pax_global_header00006660000000000000000000000064136253150710014515gustar00rootroot0000000000000052 comment=495dec44f0f512478ac942091ca2a29c60ad4911 pgbackrest-release-2.24/000077500000000000000000000000001362531507100152075ustar00rootroot00000000000000pgbackrest-release-2.24/.github/000077500000000000000000000000001362531507100165475ustar00rootroot00000000000000pgbackrest-release-2.24/.github/ISSUE_TEMPLATE.md000066400000000000000000000015301362531507100212530ustar00rootroot00000000000000Please provide the following information when submitting an issue (feature requests or general comments can skip this): 1. pgBackRest version: 2. PostgreSQL version: 3. Operating system/version - if you have more than one server (for example, a database server, a repository host server, one or more standbys), please specify each: 4. Did you install pgBackRest from source or from a package? 5. Please attach the following as applicable: - `pgbackrest.conf` file(s) - `postgresql.conf` settings applicable to pgBackRest (`archive_command`, `archive_mode`, `listen_addresses`, `max_wal_senders`, `wal_level`, `port`) - errors in the postgresql log file before or during the time you experienced the issue - log file in `/var/log/pgbackrest` for the commands run (e.g. `/var/log/pgbackrest/mystanza_backup.log`) 7. Describe the issue: pgbackrest-release-2.24/.github/lock.yml000066400000000000000000000017471362531507100202330ustar00rootroot00000000000000# Configuration for Lock Threads - https://github.com/dessant/lock-threads # Number of days of inactivity before a closed issue or pull request is locked daysUntilLock: 90 # Skip issues and pull requests created before a given timestamp. Timestamp must # follow ISO 8601 (`YYYY-MM-DD`). Set to `false` to disable skipCreatedBefore: false # Issues and pull requests with these labels will be ignored. Set to `[]` to disable exemptLabels: [] # Label to add before locking, such as `outdated`. Set to `false` to disable lockLabel: false # Comment to post before locking. Set to `false` to disable lockComment: false # Assign `resolved` as the reason for locking. Set to `false` to disable setLockReason: false # Limit to only `issues` or `pulls` # only: issues # Optionally, specify configuration settings just for `issues` or `pulls` # issues: # exemptLabels: # - help-wanted # lockLabel: outdated # pulls: # daysUntilLock: 30 # Repository to extend settings from # _extends: repo pgbackrest-release-2.24/.gitignore000066400000000000000000000000311362531507100171710ustar00rootroot00000000000000**/*~ *~ *.swp .DS_Store pgbackrest-release-2.24/.travis.yml000066400000000000000000000014421362531507100173210ustar00rootroot00000000000000branches: only: - integration - /-ci$/ dist: trusty sudo: required language: c services: - docker matrix: include: - env: PGB_CI="test --vm=u12" - env: PGB_CI="test --vm=f30 --param=no-package --param=c-only" - env: PGB_CI="test --vm=co6 --param=module=mock --param=module=real" - env: PGB_CI="test --vm=u18 --param=container-only" - env: PGB_CI=" doc --vm=u18" - env: PGB_CI="test --vm=co7 --param=module=mock --param=module=real" - dist: bionic env: - PGB_CI="test --vm=none --param=tz=America/New_York" services: - env: PGB_CI=" doc --vm=co6" - env: PGB_CI=" doc --vm=co7" install: - umask 0022 && cd ~ && pwd && whoami && umask && groups - df -Th && top -bn1 script: - ${TRAVIS_BUILD_DIR?}/test/travis.pl ${PGB_CI?} pgbackrest-release-2.24/CODING.md000066400000000000000000000204731362531507100165020ustar00rootroot00000000000000# pgBackRest
Coding Standards ## Standards ### Indentation Indentation is four spaces -- no tabs. Only file types that absolutely require tabs (e.g. `Makefile`) may use them. ### Line Length With the exception of documentation code, no line of any code or test file shall exceed 132 characters. If a line break is required, then it shall be after the first function parenthesis: ``` // CORRECT - location of line break after first function parenthesis if line length is greater than 132 StringList *removeList = infoBackupDataLabelList( infoBackup, strNewFmt("^%s.*", strPtr(strLstGet(currentBackupList, fullIdx)))); // INCORRECT StringList *removeList = infoBackupDataLabelList(infoBackup, strNewFmt("^%s.*", strPtr(strLstGet(currentBackupList, fullIdx)))); ``` If a conditional, then after a completed conditional, for example: ``` // CORRECT - location of line break after a completed conditional if line length is greater than 132 if (archiveInfoPgHistory.id != backupInfoPgHistory.id || archiveInfoPgHistory.systemId != backupInfoPgHistory.systemId || archiveInfoPgHistory.version != backupInfoPgHistory.version) // INCORRECT if (archiveInfoPgHistory.id != backupInfoPgHistory.id || archiveInfoPgHistory.systemId != backupInfoPgHistory.systemId || archiveInfoPgHistory.version != backupInfoPgHistory.version) ``` ### Inline Comment Inline comments shall start at character 69 and must not exceed the line length of 132. For example: ``` typedef struct InlineCommentExample { const String *comment; // Inline comment example const String *longComment; // Inline comment example that exceeds 132 characters should // then go to next line but this should be avoided } InlineCommentExample; ``` ### Naming #### Variables Variable names use camel case with the first letter lower-case. - `stanzaName` - the name of the stanza - `nameIdx` - loop variable for iterating through a list of names Variable names should be descriptive. Avoid `i`, `j`, etc. #### Types Type names use camel case with the first letter upper case: `typedef struct MemContext <...>` `typedef enum {<...>} ErrorState;` #### Constants **#define Constants** `#define` constants should be all caps with `_` separators. ```c #define MY_CONSTANT "STRING" ``` The value should be aligned at column 69 whenever possible. This type of constant should mostly be used for strings. Use enums whenever possible for integer constants. **String Constants** String constants can be declared using the `STRING_STATIC()` macro for local strings and `STRING_EXTERN()` for strings that will be extern'd for use in other modules. Extern'd strings should be declared in the header file as: ```c #define SAMPLE_VALUE "STRING" STRING_DECLARE(SAMPLE_VALUE_STR); ``` And in the C file as: ```c STRING_EXTERN(SAMPLE_VALUE_STR, SAMPLE_VALUE); ``` Static strings declared in the C file are not required to have a `#define` if the `#define` version is not used. Extern'd strings must always have the `#define` in the header file. **Enum Constants** Enum elements follow the same case rules as variables. They are strongly typed so this shouldn't present any confusion. ```c typedef enum { cipherModeEncrypt, cipherModeDecrypt, } CipherMode; ``` Note the comma after the last element. This reduces diff churn when new elements are added. #### Macros Macro names should be upper-case with underscores between words. Macros (except simple constants) should be avoided whenever possible as they make code less clear and test coverage harder to measure. Macros should follow the format: ```c #define MACRO(paramName1, paramName2) \ ``` If the macro defines a block it should look like: ```c #define MACRO_2(paramName1, paramName2) \ { \ \ } ``` Continuation characters should be aligned at column 132 (unlike the examples above that have been shortened for display purposes). To avoid conflicts, variables in a macro will be named `[macro name]_[var name]`, e.g. `TEST_RESULT_resultExpected`. Variables that need to be accessed in wrapped code should be provided accessor macros. [Variadic functions](#variadic-functions) are an exception to the capitalization rule. #### Begin / End Use `Begin` / `End` for names rather than `Start` / `Finish`, etc. #### New / Free Use `New` / `Free` for constructors and destructors rather than `Create` / `Destroy`, etc. ### Formatting #### Braces C allows braces to be excluded for a single statement. However, braces should be used when the control statement (if, while, etc.) spans more than one line or the statement to be executed spans more than one line. No braces needed: ```c if (condition) return value; ``` Braces needed: ```c if (conditionThatUsesEntireLine1 && conditionThatUsesEntireLine2) { return value; } ``` ```c if (condition) { return valueThatUsesEntireLine1 && valueThatUsesEntireLine2; } ``` #### Hints, Warnings, and Errors Hints are to be formatted with capitalized `HINT:` followed by a space and a sentence. The sentence shall only begin with a capital letter if the first word is an acronym (e.g. TLS) or a proper name (e.g. PostgreSQL). The sentence must end with a period, question mark or exclamation point as appropriate. Warning and errors shall be lowercase with the exceptions for proper names and acronyms and end without punctuation. ## Language Elements ### Data Types Don't get exotic - use the simplest type that will work. Use `int` or `unsigned int` for general cases. `int` will be at least 32 bits. When not using `int` use one of the types defined in `common/type.h`. ### Macros Don't use a macro when a function could be used instead. Macros make it hard to measure code coverage. ### Objects Object-oriented programming is used extensively. The object pointer is always referred to as `this`. ### Variadic Functions Variadic functions can take a variable number of parameters. While the `printf()` pattern is variadic, it is not very flexible in terms of optional parameters given in any order. This project implements variadic functions using macros (which are exempt from the normal macro rule of being all caps). A typical variadic function definition: ```c typedef struct StoragePathCreateParam { bool errorOnExists; bool noParentCreate; mode_t mode; } StoragePathCreateParam; #define storagePathCreateP(this, pathExp, ...) \ storagePathCreate(this, pathExp, (StoragePathCreateParam){__VA_ARGS__}) #define storagePathCreateP(this, pathExp) \ storagePathCreate(this, pathExp, (StoragePathCreateParam){0}) void storagePathCreate(const Storage *this, const String *pathExp, StoragePathCreateParam param); ``` Continuation characters should be aligned at column 132 (unlike the example above that has been shortened for display purposes). This function can be called without variable parameters: ```c storagePathCreateP(storageLocal(), "/tmp/pgbackrest"); ``` Or with variable parameters: ```c storagePathCreateP(storageLocal(), "/tmp/pgbackrest", .errorOnExists = true, .mode = 0777); ``` If the majority of functions in a module or object are variadic it is best to provide macros for all functions even if they do not have variable parameters. Do not use the base function when variadic macros exist. ## Testing ### Uncoverable/Uncovered Code #### Uncoverable Code The `uncoverable` keyword marks code that can never be covered. For instance, a function that never returns because it always throws an error. Uncoverable code should be rare to non-existent outside the common libraries and test code. ```c } // {uncoverable - function throws error so never returns} ``` Subsequent code that is uncoverable for the same reason is marked with `// {+uncoverable}`. #### Uncovered Code Marks code that is not tested for one reason or another. This should be kept to a minimum and an excuse given for each instance. ```c exit(EXIT_FAILURE); // {uncovered - test harness does not support non-zero exit} ``` Subsequent code that is uncovered for the same reason is marked with `// {+uncovered}`. pgbackrest-release-2.24/CONTRIBUTING.md000066400000000000000000000473471362531507100174570ustar00rootroot00000000000000# pgBackRest
Contributing to pgBackRest ## Introduction This documentation is intended to assist contributors to pgBackRest by outlining some basic steps and guidelines for contributing to the project. Coding standards to follow are defined in [CODING.md](https://github.com/pgbackrest/pgbackrest/blob/master/CODING.md). At a minimum, unit tests must be written and run and the documentation generated before submitting a Pull Request; see the [Testing](#testing) section below for details. ## Building a Development Environment This example is based on Ubuntu 19.04, but it should work on many versions of Debian and Ubuntu. pgbackrest-dev => Install development tools ``` sudo apt-get install rsync git devscripts build-essential valgrind autoconf \ libssl-dev zlib1g-dev libxml2-dev libpq-dev libxml-checker-perl \ libyaml-libyaml-perl libdbd-pg-perl ``` Coverage testing is an important component of pgBackRest testing and is integrated directly into the test harness. Unfortunately, the default version of lcov is often not compatible with gcc. lcov 1.14 works up to gcc 8. pgbackrest-dev => Build lcov 2.14 ``` curl -fsSL \ https://github.com/linux-test-project/lcov/releases/download/v1.14/lcov-1.14.tar.gz | \ tar zx sudo make -C lcov-1.14 install ``` Some unit tests and all the integration test require Docker. Running in containers allows us to simulate multiple hosts, test on different distributions and versions of PostgreSQL, and use sudo without affecting the host system. pgbackrest-dev => Install Docker ``` curl -fsSL https://get.docker.com | sudo sh sudo usermod -aG docker `whoami` ``` This clone of the pgBackRest repository is sufficient for experimentation. For development, create a fork and clone that instead. pgbackrest-dev => Clone pgBackRest repository ``` git clone https://github.com/pgbackrest/pgbackrest.git ``` ## Running Tests ### Without Docker If Docker is not installed, then the available tests can be listed using `--vm-none`. pgbackrest-dev => List tests that don't require a container ``` pgbackrest/test/test.pl --vm=none --dry-run --- output --- [filtered 2 lines of output] 2019-10-30 10:16:44.828 P00 INFO: check version info 2019-10-30 10:16:45.318 P00 INFO: builds required: bin --> 2019-10-30 10:16:45.319 P00 INFO: 64 tests selected 2019-10-30 10:16:45.319 P00 INFO: P1-T01/64 - vm=none, module=common, test=error [filtered 61 lines of output] 2019-10-30 10:16:45.334 P00 INFO: P1-T63/64 - vm=none, module=command, test=storage 2019-10-30 10:16:45.334 P00 INFO: P1-T64/64 - vm=none, module=performance, test=type --> 2019-10-30 10:16:45.389 P00 INFO: DRY RUN COMPLETED SUCCESSFULLY (1s) ``` Once a test has been selected it can be run by specifying the module and test. The `--dev` option sets several flags that are appropriate for development rather than test. Most importantly, it reuses object files from the previous test run to speed testing. The `--vm-out` option displays the test output. pgbackrest-dev => Run a test ``` pgbackrest/test/test.pl --vm=none --dev --vm-out --module=common --test=wait --- output --- 2019-10-30 10:16:46.166 P00 INFO: test begin - log level info 2019-10-30 10:16:46.743 P00 INFO: check code autogenerate 2019-10-30 10:16:46.743 P00 INFO: cleanup old data 2019-10-30 10:16:47.278 P00 INFO: builds required: none 2019-10-30 10:16:47.282 P00 INFO: 1 test selected 2019-10-30 10:16:47.283 P00 INFO: P1-T1/1 - vm=none, module=common, test=wait run 001 - waitNew(), waitMore, and waitFree() 000.004s l0018 - expect AssertError: assertion 'waitTime >= 100 && waitTime <= 999999000' failed 000.020s l0019 - expect AssertError: assertion 'waitTime >= 100 && waitTime <= 999999000' failed 000.024s l0024 - new wait = 0.2 sec 000.032s l0025 - check wait time 000.046s l0026 - check sleep time 000.049s l0027 - check sleep prev time 000.053s l0028 - check begin time 000.259s l0034 - lower range check 000.262s l0035 - upper range check 000.265s l0037 - free wait 000.270s l0042 - new wait = 1.1 sec 000.273s l0043 - check wait time 000.276s l0044 - check sleep time 000.279s l0045 - check sleep prev time 000.282s l0046 - check begin time 001.375s l0052 - lower range check 001.379s l0053 - upper range check 001.382s l0055 - free wait TESTS COMPLETED SUCCESSFULLY 2019-10-30 10:16:51.145 P00 INFO: P1-T1/1 - vm=none, module=common, test=wait (3.87s) 2019-10-30 10:16:51.209 P00 INFO: writing C coverage report 2019-10-30 10:16:51.674 P00 INFO: TESTS COMPLETED SUCCESSFULLY (5s) ``` An entire module can be run by using only the `--module` option. pgbackrest-dev => Run a module ``` pgbackrest/test/test.pl --vm=none --dev --module=postgres --- output --- 2019-10-30 10:16:52.449 P00 INFO: test begin - log level info 2019-10-30 10:16:52.979 P00 INFO: check code autogenerate 2019-10-30 10:16:52.979 P00 INFO: cleanup old data 2019-10-30 10:16:53.513 P00 INFO: builds required: none 2019-10-30 10:16:53.517 P00 INFO: 3 tests selected 2019-10-30 10:16:57.501 P00 INFO: P1-T1/3 - vm=none, module=postgres, test=client (3.99s) 2019-10-30 10:17:00.957 P00 INFO: P1-T2/3 - vm=none, module=postgres, test=interface (3.46s) 2019-10-30 10:17:03.325 P00 INFO: P1-T3/3 - vm=none, module=postgres, test=page-checksum (2.37s) 2019-10-30 10:17:03.382 P00 INFO: writing C coverage report 2019-10-30 10:17:03.944 P00 INFO: TESTS COMPLETED SUCCESSFULLY (11s) ``` ### With Docker Build a container to run tests. The vm must be pre-configured but a variety are available. The vm names are all three character abbreviations, e.g. `u19` for Ubuntu 19.04. pgbackrest-dev => Build a VM ``` pgbackrest/test/test.pl --vm-build --vm=u19 --- output --- 2019-10-30 10:17:04.779 P00 INFO: test begin - log level info 2019-10-30 10:17:04.812 P00 INFO: Using cached pgbackrest/test:u19-base-20191012A image (32d78710c7f60872ee4a8b2374d0110e015e2c24) ... 2019-10-30 10:17:05.225 P00 INFO: Building pgbackrest/test:u19-build image ... 2019-10-30 10:17:05.641 P00 INFO: Building pgbackrest/test:u19-test image ... 2019-10-30 10:17:06.013 P00 INFO: Build Complete ``` pgbackrest-dev => Run a Test ``` pgbackrest/test/test.pl --vm=u19 --dev --module=mock --test=archive --run=2 --- output --- 2019-10-30 10:17:06.768 P00 INFO: test begin - log level info 2019-10-30 10:17:07.346 P00 INFO: check code autogenerate 2019-10-30 10:17:07.346 P00 INFO: cleanup old data and containers 2019-10-30 10:17:08.403 P00 INFO: builds required: bin, libc host 2019-10-30 10:17:08.615 P00 INFO: 1 test selected 2019-10-30 10:17:41.992 P00 INFO: P1-T1/1 - vm=u19, module=mock, test=archive, run=2 (33.38s) 2019-10-30 10:17:42.163 P00 INFO: no code modules had all tests run required for coverage 2019-10-30 10:17:42.163 P00 INFO: writing C coverage report 2019-10-30 10:17:42.224 P00 INFO: TESTS COMPLETED SUCCESSFULLY (36s) ``` ## Adding an Option Options can be added to a command or multiple commands. Options can be configuration file only, command-line only or valid for both. Once an option is added, `config.auto.*`, `define.auto.*` and `parse.auto.*` files will automatically be generated by the build system. To add an option, two files need be to be modified: - `build/lib/pgBackRestBuild/Config/Data.pm` - `doc/xml/reference.xml` These files are discussed in the following sections. ### Data.pm There is a detailed comment at the top of this file on the configuration definitions which one can refer to in determining how to define the rules for the option. #### Command Line Only Options Command-line only options are options where `CFGDEF_SECTION` rule is not defined. There are two sections to be updated when adding a command-line only option, each of which is marked by the comment `Command-line only options`. - **Section 1:** Find the first section with the `Command-line only options` comment. This section defines and exports the constant for the actual option. - **Section 2:** Find the second section with the `Command-line only options` comment. This is where the rules for the option are defined. The steps for how to update these sections are detailed below. **Section 1** Copy the two lines ("use constant"/"push") of an existing option and paste them where the option would be in alphabetical order and rename it to the same name as the new option name. For example CFGOPT_DRY_RUN, defined as "dry-run". **Section 2** To better explain this section, `CFGOPT_ONLINE` will be used as an example: ``` &CFGOPT_ONLINE => { &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_NEGATE => true, &CFGDEF_DEFAULT => true, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_UPGRADE => {}, } }, ``` Note that `CFGDEF_SECTION` is not present thereby making this a command-line only option. Each line is explained below: - `CFGOPT_ONLINE` - the name of the option as defined in **Section 1** - `CFGDEF_TYPE` - the type of the option. Valid types are: `CFGDEF_TYPE_BOOLEAN`, `CFGDEF_TYPE_FLOAT`, `CFGDEF_TYPE_HASH`, `CFGDEF_TYPE_INTEGER`, `CFGDEF_TYPE_LIST`, `CFGDEF_TYPE_PATH`, `CFGDEF_TYPE_SIZE`, and `CFGDEF_TYPE_STRING` - `CFGDEF_NEGATE` - being a command-line only boolean option, this rule would automatically default to false so it must be defined if the option is negatable. Ask yourself if negation makes sense, for example, would a --dry-run option make sense as --no-dry-run? If the answer is no, then this rule can be omitted as it would automatically default to false. Any boolean option that cannot be negatable, must be a command-line only and not a configuration file option as all configuration boolean options must be negatable. - `CFGDEF_DEFAULT` - sets a default for the option if the option is not provided when the command is run. The default can be global or it can be specified for a specific command in the `CFGDEF_COMMAND` section. For example, if it was desirable for the default to be false for the `CFGCMD_STANZA_CREATE` then CFGDEF_NEGATE => would be set to `true` in each command listed except for `CFGCMD_STANZA_CREATE` where it would be `false` and it would not be specified (as it is here) in the global section (meaning global for all commands listed). - `CFGDEF_COMMAND` - list each command for which the option is valid. If a command is not listed, then the option is not valid for the command and an error will be thrown if it attempted to be used for that command. ### reference.xml All options must be documented or the system will error during the build. To add an option, find the command section identified by `command id="COMMAND"` section where `COMMAND` is the name of the command (e.g. `expire`) or, if the option is used by more than one command and the definition for the option is the same for all of the commands, the `operation-general title="General Options"` section. To add an option, add the following to the `` section; if it does not exist, then wrap the following in `` ``. This example uses the boolean option `force` of the `restore` command. Simply replace that with your new option and the appropriate `summary`, `text` and `example`. ``` ``` > **IMPORTANT:** currently a period (.) is required to end the `summary` section. ## Testing For testing, it is recommended that Vagrant and Docker be used; instructions are provided in the `README.md` file of the pgBackRest [test](https://github.com/pgbackrest/pgbackrest/blob/master/test) directory. A list of all possible test combinations can be viewed by running: ``` /backrest/test/test.pl --dry-run ``` > **WARNING:** currently the `BACKREST_USER` in `ContainerTest.pm` must exist, or the test suite will fail with a string concatenation error. If using a RHEL system, the CPAN XML parser is required for running `test.pl` and `doc.pl`. Instructions for installing Docker and the XML parse can be found in the `README.md` file of the pgBackRest [doc](https://github.com/pgbackrest/pgbackrest/blob/master/doc) directory in the section "The following is a sample CentOS/RHEL 7 configuration that can be used for building the documentation". NOTE that the `Install latex (for building PDF)` is not required since testing of the docs need only be run for HTML output. While some files are automatically generated during `make`, others are generated by running the test harness as follows: ``` /backrest/test/test.pl --gen-only ``` Prior to any submission, the html version of the documentation should also be run. ``` /backrest/doc/doc.pl --out=html ``` > **NOTE:** `ERROR: [028]` regarding cache is invalid is OK; it just means there have been changes and the documentation will be built from scratch. In this case, be patient as the build could take 20 minutes or more depending on your system. ### Writing a Unit Test The goal of unit testing is to have 100 percent coverage. Two files will usually be involved in this process: - **define.yaml** - defines the number of tests to be run for each module and test file. There is a comment at the top of the file that provides more information about this file. - **src/module/somefileTest.c** - where "somefile" is the path and name of the test file where the unit tests are located for the code being updated (e.g. `src/module/command/expireTest.c`). #### define.yaml Each module is separated by a line of asterisks (*) and each test within is separated by a line of dashes (-). In the example below, the module is `command` and the unit test is `check`. The number of calls to `testBegin()` in a unit test file will dictate the number following `total:`, in this case 2. Under `coverage:`, the list of files that will be tested must be listed followed by the coverage level, which should always be `full`. ``` # ******************************************************************************************************************************** - name: command test: # ---------------------------------------------------------------------------------------------------------------------------- - name: check total: 2 coverage: command/check/common: full command/check/check: full ``` #### somefileTest.c Assuming that a test file already exists, new unit tests will either go in a new `testBegin()` section or be added to an existing section. Unit test files are organized in the test/src/module directory with the same directory structure as the source code being tested. For example, if new code is added to src/**command/expire**.c then test/src/module/**command/expire**Test.c will need to be updated. ``` // ***************************************************************************************************************************** if (testBegin("expireBackup()")) ``` **Setting up the command to be run** If configuration options are required then a string list with the command and options must be defined and passed to the function `harnessCfgLoad()`. For example, the following will set up a test to run `pgbackrest --repo-path=test/test-0/repo info` command: ``` String *repoPath = strNewFmt("%s/repo", testPath()); // create a string defining the repo path on the test system StringList *argList = strLstNew(); // create an empty string list strLstAdd(argList, strNewFmt("--repo-path=%s/", strPtr(repoPath))); // add the --repo-path option as a formatted string strLstAddZ(argList, "info"); // add the command harnessCfgLoad(cfgCmdExpire, argList); // load the command and option list into the test harness TEST_RESULT_STR_Z(infoRender(), "No stanzas exist in the repository.\n", "text - no stanzas"); // run the test ``` Tests are run via macros. All test macros expect the first parameter to be the function to call that is being tested. With the exception of TEST_RESULT_VOID, the second parameter is the expected result, and with the exception of TEST_ERROR, the third parameter is a short description of the test. The most common macros are: - `TEST_RESULT_STR` - Test the actual value of the string returned by the function. - `TEST_RESULT_UINT` / `TEST_RESULT_INT` - Test for an unsigned integer / integer. - `TEST_RESULT_BOOL` - Test a boolean return value. - `TEST_RESULT_PTR` / `TEST_RESULT_PTR_NE` - Test a pointer: useful for testing if the pointer is `NULL` or not equal (`NE`) to `NULL`. - `TEST_RESULT_VOID` - The function being tested returns a `void`. This is then usually followed by tests that ensure other actions occurred (e.g. a file was written to disk). - `TEST_ERROR` / `TEST_ERROR_FMT` - Test for that a specific error code was raised with specific wording. **Storing a file** Sometimes it is necessary to store a file to the test directory. The following demonstrates that. It is not necessary to wrap the storagePutNP in TEST_RESULT_VOID, but doing so allows a short description to be displayed when running the tests (in this case "store a corrupt backup.info file"). ``` String *content = strNew("bad content"); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageTest, strNewFmt("%s/backup/demo/backup.info", strPtr(repoPath))), harnessInfoChecksum(content)), "store a corrupt backup.info file"); ``` **Testing a log message** If a function being tested logs something with `LOG_WARN`, `LOG_INFO` or other `LOG_` macro, then the logged message must be cleared before the end of the test by using the `harnessLogResult()` function. ``` harnessLogResult( "P00 WARN: WAL segment '000000010000000100000001' was not pushed due to error [25] and was manually skipped: error"); ``` ### Running a Unit Test Unit tests are run, and coverage of the code being tested is provided, by running the following. This example would run the test set from the **define.yaml** section detailed above. ``` /backrest/test/test.pl --vm-out --dev --module=command --test=check --coverage-only ``` > **NOTE:** If you have changed branches, it is recommended the above be run with `--dev-test` instead of `--dev` to rebuild the code from scratch. Because no test run is specified and `--coverage-only` has been requested, a coverage report will be generated and written to the local file system under `backrest/test/coverage/c-coverage.html` and will highlight code that has not been tested. Sometimes it is useful to look at files that were generated during the test. The default for running any test is that, at the start/end of the test, the test harness will clean up all files and directories created. To override this behavior, a single test run must be specified and the option `--no-cleanup` provided. Again, continuing with the check command, we see in **define.yaml** above that there are two tests. Below, test one will be run and nothing will be cleaned up so that the files and directories in test/test-0 can be inspected. ``` /backrest/test/test.pl --vm-out --dev --module=command --test=check --coverage-only --run=1 --no-cleanup ``` For more details on running tests, again, please refer to the `README.md` file of the pgBackRest [test](https://github.com/pgbackrest/pgbackrest/blob/master/test) directory. pgbackrest-release-2.24/LICENSE000066400000000000000000000022201362531507100162100ustar00rootroot00000000000000The MIT License (MIT) Portions Copyright (c) 2015-2020, The PostgreSQL Global Development Group Portions Copyright (c) 2013-2020, David Steele 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. pgbackrest-release-2.24/README.md000066400000000000000000000230141362531507100164660ustar00rootroot00000000000000# pgBackRest
Reliable PostgreSQL Backup & Restore ## Introduction pgBackRest aims to be a simple, reliable backup and restore solution that can seamlessly scale up to the largest databases and workloads by utilizing algorithms that are optimized for database-specific requirements. pgBackRest [v2.24](https://github.com/pgbackrest/pgbackrest/releases/tag/release/2.24) is the current stable release. Release notes are on the [Releases](http://www.pgbackrest.org/release.html) page. Documentation for v1 can be found [here](http://www.pgbackrest.org/1). No further releases are planned for v1 because v2 is backward-compatible with v1 options and repositories. ## Features ### Parallel Backup & Restore Compression is usually the bottleneck during backup operations but, even with now ubiquitous multi-core servers, most database backup solutions are still single-process. pgBackRest solves the compression bottleneck with parallel processing. Utilizing multiple cores for compression makes it possible to achieve 1TB/hr raw throughput even on a 1Gb/s link. More cores and a larger pipe lead to even higher throughput. ### Local or Remote Operation A custom protocol allows pgBackRest to backup, restore, and archive locally or remotely via SSH with minimal configuration. An interface to query PostgreSQL is also provided via the protocol layer so that remote access to PostgreSQL is never required, which enhances security. ### Full, Incremental, & Differential Backups Full, differential, and incremental backups are supported. pgBackRest is not susceptible to the time resolution issues of rsync, making differential and incremental backups completely safe. ### Backup Rotation & Archive Expiration Retention polices can be set for full and differential backups to create coverage for any timeframe. WAL archive can be maintained for all backups or strictly for the most recent backups. In the latter case WAL required to make older backups consistent will be maintained in the archive. ### Backup Integrity Checksums are calculated for every file in the backup and rechecked during a restore. After a backup finishes copying files, it waits until every WAL segment required to make the backup consistent reaches the repository. Backups in the repository are stored in the same format as a standard PostgreSQL cluster (including tablespaces). If compression is disabled and hard links are enabled it is possible to snapshot a backup in the repository and bring up a PostgreSQL cluster directly on the snapshot. This is advantageous for terabyte-scale databases that are time consuming to restore in the traditional way. All operations utilize file and directory level fsync to ensure durability. ### Page Checksums PostgreSQL has supported page-level checksums since 9.3. If page checksums are enabled pgBackRest will validate the checksums for every file that is copied during a backup. All page checksums are validated during a full backup and checksums in files that have changed are validated during differential and incremental backups. Validation failures do not stop the backup process, but warnings with details of exactly which pages have failed validation are output to the console and file log. This feature allows page-level corruption to be detected early, before backups that contain valid copies of the data have expired. ### Backup Resume An aborted backup can be resumed from the point where it was stopped. Files that were already copied are compared with the checksums in the manifest to ensure integrity. Since this operation can take place entirely on the backup server, it reduces load on the database server and saves time since checksum calculation is faster than compressing and retransmitting data. ### Streaming Compression & Checksums Compression and checksum calculations are performed in stream while files are being copied to the repository, whether the repository is located locally or remotely. If the repository is on a backup server, compression is performed on the database server and files are transmitted in a compressed format and simply stored on the backup server. When compression is disabled a lower level of compression is utilized to make efficient use of available bandwidth while keeping CPU cost to a minimum. ### Delta Restore The manifest contains checksums for every file in the backup so that during a restore it is possible to use these checksums to speed processing enormously. On a delta restore any files not present in the backup are first removed and then checksums are taken for the remaining files. Files that match the backup are left in place and the rest of the files are restored as usual. Parallel processing can lead to a dramatic reduction in restore times. ### Parallel, Asynchronous WAL Push & Get Dedicated commands are included for pushing WAL to the archive and getting WAL from the archive. Both commands support parallelism to accelerate processing and run asynchronously to provide the fastest possible response time to PostgreSQL. WAL push automatically detects WAL segments that are pushed multiple times and de-duplicates when the segment is identical, otherwise an error is raised. Asynchronous WAL push allows transfer to be offloaded to another process which compresses WAL segments in parallel for maximum throughput. This can be a critical feature for databases with extremely high write volume. Asynchronous WAL get maintains a local queue of WAL segments that are decompressed and ready for replay. This reduces the time needed to provide WAL to PostgreSQL which maximizes replay speed. Higher-latency connections and storage (such as S3) benefit the most. The push and get commands both ensure that the database and repository match by comparing PostgreSQL versions and system identifiers. This virtually eliminates the possibility of misconfiguring the WAL archive location. ### Tablespace & Link Support Tablespaces are fully supported and on restore tablespaces can be remapped to any location. It is also possible to remap all tablespaces to one location with a single command which is useful for development restores. File and directory links are supported for any file or directory in the PostgreSQL cluster. When restoring it is possible to restore all links to their original locations, remap some or all links, or restore some or all links as normal files or directories within the cluster directory. ### S3-Compatible Object Store Support pgBackRest repositories can be located in S3-compatible object stores to allow for virtually unlimited capacity and retention. ### Encryption pgBackRest can encrypt the repository to secure backups wherever they are stored. ### Compatibility with PostgreSQL >= 8.3 pgBackRest includes support for versions down to 8.3, since older versions of PostgreSQL are still regularly utilized. ## Getting Started pgBackRest strives to be easy to configure and operate: - [User guides](http://www.pgbackrest.org/user-guide-index.html) for various operating systems and PostgreSQL versions. - [Command reference](http://www.pgbackrest.org/command.html) for command-line operations. - [Configuration reference](http://www.pgbackrest.org/configuration.html) for creating pgBackRest configurations. ## Contributions Contributions to pgBackRest are always welcome! Code fixes or new features can be submitted via pull requests. Ideas for new features and improvements to existing functionality or documentation can be [submitted as issues](https://github.com/pgbackrest/pgbackrest/issues). You may want to check the [Feature Backlog](https://github.com/pgbackrest/pgbackrest/wiki#backlog) to see if your suggestion has already been submitted. Bug reports should be [submitted as issues](https://github.com/pgbackrest/pgbackrest/issues). Please provide as much information as possible to aid in determining the cause of the problem. You will always receive credit in the [release notes](http://www.pgbackrest.org/release.html) for your contributions. ## Support pgBackRest is completely free and open source under the [MIT](https://github.com/pgbackrest/pgbackrest/blob/master/LICENSE) license. You may use it for personal or commercial purposes without any restrictions whatsoever. Bug reports are taken very seriously and will be addressed as quickly as possible. Creating a robust disaster recovery policy with proper replication and backup strategies can be a very complex and daunting task. You may find that you need help during the architecture phase and ongoing support to ensure that your enterprise continues running smoothly. [Crunchy Data](http://www.crunchydata.com) provides packaged versions of pgBackRest for major operating systems and expert full life-cycle commercial support for pgBackRest and all things PostgreSQL. [Crunchy Data](http://www.crunchydata.com) is committed to providing open source solutions with no vendor lock-in, ensuring that cross-compatibility with the community version of pgBackRest is always strictly maintained. Please visit [Crunchy Data](http://www.crunchydata.com) for more information. ## Recognition Primary recognition goes to Stephen Frost for all his valuable advice and criticism during the development of pgBackRest. [Crunchy Data](http://www.crunchydata.com) has contributed significant time and resources to pgBackRest and continues to actively support development. [Resonate](http://www.resonate.com) also contributed to the development of pgBackRest and allowed early (but well tested) versions to be installed as their primary PostgreSQL backup solution. [Armchair](https://thenounproject.com/search/?q=lounge+chair&i=129971) graphic by [Sandor Szabo](https://thenounproject.com/sandorsz). pgbackrest-release-2.24/build/000077500000000000000000000000001362531507100163065ustar00rootroot00000000000000pgbackrest-release-2.24/build/error.yaml000066400000000000000000000046601362531507100203310ustar00rootroot00000000000000# Error Definitions # # Master file for all errors in the C and Perl code. For C, errors are written to src/common/error.auto.c/h. For Perl, errors are # written to lib/pgBackRest/Common/ExceptionAuto.pm. # Errors in the code that it should not be possible for the user to encounter -- i.e., a likely bug assert: 25 checksum: 26 config: 27 file-invalid: 28 format: 29 command-required: 30 option-invalid: 31 option-invalid-value: 32 option-invalid-range: 33 option-invalid-pair: 34 option-duplicate-key: 35 option-negate: 36 option-required: 37 postmaster-running: 38 protocol: 39 path-not-empty: 40 file-open: 41 file-read: 42 param-required: 43 archive-mismatch: 44 archive-duplicate: 45 version-not-supported: 46 path-create: 47 command-invalid: 48 host-connect: 49 lock-acquire: 50 backup-mismatch: 51 file-sync: 52 path-open: 53 path-sync: 54 file-missing: 55 db-connect: 56 db-query: 57 db-mismatch: 58 db-timeout: 59 file-remove: 60 path-remove: 61 stop: 62 term: 63 file-write: 64 protocol-timeout: 66 feature-not-supported: 67 archive-command-invalid: 68 link-expected: 69 link-destination: 70 host-invalid: 72 path-missing: 73 file-move: 74 backup-set-invalid: 75 tablespace-map: 76 path-type: 77 link-map: 78 file-close: 79 db-missing: 80 db-invalid: 81 archive-timeout: 82 file-mode: 83 option-multiple-value: 84 protocol-output-required: 85 link-open: 86 archive-disabled: 87 file-owner: 88 user-missing: 89 option-command: 90 group-missing: 91 path-exists: 92 file-exists: 93 # Memory allocation failed memory: 94 crypto: 95 param-invalid: 96 # Unable to close a path path-close: 97 # Unable to get info for a file file-info: 98 # Invalid JSON format. Eventually this should be a child of format error and share the same code json-format: 99 # An error from the kernel that there's nothing we can do about. It should always be fatal. kernel: 100 # An error from a service that is not our fault, e.g. 5xx errors from an http server. These may be retried. service: 101 # An error while attempting to execute a binary execute: 102 # This error should not be thrown directly -- it serves as a parent for the C errors runtime: 122 # Error used when an invalid error code is passed to the Perl Exception object -- this should not happen invalid: 123 # Used when a native Perl error is not caught before exitSafe() -- this should not happen unhandled: 124 # Used when a specific error is not provided in the Perl code. This should be rare. unknown: 125 pgbackrest-release-2.24/build/lib/000077500000000000000000000000001362531507100170545ustar00rootroot00000000000000pgbackrest-release-2.24/build/lib/pgBackRestBuild/000077500000000000000000000000001362531507100220615ustar00rootroot00000000000000pgbackrest-release-2.24/build/lib/pgBackRestBuild/Build.pm000066400000000000000000000171051362531507100234620ustar00rootroot00000000000000#################################################################################################################################### # Auto-Generate C Files Required for Build #################################################################################################################################### package pgBackRestBuild::Build; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(basename); use Storable qw(dclone); use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRestBuild::Build::Common; use pgBackRestTest::Common::Storage; use pgBackRestTest::Common::StoragePosix; #################################################################################################################################### # Define generator used for auto generated warning messages #################################################################################################################################### use constant GENERATOR => 'Build.pm'; #################################################################################################################################### # buildAll - execute all build functions and generate C source code #################################################################################################################################### sub buildAll { my $strBuildPath = shift; my $rhBuild = shift; my $strFileExt = shift; # Storage object my $oStorage = new pgBackRestTest::Common::Storage( $strBuildPath, new pgBackRestTest::Common::StoragePosix({bFileSync => false, bPathSync => false})); # List of files actually built my @stryBuilt; # Build and output source code #------------------------------------------------------------------------------------------------------------------------------- foreach my $strBuild (sort(keys(%{$rhBuild}))) { my $strPath = $rhBuild->{$strBuild}{&BLD_PATH}; foreach my $strFile (sort(keys(%{$rhBuild->{$strBuild}{&BLD_DATA}{&BLD_FILE}}))) { my $rhFile = $rhBuild->{$strBuild}{&BLD_DATA}{&BLD_FILE}{$strFile}; my $rhFileConstant = $rhFile->{&BLD_CONSTANT_GROUP}; my $rhFileEnum = $rhFile->{&BLD_ENUM}; my $rhFileDeclare = $rhFile->{&BLD_DECLARE}; my $rhFileData = $rhFile->{&BLD_DATA}; my $rhSource; # Build general banner #------------------------------------------------------------------------------------------------------------------------------- my $strBanner = bldBanner($rhFile->{&BLD_SUMMARY}, GENERATOR); # Build header file #------------------------------------------------------------------------------------------------------------------------------- if (defined($rhFileEnum) || defined($rhFileConstant) || defined($rhFileDeclare)) { my $strHeaderDefine = uc("${strPath}/${strFile}") . '_AUTO_H'; $strHeaderDefine =~ s/\//_/g; my $strHeader = $strBanner . "#ifndef ${strHeaderDefine}\n" . "#define ${strHeaderDefine}\n"; # Iterate constant groups foreach my $strConstantGroup (sort(keys(%{$rhFileConstant}))) { my $rhConstantGroup = $rhFileConstant->{$strConstantGroup}; $strHeader .= "\n" . bldBanner($rhConstantGroup->{&BLD_SUMMARY} . ' constants'); # Iterate constants foreach my $strConstant (sort(keys(%{$rhConstantGroup->{&BLD_CONSTANT}}))) { my $rhConstant = $rhConstantGroup->{&BLD_CONSTANT}{$strConstant}; $strHeader .= "#define ${strConstant} " . (' ' x (69 - length($strConstant) - 10)) . $rhConstant->{&BLD_CONSTANT_VALUE} . "\n"; } } # Iterate enum groups foreach my $strEnum (sort(keys(%{$rhFileEnum}))) { my $rhEnum = $rhFileEnum->{$strEnum}; $strHeader .= "\n" . bldBanner($rhEnum->{&BLD_SUMMARY} . ' enum'); $strHeader .= "typedef enum\n" . "{\n"; my $iExpectedValue = 0; # Iterate enums foreach my $strEnumItem (@{$rhEnum->{&BLD_LIST}}) { $strHeader .= " ${strEnumItem}"; if (defined($rhEnum->{&BLD_VALUE}{$strEnumItem}) && $rhEnum->{&BLD_VALUE}{$strEnumItem} != $iExpectedValue) { $strHeader .= ' = ' . (' ' x (61 - length($strEnumItem))) . $rhEnum->{&BLD_VALUE}{$strEnumItem}; $iExpectedValue = $rhEnum->{&BLD_VALUE}{$strEnumItem}; } $strHeader .= ",\n"; $iExpectedValue++; } $strHeader .= "} " . $rhEnum->{&BLD_NAME} . ";\n"; } foreach my $strDeclare (sort(keys(%{$rhFileDeclare}))) { my $rhDeclare = $rhFileDeclare->{$strDeclare}; $strHeader .= "\n" . bldBanner($rhDeclare->{&BLD_SUMMARY}); $strHeader .= $rhDeclare->{&BLD_SOURCE}; } $strHeader .= "\n#endif"; $rhSource->{&BLD_HEADER} = $strHeader; } # Build C file #----------------------------------------------------------------------------------------------------------------------- if (defined($rhFileData)) { my $strCode; foreach my $strData (sort(keys(%{$rhFileData}))) { my $rhData = $rhFileData->{$strData}; $strCode .= "\n" . bldBanner($rhData->{&BLD_SUMMARY}); $strCode .= $rhData->{&BLD_SOURCE}; } $rhSource->{&BLD_C} = "${strBanner}${strCode}"; } # Output files #----------------------------------------------------------------------------------------------------------------------- foreach my $strFileType (sort(keys(%{$rhSource}))) { my $strExt = $strFileType; if (defined($strFileExt)) { $strExt = $strFileType eq BLD_C ? $strFileExt : "${strFileExt}h"; } # Save the file if it has not changed my $strBuilt = "${strPath}/${strFile}.auto.${strExt}"; my $bSave = true; my $oFile = $oStorage->openRead($strBuilt, {bIgnoreMissing => true}); if (defined($oFile) && ${$oStorage->get($oFile)} eq (trim($rhSource->{$strFileType}) . "\n")) { $bSave = false; } if ($bSave) { $oStorage->put($strBuilt, trim($rhSource->{$strFileType}) . "\n"); push(@stryBuilt, basename($strBuildPath) . "/${strBuilt}"); } } } } # Return list of files built return @stryBuilt; } push @EXPORT, qw(buildAll); 1; pgbackrest-release-2.24/build/lib/pgBackRestBuild/Build/000077500000000000000000000000001362531507100231205ustar00rootroot00000000000000pgbackrest-release-2.24/build/lib/pgBackRestBuild/Build/Common.pm000066400000000000000000000124321362531507100247100ustar00rootroot00000000000000#################################################################################################################################### # Build Constants and Functions #################################################################################################################################### package pgBackRestBuild::Build::Common; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Cwd qw(abs_path); use Exporter qw(import); our @EXPORT = qw(); use Storable qw(dclone); use pgBackRest::Common::Log; use pgBackRest::Common::String; #################################################################################################################################### # Constants #################################################################################################################################### use constant BLD_PATH => 'path'; push @EXPORT, qw(BLD_PATH); use constant BLD_FILE => 'file'; push @EXPORT, qw(BLD_FILE); use constant BLD_C => 'c'; push @EXPORT, qw(BLD_C); use constant BLD_EXT => 'ext'; push @EXPORT, qw(BLD_EXT); use constant BLD_HEADER => 'h'; push @EXPORT, qw(BLD_HEADER); use constant BLD_CONSTANT => 'constant'; push @EXPORT, qw(BLD_CONSTANT); use constant BLD_CONSTANT_GROUP => 'constantGroup'; push @EXPORT, qw(BLD_CONSTANT_GROUP); use constant BLD_CONSTANT_VALUE => 'constantValue'; push @EXPORT, qw(BLD_CONSTANT_VALUE); use constant BLD_DATA => 'data'; push @EXPORT, qw(BLD_DATA); use constant BLD_DECLARE => 'declare'; push @EXPORT, qw(BLD_DECLARE); use constant BLD_ENUM => 'enum'; push @EXPORT, qw(BLD_ENUM); use constant BLD_LIST => 'list'; push @EXPORT, qw(BLD_LIST); use constant BLD_NAME => 'name'; push @EXPORT, qw(BLD_NAME); use constant BLD_PATH => 'path'; push @EXPORT, qw(BLD_PATH); use constant BLD_SOURCE => 'buildSource'; push @EXPORT, qw(BLD_SOURCE); use constant BLD_SUMMARY => 'summary'; push @EXPORT, qw(BLD_SUMMARY); use constant BLD_VALUE => 'value'; push @EXPORT, qw(BLD_VALUE); #################################################################################################################################### # bldAutoWarning - warning not to modify automatically generated files directly #################################################################################################################################### sub bldAutoWarning { my $strGenerator = shift; return "Automatically generated by ${strGenerator} -- do not modify directly."; } push @EXPORT, qw(bldAutoWarning); #################################################################################################################################### # bldBanner - build general banner #################################################################################################################################### sub bldBanner { my $strContent = shift; my $strGenerator = shift; my $strBanner = qw{/} . (qw{*} x 131) . "\n" . trim($strContent) . "\n"; if (defined($strGenerator)) { $strBanner .= "\n" . bldAutoWarning($strGenerator) . "\n"; } $strBanner .= (qw{*} x 131) . qw{/} . "\n"; return $strBanner; } push @EXPORT, qw(bldBanner); #################################################################################################################################### # Generate an enum name from a prefix and - separated name #################################################################################################################################### sub bldEnum { my $strPrefix = shift; my $strName = shift; my $bInitCapFirst = shift; $bInitCapFirst = defined($bInitCapFirst) ? $bInitCapFirst : true; my $bFirst = true; my @stryName = split('\-', $strName); $strName = undef; foreach my $strPart (@stryName) { $strName .= ($bFirst && $bInitCapFirst) || !$bFirst ? ucfirst($strPart) : $strPart; $bFirst = false; } return "${strPrefix}${strName}"; } push @EXPORT, qw(bldEnum); #################################################################################################################################### # Quote a list of strings #################################################################################################################################### sub bldQuoteList { my $ryList = shift; my @stryQuoteList; foreach my $strItem (@{$ryList}) { push(@stryQuoteList, "\"${strItem}\""); } return @stryQuoteList; } push @EXPORT, qw(bldQuoteList); 1; pgbackrest-release-2.24/build/lib/pgBackRestBuild/Config/000077500000000000000000000000001362531507100232665ustar00rootroot00000000000000pgbackrest-release-2.24/build/lib/pgBackRestBuild/Config/Build.pm000066400000000000000000000265351362531507100246760ustar00rootroot00000000000000#################################################################################################################################### # Auto-Generate Command and Option Configuration Enums, Constants and Data #################################################################################################################################### package pgBackRestBuild::Config::Build; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Cwd qw(abs_path); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use Storable qw(dclone); use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Version; use pgBackRestBuild::Build::Common; use pgBackRestBuild::Config::BuildDefine; use pgBackRestBuild::Config::Data; #################################################################################################################################### # Constants #################################################################################################################################### use constant BLDLCL_FILE_CONFIG => 'config'; use constant BLDLCL_CONSTANT_COMMAND => '01-constantCommand'; use constant BLDLCL_CONSTANT_COMMAND_TOTAL => 'CFG_COMMAND_TOTAL'; use constant BLDLCL_CONSTANT_OPTION => '02-constantOption'; use constant BLDLCL_CONSTANT_OPTION_TOTAL => 'CFG_OPTION_TOTAL'; use constant BLDLCL_DATA_COMMAND_CONSTANT => '01-commandConstant'; use constant BLDLCL_DATA_COMMAND => '02-command'; use constant BLDLCL_DATA_OPTION_CONSTANT => '03-optionConstant'; use constant BLDLCL_DATA_OPTION => '04-option'; use constant BLDLCL_ENUM_COMMAND => '01-enumCommand'; use constant BLDLCL_ENUM_OPTION => '02-enumOption'; #################################################################################################################################### # Definitions for constants and data to build #################################################################################################################################### my $rhBuild = { &BLD_FILE => { #--------------------------------------------------------------------------------------------------------------------------- &BLDLCL_FILE_CONFIG => { &BLD_SUMMARY => 'Command and Option Configuration', &BLD_CONSTANT_GROUP => { &BLDLCL_CONSTANT_COMMAND => { &BLD_SUMMARY => 'Command', }, &BLDLCL_CONSTANT_OPTION => { &BLD_SUMMARY => 'Option', }, }, &BLD_ENUM => { &BLDLCL_ENUM_COMMAND => { &BLD_SUMMARY => 'Command', &BLD_NAME => 'ConfigCommand', &BLD_LIST => [], }, &BLDLCL_ENUM_OPTION => { &BLD_SUMMARY => 'Option', &BLD_NAME => 'ConfigOption', &BLD_LIST => [], }, }, &BLD_DATA => { &BLDLCL_DATA_COMMAND_CONSTANT => { &BLD_SUMMARY => 'Command constants', }, &BLDLCL_DATA_COMMAND => { &BLD_SUMMARY => 'Command data', }, &BLDLCL_DATA_OPTION_CONSTANT => { &BLD_SUMMARY => 'Option constants', }, &BLDLCL_DATA_OPTION => { &BLD_SUMMARY => 'Option data', }, }, }, }, }; #################################################################################################################################### # Generate enum names #################################################################################################################################### sub buildConfigCommandEnum { return bldEnum('cfgCmd', shift) } push @EXPORT, qw(buildConfigCommandEnum); sub buildConfigOptionEnum { return bldEnum('cfgOpt', shift) } push @EXPORT, qw(buildConfigOptionEnum); #################################################################################################################################### # Build constants and data #################################################################################################################################### sub buildConfig { # Build command constants and data #------------------------------------------------------------------------------------------------------------------------------- my $strCommandConst; my $rhCommandDefine = cfgDefineCommand(); my $rhEnum = $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_CONFIG}{&BLD_ENUM}{&BLDLCL_ENUM_COMMAND}; my $iCommandTotal = 0; my $strBuildSource = 'static ConfigCommandData configCommandData[' . BLDLCL_CONSTANT_COMMAND_TOTAL . "] = CONFIG_COMMAND_LIST\n" . "("; my $strBuildSourceConstant = ''; foreach my $strCommand (sort(keys(%{$rhCommandDefine}))) { my $rhCommand = $rhCommandDefine->{$strCommand}; # Build command constant name $strCommandConst = "CFGCMD_" . uc($strCommand); $strCommandConst =~ s/\-/_/g; # Build C enum my $strCommandEnum = buildConfigCommandEnum($strCommand); push(@{$rhEnum->{&BLD_LIST}}, $strCommandEnum); # Build command data $strBuildSource .= "\n" . " CONFIG_COMMAND\n" . " (\n" . " CONFIG_COMMAND_NAME(${strCommandConst})\n" . "\n" . " CONFIG_COMMAND_INTERNAL(" . ($rhCommand->{&CFGDEF_INTERNAL} ? 'true' : 'false') . ")\n" . " CONFIG_COMMAND_LOG_FILE(" . ($rhCommand->{&CFGDEF_LOG_FILE} ? 'true' : 'false') . ")\n" . " CONFIG_COMMAND_LOG_LEVEL_DEFAULT(logLevel" . ucfirst(lc($rhCommand->{&CFGDEF_LOG_LEVEL_DEFAULT})) . ")\n" . " CONFIG_COMMAND_LOCK_REQUIRED(" . ($rhCommand->{&CFGDEF_LOCK_REQUIRED} ? 'true' : 'false') . ")\n" . " CONFIG_COMMAND_LOCK_REMOTE_REQUIRED(" . ($rhCommand->{&CFGDEF_LOCK_REMOTE_REQUIRED} ? 'true' : 'false') . ")\n" . " CONFIG_COMMAND_LOCK_TYPE(lockType" . ucfirst(lc($rhCommand->{&CFGDEF_LOCK_TYPE})) . ")\n" . " CONFIG_COMMAND_PARAMETER_ALLOWED(" . ($rhCommand->{&CFGDEF_PARAMETER_ALLOWED} ? 'true' : 'false') . ")\n" . " )\n"; $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_CONFIG}{&BLD_CONSTANT_GROUP}{&BLDLCL_CONSTANT_COMMAND}{&BLD_CONSTANT} {$strCommandConst}{&BLD_CONSTANT_VALUE} = "\"${strCommand}\"\n STRING_DECLARE(${strCommandConst}_STR);"; $strBuildSourceConstant .= "STRING_EXTERN(${strCommandConst}_STR," . (' ' x (49 - length($strCommandConst))) . "${strCommandConst});\n"; $iCommandTotal++; } # Add "none" command that is used to initialize the current command before anything is parsed push(@{$rhEnum->{&BLD_LIST}}, buildConfigCommandEnum('none')); $iCommandTotal++; $strBuildSource .= ")\n"; $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_CONFIG}{&BLD_DATA}{&BLDLCL_DATA_COMMAND}{&BLD_SOURCE} = $strBuildSource; $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_CONFIG}{&BLD_DATA}{&BLDLCL_DATA_COMMAND_CONSTANT}{&BLD_SOURCE} = $strBuildSourceConstant; # Add an LF to the last command constant so there's whitespace before the total $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_CONFIG}{&BLD_CONSTANT_GROUP}{&BLDLCL_CONSTANT_COMMAND}{&BLD_CONSTANT} {$strCommandConst}{&BLD_CONSTANT_VALUE} .= "\n"; # Set option total constant $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_CONFIG}{&BLD_CONSTANT_GROUP}{&BLDLCL_CONSTANT_COMMAND}{&BLD_CONSTANT} {&BLDLCL_CONSTANT_COMMAND_TOTAL}{&BLD_CONSTANT_VALUE} = $iCommandTotal; # Build option constants and data #------------------------------------------------------------------------------------------------------------------------------- my $strOptionConst; my $rhConfigDefine = cfgDefine(); $rhEnum = $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_CONFIG}{&BLD_ENUM}{&BLDLCL_ENUM_OPTION}; my $iOptionTotal = 0; $strBuildSource = 'static ConfigOptionData configOptionData[' . BLDLCL_CONSTANT_OPTION_TOTAL . "] = CONFIG_OPTION_LIST\n" . "("; $strBuildSourceConstant = ''; foreach my $strOption (sort(keys(%{$rhConfigDefine}))) { my $iOptionIndexTotal = $rhConfigDefine->{$strOption}{&CFGDEF_INDEX_TOTAL}; my $strOptionPrefix = $rhConfigDefine->{$strOption}{&CFGDEF_PREFIX}; # Builds option data for (my $iOptionIndex = 1; $iOptionIndex <= $iOptionIndexTotal; $iOptionIndex++) { # Build C enum my $strOptionEnum = buildConfigOptionEnum($strOption) . ($iOptionIndex == 1 ? '' : $iOptionIndex); push(@{$rhEnum->{&BLD_LIST}}, $strOptionEnum); $rhEnum->{&BLD_VALUE}{$strOptionEnum} = $iOptionTotal; # Create the indexed version of the option name my $strOptionIndex = defined($strOptionPrefix) ? "${strOptionPrefix}${iOptionIndex}-" . substr($strOption, length($strOptionPrefix) + 1) : $strOption; # Build option constant name $strOptionConst = "CFGOPT_" . uc($strOptionIndex); $strOptionConst =~ s/\-/_/g; # Add option data $strBuildSource .= "\n" . " //" . (qw{-} x 126) . "\n" . " CONFIG_OPTION\n" . " (\n" . " CONFIG_OPTION_NAME(${strOptionConst})\n" . " CONFIG_OPTION_INDEX(" . ($iOptionIndex - 1) . ")\n" . " CONFIG_OPTION_DEFINE_ID(" . buildConfigDefineOptionEnum($strOption) . ")\n" . " )\n"; $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_CONFIG}{&BLD_CONSTANT_GROUP}{&BLDLCL_CONSTANT_OPTION}{&BLD_CONSTANT} {$strOptionConst}{&BLD_CONSTANT_VALUE} = "\"${strOptionIndex}\"\n STRING_DECLARE(${strOptionConst}_STR);"; $strBuildSourceConstant .= "STRING_EXTERN(${strOptionConst}_STR," . (' ' x (49 - length($strOptionConst))) . "${strOptionConst});\n"; $iOptionTotal += 1; } } $strBuildSource .= ")\n"; $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_CONFIG}{&BLD_DATA}{&BLDLCL_DATA_OPTION}{&BLD_SOURCE} = $strBuildSource; $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_CONFIG}{&BLD_DATA}{&BLDLCL_DATA_OPTION_CONSTANT}{&BLD_SOURCE} = $strBuildSourceConstant; # Add an LF to the last option constant so there's whitespace before the total $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_CONFIG}{&BLD_CONSTANT_GROUP}{&BLDLCL_CONSTANT_OPTION}{&BLD_CONSTANT} {$strOptionConst}{&BLD_CONSTANT_VALUE} .= "\n"; # Set option total constant $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_CONFIG}{&BLD_CONSTANT_GROUP}{&BLDLCL_CONSTANT_OPTION}{&BLD_CONSTANT} {&BLDLCL_CONSTANT_OPTION_TOTAL}{&BLD_CONSTANT_VALUE} = $iOptionTotal; return $rhBuild; } push @EXPORT, qw(buildConfig); 1; pgbackrest-release-2.24/build/lib/pgBackRestBuild/Config/BuildDefine.pm000066400000000000000000000504451362531507100260060ustar00rootroot00000000000000#################################################################################################################################### # Auto-Generate Command and Option Configuration Definition Enums, Constants and Data #################################################################################################################################### package pgBackRestBuild::Config::BuildDefine; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Cwd qw(abs_path); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use Storable qw(dclone); use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Version; use BackRestDoc::Common::DocConfig; use BackRestDoc::Common::DocRender; use pgBackRestBuild::Build::Common; use pgBackRestBuild::Config::Data; #################################################################################################################################### # Constants #################################################################################################################################### use constant BLDLCL_FILE_DEFINE => 'define'; use constant BLDLCL_DATA_COMMAND => '01-dataCommand'; use constant BLDLCL_DATA_OPTION => '02-dataOption'; use constant BLDLCL_ENUM_COMMAND => '01-enumCommand'; use constant BLDLCL_ENUM_OPTION_TYPE => '02-enumOptionType'; use constant BLDLCL_ENUM_OPTION => '03-enumOption'; #################################################################################################################################### # Definitions for constants and data to build #################################################################################################################################### my $strSummary = 'Command and Option Definition'; my $rhBuild = { &BLD_FILE => { &BLDLCL_FILE_DEFINE => { &BLD_SUMMARY => $strSummary, &BLD_ENUM => { &BLDLCL_ENUM_COMMAND => { &BLD_SUMMARY => 'Command define', &BLD_NAME => 'ConfigDefineCommand', }, &BLDLCL_ENUM_OPTION_TYPE => { &BLD_SUMMARY => 'Option type define', &BLD_NAME => 'ConfigDefineOptionType', }, &BLDLCL_ENUM_OPTION => { &BLD_SUMMARY => 'Option define', &BLD_NAME => 'ConfigDefineOption', }, }, &BLD_DATA => { &BLDLCL_DATA_COMMAND => { &BLD_SUMMARY => 'Command define data', }, &BLDLCL_DATA_OPTION => { &BLD_SUMMARY => 'Option define data', }, }, }, }, }; #################################################################################################################################### # Generate enum names #################################################################################################################################### sub buildConfigDefineCommandEnum { return bldEnum('cfgDefCmd', shift) } push @EXPORT, qw(buildConfigDefineCommandEnum); sub buildConfigDefineOptionTypeEnum { return bldEnum('cfgDefOptType', shift); } push @EXPORT, qw(buildConfigDefineOptionTypeEnum); sub buildConfigDefineOptionEnum { return bldEnum('cfgDefOpt', shift); } push @EXPORT, qw(buildConfigDefineOptionEnum); #################################################################################################################################### # Helper function to format help text #################################################################################################################################### sub helpFormatText { my $oManifest = shift; my $oDocRender = shift; my $oText = shift; my $iIndent = shift; my $iLength = shift; # Split the string into lines for processing my @stryText = split("\n", trim($oManifest->variableReplace($oDocRender->processText($oText)))); my $strText; my $iIndex = 0; foreach my $strLine (@stryText) { # Add a linefeed if this is not the first line if (defined($strText)) { $strText .= "\n"; } # Escape special characters $strLine =~ s/\"/\\"/g; my $strPart; my $bFirst = true; # Split the line for output if it's too long do { ($strPart, $strLine) = stringSplit($strLine, ' ', defined($strPart) ? $iLength - 4 : $iLength); $strText .= ' ' x $iIndent; if (!$bFirst) { $strText .= " "; } $strText .= "\"${strPart}"; if (defined($strLine)) { $strText .= "\"\n"; } else { $strText .= ($iIndex + 1 < @stryText ? '\n' : '') . '"'; } $bFirst = false; } while (defined($strLine)); $iIndex++; } return $strText; } #################################################################################################################################### # Helper functions for building optional option data #################################################################################################################################### sub renderAllowList { my $ryAllowList = shift; my $bCommandIndent = shift; my $strIndent = $bCommandIndent ? ' ' : ''; return "${strIndent} CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST\n" . "${strIndent} (\n" . "${strIndent} " . join(",\n${strIndent} ", bldQuoteList($ryAllowList)) . "\n" . "${strIndent} )\n"; } sub renderDepend { my $rhDepend = shift; my $bCommandIndent = shift; my $strIndent = $bCommandIndent ? ' ' : ''; my $strDependOption = $rhDepend->{&CFGDEF_DEPEND_OPTION}; my $ryDependList = $rhDepend->{&CFGDEF_DEPEND_LIST}; if (defined($ryDependList)) { my @stryQuoteList; foreach my $strItem (@{$ryDependList}) { push(@stryQuoteList, "\"${strItem}\""); } return "${strIndent} CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST\n" . "${strIndent} (\n" . "${strIndent} " . buildConfigDefineOptionEnum($strDependOption) . ",\n" . "${strIndent} " . join(",\n${strIndent} ", bldQuoteList($ryDependList)) . "\n" . "${strIndent} )\n"; } return "${strIndent} CFGDEFDATA_OPTION_OPTIONAL_DEPEND(" . buildConfigDefineOptionEnum($strDependOption) . ")\n"; } sub renderOptional { my $rhOptional = shift; my $bCommand = shift; my $rhOptionHelp = shift; my $oManifest = shift; my $oDocRender = shift; my $strCommand = shift; my $strOption = shift; my $strIndent = $bCommand ? ' ' : ''; my $strBuildSourceOptional; my $bSingleLine = false; if (defined($rhOptional->{&CFGDEF_ALLOW_LIST})) { $strBuildSourceOptional .= (defined($strBuildSourceOptional) && !$bSingleLine ? "\n" : '') . renderAllowList($rhOptional->{&CFGDEF_ALLOW_LIST}, $bCommand); $bSingleLine = false; } if (defined($rhOptional->{&CFGDEF_ALLOW_RANGE})) { my @fyRange = @{$rhOptional->{&CFGDEF_ALLOW_RANGE}}; $strBuildSourceOptional .= (defined($strBuildSourceOptional) && !$bSingleLine ? "\n" : '') . "${strIndent} CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(" . $fyRange[0] . ', ' . $fyRange[1] . ")\n"; $bSingleLine = true; } if (defined($rhOptional->{&CFGDEF_DEPEND})) { $strBuildSourceOptional .= (defined($strBuildSourceOptional) && !$bSingleLine ? "\n" : '') . renderDepend($rhOptional->{&CFGDEF_DEPEND}, $bCommand); $bSingleLine = defined($rhOptional->{&CFGDEF_DEPEND}{&CFGDEF_DEPEND_LIST}) ? false : true; } if (defined($rhOptional->{&CFGDEF_DEFAULT})) { $strBuildSourceOptional .= (defined($strBuildSourceOptional) && !$bSingleLine ? "\n" : '') . "${strIndent} CFGDEFDATA_OPTION_OPTIONAL_DEFAULT(\"" . $rhOptional->{&CFGDEF_DEFAULT} . "\")\n"; $bSingleLine = true; } if (defined($rhOptional->{&CFGDEF_PREFIX})) { $strBuildSourceOptional .= (defined($strBuildSourceOptional) && !$bSingleLine ? "\n" : '') . "${strIndent} CFGDEFDATA_OPTION_OPTIONAL_PREFIX(\"" . $rhOptional->{&CFGDEF_PREFIX} . "\")\n"; $bSingleLine = true; } # Output alternate name if (!$bCommand && defined($rhOptionHelp->{&CONFIG_HELP_NAME_ALT})) { $strBuildSourceOptional .= (defined($strBuildSourceOptional) && !$bSingleLine ? "\n" : '') . "${strIndent} CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT(" . join(', ', bldQuoteList($rhOptionHelp->{&CONFIG_HELP_NAME_ALT})) . ")\n"; $bSingleLine = true; } if ($bCommand && defined($rhOptional->{&CFGDEF_INTERNAL})) { $strBuildSourceOptional .= (defined($strBuildSourceOptional) && !$bSingleLine ? "\n" : '') . "${strIndent} CFGDEFDATA_OPTION_OPTIONAL_INTERNAL(" . ($rhOptional->{&CFGDEF_INTERNAL} ? 'true' : 'false') . ")\n"; $bSingleLine = true; } if ($bCommand && defined($rhOptional->{&CFGDEF_REQUIRED})) { $strBuildSourceOptional .= (defined($strBuildSourceOptional) && !$bSingleLine ? "\n" : '') . "${strIndent} CFGDEFDATA_OPTION_OPTIONAL_REQUIRED(" . ($rhOptional->{&CFGDEF_REQUIRED} ? 'true' : 'false') . ")\n"; $bSingleLine = true; } if ($bCommand && defined($rhOptionHelp) && defined($rhOptionHelp->{&CONFIG_HELP_SOURCE}) && $rhOptionHelp->{&CONFIG_HELP_SOURCE} eq CONFIG_HELP_SOURCE_COMMAND) { my $strSummary = helpFormatText($oManifest, $oDocRender, $rhOptionHelp->{&CONFIG_HELP_SUMMARY}, 0, 72); if (length($strSummary) > 74) { confess("summary for command '${strCommand}', option '${strOption}' may not be greater than 72 characters"); } $strBuildSourceOptional .= (defined($strBuildSourceOptional) ? "\n" : '') . "${strIndent} CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY(${strSummary})\n" . "${strIndent} CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION\n" . "${strIndent} (\n" . helpFormatText($oManifest, $oDocRender, $rhOptionHelp->{&CONFIG_HELP_DESCRIPTION}, 20, 111) . "\n" . "${strIndent} )\n"; } return $strBuildSourceOptional; } #################################################################################################################################### # Build configuration constants and data #################################################################################################################################### sub buildConfigDefine { # Load help data #------------------------------------------------------------------------------------------------------------------------------- require BackRestDoc::Common::Doc; require BackRestDoc::Common::DocManifest; my $strDocPath = abs_path(dirname($0) . '/../doc'); my $oStorageDoc = new pgBackRestTest::Common::Storage( $strDocPath, new pgBackRestTest::Common::StoragePosix({bFileSync => false, bPathSync => false})); my @stryEmpty = []; my $oManifest = new BackRestDoc::Common::DocManifest( $oStorageDoc, \@stryEmpty, \@stryEmpty, \@stryEmpty, \@stryEmpty, undef, $strDocPath, false, false); my $oDocRender = new BackRestDoc::Common::DocRender('text', $oManifest, false); my $oDocConfig = new BackRestDoc::Common::DocConfig( new BackRestDoc::Common::Doc("${strDocPath}/xml/reference.xml"), $oDocRender); my $hConfigHelp = $oDocConfig->{oConfigHash}; # Build command constants and data #------------------------------------------------------------------------------------------------------------------------------- my $rhEnum = $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_DEFINE}{&BLD_ENUM}{&BLDLCL_ENUM_COMMAND}; my $strBuildSource = "static ConfigDefineCommandData configDefineCommandData[] = CFGDEFDATA_COMMAND_LIST\n" . "("; foreach my $strCommand (cfgDefineCommandList()) { # Get command help my $hCommandHelp = $hConfigHelp->{&CONFIG_HELP_COMMAND}{$strCommand}; # Build C enum my $strCommandEnum = buildConfigDefineCommandEnum($strCommand); push(@{$rhEnum->{&BLD_LIST}}, $strCommandEnum); # Build command data $strBuildSource .= "\n" . " CFGDEFDATA_COMMAND\n" . " (\n" . " CFGDEFDATA_COMMAND_NAME(\"${strCommand}\")\n"; # Output help if (defined($hCommandHelp)) { $strBuildSource .= "\n"; # Output command summary my $strSummary = helpFormatText($oManifest, $oDocRender, $hCommandHelp->{&CONFIG_HELP_SUMMARY}, 0, 72); if (length($strSummary) > 74) { confess("summary for command '${strCommand}' may not be greater than 72 characters"); } $strBuildSource .= " CFGDEFDATA_COMMAND_HELP_SUMMARY(${strSummary})\n"; # Output description $strBuildSource .= " CFGDEFDATA_COMMAND_HELP_DESCRIPTION\n" . " (\n" . helpFormatText($oManifest, $oDocRender, $hCommandHelp->{&CONFIG_HELP_DESCRIPTION}, 12, 119) . "\n" . " )\n"; } $strBuildSource .= " )\n"; }; $strBuildSource .= ")\n"; $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_DEFINE}{&BLD_DATA}{&BLDLCL_DATA_COMMAND}{&BLD_SOURCE} = $strBuildSource; # Build option type constants #------------------------------------------------------------------------------------------------------------------------------- $rhEnum = $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_DEFINE}{&BLD_ENUM}{&BLDLCL_ENUM_OPTION_TYPE}; foreach my $strOptionType (cfgDefineOptionTypeList()) { # Build C enum my $strOptionTypeEnum = buildConfigDefineOptionTypeEnum($strOptionType); push(@{$rhEnum->{&BLD_LIST}}, $strOptionTypeEnum); }; # Build option constants and data #------------------------------------------------------------------------------------------------------------------------------- my $rhConfigDefine = cfgDefine(); $rhEnum = $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_DEFINE}{&BLD_ENUM}{&BLDLCL_ENUM_OPTION}; $strBuildSource = "static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST\n" . "("; foreach my $strOption (sort(keys(%{$rhConfigDefine}))) { # Get option help my $hOptionHelp = $hConfigHelp->{&CONFIG_HELP_OPTION}{$strOption}; # Build C enum my $strOptionEnum = buildConfigDefineOptionEnum($strOption); push(@{$rhEnum->{&BLD_LIST}}, $strOptionEnum); # Build option data my $rhOption = $rhConfigDefine->{$strOption}; my $strOptionPrefix = $rhOption->{&CFGDEF_PREFIX}; $strBuildSource .= "\n" . " // " . (qw{-} x 125) . "\n" . " CFGDEFDATA_OPTION\n" . " (\n"; my $bRequired = $rhOption->{&CFGDEF_REQUIRED}; $strBuildSource .= " CFGDEFDATA_OPTION_NAME(\"${strOption}\")\n" . " CFGDEFDATA_OPTION_REQUIRED(" . ($bRequired ? 'true' : 'false') . ")\n" . " CFGDEFDATA_OPTION_SECTION(cfgDefSection" . (defined($rhOption->{&CFGDEF_SECTION}) ? ucfirst($rhOption->{&CFGDEF_SECTION}) : 'CommandLine') . ")\n" . " CFGDEFDATA_OPTION_TYPE(" . buildConfigDefineOptionTypeEnum($rhOption->{&CFGDEF_TYPE}) . ")\n" . " CFGDEFDATA_OPTION_INTERNAL(" . ($rhOption->{&CFGDEF_INTERNAL} ? 'true' : 'false') . ")\n" . "\n" . " CFGDEFDATA_OPTION_INDEX_TOTAL(" . $rhOption->{&CFGDEF_INDEX_TOTAL} . ")\n" . " CFGDEFDATA_OPTION_SECURE(" . ($rhOption->{&CFGDEF_SECURE} ? 'true' : 'false') . ")\n"; if (defined($hOptionHelp)) { $strBuildSource .= "\n"; # Output section my $strSection = defined($hOptionHelp->{&CONFIG_HELP_SECTION}) ? $hOptionHelp->{&CONFIG_HELP_SECTION} : 'general'; if (length($strSection) > 72) { confess("section for option '${strOption}' may not be greater than 72 characters"); } $strBuildSource .= " CFGDEFDATA_OPTION_HELP_SECTION(\"${strSection}\")\n"; # Output summary my $strSummary = helpFormatText($oManifest, $oDocRender, $hOptionHelp->{&CONFIG_HELP_SUMMARY}, 0, 72); if (length($strSummary) > 74) { confess("summary for option '${strOption}' may not be greater than 72 characters"); } $strBuildSource .= " CFGDEFDATA_OPTION_HELP_SUMMARY(${strSummary})\n"; # Output description $strBuildSource .= " CFGDEFDATA_OPTION_HELP_DESCRIPTION\n" . " (\n" . helpFormatText($oManifest, $oDocRender, $hOptionHelp->{&CONFIG_HELP_DESCRIPTION}, 12, 119) . "\n" . " )\n"; } $strBuildSource .= "\n" . " CFGDEFDATA_OPTION_COMMAND_LIST\n" . " (\n"; foreach my $strCommand (cfgDefineCommandList()) { if (defined($rhOption->{&CFGDEF_COMMAND}{$strCommand})) { $strBuildSource .= " CFGDEFDATA_OPTION_COMMAND(" . buildConfigDefineCommandEnum($strCommand) . ")\n"; } } $strBuildSource .= " )\n"; # Render optional data my $strBuildSourceOptional = renderOptional($rhOption, false, $hOptionHelp, $oManifest, $oDocRender); # Render command overrides foreach my $strCommand (cfgDefineCommandList()) { my $strBuildSourceOptionalCommand; my $rhCommand = $rhOption->{&CFGDEF_COMMAND}{$strCommand}; if (defined($rhCommand)) { $strBuildSourceOptionalCommand = renderOptional( $rhCommand, true, $hConfigHelp->{&CONFIG_HELP_COMMAND}{$strCommand}{&CONFIG_HELP_OPTION}{$strOption}, $oManifest, $oDocRender, $strCommand, $strOption); if (defined($strBuildSourceOptionalCommand)) { $strBuildSourceOptional .= (defined($strBuildSourceOptional) ? "\n" : '') . " CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE\n" . " (\n" . " CFGDEFDATA_OPTION_OPTIONAL_COMMAND(" . buildConfigDefineCommandEnum($strCommand) . ")\n" . "\n" . $strBuildSourceOptionalCommand . " )\n"; } } }; if (defined($strBuildSourceOptional)) { $strBuildSource .= "\n" . " CFGDEFDATA_OPTION_OPTIONAL_LIST\n" . " (\n" . $strBuildSourceOptional . " )\n"; } $strBuildSource .= " )\n"; } $strBuildSource .= ")\n"; $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_DEFINE}{&BLD_DATA}{&BLDLCL_DATA_OPTION}{&BLD_SOURCE} = $strBuildSource; return $rhBuild; } push @EXPORT, qw(buildConfigDefine); 1; pgbackrest-release-2.24/build/lib/pgBackRestBuild/Config/BuildParse.pm000066400000000000000000000246401362531507100256640ustar00rootroot00000000000000#################################################################################################################################### # Auto-Generate Option Definition for Parsing with getopt_long(). #################################################################################################################################### package pgBackRestBuild::Config::BuildParse; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Cwd qw(abs_path); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use Storable qw(dclone); use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Version; use pgBackRestBuild::Build::Common; use pgBackRestBuild::Config::Build; use pgBackRestBuild::Config::Data; #################################################################################################################################### # Constants #################################################################################################################################### use constant BLDLCL_FILE_DEFINE => 'parse'; use constant BLDLCL_DATA_OPTION => '01-dataOption'; use constant BLDLCL_DATA_OPTION_RESOLVE => '01-dataOptionResolve'; #################################################################################################################################### # Definitions for constants and data to build #################################################################################################################################### my $strSummary = 'Option Parse Definition'; my $rhBuild = { &BLD_FILE => { &BLDLCL_FILE_DEFINE => { &BLD_SUMMARY => $strSummary, &BLD_DATA => { &BLDLCL_DATA_OPTION => { &BLD_SUMMARY => 'Option parse data', }, &BLDLCL_DATA_OPTION_RESOLVE => { &BLD_SUMMARY => 'Order for option parse resolution', }, }, }, }, }; #################################################################################################################################### # Build configuration constants and data #################################################################################################################################### sub buildConfigParse { # Build option parse list #------------------------------------------------------------------------------------------------------------------------------- my $rhConfigDefine = cfgDefine(); my $strBuildSource = "static const struct option optionList[] =\n" . "{"; foreach my $strOption (sort(keys(%{$rhConfigDefine}))) { my $rhOption = $rhConfigDefine->{$strOption}; my $strOptionEnum = buildConfigOptionEnum($strOption); my $strOptionArg = ($rhOption->{&CFGDEF_TYPE} ne CFGDEF_TYPE_BOOLEAN ? " .has_arg = required_argument,\n" : ''); my $strOptionPrefix = $rhConfigDefine->{$strOption}{&CFGDEF_PREFIX}; my @stryOptionName = ($strOption); if (defined($rhOption->{&CFGDEF_NAME_ALT})) { foreach my $strOptionNameAlt (sort(keys(%{$rhOption->{&CFGDEF_NAME_ALT}}))) { push(@stryOptionName, $strOptionNameAlt); } } $strBuildSource .= "\n" . " // ${strOption} option" . (@stryOptionName > 1 ? ' and deprecations' : '') . "\n" . " // " . (qw{-} x 125) . "\n"; for (my $iOptionIdx = 1; $iOptionIdx <= $rhOption->{&CFGDEF_INDEX_TOTAL}; $iOptionIdx++) { for (my $iOptionNameIdx = 0; $iOptionNameIdx < @stryOptionName; $iOptionNameIdx++) { my $strOptionName = $stryOptionName[$iOptionNameIdx]; my $rhNameAlt = $rhOption->{&CFGDEF_NAME_ALT}{$strOptionName}; # Skip alt name if it is not valid for this option index if ($iOptionNameIdx > 0 && defined($rhNameAlt->{&CFGDEF_INDEX}) && $rhNameAlt->{&CFGDEF_INDEX} != $iOptionIdx) { next; } # Generate output name my $strOptionNameOut = $strOptionName; my $strOptionConst; if (defined($strOptionPrefix)) { if ($iOptionNameIdx == 0) { $strOptionNameOut = "${strOptionPrefix}${iOptionIdx}-" . substr($strOptionName, length($strOptionPrefix) + 1); } else { $strOptionNameOut =~ s/\?/$iOptionIdx/g; } } # Generate option value used for parsing (offset is added so options don't conflict with getopt_long return values) my $strOptionFlag = 'PARSE_OPTION_FLAG |'; # Build option constant name if this is the current name for the option if ($iOptionNameIdx == 0) { $strOptionConst = "CFGOPT_" . uc($strOptionNameOut); $strOptionConst =~ s/\-/_/g; } # Else use bare string and mark as deprecated else { $strOptionFlag .= ' PARSE_DEPRECATE_FLAG |'; } my $strOptionVal = ($iOptionIdx > 1 ? "(" : '') . $strOptionEnum . ($iOptionIdx > 1 ? " + " . ($iOptionIdx - 1) . ')' : ''); # Add option $strBuildSource .= " {\n" . " .name = " . (defined($strOptionConst) ? $strOptionConst : "\"${strOptionNameOut}\"") . ",\n" . $strOptionArg . " .val = ${strOptionFlag} ${strOptionVal},\n" . " },\n"; # Add negation when defined if ($rhOption->{&CFGDEF_NEGATE} && !($iOptionNameIdx > 0 && defined($rhNameAlt->{&CFGDEF_NEGATE}) && !$rhNameAlt->{&CFGDEF_NEGATE})) { $strBuildSource .= " {\n" . " .name = \"no-" . (defined($strOptionConst) ? "\" ${strOptionConst}" : "${strOptionNameOut}\"") . ",\n" . " .val = ${strOptionFlag} PARSE_NEGATE_FLAG | ${strOptionVal},\n" . " },\n"; } # Add reset when defined if ($rhOption->{&CFGDEF_RESET} && !($iOptionNameIdx > 0 && defined($rhNameAlt->{&CFGDEF_RESET}) && !$rhNameAlt->{&CFGDEF_RESET})) { $strBuildSource .= " {\n" . " .name = \"reset-" . (defined($strOptionConst) ? "\" ${strOptionConst}" : "${strOptionNameOut}\"") . ",\n" . " .val = ${strOptionFlag} PARSE_RESET_FLAG | ${strOptionVal},\n" . " },\n"; } } } } # The option list needs to be terminated or getopt_long will just keep on reading $strBuildSource .= " // Terminate option list\n" . " {\n" . " .name = NULL\n" . " }\n" . "};\n"; $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_DEFINE}{&BLD_DATA}{&BLDLCL_DATA_OPTION}{&BLD_SOURCE} = $strBuildSource; # Build option resolve order list. This allows the option validation in C to take place in a single pass. # # Always process the stanza option first since confusing error message are produced if it is missing. #------------------------------------------------------------------------------------------------------------------------------- my @stryResolveOrder = (buildConfigOptionEnum(CFGOPT_STANZA)); my $rhResolved = {&CFGOPT_STANZA => true}; my $bAllResolved; do { # Assume that we will finish on this loop $bAllResolved = true; # Loop through all options foreach my $strOption (sort(keys(%{$rhConfigDefine}))) { my $bSkip = false; # Check the default depend my $strOptionDepend = ref($rhConfigDefine->{$strOption}{&CFGDEF_DEPEND}) eq 'HASH' ? $rhConfigDefine->{$strOption}{&CFGDEF_DEPEND}{&CFGDEF_DEPEND_OPTION} : $rhConfigDefine->{$strOption}{&CFGDEF_DEPEND}; if (defined($strOptionDepend) && !$rhResolved->{$strOptionDepend}) { # &log(WARN, "$strOptionDepend is not resolved"); $bSkip = true; } # Check the command depends foreach my $strCommand (sort(keys(%{$rhConfigDefine->{$strOption}{&CFGDEF_COMMAND}}))) { my $strOptionDepend = ref($rhConfigDefine->{$strOption}{&CFGDEF_COMMAND}{$strCommand}{&CFGDEF_DEPEND}) eq 'HASH' ? $rhConfigDefine->{$strOption}{&CFGDEF_COMMAND}{$strCommand}{&CFGDEF_DEPEND}{&CFGDEF_DEPEND_OPTION} : $rhConfigDefine->{$strOption}{&CFGDEF_COMMAND}{$strCommand}{&CFGDEF_DEPEND}; if (defined($strOptionDepend) && !$rhResolved->{$strOptionDepend}) { $bSkip = true; } } # If dependency was not found try again on the next loop if ($bSkip) { $bAllResolved = false; } # Else add option to resolve order list elsif (!$rhResolved->{$strOption}) { $rhResolved->{$strOption} = true; for (my $iIndex = 0; $iIndex < $rhConfigDefine->{$strOption}{&CFGDEF_INDEX_TOTAL}; $iIndex++) { push(@stryResolveOrder, buildConfigOptionEnum($strOption) . ($iIndex == 0 ? '' : " + $iIndex")); } } } } while (!$bAllResolved); $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_DEFINE}{&BLD_DATA}{&BLDLCL_DATA_OPTION_RESOLVE}{&BLD_SOURCE} = "static const ConfigOption optionResolveOrder[] =\n" . "{\n" . " " . join(",\n ", @stryResolveOrder) . ",\n" . "};\n"; return $rhBuild; } push @EXPORT, qw(buildConfigParse); 1; pgbackrest-release-2.24/build/lib/pgBackRestBuild/Config/Data.pm000066400000000000000000003003251362531507100245000ustar00rootroot00000000000000#################################################################################################################################### # Configuration Definition Data # # Contains the defines for options: which commands the option can/cannot be specified, for which commands it is required, default # settings, types, ranges, whether the option is negatable, whether it has dependencies, etc. The initial section is the global # section meaning the defines defined there apply to all commands listed for the option. # # CFGDEF_INHERIT: # Inherit all definitions for the referenced option. Any definitions can be overridden. # # CFGDEF_COMMAND: # List of commands the option can be used with this option. An empty hash signifies that the command does not deviate from the # option defaults. Otherwise, overrides can be specified. # # NOTE: If the option (A) has a dependency on another option (B) then the CFGCMD_ must also be specified in the other option # (B), else it will still error on the option (A). # # CFGDEF_REQUIRED: # In global section: # true - if the option does not have a default, then setting CFGDEF_REQUIRED in the global section means all commands # listed in CFGDEF_COMMAND require the user to set it. # false - no commands listed require it as an option but it can be set. This can be overridden for individual commands by # setting CFGDEF_REQUIRED in the CFGDEF_COMMAND section. # In CFGDEF_COMMAND section: # true - the option must be set somehow for the command, either by default (CFGDEF_DEFAULT) or by the user. # &CFGCMD_CHECK => # { # &CFGDEF_REQUIRED => true # }, # false - mainly used for overriding the CFGDEF_REQUIRED in the global section. # # CFGDEF_DEFAULT: # Sets a default for the option for all commands if listed in the global section, or for specific commands if listed in the # CFGDEF_COMMAND section. All boolean types require a default. # # CFGDEF_NEGATE: # The option can be negated with "no" e.g. --no-compress. This applies to options that are only valid on the command line (i.e. # no config section defined) and if not specifically defined, the default is false. All config file boolean options are # automatically negatable. # # CFGDEF_RESET: # The option can be reset to default even if the default is undefined. # # CFGDEF_DEPEND: # Specify the dependencies this option has on another option. All commands listed for this option must also be listed in the # dependent option(s). # CFGDEF_DEPEND_LIST further defines the allowable settings for the depended option. # # CFGDEF_ALLOW_LIST: # Lists the allowable settings for the option. # # CFGDEF_INTERNAL: # Option is used by the command internally but is not exposed in the documentation. This is useful for commands that need to know # where they are running by looking at other options in the config. Also good for test options. #################################################################################################################################### package pgBackRestBuild::Config::Data; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Cwd qw(abs_path); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname basename); use Getopt::Long qw(GetOptions); use Storable qw(dclone); use pgBackRest::Common::Exception; use pgBackRest::Common::Io::Base; use pgBackRest::Common::Log; use pgBackRest::Common::Wait; use pgBackRest::Version; #################################################################################################################################### # Command constants - commands that are allowed in the exe #################################################################################################################################### use constant CFGCMD_ARCHIVE_GET => 'archive-get'; push @EXPORT, qw(CFGCMD_ARCHIVE_GET); use constant CFGCMD_ARCHIVE_PUSH => 'archive-push'; push @EXPORT, qw(CFGCMD_ARCHIVE_PUSH); use constant CFGCMD_BACKUP => 'backup'; push @EXPORT, qw(CFGCMD_BACKUP); use constant CFGCMD_CHECK => 'check'; push @EXPORT, qw(CFGCMD_CHECK); use constant CFGCMD_EXPIRE => 'expire'; push @EXPORT, qw(CFGCMD_EXPIRE); use constant CFGCMD_HELP => 'help'; push @EXPORT, qw(CFGCMD_HELP); use constant CFGCMD_INFO => 'info'; push @EXPORT, qw(CFGCMD_INFO); use constant CFGCMD_RESTORE => 'restore'; push @EXPORT, qw(CFGCMD_RESTORE); use constant CFGCMD_STANZA_CREATE => 'stanza-create'; push @EXPORT, qw(CFGCMD_STANZA_CREATE); use constant CFGCMD_STANZA_DELETE => 'stanza-delete'; push @EXPORT, qw(CFGCMD_STANZA_DELETE); use constant CFGCMD_STANZA_UPGRADE => 'stanza-upgrade'; push @EXPORT, qw(CFGCMD_STANZA_UPGRADE); use constant CFGCMD_START => 'start'; push @EXPORT, qw(CFGCMD_START); use constant CFGCMD_STOP => 'stop'; push @EXPORT, qw(CFGCMD_STOP); use constant CFGCMD_STORAGE_LIST => 'ls'; push @EXPORT, qw(CFGCMD_STORAGE_LIST); use constant CFGCMD_VERSION => 'version'; push @EXPORT, qw(CFGCMD_VERSION); #################################################################################################################################### # Option constants - options that are allowed for commands #################################################################################################################################### # Command-line only options #----------------------------------------------------------------------------------------------------------------------------------- use constant CFGOPT_CONFIG => 'config'; push @EXPORT, qw(CFGOPT_CONFIG); use constant CFGOPT_CONFIG_PATH => 'config-path'; push @EXPORT, qw(CFGOPT_CONFIG_PATH); use constant CFGOPT_CONFIG_INCLUDE_PATH => 'config-include-path'; push @EXPORT, qw(CFGOPT_CONFIG_INCLUDE_PATH); use constant CFGOPT_DELTA => 'delta'; push @EXPORT, qw(CFGOPT_DELTA); use constant CFGOPT_FORCE => 'force'; push @EXPORT, qw(CFGOPT_FORCE); use constant CFGOPT_ONLINE => 'online'; push @EXPORT, qw(CFGOPT_ONLINE); use constant CFGOPT_SET => 'set'; push @EXPORT, qw(CFGOPT_SET); use constant CFGOPT_STANZA => 'stanza'; push @EXPORT, qw(CFGOPT_STANZA); use constant CFGOPT_TARGET => 'target'; push @EXPORT, qw(CFGOPT_TARGET); use constant CFGOPT_TARGET_EXCLUSIVE => 'target-exclusive'; push @EXPORT, qw(CFGOPT_TARGET_EXCLUSIVE); use constant CFGOPT_TARGET_ACTION => 'target-action'; push @EXPORT, qw(CFGOPT_TARGET_ACTION); use constant CFGOPT_TARGET_TIMELINE => 'target-timeline'; push @EXPORT, qw(CFGOPT_TARGET_TIMELINE); use constant CFGOPT_TYPE => 'type'; push @EXPORT, qw(CFGOPT_TYPE); use constant CFGOPT_OUTPUT => 'output'; push @EXPORT, qw(CFGOPT_OUTPUT); # Command-line only local/remote options #----------------------------------------------------------------------------------------------------------------------------------- use constant CFGOPT_PROCESS => 'process'; push @EXPORT, qw(CFGOPT_PROCESS); use constant CFGOPT_HOST_ID => 'host-id'; push @EXPORT, qw(CFGOPT_HOST_ID); use constant CFGOPT_REMOTE_TYPE => 'remote-type'; push @EXPORT, qw(CFGOPT_REMOTE_TYPE); # Command-line only storage options #----------------------------------------------------------------------------------------------------------------------------------- use constant CFGOPT_FILTER => 'filter'; push @EXPORT, qw(CFGOPT_FILTER); use constant CFGOPT_RECURSE => 'recurse'; push @EXPORT, qw(CFGOPT_RECURSE); use constant CFGOPT_SORT => 'sort'; push @EXPORT, qw(CFGOPT_SORT); # General options #----------------------------------------------------------------------------------------------------------------------------------- use constant CFGOPT_ARCHIVE_TIMEOUT => 'archive-timeout'; push @EXPORT, qw(CFGOPT_ARCHIVE_TIMEOUT); use constant CFGOPT_BUFFER_SIZE => 'buffer-size'; push @EXPORT, qw(CFGOPT_BUFFER_SIZE); use constant CFGOPT_DB_TIMEOUT => 'db-timeout'; push @EXPORT, qw(CFGOPT_DB_TIMEOUT); use constant CFGOPT_COMPRESS => 'compress'; push @EXPORT, qw(CFGOPT_COMPRESS); use constant CFGOPT_COMPRESS_LEVEL => 'compress-level'; push @EXPORT, qw(CFGOPT_COMPRESS_LEVEL); use constant CFGOPT_COMPRESS_LEVEL_NETWORK => 'compress-level-network'; push @EXPORT, qw(CFGOPT_COMPRESS_LEVEL_NETWORK); use constant CFGOPT_NEUTRAL_UMASK => 'neutral-umask'; push @EXPORT, qw(CFGOPT_NEUTRAL_UMASK); use constant CFGOPT_PROTOCOL_TIMEOUT => 'protocol-timeout'; push @EXPORT, qw(CFGOPT_PROTOCOL_TIMEOUT); use constant CFGOPT_PROCESS_MAX => 'process-max'; push @EXPORT, qw(CFGOPT_PROCESS_MAX); # Commands use constant CFGOPT_CMD_SSH => 'cmd-ssh'; push @EXPORT, qw(CFGOPT_CMD_SSH); # Paths use constant CFGOPT_LOCK_PATH => 'lock-path'; push @EXPORT, qw(CFGOPT_LOCK_PATH); use constant CFGOPT_LOG_PATH => 'log-path'; push @EXPORT, qw(CFGOPT_LOG_PATH); use constant CFGOPT_SPOOL_PATH => 'spool-path'; push @EXPORT, qw(CFGOPT_SPOOL_PATH); # Logging use constant CFGOPT_LOG_LEVEL_CONSOLE => 'log-level-console'; push @EXPORT, qw(CFGOPT_LOG_LEVEL_CONSOLE); use constant CFGOPT_LOG_LEVEL_FILE => 'log-level-file'; push @EXPORT, qw(CFGOPT_LOG_LEVEL_FILE); use constant CFGOPT_LOG_LEVEL_STDERR => 'log-level-stderr'; push @EXPORT, qw(CFGOPT_LOG_LEVEL_STDERR); use constant CFGOPT_LOG_SUBPROCESS => 'log-subprocess'; push @EXPORT, qw(CFGOPT_LOG_SUBPROCESS); use constant CFGOPT_LOG_TIMESTAMP => 'log-timestamp'; push @EXPORT, qw(CFGOPT_LOG_TIMESTAMP); # Repository options #----------------------------------------------------------------------------------------------------------------------------------- # Determines how many repositories can be configured use constant CFGDEF_INDEX_REPO => 1; # Prefix that must be used by all repo options that allow multiple configurations use constant CFGDEF_PREFIX_REPO => 'repo'; push @EXPORT, qw(CFGDEF_PREFIX_REPO); # Repository General use constant CFGOPT_REPO_CIPHER_TYPE => CFGDEF_PREFIX_REPO . '-cipher-type'; push @EXPORT, qw(CFGOPT_REPO_CIPHER_TYPE); use constant CFGOPT_REPO_CIPHER_PASS => CFGDEF_PREFIX_REPO . '-cipher-pass'; push @EXPORT, qw(CFGOPT_REPO_CIPHER_PASS); use constant CFGOPT_REPO_HARDLINK => CFGDEF_PREFIX_REPO . '-hardlink'; push @EXPORT, qw(CFGOPT_REPO_HARDLINK); use constant CFGOPT_REPO_PATH => CFGDEF_PREFIX_REPO . '-path'; push @EXPORT, qw(CFGOPT_REPO_PATH); use constant CFGOPT_REPO_TYPE => CFGDEF_PREFIX_REPO . '-type'; push @EXPORT, qw(CFGOPT_REPO_TYPE); # Repository Retention use constant CFGOPT_REPO_RETENTION_ARCHIVE => CFGDEF_PREFIX_REPO . '-retention-archive'; push @EXPORT, qw(CFGOPT_REPO_RETENTION_ARCHIVE); use constant CFGOPT_REPO_RETENTION_ARCHIVE_TYPE => CFGDEF_PREFIX_REPO . '-retention-archive-type'; push @EXPORT, qw(CFGOPT_REPO_RETENTION_ARCHIVE_TYPE); use constant CFGOPT_REPO_RETENTION_DIFF => CFGDEF_PREFIX_REPO . '-retention-diff'; push @EXPORT, qw(CFGOPT_REPO_RETENTION_DIFF); use constant CFGOPT_REPO_RETENTION_FULL => CFGDEF_PREFIX_REPO . '-retention-full'; push @EXPORT, qw(CFGOPT_REPO_RETENTION_FULL); # Repository Host use constant CFGOPT_REPO_HOST => CFGDEF_PREFIX_REPO . '-host'; push @EXPORT, qw(CFGOPT_REPO_HOST); use constant CFGOPT_REPO_HOST_CMD => CFGOPT_REPO_HOST . '-cmd'; push @EXPORT, qw(CFGOPT_REPO_HOST_CMD); use constant CFGOPT_REPO_HOST_CONFIG => CFGOPT_REPO_HOST . '-config'; push @EXPORT, qw(CFGOPT_REPO_HOST_CONFIG); use constant CFGOPT_REPO_HOST_CONFIG_INCLUDE_PATH => CFGOPT_REPO_HOST_CONFIG . '-include-path'; push @EXPORT, qw(CFGOPT_REPO_HOST_CONFIG_INCLUDE_PATH); use constant CFGOPT_REPO_HOST_CONFIG_PATH => CFGOPT_REPO_HOST_CONFIG . '-path'; push @EXPORT, qw(CFGOPT_REPO_HOST_CONFIG_PATH); use constant CFGOPT_REPO_HOST_PORT => CFGOPT_REPO_HOST . '-port'; push @EXPORT, qw(CFGOPT_REPO_HOST_PORT); use constant CFGOPT_REPO_HOST_USER => CFGOPT_REPO_HOST . '-user'; push @EXPORT, qw(CFGOPT_REPO_HOST_USER); # Repository S3 use constant CFGDEF_REPO_S3 => CFGDEF_PREFIX_REPO . '-s3'; use constant CFGOPT_REPO_S3_KEY => CFGDEF_REPO_S3 . '-key'; push @EXPORT, qw(CFGOPT_REPO_S3_KEY); use constant CFGOPT_REPO_S3_KEY_SECRET => CFGDEF_REPO_S3 . '-key-secret'; push @EXPORT, qw(CFGOPT_REPO_S3_KEY_SECRET); use constant CFGOPT_REPO_S3_BUCKET => CFGDEF_REPO_S3 . '-bucket'; push @EXPORT, qw(CFGOPT_REPO_S3_BUCKET); use constant CFGOPT_REPO_S3_CA_FILE => CFGDEF_REPO_S3 . '-ca-file'; push @EXPORT, qw(CFGOPT_REPO_S3_CA_FILE); use constant CFGOPT_REPO_S3_CA_PATH => CFGDEF_REPO_S3 . '-ca-path'; push @EXPORT, qw(CFGOPT_REPO_S3_CA_PATH); use constant CFGOPT_REPO_S3_ENDPOINT => CFGDEF_REPO_S3 . '-endpoint'; push @EXPORT, qw(CFGOPT_REPO_S3_ENDPOINT); use constant CFGOPT_REPO_S3_HOST => CFGDEF_REPO_S3 . '-host'; push @EXPORT, qw(CFGOPT_REPO_S3_HOST); use constant CFGOPT_REPO_S3_PORT => CFGDEF_REPO_S3 . '-port'; push @EXPORT, qw(CFGOPT_REPO_S3_PORT); use constant CFGOPT_REPO_S3_REGION => CFGDEF_REPO_S3 . '-region'; push @EXPORT, qw(CFGOPT_REPO_S3_REGION); use constant CFGOPT_REPO_S3_TOKEN => CFGDEF_REPO_S3 . '-token'; push @EXPORT, qw(CFGOPT_REPO_S3_TOKEN); use constant CFGOPT_REPO_S3_URI_STYLE => CFGDEF_REPO_S3 . '-uri-style'; push @EXPORT, qw(CFGOPT_REPO_S3_URI_STYLE); use constant CFGOPT_REPO_S3_VERIFY_TLS => CFGDEF_REPO_S3 . '-verify-tls'; push @EXPORT, qw(CFGOPT_REPO_S3_VERIFY_TLS); # Archive options #----------------------------------------------------------------------------------------------------------------------------------- use constant CFGOPT_ARCHIVE_ASYNC => 'archive-async'; push @EXPORT, qw(CFGOPT_ARCHIVE_ASYNC); use constant CFGOPT_ARCHIVE_GET_QUEUE_MAX => 'archive-get-queue-max'; push @EXPORT, qw(CFGOPT_ARCHIVE_GET_QUEUE_MAX); use constant CFGOPT_ARCHIVE_PUSH_QUEUE_MAX => 'archive-push-queue-max'; push @EXPORT, qw(CFGOPT_ARCHIVE_PUSH_QUEUE_MAX); # Backup options #----------------------------------------------------------------------------------------------------------------------------------- use constant CFGOPT_ARCHIVE_CHECK => 'archive-check'; push @EXPORT, qw(CFGOPT_ARCHIVE_CHECK); use constant CFGOPT_ARCHIVE_COPY => 'archive-copy'; push @EXPORT, qw(CFGOPT_ARCHIVE_COPY); use constant CFGOPT_BACKUP_STANDBY => 'backup-standby'; push @EXPORT, qw(CFGOPT_BACKUP_STANDBY); use constant CFGOPT_CHECKSUM_PAGE => 'checksum-page'; push @EXPORT, qw(CFGOPT_CHECKSUM_PAGE); use constant CFGOPT_EXCLUDE => 'exclude'; push @EXPORT, qw(CFGOPT_EXCLUDE); use constant CFGOPT_MANIFEST_SAVE_THRESHOLD => 'manifest-save-threshold'; push @EXPORT, qw(CFGOPT_MANIFEST_SAVE_THRESHOLD); use constant CFGOPT_RESUME => 'resume'; push @EXPORT, qw(CFGOPT_RESUME); use constant CFGOPT_START_FAST => 'start-fast'; push @EXPORT, qw(CFGOPT_START_FAST); use constant CFGOPT_STOP_AUTO => 'stop-auto'; push @EXPORT, qw(CFGOPT_STOP_AUTO); # Restore options #----------------------------------------------------------------------------------------------------------------------------------- use constant CFGOPT_DB_INCLUDE => 'db-include'; push @EXPORT, qw(CFGOPT_DB_INCLUDE); use constant CFGOPT_LINK_ALL => 'link-all'; push @EXPORT, qw(CFGOPT_LINK_ALL); use constant CFGOPT_LINK_MAP => 'link-map'; push @EXPORT, qw(CFGOPT_LINK_MAP); use constant CFGOPT_TABLESPACE_MAP_ALL => 'tablespace-map-all'; push @EXPORT, qw(CFGOPT_TABLESPACE_MAP_ALL); use constant CFGOPT_TABLESPACE_MAP => 'tablespace-map'; push @EXPORT, qw(CFGOPT_TABLESPACE_MAP); use constant CFGOPT_RECOVERY_OPTION => 'recovery-option'; push @EXPORT, qw(CFGOPT_RECOVERY_OPTION); # Stanza options #----------------------------------------------------------------------------------------------------------------------------------- # Determines how many databases can be configured use constant CFGDEF_INDEX_PG => 8; push @EXPORT, qw(CFGDEF_INDEX_PG); # Prefix that must be used by all db options that allow multiple configurations use constant CFGDEF_PREFIX_PG => 'pg'; push @EXPORT, qw(CFGDEF_PREFIX_PG); use constant CFGOPT_PG_HOST => CFGDEF_PREFIX_PG . '-host'; push @EXPORT, qw(CFGOPT_PG_HOST); use constant CFGOPT_PG_HOST_CMD => CFGOPT_PG_HOST . '-cmd'; push @EXPORT, qw(CFGOPT_PG_HOST_CMD); use constant CFGOPT_PG_HOST_CONFIG => CFGOPT_PG_HOST . '-config'; push @EXPORT, qw(CFGOPT_PG_HOST_CONFIG); use constant CFGOPT_PG_HOST_CONFIG_INCLUDE_PATH => CFGOPT_PG_HOST_CONFIG . '-include-path'; push @EXPORT, qw(CFGOPT_PG_HOST_CONFIG_INCLUDE_PATH); use constant CFGOPT_PG_HOST_CONFIG_PATH => CFGOPT_PG_HOST_CONFIG . '-path'; push @EXPORT, qw(CFGOPT_PG_HOST_CONFIG_PATH); use constant CFGOPT_PG_HOST_PORT => CFGOPT_PG_HOST . '-port'; push @EXPORT, qw(CFGOPT_PG_HOST_PORT); use constant CFGOPT_PG_HOST_USER => CFGOPT_PG_HOST . '-user'; push @EXPORT, qw(CFGOPT_PG_HOST_USER); use constant CFGOPT_PG_PATH => CFGDEF_PREFIX_PG . '-path'; push @EXPORT, qw(CFGOPT_PG_PATH); use constant CFGOPT_PG_PORT => CFGDEF_PREFIX_PG . '-port'; push @EXPORT, qw(CFGOPT_PG_PORT); use constant CFGOPT_PG_SOCKET_PATH => CFGDEF_PREFIX_PG . '-socket-path'; push @EXPORT, qw(CFGOPT_PG_SOCKET_PATH); use constant CFGOPT_PG_USER => CFGDEF_PREFIX_PG . '-user'; push @EXPORT, qw(CFGOPT_PG_USER); #################################################################################################################################### # Option values - for options that have a specific list of allowed values #################################################################################################################################### # Storage types #----------------------------------------------------------------------------------------------------------------------------------- use constant CFGOPTVAL_STORAGE_TYPE_PG => 'pg'; push @EXPORT, qw(CFGOPTVAL_STORAGE_TYPE_DB); use constant CFGOPTVAL_STORAGE_TYPE_REPO => 'repo'; push @EXPORT, qw(CFGOPTVAL_STORAGE_TYPE_BACKUP); # Backup type #----------------------------------------------------------------------------------------------------------------------------------- use constant CFGOPTVAL_BACKUP_TYPE_FULL => 'full'; push @EXPORT, qw(CFGOPTVAL_BACKUP_TYPE_FULL); use constant CFGOPTVAL_BACKUP_TYPE_DIFF => 'diff'; push @EXPORT, qw(CFGOPTVAL_BACKUP_TYPE_DIFF); use constant CFGOPTVAL_BACKUP_TYPE_INCR => 'incr'; push @EXPORT, qw(CFGOPTVAL_BACKUP_TYPE_INCR); # Repo type #----------------------------------------------------------------------------------------------------------------------------------- use constant CFGOPTVAL_REPO_TYPE_CIFS => 'cifs'; push @EXPORT, qw(CFGOPTVAL_REPO_TYPE_CIFS); use constant CFGOPTVAL_REPO_TYPE_POSIX => 'posix'; push @EXPORT, qw(CFGOPTVAL_REPO_TYPE_POSIX); use constant CFGOPTVAL_REPO_TYPE_S3 => 's3'; push @EXPORT, qw(CFGOPTVAL_REPO_TYPE_S3); # Repo encryption type #----------------------------------------------------------------------------------------------------------------------------------- use constant CFGOPTVAL_REPO_CIPHER_TYPE_NONE => 'none'; push @EXPORT, qw(CFGOPTVAL_REPO_CIPHER_TYPE_NONE); use constant CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC => 'aes-256-cbc'; push @EXPORT, qw(CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC); # Repo S3 URI style #----------------------------------------------------------------------------------------------------------------------------------- use constant CFGOPTVAL_REPO_S3_URI_STYLE_HOST => 'host'; push @EXPORT, qw(CFGOPTVAL_REPO_S3_URI_STYLE_HOST); use constant CFGOPTVAL_REPO_S3_URI_STYLE_PATH => 'path'; push @EXPORT, qw(CFGOPTVAL_REPO_S3_URI_STYLE_PATH); # Info output #----------------------------------------------------------------------------------------------------------------------------------- use constant CFGOPTVAL_OUTPUT_TEXT => 'text'; push @EXPORT, qw(CFGOPTVAL_OUTPUT_TEXT); use constant CFGOPTVAL_OUTPUT_JSON => 'json'; push @EXPORT, qw(CFGOPTVAL_OUTPUT_JSON); # Restore type #----------------------------------------------------------------------------------------------------------------------------------- use constant CFGOPTVAL_RESTORE_TYPE_NAME => 'name'; push @EXPORT, qw(CFGOPTVAL_RESTORE_TYPE_NAME); use constant CFGOPTVAL_RESTORE_TYPE_TIME => 'time'; push @EXPORT, qw(CFGOPTVAL_RESTORE_TYPE_TIME); use constant CFGOPTVAL_RESTORE_TYPE_XID => 'xid'; push @EXPORT, qw(CFGOPTVAL_RESTORE_TYPE_XID); use constant CFGOPTVAL_RESTORE_TYPE_PRESERVE => 'preserve'; push @EXPORT, qw(CFGOPTVAL_RESTORE_TYPE_PRESERVE); use constant CFGOPTVAL_RESTORE_TYPE_NONE => 'none'; push @EXPORT, qw(CFGOPTVAL_RESTORE_TYPE_NONE); use constant CFGOPTVAL_RESTORE_TYPE_IMMEDIATE => 'immediate'; push @EXPORT, qw(CFGOPTVAL_RESTORE_TYPE_IMMEDIATE); use constant CFGOPTVAL_RESTORE_TYPE_DEFAULT => 'default'; push @EXPORT, qw(CFGOPTVAL_RESTORE_TYPE_DEFAULT); use constant CFGOPTVAL_RESTORE_TYPE_STANDBY => 'standby'; push @EXPORT, qw(CFGOPTVAL_RESTORE_TYPE_STANDBY); # Restore target action #----------------------------------------------------------------------------------------------------------------------------------- use constant CFGOPTVAL_RESTORE_TARGET_ACTION_PAUSE => 'pause'; push @EXPORT, qw(CFGOPTVAL_RESTORE_TARGET_ACTION_PAUSE); use constant CFGOPTVAL_RESTORE_TARGET_ACTION_PROMOTE => 'promote'; push @EXPORT, qw(CFGOPTVAL_RESTORE_TARGET_ACTION_PROMOTE); use constant CFGOPTVAL_RESTORE_TARGET_ACTION_SHUTDOWN => 'shutdown'; push @EXPORT, qw(CFGOPTVAL_RESTORE_TARGET_ACTION_SHUTDOWN); #################################################################################################################################### # Option defaults - only defined here when the default is used in more than one place #################################################################################################################################### use constant CFGDEF_DEFAULT_BUFFER_SIZE_MIN => 16384; use constant CFGDEF_DEFAULT_COMPRESS_LEVEL_MIN => 0; use constant CFGDEF_DEFAULT_COMPRESS_LEVEL_MAX => 9; use constant CFGDEF_DEFAULT_CONFIG_PATH => '/etc/' . PROJECT_EXE; use constant CFGDEF_DEFAULT_CONFIG => CFGDEF_DEFAULT_CONFIG_PATH . '/' . PROJECT_CONF; use constant CFGDEF_DEFAULT_CONFIG_INCLUDE_PATH => CFGDEF_DEFAULT_CONFIG_PATH . '/conf.d'; use constant CFGDEF_DEFAULT_DB_TIMEOUT => 1800; use constant CFGDEF_DEFAULT_DB_TIMEOUT_MIN => WAIT_TIME_MINIMUM; use constant CFGDEF_DEFAULT_DB_TIMEOUT_MAX => 86400 * 7; use constant CFGDEF_DEFAULT_PROTOCOL_PORT_MIN => 0; use constant CFGDEF_DEFAULT_PROTOCOL_PORT_MAX => 65535; use constant CFGDEF_DEFAULT_RETENTION_MIN => 1; use constant CFGDEF_DEFAULT_RETENTION_MAX => 9999999; #################################################################################################################################### # Option definition constants - defines, types, sections, etc. #################################################################################################################################### # Command defines #----------------------------------------------------------------------------------------------------------------------------------- # Does this command log to a file? This is the default behavior, but it can be overridden in code by calling logFileInit(). The # default is true. use constant CFGDEF_LOG_FILE => 'log-file'; push @EXPORT, qw(CFGDEF_LOG_FILE); # Defines the log level to use for default messages that are output for every command. For example, the log message that lists all # the options passed is usually output at the info level, but that might not be appropriate for some commands, such as info. Allow # the log level to be lowered so these common messages will not be emitted where they might be distracting. use constant CFGDEF_LOG_LEVEL_DEFAULT => 'log-level-default'; push @EXPORT, qw(CFGDEF_LOG_LEVEL_DEFAULT); # Does the command require a lock? This doesn't mean a lock can't be taken explicitly later, just controls whether a lock will be # acquired as soon at the command starts. use constant CFGDEF_LOCK_REQUIRED => 'lock-required'; push @EXPORT, qw(CFGDEF_LOCK_REQUIRED); # Does the command require a lock on the remote? The lock will only be acquired for process id 0. use constant CFGDEF_LOCK_REMOTE_REQUIRED => 'lock-remote-required'; push @EXPORT, qw(CFGDEF_LOCK_REMOTE_REQUIRED); # What type of lock is required? use constant CFGDEF_LOCK_TYPE => 'lock-type'; push @EXPORT, qw(CFGDEF_LOCK_TYPE); use constant CFGDEF_LOCK_TYPE_ARCHIVE => 'archive'; push @EXPORT, qw(CFGDEF_LOCK_TYPE_ARCHIVE); use constant CFGDEF_LOCK_TYPE_BACKUP => 'backup'; push @EXPORT, qw(CFGDEF_LOCK_TYPE_BACKUP); use constant CFGDEF_LOCK_TYPE_ALL => 'all'; push @EXPORT, qw(CFGDEF_LOCK_TYPE_ALL); use constant CFGDEF_LOCK_TYPE_NONE => 'none'; push @EXPORT, qw(CFGDEF_LOCK_TYPE_NONE); # Does the command allow parameters? If not then the config parser will automatically error out if parameters are detected. If so, # then the command is responsible for ensuring that the parameters are valid. use constant CFGDEF_PARAMETER_ALLOWED => 'parameter-allowed'; push @EXPORT, qw(CFGDEF_PARAMETER_ALLOWED); # Option defines #----------------------------------------------------------------------------------------------------------------------------------- use constant CFGDEF_ALLOW_LIST => 'allow-list'; push @EXPORT, qw(CFGDEF_ALLOW_LIST); use constant CFGDEF_ALLOW_RANGE => 'allow-range'; push @EXPORT, qw(CFGDEF_ALLOW_RANGE); use constant CFGDEF_DEFAULT => 'default'; push @EXPORT, qw(CFGDEF_DEFAULT); use constant CFGDEF_DEPEND => 'depend'; push @EXPORT, qw(CFGDEF_DEPEND); use constant CFGDEF_DEPEND_OPTION => 'depend-option'; push @EXPORT, qw(CFGDEF_DEPEND_OPTION); use constant CFGDEF_DEPEND_LIST => 'depend-list'; push @EXPORT, qw(CFGDEF_DEPEND_LIST); use constant CFGDEF_INDEX => 'index'; push @EXPORT, qw(CFGDEF_INDEX); use constant CFGDEF_INDEX_TOTAL => 'indexTotal'; push @EXPORT, qw(CFGDEF_INDEX_TOTAL); use constant CFGDEF_INHERIT => 'inherit'; push @EXPORT, qw(CFGDEF_INHERIT); use constant CFGDEF_INTERNAL => 'internal'; push @EXPORT, qw(CFGDEF_INTERNAL); use constant CFGDEF_NAME_ALT => 'name-alt'; push @EXPORT, qw(CFGDEF_NAME_ALT); use constant CFGDEF_NEGATE => 'negate'; push @EXPORT, qw(CFGDEF_NEGATE); use constant CFGDEF_PREFIX => 'prefix'; push @EXPORT, qw(CFGDEF_PREFIX); use constant CFGDEF_COMMAND => 'command'; push @EXPORT, qw(CFGDEF_COMMAND); use constant CFGDEF_REQUIRED => 'required'; push @EXPORT, qw(CFGDEF_REQUIRED); use constant CFGDEF_RESET => 'reset'; push @EXPORT, qw(CFGDEF_RESET); use constant CFGDEF_SECTION => 'section'; push @EXPORT, qw(CFGDEF_SECTION); use constant CFGDEF_SECURE => 'secure'; push @EXPORT, qw(CFGDEF_SECURE); use constant CFGDEF_TYPE => 'type'; push @EXPORT, qw(CFGDEF_TYPE); # Option types #----------------------------------------------------------------------------------------------------------------------------------- use constant CFGDEF_TYPE_BOOLEAN => 'boolean'; push @EXPORT, qw(CFGDEF_TYPE_BOOLEAN); use constant CFGDEF_TYPE_FLOAT => 'float'; push @EXPORT, qw(CFGDEF_TYPE_FLOAT); use constant CFGDEF_TYPE_HASH => 'hash'; push @EXPORT, qw(CFGDEF_TYPE_HASH); use constant CFGDEF_TYPE_INTEGER => 'integer'; push @EXPORT, qw(CFGDEF_TYPE_INTEGER); use constant CFGDEF_TYPE_LIST => 'list'; push @EXPORT, qw(CFGDEF_TYPE_LIST); use constant CFGDEF_TYPE_PATH => 'path'; push @EXPORT, qw(CFGDEF_TYPE_PATH); use constant CFGDEF_TYPE_STRING => 'string'; push @EXPORT, qw(CFGDEF_TYPE_STRING); use constant CFGDEF_TYPE_SIZE => 'size'; push @EXPORT, qw(CFGDEF_TYPE_SIZE); # Option config sections #----------------------------------------------------------------------------------------------------------------------------------- use constant CFGDEF_SECTION_GLOBAL => 'global'; push @EXPORT, qw(CFGDEF_SECTION_GLOBAL); use constant CFGDEF_SECTION_STANZA => 'stanza'; push @EXPORT, qw(CFGDEF_SECTION_STANZA); #################################################################################################################################### # Command definition data #################################################################################################################################### my $rhCommandDefine = { &CFGCMD_ARCHIVE_GET => { &CFGDEF_LOG_FILE => false, &CFGDEF_LOCK_TYPE => CFGDEF_LOCK_TYPE_ARCHIVE, &CFGDEF_PARAMETER_ALLOWED => true, }, &CFGCMD_ARCHIVE_PUSH => { &CFGDEF_LOG_FILE => false, &CFGDEF_LOCK_REMOTE_REQUIRED => true, &CFGDEF_LOCK_TYPE => CFGDEF_LOCK_TYPE_ARCHIVE, &CFGDEF_PARAMETER_ALLOWED => true, }, &CFGCMD_BACKUP => { &CFGDEF_LOCK_REQUIRED => true, &CFGDEF_LOCK_REMOTE_REQUIRED => true, &CFGDEF_LOCK_TYPE => CFGDEF_LOCK_TYPE_BACKUP, }, &CFGCMD_CHECK => { &CFGDEF_LOG_FILE => false, }, &CFGCMD_EXPIRE => { &CFGDEF_LOCK_REQUIRED => true, &CFGDEF_LOCK_TYPE => CFGDEF_LOCK_TYPE_BACKUP, }, &CFGCMD_HELP => { &CFGDEF_LOG_FILE => false, &CFGDEF_LOG_LEVEL_DEFAULT => DEBUG, &CFGDEF_PARAMETER_ALLOWED => true, }, &CFGCMD_INFO => { &CFGDEF_LOG_FILE => false, &CFGDEF_LOG_LEVEL_DEFAULT => DEBUG, }, &CFGCMD_RESTORE => { }, &CFGCMD_STANZA_CREATE => { &CFGDEF_LOCK_REQUIRED => true, &CFGDEF_LOCK_TYPE => CFGDEF_LOCK_TYPE_ALL, }, &CFGCMD_STANZA_DELETE => { &CFGDEF_LOCK_REQUIRED => true, &CFGDEF_LOCK_TYPE => CFGDEF_LOCK_TYPE_ALL, }, &CFGCMD_STANZA_UPGRADE => { &CFGDEF_LOCK_REQUIRED => true, &CFGDEF_LOCK_TYPE => CFGDEF_LOCK_TYPE_ALL, }, &CFGCMD_START => { }, &CFGCMD_STOP => { }, &CFGCMD_STORAGE_LIST => { &CFGDEF_INTERNAL => true, &CFGDEF_LOG_FILE => false, &CFGDEF_LOG_LEVEL_DEFAULT => DEBUG, &CFGDEF_PARAMETER_ALLOWED => true, }, &CFGCMD_VERSION => { &CFGDEF_LOG_FILE => false, &CFGDEF_LOG_LEVEL_DEFAULT => DEBUG, }, }; #################################################################################################################################### # Option definition data #################################################################################################################################### my %hConfigDefine = ( # Command-line only options #------------------------------------------------------------------------------------------------------------------------------- &CFGOPT_CONFIG => { &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_DEFAULT => CFGDEF_DEFAULT_CONFIG, &CFGDEF_NEGATE => true, &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_EXPIRE => {}, &CFGCMD_INFO => {}, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_START => {}, &CFGCMD_STOP => {}, &CFGCMD_STORAGE_LIST => {}, } }, &CFGOPT_CONFIG_INCLUDE_PATH => { &CFGDEF_TYPE => CFGDEF_TYPE_PATH, &CFGDEF_INHERIT => CFGOPT_CONFIG, &CFGDEF_DEFAULT => CFGDEF_DEFAULT_CONFIG_INCLUDE_PATH, &CFGDEF_NEGATE => false, }, &CFGOPT_CONFIG_PATH => { &CFGDEF_TYPE => CFGDEF_TYPE_PATH, &CFGDEF_INHERIT => CFGOPT_CONFIG, &CFGDEF_DEFAULT => CFGDEF_DEFAULT_CONFIG_PATH, &CFGDEF_NEGATE => false, }, &CFGOPT_FORCE => { &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => { &CFGDEF_DEFAULT => false, &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_ONLINE, &CFGDEF_DEPEND_LIST => [false], }, }, &CFGCMD_RESTORE => { &CFGDEF_DEFAULT => false, }, &CFGCMD_STANZA_CREATE => { &CFGDEF_DEFAULT => false, &CFGDEF_INTERNAL => true, }, &CFGCMD_STANZA_DELETE => { &CFGDEF_DEFAULT => false, }, &CFGCMD_STOP => { &CFGDEF_DEFAULT => false } } }, &CFGOPT_ONLINE => { &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_NEGATE => true, &CFGDEF_DEFAULT => true, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_UPGRADE => {}, } }, &CFGOPT_SET => { &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_COMMAND => { &CFGCMD_RESTORE => { &CFGDEF_DEFAULT => 'latest', }, &CFGCMD_INFO => { &CFGDEF_REQUIRED => false, &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_STANZA, }, }, } }, &CFGOPT_STANZA => { &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_EXPIRE => {}, &CFGCMD_INFO => { &CFGDEF_REQUIRED => false }, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_START => { &CFGDEF_REQUIRED => false }, &CFGCMD_STOP => { &CFGDEF_REQUIRED => false } } }, &CFGOPT_TARGET => { &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_COMMAND => { &CFGCMD_RESTORE => { &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_TYPE, &CFGDEF_DEPEND_LIST => [ &CFGOPTVAL_RESTORE_TYPE_NAME, &CFGOPTVAL_RESTORE_TYPE_TIME, &CFGOPTVAL_RESTORE_TYPE_XID, ], }, }, }, }, &CFGOPT_TARGET_EXCLUSIVE => { &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_COMMAND => { &CFGCMD_RESTORE => { &CFGDEF_DEFAULT => false, &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_TYPE, &CFGDEF_DEPEND_LIST => [ &CFGOPTVAL_RESTORE_TYPE_TIME, &CFGOPTVAL_RESTORE_TYPE_XID, ], }, }, }, }, &CFGOPT_TARGET_ACTION => { &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_COMMAND => { &CFGCMD_RESTORE => { &CFGDEF_DEFAULT => CFGOPTVAL_RESTORE_TARGET_ACTION_PAUSE, &CFGDEF_ALLOW_LIST => [ &CFGOPTVAL_RESTORE_TARGET_ACTION_PAUSE, &CFGOPTVAL_RESTORE_TARGET_ACTION_PROMOTE, &CFGOPTVAL_RESTORE_TARGET_ACTION_SHUTDOWN, ], &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_TYPE, &CFGDEF_DEPEND_LIST => [ &CFGOPTVAL_RESTORE_TYPE_IMMEDIATE, &CFGOPTVAL_RESTORE_TYPE_NAME, &CFGOPTVAL_RESTORE_TYPE_TIME, &CFGOPTVAL_RESTORE_TYPE_XID, ], }, }, }, }, &CFGOPT_TARGET_TIMELINE => { &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_COMMAND => { &CFGCMD_RESTORE => { &CFGDEF_REQUIRED => false, &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_TYPE, &CFGDEF_DEPEND_LIST => [ &CFGOPTVAL_RESTORE_TYPE_DEFAULT, &CFGOPTVAL_RESTORE_TYPE_NAME, &CFGOPTVAL_RESTORE_TYPE_STANDBY, &CFGOPTVAL_RESTORE_TYPE_TIME, &CFGOPTVAL_RESTORE_TYPE_XID, ], }, }, }, }, &CFGOPT_TYPE => { &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => { &CFGDEF_DEFAULT => CFGOPTVAL_BACKUP_TYPE_INCR, &CFGDEF_ALLOW_LIST => [ &CFGOPTVAL_BACKUP_TYPE_FULL, &CFGOPTVAL_BACKUP_TYPE_DIFF, &CFGOPTVAL_BACKUP_TYPE_INCR, ] }, &CFGCMD_RESTORE => { &CFGDEF_DEFAULT => CFGOPTVAL_RESTORE_TYPE_DEFAULT, &CFGDEF_ALLOW_LIST => [ &CFGOPTVAL_RESTORE_TYPE_NAME, &CFGOPTVAL_RESTORE_TYPE_TIME, &CFGOPTVAL_RESTORE_TYPE_XID, &CFGOPTVAL_RESTORE_TYPE_PRESERVE, &CFGOPTVAL_RESTORE_TYPE_NONE, &CFGOPTVAL_RESTORE_TYPE_IMMEDIATE, &CFGOPTVAL_RESTORE_TYPE_DEFAULT, &CFGOPTVAL_RESTORE_TYPE_STANDBY, ] } } }, &CFGOPT_OUTPUT => { &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_COMMAND => { &CFGCMD_INFO => { &CFGDEF_DEFAULT => CFGOPTVAL_OUTPUT_TEXT, &CFGDEF_ALLOW_LIST => [ &CFGOPTVAL_OUTPUT_TEXT, &CFGOPTVAL_OUTPUT_JSON, ] }, &CFGCMD_STORAGE_LIST => { &CFGDEF_DEFAULT => CFGOPTVAL_OUTPUT_TEXT, &CFGDEF_ALLOW_LIST => [ &CFGOPTVAL_OUTPUT_TEXT, &CFGOPTVAL_OUTPUT_JSON, ] } } }, # Command-line only local/remote options #------------------------------------------------------------------------------------------------------------------------------- &CFGOPT_HOST_ID => { &CFGDEF_TYPE => CFGDEF_TYPE_INTEGER, &CFGDEF_REQUIRED => false, &CFGDEF_INTERNAL => true, &CFGDEF_ALLOW_RANGE => [1, CFGDEF_INDEX_PG > CFGDEF_INDEX_REPO ? CFGDEF_INDEX_PG : CFGDEF_INDEX_REPO], &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_RESTORE => {}, }, }, &CFGOPT_PROCESS => { &CFGDEF_TYPE => CFGDEF_TYPE_INTEGER, &CFGDEF_REQUIRED => false, &CFGDEF_INTERNAL => true, &CFGDEF_ALLOW_RANGE => [0, 1024], &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_INFO => {}, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_STORAGE_LIST => {}, }, }, &CFGOPT_REMOTE_TYPE => { &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_REQUIRED => false, &CFGDEF_INTERNAL => true, &CFGDEF_ALLOW_LIST => [ &CFGOPTVAL_STORAGE_TYPE_PG, &CFGOPTVAL_STORAGE_TYPE_REPO, ], &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_INFO => {}, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_STORAGE_LIST => {}, }, }, # Command-line only storage options #------------------------------------------------------------------------------------------------------------------------------- &CFGOPT_FILTER => { &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_REQUIRED => false, &CFGDEF_COMMAND => { &CFGCMD_STORAGE_LIST => {}, } }, &CFGOPT_RECURSE => { &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_DEFAULT => false, &CFGDEF_COMMAND => { &CFGCMD_STORAGE_LIST => {}, } }, &CFGOPT_SORT => { &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_DEFAULT => 'asc', &CFGDEF_ALLOW_LIST => [ 'none', 'asc', 'desc', ], &CFGDEF_COMMAND => { &CFGCMD_STORAGE_LIST => {}, } }, # General options #------------------------------------------------------------------------------------------------------------------------------- &CFGOPT_ARCHIVE_TIMEOUT => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_FLOAT, &CFGDEF_DEFAULT => 60, &CFGDEF_ALLOW_RANGE => [WAIT_TIME_MINIMUM, 86400], &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, }, }, &CFGOPT_BUFFER_SIZE => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_SIZE, &CFGDEF_DEFAULT => COMMON_IO_BUFFER_MAX, &CFGDEF_ALLOW_LIST => [ &CFGDEF_DEFAULT_BUFFER_SIZE_MIN, &CFGDEF_DEFAULT_BUFFER_SIZE_MIN * 2, &CFGDEF_DEFAULT_BUFFER_SIZE_MIN * 4, &CFGDEF_DEFAULT_BUFFER_SIZE_MIN * 8, &CFGDEF_DEFAULT_BUFFER_SIZE_MIN * 16, &CFGDEF_DEFAULT_BUFFER_SIZE_MIN * 32, &CFGDEF_DEFAULT_BUFFER_SIZE_MIN * 64, &CFGDEF_DEFAULT_BUFFER_SIZE_MIN * 128, &CFGDEF_DEFAULT_BUFFER_SIZE_MIN * 256, &CFGDEF_DEFAULT_BUFFER_SIZE_MIN * 512, &CFGDEF_DEFAULT_BUFFER_SIZE_MIN * 1024, ], &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_EXPIRE => {}, &CFGCMD_INFO => {}, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_STORAGE_LIST => {}, } }, &CFGOPT_DB_TIMEOUT => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_FLOAT, &CFGDEF_DEFAULT => CFGDEF_DEFAULT_DB_TIMEOUT, &CFGDEF_ALLOW_RANGE => [CFGDEF_DEFAULT_DB_TIMEOUT_MIN, CFGDEF_DEFAULT_DB_TIMEOUT_MAX], &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_STORAGE_LIST => {}, } }, &CFGOPT_DELTA => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_DEFAULT => false, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => {}, &CFGCMD_RESTORE => {}, }, }, &CFGOPT_COMPRESS => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_DEFAULT => true, &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_RESTORE => {}, } }, &CFGOPT_COMPRESS_LEVEL => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_INTEGER, &CFGDEF_DEFAULT => 6, &CFGDEF_ALLOW_RANGE => [CFGDEF_DEFAULT_COMPRESS_LEVEL_MIN, CFGDEF_DEFAULT_COMPRESS_LEVEL_MAX], &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_INFO => {}, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, } }, &CFGOPT_COMPRESS_LEVEL_NETWORK => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_INTEGER, &CFGDEF_DEFAULT => 3, &CFGDEF_ALLOW_RANGE => [CFGDEF_DEFAULT_COMPRESS_LEVEL_MIN, CFGDEF_DEFAULT_COMPRESS_LEVEL_MAX], &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_INFO => {}, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_STORAGE_LIST => {}, } }, &CFGOPT_NEUTRAL_UMASK => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_DEFAULT => true, &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_EXPIRE => {}, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_START => {}, &CFGCMD_STOP => {}, &CFGCMD_STORAGE_LIST => {}, } }, &CFGOPT_CMD_SSH => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_DEFAULT => 'ssh', &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_EXPIRE => {}, &CFGCMD_INFO => {}, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_START => {}, &CFGCMD_STOP => {}, &CFGCMD_STORAGE_LIST => {}, }, }, &CFGOPT_LOCK_PATH => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_PATH, &CFGDEF_DEFAULT => '/tmp/' . PROJECT_EXE, &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_EXPIRE => {}, &CFGCMD_INFO => {}, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_START => {}, &CFGCMD_STOP => {}, }, }, &CFGOPT_LOG_PATH => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_PATH, &CFGDEF_DEFAULT => '/var/log/' . PROJECT_EXE, &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_EXPIRE => {}, &CFGCMD_INFO => {}, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_START => {}, &CFGCMD_STOP => {}, &CFGCMD_STORAGE_LIST => {}, }, }, &CFGOPT_PROTOCOL_TIMEOUT => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_FLOAT, &CFGDEF_DEFAULT => CFGDEF_DEFAULT_DB_TIMEOUT + 30, &CFGDEF_ALLOW_RANGE => [CFGDEF_DEFAULT_DB_TIMEOUT_MIN, CFGDEF_DEFAULT_DB_TIMEOUT_MAX], &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_INFO => {}, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_STORAGE_LIST => {}, } }, # Repository options #------------------------------------------------------------------------------------------------------------------------------- &CFGOPT_REPO_CIPHER_PASS => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_SECURE => true, &CFGDEF_REQUIRED => true, &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_REPO_CIPHER_TYPE, &CFGDEF_DEPEND_LIST => [CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC], }, &CFGDEF_NAME_ALT => { 'repo-cipher-pass' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => CFGOPT_REPO_TYPE, }, &CFGOPT_REPO_CIPHER_TYPE => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_DEFAULT => CFGOPTVAL_REPO_CIPHER_TYPE_NONE, &CFGDEF_ALLOW_LIST => [ &CFGOPTVAL_REPO_CIPHER_TYPE_NONE, &CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC, ], &CFGDEF_NAME_ALT => { 'repo-cipher-type' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => CFGOPT_REPO_TYPE, }, &CFGOPT_REPO_HARDLINK => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_NAME_ALT => { 'hardlink' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, &CFGDEF_DEFAULT => false, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => {}, }, }, &CFGOPT_REPO_HOST => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_REQUIRED => false, &CFGDEF_NAME_ALT => { 'backup-host' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => { &CFGDEF_INTERNAL => true, }, &CFGCMD_CHECK => {}, &CFGCMD_EXPIRE => { &CFGDEF_INTERNAL => true, }, &CFGCMD_INFO => {}, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => { &CFGDEF_INTERNAL => true, }, &CFGCMD_STANZA_DELETE => { &CFGDEF_INTERNAL => true, }, &CFGCMD_STANZA_UPGRADE => { &CFGDEF_INTERNAL => true, }, &CFGCMD_START => {}, &CFGCMD_STOP => {}, &CFGCMD_STORAGE_LIST => {}, }, }, &CFGOPT_REPO_HOST_CMD => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_REQUIRED => false, &CFGDEF_NAME_ALT => { 'backup-cmd' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_CHECK => {}, &CFGCMD_INFO => {}, &CFGCMD_RESTORE => {}, &CFGCMD_START => {}, &CFGCMD_STOP => {}, &CFGCMD_STORAGE_LIST => {}, }, &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_REPO_HOST }, }, &CFGOPT_REPO_HOST_CONFIG => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_DEFAULT => CFGDEF_DEFAULT_CONFIG, &CFGDEF_NAME_ALT => { 'backup-config' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => CFGOPT_REPO_HOST_CMD, &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_REPO_HOST }, }, &CFGOPT_REPO_HOST_CONFIG_PATH => { &CFGDEF_TYPE => CFGDEF_TYPE_PATH, &CFGDEF_INHERIT => CFGOPT_REPO_HOST_CONFIG, &CFGDEF_DEFAULT => CFGDEF_DEFAULT_CONFIG_PATH, }, &CFGOPT_REPO_HOST_CONFIG_INCLUDE_PATH => { &CFGDEF_TYPE => CFGDEF_TYPE_PATH, &CFGDEF_INHERIT => CFGOPT_REPO_HOST_CONFIG, &CFGDEF_DEFAULT => CFGDEF_DEFAULT_CONFIG_INCLUDE_PATH, }, &CFGOPT_REPO_HOST_PORT => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_INTEGER, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_ALLOW_RANGE => [CFGDEF_DEFAULT_PROTOCOL_PORT_MIN, CFGDEF_DEFAULT_PROTOCOL_PORT_MAX], &CFGDEF_REQUIRED => false, &CFGDEF_NAME_ALT => { 'backup-ssh-port' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => CFGOPT_REPO_HOST_CMD, &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_REPO_HOST } }, &CFGOPT_REPO_HOST_USER => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_DEFAULT => PROJECT_EXE, &CFGDEF_NAME_ALT => { 'backup-user' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => CFGOPT_REPO_HOST_CMD, &CFGDEF_REQUIRED => false, &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_REPO_HOST } }, &CFGOPT_REPO_PATH => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_PATH, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_DEFAULT => '/var/lib/' . PROJECT_EXE, &CFGDEF_NAME_ALT => { 'repo-path' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => CFGOPT_REPO_TYPE, }, &CFGOPT_REPO_RETENTION_ARCHIVE => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_INTEGER, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_REQUIRED => false, &CFGDEF_ALLOW_RANGE => [CFGDEF_DEFAULT_RETENTION_MIN, CFGDEF_DEFAULT_RETENTION_MAX], &CFGDEF_NAME_ALT => { 'retention-archive' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => {}, &CFGCMD_EXPIRE => {}, } }, &CFGOPT_REPO_RETENTION_ARCHIVE_TYPE => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_DEFAULT => CFGOPTVAL_BACKUP_TYPE_FULL, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => {}, &CFGCMD_EXPIRE => {}, }, &CFGDEF_NAME_ALT => { 'retention-archive-type' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, &CFGDEF_ALLOW_LIST => [ &CFGOPTVAL_BACKUP_TYPE_FULL, &CFGOPTVAL_BACKUP_TYPE_DIFF, &CFGOPTVAL_BACKUP_TYPE_INCR, ] }, &CFGOPT_REPO_RETENTION_DIFF => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_INTEGER, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_REQUIRED => false, &CFGDEF_ALLOW_RANGE => [CFGDEF_DEFAULT_RETENTION_MIN, CFGDEF_DEFAULT_RETENTION_MAX], &CFGDEF_NAME_ALT => { 'retention-diff' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => {}, &CFGCMD_EXPIRE => {}, } }, &CFGOPT_REPO_RETENTION_FULL => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_INTEGER, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_REQUIRED => false, &CFGDEF_ALLOW_RANGE => [CFGDEF_DEFAULT_RETENTION_MIN, CFGDEF_DEFAULT_RETENTION_MAX], &CFGDEF_NAME_ALT => { 'retention-full' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => {}, &CFGCMD_EXPIRE => {}, } }, &CFGOPT_REPO_S3_BUCKET => { &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_REPO_TYPE, &CFGDEF_DEPEND_LIST => [CFGOPTVAL_REPO_TYPE_S3], }, &CFGDEF_NAME_ALT => { 'repo-s3-bucket' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => CFGOPT_REPO_TYPE, }, &CFGOPT_REPO_S3_CA_FILE => { &CFGDEF_INHERIT => CFGOPT_REPO_S3_HOST, &CFGDEF_NAME_ALT => { 'repo-s3-ca-file' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, }, &CFGOPT_REPO_S3_CA_PATH => { &CFGDEF_TYPE => CFGDEF_TYPE_PATH, &CFGDEF_INHERIT => CFGOPT_REPO_S3_HOST, &CFGDEF_NAME_ALT => { 'repo-s3-ca-path' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, }, &CFGOPT_REPO_S3_KEY => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_SECURE => true, &CFGDEF_REQUIRED => true, &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_REPO_TYPE, &CFGDEF_DEPEND_LIST => [CFGOPTVAL_REPO_TYPE_S3], }, &CFGDEF_NAME_ALT => { 'repo-s3-key' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_EXPIRE => {}, &CFGCMD_INFO => {}, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_START => {}, &CFGCMD_STOP => {}, &CFGCMD_STORAGE_LIST => {}, }, }, &CFGOPT_REPO_S3_KEY_SECRET => { &CFGDEF_INHERIT => CFGOPT_REPO_S3_KEY, &CFGDEF_NAME_ALT => { 'repo-s3-key-secret' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, }, &CFGOPT_REPO_S3_ENDPOINT => { &CFGDEF_INHERIT => CFGOPT_REPO_S3_BUCKET, &CFGDEF_NAME_ALT => { 'repo-s3-endpoint' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, }, &CFGOPT_REPO_S3_HOST => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_REQUIRED => false, &CFGDEF_DEPEND => CFGOPT_REPO_S3_BUCKET, &CFGDEF_NAME_ALT => { 'repo-s3-host' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => CFGOPT_REPO_TYPE, }, &CFGOPT_REPO_S3_PORT => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_INTEGER, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_DEFAULT => 443, &CFGDEF_ALLOW_RANGE => [1, 65535], &CFGDEF_DEPEND => CFGOPT_REPO_S3_BUCKET, &CFGDEF_COMMAND => CFGOPT_REPO_TYPE, }, &CFGOPT_REPO_S3_REGION, { &CFGDEF_INHERIT => CFGOPT_REPO_S3_BUCKET, &CFGDEF_NAME_ALT => { 'repo-s3-region' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, }, &CFGOPT_REPO_S3_TOKEN => { &CFGDEF_INHERIT => CFGOPT_REPO_S3_KEY, &CFGDEF_REQUIRED => false, &CFGDEF_COMMAND => CFGOPT_REPO_TYPE, }, &CFGOPT_REPO_S3_URI_STYLE => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_DEFAULT => CFGOPTVAL_REPO_S3_URI_STYLE_HOST, &CFGDEF_ALLOW_LIST => [ &CFGOPTVAL_REPO_S3_URI_STYLE_HOST, &CFGOPTVAL_REPO_S3_URI_STYLE_PATH, ], &CFGDEF_COMMAND => CFGOPT_REPO_TYPE, &CFGDEF_DEPEND => CFGOPT_REPO_S3_BUCKET, }, &CFGOPT_REPO_S3_VERIFY_TLS => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_DEFAULT => true, &CFGDEF_NAME_ALT => { 'repo-s3-verify-ssl' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, 'repo?-s3-verify-ssl' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => CFGOPT_REPO_TYPE, &CFGDEF_DEPEND => CFGOPT_REPO_S3_BUCKET, }, &CFGOPT_REPO_TYPE => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_PREFIX => CFGDEF_PREFIX_REPO, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_REPO, &CFGDEF_DEFAULT => CFGOPTVAL_REPO_TYPE_POSIX, &CFGDEF_ALLOW_LIST => [ &CFGOPTVAL_REPO_TYPE_CIFS, &CFGOPTVAL_REPO_TYPE_POSIX, &CFGOPTVAL_REPO_TYPE_S3, ], &CFGDEF_NAME_ALT => { 'repo-type' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_EXPIRE => {}, &CFGCMD_INFO => {}, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_START => {}, &CFGCMD_STOP => {}, &CFGCMD_STORAGE_LIST => {}, }, }, &CFGOPT_SPOOL_PATH => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_PATH, &CFGDEF_DEFAULT => '/var/spool/' . PROJECT_EXE, &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => { &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_ARCHIVE_ASYNC, &CFGDEF_DEPEND_LIST => [true], }, }, &CFGCMD_ARCHIVE_PUSH => { &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_ARCHIVE_ASYNC, &CFGDEF_DEPEND_LIST => [true], }, }, }, }, &CFGOPT_PROCESS_MAX => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_INTEGER, &CFGDEF_DEFAULT => 1, &CFGDEF_ALLOW_RANGE => [1, 999], &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_RESTORE => {}, } }, # Logging options #------------------------------------------------------------------------------------------------------------------------------- &CFGOPT_LOG_LEVEL_CONSOLE => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_DEFAULT => lc(WARN), &CFGDEF_ALLOW_LIST => [ lc(OFF), lc(ERROR), lc(WARN), lc(INFO), lc(DETAIL), lc(DEBUG), lc(TRACE), ], &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_EXPIRE => {}, &CFGCMD_INFO => {}, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_START => {}, &CFGCMD_STOP => {}, &CFGCMD_STORAGE_LIST => {}, } }, &CFGOPT_LOG_LEVEL_FILE => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_DEFAULT => lc(INFO), &CFGDEF_ALLOW_LIST => CFGOPT_LOG_LEVEL_CONSOLE, &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_EXPIRE => {}, &CFGCMD_INFO => {}, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_START => {}, &CFGCMD_STOP => {}, &CFGCMD_STORAGE_LIST => {}, } }, &CFGOPT_LOG_LEVEL_STDERR => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_DEFAULT => lc(WARN), &CFGDEF_ALLOW_LIST => CFGOPT_LOG_LEVEL_CONSOLE, &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_EXPIRE => {}, &CFGCMD_INFO => {}, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_START => {}, &CFGCMD_STOP => {}, &CFGCMD_STORAGE_LIST => {}, } }, &CFGOPT_LOG_SUBPROCESS => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_DEFAULT => false, &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_EXPIRE => {}, &CFGCMD_INFO => {}, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_START => {}, &CFGCMD_STOP => {}, &CFGCMD_STORAGE_LIST => {}, } }, &CFGOPT_LOG_TIMESTAMP => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_DEFAULT => true, &CFGDEF_COMMAND => CFGOPT_LOG_LEVEL_CONSOLE, }, # Archive options #------------------------------------------------------------------------------------------------------------------------------- &CFGOPT_ARCHIVE_ASYNC => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_DEFAULT => false, &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_PUSH => {}, } }, &CFGOPT_ARCHIVE_PUSH_QUEUE_MAX => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_SIZE, &CFGDEF_REQUIRED => false, &CFGDEF_NAME_ALT => { 'archive-queue-max' => {}, }, &CFGDEF_ALLOW_RANGE => [0, 4 * 1024 * 1024 * 1024 * 1024 * 1024], # 0-4PB &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_PUSH => {}, }, }, &CFGOPT_ARCHIVE_GET_QUEUE_MAX => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_SIZE, &CFGDEF_DEFAULT => 128 * 1024 * 1024, # 128MB &CFGDEF_ALLOW_RANGE => [0, 4 * 1024 * 1024 * 1024 * 1024 * 1024], # 0-4PB &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => {}, }, }, # Backup options #------------------------------------------------------------------------------------------------------------------------------- &CFGOPT_ARCHIVE_CHECK => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_DEFAULT => true, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => { &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_ONLINE, &CFGDEF_DEPEND_LIST => [true], }, }, &CFGCMD_CHECK => {}, }, }, &CFGOPT_ARCHIVE_COPY => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_DEFAULT => false, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => { &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_ARCHIVE_CHECK, &CFGDEF_DEPEND_LIST => [true], } } } }, &CFGOPT_BACKUP_STANDBY => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_DEFAULT => false, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_UPGRADE => {}, }, }, &CFGOPT_CHECKSUM_PAGE => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_REQUIRED => false, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => {}, } }, &CFGOPT_EXCLUDE => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_LIST, &CFGDEF_REQUIRED => false, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => {}, }, }, &CFGOPT_MANIFEST_SAVE_THRESHOLD => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_SIZE, &CFGDEF_DEFAULT => 1 * 1024 * 1024 * 1024, &CFGDEF_ALLOW_RANGE => [1, 1024 * 1024 * 1024 * 1024], # 1-1TB &CFGDEF_COMMAND => { &CFGCMD_BACKUP => {}, } }, &CFGOPT_RESUME => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_DEFAULT => true, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => {}, } }, &CFGOPT_START_FAST => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_DEFAULT => false, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => {}, } }, &CFGOPT_STOP_AUTO => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_DEFAULT => false, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => {}, } }, # Restore options #------------------------------------------------------------------------------------------------------------------------------- &CFGOPT_DB_INCLUDE => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_LIST, &CFGDEF_REQUIRED => false, &CFGDEF_COMMAND => { &CFGCMD_RESTORE => {}, }, }, &CFGOPT_LINK_ALL => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_DEFAULT => false, &CFGDEF_COMMAND => { &CFGCMD_RESTORE => {}, } }, &CFGOPT_LINK_MAP => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_HASH, &CFGDEF_REQUIRED => false, &CFGDEF_COMMAND => { &CFGCMD_RESTORE => {}, }, }, &CFGOPT_TABLESPACE_MAP_ALL => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_REQUIRED => false, &CFGDEF_COMMAND => { &CFGCMD_RESTORE => {}, } }, &CFGOPT_TABLESPACE_MAP => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_HASH, &CFGDEF_REQUIRED => false, &CFGDEF_COMMAND => { &CFGCMD_RESTORE => {}, }, }, &CFGOPT_RECOVERY_OPTION => { &CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL, &CFGDEF_TYPE => CFGDEF_TYPE_HASH, &CFGDEF_REQUIRED => false, &CFGDEF_COMMAND => { &CFGCMD_RESTORE => {}, }, &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_TYPE, &CFGDEF_DEPEND_LIST => [ &CFGOPTVAL_RESTORE_TYPE_DEFAULT, &CFGOPTVAL_RESTORE_TYPE_IMMEDIATE, &CFGOPTVAL_RESTORE_TYPE_NAME, &CFGOPTVAL_RESTORE_TYPE_TIME, &CFGOPTVAL_RESTORE_TYPE_STANDBY, &CFGOPTVAL_RESTORE_TYPE_XID, ], }, }, # Stanza options #------------------------------------------------------------------------------------------------------------------------------- &CFGOPT_PG_HOST => { &CFGDEF_SECTION => CFGDEF_SECTION_STANZA, &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_PREFIX => CFGDEF_PREFIX_PG, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_PG, &CFGDEF_REQUIRED => false, &CFGDEF_NAME_ALT => { 'db-host' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, 'db?-host' => {&CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => { &CFGDEF_INTERNAL => true, }, &CFGCMD_ARCHIVE_PUSH => { &CFGDEF_INTERNAL => true, }, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_EXPIRE => {}, &CFGCMD_RESTORE => { &CFGDEF_INTERNAL => true, }, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_START => {}, &CFGCMD_STOP => {}, }, }, &CFGOPT_PG_HOST_CMD => { &CFGDEF_SECTION => CFGDEF_SECTION_STANZA, &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_PREFIX => CFGDEF_PREFIX_PG, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_PG, &CFGDEF_REQUIRED => false, &CFGDEF_NAME_ALT => { 'db-cmd' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, 'db?-cmd' => {&CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_EXPIRE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, &CFGCMD_START => {}, &CFGCMD_STOP => {}, }, &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_PG_HOST }, }, &CFGOPT_PG_HOST_CONFIG => { &CFGDEF_INHERIT => CFGOPT_PG_HOST_CMD, &CFGDEF_DEFAULT => CFGDEF_DEFAULT_CONFIG, &CFGDEF_REQUIRED => true, &CFGDEF_NAME_ALT => { 'db-config' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, 'db?-config' => {&CFGDEF_RESET => false}, }, }, &CFGOPT_PG_HOST_CONFIG_PATH => { &CFGDEF_TYPE => CFGDEF_TYPE_PATH, &CFGDEF_INHERIT => CFGOPT_PG_HOST_CMD, &CFGDEF_DEFAULT => CFGDEF_DEFAULT_CONFIG_PATH, }, &CFGOPT_PG_HOST_CONFIG_INCLUDE_PATH => { &CFGDEF_TYPE => CFGDEF_TYPE_PATH, &CFGDEF_INHERIT => CFGOPT_PG_HOST_CMD, &CFGDEF_DEFAULT => CFGDEF_DEFAULT_CONFIG_INCLUDE_PATH, }, &CFGOPT_PG_HOST_PORT => { &CFGDEF_INHERIT => CFGOPT_PG_HOST_CMD, &CFGDEF_TYPE => CFGDEF_TYPE_INTEGER, &CFGDEF_REQUIRED => false, &CFGDEF_ALLOW_RANGE => [CFGDEF_DEFAULT_PROTOCOL_PORT_MIN, CFGDEF_DEFAULT_PROTOCOL_PORT_MAX], &CFGDEF_NAME_ALT => { 'db-ssh-port' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, 'db?-ssh-port' => {&CFGDEF_RESET => false}, }, }, &CFGOPT_PG_HOST_USER => { &CFGDEF_INHERIT => CFGOPT_PG_HOST_CMD, &CFGDEF_DEFAULT => 'postgres', &CFGDEF_NAME_ALT => { 'db-user' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, 'db?-user' => {&CFGDEF_RESET => false}, }, &CFGDEF_REQUIRED => false, }, &CFGOPT_PG_PATH => { &CFGDEF_SECTION => CFGDEF_SECTION_STANZA, &CFGDEF_TYPE => CFGDEF_TYPE_PATH, &CFGDEF_PREFIX => CFGDEF_PREFIX_PG, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_PG, &CFGDEF_REQUIRED => true, &CFGDEF_NAME_ALT => { 'db-path' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, 'db?-path' => {&CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => { &CFGCMD_ARCHIVE_GET => { &CFGDEF_REQUIRED => false }, &CFGCMD_ARCHIVE_PUSH => { &CFGDEF_REQUIRED => false }, &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_RESTORE => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, }, }, &CFGOPT_PG_PORT => { &CFGDEF_SECTION => CFGDEF_SECTION_STANZA, &CFGDEF_TYPE => CFGDEF_TYPE_INTEGER, &CFGDEF_PREFIX => CFGDEF_PREFIX_PG, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_PG, &CFGDEF_DEFAULT => 5432, &CFGDEF_ALLOW_RANGE => [CFGDEF_DEFAULT_PROTOCOL_PORT_MIN, CFGDEF_DEFAULT_PROTOCOL_PORT_MAX], &CFGDEF_NAME_ALT => { 'db-port' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, 'db?-port' => {&CFGDEF_RESET => false}, }, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, }, &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_PG_PATH }, }, &CFGOPT_PG_SOCKET_PATH => { &CFGDEF_INHERIT => CFGOPT_PG_PORT, &CFGDEF_TYPE => CFGDEF_TYPE_PATH, &CFGDEF_DEFAULT => undef, &CFGDEF_REQUIRED => false, &CFGDEF_NAME_ALT => { 'db-socket-path' => {&CFGDEF_INDEX => 1, &CFGDEF_RESET => false}, 'db?-socket-path' => {&CFGDEF_RESET => false}, }, }, &CFGOPT_PG_USER => { &CFGDEF_SECTION => CFGDEF_SECTION_STANZA, &CFGDEF_TYPE => CFGDEF_TYPE_STRING, &CFGDEF_PREFIX => CFGDEF_PREFIX_PG, &CFGDEF_INDEX_TOTAL => CFGDEF_INDEX_PG, &CFGDEF_REQUIRED => false, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => {}, &CFGCMD_CHECK => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_DELETE => {}, &CFGCMD_STANZA_UPGRADE => {}, }, &CFGDEF_DEPEND => { &CFGDEF_DEPEND_OPTION => CFGOPT_PG_PATH }, }, ); #################################################################################################################################### # Process command define defaults #################################################################################################################################### foreach my $strCommand (sort(keys(%{$rhCommandDefine}))) { # Commands are external by default if (!defined($rhCommandDefine->{$strCommand}{&CFGDEF_INTERNAL})) { $rhCommandDefine->{$strCommand}{&CFGDEF_INTERNAL} = false; } # Log files are created by default if (!defined($rhCommandDefine->{$strCommand}{&CFGDEF_LOG_FILE})) { $rhCommandDefine->{$strCommand}{&CFGDEF_LOG_FILE} = true; } # Default log level is INFO if (!defined($rhCommandDefine->{$strCommand}{&CFGDEF_LOG_LEVEL_DEFAULT})) { $rhCommandDefine->{$strCommand}{&CFGDEF_LOG_LEVEL_DEFAULT} = INFO; } # Default lock required is false if (!defined($rhCommandDefine->{$strCommand}{&CFGDEF_LOCK_REQUIRED})) { $rhCommandDefine->{$strCommand}{&CFGDEF_LOCK_REQUIRED} = false; } # Default lock remote required is false if (!defined($rhCommandDefine->{$strCommand}{&CFGDEF_LOCK_REMOTE_REQUIRED})) { $rhCommandDefine->{$strCommand}{&CFGDEF_LOCK_REMOTE_REQUIRED} = false; } # Lock type must be set if a lock is required if (!defined($rhCommandDefine->{$strCommand}{&CFGDEF_LOCK_TYPE})) { # Is a lock type required? if ($rhCommandDefine->{$strCommand}{&CFGDEF_LOCK_REQUIRED}) { confess &log(ERROR, "lock type is required for command '${strCommand}'"); } $rhCommandDefine->{$strCommand}{&CFGDEF_LOCK_TYPE} = CFGDEF_LOCK_TYPE_NONE; } else { if ($rhCommandDefine->{$strCommand}{&CFGDEF_LOCK_REQUIRED} && $rhCommandDefine->{$strCommand}{&CFGDEF_LOCK_TYPE} eq CFGDEF_LOCK_TYPE_NONE) { confess &log(ERROR, "lock type is required for command '${strCommand}' and cannot be 'none'"); } } # Default parameter allowed is false if (!defined($rhCommandDefine->{$strCommand}{&CFGDEF_PARAMETER_ALLOWED})) { $rhCommandDefine->{$strCommand}{&CFGDEF_PARAMETER_ALLOWED} = false; } } #################################################################################################################################### # Process option define defaults #################################################################################################################################### foreach my $strKey (sort(keys(%hConfigDefine))) { # Error if prefix and index total are not both defined if ((defined($hConfigDefine{$strKey}{&CFGDEF_PREFIX}) && !defined($hConfigDefine{$strKey}{&CFGDEF_INDEX_TOTAL})) || (!defined($hConfigDefine{$strKey}{&CFGDEF_PREFIX}) && defined($hConfigDefine{$strKey}{&CFGDEF_INDEX_TOTAL}))) { confess &log(ASSERT, "CFGDEF_PREFIX and CFGDEF_INDEX_TOTAL must both be defined (or neither) for option '${strKey}'"); } # If the define is a scalar then copy the entire define from the referenced option if (defined($hConfigDefine{$strKey}{&CFGDEF_INHERIT})) { # Make a copy in case there are overrides that need to be applied after inheriting my $hConfigDefineOverride = dclone($hConfigDefine{$strKey}); # Copy the option being inherited from $hConfigDefine{$strKey} = dclone($hConfigDefine{$hConfigDefine{$strKey}{&CFGDEF_INHERIT}}); # No need to copy the inheritance key delete($hConfigDefine{$strKey}{&CFGDEF_INHERIT}); # It makes no sense to inherit alt names - they must be specified for each option delete($hConfigDefine{$strKey}{&CFGDEF_NAME_ALT}); # Apply overrides foreach my $strOptionDef (sort(keys(%{$hConfigDefineOverride}))) { $hConfigDefine{$strKey}{$strOptionDef} = $hConfigDefineOverride->{$strOptionDef}; } } # If the command section is a scalar then copy the section from the referenced option if (defined($hConfigDefine{$strKey}{&CFGDEF_COMMAND}) && !ref($hConfigDefine{$strKey}{&CFGDEF_COMMAND})) { $hConfigDefine{$strKey}{&CFGDEF_COMMAND} = dclone($hConfigDefine{$hConfigDefine{$strKey}{&CFGDEF_COMMAND}}{&CFGDEF_COMMAND}); } # If the required section is a scalar then copy the section from the referenced option if (defined($hConfigDefine{$strKey}{&CFGDEF_DEPEND}) && !ref($hConfigDefine{$strKey}{&CFGDEF_DEPEND})) { $hConfigDefine{$strKey}{&CFGDEF_DEPEND} = dclone($hConfigDefine{$hConfigDefine{$strKey}{&CFGDEF_DEPEND}}{&CFGDEF_DEPEND}); } # If the allow list is a scalar then copy the list from the referenced option if (defined($hConfigDefine{$strKey}{&CFGDEF_ALLOW_LIST}) && !ref($hConfigDefine{$strKey}{&CFGDEF_ALLOW_LIST})) { $hConfigDefine{$strKey}{&CFGDEF_ALLOW_LIST} = dclone($hConfigDefine{$hConfigDefine{$strKey}{&CFGDEF_ALLOW_LIST}}{&CFGDEF_ALLOW_LIST}); } # Default type is string if (!defined($hConfigDefine{$strKey}{&CFGDEF_TYPE})) { &log(ASSERT, "type is required for option '${strKey}'"); } # Default required is true if (!defined($hConfigDefine{$strKey}{&CFGDEF_REQUIRED})) { $hConfigDefine{$strKey}{&CFGDEF_REQUIRED} = true; } # Default internal is false if (!defined($hConfigDefine{$strKey}{&CFGDEF_INTERNAL})) { $hConfigDefine{$strKey}{&CFGDEF_INTERNAL} = false; } # Set index total for any option where it has not been explicitly defined if (!defined($hConfigDefine{$strKey}{&CFGDEF_INDEX_TOTAL})) { $hConfigDefine{$strKey}{&CFGDEF_INDEX_TOTAL} = 1; } # All boolean config options can be negated. Boolean command-line options must be marked for negation individually. if ($hConfigDefine{$strKey}{&CFGDEF_TYPE} eq CFGDEF_TYPE_BOOLEAN && defined($hConfigDefine{$strKey}{&CFGDEF_SECTION})) { $hConfigDefine{$strKey}{&CFGDEF_NEGATE} = true; } # Default for negation is false if (!defined($hConfigDefine{$strKey}{&CFGDEF_NEGATE})) { $hConfigDefine{$strKey}{&CFGDEF_NEGATE} = false; } # All config options can be reset if (defined($hConfigDefine{$strKey}{&CFGDEF_SECTION})) { $hConfigDefine{$strKey}{&CFGDEF_RESET} = true; } elsif (!defined($hConfigDefine{$strKey}{&CFGDEF_RESET})) { $hConfigDefine{$strKey}{&CFGDEF_RESET} = false; } # By default options are not secure if (!defined($hConfigDefine{$strKey}{&CFGDEF_SECURE})) { $hConfigDefine{$strKey}{&CFGDEF_SECURE} = false; } # Set all indices to 1 by default - this defines how many copies of any option there can be if (!defined($hConfigDefine{$strKey}{&CFGDEF_INDEX_TOTAL})) { $hConfigDefine{$strKey}{&CFGDEF_INDEX_TOTAL} = 1; } # All int and float options must have an allow range if (($hConfigDefine{$strKey}{&CFGDEF_TYPE} eq CFGDEF_TYPE_INTEGER || $hConfigDefine{$strKey}{&CFGDEF_TYPE} eq CFGDEF_TYPE_FLOAT || $hConfigDefine{$strKey}{&CFGDEF_TYPE} eq CFGDEF_TYPE_SIZE) && !(defined($hConfigDefine{$strKey}{&CFGDEF_ALLOW_RANGE}) || defined($hConfigDefine{$strKey}{&CFGDEF_ALLOW_LIST}))) { confess &log(ASSERT, "int/float option '${strKey}' must have allow range or list"); } # Ensure all commands are valid foreach my $strCommand (sort(keys(%{$hConfigDefine{$strKey}{&CFGDEF_COMMAND}}))) { if (!defined($rhCommandDefine->{$strCommand})) { confess &log(ASSERT, "invalid command '${strCommand}'"); } } } #################################################################################################################################### # Get option definition #################################################################################################################################### sub cfgDefine { return dclone(\%hConfigDefine); } push @EXPORT, qw(cfgDefine); #################################################################################################################################### # Get command definition #################################################################################################################################### sub cfgDefineCommand { return dclone($rhCommandDefine); } push @EXPORT, qw(cfgDefineCommand); #################################################################################################################################### # Get list of all commands #################################################################################################################################### sub cfgDefineCommandList { # Return sorted list return (sort(keys(%{$rhCommandDefine}))); } push @EXPORT, qw(cfgDefineCommandList); #################################################################################################################################### # Get list of all option types #################################################################################################################################### sub cfgDefineOptionTypeList { my $rhOptionTypeMap; # Get unique list of types foreach my $strOption (sort(keys(%hConfigDefine))) { my $strOptionType = $hConfigDefine{$strOption}{&CFGDEF_TYPE}; if (!defined($rhOptionTypeMap->{$strOptionType})) { $rhOptionTypeMap->{$strOptionType} = true; } }; # Return sorted list return (sort(keys(%{$rhOptionTypeMap}))); } push @EXPORT, qw(cfgDefineOptionTypeList); 1; pgbackrest-release-2.24/build/lib/pgBackRestBuild/Error/000077500000000000000000000000001362531507100231525ustar00rootroot00000000000000pgbackrest-release-2.24/build/lib/pgBackRestBuild/Error/Build.pm000066400000000000000000000107051362531507100245520ustar00rootroot00000000000000#################################################################################################################################### # Auto-Generate Error Mappings #################################################################################################################################### package pgBackRestBuild::Error::Build; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Exporter qw(import); our @EXPORT = qw(); use pgBackRestBuild::Build::Common; use pgBackRestBuild::Error::Data; use pgBackRest::Common::Log; #################################################################################################################################### # Constants #################################################################################################################################### use constant BLDLCL_FILE_DEFINE => 'error'; use constant BLDLCL_DATA_ERROR => '01-dataError'; use constant BLDLCL_DATA_ERROR_ARRAY => '01-dataErrorArray'; #################################################################################################################################### # Definitions for constants and data to build #################################################################################################################################### my $strSummary = 'Error Type Definition'; my $rhBuild = { &BLD_FILE => { &BLDLCL_FILE_DEFINE => { &BLD_SUMMARY => $strSummary, &BLD_DECLARE => { &BLDLCL_DATA_ERROR => { &BLD_SUMMARY => 'Error type declarations', }, }, &BLD_DATA => { &BLDLCL_DATA_ERROR => { &BLD_SUMMARY => 'Error type definitions', }, &BLDLCL_DATA_ERROR_ARRAY => { &BLD_SUMMARY => 'Error type array', }, }, }, }, }; #################################################################################################################################### # Build configuration constants and data #################################################################################################################################### sub buildError { # Build error list #------------------------------------------------------------------------------------------------------------------------------- my $rhErrorDefine = errorDefine(); # Order by id for the list that is id ordered my $rhErrorId = {}; foreach my $strType (sort(keys(%{$rhErrorDefine}))) { my $iCode = $rhErrorDefine->{$strType}; if (defined($rhErrorId->{$iCode})) { confess &log(ERROR, "error code ${iCode} is by '" . $rhErrorId->{$iCode} . "' and '${strType}'"); } $rhErrorId->{$iCode} = $strType; } # Output errors my $strBuildSource; foreach my $iCode (sort({sprintf("%03d", $a) cmp sprintf("%03d", $b)} keys(%{$rhErrorId}))) { my $strType = $rhErrorId->{$iCode}; $strBuildSource .= "ERROR_DECLARE(" . bldEnum("", $strType, true) . "Error);\n"; } $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_DEFINE}{&BLD_DECLARE}{&BLDLCL_DATA_ERROR}{&BLD_SOURCE} = $strBuildSource; # Output error definition data $strBuildSource = undef; foreach my $iCode (sort({sprintf("%03d", $a) cmp sprintf("%03d", $b)} keys(%{$rhErrorId}))) { my $strType = $rhErrorId->{$iCode}; $strBuildSource .= "ERROR_DEFINE(" . (' ' x (3 - length($iCode))) . "${iCode}, " . bldEnum("", $strType, true) . "Error, RuntimeError);\n"; } $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_DEFINE}{&BLD_DATA}{&BLDLCL_DATA_ERROR}{&BLD_SOURCE} = $strBuildSource; # Output error array $strBuildSource = "static const ErrorType *errorTypeList[] =\n" . "{\n"; foreach my $iCode (sort({sprintf("%03d", $a) cmp sprintf("%03d", $b)} keys(%{$rhErrorId}))) { $strBuildSource .= " &" . bldEnum("", $rhErrorId->{$iCode}, true) . "Error,\n"; } $strBuildSource .= " NULL,\n" . "};"; $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_DEFINE}{&BLD_DATA}{&BLDLCL_DATA_ERROR_ARRAY}{&BLD_SOURCE} = $strBuildSource; return $rhBuild; } push @EXPORT, qw(buildError); 1; pgbackrest-release-2.24/build/lib/pgBackRestBuild/Error/Data.pm000066400000000000000000000041621362531507100243640ustar00rootroot00000000000000#################################################################################################################################### # Error Definition Data #################################################################################################################################### package pgBackRestBuild::Error::Data; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use Storable qw(dclone); #################################################################################################################################### # Error min and max values #################################################################################################################################### use constant ERRDEF_MIN => 25; push @EXPORT, qw(ERRDEF_MIN); use constant ERRDEF_MAX => 125; push @EXPORT, qw(ERRDEF_MAX); #################################################################################################################################### # Error definition data #################################################################################################################################### my $rhErrorDefine; #################################################################################################################################### # Load error definition from YAML #################################################################################################################################### sub errorDefineLoad { my $strErrorYaml = shift; require YAML::XS; YAML::XS->import(qw(Load)); $rhErrorDefine = Load($strErrorYaml); } push @EXPORT, qw(errorDefineLoad); #################################################################################################################################### # Get error definition #################################################################################################################################### sub errorDefine { return dclone($rhErrorDefine); } push @EXPORT, qw(errorDefine); 1; pgbackrest-release-2.24/doc/000077500000000000000000000000001362531507100157545ustar00rootroot00000000000000pgbackrest-release-2.24/doc/.gitignore000066400000000000000000000000261362531507100177420ustar00rootroot00000000000000output/* doc/output/* pgbackrest-release-2.24/doc/FORMAT.md000066400000000000000000000011531362531507100172660ustar00rootroot00000000000000# Thoughts on Repository Format 6 # Info Format - Info format will be `JSON`. Something like (but without whitespace): ``` [ {"pgbackrest":{"format":6,"version":,"repo-id":,id:}}, {"content":...}, {"checksum":} ] ``` ## Manifest - Save **all** options instead of the piecemeal saves that are done now. These options are for informational purposes only so it would be fine to save them in a KeyValue or JSON blob. - Store default sections before file/link/path sections to avoid two passes on load. - Format backup labels using gmtime(). pgbackrest-release-2.24/doc/README.md000066400000000000000000000070711362531507100172400ustar00rootroot00000000000000# pgBackRest
Building Documentation ## General Builds The pgBackRest documentation can output a variety of formats and target several platforms and PostgreSQL versions. This will build all documentation with defaults: ```bash ./doc.pl ``` The user guide can be built for different platforms: `centos6`, `centos7`, and `debian`. This will build the HTML user guide for CentOS/RHEL 7: ```bash ./doc.pl --out=html --include=user-guide --var=os-type=centos7 ``` Documentation generation will build a cache of all executed statements and use the cache to build the documentation quickly if no executed statements have changed. This makes proofing text-only edits very fast, but sometimes it is useful to do a full build without using the cache: ```bash ./doc.pl --out=html --include=user-guide --var=os-type=centos6 --no-cache ``` Each `os-type` has a default container image that will be used as a base for creating hosts. For `centos6`/`centos7` these defaults are generally fine, but for `debian` it can be useful to change the image. ```bash ./doc.pl --out=html --include=user-guide --var=os-type=debian --var=os-image=debian:9 ``` The following is a sample CentOS/RHEL 7 configuration that can be used for building the documentation. ```bash # Install docker sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce sudo systemctl start docker # Install tools sudo yum install -y git wget # Install latex (for building PDF) sudo yum install -y texlive texlive-titlesec texlive-sectsty texlive-framed texlive-epstopdf ghostscript # Install Perl modules that do not have CentOS packages via CPAN sudo yum install -y yum cpanminus sudo yum groupinstall -y "Development Tools" "Development Libraries" sudo cpanm install --force XML::Checker::Parser # Add documentation test user sudo groupadd test sudo adduser -gtest -n testdoc sudo usermod -aG docker testdoc ``` ## Building with Packages A user-specified package can be used when building the documentation. Since the documentation exercises most pgBackRest functionality this is a great way to smoke-test packages. The package must be located within the pgBackRest repo and the specified path should be relative to the repository base. `test/package` is a good default path to use. Ubuntu 16.04: ```bash ./doc.pl --out=html --include=user-guide --no-cache --var=os-type=debian --var=os-image=ubuntu:16.04 --var=package=test/package/pgbackrest_2.08-0_amd64.deb ``` CentOS/RHEL 6: ```bash ./doc.pl --out=html --include=user-guide --no-cache --var=os-type=centos6 --var=package=test/package/pgbackrest-2.08-1.el6.x86_64.rpm ``` CentOS/RHEL 7: ```bash ./doc.pl --out=html --include=user-guide --no-cache --var=os-type=centos7 --var=package=test/package/pgbackrest-2.08-1.el7.x86_64.rpm ``` Packages can be built with `test.pl` using the following configuration on top of the configuration given for building the documentation. ```bash # Install recent git sudo yum remove -y git sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm sudo yum install -y git2u-all # Install Perl modules sudo yum install -y perl-ExtUtils-ParseXS perl-ExtUtils-Embed perl-ExtUtils-MakeMaker perl-YAML-LibYAML # Install dev libraries sudo yum install -y libxml2-devel openssl-devel # Add test user with sudo privileges sudo adduser -gtest -n test sudo usermod -aG docker test sudo chmod 750 /home/test sudo echo 'test ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/pgbackrest # Add pgbackrest user required by tests sudo adduser -gtest -n pgbackrest ``` pgbackrest-release-2.24/doc/RELEASE.md000066400000000000000000000070501362531507100173600ustar00rootroot00000000000000# Release Build Instructions ## Create a branch to test the release ``` git checkout -b release-ci ``` ## Update the date, version, and release title Edit the latest release in `doc/xml/release.xml`, e.g.: ``` ``` to: ``` ``` Edit version in `lib/pgBackRest/Version.pm`, e.g.: ``` use constant PROJECT_VERSION => '2.14dev'; ``` to: ``` use constant PROJECT_VERSION => '2.14'; ``` ## Build release documentation. Be sure to install latex using the instructions from the Vagrantfile before running this step. ``` doc/release.pl --build ``` ## Update code counts ``` test/test.pl --code-count ``` ## Commit release branch and push to CI for testing ``` git commit -m "Release test" git push origin release-ci ``` ## Clone web documentation into `doc/site` ``` cd doc git clone git@github.com:pgbackrest/website.git site ``` ## Deploy web documentation to `doc/site` ``` doc/release.pl --deploy ``` ## Final commit of release to integration Create release notes based on the pattern in prior git commits (this should be automated at some point), e.g. ``` v2.14: Bug Fix and Improvements Bug Fixes: * Fix segfault when process-max > 8 for archive-push/archive-get. (Reported by Jens Wilke.) Improvements: * Bypass database checks when stanza-delete issued with force. (Contributed by Cynthia Shang. Suggested by hatifnatt.) * Add configure script for improved multi-platform support. Documentation Features: * Add user guides for CentOS/RHEL 6/7. ``` Commit to integration with the above message and push to CI. ## Push to master Push release commit to master once CI testing is complete. ## Create release on github Create release notes based on pattern in prior releases (this should be automated at some point), e.g. ``` v2.14: Bug Fix and Improvements **Bug Fixes**: - Fix segfault when process-max > 8 for archive-push/archive-get. (Reported by Jens Wilke.) **Improvements**: - Bypass database checks when stanza-delete issued with force. (Contributed by Cynthia Shang. Suggested by hatifnatt.) - Add configure script for improved multi-platform support. **Documentation Features**: - Add user guides for CentOS/RHEL 6/7. ``` The first line will be the release title and the rest will be the body. The tag field should be updated with the current version so a tag is created from master. **Be sure to select the release commit explicitly rather than auto-tagging the last commit in master!** ## Push web documentation to master and deploy ``` cd doc/site git commit -m "v2.14 documentation." git push origin master ``` Deploy the documentation on `pgbackrest.org`. ## Notify packagers of new release ## Announce release on Twitter ## Prepare for the next release Add new release in `doc/xml/release.xml`, e.g.: ``` ``` Edit version in `lib/pgBackRest/Version.pm`, e.g.: ``` use constant PROJECT_VERSION => '2.14'; ``` to: ``` use constant PROJECT_VERSION => '2.15dev'; ``` Run deploy to generate git history (ctrl-c as soon as the file is generated): ``` doc/release.pl --build ``` Build to generate files and test documentation: ``` test/test.pl --vm=u18 --build-only ``` Commit and push to integration: ``` git commit -m "Begin v2.15 development." git push origin integration ``` pgbackrest-release-2.24/doc/doc.pl000077500000000000000000000313571362531507100170720ustar00rootroot00000000000000#!/usr/bin/perl #################################################################################################################################### # doc.pl - PgBackRest Doc Builder #################################################################################################################################### #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; $SIG{__DIE__} = sub { Carp::confess @_ }; use Cwd qw(abs_path); use File::Basename qw(dirname); use Getopt::Long qw(GetOptions); use Pod::Usage qw(pod2usage); use Storable; use lib dirname(abs_path($0)) . '/lib'; use lib dirname(dirname(abs_path($0))) . '/lib'; use lib dirname(dirname(abs_path($0))) . '/build/lib'; use lib dirname(dirname(abs_path($0))) . '/test/lib'; use BackRestDoc::Common::Doc; use BackRestDoc::Common::DocConfig; use BackRestDoc::Common::DocManifest; use BackRestDoc::Common::DocRender; use BackRestDoc::Html::DocHtmlSite; use BackRestDoc::Latex::DocLatex; use BackRestDoc::Markdown::DocMarkdown; use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Version; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::Storage; use pgBackRestTest::Common::StoragePosix; #################################################################################################################################### # Usage #################################################################################################################################### =head1 NAME doc.pl - Generate pgBackRest documentation =head1 SYNOPSIS doc.pl [options] General Options: --help Display usage and exit --version Display pgBackRest version --quiet Sets log level to ERROR --log-level Log level for execution (e.g. ERROR, WARN, INFO, DEBUG) --deploy Write exe.cache into resource for persistence --no-exe Should commands be executed when building help? (for testing only) --no-cache Don't use execution cache --cache-only Only use the execution cache - don't attempt to generate it --pre Pre-build containers for execute elements marked pre --var Override defined variable --key-var Override defined variable and use in cache key --doc-path Document path to render (manifest.xml should be located here) --out Output types (html, pdf, markdown) --out-preserve Don't clean output directory --require Require only certain sections of the document (to speed testing) --include Include source in generation (links will reference website) --exclude Exclude source from generation (links will reference website) Variable Options: --dev Set 'dev' variable to 'y' --debug Set 'debug' variable to 'y' =cut #################################################################################################################################### # Load command line parameters and config (see usage above for details) #################################################################################################################################### my $bHelp = false; my $bVersion = false; my $bQuiet = false; my $strLogLevel = 'info'; my $bNoExe = false; my $bNoCache = false; my $bCacheOnly = false; my $rhVariableOverride = {}; my $rhKeyVariableOverride = {}; my $strDocPath; my @stryOutput; my $bOutPreserve = false; my @stryRequire; my @stryInclude; my @stryExclude; my $bDeploy = false; my $bDev = false; my $bDebug = false; my $bPre = false; GetOptions ('help' => \$bHelp, 'version' => \$bVersion, 'quiet' => \$bQuiet, 'log-level=s' => \$strLogLevel, 'out=s@' => \@stryOutput, 'out-preserve' => \$bOutPreserve, 'require=s@' => \@stryRequire, 'include=s@' => \@stryInclude, 'exclude=s@' => \@stryExclude, 'no-exe', \$bNoExe, 'deploy', \$bDeploy, 'no-cache', \$bNoCache, 'dev', \$bDev, 'debug', \$bDebug, 'pre', \$bPre, 'cache-only', \$bCacheOnly, 'key-var=s%', $rhKeyVariableOverride, 'var=s%', $rhVariableOverride, 'doc-path=s', \$strDocPath) or pod2usage(2); #################################################################################################################################### # Run in eval block to catch errors #################################################################################################################################### eval { # Display version and exit if requested if ($bHelp || $bVersion) { print PROJECT_NAME . ' ' . PROJECT_VERSION . " Documentation Builder\n"; if ($bHelp) { print "\n"; pod2usage(); } exit 0; } # Disable cache when no exe if ($bNoExe) { $bNoCache = true; } # Make sure options are set correctly for deploy if ($bDeploy) { my $strError = 'cannot be specified for deploy'; !$bNoExe or confess "--no-exe ${strError}"; !@stryRequire or confess "--require ${strError}"; } # one --include must be specified when --required is if (@stryRequire && @stryInclude != 1) { confess "one --include is required when --require is specified"; } # Set console log level if ($bQuiet) { $strLogLevel = 'error'; } # If --dev passed then set the dev var to 'y' if ($bDev) { $rhVariableOverride->{'dev'} = 'y'; } # If --debug passed then set the debug var to 'y' if ($bDebug) { $rhVariableOverride->{'debug'} = 'y'; } # Doesn't make sense to pass include and exclude if (@stryInclude > 0 && @stryExclude > 0) { confess "cannot specify both --include and --exclude"; } logLevelSet(undef, uc($strLogLevel), OFF); # Get the base path my $strBasePath = abs_path(dirname($0)); my $oStorageDoc = new pgBackRestTest::Common::Storage( $strBasePath, new pgBackRestTest::Common::StoragePosix({bFileSync => false, bPathSync => false})); if (!defined($strDocPath)) { $strDocPath = $strBasePath; } my $strOutputPath = "${strDocPath}/output"; # Create the out path if it does not exist if (!-e $strOutputPath) { mkdir($strOutputPath) or confess &log(ERROR, "unable to create path ${strOutputPath}"); } # Merge key variables into the variable list and ensure there are no duplicates foreach my $strKey (sort(keys(%{$rhKeyVariableOverride}))) { if (defined($rhVariableOverride->{$strKey})) { confess &log(ERROR, "'${strKey}' cannot be passed as --var and --key-var"); } $rhVariableOverride->{$strKey} = $rhKeyVariableOverride->{$strKey}; } # Load the manifest my $oManifest = new BackRestDoc::Common::DocManifest( $oStorageDoc, \@stryRequire, \@stryInclude, \@stryExclude, $rhKeyVariableOverride, $rhVariableOverride, $strDocPath, $bDeploy, $bCacheOnly, $bPre); if (!$bNoCache) { $oManifest->cacheRead(); } # If no outputs were given if (@stryOutput == 0) { @stryOutput = $oManifest->renderList(); if ($oManifest->isBackRest()) { push(@stryOutput, 'man'); } } # Build host containers if (!$bCacheOnly && !$bNoExe) { foreach my $strSource ($oManifest->sourceList()) { if ((@stryInclude == 0 || grep(/$strSource/, @stryInclude)) && !grep(/$strSource/, @stryExclude)) { &log(INFO, "source $strSource"); foreach my $oHostDefine ($oManifest->sourceGet($strSource)->{doc}->nodeList('host-define', false)) { if ($oManifest->evaluateIf($oHostDefine)) { my $strImage = $oManifest->variableReplace($oHostDefine->paramGet('image')); my $strFrom = $oManifest->variableReplace($oHostDefine->paramGet('from')); my $strDockerfile = "${strOutputPath}/doc-host.dockerfile"; &log(INFO, "Build vm '${strImage}' from '${strFrom}'"); $oStorageDoc->put( $strDockerfile, "FROM ${strFrom}\n\n" . trim($oManifest->variableReplace($oHostDefine->valueGet())) . "\n"); executeTest("docker build -f ${strDockerfile} -t ${strImage} ${strBasePath}"); } } } } } # Render output for my $strOutput (@stryOutput) { if (!($strOutput eq 'man' && $oManifest->isBackRest())) { $oManifest->renderGet($strOutput); } &log(INFO, "render ${strOutput} output"); # Clean contents of out directory if (!$bOutPreserve) { my $strOutputPath = $strOutput eq 'pdf' ? "${strOutputPath}/latex" : "${strOutputPath}/$strOutput"; # Clean the current out path if it exists if (-e $strOutputPath) { executeTest("rm -rf ${strOutputPath}/*"); } # Else create the html path else { mkdir($strOutputPath) or confess &log(ERROR, "unable to create path ${strOutputPath}"); } } if ($strOutput eq 'markdown') { my $oMarkdown = new BackRestDoc::Markdown::DocMarkdown ( $oManifest, "${strBasePath}/xml", "${strOutputPath}/markdown", !$bNoExe ); $oMarkdown->process(); } elsif ($strOutput eq 'man' && $oManifest->isBackRest()) { # Generate the command-line help my $oRender = new BackRestDoc::Common::DocRender('text', $oManifest, !$bNoExe); my $oDocConfig = new BackRestDoc::Common::DocConfig( new BackRestDoc::Common::Doc("${strBasePath}/xml/reference.xml"), $oRender); $oStorageDoc->pathCreate( "${strBasePath}/output/man", {strMode => '0770', bIgnoreExists => true, bCreateParent => true}); $oStorageDoc->put("${strBasePath}/output/man/" . lc(PROJECT_NAME) . '.1.txt', $oDocConfig->manGet($oManifest)); } elsif ($strOutput eq 'html') { my $oHtmlSite = new BackRestDoc::Html::DocHtmlSite ( $oManifest, "${strBasePath}/xml", "${strOutputPath}/html", "${strBasePath}/resource/html/default.css", defined($oManifest->variableGet('project-favicon')) ? "${strBasePath}/resource/html/" . $oManifest->variableGet('project-favicon') : undef, defined($oManifest->variableGet('project-logo')) ? "${strBasePath}/resource/" . $oManifest->variableGet('project-logo') : undef, !$bNoExe ); $oHtmlSite->process(); } elsif ($strOutput eq 'pdf') { my $oLatex = new BackRestDoc::Latex::DocLatex ( $oManifest, "${strBasePath}/xml", "${strOutputPath}/latex", "${strBasePath}/resource/latex/preamble.tex", !$bNoExe ); $oLatex->process(); } } # Cache the manifest (mostly useful for testing rendering changes in the code) if (!$bNoCache && !$bCacheOnly) { $oManifest->cacheWrite(); } # Exit with success exit 0; } #################################################################################################################################### # Check for errors #################################################################################################################################### or do { # If a backrest exception then return the code exit $EVAL_ERROR->code() if (isException(\$EVAL_ERROR)); # Else output the unhandled error print $EVAL_ERROR; exit ERROR_UNHANDLED; }; # It shouldn't be possible to get here &log(ASSERT, 'execution reached invalid location in ' . __FILE__ . ', line ' . __LINE__); exit ERROR_ASSERT; pgbackrest-release-2.24/doc/example/000077500000000000000000000000001362531507100174075ustar00rootroot00000000000000pgbackrest-release-2.24/doc/example/pgsql-pgbackrest-info.sql000066400000000000000000000015131362531507100243320ustar00rootroot00000000000000-- An example of monitoring pgBackRest from within PostgreSQL -- -- Use copy to export data from the pgBackRest info command into the jsonb -- type so it can be queried directly by PostgreSQL. -- Create monitor schema create schema monitor; -- Get pgBackRest info in JSON format create function monitor.pgbackrest_info() returns jsonb AS $$ declare data jsonb; begin -- Create a temp table to hold the JSON data create temp table temp_pgbackrest_data (data jsonb); -- Copy data into the table directly from the pgBackRest info command copy temp_pgbackrest_data (data) from program 'pgbackrest --output=json info' (format text); select temp_pgbackrest_data.data into data from temp_pgbackrest_data; drop table temp_pgbackrest_data; return data; end $$ language plpgsql; pgbackrest-release-2.24/doc/example/pgsql-pgbackrest-query.sql000066400000000000000000000011401362531507100245400ustar00rootroot00000000000000-- Get last successful backup for each stanza -- -- Requires the monitor.pgbackrest_info function. with stanza as ( select data->'name' as name, data->'backup'->( jsonb_array_length(data->'backup') - 1) as last_backup, data->'archive'->( jsonb_array_length(data->'archive') - 1) as current_archive from jsonb_array_elements(monitor.pgbackrest_info()) as data ) select name, to_timestamp( (last_backup->'timestamp'->>'stop')::numeric) as last_successful_backup, current_archive->>'max' as last_archived_wal from stanza; pgbackrest-release-2.24/doc/lib/000077500000000000000000000000001362531507100165225ustar00rootroot00000000000000pgbackrest-release-2.24/doc/lib/BackRestDoc/000077500000000000000000000000001362531507100206465ustar00rootroot00000000000000pgbackrest-release-2.24/doc/lib/BackRestDoc/Common/000077500000000000000000000000001362531507100220765ustar00rootroot00000000000000pgbackrest-release-2.24/doc/lib/BackRestDoc/Common/Doc.pm000066400000000000000000000606451362531507100231540ustar00rootroot00000000000000#################################################################################################################################### # DOC MODULE #################################################################################################################################### package BackRestDoc::Common::Doc; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Cwd qw(abs_path); use File::Basename qw(dirname); use Scalar::Util qw(blessed); use XML::Checker::Parser; use pgBackRest::Common::Log; use pgBackRest::Common::String; #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Class name # Create the class hash my $self = {}; bless $self, $class; $self->{strClass} = $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{strFileName}, my $strSgmlSearchPath, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'strFileName', required => false}, {name => 'strSgmlSearchPath', required => false}, ); # Load the doc from a file if one has been defined if (defined($self->{strFileName})) { my $oParser = XML::Checker::Parser->new(ErrorContext => 2, Style => 'Tree'); $oParser->set_sgml_search_path( defined($strSgmlSearchPath) ? $strSgmlSearchPath : dirname(dirname(abs_path($0))) . '/doc/xml/dtd'); my $oTree; eval { local $XML::Checker::FAIL = sub { my $iCode = shift; die XML::Checker::error_string($iCode, @_); }; $oTree = $oParser->parsefile($self->{strFileName}); return true; } # Report any error that stopped parsing or do { my $strException = $EVAL_ERROR; $strException =~ s/at \/.*?$//s; # remove module line number die "malformed xml in '$self->{strFileName}':\n" . trim($strException); }; # Parse and build the doc $self->{oDoc} = $self->build($self->parse(${$oTree}[0], ${$oTree}[1])); } # Else create a blank doc else { $self->{oDoc} = {name => 'doc', children => []}; } $self->{strName} = 'root'; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # parse # # Parse the xml doc into a more usable hash and array structure. #################################################################################################################################### sub parse { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strName, $oyNode ) = logDebugParam ( __PACKAGE__ . '->parse', \@_, {name => 'strName', trace => true}, {name => 'oyNode', trace => true} ); my %oOut; my $iIndex = 0; my $bText = $strName eq 'text' || $strName eq 'li' || $strName eq 'p' || $strName eq 'title' || $strName eq 'summary' || $strName eq 'table-cell' || $strName eq 'table-column' || $strName eq 'list-item' || $strName eq 'admonition'; # Store the node name $oOut{name} = $strName; if (keys(%{$$oyNode[$iIndex]})) { $oOut{param} = $$oyNode[$iIndex]; } $iIndex++; # Look for strings and children while (defined($$oyNode[$iIndex])) { # Process string data if (ref(\$$oyNode[$iIndex]) eq 'SCALAR' && $$oyNode[$iIndex] eq '0') { $iIndex++; my $strBuffer = $$oyNode[$iIndex++]; # Strip tabs, CRs, and LFs $strBuffer =~ s/\t|\r//g; # If anything is left if (length($strBuffer) > 0) { # If text node then create array entries for strings if ($bText) { if (!defined($oOut{children})) { $oOut{children} = []; } push(@{$oOut{children}}, $strBuffer); } # Don't allow strings mixed with children elsif (length(trim($strBuffer)) > 0) { if (defined($oOut{children})) { confess "text mixed with children in node ${strName} (spaces count)"; } if (defined($oOut{value})) { confess "value is already defined in node ${strName} - this shouldn't happen"; } # Don't allow text mixed with $oOut{value} = $strBuffer; } } } # Process a child else { if (defined($oOut{value}) && $bText) { confess "text mixed with children in node ${strName} before child " . $$oyNode[$iIndex++] . " (spaces count)"; } if (!defined($oOut{children})) { $oOut{children} = []; } push(@{$oOut{children}}, $self->parse($$oyNode[$iIndex++], $$oyNode[$iIndex++])); } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oDoc', value => \%oOut, trace => true} ); } #################################################################################################################################### # build # # Restructure the doc to make walking it easier. #################################################################################################################################### sub build { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oDoc ) = logDebugParam ( __PACKAGE__ . '->build', \@_, {name => 'oDoc', trace => true} ); # Initialize the node object my $oOut = {name => $$oDoc{name}, children => [], value => $$oDoc{value}}; my $strError = "in node $$oDoc{name}"; # Get all params if (defined($$oDoc{param})) { for my $strParam (keys %{$$oDoc{param}}) { $$oOut{param}{$strParam} = $$oDoc{param}{$strParam}; } } if ($$oDoc{name} eq 'p' || $$oDoc{name} eq 'title' || $$oDoc{name} eq 'summary' || $$oDoc{name} eq 'table-cell' || $$oDoc{name} eq 'table-column' || $$oDoc{name} eq 'list-item' || $$oDoc{name} eq 'admonition') { $$oOut{field}{text} = $oDoc; } elsif (defined($$oDoc{children})) { for (my $iIndex = 0; $iIndex < @{$$oDoc{children}}; $iIndex++) { my $oSub = $$oDoc{children}[$iIndex]; my $strName = $$oSub{name}; if ($strName eq 'text') { $$oOut{field}{text} = $oSub; } elsif ((defined($$oSub{value}) && !defined($$oSub{param})) && $strName ne 'code-block') { $$oOut{field}{$strName} = $$oSub{value}; } elsif (!defined($$oSub{children}) && !defined($$oSub{value}) && !defined($$oSub{param})) { $$oOut{field}{$strName} = true; } else { push(@{$$oOut{children}}, $self->build($oSub)); } } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oDoc', value => $oOut, trace => true} ); } #################################################################################################################################### # nodeGetById # # Return a node by name - error if more than one exists #################################################################################################################################### sub nodeGetById { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strName, $strId, $bRequired, ) = logDebugParam ( __PACKAGE__ . 'nodeGetById', \@_, {name => 'strName', trace => true}, {name => 'strId', required => false, trace => true}, {name => 'bRequired', default => true, trace => true} ); my $oDoc = $self->{oDoc}; my $oNode; for (my $iIndex = 0; $iIndex < @{$$oDoc{children}}; $iIndex++) { if ((defined($strName) && $$oDoc{children}[$iIndex]{name} eq $strName) && (!defined($strId) || $$oDoc{children}[$iIndex]{param}{id} eq $strId)) { if (!defined($oNode)) { $oNode = $$oDoc{children}[$iIndex]; } else { confess "found more than one child ${strName} in node $$oDoc{name}"; } } } if (!defined($oNode) && $bRequired) { confess "unable to find child ${strName}" . (defined($strId) ? " (${strId})" : '') . " in node $$oDoc{name}"; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oNodeDoc', value => $self->nodeBless($oNode), trace => true} ); } #################################################################################################################################### # nodeGet # # Return a node by name - error if more than one exists #################################################################################################################################### sub nodeGet { my $self = shift; return $self->nodeGetById(shift, undef, shift); } #################################################################################################################################### # nodeTest # # Test that a node exists #################################################################################################################################### sub nodeTest { my $self = shift; return defined($self->nodeGetById(shift, undef, false)); } #################################################################################################################################### # nodeAdd # # Add a node to to the current doc's child list #################################################################################################################################### sub nodeAdd { my $self = shift; my $strName = shift; my $strValue = shift; my $oParam = shift; my $oField = shift; my $oDoc = $self->{oDoc}; my $oNode = {name => $strName, value => $strValue, param => $oParam, field => $oField}; push(@{$$oDoc{children}}, $oNode); return $self->nodeBless($oNode); } #################################################################################################################################### # nodeBless # # Make a new Doc object from a node. #################################################################################################################################### sub nodeBless { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oNode ) = logDebugParam ( __PACKAGE__ . '->nodeBless', \@_, {name => 'oNode', required => false, trace => true} ); my $oDoc; if (defined($oNode)) { $oDoc = {}; bless $oDoc, $self->{strClass}; $oDoc->{strClass} = $self->{strClass}; $oDoc->{strName} = $$oNode{name}; $oDoc->{oDoc} = $oNode; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oDoc', value => $oDoc, trace => true} ); } #################################################################################################################################### # nodeList # # Get a list of nodes. #################################################################################################################################### sub nodeList { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strName, $bRequired, ) = logDebugParam ( __PACKAGE__ . '->nodeList', \@_, {name => 'strName', required => false, trace => true}, {name => 'bRequired', default => true, trace => true}, ); my $oDoc = $self->{oDoc}; my @oyNode; if (defined($$oDoc{children})) { for (my $iIndex = 0; $iIndex < @{$$oDoc{children}}; $iIndex++) { if (!defined($strName) || $$oDoc{children}[$iIndex]{name} eq $strName) { if (ref(\$$oDoc{children}[$iIndex]) eq "SCALAR") { push(@oyNode, $$oDoc{children}[$iIndex]); } else { push(@oyNode, $self->nodeBless($$oDoc{children}[$iIndex])); } } } } if (@oyNode == 0 && $bRequired) { confess 'unable to find ' . (defined($strName) ? "children named '${strName}'" : 'any children') . " in node $$oDoc{name}"; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oyNode', value => \@oyNode, trace => true} ); } #################################################################################################################################### # nodeRemove # # Remove a child node. #################################################################################################################################### sub nodeRemove { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oChildRemove ) = logDebugParam ( __PACKAGE__ . '->nodeRemove', \@_, {name => 'oChildRemove', required => false, trace => true} ); my $bRemove = false; my $oDoc = $self->{oDoc}; # Error if there are no children if (!defined($$oDoc{children})) { confess &log(ERROR, "node has no children"); } for (my $iIndex = 0; $iIndex < @{$$oDoc{children}}; $iIndex++) { if ($$oDoc{children}[$iIndex] == $oChildRemove->{oDoc}) { splice(@{$$oDoc{children}}, $iIndex, 1); $bRemove = true; last; } } if (!$bRemove) { confess &log(ERROR, "child was not found in node, could not be removed"); } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # nodeReplace # # Replace a child node with one or more child nodes. #################################################################################################################################### sub nodeReplace { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oChildRemove, $oyChildReplace, ) = logDebugParam ( __PACKAGE__ . '->nodeReplace', \@_, {name => 'oChildRemove', trace => true}, {name => 'oChildReplace', trace => true}, ); my $bReplace = false; my $iReplaceIdx = undef; my $iReplaceTotal = undef; my $oDoc = $self->{oDoc}; # Error if there are no children if (!defined($$oDoc{children})) { confess &log(ERROR, "node has no children"); } for (my $iIndex = 0; $iIndex < @{$$oDoc{children}}; $iIndex++) { if ($$oDoc{children}[$iIndex] == $oChildRemove->{oDoc}) { splice(@{$$oDoc{children}}, $iIndex, 1); splice(@{$$oDoc{children}}, $iIndex, 0, @{$oyChildReplace}); $iReplaceIdx = $iIndex; $iReplaceTotal = scalar(@{$oyChildReplace}); $bReplace = true; last; } } if (!$bReplace) { confess &log(ERROR, "child was not found in node, could not be replaced"); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'iReplaceIdx', value => $iReplaceIdx, trace => true}, {name => 'iReplaceTotal', value => $iReplaceTotal, trace => true}, ); } #################################################################################################################################### # nameGet #################################################################################################################################### sub nameGet { my $self = shift; # Assign function parameters, defaults, and log debug info my $strOperation = logDebugParam(__PACKAGE__ . '->nameGet'); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strName', value => ${$self->{oDoc}}{name}, trace => true} ); } #################################################################################################################################### # valueGet #################################################################################################################################### sub valueGet { my $self = shift; # Assign function parameters, defaults, and log debug info my $strOperation = logDebugParam(__PACKAGE__ . '->valueGet'); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strValue', value => ${$self->{oDoc}}{value}, trace => true} ); } #################################################################################################################################### # valueSet #################################################################################################################################### sub valueSet { my $self = shift; my $strValue = shift; # Assign function parameters, defaults, and log debug info my $strOperation = logDebugParam(__PACKAGE__ . '->valueSet'); # Set the value ${$self->{oDoc}}{value} = $strValue; # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # paramGet # # Get a parameter from a node. #################################################################################################################################### sub paramGet { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strName, $bRequired, $strDefault, $strType ) = logDebugParam ( __PACKAGE__ . '->paramGet', \@_, {name => 'strName', trace => true}, {name => 'bRequired', default => true, trace => true}, {name => 'strDefault', required => false, trace => true}, {name => 'strType', default => 'param', trace => true} ); my $strValue = ${$self->{oDoc}}{$strType}{$strName}; if (!defined($strValue)) { if ($bRequired) { confess "${strType} '${strName}' is required in node '$self->{strName}'"; } $strValue = $strDefault; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strValue', value => $strValue, trace => true} ); } #################################################################################################################################### # paramTest # # Test that a parameter exists or has a certain value. #################################################################################################################################### sub paramTest { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strName, $strExpectedValue, $strType ) = logDebugParam ( __PACKAGE__ . '->paramTest', \@_, {name => 'strName', trace => true}, {name => 'strExpectedValue', required => false, trace => true}, {name => 'strType', default => 'param', trace => true} ); my $bResult = true; my $strValue = $self->paramGet($strName, false, undef, $strType); if (!defined($strValue)) { $bResult = false; } elsif (defined($strExpectedValue) && $strValue ne $strExpectedValue) { $bResult = false; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bResult', value => $bResult, trace => true} ); } #################################################################################################################################### # paramSet # # Set a parameter in a node. #################################################################################################################################### sub paramSet { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strName, $strValue, $strType ) = logDebugParam ( __PACKAGE__ . '->paramSet', \@_, {name => 'strName', trace => true}, {name => 'strValue', required => false, trace => true}, {name => 'strType', default => 'param', trace => true} ); ${$self->{oDoc}}{$strType}{$strName} = $strValue; # Return from function and log return values if any logDebugReturn($strOperation); } #################################################################################################################################### # fieldGet # # Get a field from a node. #################################################################################################################################### sub fieldGet { my $self = shift; return $self->paramGet(shift, shift, shift, 'field'); } #################################################################################################################################### # fieldTest # # Test if a field exists. #################################################################################################################################### sub fieldTest { my $self = shift; return $self->paramTest(shift, shift, 'field'); } #################################################################################################################################### # textGet # # Get a field from a node. #################################################################################################################################### sub textGet { my $self = shift; return $self->nodeBless($self->paramGet('text', shift, shift, 'field')); } #################################################################################################################################### # textSet # # Get a field from a node. #################################################################################################################################### sub textSet { my $self = shift; my $oText = shift; if (blessed($oText) && $oText->isa('BackRestDoc::Common::Doc')) { $oText = $oText->{oDoc}; } elsif (ref($oText) ne 'HASH') { $oText = {name => 'text', children => [$oText]}; } return $self->paramSet('text', $oText, 'field'); } #################################################################################################################################### # fieldSet # # Set a parameter in a node. #################################################################################################################################### sub fieldSet { my $self = shift; $self->paramSet(shift, shift, 'field'); } 1; pgbackrest-release-2.24/doc/lib/BackRestDoc/Common/DocConfig.pm000066400000000000000000001023431362531507100242720ustar00rootroot00000000000000#################################################################################################################################### # DOC CONFIG MODULE #################################################################################################################################### package BackRestDoc::Common::DocConfig; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRestBuild::Config::Data; use pgBackRest::Version; #################################################################################################################################### # Help types #################################################################################################################################### use constant CONFIG_HELP_COMMAND => 'command'; push @EXPORT, qw(CONFIG_HELP_COMMAND); use constant CONFIG_HELP_CURRENT => 'current'; use constant CONFIG_HELP_DEFAULT => 'default'; use constant CONFIG_HELP_DESCRIPTION => 'description'; push @EXPORT, qw(CONFIG_HELP_DESCRIPTION); use constant CONFIG_HELP_EXAMPLE => 'example'; use constant CONFIG_HELP_NAME => 'name'; use constant CONFIG_HELP_NAME_ALT => 'name-alt'; push @EXPORT, qw(CONFIG_HELP_NAME_ALT); use constant CONFIG_HELP_OPTION => 'option'; push @EXPORT, qw(CONFIG_HELP_OPTION); use constant CONFIG_HELP_SECTION => 'section'; push @EXPORT, qw(CONFIG_HELP_SECTION); use constant CONFIG_HELP_SUMMARY => 'summary'; push @EXPORT, qw(CONFIG_HELP_SUMMARY); use constant CONFIG_HELP_SOURCE => 'source'; push @EXPORT, qw(CONFIG_HELP_SOURCE); use constant CONFIG_HELP_SOURCE_DEFAULT => 'default'; use constant CONFIG_HELP_SOURCE_SECTION => CONFIG_HELP_SECTION; use constant CONFIG_HELP_SOURCE_COMMAND => CONFIG_HELP_COMMAND; push @EXPORT, qw(CONFIG_HELP_SOURCE_COMMAND); #################################################################################################################################### # Config Section Types #################################################################################################################################### use constant CFGDEF_COMMAND => 'command'; use constant CFGDEF_GENERAL => 'general'; use constant CFGDEF_LOG => 'log'; use constant CFGDEF_REPOSITORY => 'repository'; #################################################################################################################################### # Option define hash #################################################################################################################################### my $rhConfigDefine = cfgDefine(); #################################################################################################################################### # Returns the option defines based on the command. #################################################################################################################################### sub docConfigCommandDefine { my $strOption = shift; my $strCommand = shift; if (defined($strCommand)) { return defined($rhConfigDefine->{$strOption}{&CFGDEF_COMMAND}) && defined($rhConfigDefine->{$strOption}{&CFGDEF_COMMAND}{$strCommand}) && ref($rhConfigDefine->{$strOption}{&CFGDEF_COMMAND}{$strCommand}) eq 'HASH' ? $rhConfigDefine->{$strOption}{&CFGDEF_COMMAND}{$strCommand} : undef; } return; } #################################################################################################################################### # Does the option have a default for this command? #################################################################################################################################### sub docConfigOptionDefault { my $strOption = shift; my $strCommand = shift; # Get the command define my $oCommandDefine = docConfigCommandDefine($strOption, $strCommand); # Check for default in command my $strDefault = defined($oCommandDefine) ? $$oCommandDefine{&CFGDEF_DEFAULT} : undef; # If defined return, else try to grab the global default return defined($strDefault) ? $strDefault : $rhConfigDefine->{$strOption}{&CFGDEF_DEFAULT}; } push @EXPORT, qw(docConfigOptionDefault); #################################################################################################################################### # Get the allowed setting range for the option if it exists #################################################################################################################################### sub docConfigOptionRange { my $strOption = shift; my $strCommand = shift; # Get the command define my $oCommandDefine = docConfigCommandDefine($strOption, $strCommand); # Check for default in command if (defined($oCommandDefine) && defined($$oCommandDefine{&CFGDEF_ALLOW_RANGE})) { return $$oCommandDefine{&CFGDEF_ALLOW_RANGE}[0], $$oCommandDefine{&CFGDEF_ALLOW_RANGE}[1]; } # If defined return, else try to grab the global default return $rhConfigDefine->{$strOption}{&CFGDEF_ALLOW_RANGE}[0], $rhConfigDefine->{$strOption}{&CFGDEF_ALLOW_RANGE}[1]; } push @EXPORT, qw(docConfigOptionRange); #################################################################################################################################### # Get the option type #################################################################################################################################### sub docConfigOptionType { my $strOption = shift; return $rhConfigDefine->{$strOption}{&CFGDEF_TYPE}; } push @EXPORT, qw(docConfigOptionType); #################################################################################################################################### # Test the option type #################################################################################################################################### sub docConfigOptionTypeTest { my $strOption = shift; my $strType = shift; return docConfigOptionType($strOption) eq $strType; } push @EXPORT, qw(docConfigOptionTypeTest); #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Class name # Create the class hash my $self = {}; bless $self, $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{oDoc}, $self->{oDocRender} ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oDoc'}, {name => 'oDocRender', required => false} ); $self->process(); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # process # # Parse the xml doc into commands and options. #################################################################################################################################### sub process { my $self = shift; # Assign function parameters, defaults, and log debug info my $strOperation = logDebugParam(__PACKAGE__ . '->process'); # Iterate through all commands my $oDoc = $self->{oDoc}; my $oConfigHash = {}; foreach my $strCommand (cfgDefineCommandList()) { my $oCommandDoc = $oDoc->nodeGet('operation')->nodeGet('command-list')->nodeGetById('command', $strCommand); $$oConfigHash{&CONFIG_HELP_COMMAND}{$strCommand} = {}; my $oCommand = $$oConfigHash{&CONFIG_HELP_COMMAND}{$strCommand}; $$oCommand{&CONFIG_HELP_SUMMARY} = $oCommandDoc->nodeGet('summary')->textGet(); $$oCommand{&CONFIG_HELP_DESCRIPTION} = $oCommandDoc->textGet(); } # Iterate through all options my $oOptionDefine = cfgDefine(); foreach my $strOption (sort(keys(%{$oOptionDefine}))) { # Skip options that are internal only for all commands (test options) next if $oOptionDefine->{$strOption}{&CFGDEF_INTERNAL}; # Iterate through all commands my @stryCommandList = sort(keys(%{defined($$oOptionDefine{$strOption}{&CFGDEF_COMMAND}) ? $$oOptionDefine{$strOption}{&CFGDEF_COMMAND} : $$oConfigHash{&CONFIG_HELP_COMMAND}})); foreach my $strCommand (@stryCommandList) { if (!defined($$oConfigHash{&CONFIG_HELP_COMMAND}{$strCommand})) { next; } if (ref(\$$oOptionDefine{$strOption}{&CFGDEF_COMMAND}{$strCommand}) eq 'SCALAR' && $$oOptionDefine{$strOption}{&CFGDEF_COMMAND}{$strCommand} == false) { next; } # Skip options that are internal only for the current command next if $oOptionDefine->{$strOption}{&CFGDEF_COMMAND}{$strCommand}{&CFGDEF_INTERNAL}; my $oCommandDoc = $oDoc->nodeGet('operation')->nodeGet('command-list')->nodeGetById('command', $strCommand); # First check if the option is documented in the command my $oOptionDoc; my $strOptionSource; my $oCommandOptionList = $oCommandDoc->nodeGet('option-list', false); if (defined($oCommandOptionList)) { $oOptionDoc = $oCommandOptionList->nodeGetById('option', $strOption, false); $strOptionSource = CONFIG_HELP_SOURCE_COMMAND if (defined($oOptionDoc)); } # If the option wasn't found keep looking my $strSection; if (!defined($oOptionDoc)) { # Next see if it's documented in the section if (defined($$oOptionDefine{$strOption}{&CFGDEF_SECTION})) { # &log(INFO, " trying section ${strSection}"); foreach my $oSectionNode ($oDoc->nodeGet('config')->nodeGet('config-section-list')->nodeList()) { my $oOptionDocCheck = $oSectionNode->nodeGetById('config-key-list') ->nodeGetById('config-key', $strOption, false); if ($oOptionDocCheck) { if (defined($oOptionDoc)) { confess 'option exists in more than one section'; } $oOptionDoc = $oOptionDocCheck; $strOptionSource = CONFIG_HELP_SOURCE_SECTION; $strSection = $oSectionNode->paramGet('id'); } } } # If no section is defined then look in the default command option list else { $oOptionDoc = $oDoc->nodeGet('operation')->nodeGet('operation-general')->nodeGet('option-list') ->nodeGetById('option', $strOption, false); $strOptionSource = CONFIG_HELP_SOURCE_DEFAULT if (defined($oOptionDoc)); } } # If the option wasn't found then error if (!defined($oOptionDoc)) { confess &log(ERROR, "unable to find option '${strOption}' for command '${strCommand}'") } # if the option is documented in the command then it should be accessible from the command line only. if (!defined($strSection)) { if (defined($$oOptionDefine{$strOption}{&CFGDEF_SECTION})) { &log(ERROR, "option ${strOption} defined in command ${strCommand} must not have " . CFGDEF_SECTION . " defined"); } } # Store the option in the command $$oConfigHash{&CONFIG_HELP_COMMAND}{$strCommand}{&CONFIG_HELP_OPTION}{$strOption}{&CONFIG_HELP_SOURCE} = $strOptionSource; my $oCommandOption = $$oConfigHash{&CONFIG_HELP_COMMAND}{$strCommand}{&CONFIG_HELP_OPTION}{$strOption}; $$oCommandOption{&CONFIG_HELP_SUMMARY} = $oOptionDoc->nodeGet('summary')->textGet(); $$oCommandOption{&CONFIG_HELP_DESCRIPTION} = $oOptionDoc->textGet(); $$oCommandOption{&CONFIG_HELP_EXAMPLE} = $oOptionDoc->fieldGet('example'); $$oCommandOption{&CONFIG_HELP_NAME} = $oOptionDoc->paramGet('name'); # Generate a list of alternate names if (defined($rhConfigDefine->{$strOption}{&CFGDEF_NAME_ALT})) { my $rhNameAlt = {}; foreach my $strNameAlt (sort(keys(%{$rhConfigDefine->{$strOption}{&CFGDEF_NAME_ALT}}))) { $strNameAlt =~ s/\?//g; if ($strNameAlt ne $strOption) { $rhNameAlt->{$strNameAlt} = true; } } my @stryNameAlt = sort(keys(%{$rhNameAlt})); if (@stryNameAlt > 0) { if (@stryNameAlt != 1) { confess &log( ERROR, "multiple alt names are not supported for option '${strOption}': " . join(', ', @stryNameAlt)); } $oCommandOption->{&CONFIG_HELP_NAME_ALT} = \@stryNameAlt; } } # If the option did not come from the command also store in global option list. This prevents duplication of commonly # used options. if ($strOptionSource ne CONFIG_HELP_SOURCE_COMMAND) { $$oConfigHash{&CONFIG_HELP_OPTION}{$strOption}{&CONFIG_HELP_SUMMARY} = $$oCommandOption{&CONFIG_HELP_SUMMARY}; my $oOption = $$oConfigHash{&CONFIG_HELP_OPTION}{$strOption}; if (defined($strSection)) { $$oOption{&CONFIG_HELP_SECTION} = $strSection; } $$oOption{&CONFIG_HELP_NAME} = $oOptionDoc->paramGet('name'); $oOption->{&CONFIG_HELP_NAME_ALT} = $oCommandOption->{&CONFIG_HELP_NAME_ALT}; $$oOption{&CONFIG_HELP_DESCRIPTION} = $$oCommandOption{&CONFIG_HELP_DESCRIPTION}; $$oOption{&CONFIG_HELP_EXAMPLE} = $oOptionDoc->fieldGet('example'); } } } # Store the config hash $self->{oConfigHash} = $oConfigHash; # Return from function and log return values if any logDebugReturn($strOperation); } #################################################################################################################################### # manGet # # Generate the man page. #################################################################################################################################### sub manGet { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oManifest ) = logDebugParam ( __PACKAGE__ . '->manGet', \@_, {name => 'oManifest'} ); # Get index.xml to pull various text from my $oIndexDoc = ${$oManifest->sourceGet('index')}{doc}; # Write the header my $strManPage = "NAME\n" . ' ' . PROJECT_NAME . ' - ' . $oManifest->variableReplace($oIndexDoc->paramGet('subtitle')) . "\n\n" . "SYNOPSIS\n" . ' ' . PROJECT_EXE . ' [options] [command]'; # Output the description (first two paragraphs of index.xml introduction) my $iParaTotal = 0; $strManPage .= "\n\n" . "DESCRIPTION"; foreach my $oPara ($oIndexDoc->nodeGetById('section', 'introduction')->nodeList('p')) { $strManPage .= ($iParaTotal == 0 ? "\n" : "\n\n") . ' ' . manGetFormatText($oManifest->variableReplace($self->{oDocRender}->processText($oPara->textGet())), 80, 2); last; } # Build command and config hashes my $hConfigDefine = cfgDefine(); my $hConfig = $self->{oConfigHash}; my $hCommandList = {}; my $iCommandMaxLen = 0; my $hOptionList = {}; my $iOptionMaxLen = 0; foreach my $strCommand (sort(keys(%{$$hConfig{&CONFIG_HELP_COMMAND}}))) { my $hCommand = $$hConfig{&CONFIG_HELP_COMMAND}{$strCommand}; $iCommandMaxLen = length($strCommand) > $iCommandMaxLen ? length($strCommand) : $iCommandMaxLen; $$hCommandList{$strCommand}{summary} = $$hCommand{&CONFIG_HELP_SUMMARY}; if (defined($$hCommand{&CONFIG_HELP_OPTION})) { foreach my $strOption (sort(keys(%{$$hCommand{&CONFIG_HELP_OPTION}}))) { my $hOption = $$hCommand{&CONFIG_HELP_OPTION}{$strOption}; if ($$hOption{&CONFIG_HELP_SOURCE} eq CONFIG_HELP_SOURCE_COMMAND) { $iOptionMaxLen = length($strOption) > $iOptionMaxLen ? length($strOption) : $iOptionMaxLen; $$hOptionList{$strCommand}{$strOption}{&CONFIG_HELP_SUMMARY} = $$hOption{&CONFIG_HELP_SUMMARY}; } } } } foreach my $strOption (sort(keys(%{$$hConfig{&CONFIG_HELP_OPTION}}))) { my $hOption = $$hConfig{&CONFIG_HELP_OPTION}{$strOption}; $iOptionMaxLen = length($strOption) > $iOptionMaxLen ? length($strOption) : $iOptionMaxLen; my $strSection = defined($$hOption{&CONFIG_HELP_SECTION}) ? $$hOption{&CONFIG_HELP_SECTION} : CFGDEF_GENERAL; $$hOptionList{$strSection}{$strOption}{&CONFIG_HELP_SUMMARY} = $$hOption{&CONFIG_HELP_SUMMARY}; } # Output Commands $strManPage .= "\n\n" . 'COMMANDS'; foreach my $strCommand (sort(keys(%{$hCommandList}))) { # Construct the summary my $strSummary = $oManifest->variableReplace($self->{oDocRender}->processText($$hCommandList{$strCommand}{summary})); # $strSummary = lcfirst(substr($strSummary, 0, length($strSummary) - 1)); # Output the summary $strManPage .= "\n " . "${strCommand}" . (' ' x ($iCommandMaxLen - length($strCommand))) . ' ' . manGetFormatText($strSummary, 80, $iCommandMaxLen + 4); } # Output options my $bFirst = true; $strManPage .= "\n\n" . 'OPTIONS'; foreach my $strSection (sort(keys(%{$hOptionList}))) { $strManPage .= ($bFirst ?'' : "\n") . "\n " . ucfirst($strSection) . ' Options:'; foreach my $strOption (sort(keys(%{$$hOptionList{$strSection}}))) { my $hOption = $$hOptionList{$strSection}{$strOption}; # Construct the default my $strCommand = grep(/$strSection/i, cfgDefineCommandList()) ? $strSection : undef; my $strDefault = docConfigOptionDefault($strOption, $strCommand); if (defined($strDefault)) { if ($strOption eq CFGOPT_REPO_HOST_CMD || $strOption eq CFGOPT_PG_HOST_CMD) { $strDefault = PROJECT_EXE; } elsif ($$hConfigDefine{$strOption}{&CFGDEF_TYPE} eq &CFGDEF_TYPE_BOOLEAN) { $strDefault = $strDefault ? 'y' : 'n'; } } # # use Data::Dumper; confess Dumper($$hOption{&CONFIG_HELP_SUMMARY}); # Construct the summary my $strSummary = $oManifest->variableReplace($self->{oDocRender}->processText($$hOption{&CONFIG_HELP_SUMMARY})); $strSummary = $strSummary . (defined($strDefault) ? " [default=${strDefault}]" : ''); # Output the summary $strManPage .= "\n " . "--${strOption}" . (' ' x ($iOptionMaxLen - length($strOption))) . ' ' . manGetFormatText($strSummary, 80, $iOptionMaxLen + 8); } $bFirst = false; } # Write files, examples, and references $strManPage .= "\n\n" . "FILES\n" . "\n" . ' ' . docConfigOptionDefault(CFGOPT_CONFIG) . "\n" . ' ' . docConfigOptionDefault(CFGOPT_REPO_PATH) . "\n" . ' ' . docConfigOptionDefault(CFGOPT_LOG_PATH) . "\n" . ' ' . docConfigOptionDefault(CFGOPT_SPOOL_PATH) . "\n" . ' ' . docConfigOptionDefault(CFGOPT_LOCK_PATH) . "\n" . "\n" . "EXAMPLES\n" . "\n" . " * Create a backup of the PostgreSQL `main` cluster:\n" . "\n" . ' $ ' . PROJECT_EXE . ' --' . CFGOPT_STANZA . "=main backup\n" . "\n" . ' The `main` cluster should be configured in `' . docConfigOptionDefault(CFGOPT_CONFIG) . "`\n" . "\n" . " * Show all available backups:\n" . "\n" . ' $ ' . PROJECT_EXE . ' ' . CFGCMD_INFO . "\n" . "\n" . " * Show all available backups for a specific cluster:\n" . "\n" . ' $ ' . PROJECT_EXE . ' --' . CFGOPT_STANZA . '=main ' . CFGCMD_INFO . "\n" . "\n" . " * Show backup specific options:\n" . "\n" . ' $ ' . PROJECT_EXE . ' ' . CFGCMD_HELP . ' ' . CFGCMD_BACKUP . "\n" . "\n" . "SEE ALSO\n" . "\n" . ' /usr/share/doc/' . PROJECT_EXE . "-doc/html/index.html\n" . ' ' . $oManifest->variableReplace('{[backrest-url-base]}') . "\n"; return $strManPage; } # Helper function for manGet() used to format text by indenting and splitting sub manGetFormatText { my $strLine = shift; my $iLength = shift; my $iIndentRest = shift; my $strPart; my $strResult; my $bFirst = true; do { my $iIndent = $bFirst ? 0 : $iIndentRest; ($strPart, $strLine) = stringSplit($strLine, ' ', $iLength - $iIndentRest); $strResult .= ($bFirst ? '' : "\n") . (' ' x $iIndent) . trim($strPart); $bFirst = false; } while (defined($strLine)); return $strResult; } #################################################################################################################################### # helpConfigDocGet # # Get the xml for configuration help. #################################################################################################################################### sub helpConfigDocGet { my $self = shift; # Assign function parameters, defaults, and log debug info my $strOperation = logDebugParam(__PACKAGE__ . '->helpConfigDocGet'); # Build a hash of the sections my $oConfigHash = $self->{oConfigHash}; my $oConfigDoc = $self->{oDoc}->nodeGet('config'); my $oSectionHash = {}; foreach my $strOption (sort(keys(%{$$oConfigHash{&CONFIG_HELP_OPTION}}))) { my $oOption = $$oConfigHash{&CONFIG_HELP_OPTION}{$strOption}; if (defined($$oOption{&CONFIG_HELP_SECTION})) { $$oSectionHash{$$oOption{&CONFIG_HELP_SECTION}}{$strOption} = true; } } my $oDoc = new BackRestDoc::Common::Doc(); $oDoc->paramSet('title', $oConfigDoc->paramGet('title')); # set the description for use as a meta tag $oDoc->fieldSet('description', $oConfigDoc->fieldGet('description')); # Output the introduction my $oIntroSectionDoc = $oDoc->nodeAdd('section', undef, {id => 'introduction'}); $oIntroSectionDoc->nodeAdd('title')->textSet('Introduction'); $oIntroSectionDoc->textSet($oConfigDoc->textGet()); foreach my $strSection (sort(keys(%{$oSectionHash}))) { my $oSectionElement = $oDoc->nodeAdd('section', undef, {id => "section-${strSection}"}); my $oSectionDoc = $oConfigDoc->nodeGet('config-section-list')->nodeGetById('config-section', $strSection); # Set the summary text for the section $oSectionElement->textSet($oSectionDoc->textGet()); $oSectionElement-> nodeAdd('title')->textSet( {name => 'text', children=> [$oSectionDoc->paramGet('name') . ' Options (', {name => 'id', value => $strSection}, ')']}); foreach my $strOption (sort(keys(%{$$oSectionHash{$strSection}}))) { $self->helpOptionGet(undef, $strOption, $oSectionElement, $$oConfigHash{&CONFIG_HELP_OPTION}{$strOption}); } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oDoc', value => $oDoc} ); } #################################################################################################################################### # helpCommandDocGet # # Get the xml for command help. #################################################################################################################################### sub helpCommandDocGet { my $self = shift; # Assign function parameters, defaults, and log debug info my $strOperation = logDebugParam(__PACKAGE__ . '->helpCommandDocGet'); # Working variables my $oConfigHash = $self->{oConfigHash}; my $oOperationDoc = $self->{oDoc}->nodeGet('operation'); my $oOptionDefine = cfgDefine(); my $oDoc = new BackRestDoc::Common::Doc(); $oDoc->paramSet('title', $oOperationDoc->paramGet('title')); # set the description for use as a meta tag $oDoc->fieldSet('description', $oOperationDoc->fieldGet('description')); # Output the introduction my $oIntroSectionDoc = $oDoc->nodeAdd('section', undef, {id => 'introduction'}); $oIntroSectionDoc->nodeAdd('title')->textSet('Introduction'); $oIntroSectionDoc->textSet($oOperationDoc->textGet()); foreach my $strCommand (sort(keys(%{$$oConfigHash{&CONFIG_HELP_COMMAND}}))) { my $oCommandHash = $$oConfigHash{&CONFIG_HELP_COMMAND}{$strCommand}; my $oSectionElement = $oDoc->nodeAdd('section', undef, {id => "command-${strCommand}"}); my $oCommandDoc = $oOperationDoc->nodeGet('command-list')->nodeGetById('command', $strCommand); $oSectionElement-> nodeAdd('title')->textSet( {name => 'text', children=> [$oCommandDoc->paramGet('name') . ' Command (', {name => 'id', value => $strCommand}, ')']}); $oSectionElement->textSet($$oCommandHash{&CONFIG_HELP_DESCRIPTION}); # use Data::doc; # confess Dumper($oDoc->{oDoc}); if (defined($$oCommandHash{&CONFIG_HELP_OPTION})) { my $oCategory = {}; foreach my $strOption (sort(keys(%{$$oCommandHash{&CONFIG_HELP_OPTION}}))) { # Skip secure options that can't be defined on the command line next if ($rhConfigDefine->{$strOption}{&CFGDEF_SECURE}); my ($oOption, $strCategory) = helpCommandDocGetOptionFind($oConfigHash, $oOptionDefine, $strCommand, $strOption); $$oCategory{$strCategory}{$strOption} = $oOption; } # Iterate sections foreach my $strCategory (sort(keys(%{$oCategory}))) { my $oOptionListElement = $oSectionElement->nodeAdd( 'section', undef, {id => "category-${strCategory}", toc => 'n'}); $oOptionListElement-> nodeAdd('title')->textSet(ucfirst($strCategory) . ' Options'); # Iterate options foreach my $strOption (sort(keys(%{$$oCategory{$strCategory}}))) { $self->helpOptionGet($strCommand, $strOption, $oOptionListElement, $$oCommandHash{&CONFIG_HELP_OPTION}{$strOption}); } } } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oDoc', value => $oDoc} ); } # Helper function for helpCommandDocGet() to find options. The option may be stored with the command or in the option list depending # on whether it's generic or command-specific sub helpCommandDocGetOptionFind { my $oConfigHelpData = shift; my $oOptionDefine = shift; my $strCommand = shift; my $strOption = shift; my $strSection = CONFIG_HELP_COMMAND; my $oOption = $$oConfigHelpData{&CONFIG_HELP_COMMAND}{$strCommand}{&CONFIG_HELP_OPTION}{$strOption}; if ($$oOption{&CONFIG_HELP_SOURCE} eq CONFIG_HELP_SOURCE_DEFAULT) { $strSection = CFGDEF_GENERAL; } elsif ($$oOption{&CONFIG_HELP_SOURCE} eq CONFIG_HELP_SOURCE_SECTION) { $oOption = $$oConfigHelpData{&CONFIG_HELP_OPTION}{$strOption}; if (defined($$oOption{&CONFIG_HELP_SECTION}) && $strSection ne $strCommand) { $strSection = $$oOption{&CONFIG_HELP_SECTION}; } if (($strSection ne CFGDEF_GENERAL && $strSection ne CFGDEF_LOG && $strSection ne CFGDEF_REPOSITORY && $strSection ne CFGDEF_SECTION_STANZA) || $strSection eq $strCommand) { $strSection = CONFIG_HELP_COMMAND; } } return $oOption, $strSection; } #################################################################################################################################### # helpOptionGet # # Get the xml for an option. #################################################################################################################################### sub helpOptionGet { my $self = shift; my $strCommand = shift; my $strOption = shift; my $oParentElement = shift; my $oOptionHash = shift; # Create the option section my $oOptionElement = $oParentElement->nodeAdd( 'section', undef, {id => "option-${strOption}", toc => defined($strCommand) ? 'n' : 'y'}); # Set the option section title $oOptionElement-> nodeAdd('title')->textSet( {name => 'text', children=> [$$oOptionHash{&CONFIG_HELP_NAME} . ' Option (', {name => 'id', value => "--${strOption}"}, ')']}); # Add the option summary and description $oOptionElement-> nodeAdd('p')->textSet($$oOptionHash{&CONFIG_HELP_SUMMARY}); $oOptionElement-> nodeAdd('p')->textSet($$oOptionHash{&CONFIG_HELP_DESCRIPTION}); # Get the default value (or required=n if there is no default) my $strCodeBlock; if (defined(docConfigOptionDefault($strOption, $strCommand))) { my $strDefault; if ($strOption eq CFGOPT_REPO_HOST_CMD || $strOption eq CFGOPT_PG_HOST_CMD) { $strDefault = '[INSTALL-PATH]/' . PROJECT_EXE; } else { if (docConfigOptionTypeTest($strOption, CFGDEF_TYPE_BOOLEAN)) { $strDefault = docConfigOptionDefault($strOption, $strCommand) ? 'y' : 'n'; } else { $strDefault = docConfigOptionDefault($strOption, $strCommand); } } $strCodeBlock = "default: ${strDefault}"; } # This won't work correctly until there is some notion of dependency # elsif (optionRequired($strOption, $strCommand)) # { # $strCodeBlock = 'required: y'; # } # Get the allowed range if it exists my ($strRangeMin, $strRangeMax) = docConfigOptionRange($strOption, $strCommand); if (defined($strRangeMin)) { $strCodeBlock .= (defined($strCodeBlock) ? "\n" : '') . "allowed: ${strRangeMin}-${strRangeMax}"; } # Get the example my $strExample; my $strOptionPrefix = $rhConfigDefine->{$strOption}{&CFGDEF_PREFIX}; my $strOptionIndex = defined($strOptionPrefix) ? "${strOptionPrefix}1-" . substr($strOption, length($strOptionPrefix) + 1) : $strOption; if (defined($strCommand)) { if (docConfigOptionTypeTest($strOption, CFGDEF_TYPE_BOOLEAN)) { if ($$oOptionHash{&CONFIG_HELP_EXAMPLE} ne 'n' && $$oOptionHash{&CONFIG_HELP_EXAMPLE} ne 'y') { confess &log(ERROR, "option ${strOption} example should be boolean but value is: " . $$oOptionHash{&CONFIG_HELP_EXAMPLE}); } $strExample = '--' . ($$oOptionHash{&CONFIG_HELP_EXAMPLE} eq 'n' ? 'no-' : '') . $strOptionIndex; } else { $strExample = "--${strOptionIndex}=" . $$oOptionHash{&CONFIG_HELP_EXAMPLE}; } } else { $strExample = "${strOptionIndex}=" . $$oOptionHash{&CONFIG_HELP_EXAMPLE}; } $strCodeBlock .= (defined($strCodeBlock) ? "\n" : '') . "example: ${strExample}"; $oOptionElement-> nodeAdd('code-block')->valueSet($strCodeBlock); # Output deprecated names if (defined($oOptionHash->{&CONFIG_HELP_NAME_ALT})) { my $strCaption = 'Deprecated Name' . (@{$oOptionHash->{&CONFIG_HELP_NAME_ALT}} > 1 ? 's' : ''); $oOptionElement-> nodeAdd('p')->textSet("${strCaption}: " . join(', ', @{$oOptionHash->{&CONFIG_HELP_NAME_ALT}})); } } 1; pgbackrest-release-2.24/doc/lib/BackRestDoc/Common/DocExecute.pm000066400000000000000000001201331362531507100244640ustar00rootroot00000000000000#################################################################################################################################### # DOC EXECUTE MODULE #################################################################################################################################### package BackRestDoc::Common::DocExecute; use parent 'BackRestDoc::Common::DocRender'; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Cwd qw(abs_path); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use Storable qw(dclone); use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Version; use pgBackRestBuild::Config::Data; use BackRestDoc::Common::DocManifest; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::HostTest; use pgBackRestTest::Common::HostGroupTest; #################################################################################################################################### # User that's building the docs #################################################################################################################################### use constant DOC_USER => getpwuid($UID) eq 'root' ? 'ubuntu' : getpwuid($UID) . ''; #################################################################################################################################### # Generate indexed defines #################################################################################################################################### my $rhConfigDefineIndex = cfgDefine(); foreach my $strKey (sort(keys(%{$rhConfigDefineIndex}))) { # Build options for all possible db configurations if (defined($rhConfigDefineIndex->{$strKey}{&CFGDEF_PREFIX}) && $rhConfigDefineIndex->{$strKey}{&CFGDEF_PREFIX} eq CFGDEF_PREFIX_PG) { my $strPrefix = $rhConfigDefineIndex->{$strKey}{&CFGDEF_PREFIX}; for (my $iIndex = 1; $iIndex <= CFGDEF_INDEX_PG; $iIndex++) { my $strKeyNew = "${strPrefix}${iIndex}" . substr($strKey, length($strPrefix)); $rhConfigDefineIndex->{$strKeyNew} = dclone($rhConfigDefineIndex->{$strKey}); $rhConfigDefineIndex->{$strKeyNew}{&CFGDEF_INDEX_TOTAL} = CFGDEF_INDEX_PG; $rhConfigDefineIndex->{$strKeyNew}{&CFGDEF_INDEX} = $iIndex - 1; # Options indexed > 1 are never required if ($iIndex != 1) { $rhConfigDefineIndex->{$strKeyNew}{&CFGDEF_REQUIRED} = false; } if (defined($rhConfigDefineIndex->{$strKeyNew}{&CFGDEF_DEPEND}) && defined($rhConfigDefineIndex->{$strKeyNew}{&CFGDEF_DEPEND}{&CFGDEF_DEPEND_OPTION})) { $rhConfigDefineIndex->{$strKeyNew}{&CFGDEF_DEPEND}{&CFGDEF_DEPEND_OPTION} = "${strPrefix}${iIndex}" . substr( $rhConfigDefineIndex->{$strKeyNew}{&CFGDEF_DEPEND}{&CFGDEF_DEPEND_OPTION}, length($strPrefix)); } } delete($rhConfigDefineIndex->{$strKey}); } else { $rhConfigDefineIndex->{$strKey}{&CFGDEF_INDEX} = 0; } } #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Class name # Assign function parameters, defaults, and log debug info my ( $strOperation, $strType, $oManifest, $strRenderOutKey, $bExe ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'strType'}, {name => 'oManifest'}, {name => 'strRenderOutKey'}, {name => 'bExe'} ); # Create the class hash my $self = $class->SUPER::new($strType, $oManifest, $bExe, $strRenderOutKey); bless $self, $class; if (defined($self->{oSource}{hyCache})) { $self->{bCache} = true; $self->{iCacheIdx} = 0; } else { $self->{bCache} = false; } $self->{bExe} = $bExe; $self->{iCmdLineLen} = $self->{oDoc}->paramGet('cmd-line-len', false, 80); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # executeKey # # Get a unique key for the execution step to determine if the cache is valid. #################################################################################################################################### sub executeKey { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strHostName, $oCommand, ) = logDebugParam ( __PACKAGE__ . '->executeKey', \@_, {name => 'strHostName', trace => true}, {name => 'oCommand', trace => true}, ); # Add user to command my $bUserForce = $oCommand->paramTest('user-force', 'y') ? true : false; my $strCommand = $self->{oManifest}->variableReplace(trim($oCommand->fieldGet('exe-cmd'))); my $strUser = $self->{oManifest}->variableReplace($oCommand->paramGet('user', false, DOC_USER)); $strCommand = ($strUser eq DOC_USER || $bUserForce ? '' : ('sudo ' . ($strUser eq 'root' ? '' : "-u $strUser "))) . $strCommand; # Format and split command $strCommand =~ s/[ ]*\n[ ]*/ \\\n /smg; $strCommand =~ s/ \\\@ \\//smg; my @stryCommand = split("\n", $strCommand); my $hCacheKey = { host => $strHostName, cmd => \@stryCommand, output => JSON::PP::false, }; $$hCacheKey{'run-as-user'} = $bUserForce ? $strUser : undef; if (defined($oCommand->fieldGet('exe-cmd-extra', false))) { $$hCacheKey{'cmd-extra'} = $oCommand->fieldGet('exe-cmd-extra'); } if (defined($oCommand->paramGet('err-expect', false))) { $$hCacheKey{'err-expect'} = $oCommand->paramGet('err-expect'); } if ($oCommand->paramTest('output', 'y') || $oCommand->paramTest('show', 'y') || $oCommand->paramTest('variable-key')) { $$hCacheKey{'output'} = JSON::PP::true; } $$hCacheKey{'load-env'} = $oCommand->paramTest('load-env', 'n') ? JSON::PP::false : JSON::PP::true; $$hCacheKey{'bash-wrap'} = $oCommand->paramTest('bash-wrap', 'n') ? JSON::PP::false : JSON::PP::true; if (defined($oCommand->fieldGet('exe-highlight', false))) { $$hCacheKey{'output'} = JSON::PP::true; $$hCacheKey{highlight}{'filter'} = $oCommand->paramTest('filter', 'n') ? JSON::PP::false : JSON::PP::true; $$hCacheKey{highlight}{'filter-context'} = $oCommand->paramGet('filter-context', false, 2); my @stryHighlight; $stryHighlight[0] = $self->{oManifest}->variableReplace($oCommand->fieldGet('exe-highlight')); $$hCacheKey{highlight}{list} = \@stryHighlight; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'hExecuteKey', value => $hCacheKey, trace => true} ); } #################################################################################################################################### # execute #################################################################################################################################### sub execute { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oSection, $strHostName, $oCommand, $iIndent, $bCache, $bShow, ) = logDebugParam ( __PACKAGE__ . '->execute', \@_, {name => 'oSection'}, {name => 'strHostName'}, {name => 'oCommand'}, {name => 'iIndent', optional => true, default => 1}, {name => 'bCache', optional => true, default => true}, {name => 'bShow', optional => true, default => true}, ); # Working variables my $hCacheKey = $self->executeKey($strHostName, $oCommand); my $strCommand = join("\n", @{$$hCacheKey{cmd}}); my $strOutput; if ($bShow && $self->{bExe} && $self->isRequired($oSection)) { # Make sure that no lines are greater than 80 chars foreach my $strLine (split("\n", $strCommand)) { if (length(trim($strLine)) > $self->{iCmdLineLen}) { confess &log(ERROR, "command has a line > $self->{iCmdLineLen} characters:\n${strCommand}\noffending line: ${strLine}"); } } } &log(DEBUG, (' ' x $iIndent) . "execute: $strCommand"); if ($self->{oManifest}->variableReplace($oCommand->paramGet('skip', false, 'n')) ne 'y') { if ($self->{bExe} && $self->isRequired($oSection)) { my ($bCacheHit, $strCacheType, $hCacheKey, $hCacheValue) = $self->cachePop('exe', $hCacheKey); if ($bCacheHit) { $strOutput = defined($$hCacheValue{output}) ? join("\n", @{$$hCacheValue{output}}) : undef; } else { # Check that the host is valid my $oHost = $self->{host}{$strHostName}; if (!defined($oHost)) { confess &log(ERROR, "cannot execute on host ${strHostName} because the host does not exist"); } my $oExec = $oHost->execute( $strCommand . (defined($$hCacheKey{'cmd-extra'}) ? ' ' . $$hCacheKey{'cmd-extra'} : ''), {iExpectedExitStatus => $$hCacheKey{'err-expect'}, bSuppressError => $oCommand->paramTest('err-suppress', 'y'), iRetrySeconds => $oCommand->paramGet('retry', false)}, $hCacheKey->{'run-as-user'}, {bLoadEnv => $hCacheKey->{'load-env'}, bBashWrap => $hCacheKey->{'bash-wrap'}}); $oExec->begin(); $oExec->end(); if (defined($oExec->{strOutLog}) && $oExec->{strOutLog} ne '') { $strOutput = $oExec->{strOutLog}; # Trim off extra linefeeds before and after $strOutput =~ s/^\n+|\n$//g; } if (defined($$hCacheKey{'err-expect'}) && defined($oExec->{strErrorLog}) && $oExec->{strErrorLog} ne '') { $strOutput .= $oExec->{strErrorLog}; } if ($$hCacheKey{output} && defined($$hCacheKey{highlight}) && $$hCacheKey{highlight}{filter} && defined($strOutput)) { my $strHighLight = @{$$hCacheKey{highlight}{list}}[0]; if (!defined($strHighLight)) { confess &log(ERROR, 'filter requires highlight definition: ' . $strCommand); } my $iFilterContext = $$hCacheKey{highlight}{'filter-context'}; my @stryOutput = split("\n", $strOutput); undef($strOutput); # my $iFiltered = 0; my $iLastOutput = -1; for (my $iIndex = 0; $iIndex < @stryOutput; $iIndex++) { if ($stryOutput[$iIndex] =~ /$strHighLight/) { # Determine the first line to output my $iFilterFirst = $iIndex - $iFilterContext; # Don't go past the beginning $iFilterFirst = $iFilterFirst < 0 ? 0 : $iFilterFirst; # Don't repeat lines that have already been output $iFilterFirst = $iFilterFirst <= $iLastOutput ? $iLastOutput + 1 : $iFilterFirst; # Determine the last line to output my $iFilterLast = $iIndex + $iFilterContext; # Don't got past the end $iFilterLast = $iFilterLast >= @stryOutput ? @stryOutput -1 : $iFilterLast; # Mark filtered lines if any if ($iFilterFirst > $iLastOutput + 1) { my $iFiltered = $iFilterFirst - ($iLastOutput + 1); if ($iFiltered > 1) { $strOutput .= (defined($strOutput) ? "\n" : '') . " [filtered ${iFiltered} lines of output]"; } else { $iFilterFirst -= 1; } } # Output the lines for (my $iOutputIndex = $iFilterFirst; $iOutputIndex <= $iFilterLast; $iOutputIndex++) { $strOutput .= (defined($strOutput) ? "\n" : '') . $stryOutput[$iOutputIndex]; } $iLastOutput = $iFilterLast; } } if (@stryOutput - 1 > $iLastOutput + 1) { my $iFiltered = (@stryOutput - 1) - ($iLastOutput + 1); if ($iFiltered > 1) { $strOutput .= (defined($strOutput) ? "\n" : '') . " [filtered ${iFiltered} lines of output]"; } else { $strOutput .= (defined($strOutput) ? "\n" : '') . $stryOutput[-1]; } } } if (!$$hCacheKey{output}) { $strOutput = undef; } if (defined($strOutput)) { my @stryOutput = split("\n", $strOutput); $$hCacheValue{output} = \@stryOutput; } if ($bCache) { $self->cachePush($strCacheType, $hCacheKey, $hCacheValue); } } # Output is assigned to a var if ($oCommand->paramTest('variable-key')) { $self->{oManifest}->variableSet($oCommand->paramGet('variable-key'), trim($strOutput), true); } } elsif ($$hCacheKey{output}) { $strOutput = 'Output suppressed for testing'; } } # Default variable output when it was not set by execution if ($oCommand->paramTest('variable-key') && !defined($self->{oManifest}->variableGet($oCommand->paramGet('variable-key')))) { $self->{oManifest}->variableSet($oCommand->paramGet('variable-key'), '[Test Variable]', true); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strCommand', value => $strCommand, trace => true}, {name => 'strOutput', value => $strOutput, trace => true} ); } #################################################################################################################################### # configKey #################################################################################################################################### sub configKey { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oConfig, ) = logDebugParam ( __PACKAGE__ . '->hostKey', \@_, {name => 'oConfig', trace => true}, ); my $hCacheKey = { host => $self->{oManifest}->variableReplace($oConfig->paramGet('host')), file => $self->{oManifest}->variableReplace($oConfig->paramGet('file')), }; if ($oConfig->paramTest('reset', 'y')) { $$hCacheKey{reset} = JSON::PP::true; } # Add all options to the key my $strOptionTag = $oConfig->nameGet() eq 'backrest-config' ? 'backrest-config-option' : 'postgres-config-option'; foreach my $oOption ($oConfig->nodeList($strOptionTag)) { my $hOption = {}; if ($oOption->paramTest('remove', 'y')) { $$hOption{remove} = JSON::PP::true; } if (defined($oOption->valueGet(false))) { $$hOption{value} = $self->{oManifest}->variableReplace($oOption->valueGet()); } my $strKey = $self->{oManifest}->variableReplace($oOption->paramGet('key')); if ($oConfig->nameGet() eq 'backrest-config') { my $strSection = $self->{oManifest}->variableReplace($oOption->paramGet('section')); $$hCacheKey{option}{$strSection}{$strKey} = $hOption; } else { $$hCacheKey{option}{$strKey} = $hOption; } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'hCacheKey', value => $hCacheKey, trace => true} ); } #################################################################################################################################### # backrestConfig #################################################################################################################################### sub backrestConfig { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oSection, $oConfig, $iDepth ) = logDebugParam ( __PACKAGE__ . '->backrestConfig', \@_, {name => 'oSection'}, {name => 'oConfig'}, {name => 'iDepth'} ); # Working variables my $hCacheKey = $self->configKey($oConfig); my $strFile = $$hCacheKey{file}; my $strConfig = undef; &log(DEBUG, (' ' x $iDepth) . 'process backrest config: ' . $$hCacheKey{file}); if ($self->{bExe} && $self->isRequired($oSection)) { # Load module dynamically require pgBackRest::Common::Ini; pgBackRest::Common::Ini->import(); my ($bCacheHit, $strCacheType, $hCacheKey, $hCacheValue) = $self->cachePop('cfg-' . PROJECT_EXE, $hCacheKey); if ($bCacheHit) { $strConfig = defined($$hCacheValue{config}) ? join("\n", @{$$hCacheValue{config}}) : undef; } else { # Check that the host is valid my $strHostName = $self->{oManifest}->variableReplace($oConfig->paramGet('host')); my $oHost = $self->{host}{$strHostName}; if (!defined($oHost)) { confess &log(ERROR, "cannot configure backrest on host ${strHostName} because the host does not exist"); } # Reset all options if ($oConfig->paramTest('reset', 'y')) { delete(${$self->{config}}{$strHostName}{$$hCacheKey{file}}) } foreach my $oOption ($oConfig->nodeList('backrest-config-option')) { my $strSection = $self->{oManifest}->variableReplace($oOption->paramGet('section')); my $strKey = $self->{oManifest}->variableReplace($oOption->paramGet('key')); my $strValue; if (!$oOption->paramTest('remove', 'y')) { $strValue = $self->{oManifest}->variableReplace(trim($oOption->valueGet(false))); } if (!defined($strValue)) { delete(${$self->{config}}{$strHostName}{$$hCacheKey{file}}{$strSection}{$strKey}); if (keys(%{${$self->{config}}{$strHostName}{$$hCacheKey{file}}{$strSection}}) == 0) { delete(${$self->{config}}{$strHostName}{$$hCacheKey{file}}{$strSection}); } &log(DEBUG, (' ' x ($iDepth + 1)) . "reset ${strSection}->${strKey}"); } else { # Make sure the specified option exists # ??? This is too simplistic to handle new indexed options. The check below works for now but it would be good # ??? to bring back more sophisticated checking in the future. # if (!defined($rhConfigDefineIndex->{$strKey})) # { # confess &log(ERROR, "option ${strKey} does not exist"); # } # If this option is a hash and the value is already set then append to the array if (defined($rhConfigDefineIndex->{$strKey}) && $rhConfigDefineIndex->{$strKey}{&CFGDEF_TYPE} eq CFGDEF_TYPE_HASH && defined(${$self->{config}}{$strHostName}{$$hCacheKey{file}}{$strSection}{$strKey})) { my @oValue = (); my $strHashValue = ${$self->{config}}{$strHostName}{$$hCacheKey{file}}{$strSection}{$strKey}; # If there is only one key/value if (ref(\$strHashValue) eq 'SCALAR') { push(@oValue, $strHashValue); } # Else if there is an array of values else { @oValue = @{$strHashValue}; } push(@oValue, $strValue); ${$self->{config}}{$strHostName}{$$hCacheKey{file}}{$strSection}{$strKey} = \@oValue; } # else just set the value else { ${$self->{config}}{$strHostName}{$$hCacheKey{file}}{$strSection}{$strKey} = $strValue; } &log(DEBUG, (' ' x ($iDepth + 1)) . "set ${strSection}->${strKey} = ${strValue}"); } } my $strLocalFile = '/home/' . DOC_USER . '/data/pgbackrest.conf'; # Save the ini file $self->{oManifest}->storage()->put($strLocalFile, iniRender($self->{config}{$strHostName}{$$hCacheKey{file}}, true)); $oHost->copyTo( $strLocalFile, $$hCacheKey{file}, $self->{oManifest}->variableReplace($oConfig->paramGet('owner', false, 'postgres:postgres')), '640'); # Remove the log-console-stderr option before pushing into the cache # ??? This is not very pretty and should be replaced with a general way to hide config options my $oConfigClean = dclone($self->{config}{$strHostName}{$$hCacheKey{file}}); delete($$oConfigClean{&CFGDEF_SECTION_GLOBAL}{&CFGOPT_LOG_LEVEL_STDERR}); delete($$oConfigClean{&CFGDEF_SECTION_GLOBAL}{&CFGOPT_LOG_TIMESTAMP}); if (keys(%{$$oConfigClean{&CFGDEF_SECTION_GLOBAL}}) == 0) { delete($$oConfigClean{&CFGDEF_SECTION_GLOBAL}); } $self->{oManifest}->storage()->put("${strLocalFile}.clean", iniRender($oConfigClean, true)); # Push config file into the cache $strConfig = ${$self->{oManifest}->storage()->get("${strLocalFile}.clean")}; my @stryConfig = undef; if (trim($strConfig) ne '') { @stryConfig = split("\n", $strConfig); } $$hCacheValue{config} = \@stryConfig; $self->cachePush($strCacheType, $hCacheKey, $hCacheValue); } } else { $strConfig = 'Config suppressed for testing'; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strFile', value => $strFile, trace => true}, {name => 'strConfig', value => $strConfig, trace => true}, {name => 'bShow', value => $oConfig->paramTest('show', 'n') ? false : true, trace => true} ); } #################################################################################################################################### # postgresConfig #################################################################################################################################### sub postgresConfig { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oSection, $oConfig, $iDepth ) = logDebugParam ( __PACKAGE__ . '->postgresConfig', \@_, {name => 'oSection'}, {name => 'oConfig'}, {name => 'iDepth'} ); # Working variables my $hCacheKey = $self->configKey($oConfig); my $strFile = $$hCacheKey{file}; my $strConfig; if ($self->{bExe} && $self->isRequired($oSection)) { my ($bCacheHit, $strCacheType, $hCacheKey, $hCacheValue) = $self->cachePop('cfg-postgresql', $hCacheKey); if ($bCacheHit) { $strConfig = defined($$hCacheValue{config}) ? join("\n", @{$$hCacheValue{config}}) : undef; } else { # Check that the host is valid my $strHostName = $self->{oManifest}->variableReplace($oConfig->paramGet('host')); my $oHost = $self->{host}{$strHostName}; if (!defined($oHost)) { confess &log(ERROR, "cannot configure postgres on host ${strHostName} because the host does not exist"); } my $strLocalFile = '/home/' . DOC_USER . '/data/postgresql.conf'; $oHost->copyFrom($$hCacheKey{file}, $strLocalFile); if (!defined(${$self->{'pg-config'}}{$strHostName}{$$hCacheKey{file}}{base}) && $self->{bExe}) { ${$self->{'pg-config'}}{$strHostName}{$$hCacheKey{file}}{base} = ${$self->{oManifest}->storage()->get($strLocalFile)}; } my $oConfigHash = $self->{'pg-config'}{$strHostName}{$$hCacheKey{file}}; my $oConfigHashNew; if (!defined($$oConfigHash{old})) { $oConfigHashNew = {}; $$oConfigHash{old} = {} } else { $oConfigHashNew = dclone($$oConfigHash{old}); } &log(DEBUG, (' ' x $iDepth) . 'process postgres config: ' . $$hCacheKey{file}); foreach my $oOption ($oConfig->nodeList('postgres-config-option')) { my $strKey = $oOption->paramGet('key'); my $strValue = $self->{oManifest}->variableReplace(trim($oOption->valueGet())); if ($strValue eq '') { delete($$oConfigHashNew{$strKey}); &log(DEBUG, (' ' x ($iDepth + 1)) . "reset ${strKey}"); } else { $$oConfigHashNew{$strKey} = $strValue; &log(DEBUG, (' ' x ($iDepth + 1)) . "set ${strKey} = ${strValue}"); } } # Generate config text foreach my $strKey (sort(keys(%$oConfigHashNew))) { if (defined($strConfig)) { $strConfig .= "\n"; } $strConfig .= "${strKey} = $$oConfigHashNew{$strKey}"; } # Save the conf file if ($self->{bExe}) { $self->{oManifest}->storage()->put($strLocalFile, $$oConfigHash{base} . (defined($strConfig) ? "\n# pgBackRest Configuration\n${strConfig}\n" : '')); $oHost->copyTo($strLocalFile, $$hCacheKey{file}, 'postgres:postgres', '640'); } $$oConfigHash{old} = $oConfigHashNew; my @stryConfig = undef; if (trim($strConfig) ne '') { @stryConfig = split("\n", $strConfig); } $$hCacheValue{config} = \@stryConfig; $self->cachePush($strCacheType, $hCacheKey, $hCacheValue); } } else { $strConfig = 'Config suppressed for testing'; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strFile', value => $strFile, trace => true}, {name => 'strConfig', value => $strConfig, trace => true}, {name => 'bShow', value => $oConfig->paramTest('show', 'n') ? false : true, trace => true} ); } #################################################################################################################################### # hostKey #################################################################################################################################### sub hostKey { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oHost, ) = logDebugParam ( __PACKAGE__ . '->hostKey', \@_, {name => 'oHost', trace => true}, ); my $hCacheKey = { name => $self->{oManifest}->variableReplace($oHost->paramGet('name')), image => $self->{oManifest}->variableReplace($oHost->paramGet('image')), }; if (defined($oHost->paramGet('id', false))) { $hCacheKey->{id} = $self->{oManifest}->variableReplace($oHost->paramGet('id')); } else { $hCacheKey->{id} = $hCacheKey->{name}; } if (defined($oHost->paramGet('option', false))) { $$hCacheKey{option} = $self->{oManifest}->variableReplace($oHost->paramGet('option')); } if (defined($oHost->paramGet('param', false))) { $$hCacheKey{param} = $self->{oManifest}->variableReplace($oHost->paramGet('param')); } if (defined($oHost->paramGet('os', false))) { $$hCacheKey{os} = $self->{oManifest}->variableReplace($oHost->paramGet('os')); } $$hCacheKey{'update-hosts'} = $oHost->paramTest('update-hosts', 'n') ? JSON::PP::false : JSON::PP::true; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'hCacheKey', value => $hCacheKey, trace => true} ); } #################################################################################################################################### # cachePop #################################################################################################################################### sub cachePop { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strCacheType, $hCacheKey, ) = logDebugParam ( __PACKAGE__ . '->hostKey', \@_, {name => 'strCacheType', trace => true}, {name => 'hCacheKey', trace => true}, ); my $bCacheHit = false; my $oCacheValue = undef; if ($self->{bCache}) { my $oJSON = JSON::PP->new()->canonical()->allow_nonref(); # &log(WARN, "checking cache for\ncurrent key: " . $oJSON->encode($hCacheKey)); my $hCache = ${$self->{oSource}{hyCache}}[$self->{iCacheIdx}]; if (!defined($hCache)) { confess &log(ERROR, 'unable to get index from cache', ERROR_FILE_INVALID); } if (!defined($$hCache{key})) { confess &log(ERROR, 'unable to get key from cache', ERROR_FILE_INVALID); } if (!defined($$hCache{type})) { confess &log(ERROR, 'unable to get type from cache', ERROR_FILE_INVALID); } if ($$hCache{type} ne $strCacheType) { confess &log(ERROR, 'types do not match, cache is invalid', ERROR_FILE_INVALID); } if ($oJSON->encode($$hCache{key}) ne $oJSON->encode($hCacheKey)) { confess &log(ERROR, "keys at index $self->{iCacheIdx} do not match, cache is invalid." . "\n cache key: " . $oJSON->encode($$hCache{key}) . "\ncurrent key: " . $oJSON->encode($hCacheKey), ERROR_FILE_INVALID); } $bCacheHit = true; $oCacheValue = $$hCache{value}; $self->{iCacheIdx}++; } else { if ($self->{oManifest}{bCacheOnly}) { confess &log(ERROR, 'Cache only operation forced by --cache-only option'); } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bCacheHit', value => $bCacheHit, trace => true}, {name => 'strCacheType', value => $strCacheType, trace => true}, {name => 'hCacheKey', value => $hCacheKey, trace => true}, {name => 'oCacheValue', value => $oCacheValue, trace => true}, ); } #################################################################################################################################### # cachePush #################################################################################################################################### sub cachePush { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strType, $hCacheKey, $oCacheValue, ) = logDebugParam ( __PACKAGE__ . '->hostKey', \@_, {name => 'strType', trace => true}, {name => 'hCacheKey', trace => true}, {name => 'oCacheValue', required => false, trace => true}, ); if ($self->{bCache}) { confess &log(ASSERT, "cachePush should not be called when cache is already present"); } # Create the cache entry my $hCache = { key => $hCacheKey, type => $strType, }; if (defined($oCacheValue)) { $$hCache{value} = $oCacheValue; } push @{$self->{oSource}{hyCache}}, $hCache; # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # sectionChildProcesss #################################################################################################################################### sub sectionChildProcess { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oSection, $oChild, $iDepth ) = logDebugParam ( __PACKAGE__ . '->sectionChildProcess', \@_, {name => 'oSection'}, {name => 'oChild'}, {name => 'iDepth'} ); &log(DEBUG, (' ' x ($iDepth + 1)) . 'process child: ' . $oChild->nameGet()); # Execute a command if ($oChild->nameGet() eq 'host-add') { if ($self->{bExe} && $self->isRequired($oSection)) { my ($bCacheHit, $strCacheType, $hCacheKey, $hCacheValue) = $self->cachePop('host', $self->hostKey($oChild)); if ($bCacheHit) { $self->{oManifest}->variableSet('host-' . $hCacheKey->{id} . '-ip', $hCacheValue->{ip}, true); } else { if (defined($self->{host}{$$hCacheKey{name}})) { confess &log(ERROR, 'cannot add host ${strName} because the host already exists'); } executeTest("rm -rf ~/data/$$hCacheKey{name}"); executeTest("mkdir -p ~/data/$$hCacheKey{name}/etc"); my $strHost = $hCacheKey->{name}; my $strImage = $hCacheKey->{image}; my $strHostUser = $self->{oManifest}->variableReplace($oChild->paramGet('user')); # Determine if a pre-built image should be created if (defined($self->preExecute($strHost))) { my $strPreImage = "${strImage}-${strHost}"; my $strFrom = $strImage; &log(INFO, "Build vm '${strPreImage}' from '${strFrom}'"); my $strCommandList; # Add all pre commands foreach my $oExecute ($self->preExecute($strHost)) { my $hExecuteKey = $self->executeKey($strHost, $oExecute); my $strCommand = join("\n", @{$hExecuteKey->{cmd}}) . (defined($hExecuteKey->{'cmd-extra'}) ? ' ' . $hExecuteKey->{'cmd-extra'} : ''); $strCommand =~ s/'/'\\''/g; $strCommand = "sudo -u ${strHostUser}" . ($hCacheKey->{'bash-wrap'} ? " bash" . ($hCacheKey->{'load-env'} ? ' -l' : '') . " -c '${strCommand}'" : " ${strCommand}"); if (defined($strCommandList)) { $strCommandList .= "\n"; } $strCommandList .= "RUN ${strCommand}"; &log(DETAIL, " Pre command $strCommand"); } # Build container my $strDockerfile = $self->{oManifest}{strDocPath} . "/output/doc-host.dockerfile"; $self->{oManifest}{oStorage}->put( $strDockerfile, "FROM ${strFrom}\n\n" . trim($self->{oManifest}->variableReplace($strCommandList)) . "\n"); executeTest("docker build -f ${strDockerfile} -t ${strPreImage} " . $self->{oManifest}{oStorage}->pathGet()); # Use the pre-built image $strImage = $strPreImage; } my $strHostRepoPath = dirname(dirname(abs_path($0))); # Replace host repo path in mounts with if present my $strMount = undef; if (defined($oChild->paramGet('mount', false))) { $strMount = $self->{oManifest}->variableReplace($oChild->paramGet('mount')); $strMount =~ s/\{\[host\-repo\-path\]\}/${strHostRepoPath}/g; } # Replace host repo mount in params if present my $strOption = $$hCacheKey{option}; if (defined($strOption)) { $strOption =~ s/\{\[host\-repo\-path\]\}/${strHostRepoPath}/g; } my $oHost = new pgBackRestTest::Common::HostTest( $$hCacheKey{name}, "doc-$$hCacheKey{name}", $strImage, $strHostUser, $$hCacheKey{os}, defined($strMount) ? [$strMount] : undef, $strOption, $$hCacheKey{param}, $$hCacheKey{'update-hosts'}); $self->{host}{$$hCacheKey{name}} = $oHost; $self->{oManifest}->variableSet('host-' . $hCacheKey->{id} . '-ip', $oHost->{strIP}, true); $$hCacheValue{ip} = $oHost->{strIP}; # Add to the host group my $oHostGroup = hostGroupGet(); $oHostGroup->hostAdd($oHost); # Execute initialize commands foreach my $oExecute ($oChild->nodeList('execute', false)) { $self->execute( $oSection, $$hCacheKey{name}, $oExecute, {iIndent => $iDepth + 1, bCache => false, bShow => false}); } $self->cachePush($strCacheType, $hCacheKey, $hCacheValue); } } } # Skip children that have already been processed and error on others elsif ($oChild->nameGet() ne 'title') { confess &log(ASSERT, 'unable to process child type ' . $oChild->nameGet()); } # Return from function and log return values if any return logDebugReturn ( $strOperation ); } 1; pgbackrest-release-2.24/doc/lib/BackRestDoc/Common/DocManifest.pm000066400000000000000000000631501362531507100246350ustar00rootroot00000000000000#################################################################################################################################### # DOC MANIFEST MODULE #################################################################################################################################### package BackRestDoc::Common::DocManifest; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Cwd qw(abs_path); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use JSON::PP; use pgBackRest::Common::Log; use pgBackRest::Common::String; #################################################################################################################################### # File constants #################################################################################################################################### use constant FILE_MANIFEST => 'manifest.xml'; #################################################################################################################################### # Render constants #################################################################################################################################### use constant RENDER => 'render'; use constant RENDER_COMPACT => 'compact'; push @EXPORT, qw(RENDER_COMPACT); use constant RENDER_FILE => 'file'; use constant RENDER_MENU => 'menu'; push @EXPORT, qw(RENDER_MENU); use constant RENDER_PRETTY => 'pretty'; push @EXPORT, qw(RENDER_PRETTY); use constant RENDER_TYPE => 'type'; use constant RENDER_TYPE_HTML => 'html'; push @EXPORT, qw(RENDER_TYPE_HTML); use constant RENDER_TYPE_MARKDOWN => 'markdown'; push @EXPORT, qw(RENDER_TYPE_MARKDOWN); use constant RENDER_TYPE_PDF => 'pdf'; push @EXPORT, qw(RENDER_TYPE_PDF); #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Class name # Create the class hash my $self = {}; bless $self, $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{oStorage}, $self->{stryRequire}, $self->{stryInclude}, $self->{stryExclude}, $self->{rhKeyVariableOverride}, my $rhVariableOverride, $self->{strDocPath}, $self->{bDeploy}, $self->{bCacheOnly}, $self->{bPre}, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oStorage'}, {name => 'stryRequire'}, {name => 'stryInclude'}, {name => 'stryExclude'}, {name => 'rhKeyVariableOverride', required => false}, {name => 'rhVariableOverride', required => false}, {name => 'strDocPath', required => false}, {name => 'bDeploy', required => false}, {name => 'bCacheOnly', required => false}, {name => 'bPre', required => false, default => false}, ); # Set the bin path $self->{strBinPath} = abs_path(dirname($0)); # Set the base path if it was not passed in if (!defined($self->{strDocPath})) { $self->{strDocPath} = $self->{strBinPath}; } # Set cache file names $self->{strExeCacheLocal} = $self->{strDocPath} . "/output/exe.cache"; $self->{strExeCacheDeploy} = $self->{strDocPath} . "/resource/exe.cache"; # Load the manifest $self->{oManifestXml} = new BackRestDoc::Common::Doc("$self->{strDocPath}/manifest.xml"); # Iterate the sources $self->{oManifest} = {}; foreach my $oSource ($self->{oManifestXml}->nodeGet('source-list')->nodeList('source')) { my $oSourceHash = {}; my $strKey = $oSource->paramGet('key'); my $strSourceType = $oSource->paramGet('type', false); logDebugMisc ( $strOperation, 'load source', {name => 'strKey', value => $strKey}, {name => 'strSourceType', value => $strSourceType} ); # Skip sources in exclude list if (grep(/^$strKey$/, @{$self->{stryExclude}})) { next; } $$oSourceHash{doc} = new BackRestDoc::Common::Doc("$self->{strDocPath}/xml/${strKey}.xml"); # Read variables from source $self->variableListParse($$oSourceHash{doc}->nodeGet('variable-list', false), $rhVariableOverride); ${$self->{oManifest}}{source}{$strKey} = $oSourceHash; ${$self->{oManifest}}{source}{$strKey}{strSourceType} = $strSourceType; } # Iterate the renderers foreach my $oRender ($self->{oManifestXml}->nodeGet('render-list')->nodeList('render')) { my $oRenderHash = {}; my $strType = $oRender->paramGet(RENDER_TYPE); # Only one instance of each render type can be defined if (defined(${$self->{oManifest}}{&RENDER}{$strType})) { confess &log(ERROR, "render ${strType} has already been defined"); } # Get the file param $${oRenderHash}{file} = $oRender->paramGet(RENDER_FILE, false); $${oRenderHash}{&RENDER_COMPACT} = $oRender->paramGet(RENDER_COMPACT, false, 'n') eq 'y' ? true : false; $${oRenderHash}{&RENDER_PRETTY} = $oRender->paramGet(RENDER_PRETTY, false, 'n') eq 'y' ? true : false; $${oRenderHash}{&RENDER_MENU} = false; logDebugMisc ( $strOperation, ' load render', {name => 'strType', value => $strType}, {name => 'strFile', value => $${oRenderHash}{file}} ); # Error if file is set and render type is not pdf if (defined($${oRenderHash}{file}) && $strType ne RENDER_TYPE_PDF) { confess &log(ERROR, 'only the pdf render type can have file set') } # Iterate the render sources foreach my $oRenderOut ($oRender->nodeList('render-source')) { my $oRenderOutHash = {}; my $strKey = $oRenderOut->paramGet('key'); my $strSource = $oRenderOut->paramGet('source', false, $strKey); # Skip sources in exclude list if (grep(/^$strSource$/, @{$self->{stryExclude}})) { next; } # Skip sources not in include list if (@{$self->{stryInclude}} > 0 && !grep(/^$strSource$/, @{$self->{stryInclude}})) { next; } # Preserve natural order push(@{$${oRenderHash}{stryOrder}}, $strKey); $$oRenderOutHash{source} = $strSource; # Get the filename if (defined($oRenderOut->paramGet('file', false))) { if ($strType eq RENDER_TYPE_HTML || $strType eq RENDER_TYPE_MARKDOWN) { $$oRenderOutHash{file} = $oRenderOut->paramGet('file'); } else { confess &log(ERROR, "file is only valid with html or markdown render types"); } } # Get the menu caption if (defined($oRenderOut->paramGet('menu', false)) && $strType ne RENDER_TYPE_HTML) { confess &log(ERROR, "menu is only valid with html render type"); } if (defined($oRenderOut->paramGet('menu', false))) { $${oRenderHash}{&RENDER_MENU} = true; if ($strType eq RENDER_TYPE_HTML) { $$oRenderOutHash{menu} = $oRenderOut->paramGet('menu', false); } else { confess &log(ERROR, 'only the html render type can have menu set'); } } logDebugMisc ( $strOperation, ' load render source', {name => 'strKey', value => $strKey}, {name => 'strSource', value => $strSource}, {name => 'strMenu', value => $${oRenderOutHash}{menu}} ); $${oRenderHash}{out}{$strKey} = $oRenderOutHash; } ${$self->{oManifest}}{render}{$strType} = $oRenderHash; } # Set the doc path variable $self->variableSet('doc-path', $self->{strDocPath}); # Read variables from manifest $self->variableListParse($self->{oManifestXml}->nodeGet('variable-list', false), $rhVariableOverride); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # isBackRest # # Until all the backrest specific code can be abstracted, this function will identify when BackRest docs are being built. #################################################################################################################################### sub isBackRest { my $self = shift; return($self->variableTest('project-exe', 'pgbackrest')); } #################################################################################################################################### # Evaluate the if condition for a node #################################################################################################################################### sub evaluateIf { my $self = shift; my $oNode = shift; my $bIf = true; # Evaluate if condition if (defined($oNode->paramGet('if', false))) { my $strIf = $self->variableReplace($oNode->paramGet('if')); # In this case we really do want to evaluate the contents and not treat it as a literal $bIf = eval($strIf); # Error if the eval failed if ($@) { confess &log(ERROR, "unable to evaluate '${strIf}': $@"); } } return $bIf; } #################################################################################################################################### # variableListParse # # Parse a variable list and store variables. #################################################################################################################################### sub variableListParse { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oVariableList, $rhVariableOverride ) = logDebugParam ( __PACKAGE__ . '->variableListParse', \@_, {name => '$oVariableList', required => false}, {name => '$rhVariableOverride', required => false} ); if (defined($oVariableList)) { foreach my $oVariable ($oVariableList->nodeList('variable')) { if ($self->evaluateIf($oVariable)) { my $strKey = $oVariable->paramGet('key'); my $strValue = $self->variableReplace($oVariable->valueGet()); if ($oVariable->paramTest('eval', 'y')) { # In this case we really do want to evaluate the contents of strValue and not treat it as a literal. $strValue = eval($strValue); if ($@) { confess &log(ERROR, "unable to evaluate ${strKey}: $@\n" . $oVariable->valueGet()); } } $self->variableSet($strKey, defined($rhVariableOverride->{$strKey}) ? $rhVariableOverride->{$strKey} : $strValue); logDebugMisc ( $strOperation, ' load variable', {name => 'strKey', value => $strKey}, {name => 'strValue', value => $strValue} ); } } } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # variableReplace # # Replace variables in the string. #################################################################################################################################### sub variableReplace { my $self = shift; my $strBuffer = shift; my $strType = shift; if (!defined($strBuffer)) { return; } foreach my $strName (sort(keys(%{$self->{oVariable}}))) { my $strValue = $self->{oVariable}{$strName}; $strBuffer =~ s/\{\[$strName\]\}/$strValue/g; } if (defined($strType) && $strType eq 'latex') { $strBuffer =~ s/\\\_/\_/g; $strBuffer =~ s/\_/\\\_/g; $strBuffer =~ s/\\\#/\#/g; $strBuffer =~ s/\#/\\\#/g; } return $strBuffer; } #################################################################################################################################### # variableSet # # Set a variable to be replaced later. #################################################################################################################################### sub variableSet { my $self = shift; my $strKey = shift; my $strValue = shift; my $bForce = shift; if (defined(${$self->{oVariable}}{$strKey}) && (!defined($bForce) || !$bForce)) { confess &log(ERROR, "${strKey} variable is already defined"); } ${$self->{oVariable}}{$strKey} = $self->variableReplace($strValue); } #################################################################################################################################### # variableGet # # Get the current value of a variable. #################################################################################################################################### sub variableGet { my $self = shift; my $strKey = shift; return ${$self->{oVariable}}{$strKey}; } #################################################################################################################################### # variableTest # # Test that a variable is defined or has an expected value. #################################################################################################################################### sub variableTest { my $self = shift; my $strKey = shift; my $strExpectedValue = shift; # Get the variable my $strValue = ${$self->{oVariable}}{$strKey}; # Return false if it is not defined if (!defined($strValue)) { return false; } # Return false if it does not equal the expected value if (defined($strExpectedValue) && $strValue ne $strExpectedValue) { return false; } return true; } #################################################################################################################################### # Get list of source documents #################################################################################################################################### sub sourceList { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->sourceList'); # Check that sources exist my @strySource; if (defined(${$self->{oManifest}}{source})) { @strySource = sort(keys(%{${$self->{oManifest}}{source}})); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strySource', value => \@strySource} ); } #################################################################################################################################### # sourceGet #################################################################################################################################### sub sourceGet { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strSource ) = logDebugParam ( __PACKAGE__ . '->sourceGet', \@_, {name => 'strSource', trace => true} ); if (!defined(${$self->{oManifest}}{source}{$strSource})) { confess &log(ERROR, "source ${strSource} does not exist"); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oSource', value => ${$self->{oManifest}}{source}{$strSource}} ); } #################################################################################################################################### # renderList #################################################################################################################################### sub renderList { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->renderList'); # Check that the render output exists my @stryRender; if (defined(${$self->{oManifest}}{render})) { @stryRender = sort(keys(%{${$self->{oManifest}}{render}})); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'stryRender', value => \@stryRender} ); } #################################################################################################################################### # renderGet #################################################################################################################################### sub renderGet { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strType ) = logDebugParam ( __PACKAGE__ . '->renderGet', \@_, {name => 'strType', trace => true} ); # Check that the render exists if (!defined(${$self->{oManifest}}{render}{$strType})) { confess &log(ERROR, "render type ${strType} does not exist"); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oRenderOut', value => ${$self->{oManifest}}{render}{$strType}} ); } #################################################################################################################################### # renderOutList #################################################################################################################################### sub renderOutList { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strType ) = logDebugParam ( __PACKAGE__ . '->renderOutList', \@_, {name => 'strType'} ); # Check that the render output exists my @stryRenderOut; if (defined(${$self->{oManifest}}{render}{$strType})) { @stryRenderOut = sort(keys(%{${$self->{oManifest}}{render}{$strType}{out}})); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'stryRenderOut', value => \@stryRenderOut} ); } #################################################################################################################################### # renderOutGet #################################################################################################################################### sub renderOutGet { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strType, $strKey, $bIgnoreMissing, ) = logDebugParam ( __PACKAGE__ . '->renderOutGet', \@_, {name => 'strType', trace => true}, {name => 'strKey', trace => true}, {name => 'bIgnoreMissing', default => false, trace => true}, ); if (!defined(${$self->{oManifest}}{render}{$strType}{out}{$strKey}) && !$bIgnoreMissing) { confess &log(ERROR, "render out ${strKey} does not exist"); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oRenderOut', value => ${$self->{oManifest}}{render}{$strType}{out}{$strKey}} ); } #################################################################################################################################### # cacheKey #################################################################################################################################### sub cacheKey { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->cacheKey'); # Generate a cache key from the variable override my $strVariableKey = JSON::PP->new()->canonical()->allow_nonref()->encode($self->{rhKeyVariableOverride}); if ($strVariableKey eq '{}') { $strVariableKey = 'default'; } my $strRequire = defined($self->{stryRequire}) && @{$self->{stryRequire}} > 0 ? join("\n", @{$self->{stryRequire}}) : 'all'; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strVariableKey', value => $strVariableKey}, {name => 'strRequire', value => $strRequire}, ); } #################################################################################################################################### # cacheRead #################################################################################################################################### sub cacheRead { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->cacheRead'); $self->{hCache} = undef; my $strCacheFile = $self->{bDeploy} ? $self->{strExeCacheDeploy} : $self->{strExeCacheLocal}; if (!$self->storage()->exists($strCacheFile) && !$self->{bDeploy}) { $strCacheFile = $self->{strExeCacheDeploy}; } if ($self->storage()->exists($strCacheFile)) { my ($strCacheKey, $strRequire) = $self->cacheKey(); my $oJSON = JSON::PP->new()->allow_nonref(); $self->{hCache} = $oJSON->decode(${$self->storage()->get($strCacheFile)}); foreach my $strSource (sort(keys(%{${$self->{oManifest}}{source}}))) { my $hSource = ${$self->{oManifest}}{source}{$strSource}; if (defined(${$self->{hCache}}{$strCacheKey}{$strRequire}{$strSource})) { $$hSource{hyCache} = ${$self->{hCache}}{$strCacheKey}{$strRequire}{$strSource}; &log(DETAIL, "cache load $strSource (key = ${strCacheKey}, require = ${strRequire})"); } } } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # cacheWrite #################################################################################################################################### sub cacheWrite { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->cacheWrite'); my $strCacheFile = $self->{bDeploy} ? $self->{strExeCacheDeploy} : $self->{strExeCacheLocal}; my ($strCacheKey, $strRequire) = $self->cacheKey(); foreach my $strSource (sort(keys(%{${$self->{oManifest}}{source}}))) { my $hSource = ${$self->{oManifest}}{source}{$strSource}; if (defined($$hSource{hyCache})) { ${$self->{hCache}}{$strCacheKey}{$strRequire}{$strSource} = $$hSource{hyCache}; &log(DETAIL, "cache load $strSource (key = ${strCacheKey}, require = ${strRequire})"); } } if (defined($self->{hCache})) { my $oJSON = JSON::PP->new()->canonical()->allow_nonref()->pretty(); $self->storage()->put($strCacheFile, $oJSON->encode($self->{hCache})); } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # cacheReset #################################################################################################################################### sub cacheReset { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strSource ) = logDebugParam ( __PACKAGE__ . '->cacheReset', \@_, {name => 'strSource', trace => true} ); if ($self->{bCacheOnly}) { confess &log(ERROR, 'Cache reset disabled by --cache-only option'); } &log(WARN, "Cache will be reset for source ${strSource} and rendering retried automatically"); delete(${$self->{oManifest}}{source}{$strSource}{hyCache}); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # Getters #################################################################################################################################### sub storage {shift->{oStorage}}; 1; pgbackrest-release-2.24/doc/lib/BackRestDoc/Common/DocRender.pm000066400000000000000000001036561362531507100243140ustar00rootroot00000000000000#################################################################################################################################### # DOC RENDER MODULE #################################################################################################################################### package BackRestDoc::Common::DocRender; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use JSON::PP; use Storable qw(dclone); use pgBackRest::Common::Log; use pgBackRest::Common::String; use BackRestDoc::Common::DocManifest; #################################################################################################################################### # XML tag/param constants #################################################################################################################################### use constant XML_SECTION_PARAM_ANCHOR => 'anchor'; push @EXPORT, qw(XML_SECTION_PARAM_ANCHOR); use constant XML_SECTION_PARAM_ANCHOR_VALUE_NOINHERIT => 'no-inherit'; push @EXPORT, qw(XML_SECTION_PARAM_ANCHOR_VALUE_NOINHERIT); #################################################################################################################################### # Render tags for various output types #################################################################################################################################### my $oRenderTag = { 'markdown' => { 'quote' => ['"', '"'], 'b' => ['**', '**'], 'i' => ['_', '_'], # 'bi' => ['_**', '**_'], 'ul' => ["\n", ""], 'ol' => ["\n", "\n"], 'li' => ['- ', "\n"], 'id' => ['`', '`'], 'file' => ['`', '`'], 'path' => ['`', '`'], 'cmd' => ['`', '`'], 'param' => ['`', '`'], 'setting' => ['`', '`'], 'pg-setting' => ['`', '`'], 'code' => ['`', '`'], # 'code-block' => ['```', '```'], # 'exe' => [undef, ''], 'backrest' => [undef, ''], 'proper' => ['', ''], 'postgres' => ['PostgreSQL', ''], 'admonition' => ["\n> **", "\n"], }, 'text' => { 'quote' => ['"', '"'], 'b' => ['', ''], 'i' => ['', ''], # 'bi' => ['', ''], 'ul' => ["\n", "\n"], 'ol' => ["\n", "\n"], 'li' => ['* ', "\n"], 'id' => ['', ''], 'host' => ['', ''], 'file' => ['', ''], 'path' => ['', ''], 'cmd' => ['', ''], 'br-option' => ['', ''], 'pg-setting' => ['', ''], 'param' => ['', ''], 'setting' => ['', ''], 'code' => ['', ''], 'code-block' => ['', ''], 'exe' => [undef, ''], 'backrest' => [undef, ''], 'proper' => ['', ''], 'postgres' => ['PostgreSQL', ''], 'admonition' => ["\n", "\n\n"], }, 'latex' => { 'quote' => ['``', '"'], 'b' => ['\textbf{', '}'], 'i' => ['\textit{', '}'], # 'bi' => ['', ''], 'ul' => ["\\begin{itemize}\n", "\\end{itemize}\n"], # 'ol' => ["\n", "\n"], 'li' => ['\item ', "\n"], 'id' => ['\textnormal{\texttt{', '}}'], 'host' => ['\textnormal{\textbf{', '}}'], 'file' => ['\textnormal{\texttt{', '}}'], 'path' => ['\textnormal{\texttt{', '}}'], 'cmd' => ['\textnormal{\texttt{', "}}"], 'user' => ['\textnormal{\texttt{', '}}'], 'br-option' => ['', ''], # 'param' => ['\texttt{', '}'], # 'setting' => ['\texttt{', '}'], 'br-option' => ['\textnormal{\texttt{', '}}'], 'br-setting' => ['\textnormal{\texttt{', '}}'], 'pg-option' => ['\textnormal{\texttt{', '}}'], 'pg-setting' => ['\textnormal{\texttt{', '}}'], 'code' => ['\textnormal{\texttt{', '}}'], # 'code' => ['\texttt{', '}'], # 'code-block' => ['', ''], # 'exe' => [undef, ''], 'backrest' => [undef, ''], 'proper' => ['\textnormal{\texttt{', '}}'], 'postgres' => ['PostgreSQL', ''], 'admonition' => ["\n\\begin{leftbar}\n\\textit{\\textbf{", "}\n\\end{leftbar}\n"], }, 'html' => { 'quote' => ['', ''], 'b' => ['', ''], 'i' => ['', ''], # 'bi' => ['', ''], 'ul' => ['
    ', '
'], 'ol' => ['
    ', '
'], 'li' => ['
  • ', '
  • '], 'id' => ['', ''], 'host' => ['', ''], 'file' => ['', ''], 'path' => ['', ''], 'cmd' => ['', ''], 'user' => ['', ''], 'br-option' => ['', ''], 'br-setting' => ['', ''], 'pg-option' => ['', ''], 'pg-setting' => ['', ''], 'code' => ['', ''], 'code-block' => ['', ''], 'exe' => [undef, ''], 'setting' => ['', ''], # ??? This will need to be fixed 'backrest' => [undef, ''], 'proper' => ['', ''], 'postgres' => ['PostgreSQL', ''], 'admonition' => ['
    ', '
    '], } }; #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Class name # Create the class hash my $self = {}; bless $self, $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{strType}, $self->{oManifest}, $self->{bExe}, $self->{strRenderOutKey}, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'strType'}, {name => 'oManifest', required => false}, {name => 'bExe', required => false}, {name => 'strRenderOutKey', required => false} ); # Create JSON object $self->{oJSON} = JSON::PP->new()->allow_nonref(); # Initialize project tags $$oRenderTag{markdown}{backrest}[0] = "{[project]}"; $$oRenderTag{markdown}{exe}[0] = "{[project-exe]}"; $$oRenderTag{text}{backrest}[0] = "{[project]}"; $$oRenderTag{text}{exe}[0] = "{[project-exe]}"; $$oRenderTag{latex}{backrest}[0] = "{[project]}"; $$oRenderTag{latex}{exe}[0] = "\\textnormal\{\\texttt\{[project-exe]}}\}\}"; $$oRenderTag{html}{backrest}[0] = "{[project]}"; $$oRenderTag{html}{exe}[0] = "{[project-exe]}"; if (defined($self->{strRenderOutKey})) { # Copy page data to self my $oRenderOut = $self->{oManifest}->renderOutGet($self->{strType} eq 'latex' ? 'pdf' : $self->{strType}, $self->{strRenderOutKey}); # If these are the backrest docs then load the reference if ($self->{oManifest}->isBackRest()) { $self->{oReference} = new BackRestDoc::Common::DocConfig(${$self->{oManifest}->sourceGet('reference')}{doc}, $self); } if (defined($$oRenderOut{source}) && $$oRenderOut{source} eq 'reference' && $self->{oManifest}->isBackRest()) { if ($self->{strRenderOutKey} eq 'configuration') { $self->{oDoc} = $self->{oReference}->helpConfigDocGet(); } elsif ($self->{strRenderOutKey} eq 'command') { $self->{oDoc} = $self->{oReference}->helpCommandDocGet(); } else { confess &log(ERROR, "cannot render $self->{strRenderOutKey} from source $$oRenderOut{source}"); } } elsif (defined($$oRenderOut{source}) && $$oRenderOut{source} eq 'release' && $self->{oManifest}->isBackRest()) { require BackRestDoc::Custom::DocCustomRelease; BackRestDoc::Custom::DocCustomRelease->import(); $self->{oDoc} = (new BackRestDoc::Custom::DocCustomRelease( ${$self->{oManifest}->sourceGet('release')}{doc}, defined($self->{oManifest}->variableGet('dev')) && $self->{oManifest}->variableGet('dev') eq 'y'))->docGet(); } else { $self->{oDoc} = ${$self->{oManifest}->sourceGet($self->{strRenderOutKey})}{doc}; } $self->{oSource} = $self->{oManifest}->sourceGet($$oRenderOut{source}); } if (defined($self->{strRenderOutKey})) { # Build the doc $self->build($self->{oDoc}); # Get required sections foreach my $strPath (@{$self->{oManifest}->{stryRequire}}) { if (substr($strPath, 0, 1) ne '/') { confess &log(ERROR, "path ${strPath} must begin with a /"); } if (!defined($self->{oSection}->{$strPath})) { confess &log(ERROR, "required section '${strPath}' does not exist"); } if (defined(${$self->{oSection}}{$strPath})) { $self->required($strPath); } } } if (defined($self->{oDoc})) { $self->{bToc} = !defined($self->{oDoc}->paramGet('toc', false)) || $self->{oDoc}->paramGet('toc') eq 'y' ? true : false; $self->{bTocNumber} = $self->{bToc} && (!defined($self->{oDoc}->paramGet('toc-number', false)) || $self->{oDoc}->paramGet('toc-number') eq 'y') ? true : false; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # Set begin and end values for a tag #################################################################################################################################### sub tagSet { my $self = shift; my $strTag = shift; my $strBegin = shift; my $strEnd = shift; $oRenderTag->{$self->{strType}}{$strTag}[0] = defined($strBegin) ? $strBegin : ''; $oRenderTag->{$self->{strType}}{$strTag}[1] = defined($strEnd) ? $strEnd : ''; } #################################################################################################################################### # variableReplace # # Replace variables in the string. #################################################################################################################################### sub variableReplace { my $self = shift; return defined($self->{oManifest}) ? $self->{oManifest}->variableReplace(shift, $self->{strType}) : shift; } #################################################################################################################################### # variableSet # # Set a variable to be replaced later. #################################################################################################################################### sub variableSet { my $self = shift; return $self->{oManifest}->variableSet(shift, shift); } #################################################################################################################################### # variableGet # # Get the current value of a variable. #################################################################################################################################### sub variableGet { my $self = shift; return $self->{oManifest}->variableGet(shift); } #################################################################################################################################### # Get pre-execute list for a host #################################################################################################################################### sub preExecute { my $self = shift; my $strHost = shift; if (defined($self->{preExecute}{$strHost})) { return @{$self->{preExecute}{$strHost}}; } return; } #################################################################################################################################### # build # # Build the section map and perform filtering. #################################################################################################################################### sub build { my $self = shift; my $oNode = shift; my $oParent = shift; my $strPath = shift; my $strPathPrefix = shift; # &log(INFO, " node " . $oNode->nameGet()); my $strName = $oNode->nameGet(); if (defined($oParent)) { # Evaluate if condition -- when false the node will be removed if (!$self->{oManifest}->evaluateIf($oNode)) { my $strDescription; if (defined($oNode->nodeGet('title', false))) { $strDescription = $self->processText($oNode->nodeGet('title')->textGet()); } &log(DEBUG, " filtered ${strName}" . (defined($strDescription) ? ": ${strDescription}" : '')); $oParent->nodeRemove($oNode); return; } } else { &log(DEBUG, ' build document'); $self->{oSection} = {}; } # Build section if ($strName eq 'section') { my $strSectionId = $oNode->paramGet('id'); &log(DEBUG, "build section [${strSectionId}]"); # Set path and parent-path for this section if (defined($strPath)) { $oNode->paramSet('path-parent', $strPath); } $strPath .= '/' . $oNode->paramGet('id'); &log(DEBUG, " path ${strPath}"); ${$self->{oSection}}{$strPath} = $oNode; $oNode->paramSet('path', $strPath); # If depend is not set then set it to the last section my $strDepend = $oNode->paramGet('depend', false); my $oContainerNode = defined($oParent) ? $oParent : $self->{oDoc}; my $oLastChild; my $strDependPrev; foreach my $oChild ($oContainerNode->nodeList('section', false)) { if ($oChild->paramGet('id') eq $oNode->paramGet('id')) { if (defined($oLastChild)) { $strDependPrev = $oLastChild->paramGet('id'); } elsif (defined($oParent->paramGet('depend', false))) { $strDependPrev = $oParent->paramGet('depend'); } last; } $oLastChild = $oChild; } if (defined($strDepend)) { if (defined($strDependPrev) && $strDepend eq $strDependPrev && !$oNode->paramTest('depend-default')) { &log(WARN, "section '${strPath}' depend is set to '${strDepend}' which is the default, best to remove" . " because it may become obsolete if a new section is added in between"); } } else { $strDepend = $strDependPrev; } # If depend is defined make sure it exists if (defined($strDepend)) { # If this is a relative depend then prepend the parent section if (index($strDepend, '/') != 0) { if (defined($oParent->paramGet('path', false))) { $strDepend = $oParent->paramGet('path') . '/' . $strDepend; } else { $strDepend = "/${strDepend}"; } } if (!defined($self->{oSection}->{$strDepend})) { confess &log(ERROR, "section '${strSectionId}' depend '${strDepend}' is not valid"); } } if (defined($strDepend)) { $oNode->paramSet('depend', $strDepend); } if (defined($strDependPrev)) { $oNode->paramSet('depend-default', $strDependPrev); } # Set log to true if this section has an execute list. This helps reduce the info logging by only showing sections that are # likely to take a log time. $oNode->paramSet('log', $self->{bExe} && $oNode->nodeList('execute-list', false) > 0 ? true : false); # If section content is being pulled from elsewhere go get the content if ($oNode->paramTest('source')) { my $oSource = ${$self->{oManifest}->sourceGet($oNode->paramGet('source'))}{doc}; # Section should not already have title defined, it should come from the source doc if ($oNode->nodeTest('title')) { confess &log(ERROR, "cannot specify title in section that sources another document"); } # Set title from source doc's title $oNode->nodeAdd('title')->textSet($oSource->paramGet('title')); foreach my $oSection ($oSource->nodeList('section')) { push(@{${$oNode->{oDoc}}{children}}, $oSection->{oDoc}); } # Set path prefix to modify all section paths further down $strPathPrefix = $strPath; # Remove source so it is not included again later $oNode->paramSet('source', undef); } } # Build link elsif ($strName eq 'link') { &log(DEBUG, 'build link [' . $oNode->valueGet() . ']'); # If the path prefix is set and this is a section if (defined($strPathPrefix) && $oNode->paramTest('section')) { my $strNewPath = $strPathPrefix . $oNode->paramGet('section'); &log(DEBUG, "modify link section from '" . $oNode->paramGet('section') . "' to '${strNewPath}'"); $oNode->paramSet('section', $strNewPath); } } # Store block defines elsif ($strName eq 'block-define') { my $strBlockId = $oNode->paramGet('id'); if (defined($self->{oyBlockDefine}{$strBlockId})) { confess &log(ERROR, "block ${strBlockId} is already defined"); } $self->{oyBlockDefine}{$strBlockId} = dclone($oNode->{oDoc}{children}); $oParent->nodeRemove($oNode); } # Copy blocks elsif ($strName eq 'block') { my $strBlockId = $oNode->paramGet('id'); if (!defined($self->{oyBlockDefine}{$strBlockId})) { confess &log(ERROR, "block ${strBlockId} is not defined"); } my $strNodeJSON = $self->{oJSON}->encode($self->{oyBlockDefine}{$strBlockId}); foreach my $oVariable ($oNode->nodeList('block-variable-replace', false)) { my $strVariableKey = $oVariable->paramGet('key'); my $strVariableReplace = $oVariable->valueGet(); $strNodeJSON =~ s/\{\[$strVariableKey\]\}/$strVariableReplace/g; } my ($iReplaceIdx, $iReplaceTotal) = $oParent->nodeReplace($oNode, $self->{oJSON}->decode($strNodeJSON)); # Build any new children that were added my $iChildIdx = 0; foreach my $oChild ($oParent->nodeList(undef, false)) { if ($iChildIdx >= $iReplaceIdx && $iChildIdx < ($iReplaceIdx + $iReplaceTotal)) { $self->build($oChild, $oParent, $strPath, $strPathPrefix); } $iChildIdx++; } } # Check for pre-execute statements elsif ($strName eq 'execute') { if ($self->{oManifest}->{bPre} && $oNode->paramGet('pre', false, 'n') eq 'y') { # Add to pre-execute list my $strHost = $self->variableReplace($oParent->paramGet('host')); push(@{$self->{preExecute}{$strHost}}, $oNode); # Skip this command so it doesn't get executed twice $oNode->paramSet('skip', 'y') } } # Iterate all text nodes if (defined($oNode->textGet(false))) { foreach my $oChild ($oNode->textGet()->nodeList(undef, false)) { if (ref(\$oChild) ne "SCALAR") { $self->build($oChild, $oNode, $strPath, $strPathPrefix); } } } # Iterate all non-text nodes foreach my $oChild ($oNode->nodeList(undef, false)) { if (ref(\$oChild) ne "SCALAR") { $self->build($oChild, $oNode, $strPath, $strPathPrefix); # If the child should be logged then log the parent as well so the hierarchy is complete if ($oChild->nameGet() eq 'section' && $oChild->paramGet('log', false, false)) { $oNode->paramSet('log', true); } } } } #################################################################################################################################### # required # # Build a list of required sections #################################################################################################################################### sub required { my $self = shift; my $strPath = shift; my $bDepend = shift; # If node is not found that means the path is invalid my $oNode = ${$self->{oSection}}{$strPath}; if (!defined($oNode)) { confess &log(ERROR, "invalid path ${strPath}"); } # Only add sections that are listed dependencies if (!defined($bDepend) || $bDepend) { # Match section and all child sections foreach my $strChildPath (sort(keys(%{$self->{oSection}}))) { if ($strChildPath =~ /^$strPath$/ || $strChildPath =~ /^$strPath\/.*$/) { if (!defined(${$self->{oSectionRequired}}{$strChildPath})) { my @stryChildPath = split('/', $strChildPath); &log(INFO, (' ' x (scalar(@stryChildPath) - 2)) . " require section: ${strChildPath}"); ${$self->{oSectionRequired}}{$strChildPath} = true; } } } } # Get the path of the current section's parent my $strParentPath = $oNode->paramGet('path-parent', false); if ($oNode->paramTest('depend')) { foreach my $strDepend (split(',', $oNode->paramGet('depend'))) { if ($strDepend !~ /^\//) { if (!defined($strParentPath)) { $strDepend = "/${strDepend}"; } else { $strDepend = "${strParentPath}/${strDepend}"; } } $self->required($strDepend, true); } } elsif (defined($strParentPath)) { $self->required($strParentPath, false); } } #################################################################################################################################### # isRequired # # Is it required to execute the section statements? #################################################################################################################################### sub isRequired { my $self = shift; my $oSection = shift; if (!defined($self->{oSectionRequired})) { return true; } my $strPath = $oSection->paramGet('path'); defined(${$self->{oSectionRequired}}{$strPath}) ? true : false; } #################################################################################################################################### # processTag #################################################################################################################################### sub processTag { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oTag ) = logDebugParam ( __PACKAGE__ . '->processTag', \@_, {name => 'oTag', trace => true} ); my $strBuffer = ""; my $strType = $self->{strType}; my $strTag = $oTag->nameGet(); if (!defined($strTag)) { require Data::Dumper; confess Dumper($oTag); } if ($strTag eq 'link') { my $strUrl = $oTag->paramGet('url', false); if (!defined($strUrl)) { my $strPage = $self->variableReplace($oTag->paramGet('page', false)); # If this is a page URL if (defined($strPage)) { # If the page wasn't rendered then point at the website if (!defined($self->{oManifest}->renderOutGet($strType, $strPage, true))) { $strUrl = '{[backrest-url-base]}/' . $oTag->paramGet('page') . '.html'; } # Else point locally else { if ($strType eq 'html' || $strType eq 'markdown') { $strUrl = $oTag->paramGet('page', false) . '.' . ($strType eq 'html' ? $strType : '.md'); } else { confess &log(ERROR, "page links not supported for type ${strType}, value '" . $oTag->valueGet() . "'"); } } } else { my $strSection = $oTag->paramGet('section'); my $oSection = ${$self->{oSection}}{$strSection}; if (!defined($oSection)) { confess &log(ERROR, "section link '${strSection}' does not exist"); } if (!defined($strSection)) { confess &log(ERROR, "link with value '" . $oTag->valueGet() . "' must defined url, page, or section"); } if ($strType eq 'html') { $strUrl = '#' . substr($strSection, 1); } elsif ($strType eq 'latex') { $strUrl = $strSection; } else { $strUrl = lc($self->processText($oSection->nodeGet('title')->textGet())); $strUrl =~ s/[^\w\- ]//g; $strUrl =~ s/ /-/g; $strUrl = '#' . $strUrl; } } } if ($strType eq 'html') { $strBuffer = '' . $oTag->valueGet() . ''; } elsif ($strType eq 'markdown') { $strBuffer = '[' . $oTag->valueGet() . '](' . $strUrl . ')'; } elsif ($strType eq 'latex') { if ($oTag->paramTest('url')) { $strBuffer = "\\href{$strUrl}{" . $oTag->valueGet() . "}"; } else { $strBuffer = "\\hyperref[$strUrl]{" . $oTag->valueGet() . "}"; } } else { confess "'link' tag not valid for type ${strType}"; } } else { my $strStart = $$oRenderTag{$strType}{$strTag}[0]; my $strStop = $$oRenderTag{$strType}{$strTag}[1]; if (!defined($strStart) || !defined($strStop)) { confess &log(ERROR, "invalid type ${strType} or tag ${strTag}"); } $strBuffer .= $strStart; # Admonitions in the reference materials are tags of the text element rather than field elements of the document so special # handling is required if ($strTag eq 'admonition') { $strBuffer .= $self->processAdmonitionStart($oTag); } if ($strTag eq 'p' || $strTag eq 'title' || $strTag eq 'li' || $strTag eq 'code-block' || $strTag eq 'summary' || $strTag eq 'admonition') { $strBuffer .= $self->processText($oTag); } elsif (defined($oTag->valueGet())) { $strBuffer .= $oTag->valueGet(); } else { foreach my $oSubTag ($oTag->nodeList(undef, false)) { $strBuffer .= $self->processTag($oSubTag); } } if ($strTag eq 'admonition') { $strBuffer .= $self->processAdmonitionEnd($oTag); } $strBuffer .= $strStop; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strBuffer', value => $strBuffer, trace => true} ); } #################################################################################################################################### # processAdmonitionStart #################################################################################################################################### sub processAdmonitionStart { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oTag ) = logDebugParam ( __PACKAGE__ . '->processAdmonitionStart', \@_, {name => 'oTag', trace => true} ); my $strType = $self->{strType}; my $strBuffer = ''; # Note that any changes to the way the HTML, markdown or latex display tags may also need to be made here if ($strType eq 'html') { my $strType = $oTag->paramGet('type'); $strBuffer = '
    ' . uc($strType) . ':
    ' . '
    '; } elsif ($strType eq 'text' || $strType eq 'markdown') { $strBuffer = uc($oTag->paramGet('type')) . ": "; } elsif ($strType eq 'latex') { $strBuffer = uc($oTag->paramGet('type')) . ": }"; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strBuffer', value => $strBuffer, trace => true} ); } #################################################################################################################################### # processAdmonitionEnd #################################################################################################################################### sub processAdmonitionEnd { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oTag ) = logDebugParam ( __PACKAGE__ . '->processAdmonitionEnd', \@_, {name => 'oTag', trace => true} ); my $strType = $self->{strType}; my $strBuffer = ''; # Note that any changes to the way the HTML, markdown or latex display tags may also need to be made here if ($strType eq 'html') { $strBuffer = '
    '; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strBuffer', value => $strBuffer, trace => true} ); } #################################################################################################################################### # processText #################################################################################################################################### sub processText { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oText ) = logDebugParam ( __PACKAGE__ . '->processText', \@_, {name => 'oText', trace => true} ); my $strType = $self->{strType}; my $strBuffer = ''; foreach my $oNode ($oText->nodeList(undef, false)) { if (ref(\$oNode) eq "SCALAR") { if ($oNode =~ /\"/) { confess &log(ERROR, "unable to process quotes in string (use instead):\n${oNode}"); } $strBuffer .= $oNode; } else { $strBuffer .= $self->processTag($oNode); } } # # if ($strType eq 'html') # { # # $strBuffer =~ s/^\s+|\s+$//g; # # $strBuffer =~ s/\n/\\n/g; # } # if ($strType eq 'markdown') # { # $strBuffer =~ s/^\s+|\s+$//g; $strBuffer =~ s/ +/ /g; $strBuffer =~ s/^ //smg; # } if ($strType eq 'latex') { $strBuffer =~ s/\&mdash\;/---/g; $strBuffer =~ s/\<\;/\\=/\$\\geq\$/g; # $strBuffer =~ s/\_/\\_/g; # If not a code-block, which is to be taken AS IS, then escape special characters in latex if ($oText->nameGet() ne 'code-block') { # If the previous character is not already a slash (e.g. not already escaped) then insert a slash $strBuffer =~ s/(?nameGet() eq 'list-item') { $strBuffer =~ s/\[/\{\[/g; $strBuffer =~ s/\]/\]\}/g; } $strBuffer =~ s/\©\;/{\\textcopyright}/g; $strBuffer =~ s/\&trade\;/{\\texttrademark}/g; $strBuffer =~ s/\®\;/{\\textregistered}/g; $strBuffer =~ s/\&rarr\;/{\\textrightarrow}/g; # Escape all ampersands after making any other conversions above $strBuffer =~ s/(?\=/g; } $strBuffer = $self->variableReplace($strBuffer); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strBuffer', value => $strBuffer, trace => true} ); } 1; pgbackrest-release-2.24/doc/lib/BackRestDoc/Custom/000077500000000000000000000000001362531507100221205ustar00rootroot00000000000000pgbackrest-release-2.24/doc/lib/BackRestDoc/Custom/DocCustomRelease.pm000066400000000000000000000652741362531507100256750ustar00rootroot00000000000000#################################################################################################################################### # DOC RELEASE MODULE #################################################################################################################################### package BackRestDoc::Custom::DocCustomRelease; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Cwd qw(abs_path); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Version; use pgBackRestBuild::Config::Data; use BackRestDoc::Common::DocRender; #################################################################################################################################### # XML node constants #################################################################################################################################### use constant XML_PARAM_ID => 'id'; use constant XML_CONTRIBUTOR_LIST => 'contributor-list'; use constant XML_CONTRIBUTOR => 'contributor'; use constant XML_CONTRIBUTOR_NAME_DISPLAY => 'contributor-name-display'; use constant XML_RELEASE_CORE_LIST => 'release-core-list'; use constant XML_RELEASE_DOC_LIST => 'release-doc-list'; use constant XML_RELEASE_TEST_LIST => 'release-test-list'; use constant XML_RELEASE_BUG_LIST => 'release-bug-list'; use constant XML_RELEASE_DEVELOPMENT_LIST => 'release-development-list'; use constant XML_RELEASE_FEATURE_LIST => 'release-feature-list'; use constant XML_RELEASE_IMPROVEMENT_LIST => 'release-improvement-list'; use constant XML_RELEASE_ITEM_CONTRIBUTOR_LIST => 'release-item-contributor-list'; use constant XML_RELEASE_ITEM_CONTRIBUTOR => 'release-item-contributor'; use constant XML_RELEASE_ITEM_IDEATOR => 'release-item-ideator'; use constant XML_RELEASE_ITEM_REVIEWER => 'release-item-reviewer'; #################################################################################################################################### # Contributor text constants #################################################################################################################################### use constant TEXT_CONTRIBUTED => 'Contributed'; use constant TEXT_FIXED => 'Fixed'; use constant TEXT_FOUND => 'Reported'; use constant TEXT_REVIEWED => 'Reviewed'; use constant TEXT_SUGGESTED => 'Suggested'; #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Class name # Create the class hash my $self = {}; bless $self, $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{oDoc}, $self->{bDev}, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oDoc'}, {name => 'bDev', required => false, default => false}, ); # Get contributor list foreach my $oContributor ($self->{oDoc}->nodeGet(XML_CONTRIBUTOR_LIST)->nodeList(XML_CONTRIBUTOR)) { my $strContributorId = $oContributor->paramGet(XML_PARAM_ID); if (!defined($self->{hContributor})) { $self->{hContributor} = {}; $self->{strContributorDefault} = $strContributorId; } ${$self->{hContributor}}{$strContributorId}{name} = $oContributor->fieldGet(XML_CONTRIBUTOR_NAME_DISPLAY); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # currentStableVersion # # Return the current stable version. #################################################################################################################################### sub currentStableVersion { my $self = shift; my $oDoc = $self->{oDoc}; foreach my $oRelease ($oDoc->nodeGet('release-list')->nodeList('release')) { my $strVersion = $oRelease->paramGet('version'); if ($strVersion !~ /dev$/) { return $strVersion; } } confess &log(ERROR, "unable to find non-development version"); } #################################################################################################################################### # releaseLast # # Get the last release. #################################################################################################################################### sub releaseLast { my $self = shift; my $oDoc = $self->{oDoc}; foreach my $oRelease ($oDoc->nodeGet('release-list')->nodeList('release')) { return $oRelease; } } #################################################################################################################################### # contributorTextGet # # Get a list of contributors for an item in text format. #################################################################################################################################### sub contributorTextGet { my $self = shift; my $oReleaseItem = shift; my $strItemType = shift; my $strContributorText; my $hItemContributorType = {}; # Create a the list of contributors foreach my $strContributorType (XML_RELEASE_ITEM_IDEATOR, XML_RELEASE_ITEM_CONTRIBUTOR, XML_RELEASE_ITEM_REVIEWER) { my $stryItemContributor = []; if ($oReleaseItem->nodeTest(XML_RELEASE_ITEM_CONTRIBUTOR_LIST)) { foreach my $oContributor ($oReleaseItem->nodeGet(XML_RELEASE_ITEM_CONTRIBUTOR_LIST)-> nodeList($strContributorType, false)) { push @{$stryItemContributor}, $oContributor->paramGet(XML_PARAM_ID); } } if (@$stryItemContributor == 0 && $strContributorType eq XML_RELEASE_ITEM_CONTRIBUTOR) { push @{$stryItemContributor}, $self->{strContributorDefault} } $$hItemContributorType{$strContributorType} = $stryItemContributor; } # Error if a reviewer is also a contributor foreach my $strReviewer (@{$$hItemContributorType{&XML_RELEASE_ITEM_REVIEWER}}) { foreach my $strContributor (@{$$hItemContributorType{&XML_RELEASE_ITEM_CONTRIBUTOR}}) { if ($strReviewer eq $strContributor) { confess &log(ERROR, "${strReviewer} cannot be both a contributor and a reviewer"); } } } # Error if the ideator list is the same as the contributor list if (join(',', @{$$hItemContributorType{&XML_RELEASE_ITEM_IDEATOR}}) eq join(',', @{$$hItemContributorType{&XML_RELEASE_ITEM_CONTRIBUTOR}})) { confess &log(ERROR, 'cannot have same contributor and ideator list: ' . join(', ', @{$$hItemContributorType{&XML_RELEASE_ITEM_CONTRIBUTOR}})); } # Remove the default user if they are the only one in a group (to prevent the entire page from being splattered with one name) foreach my $strContributorType (XML_RELEASE_ITEM_IDEATOR, XML_RELEASE_ITEM_CONTRIBUTOR, XML_RELEASE_ITEM_REVIEWER) { if (@{$$hItemContributorType{$strContributorType}} == 1 && @{$$hItemContributorType{$strContributorType}}[0] eq $self->{strContributorDefault}) { $$hItemContributorType{$strContributorType} = []; } } # Render the string foreach my $strContributorType (XML_RELEASE_ITEM_CONTRIBUTOR, XML_RELEASE_ITEM_REVIEWER, XML_RELEASE_ITEM_IDEATOR) { my $stryItemContributor = $$hItemContributorType{$strContributorType}; my $strContributorTypeText; foreach my $strContributor (@{$stryItemContributor}) { my $hContributor = ${$self->{hContributor}}{$strContributor}; if (!defined($hContributor)) { confess &log(ERROR, "contributor ${strContributor} does not exist"); } $strContributorTypeText .= (defined($strContributorTypeText) ? ', ' : '') . $$hContributor{name}; } if (defined($strContributorTypeText)) { $strContributorTypeText = ' by ' . $strContributorTypeText . '.'; if ($strContributorType eq XML_RELEASE_ITEM_CONTRIBUTOR) { $strContributorTypeText = ($strItemType eq 'bug' ? TEXT_FIXED : TEXT_CONTRIBUTED) . $strContributorTypeText; } elsif ($strContributorType eq XML_RELEASE_ITEM_IDEATOR) { $strContributorTypeText = ($strItemType eq 'bug' ? TEXT_FOUND : TEXT_SUGGESTED) . $strContributorTypeText; } elsif ($strContributorType eq XML_RELEASE_ITEM_REVIEWER) { $strContributorTypeText = TEXT_REVIEWED . $strContributorTypeText; } $strContributorText .= (defined($strContributorText) ? ' ' : '') . $strContributorTypeText; } } return $strContributorText; } #################################################################################################################################### # Find a commit by subject prefix. Error if the prefix appears more than once. #################################################################################################################################### sub commitFindSubject { my $self = shift; my $rhyCommit = shift; my $strSubjectPrefix = shift; my $bRegExp = shift; $bRegExp = defined($bRegExp) ? $bRegExp : true; my $rhResult = undef; foreach my $rhCommit (@{$rhyCommit}) { if (($bRegExp && $rhCommit->{subject} =~ /^$strSubjectPrefix/) || (!$bRegExp && length($rhCommit->{subject}) >= length($strSubjectPrefix) && substr($rhCommit->{subject}, 0, length($strSubjectPrefix)) eq $strSubjectPrefix)) { if (defined($rhResult)) { confess &log(ERROR, "subject prefix '${strSubjectPrefix}' already found in commit " . $rhCommit->{commit}); } $rhResult = $rhCommit; } } return $rhResult; } #################################################################################################################################### # Throw an error that includes a list of release commits #################################################################################################################################### sub commitError { my $self = shift; my $strMessage = shift; my $rstryCommitRemaining = shift; my $rhyCommit = shift; my $strList; foreach my $strCommit (@{$rstryCommitRemaining}) { $strList .= (defined($strList) ? "\n" : '') . substr($rhyCommit->{$strCommit}{date}, 0, length($rhyCommit->{$strCommit}{date}) - 15) . " $strCommit: " . $rhyCommit->{$strCommit}{subject}; } confess &log(ERROR, "${strMessage}:\n${strList}"); } #################################################################################################################################### # docGet # # Get the xml for release. #################################################################################################################################### sub docGet { my $self = shift; # Assign function parameters, defaults, and log debug info my $strOperation = logDebugParam(__PACKAGE__ . '->docGet'); # Load the git history my $oStorageDoc = new pgBackRestTest::Common::Storage( dirname(abs_path($0)), new pgBackRestTest::Common::StoragePosix({bFileSync => false, bPathSync => false})); my @hyGitLog = @{(JSON::PP->new()->allow_nonref())->decode(${$oStorageDoc->get("resource/git-history.cache")})}; # Get renderer my $oRender = new BackRestDoc::Common::DocRender('text'); $oRender->tagSet('backrest', PROJECT_NAME); # Create the doc my $oDoc = new BackRestDoc::Common::Doc(); $oDoc->paramSet('title', $self->{oDoc}->paramGet('title')); $oDoc->paramSet('toc-number', $self->{oDoc}->paramGet('toc-number')); # Set the description for use as a meta tag $oDoc->fieldSet('description', $self->{oDoc}->fieldGet('description')); # Add the introduction my $oIntroSectionDoc = $oDoc->nodeAdd('section', undef, {id => 'introduction'}); $oIntroSectionDoc->nodeAdd('title')->textSet('Introduction'); $oIntroSectionDoc->textSet($self->{oDoc}->nodeGet('intro')->textGet()); # Add each release section my $oSection; my $iDevReleaseTotal = 0; my $iCurrentReleaseTotal = 0; my $iStableReleaseTotal = 0; my $iUnsupportedReleaseTotal = 0; my @oyRelease = $self->{oDoc}->nodeGet('release-list')->nodeList('release'); for (my $iReleaseIdx = 0; $iReleaseIdx < @oyRelease; $iReleaseIdx++) { my $oRelease = $oyRelease[$iReleaseIdx]; # Get the release version and dev flag my $strVersion = $oRelease->paramGet('version'); my $bReleaseDev = $strVersion =~ /dev$/ ? true : false; # Get a list of commits that apply to this release my @rhyReleaseCommit; my $rhReleaseCommitRemaining; my @stryReleaseCommitRemaining; my $bReleaseCheckCommit = false; if ($strVersion ge '2.01') { # Should commits in the release be checked? $bReleaseCheckCommit = !$bReleaseDev ? true : false; # Get the begin commit my $rhReleaseCommitBegin = $self->commitFindSubject(\@hyGitLog, "Begin v${strVersion} development\\."); my $strReleaseCommitBegin = defined($rhReleaseCommitBegin) ? $rhReleaseCommitBegin->{commit} : undef; # Get the end commit of the last release my $strReleaseLastVersion = $oyRelease[$iReleaseIdx + 1]->paramGet('version'); my $rhReleaseLastCommitEnd = $self->commitFindSubject(\@hyGitLog, "v${strReleaseLastVersion}\\: .+"); if (!defined($rhReleaseLastCommitEnd)) { confess &log(ERROR, "release ${strReleaseLastVersion} must have an end commit"); } my $strReleaseLastCommitEnd = $rhReleaseLastCommitEnd->{commit}; # Get the end commit my $rhReleaseCommitEnd = $self->commitFindSubject(\@hyGitLog, "v${strVersion}\\: .+"); my $strReleaseCommitEnd = defined($rhReleaseCommitEnd) ? $rhReleaseCommitEnd->{commit} : undef; if ($bReleaseCheckCommit && !defined($rhReleaseCommitEnd) && $iReleaseIdx != 0) { confess &log(ERROR, "release ${strVersion} must have an end commit"); } # Make a list of commits for this release while ($hyGitLog[0]->{commit} ne $strReleaseLastCommitEnd) { # Don't add begin/end commits to the list since they are already accounted for if ((defined($strReleaseCommitEnd) && $hyGitLog[0]->{commit} eq $strReleaseCommitEnd) || (defined($strReleaseCommitBegin) && $hyGitLog[0]->{commit} eq $strReleaseCommitBegin)) { shift(@hyGitLog); } # Else add the commit to this releases' list else { push(@stryReleaseCommitRemaining, $hyGitLog[0]->{commit}); push(@rhyReleaseCommit, $hyGitLog[0]); $rhReleaseCommitRemaining->{$hyGitLog[0]->{commit}}{date} = $hyGitLog[0]->{date}; $rhReleaseCommitRemaining->{$hyGitLog[0]->{commit}}{subject} = $hyGitLog[0]->{subject}; shift(@hyGitLog); } } # At least one commit is required for non-dev releases if ($bReleaseCheckCommit && @stryReleaseCommitRemaining == 0) { confess &log(ERROR, "no commits found for release ${strVersion}"); } } # Display versions in TOC? my $bTOC = true; # Create a release section if ($bReleaseDev) { if ($iDevReleaseTotal > 1) { confess &log(ERROR, 'only one development release is allowed'); } $oSection = $oDoc->nodeAdd('section', undef, {id => 'development', if => "'{[dev]}' eq 'y'"}); $oSection->nodeAdd('title')->textSet("Development Notes"); $iDevReleaseTotal++; } elsif ($iCurrentReleaseTotal == 0) { $oSection = $oDoc->nodeAdd('section', undef, {id => 'current'}); $oSection->nodeAdd('title')->textSet("Current Stable Release"); $iCurrentReleaseTotal++; } elsif ($strVersion ge '1.00') { if ($iStableReleaseTotal == 0) { $oSection = $oDoc->nodeAdd('section', undef, {id => 'supported'}); $oSection->nodeAdd('title')->textSet("Stable Releases"); } $iStableReleaseTotal++; $bTOC = false; } else { if ($iUnsupportedReleaseTotal == 0) { $oSection = $oDoc->nodeAdd('section', undef, {id => 'unsupported'}); $oSection->nodeAdd('title')->textSet("Pre-Stable Releases"); } $iUnsupportedReleaseTotal++; $bTOC = false; } # Format the date my $strDate = $oRelease->paramGet('date'); my $strDateOut = ""; my @stryMonth = ('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); if ($strDate =~ /^X/) { $strDateOut .= 'No Release Date Set'; } else { if ($strDate !~ /^(XXXX-XX-XX)|([0-9]{4}-[0-9]{2}-[0-9]{2})$/) { confess &log(ASSERT, "invalid date ${strDate} for release {$strVersion}"); } $strDateOut .= 'Released ' . $stryMonth[(substr($strDate, 5, 2) - 1)] . ' ' . (substr($strDate, 8, 2) + 0) . ', ' . substr($strDate, 0, 4); } # Add section and titles my $oReleaseSection = $oSection->nodeAdd('section', undef, {id => $strVersion, toc => !$bTOC ? 'n' : undef}); $oReleaseSection->paramSet(XML_SECTION_PARAM_ANCHOR, XML_SECTION_PARAM_ANCHOR_VALUE_NOINHERIT); $oReleaseSection->nodeAdd('title')->textSet( "v${strVersion} " . ($bReleaseDev ? '' : 'Release ') . 'Notes'); $oReleaseSection->nodeAdd('subtitle')->textSet($oRelease->paramGet('title')); $oReleaseSection->nodeAdd('subsubtitle')->textSet($strDateOut); # Add release sections my $bAdditionalNotes = false; my $bReleaseNote = false; my $hSectionType = { &XML_RELEASE_CORE_LIST => {title => 'Core', type => 'core'}, &XML_RELEASE_DOC_LIST => {title => 'Documentation', type => 'doc'}, &XML_RELEASE_TEST_LIST => {title => 'Test Suite', type => 'test'}, }; foreach my $strSectionType (XML_RELEASE_CORE_LIST, XML_RELEASE_DOC_LIST, XML_RELEASE_TEST_LIST) { if ($oRelease->nodeTest($strSectionType)) { # Add release item types my $hItemType = { &XML_RELEASE_BUG_LIST => {title => 'Bug Fixes', type => 'bug'}, &XML_RELEASE_FEATURE_LIST => {title => 'Features', type => 'feature'}, &XML_RELEASE_IMPROVEMENT_LIST => {title => 'Improvements', type => 'improvement'}, &XML_RELEASE_DEVELOPMENT_LIST => {title => 'Development', type => 'development'}, }; foreach my $strItemType ( XML_RELEASE_BUG_LIST, XML_RELEASE_FEATURE_LIST, XML_RELEASE_IMPROVEMENT_LIST, XML_RELEASE_DEVELOPMENT_LIST) { next if (!$self->{bDev} && $strItemType eq XML_RELEASE_DEVELOPMENT_LIST); if ($oRelease->nodeGet($strSectionType)->nodeTest($strItemType)) { if ($strSectionType ne XML_RELEASE_CORE_LIST && !$bAdditionalNotes) { $oReleaseSection->nodeAdd('subtitle')->textSet('Additional Notes'); $bAdditionalNotes = true; } # Add release note if present if (!$bReleaseNote && $oRelease->nodeGet($strSectionType)->nodeTest('p')) { $oReleaseSection->nodeAdd('p')->textSet($oRelease->nodeGet($strSectionType)->nodeGet('p')->textGet()); $bReleaseNote = true; } my $strTypeText = ($strSectionType eq XML_RELEASE_CORE_LIST ? '' : $$hSectionType{$strSectionType}{title}) . ' ' . $$hItemType{$strItemType}{title} . ':'; $oReleaseSection-> nodeAdd('p')->textSet( {name => 'text', children=> [{name => 'b', value => $strTypeText}]}); my $oList = $oReleaseSection->nodeAdd('list'); # Add release items foreach my $oReleaseFeature ($oRelease->nodeGet($strSectionType)-> nodeGet($strItemType)->nodeList('release-item')) { my @rhyReleaseItemP = $oReleaseFeature->nodeList('p'); my $oReleaseItemText = $rhyReleaseItemP[0]->textGet(); # Check release item commits if ($bReleaseCheckCommit && $strItemType ne XML_RELEASE_DEVELOPMENT_LIST) { my @oyCommit = $oReleaseFeature->nodeList('commit', false); # If no commits found then try to use the description as the commit subject if (@oyCommit == 0) { my $strSubject = $oRender->processText($oReleaseItemText); my $rhCommit = $self->commitFindSubject(\@rhyReleaseCommit, $strSubject, false); if (!defined($rhCommit)) { $self->commitError( "unable to find commit or no subject match for release ${strVersion} item" . " '${strSubject}'", \@stryReleaseCommitRemaining, $rhReleaseCommitRemaining); my $strCommit = $rhCommit->{commit}; @stryReleaseCommitRemaining = grep(!/$strCommit/, @stryReleaseCommitRemaining); } } # Check the rest of the commits to ensure they exist foreach my $oCommit (@oyCommit) { my $strSubject = $oCommit->paramGet('subject'); my $rhCommit = $self->commitFindSubject(\@rhyReleaseCommit, $strSubject, false); if (defined($rhCommit)) { my $strCommit = $rhCommit->{commit}; @stryReleaseCommitRemaining = grep(!/$strCommit/, @stryReleaseCommitRemaining); } else { $self->commitError( "unable to find release ${strVersion} commit subject '${strSubject}' in list", \@stryReleaseCommitRemaining, $rhReleaseCommitRemaining); } } } # Append the rest of the text if (@rhyReleaseItemP > 1) { shift(@rhyReleaseItemP); push(@{$oReleaseItemText->{oDoc}{children}}, ' '); foreach my $rhReleaseItemP (@rhyReleaseItemP) { push(@{$oReleaseItemText->{oDoc}{children}}, @{$rhReleaseItemP->textGet()->{oDoc}{children}}); } } # Append contributor info my $strContributorText = $self->contributorTextGet($oReleaseFeature, $$hItemType{$strItemType}{type}); if (defined($strContributorText)) { push(@{$oReleaseItemText->{oDoc}{children}}, ' ('); push(@{$oReleaseItemText->{oDoc}{children}}, {name => 'i', value => $strContributorText}); push(@{$oReleaseItemText->{oDoc}{children}}, ')'); } # Add the list item $oList->nodeAdd('list-item')->textSet($oReleaseItemText); } } } } } # Error if there are commits left over # if ($bReleaseCheckCommit && @stryReleaseCommitRemaining != 0) # { # $self->commitError( # "unassigned commits for release ${strVersion}", \@stryReleaseCommitRemaining, $rhReleaseCommitRemaining); # } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oDoc', value => $oDoc} ); } 1; pgbackrest-release-2.24/doc/lib/BackRestDoc/Html/000077500000000000000000000000001362531507100215525ustar00rootroot00000000000000pgbackrest-release-2.24/doc/lib/BackRestDoc/Html/DocHtmlBuilder.pm000066400000000000000000000226671362531507100247660ustar00rootroot00000000000000#################################################################################################################################### # DOC HTML BUILDER MODULE #################################################################################################################################### package BackRestDoc::Html::DocHtmlBuilder; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use pgBackRest::Common::Log; use pgBackRest::Common::String; use BackRestDoc::Html::DocHtmlElement; #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Class name # Create the class hash my $self = {}; bless $self, $class; $self->{strClass} = $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{strName}, $self->{strTitle}, $self->{strFavicon}, $self->{strLogo}, $self->{strDescription}, $self->{bPretty}, $self->{bCompact}, $self->{strCss}, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'strName'}, {name => 'strTitle'}, {name => 'strFavicon', required => false}, {name => 'strLogo', required => false}, {name => 'strDescription', required => false}, {name => 'bPretty', default => false}, {name => 'bCompact', default => false}, {name => 'strCss', required => false}, ); $self->{oBody} = new BackRestDoc::Html::DocHtmlElement(HTML_BODY); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # indent # # Indent html #################################################################################################################################### sub indent { my $self = shift; my $iDepth = shift; return $self->{bPretty} ? (' ' x $iDepth) : ''; } #################################################################################################################################### # lf # # Add a linefeed. #################################################################################################################################### sub lf { my $self = shift; return $self->{bPretty} ? "\n" : ''; } #################################################################################################################################### # bodyGet # # Get the body element. #################################################################################################################################### sub bodyGet { my $self = shift; return $self->{oBody}; } #################################################################################################################################### # htmlRender # # Render each html element. #################################################################################################################################### sub htmlRender { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oElement, $iDepth ) = logDebugParam ( __PACKAGE__ . '->htmlRender', \@_, {name => 'oElement', trace => true}, {name => 'iDepth', trace => true} ); # Build the header my $strHtml = $self->indent($iDepth) . "<$oElement->{strType}" . (defined($oElement->{strClass}) ? " class=\"$oElement->{strClass}\"": '') . (defined($oElement->{strRef}) ? " href=\"$oElement->{strRef}\"": '') . (defined($oElement->{strId}) ? " id=\"$oElement->{strId}\"": '') . (defined($oElement->{strExtra}) ? " $oElement->{strExtra}": '') . '>'; if (defined($oElement->{strContent})) { if (!defined($oElement->{bPre}) || !$oElement->{bPre}) { $oElement->{strContent} =~ s/\n/\\n/g; $oElement->{strContent} = trim($oElement->{strContent}); $strHtml .= $self->lf(); } else { $oElement->{strContent} =~ s/\&/\&\;/g; } $strHtml .= $oElement->{strContent}; if (!defined($oElement->{bPre}) || !$oElement->{bPre}) { $strHtml .= $self->lf() . $self->indent($iDepth); } } else { if (!($oElement->{strType} eq HTML_A && @{$oElement->{oyElement}} == 0)) { $strHtml .= $self->lf(); } foreach my $oChildElement (@{$oElement->{oyElement}}) { $strHtml .= $self->htmlRender($oChildElement, $iDepth + 1); } if (!($oElement->{strType} eq HTML_A && @{$oElement->{oyElement}} == 0)) { $strHtml .= $self->indent($iDepth); } } $strHtml .= "{strType}>" . $self->lf(); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strHtml', value => $strHtml, trace => true} ); } #################################################################################################################################### # escape # # Generate the HTML. #################################################################################################################################### sub escape { my $self = shift; my $strBuffer = shift; $strBuffer =~ s/\&/\&\;/g; $strBuffer =~ s/\htmlGet'); # Build the header my $strHtml = $self->indent(0) . "" . $self->lf() . $self->indent(0) . "" . $self->lf() . $self->indent(0) . "" . $self->lf() . $self->indent(1) . '' . $self->escape($self->{strTitle}) . '' . $self->lf() . $self->indent(1) . "" . $self->lf(); if (!$self->{bCompact}) { $strHtml .= # $self->indent(1) . "" . $self->lf() . $self->indent(1) . '' . $self->lf() . $self->indent(1) . '' . $self->lf() . $self->indent(1) . '' . $self->lf(); if (defined($self->{strFavicon})) { $strHtml .= $self->indent(1) . "{strFavicon}\" type=\"image/png\">" . $self->lf(); } if (defined($self->{strLogo})) { $strHtml .= $self->indent(1) . "" . $self->lf() . $self->indent(1) . "{strLogo}\">" . $self->lf(); } if (defined($self->{strDescription})) { $strHtml .= $self->indent(1) . '' . $self->lf() . $self->indent(1) . '' . $self->lf(); } } if (defined($self->{strCss})) { my $strCss = $self->{strCss}; if (!$self->{bPretty}) { $strCss =~ s/^\s+//mg; $strCss =~ s/\n//g; $strCss =~ s/\/\*.*?\*\///g; } $strHtml .= $self->indent(1) . '' . $self->lf(); } else { $strHtml .= $self->indent(1) . "" . $self->lf(); } $strHtml .= $self->indent(0) . "" . $self->lf() . $self->htmlRender($self->bodyGet(), 0); # Complete the html $strHtml .= $self->indent(0) . "" . $self->lf(); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strHtml', value => $strHtml, trace => true} ); } 1; pgbackrest-release-2.24/doc/lib/BackRestDoc/Html/DocHtmlElement.pm000066400000000000000000000125261362531507100247620ustar00rootroot00000000000000#################################################################################################################################### # DOC HTML ELEMENT MODULE #################################################################################################################################### package BackRestDoc::Html::DocHtmlElement; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use Scalar::Util qw(blessed); use pgBackRest::Common::Log; #################################################################################################################################### # Html Element Types #################################################################################################################################### use constant HTML_A => 'a'; push @EXPORT, qw(HTML_A); use constant HTML_BODY => 'body'; push @EXPORT, qw(HTML_BODY); use constant HTML_PRE => 'pre'; push @EXPORT, qw(HTML_PRE); use constant HTML_DIV => 'div'; push @EXPORT, qw(HTML_DIV); use constant HTML_SPAN => 'span'; push @EXPORT, qw(HTML_SPAN); use constant HTML_TABLE => 'table'; push @EXPORT, qw(HTML_TABLE); use constant HTML_TABLE_CAPTION => 'caption'; push @EXPORT, qw(HTML_TABLE_CAPTION); use constant HTML_TD => 'td'; push @EXPORT, qw(HTML_TD); use constant HTML_TH => 'th'; push @EXPORT, qw(HTML_TH); use constant HTML_TR => 'tr'; push @EXPORT, qw(HTML_TR); use constant HTML_UL => 'ul'; push @EXPORT, qw(HTML_UL); use constant HTML_LI => 'li'; push @EXPORT, qw(HTML_LI); #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Class name # Create the class hash my $self = {}; bless $self, $class; $self->{strClass} = $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{strType}, $self->{strClass}, my $oParam ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'strType', trace => true}, {name => 'strClass', required => false, trace => true}, {name => 'oParam', required => false, trace => true} ); $self->{oyElement} = []; $self->{strContent} = $$oParam{strContent}; $self->{strId} = $$oParam{strId}; $self->{strRef} = $$oParam{strRef}; $self->{strExtra} = $$oParam{strExtra}; $self->{bPre} = $$oParam{bPre}; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # addNew # # Create a new element and add it. #################################################################################################################################### sub addNew { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strType, $strClass, $oParam ) = logDebugParam ( __PACKAGE__ . '->addNew', \@_, {name => 'strType', trace => true}, {name => 'strClass', required => false, trace => true}, {name => 'oParam', required => false, trace => true} ); my $oElement = new BackRestDoc::Html::DocHtmlElement($strType, $strClass, $oParam); $self->add($oElement); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oElement', value => $oElement, trace => true} ); } #################################################################################################################################### # add # # Add an element. #################################################################################################################################### sub add { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oElement ) = logDebugParam ( __PACKAGE__ . '->add', \@_, {name => 'oElement', trace => true} ); if (!(blessed($oElement) && $oElement->isa('BackRestDoc::Html::DocHtmlElement'))) { confess &log(ASSERT, 'oElement must be a valid element object'); } push(@{$self->{oyElement}}, $oElement); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oElement', value => $oElement, trace => true} ); } 1; pgbackrest-release-2.24/doc/lib/BackRestDoc/Html/DocHtmlPage.pm000066400000000000000000000624141362531507100242460ustar00rootroot00000000000000#################################################################################################################################### # DOC HTML PAGE MODULE #################################################################################################################################### package BackRestDoc::Html::DocHtmlPage; use parent 'BackRestDoc::Common::DocExecute'; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Data::Dumper; use Exporter qw(import); our @EXPORT = qw(); use pgBackRest::Common::Log; use pgBackRest::Common::String; use BackRestDoc::Common::DocConfig; use BackRestDoc::Common::DocManifest; use BackRestDoc::Common::DocRender; use BackRestDoc::Html::DocHtmlBuilder; use BackRestDoc::Html::DocHtmlElement; #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Class name # Assign function parameters, defaults, and log debug info my ( $strOperation, $oManifest, $strRenderOutKey, $bMenu, $bExe, $bCompact, $strCss, $bPretty, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oManifest'}, {name => 'strRenderOutKey'}, {name => 'bMenu'}, {name => 'bExe'}, {name => 'bCompact'}, {name => 'strCss'}, {name => 'bPretty'}, ); # Create the class hash my $self = $class->SUPER::new(RENDER_TYPE_HTML, $oManifest, $strRenderOutKey, $bExe); bless $self, $class; $self->{bMenu} = $bMenu; $self->{bCompact} = $bCompact; $self->{strCss} = $strCss; $self->{bPretty} = $bPretty; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # process # # Generate the site html #################################################################################################################################### sub process { my $self = shift; # Assign function parameters, defaults, and log debug info my $strOperation = logDebugParam(__PACKAGE__ . '->process'); # Working variables my $oPage = $self->{oDoc}; my $oRender = $self->{oManifest}->renderGet(RENDER_TYPE_HTML); # Initialize page my $strTitle = $oPage->paramGet('title'); my $strSubTitle = $oPage->paramGet('subtitle', false); my $oHtmlBuilder = new BackRestDoc::Html::DocHtmlBuilder( $self->{oManifest}->variableReplace('{[project]}' . (defined($self->{oManifest}->variableGet('project-tagline')) ? ' - ' . $self->{oManifest}->variableGet('project-tagline') : '')), $self->{oManifest}->variableReplace($strTitle . (defined($strSubTitle) ? " - ${strSubTitle}" : '')), $self->{oManifest}->variableGet('project-favicon'), $self->{oManifest}->variableGet('project-logo'), $self->{oManifest}->variableReplace(trim($self->{oDoc}->fieldGet('description'))), $self->{bPretty}, $self->{bCompact}, $self->{bCompact} ? $self->{strCss} : undef); # Generate header my $oPageHeader = $oHtmlBuilder->bodyGet()->addNew(HTML_DIV, 'page-header'); # add the logo to the header if (defined($self->{oManifest}->variableGet('html-logo'))) { $oPageHeader-> addNew(HTML_DIV, 'page-header-logo', {strContent =>"{[html-logo]}"}); } $oPageHeader-> addNew(HTML_DIV, 'page-header-title', {strContent => $strTitle}); if (defined($strSubTitle)) { $oPageHeader-> addNew(HTML_DIV, 'page-header-subtitle', {strContent => $strSubTitle}); } # Generate menu if ($self->{bMenu}) { my $oMenuBody = $oHtmlBuilder->bodyGet()->addNew(HTML_DIV, 'page-menu')->addNew(HTML_DIV, 'menu-body'); # Get the menu in the order listed in the manifest.xml foreach my $strRenderOutKey (@{${$oRender}{stryOrder}}) { # Do not output the menu item for the page the user is on (e.g. on Command page, the Command menu item will not appear) if ($strRenderOutKey ne $self->{strRenderOutKey}) { my $oRenderOut = $self->{oManifest}->renderOutGet(RENDER_TYPE_HTML, $strRenderOutKey); if (defined($$oRenderOut{menu})) { $oMenuBody->addNew(HTML_DIV, 'menu')->addNew( HTML_A, 'menu-link', {strContent => $$oRenderOut{menu}, strRef => $strRenderOutKey eq 'index' ? '{[project-url-root]}' : "${strRenderOutKey}.html"}); } } } } # Generate table of contents my $oPageTocBody; if ($self->{bToc}) { my $oPageToc = $oHtmlBuilder->bodyGet()->addNew(HTML_DIV, 'page-toc'); $oPageToc->addNew(HTML_DIV, 'page-toc-header')->addNew(HTML_DIV, 'page-toc-title', {strContent => "Table of Contents"}); $oPageTocBody = $oPageToc-> addNew(HTML_DIV, 'page-toc-body'); } # Generate body my $oPageBody = $oHtmlBuilder->bodyGet()->addNew(HTML_DIV, 'page-body'); my $iSectionNo = 1; # Render sections foreach my $oSection ($oPage->nodeList('section')) { my ($oChildSectionElement, $oChildSectionTocElement) = $self->sectionProcess($oSection, undef, "${iSectionNo}", 1); $oPageBody->add($oChildSectionElement); if (defined($oPageTocBody) && defined($oChildSectionTocElement)) { $oPageTocBody->add($oChildSectionTocElement); } $iSectionNo++; } my $oPageFooter = $oHtmlBuilder->bodyGet()-> addNew(HTML_DIV, 'page-footer', {strContent => '{[html-footer]}'}); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strHtml', value => $oHtmlBuilder->htmlGet(), trace => true} ); } #################################################################################################################################### # sectionProcess #################################################################################################################################### sub sectionProcess { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oSection, $strAnchor, $strSectionNo, $iDepth ) = logDebugParam ( __PACKAGE__ . '->sectionProcess', \@_, {name => 'oSection'}, {name => 'strAnchor', required => false}, {name => 'strSectionNo'}, {name => 'iDepth'} ); if ($oSection->paramGet('log')) { &log(INFO, (' ' x ($iDepth + 1)) . 'process section: ' . $oSection->paramGet('path')); } if ($iDepth > 3) { confess &log(ASSERT, "section depth of ${iDepth} exceeds maximum"); } # Working variables $strAnchor = ($oSection->paramTest(XML_SECTION_PARAM_ANCHOR, XML_SECTION_PARAM_ANCHOR_VALUE_NOINHERIT) ? '' : (defined($strAnchor) ? "${strAnchor}/" : '')) . $oSection->paramGet('id'); # Create the section toc element my $oSectionTocElement = new BackRestDoc::Html::DocHtmlElement(HTML_DIV, "section${iDepth}-toc"); # Create the section element my $oSectionElement = new BackRestDoc::Html::DocHtmlElement(HTML_DIV, "section${iDepth}"); # Add the section anchor $oSectionElement->addNew(HTML_A, undef, {strId => $strAnchor}); # Add the section title to section and toc my $oSectionHeaderElement = $oSectionElement->addNew(HTML_DIV, "section${iDepth}-header"); my $strSectionTitle = $self->processText($oSection->nodeGet('title')->textGet()); if ($self->{bTocNumber}) { $oSectionHeaderElement->addNew(HTML_DIV, "section${iDepth}-number", {strContent => $strSectionNo}); } $oSectionHeaderElement->addNew(HTML_DIV, "section${iDepth}-title", {strContent => $strSectionTitle}); if ($self->{bTocNumber}) { $oSectionTocElement->addNew(HTML_DIV, "section${iDepth}-toc-number", {strContent => $strSectionNo}); } my $oTocSectionTitleElement = $oSectionTocElement->addNew(HTML_DIV, "section${iDepth}-toc-title"); $oTocSectionTitleElement->addNew( HTML_A, undef, {strContent => $strSectionTitle, strRef => "#${strAnchor}"}); # Add the section intro if it exists if (defined($oSection->textGet(false))) { $oSectionElement-> addNew(HTML_DIV, "section-intro", {strContent => $self->processText($oSection->textGet())}); } # Add the section body my $oSectionBodyElement = $oSectionElement->addNew(HTML_DIV, "section-body"); # Process each child my $iSectionNo = 1; foreach my $oChild ($oSection->nodeList()) { &log(DEBUG, (' ' x ($iDepth + 2)) . 'process child ' . $oChild->nameGet()); # Execute a command if ($oChild->nameGet() eq 'execute-list') { my $bShow = $oChild->paramTest('show', 'n') ? false : true; my $oExecuteBodyElement; my $bFirst = true; my $strHostName = $self->{oManifest}->variableReplace($oChild->paramGet('host')); if ($bShow) { my $oSectionBodyExecute = $oSectionBodyElement->addNew(HTML_DIV, "execute"); $oSectionBodyExecute-> addNew(HTML_DIV, "execute-title", {strContent => "${strHostName} " . $self->processText($oChild->nodeGet('title')->textGet())}); $oExecuteBodyElement = $oSectionBodyExecute->addNew(HTML_DIV, "execute-body"); } foreach my $oExecute ($oChild->nodeList('execute')) { my $bExeShow = !$oExecute->paramTest('show', 'n'); my $bExeExpectedError = defined($oExecute->paramGet('err-expect', false)); my ($strCommand, $strOutput) = $self->execute( $oSection, $strHostName, $oExecute, {iIndent => $iDepth + 3, bShow => $bShow && $bExeShow}); if ($bShow && $bExeShow) { # Add continuation chars and proper spacing $strCommand =~ s/\n/\n /smg; $oExecuteBodyElement-> addNew(HTML_PRE, "execute-body-cmd", {strContent => $strCommand, bPre => true}); my $strHighLight = $self->{oManifest}->variableReplace($oExecute->fieldGet('exe-highlight', false)); my $bHighLightFound = false; if (defined($strOutput)) { my $bHighLightOld; my $strHighLightOutput; if ($oExecute->fieldTest('exe-highlight-type', 'error')) { $bExeExpectedError = true; } foreach my $strLine (split("\n", $strOutput)) { my $bHighLight = defined($strHighLight) && $strLine =~ /$strHighLight/; if (defined($bHighLightOld) && $bHighLight != $bHighLightOld) { $oExecuteBodyElement-> addNew(HTML_PRE, 'execute-body-output' . ($bHighLightOld ? '-highlight' . ($bExeExpectedError ? '-error' : '') : ''), {strContent => $strHighLightOutput, bPre => true}); undef($strHighLightOutput); } $strHighLightOutput .= (defined($strHighLightOutput) ? "\n" : '') . $strLine; $bHighLightOld = $bHighLight; $bHighLightFound = $bHighLightFound ? true : $bHighLight ? true : false; } if (defined($bHighLightOld)) { $oExecuteBodyElement-> addNew(HTML_PRE, 'execute-body-output' . ($bHighLightOld ? '-highlight' . ($bExeExpectedError ? '-error' : '') : ''), {strContent => $strHighLightOutput, bPre => true}); } $bFirst = true; } if ($self->{bExe} && $self->isRequired($oSection) && defined($strHighLight) && !$bHighLightFound) { confess &log(ERROR, "unable to find a match for highlight: ${strHighLight}"); } } $bFirst = false; } } # Add code block elsif ($oChild->nameGet() eq 'code-block') { my $strValue = $oChild->valueGet(); # Trim linefeeds from the beginning and all whitespace from the end $strValue =~ s/^\n+|\s+$//g; # Find the line with the fewest leading spaces my $iSpaceMin = undef; foreach my $strLine (split("\n", $strValue)) { $strLine =~ s/\s+$//; my $iSpaceMinTemp = length($strLine) - length(trim($strLine)); if (!defined($iSpaceMin) || $iSpaceMinTemp < $iSpaceMin) { $iSpaceMin = $iSpaceMinTemp; } } # Replace the leading spaces $strValue =~ s/^( ){$iSpaceMin}//smg; $oSectionBodyElement->addNew( HTML_PRE, 'code-block', {strContent => $strValue, bPre => true}); } # Add table elsif ($oChild->nameGet() eq 'table') { my $oTableTitle; if ($oChild->nodeTest('title')) { $oTableTitle = $oChild->nodeGet('title'); } my $oTableElement = $oSectionBodyElement->addNew(HTML_TABLE, 'table'); my @oyColumn; # If there is a title element then add it as the caption for the table if (defined($oTableTitle)) { # Print the label (e.g. Table 1:) in front of the title if one exists my $strTableTitle = $oTableTitle->paramTest('label') ? ($oTableTitle->paramGet('label') . ': '. $self->processText($oTableTitle->textGet())) : $self->processText($oTableTitle->textGet()); $oTableElement->addNew(HTML_TABLE_CAPTION, 'table-caption', {strContent => $strTableTitle}); } # Build the header if ($oChild->nodeTest('table-header')) { my $oHeader = $oChild->nodeGet('table-header'); @oyColumn = $oHeader->nodeList('table-column'); my $oHeaderRowElement = $oTableElement->addNew(HTML_TR, 'table-header-row'); foreach my $oColumn (@oyColumn) { # Each column can have different alignment properties - if not set, then default to align left my $strAlign = $oColumn->paramGet("align", false, 'left'); my $bFill = $oColumn->paramTest('fill', 'y'); $oHeaderRowElement->addNew( HTML_TH, "table-header-${strAlign}" . ($bFill ? " table-header-fill" : ""), {strContent => $self->processText($oColumn->textGet())}); } } # Build the rows foreach my $oRow ($oChild->nodeGet('table-data')->nodeList('table-row')) { my $oRowElement = $oTableElement->addNew(HTML_TR, 'table-row'); my @oRowCellList = $oRow->nodeList('table-cell'); for (my $iRowCellIdx = 0; $iRowCellIdx < @oRowCellList; $iRowCellIdx++) { my $oRowCell = $oRowCellList[$iRowCellIdx]; # If a header row was defined, then get the column alignment, else default to left my $strAlign = @oyColumn > 0 ? $oyColumn[$iRowCellIdx]->paramGet("align", false, 'left') : 'left'; $oRowElement->addNew( HTML_TD, "table-data-${strAlign}", {strContent => $self->processText($oRowCell->textGet())}); } } } # Add descriptive text elsif ($oChild->nameGet() eq 'p') { $oSectionBodyElement-> addNew(HTML_DIV, 'section-body-text', {strContent => $self->processText($oChild->textGet())}); } # Add option descriptive text elsif ($oChild->nameGet() eq 'option-description') { my $strOption = $oChild->paramGet("key"); my $oDescription = ${$self->{oReference}->{oConfigHash}}{&CONFIG_HELP_OPTION}{$strOption}{&CONFIG_HELP_DESCRIPTION}; if (!defined($oDescription)) { confess &log(ERROR, "unable to find ${strOption} option in sections - try adding option?"); } $oSectionBodyElement-> addNew(HTML_DIV, 'section-body-text', {strContent => $self->processText($oDescription)}); } # Add cmd descriptive text elsif ($oChild->nameGet() eq 'cmd-description') { my $strCommand = $oChild->paramGet("key"); my $oDescription = ${$self->{oReference}->{oConfigHash}}{&CONFIG_HELP_COMMAND}{$strCommand}{&CONFIG_HELP_DESCRIPTION}; if (!defined($oDescription)) { confess &log(ERROR, "unable to find ${strCommand} command in sections - try adding command?"); } $oSectionBodyElement-> addNew(HTML_DIV, 'section-body-text', {strContent => $self->processText($oDescription)}); } # Add/remove backrest config options elsif ($oChild->nameGet() eq 'backrest-config') { my $oConfigElement = $self->backrestConfigProcess($oSection, $oChild, $iDepth + 3); if (defined($oConfigElement)) { $oSectionBodyElement->add($oConfigElement); } } # Add/remove postgres config options elsif ($oChild->nameGet() eq 'postgres-config') { my $oConfigElement = $self->postgresConfigProcess($oSection, $oChild, $iDepth + 3); if (defined($oConfigElement)) { $oSectionBodyElement->add($oConfigElement); } } # Add a list elsif ($oChild->nameGet() eq 'list') { my $oList = $oSectionBodyElement->addNew(HTML_UL, 'list-unordered'); foreach my $oListItem ($oChild->nodeList()) { $oList->addNew(HTML_LI, 'list-unordered', {strContent => $self->processText($oListItem->textGet())}); } } # Add a subtitle elsif ($oChild->nameGet() eq 'subtitle') { $oSectionBodyElement-> addNew(HTML_DIV, "section${iDepth}-subtitle", {strContent => $self->processText($oChild->textGet())}); } # Add a subsubtitle elsif ($oChild->nameGet() eq 'subsubtitle') { $oSectionBodyElement-> addNew(HTML_DIV, "section${iDepth}-subsubtitle", {strContent => $self->processText($oChild->textGet())}); } # Add a subsection elsif ($oChild->nameGet() eq 'section') { my ($oChildSectionElement, $oChildSectionTocElement) = $self->sectionProcess($oChild, $strAnchor, "${strSectionNo}.${iSectionNo}", $iDepth + 1); $oSectionBodyElement->add($oChildSectionElement); if (defined($oChildSectionTocElement)) { $oSectionTocElement->add($oChildSectionTocElement); } $iSectionNo++; } # Add an admonition (e.g. NOTE, WARNING, etc) elsif ($oChild->nameGet() eq 'admonition') { my $oAdmonition = $oSectionBodyElement->addNew(HTML_DIV, 'admonition'); $oAdmonition->addNew(HTML_DIV, $oChild->paramGet('type'), {strContent => uc($oChild->paramGet('type')) . ": "}); $oAdmonition->addNew(HTML_DIV, $oChild->paramGet('type') . '-text', {strContent => $self->processText($oChild->textGet())}); } # Check if the child can be processed by a parent else { $self->sectionChildProcess($oSection, $oChild, $iDepth + 1); } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oSectionElement', value => $oSectionElement, trace => true}, {name => 'oSectionTocElement', value => $oSection->paramTest('toc', 'n') ? undef : $oSectionTocElement, trace => true} ); } #################################################################################################################################### # backrestConfigProcess #################################################################################################################################### sub backrestConfigProcess { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oSection, $oConfig, $iDepth ) = logDebugParam ( __PACKAGE__ . '->backrestConfigProcess', \@_, {name => 'oSection'}, {name => 'oConfig'}, {name => 'iDepth'} ); # Generate the config my $oConfigElement; my ($strFile, $strConfig, $bShow) = $self->backrestConfig($oSection, $oConfig, $iDepth); if ($bShow) { my $strHostName = $self->{oManifest}->variableReplace($oConfig->paramGet('host')); # Render the config $oConfigElement = new BackRestDoc::Html::DocHtmlElement(HTML_DIV, "config"); $oConfigElement-> addNew(HTML_DIV, "config-title", {strContent => "${strHostName}:${strFile}" . " " . $self->processText($oConfig->nodeGet('title')->textGet())}); my $oConfigBodyElement = $oConfigElement->addNew(HTML_DIV, "config-body"); # # $oConfigBodyElement-> # addNew(HTML_DIV, "config-body-title", # {strContent => "${strFile}:"}); $oConfigBodyElement-> addNew(HTML_DIV, "config-body-output", {strContent => $strConfig}); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oConfigElement', value => $oConfigElement, trace => true} ); } #################################################################################################################################### # postgresConfigProcess #################################################################################################################################### sub postgresConfigProcess { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oSection, $oConfig, $iDepth ) = logDebugParam ( __PACKAGE__ . '->postgresConfigProcess', \@_, {name => 'oSection'}, {name => 'oConfig'}, {name => 'iDepth'} ); # Generate the config my $oConfigElement; my ($strFile, $strConfig, $bShow) = $self->postgresConfig($oSection, $oConfig, $iDepth); if ($bShow) { # Render the config my $strHostName = $self->{oManifest}->variableReplace($oConfig->paramGet('host')); $oConfigElement = new BackRestDoc::Html::DocHtmlElement(HTML_DIV, "config"); $oConfigElement-> addNew(HTML_DIV, "config-title", {strContent => "${strHostName}:${strFile}" . " " . $self->processText($oConfig->nodeGet('title')->textGet())}); my $oConfigBodyElement = $oConfigElement->addNew(HTML_DIV, "config-body"); # $oConfigBodyElement-> # addNew(HTML_DIV, "config-body-title", # {strContent => "append to ${strFile}:"}); $oConfigBodyElement-> addNew(HTML_DIV, "config-body-output", {strContent => defined($strConfig) ? $strConfig : ''}); $oConfig->fieldSet('actual-config', $strConfig); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oConfigElement', value => $oConfigElement, trace => true} ); } 1; pgbackrest-release-2.24/doc/lib/BackRestDoc/Html/DocHtmlSite.pm000066400000000000000000000130121362531507100242640ustar00rootroot00000000000000#################################################################################################################################### # DOC HTML SITE MODULE #################################################################################################################################### package BackRestDoc::Html::DocHtmlSite; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Data::Dumper; use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use File::Copy; use POSIX qw(strftime); use Storable qw(dclone); use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Version; use pgBackRestTest::Common::ExecuteTest; use BackRestDoc::Common::DocConfig; use BackRestDoc::Common::DocManifest; use BackRestDoc::Html::DocHtmlPage; #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Class name # Create the class hash my $self = {}; bless $self, $class; $self->{strClass} = $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{oManifest}, $self->{strXmlPath}, $self->{strHtmlPath}, $self->{strCssFile}, $self->{strFaviconFile}, $self->{strProjectLogoFile}, $self->{bExe} ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oManifest'}, {name => 'strXmlPath'}, {name => 'strHtmlPath'}, {name => 'strCssFile'}, {name => 'strFaviconFile', required => false}, {name => 'strProjectLogoFile', required => false}, {name => 'bExe'} ); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # process # # Generate the site html #################################################################################################################################### sub process { my $self = shift; # Assign function parameters, defaults, and log debug info my $strOperation = logDebugParam(__PACKAGE__ . '->process'); # Get render options my $oRender = $self->{oManifest}->renderGet(RENDER_TYPE_HTML); my $bMenu = $$oRender{&RENDER_MENU}; my $bPretty = $$oRender{&RENDER_PRETTY}; my $bCompact = $$oRender{&RENDER_COMPACT}; if (!$bCompact) { # Copy the css file my $strCssFileDestination = "$self->{strHtmlPath}/default.css"; copy($self->{strCssFile}, $strCssFileDestination) or confess &log(ERROR, "unable to copy $self->{strCssFile} to ${strCssFileDestination}"); # Copy the favicon file if (defined($self->{strFaviconFile})) { my $strFaviconFileDestination = "$self->{strHtmlPath}/" . $self->{oManifest}->variableGet('project-favicon'); copy($self->{strFaviconFile}, $strFaviconFileDestination) or confess &log(ERROR, "unable to copy $self->{strFaviconFile} to ${strFaviconFileDestination}"); } # Copy the project logo file if (defined($self->{strProjectLogoFile})) { my $strProjectLogoFileDestination = "$self->{strHtmlPath}/" . $self->{oManifest}->variableGet('project-logo'); copy($self->{strProjectLogoFile}, $strProjectLogoFileDestination) or confess &log(ERROR, "unable to copy $self->{strProjectLogoFile} to ${strProjectLogoFileDestination}"); } } foreach my $strPageId ($self->{oManifest}->renderOutList(RENDER_TYPE_HTML)) { &log(INFO, " render out: ${strPageId}"); my $strHtml; my $oRenderOut = $self->{oManifest}->renderOutGet(RENDER_TYPE_HTML, $strPageId); eval { $strHtml = $self->{oManifest}->variableReplace( new BackRestDoc::Html::DocHtmlPage( $self->{oManifest}, $strPageId, $bMenu, $self->{bExe}, $bCompact, ${$self->{oManifest}->storage()->get($self->{strCssFile})}, $bPretty)->process()); return true; } or do { my $oException = $@; if (exceptionCode($oException) == ERROR_FILE_INVALID) { my $oRenderOut = $self->{oManifest}->renderOutGet(RENDER_TYPE_HTML, $strPageId); $self->{oManifest}->cacheReset($$oRenderOut{source}); $strHtml = $self->{oManifest}->variableReplace( new BackRestDoc::Html::DocHtmlPage( $self->{oManifest}, $strPageId, $bMenu, $self->{bExe}, $bCompact, ${$self->{oManifest}->storage()->get($self->{strCssFile})}, $bPretty)->process()); } else { confess $oException; } }; # Save the html page my $strFile = "$self->{strHtmlPath}/" . (defined($$oRenderOut{file}) ? $$oRenderOut{file} : "${strPageId}.html"); $self->{oManifest}->storage()->put($strFile, $strHtml); } # Return from function and log return values if any logDebugReturn($strOperation); } 1; pgbackrest-release-2.24/doc/lib/BackRestDoc/Latex/000077500000000000000000000000001362531507100217235ustar00rootroot00000000000000pgbackrest-release-2.24/doc/lib/BackRestDoc/Latex/DocLatex.pm000066400000000000000000000136421362531507100237720ustar00rootroot00000000000000#################################################################################################################################### # DOC LATEX MODULE #################################################################################################################################### package BackRestDoc::Latex::DocLatex; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Cwd qw(abs_path); use Data::Dumper; use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname basename); use File::Copy; use POSIX qw(strftime); use Storable qw(dclone); use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Version; use pgBackRestTest::Common::ExecuteTest; use BackRestDoc::Common::DocConfig; use BackRestDoc::Common::DocManifest; use BackRestDoc::Latex::DocLatexSection; #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Class name # Create the class hash my $self = {}; bless $self, $class; $self->{strClass} = $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{oManifest}, $self->{strXmlPath}, $self->{strLatexPath}, $self->{strPreambleFile}, $self->{bExe} ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oManifest'}, {name => 'strXmlPath'}, {name => 'strLatexPath'}, {name => 'strPreambleFile'}, {name => 'bExe'} ); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # process # # Generate the site html #################################################################################################################################### sub process { my $self = shift; # Assign function parameters, defaults, and log debug info my $strOperation = logDebugParam(__PACKAGE__ . '->process'); my $oRender = $self->{oManifest}->renderGet(RENDER_TYPE_PDF); my $strLogo = $self->{oManifest}->variableGet('pdf-resource-logo'); if (!defined($strLogo)) { $strLogo = 'blank.eps'; } my ($strExt) = $strLogo =~ /(\.[^.]+)$/; my $strLogoPath = defined($self->{oManifest}->variableGet('pdf-resource-path')) ? $self->{oManifest}->variableGet('pdf-resource-path') : "$self->{oManifest}{strDocPath}/resource/latex/"; # Copy the logo copy($strLogoPath . $strLogo, "$self->{strLatexPath}/logo$strExt") or confess &log(ERROR, "unable to copy logo"); my $strLatex = $self->{oManifest}->variableReplace( ${$self->{oManifest}->storage()->get($self->{strPreambleFile})}, 'latex') . "\n"; # ??? Temp hack for underscores in filename $strLatex =~ s/pgaudit\\\_doc/pgaudit\_doc/g; # Process the sources in the order listed in the manifest.xml foreach my $strPageId (@{${$self->{oManifest}->renderGet(RENDER_TYPE_PDF)}{stryOrder}}) { &log(INFO, " render out: ${strPageId}"); eval { my $oDocLatexSection = new BackRestDoc::Latex::DocLatexSection($self->{oManifest}, $strPageId, $self->{bExe}); # Save the html page $strLatex .= $oDocLatexSection->process(); return true; } or do { my $oException = $EVAL_ERROR; if (exceptionCode($oException) == ERROR_FILE_INVALID) { my $oRenderOut = $self->{oManifest}->renderOutGet(RENDER_TYPE_HTML, $strPageId); $self->{oManifest}->cacheReset($$oRenderOut{source}); my $oDocLatexSection = new BackRestDoc::Latex::DocLatexSection($self->{oManifest}, $strPageId, $self->{bExe}); # Save the html page $strLatex .= $oDocLatexSection->process(); } else { confess $oException; } }; } $strLatex .= "\n% " . ('-' x 130) . "\n% End document\n% " . ('-' x 130) . "\n\\end{document}\n"; # Get base name of output file to use for processing (my $strLatexFileBase = basename($$oRender{file})) =~ s/\.[^.]+$//; $strLatexFileBase = $self->{oManifest}->variableReplace($strLatexFileBase); # Name of latex file to use for output and processing my $strLatexFileName = $self->{oManifest}->variableReplace("$self->{strLatexPath}/" . $strLatexFileBase . '.tex'); # Output latex and build PDF $self->{oManifest}->storage()->put($strLatexFileName, $strLatex); executeTest("pdflatex -output-directory=$self->{strLatexPath} -shell-escape $strLatexFileName", {bSuppressStdErr => true}); executeTest("pdflatex -output-directory=$self->{strLatexPath} -shell-escape $strLatexFileName", {bSuppressStdErr => true}); # Determine path of output file my $strLatexOutputName = $oRender->{file}; if ($strLatexOutputName !~ /^\//) { $strLatexOutputName = abs_path($self->{strLatexPath} . "/" . $oRender->{file}); } # Copy pdf file if is is not already in the correct place if ($strLatexOutputName ne "$self->{strLatexPath}/" . $strLatexFileBase . '.pdf') { copy("$self->{strLatexPath}/" . $strLatexFileBase . '.pdf', $strLatexOutputName) or confess &log(ERROR, "unable to copy pdf to " . $strLatexOutputName); } # Return from function and log return values if any logDebugReturn($strOperation); } 1; pgbackrest-release-2.24/doc/lib/BackRestDoc/Latex/DocLatexSection.pm000066400000000000000000000373251362531507100253230ustar00rootroot00000000000000#################################################################################################################################### # DOC LATEX SECTION MODULE #################################################################################################################################### package BackRestDoc::Latex::DocLatexSection; use parent 'BackRestDoc::Common::DocExecute'; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use pgBackRest::Common::Log; use pgBackRest::Common::String; use BackRestDoc::Common::DocConfig; use BackRestDoc::Common::DocManifest; #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Class name # Assign function parameters, defaults, and log debug info my ( $strOperation, $oManifest, $strRenderOutKey, $bExe ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oManifest'}, {name => 'strRenderOutKey'}, {name => 'bExe'} ); # Create the class hash my $self = $class->SUPER::new('latex', $oManifest, $strRenderOutKey, $bExe); bless $self, $class; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # process # # Generate the site html #################################################################################################################################### sub process { my $self = shift; # Assign function parameters, defaults, and log debug info my $strOperation = logDebugParam(__PACKAGE__ . '->process'); # Working variables my $oPage = $self->{oDoc}; my $strLatex; # Initialize page my $strTitle = $oPage->paramGet('title'); my $strSubTitle = $oPage->paramGet('subtitle', false); # Render sections foreach my $oSection ($oPage->nodeList('section')) { $strLatex .= (defined($strLatex) ? "\n" : '') . $self->sectionProcess($oSection, undef, 1); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strHtml', value => $strLatex, trace => true} ); } #################################################################################################################################### # sectionProcess #################################################################################################################################### sub sectionProcess { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oSection, $strSection, $iDepth ) = logDebugParam ( __PACKAGE__ . '->sectionRender', \@_, {name => 'oSection'}, {name => 'strSection', required => false}, {name => 'iDepth'} ); if ($oSection->paramGet('log')) { &log(INFO, (' ' x ($iDepth + 1)) . 'process section: ' . $oSection->paramGet('path')); } # Create section type my $strSectionTitle = $self->processText($oSection->nodeGet('title')->textGet()); $strSection .= (defined($strSection) ? ', ' : '') . "'${strSectionTitle}' " . ('Sub' x ($iDepth - 1)) . "Section"; # Create section comment my $strLatex = "% ${strSection}\n% " . ('-' x 130) . "\n"; # Exclude from table of contents if requested if ($iDepth <= 3 && $oSection->paramTest('toc', 'n')) { $strLatex .= '\\addtocontents{toc}{\\protect\\setcounter{tocdepth}{' . ($iDepth - 1) . "}}\n"; } # Create section name $strLatex .= '\\'; if ($iDepth <= 3) { $strLatex .= ($iDepth > 1 ? ('sub' x ($iDepth - 1)) : '') . "section"; } elsif ($iDepth == 4) { $strLatex .= 'paragraph'; } else { confess &log(ASSERT, "section depth of ${iDepth} exceeds maximum"); } $strLatex .= "\{${strSectionTitle}\}\\label{" . $oSection->paramGet('path', false) . "}\n"; # Reset table of contents numbering if the section was excluded if ($iDepth <= 3 && $oSection->paramTest('toc', 'n')) { $strLatex .= '\\addtocontents{toc}{\\protect\\setcounter{tocdepth}{' . $iDepth . "}}\n"; } foreach my $oChild ($oSection->nodeList()) { &log(DEBUG, (' ' x ($iDepth + 2)) . 'process child ' . $oChild->nameGet()); # Execute a command if ($oChild->nameGet() eq 'execute-list') { my $bShow = $oChild->paramTest('show', 'n') ? false : true; my $strHostName = $self->{oManifest}->variableReplace($oChild->paramGet('host')); if ($bShow) { $strLatex .= "\n\\begin\{lstlisting\}[title=\{\\textnormal{\\textbf\{${strHostName}}} --- " . $self->processText($oChild->nodeGet('title')->textGet()) . "}]\n"; } foreach my $oExecute ($oChild->nodeList('execute')) { my $bExeShow = !$oExecute->paramTest('show', 'n'); my ($strCommand, $strOutput) = $self->execute( $oSection, $self->{oManifest}->variableReplace($oChild->paramGet('host')), $oExecute, {iIndent => $iDepth + 3, bShow => $bShow && $bExeShow}); if ($bShow && $bExeShow) { $strLatex .= "${strCommand}\n"; if (defined($strOutput)) { $strLatex .= "\nOutput:\n\n${strOutput}\n"; } } } if ($bShow) { $strLatex .= "\\end{lstlisting}\n"; } } # Add code block elsif ($oChild->nameGet() eq 'code-block') { my $strTitle = $self->{oManifest}->variableReplace($oChild->paramGet("title", false), 'latex'); if (defined($strTitle) && $strTitle eq '') { undef($strTitle) } # Begin the code listing if (!defined($strTitle)) { $strLatex .= "\\vspace{.75em}\n"; } $strLatex .= "\\begin\{lstlisting\}"; # Add the title if one is provided if (defined($strTitle)) { $strLatex .= "[title=\{${strTitle}:\}]"; } # End the code listing $strLatex .= "\n" . trim($oChild->valueGet()) . "\n" . "\\end{lstlisting}\n"; } # Add table elsif ($oChild->nameGet() eq 'table') { my $oHeader; my @oyColumn; if ($oChild->nodeTest('table-header')) { $oHeader = $oChild->nodeGet('table-header'); @oyColumn = $oHeader->nodeList('table-column'); } my $strWidth = '{' . (defined($oHeader) && $oHeader->paramTest('width') ? ($oHeader->paramGet('width') / 100) . '\textwidth' : '\textwidth') . '}'; # Build the table $strLatex .= "\\vspace{1em}\\newline\n\\begin{table}\n\\begin{tabularx}${strWidth}{|"; # Build the table header foreach my $oColumn (@oyColumn) { my $strAlignCode; my $strAlign = $oColumn->paramGet("align", false); # If fill is specified then use X or the custom designed alignments in the preamble to fill and justify the columns. if ($oColumn->paramTest('fill') && $oColumn->paramGet('fill', false) eq 'y') { if (!defined($strAlign) || $strAlign eq 'left') { $strAlignCode = 'X'; } elsif ($strAlign eq 'right') { $strAlignCode = 'R'; } elsif ($strAlign eq 'center') { $strAlignCode = 'C'; } else { confess &log(ERROR, "align '${strAlign}' not valid when fill=y"); } } else { if (!defined($strAlign) || $strAlign eq 'left') { $strAlignCode = 'l'; } elsif ($strAlign eq 'center') { $strAlignCode = 'c'; } elsif ($strAlign eq 'right') { $strAlignCode = 'r'; } else { confess &log(ERROR, "align '${strAlign}' not valid"); } } # $strLatex .= 'p{' . $oColumn->paramGet("width") . '} | '; $strLatex .= $strAlignCode . ' | '; } # If table-header not provided then default the column alignment and fill by using the number of columns in the 1st row if (!defined($oHeader)) { my @oyRow = $oChild->nodeGet('table-data')->nodeList('table-row'); foreach my $oRowCell ($oyRow[0]->nodeList('table-cell')) { $strLatex .= 'X|'; } } $strLatex .= "}\n"; my $strLine; if (defined($oHeader)) { $strLatex .= "\\hline"; $strLatex .= "\\rowcolor{ltgray}\n"; foreach my $oColumn (@oyColumn) { $strLine .= (defined($strLine) ? ' & ' : '') . '\textbf{' . $self->processText($oColumn->textGet()) . '}'; } $strLatex .= "${strLine}\\\\"; } # Build the rows foreach my $oRow ($oChild->nodeGet('table-data')->nodeList('table-row')) { $strLatex .= "\\hline\n"; undef($strLine); foreach my $oRowCell ($oRow->nodeList('table-cell')) { $strLine .= (defined($strLine) ? ' & ' : '') . $self->processText($oRowCell->textGet()); } $strLatex .= "${strLine}\\\\"; } $strLatex .= "\\hline\n\\end{tabularx}\n"; # If there is a title for the table, add it. Ignore the label since LaTex will automatically generate numbered labels. # e.g. Table 1: if ($oChild->nodeGet("title", false)) { $strLatex .= "\\caption{" . $self->processText($oChild->nodeGet("title")->textGet()) . "}\n"; } $strLatex .= "\\end{table}\n"; } # Add descriptive text elsif ($oChild->nameGet() eq 'p') { $strLatex .= "\n" . $self->processText($oChild->textGet()) . "\n"; } # Add option descriptive text elsif ($oChild->nameGet() eq 'option-description') { my $strOption = $oChild->paramGet("key"); my $oDescription = ${$self->{oReference}->{oConfigHash}}{&CONFIG_HELP_OPTION}{$strOption}{&CONFIG_HELP_DESCRIPTION}; if (!defined($oDescription)) { confess &log(ERROR, "unable to find ${strOption} option in sections - try adding option?"); } $strLatex .= "\n" . $self->processText($oDescription) . "\n"; } # Add cmd descriptive text elsif ($oChild->nameGet() eq 'cmd-description') { my $strCommand = $oChild->paramGet("key"); my $oDescription = ${$self->{oReference}->{oConfigHash}}{&CONFIG_HELP_COMMAND}{$strCommand}{&CONFIG_HELP_DESCRIPTION}; if (!defined($oDescription)) { confess &log(ERROR, "unable to find ${strCommand} command in sections - try adding command?"); } $strLatex .= "\n" . $self->processText($oDescription) . "\n"; } # Add a list elsif ($oChild->nameGet() eq 'list') { $strLatex .= "\n\\begin{itemize}"; foreach my $oListItem ($oChild->nodeList()) { $strLatex .= "\n \\item " . $self->processText($oListItem->textGet()); } $strLatex .= "\n\\end{itemize}"; } # Add/remove config options elsif ($oChild->nameGet() eq 'backrest-config' || $oChild->nameGet() eq 'postgres-config') { $strLatex .= $self->configProcess($oSection, $oChild, $iDepth + 3); } # Add a subsection elsif ($oChild->nameGet() eq 'section') { $strLatex .= "\n" . $self->sectionProcess($oChild, $strSection, $iDepth + 1); } # Add an admonition (e.g. NOTE, WARNING, etc) elsif ($oChild->nameGet() eq 'admonition') { $strLatex .= "\n\\begin{leftbar}"; $strLatex .= "\n\\textit{\\textbf{" . uc($oChild->paramGet('type')) . ": }"; $strLatex .= $self->processText($oChild->textGet()) . "}"; $strLatex .= "\n\\end{leftbar}\n"; } # Check if the child can be processed by a parent else { $self->sectionChildProcess($oSection, $oChild, $iDepth + 1); } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strSection', value => $strLatex, trace => true} ); } #################################################################################################################################### # configProcess #################################################################################################################################### sub configProcess { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oSection, $oConfig, $iDepth ) = logDebugParam ( __PACKAGE__ . '->configProcess', \@_, {name => 'oSection'}, {name => 'oConfig'}, {name => 'iDepth'} ); # Working variables my $strLatex = ''; my $strFile; my $strConfig; my $bShow = true; # Generate the config if ($oConfig->nameGet() eq 'backrest-config') { ($strFile, $strConfig, $bShow) = $self->backrestConfig($oSection, $oConfig, $iDepth); } else { ($strFile, $strConfig, $bShow) = $self->postgresConfig($oSection, $oConfig, $iDepth); } if ($bShow) { my $strHostName = $self->{oManifest}->variableReplace($oConfig->paramGet('host')); # Replace _ in filename $strFile = $self->variableReplace($strFile); # Render the config $strLatex = "\n\\begin\{lstlisting\}[title=\{\\textnormal{\\textbf\{${strHostName}}}:\\textnormal{\\texttt\{${strFile}}} --- " . $self->processText($oConfig->nodeGet('title')->textGet()) . "}]\n" . (defined($strConfig) ? $strConfig : '') . "\\end{lstlisting}\n"; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strConfig', value => $strLatex, trace => true} ); } 1; pgbackrest-release-2.24/doc/lib/BackRestDoc/Markdown/000077500000000000000000000000001362531507100224305ustar00rootroot00000000000000pgbackrest-release-2.24/doc/lib/BackRestDoc/Markdown/DocMarkdown.pm000066400000000000000000000057721362531507100252110ustar00rootroot00000000000000#################################################################################################################################### # DOC MARKDOWN MODULE #################################################################################################################################### package BackRestDoc::Markdown::DocMarkdown; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Data::Dumper; use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use File::Copy; use POSIX qw(strftime); use Storable qw(dclone); use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Version; use pgBackRestTest::Common::ExecuteTest; use BackRestDoc::Common::DocConfig; use BackRestDoc::Common::DocManifest; use BackRestDoc::Markdown::DocMarkdownRender; #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Class name # Create the class hash my $self = {}; bless $self, $class; $self->{strClass} = $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{oManifest}, $self->{strXmlPath}, $self->{strMarkdownPath}, $self->{bExe} ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oManifest'}, {name => 'strXmlPath'}, {name => 'strMarkdownPath'}, {name => 'bExe'} ); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # process # # Generate the site html #################################################################################################################################### sub process { my $self = shift; # Assign function parameters, defaults, and log debug info my $strOperation = logDebugParam(__PACKAGE__ . '->process'); foreach my $strRenderOutId ($self->{oManifest}->renderOutList(RENDER_TYPE_MARKDOWN)) { my $oRenderOut = $self->{oManifest}->renderOutGet(RENDER_TYPE_MARKDOWN, $strRenderOutId); my $strFile = "$self->{strMarkdownPath}/" . (defined($$oRenderOut{file}) ? $$oRenderOut{file} : "${strRenderOutId}.md"); &log(INFO, " render out: ${strRenderOutId}"); # Save the html page $self->{oManifest}->storage()->put( $strFile, $self->{oManifest}->variableReplace((new BackRestDoc::Markdown::DocMarkdownRender($self->{oManifest}, $strRenderOutId, $self->{bExe}))->process())); } # Return from function and log return values if any logDebugReturn($strOperation); } 1; pgbackrest-release-2.24/doc/lib/BackRestDoc/Markdown/DocMarkdownRender.pm000066400000000000000000000473001362531507100263420ustar00rootroot00000000000000#################################################################################################################################### # DOC MARKDOWN RENDER MODULE #################################################################################################################################### package BackRestDoc::Markdown::DocMarkdownRender; use parent 'BackRestDoc::Common::DocExecute'; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Data::Dumper; use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use File::Copy; use Storable qw(dclone); use pgBackRest::Common::Log; use pgBackRest::Common::String; use BackRestDoc::Common::DocConfig; use BackRestDoc::Common::DocManifest; #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Class name # Assign function parameters, defaults, and log debug info my ( $strOperation, $oManifest, $strRenderOutKey, $bExe ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oManifest'}, {name => 'strRenderOutKey'}, {name => 'bExe'} ); # Create the class hash my $self = $class->SUPER::new(RENDER_TYPE_MARKDOWN, $oManifest, $strRenderOutKey, $bExe); bless $self, $class; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # process # # Generate the site html #################################################################################################################################### sub process { my $self = shift; # Assign function parameters, defaults, and log debug info my $strOperation = logDebugParam(__PACKAGE__ . '->process'); # Working variables my $oPage = $self->{oDoc}; # Initialize page my $strMarkdown = "# " . $oPage->paramGet('title'); if (defined($oPage->paramGet('subtitle', false))) { $strMarkdown .= '
    ' . $oPage->paramGet('subtitle') . ''; } # my $oHtmlBuilder = new BackRestDoc::Html::DocHtmlBuilder("{[project]} - Reliable PostgreSQL Backup", # $strTitle . (defined($strSubTitle) ? " - ${strSubTitle}" : ''), # $self->{bPretty}); # # # Generate header # my $oPageHeader = $oHtmlBuilder->bodyGet()->addNew(HTML_DIV, 'page-header'); # # $oPageHeader-> # addNew(HTML_DIV, 'page-header-title', # {strContent => $strTitle}); # # if (defined($strSubTitle)) # { # $oPageHeader-> # addNew(HTML_DIV, 'page-header-subtitle', # {strContent => $strSubTitle}); # } # # # Generate menu # my $oMenuBody = $oHtmlBuilder->bodyGet()->addNew(HTML_DIV, 'page-menu')->addNew(HTML_DIV, 'menu-body'); # # if ($self->{strRenderOutKey} ne 'index') # { # my $oRenderOut = $self->{oManifest}->renderOutGet(RENDER_TYPE_HTML, 'index'); # # $oMenuBody-> # addNew(HTML_DIV, 'menu')-> # addNew(HTML_A, 'menu-link', {strContent => $$oRenderOut{menu}, strRef => '{[project-url-root]}'}); # } # # foreach my $strRenderOutKey ($self->{oManifest}->renderOutList(RENDER_TYPE_HTML)) # { # if ($strRenderOutKey ne $self->{strRenderOutKey} && $strRenderOutKey ne 'index') # { # my $oRenderOut = $self->{oManifest}->renderOutGet(RENDER_TYPE_HTML, $strRenderOutKey); # # $oMenuBody-> # addNew(HTML_DIV, 'menu')-> # addNew(HTML_A, 'menu-link', {strContent => $$oRenderOut{menu}, strRef => "${strRenderOutKey}.html"}); # } # } # # # Generate table of contents # my $oPageTocBody; # # if (!defined($oPage->paramGet('toc', false)) || $oPage->paramGet('toc') eq 'y') # { # my $oPageToc = $oHtmlBuilder->bodyGet()->addNew(HTML_DIV, 'page-toc'); # # $oPageToc-> # addNew(HTML_DIV, 'page-toc-title', # {strContent => "Table of Contents"}); # # $oPageTocBody = $oPageToc-> # addNew(HTML_DIV, 'page-toc-body'); # } # # # Generate body # my $oPageBody = $oHtmlBuilder->bodyGet()->addNew(HTML_DIV, 'page-body'); # Render sections foreach my $oSection ($oPage->nodeList('section')) { $strMarkdown = trim($strMarkdown) . "\n\n" . $self->sectionProcess($oSection, 1); } $strMarkdown .= "\n"; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strMarkdown', value => $strMarkdown, trace => true} ); } #################################################################################################################################### # sectionProcess #################################################################################################################################### sub sectionProcess { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oSection, $iDepth ) = logDebugParam ( __PACKAGE__ . '->sectionProcess', \@_, {name => 'oSection'}, {name => 'iDepth'} ); if ($oSection->paramGet('log')) { &log(INFO, (' ' x ($iDepth + 1)) . 'process section: ' . $oSection->paramGet('path')); } if ($iDepth > 3) { confess &log(ASSERT, "section depth of ${iDepth} exceeds maximum"); } my $strMarkdown = '#' . ('#' x $iDepth) . ' ' . $self->processText($oSection->nodeGet('title')->textGet()); my $strLastChild = undef; foreach my $oChild ($oSection->nodeList()) { &log(DEBUG, (' ' x ($iDepth + 2)) . 'process child ' . $oChild->nameGet()); # Execute a command if ($oChild->nameGet() eq 'execute-list') { my $bShow = $oChild->paramTest('show', 'n') ? false : true; my $bFirst = true; my $strHostName = $self->{oManifest}->variableReplace($oChild->paramGet('host')); my $bOutput = false; if ($bShow) { $strMarkdown .= "\n\n${strHostName} => " . $self->processText($oChild->nodeGet('title')->textGet()) . "\n```\n"; } foreach my $oExecute ($oChild->nodeList('execute')) { my $bExeShow = !$oExecute->paramTest('show', 'n'); my $bExeExpectedError = defined($oExecute->paramGet('err-expect', false)); if ($bOutput) { confess &log(ERROR, "only the last command can have output"); } my ($strCommand, $strOutput) = $self->execute( $oSection, $strHostName, $oExecute, {iIndent => $iDepth + 3, bShow => $bShow && $bExeShow}); if ($bShow && $bExeShow) { # Add continuation chars and proper spacing $strCommand =~ s/\n/\n /smg; $strMarkdown .= "${strCommand}\n"; my $strHighLight = $self->{oManifest}->variableReplace($oExecute->fieldGet('exe-highlight', false)); my $bHighLightFound = false; if (defined($strOutput)) { $strMarkdown .= "\n--- output ---\n\n"; if ($oExecute->fieldTest('exe-highlight-type', 'error')) { $bExeExpectedError = true; } foreach my $strLine (split("\n", $strOutput)) { my $bHighLight = defined($strHighLight) && $strLine =~ /$strHighLight/; if ($bHighLight) { $strMarkdown .= $bExeExpectedError ? "ERR" : "-->"; } else { $strMarkdown .= " "; } $strMarkdown .= " ${strLine}\n"; $bHighLightFound = $bHighLightFound ? true : $bHighLight ? true : false; } $bFirst = true; } if ($self->{bExe} && $self->isRequired($oSection) && defined($strHighLight) && !$bHighLightFound) { confess &log(ERROR, "unable to find a match for highlight: ${strHighLight}"); } } $bFirst = false; } $strMarkdown .= "```"; } # Add code block elsif ($oChild->nameGet() eq 'code-block') { if ($oChild->paramTest('title')) { if (defined($strLastChild) && $strLastChild ne 'code-block') { $strMarkdown .= "\n"; } $strMarkdown .= "\n_" . $oChild->paramGet('title') . "_:"; } $strMarkdown .= "\n```"; if ($oChild->paramTest('type')) { $strMarkdown .= $oChild->paramGet('type'); } $strMarkdown .= "\n" . trim($oChild->valueGet()) . "\n```"; } # Add descriptive text elsif ($oChild->nameGet() eq 'p') { if (defined($strLastChild) && $strLastChild ne 'code-block' && $strLastChild ne 'table') { $strMarkdown .= "\n"; } $strMarkdown .= "\n" . $self->processText($oChild->textGet()); } # Add option descriptive text elsif ($oChild->nameGet() eq 'option-description') { # my $strOption = $oChild->paramGet("key"); # my $oDescription = ${$self->{oReference}->{oConfigHash}}{&CONFIG_HELP_OPTION}{$strOption}{&CONFIG_HELP_DESCRIPTION}; # # if (!defined($oDescription)) # { # confess &log(ERROR, "unable to find ${strOption} option in sections - try adding command?"); # } # # $oSectionBodyElement-> # addNew(HTML_DIV, 'section-body-text', # {strContent => $self->processText($oDescription)}); } # Add/remove backrest config options elsif ($oChild->nameGet() eq 'backrest-config') { # my $oConfigElement = $self->backrestConfigProcess($oSection, $oChild, $iDepth + 3); # # if (defined($oConfigElement)) # { # $oSectionBodyElement->add($oConfigElement); # } } # Add/remove postgres config options elsif ($oChild->nameGet() eq 'postgres-config') { # my $oConfigElement = $self->postgresConfigProcess($oSection, $oChild, $iDepth + 3); # # if (defined($oConfigElement)) # { # $oSectionBodyElement->add($oConfigElement); # } } # Add a list elsif ($oChild->nameGet() eq 'list') { foreach my $oListItem ($oChild->nodeList()) { $strMarkdown .= "\n\n- " . $self->processText($oListItem->textGet()); } } # Add a subsection elsif ($oChild->nameGet() eq 'section') { $strMarkdown = trim($strMarkdown) . "\n\n" . $self->sectionProcess($oChild, $iDepth + 1); } elsif ($oChild->nameGet() eq 'table') { my $oTableTitle; if ($oChild->nodeTest('title')) { $oTableTitle = $oChild->nodeGet('title'); } my $oHeader; my @oyColumn; if ($oChild->nodeTest('table-header')) { $oHeader = $oChild->nodeGet('table-header'); @oyColumn = $oHeader->nodeList('table-column'); } if (defined($oTableTitle)) { # Print the label (e.g. Table 1:) in front of the title if one exists $strMarkdown .= "\n\n**" . ($oTableTitle->paramTest('label') ? ($oTableTitle->paramGet('label') . ': ' . $self->processText($oTableTitle->textGet())) : $self->processText($oTableTitle->textGet())) . "**\n\n"; } else { $strMarkdown .= "\n\n"; } my $strHeaderText = "| "; my $strHeaderIndicator = "| "; for (my $iColCellIdx = 0; $iColCellIdx < @oyColumn; $iColCellIdx++) { my $strAlign = $oyColumn[$iColCellIdx]->paramGet("align", false, 'left'); $strHeaderText .= $self->processText($oyColumn[$iColCellIdx]->textGet()) . (($iColCellIdx < @oyColumn - 1) ? " | " : " |\n"); $strHeaderIndicator .= ($strAlign eq 'left' || $strAlign eq 'center') ? ":---" : "---"; $strHeaderIndicator .= ($strAlign eq 'right' || $strAlign eq 'center') ? "---:" : ""; $strHeaderIndicator .= ($iColCellIdx < @oyColumn - 1) ? " | " : " |\n"; } # Markdown requires a table header so if not provided then create an empty header row and default the column alignment # left by using the number of columns in the 1st row if (!defined($oHeader)) { my @oyRow = $oChild->nodeGet('table-data')->nodeList('table-row'); foreach my $oRowCell ($oyRow[0]->nodeList('table-cell')) { $strHeaderText .= " | "; $strHeaderIndicator .= ":--- | "; } $strHeaderText .= "\n"; $strHeaderIndicator .= "\n"; } $strMarkdown .= (defined($strHeaderText) ? $strHeaderText : '') . $strHeaderIndicator; # Build the rows foreach my $oRow ($oChild->nodeGet('table-data')->nodeList('table-row')) { my @oRowCellList = $oRow->nodeList('table-cell'); $strMarkdown .= "| "; for (my $iRowCellIdx = 0; $iRowCellIdx < @oRowCellList; $iRowCellIdx++) { my $oRowCell = $oRowCellList[$iRowCellIdx]; $strMarkdown .= $self->processText($oRowCell->textGet()) . (($iRowCellIdx < @oRowCellList -1) ? " | " : " |\n"); } } } # Add an admonition (e.g. NOTE, WARNING, etc) elsif ($oChild->nameGet() eq 'admonition') { $strMarkdown .= "\n> **" . uc($oChild->paramGet('type')) . ":** " . $self->processText($oChild->textGet()); } # Check if the child can be processed by a parent else { $self->sectionChildProcess($oSection, $oChild, $iDepth + 1); } $strLastChild = $oChild->nameGet(); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strMarkdown', value => $strMarkdown, trace => true} ); } #################################################################################################################################### # backrestConfigProcess #################################################################################################################################### sub backrestConfigProcess { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oSection, $oConfig, $iDepth ) = logDebugParam ( __PACKAGE__ . '->backrestConfigProcess', \@_, {name => 'oSection'}, {name => 'oConfig'}, {name => 'iDepth'} ); # # Generate the config # my $oConfigElement; # my ($strFile, $strConfig, $bShow) = $self->backrestConfig($oSection, $oConfig, $iDepth); # # if ($bShow) # { # my $strHostName = $self->{oManifest}->variableReplace($oConfig->paramGet('host')); # # # Render the config # $oConfigElement = new BackRestDoc::Html::DocHtmlElement(HTML_DIV, "config"); # # $oConfigElement-> # addNew(HTML_DIV, "config-title", # {strContent => "${strHostName}:${strFile}" . # " " . $self->processText($oConfig->nodeGet('title')->textGet())}); # # my $oConfigBodyElement = $oConfigElement->addNew(HTML_DIV, "config-body"); # # # # $oConfigBodyElement-> # # addNew(HTML_DIV, "config-body-title", # # {strContent => "${strFile}:"}); # # $oConfigBodyElement-> # addNew(HTML_DIV, "config-body-output", # {strContent => $strConfig}); # } # # # Return from function and log return values if any # return logDebugReturn # ( # $strOperation, # {name => 'oConfigElement', value => $oConfigElement, trace => true} # ); } #################################################################################################################################### # postgresConfigProcess #################################################################################################################################### sub postgresConfigProcess { my $self = shift; # # Assign function parameters, defaults, and log debug info # my # ( # $strOperation, # $oSection, # $oConfig, # $iDepth # ) = # logDebugParam # ( # __PACKAGE__ . '->postgresConfigProcess', \@_, # {name => 'oSection'}, # {name => 'oConfig'}, # {name => 'iDepth'} # ); # # # Generate the config # my $oConfigElement; # my ($strFile, $strConfig, $bShow) = $self->postgresConfig($oSection, $oConfig, $iDepth); # # if ($bShow) # { # # Render the config # my $strHostName = $self->{oManifest}->variableReplace($oConfig->paramGet('host')); # $oConfigElement = new BackRestDoc::Html::DocHtmlElement(HTML_DIV, "config"); # # $oConfigElement-> # addNew(HTML_DIV, "config-title", # {strContent => "${strHostName}:${strFile}" . # " " . $self->processText($oConfig->nodeGet('title')->textGet())}); # # my $oConfigBodyElement = $oConfigElement->addNew(HTML_DIV, "config-body"); # # # $oConfigBodyElement-> # # addNew(HTML_DIV, "config-body-title", # # {strContent => "append to ${strFile}:"}); # # $oConfigBodyElement-> # addNew(HTML_DIV, "config-body-output", # {strContent => defined($strConfig) ? $strConfig : ''}); # # $oConfig->fieldSet('actual-config', $strConfig); # } # # # Return from function and log return values if any # return logDebugReturn # ( # $strOperation, # {name => 'oConfigElement', value => $oConfigElement, trace => true} # ); } 1; pgbackrest-release-2.24/doc/manifest.xml000066400000000000000000000125651362531507100203150ustar00rootroot00000000000000 pgBackRest Reliable PostgreSQL Backup & Restore use pgBackRest::Version; PROJECT_VERSION use BackRestDoc::Custom::DocCustomRelease; (new BackRestDoc::Custom::DocCustomRelease( new BackRestDoc::Common::Doc("{[doc-path]}/xml/release.xml")))->currentStableVersion(); pgbackrest / PostgreSQL - logo.png favicon.png n n n use Time::Local; use BackRestDoc::Custom::DocCustomRelease; my ($second, $minute , $hour, $mday, $month, $year) = localtime(); $year += 1900; if ('{[release-date-static]}' eq 'y') { my $strDate = (new BackRestDoc::Custom::DocCustomRelease( new BackRestDoc::Common::Doc("{[doc-path]}/xml/release.xml")))->releaseLast()->paramGet('date'); if ($strDate eq 'XXXX-XX-XX') { confess &log(ERROR, 'not possible to use static release dates on a dev build'); } else { ($year, $month, $mday) = split(/[\s.\-]+/, $strDate); $month -= 1; } } my @stryMonth = ('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); $stryMonth[$month] . ' ' . $mday . ', ' . $year; 'Copyright &copy; 2015' . '-' . substr('{[release-date]}', length('{[release-date]}') - 4) . ', The PostgreSQL Global Development Group, <a href="{[github-url-license]}">MIT License</a>. Updated ' . '{[release-date]}'; {[doc-path]}/output/latex/logo {[project]} User Guide Open Source PostgreSQL Backup and Restore Utility Version {[version]} Crunchy Data Solutions, Inc. cds-logo.eps {[pdf-title1]}\\{[pdf-title3]} \ \\-\ \thepage\ - {[pdf-organization]}\\\today CrunchyBackRest-UserGuide-{[version]} pgbackrest-release-2.24/doc/release.pl000077500000000000000000000324231362531507100177400ustar00rootroot00000000000000#!/usr/bin/perl #################################################################################################################################### # release.pl - PgBackRest Release Manager #################################################################################################################################### #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; $SIG{__DIE__} = sub { Carp::confess @_ }; use Cwd qw(abs_path); use File::Basename qw(dirname); use Getopt::Long qw(GetOptions); use Pod::Usage qw(pod2usage); use Storable; use lib dirname($0) . '/lib'; use lib dirname(dirname($0)) . '/build/lib'; use lib dirname(dirname($0)) . '/lib'; use lib dirname(dirname($0)) . '/test/lib'; use BackRestDoc::Common::Doc; use BackRestDoc::Common::DocConfig; use BackRestDoc::Common::DocManifest; use BackRestDoc::Common::DocRender; use BackRestDoc::Html::DocHtmlSite; use BackRestDoc::Latex::DocLatex; use BackRestDoc::Markdown::DocMarkdown; use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Version; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::Storage; use pgBackRestTest::Common::StoragePosix; use pgBackRestTest::Common::VmTest; #################################################################################################################################### # Usage #################################################################################################################################### =head1 NAME release.pl - pgBackRest Release Manager =head1 SYNOPSIS release.pl [options] General Options: --help Display usage and exit --version Display pgBackRest version --quiet Sets log level to ERROR --log-level Log level for execution (e.g. ERROR, WARN, INFO, DEBUG) Release Options: --build Build the cache before release (should be included in the release commit) --deploy Deploy documentation to website (can be done as docs are updated) --no-gen Don't auto-generate --vm vm to build documentation for =cut #################################################################################################################################### # Load command line parameters and config (see usage above for details) #################################################################################################################################### my $bHelp = false; my $bVersion = false; my $bQuiet = false; my $strLogLevel = 'info'; my $bBuild = false; my $bDeploy = false; my $bNoGen = false; my $strVm = undef; GetOptions ('help' => \$bHelp, 'version' => \$bVersion, 'quiet' => \$bQuiet, 'log-level=s' => \$strLogLevel, 'build' => \$bBuild, 'deploy' => \$bDeploy, 'no-gen' => \$bNoGen, 'vm=s' => \$strVm) or pod2usage(2); #################################################################################################################################### # Run in eval block to catch errors #################################################################################################################################### eval { # Display version and exit if requested if ($bHelp || $bVersion) { print PROJECT_NAME . ' ' . PROJECT_VERSION . " Release Manager\n"; if ($bHelp) { print "\n"; pod2usage(); } exit 0; } # If neither build nor deploy is requested then error if (!$bBuild && !$bDeploy) { confess &log(ERROR, 'neither --build nor --deploy requested, nothing to do'); } # Set console log level if ($bQuiet) { $strLogLevel = 'error'; } logLevelSet(undef, uc($strLogLevel), OFF); # Set the paths my $strDocPath = dirname(abs_path($0)); my $strDocHtml = "${strDocPath}/output/html"; my $strDocExe = "${strDocPath}/doc.pl"; my $strTestExe = dirname($strDocPath) . "/test/test.pl"; my $oStorageDoc = new pgBackRestTest::Common::Storage( $strDocPath, new pgBackRestTest::Common::StoragePosix({bFileSync => false, bPathSync => false})); # Determine if this is a dev release my $bDev = PROJECT_VERSION =~ /dev$/; my $strVersion = $bDev ? 'dev' : PROJECT_VERSION; if ($bBuild) { if (!$bNoGen) { # Update git history my $strGitCommand = 'git -C ' . $strDocPath . ' log --pretty=format:\'{^^^^commit^^^^:^^^^%H^^^^,^^^^date^^^^:^^^^%ci^^^^,^^^^subject^^^^:^^^^%s^^^^,^^^^body^^^^:^^^^%b^^^^},\''; my $strGitLog = qx($strGitCommand); $strGitLog =~ s/\^\^\^\^\}\,\n/\#\#\#\#/mg; $strGitLog =~ s/\\/\\\\/g; $strGitLog =~ s/\n/\\n/mg; $strGitLog =~ s/\r/\\r/mg; $strGitLog =~ s/\t/\\t/mg; $strGitLog =~ s/\"/\\\"/g; $strGitLog =~ s/\^\^\^\^/\"/g; $strGitLog =~ s/\#\#\#\#/\"\}\,\n/mg; $strGitLog = '[' . substr($strGitLog, 0, length($strGitLog) - 1) . ']'; my @hyGitLog = @{(JSON::PP->new()->allow_nonref())->decode($strGitLog)}; # Load prior history my @hyGitLogPrior = @{(JSON::PP->new()->allow_nonref())->decode( ${$oStorageDoc->get("${strDocPath}/resource/git-history.cache")})}; # Add new commits for (my $iGitLogIdx = @hyGitLog - 1; $iGitLogIdx >= 0; $iGitLogIdx--) { my $rhGitLog = $hyGitLog[$iGitLogIdx]; my $bFound = false; foreach my $rhGitLogPrior (@hyGitLogPrior) { if ($rhGitLog->{commit} eq $rhGitLogPrior->{commit}) { $bFound = true; } } next if $bFound; $rhGitLog->{body} = trim($rhGitLog->{body}); if ($rhGitLog->{body} eq '') { delete($rhGitLog->{body}); } unshift(@hyGitLogPrior, $rhGitLog); } # Write git log $strGitLog = undef; foreach my $rhGitLog (@hyGitLogPrior) { $strGitLog .= (defined($strGitLog) ? ",\n" : '') . " {\n" . ' "commit": ' . trim((JSON::PP->new()->allow_nonref()->pretty())->encode($rhGitLog->{commit})) . ",\n" . ' "date": ' . trim((JSON::PP->new()->allow_nonref()->pretty())->encode($rhGitLog->{date})) . ",\n" . ' "subject": ' . trim((JSON::PP->new()->allow_nonref()->pretty())->encode($rhGitLog->{subject})); # Skip the body if it is empty or a release (since we already have the release note content) if ($rhGitLog->{subject} !~ /^v[0-9]{1,2}\.[0-9]{1,2}\: /g && defined($rhGitLog->{body})) { $strGitLog .= ",\n" . ' "body": ' . trim((JSON::PP->new()->allow_nonref()->pretty())->encode($rhGitLog->{body})); } $strGitLog .= "\n" . " }"; } $oStorageDoc->put("${strDocPath}/resource/git-history.cache", "[\n${strGitLog}\n]\n"); # Generate coverage summary &log(INFO, "Generate Coverage Summary"); executeTest( "${strTestExe} --no-package --no-valgrind --no-optimize --vm-max=3 --coverage-summary", {bShowOutputAsync => true}); } # Remove permanent cache file $oStorageDoc->remove("${strDocPath}/resource/exe.cache", {bIgnoreMissing => true}); # Remove all docker containers to get consistent IP address assignments executeTest('docker rm -f $(docker ps -a -q)', {bSuppressError => true}); # Generate deployment docs for RHEL/Centos 7 if (!defined($strVm) || $strVm eq VM_CO7) { &log(INFO, "Generate RHEL/CentOS 7 documentation"); executeTest("${strDocExe} --deploy --key-var=os-type=centos7 --out=pdf", {bShowOutputAsync => true}); if (!defined($strVm)) { executeTest("${strDocExe} --deploy --cache-only --key-var=os-type=centos7 --out=pdf"); } } # Generate deployment docs for RHEL/Centos 6 if (!defined($strVm) || $strVm eq VM_CO6) { &log(INFO, "Generate RHEL/CentOS 6 documentation"); executeTest("${strDocExe} --deploy --key-var=os-type=centos6 --out=html", {bShowOutputAsync => true}); if (!defined($strVm)) { executeTest("${strDocExe} --deploy --cache-only --key-var=os-type=centos6 --out=html"); } } # Generate deployment docs for Debian if (!defined($strVm) || $strVm eq VM_U18) { &log(INFO, "Generate Debian/Ubuntu documentation"); executeTest("${strDocExe} --deploy --out=man --out=html --out=markdown", {bShowOutputAsync => true}); } # Generate a full copy of the docs for review if (!defined($strVm)) { &log(INFO, "Generate full documentation for review"); executeTest( "${strDocExe} --deploy --cache-only --key-var=os-type=centos7 --out=html --var=project-url-root=index.html"); $oStorageDoc->move("$strDocHtml/user-guide.html", "$strDocHtml/user-guide-centos7.html"); executeTest( "${strDocExe} --deploy --out-preserve --cache-only --key-var=os-type=centos6 --out=html" . " --var=project-url-root=index.html"); $oStorageDoc->move("$strDocHtml/user-guide.html", "$strDocHtml/user-guide-centos6.html"); executeTest( "${strDocExe} --deploy --out-preserve --cache-only --out=man --out=html --var=project-url-root=index.html"); } } if ($bDeploy) { my $strDeployPath = "${strDocPath}/site"; # Generate docs for the website history &log(INFO, 'Generate website ' . ($bDev ? 'dev' : 'history') . ' documentation'); my $strDocExeVersion = ${strDocExe} . ($bDev ? ' --dev' : ' --deploy --cache-only') . ' --var=project-url-root=index.html --out=html'; executeTest("${strDocExeVersion} --key-var=os-type=centos7"); $oStorageDoc->move("$strDocHtml/user-guide.html", "$strDocHtml/user-guide-centos7.html"); executeTest("${strDocExeVersion} --out-preserve --key-var=os-type=centos6"); $oStorageDoc->move("$strDocHtml/user-guide.html", "$strDocHtml/user-guide-centos6.html"); $oStorageDoc->remove("$strDocHtml/release.html"); executeTest("${strDocExeVersion} --out-preserve --exclude=release"); # Deploy to repository &log(INFO, '...Deploy to repository'); executeTest("rm -rf ${strDeployPath}/prior/${strVersion}"); executeTest("mkdir ${strDeployPath}/prior/${strVersion}"); executeTest("cp ${strDocHtml}/* ${strDeployPath}/prior/${strVersion}"); # Generate docs for the main website if (!$bDev) { &log(INFO, "Generate website documentation"); executeTest("${strDocExe} --deploy --cache-only --key-var=os-type=centos7 --out=html"); $oStorageDoc->move("$strDocHtml/user-guide.html", "$strDocHtml/user-guide-centos7.html"); executeTest("${strDocExe} --deploy --out-preserve --cache-only --key-var=os-type=centos6 --out=html"); $oStorageDoc->move("$strDocHtml/user-guide.html", "$strDocHtml/user-guide-centos6.html"); executeTest("${strDocExe} --deploy --out-preserve --cache-only --out=html"); # Deploy to repository &log(INFO, '...Deploy to repository'); executeTest("rm -rf ${strDeployPath}/dev"); executeTest("find ${strDeployPath} -maxdepth 1 -type f -exec rm {} +"); executeTest("cp ${strDocHtml}/* ${strDeployPath}"); executeTest("cp ${strDocPath}/../README.md ${strDeployPath}"); executeTest("cp ${strDocPath}/../LICENSE ${strDeployPath}"); } # Update permissions executeTest("find ${strDeployPath} -type d -exec chmod 750 {} +"); executeTest("find ${strDeployPath} -type f -exec chmod 640 {} +"); } # Exit with success exit 0; } #################################################################################################################################### # Check for errors #################################################################################################################################### or do { # If a backrest exception then return the code exit $EVAL_ERROR->code() if (isException(\$EVAL_ERROR)); # Else output the unhandled error print $EVAL_ERROR; exit ERROR_UNHANDLED; }; # It shouldn't be possible to get here &log(ASSERT, 'execution reached invalid location in ' . __FILE__ . ', line ' . __LINE__); exit ERROR_ASSERT; pgbackrest-release-2.24/doc/resource/000077500000000000000000000000001362531507100176035ustar00rootroot00000000000000pgbackrest-release-2.24/doc/resource/exe.cache000066400000000000000000023164021362531507100213610ustar00rootroot00000000000000{ "default" : { "all" : { "user-guide" : [ { "key" : { "id" : "s3", "image" : "minio/minio:RELEASE.2019-10-12T01-39-57Z", "name" : "s3-server", "option" : "-v {[host-repo-path]}/doc/resource/fake-cert/s3-server.crt:/root/.minio/certs/public.crt:ro -v {[host-repo-path]}/doc/resource/fake-cert/s3-server.key:/root/.minio/certs/private.key:ro -e MINIO_REGION=us-east-1 -e MINIO_DOMAIN=s3.us-east-1.amazonaws.com -e MINIO_BROWSER=off -e MINIO_ACCESS_KEY=accessKey1 -e MINIO_SECRET_KEY=verySecretKey1", "os" : "debian", "param" : "server /data --address :443", "update-hosts" : false }, "type" : "host", "value" : { "ip" : "172.17.0.2" } }, { "key" : { "id" : "build", "image" : "pgbackrest/doc:debian", "name" : "build", "option" : "-v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run", "os" : "debian", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.3" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /build/pgbackrest-release-2.24" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo cp -r /pgbackrest/libc /build/pgbackrest-release-2.24" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo cp -r /pgbackrest/src /build/pgbackrest-release-2.24" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown -R vagrant /build/pgbackrest-release-2.24" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo apt-get update" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo apt-get install make gcc libpq-dev libssl-dev libxml2-dev pkg-config" ], "cmd-extra" : "-y 2>&1", "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "cd /build/pgbackrest-release-2.24/src && ./configure && make" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "id" : "pg1", "image" : "pgbackrest/doc:debian", "name" : "pg-primary", "option" : "-v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run", "os" : "debian", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.4" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo apt-get install postgresql-client libxml2" ], "cmd-extra" : "-y 2>&1", "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo scp build:/build/pgbackrest-release-2.24/src/pgbackrest /usr/bin" ], "cmd-extra" : "2>&1", "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 755 /usr/bin/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 770 /var/log/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/log/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest/conf.d" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo touch /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 640 /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "pgBackRest 2.24 - General help", "", "Usage:", " pgbackrest [options] [command]", "", "Commands:", " archive-get Get a WAL segment from the archive.", " archive-push Push a WAL segment to the archive.", " backup Backup a database cluster.", " check Check the configuration.", " expire Expire backups that exceed retention.", " help Get help.", " info Retrieve information about backups.", " restore Restore a database cluster.", " stanza-create Create the required stanza data.", " stanza-delete Delete a stanza.", " stanza-upgrade Upgrade a stanza.", " start Allow pgBackRest processes to run.", " stop Stop pgBackRest processes from running.", " version Get version.", "", "Use 'pgbackrest help [command]' for more information." ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres /usr/lib/postgresql/10/bin/initdb \\", " -D /var/lib/postgresql/10/demo -k -A peer" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_createcluster 10 demo" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "Configuring already existing cluster (configuration: /etc/postgresql/10/demo, data: /var/lib/postgresql/10/demo, owner: 106:110)", "Ver Cluster Port Status Owner Data directory Log file", "10 demo 5432 down postgres /var/lib/postgresql/10/demo /var/log/postgresql/postgresql-10-demo.log" ] } }, { "key" : { "file" : "/etc/postgresql/10/demo/postgresql.conf", "host" : "pg-primary", "option" : { "listen_addresses" : { "value" : "'*'" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "listen_addresses = '*'" ] } }, { "key" : { "file" : "/etc/postgresql/10/demo/postgresql.conf", "host" : "pg-primary", "option" : { "log_line_prefix" : { "value" : "''" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "listen_addresses = '*'", "log_line_prefix = ''" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/postgresql/10/demo" } }, "global" : { "log-level-stderr" : { "value" : "off" }, "log-timestamp" : { "value" : "n" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/10/demo" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres bash -c ' \\", " export PGBACKREST_LOG_PATH=/path/set/by/env && \\", " pgbackrest --log-level-console=error help backup log-path'" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "current\\: \\/path\\/set\\/by\\/env" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "pgBackRest 2.24 - 'backup' command - 'log-path' option help", "", "Path where log files are stored.", "", "The log path provides a location for pgBackRest to store log files. Note that", "if log-level-file=off then no log path is required.", "", "current: /path/set/by/env", "default: /var/log/pgbackrest" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /var/lib/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 750 /var/lib/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/lib/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-path" : { "value" : "/var/lib/pgbackrest" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/10/demo", "", "[global]", "repo1-path=/var/lib/pgbackrest" ] } }, { "key" : { "file" : "/etc/postgresql/10/demo/postgresql.conf", "host" : "pg-primary", "option" : { "archive_command" : { "value" : "'pgbackrest --stanza=demo archive-push %p'" }, "archive_mode" : { "value" : "on" }, "max_wal_senders" : { "value" : "3" }, "wal_level" : { "value" : "replica" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo archive-push %p'", "archive_mode = on", "listen_addresses = '*'", "log_line_prefix = ''", "max_wal_senders = 3", "wal_level = replica" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo restart" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global:archive-push" : { "compress-level" : { "value" : "3" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/10/demo", "", "[global]", "repo1-path=/var/lib/pgbackrest", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-full" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/10/demo", "", "[global]", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-cipher-pass" : { "value" : "zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO" }, "repo1-cipher-type" : { "value" : "aes-256-cbc" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/10/demo", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-create command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo", "P00 INFO: stanza-create command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ " successfully archived to " ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: check command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo", "P00 INFO: WAL segment 000000010000000000000001 successfully archived to '/var/lib/pgbackrest/archive/demo/10-1/0000000100000000/000000010000000000000001-86f2b0d2e919b044ef617e80e57a95019dccc01e.gz'", "P00 INFO: check command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "no prior backup exists|full backup size" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo", "P00 WARN: no prior backup exists, incr backup has been changed to full", "P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the next regular checkpoint completes", "P00 INFO: backup start archive = 000000010000000000000002, lsn = 0/2000028", " [filtered 941 lines of output]", "P01 INFO: backup file /var/lib/postgresql/10/demo/base/1/12822 (0B, 100%)", "P01 INFO: backup file /var/lib/postgresql/10/demo/base/1/12817 (0B, 100%)", "P00 INFO: full backup size = 22.4MB", "P00 INFO: execute non-exclusive pg_stop_backup() and wait for all WAL segments to archive", "P00 INFO: backup stop archive = 000000010000000000000002, lsn = 0/2000130", " [filtered 5 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-155549F" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "diff backup size" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 4 lines of output]", "P01 INFO: backup file /var/lib/postgresql/10/demo/global/pg_control (8KB, 99%) checksum 28592b892362c9851a4ca4881f030e03feee6b83", "P01 INFO: backup file /var/lib/postgresql/10/demo/pg_logical/replorigin_checkpoint (8B, 100%) checksum 347fc8f2df71bd4436e38bd1516ccd7ea0d46532", "P00 INFO: diff backup size = 8KB", "P00 INFO: execute non-exclusive pg_stop_backup() and wait for all WAL segments to archive", "P00 INFO: backup stop archive = 000000010000000000000003, lsn = 0/30000F8", " [filtered 5 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest info" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "(full|incr|diff) backup" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "stanza: demo", " status: ok", " cipher: aes-256-cbc", "", " db (current)", " wal archive min/max (10-1): 000000010000000000000002/000000010000000000000003", "", " full backup: 20200225-155549F", " timestamp start/stop: 2020-02-25 15:55:49 / 2020-02-25 15:56:01", " wal start/stop: 000000010000000000000002 / 000000010000000000000002", " database size: 22.4MB, backup size: 22.4MB", " repository size: 2.7MB, repository backup size: 2.7MB", "", " diff backup: 20200225-155549F_20200225-155603D", " timestamp start/stop: 2020-02-25 15:56:03 / 2020-02-25 15:56:05", " wal start/stop: 000000010000000000000003 / 000000010000000000000003", " database size: 22.4MB, backup size: 8.2KB", " repository size: 2.7MB, repository backup size: 496B", " backup reference list: 20200225-155549F" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres rm /var/lib/postgresql/10/demo/global/pg_control" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo start" ], "err-expect" : "1", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "could not find the database system" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "Error: /usr/lib/postgresql/10/bin/pg_ctl /usr/lib/postgresql/10/bin/pg_ctl start -D /var/lib/postgresql/10/demo -l /var/log/postgresql/postgresql-10-demo.log -s -o -c config_file=\"/etc/postgresql/10/demo/postgresql.conf\" exited with status 1: ", "postgres: could not find the database system", "Expected to find it in the directory \"/var/lib/postgresql/10/demo\",", "but could not open file \"/var/lib/postgresql/10/demo/global/pg_control\": No such file or directory", "Examine the log output." ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres find /var/lib/postgresql/10/demo -mindepth 1 -delete" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "backup begins after the next regular checkpoint completes" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo --type=incr", "P00 INFO: last backup label = 20200225-155549F_20200225-155603D, version = 2.24", "P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the next regular checkpoint completes", "P00 INFO: backup start archive = 000000020000000000000006, lsn = 0/6000028", "P00 WARN: a timeline switch has occurred since the 20200225-155549F_20200225-155603D backup, enabling delta checksum", " [filtered 9 lines of output]" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "start-fast" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/10/demo", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "backup begins after the requested immediate checkpoint completes" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo --start-fast --type=incr", "P00 INFO: last backup label = 20200225-155549F_20200225-155624I, version = 2.24", "P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 000000020000000000000007, lsn = 0/7000028", "P01 INFO: backup file /var/lib/postgresql/10/demo/global/pg_control (8KB, 99%) checksum 5d12210792bcebed4a77029dc6e109c6ff359f28", " [filtered 9 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -p /var/lib/postgresql/pgbackrest/doc/example" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cp -r /pgbackrest/doc/example/* \\", " /var/lib/postgresql/pgbackrest/doc/example" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat \\", " /var/lib/postgresql/pgbackrest/doc/example/pgsql-pgbackrest-info.sql" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-- An example of monitoring pgBackRest from within PostgreSQL", "--", "-- Use copy to export data from the pgBackRest info command into the jsonb", "-- type so it can be queried directly by PostgreSQL.", "", "-- Create monitor schema", "create schema monitor;", "", "-- Get pgBackRest info in JSON format", "create function monitor.pgbackrest_info()", " returns jsonb AS $$", "declare", " data jsonb;", "begin", " -- Create a temp table to hold the JSON data", " create temp table temp_pgbackrest_data (data jsonb);", "", " -- Copy data into the table directly from the pgBackRest info command", " copy temp_pgbackrest_data (data)", " from program", " 'pgbackrest --output=json info' (format text);", "", " select temp_pgbackrest_data.data", " into data", " from temp_pgbackrest_data;", "", " drop table temp_pgbackrest_data;", "", " return data;", "end $$ language plpgsql;" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -f \\", " /var/lib/postgresql/pgbackrest/doc/example/pgsql-pgbackrest-info.sql" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat \\", " /var/lib/postgresql/pgbackrest/doc/example/pgsql-pgbackrest-query.sql" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-- Get last successful backup for each stanza", "--", "-- Requires the monitor.pgbackrest_info function.", "with stanza as", "(", " select data->'name' as name,", " data->'backup'->(", " jsonb_array_length(data->'backup') - 1) as last_backup,", " data->'archive'->(", " jsonb_array_length(data->'archive') - 1) as current_archive", " from jsonb_array_elements(monitor.pgbackrest_info()) as data", ")", "select name,", " to_timestamp(", " (last_backup->'timestamp'->>'stop')::numeric) as last_successful_backup,", " current_archive->>'max' as last_archived_wal", " from stanza;" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -f \\", " /var/lib/postgresql/pgbackrest/doc/example/pgsql-pgbackrest-query.sql" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " name | last_successful_backup | last_archived_wal ", "--------+------------------------+--------------------------", " \"demo\" | 2020-02-25 15:56:31+00 | 000000020000000000000007", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo apt-get install jq" ], "cmd-extra" : "-y 2>&1", "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --output=json --stanza=demo info | \\", " jq '.[0] | .backup[-1] | .timestamp.stop'" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "1582646191" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --output=json --stanza=demo info | \\", " jq '.[0] | .archive[-1] | .max'" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "\"000000020000000000000007\"" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-full" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/10/demo", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=full \\", " --log-level-console=detail backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "archive retention on backup 20200225-155549F|remove archive" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 952 lines of output]", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.24: --log-level-console=detail --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo", "P00 DETAIL: archive retention on backup 20200225-155549F, archiveId = 10-1, start = 000000010000000000000002", "P00 DETAIL: no archive to remove, archiveId = 10-1", "P00 INFO: expire command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-155642F" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=full \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "expire full backup set\\: 20200225-155549F|archive retention on backup 20200225-155642F|remove archive" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 951 lines of output]", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo", "P00 INFO: expire full backup set: 20200225-155549F, 20200225-155549F_20200225-155603D, 20200225-155549F_20200225-155624I, 20200225-155549F_20200225-155629I", "P00 INFO: remove expired backup 20200225-155549F_20200225-155629I", "P00 INFO: remove expired backup 20200225-155549F_20200225-155624I", " [filtered 2 lines of output]" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-diff" : { "value" : "1" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/10/demo", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-diff=1", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-155658F_20200225-155716D" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "expire diff backup set: 20200225-155658F_20200225-155716D" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 12 lines of output]", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-diff=1 --repo1-retention-full=2 --stanza=demo", "P00 INFO: expire diff backup set: 20200225-155658F_20200225-155716D, 20200225-155658F_20200225-155718I", "P00 INFO: remove expired backup 20200225-155658F_20200225-155718I", "P00 INFO: remove expired backup 20200225-155658F_20200225-155716D" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-diff" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/10/demo", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-diff=2", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-155658F_20200225-155721D" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select pg_create_restore_point('generate WAL'); select pg_switch_wal(); \\", " select pg_create_restore_point('generate WAL'); select pg_switch_wal();\"" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "new backup label" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 9 lines of output]", "P00 INFO: backup stop archive = 000000020000000000000011, lsn = 0/110000F8", "P00 INFO: check archive for segment(s) 000000020000000000000011:000000020000000000000011", "P00 INFO: new backup label = 20200225-155658F_20200225-155727D", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-diff=2 --repo1-retention-full=2 --stanza=demo" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-155658F_20200225-155727D" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=detail \\", " --repo1-retention-archive-type=diff --repo1-retention-archive=1 expire" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "archive retention on backup 20200225-155658F_20200225-155721D|remove archive" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: expire command begin 2.24: --log-level-console=detail --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-archive=1 --repo1-retention-archive-type=diff --repo1-retention-diff=2 --repo1-retention-full=2 --stanza=demo", "P00 DETAIL: archive retention on backup 20200225-155642F, archiveId = 10-1, start = 000000020000000000000009, stop = 000000020000000000000009", "P00 DETAIL: archive retention on backup 20200225-155658F, archiveId = 10-1, start = 00000002000000000000000A, stop = 00000002000000000000000A", "P00 DETAIL: archive retention on backup 20200225-155658F_20200225-155721D, archiveId = 10-1, start = 00000002000000000000000E, stop = 00000002000000000000000E", "P00 DETAIL: archive retention on backup 20200225-155658F_20200225-155727D, archiveId = 10-1, start = 000000020000000000000011", "P00 DETAIL: remove archive: archiveId = 10-1, start = 00000002000000000000000B, stop = 00000002000000000000000D", "P00 DETAIL: remove archive: archiveId = 10-1, start = 00000002000000000000000F, stop = 000000020000000000000010", "P00 INFO: expire command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --log-level-console=detail restore" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "demo\\/PG_VERSION - exists and matches backup|remove invalid files|rename global\\/pg_control" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 2 lines of output]", "P00 DETAIL: check '/var/lib/postgresql/10/demo' exists", "P00 DETAIL: remove 'global/pg_control' so cluster will not start if restore does not complete", "P00 INFO: remove invalid files/links/paths from '/var/lib/postgresql/10/demo'", "P00 DETAIL: remove invalid file '/var/lib/postgresql/10/demo/backup_label.old'", "P00 DETAIL: remove invalid file '/var/lib/postgresql/10/demo/base/1/pg_internal.init'", " [filtered 755 lines of output]", "P01 DETAIL: restore file /var/lib/postgresql/10/demo/base/12979/PG_VERSION - exists and matches backup (3B, 99%) checksum 4143d3a341877154d6e95211464e1df1015b74bd", "P01 DETAIL: restore file /var/lib/postgresql/10/demo/base/1/PG_VERSION - exists and matches backup (3B, 99%) checksum 4143d3a341877154d6e95211464e1df1015b74bd", "P01 DETAIL: restore file /var/lib/postgresql/10/demo/PG_VERSION - exists and matches backup (3B, 100%) checksum 4143d3a341877154d6e95211464e1df1015b74bd", "P01 DETAIL: restore file /var/lib/postgresql/10/demo/global/6100_vm - exists and is zero size (0B, 100%)", "P01 DETAIL: restore file /var/lib/postgresql/10/demo/global/6100 - exists and is zero size (0B, 100%)", " [filtered 232 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create database test1;\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "CREATE DATABASE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create database test2;\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "CREATE DATABASE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create table test1_table (id int); \\", " insert into test1_table (id) values (1);\" test1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "INSERT 0 1" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create table test2_table (id int); \\", " insert into test2_table (id) values (2);\" test2" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "INSERT 0 1" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -Atc \"select oid from pg_database where datname = 'test1'\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "24576" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres du -sh /var/lib/postgresql/10/demo/base/24576" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "7.5M\t/var/lib/postgresql/10/demo/base/24576" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-155658F_20200225-155740I" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo \\", " --set=20200225-155658F_20200225-155740I info" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "database list" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 11 lines of output]", " repository size: 4.4MB, repository backup size: 1.8MB", " backup reference list: 20200225-155658F, 20200225-155658F_20200225-155727D", " database list: postgres (12980), test1 (24576), test2 (24577)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --db-include=test2 restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from test2_table;\" test2" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " id ", "----", " 2", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from test1_table;\" test1" ], "err-expect" : "2", "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "relation mapping file.*contains invalid data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "psql: FATAL: relation mapping file \"base/24576/pg_filenode.map\" contains invalid data" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres du -sh /var/lib/postgresql/10/demo/base/24576" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "176K\t/var/lib/postgresql/10/demo/base/24576" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"drop database test1;\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "DROP DATABASE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select oid, datname from pg_database order by oid;\"" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "test2" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " oid | datname ", "-------+-----------", " 1 | template1", " 12979 | template0", " 12980 | postgres", " 24577 | test2", "(4 rows)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"begin; \\", " create table important_table (message text); \\", " insert into important_table values ('Important Data'); \\", " commit; \\", " select * from important_table;\"" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message ", "----------------", " Important Data", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -Atc \"select current_timestamp\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "2020-02-25 15:58:14.809656+00" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"begin; \\", " drop table important_table; \\", " commit; \\", " select * from important_table;\"" ], "err-expect" : "1", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "does not exist" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ERROR: relation \"important_table\" does not exist", "LINE 1: ...le important_table; commit; select * from important_...", " ^" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --type=time \"--target=2020-02-25 15:58:14.809656+00\" \\", " --target-action=promote restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/log/postgresql/postgresql-10-demo.log" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/postgresql/10/demo/recovery.conf" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "recovery_target_time" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "# Recovery settings generated by pgBackRest restore on 2020-02-25 15:58:17", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "recovery_target_time = '2020-02-25 15:58:14.809656+00'", "recovery_target_action = 'promote'" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from important_table\"" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message ", "----------------", " Important Data", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/log/postgresql/postgresql-10-demo.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "recovery stopping before|last completed transaction|starting point-in-time recovery" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 2 lines of output]", "LOG: listening on Unix socket \"/var/run/postgresql/.s.PGSQL.5432\"", "LOG: database system was interrupted; last known up at 2020-02-25 15:58:07 UTC", "LOG: starting point-in-time recovery to 2020-02-25 15:58:14.809656+00", "LOG: restored log file \"00000004.history\" from archive", "LOG: restored log file \"000000040000000000000016\" from archive", " [filtered 2 lines of output]", "LOG: database system is ready to accept read only connections", "LOG: restored log file \"000000040000000000000017\" from archive", "LOG: recovery stopping before commit of transaction 564, time 2020-02-25 15:58:15.132145+00", "LOG: redo done at 0/170207C8", "LOG: last completed transaction was at log time 2020-02-25 15:58:13.968068+00", "LOG: selected new timeline ID: 5", "LOG: archive recovery complete", " [filtered 3 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"begin; \\", " drop table important_table; \\", " commit; \\", " select * from important_table;\"" ], "err-expect" : "1", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "does not exist" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ERROR: relation \"important_table\" does not exist", "LINE 1: ...le important_table; commit; select * from important_...", " ^" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-155658F_20200225-155826I" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest info" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "20200225-155658F_20200225-155826I" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "stanza: demo", " status: ok", " cipher: aes-256-cbc", "", " db (current)", " wal archive min/max (10-1): 000000020000000000000009/000000050000000000000018", "", " full backup: 20200225-155642F", " timestamp start/stop: 2020-02-25 15:56:42 / 2020-02-25 15:56:56", " wal start/stop: 000000020000000000000009 / 000000020000000000000009", " database size: 22.4MB, backup size: 22.4MB", " repository size: 2.7MB, repository backup size: 2.7MB", "", " full backup: 20200225-155658F", " timestamp start/stop: 2020-02-25 15:56:58 / 2020-02-25 15:57:13", " wal start/stop: 00000002000000000000000A / 00000002000000000000000A", " database size: 22.4MB, backup size: 22.4MB", " repository size: 2.7MB, repository backup size: 2.7MB", "", " diff backup: 20200225-155658F_20200225-155727D", " timestamp start/stop: 2020-02-25 15:57:27 / 2020-02-25 15:57:29", " wal start/stop: 000000020000000000000011 / 000000020000000000000011", " database size: 22.4MB, backup size: 96.2KB", " repository size: 2.7MB, repository backup size: 11.9KB", " backup reference list: 20200225-155658F", "", " incr backup: 20200225-155658F_20200225-155740I", " timestamp start/stop: 2020-02-25 15:57:40 / 2020-02-25 15:57:50", " wal start/stop: 000000030000000000000013 / 000000030000000000000013", " database size: 37.0MB, backup size: 15.0MB", " repository size: 4.4MB, repository backup size: 1.8MB", " backup reference list: 20200225-155658F, 20200225-155658F_20200225-155727D", "", " diff backup: 20200225-155658F_20200225-155807D", " timestamp start/stop: 2020-02-25 15:58:07 / 2020-02-25 15:58:12", " wal start/stop: 000000040000000000000016 / 000000040000000000000016", " database size: 29.7MB, backup size: 7.8MB", " repository size: 3.5MB, repository backup size: 948.8KB", " backup reference list: 20200225-155658F", "", " incr backup: 20200225-155658F_20200225-155826I", " timestamp start/stop: 2020-02-25 15:58:26 / 2020-02-25 15:58:28", " wal start/stop: 000000050000000000000018 / 000000050000000000000018", " database size: 29.7MB, backup size: 2MB", " repository size: 3.5MB, repository backup size: 218.2KB", " backup reference list: 20200225-155658F, 20200225-155658F_20200225-155807D" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --set=20200225-155658F_20200225-155826I \\", " --type=time \"--target=2020-02-25 15:58:14.809656+00\" --target-action=promote restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/log/postgresql/postgresql-10-demo.log" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from important_table\"" ], "err-expect" : "1", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "does not exist" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ERROR: relation \"important_table\" does not exist", "LINE 1: select * from important_table", " ^" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/log/postgresql/postgresql-10-demo.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "starting point-in-time recovery|consistent recovery state reached" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 2 lines of output]", "LOG: listening on Unix socket \"/var/run/postgresql/.s.PGSQL.5432\"", "LOG: database system was interrupted; last known up at 2020-02-25 15:58:27 UTC", "LOG: starting point-in-time recovery to 2020-02-25 15:58:14.809656+00", "LOG: restored log file \"00000005.history\" from archive", "LOG: restored log file \"000000050000000000000018\" from archive", "LOG: redo starts at 0/18000028", "LOG: consistent recovery state reached at 0/180000F8", "LOG: database system is ready to accept read only connections", "LOG: redo done at 0/180000F8", " [filtered 8 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --type=time \"--target=2020-02-25 15:58:14.809656+00\" \\", " --target-action=promote restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/log/postgresql/postgresql-10-demo.log" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from important_table\"" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message ", "----------------", " Important Data", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/log/postgresql/postgresql-10-demo.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "recovery stopping before|last completed transaction|starting point-in-time recovery" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 2 lines of output]", "LOG: listening on Unix socket \"/var/run/postgresql/.s.PGSQL.5432\"", "LOG: database system was interrupted; last known up at 2020-02-25 15:58:07 UTC", "LOG: starting point-in-time recovery to 2020-02-25 15:58:14.809656+00", "LOG: restored log file \"00000004.history\" from archive", "LOG: restored log file \"000000040000000000000016\" from archive", " [filtered 2 lines of output]", "LOG: database system is ready to accept read only connections", "LOG: restored log file \"000000040000000000000017\" from archive", "LOG: recovery stopping before commit of transaction 564, time 2020-02-25 15:58:15.132145+00", "LOG: redo done at 0/170207C8", "LOG: last completed transaction was at log time 2020-02-25 15:58:13.968068+00", "LOG: restored log file \"00000005.history\" from archive", "LOG: restored log file \"00000006.history\" from archive", " [filtered 5 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "echo \"172.17.0.2 demo-bucket.s3.us-east-1.amazonaws.com s3.us-east-1.amazonaws.com\" | tee -a /etc/hosts" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "mc config host add demo https://172.17.0.2 accessKey1 verySecretKey1 --insecure" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "mc mb demo/demo-bucket --insecure" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "process-max" : { "value" : "4" }, "repo1-path" : { "value" : "/demo-repo" }, "repo1-s3-bucket" : { "value" : "demo-bucket" }, "repo1-s3-endpoint" : { "value" : "s3.us-east-1.amazonaws.com" }, "repo1-s3-key" : { "value" : "accessKey1" }, "repo1-s3-key-secret" : { "value" : "verySecretKey1" }, "repo1-s3-region" : { "value" : "us-east-1" }, "repo1-type" : { "value" : "s3" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/10/demo", "", "[global]", "process-max=4", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/demo-repo", "repo1-retention-diff=2", "repo1-retention-full=2", "repo1-s3-bucket=demo-bucket", "repo1-s3-endpoint=s3.us-east-1.amazonaws.com", "repo1-s3-key=accessKey1", "repo1-s3-key-secret=verySecretKey1", "repo1-s3-region=us-east-1", "repo1-type=s3", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-create command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/demo-repo --repo1-s3-bucket=demo-bucket --repo1-s3-endpoint=s3.us-east-1.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --repo1-type=s3 --stanza=demo", "P00 INFO: http statistics: objects 2, sessions 2, requests 12, retries 0, closes 0", "P00 INFO: stanza-create command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "no prior backup exists|full backup size" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --process-max=4 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo1-s3-bucket=demo-bucket --repo1-s3-endpoint=s3.us-east-1.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --repo1-type=s3 --stanza=demo --start-fast", "P00 WARN: no prior backup exists, incr backup has been changed to full", "P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 000000070000000000000018, lsn = 0/18000028", " [filtered 1238 lines of output]", "P04 INFO: backup file /var/lib/postgresql/10/demo/base/1/12822 (0B, 100%)", "P01 INFO: backup file /var/lib/postgresql/10/demo/base/1/12817 (0B, 100%)", "P00 INFO: full backup size = 29.7MB", "P00 INFO: execute non-exclusive pg_stop_backup() and wait for all WAL segments to archive", "P00 INFO: backup stop archive = 000000070000000000000018, lsn = 0/18000130", " [filtered 7 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stop" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stop command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/demo-repo --repo1-s3-bucket=demo-bucket --repo1-s3-endpoint=s3.us-east-1.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --repo1-type=s3 --stanza=demo", "P00 INFO: stop command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-delete" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-delete command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/demo-repo --repo1-s3-bucket=demo-bucket --repo1-s3-endpoint=s3.us-east-1.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --repo1-type=s3 --stanza=demo", "P00 INFO: http statistics: objects 2, sessions 2, requests 15, retries 0, closes 0", "P00 INFO: stanza-delete command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "id" : "repo1", "image" : "pgbackrest/doc:debian", "name" : "repository", "option" : "-v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run", "os" : "debian", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.5" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo adduser --disabled-password --gecos \"\" pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo apt-get install postgresql-client libxml2" ], "cmd-extra" : "-y 2>&1", "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo scp build:/build/pgbackrest-release-2.24/src/pgbackrest /usr/bin" ], "cmd-extra" : "2>&1", "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 755 /usr/bin/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 770 /var/log/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown pgbackrest:pgbackrest /var/log/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest/conf.d" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo touch /etc/pgbackrest/pgbackrest.conf" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 640 /etc/pgbackrest/pgbackrest.conf" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown pgbackrest:pgbackrest /etc/pgbackrest/pgbackrest.conf" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /var/lib/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 750 /var/lib/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown pgbackrest:pgbackrest /var/lib/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest mkdir -m 750 /home/pgbackrest/.ssh" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest ssh-keygen -f /home/pgbackrest/.ssh/id_rsa \\", " -t rsa -b 4096 -N \"\"" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -m 750 -p /var/lib/postgresql/.ssh" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh-keygen -f /var/lib/postgresql/.ssh/id_rsa \\", " -t rsa -b 4096 -N \"\"" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\", " echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\", " sudo ssh root@pg-primary cat /var/lib/postgresql/.ssh/id_rsa.pub) | \\", " sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\", " echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\", " sudo ssh root@repository cat /home/pgbackrest/.ssh/id_rsa.pub) | \\", " sudo -u postgres tee -a /var/lib/postgresql/.ssh/authorized_keys" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest ssh postgres@pg-primary" ], "cmd-extra" : "-o StrictHostKeyChecking=no", "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh pgbackrest@repository" ], "cmd-extra" : "-o StrictHostKeyChecking=no", "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "global" : { "repo1-path" : { "value" : "/var/lib/pgbackrest" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[global]", "repo1-path=/var/lib/pgbackrest" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "demo" : { "pg1-host" : { "value" : "pg-primary" }, "pg1-path" : { "value" : "/var/lib/postgresql/10/demo" } }, "global" : { "log-level-stderr" : { "value" : "off" }, "log-timestamp" : { "value" : "n" }, "repo1-retention-full" : { "value" : "2" }, "start-fast" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/postgresql/10/demo", "", "[global]", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/postgresql/10/demo" } }, "global" : { "log-level-file" : { "value" : "detail" }, "log-level-stderr" : { "value" : "off" }, "log-timestamp" : { "value" : "n" }, "repo1-host" : { "value" : "repository" } } }, "reset" : true }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/10/demo", "", "[global]", "log-level-file=detail", "repo1-host=repository" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo stanza-create" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo check" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo check" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo backup" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: no prior backup exists, incr backup has been changed to full" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo backup" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "global" : { "process-max" : { "value" : "3" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/postgresql/10/demo", "", "[global]", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest info" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "timestamp start/stop" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "stanza: demo", " status: ok", " cipher: none", "", " db (current)", " wal archive min/max (10-1): 00000008000000000000001E/000000080000000000000020", "", " full backup: 20200225-160013F", " timestamp start/stop: 2020-02-25 16:00:13 / 2020-02-25 16:00:31", " wal start/stop: 00000008000000000000001E / 00000008000000000000001E", " database size: 29.7MB, backup size: 29.7MB", " repository size: 3.5MB, repository backup size: 3.5MB", "", " full backup: 20200225-160034F", " timestamp start/stop: 2020-02-25 16:00:34 / 2020-02-25 16:00:43", " wal start/stop: 000000080000000000000020 / 000000080000000000000020", " database size: 29.7MB, backup size: 29.7MB", " repository size: 3.5MB, repository backup size: 3.5MB" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo backup" ], "err-expect" : "56", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "\\: stop file exists for all stanzas" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: unable to check pg-1: [StopError] raised from remote-0 protocol on 'pg-primary': stop file exists for all stanzas", "P00 ERROR: [056]: unable to find primary cluster - cannot proceed" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest stop" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: stop file already exists for all stanzas" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo backup" ], "err-expect" : "56", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "\\: stop file exists for stanza demo" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: unable to check pg-1: [StopError] raised from remote-0 protocol on 'pg-primary': stop file exists for stanza demo", "P00 ERROR: [056]: unable to find primary cluster - cannot proceed" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "id" : "pg2", "image" : "pgbackrest/doc:debian", "name" : "pg-standby", "option" : "-v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run", "os" : "debian", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.6" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo apt-get install postgresql-client libxml2" ], "cmd-extra" : "-y 2>&1", "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo scp build:/build/pgbackrest-release-2.24/src/pgbackrest /usr/bin" ], "cmd-extra" : "2>&1", "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 755 /usr/bin/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 770 /var/log/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/log/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest/conf.d" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo touch /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 640 /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -m 750 -p /var/lib/postgresql/.ssh" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh-keygen -f /var/lib/postgresql/.ssh/id_rsa \\", " -t rsa -b 4096 -N \"\"" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\", " echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\", " sudo ssh root@pg-standby cat /var/lib/postgresql/.ssh/id_rsa.pub) | \\", " sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\", " echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\", " sudo ssh root@repository cat /home/pgbackrest/.ssh/id_rsa.pub) | \\", " sudo -u postgres tee -a /var/lib/postgresql/.ssh/authorized_keys" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest ssh postgres@pg-standby" ], "cmd-extra" : "-o StrictHostKeyChecking=no", "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh pgbackrest@repository" ], "cmd-extra" : "-o StrictHostKeyChecking=no", "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/postgresql/10/demo" } }, "global" : { "log-level-file" : { "value" : "detail" }, "log-level-stderr" : { "value" : "off" }, "log-timestamp" : { "value" : "n" }, "repo1-host" : { "value" : "repository" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/10/demo", "", "[global]", "log-level-file=detail", "repo1-host=repository" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_createcluster 10 demo" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/postgresql/10/demo/recovery.conf" ], "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "# Recovery settings generated by pgBackRest restore on 2020-02-25 16:01:23", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "standby_mode = 'on'" ] } }, { "key" : { "file" : "/etc/postgresql/10/demo/postgresql.conf", "host" : "pg-standby", "option" : { "archive_command" : { "value" : "'pgbackrest --stanza=demo archive-push %p'" }, "archive_mode" : { "value" : "on" }, "hot_standby" : { "value" : "on" }, "log_filename" : { "value" : "'postgresql.log'" }, "log_line_prefix" : { "value" : "''" }, "max_wal_senders" : { "value" : "3" }, "wal_level" : { "value" : "replica" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo archive-push %p'", "archive_mode = on", "hot_standby = on", "log_filename = 'postgresql.log'", "log_line_prefix = ''", "max_wal_senders = 3", "wal_level = replica" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/log/postgresql/postgresql-10-demo.log" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo start" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/log/postgresql/postgresql-10-demo.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "entering standby mode|database system is ready to accept read only connections" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 3 lines of output]", "LOG: listening on Unix socket \"/var/run/postgresql/.s.PGSQL.5432\"", "LOG: database system was interrupted; last known up at 2020-02-25 16:00:34 UTC", "LOG: entering standby mode", "LOG: restored log file \"00000008.history\" from archive", "LOG: restored log file \"000000080000000000000020\" from archive", "LOG: redo starts at 0/20000028", "LOG: consistent recovery state reached at 0/200000F8", "LOG: database system is ready to accept read only connections", "LOG: incomplete startup packet" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " begin; \\", " create table replicated_table (message text); \\", " insert into replicated_table values ('Important Data'); \\", " commit; \\", " select * from replicated_table\";" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message ", "----------------", " Important Data", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from replicated_table;\"" ], "err-expect" : "1", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "does not exist" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ERROR: relation \"replicated_table\" does not exist", "LINE 1: select * from replicated_table;", " ^" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select *, current_timestamp from pg_switch_wal()\";" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " pg_switch_wal | current_timestamp ", "---------------+-------------------------------", " 0/2102A938 | 2020-02-25 16:01:36.869657+00", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select *, current_timestamp from replicated_table\"" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message | current_timestamp ", "----------------+-------------------------------", " Important Data | 2020-02-25 16:01:40.525786+00", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "because this is a standby" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: check command begin 2.24: --log-level-console=info --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --repo1-host=repository --stanza=demo", "P00 INFO: switch wal not performed because this is a standby", "P00 INFO: check command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " create user replicator password 'jw8s0F4' replication\";" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "CREATE ROLE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sh -c 'echo \\", " \"host replication replicator 172.17.0.6/32 md5\" \\", " >> /etc/postgresql/10/demo/pg_hba.conf'" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo reload" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "demo" : { "recovery-option" : { "value" : "primary_conninfo=host=172.17.0.4 port=5432 user=replicator" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/10/demo", "recovery-option=primary_conninfo=host=172.17.0.4 port=5432 user=replicator", "", "[global]", "log-level-file=detail", "repo1-host=repository" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sh -c 'echo \\", " \"172.17.0.4:*:replication:replicator:jw8s0F4\" \\", " >> /var/lib/postgresql/.pgpass'" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres chmod 600 /var/lib/postgresql/.pgpass" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo stop" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/postgresql/10/demo/recovery.conf" ], "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "# Recovery settings generated by pgBackRest restore on 2020-02-25 16:01:47", "primary_conninfo = 'host=172.17.0.4 port=5432 user=replicator'", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "standby_mode = 'on'" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/log/postgresql/postgresql-10-demo.log" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo start" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/log/postgresql/postgresql-10-demo.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "started streaming WAL from primary" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 11 lines of output]", "LOG: restored log file \"000000080000000000000021\" from archive", "LOG: incomplete startup packet", "LOG: started streaming WAL from primary at 0/22000000 on timeline 8" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " begin; \\", " create table stream_table (message text); \\", " insert into stream_table values ('Important Data'); \\", " commit; \\", " select *, current_timestamp from stream_table\";" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message | current_timestamp ", "----------------+-------------------------------", " Important Data | 2020-02-25 16:01:55.684577+00", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select *, current_timestamp from stream_table\"" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message | current_timestamp ", "----------------+-------------------------------", " Important Data | 2020-02-25 16:01:57.266311+00", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 750 /var/spool/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/spool/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 750 /var/spool/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/spool/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "archive-async" : { "value" : "y" }, "spool-path" : { "value" : "/var/spool/pgbackrest" } }, "global:archive-get" : { "process-max" : { "value" : "2" } }, "global:archive-push" : { "process-max" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/10/demo", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "spool-path=/var/spool/pgbackrest", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "global" : { "archive-async" : { "value" : "y" }, "spool-path" : { "value" : "/var/spool/pgbackrest" } }, "global:archive-get" : { "process-max" : { "value" : "2" } }, "global:archive-push" : { "process-max" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/10/demo", "recovery-option=primary_conninfo=host=172.17.0.4 port=5432 user=replicator", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "spool-path=/var/spool/pgbackrest", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"alter user replicator password 'bogus'\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ALTER ROLE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo restart" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres rm -f /var/log/pgbackrest/demo-archive-push-async.log" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select pg_create_restore_point('test async push'); select pg_switch_wal(); \\", " select pg_create_restore_point('test async push'); select pg_switch_wal(); \\", " select pg_create_restore_point('test async push'); select pg_switch_wal(); \\", " select pg_create_restore_point('test async push'); select pg_switch_wal(); \\", " select pg_create_restore_point('test async push'); select pg_switch_wal();\"" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "WAL segment" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: check command begin 2.24: --log-level-console=info --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --repo1-host=repository --stanza=demo", "P00 INFO: WAL segment 000000080000000000000027 successfully archived to '/var/lib/pgbackrest/archive/demo/10-1/0000000800000000/000000080000000000000027-0367ae95fe48f02a5b536afacec69d1b672ab230.gz'", "P00 INFO: check command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/log/pgbackrest/demo-archive-push-async.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ " WAL file\\(s\\) to archive|pushed WAL file \\'0000000" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-------------------PROCESS START-------------------", "P00 INFO: archive-push:async command begin 2.24: [/var/lib/postgresql/10/demo/pg_wal] --archive-async --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: push 1 WAL file(s) to archive: 000000080000000000000022", "P01 DETAIL: pushed WAL file '000000080000000000000022' to the archive", "P00 INFO: archive-push:async command end: completed successfully", "", "-------------------PROCESS START-------------------", "P00 INFO: archive-push:async command begin 2.24: [/var/lib/postgresql/10/demo/pg_wal] --archive-async --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: push 4 WAL file(s) to archive: 000000080000000000000023...000000080000000000000026", "P02 DETAIL: pushed WAL file '000000080000000000000024' to the archive", "P01 DETAIL: pushed WAL file '000000080000000000000023' to the archive", "P02 DETAIL: pushed WAL file '000000080000000000000025' to the archive", "P01 DETAIL: pushed WAL file '000000080000000000000026' to the archive", "P00 INFO: archive-push:async command end: completed successfully", "", "-------------------PROCESS START-------------------", "P00 INFO: archive-push:async command begin 2.24: [/var/lib/postgresql/10/demo/pg_wal] --archive-async --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: push 1 WAL file(s) to archive: 000000080000000000000027", "P01 DETAIL: pushed WAL file '000000080000000000000027' to the archive", "P00 INFO: archive-push:async command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 5" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/log/pgbackrest/demo-archive-get-async.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "found [0-F]{24} in the archive" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-------------------PROCESS START-------------------", "P00 INFO: archive-get:async command begin 2.24: [000000080000000000000020, 000000080000000000000021, 000000080000000000000022, 000000080000000000000023, 000000080000000000000024, 000000080000000000000025, 000000080000000000000026, 000000080000000000000027] --archive-async --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: get 8 WAL file(s) from archive: 000000080000000000000020...000000080000000000000027", "P01 DETAIL: found 000000080000000000000020 in the archive", "P02 DETAIL: found 000000080000000000000021 in the archive", "P01 DETAIL: unable to find 000000080000000000000022 in the archive", "P02 DETAIL: unable to find 000000080000000000000023 in the archive", " [filtered 27 lines of output]", "P02 DETAIL: unable to find 000000080000000000000028 in the archive", "P02 DETAIL: unable to find 000000080000000000000029 in the archive", "P01 DETAIL: found 000000080000000000000022 in the archive", "P00 INFO: archive-get:async command end: completed successfully", "", "-------------------PROCESS START-------------------", "P00 INFO: archive-get:async command begin 2.24: [000000080000000000000023, 000000080000000000000024, 000000080000000000000025, 000000080000000000000026, 000000080000000000000027, 000000080000000000000028, 000000080000000000000029, 00000008000000000000002A] --archive-async --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: get 8 WAL file(s) from archive: 000000080000000000000023...00000008000000000000002A", "P01 DETAIL: found 000000080000000000000023 in the archive", "P02 DETAIL: found 000000080000000000000024 in the archive", "P01 DETAIL: found 000000080000000000000025 in the archive", "P02 DETAIL: found 000000080000000000000026 in the archive", "P02 DETAIL: unable to find 000000080000000000000028 in the archive", "P02 DETAIL: unable to find 000000080000000000000029 in the archive", "P02 DETAIL: unable to find 00000008000000000000002A in the archive", "P01 DETAIL: found 000000080000000000000027 in the archive", "P00 INFO: archive-get:async command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"alter user replicator password 'jw8s0F4'\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ALTER ROLE" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "demo" : { "pg2-host" : { "value" : "pg-standby" }, "pg2-path" : { "value" : "/var/lib/postgresql/10/demo" } }, "global" : { "backup-standby" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/postgresql/10/demo", "pg2-host=pg-standby", "pg2-path=/var/lib/postgresql/10/demo", "", "[global]", "backup-standby=y", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --log-level-console=detail backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "backup file pg-primary|replay on the standby" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 2 lines of output]", "P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 000000080000000000000029, lsn = 0/29000028", "P00 INFO: wait for replay on the standby to reach 0/29000028", "P00 INFO: replay on the standby reached 0/29000028", "P03 INFO: backup file pg-standby:/var/lib/postgresql/10/demo/base/12980/1249 (392KB, 17%) checksum 3fcdb0e05aebadae41a7f3868917b90d4417c844", "P02 INFO: backup file pg-standby:/var/lib/postgresql/10/demo/base/12980/2608 (440KB, 36%) checksum c0742ac8a69475332c28dc67a9b212db71c5b3dd", " [filtered 10 lines of output]", "P04 INFO: backup file pg-standby:/var/lib/postgresql/10/demo/base/12980/2610 (32KB, 89%) checksum 7603ed0e5a6bb83b9074dae862dd91610da0e06f", "P02 INFO: backup file pg-standby:/var/lib/postgresql/10/demo/base/12980/2610_fsm (24KB, 90%) checksum 858e0b8e72c2f8ebade7eed2d1ce3325a477f45f", "P01 INFO: backup file pg-primary:/var/lib/postgresql/10/demo/global/pg_control (8KB, 91%) checksum ddebcfd6ce498d773c55dadc51ed677a1a3142c4", "P03 INFO: backup file pg-standby:/var/lib/postgresql/10/demo/base/12980/2608_fsm (24KB, 92%) checksum cd7a43a3002f7c1f37464acea2b21d11be4495b3", "P04 INFO: backup file pg-standby:/var/lib/postgresql/10/demo/base/12980/1249_fsm (24KB, 93%) checksum bf905a0ae44b097e629f75f9cb02b81314726de9", "P02 INFO: backup file pg-standby:/var/lib/postgresql/10/demo/global/2677 (16KB, 94%) checksum c92d4c082e665ff6560ae42fe8a8ee062c128365", "P01 INFO: backup file pg-primary:/var/lib/postgresql/10/demo/pg_logical/replorigin_checkpoint (8B, 94%) checksum 347fc8f2df71bd4436e38bd1516ccd7ea0d46532", "P03 INFO: backup file pg-standby:/var/lib/postgresql/10/demo/global/2676 (16KB, 94%) checksum 2cf37ba2bde4c603ae6c00a9fb09034111ad50f9", "P04 INFO: backup file pg-standby:/var/lib/postgresql/10/demo/base/12980/2703 (16KB, 95%) checksum 6feb117dd4da6bea940206db8b3b3766486cde01", " [filtered 1235 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 10 demo stop" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres /usr/lib/postgresql/11/bin/initdb \\", " -D /var/lib/postgresql/11/demo -k -A peer" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_createcluster 11 demo" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sh -c 'cd /var/lib/postgresql && \\", " /usr/lib/postgresql/11/bin/pg_upgrade \\", " --old-bindir=/usr/lib/postgresql/10/bin \\", " --new-bindir=/usr/lib/postgresql/11/bin \\", " --old-datadir=/var/lib/postgresql/10/demo \\", " --new-datadir=/var/lib/postgresql/11/demo \\", " --old-options=\" -c config_file=/etc/postgresql/10/demo/postgresql.conf\" \\", " --new-options=\" -c config_file=/etc/postgresql/11/demo/postgresql.conf\"'" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Upgrade Complete" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 68 lines of output]", "Creating script to delete old cluster ok", "", "Upgrade Complete", "----------------", "Optimizer statistics are not transferred by pg_upgrade so,", " [filtered 4 lines of output]" ] } }, { "key" : { "file" : "/etc/postgresql/11/demo/postgresql.conf", "host" : "pg-primary", "option" : { "archive_command" : { "value" : "'pgbackrest --stanza=demo archive-push %p'" }, "archive_mode" : { "value" : "on" }, "listen_addresses" : { "value" : "'*'" }, "log_line_prefix" : { "value" : "''" }, "max_wal_senders" : { "value" : "3" }, "port" : { "value" : "5432" }, "wal_level" : { "value" : "replica" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo archive-push %p'", "archive_mode = on", "listen_addresses = '*'", "log_line_prefix = ''", "max_wal_senders = 3", "port = 5432", "wal_level = replica" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/postgresql/11/demo" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/11/demo", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "spool-path=/var/spool/pgbackrest", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/postgresql/11/demo" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/11/demo", "recovery-option=primary_conninfo=host=172.17.0.4 port=5432 user=replicator", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "spool-path=/var/spool/pgbackrest", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/postgresql/11/demo" }, "pg2-path" : { "value" : "/var/lib/postgresql/11/demo" } }, "global" : { "backup-standby" : { "value" : "n" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/postgresql/11/demo", "pg2-host=pg-standby", "pg2-path=/var/lib/postgresql/11/demo", "", "[global]", "backup-standby=n", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo cp /etc/postgresql/10/demo/pg_hba.conf \\", " /etc/postgresql/11/demo/pg_hba.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --no-online \\", " --log-level-console=info stanza-upgrade" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-upgrade command begin 2.24: --no-backup-standby --log-level-console=info --log-level-stderr=off --no-log-timestamp --no-online --pg1-host=pg-primary --pg2-host=pg-standby --pg1-path=/var/lib/postgresql/11/demo --pg2-path=/var/lib/postgresql/11/demo --repo1-path=/var/lib/pgbackrest --stanza=demo", "P00 INFO: stanza-upgrade command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 11 demo start" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pg_lsclusters" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "Ver Cluster Port Status Owner Data directory Log file", "10 demo 5432 down postgres /var/lib/postgresql/10/demo /var/log/postgresql/postgresql-10-demo.log", "11 demo 5432 online postgres /var/lib/postgresql/11/demo /var/log/postgresql/postgresql-11-demo.log" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo check" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_dropcluster 10 demo" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_dropcluster 10 demo" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_createcluster 11 demo" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo check" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: unable to check pg-2: [DbConnectError] raised from remote-0 protocol on 'pg-standby': unable to connect to 'dbname='postgres' port=5432': could not connect to server: No such file or directory", " \tIs the server running locally and accepting", " \tconnections on Unix domain socket \"/var/run/postgresql/.s.PGSQL.5432\"?" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/postgresql/11/demo/postgresql.conf", "host" : "pg-standby", "option" : { "hot_standby" : { "value" : "on" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "hot_standby = on" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 11 demo start" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo check" ], "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "global" : { "backup-standby" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/postgresql/11/demo", "pg2-host=pg-standby", "pg2-path=/var/lib/postgresql/11/demo", "", "[global]", "backup-standby=y", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } } ] } }, "{\"os-type\":\"centos6\"}" : { "all" : { "user-guide" : [ { "key" : { "id" : "s3", "image" : "minio/minio:RELEASE.2019-10-12T01-39-57Z", "name" : "s3-server", "option" : "-v {[host-repo-path]}/doc/resource/fake-cert/s3-server.crt:/root/.minio/certs/public.crt:ro -v {[host-repo-path]}/doc/resource/fake-cert/s3-server.key:/root/.minio/certs/private.key:ro -e MINIO_REGION=us-east-1 -e MINIO_DOMAIN=s3.us-east-1.amazonaws.com -e MINIO_BROWSER=off -e MINIO_ACCESS_KEY=accessKey1 -e MINIO_SECRET_KEY=verySecretKey1", "os" : "centos6", "param" : "server /data --address :443", "update-hosts" : false }, "type" : "host", "value" : { "ip" : "172.17.0.2" } }, { "key" : { "id" : "build", "image" : "pgbackrest/doc:centos6", "name" : "build", "option" : "-v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run", "os" : "centos6", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.3" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /build/pgbackrest-release-2.24" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo cp -r /pgbackrest/libc /build/pgbackrest-release-2.24" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo cp -r /pgbackrest/src /build/pgbackrest-release-2.24" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown -R vagrant /build/pgbackrest-release-2.24" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo yum install make gcc postgresql-devel openssl-devel libxml2-devel" ], "cmd-extra" : "-y 2>&1", "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "cd /build/pgbackrest-release-2.24/src && ./configure && make" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "id" : "pg1", "image" : "pgbackrest/doc:centos6", "name" : "pg-primary", "option" : "-v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run", "os" : "centos6", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.4" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo yum install postgresql-libs" ], "cmd-extra" : "-y 2>&1", "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo scp build:/build/pgbackrest-release-2.24/src/pgbackrest /usr/bin" ], "cmd-extra" : "2>&1", "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 755 /usr/bin/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 770 /var/log/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/log/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest/conf.d" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo touch /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 640 /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "pgBackRest 2.24 - General help", "", "Usage:", " pgbackrest [options] [command]", "", "Commands:", " archive-get Get a WAL segment from the archive.", " archive-push Push a WAL segment to the archive.", " backup Backup a database cluster.", " check Check the configuration.", " expire Expire backups that exceed retention.", " help Get help.", " info Retrieve information about backups.", " restore Restore a database cluster.", " stanza-create Create the required stanza data.", " stanza-delete Delete a stanza.", " stanza-upgrade Upgrade a stanza.", " start Allow pgBackRest processes to run.", " stop Stop pgBackRest processes from running.", " version Get version.", "", "Use 'pgbackrest help [command]' for more information." ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres /usr/pgsql-9.5/bin/initdb \\", " -D /var/lib/pgsql/9.5/data -k -A peer" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/var/lib/pgsql/9.5/data/postgresql.conf", "host" : "pg-primary", "option" : { "listen_addresses" : { "value" : "'*'" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "listen_addresses = '*'" ] } }, { "key" : { "file" : "/var/lib/pgsql/9.5/data/postgresql.conf", "host" : "pg-primary", "option" : { "log_line_prefix" : { "value" : "''" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "listen_addresses = '*'", "log_line_prefix = ''" ] } }, { "key" : { "file" : "/var/lib/pgsql/9.5/data/postgresql.conf", "host" : "pg-primary", "option" : { "log_filename" : { "value" : "'postgresql.log'" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "listen_addresses = '*'", "log_filename = 'postgresql.log'", "log_line_prefix = ''" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/pgsql/9.5/data" } }, "global" : { "log-level-stderr" : { "value" : "off" }, "log-timestamp" : { "value" : "n" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.5/data" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres bash -c ' \\", " export PGBACKREST_LOG_PATH=/path/set/by/env && \\", " pgbackrest --log-level-console=error help backup log-path'" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "current\\: \\/path\\/set\\/by\\/env" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "pgBackRest 2.24 - 'backup' command - 'log-path' option help", "", "Path where log files are stored.", "", "The log path provides a location for pgBackRest to store log files. Note that", "if log-level-file=off then no log path is required.", "", "current: /path/set/by/env", "default: /var/log/pgbackrest" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /var/lib/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 750 /var/lib/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/lib/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-path" : { "value" : "/var/lib/pgbackrest" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.5/data", "", "[global]", "repo1-path=/var/lib/pgbackrest" ] } }, { "key" : { "file" : "/var/lib/pgsql/9.5/data/postgresql.conf", "host" : "pg-primary", "option" : { "archive_command" : { "value" : "'pgbackrest --stanza=demo archive-push %p'" }, "archive_mode" : { "value" : "on" }, "max_wal_senders" : { "value" : "3" }, "wal_level" : { "value" : "hot_standby" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo archive-push %p'", "archive_mode = on", "listen_addresses = '*'", "log_filename = 'postgresql.log'", "log_line_prefix = ''", "max_wal_senders = 3", "wal_level = hot_standby" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 restart" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global:archive-push" : { "compress-level" : { "value" : "3" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.5/data", "", "[global]", "repo1-path=/var/lib/pgbackrest", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-full" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.5/data", "", "[global]", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-cipher-pass" : { "value" : "zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO" }, "repo1-cipher-type" : { "value" : "aes-256-cbc" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.5/data", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-create command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.5/data --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo", "P00 INFO: stanza-create command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ " successfully archived to " ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: check command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.5/data --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo", "P00 INFO: WAL segment 000000010000000000000001 successfully archived to '/var/lib/pgbackrest/archive/demo/9.5-1/0000000100000000/000000010000000000000001-8a394fef522ddcc42a883f8de6b533d68e00723e.gz'", "P00 INFO: check command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "no prior backup exists|full backup size" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.5/data --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo", "P00 WARN: no prior backup exists, incr backup has been changed to full", "P00 INFO: execute exclusive pg_start_backup(): backup begins after the next regular checkpoint completes", "P00 INFO: backup start archive = 000000010000000000000003, lsn = 0/3000028", " [filtered 851 lines of output]", "P01 INFO: backup file /var/lib/pgsql/9.5/data/base/1/12216 (0B, 100%)", "P01 INFO: backup file /var/lib/pgsql/9.5/data/base/1/12211 (0B, 100%)", "P00 INFO: full backup size = 20.6MB", "P00 INFO: execute exclusive pg_stop_backup() and wait for all WAL segments to archive", "P00 INFO: backup stop archive = 000000010000000000000003, lsn = 0/30000F8", " [filtered 5 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-154519F" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "diff backup size" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 5 lines of output]", "P01 INFO: backup file /var/lib/pgsql/9.5/data/pg_log/postgresql.log (1KB, 97%) checksum c9bf49a78acefecc21fdb3125d648135afda96b1", "P01 INFO: backup file /var/lib/pgsql/9.5/data/backup_label (246B, 100%) checksum 7cf47658fa1a5aebdcf85dd89dcdf5d8cd9dbad9", "P00 INFO: diff backup size = 9.3KB", "P00 INFO: execute exclusive pg_stop_backup() and wait for all WAL segments to archive", "P00 INFO: backup stop archive = 000000010000000000000005, lsn = 0/50000F8", " [filtered 5 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest info" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "(full|incr|diff) backup" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "stanza: demo", " status: ok", " cipher: aes-256-cbc", "", " db (current)", " wal archive min/max (9.5-1): 000000010000000000000003/000000010000000000000005", "", " full backup: 20200225-154519F", " timestamp start/stop: 2020-02-25 15:45:19 / 2020-02-25 15:45:33", " wal start/stop: 000000010000000000000003 / 000000010000000000000003", " database size: 20.6MB, backup size: 20.6MB", " repository size: 2.4MB, repository backup size: 2.4MB", "", " diff backup: 20200225-154519F_20200225-154535D", " timestamp start/stop: 2020-02-25 15:45:35 / 2020-02-25 15:45:37", " wal start/stop: 000000010000000000000005 / 000000010000000000000005", " database size: 20.6MB, backup size: 9.3KB", " repository size: 2.4MB, repository backup size: 768B", " backup reference list: 20200225-154519F" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres rm /var/lib/pgsql/9.5/data/global/pg_control" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm -f /var/lib/pgsql/9.5/pgstartup.log" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 start" ], "err-expect" : "1", "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo cat /var/lib/pgsql/9.5/pgstartup.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "could not find the database system" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "postmaster: could not find the database system", "Expected to find it in the directory \"/var/lib/pgsql/9.5/data\",", "but could not open file \"/var/lib/pgsql/9.5/data/global/pg_control\": No such file or directory" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres find /var/lib/pgsql/9.5/data -mindepth 1 -delete" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "backup begins after the next regular checkpoint completes" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.5/data --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo --type=incr", "P00 INFO: last backup label = 20200225-154519F_20200225-154535D, version = 2.24", "P00 INFO: execute exclusive pg_start_backup(): backup begins after the next regular checkpoint completes", "P00 INFO: backup start archive = 000000020000000000000007, lsn = 0/7000028", "P00 WARN: a timeline switch has occurred since the 20200225-154519F_20200225-154535D backup, enabling delta checksum", " [filtered 11 lines of output]" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "start-fast" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.5/data", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "backup begins after the requested immediate checkpoint completes" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.5/data --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo --start-fast --type=incr", "P00 INFO: last backup label = 20200225-154519F_20200225-154602I, version = 2.24", "P00 INFO: execute exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 000000020000000000000008, lsn = 0/8000028", "P01 INFO: backup file /var/lib/pgsql/9.5/data/global/pg_control (8KB, 79%) checksum 0718999129d91209cea3045c0199c3af9d471e11", " [filtered 10 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 550 /var/lib/pgbackrest/backup/demo/" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr \\", " --log-level-console=info backup" ], "err-expect" : "47", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "ERROR:" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 2 lines of output]", "P00 INFO: execute exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 00000002000000000000000A, lsn = 0/A000028", "P00 ERROR: [047]: unable to create path '/var/lib/pgbackrest/backup/demo/20200225-154519F_20200225-154613I': [13] Permission denied", "P00 INFO: backup command end: aborted with exception [047]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 750 /var/lib/pgbackrest/backup/demo/" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr \\", " --log-level-console=info backup" ], "err-expect" : "57", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "ERROR:" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.5/data --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo --start-fast --type=incr", "P00 INFO: last backup label = 20200225-154519F_20200225-154607I, version = 2.24", "P00 INFO: execute exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes", "P00 ERROR: [057]: unable to execute query 'select lsn::text as lsn,", " pg_catalog.pg_xlogfile_name(lsn)::text as wal_segment_name", " from pg_catalog.pg_start_backup('pgBackRest backup started at ' || current_timestamp, true) as lsn': ERROR: a backup is already in progress", " HINT: Run pg_stop_backup() and try again.", "P00 INFO: backup command end: aborted with exception [057]" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "stop-auto" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.5/data", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "stop-auto=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "cluster is already in backup mode|backup begins after the requested immediate checkpoint completes" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.5/data --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo --start-fast --stop-auto --type=incr", "P00 INFO: last backup label = 20200225-154519F_20200225-154607I, version = 2.24", "P00 INFO: execute exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes", "P00 WARN: the cluster is already in backup mode but no pgBackRest backup process is running. pg_stop_backup() will be called so a new backup can be started.", "P00 INFO: backup start archive = 00000002000000000000000B, lsn = 0/B000028", "P01 INFO: backup file /var/lib/pgsql/9.5/data/global/pg_control (8KB, 74%) checksum bab5686d045121450597ddb1f070df310d770d0d", " [filtered 10 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -p /var/lib/pgsql/pgbackrest/doc/example" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cp -r /pgbackrest/doc/example/* \\", " /var/lib/pgsql/pgbackrest/doc/example" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat \\", " /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-info.sql" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-- An example of monitoring pgBackRest from within PostgreSQL", "--", "-- Use copy to export data from the pgBackRest info command into the jsonb", "-- type so it can be queried directly by PostgreSQL.", "", "-- Create monitor schema", "create schema monitor;", "", "-- Get pgBackRest info in JSON format", "create function monitor.pgbackrest_info()", " returns jsonb AS $$", "declare", " data jsonb;", "begin", " -- Create a temp table to hold the JSON data", " create temp table temp_pgbackrest_data (data jsonb);", "", " -- Copy data into the table directly from the pgBackRest info command", " copy temp_pgbackrest_data (data)", " from program", " 'pgbackrest --output=json info' (format text);", "", " select temp_pgbackrest_data.data", " into data", " from temp_pgbackrest_data;", "", " drop table temp_pgbackrest_data;", "", " return data;", "end $$ language plpgsql;" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -f \\", " /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-info.sql" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat \\", " /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-query.sql" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-- Get last successful backup for each stanza", "--", "-- Requires the monitor.pgbackrest_info function.", "with stanza as", "(", " select data->'name' as name,", " data->'backup'->(", " jsonb_array_length(data->'backup') - 1) as last_backup,", " data->'archive'->(", " jsonb_array_length(data->'archive') - 1) as current_archive", " from jsonb_array_elements(monitor.pgbackrest_info()) as data", ")", "select name,", " to_timestamp(", " (last_backup->'timestamp'->>'stop')::numeric) as last_successful_backup,", " current_archive->>'max' as last_archived_wal", " from stanza;" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -f \\", " /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-query.sql" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " name | last_successful_backup | last_archived_wal ", "--------+------------------------+--------------------------", " \"demo\" | 2020-02-25 15:46:22+00 | 00000002000000000000000B", "(1 row)" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-full" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.5/data", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "stop-auto=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=full \\", " --log-level-console=detail backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "archive retention on backup 20200225-154519F|remove archive" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 861 lines of output]", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.24: --log-level-console=detail --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo", "P00 DETAIL: archive retention on backup 20200225-154519F, archiveId = 9.5-1, start = 000000010000000000000003", "P00 DETAIL: no archive to remove, archiveId = 9.5-1", "P00 INFO: expire command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-154627F" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=full \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "expire full backup set\\: 20200225-154519F|archive retention on backup 20200225-154627F|remove archive" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 861 lines of output]", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo", "P00 INFO: expire full backup set: 20200225-154519F, 20200225-154519F_20200225-154535D, 20200225-154519F_20200225-154602I, 20200225-154519F_20200225-154607I, 20200225-154519F_20200225-154618I", "P00 INFO: remove expired backup 20200225-154519F_20200225-154618I", "P00 INFO: remove expired backup 20200225-154519F_20200225-154607I", " [filtered 3 lines of output]" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-diff" : { "value" : "1" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.5/data", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-diff=1", "repo1-retention-full=2", "start-fast=y", "stop-auto=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-154644F_20200225-154704D" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "expire diff backup set: 20200225-154644F_20200225-154704D" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 13 lines of output]", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-diff=1 --repo1-retention-full=2 --stanza=demo", "P00 INFO: expire diff backup set: 20200225-154644F_20200225-154704D, 20200225-154644F_20200225-154710I", "P00 INFO: remove expired backup 20200225-154644F_20200225-154710I", "P00 INFO: remove expired backup 20200225-154644F_20200225-154704D" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-diff" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.5/data", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-diff=2", "repo1-retention-full=2", "start-fast=y", "stop-auto=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-154644F_20200225-154714D" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select pg_create_restore_point('generate WAL'); select pg_switch_xlog(); \\", " select pg_create_restore_point('generate WAL'); select pg_switch_xlog();\"" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "new backup label" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 10 lines of output]", "P00 INFO: backup stop archive = 000000020000000000000015, lsn = 0/150000F8", "P00 INFO: check archive for segment(s) 000000020000000000000015:000000020000000000000015", "P00 INFO: new backup label = 20200225-154644F_20200225-154720D", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-diff=2 --repo1-retention-full=2 --stanza=demo" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-154644F_20200225-154720D" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=detail \\", " --repo1-retention-archive-type=diff --repo1-retention-archive=1 expire" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "archive retention on backup 20200225-154644F_20200225-154714D|remove archive" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: expire command begin 2.24: --log-level-console=detail --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-archive=1 --repo1-retention-archive-type=diff --repo1-retention-diff=2 --repo1-retention-full=2 --stanza=demo", "P00 DETAIL: archive retention on backup 20200225-154627F, archiveId = 9.5-1, start = 00000002000000000000000D, stop = 00000002000000000000000D", "P00 DETAIL: archive retention on backup 20200225-154644F, archiveId = 9.5-1, start = 00000002000000000000000E, stop = 00000002000000000000000E", "P00 DETAIL: archive retention on backup 20200225-154644F_20200225-154714D, archiveId = 9.5-1, start = 000000020000000000000012, stop = 000000020000000000000012", "P00 DETAIL: archive retention on backup 20200225-154644F_20200225-154720D, archiveId = 9.5-1, start = 000000020000000000000015", "P00 DETAIL: remove archive: archiveId = 9.5-1, start = 00000002000000000000000F, stop = 000000020000000000000011", "P00 DETAIL: remove archive: archiveId = 9.5-1, start = 000000020000000000000013, stop = 000000020000000000000014", "P00 INFO: expire command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --log-level-console=detail restore" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "demo\\/PG_VERSION - exists and matches backup|remove invalid files|rename global\\/pg_control" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 2 lines of output]", "P00 DETAIL: check '/var/lib/pgsql/9.5/data' exists", "P00 DETAIL: remove 'global/pg_control' so cluster will not start if restore does not complete", "P00 INFO: remove invalid files/links/paths from '/var/lib/pgsql/9.5/data'", "P00 DETAIL: remove invalid file '/var/lib/pgsql/9.5/data/backup_label.old'", "P00 DETAIL: remove invalid file '/var/lib/pgsql/9.5/data/base/12378/pg_internal.init'", " [filtered 901 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create database test1;\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "CREATE DATABASE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create database test2;\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "CREATE DATABASE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create table test1_table (id int); \\", " insert into test1_table (id) values (1);\" test1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "INSERT 0 1" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create table test2_table (id int); \\", " insert into test2_table (id) values (2);\" test2" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "INSERT 0 1" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -Atc \"select oid from pg_database where datname = 'test1'\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "24576" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres du -sh /var/lib/pgsql/9.5/data/base/24576" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "6.9M\t/var/lib/pgsql/9.5/data/base/24576" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-154644F_20200225-154736I" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo \\", " --set=20200225-154644F_20200225-154736I info" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "database list" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 11 lines of output]", " repository size: 4MB, repository backup size: 1.6MB", " backup reference list: 20200225-154644F, 20200225-154644F_20200225-154720D", " database list: postgres (12378), test1 (24576), test2 (24577)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --db-include=test2 restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from test2_table;\" test2" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " id ", "----", " 2", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from test1_table;\" test1" ], "err-expect" : "2", "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "relation mapping file.*contains invalid data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "psql: FATAL: relation mapping file \"base/24576/pg_filenode.map\" contains invalid data" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres du -sh /var/lib/pgsql/9.5/data/base/24576" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "152K\t/var/lib/pgsql/9.5/data/base/24576" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"drop database test1;\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "DROP DATABASE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select oid, datname from pg_database order by oid;\"" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "test2" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " oid | datname ", "-------+-----------", " 1 | template1", " 12373 | template0", " 12378 | postgres", " 24577 | test2", "(4 rows)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"begin; \\", " create table important_table (message text); \\", " insert into important_table values ('Important Data'); \\", " commit; \\", " select * from important_table;\"" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message ", "----------------", " Important Data", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -Atc \"select current_timestamp\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "2020-02-25 15:48:11.850936+00" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"begin; \\", " drop table important_table; \\", " commit; \\", " select * from important_table;\"" ], "err-expect" : "1", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "does not exist" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ERROR: relation \"important_table\" does not exist", "LINE 1: ...le important_table; commit; select * from important_...", " ^" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --type=time \"--target=2020-02-25 15:48:11.850936+00\" \\", " --target-action=promote restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/lib/pgsql/9.5/data/pg_log/postgresql.log" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/9.5/data/recovery.conf" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "recovery_target_time" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "# Recovery settings generated by pgBackRest restore on 2020-02-25 15:48:15", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "recovery_target_time = '2020-02-25 15:48:11.850936+00'", "recovery_target_action = 'promote'" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from important_table\"" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message ", "----------------", " Important Data", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/9.5/data/pg_log/postgresql.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "recovery stopping before|last completed transaction|starting point-in-time recovery" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "LOG: database system was interrupted; last known up at 2020-02-25 15:48:03 UTC", "LOG: starting point-in-time recovery to 2020-02-25 15:48:11.850936+00", "LOG: restored log file \"00000004.history\" from archive", "LOG: restored log file \"00000004000000000000001A\" from archive", "LOG: redo starts at 0/1A000028", "LOG: consistent recovery state reached at 0/1A0000F8", "LOG: restored log file \"00000004000000000000001B\" from archive", "LOG: recovery stopping before commit of transaction 630, time 2020-02-25 15:48:12.640266+00", "LOG: redo done at 0/1B01B9C0", "LOG: last completed transaction was at log time 2020-02-25 15:48:10.074278+00", "LOG: selected new timeline ID: 5", "LOG: archive recovery complete", " [filtered 4 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"begin; \\", " drop table important_table; \\", " commit; \\", " select * from important_table;\"" ], "err-expect" : "1", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "does not exist" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ERROR: relation \"important_table\" does not exist", "LINE 1: ...le important_table; commit; select * from important_...", " ^" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-154644F_20200225-154824I" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest info" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "20200225-154644F_20200225-154824I" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "stanza: demo", " status: ok", " cipher: aes-256-cbc", "", " db (current)", " wal archive min/max (9.5-1): 00000002000000000000000D/00000005000000000000001C", "", " full backup: 20200225-154627F", " timestamp start/stop: 2020-02-25 15:46:27 / 2020-02-25 15:46:42", " wal start/stop: 00000002000000000000000D / 00000002000000000000000D", " database size: 20.6MB, backup size: 20.6MB", " repository size: 2.4MB, repository backup size: 2.4MB", "", " full backup: 20200225-154644F", " timestamp start/stop: 2020-02-25 15:46:44 / 2020-02-25 15:47:00", " wal start/stop: 00000002000000000000000E / 00000002000000000000000E", " database size: 20.6MB, backup size: 20.6MB", " repository size: 2.4MB, repository backup size: 2.4MB", "", " diff backup: 20200225-154644F_20200225-154720D", " timestamp start/stop: 2020-02-25 15:47:20 / 2020-02-25 15:47:23", " wal start/stop: 000000020000000000000015 / 000000020000000000000015", " database size: 20.6MB, backup size: 116.4KB", " repository size: 2.4MB, repository backup size: 12.6KB", " backup reference list: 20200225-154644F", "", " incr backup: 20200225-154644F_20200225-154736I", " timestamp start/stop: 2020-02-25 15:47:36 / 2020-02-25 15:47:45", " wal start/stop: 000000030000000000000017 / 000000030000000000000017", " database size: 33.9MB, backup size: 13.4MB", " repository size: 4MB, repository backup size: 1.6MB", " backup reference list: 20200225-154644F, 20200225-154644F_20200225-154720D", "", " diff backup: 20200225-154644F_20200225-154802D", " timestamp start/stop: 2020-02-25 15:48:02 / 2020-02-25 15:48:09", " wal start/stop: 00000004000000000000001A / 00000004000000000000001A", " database size: 27.3MB, backup size: 6.9MB", " repository size: 3.2MB, repository backup size: 831.5KB", " backup reference list: 20200225-154644F", "", " incr backup: 20200225-154644F_20200225-154824I", " timestamp start/stop: 2020-02-25 15:48:24 / 2020-02-25 15:48:27", " wal start/stop: 00000005000000000000001C / 00000005000000000000001C", " database size: 27.3MB, backup size: 2.0MB", " repository size: 3.2MB, repository backup size: 210KB", " backup reference list: 20200225-154644F, 20200225-154644F_20200225-154802D" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --set=20200225-154644F_20200225-154824I \\", " --type=time \"--target=2020-02-25 15:48:11.850936+00\" --target-action=promote restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/lib/pgsql/9.5/data/pg_log/postgresql.log" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from important_table\"" ], "err-expect" : "1", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "does not exist" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ERROR: relation \"important_table\" does not exist", "LINE 1: select * from important_table", " ^" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/9.5/data/pg_log/postgresql.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "starting point-in-time recovery|consistent recovery state reached" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "LOG: database system was interrupted; last known up at 2020-02-25 15:48:24 UTC", "LOG: starting point-in-time recovery to 2020-02-25 15:48:11.850936+00", "LOG: restored log file \"00000005.history\" from archive", "LOG: restored log file \"00000005000000000000001C\" from archive", "LOG: redo starts at 0/1C000028", "LOG: consistent recovery state reached at 0/1C0000F8", "LOG: redo done at 0/1C0000F8", "LOG: restored log file \"00000005000000000000001C\" from archive", " [filtered 8 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --type=time \"--target=2020-02-25 15:48:11.850936+00\" \\", " --target-action=promote restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/lib/pgsql/9.5/data/pg_log/postgresql.log" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from important_table\"" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message ", "----------------", " Important Data", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/9.5/data/pg_log/postgresql.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "recovery stopping before|last completed transaction|starting point-in-time recovery" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "LOG: database system was interrupted; last known up at 2020-02-25 15:48:03 UTC", "LOG: starting point-in-time recovery to 2020-02-25 15:48:11.850936+00", "LOG: restored log file \"00000004.history\" from archive", "LOG: restored log file \"00000004000000000000001A\" from archive", "LOG: redo starts at 0/1A000028", "LOG: consistent recovery state reached at 0/1A0000F8", "LOG: restored log file \"00000004000000000000001B\" from archive", "LOG: recovery stopping before commit of transaction 630, time 2020-02-25 15:48:12.640266+00", "LOG: redo done at 0/1B01B9C0", "LOG: last completed transaction was at log time 2020-02-25 15:48:10.074278+00", "LOG: restored log file \"00000005.history\" from archive", "LOG: restored log file \"00000006.history\" from archive", " [filtered 6 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "echo \"172.17.0.2 demo-bucket.s3.us-east-1.amazonaws.com s3.us-east-1.amazonaws.com\" | tee -a /etc/hosts" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "mc config host add demo https://172.17.0.2 accessKey1 verySecretKey1 --insecure" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "mc mb demo/demo-bucket --insecure" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "process-max" : { "value" : "4" }, "repo1-path" : { "value" : "/demo-repo" }, "repo1-s3-bucket" : { "value" : "demo-bucket" }, "repo1-s3-endpoint" : { "value" : "s3.us-east-1.amazonaws.com" }, "repo1-s3-key" : { "value" : "accessKey1" }, "repo1-s3-key-secret" : { "value" : "verySecretKey1" }, "repo1-s3-region" : { "value" : "us-east-1" }, "repo1-type" : { "value" : "s3" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.5/data", "", "[global]", "process-max=4", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/demo-repo", "repo1-retention-diff=2", "repo1-retention-full=2", "repo1-s3-bucket=demo-bucket", "repo1-s3-endpoint=s3.us-east-1.amazonaws.com", "repo1-s3-key=accessKey1", "repo1-s3-key-secret=verySecretKey1", "repo1-s3-region=us-east-1", "repo1-type=s3", "start-fast=y", "stop-auto=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-create command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.5/data --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/demo-repo --repo1-s3-bucket=demo-bucket --repo1-s3-endpoint=s3.us-east-1.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --repo1-type=s3 --stanza=demo", "P00 INFO: http statistics: objects 2, sessions 2, requests 12, retries 0, closes 0", "P00 INFO: stanza-create command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "no prior backup exists|full backup size" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.5/data --process-max=4 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo1-s3-bucket=demo-bucket --repo1-s3-endpoint=s3.us-east-1.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --repo1-type=s3 --stanza=demo --start-fast --stop-auto", "P00 WARN: no prior backup exists, incr backup has been changed to full", "P00 INFO: execute exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 00000007000000000000001C, lsn = 0/1C000028", " [filtered 1119 lines of output]", "P03 INFO: backup file /var/lib/pgsql/9.5/data/base/1/12216 (0B, 100%)", "P04 INFO: backup file /var/lib/pgsql/9.5/data/base/1/12211 (0B, 100%)", "P00 INFO: full backup size = 27.3MB", "P00 INFO: execute exclusive pg_stop_backup() and wait for all WAL segments to archive", "P00 INFO: backup stop archive = 00000007000000000000001C, lsn = 0/1C000130", " [filtered 7 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stop" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stop command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/demo-repo --repo1-s3-bucket=demo-bucket --repo1-s3-endpoint=s3.us-east-1.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --repo1-type=s3 --stanza=demo", "P00 INFO: stop command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-delete" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-delete command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.5/data --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/demo-repo --repo1-s3-bucket=demo-bucket --repo1-s3-endpoint=s3.us-east-1.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --repo1-type=s3 --stanza=demo", "P00 INFO: http statistics: objects 2, sessions 2, requests 15, retries 0, closes 0", "P00 INFO: stanza-delete command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "id" : "repo1", "image" : "pgbackrest/doc:centos6", "name" : "repository", "option" : "-v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run", "os" : "centos6", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.5" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo groupadd pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo adduser -gpgbackrest -n pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo yum install postgresql-libs" ], "cmd-extra" : "-y 2>&1", "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo scp build:/build/pgbackrest-release-2.24/src/pgbackrest /usr/bin" ], "cmd-extra" : "2>&1", "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 755 /usr/bin/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 770 /var/log/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown pgbackrest:pgbackrest /var/log/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest/conf.d" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo touch /etc/pgbackrest/pgbackrest.conf" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 640 /etc/pgbackrest/pgbackrest.conf" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown pgbackrest:pgbackrest /etc/pgbackrest/pgbackrest.conf" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /var/lib/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 750 /var/lib/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown pgbackrest:pgbackrest /var/lib/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest mkdir -m 750 /home/pgbackrest/.ssh" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest ssh-keygen -f /home/pgbackrest/.ssh/id_rsa \\", " -t rsa -b 4096 -N \"\"" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -m 750 -p /var/lib/pgsql/.ssh" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh-keygen -f /var/lib/pgsql/.ssh/id_rsa \\", " -t rsa -b 4096 -N \"\"" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\", " echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\", " sudo ssh root@pg-primary cat /var/lib/pgsql/.ssh/id_rsa.pub) | \\", " sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\", " echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\", " sudo ssh root@repository cat /home/pgbackrest/.ssh/id_rsa.pub) | \\", " sudo -u postgres tee -a /var/lib/pgsql/.ssh/authorized_keys" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest ssh postgres@pg-primary" ], "cmd-extra" : "-o StrictHostKeyChecking=no", "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh pgbackrest@repository" ], "cmd-extra" : "-o StrictHostKeyChecking=no", "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "global" : { "repo1-path" : { "value" : "/var/lib/pgbackrest" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[global]", "repo1-path=/var/lib/pgbackrest" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "demo" : { "pg1-host" : { "value" : "pg-primary" }, "pg1-path" : { "value" : "/var/lib/pgsql/9.5/data" } }, "global" : { "log-level-stderr" : { "value" : "off" }, "log-timestamp" : { "value" : "n" }, "repo1-retention-full" : { "value" : "2" }, "start-fast" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/pgsql/9.5/data", "", "[global]", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/pgsql/9.5/data" } }, "global" : { "log-level-file" : { "value" : "detail" }, "log-level-stderr" : { "value" : "off" }, "log-timestamp" : { "value" : "n" }, "repo1-host" : { "value" : "repository" } } }, "reset" : true }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.5/data", "", "[global]", "log-level-file=detail", "repo1-host=repository" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo stanza-create" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo check" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo check" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo backup" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: no prior backup exists, incr backup has been changed to full" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo backup" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "global" : { "process-max" : { "value" : "3" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/pgsql/9.5/data", "", "[global]", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest info" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "timestamp start/stop" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "stanza: demo", " status: ok", " cipher: none", "", " db (current)", " wal archive min/max (9.5-1): 000000080000000000000022/000000080000000000000024", "", " full backup: 20200225-155011F", " timestamp start/stop: 2020-02-25 15:50:11 / 2020-02-25 15:50:28", " wal start/stop: 000000080000000000000022 / 000000080000000000000022", " database size: 27.3MB, backup size: 27.3MB", " repository size: 3.2MB, repository backup size: 3.2MB", "", " full backup: 20200225-155033F", " timestamp start/stop: 2020-02-25 15:50:33 / 2020-02-25 15:50:41", " wal start/stop: 000000080000000000000024 / 000000080000000000000024", " database size: 27.3MB, backup size: 27.3MB", " repository size: 3.2MB, repository backup size: 3.2MB" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo backup" ], "err-expect" : "56", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "\\: stop file exists for all stanzas" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: unable to check pg-1: [StopError] raised from remote-0 protocol on 'pg-primary': stop file exists for all stanzas", "P00 ERROR: [056]: unable to find primary cluster - cannot proceed" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest stop" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: stop file already exists for all stanzas" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo backup" ], "err-expect" : "56", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "\\: stop file exists for stanza demo" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: unable to check pg-1: [StopError] raised from remote-0 protocol on 'pg-primary': stop file exists for stanza demo", "P00 ERROR: [056]: unable to find primary cluster - cannot proceed" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "id" : "pg2", "image" : "pgbackrest/doc:centos6", "name" : "pg-standby", "option" : "-v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run", "os" : "centos6", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.6" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo yum install postgresql-libs" ], "cmd-extra" : "-y 2>&1", "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo scp build:/build/pgbackrest-release-2.24/src/pgbackrest /usr/bin" ], "cmd-extra" : "2>&1", "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 755 /usr/bin/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 770 /var/log/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/log/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest/conf.d" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo touch /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 640 /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -m 750 -p /var/lib/pgsql/.ssh" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh-keygen -f /var/lib/pgsql/.ssh/id_rsa \\", " -t rsa -b 4096 -N \"\"" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\", " echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\", " sudo ssh root@pg-standby cat /var/lib/pgsql/.ssh/id_rsa.pub) | \\", " sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\", " echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\", " sudo ssh root@repository cat /home/pgbackrest/.ssh/id_rsa.pub) | \\", " sudo -u postgres tee -a /var/lib/pgsql/.ssh/authorized_keys" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest ssh postgres@pg-standby" ], "cmd-extra" : "-o StrictHostKeyChecking=no", "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh pgbackrest@repository" ], "cmd-extra" : "-o StrictHostKeyChecking=no", "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/pgsql/9.5/data" } }, "global" : { "log-level-file" : { "value" : "detail" }, "log-level-stderr" : { "value" : "off" }, "log-timestamp" : { "value" : "n" }, "repo1-host" : { "value" : "repository" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.5/data", "", "[global]", "log-level-file=detail", "repo1-host=repository" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -p -m 700 /var/lib/pgsql/9.5/data" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=standby restore" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/9.5/data/recovery.conf" ], "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "# Recovery settings generated by pgBackRest restore on 2020-02-25 15:51:20", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "standby_mode = 'on'" ] } }, { "key" : { "file" : "/var/lib/pgsql/9.5/data/postgresql.conf", "host" : "pg-standby", "option" : { "archive_command" : { "value" : "'pgbackrest --stanza=demo archive-push %p'" }, "archive_mode" : { "value" : "on" }, "hot_standby" : { "value" : "on" }, "log_filename" : { "value" : "'postgresql.log'" }, "log_line_prefix" : { "value" : "''" }, "max_wal_senders" : { "value" : "3" }, "wal_level" : { "value" : "hot_standby" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo archive-push %p'", "archive_mode = on", "hot_standby = on", "log_filename = 'postgresql.log'", "log_line_prefix = ''", "max_wal_senders = 3", "wal_level = hot_standby" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/lib/pgsql/9.5/data/pg_log/postgresql.log" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 start" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/9.5/data/pg_log/postgresql.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "entering standby mode|database system is ready to accept read only connections" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "LOG: database system was interrupted; last known up at 2020-02-25 15:50:34 UTC", "LOG: entering standby mode", "LOG: restored log file \"00000008.history\" from archive", "LOG: restored log file \"000000080000000000000024\" from archive", "LOG: redo starts at 0/24000028", "LOG: consistent recovery state reached at 0/240000F8", "LOG: database system is ready to accept read only connections" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " begin; \\", " create table replicated_table (message text); \\", " insert into replicated_table values ('Important Data'); \\", " commit; \\", " select * from replicated_table\";" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message ", "----------------", " Important Data", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from replicated_table;\"" ], "err-expect" : "1", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "does not exist" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ERROR: relation \"replicated_table\" does not exist", "LINE 1: select * from replicated_table;", " ^" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select *, current_timestamp from pg_switch_xlog()\";" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " pg_switch_xlog | now ", "----------------+-----------------------------", " 0/2501F408 | 2020-02-25 15:51:31.9521+00", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select *, current_timestamp from replicated_table\"" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message | now ", "----------------+------------------------------", " Important Data | 2020-02-25 15:51:37.96339+00", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "because this is a standby" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: check command begin 2.24: --log-level-console=info --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.5/data --repo1-host=repository --stanza=demo", "P00 INFO: switch wal not performed because this is a standby", "P00 INFO: check command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " create user replicator password 'jw8s0F4' replication\";" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "CREATE ROLE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sh -c 'echo \\", " \"host replication replicator 172.17.0.6/32 md5\" \\", " >> /var/lib/pgsql/9.5/data/pg_hba.conf'" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 reload" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "demo" : { "recovery-option" : { "value" : "primary_conninfo=host=172.17.0.4 port=5432 user=replicator" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.5/data", "recovery-option=primary_conninfo=host=172.17.0.4 port=5432 user=replicator", "", "[global]", "log-level-file=detail", "repo1-host=repository" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sh -c 'echo \\", " \"172.17.0.4:*:replication:replicator:jw8s0F4\" \\", " >> /var/lib/pgsql/.pgpass'" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres chmod 600 /var/lib/pgsql/.pgpass" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 stop" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/9.5/data/recovery.conf" ], "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "# Recovery settings generated by pgBackRest restore on 2020-02-25 15:51:49", "primary_conninfo = 'host=172.17.0.4 port=5432 user=replicator'", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "standby_mode = 'on'" ] } }, { "key" : { "file" : "/var/lib/pgsql/9.5/data/postgresql.conf", "host" : "pg-standby", "option" : { "hot_standby" : { "value" : "on" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo archive-push %p'", "archive_mode = on", "hot_standby = on", "log_filename = 'postgresql.log'", "log_line_prefix = ''", "max_wal_senders = 3", "wal_level = hot_standby" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/lib/pgsql/9.5/data/pg_log/postgresql.log" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 start" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/9.5/data/pg_log/postgresql.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "started streaming WAL from primary" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 6 lines of output]", "LOG: database system is ready to accept read only connections", "LOG: restored log file \"000000080000000000000025\" from archive", "LOG: started streaming WAL from primary at 0/26000000 on timeline 8" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " begin; \\", " create table stream_table (message text); \\", " insert into stream_table values ('Important Data'); \\", " commit; \\", " select *, current_timestamp from stream_table\";" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message | now ", "----------------+-------------------------------", " Important Data | 2020-02-25 15:51:59.787809+00", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select *, current_timestamp from stream_table\"" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message | now ", "----------------+-------------------------------", " Important Data | 2020-02-25 15:52:00.623478+00", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 750 /var/spool/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/spool/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 750 /var/spool/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/spool/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "archive-async" : { "value" : "y" }, "spool-path" : { "value" : "/var/spool/pgbackrest" } }, "global:archive-get" : { "process-max" : { "value" : "2" } }, "global:archive-push" : { "process-max" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.5/data", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "spool-path=/var/spool/pgbackrest", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "global" : { "archive-async" : { "value" : "y" }, "spool-path" : { "value" : "/var/spool/pgbackrest" } }, "global:archive-get" : { "process-max" : { "value" : "2" } }, "global:archive-push" : { "process-max" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.5/data", "recovery-option=primary_conninfo=host=172.17.0.4 port=5432 user=replicator", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "spool-path=/var/spool/pgbackrest", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"alter user replicator password 'bogus'\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ALTER ROLE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 restart" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres rm -f /var/log/pgbackrest/demo-archive-push-async.log" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select pg_create_restore_point('test async push'); select pg_switch_xlog(); \\", " select pg_create_restore_point('test async push'); select pg_switch_xlog(); \\", " select pg_create_restore_point('test async push'); select pg_switch_xlog(); \\", " select pg_create_restore_point('test async push'); select pg_switch_xlog(); \\", " select pg_create_restore_point('test async push'); select pg_switch_xlog();\"" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "WAL segment" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: check command begin 2.24: --log-level-console=info --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.5/data --repo1-host=repository --stanza=demo", "P00 INFO: WAL segment 00000008000000000000002B successfully archived to '/var/lib/pgbackrest/archive/demo/9.5-1/0000000800000000/00000008000000000000002B-9636ca085633a772706fc2ec7584a49091a44934.gz'", "P00 INFO: check command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/log/pgbackrest/demo-archive-push-async.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ " WAL file\\(s\\) to archive|pushed WAL file \\'0000000" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-------------------PROCESS START-------------------", "P00 INFO: archive-push:async command begin 2.24: [/var/lib/pgsql/9.5/data/pg_xlog] --archive-async --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.5/data --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: push 1 WAL file(s) to archive: 000000080000000000000026", "P01 DETAIL: pushed WAL file '000000080000000000000026' to the archive", "P00 INFO: archive-push:async command end: completed successfully", "", "-------------------PROCESS START-------------------", "P00 INFO: archive-push:async command begin 2.24: [/var/lib/pgsql/9.5/data/pg_xlog] --archive-async --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.5/data --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: push 5 WAL file(s) to archive: 000000080000000000000027...00000008000000000000002B", "P01 DETAIL: pushed WAL file '000000080000000000000027' to the archive", "P02 DETAIL: pushed WAL file '000000080000000000000028' to the archive", "P01 DETAIL: pushed WAL file '000000080000000000000029' to the archive", "P02 DETAIL: pushed WAL file '00000008000000000000002A' to the archive", "P01 DETAIL: pushed WAL file '00000008000000000000002B' to the archive", "P00 INFO: archive-push:async command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 5" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/log/pgbackrest/demo-archive-get-async.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "found [0-F]{24} in the archive" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-------------------PROCESS START-------------------", "P00 INFO: archive-get:async command begin 2.24: [000000080000000000000024, 000000080000000000000025, 000000080000000000000026, 000000080000000000000027, 000000080000000000000028, 000000080000000000000029, 00000008000000000000002A, 00000008000000000000002B] --archive-async --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.5/data --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: get 8 WAL file(s) from archive: 000000080000000000000024...00000008000000000000002B", "P01 DETAIL: found 000000080000000000000024 in the archive", "P02 DETAIL: found 000000080000000000000025 in the archive", "P01 DETAIL: unable to find 000000080000000000000026 in the archive", "P02 DETAIL: unable to find 000000080000000000000027 in the archive", " [filtered 20 lines of output]", "P00 INFO: archive-get:async command begin 2.24: [000000080000000000000026, 000000080000000000000027, 000000080000000000000028, 000000080000000000000029, 00000008000000000000002A, 00000008000000000000002B, 00000008000000000000002C, 00000008000000000000002D] --archive-async --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.5/data --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: get 8 WAL file(s) from archive: 000000080000000000000026...00000008000000000000002D", "P01 DETAIL: found 000000080000000000000026 in the archive", "P02 DETAIL: found 000000080000000000000027 in the archive", "P01 DETAIL: found 000000080000000000000028 in the archive", "P02 DETAIL: found 000000080000000000000029 in the archive", "P01 DETAIL: found 00000008000000000000002A in the archive", "P02 DETAIL: found 00000008000000000000002B in the archive", "P01 DETAIL: unable to find 00000008000000000000002C in the archive", "P02 DETAIL: unable to find 00000008000000000000002D in the archive", " [filtered 13 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"alter user replicator password 'jw8s0F4'\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ALTER ROLE" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "demo" : { "pg2-host" : { "value" : "pg-standby" }, "pg2-path" : { "value" : "/var/lib/pgsql/9.5/data" } }, "global" : { "backup-standby" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/pgsql/9.5/data", "pg2-host=pg-standby", "pg2-path=/var/lib/pgsql/9.5/data", "", "[global]", "backup-standby=y", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --log-level-console=detail backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "backup file pg-primary|replay on the standby" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 2 lines of output]", "P00 INFO: execute exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 00000008000000000000002D, lsn = 0/2D000028", "P00 INFO: wait for replay on the standby to reach 0/2D000028", "P00 INFO: replay on the standby reached 0/2D000028", "P01 INFO: backup file pg-primary:/var/lib/pgsql/9.5/data/global/pg_control (8KB, 0%) checksum 29e0bf6a5e893e652573cd5bc3ef180ee72f5987", "P02 INFO: backup file pg-standby:/var/lib/pgsql/9.5/data/base/12378/2608 (432KB, 20%) checksum 72dae3e124342546f590f36a56f1233c198190c7", "P03 INFO: backup file pg-standby:/var/lib/pgsql/9.5/data/base/12378/2674 (360KB, 37%) checksum 7cd230de39562539e6e87b09e4bdeaa66534702f", "P04 INFO: backup file pg-standby:/var/lib/pgsql/9.5/data/base/12378/1249 (360KB, 53%) checksum 318644cbbe1b3d8ac9af7658843aed4b733fe397", "P01 INFO: backup file pg-primary:/var/lib/pgsql/9.5/data/pg_log/postgresql.log (7.7KB, 54%) checksum 79715a4135445e15ca87a29bb1f47f3a80ccbe67", "P01 INFO: backup file pg-primary:/var/lib/pgsql/9.5/data/pg_hba.conf (4.2KB, 54%) checksum 1c0bca2f7f44d354aaaefb2c21fd1290b7379690", "P02 INFO: backup file pg-standby:/var/lib/pgsql/9.5/data/base/12378/2673 (312KB, 68%) checksum 27282dbbccf37a93c7a466d805bb11cf4ca60dd7", "P03 INFO: backup file pg-standby:/var/lib/pgsql/9.5/data/base/12378/2658 (112KB, 74%) checksum 7716a0b4bcc3d6e4b28bd1e3a6b5ad45791762cc", "P04 INFO: backup file pg-standby:/var/lib/pgsql/9.5/data/base/12378/1259 (104KB, 78%) checksum aaadf29afc16da7f91f642605303a6503caf651c", "P02 INFO: backup file pg-standby:/var/lib/pgsql/9.5/data/base/12378/2659 (72KB, 82%) checksum 6876f068e02a729fdebd23559aaead569f5824e3", "P03 INFO: backup file pg-standby:/var/lib/pgsql/9.5/data/base/12378/1247 (72KB, 85%) checksum c9a46ac0b81e6b32ccb7e317ce968ed30d0b4ca2", "P01 INFO: backup file pg-primary:/var/lib/pgsql/9.5/data/backup_label (247B, 85%) checksum ffd7c14e443b18c1fe3c0dc0b4dee231651d3161", "P04 INFO: backup file pg-standby:/var/lib/pgsql/9.5/data/base/12378/2704 (40KB, 87%) checksum 9953ec811bf244ff8413ffe6ca68291e00452e81", "P02 INFO: backup file pg-standby:/var/lib/pgsql/9.5/data/base/12378/2663 (40KB, 89%) checksum 459a32b66ab3efa8b524bcf58e836e5a41c6c9b6", " [filtered 1122 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.5 stop" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres /usr/pgsql-9.6/bin/initdb \\", " -D /var/lib/pgsql/9.6/data -k -A peer" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sh -c 'cd /var/lib/pgsql && \\", " /usr/pgsql-9.6/bin/pg_upgrade \\", " --old-bindir=/usr/pgsql-9.5/bin \\", " --new-bindir=/usr/pgsql-9.6/bin \\", " --old-datadir=/var/lib/pgsql/9.5/data \\", " --new-datadir=/var/lib/pgsql/9.6/data \\", " --old-options=\" -c config_file=/var/lib/pgsql/9.5/data/postgresql.conf\" \\", " --new-options=\" -c config_file=/var/lib/pgsql/9.6/data/postgresql.conf\"'" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Upgrade Complete" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 69 lines of output]", "Creating script to delete old cluster ok", "", "Upgrade Complete", "----------------", "Optimizer statistics are not transferred by pg_upgrade so,", " [filtered 4 lines of output]" ] } }, { "key" : { "file" : "/var/lib/pgsql/9.6/data/postgresql.conf", "host" : "pg-primary", "option" : { "archive_command" : { "value" : "'pgbackrest --stanza=demo archive-push %p'" }, "archive_mode" : { "value" : "on" }, "listen_addresses" : { "value" : "'*'" }, "log_line_prefix" : { "value" : "''" }, "max_wal_senders" : { "value" : "3" }, "port" : { "value" : "5432" }, "wal_level" : { "value" : "hot_standby" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo archive-push %p'", "archive_mode = on", "listen_addresses = '*'", "log_line_prefix = ''", "max_wal_senders = 3", "port = 5432", "wal_level = hot_standby" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/pgsql/9.6/data" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.6/data", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "spool-path=/var/spool/pgbackrest", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/pgsql/9.6/data" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.6/data", "recovery-option=primary_conninfo=host=172.17.0.4 port=5432 user=replicator", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "spool-path=/var/spool/pgbackrest", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/pgsql/9.6/data" }, "pg2-path" : { "value" : "/var/lib/pgsql/9.6/data" } }, "global" : { "backup-standby" : { "value" : "n" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/pgsql/9.6/data", "pg2-host=pg-standby", "pg2-path=/var/lib/pgsql/9.6/data", "", "[global]", "backup-standby=n", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo cp /var/lib/pgsql/9.5/data/pg_hba.conf \\", " /var/lib/pgsql/9.6/data/pg_hba.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --no-online \\", " --log-level-console=info stanza-upgrade" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-upgrade command begin 2.24: --no-backup-standby --log-level-console=info --log-level-stderr=off --no-log-timestamp --no-online --pg1-host=pg-primary --pg2-host=pg-standby --pg1-path=/var/lib/pgsql/9.6/data --pg2-path=/var/lib/pgsql/9.6/data --repo1-path=/var/lib/pgbackrest --stanza=demo", "P00 INFO: stanza-upgrade command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.6 start" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "Starting postgresql-9.6 service: [ OK ]\r" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres service postgresql-9.6 status" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "postgresql-9.6 (pid 4828) is running..." ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo check" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm -rf /var/lib/pgsql/9.5/data" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm -rf /var/lib/pgsql/9.5/data" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -p -m 700 /usr/pgsql-9.6/bin" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo check" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: unable to check pg-2: [DbConnectError] raised from remote-0 protocol on 'pg-standby': unable to connect to 'dbname='postgres' port=5432': could not connect to server: No such file or directory", " \tIs the server running locally and accepting", " \tconnections on Unix domain socket \"/var/run/postgresql/.s.PGSQL.5432\"?" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=standby restore" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/var/lib/pgsql/9.6/data/postgresql.conf", "host" : "pg-standby", "option" : { "hot_standby" : { "value" : "on" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "hot_standby = on" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo service postgresql-9.6 start" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo check" ], "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "global" : { "backup-standby" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/pgsql/9.6/data", "pg2-host=pg-standby", "pg2-path=/var/lib/pgsql/9.6/data", "", "[global]", "backup-standby=y", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } } ] } }, "{\"os-type\":\"centos7\"}" : { "all" : { "user-guide" : [ { "key" : { "id" : "s3", "image" : "minio/minio:RELEASE.2019-10-12T01-39-57Z", "name" : "s3-server", "option" : "-v {[host-repo-path]}/doc/resource/fake-cert/s3-server.crt:/root/.minio/certs/public.crt:ro -v {[host-repo-path]}/doc/resource/fake-cert/s3-server.key:/root/.minio/certs/private.key:ro -e MINIO_REGION=us-east-1 -e MINIO_DOMAIN=s3.us-east-1.amazonaws.com -e MINIO_BROWSER=off -e MINIO_ACCESS_KEY=accessKey1 -e MINIO_SECRET_KEY=verySecretKey1", "os" : "centos7", "param" : "server /data --address :443", "update-hosts" : false }, "type" : "host", "value" : { "ip" : "172.17.0.2" } }, { "key" : { "id" : "build", "image" : "pgbackrest/doc:centos7", "name" : "build", "option" : "-v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run", "os" : "centos7", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.3" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /build/pgbackrest-release-2.24" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo cp -r /pgbackrest/libc /build/pgbackrest-release-2.24" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo cp -r /pgbackrest/src /build/pgbackrest-release-2.24" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown -R vagrant /build/pgbackrest-release-2.24" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo yum install make gcc postgresql-devel openssl-devel libxml2-devel" ], "cmd-extra" : "-y 2>&1", "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "cd /build/pgbackrest-release-2.24/src && ./configure && make" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "id" : "pg1", "image" : "pgbackrest/doc:centos7", "name" : "pg-primary", "option" : "-v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run", "os" : "centos7", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.4" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo yum install postgresql-libs" ], "cmd-extra" : "-y 2>&1", "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo scp build:/build/pgbackrest-release-2.24/src/pgbackrest /usr/bin" ], "cmd-extra" : "2>&1", "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 755 /usr/bin/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 770 /var/log/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/log/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest/conf.d" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo touch /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 640 /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "pgBackRest 2.24 - General help", "", "Usage:", " pgbackrest [options] [command]", "", "Commands:", " archive-get Get a WAL segment from the archive.", " archive-push Push a WAL segment to the archive.", " backup Backup a database cluster.", " check Check the configuration.", " expire Expire backups that exceed retention.", " help Get help.", " info Retrieve information about backups.", " restore Restore a database cluster.", " stanza-create Create the required stanza data.", " stanza-delete Delete a stanza.", " stanza-upgrade Upgrade a stanza.", " start Allow pgBackRest processes to run.", " stop Stop pgBackRest processes from running.", " version Get version.", "", "Use 'pgbackrest help [command]' for more information." ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres /usr/pgsql-9.6/bin/initdb \\", " -D /var/lib/pgsql/9.6/data -k -A peer" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/var/lib/pgsql/9.6/data/postgresql.conf", "host" : "pg-primary", "option" : { "listen_addresses" : { "value" : "'*'" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "listen_addresses = '*'" ] } }, { "key" : { "file" : "/var/lib/pgsql/9.6/data/postgresql.conf", "host" : "pg-primary", "option" : { "log_line_prefix" : { "value" : "''" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "listen_addresses = '*'", "log_line_prefix = ''" ] } }, { "key" : { "file" : "/var/lib/pgsql/9.6/data/postgresql.conf", "host" : "pg-primary", "option" : { "log_filename" : { "value" : "'postgresql.log'" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "listen_addresses = '*'", "log_filename = 'postgresql.log'", "log_line_prefix = ''" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/pgsql/9.6/data" } }, "global" : { "log-level-stderr" : { "value" : "off" }, "log-timestamp" : { "value" : "n" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.6/data" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres bash -c ' \\", " export PGBACKREST_LOG_PATH=/path/set/by/env && \\", " pgbackrest --log-level-console=error help backup log-path'" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "current\\: \\/path\\/set\\/by\\/env" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "pgBackRest 2.24 - 'backup' command - 'log-path' option help", "", "Path where log files are stored.", "", "The log path provides a location for pgBackRest to store log files. Note that", "if log-level-file=off then no log path is required.", "", "current: /path/set/by/env", "default: /var/log/pgbackrest" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /var/lib/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 750 /var/lib/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/lib/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-path" : { "value" : "/var/lib/pgbackrest" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.6/data", "", "[global]", "repo1-path=/var/lib/pgbackrest" ] } }, { "key" : { "file" : "/var/lib/pgsql/9.6/data/postgresql.conf", "host" : "pg-primary", "option" : { "archive_command" : { "value" : "'pgbackrest --stanza=demo archive-push %p'" }, "archive_mode" : { "value" : "on" }, "max_wal_senders" : { "value" : "3" }, "wal_level" : { "value" : "replica" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo archive-push %p'", "archive_mode = on", "listen_addresses = '*'", "log_filename = 'postgresql.log'", "log_line_prefix = ''", "max_wal_senders = 3", "wal_level = replica" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl restart postgresql-9.6.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global:archive-push" : { "compress-level" : { "value" : "3" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.6/data", "", "[global]", "repo1-path=/var/lib/pgbackrest", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-full" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.6/data", "", "[global]", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-cipher-pass" : { "value" : "zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO" }, "repo1-cipher-type" : { "value" : "aes-256-cbc" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.6/data", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-create command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.6/data --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo", "P00 INFO: stanza-create command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ " successfully archived to " ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: check command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.6/data --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo", "P00 INFO: WAL segment 000000010000000000000001 successfully archived to '/var/lib/pgbackrest/archive/demo/9.6-1/0000000100000000/000000010000000000000001-678199a8e30e3fa81c013c5737328a1e10fdf26e.gz'", "P00 INFO: check command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "no prior backup exists|full backup size" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.6/data --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo", "P00 WARN: no prior backup exists, incr backup has been changed to full", "P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the next regular checkpoint completes", "P00 INFO: backup start archive = 000000010000000000000002, lsn = 0/2000028", " [filtered 864 lines of output]", "P01 INFO: backup file /var/lib/pgsql/9.6/data/base/1/12312 (0B, 100%)", "P01 INFO: backup file /var/lib/pgsql/9.6/data/base/1/12307 (0B, 100%)", "P00 INFO: full backup size = 20.9MB", "P00 INFO: execute non-exclusive pg_stop_backup() and wait for all WAL segments to archive", "P00 INFO: backup stop archive = 000000010000000000000002, lsn = 0/2000130", " [filtered 5 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-153556F" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "diff backup size" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 3 lines of output]", "P00 INFO: backup start archive = 000000010000000000000003, lsn = 0/3000028", "P01 INFO: backup file /var/lib/pgsql/9.6/data/global/pg_control (8KB, 100%) checksum bbdf90b3c6c64dbeff949e642a47b7f2fc18848c", "P00 INFO: diff backup size = 8KB", "P00 INFO: execute non-exclusive pg_stop_backup() and wait for all WAL segments to archive", "P00 INFO: backup stop archive = 000000010000000000000003, lsn = 0/30000F8", " [filtered 5 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest info" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "(full|incr|diff) backup" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "stanza: demo", " status: ok", " cipher: aes-256-cbc", "", " db (current)", " wal archive min/max (9.6-1): 000000010000000000000002/000000010000000000000003", "", " full backup: 20200225-153556F", " timestamp start/stop: 2020-02-25 15:35:56 / 2020-02-25 15:36:08", " wal start/stop: 000000010000000000000002 / 000000010000000000000002", " database size: 20.9MB, backup size: 20.9MB", " repository size: 2.5MB, repository backup size: 2.5MB", "", " diff backup: 20200225-153556F_20200225-153610D", " timestamp start/stop: 2020-02-25 15:36:10 / 2020-02-25 15:36:12", " wal start/stop: 000000010000000000000003 / 000000010000000000000003", " database size: 20.9MB, backup size: 8.2KB", " repository size: 2.5MB, repository backup size: 400B", " backup reference list: 20200225-153556F" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-9.6.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres rm /var/lib/pgsql/9.6/data/global/pg_control" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-9.6.service" ], "err-expect" : "1", "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl status postgresql-9.6.service" ], "err-expect" : "3", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Failed to start PostgreSQL" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 11 lines of output]", "Feb 25 15:36:15 pg-primary postmaster[829]: but could not open file \"/var/lib/pgsql/9.6/data/global/pg_control\": No such file or directory", "Feb 25 15:36:15 pg-primary systemd[1]: postgresql-9.6.service: main process exited, code=exited, status=2/INVALIDARGUMENT", "Feb 25 15:36:15 pg-primary systemd[1]: Failed to start PostgreSQL 9.6 database server.", "Feb 25 15:36:15 pg-primary systemd[1]: Unit postgresql-9.6.service entered failed state.", "Feb 25 15:36:15 pg-primary systemd[1]: postgresql-9.6.service failed." ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres find /var/lib/pgsql/9.6/data -mindepth 1 -delete" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-9.6.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "backup begins after the next regular checkpoint completes" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.6/data --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo --type=incr", "P00 INFO: last backup label = 20200225-153556F_20200225-153610D, version = 2.24", "P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the next regular checkpoint completes", "P00 INFO: backup start archive = 000000020000000000000005, lsn = 0/5000028", "P00 WARN: a timeline switch has occurred since the 20200225-153556F_20200225-153610D backup, enabling delta checksum", " [filtered 10 lines of output]" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "start-fast" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.6/data", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "backup begins after the requested immediate checkpoint completes" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.6/data --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo --start-fast --type=incr", "P00 INFO: last backup label = 20200225-153556F_20200225-153632I, version = 2.24", "P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 000000020000000000000006, lsn = 0/6000028", "P01 INFO: backup file /var/lib/pgsql/9.6/data/global/pg_control (8KB, 100%) checksum f71be2d014c28811235dcd9706bc60bda08a685d", " [filtered 8 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -p /var/lib/pgsql/pgbackrest/doc/example" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cp -r /pgbackrest/doc/example/* \\", " /var/lib/pgsql/pgbackrest/doc/example" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat \\", " /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-info.sql" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-- An example of monitoring pgBackRest from within PostgreSQL", "--", "-- Use copy to export data from the pgBackRest info command into the jsonb", "-- type so it can be queried directly by PostgreSQL.", "", "-- Create monitor schema", "create schema monitor;", "", "-- Get pgBackRest info in JSON format", "create function monitor.pgbackrest_info()", " returns jsonb AS $$", "declare", " data jsonb;", "begin", " -- Create a temp table to hold the JSON data", " create temp table temp_pgbackrest_data (data jsonb);", "", " -- Copy data into the table directly from the pgBackRest info command", " copy temp_pgbackrest_data (data)", " from program", " 'pgbackrest --output=json info' (format text);", "", " select temp_pgbackrest_data.data", " into data", " from temp_pgbackrest_data;", "", " drop table temp_pgbackrest_data;", "", " return data;", "end $$ language plpgsql;" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -f \\", " /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-info.sql" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat \\", " /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-query.sql" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-- Get last successful backup for each stanza", "--", "-- Requires the monitor.pgbackrest_info function.", "with stanza as", "(", " select data->'name' as name,", " data->'backup'->(", " jsonb_array_length(data->'backup') - 1) as last_backup,", " data->'archive'->(", " jsonb_array_length(data->'archive') - 1) as current_archive", " from jsonb_array_elements(monitor.pgbackrest_info()) as data", ")", "select name,", " to_timestamp(", " (last_backup->'timestamp'->>'stop')::numeric) as last_successful_backup,", " current_archive->>'max' as last_archived_wal", " from stanza;" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -f \\", " /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-query.sql" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " name | last_successful_backup | last_archived_wal ", "--------+------------------------+--------------------------", " \"demo\" | 2020-02-25 15:36:41+00 | 000000020000000000000006", "(1 row)" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-full" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.6/data", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=full \\", " --log-level-console=detail backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "archive retention on backup 20200225-153556F|remove archive" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 875 lines of output]", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.24: --log-level-console=detail --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo", "P00 DETAIL: archive retention on backup 20200225-153556F, archiveId = 9.6-1, start = 000000010000000000000002", "P00 DETAIL: no archive to remove, archiveId = 9.6-1", "P00 INFO: expire command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-153647F" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=full \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "expire full backup set\\: 20200225-153556F|archive retention on backup 20200225-153647F|remove archive" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 874 lines of output]", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo", "P00 INFO: expire full backup set: 20200225-153556F, 20200225-153556F_20200225-153610D, 20200225-153556F_20200225-153632I, 20200225-153556F_20200225-153639I", "P00 INFO: remove expired backup 20200225-153556F_20200225-153639I", "P00 INFO: remove expired backup 20200225-153556F_20200225-153632I", " [filtered 2 lines of output]" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-diff" : { "value" : "1" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.6/data", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-diff=1", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-153703F_20200225-153722D" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "expire diff backup set: 20200225-153703F_20200225-153722D" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 11 lines of output]", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-diff=1 --repo1-retention-full=2 --stanza=demo", "P00 INFO: expire diff backup set: 20200225-153703F_20200225-153722D, 20200225-153703F_20200225-153727I", "P00 INFO: remove expired backup 20200225-153703F_20200225-153727I", "P00 INFO: remove expired backup 20200225-153703F_20200225-153722D" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-diff" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.6/data", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-diff=2", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-153703F_20200225-153731D" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select pg_create_restore_point('generate WAL'); select pg_switch_xlog(); \\", " select pg_create_restore_point('generate WAL'); select pg_switch_xlog();\"" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "new backup label" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 9 lines of output]", "P00 INFO: backup stop archive = 00000002000000000000000F, lsn = 0/F0000F8", "P00 INFO: check archive for segment(s) 00000002000000000000000F:00000002000000000000000F", "P00 INFO: new backup label = 20200225-153703F_20200225-153737D", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-diff=2 --repo1-retention-full=2 --stanza=demo" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-153703F_20200225-153737D" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=detail \\", " --repo1-retention-archive-type=diff --repo1-retention-archive=1 expire" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "archive retention on backup 20200225-153703F_20200225-153731D|remove archive" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: expire command begin 2.24: --log-level-console=detail --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-archive=1 --repo1-retention-archive-type=diff --repo1-retention-diff=2 --repo1-retention-full=2 --stanza=demo", "P00 DETAIL: archive retention on backup 20200225-153647F, archiveId = 9.6-1, start = 000000020000000000000008, stop = 000000020000000000000008", "P00 DETAIL: archive retention on backup 20200225-153703F, archiveId = 9.6-1, start = 000000020000000000000009, stop = 000000020000000000000009", "P00 DETAIL: archive retention on backup 20200225-153703F_20200225-153731D, archiveId = 9.6-1, start = 00000002000000000000000C, stop = 00000002000000000000000C", "P00 DETAIL: archive retention on backup 20200225-153703F_20200225-153737D, archiveId = 9.6-1, start = 00000002000000000000000F", "P00 DETAIL: remove archive: archiveId = 9.6-1, start = 00000002000000000000000A, stop = 00000002000000000000000B", "P00 DETAIL: remove archive: archiveId = 9.6-1, start = 00000002000000000000000D, stop = 00000002000000000000000E", "P00 INFO: expire command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-9.6.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --log-level-console=detail restore" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "demo\\/PG_VERSION - exists and matches backup|remove invalid files|rename global\\/pg_control" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 2 lines of output]", "P00 DETAIL: check '/var/lib/pgsql/9.6/data' exists", "P00 DETAIL: remove 'global/pg_control' so cluster will not start if restore does not complete", "P00 INFO: remove invalid files/links/paths from '/var/lib/pgsql/9.6/data'", "P00 DETAIL: remove invalid file '/var/lib/pgsql/9.6/data/backup_label.old'", "P00 DETAIL: remove invalid file '/var/lib/pgsql/9.6/data/base/12470/pg_internal.init'", " [filtered 914 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-9.6.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create database test1;\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "CREATE DATABASE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create database test2;\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "CREATE DATABASE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create table test1_table (id int); \\", " insert into test1_table (id) values (1);\" test1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "INSERT 0 1" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create table test2_table (id int); \\", " insert into test2_table (id) values (2);\" test2" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "INSERT 0 1" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -Atc \"select oid from pg_database where datname = 'test1'\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "24576" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres du -sh /var/lib/pgsql/9.6/data/base/24576" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "7.0M\t/var/lib/pgsql/9.6/data/base/24576" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-153703F_20200225-153751I" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo \\", " --set=20200225-153703F_20200225-153751I info" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "database list" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 11 lines of output]", " repository size: 4MB, repository backup size: 1.6MB", " backup reference list: 20200225-153703F, 20200225-153703F_20200225-153737D", " database list: postgres (12470), test1 (24576), test2 (24577)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-9.6.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --db-include=test2 restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-9.6.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from test2_table;\" test2" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " id ", "----", " 2", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from test1_table;\" test1" ], "err-expect" : "2", "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "relation mapping file.*contains invalid data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "psql: FATAL: relation mapping file \"base/24576/pg_filenode.map\" contains invalid data" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres du -sh /var/lib/pgsql/9.6/data/base/24576" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "152K\t/var/lib/pgsql/9.6/data/base/24576" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"drop database test1;\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "DROP DATABASE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select oid, datname from pg_database order by oid;\"" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "test2" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " oid | datname ", "-------+-----------", " 1 | template1", " 12469 | template0", " 12470 | postgres", " 24577 | test2", "(4 rows)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"begin; \\", " create table important_table (message text); \\", " insert into important_table values ('Important Data'); \\", " commit; \\", " select * from important_table;\"" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message ", "----------------", " Important Data", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -Atc \"select current_timestamp\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "2020-02-25 15:38:19.667152+00" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"begin; \\", " drop table important_table; \\", " commit; \\", " select * from important_table;\"" ], "err-expect" : "1", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "does not exist" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ERROR: relation \"important_table\" does not exist", "LINE 1: ...le important_table; commit; select * from important_...", " ^" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-9.6.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --type=time \"--target=2020-02-25 15:38:19.667152+00\" \\", " --target-action=promote restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/lib/pgsql/9.6/data/pg_log/postgresql.log" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/9.6/data/recovery.conf" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "recovery_target_time" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "# Recovery settings generated by pgBackRest restore on 2020-02-25 15:38:22", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "recovery_target_time = '2020-02-25 15:38:19.667152+00'", "recovery_target_action = 'promote'" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-9.6.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from important_table\"" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message ", "----------------", " Important Data", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/9.6/data/pg_log/postgresql.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "recovery stopping before|last completed transaction|starting point-in-time recovery" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "LOG: database system was interrupted; last known up at 2020-02-25 15:38:12 UTC", "LOG: starting point-in-time recovery to 2020-02-25 15:38:19.667152+00", "LOG: restored log file \"00000004.history\" from archive", "LOG: restored log file \"000000040000000000000014\" from archive", "LOG: redo starts at 0/14000028", "LOG: consistent recovery state reached at 0/140000F8", "LOG: restored log file \"000000040000000000000015\" from archive", "LOG: recovery stopping before commit of transaction 639, time 2020-02-25 15:38:20.508039+00", "LOG: redo done at 0/15020E68", "LOG: last completed transaction was at log time 2020-02-25 15:38:19.356847+00", "LOG: selected new timeline ID: 5", "LOG: archive recovery complete", " [filtered 3 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"begin; \\", " drop table important_table; \\", " commit; \\", " select * from important_table;\"" ], "err-expect" : "1", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "does not exist" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ERROR: relation \"important_table\" does not exist", "LINE 1: ...le important_table; commit; select * from important_...", " ^" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20200225-153703F_20200225-153830I" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest info" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "20200225-153703F_20200225-153830I" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "stanza: demo", " status: ok", " cipher: aes-256-cbc", "", " db (current)", " wal archive min/max (9.6-1): 000000020000000000000008/000000050000000000000016", "", " full backup: 20200225-153647F", " timestamp start/stop: 2020-02-25 15:36:47 / 2020-02-25 15:37:01", " wal start/stop: 000000020000000000000008 / 000000020000000000000008", " database size: 20.9MB, backup size: 20.9MB", " repository size: 2.5MB, repository backup size: 2.5MB", "", " full backup: 20200225-153703F", " timestamp start/stop: 2020-02-25 15:37:03 / 2020-02-25 15:37:18", " wal start/stop: 000000020000000000000009 / 000000020000000000000009", " database size: 20.9MB, backup size: 20.9MB", " repository size: 2.5MB, repository backup size: 2.5MB", "", " diff backup: 20200225-153703F_20200225-153737D", " timestamp start/stop: 2020-02-25 15:37:37 / 2020-02-25 15:37:40", " wal start/stop: 00000002000000000000000F / 00000002000000000000000F", " database size: 20.9MB, backup size: 97.6KB", " repository size: 2.5MB, repository backup size: 11.8KB", " backup reference list: 20200225-153703F", "", " incr backup: 20200225-153703F_20200225-153751I", " timestamp start/stop: 2020-02-25 15:37:51 / 2020-02-25 15:37:59", " wal start/stop: 000000030000000000000011 / 000000030000000000000011", " database size: 34.5MB, backup size: 13.7MB", " repository size: 4MB, repository backup size: 1.6MB", " backup reference list: 20200225-153703F, 20200225-153703F_20200225-153737D", "", " diff backup: 20200225-153703F_20200225-153812D", " timestamp start/stop: 2020-02-25 15:38:12 / 2020-02-25 15:38:18", " wal start/stop: 000000040000000000000014 / 000000040000000000000014", " database size: 27.8MB, backup size: 7.0MB", " repository size: 3.3MB, repository backup size: 846.9KB", " backup reference list: 20200225-153703F", "", " incr backup: 20200225-153703F_20200225-153830I", " timestamp start/stop: 2020-02-25 15:38:30 / 2020-02-25 15:38:33", " wal start/stop: 000000050000000000000016 / 000000050000000000000016", " database size: 27.7MB, backup size: 2MB", " repository size: 3.3MB, repository backup size: 211.4KB", " backup reference list: 20200225-153703F, 20200225-153703F_20200225-153812D" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-9.6.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --set=20200225-153703F_20200225-153830I \\", " --type=time \"--target=2020-02-25 15:38:19.667152+00\" --target-action=promote restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/lib/pgsql/9.6/data/pg_log/postgresql.log" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-9.6.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from important_table\"" ], "err-expect" : "1", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "does not exist" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ERROR: relation \"important_table\" does not exist", "LINE 1: select * from important_table", " ^" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/9.6/data/pg_log/postgresql.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "starting point-in-time recovery|consistent recovery state reached" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "LOG: database system was interrupted; last known up at 2020-02-25 15:38:30 UTC", "LOG: starting point-in-time recovery to 2020-02-25 15:38:19.667152+00", "LOG: restored log file \"00000005.history\" from archive", "LOG: restored log file \"000000050000000000000016\" from archive", "LOG: redo starts at 0/16000028", "LOG: consistent recovery state reached at 0/160000F8", "LOG: redo done at 0/160000F8", "LOG: restored log file \"000000050000000000000016\" from archive", " [filtered 7 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-9.6.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --type=time \"--target=2020-02-25 15:38:19.667152+00\" \\", " --target-action=promote restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/lib/pgsql/9.6/data/pg_log/postgresql.log" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-9.6.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from important_table\"" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message ", "----------------", " Important Data", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/9.6/data/pg_log/postgresql.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "recovery stopping before|last completed transaction|starting point-in-time recovery" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "LOG: database system was interrupted; last known up at 2020-02-25 15:38:12 UTC", "LOG: starting point-in-time recovery to 2020-02-25 15:38:19.667152+00", "LOG: restored log file \"00000004.history\" from archive", "LOG: restored log file \"000000040000000000000014\" from archive", "LOG: redo starts at 0/14000028", "LOG: consistent recovery state reached at 0/140000F8", "LOG: restored log file \"000000040000000000000015\" from archive", "LOG: recovery stopping before commit of transaction 639, time 2020-02-25 15:38:20.508039+00", "LOG: redo done at 0/15020E68", "LOG: last completed transaction was at log time 2020-02-25 15:38:19.356847+00", "LOG: restored log file \"00000005.history\" from archive", "LOG: restored log file \"00000006.history\" from archive", " [filtered 5 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "echo \"172.17.0.2 demo-bucket.s3.us-east-1.amazonaws.com s3.us-east-1.amazonaws.com\" | tee -a /etc/hosts" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "mc config host add demo https://172.17.0.2 accessKey1 verySecretKey1 --insecure" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "mc mb demo/demo-bucket --insecure" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "process-max" : { "value" : "4" }, "repo1-path" : { "value" : "/demo-repo" }, "repo1-s3-bucket" : { "value" : "demo-bucket" }, "repo1-s3-endpoint" : { "value" : "s3.us-east-1.amazonaws.com" }, "repo1-s3-key" : { "value" : "accessKey1" }, "repo1-s3-key-secret" : { "value" : "verySecretKey1" }, "repo1-s3-region" : { "value" : "us-east-1" }, "repo1-type" : { "value" : "s3" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.6/data", "", "[global]", "process-max=4", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/demo-repo", "repo1-retention-diff=2", "repo1-retention-full=2", "repo1-s3-bucket=demo-bucket", "repo1-s3-endpoint=s3.us-east-1.amazonaws.com", "repo1-s3-key=accessKey1", "repo1-s3-key-secret=verySecretKey1", "repo1-s3-region=us-east-1", "repo1-type=s3", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-create command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.6/data --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/demo-repo --repo1-s3-bucket=demo-bucket --repo1-s3-endpoint=s3.us-east-1.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --repo1-type=s3 --stanza=demo", "P00 INFO: http statistics: objects 2, sessions 2, requests 12, retries 0, closes 0", "P00 INFO: stanza-create command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "no prior backup exists|full backup size" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.6/data --process-max=4 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo1-s3-bucket=demo-bucket --repo1-s3-endpoint=s3.us-east-1.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --repo1-type=s3 --stanza=demo --start-fast", "P00 WARN: no prior backup exists, incr backup has been changed to full", "P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 000000070000000000000016, lsn = 0/16000028", " [filtered 1136 lines of output]", "P02 INFO: backup file /var/lib/pgsql/9.6/data/base/1/12312 (0B, 100%)", "P03 INFO: backup file /var/lib/pgsql/9.6/data/base/1/12307 (0B, 100%)", "P00 INFO: full backup size = 27.8MB", "P00 INFO: execute non-exclusive pg_stop_backup() and wait for all WAL segments to archive", "P00 INFO: backup stop archive = 000000070000000000000016, lsn = 0/160000F8", " [filtered 7 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-9.6.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stop" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stop command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/demo-repo --repo1-s3-bucket=demo-bucket --repo1-s3-endpoint=s3.us-east-1.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --repo1-type=s3 --stanza=demo", "P00 INFO: stop command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-delete" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-delete command begin 2.24: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.6/data --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/demo-repo --repo1-s3-bucket=demo-bucket --repo1-s3-endpoint=s3.us-east-1.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --repo1-type=s3 --stanza=demo", "P00 INFO: http statistics: objects 2, sessions 2, requests 15, retries 0, closes 0", "P00 INFO: stanza-delete command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-9.6.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "id" : "repo1", "image" : "pgbackrest/doc:centos7", "name" : "repository", "option" : "-v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run", "os" : "centos7", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.5" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo groupadd pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo adduser -gpgbackrest -n pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo yum install postgresql-libs" ], "cmd-extra" : "-y 2>&1", "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo scp build:/build/pgbackrest-release-2.24/src/pgbackrest /usr/bin" ], "cmd-extra" : "2>&1", "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 755 /usr/bin/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 770 /var/log/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown pgbackrest:pgbackrest /var/log/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest/conf.d" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo touch /etc/pgbackrest/pgbackrest.conf" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 640 /etc/pgbackrest/pgbackrest.conf" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown pgbackrest:pgbackrest /etc/pgbackrest/pgbackrest.conf" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /var/lib/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 750 /var/lib/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown pgbackrest:pgbackrest /var/lib/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest mkdir -m 750 /home/pgbackrest/.ssh" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest ssh-keygen -f /home/pgbackrest/.ssh/id_rsa \\", " -t rsa -b 4096 -N \"\"" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -m 750 -p /var/lib/pgsql/.ssh" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh-keygen -f /var/lib/pgsql/.ssh/id_rsa \\", " -t rsa -b 4096 -N \"\"" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\", " echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\", " sudo ssh root@pg-primary cat /var/lib/pgsql/.ssh/id_rsa.pub) | \\", " sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\", " echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\", " sudo ssh root@repository cat /home/pgbackrest/.ssh/id_rsa.pub) | \\", " sudo -u postgres tee -a /var/lib/pgsql/.ssh/authorized_keys" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest ssh postgres@pg-primary" ], "cmd-extra" : "-o StrictHostKeyChecking=no", "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh pgbackrest@repository" ], "cmd-extra" : "-o StrictHostKeyChecking=no", "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "global" : { "repo1-path" : { "value" : "/var/lib/pgbackrest" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[global]", "repo1-path=/var/lib/pgbackrest" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "demo" : { "pg1-host" : { "value" : "pg-primary" }, "pg1-path" : { "value" : "/var/lib/pgsql/9.6/data" } }, "global" : { "log-level-stderr" : { "value" : "off" }, "log-timestamp" : { "value" : "n" }, "repo1-retention-full" : { "value" : "2" }, "start-fast" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/pgsql/9.6/data", "", "[global]", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/pgsql/9.6/data" } }, "global" : { "log-level-file" : { "value" : "detail" }, "log-level-stderr" : { "value" : "off" }, "log-timestamp" : { "value" : "n" }, "repo1-host" : { "value" : "repository" } } }, "reset" : true }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.6/data", "", "[global]", "log-level-file=detail", "repo1-host=repository" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo stanza-create" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo check" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo check" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo backup" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: no prior backup exists, incr backup has been changed to full" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-9.6.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-9.6.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo backup" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "global" : { "process-max" : { "value" : "3" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/pgsql/9.6/data", "", "[global]", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest info" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "timestamp start/stop" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "stanza: demo", " status: ok", " cipher: none", "", " db (current)", " wal archive min/max (9.6-1): 00000008000000000000001E/000000080000000000000020", "", " full backup: 20200225-154011F", " timestamp start/stop: 2020-02-25 15:40:11 / 2020-02-25 15:40:28", " wal start/stop: 00000008000000000000001E / 00000008000000000000001E", " database size: 27.8MB, backup size: 27.8MB", " repository size: 3.3MB, repository backup size: 3.3MB", "", " full backup: 20200225-154033F", " timestamp start/stop: 2020-02-25 15:40:33 / 2020-02-25 15:40:41", " wal start/stop: 000000080000000000000020 / 000000080000000000000020", " database size: 27.8MB, backup size: 27.8MB", " repository size: 3.3MB, repository backup size: 3.3MB" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo backup" ], "err-expect" : "56", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "\\: stop file exists for all stanzas" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: unable to check pg-1: [StopError] raised from remote-0 protocol on 'pg-primary': stop file exists for all stanzas", "P00 ERROR: [056]: unable to find primary cluster - cannot proceed" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest stop" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: stop file already exists for all stanzas" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo backup" ], "err-expect" : "56", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "\\: stop file exists for stanza demo" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: unable to check pg-1: [StopError] raised from remote-0 protocol on 'pg-primary': stop file exists for stanza demo", "P00 ERROR: [056]: unable to find primary cluster - cannot proceed" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "id" : "pg2", "image" : "pgbackrest/doc:centos7", "name" : "pg-standby", "option" : "-v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run", "os" : "centos7", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.6" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo yum install postgresql-libs" ], "cmd-extra" : "-y 2>&1", "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo scp build:/build/pgbackrest-release-2.24/src/pgbackrest /usr/bin" ], "cmd-extra" : "2>&1", "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 755 /usr/bin/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 770 /var/log/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/log/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest/conf.d" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo touch /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 640 /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -m 750 -p /var/lib/pgsql/.ssh" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh-keygen -f /var/lib/pgsql/.ssh/id_rsa \\", " -t rsa -b 4096 -N \"\"" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\", " echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\", " sudo ssh root@pg-standby cat /var/lib/pgsql/.ssh/id_rsa.pub) | \\", " sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\", " echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\", " sudo ssh root@repository cat /home/pgbackrest/.ssh/id_rsa.pub) | \\", " sudo -u postgres tee -a /var/lib/pgsql/.ssh/authorized_keys" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest ssh postgres@pg-standby" ], "cmd-extra" : "-o StrictHostKeyChecking=no", "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh pgbackrest@repository" ], "cmd-extra" : "-o StrictHostKeyChecking=no", "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/pgsql/9.6/data" } }, "global" : { "log-level-file" : { "value" : "detail" }, "log-level-stderr" : { "value" : "off" }, "log-timestamp" : { "value" : "n" }, "repo1-host" : { "value" : "repository" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.6/data", "", "[global]", "log-level-file=detail", "repo1-host=repository" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -p -m 700 /var/lib/pgsql/9.6/data" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=standby restore" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/9.6/data/recovery.conf" ], "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "# Recovery settings generated by pgBackRest restore on 2020-02-25 15:41:21", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "standby_mode = 'on'" ] } }, { "key" : { "file" : "/var/lib/pgsql/9.6/data/postgresql.conf", "host" : "pg-standby", "option" : { "archive_command" : { "value" : "'pgbackrest --stanza=demo archive-push %p'" }, "archive_mode" : { "value" : "on" }, "hot_standby" : { "value" : "on" }, "log_filename" : { "value" : "'postgresql.log'" }, "log_line_prefix" : { "value" : "''" }, "max_wal_senders" : { "value" : "3" }, "wal_level" : { "value" : "replica" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo archive-push %p'", "archive_mode = on", "hot_standby = on", "log_filename = 'postgresql.log'", "log_line_prefix = ''", "max_wal_senders = 3", "wal_level = replica" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/lib/pgsql/9.6/data/pg_log/postgresql.log" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-9.6.service" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/9.6/data/pg_log/postgresql.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "entering standby mode|database system is ready to accept read only connections" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "LOG: database system was interrupted; last known up at 2020-02-25 15:40:33 UTC", "LOG: entering standby mode", "LOG: restored log file \"00000008.history\" from archive", "LOG: restored log file \"000000080000000000000020\" from archive", "LOG: redo starts at 0/20000028", "LOG: consistent recovery state reached at 0/200000F8", "LOG: database system is ready to accept read only connections" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " begin; \\", " create table replicated_table (message text); \\", " insert into replicated_table values ('Important Data'); \\", " commit; \\", " select * from replicated_table\";" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message ", "----------------", " Important Data", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from replicated_table;\"" ], "err-expect" : "1", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "does not exist" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ERROR: relation \"replicated_table\" does not exist", "LINE 1: select * from replicated_table;", " ^" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select *, current_timestamp from pg_switch_xlog()\";" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " pg_switch_xlog | now ", "----------------+-------------------------------", " 0/21022420 | 2020-02-25 15:41:32.487458+00", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select *, current_timestamp from replicated_table\"" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message | now ", "----------------+-------------------------------", " Important Data | 2020-02-25 15:41:37.390425+00", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "because this is a standby" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: check command begin 2.24: --log-level-console=info --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.6/data --repo1-host=repository --stanza=demo", "P00 INFO: switch wal not performed because this is a standby", "P00 INFO: check command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " create user replicator password 'jw8s0F4' replication\";" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "CREATE ROLE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sh -c 'echo \\", " \"host replication replicator 172.17.0.6/32 md5\" \\", " >> /var/lib/pgsql/9.6/data/pg_hba.conf'" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl reload postgresql-9.6.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "demo" : { "recovery-option" : { "value" : "primary_conninfo=host=172.17.0.4 port=5432 user=replicator" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.6/data", "recovery-option=primary_conninfo=host=172.17.0.4 port=5432 user=replicator", "", "[global]", "log-level-file=detail", "repo1-host=repository" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sh -c 'echo \\", " \"172.17.0.4:*:replication:replicator:jw8s0F4\" \\", " >> /var/lib/pgsql/.pgpass'" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres chmod 600 /var/lib/pgsql/.pgpass" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-9.6.service" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/9.6/data/recovery.conf" ], "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "# Recovery settings generated by pgBackRest restore on 2020-02-25 15:41:46", "primary_conninfo = 'host=172.17.0.4 port=5432 user=replicator'", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "standby_mode = 'on'" ] } }, { "key" : { "file" : "/var/lib/pgsql/9.6/data/postgresql.conf", "host" : "pg-standby", "option" : { "hot_standby" : { "value" : "on" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo archive-push %p'", "archive_mode = on", "hot_standby = on", "log_filename = 'postgresql.log'", "log_line_prefix = ''", "max_wal_senders = 3", "wal_level = replica" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/lib/pgsql/9.6/data/pg_log/postgresql.log" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-9.6.service" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/9.6/data/pg_log/postgresql.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "started streaming WAL from primary" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 6 lines of output]", "LOG: database system is ready to accept read only connections", "LOG: restored log file \"000000080000000000000021\" from archive", "LOG: started streaming WAL from primary at 0/22000000 on timeline 8" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " begin; \\", " create table stream_table (message text); \\", " insert into stream_table values ('Important Data'); \\", " commit; \\", " select *, current_timestamp from stream_table\";" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message | now ", "----------------+-------------------------------", " Important Data | 2020-02-25 15:41:55.734509+00", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select *, current_timestamp from stream_table\"" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message | now ", "----------------+-------------------------------", " Important Data | 2020-02-25 15:41:56.057408+00", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 750 /var/spool/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/spool/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 750 /var/spool/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/spool/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "archive-async" : { "value" : "y" }, "spool-path" : { "value" : "/var/spool/pgbackrest" } }, "global:archive-get" : { "process-max" : { "value" : "2" } }, "global:archive-push" : { "process-max" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.6/data", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "spool-path=/var/spool/pgbackrest", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "global" : { "archive-async" : { "value" : "y" }, "spool-path" : { "value" : "/var/spool/pgbackrest" } }, "global:archive-get" : { "process-max" : { "value" : "2" } }, "global:archive-push" : { "process-max" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/9.6/data", "recovery-option=primary_conninfo=host=172.17.0.4 port=5432 user=replicator", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "spool-path=/var/spool/pgbackrest", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"alter user replicator password 'bogus'\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ALTER ROLE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl restart postgresql-9.6.service" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres rm -f /var/log/pgbackrest/demo-archive-push-async.log" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select pg_create_restore_point('test async push'); select pg_switch_xlog(); \\", " select pg_create_restore_point('test async push'); select pg_switch_xlog(); \\", " select pg_create_restore_point('test async push'); select pg_switch_xlog(); \\", " select pg_create_restore_point('test async push'); select pg_switch_xlog(); \\", " select pg_create_restore_point('test async push'); select pg_switch_xlog();\"" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "WAL segment" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: check command begin 2.24: --log-level-console=info --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.6/data --repo1-host=repository --stanza=demo", "P00 INFO: WAL segment 000000080000000000000027 successfully archived to '/var/lib/pgbackrest/archive/demo/9.6-1/0000000800000000/000000080000000000000027-a4ce3409ea94461233ca162f90c90373a13c779e.gz'", "P00 INFO: check command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/log/pgbackrest/demo-archive-push-async.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ " WAL file\\(s\\) to archive|pushed WAL file \\'0000000" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-------------------PROCESS START-------------------", "P00 INFO: archive-push:async command begin 2.24: [/var/lib/pgsql/9.6/data/pg_xlog] --archive-async --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.6/data --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: push 1 WAL file(s) to archive: 000000080000000000000022", "P01 DETAIL: pushed WAL file '000000080000000000000022' to the archive", "P00 INFO: archive-push:async command end: completed successfully", "", "-------------------PROCESS START-------------------", "P00 INFO: archive-push:async command begin 2.24: [/var/lib/pgsql/9.6/data/pg_xlog] --archive-async --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.6/data --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: push 4 WAL file(s) to archive: 000000080000000000000023...000000080000000000000026", "P01 DETAIL: pushed WAL file '000000080000000000000023' to the archive", "P02 DETAIL: pushed WAL file '000000080000000000000024' to the archive", "P01 DETAIL: pushed WAL file '000000080000000000000025' to the archive", "P02 DETAIL: pushed WAL file '000000080000000000000026' to the archive", "P00 INFO: archive-push:async command end: completed successfully", "", "-------------------PROCESS START-------------------", "P00 INFO: archive-push:async command begin 2.24: [/var/lib/pgsql/9.6/data/pg_xlog] --archive-async --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.6/data --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: push 1 WAL file(s) to archive: 000000080000000000000027", "P01 DETAIL: pushed WAL file '000000080000000000000027' to the archive", "P00 INFO: archive-push:async command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 5" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/log/pgbackrest/demo-archive-get-async.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "found [0-F]{24} in the archive" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-------------------PROCESS START-------------------", "P00 INFO: archive-get:async command begin 2.24: [000000080000000000000020, 000000080000000000000021, 000000080000000000000022, 000000080000000000000023, 000000080000000000000024, 000000080000000000000025, 000000080000000000000026, 000000080000000000000027] --archive-async --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.6/data --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: get 8 WAL file(s) from archive: 000000080000000000000020...000000080000000000000027", "P01 DETAIL: found 000000080000000000000020 in the archive", "P02 DETAIL: found 000000080000000000000021 in the archive", "P01 DETAIL: unable to find 000000080000000000000022 in the archive", "P02 DETAIL: unable to find 000000080000000000000023 in the archive", " [filtered 20 lines of output]", "P00 INFO: archive-get:async command begin 2.24: [000000080000000000000022, 000000080000000000000023, 000000080000000000000024, 000000080000000000000025, 000000080000000000000026, 000000080000000000000027, 000000080000000000000028, 000000080000000000000029] --archive-async --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/9.6/data --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: get 8 WAL file(s) from archive: 000000080000000000000022...000000080000000000000029", "P01 DETAIL: found 000000080000000000000022 in the archive", "P02 DETAIL: found 000000080000000000000023 in the archive", "P01 DETAIL: found 000000080000000000000024 in the archive", "P02 DETAIL: found 000000080000000000000025 in the archive", "P02 DETAIL: found 000000080000000000000027 in the archive", "P01 DETAIL: found 000000080000000000000026 in the archive", "P02 DETAIL: unable to find 000000080000000000000028 in the archive", "P01 DETAIL: unable to find 000000080000000000000029 in the archive", " [filtered 13 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"alter user replicator password 'jw8s0F4'\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ALTER ROLE" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "demo" : { "pg2-host" : { "value" : "pg-standby" }, "pg2-path" : { "value" : "/var/lib/pgsql/9.6/data" } }, "global" : { "backup-standby" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/pgsql/9.6/data", "pg2-host=pg-standby", "pg2-path=/var/lib/pgsql/9.6/data", "", "[global]", "backup-standby=y", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --log-level-console=detail backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "backup file pg-primary|replay on the standby" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 2 lines of output]", "P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 000000080000000000000029, lsn = 0/29000028", "P00 INFO: wait for replay on the standby to reach 0/29000028", "P00 INFO: replay on the standby reached 0/29000028", "P01 INFO: backup file pg-primary:/var/lib/pgsql/9.6/data/global/pg_control (8KB, 0%) checksum 2831c718044f9ff77c5ef60e836e54cfdec25cf9", "P03 INFO: backup file pg-standby:/var/lib/pgsql/9.6/data/base/12470/1249 (360KB, 16%) checksum e64455dffd947fbad2c3352083297f920bc636f0", "P01 INFO: backup file pg-primary:/var/lib/pgsql/9.6/data/pg_log/postgresql.log (5.6KB, 17%) checksum 411f258ac84adb8894d18692f64c86992d00e7cd", "P04 INFO: backup file pg-standby:/var/lib/pgsql/9.6/data/base/12470/2674 (336KB, 32%) checksum 9102a9480c5215a5f000cb8822a162c157f5728d", "P01 INFO: backup file pg-primary:/var/lib/pgsql/9.6/data/pg_hba.conf (4.2KB, 32%) checksum 1c0bca2f7f44d354aaaefb2c21fd1290b7379690", "P02 INFO: backup file pg-standby:/var/lib/pgsql/9.6/data/base/12470/2608 (440KB, 53%) checksum 95161c399653da9d9b9f2f847e8c1e4841e0f9db", "P03 INFO: backup file pg-standby:/var/lib/pgsql/9.6/data/base/12470/2673 (312KB, 67%) checksum 94ddf3bc4f2b740e0afef3e00d7c897f50e9511a", " [filtered 1147 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-9.6.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-9.6.service" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres /usr/pgsql-10/bin/initdb \\", " -D /var/lib/pgsql/10/data -k -A peer" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sh -c 'cd /var/lib/pgsql && \\", " /usr/pgsql-10/bin/pg_upgrade \\", " --old-bindir=/usr/pgsql-9.6/bin \\", " --new-bindir=/usr/pgsql-10/bin \\", " --old-datadir=/var/lib/pgsql/9.6/data \\", " --new-datadir=/var/lib/pgsql/10/data \\", " --old-options=\" -c config_file=/var/lib/pgsql/9.6/data/postgresql.conf\" \\", " --new-options=\" -c config_file=/var/lib/pgsql/10/data/postgresql.conf\"'" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Upgrade Complete" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 70 lines of output]", "Checking for hash indexes ok", "", "Upgrade Complete", "----------------", "Optimizer statistics are not transferred by pg_upgrade so,", " [filtered 4 lines of output]" ] } }, { "key" : { "file" : "/var/lib/pgsql/10/data/postgresql.conf", "host" : "pg-primary", "option" : { "archive_command" : { "value" : "'pgbackrest --stanza=demo archive-push %p'" }, "archive_mode" : { "value" : "on" }, "listen_addresses" : { "value" : "'*'" }, "log_line_prefix" : { "value" : "''" }, "max_wal_senders" : { "value" : "3" }, "port" : { "value" : "5432" }, "wal_level" : { "value" : "replica" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo archive-push %p'", "archive_mode = on", "listen_addresses = '*'", "log_line_prefix = ''", "max_wal_senders = 3", "port = 5432", "wal_level = replica" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/pgsql/10/data" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/10/data", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "spool-path=/var/spool/pgbackrest", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/pgsql/10/data" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/10/data", "recovery-option=primary_conninfo=host=172.17.0.4 port=5432 user=replicator", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "spool-path=/var/spool/pgbackrest", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/pgsql/10/data" }, "pg2-path" : { "value" : "/var/lib/pgsql/10/data" } }, "global" : { "backup-standby" : { "value" : "n" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/pgsql/10/data", "pg2-host=pg-standby", "pg2-path=/var/lib/pgsql/10/data", "", "[global]", "backup-standby=n", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo cp /var/lib/pgsql/9.6/data/pg_hba.conf \\", " /var/lib/pgsql/10/data/pg_hba.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --no-online \\", " --log-level-console=info stanza-upgrade" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-upgrade command begin 2.24: --no-backup-standby --log-level-console=info --log-level-stderr=off --no-log-timestamp --no-online --pg1-host=pg-primary --pg2-host=pg-standby --pg1-path=/var/lib/pgsql/10/data --pg2-path=/var/lib/pgsql/10/data --repo1-path=/var/lib/pgbackrest --stanza=demo", "P00 INFO: stanza-upgrade command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-10.service" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres systemctl status postgresql-10.service" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "◠postgresql-10.service - PostgreSQL 10 database server", " Loaded: loaded (/usr/lib/systemd/system/postgresql-10.service; disabled; vendor preset: disabled)", " Active: active (running) since Tue 2020-02-25 15:42:41 UTC; 319ms ago", " Docs: https://www.postgresql.org/docs/10/static/", " Process: 3908 ExecStartPre=/usr/pgsql-10/bin/postgresql-10-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)", " Main PID: 3913 (postmaster)", " CGroup: /docker/b9730c0e198a0e8fd60e4ea9210e4b0f9c665267969d8a6b1af5d389c3275476/system.slice/postgresql-10.service", " ├─3913 /usr/pgsql-10/bin/postmaster -D /var/lib/pgsql/10/data/", " ├─3914 postgres: logger process ", " ├─3916 postgres: checkpointer process ", " ├─3917 postgres: writer process ", " ├─3918 postgres: wal writer process ", " ├─3919 postgres: autovacuum launcher process ", " ├─3920 postgres: archiver process ", " ├─3921 postgres: stats collector process ", " └─3922 postgres: bgworker: logical replication launcher " ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo check" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm -rf /var/lib/pgsql/9.6/data" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm -rf /var/lib/pgsql/9.6/data" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -p -m 700 /usr/pgsql-10/bin" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo check" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: unable to check pg-2: [DbConnectError] raised from remote-0 protocol on 'pg-standby': unable to connect to 'dbname='postgres' port=5432': could not connect to server: No such file or directory", " \tIs the server running locally and accepting", " \tconnections on Unix domain socket \"/var/run/postgresql/.s.PGSQL.5432\"?" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=standby restore" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/var/lib/pgsql/10/data/postgresql.conf", "host" : "pg-standby", "option" : { "hot_standby" : { "value" : "on" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "hot_standby = on" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-10.service" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo check" ], "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "global" : { "backup-standby" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/pgsql/10/data", "pg2-host=pg-standby", "pg2-path=/var/lib/pgsql/10/data", "", "[global]", "backup-standby=y", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } } ] } } } pgbackrest-release-2.24/doc/resource/fake-cert/000077500000000000000000000000001362531507100214445ustar00rootroot00000000000000pgbackrest-release-2.24/doc/resource/fake-cert/.gitignore000066400000000000000000000000141362531507100234270ustar00rootroot00000000000000*.csr *.srl pgbackrest-release-2.24/doc/resource/fake-cert/README.md000066400000000000000000000020671362531507100227300ustar00rootroot00000000000000# pgBackRest Documentation Certificates The certificates in this directory are used for documentation generation only and should not be used for actual services. ## pgBackRest CA Generate a CA that will be used to sign documentation certificates. It can be installed in the documentation containers to make certificates signed by it valid. ``` cd [pgbackrest-root]/doc/resource/fake-cert openssl ecparam -genkey -name prime256v1 | openssl ec -out ca.key openssl req -new -x509 -extensions v3_ca -key ca.key -out ca.crt -days 99999 \ -subj "/C=US/ST=All/L=All/O=pgBackRest/CN=pgbackrest.org" ``` ## S3 Certificate Mimic an S3 certificate for the `us-east-1`/`us-east-2` region to generate S3 documentation. ``` cd [pgbackrest-root]/doc/resource/fake-cert openssl ecparam -genkey -name prime256v1 | openssl ec -out s3-server.key openssl req -new -sha256 -nodes -out s3-server.csr -key s3-server.key -config s3.cnf openssl x509 -req -in s3-server.csr -CA ca.crt -CAkey ca.key -CAcreateserial \ -out s3-server.crt -days 99999 -extensions v3_req -extfile s3.cnf ``` pgbackrest-release-2.24/doc/resource/fake-cert/ca.crt000066400000000000000000000013511362531507100225410ustar00rootroot00000000000000-----BEGIN CERTIFICATE----- MIIB+jCCAaCgAwIBAgIJAJDUUhiBUbmEMAoGCCqGSM49BAMCMFcxCzAJBgNVBAYT AlVTMQwwCgYDVQQIDANBbGwxDDAKBgNVBAcMA0FsbDETMBEGA1UECgwKcGdCYWNr UmVzdDEXMBUGA1UEAwwOcGdiYWNrcmVzdC5vcmcwIBcNMTkwNTI3MDAxOTU5WhgP MjI5MzAzMTAwMDE5NTlaMFcxCzAJBgNVBAYTAlVTMQwwCgYDVQQIDANBbGwxDDAK BgNVBAcMA0FsbDETMBEGA1UECgwKcGdCYWNrUmVzdDEXMBUGA1UEAwwOcGdiYWNr cmVzdC5vcmcwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQYHUcSknRDL+fgFJZI IC73Ju75yA0203IxPO35i8mVb9CcWVhEgHmS+cQ6SfY6GC7V61VB7gwzQ+XESi2p ndhJo1MwUTAdBgNVHQ4EFgQUYMbKIlTUE6gklw8KcSC6fnlOitwwHwYDVR0jBBgw FoAUYMbKIlTUE6gklw8KcSC6fnlOitwwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjO PQQDAgNIADBFAiEA1Bzy17/6jQimg3ROZTrVGkRtAuzTtjgDParHFrIhSDoCIH43 OeOUaPVb0rXGPLu9rFpjPOmtFSW3lf4skheJMKyN -----END CERTIFICATE----- pgbackrest-release-2.24/doc/resource/fake-cert/ca.key000066400000000000000000000003431362531507100225410ustar00rootroot00000000000000-----BEGIN EC PRIVATE KEY----- MHcCAQEEIB5f3SxfiZ92GMpuqpfTiPO3xaVOnxRh6qVAoRtu7NOZoAoGCCqGSM49 AwEHoUQDQgAEGB1HEpJ0Qy/n4BSWSCAu9ybu+cgNNtNyMTzt+YvJlW/QnFlYRIB5 kvnEOkn2Ohgu1etVQe4MM0PlxEotqZ3YSQ== -----END EC PRIVATE KEY----- pgbackrest-release-2.24/doc/resource/fake-cert/s3-server.crt000066400000000000000000000016101362531507100240050ustar00rootroot00000000000000-----BEGIN CERTIFICATE----- MIICbTCCAhOgAwIBAgIJAODTXyGnxWtVMAoGCCqGSM49BAMCMFcxCzAJBgNVBAYT AlVTMQwwCgYDVQQIDANBbGwxDDAKBgNVBAcMA0FsbDETMBEGA1UECgwKcGdCYWNr UmVzdDEXMBUGA1UEAwwOcGdiYWNrcmVzdC5vcmcwIBcNMTkwNTI3MDIwODEwWhgP MjI5MzAzMTAwMjA4MTBaMIGBMQswCQYDVQQGEwJVUzEMMAoGA1UECAwDQWxsMQww CgYDVQQHDANBbGwxEzARBgNVBAoMCnBnQmFja1Jlc3QxHDAaBgNVBAsME1VuaXQg VGVzdGluZyBEb21haW4xIzAhBgNVBAMMGnMzLnVzLWVhc3QtMS5hbWF6b25hd3Mu Y29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEe2dO1v1gE0Qj4H407i0K8tN kASkveckACPFzXs2i/++rZY4bwUub08JcMRv0WWwnRzOoumsN26Ge454vTbjoqOB mjCBlzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIF4DB9BgNVHREEdjB0ghpzMy51cy1l YXN0LTEuYW1hem9uYXdzLmNvbYIcKi5zMy51cy1lYXN0LTEuYW1hem9uYXdzLmNv bYIaczMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb22CHCouczMudXMtZWFzdC0yLmFt YXpvbmF3cy5jb20wCgYIKoZIzj0EAwIDSAAwRQIgLiE7LuK6O/bKo70XPUi6xoDE ew+EHO31klTOeWiS6oMCIQCHMEqSAcDF/gnG/UXnp2viHOFjnY+NZgQo76l+/2mE iQ== -----END CERTIFICATE----- pgbackrest-release-2.24/doc/resource/fake-cert/s3-server.key000066400000000000000000000003431362531507100240070ustar00rootroot00000000000000-----BEGIN EC PRIVATE KEY----- MHcCAQEEIBhweMaCuhrRJy6hLV9X7QRCorDdyiUvSWEySHXZJM4DoAoGCCqGSM49 AwEHoUQDQgAEEe2dO1v1gE0Qj4H407i0K8tNkASkveckACPFzXs2i/++rZY4bwUu b08JcMRv0WWwnRzOoumsN26Ge454vTbjog== -----END EC PRIVATE KEY----- pgbackrest-release-2.24/doc/resource/fake-cert/s3.cnf000066400000000000000000000007501362531507100224630ustar00rootroot00000000000000[req] default_bits = 4096 prompt = no default_md = sha256 req_extensions = v3_req distinguished_name = dn [ dn ] C=US ST=All L=All O=pgBackRest OU=Unit Testing Domain CN = s3.us-east-1.amazonaws.com [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names [ alt_names ] DNS.1 = s3.us-east-1.amazonaws.com DNS.2 = *.s3.us-east-1.amazonaws.com DNS.3 = s3.us-east-2.amazonaws.com DNS.4 = *.s3.us-east-2.amazonaws.com pgbackrest-release-2.24/doc/resource/git-history.cache000066400000000000000000026512211362531507100230630ustar00rootroot00000000000000[ { "commit": "ace41d57d1a76d031350f3ba458ba1d1e393866d", "date": "2020-02-25 09:34:27 -0500", "subject": "Clarify that gzip is always used to compress history files." }, { "commit": "cc743f2e04db05cc3277e43023ebd8e2007ef4ed", "date": "2020-02-21 11:51:39 -0500", "subject": "Skip pg_internal.init temp file during backup.", "body": "If PostgreSQL crashes it can leave behind a pg_internal.init temp file with the pid as the extension, as discussed in https://www.postgresql.org/message-id/flat/20200131045352.GB2631%40paquier.xyz#7700b9481ef5b0dd5f09cc410b4750f6. On restart this file is not cleaned up so it can persist for the lifetime of the cluster or until another process with the same id happens to write pg_internal.init.\n\nThis is arguably a bug in PostgreSQL, but in any case it makes sense not to backup this file." }, { "commit": "48d0f77fe3e6edf7347b49d9e8c67052db00355b", "date": "2020-02-21 11:31:31 -0500", "subject": "Remove dead LibC macros.", "body": "These macros were made obsolete when code was removed from LibC after the C migration was completed." }, { "commit": "dfc5f6723379526fd3c5fe5de61a37793e2cced8", "date": "2020-02-17 17:12:22 -0600", "subject": "Fix typo." }, { "commit": "ea0af890d82b2b335cc4d9a9dcc29d440a583706", "date": "2020-02-12 17:27:44 -0700", "subject": "Reclassify release note to documentation improvement." }, { "commit": "c6b89d74ec5a21fc644f8f5106ee42def1135c98", "date": "2020-02-12 17:20:21 -0700", "subject": "Add reviewer." }, { "commit": "6353e9428df1d241b97d02c843f1a737e7c36c85", "date": "2020-02-12 17:18:48 -0700", "subject": "Error when archive-get/archive-push/restore are not run on a PostgreSQL host.", "body": "This error was lost during the migration to C. The error that occurred instead (generally an SSH auth error) was hard to debug.\n\nRestore the original behavior by throwing an error immediately if pg1-host is configured for any of these commands. reset-pg1-host can be used to suppress the error when required." }, { "commit": "dac8119bf11e74b7d393b601bcfbe447a80e85e4", "date": "2020-02-12 15:47:07 -0700", "subject": "Add pgIsLocalVerify().", "body": "This functionality is required in commands other than restore, so centralize it." }, { "commit": "e2c304d4738144f1c5c72d43d70ec5c9e67d052b", "date": "2020-02-12 12:17:23 -0700", "subject": "Prevent defunct processes in asynchronous archive commands.", "body": "The main improvement is a double-fork to prevent zombie processes if the parent process exits after the (child) async process. This is a real possibility since the parent process sticks around to monitor the results of the async process.\n\nIn the first fork, ignore SIGCHLD in the very unlikely case that the async process exits before the first fork. This is probably only possible if the async process exits immediately, perhaps due to a chdir() failure. Set SIGCHLD back to default in the async process so waitpid() will work as expected.\n\nAlso update the comment on chdir() to more accurately reflect what is happening.\n\nFinally, add a test in certain debug builds to ensure the first fork exits very quickly. This only works when valgrind is not in use because valgrind makes forking so slow that it is hard to tell if the async process performed work or not (in the case that the second fork goes missing and the async process is a direct child)." }, { "commit": "1fa3ae2fcd5b90a6f2a4e5dc83b3580297e83c1b", "date": "2020-02-11 19:54:17 -0700", "subject": "Prevent lock-bot from marking locked issues as \"resolved\".", "body": "This is certainly not true in all cases, e.g. an issue may be closed if it is added to the backlog." }, { "commit": "1be9e6854e8ab4bc21d693371a09290a6c3d5db6", "date": "2020-02-11 19:52:23 -0700", "subject": "Prevent lock-bot from adding comments to locked issues.", "body": "This will hopefully prevent users from getting notifications when an issue is locked." }, { "commit": "43936c58a894187b41501ba5acaf16e92842c261", "date": "2020-02-11 19:44:06 -0700", "subject": "Fix resume when the resumable backup was created by Perl.", "body": "In this case the resumable backup should be ignored, but the C code was not able to load the partial manifest written by Perl since the format differs slightly. Add validations to catch this case and continue gracefully." }, { "commit": "44adf21c834ca8624b47dc6dbc2794bc429463ad", "date": "2020-02-10 21:30:43 -0700", "subject": "Consolidate archive async exec code.", "body": "Move duplicated code to the common module. This will reduce copy and paste between the get and push modules when changes are made." }, { "commit": "0eaedc9a6ae98eaf4e733a3f63cb462a5ebcfa05", "date": "2020-02-10 19:17:11 -0700", "subject": "Improve async archive error file removal.", "body": "2a06df93 removed the error file so an old error would not be reported before the async process had a chance to try again. However, if the async process was already running this might lead to a timeout error before reporting the correct error.\n\nInstead, remove the error files once we know that the async process will start, i.e. after the archive lock has been acquired.\n\nThis effectively reverts 2a06df93." }, { "commit": "8cfbc294fcc066fce594c09649865f3d88bb2364", "date": "2020-02-10 18:48:47 -0700", "subject": "Fix incorrect error code." }, { "commit": "1ce71b1e9b5e0613182d64673e9f730efd0e8176", "date": "2020-02-10 17:44:39 -0700", "subject": "Add missing linefeed." }, { "commit": "71b4cc56cbcf20ce6a39e2155e0d9da11c83aaf8", "date": "2020-02-06 21:11:15 -0800", "subject": "Rename confessOnError to throwOnError.", "body": "Confess is awfully Perl-ish and was likely copied verbatim during the migration. Rename to what we do now, i.e. throw." }, { "commit": "2a06df93f379bdc28a6c5084d204cb1e5391dbb3", "date": "2020-02-06 20:59:04 -0800", "subject": "Remove async archive error file when not throwing an error.", "body": "This ensures that the error will not be thrown before the async process has a chance to retry." }, { "commit": "3721e57a0ec709326c28eb6d31f9b4fe9e3fd7b5", "date": "2020-02-06 18:28:54 -0800", "subject": "Clarify why some recovery options are not commented out for PG >= 12." }, { "commit": "efff54490f456b653e51abb05507b0917792376e", "date": "2020-02-04 21:19:21 -0800", "subject": "Fix release note typo." }, { "commit": "296aec03be7c924f2689e091e667e80daf06e6f7", "date": "2020-01-31 07:50:03 -0700", "subject": "Update contributor name." }, { "commit": "0f8ec3e478cc17243bc3f043a13f5da73f98de66", "date": "2020-01-30 14:51:26 -0700", "subject": "Read HTTP content to eof when size/encoding not specified.", "body": "Generally, the content-size or content-encoding headers will be used to specify how much content should be expected.\n\nThere is a special case where the server sends 'Connection:close' without the content headers and the content may be read up until eof.\n\nThis appears to be an atypical usage but it is required by the specification." }, { "commit": "856980ae99efe088e0cf10588c2a18cd78ff32e6", "date": "2020-01-30 14:38:05 -0700", "subject": "Auto-select backup set on restore when time target is specified.", "body": "Auto-selection is performed only when --set is not specified. If a backup set for the given target time cannot not be found, the latest (default) backup set will be used.\n\nCurrently a limited number of date formats are recognized and timezone names are not allowed, only timezone offsets." }, { "commit": "f46d1fa74c4c0cef7a0ac00f3e43ebeecdc1315e", "date": "2020-01-30 11:28:30 -0700", "subject": "Add timezone calculations to time module.", "body": "Add tzPartsValid() and tzOffsetSecond() to calculate timezone offsets from user provided values.\n\nUpdate epochFromParts() to accept a timezone offset in seconds." }, { "commit": "dbaa5e3473ebfb4651e879edaab6817fdd79092a", "date": "2020-01-29 08:21:36 -0700", "subject": "Add linefeeds to function declarations." }, { "commit": "80687cbe740ad786a15db5e76777f24fd7cb8c69", "date": "2020-01-28 10:19:58 -0700", "subject": "Free TLS connection in common/io-http test.", "body": "The test that checks for no output from the server was leaving a connection open which valgrind was complaining about.\n\nWait on the server long enough to cause the error on the client then close the connection to free the memory." }, { "commit": "846efaa40f2a04273a61057a3684973098deb690", "date": "2020-01-28 07:36:20 -0700", "subject": "Revert 'Add lib path for libpq in case it is in a non-standard location.`", "body": "Putting this before AC_CHECK_LIB breaks on many systems because the location of pg_config is not yet known." }, { "commit": "324f7cebe04e97a9ec34e325f6fbd927f77edb2c", "date": "2020-01-27 17:50:07 -0700", "subject": "Designated initializer cleanup.", "body": "Cleanup designated initializers created in b134175f by moving struct members in or out for clarity." }, { "commit": "24d2494c8209079d0288784de38e9045d5c6cb95", "date": "2020-01-27 11:25:24 -0700", "subject": "Fix incomplete comment." }, { "commit": "0a845214a1d306d16dce5618f2f998f8f6e6778d", "date": "2020-01-26 23:10:29 -0700", "subject": "Fix typo." }, { "commit": "697150eaf875742a4522e2ed8c00dfaf0489c4ac", "date": "2020-01-26 23:07:07 -0700", "subject": "Add more validations to the manifest on backup.", "body": "Validate that checksums exist for zero size files. This means that the checksums for zero size files are explicitly set by backup even though they'll always be the same. Also validate that zero length files have the correct checksum.\n\nValidate that repo size is > 0 if size is > 0. No matter what compression type is used a non-zero amount of data cannot be stored in zero bytes." }, { "commit": "bb45a80d46b738a9b6672fc77158585395b04473", "date": "2020-01-26 22:47:53 -0700", "subject": "Begin v2.24 development." }, { "commit": "2358d3448507f5dc4fd50edf65172285bca69c4b", "date": "2020-01-26 22:38:21 -0700", "subject": "v2.23: Bug Fix" }, { "commit": "7ab07dc580989452d807332bc91d26a42e5a0d3a", "date": "2020-01-26 21:58:59 -0700", "subject": "Validate checksums are set in the manifest on backup/restore.", "body": "This is a modest start but it addresses the specific issue that was caused by the bug fixed in 45ec694a. This validation will produce an immediate error rather than erroring out partway through the restore.\n\nMore validations are planned but this is the most important one and seems safest for this release." }, { "commit": "45ec694af22dda84b124f0df242bbcfdd28726d1", "date": "2020-01-26 13:19:13 -0700", "subject": "Fix missing files corrupting the manifest.", "body": "If a file was removed by PostgreSQL during the backup (or was missing from the standby) then the next file might not be copied and updated in the manifest. If this happened then the backup would error when restored.\n\nThe issue was that removing files from the manifest invalidated the pointers stored in the processing queues. When a file was removed, all the pointers shifted to the next file in the list, causing a file to be unprocessed. Since the unprocessed file was still in the manifest it would be saved with no checksum, causing a failure on restore.\n\nWhen process-max was > 1 then the bug would often not express since the file had already been pulled from the queue and updates to the manifest are done by name rather than by pointer." }, { "commit": "9b47ff2746b74bf41d20fa43d6ed2697b0a99087", "date": "2020-01-26 12:29:53 -0700", "subject": "Sort last processing queue on backup from standby.", "body": "The last queue was not being sorted when a primary queue was added first.\n\nThis did not affect the backup or integrity but could lead to slightly lower performance since large files were not always copied first." }, { "commit": "0444d3741423004e0f94116b528d94090c1e4303", "date": "2020-01-24 10:43:47 -0700", "subject": "Remove obsolete include to ../libc." }, { "commit": "b1c5885017c035320804c5d16ed57b149a33ab10", "date": "2020-01-24 10:40:42 -0700", "subject": "Add lib path for libpq in case it is in a non-standard location." }, { "commit": "90abc3cf170a3d5da8bbc5307cf5032d6af5ed6c", "date": "2020-01-24 10:08:05 -0700", "subject": "Use pkg-config instead of xml2-config for libxml2 build options.", "body": "pkg-config is a generic way to get build options rather than relying on a package-specific utility.\n\nXML2_CONFIG can be used to override this utility for systems that do not ship pkg-config." }, { "commit": "b134175fc7a98836f49f20d552f7c31138b66b1b", "date": "2020-01-23 14:15:58 -0700", "subject": "Use designated initializers to initialize structs.", "body": "Previously memNew() used memset() to initialize all struct members to 0, NULL, false, etc. While this appears to work in practice, it is a violation of the C specification. For instance, NULL == 0 must be true but neither NULL nor 0 must be represented with all zero bits.\n\nInstead use designated initializers to initialize structs. These guarantee that struct members will be properly initialized even if they are not specified in the initializer. Note that due to a quirk in the C99 specification at least one member must be explicitly initialized even if it needs to be the default value.\n\nSince pre-zeroed memory is no longer required, adjust memAllocInternal()/memReallocInternal() to return raw memory and update dependent functions accordingly. All instances of memset() have been removed except in debug/test code where needed.\n\nAdd memNewPtrArray() to allocate an array of pointers and automatically set all pointers to NULL.\n\nRename memGrowRaw() to the more logical memResize()." }, { "commit": "cf2024beafba82b3899d9c46c7ea64716835a292", "date": "2020-01-21 18:47:14 -0700", "subject": "Add XML2_CONFIG environment variable to configure.", "body": "This allows the default 'xml2-config' to be replaced with, e.g. 'pkg-config libxml-2.0', for libxml2 configuration." }, { "commit": "600a51815feacb149add2bb777d6a3b4d284c8aa", "date": "2020-01-21 18:42:22 -0700", "subject": "Set client_encoding to UTF8 on PostgreSQL connect.", "body": "This is the only non-ASCII character encoding we have tested so make sure that's all we get from PostgreSQL." }, { "commit": "1706c599bd1c4d1eeac5bf44d1811e0259809027", "date": "2020-01-21 18:37:43 -0700", "subject": "Set encoding to UTF8 for Debian documentation containers.", "body": "This allows testing multi-byte encodings in PostgreSQL." }, { "commit": "382ddfd79dfec12f4cdf821f36a47dd404a51356", "date": "2020-01-21 16:43:44 -0700", "subject": "Begin v2.23 development." }, { "commit": "bae6e1c9e3a035f3793739ef1b469015777aa70b", "date": "2020-01-21 16:12:33 -0700", "subject": "v2.22: Bug Fix" }, { "commit": "94842ccecee642cc58f6c177c19e642d86a8d997", "date": "2020-01-21 11:59:25 -0700", "subject": "Fix comment." }, { "commit": "03d434c7e112eb3a8649e9c11149e08929f9651b", "date": "2020-01-21 11:57:59 -0700", "subject": "Remove RHEL package patch now that it has been merged upstream.", "body": "Also revert 731ffcfb and update ContainerTest.pm for upstream changes." }, { "commit": "b89e6b7f69677fdaff3bb1ed5e908c843f72a4b5", "date": "2020-01-21 10:29:46 -0700", "subject": "Fix error in timeline conversion.", "body": "The timeline is required to verify WAL segments in the archive after a backup. The conversion was performed base 10 instead of 16, which led to errors when the timeline was ≥ 0xA." }, { "commit": "c2da9aa907802a59a0c6fd5c111a1dbe7ea16c76", "date": "2020-01-19 14:54:38 -0700", "subject": "Fix invalid bufSize().", "body": "bufUsed() should be used here to avoid a possible segfault or xml parse error when bufSize() > bufUsed()." }, { "commit": "c630bda1c184d475155220884f8a25fa4b788aaf", "date": "2020-01-19 10:37:08 -0700", "subject": "Remove Debian package patch now that it has been merged upstream." }, { "commit": "d9efbc3698f92b874abb6eff3298c44fd35b0d5c", "date": "2020-01-18 10:46:48 -0700", "subject": "Add UTF8 strings to manifest and restore tests.", "body": "The most likely place to get UTF8 characters is in database names so make sure UTF8 works in the places where database names are processed." }, { "commit": "19c39fe1e262dd7c259e9f1e68d0695c43afefe3", "date": "2020-01-17 22:54:19 -0700", "subject": "Fix redundancy in comment." }, { "commit": "ec173f12fb9c26553b2021473dd62d73a006835a", "date": "2020-01-17 13:29:49 -0700", "subject": "Add MEM_CONTEXT_PRIOR() block and update current call sites.", "body": "This macro block encapsulates the common pattern of switching to the prior (formerly called old) mem context to return results from a function.\n\nAlso rename MEM_CONTEXT_OLD() to memContextPrior(). This violates our convention of macros being in all caps but memContextPrior() will become a function very soon so this will reduce churn." }, { "commit": "b5fa9951e36641d0ad751f0c89751e84b5b1df0d", "date": "2020-01-17 13:08:47 -0700", "subject": "Use MEM_CONTEXT_BEGIN() block in varFree().", "body": "We probably arrived at this unusual construction because of the complexity of getting the mem context. Whether or not this is a good way to store the mem context, it still makes sense to use the standard pattern for switching mem contexts." }, { "commit": "c6d6b7dbefb62578be64133e36836fc936945555", "date": "2020-01-17 11:58:41 -0700", "subject": "Use MEM_CONTEXT_NEW_BEGIN() block instead of memContextNew().", "body": "A few places were using just memContextNew(), probably because they did not immediately need to create anything in the new context, but it's better if we use the same pattern everywhere, even if it results in a few extra mem context switches." }, { "commit": "d3be1e41a4cdb5b7bbc40d73de8f185b22a97efd", "date": "2020-01-16 16:23:40 -0700", "subject": "Add braces and spaces for clarity.", "body": "This should make it a little easier to see how the TRY macros work together." }, { "commit": "254f79803fca8cd591849b77d1266c79580ab08c", "date": "2020-01-16 16:20:59 -0700", "subject": "Use MEM_CONTEXT_BEGIN() block instead of memContextSwitch().", "body": "This is the standard pattern but was missed here." }, { "commit": "8068a610d566cf9b5bcc79a3602a3a8442192bad", "date": "2020-01-16 16:19:45 -0700", "subject": "Use MEM_CONTEXT_NEW_BEGIN() block.", "body": "This pattern makes more sense. The prior code was probably copy-pasted from code with slightly different requirements." }, { "commit": "4274fcbf6f99f6d8414d2ba095809341bcf56797", "date": "2020-01-16 14:42:01 -0700", "subject": "Add missing semicolon.", "body": "This worked when the FUNCTION_TEST_RETURN_VOID() macro expanded to nothing because of the final semicolon. If the FUNCTION_TEST_RETURN_VOID() macro expanded to something then there was one semicolon too few." }, { "commit": "731ffcfb3d77e6a9d17091f9819cf3e21e25d951", "date": "2020-01-16 14:29:04 -0700", "subject": "Disable RHEL package builds since upstream is broken." }, { "commit": "e81629b4420759f80bd18017ee47b89942c90090", "date": "2020-01-15 13:53:30 -0700", "subject": "Reclassify Perl and LibC code as test/harness.", "body": "These were still being included in the core totals but they are no longer used by core." }, { "commit": "193b78e150919470b33f3941be03f0ef589a3e79", "date": "2020-01-15 13:40:17 -0700", "subject": "Remove -s from make instructions.", "body": "It's a good option but not required so let the user make the choice.\n\nAlso combine configure and make into a single line." }, { "commit": "9414ad2300f5ab87000da333fbbfa58228dae0c4", "date": "2020-01-15 13:29:52 -0700", "subject": "Begin v2.22 development." }, { "commit": "2c0ba0820d3e4adea31ef6b8ee201be653ef9579", "date": "2020-01-15 13:21:52 -0700", "subject": "v2.21: C Migration Complete" }, { "commit": "8d3710b2fe94c90783374d19a435bded1903fe1b", "date": "2020-01-15 12:24:58 -0700", "subject": "Fix options being ignored by asynchronous commands.", "body": "The local, remote, archive-get-async, and archive-push-async commands were used to run functionality that was not directly available to the user. Unfortunately that meant they would not pick up options from the command that the user expected, e.g. backup, archive-get, etc.\n\nRemove the internal commands and add roles which allow pgBackRest to determine what functionality is required without implementing special commands. This way the options are loaded from the expected command section.\n\nSince remote is no longer a specific command with its own options, more manipulation is required when calling remote. This might be something we can improve in the config system but it may be worth leaving as is because it is a one-off, for now at least." }, { "commit": "c43ec9d38c7cd543d7a832f1e362705658ca5c12", "date": "2020-01-15 08:19:32 -0700", "subject": "Fix function return logging type.", "body": "This was working because the stack was being cleaned up by a try block at the call site." }, { "commit": "f8a29c266e1e9b6e207fdd74478e3aca9b728cb9", "date": "2020-01-13 20:36:42 -0700", "subject": "Clarify comment." }, { "commit": "a7738ebba3cfd3a732c5de997a113746136133af", "date": "2020-01-13 13:21:28 -0700", "subject": "Update comments in command/remote module." }, { "commit": "a969a860abea7384572a1244913bcfbd8851545d", "date": "2020-01-13 11:13:37 -0700", "subject": "Fix misaligned braces." }, { "commit": "fe263e87b1822b051ccea3fc0a8fea64f944dd7b", "date": "2020-01-12 11:31:06 -0700", "subject": "Allow path-style URIs in S3 driver.", "body": "Although path-style URIs have been deprecated by AWS, they may still be used with products like Minio because no additional DNS configuration is required.\n\nPath-style URIs must be explicitly enabled since it is not clear how they can be auto-detected reliably. More importantly, faulty detection could cause regressions in current installations." }, { "commit": "069345d33959eb7b2ff0f4ae2b2ec65023ac7186", "date": "2020-01-12 11:00:10 -0700", "subject": "Add string constants." }, { "commit": "3f89ecf8d9b848c2ca063581bc75064d9d353255", "date": "2020-01-10 09:39:33 -0700", "subject": "Add time to storage ls JSON output.", "body": "Time is supported in all drivers with the update to S3 at 61538f93, so it is now possible to add time to the ls command and have it work on all repo types." }, { "commit": "0fe7bb2ec4d6ba10af8f2a6fd736e2c4cbdb2af2", "date": "2020-01-09 12:20:13 -0700", "subject": "Improve code that updates/removes pg options passed to a remote.", "body": "The prior code was updating/removing hard-coded options but new options are added all the time and there was no indication that this code needed to be updated. For example, dc1e7ca2 added the pg-user option but this code was not updated.\n\nInstead find the options to update/remove dynamically. The new code uses prefixes, which is not perfect, but the patterns for pg options are pretty well established and this seems safer than the existing code." }, { "commit": "4c8653fc8bc6e8b3070c59ba12af4e5f2131c21c", "date": "2020-01-09 11:56:03 -0700", "subject": "Update inaccurate comments." }, { "commit": "2e11389ed4db29d530ec8e480134c44eab9a5896", "date": "2020-01-09 11:52:51 -0700", "subject": "Fix comment typo." }, { "commit": "0c5c78e5e16b10f79dcfa023c6276a65ad87481d", "date": "2020-01-09 09:23:15 -0700", "subject": "Make quoting in cfgExeParam() optional.", "body": "Parameter lists that are passed directly to exec*() do not need quoting when spaces are present. Worse, the quotes will not be stripped and the option value will be garbled.\n\nUnfortunately this still does not fix all issues with quoting since we don't know how it might need to be escaped to work with SSH command configuration. The answer seems to be to pass the options in the protocol layer but that's beyond the scope of this commit." }, { "commit": "7de5ce23ad387602125f478ceec2c834703080d5", "date": "2020-01-08 18:59:02 -0700", "subject": "Add internal remote-type option.", "body": "This option was overloaded on the general type option but it makes sense to split this out since the meaning is pretty different.\n\nRename the values to conform to current standards, i.e. pg and repo, now that the Perl code won't care anymore." }, { "commit": "7a1871c341c2ae530927bcf018792733530fc417", "date": "2020-01-08 09:54:44 -0700", "subject": "Fix test log message to match pg-version parameter name.", "body": "It was confusing that this part of the log message did not match the parameter name, which made reproducing test failures from CI a little harder." }, { "commit": "8e1f78b4c82d3b4f7ecbdb053df1c8fd46bf3c1e", "date": "2020-01-07 12:20:51 -0700", "subject": "Remove obsolete Perl code missed in f0ef73db." }, { "commit": "a84ae6be04fc21c52c04284004836292089fa0e1", "date": "2020-01-06 16:16:48 -0700", "subject": "Fix comment typos." }, { "commit": "61538f932c58c3bb0afad5b6c16cf997604e3606", "date": "2020-01-06 15:53:53 -0700", "subject": "Parse dates in storageS3InfoList() and storageS3Info().", "body": "Previously dates were not being filled by these functions which was fine since dates were not used.\n\nWe plan to use dates for the ls command plus it makes sense for the driver to be complete since it will be used as an example." }, { "commit": "d2fb4f977ceba499f134ad363ea3170f0d9ef5b9", "date": "2020-01-06 15:24:49 -0700", "subject": "Add httpLastModifiedToTime() to parse HTTP last-modified header." }, { "commit": "a08298ce1b9ee96a9f84b613848327f7f60eb063", "date": "2020-01-06 15:18:52 -0700", "subject": "Add basic time management functions.", "body": "These are similar to what mktime() and strptime() do but they ignore the local system timezone which saves having to munge the TZ env variable to do time conversions." }, { "commit": "fc47907fe32560e8d3086287023d6f727027a0a1", "date": "2020-01-03 09:32:52 -0700", "subject": "Update LICENSE.txt for 2020." }, { "commit": "011bcb48697ddb56fe1396502a36254718f74dfa", "date": "2019-12-29 21:22:18 -0700", "subject": "Remove command option from Perl db application name.", "body": "The command option will be removed from the C code so it needs to be removed here as well.\n\nThis code is now used only for testing so it's not important that it be so precise." }, { "commit": "33e328abbf5992caccc15ff42ca2dca14502c983", "date": "2019-12-28 18:30:32 -0700", "subject": "Remove unused LibC code.", "body": "The code was made obsolete by the migration to C." }, { "commit": "e72a9dd0d2b6aad58a5d845112631253382e20e2", "date": "2019-12-28 13:37:03 -0700", "subject": "Add error parameter to cfgCommandId().", "body": "This allows commands to be checked for validity without generating an error." }, { "commit": "d28837a300d4b585792c049dce25fd73387408b3", "date": "2019-12-28 13:31:59 -0700", "subject": "Remove obsolete function declaration." }, { "commit": "d41eea685a732fa80d99d0af0fc52746e13d1152", "date": "2019-12-26 18:08:27 -0700", "subject": "Change meaning of TEST_RESULT_STR() macro.", "body": "This macro was created before the String object existed so subsequent usage with String always included a lot of strPtr() wrapping.\n\nTEST_RESULT_STR_Z() had already been introduced but a wholesale replacement of TEST_RESULT_STR() was not done since the priority was on the C migration.\n\nUpdate all calls to (old) TEST_RESULT_STR() with one of the following variants: (new) TEST_RESULT_STR(), TEST_RESULT_STR_Z(), TEST_RESULT_Z(), TEST_RESULT_Z_STR()." }, { "commit": "02d3918b3233276651fff443b7fcee3f325cf263", "date": "2019-12-19 19:37:55 -0500", "subject": "Remove duplicate header and extra linefeed." }, { "commit": "74c3842595f49b81be341faf56f2343e9a5c60c8", "date": "2019-12-19 16:25:46 -0500", "subject": "Remove errant tabs and fix spacing." }, { "commit": "7dfea6b71728bc4985021ce8eb993c1376344581", "date": "2019-12-19 16:20:11 -0500", "subject": "Remove errant tab." }, { "commit": "dc1e7ca22dbdae2556513468433b0591d7cf5a44", "date": "2019-12-19 11:26:38 -0500", "subject": "Add pg-user option.", "body": "Specifies the database user name when connecting to PostgreSQL.\n\nIf not specified pgBackRest will connect with the local OS user or PGUSER, which was the previous behavior." }, { "commit": "9452084dd174925c554273eb2f8b224c89069123", "date": "2019-12-17 23:32:39 -0500", "subject": "Fix misspellings of libpq." }, { "commit": "63a855e2f7108f54100b973e23e4bcf3005a1647", "date": "2019-12-17 23:26:52 -0500", "subject": "Fix misaligned continuation character." }, { "commit": "2f7e139534de54fb19fa46edf7eeb7ecf00d8284", "date": "2019-12-17 22:35:30 -0500", "subject": "Error if option prefix and index total are not both defined.", "body": "They are both required for indexed options." }, { "commit": "d780d084b7b4ad0950bd35b905c778c3a47e8860", "date": "2019-12-17 21:56:02 -0500", "subject": "Add comments about increasing Vagrantfile disk size." }, { "commit": "d89d9f1c52b9fc7bf4827d1b367da6e8520a79d2", "date": "2019-12-17 21:47:19 -0500", "subject": "Skip vagrant disksize option if no plugin.", "body": "Previously, `vagrant up` would bail if no `vagrant-disksize` plugin was\ninstalled. This option is just a nice-to-have, so skip it rather than\nbailing." }, { "commit": "ac35dcac39699b5ecae5f3d178cb837bac1446dc", "date": "2019-12-17 21:28:40 -0500", "subject": "Add note about symlink required for contributing documentation to build." }, { "commit": "3394a5017091e57b0adc296b43ac00010a223c3d", "date": "2019-12-17 21:25:54 -0500", "subject": "Remove unused Perl library missed in f0ef73db." }, { "commit": "620386f034fd97371c467bda4dc0d90f423bf663", "date": "2019-12-17 20:14:45 -0500", "subject": "Remove integration tests that are now covered in the unit tests.", "body": "Most of these tests are just checking that errors are thrown when required. These are well covered in various unit tests.\n\nThe \"cannot resume\" tests are also well covered in the backup unit tests.\n\nFinally, config warnings are well covered in the config unit tests.\n\nThere is more to be done here, but this accounts for the low-hanging fruit." }, { "commit": "977ec2e307c5487df9ed6fadebd486a92c75f269", "date": "2019-12-17 15:23:07 -0500", "subject": "Integration test improvements for disk and memory efficiency.", "body": "Set log-level-file=off when more that one test will run. In this case is it impossible to see the logs anyway since they will be automatically cleaned up after the test. This improves performance pretty dramatically since trace-level logging is expensive. If a singe integration test is run then log-level-file is trace by default but can be changed with the --log-level-test-file option.\n\nReduce buffer-size to 64k to save memory during testing and allow more processes to run in parallel.\n\nUpdate log replacement rules so that these options can change without affecting expect logs." }, { "commit": "ccea30b8d8970acf9c1826c5c988d819aabf2d0f", "date": "2019-12-14 10:20:23 -0500", "subject": "Increase memory in ramdisk for Travis CI testing.", "body": "The co6 tests were occasionally running out of space so bump up the size of the ramdisk a bit to hopefully prevent this.\n\nA longer term solution would be to disable the trace-level file logs when running on Travis CI since they seem to be using most of the space." }, { "commit": "6bd280f7bd667305317a7c825d913dac9719c475", "date": "2019-12-14 09:53:50 -0500", "subject": "Don't warn when stop-auto is enabled on PostgreSQL >= 9.6.", "body": "PostgreSQL >= 9.6 uses non-exclusive backup which has implicit stop-auto since the backup will stop when the connection is terminated.\n\nThe warning was made more verbose in 1f2ce45e but this now seems like a bad idea since there are likely users with mixed version environments where stop-auto is enabled globally. There's no reason to fill their logs with warnings over a harmless option. If anything we should warn when stop-auto is explicitly set to false but this doesn't seem very important either.\n\nRevert to the prior behavior, which is to warn and reset when stop-auto is enabled on PostgreSQL < 9.3." }, { "commit": "03849840b813fdfdc2e00874fa8e3bbe9ac95338", "date": "2019-12-13 21:33:13 -0500", "subject": "Fix handling of \\ in filenames.", "body": "\\ was not being properly escaped when calculating the manifest checksum which prevented the manifest from loading.\n\nUse jsonFromStr() to properly quote and escape \\.\n\nSince instances of \\ in cluster filenames should be rare to nonexistent this does not seem likely to be a serious problem in the field." }, { "commit": "f0ef73db7009cd6e08740d270a6ee7565efc9f8c", "date": "2019-12-13 17:55:41 -0500", "subject": "pgBackRest is now pure C.", "body": "Remove embedded Perl from the distributed binary. This includes code, configure, Makefile, and packages. The distributed binary is now pure C.\n\nRemove storagePathEnforceSet() from the C Storage object which allowed Perl to write outside of the storage base directory. Update mock/all and real/all integration tests to use storageLocal() where they were violating this rule.\n\nRemove \"c\" option that allowed the remote to tell if it was being called from C or Perl.\n\nCode to convert options to JSON for passing to Perl (perl/config.c) has been moved to LibC since it is still required for Perl integration tests.\n\nUpdate build and installation instructions in the user guide.\n\nRemove all Perl unit tests.\n\nRemove obsolete Perl code. In particular this included all the Perl protocol code which required modifications to the Perl storage, manifest, and db objects that are still required for integration testing but only run locally. Any remaining Perl code is required for testing, documentation, or code generation.\n\nRename perlReq to binReq in define.yaml to indicate that the binary is required for a test. This had been the actual meaning for quite some time but the key was never renamed." }, { "commit": "1f2ce45e6b613edfb628ac40fd2369c9455692ba", "date": "2019-12-13 17:14:26 -0500", "subject": "The backup command is implemented entirely in C.", "body": "For the most part this is a direct migration of the Perl code into C except as noted below.\n\nA backup can now be initiated from a linked directory. The link will not be stored in the manifest or recreated on restore. If a link or directory does not already exist in the restore location then a directory will be created.\n\nThe logic for creating backup labels has been improved and it should no longer be possible to get a backup label earlier than the latest backup even with timezone changes or clock skew. This has never been an issue in the field that we know of, but we found it in testing.\n\nFor online backups all times are fetched from the PostgreSQL primary host (before only copy start was). This doesn't affect backup integrity but it does prevent clock skew between hosts affecting backup duration reporting.\n\nArchive copy now works as expected when the archive and backup have different compression settings, i.e. when one is compressed and the other is not. This was a long-standing bug in the Perl code.\n\nResume will now work even if hardlink settings have been changed." }, { "commit": "e206093beb43981f11b532f05897c383f93d8f63", "date": "2019-12-12 18:52:16 -0500", "subject": "Allow end anchor to be excluded in backupRegExp().", "body": "This is useful for matching files in the backup history directory which have characters after the backup label." }, { "commit": "8acfb6adf410571464c956ad161ad3df227b73a5", "date": "2019-12-12 16:43:34 -0500", "subject": "Add pgLsnRangeToWalSegmentList() to convert lsn range to wal segments." }, { "commit": "81295fd3889ce05829b6443aa29032ccffdfef3e", "date": "2019-12-12 16:28:26 -0500", "subject": "Move not found error into walSegmentFind().", "body": "This error is also needed in backup so move it here to centralize it." }, { "commit": "1378d9c58b05f2f45352df155463ab8cd55276a6", "date": "2019-12-12 16:21:51 -0500", "subject": "Fix bad arithmetic in pgLsnToWalSegment().", "body": "/ takes precedence over & but the appropriate parens were not provided.\n\nBy some bad luck the tests worked either way, so add a new test that only works the correct way to prevent a regression." }, { "commit": "676be2c77390587bb36c9d88bcf1a54d333ee0f3", "date": "2019-12-12 16:11:09 -0500", "subject": "Add pgWalPath() to return version-specific WAL path.", "body": "Also update the manifest module to use the new function." }, { "commit": "94cb9540f1c94746d78ae4efb16246b26daf79a0", "date": "2019-12-12 09:05:10 -0500", "subject": "Begin v2.21 development." }, { "commit": "39fc2b7ad68d97cf5f23757e8a341428935621f4", "date": "2019-12-12 08:20:21 -0500", "subject": "v2.20: Bug Fixes" }, { "commit": "b031dbbcf8fa83ef60cfabc20fbf16046904f9aa", "date": "2019-12-11 22:11:04 -0500", "subject": "Allow timezones to be explicitly set for testing.", "body": "The TZ environment variable was not reliably pushed down to the test processes.\n\nInstead pass TZ via a command line parameter and set explicitly in the test process." }, { "commit": "db5175915a0dc09b7591d71886ee8ce3bf5a12c3", "date": "2019-12-11 21:51:32 -0500", "subject": "Use localtime() to format time_t in cvtTimeToZ().", "body": "Using gmtime() produced output skewed by the local timezone.\n\nSince this function is currently only used for debug logging this is not a live bug in the field." }, { "commit": "811ecd758d9e2ca12966995ec6cfc1e4ff8c0cfd", "date": "2019-12-11 14:57:32 -0500", "subject": "Make type in comment more specific." }, { "commit": "0194a9867182435c7a181be6466ca2b91f05801d", "date": "2019-12-11 14:36:39 -0500", "subject": "Fix archive-push/archive-get when PGDATA is symlinked.", "body": "Commit 7168e074 tried to use cwd() as PGDATA but this would disagree with the path configured in pgBackRest if PGDATA was symlinked.\n\nIf cwd() does not match the pgBackRest path then chdir() to the path and make sure the next cwd() matches the result from the first call." }, { "commit": "8c840c28a65dae3cca581691e88e51839cd64bca", "date": "2019-12-11 08:48:46 -0500", "subject": "Fix segfault on unexpected EOF in gzip decompression.", "body": "If the compressed stream terminated early then the decompression process would get a flush request (NULL input buffer) since the filter was not marked as done. This could happen on a zero-length or truncated (i.e. invalid) compressed file.\n\nChange the existing assertion to an error to catch this condition in production gracefully." }, { "commit": "c933f12f9c39d7c076f84252c081c3430be72e55", "date": "2019-12-10 13:28:15 -0500", "subject": "Remove obsolete --perl-option option.", "body": "This option was used when Perl was executed instead of being embedded.\n\nIt has been obsolete for a long time so remove it." }, { "commit": "d0ba8ff58c46c15facb4dba19eab8db83835b07c", "date": "2019-12-10 13:16:47 -0500", "subject": "Remove test point infrastructure.", "body": "82df7e6f and 9856fef5 updated tests that used test points in preparation for the feature not being available in the C code.\n\nSince tests points are no longer used remove the infrastructure.\n\nAlso remove one stray --test option in mock/all that was essentially a noop but no longer works now that the option has been removed." }, { "commit": "d7d663c2b93fd6a3bdfb1c6a4bd1feae0cd8cc63", "date": "2019-12-10 13:02:36 -0500", "subject": "Make buildPutDiffers() work with empty files.", "body": "If the file was empty the timestamp was updated. If the file is empty and there is no content then file should not be saved." }, { "commit": "800d2972b00bb381c92cdadead9a1c04141853be", "date": "2019-12-09 18:28:20 -0500", "subject": "Remove stray uint type.", "body": "This was probably copied from an example but some compilers don't like it." }, { "commit": "471d54a738887dd5c99afced36420cf6fb5c631b", "date": "2019-12-09 17:55:20 -0500", "subject": "Add stringz module to define some commonly used strings.", "body": "This module will eventually contain various useful zero-terminated string functions.\n\nFor now, using NULL_Z instead of strPtr(NULL_STR) avoids a strict aliasing warning on RHEL 6. This is likely a compiler issue, but adding these constants seems like a good idea anyway and we are not going to get a fix in a gcc that old." }, { "commit": "ca33545630a073579ef763294d897dd06820f5a5", "date": "2019-12-09 14:06:32 -0500", "subject": "Remove redundant test and move another test." }, { "commit": "61ad3a44c9e562a306064770428726a5664056e9", "date": "2019-12-09 09:12:34 -0500", "subject": "Note that next repo format should use UTC for backup labels." }, { "commit": "d3132dae26ad40c2a47db62d4cc5f4502465d7c6", "date": "2019-12-08 18:43:47 -0500", "subject": "Add functions for building new manifests.", "body": "New manifests are built before a backup is performed." }, { "commit": "2cfde18755f305008af134ac833aca6989321ca7", "date": "2019-12-08 14:19:47 -0500", "subject": "Add pgLsnFromStr(), pgLsnToStr(), and pgLsnToWalSegment()." }, { "commit": "f517b141fb065efd21878fc774f51b52c014d887", "date": "2019-12-08 14:15:23 -0500", "subject": "Update pq harness to play nicely with variable LSNs." }, { "commit": "d2587250da82a90257534268e2175bfcfd3e15ac", "date": "2019-12-07 18:44:06 -0500", "subject": "Add backup functions to Db object.", "body": "These functions implement the database backup functionality for all supported versions." }, { "commit": "8766326da812f6aae00bdbfef4b1382805de8c3e", "date": "2019-12-07 17:48:53 -0500", "subject": "Add protocolRemoteFree() to shutdown a specific remote.", "body": "Sometimes it is useful to shutdown remotes that are no longer needed instead of waiting for them to be shutdown at program exit." }, { "commit": "5175d52e9466c339f5a4cd5c7d7e8724c3bbb2e3", "date": "2019-12-07 17:42:42 -0500", "subject": "Add constant for pg_tblspc path." }, { "commit": "78b1e05b7e6f8d09a424a2e8864e317d63c474f3", "date": "2019-12-07 17:39:25 -0500", "subject": "Remove unused Perl module." }, { "commit": "35a262951a1ed74431cdfa92c36ee2c9ae867c1a", "date": "2019-12-07 17:33:34 -0500", "subject": "Pq test harness usability and error reporting improvements.", "body": "Pq script errors are now printed in test output in case they are being masked by a later error.\n\nOnce a script error occurs, the same error will be thrown forever rather than throwing a new error on the next item in the script.\n\nHRNPQ_MACRO_CLOSE() is not required in scripts unless harnessPqScriptStrictSet(true) is called. Most higher-level tests should not need to run in strict mode.\n\nThe command/check test seems to require strict mode but there's no apparent reason why it should. This would be a good thing to look into at some point." }, { "commit": "d6479ddd0efda9bb442f4bbfe937daa0ab46ac72", "date": "2019-12-07 17:15:20 -0500", "subject": "Add log replacements to help test non-deterministic log output.", "body": "Some log output (e.g. time) is hard to test because the values can change between tests.\n\nAdd expressions to replace substrings in the log with predictable values to simplify testing.\n\nThis is similar to the log replacement facility available for Perl expect log testing." }, { "commit": "e4716ee036e8a4417f6dcb8d108c0d7b9e3f2b7d", "date": "2019-12-07 17:02:41 -0500", "subject": "Improve diff output in tests.", "body": "Always compare expected vs actual (in that order) and give a hint in the error message to indicate what should be added and what removed." }, { "commit": "8c47ee296a1f311682b46b3f1de98d4eb7dcaf6a", "date": "2019-12-07 16:55:50 -0500", "subject": "Improve storage harness test callback.", "body": "Add ability to omit the root (i.e. dot) path and get real size of compressed files." }, { "commit": "1b3770e248f4a5b59ba16f6a4c6cba7cf23de883", "date": "2019-12-07 09:48:33 -0500", "subject": "Recopy during backup when resumed file is missing or corrupt.", "body": "A recopy would occur if the size or checksum was invalid but on error the backup would terminate.\n\nInstead, recopy the resumed file on any error. If the error is systemic (e.g. network failure) then it should show up again during the recopy." }, { "commit": "d3f717c89208ef132e75b634ad2e91efbda25a04", "date": "2019-12-07 09:26:51 -0500", "subject": "Storage hardlink and symlink features require path feature.", "body": "Since there is only one driver that supports (or is likely to support) links (Posix), require the path feature to make logic in the code simpler.\n\nThe checks are added just in case another driver supports links." }, { "commit": "e632c605250438a9e06f133b55c88e578ea709cd", "date": "2019-12-06 11:48:41 -0500", "subject": "Fix backup labels in mock/all resume integration tests.", "body": "These were not getting updated to match the directory name when the manifests were copied.\n\nThe Perl code didn't care but the C code expects labels to be set correctly." }, { "commit": "5395aa0c92febadbf0c71f93799877cfe7268b6b", "date": "2019-12-05 22:34:38 -0500", "subject": "Allocate one extra process for backup from standby.", "body": "The connection to the primary is process-max + 1 so make space for it." }, { "commit": "b2d82bd2484dbe3dee12479efb6e9aceba5aac57", "date": "2019-12-04 19:43:26 -0500", "subject": "Add functions to get the substring found by regExpMatch().", "body": "For now this is only used in testing but there are places where it could be useful in the core code.\n\nEven if that turns out not to be true, it doesn't seem worth implementing a new version in testing just to capture a few values that we already have." }, { "commit": "053af2f54db0eaaaca3ac67cbdd68ba1b701048a", "date": "2019-12-04 19:31:39 -0500", "subject": "Add asserts to ensure hostId > 0.", "body": "hostId is 1-based (e.g. pg1-*) so it should always be > 0." }, { "commit": "d1f49825b11ba88ac2024734c4c8a1c961f05854", "date": "2019-12-02 11:54:45 -0500", "subject": "Add missing header." }, { "commit": "8dfe0e48e25725978738ecb3fec24e5ce2e9076b", "date": "2019-12-02 10:49:25 -0500", "subject": "Use more general error code when tablespace linked into PGDATA.", "body": "The specific error code was not that useful since we also test the error message which contains details of the link error." }, { "commit": "33a63aae503adf8d7f3f4430ee6478b845d38e2c", "date": "2019-12-02 07:39:42 -0500", "subject": "Add flag to dbGet() to require a standby.", "body": "This is needed from backup from standby functionality." }, { "commit": "28116918ff3a00b133d74d524df452e29398082d", "date": "2019-12-02 07:35:36 -0500", "subject": "Error in remote command when stop file exists.", "body": "This duplicates the Perl functionality." }, { "commit": "fc291b6f28753329afdd7b65b115f90d31569df1", "date": "2019-12-01 17:47:47 -0500", "subject": "Reduce the scope of mock/all exclusion tests.", "body": "Run exclusions only on the tests where they will have an effect to reduce churn in the expect logs when they change." }, { "commit": "d15ed338217667f0bd7ffff3eb9f5e24052477fd", "date": "2019-12-01 16:32:21 -0500", "subject": "Make MCV return false when a boolean tie.", "body": "This is to maintain compatibility with the older Perl code that returned the lowest sorted order item in a tie.\n\nFor other datatypes the C code returns the same value, often enough at least to not cause churn in the expect tests." }, { "commit": "ab0974cc8ea0cff70a9f680ff8e1dc10b1ba3c48", "date": "2019-12-01 16:30:44 -0500", "subject": "Add PostgreSQL version where backup from standby is supported." }, { "commit": "218698088f0e4d5a978b8f4c8df6b114980889b9", "date": "2019-12-01 16:28:33 -0500", "subject": "Add PostgreSQL file and path names used for building manifests." }, { "commit": "56ee321a9565e7c1e076c58744e0cfc408801e28", "date": "2019-12-01 15:49:34 -0500", "subject": "Add pgLsnName() and pgXactPath()." }, { "commit": "bc83354fb53a1ba8a86366478c5be871775dd04a", "date": "2019-11-29 11:29:16 -0500", "subject": "Add storage feature flags.", "body": "Even though storagePathSync() is a noop when path sync is not supported, it is useful to know in advance if the function will do anything so add the storageFeaturePathSync flag.\n\nThe storageFeatureSymLink and storageFeatureHardLink flags are currently informational only since links are not yet implemented in the storage interface." }, { "commit": "0933aeb1ad954f8c7b2ed6d4e160d7e132ada8b7", "date": "2019-11-29 10:56:13 -0500", "subject": "Remove unused reference to use pgBackRest::Backup::File." }, { "commit": "50eb062e0e7a6aac326e411ed28e0c8aa397bf01", "date": "2019-11-28 09:34:19 -0500", "subject": "Fix reference list when backup.info is reconstructed in expire command.", "body": "Adding a manifest to backup.info was migrated to C in 4e4d1f41 but deduplication of the references was missed leading to a reference for every file being added to backup.info.\n\nSince the backup command is still using the Perl version of reconstruct this issue will not express unless 1) there is a backup missing from backup.info and 2) the expire command is run directly instead of running after backup as usual.\n\nThis unlikely combination of events means this is probably not a problem in the field." }, { "commit": "686b6f91da4cfdbc8708b0f08ced460c10e4326c", "date": "2019-11-28 08:27:21 -0500", "subject": "Set archive-check option in manifest correctly when offline.", "body": "Archive check does not run when in offline backup mode but the option was set to true in the manifest. It's harmless since these options are informational only but it could cause confusion when debugging." }, { "commit": "5506e5de27b1a61015f6e18d5582ca81f696e30f", "date": "2019-11-27 15:09:07 -0500", "subject": "Remove obsolete call to perlExec() for stand-alone expire command.", "body": "This was missed in ecae5e34." }, { "commit": "4683557c54d2f2511fd754ae7c0c5e34ac1e5ba4", "date": "2019-11-26 17:22:30 -0500", "subject": "Remove unused reference to pgBackRest::Db." }, { "commit": "158e439689c8247ba2e53da4bfe65934e391b690", "date": "2019-11-26 17:16:45 -0500", "subject": "Remove obsolete Perl archive code.", "body": "This should have been removed in a1c13a50 but was missed." }, { "commit": "82df7e6f3bf53409b3c3a15eff7bbc33c13197f8", "date": "2019-11-26 11:32:12 -0500", "subject": "Update integration tests in real/all that use test points.", "body": "Test points are not supported by the new C code so these will be replaced with unit tests.\n\nThe fact that the tests still pass even when the changes aren't made mid-backup (except application_name) shows how weak they were in the first place.\n\nEven so, this does represent a regression in (soon to be be removed) Perl coverage." }, { "commit": "b145c72b5c27ad299ad1fa7dcd84f45fb0797e0f", "date": "2019-11-25 08:51:28 -0500", "subject": "Update missing manifest warning in BackupInfo.", "body": "This brings the Perl message in line with C to reduce expect log churn." }, { "commit": "8800f32ad9b6b9b1351afd4280cc8dfe1ada2d92", "date": "2019-11-25 08:35:26 -0500", "subject": "Remove exclusions once they have been tested in mock/all.", "body": "The exclusions no longer have any effect after a restore and just add noise to the expect log." }, { "commit": "9856fef5861fbf054007233f78582d3584c03565", "date": "2019-11-25 07:48:52 -0500", "subject": "Update integration tests in mock/all that use test points.", "body": "Test points will not be available in the C code so update these tests as best as possible without using them.\n\nThis represents a loss of coverage for the Perl code (soon to be removed) which will be made up in the C code with unit tests." }, { "commit": "3cd45a7411ce67630915c89cf5c69a37265d0e07", "date": "2019-11-25 07:45:58 -0500", "subject": "Remove start/stop --force integration tests in mock/all.", "body": "These tests require test points which are not being implemented in the C code.\n\nThis functionality is fully tested in the command/control unit tests so integration tests are no longer required." }, { "commit": "01aefc563dbabc7c7b1b7dbed27716692898597f", "date": "2019-11-25 07:37:09 -0500", "subject": "Update Perl page checksum expression.", "body": "This expression determines which files contain page checksums but it was also including the directory above the relation directories. In a real PostgreSQL installation this not a problem because these directories don't contain any files.\n\nHowever, our tests place a file in `base` which the Perl code thought should have page checksums while the new C code says no.\n\nUpdate the expression to document the change and avoid churn in the expect logs later." }, { "commit": "18e43c5955217838ad55e68e176b83a9187533ec", "date": "2019-11-24 09:24:52 -0500", "subject": "Fix comment typo." }, { "commit": "cace54151f3dc9f686b99923f1dbd1c010ab84f4", "date": "2019-11-23 10:32:57 -0500", "subject": "Add hostId to protocolLocalGet().", "body": "Previously this function was only creating locals that talked to the repository. Backup will need to be able to talk to multiple PostgreSQL hosts." }, { "commit": "ab65ffdfacf47b6d182cbf6461d49a76c0cc8b00", "date": "2019-11-23 10:22:11 -0500", "subject": "Add protocolStorageType*() to manage protocol storage types.", "body": "Abstract the string representation of storage types that are passed over the protocol layer." }, { "commit": "a4b9440d354c3cf95f7ca3aa68dc691c10c65e21", "date": "2019-11-22 19:25:49 -0500", "subject": "Only install specific lcov version when required.", "body": "Installing lcov 1.14 everywhere turned out to be a problem just as using 1.13 on Ubuntu 19.04 was.\n\nSince we primarily use Ubuntu 18.04 for coverage testing and reporting, we definitely want to make sure that works. So, revert to using the default packaged lcov except when specified otherwise in VmTest.pm.\n\nPostgreSQL minor version releases are also included since all containers have been rebuilt." }, { "commit": "52a3ba6b6f25443b5ed456969b794f63a809a606", "date": "2019-11-22 15:18:56 -0500", "subject": "Revert \"Forbid % character in parameters.\"", "body": "The issue \"fixed\" in f01aa586 was caused by treating all strings as format strings while logging, which was fixed in 0c05df45.\n\nRevert because there no longer seems a reason for the extra logic, and it was only partially applied, i.e. not to env vars, command-line options, or config options." }, { "commit": "381aecae4eeb15c538318e95c3101fa07a6712d4", "date": "2019-11-22 14:30:56 -0500", "subject": "Fix walPath() when CWD is / and path is relative.", "body": "The function would return a // prefix in this case, which works fine but looks odd while debugging." }, { "commit": "0c05df458287c77df1188a68bbd74e145ed0f059", "date": "2019-11-22 13:33:26 -0500", "subject": "Add _FMT() logging macro variants.", "body": "Using the same macros for formatted and unformatted logging had several disadvantages.\n\nFirst, the compiler was unable to verify the format string against the parameters.\n\nSecond, legitimate % characters in messages were being interpreted as format characters with garbage output ensuing.\n\nAdd _FMT() variants and update all call sites to use the correct variant." }, { "commit": "99edcca55b3b8b1d144bdeb32c4d98c8ee13bf34", "date": "2019-11-22 09:18:24 -0500", "subject": "Add missing linefeeds." }, { "commit": "29ab06cf133b6a3d18d7bc39507f92a45927b2e8", "date": "2019-11-21 17:30:18 -0500", "subject": "Add missing static keyword." }, { "commit": "f01aa5861d341a19d85ddf3d7307c250994fecd4", "date": "2019-11-21 17:28:03 -0500", "subject": "Forbid % character in parameters.", "body": "This character causes problems in C and in the shell if we try to output it in an error message.\n\nForbid it completely and spell it out in error messages to avoid strange effects.\n\nThere is likely a better way deal with the issue but this will do for now." }, { "commit": "6be9c7b63a61464d60d15133662eb44776401b1d", "date": "2019-11-21 17:20:42 -0500", "subject": "Don't log secrets in cipherBlock module.", "body": "In practice there are lots of ways secrets can be leaked (e.g. info load, protocol) but at least remove this instance." }, { "commit": "c524ec4f95462bfbc1484e139d754280ec05e94c", "date": "2019-11-21 16:06:27 -0500", "subject": "Remove obsolete integration tests from mock/all.", "body": "The protocol timeout tests have been superceded by unit tests.\n\nThe TEST_BACKUP_RESUME test point was incorrectly included into a number of tests, probably a copy pasto. It didn't hurt anything but it did add 200ms to each test where it appeared.\n\nCatalog and control version tests were redundant. The database version and system id tests covered the important code paths and the C code gets these values from a lookup table.\n\nFinally, fix an incomplete update to the backup.info file while munging for tests." }, { "commit": "53cd530bbf3921c9500963d12393344425574d08", "date": "2019-11-21 12:09:24 -0500", "subject": "Safely initialize manifest object.", "body": "Using a designated initializer is safer than zeroing the struct. It is also better for debugging because Valgrind should be able to detect access to areas that are not initialized due to alignment." }, { "commit": "270f9496e432109b243e8db5d497805f72c56d91", "date": "2019-11-21 12:08:32 -0500", "subject": "Add manifestMove()." }, { "commit": "c5a6631d2791ca5ae69a6178fac758b6c96f9781", "date": "2019-11-21 11:44:40 -0500", "subject": "Rearrange manifest module.", "body": "Put functions with related functions, move getters above the helper functions, and rename manifestPgPath() to manifestPathPg()." }, { "commit": "9f71a019c815af58bdd10ca2ceaaf6f1506fb560", "date": "2019-11-21 10:55:03 -0500", "subject": "Allow storageInfo() to operate outside the base storage path.", "body": "It is occasionally useful to get information about a file outside of the base storage path. storageLocal() can be used in some cases but when the storage is remote is doesn't seem worth creating a separate storage object for adhoc info requests.\n\nstorageInfo() is a read-only operation so this seems pretty safe. The noPathEnforce parameter will make auditing exceptions easy." }, { "commit": "d3b1897625c5b200724fb087cedd975fce07672f", "date": "2019-11-21 10:34:32 -0500", "subject": "Allow adhoc enforcement in storagePath().", "body": "The ability to disable enforcement (i.e., the requested absolute path is within the storage path) globally will be removed after the Perl migration.\n\nThe feature will still be needed occasionally so allow it in an adhoc fashion." }, { "commit": "e1dad720a126e2145718ccc78614727fa67cd619", "date": "2019-11-21 10:21:35 -0500", "subject": "Rename storagePath() to storageP() in places where it was missed.", "body": "Correct this since it will be enforced in a subsequent patch." }, { "commit": "cef9f0f37f33fe46ffcb229535a82479700b8de2", "date": "2019-11-21 09:40:15 -0500", "subject": "Process . in strPathAbsolute().", "body": "A . in a link will always lead to an error since the destination will be inside PGDATA. However, it is accepted symlink syntax so it's better to resolve it and get the correct error message.\n\nAlso, we may have other uses for this function in the future." }, { "commit": "a6fc0bf2ca778844448885192f11d17bf933b551", "date": "2019-11-21 08:15:37 -0500", "subject": "Add contributor." }, { "commit": "3d2c0b0f3bcd4fbae0409a374f13d1aebb3bba81", "date": "2019-11-20 14:24:58 -0500", "subject": "Fix inverted page checksum load/save.", "body": "This was not caught before because the on-disk format was correct even though the representation in memory was inverted." }, { "commit": "63c4c148361c75ec53d2d6b53a3ec69389b925c3", "date": "2019-11-19 20:52:01 -0500", "subject": "Fix lcov build in Vagrantfile.", "body": "-q was being instead of -s for silent mode which caused the build to fail." }, { "commit": "5f034714453f28a04d8e48828e8ee53a61401c4e", "date": "2019-11-19 15:56:13 -0500", "subject": "Remove --force option from stanza-create documentation.", "body": "This should have been removed when the support for the option was removed in c7333190.\n\nThe option cannot be removed entirely because we don't want to error in the case where --force was specified but the stanza is valid." }, { "commit": "c5ee56a724fe6c49b7e3496090ff1bf6d73e33f8", "date": "2019-11-19 10:34:14 -0500", "subject": "Markdown update missed in 1db9e3b1." }, { "commit": "20162ed3feec8d3de5de8e2cca7bb065a47bcc67", "date": "2019-11-19 10:32:18 -0500", "subject": "Fix typo." }, { "commit": "74317f0ab6024d6c3a2f9635677f26489786e166", "date": "2019-11-17 17:35:03 -0500", "subject": "Use variable parameter macros to make the storage interface tidier.", "body": "Many functions don't take optional parameters, so tacking the struct onto the end was pretty burdensome.\n\nAdd macros to get the interface under a variety of circumstances to make this practical." }, { "commit": "1db9e3b144d886ec4159176312345d154b7178b8", "date": "2019-11-17 15:10:40 -0500", "subject": "Remove *MP() macros variants.", "body": "Adding a dummy column which is always set by the P() macro allows a single macro to be used for parameters or no parameters without violating C's prohibition on the {} initializer.\n\n-Wmissing-field-initializers remains disabled because it still gives wildly different results between versions of gcc." }, { "commit": "5c65d88f6254176c257f0bf58ca5c9f59bb99177", "date": "2019-11-17 14:17:03 -0500", "subject": "Use structs to pass optional parameters to storage drivers.", "body": "New optional parameters can be added without breaking the interface and this reduces noise in the function prototypes." }, { "commit": "09e129886e10a036e75493d55625f01c34e15d85", "date": "2019-11-16 17:47:42 -0500", "subject": "Add storageInfoList() support to remote storage driver." }, { "commit": "26e1da82e7970ac03b8300da5f55ed7da1c2ab96", "date": "2019-11-16 17:32:49 -0500", "subject": "Allow zero-length substrings to be extracted from the end of a string.", "body": "The previous assert was a bit overzealous and did not allow this case. It's not very common but still occasionally useful." }, { "commit": "8a3de1e05a427bf40b7742ac476c01ef219f6b46", "date": "2019-11-16 17:30:08 -0500", "subject": "Add storageInfo() support to remote storage driver." }, { "commit": "8d6a8c3bf0401705578d05902f8e7f871f3ab266", "date": "2019-11-16 17:12:16 -0500", "subject": "Store base path for remote storage locally.", "body": "It wasn't practical for the main process to be ignorant of the remote path, and in any case knowing the path makes debugging easier.\n\nPull the remote path when connecting and pass the result of local storagePath() to the remote when making calls." }, { "commit": "6827a13f3a4b1943769601acf34676bd1f689b4b", "date": "2019-11-16 17:05:34 -0500", "subject": "Add facility for reading and writing adhoc protocol output.", "body": "Pushing output through a JSON blob is not practical if the output is extremely large, e.g. a backup manifest with 100K+ files.\n\nAdd read/write routines so that output can be returned in chunks but errors will still be detected." }, { "commit": "90e19d99bab6b448484865cb6b46fb786352009c", "date": "2019-11-16 09:38:42 -0500", "subject": "Add mock module to CentOS6/7 Travis CI testing.", "body": "This was dropped at some point but is important for integration coverage." }, { "commit": "c8db11e65bed37ec18d83b527c895b8b86c9f11b", "date": "2019-11-15 17:50:12 -0500", "subject": "Add user-id/group-id to hrnReplaceKey()." }, { "commit": "53a2d04ab0e0c6d3ef75afcef1663492d9db98e7", "date": "2019-11-15 17:48:25 -0500", "subject": "Allow \"null\" in jsonToStr()." }, { "commit": "64ddc163c95b6bc87a7589462b1b16ca70cb08bc", "date": "2019-11-15 10:50:17 -0500", "subject": "Allow cipherPassSub() to be set in Info without the constructor.", "body": "This value is not always known when the object is created so allow it to be set later." }, { "commit": "48e8942e86b1471568116dc7fe604878ca9afd70", "date": "2019-11-15 08:53:15 -0500", "subject": "Allow trailing / for relative paths in strPathAbsolute().", "body": "The trailing / does nothing but is nevertheless valid syntax." }, { "commit": "83ab272171887092df85704e27ddfec22c9f335f", "date": "2019-11-14 16:50:58 -0500", "subject": "Update varNew*() calls to Variant constant macros.", "body": "The constants created by the macros are faster and use less memory." }, { "commit": "3b879c2cb3cfdbcd03dad1d6cc898052f8d8863d", "date": "2019-11-14 16:48:41 -0500", "subject": "Filter logged command options based on the command definition.", "body": "Previously, options were being filtered based on what was currently valid. For chained commands (e.g. backup then expire) some options may be valid for the first command but not the second.\n\nFilter based on the command definition rather than what is currently valid to avoid logging options that are not valid for subsequent commands. This reduces the number of options logged and will hopefully help avoid confusion and expect log churn." }, { "commit": "c5b76d213bc24d703e7b973df171a2b01595dabc", "date": "2019-11-12 17:05:09 -0500", "subject": "Modify InfoBackupData struct to use time_t for backup start/stop times.", "body": "The uint64_t types worked but were not consistent with how timestamps are handled in other parts of the code." }, { "commit": "6f65dde8d39436a31f90030e9b3cef5cf10d04e3", "date": "2019-11-12 15:56:28 -0500", "subject": "Begin v2.20 development." }, { "commit": "2d10293d041cbbc72e4a2bac32401f6f384ecb1a", "date": "2019-11-12 15:51:28 -0500", "subject": "v2.19: C Migrations and Bug Fixes" }, { "commit": "a44c5d0315e49c42eb908a4ed0605bee0c509f6d", "date": "2019-11-12 13:12:07 -0500", "subject": "Add Strings for STORAGE_REPO_ARCHIVE and STORAGE_REPO_BACKUP.", "body": "These constants are used often enough that they deserve to have String constants rather than repeatedly calling STRDEF()." }, { "commit": "10c8eeaf6c0413da265047aeb02a047209ef9d69", "date": "2019-11-08 18:58:45 -0500", "subject": "Fix handling of repeated HTTP headers.", "body": "When HTTP headers are repeated they should be considered equivalent to a single comma-separated header rather than generating an error, which was the prior behavior." }, { "commit": "43171786336733d8e1efe672b801236fd3e2d829", "date": "2019-11-08 17:56:34 -0500", "subject": "Update MinIO to newest release.", "body": "We had some problems with newer versions so had held off on updating. Those problems appear to have been resolved.\n\nIn addition, the --compat flag is no longer required. Prior versions of MinIO required all parts of a multi-part upload (except the last) to be of equal size. The --compat flag was introduced to restore the default S3 behavior. Now --compat is only required when ETag is being used for MD5 verification, which we don't do." }, { "commit": "edcc7306a39852ddff507d384555230001442bf4", "date": "2019-11-08 09:46:00 -0500", "subject": "Add TIME parameter debug type.", "body": "Previously we were using int64_t to debug time_t but this may not be right depending on how the compiler represents time_t, e.g. it could be a float.\n\nSince a mismatch would have caused a compiler error we are not worried that this has actually happened, and anyway the worst case is that the debug log would be wonky.\n\nThe primary benefit, aside from correctness, is that it makes choosing a parameter debug type for time_t obvious." }, { "commit": "eca00e0be00bcd692b10de1b89a700f6525d51a7", "date": "2019-11-07 13:11:01 -0500", "subject": "Add building a development environment to contributing documentation.", "body": "This documentation shows how to build a development environment on Ubuntu 19.04 and should work for other Debian-based distros.\n\nNote that this document is not included in automated testing due to some unresolved issues with Docker in Docker on Travis CI. We'll address this in the future when we add contributing documentation to the website." }, { "commit": "8b682b75d2ade2e52c75b417fad2eb61150616d1", "date": "2019-11-02 10:35:48 +0100", "subject": "Allow mock integration tests for all VM types.", "body": "Previously the mock integration tests would be skipped for VMs other than the standard four used in CI. Now VMs outside the standard four will run the same tests as VM4 (currently U18)." }, { "commit": "b3e5d88304860fbcb566059d08cbf85e2c3cd95a", "date": "2019-11-02 09:59:39 +0100", "subject": "Add markdown renderer for execute-list block." }, { "commit": "7168e0744018d7d27668d59bfe9b6deafe923efa", "date": "2019-10-30 14:55:25 +0100", "subject": "Use getcwd() to construct path when WAL path is relative.", "body": "Using pg1-path, as we were doing previously, could lead to WAL being copied to/from unexpected places. PostgreSQL sets the current working directory to PGDATA so we can use that to resolve relative paths." }, { "commit": "e06db21e35f701b62c625b9f25436459b8fd5c26", "date": "2019-10-17 14:00:18 +0200", "subject": "Error when specified vm is invalid." }, { "commit": "a52faf83a502427a7079ec2bae0593b318c2594c", "date": "2019-10-17 11:56:45 +0200", "subject": "Disable code generation on dry-run." }, { "commit": "fa6a54bb4503efdc8e02a98089a935b6d52a3797", "date": "2019-10-16 17:05:24 +0200", "subject": "Update last tests that required sudo.", "body": "All tests should now run in a sudo-less environment." }, { "commit": "48bd9e22f124163aa61574027476af8b3737dc39", "date": "2019-10-16 15:48:33 +0200", "subject": "C test harness refactor.", "body": "Consolidate setting configuration into hrnInit() and rename other functions for consistency.\n\nSplit out internal functions into a new header." }, { "commit": "b4aeb217e665a166cb75577e07f80b01bc0345d1", "date": "2019-10-15 17:19:42 +0200", "subject": "Allow parameters to be passed to travis.pl.", "body": "This makes configuring tests easier.\n\nAlso add a parameter for tests that require sudo. This should be retired at some point but some tests still require it." }, { "commit": "f3b2189659a7f0e8e660c1be42175f0ff82cffb0", "date": "2019-10-15 13:27:03 +0200", "subject": "Remove package build sudo into the container.", "body": "By running this in the container we no longer need sudo on the host system for package builds." }, { "commit": "67dde73727d2b30ce3f329054398a1f516a65899", "date": "2019-10-14 11:51:14 +0200", "subject": "Run tests in tmpfs.", "body": "This will likely improve performance, but it also makes the filesystem consistent between platforms.\n\nA number of tests were failing on shiftfs, which was the default for arm64 on Travis." }, { "commit": "b1dc5a6d269b858960061e59f3885303d2417051", "date": "2019-10-13 14:02:52 -0400", "subject": "Add disk/mem info for Travis.", "body": "This is helpful for determining the virtual machine resources." }, { "commit": "64c6102a1536ba94f4957fe950038f31525748b5", "date": "2019-10-12 14:47:01 -0400", "subject": "Update packages required for Travis-CI builds.", "body": "These packages are expected on the arm64 build even though we are using the same os image as amd64. It appears the arm64 image is slimmer." }, { "commit": "35eef2b8676115036b9d68b14223629dd1e1b773", "date": "2019-10-12 14:16:22 -0400", "subject": "Use a lower user id for posix storage tests.", "body": "arm64 was not happy with the old user id, so use something smaller." }, { "commit": "827e95944a2f13301fa14af5a8f11324e17a1cd9", "date": "2019-10-12 13:52:45 -0400", "subject": "Use < 0 and > 0 for strCmp() tests.", "body": "Using -1 and 1 was a bit sloppy since the spec only guarantees that the values will be < 0 and > 0.\n\nFound on arm64 where the values were -64 and 64." }, { "commit": "a2fa1d04b0cbd6dbedaa2447273371c20bd46e56", "date": "2019-10-12 11:26:13 -0400", "subject": "Update container images to PostgreSQL 12 GA." }, { "commit": "397a41e0f9f82987952912b8127a5e6929e29752", "date": "2019-10-12 11:24:55 -0400", "subject": "Add Ubuntu 19.04 container definition." }, { "commit": "93656db186e6da286bd704dc65235fcc209bb19d", "date": "2019-10-12 11:24:21 -0400", "subject": "Update lcov to 1.14.", "body": "1.13 is not compatible with gcc 8 which is what ships with newer distributions. Build from source to get a more recent version.\n\n1.13 is not compatible with gcc 9 so we'll need to address that at a later date." }, { "commit": "11c7c8fabb1e3eb9dadce2231fbb9cb3d76d553f", "date": "2019-10-12 09:45:18 -0400", "subject": "Remove pgbackrest test user.", "body": "This user was created before we tested in containers to ensure isolation between the pg and repo hosts which were then just directories. The downside is that this resulted in a lot of sudos to set the pgbackrest user and to remove files which did not belong to the main test user.\n\nContainers provide isolation without needing separate users so we can now safely remove the pgbackrest user. This allows us to remove most sudos, except where they are explicitly needed in tests.\n\nWhile we're at it, remove the code that installed the Perl C library (which also required sudo) and simply add the build path to @INC instead." }, { "commit": "6f0e7f00af3e83d071713a671a6f155cd1fa3b88", "date": "2019-10-12 09:26:19 -0400", "subject": "Fix recovery test failing in PostgreSQL 12.0.", "body": "This test was not creating recovery.signal when testing with --type=preserve. The preserve recovery type only keeps existing files and does not create any.\n\nRC1 was just ignoring recovery.signal and going right into recovery. Weirdly, 12.0 used restore_command to do crash recovery which made the problem harder to diagnose, but this has now been fixed in PostgreSQL and should be released in 12.1." }, { "commit": "59a4a0c1b1726812126a13e57bee29689b0a8fdc", "date": "2019-10-11 13:14:47 -0400", "subject": "Add a warning about jq rounding numbers to the documentation." }, { "commit": "db1dc4f275667903f560c140c2c61cce7f9b4020", "date": "2019-10-11 13:03:52 -0400", "subject": "Remove pretty-printing from jsonFromKv() and jsonFromVar().", "body": "Now that pretty-printing has been removed from the info command it no longer has a purpose, so remove it." }, { "commit": "d90b2724f883686afdae386c1350abfdcfb0d5fa", "date": "2019-10-11 12:56:03 -0400", "subject": "JSON output from the info command is no longer pretty-printed.", "body": "Monitoring systems can more easily ingest the JSON without linefeeds.\n\nExternal tools such as jq can be used to pretty-print if desired." }, { "commit": "29725805668656a920283401ef144a98cee2c5f9", "date": "2019-10-11 12:38:03 -0400", "subject": "Remove info expect tests from mock/all and mock/stanza.", "body": "These tests are redundant now that we have full coverage in the unit tests are are not worth maintaining anymore." }, { "commit": "e4408c7dd390b13bb022b29e8f0b151fa0526362", "date": "2019-10-11 12:28:47 -0400", "subject": "Refactor --pre option in documentation.", "body": "Mark all pre commands as skip so they won't be run again after the container is built.\n\nEnsure that pre commands added to the container are run as the container user if they are not intended to run as root." }, { "commit": "642ce003c8e8f59ec67d3bda4c18decb4aa21ae2", "date": "2019-10-11 11:32:51 -0400", "subject": "Don't autogenerate embedded libc code by default.", "body": "This is only needed when new code is added to the Perl C library, which is becoming rare as the migration progresses.\n\nAlso, the code will vary slightly based on the Perl version used for generation so for normal users it is just noise." }, { "commit": "bcd3e4953aa1c8e8ccfadd141f38473b2ecbaff6", "date": "2019-10-10 22:10:20 -0400", "subject": "Make perl/exec test container required.", "body": "This test fails in some cases when --vm=none but it's not worth investigating since this code will be going away soon." }, { "commit": "e3d87ebace36984728ae571a77ca1e11ae383d5b", "date": "2019-10-10 19:43:42 -0400", "subject": "Fix mismatched timezone in expect test.", "body": "Also run the --vm-none tests in a non-UTC timezone to prevent regressions." }, { "commit": "6db4e59a6631eb47758fd0dff772e2ca086e924b", "date": "2019-10-10 16:13:43 -0400", "subject": "Allow tests that use ports to run in parallel.", "body": "Set the test index in the C unit test code so it can assign port numbers that won't conflict between tests." }, { "commit": "13fcbb24e940084710acc13627515522215369dc", "date": "2019-10-10 15:09:11 -0400", "subject": "Fix container test path being used when --vm=none." }, { "commit": "e732720d855cffa0e4bb80997529254323fd7767", "date": "2019-10-10 11:28:37 -0400", "subject": "Disable docker service for --vm=none test.", "body": "Starting this service wastes time and this will help catch any regressions where containers are being built when they should not be." }, { "commit": "9a3ba649e111f3529bb6fe09238d9fcb81454487", "date": "2019-10-10 11:25:59 -0400", "subject": "Remove code to generate .travis.yml.", "body": "Most of the logic has been moved to test/travis.pl so there wasn't much purpose to this code anymore." }, { "commit": "696e6a7c444ba0ec3a28f8762b6a7266751faa0f", "date": "2019-10-10 11:21:09 -0400", "subject": "Don't require sudo to run tests with --vm=none.", "body": "Run these tests without sudo privileges on Travis to prevent regressions." }, { "commit": "50d1d0a4e8f232842a27c4998cb6af3f1d906bf3", "date": "2019-10-10 09:28:50 -0400", "subject": "Move release note to correct section." }, { "commit": "47e0ba2502e5c3e8eb088ffcbd774144741b599b", "date": "2019-10-10 09:27:46 -0400", "subject": "Fix remote timeout in delta restore.", "body": "When performing a delta restore on a largely unchanged cluster the remote could timeout if no files were fetched from the repository within protocol-timeout.\n\nAdd keep-alives to prevent remote timeout." }, { "commit": "82baf1e521e2a1ed7b27403478aa4a1dc4a6afcc", "date": "2019-10-10 08:33:40 -0400", "subject": "Fix typo." }, { "commit": "7f369006b5c812d0d3e05f4735d03623c3873b45", "date": "2019-10-09 15:03:03 -0400", "subject": "Add gcc 9 support.", "body": "A number of tests have been updated and Fedora 30 has been added to the test suite so the unit tests can run on gcc 9.\n\nStop running unit tests on co6/7 since we appear to have ample unit test coverage." }, { "commit": "528f4c4347d89a0c05b0a9521e8ef91432616b0c", "date": "2019-10-09 14:38:24 -0400", "subject": "Remove dependency on aws cli for testing.", "body": "This tool was only being used it a few places but was a pretty large dependency.\n\nRework the forceStorageMove() code using our storage layer and replace one aws cli cp with a storage put.\n\nAlso, remove the Dockerfile that was once used to build the Scality S3 test container." }, { "commit": "ac870b42de5a51436a4a08c6ad405ac4f1dd0763", "date": "2019-10-09 08:43:30 -0400", "subject": "Refactor error logic to make sure Db object gets freed immediately.", "body": "Because db can be reset to NULL on an error in the try block we need nested try blocks to ensure that db is non-NULL and can be freed on an error after being created.\n\nThis is not a production issue because the db will be freed when the temp mem context is freed, but it does affect reproducibility in the tests and is a bit tidier." }, { "commit": "61c4f64895497da4cbe1e9225f274d255dd5133e", "date": "2019-10-08 18:56:55 -0400", "subject": "Be smarter about which packages are loaded for testing.", "body": "Now that our tests are more diversified it makes sense to load only the packages that are needed for each test.\n\nMove the package loads from .travis.yaml to test/travis.pl where we have more control over what is loaded." }, { "commit": "a1c13a50dd0886076a1f32e58901eec271d9ec9a", "date": "2019-10-08 18:04:09 -0400", "subject": "The check command is implemented entirely in C.", "body": "Note that building the manifest on each host has been temporarily removed.\n\nThis feature will likely be brought back as a non-default option (after the manifest code has been fully migrated to C) since it can be fairly expensive." }, { "commit": "ecae5e34e5063838bb55d55b1752c6b2eaaaa75b", "date": "2019-10-08 17:30:33 -0400", "subject": "Update expire command to use C backup.info reconstruct.", "body": "This was still being done in Perl until the C Manifest object was available." }, { "commit": "4e4d1f414a153232079f2e2e9ce203ffc5a2362c", "date": "2019-10-08 16:04:27 -0400", "subject": "Add infoBackupLoadFileReconstruct() to InfoBackup object.", "body": "Check the backup.info file against the backup path. Add any backups that are missing and remove any backups that no longer exist.\n\nIt's important to run this before backup or expire to be sure we are using the most up-to-date list of backups." }, { "commit": "b2825b82c7b8cf140969dd4e9fd04552e921bbfc", "date": "2019-10-08 15:47:47 -0400", "subject": "Add missing header file." }, { "commit": "6d8d0eeba71fa7cd00af6e40c0adf74638a371bd", "date": "2019-10-08 15:37:08 -0400", "subject": "Add pgBackRest version to Info and Manifest objects.", "body": "This was not being exposed previously because it is primarily informational, but now it is needed to reconstruct the backup.info file." }, { "commit": "38b72eded4b0f295ed1f30f849f0a99f69e396d2", "date": "2019-10-08 15:27:17 -0400", "subject": "Document how to contribute to pgBackRest.", "body": "There's a lot more to be done here, but this is a good start." }, { "commit": "a4152a0ea1dc5c28515aedf9690cab22765076cb", "date": "2019-10-08 12:29:42 -0400", "subject": "Update release instructions with a reminder to install latex.", "body": "Latex is no longer installed by default in the Vagrantfile." }, { "commit": "45881c74aeff4bb25559ec0254fa7fc1960d9cab", "date": "2019-10-08 12:06:30 -0400", "subject": "Allow most unit tests to run outside of a container.", "body": "Three major changes were required to get this working:\n\n1) Provide the path to pgbackrest in the build directory when running outside a container. Tests in a container will continue to install and run against /usr/bin/pgbackrest.\n\n1) Set a per-test lock path so tests don't conflict on the default /tmp/pgbackrest path. Also set a per-test log-path while we are at it.\n\n2) Use localhost instead of a custom host for TLS test connections. Tests in containers will continue to update /etc/hosts and use the custom host.\n\nAdd infrastructure and update harnessCfgLoad*() to get the correct exe and paths loaded for testing.\n\nSince new tests are required to verify that running outside a container works, also rework the tests in Travis CI to provide coverage within a reasonable amount of time. Mainly, break up to doc tests by VM and run an abbreviated unit test suite on co6 and co7." }, { "commit": "77b0c6c993a0e6ff45a6a99f343c3709a016d152", "date": "2019-10-08 10:35:47 -0400", "subject": "Add missing spaces." }, { "commit": "5394893e33a844991a913e3b3c8874b435ac88d1", "date": "2019-10-03 11:14:22 -0400", "subject": "Remove pgPath parameter from pgControlFromFile().", "body": "In practice this function is always used with storagePg*() so pgPath is known." }, { "commit": "887ec97e0743f758a0a2d2222cd1553b91f0908d", "date": "2019-10-03 06:58:52 -0400", "subject": "Document maximum version for auto-stop option." }, { "commit": "008ec6b05c631adf08cba312d6bab972f02881ef", "date": "2019-10-01 17:04:26 -0400", "subject": "Begin v2.19 development." }, { "commit": "4629237d6a308a250cd52fff49693cd0a1069253", "date": "2019-10-01 16:02:07 -0400", "subject": "v2.18: PostgreSQL 12 Support" }, { "commit": "29e132f5e928298e9be135d76674f2016b122029", "date": "2019-10-01 13:20:43 -0400", "subject": "PostgreSQL 12 support.", "body": "Recovery settings are now written into postgresql.auto.conf instead of recovery.conf. Existing recovery_target* settings will be commented out to help avoid conflicts.\n\nA comment is added before recovery settings to identify them as written by pgBackRest since it is unclear how, in general, old settings will be removed.\n\nrecovery.signal and standby.signal are automatically created based on the recovery settings." }, { "commit": "6be7e6fde54f2dc3edbed802efc3f5cb1e050fd2", "date": "2019-10-01 10:25:08 -0400", "subject": "Fix misplaced String declarations." }, { "commit": "309ae66e2fbd128b54f0859b231c14f6ab1518c4", "date": "2019-10-01 08:47:56 -0400", "subject": "Remove unneeded static declarations and use sizeof() where appropriate." }, { "commit": "f96c54c4ba0e526cda4cf9bed5cc1231b1d819b5", "date": "2019-09-30 12:39:38 -0400", "subject": "Add info command set option for detailed text output.", "body": "The additional details include databases that can be used for selective restore and a list of tablespaces and symlinks with their default destinations.\n\nThis information is not included in the JSON output because it requires reading the manifest which is too IO intensive to do for all manifests. We plan to include this information for JSON in a future release." }, { "commit": "33ec5a3aacdfe0dd258463c0cbcd43f0d155152e", "date": "2019-09-29 09:05:55 -0400", "subject": "Sort lists where it might help performance.", "body": "Most of these lists should be quite small with the exception of the list in get.c, but it doesn't cost much to sort them and may help in corner cases we have not thought of." }, { "commit": "a58635ac0285fbb3178329bdc222221fe7160380", "date": "2019-09-28 14:24:27 -0400", "subject": "Move C performance tests out of unit tests.", "body": "Performance tests were being done in unit tests until there was a better place to put them.\n\nNow there is, so move them there." }, { "commit": "f1ba428fb037eac7b6c6ea5b9f617d1ad4579026", "date": "2019-09-28 14:02:12 -0400", "subject": "Add performance test capability in C with scaling.", "body": "Scaling allows the starting values to be increased from the command-line without code changes.\n\nAlso suppress valgrind and assertions when running performance testing. Optimization is left at -O0 because we should not be depending on compiler optimizations to make our code performant, and it makes profiling more informative." }, { "commit": "004ff99a2d918fa3a5079ce9d7ff2f5b120176e3", "date": "2019-09-28 13:17:21 -0400", "subject": "Identify Perl performance test by appending -perl.", "body": "This is intended to differentiate the upcoming C performance tests from the Perl performance tests that will eventually be migrated." }, { "commit": "cb62bebadf62613b770f79cd4fd43e20ec7db10c", "date": "2019-09-28 10:08:20 -0400", "subject": "Use bsearch() on sorted lists rather than an iterative method.", "body": "bsearch() is far more efficient than an iterative approach except in the most trivial cases.\n\nFor now insert will reset the sort order to none and the list will need to be resorted before bsearch() can be used. This is necessary because item pointers are not stable after a sort, i.e. they can move around. Until lists are stable it's not a good idea to surprise the caller by mixing up their pointers on insert." }, { "commit": "d3d2a7cd8606be9696957eb052ca6569db1a8167", "date": "2019-09-28 09:57:06 -0400", "subject": "Add line number and fix spacing in TEST_LOG*() macros." }, { "commit": "afc483ef86aefe2cf8f057b6159af2c54f77c28b", "date": "2019-09-27 13:37:59 -0400", "subject": "Clarify which timeline should be used for timeline integration test." }, { "commit": "0a4122c77dc2e3fb866b95be73c2831530b2def1", "date": "2019-09-27 13:34:59 -0400", "subject": "Add reviewer." }, { "commit": "6355451870c90be346a378ef8b301f182c635edb", "date": "2019-09-27 13:33:14 -0400", "subject": "Fix old option name in documentation." }, { "commit": "d82102d6ef5445e5c96e47a095210f36a618b800", "date": "2019-09-27 13:04:36 -0400", "subject": "Add explicit promotes to recovery integration tests.", "body": "PostgreSQL 12 will shutdown in these cases which seems to be the correct action (according to the documentation) when hot_standby = off, but older versions are promoting instead. Set target_action explicitly so all versions will behave the same way.\n\nThis does beg the question of whether the PostgreSQL 12 behavior is wrong (though it matches the docs) or the previous versions are." }, { "commit": "833d0da0d96036ada9e2397e2b1484d2032c25fa", "date": "2019-09-27 12:29:33 -0400", "subject": "Store recovery file name in integration when testing preserve recovery.", "body": "This makes the test a little more maintainable and is friendly with the changes needed for PostgreSQL 12." }, { "commit": "80eb561cafc1af645e689cca865158e4336c143d", "date": "2019-09-27 09:45:11 -0400", "subject": "Add missing PostgreSQL 11 control/WAL versions in Perl tests.", "body": "These values don't seem to be used for testing but better to be tidy." }, { "commit": "d6a6d93a041af1b8e333d8e9b68b151ae43e564d", "date": "2019-09-27 09:35:59 -0400", "subject": "Add PostgreSQL 12 to u18 container.", "body": "This does not add PostgresQL 12 support; it simply adds PostgreSQL 12 to the u18 container for development and testing." }, { "commit": "03a7bda511b293cf40fd8324951ace1252d40ac2", "date": "2019-09-27 09:19:12 -0400", "subject": "Refactor recovery file generation.", "body": "Separate the generation of recovery values and formatting them into recovery.conf format. This is generally a good idea, but also makes the code ready to deal with a different recovery file in PostgreSQL 12.\n\nAlso move the recovery file logic out of cmdRestore() into restoreRecoveryWrite()." }, { "commit": "cf1e96e827d154a62c0b52ff5531dd687695bf73", "date": "2019-09-27 08:50:33 -0400", "subject": "Refactor handling of ignored files in restore delta cleanup.", "body": "Replace the boolean logic with a simple list that will be checked to see if the file should be ignored." }, { "commit": "c41fb575fbef7b4ce9714986b08f48d32b719862", "date": "2019-09-26 17:39:45 -0400", "subject": "Add standby restore type.", "body": "This restore type automatically adds standby_mode=on to recovery.conf.\n\nThis could be accomplished previously by setting --recovery-option=standby_mode=on but PostgreSQL 12 requires standby mode to be enabled by a special file named standby.signal.\n\nThe new restore type allows us to maintain a common interface between PostgreSQL versions." }, { "commit": "89793368196e4073ca7137f2bf21edb385fb9ef6", "date": "2019-09-26 16:02:39 -0400", "subject": "Comment out unprivileged user documentation.", "body": "We haven't had the time to complete this documentation and it has suffered bit rot.\n\nThis prevents us from building the docs on PostgreSQL >= 11 so just comment it all out until it can be updated." }, { "commit": "451ae397bec3f3bc070c4db674cc5df61bd63498", "date": "2019-09-26 07:52:02 -0400", "subject": "The restore command is implemented entirely in C.", "body": "For the most part this is a direct migration of the Perl code into C.\n\nThere is one important behavioral change with regard to how file permissions are handled. The Perl code tried to set ownership as it was in the manifest even when running as an unprivileged user. This usually just led to errors and frustration.\n\nThe C code works like this:\n\nIf a restore is run as a non-root user (the typical scenario) then all files restored will belong to the user/group executing pgBackRest. If existing files are not owned by the executing user/group then an error will result if the ownership cannot be updated to the executing user/group. In that case the file ownership will need to be updated by a privileged user before the restore can be retried.\n\nIf a restore is run as the root user then pgBackRest will attempt to recreate the ownership recorded in the manifest when the backup was made. Only user/group names are stored in the manifest so the same names must exist on the restore host for this to work. If the user/group name cannot be found locally then the user/group of the PostgreSQL data directory will be used and finally root if the data directory user/group cannot be mapped to a name." }, { "commit": "92e48c856ac87838c479c2a454fe007cf026d4bd", "date": "2019-09-26 07:27:07 -0400", "subject": "Add missing asserts." }, { "commit": "f2781bdad4bbe2afba4a0eda7df90753c63ccf03", "date": "2019-09-25 16:38:13 -0400", "subject": "Allow documentation to be built without encryption.", "body": "This is mainly useful for testing, where an encrypted repo is a real nuisance." }, { "commit": "e968acbdd74db8f78f718cbe5bd6358107bcf822", "date": "2019-09-24 16:55:11 -0400", "subject": "Fix outdated comment.", "body": "This was probably missed when a new test was added and the timeline was updated." }, { "commit": "6af64df9b6519897a55a733583ee40a571a51ee6", "date": "2019-09-23 19:26:24 -0400", "subject": "Thoughts on repository version 6." }, { "commit": "71349c89aecdb3b158d1638d0310cdba6c96362a", "date": "2019-09-23 17:56:17 -0400", "subject": "Add TEST_TITLE() macro.", "body": "This macro displays a title for each test. A test frequently has multiple parts and it was hard to tell which subparts went together. We used ad hoc indentation to do this.\n\nAnything that is a not a title is automatically indented so manually indenting is not longer needed. This should make the tests and the test output easier to read." }, { "commit": "2fd2fe509f3039ef28766b865f3b66cc524dee04", "date": "2019-09-23 17:20:47 -0400", "subject": "Add TEST_RESULT_LOG*() and TEST_SYSTEM*() macros.", "body": "These macros encapsulate the functionality provided by direct calls to harnessLogResult() and system(). They both have _FMT() variants.\n\nThe primary advantage is that {[path]}, {[user]}, and {[group]} will be replaced with the test path, user, and group respectively. This saves a log of strNewFmt() calls and makes the tests less noisy." }, { "commit": "d3a7055ee5d290da0196ba266051846c107ddede", "date": "2019-09-23 15:15:04 -0400", "subject": "Only enable test.pl --debug-test-trace option when --debug also enabled.", "body": "The other way makes no sense and leads to compile errors since --debug-test-trace requires some code that is only enabled by --debug." }, { "commit": "072aeb810932605bb5e2b8ef64288f24913ddd04", "date": "2019-09-23 15:10:31 -0400", "subject": "Add LFs to storage list tests.", "body": "This makes the diffs easier to read when testing." }, { "commit": "c969137021da5dc03e5f95d36080f4e4fd08522b", "date": "2019-09-23 13:50:46 -0400", "subject": "Migrate backup manifest load/save to C.", "body": "The backup manifest stores a complete list of all files, links, and paths in a backup along with metadata such as checksums, sizes,\ntimestamps, etc. A list of databases is also included for selective restore.\n\nThe purpose of the manifest is to allow the restore command to confidently reconstruct the PostgreSQL data directory and ensure that\nnothing is missing or corrupt. It is also useful for reporting, e.g. size of backup, backup time, etc.\n\nFor now, migrate enough functionality to implement the restore command." }, { "commit": "5b64c93e8b1de010176b8d3927f80cc8039f4dbc", "date": "2019-09-20 17:50:49 -0400", "subject": "Add local option for cfgExecParam().", "body": "cfgExecParam() was originally written to provide options for remote processes. Remotes processes do not have access to the local config so it was necessary to pass every non-default option.\n\nLocal processes on the other hand, e.g. archive-get, archive-get-async, archive-push-async, and local, do have access to the local config and therefore don't need every parameter to be passed on the command-line. The previous way was not wrong, but it was overly verbose and did not align with the way Perl had worked.\n\nUpdate cfgExecParam() to accept a local option which excludes options from the command line which can be read from local configs." }, { "commit": "3f18040aab5707c9be9b51fe37f3464d222fceb5", "date": "2019-09-20 08:13:36 -0400", "subject": "Rename MANIFEST_FILE to BACKUP_MANIFEST_FILE.", "body": "This is a bit more descriptive and avoids a naming conflict in the new C manifest code." }, { "commit": "174cb7b3af6b40d171186060509252c256208cd6", "date": "2019-09-19 22:42:28 -0400", "subject": "Add strPathAbsolute() and strLstRemoveIdx().", "body": "strPathAbsolute() generates an absolute path from an absolute base path and an absolute/relative path.\n\nstrLstRemoveIdx() is a support function based on lstRemoveIdx()." }, { "commit": "9421493d09033efda2d5e2cc6eb60d13491beca3", "date": "2019-09-19 22:34:12 -0400", "subject": "Allow resets when generating local/remote command options.", "body": "Somehow this was left out of the original implementation, but it is particularly important for certain types of restores." }, { "commit": "e24b2e3f4dcb0a288b4e742fd0b198b768d6320a", "date": "2019-09-18 22:23:04 -0400", "subject": "Only test timestamps for files.", "body": "In general we don't care about path and link times since they are easily recreated when restoring.\n\nSo, outside of storageInfo() we don't need to bother testing them." }, { "commit": "54638e87042b2315f24abef2d7f8c5610c53762e", "date": "2019-09-18 22:17:22 -0400", "subject": "Add strLstRemove().", "body": "Allow a string to be removed from a StringList using the underlying lstRemove()." }, { "commit": "a6a42b18a9c28b1410df803d7073340b2d7d52c6", "date": "2019-09-18 22:09:49 -0400", "subject": "Use switch instead of if else tree in jsonFromKvInternal().", "body": "This is more efficient but more importantly it is easier to read." }, { "commit": "60d93df503c234730109c87114068dde4203804e", "date": "2019-09-18 07:15:16 -0400", "subject": "Use a callback to feed jobs to ProtocolParallel.", "body": "Loading jobs in advance uses a lot of memory in the case that there are millions of jobs to be performed. We haven't seen this yet, but with backup and restore on the horizon it will become the norm.\n\nInstead, use a callback so that jobs are only created as they are needed and can be freed as soon as they are completed." }, { "commit": "ce1c7b02520f2e37dfcfb283471fb4ec263b5d50", "date": "2019-09-17 21:04:38 -0400", "subject": "Ignore write errors when the ls command is writing to stdout.", "body": "It's possible (even likely) that the ls output is being piped to something like head which will exit when it gets what it needs and leave us writing to a broken pipe.\n\nIt would be better to just ignore the broken pipe error but currently we don't store system error codes." }, { "commit": "8675699d08b91c57294becfcf27dbf7ddb594c46", "date": "2019-09-16 14:09:53 -0400", "subject": "Add FAQ for time-based Point-in-Time Recovery." }, { "commit": "49b421d372144df726d71552850e55cee298a566", "date": "2019-09-16 13:56:25 -0400", "subject": "Add documentation clarifications regarding standby repositories.", "body": "Clarify that placing the repository on a standby is not a robust configuration and recommend against it." }, { "commit": "09ef03b7ef69d2760756146cad86b784b0b5d7c3", "date": "2019-09-15 08:27:38 -0400", "subject": "Add FAQ regarding backup-standby." }, { "commit": "f9c8bd31de89cc1140fe37e3996672bbb1c99934", "date": "2019-09-14 14:10:04 -0400", "subject": "Add required FreeBSD header." }, { "commit": "56bf9d0566bbb9708d1687e9d2e59be306e32dda", "date": "2019-09-14 12:21:08 -0400", "subject": "Update HINT messages to conform to new standard detailed in CODING.md." }, { "commit": "c5f496b903ab9a4fa545d5f1a0a8dae9ec5c49af", "date": "2019-09-14 11:56:29 -0400", "subject": "Rename parameter processId to processIdx in harnessFork.h for clarity." }, { "commit": "f57e119b25d73a4b33aa83b5484898c5d7e84dfb", "date": "2019-09-13 12:28:39 -0400", "subject": "Document the relationship between db-timeout and protocol-timeout." }, { "commit": "15d04ca19c0bd1aafe9d4389e8429bcc392e842d", "date": "2019-09-12 16:29:50 -0400", "subject": "Add recursion and json output to the ls command.", "body": "These features finally make the ls command practical.\n\nCurrently the JSON contains only name, type, and size. We may add more fields in the future, but these seem like the minimum needed to be useful." }, { "commit": "e45baa1830ac5251fc4284d094c3e12920e50862", "date": "2019-09-12 16:03:05 -0400", "subject": "Add sorting, filters, and recursion to storageInfoList().", "body": "These are needed for the ls command and are also useful for testing." }, { "commit": "92365fb801543f8d6d52037b1936b3cd42512238", "date": "2019-09-12 15:55:18 -0400", "subject": "Disable missing-field-initializers warnings in unit testing.", "body": "This warning gives very unpredictable results between compiler versions and seems unrealistic since most of our structs are zeroed for initialization.\n\nThis warning has been disabled in the Makefile for a long time." }, { "commit": "f809d2f008a4d8d769b72a68ffff9ef75ab9de22", "date": "2019-09-12 15:16:42 -0400", "subject": "Ignore apt-get update errors in Travis CI.", "body": "Broken vendor packages have been causing builds to break due to an error on apt-get update.\n\nIgnore errors and proceed directory to apt-get install. It's possible that we'll try to reference an expired package version and get an error anyway, but that seems better than a guaranteed hard error." }, { "commit": "506c10f7f270806aca8acecaa303bf4458463720", "date": "2019-09-12 12:04:25 -0400", "subject": "Sort and find improvements to List and StringList objects.", "body": "Push the responsibility for sort and find down to the List object by introducing a general comparator function that can be used for both sorting and finding.\n\nUpdate insert and add functions to return the item added rather than the list. This is more useful in the core code, though numerous updates to the tests were required." }, { "commit": "e4a071ce033ae53dafb35eb9ccd4daba1030064c", "date": "2019-09-12 10:56:45 -0400", "subject": "Add missing header in common/user module." }, { "commit": "b53305cc361e9978807d506e3e8ec13b3ae93511", "date": "2019-09-12 08:17:07 -0400", "subject": "Update incorrect pipelining references to connection reuse.", "body": "Connection reuse and pipelining are not the same thing and should not have been conflated.\n\nUpdate comments and release notes to reflect the correct usage." }, { "commit": "dca5b63f970be8a13cd11222f4b5a9d4ca71261e", "date": "2019-09-10 13:06:44 -0400", "subject": "Move documentation job first for Travis CI.", "body": "Since this job has been running long recently this should improved overall performance when multiple commits are queued up." }, { "commit": "f4f21d0df7217bcb583189d0fc4ecaac3faed146", "date": "2019-09-10 13:02:05 -0400", "subject": "Add groupIdFromName() and userIdFromName() to user module.", "body": "Update StorageWritePosix to use the new functions.\n\nA side effect is that storageWritePosixOpen() will no longer error when the user/group name does not exist. It will simply retain the original user/group, i.e. the user that executed the restore.\n\nIn general this is a feature since completing a restore is more important than setting permissions exactly from the source host. However, some notification of this omission to the user would be beneficial." }, { "commit": "f8d0574759340f0260f06e377da412041987f582", "date": "2019-09-10 12:29:36 -0400", "subject": "Increase process timeout and emit occasional warnings.", "body": "Travis will timeout after 10 minutes with no output. Emit a warning every 5 minutes to keep Travis alive and increase the total timeout to 20 minutes.\n\nDocumentation builds have been timing out a lot recently so hopefully this will help." }, { "commit": "e043c6b1bc388422aee9255077544c3644b8f69d", "date": "2019-09-09 07:37:57 -0400", "subject": "Update comment missed in d957acb3." }, { "commit": "1049632873d5a70cda90e5c4ed87312bfe4810d6", "date": "2019-09-08 20:11:51 -0400", "subject": "Add user module for managing system users/groups.", "body": "Centralize the management of users and groups.\n\nAlso update Posix storage driver where users/groups were already in use." }, { "commit": "d957acb36b6b50c6166d9a68b03f239cdc508fa7", "date": "2019-09-08 06:53:23 -0400", "subject": "Add function to generate PostgreSQL tablespace identifier.", "body": "In PostgreSQL >= 9.0 each tablespace data is stored in a specially named directory so different major versions can share the same tablespace path." }, { "commit": "051128ed9ee0ebc63fb35e69818c6213397a053f", "date": "2019-09-08 06:47:52 -0400", "subject": "Add test macro for comparing String to zero-terminated strings.", "body": "This macro avoids the need to wrap the first parameter in strPtr() and should improve readability." }, { "commit": "0a96764cb8daa615121069e840268e216d1983ff", "date": "2019-09-07 18:04:39 -0400", "subject": "Remove most references to PostgreSQL control and catalog versions.", "body": "The control and catalog versions were stored a variety of places in the optimistic hope that they would be useful. In fact they never were.\n\nWe can't remove them from the backup.info and backup.manifest files due to backwards compatibility concerns, but we can at least avoid loading and storing them in C structures.\n\nAdd functions to the PostgreSQL interface which will return the control and catalog versions for any supported version of PostgreSQL to allow backwards compatibility for backup.info and backup.manifest. These functions will be useful in other ways, e.g. generating the tablespace identifier in PostgreSQL >= 9.0." }, { "commit": "843a602080e13ea0f205720892f7bfee58e075fb", "date": "2019-09-07 15:41:55 -0400", "subject": "Add user/group id to storageInfo().", "body": "This is required for some operations on Posix storage." }, { "commit": "1c7c1042b4509ff3ad42dad240d895617f01d644", "date": "2019-09-07 12:32:25 -0400", "subject": "Remove extraneous semicolons and add spaces." }, { "commit": "2eb1d1fee315e1e757856d3d88eb74b8434dad74", "date": "2019-09-06 16:50:57 -0400", "subject": "Rename lstRemove() to lstRemoveIdx().", "body": "This works better with the names of upcoming functions and seems sensible even in isolation." }, { "commit": "dde0c2b0c9c9743a863b6064e7dbb69de26fa364", "date": "2019-09-06 16:43:53 -0400", "subject": "Rename INFO_MANIFEST_FILE to MANIFEST_FILE.", "body": "This was missed in 5c314df0 when the module was renamed." }, { "commit": "4d84820021ad2a96922c87263d9200aace42358f", "date": "2019-09-06 13:48:28 -0400", "subject": "Improve performance of info file load/save.", "body": "Info files required three copies in memory to be loaded (the original string, an ini representation, and the final info object). Not only was this memory inefficient but the Ini object does sequential scans when searching for keys making large files very slow to load.\n\nThis has not been an issue since archive.info and backup.info are very small, but it becomes a big deal when loading manifests with hundreds of thousands of files.\n\nInstead of holding copies of the data in memory, use a callback to deliver the ini data directly to the object when loading. Use a similar method for save to avoid having an intermediate copy. Save is a bit complex because sections/keys must be written in alpha order or older versions of pgBackRest will not calculate the correct checksum.\n\nAlso move the load retry logic to helper functions rather than embedding it in the Info object. This allows for more flexibility in loading and ensures that stack traces will be available when developing unit tests." }, { "commit": "7334f30c350b5275106b9acf28b60d999287d800", "date": "2019-09-06 13:35:28 -0400", "subject": "Add helper function for adding CipherBlock filters to groups." }, { "commit": "5c314df098ee2295af400fb0b6b4f0cccd96fb69", "date": "2019-09-05 19:53:00 -0400", "subject": "Rename infoManifest module to manifest.", "body": "The manifest is not an info file so if anything it should be called backupManifest. But that seems too long for such a commonly used object so manifest seems better.\n\nNote that unlike Perl there is no storage manifest method so this stands as the only manifest in the C code, as befits its importance." }, { "commit": "8df7d68c8dca2c61b665bbbd1f26800c0dca3ae8", "date": "2019-09-03 18:28:53 -0400", "subject": "Fix sudo missed in \"Build pgBackRest as an unprivileged user\".", "body": "286a106a updated the documentation to build pgBackRest as an unprivileged user, but the wget command was missed. This command is not actually run, just displayed, because the release is not yet available when the documentation is built.\n\nUpdate the wget command to run as the local user." }, { "commit": "005684bf1f55206f122e1d0fcb4164cc84875ff5", "date": "2019-09-03 17:53:50 -0400", "subject": "Begin v2.18 development." }, { "commit": "ce2bf2999892f689001b084af4d5feb63dc9b402", "date": "2019-09-03 16:39:32 -0400", "subject": "v2.17: C Migrations and Bug Fixes" }, { "commit": "0b5720c642c040e16373f72a9058df094d05ca10", "date": "2019-09-03 14:34:49 -0400", "subject": "Fix yum.p.o package being installed when custom package specified.", "body": "The {[os-type-is-centos]} expression was missing parens which meant \"and\" expressions built on it would always evaluate true if the os-type was centos6." }, { "commit": "7d8068f27b6b695f9616fd985517692236dda47d", "date": "2019-09-03 12:30:45 -0400", "subject": "Don't decode manifest data when it is generated on a remote.", "body": "Decoding a manifest from the JSON provided by C to the hash required by Perl is an expensive process. If manifest() was called on a remote it was being decoded into a hash and then immediately re-encoded into JSON for transmission over the protocol layer.\n\nInstead, provide a function for the remote to get the raw JSON which can be transmitted as is and decoded in the calling process instead.\n\nThis makes remote manifest calls as fast as they were before 2.16, but local calls must still pay the decoding penalty and are therefore slower. This will continue to be true until the Perl storage interface is retired at the end of the C migration.\n\nNote that for reasonable numbers of tables there is no detectable difference. The case in question involved 250K tables with a 10 minute decode time (which was being doubled) on a fast workstation." }, { "commit": "1e55b876206c73d0ce32424814d100ef82d8da05", "date": "2019-09-03 07:49:04 -0400", "subject": "Add more commonly-used buffer constants." }, { "commit": "7ade3fc1c31f09425547d1869e82863582b1b137", "date": "2019-09-02 21:09:43 -0400", "subject": "Move constants from the infoManifest module to the infoBackup module.", "body": "These constants should be kept separate because the implementation of any info file might change in the future and only the interface should be expected to remain consistent.\n\nIn any case, infoBackup requires Variant constants while infoManifest uses String constants so they are not shareable. Modern compilers should combine the underlying const char * constants." }, { "commit": "3a28b68b8bde996252ad8941107744c74a062453", "date": "2019-09-02 19:06:12 -0400", "subject": "Disable S3 and encryption on u18 integration tests for mock/all/1.", "body": "This test is commonly used for sanity checking but the combination of S3 and encryption makes it hard to use and encourages temporary changes to make it usable.\n\nAcknowledge this and disable S3 and encryption for this test and move them to mock/all/2." }, { "commit": "05abab5e72e2e4d5d394b79533621dcf06d1f324", "date": "2019-08-30 14:36:02 -0400", "subject": "Add OBJECT_DEFINE_MOVE() macro.", "body": "The object *Move() functions are very repetitive so replace them with a macro that works similarly to OBJECT_DEFINE_FREE()." }, { "commit": "d1675b7e914a3e25a3d6cff2c73f36f69ec9f729", "date": "2019-08-28 10:46:54 -0400", "subject": "Add ioReadLineParam() to allow return on eof.", "body": "ioReadLine() errors on eof because it has previously been used only for protocol reads.\n\nReturning on eof is handy for reading lines from files where eof is not considered an error." }, { "commit": "a605117a2329965d65f985b4b8e991a5267416c2", "date": "2019-08-28 10:36:21 -0400", "subject": "Add required header.", "body": "Apparently this header is already included everywhere convert.h is included." }, { "commit": "8074ca6a2613f6b9310654b5e0f5c468ae7821e8", "date": "2019-08-26 12:30:22 -0400", "subject": "Fix typos in variable names." }, { "commit": "4a88791a0af78ba6f5496ec4e4351e9726662546", "date": "2019-08-26 12:29:43 -0400", "subject": "Fix typos in the release notes." }, { "commit": "545ccfa8786b631476c232a1d78791687e638432", "date": "2019-08-26 12:26:00 -0400", "subject": "Fix typos in the documentation." }, { "commit": "08bac74d38b126515e2620cdf129cd4cbd53f6e8", "date": "2019-08-26 12:20:51 -0400", "subject": "Fix typo in stack trace message." }, { "commit": "c2771e5469ecd94899243e86668a4bcc0d2c65f5", "date": "2019-08-26 12:05:36 -0400", "subject": "Fix comment typos.", "body": "This includes some variable names in tests which don't seem important enough for their own commits." }, { "commit": "22aa532be1be83c5b1df8db5fa85047e1255a789", "date": "2019-08-26 11:37:21 -0400", "subject": "Add storage tests for files beginning with dots.", "body": "Prevent a regression of the issue fixed in f88012ce by adding some tests." }, { "commit": "8c9df8c290f760b6a1f8a6a0acb6b4d9b8fa4056", "date": "2019-08-26 11:35:35 -0400", "subject": "Fix typo in httpClientReponseHeader() function name." }, { "commit": "d1cc22f886a865d5b7e0c3e699e4fbe89c11aade", "date": "2019-08-26 11:25:14 -0400", "subject": "Fix typo in CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE macro name." }, { "commit": "01c2669b9764491ec3ca96ffd0de6676bef9e5dc", "date": "2019-08-23 07:47:54 -0400", "subject": "Fix exclusions for special files.", "body": "Prior to 2.16 the Perl manifest code would skip any file that began with a dot. This was not intentional but it allowed PostgreSQL socket files to be located in the data directory. The new C code in 2.16 did not have this unintentional exclusion so socket files in the data directory caused errors.\n\nWorse, the file type error was being thrown before the exclusion check so there was really no way around the issue except to move the socket files out of the data directory.\n\nSpecial file types (e.g. socket, pipe) will now be automatically skipped and a warning logged to notify the user of the exclusion. The warning can be suppressed with an explicit --exclude." }, { "commit": "2862f480cd1712ee9c188c28d79f2f9ed1bb9c6b", "date": "2019-08-23 07:24:25 -0400", "subject": "Add special file type to storageInfo().", "body": "There's not much we can do with special files, but higher level logic can at least exclude them gracefully rather than throwing a hard error." }, { "commit": "04e4fde5733bbe885ef94098f0114a3a160a88e5", "date": "2019-08-22 10:28:08 -0400", "subject": "Remove unneeded strFree() in storagePosixInfoListEntry().", "body": "This strFree() was the primary culprit in the performance issue fixed in 9eaeb33c.\n\nSince the parent mem context is now freed regularly, this strFree() performs better, but still adds time so removing it seems best." }, { "commit": "f88012cef3acc29fb5311c73ea1a84c1409d88ee", "date": "2019-08-22 10:18:34 -0400", "subject": "Fix regexp to ignore ./.. directories in the Posix driver.", "body": "In versions <= 2.15 the old regexp caused any file or directory beginning with . to be ignored during a backup. This has caused behavioral differences in 2.16 because the new C code correctly excludes ./.. directories.\n\nThis Perl code is only used for testing now, but it should still match the output of the C functions." }, { "commit": "c002a2ce2fb7a1bc4bbeaa5dee2f3e7d719ccc24", "date": "2019-08-21 19:45:48 -0400", "subject": "Move info file checksum to the end of the file.", "body": "Putting the checksum at the beginning of the file made it impossible to stream the file out when saving. The entire file had to be held in memory while it was checksummed so the checksum could be written at the beginning.\n\nInstead place the checksum at the end. This does not break the existing Perl or C code since the read is not order dependent.\n\nThere are no plans to improve the Perl code to take advantage of this change, but it will make the C implementation more efficient." }, { "commit": "c733319063bbc9d67ba99b96c178f1d9f863b8fe", "date": "2019-08-21 16:26:28 -0400", "subject": "The stanza-create/update/delete commands are implemented entirely in C." }, { "commit": "53f27da3a6d770608de6aa6059c40526b83b31dd", "date": "2019-08-21 15:41:52 -0400", "subject": "Add checkDbConfig() to compare pgBackRest/PostgreSQL configs.", "body": "Checking the PostgreSQL-reported path and version against the pgBackRest configuration helps ensure that pgBackRest is operating against the correct cluster.\n\nIn Perl this functionality was in the Db object, but check seems like a better place for it in C." }, { "commit": "8b93fdf3493d96fcbbc127604b502d246928ec8e", "date": "2019-08-21 15:26:52 -0400", "subject": "Add storagePg*() variants to get storage for a specified host id.", "body": "Previously the host id to use was pulled from the host-id option or defaulted to 1.\n\nThe stanza, check, and backup commands will all need the ability to address a specified pg host, so add functions to make that possible." }, { "commit": "fa640f22add9af88c2ddd584812d8fde93c8f8c5", "date": "2019-08-21 15:12:00 -0400", "subject": "Allow Info* objects to be created from scratch in C.", "body": "Previously, info files (e.g. archive.info, backup.info) were created in Perl and only loaded in C.\n\nThe upcoming stanza commands in C need to create these files so refactor the Info* objects to allow new, empty objects to be created. Also, add functions needed to initialize each Info* object to a valid state." }, { "commit": "aa6f7eb862f71bf0b8f64d3c5e3d67903b048214", "date": "2019-08-21 14:14:30 -0400", "subject": "Fix comment indents." }, { "commit": "71d96531f8b581d460ff24a229b676607fc8992b", "date": "2019-08-21 12:10:09 -0400", "subject": "Fix comment typo." }, { "commit": "c4533765fb5cd4b72f9fcb27f53db2a30165b9b2", "date": "2019-08-21 11:59:51 -0400", "subject": "Add Db object getters missed in e4901d50.", "body": "dbOpen() loaded the version and data directory but there was no way to get the data externally." }, { "commit": "27e823581201374df831abc4cf299ce4da29b910", "date": "2019-08-21 11:41:36 -0400", "subject": "Add repoIsLocalVerify() to verify repository locality.", "body": "Some commands can only be run on a host where the repository is local. This function centralizes the check and error." }, { "commit": "6a09d9294d0ef13158fbc96c9d38a28ac7a6f150", "date": "2019-08-21 11:29:30 -0400", "subject": "Require storage when calling pgControlFromFile().", "body": "Previously storageLocal() was being used internally but loading pg_control from remote storage is often required.\n\nAlso, storagePg() is more appropriate than storageLocal() for all current usage." }, { "commit": "286a106ae4932ae8213d62528de934afa99c246e", "date": "2019-08-20 09:46:29 -0400", "subject": "Build pgBackRest as an unprivileged user.", "body": "pgBackRest was being built by root in the documentation which is definitely not best practice.\n\nInstead build as the unprivileged default container user. Sudo privileges are still required to install." }, { "commit": "6b5366a663f8c408e56bb2f8e5b27821898a91cc", "date": "2019-08-19 21:57:14 -0400", "subject": "Remove Perl info command invocation missed in 205525b6." }, { "commit": "f6aef6e466ccba368fb53cc00450b501f35782fc", "date": "2019-08-19 21:45:54 -0400", "subject": "Properly reset conflicting pg-* options for the remote protocol.", "body": "The pg1-socket-path and pg1-port options were not being reset when options from a higher index were being pushed down for processing by a remote. Since remotes only talk to one cluster they always use the options in index 1. This requires moving options from the original index to 1 before starting the remote. All options already set on index 1 must be removed if they are not being overwritten." }, { "commit": "9eaeb33c882b79a1cade3ce65b5d1b51b6978b05", "date": "2019-08-19 21:36:01 -0400", "subject": "Improve slow manifest build for very large quantities of tables/segments.", "body": "storagePosixInfoList() processed each directory in a single memory context. If the directory contained hundreds of thousands of files processing became very slow due to the number of allocations.\n\nInstead, reset the memory context every thousand files to minimize the number of allocations active at once, improving both speed and memory consumption." }, { "commit": "d411321d28d2c94f3376b82984981624fe30e287", "date": "2019-08-19 21:16:10 -0400", "subject": "Add reset to temp memory contexts to save memory and processing time.", "body": "Processing large datasets in a memory context can lead to high memory usage and long allocation times. Add a new MEM_CONTEXT_TEMP_RESET_BEGIN() macro that allows temp allocations to be automatically freed after N iterations." }, { "commit": "7d97d49f41e961dcaa0d54b56538d3c5a0b8f6ce", "date": "2019-08-18 20:46:34 -0400", "subject": "Add MostCommonValue object.", "body": "Calculate the most common value in a list of variants. If there is a tie then the first value passed to mcvUpdate() wins.\n\nmcvResult() can be called multiple times because it does not end processing, but there is a cost to calculating the result each time\nsince it is not stored." }, { "commit": "8aa1e552b00cb3a9cf5665812e6de782f0805675", "date": "2019-08-18 20:09:44 -0400", "subject": "Add backup type conversion functions.", "body": "Convert back and forth between the string and enum representations of backup types." }, { "commit": "3df075bf4022e84f0238591b18bc5e866d6a2aa8", "date": "2019-08-18 15:29:18 -0400", "subject": "Fix test writing \"null\" into manifest files.", "body": "\"null\" is not allowed in the manifest format (null values should be missing instead) but Perl was treating the invalid values written by this test as if they were missing.\n\nUpdate the test code to remove the values rather than setting them to \"null\"." }, { "commit": "8edc57b5819a41d43524452de378ec409d05f4d9", "date": "2019-08-18 15:19:10 -0400", "subject": "Remove RHEL package patch merged to upstream." }, { "commit": "0da3352d59c3d985d6fad7b08d28446900932857", "date": "2019-08-17 17:52:00 -0400", "subject": "Add cvtZToMode() replacement missed in 969e5817." }, { "commit": "d0dee2e26027f866c282050457d61d6907f3263f", "date": "2019-08-17 17:47:13 -0400", "subject": "Add bool rendering to jsonFromVar()." }, { "commit": "8fc1d3883b2d96d4f518ff2bfa810b082cc48b38", "date": "2019-08-17 17:43:56 -0400", "subject": "Fix expire not immediately writing into separate file after backup.", "body": "Logging stayed in the backup log until the Perl code started. Fix this so it logs to the correct file and will still work after the Perl code is removed." }, { "commit": "41b6795a374391d66dcfb2df0521f1d7acf84b3e", "date": "2019-08-17 14:15:37 -0400", "subject": "Create log directories/files with 0750/0640 mode.", "body": "The log directories/files were being created with a mix of modes depending on whether they were created in C or Perl. In particular, the C code was creating log files with the execute bit set for the user and group which was just odd.\n\nStandardize on 750/640 for both code paths." }, { "commit": "bc5385142c75f5fa390531a8ff1bd660dd1380ef", "date": "2019-08-09 15:18:42 -0400", "subject": "Change comment for searchability." }, { "commit": "382ed9282504b2adced37275937d2414632bb968", "date": "2019-08-09 15:17:18 -0400", "subject": "The start/stop commands are implemented entirely in C.", "body": "The Perl versions remain because they are still being used by the Perl stanza commands. Once the stanza commands are migrated they can be removed." }, { "commit": "fe196cb0dffacb5d2d1488e3b592cc8ba3f39a5e", "date": "2019-08-09 14:52:26 -0400", "subject": "Update RHEL patch for upstream changes.", "body": "This isn't correct, but we can't test anything else if the package doesn't build." }, { "commit": "0e7134d114af1767addce36a3857ea3fd38abc5f", "date": "2019-08-08 18:50:54 -0400", "subject": "Constify some globals." }, { "commit": "e9517dcec05c75a03fa73029250de4f5b21fdfd3", "date": "2019-08-08 18:47:02 -0400", "subject": "Add hash constants for zero-length data.", "body": "No need to calculate a hash when the data length is known to be zero. Use one of these constants instead." }, { "commit": "56c24b7669f1e636a8221106547469065eb7d161", "date": "2019-08-08 16:20:51 -0400", "subject": "Fix typo in parameter logging." }, { "commit": "1076b142e38a4960af1157bd117fa2aacee7d8e6", "date": "2019-08-08 16:15:42 -0400", "subject": "Remove Debian package patch merged to upstream." }, { "commit": "969e5817c5d29890cbe12fa95422cd8703abf8d9", "date": "2019-08-08 11:59:39 -0400", "subject": "Add cvtZToMode().", "body": "The companion function to cvtModeToZ()." }, { "commit": "1f93e147fa8563028db8b58621db4a1a12387c87", "date": "2019-08-08 11:41:49 -0400", "subject": "Add kvGetDefault() to KeyValue object.", "body": "Return the default only if the key is not found, not when the value is NULL." }, { "commit": "289b47902ba1f49a1baea9fdce53eec52d5358bb", "date": "2019-08-08 10:50:25 -0400", "subject": "Allow NULLs in strEq().", "body": "Bring this function more in line with the way varEq() works. NULL == NULL but NULL != NOT NULL." }, { "commit": "feec674b6ff88bdfa62b20dd706d724c79ca1bcd", "date": "2019-08-08 06:48:25 -0400", "subject": "Add constant for lock file extension." }, { "commit": "efc62c90573bd7a0595d81bcf8a261f732fa1fa9", "date": "2019-08-05 12:32:06 -0400", "subject": "Begin v2.17 development." }, { "commit": "9e730c1bd61b00fa506ea443cdd6161e88ed31ae", "date": "2019-08-05 12:03:04 -0400", "subject": "v2.16: C Migrations and Bug Fixes" }, { "commit": "3d3003e9ca6dd449ea16c6812d1cabc392c9d294", "date": "2019-08-01 20:35:01 -0400", "subject": "The check command is implemented partly in C.", "body": "Implement switch WAL and archive check in C but leave the rest in Perl for now.\n\nThe main idea was to have some real integration tests for the new database code so the rest of the migration can wait." }, { "commit": "e4901d50d5e99168f7962b93f7a327e45f7b7fed", "date": "2019-08-01 15:38:27 -0400", "subject": "Add Db object to encapsulate PostgreSQL queries and commands.", "body": "Migrate functionality from the Perl Db module to C. For now this is just enough to implement the WAL switch check.\n\nAdd the dbGet() helper function to get Db objects easily.\n\nCreate macros in harnessPq to make writing pq scripts easier by grouping commonly used functions together." }, { "commit": "f9e1f3a79823ee1bd6656e4f7a8fb23e735b8ccf", "date": "2019-08-01 14:28:30 -0400", "subject": "Retry S3 RequestTimeTooSkewed errors instead of immediately terminating.", "body": "The cause of this error seems to be that a failed request takes so long that a subsequent retry at the http level uses outdated headers.\n\nWe're not sure if pgBackRest it to blame here (in one case a kernel downgrade fixed it, in another case an incorrect network driver was the problem) so add retries to hopefully deal with the issue if it is not too persistent. If SSL_write() has long delays before reporting an error then this will obviously affect backup performance." }, { "commit": "2eb3c9f95f6e57072b65da81cb07a1268ebbf38e", "date": "2019-08-01 09:58:24 -0400", "subject": "Improve error handling for SSL_write().", "body": "Error codes were not being caught for SSL_write() so it was hard to see exactly what was happening in error cases. Report errors to aid in debugging.\n\nAlso add a retry for SSL_ERROR_WANT_READ. Even though we have not been able to reproduce this case it is required by SSL_write() so go ahead and implement it." }, { "commit": "89c67287bcb8bc7884b5dd37703b0d7786c68b95", "date": "2019-07-31 20:44:49 -0400", "subject": "Improve multi-host handling in protocol helper.", "body": "Multiple PostgreSQL hosts were supported via the host-id option but there are cases where it is useful to be able to directly specify the host id required, e.g. to iterate through pg* hosts when looking for candidate primaries and standbys during backup." }, { "commit": "893ae24284e506c551fbc28bec8719881a856e2a", "date": "2019-07-31 19:58:57 -0400", "subject": "Add timeout to walSegmentFind().", "body": "Keep trying to locate the WAL segment until timeout. This is useful for the check and backup commands which must wait for segments to arrive in the archive." }, { "commit": "03b28da1cac8f39c7f57d2c15a83ad667a51b997", "date": "2019-07-31 11:35:58 -0400", "subject": "Rename control/control module to control/common.", "body": "This is more consistent with how other common modules are named." }, { "commit": "a04baa1bdc07f85041bfaf910f122b7ae278d6aa", "date": "2019-07-30 11:42:56 -0400", "subject": "Fix incorrect comment (obviously pasted from S3 code)." }, { "commit": "3d892cfb75c3303b0b592d4481d415d25c3f0df9", "date": "2019-07-30 11:39:01 -0400", "subject": "Remove extra linefeed." }, { "commit": "88c1929ec5a41915753e3d3078bdaae62d14bf0f", "date": "2019-07-26 08:37:58 -0400", "subject": "Don't pass local config* options to the remote.", "body": "The remotes have their own config options (repo-host-config, etc.) so don't pass the local config* options.\n\nThis was a regression from the behavior of the Perl code and while there have been no field reports it caused breakage on test systems with multiple configurations." }, { "commit": "f8b0676fd6edbe915bc23d2f082b4862004ca151", "date": "2019-07-25 20:15:06 -0400", "subject": "Allow modules to be included for testing without requiring coverage.", "body": "Sometimes it is useful to get at the internals of a module that is not being tested for coverage in order to provide coverage for another module that is being tested. The include directive allows this.\n\nUpdate modules that had previously been added to coverage that only need to be included." }, { "commit": "554d98746a96d5a93e3449d62c81c9b7a7c84e9d", "date": "2019-07-25 17:36:51 -0400", "subject": "Add repo-s3-port option for setting a non-standard S3 service port.", "body": "If this option is set then ports appended to repo-s3-endpoint or repo-s3-host will be ignored.\n\nSetting this option explicitly may be the only way to use a bare ipv6 address with S3 (since multiple colons confuse the parser) but we plan to improve this in the future." }, { "commit": "d8ca0e5c5bc2af6b85b20f48b40b83762d415b7a", "date": "2019-07-25 17:05:39 -0400", "subject": "Add Perl interface to C PgQuery object.", "body": "This validates that all current queries work with the new interface and removes the dependency on DBD::Pg." }, { "commit": "415542b4a3589ff7b25dbd97d1041a9b1ff87815", "date": "2019-07-25 14:50:02 -0400", "subject": "Add PostgreSQL query client.", "body": "This direct interface to libpq allows simple queries to be run against PostgreSQL and supports timeouts.\n\nTesting is performed using a shim that can use scripted responses to test all aspects of the client code. The shim will be very useful for testing backup scenarios on complex topologies." }, { "commit": "59f135340d4f76c522c8b24ecb23d56b57b2b0f8", "date": "2019-07-25 14:34:16 -0400", "subject": "The local command for backup is implemented entirely in C.", "body": "The local process is now entirely migrated to C. Since all major I/O operations are performed in the local process, the vast majority of I/O is now performed in C." }, { "commit": "54ec8f151e4164c3f363f417bece7c4b1533dfd6", "date": "2019-07-24 19:45:35 -0400", "subject": "Add int rendering to jsonFromVar()." }, { "commit": "615735e7eed32c429a13559584a7268e4dbff3fc", "date": "2019-07-24 06:52:49 -0400", "subject": "Add new types to JSON render.", "body": "Add bool, array, and int64 as valid array subtypes.\n\nPretty print for the array subtype is not correct but is currently not in use (this can be seen at line 328 in typeJsonTest.c)." }, { "commit": "62f0c7fb37e160d4a8a2dbe410fe8a569bc4ba38", "date": "2019-07-22 13:09:51 -0400", "subject": "Add lock bot configuration.", "body": "Lock closed issues after ninety days to prevent posting on old issues." }, { "commit": "38ba458616f450232dc1090306e651561c9b3076", "date": "2019-07-18 08:42:42 -0400", "subject": "Add IoSink filter.", "body": "Discard all data passed to the filter. Useful for calculating size/checksum on a remote system when no data needs to be returned.\n\nUpdate ioReadDrain() to automatically use the IoSink filter." }, { "commit": "d1dd6add4853a77d2ebbf27c326bbb4670b78955", "date": "2019-07-17 16:55:21 -0400", "subject": "Remove never-used infoBackupCheckPg() function.", "body": "Contributed by Cynthia Shang." }, { "commit": "3bdba4933d45451a3fa6f5dafcb79fd976bffef6", "date": "2019-07-17 16:49:42 -0400", "subject": "Fix incorrect handling of transfer-encoding response to HEAD request.", "body": "The HTTP server can use either content-length or transfer-encoding to indicate that there is content in the response. HEAD requests do not include content but return all the same headers as GET. In the HEAD case we were ignoring content-length but not transfer-encoding which led to unexpected eof errors on AWS S3. Our test server, minio, uses content-length so this was not caught in integration testing.\n\nIgnore all content for HEAD requests (no matter how it is reported) and add a unit test for transfer-encoding to prevent a regression." }, { "commit": "6f981c53bb63d3a644a8573cb9edb162c443d03b", "date": "2019-07-17 15:44:55 -0400", "subject": "Remove obsolete ignoreMissing parameter.", "body": "Contributed by Cynthia Shang." }, { "commit": "7662d32e6020148d822fd5080f2a5ebda7ebe103", "date": "2019-07-17 15:42:37 -0400", "subject": "Fix comment typos and clarify HEAD response behavior." }, { "commit": "eee67db4d611bb18950daf7bddb84217b010d767", "date": "2019-07-17 14:09:50 -0400", "subject": "Allow pg storage to be remote.", "body": "None of the currently migrated commands needed remote pg storage but now backup, check, stanza-* will need it." }, { "commit": "30f55a3c2a139ffd59547fd8e422c3fae3feecd3", "date": "2019-07-15 17:36:24 -0400", "subject": "Add compressed storage feature.", "body": "This feature denotes storage that can compress files so that they take up less space than what was written. Currently this includes the Posix and CIFS drivers. The stored size of the file will be rechecked after write to determine if the reported size is different. This check would be wasted on object stores such as S3, and they might not report the file as existing immediately after write.\n\nAlso add tests to each storage driver to check features." }, { "commit": "3e1062825dde7cab506225a3b0658552b44de7ce", "date": "2019-07-15 16:49:46 -0400", "subject": "Allow multiple filters to be pushed to the remote and return results.", "body": "Previously only a single filter could be pushed to the remote since order was not being maintained. Now the filters are strictly ordered.\n\nResults are returned from the remote and set in the local IoFilterGroup so they can be retrieved.\n\nExpand remote filter support to include all filters." }, { "commit": "d5654375a5152764f76335eb5265eb994d1df6bd", "date": "2019-07-15 08:44:41 -0400", "subject": "Add ioReadDrain().", "body": "Read all data from an IoRead object and discard it. This is handy for calculating size, hash, etc. when the output is not needed.\n\nUpdate code where a loop was used before." }, { "commit": "cdb75ac8b38810e2e7c6f5d0161443650f94bb31", "date": "2019-07-15 07:13:36 -0400", "subject": "Add constants for path and archive.info/backup.info combinations.", "body": "Contributed by Cynthia Shang." }, { "commit": "ede7df9fb1d937f228e982d987d306345007dfe0", "date": "2019-07-14 15:53:31 -0400", "subject": "Allow NULL in JSON list." }, { "commit": "c836c483dc7198a685991753300bae49d3caa73c", "date": "2019-07-14 15:42:55 -0400", "subject": "Add lstClear() to List object." }, { "commit": "e10577d0b0c8054a08513b069e2f2647ddd51fb7", "date": "2019-07-11 09:13:56 -0400", "subject": "Fix incorrect offline upper bound for ignoring page checksum errors.", "body": "For offline backups the upper bound was being set to 0x0000FFFF0000FFFF rather than UINT64_MAX. This meant that page checksum errors might be ignored for databases with a lot of past WAL in offline mode.\n\nOnline mode is not affected since the upper bound is retrieved from pg_start_backup()." }, { "commit": "2fd0ebb78aabe882d4b080d4014d7ecabbded3da", "date": "2019-07-10 15:08:35 -0400", "subject": "Fix links broken by non-standard version.", "body": "Using version 2.15.1 fixed the duplicate tarball problem but broke the auto-generated links. Fix them manually since this should not be a common problem." }, { "commit": "6a89c1526e1ecc2940ed2bf42258ceb9ef85f0e0", "date": "2019-07-10 12:04:25 -0400", "subject": "Revert a2dcdc07.", "body": "It is simpler to implement the required logic in stanza-delete rather than add complexity to this function." }, { "commit": "04646599a776348914b3e9bb9b707d2845540aac", "date": "2019-07-10 06:17:33 -0400", "subject": "Remove extraneous test macro." }, { "commit": "4e7db608dc6488feb99e5f2707f06e3ca39d78e8", "date": "2019-07-10 06:11:21 -0400", "subject": "Clarify that return statements are not removed in production builds." }, { "commit": "a22a6dc08c25a2af9ac9a6f2331144f2bae8dcbe", "date": "2019-07-10 06:06:07 -0400", "subject": "Update contributor name." }, { "commit": "a2dcdc0711a8dfb7d562b2ee0a8586de9676669f", "date": "2019-07-09 16:41:58 -0400", "subject": "Update lockStopTest() to optionally return a result rather than error.", "body": "Some commands (e.g. stanza-delete) would prefer to throw a customized error." }, { "commit": "27b3246e852e98902f21589f5cdfece9ebb27b39", "date": "2019-07-08 08:29:25 -0400", "subject": "Exclude more build files from rsync between tests.", "body": "Files (especially build.auto.h) were being removed and forcing a full build between separate invocations of test.pl.\n\nThis affected ad-hoc testing at the command-line, not a full test run in CI." }, { "commit": "5e1ed2e8a52c2c4d2151ef17496f0847cd9ae939", "date": "2019-07-05 18:34:15 -0400", "subject": "Remove clang static analysis.", "body": "This analysis never produced anything but false positives (var might be NULL) but took over a minute per test run and added 600MB to the test container." }, { "commit": "488fb672948c07abfd7e38604eacbd0f82610b1a", "date": "2019-07-05 17:25:01 -0400", "subject": "Force PostgreSQL versions to string for newer versions of JSON:PP.", "body": "Since 2.91 JSON::PP has a bias for saving variables that look like numbers as numbers even if they were declared as strings.\n\nForce versions to strings where needed by appending ''.\n\nUpdate the json-pp-perl package on Ubuntu 18.04 to 2.97 to provide test coverage." }, { "commit": "9836578520e3fb5c038230ebfb123001a7eb32fa", "date": "2019-07-05 16:55:17 -0400", "subject": "Remove perl critic and coverage.", "body": "No new Perl code is being developed, so these tools are just taking up time and making migrations to newer platforms harder. There are only a few Perl tests remaining with full coverage so the coverage tool does not warn of loss of coverage in most cases.\n\nRemove both tools and associated libraries." }, { "commit": "fc2101352206a87f8471fd37455d9cd990fce95d", "date": "2019-07-05 16:25:28 -0400", "subject": "Fix scoping violations exposed by optimizations in gcc 9.", "body": "gcc < 9 makes all compound literals function scope, even though the C spec requires them to be invalid outside the current scope. Since the compiler and valgrind were not enforcing this we had a few violations which caused problems in gcc >= 9.\n\nEven though we are not quite ready to support gcc 9 officially, fix the scoping violations that currently exist in the codebase." }, { "commit": "1708f1d1514b3f2afb69664317df705a1fccfaf7", "date": "2019-07-02 22:20:35 -0400", "subject": "Use minio for integration testing.", "body": "ScalityS3 has not received any maintenance in years and is slow to start which is bad for testing. Replace it with minio which starts quickly and ships as a single executable or a tiny container.\n\nMinio has stricter limits on allowable characters but should still provide enough coverage to show that our encoding is working correctly.\n\nThis commit also includes the upgrade to openssl 1.1.1 in the Ubuntu 18.04 container." }, { "commit": "b9b21315ead6610bb41ee19794763555a7265261", "date": "2019-07-02 22:09:12 -0400", "subject": "Updates for openssl 1.1.1.", "body": "Some HTTP error tests were failing after the upgrade to openssl 1.1.1, though the rest of the unit and integration tests worked fine. This seemed to be related to the very small messages used in the error testing, but it pointed to an issue with the code not being fully compliant, made worse by auto-retry being enabled by default.\n\nDisable auto-retry and implement better error handling to bring the code in line with openssl recommendations.\n\nThere's no evidence this is a problem in the field, but having all the tests pass seems like a good idea and the new code is certainly more robust.\n\nCoverage will be complete in the next commit when openssl 1.1.1 is introduced." }, { "commit": "c55009d0f9ebfea746ab270be167dc2d78976ce9", "date": "2019-06-27 14:39:11 -0400", "subject": "Community yum package can be installed with --var=package=yum.", "body": "Like apt, the community yum package can now be installed instead of a user-specified package." }, { "commit": "b0728c33dbd7c99a7b785c152f20d5cdfa902bff", "date": "2019-06-27 14:30:20 -0400", "subject": "Remove Debian package patch merged to upstream." }, { "commit": "020101b30bfe9f2d34b878fcd51fad932781d9f8", "date": "2019-06-27 09:38:40 -0400", "subject": "Update release notes to explicitly select release commit when tagging." }, { "commit": "33e3d316d63a41cd64d217abe30786cfb48bf09e", "date": "2019-06-26 19:52:04 -0400", "subject": "Reverse loop in infoPgSave() to be consistent with infoPgNewLoad().", "body": "Contributed by Cynthia Shang." }, { "commit": "4bffa0c5bb7d551c60b8d8bcff9a3bbe6e02eddd", "date": "2019-06-26 15:02:30 -0400", "subject": "Add test function to create the S3 bucket instead of using aws cli.", "body": "Eventually the idea is to remove the dependency on aws cli since Python is a big install." }, { "commit": "4815752ccc46ff742f67b369bc75ad3efcf11204", "date": "2019-06-26 08:24:58 -0400", "subject": "Add Perl interface to C storage layer.", "body": "Maintaining the storage layer/drivers in two languages is burdensome. Since the integration tests require the Perl storage layer/drivers we'll need them even after the core code is migrated to C. Create an interface layer so the Perl code can be removed and new storage drivers/features introduced without adding Perl equivalents.\n\nThe goal is to move the integration tests to C so this interface will eventually be removed. That being the case, the interface was designed for maximum compatibility to ease the transition. The result looks a bit hacky but we'll improve it as needed until it can be retired." }, { "commit": "bd6c0941e9e3aa2dab84f7404da1f9dc60cd693b", "date": "2019-06-25 17:27:19 -0400", "subject": "Fix missing dash in site name.", "body": "Without this the project name and tagline just run together." }, { "commit": "466602387bc279aa44a811dc2948b893e4127b2c", "date": "2019-06-25 08:42:20 -0400", "subject": "Begin v2.16 development." }, { "commit": "6650d8144cba46f93ad75c11ad98d87c57d2ea7f", "date": "2019-06-25 08:29:06 -0400", "subject": "v2.15: C Implementation of Expire" }, { "commit": "51fcaee43edf022aea0f94b76d254f2de8b6e1d1", "date": "2019-06-25 07:58:38 -0400", "subject": "Add host-repo-path variable internal replacement.", "body": "This variable needs to be replaced right before being used without being added to the cache since the host repo path will vary from system to system.\n\nThis is frankly a bit of a hack to get the documentation to build in the Debian packages for the upcoming release. We'll need to come up with something more flexible going forward." }, { "commit": "5cbe2dee855577ccd14051cad35f30376db21d50", "date": "2019-06-25 07:36:16 -0400", "subject": "Add compress-level-network option to ls command.", "body": "039e515a added a dependency on compress-level-network but the ls command did not get updated." }, { "commit": "d7f12f268a370e388c6a6375666831ecd8fad72c", "date": "2019-06-24 19:27:13 -0400", "subject": "Redact secure options in the help command.", "body": "Secure options could show up in the help as \"current\". While the user must have permissions to see the source of the options (e.g. environment, config file) it's still not a good idea to display them in an unexpected context.\n\nInstead show secure options as in the help command." }, { "commit": "c22e10e4a938b444ac7912efc3b751829401360f", "date": "2019-06-24 15:42:33 -0400", "subject": "Honor configure --prefix option.", "body": "The --prefix option was entirely ignored and DESTDIR was a combination of DESTDIR and bindir.\n\nBring both in line with recommendations for autoconf and make as specified in https://www.gnu.org/software/make/manual/html_node/Directory-Variables.html and https://www.gnu.org/prep/standards/html_node/DESTDIR.html." }, { "commit": "b498188f01f8d2ccd4d0ce2cce3af2e5069d9ac3", "date": "2019-06-24 11:59:44 -0400", "subject": "Error on db history mismatch when expiring.", "body": "Amend commit 434cd832 to error when the db history in archive.info and backup.info do not match.\n\nThe Perl code would attempt to reconcile the history by matching on system id and version but we are not planning to migrate that code to C. It's possible that there are users with mismatches but if so they should have been getting errors from info for the last six months. It's easy enough to manually fix these files if there are any mismatches in the field." }, { "commit": "039e515a319216035187c89efccf97143d4cac03", "date": "2019-06-24 10:20:47 -0400", "subject": "Allow protocol compression when read/writing remote files.", "body": "If the file is compressible (i.e. not encrypted or already compressed) it can be marked as such in storageNewRead()/storageNewWrite(). If the file is being read from/written to a remote it will be compressed in transit using gzip.\n\nSimplify filter group handling by having the IoRead/IoWrite objects create the filter group automatically. This removes the need for a lot of NULL checking and has a negligible effect on performance since a filter group needs to be created eventually unless the source file is missing.\n\nAllow filters to be created using a VariantList so filter parameters can be passed to the remote." }, { "commit": "62715ebf2d8b0585c35cd2ee14d6aabf9cc0f1f8", "date": "2019-06-19 17:49:38 -0400", "subject": "Fix archive retention expiring too aggressively.", "body": "The problem expressed when repo1-archive-retention-type was set to diff. In this case repo1-archive-retention ended up being effectively equal to one, which meant PITR recovery was only possible from the last backup. WAL required for consistency was still preserved for all backups.\n\nThis issue is not present in the C migration committed at 434cd832, which was written before this bug was reported. Even so, we wanted to note this issue in the release notes in case any other users have been affected.\n\nFixed by Cynthia Shang.\nReported by Mohamad El-Rifai." }, { "commit": "a7d64bab7abe56132ad1c83eb6bfcca1166e0000", "date": "2019-06-18 19:02:09 -0400", "subject": "Add FAQ on where to find old Debian/Ubuntu packages." }, { "commit": "e2d791394a3577aac53a21e3141e4e337ac8edf0", "date": "2019-06-18 18:42:47 -0400", "subject": "Add FAQ to the documentation.", "body": "Contributed by Cynthia Shang." }, { "commit": "434cd832855e4e189403962753fd8771e29880a4", "date": "2019-06-18 15:19:20 -0400", "subject": "The expire command is implemented entirely in C.", "body": "This implementation duplicates the functionality of the Perl code but does so with different logic and includes full unit tests.\n\nAlong the way at least one bug was fixed, see issue #748." }, { "commit": "f88bee7b3321a2c79f0317913ba1e83a56d19c7d", "date": "2019-06-18 10:13:28 -0400", "subject": "TLS/HTTP statistics log replacements.", "body": "These statistics can change with any code update so they cause a lot of churn in the expect logs." }, { "commit": "0efdf2576f02b1768fb8805b27571e403ac3cb52", "date": "2019-06-18 07:35:34 -0400", "subject": "Remove hard-coded PostgreSQL user so $PGUSER works.", "body": "The PostgreSQL user was hard-coded to the OS user which libpq will automatically use if $PGUSER is not set, so this code was redundant and prevented $PGUSER from working when set." }, { "commit": "593446718a8997bfd674cf5e54230290cb5bcdea", "date": "2019-06-18 06:45:47 -0400", "subject": "Add S3 info type missed in 7f2f5354.", "body": "File is the only type possible in S3." }, { "commit": "0a96a2895d7a1e4c5eec402d3742f1d1e25cc126", "date": "2019-06-17 09:16:44 -0400", "subject": "Add storage layer for tests and documentation.", "body": "The tests and documentation have been using the core storage layer but soon that will depend entirely on the C library, creating a bootstrap problem (i.e. the storage layer will be needed to build the C library).\n\nCreate a simplified Posix storage layer to be used by documentation and the parts of the test code that build and execute the actual tests. The actual tests will still use the core storage driver so they can interact with any type of storage." }, { "commit": "ceafd8e19d416106f50c4ff440bf1cf7fcb5553f", "date": "2019-06-17 07:52:03 -0400", "subject": "Migrate page checksum filter to C.", "body": "This filter exactly mimics the behavior of the Perl filter so is a drop-in replacement.\n\nThe filter is not integrated yet since it requires the Perl-to-C storage layer interface coming in a future commit." }, { "commit": "892f35a7283462fae0bc3077aeb23c9624a50dea", "date": "2019-06-17 07:42:12 -0400", "subject": "Add new types to JSON render.", "body": "Still not a complete list, but we are getting there." }, { "commit": "c64c9c05905d435cd650195ed9470355a4d2be2f", "date": "2019-06-17 06:59:06 -0400", "subject": "Add backup management functions to InfoBackup.", "body": "Allow current backups to be listed and deleted.\n\nAlso expose some constants required by expire and stanza-* commands." }, { "commit": "44bafc127d9d4e38478aa44d0adc0f34695c6640", "date": "2019-06-17 06:47:15 -0400", "subject": "Rename info*New() functions to info*NewLoad().", "body": "These names more accurately reflect what the functions do and follow the convention started in Info and InfoPg.\n\nAlso remove the ignoreMissing parameter since it was never used." }, { "commit": "f05fbc54a8f00a56937439fb88eafe8e239781e8", "date": "2019-06-14 08:04:28 -0400", "subject": "Fix filters not processing when there is no input.", "body": "Some filters (e.g. encryption and compression) produce output even if there is no input. Since the filter group was marked as \"done\" initially, processing would not run when there was zero input and that resulted in zero output.\n\nAll filters start not done so start the filter group the same way." }, { "commit": "9ba95e993ba3dbf73f8967a875608980e6380633", "date": "2019-06-13 17:58:33 -0400", "subject": "Use retries to wait for test S3 server to start.", "body": "The prior method of tailing the docker log no longer seems reliable. Instead, keep retrying the make bucket command until it works and show the error if it times out." }, { "commit": "b9233f7412e44c8daf41db05bd9699fa088ece5d", "date": "2019-06-13 12:44:40 -0400", "subject": "Create filter group in read/write object's memory context.", "body": "The filter group was being created in the parent context so it would go away if the parent context was freed." }, { "commit": "20be5c9bf39d606b8586ffcf575a7443c6375479", "date": "2019-06-13 12:35:13 -0400", "subject": "Remove extra spaces." }, { "commit": "fdd375b63d3962845efbb38a7020d852143b97fd", "date": "2019-06-11 16:26:32 -0400", "subject": "Integrate S3 storage driver with HTTP client cache.", "body": "This allows copying from one S3 object to another. We generally try to avoid doing this but there are a few cases where it is needed and the tests do it quite a bit.\n\nOne thing to look out for here is that reads require the http client to be explicitly released by calling httpClientDone(). This means than clients could grow if they are not released properly. The http statistics will hopefully alert us if this is happening." }, { "commit": "ced42d6511e9b5735a2281dd0e1faec41870fd37", "date": "2019-06-11 10:48:22 -0400", "subject": "Add HTTP client cache.", "body": "This cache manages multiple http clients and returns one to the caller that is not busy. It is the responsibility of the caller to indicate when they are done with a client. If returnContent is set then the client will automatically be marked done.\n\nAlso add special handing for HEAD requests to recognize that content-length is informational only and no content is expected." }, { "commit": "6e809e578fbd24269205de25cc6e9c84cefc5647", "date": "2019-06-11 10:34:42 -0400", "subject": "Add tag to specify minio version to use for documentation build.", "body": "The new minio major release broke the build. We'll need to figure that out but for now use the last major version, which is known to work." }, { "commit": "7f2f535460e3499c1811b5beca9130f84b78c982", "date": "2019-06-10 16:09:38 -0400", "subject": "Add info() and infoList() to S3 driver.", "body": "These should be the last functions required to complete the implementation of the S3 driver." }, { "commit": "9d1b03781f9fe88b868cdfaf4808d84ad1f072fb", "date": "2019-06-10 15:52:51 -0400", "subject": "Revert removal of aws cli in 3e1b06ac.", "body": "This is required for integration tests to create buckets." }, { "commit": "456391f67c220647e130fdc7a7fc805b075cfd87", "date": "2019-06-10 12:23:04 -0400", "subject": "Create general-purpose S3 list function.", "body": "There are already two functions which need file lists and more on the way, so create a general-purpose function to reduce code duplication." }, { "commit": "fb8bd095ca93e2bf77eaec0f7573f961f691c3ab", "date": "2019-06-10 10:37:20 -0400", "subject": "Add missing const qualifiers." }, { "commit": "78b333790c69aca991f740a9ea6b1982fb70c3d6", "date": "2019-06-07 10:35:44 -0400", "subject": "Return IoRead/IoWrite from io*FilterGroupSet()", "body": "This makes is possible to chain functions more effectively." }, { "commit": "e701e8fd846539ec20f2a9be90b0590ceb6a7be6", "date": "2019-06-05 11:50:49 -0400", "subject": "Expose storage type.", "body": "Code calling the storage should be driver agnostic but knowing the storage type can be useful for debugging and error reporting." }, { "commit": "6ff3325c7744a8f6f0e1e965fa673040a2f40a71", "date": "2019-06-05 11:43:17 -0400", "subject": "Enforce requiring repo-cipher-pass at config parse time.", "body": "This was not enforced at parse time because repo1-cipher-type could be passed on the command-line even in cases where encryption was not needed by the subprocess.\n\nFilter repo-cipher-type so it is never passed on the command line. If the subprocess does not have access to the passphrase then knowing the encryption type is useless anyway." }, { "commit": "d7bd0c58cdd9a434aa5893db16e6bcf8425e26b9", "date": "2019-06-05 07:27:24 -0400", "subject": "Use wal_level=replica in the documentation for PostgreSQL >= 9.6.", "body": "The documentation was using wal_level=hot_standby which is a deprecated setting.\n\nAlso remove the reference to wal_level=archive since it is no longer supported and is not recommended for older versions." }, { "commit": "aca11b2fa19337f934fc095e33f014d5e6df71f3", "date": "2019-06-04 17:40:27 -0400", "subject": "Add String to types supported by JSON list render.", "body": "All types should be supported eventually but for now this answers the need." }, { "commit": "0ab6f3bb87005d5a5d102156730b1e3099894189", "date": "2019-06-04 13:38:05 -0400", "subject": "Fix incorrect error type on missing path." }, { "commit": "4b91259de8d7feec6d33d154032169aa32c879e3", "date": "2019-06-04 12:56:04 -0400", "subject": "Make working with filter groups less restrictive.", "body": "Filter groups could not be manipulated once they had been assigned to an IO object. Now they can be freely manipulated up to the time the IO object is opened.\n\nAlso, move the filter group into the IO object's context so they don't need to be tracked separately." }, { "commit": "92e04ea9f4e0eb3f6cd88a72497a026cbd348280", "date": "2019-06-04 10:34:19 -0400", "subject": "Remove per-stanza repo cache clear during testing.", "body": "This was not being used and is not supported by the equivalent C code." }, { "commit": "44eb21ea935fdaa4e96d4637c7b62cb5a73d3e77", "date": "2019-06-04 10:05:27 -0400", "subject": "Use HEAD to check if a file exists on S3.", "body": "The previous implementation searched for the file in a list which worked but was not optimal. For arbitrary bucket structures it would also produce a false negative if a match was not found in the first 1000 entries. This was not an issue for our repo structure since the max hits on exists calls is two but it seems worth fixing to avoid future complications." }, { "commit": "15b8e3b6af7327179d8bdd2e0c6833ed28005b0b", "date": "2019-06-04 09:39:08 -0400", "subject": "Make C S3 requests use the same host logic as Perl.", "body": "The C code was passing the host (if specified) with the request which could force the server into path-style URLs, which are not supported.\n\nInstead, use the Perl logic of always passing bucket.endpoint in the request no matter what host is used for the HTTPS connection.\n\nIt's an open question whether we should support path-style URLs but since we don't it's useless to tell the server otherwise. Note that Amazon S3 has deprecated path-style URLs and they are no longer supported on newly created buckets." }, { "commit": "5f92c36b30072edb71b12f79163c37c67d9806bc", "date": "2019-06-04 08:04:33 -0400", "subject": "Fix erroneous parameter name.", "body": "The exists() function only checks for files so the parameter name should reflect that." }, { "commit": "0945d9666b5af1a5893ba0b4537e9cd1f72be478", "date": "2019-06-01 11:09:01 -0400", "subject": "Bring back PATH_PAX for platforms that don't define it.", "body": "This define was replaced in 8c712d89 with limits.h but that caused an issue with the hurd-i386 build for Debian which apparently does not define this value." }, { "commit": "a207af79215d05539825c484dbfa9aa2a26cf7d0", "date": "2019-06-01 09:44:40 -0400", "subject": "Fix mismatched log/test macros." }, { "commit": "12bca3c43eb2ee0df80ef5e10850657b52fb680b", "date": "2019-06-01 09:28:31 -0400", "subject": "Add CPPFLAGS to compile rules.", "body": "This should silence the last of the Debian package warnings." }, { "commit": "388ba0458c37ab4e8b82df0c0fa2b6a4d7462ecb", "date": "2019-05-31 18:37:31 -0400", "subject": "Fix build.flags being removed on each build.", "body": "This was being removed by rsync which forced a full build even when a partial should have been fine. Rewrite the file after the rsync so it is preserved." }, { "commit": "6cba50c3f23a7a7822ae0fd03ff3b5a3f6d8a32a", "date": "2019-05-31 18:32:40 -0400", "subject": "Remove Debian package patch merged to upstream." }, { "commit": "3a5fd7b28a79c1564ddd2b5bad36d4d4be358453", "date": "2019-05-30 11:19:59 -0400", "subject": "Fix typo in macro name." }, { "commit": "a2ec1253e97805e2a3b990d8bc23c98ab8013d09", "date": "2019-05-30 10:44:35 -0400", "subject": "Add code classification exclusion missed in 3e1b06ac." }, { "commit": "64260b2e9878944116dc78812a3a21633c5f3d15", "date": "2019-05-29 08:38:45 -0400", "subject": "Build all docs with S3 using --var=s3-all=y", "body": "Force repo-type=s3 for all tests. This is not currently the default for any OS builds." }, { "commit": "404284b90ff0f67fe29fa5a7b2831ebf51d459aa", "date": "2019-05-28 12:18:05 -0400", "subject": "Add internal flag for commands.", "body": "Allow commands to be skipped by default in the command help but still work if help is requested for the command directly. There may be other uses for the flag in the future.\n\nUpdate help for ls now that it is exposed." }, { "commit": "20e5b92f366848ec1464e2272c6af2c29ac7b36d", "date": "2019-05-28 10:03:48 -0400", "subject": "Add ls command.", "body": "Allows listing repo paths/files from the command-line, to be used primarily for testing and debugging.\n\nThis command is internal-only so the interface may change at any time without notice." }, { "commit": "3b3327eae6dd14f67f1002f094bd33ab7785f765", "date": "2019-05-28 09:50:59 -0400", "subject": "Move tls/http statistics output to command/command.", "body": "This module already has the filtering required to keep these messages from being displayed by default for commands that output to stdout (e.g. info)." }, { "commit": "3e1b06acaa84399abcfaa8c684f437b63aa38de5", "date": "2019-05-27 07:37:20 -0400", "subject": "Use minio as local S3 emulator in documentation.", "body": "The documentation was relying on a ScalityS3 container built for testing which wasn't very transparent. Instead, use the stock minio container and configure it in the documentation.\n\nAlso, install certificates and CA so that TLS verification can be enabled." }, { "commit": "a474ba54c5c9c7bdba6ffa3e92671bb9565889f6", "date": "2019-05-26 12:41:15 -0400", "subject": "Refactoring path support in the storage module.", "body": "Not all storage types support paths as a physical thing that must be created/destroyed. Add a feature to determine which drivers use paths and simplify the driver API as much as possible given that knowledge and by implementing as much path logic as possible in the Storage object.\n\nRemove the ignoreMissing parameter from pathSync() since it is not used and makes little sense.\n\nCreate a standard list of error messages for the drivers to use and apply them where the code was modified -- there is plenty of work still to be done here." }, { "commit": "38f28bd52081405321939fec66046bd9ada35c23", "date": "2019-05-26 12:32:49 -0400", "subject": "Log TLS and HTTP statistics on exit.", "body": "These stats measure how efficiently TLS and HTTP are reusing connections." }, { "commit": "819eda0818669ea9cc45bcd65c57e3b4c7d29129", "date": "2019-05-26 12:29:29 -0400", "subject": "Set log level of protocol processing functions to debug.", "body": "Setting these to trace effectively made debug level useless in local/remote processes since all debug messages were demoted to trace when called from these functions." }, { "commit": "d12d94c53c466eb808459b98669a877c19b5716b", "date": "2019-05-24 18:09:16 -0400", "subject": "Make info(), pathCreate() and pathSync() optional for storage drivers.", "body": "These functions are not required for repository storage so make them optional and error if they are not implemented for non-repository storage, .e.g. pg or spool.\n\nThe goal is to simplify the drivers (e.g. S3) that are intended only for repository storage." }, { "commit": "39645fc1a99540063399a7a3b86177a330bd743c", "date": "2019-05-24 14:33:47 -0400", "subject": "Add pathRemove() and remove() to S3 storage.", "body": "These functions will be needed for the expire command." }, { "commit": "6c385dfa7a7f489159c06c5a31fd3cd7c77c39a8", "date": "2019-05-24 13:56:38 -0400", "subject": "Add function to determine if HTTP response code is OK.", "body": "OK responses are a range rather than a single value, so simplify the check with a function." }, { "commit": "96770c529be4df408b9d1fc39fc5157e90555375", "date": "2019-05-24 13:12:56 -0400", "subject": "storageList() returns an empty list by default for missing paths.", "body": "The prior behavior was to return NULL so the caller would know the path was missing, but this is rarely useful, complicates the calling code, and increases the chance of segfaults.\n\nThe .nullOnMissing param has been added to enable the prior behavior." }, { "commit": "707e4a29f04a733cff868f37b90f8bf83a02394c", "date": "2019-05-24 11:09:43 -0400", "subject": "Notify compiler that cryptoErrorCode() does not return." }, { "commit": "01f3024b5c0a83819d58ee6ccc2edb5109277aaa", "date": "2019-05-24 11:06:11 -0400", "subject": "Add missing const qualifier." }, { "commit": "39cb6248314e21530924886e6e669ac395daeeb1", "date": "2019-05-24 07:45:03 -0400", "subject": "Add missing menus to the new user guides.", "body": "Since the CentOS 6/7 user guides were generated as a single page they did not get menus. Generate the entire site for each user guide so menus are included." }, { "commit": "04f8b4ea52f89d1542b25d2fb0ba28a43ddaba6d", "date": "2019-05-24 07:41:55 -0400", "subject": "Use git url for website clone." }, { "commit": "ec9622cde883c649c1346cbc0b9057e7f3fcb787", "date": "2019-05-22 18:54:49 -0400", "subject": "Use the git log to ease release note management.", "body": "The release notes are generally a direct reflection of the git log. So, ease the burden of maintaining the release notes by using the git log to determine what needs to be added.\n\nCurrently only non-dev items are required to be matched to a git commit but the goal is to account for all commits.\n\nThe git history cache is generated from the git log but can be modified to correct typos and match the release notes as they evolve. The commit hash is used to identify commits that have already been added to the cache.\n\nThere's plenty more to do here. For instance, links to the commits for each release item should be added to the release notes." }, { "commit": "86482c7db943375d48fcee0e243ca96bdf50d35c", "date": "2019-05-22 18:23:44 -0400", "subject": "Reduce log level for all expect tests to detail.", "body": "The C code is designed to be efficient rather than deterministic at the debug log level. As we move more testing from integration to unit tests it makes less sense to try and maintain the expect logs at this log level.\n\nMost of the expect logs have already been moved to detail level but mock/all still had tests at debug level. Change the logging defaults in the config file and remove as many references to log-level-console as possible." }, { "commit": "e4cc008b982d47ac526962e310c18626e2aefbc2", "date": "2019-05-22 11:31:38 -0400", "subject": "Remove duplicated hint.", "body": "At some point this hint got added to the underlying code so it is no longer needed here." }, { "commit": "ff9c1bed5de380a6e7df1cbc6870b972d93b3dc4", "date": "2019-05-22 11:24:18 -0400", "subject": "Save cipher-pass key/value missed in f492f057.", "body": "This value is required when encryption is enabled.\n\nIn passing simplify the expression used to skip the checksum when calculating the checksum." }, { "commit": "3da60f4b5ee8ed663fc5e8d8968709dbaadee1f6", "date": "2019-05-22 11:10:43 -0400", "subject": "Don't escape / when rendering JSON.", "body": "/ is escaped in the spec but the Perl renderer we use does not escape it which leads to checksum mismatches between the two sets of code.\n\nThis particular escape seems to be a more recent addition to the spec and is targeted toward embedding JSON in JavaScript.\n\n\\/ is still allowed when parsing JSON." }, { "commit": "664054fea94186374dcae84e31e0cd7329c279d0", "date": "2019-05-22 06:55:31 -0400", "subject": "Remove RHEL package patch merged to upstream." }, { "commit": "e1cce9c6147446c026f528cc4afe518de0bcb87f", "date": "2019-05-21 14:07:35 -0400", "subject": "Remove extraneous parens." }, { "commit": "936b8a289c4884dd22f7ff0d3d624d6e70980512", "date": "2019-05-21 10:37:30 -0400", "subject": "Allow separate paragraphs in release items.", "body": "The first paragraph should match the first line of the commit message as closely as possible. The following paragraphs add more information.\n\nRelease items have been updated back to 2.01." }, { "commit": "e3fe3434b4428398ffbee5359f0e0cdec8e55bcb", "date": "2019-05-21 10:14:41 -0400", "subject": "Rename repo-s3-verify-ssl option to repo-s3-verify-tls.", "body": "The new name is preferred because pgBackRest does not support any SSL protocol versions (they are all considered to be insecure).\n\nThe old name will continue to be accepted." }, { "commit": "1bc84c647490d6cf78975b5dde5b1937016d24c6", "date": "2019-05-20 17:07:37 -0400", "subject": "The local command for restore is implemented entirely in C.", "body": "This is just the part of restore run by the local helper processes, not the entire command.\n\nEven so, various optimizations in the code (like connection reuse and optimizations for zero-length files) should make the restore command faster on object stores." }, { "commit": "a839830333490555800377ea095d756765f476e4", "date": "2019-05-20 16:19:14 -0400", "subject": "Add most unimplemented functions to the remote storage driver.", "body": "Add pathCreate(), pathRemove(), pathSync(), and remove() to the driver." }, { "commit": "bbf2e0d5b0876d3663cc69d10925c6e0d08cd729", "date": "2019-05-20 12:24:43 -0400", "subject": "Remove extra linefeed." }, { "commit": "a9f589b87a09bd37ad903b5c37bcd3000d47840d", "date": "2019-05-20 12:23:40 -0400", "subject": "Begin v2.15 development." }, { "commit": "0f685a33a02adde45792711b957a75391fc5f34e", "date": "2019-05-20 11:51:58 -0400", "subject": "v2.14: Bug Fix and Improvements" }, { "commit": "51d67ce1ba932476b2349dbe611f77ab4f15213d", "date": "2019-05-16 09:59:34 -0400", "subject": "Update contributor name." }, { "commit": "2b75f57232e3d2c983e0a703b6807dadd0b4c0e6", "date": "2019-05-16 09:56:48 -0400", "subject": "Add linefeeds for clarity." }, { "commit": "19d8358cba0064392cd519e7bce66bb3dcce3dc9", "date": "2019-05-16 09:53:55 -0400", "subject": "Update mock/expire module test matrix so expect tests output.", "body": "Also add an error message to prevent regression." }, { "commit": "c51274d1b6a85aeb8ecf1dfffcdc68a503ac3de9", "date": "2019-05-16 08:32:02 -0400", "subject": "Add user guides for CentOS/RHEL 6/7.", "body": "It would be better if the documentation could be generated on multiple operating systems all in one go, but the doc system currently does not allow vars to be changed once they are set.\n\nThe solution is to run the docs for each required OS and stitch the documentation together. It's not pretty but it works and the automation in release.pl should at least make it easy to use." }, { "commit": "bc7b42e71811e1b3231c1386496efbdf8338e086", "date": "2019-05-16 07:35:45 -0400", "subject": "Restore index menu url default lost in b85e51d6.", "body": "The url for the menu item referring to the index (i.e. site root page) should use {[project-url-root]}.\n\nThis allows the url to be set to different values depending on the location of the index." }, { "commit": "a4561dc0879fd1fb383ecbeafa6936729a515190", "date": "2019-05-16 07:29:17 -0400", "subject": "Add --out-preserve to preserve contents of output path.", "body": "Useful for building a single set of documentation over multiple doc.pl runs." }, { "commit": "bc30027d730e4ce7090919406eb0d7f5c7f7e51e", "date": "2019-05-16 07:04:28 -0400", "subject": "Fix typo in doc.pl command-line help." }, { "commit": "18d4cb574180d279dbbdabd8b87b9dab43115659", "date": "2019-05-15 13:14:58 -0400", "subject": "Bypass database checks when stanza-delete issued with force.", "body": "Previously it was not possible to delete a stanza if the PostgreSQL server could not be contacted." }, { "commit": "5c1d4bcd0d41590e722f2d184cf64a62b740625c", "date": "2019-05-15 13:04:56 -0400", "subject": "Automate coverage summary report generation.", "body": "This report replaces the lcov report that was generated manually for each release.\n\nThe lcov report was overly verbose just to say that we have virtually 100% coverage." }, { "commit": "5bba72b87445f3edd2c7a2e636ffcb46cac5d9dd", "date": "2019-05-15 12:55:08 -0400", "subject": "Remove -Wswitch-enum compiler option.", "body": "The -Wswitch option included in -Wall provides the same level of coverage and allows enum options to be grouped into default." }, { "commit": "53f6232264f27a029d3f6261c75a16585ade1951", "date": "2019-05-14 10:35:39 -0400", "subject": "Improve coverage in config/parse module." }, { "commit": "1e5ab69cada2862cbc458ae322bdc166c244f0f8", "date": "2019-05-13 19:10:24 -0400", "subject": "Improve coverage in config/config module." }, { "commit": "57281d479296627e30cccd00c089f3fb40a076ca", "date": "2019-05-13 18:05:54 -0400", "subject": "Add MAX_ASSIGN() macro.", "body": "This improves coverage in cases where the compared values may be always ascending or descending." }, { "commit": "15a33bf74be84bda822e96c91e37479419b451a9", "date": "2019-05-13 17:10:41 -0400", "subject": "Error on multiple option alternate names and simplify help command.", "body": "There are currently no options with multiple alternate (deprecated) names so the code to render them in the help command could not be covered.\n\nRemove the uncovered code and add an error when multiple alternate names are configured. It's not clear that the current code was handling this correctly, so it will need to be reviewed if it comes up again." }, { "commit": "2d2bec842a2c424d5a36c98dc3a465da1696caf4", "date": "2019-05-13 13:36:24 -0400", "subject": "Improve coverage in perl/exec module." }, { "commit": "431532574b1e2e59979bd6cf3c333979d0817ad2", "date": "2019-05-13 07:51:11 -0400", "subject": "Add testUser() and testGroup().", "body": "Retrieve the name of the current user/group used for testing." }, { "commit": "31d0fe5f50a1a061c3ffbf7d194fafffee6a34b7", "date": "2019-05-11 18:20:57 -0400", "subject": "Improve log performance, simplify macros, rename logWill() to logAny().", "body": "Pre-calculate the value used by logAny() to improve performance and make it more likely to be inlined.\n\nMove IF_LOG_ANY() into LOG_INTERNAL() to simplify the macros and improve performance of LOG() and LOG_PID(). If the message has no chance of being logged there's no reason to call logInternal().\n\nRename logWill() to logAny() because it seems more intuitive." }, { "commit": "87f36e814ea95696870711018c050725e8e7269f", "date": "2019-05-11 14:51:51 -0400", "subject": "Improve macros and coverage rules that were hiding missing coverage.", "body": "The branch coverage exclusion rules were overly broad and included functions that ended in a capital letter, which disabled all coverage for the statement. Improve matching so that all characters in the name must be upper-case for a match.\n\nSome macros with internal branches accepted parameters that might contain conditionals. This made it impossible to tell which branches belonged to which, and in any case an overzealous exclusion rule was ignoring all branches in such cases. Add the DEBUG_COVERAGE flag to build a modified version of the macros without any internal branches to be used for coverage testing. In most cases, the branches were optimizations (like checking logWill()) that improve production performance but are not needed for testing. In other cases, a parameter needed to be added to the underlying function to handle the branch during coverage testing.\n\nAlso tweak the coverage rules so that macros without conditionals are automatically excluded from branch coverage as long as they are not themselves a parameter.\n\nFinally, update tests and code where missing coverage was exposed by these changes. Some code was updated to remove existing coverage exclusions when it was a simple change." }, { "commit": "f819a32cdf94bc799a4902ab6aaa559cd11d4ef8", "date": "2019-05-11 07:57:49 -0400", "subject": "Improve efficiency of FUNCTION_LOG*() macros.", "body": "Call stackTraceTestStop()/stackTraceTestStart() once per block instead of with every param call. This was done to be cautious but is not necessary and slows down development.\n\nThese functions were never built into production so had no impact there." }, { "commit": "7e2f6a6a4365b48fc89672b5d7de4c1d8937caa6", "date": "2019-05-09 12:28:39 -0400", "subject": "Clarify that sort order must be ascending." }, { "commit": "f0f105ddeca7b3434d9c3bb78e25247b3c6b7584", "date": "2019-05-09 12:10:46 -0400", "subject": "Improve filter's notion of \"done\" to optimize filter processing.", "body": "Filters had different ideas about what \"done\" meant and this added complication to the group filter processing. For example, gzip decompression would detect end of stream and mark the filter as done before it had been flushed.\n\nImprove the IoFilter interface to give a consistent definition of done across all filters, i.e. no filter can be done until it has started flushing no matter what the underlying driver reports. This removes quite a bit of tricky logic in the processing loop which tried to determine when a filter was \"really\" done.\n\nAlso improve management of the input buffers by pointing directly to the prior output buffer (or the caller's input) to eliminate loops that set/cleared these buffers." }, { "commit": "d5fac35fe3efe79f2b39a0e1b5ad3bb1cb1dd173", "date": "2019-05-09 09:53:24 -0400", "subject": "Improve zero-length content handling in HttpClient object.", "body": "If content was zero-length then the IO object was not created. This put the burden on the caller to test that the IO object existed before checking eof.\n\nInstead, create an IO object even if it will immediately return eof. This has little cost and makes the calling code simpler.\n\nAlso add an explicit test for zero-length files in S3 and a few assertions." }, { "commit": "15531151d7b3c07f51c442cb8951a5781bcc39d4", "date": "2019-05-09 08:55:48 -0400", "subject": "Add --c option to request a C remote.", "body": "The rules for when a C remote is required are getting complicated and will get worse when restoreFile() is migrated.\n\nInstead, set the --c option when a C remote is required. This option will be removed when the remote is entirely implemented in C." }, { "commit": "c99c7c458b0a04d1f1a637be70bb4f8e8011feb0", "date": "2019-05-09 08:28:58 -0400", "subject": "Add pathExists() to Storage object.", "body": "The S3 driver did not get an implementation since S3 has a weak notion of paths, and it is not currently required." }, { "commit": "cb00030ee38148a99df9d5ddcaef64252b0b50c9", "date": "2019-05-08 18:58:07 -0400", "subject": "Remove dead code missed in 1b486847.", "body": "This commit removed all Perl references to spool storage but some stuff was left behind." }, { "commit": "f1eea2312104ce7fa87119d6ef50a554b154e954", "date": "2019-05-03 18:52:54 -0400", "subject": "Add macros for object free functions.", "body": "Most of the *Free() functions are pretty generic so add macros to make creating them as easy as possible.\n\nCreate a distinction between *Free() functions that the caller uses to free memory and callbacks that free third-party resources. There are a number of cases where a driver needs to free resources but does not need a normal *Free() because it is handled by the interface.\n\nAdd common/object.h for macros that make object maintenance easier. This pattern can also be used for many more object functions." }, { "commit": "7ae96949f18af90a9b07f1dd712f939ca7a1ec41", "date": "2019-05-03 18:09:58 -0400", "subject": "Various MemContext callback improvements.", "body": "Rename memContextCallback() to memContextCallbackSet() to be more consistent with other parts of the code.\n\nFree all context memory when an exception is thrown from a callback. Previously only the child contexts would be freed and this resulted in some allocations being lost. In practice this is probably not a big deal since the process will likely terminate shortly, but there may well be cases where that is not true." }, { "commit": "4a20d44c6b118143f1c1607bacac0d4e268f6ffe", "date": "2019-05-03 17:49:57 -0400", "subject": "Add common/macro.h for general-purpose macros.", "body": "Add GLUE() macro which is useful for creating identifiers.\n\nMove MACRO_TO_STR() here and rename it STRINGIFY(). This appears to be the standard name for this type of macro and it is also an awesome name." }, { "commit": "32ca27a20b13941cfab27672d6f383a0ba44fa20", "date": "2019-05-03 15:46:15 -0400", "subject": "Simplify storage object names.", "body": "Remove \"File\" and \"Driver\" from object names so they are shorter and easier to keep consistent.\n\nAlso remove the \"driver\" directory so storage implementations are visible directly under \"storage\"." }, { "commit": "8c712d89ebe10e3d318952a0b4db8cd09f8a580c", "date": "2019-05-02 17:52:24 -0400", "subject": "Improve type safety of interfaces and drivers.", "body": "The function pointer casting used when creating drivers made changing interfaces difficult and led to slightly divergent driver implementations. Unit testing caught production-level errors but there were a lot of small issues and the process was harder than it should have been.\n\nUse void pointers instead so that no casts are required. Introduce the THIS_VOID and THIS() macros to make dealing with void pointers a little safer.\n\nSince we don't want to expose void pointers in header files, driver functions have been removed from the headers and the various driver objects return their interface type. This cuts down on accessor methods and the vast majority of those functions were not being used. Move functions that are still required to .intern.h.\n\nRemove the special \"C\" crypto functions that were used in libc and instead use the standard interface." }, { "commit": "28359eea83206f6eeddd3fbc91a52cd42399e529", "date": "2019-05-02 16:33:23 -0400", "subject": "Update code count rules missed in 027c2638." }, { "commit": "0c816f94814767dd96040aa2cb299dfa169d59e5", "date": "2019-05-02 15:19:26 -0400", "subject": "Update comments for storageExists() and driver functions." }, { "commit": "498017bcf02560e101703e89b1119d0b48944835", "date": "2019-05-02 12:43:09 -0400", "subject": "Various Buffer improvements.", "body": "Add bufDup() and bufNewUsedC().\n\nArrange bufNewC() params to match bufNewUsedC() since they have always seemed backward.\n\nFix bufHex() to only render the used portion of the buffer and fix some places where used was not being set correctly.\n\nUse a union to make macro assignments for all legal values without casting. This is much more likely to catch bad assignments." }, { "commit": "59234f249e73a4038ee1ba5d2e80f8acc11640ce", "date": "2019-04-29 18:36:57 -0400", "subject": "Use THROW_ON_SYS_ERROR*() to improve code coverage.", "body": "There is only one instance in the core code where this helps. It is mostly helpful in the tests.\n\nThere is an argument to be made that only THROW_SYS_ERROR*() variants should be used in the core code to improve test coverage. If so, that will be the subject of a future commit." }, { "commit": "683b096e187605c5cf16a727cd2c413540e4d150", "date": "2019-04-29 18:03:32 -0400", "subject": "Don't append strerror() to error message when errno is 0.", "body": "Some functions (e.g. getpwnam()/getgrnam()) will return an error but not set errno. In this case there's no use in appending strerror(), which will be \"Success\". This is confusing since an error has just been reported.\n\nAt least in the examples above, an error with no errno set just means \"missing\" and our current error message already conveys that." }, { "commit": "6ad44db9a0a30ad933a6ca8012de52558b7b9c02", "date": "2019-04-29 17:30:06 -0400", "subject": "Merge duplicated contributor." }, { "commit": "518bba1ed950633746f33474cbfa90f76324e345", "date": "2019-04-29 17:22:01 -0400", "subject": "Add missing assert." }, { "commit": "af33126cb68915db9644ca941fc2490d09107b0c", "date": "2019-04-29 17:17:14 -0400", "subject": "Allow StorageFileWrite to set user, group, and modification time.", "body": "The S3 driver will throw an error if these options are set since they are not supported." }, { "commit": "d0c296bd5b67966fd35fd9f70c25788dd6de0c34", "date": "2019-04-29 16:10:27 -0400", "subject": "Fix segfault when process-max > 8 for archive-push/archive-get.", "body": "The remote list was at most 9 (based on pg[1-8]-* max index) so anything over 8 wrote into unallocated memory.\n\nThe remote for the main process is (currently) stored in position zero so do the same for remotes started from locals, since there should only be one. The main process will need to start more remotes in the future which is why there is extra space." }, { "commit": "c935b1c9e83d6f14644de3aa5f36011234e69423", "date": "2019-04-29 15:20:54 -0400", "subject": "Add missing httpUriEncode() in S3 request.", "body": "This was not a live bug since the files currently handled by C can't have special characters in them." }, { "commit": "62b48d8a5a9bb7aa962e96566073dd58cfdb4436", "date": "2019-04-29 15:14:10 -0400", "subject": "Allow storageInfo() to follow links.", "body": "This allows info to be retrieved from linked files/paths in a single step." }, { "commit": "60edadf71dbbe6c82c5a83bcebee36a16b42ed88", "date": "2019-04-29 14:54:49 -0400", "subject": "Expose handle (file descriptor) from IoWrite when applicable.", "body": "This is a followup to dee90d3e which exposed file handles for IoRead.\n\nAlso expose handle for StorageDriverPosixFileRead missed in dee90d3e." }, { "commit": "e2141cc05faa4032f7da55afacc57bf17ce11838", "date": "2019-04-29 14:23:37 -0400", "subject": "Add missing space." }, { "commit": "027c2638719dffa9ba99250085c403e89a2a8a9a", "date": "2019-04-26 08:08:23 -0400", "subject": "Add configure script for improved multi-platform support.", "body": "Use autoconf to provide a basic configure script. WITH_BACKTRACE is yet to be migrated to configure and the unit tests still use a custom Makefile.\n\nEach C file must include \"build.auto.conf\" before all other includes and defines. This is enforced by test.pl for includes, but it won't detect incorrect define ordering.\n\nUpdate packages to call configure and use standard flags to pass options." }, { "commit": "3505559a808855600016dc73c5aec3843e51bfaf", "date": "2019-04-24 13:23:32 -0400", "subject": "Update test containers with PostgreSQL minor releases and liblz4.", "body": "Update RHEL repos that have changed upstream. Remove PostgreSQL 9.3 since the RHEL6/7 packages have disappeared.\n\nRemove PostgreSQL versions from U12 that are still getting minor updates so the container does not need to be rebuilt.\n\nLZ4 is included for future development, but this seems like a good time to add it to the containers." }, { "commit": "1ae8a6a71665c12bec6e20741df29ba4792bf8f8", "date": "2019-04-23 20:52:03 -0400", "subject": "Add build-max option to set max build processes.", "body": "Currently this controls make processes via -j." }, { "commit": "c11c936366fd93a6cdb143d7d93a1d8f249ee9c2", "date": "2019-04-23 20:19:31 -0400", "subject": "Reduce ScalityS3 processes since only two are needed." }, { "commit": "52b0b81976df5583ebe12189d8697dd66d23e84b", "date": "2019-04-23 19:33:55 -0400", "subject": "Add storageInfoList() to get detailed info about all entries in a path.", "body": "The function provides all the file/path/link information required to build a backup manifest.\n\nAlso update storageInfo() to provide the same information for a single file." }, { "commit": "f492f0571b145d499f4ff9017219794a5a3c7a1b", "date": "2019-04-23 17:08:34 -0400", "subject": "Add *Save() functions to most Info objects.", "body": "At the same time change the way that load constructors work (and are named) so that Ini objects do not persist after the constructors complete.\n\ninfoArchiveSave() is excluded from this commit since it is just a trivial call to infoPgSave() and won't be required soon." }, { "commit": "f41112a4634421071d80686ae19042c652576cb3", "date": "2019-04-23 14:02:30 -0400", "subject": "Add harnessInfoChecksum/Z() to ease creation of test info files." }, { "commit": "aebac47cd5fa21f6e62ee3dce3ef13abf59ca61f", "date": "2019-04-23 13:58:19 -0400", "subject": "Extern infoHash() so it can be used by other modules.", "body": "This is currently needed only for testing, but there's no reason not to expose the function to everyone." }, { "commit": "cddb0c05b444aaed388e53e0cd0b02148307ca87", "date": "2019-04-23 13:03:22 -0400", "subject": "Add iniSave() and iniMove() to Ini object.", "body": "iniSave() sorts alphabetically to maintain compatibility with the expect tests, but we plan to change this behavior when the migration is complete." }, { "commit": "c650134a0414c154eb21609b363aeceafbfdda60", "date": "2019-04-22 18:46:29 -0400", "subject": "Add ioWriteStr() and ioWriteStrLine().", "body": "These function names make it clearer what is being written.\n\nThe old ioWriteLine() has been repurposed to write buffers." }, { "commit": "81f652137c8f3179aad24d3283a4141b0075ae66", "date": "2019-04-22 18:41:01 -0400", "subject": "Add separate functions to encode/decode each JSON type.", "body": "In most cases the JSON type is known so this is more efficient than converting to Variant first, both in terms of memory and time.\n\nAlso rename some of the existing functions for consistency." }, { "commit": "f100ea0ff44e173299e8f691115b9e7ce68d422b", "date": "2019-04-22 17:52:23 -0400", "subject": "Add constant for maximum buffer sizes required by cvt*() functions.", "body": "Also update Variant to use cvt*() in all cases. Variant was written before these functions were available and not all cases were updated." }, { "commit": "f5739051eba3dae6cbee6d1fc0f72c36705c3be1", "date": "2019-04-22 17:17:56 -0400", "subject": "Add true and false String constants." }, { "commit": "47491e3c47e84be17263ce3b897ab3fcd8879a3f", "date": "2019-04-22 16:04:04 -0400", "subject": "varNewKv() accepts a KeyValue object rather than creating one.", "body": "This allows for more flexibility about when the Variant is created." }, { "commit": "fdf19e5ab68c64f6c063c265bd3ddc5b39b56620", "date": "2019-04-22 09:00:50 -0400", "subject": "Refactor Ini interface to expose String values instead of Variant.", "body": "Variants were being used to expose String and StringList types but this can be done more simply with an additional method.\n\nUsing only strings also allows for a more efficient implementation down the road." }, { "commit": "cc39bddc15b7cb5bba5dd8443325ee199e8aa12b", "date": "2019-04-22 08:47:32 -0400", "subject": "Refactor main() as a switch() statement.", "body": "This makes it clearer what has been migrated and where the new C implementations should go." }, { "commit": "38286272596d7b53b88c3f4f081d6c7dfc9360d8", "date": "2019-04-21 14:59:32 -0400", "subject": "Fix missing const." }, { "commit": "e7255be108b6b85bb736934b19abdef32cbd39e8", "date": "2019-04-20 11:25:04 -0400", "subject": "Only process next filter in IoFilterGroup when input buffer is full or flushing.", "body": "This greatly reduces calls to filter processing, which is a performance benefit, but also makes the trace logs smaller and easier to read.\n\nHowever, this means that ioWriteFlush() will no longer work with filters since a full flush of IoFilterGroup would require an expensive reset. Currently ioWriteFlush() is not used in this scenario so for now just add an assert to ensure it stays that way." }, { "commit": "e513c52c0973772465a81a5db2ba18d0f956d686", "date": "2019-04-20 08:16:17 -0400", "subject": "Add macros to create constant Buffer objects.", "body": "These are more efficient than creating buffers in place when needed.\n\nAfter replacement discovered that bufNewStr() and BufNewZ() were not being used in the core code so removed them. This required using the macros in tests which is not the usual pattern." }, { "commit": "c9168028c6c43d535a5663cb17ce93945951cb7e", "date": "2019-04-19 14:38:11 -0400", "subject": "Improve performance of non-blocking reads by using maximum buffer size.", "body": "Since the introduction of blocking read drivers (e.g. IoHandleRead, TlsClient) the non-blocking drivers have used the same rules for determining maximum buffer size, i.e. read only as much as requested. This is necessary so the blocking drivers don't get stuck waiting for data that might not be coming.\n\nInstead mark blocking drivers so IoRead knows how much buffer to allow for the read. The non-blocking drivers can now request the maximum number of bytes allowed by buffer-size." }, { "commit": "0c866f52c69ee2bd6af20e67af78bad94c4048af", "date": "2019-04-19 11:40:39 -0400", "subject": "Update code to use new unsigned int Variant type and config methods." }, { "commit": "9f0829cbf2fcd9be869cac21fbf974fd7ecce019", "date": "2019-04-19 11:29:08 -0400", "subject": "Add cfgOptionUInt() and cfgOptionUInt64().", "body": "These are better than casting from cfgOptionInt() since bounds checking is performed." }, { "commit": "1adcbc5c913bddac3a2078b2c5b7329617fa504c", "date": "2019-04-19 11:22:43 -0400", "subject": "Add unsigned int Variant type.", "body": "This is better than using (unsigned int)varUInt64() because bounds checking is performed." }, { "commit": "c45ae5f221ba9cc5e65f585920cc1ea23e3dd293", "date": "2019-04-19 08:41:17 -0400", "subject": "Begin v2.14 development." }, { "commit": "41f3874822faf3f859f46867c0fe965f7156b123", "date": "2019-04-18 21:26:02 -0400", "subject": "v2.13: Bug Fixes" }, { "commit": "7390952d8e99649077a6d4b577a483e6c38a3ecd", "date": "2019-04-18 21:24:10 -0400", "subject": "Harden IO filters against zero input and optimize zero output case.", "body": "Add production checks to ensure no filter gets a zero-size input buffer.\n\nAlso, optimize the case where a filter returns no output. There's no sense in running downstream filters if they have no new input." }, { "commit": "2d73de1d360e0b7bc66b4db9e6b3a0e441927230", "date": "2019-04-18 21:21:35 -0400", "subject": "Fix zero-length reads causing problems for IO filters that did not expect them.", "body": "The IoRead object was passing zero-length buffers into the filter processing code but not all the filters were happy about getting them.\n\nIn particular, the gzip compression filter failed if it was given no input directly after it had flushed all of its buffers. This made the problem rather intermittent even though a zero-length buffer was being passed to the filter at the end of every file. It also explains why tweaking compress-level or buffer-size allowed the file to go through.\n\nSince this error was happening after all processing had completed, there does not appear to be any risk that successfully processed files were corrupted." }, { "commit": "670fa88a98c7e12c4e2e948d92476918d3048f7e", "date": "2019-04-18 13:21:24 -0400", "subject": "Add CHECK() macro for production assertions.", "body": "CHECK() works just like ASSERT() but is kept in production builds." }, { "commit": "b258aec0adcf6fdaf7a2494c66f1540aa720e345", "date": "2019-04-18 13:19:05 -0400", "subject": "Move lockRelease() to the end of exitSafe().", "body": "Releasing the lock too early was allowing other async processes to sneak in and start running before the current process was completely shut down.\n\nThe only symptom seems to have been mixed up log messages so not a very serious issue." }, { "commit": "b960919cf7322f03ee4f9681f0cb06da6b4c52de", "date": "2019-04-18 10:36:21 -0400", "subject": "Fix reliability of error reporting from local/remote processes.", "body": "Asserts were only only reported on stderr rather than being returned through the protocol layer. This did not appear to be very reliable.\n\nInstead, report the assert through the protocol layer like any other error. Add a stack trace if an assert error or debug logging is enabled." }, { "commit": "281d2848b92bf7dba36018127cb9238662d7875b", "date": "2019-04-17 18:39:35 -0400", "subject": "Option to build documentation from current apt.postgres.org packages.", "body": "This is useful for testing any issue currently being seen in the field.\n\nWe'll also need to add a \"yum\" option at some point." }, { "commit": "0d4ba3a39f10667bb0234a94850548ab2dd7ab2d", "date": "2019-04-17 18:18:55 -0400", "subject": "Fix Posix/CIFS error messages reporting the wrong filename on write/sync/close.", "body": "The reported file name was the destination file, not the temp file that is written to during atomic write operations." }, { "commit": "4c13955c05662c2df3fb13cfc1d5538c2a0010a0", "date": "2019-04-17 08:04:22 -0400", "subject": "Add macros to create constant Variant types.", "body": "These work almost exactly like the String constant macros. However, a struct per variant type was required which meant custom constructors and destructors for each type.\n\nPropagate the variant constants out into the codebase wherever they are useful." }, { "commit": "2dac4b598620693d1d564c0ecb2c124693357d6f", "date": "2019-04-16 13:39:58 -0400", "subject": "Add STR() macro to create constant String objects from runtime strings.", "body": "The STRING_CONST() macro worked fine for constants but was not able to constify strings created at runtime.\n\nAdd the STR() macro to do this by using strlen() to get the size.\n\nAlso rename STRING_CONST() to STRDEF() for brevity and to match the other macro name." }, { "commit": "a029eba8d56dc2167814669bc8c5ba12f2eaab80", "date": "2019-04-16 13:18:30 -0400", "subject": "Use a macro instead of a nested struct to create common String variables.", "body": "This makes the code a bit less obfuscated while still ensuring that these variables will be common to both String structures." }, { "commit": "a7281878ac8e058b528e49f80a525c09f62a39ed", "date": "2019-04-15 08:29:25 -0400", "subject": "Migrate backupRegExp() to C.", "body": "Removed the \"anchor\" parameter because it was never used in any calls in the Perl code so it was just a dead parameter that always defaulted to true." }, { "commit": "39ed4f763b923905b651938b7fe65c48e099b880", "date": "2019-04-12 18:13:01 -0400", "subject": "Various comment and assert fixes in the info modules." }, { "commit": "65a26ac4ba111c1e7e4bfd6c0a0bf1d84afd66e8", "date": "2019-04-12 18:10:39 -0400", "subject": "Convert commented cipherPass params to test params.", "body": "This param will show up in stack traces for test builds, but not production." }, { "commit": "c5157c03345eaf4b8e9e7e06190d75021e9d8e39", "date": "2019-04-12 09:03:34 -0400", "subject": "Automatically generate constants for command and option names.", "body": "These constants are easier than using cfgOptionName() and cfgCommandName() and lead to cleaner code and simpler to construct messages.\n\nString versions are provided. Eventually all the strings will be used in the config structures, but for now they are useful to avoid wrapping with strNew()." }, { "commit": "867690c08d5710d0cab27a9ee5ba879f7216abda", "date": "2019-04-12 08:33:10 -0400", "subject": "Begin v2.13 development.", "body": "Also update CentOS packages so documentation builds." }, { "commit": "4e57b689165cffd8c686f0f36d0c5dccb553b3e1", "date": "2019-04-11 09:14:22 -0400", "subject": "v2.12: C Implementation of Archive Push" }, { "commit": "df12cbb1625ed61c74d43ae3a308445f943b0570", "date": "2019-04-10 17:48:34 -0400", "subject": "Fix C code to recognize host:port option format like Perl does.", "body": "This was not an intentional feature in Perl, but it works, so it makes sense to implement the same syntax in C.\n\nThis is a break from other places where a -port option is explicitly supplied, so it may make sense to support both styles going forward. This commit does not address that, however." }, { "commit": "3aa521fed0838021209b4be36849feb2c7e40a2e", "date": "2019-04-10 13:37:24 -0400", "subject": "Fix compile flag accidentally removed in 5ee8388f." }, { "commit": "25cea0bd0a22de2f83a2ded786e2facc86ff4b10", "date": "2019-04-09 11:08:27 -0400", "subject": "Add process id to C archive-get and archive-push logging.", "body": "This was missed in the original migration. There was no functional issue, but logging the process ids is useful for debugging." }, { "commit": "8c202c77dac74d919962f69acb279b583b4272ff", "date": "2019-04-09 11:01:35 -0400", "subject": "Add process id to ProtocolParallelJob.", "body": "This exposes the process that performed to job to the caller for logging purposes." }, { "commit": "4ace7edbd9e849d5a7a5d8b20e08c0c3e2098a02", "date": "2019-04-09 10:54:36 -0400", "subject": "Allow process id in C logging", "body": "The default process id in C logging has always been zero. This should have been updated when multi-processing was introduced in C, but it was missed." }, { "commit": "6099729e922893312e001a3394db43d0c2b341ad", "date": "2019-04-08 19:38:06 -0400", "subject": "Improve error message when an S3 bucket name contains dots.", "body": "The Perl lib we have been using for TLS allows dots in wildcards, but this is forbidden by RFC-2818. The new TLS implementation in C forbids this pattern, just as PostgreSQL and curl do.\n\nHowever, this does present a problem for users who have been using bucket names with dots in older versions of pgBackRest. Since this limitation exists for security reasons there appears to be no option but to take a hard line and do our best to notify the user of the issue as clearly as possible." }, { "commit": "21c83eea59f5fb4d3c366a1e9782d26356801675", "date": "2019-04-08 17:21:20 -0400", "subject": "Fix issues when log-level-file=off is set for the archive-get command.", "body": "This problem was not specific to archive-get, but that was the only place it was expressing in the last release. The new archive-push was also affected.\n\nThe issue was with daemon processes that had closed all their file descriptors. When exec'ing and setting up pipes to communicate with a child process the dup2() function created file descriptors that overlapped with the first descriptor (stdout) that was being duped into. This descriptor was subsequently closed and wackiness ensued.\n\nIf logging was enabled (the default) that increased all the file descriptors by one and everything worked.\n\nFix this by checking if the file descriptor to be closed is the same one being dup'd into. This solution may not be generally applicable but it works fine in this case." }, { "commit": "8ac422dca95c8761fc57450ed74061ff286ff0c3", "date": "2019-04-07 21:09:29 -0400", "subject": "Close log file before exec().", "body": "The log file should be closed before exec() so the child process does not retain a reference to it." }, { "commit": "ade20e5c657f1a05bbe00c1f693346bfadd8b795", "date": "2019-04-07 19:11:20 -0400", "subject": "Fix typo in error message." }, { "commit": "9f3425f6dd2892721935103ff3f75555b7408dd5", "date": "2019-04-07 18:47:04 -0400", "subject": "Skip coverage for macros with numbers in their name.", "body": "This was an oversight in the old regular expression." }, { "commit": "c72a94cfec64096d0f18fa1385b1347918be4fdb", "date": "2019-04-07 18:20:03 -0400", "subject": "Increase process-max limit to 999.", "body": "Recent hardware has outstripped the old default so increase it to something that should last for a while." }, { "commit": "9a7eab9428b8ce34b31b878bd5e6af4f842ce8d7", "date": "2019-04-07 18:12:07 -0400", "subject": "Allow three-digits process IDs in logging.", "body": "This is required to support process-max > 99 or else there will be formatting/alignment issues in the logs." }, { "commit": "2a85df95c121528d826e30526a2fd251638624e7", "date": "2019-04-03 17:48:45 +0100", "subject": "Add assert missed in 1b486847.", "body": "Contributed by Cynthia Shang." }, { "commit": "1e5f2713b2936bd3252e0081a979a9d84eba19d0", "date": "2019-04-03 16:40:19 +0100", "subject": "Add memContextSwitch() missed in 5bdaa35f.", "body": "Contributed by Cynthia Shang." }, { "commit": "5504f286eb6765d3131f2ff99cb2b464a02c4589", "date": "2019-04-03 12:32:56 +0100", "subject": "Add test and asserts missed in abba2bd1.", "body": "Contributed by Cynthia Shang." }, { "commit": "be58b8fee799d29cc5f1df0147bce59b09982208", "date": "2019-04-03 12:04:44 +0100", "subject": "Add assert missed in 1b486847.", "body": "Contributed by Cynthia Shang." }, { "commit": "e97b8241a59f4dd56ea374b00b3fb9905a1febc3", "date": "2019-04-03 11:40:12 +0100", "subject": "Clarify that S3-compatible object stores are supported.", "body": "The documentation mentioned Amazon S3 frequently but failed to mention that other S3-compatible object stores are also supported.\n\nTone down the specific mentions of Amazon S3 and replace them with \"S3-compatible object store\" when appropriate." }, { "commit": "4c63279a19a6baa1f6854eee59cc804f6f89cb23", "date": "2019-04-02 13:50:02 +0100", "subject": "Add forkSafe() to handle fork errors.", "body": "fork() rarely fails but we should definitely detect when it does so." }, { "commit": "1b48684713220b3436b24b266e543196824e974f", "date": "2019-03-29 13:26:33 +0000", "subject": "The archive-push command is implemented entirely in C.", "body": "This new implementation should behave exactly like the old Perl code with the exception of updated log messages.\n\nRemove as much of the Perl code as possible without breaking other commands." }, { "commit": "251dbede8ff8a7206986106b8df8b08257cd7ebd", "date": "2019-03-27 21:14:06 +0000", "subject": "Add locking capability to the remote command.", "body": "When a repository server is configured, commands that modify the repository acquire a remote lock as well as a local lock for extra protection against multiple writers.\n\nInstead of the custom logic used in Perl, make remote locking part of the command configuration.\n\nThis also means that the C remote needs the stanza since it is used to construct the lock name. We may need to revisit this at a later date." }, { "commit": "7db8cedd68477dd511bb8bdf8b94b2d2925470dd", "date": "2019-03-27 20:59:28 +0000", "subject": "Add protocolKeepAlive() to send noops to all remotes.", "body": "While the local processes are doing their jobs the remote connection from the main process may timeout.\n\nSend occasional noops to ensure that doesn't happen." }, { "commit": "f8cbf5d78cbacfef253f8e75983e403e10049df0", "date": "2019-03-27 20:52:23 +0000", "subject": "Add TEST_64BIT() macro to detect 64-bit platforms.", "body": "This may not be the best way to detect 64-bit platforms but it seems to be working fine so far.\n\nCreate a macro to make it clearer what is being done and to make it easier to change the implementation." }, { "commit": "1fa103a4d23742af0fb16214a74b974cbe875724", "date": "2019-03-27 18:14:00 +0200", "subject": "Fix missing semicolon in code example." }, { "commit": "3181cd0ab8f09cbeca87d97e670e0901feb412a3", "date": "2019-03-26 18:46:44 +0200", "subject": "Set WAL long header flag in test function missed in e938a892.", "body": "This was missed because the unit tests were reusing a buffer without resetting it to zero, so this flag ended up still set when the test function was called.\n\nThis was not a live issue since it only expressed in tests and this code is not used in master yet." }, { "commit": "7364d859da8b4ee67e4b0d76e9c0d08a15fa546d", "date": "2019-03-26 16:00:15 +0200", "subject": "Add missing parens." }, { "commit": "5ee8388f482adc52129a9960bdb077e8c054edb0", "date": "2019-03-26 08:20:55 +0200", "subject": "Build test harness with the same warnings as code being tested.", "body": "The test harness was not being built with warnings which caused some wackiness with an improperly structured switch. Just use the same warnings as the code being tested.\n\nAlso enable warnings on code that is not directly being tested since other code modules are frequently modified during testing." }, { "commit": "f709334851cfbe254ce9f13266adba4504e9af64", "date": "2019-03-25 23:59:56 +0200", "subject": "Fix comment content and formatting." }, { "commit": "abba2bd13269b3d51802cb7bfba18a0abae47342", "date": "2019-03-25 20:35:20 +0400", "subject": "Add strLstMergeAnti() for merge anti-joins.", "body": "We deal with some pretty big lists in archive-push so a nested-loop anti-join looked like it would not be efficient enough.\n\nThis merge anti-join should do the trick even though both lists must be sorted first." }, { "commit": "538e2c7474394f1f24bb0899bc7d85bf7c68bd5a", "date": "2019-03-25 09:45:36 +0400", "subject": "Add storagePg()/storagePgWrite() to storage helper.", "body": "Add read/write storage helper functions for the PostgreSQL data directory." }, { "commit": "444b4f86403088f24883ffe0b940a6402159bfc0", "date": "2019-03-25 09:17:15 +0400", "subject": "Allow warnings to be written by archiveAsyncStatusOkWrite().", "body": "Migrate this feature to the C code since archive-push will need it." }, { "commit": "8820d695747b40b73ead6d32a408e7d2804bd192", "date": "2019-03-25 08:12:38 +0400", "subject": "Use a single file to handle global errors in async archiving.", "body": "The prior behavior on a global error (i.e. not file specific) was to write an individual error file for each WAL file being processed. On retry each of these error files would be removed, and if the error was persistent, they would then be recreated. In a busy environment this could mean tens or hundreds of thousands of files.\n\nAnother issue was that the error files could not be written until a list of WAL files to process had been generated. This was easy enough for archive-get but archive-push requires more processing and any errors that happened when generating the list would only be reported in the pgBackRest log rather than the PostgreSQL log.\n\nInstead write a global.error file that applies to any WAL file that does not have an explicit ok or error file. This reduces churn and allows more errors to be reported directly to PostgreSQL." }, { "commit": "1f6f3f673e49a2dff4dff465d183a2f6928138e6", "date": "2019-03-24 18:29:20 +0400", "subject": "Update default WAL segment size comment." }, { "commit": "1fff60ad2ad56f303080af666ed76e82dbb171b7", "date": "2019-03-24 14:34:45 +0400", "subject": "Remove unused infoArchiveCheckPg() function.", "body": "The idea was to use this function for archive-push, but in the end archive-push required two very different versions of the function." }, { "commit": "8560db5c42fdc07de44b86daf76ad195282f67d7", "date": "2019-03-24 13:54:05 +0400", "subject": "Add constants for .ok/.error status extensions." }, { "commit": "7cf7373761cb83253a502e8d0af4f925c86a7944", "date": "2019-03-21 21:11:36 +0400", "subject": "Refactor PostgreSQL interface to remove most code duplication.", "body": "Having a copy per version worked well until it was time to add new features or modify existing functions. Then it was necessary to modify every version and try to keep them all in sync.\n\nConsolidate all the PostgreSQL types into a single file using #if for type versions. Many types do not change or change infrequently so this cuts down on duplication. In addition, it is far easier to see what has changed when a new version is added.\n\nUse macros to write the interface functions. There is still duplication here since some changes require a new copy of the macro, but it is far less than before." }, { "commit": "e938a89250bd6a6512d4d6b5217a9750c848ca49", "date": "2019-03-19 19:44:06 +0400", "subject": "Add WAL info to PostgreSQL interface.", "body": "This allows the WAL header to be read for any supported version on PostgreSQL." }, { "commit": "1c9645d4166165f70bf837b7d053415d78a216f2", "date": "2019-03-19 19:20:38 +0400", "subject": "Add missing static keyword." }, { "commit": "5c732e992904bc7f3201c119787d84cf05a8997d", "date": "2019-03-18 22:10:25 +0400", "subject": "Remove redundant documentation from PostgreSQL interface files and clarify ambiguous function names.", "body": "Move the documentation to postgres/interface.c so it can be updated without having to update N source files.\n\nThe \"is\" function was not very specific so rename to \"controlIs\"." }, { "commit": "e26d510d0c1d8157ef5d9149bed9c2902ec29ba2", "date": "2019-03-17 22:11:35 +0400", "subject": "Use restore command for remote performances tests.", "body": "Since archive-push is being moved to C, the Perl remote will no longer work with that command.\n\nEventually this module will need to be rewritten in C, but for now just use the restore command which is planned to be migrated last." }, { "commit": "856a369b863fb134ec249b7036eea70ba56d89ac", "date": "2019-03-17 22:00:54 +0400", "subject": "Add file write to the S3 storage driver.", "body": "Now that repositories are writable the storage drivers that don't yet support file writes need to be updated to do so.\n\nNote that the part size for multi-part upload has not been defined as a proper constant. This will become an option in the near future so it doesn't seem worth creating a constant that we might then forget to remove." }, { "commit": "7193738288e7c25bba526f5133fad9d4cf70d4c0", "date": "2019-03-17 21:38:07 +0400", "subject": "Add document creation to XML objects.", "body": "The xml objects only exposed read methods of the underlying libxml2.\n\nThis worked for S3 commands that only received data but to send data we need to be able to create XML documents from scratch.\n\nAdd the ability to create empty documents and add nodes and contents." }, { "commit": "fc974626cd060271c39480ea5ac960b8db903699", "date": "2019-03-17 08:35:40 +0400", "subject": "Add a note regarding verifying checkpoint against replay position." }, { "commit": "8ebc6d6c34e7ccc7e4d07f1321fd4b1dce1579c7", "date": "2019-03-16 21:50:19 +0400", "subject": "Add file write to the remote storage driver.", "body": "Now that repositories are writable the storage drivers that don't yet support file writes need to be updated to do so." }, { "commit": "2d386cd26672ed6c1ff2ca20465b7c7505cf9de6", "date": "2019-03-16 16:14:10 +0400", "subject": "Move WAL path prefix logic into walPath().", "body": "This logic is used by both archive-push and archive-get." }, { "commit": "12273a10346a5520ce556a19df7b0cd4f9be74be", "date": "2019-03-16 15:48:50 +0400", "subject": "Add storageRepoWrite() to storage helper.", "body": "Writable repos are allowed with the addition of the CIFS driver, so add a helper function." }, { "commit": "66c2f4cd2e43f05d65e06f3c89094fbdf702d60d", "date": "2019-03-16 15:27:38 +0400", "subject": "Make notion of current PostgreSQL info ID in C align with Perl.", "body": "The C code was assuming that the current PostgreSQL version in archive.info/backup.info was the most recent item in the history, but this is not always the case with some stanza-upgrade scenarios. If a cluster is restored from before the upgrade and stanza-upgrade is run again, it will revert db-id to the original history item.\n\nInstead, load db-id from the db section explicitly as the Perl code does.\n\nThis did not affect archive-get since it does a reverse scan through the history versions and does not rely on the current version." }, { "commit": "b2b2cf0511b326c695e825bee0c5f5faf648224c", "date": "2019-03-16 15:00:02 +0400", "subject": "Fix issues with remote/local command logging options.", "body": "Logging was being enable on local/remote processes even if --log-subprocess was not specified, so fix that.\n\nAlso, make sure that stderr is enabled at error level as it was on Perl. This helps expose error information for debugging.\n\nFor remotes, suppress log and lock paths since these are not applicable on remote hosts. These options should be set in the local config if they need to be overridden." }, { "commit": "d377e926c806faa8d61744e27eacfa7bf610c445", "date": "2019-03-16 13:07:43 +0400", "subject": "httpClientRequest() accepts a body parameter.", "body": "None of our C HTTP requests have needed to output a body, but they will with the migration of archive-push.\n\nAlso, add constants that are useful when POSTing/PUTing data." }, { "commit": "078df66e2c66ea992c423ffc92a789a4f036b622", "date": "2019-03-16 12:51:37 +0400", "subject": "Add httpHeaderDup().", "body": "Allow duplication of headers and updating of redactions." }, { "commit": "be670e25450a174f6652850af765805de1139263", "date": "2019-03-16 12:32:54 +0400", "subject": "Add hash size constants and extern hash type constant.", "body": "The size constants are convenient for creating data structures of the proper size.\n\nThe hash type constant must be extern'd so that results can be pulled from a filter." }, { "commit": "76560b3cf0959c11b92e3b98c640f5e6070b1e7a", "date": "2019-03-16 12:26:25 +0400", "subject": "Add missing const to cryptoHashOne() and cryptoHashOneStr()." }, { "commit": "0eb4c2c8291ed0dc5c211594b5e85e1b31a9d84d", "date": "2019-03-16 12:21:16 +0400", "subject": "Fix incorrect buffer size used in cryptoHashOne().", "body": "This was missing when bufUsed() was introduced.\n\nIt is not currently a live issue, but becomes a problem in the new archive-push code where the entire buffer is not always used." }, { "commit": "9c1549585e0d8a4613954bbfc194dd0dc0a537a8", "date": "2019-03-15 22:18:56 +0400", "subject": "Add command for removing all Docker containers to the Vagrantfile." }, { "commit": "b68d1d60a1532e9d1ef2703b043d538643d6f8cc", "date": "2019-03-15 22:16:50 +0400", "subject": "Add cvtSSizeToZ() and debug macros." }, { "commit": "d16bff64cdcb5be6c6ac3b8f31d394c2393b7649", "date": "2019-03-15 10:30:48 +0400", "subject": "Add missing log param and assert." }, { "commit": "a6e219bc8bf1f6d93a24ba120fa9614d7b667ce3", "date": "2019-03-15 10:25:24 +0400", "subject": "Improve comment, remove duplicated header and extraneous braces." }, { "commit": "5554377632807a3e778273b9882a191e8a6edae6", "date": "2019-03-15 10:20:52 +0400", "subject": "Make strLstDup() null-tolerant.", "body": "Duping a NULL StringList without checking if it is NULL is a useful capability." }, { "commit": "9382283586da4794d3585dbf6680c3a2f3d10a33", "date": "2019-03-14 13:48:33 +0400", "subject": "Fix issues when a path option is / terminated.", "body": "This condition was not being properly checked for in the C code and it caused problems in the info command, at the very least.\n\nInstead of applying a local fix, introduce a new path option type that will rigorously check the format of any incoming paths." }, { "commit": "b8ebea6b1c3cf2a26c44f04c7552c66fd9acb44a", "date": "2019-03-14 13:38:55 +0400", "subject": "Add separate archive-push-async command.", "body": "This command was previously forked off from the archive-push command which required a bit of artificial option and log manipulation.\n\nA separate command is easier to test and will work on platforms that don't have fork(), e.g. Windows." }, { "commit": "982b47c5ecec475703860f52a0eabe7d501a96e2", "date": "2019-03-14 13:28:33 +0400", "subject": "Add CIFS storage driver.", "body": "This driver borrows heavily from the Posix driver.\n\nAt this point the only difference is that CIFS does not allow explicit directory fsyncs so they need to be suppressed. At some point the CIFS diver will also omit link support.\n\nWith the addition of this driver repository storage is now writable." }, { "commit": "941dbb47313b25339d438e7a57975bcd88c65168", "date": "2019-03-14 13:02:19 +0400", "subject": "Remove package patch merged to upstream." }, { "commit": "cf5a5b7b9a97fb5907990812745d42ec4e3de7fb", "date": "2019-03-11 10:43:35 +0200", "subject": "Begin v2.12 development." }, { "commit": "68d20edea6cbfc7b8b6db69633e08ac473821547", "date": "2019-03-10 18:56:00 +0200", "subject": "v2.11: C Implementation of Archive Get" }, { "commit": "2ef5ad70a29b36db570f8f50a2ba821fc4ee02ff", "date": "2019-03-10 13:27:30 +0200", "subject": "Move crypto module to common/crypto.", "body": "It makes sense for the crypto code to be in common since it is not pgBackRest-specific.\n\nAlso combine the crypto tests into a single module." }, { "commit": "95597be81e7450fdbb88a6c17b549e9eb750d5dd", "date": "2019-03-10 13:11:20 +0200", "subject": "Move compress module to common/compress.", "body": "It makes sense for the compression code to be in common since it is not pgBackRest-specific." }, { "commit": "2f63babe9dfa6f49d5fbc9a6e039e1a1dfa5054d", "date": "2019-03-10 11:55:01 +0200", "subject": "Move help/help test module to command/help." }, { "commit": "e4e2606fce1ef28e82f359581e1a90be6d10414c", "date": "2019-03-10 11:03:52 +0200", "subject": "Add additional options to backup.manifest for debugging purposes.", "body": "Add the buffer-size, compress-level, compress-level-network, and process-max options to the backup:option section in backup.manifest to aid in debugging.\n\nIt may also make sense to propagate these options up to backup.info so they can be displayed in the info command, but for now this is deemed sufficient." }, { "commit": "21f56f64ebe0af34b61793efad1730707a8e9f39", "date": "2019-03-10 10:38:12 +0200", "subject": "Add hints when unable to find a WAL segment in the archive.", "body": "When this error happens in the context of a backup it can be a bit mystifying as to why the backup is failing. Add some hints to get the user started.\n\nThese hints will appear any time a WAL segment can't be found, which makes the hint about the check command redundant when the user is actually running the check command, but it doesn't seem worth trying to exclude the hint in that case." }, { "commit": "bc9fb0f59ae4d9cc843fa8ac2d9d434cf850910d", "date": "2019-03-10 09:16:25 +0200", "subject": "Add note for CSTD settings on BSD variants.", "body": "Suggested by ucando, jungle-boogie, Luca Ferrari." }, { "commit": "786e77a9feb0ec3133d7f1ab7efe0037816a1382", "date": "2019-03-09 11:40:55 +0200", "subject": "Make DESTDIR fully-configurable in the Makefile.", "body": "DESTDIR always had /usr/bin appended which was a problem systems that don't use /usr/bin as the install location for binaries.\n\nInstead, use the value of DESTDIR exactly and update the Debian packages accordingly." }, { "commit": "60fe5b7365c9eaaa03e954cac7dec14777aa2461", "date": "2019-03-09 11:03:47 +0200", "subject": "Error when parameters are passed to a command that does not accept parameters.", "body": "This behavior allowed a command like this to run without error:\n\npgbackrest backup --stanza=db full\n\nEven though it actually performed an incremental backup in most circumstances because the `full` parameter was ignored.\n\nInstead, output an error and exit." }, { "commit": "cad6fedb7ba2877f7ea1b2e23415c42b6bda3483", "date": "2019-03-07 15:54:59 +0200", "subject": "Prevent option warning from being output when running help command.", "body": "This warning was being output when getting help if retention was not set:\n\nWARN: option repo1-retention-full is not set, the repository may run out of space\n\nSuppress this when getting help since the warning will display by default on a system that is not completely configured." }, { "commit": "3d7edc4ca4db2f75a33d43ffc5131a6a20086507", "date": "2019-03-07 14:08:35 +0200", "subject": "Add clean and uninstall targets to Makefile.", "body": "Contributed by Luca Ferrari." }, { "commit": "d441061168ec56d22082a6ff54e5f1fb02cc8eae", "date": "2019-03-02 15:01:02 +0200", "subject": "Create test matrix for mock/all to increase coverage and reduce tests.", "body": "The same test configurations are run on all four test VMs, which seems a real waste of resources.\n\nVary the tests per VM to increase coverage while reducing the total number of tests. Be sure to include each major feature (remote, s3, encryption) in each VM at least once." }, { "commit": "f7d1d4400f1edcdd3216dfa5c9d1e306946c36a2", "date": "2019-03-01 19:04:26 +0200", "subject": "Create test matrix for mock/expire to increase coverage and reduce tests.", "body": "The same test configurations are run on all four test VMs, which seems a real waste of resources.\n\nVary the tests per VM to increase coverage while reducing the total number of tests." }, { "commit": "91622942c2e465cb46571343d0e40f8b7cef8742", "date": "2019-03-01 17:12:41 +0200", "subject": "Create test matrix for mock/archive-stop to increase coverage and reduce tests.", "body": "The same test configurations are run on all four test VMs, which seems a real waste of resources.\n\nVary the tests per VM to increase coverage while reducing the total number of tests. Be sure to include each major feature (remote, s3, encryption) in each VM at least once." }, { "commit": "c307d9fdf9439661d2a94f215bbc7b1ef714e34f", "date": "2019-03-01 15:58:52 +0200", "subject": "Don't make a copy of the context name in the MemContext module.", "body": "This is very inefficient in terms of memory and time and dynamic context names were never utilized.\n\nJust require that context names be valid for the life of the context.\n\nIn practice they are all static strings." }, { "commit": "90709dfd213b1eb1dab3daff0101768f61be4b5f", "date": "2019-03-01 14:57:01 +0200", "subject": "Improve performance of context and memory allocations in MemContext module.", "body": "Allocations required a sequential scan through the allocation list for both contexts and memory. This was very inefficient since for the most part individual memory allocations are seldom freed directly, rather they are freed when their context is freed.\n\nFor both types of allocations track an index for the lowest free position. After an allocation of the free position, a sequential search will be required for the next allocation but this is still far better than doing a scan for every allocation.\n\nWith a moderately-sized dataset (500 history entries in backup.info), there is a 237X performance improvement when combined with the f74e88bb refactor.\n\nBefore:\n\n % cumulative self\n time seconds seconds name\n 65.11 331.37 331.37 memContextAlloc\n 16.19 413.78 82.40 memContextCurrent\n 14.74 488.81 75.03 memContextTop\n 2.65 502.29 13.48 memContextNewIndex\n 1.18 508.31 6.02 memFind\n\nAfter:\n\n % cumulative self\n time seconds seconds name\n 94.69 2.14 2.14 memFind\n\nFinding memory allocations in order to free or resize them is the next bottleneck, but this does not seem to be a major issue presently." }, { "commit": "f74e88bba9c7a7912f0b1fc322823f1b527042f8", "date": "2019-03-01 13:33:58 +0200", "subject": "Use contextTop/contextCurrent instead of memContextTop()/memContextCurrent() in MemContext module.", "body": "Using the functions internally is great for abstraction but not so great for performance on non-optimized builds.\n\nAlso, the functions end up prominent in any profiled build." }, { "commit": "6ce3310f8a2900d1af717da8d4c3345a9016933b", "date": "2019-03-01 09:10:14 +0200", "subject": "Update default documentation version to PostgreSQL 10.", "body": "Also update CentOS 6 and 7 versions to PostgreSQL 9.5 and 9.6 respectively." }, { "commit": "409360924151a561dd5dc122dbcd9173a4e6c950", "date": "2019-03-01 09:00:51 +0200", "subject": "Documentation builds on PostgreSQL 9.4-10.", "body": "More than likely 9.2-11 will work as well, but this has not been tested.\n\nHowever, 11 needs work on the group permissions introduced in that version." }, { "commit": "cb3b4fa24bbe271a517b50a3522bc5075d8fe6c7", "date": "2019-02-28 14:33:29 +0200", "subject": "Enable socket keep-alive on older Perl versions.", "body": "The prior method depended on IO:Socket:SSL to push the keep-alive options down to the socket but it only worked for recent versions of the module.\n\nInstead, create the socket directly using IO::Socket::IP if available or IO:Socket:INET as a fallback. The keep-alive option is set directly on the socket before it is passed to IO:Socket:SSL." }, { "commit": "0913523096cf9178ffa46595171dc16ab815148b", "date": "2019-02-28 09:51:19 +0200", "subject": "Cleanup local/remote protocol interaction from 9367cc46.", "body": "The command option was not being set correctly when a remote was started from a local. It was being set as 'local' rather than the command that the local was running as.\n\nAlso automatically select the remote protocol id based on whether it is started from a local (use the local protocol id) or from the main process (use 0).\n\nThese were not live issues but could cause strange behaviors as new features are added that might be hard to diagnose." }, { "commit": "db4b447be89878496f0a50905b2f51c1306b9de5", "date": "2019-02-27 23:03:02 +0200", "subject": "The archive-get command is implemented entirely in C.", "body": "This new implementation should behave exactly like the old Perl code with the exception of a few updated log messages.\n\nRemove as much of the Perl code as possible without breaking other commands." }, { "commit": "9367cc461cda63698caa04ddb262405eef05890d", "date": "2019-02-27 22:34:21 +0200", "subject": "Migrate local command to C.", "body": "The C local is only used for C commands in the main process.\n\nSome tweaking of the existing protocolGet() command was required. Originally the idea was to share the function for local and remote requests but the differences (as in Perl) were too great to make that practical." }, { "commit": "35abd4cd9517c4acf02d98bf386e1ef2ed2e8485", "date": "2019-02-27 21:10:52 +0200", "subject": "Add ProtocolParallel* objects for parallelizing commands.", "body": "Allows commands to be easily parallelized if the jobs are broken up into discrete, non-overlapping chunks." }, { "commit": "35acfae7c2328a70f978973aa1c7ed91af750d88", "date": "2019-02-27 19:48:30 +0200", "subject": "Add ProtocolCommand object.", "body": "This formalizes the creation of protocol commands, which was previously done by creating KeyValue objects manually." }, { "commit": "dee90d3e606262fe99dcc099867a96039540a1c2", "date": "2019-02-27 18:11:09 +0200", "subject": "Expose handle (file descriptor) from IoRead when applicable.", "body": "Some IO objects have file descriptors which can be useful for monitoring with select().\n\nIt might also be useful to expose handles for write objects but there is currently no use case." }, { "commit": "b1957b07f351a93fa64658f8c898420b4bbe68f5", "date": "2019-02-27 18:10:18 +0200", "subject": "Improve null-handling of varToLog()." }, { "commit": "ea2aef1d0ceff366b75f663281df511b8169eadd", "date": "2019-02-27 18:09:21 +0200", "subject": "Add lstRemove() to List object.", "body": "Because it is sometimes useful to remove items from a list." }, { "commit": "4be271ea2a1a7bed4e5165f10a8e62a19b4e7dc9", "date": "2019-02-27 18:07:16 +0200", "subject": "Improve fork harness to allow multiple children and setup pipes automatically.", "body": "There was a lot of extra boilerplate involved in setting up pipes so that is now automated.\n\nIn some cases testing with multiple children is useful so allow that as well." }, { "commit": "18b62a4220acabc4ba0018ed884e20f695304aed", "date": "2019-02-27 17:09:19 +0200", "subject": "Only run test-level stack trace by default for unit-tested modules.", "body": "This amends 70c30dfb which disabled test tracing in general.\n\nInstead, only enable test tracing by default for modules that are being unit tested. This saves lots of time but still ensures that test tracing is working and helps with debugging in unit tests.\n\nAlso rename the option to --debug-test-trace for a clarity." }, { "commit": "3a05359087560248dc0bc7d1ce35516c6a5d622f", "date": "2019-02-24 07:42:41 +0200", "subject": "Create test matrix for mock/stanza to increase coverage and reduce tests.", "body": "The same test configurations are run on all four test VMs, which seems a real waste of resources.\n\nVary the tests per VM to increase coverage while reducing the total number of tests. Be sure to include each major feature (remote, s3, encryption) in each VM at least once." }, { "commit": "6d3e18b181d08f4e1ed64c097346a3532e6005af", "date": "2019-02-24 06:55:59 +0200", "subject": "Reduce expect log level in mock/stanza tests.", "body": "The expect tests were originally a rough-and-ready type of unit test so monitoring changes in the expect log helped us detect changes in behavior.\n\nNow the stanza code is heavily unit-tested so the detailed logs mainly cause churn and don't have any measurable benefit.\n\nReduce the log level to DETAIL to make the logs less verbose and volatile, yet still check user-facing log messages." }, { "commit": "2f081f3ec7a0c9bb664eb5a426ec21859bb48722", "date": "2019-02-23 18:51:52 +0200", "subject": "Rename test modules for consistency.", "body": "The conventions for command and info tests have shifted in the C modules, though not even all the C modules got the message." }, { "commit": "d489eb87f7f7da58dd02812e5088f507e1cab491", "date": "2019-02-23 15:59:39 +0200", "subject": "Create test matrix for mock/archive to increase coverage and reduce tests.", "body": "The same test configurations are run on all four test VMs, which seems a real waste of resources.\n\nVary the tests per VM to increase coverage while reducing the total number of tests. Be sure to include each major feature (remote, s3, encryption) in each VM at least once." }, { "commit": "4a7588e604d3b39858f09e8c879e973bd4432ded", "date": "2019-02-23 15:13:23 +0200", "subject": "Create aliases for test VMs ordered by age.", "body": "This will allow for smarter allocation of tests in the next commit." }, { "commit": "59d7958914d2965d0690ebd579541c21a40ad201", "date": "2019-02-23 15:05:06 +0200", "subject": "Reduce expect log level in mock/archive tests.", "body": "The expect tests were originally a rough-and-ready type of unit test so monitoring changes in the expect log helped us detect changes in behavior.\n\nNow the archive code is heavily unit-tested so the detailed logs mainly cause churn and don't have any measurable benefit.\n\nReduce the log level to DETAIL to make the logs less verbose and volatile, yet still check user-facing log messages." }, { "commit": "a9cbf23f4cacb18d85e7a6f02cff198790a9e21f", "date": "2019-02-23 07:28:27 +0200", "subject": "Improve error when hostname cannot be found in a certificate.", "body": "Update error message with the hostname and more detail about what went wrong. Hopefully this will help in diagnosing certificate/hostname issues." }, { "commit": "1f66bda02ec9ae92403af2feeaf61505b3482932", "date": "2019-02-22 12:02:26 +0200", "subject": "Fix non-compliant JSON for options passed from C to Perl.", "body": "We have been using a hacked-up JSON generator to pass options from C to Perl since the C binary was introduced. This generator was not very compliant which led to issues with \\n, \", etc. inside strings.\n\nWe have a fully-compliant JSON generator now so use that instead." }, { "commit": "70c30dfb619a3ec2ea7d465d5b8e2014518b723d", "date": "2019-02-22 11:40:30 +0200", "subject": "Disable test-level stack trace by default.", "body": "Detailed stack traces for low-level functions (e.g. strCat, bufMove) can be very useful for debugging but leaving them on for all tests has become quite burdensome in terms of time. Complex operations like generating JSON on a large KevValue can lead to timeouts even with generous values.\n\nAdd a new param, --debug-trace, to enable test-level stack trace, but leave it off by default." }, { "commit": "ae86e6d5b2f6f86bc3ec1a4b1378d9b49e89799e", "date": "2019-02-22 11:31:37 +0200", "subject": "Add missing ToLog() coverage to String, List, and PgControl.", "body": "Missing coverage is exposed in the next commit which disables test tracing by default." }, { "commit": "a7c8906581e8fc875c3cac99153aacb323de034f", "date": "2019-02-21 18:49:02 +0200", "subject": "Fix incorrect tags." }, { "commit": "e14c0eeb65a998a419e5a2e6c0ce833e8d7d03dc", "date": "2019-02-21 16:20:46 +0200", "subject": "Use driver for remote protocol introduced in da628be8.", "body": "The remote protocol was calling into the Storage object but this required some translation which will get more awkward as time goes by.\n\nInstead, call directly into the local driver so the communication is directly driver to driver. This still requires resolving the path and may eventually have more duplication with the Storage object methods but it seems the right thing to do." }, { "commit": "b1eb8af7d5093a26a2e221a428540e5e7b356eed", "date": "2019-02-21 15:40:21 +0200", "subject": "Resolve storage path expressions before passing to remote.", "body": "Expressions such as require a stanza name in order to be resolved correctly. However, if the stanza name is passed to the remote then that remote will only work correctly for that one stanza.\n\nInstead, resolved the expressions locally but still pass a relative path to the remote. That way, a storage path that is only configured on the remote does not need to be known locally." }, { "commit": "b4d4680f8c3126d1c2016d30aa2a1b77aac085c0", "date": "2019-02-21 14:40:35 +0200", "subject": "Allow cfgExecParam() to exclude options.", "body": "It is useful to be able to exclude an option even if it is shared by both commands." }, { "commit": "be6a3f131e746304c6a30c39fcab4fe4b44dcb7f", "date": "2019-02-21 14:26:06 +0200", "subject": "Improve null-handling of strToLog().", "body": "NULL was returning {\"(null)\"} which was comprehensible but not very pretty. Instead return null on NULL." }, { "commit": "1fd89f05afd8d8614d7b38a006eda4418f6324ce", "date": "2019-02-21 14:16:17 +0200", "subject": "Add kvKeyExists() to KeyValue object.", "body": "Check if a key exists even if the value is NULL, which is the same result for a missing key." }, { "commit": "80df1114bdc97a930421f491bb7f41d9aeab6069", "date": "2019-02-21 12:09:12 +0200", "subject": "Fix info command missing WAL min/max when stanza specified.", "body": "This issue was a result of STORAGE_REPO_PATH prepending an extra stanza when the stanza was specified on the command line.\n\nThe tests missed this because by some strange coincidence the WAL dirs were empty for each test that specified a stanza. Add new tests to prevent a regression.\n\nFixed by Stefan Fercot." }, { "commit": "1519f5b04540d5a431044f83a45b604ad8757397", "date": "2019-02-21 11:40:30 +0200", "subject": "Add storageHelperFree() to storage helper.", "body": "Free all cached objects in the storage helper, especially the stanza name.\n\nThis clears the storage environment for tests that switch stanza names or go from a stanza name to no stanza name or vice versa. This is only useful for testing right now, but may be used in the future for commands than act on multiple stanzas." }, { "commit": "b0b5989acae29b962b9101719459234968a8e6c1", "date": "2019-02-20 22:57:18 +0200", "subject": "Migrate remote archive-get command to C.", "body": "All required protocol commands are implemented so this is mostly a matter of enabling the feature and updating expect logs." }, { "commit": "6866ff031a6a48d6cd966f5df78bcbc2c84a3890", "date": "2019-02-20 22:43:02 +0200", "subject": "Add exists() to remote storage." }, { "commit": "71bc5697b1a35c8460af7885b888b1d43bd994b1", "date": "2019-02-20 22:23:19 +0200", "subject": "Increase per-call stack trace size to 4096.", "body": "This was previously 256, which was too small to log protocol parameters. Not only did this truncate important debug information but varying path lengths caused spurious differences in the expect logs." }, { "commit": "73be64ce49aaff9d94f70c47590476c404365ce4", "date": "2019-02-20 15:52:07 +0200", "subject": "Add separate archive-get-async command.", "body": "This command was previously forked off from the archive-get command which required a bit of artificial option and log manipulation.\n\nA separate command is easier to test and will work on platforms that don't have fork(), e.g. Windows." }, { "commit": "e48b406cdc3c73056137d6767a7f70e08bee9806", "date": "2019-02-20 15:48:14 +0200", "subject": "Add instructions for building the coverage report.", "body": "These are intended to be temporary until a fully automated report is developed.\n\nSince we don't know when that will happen, at least make it easier to generate the current report." }, { "commit": "da628be8a8045e73b621fb229ac149b545008327", "date": "2019-02-19 20:57:38 +0200", "subject": "Migrate remote command to C.", "body": "Prior to this the Perl remote was used to satisfy C requests. This worked fine but since the remote needed to be migrated to C anyway there was no reason to wait.\n\nAdd the ProtocolServer object and tweak ProtocolClient to work with it. It was also necessary to add a mechanism to get option values from the remote so that encryption settings could be read and used in the storage object.\n\nUpdate the remote storage objects to comply with the protocol changes and add the storage protocol handler.\n\nIdeally this commit would have been broken up into smaller chunks but there are cross-dependencies in the protocol layer and it didn't seem worth the extra effort." }, { "commit": "d211c2b8b51ae5b796bbb581d21a4a406e3ed972", "date": "2019-02-15 11:52:39 +0200", "subject": "Fix possible truncated WAL segments when an error occurs mid-write.", "body": "The file write object destructors called close() and finalized the file even if it was not completely written. This was an issue in both the C and Perl code.\n\nRewrite the destructors to simply free resources (like file handles) rather than calling the close() method. This leaves the temp file in place for filesystems that use temp files.\n\nAdd unit tests to prevent regression." }, { "commit": "2cd204f38037f1465c84bb4e6b55893204ee8f93", "date": "2019-02-12 14:59:51 +0200", "subject": "Change execRead() to return a size_t.", "body": "execRead() should be returning a size_t, not a void. Thankfully, this isn't actually used and therefore shouldn't be an issue, but we should fix it anyway." }, { "commit": "a5f6f801d7651606363715471dcb958e3339414c", "date": "2019-02-12 14:11:16 +0200", "subject": "Begin v2.11 development." }, { "commit": "35903b94d9f2de14fb116c4b15649466eff78ef2", "date": "2019-02-09 19:52:31 +0200", "subject": "v2.10: Bug Fixes" }, { "commit": "51971617a82a3f58efe33dff8386bc94fe1ac628", "date": "2019-02-09 19:01:16 +0200", "subject": "Fix year on 2.09 release.", "body": "Reported by Achilleas Mantzios." }, { "commit": "057e2e27822ffd053f735762e1441fccea24c5ed", "date": "2019-02-09 18:57:30 +0200", "subject": "Add unimplemented S3 driver method required for archive-get.", "body": "This was not being caught because the integration tests for S3 were running remotely and going through the Perl code rather than the new C code.\n\nImplement the exists method for the S3 driver and add tests to prevent a regression." }, { "commit": "6e88f93991171632f33fd1b12fc1090d4a9f02a5", "date": "2019-02-05 18:55:07 +0200", "subject": "Fix check for improperly configured pg-path.", "body": "The check to verify that pg-path and data_directory are equal was not working because pg-path was getting overwritten with data_directory before validation took place." }, { "commit": "be8f31a9524f7b6c47e52a01f89aaf9f0a65ddc2", "date": "2019-02-05 15:34:18 +0200", "subject": "JSON improvements.", "body": "Optimize the parser implementation and make the renderer more null tolerant.\n\nAlso make some string and variant constructors null tolerant." }, { "commit": "b3d1a2a8023adc6d1e35221dc6c3789a1b772c5c", "date": "2019-02-02 15:18:10 +0200", "subject": "FIx typos and missing debug param." }, { "commit": "b29a8dd9c541b755381f2e103abbe0b05fc65190", "date": "2019-02-02 15:03:19 +0200", "subject": "Automatically adjust db-timeout when protocol-timeout is smaller.", "body": "This already worked in reverse, but this case is needed when a command that only uses protocol-timeout (e.g. info) calls a remote process where protocol-timeout and db-timeout can be set. If protocol-timeout was set to less than the default db-timeout then an error resulted." }, { "commit": "abc613b454f8f1aa9da5e842c5da822d26504163", "date": "2019-02-02 14:50:24 +0200", "subject": "Begin v2.10 development." }, { "commit": "a89a3761191444ef28b22434f94bc42fd84b83ee", "date": "2019-01-30 22:37:35 +0200", "subject": "v2.09: Minor Improvements and Bug Fixes" }, { "commit": "02dff53d45b3db2daf69ee45ac694696dc051cc3", "date": "2019-01-30 22:02:42 +0200", "subject": "Add openssl-devel install to documentation build in 711b3e67." }, { "commit": "fb342c312591d2980bbbd490a04fb26967d04fb1", "date": "2019-01-30 21:11:52 +0200", "subject": "Add latex install to documentation build in 711b3e67." }, { "commit": "aa3e5b8c72a75a4f5fea93b543a8fbedcd713f02", "date": "2019-01-30 17:03:17 +0200", "subject": "Allow primary gid for the test user to be different from uid.", "body": "Apparently up until now they have always been the same, which is pretty typical. However, if they were not then ContainerTest.pm was not happy." }, { "commit": "711b3e67cbfc7b404ffe2ce196ffb42159c95040", "date": "2019-01-30 16:53:59 +0200", "subject": "Add examples for building a documentation host." }, { "commit": "dada50ee26e3891ebfca73e12a8f14080cc8ad7e", "date": "2019-01-30 13:39:22 +0200", "subject": "Fix hard-coded repository path.", "body": "This prevented packages from being passed to the documentation unless they were in the /backrest directory on the host.\n\nAlso make the local path /pgbackrest instead of the deprecated /backrest." }, { "commit": "8634eb8c43c8666634fe64a49a39c6384caee64d", "date": "2019-01-29 12:08:14 +0200", "subject": "Include Posix-compliant header for fd_set.", "body": "Similar to f3ae3c4f, add Posix-compliant header to make FreeBSD happy." }, { "commit": "b5a103f2df4999219ef509356ba2c46c292ecccb", "date": "2019-01-28 22:33:29 +0200", "subject": "Improve P/PP type macro handling.", "body": "Rather than create _P/_PP variants for every type that needs to pass/return pointers, create FUNCTION_*_P/PP() macros that will properly pass or return any single/double pointer types.\n\nThere remain a few unresolved edge cases such as CHARPY but this handles the majority of types well." }, { "commit": "8b2a344cfecc2438aafeba7f1c1b7b0572973562", "date": "2019-01-28 15:06:28 +0200", "subject": "Remove unused type parameter from FUNCTION_TEST_RETURN().", "body": "This parameter was always useless but commit 7333b630 removed all references to it so remove the parameter at all call sites as well.\n\nThe original intention was probably to allow logging of TEST return values but that never happened." }, { "commit": "7333b6302fb26191a322cc1513fd85c76b066346", "date": "2019-01-28 09:44:10 +0200", "subject": "Improve CONST type macro handling.", "body": "Rather than create a CONST_ variant for every type that needs to be returned const, create a FUNCTION_LOG_RETURN_CONST() macro that will return any type as const." }, { "commit": "d29aa6128681a3912c1c48ed71cdad9395d0d347", "date": "2019-01-27 11:50:09 +0200", "subject": "Allocate extra space for concatenations in the String object.", "body": "The string object was reallocating memory with every concatenation which is not very efficient. This is especially true for JSON rendering which does a lot of concatenations.\n\nInstead allocate a pool of extra memory on the first concatenation (50% of size) to be used for future concatenations and reallocate when needed.\n\nAlso add a 1GB size limit to ensure that there are no overflows." }, { "commit": "82c2d615b3ecdb851029ad691f5a8061f949535b", "date": "2019-01-27 11:34:12 +0200", "subject": "Move MACRO_TO_STR() to common/debug.h.", "body": "This macro is handy for constructing static message strings so move it where the core code can see it." }, { "commit": "4027123ef19629ff1d5638a75677fa81b3831d03", "date": "2019-01-27 08:01:17 +0200", "subject": "Update contributor name." }, { "commit": "8f6d324b2c2576456bd0ba7f691297df1f5aba1e", "date": "2019-01-26 16:59:54 +0200", "subject": "Fix issue with multiple async status files causing a hard error.", "body": "Multiple status files were being created by asynchronous archiving if a high-level error occurred after one or more WAL segments had already been transferred successfully. Error files were being written for every file in the queue regardless of whether it had already succeeded. To fix this, add an option to skip writing error files when an ok file already exists.\n\nThere are other situations where both files might exist (various fsync and filesystem error scenarios) so it seems best to retry in the case that multiple status files are found rather than throwing a hard error (which then means that archiving is completely stuck). In the case of multiple status files, a warning will be logged to alert the user that something unusual is happening and the command will be retried." }, { "commit": "f3ae3c4f9d0dd63c583ab27ef1f6aa869db12a3a", "date": "2019-01-26 13:48:46 +0200", "subject": "Include Posix-compliant header for strcasecmp().", "body": "gcc has apparently merged this function in string.h but Posix specifies that it should be in strings.h. FreeBSD at at least is sticking to the standard.\n\nIn the long run it might be better to implement our own strcasecmp() function but for now just add the header." }, { "commit": "1401c023f0cfdd0266144bdd8b181e8194bbd91e", "date": "2019-01-26 12:02:48 +0200", "subject": "Fix release note typo." }, { "commit": "053972bfe01948a463fed56b11e3522b3b10457f", "date": "2019-01-26 12:01:18 +0200", "subject": "Update address lookup in C TLS client to use modern methods.", "body": "The implementation using gethostbyname() was only intended to be used during prototyping but was forgotten when the code was finalized.\n\nReplace it with gettaddrinfo() which is more modern and supports IPv6." }, { "commit": "4d1060ea6bdf60d8e9fc7ca372386f53461ed6d1", "date": "2019-01-26 10:39:51 +0200", "subject": "Replace FileOpenError with HostConnectError in TlsClient.", "body": "HostConnectError is more appropriate in this context." }, { "commit": "33d39d248c5ae6fab6b4bb7564ca85b18786332c", "date": "2019-01-24 16:45:28 +0200", "subject": "Allow if condition in documentation lists and list items." }, { "commit": "bec52b6f41a6101ab1357fb5b65ce36faefee9e4", "date": "2019-01-24 11:11:12 +0200", "subject": "Allow if in manifest variables.", "body": "The code supported this feature but the manifest DTD did now allow it." }, { "commit": "db08656537b22c39e5278f9f2770b816278e771a", "date": "2019-01-21 17:41:59 +0200", "subject": "Rename FUNCTION_DEBUG_* and consolidate ASSERT_* macros for consistency.", "body": "Rename FUNCTION_DEBUG_* macros to FUNCTION_LOG_* to more accurately reflect what they do. Further rename FUNCTION_DEBUG_RESULT* macros to FUNCTION_LOG_RETURN* to make it clearer that they return from the function as well as logging. Leave FUNCTION_TEST_* macros as they are.\n\nConsolidate the various ASSERT* macros into a single ASSERT macro that is always compiled out of production builds. It was difficult to figure out when an assert would be checked with all the different types in play. When ASSERTs are compiled in they will always be checked regardless of the log level -- tying these two concepts together was not a good idea." }, { "commit": "d245f8eb425322f0efcd05ab4c12b3b45cc87138", "date": "2019-01-21 13:51:45 +0200", "subject": "The info command is implemented entirely in C.", "body": "The C info code has already been committed but this commit wires it into main.\n\nAlso remove the info Perl code and tests since they are no longer called." }, { "commit": "f79af47bd4ffff693e1a882955323fe73972eeb6", "date": "2019-01-19 20:44:40 +0200", "subject": "Increase timeout in storage/s3 module to improve reliability." }, { "commit": "e57f1b529327ebeca41405b6b57602013de9d625", "date": "2019-01-19 12:57:40 +0200", "subject": "Fix escaping in JSON string parser." }, { "commit": "7355248d6b2b1db0a7ca997db0dc2943331325a0", "date": "2019-01-18 22:04:37 +0200", "subject": "Add remote storage objects.", "body": "This is a partial implementation of remote storage with just enough functionality to get the info command working. The client is written in C but the server is still in Perl, which limits progress until a C server is written." }, { "commit": "88201f37a3b7156dcf6f4aaa659136215485c40d", "date": "2019-01-18 21:32:51 +0200", "subject": "Add ProtocolClient object and helper functions.", "body": "This is a complete protocol client implementation in C.\n\nCurrently there is no C server implementation so the C client is talking to a Perl server. This won't work very long, though, as the protocol format, even though in JSON, has a lot of language-specific structure. While it would be possible to maintain compatibility between C and Perl it's probably not worth the effort in the long run.\n\nJust as in Perl there are helper functions to make constructing protocol objects easier. Currently only repository remotes are supported." }, { "commit": "0986db630cf3c931ccb135a86e60ee098fdc2dec", "date": "2019-01-18 13:15:43 +0200", "subject": "Fix comment typo." }, { "commit": "9cac403f610ff3fd4a176b9cf5a7c0543bdd892c", "date": "2019-01-18 11:45:40 +0200", "subject": "Add Exec object.", "body": "Executes a child process and allows the calling process to communicate with it using read/write io.\n\nThis object is specially tailored to implement the protocol layer and may or may not be generally applicable to general purpose\nexecution." }, { "commit": "797f8098d1383d05960566174859f75d4e835613", "date": "2019-01-18 11:14:44 +0200", "subject": "Add ioReadBuf() to easily read into a buffer.", "body": "Moves some boilerplate into a function and makes it easier to get coverage in cases where a single buffer read captures all the data." }, { "commit": "06d41b4dc0f84f756b57d44cc2e2ceb6b5aec493", "date": "2019-01-17 22:29:19 +0200", "subject": "Add cfgExecParam() to generate parameters for executing commands.", "body": "Parameters for the local/remote commands are based on parameters that are passed to the current command.\n\nGenerate parameters for the new command based on the intersection of parameters between the current command and the command to be executed." }, { "commit": "ecd56105e688e74ad71f8a1fc0fc3e785989abe5", "date": "2019-01-17 22:08:31 +0200", "subject": "Add IoHandleRead and IoHandleWrite objects.", "body": "General i/o objects for reading and writing file descriptors, in particular those that can block. In other words, these are not generally to be used with file descriptors for actual files, but rather pipes, sockets, etc." }, { "commit": "bf0c41d9d6d5fd53cc4bf190b0c577f506323b5b", "date": "2019-01-16 22:23:25 +0200", "subject": "Add const VariantList * debug type." }, { "commit": "7d4bbf290cf33de06fca9854f21ec9690cfd51bb", "date": "2019-01-16 22:16:50 +0200", "subject": "Fix difference in cipher type reporting missed in 8304d452.", "body": "The C code can't get the cipher type from the storage object because the C storage object does not have encryption baked in like the Perl code does.\n\nInstead, check backup.info to see if encryption is enabled. This will need to rethought if another cipher type is added but for now it works fine." }, { "commit": "e68d1e73042342c4cea0881e216e6979a3bcb140", "date": "2019-01-16 19:23:10 +0200", "subject": "Simplify info command text message when no stanzas are present.", "body": "Replace the repository path with just \"the repository\". The path is not important in this context and it is clearer to state where the stanzas are missing from." }, { "commit": "ef9dc89e080d7b364a00fec138d1961c703dd02a", "date": "2019-01-16 18:49:12 +0200", "subject": "Update Storage::Local->list() to accept an undefined path.", "body": "The Perl code has a tendency to generate absolute paths even when they are not needed. This change helps the C and Perl storage work together via the protocol layer." }, { "commit": "b4146b6bff99c8d82445bfda96b237ef0cff3050", "date": "2019-01-16 18:45:19 +0200", "subject": "Update Perl repo rules to work when stanza is not specified.", "body": "The C storage object strives to use rules whenever possible instead of generating absolute paths. This change helps the C and Perl storage work together via the protocol layer." }, { "commit": "0014e159443354a46197e58f0631d7363d038cde", "date": "2019-01-16 18:34:50 +0200", "subject": "Fix escaping in JSON string renderer." }, { "commit": "49bd8e0e3e6e2c7f5e840c613919e55ee0074414", "date": "2019-01-16 12:04:35 +0200", "subject": "Fix missing linefeed and param debug." }, { "commit": "c0a904853664396d3ee9ffd5599634f489d924a1", "date": "2019-01-16 09:11:01 +0200", "subject": "Fix null output in JSON renderer.", "body": "In some cases nulls were being rendered as \"(null)\" because no special logic existed to handle them." }, { "commit": "ec26a0594e2f1da3f2f0041ceef606f70eaeef5e", "date": "2019-01-16 09:05:13 +0200", "subject": "Allow string Variant objects to contain null.", "body": "This is more useful than the variant itself being null as it saves conditionals when creating." }, { "commit": "1b334da87ffcddc5393fa0f900ec8c0395155aa7", "date": "2019-01-14 22:02:23 +0200", "subject": "Add kvMove() and varLstMove().", "body": "Allow these objects to be moved to another mem context." }, { "commit": "aab9e38b9a070e8707c0a316784b456ecaeba64e", "date": "2019-01-14 21:34:22 +0200", "subject": "Return UnknownError from errorTypeFromCode() for invalid error codes.", "body": "The prior behavior was to throw an exception but this was not very helpful when something unexpected happened. Better to at least emit the error message even if the error code is not very helpful." }, { "commit": "2b02d37602e3bfc451d598032d0e3793a06e8673", "date": "2019-01-14 21:21:37 +0200", "subject": "Allow empty arrays in JSON parser." }, { "commit": "8304d452b3683d5d1d59cf7a6cc14801ddc35efd", "date": "2019-01-13 22:44:58 +0200", "subject": "Make the C version of the info command conform to the Perl version.", "body": "There were some small differences in ordering and how the C version handled missing directories. It may be that the C version is more consistent, but for now it is more important to be compatible with the Perl version.\n\nThese differences were missed because the C info command was not wired into main.c so it was not being tested in regression. This commit does not fix the wiring issue because there will likely be a release soon and it is too big a change to put in at the last moment." }, { "commit": "f314a1f8aa101b5f73cbb0902af7ebed9804a143", "date": "2019-01-13 22:22:15 +0200", "subject": "Improve accuracy of strSizeFormat().", "body": "Casting to int caused large values to be slightly inaccurate so cast to uint64_t instead.\n\nAlso, use multiplication where possible since the compiler should precompute multiplied values." }, { "commit": "cebcb3f027d2a95f5b350df113efef78d449c72f", "date": "2019-01-10 09:49:28 +0200", "subject": "Null-terminate list returned by strLstPtr().", "body": "The null-terminator is required by many C functions that accept a string list so just add it in all cases rather than making it optional." }, { "commit": "f8a9fc203909696293e57d84bc8f6d83d737097b", "date": "2019-01-09 19:20:38 +0200", "subject": "Fix typos in monitoring examples." }, { "commit": "ade2c3102d7459d274f0988d7d3cc2de49c7c9b4", "date": "2019-01-06 17:42:44 +0200", "subject": "Ignore SIGPIPE signals and check EPIPE result instead.", "body": "SIGPIPE immediately terminates the process but we would rather catch the EPIPE error and gracefully shutdown.\n\nIgnore SIGPIPE and throw the EPIPE error via normal error handling." }, { "commit": "7272d6e2475f7fe8dd327206591b83cf4b9f498b", "date": "2019-01-06 17:28:17 +0200", "subject": "Add _DARWIN_C_SOURCE flag to Makefile for MacOS builds.", "body": "For some reason adding -D_POSIX_C_SOURCE=200112L caused MacOS builds to stop working. Combining both flags seems to work fine for all tested systems." }, { "commit": "9560baf659cafec2614e90ce72d988635cb945c1", "date": "2019-01-06 15:52:59 +0200", "subject": "Move C module include in test.c above headers included for testing.", "body": "Including the C module after the headers required for testing meant that if headers were missing from the C module they were not caught while directly testing the C module.\n\nThe missing headers were caught in general testing, but it is frustrating to get an error in a module that has already passed while testing another module or running CI.\n\nMove the C module include to the very top so missing headers cause immediate failures." }, { "commit": "0e0000f59c571a3889927288a536c8e220f97fac", "date": "2019-01-06 15:27:30 +0200", "subject": "Add debug macros and extra space missed in 256b727a." }, { "commit": "1de22cac2b0d2f9bddc794693dd2b97e61efdf85", "date": "2019-01-06 14:37:39 +0200", "subject": "Rename common/io/handle module to common/io/handleWrite.", "body": "ioHandleWriteOneStr() will become a helper function for the IoHandleWrite object." }, { "commit": "f52e0187e61b6f74c66573580523018509541f98", "date": "2019-01-05 18:10:30 +0200", "subject": "Fix object struct comment to be conforming." }, { "commit": "842147321ff39a523608e281ade7ccb5fcad7bba", "date": "2019-01-05 14:43:40 +0200", "subject": "Fix typo in error message." }, { "commit": "59d7352f31a646c2f2491aacb922116caf125c50", "date": "2019-01-05 14:38:31 +0200", "subject": "Command-line help update missed in 200fd3aa." }, { "commit": "200fd3aa05174e109488f533d57db503d18ce25a", "date": "2019-01-04 12:25:58 +0200", "subject": "Clarify that encryption is always performed client-side.", "body": "Suggested by Bruce Burdick." }, { "commit": "50717aa846a41852179feaa69b35a924bffc66c6", "date": "2019-01-04 11:00:59 +0200", "subject": "Begin v2.09 development." }, { "commit": "db24ff8df4b2c2de133461df3ab4f28167516dbf", "date": "2019-01-02 22:04:47 +0200", "subject": "v2.08: Minor Improvements and Bug Fixes" }, { "commit": "98ba7ece23637ead3b6a458372f32517aef0c20f", "date": "2019-01-01 18:46:27 +0200", "subject": "Update LICENSE.txt for 2019." }, { "commit": "26c888873e3c0956ec1e4a160715433ae3dd9eaf", "date": "2019-01-01 18:14:43 +0200", "subject": "Merge common/typeVariantListTest module into common/typeVariantTest.", "body": "These modules are closely related so it makes sense for them to be merged." }, { "commit": "07b9176f257148d02c479207180c6af536ad43e1", "date": "2019-01-01 18:05:13 +0200", "subject": "Merge common/typeStringListTest module into common/typeStringTest.", "body": "These modules are closely related so it makes sense for them to be merged." }, { "commit": "493fb78787b0929831899d333484140bfc636a89", "date": "2019-01-01 17:31:23 +0200", "subject": "Add strLstInsert() and strLstInsertZ() to StringList object.", "body": "Use lstInsert() to implement insertions into any position in a StringList." }, { "commit": "cc6376fdb6bb3bff8ce0b432e23b1fa4ed13a210", "date": "2018-12-31 09:19:38 +0200", "subject": "Modify general document elements to allow any child element.", "body": "This allows for nesting of elements such as and ." }, { "commit": "2b7440ddf313e6dbf8b53443a26cdf211161ad26", "date": "2018-12-31 08:51:00 +0200", "subject": "Allow custom logo for PDF documentation.", "body": "Contributed by Cynthia Shang." }, { "commit": "72865ca33ba383fba54da8db0bb8595890a12a3e", "date": "2018-12-30 16:40:20 +0200", "subject": "Add admonitions to documentation renderers.", "body": "Admonitions call out places where the user should take special care.\n\nSupport added for HTML, PDF, Markdown and help text renderers. XML files have been updated accordingly." }, { "commit": "3dc327fd05882b2dc27e77a7922f5c275a7e2b25", "date": "2018-12-20 23:20:54 +0200", "subject": "Add optional table captions.", "body": "All renderers now support table captions, when requested." }, { "commit": "8cf8d29f124723d717fa809168c6ea587bd5d592", "date": "2018-12-19 19:13:26 +0200", "subject": "Escape special characters in latex when not in a code block.", "body": "A number of common characters are not allowed in latex without being escaped.\n\nAlso convert some HTML-specific codes that are used in the documentation." }, { "commit": "23b583336f3095b3e64d6068199b5c449dc776ac", "date": "2018-12-18 22:12:59 +0200", "subject": "Set TCP keepalives on S3 connections.", "body": "Keepalives may help in situations where RST packets are being blocked by a firewall or otherwise do not arrive.\n\nThe C code uses select on all reads so it should never block, but add keepalives just in case." }, { "commit": "96028073cb45fffc5df0d510f3dd143ca10d7d62", "date": "2018-12-18 22:02:23 +0200", "subject": "Add HTML table rendering and update PDF/Markdown renderers to support header-less tables.", "body": "Contributed by Cynthia Shang." }, { "commit": "b85e51d6d545df61cf22501c1db09371219a83da", "date": "2018-12-14 18:46:12 -0500", "subject": "Base menu ordering on natural ordering in the manifest.", "body": "Menu ordering was alphabetical which is not ideal for a user interface." }, { "commit": "35bbb5bd6881e3f405cbd99c3992c32aa5c6d69f", "date": "2018-12-14 18:25:31 -0500", "subject": "Reorder info command text output so most recent backup is output last.", "body": "After a stanza-upgrade backups for the old cluster are displayed until they expire. Cluster info was output newest to oldest which meant after an upgrade the most recent backup would no longer be output last.\n\nUpdate the text output ordering so the most recent backup is always output last." }, { "commit": "205525b60780587366b9786750535a55977f0221", "date": "2018-12-13 16:22:34 -0500", "subject": "Migrate local info command to C.", "body": "The info command will only be executed in C if the repository is local, i.e. not located on a remote repository host. S3 is considered \"local\" in this case.\n\nThis is a direct migration from Perl to integrate as seamlessly with the remaining Perl code as possible. It should not be possible to determine if the C version is running unless debug-level logging is enabled." }, { "commit": "e6ef40e8a327d94e5111d21dd056eefbe5d19a86", "date": "2018-12-13 15:46:18 -0500", "subject": "Add infoBackup object to encapsulate the backup.info file.", "body": "The infoBackup object is the counterpart to the infoArchive object which encapsulates the archive.info file.\n\nCurrently the object is read-only, i.e. it is not possible to create a new or modify an existing backup.info file.\n\nThere a number of constants that will also be used in the infoManifest object so go ahead and create a module to contain them so they don't need to be moved later." }, { "commit": "56d466ce4b39173c777e70e16914a0a76a400dfb", "date": "2018-12-13 15:20:57 -0500", "subject": "Add null support to jsonToKv().", "body": "Contributed by Cynthia Shang." }, { "commit": "d6dfbfd2f3cc2c838d6c1d28ba96076efa9364a6", "date": "2018-12-12 14:35:44 -0500", "subject": "Add zlib1g-dev to Debian builds.", "body": "Not all debian-based distros were getting this installed." }, { "commit": "df947cfcb22928ac4487c74483a49075e35ea15d", "date": "2018-12-12 13:52:23 -0500", "subject": "Add documentation for building the documentation.", "body": "A basic primer for building the documentation. Lots that could be added, but it's a start." }, { "commit": "fdc76742c8e98e630fa4219ba8e9aad79c882e40", "date": "2018-12-12 13:48:31 -0500", "subject": "Use absolute paths so that ./doc.pl runs.", "body": "The relative paths used would not correctly find required libraries and DTD files." }, { "commit": "ee04ebe3142b0f170ef6662db3b6be3e2ba2e32e", "date": "2018-12-12 11:15:09 -0500", "subject": "Fix Centos/RHEL 7 documentation builds.", "body": "This was caused by a new container version that was released around December 5th. The new version explicitly denies user logons by leaving /var/run/nologin in place after boot.\n\nThe solution is to enable the service that is responsible for removing this file on a successful boot." }, { "commit": "2f15a90d18e0cdc0d91e9915b400acfc78ccaf26", "date": "2018-12-10 18:45:57 -0500", "subject": "Add infoArchiveIdHistoryMatch() to the InfoArchive object.", "body": "Match a PostgreSQL system identifier and version to a pgBackRest archive id." }, { "commit": "f0417ee524d1759b1aa5949abcae4769741ce550", "date": "2018-12-10 18:31:49 -0500", "subject": "Use cast to make for loop more readable in InfoPg module.", "body": "The previous way worked but was a head-scratcher when reading the code. This cast hopefully makes it a bit more obvious what is going on." }, { "commit": "2514d08d0dc6d28a59bd884a751b734c70e2c0c0", "date": "2018-12-10 18:15:06 -0500", "subject": "Remove #define statements in the InfoPg module to conform with newly-adopted coding standards.", "body": "Contributed by Cynthia Shang." }, { "commit": "fe152b8f29ff794cd6108c8295e35c44fe37c847", "date": "2018-12-10 18:08:26 -0500", "subject": "Rename constants in Info module for consistency.", "body": "INFO is generally used as the prefix for info file constants so rename these accordingly.\n\nAlso follow newly-adopted coding standards for when #define is required for a static String constant." }, { "commit": "e3435ec386c19fc7a6f08b9d08d4cee4bf8e36f4", "date": "2018-12-10 17:35:31 -0500", "subject": "Add path expression for repository backup to the storage helper.", "body": "This is the counterpart to the archive path expression and constructs paths into the backup part of the repository." }, { "commit": "4f539db8d9c666fa5a9c4e020e387a3b26886b83", "date": "2018-12-10 17:01:33 -0500", "subject": "Allow NULL stanza in storage helper.", "body": "Some commands (e.g. info) do not take a stanza or the stanza is optional. In that case it is the job of the command to construct the repository path with a stanza as needed.\n\nUpdate helper functions to omit the stanza from the constructed path when it is NULL." }, { "commit": "cbf514e191783937de63b5a276fcefc426e6f430", "date": "2018-12-10 16:32:41 -0500", "subject": "Improve info error messages introduced in 74b72df9.", "body": "- Add detail to errors when info files are loaded with incorrect encryption settings.\n- Throw FileMissingError rather than FileOpenError when both copies of the info file are missing.\n- If one file is present (but errors) and the other is missing, then return the error for the file that was present." }, { "commit": "80a3e215213090878e1519f4f4866de2ff6ee67a", "date": "2018-12-10 16:11:51 -0500", "subject": "Add strSizeFormat() to String object.", "body": "Converts sizes in bytes to a more human-readable form, .e.g. 1KB, 1.1GB." }, { "commit": "947fa6fc2b086f0c2fad602b9921861c0bd18fd3", "date": "2018-12-10 15:43:52 -0500", "subject": "Fix comment typo.", "body": "Contributed by Cynthia Shang." }, { "commit": "1c5f8f45b68ad87553c2219ffb8e0da0314ad920", "date": "2018-12-07 12:32:10 -0500", "subject": "Add configuration to the standby so it works as a primary when promoted.", "body": "This code was generated during testing and it seemed a good idea to keep it. It is only a partial solution since the primary also needs additional configuration to be able to fail back and forth." }, { "commit": "495391c7430ee8f4aafc006f6cea829e6a3ca981", "date": "2018-12-07 12:19:28 -0500", "subject": "Pick pg_switch_wal()/pg_switch_xlog() based on PostgreSQL version.", "body": "One step in making the documentation build for all versions that we support." }, { "commit": "e6abdfb5b864b6526e0e5cb147911bd8ff5c8e15", "date": "2018-12-07 07:41:26 -0500", "subject": "Add error message when current user uid/gid does not map to a name.", "body": "This condition resulted in a nasty stack trace dump when the undefined value was used later on." }, { "commit": "ac84ffb90156585c3f7a84ed757bc2603da13f31", "date": "2018-12-06 11:57:30 -0500", "subject": "Clarify that storageExists() is only valid for files.", "body": "Contributed by Cynthia Shang." }, { "commit": "a72759eb5bad455fc1cca5e1e073628643d6dc0b", "date": "2018-12-06 11:53:38 -0500", "subject": "Add comments on String and Variant usage regarding memory contexts.", "body": "Contributed by Cynthia Shang." }, { "commit": "11181e69b818452a0b01d388ca5ce0879e6c3a3d", "date": "2018-12-06 09:04:01 -0500", "subject": "Disable Centos/RHEL 7 documentation builds.", "body": "These were introduced in 33fa2ede and ran for a day or so before they started failing consistently on CI. Local builds work fine.\n\nDisable them to free the pipeline for further commits while we determine the issue." }, { "commit": "e73416e9e39118a3eb7a10d4d3f434ef7cc1c4ba", "date": "2018-12-05 17:56:47 -0500", "subject": "Change file ownership only when required.", "body": "Previously chown() would be called even when no ownership changes were required.\n\nIn most cases changes are not required and it seems better to perform an extra stat() rather than an extra chown().\n\nAlso add unit tests for owner() since there weren't any." }, { "commit": "e96986a4e1e7aa5302686f559ca2848e1518669f", "date": "2018-12-05 16:21:45 -0500", "subject": "Error when --target-action=shutdown specified for PostgreSQL < 9.5.", "body": "This equaled \"promote\" on unsupported versions which qualifies as a surprising behavior." }, { "commit": "5b52f020212d75b4f1001727e1a0d8acbae0fe60", "date": "2018-12-05 15:58:45 -0500", "subject": "Clarify when target-action is effective and PostgreSQL version support.", "body": "Suggested by Keith Fiske." }, { "commit": "a0ecf53ead32070045119e8a129d0d07da3662fa", "date": "2018-12-05 13:07:55 -0500", "subject": "Fix documentation typo." }, { "commit": "bf873be4aa2688416ec63c8920144a847df142f7", "date": "2018-12-05 12:51:13 -0500", "subject": "Redact authentication header when throwing S3 errors.", "body": "The authentication header contains the access key (not the secret key) so don't include it in errors that can be seen at any log level." }, { "commit": "cc6447356ef436582fdd3501311cb8da0f4f0342", "date": "2018-12-05 09:15:45 -0500", "subject": "Fix test binary name for gprof.", "body": "This got missed in 1f8931f7 when the test binary was renamed.\n\nAlso output call graph along with the flat report. The flat report is generally most useful but it doesn't hurt to have both." }, { "commit": "33fa2ede7d106db6bf95712747bd0a8ed52f1be5", "date": "2018-12-05 07:12:28 -0500", "subject": "Add Centos/RHEL 7 option to documentation build.", "body": "Centos/RHEL 7 builds can be specified with --var=os-type=centos7.\n\nAlso added to the documentation release and CI builds." }, { "commit": "baeff9e4f04c7f86f9cbe84efaf4dc66b3a4add4", "date": "2018-12-04 17:33:56 -0500", "subject": "Create common if expressions for testing os-type.", "body": "These expressions simplify os-type testing. This will be especially true as more OS types are added." }, { "commit": "9e217d02564d30bcdcb865f87323221aa2969169", "date": "2018-12-04 13:17:55 -0500", "subject": "Documentation may be built with user-specified packages.", "body": "By default the documentation builds pgBackRest from source, but the documentation is also a good way to smoke-test packages.\n\nAllow a package file to be specified by passing --var=package=/path/to/package.ext. This works for Debian and CentOS 6 builds." }, { "commit": "0db030fa63b74fb6e0a8ad58f1417e39cd1eac9e", "date": "2018-12-04 11:46:25 -0500", "subject": "Add coding standards for String constants." }, { "commit": "14190f9e6c290383676a4332ff5c71e9cc83c66a", "date": "2018-12-03 12:41:53 -0500", "subject": "Update URL for Docker install.", "body": "As usual the old URL started providing a broken version of Docker rather than producing a clear error message. This happens once a year or so." }, { "commit": "17e611cb883b6086a802c2adfbda384817feaa09", "date": "2018-12-01 12:40:01 -0500", "subject": "Replace keywords with more flexible if statements.", "body": "Keywords were extremely limited and prevented us from generating multi-version documentation and other improvements.\n\nReplace keywords with an if statement that can evaluate a Perl expression with variable replacement.\n\nSince keywords were used to generate cache keys, add a --key-var parameter to identify which variables should make up the key." }, { "commit": "47490ba9600c25f75a9d833d9a42da3633257751", "date": "2018-11-30 18:47:42 -0500", "subject": "Fix comment typo.", "body": "Contributed by Cynthia Shang." }, { "commit": "977506b44615cc9d9d9c581ffd0fd407b7d174d8", "date": "2018-11-30 11:15:52 -0500", "subject": "Clarify that region/endpoint must be configured correctly for the bucket.", "body": "Suggested by Pritam Barhate." }, { "commit": "64b97fd7ca3410cd6bca3c01bc438bb104191f78", "date": "2018-11-30 10:55:29 -0500", "subject": "Correct archive-get-queue-max to be size type.", "body": "This somehow was not configured as a size option when it was added. It worked, but queue sizes could not be specified in shorthand, e.g. 128GB.\n\nThis is not a breaking change because currently configured integer values will be read as bytes." }, { "commit": "1ad67644dade53595e2f210d0f75cc247b3ea2a5", "date": "2018-11-30 10:38:02 -0500", "subject": "Remove request for S3 object info directly after putting it.", "body": "After a file is copied during backup the size is requested from the storage in case it differs from what was written so that repo-size can be reported accurately. This is useful for situations where compression is being done by the filesystem (e.g. ZFS) and what is stored can differ in size from what was written.\n\nIn S3 the reported size will always be exactly what was written so there is no need to check the size and doing so immediately can cause problems because the new file might not appear in list commands. This has not been observed on S3 (though it seems to be possible) but it has been reported on the Swift S3 gateway.\n\nAdd a driver capability to determine if size needs to be called after a file is written and if not then simply use the number of bytes written for repo-size." }, { "commit": "5d3c8e47f14c9f497866a899bed7d6e25f0fb67f", "date": "2018-11-29 14:45:15 -0500", "subject": "Pre-build containers for any execute elements marked pre.", "body": "This allows the documentation to be built more quickly and offline during development when --pre is specified on the command line.\n\nEach host gets a pre-built container with all the execute elements marked pre. As long as the pre elements do not change the container will not need to be rebuilt.\n\nThe feature should not be used for CI builds as it may hide errors in the documentation." }, { "commit": "74b72df9dbfbfb00d5b729cb83bef35e77fd73c6", "date": "2018-11-28 18:41:21 -0500", "subject": "Improve error message when info files are missing/corrupt.", "body": "The previous error message only showed the last error. In addition, some errors were missed (such as directory permission errors) that could prevent the copy from being checked.\n\nShow both errors below a generic \"unable to load\" error. Details are now given explaining exactly why the primary and copy failed.\n\nPreviously if one file could not be loaded a warning would be output. This has been removed because it is not clear what the user should do in this case. Should they do a stanza-create --force? Maybe the best idea is to automatically repair the corrupt file, but on the other hand that might just spread corruption if pgBackRest makes the wrong choice." }, { "commit": "47687dd13a24a49409f07b99141b508739228791", "date": "2018-11-28 18:10:54 -0500", "subject": "Add xmlNodeAttribute() to XmlNode object.", "body": "Retrieves a node attribute unless it is the root node." }, { "commit": "7c2fcb63e4ab62e880ebca935fb67e25fa03d5b3", "date": "2018-11-28 14:56:26 -0500", "subject": "Enable encryption for archive-get command in C.", "body": "The decryption filter was added in archiveGetFile() and archiveGetCheck() was modified to return the WAL decryption key stored in archive.info. The rest was plumbing.\n\nThe mock/archive/1 integration test added encryption to provide coverage for the new code paths while mock/archive/2 dropped encryption to provide coverage for the existing code paths. This caused some churn in the expect logs but there was no change in behavior." }, { "commit": "6c23830991558d74ecade1d510fbd50acf5b0f18", "date": "2018-11-28 14:41:10 -0500", "subject": "Add encryption capability to Info* objects.", "body": "Info objects can be stored encrypted and loaded with a cipher type and passphrase." }, { "commit": "410a04a58ee59de3055483a2f971c2e42015267e", "date": "2018-11-28 14:20:12 -0500", "subject": "Allow arbitrary InOut filters to be chained in IoFilterGroup.", "body": "If InOut filters were placed next to each other then the second filter would never get a NULL input signaling it to flush. This arrangement only worked if the second filter had some other indication that it should flush, such as a decompression filter where the flush is indicated in the input stream.\n\nThis is not a live issue because currently no InOut filters are chained together." }, { "commit": "838cfa44b76ed885f030ebf75649df7eaace6593", "date": "2018-11-28 14:02:14 -0500", "subject": "Allow arbitrary multiplier and flush character in IoTestFilterMultiply.", "body": "This allows for more complex test filter chains.\n\nRename from IoTestFilterDouble to reflect the new functionality." }, { "commit": "3e254f4cff349f2de95b557b77e3bb0baa1450c9", "date": "2018-11-28 12:42:36 -0500", "subject": "Add IoFilter interface to CipherBlock object.", "body": "This allows CipherBlock to be used as a filter in an IoFilterGroup. The C-style functions used by Perl are now deprecated and should not be used for any new code.\n\nAlso add functions to convert between cipher names and CipherType." }, { "commit": "c3a84ccae08cf7506f26a000344ea1ba2517f9a8", "date": "2018-11-28 12:03:27 -0500", "subject": "Merge cipher.h into crypto.h.", "body": "There is not enough in cipher.h to make it worth having a separate header." }, { "commit": "7df7cf6e6d1e04fef41ba37cb13020ada6bf4b22", "date": "2018-11-27 22:49:24 -0500", "subject": "Rename cipherBlock*() functions to cipherBlock*C().", "body": "Some of the old names conflict with the new functions that must be created to implement the filter. Rename these to cipherBlock*C() to indicate that they take C-style parameters.\n\nThese functions are only used by the Perl LibC code and will be removed or refactored eventually." }, { "commit": "fea27dbd7eb4ea72a8c792628bba6ed849f68c08", "date": "2018-11-27 22:02:08 -0500", "subject": "Return IoFilterGroup * from ioFilterGroupAdd().", "body": "This allows filters adds to be chained." }, { "commit": "56ce98b2f0710b77e9df720722d200add670238e", "date": "2018-11-25 10:06:31 -0500", "subject": "Explicitly compile with Posix 2001 standard.", "body": "This standard was being selectively applied in modules that needed it.\n\nInstead, apply the standard to all compilation for consistency." }, { "commit": "315aa2c4512c2789889d68d1253366c5c75d405b", "date": "2018-11-25 08:39:41 -0500", "subject": "Conditional compilation of Perl logic in exit.c.", "body": "This file is the only one to contain Perl logic outside of the perl module. Make the Perl logic conditional to improve reusability." }, { "commit": "78fe642eaeae4f7f73796fdc45b5c2a81e9f3e9f", "date": "2018-11-24 20:31:35 -0500", "subject": "Remove extraneous use/include statements.", "body": "Use conditional loading to make docs work in the absence of LibC.\n\nSomehow this also required a use statement to be added. Perl, go figure." }, { "commit": "801e2a5a2ce14f6ef447526c646f0c641c94efa2", "date": "2018-11-24 19:05:03 -0500", "subject": "Rename PGBACKREST/BACKREST constants to PROJECT.", "body": "This brings consistency between the C and Perl constants and allows for easier code reuse." }, { "commit": "7a1a68883546bbfa0b24fc65054b0a7bf4f09b66", "date": "2018-11-24 09:12:44 -0500", "subject": "Add EOF detection to content read in HttpClient.", "body": "If the connection closed before all content was sent httpClientRead() would get stuck in an infinite loop waiting for it to arrive.\n\nEOF should never be reached during content read so immediately error if EOF is detected." }, { "commit": "f4a1751abc9b42d03e0d041fa386a879beb3ee5b", "date": "2018-11-23 16:02:33 -0500", "subject": "Improve JSON to Variant conversion and add Variant to JSON conversion.", "body": "Add boolean and one-dimensional list types to jsonToKv().\n\nAdd varToJson() and kvToJson() to convert Variants and KeyValues to JSON." }, { "commit": "e641c130d30706755775ee328637e3be9d6dba55", "date": "2018-11-23 12:19:56 -0500", "subject": "Fix release note typo." }, { "commit": "beae37533041e63a71b33757e4df933e197e575f", "date": "2018-11-23 12:18:07 -0500", "subject": "Enable S3 storage for archive-get command in C.", "body": "The only change required was to remove the filter that prevented S3 storage from being used. The archive-get command did not require any modification which demonstrates that the storage interface is working as intended.\n\nThe mock/archive/3 integration test was modified to run S3 storage locally to provide coverage for the new code paths while mock/stanza/3 was modified to run S3 storage remotely to provide coverage for the existing code paths. This caused some churn in the expect logs but there was no change in behavior." }, { "commit": "b5690e21a4ad453f004087adf434adf13d109a8c", "date": "2018-11-23 12:01:36 -0500", "subject": "Allow I/O read interface to explicitly request blocking reads.", "body": "TlsClient introduced a non-blocking read which is required to read protocol messages that are linefeed-terminated rather than a known size. However, in many cases the expected number of bytes is known in advance so in that case it is more efficient to have tlsClientRead() block until all the bytes are read.\n\nAdd block parameter to all read functions and use it when a blocking read is required. For most read functions this is a noop, i.e. if the read function never blocks then it can ignore the parameter.\n\nIn passing, set the log level of storageNew*() functions to debug to expose more high-level I/O operations." }, { "commit": "256b727a3d13b680ab2a4c7b3669649c857d1daf", "date": "2018-11-21 19:32:49 -0500", "subject": "Add S3 storage driver.", "body": "Only the storageNewRead() and storageList() functions are currently implemented, but this is enough to enable S3 for the archive-get command." }, { "commit": "72252ed2a102bf9c43d45500de1a29834d36721c", "date": "2018-11-21 19:11:45 -0500", "subject": "Add HttpClient object.", "body": "A robust HTTP client with connection reuse and automatic retries.\n\nUsing a single object to make multiple requests is more efficient because connections are reused whenever possible. Requests are automatically retried when the connection has been closed by the server. Any 5xx response is also retried.\n\nOnly the HTTPS protocol is currently supported." }, { "commit": "1dd06a6e460049ff888e152f33697b1e49046c30", "date": "2018-11-21 18:43:25 -0500", "subject": "Add TlsClient object.", "body": "A simple, secure TLS client intended to allow access to services that are exposed via HTTPS. We call it TLS instead of SSL because SSL methods are disabled so only TLS connections are allowed.\n\nThis object is intended to be used for multiple TLS connections against a service so tlsClientOpen() can be called each time a new connection is needed. By default, an open connection will be reused so the user must be prepared to retry their transaction on a read/write error if the server closes the connection before it can be reused. If this behavior is not desirable then tlsClientClose() may be used to ensure that the next call to tlsClientOpen() will create a new TLS session.\n\nNote that tlsClientRead() is non-blocking unless there are *zero* bytes to be read from the session in which case it will raise an error after the defined timeout. In any case the tlsClientRead()/tlsClientWrite()/tlsClientEof() functions should not generally be called directly. Instead use the read/write interfaces available from tlsClientIoRead()/tlsClientIoWrite()." }, { "commit": "ac426bc456425d68e33a7facc8393f26b9d17bb1", "date": "2018-11-21 18:13:37 -0500", "subject": "New test containers with static test certificates.", "body": "Test certificates were generated dynamically but there are advantages to using static certificates. For example, it possible to use the same certificate between container versions. Mostly, it is easier to document the certificates if they are not buried deep in the container code.\n\nThe new test certificates are initially intended to be used with the C unit tests but they will eventually be used for integration tests as well.\n\nTwo new certificates have been defined. See test/certificate/README.md for details.\n\nThe old dynamic certificates will be retained until they are replaced." }, { "commit": "53e3651ccaaaa1652f53903534974377a2808aec", "date": "2018-11-21 08:30:14 -0500", "subject": "Remove embedded semicolon from String constant macros.", "body": "The embedded semicolon led to inconsistent semicolons when using the macro and is not our general convention.\n\nRemove embedded semicolons from the macros and add semicolons in usage where they were not present." }, { "commit": "bc25db5667b3b05ba47c547591717ee9627f650c", "date": "2018-11-20 20:40:11 -0500", "subject": "Add interface objects for libxml2.", "body": "Add XmlDocument, XmlNode, and XmlNodeList objects as a thin interface layer on libxml2.\n\nThis interface is not intended to be comprehensive. Only a few libxml2 capabilities are exposed but more can be added as needed." }, { "commit": "6680130c6f5553e6d0c587dccc57b4a8508c4ab1", "date": "2018-11-20 19:24:53 -0500", "subject": "Require S3 key options except for local/remote commands.", "body": "S3 key options (repo1-s3-key/repo1-s3-key-secret) were not required which meant that users got an ugly assertion when they were missing rather than a tidy configuration error.\n\nOnly the local/remote commands need them to be optional. This is because local/remote commands get all their options from the command line but secrets cannot be passed on the command line. Instead, secrets are passed to the local/remote commands via the protocol for any operation that needs them.\n\nThe configuration system allows required to be set per command so use that to improve the error messages while not breaking the local/remote commands." }, { "commit": "f743d4e92418d73717225599e3dbd03a4af7dec9", "date": "2018-11-20 15:48:56 -0500", "subject": "Add testRepoPath() to let C unit tests know where the code repository is located.", "body": "This allows a C unit test to access data in the code repository that might be useful for testing.\n\nAdd testRepoPathSet() to set the repository path.\n\nIn passing remove extra whitespace in the TEST_RESULT_VOID() macro." }, { "commit": "b0659278cc7ab45519d791c10edbb494024f5148", "date": "2018-11-16 17:22:22 -0500", "subject": "Add ServiceError for errors from a service that can be retried.", "body": "An example is HTTP 5xx errors which should mostly be retried." }, { "commit": "3aa4fda573d95839d617c65880a240d4093951b7", "date": "2018-11-16 16:17:24 -0500", "subject": "Add missing LOG_DEBUG() macro." }, { "commit": "d0e553e4c2a024be44a92dfa5eb0ce77330bcef7", "date": "2018-11-16 16:05:06 -0500", "subject": "Reduce debug level for infoIni() to test.", "body": "Getters should generally not be logging at debug or trace level since it clutters the log.\n\nIn passing move the destructor to the end of the file." }, { "commit": "6532912d51050df4587ec54eee567e37fcb8b74e", "date": "2018-11-16 10:04:14 -0500", "subject": "Begin v2.08 development." }, { "commit": "04d9e4d5a88512707c350e3885e359d53c3ca36b", "date": "2018-11-16 09:50:50 -0500", "subject": "v2.07: Automatic Backup Checksum Delta" }, { "commit": "332a68ea8d713f24d1db08e20d5b95bcf32cc74e", "date": "2018-11-16 08:48:02 -0500", "subject": "Fix incorrect config constant introduced in 5e3b7cbe.", "body": "This commit introduced PGBACKREST_CONFIG_ORIG_PATH_FILE_STR as a String constant for PGBACKREST_CONFIG_ORIG_PATH_FILE but failed to get the value correct.\n\nAlso, no test was added for PGBACKREST_CONFIG_ORIG_PATH_FILE_STR to prevent regressions as there is for PGBACKREST_CONFIG_ORIG_PATH_FILE." }, { "commit": "75f6e45de26cf4ab087dc791f2aa177553584472", "date": "2018-11-15 16:31:46 -0500", "subject": "Add \\n, \\r, and 0 String constants." }, { "commit": "b6f7cbc31531b6e88a89ecfe9c8d3ebc1e682d2e", "date": "2018-11-15 16:25:46 -0500", "subject": "Add destructors to IoRead and IoWrite objects.", "body": "These interfaces previously used the memory context of the object they were associated with and did not have their own destructors.\n\nThere are times when it is useful to free the interface without also freeing the underlying object so give IoRead and IoWrite their own memory contexts and destructors.\n\nIn passing fix a comment type in bufferRead.c." }, { "commit": "480e1da7986a278a3b5c8aca965e539d383da9cc", "date": "2018-11-14 08:53:42 -0500", "subject": "Add ioWriteFlush() to flush pending output.", "body": "By default the IoWrite object does not write until the output buffer is full but this is a problem for protocol messages that must be sent in order to get a response.\n\nioWriteFlush() is not called internally by IoWrite but can be used at any time to immediately write all bytes from the output buffer without closing the IoWrite object." }, { "commit": "7918629f5931b2eeca316d8b37191718db4650f4", "date": "2018-11-14 08:16:53 -0500", "subject": "Modify value of PERL_EMBED_ERROR macro.", "body": "Remove !!! which by convention we use as a marker for code that needs attention before it can be committed to master." }, { "commit": "504e7d77faeecd213df99ec320246e10a526f9ad", "date": "2018-11-14 08:13:01 -0500", "subject": "Add comment regarding vars being required in blocks.", "body": "Documentation block syntax requires that at least one var be specified.\n\nThis limitation should be removed but for now add a comment to describe why a bogus var is defined." }, { "commit": "14d2f8b86c4fd3755af6cd9f5210cf1e34e8d090", "date": "2018-11-14 08:11:11 -0500", "subject": "Reword misleading message in stack trace when parameter buffer is full.", "body": "The prior message stated that there had been a buffer overrun which is not true since the code prevents that.\n\nIn fact, this message means the parameter buffer filled while building the parameter list. Rather than display a partial list we output this message instead.\n\nAlso remove !!! which by convention we use as a marker for code that needs attention before it can be committed to master." }, { "commit": "8c7e97a369a145f2d71856f2ff2ed734452a9040", "date": "2018-11-14 08:08:26 -0500", "subject": "Clarify comment about main.c being excluded from unit testing.", "body": "Also remove !!! which by convention we use as a marker for code that needs attention before it can be committed to master." }, { "commit": "73102034913ec2e3ca1b1cc485f8ce04820bba27", "date": "2018-11-14 07:42:28 -0500", "subject": "Remove obsolete comments." }, { "commit": "a0b2af567a8b6893c6e9b7f3b9a73acd4496332e", "date": "2018-11-13 20:58:32 -0500", "subject": "Add TEST_LOG() and TEST_LOG_FMT() macros.", "body": "These macros provide a convenient way to output debug information in tests.\n\nThey are not intended to be left in test code when it is committed to master." }, { "commit": "a582ad837f9ada7b924d6c0a23580f88c495ce2e", "date": "2018-11-13 20:43:08 -0500", "subject": "Add logging macros for TimeMSec type." }, { "commit": "acb579c4698f856e4c1ceedca751aaeadc9d2d3f", "date": "2018-11-13 10:37:58 -0500", "subject": "Tighten limits on code coverage context selection.", "body": "If the last } of a function was marked as uncovered then the context selection would overrun into the next function.\n\nStart checking context on the current line to prevent this. Make the same change for start context even though it doesn't seem to have an issue." }, { "commit": "086bc35ddc71b008a5d20f8e5e3d0305508dfdf5", "date": "2018-11-12 21:18:53 -0500", "subject": "Make ioReadLine() read less aggressively.", "body": "ioReadLine() calls ioRead(), which aggressively tries to fill the output buffer, but this doesn't play well with blocking reads.\n\nGive ioReadLine() an option that tells it to read only what is available. That doesn't mean the function will never block but at least it won't do so by reading too far." }, { "commit": "bc810e5a87176ee68491e79473325a8a411a34c9", "date": "2018-11-12 20:44:56 -0500", "subject": "Remove error suppression for pgBackRest make.", "body": "This looks like a copy-pasto because make works just fine without it." }, { "commit": "a2672557f80da95d6103d49e307321568285e5d6", "date": "2018-11-12 20:00:57 -0500", "subject": "Allow storage path and file mode to be 0.", "body": "Not all storage drivers support Posix-style permissions, e.g. S3." }, { "commit": "7107cc68d23f344e7b13206eaec506a039a00350", "date": "2018-11-12 18:11:16 -0500", "subject": "Expand context shown in coverage and update colors.", "body": "Too few lines were shown for coverage context so show the entire function if it has any missing coverage.\n\nUpdate colors to work with light and dark browser modes." }, { "commit": "0ba2292a29fcef873991098cc48b488580fbb713", "date": "2018-11-12 14:23:42 -0500", "subject": "Add EMPTY_STR to String object." }, { "commit": "aff9693e640c8a0b76e46f31d4fa569fd7d63289", "date": "2018-11-12 14:13:55 -0500", "subject": "Add strEmpty() to String object.", "body": "strEmpty() is more concise and explanatory than strSize() == 0." }, { "commit": "38c5f657704c4c6899a0bf86bbce5fd332d97971", "date": "2018-11-11 18:12:43 -0500", "subject": "Use THROW_ON_SYS_ERROR macro to improve fork code coverage.", "body": "Lack of code coverage in this module is just noise since these functions cannot generally be made to fail.\n\nAny failures are fatal." }, { "commit": "72ea47bfb341ff78f2582607e27e7b7df2ac25f8", "date": "2018-11-11 18:07:56 -0500", "subject": "Add KernelError to report miscellaneous kernel errors." }, { "commit": "257df96b12f38cba45751449dcd64ca712dd96c2", "date": "2018-11-11 18:06:09 -0500", "subject": "Add THROW*_ON_SYS_ERROR* macros to test and throw system errors.", "body": "These macros check the error result internally and are appropriate for system calls that won't return errors and so break coverage." }, { "commit": "22ecbc153a447b4f635fad2ab71fdd92ed8294bc", "date": "2018-11-11 17:32:42 -0500", "subject": "New, concise coverage report for C.", "body": "The report HTML generated by lcov is overly verbose and cumbersome to navigate. Since we maintain 100% coverage it's far more interesting to look at what is not covered than what is.\n\nThe new report presents all missing coverage on a single page and excludes code that is covered for brevity." }, { "commit": "3cd43fd60cd46430f86084f37b6ed874124e2848", "date": "2018-11-11 16:34:15 -0500", "subject": "Add new HTML tags and strExtra to DocHtmlElement.", "body": "Add HTML tags for table elements.\n\nThe strExtra parameter allows adhoc tags to be added to an element for features that can't be implemented with CSS, e.g. colspan." }, { "commit": "5e3b7cbe6ee7a409ad6e311668eb764fee82939c", "date": "2018-11-10 18:32:49 -0500", "subject": "Apply String constant macros where appropriate.", "body": "This may not be all the places where the macros can be useful but it's a good start." }, { "commit": "8f857a975e22d6a7c0e99a494169f24ed50b6c06", "date": "2018-11-10 09:37:12 -0500", "subject": "Add constant macros to String object.", "body": "There are many places (and the number is growing) where a zero-terminated string constant must be transformed into a String object to be usable. This pattern wastes time and memory, especially since the created string is generally used in a read-only fashion.\n\nDefine macros to create constant String objects that are initialized at compile time rather than at run time." }, { "commit": "df200bee2acf614edf9d008cccde67f02d89f103", "date": "2018-11-09 16:50:22 -0500", "subject": "Add regExpPrefix() to aid in static prefix searches.", "body": "The storageList() command accepts a regular expression as a filter. This works fine for local filesystems where it is relatively cheap to get a complete list of files and filter them in code. However, for remote filesystems like S3 it can be expensive to fetch a complete list of files only to discard the bulk of them locally.\n\nS3 does not filter on regular expressions but it can accept a static prefix so this function extracts a prefix from a regular expression when possible.\n\nEven a few characters can drastically reduce the amount of data that must be fetched remotely so the function does not try to be too clever. It requires a ^ anchor and stops scanning when the first special character is found." }, { "commit": "8c504bd2f9e6c14f134b6115f469ec3fe064cb73", "date": "2018-11-09 10:37:59 -0500", "subject": "Improve alignment of expected vs. got error test results.", "body": "It is easier to compare the error messages when they start at the same column." }, { "commit": "b5a3c8c84b789558d11d67199fbcc4029721d939", "date": "2018-11-09 09:54:55 -0500", "subject": "Add strCatChr() to String object." }, { "commit": "3e695af9614e61f72e9f0d7c3dc729cc5a27f3eb", "date": "2018-11-08 21:41:41 -0500", "subject": "New test containers.", "body": "* Add libxml2 library needed for S3 development.\n* Minor version updates for PostgreSQL.\n* Remove PostgreSQL 11 beta/rc repository." }, { "commit": "7cf1f42c5c65deed8ad0bdb86a33d273438fe9a0", "date": "2018-11-08 19:50:31 -0500", "subject": "Add time since the beginning of the run to each test statement.", "body": "Output the time in seconds of each test statement since the start of the test run.\n\nThis helps find individual tests that are running slowly." }, { "commit": "2150a26424cacc80ded57697b67af1e3c2a47211", "date": "2018-11-08 18:03:18 -0500", "subject": "Storage interface methods no longer declare the driver as const.", "body": "This works for the Posix driver but is bad for more dynamic drivers (e.g. S3) that need write access to the driver object." }, { "commit": "12b3be1d8ed38beea67c4d4de582af9039c5bd4b", "date": "2018-11-08 16:48:33 -0500", "subject": "Limit usable Buffer size without changing allocated size.", "body": "Allow buffers to report a lower size than their allocated size. This means a larger buffer can be used to do the work of a smaller buffer without having to create a new buffer and concatenate.\n\nThis is useful for blocking I/O where the buffer may be too large for the amount of data that is available to read." }, { "commit": "edb2c6eb26ca77eb3e3e05c006f3036dee2865b7", "date": "2018-11-08 08:37:57 -0500", "subject": "Construct Wait object in milliseconds instead of fractional seconds.", "body": "The Wait object accepted a double in the constructor for wait time but used TimeMSec internally. This was done for compatibility with the Perl code.\n\nInstead, use TimeMSec in the Wait constructor and make changes as needed to calling code.\n\nNote that Perl still uses a double for its Wait object so translation is needed in some places. There are no plans to update the Perl code as it will become obsolete." }, { "commit": "a9feaba9e521e39928ff5fdbc025eeff8fc17646", "date": "2018-11-07 08:51:32 -0500", "subject": "Add memContextCallbackClear() to prevent double free() calls.", "body": "If an object free() method was called manually when a callback was set then the callback would call free() again. This meant that each free() method had to protect against a subsequent call.\n\nInstead, clear the callback (if present) before calling memContextFree(). This is faster (since there is no unnecessary callback) and removes the need for semaphores to protect against a double free()." }, { "commit": "48d2795f312224f03dc88e99434865540ca71c7e", "date": "2018-11-06 20:04:16 -0500", "subject": "Merge crypto/random module into crypto/crypto.", "body": "There wasn't enough code to justify a separate module/test and it seems to fit just fine in crypto/crypto." }, { "commit": "8efa5e6a6af848a2a9d3e4c3260084d259949ee5", "date": "2018-11-06 19:38:38 -0500", "subject": "Rename CipherError to CryptoError.", "body": "This aligns with the general renaming from cipher to crypto." }, { "commit": "2cb312ef5aa9f57da607229f9fe22ce5d7aa0352", "date": "2018-11-06 19:16:00 -0500", "subject": "Add cryptoError() and update crypto code to use it.", "body": "This adds detail to error messages when available and improves code coverage." }, { "commit": "bef31f1802f231ce7b6ab06371148b74eb9eb6ab", "date": "2018-11-06 18:32:44 -0500", "subject": "Add base variants to all integer to string conversion functions.", "body": "Previously these functions were fixed at base 10 conversion. Add variants that can convert from any base." }, { "commit": "7de9584435839f8e7b20e8f336820b84a70cafd8", "date": "2018-11-04 08:39:48 -0500", "subject": "Ignore deleted files in rsync to test/repo.", "body": "Deleted files are showing up in git ls-files (added 57d78092) but they don't actually exist on disk.\n\nIf there is someway to exclude deleted files from ls-files then I can't find it, so just tell rsync to ignore missing files." }, { "commit": "57d780929741e3d09f60b252a26ad12fb645254e", "date": "2018-11-03 19:52:46 -0400", "subject": "Improve efficiency of code generation.", "body": "Code generation saved files even when they had not changed, which often caused code generation cascades. So, don't save files unless they have changed.\n\nUse rsync to determine which files have changed since the last test run. The manifest of changed files is saved and not removed until all code generation and builds have completed. If an error occurs the work will be redone on the next run.\n\nThe eventual goal is to do all the builds from the test/repo directory created by rsync but for now it is only used to track changes." }, { "commit": "1f8931f73274163f27ba38aea378ea50488ba557", "date": "2018-11-03 16:34:04 -0400", "subject": "Improve single test run performance.", "body": "Improve on 7794ab50 by including the build flag files directly into the Makefile as dependencies (even though they are not includes). This simplifies some of the rsync logic and allows make to do what it does best.\n\nAlso split build flag files into test, harness, and build to reduce rebuilds. Test flags are used to build test.c, harness flags are used to build the rest of the files in the test harness, and build flags are used for the files that are not directly involved in testing." }, { "commit": "7794ab50dc839088fc1e1137edaaf65354faa76a", "date": "2018-11-02 11:56:13 -0400", "subject": "Preserve contents of C unit test build directory between test.pl executions.", "body": "The contents were already preserved between tests in a single test.pl run but for a separate execution the entire project had to be built from scratch, which was getting slower as we added code.\n\nSave the important build flags in a file so the new execution knows whether the build contents can be reused." }, { "commit": "1a98bd41b48b2619b318639faeeb688481dbc07e", "date": "2018-11-02 08:37:27 -0400", "subject": "Mount tmpfs in Vagrantfile instead test.pl.", "body": "Mounting/unmounting tmpfs on /home/[user]/test takes time, forces at least 3GB of memory to be available for tests, and makes it harder to preserve data between tests.\n\nInstead, move mounting of tmpfs to the Vagrantfile and add it to fstab so it survives reboots." }, { "commit": "34c63276cd26cd5310169343bb8e17e323feef95", "date": "2018-11-01 11:31:25 -0400", "subject": "Automatically enable backup checksum delta when anomalies (e.g. timeline switch) are detected.", "body": "There are a number of cases where a checksum delta is more appropriate than the default time-based delta:\n\n* Timeline has switched since the prior backup\n* File timestamp is older than recorded in the prior backup\n* File size changed but timestamp did not\n* File timestamp is in the future compared to the start of the backup\n* Online option has changed since the prior backup\n\nA practical example is that checksum delta will be enabled after a failover to standby due to the timeline switch. In this case, timestamps can't be trusted and our recommendation has been to run a full backup, which can impact the retention schedule and requires manual intervention.\n\nNow, a checksum delta will be performed if the backup type is incr/diff. This means more CPU will be used during the backup but the backup size will be smaller and the retention schedule will not be impacted." }, { "commit": "cca7a4ffd477871d5eab323f1a5f621fbe48a568", "date": "2018-10-30 16:45:42 -0400", "subject": "Retry all S3 5xx errors rather than just 500 internal errors.", "body": "We were already retrying 500 errors but 503 (rate-limiting) errors were not being retried and would cause an instant failure which aborted the command.\n\nThere are only two 5xx errors currently implemented by S3 but instead of adding 503 simply retry all 5xx errors. This is consistent with the http definition of this error class, \"the server failed to fulfill an apparently valid request.\"" }, { "commit": "286f7e501154a05d147d146d25e3dd0ea0d49d5c", "date": "2018-10-27 20:00:00 +0100", "subject": "Fix static WAL segment size used to determine if archive-push-queue-max has been exceeded.", "body": "This calculation was missed when the WAL segment size was made dynamic in preparation for PostgreSQL 11.\n\nFix the calculation by checking the actual WAL file sizes instead of using an estimate based on WAL segment size. This is more accurate because it takes into account .history and .backup files, which are smaller. Since the calculation is done in the async process the additional processing time should not adversely affect performance.\n\nRemove the PG_WAL_SIZE constant and instead use local constants where the old value is still required. This is only the case for some tests and PostgreSQL 8.3 which does not provide a way to get the WAL segment size from pg_control." }, { "commit": "41b00dc204a04a87b337aa5bebe7cfd4032d5eae", "date": "2018-10-27 16:57:57 +0100", "subject": "Fix issue with archive-push-queue-max not being honored on connection error.", "body": "If an error occurred while acquiring a lock on a remote server the error would be reported correctly, but the queue max detection code was not reached. The tests failed to detect this because they fixed the connection before queue max, allowing the ccde to be reached.\n\nMove the queue max code before the lock so it will run even when remote connections are not working. This means that no attempt will be made to transfer WAL once queue max has been exceeded, but it makes it much more likely that the code will be reach without error.\n\nUpdate tests to continue errors up to the point where queue max is exceeded." }, { "commit": "03b9db9aa2e84bf6b23af8331712d1480520ca19", "date": "2018-10-25 14:58:25 +0100", "subject": "Fix error after log file open failure when processing should continue.", "body": "The C code was warning on failure and continuing but the Perl logging code was never updated with the same feature.\n\nRather than add the feature to Perl, just disable file logging if the log file cannot be opened. Log files are always opened by C first, so this will eliminate the error in Perl." }, { "commit": "d301720c58145910189829e8b2ceacccd3543c1e", "date": "2018-10-25 10:48:37 +0100", "subject": "Change infoArchiveCheckPg() to display the PostgreSQL version as a string in errors.", "body": "Previously an integer representation (e.g. 90400) would be displayed which is correct but not as friendly to the user." }, { "commit": "5590bfa84c0a91d1e93ed03441e12c4dab1078c5", "date": "2018-10-19 18:31:05 +0200", "subject": "Add tests for InfoPg history fixes introduced in 070455ce.", "body": "The existing tests were not adequate to ensure the history was being added in the correct order when some entries were loaded from a file and others added with infoPgAdd()." }, { "commit": "070455ce44504c63a5bf2f70093c64ed278fa12e", "date": "2018-10-19 12:31:56 +0200", "subject": "Correct current history item in InfoPg to always be in position 0.", "body": "The InfoPg object was partially modified in 960ad732 to place the current history item in position 0, but infoPgDataCurrent() didn't get updated correctly.\n\nRemove this->indexCurrent and make the current position always equal 0. Use the new lstInsert() function when adding new history items via infoPgAdd(), but continue to use lstAdd() when loading from a file for efficiency.\n\nThis does not appear to be a live bug because infoPgDataCurrent() and infoPgAdd() are not yet used in any production code. The archive-get command is the only C code using InfoPG and it always looks at the entire list of items rather than just the current item." }, { "commit": "f345db3f7ca15480c5aa70d015150b399f3ce33a", "date": "2018-10-19 11:52:17 +0200", "subject": "Add lstInsert() to List object.", "body": "Add general purpose insert function and make lstAdd() a special insert case." }, { "commit": "09a1ad2c10fa17e165b88731322f4dcf8de73ecc", "date": "2018-10-19 10:51:33 +0200", "subject": "Correct cfgDefDataFind() to use UINTP instead of VOIDPP.", "body": "Also add the UINTP macro." }, { "commit": "06d68eada00e6ec57c662aa9ad2bacdc86eb5861", "date": "2018-10-16 17:21:01 +0100", "subject": "Begin v2.07 development." }, { "commit": "904550c97f674d3f576d3113756f2b5c89b55ddf", "date": "2018-10-16 14:56:51 +0100", "subject": "v2.06: Checksum Delta Backup and PostgreSQL 11 Support" }, { "commit": "2c272c220b39739ff324305593034487df81b466", "date": "2018-10-15 23:23:49 +0100", "subject": "PostgreSQL 11 support.", "body": "PostgreSQL 11 RC1 support was tested in 9ae3d8c46 when the u18 container was rebuilt. Nothing substantive changed after RC1 so pgBackRest is ready for PostgreSQL 11 GA." }, { "commit": "9ae3d8c46ac10273ca53c942410f768e27395230", "date": "2018-10-15 23:13:08 +0100", "subject": "Install nodejs from deb.nodesource.com.", "body": "The standard npm packages on Ubuntu 18.04 suddenly required libssl1.0 which broke the pgbackrest package builds. Installing nodejs from deb.nodesource.com seems to work fine with standard libssl.\n\nThis package is required by ScalityS3 which is used for local S3 testing." }, { "commit": "98ff8ccc59fa1e344426f3084e0a37498e56ce12", "date": "2018-10-09 15:08:49 +0100", "subject": "Improve documentation in filter.h and filter.internal.h.", "body": "When the filter interface internals were split out into a new header file the documentation was not moved as it should have been. Additionally some functions which should have been moved were left behind.\n\nMove the documentation and functions to filter.internal.h and add more documentation. Filters are a tricky subject so the more documentation the better.\n\nAlso add documentation for the user-facing filter functions in filter.h." }, { "commit": "68110d04b24dc633e5b5b6869924dd36a2307135", "date": "2018-10-07 17:50:10 +0100", "subject": "Add ioReadLine()/ioWriteLine() to IoRead/IoWrite objects.", "body": "Allow a single linefeed-terminated line to be read or written. This is useful for various protocol implementations, including HTTP and pgBackRest's protocol.\n\nOn read the maximum line size is limited to buffer-size to prevent runaway memory usage in case a linefeed is not found. This seems fine for HTTP but we may need to revisit this decision when implementing the pgBackRest protocol. Another option would be to increase the minimum buffer size (currently 16KB)." }, { "commit": "db8dce7adcf277a021ad8766ab91e86fad913eff", "date": "2018-10-02 17:54:43 +0100", "subject": "Disable flapping archive/get unit on CentOS 6.", "body": "This test has been flapping since 9b9396c7. It seems to be some kind of timing issue since all integration tests pass and this unit passes on all other VMs. It only happens on Travis and is not reproducible in any development environment that we have tried.\n\nFor now, disable the test since the constant flapping is causing major delays in testing and quite a bit of time has been spent trying to identify the root cause. We are actively developing these tests and hope the issue will be identified during the course of normal development.\n\nA number of improvements were made to the tests while searching for this issue. While none of them helped, it makes sense to keep the improvements." }, { "commit": "ed5d7a53de7cd952825e824ae507e275c4648e18", "date": "2018-09-30 12:27:05 +0100", "subject": "Add .gitignore to C src directory.", "body": "Suggested by Stephen Frost." }, { "commit": "3be9f2dee79c02e728e2339dd047d6990ec215c5", "date": "2018-09-30 11:45:37 +0100", "subject": "Avoid calling strlen() twice in bufNewZ()." }, { "commit": "5404628148a3039f3933607c7f63cb4620f71761", "date": "2018-09-27 17:48:40 +0100", "subject": "Fix incorrect error message for duplicate options in configuration files.", "body": "Duplicating a non-multi-value option was not throwing the correct message when the option was a boolean.\n\nThe reason was that the option was being validated as a boolean before the multi-value check was being done. The validation code assumed it was operating on a string but was instead operating on a string list causing an assertion to fail.\n\nSince it's not safe to do the multi-value check so late, move it up to the command-line and configuration file parse phases instead." }, { "commit": "be2271f6d312e6497e98df2c792d2455afb461eb", "date": "2018-09-27 17:24:06 +0100", "subject": "Add cfgDefOptionMulti() to identify multi-value options.", "body": "Previously this was done in two separate places by checking if an option was type hash or list.\n\nBad enough that it was in two places, but an upcoming bug fix will add another instance so make it a function." }, { "commit": "e66e68e324fb8381e0592a419b3aafdf70703b56", "date": "2018-09-27 09:20:47 +0100", "subject": "Add cryptoHmacOne() for HMAC support.", "body": "There doesn't seem to be any need to implement this as a filter since current use cases (S3 authentication) work on small datasets.\n\nSo, use the single function method provided by OpenSSL for simplicity." }, { "commit": "6470f03fa28a72c9603d4d913ce58c7223b6cc0b", "date": "2018-09-26 22:36:42 +0100", "subject": "Comment fixes." }, { "commit": "bcca625062b4ee8394f933218e890238a75e9419", "date": "2018-09-26 22:33:48 +0100", "subject": "Add bufHex()to Buffer object.", "body": "A general-purpose function for converting buffers to hex strings." }, { "commit": "51484a008f1172b51c2296974de7bfcd37ab24b8", "date": "2018-09-26 18:46:52 +0100", "subject": "Add bufNewZ() to Buffer object.", "body": "This constructor creates a Buffer object directly from a zero-terminated string. The old way was to create a String object first, then convert that to a Buffer using bufNewStr().\n\nUpdated in all places that used the old pattern." }, { "commit": "d038b9a029f0c981e32a94b8b8632c356ffec7ac", "date": "2018-09-25 10:24:42 +0100", "subject": "Support configurable WAL segment size.", "body": "PostgreSQL 11 introduces configurable WAL segment sizes, from 1MB to 1GB.\n\nThere are two areas that needed to be updated to support this: building the archive-get queue and checking that WAL has been archived after a backup. Both operations require the WAL segment size to properly build a list.\n\nChecking the archive after a backup is still implemented in Perl and has an active database connection, so just get the WAL segment size from the database.\n\nThe archive-get command does not have a connection to the database, so get the WAL segment size from pg_control instead. This requires a deeper inspection of pg_control than has been done in the past, so it seemed best to copy the relevant data structures from each version of PostgreSQL and build a generic interface layer to address them. While this approach is a bit verbose, it has the advantage of being relatively simple, and can easily be updated for new versions of PostgreSQL.\n\nSince the integration tests generate pg_control files for testing, teach Perl how to generate files with the correct offsets for both 32-bit and 64-bit architectures." }, { "commit": "c0b0b4e541fc7cc5077e7f6b9fa646e7654ca9a4", "date": "2018-09-21 13:25:27 -0400", "subject": "PostgreSQL 11 Beta 4 support.", "body": "Catalog version changed for this release, so update it.\n\nAlso update and upload a new container with beta 4 installed." }, { "commit": "d513a46e6d9d34a28dd4b99636d6ea11d3e0dff4", "date": "2018-09-19 18:26:12 -0400", "subject": "Update introduction to be pithy." }, { "commit": "50266cc26c2c76fd155779e85c82dbed58cc2d84", "date": "2018-09-19 16:41:20 -0400", "subject": "Use command in authorized_hosts to improve SSH security.", "body": "Unsecured, passwordless SSH can be a scary thing. If an attacker gains access to one system they can easily hop to other systems.\n\nAdd documentation on how to use the command parameter in authorized_keys to limit ssh to running a single command, pgbackrest. There is more that could be done for security but this likely addresses most needs.\n\nAlso change references to \"trusted ssh\" to \"passwordless ssh\" since this seems more correct." }, { "commit": "880fbb5e578c387e52f83c8eca1040b42f4e21a8", "date": "2018-09-19 11:12:45 -0400", "subject": "Add checksum delta for incremental backups.", "body": "Use checksums rather than timestamps to determine if files have changed. This is useful in cases where the timestamps may not be trustworthy, e.g. when performing an incremental after failing over to a standby.\n\nIf checksum delta is enabled then checksums will be used for verification of resumed backups, even if they are full. Resumes have always used checksums to verify the files in the repository, enabling delta performs checksums on the database files as well.\n\nNote that the user must manually enable this feature in cases were it would be useful or just keep in enabled all the time. A future commit will address automatically enabling the feature in cases where it seems likely to be useful." }, { "commit": "bf0691576a56df0d662488cee19d21e924a3cecb", "date": "2018-09-18 13:29:05 -0400", "subject": "Allow delta option to be specified in the pgBackRest configuration file.", "body": "This option was previously allowed on the command-line only for no particular reason that we could determine.\n\nBeing able to specify it in the config file seems like a good idea and won't change current usage." }, { "commit": "b6b2c915b24fdcfb64e1fe6a0c8a796da50c9fe4", "date": "2018-09-18 11:39:48 -0400", "subject": "Allow hashSize() to run on remote storage.", "body": "Apparently we never needed to run this function remotely.\n\nIt will be needed by the backup checksum delta feature, so implement it now." }, { "commit": "052e483057e4ee55d29c229c39b92c90a9cee0af", "date": "2018-09-18 10:18:39 -0400", "subject": "Restore bIgnoreMissing flag in backupFile() lost in storage refactor.", "body": "The test to make sure that some files (e.g. pg_control) do not get removed during the backup was lost during the storage refactor committed at de7fc37f.\n\nThis did not impact the integrity of the backups, but bring it back since it is a nice sanity check." }, { "commit": "03003562d86f7fdbab21cad9f7a7ee56c3070f93", "date": "2018-09-17 11:45:41 -0400", "subject": "Merge all posix storage tests into a single unit.", "body": "As we add storage drivers it's important to keep the tests for each completely separate. Rather than have three tests for each driver, standardize on having a single test unit for each driver." }, { "commit": "e55d73304102145c46c32f25dbe103cd4c750d37", "date": "2018-09-17 11:38:10 -0400", "subject": "Add -ftree-coalesce-vars option to unit test compilation.", "body": "This is a workaround for inefficient handling of many setjmps in gcc >= 4.9. Setjmp is used in all error handling, but in the unit tests each test macro contains an error handling block so they add up pretty quickly for large unit tests.\n\nEnabling -ftree-coalesce-vars in affected versions reduces build time and memory requirements by nearly an order of magnitude. Even so, compiles are much slower than gcc <= 4.8.\n\nWe submitted a bug for this at: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87316\nWhich was marked as a duplicate of: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63155" }, { "commit": "b5f749b21cbf51e3ba9f3bc2129c337cb6ebec92", "date": "2018-09-16 18:41:30 -0400", "subject": "Add CIFS driver to storage helper for read-only repositories.", "body": "For read-only repositories the Posix and CIFS drivers behave exactly the same. Since that's all we support in C right now it's valid to treat them as the same thing. An assertion has been added to remind us to add the CIFS driver before allowing the repository to be writable.\n\nMostly we want to make sure that the C code does not blow up when the repository type is CIFS." }, { "commit": "a6c346cb04d8977d37e52072488d89a7fb3a89b6", "date": "2018-09-16 17:26:04 -0400", "subject": "Clear test directory between test runs.", "body": "Previously it was the responsibility of the individual tests to clean up after themselves. Now the test harness now does the cleanup automatically.\n\nThis means that some paths/files need to be recreated with each run but that doesn't happen very often.\n\nAn attempt has been made to remove all redundant cleanup code but it's hard to know if everything has been caught. No issues will be caused by anything that was missed, but they will continue to chew up time in the tests." }, { "commit": "4119ce208d1d6de2b096d0465721e93dcb981d3f", "date": "2018-09-16 15:58:46 -0400", "subject": "Move test expect log out of the regular test directory.", "body": "Storing the expect log (created by common/harnessLog) in the regular test directory was not ideal. It showed up in tests and made it difficult to clear the test directory between each run.\n\nMove the expect log to a purpose-built directory one level up so it does not interfere with regular testing." }, { "commit": "8852622fa241836b0a6c5c08d755f2c3d990427d", "date": "2018-09-16 15:53:19 -0400", "subject": "Fix missing test caused by a misplaced YAML tag." }, { "commit": "c47fc28c8b9cba4fba60f206ec029773f60171af", "date": "2018-09-16 14:15:21 -0400", "subject": "Make comment blocks consistent across all tests." }, { "commit": "84ab787b1a7f8ca42d9b2be72a730ace852667a1", "date": "2018-09-16 14:12:53 -0400", "subject": "Merge protocol storage helper into storage helper.", "body": "These are separated the same way in the Perl code where the remote storage driver is located in the Protocol module. However, in the C code the intention is to implement the remote storage driver as a regular driver in the storage layer rather than making a special case out of it.\n\nSo, merge the storage helpers. This also has the benefit of making the code a bit simpler.\n\nAlso separate storageSpool() and storageSpoolWrite() to make it clearer which operations require write access and to maintain consistency with the other storage helper functions." }, { "commit": "3014b05dabaa66fbb3ccfba89c79cca49905a695", "date": "2018-09-16 13:41:49 -0400", "subject": "Fix buffer underrun in configuration test harness.", "body": "If the total bytes read from the expect log file was 0 then the last byte of whatever was in memory before harnessLogBuffer would be set to 0.\n\nOn 32-bit systems this expressed as the high order byte of a pointer being cleared and wackiness (in the form of segfaults) ensued." }, { "commit": "0c02481d6e5cb7c85cd7caf770d06820137f27b4", "date": "2018-09-15 21:07:00 -0400", "subject": "Update all interfaces to use variable parameter constructors.", "body": "Fixed parameter constructors made adding new interface functions a burden, so we switched to using structs to define interfaces in the storage module at c49eaec7.\n\nWhile propagating this pattern to the IO interfaces it became obvious that the existing variable parameter function pattern (begun in the storage module) was more succinct and consistent with the existing code.\n\nSo, use variable parameter functions to define all interfaces. This assumes that the non-interface parameters will be fixed, which seems reasonable for low-level code." }, { "commit": "f0ed89f21fe2ae6278e64395f4191519807e529b", "date": "2018-09-15 13:27:06 -0400", "subject": "Allow C or Perl coverage to run on more than one VM.", "body": "C or Perl coverage tests can now be run on any VM provided a recent enough version of Devel::Cover or lcov is available.\n\nFor now, leave u18 as the only VM to run coverage tests due to some issues with older versions of lcov." }, { "commit": "31cdd9d20b114f5c71c585a6effc4e71fae0d9c2", "date": "2018-09-15 08:23:55 -0400", "subject": "Remove compiler warnings that are not valid for u16." }, { "commit": "c49eaec776014806af194e7a2d9e88691f361f99", "date": "2018-09-14 16:08:33 -0400", "subject": "Full abstraction of storage driver interface.", "body": "The external storage interfaces (Storage, StorageFileRead, etc.) have been stable for a while, but internally they were calling the posix driver functions directly.\n\nCreate driver interfaces for storage, fileRead, and fileWrite and remove all references to the posix driver outside storage/driver/posix (with the exception of a direct call to pathRemove() in Perl LibC).\n\nPosix is still the only available driver so more adjustment may be needed, but this should represent the bulk of the changes." }, { "commit": "aeb1fa3dfbf4a4b7384f8f2bc5a18a23e741396e", "date": "2018-09-13 19:12:40 -0400", "subject": "Don't perform valgrind when requested.", "body": "The --no-valgrind flag was not being honored. It's not clear if this flag ever worked, but it does now." }, { "commit": "fd14ceb3995fca731141f09f7c940819138c63a2", "date": "2018-09-13 18:58:22 -0400", "subject": "Rename posix driver files/functions for consistency.", "body": "The posix driver was developed over time and the naming is not very consistent.\n\nRename the files and functions to work well with other drivers and generally favor longer names since the driver functions are seldom (eventually never) used outside the driver itself." }, { "commit": "ab1762663cdcc3564113c5524dc384991228c0a4", "date": "2018-09-13 17:53:48 -0400", "subject": "Don't use negations in objects below Storage.", "body": "The Storage object represents some some optional parameters as negated if the default is true. This allows sensible defaults without having to specify most optional parameters.\n\nHowever, there's no need to propagate this down to functions that require all parameters to be passed -- it makes the code and logging more confusing. Rename the parameters and update logic to remove negations." }, { "commit": "1fb9fe7026f355f86c44fac375a370458c10fc99", "date": "2018-09-12 18:14:23 -0400", "subject": "Update comments missed in 5aa458ff." }, { "commit": "5aa458ffaecc42cbf6ee37ee4f985d255e31443e", "date": "2018-09-11 18:32:56 -0400", "subject": "Simplify debug logging by allowing log functions to return String objects.", "body": "Previously, debug log functions had to handle NULLs and truncate output to the available buffer size. This was verbose for both coding and testing.\n\nInstead, create a function/macro combination that allows log functions to return a simple String object. The wrapper function takes care of the memory context, handles NULLs, and truncates the log string based on the available buffer size." }, { "commit": "9b9396c7b7745cc4c765285e24ed131e7f72f343", "date": "2018-09-11 15:42:31 -0400", "subject": "Migrate local, unencrypted, non-S3 archive-get command to C.", "body": "The archive-get command will only be executed in C if the repository is local, unencrypted, and type posix or cifs. Admittedly a limited use case, but this is just the first step in migrating the archive-get command entirely into C.\n\nThis is a direct migration from the Perl code (including messages) to integrate as seamlessly with the remaining Perl code as possible. It should not be possible to determine if the C version is running unless debug-level logging is enabled." }, { "commit": "787e7c295ff64b7f862693784fa901d8b046a3d4", "date": "2018-09-11 14:43:16 -0400", "subject": "Change locking around async process forking to be more test friendly.", "body": "The lock is now released before the fork and reacquired after the fork so the parent process no longer needs to worry about clearing the lock.\n\nThis is the same locking mechanism that will be used once archive-get-async is exec'd as a separate command, so introduce it now to simplify testing." }, { "commit": "9e574a37dc4a5c03155a00673a944c2da0a51528", "date": "2018-09-11 12:30:48 -0400", "subject": "Make archive-get info messages consistent between C and Perl implementations.", "body": "The info messages were spread around and logged differently based on the execution path and in some cases logged nothing at all.\n\nTemporarily track the async server status with a flag so that info messages are not output in the async process. The async process will be refactored as a separate command to be exec'd in a future commit." }, { "commit": "6c1d48b0186f4df40787349d37b35d822e043289", "date": "2018-09-11 10:55:55 -0400", "subject": "Command-line help update missed in cabb3f857." }, { "commit": "cabb3f8577d6de2a6fec7b6e78e68671fc39a65b", "date": "2018-09-10 13:33:39 -0400", "subject": "List allowable values for the buffer-size option in the configuration reference.", "body": "Contributed by Cynthia Shang.\nSuggested by Stéphane Schildknecht." }, { "commit": "e351b8c67ca16f4210449c9d51916db1b3ad2416", "date": "2018-09-10 13:09:45 -0400", "subject": "Improve info command to display the stanza cipher type.", "body": "Contributed by Cynthia Shang.\nSuggested by Douglas J Hunley." }, { "commit": "c688bc86276fcc43bf53747ebbf3259bb8d5a62b", "date": "2018-09-10 10:54:34 -0400", "subject": "Improve support for special characters in filenames.", "body": "% characters caused issues in backup/restore due to filenames being appended directly into a format string.\n\nReserved XML characters (<>&') caused issues in the S3 driver due to improper escaping.\n\nAdd a file with all common special characters to regression testing." }, { "commit": "80ef6fce7529c5f9b8309ac0b8451ddce2a08e2b", "date": "2018-09-10 10:47:00 -0400", "subject": "Fix missing URI encoding in S3 driver.", "body": "File names with uncommon characters (e.g. @) caused authentication failures due to S3 encoding them correctly while the S3 driver did not." }, { "commit": "f7fc8422f780d18d045f42124dc40aa0920fe416", "date": "2018-09-07 16:50:01 -0700", "subject": "Make Valgrind return an error even when a non-fatal issue is detected.", "body": "By default Valgrind does not exit with an error code when a non-fatal error is detected, e.g. unfreed memory. Use the --error-exitcode option to enabled this behavior.\n\nUpdate some minor issues discovered in the tests as a result. Luckily, no issues were missed in the core code." }, { "commit": "faaa9a91fda78f8e38d0a479675f08a5b17a7302", "date": "2018-09-07 08:03:56 -0700", "subject": "Fix typo in unit test error messages, EXECTED => EXPECTED." }, { "commit": "6e9b6fdca919b9f6fe2bfdb88447ee1f4f7abea7", "date": "2018-09-07 08:03:05 -0700", "subject": "Migrate control functions to detect stop files to C from Perl.", "body": "Basic functions to detect the presence of stanza or all stop files and error when they are present.\n\nThe functionality to detect stop files without error was not migrated. This functionality is only used by stanza-delete and will be migrated with that command." }, { "commit": "5bdaa35fa5fea30bf7cdf10a5077cb3b661aa3db", "date": "2018-09-07 08:00:18 -0700", "subject": "Migrate walIsPartial(), walIsSegment(), and walSegmentFind() from Perl to C.", "body": "Also refactor regular expression defines to make them more reusable." }, { "commit": "96600760930d1713645ffab211d98d2314818432", "date": "2018-09-07 07:58:08 -0700", "subject": "Add helper for repository storage.", "body": "Implement rules for generating paths within the archive part of the repository. Add a helper function, storageRepo(), to create the repository storage based on configuration settings.\n\nThe repository storage helper is located in the protocol module because it will support remote file systems in the future, just as the Perl version does.\n\nAlso, improve the existing helper functions a bit using string functions that were not available when they were written." }, { "commit": "960ad73298fa9c3b9ea60b24428a10ede9a58828", "date": "2018-09-06 10:12:14 -0700", "subject": "Info objects now parse JSON and use specified storage.", "body": "Use JSON code now that it is available and remove temporary hacks used to get things working initially.\n\nUse passed storage objects rather than using storageLocal(). All storage objects in C are still local but this won't always be the case.\n\nAlso, move Postgres version conversion functions to postgres/info.c since they have no dependency on the info objects and will likely be useful elsewhere." }, { "commit": "de1b74da0cf9c4f182e3a4cde52d0b5163111a44", "date": "2018-09-06 09:35:34 -0700", "subject": "Move encryption in mock/archive tests to remote tests.", "body": "The new archive-get C code can't run (yet) when encryption is enabled. Therefore move the encryption tests so we can test the new C code. We'll move it back when encryption is enabled in C.\n\nAlso, push one WAL segment with compression to test decompression in the C code." }, { "commit": "6361a061812b20efeb89db110ebd592a0d52404f", "date": "2018-09-04 21:46:41 -0400", "subject": "Fix incorrectly reported error return in info logging.", "body": "A return code of 1 from the archive-get was being logged as an error message at info level but otherwise worked correctly.\n\nAlso improve info messages when an archive segment is or is not found." }, { "commit": "800afeef70464da57af023614b1dfeecce5e112c", "date": "2018-09-04 17:47:23 -0400", "subject": "Posix file functions now differentiate between open and missing errors.", "body": "The Perl functions do so and the integration tests rely on checking for these errors. This has been exposed as more functionality is moved into C.\n\nPassing the errors types is now a bit complicated so instead use a flag to determine which errors to throw." }, { "commit": "375ff9f9d283842da3620f22c9c5bdb61249ae9e", "date": "2018-08-31 16:06:40 -0400", "subject": "Ignore all files in a linked tablespace directory except the subdirectory for the current version of PostgreSQL.", "body": "Previously an error would be generated if other files were present and not owned by the PostgreSQL user. This hasn't been a big deal in practice but it could cause issues.\n\nAlso add tests to make sure the same logic applies with links to files, i.e. all other files in the directory should be ignored. This was actually working correctly, but there were no tests for it before." }, { "commit": "41746b53cd91c0d7203d855f9186c685ea59af47", "date": "2018-08-31 14:24:36 -0400", "subject": "Begin v2.06 development." }, { "commit": "bc7462d86d3529712cf7c196a04f7d6f8dd8ee34", "date": "2018-08-31 13:19:43 -0400", "subject": "v2.05: Environment Variable Options and Exclude Temporary/Unlogged Relations" }, { "commit": "d41570c37a2820380fa1708f31ed21c09e4065f8", "date": "2018-08-31 11:31:13 -0400", "subject": "Improve log file names for remote processes started by locals.", "body": "The log-subprocess feature added in 22765670 failed to take into account the naming for remote processes spawned by local processes. Not only was the local command used for the naming of log files but the process id was not pass through. This meant every remote log was named \"[stanza]-local-remote-000\" which is confusing and meant multiple processes were writing to the same log.\n\nInstead, pass the real command and process id to the remote. This required a minor change in locking to ignore locks if process id is greater than 0 since remotes started by locals never lock." }, { "commit": "c2d0a21d63a3c76bf513ac79c622e694ca9dfe1d", "date": "2018-08-30 18:44:40 -0400", "subject": "Allow secrets to be passed via environment variables.", "body": "When environment variables were added in d0b9f986 they were classified as cfgSourceParam, but one of the restrictions on this type is that they can't pass secrets because they might be exposed in the process list.\n\nThe solution is to reclassify environment variables as cfgSourceConfig. This allows them to handle secrets because they will not pass values to subprocesses as parameters. Instead, each subprocess is expected to check the environment directly during configuration parsing.\n\nIn passing, move the error about secrets being passed on the command-line up to command-line parsing and make the error more generic with respect to the configuration file now that multiple configuration files are allowed." }, { "commit": "70514061fdca620ba99dd0e36bb99dccbca43e1d", "date": "2018-08-30 16:27:36 -0400", "subject": "Fix issue where relative links in $PGDATA could be stored in the backup with the wrong path.", "body": "Relative link paths were being combined with the paths of previous links (relative or absolute) due to the $strPath variable being modified in the current iteration rather than simply being passed to the next level of recursion.\n\nThis issue did not affect absolute links and relative tablespace links were caught by other checks, though the error was confusing." }, { "commit": "1631f8b3cebbe761f5eb71c9b7203664f2ae5005", "date": "2018-08-29 16:45:58 -0500", "subject": "Embedded documentation update missed in c6384904." }, { "commit": "c6384904512363baaa8c6dbec42799c0ddb1d4db", "date": "2018-08-28 16:49:29 -0400", "subject": "Documentation updates for exclude feature based on review.", "body": "Reviewed by Cynthia Shang." }, { "commit": "14cde54b37bec6ac831a2ddc870531bd61b034dd", "date": "2018-08-28 16:27:10 -0400", "subject": "Limit manifest build recursion (i.e. links followed) to sixteen levels to detect link loops." }, { "commit": "a6cecf7d5ef722bc962a1e6a3808dce3424ca710", "date": "2018-08-28 16:22:30 -0400", "subject": "Prevent manifest from being built more than once." }, { "commit": "4498f726a59132421f8a1530783f8bb6cc8905c3", "date": "2018-08-28 16:04:53 -0400", "subject": "Improve asynchronous archive-get/archive-push performance by directly checking status files.", "body": "Prior to this commit, an expression was used to search the spool directory for ok/error files for a specific WAL segment. This involved setting up a regular expression and using opendir/readdir.\n\nInstead, directly probe for the status files, checking directly if a '.ok' or '.error' file exists, avoiding the regular expression and eliminating the directory scan.\n\nOnly the two files now probed for could have ever matched the regular expression which had been provided and it's unlikely that many more additional files will be added, so this is a good improvement, and optimization, with little downside." }, { "commit": "bef58a79743d3273d14de221e26291a5d90409b3", "date": "2018-08-27 15:51:05 -0400", "subject": "Allow arbitrary directories and/or files to be excluded from a backup.", "body": "Misuse of this feature can lead to inconsistent backups so read the --exclude documentation carefully before using." }, { "commit": "77dca5b96817d0e0d49e34fb7d8e0944e60f71a8", "date": "2018-08-24 19:31:45 -0400", "subject": "Allow command/option constants to autonumber in both C and Perl to reduce churn when a new command/option is added." }, { "commit": "4c3cf435c036037ff32b7a76e53753e765358173", "date": "2018-08-24 17:08:00 -0400", "subject": "Add cvtZToUInt() to convert string to unsigned int." }, { "commit": "eb30d88b6a6048353b269d590c43fad9e6233a25", "date": "2018-08-24 16:50:33 -0400", "subject": "Allow zero-size files in backup manifest to reference a prior manifest regardless of timestamp delta.", "body": "Contributed by Cynthia Shang." }, { "commit": "0ed37ab9e73fb59a5558b39bb292e0eb4f331ec9", "date": "2018-08-24 12:13:10 -0400", "subject": "Update Archive::Info->archiveIdList() to return a valid error code instead of unknown." }, { "commit": "22765670270067c5102a2ab9b3277d4cbc86c6af", "date": "2018-08-22 20:05:49 -0400", "subject": "Add log-subprocess option to allow file logging for local and remote subprocesses." }, { "commit": "512da125ad7314d2d58931186316423f039c8c35", "date": "2018-08-22 19:03:13 -0400", "subject": "Improve error reporting for TEST_ASSIGN() and TEST_RESULT_VOID() macros." }, { "commit": "ad989068d283a99a8aaf20be2eb0337a47bb8f73", "date": "2018-08-22 16:45:25 -0400", "subject": "Fix issue when a boolean option (e.g. delta) was specified more than once.", "body": "Reported by Yogesh Sharma." }, { "commit": "8a8738308c08ec9ac7a12b08f2ab7358dc4aa3af", "date": "2018-08-22 14:48:37 -0400", "subject": "Enable -Wvla." }, { "commit": "de5614db6b027900ef48f4ade456643cfecad79c", "date": "2018-08-15 14:05:39 -0400", "subject": "PostgreSQL 11 Beta 3 support." }, { "commit": "d0b9f986a0eb30c550b2dc9031ad10dda941a26c", "date": "2018-08-15 10:52:53 -0400", "subject": "Allow any option to be set in an environment variable.", "body": "This includes options that previously could only be specified on the command line, e.g. stanza." }, { "commit": "4a822d3032389543d2bb53018cff9062155cd3f9", "date": "2018-08-15 10:32:18 -0400", "subject": "Correct OptionInvalidError to OptionInvalidValueError in boolean option parsing." }, { "commit": "238e5dae3c12ff37b3873e5db5a9c1cff3bed64f", "date": "2018-08-14 17:17:14 -0400", "subject": "Allow resolve array from cd5df357 to autosize to detect short arrays in testing." }, { "commit": "cb4b715533c1a566add50cb3e245cd2a65fba5fa", "date": "2018-08-14 16:49:38 -0400", "subject": "Add strReplaceChr() to String object." }, { "commit": "4a176681c3d7767c1f5cb98d1d5e46b7adb3f76b", "date": "2018-08-14 16:18:17 -0400", "subject": "Add cvtCharToZ() and macro for debugging char params." }, { "commit": "9e3273fdf91e31d6f13ecd12658fa624dfbf4f3d", "date": "2018-08-14 16:08:58 -0400", "subject": "Define cipher magic size with sizeof() rather than using a constant." }, { "commit": "6643afe9a86bf617d2e90687130248c4a6ee6c14", "date": "2018-08-14 14:56:59 -0400", "subject": "Add gzip compression/decompression filters for C." }, { "commit": "e3ff6b209d9cf50f88f51a70ac7247949b63ac55", "date": "2018-08-14 14:21:53 -0400", "subject": "Filters can now produce output that differs from input.", "body": "This allows filters such as compression, encryption, etc. to be implemented." }, { "commit": "a45d1b4a60545940a6a5eac37cf16473b97d2c41", "date": "2018-08-14 13:38:11 -0400", "subject": "Update to command-line docs missed in 40924e8f." }, { "commit": "40924e8f5c84cfdac7eadde4b6cca092f3900430", "date": "2018-08-13 07:47:26 -0400", "subject": "Fix invalid log level in log-path option reference.", "body": "Reported by Camilo Aguilar." }, { "commit": "343424009795014bce2474f46762d76cc9ec4ef7", "date": "2018-08-12 19:24:21 -0400", "subject": "Remove incompletely implemented online option from the check command.", "body": "Offline operation runs counter to the purpose of this command, which is to check if archiving and backups are working correctly." }, { "commit": "cb6821e8533a9ff3c4e3727746bd1d259255d86a", "date": "2018-08-12 18:19:34 -0400", "subject": "Stop trying to arrange contributors in release.xml by last/first name.", "body": "Contributor names have always been presented in the release notes exactly as given, but we tried to assign internal IDs based on last/first name which can be hard to determine and ultimately doesn't make sense.\n\nInspired by Christophe Pettus' PostgresOpen 2017 talk, \"Human Beings Do Not Have a Primary Key\"." }, { "commit": "cd5df3570b0fcd5011e2339b48a3359a1f2c54da", "date": "2018-08-11 12:55:33 -0400", "subject": "Validate configuration options in a single pass.", "body": "By pre-calculating and storing the option dependencies in parse.auto.c validation can be completed in a single pass, which is both simpler and faster." }, { "commit": "f06bf9e8329fcb083271fab8d7aeccad1122a5b1", "date": "2018-08-11 09:47:07 -0400", "subject": "Improve error message when a command is missing the stanza option.", "body": "Suggested by Sarah Conway." }, { "commit": "8ab2e72960de60557331fe7087015519a516f318", "date": "2018-08-09 08:57:21 -0400", "subject": "Migrate minimum set of code for reading archive.info files from Perl to C.", "body": "Contributed by Cynthia Shang." }, { "commit": "7993f1a96620ac6c00ba961036ba5ff6abc58f22", "date": "2018-08-09 08:06:23 -0400", "subject": "Add basic C JSON parser." }, { "commit": "31167d8f987cf171bd655c5ccb1bebebac9d7997", "date": "2018-08-05 08:35:18 -0400", "subject": "Enable -Wduplicated-branches, and -Wduplicated-cond." }, { "commit": "14f21a8f6c0f1bec4c4af82af51235ddf8617beb", "date": "2018-08-04 19:37:28 -0400", "subject": "Enable -Wpointer-arith." }, { "commit": "429a356e3323acf99f3d73a527baf7aaa55a3b5b", "date": "2018-08-03 19:19:14 -0400", "subject": "Enable -Wstrict-prototypes and update all void functions to conform." }, { "commit": "bec4c176dc478d5eff855c18ba05d4a8301f0b22", "date": "2018-07-30 18:53:34 -0400", "subject": "Exclude temporary and unlogged relation (table/index) files from backup.", "body": "Implemented using the same logic as the patches adding this feature to PostgreSQL, 8694cc96 and 920a5e50. Temporary relation exclusion is enabled in PostgreSQL ≥ 9.0. Unlogged relation exclusion is enabled in PostgreSQL ≥ 9.1, where the feature was introduced." }, { "commit": "ac16cb7ff16b58c9de4ba9c27d5322b69639594e", "date": "2018-07-28 09:39:52 -0400", "subject": "Add cvtBoolToConstZ() to simplify conversion of boolean to string." }, { "commit": "7a00bbebfafc94f17b7897b2074cfd079e6882b6", "date": "2018-07-28 09:04:06 -0400", "subject": "Do nothing in memContextMove() when the context is already in the specified parent." }, { "commit": "cb975a533095f863232843cac1b3831f24a8fe3c", "date": "2018-07-28 08:43:58 -0400", "subject": "Remove redundant lines from embedded Perl by combining blank lines." }, { "commit": "666537cbdee986ebdc323f6c9d412edf2a5c7145", "date": "2018-07-28 08:13:30 -0400", "subject": "Update code count for new file types and exclusions." }, { "commit": "01aea0c067c2e667c47346620c563218f4c0f568", "date": "2018-07-24 21:08:27 -0400", "subject": "Implement filters that do not modify the buffer.", "body": "Update cryptoHash to use the new interface." }, { "commit": "8e1017c1622bed5ebddc910545cbcaf288dd2f2f", "date": "2018-07-23 07:59:24 -0400", "subject": "Move most host setup to containers defined in the documentation.", "body": "This includes PostgreSQL installation which had previously been included in the documentation. This way produces faster builds and there is no need for us to document PostgreSQL installation." }, { "commit": "27238310322096a52f1babf478cd4fffb344d949", "date": "2018-07-23 07:49:15 -0400", "subject": "Allow containers to be defined in a document.", "body": "The defined containers are built before the document build begins which allows them to be reused." }, { "commit": "ae72772e5b366f02f8a5026e3109cfd43aacb8f4", "date": "2018-07-23 07:17:24 -0400", "subject": "Fix typo in 18626306." }, { "commit": "1862630629bdf435a76575a31ed722cc351def11", "date": "2018-07-21 17:02:42 -0400", "subject": "Use pre-built images from Docker Hub when the container definition has not changed.", "body": "Downloading an image is quite a bit faster than building a new image from scratch and saves minutes per test run in CI." }, { "commit": "8568622a6f5941cbe9e0ef40ea9f605b62675838", "date": "2018-07-20 19:03:46 -0400", "subject": "Add --log-level-test option.", "body": "This allows setting the test log level independently from the general test harness setting, but current only works for the C tests. It is useful for seeing log output from functions on the console while a test is running." }, { "commit": "58e9f1e50cfbc2df22af17293fe8a298cac5513a", "date": "2018-07-20 18:51:42 -0400", "subject": "Refactor the common/log tests to not depend on common/harnessLog.", "body": "common/harnessLog was not ideally suited for general testing and made all the tests quite awkward. Instead, move all code used to test the common/log module into the logTest module and repurpose common/harnessLog to do log expect testing for all other tests in a cleaner way.\n\nAdd a few exceptions for config testing since the log levels are reset by default in config/parse." }, { "commit": "1359e2908c777ef7b8cb128f7d7ede3b53bc2018", "date": "2018-07-20 08:11:34 -0400", "subject": "Fix issue where errors raised in C were not logged when called from Perl.", "body": "pgBackRest properly terminated with the correct error code but lacked an error message to aid in debugging." }, { "commit": "d3cfeebdf91a559a0af80bba5fc424f4d091b944", "date": "2018-07-20 08:03:44 -0400", "subject": "Rename error-handling variables in Main.pm to conform to standard." }, { "commit": "fa53e2eddb95822553b6a860ef3e6d09fdb31f4a", "date": "2018-07-20 07:15:28 -0400", "subject": "Show exact log level required for stack trace param output instead of just \"debug\"." }, { "commit": "0ac176b722fe93301ec9f4d706698f0f01125666", "date": "2018-07-19 16:04:20 -0400", "subject": "Abstract IO layer out of the storage layer.", "body": "This allows the routines to be used for IO objects that do not have a storage representation.\n\nImplement buffer read and write IO objects." }, { "commit": "5dc8a2ec08ee7569063915c7a1b3399ac1f2d16c", "date": "2018-07-17 19:01:54 -0400", "subject": "storageFileRead() accepts a buffer for output rather than creating one.", "body": "This is more efficient overall and allows the caller to specify how many bytes will be read on each call. Reads are appended if the buffer already contains data but the buffer size will never increase.\n\nAllow Buffer object \"used size\" to be different than \"allocated size\". Add functions to manage used size and remaining size and update automatically when possible." }, { "commit": "0acf70541601d99795f6da06ebca030eff69cd46", "date": "2018-07-16 17:25:15 -0400", "subject": "Require PostgreSQL catalog version when instantiating a Manifest object (and not loading it from disk).", "body": "Contributed by Cynthia Shang." }, { "commit": "4e38cbaea9fdfbc8618971c5148ffd0a7e7ef4ab", "date": "2018-07-12 15:28:46 -0400", "subject": "Add iniSectionList() to Ini object and remove dead code.", "body": "Contributed by Cynthia Shang." }, { "commit": "0e6b927a172368a77473571d8c27265253894c0e", "date": "2018-07-12 15:23:18 -0400", "subject": "Add uint64 variant type and supporting conversion functions.", "body": "Contributed by Cynthia Shang.\nReviewed by Stephen Frost." }, { "commit": "0e331b12ba0cf377e4292a89ae84de7bb74281d6", "date": "2018-07-12 15:15:32 -0400", "subject": "Improve performance of string to int conversion.", "body": "Use strtoll() instead of sprintf() for conversion. Also use available integer min/max constants rather than hard-coded values.\n\nReviewed by Stephen Frost.\nSuggested by Stephen Frost." }, { "commit": "cf889790e60972adcacc6e21fa3853378676889a", "date": "2018-07-10 15:39:03 -0400", "subject": "Error if LibC build is performed outside the test environment.", "body": "LibC is no longer required for production builds." }, { "commit": "b1bc53657d9e683f30bdfcce190da286a383328f", "date": "2018-07-09 08:15:16 -0400", "subject": "Begin v2.05 development." }, { "commit": "a8143ec1253f3d9187c053def0b8c515d4f13fd5", "date": "2018-07-05 20:16:41 -0400", "subject": "v2.04: Critical Bug Fix for Backup Resume" }, { "commit": "6f6dad6dd5fb0f2ba5824b1812e71abf047704a4", "date": "2018-07-05 16:49:46 -0400", "subject": "Remove call to lscpu which can vary widely by build host." }, { "commit": "22adb395db804e03646fc53d84b6e7935c38c46e", "date": "2018-07-05 15:40:50 -0400", "subject": "Add zero-length file to mock/all test." }, { "commit": "db17973cd0a8a5692e408621703fd83fbce40166", "date": "2018-07-03 14:01:57 -0400", "subject": "Fix critical bug in resume that resulted in inconsistent backups.", "body": "A regression in v0.82 removed the timestamp comparison when deciding which files from the aborted backup to keep on resume. All resumed backups should be considered inconsistent. A resumed backup can be identified by checking the log for the message \"aborted backup of same type exists, will be cleaned to remove invalid files and resumed\"." }, { "commit": "3d07e01fe920bef0d4848ddd55560dc13e38ef85", "date": "2018-07-01 20:02:37 -0400", "subject": "Make ls ordering deterministic in mock/all test." }, { "commit": "1bd98b61df7aeaec25b6d6b5baa71f8a458784ee", "date": "2018-07-01 08:17:27 -0400", "subject": "Fix non-compliant ISO-8601 timestamp format in S3 authorization headers.", "body": "AWS and some gateways were tolerant of space rather than zero-padded hours while others were not.\n\nFixed by Andrew Schwartz." }, { "commit": "7e65ddad34db74a14e54aab125f0e62596268f6e", "date": "2018-06-30 14:55:25 -0400", "subject": "PostgreSQL 11 Beta 2 support." }, { "commit": "7b0e65d48823e94a7a17ae377e54a898bb07d7fb", "date": "2018-06-26 17:27:22 -0400", "subject": "Improve the HTTP client to set content-length to 0 when not specified by the server.", "body": "S3 (and gateways) always set content-length or transfer-encoding but HTTP 1.1 does not require it and proxies (e.g. HAProxy) may not include either." }, { "commit": "e8c68b9c6657d7fabfd70cbd8ad3778e123bcb41", "date": "2018-06-26 16:56:05 -0400", "subject": "Update parameters for VBoxService start." }, { "commit": "ead70e16bbead338b7ba14b4a03014187bb80c23", "date": "2018-06-23 13:09:56 -0400", "subject": "Add sample S3 policy to restrict bucket privileges.", "body": "Suggested by Douglas J Hunley, Jason O'Donnell." }, { "commit": "aa41e00c9cdbb966a6cda088a21fb16c443163d4", "date": "2018-06-21 11:39:37 -0400", "subject": "Set search_path = 'pg_catalog' on PostgreSQL connections.", "body": "Suggested by Stephen Frost." }, { "commit": "7fee739710b052f41ff881b513ae376acb1e5c2a", "date": "2018-06-20 18:26:53 -0400", "subject": "Remove Debian package patch since it has been committed upstream." }, { "commit": "6084e9be04dd958f8ab8906c1af8e3ed1fca4994", "date": "2018-06-16 13:07:01 -0400", "subject": "Fix default location of pgbackrest.conf in option reference." }, { "commit": "1a0d56860059e7f9998e1faf5d384017ca1511ee", "date": "2018-06-14 19:05:35 -0400", "subject": "Preliminary documentation for PostgreSQL 11 unprivileged user backup." }, { "commit": "3793ae1e4f0a4deeb156fa3d0ace4ddab0b85804", "date": "2018-06-14 17:59:10 -0400", "subject": "Convert the not very portable uint type to unsigned int.", "body": "Suggested by Devrim Gündüz." }, { "commit": "4e7692b74d229538fdde123a6020258a9ff5f8f3", "date": "2018-06-14 17:44:44 -0400", "subject": "Fix error in selective restore when only one user database exists in the cluster.", "body": "Fixed by Cynthia Shang.\nReported by Nj Baliyan." }, { "commit": "fbd1da05230bb4790f143443dd515453fada0bba", "date": "2018-06-13 13:43:17 -0400", "subject": "Create a new section to describe building pgBackRest and build on a separate host." }, { "commit": "d55e609959547750116be2954f956e7e918013b5", "date": "2018-06-12 13:43:15 -0400", "subject": "Use a prebuilt s3 server container for documentation and tests." }, { "commit": "350b30fa4977e23b205e05b787d707eaceb5a67f", "date": "2018-06-11 14:52:26 -0400", "subject": "Move cryptographic hash functions to C using OpenSSL." }, { "commit": "064ec757e9da187ff4a6dad481dc32775454dee3", "date": "2018-06-11 10:53:16 -0400", "subject": "Rename cipher module to the more general crypto." }, { "commit": "835396751f220be3f8e46f344d4eadfd7b7305b3", "date": "2018-06-10 14:13:56 -0400", "subject": "Document generator improvements.", "body": "* Build containers from scratch for more accurate testing.\n* Allow environment load to be skipped.\n* Allow bash wrapping to be skipped.\n* Allow forcing a command to run as a user without sudo." }, { "commit": "5c0099781d170409a0121355fb8b4917ca06ac0a", "date": "2018-06-06 22:19:01 -0400", "subject": "Update Debian package to add debug symbols to pgBackRest executable." }, { "commit": "a385cb520b02c8e216bde78de51e57c216534778", "date": "2018-06-06 15:52:28 -0400", "subject": "Update primary test environment (Vagrant and Docker) to Ubuntu 18.04." }, { "commit": "d309a85b51d732cb983ea781b69a9a1d2d4a1831", "date": "2018-06-05 08:59:17 -0400", "subject": "PostgreSQL 11 Beta 1 support." }, { "commit": "e57840d739e12aec86fb4772044e0d722f1d9dd6", "date": "2018-05-25 13:42:09 -0400", "subject": "Document generator improvements.", "body": "* Allow parameters to be passed when a container is created.\n* Allow /etc/hosts update to be skipped (for containers without bash)." }, { "commit": "40093f160cf891c9bb522f4da1f0414aeacbc3e5", "date": "2018-05-24 14:01:24 -0400", "subject": "Improve efficiency of C library builds now that they are used only for testing." }, { "commit": "915b09635a5300f1cb45506c5237c3b883b5a85a", "date": "2018-05-24 11:00:47 -0400", "subject": "Remove RHEL package patch since it has been committed upstream." }, { "commit": "8eb9921c7ca3d3aaacf1894756be02cbe7d17e18", "date": "2018-05-23 14:57:08 -0400", "subject": "Auto-generate Makefile with dependencies." }, { "commit": "2f6017511fda3c6aeb67c3daafcc6c1dc35b2dd4", "date": "2018-05-23 09:45:08 -0400", "subject": "Split log levels into separate header file.", "body": "Many modules that use debug.h do not need to do logging so this reduces dependencies for those modules." }, { "commit": "dfa92b359deddb37b10db5e1bac47750d8d1011c", "date": "2018-05-23 09:10:14 -0400", "subject": "Begin v2.04 development." }, { "commit": "f7123c1bbf239814b33ddc97e53b472cf0e69d16", "date": "2018-05-22 19:53:25 -0400", "subject": "v2.03: Single Executable to Deploy" }, { "commit": "4c7408ea52af7f8faec5244c65a55440643616eb", "date": "2018-05-22 12:53:08 -0400", "subject": "Embed exported C functions and Perl modules directly into the pgBackRest executable." }, { "commit": "ada5c5c0d96e63f9f13009b6b0818457b49c6591", "date": "2018-05-21 10:46:45 -0400", "subject": "Fix archive write lock being taken for the synchronous archive-get command.", "body": "Reported by Uspen." }, { "commit": "e69d5fbf624bbab45dcc820798284244fecd18c3", "date": "2018-05-21 08:06:31 -0400", "subject": "Fix potential buffer overrun in error message handling.", "body": "Reported by Lætitia." }, { "commit": "72a9684d4e9dc15f7252b259dafb35a310fe2cd6", "date": "2018-05-18 12:03:39 -0400", "subject": "Print total runtime in milliseconds at command end." }, { "commit": "52bc07323407668f49282d011b710f85fc9b11b6", "date": "2018-05-18 11:57:32 -0400", "subject": "Add stack trace macros to all functions.", "body": "Low-level functions only include stack trace in test builds while higher-level functions ship with stack trace built-in. Stack traces include all parameters passed to the function but production builds only create the parameter list when the log level is set high enough, i.e. debug or trace depending on the function." }, { "commit": "abb9651f4c58446bbcf3f2013d075157a20beed5", "date": "2018-05-18 06:45:14 -0400", "subject": "Test harness improvements.", "body": "* Allow more than one test to provide coverage for the same module.\n* Add option to disable valgrind.\n* Add option to disabled coverage.\n* Add option to disable debug build.\n* Add option to disable compiler optimization.\n* Add --dev-test mode." }, { "commit": "bce3d0fe1c96c0204fffd38145e4ddd56362a837", "date": "2018-05-17 17:09:06 -0400", "subject": "Build libc using links rather than referencing the C files in src directly.", "body": "The C library builds with different options which should not be reused for the C binary or vice versa." }, { "commit": "91be372e6ac1601249df05e334ee93ba5540633c", "date": "2018-05-11 11:24:38 -0400", "subject": "Set log-timestamp=n for integration tests.", "body": "This means less filtering of logs needs to be done and new timestamps can be added without adding new filters." }, { "commit": "a1be8e16cdfd364591c3a7104b1cc30084b13a08", "date": "2018-05-11 10:39:36 -0400", "subject": "Update SSL error message test on CentOS 7." }, { "commit": "4b4af1cbfc0859a3db2981229e864853a38722bb", "date": "2018-05-09 11:14:35 -0400", "subject": "Use time_t instead of __time_t for better portability.", "body": "Suggested by Nick Floersch." }, { "commit": "a9069f3fd3236d020c589265117817d3fddc6a5d", "date": "2018-05-09 10:50:05 -0400", "subject": "Begin v2.03 development." }, { "commit": "ee8aafb3cadd77682c97bcc74adb457e0723ebee", "date": "2018-05-06 19:53:42 -0400", "subject": "v2.02: Parallel Asynchronous Archive Get and Configuration Includes" }, { "commit": "4d6a51ac47e168811531cb4d388f0dde2b89cbcd", "date": "2018-05-06 08:56:42 -0400", "subject": "Add HARNESS_FORK for tests that require fork().", "body": "A standard pattern for tests makes fork() easier to use and should help prevent some common mistakes." }, { "commit": "790f7c73128a4b3f0f98600aa7475d88f774fd1b", "date": "2018-05-05 11:50:11 -0400", "subject": "Enforce full branch coverage in C code." }, { "commit": "0a860e0b6049bd6922a1583ede6748b46cfb9d23", "date": "2018-05-05 09:38:09 -0400", "subject": "Full branch coverage for command/help/help, common/error, common/ini, and common/log modules." }, { "commit": "90aadc6534be12e8a49d4da5ff231a1f439e378c", "date": "2018-05-04 12:49:25 -0400", "subject": "Full branch coverage for config module." }, { "commit": "6c3b40152fa88e101564867ed55338bb63eff626", "date": "2018-05-04 09:21:32 -0400", "subject": "Improve module branch coverage.", "body": "Add full branch coverage for cipher/block, command/command, common/wait, and postgres/pageChecksum modules." }, { "commit": "c3a8fbe706ed31e2414fa454d6090d0346f34f4a", "date": "2018-05-03 11:24:29 -0400", "subject": "Add _FMT variants for all THROW macros so format types are checked by the compiler." }, { "commit": "6a40c916d4307c2de79de250ed444237d47e6b7a", "date": "2018-05-02 14:06:40 -0400", "subject": "Add repo-s3-token option to allow temporary credentials tokens to be configured.", "body": "pgBackRest currently has no way to request new credentials so the entire command (e.g. backup, restore) must complete before the credentials expire." }, { "commit": "5e090ba30501b76717dcb034420aba06847955f2", "date": "2018-05-02 12:19:54 -0400", "subject": "Fix failure in manifest build when two or more files in PGDATA are linked to the same directory.", "body": "Reported by Vitaliy Kukharik." }, { "commit": "6a01db2b3297fc103577b8bd25da011f09fc8a17", "date": "2018-05-02 12:06:12 -0400", "subject": "Fix delta restore failing when a linked file is missing." }, { "commit": "9d9fad88a25b0f4bafcae1f2e9b1cf81d00b8d9e", "date": "2018-05-02 07:31:44 -0400", "subject": "Add example of command section usage to archiving configuration.", "body": "Suggested by Christophe Courtois." }, { "commit": "fd1984239e5d60293b86419d77bcb1c990dbbc7e", "date": "2018-05-01 14:07:08 -0400", "subject": "Fix rendering of key/value and list options in help.", "body": "Reported by Clinton Adams." }, { "commit": "1a1ed8d6b9973e069325b1dee7b54c9bbc2740d1", "date": "2018-05-01 13:20:48 -0400", "subject": "Update help test to use restore command to provide better coverage." }, { "commit": "8dbbf2de929813d5ed2068c13b8cc5b3c3cfafc2", "date": "2018-05-01 12:37:06 -0400", "subject": "Fix archive-copy throwing \"path not found\" error for incr/diff backups.", "body": "Reported by yummyliu, Vitaliy Kukharik." }, { "commit": "71ba08f579be228a8975c0a59bd485e5c11bebe5", "date": "2018-05-01 11:05:37 -0400", "subject": "Make backup/restore path sync more efficient.", "body": "Remove recursive path sync functionality since it is no longer used." }, { "commit": "54dd6f3ed4fcfeabe0254fdb9d88f560efd5f8ca", "date": "2018-04-30 17:27:39 -0400", "subject": "Add asynchronous, parallel archive-get.", "body": "This feature maintains a queue of WAL segments to help reduce latency when PostgreSQL requests a WAL segment with restore_command." }, { "commit": "c48b0a2a1e40764a33b42485a7edf21a544b0db1", "date": "2018-04-30 08:13:56 -0400", "subject": "Update docs with 32-bit support and caveats.", "body": "32-bit support was added in v1.26." }, { "commit": "321a28f6b0c6c522b8b8120e9fccfec09de4c6f4", "date": "2018-04-29 11:47:50 -0400", "subject": "Add walSegmentNext() and walSegmentRange()." }, { "commit": "be02c6750376e9a0312b7c707c5c96025eb1cfa6", "date": "2018-04-29 11:20:51 -0400", "subject": "Add pgControlInfo() to read pg_control and determine the PostgreSQL version." }, { "commit": "8c6e2bdbc7ac2b0e887d9d30931a532141974821", "date": "2018-04-29 11:02:21 -0400", "subject": "Add storageInfo() and track size in read objects." }, { "commit": "d74c167420b1c2eba74b29cf13b87f1143951b19", "date": "2018-04-29 10:41:05 -0400", "subject": "Add bufNewC() and only reallocate buffer when the size has changed." }, { "commit": "d44848baa0cc6583208d1d5ddb2db8cf69b866f3", "date": "2018-04-29 10:32:46 -0400", "subject": "Add strLstExists(), strLstExistsZ(), strSub(), and strSubN() to String and StringList objects." }, { "commit": "89d3476e325a94cb75457354e26b1ab4f5bcc8b0", "date": "2018-04-29 10:16:59 -0400", "subject": "Refactor archive common functions in preparation for parallel async archive-get." }, { "commit": "721432f6ae55c2a06d645629703c5103f8d89190", "date": "2018-04-25 15:46:05 -0400", "subject": "Update the archive-push-queue-max, manifest-save-threshold, and buffer-size options to accept values in KB, MB, GB, TB, or PB where the multiplier is a power of 1024.", "body": "Contributed by Cynthia Shang." }, { "commit": "8eabc52f3b5872c898cc14b2691a01a2559ad6bd", "date": "2018-04-25 15:16:42 -0400", "subject": "Add strUpper, strLower, strChr, and strTrunc to String object.", "body": "Contributed by Cynthia Shang." }, { "commit": "88a633da17d53261e0131e2d77209f22403112d6", "date": "2018-04-24 09:12:25 -0400", "subject": "Divide tests into three types (unit, integration, performance).", "body": "Many options that were set per test can instead be inferred from the types, i.e. container, c, expect, and individual.\n\nAlso finish renaming Perl unit tests with the -perl suffix." }, { "commit": "bb8c315cadc6329a03cd975a6c865b1ce29d751c", "date": "2018-04-23 17:26:27 -0400", "subject": "Storage object improvements.", "body": "* Add storageCopy(), storageMove(), and storagePathSync().\n* Separate StorageFile object into separate read and write objects.\n* Abstract out Posix file read/write objects." }, { "commit": "02cc8ccbd45221ef03f30cd6b068fc7675011592", "date": "2018-04-23 10:24:04 -0400", "subject": "Add THROWP_* macro variants for error handling.", "body": "These macros allow an ErrorType pointer to be passed and are required for functions that may return different errors based on a parameter." }, { "commit": "18882cb8822ab8af04ff57853c2bc35145cb7b65", "date": "2018-04-23 10:19:45 -0400", "subject": "Add bufEq and bufCat to Buffer object." }, { "commit": "f146502eae44d7366d79f3d73f695209d3189040", "date": "2018-04-23 10:10:55 -0400", "subject": "Add TEST_ERROR_FMT macro to simplify testing of formatted error messages." }, { "commit": "27aa5f756e32e8e1713588695b86451fde2e5b02", "date": "2018-04-19 11:09:39 -0400", "subject": "Add support for additional pgBackRest configuration files.", "body": "Configuration files are loaded from the directory specified by the --config-include-path option.\n\nAdd --config-path option for overriding the default base path of the --config and --config-include-path option." }, { "commit": "79b7552940971ab73cc63676655c6614fd535e21", "date": "2018-04-18 19:37:35 -0400", "subject": "Rename archive-queue-max option to archive-push-queue-max.", "body": "This avoids confusion with the archive-get-queue-max option. The old option name will continue to be accepted." }, { "commit": "ab26c765d454cd8f757ccc7ada593746dbddae0d", "date": "2018-04-18 18:57:45 -0400", "subject": "Don't copy CFGDEF_NAME_ALT or CFGDEF_INHERIT when processing config option inheritance." }, { "commit": "ea4046a607cddef588b5eb061f1df1e602a497bf", "date": "2018-04-18 18:47:43 -0400", "subject": "Try tweaking time sync settings to prevent clock drift rather than restarting VBoxService on every test run." }, { "commit": "b3e668421b03b2869c0dac1be6f22a9faf753341", "date": "2018-04-17 20:25:42 -0400", "subject": "Fix document update missed in e9790fd3." }, { "commit": "0381945caa198f833adde7806af2368c2627678a", "date": "2018-04-17 18:47:14 -0400", "subject": "Show command parameters as well as command options in initial info log message." }, { "commit": "e9790fd3b13f87a7f4726471019ead36d5b7b08d", "date": "2018-04-17 17:38:25 -0400", "subject": "Update out-of-date description for the spool-path option." }, { "commit": "cf0ec44ededb357c4fe2783814a2575119a4c498", "date": "2018-04-17 12:03:03 -0400", "subject": "Rename Perl tests so they don't conflict with their C counterparts." }, { "commit": "dce11ce3cf0473b127e56c21436dd4c4159d8646", "date": "2018-04-16 15:52:17 -0400", "subject": "Generate code counts for all source files.", "body": "The source files are also classified by type and purpose." }, { "commit": "3e229774840f82e4488d0077b07ae80971f7c385", "date": "2018-04-16 15:25:50 -0400", "subject": "Use pip 9.03 in test VMs.", "body": "pip 10 drops support for Python 2.6 which is still used by the older test VMs." }, { "commit": "2a4ff2f904b411f623239f02f54cdb2622017298", "date": "2018-04-13 16:05:52 -0400", "subject": "Split cfgLoad() into multiple functions to make testing easier.", "body": "Mainly this helps with unit tests that need to do log expect testing. Add harnessCfgLoad() test function, which allows a new config to be loaded for unit testing without resetting log functions, opening a log file, or taking locks." }, { "commit": "49fc737cd0fc053339f26b4e3b01d2b598124bb4", "date": "2018-04-13 14:31:33 -0400", "subject": "Add monitoring examples using PostgreSQL and jq.", "body": "Suggested by Stephen Frost, Brian Faherty." }, { "commit": "d924f3d50a1be296a65096b0b1014ade14c2dd59", "date": "2018-04-13 12:00:22 -0400", "subject": "Add logic to find the real oid of the test1 database during restore testing." }, { "commit": "f0250dab4b7fba2eda57fc0a483352f7cd70d0ab", "date": "2018-04-12 20:42:26 -0400", "subject": "Move async forking and more error handling to C.", "body": "The Perl process was exiting directly when called but that interfered with proper locking for the forked async process. Now Perl returns results to the C process which handles all errors, including signals." }, { "commit": "6fd0c3dcaa68e168b05364c699f6c1a6f87f1de0", "date": "2018-04-11 09:36:12 -0400", "subject": "Improved lock implementation written in C.", "body": "Now only two types of locks can be taken: archive and backup. Most commands use one or the other but the stanza-* commands acquire both locks. This provides better protection than the old command-based locking scheme." }, { "commit": "4744eb93878da6b7aa2173be16928b081c865b1d", "date": "2018-04-11 08:21:09 -0400", "subject": "Add storagePathRemove() and use it in the Perl Posix driver.", "body": "This implementation should be faster because it does not stat each file. It simply assumes that most directory entries are files so attempts an unlink() first. If the entry is reported by error codes to be a directory then it attempts an rmdir()." }, { "commit": "c9ce20d41a0c6edc3087511eaff5e0a80e95c8da", "date": "2018-04-09 16:46:36 -0400", "subject": "Skip version checks when testing in --dev mode." }, { "commit": "3bcf637aeeebfeb135e693fb0191dbb2c70f9420", "date": "2018-04-08 12:57:02 -0400", "subject": "Move archive-stop and expire tests to the mock module.", "body": "These are mock integration tests so they should be grouped with the other mock integration tests." }, { "commit": "3b661f4ad550cfce993afc5d767ed7f2ac4cea81", "date": "2018-04-08 12:16:32 -0400", "subject": "Move help/version integration tests to mock/all.", "body": "Help and version are covered by unit tests, so we really just to need to make sure there is output when called from the command line." }, { "commit": "741acfd7799b7b1b2afe850ccf078cf84a421353", "date": "2018-04-08 10:19:24 -0400", "subject": "Move test definitions to test/define.yaml.", "body": "The location is better because it is no longer buried in the Perl test libs. Also, the data can be easily accessed from C." }, { "commit": "b77b4250964ca47ac622c83ae72bfc9d453ea5d7", "date": "2018-04-07 19:44:00 -0400", "subject": "Allow -DDEBUG_UNIT to be suppressed to test how debug macros behave." }, { "commit": "82751b3b511e9a55724d3836b2454df8c97d8a25", "date": "2018-04-07 13:12:35 -0400", "subject": "Split debug and assert code into separate headers.", "body": "Assert can be used earlier because it only depends on the error-handler and not logging." }, { "commit": "e00f2dd4ad574c7680bce2126df4d320c9c8d6ac", "date": "2018-04-06 21:46:45 -0400", "subject": "More C type cleanup.", "body": "* Remove typec.h entirely.\n* Order all typdefs above local includes." }, { "commit": "f3b56cf8f328dc68dc4c978f0d82d3f5efbbe939", "date": "2018-04-06 17:04:52 -0400", "subject": "Allow MemContext objects to be copied to a new parent.", "body": "This makes it easier to create objects and then copy them to another context when they are complete without having to worry about freeing them on error. Update List, StringList, and Buffer to allow moves. Update Ini and Storage to take advantage of moves." }, { "commit": "b9f636cab470165ff0d69baa54efa5f8b2a79d43", "date": "2018-04-05 22:38:11 -0400", "subject": "Cleanup C types.", "body": "* Remove pgBackRest defined types included with the C types.\n* Remove redefinition of standard C types." }, { "commit": "bd25248df02d4a21315e73c1a4dc28fe8458fe97", "date": "2018-04-05 14:48:16 -0400", "subject": "Abstract Posix storage driver code into a separate module." }, { "commit": "348278bb68ea4cebc3140404729f12fc63d6071d", "date": "2018-04-03 21:30:15 -0400", "subject": "Make backup directory sync more efficient.", "body": "Scanning the entire backup directory can be very expensive if there are a lot of small tables. The backup manifest contains the backup directory list so use it to perform syncs instead of scanning the backup directory." }, { "commit": "0dce8ba2fa096faafa3871517458bfe6d742350f", "date": "2018-04-03 20:54:18 -0400", "subject": "Make backup.history sync more efficient.", "body": "Only the backup.history/[year] directory was being synced, so check if the backup.history is newly created and sync it as well." }, { "commit": "58902722477518d7daa202241772bf499ea136a3", "date": "2018-04-03 18:12:03 -0400", "subject": "Fix directory syncs running recursively when only the specified directory should be synced.", "body": "Reported by Craig A. James." }, { "commit": "46b6be6d7269ae35ff633736c4c5ddcde313d0d2", "date": "2018-04-03 13:35:56 -0400", "subject": "Fix header exclusion defines that do not match the general pattern." }, { "commit": "93fdb98d1500ca72a1d3355ed0c7ff23e27e074c", "date": "2018-04-03 12:25:21 -0400", "subject": "Storage object improvements.", "body": "* Convert all functions to variadic functions.\n* Enforce read-only storage.\n* Add storageLocalWrite() helper function. Add storageExists(), storagePathCreate(), storageRemove(), and storageStat().\n* Add StorageFile object and storageOpenRead()/storageOpenWrite()." }, { "commit": "90f980fe91b8dff96523a8089613b31b4485b923", "date": "2018-03-30 21:33:30 -0400", "subject": "Remove documentation describing info --output=json as experimental." }, { "commit": "635caff573315d5fe0dd267f968a4c40c98d524f", "date": "2018-03-30 19:10:34 -0400", "subject": "Add ASSERT() that is preserved in production builds." }, { "commit": "a8721ffe118e0c6ae93f6bc45c6bb79aaf78b440", "date": "2018-03-27 22:48:22 -0400", "subject": "Improve logic for smart builds to include version changes." }, { "commit": "5518a2ac51be91f71bfed0e27eba5e8bb6e465d2", "date": "2018-03-27 20:40:33 -0400", "subject": "Full branch coverage for storage/storage module." }, { "commit": "c1ab7b3c98c0a21b2b1b78ef3e64dfd891f68a11", "date": "2018-03-25 11:39:24 -0400", "subject": "Start work on C handle io object and use it to output help." }, { "commit": "9001b9b9576cb2d852984214e8bdd3b583dc552f", "date": "2018-03-24 14:11:29 -0400", "subject": "Replace THROW_ON_SYS_ERROR() with THROW_SYS_ERROR().", "body": "The former macro was hiding missing branch coverage for critical error handling." }, { "commit": "c7a6e9d2f2b58ca7832c58c3e25c65c1d03079e3", "date": "2018-03-23 16:08:32 -0400", "subject": "Document build improvements.", "body": "* Perform apt-get update to ensure packages are up to date before installing.\n* Add -p to the repository mkdir so it won't fail if the directory already exists, handy for testing packages." }, { "commit": "dabf727d91704dac6bfd59019d112857cbf963f3", "date": "2018-03-21 16:08:08 -0400", "subject": "Include VM type in gcov path to avoid conflicts between VMs with different architectures." }, { "commit": "c6457b070f5bdf26bb9146004e5ba2116b161df7", "date": "2018-03-21 13:46:08 -0400", "subject": "Full branch coverage for config/parse module." }, { "commit": "b234f43c9d8e6abde99947c64e0776e0054091c8", "date": "2018-03-21 09:18:48 -0400", "subject": "Refactor usec to msec in common/time.c.", "body": "The implementation provides usec resolution but this is not needed in practice and it makes the interface more complicated due to the extra zeros." }, { "commit": "31830bdc55bd603e90a13b54b81b919526cf03a5", "date": "2018-03-20 16:08:52 -0400", "subject": "Full branch coverage for all common/type modules." }, { "commit": "a2030da20048845c879c45279e839c9109a92418", "date": "2018-03-20 16:01:38 -0400", "subject": "Specify prefix for lcov output.", "body": "This prevents pages from moving around depending on the subtest." }, { "commit": "f4ed36d128ba7bda602f0c6451325ce377f422b4", "date": "2018-03-20 10:17:53 -0400", "subject": "Add switch() to lcov branch exclusions.", "body": "lcov requires default to show complete coverage but --Wswitch-enum enforces all enum values be present so no default is needed.\n\nAdd documentation for each branch exclusion." }, { "commit": "d34142dee82e41f983517a181f721d6009d70a81", "date": "2018-03-20 09:47:51 -0400", "subject": "Update lcov settings.", "body": "Mark any coverage less that 100% as yellow, less that 90% as red.\n\nAdd comments to config file and make genhtml use it as well as lcov." }, { "commit": "07f38f584a6014e10888fe0f8016febab79ce67b", "date": "2018-03-19 23:33:28 -0400", "subject": "Use lcov for C unit test coverage reporting.", "body": "Switch from Devel::Cover because it would not report on branch coverage for reports converted from gcov.\n\nBranch coverage is not complete, so for the time being errors will only be generated when statement coverage is not complete. Coverage of unit tests is not displayed in the report unless they are incomplete for either statement or branch coverage." }, { "commit": "2a3d6ecde8a86154cfaba067dfcbe459ef2aa8e1", "date": "2018-03-19 21:49:41 -0400", "subject": "v2.01: Minor Bug Fixes and Improvements" }, { "commit": "45c6a0e864189a309ad3e5c0f643b46dd50fb303", "date": "2018-03-19 21:03:42 -0400", "subject": "Remove hard-coded release version from loadTest.c." }, { "commit": "5b0748cf93d49d52bf74290e05c208fc88017a26", "date": "2018-03-19 20:25:55 -0400", "subject": "Always autogenerate code if --smart is not specified." }, { "commit": "f0a4264f77a7d9cb1dc5434e3c76c8313c600c79", "date": "2018-03-19 19:54:03 -0400", "subject": "Fix manifest test in the check command when tablespaces are present.", "body": "Fixed by Cynthia Shang.\nReported by Thomas Flatley." }, { "commit": "8e9e97728c5f58790ba91305f465b04d8a7a061a", "date": "2018-03-19 17:38:44 -0400", "subject": "Remove --smart from --expect tests.", "body": "This ensures that new binaries are built before running the tests." }, { "commit": "2c1687721e57b1917dc3f3bed62aa01b59078f5c", "date": "2018-03-19 13:08:42 -0400", "subject": "Fix issue where specifying log-level-stderr > warn would cause a local/remote process to error on exit due to output found on stderr when none was expected.", "body": "The max value for a local/remote process is now error since there's no reason for these processes to emit warnings." }, { "commit": "0c313713b1f40f09a970bee70e4e1ca3bcbbe082", "date": "2018-03-18 13:32:19 -0400", "subject": "Use clang for static code analysis.", "body": "Nothing found except for some functions that should have been marked __noreturn__." }, { "commit": "f0451c1494d0886c8fc24734eb8f98d403ce91dc", "date": "2018-03-15 13:53:03 -0400", "subject": "Enable -Wformat=2 and -Wformat-nonliteral and silence new warnings." }, { "commit": "8a1ce42c30e7e9ac79b1f7b66aa870d84c7419de", "date": "2018-03-15 12:02:09 -0400", "subject": "Immediately error when a secure option (e.g. repo1-s3-key) is passed on the command line.", "body": "Since pgBackRest would not pass secure options on to sub-processes an obscure error was thrown. The new error is much clearer and provides hints about how to fix the problem.\n\nUpdate command documentation to omit secure options that cannot be specified on the command-line." }, { "commit": "dd3ce7081070aca3a5c915af2a7e642c3ebece4b", "date": "2018-03-15 11:09:46 -0400", "subject": "Config test code writes secure options to a file instead of passing on the command-line." }, { "commit": "4fb75c9cc1c594d462adb31b8146e789ce639fb3", "date": "2018-03-15 11:03:28 -0400", "subject": "Improve conversion of C exceptions to Exception objects.", "body": "Colons in the message would prevent all of the message from being loaded into the Exception object." }, { "commit": "599e291b366e0c0217c81fad44a3f7cdbd800d98", "date": "2018-03-14 14:34:06 -0400", "subject": "Check int size in common/type.h.", "body": "This ensures that integers are at least 32-bits without having to run the test suite." }, { "commit": "e7fd94ee23f7b0b353f926c55086c9163f6f4881", "date": "2018-03-14 11:10:46 -0400", "subject": "Simplify table of contents on command page by only listing commands.", "body": "Suggested by Stephen Frost." }, { "commit": "4b6cd92a4ca8de743ddf3d62e71e548ead06644b", "date": "2018-03-12 17:15:14 -0400", "subject": "Improve debugging.", "body": "* Replace remaining NDEBUG blocks with the more granular DEBUG_UNIT.\n* Remove some debug memset() calls in MemContext since valgrind is more useful for these checks." }, { "commit": "cced6ec03aa212310a940e643cc8f2b484d95a8c", "date": "2018-03-12 14:31:22 -0400", "subject": "Add ASSERT_DEBUG() macro for debugging.", "body": "Replace all current assert() calls except in tests that can't use the debug code." }, { "commit": "dd31ae832d6d5278079d5e84c471b0258f51940b", "date": "2018-03-12 11:25:20 -0400", "subject": "Port most of Config::Config::configLoad() from Perl to C.", "body": "Contributed by Cynthia Shang." }, { "commit": "03f1082e86ac82477f09f212332e9c82946d28ad", "date": "2018-03-12 11:03:38 -0400", "subject": "Improve logging.", "body": "Move command begin to C except when it must be called after another command in Perl (e.g. expire after backup). Command begin logs correctly for complex data types like hash and list. Specify which commands will log to file immediately and set the default log level for log messages that are common to all commands. File logging is initiated from C." }, { "commit": "94494a632f0d217810a0cd0da462529c6c60b032", "date": "2018-03-12 11:02:46 -0400", "subject": "Update pip before installing awscli." }, { "commit": "f047cd0dfd3de01ff4ea678f394af8302e89e7c0", "date": "2018-03-09 23:00:20 -0500", "subject": "Improve code generation performance." }, { "commit": "b987f05f3529654515e5cddee4057fe5f83cfd20", "date": "2018-03-09 21:24:30 -0500", "subject": "Improve bin and libc build performance." }, { "commit": "c32ee346128182b9742417c27b0ae9c5bd768cb8", "date": "2018-03-09 18:28:34 -0500", "subject": "Build with -DNDEBUG by default but disable for testing." }, { "commit": "fbe4c40386d9b8666514703996b5734d2719b652", "date": "2018-03-09 09:30:50 -0500", "subject": "Move logic for setting Perl configuration defaults to C." }, { "commit": "919635b6f42eff1c1de0638626314caf4b0e2f2a", "date": "2018-03-08 16:24:16 -0500", "subject": "Set config before Main::main() call to avoid secrets being exposed in a stack trace." }, { "commit": "34898ce471214e234e14d9532bbb34b8095381cc", "date": "2018-03-08 14:15:05 -0500", "subject": "Error when multiple arguments are set in the config file for an option that does not accept multiple arguments.", "body": "Contributed by Cynthia Shang." }, { "commit": "e331564c9025077a0f3922408a90d5f8f18baed1", "date": "2018-03-08 12:36:55 -0500", "subject": "Add new test for Common::Io::Process.", "body": "Show that output on stderr will raise an exception on close() even if the exit code is 0." }, { "commit": "62a9bdbd4c25b9801bcc6a4892d442f38e6d4da5", "date": "2018-03-08 10:43:09 -0500", "subject": "Fix issue passing --no-config to embedded Perl.", "body": "Reported by Ibrahim Edib Kokdemir." }, { "commit": "5e0ce3e996db90c44eba835093549f9634525f21", "date": "2018-03-06 17:12:16 -0500", "subject": "Fix --target-action and --recovery-option options being reported as invalid when restoring with --type=immediate.", "body": "Reported by Brad Nicholson." }, { "commit": "4c8ed3530c05e2a88a1515a1cdd31ac3871b4bc2", "date": "2018-03-06 14:20:12 -0500", "subject": "Show index in examples for indexed options, i.e. repo-*, pg-*.", "body": "Suggested by Stephen Frost." }, { "commit": "45ffe37e4ff3fd955a10bad93c17f443793855b8", "date": "2018-03-05 18:51:48 -0500", "subject": "Add cfgOptionTest().", "body": "Update cfgOption() calls that are better implemented as cfgOptionTest()." }, { "commit": "a50b1eb5be64c0ea68c468cbe0b793be93136c33", "date": "2018-03-05 10:03:10 -0500", "subject": "Remove references to the C library being optional." }, { "commit": "c07aa2ae1940f2c6cf0f7a2e701b20e2d0c32ff9", "date": "2018-03-02 22:42:02 -0500", "subject": "Improve code documentation in config module." }, { "commit": "406acf9cba16fc93fdcd7d6ee93483ef8ef5d073", "date": "2018-03-02 12:07:12 -0500", "subject": "Enable -Wconversion and silence new warnings." }, { "commit": "6ca6424fb1b32fb43eafc481d179508e958e5e7e", "date": "2018-03-01 16:59:49 -0500", "subject": "Remove extraneous sudo commands from src/Makefile.", "body": "Contributed by Adrian Vondendriesch." }, { "commit": "af805af044317265a786214bed4c506977e934b4", "date": "2018-03-01 16:59:13 -0500", "subject": "Remove Debian package patch now that it has been merged upstream." }, { "commit": "5d1722b8ef7dd86ef717ce0425fb5b55d73f5f1d", "date": "2018-03-01 13:32:51 -0500", "subject": "Disable console display of coverage for C files.", "body": "Devel::Cover does not handle it well." }, { "commit": "57d70a5649c2d4f0500c495d0fb065d1eda06e4b", "date": "2018-03-01 13:31:03 -0500", "subject": "Remove RHEL package patch since upstream has been updated." }, { "commit": "5b491b3035502819a31e1200636c8d2757a78a18", "date": "2018-02-26 19:32:27 -0500", "subject": "Add CentOS/RHEL package builds." }, { "commit": "f9c1a3b156a07ecfd4916fe0386f90022406d721", "date": "2018-02-26 10:43:49 -0500", "subject": "Enable -Wswitch-enum and silence new warnings." }, { "commit": "c8df690931561c4b172d2ea48e68a0597e0a272b", "date": "2018-02-26 10:02:33 -0500", "subject": "Fix incorrect enum types in config.c that throw warnings under clang.", "body": "Found by Douglas J Hunley." }, { "commit": "09223a733dd8a4b9fc3deeec72ee5a168a9c625d", "date": "2018-02-23 23:44:10 -0500", "subject": "Remove github CNAME file." }, { "commit": "1f954b324ae8c2ae43af1da2a97090dde586fb8f", "date": "2018-02-23 23:42:29 -0500", "subject": "Update how versions are displayed in the documentation." }, { "commit": "13cdb75ac56609c6a1d2f7cb3c31c0f0b29ecc3b", "date": "2018-02-23 22:38:45 -0500", "subject": "v2.00: Performance Improvements for Archive Push" }, { "commit": "ed5876810d616a6dc59bddf722f74cccd9b8ddec", "date": "2018-02-23 14:16:20 -0500", "subject": "Fix missing variable replace for PDF code-block title.", "body": "Found by Jason O'Donnell." }, { "commit": "2485fabbadf56aa51f821048e72550ddac026691", "date": "2018-02-22 09:31:53 -0500", "subject": "PDF rendering improvements.", "body": "* Fill is now the default for table columns.\n* Column width is specified as a percentage rather that using latex-specific notation." }, { "commit": "d4418e7764bf6b3d3e8b6d2bc204cfd0e00bca13", "date": "2018-02-21 18:15:40 -0500", "subject": "Rename pg-primary and pg-standby variables to pg1 and pg2.", "body": "It would be better if the hostnames were also pg1 and pg2 to illustrate that primaries and standbys can change hosts, but at this time the configuration ends up being confusing since pg1, pg2, etc. are also used in the option naming. So, for now leave the names as pg-primary and pg-standby to avoid confusion." }, { "commit": "5eb682a569cdc4f33ea053e3619163c98aefcdd1", "date": "2018-02-21 18:10:53 -0500", "subject": "Add id param for hosts created with host-add.", "body": "The host-*-ip variable is created from the id param so the name param can be changed without affecting the host-*-ip variable. If id is not specified then it is copied from name." }, { "commit": "246d4415079550f4f1391c09ad874c2cf4e3fa37", "date": "2018-02-21 15:30:35 -0500", "subject": "More flexible replacements for PDF titles and footers." }, { "commit": "aed578a4bd201d16512b1adb87a327504a0c335c", "date": "2018-02-21 15:26:30 -0500", "subject": "Allow sections to be excluded from table of contents in PDF output." }, { "commit": "64a7196cb64d90fe8801f7be6c4c634ba17bf32a", "date": "2018-02-19 15:07:24 -0500", "subject": "Rename retention-* options to repo-retention-*." }, { "commit": "f75ba7db9426dd05dc868beb00528aae04ea3a4b", "date": "2018-02-19 13:17:58 -0500", "subject": "Update backup host to repository host in the documentation.", "body": "Contributed by Cynthia Shang." }, { "commit": "435240777766afc7effb81cdb5e6cf03fea6e0fa", "date": "2018-02-19 10:12:51 -0500", "subject": "Option rename cleanup based on review.", "body": "* Remove --reset tags from v1 options.\n* Use constants for repo prefix.\n* Specify CFGDEF_INDEX_PG in option structure rather than adding in code.\n* Fix error message references to \"backup host\"." }, { "commit": "f981283b8dea28214072ace05b67acc27989c76f", "date": "2018-02-18 15:45:32 -0500", "subject": "Remove exit() calls from main() to make it cleaner and more testable." }, { "commit": "599e41a2514eda36c1cd7f2a69754a5f94c30dcd", "date": "2018-02-18 14:54:32 -0500", "subject": "Improve S3 delete performance.", "body": "The constant S3_BATCH_MAX had been replaced with a hard-coded value of 2, probably during testing." }, { "commit": "90703257603f04446872b2b39eea26fec2c1b460", "date": "2018-02-18 14:53:27 -0500", "subject": "Improve performance of HTTPS client.", "body": "Buffering now takes the pending bytes on the socket into account (when present) rather than relying entirely on select(). In some instances the final bytes would not be flushed until the connection was closed." }, { "commit": "27678f6188534d1233eeb9424a6fa590c79a5c9d", "date": "2018-02-18 10:44:58 -0500", "subject": "Clean up and document Makefile." }, { "commit": "3eed4bbb4390ecf8d7f2b9ad349a568bfa06a9c8", "date": "2018-02-16 15:09:37 -0500", "subject": "PDF rendering improvements.", "body": "* Check both doc-path and bin-path for logo.\n* Allow PDF to be output to a location other than the output directory.\n* Use PDF-specific version variable for more flexible formatting." }, { "commit": "0e27060952b49254574d017346beb8f834afee4f", "date": "2018-02-16 14:55:48 -0500", "subject": "Add table render for Markdown format.", "body": "Contributed by Cynthia Shang." }, { "commit": "ca52a0485e23da55bd0c15299a52303c6de439bb", "date": "2018-02-16 14:46:02 -0500", "subject": "Allow code blocks to have a type.", "body": "Currently this is only rendered in Markdown." }, { "commit": "2dc0737e95efc858bcc7e4318b3003b3bd57f5ee", "date": "2018-02-16 14:39:42 -0500", "subject": "Improve section source feature to not require a title or content.", "body": "The title will be pulled from the source document." }, { "commit": "1f62237684f78b0d13268f7be59776a9cbd7f5d6", "date": "2018-02-14 19:52:46 -0500", "subject": "Clarify that S3 buckets must be created by the user.", "body": "Suggested by David Youatt." }, { "commit": "72cbb9a9d47ec7a2066fbe12bd75619f9f43e4f7", "date": "2018-02-14 17:19:54 -0500", "subject": "Call Perl with built-in interpreter instead of execvp().", "body": "Exec'ing Perl worked fine but generated a very large command line in the process list and potentially exposed secrets." }, { "commit": "81952c41f4592aec05ecd60f8097f4f1fcb83437", "date": "2018-02-14 17:13:18 -0500", "subject": "Report coverage errors via the console.", "body": "This helps with debugging coverage issues on remote services like Travis." }, { "commit": "5f2884cb296a2c71dd9d6432c2c387efc96ceeef", "date": "2018-02-14 16:46:52 -0500", "subject": "Suppress coverage failures for Archive/Push/Async on Travis.", "body": "The coverage report shows some code as never being run -- but that makes no sense because the tests pass. This may be due to trying to combine the C and Perl coverage reports and overwriting some runs.\n\nSuppress for now with a plan to implement LCOV for the C unit tests." }, { "commit": "a907fd7d2d21f01714427d0c769e3973a99f1a45", "date": "2018-02-14 10:33:21 -0500", "subject": "Build C binary/library for C unit tests that require Perl." }, { "commit": "fda62dfc485d435b4996137844f029464e87222c", "date": "2018-02-14 09:49:01 -0500", "subject": "Move Perl option JSON generation to a new module.", "body": "Linking exec.c into LibC will not be an option once the perl exec loads the Perl interpreter." }, { "commit": "68a83ea2dcdc168aedefc856acc2c261889613fa", "date": "2018-02-14 09:21:55 -0500", "subject": "Add missing const to strLstAdd()." }, { "commit": "5242e8eec59b0cb91437fad95289dcc8b5dc61a7", "date": "2018-02-14 09:18:27 -0500", "subject": "Generate suppressions when running Valgrind.", "body": "This makes it easier to suppress errors that are only occurring on Travis." }, { "commit": "00e9aca872745d2552aa1b562c0dc034fe867356", "date": "2018-02-13 15:58:14 -0500", "subject": "Fixed issue where --reset-* was not passing the default value to Perl.", "body": "Contributed by Cynthia Shang." }, { "commit": "213724907b5eb3acd5af158601d74913f30af67f", "date": "2018-02-09 22:27:21 -0500", "subject": "Add contributor." }, { "commit": "a3b80768bdaf627a2fa71c561ebc8c1962196580", "date": "2018-02-09 15:56:22 -0500", "subject": "Merge 1.28 release notes." }, { "commit": "ea296372d4c920bdcfde85e138719f20d881f16c", "date": "2018-02-09 15:42:11 -0500", "subject": "Add allow range to int/float options that did not already have one." }, { "commit": "7c58fe7451666778b71d3b934d35dc1550a36387", "date": "2018-02-09 13:54:33 -0500", "subject": "Use 64-bit integers for config options.", "body": "In particular, archive-queue-max requires a greater range than is provided by a 32-bit integer." }, { "commit": "305a3e176185edaedec68be5824c950121297213", "date": "2018-02-09 13:52:02 -0500", "subject": "Add int64 variant type." }, { "commit": "1659598cfe957f06e74f1584591337674cb19e81", "date": "2018-02-08 16:11:47 -0500", "subject": "Create a master list of errors in build/error.yaml.", "body": "The C and Perl errors lists are created automatically by Build.pm so they stay up to date." }, { "commit": "eba31fbfe5e58c66b776c2c09a6a53a533819c20", "date": "2018-02-08 14:49:35 -0500", "subject": "Update URL for Debian package repository." }, { "commit": "7d13087c4b0bf2f5e3ca08065edc04a83c37f1b4", "date": "2018-02-06 11:26:06 -0500", "subject": "Rename -no to -reset for non-boolean options." }, { "commit": "808b6000eb4434a66d1073d8b903b1236a082445", "date": "2018-02-05 15:48:26 -0500", "subject": "Fix some bugs in C config code:", "body": "1) Error when the same option is defined multiple times in a section using alternate names.\n2) Fix logging of invalid command error.\n3) Warn when a stanza-only option is in a global section.\n\nAlso, make a note to add validation of section names to the check command.\n\nPer review by Cynthia Shang." }, { "commit": "d35757c05f1b4b30c57997c6221d888660a4ee52", "date": "2018-02-05 15:19:28 -0500", "subject": "Fix missing log-level-stderr option for stanza-* commands." }, { "commit": "2074e6fbf9a4c0b7b5a8759e9dd9be2a9bd46b41", "date": "2018-02-05 12:41:42 -0500", "subject": "Move log option update to after fork() in archive-push.", "body": "The log-level-console option should not be changed in the parent process. Even though it is harmless at the moment, that may not always be true.\n\nPer review by Cynthia Shang." }, { "commit": "c3f47bf240cc2eaf4c6fa441c0c2d95979477379", "date": "2018-02-05 12:32:30 -0500", "subject": "Move config parsing out of Perl tests.", "body": "cfgParseTest() is provided in the C library for parsing configs in unit tests." }, { "commit": "db21b7a360fdc3aea4a22480c634b8d6f2ee52eb", "date": "2018-02-05 11:50:09 -0500", "subject": "Cleanup usage of internal options.", "body": "Apply internal to options that need to be read to determine locality but should not appear in the help." }, { "commit": "be900281003f67c549630186482242cc40f0685b", "date": "2018-02-03 18:27:38 -0500", "subject": "Rename db-* options to pg-* and backup-* options to repo-* to improve consistency.", "body": "* repo-* options are now indexed although only one is allowed.\n* List deprecated option names in documentation and command-line help." }, { "commit": "dc73abdb6e9612f7af8e38408639be53daba0575", "date": "2018-02-01 14:12:03 -0500", "subject": "Improve stanza-create command so that it does not error when the stanza already exists.", "body": "Contributed by Cynthia Shang." }, { "commit": "298b33988c34ac5777c8174435e20a863dd6f730", "date": "2018-01-31 18:22:25 -0500", "subject": "Fix non-compliant formatting for function declarations.", "body": "Per review by Cynthia Shang." }, { "commit": "b4d434b41c8302e48cf2f2dcec8a465378507b73", "date": "2018-01-31 17:34:27 -0500", "subject": "Update stanza-create --force documentation to urge caution when using.", "body": "Suggested by Jason O'Donnell." }, { "commit": "bacc08792dae400de652ce2f769aeeda73f0ef8e", "date": "2018-01-30 16:49:47 -0500", "subject": "Ensure latest db-id is selected on when matching archive.info to backup.info.", "body": "This provides correct matching in the event there are system-id and db-version duplicates (e.g. after reverting a pg_upgrade).\n\nFixed by Cynthia Shang.\nReported by Adam K. Sumner." }, { "commit": "00f58ec8c0349e6941ae6fd0957f2c1196ce0cad", "date": "2018-01-30 16:13:54 -0500", "subject": "Fixed inability to restore a single database contained in a tablespace using --db-include.", "body": "Fixed by Cynthia Shang." }, { "commit": "a91a648019bc8871c9e74868c59a933d74c3dc5c", "date": "2018-01-28 21:37:09 -0500", "subject": "Config parsing no longer implemented in Perl.", "body": "Options are passed to Perl as JSON from the C process." }, { "commit": "f0ef1dee05266f7be1acd8943a3bcda11f0d2e59", "date": "2018-01-26 16:41:17 -0500", "subject": "Improve speed of C unit tests.", "body": "Preserve object files between tests and use a Makefile to avoid rebuilding object files." }, { "commit": "b58a45e0676f9bc5b7e2e136cd338db572a6a604", "date": "2018-01-23 13:34:24 -0500", "subject": "Implement help command in C." }, { "commit": "404ec30d039866a83d7c0707aaab838ccffe433f", "date": "2018-01-23 12:58:35 -0500", "subject": "Move Perl help test to real module." }, { "commit": "3dd882a79eb26b443f74aa8c34328add10baf976", "date": "2018-01-23 12:49:04 -0500", "subject": "Add internal flag to config definition." }, { "commit": "41bd5e8148b307e8285fa855dc715b889d5a0617", "date": "2018-01-23 12:40:02 -0500", "subject": "Improve KeyValue object.", "body": "Add kvGetList() to get a value as a list (of 1) even if it is a scalar." }, { "commit": "2afb73da1cac6447c01a042fe7105e9910f3b20e", "date": "2018-01-23 12:17:30 -0500", "subject": "Improve String, StringList, and List objects.", "body": "* Add strCmp*() and strFirst*() to String.\n* Add strLstSort() and strLstNewSplitSize() to StringList.\n* Add strLstNewSplitZ() to StringList a update calls to strLstNewSplit() as needed.\n* Add lstSort to List." }, { "commit": "47c048b42a0cbf45d97da701521b8ddaeccfd2cf", "date": "2018-01-18 08:56:03 -0500", "subject": "Update LICENSE.txt for 2018." }, { "commit": "2cc9b2287bf4bf7bc0a4b98f274bb737e0d5e961", "date": "2018-01-17 15:52:00 -0500", "subject": "The archive-push command is now partially coded in C.", "body": "This allows the PostgreSQL archive_command to run significantly faster when processing status messages from the asynchronous archive process." }, { "commit": "a4c058d070dfc6f6098fad051a14893ef449eae6", "date": "2018-01-17 15:03:55 -0500", "subject": "Add 30 second wait loop to lockAcquire() when fail on no lock enabled.", "body": "This should help prevent processes that are shutting down from interfering with processes that are starting up." }, { "commit": "1f39a34abc65c43a0635403b246168acdef4dbbe", "date": "2018-01-17 10:31:21 -0500", "subject": "Move lock release later in exitSafe().", "body": "This reduce the chance of a new process starting and acquiring a lock before the old process has exited." }, { "commit": "7c73f4f6c981e8a2806bbca3c035d7ba1e6c7713", "date": "2018-01-17 09:15:51 -0500", "subject": "Add command and exit modules." }, { "commit": "39cb971afb79b1368b9f1dd9185ad49fbb0de9c5", "date": "2018-01-16 13:52:20 -0500", "subject": "Add log module." }, { "commit": "eb452c8addb345c02246b8c97e088cca6c66c6d1", "date": "2018-01-16 13:38:37 -0500", "subject": "Improvements to Storage object.", "body": "* storagePath() and storageList() commands\n* Helper functions for local and spool storag" }, { "commit": "8f81620b9f5a8de4f2d2ebb0a5ecc2fe49d26435", "date": "2018-01-16 13:29:27 -0500", "subject": "Improve error module.", "body": "Add functions to convert error codes to C errors and handle system errors." }, { "commit": "bffc6c49b31a98fc5a6ae68b80db0251da6e9441", "date": "2018-01-16 13:23:08 -0500", "subject": "Add perl-bin option to specify the Perl binary location when /usr/bin/env perl won't work." }, { "commit": "d633417e5db447e3689097c1d31ad1356eb94745", "date": "2018-01-16 13:05:00 -0500", "subject": "Add Wait object and time module." }, { "commit": "721d1127a03b9fbd3fab04554c92f949954cf514", "date": "2018-01-16 12:57:23 -0500", "subject": "Add RegExp object." }, { "commit": "05c731692b93d171ffdd0e0e297c2274998bfc16", "date": "2018-01-16 12:54:06 -0500", "subject": "Add varStrForce() to Variant object." }, { "commit": "83ddd75d824fca293d88bb53f7349cf637926458", "date": "2018-01-16 12:47:08 -0500", "subject": "Improvements to String object.", "body": "* Add strBeginsWith(), strEndsWith(), strEq(), and strBase().\n* Enable compiler type checking for strNewFmt() and strCatFmt().\n* Rename strNewSzN() to strNewN()." }, { "commit": "d992851456f4aef9a0218be0411f1d6815fb9be0", "date": "2018-01-16 12:36:22 -0500", "subject": "Rename Perl tests so they don't conflict with their C counterparts." }, { "commit": "0e9ba98a50159fc1f26792f9032603fae0aed24c", "date": "2018-01-03 12:23:33 -0500", "subject": "Add stanza-delete command to cleanup unused stanzas.", "body": "Contributed by Cynthia Shang." }, { "commit": "526acca5bd7d86a7d8b34a1eb37ec3e49e042073", "date": "2017-12-22 23:27:49 -0500", "subject": "Config parsing implemented in C." }, { "commit": "d8c575801daf6d17e6cbf2daeb2d265c75199032", "date": "2017-12-22 22:55:17 -0500", "subject": "Add Ini object." }, { "commit": "69488ca8ff11f8256b89828e97f62c8b7039bd4f", "date": "2017-12-22 22:36:01 -0500", "subject": "Add Storage object." }, { "commit": "b2a64b1f43be7045ba904b156225496bc6dd405e", "date": "2017-12-22 22:05:37 -0500", "subject": "Add KeyValue object." }, { "commit": "2add6cef95beba05e9c2539d8831273a5b675163", "date": "2017-12-22 21:50:27 -0500", "subject": "Add Variant and VariantList objects." }, { "commit": "c4b30af64598579f87b0556d974264a9248e5e82", "date": "2017-12-22 19:56:01 -0500", "subject": "Add Buffer object." }, { "commit": "f89b027decd35c87ee9b531db1a2d0bf5c671802", "date": "2017-12-22 19:30:15 -0500", "subject": "Improve String and StringList modules." }, { "commit": "5667932063454d0a8851aa1f43b07933307de655", "date": "2017-12-22 18:54:39 -0500", "subject": "Improve MemContext module.", "body": "Add temporary context blocks and refactor allocation arrays to include allocation size." }, { "commit": "5ea1263d8e4541405722a0064a133f71be8fedaf", "date": "2017-12-22 18:36:36 -0500", "subject": "Run valgrind on all C unit tests.", "body": "Also refactor code to make valgrind happy." }, { "commit": "b00c6d86b3020bb2babdd6d1c77c7ffd61594862", "date": "2017-12-19 20:27:31 -0500", "subject": "Merge 1.27 release notes." }, { "commit": "70e38a2bd6cad0697128a637f471ec39f1d50c1b", "date": "2017-12-19 19:14:16 -0500", "subject": "Deploy historical documentation to prior rather than the root directory." }, { "commit": "9fe265d24c55caa4cc7f67cc65e3ee36cf35bd7d", "date": "2017-12-19 17:03:17 -0500", "subject": "No longer run master branch through CI.", "body": "The integration branch will be run through CI and then pushed to master with github status checks." }, { "commit": "c34a76690fbceb8f7289c23206a9c9fcbe874c17", "date": "2017-12-19 15:39:39 -0500", "subject": "Fixed info command to eliminate \"db (prior)\" output if no backups or archives exist for a prior version of the cluster.", "body": "Fixed by Cynthia Shang.\nReported by Stephen Frost." }, { "commit": "717a14754202b8662fbec5356ce825fd293bb6c8", "date": "2017-12-18 18:55:15 -0500", "subject": "Update command-line help from commits 58b08930 and 0bfda1a9." }, { "commit": "ef3ef85c33ac871a4910267b34757e8fcbb7e59c", "date": "2017-12-18 18:51:19 -0500", "subject": "Fixed an issue where WAL was not expired on PostgreSQL 10.", "body": "This was caused by a faulty regex that expected all PostgreSQL major versions to be X.X." }, { "commit": "3cc367185e1a9bec69954895ecb6ae9d54c8d71f", "date": "2017-12-15 11:12:37 -0500", "subject": "Add documentation for command-line negation." }, { "commit": "41f5b2cec2e065b8a9ed9245c5338772ad7e77d8", "date": "2017-12-14 15:44:06 -0500", "subject": "All clusters in the documentation are initialized with checksums." }, { "commit": "e5511d0f82839cd8a13d938e4035ffada872067a", "date": "2017-12-13 11:16:27 -0500", "subject": "Improve check command to verify that the backup manifest can be built.", "body": "Contributed by Cynthia Shang." }, { "commit": "0bfda1a908edd1ca4990a330ba2dcec7260ccd02", "date": "2017-12-11 07:48:30 -0500", "subject": "Document the relationship between the archive-copy and archive-check options.", "body": "Suggested by Markus Nullmeier." }, { "commit": "58b0893067fe33fbeb1e23eb96e080c2d5a9b8ba", "date": "2017-12-11 07:31:30 -0500", "subject": "Improve archive-copy reference documentation." }, { "commit": "99a072163192e7546632119df89511a173d9048e", "date": "2017-12-05 15:23:32 -0500", "subject": "Allow any non-boolean, non-command-line option to be negated.", "body": "This allows specific options in pgbackrest.conf to be ignored (and set to default) which reduces the need to write new configuration files for specific needs.\n\nNote that boolean, non-command-line options are already negatable." }, { "commit": "c5fc88d34097ba03cd4fce3fbfce1f4c337b83e6", "date": "2017-12-05 14:59:09 -0500", "subject": "Fixed an issue that suppressed locality errors for backup and restore.", "body": "When a backup host is present, backups should only be allowed on the backup host and restores should only be allowed on the database host unless an alternate configuration is created that ignores the remote host." }, { "commit": "5eb5d94d65ee159605273b57e504652c980c9cc7", "date": "2017-12-05 14:46:52 -0500", "subject": "Allow internal options that do not show up in the documentation.", "body": "Used for test options initially but other use cases are on the horizon." }, { "commit": "8d4674031e63d7a3c0bfc07f2524551dcf1474de", "date": "2017-12-05 10:09:07 -0500", "subject": "More config parsing in C in preparation for all config parsing in C." }, { "commit": "4f1725dc3684233b444d6d0c0efe6bce6468a623", "date": "2017-12-05 09:45:51 -0500", "subject": "Replace cfgCommandTotal()/cfgOptionTotal() functions with constants.", "body": "The constants are applicable in more cases and allow the compiler to optimize certain loops more efficiently." }, { "commit": "59fd92fdd5c39f0c48897513a2d01205efa278e4", "date": "2017-12-03 17:08:49 -0500", "subject": "Move restore test infrastructure to HostBackup.pm.", "body": "Required to test restores on the backup server, a fairly common scenario.\n\nImprove the restore function to accept optional parameters rather than a long list of parameters. In passing, clean up extraneous use of strType and strComment variables." }, { "commit": "915ae5662abc9a0e31e03d56bf27b739ed8b263b", "date": "2017-11-28 21:44:05 -0500", "subject": "Implement version command in C." }, { "commit": "bd74711ceb1d3faf49f0349d4dbef4f4cd8434ba", "date": "2017-11-28 11:44:24 -0500", "subject": "Add unit tests for the Manifest module.", "body": "Also minor changes to Manifest module, mostly for test reproducibility." }, { "commit": "4a0eb6863d3517151fdec6b450bac2fa2c7ddfb4", "date": "2017-11-27 22:16:24 -0500", "subject": "Sync time to prevent build failures when running on VirtualBox." }, { "commit": "332861c6c95966b38b457b785c2a8db39d205648", "date": "2017-11-27 21:19:59 -0500", "subject": "Only build C binary/library for Perl unit/integration tests." }, { "commit": "2ed426a70b5659cbf1628eb4aaf8c7994580ea63", "date": "2017-11-27 20:43:44 -0500", "subject": "Remove deprecated archive-max-mb option." }, { "commit": "c5ea53bcf9a07cd07bb077a5764b3cc164e8424b", "date": "2017-11-27 16:02:49 -0500", "subject": "Add coding standards document." }, { "commit": "74d6398ad2a893b1413c8202814c6284846087da", "date": "2017-11-26 18:43:51 -0500", "subject": "The pgbackrest executable is now a C binary instead of Perl.", "body": "This allows certain time-critical commands (like async archive-push) to run more quickly." }, { "commit": "4d8ad4ac18498835107a26f1a442429ac9dcf50c", "date": "2017-11-26 18:23:11 -0500", "subject": "Add List and StringList objects to simplify list handling." }, { "commit": "1b3e8e0a5bd8a343a78ecfb51f78d22b405b9a9f", "date": "2017-11-26 17:49:10 -0500", "subject": "Add String object to simplify string handling." }, { "commit": "7cf955425ef998ba198f9668f69c2052c089dcd8", "date": "2017-11-26 17:45:00 -0500", "subject": "The C library is now required.", "body": "This eliminates conditional loading and eases development of new library features." }, { "commit": "c164fc5fb906d73fcc4d5dcfd960d62caa57effb", "date": "2017-11-26 12:22:50 -0500", "subject": "Add memGrowRaw() to memory context module." }, { "commit": "c360ca5a08ecd812610a0a26414e650da6b4b50e", "date": "2017-11-25 20:32:35 -0500", "subject": "Split \"refactor\" sections into \"improvements\" and \"development\" in the release notes.", "body": "Many development notes are not relevant to users and simply clutter the release notes, so they are no longer shown on the website." }, { "commit": "13893a97313757162e061b855bbd494abdbec8ce", "date": "2017-11-21 19:52:56 -0500", "subject": "Relax permissions set by release.pl." }, { "commit": "ba6b49ecb7226e5dab0990403afa6f8878048e35", "date": "2017-11-21 18:31:54 -0500", "subject": "v1.26: Repository Encryption" }, { "commit": "033dbcdc208657e3569c0197ec98e9ff1a052ff1", "date": "2017-11-21 17:59:30 -0500", "subject": "Update release.pl to push data to site repository." }, { "commit": "ac54aac448e1ed84f6d083fcf95158619d729be3", "date": "2017-11-21 13:17:44 -0500", "subject": "Fixed an issue passing parameters to remotes.", "body": "When more than one db was specified the path, port, and socket path would for db1 were passed no matter which db was actually being addressed." }, { "commit": "c77fc1fa61582e1983324e7caa5b573fc0eae5e8", "date": "2017-11-21 12:57:00 -0500", "subject": "Refactor protocol param generation into a new function.", "body": "This allows the code to be tested more precisely and doesn't require executing a remote process." }, { "commit": "062e714307de357ae49bcac8c48e397b1debfa0f", "date": "2017-11-21 09:31:15 -0500", "subject": "Disable gzip filter when --compress-level-network=0.", "body": "The filter was used with compress level set to 0 which added overhead without any benefit." }, { "commit": "1da63aff07de90cd7734b5afd2674b1452c59cf3", "date": "2017-11-20 12:46:35 -0500", "subject": "Fixed an issue with invalid backup groups being set correctly on restore.", "body": "If the backup cannot map a group to a name it stores the group in the manifest as false then uses either the owner of $PGDATA to set the group during restore or failing that the group of the current user. This logic was not working correctly because the selected group was overwriting the user on restore leaving the group undefined and the user incorrectly set to the group. (Reported by Jeff McCormick.)" }, { "commit": "8ccfaa9ad366802525cbf1053af2226f2789b493", "date": "2017-11-20 09:05:55 -0500", "subject": "Designate a single distro (Ubuntu 16.04) for C coverage testing", "body": "Enable optimizations on the distros that don't do coverage testing." }, { "commit": "deae0b8cd7ec102babf584698b15e73a7822283c", "date": "2017-11-20 08:58:47 -0500", "subject": "Refactor C page checksum unit test to compile with -Wstrict-aliasing." }, { "commit": "5d741ea9a9993397bd7aa6602ff8562302d82c8e", "date": "2017-11-19 16:46:31 -0500", "subject": "Refactor C unit test macros so they compile with -Wstrict-aliasing." }, { "commit": "3b43047e0d40ea7e00049df77d20f26498c89be1", "date": "2017-11-19 16:44:33 -0500", "subject": "Disable -Wclobber compiler warning.", "body": "...because it is mostly useless but keep the rest of of -Wextra." }, { "commit": "dc1a5c18acfef55f8d4cdfa21e9543975070b373", "date": "2017-11-19 16:30:23 -0500", "subject": "Wrap try in a do...while loop to make sure that no random else is attached to the main if block." }, { "commit": "9395ad7043d4d7ef8a687e0baa5d25e98d553112", "date": "2017-11-18 22:49:43 -0500", "subject": "Improve base64 implementation.", "body": "Different encoded strings could be generated based on compiler optimizations. Even though decoding was still successful the encoded strings did not match the standard." }, { "commit": "500d6b4b66fab197ae39db2d3f79a3e7ef29f66c", "date": "2017-11-18 20:14:14 -0500", "subject": "Automated tests for 32-bit i386/i686 architecture." }, { "commit": "8a3425ec04fea8c0876df0420d5dd3e318812c4e", "date": "2017-11-18 20:02:54 -0500", "subject": "Automate generation of WAL and pg_control test files.", "body": "The existing static files would not work with 32-bit or big-endian systems so create functions to generate these files dynamically rather than creating a bunch of new static files." }, { "commit": "b701cd5a5f43ffd5b39df5298bd66ea886dedbdd", "date": "2017-11-18 19:53:41 -0500", "subject": "Designate a single distro (Ubuntu 16.04) for Perl coverage testing.", "body": "Running coverage testing on multiple distros takes time but doesn't add significant value. Also ensure that the distro designated to run coverage tests is one of the default test distros." }, { "commit": "6ef2167e972039e67668d7f7700aab505d0ea595", "date": "2017-11-16 17:18:51 -0500", "subject": "Fixed an issue retrieving WAL for old database versions.", "body": "After a stanza-upgrade it should still be possible to restore backups from the previous version and perform recovery with archive-get. However, archive-get only checked the most recent db version/id and failed.\n\nAlso clean up some issues when the same db version/id appears multiple times in the history.\n\nFixed by Cynthia Shang.\nReported by Clinton Adams." }, { "commit": "550d4fb9c591a269253a675f6f3585a777ea9b33", "date": "2017-11-16 16:53:49 -0500", "subject": "Fix incorrect WAL offset for 32-bit architectures.", "body": "Fixed by Javier Wilson." }, { "commit": "1cb11a582de59480af3a5f656dbb0ec3da14e854", "date": "2017-11-15 13:17:57 -0500", "subject": "Fix flapping protocol timeout test.", "body": "It only matters that the correct error code is returned, so disable logging to prevent message ordering from failing the expect test." }, { "commit": "bc8543494a07ef126b0d223e7a90da22a26389e8", "date": "2017-11-15 11:59:27 -0500", "subject": "Add template to improve initial information gathered for issue submissions.", "body": "Contributed by Cynthia Shang." }, { "commit": "22fe684b1fe213df6c9a74a7c0bec4aa6eed3837", "date": "2017-11-14 17:16:39 -0500", "subject": "Only check expect logs on CentOS 7.", "body": "Variations in distros cause false negatives in tests but don't add much value." }, { "commit": "3ee269c0998ea3bbf96ccbcc04857ba6b9789146", "date": "2017-11-14 17:07:22 -0500", "subject": "Add encryption to features list." }, { "commit": "b8746f368dbd76eee19e4c3fecc6853696be1908", "date": "2017-11-14 15:12:31 -0500", "subject": "Inflate performance improvement for gzip filter and full unit test coverage." }, { "commit": "04e55fe71bea32b2666df59a9891362ea6717964", "date": "2017-11-14 14:48:44 -0500", "subject": "Fixed an issue that could cause copying large manifests to fail during restore.", "body": "Reported by Craig A. James." }, { "commit": "cf7da546a3b7c1395faf2958f45572f82fe0127a", "date": "2017-11-13 21:22:13 -0500", "subject": "Simplify try..catch..finally names." }, { "commit": "bcdfc7d0b52dc92ae22aef1c93bbfda7e6fa24f3", "date": "2017-11-06 22:55:34 -0500", "subject": "Enable additional warnings for C builds." }, { "commit": "b03c26968a2817df33b60c8240cbe2c037281783", "date": "2017-11-06 12:51:12 -0500", "subject": "Repository encryption support.", "body": "Contributed by Cynthia Shang." }, { "commit": "f07d2a3d0dbfa7ea510e41a9ea66265b46db1158", "date": "2017-11-06 12:40:54 -0500", "subject": "Add eof to S3 file driver (required for encryption support)." }, { "commit": "8d6a08a32b1221db5b6eae0db615731d19754bc8", "date": "2017-11-03 13:57:58 -0400", "subject": "Library code for repository encryption support." }, { "commit": "ac542788da8264e39b3f3d817535df918f65a342", "date": "2017-11-02 08:14:13 -0400", "subject": "Convert configuration definitions from auto-generated functions to auto-generated data structures." }, { "commit": "2be93036f1c8de73414650fd6c6710e2f2b9fc73", "date": "2017-10-30 14:18:05 -0400", "subject": "Clarify usage of the archive-timeout option.", "body": "Also describe how it is distinct from the PostgreSQL archive_timeout setting." }, { "commit": "55f68ef0136362be1ee8dbe3dabd1b3132e485d1", "date": "2017-10-30 10:58:04 -0400", "subject": "Remove configurable option hints.", "body": "db-path was the only option with a hint so the feature seemed wasteful. All missing stanza options now output the same hint without needing configuration." }, { "commit": "1ef27ec8c2273fce99685c9354a6778d14a54792", "date": "2017-10-30 10:50:35 -0400", "subject": "Add list type for options.", "body": "The hash type was being used for lists with an additional flag (`value-hash`) to indicate that it was not really a hash." }, { "commit": "f57e376c4489cba94b5dba443e6421b085ef9ea4", "date": "2017-10-30 09:29:46 -0400", "subject": "Update Debian/Ubuntu containers to download lastest version of pip." }, { "commit": "85b35f30a4a4ea07e92ad5ded6ce73bc2937f0ef", "date": "2017-10-24 17:36:21 -0400", "subject": "v1.25: S3 Performance Improvements" }, { "commit": "8674a4f7aea3bea2db7e92be599c034170b81706", "date": "2017-10-24 12:35:36 -0400", "subject": "Allow functions with sensitive options to be logged at debug level with redactions.", "body": "Previously, functions with sensitive options had to be logged at trace level to avoid exposing them. Trace level logging may still expose secrets so use with caution." }, { "commit": "b2cc65d886a5c1fe4845f655c53b0c809beefb72", "date": "2017-10-24 10:35:42 -0400", "subject": "Improve performance of test code.", "body": "Wait when all tests have been assigned to reduce CPU load." }, { "commit": "d989cf8ac21e0978174cc94747965743f252a45d", "date": "2017-10-22 19:07:17 -0400", "subject": "Replace dynamically built class hierarchies in I/O layer with fixed parent() calls." }, { "commit": "d82fe88031a3c9ca88bd70652bc4f9fc0e12d4bf", "date": "2017-10-22 18:05:46 -0400", "subject": "Fix custom settings for compress-level option being ignored.", "body": "Reported by Jens Wilke." }, { "commit": "3553ccae449b7b9ad71290234e55c57d9c9455a5", "date": "2017-10-22 13:27:47 -0400", "subject": "Add I/O performance tests." }, { "commit": "9b98c2e7d6492b626267ffa0c50c67922dd43bda", "date": "2017-10-22 13:11:03 -0400", "subject": "Run all tests on tempfs rather than local disk." }, { "commit": "e1cb9ae86a596d0c1e833ba60730e65805c4ef4f", "date": "2017-10-21 14:40:14 -0400", "subject": "Improve labeling for errors in helper processes." }, { "commit": "44c7c0475ad30873075751ea23083861fe53278a", "date": "2017-10-21 14:11:33 -0400", "subject": "Improve protocol error handling.", "body": "In particular, \"stop\" errors are no longer reported as \"unexpected\"." }, { "commit": "1f120f3fce1f8f30739a0cc178e8eea2053fd2f2", "date": "2017-10-20 14:10:16 -0400", "subject": "Improve performance of list requests on S3.", "body": "Any beginning literal portion of a filter expression is used to generate a search prefix which often helps keep the request small enough to avoid rate limiting." }, { "commit": "f4524aeaa92baf2cdae2125c87661036e2bdc0a0", "date": "2017-10-18 11:14:26 -0400", "subject": "Add base64 encode/decode." }, { "commit": "2d56de00fcb04f2f949c1855f68cbeee25cdee6f", "date": "2017-10-18 08:42:32 -0400", "subject": "Fix instances where database-id was not rendered as an integer in JSON info output.", "body": "Fixed by Cynthia Shang.\nReported by Jason O'Donnell." }, { "commit": "b1efd598cfe82c02db1a5943cd900dfc4be28e05", "date": "2017-10-16 18:21:47 -0400", "subject": "Add PostgreSQL versions to Debian VMs for testing." }, { "commit": "c94e52f697cdae67c35fe8cb0f95088029231b95", "date": "2017-10-16 14:34:44 -0400", "subject": "Remove error when overlapping timelines are detected.", "body": "Overlapping timelines are valid in many Point-in-Time-Recovery (PITR) scenarios." }, { "commit": "583a76f605cd49d03fe2fe4a756e7de08966a62d", "date": "2017-10-16 11:25:49 -0400", "subject": "Add C memory contexts." }, { "commit": "6f5186f9e620693815133dc1444c0b627a3ab6a1", "date": "2017-10-16 11:13:51 -0400", "subject": "Convert config tests into C unit tests." }, { "commit": "9d78948a14b20813201b5bf7f21e3525577aa7dc", "date": "2017-10-16 11:03:06 -0400", "subject": "Improvements to page checksum module and tests:", "body": "* Page checksum module uses new C error handler.\n* Convert page checksum tests into C unit tests." }, { "commit": "80758f002311dd58497f95a5fd9a8f9de92920e8", "date": "2017-10-16 10:54:35 -0400", "subject": "Add test macros for C results and errors." }, { "commit": "904b83747cd8140aa64a0eb2ac598cc8c1cf310b", "date": "2017-10-16 10:47:31 -0400", "subject": "Perl error handler recognizes errors thrown from the C library." }, { "commit": "f1e739b4aa85f4b57613b8191e29c2abd303ed8e", "date": "2017-10-16 10:09:56 -0400", "subject": "Add C error handler.", "body": "Basic try ... catch ... finally pattern to simplify error handling in C." }, { "commit": "10dfbd90b5c3af6ebb6c651760d2d62ced738b84", "date": "2017-10-12 12:55:48 -0400", "subject": "Add C unit test infrastructure." }, { "commit": "08d6f14603e7248dd7cc865129527963d9e3df49", "date": "2017-10-10 18:21:44 -0400", "subject": "Add LibC.template.pm to simplify LibC module generation." }, { "commit": "abea4d1fd5f8cd2a8e0c8625dbb3d700b5317cc7", "date": "2017-10-05 12:33:13 -0400", "subject": "Remove Debian test repo after PostgreSQL 10 release." }, { "commit": "d89b7d5862201051732274f622742888dbf09315", "date": "2017-09-30 10:48:25 -0400", "subject": "Warnings in C builds treated as errors." }, { "commit": "8efcc38304dae4e224ae1ac0211ed03691ae5c8a", "date": "2017-09-30 10:44:03 -0400", "subject": "Improvements in C codebase:", "body": "* Update C naming conventions.\n* Use int datatype wherever possible.\n* Better separation of C source from Perl interface." }, { "commit": "d0bf946857d73dcca2ce2a7bf0b78fd8aee2a19b", "date": "2017-09-28 19:06:41 -0400", "subject": "v1.24: New Backup Exclusions" }, { "commit": "40a85e34f1b12620b5520f620779396b7ead525a", "date": "2017-09-20 19:57:05 -0400", "subject": "Improve C library smart build.", "body": "Ignore changes outside of /lib/pgBackRest/Config." }, { "commit": "4d6c56b4d76572f5a45a45ca8f55ddc269d2d6d1", "date": "2017-09-20 08:08:36 -0400", "subject": "Open log file after async process is completely separated from the main process.", "body": "This prevents the main process from also logging to the file." }, { "commit": "266c9ddcc12c377dd2b3d90b79468eaa6c22f101", "date": "2017-09-19 10:14:18 -0400", "subject": "Fixed an issue where some db-* options (e.g. db-port) were not being passed to remotes." }, { "commit": "c857015a38edd6db641987f8084930f59cfb9309", "date": "2017-09-19 10:03:53 -0400", "subject": "Fixed an issue where warnings were being emitted in place of lower priority log messages during backup from standby initialization." }, { "commit": "d36c52271f994fc6332c40c9a101f9451ccb7266", "date": "2017-09-17 15:52:19 -0400", "subject": "Break up LibC.xs into separate module files." }, { "commit": "20af8ecf505f3b8b490dfb76969d5e39dabf0362", "date": "2017-09-17 14:49:23 -0400", "subject": "Dynamically generate list of files for C library build." }, { "commit": "7c95a2f4de43905bc7b22afbc8d70432156bc033", "date": "2017-09-08 21:50:00 -0700", "subject": "Updates to installation documentation.", "body": "* Add trusted SSH configuration.\n* Add full installation where required and remove doc containers that included parts of the installation." }, { "commit": "4bcef7020ee25104b687580a7089a06d4b597cf8", "date": "2017-09-07 10:59:40 -0700", "subject": "Rename master to primary in documentation to align with PostgreSQL convention." }, { "commit": "6343fdd5846ef05d9f4883d8ffd09e0b47f744ce", "date": "2017-09-04 08:26:57 -0400", "subject": "Additional backup exclusions.", "body": "* Exclude contents of pg_snapshots, pg_serial, pg_notify, and pg_dynshmem from backup since they are rebuilt on startup.\n* Exclude pg_internal.init files from backup since they are rebuilt on startup." }, { "commit": "df1ec0aaeb02fb1359f5f893dad8af06c2e05eeb", "date": "2017-09-03 17:42:00 -0400", "subject": "v1.23: Multiple Standbys and PostgreSQL 10 Support" }, { "commit": "eea2ccc3ab52ee588d6f894d291931bd9aa52147", "date": "2017-09-03 16:48:41 -0400", "subject": "Add HTTP retries to harden against transient S3 network errors." }, { "commit": "80e5e8db01b97ad7878817152d2a9a933d59d415", "date": "2017-09-01 19:16:57 -0400", "subject": "Increase HTTP timeout for S3." }, { "commit": "75511d24813266b87a7b65e25141f2fd6b1dd78a", "date": "2017-09-01 15:07:20 -0400", "subject": "Allow content-length (in addition to chunked encoding) when reading XML data to improve compatibility with third-party S3 gateways.", "body": "Suggested by Victor Gdalevich." }, { "commit": "fcb7c6fd1d0f37ed371079537b95899eaac44812", "date": "2017-09-01 12:29:34 -0400", "subject": "PostgreSQL 10 support." }, { "commit": "36e576b4839d5d9323597014d6f478def7308d9e", "date": "2017-08-31 19:15:44 -0400", "subject": "Up to seven standbys can be configured for backup from standby.`", "body": "Contributed by Cynthia Shang." }, { "commit": "206415d4c754053275666bfcc0eb138f39884c21", "date": "2017-08-30 16:34:05 -0400", "subject": "Fixed an issue that could cause compression to abort on growing files.", "body": "Reported by Jesper St John, Aleksandr Rogozin." }, { "commit": "81ffd094455fb006993a3b9e65c801c127454dc7", "date": "2017-08-30 08:41:46 -0400", "subject": "Fixed an issue with keep-alives not being sent to the remote from the local process.", "body": "Reported by William Cox." }, { "commit": "1e0ed074555df7d9079fdf52c4b6b5b049b6d155", "date": "2017-08-25 16:47:47 -0400", "subject": "Configuration rules are now pulled from the C library when present." }, { "commit": "8d3436bce775845d45eaf8b55e526ad784e54e0f", "date": "2017-08-19 09:02:24 -0400", "subject": "Merge release 2 container build changes." }, { "commit": "7dab459cacd9e1b5934294176e5929a86f7b48de", "date": "2017-08-19 08:48:13 -0400", "subject": "Simplified smart logic for C Library and package builds." }, { "commit": "1be69d5ac71db241f0c41bf28c4c36c5cc0b32c4", "date": "2017-08-16 16:54:35 -0400", "subject": "Fixed document generation to include section summaries on the Configuration page.", "body": "Fixed by Cynthia Shang." }, { "commit": "1d2b08ce94d31e2d0a19cb7f489d73e2e04700d2", "date": "2017-08-11 18:43:21 -0400", "subject": "Move contributor list to the end of release.xml for convenience." }, { "commit": "4c2c612b6f68001b2cf0ccd29b02648f0f11ae8c", "date": "2017-08-11 18:38:40 -0400", "subject": "Ignore auto-generated C code created by release 2." }, { "commit": "4331e09376a124e597c4a0e8e4c9641239f8f64e", "date": "2017-08-11 18:31:25 -0400", "subject": "Drain stderr during test process execution as well as termination to prevent lockups if there is a lot of output." }, { "commit": "f8de73674c5e97bd7103a4892ce4d17cc12d1173", "date": "2017-08-10 20:52:29 -0400", "subject": "Updated Docker build in Vagrantfile." }, { "commit": "ac1574448e8b6e2a6b6c3690f3998aac35e4d40d", "date": "2017-08-10 18:11:29 -0400", "subject": "Changed log test order to ignore unimportant log errors while shutting down PostgreSQL." }, { "commit": "84caca0f341982d7d61d1c310faf5c6a3a601a48", "date": "2017-08-09 11:50:02 -0400", "subject": "v1.22: Fixed S3 Retry" }, { "commit": "61c38f58085ebe5ad769bf5937c41793deafc884", "date": "2017-08-09 11:27:09 -0400", "subject": "Fixed authentication issue in S3 retry." }, { "commit": "cbc026418cdc03bbe645a3c44ccf9e40435c62ca", "date": "2017-08-08 18:09:07 -0400", "subject": "v1.21: Improved Info Output and SSH Port Option" }, { "commit": "038d47bcc05d3de5b377c330576bcc76648ccb8b", "date": "2017-08-08 17:15:01 -0400", "subject": "Retry when S3 returns an internal error (500)." }, { "commit": "961f7033d1f82f279e02500506a255c58064fe55", "date": "2017-08-08 16:26:44 -0400", "subject": "Generate global fake cert in containers for testing." }, { "commit": "b6da509c9f909bcbd1c76b6b920b78e5945b9d1e", "date": "2017-08-04 16:10:51 -0400", "subject": "Consolidate stanza-create and stanza-upgrade tests into new stanza test.", "body": "Contributed by Cynthia Shang." }, { "commit": "f9bdc092bac8cdfe1c7145c0adf1123ae2ea6dd1", "date": "2017-08-04 16:03:55 -0400", "subject": "Fixed an issue that could cause the empty archive directory for an old PostgreSQL version to be left behind after a stanza-upgrade.", "body": "Fixed by Cynthia Shang." }, { "commit": "ce2b18c5b84c506606861010331965ad503af48a", "date": "2017-08-01 10:34:53 -0400", "subject": "Added --backup-ssh-port and --db-ssh-port options to support non-default SSH ports.", "body": "Contributed by Cynthia Shang." }, { "commit": "fa992433da396f8fe3a3c49dfd539d4dd6c54ae1", "date": "2017-07-27 11:31:42 -0400", "subject": "Update CI code to prevent deprecated VM from being rewritten." }, { "commit": "cf3110b0d896c75db775f6b2296c704a54d61142", "date": "2017-07-26 19:22:54 -0400", "subject": "Use new Travis Trusty image." }, { "commit": "14d6974d1b54977ab678d0967c6fa8275b0959c7", "date": "2017-07-26 13:40:09 -0400", "subject": "Use Google DNS in test environment for consistency." }, { "commit": "97c4d9ec1874fa2acbb33d6442d62089be07786b", "date": "2017-07-26 10:22:22 -0400", "subject": "Reduce log verbosity in doc.pl.", "body": "Reduce verbosity by only logging sections that contain an execute list directly or in a child section." }, { "commit": "df7d63368396c1030e178621136f0b304f970987", "date": "2017-07-26 09:33:10 -0400", "subject": "Improvements to command/command-line help:", "body": "* Move repository options into a separate section in command/command-line help. (Suggested by Stephen Frost.)\n* Fix description of --online based on the command context.\n* Remove vestigial repository options from backup command." }, { "commit": "156fd4d54d2387767d298dd295518f847788f845", "date": "2017-07-25 12:44:38 -0400", "subject": "Add bIgnoreMissing parameter to Local->manifest()." }, { "commit": "49449feab3d13fa6aedd5271d60e55f3720e8f08", "date": "2017-07-24 21:14:42 -0400", "subject": "Add creation of /etc/pgbackrest.conf to manual installation instructions." }, { "commit": "cbb749e12a6c752d9172d7038f3f683c84d50d03", "date": "2017-07-24 21:12:05 -0400", "subject": "Debian/Ubuntu documentation now builds on Ubuntu 16." }, { "commit": "d5c1f02c7289284cb0cd7bd5c79e9e6a2dc8fb69", "date": "2017-07-24 07:57:47 -0400", "subject": "Include archive_status directory in online backups.", "body": "The archive_status directory is now recreated on restore to support PostgreSQL 8.3 which does not recreate it automatically like more recent versions do.\n\nAlso fixed log checking after PostgreSQL shuts down to include FATAL messages and disallow immediate shutdowns which can throw FATAL errors in the log." }, { "commit": "cda3b9821b83b3cc96ad13b63483499ff5a52e42", "date": "2017-07-21 17:32:41 -0400", "subject": "Improved WAL data returned by info command.", "body": "Modified the info command (both text and JSON output) to display the archive ID and minimum/maximum WAL currently present in the archive for the current and prior, if any, database cluster version." }, { "commit": "33d769e14786098b6fa02e666c624531dc7d5bea", "date": "2017-06-27 22:42:31 -0400", "subject": "v1.20: Critical 8.3/8.4 Bug Fix" }, { "commit": "884413b251935aa7c1f82758a34c37664c200b82", "date": "2017-06-27 22:27:48 -0400", "subject": "Remove mount and user from host cache-key because it can vary by system." }, { "commit": "7759a94fa2ac0af8ef037c466808685b091c2cc2", "date": "2017-06-27 18:29:48 -0400", "subject": "Add Debian 9 to test suite." }, { "commit": "9e9286ee205e7202bed7fc0d688e43949c3a687c", "date": "2017-06-27 18:00:39 -0400", "subject": "Add performance module and basic performance test for archive-push." }, { "commit": "9e248a66279eab87c18040917f5bdcd94075e6c2", "date": "2017-06-27 17:54:30 -0400", "subject": "Minor optimizations to package loads and ordering for archive-get and archive-push commands." }, { "commit": "f3b62d2d671592881f5e646b100604020fa52e70", "date": "2017-06-27 17:07:12 -0400", "subject": "Fixed misleading error message when a file was opened for write in a missing directory." }, { "commit": "2310e423e98259838826ccc8093e43668fab061a", "date": "2017-06-27 16:47:40 -0400", "subject": "Fixed an issue that prevented tablespaces from being backed up on PostgreSQL ≤ 8.4.", "body": "The integration tests that were supposed to prevent this regression did not work as intended. They verified the contents of a table in the (supposedly) restored tablespace, deleted the table, and then deleted the tablespace. All of this was deemed sufficient to prove that the tablespace had been restored correctly and was valid.\n\nHowever, PostgreSQL will happily recreate a tablespace on the basis of a single full-page write, at least in the affected versions. Since writes to the test table were replayed from WAL with each recovery, all the tests passed even though the tablespace was missing after the restore.\n\nThe tests have been updated to include direct comparisons against the file system and a new table that is not replayed after a restore because it is created before the backup and never modified again.\n\nVersions ≥ 9.0 were not affected due to numerous synthetic integration tests that verify backups and restores file by file." }, { "commit": "fdabf33604cdc5f253187d559b3d4be52c2d843d", "date": "2017-06-27 15:58:02 -0400", "subject": "Revert removal of Ubuntu 12.04 and PostgreSQL 8.3." }, { "commit": "001cff9eb990cf246df42c7d06f5e377da313299", "date": "2017-06-27 15:48:34 -0400", "subject": "Automatically check that all supported PostgreSQL versions are being tested on a single default VM." }, { "commit": "7a1385cc2716de93b7f0388ea2017dfa1a8734a4", "date": "2017-06-24 18:04:02 -0400", "subject": "Add documentation builds to CI." }, { "commit": "7a9b1f69937f5866ab0bc888d700527fda460d47", "date": "2017-06-24 10:59:00 -0400", "subject": "Container build improvements:", "body": "* More optimized container suite that greatly improves build time.\n* Added static Debian packages for Devel::Cover to reduce build time.\n* Add deprecated state for containers. Deprecated containers may only be used to build packages.\n* Remove Debian 8 from CI because it does not provide additional coverage over Ubuntu 14.04 and Ubuntu 16.04." }, { "commit": "53184a7b30c7b3000a4be8af90c9419b22fae3e2", "date": "2017-06-23 10:30:22 -0400", "subject": "Update CentOS 6 documentation to build on PostgreSQL 9.5." }, { "commit": "3d224ad8fa54f007032a5a2c6077c004c4d7c395", "date": "2017-06-23 10:10:48 -0400", "subject": "Improve S3 server implementation in documentation." }, { "commit": "eb4325fa9ac8b6e3da6344d561a861651a4b23f9", "date": "2017-06-22 19:04:52 -0400", "subject": "Remove exhaustive version list from Stable Releases TOC." }, { "commit": "a10a22127d025367655037c1ca9fee0dde248e3c", "date": "2017-06-22 18:51:39 -0400", "subject": "Consolidate archive-get test into new archive test." }, { "commit": "918c1c6f490d3097c46e27fa0226c3fa3b08ec9b", "date": "2017-06-22 18:22:49 -0400", "subject": "Add s3-repo-ca-path and s3-repo-ca-file options.", "body": "The options accommodate systems where CAs are not automatically found by IO::Socket::SSL, i.e. RHEL7, or to load custom CAs." }, { "commit": "6327799c9ae828a56f7f8686d3e35da2441a6e15", "date": "2017-06-22 18:13:59 -0400", "subject": "Use old trusty image until new image works with RHEL6." }, { "commit": "a1a5d18aa436d50f3dff4e845bad51855168071b", "date": "2017-06-22 14:44:21 -0400", "subject": "Balance database versions between VMs to minimize test duration." }, { "commit": "d3054d919b6efc831c9a5a596496e0be80309bc7", "date": "2017-06-22 12:57:10 -0400", "subject": "Fixed missing flag in C library build.", "body": "The missing flag resulted in a mismatched binary on 32-bit systems." }, { "commit": "f8849d735937c16211b0cc905de22088ae467ec6", "date": "2017-06-22 12:37:21 -0400", "subject": "Remove patch directory before Debian package builds.", "body": "Patches should be merged into master before trying a new build after a release with patches." }, { "commit": "f596702c5badb5dbd3b15b6c4ee0e54444ab6e8c", "date": "2017-06-21 20:46:49 -0400", "subject": "Improve S3 error reporting." }, { "commit": "8b9965abcb30421157e11ecc5969bcffbbed93a5", "date": "2017-06-21 19:21:16 -0400", "subject": "Remove process-max option.", "body": "Parallelism is now tested in a more targeted manner and the high level option is no longer needed." }, { "commit": "234869338913ab411baa33b58f28e8d460c74335", "date": "2017-06-21 18:47:25 -0400", "subject": "Reduce process redundancy in mock tests." }, { "commit": "cc0e3f843e0bf3c4982af6423d07f527cc8fd617", "date": "2017-06-21 17:24:36 -0400", "subject": "Remove support for PostgreSQL 8.3." }, { "commit": "73274fc608d7aa4c93af645a85bcbceb3f276847", "date": "2017-06-21 17:02:01 -0400", "subject": "Remove Ubuntu 12.04 from CI now that it is EOL (it can still be run manually)." }, { "commit": "c69baa2de1ed4d00a87f90634c347e730f3babc3", "date": "2017-06-21 16:51:41 -0400", "subject": "Install sudo in base containers rather than on demand." }, { "commit": "64ec7eb49077421f28dbd3cf889e68fc226a4f3d", "date": "2017-06-21 16:07:13 -0400", "subject": "Eliminate redundancy in real tests." }, { "commit": "edada218660a67bd4e87e8450e2491eb2bb47a5c", "date": "2017-06-21 08:45:58 -0400", "subject": "Rename archive-push unit test.", "body": "This is part of the archive consolidation but is committed separately so that git will follow the rename." }, { "commit": "2337be863690c73fc2e141191a3167d959c35263", "date": "2017-06-21 08:38:53 -0400", "subject": "Consolidate archive-push tests into new archive test." }, { "commit": "11ee528e0e11a849612c67dcb297c35c29995c11", "date": "2017-06-21 08:02:21 -0400", "subject": "Rename Archive modules to remove redundancy." }, { "commit": "692b1e274adb9f1f23e3d29d127af521a53a27e9", "date": "2017-06-19 18:55:00 -0400", "subject": "Split full module into mock and real to allow better test combinations and save time in CI." }, { "commit": "f6d4457d58b3f752dadd14c9e341ff86910f72b3", "date": "2017-06-15 15:32:10 -0400", "subject": "Full/Synthetic test refactor.", "body": "* Combine hardlink and non/compressed in synthetic tests to reduce test time and improve coverage.\n* Change log level of hardlink logging to detail.\n* Cast size in S3 manifest to integer." }, { "commit": "269ae4556d00da463d43ef95aaa461821e77f4f3", "date": "2017-06-15 15:20:02 -0400", "subject": "Fix timeouts in ExecuteTest to speed multi-process testing." }, { "commit": "6e29f616b347b66c62c36adf019a7a4d42e4bdac", "date": "2017-06-15 15:12:28 -0400", "subject": "Harden protocol handshake to handle race conditions." }, { "commit": "c10c5bb0ef1de519371e1bdae0b9da7cf8670c95", "date": "2017-06-12 11:36:00 -0400", "subject": "v1.19: S3 Support" }, { "commit": "051c961151e75114c59980e9feb883a8d58dc7b0", "date": "2017-06-12 10:52:32 -0400", "subject": "S3 repository support." }, { "commit": "de7fc37f88f670a1b4b4f95ff354384f37d983b1", "date": "2017-06-09 17:51:41 -0400", "subject": "Storage and IO layer refactor:", "body": "Refactor storage layer to allow for new repository filesystems using drivers. (Reviewed by Cynthia Shang.)\nRefactor IO layer to allow for new compression formats, checksum types, and other capabilities using filters. (Reviewed by Cynthia Shang.)" }, { "commit": "7e982f05f564e560b6ca23f61365fc7f11a5da36", "date": "2017-05-16 11:28:51 -0400", "subject": "Fixed config warnings raised from a remote process causing errors in the master process.", "body": "Fixed by Cynthia Shang." }, { "commit": "74053ed842a4f3c37ce3fa2c9b6e32b4f5aa36e6", "date": "2017-05-16 11:15:31 -0400", "subject": "Fixed missing sudo in installation section.", "body": "Fixed by Lætitia." }, { "commit": "529674727148a7ec6d04ef6bd3ec86f69575f6f2", "date": "2017-05-15 16:01:00 -0400", "subject": "Move backup modules into Backup directory." }, { "commit": "2a23157bf2912bbcdbfe5350ca40ca398cc1001e", "date": "2017-05-15 11:12:14 -0400", "subject": "Move modules in Protocol directory in subdirectories." }, { "commit": "33c87b2a1ccbaf43f56765285ac4918f4b1cdf1c", "date": "2017-05-15 10:24:46 -0400", "subject": "Remove flapping protocol timeout test that will be replaced in the upcoming storage patch." }, { "commit": "c31da3f961b9494cb8f8f351d8a4cf7f22557062", "date": "2017-05-12 16:43:04 -0400", "subject": "Moved test and env modules to new directories to avoid namespace conflicts with common tests." }, { "commit": "4049d59c9e1c4abaa0d96ce0fc307139d1b32a64", "date": "2017-05-12 16:27:06 -0400", "subject": "Fixed issue with --dry-run requiring --vm-out to work properly." }, { "commit": "7d0c50fcd6dd6d7800b53ae2a1abf35f923ec7da", "date": "2017-05-12 16:05:44 -0400", "subject": "Fixed the backup command so the backup-standby option is reset (and the backup proceeds on the master) if the standby is not configured and/or reachable.", "body": "Fixed by Cynthia Shang." }, { "commit": "5bf4f52e3d1ddb3cacb6821080b59e378baf4cb1", "date": "2017-05-12 15:49:14 -0400", "subject": "Fixed the info command so the WAL archive min/max displayed is for the current database version.", "body": "Fixed by Cynthia Shang." }, { "commit": "64be6400fe1f6614c2788e7237e9f75e465fd95f", "date": "2017-04-17 06:39:29 -0400", "subject": "Changed invalid max-archive-mb option in configuration reference to archive-queue-max." }, { "commit": "979610a07d5c201e4e7f93f0540be2b19e4b33a5", "date": "2017-04-13 20:10:28 -0400", "subject": "Fixed an undefined variable when a module had no uncoverable code exceptions." }, { "commit": "77ef4fde20327a6615daaf096930de711fdb4ddf", "date": "2017-04-13 07:42:45 -0400", "subject": "Set --vm-max=2 for CI." }, { "commit": "76161bd8451e581a8f9aa11c1f37d14863585d29", "date": "2017-04-12 19:17:39 -0400", "subject": "v1.18: Stanza Upgrade, Refactoring, and Locking Improvements" }, { "commit": "5c635e0f0a1f5dc8ab8ef8c65204e81d3495afcb", "date": "2017-04-12 18:36:33 -0400", "subject": "Go back to using static user for documentation.", "body": "Making this dynamic in commit 5d2e792 broke doc builds from cache. The long-term solution is to create a special user for doc builds but that’s beyond the scope of this release." }, { "commit": "f207dc71238097a0fded50cc87bb7ef2afb006de", "date": "2017-04-12 12:41:34 -0400", "subject": "Renumber return codes between 25 and 125 to avoid PostgreSQL interpreting some as fatal signal exceptions.", "body": "Suggested by Yogesh Sharma." }, { "commit": "f5f8d51366faae6ac31f355d021eaff67bef8f7f", "date": "2017-04-12 09:53:07 -0400", "subject": "Improved error message when the restore command detects the presence of postmaster.pid.", "body": "Suggested by Yogesh Sharma." }, { "commit": "b0119914d4633431b208a5a327a3758a06258087", "date": "2017-04-12 09:22:51 -0400", "subject": "Do not set timestamps of files in the backup directories to match timestamps in the cluster directory.", "body": "This was originally done to enable backup resume, but that process is now implemented with checksums." }, { "commit": "fe02b40293fec08c819c5f41110203b8919fbae4", "date": "2017-04-12 09:05:57 -0400", "subject": "Backup and restore commands no longer copy via temp files.", "body": "In both cases the files are checksummed on resume so there's no danger of partial copies." }, { "commit": "21a000d002bae2fa87cd09952740cbe14770aada", "date": "2017-04-10 17:23:39 -0400", "subject": "Silence some perl critic warnings.", "body": "* Variables::RequireNegativeIndice\n* Variables::ProhibitUnusedVariables\n* Variables::ProhibitAugmentedAssignmentInDeclaration\n* Modules::ProhibitConditionalUseStatements" }, { "commit": "8546571461215eb65ffcff649c6baa17bc57d605", "date": "2017-04-10 17:20:21 -0400", "subject": "Ignore clock skew in container libc/package builds using make.", "body": "It is common for containers to have clock skew so the build process takes care of this issue independently." }, { "commit": "b63ede5614fed0dce32449f1450b7a5627eeeb3d", "date": "2017-04-10 13:53:19 -0400", "subject": "Added ability to test warning messages.", "body": "Contributed by Cynthia Shang." }, { "commit": "3d84f2ce5e02c5bd7f9bdcbb3b4579b146bf7ccf", "date": "2017-04-10 13:24:45 -0400", "subject": "Improvements to Ini.pm.", "body": "* Refactor Ini.pm to facilitate testing.\n* Complete statement/branch coverage for Ini.pm.\n* Improved functions used to test/munge manifest and info files." }, { "commit": "367e06f4be9133f399d4b7380ace8c5ca087c4b6", "date": "2017-04-10 12:31:30 -0400", "subject": "Coverage testing always enabled on Debian-based containers.", "body": "* Full coverage is verified when specified.\n* Modules marked with partial coverage will error if they are actually fully covered.\n* Simplified test representation is DefineTest.\n* Added new representation for queries in DefineTest and added API functions.\n* Update modules using DefineTest to use new API." }, { "commit": "eb4918d01881c20448e37da4d931d6e8a19f659a", "date": "2017-04-07 10:31:49 -0400", "subject": "Fixed locking bug and refactoring.", "body": "* Fixed an issue where read-only operations that used local worker processes (i.e. restore) were creating write locks that could interfere with parallel archive-push. (Reported by Jens Wilke.)\n* Simplify locking scheme. Now, only the master process will hold write locks (archive-push, backup) and not all the local and remote worker processes as before." }, { "commit": "edfb0962b678a5ebb3021d37d487fafb843dbf2a", "date": "2017-04-06 21:47:43 -0400", "subject": "Update wording for release note sections." }, { "commit": "b620e6b282d3fc0bd1354b9490fbd84ee8d22d6e", "date": "2017-04-06 19:36:37 -0400", "subject": "Improvements and additional tests for stanza-upgrade.", "body": "Contributed by Cynthia Shang." }, { "commit": "0da216c034d484927fa8ad0845e08f25c5227b5a", "date": "2017-04-05 10:50:32 -0400", "subject": "Require description in every call to testResult() and make iWaitSeconds optional." }, { "commit": "c7b61a200258b2f10d1c62f2aedc7441e27bb6b1", "date": "2017-04-05 10:16:16 -0400", "subject": "Refactor backupLabel() and add unit tests." }, { "commit": "b2f43b56014f3d43404a17531887a09a78eb0db1", "date": "2017-04-04 21:17:19 -0400", "subject": "Allow functions to accept optional parameters as a hash.", "body": "Refactor File->list() and fileList() to accept optional parameters." }, { "commit": "9eae36a7028a7c08869ec2e7c2f31f0aa49ecb4c", "date": "2017-04-04 21:15:22 -0400", "subject": "Fixed flapping archive stop tests." }, { "commit": "beead043ac1f988e3757dc8689638ee5d443d9f9", "date": "2017-04-03 10:42:55 -0400", "subject": "Added stanza-upgrade command.", "body": "The stanza-upgrade command provides a mechanism for upgrading a stanza after upgrading to a new major version of PostgreSQL." }, { "commit": "af7e4f4b4b6070e566865872e5240b824a14983f", "date": "2017-03-22 19:03:28 -0400", "subject": "Added validation of pgbackrest.conf to display warnings if options are not valid or are not in the correct section.", "body": "Contributed by Cynthia Shang." }, { "commit": "5d2e79242da79854ee922c1a84dec0e67d52f090", "date": "2017-03-16 19:50:59 -0400", "subject": "Fixed user change in docs missed in vagrant upgrade." }, { "commit": "cbd879a9830d2585b3df3209f59c4a9581a3c166", "date": "2017-03-14 22:05:17 -0400", "subject": "Updated vagrant to new version and image." }, { "commit": "cc9f8fc4b6cb9a2da5bd7419630c4f3eb1c71186", "date": "2017-03-13 16:54:51 -0400", "subject": "v1.17: Page Checksum Bug Fix" }, { "commit": "b0947fdaa8af9c434c85ff33b1140d8ca6d98cbb", "date": "2017-03-13 15:50:13 -0400", "subject": "Fixed an issue where newly initialized (but unused) pages would cause page checksum warnings.", "body": "Reported by Stephen Frost." }, { "commit": "3cec6702e85e901ff3894e047cf5a461562b7b67", "date": "2017-03-02 20:15:14 -0500", "subject": "v1.16: Page Checksum Improvements, CI, and Package Testing" }, { "commit": "02730526fc1a157231293ae532882847f7015a46", "date": "2017-03-02 13:50:29 -0500", "subject": "Fixed an issue where databases created with a non-default tablespace would raise bogus warnings about pg_filenode.map and pg_internal.init not being page aligned.", "body": "Reported by blogh." }, { "commit": "5957f8566f1f8cd90964423321660e457fab57b7", "date": "2017-03-02 11:47:23 -0500", "subject": "Archive test improvements:", "body": "* Fixed flapping archive-stop test with testResult() retries.\n* Added final test of archive contents to archive-push test." }, { "commit": "5eb585c9bae50e02ac5d53d3e20d0b5083283ac9", "date": "2017-03-01 14:38:05 -0500", "subject": "Improved truncation when outputting errors logs in the ExecuteTest module." }, { "commit": "c2666cc7f365fbd294b36dbcf5b11676bbcbf0d1", "date": "2017-03-01 14:15:46 -0500", "subject": "Fixed an issue where tables over 1GB would report page checksum errors after the first segment.", "body": "Reported by Stephen Frost." }, { "commit": "774b243719675a27e0d4f02369df7cb0bdac6524", "date": "2017-03-01 12:22:47 -0500", "subject": "Fixed dev version string in Debian changelog." }, { "commit": "2c48cf8d0d4a4049ffcb8e01549f080bccfcc037", "date": "2017-03-01 09:36:33 -0500", "subject": "Fixed Vagrantfile to match user/group changes made for Travis CI." }, { "commit": "8161ab1c505f811b8aeb8ca33a57133411c4b755", "date": "2017-02-26 12:58:48 -0500", "subject": "Temporarily disable flapping keep-alive test." }, { "commit": "abe0935ea51a78f182549a82b62ca3e1964fe877", "date": "2017-02-26 12:53:41 -0500", "subject": "Disable CI config writing with —no-ci-config." }, { "commit": "ac485cc3552f3b1e35baebaa0140236bf550c6a8", "date": "2017-02-22 18:43:10 -0500", "subject": "Change —retry default to 0." }, { "commit": "31d2d790bd070e2b58a192cb56f6b04cdd307a6f", "date": "2017-02-21 22:10:02 -0500", "subject": "Added --retry option." }, { "commit": "023578c008dec24000c268f29cda25dc2948a86a", "date": "2017-02-21 14:22:03 -0500", "subject": "Make package tests work with dev builds." }, { "commit": "0e9bc513c986140f9bc239dc4b1d3f54c46444a5", "date": "2017-02-21 12:54:27 -0500", "subject": "Suppress lint on all but the first test." }, { "commit": "14ca4dac6fe9ab594c0915486f88ff27f4a5dc7d", "date": "2017-02-21 11:56:55 -0500", "subject": "Improved the code and tests for fileManifest().", "body": "Done to prevent a possible race condition when files are removed by the database while the manifest is being built." }, { "commit": "01312f6260e4f36541d90b5f62be1cbbe6847d13", "date": "2017-02-21 11:47:45 -0500", "subject": "Improved formatting of testResult() output." }, { "commit": "86fee3da18e2646705fdac8853ae4153689d6484", "date": "2017-02-21 08:59:23 -0500", "subject": "Continuous integration using travis-ci." }, { "commit": "56543f7a9916b554204572fb015a24a33c0f74f0", "date": "2017-02-17 22:31:16 -0500", "subject": "Added package builds to test suite and other improvements:", "body": "* Automated builds of Debian packages for all supported distributions.\n* Added --dev option to aggregate commonly used dev options.\n* Added --no-package option to skip package builds.\n* C library and packages are built by default, added -smart option to rebuild only when file changes are detected.\n* The --libc-only option has been changed to --build-only now that packages builds have been added." }, { "commit": "ac7ff755b3533181f7f26a7140cbdefa1cb68442", "date": "2017-02-16 17:18:48 -0500", "subject": "Container executions now load the user's environment." }, { "commit": "2d7d9626bb60640a77ac71559f2a714a1aac8b94", "date": "2017-02-13 20:00:30 -0500", "subject": "v1.15: Refactoring and Bug Fixes" }, { "commit": "e2ac7e1ea624a1dd0e4c5ac214d3dfc1cdc266ab", "date": "2017-02-13 19:59:14 -0500", "subject": "Fixed a regression introduced in v1.13 that could cause backups to fail.", "body": "This happened if files were removed (e.g. tables dropped) while the manifest was being built." }, { "commit": "845c6112bf592fb54b61156b47bbf2ebc5985f29", "date": "2017-02-13 10:07:04 -0500", "subject": "v1.14: Bug Fixes" }, { "commit": "a54018d573926d5d5718727a9f169ad7751577f4", "date": "2017-02-13 10:03:02 -0500", "subject": "Improved performance of wal archive min/max provided by the info command.", "body": "Suggested by Jens Wilke." }, { "commit": "adcc7cb9543714b420d429512f259d14ea265acf", "date": "2017-02-13 09:58:50 -0500", "subject": "Fixed a race condition in parallel archiving.", "body": "Creation of new paths generated an error when multiple processes attempted to do so at the same time." }, { "commit": "bc2bb040c5bf75cb56ec3fa7a00a993d33371a99", "date": "2017-02-13 09:57:10 -0500", "subject": "Fixed an issue where an archive-push error would not be retried.", "body": "It would instead return errors to PostgreSQL indefinitely (unless the .error file was manually deleted)." }, { "commit": "12041f73e2a4f4c91c068b7f43f7ff52f24c72f5", "date": "2017-02-12 21:09:34 -0500", "subject": "Fixed syntax from d68b48d that was not backwards compatible to Perl 5.10." }, { "commit": "d68b48d19b53727bafd55e97cde41db309763daa", "date": "2017-02-11 10:26:54 -0500", "subject": "Improved support for --require option and section depends now default to the previous section." }, { "commit": "498f52da094832d5ffe84ea0eed121acf46f360c", "date": "2017-02-10 10:22:05 -0500", "subject": "Improvements to documentation engine:", "body": "* Documentation can now be built with reusable blocks to reduce duplication.\n* Added ability to pass options to containers within the documentation.\n* Add proper tag to slightly emphasize proper nouns." }, { "commit": "aab763d558b586f0ce4f77a8cc67c2c7e9db07eb", "date": "2017-02-08 09:37:17 -0500", "subject": "Additional notes on the async spool directory." }, { "commit": "b813bfaff68fa9d2e1271b3f6fcf61955e24de3e", "date": "2017-02-08 08:41:43 -0500", "subject": "Updated async archiving documentation.", "body": "More accurately describe how the new method works and how it differs from the old method." }, { "commit": "41eba95155b1fab4c5f98dab3327c1563968fcab", "date": "2017-02-05 20:23:03 -0500", "subject": "v1.13: Parallel Archiving, Stanza Create, Improved Info and Check" }, { "commit": "0daeace1cd2e2ef55c3df3e43b4b622418fe625b", "date": "2017-02-05 19:58:52 -0500", "subject": "Fixed alignment issues with multiline logging." }, { "commit": "cded35791d160a6fc2f99daaaaabf0db21c9bb38", "date": "2017-02-05 10:59:49 -0500", "subject": "Added --log-timestamp option.", "body": "Allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation." }, { "commit": "55feae645e92eda928ad0eb5be74431807f3c604", "date": "2017-02-05 10:37:54 -0500", "subject": "Log file banner is not output until the first log entry is written.", "body": "Suggested by Jens Wilke." }, { "commit": "2237c3fc1bafd620f5cafda4d38acbfc7b490aa5", "date": "2017-02-05 10:35:53 -0500", "subject": "Added documentation for parallel archive-push." }, { "commit": "8b5f37c2a87b221fe40f1883f6583ee31ad977d7", "date": "2017-02-05 10:31:29 -0500", "subject": "Added archive and backup WAL ranges to the info command." }, { "commit": "1666ee177f059c3566e531fa697cb229eb68c0c4", "date": "2017-02-02 20:44:42 -0500", "subject": "Fixed --no-online tests to suppress expected errors." }, { "commit": "efdf64506ae075cadc24de0805c8238478dfd28f", "date": "2017-02-02 20:42:45 -0500", "subject": "Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations.", "body": "Suggested by Michael Vitale." }, { "commit": "3e54aad88f473db619dc7546cf144c3987224943", "date": "2017-01-31 10:38:45 -0500", "subject": "Removed --lock option.", "body": "This option was introduced before the lock directory could be located outside the repository and is now obsolete." }, { "commit": "7418559a6751959727836e462002a14c41461198", "date": "2017-01-31 10:36:59 -0500", "subject": "Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination." }, { "commit": "9b92edddbe506c3ebaa6f970e62270facdcc5a27", "date": "2017-01-30 17:06:35 -0500", "subject": "Remove Intel-specific optimization from C library build flags.", "body": "Contributed by Adrian Vondendriesch." }, { "commit": "eb1a1e53080375d947b94e58f917bc2816528264", "date": "2017-01-30 16:22:12 -0500", "subject": "Missed expect logs from commit 455c604." }, { "commit": "34e4cfaeec473ba1c90f8c203f82b1146510deee", "date": "2017-01-30 15:48:10 -0500", "subject": "Fixed minor typos." }, { "commit": "455c6048ee4794a2d334067e4651460b3ad2b416", "date": "2017-01-30 14:00:40 -0500", "subject": "C Library builds immune to clock differences between VM and host." }, { "commit": "6b99d770b5203680ac53813d9c3c73f476d895bb", "date": "2017-01-30 13:59:00 -0500", "subject": "Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN." }, { "commit": "43ada9fb33b51479b959ea6a93fcb53fa0803e25", "date": "2017-01-27 11:02:27 -0500", "subject": "Improved, multi-process implementation of asynchronous archiving." }, { "commit": "2a9ba877e1dbce234f1b44d8f3163ce38f9c1781", "date": "2017-01-27 10:06:16 -0500", "subject": "Refactor process IO and process master/minion code out from the common protocol code." }, { "commit": "0163d3b3e02f22179f9854246e6f5009e8ff4e40", "date": "2017-01-27 10:04:41 -0500", "subject": "Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads." }, { "commit": "2553c7a9982f630226923ec14b0f56350607db44", "date": "2017-01-27 10:02:00 -0500", "subject": "Represent .gz extension with a constant." }, { "commit": "f3ccf3b897e9bab58e2ab1f15dabf54fef9b34db", "date": "2017-01-27 09:56:26 -0500", "subject": "Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic." }, { "commit": "6620594b7724f5950b20c1c103a2b0fee194e816", "date": "2017-01-27 09:53:46 -0500", "subject": "Various improvements in Lock.pm:", "body": "* Allow for locks to be taken more than once in the same process without error.\n* Lock directories can be created when more than one directory level is required.\n* Clean up optionValid()/optionTest() logic in Lock.pm." }, { "commit": "18db178ac3a03540bcaf4bd5c23f6a34ab419f55", "date": "2017-01-27 09:42:30 -0500", "subject": "Various improvements to the test suite:", "body": "* Allow logging to be suppressed via logDisable() and logEnable().\n* Added more flexibility in initializing and cleaning up after modules and tests.\n* testResult() suppresses logging and reports exceptions.\n* testException() allows messages to be matched with regular expressions.\n* Refactor name/locations of common modules that setup test environments." }, { "commit": "e876a222fcb68fb4a95455113d3378d5e6b81c7a", "date": "2017-01-24 14:58:55 -0500", "subject": "Fixed an issue where protocol mismatch errors did not output the expected value." }, { "commit": "b6fa146f9b1b9e622f456d73585423538c04ad17", "date": "2017-01-22 19:29:56 -0500", "subject": "Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2.", "body": "Contributed by blogh." }, { "commit": "7d1347cdec4f4c563d5a6fa0a1d66297a2742f0f", "date": "2017-01-10 19:59:32 -0500", "subject": "Split the archive-get and archive-push commands into separate modules." }, { "commit": "155c8081632d1081da8b7e94ebd3a7d422f0f280", "date": "2017-01-10 19:54:51 -0500", "subject": "Split the check command out of the Archive.pm module." }, { "commit": "b58045f5757b03a1e15e1955402917b9003c5692", "date": "2017-01-10 19:51:20 -0500", "subject": "Moved the Archive modules to the Archive directory." }, { "commit": "2ab63f27b23b8932e9685c5179284fddbb6cf49c", "date": "2017-01-10 13:12:53 -0500", "subject": "C Library builds only run when C library has actually changed." }, { "commit": "0b4055e588331ec70d789ced6e5685f54def197b", "date": "2017-01-10 13:08:03 -0500", "subject": "Moved File->manifest() into the FileCommon.pm module." }, { "commit": "0e4f51c27110f2d3eb6f3d1d15dc3f8ac4675e34", "date": "2017-01-09 20:49:04 -0500", "subject": "Added integration for testing coverage with Devel::Cover." }, { "commit": "39744a4f1dbbe4e593bebaa37a6be93dae0da214", "date": "2017-01-05 15:19:56 -0500", "subject": "Fixed an issue where a missing user/group on restore could cause an \"uninitialized value\" error in File->owner().", "body": "Reported by Leonardo Avellar." }, { "commit": "4ff2714bf00063534ddf90d4995f9f1abcb60c99", "date": "2017-01-04 18:39:50 -0500", "subject": "Return proper error code when unable to convert a relative path to an absolute path.", "body": "Suggested by Yogesh Sharma." }, { "commit": "c8dfc673b87bc04f87e7e3c01f5e227a71f415d8", "date": "2017-01-04 18:31:16 -0500", "subject": "Moved tests into new modules to better reflect actual usage." }, { "commit": "e3d63c0252bfbd0cccb746d405c7e3cdeb8f75c1", "date": "2017-01-04 18:29:13 -0500", "subject": "Allow multiple --module, --test, and --run options to be used for test.pl." }, { "commit": "be337c951aee0121dc3d1a251bdb5218d72769a0", "date": "2017-01-04 10:12:29 -0500", "subject": "Improvements to stanza-create:", "body": "* Force only required when a change is needed for backup.info or archive.info.\n* Identical files are not overwritten." }, { "commit": "b91ca113298104a3c718db93a1dad0fa7336c8c6", "date": "2017-01-04 10:09:21 -0500", "subject": "Added expect log expression to replace year subdirectories in backup.history." }, { "commit": "314ef2c8b317c7d56ae2770231e49748183fdd96", "date": "2017-01-04 10:05:43 -0500", "subject": "Update LICENSE.txt for 2017." }, { "commit": "d5ee7d3535ea3961db2cb73120ee94632463e737", "date": "2016-12-23 16:50:02 -0500", "subject": "Added documentation to the User Guide for the process-max option.", "body": "Contributed by Cynthia Shang." }, { "commit": "83beab7ec368ffebb5d8526e06eb65a9abd568c2", "date": "2016-12-23 11:43:26 -0500", "subject": "Refactor File module to improve test coverage.", "body": "Added unit tests for low-level functions in the BackupCommon module." }, { "commit": "5d3473b52dfe1f67d557d434a9ee373b6317dcfc", "date": "2016-12-23 08:30:34 -0500", "subject": "Refactor File module to improve test coverage." }, { "commit": "6b2666a9d7ee179e237a4ad34117024f2ed62f7f", "date": "2016-12-23 08:22:59 -0500", "subject": "Split test modules into separate files.", "body": "Makes the code more maintainable. Tests are dynamically loaded by name rather than requiring an if-else block." }, { "commit": "56144c99c0570daf7f1dba85968b79cbc3a84b15", "date": "2016-12-21 14:35:20 -0500", "subject": "Improved check command to run on a standby.", "body": "Only basic checks are done because pg_switch_xlog() cannot be executed on a replica." }, { "commit": "974a02dbe41372d28d2c234ebea8a8ac6352865a", "date": "2016-12-20 16:52:20 -0500", "subject": "Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory.", "body": "Contributed by Cynthia Shang." }, { "commit": "aecc0f737e40dfb7304753e37612b11402e4c51c", "date": "2016-12-19 14:40:22 -0500", "subject": "Fixed a few directory syncs that were missed for the --repo-sync option." }, { "commit": "4e1b74688df11f31e2d5caf76bf7c1d53623ae45", "date": "2016-12-13 08:22:36 -0500", "subject": "Fixed const assignment giving compiler warning in C library.", "body": "Fixed by Adrian Vondendriesch." }, { "commit": "8e3464da805fc0975b6cf25ecb9ba16146b45c9e", "date": "2016-12-12 19:18:27 -0500", "subject": "v1.12: Page Checksums, Configuration, and Bug Fixes" }, { "commit": "36a5349b1c6b6bcd513464029733b62fe4200759", "date": "2016-12-12 18:54:07 -0500", "subject": "Added the --checksum-page option.", "body": "This option allows pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster." }, { "commit": "6dd0829033fb600e0aa5d9c60d3315e65a6bb289", "date": "2016-12-12 18:47:17 -0500", "subject": "File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process." }, { "commit": "b4884e5a0bdb572aeb766f6d5f1be8b159de5ea7", "date": "2016-12-10 14:05:28 -0500", "subject": "Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database.", "body": "Reported by Michael Vitale." }, { "commit": "1a5fa920e6baec14fc092d202839ab16d403b7fb", "date": "2016-12-10 09:15:20 -0500", "subject": "Improved parameter/result logging in debug/trace functions." }, { "commit": "e61ef6ebce004ebacf95796acae835845b25758e", "date": "2016-12-10 09:13:55 -0500", "subject": "Add more realistic data files to synthetic backup and restore tests." }, { "commit": "eff7b46eb1abb0d80de01730e6834f39f450f890", "date": "2016-12-10 09:11:12 -0500", "subject": "Various improvements to validation of backup and restore." }, { "commit": "b45e0d81898f21f8d65f029e382c3d202a3b0e7a", "date": "2016-12-10 09:09:16 -0500", "subject": "Fixed issues in the protocol layer when additional message fields were added." }, { "commit": "f818901c0e619b50afa50412d246d0b1771fac11", "date": "2016-12-10 09:06:45 -0500", "subject": "Added the --repo-sync option to allow directory syncs in the repository to be disabled.", "body": "This is for file systems that do not support them, e.g. NTFS" }, { "commit": "36378c47bd3058b3986bf2913539724965c39e56", "date": "2016-12-04 18:11:23 -0500", "subject": "Added Retention to QuickStart section." }, { "commit": "896984848bf46f85893d4f05cf06534b4fe49327", "date": "2016-12-04 17:51:00 -0500", "subject": "Improved errors returned from child processes by removing redundant error level and code." }, { "commit": "817592837ce08d412dc97e3cfeb543590a83d04f", "date": "2016-12-04 14:44:53 -0500", "subject": "Added a predictable log entry to signal that a command has completed successfully.", "body": "For example a backup ends successfully with: INFO: backup command end: completed successfully." }, { "commit": "f823a25ac20fac867038a4797d96c26e27f8388b", "date": "2016-12-04 09:25:40 -0500", "subject": "Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error.", "body": "* The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error.\n* Removed erroneous --no-config option in help test module.\n* Changed the --no-fork test option to --fork with negation to match all other boolean parameters." }, { "commit": "d18cd7ad0faa80c4ceacd708d0ae1e964f170a7a", "date": "2016-12-03 18:01:17 -0500", "subject": "Fixed an issue that prevented errors from being output to the console before the logging system was initialized.", "body": "That is, while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not." }, { "commit": "2e01e6b9e1a9c598715f7ad86177930fb3963e56", "date": "2016-12-03 17:34:51 -0500", "subject": "Improved consistency and flexibility of the protocol layer by using JSON for all messages." }, { "commit": "b7f17382002046b7f52fdd874025428a649713a6", "date": "2016-12-03 10:28:08 -0500", "subject": "Code cleanup in preparation for improved stanza-create command.", "body": "Contributed by Cynthia Shang." }, { "commit": "005fc08795c0bd299f999eff665b4eb4e789b2d2", "date": "2016-12-03 10:23:26 -0500", "subject": "Added the --repo-link option.", "body": "Allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots." }, { "commit": "6ae4d7de81cfdb8982f3bde0e920fb2a76250208", "date": "2016-12-03 09:56:05 -0500", "subject": "Fixed a bug where internal symlinks were not being created for tablespaces in the repository.", "body": "This issue was only apparent when trying to bring up clusters in-place with filesystem snapshots and did not affect normal backup and restore." }, { "commit": "22cd29771fc87d98bc7269aad1e30b7c3d7de425", "date": "2016-12-01 09:33:14 -0500", "subject": "Update control and wal test files to 9.4 with matching system identifiers.", "body": "Contributed by Cynthia Shang." }, { "commit": "a850335015207c95a05b4219997d025bcc854e1f", "date": "2016-11-30 14:36:39 -0500", "subject": "Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet()." }, { "commit": "09df07efb7496db9ac426da243acc636a628d2bb", "date": "2016-11-30 14:23:05 -0500", "subject": "For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process.", "body": "The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore." }, { "commit": "4e9f8da9a6c85b8f486d4207d637f9d0b14b3049", "date": "2016-11-30 14:18:12 -0500", "subject": "Improved IO->bufferRead to always return requested number of bytes until EOF." }, { "commit": "e951c4f9c267a7a860c22b29fc1208c3d96f7c89", "date": "2016-11-30 14:15:11 -0500", "subject": "Abstracted code to determine which database cluster is the master and which are standbys.", "body": "Contributed by Cynthia Shang." }, { "commit": "d101e9c84e1e9bc7339a3d52a57964faf3aac51e", "date": "2016-11-30 14:03:58 -0500", "subject": "Improved exception handling in file unit tests." }, { "commit": "4df3eabf6d5acda7e7095933ea7f85ce9c618151", "date": "2016-11-22 17:31:27 -0500", "subject": "Builds in release.pl now remove all docker containers to get consistent IP address assignments." }, { "commit": "dbd16d25b97ba2d2cd86bcfb35e1ca41a2323c33", "date": "2016-11-22 17:29:24 -0500", "subject": "Fixed regression in section links introduced in v1.10.", "body": "This was introduced in an effort to make the html output XHTML 1.0 STRICT compliant because the standard does not allow / characters in anchors.\n\nHowever, the / characters were changed to . in the anchors but not in the links. For now revert the anchors to / so further though can be given to this issue." }, { "commit": "c9b49b0d7e1f0cc612511c1691dcde89ec0cee92", "date": "2016-11-17 16:35:11 -0500", "subject": "Doc engine improvements.", "body": "Bug Fixes:\n\n* Fixed and issue that suppressed exceptions in PDF builds.\n\nFeatures:\n\n* Allow a source to be included as a section so large documents can be broken up.\n* Added section link support to Markdown output.\n* Added list support to PDF output.\n* Added include option to explicitly build sources (complements the exclude option though both cannot be used in the same invocation).\n* Added keyword-add option to add keywords without overriding the default keyword.\n* Added debug option to doc.pl to easily add the debug keyword to documentation builds.\n* Added pre option to doc.pl to easily add the pre keyword to documentation builds.\n\nRefactoring:\n\n* Improvements to markdown rendering.\n* Remove code dependency on project variable, instead use title param." }, { "commit": "54b1a784b55fdee915b550e5151f20dabea4e67c", "date": "2016-11-17 09:57:59 -0500", "subject": "v1.11: Bug Fix for Asynchronous Archiving Efficiency" }, { "commit": "dbb9d80dab5a69130b34d1949a4aec889a49b758", "date": "2016-11-17 09:39:21 -0500", "subject": "Fixed an issue where asynchronous archiving was transferring one file per execution instead of transferring files in batches.", "body": "This regression was introduced in v1.09 and affected efficiency only, all WAL segments were correctly archived in asynchronous mode." }, { "commit": "06cac30c33733d3894a3143a6866a9dbd3972199", "date": "2016-11-08 10:47:47 +0000", "subject": "v1.10: Stanza Creation and Minor Bug Fixes" }, { "commit": "9d9c438f59461e17383cd55dd067a467132ba2de", "date": "2016-11-07 17:06:35 +0200", "subject": "Doc engine improvements.", "body": "Bug Fixes:\n\n* Fixed missing variable replacements.\n* Removed hard-coded host names from configuration file paths.\n\nDocumentation Features:\n\n* Allow command-line length to be configured using cmd-line-len param.\n* Added compact param to allow CSS to be embedded in HTML file.\n* Added pretty param to produce HTML with proper indenting.\n* Only generate HTML menu when required and don't require index page.\n* Assign numbers to sections by default.\n* VM mount points are now optional." }, { "commit": "dd621081b95e5dcf737807053346b7c89e9f962d", "date": "2016-11-07 16:37:16 +0200", "subject": "Fixed an issue where tablespace paths with the same prefix would cause an invalid link error.", "body": "Reported by Nikhilchandra Kulkarni." }, { "commit": "21ca4127026e80f93664d78fcf1e81d8dda0d25d", "date": "2016-11-05 19:22:30 +0200", "subject": "Fixed an issue where a backup could error if no changes were made to a database between backups and only pg_control changed." }, { "commit": "f43e5bc52d31b6f1efe3b92b44752aa49ab1645a", "date": "2016-11-04 13:56:26 +0200", "subject": "Removed extraneous use lib directives from Perl modules.", "body": "Suggested by Devrim Gündüz." }, { "commit": "171c5835bbed34e118e554a291849baa36ecfce0", "date": "2016-11-03 17:48:59 +0200", "subject": "Another expect log update for stanza-create feature." }, { "commit": "26f76762b5ca80bb2ff6c7c5c8e2da11f825420d", "date": "2016-10-17 10:03:42 +0100", "subject": "Expect log updates for stanza-create feature." }, { "commit": "8d1880ca4a15567778b1c295451b3bb62886cc7b", "date": "2016-10-14 12:21:47 +0100", "subject": "Added the stanza-create command to formalize creation of stanzas in the repository.", "body": "Contributed by Cynthia Shang." }, { "commit": "1e0ca3056a84abb07214b54ea2945fcdacd65000", "date": "2016-10-10 17:35:58 -0400", "subject": "v1.09: 9.6 Support, Configurability, and Bug Fixes" }, { "commit": "49a5e8a3f59716cf8f73b458f4cd0c5e47175e48", "date": "2016-10-07 08:51:10 -0400", "subject": "Fixed a remote timeout.", "body": "The timeout occurred when a local process generated checksums (during resume or restore) but did not copy files, allowing the remote to go idle." }, { "commit": "41669a826ee48c7bbcd7a6c2ef849093d3287b6a", "date": "2016-10-05 21:22:42 -0400", "subject": "Added --dev option to doc.pl to easily add dev keyword to documentation builds." }, { "commit": "16d0e767ef40f22d83166c88bc7177ff01e7fb3c", "date": "2016-10-05 21:15:10 -0400", "subject": "Set application_name to \"pgBackRest [command]\" for database connections.", "body": "Suggested by Jens Wilke." }, { "commit": "0a4099fff87458265a5a14006967c48c3cf912bf", "date": "2016-10-05 21:13:29 -0400", "subject": "Clarified error message when unable to acquire pgBackRest advisory lock to make it clear that it is not a PostgreSQL backup lock.", "body": "Suggested by Jens Wilke." }, { "commit": "5dc801d59db9c8ce2f0872deb13b532b32af80ee", "date": "2016-10-05 09:47:34 -0400", "subject": "Fixed an issue where the async archiver would not be started if archive-push did not have enough space to queue a new WAL segment.", "body": "This meant that the queue would never be cleared without manual intervention (such as calling archive-push directly). PostgreSQL now receives errors when there is not enough space to store new WAL segments but the async process will still be started so that space is eventually freed." }, { "commit": "2a18674111d8ee01e15960dd1fcd0da3282bb38c", "date": "2016-10-05 09:09:30 -0400", "subject": "Added the log-level-stderr option.", "body": "Controls whether console log messages are sent to stderr or stdout. By default this is set to warn which represents a change in behavior from previous versions, even though it may be more intuitive. Setting log-level-stderr=off will preserve the old behavior." }, { "commit": "d81198e65e2cca8272d52cc586dcc76016b91f2d", "date": "2016-10-05 08:55:54 -0400", "subject": "Added the cmd-ssh to allow the ssh client to be specified.", "body": "Suggested by Jens Wilke." }, { "commit": "6f34fbc6957f16719749372d78c014abe9b8a5f7", "date": "2016-10-03 09:15:29 -0400", "subject": "Vagrant build improvements:", "body": "* Minimize TeXLive package list to save time during VM builds.\n* General cleanup and added timestamps.\n* Pin to specific box version." }, { "commit": "07898d33e332aa892e406d2df729c5d900110d41", "date": "2016-10-03 07:28:44 -0400", "subject": "Fixes for archive checks added in 5d033d0:", "body": "* Don't execute pg_is_in_recovery() on PostreSQL < 9.0.\n* Don't check archive_mode or archive_command on the standby." }, { "commit": "1491862716aeff6c3a9434b207dcdaf7962ce387", "date": "2016-10-01 13:39:44 -0400", "subject": "Regression tests can now be run as any properly-configured user, not just vagrant." }, { "commit": "198e498b41e85dfcd3698bfb5a79907f41ca5656", "date": "2016-09-29 19:09:19 -0400", "subject": "Non-exclusive backups will automatically be used on PostgreSQL 9.6.", "body": "This feature carries over from 1.08 but has now been tested with the official 9.6 release." }, { "commit": "156859c5d519b5bb757412a805208b78a46d3832", "date": "2016-09-29 19:07:46 -0400", "subject": "Update CentOS/Debian package definitions." }, { "commit": "3e4ca153cea6750a3efbf1b1a319623afcfee86a", "date": "2016-09-29 18:26:32 -0400", "subject": "Fixed broken vm-max option in test.pl." }, { "commit": "5d033d028c54142c872ca4ce8cef6ac05e9ec55a", "date": "2016-09-28 19:45:33 -0400", "subject": "Archive validation improvements:", "body": "* Fixed error message to properly display the archive command when an invalid archive command is detected.\n* Check that archive_mode is enabled when archive-check option enabled." }, { "commit": "48f968b344138f6309f1203f26ecce7198d453b0", "date": "2016-09-28 12:29:29 -0400", "subject": "Added archive-timeout option documentation to the user guide.", "body": "Contributed by Cynthia Shang." }, { "commit": "76673a8e62636a1cbcd364b4252130b6b5a83bd0", "date": "2016-09-27 18:01:38 -0400", "subject": "Fixed the check command to prevent an error message from being logged if the backup directory does not exist.", "body": "Fixed by Cynthia Shang." }, { "commit": "25f40f9b15f987989b8286da47c631d6e6246abf", "date": "2016-09-17 11:53:28 -0400", "subject": "Log improvements:", "body": "* pgBackRest version number included in command start INFO log output.\n* Process ID logged for local process start/stop INFO log output.\n* Fixed missing expect output for help module." }, { "commit": "d98df8c8cff41970a5549328722d90cbc7f8f19d", "date": "2016-09-14 17:36:43 -0500", "subject": "v1.08: Bug Fixes and Log Improvements" }, { "commit": "69c6afb1dfa3c494f3fd8c3c5d98a8ab5e10a1e2", "date": "2016-09-14 16:40:13 -0500", "subject": "Cache file log output until the file is created to create a more complete log." }, { "commit": "f54145c0ccd4676eebd7184edee4746c02981bfe", "date": "2016-09-14 16:37:07 -0500", "subject": "Fixed timeout issues.", "body": "* Fixed an issue where local processes were not disconnecting when complete and could later timeout. (Reported by Todd Vernick.)\n* Fixed an issue where the protocol layer could timeout while waiting for WAL segments to arrive in the archive. (Reported by Todd Vernick.)" }, { "commit": "e08b56a4e33436d8fdff11020897fc8f73bbaa57", "date": "2016-09-14 16:30:57 -0500", "subject": "Show Process ID in log output instead of filtering it out with the timestamp." }, { "commit": "f253a4d85ce47d5706123ce15c460e068e983595", "date": "2016-09-08 17:29:26 -0400", "subject": "Suppress \"dpkg-reconfigure: unable to re-open stdin: No file or directory\" warning in Vagrant VM build.", "body": "Contributed by John Harvey." }, { "commit": "a8590c9aded9a6603eb0ed64ac1a5792f700e22e", "date": "2016-09-07 08:29:21 -0400", "subject": "v1.07: Thread to Process Conversion and Bug Fixes" }, { "commit": "d2add293c7959d8b1919520f98202f07a0c1cba0", "date": "2016-09-07 08:07:37 -0400", "subject": "Archive retention improvements:", "body": "* Fixed an issue where retention-archive was not automatically being set when retention-archive-type=diff, resulting in a less aggressive than intended expiration of archive.\n* Additional warnings when archive retention settings may not have the intended effect or would allow indefinite retention.\n* Closed #235: \"Retention policy question\" by adding documentation for archive retention." }, { "commit": "0d5a1eaf9efc3e051221cc32b373139cc1a274a6", "date": "2016-09-07 07:20:07 -0400", "subject": "The archive-start and archive-stop settings are now filled in backup.manifest." }, { "commit": "cc9c8819eee1257b08f44eaf43597f5e97833932", "date": "2016-09-06 14:01:39 -0400", "subject": "Make uid/gid selection for containers dynamic." }, { "commit": "cedfcbd4be9be7c37d211731f1b10f5e0d50e25a", "date": "2016-09-06 11:02:01 -0400", "subject": "Update Vagrantfile:", "body": "* Change box provider to bento (hoping for better stability with Docker).\n* Install texlive from Debian packages." }, { "commit": "dd8d7812170c4312654dd12d2c742c1963653a92", "date": "2016-09-06 09:44:50 -0400", "subject": "Safely check eval blocks and convert $@ to $EVAL_ERROR." }, { "commit": "a701309453a7df8f8808f6739e06e357ec0bf63f", "date": "2016-09-06 09:35:02 -0400", "subject": "Converted Perl threads to processes." }, { "commit": "4026ad649d4383c500bd40717e2fb177d01a7692", "date": "2016-09-06 09:15:22 -0400", "subject": "Refactor of protocol minions in preparation for the new local minion." }, { "commit": "f71073c11f413f99f35b3c253f35a0aaed34edfb", "date": "2016-09-04 19:29:30 -0400", "subject": "Improved temp file handling for archiving." }, { "commit": "56ee666e69302b291ec5cc7d04caa25c651d7bfb", "date": "2016-09-04 09:27:56 -0400", "subject": "Suppress TOC for unsupported versions of pgBackRest.", "body": "The intent is to tidy the releases page and nobody should care much about the old, unsupported releases," }, { "commit": "8f61473955e212b605088cfe387c625b40c9863c", "date": "2016-09-04 09:25:20 -0400", "subject": "Improve ASSERT error handling." }, { "commit": "f986e6ae33a5c87da7a8a5f5e5a11b8d4637a172", "date": "2016-09-04 09:22:53 -0400", "subject": "File module improvements.", "body": "* Remove obsolete thread index variable from File() module.\n* Changed temporary file names to consistently use .pgbackrest.tmp." }, { "commit": "bcdb5cdac80372536539c46e12b3d1a5d244f5a9", "date": "2016-09-04 09:19:44 -0400", "subject": "Fixed a issue where tablespaces were copied from the master during standby backup." }, { "commit": "2feaaf225e2200fd92ad7d12a1281080cbb5603f", "date": "2016-09-04 09:13:13 -0400", "subject": "Exclude contents of $PGDATA/pg_replslot directory." }, { "commit": "316da4421ec0780963ab8a32d2fee141ff50122d", "date": "2016-09-03 18:34:38 -0400", "subject": "Experimental support for non-exclusive backups in PostgreSQL 9.6 rc1." }, { "commit": "634f5c6829ce0d4ece466ac2d4c29215b13d6f89", "date": "2016-08-29 14:09:37 -0400", "subject": "Closed #250: Fixed the check command so backup info is checked remotely and not just locally.", "body": "Fixed by Cynthia Shang." }, { "commit": "f6c24039e1d360b9be9b39ed77488212167570b2", "date": "2016-08-29 09:43:22 -0400", "subject": "Fixed minor documentation reproducibility issues related to binary paths." }, { "commit": "be77136eaeca4d0943bd00280afcbe3f5a53a096", "date": "2016-08-25 11:49:09 -0400", "subject": "v1.06: Backup from Standby and Bug Fixes" }, { "commit": "c9bdf6a9ae2f2657ba06eb97a7fbaba38251ef1c", "date": "2016-08-25 11:27:00 -0400", "subject": "Fixed timeout issue.", "body": "The protocol-timeout option was not automatically increased when the db-timeout option was increased." }, { "commit": "5ada189a92813a57b9050dec54ba3ddf69f68bf0", "date": "2016-08-25 11:25:46 -0400", "subject": "Backup from a standby cluster.", "body": "A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master." }, { "commit": "ecf827579edc9dc620a27985c0bd75a1d8cb3d23", "date": "2016-08-25 10:04:46 -0400", "subject": "Improve host tag rendering." }, { "commit": "d0b6f78b20cb7c74b43717a97242fce7160d2604", "date": "2016-08-24 12:39:27 -0400", "subject": "More flexible configuration for databases", "body": "Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used." }, { "commit": "cd6278e5af22119cb0c4e3714dc2a66d3cd219c0", "date": "2016-08-24 12:27:48 -0400", "subject": "Revert some backup exclusions until they have been tested more thoroughly." }, { "commit": "9c13ca1d091e38dddcd38656fc8af748e8c19675", "date": "2016-08-24 12:01:08 -0400", "subject": "mprove backup log messages to indicated which host the files are being copied from." }, { "commit": "f1412baccf9ab4b5015d839ae0b598d92dd32586", "date": "2016-08-16 09:35:16 -0400", "subject": "Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup.", "body": "These include (depending on the version where they were introduced): pgsql_tmp, pg_dynshmem, pg_notify, pg_replslot, pg_serial, pg_snapshots, pg_stat_tmp, pg_subtrans. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done." }, { "commit": "332055971e29beb031276d7ce32ad4827dabf6d2", "date": "2016-08-15 20:54:17 -0400", "subject": "Added hints to error message when relative paths are detected in archive-push or archive-get." }, { "commit": "b25f10949a016cc4dc6d2e3ca1c8a63f764059c9", "date": "2016-08-15 20:15:17 -0400", "subject": "Fixed #229: Check fails on target db host.", "body": "Options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised." }, { "commit": "88d9bd3d37475c907a4fffdbf907deafc0b44bc3", "date": "2016-08-15 17:44:51 -0400", "subject": "Improvements in Db module.", "body": "* Separated out connect() function.\n* Allow executeSql() calls that do not return data.\n* Improve error handling." }, { "commit": "1e0f15f4253319ff141455a46d597d2f387c8ff1", "date": "2016-08-15 17:23:37 -0400", "subject": "Improve error message for links that reference links in manifest build." }, { "commit": "f9fa1270b24e2511717d4b4a3ddbee861bb32760", "date": "2016-08-15 17:11:45 -0400", "subject": "Fixed #236: Recursive user tablespace symlink.", "body": "A tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely." }, { "commit": "35931305d71186935534b26d0b08c25946decd58", "date": "2016-08-15 16:48:24 -0400", "subject": "Update control version for PostgreSQL beta4." }, { "commit": "17b79d62799ac82876b71d79a57d5e5259a2431d", "date": "2016-08-11 22:35:24 -0400", "subject": "Database version refactoring.", "body": "* Refactor db version constants into a separate module.\n* Update synthetic backup tests to PostgreSQL 9.4." }, { "commit": "bff262ac4791fae834f13ee4c422da8a4e7cdb1d", "date": "2016-08-11 17:32:28 -0400", "subject": "Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__." }, { "commit": "9f19e13095628bf1b654db08ea3eec883c2cc5cd", "date": "2016-08-09 10:06:21 -0400", "subject": "v1.05: Bug Fix for Tablespace Link Checking" }, { "commit": "34afe5e85b682803dec846bfe480c82d3b3ca05c", "date": "2016-08-09 09:05:27 -0400", "subject": "Fixed issue with tablespace link checking.", "body": "* Tablespace paths that had $PGDATA as a substring would be identified as a subdirectories of $PGDATA even when they were not.\n* Also hardened relative path checking a bit." }, { "commit": "af790be34f8cc58c39100f125cff6f539aa47946", "date": "2016-08-02 12:55:09 -0400", "subject": "Added documentation for scheduling backups with cron.", "body": "Contributed by Cynthia Shang." }, { "commit": "730262678a2f250076c1b772cdc4a457dd6708f4", "date": "2016-08-02 12:49:39 -0400", "subject": "Improved rendering of spaces in code blocks." }, { "commit": "f0c97289215174cb95d3b4df89cbf9e13ca03243", "date": "2016-08-02 11:38:12 -0400", "subject": "Moved the backlog from the pgBackRest website to the GitHub repository wiki.", "body": "Contributed by Cynthia Shang." }, { "commit": "277934447b0f4602260978ecb12d2e3d580632df", "date": "2016-07-30 09:42:35 -0400", "subject": "v1.04: Various Bug Fixes" }, { "commit": "f2b3dda647c9abc487a099876fa0b03f7cd4fa53", "date": "2016-07-30 08:49:26 -0400", "subject": "Fixed an issue where a remote could try to start its own remote.", "body": "This is a better approach than 93320b8 (reverted in this commit) because it ensures that the remote type will be none so any functions that utilize optionRemoteTypeTest will work correctly.\n\nThis bug was only an issue when backup-host was not properly configured on the database host." }, { "commit": "94a4cb4123c9a300d66e1f34b666bba84f4d727b", "date": "2016-07-30 08:43:38 -0400", "subject": "Disable control master for older OS versions where it is less stable." }, { "commit": "1b6b26956ab2d0ee7957d48b148b080376c0a3fe", "date": "2016-07-29 18:46:19 -0400", "subject": "Reduce the frequency that certain tests are run to save time in regression." }, { "commit": "ac23716d26aaa14470f1ff8307dfe6010e0c3c05", "date": "2016-07-29 18:46:19 -0400", "subject": "Enhancements to the protocol layer for improved reliability and error handling." }, { "commit": "b44786321889a2f7599c505c9f7b1b3726810dff", "date": "2016-07-29 18:46:19 -0400", "subject": "Exceptions are now passed back from threads as messages when possible rather than raised directly." }, { "commit": "93320b865e891701dea7383166f8bca6117d5efc", "date": "2016-07-29 18:45:37 -0400", "subject": "Fixed a issue where a remote could try to start its own remote." }, { "commit": "af5965a6ef9ebe76a1b5ff5c6a82fdaa5f4d3658", "date": "2016-07-29 18:45:23 -0400", "subject": "Fixed an invalid log call in lock routines." }, { "commit": "a3b8808f94cb8ca6931517002cf30c8b3987357b", "date": "2016-07-29 18:44:53 -0400", "subject": "Fixed an issue where the contents of pg_xlog were being copied if the directory was symlinked." }, { "commit": "ef33febfb73f449085d6f3da9b0bd6157560e52f", "date": "2016-07-29 18:43:59 -0400", "subject": "Temp files created during backup are now placed in the same directory as the target file." }, { "commit": "95bbc8ad544cac4a95a90f94de2ca8856811dc37", "date": "2016-07-29 18:02:16 -0400", "subject": "Fixed an issue where multi-threaded tests were not being run when requested." }, { "commit": "6e9d5f5bd31c835bf6aa7058c3c00a160d56b6c8", "date": "2016-07-29 14:02:11 -0400", "subject": "Fixed check command to throw an error when database version/id does not match that of the archive.", "body": "Fixed by Cynthia Shang." }, { "commit": "f95d4af64a9e7cee15e190704fa9b4522f08e31e", "date": "2016-07-26 18:50:58 -0400", "subject": "Closed #220: Installation documentation misinformation.", "body": "Updated information about package availability on supported platforms." }, { "commit": "ee80b7b255edeac3513781a6d77c84d916832baf", "date": "2016-07-26 18:30:25 -0400", "subject": "Added clarification on why the default for the backrest-user option is backrest." }, { "commit": "18447569906f915c7801e9ac07500e6d72c8482d", "date": "2016-07-26 17:40:42 -0400", "subject": "Closed #209: Don't use \"localtime\" for HTML-docs.", "body": "HTML footer dates are statically created in English in order to be reproducible." }, { "commit": "273d1c08d8cae647afe1b228a865de9a92177cd1", "date": "2016-07-26 16:57:38 -0400", "subject": "Improved remote error messages to identify the host where the error was raised." }, { "commit": "bc5c04ffe71faed09519e0bfff1f9ef579fc5aae", "date": "2016-07-26 16:39:01 -0400", "subject": "Updated control/catalog/WAL versions for 9.6 beta3." }, { "commit": "b6ac6b0f1c0d011ada945d9d027c67923a98173b", "date": "2016-07-26 16:28:43 -0400", "subject": "Suppress banners on SSH protocol connections." }, { "commit": "f31ec20fcb249027a4aa455a9193eee40842497d", "date": "2016-07-26 16:21:14 -0400", "subject": "Reduce calls to protocolGet() in backup/restore." }, { "commit": "98a67792ecd02c05511de7ec9c1830a200326ea7", "date": "2016-07-26 16:14:15 -0400", "subject": "Output lock file name when a lock cannot be acquired to aid in debugging." }, { "commit": "d96b1a0dbc86fab538bf1be53825675774e9cbc9", "date": "2016-07-26 16:12:38 -0400", "subject": "All remote types now take locks.", "body": "The exceptions date to when the test harness and pgBackRest were running in the same VM and no longer apply." }, { "commit": "095351f145003c62b24770e8a5ef96ec6125e624", "date": "2016-07-26 16:08:05 -0400", "subject": "Fixed #219: Unable to acquire restore lock.", "body": "Fixed an issue an where an extraneous remote was created causing threaded backup/restore to possibly timeout and/or throw a lock conflict." }, { "commit": "5893c3cd2e7e6dd77283b17d59a5e72c34f6dec7", "date": "2016-07-19 15:26:41 -0400", "subject": "Fixed an issue where db-path was not required for the check command so an assert was thrown when it was missing rather than a polite error message.", "body": "Reported by Michael Vitale." }, { "commit": "9ae6c01432ba66f5b2b743394af0ac00908a0ea9", "date": "2016-07-19 15:22:20 -0400", "subject": "Fixed a version checking issue in test.pl." }, { "commit": "6e528080650dda98109d2bc31c48197804a29eda", "date": "2016-07-02 11:08:25 -0400", "subject": "Added release.pl to make releases reproducible." }, { "commit": "1b62354dcb6cd815fc8a5b235b0aaf52eb85a692", "date": "2016-07-02 10:22:52 -0400", "subject": "v1.03: Check Command and Bug Fixes" }, { "commit": "186ca18659f42e1cc287f0737db0f2138fa3dc54", "date": "2016-07-02 09:19:10 -0400", "subject": "Update WAL/catalog versions for 9.5 beta 2." }, { "commit": "5df2eed72916bc68dbf2bb0d772b4a5e3fcfbe55", "date": "2016-07-02 09:07:48 -0400", "subject": "Order database versions during test.pl --vm-build." }, { "commit": "418039027b32c680680f83183dabb1f7e1adbcb4", "date": "2016-07-02 09:02:55 -0400", "subject": "Closed #213: Archive command should not be validate when archive-check=n" }, { "commit": "0f2eb424bb6d53f2c6619f70535706e649f7c9a9", "date": "2016-07-02 08:59:11 -0400", "subject": "Fix for container build in Vagrantfile." }, { "commit": "9f9396943f20e00157b53494bc074d355456b689", "date": "2016-06-30 19:38:28 -0400", "subject": "Added documentation for asynchronous archiving.", "body": "Also removed some obsolete sections." }, { "commit": "304d890f6c0ead8d49cf8f31fcef9f918904896a", "date": "2016-06-27 23:07:47 -0400", "subject": "Release note edits." }, { "commit": "9516db4ad660a4be29fd43b34ab9e0ef848daaf8", "date": "2016-06-27 20:37:25 -0400", "subject": "Closed #209: Don't use \"localtime\" for HTML-docs.", "body": "The release-date-static var has been added to allow the html footer to use the last release date instead of localtime()." }, { "commit": "cc2a8777d5efdaebfc17b053f747e8683a8ce3b1", "date": "2016-06-26 21:01:20 -0400", "subject": "User/group permissions improvements.", "body": "Improved handling of users/groups captured during backup that do not exist on the restore host. Also explicitly handle the case where user/group is not mapped to a name." }, { "commit": "b571218930c4ef5578e2c42f73c3e24bcfaba216", "date": "2016-06-26 20:53:45 -0400", "subject": "Minor refactor of version variable to a constant.", "body": "It had originally been designed to play nice with a specific packaging tool but that tool was never used." }, { "commit": "6ee485cc76ec05421ac4f45e50cd90911739163d", "date": "2016-06-24 13:16:07 -0400", "subject": "Added more keep-alives.", "body": "Keep-alives were also missing from multi-threaded backup/restore and single-threaded restore." }, { "commit": "bd25223fd6167ef2e1cc4e9788de46371a647572", "date": "2016-06-24 10:54:31 -0400", "subject": "Rename test paths for clarity.", "body": "This was worked out as part of the test suite refactor [c8f806a] but not committed with it because of the large number of expect logs changes involved. Keeping them separate made it easier to audit the changes in the refactor." }, { "commit": "c8f806a293813323affea96c73b1aa177a0ac15a", "date": "2016-06-24 08:12:58 -0400", "subject": "Major refactor of the test suite.", "body": "* Make the code more modular and object-oriented.\n* Multiple Docker containers can now be created for a single test to simulate more realistic environments." }, { "commit": "23a39118301384d939f431a344a724c8fc39f5e0", "date": "2016-06-24 08:06:20 -0400", "subject": "Stop using pg_xlogfile_name().", "body": "The pg_xlogfile_name() function is no longer used to construct WAL filenames from LSNs. While this function is convenient it is not available on a standby. Instead, the archive is searched for the LSN in order to find the timeline. If due to some misadventure the LSN appears on multiple timelines then an error will be thrown, whereas before this condition would have passed unnoticed." }, { "commit": "41b27c0456793694316daa882ffbd2209fd249c3", "date": "2016-06-22 18:01:18 -0400", "subject": "Protocol timeout option and keep-alive fixes.", "body": "* Fixed an issue where keep-alives could be starved out by lots of small files during multi-threaded operation and were completely absent during single-threaded operation when resuming from a previous incomplete backup.\n\n* Added the protocol-timeout option. Previously protocol-timeout was set as db-timeout + 30 seconds.\n* Failure to shutdown remotes at the end of the backup no longer throws an exception. A warning is still generated that recommends a higher protocol-timeout." }, { "commit": "4cff5bb0e69f03f047f8e8fe96a9ea336d7b4f31", "date": "2016-06-18 10:59:45 -0400", "subject": "Fixed pgBackRest config sections being blank in the output when not loaded from cache." }, { "commit": "012405a33b01a3f215a0ee610a2648c5f5afb0f6", "date": "2016-06-18 09:55:00 -0400", "subject": "Closed #207: Expire fails with unhandled exception.", "body": "* Fixed an issue where the expire command would refuse to run when explicitly called from the command line if the db-host option was set. This was not an issue when expire was run after a backup, which is the usual case.\n* Option handling is now far more strict. Previously it was possible for a command to use an option that was not explicitly assigned to it. This was especially true for the backup-host and db-host options which are used to determine locality." }, { "commit": "e988b96eceafd1619d2f8c51c94e38523a051f54", "date": "2016-06-18 09:22:26 -0400", "subject": "Fixed issue in doc info output with --require.", "body": "Section names were being repeated in the info output when multiple --require options depended on the same sections." }, { "commit": "cb32a8ab1f1aa2f71070cfd61c70d7fb4933abb4", "date": "2016-06-13 11:18:06 -0400", "subject": "VM build improvements.", "body": "* Properly set user env before calling test.pl --vm-build.\n* Remove squid proxy made obsolete by more efficient builds." }, { "commit": "7e45ed8366f8933a0e8f52b5777f6618d57766a2", "date": "2016-06-12 09:13:46 -0400", "subject": "Added check command.", "body": "The check command validates that pgBackRest is configured correctly for archiving and backups." }, { "commit": "7c9eaf7210181ca806c1e8b477bc8a0df8d4af3a", "date": "2016-06-12 09:01:56 -0400", "subject": "Add cmd-description tag.", "body": "Allow command summaries to be inserted anywhere in the documentation to avoid duplication." }, { "commit": "f1e92804cef8e2fa7f85d231aaf5d5710130bee9", "date": "2016-06-12 09:00:16 -0400", "subject": "Docker container improvements.", "body": "* Containers now use a squid proxy for apt/yum to speed builds.\n* Obsolete containers are removed by the --vm-force option.\n* Greatly reduced the quantity of Docker containers built by default. Containers are only built for PostgreSQL versions specified in db-minimal and those required to build documentation. Additional containers can be built with --db-version=all or by specifying a version, e.g. --db-version=9.4." }, { "commit": "3d761b726aeb243ffda53e6c8d122aa9d323ac32", "date": "2016-06-10 21:22:36 -0400", "subject": "Update TeX Live to 2016 version." }, { "commit": "5660f69859f02be53b328f7b7773b651ba4e13c1", "date": "2016-06-06 13:27:52 -0400", "subject": "Fixed DTDs not being loaded from test.pl." }, { "commit": "3f7ca876c255f7e3af772cf374ba9bc44a2be701", "date": "2016-06-04 12:24:31 -0400", "subject": "PostgreSQL version is now a variable to allow multi-version documentation." }, { "commit": "bfed78ef42599ea5c7e883b16efef973ee84b23a", "date": "2016-06-04 12:04:09 -0400", "subject": "New, consolidated implementation for link rendering." }, { "commit": "1ddfb1e453aef26590b649c77330d5206978917d", "date": "2016-06-04 11:40:33 -0400", "subject": "Fixed pgBackRest-specific xml that was loaded for non-pgBackRest projects." }, { "commit": "8ddfab0cbc646bfd11fcee1b4a47d3a3b617ae7a", "date": "2016-06-04 11:38:23 -0400", "subject": "Fixed DTD search path.", "body": "The search path that did not work properly when --doc-path was used." }, { "commit": "e796f563c4af7a265a1f8ecd94e7f3f795a78839", "date": "2016-06-03 20:07:28 -0400", "subject": "Add cmd-extra field.", "body": "Allow hidden options to be added to a command. This allows certain commands (like apt-get) to be forced during the build without making that a part of the documentation." }, { "commit": "36cf0b18f5c7db870f8b0338ee43e84c32ad4661", "date": "2016-06-03 18:59:12 -0400", "subject": "Update installation documentation.", "body": "* Recommended install location for pgBackRest modules is now /usr/share/perl5 since /usr/lib/perl5 has been removed from the search path in newer versions of Perl.\n\n* Added instructions for removing prior versions of pgBackRest." }, { "commit": "bfaee7380d6aa0a4a4573df2a6a28581537d169b", "date": "2016-06-02 11:10:24 -0400", "subject": "v1.02: Bug Fix for Perl 5.22" }, { "commit": "eaa981c5aae6b3d8a04fd2d518f180be0921ba4c", "date": "2016-06-02 09:32:56 -0400", "subject": "Added execution cache for document generation.", "body": "Added an execution cache so that documentation can be generated without setting up the full container environment. This is useful for packaging, keeps the documentation consistent for a release, and speeds up generation when no changes are made in the execution list." }, { "commit": "df6086bd24ce9d9322e5c048e5337719e9a43a0a", "date": "2016-06-02 09:25:12 -0400", "subject": "Added a man page to document generation." }, { "commit": "9a9f26a96f0365b0223231f74426602edb5caad9", "date": "2016-05-27 18:36:25 -0400", "subject": "Some wordsmithing in the introduction." }, { "commit": "174b16165b2cd555fd63a6516520900089d643ab", "date": "2016-05-26 16:57:35 -0400", "subject": "Replaced overzealous perl -cW check.", "body": "It failed on Perl 5.22 so replaced with with perl -cw." }, { "commit": "379ab1b3533c525d87b2dacd34ac7d3a9796305e", "date": "2016-05-26 15:04:18 -0400", "subject": "Improve log directory/file creation.", "body": "Log directory create and file open now using FileCommon functions which produce more detailed error messages on failure." }, { "commit": "e4e885d602781afd42f78c74378af2e78e0a4d27", "date": "2016-05-26 14:22:26 -0400", "subject": "Add notes for Ubuntu 16.04 upgrade." }, { "commit": "cf344c144f6c12cca2950429ce61ae075f69d902", "date": "2016-05-26 14:17:50 -0400", "subject": "Fixed absolute paths that were used for the PDF logo." }, { "commit": "b19143b6eaf0a04f921c791a7e62e2aa4f367547", "date": "2016-05-26 14:07:29 -0400", "subject": "Fixed syntax in doc code that was not compatible with Perl 5.2X." }, { "commit": "28f1c927e715b55aa4b5dcba936a6f6c03d46ed5", "date": "2016-05-26 14:03:32 -0400", "subject": "Upgrade doc/test VM to Ubuntu 16.04.", "body": "* This will help catch Perl errors in the doc code since it is not run across multiple OSs like the core and test code.\n* It is to be hoped that a newer kernel will make Docker more stable." }, { "commit": "3d437d9278488d25b30da828a173042774c0e009", "date": "2016-05-26 11:23:52 -0400", "subject": "Fix usage of sprintf() for Perl 5.22.", "body": "Parameters not referenced in the format string are no longer allowed." }, { "commit": "b1c779e606bf6d7e1a30c338694ae628fbac853b", "date": "2016-05-26 11:04:19 -0400", "subject": "Next development cycle." }, { "commit": "bfec2d2f89a0e746d145bd896b8f9c4ba02dde9d", "date": "2016-05-26 11:03:10 -0400", "subject": "Fixed release version test when the current version is development." }, { "commit": "c8d68bcf2d33b206634d0d537ef6d4bfb84229ba", "date": "2016-05-26 10:34:10 -0400", "subject": "More detailed release notes.", "body": "Release notes are now broken into sections so that bugs, features, and refactors are clearly delineated. An \"Additional Notes\" section has been added for changes to documentation and the test suite that do not affect the core code." }, { "commit": "0fb8bcbfb7107b83c345dac1858aab02eeeb4302", "date": "2016-05-26 09:34:03 -0400", "subject": "Lists can now be used outside of p and text tags.", "body": "This allows for more flexible document structuring." }, { "commit": "5a85122841ff38bea5b7b3d02a5d8ace40a4e81f", "date": "2016-05-26 09:20:55 -0400", "subject": "Moved change log to website.", "body": "The change log was the last piece of documentation to be rendered in Markdown only. Wrote a converter so the document can be output by the standard renderers. The change log will now be located on the website and has been renamed to \"Releases\"." }, { "commit": "e2094c3d312a69544cd144e4758508c7966075b8", "date": "2016-05-26 09:09:42 -0400", "subject": "Remove function constants and pass strings directly to logDebugParam().", "body": "The function names were only used once so creating constants for them was wasteful." }, { "commit": "e7d4a25d6a5613b89e3186517f6d4888b3ed9faa", "date": "2016-05-24 08:17:13 -0400", "subject": "Added Ubuntu 16.04 and Debian 8 to regression tests.", "body": "Also added some new fields to make container generation simpler for distros that share a common package base." }, { "commit": "f2a14a06e5a3b9b702cdbcf5f7cfdfb0acfa6e51", "date": "2016-05-23 20:04:36 -0400", "subject": "Moved version checking code so it doesn't run in containers.", "body": "The required modules were not loaded so errors were occurring during regression tests." }, { "commit": "c604b6e657a0ff195d291d6b7f972ef02f508011", "date": "2016-05-23 19:33:02 -0400", "subject": "Test release version using change-log.xml instead of CHANGELOG.md.", "body": "This is in preparation for moving the change log to the website and removing it from Github." }, { "commit": "3af48f1d7818287d9e4443748becc63b86958ab7", "date": "2016-05-20 11:18:51 -0400", "subject": "Initialize local variable variable immediately, per Perl Critic." }, { "commit": "c9632e987437031d40765019bd6ee279cb101197", "date": "2016-05-19 17:10:34 -0400", "subject": "Closed #195: Added type from source node in manifest.xml.", "body": "This parameter `allows the doc code to determine if special handling is needed for the xml document." }, { "commit": "3a309256fa9547f8a26fe0563a873a5be1385c2f", "date": "2016-05-19 10:25:04 -0400", "subject": "Closed #193: Fix perl warnings in doc/ tree.", "body": "Somewhere between perl 5.14 and 5.20, constructs like this:\n perl -e '$a = {}; keys $a'\nstarted to throw warnings:\n keys on reference is experimental at -e line 1.\n\nFix by adding a bunch of %{} and @{} casts." }, { "commit": "b710c016302d8d29c502aab5688197bf9a664131", "date": "2016-05-17 01:04:01 -0400", "subject": "v1.01: Enhanced Info, Selective Restore, and 9.6 Support" }, { "commit": "0451d3afddfd6af2b6d32c2aba898e13f4cd170a", "date": "2016-05-16 17:59:26 -0400", "subject": "Support for non-exclusive backups in PostgreSQL 9.6." }, { "commit": "28c5e54b09c5428c53f43a8e6b9b2c2ce727ad09", "date": "2016-05-16 17:01:48 -0400", "subject": "Added SEO and sharing features to the website.", "body": "Descriptions wordsmithed (for better or worse) by committer." }, { "commit": "48eecc2c04d59f74755d7f4db2b73da8e9e29ce6", "date": "2016-05-16 16:49:54 -0400", "subject": "Added vim to test virtual machine." }, { "commit": "9b5a27f6578b7041d72f8527e71c35aa60c0e8ab", "date": "2016-05-14 10:39:56 -0400", "subject": "Add Manifest->addFile().", "body": "Some files need to be added to the manifest after the initial build. This is currently done in only one place but usage will expand in the future so the functionality has been encapsulated in addFile()." }, { "commit": "77b01e980fc82d81585531bd688d8a32bed759d5", "date": "2016-05-14 10:36:35 -0400", "subject": "Make the initial capital for hints consistent.", "body": "Some hints started with a capital letter and others did not. Make them all lower case for consistency." }, { "commit": "512d006346a06ef2eaf7af7ac2863a2c1a62f3de", "date": "2016-05-14 10:33:12 -0400", "subject": "Refactor database version identification for archive and backup commands.", "body": "Added database version constants and changed version identification code to use hash tables instead of if-else. Propagated the db version constants to the rest of the code and in passing fixed some path/filename constants.\n\nAdded new regression tests to check that specific files are never copied." }, { "commit": "4d9920cc48d871035a9a601095c6700510dd5388", "date": "2016-05-14 10:29:35 -0400", "subject": "Fix null and linefeed handling in Db->executeSql().", "body": "The join() used was not able to handle nulls and was replaced by a loop. An injudicious trim was removed when the source of extra linefeeds was determined to be an additional loop execution that was not handled correctly." }, { "commit": "0c320e7df77a63e3bbebf43dc931b5884531a772", "date": "2016-05-11 09:21:39 -0400", "subject": "Allow selective restore of databases from a cluster backup.", "body": "This feature can result in major space and time savings when only specific databases are restored. Unrestored databases will not be accessible but must be manually dropped before they will be removed from the shared catalogue." }, { "commit": "e430f0a05439ff851d3c4fa8b5a19cd1c743b945", "date": "2016-05-11 08:59:34 -0400", "subject": "Added `--db-version=minimal` option as default.", "body": "This change assigns each version of PostgreSQL to a specific OS version for testing to minimize the number of tests being run. In general, older versions of PostgreSQL are assigned to older OS versions.\n\nThe old behavior can be enabled with `--db-version=all`." }, { "commit": "a6a19e3735f5edfa449fe351372b9d4be625d03e", "date": "2016-05-10 18:12:37 -0400", "subject": "Test directories are now located on the host VM rather than in the Docker container.", "body": "This change allows for easier testing since all files are local on the host VM and can be easily accessed without using `docker exec`. In addition, this change is required to allow multiple Docker containers per test case which is coming soon." }, { "commit": "60b901948af90126700685b5424f332a490d1ad1", "date": "2016-05-06 10:25:46 -0400", "subject": "Enhanced text output of info command to include timestamps, sizes, and the reference list for all backups." }, { "commit": "7b64843221277d4afb7a6a2c8ac4222faf7c551b", "date": "2016-05-06 09:37:01 -0400", "subject": "Added trim() to process id read from lock file.", "body": "The prior way worked fine but added extraneous linefeeds to the log output." }, { "commit": "c477d6f8998f9e8fa8d7015b1c850e1332ab00cc", "date": "2016-05-05 18:13:50 -0400", "subject": "Next development cycle." }, { "commit": "6cd1c42ddc19f2511f159ea1ccdcc5469f728594", "date": "2016-05-03 16:28:20 -0400", "subject": "Add usage documentation for test.pl." }, { "commit": "7b030c5173b6d67c72b3efe54b3542ae3d694432", "date": "2016-05-03 16:12:44 -0400", "subject": "User Guide clarifications." }, { "commit": "afc8a76ee9ed26738f8b0777a14e5084e9087d20", "date": "2016-04-25 16:33:08 -0400", "subject": "Fixed typos in user guide." }, { "commit": "226d266d087b1d686e2171aa6f20ab216ef63e97", "date": "2016-04-17 11:43:33 -0400", "subject": "Added current stable release to documentation." }, { "commit": "0d34c34cea1d8cca005e659e03c1520792b5c6a1", "date": "2016-04-17 11:27:19 -0400", "subject": "Added feature backlog.", "body": "This backlog is intended to hold long-lived feature requests that clutter up the issues area on Github." }, { "commit": "7bdfa7839a1fa260b857bcde9a7e91414d7196e6", "date": "2016-04-17 09:32:03 -0400", "subject": "Minor wording change: problems => challenges." }, { "commit": "7bd9b28ff4e5c296ff5c76b0259b40fe90c58b54", "date": "2016-04-17 08:23:09 -0400", "subject": "Expanded feature bullet points into a new section with detailed explanations.", "body": "Copy editing by John Harvey (@crunchyjohn), Jason O'Donnell (@Dwaligon), and Stephen Frost (@sfrost)." }, { "commit": "ed20c2eda3790b6a327f05a1c08761cdec38f8eb", "date": "2016-04-16 16:38:44 -0400", "subject": "Close #172: Unable to unpack Int64 when running on 32-bit OS", "body": "Added a note to documentation that only 64-bit distributions are supported. It seems unlikely that anybody would be running a production server on anything else these days so we'll wait for a field report before taking further action." }, { "commit": "dee3e86ff8444689f427147e9199070b8bb46ab3", "date": "2016-04-16 11:55:23 -0400", "subject": "README.md is now rendered by new Markdown code." }, { "commit": "ad8ad11e4f555fb5b50c963eb6a61eae642e6750", "date": "2016-04-16 11:11:29 -0400", "subject": "Update URLs for new Github org." }, { "commit": "9ab0dd80f70cc69a6edc9e61b6053752a789fde3", "date": "2016-04-14 23:04:20 -0400", "subject": "v1.00: New Repository Format and Configuration Scheme, Link Support" }, { "commit": "9457e15347b05b4565074a3455f9edc4d1edaae3", "date": "2016-04-14 22:50:02 -0400", "subject": "New manifest format.", "body": "* All files and directories linked from PGDATA are now included in the backup. By default links will be restored directly into PGDATA as files or directories. The --link-all option can be used to restore all links to their original locations. The --link-map option can be used to remap a link to a new location.\n\n* Removed --tablespace option and replaced with --tablespace-map-all option which should more clearly indicate its function.\n\n* Added detail log level which will output more information than info without being as verbose as debug." }, { "commit": "9a7d8b26cceb435d69378dd4bdc4eab74af11167", "date": "2016-04-14 13:50:58 -0400", "subject": "Fixed some inaccurate statements in the user guide. Fixed typo in documentation code comments." }, { "commit": "18fd25233b1db7b3197f5d8dc537d239dcfc7aba", "date": "2016-04-14 09:30:54 -0400", "subject": "New simpler configuration and consistent project/exe/path naming.", "body": "* The repo-path option now always refers to the repository where backups and archive are stored, whether local or remote, so the repo-remote-path option has been removed. The new spool-path option can be used to define a location for queueing WAL segments when archiving asynchronously. Otherwise, a local repository is no longer required.\n\n* Implemented a new config format which should be far simpler to use. See the User Guide and Configuration Reference for details but for a simple configuration all options can now be placed in the stanza section. Options that are shared between stanzas can be placed in the [global] section. More complex configurations can still make use of command sections though this should be a rare use case.\n\n* The default configuration filename is now pgbackrest.conf instead of pg_backrest.conf. This was done for consistency with other naming changes but also to prevent old config files from being loaded accidentally.\n\n* The default repository name was changed from /var/lib/backup to /var/lib/pgbackrest.\n\n* Lock files are now stored in /tmp/pgbackrest by default. These days /run/pgbackrest would be the preferred location but that would require init scripts which are not part of this release. The lock-path option can be used to configure the lock directory.\n\n* Log files are now stored in /var/log/pgbackrest by default and no longer have the date appended so they can be managed with logrotate. The log-path option can be used to configure the lock directory.\n\n* Executable filename changed from pg_backrest to pgbackrest." }, { "commit": "885797e4b58a675487a3531ba16908c1d1e9f970", "date": "2016-04-13 19:09:35 -0400", "subject": "Migrated many functions from File.pm to FileCommon.pm.", "body": "This makes make the migrated file functions available to parts of the code that don't have access to a File object. They still exist as wrappers in the File object to support remote calls." }, { "commit": "be8487dbad8a52f8b1f5083e3d7e2e3e47140dce", "date": "2016-04-13 19:05:31 -0400", "subject": "Changed some TBD comments from urgent to whenever." }, { "commit": "723abadb750c78b661c9d29404455d4a95cfc7aa", "date": "2016-04-13 18:55:34 -0400", "subject": "Change spacing in expect logs to accommodate DETAIL level." }, { "commit": "64b2858bb50c6b5f5f3cc6934c6dab671c203bbe", "date": "2016-04-13 18:47:29 -0400", "subject": "Test VM build improvements.", "body": "* Specific VMs can now be built by using --vm along with --vm-build.\n* Docker caching can be disabled with --vm-force.\n* ControlMaster is now used for al VMs to improve test speed." }, { "commit": "0e4fdda6d8f7da0b737f2ffd3f0d1ad9ec3a33ab", "date": "2016-04-12 15:50:25 -0400", "subject": "Improved error handling when remote closes unexpectedly.", "body": "In conditions where an error is known to have occurred wait to try and capture the error in the first call that detects the error. Due to timing sometimes the error could be caught later, which worked, but it made the functionality inconsistent in testing." }, { "commit": "8adbcccd02d133f9650486019911f41afe80100d", "date": "2016-04-06 10:00:11 -0400", "subject": "Closed #184: Change test/log directory to test/expect.", "body": "This should make it clearer that these are expect logs for regression testing." }, { "commit": "aacc369e4fc5ff40c8731f47303c547934315988", "date": "2016-04-06 09:41:33 -0400", "subject": "Next development cycle." }, { "commit": "5307c858a7007c9b17f63aaef0439ac951d8741a", "date": "2016-04-06 09:14:06 -0400", "subject": "v0.92: Command-line Repository Path Fix" }, { "commit": "1ce9961f8a65e0e127418905c54a11736e8b6ad3", "date": "2016-04-06 08:57:46 -0400", "subject": "Closed #183: Options --repo-path and --repo-remote-path ignored in archive-push.", "body": "Fixed an issue where the master process was passing --repo-remote-path instead of --repo-path to the remote and causing the lock files to be created in the default repository directory (/var/lib/backup), generally ending in failure. This was only an issue when --repo-remote-path was defined on the command line rather than in pg_backrest.conf." }, { "commit": "1bbf3e6db4d4e1d43b03e75b3eb308565a700952", "date": "2016-03-22 22:18:33 -0400", "subject": "Fixed #181: Missing semicolon violates code style." }, { "commit": "1d4779cfe6645bcfe508cd117c3f77146164066f", "date": "2016-03-22 10:23:20 -0400", "subject": "Next development cycle." }, { "commit": "aea14c85531b564777e60ce4a6259a22413fae10", "date": "2016-03-22 10:16:42 -0400", "subject": "v0.91: Tablespace Bug Fix and Minor Enhancements" }, { "commit": "d4899141734a4ae1abe52721d7f32f2148e05579", "date": "2016-03-22 09:57:39 -0400", "subject": "Closed #180: Backup format regression in v0.90." }, { "commit": "c669dc01e957701161ea7a7ff15392157451d750", "date": "2016-03-10 10:58:07 -0500", "subject": "Fixed url references in latex documentation to use \\href instead of \\hyperref." }, { "commit": "87dd0a127ffc4a55aeefca16ebf740b0e12a1731", "date": "2016-03-09 11:27:08 -0500", "subject": "Clarification for delta restore documentation to indicate that files may be removed." }, { "commit": "004067a5fab8d7d91e24503cd560c319feccb08f", "date": "2016-03-08 09:29:03 -0500", "subject": "Correct retention-diff example value in documentation." }, { "commit": "0b317d9040d33c46f466155f9873757c11517884", "date": "2016-02-27 10:11:58 -0500", "subject": "Fix minor bug in protocol compression.", "body": "This erroneous last caused a warning (which threw an error) and masked the error in decompression. It was found when accidentally attempting to decompress an already-decompressed file, so not a big deal in practice which is probably why it hug around for so long." }, { "commit": "d4c46acf489910ccf248f7e04438a8108647d03a", "date": "2016-02-23 09:39:37 -0500", "subject": "Working on #174: Get Perl Critic to pass on stern", "body": "Added single exception for the violation of BuiltinFunctions::ProhibitStringyEval and removed from policy file." }, { "commit": "048571e23fc9e5b0756c0f19590fe4b74706a01e", "date": "2016-02-23 09:25:22 -0500", "subject": "Closed #173: Add static source code analysis", "body": "Perl Critic added and passes on gentle. A policy file has been created with some permanent exceptions and a list of policies to be fixed in approximately the order they should be fixed in." }, { "commit": "d35ab82a83895049ea542b3a53b2e90f9428d176", "date": "2016-02-19 19:32:02 -0500", "subject": "Closed #167: Rename `--no-start-stop` option to `--no-online`." }, { "commit": "fb63a981cb89b7741120d87be78f7ffd38c4d5de", "date": "2016-02-14 20:42:11 -0500", "subject": "Closed #166: Copy global/pg_control last during backup." }, { "commit": "053f25d870836c001fd826927fa32b5d4ef97a58", "date": "2016-02-11 21:42:27 -0500", "subject": "Closed #170: Write .info and .manifest files to temp before moving to final location and syncing" }, { "commit": "17cbab524aa8e4ef541253aa5923afffb8f98820", "date": "2016-02-11 21:40:43 -0500", "subject": "Combine chmod commands in tests for efficiency." }, { "commit": "f360d5072e6a7ec29489a72732783153ba0c4a92", "date": "2016-02-07 11:20:43 -0500", "subject": "Next development cycle." }, { "commit": "631535ae4fc443102cac0f2da5bdc8fb2671468e", "date": "2016-02-07 10:47:16 -0500", "subject": "v0.90: 9.5 Support, Various Enhancements, and Minor Bug Fixes" }, { "commit": "de9b6d5133c5fbbb02cb0c8b7d4596843a2d3545", "date": "2016-02-06 16:49:12 -0500", "subject": "Closed #113: Better error message when repo does not exist." }, { "commit": "f8b47997a314ed6502b915a0514b20ac23598dab", "date": "2016-02-05 23:03:29 -0500", "subject": "Closed #127: More sanity checking for --delta restores", "body": "Added checks for `--delta` and `--force` restore options to ensure that the destination is a valid $PGDATA directory. pgBackRest will check for the presence of `PG_VERSION` or `backup.manifest` (left over from an aborted restore). If neither is found then `--delta` and `--force` will be disabled but the restore will proceed unless there are files in the $PGDATA directory (or any tablespace directories) in which case the operation will be aborted." }, { "commit": "5c815e4fc0e2c8a9ea162963f32d5679d54fc852", "date": "2016-02-02 14:33:15 -0500", "subject": "Closed #58: Get catalog number for better tablespace copying", "body": "When backing up and restoring tablespaces pgBackRest only operates on the subdirectory created for the version of PostgreSQL being run against. Since multiple versions can live in a tablespace (especially during a binary upgrade) this prevents too many files from being copied during a backup and other versions possibly being wiped out during a `--delta` restore. This only applies to PostgreSQL >= 9.0 -- before that only one PostgreSQL version could use a tablespace." }, { "commit": "24a1ad31d0dfcd8c72a71c589902446a9da75e11", "date": "2016-02-02 11:57:46 -0500", "subject": "Minor rewording in user guide." }, { "commit": "02405e851cc6f1941f0de8001cdf6829d6fa06c0", "date": "2016-01-22 18:01:21 -0500", "subject": "Closed #163: Document Generation Issue", "body": "Fixed an issue where document generation failed because some OSs are not tolerant of having multiple installed versions of PostgreSQL. A separate VM is now created for each version. Also added a sleep after database starts during document generation to ensure the database is running before the next command runs." }, { "commit": "bacdd5583dc7dfc807c385789b26e346db6c219a", "date": "2016-01-22 14:38:48 -0500", "subject": "User guide highlighting fixes for #93." }, { "commit": "e42b8de618b0a8bd003d8b62eefadf7ed0aee34f", "date": "2016-01-20 21:45:03 -0500", "subject": "Updated Copyright for 2016." }, { "commit": "83b1a3cb4446fb59d1295706a547b41fc5bd84be", "date": "2016-01-20 21:28:40 -0500", "subject": "Closed #150: Fixed an issue where a temp WAL file left over after a well-timed system crash could cause the next `archive-push` to fail." }, { "commit": "747346db674705d7db15e8f9293016b00875b4d5", "date": "2016-01-20 18:34:42 -0500", "subject": "Closed #162: When restore `--set=latest` (the default) the actual backup restored will be output to the log." }, { "commit": "2d38876bc4676344936ad72d65d0f697c4e921c1", "date": "2016-01-20 17:24:44 -0500", "subject": "Closed #93: The `retention-archive` option can now be be safely set to less than backup retention (`retention-full` or `retention-diff`) without also specifying `archive-copy=n`. The WAL required to make the backups that fall outside of archive retention consistent will be preserved in the archive. However, in this case PITR will still not be possible for backups that fall outside of archive retention." }, { "commit": "904a8c956f53ae5f6832e6188a668d94a84220b9", "date": "2016-01-19 07:39:29 -0500", "subject": "Refactor of expiration to use backup.info for a list of what needs to be expired rather than looking at the backup directory." }, { "commit": "65cce69dcc7b03605ab46f0f542bc653ecb4154c", "date": "2016-01-15 23:37:17 -0500", "subject": "Closed #131: Offline backups make expire command fail." }, { "commit": "fce72615366dd5a78359bd05c0919210eb128019", "date": "2016-01-15 23:22:30 -0500", "subject": "Only allow --no-cleanup option when a single test is selected." }, { "commit": "4d12cc233e26e568fa8449691051b8f33b238873", "date": "2016-01-15 20:31:29 -0500", "subject": "Fix for typo in error message." }, { "commit": "e91e481f3dcdb5e03320663bfa732b3aef49b49e", "date": "2016-01-15 07:07:00 -0500", "subject": "Closed #19: The following tablespace checks have been added: paths or files in pg_tblspc, relative links in pg_tblspc, tablespaces in $PGDATA. All three will generate errors." }, { "commit": "67fb7a23bc2d448938c000ec7189cc1f9b979440", "date": "2016-01-14 19:37:06 -0500", "subject": "Master test log is output to file." }, { "commit": "65d0c7dc3bd60eb432dd4a582419c3c39866801a", "date": "2016-01-13 22:48:35 -0500", "subject": "Updated Crunchy URL." }, { "commit": "c2b1620c53555924dd4ef666db1a124702ebd5b1", "date": "2016-01-13 22:43:26 -0500", "subject": "Logging enhancements:", "body": "1) Show log output realtime when --max-process=1 or only 1 test is being run.\n2) Dry run now shows test output when --vm-out is specified." }, { "commit": "a0a3d1e97e91ddb6ebbb2ac8ff3f2445f3c455f0", "date": "2016-01-13 20:35:12 -0500", "subject": "Closed #122: 9.5 Integration", "body": "The archive_mode = always setting is not included but is covered by issue #125." }, { "commit": "c7502f341b4ffbe976ff08bf311f24d6d377a408", "date": "2016-01-11 09:50:45 -0500", "subject": "Generate an error when `archive-check=y` but `archive_command` does not execute `pg_backrest`." }, { "commit": "81a2fde21fc9fe98bb3473164b5ac4717bdb067b", "date": "2016-01-10 21:07:07 -0500", "subject": "Fixed typos in test documentation." }, { "commit": "0f88943b7b2e142d86d3a03755a41a1b31754338", "date": "2016-01-10 19:30:51 -0500", "subject": "Database versions are now run as separate tests." }, { "commit": "cd9fa6f028114f4e44068137a6d14bcd74d882d7", "date": "2016-01-10 09:19:21 -0500", "subject": "Updated test logs for partial WAL segment support." }, { "commit": "29102b2887dc6f0a1ad0603c48d14bc92e15fa8a", "date": "2016-01-09 23:08:54 -0500", "subject": "Added error when archive_mode=always is configured." }, { "commit": "7f0f8823df16f3bb4f68fbe7fca4da259ade6409", "date": "2016-01-09 19:37:28 -0500", "subject": "Added support for partial WAL segments." }, { "commit": "e72165a689889f87a863821f6d5edbada425feae", "date": "2016-01-09 10:11:03 -0500", "subject": "Provisional support for PostgreSQL 9.5. No support for `archive_mode = 'always'` or `.partial` WAL on a standby." }, { "commit": "c8f863fbabaf5060e6c8b837856363339740d346", "date": "2016-01-09 08:21:53 -0500", "subject": "Text execution improvements:", "body": "1) Tests for all operating systems can now be run with a single command.\n2) Tests can be run in parallel with --process-max.\n3) Container generation now integrated into test.pl\n4) Some basic test documentation." }, { "commit": "4a384ffbdb3824b116fcf1db63920fc6eddd18ea", "date": "2016-01-03 20:24:14 -0500", "subject": "Added archive-check config test. Fixed capitalization error in optionboolSetTest()." }, { "commit": "6f6c796fbf9d4cdafcede1368b63904e9690f598", "date": "2016-01-03 20:21:30 -0500", "subject": "Fixed an issue where specifying --no-archive-check would throw a configuration error." }, { "commit": "7f630aec49eceada43d3c60f2a810cc3e5960a08", "date": "2015-12-29 13:57:10 -0500", "subject": "Switched to using docker for all unit tests as this allows for greater automation." }, { "commit": "91d1e940769cf81bd511745c9b303833d8940b66", "date": "2015-12-24 12:49:47 -0500", "subject": "Next development cycle." }, { "commit": "50a62fab6ded931efd9c87fe3767fd26f4f7318b", "date": "2015-12-24 11:32:29 -0500", "subject": "v0.89: Timeout Bug Fix and Restore Read-Only Repositories" }, { "commit": "ba098d7b91c189d8ee7f45a157ba8e5a243eb85b", "date": "2015-12-24 10:32:25 -0500", "subject": "Fixed an issue where longer-running backups/restores would timeout when remote and threaded.", "body": "Keepalives are now used to make sure the remote for the main process does not timeout while the thread remotes do all the work. The error messages for timeouts was also improved to make debugging easier." }, { "commit": "b0a6954671dcee50e16a72f4c44d0eaa84b67c5c", "date": "2015-12-23 11:04:26 -0500", "subject": "A number of doc improvements:", "body": "1) Started on a general markdown renderer\n2) Internal links now work in PDF\n3) Improvements to PDF styling\n4) Some comment and formatting fixes\n5) User guide edits." }, { "commit": "fdc99e30bd2e154623fb71134413a11d695d3420", "date": "2015-12-23 10:48:33 -0500", "subject": "Allow restores to be run against a read-only repository.", "body": "Two things needed to be changed:\n1) Don't open a log file when log-level-file=off\n2) New --no-lock option to suppress lock file creation for restores." }, { "commit": "d5cef05a6857512bc1c1410909a58df4d1c102da", "date": "2015-12-21 19:25:50 -0500", "subject": "Added rc to version check." }, { "commit": "a840808bc6916e089dcb119998a742fbb8629fea", "date": "2015-12-21 19:25:17 -0500", "subject": "Regression test for issue #159: duplicated log section entries in config file", "body": "Add a perl -cW test to prevent similar errors in the future." }, { "commit": "fe9c66591f3a0324b0bae483d825d75c4ac38d74", "date": "2015-12-21 14:29:54 -0500", "subject": "Fixed issue #159: Duplicated log section entries in config file", "body": "This would cause a warning when run with perl -cw but appears to have been harmless otherwise." }, { "commit": "4925756dee22faee7bf6e1ca9bcd417d09cf5ba4", "date": "2015-11-22 18:16:54 -0500", "subject": "Merge branch 'master' into dev after release 0.88" }, { "commit": "e04c21b012d8196f716f093a5bbc46f16cc4a1fb", "date": "2015-11-22 17:27:30 -0500", "subject": "v0.88: Documentation and Minor Bug Fixes" }, { "commit": "fa05715dec955a30f271df9c1c059c9c876e3f4d", "date": "2015-11-22 16:44:01 -0500", "subject": "Added documentation in the user guide for delta restores, expiration, dedicated backup hosts, starting and stopping pgBackRest, and replication." }, { "commit": "8ddfdcdd3bc2ee5e76487d903696840655357f87", "date": "2015-11-22 14:02:14 -0500", "subject": "Various fixes and features implemented during doc development", "body": "* Better messaging for expiration.\n* Fixed already stopped message.\n* retention-archive and retention-archive-type now use retention-full and 'full' when not specified.\n* Fixed issue where backup-user was required (should default to backrest).\n* ExecuteTest now supports retries.\n* Fixed issue where log test was not comparing test logs.\n* Fixed issue where test logs would not match for ssh connection errors" }, { "commit": "7ff9fc996c6f43e6c6aeff68624b145efa3fea89", "date": "2015-11-20 11:03:06 -0500", "subject": "Release notes for fixes and rebuild command-line help." }, { "commit": "4c5470e0499e336b704e9472d8a3c7463b256cc2", "date": "2015-11-20 10:55:28 -0500", "subject": "Implemented issue #156: Don't create backup symlinks in the repository." }, { "commit": "11f724bdfc31f7a3fa701d44ce985f47362f65a2", "date": "2015-11-20 10:28:58 -0500", "subject": "Fixed issue #155: Start/Stop do not automatically read config file." }, { "commit": "d89cd955d0fb5b45ec69e02e948c18eab9feb9bf", "date": "2015-11-20 09:18:12 -0500", "subject": "Fixed issue #154: Log files are overwritten rather than appended." }, { "commit": "e5cf1d84a710eb03c179b41c271e203613a89377", "date": "2015-10-29 17:45:29 +0100", "subject": "CSS Tweaks." }, { "commit": "2f83362f32114f2f516d344334e3fa25e0aaad4b", "date": "2015-10-28 13:02:35 +0100", "subject": "Minor user guide fix." }, { "commit": "a498becf11f385c4b525c318412ec8154c0ebd34", "date": "2015-10-28 11:29:04 +0100", "subject": "Merge branch 'master' into dev after release 0.87" }, { "commit": "2813c4d4ebdeccff8a54cbf8157fa3bdca01c44b", "date": "2015-10-28 11:15:38 +0100", "subject": "v0.87: Website and User Guide" }, { "commit": "32ce87d56d0def3a4249606eca9dec765fb1fca4", "date": "2015-10-28 10:19:33 +0100", "subject": "Fixed minor path issue in README.md." }, { "commit": "57a06ba3b12533d623090714c99d1604a74085e6", "date": "2015-10-28 10:10:36 +0100", "subject": "Implemented issue #148: Website with basic user guide." }, { "commit": "3dc014224487c8ab32a86874396b3e78b647315e", "date": "2015-10-08 14:36:39 -0400", "subject": "Renamed userguide.xml to reference.xml so it doesn't conflict with the new user guide." }, { "commit": "994ead1f05eac573948993b51dcb9a1f45f4876e", "date": "2015-10-08 13:47:51 -0400", "subject": "Removed IO::String dependency from docs." }, { "commit": "0bcbe21520f66f58d6795cd0e0969ba90afa8332", "date": "2015-10-08 12:44:55 -0400", "subject": "Merge branch 'master' into dev after release 0.85" }, { "commit": "097eb7ca419a49464fdcfccac873760acf4fee3e", "date": "2015-10-08 12:34:50 -0400", "subject": "v0.85: Start/Stop Commands and Minor Bug Fixes" }, { "commit": "6e170d27e4ec69b94f38f0f5db4a6abe5232f393", "date": "2015-10-08 12:23:37 -0400", "subject": "Replaced expired CentOS VMs with new ones." }, { "commit": "1f9d6c330a35cdfb7402439240e5fc8a77811fea", "date": "2015-10-08 12:22:57 -0400", "subject": "Updated WAL magic for PostgreSQL 9.5 beta1." }, { "commit": "ddd4c14773176d03ffbb30d958f6c3d8596e41a3", "date": "2015-10-08 11:43:56 -0400", "subject": "Implemented issue #129: Stop/Start Commands. Implemented issue #136: Add stderr back into protocol layer.", "body": "There were also miscellaneous bug fixes and improvements to buffering in IO.pm." }, { "commit": "e488f7bb198b4af6f7b1595392b57648bf985dcb", "date": "2015-09-22 21:07:49 -0400", "subject": "Fixed issue #144: Error on resume when temp files (file.tmp.*) present." }, { "commit": "a3d82eef9897965dbe1bff08a92418877447acca", "date": "2015-09-16 15:23:19 -0500", "subject": "Document code in Db.pm." }, { "commit": "210f8ef723a56d0f0d4d8c4a0120729ef952a44a", "date": "2015-09-14 12:28:22 -0400", "subject": "Merge branch 'master' into dev after release 0.82" }, { "commit": "9be15d00f8527309fd81118bb483adb0b1956651", "date": "2015-09-14 11:18:50 -0400", "subject": "v0.82: Refactoring, Command-line Help, and Minor Bug Fixes" }, { "commit": "e0dafbff7ff294b137e085cde63f0e69685b31b3", "date": "2015-09-09 15:40:54 -0400", "subject": "Improvements to issue #132: Improved command-line help. Regression tests are now more comprehensive by default. Better handling for errors in safeExit(). Release notes." }, { "commit": "d7e3be1ebff5d0d017a7406552acd9b3a97f0bb8", "date": "2015-09-08 18:29:13 -0400", "subject": "Fixed issue #138: Fix --no-start-stop working on running db without --force.", "body": "Unable to reproduce this anymore. It seems to have been fixed with the last round of config changes. Add regression tests to make sure it doesn't happen again." }, { "commit": "b17bf31fb6dbe67b6efdcd634a4d29ede1cf9d76", "date": "2015-09-08 16:58:00 -0400", "subject": "Implement issue #130: Info files should be updated with new version when pgBackRest is upgraded." }, { "commit": "59b2261a8ee15d061367ffefe598c05cb93fcb3e", "date": "2015-09-08 16:44:47 -0400", "subject": "Fix issue #137: Info command throws an exception if no stanzas exist." }, { "commit": "8d01138f6def41f12a1c3adcf4e7fbfea65b9aae", "date": "2015-09-08 15:47:34 -0400", "subject": "Improved issue #135: Suppress PostgreSQL notices.", "body": "Regression tests now fail if there is any unexpected output on stderr." }, { "commit": "bb6963cf3b7ba30e2fa13e8df57b234d283d2cbe", "date": "2015-09-08 14:01:19 -0400", "subject": "Implement issue #135: Suppress PostgreSQL notices." }, { "commit": "adc5568b15090c797863206830730e1974bfdc7a", "date": "2015-09-08 12:58:13 -0400", "subject": "Fixed issue #132: Improved command-line help.", "body": "Some platform specific fixes and added regression tests to detect issues." }, { "commit": "ac3c0d43ab8701855b45bc40f1298e9707dc0e14", "date": "2015-09-08 07:31:24 -0400", "subject": "Implemented issue #132: Improved command-line help. Implemented issue #133: Dynamic module loading where possible." }, { "commit": "0913072c4554d62a50e393158f4685dd52831390", "date": "2015-09-02 19:07:21 -0400", "subject": "Removed unused parameter from Info::new()." }, { "commit": "ee55817fcee2184b353e26f608b461d9d3fc9d7f", "date": "2015-09-02 18:55:04 -0400", "subject": "Refactoring documentation generator." }, { "commit": "bf3ef15ccc2991686c51ba10946ef095d248951f", "date": "2015-09-01 19:05:10 -0400", "subject": "Implemented issue #117: Refactor expiration tests to be purely synthetic" }, { "commit": "6a9377a0a9389d285cd36b1fe179d47f46e15d9a", "date": "2015-08-29 14:20:46 -0400", "subject": "Code cleanup and refactoring to standardize on patterns that have evolved over time." }, { "commit": "d3262822efff785911fa1d2450d1fb1ac0d1b950", "date": "2015-08-27 15:55:29 -0400", "subject": "Fixed issue #128: Replace config name in test logs", "body": "It was actually the bin path that was causing the issue." }, { "commit": "83473eb9fb4e437c47a1773c7f4cb7e93f71ee2a", "date": "2015-08-09 11:29:00 -0400", "subject": "Merge branch 'master' into dev after release 0.80" }, { "commit": "a59284a4cca37a0c299f411e44cdfe7e43bb9ba7", "date": "2015-08-09 11:20:43 -0400", "subject": "v0.80: DBI Support, Stability, and Convenience Features" }, { "commit": "65d9de4ee76bcce4f102e2b17d7f7ced809880a0", "date": "2015-08-09 09:18:58 -0400", "subject": "Document issue #114: Better description of repo-path." }, { "commit": "7e49e4596f9fdaae102c5caae7dae35c25e75bef", "date": "2015-08-08 20:17:33 -0400", "subject": "Removed dead function wait_for_file()." }, { "commit": "45259a487f2522ac961ceba0bb38cc8ad0089d00", "date": "2015-08-08 18:36:36 -0400", "subject": "Change log for issue #94: backup_stop needs a timeout." }, { "commit": "1ab6239b4e9b37ed34564e9de9ee102fea82b329", "date": "2015-08-08 18:32:41 -0400", "subject": "Implemented issue #118: Clean up database vs. database cluster in the docs." }, { "commit": "e82afac8854e74fb1451491abde5f353ca496b1b", "date": "2015-08-08 18:22:38 -0400", "subject": "Implemented issue #94: backup_stop needs a timeout.", "body": "The timeout applies to all queries agains the cluster during a backup." }, { "commit": "8c0508789e5debc508aae05d28ebe5f7f4700809", "date": "2015-08-08 17:11:20 -0400", "subject": "Implemented issue #25: Option to call stop_backup with every backup." }, { "commit": "12e8a7572c07fc4ea1d44ba944e530c391396047", "date": "2015-08-08 00:51:58 -0400", "subject": "Worked on issue #122: 9.5 Integration.", "body": "Expiration tests worked differently with checkpoint_segments. Only allow this test < 9.5 until purely synthetic tests are written." }, { "commit": "2edf5d4bf7b47b4fd3fd446740a82c35be84dbda", "date": "2015-08-07 14:43:53 -0400", "subject": "Split most of README.md out into CHANGELOG.md and USERGUIDE.md. Added release dates to change log." }, { "commit": "61c729b37b7787740a1e011544dd97971c44d0ce", "date": "2015-08-07 10:21:08 -0400", "subject": "Worked on issue #122: 9.5 Integration.", "body": "Skip copying tablespace_map instead of deleting it later.\nCleaned up the skip code for pg_control as well." }, { "commit": "4e7bd4468a785a00c37b5d29262d86f76f725a78", "date": "2015-08-06 16:36:55 -0400", "subject": "Worked on issue #122: 9.5 Integration.", "body": "Most tests are working now. What's not working:\n\n1) --target-resume option fails because pause_on_recovery setting was removed. Need to implement to the new 9.5 option and make that work with older versions in a consistent way.\n2) No tests for the new .partial WAL segments that can be generated on timeline switch." }, { "commit": "adb8a009255fdfcd726bf7ded3aef60c80b645cf", "date": "2015-08-06 00:24:02 -0400", "subject": "Improvements to release notes." }, { "commit": "ca1fd9740aede681866e8a52bcece052de631597", "date": "2015-08-06 00:00:30 -0400", "subject": "Working on issue #117: Refactor expiration tests to be purely synthetic.", "body": "Split BackupTest.pm into two modules. It was getting ungainly to work on." }, { "commit": "8b57188bc1e5e6941bf46e9fc4cfd6d8e5bd7856", "date": "2015-08-05 23:37:46 -0400", "subject": "Fixed issue #120: Wrong \"oldest backup timestamp\" in info output." }, { "commit": "a10dd8ba98b2c0e16b560e447336c663e7b865de", "date": "2015-08-05 22:05:45 -0400", "subject": "Implemented issue #121: Check data from db against what's passed to backrest." }, { "commit": "576d50fc1ed0283b5b77e99a72bdf787b473a1c3", "date": "2015-08-05 18:54:41 -0400", "subject": "Added ssh control master config to speed regression testing. Added vagrant config for Centos 7." }, { "commit": "ba4e5fc4cb486c28ddba44f60cfc77fe8b171b39", "date": "2015-08-05 13:35:19 -0400", "subject": "Release notes for issue #20: Convert Postgres calls from psql to DBD::Pg." }, { "commit": "23e6267adc90293d80887492208f68de3c40297d", "date": "2015-08-05 12:32:12 -0400", "subject": "Implemented issue #20: Convert Postgres calls from psql to DBD::Pg." }, { "commit": "f8a2da940012187d5a48c10018ded60128793f5d", "date": "2015-08-05 08:43:41 -0400", "subject": "Work on issue #48: Abandon threads and go to processes", "body": "* Major refactoring of the protocol layer to support this work.\n* Fixed protocol issue that was preventing ssh errors (especially connect) from being logged." }, { "commit": "021afa804638c609a7a8074a9502f4bf05c01688", "date": "2015-08-01 17:26:15 -0400", "subject": "Ensure that info output is terminated by a linefeed.", "body": "On some systems the JSON->encode() function was adding a linefeed and on others it was not. This was causing regression test failures in in the test logs and may have also been inconvenient for users." }, { "commit": "1b0f997f59ef67358b7091fe832b9a5b026da0de", "date": "2015-07-24 18:05:06 -0400", "subject": "Implemented issue #119: Make sure all repo permissions are 640/750.", "body": "Updated remaining test logs." }, { "commit": "97c036973cb945912a08ee7774bc5619a331db7f", "date": "2015-07-23 13:11:38 -0400", "subject": "Implemented issue #119: Make sure all repo permissions are 640/750." }, { "commit": "f3199d13b1c213fe6a52c16ca935fe878dcfbc97", "date": "2015-07-16 11:12:48 -0400", "subject": "Implement issue #115: When restoring copy pg_control last." }, { "commit": "702afeb6f0e14003d4e694e5d3f2b3b39f5b6164", "date": "2015-07-13 15:37:50 -0400", "subject": "Merge branch 'master' into dev after release 0.78" }, { "commit": "c568f5e72745ec9a799c8cd42a5bb8492a5dbec2", "date": "2015-07-13 14:44:32 -0400", "subject": "v0.78: Remove CPAN dependencies, stability improvements" }, { "commit": "65847b5fb1c2886ea7d2d546236c2db3202a34ae", "date": "2015-07-13 13:25:04 -0400", "subject": "Vagrant backrest mount is no longer RO so development can be done entirely within VMs." }, { "commit": "89c0f23f372aa08dd7eaff51eb08fb09f8749d89", "date": "2015-07-13 12:13:07 -0400", "subject": "Update release notes and some test fixes." }, { "commit": "073e3b7c0055a45b0717d4a4b91ede54a3b68569", "date": "2015-07-11 22:47:22 -0400", "subject": "Minor for regression tests. Improved CentOS 6 vagrant config." }, { "commit": "ea7914d9805aea676b25bd31ce38459f32803294", "date": "2015-07-11 19:07:28 -0400", "subject": "Wait now uses a Fibonacci backoff rather than exponential." }, { "commit": "b777525f62fdde71dab702a9afef9b5ad8f6a4b5", "date": "2015-07-11 17:16:35 -0400", "subject": "Added --exe param to allow testing of packaged versions. Updates to u12 vagrant vm." }, { "commit": "e9ce4efedfb653338a5a9a40bbe1238393ea6886", "date": "2015-07-10 09:20:28 -0400", "subject": "Removed dependency on dequeue_timed() which eliminates the CPAN install. Added vagrant config for CentOS 6." }, { "commit": "1df8c305499ee698f91dacf9958c8eb56e71e64c", "date": "2015-07-09 10:21:02 -0400", "subject": "Swapped config and operation sections to hopefully make the docs flow a little better." }, { "commit": "e799361e90adcb1648b2ce208f2fb3ffdd47df2e", "date": "2015-07-09 10:11:49 -0400", "subject": "Clarification for CPAN requirements." }, { "commit": "8b7fd99637d26cff0df192534a729effa435d97a", "date": "2015-07-06 21:00:48 -0400", "subject": "Added vagrant configuration for Ubuntu 12.04. Changes to regression tests to work better with VMs." }, { "commit": "bb443dd098140e07d8ceddc56673b45f303c748d", "date": "2015-07-06 17:59:44 -0400", "subject": "Renamed pg_backrest.pl to pg_backrest in the docs." }, { "commit": "38f48be3cf7be6a24ee513f48fd4a55eb54a1ee5", "date": "2015-07-02 10:05:13 -0400", "subject": "Improvements to help to make it more dynamic depending on environment. Changed PgBackRest to pgBackRest." }, { "commit": "12932dc54cf24a43b7db7c7e829ad04cbc8816d6", "date": "2015-06-30 14:57:17 -0400", "subject": "Merge branch 'master' into dev after release 0.77" }, { "commit": "b1ded135df1e3dd4d4b40a0cbb1a7c1303e7a037", "date": "2015-06-30 14:47:58 -0400", "subject": "v0.77: CentOS/RHEL 6 support and protocol improvements" }, { "commit": "7248795b91dcc6fe749561afb556f625dfe20497", "date": "2015-06-29 22:07:42 -0400", "subject": "Work on issue #48: Abandon threads and go to processes", "body": "Replaced IPC::System::Simple and Net::OpenSSH with IPC::Open3 to eliminate CPAN dependency for multiple distros. Using open3 will also be used for local processes so it make sense to switch now." }, { "commit": "c59adfc68dd10e2ab42a686cace1829b6e4d4e2a", "date": "2015-06-27 11:12:44 -0400", "subject": "Shorted test command line params." }, { "commit": "760baab6b25196df2e1aa430e8736debad34a433", "date": "2015-06-22 14:35:25 -0400", "subject": "Implemented issue #111: Add the psql path for *BSD.", "body": "Author: Eric Radman\nModified by Committer" }, { "commit": "dcad0f70070488692c39409b99cb082fe3d0e796", "date": "2015-06-22 14:20:56 -0400", "subject": "Merged issue #111: Print the real exception when DBH->connect fails.", "body": "Author: Eric Radman" }, { "commit": "f210fe99c33fbab478fc3e75cc09bd5e5089446f", "date": "2015-06-22 13:11:07 -0400", "subject": "Implemented issue #109: Move VERSION into source code.", "body": "Also stopped replacing FORMAT number which explains the large number of test log changes. FORMAT should change very rarely and cause test log failures when it does." }, { "commit": "af580168712ac0c370cc5532bb34ab1805823ffa", "date": "2015-06-22 10:04:58 -0400", "subject": "Release notes for issue #108: Incompatibility with Perl 5.10.1." }, { "commit": "fdd9e8eb176ec0f5c087726393f15a19d121fabd", "date": "2015-06-22 09:58:01 -0400", "subject": "Improved release notes on fsync to include restore." }, { "commit": "3f841fcd95c17541d5f04012a72153a8d5cbd8ce", "date": "2015-06-22 09:51:16 -0400", "subject": "Improved issue #110: 'db-version' is required but not defined.", "body": "Improved the error message and added hints." }, { "commit": "61dfeca3c1d2ddfce53de9fafd137607e21223b8", "date": "2015-06-21 12:06:13 -0400", "subject": "Fixed issue #108: Incompatibility with Perl 5.10.1" }, { "commit": "49f1a3e4812e962201ae80c92ad377f3f8dc4643", "date": "2015-06-19 14:27:44 -0400", "subject": "Document issue #108: Incompatibility with Perl 5.10.1" }, { "commit": "0695c0e7af347478c86a6aaddf068f712f27d91d", "date": "2015-06-19 14:02:26 -0400", "subject": "Document issue #108: Incompatibility with Perl 5.10.1" }, { "commit": "06c290421240ed74f0388a3b71e240fc1a9e6162", "date": "2015-06-18 16:55:09 -0400", "subject": "Change operation constants and functions to command." }, { "commit": "4e2c14623b5fe018ab71f797c2c1b9d9a58634cc", "date": "2015-06-18 15:39:30 -0400", "subject": "Work on issue #48: Abandon threads and go to processes", "body": "More separation of the protocol and remote layers than was done in issue #106.\nSettings are passed to the remote via command-line parameters rather than in the protocol." }, { "commit": "22e126eda7802ac30d7f275a58425528238ee265", "date": "2015-06-17 15:40:12 -0400", "subject": "Fix for logic that removes trailing spaces from code." }, { "commit": "a050b76fa9a6785f67a7b492b8b8bad7dd94a482", "date": "2015-06-17 15:33:58 -0400", "subject": "Implement issue #107: Better debug commands." }, { "commit": "a5d9d6d84d584ed1f574f0eb7f77b32ea2c8e6e6", "date": "2015-06-17 12:53:33 -0400", "subject": "Added file and directory syncs to the File object for additional safety during backup and archiving." }, { "commit": "9511f9c35cbc4b5fac38fb67b86ad9c2f859be69", "date": "2015-06-17 11:26:07 -0400", "subject": "Implemented issue #106: Roll pg_backup_remote into pg_backrest" }, { "commit": "0ba40292532c11d00b6f1e3a5096d0e1a021cac5", "date": "2015-06-16 16:21:24 -0400", "subject": "Update version to 0.80." }, { "commit": "da8b337ee80b7c28ffb8fde7a4b0a11418b926c8", "date": "2015-06-16 15:44:27 -0400", "subject": "Added supported versions of PostreSQL." }, { "commit": "c23916d6de7004a5c039ea7810e7306e6fe99b6e", "date": "2015-06-14 20:59:48 -0400", "subject": "Merge branch 'master' into dev after release 0.75" }, { "commit": "1afbab010fc89476ba8a234772f86ca38e6c4f26", "date": "2015-06-14 20:59:32 -0400", "subject": "v0.75: New repository format, info command and experimental 9.5 support" }, { "commit": "8459e25e32433c7ecba8d4e5189fee45681ef8ae", "date": "2015-06-14 11:49:55 -0400", "subject": "Test fix for issue #96." }, { "commit": "b365d9aacc38dd8f8d6d43a99d034cb1cf8b20ff", "date": "2015-06-14 11:48:33 -0400", "subject": "Updated release notes for 0.75." }, { "commit": "b865070eddb4eedbeab70e5de287e250680b3f85", "date": "2015-06-14 10:12:36 -0400", "subject": "Experimental 9.5 support. Unit tests are not working yet." }, { "commit": "0b6f81a812a02c34b2f8cc9e5b14139d27dc4895", "date": "2015-06-14 09:36:58 -0400", "subject": "Implemented issue #50: Reverse ordering by file size." }, { "commit": "57640d1ac33c6a38c6afe632e1b8a3d6271740fc", "date": "2015-06-14 08:37:37 -0400", "subject": "Implemented issue #96: Executable names" }, { "commit": "6c807f2ddd6a996a46e0d3733f09e61110361742", "date": "2015-06-13 18:30:10 -0400", "subject": "Fixed release notes for info command." }, { "commit": "148836fe44e81622d1836f851b8b87e21d32188e", "date": "2015-06-13 18:25:49 -0400", "subject": "Implemented issue #26: Info command.", "body": "* Includes updating the manifest to format 4. It turns out the manifest and .info files were not very good for providing information. A format update was required anyway so worked through the backlog of changes that would require a format change.\n\n* Multiple database versions are now supported in the archive. Doesn't actually work yet but the structure should be good.\n\n* Tests use more constants now that test logs can catch name regressions." }, { "commit": "5a73b1a2408fd22f90417fcbf70edd41a6a99f3b", "date": "2015-06-10 15:54:24 -0400", "subject": "Fixed minor typos in the documentation." }, { "commit": "aca4511350ff6a2d30e712ac0eda39774a93ffa0", "date": "2015-06-10 15:44:13 -0400", "subject": "Documentation for issue #93: Prevent misconfigured retention-archive setting", "body": "Not an actual fix - just some documentation to (hopefully) keep users from getting bitten until then." }, { "commit": "af98f164cd5f5dfce97b88434e8fe19f7bc0d6aa", "date": "2015-06-02 09:42:56 -0400", "subject": "Fixed issue #97: Interleaved log lines during parallel operations." }, { "commit": "7e06e53a69e79c49a44bbab14a99f15ac20548d9", "date": "2015-06-01 09:39:02 -0400", "subject": "Merge branch 'master' into dev after release 0.70" }, { "commit": "f83f0fa54d1a3b13524fa0ded8a6dffe88276bbc", "date": "2015-06-01 09:24:38 -0400", "subject": "v0.70: Stability improvements for archiving, improved logging and help" }, { "commit": "95d62a82d94985165145d1d543cfdf4acb197992", "date": "2015-05-31 09:50:42 -0400", "subject": "Minor log changes for formatting and consistency." }, { "commit": "200e3b26fe902ae1c71a5954c72455902676f90a", "date": "2015-05-29 22:11:51 -0400", "subject": "Prevent log test regexp replacement when multithreaded. Logging should be completely disabled in this case." }, { "commit": "1586e0eb7555a6f2d44925b3572ab2457ff3e069", "date": "2015-05-29 17:58:13 -0400", "subject": "Implement issue #92: Check for ERRORs in backup full tests" }, { "commit": "e7d2d704fe4befc028257e5f88a97b810a423449", "date": "2015-05-29 16:31:12 -0400", "subject": "Fixed issue #91: Race condition in async archive-push." }, { "commit": "5fd4f3bd5b68db1f68f1df9c00e513a15fbd387b", "date": "2015-05-29 14:39:43 -0400", "subject": "Improvements to log testing.", "body": "Replaced tokens are now numbered to give a more accurate rendition of the logs.\nSome formatting improvements." }, { "commit": "5fce709ae7d925c6969aa002da2dd262fe93d73a", "date": "2015-05-29 12:33:38 -0400", "subject": "Document issue #88: Thoughts on repo & release management." }, { "commit": "d321ef0b6d5af0c1dce8fd5701edbadffffce5af", "date": "2015-05-29 12:26:31 -0400", "subject": "Implement issue #89: Make confess backtraces log-level dependent.", "body": "ASSERTs still dump stack traces to the console and file in all cases. ERRORs only dump stack traces to the file when the file log level is DEBUG or TRACE." }, { "commit": "13e4eec629df044c90c64424a6992ff3e99b5173", "date": "2015-05-29 11:41:19 -0400", "subject": "Implement issue #90: Move archive-max-mb archive-stop checks to end of archive-push." }, { "commit": "639c27e113fb8fd76be5ca5533e420c2ed11b44c", "date": "2015-05-29 08:18:12 -0400", "subject": "Release notes for issue #68: Allow duplicate WAL to be pushed if the checksum matches." }, { "commit": "7ace66e544cd4da848b30c893131b61403242b33", "date": "2015-05-29 08:12:39 -0400", "subject": "Implement issue #68: Allow duplicate WAL to be pushed if the checksum matches." }, { "commit": "6d2f2d3f91227dffe635ab14de3db3d83c09e0c6", "date": "2015-05-28 20:52:42 -0400", "subject": "Fix for issue #74: More helpful message when targeting missing stanzas." }, { "commit": "3083e5fc7ef96368351a9558fe04e4e7c71c9490", "date": "2015-05-28 13:17:34 -0400", "subject": "Fix for issue #83: Provide more helpful error message during archive-stop situations. Fix for issue #84: archive-async in combination with archive-max-mb doesn't work as documented. Unit tests for archive stop." }, { "commit": "a4974f8996c519024f6b645650c9f598b41be553", "date": "2015-05-26 15:29:42 -0400", "subject": "Fix for issue #70: command line help improvements" }, { "commit": "ca0c866d3babd68fb433a12e9efda066ffb8e9eb", "date": "2015-05-26 12:26:59 -0400", "subject": "Implement issue #71: log a message when waiting for a checkpoint Some other log improvements" }, { "commit": "5c43e7035a2adfafa0c8f3a72dd46913ce0cb771", "date": "2015-05-26 11:36:03 -0400", "subject": "Implement issue #79: Support comment characters in config file" }, { "commit": "e9099b99aad5cec0b87668fa90babfc18472e63f", "date": "2015-05-26 10:01:05 -0400", "subject": "Updated required modules. Minor doc fixes." }, { "commit": "d5335b40e83539bf137ff9051ecac84e6d85a2b6", "date": "2015-05-22 14:49:14 -0400", "subject": "Fix for issue #80: enabling archive-copy causes failing differential & incremental backups" }, { "commit": "5ada7fb5adf25d7127d08879cd270164d231a1be", "date": "2015-05-12 15:44:10 -0400", "subject": "Use JSON::PP instead of JSON since it is shipped with core Perl." }, { "commit": "ab4efce5d1064cf887dfea4e541d95c8605444a8", "date": "2015-05-11 18:36:02 -0400", "subject": "Merge branch 'master' into dev after release 0.65" }, { "commit": "49fe40850fad0a850e52d9ebe79e32b7029c5735", "date": "2015-05-11 18:29:40 -0400", "subject": "v0.65: Improved resume and restore logging, compact restores" }, { "commit": "a7d6382cf2317a0d2502f4410fb372778059206f", "date": "2015-05-08 19:33:34 -0400", "subject": "Unit test fix for absolute path change in a0d985b7ad37bb2582d6d92ddd225a9090da1b64." }, { "commit": "9aa41ee76bc4f14b8f8e2856893ac09ad68c33d0", "date": "2015-05-08 18:34:27 -0400", "subject": "Added tablespace setting to allow compact database restores for development, staging, etc." }, { "commit": "a0d985b7ad37bb2582d6d92ddd225a9090da1b64", "date": "2015-05-07 17:37:25 -0500", "subject": "Fixed an issue where an absolute path was not written into recovery.conf when the restore was run with a relative path." }, { "commit": "1ac4b781fd304fcc6aa663afc324cdb2d1fdcb06", "date": "2015-05-07 15:56:56 -0600", "subject": "Better info logging for restore. Most of the messages were debug before and some important ones were missing." }, { "commit": "095a9a0b831877b9b5d62b4b37da4caca0edb7df", "date": "2015-05-07 10:29:30 -0600", "subject": "Added resume setting to allow disabling resume feature." }, { "commit": "328c2ca5c0dd5ed67ddc2c5d76102cee16235f20", "date": "2015-05-06 18:24:34 -0600", "subject": "Much better resume: 1) Re-checksums files that have checksums in the manifest 2) Recopies files that do not have a checksum 3) Saves the manifest at regular intervals to preserve checksums 4) Unit tests for all cases (that I can think of)" }, { "commit": "56588f6fdd30378728372e1dea2a4920c043acb3", "date": "2015-05-05 11:08:48 -0600", "subject": "Log testing can now be enabled for certain deterministic tests. This works by comparing the generated logs against a previous copy. Currently only enabled for the backup/synthetic tests." }, { "commit": "1d1c7e47d149fc9b3b9b0c1db6238e998d56c804", "date": "2015-05-01 19:13:12 -0400", "subject": "Doc fixes for archive-max-mb setting." }, { "commit": "b0db7c04979d4f012bfd66067a25088bd84687ad", "date": "2015-04-29 17:43:28 -0400", "subject": "Fixed case error in Perl module name." }, { "commit": "174896e7971931662a7672dd0271fe0f23b846d0", "date": "2015-04-23 20:52:41 -0400", "subject": "Centralized wait functions." }, { "commit": "2dac171642b6bd876ee44c4d4c9bcb238f7df999", "date": "2015-04-22 16:39:53 -0400", "subject": "More modular locking - this is the first part of a series of improvements." }, { "commit": "87f69508e3500ff7c93a7637bfeb4643f68f2c74", "date": "2015-04-21 10:48:01 -0400", "subject": "Set version to 0.75" }, { "commit": "6987cfaa536555bcb1cb0df3e40c03802a786aa0", "date": "2015-04-21 09:46:28 -0400", "subject": "Merge branch 'master' into dev after release 0.61" }, { "commit": "a9b9ec249234b9106f7c8a7615e227d1b7783a07", "date": "2015-04-21 09:45:03 -0400", "subject": "v0.61: bug fix for uncompressed remote destination" }, { "commit": "4b51f5dc500d9ba63246b953db57deb30afb3a57", "date": "2015-04-19 18:00:51 -0400", "subject": "Removed unused font." }, { "commit": "4bc9ee9b8a39ffeab8b2bab434698106ada795c6", "date": "2015-04-19 17:53:45 -0400", "subject": "Merge branch 'master' into dev after release v0.60." }, { "commit": "5185d49873914c3207894452abfb0a504625821d", "date": "2015-04-19 17:53:29 -0400", "subject": "v0.60: better version support and WAL improvements" }, { "commit": "279bd07623be81d9197e5612ac8a85b2d57c5335", "date": "2015-04-19 17:29:52 -0400", "subject": "Each option is assigned a source to designate where it came from (param, config, default). operationWrite() created to easily pass parameters on to a new process." }, { "commit": "e20a3c991d3868afa050a20e99af7f98895c5d99", "date": "2015-04-19 17:28:19 -0400", "subject": "Added tests for set = latest." }, { "commit": "cb153f7242a8249fe34ee3f391260f6a108acde2", "date": "2015-04-19 17:27:40 -0400", "subject": "Docs and comment fixes." }, { "commit": "6646089f9a15b7500ee18082e8a01222a8eaac16", "date": "2015-04-19 17:27:01 -0400", "subject": "wait_remainder() now waits until .05 seconds after the second to resolve some resolution problems." }, { "commit": "f1cc1d6123fac516dc797ab7fce5ac1a6be62390", "date": "2015-04-11 15:02:04 -0400", "subject": "Refactored backup manifest update by centralizing the code." }, { "commit": "b8ce891603d66dddf9d71bdfabc8e6d9908f60e8", "date": "2015-04-11 12:31:39 -0400", "subject": "Altered rsync comparison test to use a specially crafted table that has a 70% compression ratio. Improved the output of file_size_format()." }, { "commit": "9fe7f87e3a2dc206b4d7464f34b5f200fa30df9f", "date": "2015-04-07 19:21:48 -0400", "subject": "Allow any boolean option that is not command-line only to be negated." }, { "commit": "43d86e64a4ce73d69c4d9c73f32ef5cff23d5344", "date": "2015-04-07 18:36:59 -0400", "subject": "First pass at tests comparing rsync to backrest. Decent results, but room for improvement.", "body": "All tests local over SSH with rsync default compression, 4 threads and default compression on backrest. Backrest default is gzip = 6, assuming rsync is the same.\n\nOn a 1GB DB:\n\nrsync time = 32.82\nbackrest time = 19.48\n\nbackrest is 171% faster.\n\nOn a 5GB DB:\n\nrsync time = 171.16\nbackrest time = 86.97\n\nbackrest is 196% faster." }, { "commit": "7081c8b86701c88abfee03b01382364f79a7cae9", "date": "2015-04-07 07:34:37 -0400", "subject": "New model where threads are created early and destroyed late. Backups now work like restores in terms of how jobs are queued. Split out BackupFile and RestoreFile for easier multi-threading/processing." }, { "commit": "808c7863b64ba56f3fe588f31ef86139a133896c", "date": "2015-04-03 09:56:03 -0400", "subject": "Duplicate WAL issue in 9.3 was fixed in 9.3.6." }, { "commit": "3f651a8ce8d489a680e08467b9baccd7edef188b", "date": "2015-04-02 22:07:23 -0400", "subject": "Unit tests will now work across all installed versions of Postgres. Created a function to list all supported versions. Now used for all version checking." }, { "commit": "0b27c749991ac58de400c81c5e0fe4d0e890f957", "date": "2015-04-01 16:28:16 -0400", "subject": "Increased version to 0.60 and added release notes." }, { "commit": "984fceea67770938d6a4030278d2226cd9e14b5a", "date": "2015-04-01 15:58:33 -0400", "subject": "Moved archive functions from pg_backrest.pl and Backup.pl to Archive.pm. Moved Remote code from pg_backrest.pl to Config.pm. Added version specific code to regression tests and Db.pm. archive-push checks for duplicate WAL in the archive. archive-push reads the db sys id to match up WAL to the correct archive." }, { "commit": "9caccc2ce242c1ee6980c50918f022992c5235fa", "date": "2015-03-29 13:35:36 -0400", "subject": "Doc fixes." }, { "commit": "92a4d648ace8d112bb80f2ebffc6441fca94d11e", "date": "2015-03-26 17:42:45 -0400", "subject": "Fixed issues in collision unit tests." }, { "commit": "16cc2110c54648d2ddabe86e6533518b80edc29c", "date": "2015-03-25 15:17:59 -0400", "subject": "Merge branch 'master' into dev" }, { "commit": "b37d59832f6c3dc2050879e7231228d497b4059c", "date": "2015-03-25 15:15:55 -0400", "subject": "v0.50: restore and much more" }, { "commit": "82fa497511850c7dfe7521b99150bfd95a090a6c", "date": "2015-03-25 14:43:21 -0400", "subject": "Last doc fixes." }, { "commit": "4a6f4e23408b3c65a5594a09c6218ceef90615ee", "date": "2015-03-24 18:50:54 -0400", "subject": "Getting docs in shape for the next release." }, { "commit": "a998119cbaff2ffbff7e469ef5e5edbfee03d132", "date": "2015-03-24 18:50:14 -0400", "subject": "Various option and unit test fixes." }, { "commit": "a3604bc5121cd4a427c90bcd72468b5b32c5d938", "date": "2015-03-24 11:43:37 -0400", "subject": "Changed retention section to expire." }, { "commit": "58d6c37f4af5bc040a15bacd90c1ab056f7bca03", "date": "2015-03-23 17:17:43 -0400", "subject": "Changed permission to mode in manifest." }, { "commit": "8a3c6388b2b7981318f2e7c626cd1b88f907218a", "date": "2015-03-23 16:01:15 -0400", "subject": "Removed WAL from some option names - still waffling on this naming thing." }, { "commit": "66c474abe21d412ef6f4f5db0fc30063a8466cc4", "date": "2015-03-23 15:45:25 -0400", "subject": "A few unit test fixes." }, { "commit": "1729fa1c51c369c57a79061186818ce4781f408c", "date": "2015-03-17 18:31:05 -0400", "subject": "Added unit tests for expiration." }, { "commit": "f4f31302f0529c510ca535e3c57e67181f637092", "date": "2015-03-16 14:45:53 -0400", "subject": "Broke archive-required into two options: backup-wal-check and backup-wal-store." }, { "commit": "258fb9c6e24445e8be390b729cae005208decdca", "date": "2015-03-16 14:01:01 -0400", "subject": "More work on automated docs. Merging this to go back to some feature/bug work for a while." }, { "commit": "882f068254242ed06bceb57e14f5f52e5ed317f8", "date": "2015-03-12 12:15:19 -0400", "subject": "All config options can now be provided on the command-line. Lots of name changes, but more thought needed there. Still needs cleanup." }, { "commit": "7675a11dedaeebaeb5f546bb6c1849f989af794a", "date": "2015-03-08 14:05:41 -0400", "subject": "First pass at building automated docs for markdown/html. This works pretty well, but the config sections of doc.xml still require too much maintenance. With the new Config code, it should be possible to generate those sections automatically." }, { "commit": "ae6bdecfaf47893346443620a0a57586cf22ebdf", "date": "2015-03-08 13:26:09 -0400", "subject": "Split command-line parameter processing out into a separate file. This is in preparation allowing all parameters to be specified/overridden on the command line, with pg_backrest.conf being option." }, { "commit": "f115e01b71b23f1fc4fc8b98c42993a31b87a3e0", "date": "2015-03-04 22:38:27 -0500", "subject": "More work on docs." }, { "commit": "8dc3ba184d661a5c865c395618d20f22e7f4ccc4", "date": "2015-03-04 20:09:26 -0500", "subject": "More work on docs." }, { "commit": "163f8982624632674c55bf5fddadf3423460a228", "date": "2015-03-04 18:50:02 -0500", "subject": "HTML docs look to be in a workable format." }, { "commit": "bfb2c05357521718ef115ca40af60ac51f11ed69", "date": "2015-03-04 00:36:54 -0500", "subject": "Started on new HTML docs. The markdown is not cutting it." }, { "commit": "942b29d5b42a9ad62c96023def0c8cf1a3fc6b19", "date": "2015-03-03 23:15:40 -0500", "subject": "Added unit test for recovery type=preserve." }, { "commit": "d19baefdb99e4853f3dec7abaae757b18e117a16", "date": "2015-03-03 22:33:41 -0500", "subject": "Removed db-timestamp-start and stop from manifest. Better to get these values from" }, { "commit": "7509b01e22352404ef89ded72b8bd413c7f0a726", "date": "2015-03-03 21:21:07 -0500", "subject": "Added format to manifest to identify a manifest/dir structure version." }, { "commit": "f5761a41c12df812ef6c3dd3f9a15654deead958", "date": "2015-03-03 10:03:55 -0500", "subject": "Modules cleanup." }, { "commit": "3d0d308a98ff95b60a4b1258344443cdef934230", "date": "2015-03-03 00:57:20 -0500", "subject": "Made all warnings FATAL. Fixed one bug that was exposed." }, { "commit": "c0ec62b131a6f3a780c659ed82a8e3403d16092b", "date": "2015-03-02 23:42:55 -0500", "subject": "Fixed bug in File->hash() and removed improper last statements from do loops." }, { "commit": "7dbb11e8b85a81305f25d840433d6b125fdf5a76", "date": "2015-03-02 22:58:32 -0500", "subject": "Added buffer-size param and added config validation improvements." }, { "commit": "8e8f2f3c77793d24ef1a4aaa7f373abdc9610ac0", "date": "2015-03-02 20:36:12 -0500", "subject": "New config options compress-level and compress-level-network to control compression levels." }, { "commit": "49112eb6d3a43446bfe7c0830a99b6eef5b0b8fa", "date": "2015-03-02 09:46:11 -0500", "subject": "Better compression window settings." }, { "commit": "d874e122aaa5382b6610089cae1b2379ee97985f", "date": "2015-03-01 23:41:01 -0500", "subject": "Optimized compression to disable headers/crc when the source and destination are both uncompressed. Set different compression levels based on usage." }, { "commit": "0df1b7c4733cd354b2e6e55e2de7e034fb3fe1c9", "date": "2015-03-01 22:43:32 -0500", "subject": "Changed file sizes are now detected and stored in the manifest. Remove thread file minimums - they are unrealistic for a real db and hinder unit tests." }, { "commit": "23102f19e57f1548aab5b9709fc7aebed3567ba5", "date": "2015-03-01 22:23:52 -0500", "subject": "All copy() cases generate checksums during copy. Unit tests for bAppendChecksum option for copy()." }, { "commit": "83658a477820eae8e20238d9fc11034724cb6699", "date": "2015-03-01 16:43:54 -0500", "subject": "Docs for checksum option being removed." }, { "commit": "76391dde90856f5cbbc4be3b506524000938a412", "date": "2015-03-01 16:42:27 -0500", "subject": "Archive checksums are not calculated in stream." }, { "commit": "393525d28030711e0aaf0226d7744673d7b01097", "date": "2015-03-01 15:17:57 -0500", "subject": "Full refactor of binary_xfer. Compression now uses Compress::Raw::Zlib." }, { "commit": "77bc4238dc1afd854049fd901eb1dce76185371f", "date": "2015-03-01 13:41:35 -0500", "subject": "ZLib stuff starting to look good. All references removed from File and using binary_xfer for all de/compression." }, { "commit": "7ede058b456cb708acdcdba93b52a6729adf9380", "date": "2015-02-28 20:31:56 -0500", "subject": "Backup checksums are no longer optional." }, { "commit": "28326d6b4c4a815882acb1d6e95a28701fd12b2b", "date": "2015-02-28 19:07:29 -0500", "subject": "File->copy now returns hash and size in all cases, though the local copies are not optimal. They just call hash_size()." }, { "commit": "260a6cb8f1c7a98ad44f1c4ba0d654c6ca49f544", "date": "2015-02-28 15:54:49 -0500", "subject": "Working on calculating hash and file size in binary_xfer()." }, { "commit": "0f94476a1f3c4af2cb6aa9bc631bc4a01e05a8ad", "date": "2015-02-28 12:10:50 -0500", "subject": "Changed buffer sizes." }, { "commit": "f6b9ab732671b75a7ebb708c8ce85b79b575d46b", "date": "2015-02-28 10:28:25 -0500", "subject": "Minor param fix." }, { "commit": "f93c6caec206071c91d814b3d490da5d357ff44f", "date": "2015-02-28 10:23:33 -0500", "subject": "Backup/restore copy will be run in the main process when thread-max=1. I've resisted this change because it adds complexity, but I have to accept that threads are not stable on all platforms. Or maybe any platform." }, { "commit": "5d10a18b257a92ce520c575a488d8921e8284f5e", "date": "2015-02-28 10:21:36 -0500", "subject": "Added thread-max parameter to test.pl to allow backup threads to be specified." }, { "commit": "d6205d95011e5efb3856f5e62d09571374070492", "date": "2015-02-27 23:31:39 -0500", "subject": "Looks like all unit tests pass - now for a long test run to see if that is really true. And to see if the old lockup is gone." }, { "commit": "25442655c84cd10d026e23f5ad66aa17e5c96ae5", "date": "2015-02-27 18:42:28 -0500", "subject": "Hash of compressed file is working. Something still broken in binary_xfer because some 0 length archive files are showing up. Investigating." }, { "commit": "53f783d3fecd725aed2b7e1a203e11e8f8c85e0b", "date": "2015-02-27 16:36:40 -0500", "subject": "binary_xfer compress/decompression working without threads. All unit tests passing. Hooray." }, { "commit": "c18c629878705c01798e099de4f300b26129b679", "date": "2015-02-27 14:11:59 -0500", "subject": "Compress looks good, back to decompress." }, { "commit": "bd44b2c471a093e350fa5f18bb33832cf75c784b", "date": "2015-02-27 13:48:29 -0500", "subject": "Making binary xfer more modular." }, { "commit": "2506bbb21a044725309e3e8c2ba6761082114676", "date": "2015-02-26 19:12:22 -0500", "subject": "Working on decompression." }, { "commit": "64e1b1cea789b6751fc285a9861912cf09aca04b", "date": "2015-02-26 14:16:12 -0500", "subject": "Simple compression case is working. Still need to implement decompress, handle flags, and do checksum decompression." }, { "commit": "b9378d94a21f28c466a2e9fea9fa19d60987be86", "date": "2015-02-26 09:22:05 -0500", "subject": "Working on removing threads from instream compress/decompression." }, { "commit": "d2602a5c0762ca7ad1cd275587556f2a280b8098", "date": "2015-02-03 20:33:33 -0500", "subject": "Tracking down a lockup in the restore threads. It doesn't happen in backup - they are the same except that restore uses the ThreadGroup object. I'm beginning to think that threads and objects don't play together very nicely. Objects in threads seems OK, but threads in objects, not so much." }, { "commit": "7bee43372d41df531d6c571140dbb8eed805adf2", "date": "2015-02-02 21:10:44 -0500", "subject": "Increase timeout." }, { "commit": "d4aae88becf6e82df8f5e3eb71c24a17098bed88", "date": "2015-02-02 20:11:32 -0500", "subject": "Try non-blocking dequeue in backup." }, { "commit": "850c978240329d536f641e6832871e738526e435", "date": "2015-02-02 19:56:48 -0500", "subject": "All restore compares no-start-stop for now." }, { "commit": "d93b246a692b29f09fcb1b8539dbaad443da1e14", "date": "2015-02-02 19:34:34 -0500", "subject": "Empty restore queues in a non-blocking way." }, { "commit": "7f38461c6814e0e092ee83a3222112aa21c85456", "date": "2015-02-02 18:48:33 -0500", "subject": "Remove ThreadQueue->end(). Not supported on all platforms." }, { "commit": "bde8943517ad260d87414ba6f8aa03c3e799e790", "date": "2015-02-02 18:33:11 -0500", "subject": "Fixes to restore compare unit tests." }, { "commit": "8abcf6caf109479e069f2ec36bf37d7007261c22", "date": "2015-02-02 08:28:37 -0500", "subject": "For no just ignore sizes in the tests since they are normal and do not indicate a bad backup." }, { "commit": "a6d3b7e1a960052728cc274645ebb011b741ab18", "date": "2015-01-31 23:04:24 -0500", "subject": "Working on checking restores against the manifest. Current issue is that the manifest does not always record the final size of the file - it may change while the file is being copied. This is fine in principal but makes testing a pain." }, { "commit": "018a2afacadbf9e6a848c1e0ff66f0cd9d732755", "date": "2015-01-31 18:23:37 -0500", "subject": "Moved bNoStartStop tablespace mapping to Manifest object." }, { "commit": "d7b669d5605bf75116c2d9584c745dfff9fee54c", "date": "2015-01-31 18:15:08 -0500", "subject": "Moved manifest build to manifest object." }, { "commit": "cd500484a2ddebdd43730c051835c3b5b18d83fe", "date": "2015-01-31 17:37:55 -0500", "subject": "Revert \"Working on doc formatting.\"", "body": "This reverts commit a0559799fd2330e7d6c7a28f431bbdd2828eb80e." }, { "commit": "a0559799fd2330e7d6c7a28f431bbdd2828eb80e", "date": "2015-01-31 17:36:25 -0500", "subject": "Working on doc formatting." }, { "commit": "682d419d082f96628811909a969101d61b5a2c4f", "date": "2015-01-31 17:32:16 -0500", "subject": "Fixed file list." }, { "commit": "1ba176285e38e85e03dab31718cfc1a742bcd574", "date": "2015-01-31 17:10:19 -0500", "subject": "Work on restore/recovery docs." }, { "commit": "f94812932a3fc3c3a59ac2da499268c9768ba2e6", "date": "2015-01-31 16:27:32 -0500", "subject": "Working on operations docs." }, { "commit": "267efbd71d56af8b2dc68dc5d21c710b69e16bbb", "date": "2015-01-31 15:37:59 -0500", "subject": "Fixed restore::thread-max" }, { "commit": "0c9da6a5ab8cdfe8283cebfbb7ea8fb751857e1d", "date": "2015-01-31 15:06:53 -0500", "subject": "Removed version file - redundant to the version in backup.manifest." }, { "commit": "e524c4dd1a9e1fe0ae4a46f90eb12ae7a50bb333", "date": "2015-01-31 13:48:09 -0500", "subject": "Timeline unit tests are working. Options from config file are being written to recovery.conf. Fixed issue with .history files not being picked up by archive-xfer." }, { "commit": "cd9df8b4f87cb2042c1b2ddfbba1a1fe76a1fdee", "date": "2015-01-31 09:05:05 -0500", "subject": "Renamed uninit to cleanup." }, { "commit": "11c257296a7632ae760b1ddae66beec2f9e114ca", "date": "2015-01-30 20:16:21 -0500", "subject": "In the end it was a single non-undefed reference holding up the show. The Backup file should be split into Archive, Backup, Expire, and made into objects. That would cut down on this kind of nastiness." }, { "commit": "50e015a8385e347e2ba75fb84f9ab7c5fef7fa70", "date": "2015-01-30 18:58:49 -0500", "subject": "Revert \"Abortive attempt at cleaning up some thread issues - I realized the issue is in mixing threads and objects too liberally. Trying another approach but want to keep this code for historical and reference purposes.\"", "body": "This reverts commit e95631f82ac8c15cb2492bb321703797be54eff6." }, { "commit": "e95631f82ac8c15cb2492bb321703797be54eff6", "date": "2015-01-30 14:55:55 -0500", "subject": "Abortive attempt at cleaning up some thread issues - I realized the issue is in mixing threads and objects too liberally. Trying another approach but want to keep this code for historical and reference purposes." }, { "commit": "fb934ecce9c204a5ed1d444b8c3876c8393af440", "date": "2015-01-30 14:54:08 -0500", "subject": "Allow immediate stops when discarding data at end of unit test. Makes the shutdowns faster." }, { "commit": "19e455afc1c152f212d0de771bb373a03ab5a8a1", "date": "2015-01-28 16:25:38 -0500", "subject": "Some fixes in unit tests - more needed." }, { "commit": "499d6c84220d9b9e916686aeef2c605aa6995b0b", "date": "2015-01-28 13:14:46 -0500", "subject": "Added tests for all --delta --force combinations. Added error check for postmaster running. Added error check for path not empty." }, { "commit": "16dd2717942eb52004e4cee3510fc524d8042fc9", "date": "2015-01-28 11:12:21 -0500", "subject": "Added an incremental backup to vary the unit tests." }, { "commit": "139b1cf87242995e41a68dbcb35a10c72da9d592", "date": "2015-01-28 10:29:29 -0500", "subject": "Fixed small race condition in cleanup - the archiver was recreating paths after they had been deleted. Put in a loop to make sure it gets done." }, { "commit": "60550cd45b802b9d1859d9bdd22f5211b9908944", "date": "2015-01-28 00:28:21 -0500", "subject": "Archive async now works local, but there is a pending bug to make sure archive::path != backup::path. Added code to be sure that restore will not try to log into the backup path unless it is local." }, { "commit": "b98b2df9f83c70516de37d574d36dcf6194b8f1d", "date": "2015-01-28 00:26:20 -0500", "subject": "Fixed wait_for_file() so that it will not error if the path does not yet exist." }, { "commit": "a59bd8c3281237f35da0ad4b7af33953cf53a26b", "date": "2015-01-27 22:59:59 -0500", "subject": "Restores except for type=none are mostly working. There are some failing unit tests to fix." }, { "commit": "13544d51bf9be1128486b167a3ecb5dc3fb6a09c", "date": "2015-01-27 11:44:23 -0500", "subject": "Recovery is working for none and default, but unit tests are not complete." }, { "commit": "f59aae101df6cb877f644a47e461e5e35440b21d", "date": "2015-01-26 14:59:58 -0500", "subject": "Ready to start writing recovery unit tests." }, { "commit": "ac22c314a90143f1a23f782b88d3f60e14dc6b32", "date": "2015-01-26 11:01:24 -0500", "subject": "Working on plumbing for recovery options." }, { "commit": "eeffd62a12d7afa70794dfefcdbfdc08a4083760", "date": "2015-01-25 17:27:46 -0500", "subject": "Working on recovery options." }, { "commit": "6db49e10831cafa4088b300b2884139bfd0662d0", "date": "2015-01-25 12:20:12 -0500", "subject": "Cleaned up some time functions." }, { "commit": "9069c34e3412889848da22abd5f4697ef8151010", "date": "2015-01-24 11:05:26 -0500", "subject": "Added more tablespace changes to backup unit tests." }, { "commit": "e1c5f7f8edf23d561ba7e730eb718cb2166e32e4", "date": "2015-01-23 18:28:39 -0500", "subject": "Now able to check for specific errors in unit tests - as long as they are raised with an error code." }, { "commit": "c6dad127486b569d683ae9cdff4f10693a3b4453", "date": "2015-01-23 14:12:53 -0500", "subject": "Using usleep for more resolution," }, { "commit": "d3763908e741d9d675d9967e2531dfd195ca03ba", "date": "2015-01-22 21:20:49 -0500", "subject": "Added longer sleep to show how big an issue this can be." }, { "commit": "a3b3f98f66e6e36154831800434e1a7ad3dac431", "date": "2015-01-22 20:55:16 -0500", "subject": "Fixed some issues with remote backups after restore (unit test bugs only)." }, { "commit": "21c715b25c2fd484e8b4e8d53b64a9b2d59ad7d6", "date": "2015-01-22 20:11:33 -0500", "subject": "Restore tablespace remaps are working." }, { "commit": "df4b50b9778d50b1c39fa5828c18cb2e68a5c92c", "date": "2015-01-22 19:04:55 -0500", "subject": "Restore with base path remap working." }, { "commit": "82969eb4971eb78b6a992b2f48e46c1a49189737", "date": "2015-01-22 17:43:19 -0500", "subject": "Wrote some helper functions to make backup unit tests simpler. Fixed an issue with checksum generation in resume." }, { "commit": "b53cb9f64e4d665ce138d98aecc99404db0a127c", "date": "2015-01-22 10:54:02 -0500", "subject": "Unit tests for backup resume. Improved warning message when a backup cannot be resumed." }, { "commit": "fc2838d60fea12347de7be0c239ed72a80446774", "date": "2015-01-21 18:37:49 -0500", "subject": "All references to old-style manifest eliminated (hopefully)." }, { "commit": "ade9ad78b4523b51051c536ca3814e5f1acf8521", "date": "2015-01-21 13:57:58 -0500", "subject": "Allow file keys to be validated on remove." }, { "commit": "ba7a939798d2499d40e5c1fd8ece9b6b6141777b", "date": "2015-01-21 10:44:08 -0500", "subject": "More migration to manifest object." }, { "commit": "a938813c017095dbba6160b433cc164bdea04fac", "date": "2015-01-20 19:04:45 -0500", "subject": "More migration to manifest object." }, { "commit": "c33bc1e899af1ef6ec23ec9bd73bdcc257636428", "date": "2015-01-20 18:00:03 -0500", "subject": "More migration to manifest object." }, { "commit": "26c568b7bcd58934a44f93a55a8ef28e5259ef17", "date": "2015-01-20 16:20:27 -0500", "subject": "Manifest checksum failure shows expected value to allow manual fix - though not recommended." }, { "commit": "92c9ed8963b9f73c104d684fd73ad376b751323b", "date": "2015-01-20 16:05:15 -0500", "subject": "Added checksum to manifest to detect corruption." }, { "commit": "44fad1f4a442cf18cf712c70f2eb4018f3f66a02", "date": "2015-01-20 14:42:22 -0500", "subject": "Improvements to manifest save." }, { "commit": "8a7ee1bb1f69928d37c8803cdd018197b68567be", "date": "2015-01-20 14:13:35 -0500", "subject": "Integration of new Manifest object." }, { "commit": "15a45f31f4632250620aa955cddb3e4f46427eec", "date": "2015-01-20 12:17:39 -0500", "subject": "Added feature list." }, { "commit": "e20f93ef1bca2fcac214b8ce6a732053c55f201c", "date": "2015-01-12 09:05:26 -0500", "subject": "Cleaned up test usage." }, { "commit": "84abcd7d61ce46eead29f790d6b528f3105f499b", "date": "2015-01-11 11:53:03 -0500", "subject": "Minor fixes." }, { "commit": "34116d3816ac0425bb0e787be266abade3e501c0", "date": "2015-01-11 11:52:16 -0500", "subject": "Added usage to test.pl and automatic search for psql-bin." }, { "commit": "425e9485aaf171864e4e0ad7a327f9a60378a33d", "date": "2015-01-08 16:36:45 -0500", "subject": "Re-added File-hash() - accidentally deleted it when working on owner()." }, { "commit": "131d91090614382780d16daec1815b53ebda97f2", "date": "2015-01-08 15:43:43 -0500", "subject": "New structure for --delta and --force params." }, { "commit": "2e09df2cec296b3b639ae14238c56e48836b1ff0", "date": "2015-01-08 12:04:56 -0500", "subject": "More work on new manifest object." }, { "commit": "0085e88966a48f1e5667f1e7618474c03578b04d", "date": "2015-01-07 12:58:21 -0500", "subject": "Added File-owner()" }, { "commit": "4f5ad8496d8d31b27a1da60de064716ce073062e", "date": "2015-01-07 10:59:43 -0500", "subject": "Integrating new manifest object." }, { "commit": "d6d57e654e48101fdbd2ef06316f71b395dbdfd1", "date": "2015-01-06 13:08:56 -0500", "subject": "Fixed the way wait was done after the manifest is created. Previously, waits were done for base and each tablespace which is not very efficient. Now one wait is done after the entire manifest is built. Also storing the exact time that copy began." }, { "commit": "43098086afd9cbf4e487a18fd2c2d6c486e4e224", "date": "2015-01-03 16:49:26 -0500", "subject": "Implemented timestamp last modified to record the time of the last modified file in the backup. Also added timestamp-db-start and timestamp-db-stop to for more info. timestamp-db-start can be used for PITR." }, { "commit": "91b06bef475d6ad17036c27337be59db35460f0d", "date": "2015-01-03 14:22:59 -0500", "subject": "File->manifest detects files that are modified in the future." }, { "commit": "2449d7384cd725587d8ee1ddff884581105fe796", "date": "2015-01-03 12:56:44 -0500", "subject": "Wrote a new test to check rsync collisions." }, { "commit": "2e080eedb85f7394d40fb14ec6c92b0a3e11aba5", "date": "2015-01-02 14:18:07 -0500", "subject": "Added an optional delay after manifest build so that files are not copied in the same second that the manifest is built. This can result in (admittedly unlikely) race conditions that can produce an invalid backup. I was also able to reduce the sleep types when waiting for thread termination - so unit test times are improved by almost 100%." }, { "commit": "297b22cb2bde9dddf99f557a40f8a6fb6e0807c8", "date": "2015-01-02 14:15:15 -0500", "subject": "Added INFO level logging when paths/files/links are removed during the clean phase of restore deltas." }, { "commit": "32b37335a14dd1f7ed98200df3869b0443afb2d8", "date": "2014-12-31 19:03:03 -0500", "subject": "Trying to find realistic conditions where a file can be changed without the timestamp changing between backups. So far, this is the only case I can make work - it looks like adding a 1 second pause after creation of the manifest would cover this case." }, { "commit": "59e901684d0119ec6547356386190bec90837c72", "date": "2014-12-31 14:59:33 -0500", "subject": "Working on improved backup/restore unit tests." }, { "commit": "fb948de55946fee59f9503df4c377ef19c82a1f8", "date": "2014-12-31 12:28:16 -0500", "subject": "Fixed some minor issues in ownership code found by unit tests." }, { "commit": "7e083e8749d5c767040e451d908bb2d9d9f419e1", "date": "2014-12-31 11:20:46 -0500", "subject": "Restore as root is now working." }, { "commit": "0805055d4b96de49f4ee0e7514f3fde31d95f98e", "date": "2014-12-30 15:41:43 -0500", "subject": "More work on restore ownership code." }, { "commit": "46ba3a18dfb2a0fa5c034571e46edd4297b6272f", "date": "2014-12-30 11:59:57 -0500", "subject": "Ownership code runs through - may not work for all cases." }, { "commit": "9f8f33f957ee7d1db68c48c84ebef2cb43c85cce", "date": "2014-12-23 18:52:38 -0500", "subject": "Working on restore options and integration with unit tests." }, { "commit": "a96b83beb84d1c82b24c8d79e08c674757a4bf25", "date": "2014-12-23 15:03:06 -0500", "subject": "Restore can now remap base/tablespace locations. Made Restore more modular." }, { "commit": "653ab486af8897f1058bf0e846aa739f14a4a33f", "date": "2014-12-23 12:48:25 -0500", "subject": "All restore module variables are now object local." }, { "commit": "51544edc70319b38e000003d50af16eb333c191a", "date": "2014-12-23 11:48:51 -0500", "subject": "Some cleanup in restore." }, { "commit": "2db71e91adf078eda5d687155e8e8beaf98996f3", "date": "2014-12-22 11:24:32 -0500", "subject": "Basic restore functionality is working." }, { "commit": "9086728b73e4c5f2063d9ed3e39a66ed9eade216", "date": "2014-12-21 10:11:17 -0500", "subject": "Restore removes paths/files/links and recreated paths/links." }, { "commit": "1557327d2bb2f3aedb2e3363d89569de02acca82", "date": "2014-12-19 17:49:56 +0000", "subject": "Restore cleans out missing files and some basic unit tests." }, { "commit": "161a73159e9723ada085423ead853ba4d68da0af", "date": "2014-12-18 22:05:06 +0000", "subject": "Added some constants." }, { "commit": "b9d9c7fa66e681266ad213ec4b31691bec313d14", "date": "2014-12-18 16:47:03 +0000", "subject": "Incremented version to .50 since restore functionality if going in." }, { "commit": "1dc00c9d4b14af15febebde963cc70a44f357ec8", "date": "2014-12-18 16:42:54 +0000", "subject": "Starting on restore functionality, finally." }, { "commit": "1a3c5cd9dbd832bb8a6a01a897c2368b21d5418c", "date": "2014-12-18 16:14:30 +0000", "subject": "Added latest link so it is easy to get to the last backup." }, { "commit": "7d19504d3a84867cf910ce03b554f7f5ef0d49b6", "date": "2014-12-18 14:58:07 +0000", "subject": "Removed some tests in full that were redundant with the tests in backup." }, { "commit": "93c7ef3c9ea429c64f035bec1acb6f41a18a3397", "date": "2014-12-18 14:56:01 +0000", "subject": "Moved some code into a more logical order." }, { "commit": "c76a8d64d0abca36fc217c94d22542190e1045ee", "date": "2014-12-16 17:41:54 +0000", "subject": "Moved more config logic to Config.pm" }, { "commit": "61245583472b1a621e69ffbdddedd5bd68d9133a", "date": "2014-12-15 22:20:42 +0000", "subject": "Moved config functions to a new file." }, { "commit": "6dd9e881dc06862d7361a2a1db0d91cf93296e61", "date": "2014-11-27 14:07:09 +0000", "subject": "Added reminder." }, { "commit": "602db70d6a9100d80ec421f66d4e76812cd81b85", "date": "2014-10-20 11:44:36 -0400", "subject": "More backup unit tests." }, { "commit": "9765b4e20b0d1e3878806387ccf0f0cda124abbe", "date": "2014-10-19 17:41:11 -0400", "subject": "Backup unit test - more work on tablespaces and references." }, { "commit": "66a5da6fd1757afc1647a051464417497e49e18f", "date": "2014-10-19 16:30:16 -0400", "subject": "More work on backup unit tests - added tablespace tests." }, { "commit": "4de1d9aa5aed934a293d2540816186656c4b58e1", "date": "2014-10-19 11:46:01 -0400", "subject": "Backup unit tests are working." }, { "commit": "1d43c633265e218fc2346786c5f9046d1bd792db", "date": "2014-10-18 13:25:20 -0400", "subject": "Working on better backup unit tests." }, { "commit": "ed5777101f4402c940f551b9e0321dec98d1e260", "date": "2014-10-16 13:22:34 -0400", "subject": "Changes in how paths are removed." }, { "commit": "b6e0bb2ae550a0ea83f2b1139b771add43d1eb6f", "date": "2014-10-16 08:58:11 -0400", "subject": "Small unit test changes." }, { "commit": "5c216c93d5f62a0c395d2830dcc840c84256f4a8", "date": "2014-10-15 19:11:09 -0400", "subject": "Working on backup unit tests." }, { "commit": "f9ff7c6ec7303ae938df9542af98b45b29e779f2", "date": "2014-10-14 23:58:17 -0400", "subject": "Comments." }, { "commit": "0ba838cd3e06c2464db399eed6b08216b65138ab", "date": "2014-10-14 21:44:42 -0400", "subject": "Checksums seem to be working again - still waiting on the new backup unit tests to confirm." }, { "commit": "59a267d6387c463ff0cd469ca8ac1c00e4125d38", "date": "2014-10-14 15:46:03 -0400", "subject": "Fixed typos." }, { "commit": "b19dd9b5529fab599b536dd5819bc7050d884df7", "date": "2014-10-14 15:44:50 -0400", "subject": "Changes to the aborted backups code." }, { "commit": "3a54eaf9dec90896cedb9a3ab34219c02babcae9", "date": "2014-10-14 08:27:50 -0400", "subject": "Last backup type is now checked - still need a unit test for it." }, { "commit": "c8aeadce8eb7f1b9f9bb76b4fc291a920118cb8c", "date": "2014-10-11 00:16:34 -0400", "subject": "Comments." }, { "commit": "aafc0fef6918938a4f32551220afac4340d72c32", "date": "2014-10-10 16:03:33 -0400", "subject": "Removed Moose from the Db object." }, { "commit": "2c173ba53e5dafd5fd090d31c05227250b403ff8", "date": "2014-10-10 15:13:28 -0400", "subject": "Removed moose from File object." }, { "commit": "c1d6890c604c1d9f4e6c940f0ff6e0f552e40e19", "date": "2014-10-09 16:01:06 -0400", "subject": "More Moose removal." }, { "commit": "3d86adadb5a7d3cba91e6839721681d3b1237f37", "date": "2014-10-08 13:54:31 -0400", "subject": "Remote object now using ProcessAsync for de/compression. Removed dependency on Moose from Remote." }, { "commit": "16ebbd2279e25e46b91b65b2684f4e3a7fce9525", "date": "2014-10-06 20:53:34 -0400", "subject": "Documentation fixes." }, { "commit": "74cae73ee0ddee2d16bd5d7e923f23538cd94bc7", "date": "2014-10-05 20:21:15 -0400", "subject": "Moved version number to v0.31." }, { "commit": "4bc4d97f2bfc8702937fe931b5b8d956a73d42f6", "date": "2014-10-05 19:49:30 -0400", "subject": "v0.30: core restructuring and unit tests" }, { "commit": "de35cedc277615bfb777f8a522d35a0d807de9dd", "date": "2014-10-05 18:52:05 -0400", "subject": "Working on getting async process thread into Remote.pl" }, { "commit": "122dc65351f9553f06d374c6c7b29e6357261dc4", "date": "2014-10-03 09:31:23 -0400", "subject": "Added compress and checksum settings to backup manifest." }, { "commit": "fbc2ae132541eafe92e27cd6d6be0d003bf4e16d", "date": "2014-10-02 14:34:58 -0400", "subject": "Fixed function names in comments." }, { "commit": "4cbc6c650a6c1fe3924e91e3fb5b53181a9dfcd9", "date": "2014-10-02 13:54:26 -0400", "subject": "File->hash now works on compressed files." }, { "commit": "991afe3b161e06d940be7acb70a2f8596a495eb2", "date": "2014-10-02 10:55:38 -0400", "subject": "Merge from dev-0.30." }, { "commit": "168398e58a374f062a156088fc4e3571d5772f98", "date": "2014-09-30 15:51:08 -0400", "subject": "Merge from dev-0.30." }, { "commit": "5151b103e8eb985b9cbb91a90a580db122b4afe8", "date": "2014-09-29 23:10:53 -0400", "subject": "Formatting." }, { "commit": "5f30ae3c463ba28759dd5e87a339599f3e95fabd", "date": "2014-09-29 19:51:51 -0400", "subject": "Merge branch 'dev-0.30' of https://github.com/dwsteele/pg_backrest into dev" }, { "commit": "aab5ec2943919c7990d0da202275bd978ce384c1", "date": "2014-09-29 19:39:28 -0400", "subject": "Converting _ to -. Last one I hope." }, { "commit": "bdbdaf39d35e8bfcc88976179716843571890c23", "date": "2014-09-29 19:08:08 -0400", "subject": "Work in progress - new hash method." }, { "commit": "82b0bc0e72c6a47efb7891098ffa854ca2c69621", "date": "2014-09-29 22:51:02 +0000", "subject": "Fixed relative path issue in archive-get." }, { "commit": "7ed6587c42c4594dc4bd9939e12386cb1f4e73ad", "date": "2014-09-19 17:51:51 -0400", "subject": "ISSUE-11: Added --no-start-stop and --force options." }, { "commit": "07801a9a3c9573d44a664c109d4e48affe5406a2", "date": "2014-09-19 11:22:26 -0400", "subject": "Changed timestamp keys to be more consistent." }, { "commit": "121cb8a811710ab739f680e2b97d0f03c6075024", "date": "2014-09-19 10:47:22 -0400", "subject": "Title fix." }, { "commit": "7b1039dbe284beb436557a7db2c7da20967c3ad7", "date": "2014-09-18 17:39:24 -0400", "subject": "Fixed error message." }, { "commit": "535f32c8275c780b64e04dc30da2d4ec4333b744", "date": "2014-09-18 17:24:40 -0400", "subject": "Removed old unit tests." }, { "commit": "6ac124493d1cd0aacbb0d342745c43f240f1eddd", "date": "2014-09-18 16:42:13 -0400", "subject": "Added prior backup label to backup.manifest" }, { "commit": "82f22dd9fedbb01cbad24697b605a16a25d5f541", "date": "2014-09-18 16:41:36 -0400", "subject": "Documentation for config functions." }, { "commit": "fd12299ecd1b39246ede3a2100419cc624c64bbc", "date": "2014-09-18 15:18:52 -0400", "subject": "Some fixes in test logging." }, { "commit": "77802d3689b7e8f2c161165c50cdff12f0ce6ae6", "date": "2014-09-18 13:13:04 -0400", "subject": "Fixed some language." }, { "commit": "97c12f4eda0847025c78e98bab91bde92dfd3b93", "date": "2014-09-18 12:57:50 -0400", "subject": "Update backrest project description." }, { "commit": "a5f09caff7b4017a09e4f80888c211d5d3d7c713", "date": "2014-09-18 12:37:14 -0400", "subject": "Using ' instead of \" where appropriate." }, { "commit": "3ab81752c00f69c6981bb53d06df60ebc0083666", "date": "2014-09-18 11:50:27 -0400", "subject": "Using ' instead of \" where appropriate." }, { "commit": "d3238daf7ec8926635306c2b8d3294b37405c557", "date": "2014-09-18 11:28:23 -0400", "subject": "Using ' instead of \" where appropriate." }, { "commit": "06ad947102fb54fbe4a48f5b1f77353610c9c716", "date": "2014-09-16 11:22:55 -0400", "subject": "Using ' instead of \" where appropriate." }, { "commit": "65f89bd643f2b14338d80fef1644c1fd4a9ada8f", "date": "2014-09-16 08:55:40 -0400", "subject": "Using ' instead of \" where appropriate." }, { "commit": "4d8c97eb55edd3a6472942cf924cf5965e6b69ef", "date": "2014-09-16 08:21:29 -0400", "subject": "Using ' instead of \" where appropriate." }, { "commit": "48b0e0d4612d3f9156f7d4fccce2fdd3c13c3ac5", "date": "2014-09-16 08:15:49 -0400", "subject": "Using ' instead of \" where appropriate." }, { "commit": "411e870c7a04551614132b3a4f461e88d74ef9b8", "date": "2014-09-15 22:04:26 -0400", "subject": "Notes." }, { "commit": "1125397aae9fc4c59b516b133d5c82337041e070", "date": "2014-09-15 19:00:40 -0400", "subject": "Updated readme." }, { "commit": "f86674da02a7f15f98cf1f64c331277e7fa7f3d3", "date": "2014-09-15 18:26:03 -0400", "subject": "Documentation." }, { "commit": "8c9aa3ab7c511c317b32896aaa2958a198e67927", "date": "2014-09-15 18:18:40 -0400", "subject": "Documentation." }, { "commit": "c5192e0fa5ea46e01d9ec0cf39bb1364c10aeed1", "date": "2014-09-15 18:12:30 -0400", "subject": "More docs, changed hardline default to Y." }, { "commit": "b9b038b328526fb0ea24b2fe879be23d63708e6e", "date": "2014-09-14 20:06:45 -0400", "subject": "Added docs and fixed spaces." }, { "commit": "ab7323711f83d833d391751f0f8a5205282f6214", "date": "2014-09-14 17:07:44 -0400", "subject": "Fixed issue in archive extension." }, { "commit": "cfe8851174e861ae707989874bbe2de3ae50de38", "date": "2014-09-14 16:48:33 -0400", "subject": "A few more fixes for differential." }, { "commit": "c0d81f0d10986e1308b3d90d082d2c65b07bd53a", "date": "2014-09-14 16:30:53 -0400", "subject": "Fixed issues in differential expiration." }, { "commit": "9555775d72800cf69f7859651548298e3c22d350", "date": "2014-09-14 15:55:27 -0400", "subject": "Retention defaults, single-quotes." }, { "commit": "6315d326ea7bb184eea63598cc80b6cda42a6f84", "date": "2014-09-14 15:31:56 -0400", "subject": "Fixed a few issues in manifest." }, { "commit": "23870f60f5038302c8e47aee7d231f4fb89d64ec", "date": "2014-09-14 13:17:07 -0400", "subject": "Small change to fix branch." }, { "commit": "4903a818f3e63494f80525be151911d5f3358b0b", "date": "2014-09-14 13:15:21 -0400", "subject": "Merge branch 'dev' of https://github.com/dwsteele/pg_backrest into dev" }, { "commit": "4551a2d089c448c1e4a61606d63e1510a3fa3b91", "date": "2014-09-14 13:12:37 -0400", "subject": "Docs and unit test fix." }, { "commit": "d83820d962c7ea1c28788129487b2c210e12b374", "date": "2014-09-14 12:50:21 -0400", "subject": "More documentation." }, { "commit": "d7faf578f3e4d5d1e694e704e874b71003a357c7", "date": "2014-09-14 11:46:22 -0400", "subject": "Test configuration formatting." }, { "commit": "b0b6c6a91658993a1186a8e005bd78cb307cd92f", "date": "2014-09-14 11:40:17 -0400", "subject": "More doc tests." }, { "commit": "2dc90edb07f22c30ff89d05cb469866f4a300b4c", "date": "2014-09-14 11:38:49 -0400", "subject": "More work on docs." }, { "commit": "8964ba4502591cd77f65de79607eb8e98c35a2fa", "date": "2014-09-13 14:18:59 -0400", "subject": "Testing formatting." }, { "commit": "e47ec0ab2b370cc531961efed4e91d253abe7e08", "date": "2014-09-13 14:13:50 -0400", "subject": "Working on documentation formatting." }, { "commit": "e7ccced3b4a97433fb7c0061462ae80dc10278a5", "date": "2014-09-13 14:04:54 -0400", "subject": "More work on documentation." }, { "commit": "934159eef0a508913f4b36de71bd019a87a4f3bf", "date": "2014-09-13 11:43:39 -0400", "subject": "More table tests." }, { "commit": "826f9cde2c92f780bd43b0f767612b97b777b420", "date": "2014-09-13 11:35:58 -0400", "subject": "Playing with tables." }, { "commit": "9eb2015d9fbb933dff00d1fb866f7edbc719e7f4", "date": "2014-09-13 11:25:35 -0400", "subject": "Working on documentation." }, { "commit": "fa82d5f0af3d5151a58ad44157a74a82d16428d0", "date": "2014-08-15 10:48:50 -0400", "subject": "Added help (issue #10)" }, { "commit": "679005e537bb0c2bf0a115330a8d9646a7e69c65", "date": "2014-08-14 09:40:20 -0400", "subject": "Some cleanup of the diff/incr code." }, { "commit": "3798071c5f2b9c0f8d89c83c65d962ccfbd7fd1d", "date": "2014-08-12 20:01:36 -0400", "subject": "Added backup.manifest change to last commit." }, { "commit": "e8e7c82b147e2deac127187ae758c0c47061ea5a", "date": "2014-08-12 20:00:52 -0400", "subject": "pg_backrest.pl returns version. Version is also stored in the backup path in the version and backup.manifest files. Merged the two date string functions." }, { "commit": "b48a7e6cc2b4702bf1ad26d652142fbb1c28d931", "date": "2014-08-12 19:17:16 -0400", "subject": "The backup label (and path name) are now created at the end of the backup instead of the beginning. This makes selecting a backup for PITR much easier." }, { "commit": "672c6b2ccb3b5926cd0e6bb0d78524d07bc74db6", "date": "2014-08-12 19:04:46 -0400", "subject": "Backup start/stop timestamp now stored in backup.manifest" }, { "commit": "34cb57f925e0f794e1845eae9b3f85dbdc65fe0e", "date": "2014-08-12 18:36:38 -0400", "subject": "Using checkpoint command instead of pg_switch_xlog." }, { "commit": "6b4a8fbc217bc2aa227d879753695bec860e6c3d", "date": "2014-08-10 21:22:17 -0400", "subject": "Unit tests now working on Ubuntu 12.04" }, { "commit": "0298e8dd16b3bce2c6e8d51ab231b079f148ecd8", "date": "2014-08-10 15:02:14 -0400", "subject": "Created unit tests for files deleted by the db during backup." }, { "commit": "09e2351ae8b17a8eaccba81337e16fc4d7aeb7a4", "date": "2014-08-09 18:35:55 -0400", "subject": "Test log mode is working." }, { "commit": "83d0db27d10ca966f7675239069fbdbd1c4ffc3a", "date": "2014-07-27 18:18:59 -0400", "subject": "Added release comment." }, { "commit": "2d9f027e3a8e7ded65efda2fe93780f6e624a1bf", "date": "2014-07-27 18:13:23 -0400", "subject": "Cleanup, work on test framework." }, { "commit": "a849f2d2fdf4709790246bf9d3f65c5b71cee5ee", "date": "2014-07-27 14:26:07 -0400", "subject": "Removed remaining decencies on Config::IniFiles" }, { "commit": "6f4310db426da453f498eb7eac47d6c32608993e", "date": "2014-07-27 14:03:21 -0400", "subject": "Changes for testing - finished changing config to local implementation." }, { "commit": "50dd95c005136aeb03ae5907028c696af6b173db", "date": "2014-07-25 19:07:40 -0400", "subject": "Sync up - hopefully." }, { "commit": "287e15f01facef1d7174d31d6b1f8e4f86323562", "date": "2014-07-25 18:31:56 -0400", "subject": "Test commit." }, { "commit": "6614f50cc824de153454d86c9c7c3a3d273ecf99", "date": "2014-07-25 18:18:20 -0400", "subject": "Test change" }, { "commit": "9dd3df6fd324e33411f539aa63b901cd9895205b", "date": "2014-07-23 08:04:48 -0400", "subject": "Added to feature backlog." }, { "commit": "75160a41b9690e01575df334c00f671a5f4f1d01", "date": "2014-07-21 08:11:04 -0400", "subject": "Added notes for some changes." }, { "commit": "06b5ee3f753e87d15a0c7d34488346c0d3c225f4", "date": "2014-07-16 23:38:38 -0400", "subject": "Working on new config load/save functions and unit tests." }, { "commit": "f6e01de7ced32b89a1cf0f68a2c631fcaa1b127d", "date": "2014-07-16 20:28:47 -0400", "subject": "Improved backup::full unit test." }, { "commit": "5d39b4f64660ccbd4cee64033c186d9a78f0b231", "date": "2014-07-16 20:07:50 -0400", "subject": "Local backups are now completely local." }, { "commit": "9ad1d79f0000497225366981979cb228be66e266", "date": "2014-07-16 19:15:56 -0400", "subject": "Unit tests for archive-get." }, { "commit": "9d9dae418bc03a4586bdb579d113a651927c4d1a", "date": "2014-07-15 22:32:41 -0400", "subject": "Added archive-put unit tests. Lots of other unit test improvements." }, { "commit": "8d398e4bffe30bdb1b33fb5aa4b5d5880592681c", "date": "2014-07-13 10:37:16 -0400", "subject": "Starting on archive unit tests." }, { "commit": "375545320d3278dc9a585ad136e5cc3d93e28475", "date": "2014-07-13 09:13:19 -0400", "subject": "Added tests for large files (16MB archive log). Fixed a sync error in binary_xfer()." }, { "commit": "ed4bcf3e4681a5002b50d8fc165ba7af0be4035c", "date": "2014-07-12 19:36:12 -0400", "subject": "Whitespace is now cleaned in test.pl" }, { "commit": "353cdb6b31e68d7751b44496ebbab72e26be9a92", "date": "2014-07-12 19:03:39 -0400", "subject": "Local archiving is working again." }, { "commit": "e36a785b1bd7480b0445c118c2ed926132038f75", "date": "2014-07-12 10:26:51 -0400", "subject": "Fixed execute function - now only displays output when there is an error." }, { "commit": "7f4c4e13d2031e78f276ed1fc560e97d3c1f9191", "date": "2014-07-02 19:15:21 -0400", "subject": "Back to Open3." }, { "commit": "fead7aa5f1ae741b25b0bc17458a307f7e08515e", "date": "2014-07-02 18:58:38 -0400", "subject": "Not loving IPC::Run, but saving my work just in case." }, { "commit": "d0ca69d433edf407d6b3ea47032444adb61b3209", "date": "2014-06-30 18:35:05 -0400", "subject": "Integrating IPC::Run - IPC::Open3 is out." }, { "commit": "c300c841eb3177519d16073f2312dd597348fb53", "date": "2014-06-30 08:29:25 -0400", "subject": "Added release notes." }, { "commit": "934b7dbe9b5865d505e1726c299a09597f8c1ce8", "date": "2014-06-29 17:23:34 -0400", "subject": "De/compression is now done in threads instead of forked processes." }, { "commit": "c85413ec6837a36ccf3911f07d63f9eb8648e770", "date": "2014-06-29 10:53:39 -0400", "subject": "Lots of improvements to unit tests. A few bug fixes." }, { "commit": "f9ec149ffe866c1a43b020f1a0e2dfa57b9fdc50", "date": "2014-06-28 14:32:34 -0400", "subject": "Working on unit tests." }, { "commit": "97b9560e5c03eb314282dac3984fc21b5d2a2fad", "date": "2014-06-28 11:47:21 -0400", "subject": "Fixed binary_xfer() issue. Now seems to work in all cases." }, { "commit": "9c160a03e36029c8d4eaaf81344f972820a5a2e8", "date": "2014-06-23 19:08:36 -0400", "subject": "Some refinements to compression." }, { "commit": "e1829bb2d269192fa5af4effcf74e53b293d4ea0", "date": "2014-06-23 18:54:00 -0400", "subject": "First fully working backup in a while." }, { "commit": "88bbbb4222a5de1eb572219b16e92ce92d9817e3", "date": "2014-06-22 20:19:13 -0400", "subject": "Fighting with a relative path issue in archive logging." }, { "commit": "5d01aac92e4f27da4f6459885bfd4d00e0d22da6", "date": "2014-06-22 16:05:00 -0400", "subject": "Working on backup - mostly working except for the last archive step." }, { "commit": "f91dce259f30b20608e882052c91c8466c95c20d", "date": "2014-06-22 14:51:28 -0400", "subject": "Working on backup unit tests." }, { "commit": "8fff74ccfb518dcd837d2407b6a6427dbf8fedbd", "date": "2014-06-22 11:56:01 -0400", "subject": "Backup unit test able to create and drop clusters." }, { "commit": "3c748c4b10ad200c7284c0900f8518fc8b73015f", "date": "2014-06-22 10:54:31 -0400", "subject": "More work on unit tests." }, { "commit": "0b597d8da9ddab0c29bee8de24515ccf1066f667", "date": "2014-06-22 10:30:17 -0400", "subject": "Working on getting backup running again." }, { "commit": "0dd15dd216e5084b7594dba7a23e61d65c07d73d", "date": "2014-06-21 20:08:49 -0400", "subject": "Cleanup." }, { "commit": "753fa11b5d4417952424680d723050a2c76e431c", "date": "2014-06-21 19:16:55 -0400", "subject": "remove() and hash() now working." }, { "commit": "7c161be995a0a157f6f91e3179fc6d8664f96b5e", "date": "2014-06-21 18:19:37 -0400", "subject": "manifest() and list() are working." }, { "commit": "53f1d3c78e795546665ee8b51ef4a3be902955b5", "date": "2014-06-21 15:46:26 -0400", "subject": "path_create() working." }, { "commit": "7bc464a44b4145db527a97012cafc74735dbcd17", "date": "2014-06-21 15:17:09 -0400", "subject": "Working on BackRest::File methods." }, { "commit": "936b8d0db03ee00e24f81a47d24fa8f612ee7018", "date": "2014-06-21 14:19:03 -0400", "subject": "move() is working." }, { "commit": "80206a28e930b7b769494eb05ee035fac69e9c3d", "date": "2014-06-21 12:22:25 -0400", "subject": "Ignore missing source in copy() working." }, { "commit": "e1903d53d01bb707bf9ac3347710d03b24dc4851", "date": "2014-06-21 11:05:29 -0400", "subject": "copy() works when both files are local or both files are remote." }, { "commit": "4a113cae66e8ef4ac83b6089ca2f3fe4c82ff185", "date": "2014-06-21 10:05:49 -0400", "subject": "Better error handling for missing source file in copy()." }, { "commit": "3af52398006b8f2bfd689cea6d9ce94a7a87fbff", "date": "2014-06-21 08:42:30 -0400", "subject": "Various compression options working in copy()." }, { "commit": "08750f2fdafb157721aff191aacbc2f2d927f852", "date": "2014-06-16 06:12:38 -0400", "subject": "Still working on copy()." }, { "commit": "0b3b743f5a6030bedf92f736bc6cb6021f2ced48", "date": "2014-06-15 19:18:26 -0400", "subject": "Stupid compress issue was in the unit test - but did tighten up the code a bit." }, { "commit": "d162ce203d6c70bb80dc0f5224329ae76b53f3f7", "date": "2014-06-15 18:32:43 -0400", "subject": "Trying to get various compression options working in copy()." }, { "commit": "9526975ad357a25d16c37e5c337a8d4186746b53", "date": "2014-06-15 16:53:20 -0400", "subject": "Cleanup, comments." }, { "commit": "adf654edb34df2a6ae67eff691e3e469cd95a5d5", "date": "2014-06-15 15:56:45 -0400", "subject": "In-stream compression now working in copy." }, { "commit": "f51c06119c8d5f52312d41f6d4738bac3abeb0c8", "date": "2014-06-15 09:32:11 -0400", "subject": "copy() works through multiple runs an multiple remotes." }, { "commit": "d568b6525b51b33301a4edb2a7b38660975602cc", "date": "2014-06-14 20:47:32 -0400", "subject": "copy() works with remote in either direction." }, { "commit": "79f85fe6c426ad536382d28ce97bf56e91232207", "date": "2014-06-14 19:50:54 -0400", "subject": "Finally a working copy() with new protocol." }, { "commit": "3a32363a568e09f34d2ec3154ce64754a4175d0e", "date": "2014-06-12 21:56:20 -0400", "subject": "Working on copy." }, { "commit": "976bafca9e84f9efcf43dbbf27183ead85bece4c", "date": "2014-06-07 17:29:11 -0400", "subject": "Added new tests." }, { "commit": "ca6823986d2e6ab6aeebe0d8cc4389eff83a0929", "date": "2014-06-07 16:29:03 -0400", "subject": "Sample install file." }, { "commit": "58e70422acb9d8a53d348479da8cdcdaf2ffc655", "date": "2014-06-07 16:27:30 -0400", "subject": "Testing install.md" }, { "commit": "166318d00d324504f242a84a134309ff496c06e2", "date": "2014-06-07 16:25:20 -0400", "subject": "Moved remaining libraries and other files." }, { "commit": "31b05eaab3c22346ef6bdec305889f3ca70cfd78", "date": "2014-06-07 16:13:41 -0400", "subject": "Moved pg_backrest_utility." }, { "commit": "0a8a5c7ed484bae9487d6fe3eb0536c70395f787", "date": "2014-06-07 16:06:46 -0400", "subject": "Refactoring - added version file." }, { "commit": "ea1a158d828485ea45cf137ba232497ba00aaab9", "date": "2014-06-07 15:30:13 -0400", "subject": "Improved logging." }, { "commit": "e60e2b22ed4c6d26d39e5c1732871df8f9815ad1", "date": "2014-06-07 15:01:29 -0400", "subject": "Much improved param protocol." }, { "commit": "e07a6b4e3f14fd24b15497f907d3c5589ec80b93", "date": "2014-06-07 13:15:55 -0400", "subject": "Cleaner remote implementation." }, { "commit": "1bc80c50edf1461ff87eec127221569ff4b327a7", "date": "2014-06-07 11:51:27 -0400", "subject": "First passing test with new protocol." }, { "commit": "ae130229ef89c1360796bfbe593c265aae4b6494", "date": "2014-06-06 21:16:24 -0400", "subject": "Working on remote protocol." }, { "commit": "e71a986ef3e1cf43a7edd0207b7d4f97ee21cdac", "date": "2014-06-05 23:51:27 -0400", "subject": "More work on copy()" }, { "commit": "e44cd6c1ca1d789cb0b6a6ef81418d68072377d1", "date": "2014-06-05 22:42:47 -0400", "subject": "More paths through copy() working." }, { "commit": "ca6b435c4ffbfb7459298535cc06fa48f6900d36", "date": "2014-06-05 16:40:05 -0400", "subject": "June Hackathon: copy_in and copy_out functions written, some paths through File->copy() working, basic unit tests setup." }, { "commit": "c2dd53f90885a0ce8bd4399d8e2555c96b36159d", "date": "2014-06-05 10:20:03 -0400", "subject": "Changes to allow specific tests to be run." }, { "commit": "5813aedaa3894d36c4645744fa47b005a635ef08", "date": "2014-06-05 09:59:04 -0400", "subject": "Added recognition section to read me." }, { "commit": "5d09af9cc04c42271a3b5d2879f28a0d6483dfc8", "date": "2014-06-04 13:47:17 -0400", "subject": "Better include markdown." }, { "commit": "82814aebdd0c37206538b8b55229ee686f7d0f68", "date": "2014-06-04 11:58:30 -0400", "subject": "Whitespace cleaning." }, { "commit": "1793b7a5c4d70ee262c57c56faaa2d975d5b9673", "date": "2014-06-03 22:02:56 -0400", "subject": "Comments and formatting." }, { "commit": "1b9782cb9e566fcc08a8c0f23ceba8ecf44e7f15", "date": "2014-06-03 21:22:07 -0400", "subject": "Converted path_create(), improved unit tests." }, { "commit": "ffa45d07bf9d3ba6134341c1f1293560a76e57bc", "date": "2014-06-03 19:03:03 -0400", "subject": "New version of move()." }, { "commit": "816c67edfdc9b263bfed9ab7a7fa213d78990436", "date": "2014-06-02 17:48:07 -0400", "subject": "Converted File::compress" }, { "commit": "0249d3516b274b650afc04c16e56fd160f53bc71", "date": "2014-06-02 16:26:37 -0400", "subject": "Manifest is working (unit tests at least)." }, { "commit": "361c2c24bfb92d78b0a7006df6945f714a0c511f", "date": "2014-06-01 18:39:35 -0400", "subject": "Working on manifest." }, { "commit": "03383691932d7951ae036409a16d6b364483b97d", "date": "2014-06-01 17:23:33 -0400", "subject": "Working on more robust file functions." }, { "commit": "85f591f801fc7cc19044fb2190829ad1ec057d80", "date": "2014-05-27 09:00:24 -0400", "subject": "More unit tests for file functions." }, { "commit": "3e12f9230b35bc625cc653b620452090ab9b2260", "date": "2014-05-14 15:07:37 -0400", "subject": "Working on unit tests for file_copy. Still need to add specific error tests, timestamp, and permissions." }, { "commit": "db40553434035ffc4ab1f61061f429f023bde5b8", "date": "2014-05-13 16:41:20 -0400", "subject": "Changed version." }, { "commit": "1fa8dbb778bfe43bb345639f8e29c9978347c9ef", "date": "2014-05-13 11:47:14 -0400", "subject": "v0.19: Improved error reporting/handling" }, { "commit": "d234aeea64b9cf6e7ec643fdd0d53961769c768f", "date": "2014-05-13 11:23:15 -0400", "subject": "More work on error-handling." }, { "commit": "a2b28623d42d1979d91bc112a411588d8996a66b", "date": "2014-04-28 09:13:25 -0400", "subject": "Working on better error handling." }, { "commit": "53fa574d7eaf5a1574e3f87d41abd8ff5077faf9", "date": "2014-04-13 11:58:35 -0400", "subject": "Merge branch 'master' of github.com:dwsteele/pg_backrest into dev" }, { "commit": "9acbba173e65f40d6032ed47a1760ec48e383b91", "date": "2014-04-13 09:51:51 -0400", "subject": "v0.18: Return soft error from archive-get when file is missing" }, { "commit": "d8c488f73f1453295028d7b464c99869c084f862", "date": "2014-04-11 14:15:56 -0400", "subject": "Added the feature backlog." }, { "commit": "06b8eefd19dc7d75259888a281962d54fa7e121c", "date": "2014-04-03 18:20:46 -0400", "subject": "Fixed up README" }, { "commit": "7aa6c8ecaf3b15e7c4f58ce345f205b7aef2b423", "date": "2014-04-03 18:17:40 -0400", "subject": "v0.17: Warn when archive directories cannot be deleted" }, { "commit": "49536498e6d54e283f656a41d7e1dcd5fbaed487", "date": "2014-04-03 16:52:39 -0400", "subject": "Warning for non-empty dirs instead of error" }, { "commit": "194696f6742d571bdeb49e75f6d9d980c2cbf1fe", "date": "2014-04-02 17:25:37 -0400", "subject": "Working on unit tests." }, { "commit": "9a5bb36c0f5ec13a03c86f61644ac02c46fba679", "date": "2014-04-01 21:41:34 -0400", "subject": "Added notes." }, { "commit": "be1163b948200c409199302ab5c03e724c7b7331", "date": "2014-04-01 10:49:37 -0400", "subject": "v0.16: RequestTTY=yes for SSH sessions" }, { "commit": "235c75b1b00f05312a437bc53c313fd2e19a2d42", "date": "2014-04-01 09:01:34 -0400", "subject": "Added ;" }, { "commit": "7624d65edf340887559c87a806cee6e6da41db65", "date": "2014-04-01 08:59:09 -0400", "subject": "Added TTY code." }, { "commit": "2b8972936ffb52d27678d69f1fc332f712df014e", "date": "2014-03-30 21:02:17 -0400", "subject": "Updates to README." }, { "commit": "765af10c88ff08de48133629c124d472da68af1c", "date": "2014-03-29 18:18:03 -0400", "subject": "Merge branch 'master' of github.com:dwsteele/pg_backrest into dev" }, { "commit": "dafaeb0b82994172ffc8238e14a50db027c53262", "date": "2014-03-29 18:16:08 -0400", "subject": "v0.15: Added archive-get" }, { "commit": "ba2590dc8eb014152ddcb0a1b1e0c59fd8d1fb22", "date": "2014-03-28 15:20:36 -0400", "subject": "archive-get function is working. Added option to force checkpoint at backup start." }, { "commit": "8ae6c2719dfb83a8404265c5e0b72d93bfbdd36a", "date": "2014-03-28 11:59:44 -0400", "subject": "Better code in file_list_get()." }, { "commit": "23df43e781f9a0631b79b723bf4f09ecb3a07a7e", "date": "2014-03-28 11:40:37 -0400", "subject": "file_list_get now works locally and remotely" }, { "commit": "9d949b7ad6446be70316a50d84adf5c24f6f37c5", "date": "2014-03-26 10:53:49 -0400", "subject": "v0.11: Minor fixes" }, { "commit": "126b39855d6680453bbc2af8a565e776b07d4046", "date": "2014-03-25 18:56:05 -0400", "subject": "Working on archive-get" }, { "commit": "e68f836b2e719c822df6b17df68b2a825a4702c9", "date": "2014-03-08 09:12:53 -0500", "subject": "Documented enhancements planned for v0.15" }, { "commit": "bbb3b48cf8181e0a69328dbb12dcf75169f08e24", "date": "2014-03-05 20:06:13 -0500", "subject": "Added comments." }, { "commit": "587bd1f8d9fa3329d95239501399166aa147bda7", "date": "2014-03-05 19:53:13 -0500", "subject": "v0.10: Backup and archiving are functional" }, { "commit": "1617afb704bab58c0e8c8153c8f116f36d196e95", "date": "2014-03-05 19:51:03 -0500", "subject": "Initial commit." }, { "commit": "1a4f2527e32e4ecf2efac9d47a0ab46bd5da891b", "date": "2014-03-05 19:49:05 -0500", "subject": "Fixed version number." }, { "commit": "ae30ec98e9c1ce41bfcbba02adbf7a3e6add95db", "date": "2014-03-05 19:47:05 -0500", "subject": "First release merge from master." }, { "commit": "81616e19bd43ecd1ffae3401dc713149cffb18e7", "date": "2014-03-05 19:45:01 -0500", "subject": "v0.01: Backup and archiving are functional" }, { "commit": "951419178bed96227cff47d1b08a87b40610dce3", "date": "2014-03-05 19:43:23 -0500", "subject": "Initial commit." }, { "commit": "2b55b8ca5ef7eea92f24515155596a5bb46db112", "date": "2014-03-05 19:10:23 -0500", "subject": "Merge branch 'master' of github.com:dwsteele/pg_backrest into dev" }, { "commit": "1eb8e1be2d31724c2f7b01899734411e25b068b5", "date": "2014-03-05 18:56:15 -0500", "subject": "v0.01: Backup and archiving are functional" }, { "commit": "80d5332fa032f604f63e2833e1c919e8c52a460e", "date": "2014-03-04 08:00:51 -0500", "subject": "Squashed commit of the following: " }, { "commit": "f0d82151b91828fece28a57d2de24f5ccc92e0d1", "date": "2014-03-03 16:38:01 -0500", "subject": "Changed thread timeout from WARN to ERROR" }, { "commit": "571d449717fecee1eac64088bde42606fcddc4eb", "date": "2014-02-27 19:15:00 -0500", "subject": "Redirect find error output to /dev/null. Sometimes files are removed from the db while find is running. We only want to error if the find process errors." }, { "commit": "84c4cec257b25fc026f12560d6c0bc5cfb5822ec", "date": "2014-02-27 13:00:41 -0500", "subject": "Put redirects in common places where errors are be output but we don't want to see them." }, { "commit": "ae782d08845e2d9f5fd9df8ce8a05cb472da6f56", "date": "2014-02-25 07:30:45 -0500", "subject": "Made archiving single-threaded so it will work" }, { "commit": "a84478045e7e25d197368a19ac375509f80dfc9c", "date": "2014-02-24 18:04:42 -0500", "subject": "No attempt to kill threads - just abort" }, { "commit": "da41eb3883622a333e6e84056c05964bc2e4e402", "date": "2014-02-24 17:59:42 -0500", "subject": "Added more warnings" }, { "commit": "21b15b7cf6a8b48a4e9c65691eaece5306e47c22", "date": "2014-02-24 09:33:47 -0500", "subject": "Added thread timeout." }, { "commit": "5de8f275f0e9f06a45f1d2dafb540d5db244d505", "date": "2014-02-22 11:14:01 -0500", "subject": "Removed stderr redirects from the master ssh connection" }, { "commit": "0e4f0f1308e15dad9e6d6d07cf9bc92bc1aa1492", "date": "2014-02-22 10:54:02 -0500", "subject": "Fixed issue with archive path expiration" }, { "commit": "e8c7d7aca69dae3ff14cf0065815bced3f2002f1", "date": "2014-02-22 09:05:58 -0500", "subject": "When archive_retention_type is full, use the oldest backup if there are fewer than required" }, { "commit": "9270a6789206a0f2fcd5f92d5faaae5e6ac54973", "date": "2014-02-21 16:09:34 -0500", "subject": "Removed some more stderr redirects" }, { "commit": "6d975d283073e90247214961e31d49959e7765c6", "date": "2014-02-21 08:49:27 -0500", "subject": "No longer discarding stderr" }, { "commit": "0387a8ee09e5fbd66fe8d4dae055f9fea07e6039", "date": "2014-02-21 07:34:17 -0500", "subject": "replaced process id with thread id. Added use thread to all modules." }, { "commit": "ac3ce81621fab54c925eead8c53dee01c797d63e", "date": "2014-02-21 06:42:42 -0500", "subject": "Add process id to logging, don't generate checksum for 0 length files" }, { "commit": "3d8e933343d8b7fa0900d37f68cd235b923980bf", "date": "2014-02-19 16:06:21 -0500", "subject": "More threads" }, { "commit": "857e1774292da086f3ad4e9fca4ed28efea6683f", "date": "2014-02-19 15:13:07 -0500", "subject": "Using separate master queues" }, { "commit": "800cd898317d76b24e8aa7f3acdbcb39cb2de052", "date": "2014-02-19 13:37:18 -0500", "subject": "Thread files are no longer in an array" }, { "commit": "81433c0fdde660c3357526a3447cd1146a6b9f8c", "date": "2014-02-19 13:03:52 -0500", "subject": "Now using one control master for threading." }, { "commit": "b4ac9552d24a12ddf06d4df293a360cd72a1cf4d", "date": "2014-02-18 19:29:57 -0500", "subject": "Skipped files removed from manifest, checksums stored" }, { "commit": "27b820cfb4c5ac0ff5695202cdab98d471e0b95f", "date": "2014-02-18 15:42:51 -0500", "subject": "Backup handles files that were removed by the db" }, { "commit": "187fdaf49bd1d9abb1805e28afc2fab9161bc405", "date": "2014-02-16 19:01:06 -0500", "subject": "Better compression choices." }, { "commit": "5c695a6522fd0092934e60dec7634760cde0673f", "date": "2014-02-16 18:20:55 -0500", "subject": "Improved archive logging and put in max limit" }, { "commit": "13086e96266f8872ad0a07dfbac3289233742242", "date": "2014-02-16 17:02:25 -0500", "subject": "Renamed processes." }, { "commit": "eb25dbdb9dedae5ef7dd35e8e5dbff839168373d", "date": "2014-02-16 16:58:25 -0500", "subject": "Added stanza to command string" }, { "commit": "b45d9c946e74434a01e62b371f9c382dcb64210d", "date": "2014-02-16 16:51:05 -0500", "subject": "Improved command string" }, { "commit": "6d7f89fc98ad2e511e6e549943ff5c8311de89cf", "date": "2014-02-16 01:31:24 -0500", "subject": "change process string" }, { "commit": "577c5af33fe05c961273d0d62c42dbd3320b4d87", "date": "2014-02-16 01:24:54 -0500", "subject": "testing" }, { "commit": "b514058cee5801897530e6d27d1a61b0f6b7692f", "date": "2014-02-15 16:46:13 -0500", "subject": "Changed to perl storable - at least it works" }, { "commit": "392da9162084cb17eb7eff8bf1815e970df8ac3e", "date": "2014-02-15 15:28:22 -0500", "subject": "Remove old local archive dirs." }, { "commit": "0bc40d206cdbf777f56bfa2cb21472da71185872", "date": "2014-02-15 14:33:31 -0500", "subject": "Some fixes for config" }, { "commit": "0979841f1a08352ece1ade8821d69080f82b1132", "date": "2014-02-15 14:18:15 -0500", "subject": "Async compress, thread kill improvements" }, { "commit": "bd00fb7f0ceb86092c3998ac1ac923bb4f28ae2f", "date": "2014-02-15 10:45:01 -0500", "subject": "Still working on thread kill" }, { "commit": "3b2dd68aac9bc00e1b45d2a8d6dfd74da17112f7", "date": "2014-02-15 10:31:57 -0500", "subject": "More robust join code." }, { "commit": "27bf9b65720e278419c0c0a414141fb7b729c789", "date": "2014-02-15 10:09:47 -0500", "subject": "First SSH session is shared between objects and thread 0" }, { "commit": "c7aebf05c4e12dc9fbd7ba4bed838c6110e6cdd0", "date": "2014-02-14 21:39:18 -0500", "subject": "Handle term signals gracefully." }, { "commit": "d100294894e1f1a5b2d35f6807d3e3a18a8c0b7e", "date": "2014-02-14 19:56:28 -0500", "subject": "Ability to resume failed backups, better locking" }, { "commit": "308652cc657f5f015c6affde2d01a784862c96a0", "date": "2014-02-14 09:05:14 -0500", "subject": "Remove a lot of path creates - percent logging." }, { "commit": "e14d52c42a48b2c707ae585e9470c637c9966d46", "date": "2014-02-14 08:23:25 -0500", "subject": "Improved backup threading" }, { "commit": "e93a444a415244de15769f07b69741530254f882", "date": "2014-02-13 23:37:52 -0500", "subject": "Changes to manifest." }, { "commit": "5c393a0df9beb7ce8e78b3b3627bc1114aa1f94d", "date": "2014-02-13 21:44:19 -0500", "subject": "Increased time to wait for log files" }, { "commit": "dccdec2ffa5d145f0dd8efceafaef651f59d72c6", "date": "2014-02-13 21:41:20 -0500", "subject": "trying to make labels stick" }, { "commit": "ae3dcc57f01983e4eac6ca72bb482b9fa2e6e4d3", "date": "2014-02-13 21:31:57 -0500", "subject": "Thread errors now exit" }, { "commit": "6d9e7db1c69ee2f862e2941574c5c60ec8d5130f", "date": "2014-02-13 20:54:41 -0500", "subject": "Increased thread total." }, { "commit": "405d36497dc326b12dbc243a1b3bcd97ce438168", "date": "2014-02-13 20:33:05 -0500", "subject": "Less logging" }, { "commit": "a78d677b1e226cf9cda517ffeb662b63480c4099", "date": "2014-02-13 20:29:42 -0500", "subject": "Wait for archive files." }, { "commit": "d4ba078183f0edd290f136cdb13c43f9f70ffd43", "date": "2014-02-13 18:14:15 -0500", "subject": "Only save manifest once" }, { "commit": "1bec36b65b9ed5f2ca31879dc03877708ce048df", "date": "2014-02-13 18:07:58 -0500", "subject": "Better thread logging." }, { "commit": "2bafa5cf26773ba14da891c1079140c2b9ff08af", "date": "2014-02-13 17:52:38 -0500", "subject": "Logging tweak" }, { "commit": "8453681ccdb41e8ad1e3cf71c2df761bb2341768", "date": "2014-02-13 17:50:14 -0500", "subject": "Logging tweaks" }, { "commit": "4349f0caff1e9a9e1501483af8a64ec594513082", "date": "2014-02-13 17:47:53 -0500", "subject": "Fixes to log level and more logging" }, { "commit": "7d55ce865bf9bf0580c256ae25acbf776692ec3a", "date": "2014-02-13 17:11:53 -0500", "subject": "Work on log levels" }, { "commit": "133e27d813e3e70f7c322fe6705e7104909e8b3f", "date": "2014-02-13 15:26:07 -0500", "subject": "Archive tmp file fix." }, { "commit": "19f9a5193f547a874b871e7388328043da4ad274", "date": "2014-02-13 14:54:28 -0500", "subject": "Minor config changes." }, { "commit": "13a1f0cf246f24dd1fba09543b5fc19ebb065c70", "date": "2014-02-13 13:54:43 -0500", "subject": "Lots and lots of logging improvements" }, { "commit": "14b13d48404aedaf629ea647592b058db324b5c4", "date": "2014-02-13 12:02:45 -0500", "subject": "Async archive log backup working." }, { "commit": "f0df759bb97f3499e6c245fee88fceb491e4b551", "date": "2014-02-13 00:21:25 -0500", "subject": "Small debug fix" }, { "commit": "7c4d463b1da98c4f9c94693ee64c4776075e36e3", "date": "2014-02-12 23:49:40 -0500", "subject": "More balanced backup." }, { "commit": "b770c8ebece6c40190cc9d62f6798eeb32d4a105", "date": "2014-02-12 22:33:09 -0500", "subject": "More work on archive-pull" }, { "commit": "8e60a3111fd22095c6bdbbe99b51c3af87e661a0", "date": "2014-02-12 20:28:27 -0500", "subject": "Lots of archive-pull plumbing" }, { "commit": "16df430b73834c97410565bd96edeb7e7f79714d", "date": "2014-02-12 17:34:34 -0500", "subject": "New constants and basic fork." }, { "commit": "564bd65b3e8241113998558208d561c61b73fbb3", "date": "2014-02-12 16:01:48 -0500", "subject": "Basic plumbing for archive-pull function" }, { "commit": "5181282b7402ecbba88544e4cafddac1c7eb8f76", "date": "2014-02-12 08:04:42 -0500", "subject": "Command line parameter checks" }, { "commit": "729b07fed5eaa8247eaee65bd8f3e1a996bd7752", "date": "2014-02-12 07:45:29 -0500", "subject": "Hardlink now a conf option." }, { "commit": "219120ba811ad102f3c0df60119d645d919d534b", "date": "2014-02-12 07:39:42 -0500", "subject": "Archiving and flag changes." }, { "commit": "b9a2e7093ef381ce3b5e6bf2ee9ebf9cf03fa3d7", "date": "2014-02-11 21:17:30 -0500", "subject": "Some more file debug info" }, { "commit": "1a9f73b781db87e98ea1a42db2b43a29dec950f3", "date": "2014-02-11 17:07:49 -0500", "subject": "Added timestamp to log" }, { "commit": "49dbc897a635262db27de5091e8d330f92efa948", "date": "2014-02-11 16:57:51 -0500", "subject": "Small file allocation improvements." }, { "commit": "9a1de327a197af06ab647d88cd7669ff938b4daa", "date": "2014-02-11 16:37:20 -0500", "subject": "Turned ssh compression on" }, { "commit": "71812fca996ca53d205694c796694bb46dd4fbae", "date": "2014-02-11 16:21:33 -0500", "subject": "Thread total is defined in the conf file." }, { "commit": "171ca709d62a129907e241012e493162c6be2472", "date": "2014-02-11 16:08:55 -0500", "subject": "Better file ordering for threads." }, { "commit": "c58ccb588e846d7012923a927c2b955cffef3a3c", "date": "2014-02-11 15:31:16 -0500", "subject": "Parallel backup now working" }, { "commit": "a55b37efc31e6a6074ed98fe8c92ff10cfaf277b", "date": "2014-02-07 19:34:14 -0500", "subject": "Working on parallel backup" }, { "commit": "820791cf922e4c186288ee005e87a914df4d6c3e", "date": "2014-02-06 17:31:33 -0500", "subject": "FF log is skipped for pre-9.3 databases." }, { "commit": "60b2be58ac5e410719335993dabf218decc266d5", "date": "2014-02-06 16:37:37 -0500", "subject": "Finished db object abstraction" }, { "commit": "f20f3b3ee642c02b3b4295b235bc59b99a48af20", "date": "2014-02-06 15:54:22 -0500", "subject": "Started db object abstraction." }, { "commit": "9d08f2a64494c9528c30531bd95b7306484f229e", "date": "2014-02-06 12:49:54 -0500", "subject": "More robust config. Retention is read from config." }, { "commit": "a2b0d7a674a1524f53440be45d333409a3ad1a2b", "date": "2014-02-05 22:26:10 -0500", "subject": "Backup expiration working again. Other changes." }, { "commit": "27986e0c10999660078e7c74b25bc99eb3e028ce", "date": "2014-02-05 21:39:08 -0500", "subject": "File is now an object." }, { "commit": "3e7faf0e5f7d3f61856f0c7f3b50329172e69585", "date": "2014-02-05 16:53:25 -0500", "subject": "Some path fixes." }, { "commit": "7bee0f3141a301c0a1fa1bb8d092dbbd317fe296", "date": "2014-02-05 15:56:05 -0500", "subject": "Moved backup location." }, { "commit": "a15fcb8c23e11bb2ec056abe13120591cd70c515", "date": "2014-02-05 13:10:36 -0500", "subject": "Moved tmp path." }, { "commit": "7ffade2453afafb98d2d67d3612742e17075947e", "date": "2014-02-05 11:35:09 -0500", "subject": "Fixed file mod time and permissions" }, { "commit": "c86a61ca3e15acc1afc09c400aa866a958e1fd27", "date": "2014-02-05 10:40:49 -0500", "subject": "Relative links working for tablespaces." }, { "commit": "12a960f91a59fbcce53659b1ed4fbed5a1ba8fc9", "date": "2014-02-05 08:21:27 -0500", "subject": "File copy supports decompression" }, { "commit": "a81049995859666f378ee804ef15aba1d87543e2", "date": "2014-02-04 18:48:39 -0500", "subject": "Remote backup fully working." }, { "commit": "e38c482a26d270b19813c67829f0df977afa0996", "date": "2014-02-03 20:48:02 -0500", "subject": "Cleanup" }, { "commit": "946b8261cfedd62114642344614392426196ba00", "date": "2014-02-03 20:29:03 -0500", "subject": "Moved archive_push function" }, { "commit": "d5832a70c05dd40e73d6457e2b287f500454b781", "date": "2014-02-03 20:23:04 -0500", "subject": "Moved last backup function." }, { "commit": "aef6730267af465eea3ab99ecd06917f1628d176", "date": "2014-02-03 19:57:21 -0500", "subject": "Moved backup functions." }, { "commit": "316a5b559858b3aea89306efd4f0557c2f386d09", "date": "2014-02-03 19:03:17 -0500", "subject": "Working on remote" }, { "commit": "fa668d50072542890f15d9ebda77bb2ed552e3e9", "date": "2014-02-03 14:50:23 -0500", "subject": "Move file init code to file module" }, { "commit": "aef4adf1f3864de9e844d7fb7bb31afce5e887d2", "date": "2014-02-02 19:03:05 -0500", "subject": "Splitting main perl file" }, { "commit": "4c2e4f7e4924a0cd4ba9d3cae1f99f5fe115d147", "date": "2014-02-02 12:45:59 -0500", "subject": "Lots more work on remote functionality" }, { "commit": "bf8ac7abe6210b2300375ba879ade54f8dd69167", "date": "2014-02-02 11:12:55 -0500", "subject": "manifest_get() now works remotely" }, { "commit": "4556de472240b161eb3e8ac37ece2eac7f5c3278", "date": "2014-02-02 10:40:05 -0500", "subject": "Source and destination can now be remote." }, { "commit": "de972ef5d3bb73f69839a06a43dc9448ccd500cd", "date": "2014-02-01 12:57:27 -0500", "subject": "More work on file_copy" }, { "commit": "52ba8801efe419988a8900b5696944e8015a3a12", "date": "2014-02-01 11:04:33 -0500", "subject": "Working on remote file copy" }, { "commit": "2ad7a3d815da205d2b84372ad3f8279c2572a76e", "date": "2014-01-31 00:04:08 -0500", "subject": "Formatting." }, { "commit": "c5de8fa6e637a877aee003ef623b606d113070c8", "date": "2014-01-30 23:58:26 -0500", "subject": "Created variable for compression extension" }, { "commit": "151ff8ba6049b8a4b98900cbbde23bb540d71796", "date": "2014-01-30 23:24:34 -0500", "subject": "Removed unused strPath param from path_get()" }, { "commit": "52004d3c84b5886e229dcab67729eff2e1ae7291", "date": "2014-01-30 23:16:19 -0500", "subject": "Comments" }, { "commit": "447d83fcdc64c0a075772a6b6f7affb0191e2b2a", "date": "2014-01-30 23:09:34 -0500", "subject": "Removing more copies." }, { "commit": "f86618377c5b8efe7fe18683f0fb009f7391ad59", "date": "2014-01-30 11:35:34 -0500", "subject": "Lots of backup refactoring." }, { "commit": "e13a706c0a251baf9f69126653bb2eabb78064b5", "date": "2014-01-29 15:38:57 -0500", "subject": "More moving. Links now also get references." }, { "commit": "54c73b38139127e0acb9a13be6cd7a94d84851ca", "date": "2014-01-29 15:03:57 -0500", "subject": "Moving stuff around" }, { "commit": "c26b47d4c7d346dd67168333114ee8770baa6efd", "date": "2014-01-29 12:06:30 -0500", "subject": "Abstracting file functions." }, { "commit": "47c3c82540ab3acbf741b6e511b86898e40c9b5c", "date": "2014-01-29 06:40:15 -0500", "subject": "Fixed checksum function." }, { "commit": "12f6d889de8ec6363b3275ccf887b41b3336d994", "date": "2014-01-28 17:16:07 -0500", "subject": "More modular file copy." }, { "commit": "6625ea1405aef8b19b0f5e0c347cb1b7f9761747", "date": "2014-01-23 19:39:51 -0500", "subject": "Coded paths needed for archive logging" }, { "commit": "cdd1ef73069062720af4061b1955d09c3af27330", "date": "2014-01-22 21:40:56 -0500", "subject": "Added general path function" }, { "commit": "161de23c3bf7e4ce7e58f6611acbf227a675cd8f", "date": "2014-01-22 19:03:20 -0500", "subject": "Starting new structure" }, { "commit": "89b96954f6f6aa87d7ad138c7a87a8cf64558fc4", "date": "2014-01-21 22:02:14 -0500", "subject": "Allow any archive file start starts with 24 hex characters." }, { "commit": "7e73cf22cf8df6410600760390c7600eff3b5152", "date": "2014-01-21 21:59:54 -0500", "subject": "Changed where .backup files were copied" }, { "commit": "62ae46e2139e37d2a036131801c85db13148cd0d", "date": "2014-01-21 21:12:24 -0500", "subject": "Archive expiration working." }, { "commit": "a83e94ba27dd0c0958eaca145d4630ef5d7e0fbe", "date": "2014-01-21 20:38:58 -0500", "subject": "Fixed error in the backup regexp" }, { "commit": "faaaa5690f5c2f7999a692a999e3b3de67ff648f", "date": "2014-01-20 20:09:50 -0500", "subject": "Working on archive retention." }, { "commit": "df7ada85c226fb7e851fa4c3e1182e9f1a78fe47", "date": "2014-01-18 10:14:35 -0500", "subject": "Working on expiration" }, { "commit": "1e0f2485dbcf73b730fb04e6f2ef212d46df725d", "date": "2014-01-18 00:03:32 -0500", "subject": "Working on expiration" }, { "commit": "3719d54cc99d6be4b3d22fb853a2c7ff46b4b3dc", "date": "2014-01-15 20:41:29 -0500", "subject": "Some notes. removed dead .backup move" }, { "commit": "a7de734105b876654b7cbc8d9d448f2749176369", "date": "2014-01-12 20:12:49 -0500", "subject": "Some cleanup - fixed tablespace path regression." }, { "commit": "05dcbc2246ed949fec256e45c6c441b26f30673b", "date": "2014-01-12 15:28:19 -0500", "subject": "Working on making backups consistent" }, { "commit": "c1e59048808f969b2380a0607a2447d27822d25b", "date": "2014-01-12 01:46:27 -0500", "subject": "Fixed xlog copy - working on correctness" }, { "commit": "3ed83e78f2dd8a424a9adc396aa3c2eeed6cf39f", "date": "2014-01-11 02:16:14 -0500", "subject": "Working on archive log copy" }, { "commit": "387439ac8e0b01d61f896c67bd92be88acb9b063", "date": "2014-01-10 16:01:25 -0500", "subject": "Working on processing archive logs" }, { "commit": "e23820098d7a1dc83e3e8a1f88616a7aa298e388", "date": "2014-01-10 14:02:56 -0500", "subject": "Notices are not emitted on start and stop backup" }, { "commit": "8b73a26b8425a14ce233f16fa29d38fbaf428331", "date": "2014-01-10 00:49:19 -0500", "subject": "Some notes for things to do." }, { "commit": "49c1fcd3eb33873d402e486bc2b7ede8280d4fc9", "date": "2014-01-10 00:43:26 -0500", "subject": "Backup file is being copied to pg_xlog" }, { "commit": "8e966c50dd1a28e5cfabc8670c88bfbdcb9913aa", "date": "2014-01-10 00:22:51 -0500", "subject": "Removed commented code" }, { "commit": "b5f965942bc370beb7803395f79872323f7c59ba", "date": "2014-01-10 00:21:46 -0500", "subject": "Added optional hard-linking." }, { "commit": "cceac444ad357bf8babe36f906bacdc25b845841", "date": "2014-01-09 21:55:09 -0500", "subject": "Added comment" }, { "commit": "c47ec3d2609539d5437664aad4535bc2a2edad81", "date": "2014-01-09 21:40:33 -0500", "subject": "All backup references are now stored." }, { "commit": "ed5f8226a4a08ca4665bd49b3413bcaf7e4959c5", "date": "2014-01-09 20:12:46 -0500", "subject": "References are from oldest backup" }, { "commit": "bb8fb5b54f14b622af02899c95ad9e8e88d74e8b", "date": "2014-01-09 20:00:34 -0500", "subject": "Sparse backup dirs implemented" }, { "commit": "854972dde65f9560ff8177115e5b2e785e478a28", "date": "2014-01-09 18:23:50 -0500", "subject": "Basic deltas work." }, { "commit": "c89984cd59dc2ca1792d8cd99df1978719aed16e", "date": "2014-01-09 18:02:42 -0500", "subject": "Revert 2914a6d..e31b21f", "body": "This rolls back to commit 2914a6dcc67b120be0ee5d808590849ebe9c3664." }, { "commit": "e31b21f95aa5bad69ab2a31f9fd569d1a2e01a78", "date": "2014-01-09 18:01:34 -0500", "subject": "Revert 52d8697..e0be213", "body": "This rolls back to commit 52d86971183da8f8a88775f0196f44c3ab9440a1." }, { "commit": "e0be2132063932108069a0754d7416c2e2c58624", "date": "2014-01-09 18:01:12 -0500", "subject": "Revert 2914a6d..9633e17", "body": "This rolls back to commit 2914a6dcc67b120be0ee5d808590849ebe9c3664." }, { "commit": "9633e17d04d00e31c80c3d12f848a5351b97963b", "date": "2014-01-09 17:58:40 -0500", "subject": "Revert \"Removed tmp file.\"", "body": "This reverts commit 52d86971183da8f8a88775f0196f44c3ab9440a1." }, { "commit": "2914a6dcc67b120be0ee5d808590849ebe9c3664", "date": "2014-01-09 17:58:01 -0500", "subject": "Working on delta" }, { "commit": "52d86971183da8f8a88775f0196f44c3ab9440a1", "date": "2014-01-03 21:24:13 -0500", "subject": "Removed tmp file." }, { "commit": "ba5075a3e0458874f8b8dff0b4bc1f8cb07243ae", "date": "2014-01-03 21:19:41 -0500", "subject": "New implementation for archive logging" }, { "commit": "6379b723dee94d63ef55134468ff86f588c717f8", "date": "2014-01-03 20:10:53 -0500", "subject": "Set the backup label" }, { "commit": "78457a2f420428cab317e6cdb57446008ad9751c", "date": "2014-01-03 19:59:47 -0500", "subject": "Simplified incremental naming" }, { "commit": "ef846ac8db0d44339214676a88e0ee7c06d1a217", "date": "2014-01-03 19:28:49 -0500", "subject": "Working on backup rotation." }, { "commit": "e6e995ec19f8cb01311ce0f9f2772edbc009b7d2", "date": "2013-12-18 22:08:49 -0500", "subject": "Fixed typo in config." }, { "commit": "ba72eda700cdde982a360cdf99a4a5d367403cf4", "date": "2013-12-18 21:30:51 -0500", "subject": "Commented out dir mod time variable." }, { "commit": "9907c8b7b74bc2b3bef76a47567c695de680a2e3", "date": "2013-12-17 07:47:24 -0500", "subject": "Set file mtime." }, { "commit": "b1ffa9419034ef7f3b6795f64633cf3dab87d052", "date": "2013-12-16 21:59:22 -0500", "subject": "New storage structure, saved archive start/stop location." }, { "commit": "6d992855d213edae6f1f6986226c7b9d9ad55116", "date": "2013-12-15 20:56:42 -0500", "subject": "Cleaning up start stop backup code." }, { "commit": "0d3fa39117e17d1f7cf83927079da7fdaea826a9", "date": "2013-12-15 20:04:07 -0500", "subject": "Added start and stop backup." }, { "commit": "1d21f4f9fa2f659d1f8e441fae00a87d4150373a", "date": "2013-12-15 18:18:54 -0500", "subject": "Added diff to commands." }, { "commit": "31fca50eae78b777c1113957806ad8658d744235", "date": "2013-12-15 17:18:50 -0500", "subject": "Backup more or less works - no start/stop backup or archiving." }, { "commit": "21b7a3f27a373e877f2da845f6f5ac4974d3daac", "date": "2013-12-14 15:02:47 -0500", "subject": "Added manifest load and save." }, { "commit": "8b40ea7d598d3110c04f664b38060336c744290f", "date": "2013-12-14 14:03:08 -0500", "subject": "Tablespace names are now recorded" }, { "commit": "2ba26ffc262404347a46211545a5a2948a3e656c", "date": "2013-12-14 13:14:59 -0500", "subject": "More refactoring." }, { "commit": "d12773ca85fb73fedac018aecdc6ea5283ddbd2f", "date": "2013-12-11 20:39:07 -0500", "subject": "Added generic config command" }, { "commit": "4aa480b858bba7a0114c292132f7289b726258b0", "date": "2013-12-11 20:13:39 -0500", "subject": "Cleaned up some var names." }, { "commit": "299d402209fd4535f1d7aa8dcb32d6c440f61577", "date": "2013-12-11 19:57:54 -0500", "subject": "More cleanup" }, { "commit": "aa6e72bb9cf9e0523db135790c2cf3097db4c97d", "date": "2013-12-11 19:22:41 -0500", "subject": "Refactoring" }, { "commit": "0dba2ab8c7178ec592fe25a0178b5be482f6d544", "date": "2013-12-10 20:16:43 -0500", "subject": "Added backup command" }, { "commit": "0bdccd298269113aa0454506824a230923cfbb17", "date": "2013-12-10 19:18:41 -0500", "subject": "Reversed order of tests." }, { "commit": "f09505f60efbd715fd72b617036db4124c2b5054", "date": "2013-12-10 19:11:54 -0500", "subject": "Working on unit tests for archiving." }, { "commit": "39989dd01c2fd77147a1b775ae6b092f3d86c65b", "date": "2013-12-09 17:26:47 -0500", "subject": "Working on manifest." }, { "commit": "02a9a693b8881698008ba9f83cbffcc2e8be7f3f", "date": "2013-12-06 20:24:14 -0500", "subject": "Working on backup." }, { "commit": "4d42d448e95df1c7535c3b73594483462f5f893c", "date": "2013-12-05 23:29:05 -0500", "subject": "Working on backup." }, { "commit": "12518e72967ee6f54419f1acdb8f01b3cb2da26e", "date": "2013-12-05 08:59:39 -0500", "subject": "Working on backup." }, { "commit": "ae6886c8e058f3a094d7fbb7544122e3e33dc935", "date": "2013-12-04 22:30:26 -0500", "subject": "Started backup command." }, { "commit": "c9c7e340a7d89feb96d1070b45a15dd4fecfeb4d", "date": "2013-12-04 21:37:45 -0500", "subject": "Added config file." }, { "commit": "53b2aae10640d6abb287f9c163f2b6700dc7b9de", "date": "2013-12-02 21:37:01 -0500", "subject": "Added note." }, { "commit": "4a2b009c2e24c4c7c52849ad53358557658ee2a3", "date": "2013-12-02 21:34:25 -0500", "subject": "Removed unused include." }, { "commit": "1e114cdc9de43efdf43ccbd1d296c01f297a2907", "date": "2013-12-02 21:26:32 -0500", "subject": "Fix comments." }, { "commit": "9553baf540404c528b73a1608e5308b93d06d166", "date": "2013-12-02 21:23:10 -0500", "subject": "Basic error checking and options for archive-local command" }, { "commit": "c7c049902fd87c6f4c43d25b9d60d9289a1742f5", "date": "2013-12-02 16:21:40 -0500", "subject": "Added warnings, comments, removed dead code." }, { "commit": "5761832df5ce2e7655602d92f9d1a55a75a75bee", "date": "2013-12-02 15:10:18 -0500", "subject": "Implemented strict." }, { "commit": "a2c98391dfe7f360de7e97f0cb06d55dbb06af3d", "date": "2013-12-02 14:34:37 -0500", "subject": "Starting on configuration." }, { "commit": "2be8c5d9e7cef1256bb9f530d0594aec8bbf1351", "date": "2013-11-23 20:05:04 -0500", "subject": "Working on unit tests." }, { "commit": "5d0251be2f05dbb44063b874a62057040dcc0f66", "date": "2013-11-23 19:16:09 -0500", "subject": "Working on archive-local and beefing up unit tests." }, { "commit": "8b37786e5b640c7a1c270388ac1158cce45ebf72", "date": "2013-11-22 23:24:37 -0500", "subject": "Now connecting to db." }, { "commit": "8db52c115a18f690d42db975ee1bb28363b5135f", "date": "2013-11-22 17:29:01 -0500", "subject": "Fixed whitespace." }, { "commit": "d86e7eb6276bbe1df025c372690c19da8133c4bb", "date": "2013-11-20 22:30:26 -0500", "subject": "Added checksums." }, { "commit": "bc46aefe61871e27281b9b8c9ffc185c8e2846af", "date": "2013-11-20 22:24:30 -0500", "subject": "Fixed for OSX. Do not every use TextEditor on code!" }, { "commit": "e67821a23096f4788f6bef71e7d4d361b7d9858f", "date": "2013-11-20 21:49:07 -0500", "subject": "Working on OSX port." }, { "commit": "9ce37308b5a3fb81e204a37cfbe28bec968126e4", "date": "2013-11-17 21:48:53 -0500", "subject": "Working on archive-local command." }, { "commit": "548578c8c96d304fb777c9aeb233733f97145818", "date": "2013-11-17 13:58:21 -0500", "subject": "Working on unit test." }, { "commit": "d7283f20f9607f0a73931462d88866487500f087", "date": "2013-11-11 20:10:38 -0500", "subject": "Updated license." }, { "commit": "4a562eb55a691c0658b2f148703afacb38587b0d", "date": "2013-11-11 13:08:39 -0800", "subject": "Initial commit" } ] pgbackrest-release-2.24/doc/resource/html/000077500000000000000000000000001362531507100205475ustar00rootroot00000000000000pgbackrest-release-2.24/doc/resource/html/default.css000066400000000000000000000215521362531507100227120ustar00rootroot00000000000000/******************************************************************************* Html and body *******************************************************************************/ html { background-color: #f8f8f8; font-family: Avenir, Corbel, sans-serif; font-size: 12pt; margin-top: 8px; margin-left: 1%; margin-right: 1%; width: 98%; } body { margin: 0px auto; padding: 0px; width: 100%; text-align: justify; } @media (min-width: 1000px) { body { width: 1000px; } } /******************************************************************************* Link default styling *******************************************************************************/ a:link, a:visited, a:hover, a:active { text-decoration: underline; color: black; } /******************************************************************************* Header *******************************************************************************/ .page-header { width:100%; text-align:center; } .page-header-title { font-size: xx-large; font-weight: bolder; } .page-header-subtitle { position: relative; top: -.25em; font-size: large; font-weight: bold; } .page-header-logo { float: left; margin-top: 0.3em; } .page-header-logo > img { width: 69px; height: 69px; } /******************************************************************************* Menu *******************************************************************************/ /*.page-menu*/ .menu-body { text-align: center; } .menu { white-space: nowrap; display: inline; margin-left: .5em; font-size: 13pt; } .menu:first-of-type { margin-left: 0px; } .menu:before { content: "["; } .menu:after { content: "]"; } /*.menu-link*/ a.menu-link:link, a.menu-link:visited, a.menu-link:active { text-decoration: none; } a.menu-link:hover { text-decoration: underline; } /******************************************************************************* Table of Contents *******************************************************************************/ .page-toc-body { margin-top: .25em; margin-bottom: 2em; } .section1-toc:first-of-type { margin-top: 0; } .section1-toc { margin-top: .5em; } .section1-toc-number { display: inline; font-size: 14pt; margin-right: .5em; } .section1-toc-title { display: inline; font-size: 14pt; } .section2-toc { margin-left: 1.8em; } .section2-toc-number { display: inline; margin-right: .5em; } .section2-toc-title { display: inline; } .section3-toc { margin-left: 2.3em; } .section3-toc-number { display: inline; margin-right: .5em; } .section3-toc-title { display: inline; } /******************************************************************************* Section *******************************************************************************/ .section1 { margin-top: 2.5em; } .section1:first-of-type { margin-top: 1em; } .section2, .section3 { margin-top: 1em; } .section1-header, .section2-header, .section3-header, .page-toc-header { margin-top: .5em; font-weight: 500; } .section1-header, .page-toc-header { border-radius: 3px; background-color: #396a93; color: #f8f8f8; font-size: 22pt; padding-left: .5em; margin-bottom: .5em; } .section1-number, .section2-number, .section3-number { display: inline; margin-right: .5em; } .section1-title, .section2-title, .section3-title { display: inline; } .section1-subtitle, .section2-subtitle, .section3-subtitle { font-weight: bold; font-size: 16pt; margin-top: .5em; } .section1-subsubtitle, .section2-subsubtitle, .section3-subsubtitle { font-style: italic; font-size: 14pt; margin-top: 0px; } .section1-subtitle { font-size: 16pt; } .section1-subsubtitle { font-size: 14pt; } .section2 { margin-top: 1em; } .section2-header { border-bottom: 2px #396a93 solid; color: #396a93; font-size: 16pt; } .section2-subtitle, .section2-subtitle { font-size: 14pt; } .section2-subsubtitle, .section3-subsubtitle { font-size: 12pt; } .section3 { margin-left: 1em; margin-top: 1em; } .section3:first-of-type { border-top: none; } .section3-header { display: inline; font-size: 14pt; color: #396a93; border-bottom: 1px #396a93 solid; } .section-intro { margin-top: .75em; } /*.section-body*/ /******************************************************************************* Table Elements *******************************************************************************/ .table { margin-top: .5em; border-spacing: .5em 0; } .table-caption { text-align: left; font-size: 12pt; font-weight: bold; color: #396a93; } .table-header-row { } .table-header-left, .table-header-center, .table-header-right { white-space: nowrap; border-bottom: 1px black solid; } .table-header-left { text-align: left; } .table-header-center { text-align: center; } .table-header-right { text-align: right; } .table-header-fill { width: 100%; } .table-row { } .table-data-left, .table-data-center, .table-data-right { white-space: nowrap; } .table-data-left { padding-top: 0px; text-align: left; } .table-data-center { text-align: center; } .table-data-right { text-align: right; } /******************************************************************************* Config, Execute, Code Block, Release Elements *******************************************************************************/ .section-body-text { margin-top: 1em; } .section-body-text:first-of-type { margin-top: .75em; } .execute, .config, .code-block { /*white-space: nowrap;*/ margin-left: 1em; margin-right: 1em; margin-top: .8em; margin-bottom: 1em; } .execute-title, .config-title { font-size: 11pt; margin-bottom: .125em; } .execute-body, .config-body, .code-block { border-radius: 3px; background-color: #444444; font-family: monospace; unicode-bidi: embed; color: #f8f8f8; /*color: white;*/ font-size: 10pt; } .execute-body-cmd, .execute-body-output, .execute-body-output-highlight, .config-body-title, .code-block { padding-left: .5em; padding-right: .5em; } /* Would rather not use pre at all, but Firefox won't copy code samples correctly without it */ pre { margin: 0px; padding: 0px; white-space: pre-wrap; } .execute-body-cmd:before { content: "$ "; } .execute-body-cmd:first-of-type, .execute-body-output, .config-body-title, .config-body-output, .code-block, .execute-body-output-highlight, .execute-body-output-highlight-error { padding-top: .25em; } .execute-body-cmd, .execute-body-output, .config-body-title, .config-body-output, .code-block, .execute-body-output-highlight, .execute-body-output-highlight-error { padding-bottom: .25em; } .execute-body-output, .config-body-output, .code-block { border-radius: 3px; background-color: #606060; } .execute-body-output-highlight { border-radius: 3px; background-color: #1e7b1e; } .execute-body-output-highlight-error { border-radius: 3px; background-color: #a32929; } .execute-body-output, .execute-body-output-highlight, .execute-body-output-highlight-error, .config-body-output { padding-left: 1.75em; } /*.code-block*/ /*.section-body-execute-output*/ /******************************************************************************* Lists *******************************************************************************/ ul.list-unordered { margin-top: .5em; } li.list-unordered { margin-top: .5em; } /******************************************************************************* Admonition *******************************************************************************/ .admonition { padding-left: 20px; font-style: italic; margin: 10px 0px; } .admonition>.note, .admonition>.warning, .admonition>.caution, .admonition>.important, .admonition>.tip { font-weight: bold; float: left; padding-right: 10px; } .admonition>.note-text, .admonition>.warning-text, .admonition>.caution-text, .admonition>.important-text, .admonition>.tip-text { overflow: hidden; } /******************************************************************************* Keywords *******************************************************************************/ .backrest, .cmd, .postgres, .host, .proper { font-weight: 500; } .path, .br-option, .br-setting, .pg-option, .pg-setting, .id, .user, .file, .path { unicode-bidi: embed; font-family: monospace; white-space: nowrap; } /******************************************************************************* Footer *******************************************************************************/ .page-footer { border-top: 2px #cccccc solid; margin-top: 1em; padding-top: .25em; font-size: x-small; white-space: nowrap; text-align: center; } pgbackrest-release-2.24/doc/resource/html/favicon.png000066400000000000000000000367011362531507100227110ustar00rootroot00000000000000‰PNG  IHDR szzô pHYs  šœ;®iTXtXML:com.adobe.xmp Adobe Photoshop CC 2015 (Macintosh) 2016-05-14T16:50:19-04:00 2016-05-14T17:10:09-04:00 2016-05-14T17:10:09-04:00 image/png 3 xmp.iid:d9e4410d-ca59-49b8-8098-ad17fe93c96c adobe:docid:photoshop:901a563a-5aa6-1179-89fa-991d02f05b6a xmp.did:c8495a23-30be-496a-b761-dc67c0d8dfe2 created xmp.iid:c8495a23-30be-496a-b761-dc67c0d8dfe2 2016-05-14T16:50:19-04:00 Adobe Photoshop CC 2015 (Macintosh) saved xmp.iid:a2b493b0-578b-4cd4-8b14-7f81bc6b2cb4 2016-05-14T16:59:42-04:00 Adobe Photoshop CC 2015 (Macintosh) / saved xmp.iid:d9e4410d-ca59-49b8-8098-ad17fe93c96c 2016-05-14T17:10:09-04:00 Adobe Photoshop CC 2015 (Macintosh) / 1 720000/10000 720000/10000 2 65535 32 32 ZÁ‰À cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚì—½KÃ@Æ QŠ:ˆvê¢â".Nââæ$]Ä?@ÄAÐQ\T‚‚³ƒƒ" ~M\ì"Žuñ‡.‘mt¹ƒ#ä’»|Ð%/¼$áž÷yžïÝ%`cÀðÈC BŽ1 \^ˆ¸L¸f².»@7B8˜]`OÔ¦ŠAàÖB8˜wÀ@)Äe^'_Ï@\榭x%Cq™ãaBŽÆÀ,ðüfÐÄ=  Ì%)žîS¼õ£à°ZrÕé:J ^ÙÀªº¥Y¶•bx•ñ†…xCá^^ã;A#'¢Žbbø1ï‰]QÛÑàN¥ø’(Ò~(Íúl` ©ÌZ+çËNé¼ ­`••ËíX¬€/째N™›8ßëÛp;Àý‹-W85`Å à8‹Á´ ÅŸ€sù0 >/PUT }ifelse pdfmark_5 }forall }bdf /ds{ Adobe_AGM_Utils begin }bdf /dt{ currentdict Adobe_AGM_Utils eq{ end }if }bdf systemdict/setpacking known {setpacking}if %%EndResource %%BeginResource: procset Adobe_AGM_Core 2.0 0 %%Version: 2.0 0 %%Copyright: Copyright(C)1997-2007 Adobe Systems, Inc. All Rights Reserved. systemdict/setpacking known { currentpacking true setpacking }if userdict/Adobe_AGM_Core 209 dict dup begin put /Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def /AGMCORE_str256 256 string def /AGMCORE_save nd /AGMCORE_graphicsave nd /AGMCORE_c 0 def /AGMCORE_m 0 def /AGMCORE_y 0 def /AGMCORE_k 0 def /AGMCORE_cmykbuf 4 array def /AGMCORE_screen[currentscreen]cvx def /AGMCORE_tmp 0 def /AGMCORE_&setgray nd /AGMCORE_&setcolor nd /AGMCORE_&setcolorspace nd /AGMCORE_&setcmykcolor nd /AGMCORE_cyan_plate nd /AGMCORE_magenta_plate nd /AGMCORE_yellow_plate nd /AGMCORE_black_plate nd /AGMCORE_plate_ndx nd /AGMCORE_get_ink_data nd /AGMCORE_is_cmyk_sep nd /AGMCORE_host_sep nd /AGMCORE_avoid_L2_sep_space nd /AGMCORE_distilling nd /AGMCORE_composite_job nd /AGMCORE_producing_seps nd /AGMCORE_ps_level -1 def /AGMCORE_ps_version -1 def /AGMCORE_environ_ok nd /AGMCORE_CSD_cache 0 dict def /AGMCORE_currentoverprint false def /AGMCORE_deltaX nd /AGMCORE_deltaY nd /AGMCORE_name nd /AGMCORE_sep_special nd /AGMCORE_err_strings 4 dict def /AGMCORE_cur_err nd /AGMCORE_current_spot_alias false def /AGMCORE_inverting false def /AGMCORE_feature_dictCount nd /AGMCORE_feature_opCount nd /AGMCORE_feature_ctm nd /AGMCORE_ConvertToProcess false def /AGMCORE_Default_CTM matrix def /AGMCORE_Default_PageSize nd /AGMCORE_Default_flatness nd /AGMCORE_currentbg nd /AGMCORE_currentucr nd /AGMCORE_pattern_paint_type 0 def /knockout_unitsq nd currentglobal true setglobal [/CSA/Gradient/Procedure] { /Generic/Category findresource dup length dict copy/Category defineresource pop }forall setglobal /AGMCORE_key_known { where{ /Adobe_AGM_Core_Id known }{ false }ifelse }ndf /flushinput { save 2 dict begin /CompareBuffer 3 -1 roll def /readbuffer 256 string def mark { currentfile readbuffer{readline}stopped {cleartomark mark} { not {pop exit} if CompareBuffer eq {exit} if }ifelse }loop cleartomark end restore }bdf /getspotfunction { AGMCORE_screen exch pop exch pop dup type/dicttype eq{ dup/HalftoneType get 1 eq{ /SpotFunction get }{ dup/HalftoneType get 2 eq{ /GraySpotFunction get }{ pop { abs exch abs 2 copy add 1 gt{ 1 sub dup mul exch 1 sub dup mul add 1 sub }{ dup mul exch dup mul add 1 exch sub }ifelse }bind }ifelse }ifelse }if }def /np {newpath}bdf /clp_npth {clip np}def /eoclp_npth {eoclip np}def /npth_clp {np clip}def /graphic_setup { /AGMCORE_graphicsave save store concat 0 setgray 0 setlinecap 0 setlinejoin 1 setlinewidth []0 setdash 10 setmiterlimit np false setoverprint false setstrokeadjust //Adobe_AGM_Core/spot_alias gx /Adobe_AGM_Image where{ pop Adobe_AGM_Image/spot_alias 2 copy known{ gx }{ pop pop }ifelse }if /sep_colorspace_dict null AGMCORE_gput 100 dict begin /dictstackcount countdictstack def /showpage{}def mark }def /graphic_cleanup { cleartomark dictstackcount 1 countdictstack 1 sub{end}for end AGMCORE_graphicsave restore }def /compose_error_msg { grestoreall initgraphics /Helvetica findfont 10 scalefont setfont /AGMCORE_deltaY 100 def /AGMCORE_deltaX 310 def clippath pathbbox np pop pop 36 add exch 36 add exch moveto 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath 0 AGMCORE_&setgray gsave 1 AGMCORE_&setgray fill grestore 1 setlinewidth gsave stroke grestore currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto /AGMCORE_deltaY 12 def /AGMCORE_tmp 0 def AGMCORE_err_strings exch get { dup 32 eq { pop AGMCORE_str256 0 AGMCORE_tmp getinterval stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt { currentpoint AGMCORE_deltaY sub exch pop clippath pathbbox pop pop pop 44 add exch moveto }if AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show 0 1 AGMCORE_str256 length 1 sub { AGMCORE_str256 exch 0 put }for /AGMCORE_tmp 0 def }{ AGMCORE_str256 exch AGMCORE_tmp xpt /AGMCORE_tmp AGMCORE_tmp 1 add def }ifelse }forall }bdf /AGMCORE_CMYKDeviceNColorspaces[ [/Separation/None/DeviceCMYK{0 0 0}] [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind] [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind] [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind] [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind] [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind] [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind] [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind] [/Separation(Cyan)/DeviceCMYK{0 0 0}] [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind] [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind] [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind] [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}] [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind] [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}] [/DeviceCMYK] ]def /ds{ Adobe_AGM_Core begin /currentdistillerparams where { pop currentdistillerparams/CoreDistVersion get 5000 lt {<>setdistillerparams}if }if /AGMCORE_ps_version xdf /AGMCORE_ps_level xdf errordict/AGM_handleerror known not{ errordict/AGM_handleerror errordict/handleerror get put errordict/handleerror{ Adobe_AGM_Core begin $error/newerror get AGMCORE_cur_err null ne and{ $error/newerror false put AGMCORE_cur_err compose_error_msg }if $error/newerror true put end errordict/AGM_handleerror get exec }bind put }if /AGMCORE_environ_ok ps_level AGMCORE_ps_level ge ps_version AGMCORE_ps_version ge and AGMCORE_ps_level -1 eq or def AGMCORE_environ_ok not {/AGMCORE_cur_err/AGMCORE_bad_environ def}if /AGMCORE_&setgray systemdict/setgray get def level2{ /AGMCORE_&setcolor systemdict/setcolor get def /AGMCORE_&setcolorspace systemdict/setcolorspace get def }if /AGMCORE_currentbg currentblackgeneration def /AGMCORE_currentucr currentundercolorremoval def /AGMCORE_Default_flatness currentflat def /AGMCORE_distilling /product where{ pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and }{ false }ifelse def /AGMCORE_GSTATE AGMCORE_key_known not{ /AGMCORE_GSTATE 21 dict def /AGMCORE_tmpmatrix matrix def /AGMCORE_gstack 32 array def /AGMCORE_gstackptr 0 def /AGMCORE_gstacksaveptr 0 def /AGMCORE_gstackframekeys 14 def /AGMCORE_&gsave/gsave ldf /AGMCORE_&grestore/grestore ldf /AGMCORE_&grestoreall/grestoreall ldf /AGMCORE_&save/save ldf /AGMCORE_&setoverprint/setoverprint ldf /AGMCORE_gdictcopy{ begin {def}forall end }def /AGMCORE_gput{ AGMCORE_gstack AGMCORE_gstackptr get 3 1 roll put }def /AGMCORE_gget{ AGMCORE_gstack AGMCORE_gstackptr get exch get }def /gsave{ AGMCORE_&gsave AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge{limitcheck}if /AGMCORE_gstackptr exch store AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def /grestore{ AGMCORE_&grestore AGMCORE_gstackptr 1 sub dup AGMCORE_gstacksaveptr lt{1 add}if dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse /AGMCORE_gstackptr exch store }def /grestoreall{ AGMCORE_&grestoreall /AGMCORE_gstackptr AGMCORE_gstacksaveptr store }def /save{ AGMCORE_&save AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge{limitcheck}if /AGMCORE_gstackptr exch store /AGMCORE_gstacksaveptr AGMCORE_gstackptr store AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def /setoverprint{ dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint }def 0 1 AGMCORE_gstack length 1 sub{ AGMCORE_gstack exch AGMCORE_gstackframekeys dict put }for }if level3/AGMCORE_&sysshfill AGMCORE_key_known not and { /AGMCORE_&sysshfill systemdict/shfill get def /AGMCORE_&sysmakepattern systemdict/makepattern get def /AGMCORE_&usrmakepattern/makepattern load def }if /currentcmykcolor[0 0 0 0]AGMCORE_gput /currentstrokeadjust false AGMCORE_gput /currentcolorspace[/DeviceGray]AGMCORE_gput /sep_tint 0 AGMCORE_gput /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput /sep_colorspace_dict null AGMCORE_gput /devicen_colorspace_dict null AGMCORE_gput /indexed_colorspace_dict null AGMCORE_gput /currentcolor_intent()AGMCORE_gput /customcolor_tint 1 AGMCORE_gput /absolute_colorimetric_crd null AGMCORE_gput /relative_colorimetric_crd null AGMCORE_gput /saturation_crd null AGMCORE_gput /perceptual_crd null AGMCORE_gput currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf << /MaxPatternItem currentsystemparams/MaxPatternCache get >> setuserparams end }def /ps { /setcmykcolor where{ pop Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put }if Adobe_AGM_Core begin /setcmykcolor { 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput 1 sub 4 1 roll 3{ 3 index add neg dup 0 lt{ pop 0 }if 3 1 roll }repeat setrgbcolor pop }ndf /currentcmykcolor { /currentcmykcolor AGMCORE_gget aload pop }ndf /setoverprint {pop}ndf /currentoverprint {false}ndf /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def /AGMCORE_plate_ndx AGMCORE_cyan_plate{ 0 }{ AGMCORE_magenta_plate{ 1 }{ AGMCORE_yellow_plate{ 2 }{ AGMCORE_black_plate{ 3 }{ 4 }ifelse }ifelse }ifelse }ifelse def /AGMCORE_have_reported_unsupported_color_space false def /AGMCORE_report_unsupported_color_space { AGMCORE_have_reported_unsupported_color_space false eq { (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)== Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf }if }def /AGMCORE_composite_job AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def /AGMCORE_in_rip_sep /AGMCORE_in_rip_sep where{ pop AGMCORE_in_rip_sep }{ AGMCORE_distilling { false }{ userdict/Adobe_AGM_OnHost_Seps known{ false }{ level2{ currentpagedevice/Separations 2 copy known{ get }{ pop pop false }ifelse }{ false }ifelse }ifelse }ifelse }ifelse def /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def /AGM_preserve_spots /AGM_preserve_spots where{ pop AGM_preserve_spots }{ AGMCORE_distilling AGMCORE_producing_seps or }ifelse def /AGM_is_distiller_preserving_spotimages { currentdistillerparams/PreserveOverprintSettings known { currentdistillerparams/PreserveOverprintSettings get { currentdistillerparams/ColorConversionStrategy known { currentdistillerparams/ColorConversionStrategy get /sRGB ne }{ true }ifelse }{ false }ifelse }{ false }ifelse }def /convert_spot_to_process where{pop}{ /convert_spot_to_process { //Adobe_AGM_Core begin dup map_alias{ /Name get exch pop }if dup dup(None)eq exch(All)eq or { pop false }{ AGMCORE_host_sep { gsave 1 0 0 0 setcmykcolor currentgray 1 exch sub 0 1 0 0 setcmykcolor currentgray 1 exch sub 0 0 1 0 setcmykcolor currentgray 1 exch sub 0 0 0 1 setcmykcolor currentgray 1 exch sub add add add 0 eq { pop false }{ false setoverprint current_spot_alias false set_spot_alias 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor set_spot_alias currentgray 1 ne }ifelse grestore }{ AGMCORE_distilling { pop AGM_is_distiller_preserving_spotimages not }{ //Adobe_AGM_Core/AGMCORE_name xddf false //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq AGMUTIL_cpd/OverrideSeparations known and { AGMUTIL_cpd/OverrideSeparations get { /HqnSpots/ProcSet resourcestatus { pop pop pop true }if }if }if { AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not }{ gsave [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace false AGMUTIL_cpd/SeparationColorNames 2 copy known { get {AGMCORE_name eq or}forall not }{ pop pop pop true }ifelse grestore }ifelse }ifelse }ifelse }ifelse end }def }ifelse /convert_to_process where{pop}{ /convert_to_process { dup length 0 eq { pop false }{ AGMCORE_host_sep { dup true exch { dup(Cyan)eq exch dup(Magenta)eq 3 -1 roll or exch dup(Yellow)eq 3 -1 roll or exch dup(Black)eq 3 -1 roll or {pop} {convert_spot_to_process and}ifelse } forall { true exch { dup(Cyan)eq exch dup(Magenta)eq 3 -1 roll or exch dup(Yellow)eq 3 -1 roll or exch (Black)eq or and }forall not }{pop false}ifelse }{ false exch { /PhotoshopDuotoneList where{pop false}{true}ifelse { dup(Cyan)eq exch dup(Magenta)eq 3 -1 roll or exch dup(Yellow)eq 3 -1 roll or exch dup(Black)eq 3 -1 roll or {pop} {convert_spot_to_process or}ifelse } { convert_spot_to_process or } ifelse } forall }ifelse }ifelse }def }ifelse /AGMCORE_avoid_L2_sep_space version cvr 2012 lt level2 and AGMCORE_producing_seps not and def /AGMCORE_is_cmyk_sep AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or def /AGM_avoid_0_cmyk where{ pop AGM_avoid_0_cmyk }{ AGM_preserve_spots userdict/Adobe_AGM_OnHost_Seps known userdict/Adobe_AGM_InRip_Seps known or not and }ifelse { /setcmykcolor[ { 4 copy add add add 0 eq currentoverprint and{ pop 0.0005 }if }/exec cvx /AGMCORE_&setcmykcolor load dup type/operatortype ne{ /exec cvx }if ]cvx def }if /AGMCORE_IsSeparationAProcessColor { dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or }def AGMCORE_host_sep{ /setcolortransfer { AGMCORE_cyan_plate{ pop pop pop }{ AGMCORE_magenta_plate{ 4 3 roll pop pop pop }{ AGMCORE_yellow_plate{ 4 2 roll pop pop pop }{ 4 1 roll pop pop pop }ifelse }ifelse }ifelse settransfer } def /AGMCORE_get_ink_data AGMCORE_cyan_plate{ {pop pop pop} }{ AGMCORE_magenta_plate{ {4 3 roll pop pop pop} }{ AGMCORE_yellow_plate{ {4 2 roll pop pop pop} }{ {4 1 roll pop pop pop} }ifelse }ifelse }ifelse def /AGMCORE_RemoveProcessColorNames { 1 dict begin /filtername { dup/Cyan eq 1 index(Cyan)eq or {pop(_cyan_)}if dup/Magenta eq 1 index(Magenta)eq or {pop(_magenta_)}if dup/Yellow eq 1 index(Yellow)eq or {pop(_yellow_)}if dup/Black eq 1 index(Black)eq or {pop(_black_)}if }def dup type/arraytype eq {[exch{filtername}forall]} {filtername}ifelse end }def level3{ /AGMCORE_IsCurrentColor { dup AGMCORE_IsSeparationAProcessColor { AGMCORE_plate_ndx 0 eq {dup(Cyan)eq exch/Cyan eq or}if AGMCORE_plate_ndx 1 eq {dup(Magenta)eq exch/Magenta eq or}if AGMCORE_plate_ndx 2 eq {dup(Yellow)eq exch/Yellow eq or}if AGMCORE_plate_ndx 3 eq {dup(Black)eq exch/Black eq or}if AGMCORE_plate_ndx 4 eq {pop false}if }{ gsave false setoverprint current_spot_alias false set_spot_alias 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor set_spot_alias currentgray 1 ne grestore }ifelse }def /AGMCORE_filter_functiondatasource { 5 dict begin /data_in xdf data_in type/stringtype eq { /ncomp xdf /comp xdf /string_out data_in length ncomp idiv string def 0 ncomp data_in length 1 sub { string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put }for string_out }{ string/string_in xdf /string_out 1 string def /component xdf [ data_in string_in/readstring cvx [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx [/pop cvx()]cvx/ifelse cvx ]cvx/ReusableStreamDecode filter }ifelse end }def /AGMCORE_separateShadingFunction { 2 dict begin /paint? xdf /channel xdf dup type/dicttype eq { begin FunctionType 0 eq { /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def currentdict/Decode known {/Decode Decode channel 2 mul 2 getinterval def}if paint? not {/Decode[1 1]def}if }if FunctionType 2 eq { paint? { /C0[C0 channel get 1 exch sub]def /C1[C1 channel get 1 exch sub]def }{ /C0[1]def /C1[1]def }ifelse }if FunctionType 3 eq { /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def }if currentdict/Range known {/Range[0 1]def}if currentdict end}{ channel get 0 paint? AGMCORE_separateShadingFunction }ifelse end }def /AGMCORE_separateShading { 3 -1 roll begin currentdict/Function known { currentdict/Background known {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf /ColorSpace[/DeviceGray]def }{ ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq { /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def }{ ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put }ifelse ColorSpace 0 get/Separation eq { { [1/exch cvx/sub cvx]cvx }{ [/pop cvx 1]cvx }ifelse ColorSpace 3 3 -1 roll put pop }{ { [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx }{ pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx }ifelse ColorSpace 3 3 -1 roll bind put }ifelse ColorSpace 2/DeviceGray put }ifelse end }def /AGMCORE_separateShadingDict { dup/ColorSpace get dup type/arraytype ne {[exch]}if dup 0 get/DeviceCMYK eq { exch begin currentdict AGMCORE_cyan_plate {0 true}if AGMCORE_magenta_plate {1 true}if AGMCORE_yellow_plate {2 true}if AGMCORE_black_plate {3 true}if AGMCORE_plate_ndx 4 eq {0 false}if dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading currentdict end exch }if dup 0 get/Separation eq { exch begin ColorSpace 1 get dup/None ne exch/All ne and { ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and { ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq { /ColorSpace [ /Separation ColorSpace 1 get /DeviceGray [ ColorSpace 3 get/exec cvx 4 AGMCORE_plate_ndx sub -1/roll cvx 4 1/roll cvx 3[/pop cvx]cvx/repeat cvx 1/exch cvx/sub cvx ]cvx ]def }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { currentdict 0 false AGMCORE_separateShading }if }ifelse }{ currentdict ColorSpace 1 get AGMCORE_IsCurrentColor 0 exch dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading }ifelse }if currentdict end exch }if dup 0 get/DeviceN eq { exch begin ColorSpace 1 get convert_to_process { ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq { /ColorSpace [ /DeviceN ColorSpace 1 get /DeviceGray [ ColorSpace 3 get/exec cvx 4 AGMCORE_plate_ndx sub -1/roll cvx 4 1/roll cvx 3[/pop cvx]cvx/repeat cvx 1/exch cvx/sub cvx ]cvx ]def }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { currentdict 0 false AGMCORE_separateShading /ColorSpace[/DeviceGray]def }if }ifelse }{ currentdict false -1 ColorSpace 1 get { AGMCORE_IsCurrentColor { 1 add exch pop true exch exit }if 1 add }forall exch dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading }ifelse currentdict end exch }if dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not { exch begin ColorSpace dup type/arraytype eq {0 get}if /DeviceGray ne { AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { ColorSpace 0 get/CIEBasedA eq { /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def }if ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or { /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def }if ColorSpace 0 get/CIEBasedDEFG eq { /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def }if currentdict 0 false AGMCORE_separateShading }if }if currentdict end exch }if pop dup/AGMCORE_ignoreshade known { begin /ColorSpace[/Separation(None)/DeviceGray{}]def currentdict end }if }def /shfill { AGMCORE_separateShadingDict dup/AGMCORE_ignoreshade known {pop} {AGMCORE_&sysshfill}ifelse }def /makepattern { exch dup/PatternType get 2 eq { clonedict begin /Shading Shading AGMCORE_separateShadingDict def Shading/AGMCORE_ignoreshade known currentdict end exch {pop<>}if exch AGMCORE_&sysmakepattern }{ exch AGMCORE_&usrmakepattern }ifelse }def }if }if AGMCORE_in_rip_sep{ /setcustomcolor { exch aload pop dup 7 1 roll inRip_spot_has_ink not { 4{4 index mul 4 1 roll} repeat /DeviceCMYK setcolorspace 6 -2 roll pop pop }{ //Adobe_AGM_Core begin /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf end [/Separation 4 -1 roll/DeviceCMYK {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} ] setcolorspace }ifelse setcolor }ndf /setseparationgray { [/Separation(All)/DeviceGray{}]setcolorspace_opt 1 exch sub setcolor }ndf }{ /setseparationgray { AGMCORE_&setgray }ndf }ifelse /findcmykcustomcolor { 5 makereadonlyarray }ndf /setcustomcolor { exch aload pop pop 4{4 index mul 4 1 roll}repeat setcmykcolor pop }ndf /has_color /colorimage where{ AGMCORE_producing_seps{ pop true }{ systemdict eq }ifelse }{ false }ifelse def /map_index { 1 index mul exch getinterval{255 div}forall }bdf /map_indexed_devn { Lookup Names length 3 -1 roll cvi map_index }bdf /n_color_components { base_colorspace_type dup/DeviceGray eq{ pop 1 }{ /DeviceCMYK eq{ 4 }{ 3 }ifelse }ifelse }bdf level2{ /mo/moveto ldf /li/lineto ldf /cv/curveto ldf /knockout_unitsq { 1 setgray 0 0 1 1 rectfill }def level2/setcolorspace AGMCORE_key_known not and{ /AGMCORE_&&&setcolorspace/setcolorspace ldf /AGMCORE_ReplaceMappedColor { dup type dup/arraytype eq exch/packedarraytype eq or { /AGMCORE_SpotAliasAry2 where{ begin dup 0 get dup/Separation eq { pop dup length array copy dup dup 1 get current_spot_alias { dup map_alias { false set_spot_alias dup 1 exch setsepcolorspace true set_spot_alias begin /sep_colorspace_dict currentdict AGMCORE_gput pop pop pop [ /Separation Name CSA map_csa MappedCSA /sep_colorspace_proc load ] dup Name end }if }if map_reserved_ink_name 1 xpt }{ /DeviceN eq { dup length array copy dup dup 1 get[ exch{ current_spot_alias{ dup map_alias{ /Name get exch pop }if }if map_reserved_ink_name }forall ]1 xpt }if }ifelse end }if }if }def /setcolorspace { dup type dup/arraytype eq exch/packedarraytype eq or { dup 0 get/Indexed eq { AGMCORE_distilling { /PhotoshopDuotoneList where { pop false }{ true }ifelse }{ true }ifelse { aload pop 3 -1 roll AGMCORE_ReplaceMappedColor 3 1 roll 4 array astore }if }{ AGMCORE_ReplaceMappedColor }ifelse }if DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if }def }if }{ /adj { currentstrokeadjust{ transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }if }def /mo{ adj moveto }def /li{ adj lineto }def /cv{ 6 2 roll adj 6 2 roll adj 6 2 roll adj curveto }def /knockout_unitsq { 1 setgray 8 8 1[8 0 0 8 0 0]{}image }def /currentstrokeadjust{ /currentstrokeadjust AGMCORE_gget }def /setstrokeadjust{ /currentstrokeadjust exch AGMCORE_gput }def /setcolorspace { /currentcolorspace exch AGMCORE_gput }def /currentcolorspace { /currentcolorspace AGMCORE_gget }def /setcolor_devicecolor { base_colorspace_type dup/DeviceGray eq{ pop setgray }{ /DeviceCMYK eq{ setcmykcolor }{ setrgbcolor }ifelse }ifelse }def /setcolor { currentcolorspace 0 get dup/DeviceGray ne{ dup/DeviceCMYK ne{ dup/DeviceRGB ne{ dup/Separation eq{ pop currentcolorspace 3 gx currentcolorspace 2 get }{ dup/Indexed eq{ pop currentcolorspace 3 get dup type/stringtype eq{ currentcolorspace 1 get n_color_components 3 -1 roll map_index }{ exec }ifelse currentcolorspace 1 get }{ /AGMCORE_cur_err/AGMCORE_invalid_color_space def AGMCORE_invalid_color_space }ifelse }ifelse }if }if }if setcolor_devicecolor }def }ifelse /sop/setoverprint ldf /lw/setlinewidth ldf /lc/setlinecap ldf /lj/setlinejoin ldf /ml/setmiterlimit ldf /dsh/setdash ldf /sadj/setstrokeadjust ldf /gry/setgray ldf /rgb/setrgbcolor ldf /cmyk[ /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx /setcmykcolor load dup type/operatortype ne{/exec cvx}if ]cvx bdf level3 AGMCORE_host_sep not and{ /nzopmsc{ 6 dict begin /kk exch def /yy exch def /mm exch def /cc exch def /sum 0 def cc 0 ne{/sum sum 2#1000 or def cc}if mm 0 ne{/sum sum 2#0100 or def mm}if yy 0 ne{/sum sum 2#0010 or def yy}if kk 0 ne{/sum sum 2#0001 or def kk}if AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace sum 0 eq{0}if end setcolor }bdf }{ /nzopmsc/cmyk ldf }ifelse /sep/setsepcolor ldf /devn/setdevicencolor ldf /idx/setindexedcolor ldf /colr/setcolor ldf /csacrd/set_csa_crd ldf /sepcs/setsepcolorspace ldf /devncs/setdevicencolorspace ldf /idxcs/setindexedcolorspace ldf /cp/closepath ldf /clp/clp_npth ldf /eclp/eoclp_npth ldf /f/fill ldf /ef/eofill ldf /@/stroke ldf /nclp/npth_clp ldf /gset/graphic_setup ldf /gcln/graphic_cleanup ldf /ct/concat ldf /cf/currentfile ldf /fl/filter ldf /rs/readstring ldf /AGMCORE_def_ht currenthalftone def /clonedict Adobe_AGM_Utils begin/clonedict load end def /clonearray Adobe_AGM_Utils begin/clonearray load end def currentdict{ dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ bind }if def }forall /getrampcolor { /indx exch def 0 1 NumComp 1 sub { dup Samples exch get dup type/stringtype eq{indx get}if exch Scaling exch get aload pop 3 1 roll mul add }for ColorSpaceFamily/Separation eq {sep} { ColorSpaceFamily/DeviceN eq {devn}{setcolor}ifelse }ifelse }bdf /sssetbackground{ aload pop ColorSpaceFamily/Separation eq {sep} { ColorSpaceFamily/DeviceN eq {devn}{setcolor}ifelse }ifelse }bdf /RadialShade { 40 dict begin /ColorSpaceFamily xdf /background xdf /ext1 xdf /ext0 xdf /BBox xdf /r2 xdf /c2y xdf /c2x xdf /r1 xdf /c1y xdf /c1x xdf /rampdict xdf /setinkoverprint where{pop/setinkoverprint{pop}def}if gsave BBox length 0 gt { np BBox 0 get BBox 1 get moveto BBox 2 get BBox 0 get sub 0 rlineto 0 BBox 3 get BBox 1 get sub rlineto BBox 2 get BBox 0 get sub neg 0 rlineto closepath clip np }if c1x c2x eq { c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse }{ /slope c2y c1y sub c2x c1x sub div def /theta slope 1 atan def c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if }ifelse gsave clippath c1x c1y translate theta rotate -90 rotate {pathbbox}stopped {0 0 0 0}if /yMax xdf /xMax xdf /yMin xdf /xMin xdf grestore xMax xMin eq yMax yMin eq or { grestore end }{ /max{2 copy gt{pop}{exch pop}ifelse}bdf /min{2 copy lt{pop}{exch pop}ifelse}bdf rampdict begin 40 dict begin background length 0 gt{background sssetbackground gsave clippath fill grestore}if gsave c1x c1y translate theta rotate -90 rotate /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def /c1y 0 def /c1x 0 def /c2x 0 def ext0 { 0 getrampcolor c2y r2 add r1 sub 0.0001 lt { c1x c1y r1 360 0 arcn pathbbox /aymax exch def /axmax exch def /aymin exch def /axmin exch def /bxMin xMin axmin min def /byMin yMin aymin min def /bxMax xMax axmax max def /byMax yMax aymax max def bxMin byMin moveto bxMax byMin lineto bxMax byMax lineto bxMin byMax lineto bxMin byMin lineto eofill }{ c2y r1 add r2 le { c1x c1y r1 0 360 arc fill } { c2x c2y r2 0 360 arc fill r1 r2 eq { /p1x r1 neg def /p1y c1y def /p2x r1 def /p2y c1y def p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto fill }{ /AA r2 r1 sub c2y div def AA -1 eq {/theta 89.99 def} {/theta AA 1 AA dup mul sub sqrt div 1 atan def} ifelse /SS1 90 theta add dup sin exch cos div def /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def /p1y p1x SS1 div neg def /SS2 90 theta sub dup sin exch cos div def /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def /p2y p2x SS2 div neg def r1 r2 gt { /L1maxX p1x yMin p1y sub SS1 div add def /L2maxX p2x yMin p2y sub SS2 div add def }{ /L1maxX 0 def /L2maxX 0 def }ifelse p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto L1maxX L1maxX p1x sub SS1 mul p1y add lineto fill }ifelse }ifelse }ifelse }if c1x c2x sub dup mul c1y c2y sub dup mul add 0.5 exp 0 dtransform dup mul exch dup mul add 0.5 exp 72 div 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 1 index 1 index lt{exch}if pop /hires xdf hires mul /numpix xdf /numsteps NumSamples def /rampIndxInc 1 def /subsampling false def numpix 0 ne { NumSamples numpix div 0.5 gt { /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def /rampIndxInc NumSamples 1 sub numsteps div def /subsampling true def }if }if /xInc c2x c1x sub numsteps div def /yInc c2y c1y sub numsteps div def /rInc r2 r1 sub numsteps div def /cx c1x def /cy c1y def /radius r1 def np xInc 0 eq yInc 0 eq rInc 0 eq and and { 0 getrampcolor cx cy radius 0 360 arc stroke NumSamples 1 sub getrampcolor cx cy radius 72 hires div add 0 360 arc 0 setlinewidth stroke }{ 0 numsteps { dup subsampling{round cvi}if getrampcolor cx cy radius 0 360 arc /cx cx xInc add def /cy cy yInc add def /radius radius rInc add def cx cy radius 360 0 arcn eofill rampIndxInc add }repeat pop }ifelse ext1 { c2y r2 add r1 lt { c2x c2y r2 0 360 arc fill }{ c2y r1 add r2 sub 0.0001 le { c2x c2y r2 360 0 arcn pathbbox /aymax exch def /axmax exch def /aymin exch def /axmin exch def /bxMin xMin axmin min def /byMin yMin aymin min def /bxMax xMax axmax max def /byMax yMax aymax max def bxMin byMin moveto bxMax byMin lineto bxMax byMax lineto bxMin byMax lineto bxMin byMin lineto eofill }{ c2x c2y r2 0 360 arc fill r1 r2 eq { /p1x r2 neg def /p1y c2y def /p2x r2 def /p2y c2y def p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto fill }{ /AA r2 r1 sub c2y div def AA -1 eq {/theta 89.99 def} {/theta AA 1 AA dup mul sub sqrt div 1 atan def} ifelse /SS1 90 theta add dup sin exch cos div def /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def /p1y c2y p1x SS1 div sub def /SS2 90 theta sub dup sin exch cos div def /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def /p2y c2y p2x SS2 div sub def r1 r2 lt { /L1maxX p1x yMax p1y sub SS1 div add def /L2maxX p2x yMax p2y sub SS2 div add def }{ /L1maxX 0 def /L2maxX 0 def }ifelse p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto L1maxX L1maxX p1x sub SS1 mul p1y add lineto fill }ifelse }ifelse }ifelse }if grestore grestore end end end }ifelse }bdf /GenStrips { 40 dict begin /ColorSpaceFamily xdf /background xdf /ext1 xdf /ext0 xdf /BBox xdf /y2 xdf /x2 xdf /y1 xdf /x1 xdf /rampdict xdf /setinkoverprint where{pop/setinkoverprint{pop}def}if gsave BBox length 0 gt { np BBox 0 get BBox 1 get moveto BBox 2 get BBox 0 get sub 0 rlineto 0 BBox 3 get BBox 1 get sub rlineto BBox 2 get BBox 0 get sub neg 0 rlineto closepath clip np }if x1 x2 eq { y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse }{ /slope y2 y1 sub x2 x1 sub div def /theta slope 1 atan def x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if } ifelse gsave clippath x1 y1 translate theta rotate {pathbbox}stopped {0 0 0 0}if /yMax exch def /xMax exch def /yMin exch def /xMin exch def grestore xMax xMin eq yMax yMin eq or { grestore end }{ rampdict begin 20 dict begin background length 0 gt{background sssetbackground gsave clippath fill grestore}if gsave x1 y1 translate theta rotate /xStart 0 def /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def /ySpan yMax yMin sub def /numsteps NumSamples def /rampIndxInc 1 def /subsampling false def xStart 0 transform xEnd 0 transform 3 -1 roll sub dup mul 3 1 roll sub dup mul add 0.5 exp 72 div 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 1 index 1 index lt{exch}if pop mul /numpix xdf numpix 0 ne { NumSamples numpix div 0.5 gt { /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def /rampIndxInc NumSamples 1 sub numsteps div def /subsampling true def }if }if ext0 { 0 getrampcolor xMin xStart lt { xMin yMin xMin neg ySpan rectfill }if }if /xInc xEnd xStart sub numsteps div def /x xStart def 0 numsteps { dup subsampling{round cvi}if getrampcolor x yMin xInc ySpan rectfill /x x xInc add def rampIndxInc add }repeat pop ext1{ xMax xEnd gt { xEnd yMin xMax xEnd sub ySpan rectfill }if }if grestore grestore end end end }ifelse }bdf }def /pt { end }def /dt{ }def /pgsv{ //Adobe_AGM_Core/AGMCORE_save save put }def /pgrs{ //Adobe_AGM_Core/AGMCORE_save get restore }def systemdict/findcolorrendering known{ /findcolorrendering systemdict/findcolorrendering get def }if systemdict/setcolorrendering known{ /setcolorrendering systemdict/setcolorrendering get def }if /test_cmyk_color_plate { gsave setcmykcolor currentgray 1 ne grestore }def /inRip_spot_has_ink { dup//Adobe_AGM_Core/AGMCORE_name xddf convert_spot_to_process not }def /map255_to_range { 1 index sub 3 -1 roll 255 div mul add }def /set_csa_crd { /sep_colorspace_dict null AGMCORE_gput begin CSA get_csa_by_name setcolorspace_opt set_crd end } def /map_csa { currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse {pop}{get_csa_by_name/MappedCSA xdf}ifelse }def /setsepcolor { /sep_colorspace_dict AGMCORE_gget begin dup/sep_tint exch AGMCORE_gput TintProc end }def /setdevicencolor { /devicen_colorspace_dict AGMCORE_gget begin Names length copy Names length 1 sub -1 0 { /devicen_tints AGMCORE_gget 3 1 roll xpt }for TintProc end }def /sep_colorspace_proc { /AGMCORE_tmp exch store /sep_colorspace_dict AGMCORE_gget begin currentdict/Components known{ Components aload pop TintMethod/Lab eq{ 2{AGMCORE_tmp mul NComponents 1 roll}repeat LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll }{ TintMethod/Subtractive eq{ NComponents{ AGMCORE_tmp mul NComponents 1 roll }repeat }{ NComponents{ 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll }repeat }ifelse }ifelse }{ ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get aload pop }ifelse end }def /sep_colorspace_gray_proc { /AGMCORE_tmp exch store /sep_colorspace_dict AGMCORE_gget begin GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get end }def /sep_proc_name { dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{ pop[/DeviceGray] /sep_colorspace_gray_proc }{ /sep_colorspace_proc }ifelse }def /setsepcolorspace { current_spot_alias{ dup begin Name map_alias{ exch pop }if end }if dup/sep_colorspace_dict exch AGMCORE_gput begin CSA map_csa /AGMCORE_sep_special Name dup()eq exch(All)eq or store AGMCORE_avoid_L2_sep_space{ [/Indexed MappedCSA sep_proc_name 255 exch {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx ]setcolorspace_opt /TintProc{ 255 mul round cvi setcolor }bdf }{ MappedCSA 0 get/DeviceCMYK eq currentdict/Components known and AGMCORE_sep_special not and{ /TintProc[ Components aload pop Name findcmykcustomcolor /exch cvx/setcustomcolor cvx ]cvx bdf }{ AGMCORE_host_sep Name(All)eq and{ /TintProc{ 1 exch sub setseparationgray }bdf }{ AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and AGMCORE_host_sep or Name()eq and{ /TintProc[ MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{ cvx/setcmykcolor cvx }{ cvx/setgray cvx }ifelse ]cvx bdf }{ AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{ /TintProc[ /dup cvx MappedCSA sep_proc_name cvx exch 0 get/DeviceGray eq{ 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx }if /Name cvx/findcmykcustomcolor cvx/exch cvx AGMCORE_host_sep{ AGMCORE_is_cmyk_sep /Name cvx /AGMCORE_IsSeparationAProcessColor load/exec cvx /not cvx/and cvx }{ Name inRip_spot_has_ink not }ifelse [ /pop cvx 1 ]cvx/if cvx /setcustomcolor cvx ]cvx bdf }{ /TintProc{setcolor}bdf [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt }ifelse }ifelse }ifelse }ifelse }ifelse set_crd setsepcolor end }def /additive_blend { 3 dict begin /numarrays xdf /numcolors xdf 0 1 numcolors 1 sub { /c1 xdf 1 0 1 numarrays 1 sub { 1 exch add/index cvx c1/get cvx/mul cvx }for numarrays 1 add 1/roll cvx }for numarrays[/pop cvx]cvx/repeat cvx end }def /subtractive_blend { 3 dict begin /numarrays xdf /numcolors xdf 0 1 numcolors 1 sub { /c1 xdf 1 1 0 1 numarrays 1 sub { 1 3 3 -1 roll add/index cvx c1/get cvx/sub cvx/mul cvx }for /sub cvx numarrays 1 add 1/roll cvx }for numarrays[/pop cvx]cvx/repeat cvx end }def /exec_tint_transform { /TintProc[ /TintTransform cvx/setcolor cvx ]cvx bdf MappedCSA setcolorspace_opt }bdf /devn_makecustomcolor { 2 dict begin /names_index xdf /Names xdf 1 1 1 1 Names names_index get findcmykcustomcolor /devicen_tints AGMCORE_gget names_index get setcustomcolor Names length{pop}repeat end }bdf /setdevicencolorspace { dup/AliasedColorants known{false}{true}ifelse current_spot_alias and{ 7 dict begin /names_index 0 def dup/names_len exch/Names get length def /new_names names_len array def /new_LookupTables names_len array def /alias_cnt 0 def dup/Names get { dup map_alias{ exch pop dup/ColorLookup known{ dup begin new_LookupTables names_index ColorLookup put end }{ dup/Components known{ dup begin new_LookupTables names_index Components put end }{ dup begin new_LookupTables names_index[null null null null]put end }ifelse }ifelse new_names names_index 3 -1 roll/Name get put /alias_cnt alias_cnt 1 add def }{ /name xdf new_names names_index name put dup/LookupTables known{ dup begin new_LookupTables names_index LookupTables names_index get put end }{ dup begin new_LookupTables names_index[null null null null]put end }ifelse }ifelse /names_index names_index 1 add def }forall alias_cnt 0 gt{ /AliasedColorants true def /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def 0 1 names_len 1 sub{ /names_index xdf new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{ /AliasedColorants false def exit }{ new_LookupTables names_index get 0 get null eq{ dup/Names get names_index get/name xdf name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq or or or not{ /AliasedColorants false def exit }if }if }ifelse }for lut_entry_len 1 eq{ /AliasedColorants false def }if AliasedColorants{ dup begin /Names new_names def /LookupTables new_LookupTables def /AliasedColorants true def /NComponents lut_entry_len def /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def currentdict/TTTablesIdx known not{ /TTTablesIdx -1 def }if end }if }if end }if dup/devicen_colorspace_dict exch AGMCORE_gput begin currentdict/AliasedColorants known{ AliasedColorants }{ false }ifelse dup not{ CSA map_csa }if /TintTransform load type/nulltype eq or{ /TintTransform[ 0 1 Names length 1 sub { /TTTablesIdx TTTablesIdx 1 add def dup LookupTables exch get dup 0 get null eq { 1 index Names exch get dup(Cyan)eq { pop exch LookupTables length exch sub /index cvx 0 0 0 } { dup(Magenta)eq { pop exch LookupTables length exch sub /index cvx 0/exch cvx 0 0 }{ (Yellow)eq { exch LookupTables length exch sub /index cvx 0 0 3 -1/roll cvx 0 }{ exch LookupTables length exch sub /index cvx 0 0 0 4 -1/roll cvx }ifelse }ifelse }ifelse 5 -1/roll cvx/astore cvx }{ dup length 1 sub LookupTables length 4 -1 roll sub 1 add /index cvx/mul cvx/round cvx/cvi cvx/get cvx }ifelse Names length TTTablesIdx add 1 add 1/roll cvx }for Names length[/pop cvx]cvx/repeat cvx NComponents Names length TintMethod/Subtractive eq { subtractive_blend }{ additive_blend }ifelse ]cvx bdf }if AGMCORE_host_sep{ Names convert_to_process{ exec_tint_transform } { currentdict/AliasedColorants known{ AliasedColorants not }{ false }ifelse 5 dict begin /AvoidAliasedColorants xdf /painted? false def /names_index 0 def /names_len Names length def AvoidAliasedColorants{ /currentspotalias current_spot_alias def false set_spot_alias }if Names{ AGMCORE_is_cmyk_sep{ dup(Cyan)eq AGMCORE_cyan_plate and exch dup(Magenta)eq AGMCORE_magenta_plate and exch dup(Yellow)eq AGMCORE_yellow_plate and exch (Black)eq AGMCORE_black_plate and or or or{ /devicen_colorspace_dict AGMCORE_gget/TintProc[ Names names_index/devn_makecustomcolor cvx ]cvx ddf /painted? true def }if painted?{exit}if }{ 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{ /devicen_colorspace_dict AGMCORE_gget/TintProc[ Names names_index/devn_makecustomcolor cvx ]cvx ddf /painted? true def exit }if }ifelse /names_index names_index 1 add def }forall AvoidAliasedColorants{ currentspotalias set_spot_alias }if painted?{ /devicen_colorspace_dict AGMCORE_gget/names_index names_index put }{ /devicen_colorspace_dict AGMCORE_gget/TintProc[ names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx 0 0 0 0/setcmykcolor cvx ]cvx ddf }ifelse end }ifelse } { AGMCORE_in_rip_sep{ Names convert_to_process not }{ level3 }ifelse { [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt /TintProc level3 not AGMCORE_in_rip_sep and{ [ Names/length cvx[/pop cvx]cvx/repeat cvx ]cvx bdf }{ {setcolor}bdf }ifelse }{ exec_tint_transform }ifelse }ifelse set_crd /AliasedColorants false def end }def /setindexedcolorspace { dup/indexed_colorspace_dict exch AGMCORE_gput begin currentdict/CSDBase known{ CSDBase/CSD get_res begin currentdict/Names known{ currentdict devncs }{ 1 currentdict sepcs }ifelse AGMCORE_host_sep{ 4 dict begin /compCnt/Names where{pop Names length}{1}ifelse def /NewLookup HiVal 1 add string def 0 1 HiVal{ /tableIndex xdf Lookup dup type/stringtype eq{ compCnt tableIndex map_index }{ exec }ifelse /Names where{ pop setdevicencolor }{ setsepcolor }ifelse currentgray tableIndex exch 255 mul cvi NewLookup 3 1 roll put }for [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt end }{ level3 { currentdict/Names known{ [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt }{ [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt }ifelse }{ [/Indexed MappedCSA HiVal [ currentdict/Names known{ Lookup dup type/stringtype eq {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx} {/exec cvx}ifelse /TintTransform load/exec cvx }{ Lookup dup type/stringtype eq {/exch cvx/get cvx 255/div cvx} {/exec cvx}ifelse CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx }ifelse ]cvx ]setcolorspace_opt }ifelse }ifelse end set_crd } { CSA map_csa AGMCORE_host_sep level2 not and{ 0 0 0 0 setcmykcolor }{ [/Indexed MappedCSA level2 not has_color not and{ dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{ pop[/DeviceGray] }if HiVal GrayLookup }{ HiVal currentdict/RangeArray known{ { /indexed_colorspace_dict AGMCORE_gget begin Lookup exch dup HiVal gt{ pop HiVal }if NComponents mul NComponents getinterval{}forall NComponents 1 sub -1 0{ RangeArray exch 2 mul 2 getinterval aload pop map255_to_range NComponents 1 roll }for end }bind }{ Lookup }ifelse }ifelse ]setcolorspace_opt set_crd }ifelse }ifelse end }def /setindexedcolor { AGMCORE_host_sep{ /indexed_colorspace_dict AGMCORE_gget begin currentdict/CSDBase known{ CSDBase/CSD get_res begin currentdict/Names known{ map_indexed_devn devn } { Lookup 1 3 -1 roll map_index sep }ifelse end }{ Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll map_index MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse }ifelse end }{ level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{ /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin map_indexed_devn devn end } { setcolor }ifelse }ifelse }def /ignoreimagedata { currentoverprint not{ gsave dup clonedict begin 1 setgray /Decode[0 1]def /DataSourcedef /MultipleDataSources false def /BitsPerComponent 8 def currentdict end systemdict/image gx grestore }if consumeimagedata }def /add_res { dup/CSD eq{ pop //Adobe_AGM_Core begin /AGMCORE_CSD_cache load 3 1 roll put end }{ defineresource pop }ifelse }def /del_res { { aload pop exch dup/CSD eq{ pop {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall }{ exch {1 index undefineresource}forall pop }ifelse }forall }def /get_res { dup/CSD eq{ pop dup type dup/nametype eq exch/stringtype eq or{ AGMCORE_CSD_cache exch get }if }{ findresource }ifelse }def /get_csa_by_name { dup type dup/nametype eq exch/stringtype eq or{ /CSA get_res }if }def /paintproc_buf_init { /count get 0 0 put }def /paintproc_buf_next { dup/count get dup 0 get dup 3 1 roll 1 add 0 xpt get }def /cachepaintproc_compress { 5 dict begin currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def /ppdict 20 dict def /string_size 16000 def /readbuffer string_size string def currentglobal true setglobal ppdict 1 array dup 0 1 put/count xpt setglobal /LZWFilter { exch dup length 0 eq{ pop }{ ppdict dup length 1 sub 3 -1 roll put }ifelse {string_size}{0}ifelse string }/LZWEncode filter def { ReadFilter readbuffer readstring exch LZWFilter exch writestring not{exit}if }loop LZWFilter closefile ppdict end }def /cachepaintproc { 2 dict begin currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def /ppdict 20 dict def currentglobal true setglobal ppdict 1 array dup 0 1 put/count xpt setglobal { ReadFilter 16000 string readstring exch ppdict dup length 1 sub 3 -1 roll put not{exit}if }loop ppdict dup dup length 1 sub()put end }def /make_pattern { exch clonedict exch dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub matrix translate exch matrix concatmatrix 1 index begin BBox 0 get XStep div cvi XStep mul/xshift exch neg def BBox 1 get YStep div cvi YStep mul/yshift exch neg def BBox 0 get xshift add BBox 1 get yshift add BBox 2 get xshift add BBox 3 get yshift add 4 array astore /BBox exch def [xshift yshift/translate load null/exec load]dup 3/PaintProc load put cvx/PaintProc exch def end gsave 0 setgray makepattern grestore }def /set_pattern { dup/PatternType get 1 eq{ dup/PaintType get 1 eq{ currentoverprint sop[/DeviceGray]setcolorspace 0 setgray }if }if setpattern }def /setcolorspace_opt { dup currentcolorspace eq{pop}{setcolorspace}ifelse }def /updatecolorrendering { currentcolorrendering/RenderingIntent known{ currentcolorrendering/RenderingIntent get } { Intent/AbsoluteColorimetric eq { /absolute_colorimetric_crd AGMCORE_gget dup null eq } { Intent/RelativeColorimetric eq { /relative_colorimetric_crd AGMCORE_gget dup null eq } { Intent/Saturation eq { /saturation_crd AGMCORE_gget dup null eq } { /perceptual_crd AGMCORE_gget dup null eq }ifelse }ifelse }ifelse { pop null } { /RenderingIntent known{null}{Intent}ifelse }ifelse }ifelse Intent ne{ Intent/ColorRendering{findresource}stopped { pop pop systemdict/findcolorrendering known { Intent findcolorrendering { /ColorRendering findresource true exch } { /ColorRendering findresource product(Xerox Phaser 5400)ne exch }ifelse dup Intent/AbsoluteColorimetric eq { /absolute_colorimetric_crd exch AGMCORE_gput } { Intent/RelativeColorimetric eq { /relative_colorimetric_crd exch AGMCORE_gput } { Intent/Saturation eq { /saturation_crd exch AGMCORE_gput } { Intent/Perceptual eq { /perceptual_crd exch AGMCORE_gput } { pop }ifelse }ifelse }ifelse }ifelse 1 index{exch}{pop}ifelse } {false}ifelse } {true}ifelse { dup begin currentdict/TransformPQR known{ currentdict/TransformPQR get aload pop 3{{}eq 3 1 roll}repeat or or } {true}ifelse currentdict/MatrixPQR known{ currentdict/MatrixPQR get aload pop 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq and and and and and and and and } {true}ifelse end or { clonedict begin /TransformPQR[ {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind ]def /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def currentdict end }if setcolorrendering_opt }if }if }def /set_crd { AGMCORE_host_sep not level2 and{ currentdict/ColorRendering known{ ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if }{ currentdict/Intent known{ updatecolorrendering }if }ifelse currentcolorspace dup type/arraytype eq {0 get}if /DeviceRGB eq { currentdict/UCR known {/UCR}{/AGMCORE_currentucr}ifelse load setundercolorremoval currentdict/BG known {/BG}{/AGMCORE_currentbg}ifelse load setblackgeneration }if }if }def /set_ucrbg { dup null eq{pop/AGMCORE_currentbg load}{/Procedure get_res}ifelse setblackgeneration dup null eq{pop/AGMCORE_currentucr load}{/Procedure get_res}ifelse setundercolorremoval }def /setcolorrendering_opt { dup currentcolorrendering eq{ pop }{ clonedict begin /Intent Intent def currentdict end setcolorrendering }ifelse }def /cpaint_gcomp { convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not { (%end_cpaint_gcomp)flushinput }if }def /cpaint_gsep { //Adobe_AGM_Core/AGMCORE_ConvertToProcess get { (%end_cpaint_gsep)flushinput }if }def /cpaint_gend {np}def /T1_path { currentfile token pop currentfile token pop mo { currentfile token pop dup type/stringtype eq {pop exit}if 0 exch rlineto currentfile token pop dup type/stringtype eq {pop exit}if 0 rlineto }loop }def /T1_gsave level3 {/clipsave} {/gsave}ifelse load def /T1_grestore level3 {/cliprestore} {/grestore}ifelse load def /set_spot_alias_ary { dup inherit_aliases //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf }def /set_spot_normalization_ary { dup inherit_aliases dup length /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if array //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf /AGMCORE_SpotAliasAry where{ pop AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval AGMCORE_SpotAliasAry length }{0}ifelse AGMCORE_SpotAliasAry2 3 1 roll exch putinterval true set_spot_alias }def /inherit_aliases { {dup/Name get map_alias{/CSD put}{pop}ifelse}forall }def /set_spot_alias { /AGMCORE_SpotAliasAry2 where{ /AGMCORE_current_spot_alias 3 -1 roll put }{ pop }ifelse }def /current_spot_alias { /AGMCORE_SpotAliasAry2 where{ /AGMCORE_current_spot_alias get }{ false }ifelse }def /map_alias { /AGMCORE_SpotAliasAry2 where{ begin /AGMCORE_name xdf false AGMCORE_SpotAliasAry2{ dup/Name get AGMCORE_name eq{ /CSD get/CSD get_res exch pop true exit }{ pop }ifelse }forall end }{ pop false }ifelse }bdf /spot_alias { true set_spot_alias /AGMCORE_&setcustomcolor AGMCORE_key_known not{ //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put }if /customcolor_tint 1 AGMCORE_gput //Adobe_AGM_Core begin /setcustomcolor { //Adobe_AGM_Core begin dup/customcolor_tint exch AGMCORE_gput 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not current_spot_alias and{1 index 4 get map_alias}{false}ifelse { false set_spot_alias /sep_colorspace_dict AGMCORE_gget null ne 3 1 roll 2 index{ exch pop/sep_tint AGMCORE_gget exch }if mark 3 1 roll setsepcolorspace counttomark 0 ne{ setsepcolor }if pop not{/sep_tint 1.0 AGMCORE_gput}if pop true set_spot_alias }{ AGMCORE_&setcustomcolor }ifelse end }bdf end }def /begin_feature { Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if }def /end_feature { 2 dict begin /spd/setpagedevice load def /setpagedevice{get_gstate spd set_gstate}def stopped{$error/newerror false put}if end count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if }def /set_negative { //Adobe_AGM_Core begin /AGMCORE_inverting exch def level2{ currentpagedevice/NegativePrint known AGMCORE_distilling not and{ currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{ true begin_feature true{ <>setpagedevice }end_feature }if /AGMCORE_inverting false def }if }if AGMCORE_inverting{ [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer AGMCORE_distilling{ erasepage }{ gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore }ifelse }if end }def /lw_save_restore_override{ /md where{ pop md begin initializepage /initializepage{}def /pmSVsetup{}def /endp{}def /pse{}def /psb{}def /orig_showpage where {pop} {/orig_showpage/showpage load def} ifelse /showpage{orig_showpage gR}def end }if }def /pscript_showpage_override{ /NTPSOct95 where { begin showpage save /showpage/restore load def /restore{exch pop}def end }if }def /driver_media_override { /md where{ pop md/initializepage known{ md/initializepage{}put }if md/rC known{ md/rC{4{pop}repeat}put }if }if /mysetup where{ /mysetup[1 0 0 1 0 0]put }if Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put level2 {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if }def /driver_check_media_override { /PrepsDict where {pop} { Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq { Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and }if { Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix }if }ifelse }def AGMCORE_err_strings begin /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def /AGMCORE_invalid_color_space(This job contains an invalid color space. )def end /set_def_ht {AGMCORE_def_ht sethalftone}def /set_def_flat {AGMCORE_Default_flatness setflat}def end systemdict/setpacking known {setpacking}if %%EndResource %%BeginResource: procset Adobe_CoolType_Core 2.31 0 %%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved. %%Version: 2.31 0 10 dict begin /Adobe_CoolType_Passthru currentdict def /Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def Adobe_CoolType_Core_Defined {/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def} if userdict/Adobe_CoolType_Core 70 dict dup begin put /Adobe_CoolType_Version 2.31 def /Level2? systemdict/languagelevel known dup {pop systemdict/languagelevel get 2 ge} if def Level2? not { /currentglobal false def /setglobal/pop load def /gcheck{pop false}bind def /currentpacking false def /setpacking/pop load def /SharedFontDirectory 0 dict def } if currentpacking true setpacking currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def end setglobal currentglobal true setglobal userdict/Adobe_CoolType_GVMFonts known not {userdict/Adobe_CoolType_GVMFonts 10 dict put} if setglobal currentglobal false setglobal userdict/Adobe_CoolType_LVMFonts known not {userdict/Adobe_CoolType_LVMFonts 10 dict put} if setglobal /ct_VMDictPut { dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse 3 1 roll put }bind def /ct_VMDictUndef { dup Adobe_CoolType_GVMFonts exch known {Adobe_CoolType_GVMFonts exch undef} { dup Adobe_CoolType_LVMFonts exch known {Adobe_CoolType_LVMFonts exch undef} {pop} ifelse }ifelse }bind def /ct_str1 1 string def /ct_xshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_yshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 exch rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_xyshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { {_ct_na _ct_i 1 add get}stopped {pop pop pop} { _ct_x _ct_y moveto rmoveto } ifelse } ifelse /_ct_i _ct_i 2 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def /ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def /xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def currentglobal true setglobal /ct_T3Defs { /BuildChar { 1 index/Encoding get exch get 1 index/BuildGlyph get exec }bind def /BuildGlyph { exch begin GlyphProcs exch get exec end }bind def }bind def setglobal /@_SaveStackLevels { Adobe_CoolType_Data begin /@vmState currentglobal def false setglobal @opStackCountByLevel @opStackLevel 2 copy known not { 2 copy 3 dict dup/args 7 index 5 add array put put get } { get dup/args get dup length 3 index lt { dup length 5 add array exch 1 index exch 0 exch putinterval 1 index exch/args exch put } {pop} ifelse } ifelse begin count 1 sub 1 index lt {pop count} if dup/argCount exch def dup 0 gt { args exch 0 exch getinterval astore pop } {pop} ifelse count /restCount exch def end /@opStackLevel @opStackLevel 1 add def countdictstack 1 sub @dictStackCountByLevel exch @dictStackLevel exch put /@dictStackLevel @dictStackLevel 1 add def @vmState setglobal end }bind def /@_RestoreStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def @opStackCountByLevel @opStackLevel get begin count restCount sub dup 0 gt {{pop}repeat} {pop} ifelse args 0 argCount getinterval{}forall end /@dictStackLevel @dictStackLevel 1 sub def @dictStackCountByLevel @dictStackLevel get end countdictstack exch sub dup 0 gt {{end}repeat} {pop} ifelse }bind def /@_PopStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def /@dictStackLevel @dictStackLevel 1 sub def end }bind def /@Raise { exch cvx exch errordict exch get exec stop }bind def /@ReRaise { cvx $error/errorname get errordict exch get exec stop }bind def /@Stopped { 0 @#Stopped }bind def /@#Stopped { @_SaveStackLevels stopped {@_RestoreStackLevels true} {@_PopStackLevels false} ifelse }bind def /@Arg { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 1 sub get begin args exch argCount 1 sub exch sub get end end }bind def currentglobal true setglobal /CTHasResourceForAllBug Level2? { 1 dict dup /@shouldNotDisappearDictValue true def Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put begin count @_SaveStackLevels {(*){pop stop}128 string/Category resourceforall} stopped pop @_RestoreStackLevels currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll { /@shouldNotDisappearDictValue known { { end currentdict 1 index eq {pop exit} if } loop } if } { pop end } ifelse } {false} ifelse def true setglobal /CTHasResourceStatusBug Level2? { mark {/steveamerige/Category resourcestatus} stopped {cleartomark true} {cleartomark currentglobal not} ifelse } {false} ifelse def setglobal /CTResourceStatus { mark 3 1 roll /Category findresource begin ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse end }bind def /CTWorkAroundBugs { Level2? { /cid_PreLoad/ProcSet resourcestatus { pop pop currentglobal mark { (*) { dup/CMap CTHasResourceStatusBug {CTResourceStatus} {resourcestatus} ifelse { pop dup 0 eq exch 1 eq or { dup/CMap findresource gcheck setglobal /CMap undefineresource } { pop CTHasResourceForAllBug {exit} {stop} ifelse } ifelse } {pop} ifelse } 128 string/CMap resourceforall } stopped {cleartomark} stopped pop setglobal } if } if }bind def /ds { Adobe_CoolType_Core begin CTWorkAroundBugs /mo/moveto load def /nf/newencodedfont load def /msf{makefont setfont}bind def /uf{dup undefinefont ct_VMDictUndef}bind def /ur/undefineresource load def /chp/charpath load def /awsh/awidthshow load def /wsh/widthshow load def /ash/ashow load def /@xshow/xshow load def /@yshow/yshow load def /@xyshow/xyshow load def /@cshow/cshow load def /sh/show load def /rp/repeat load def /.n/.notdef def end currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /AddWidths? false def /CC 0 def /charcode 2 string def /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def /InVMFontsByCMap 10 dict def /InVMDeepCopiedFonts 10 dict def end setglobal }bind def /dt { currentdict Adobe_CoolType_Core eq {end} if }bind def /ps { Adobe_CoolType_Core begin Adobe_CoolType_GVMFonts begin Adobe_CoolType_LVMFonts begin SharedFontDirectory begin }bind def /pt { end end end end }bind def /unload { systemdict/languagelevel known { systemdict/languagelevel get 2 ge { userdict/Adobe_CoolType_Core 2 copy known {undef} {pop pop} ifelse } if } if }bind def /ndf { 1 index where {pop pop pop} {dup xcheck{bind}if def} ifelse }def /findfont systemdict begin userdict begin /globaldict where{/globaldict get begin}if dup where pop exch get /globaldict where{pop end}if end end Adobe_CoolType_Core_Defined {/systemfindfont exch def} { /findfont 1 index def /systemfindfont exch def } ifelse /undefinefont {pop}ndf /copyfont { currentglobal 3 1 roll 1 index gcheck setglobal dup null eq{0}{dup length}ifelse 2 index length add 1 add dict begin exch { 1 index/FID eq {pop pop} {def} ifelse } forall dup null eq {pop} {{def}forall} ifelse currentdict end exch setglobal }bind def /copyarray { currentglobal exch dup gcheck setglobal dup length array copy exch setglobal }bind def /newencodedfont { currentglobal { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } { FontDirectory 3 index known {FontDirectory 3 index get/FontReferenced known} { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } ifelse } ifelse dup { 3 index findfont/FontReferenced get 2 index dup type/nametype eq {findfont} if ne {pop false} if } if dup { 1 index dup type/nametype eq {findfont} if dup/CharStrings known { /CharStrings get length 4 index findfont/CharStrings get length ne { pop false } if } {pop} ifelse } if { pop 1 index findfont /Encoding get exch 0 1 255 {2 copy get 3 index 3 1 roll put} for pop pop pop } { currentglobal 4 1 roll dup type/nametype eq {findfont} if dup gcheck setglobal dup dup maxlength 2 add dict begin exch { 1 index/FID ne 2 index/Encoding ne and {def} {pop pop} ifelse } forall /FontReferenced exch def /Encoding exch dup length array copy def /FontName 1 index dup type/stringtype eq{cvn}if def dup currentdict end definefont ct_VMDictPut setglobal } ifelse }bind def /SetSubstituteStrategy { $SubstituteFont begin dup type/dicttype ne {0 dict} if currentdict/$Strategies known { exch $Strategies exch 2 copy known { get 2 copy maxlength exch maxlength add dict begin {def}forall {def}forall currentdict dup/$Init known {dup/$Init get exec} if end /$Strategy exch def } {pop pop pop} ifelse } {pop pop} ifelse end }bind def /scff { $SubstituteFont begin dup type/stringtype eq {dup length exch} {null} ifelse /$sname exch def /$slen exch def /$inVMIndex $sname null eq { 1 index $str cvs dup length $slen sub $slen getinterval cvn } {$sname} ifelse def end {findfont} @Stopped { dup length 8 add string exch 1 index 0(BadFont:)putinterval 1 index exch 8 exch dup length string cvs putinterval cvn {findfont} @Stopped {pop/Courier findfont} if } if $SubstituteFont begin /$sname null def /$slen 0 def /$inVMIndex null def end }bind def /isWidthsOnlyFont { dup/WidthsOnly known {pop pop true} { dup/FDepVector known {/FDepVector get{isWidthsOnlyFont dup{exit}if}forall} { dup/FDArray known {/FDArray get{isWidthsOnlyFont dup{exit}if}forall} {pop} ifelse } ifelse } ifelse }bind def /ct_StyleDicts 4 dict dup begin /Adobe-Japan1 4 dict dup begin Level2? { /Serif /HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMin-W3} { /CIDFont/Category resourcestatus { pop pop /HeiseiMin-W3/CIDFont resourcestatus {pop pop/HeiseiMin-W3} {/Ryumin-Light} ifelse } {/Ryumin-Light} ifelse } ifelse def /SansSerif /HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiKakuGo-W5} { /CIDFont/Category resourcestatus { pop pop /HeiseiKakuGo-W5/CIDFont resourcestatus {pop pop/HeiseiKakuGo-W5} {/GothicBBB-Medium} ifelse } {/GothicBBB-Medium} ifelse } ifelse def /HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMaruGo-W4} { /CIDFont/Category resourcestatus { pop pop /HeiseiMaruGo-W4/CIDFont resourcestatus {pop pop/HeiseiMaruGo-W4} { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } ifelse /RoundSansSerif exch def /Default Serif def } { /Serif/Ryumin-Light def /SansSerif/GothicBBB-Medium def { (fonts/Jun101-Light-83pv-RKSJ-H)status }stopped {pop}{ {pop pop pop pop/Jun101-Light} {SansSerif} ifelse /RoundSansSerif exch def }ifelse /Default Serif def } ifelse end def /Adobe-Korea1 4 dict dup begin /Serif/HYSMyeongJo-Medium def /SansSerif/HYGoThic-Medium def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-GB1 4 dict dup begin /Serif/STSong-Light def /SansSerif/STHeiti-Regular def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-CNS1 4 dict dup begin /Serif/MKai-Medium def /SansSerif/MHei-Medium def /RoundSansSerif SansSerif def /Default Serif def end def end def Level2?{currentglobal true setglobal}if /ct_BoldRomanWidthProc { stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth 0 0 }bind def /ct_Type0WidthProc { dup stringwidth 0 0 moveto 2 index true charpath pathbbox 0 -1 7 index 2 div .88 setcachedevice2 pop 0 0 }bind def /ct_Type0WMode1WidthProc { dup stringwidth pop 2 div neg -0.88 2 copy moveto 0 -1 5 -1 roll true charpath pathbbox setcachedevice }bind def /cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_BoldBaseFont 11 dict begin /FontType 3 def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /Encoding cHexEncoding def /_setwidthProc/ct_BoldRomanWidthProc load def /_bcstr1 1 string def /BuildChar { exch begin _basefont setfont _bcstr1 dup 0 4 -1 roll put dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def systemdict/composefont known { /ct_DefineIdentity-H { /Identity-H/CMap resourcestatus { pop pop } { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse } def /ct_BoldBaseCIDFont 11 dict begin /CIDFontType 1 def /CIDFontName/ct_BoldBaseCIDFont def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /_setwidthProc/ct_Type0WidthProc load def /_bcstr2 2 string def /BuildGlyph { exch begin _basefont setfont _bcstr2 1 2 index 256 mod put _bcstr2 0 3 -1 roll 256 idiv put _bcstr2 dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def }if Level2?{setglobal}if /ct_CopyFont{ { 1 index/FID ne 2 index/UniqueID ne and {def}{pop pop}ifelse }forall }bind def /ct_Type0CopyFont { exch dup length dict begin ct_CopyFont [ exch FDepVector { dup/FontType get 0 eq { 1 index ct_Type0CopyFont /_ctType0 exch definefont } { /_ctBaseFont exch 2 index exec } ifelse exch } forall pop ] /FDepVector exch def currentdict end }bind def /ct_MakeBoldFont { dup/ct_SyntheticBold known { dup length 3 add dict begin ct_CopyFont /ct_StrokeWidth .03 0 FontMatrix idtransform pop def /ct_SyntheticBold true def currentdict end definefont } { dup dup length 3 add dict begin ct_CopyFont /PaintType 2 def /StrokeWidth .03 0 FontMatrix idtransform pop def /dummybold currentdict end definefont dup/FontType get dup 9 ge exch 11 le and { ct_BoldBaseCIDFont dup length 3 add dict copy begin dup/CIDSystemInfo get/CIDSystemInfo exch def ct_DefineIdentity-H /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefont exch def /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefonto exch def currentdict end /CIDFont defineresource } { ct_BoldBaseFont dup length 3 add dict copy begin /_basefont exch def /_basefonto exch def currentdict end definefont } ifelse } ifelse }bind def /ct_MakeBold{ 1 index 1 index findfont currentglobal 5 1 roll dup gcheck setglobal dup /FontType get 0 eq { dup/WMode known{dup/WMode get 1 eq}{false}ifelse version length 4 ge and {version 0 4 getinterval cvi 2015 ge} {true} ifelse {/ct_Type0WidthProc} {/ct_Type0WMode1WidthProc} ifelse ct_BoldBaseFont/_setwidthProc 3 -1 roll load put {ct_MakeBoldFont}ct_Type0CopyFont definefont } { dup/_fauxfont known not 1 index/SubstMaster known not and { ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put ct_MakeBoldFont } { 2 index 2 index eq {exch pop } { dup length dict begin ct_CopyFont currentdict end definefont } ifelse } ifelse } ifelse pop pop pop setglobal }bind def /?str1 256 string def /?set { $SubstituteFont begin /$substituteFound false def /$fontname 1 index def /$doSmartSub false def end dup findfont $SubstituteFont begin $substituteFound {false} { dup/FontName known { dup/FontName get $fontname eq 1 index/DistillerFauxFont known not and /currentdistillerparams where {pop false 2 index isWidthsOnlyFont not and} if } {false} ifelse } ifelse exch pop /$doSmartSub true def end { 5 1 roll pop pop pop pop findfont } { 1 index findfont dup/FontType get 3 eq { 6 1 roll pop pop pop pop pop false } {pop true} ifelse { $SubstituteFont begin pop pop /$styleArray 1 index def /$regOrdering 2 index def pop pop 0 1 $styleArray length 1 sub { $styleArray exch get ct_StyleDicts $regOrdering 2 copy known { get exch 2 copy known not {pop/Default} if get dup type/nametype eq { ?str1 cvs length dup 1 add exch ?str1 exch(-)putinterval exch dup length exch ?str1 exch 3 index exch putinterval add ?str1 exch 0 exch getinterval cvn } { pop pop/Unknown } ifelse } { pop pop pop pop/Unknown } ifelse } for end findfont }if } ifelse currentglobal false setglobal 3 1 roll null copyfont definefont pop setglobal }bind def setpacking userdict/$SubstituteFont 25 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known {get} {pop pop{pop/Courier}bind} ifelse def /currentdistillerparams where dup { pop pop currentdistillerparams/CannotEmbedFontPolicy 2 copy known {get/Error eq} {pop pop false} ifelse } if not { countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin /$str 128 string def /$fontpat 128 string def /$slen 0 def /$sname null def /$match false def /$fontname null def /$substituteFound false def /$inVMIndex null def /$doSmartSub true def /$depth 0 def /$fontname null def /$italicangle 26.5 def /$dstack null def /$Strategies 10 dict dup begin /$Type3Underprint { currentglobal exch false setglobal 11 dict begin /UseFont exch $WMode 0 ne { dup length dict copy dup/WMode $WMode put /UseFont exch definefont } if def /FontName $fontname dup type/stringtype eq{cvn}if def /FontType 3 def /FontMatrix[.001 0 0 .001 0 0]def /Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def /FontBBox[0 0 0 0]def /CCInfo 7 dict dup begin /cc null def /x 0 def /y 0 def end def /BuildChar { exch begin CCInfo begin 1 string dup 0 3 index put exch pop /cc exch def UseFont 1000 scalefont setfont cc stringwidth/y exch def/x exch def x y setcharwidth $SubstituteFont/$Strategy get/$Underprint get exec 0 0 moveto cc show x y moveto end end }bind def currentdict end exch setglobal }bind def /$GetaTint 2 dict dup begin /$BuildFont { dup/WMode known {dup/WMode get} {0} ifelse /$WMode exch def $fontname exch dup/FontName known { dup/FontName get dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse exch Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index/FontName get known { pop Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index get null copyfont } {$deepcopyfont} ifelse exch 1 index exch/FontBasedOn exch put dup/FontName $fontname dup type/stringtype eq{cvn}if put definefont Adobe_CoolType_Data/InVMDeepCopiedFonts get begin dup/FontBasedOn get 1 index def end }bind def /$Underprint { gsave x abs y abs gt {/y 1000 def} {/x -1000 def 500 120 translate} ifelse Level2? { [/Separation(All)/DeviceCMYK{0 0 0 1 pop}] setcolorspace } {0 setgray} ifelse 10 setlinewidth x .8 mul [7 3] { y mul 8 div 120 sub x 10 div exch moveto 0 y 4 div neg rlineto dup 0 rlineto 0 y 4 div rlineto closepath gsave Level2? {.2 setcolor} {.8 setgray} ifelse fill grestore stroke } forall pop grestore }bind def end def /$Oblique 1 dict dup begin /$BuildFont { currentglobal exch dup gcheck setglobal null copyfont begin /FontBasedOn currentdict/FontName known { FontName dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse def /FontName $fontname dup type/stringtype eq{cvn}if def /currentdistillerparams where {pop} { /FontInfo currentdict/FontInfo known {FontInfo null copyfont} {2 dict} ifelse dup begin /ItalicAngle $italicangle def /FontMatrix FontMatrix [1 0 ItalicAngle dup sin exch cos div 1 0 0] matrix concatmatrix readonly end 4 2 roll def def } ifelse FontName currentdict end definefont exch setglobal }bind def end def /$None 1 dict dup begin /$BuildFont{}bind def end def end def /$Oblique SetSubstituteStrategy /$findfontByEnum { dup type/stringtype eq{cvn}if dup/$fontname exch def $sname null eq {$str cvs dup length $slen sub $slen getinterval} {pop $sname} ifelse $fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval /$match false def $SubstituteFont/$dstack countdictstack array dictstack put mark { $fontpat 0 $slen 7 add getinterval {/$match exch def exit} $str filenameforall } stopped { cleardictstack currentdict true $SubstituteFont/$dstack get { exch { 1 index eq {pop false} {true} ifelse } {begin false} ifelse } forall pop } if cleartomark /$slen 0 def $match false ne {$match(fonts/)anchorsearch pop pop cvn} {/Courier} ifelse }bind def /$ROS 1 dict dup begin /Adobe 4 dict dup begin /Japan1 [/Ryumin-Light/HeiseiMin-W3 /GothicBBB-Medium/HeiseiKakuGo-W5 /HeiseiMaruGo-W4/Jun101-Light]def /Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def /GB1 [/STSong-Light/STHeiti-Regular]def /CNS1 [/MKai-Medium/MHei-Medium]def end def end def /$cmapname null def /$deepcopyfont { dup/FontType get 0 eq { 1 dict dup/FontName/copied put copyfont begin /FDepVector FDepVector copyarray 0 1 2 index length 1 sub { 2 copy get $deepcopyfont dup/FontName/copied put /copied exch definefont 3 copy put pop pop } for def currentdict end } {$Strategies/$Type3Underprint get exec} ifelse }bind def /$buildfontname { dup/CIDFont findresource/CIDSystemInfo get begin Registry length Ordering length Supplement 8 string cvs 3 copy length 2 add add add string dup 5 1 roll dup 0 Registry putinterval dup 4 index(-)putinterval dup 4 index 1 add Ordering putinterval 4 2 roll add 1 add 2 copy(-)putinterval end 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch anchorsearch {pop pop 3 2 roll putinterval cvn/$cmapname exch def} {pop pop pop pop pop} ifelse length $str 1 index(-)putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn }bind def /$findfontByROS { /$fontname exch def $ROS Registry 2 copy known { get Ordering 2 copy known {get} {pop pop[]} ifelse } {pop pop[]} ifelse false exch { dup/CIDFont resourcestatus { pop pop save 1 index/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get} {false} ifelse exch pop exch restore {pop} {exch pop true exit} ifelse } {pop} ifelse } forall {$str cvs $buildfontname} { false(*) { save exch dup/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get not} {true} ifelse exch/CIDSystemInfo get dup/Registry get Registry eq exch/Ordering get Ordering eq and and {exch restore exch pop true exit} {pop restore} ifelse } $str/CIDFont resourceforall {$buildfontname} {$fontname $findfontByEnum} ifelse } ifelse }bind def end end currentdict/$error known currentdict/languagelevel known and dup {pop $error/SubstituteFont known} if dup {$error} {Adobe_CoolType_Core} ifelse begin { /SubstituteFont /CMap/Category resourcestatus { pop pop { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $sname null eq {dup $str cvs dup length $slen sub $slen getinterval cvn} {$sname} ifelse Adobe_CoolType_Data/InVMFontsByCMap get 1 index 2 copy known { get false exch { pop currentglobal { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } { FontDirectory 1 index known {exch pop true exit} { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } ifelse } ifelse } forall } {pop pop false} ifelse { exch pop exch pop } { dup/CMap resourcestatus { pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS } { 128 string cvs dup(-)search { 3 1 roll search { 3 1 roll pop {dup cvi} stopped {pop pop pop pop pop $findfontByEnum} { 4 2 roll pop pop exch length exch 2 index length 2 index sub exch 1 sub -1 0 { $str cvs dup length 4 index 0 4 index 4 3 roll add getinterval exch 1 index exch 3 index exch putinterval dup/CMap resourcestatus { pop pop 4 1 roll pop pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS true exit } {pop} ifelse } for dup type/booleantype eq {pop} {pop pop pop $findfontByEnum} ifelse } ifelse } {pop pop pop $findfontByEnum} ifelse } {pop pop $findfontByEnum} ifelse } ifelse } ifelse } {//SubstituteFont exec} ifelse /$slen 0 def end } } { { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and {$findfontByEnum} {//SubstituteFont exec} ifelse end } } ifelse bind readonly def Adobe_CoolType_Core/scfindfont/systemfindfont load put } { /scfindfont { $SubstituteFont begin dup systemfindfont dup/FontName known {dup/FontName get dup 3 index ne} {/noname true} ifelse dup { /$origfontnamefound 2 index def /$origfontname 4 index def/$substituteFound true def } if exch pop { $slen 0 gt $sname null ne 3 index length $slen gt or and { pop dup $findfontByEnum findfont dup maxlength 1 add dict begin {1 index/FID eq{pop pop}{def}ifelse} forall currentdict end definefont dup/FontName known{dup/FontName get}{null}ifelse $origfontnamefound ne { $origfontname $str cvs print ( substitution revised, using )print dup/FontName known {dup/FontName get}{(unspecified font)} ifelse $str cvs print(.\n)print } if } {exch pop} ifelse } {exch pop} ifelse end }bind def } ifelse end end Adobe_CoolType_Core_Defined not { Adobe_CoolType_Core/findfont { $SubstituteFont begin $depth 0 eq { /$fontname 1 index dup type/stringtype ne{$str cvs}if def /$substituteFound false def } if /$depth $depth 1 add def end scfindfont $SubstituteFont begin /$depth $depth 1 sub def $substituteFound $depth 0 eq and { $inVMIndex null ne {dup $inVMIndex $AddInVMFont} if $doSmartSub { currentdict/$Strategy known {$Strategy/$BuildFont get exec} if } if } if end }bind put } if } if end /$AddInVMFont { exch/FontName 2 copy known { get 1 dict dup begin exch 1 index gcheck def end exch Adobe_CoolType_Data/InVMFontsByCMap get exch $DictAdd } {pop pop pop} ifelse }bind def /$DictAdd { 2 copy known not {2 copy 4 index length dict put} if Level2? not { 2 copy get dup maxlength exch length 4 index length add lt 2 copy get dup length 4 index length add exch maxlength 1 index lt { 2 mul dict begin 2 copy get{forall}def 2 copy currentdict put end } {pop} ifelse } if get begin {def} forall end }bind def end end %%EndResource currentglobal true setglobal %%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 %%Copyright: Copyright 1987-2006 Adobe Systems Incorporated. %%Version: 1.23 0 systemdict/languagelevel known dup {currentglobal false setglobal} {false} ifelse exch userdict/Adobe_CoolType_Utility 2 copy known {2 copy get dup maxlength 27 add dict copy} {27 dict} ifelse put Adobe_CoolType_Utility begin /@eexecStartData def /@recognizeCIDFont null def /ct_Level2? exch def /ct_Clone? 1183615869 internaldict dup /CCRun known not exch/eCCRun known not ct_Level2? and or def ct_Level2? {globaldict begin currentglobal true setglobal} if /ct_AddStdCIDMap ct_Level2? {{ mark Adobe_CoolType_Utility/@recognizeCIDFont currentdict put { ((Hex)57 StartData 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60 d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8 cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec } stopped { cleartomark Adobe_CoolType_Utility/@recognizeCIDFont get countdictstack dup array dictstack exch 1 sub -1 0 { 2 copy get 3 index eq {1 index length exch sub 1 sub{end}repeat exit} {pop} ifelse } for pop pop Adobe_CoolType_Utility/@eexecStartData get eexec } {cleartomark} ifelse }} {{ Adobe_CoolType_Utility/@eexecStartData get eexec }} ifelse bind def userdict/cid_extensions known dup{cid_extensions/cid_UpdateDB known and}if { cid_extensions begin /cid_GetCIDSystemInfo { 1 index type/stringtype eq {exch cvn exch} if cid_extensions begin dup load 2 index known { 2 copy cid_GetStatusInfo dup null ne { 1 index load 3 index get dup null eq {pop pop cid_UpdateDB} { exch 1 index/Created get eq {exch pop exch pop} {pop cid_UpdateDB} ifelse } ifelse } {pop cid_UpdateDB} ifelse } {cid_UpdateDB} ifelse end }bind def end } if ct_Level2? {end setglobal} if /ct_UseNativeCapability? systemdict/composefont known def /ct_MakeOCF 35 dict def /ct_Vars 25 dict def /ct_GlyphDirProcs 6 dict def /ct_BuildCharDict 15 dict dup begin /charcode 2 string def /dst_string 1500 string def /nullstring()def /usewidths? true def end def ct_Level2?{setglobal}{pop}ifelse ct_GlyphDirProcs begin /GetGlyphDirectory { systemdict/languagelevel known {pop/CIDFont findresource/GlyphDirectory get} { 1 index/CIDFont findresource/GlyphDirectory get dup type/dicttype eq { dup dup maxlength exch length sub 2 index lt { dup length 2 index add dict copy 2 index /CIDFont findresource/GlyphDirectory 2 index put } if } if exch pop exch pop } ifelse + }def /+ { systemdict/languagelevel known { currentglobal false setglobal 3 dict begin /vm exch def } {1 dict begin} ifelse /$ exch def systemdict/languagelevel known { vm setglobal /gvm currentglobal def $ gcheck setglobal } if ?{$ begin}if }def /?{$ type/dicttype eq}def /|{ userdict/Adobe_CoolType_Data known { Adobe_CoolType_Data/AddWidths? known { currentdict Adobe_CoolType_Data begin begin AddWidths? { Adobe_CoolType_Data/CC 3 index put ?{def}{$ 3 1 roll put}ifelse CC charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore currentfont/Widths get exch CC exch put } {?{def}{$ 3 1 roll put}ifelse} ifelse end end } {?{def}{$ 3 1 roll put}ifelse} ifelse } {?{def}{$ 3 1 roll put}ifelse} ifelse }def /! { ?{end}if systemdict/languagelevel known {gvm setglobal} if end }def /:{string currentfile exch readstring pop}executeonly def end ct_MakeOCF begin /ct_cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_CID_STR_SIZE 8000 def /ct_mkocfStr100 100 string def /ct_defaultFontMtx[.001 0 0 .001 0 0]def /ct_1000Mtx[1000 0 0 1000 0 0]def /ct_raise{exch cvx exch errordict exch get exec stop}bind def /ct_reraise {cvx $error/errorname get(Error: )print dup( )cvs print errordict exch get exec stop }bind def /ct_cvnsi { 1 index add 1 sub 1 exch 0 4 1 roll { 2 index exch get exch 8 bitshift add } for exch pop }bind def /ct_GetInterval { Adobe_CoolType_Utility/ct_BuildCharDict get begin /dst_index 0 def dup dst_string length gt {dup string/dst_string exch def} if 1 index ct_CID_STR_SIZE idiv /arrayIndex exch def 2 index arrayIndex get 2 index arrayIndex ct_CID_STR_SIZE mul sub { dup 3 index add 2 index length le { 2 index getinterval dst_string dst_index 2 index putinterval length dst_index add/dst_index exch def exit } { 1 index length 1 index sub dup 4 1 roll getinterval dst_string dst_index 2 index putinterval pop dup dst_index add/dst_index exch def sub /arrayIndex arrayIndex 1 add def 2 index dup length arrayIndex gt {arrayIndex get} { pop exit } ifelse 0 } ifelse } loop pop pop pop dst_string 0 dst_index getinterval end }bind def ct_Level2? { /ct_resourcestatus currentglobal mark true setglobal {/unknowninstancename/Category resourcestatus} stopped {cleartomark setglobal true} {cleartomark currentglobal not exch setglobal} ifelse { { mark 3 1 roll/Category findresource begin ct_Vars/vm currentglobal put ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse ct_Vars/vm get setglobal end } } {{resourcestatus}} ifelse bind def /CIDFont/Category ct_resourcestatus {pop pop} { currentglobal true setglobal /Generic/Category findresource dup length dict copy dup/InstanceType/dicttype put /CIDFont exch/Category defineresource pop setglobal } ifelse ct_UseNativeCapability? { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } if } { /ct_Category 2 dict begin /CIDFont 10 dict def /ProcSet 2 dict def currentdict end def /defineresource { ct_Category 1 index 2 copy known { get dup dup maxlength exch length eq { dup length 10 add dict copy ct_Category 2 index 2 index put } if 3 index 3 index put pop exch pop } {pop pop/defineresource/undefined ct_raise} ifelse }bind def /findresource { ct_Category 1 index 2 copy known { get 2 index 2 copy known {get 3 1 roll pop pop} {pop pop/findresource/undefinedresource ct_raise} ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /resourcestatus { ct_Category 1 index 2 copy known { get 2 index known exch pop exch pop { 0 -1 true } { false } ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /ct_resourcestatus/resourcestatus load def } ifelse /ct_CIDInit 2 dict begin /ct_cidfont_stream_init { { dup(Binary)eq { pop null currentfile ct_Level2? { {cid_BYTE_COUNT()/SubFileDecode filter} stopped {pop pop pop} if } if /readstring load exit } if dup(Hex)eq { pop currentfile ct_Level2? { {null exch/ASCIIHexDecode filter/readstring} stopped {pop exch pop(>)exch/readhexstring} if } {(>)exch/readhexstring} ifelse load exit } if /StartData/typecheck ct_raise } loop cid_BYTE_COUNT ct_CID_STR_SIZE le { 2 copy cid_BYTE_COUNT string exch exec pop 1 array dup 3 -1 roll 0 exch put } { cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi dup array exch 2 sub 0 exch 1 exch { 2 copy 5 index ct_CID_STR_SIZE string 6 index exec pop put pop } for 2 index cid_BYTE_COUNT ct_CID_STR_SIZE mod string 3 index exec pop 1 index exch 1 index length 1 sub exch put } ifelse cid_CIDFONT exch/GlyphData exch put 2 index null eq { pop pop pop } { pop/readstring load 1 string exch { 3 copy exec pop dup length 0 eq { pop pop pop pop pop true exit } if 4 index eq { pop pop pop pop false exit } if } loop pop } ifelse }bind def /StartData { mark { currentdict dup/FDArray get 0 get/FontMatrix get 0 get 0.001 eq { dup/CDevProc known not { /CDevProc 1183615869 internaldict/stdCDevProc 2 copy known {get} { pop pop {pop pop pop pop pop 0 -1000 7 index 2 div 880} } ifelse def } if } { /CDevProc { pop pop pop pop pop 0 1 cid_temp/cid_CIDFONT get /FDArray get 0 get /FontMatrix get 0 get div 7 index 2 div 1 index 0.88 mul }def } ifelse /cid_temp 15 dict def cid_temp begin /cid_CIDFONT exch def 3 copy pop dup/cid_BYTE_COUNT exch def 0 gt { ct_cidfont_stream_init FDArray { /Private get dup/SubrMapOffset known { begin /Subrs SubrCount array def Subrs SubrMapOffset SubrCount SDBytes ct_Level2? { currentdict dup/SubrMapOffset undef dup/SubrCount undef /SDBytes undef } if end /cid_SD_BYTES exch def /cid_SUBR_COUNT exch def /cid_SUBR_MAP_OFFSET exch def /cid_SUBRS exch def cid_SUBR_COUNT 0 gt { GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi 0 1 cid_SUBR_COUNT 1 sub { exch 1 index 1 add cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add GlyphData exch cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi cid_SUBRS 4 2 roll GlyphData exch 4 index 1 index sub ct_GetInterval dup length string copy put } for pop } if } {pop} ifelse } forall } if cleartomark pop pop end CIDFontName currentdict/CIDFont defineresource pop end end } stopped {cleartomark/StartData ct_reraise} if }bind def currentdict end def /ct_saveCIDInit { /CIDInit/ProcSet ct_resourcestatus {true} {/CIDInitC/ProcSet ct_resourcestatus} ifelse { pop pop /CIDInit/ProcSet findresource ct_UseNativeCapability? {pop null} {/CIDInit ct_CIDInit/ProcSet defineresource pop} ifelse } {/CIDInit ct_CIDInit/ProcSet defineresource pop null} ifelse ct_Vars exch/ct_oldCIDInit exch put }bind def /ct_restoreCIDInit { ct_Vars/ct_oldCIDInit get dup null ne {/CIDInit exch/ProcSet defineresource pop} {pop} ifelse }bind def /ct_BuildCharSetUp { 1 index begin CIDFont begin Adobe_CoolType_Utility/ct_BuildCharDict get begin /ct_dfCharCode exch def /ct_dfDict exch def CIDFirstByte ct_dfCharCode add dup CIDCount ge {pop 0} if /cid exch def { GlyphDirectory cid 2 copy known {get} {pop pop nullstring} ifelse dup length FDBytes sub 0 gt { dup FDBytes 0 ne {0 FDBytes ct_cvnsi} {pop 0} ifelse /fdIndex exch def dup length FDBytes sub FDBytes exch getinterval /charstring exch def exit } { pop cid 0 eq {/charstring nullstring def exit} if /cid 0 def } ifelse } loop }def /ct_SetCacheDevice { 0 0 moveto dup stringwidth 3 -1 roll true charpath pathbbox 0 -1000 7 index 2 div 880 setcachedevice2 0 0 moveto }def /ct_CloneSetCacheProc { 1 eq { stringwidth pop -2 div -880 0 -1000 setcharwidth moveto } { usewidths? { currentfont/Widths get cid 2 copy known {get exch pop aload pop} {pop pop stringwidth} ifelse } {stringwidth} ifelse setcharwidth 0 0 moveto } ifelse }def /ct_Type3ShowCharString { ct_FDDict fdIndex 2 copy known {get} { currentglobal 3 1 roll 1 index gcheck setglobal ct_Type1FontTemplate dup maxlength dict copy begin FDArray fdIndex get dup/FontMatrix 2 copy known {get} {pop pop ct_defaultFontMtx} ifelse /FontMatrix exch dup length array copy def /Private get /Private exch def /Widths rootfont/Widths get def /CharStrings 1 dict dup/.notdef dup length string copy put def currentdict end /ct_Type1Font exch definefont dup 5 1 roll put setglobal } ifelse dup/CharStrings get 1 index/Encoding get ct_dfCharCode get charstring put rootfont/WMode 2 copy known {get} {pop pop 0} ifelse exch 1000 scalefont setfont ct_str1 0 ct_dfCharCode put ct_str1 exch ct_dfSetCacheProc ct_SyntheticBold { currentpoint ct_str1 show newpath moveto ct_str1 true charpath ct_StrokeWidth setlinewidth stroke } {ct_str1 show} ifelse }def /ct_Type4ShowCharString { ct_dfDict ct_dfCharCode charstring FDArray fdIndex get dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not {ct_1000Mtx matrix concatmatrix concat} {pop} ifelse /Private get Adobe_CoolType_Utility/ct_Level2? get not { ct_dfDict/Private 3 -1 roll {put} 1183615869 internaldict/superexec get exec } if 1183615869 internaldict Adobe_CoolType_Utility/ct_Level2? get {1 index} {3 index/Private get mark 6 1 roll} ifelse dup/RunInt known {/RunInt get} {pop/CCRun} ifelse get exec Adobe_CoolType_Utility/ct_Level2? get not {cleartomark} if }bind def /ct_BuildCharIncremental { { Adobe_CoolType_Utility/ct_MakeOCF get begin ct_BuildCharSetUp ct_ShowCharString } stopped {stop} if end end end end }bind def /BaseFontNameStr(BF00)def /ct_Type1FontTemplate 14 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /PaintType 0 def currentdict end def /BaseFontTemplate 11 dict begin /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /BuildChar/ct_BuildCharIncremental load def ct_Clone? { /FontType 3 def /ct_ShowCharString/ct_Type3ShowCharString load def /ct_dfSetCacheProc/ct_CloneSetCacheProc load def /ct_SyntheticBold false def /ct_StrokeWidth 1 def } { /FontType 4 def /Private 1 dict dup/lenIV 4 put def /CharStrings 1 dict dup/.notdefput def /PaintType 0 def /ct_ShowCharString/ct_Type4ShowCharString load def } ifelse /ct_str1 1 string def currentdict end def /BaseFontDictSize BaseFontTemplate length 5 add def /ct_matrixeq { true 0 1 5 { dup 4 index exch get exch 3 index exch get eq and dup not {exit} if } for exch pop exch pop }bind def /ct_makeocf { 15 dict begin exch/WMode exch def exch/FontName exch def /FontType 0 def /FMapType 2 def dup/FontMatrix known {dup/FontMatrix get/FontMatrix exch def} {/FontMatrix matrix def} ifelse /bfCount 1 index/CIDCount get 256 idiv 1 add dup 256 gt{pop 256}if def /Encoding 256 array 0 1 bfCount 1 sub{2 copy dup put pop}for bfCount 1 255{2 copy bfCount put pop}for def /FDepVector bfCount dup 256 lt{1 add}if array def BaseFontTemplate BaseFontDictSize dict copy begin /CIDFont exch def CIDFont/FontBBox known {CIDFont/FontBBox get/FontBBox exch def} if CIDFont/CDevProc known {CIDFont/CDevProc get/CDevProc exch def} if currentdict end BaseFontNameStr 3(0)putinterval 0 1 bfCount dup 256 eq{1 sub}if { FDepVector exch 2 index BaseFontDictSize dict copy begin dup/CIDFirstByte exch 256 mul def FontType 3 eq {/ct_FDDict 2 dict def} if currentdict end 1 index 16 BaseFontNameStr 2 2 getinterval cvrs pop BaseFontNameStr exch definefont put } for ct_Clone? {/Widths 1 index/CIDFont get/GlyphDirectory get length dict def} if FontName currentdict end definefont ct_Clone? { gsave dup 1000 scalefont setfont ct_BuildCharDict begin /usewidths? false def currentfont/Widths get begin exch/CIDFont get/GlyphDirectory get { pop dup charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore def } forall end /usewidths? true def end grestore } {exch pop} ifelse }bind def currentglobal true setglobal /ct_ComposeFont { ct_UseNativeCapability? { 2 index/CMap ct_resourcestatus {pop pop exch pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 3 index def /CMapVersion 1.000 def /CMapType 1 def exch/WMode exch def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search { dup length string copy exch pop exch pop } {pop(Identity)} ifelse } {pop (Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { 3 2 roll pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def setglobal /ct_MakeIdentity { ct_UseNativeCapability? { 1 index/CMap ct_resourcestatus {pop pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 2 index def /CMapVersion 1.000 def /CMapType 1 def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search {dup length string copy exch pop exch pop} {pop(Identity)} ifelse } {pop(Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { exch pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def currentdict readonly pop end end %%EndResource setglobal %%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0 %%Copyright: Copyright 1987-2004 Adobe Systems Incorporated. %%Version: 1.0 0 userdict/ct_T42Dict 15 dict put ct_T42Dict begin /Is2015? { version cvi 2015 ge }bind def /AllocGlyphStorage { Is2015? { pop } { {string}forall }ifelse }bind def /Type42DictBegin { 25 dict begin /FontName exch def /CharStrings 256 dict begin /.notdef 0 def currentdict end def /Encoding exch def /PaintType 0 def /FontType 42 def /FontMatrix[1 0 0 1 0 0]def 4 array astore cvx/FontBBox exch def /sfnts }bind def /Type42DictEnd { currentdict dup/FontName get exch definefont end ct_T42Dict exch dup/FontName get exch put }bind def /RD{string currentfile exch readstring pop}executeonly def /PrepFor2015 { Is2015? { /GlyphDirectory 16 dict def sfnts 0 get dup 2 index (glyx) putinterval 2 index (locx) putinterval pop pop } { pop pop }ifelse }bind def /AddT42Char { Is2015? { /GlyphDirectory get begin def end pop pop } { /sfnts get 4 index get 3 index 2 index putinterval pop pop pop pop }ifelse }bind def /T0AddT42Mtx2 { /CIDFont findresource/Metrics2 get begin def end }bind def end %%EndResource currentglobal true setglobal %%BeginFile: MMFauxFont.prc %%Copyright: Copyright 1987-2001 Adobe Systems Incorporated. %%All Rights Reserved. userdict /ct_EuroDict 10 dict put ct_EuroDict begin /ct_CopyFont { { 1 index /FID ne {def} {pop pop} ifelse} forall } def /ct_GetGlyphOutline { gsave initmatrix newpath exch findfont dup length 1 add dict begin ct_CopyFont /Encoding Encoding dup length array copy dup 4 -1 roll 0 exch put def currentdict end /ct_EuroFont exch definefont 1000 scalefont setfont 0 0 moveto [ <00> stringwidth <00> false charpath pathbbox [ {/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall grestore counttomark 8 add } def /ct_MakeGlyphProc { ] cvx /ct_PSBuildGlyph cvx ] cvx } def /ct_PSBuildGlyph { gsave 8 -1 roll pop 7 1 roll 6 -2 roll ct_FontMatrix transform 6 2 roll 4 -2 roll ct_FontMatrix transform 4 2 roll ct_FontMatrix transform currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse dup 9 1 roll { currentdict /StrokeWidth 2 copy known { get 2 div 0 ct_FontMatrix dtransform pop 5 1 roll 4 -1 roll 4 index sub 4 1 roll 3 -1 roll 4 index sub 3 1 roll exch 4 index add exch 4 index add 5 -1 roll pop } { pop pop } ifelse } if setcachedevice ct_FontMatrix concat ct_PSPathOps begin exec end { currentdict /StrokeWidth 2 copy known { get } { pop pop 0 } ifelse setlinewidth stroke } { fill } ifelse grestore } def /ct_PSPathOps 4 dict dup begin /m {moveto} def /l {lineto} def /c {curveto} def /cp {closepath} def end def /ct_matrix1000 [1000 0 0 1000 0 0] def /ct_AddGlyphProc { 2 index findfont dup length 4 add dict begin ct_CopyFont /CharStrings CharStrings dup length 1 add dict copy begin 3 1 roll def currentdict end def /ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def /ct_PSBuildGlyph /ct_PSBuildGlyph load def /ct_PSPathOps /ct_PSPathOps load def currentdict end definefont pop } def systemdict /languagelevel known { /ct_AddGlyphToPrinterFont { 2 copy ct_GetGlyphOutline 3 add -1 roll restore ct_MakeGlyphProc ct_AddGlyphProc } def } { /ct_AddGlyphToPrinterFont { pop pop restore Adobe_CTFauxDict /$$$FONTNAME get /Euro Adobe_CTFauxDict /$$$SUBSTITUTEBASE get ct_EuroDict exch get ct_AddGlyphProc } def } ifelse /AdobeSansMM { 556 0 24 -19 541 703 { 541 628 m 510 669 442 703 354 703 c 201 703 117 607 101 444 c 50 444 l 25 372 l 97 372 l 97 301 l 49 301 l 24 229 l 103 229 l 124 67 209 -19 350 -19 c 435 -19 501 25 509 32 c 509 131 l 492 105 417 60 343 60 c 267 60 204 127 197 229 c 406 229 l 430 301 l 191 301 l 191 372 l 455 372 l 479 444 l 194 444 l 201 531 245 624 348 624 c 433 624 484 583 509 534 c cp 556 0 m } ct_PSBuildGlyph } def /AdobeSerifMM { 500 0 10 -12 484 692 { 347 298 m 171 298 l 170 310 170 322 170 335 c 170 362 l 362 362 l 374 403 l 172 403 l 184 580 244 642 308 642 c 380 642 434 574 457 457 c 481 462 l 474 691 l 449 691 l 433 670 429 657 410 657 c 394 657 360 692 299 692 c 204 692 94 604 73 403 c 22 403 l 10 362 l 70 362 l 69 352 69 341 69 330 c 69 319 69 308 70 298 c 22 298 l 10 257 l 73 257 l 97 57 216 -12 295 -12 c 364 -12 427 25 484 123 c 458 142 l 425 101 384 37 316 37 c 256 37 189 84 173 257 c 335 257 l cp 500 0 m } ct_PSBuildGlyph } def end %%EndFile setglobal Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end %%BeginResource: procset Adobe_AGM_Image 1.0 0 %%Version: 1.0 0 %%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. systemdict/setpacking known { currentpacking true setpacking }if userdict/Adobe_AGM_Image 71 dict dup begin put /Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def /nd{ null def }bind def /AGMIMG_&image nd /AGMIMG_&colorimage nd /AGMIMG_&imagemask nd /AGMIMG_mbuf()def /AGMIMG_ybuf()def /AGMIMG_kbuf()def /AGMIMG_c 0 def /AGMIMG_m 0 def /AGMIMG_y 0 def /AGMIMG_k 0 def /AGMIMG_tmp nd /AGMIMG_imagestring0 nd /AGMIMG_imagestring1 nd /AGMIMG_imagestring2 nd /AGMIMG_imagestring3 nd /AGMIMG_imagestring4 nd /AGMIMG_imagestring5 nd /AGMIMG_cnt nd /AGMIMG_fsave nd /AGMIMG_colorAry nd /AGMIMG_override nd /AGMIMG_name nd /AGMIMG_maskSource nd /AGMIMG_flushfilters nd /invert_image_samples nd /knockout_image_samples nd /img nd /sepimg nd /devnimg nd /idximg nd /ds { Adobe_AGM_Core begin Adobe_AGM_Image begin /AGMIMG_&image systemdict/image get def /AGMIMG_&imagemask systemdict/imagemask get def /colorimage where{ pop /AGMIMG_&colorimage/colorimage ldf }if end end }def /ps { Adobe_AGM_Image begin /AGMIMG_ccimage_exists{/customcolorimage where { pop /Adobe_AGM_OnHost_Seps where { pop false }{ /Adobe_AGM_InRip_Seps where { pop false }{ true }ifelse }ifelse }{ false }ifelse }bdf level2{ /invert_image_samples { Adobe_AGM_Image/AGMIMG_tmp Decode length ddf /Decode[Decode 1 get Decode 0 get]def }def /knockout_image_samples { Operator/imagemask ne{ /Decode[1 1]def }if }def }{ /invert_image_samples { {1 exch sub}currenttransfer addprocs settransfer }def /knockout_image_samples { {pop 1}currenttransfer addprocs settransfer }def }ifelse /img/imageormask ldf /sepimg/sep_imageormask ldf /devnimg/devn_imageormask ldf /idximg/indexed_imageormask ldf /_ctype 7 def currentdict{ dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ bind }if def }forall }def /pt { end }def /dt { }def /AGMIMG_flushfilters { dup type/arraytype ne {1 array astore}if dup 0 get currentfile ne {dup 0 get flushfile}if { dup type/filetype eq { dup status 1 index currentfile ne and {closefile} {pop} ifelse }{pop}ifelse }forall }def /AGMIMG_init_common { currentdict/T known{/ImageType/T ldf currentdict/T undef}if currentdict/W known{/Width/W ldf currentdict/W undef}if currentdict/H known{/Height/H ldf currentdict/H undef}if currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if currentdict/D known{/Decode/D ldf currentdict/D undef}if currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if currentdict/O known{ /Operator/O load 1 eq{ /imagemask }{ /O load 2 eq{ /image }{ /colorimage }ifelse }ifelse def currentdict/O undef }if currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if currentdict/I known{/Interpolate/I ldf currentdict/I undef}if currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if /DataSource load xcheck not{ DataSource type/arraytype eq{ DataSource 0 get type/filetype eq{ /_Filters DataSource def currentdict/MultipleDataSources known not{ /DataSource DataSource dup length 1 sub get def }if }if }if currentdict/MultipleDataSources known not{ /MultipleDataSources DataSource type/arraytype eq{ DataSource length 1 gt } {false}ifelse def }if }if /NComponents Decode length 2 div def currentdict/SkipImageProc known not{/SkipImageProc{false}def}if }bdf /imageormask_sys { begin AGMIMG_init_common save mark level2{ currentdict Operator/imagemask eq{ AGMIMG_&imagemask }{ use_mask{ process_mask AGMIMG_&image }{ AGMIMG_&image }ifelse }ifelse }{ Width Height Operator/imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix/DataSource load AGMIMG_&imagemask }{ BitsPerComponent ImageMatrix/DataSource load AGMIMG_&image }ifelse }ifelse currentdict/_Filters known{_Filters AGMIMG_flushfilters}if cleartomark restore end }def /overprint_plate { currentoverprint{ 0 get dup type/nametype eq{ dup/DeviceGray eq{ pop AGMCORE_black_plate not }{ /DeviceCMYK eq{ AGMCORE_is_cmyk_sep not }if }ifelse }{ false exch { AGMOHS_sepink eq or }forall not }ifelse }{ pop false }ifelse }def /process_mask { level3{ dup begin /ImageType 1 def end 4 dict begin /DataDict exch def /ImageType 3 def /InterleaveType 3 def /MaskDict 9 dict begin /ImageType 1 def /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def /ImageMatrix[Width 0 0 Height neg 0 Height]def /NComponents 1 def /BitsPerComponent 1 def /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def currentdict end def currentdict end }if }def /use_mask { dup/Mask known {dup/Mask get}{false}ifelse }def /imageormask { begin AGMIMG_init_common SkipImageProc{ currentdict consumeimagedata } { save mark level2 AGMCORE_host_sep not and{ currentdict Operator/imagemask eq DeviceN_PS2 not and{ imagemask }{ AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{ [/Separation/Black/DeviceGray{}]setcolorspace /Decode[Decode 1 get Decode 0 get]def }if use_mask{ process_mask image }{ DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and { Names convert_to_process not{ 2 dict begin /imageDict xdf /names_index 0 def gsave imageDict write_image_file{ Names{ dup(None)ne{ [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace Operator imageDict read_image_file names_index 0 eq{true setoverprint}if /names_index names_index 1 add def }{ pop }ifelse }forall close_image_file }if grestore end }{ Operator/imagemask eq{ imagemask }{ image }ifelse }ifelse }{ Operator/imagemask eq{ imagemask }{ image }ifelse }ifelse }ifelse }ifelse }{ Width Height Operator/imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix/DataSource load /Adobe_AGM_OnHost_Seps where{ pop imagemask }{ currentgray 1 ne{ currentdict imageormask_sys }{ currentoverprint not{ 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentdict ignoreimagedata }ifelse }ifelse }ifelse }{ BitsPerComponent ImageMatrix MultipleDataSources{ 0 1 NComponents 1 sub{ DataSource exch get }for }{ /DataSource load }ifelse Operator/colorimage eq{ AGMCORE_host_sep{ MultipleDataSources level2 or NComponents 4 eq and{ AGMCORE_is_cmyk_sep{ MultipleDataSources{ /DataSource DataSource 0 get xcheck { [ DataSource 0 get/exec cvx DataSource 1 get/exec cvx DataSource 2 get/exec cvx DataSource 3 get/exec cvx /AGMCORE_get_ink_data cvx ]cvx }{ DataSource aload pop AGMCORE_get_ink_data }ifelse def }{ /DataSource Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul /DataSource load filter_cmyk 0()/SubFileDecode filter def }ifelse /Decode[Decode 0 get Decode 1 get]def /MultipleDataSources false def /NComponents 1 def /Operator/image def invert_image_samples 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentoverprint not Operator/imagemask eq and{ 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentdict ignoreimagedata }ifelse }ifelse }{ MultipleDataSources NComponents AGMIMG_&colorimage }ifelse }{ true NComponents colorimage }ifelse }{ Operator/image eq{ AGMCORE_host_sep{ /DoImage true def currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse { AGMCORE_black_plate not Operator/imagemask ne and{ /DoImage false def currentdict ignoreimagedata }if }if 1 AGMCORE_&setgray DoImage {currentdict imageormask_sys}if }{ use_mask{ process_mask image }{ image }ifelse }ifelse }{ Operator/knockout eq{ pop pop pop pop pop currentcolorspace overprint_plate not{ knockout_unitsq }if }if }ifelse }ifelse }ifelse }ifelse cleartomark restore }ifelse currentdict/_Filters known{_Filters AGMIMG_flushfilters}if end }def /sep_imageormask { /sep_colorspace_dict AGMCORE_gget begin CSA map_csa begin AGMIMG_init_common SkipImageProc{ currentdict consumeimagedata }{ save mark AGMCORE_avoid_L2_sep_space{ /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def }if AGMIMG_ccimage_exists MappedCSA 0 get/DeviceCMYK eq and currentdict/Components known and Name()ne and Name(All)ne and Operator/image eq and AGMCORE_producing_seps not and level2 not and { Width Height BitsPerComponent ImageMatrix [ /DataSource load/exec cvx { 0 1 2 index length 1 sub{ 1 index exch 2 copy get 255 xor put }for }/exec cvx ]cvx bind MappedCSA 0 get/DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Name findcmykcustomcolor customcolorimage }{ AGMCORE_producing_seps not{ level2{ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{ [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentdict imageormask }{ currentdict Operator/imagemask eq{ imageormask }{ sep_imageormask_lev1 }ifelse }ifelse }{ AGMCORE_host_sep{ Operator/knockout eq{ currentdict/ImageMatrix get concat knockout_unitsq }{ currentgray 1 ne{ AGMCORE_is_cmyk_sep Name(All)ne and{ level2{ Name AGMCORE_IsSeparationAProcessColor { Operator/imagemask eq{ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor }if }{ invert_image_samples }ifelse }{ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ [/Separation Name[/DeviceGray] { sep_colorspace_proc AGMCORE_get_ink_data 1 exch sub }bind ]AGMCORE_&setcolorspace /sep_tint AGMCORE_gget AGMCORE_&setcolor }if }ifelse currentdict imageormask_sys }{ currentdict Operator/imagemask eq{ imageormask_sys }{ sep_image_lev1_sep }ifelse }ifelse }{ Operator/imagemask ne{ invert_image_samples }if currentdict imageormask_sys }ifelse }{ currentoverprint not Name(All)eq or Operator/imagemask eq and{ currentdict imageormask_sys }{ currentoverprint not { gsave knockout_unitsq grestore }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ currentcolorspace 0 get/Separation ne{ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if }if currentoverprint MappedCSA 0 get/DeviceCMYK eq and Name AGMCORE_IsSeparationAProcessColor not and //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse Name(All)ne and{ imageormask_l2_overprint }{ currentdict imageormask }ifelse }ifelse }ifelse }ifelse cleartomark restore }ifelse currentdict/_Filters known{_Filters AGMIMG_flushfilters}if end end }def /colorSpaceElemCnt { mark currentcolor counttomark dup 2 add 1 roll cleartomark }bdf /devn_sep_datasource { 1 dict begin /dataSource xdf [ 0 1 dataSource length 1 sub{ dup currentdict/dataSource get/exch cvx/get cvx/exec cvx /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx }for ]cvx bind end }bdf /devn_alt_datasource { 11 dict begin /convProc xdf /origcolorSpaceElemCnt xdf /origMultipleDataSources xdf /origBitsPerComponent xdf /origDecode xdf /origDataSource xdf /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def /DataSource origMultipleDataSources { [ BitsPerComponent 8 idiv origDecode length 2 idiv mul string 0 1 origDecode length 2 idiv 1 sub { dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch origDataSource exch get 0()/SubFileDecode filter BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx }for ]bind cvx }{origDataSource}ifelse 0()/SubFileDecode filter def [ origcolorSpaceElemCnt string 0 2 origDecode length 2 sub { dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx }for /convProc load/exec cvx origcolorSpaceElemCnt 1 sub -1 0 { /dup cvx 2/add cvx/index cvx 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx }for ]bind cvx 0()/SubFileDecode filter end }bdf /devn_imageormask { /devicen_colorspace_dict AGMCORE_gget begin CSA map_csa 2 dict begin dup /srcDataStrs[3 -1 roll begin AGMIMG_init_common currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse { Width Decode length 2 div mul cvi { dup 65535 gt{1 add 2 div cvi}{exit}ifelse }loop string }repeat end]def /dstDataStr srcDataStrs 0 get length string def begin AGMIMG_init_common SkipImageProc{ currentdict consumeimagedata }{ save mark AGMCORE_producing_seps not{ level3 not{ Operator/imagemask ne{ /DataSource[[ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def /MultipleDataSources true def /Decode colorSpaceElemCnt[exch{0 1}repeat]def }if }if currentdict imageormask }{ AGMCORE_host_sep{ Names convert_to_process{ CSA get_csa_by_name 0 get/DeviceCMYK eq{ /DataSource Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get devn_alt_datasource filter_cmyk 0()/SubFileDecode filter def /MultipleDataSources false def /Decode[1 0]def /DeviceGray setcolorspace currentdict imageormask_sys }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate{ /DataSource DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get devn_alt_datasource /MultipleDataSources false def /Decode colorSpaceElemCnt[exch{0 1}repeat]def currentdict imageormask_sys }{ gsave knockout_unitsq grestore currentdict consumeimagedata }ifelse }ifelse } { /devicen_colorspace_dict AGMCORE_gget/names_index known{ Operator/imagemask ne{ MultipleDataSources{ /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def /MultipleDataSources false def }{ /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def }ifelse invert_image_samples }if currentdict imageormask_sys }{ currentoverprint not Operator/imagemask eq and{ currentdict imageormask_sys }{ currentoverprint not { gsave knockout_unitsq grestore }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ currentdict imageormask }ifelse }ifelse cleartomark restore }ifelse currentdict/_Filters known{_Filters AGMIMG_flushfilters}if end end end }def /imageormask_l2_overprint { currentdict currentcmykcolor add add add 0 eq{ currentdict consumeimagedata }{ level3{ currentcmykcolor /AGMIMG_k xdf /AGMIMG_y xdf /AGMIMG_m xdf /AGMIMG_c xdf Operator/imagemask eq{ [/DeviceN[ AGMIMG_c 0 ne{/Cyan}if AGMIMG_m 0 ne{/Magenta}if AGMIMG_y 0 ne{/Yellow}if AGMIMG_k 0 ne{/Black}if ]/DeviceCMYK{}]setcolorspace AGMIMG_c 0 ne{AGMIMG_c}if AGMIMG_m 0 ne{AGMIMG_m}if AGMIMG_y 0 ne{AGMIMG_y}if AGMIMG_k 0 ne{AGMIMG_k}if setcolor }{ /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def [/Indexed [ /DeviceN[ AGMIMG_c 0 ne{/Cyan}if AGMIMG_m 0 ne{/Magenta}if AGMIMG_y 0 ne{/Yellow}if AGMIMG_k 0 ne{/Black}if ] /DeviceCMYK{ AGMIMG_k 0 eq{0}if AGMIMG_y 0 eq{0 exch}if AGMIMG_m 0 eq{0 3 1 roll}if AGMIMG_c 0 eq{0 4 1 roll}if } ] 255 { 255 div mark exch dup dup dup AGMIMG_k 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_y 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_m 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_c 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop counttomark 1 roll }{ pop }ifelse counttomark 1 add -1 roll pop } ]setcolorspace }ifelse imageormask_sys }{ write_image_file{ currentcmykcolor 0 ne{ [/Separation/Black/DeviceGray{}]setcolorspace gsave /Black [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation/Yellow/DeviceGray{}]setcolorspace gsave /Yellow [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation/Magenta/DeviceGray{}]setcolorspace gsave /Magenta [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation/Cyan/DeviceGray{}]setcolorspace gsave /Cyan [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if close_image_file }{ imageormask }ifelse }ifelse }ifelse }def /indexed_imageormask { begin AGMIMG_init_common save mark currentdict AGMCORE_host_sep{ Operator/knockout eq{ /indexed_colorspace_dict AGMCORE_gget dup/CSA known{ /CSA get get_csa_by_name }{ /Names get }ifelse overprint_plate not{ knockout_unitsq }if }{ Indexed_DeviceN{ /devicen_colorspace_dict AGMCORE_gget dup/names_index known exch/Names get convert_to_process or{ indexed_image_lev2_sep }{ currentoverprint not{ knockout_unitsq }if currentdict consumeimagedata }ifelse }{ AGMCORE_is_cmyk_sep{ Operator/imagemask eq{ imageormask_sys }{ level2{ indexed_image_lev2_sep }{ indexed_image_lev1_sep }ifelse }ifelse }{ currentoverprint not{ knockout_unitsq }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ level2{ Indexed_DeviceN{ /indexed_colorspace_dict AGMCORE_gget begin }{ /indexed_colorspace_dict AGMCORE_gget dup null ne { begin currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and AGMCORE_in_rip_sep and{ [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup] setcolorspace }if end } {pop}ifelse }ifelse imageormask Indexed_DeviceN{ end }if }{ Operator/imagemask eq{ imageormask }{ indexed_imageormask_lev1 }ifelse }ifelse }ifelse cleartomark restore currentdict/_Filters known{_Filters AGMIMG_flushfilters}if end }def /indexed_image_lev2_sep { /indexed_colorspace_dict AGMCORE_gget begin begin Indexed_DeviceN not{ currentcolorspace dup 1/DeviceGray put dup 3 currentcolorspace 2 get 1 add string 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub { dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put }for put setcolorspace }if currentdict Operator/imagemask eq{ AGMIMG_&imagemask }{ use_mask{ process_mask AGMIMG_&image }{ AGMIMG_&image }ifelse }ifelse end end }def /OPIimage { dup type/dicttype ne{ 10 dict begin /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /ImageType 1 def /Decode[0 1 def] currentdict end }if dup begin /NComponents 1 cdndf /MultipleDataSources false cdndf /SkipImageProc{false}cdndf /Decode[ 0 currentcolorspace 0 get/Indexed eq{ 2 BitsPerComponent exp 1 sub }{ 1 }ifelse ]cdndf /Operator/image cdndf end /sep_colorspace_dict AGMCORE_gget null eq{ imageormask }{ gsave dup begin invert_image_samples end sep_imageormask grestore }ifelse }def /cachemask_level2 { 3 dict begin /LZWEncode filter/WriteFilter xdf /readBuffer 256 string def /ReadFilter currentfile 0(%EndMask)/SubFileDecode filter /ASCII85Decode filter /RunLengthDecode filter def { ReadFilter readBuffer readstring exch WriteFilter exch writestring not{exit}if }loop WriteFilter closefile end }def /spot_alias { /mapto_sep_imageormask { dup type/dicttype ne{ 12 dict begin /ImageType 1 def /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /MultipleDataSources false def }{ begin }ifelse /Decode[/customcolor_tint AGMCORE_gget 0]def /Operator/image def /SkipImageProc{false}def currentdict end sep_imageormask }bdf /customcolorimage { Adobe_AGM_Image/AGMIMG_colorAry xddf /customcolor_tint AGMCORE_gget << /Name AGMIMG_colorAry 4 get /CSA[/DeviceCMYK] /TintMethod/Subtractive /TintProc null /MappedCSA null /NComponents 4 /Components[AGMIMG_colorAry aload pop pop] >> setsepcolorspace mapto_sep_imageormask }ndf Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put /customcolorimage { Adobe_AGM_Image/AGMIMG_override false put current_spot_alias{dup 4 get map_alias}{false}ifelse { false set_spot_alias /customcolor_tint AGMCORE_gget exch setsepcolorspace pop mapto_sep_imageormask true set_spot_alias }{ //Adobe_AGM_Image/AGMIMG_&customcolorimage get exec }ifelse }bdf }def /snap_to_device { 6 dict begin matrix currentmatrix dup 0 get 0 eq 1 index 3 get 0 eq and 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop { 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def 0 0 transform AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch itransform/AGMIMG_llY exch def/AGMIMG_llX exch def 1 1 transform AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch itransform/AGMIMG_urY exch def/AGMIMG_urX exch def [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat }{ }ifelse end }def level2 not{ /colorbuf { 0 1 2 index length 1 sub{ dup 2 index exch get 255 exch sub 2 index 3 1 roll put }for }def /tint_image_to_color { begin Width Height BitsPerComponent ImageMatrix /DataSource load end Adobe_AGM_Image begin /AGMIMG_mbuf 0 string def /AGMIMG_ybuf 0 string def /AGMIMG_kbuf 0 string def { colorbuf dup length AGMIMG_mbuf length ne { dup length dup dup /AGMIMG_mbuf exch string def /AGMIMG_ybuf exch string def /AGMIMG_kbuf exch string def }if dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop } addprocs {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage end }def /sep_imageormask_lev1 { begin MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ { 255 mul round cvi GrayLookup exch get }currenttransfer addprocs settransfer currentdict imageormask }{ /sep_colorspace_dict AGMCORE_gget/Components known{ MappedCSA 0 get/DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Adobe_AGM_Image/AGMIMG_k xddf Adobe_AGM_Image/AGMIMG_y xddf Adobe_AGM_Image/AGMIMG_m xddf Adobe_AGM_Image/AGMIMG_c xddf AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer currentdict imageormask }{ currentcolortransfer {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }{ MappedCSA 0 get/DeviceGray eq{ {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer currentdict imageormask }{ MappedCSA 0 get/DeviceCMYK eq{ currentcolortransfer {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }{ currentcolortransfer {pop 1}exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }ifelse }ifelse }ifelse end }def /sep_image_lev1_sep { begin /sep_colorspace_dict AGMCORE_gget/Components known{ Components aload pop Adobe_AGM_Image/AGMIMG_k xddf Adobe_AGM_Image/AGMIMG_y xddf Adobe_AGM_Image/AGMIMG_m xddf Adobe_AGM_Image/AGMIMG_c xddf {AGMIMG_c mul 1 exch sub} {AGMIMG_m mul 1 exch sub} {AGMIMG_y mul 1 exch sub} {AGMIMG_k mul 1 exch sub} }{ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} }ifelse AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end }def /indexed_imageormask_lev1 { /indexed_colorspace_dict AGMCORE_gget begin begin currentdict MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get/DeviceGray eq{ {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get/DeviceCMYK eq{ currentcolortransfer {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll setcolortransfer tint_image_to_color }{ currentcolortransfer {pop 1}exch addprocs 4 1 roll {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll setcolortransfer tint_image_to_color }ifelse }ifelse }ifelse end end }def /indexed_image_lev1_sep { /indexed_colorspace_dict AGMCORE_gget begin begin {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end end }def }if end systemdict/setpacking known {setpacking}if %%EndResource currentdict Adobe_AGM_Utils eq {end} if %%EndProlog %%BeginSetup Adobe_AGM_Utils begin 2 2010 Adobe_AGM_Core/ds gx Adobe_CoolType_Core/ds get exec Adobe_AGM_Image/ds gx currentdict Adobe_AGM_Utils eq {end} if %%EndSetup %%Page: (Page 1) 1 %%EndPageComments %%BeginPageSetup %ADOBeginClientInjection: PageSetup Start "AI11EPS" %AI12_RMC_Transparency: Balance=75 RasterRes=300 GradRes=150 Text=0 Stroke=1 Clip=1 OP=0 %ADOEndClientInjection: PageSetup Start "AI11EPS" Adobe_AGM_Utils begin Adobe_AGM_Core/ps gx Adobe_AGM_Utils/capture_cpd gx Adobe_CoolType_Core/ps get exec Adobe_AGM_Image/ps gx %ADOBeginClientInjection: PageSetup End "AI11EPS" /currentdistillerparams where {pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse { userdict /AI11_PDFMark5 /cleartomark load put userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put} { userdict /AI11_PDFMark5 /pdfmark load put userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse [/NamespacePush AI11_PDFMark5 [/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5 [{ai_metadata_stream_123} currentfile 0 (% &&end XMP packet marker&&) /SubFileDecode filter AI11_ReadMetadata_PDFMark5 application/postscript Kelik Crunchy Data Solutions, Inc. Adobe Illustrator CS3 2014-12-19T19:56:59+07:00 2014-12-19T19:56:59+07:00 2014-12-19T19:56:59+07:00 256 80 JPEG /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAUAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXz3/ AM5Z+ctZ0y20HRNPlktY7mR76e4iYoxe2ZPRVWG/wO3P58TikJp+W/8Azkn5YuPJ1u3m69MXmKCQ 2zwQwySyXXEApMiQqwXmDQ1oOQPtitMl/wCV1S3Z/wBwvknzJqKdFuGsxbwtWlOLyP8AwxQv/wCV pecv/Lc6z/yMt/8AmrFVjfnVJZlRrPkrzFYKx4+slolzEDSu7RSV+W2KphpP55flfqM/1b9Nx2N3 UK9tqCSWbqx6AmdUT/hsVZvbXVtdQrPbTJPA+6SxsHQj2Zag4qqYq7FXYq7FXYq7FUv1PzF5f0oE 6nqdpYBd2NzPHDTav7bL2xVjN3+dn5UWpIl8z2TEGn7pzMPviD4qgE/5yG/Jx5jCPMaB1qCWt7tV 28HMIU/fiqZWn5zflXdkCLzRYLypT1pRD18fV4UxVkuna9oepgNpuo2t6pFQbaaOUU6/sFsVR2Ku xV2KuxV2KuxV2KuxV2KuxV2KuxV2KsM87fm75H8nXKWWq3jS6pIAY9MtEM9yQ32aquy8u3IiuKvM /Mmi63+bGo2V95ksG0Hyxp5ZtN01+P6RmMlObztT9wrcR8HXb5NhVlOlaX5T8n2ypp8dro8dKery WJ27fFKx5ufmcUM58rapJfxSOky3Vquyzqwccv5eQJrtiUvO/wA8vN3mzRHiTRWKQrb3FzcOE9Q0 gWIJGqkFau0xYkg/Cppir55vPzFvzevfa3NcX/mG0e2lsXr6UNrKkyyyokS8UWka+m9V5Ek9h8Sm n1JqOj6frcQtdSsIdTjpRYrmJZ6D/J5Biv8AscWLFm/I6bT52vfJOo6j5TvSSxit5Wms3NP27eVq mvu5A/lxSif+VgfnD5MX/ndPLg8w6Qn2tb0QfvVX+aW3IX6dkX3wKzHyp+cH5deaEX9Ga1Atyw3s 7lvq84Phwk48v9jUYqitZ/NL8utGqNR8x2ETjrEk6Syj/nnEXf8ADFWB6n/zlH5GWYWvl+x1HzBe PURR20BjRv8AkZ+9+6M4rSBfzn/zkj5oH+4Hytb+WLN+lzqLAzLXp8M/A/8AJDFUO35Gfm7r+/mz 8wpkjbd7Wx9Z4jXtx5Wsf/CYqjdN/wCcS/y9gPPUL7Ur+UmrVljiQ19kj51/2eKbT63/AOca/wAn Ik4vojznb4pLu7B/4SVBii01i/Iz8pYgQvlm0Nf5/Uf/AIkxxVQufyA/J+5BEnluFankfSmuYt/+ ecq7e2KpBf8A/OLH5XzkNZnUNNlU8o3t7nkVYUof3yy9xitoQfkd+Y2ifF5T/Ma+ijX7Fnfq0sQP /Bun/JLFV6a7/wA5L+Wx/uT0TTfNlrH9uaxkEM5p4D93+EGKo/S/+cjfKa3KWPmvTtQ8p6g2xj1C B/Sr7Oq8+vdowMVemaRrej6zZre6TewX9o/2Z7eRZV3FaEqTQ+2Ko3FXYq7FXYq7FXYq7FXYqh9R uxZafdXhXkLaGSYr4+mpan4Yq+Nvyk/OCx0DzLruoeaopLs+YeLT6nEoknhlVmbZWI/dv6lGAPYY pIe6WPnfRtS8t3uv6b6sthaQyTCSaJ4A/pozsFMgWtONCRt74WL5n8tfmR5ts/Ok3mSCK31TXbxH ijN7GZljLspDQryXgU48V3oBtgZU+iPym/OXzH5n0S/tr97WfzBbfvraVYpYoWheqrzXinSRWUlD hQUPafnDr/mPT7uW18h6le6zprvbXL2bKbP1oyVIErLyr/khSRirFPyd/LzRNa1PXvMPnHRZdLuN KvTOY7tHggiRwZFQIVjDvGRvyB6rthhEyNAWSxyZIwiZSNRDONf/ADhuFd7Xy1ClnaIaC7kUPK9P 2grVVQf8oE/LpnS6XsWAF5dz3dHiNf7TZJExwDhj/OO5Pw5D7fgx/wD5Wh515cv0o9f9SKn3cKZn fyZp/wCb9/63Vfy5rf8AVD8o/qZP5Y/Oq7jmS38wIs9uxAN7EoWRK92RfhYf6oB+eYGq7FiReLY9 zt+z/abICI5xxR/nDmPeOR+FfFNPP/5J/l153s21JUi07UbhecOs2fFQ5YVDSoKRyg+J+L/KGc2Y EGiN3tI5ImIkD6Swzyh/zi95STSprPzRcR3eomUm1v8ATbmRGMRAorRSKUDKR1ANa+26YEdEjID1 Zf5E/KzX/wAvNVWPQNRj1XyzdsFvLC9RIruCrf30VxGtJONalGCgjpvkWT01rm2R+DSor/ylgDv7 ZIRPcxMwNrVCQASTQDck5Fkppc2z14So3EVajA0HiaZIxI6MRMHq3HPBLX0pFenXiwNPuwGJHNRI HkV+Bkppc2ztwSVGf+UMCfuGSMSOjETB6qmRZKMt7ZwuEmnjjdvsq7qpPyBOSEJHkGEskRsSFYEE Ag1B6HIs0JqdrpF3bm21SG3uLeTrDdKjo1P8lwQcIiTyQZAc2DXP5IeSfrZ1Ty29z5Y1Jh8N5o05 hQ07NCecLL2I44kUkG070eXzlpUy2WtXdnrdtXiuoRcbO8Wv2TNbsxhf3ZHX2Q4REnoxMwOrJfrV tz9P1k9SvHhyFa+FMeE86XjF1apkWSk91aoxR5kVh1VmAP3E5IQJ6MTMDmVXIsnYq7FXYqwn81Pz B8s+VPL1zBqdwW1DUYJIdP06EepcTPIpQcUHRandjt9O2KvlfyD+WE2oeYYdLvY/V1YUlurLZorG Ift3hGxlP7NvXr/eUAKlSSy//nIDU7/QtF0ny1pjrBpF4jm5VTWaT0StFf8AyDyr7n2FMJQHlv5c webZfM8P+F4PX1AKyvzWsSxOOLmVtuC+9Qa9N8CS9c/Knybe2Hmq6+r3VtPeRRtFfTWAd7DToWcP Ipmk/vrqTjxSPfj1Y0FMKC9r053061W00+ltbqzMIogFHKRi7tt1LMxJPc4oYr+ePmO6gXT/AC6s po0Qur0g/bNSkamnYFWNPlnQdiYBvkPuH6Xk/abUn04hy+o/o/HuVPym/LixvLCPzBrUQuFmJ+o2 cgrHxU09SRT9qpHwg7U33qKHtTtKUZeHA13n9DHsTsWEo+LlF3yj0957/Lp193WjZWZtvqpgjNsB xEBReFPDjSmc/wAcru93rPDjXDQruefeZfyV0fU74XWl3X6JDA+tbpF6sZavVF5x8PkNvCmbfTdt ThGpDj+Lz+s9m8WWXFA+H3irH3ikl86eVrzyt+Ws+nzal+kLf65C9uDEYjFy5c1H7ySoJ37b18cy dJqxn1IkI8J4Te/P7HF13Z8tNojAy448Qraq7+p/FsK8q/l95i8z6fJf6aYBBFMYG9Vyrc1VXOwV tqOM2Wp7Rx4ZcMrurdJouxsuogZQ4aBrdF6B5n8y+RPMq6fqTSpaxSBL6xZucZjf9uPqK0PIFevT K9RgxarHxR59C5Gk1GbQ5hCd8IO8eld4+/ZV/MWdf+VrXHE1BnsiCOhBghyPZ/8Aig90vvLLtSN6 8/1ofdF7j5s/5RbWf+YG5/5MtnMaX+9h/WH3vZ68Xp8g/oS+4vCvyxfn/if20O7/AONc6ntE/wB3 /wAMi8N2Tj/vf+Ez/Qk3kzzjdeWtch1CIl4CeF5AP92RE/EP9YdV98yNZphmxmJ59Pe4/Z2rlpso mOXUd4/HJ9OWF9aX9nDe2comtrhBJDIvQqwqM4mcDEmJ5h9Jx5IziJRNgvnz8pXr+Y1ivh9Z/wCT Emdd2qf8Gl8PvD592FjrVw8uL/clP/zH/NbULnUZND8uSvFBG/ozXUNfVmkrQpGRuFDbVXdvl1w+ z+zYxj4mQb93d73adr9sTlPwsJIHIkcye4fjf3JTZfk756vrY3cywWsjjn6VzKfVau+4RZACf8oj MmfbGCJoWfcNnBx+zupmOI8IPmd/0oK31jz1+XuqJb3AkgjPxmzlbnbTLXcqQSv0qajvlk8eDVxs b+fUNePJqtBMA7Du/hP48t06/NzzNYa/ovlnVbI0jnF2JIyatHIvoB0b3B+8b5jdlYJYZ5In+j+l zO3tRHUY8U48jxfD6Xo/5UGv5f6SfFZj/wAl5M0/an+MS+H3B6DsKNaSA9/+6LyL82np+Y18vj9W /wCTEedB2Uf8Gj8fvLyPbuO9XPz4f9yE1/OnQ5dJ8xwa5a1jh1CjF1NClzFSpFOnJeLD3rlHY+o4 8Zxn+H7i5ntDozjzDLHYS/3Q/H3vTNF882N15FXzPcsAsEDG8RaCk8fwsgHYu1OI9xmkzaKUc/hD qdvc9Np+0Iy03jS6Df3j9Z5PH/I+nXfnbz011fj1IBIb3UDuV4hvhiFezNRafy18M6LWZhpsFR58 h+v8dXkOztNLWarinuL4pfq/RXc+ic499BWTzxQQSTzMEhiUvI56BVFST8hiryPR/wA8vM/mJ5rv yx5Hm1HQI5Xhj1KfULeyaUoeqRzqAfcBziqpdfmJ+aevXE2h+WfL9jpOqoB9ZvL3UrW8+rK3QtBa GRg2xpz+44q8q17yX508sTT+YPNMGotLO3+5Lzbbpb6hcxIfhPoD11+qLQ058CwGysv2cKvQ/wAs rzy3H5ekh8g6TcR6ZKxF75j1McDNJ0ZY1r6k7+NOKL/MOmKlS8/flL5V806PdzelLF5q4F7TVGmk dXdR8MMkbH00iPT4F+Hr1ryVBQun6T5E/KbyXHbawz3eo6qvH6lalheahMfhogUh0iBPEGo/4I7q obSfzJljjg8uaNpMV1rDt+68u6QqpYacp2C3FyFIaT/fr7/FsAO6r1rTtD1IxwSXhjhkAUydQC21 eINTSvSuKHkX5+M8fniPlsHsoWX5c5B+sZ1PYx/c/wCcf0PGe0Ef8IH9UfeXs/5eXdtdeRtCltiD GLKGNqf78iURydP8tWzn9dEjNO/5xeo7OkDp4V/NH2bFkOYrmOxV57+ercfIbn/l6h/jm07H/v8A 4F0/bovTH3hhH5T/AJneWPLPly5sNVaYXEl486CKPmODRRoN6jeqHNj2loMmbIJRqqr7S6rsftDF gxGMyb4r5eQYx5u8wXHn7zvGdKtWU3Hp2llCwHMqpJ5ycagfaLHwHfbMzS4hpsPqPLcuv1uU6zUD gHOgP2/jkjPzF/cfmxNBWvpy2CV8aW8AyGhN6W/633lu7Qh/hvxh90Xv/mz/AJRbWf8AmBuf+TLZ y+m/vY/1h972GqF4p/1T9zwL8ppOX+KfbQ7r/jXOn7SP93/XDx/Y8P73/hZY55Z8t33mGPU1sKvd afam7SACpkVXVXRf8ri1R40p3zLz6kYuHi5SNODpdDLMJcPOIv3s+/I/8wPql6PLGoSUtbpidOdj 9idusW/aTt/lf62avtfR8Q8SPMc/d+x3PYWu4D4MuR+n393x+/3sR8j6jNZeaby8hNJrWy1KaMja jR2krD8RmfrIiWIA9ZR+8Ot0FwzSkOcYzP8AsSyH8hNMtL/zZcXdwodtPtzJbqdwJHYIG+ha0zF7 ZymOIAfxFzPZ/TxlmMj/AAjb4voTOWeyUbmysroKLq3jnC7qJUV6V8OQOSjMx5GmMoCXMW8Y/wCc hbe1s08vx20McEbG8YpGoQE/6OK0UDfOg7EmTx2b+n9Ly/tFjA8OhX1f71j/AJY/O3VdA0K10iHT reeK1DBZXZwx5Oz7gbftZk6jsqOWZmZHdxdJ21PDjGMRBpjHmLzVceZPM51eeFIJbholMUZJUcFV Bud/2czMGAYcfADdW6/U5zqM3GRV0+kfzB8sjzH5UvdPRQbpV9eyO208YJUb9OW6H2OcnodR4WUS 6dfc9v2jpBnwmHXmPf8AjZ8wp5g1SDR7jRBKyWM86TzQGo/eRAr/ABFR7DwzsDiiZif8QFPBjLOO M4/4SbI8x+PsfRn5S+VDoHlSFp046hqNLm6qPiUMP3cZ/wBVe3iTnK9p6nxcu30x2D2vZGj8DCL+ qW5/UzXNc7R41+Zvn/V/MGu335ZeTXgS9Nq58wavOx420DcUkihVd2lIlAJHStNjUqqxXzL5x0b8 qfJ1h5WsXe+1WK3k+pKwAoZZHkaeanRfUduK7nt74V5sm/5x6uNL07yJa3cP+kz6k0k+p3NeUzXH qMG5k7kgUG/zxUvVrjVtHuLSWOYrNDIjJLbuteasKFSpFCCNsCsbtLNWSCw062WC0tkEVpaRDjHF EuwA/rhQnUehW9pbyXV5yn9JGkaGIE1CitAB8THwGKXztr/k/wA3a/5lS7vGEXmrzCzkuDyh0XSY qKEQggeqwbgCP8qndsVes+W9G8s+Q9AFjo4jtYYl5XupzFVeRqbu7tT7z9FBiqnonm7T/MuoPDo7 y6kkbcJdQQH6sJP5Flcj1G/1OQHemKGvzt8h3ms6Hb6tYqZ9T0qMidF+1LBSrED+ZCOQHep9s2vZ WrGOXDL6Zfe6jtjQnLASj9UfueZfln+bN35Qd7K7ia80WZubwKQJInNAXj5bGoG6kj5jvttd2eM+ 42m6fs7tA6f0neH3e56y35+/l4Lcyia5aQCv1cQNzJ8Kk8K/7LNN/JGe6ofN3p7XwVdn5PMvNv57 +Z9T1ANocjaTYRgqkYCPLIT+1IxUj5AdPfNtp+yscI+v1F0+q7Xyzl+79MU882xebx+Tz33mm7ln vr28t5IbeVVUww0biCFVaM1amvt3rmPpzi/NVjFAA/FydTHKdITlNyJHwecQ+VL+48lSeabastvb Xr2d5GBvGojjdJf9UtJxPhtm0OpAy+GeZFj7XTR0ROHxB0lR+zd6z/zj7qXlWe1ntI7OK38yQAmW 43aSeAn7Sly3HiaB1Wg6H5abtiGQEG7h9xd72IcXCQABkH2hhX5zGXTvzTubx1qH+qXMQOwZUiRP +JREZn9mHi04HvDru1IcGq4v6p+X9j1Xzh+avkyTyLfz2Wow3Fzf2jw21krL64edOA9SOvJeHKrV 8Ns0+m0GUZgCKAPPps7zVa/F4JIkCSOXXfyeZfk5aTvp/nG/APoQ6PNAzducqs4H3RHNt2nMcWMf 0w6fsjF6ch/o0jv+ccX5ea9S/wCYA/8AJ6PK+2v7uP8AW/Qz7BjWSXuQ/wCdnkWTy/rS6/pqGPTb +Tk/p1AguftECnQP9pfeo8Ml2XrPEhwS+ofaGHa2g8OfiR5H7Ckn5PQRaj58gs7gloru3vIpt9ys lvIrfgcyO0pGOEkdCPvaOycYlno9Qfub8vazqn5Z+fJkv4GdYS1texD4fVgcgrJHXbsHX7sGbHHV Ydj5j3rp5S0ec2PI+Y730Hpv5j+RtQshdwa3ZpHSrJPMkMi/6ySFWH3Zzc9FmiaMS9TDWYpCxIfN hHm7/nILRtNvUtdBt11dVB9e5LtFED2VPhJb3PTwrmfp+x5SFzPC67U9swgagONhv5w69qut+XvK mq6lYjT5Lv69JBbhix9E/V+DmoX7XUe1MzuzcUcc8kYm64f0uv7WnLLDHKQ4b4tvkz/8rvJPlDUf IWk3t9pFrc3UySGWaSMMzETOBUn2Ga7X6vLHNICRA/Y7Ps/RYZYYkxiTXc8o/NPTtO0r8yJ7LT7d LW1jNsUgiAVQWjQmgHiTm40GSU8FyNnd0vaGCMNTURQ2fUmci9i+XprSzn/Ot7KWJWtZNcKPDSil Tcbig7Z1omRpLHPg/Q8ecMTraI2431DnJPYMU1zSfzKuKtpHmLT7LwjfTHf/AIdrpv8AiOKvmy+/ 5x1/Ou61u61lzbfpG6nkuZLpLpY3MkrFmYcfs1LHpim0Jcf84yfnBczNPcR200zmryyXaszHpuxq Titpr5e/Iz8//LkjvotxDZeoayRpdRtGxHdo3DIT8xitsiuvJf8AzlLcQCE31nEKcWeJ7VHb35CO oP8Aq0woekeRIvzM0mwtrfW9ESWeCJIZri3vIpPWCKAHIlMZDGm/xHFWeTSX89kypbGGWRaFXdPh r13UsPuwKkY8t34YuETmQAWqKkCtBX2qcNqhdV8ktq2nz6fqFvFcWlwpSWNyCKHuK9COx7Yqhfyd 8han5Q8pWmmau8Ut7bGUK0JqoWSV3G9BU8WGBWfYq8686fkh5W8x3Ml9bO2k6jKS0ssChonY9WeE 8fi91YV75stN2pkxij6out1PZePKb+mXkwof84z3/q0Ovxel/P8AV25df5fUp+OZ38tj+b9rg/yF /T+z9rOfJf5KeVfLdxHfTF9U1KM1jnuABHGw6NHEKgH3Yn2pmBqe08mUV9MXP03ZmLEb+qXmnP5k eT7jzb5abSLe5S1kaaOX1ZFLCiV2oPnlOi1Aw5OIi2/WafxsZhdID8v/ACLF5P8AKV/pOsXUF3a3 NxJNPIw4RenLFHEUfmafsfjk9ZrPFyCcdqDXo9H4OMwJ4rLC9N/I7UtP1+PXvK3mCCO2imMtgWVp P3daGN2RqOtKqfEZmy7VjPHwzjd83Dh2SYZOOEqZ359/LXR/OlnD9dY2mp260gvoRyK13KMppzSu 9Kg+BG9cHSa2WA7bxPRztXooZx6tiOrzOD/nGnUzdAXGtwi1B3eOFzIR/qkhQf8AZZtD23Gto7ur HYe+8tvc9W0zyHpOjeULzy5pA9JbuCaOS5k+J3lmjKepIRSv0ds1GTVynkE5dC7fHpY48ZhFjP5X flLf+TNYur+51CK7S4tzAEjRlIJdXrUn/JzK13aAzxAAqi4uh7POCRN3bPde0TT9c0i60nUE9S0u 0KSDuO6svgysAR75r8WWWOQlHmHPy4oziYy5F5n5A/JLUfK3mu31qXVIrqG3WVfSWNlY+pGyA7kj 9rNpq+0xlxmNU6zR9l+Dk4uK2Zeefy68vecbVV1BDDewgrbX8NBKg68TXZ0r+yfopmFpdZPCfTy7 nN1WjhmFS597ym4/5xp1lZiLbWreSGuzSROjU/1VLj8c247bjW8S6g9hnpL7GU+T/wDnH7QdJuo7 3Wbk6vPGQ0dvw9O3DD+ZSWMlPcgeIzE1Pa85iojhH2uVpuyMeM3I8R+xNvzW/LO887DSha3sdkNP 9fl6iM3L1vTpTj0p6WU6DWjBxWLuv0t2v0Pj8O9cN/bTJPJHl6by55WsNFmmW4ks1dWmQFVblIz7 A/62YuqzeJkMx1crTYfDxiPcwPz1+S+peZfOEuvQ6nDbxSejSB42Zh6SKp3BpvxzYaXtKOLFwEXz cHVdmnLl47rk9YzUO1eT/wDKl9S/5WJ/iv8AScPofpH6/wDVfTbnx9Tnw5VpXNv/AClHwPDr+GnV fyafH8W+t09YzUO1dirsVdirsVdirsVdirAPzou3tfLVpIjlCb1FqDT/AHVIe3ywhUr8tnydp7rr Fprkt/fWNpNdyafyBDcIGMi/ZHT54oVB+eEH1Rbs6JOIDL6TTep+7GwIAfhQv1+H8caSlWveeNWn 89afJZW1xLa8YZbHT/UZBcq6llkC0oOQbwPTFDKNT/NRYb24sdN0ibUrmxjMmohH4rAVH7xSeDk8 DsTQb40lR1L85NItdM06/gtHuBfhw8fqBDE0RUOrfC1T8VR4jGlU5vzjhVdPMWjzSvqRb6tEJBzZ RMYRRQhqxZT8I+VcaVVsfzes5V1KK+02WxvtOiaX6o71ZwhAZalUKsK1pTGlSy4/NfStd0XUYrjS phawQCW5CzAbfWI4kVW4dSZAT/HGkIy3/MrStI0LQ7XTtMkludQQta6eJq8VMzxrWVlJJd1P7OKp pdfmXDp2iNfaxpk9hfG4a2g01jWSQqqOXViqjhSTrTGkqvlv8wl1TW30PUdNl0jU+HqQQTMWLrx5 HqqUPHfGlYn+YvKb8xdM02W4eC3vYoFZ0anFXldCd9u2IQo+XPMZ0Hzxd6WdVa+0OCOV55y3NAsU Bl5Chb4lYcPh6nFU5X85o/SF/JodwuiGb0BqAcH4qVpw4ha03pzxpKP1T80YI9ZTSNE059ZumjSW scgjUrJGJRx+F+XwMCcaViXmjzxr8/mjRqafdWYDW8kelvIy/WH9WtKcQKlvg3GKGU6h+abwXn6O tdFmu9Tgtxc6hbCQKIP3YkdOXBixQNQ/CN9saSgU/OcfoaTVZdFeOD1kt4CJ6rI7K7MORjFOAQV2 PXGlRcX5w6QdEk1SWzkj/fC2tLfkGeaQIryU2AVU5jf3HjjSrovzLubsappkmmTaXr0FpLPZW0h9 RpCsZcUBRPiA+LjTfGlYT5OOha2XW+1650/zFJL/AKMzNRHrSnxHcuWJ/aHtXFCdXVzf+dPzCvNC N3Jb6XpxkEkcZp8MDCNzToWaRupGwxVC3Gqah5U8zah5cN5Jdadc2kvpCQ1ZS8DMjezArxNOoxVk P5K3j3WhXzu5crdUBJr/ALrXxxKXoeBXYq7FXYq7FXYq7FXl3/OQzzL5PsTEjO36QjqEBJp6E3hh CsWsvPfky40a903TPLE9pq82lXcP10QIvxLaOzmqkt8XDFUrt55m/Iq5Jif1l1gKEKNyr6aHYEeB xQu1bWZtD8w+RdevrWY6eul2PL0lLMTEGjZRy4jn0NK98VQesW8Giebr648ywavbaJqpe6s7rTyi uUuG9RVkLho2Kh+LqG2PiKYqpa1Dpcdp5abSbS/XTLu9uJGGoBWmI5wRkn0kVQpCbDf54qy3859a g0n8zPK93OGaC3W3nlWMcnKR3ZZgo2qaDbFKR3w1nzRqPmjzqmnXFnpKWbi29ZWUyN6a26BR+0eI LNSoBxQnNm0n/Qut86ROJzODInFuRP12MVpT+UDFKR6le+WJfJegWus21/b6glhJLZalbRepGztd TL9XlRuPdQdj+127qEDc6P581HyDZazcQ3dzaafdTCGJw7TrBKkX7xAat6YaIjpt16Yqyn8tJ/Jm pedNPm0lNel1GBZWuJr94GgiIiZSjMicmryoPs/wxSu/NC0OqfnBoumXMcjWNxFawSMgIojzScvi A9zirNdS/LHR9O8oa1ZeXrY/pG8t2VJZHLyOUIdYgx2UMVptSvfFXkknmm5l/L+28ixaTfHzCl6T JEYWHw82cbfb5VbjTj2xQv8AOY0WxgispoNRsvOGmQWtvzijL2106QoKq3wspShUMvUL3xVV8wXv mTSG8ieYPMUNzL6KpJcM6ky8Ybwyojlv2zEy05b+OKoXz95w02Pz1Jf6XNeaXBqNlC+oOgR5St1C rkelzUCsbJVS/wBrfwxSj/Ndx5bP5VaSPK8817AupN9caRKTCdoWJ9RFqF+EClKinc4oZN+bmh6r c+TfLGp6ZbyT2+lwAXMUAJkWOWKIq4ABNF9Lc02rilj/AJW1vysmrjWfL9j5g1PWNMt5p5YrxoWi UrEUMZaONpGrzp28fbFCX+cNe0rztqdjD5W8u3Vrrkr0vjwCqxalOQQldupkbjt1xSndxcax+Wf5 iXOs6nZz32i6gkgmvYF51ExWV6E0UMsq9GIqMVS201aTz/501vzBbp6Gn6fYTypC7L6pCWzJEvEG pLP8RpsOlemKFv5afmrH5S0u6srrSLu7kuJ/WV4xxAHBVp8Q/wAnFL6OwK7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq8x/MH8s/MnmH8x/K/mXT7i0i07RpLZ72Kd5VmYQ3XrN6apG6mqdKsN8VenYq7FXY q7FXYq7FXYq7FXYq7FXkuuflF5ri84ar5h8razZwx64hj1Gz1K2FwoDkM3AkNyHJQQpA+nCrJ/ys /LeDyJoMlh9bN9eXUnr3dyV4KW4hQqJVqKtO5qfwwKzPFXYq7FWmVWUqwDKwoyncEHscVYNd/kx5 Hl8zWHmK1tW0+8sp1uWitTwgmZN15xU4j4qH4aV74qzrFX//2Q== uuid:9FF31C844B89E4118B38AD403A6910BE uuid:A0F31C844B89E4118B38AD403A6910BE uuid:9EF31C844B89E4118B38AD403A6910BE uuid:9DF31C844B89E4118B38AD403A6910BE 15.000000 6.000000 Centimeters 1 False False Cyan Magenta Black Default Swatch Group 0 % &&end XMP packet marker&& [{ai_metadata_stream_123} <> /PUT AI11_PDFMark5 [/Document 1 dict begin /Metadata {ai_metadata_stream_123} def currentdict end /BDC AI11_PDFMark5 %ADOEndClientInjection: PageSetup End "AI11EPS" %%EndPageSetup 1 -1 scale 0 -118.425 translate pgsv [1 0 0 1 0 0 ]ct gsave np gsave 0 0 mo 0 118.425 li 394.977 118.425 li 394.977 0 li cp clp [1 0 0 1 0 0 ]ct 19.7549 69.0186 mo 25.5771 66.1777 li 28.5205 58.6543 li 25.5771 66.1797 li 19.7549 69.0186 li cp 82.2852 15.5752 mo 84.7217 13.3574 li 96.2686 10.7109 li 96.3955 10.8467 li 88.6777 13.9385 li 88.6777 13.9385 99.0977 13.165 102.572 15.0986 cv 106.043 17.0293 106.043 20.1211 106.043 20.1211 cv 106.075 20.1699 li 105.454 21.5303 104.063 23.8545 101.815 23.8545 cv 98.6377 23.8545 96.1934 23.1201 94.7256 24.5859 cv 93.2588 26.0537 92.2822 28.9873 92.2822 28.9873 cv 93.9922 31.1865 li 93.9922 31.1865 100.593 29.2314 101.815 29.2314 cv 103.037 29.2314 107.193 31.6758 107.193 31.6758 cv 107.927 28.7422 li 107.927 28.7422 111.35 30.21 114.527 31.1865 cv 117.706 32.165 118.438 32.6543 119.66 32.165 cv 120.883 31.6758 122.839 29.4766 122.839 29.4766 cv 122.839 29.4766 118.683 29.7207 116.728 28.0088 cv 114.772 26.2979 114.283 21.6523 114.772 19.4531 cv 115.262 17.2539 116.728 15.7861 116.728 15.7861 cv 116.728 15.7861 115.731 16.7813 114.257 18.042 cv 114.477 16.5674 115.365 14.8818 118.008 13.9385 cv 126.554 10.8828 133.218 12.0322 141.788 14.5225 cv 149.307 16.709 157.038 19.4346 163.837 22.2197 cv 163.428 22.1738 li 151.748 20.9717 140.362 22.8691 131.74 31.4922 cv 130.414 32.8193 129.225 34.2129 128.177 35.6689 cv 127.334 35.2031 126.146 34.5889 125.065 34.1943 cv 123.127 33.4883 120.129 34.1943 118.017 34.373 cv 115.901 34.5498 113.608 40.0205 113.608 40.0205 cv 114.137 40.374 117.838 38.7861 124.184 39.667 cv 124.722 39.7422 125.196 39.8203 125.615 39.9014 cv 123.506 44.1309 122.433 48.8018 122.433 53.8604 cv 122.433 54.5771 122.454 55.2881 122.497 55.9922 cv 116.783 56.8545 114.653 58.2793 109.652 60.6357 cv 103.88 63.3516 93.6904 75.2373 93.6904 75.2373 cv 93.6904 75.2373 100.822 70.8223 105.916 66.748 cv 111.01 62.6729 121.879 60.9736 121.879 60.9736 cv 124.131 64.3604 li 124.386 65.0996 124.669 65.8281 124.981 66.543 cv 124.364 67.5469 122.562 70.4414 117.802 77.9531 cv 116.644 79.7852 116.043 81.2168 115.837 82.3408 cv 14.7275 82.3408 li 16.8047 75.5186 li 22.6475 76.7725 li 22.6475 76.7725 21.5977 73.8828 21.5977 72.3057 cv 21.5977 70.7305 23.1729 70.2031 25.5342 68.8906 cv 27.8926 67.5771 29.4668 64.6865 30.5186 61.7979 cv 31.5703 58.9082 39.6992 61.0098 45.7363 59.4326 cv 46.0195 59.3594 46.2881 59.2881 46.5459 59.2178 cv 44.8896 60.6709 40.3984 65.1582 44.5313 67.8672 cv 49.5156 71.1377 57.25 72.3398 58.626 71.8252 cv 60 71.3105 62.5762 67.5225 67.7354 62.5322 cv 72.8916 57.541 73.374 55.9209 76.2959 55.0615 cv 79.2188 54.2002 82.9795 60.835 85.6982 56.0654 cv 86.1523 55.3848 81.3145 51.3447 80.2832 51.3447 cv 79.251 51.3447 72.7188 54.4404 69.625 56.6797 cv 66.5322 58.918 61.7207 62.3594 61.7207 62.3594 cv 61.7207 62.3594 58.7979 58.4023 55.876 57.8838 cv 54.1602 57.5811 51.4395 57.9307 49.4844 58.2705 cv 51.9932 57.2949 52.7881 56.3555 56.2275 54.4434 cv 60.9512 51.8145 82.9863 31.8506 82.9863 31.8506 cv 82.9863 31.8506 81.4131 32.1123 77.4775 32.1123 cv 73.542 32.1123 71.4443 29.4863 71.4443 26.8584 cv 71.4443 24.2334 75.1162 24.2334 77.4775 23.1816 cv 79.2549 22.3916 82.8809 15.54 82.2852 15.5752 cv cp 74.9365 44.0313 mo 74.9365 44.0313 67.5205 53.3809 63.9746 54.3496 cv 60.4277 55.3154 58.8164 55.9619 58.8164 55.9619 cv 58.8164 55.9619 63.9746 58.2188 67.5205 56.2822 cv 71.0674 54.3496 72.0342 52.4131 72.6797 50.8027 cv 73.3252 49.1885 74.6143 44.6758 74.9365 44.0313 cv cp 111.285 40.6963 mo 111.285 40.6963 105.684 47.4189 101.481 49.6602 cv 97.2793 51.9023 88.5947 58.9043 87.4736 61.7051 cv 87.2842 62.1797 86.9492 62.8242 86.5244 63.5664 cv 84.6221 64.4219 70.2422 70.9756 68.5449 74.0361 cv 66.7266 77.3135 73.2734 81.6855 78.0039 81.6855 cv 82.7324 81.6855 83.4619 81.3184 84.1875 79.5 cv 84.9141 77.6787 87.8252 68.5713 87.8252 68.5713 cv 87.7754 68.3389 li 89.3232 65.0498 91.3223 60.666 97.2793 56.9453 cv 104.001 52.7422 110.725 47.4189 111.005 44.6172 cv 111.285 41.8164 111.285 40.6963 111.285 40.6963 cv cp 183.195 25.4912 mo 185.947 24.9873 li 187.441 29.9678 li 183.195 25.4912 li cp false sop /0 [/DeviceCMYK] /CSA add_res 0 0 0 0.2 cmyk ef 61.3281 44.1543 mo 55.1865 48.2129 50.9814 52.3965 43.6748 55.8047 cv 43.1602 55.9365 38.2422 57.0195 32.9072 55.5977 cv 27.6162 55.1182 25.0918 57.7158 24.3955 59.8018 cv 23.7012 61.8877 23.7793 64.6689 21.6934 66.0586 cv 19.6074 67.4502 15.0879 70.9268 14.043 75.4463 cv 13.002 79.9658 12.6543 82.252 12.6543 82.252 cv 33.7949 82.2422 54.9355 82.2305 76.0742 82.2207 cv 62.0518 81.6533 62.1406 78.1113 63.0674 75.4463 cv 58.3457 79.0215 35.4531 79.5947 39.7725 66.0586 cv 41.1631 62.584 44.292 59.8018 44.292 59.8018 cv 44.292 59.8018 38.0322 60.4971 36.9912 64.6689 cv 35.9492 68.8408 30.6631 70.9268 30.6631 70.9268 cv 28.3242 79.9326 11.4922 72.9551 24.752 68.2148 cv 26.4902 66.1299 27.6045 66.0586 27.6045 64.3213 cv 27.6045 62.584 27.6045 58.4102 33.5137 58.4102 cv 39.4238 58.4102 44.292 59.4531 50.8975 55.6299 cv 57.5049 51.8047 80.4512 33.3779 80.4512 33.3779 cv 80.4512 33.3779 73.498 34.4199 70.0195 31.9863 cv 66.5449 29.5527 67.2393 24.6846 70.3672 24.6846 cv 78.1592 23.0488 79.8252 18.127 89.7666 13.8242 cv 102.715 9.4541 122.715 8.00391 139.905 12.168 cv 151.376 14.9502 179.54 26.0762 186.146 31.6406 cv 187.235 32.5537 189.251 31.7793 190.784 31.7793 cv 188.468 29.2822 188.928 27.8154 188.928 27.8154 cv 188.928 27.8154 196.228 28.1611 201.444 30.249 cv 204.53 31.4834 206.762 32.4756 208.071 33.0791 cv 208.071 32.1699 li 206.768 30.7266 204.817 28.6729 203.53 27.8154 cv 201.444 26.4238 199.009 26.4238 199.009 26.4238 cv 216.259 20.8223 240.3 15.5498 258.23 15.1221 cv 290.347 11.502 335.718 26.3477 356.526 33.5781 cv 336.302 20.4961 295.238 10.8369 268.892 9.73633 cv 254.43 8.62305 228.911 13.5596 218.132 16.6875 cv 207.355 19.8184 187.884 24.3379 184.06 24.3379 cv 180.234 24.3379 160.633 14.8193 149.639 11.8213 cv 130.78 6.52246 112.891 5.17871 94.0117 9.73633 cv 91.5771 10.083 90.5342 10.4307 90.5342 10.4307 cv 93.2041 8.8291 85.3389 1.17578 83.9268 0 cv 83.9268 0 79.7549 5.5625 79.7549 9.04004 cv 79.7549 12.5176 81.4922 14.9502 81.4922 14.9502 cv 81.4922 14.9502 76.9746 19.8184 72.1074 20.8613 cv 67.2393 21.9043 63.416 25.0332 62.0244 29.2041 cv 60.6338 33.3779 61.3281 38.9404 61.3281 40.6777 cv 61.3281 42.417 61.3281 44.1543 61.3281 44.1543 cv 0 0 0 1 cmyk ef 129.473 13.5596 mo 131.212 12.5176 132.951 11.8213 132.951 11.8213 cv 134.479 14.9385 137.84 24.3486 133.646 26.7725 cv 130.863 28.5107 127.735 28.8574 127.735 28.8574 cv 128.083 30.4805 128.432 32.1025 128.778 33.7236 cv 129.188 34.3369 li 128.866 34.7383 128.557 35.1436 128.259 35.5557 cv 126.76 34.6396 125.137 33.2842 124.954 31.6406 cv 124.606 28.5107 125.301 27.4668 125.301 27.4668 cv 125.301 27.4668 132.951 25.3809 133.3 22.251 cv 133.646 19.1221 132.302 14.1963 132.302 14.1963 cv 132.302 14.1963 126.344 17.3838 125.301 20.8613 cv 124.26 24.3379 122.521 24.3379 122.521 24.3379 cv 121.314 23.9268 120.583 22.5762 120.781 20.8613 cv 121.459 16.9961 125.854 15.7324 129.473 13.5596 cv ef 93.6631 25.0332 mo 88.7412 24.7881 85.1309 29.9209 85.3184 35.8115 cv 83.5811 39.2881 79.4092 43.1123 79.4092 43.1123 cv 79.8711 44.7354 80.334 46.3574 80.7979 47.9795 cv 79.0605 49.7197 77.3213 51.457 75.584 53.1963 cv 75.584 53.1963 79.4092 50.4141 82.5381 53.1963 cv 85.666 55.9766 85.666 57.7158 85.666 57.7158 cv 85.666 57.7158 93.5713 47.6592 97.7422 45.2246 cv 102.865 44.6953 105.324 42.8623 106.18 40.5537 cv 107.222 38.8145 106.227 36.4395 106.227 36.4395 cv 105.479 38.4326 99.54 43.2715 96.0967 40.5742 cv 93.9189 39.0029 94.252 36.5713 96.9131 34.6787 cv 99.5742 32.5439 104.094 33.0293 104.094 33.0293 cv 104.094 33.0293 103.051 28.5098 100.617 28.5098 cv 98.1826 28.5098 94.7061 30.5957 94.0117 28.5098 cv 93.3145 26.4238 93.6631 25.0332 93.6631 25.0332 cv ef 109.196 30.5498 mo 111.975 31.8916 112.797 35.0342 112.124 39.0215 cv 113.693 39.0215 115.053 34.5322 119.366 34.5322 cv 120.85 34.5322 125.373 34.9561 127.54 36.584 cv 128.06 35.8076 128.616 35.0469 129.213 34.3027 cv 127.66 31.5342 126.934 30.5957 124.954 30.5957 cv 122.867 30.5957 119.591 32.7021 116.238 32.3447 cv 114.019 32.1377 112.034 29.0205 109.196 30.5498 cv ef 110.699 40.3291 mo 110.699 40.3291 105.831 45.5459 102.008 47.6318 cv 98.1826 49.7197 96.791 52.1514 96.791 52.1514 cv 96.791 52.1514 101.659 50.7627 105.137 47.6318 cv 108.613 44.5029 110.699 40.3291 110.699 40.3291 cv ef 104.441 52.499 mo 104.441 52.499 94.0117 58.7588 90.5342 62.9297 cv 87.0566 67.1016 85.3184 72.666 85.3184 72.666 cv 85.3184 72.666 94.0117 64.6699 97.4873 60.8447 cv 100.965 57.0195 104.441 52.499 104.441 52.499 cv ef 112.437 54.585 mo 112.437 54.585 102.354 58.4102 97.4873 63.2773 cv 92.6201 68.1455 91.5771 75.0996 91.5771 75.0996 cv 91.5771 75.0996 100.269 63.9727 105.484 61.1904 cv 110.699 58.4102 112.437 54.585 112.437 54.585 cv ef 124.023 26.2744 mo 125.671 22.1143 127.697 17.6133 130.58 16.7393 cv 130.58 16.7393 128.472 20.0527 129.665 21.2432 cv 130.857 22.4355 133.499 19.3496 133.773 18.334 cv 134.604 21.8398 133.959 25.877 129.785 26.6719 cv 125.613 27.4668 124.023 26.2744 124.023 26.2744 cv ef 95.2402 38.0352 mo 94.8633 35.8799 101.882 31.4043 105.548 34.75 cv 105.546 38.6484 100.375 40.4961 97.3486 39.9102 cv 99.1445 39.248 103.124 38.0859 103.258 35.4717 cv 100.435 34.6602 97.7715 35.6523 95.2402 38.0352 cv ef 100.445 34.6191 mo 101.738 34.6191 102.785 35.6689 102.785 36.9609 cv 102.785 38.2539 101.738 39.3037 100.445 39.3037 cv 99.1523 39.3037 98.1045 38.2539 98.1045 36.9609 cv 98.1045 35.6689 99.1523 34.6191 100.445 34.6191 cv ef 78.1514 36.7051 mo 78.1514 36.7051 63.8828 49.2383 58.376 52.9971 cv 55.3379 54.9238 54.3398 55.3633 48.5801 56.7578 cv 56.5605 56.5664 62.7471 54.7754 68.1396 48.9883 cv 71.4883 43.6992 78.1514 36.7051 78.1514 36.7051 cv ef 119.811 69.3398 mo 115.662 70.9775 111.518 72.6172 107.37 74.2568 cv 110.973 75.8018 111.531 78.3604 111.531 82.0762 cv 111.531 82.0762 113.916 82.3115 114.244 80.0176 cv 114.571 77.7217 113.588 75.5215 113.588 75.5215 cv 114.773 73.1777 118.063 70.9775 119.811 69.3398 cv ef 49.6133 58.0928 mo 54.7139 57.292 59.9609 59.6162 62.0723 64.2617 cv 62.0723 64.2617 63.3408 62.0439 66.1943 59.8232 cv 69.0479 57.6035 75.3887 53.7988 75.3887 53.7988 cv 75.3887 53.7988 65.7305 58.5566 63.1943 58.2393 cv 58.2764 57.0146 55.5146 56.0361 49.6133 58.0928 cv ef 89.2461 26.9473 mo 90.6973 23.8691 99.5195 23.1572 103.017 23.8711 cv 103.017 23.8711 96.6387 24.3037 94.748 25.7363 cv 93.4551 26.7178 93.084 28.877 93.084 28.877 cv 92.2139 28.5762 90.1143 27.2471 89.2461 26.9473 cv ef 124.654 16.5166 mo 119.8 16.7285 117.983 20.7813 119.496 25.0674 cv 114.891 21.041 117.998 13.5713 124.654 16.5166 cv ef 15.0635 77.6289 mo 0 79.1367 li 18.0771 81.3965 li 15.0635 77.6289 li cp ef gsave 154.107 80.6592 mo 146.741 80.6592 140.455 78.0361 135.249 72.7852 cv 130.044 67.5371 127.441 61.2266 127.441 53.8604 cv 127.441 46.5361 130.055 40.2617 135.283 35.0342 cv 140.51 29.8057 146.786 27.1914 154.107 27.1914 cv 159.447 27.1914 164.343 28.6592 168.801 31.5918 cv 173.255 34.5264 176.542 38.3525 178.66 43.0742 cv 167.476 43.0742 li 165.931 41.2217 163.958 39.71 161.555 38.541 cv 159.149 37.3711 156.668 36.7881 154.107 36.7881 cv 149.389 36.7881 145.362 38.4521 142.032 41.7842 cv 138.7 45.1123 137.036 49.1377 137.036 53.8604 cv 137.036 58.624 138.692 62.6621 142 65.9688 cv 145.308 69.2793 149.346 70.9316 154.107 70.9316 cv 156.668 70.9316 159.138 70.3477 161.521 69.1797 cv 163.903 68.0098 165.888 66.4775 167.476 64.5801 cv 178.66 64.5801 li 176.586 69.3438 173.321 73.2168 168.865 76.1943 cv 164.41 79.1709 159.49 80.6592 154.107 80.6592 cv cp 360.11 36.9668 mo 368.553 36.9668 li 377.102 54.9521 li 386.04 36.9668 li 394.977 36.9668 li 380.688 64.8281 li 380.688 80.6592 li 372.579 80.6592 li 372.579 64.2754 li 360.11 36.9668 li cp 327.471 36.999 mo 335.63 36.999 li 335.63 55.0244 li 349.135 55.0244 li 349.135 36.999 li 357.295 36.999 li 357.295 80.6592 li 349.135 80.6592 li 349.135 63.2939 li 335.63 63.2939 li 335.63 80.6592 li 327.471 80.6592 li 327.471 36.999 li cp 304.758 81.1563 mo 298.62 81.1563 293.383 78.9697 289.047 74.5957 cv 284.71 70.2227 282.542 64.9668 282.542 58.8281 cv 282.542 52.7285 284.719 47.5 289.074 43.1455 cv 293.429 38.791 298.656 36.6133 304.758 36.6133 cv 309.205 36.6133 313.285 37.835 316.995 40.2783 cv 320.708 42.7227 323.446 45.9111 325.209 49.8428 cv 315.893 49.8428 li 314.607 48.2988 312.964 47.04 310.959 46.0674 cv 308.957 45.0947 306.89 44.6064 304.758 44.6064 cv 300.826 44.6064 297.472 45.9951 294.697 48.7676 cv 291.923 51.543 290.536 54.8965 290.536 58.8281 cv 290.536 62.7979 291.914 66.1621 294.671 68.918 cv 297.426 71.6748 300.788 73.0527 304.758 73.0527 cv 306.89 73.0527 308.947 72.5645 310.933 71.5908 cv 312.916 70.6182 314.569 69.3398 315.893 67.7598 cv 325.209 67.7598 li 323.482 71.7295 320.764 74.9551 317.052 77.4365 cv 313.339 79.915 309.24 81.1563 304.758 81.1563 cv cp 245.772 36.999 mo 253.104 36.999 li 272.068 64.7813 li 272.068 36.999 li 280.227 36.999 li 280.227 80.6592 li 272.675 80.6592 li 253.931 52.9297 li 253.931 80.6592 li 245.772 80.6592 li 245.772 36.999 li cp 213.08 36.999 mo 221.241 36.999 li 221.241 62.6328 li 221.241 64.1768 li 221.241 66.125 221.432 67.7695 221.817 69.1104 cv 222.203 70.4521 222.93 71.4268 223.997 72.0313 cv 225.062 72.6396 226.146 72.9424 227.248 72.9424 cv 228.424 72.9424 229.546 72.6484 230.61 72.0596 cv 231.678 71.4717 232.422 70.4141 232.843 68.8906 cv 233.266 67.3652 233.478 65.7207 233.478 63.9561 cv 233.478 62.8535 li 233.478 36.999 li 241.692 36.999 li 241.692 63.9004 li 241.692 67.2451 241.195 70.1768 240.205 72.6934 cv 239.211 75.2109 237.437 77.2422 234.884 78.7861 cv 232.33 80.3301 229.767 81.1016 227.193 81.1016 cv 224.694 81.1016 222.103 80.3193 219.421 78.7568 cv 216.737 77.1943 215.01 75.1465 214.238 72.6123 cv 213.467 70.0742 213.08 66.748 213.08 62.6328 cv 213.08 36.999 li cp 181.328 36.999 mo 193.29 36.999 li 197.002 36.999 200.088 37.5137 202.552 38.543 cv 205.015 39.5723 206.906 41.4268 208.229 44.1104 cv 209.553 46.793 210.215 49.291 210.215 51.6084 cv 210.215 54.4746 209.525 56.9199 208.146 58.9385 cv 206.769 60.96 205.279 62.4131 203.683 63.2939 cv 202.084 64.1768 200.512 64.7109 198.969 64.8945 cv 210.491 80.6592 li 200.677 80.6592 li 189.486 65.5 li 189.486 80.6592 li 181.328 80.6592 li 181.328 36.999 li cp 195.604 58.1133 mo 197.406 58.1133 198.95 57.4668 200.236 56.1816 cv 201.521 54.8965 202.166 53.333 202.166 51.498 cv 202.166 49.6602 201.541 48.0986 200.291 46.8105 cv 199.043 45.5254 197.48 44.8818 195.604 44.8818 cv 189.486 44.8818 li 189.486 58.1133 li 195.604 58.1133 li cp clp 394.977 81.1563 mo 394.977 27.1914 li 127.441 27.1914 li 127.441 81.1563 li 394.977 81.1563 li cp level3{ gsave clp [-2.35879e-06 -53.9628 267.531 -4.75783e-07 261.265 81.1416 ]ct /0 << /ShadingType 2 /ColorSpace /0 /CSA get_res /Coords [0 0 1 0 ] /Domain [0 1 ] /Extend[ true true] /Function << /Domain[0 1 ] /FunctionType 3 /Functions [ << /Domain[0 1 ] /Range[0 1 0 1 0 1 0 1 ] /FunctionType 0 /Order 1 /DataSource <~pRV?bpRM9apRD3`pR;-_pmM0_pm;$]pm1s\pltgZplb[XplYUWplGIUpl5=Spl#1Qpkf%OpkSnMq1\kL q1J_Jq1/MGq0rAEq0`5Cq0N)Aq02l>q/u` /BitsPerSample 8 /Encode [0 63 ] /Decode [0 1 0 1 0 1 0 1 ] /Size [64 ] >> ] /Bounds [] /Encode [0 1 ] >> >>/Gradient add_res /0 /Gradient get_res clonedict shfill grestore }if level3 not{ gsave [-2.35879e-06 -53.9628 267.531 -4.75783e-07 261.265 81.1416 ]ct clp /0 { /0 /CSA get_res setcolorspace << /NumSamples 256 /NumComp 4 /Scaling[[0.00392157 0 ][0.00392157 0 ][0.00392157 0 ][0.00392157 0 ]] /Samples[ <~p@e4Rp@e4Rp@e4Rp@n=Up\4FVp\4FVp\4FVp\4FVp\4FVp\4FVp\4FVp\4FVp\4FVp\4FVp\=OYq"XXZ q"XXZq"XXZq"XXZq"XXZq"XXZq"XXZq"XXZq"X[\q>'j^q>'j^q>'j^q>'j^q>'j^q>'j^q>'j^q>'m` qYL'bqYL'bqYL'bqYL'bqYL'bqYL'bqYL'bqYL'cqtp9fqtp9fqtp9fqtp9fqtp9fqtp9fqtp9gr;?Kj r;?Kjr;?Kjr;?Kjr;?Kjr;?Kjr;?KjrVc]nrVc]nrVc]nrVc]nrVc]nrVc]nrr2ors8W-!s8W-!s8W-! ~> <~SXl=BSXc4?S=?";S!oe7R[KS2R$X/+Q^3r&Q'@MsPEM)lP*(lgOH5H_NfB$WN/NUOMM[1GLkgb?L4t>7 KS4u0JUr?%It)orI=6KjH[C'aG^+FVG'8"NFEDSEEcH&;Df9N1D/=!'C2.HsBP1phAS#C_@q&kT?sd5H ?!U`@>?Y35=BAR)<`N.!;c6Lj:esk^9he;S91hfJ84Z6?77BU36:*t'5X.Fq4Zkee3]T/Y2`g,pX][+sA*P+!)ID*#fh8)&O2,()7Ms&eP]e%hB-Z$k*LN#mgkB"pG,3!WiB& ~> 0 0 ] >> 0 0 1 0 []true true [] /DeviceCMYK GenStrips } /Gradient add_res /0 /Gradient get_res exec grestore }if np grestore gsave 99.4893 96.4805 mo 103.66 96.5508 li 106.966 96.5508 li 107.243 96.7246 li 107.104 98.4639 li 107.035 100.068 li 106.757 100.376 li 103.278 100.376 li 99.4893 100.376 li 99.4893 106.219 li 103.905 106.219 li 108.043 106.219 li 108.321 106.427 li 108.112 108.27 li 107.973 110.078 li 107.625 110.321 li 93.9248 110.321 li 93.7852 110.078 li 93.8887 98.5674 li 93.7852 87.3691 li 93.8887 87.125 li 107.451 87.125 li 107.833 87.4395 li 107.694 89.3164 li 107.625 91.1309 li 107.278 91.3691 li 103.348 91.3691 li 99.4893 91.3691 li 99.4893 96.4805 li cp 118.325 97.1758 mo 118.068 97.0361 117.751 96.9688 117.379 96.9688 cv 116.841 96.9688 116.389 97.0947 116.012 97.3496 cv 115.207 98.0107 li 115.207 101.837 li 115.207 103.182 115.225 104.584 115.265 106.044 cv 115.306 107.505 115.34 108.849 115.38 110.078 cv 115.207 110.321 li 110.024 110.321 li 109.815 110.078 li 109.921 101.939 li 109.815 93.8037 li 110.061 93.4561 li 110.447 93.4316 110.837 93.3994 111.214 93.3506 cv 111.596 93.3057 112.076 93.2354 112.65 93.1416 cv 115.102 92.6904 li 115.38 93.0381 li 115.38 94.5332 li 116.882 93.3057 118.383 92.6904 119.885 92.6904 cv 120.765 92.6904 121.681 92.9502 122.638 93.4736 cv 123.599 93.9951 124.22 94.7881 124.51 95.8535 cv 124.799 96.9209 124.944 98.1504 124.944 99.541 cv 124.944 101.837 li 124.944 103.389 124.967 104.845 125.014 106.199 cv 125.061 107.557 125.118 108.849 125.188 110.078 cv 124.944 110.321 li 119.832 110.321 li 119.554 110.078 li 119.727 102.498 li 119.727 102.219 119.727 101.945 119.727 101.68 cv 119.727 101.413 119.727 101.141 119.727 100.861 cv 119.727 99.9346 119.635 99.1631 119.449 98.5498 cv 119.258 97.9346 118.888 97.4785 118.325 97.1758 cv cp 127.97 96.4111 mo 126.16 96.5156 li 125.918 96.2021 li 126.127 93.1074 li 126.403 92.793 li 127.97 92.793 li 127.899 88.7617 li 128.109 88.4824 li 133.082 87.0908 li 133.289 87.3008 li 133.289 92.793 li 136.28 92.793 li 136.525 93.1074 li 136.211 96.2021 li 135.932 96.4111 li 133.22 96.4111 li 133.289 103.158 li 133.289 104.479 li 133.289 105.083 133.33 105.547 133.412 105.87 cv 133.493 106.194 133.679 106.467 133.967 106.688 cv 134.258 106.908 134.658 107.017 135.168 107.017 cv 135.632 107.017 136.06 106.891 136.455 106.636 cv 136.768 106.844 li 136.65 107.237 136.542 107.776 136.437 108.461 cv 136.333 109.145 136.28 109.729 136.28 110.217 cv 135.793 110.53 li 135.093 110.692 134.171 110.774 133.035 110.774 cv 132.287 110.774 131.633 110.722 131.059 110.618 cv 130.49 110.513 129.923 110.275 129.365 109.904 cv 128.811 109.533 128.422 108.879 128.212 107.939 cv 128.004 107.001 127.899 105.917 127.899 104.687 cv 127.899 103.782 li 127.97 96.4111 li cp 152.625 102.741 mo 152.208 102.983 li 142.366 103.192 li 142.481 104.027 142.725 104.723 143.097 105.278 cv 143.467 105.835 144.012 106.246 144.73 106.513 cv 145.449 106.779 146.169 106.913 146.888 106.913 cv 148.464 106.913 150.052 106.462 151.652 105.557 cv 151.929 105.765 li 151.755 109.487 li 151.304 109.834 li 149.75 110.461 148.034 110.774 146.157 110.774 cv 145.137 110.774 144.175 110.668 143.271 110.461 cv 142.366 110.251 141.357 109.787 140.245 109.069 cv 139.132 108.351 138.344 107.302 137.881 105.922 cv 137.417 104.542 137.185 102.926 137.185 101.07 cv 137.185 99.4727 137.486 98.0225 138.089 96.7246 cv 138.692 95.4268 139.671 94.4297 141.028 93.7334 cv 142.383 93.0381 143.815 92.6904 145.321 92.6904 cv 146.898 92.6904 148.231 93.0313 149.322 93.7158 cv 150.41 94.4004 151.234 95.4512 151.789 96.8643 cv 152.347 98.2773 152.625 100.236 152.625 102.741 cv cp 146.394 96.5508 mo 146.064 96.3418 145.612 96.2363 145.026 96.2363 cv 144.632 96.2363 144.214 96.3359 143.786 96.5342 cv 143.352 96.7305 143.01 97.125 142.749 97.7158 cv 142.494 98.3076 142.366 98.915 142.366 99.541 cv 147.513 99.541 li 147.513 98.8223 147.455 98.2305 147.34 97.7676 cv 147.224 97.3037 146.905 96.8975 146.394 96.5508 cv cp 159.718 110.078 mo 159.58 110.321 li 154.399 110.321 li 154.189 110.078 li 154.295 101.939 li 154.189 93.8037 li 154.427 93.4561 li 154.821 93.4316 155.204 93.3994 155.58 93.3506 cv 155.958 93.3057 156.434 93.2354 157.006 93.1416 cv 159.447 92.6904 li 159.718 93.0381 li 159.718 95.6816 li 160.276 94.6602 160.92 93.9248 161.649 93.4736 cv 162.38 93.0215 163.173 92.7598 164.031 92.6904 cv 164.31 93.0381 li 164.263 93.2695 164.165 93.7207 164.014 94.3936 cv 163.862 95.0664 163.764 95.5176 163.718 95.751 cv 163.369 98.4277 li 163.023 98.5332 li 162.652 98.2998 162.211 98.1846 161.702 98.1846 cv 161.307 98.1846 160.912 98.3242 160.518 98.6025 cv 160.124 98.8818 159.869 99.4141 159.754 100.201 cv 159.639 100.99 159.58 101.743 159.58 102.462 cv 159.58 103.76 159.598 105.083 159.627 106.427 cv 159.655 107.771 159.689 108.988 159.718 110.078 cv cp 171.231 94.0811 mo 171.786 93.6172 172.436 93.2695 173.189 93.0381 cv 173.938 92.8057 174.674 92.6904 175.392 92.6904 cv 176.451 92.6904 177.46 92.9502 178.422 93.4736 cv 179.379 93.9951 180.166 94.9971 180.782 96.4805 cv 181.392 97.9639 181.697 99.3086 181.697 100.516 cv 181.697 102.162 181.368 103.819 180.707 105.488 cv 180.046 107.156 179.106 108.346 177.889 109.053 cv 176.673 109.759 175.565 110.211 174.568 110.407 cv 173.572 110.605 172.414 110.703 171.092 110.703 cv 171.231 118.181 li 171.022 118.425 li 165.84 118.425 li 165.631 118.181 li 165.77 105.174 li 165.631 93.8037 li 165.874 93.4561 li 166.27 93.4316 166.657 93.3994 167.039 93.3506 cv 167.423 93.3057 167.903 93.2354 168.482 93.1416 cv 170.952 92.6904 li 171.231 93.0381 li 171.231 94.0811 li cp 171.022 105.07 mo 171.126 106.947 li 171.856 106.947 172.43 106.918 172.841 106.861 cv 173.253 106.803 173.769 106.606 174.383 106.27 cv 175.003 105.934 175.479 105.268 175.808 104.271 cv 176.14 103.273 176.307 102.288 176.307 101.313 cv 176.307 100.388 176.181 99.541 175.926 98.7764 cv 175.67 98.0107 175.266 97.4551 174.708 97.1064 cv 174.15 96.7578 173.605 96.585 173.074 96.585 cv 172.655 96.585 172.262 96.6494 171.892 96.7764 cv 171.521 96.9043 171.266 97.0488 171.126 97.21 cv 171.022 105.07 li cp 188.652 110.078 mo 188.514 110.321 li 183.332 110.321 li 183.124 110.078 li 183.227 101.939 li 183.124 93.8037 li 183.361 93.4561 li 183.756 93.4316 184.139 93.3994 184.515 93.3506 cv 184.893 93.3057 185.366 93.2354 185.94 93.1416 cv 188.38 92.6904 li 188.652 93.0381 li 188.652 95.6816 li 189.209 94.6602 189.853 93.9248 190.584 93.4736 cv 191.313 93.0215 192.107 92.7598 192.966 92.6904 cv 193.243 93.0381 li 193.197 93.2695 193.098 93.7207 192.948 94.3936 cv 192.797 95.0664 192.698 95.5176 192.652 95.751 cv 192.304 98.4277 li 191.957 98.5332 li 191.585 98.2998 191.145 98.1846 190.635 98.1846 cv 190.24 98.1846 189.847 98.3242 189.452 98.6025 cv 189.059 98.8818 188.804 99.4141 188.688 100.201 cv 188.571 100.99 188.514 101.743 188.514 102.462 cv 188.514 103.76 188.529 105.083 188.562 106.427 cv 188.589 107.771 188.623 108.988 188.652 110.078 cv cp 199.815 84.6924 mo 200.023 85.0039 li 200.023 87.125 li 200.023 89.2129 li 199.647 89.5957 li 197.417 89.8047 li 195.087 90.1162 li 194.844 89.8721 li 194.844 87.7871 li 194.844 85.5957 li 195.255 85.2822 li 197.347 85.0732 li 197.781 85.0732 198.239 85.0283 198.72 84.9346 cv 199.194 84.8428 199.567 84.7617 199.815 84.6924 cv cp 194.809 110.321 mo 194.6 110.078 li 194.704 101.939 li 194.6 93.8037 li 194.844 93.4561 li 195.238 93.4316 195.625 93.3994 196.009 93.3506 cv 196.392 93.3057 196.872 93.2354 197.451 93.1416 cv 199.921 92.6904 li 200.198 93.0381 li 200.158 94.3125 200.122 95.7383 200.082 97.3154 cv 200.043 98.8916 200.023 100.4 200.023 101.837 cv 200.023 103.182 200.043 104.584 200.082 106.044 cv 200.122 107.505 200.158 108.849 200.198 110.078 cv 199.921 110.321 li 194.809 110.321 li cp 214.456 93.9082 mo 214.317 94.6035 214.218 95.1826 214.161 95.6465 cv 214.103 96.1104 214.073 96.666 214.073 97.3154 cv 213.692 97.4551 li 213.11 96.9912 212.475 96.6367 211.777 96.3955 cv 211.083 96.1504 210.398 96.0273 209.728 96.0273 cv 209.332 96.0273 209.025 96.0684 208.805 96.1504 cv 208.585 96.2314 208.365 96.3467 208.145 96.498 cv 207.924 96.6494 207.791 96.8516 207.743 97.1064 cv 207.651 97.6182 207.743 98.0107 208.021 98.29 cv 208.301 98.5674 208.719 98.8223 209.274 99.0537 cv 210.179 99.3672 li 211.731 100.016 212.926 100.59 213.762 101.09 cv 214.596 101.588 215.013 102.717 215.013 104.479 cv 215.013 105.522 214.81 106.542 214.403 107.54 cv 213.998 108.535 213.425 109.237 212.671 109.644 cv 211.917 110.049 211.117 110.333 210.259 110.496 cv 209.408 110.657 208.539 110.738 207.664 110.738 cv 206.619 110.738 205.629 110.646 204.696 110.461 cv 203.758 110.275 203.015 109.997 202.458 109.627 cv 202.111 109.208 li 202.203 108.535 202.261 107.887 202.285 107.262 cv 202.309 106.636 202.33 106.032 202.354 105.453 cv 202.703 105.313 li 204.232 106.658 205.798 107.331 207.397 107.331 cv 207.722 107.331 208.034 107.291 208.335 107.21 cv 208.637 107.127 208.887 107.001 209.084 106.827 cv 209.28 106.653 209.425 106.443 209.519 106.199 cv 209.61 105.957 209.658 105.777 209.658 105.662 cv 209.658 105.384 209.564 105.121 209.379 104.879 cv 209.194 104.636 208.289 104.126 206.667 103.348 cv 205.044 102.572 204.024 101.935 203.606 101.436 cv 203.188 100.938 202.893 100.4 202.72 99.8184 cv 202.547 99.2393 202.458 98.6729 202.458 98.1152 cv 202.458 97.5596 202.615 96.7246 202.929 95.6123 cv 203.241 94.499 204.07 93.7334 205.415 93.3164 cv 206.759 92.8994 207.987 92.6904 209.101 92.6904 cv 210.956 92.6904 212.625 92.9912 214.107 93.5957 cv 214.456 93.9082 li cp 231.496 102.741 mo 231.079 102.983 li 221.237 103.192 li 221.354 104.027 221.597 104.723 221.967 105.278 cv 222.34 105.835 222.885 106.246 223.604 106.513 cv 224.321 106.779 225.039 106.913 225.758 106.913 cv 227.334 106.913 228.922 106.462 230.523 105.557 cv 230.801 105.765 li 230.628 109.487 li 230.175 109.834 li 228.622 110.461 226.906 110.774 225.027 110.774 cv 224.008 110.774 223.046 110.668 222.142 110.461 cv 221.237 110.251 220.229 109.787 219.116 109.069 cv 218.003 108.351 217.214 107.302 216.75 105.922 cv 216.288 104.542 216.056 102.926 216.056 101.07 cv 216.056 99.4727 216.356 98.0225 216.96 96.7246 cv 217.563 95.4268 218.543 94.4297 219.898 93.7334 cv 221.256 93.0381 222.687 92.6904 224.193 92.6904 cv 225.771 92.6904 227.104 93.0313 228.192 93.7158 cv 229.282 94.4004 230.106 95.4512 230.661 96.8643 cv 231.219 98.2773 231.496 100.236 231.496 102.741 cv cp 225.266 96.5508 mo 224.934 96.3418 224.482 96.2363 223.898 96.2363 cv 223.504 96.2363 223.086 96.3359 222.656 96.5342 cv 222.223 96.7305 221.881 97.125 221.621 97.7158 cv 221.366 98.3076 221.237 98.915 221.237 99.541 cv 226.385 99.541 li 226.385 98.8223 226.327 98.2305 226.21 97.7676 cv 226.095 97.3037 225.775 96.8975 225.266 96.5508 cv cp 244.781 102.498 mo 244.919 110.078 li 244.746 110.321 li 239.218 110.321 li 239.078 110.078 li 239.182 98.5674 li 239.078 87.3691 li 239.182 87.125 li 245.522 87.125 li 248.356 87.125 250.455 87.3584 251.816 87.8223 cv 253.174 88.2861 254.106 88.9277 254.622 89.752 cv 255.132 90.5752 255.469 91.3574 255.631 92.0986 cv 255.794 92.8418 255.875 93.6172 255.875 94.4297 cv 255.875 96.167 255.526 97.6514 254.832 98.8818 cv 254.136 100.109 253.104 101.019 251.735 101.609 cv 250.368 102.202 248.444 102.498 245.964 102.498 cv 244.781 102.498 li cp 244.781 98.4277 mo 245.928 98.4277 li 246.3 98.4277 246.752 98.3887 247.285 98.3076 cv 247.819 98.2256 248.345 98.0342 248.866 97.7334 cv 249.39 97.4307 249.76 97.0195 249.979 96.498 cv 250.2 95.9766 250.311 95.2979 250.311 94.4639 cv 250.311 93.6533 250.137 92.9971 249.782 92.498 cv 249.429 92.001 248.936 91.6641 248.305 91.4893 cv 247.667 91.3164 246.843 91.2295 245.834 91.2295 cv 244.781 91.2295 li 244.781 98.4277 li cp 263.664 92.793 mo 264.082 92.7256 264.568 92.6904 265.125 92.6904 cv 266.307 92.6904 267.473 92.876 268.621 93.2461 cv 269.767 93.6172 270.683 94.2041 271.367 95.002 cv 272.052 95.8027 272.545 96.8398 272.845 98.1152 cv 273.146 99.3916 273.296 100.689 273.296 102.01 cv 273.296 102.773 273.262 103.453 273.192 104.045 cv 273.122 104.636 272.96 105.354 272.705 106.199 cv 272.451 107.048 271.958 107.857 271.228 108.634 cv 270.498 109.412 269.61 109.956 268.567 110.268 cv 267.524 110.582 266.389 110.738 265.161 110.738 cv 264.023 110.738 262.97 110.611 261.995 110.356 cv 261.021 110.102 260.118 109.627 259.281 108.93 cv 258.447 108.235 257.833 107.291 257.438 106.097 cv 257.044 104.903 256.848 103.61 256.848 102.219 cv 256.848 101.779 256.854 101.431 256.864 101.175 cv 256.877 100.92 256.929 100.312 257.022 99.3506 cv 257.114 98.3887 257.456 97.3496 258.048 96.2363 cv 258.639 95.124 259.584 94.2207 260.882 93.5244 cv 261.369 93.3164 261.826 93.1543 262.256 93.0381 cv 262.685 92.9229 263.154 92.8418 263.664 92.793 cv cp 262.585 105.139 mo 262.771 105.743 262.999 106.206 263.265 106.531 cv 263.532 106.856 263.827 107.053 264.152 107.122 cv 264.477 107.192 264.754 107.227 264.986 107.227 cv 265.657 107.227 266.231 107.035 266.708 106.653 cv 267.183 106.27 267.513 105.633 267.698 104.739 cv 267.883 103.848 267.977 102.856 267.977 101.768 cv 267.977 101.256 267.964 100.811 267.942 100.427 cv 267.919 100.045 267.854 99.4941 267.751 98.7764 cv 267.645 98.0576 267.473 97.5195 267.229 97.1592 cv 266.984 96.7998 266.679 96.54 266.307 96.376 cv 265.937 96.2148 265.576 96.1328 265.23 96.1328 cv 264.719 96.1328 264.255 96.248 263.838 96.4805 cv 263.282 96.8516 262.876 97.5459 262.621 98.5674 cv 262.366 99.5879 262.239 100.712 262.239 101.939 cv 262.239 102.613 262.272 103.232 262.342 103.801 cv 262.412 104.369 262.494 104.815 262.585 105.139 cv cp 286.511 93.9082 mo 286.373 94.6035 286.274 95.1826 286.217 95.6465 cv 286.157 96.1104 286.128 96.666 286.128 97.3154 cv 285.747 97.4551 li 285.168 96.9912 284.53 96.6367 283.834 96.3955 cv 283.14 96.1504 282.454 96.0273 281.782 96.0273 cv 281.389 96.0273 281.08 96.0684 280.859 96.1504 cv 280.641 96.2314 280.42 96.3467 280.199 96.498 cv 279.98 96.6494 279.846 96.8516 279.801 97.1064 cv 279.707 97.6182 279.801 98.0107 280.079 98.29 cv 280.356 98.5674 280.773 98.8223 281.33 99.0537 cv 282.233 99.3672 li 283.787 100.016 284.982 100.59 285.816 101.09 cv 286.651 101.588 287.067 102.717 287.067 104.479 cv 287.067 105.522 286.866 106.542 286.461 107.54 cv 286.054 108.535 285.479 109.237 284.728 109.644 cv 283.974 110.049 283.173 110.333 282.316 110.496 cv 281.463 110.657 280.595 110.738 279.718 110.738 cv 278.676 110.738 277.686 110.646 276.751 110.461 cv 275.812 110.275 275.069 109.997 274.514 109.627 cv 274.166 109.208 li 274.26 108.535 274.317 107.887 274.341 107.262 cv 274.363 106.636 274.388 106.032 274.41 105.453 cv 274.758 105.313 li 276.287 106.658 277.853 107.331 279.452 107.331 cv 279.776 107.331 280.091 107.291 280.391 107.21 cv 280.693 107.127 280.941 107.001 281.139 106.827 cv 281.335 106.653 281.482 106.443 281.573 106.199 cv 281.667 105.957 281.713 105.777 281.713 105.662 cv 281.713 105.384 281.619 105.121 281.434 104.879 cv 281.249 104.636 280.346 104.126 278.723 103.348 cv 277.1 102.572 276.078 101.935 275.662 101.436 cv 275.244 100.938 274.949 100.4 274.775 99.8184 cv 274.601 99.2393 274.514 98.6729 274.514 98.1152 cv 274.514 97.5596 274.67 96.7246 274.983 95.6123 cv 275.297 94.499 276.126 93.7334 277.47 93.3164 cv 278.814 92.8994 280.042 92.6904 281.157 92.6904 cv 283.012 92.6904 284.68 92.9912 286.164 93.5957 cv 286.511 93.9082 li cp 289.259 96.4111 mo 287.45 96.5156 li 287.207 96.2021 li 287.416 93.1074 li 287.695 92.793 li 289.259 92.793 li 289.189 88.7617 li 289.398 88.4824 li 294.371 87.0908 li 294.58 87.3008 li 294.58 92.793 li 297.57 92.793 li 297.814 93.1074 li 297.502 96.2021 li 297.223 96.4111 li 294.511 96.4111 li 294.58 103.158 li 294.58 104.479 li 294.58 105.083 294.621 105.547 294.701 105.87 cv 294.782 106.194 294.967 106.467 295.259 106.688 cv 295.549 106.908 295.948 107.017 296.458 107.017 cv 296.922 107.017 297.352 106.891 297.745 106.636 cv 298.057 106.844 li 297.941 107.237 297.831 107.776 297.728 108.461 cv 297.622 109.145 297.57 109.729 297.57 110.217 cv 297.084 110.53 li 296.383 110.692 295.46 110.774 294.326 110.774 cv 293.577 110.774 292.923 110.722 292.349 110.618 cv 291.781 110.513 291.212 110.275 290.655 109.904 cv 290.101 109.533 289.711 108.879 289.504 107.939 cv 289.294 107.001 289.189 105.917 289.189 104.687 cv 289.189 103.782 li 289.259 96.4111 li cp 314.575 92.8633 mo 314.714 93.1074 li 314.611 94.6035 li 314.575 96.2725 li 314.263 96.5508 li 312.211 96.376 li 312.651 97.3262 312.871 98.2666 312.871 99.1934 cv 312.871 100.027 312.675 100.827 312.281 101.593 cv 311.887 102.356 311.278 102.99 310.455 103.487 cv 309.631 103.986 308.92 104.3 308.316 104.427 cv 307.713 104.555 307.134 104.624 306.578 104.636 cv 306.021 104.648 305.604 104.653 305.325 104.653 cv 304.873 105.628 li 307.064 106.322 li 308.989 106.901 310.455 107.446 311.464 107.956 cv 312.471 108.468 313.121 109.117 313.41 109.904 cv 313.7 110.692 313.845 111.376 313.845 111.956 cv 313.845 112.65 313.741 113.318 313.533 113.956 cv 313.324 114.592 312.912 115.26 312.297 115.955 cv 311.683 116.651 310.755 117.189 309.516 117.572 cv 308.276 117.953 306.972 118.146 305.604 118.146 cv 304.792 118.146 304.017 118.088 303.273 117.973 cv 302.206 117.74 301.257 117.347 300.422 116.79 cv 299.588 116.233 299.048 115.619 298.805 114.946 cv 298.562 114.272 298.439 113.693 298.439 113.208 cv 298.439 112.65 298.526 112.113 298.701 111.591 cv 298.874 111.07 299.112 110.623 299.413 110.251 cv 299.715 109.881 299.958 109.608 300.144 109.434 cv 300.329 109.261 300.527 109.093 300.733 108.93 cv 300.527 108.79 300.329 108.641 300.144 108.479 cv 299.958 108.314 299.773 108.13 299.588 107.921 cv 299.588 107.505 li 299.982 106.926 300.363 106.304 300.733 105.645 cv 301.106 104.984 301.406 104.351 301.64 103.75 cv 299.97 102.658 299.09 101.62 298.996 100.636 cv 298.903 99.6514 298.858 98.9971 298.858 98.6729 cv 298.858 98 298.974 97.3213 299.205 96.6367 cv 299.436 95.9531 299.883 95.2637 300.544 94.5684 cv 301.205 93.8721 302.127 93.415 303.309 93.1953 cv 304.491 92.9746 305.882 92.8633 307.481 92.8633 cv 314.575 92.8633 li cp 303.97 99.7852 mo 304.225 100.736 304.591 101.274 305.065 101.401 cv 305.54 101.529 305.835 101.593 305.95 101.593 cv 306.368 101.593 306.753 101.448 307.099 101.156 cv 307.447 100.869 307.696 100.498 307.848 100.045 cv 307.997 99.5928 308.072 99.1123 308.072 98.6025 cv 308.072 98.4873 308.062 98.3584 308.038 98.2188 cv 308.014 98.0791 307.992 97.8896 307.968 97.6445 cv 307.944 97.4014 307.806 97.0947 307.55 96.7246 cv 307.295 96.3535 307.019 96.1104 306.716 95.9932 cv 306.415 95.8779 306.159 95.8213 305.95 95.8213 cv 305.604 95.8213 305.256 95.9365 304.907 96.167 cv 304.562 96.4004 304.299 96.7764 304.127 97.2988 cv 303.951 97.8193 303.864 98.334 303.864 98.8447 cv 303.864 99.2168 303.899 99.5303 303.97 99.7852 cv cp 302.961 113.208 mo 303.055 113.672 303.298 114.071 303.691 114.407 cv 304.086 114.744 304.508 114.962 304.961 115.068 cv 305.412 115.174 305.882 115.225 306.368 115.225 cv 306.693 115.225 306.983 115.2 307.238 115.155 cv 307.492 115.109 307.737 115.011 307.968 114.859 cv 308.201 114.708 308.392 114.471 308.542 114.147 cv 308.693 113.821 308.768 113.497 308.768 113.173 cv 308.768 113.012 308.722 112.795 308.63 112.53 cv 308.537 112.263 308.112 111.985 307.359 111.695 cv 306.605 111.404 305.87 111.145 305.152 110.912 cv 304.004 110.53 li 303.309 111.411 302.961 112.199 302.961 112.894 cv 302.961 113.208 li cp 321.704 110.078 mo 321.564 110.321 li 316.385 110.321 li 316.176 110.078 li 316.281 101.939 li 316.176 93.8037 li 316.414 93.4561 li 316.807 93.4316 317.189 93.3994 317.567 93.3506 cv 317.943 93.3057 318.419 93.2354 318.992 93.1416 cv 321.433 92.6904 li 321.704 93.0381 li 321.704 95.6816 li 322.262 94.6602 322.905 93.9248 323.636 93.4736 cv 324.365 93.0215 325.159 92.7598 326.017 92.6904 cv 326.296 93.0381 li 326.249 93.2695 326.151 93.7207 326 94.3936 cv 325.849 95.0664 325.749 95.5176 325.704 95.751 cv 325.356 98.4277 li 325.008 98.5332 li 324.638 98.2998 324.198 98.1846 323.688 98.1846 cv 323.292 98.1846 322.897 98.3242 322.504 98.6025 cv 322.109 98.8818 321.854 99.4141 321.739 100.201 cv 321.623 100.99 321.564 101.743 321.564 102.462 cv 321.564 103.76 321.584 105.083 321.612 106.427 cv 321.642 107.771 321.675 108.988 321.704 110.078 cv cp 342.535 102.741 mo 342.119 102.983 li 332.277 103.192 li 332.393 104.027 332.637 104.723 333.007 105.278 cv 333.378 105.835 333.923 106.246 334.642 106.513 cv 335.36 106.779 336.078 106.913 336.797 106.913 cv 338.374 106.913 339.962 106.462 341.562 105.557 cv 341.84 105.765 li 341.666 109.487 li 341.215 109.834 li 339.661 110.461 337.945 110.774 336.067 110.774 cv 335.048 110.774 334.085 110.668 333.182 110.461 cv 332.277 110.251 331.269 109.787 330.156 109.069 cv 329.042 108.351 328.255 107.302 327.79 105.922 cv 327.328 104.542 327.096 102.926 327.096 101.07 cv 327.096 99.4727 327.396 98.0225 327.999 96.7246 cv 328.603 95.4268 329.582 94.4297 330.937 93.7334 cv 332.294 93.0381 333.727 92.6904 335.233 92.6904 cv 336.809 92.6904 338.142 93.0313 339.23 93.7158 cv 340.322 94.4004 341.146 95.4512 341.701 96.8643 cv 342.259 98.2773 342.535 100.236 342.535 102.741 cv cp 336.305 96.5508 mo 335.975 96.3418 335.522 96.2363 334.937 96.2363 cv 334.544 96.2363 334.126 96.3359 333.697 96.5342 cv 333.263 96.7305 332.919 97.125 332.659 97.7158 cv 332.404 98.3076 332.277 98.915 332.277 99.541 cv 337.425 99.541 li 337.425 98.8223 337.366 98.2305 337.248 97.7676 cv 337.133 97.3037 336.813 96.8975 336.305 96.5508 cv cp 357.802 88.2383 mo 357.419 92.5508 li 357.14 92.6904 li 355.425 91.3691 353.758 90.708 352.133 90.708 cv 351.508 90.708 350.877 90.8809 350.238 91.2295 cv 349.601 91.5781 349.283 92.2021 349.283 93.1074 cv 349.283 93.6865 349.566 94.2041 350.134 94.6553 cv 350.703 95.1074 351.393 95.4961 352.202 95.8213 cv 353.073 96.167 li 354.836 96.8867 356.161 97.7451 357.054 98.7422 cv 357.947 99.7373 358.462 101.024 358.602 102.602 cv 358.602 103.853 358.393 105.1 357.977 106.339 cv 357.559 107.58 356.893 108.506 355.977 109.122 cv 355.061 109.737 354.115 110.164 353.142 110.407 cv 352.169 110.652 351.113 110.774 349.979 110.774 cv 348.702 110.774 347.515 110.641 346.413 110.373 cv 345.312 110.107 344.355 109.718 343.544 109.208 cv 343.302 108.825 li 343.347 108.525 343.412 108.148 343.493 107.696 cv 343.572 107.245 343.613 106.96 343.613 106.844 cv 343.788 104.653 li 344.102 104.514 li 345.955 105.929 347.798 106.636 349.63 106.636 cv 350.441 106.636 351.241 106.422 352.03 105.992 cv 352.818 105.563 353.211 104.85 353.211 103.853 cv 353.211 103.134 352.945 102.555 352.411 102.115 cv 351.878 101.674 351.078 101.198 350.012 100.689 cv 349.074 100.236 li 347.428 99.4482 346.153 98.5918 345.249 97.6641 cv 344.343 96.7363 343.892 95.4727 343.892 93.8721 cv 343.892 92.7129 344.112 91.5713 344.553 90.4463 cv 344.992 89.3223 345.764 88.4258 346.866 87.7529 cv 347.967 87.0801 349.56 86.7441 351.647 86.7441 cv 352.781 86.7441 353.896 86.8711 354.985 87.125 cv 356.075 87.3799 357.014 87.7529 357.802 88.2383 cv cp 375.259 109.627 mo 375.746 109.857 376.291 110.107 376.893 110.373 cv 377.495 110.641 378 110.856 378.405 111.017 cv 378.813 111.179 379.269 111.342 379.779 111.505 cv 380.29 111.666 380.741 111.816 381.136 111.956 cv 381.24 112.304 li 379.502 115.955 li 379.084 116.128 li 378.344 115.688 377.536 115.231 376.667 114.749 cv 375.797 114.272 374.934 113.816 374.076 113.377 cv 373.218 112.935 372.204 112.433 371.034 111.875 cv 369.862 111.317 369.023 110.912 368.513 110.657 cv 367.424 110.542 366.426 110.309 365.521 109.956 cv 364.617 109.608 363.661 108.994 362.652 108.112 cv 361.645 107.227 360.891 105.998 360.394 104.415 cv 359.895 102.839 359.645 101.129 359.645 99.292 cv 359.645 98.8047 359.667 98.2998 359.714 97.7744 cv 359.761 97.252 359.854 96.4111 359.991 95.2471 cv 360.131 94.0889 360.624 92.7314 361.47 91.1885 cv 362.316 89.6416 363.336 88.5918 364.53 88.0371 cv 365.726 87.4736 366.56 87.125 367.034 86.9863 cv 367.51 86.8496 368.036 86.7783 368.617 86.7783 cv 369.081 86.7783 369.485 86.7783 369.833 86.7783 cv 371.318 86.7783 372.803 87.0332 374.285 87.5439 cv 375.77 88.0527 376.94 88.8359 377.797 89.8906 cv 378.655 90.9453 379.269 92.2266 379.642 93.7334 cv 380.012 95.2393 380.196 96.8271 380.196 98.498 cv 380.196 100.561 379.966 102.322 379.502 103.782 cv 379.038 105.244 378.48 106.443 377.831 107.382 cv 377.183 108.321 376.326 109.069 375.259 109.627 cv cp 368.096 91.3691 mo 367.284 91.8779 366.628 92.8057 366.131 94.1504 cv 365.632 95.4961 365.383 97.0264 365.383 98.7422 cv 365.383 100.341 365.504 101.779 365.748 103.053 cv 365.991 104.329 366.42 105.186 367.034 105.628 cv 367.649 106.066 368.17 106.344 368.6 106.462 cv 369.028 106.577 369.463 106.636 369.902 106.636 cv 370.506 106.636 371.056 106.531 371.556 106.322 cv 372.054 106.113 372.528 105.703 372.981 105.088 cv 373.433 104.473 373.752 103.732 373.937 102.862 cv 374.122 101.993 374.261 101.164 374.354 100.376 cv 374.446 99.5879 374.494 98.7998 374.494 98.0107 cv 374.494 96.6904 374.366 95.4961 374.11 94.4297 cv 373.855 93.3623 373.473 92.5801 372.963 92.0811 cv 372.454 91.583 371.983 91.248 371.556 91.0732 cv 371.126 90.8984 370.669 90.8135 370.182 90.8135 cv 369.857 90.8135 369.562 90.8477 369.296 90.917 cv 369.028 90.9873 368.803 91.0508 368.617 91.1084 cv 368.433 91.167 368.258 91.2529 368.096 91.3691 cv cp 381.762 110.321 mo 381.623 110.078 li 381.726 98.5674 li 381.623 87.3691 li 381.726 87.125 li 387.291 87.125 li 387.466 87.3691 li 387.418 88.9922 387.384 90.7998 387.361 92.793 cv 387.337 94.7881 387.326 96.7119 387.326 98.5674 cv 387.326 106.079 li 394.733 105.974 li 394.977 106.356 li 394.697 109.974 li 394.456 110.321 li 381.762 110.321 li cp clp 394.977 118.425 mo 394.977 84.6924 li 93.7852 84.6924 li 93.7852 118.425 li 394.977 118.425 li cp /0 << /Name (Black) /CSA /0 get_csa_by_name /MappedCSA /0 /CSA get_res /TintMethod /Subtractive /TintProc null /NComponents 4 /Components [ 0 0 0 1 ] >> /CSD add_res 1 /0 /CSD get_res sepcs level3{ gsave clp [0 -33.7323 301.188 0 244.39 118.423 ]ct /1 << /ShadingType 2 /ColorSpace [/Separation /sep_colorspace_dict AGMCORE_gget dup /Name get exch /MappedCSA get /sep_colorspace_proc load] /Coords [0 0 1 0 ] /Domain [0 1 ] /Extend[ true true] /Function << /Domain[0 1 ] /FunctionType 3 /Functions [ << /Domain[0 1 ] /FunctionType 2 /C0 [1 ] /C1 [0.5 ] /N 1 >> ] /Bounds [] /Encode [0 1 ] >> >>/Gradient add_res /1 /Gradient get_res clonedict shfill grestore }if level3 not{ gsave [0 -33.7323 301.188 0 244.39 118.423 ]ct clp /1 { << /NumSamples 256 /NumComp 1 /Scaling[[0.00392157 0 ]] /Samples[ <~s8N#rrVZTjqtg0bq=saZp\+=Rp%7nJoCDJBnaQ&:n*]W2mHj3*lg!d"l0.?okN:pgjlGL_j5T(WiS`YO hqm5Gh;$f?gY1B7g"=s/f@JO'e^W*te'c[ldEp7dcd'h\c-4DTbK@uLaiMQDa2Z-<`Pf^4_ns:,_8*k$ ^V7Fq]tD"i]=PSa\[]/Y\$i`Q[C!fV50o^US=KVTqJ'N T:VXFSXc4>S!oe6R@'A.Q^3r&Q'@MsPEM)kOcYZcO,f6[NJrgSMi*CKM26tCLPCP;KnP,3K7\]+JUi9# ~> ] >> 0 0 1 0 []true true [] /Separation GenStrips } /Gradient add_res /1 /Gradient get_res exec grestore }if np grestore %ADOBeginClientInjection: EndPageContent "AI11EPS" userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse %ADOEndClientInjection: EndPageContent "AI11EPS" grestore grestore pgrs %%PageTrailer %ADOBeginClientInjection: PageTrailer Start "AI11EPS" [/EMC AI11_PDFMark5 [/NamespacePop AI11_PDFMark5 %ADOEndClientInjection: PageTrailer Start "AI11EPS" [ [/CSA [/0 ]] [/CSD [/0 ]] [/Gradient [/0 /1 ]] ] del_res Adobe_AGM_Image/pt gx Adobe_CoolType_Core/pt get exec Adobe_AGM_Core/pt gx currentdict Adobe_AGM_Utils eq {end} if %%Trailer Adobe_AGM_Image/dt get exec Adobe_CoolType_Core/dt get exec Adobe_AGM_Core/dt get exec %%EOF %AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 13.0 %%AI8_CreatorVersion: 13.0.0 %%For: (Fitri Ardiwahyudi) () %%Title: (Crunchy_EnterprisePostgreSQL.eps) %%CreationDate: 12/19/14 7:57 PM %AI9_DataStream %Gb!R&q-NX9Z7,Y,!;?IC1./ni"r/"B5X@hY_O3ta&2:n'q`TG!CHpA*ktGVsf\bEG4T6D?Uf5fL;cctCV7ka6F?/Rr-XW_7J*#H: %PAqr_S3+\8h8pAonp5)hS&&@e-H`X@!#e>UaUC"$7%"IMKdTbq2BC,\A,N^Cr#JHH9l\l+bie*PGUh![md`T5M>O%="a<#qd^[aF %\\,nfe@RCS%tpqWgKD%m;$L<9j6ri+E8835rcSNUcCJK*F?/lO6/Bcd#(T(ualTj#DnPEIRK.EU5Pp/hF*&Z*Nk`%-MZr_pHGDl1 %aqsHV\mo\ZqXHf-%).JfL"KN:Vj#^4JUKWTSW,^h!?Q]AiM%cF,+Cokb'0g2N!$PH0[V/`-Fbo/`[%huQZ.!s)bjm"S3*9QUKNUK %P%PJ,%K84)r&Y/Ukm]"ul27$0[5mRc+r/'cC\YYPfZ?,"3Ql!hC`7i%1MLn0AiUogGE^teL5B>O$%RqJIk]0Yj"_?/Y#!)27"q-m_aq7e)3)p+"-LqB+h3sM-F_HNh![chOc:^9E?HMGa58j8'BM1r!h5$Zh-'NBc!YWB`gojrLfo\,,o@1U %"HB.,Tm<-C^ajF"24Wae5eT]N'2>CX'Obo[*;1-8VW7(Qq7m)iAlSf:oKVS#&7Mg\9Vdf$\sU_OPG^AM[0#?-kS(A`37NiG"G+G6Al5%6 %(:D9$5P0%UMcs\uW"o/`5#JA$)7:r\d?EZI\l15V2M-JI$3J8AVZd+W(Bj:;kqVEUkmtU$m\2)nrC"Na7A$Ln)ADs8XjEI!8BF"O %,4p`GTFmkn1i>nlngk[mqF#h,&YVu'M9q)E7O(6lB\_f1\r+L\E"Zmur2:>K(]$O:"9Df'r'7Hd[,d2hE(C %SFVKE+TG7g1d:Pg+;#*H;3Q?[A*>jdKuQVC9W1:L7H6b-kV"bR_LM2LHB,/$:Xf`2%t,'C&h+uG-28'A.KcX4<.67A8H/tG;(Fsl %8f'7'dX0JbdP$3=5c4H'/a,FK#*"X8-5mnNRZ*]j7H6b-W"kG51d45>ngsW*D:%KO?7OW-G6m:9"sVl&L8h7NBgY$2P!W]1l368u %Tf_KZTfU"_k_=CY3C:bUqMn`Vli]@pT%k^n8C*-)&nr[T-aY$."T4>%YG1FF)4-\)X.ia]:5\BOl)&L)a<,_3OWgah$C<3,'gA93 %;+dR\'l)+0df*.W">4s4Hj'?Xr?bR-Q2\b_jGrf#r(ABYho]m.cfIlta;*eqq3Oj?^Qm^;?RA/>c=A?kN:a;U,^5L1jBnlSr`4K3 %IkED#P:Odonukq7Ik/:U5=YWBloF&GqBUG7J()0RD\uhD=\bgsSh1:90p@J&I(CL-nOu')^R*?uGT-OVH1X7*8]BX-cbOsq2pJ8r %@]#M)pim_FAd(Ad5ck067_m?Hip`.^B.Bi+q4HfsYW0`I/$hNOs'6ZgD'XA.7UPgf'#.5"W\QMRnPh!*e[b5oVEc^$L/3O<)?$pm=;WbbV=-n@T*3SrXdo\n`Pp#+B^S*6jVoB@9jIBJ?H@U)]6f\[1TJB_\PPBWb9l`diA?$cPOV&6U""Y`BV3L+Qe:\=--':+& %H\pn[$G'#&J=pOQ$;T],-7+X3KCg#6:;V@:#t$$pbmJ2K'dV&"r#i;'Su,DEGsZHs-!Znr)2o5BSs?+>6VgA4&O3Ra*+gp,3'l(- %[EBhRfR?BhKV%5=Op"6Of,@qG0dJ%1`6_g_[YdBK-5<@YLVf5NS>'7VY?60Q)ZC&V@PGh8t&!M+ZjB2fl`[o4* %V7'&$oc/()@k%bU9K1B@O,)Fl7DaoS6.Q#qQDGLSIa\m:qIU=V#e-amV2@\7&;Ng&.BggKMqO%?SPgOa2j@Vlc=BfY%N.2C(V-<; %!61HQ'I-Ef?sD;Dl4qiGU8>Bg)/A%pCU0+g^t&Yd'GaONpP:1[Kt4!GkZQ+P.RMJODg=/g6;R.krD+.Cg7k/@?&S>HdVmj*oUGC_ %rIqE'B+`/q.%+R-b7]4IFp>Ko!uDs5@[K&h'ZPK*_;aj)q4eE;1MHM]4KNk1CbU:h#+tX\Z(^U6bIB#gt:]"3-UbSqLe+(6&8U;-CVb$.n %V7A@N'$EOf9[n8A$PJq!B4!D86=VlsQjUQ^Ij95*hpJqKmP'n_oN1l@d$>6s<"_m9K)S6.J9`A*66'Jbj?N&mU69U%[k3b,'>9L? %a:t%baUAS&bYeo_$](lCob#8p8tC&mZ?Kur6OBNhR[OP;BZUUJG_o(g./'0[,, %\VEdM&\"F\K\Amd(.XMud%DrL(ARVmKU^%*\jj\iY+es[eR4WhPOHT$8\HCtP,2'83)#p`UJ'#)+:EhA8Ol@JQWcgM7H3>@HVVU4 %c+-9r++bmI`?j^e[>NHQ`ip^o_ESe.J&E;]mrSb<%5l0sT,EG1aU"SY&gVL)C4SC&0II^;@h=d`M8`@5is]hH8:/g %<517rTqL%\=`Q:IgE*-$`))BqhkC'VqR7>DRYl3t59OJteYG:Pj!C7F6qlDZ!kIs7e%="3BKM %kRY[=7/3]u+aZa3$=$0G]W=qu,>LfE!KN<>co/#k=dF)nN0Hp9qFPXjqcHL93]=iRNP6a="i^MXe"ZX?U6ifqWrG^5IYl&e17,=H %UQNHtYVij1e._P!MkT*KqVpBEcF5,_Mi`3hDT66#!c].g`3<3!Q051`e4rb9ZeG8PV\E@A&t^YEC`/OB.;A %JW*Cpc'5^N7CNO)H6.CXOiS2#T9N`M&_0H*6CEJf(bHt$g!VuPg1,7UGMGOu&Q$RDYDO#9 %A$:ZJ;XV:bE[%k\'Jb5*k:H0_Z>6f^V&-jITiPKO%G\m)!(Mgkaj\=gi#EN9*]oA-Di`G\WoG`'ZiJF"=a:"^!MfN0=hZu.Q^QhYgoZjC^7sfl06bmEi$f^OcNJ/-N=c-2J&684b"GK3i:2j-- %O5a%.7ClD@[LL-UTSs/A7>5Jep*5q2Q*Ec9;b=oTQ+^j_&)jCOL-.a]8:*iMb4DE$+t:R2X:hP/Z4sA#Iuodl8DHkNF>Sas0:1bV %0Y^3AU-bh(b>qfk7ESVnXWbHYY#(aTI]'D!+/SL^^EN%ACCpB,P5lW;Z2C5mTif?_->r;"O.$Z2#d[PK9?<+;92!7F#F%WkW3(5qXL5qTgrJ5[Y5'WN!OrID);nn]'=^jZ1=d6[h^M'F=]#8eJn'1A8DH4[?EcsA:S@\X; %rj4b+2`lq9GA01,o]H7aFH-4_-;VG-`pd=;E\5u_c2s=$DFLq)i6-Q!r>G5Cn?@"#q:8^Z(B]"LXWCY#(YpBW3WF9[:8_U4J(e+I %2l4^m.VeuJ"%O"h0Y*V`9!;]e)X&mj`Pqj:/C<)j"5NgH%)(F6O,%(OBD+LT)'L]D04Q4#ej(R@45rMN*ref]3tTSbI_4)!E;ln/ %UZtIX,;+_anY#R$HnkE(LW0igVrFn;D"qaVnuolS3`C0!^=&GAh%(NGAd'*Xl#SiKK8*c^8[,Htk+3R/sj^7&Q\Ckg3?7CL.#=dUjF[*HV0j7,N"#nmgSZWK='cc1n5;S4"4it+O'Qirn7-PD8H,*h(!ksQk\ %9b\8;6oi(2.L@8T1@amF,+2-%P$Bc5bTsO:@^;4L-i%:!.C`8LMT'A7a]'b/V:$gRJJM1\<&qpq.OfpY30oJD#qj>rcrMSJ_e$A& %=5q@BcW)qJc(nL0jq?oh3gJjUBid?ZcDHNa;S%flXpj@5],8$O]d*YFaGql"RW>`JM\XFn4"Zfnh;D%BmUG6/==Nl2doO0im7P%8 %:d$YD#30I\GXq5H@QOoDlobs.;p@op*jIsC4U$pQ'9K7\(708"a> %3jTsGaJ$j*Z_/mQd&8Lo>o$BQGYs#6*e)879F600:RB$^1X[/&r=%m[-CFllK?+J.28c3nS;uSphTI&77JOuV%\S:kW'gt,,Ct8; %es1tt)1F'.3G%t7JKAA79[G7!Zmu;@Q2k1m6bkE*!ORmm/M)N,(88&?EuGsn5Z8?;[nX-#]L`.2R"q:hk]@DY)^5I\iBZ.]T_3;h %dnL,;;ZV5A#.m]b&SJmSUqp61^hP.1HE[]&/q>h9)aX-3\P'*g&+YQ@oPSjf^47JP!AkgRmYZsK$u)htfKOGmE^ %lrt&6P=`C%kWpT4!5e=9[KZ0<;L?4%HT\^e@-'GT"jq-)D:a`q4.0bCbJmOo_6ecqKeRIqZfDVMe%5&ihpZ"L-a#SPCJP6#d-f#U,k?#[ZLT?Ip/nF#aqlUd(bDoiq(ncT? %\:ZINV0aQk?SIV::o,-NaU,),GUS6/Mu[BZompG$NiHY/=WfN"(H82-=,C6.h5o %h0MTXhi\VR,paOjJ(X"G#>PEZQE1$o7IMhkMs9\[Q`C)CAArThE]c>2e@@"-pW6i]hEc#eRe&e`S;Q?V]3[a0rWdT-rrk!FJ,]=p %n8/"E(:.g($6`cr*P322`o^e0*XoftSS4AFnipoE'A4YLFrY-RY($uZMf0u\OrF=47jZcdg5P=3*9lI4H8N"]en-W9 %3#Tq)s67@M0e#hp(;o?2(Z=d>#+l9$puu %q:D:KR#:3UV6OTq"Tj],8c,Abom<]9UNa9CS^uZok\1=rJ?Z#2QtM>)/&)kG+&ZL]qm2lAIS3refjTKc]\Wq_3Ef6(d@7Z#3-G-BAJcN@TM=&$+>N9q2gc_7)DotKf``e:+NCt,D03d%.9+C_8T-*&W5BX93Y:u %>)c*!Xm$`8hRPmfUs>AAg^q+EQm`]qLNHSQX=*_:8A<-8=nH&2gO3:6SV^85b`)a?djGN4dUWBAAq1N%;oPj&XD'2-_!^@jT>6)n]DIYY(Pi#Wf#PZ^^7?0S^d:K(#W2Qrkd--S.iZ3QCXArr/1dDVQK!oc?MT_fs^dE7F,tKfspd;\YPro!=&Z0hq$kq^SU+c+OGDM36AWt6o$QRZG=cIb(OZ,#io)_HB&C8DV^^SBUEQ$ %XPm3'-31BC%L5B %31=W0m@^^n0'q>mHL7B5c=E=;:G_N^3jDQfm'Za8*Lg9>(d*tt6L/MskJ_,/(\K89_a:,a?VZh)Gpc"h(Foe!j)u[iCZ?sZ@QHj] %MtduaZotn&IsCN2$+Jd[5?8OgBfKCG)^fHZ[(/)+ZX1@@.W=5K.7\p4aE4j5dD%T?E^&m%YK/:q-G_=GIQe^3Qe4,g7J@R8LnS@P %@7&kn$XWYn^F*QUa\$S5DId?R*l`-@/U"&ALZe"F/Lu-E+&;[pgc'TFHJ).NY1<]WMOf5T*N/U6r@k?7N1MlnYJkQ!e&euk/P^d# %$=8ES`b*'P=oET/QF&sibf?2pK\MTtL/sX)H\J"?!?NkNMgnOA;8[]$0R^*72r0ibH"/WrQp,aV>q:nQ"B3H'_L5lh'Fcr,@3)Q@ %W)ABHk8c*<)2>fLQdJL>B!(K87\e#YdaPY1jY;ij@HCO;C>i4r.4f*]3[9R;Pd?6`YSGIB6!a:Af9TrGsm2.0W"^$lI(Ock3c\ %Va6sk#'@V@IH.Xt^`%Y3#GV/&9[GjDJ;2jZaUG;:5u5[p)-J[5;RZC>^S.nO'jAK(m?V3ZpKW$H[ent>K8Fs3q%jr]BAut'hi)Kjr^0hD)h!rHWAFO*3Uh&uIpdOgEHJG\U?-YOYlKdc9lAFcK/E,aWk.0@m9\;,=ZV;iV@r^#kUS_4EB7$MH#m!YYs %SP=>K(+N\t[L"AF&pcM8<6u0=mc@u4MHZb"QjfX7ic&MslH//m<;'bI7INjXDgXA9\j1/,,kBH^!VJHK#-^(B+ %G4['eWIBB/Wo\4mLbmWB5qPh'aIpPdiVb">m4)N3"BTsJoc[TZ(WMNHcdMQ^r1/:G %2<=NljEk_'YAemSHQ[:#bOb;Zf@q"R*WGSArA.4uP5.*d[NbS^dYGk %qt'dTUL(,[6JmNkb%Kb(?tPg/-S5f=5'"QMo6tE?4nV7^d*&`IBH@)GrW`d#kMPJgLnjk!6?1HFrJ"'"Nah81Q]ki=*LhO*MIQ%5 %%?5D0%'djFcgQF$C#:'3OC7pq@6)m>rj!=fr^_91)Q0(>A-D:S[no7MhLDJWZ`,tSjm8Dic_nt8\'XYns#Cnam_<58q2#mlPimYq %LaCC&"*ZmoFNTq>!A5RQk'b"\Ycmp?I&qC:.!S'S,/V3j)fHQ#DW:4Bh7^-?rZ92ia3qHWLJ"*o08D&""B`;W56K;]A4$*>,ol)D %^J6%6%k#CfrL_7lbXo@_!:QqPP-@3Hd^e.a=/?##s5XAA)C4j\Pc)I7@o@sT4ABilgeY+ubQ!7jcWL.LdcpN:8mM,Y3ns9jhA*6: %V'c5q)ZCKN??9I+D^jARI4)s\iqcH9G;aPM8j4#o"TITC]fc5O@Rm'*hCkT#).\;Kq2]XoVE\)MAQjSup#8sr=;U`t^J8H0#u+qP %\A+D"Y=#5^SNem&4I>:HNc#Y[`S:"'Ecl%Vb,XYj)=],$.&[npc;f/KnlD@YhQQ^pnL;ci080NEJ`Df$JHtEFL-qeOp.`j`/S3Ik %V2QO[F8A%,@Of2re9!`iPX>)@pE=X05C7tZ-@jXo=qoL!"pnl`]VBTJ*uMd*48T*1#6Tja48?]M0l" %EFZ4_E8e8Kp2YqA>AF+q[?"+eb*-qYhUuPe(XE8^mf0E)8&*!lfm]'24)^a%iS.i`Y&t*:C[>+/564m9/N_C5FoPO25556;!neoG %7XCLI+E.UjR/lVLDrB@\:RXh6B*=.J4k*"3#@mSkocR5)Q_-5Zom*MqUe@Y-(^fm9@3NP,&5f>,V&$Tg!Q1\L=O>NC'$4G1,AeDn %ZjEBa>/9mq;q9@[MlU?$FE\'6cUB]?0m`k(JPu%5>"&KZcR7TrL%88D-js.aN&##4\r>"@6,jQ3<%5)FUJg^H4Je6r*2K.r-]o2r %3=,4k+&']6KI(jGj;We$h:;F[_ufJJ6ng11ilTYGO%L"L?\0Bg*)9J3DdR`<@!8dO!+['$RnR<6hl9$Y=iV7H,1bU,XYL@9P1s.$rOpGnj[)E=X":k;[dFs_B%R;kVkUH %1^l-;hi$(Y$Pm[LlP#uM)r-%Cru"m6(tmmOk/sl^n8Zk$$(bN=AhdoEc"6*T+#s>IKc_$Np@#`<_mfA,V)S64,ZC,RSOb?$k2D9Q %m0Gl5E!Bc+D*W_8b'uh]Vo87DScrGb3DL6)1&HZOT0HQZ?J[g7p%i#e4eU7#TQi9OY6qBjYmVW>\F@[VZ%R)_OLo&Cn&LP$@B.'] %gC$,2&:-RAoYS)B&f6Qu<,j-el@/8U@&9aqs]`b]@#ceA-glR5\an:/($t@\r-:[,i_K"Z`.RQc8Dm.!*Te]c&U;J18`@Bhu\9D6mJq7kRbgcg62rX`=Au?S6GRo&5d7=q)j6kZtn8KC/b^G7M6^[eW5?Q32ep/Qm;2ar, %@do#kfW)l7.XBH?emAk?BA+X?1A0_',S<;IB+HAhgu.43+OR1>N0VE1)]!t4-J7^)GmVL6]?G'PrQY3J %ScA6pr^q*XH,f]HjUS@EGMiWsAC&Vmo2Y%pSq^Dj#$^G,*4nl8FlNilV=_[EXJMK"8^$aGU,&[[?$5&@2`X2/k;,s!Kp\39d\"2W %oCn=i^4:l#Z!TIS]fY<$IYZ7GeGWmaGTCUL'lRtW!pGQOqO0$rfY4;-1e*=XOXkn=Gj0uXo4.H.]2]*S70],tcr'*[qjbZnJe!+N`r.-P<7j%b9Bg+bg0U_G1Y@cH.VL];1=9Zt>eK+nT7 %nu=[kT1t;U#k8')h:8kkb?fS9f]#o6;D0#TAnoXrlIiGW+@`Y0Ap3S(b[bHWJA17Rc>a`SaPNrqSX5f,q:d/0e_>NluFOZToPlO0SRA2V;2+Yd6@H%4WG,^(akK]EAoVN]Zj=YpO.d%d8 %DRho=;O3VTA9Ii$`Z)_l?^UdKjS+XDhh/BK9'S]?9odrXP-;RDkBsci;`\Cd@-<\ZE7Ji9 %r9(0f_&i4DX4"eiq$i3`Kh,JAtP(ja8+E&=r4.W"Q0&1'c!-^pkd2O,qHr6Uje:3"hTWq %2o6S`'B6KUF4-Z,QrJC2$"/c]!sZ^7("98m!I2t/(8o,I^G-LsHp(sD_@PK:o9Hon-"&(54nL_^t,mUkMJP/Mq#t7gXRu4r=,:BLU/8teeF_&+?gX_A"6H<(hnqeegOD3% %(GbI[0#1ptU6sVa`PSN4HDlM"Hm'Wj>K!OIrW:TRIK5ahW"EX.=2t283$&G.[1BDFehYi=Ur%WCb=_I1:FMq7r$eZ`8$J:m814E& %5T<-?Qa,LumT=LCBd;Sb*94h(EoTL_nZ,R3<9FXroGnPAkE5WsHhTTd)WVBX@E^Y22H=l-j[Tr;GF.6P7mUiV5J(`n0OsHh(XNr\p?[l9Sp5 %4-,)@i,Og]T-lnjpId=0X?mUh%L+m\.e&Y,OlGq]_/m=lmYpr!0\0I5=gGT$/X:.J?8S,PRSW2&O*qTD>f";))tUoE1%QPrq'e]f %We=cmGo/Rk&]O55cCrfjSJi3D=6ts]+dG8QeuJ[6N>8bCt9!(=RH(8M"gjISpK3? %",KkuIk;iYD`jc$LI)(Y=nZ&RRFQ@p,F,n!>N5N&mRJb\FWUiIV4XB-Xa9jS@4r(S0pNh2SW?nZ(cKX8n(pA_RaB!kH=0D+#^]d( %b1ths"8@B)Tn@qE[G[Zr/G/)UPa@doQNha&?Q`c:k3e]:)!L;c/Y?hOYQ]p'sPeUnBG6d61\a1'FS;`#*]nlZTR]#e+bkH/&& %q!M)9$q.RD<5/M'M$ZE;kFPI=PK;G'UH1O1]TV]c2[^F5br&l77UYkX,*p7lkaf<&_8_]/A-m6\]`LZ#A'6''_<^.@X*'A?DqN"q+U2N+Y$0XP4o^]jb_rgK_DNe;EX3Ki%dtO/;]#F:cT0$!IP@%Cq+"@d6o4+!#/XO %e(a>Le?P@$BCI#/hF*hXaf&Jpngm:2=NKB%@&(V]hT0C".+_?=C-*JEp/6]1t %[-kmXA#.6?.jM^XD@B%H-d7XaUY("<#UtG?eaW.XA?=S#Dt$c:1)[&=-I-8K",&M@6JcK$Ga^70/c]U3k47fXg.7Ra'%1sAY=$I? %)P_Y2[.5sb1a@Du0TG6fap=ui45[+;c-rHdCC[,i,J=A?6W9e7d' %]__JMjH"qJ87*1\CQ&tP0<8U]D2&NBc&`:Vqt8jO1"**h5^Y30b;uFI[=Zb+INk9gJMT10_^3bS83;0VW`Eh/`T>!Y&g7^d.*^$$[ZNTNl^Co+[f2EBdHj&^" %,'U15Dr<6i<'(,Y'VUMgR_h-EP&;9=!)d7)7k,!E!ts&;F]:HNg0MgIG`7b3:@B)1N"f\DA)2X+Vn12KKToU_n7D<4mr<>q#"[c) %elaPI-[-_Pin4$D.0DK=IFi^(2nZolG`J2uQdEV1XtS+Ek08=L]>+Fjm.$AOG]_QY_UQ..H3jg-]"]FIHaW;[S]ZoZ:;leTCFuBp %.s&J6=Cg(^;qh$2ZU7OIlCi68Ed)M&5VNK7K@skcag>m-4&b<"( %`En2CZ?396rVh":m@hAPc=?c_0:Wg%-oQ=_'Gc$s"66:DRFcB7ce4oK?15[Rs5*4T4>j]#MC7lE/oRJ'mJ!CQdFJ-adb3/nkni/] %0g]@>rHI[Tp$mc\QQJ5;d!P-T^irj.#5:mp_88RDUHG*>"cd59`&GS'.\Eg`r*\j0e39=43AaAJKkBVk_@s!mZ(DHkdDmOCG&W]`HNt"mr!V#UP.M2$d[!#C'Mu-8<&Ll?mR&[(B %r-e^8s79S1luWbU7d>8+NA_Z!0h8f&]L>MV1.$i01-s(M6^0E!*5*k92+ZJ?(.bKtPW@0,:hR5*-#]5,arK@g<[C&5>LXco"2E0h$u4nLB_Y*@phS9T^NKjN`^s@0J+M %0!o+O44J88%>1j8dGo-X,;,=28+!JQ#eZ93.VjUT/6g;Yo2D4F_UDqCW&1&P''Y0iA`Wl^@DYj`ar4X#\cE^V %KVa`.7[:^(q&pGR-GqcWI;0gTH1X7dV1*W+9$ku@1dCU+DtR6X5[TCs%sTc(fU!0QF_NHWgB7D"k1O/,7mN%H"GC7Xo(e/Eo`:@U %n[G>_QE"rrn;fJiL+DF>TZbQ)b3R"g8/O17L=EO[Gm&LChbDU""B3R*[1OH4Rtr]<;;e>]t_7bj'VRJOr"fC+W4K)+nYIVBMC&@r2[7Q0UB,&AHD/S>hE=g#NDlt %Mu!#D4Z\iZ7BU0YW?l?&Fq/o-[4#r_pR!/H>>r6t\#-d\MHDpgdgf1GVPiu_SuE=CUXtqUQe.NBD\]_O3j6[K'#k'Uedj()bYTf? %038P)ra=J%7N]tAV!ABT.O]nO)jtPaXULR,/TG`/DlbfQm4:^trN^?;l9h:5AfY:aSbG3W<,*<"N%/e&7qHL+gYnQDR]mZkM1qqA %n551!Ok!8QkKKS:4k0>nC,Y1S07T??E^"b)_L1MD:M-s*[4F.CPpD,9J)69E>%"k2EH1$XJp$S^8IYf;VmHbN3jRbV&=flBc*W*!8!\q=OulG]c*@R+B]'8MR>9>FT)"AkNcDGj2IRd0?a2UahZ&]jmnB37!Z^ %ZcLm'%[BCsCra8)VXCk8]Ad3;q[,3/,eet5Ib!G]b>NbJ5ae_9Y&\Q&l;_LB7H3W3a*H;B[#oaZ($\bf^J<5`-=b0D'r,060+QWF %(#nI=69HR3Y1QkX-QUV3Q5e5i:@2acBT*@k<5qsYG3N88i+X'>`$aTpD11%jF*1*h^/*(gpt"iUsLZKI,F:*k2a1^S^%4&'W9 %bATKLSZb`1)l,EAc^DUso\f;/jBI^oS#JFS"=# %KX"8f\lP^i'42MP-b\A!,l=mc+4Eu-!ImYPIfi15fWs'iCTZ&X1)SuPf-aDc4e`neb,VDhHkc\uF.tb*k;EZaC!H-nkFe]uh\*")#l(:DN=;!7S(^Xu2&Ned(`(gm[Fo8p"oO.h$YC=Z>;US9R>J2-]]-?fNq` %+s(YCP#CCj]"CN&\STZF"r?TDI>_^'+T^EOJOQ&hoW-Nf4a7':k)2EFY&q1*KRh%NpQWf3,..'PebqQSMme3)hlUhEN,f^OcLr%@ %DDu@7(s]bXdTM,=/FHtLHsEP:XXajuNYp4N>-iWpr5#1Ce`jFNjk7TRgMY@hGJfK)J;lb9?d %D9pejrLd6S:Z#O-jk\WV6!Fgcc7Fo+*5*T+gb.B5FF3QF^aUM;b0X*F@ITCMu=NXo_B>]LAr-OEb^AQs# %E4^o:79DG]Qu'h0B0u[],^_G>$T4%M!8BQt;?dU?%^r"K*nF,$)9u\%g\CL].+2A1eL^E%jPLnBEHuE[31:;Yk<`ol3dV\5D.Z/k %>_ohALR#DH_QpKAAY\W`B_7?TF.k?jW]*^&gFurk %J,6-5`L!u5D\0.,@j/:WR$2p'fuei2P=UiogM\ZpRCF*qBZsrW/P$#uTdn/PbX&/.d_ZdB--sY1%S1RVaJNnYI-Pp^phpYjT()JM %$WY2(4HW=uh5GqNjkWW?STP+l9#]/320@CaFr'Uq2@i6gNS>gd^Oph]Q.NM,cJ%ESc&PW` %R9lObF.L#*k%f?=TD;6g[HOu$A[Ats/Ej;T/E@q1U0Zfc!#FF;I+X(ZYFKYt^8RU:3$u4S0uq"$k*:ucBeYGtXd72)m-'m,F3\Sr %402=qc/,&b$E2P.$:8jlCbs.:AN+CGAFHI*1!t;7ZZP$b>rT42DVCYClQlc"r3C1ZQkm:O0AG]c,hle;NOFFPXX+Ou@U3%URbEK> %#aAT=5j&#&JSDT$6-NLABif*R>tf-4q<61;FnQlY[lC=/JeMKk4C/dI* %fo"<.@p[f++(_SjVOiX-=*orV2[8"cmeQLn1s;LnLo5s[g.AA3kgID]*@u\ %W8k4dM(oeN9b"9/X>S[jA19#Nk*7C]!7T4C>>jh,->H\A@cg<,CCa=KBU_mnS+o^9.iY#pq74cmgG"0QWnA.A8ucct\$W*#dp!29 %!/eTIXaIcmabPk!02<#t">MMV_;7e!f-8j'Gt198eD<:B"p?En15oDddAt,u':PjmjYl2HlH4p.b[Xu=B!;+*j=jqMe;:jf0i[UA %YTnpgk>JX8jb`oD'5)c)r,pkUCAl40];et20k=GQ6S!R3l_H+567(nG=Vf'r=<7!j-mK4ENn+ejZ)=:Q/Cu)T!cjVZbb3fc&ASCCBA.5IAZ[\H^&6AC;V':&gqRgr+1+%9q6lM$c0o)>oelf!eH61;B+DQ=eXNpGY?G,Xi-*Y-rcXYnJ.*mX87 %TVhSg2m%kamtRR[J%Mh<1O/@:!k.-83!X@.fKhZjMD+6HI64Te1Pj"DQ??"NA^^fD?+lV5/O5?j7-\)5D!kLgfb:p%94B^5^Y?K8 %*Z6,V4!AJ"=R?N?]Y]Tbk^qu?H6`;s(s]QIp&rNQghaV.hVP!_=XM)Zqjf%h[o>_IV*%_oAmL4f;*t*N+6,tsSQ&!_/R7$loG#rk %\`T:30iKs2]X0UG-e3M&5jo_l@=,GH[fKtuS:!7XJ2$0Y'`JiX-d+"^hhU[KP(t.NMco#$/ %g+&ardO`Bdk%ma)#tlBEu(6.@_8_G$><_bU"8VQoHV;j[qZR[qT?\8MpRO^npoik[Zm.U;@B^X)3HQgII$6^R>nLfi6VK'';a4Z.c'Gd@o9$B!k_AD2"O` %fWCR!X,q'h_!k4M1/`P*)`f*_CfXu2$s6K]m0T>^.8iX6+#coUU@\/ma\2WNXOuprWn?]h1IkW^hLAFbY+3Pq]c(4!b`L[`OS?&0 %Di,7q=J^$cBXrFS?a]f9CpTb`HCos4^$b543MUZV%,\%ieOadsB&QcsHF@fNjOE:&Cu-D>h:H:bLn)`(^)\4[O@On&mZDmcs-=3kJ)SqUK\Wk$ciAVDF)3PUtUmWp,IWl&=L1ZV<>[6F@H7LD=pZ)l&5VPG$[mUZs'c@#CbuR3hok>IIt+!24[V?R!*%O(Y*Us[<29@Ac$4',@Y=]bM#NFSV'P;*E:K*e^@Tja1$Hs %Gj=H\*!#9L(]1LX0cUsbH$"-e31IfgiKIbe6+i+]T3#[T,tm]9U\!b%]aJIpZ9?lA,G[)[oQB/+%NGjh,/>jr!X7&QBB)ahG0,jq %E-/\H>4Q4R-*k/CbX"D*;`Ye5Up.-Y(3CHSeQtrrQSp$C=F:$1f1lVVgT2t^F/iBer1LYZC=\?)\^S:Ub*bo:r\8WZ(?XDgqQSFY %mOTiuS/'I4H7-5qrab8d].F80^''=1>MS5rQocZ5`Uib`q_?>D=r_YIUfOI2Fj(l.I9U>+Y\@,dEI>2]D9kn%"n;G?/?rR_*`B %r+`u8$&4c;DdCOBX#o$n!V.].*AoIFZT52(?9[]'If:?%db4'eFZHHU1uH71ZmlLsL>0fsZFXc8:G9gb:>!EAEj_L;q.i%=)8@-5 %CqU(=X$ns,:dMi8WjTIp:p"$kL2&a(%:ulN\bYPjq.qN&"'[F4?mqnU"*]%BK58oP.a@3"Slj=ecJJtbJ<^pdH$JI856;UEZnkrEGF=WbB+WRTd_U44(/>#'ecP[ge8S-38C?62LRuU*j:?%]In`U\*\r^@F'jfsJ"]l$KI"/Si.1XmIWtXocqF]d( %mP[t\PnWRD5IYs0'CIEaEI>d^/h.t=d#LlDZV_gb-fs`k0$3I=]u-!s_,jVXe^3Ks`R`7b-nl^?:Bh=Z;g]oSs3-Z\-+u"GL`8ZAuojiL%@r:;+&)ohJ',18]i7lIub) %HDXs_r=:km*69mi=n %r>W2'$^PE5DL^GOGE/R`7odn/(9MHLL+-EYZW3!cU:j5oG`N^#ULe%iZ7)6mh\5i@;l#@k>Il^ZlLL*Zf[No1 %HDDW`a4s+h.\tcJ0l`cmbuM:^rBYYLa7%$18aYE,hm>47>^io37+=9k7iVGFr1blR-h:1ee6 %f@sJ?;#mJCoAo%6Bm)QpV1#S.jCtV-c;"',nEXoD[-NlU1_')r1!uQ\d_bfjX&;4S4Rnm:@^/_05l.gu2ca^sU=5CHlZQBQ?D_]g %QSW^UN72hq`CfIHE6C?Pm<';Z@.2gXg3TR2?M3aQE8\cYP!X/hJIH1#8^h %DLAIfRdKH!XN0\W_K=h]?,akpd_QEW_1LpC3O5+3jS1bFYqF7-G%HoD_\BF<+%dPN-tCA=8/MR44.( %akl[Y3Dd5tG)_cXo;9XLdOqZQ^\CP.VXHNai/OeL['EJAMc)gB]f.M(e@k%f]G,<8rb:XKHmeZNSI*2^<&a8a"YAf/?eXdK$XgDu %s/n^Dg[fi`%l1jlMC!F;Z(rhQQ#bh`mnhDu9r\2aec=uZFDjtujrj;lDq-ND@9[pAW!3fQJ+G-T4o``@!*)*[2lHebY2NJc(Yc/$ %:a[`i&a&@B=>LG(F.s_LfVVZ!)O=LT!3XgRR?D'L'D55R(R%U"h)Qqo2EB<+([m)FkPFSAP&"_!L>)'# %5OHhiKhWNQ[P^2!cT3Re:h-o\\UHT=e=Gm6l+X)-. %AX:W,kEddHos5^nlM6^7Sa0p:Wo$8nJ/FgBB0@Bt*NJFtlY"9claN=$E3>i+N\clC6#3I[[/A"PpdjN>D0<"RogFR:H$4/0TCo14 %CVGABoNXWH:tK4oo\/L))=X.Pk=bDU]NR%2Q?;R>nqWUaff_A^deST9j;uPoD %V2`YsUiZL9NLaC".oJ;jf2#>[[;r;)b'U9L4P.oJJFl7JHWEpfp&L-"?K%[d0LMBC3g)ReQ3qos6j4D`:[1G5F(#hVF^fB>*0'haOd6\UN,-qJC3nh\qt@XNok\qIM_YWI?oh %O3]_MG4>3[eT:]?3JpUF@CA8LDl))QF/kj;0sp&QI^429T'EdVH*3d)S+H1Unbu;/p"MpkX8TSXcK\`F4kEJaip^dV %c-GudDpO]b\UL"a_ontSC!K4LY:?Y[o43!DT>b$[eiMF/`/[E,^re4:iOOEg)kC#M8fOAfB3$(?[%j#[R\u\5R9"3RY2=PFjeh5; %BaiV9WIEUg*`SctB.X]JLIkgaF8`0\6[9ttbB*W`$Y#A=H+S.rXAALFnAdFJf?_SG,!O4'cLl8D_eaP"T9b];;uJ8JCY(Ptc['W9 %WT&#IY+PCJ+F-RmWA;%?4Z&<;>pf0[lAcD2H_h>[fhm^Pql8-u?H"a$BBtQOg9O/<*D;-*[&Z-@)R]>>W`*6V0Zs]Qi%b=:!gQV1 %]Ce7A:dpblru>-e+u.tD1ssAccpj#*.)tF=:[h#iN^^Uk_o0G]WgMd4oC'$lhbuf^8o7+QM9juJH,S]*")VN;a4?uc-Xl$/G)nDLu+HT-]3`_ce`at %NHpqEn"[ZsUN[g&L+`E"^OtDJdXCS;(WFj.dh@,2??kJ+X)[@%QRjflF.-`pgBW;/mS>L(lIG"*-k9#tipo2"S,:'h>r6M]<,%d# %X+X5'Qd:I6*aJEY<:86(ir&+i+)0ie^sF2qI)5KPq>#Vl&rI.WUj14Q>iF,T.>9hS@W]-#3+PXB(r(moYcX7IGhnD_3D*;e@+/ %*DY'I(C8;CSub&=rpC0!7?A$kPMK??'!E&.g;S?roBu=X=Q;Rt6eTu2WK99Ql'Gc'pM5#LnPVGJ+_m!<48EfD8o&f(k5s3W9$GLkq_%@DY-pNY876HVk3;g@fq:%Yg?Q.N-$O!lYLFpbN`'J)[pqh>G*C %!f#_;Lk@D\Q8gifrXdogcZSCAXmf=MC3W/1G?s%P0JiNdDZnTLb20:K"77(/h7@+nnu\ke`n/>1I"P;PL`Dq5di4VS4ArWAf^$W1 %6Fa;D9:Ar>U-8=JQa=53@9S:Fj[6Bl3+=G*Dk@*^bRCDCi"TM*4e3E %\bob(ZC$+.qai>>M?f_V*_DOLcgg#`ZnX5b+!*T[6&Pu6r=L?m6Wdc&S?JJ+TC@EQH(9@F@u19V]rMkH#*R2kn)DdGjmsElqfjF6 %H!csAdEJJfRQ['a<:EoslC>Qc0X;HIenef(]T,1u.fdX?2r3Fea1,K!Bo5c3\4T?_$$(0oV=g:!f4*HXl2FJM?s+*4dUPK/( %q"&'Wm`%SYqo9U!jbpL@3Q:jb0q7r+9_^Ca,eDmdCF(]G']":6QFHt,O,L-&:[nQDqn5P=FO3]''BAn6Q[:VaNdt\cOebDE5W@?" %mlQ9r32"h#liQ9rlQNg^YL'7)k[V>cm>i@KlFU!:o&\2,9WD;]-2&IR^9?*J"5h&QP8j"c'\6!IHnU,9gqn]u_5$43jm%n16r/%VNdr)@cM>TaMW?!#gi:s[U!c[iGNiF[DnT37Q7LJ4;Y7q!5RWf0LW<#jXX=5bBU'[fs7iVU-)nq9K1m/)j(p8S>\#=[+-=6k0Kj0&J]3+hs,%up"qP9iJ*Ar) %nnJY.`_L53819cp?]Ck5rV2OE8GA@X>bF*)O7l%CnK1_mi)r`q0aYY4T]<'f+p?%arAR?%BLG4@jI],!2`1p$?e7%>T%#$Yn(aQd %M>9U>c]/:%j%G(3MU3TW`:/"61Jj`NJ?_;(=q_#kF&e+2BqZSI\^IW$Z7c-arX!7?3f&6"WQ.4qG[EDO$/anDn>JuN%_Hg6pa %(Kkq8WnoMJCJB.>o(u+X/?>'kBhEJ4R.e=c^CFhVrB9%u3UMqhG?$D1$"C3q7U>Q;ki)e96dphPSol-2N*3,P\%AWZ;ZP^L,%DRD %(cc$&jc%uc/@NrN!:[JQG"-@ns3uN^mI+g%%/u'DSPRf6UqSU[ID6G8OdX%[OMRNV*&>:.6E8>ImgBGnI4&kE$DV]$cJ_0eW/Lq< %E_U#C-HDZ757VPWH4]X;CI&qKUGYg=Eo:,'qQh/1N`n"a5Gj8#%\Y4Xpdi;Mh)pVBk\_9&_P^uj %MOOTt7hG%L%>3GJ(-_TYcc8$%6a@e-SDJk4M`DV6L^%OqkR@%qYa!fc$#08dMQnF!R7-1Nn.tdMIriJ,Bq3l&W+/lH3Y\i.:bM\j %3P`1^XUf%ZarR6BEI#+,P?bYCGBiaWr_D'X`S9D5!==ATbg>kZI=/q`#CS-qmhla1Nc*L4Wk %'7gV=ap`cK4Ct2-'s$O+fm#nQTR%6hj25B;$t0gHADmK3hNcAs;XR4.PBOuaQK*O@,n@\E'6i)OjGF\u=S?X\T*jRcE'*iu"[DB+ %Ig;0k46MV=>NN2t9SsqaVYu&b^Oma'O]I1_"MZ4^$+#>Z,BS*2M>te#8%&;bP7IW7[.>aRa)aTj;*.(%7PNkL6M]$6-ZJmGon:)8 %E9lO?l3T%`/Pl0$OnV82M`AYdD8W2O72NH]me>s*nf^]U%gf+OOA!fiFGo,2ja!PkS`_f:j+jQeI7i?t`0VhU^V^_g[p[sr\j4oh %R]_:*!TFk0(n?&[,=AjYnTb=u3-Tk7=C_gLpm:ksrj&UoEejTb>,]8BQs5NeU8dWhnP?j9Ch=tU:o4:6b8IG$.1BW_pZbS %a$pNh/7Wd>CbYEp"fksP/H'R!+Tc8q+R %V@ETdO+PnqZ(a9+.A=SQPUV'mjctN6NWFknk$%@s3YV! %0fH\5KTu."<4r[VU@Ai)81J$57.rLr<=N[>K$,)a49R`fM#e!LP[2lo0H^mH_Z^7MgFBF=G+H$4#2&)P7[Y,?66Qrh]\r[>OrtW@ %8:Z"B;CsRFT:/BX.1oeQUXk'NQFBWAb!hW;omP#&moPHCC]3NR%i=8Aup)r3!bZYCI3WNj6\F81eNHV'62.-jnYD6;5 %a=`)!oqC^]dCj]a&.Z7eL)ZhjK0HfX(;74f,MT<q4FZ5 %3*$'ZV=;APmEglO%s>M(?BA&#c[-:9ab2(cQka&0Dc%n[2=A-%d%;c8ASV67aeC*A5g]?q:On %1GSQ^=]sD^WseGo^?SV0"1EO=QZp5OC3RIF0p&kj?:Jq)J5h^U_):EnP3GW*7%La7)t`=$)Ktj*KID1!"fB=%`9VP"98(@U>RR7IaS]Q[-OpALh]tBA?pkM\2\:,gQPgkOPW0:tbYiO<'>&U4dD[3*gGN %U"MUZNNZLkiQ\'\OW_b8G&VH7o`AL6G*iT7QceMYjh'h2^O,?SMLg?3Ee'2"(7[GnQ2*^qk#\ %3#4%g#RG`Eb=^oQ#u/n-^JCu>W\5IW#`t7*L_)RFdsLPteob!c;gd.\_>_9cqg=E<4JuBMQO<#uIsCf=gHNZM4b*D.dnd^UdpIM" %h4O`8ot0+0oD>`*rSdRu5l0#F`l!ODV;jq;DLYA@nRP/NrpAE$GApMn_SkBPHES)Bt)Qga')Mb`$0.GEGr:ZOk5VZ==l3_tY4_lL@k^\<1`+,A*;.@"E2FUh;13`KF+%h\,8X'@@E %fWfK3XLg>bV/[Erm.Ri2KDT%D%X'>+qO3A%NGfp=`!n]ml_VOd&So3[j7e;AT\,dB31X)e4-O:"Q]/q:0l/c;CruqISSWRLYS1#Q %%Y>]1RhIlP[bdj6Qd?,;1"faKRVd3=YTDNd\0s-NGM`\VGS$SCmhp*$hhArDmsqVgg?"+cg0]$FcF(Vp:rXg!W0f;It(V#uKeO%4k %D-4Jd9-u2>f$Y&VfuV`uCs3fM^kTl4gRiNGB$[ntG(rpM*aiWBYA#l`WG:cPG(-JKE2cm?2&]nF`h8r&O#E=fF6Ce_>NE[8B]L\> %:%%W\%`8P=q]R<`T"VHXD-?:hPgLg7/lWd@;eKI?i7(lg>`E5?Ru7^#R;h`JX@p!. %`lEg?dg*F*`cPW;aTUE"TA)4E1WL[F^m!8I^5A)0$JaHig92$&U %"!`7>XiqPP$`:FQ%6F97M/ZC7MC(GNX2=%Y2m$(/]qA<[BMJ)-Vk(Nf)4V5\)stj:`CPmt'FB,b,5,[t+/#9W\h\&Z4O#ua`\=pn %+.aZY8u;e;P0#1-8m?"'<5Y.B.7<.\Qopk(&?)ba4ESfFak6e;HMqUI!FP[%C14Eq-M'7W&E"e+nE`QcVBXP=NKbQqmF5!f@03r? %U)hG2];Dla@n/5O1a_n<9KafdWIleYdjEG[Ke<+brY1j,&"=&=K+2[V`L-4HkGnIm;\.Tep6b8fV'\"WZ;.Y$E\"VBTj+%[>ca9-h%7@ %,6Pr5#c$XWil"1L2(#7h32Pl,.+/ERFYFFW_Zebgq"G]7fA-d+T(dd3 %^?L+?6S2gM"k$FT4d?qgFtM:GApbjo*E0,9WL$FA_anT4fkoJ/1*=tS)^nTa9ep'@UQH3aU=_P_>+'V[`nHjJT\X18*'D"CEmC)TNr2%f"qOG-4%"pq$^VUj.=cEBDnUDkD:s/D<>a %V46&`$u8PDW>AQt$Epa2g'1(]3fZe4fsoNtL+TpAZ2Rj"`"'H4[W49[S4>N@/Ri>t-e&X:)kXRgA@#l4fLNN57I=*fbkMSoeWrF- %^+g>NJg33K+`g9haP\WaT6Lb[#'d?m[=l8U,0MW1'`iM!:i.=LBY;'":3m&8[Un_1Vq8@GS3njZC`b`G`pm=c9_Ak@R;s<^ftq6L %a)&5:LI*Q9,[8O52a`l&R*ZX'Q_@@bO%Bfl973i(T^$!efeI3*J3_arTe`@aE&-.Kdtcp!TX5 %'ShH1I*[B.R]5HoEG]bd?Ki32[HeQ&/tEe$=k'>qJm&-:nUk=f[c&qD%5r1RM6pH<265,$()If?b)u5d60!:-?p54f5Lh-1/1(mH4I`jE#-7-/"%21;6tAc %Wo0\(!fh+rTadB\5bSOn'Z#I:(X%PSL5ZEG'uX-*;_4i*OnkN(]m;)73KWF1P3#)LZ7ZRrV@3-*'Eb406N7WS5_p$E]MrUhd%d*4 %UC3BNM,2Ub0Gjg %Vf<#'!uA_-@dfMU+M6'm@BIN,&d1;ENd`U&NIYdK*#HbH9Wp$JlgR%PU(F'T`TL6SE0_YWq^I[QSq[FUhs&ag7BB6'8I&=O5T %8ho:ZYF/!Z@BMN?"0g5eG!1jd"S]8pTOpIdF]8hmL/b4ZcSHPofG,&`5jW.YjH?';'2*B[C^33W.P?V3VI?XkBF8XDReDJjG(8`,qq7';hZj]7Of5adQp1aoIB`V(.U %KCA808K7cB%N4CmFC6Ru5/fCG:^kH>\T&`4^ONgS89TbEqua1]kRc(%n;om(-.?qb`c.cc(Tbg>@[F6*$VRo!:i$Y:.K,#+a('OB %c?5(Q5Q0[W*!pcKZX#aX_#m!RDN>]b''Xs_=`*;ZF*5b2r%"b^jP]8&s+7q$ch6#Q.AA\sm9mt=cF*pk$V//I6aAS&]@,PRU<6NB %n5-T^$=+XZaF=qNac!nRTpTI6hDk!FN?i(,46s"E7!$9P%bYDpKjYo0@MCgc6a?SKt8-^ %juko_O_2"_s7AQRHtF(ikL@RAh;6jXd]&+!u/7=MWS6fEF^lp#TMroSWP@B@p8mKC%4Q6?D&\'PVo,KFAG %mRN*8*X9+/IeP@bX)5H6(T\!-QuJ=A;-I>Mo=KGE!LjU+q4=c7n;.WgC(R%Lg9a[.iNlpV#V%0]Gf%TJ&C=qt,5a2jpO`E8VD*sL %-uh3I1cTsBJY%LrYSVV^Q67h`)"NrE6;n:i$1:*aMb%.qi#%0!5/=.l9Z/!GQC1n(VE:!O2L8,H#]P(uR2h4#_q"%!#%FOXdnGHC %p7b+P(8kY%%,IoqSjMbdJ7;mDKn^9.HR]\mDGU`Qq?ah#h"@%h*9!EIFFJgE;#EZaWDjf#KVN$26K0]S@-f7R*_Em+_2$Eq/d]H" %Ui4&*'r!h[d)tnH3i1[MDs&:]@h^>aA4TM/S5CVl,fkQGMF>-5kWnke'`rVV&/DD[84?p>iE"$b11Z77377]mPj]J=?l)S5 %[(PTk%\"\p24m^P^'0_XeVp6p<"D&A=l0%o/FlD@_H%n>[L7BH.@g3@3!e2@j;>MB&[\)Y7i8I`R-N:L]D5:b!!gI<*!9NuG;& %jS\L:@HnP+K-)!qKm-0TmXjXH]P?)Y"1j'C`JhpsbeUa(JPhd7a/V8gQ?Cc`X1>o`eu;p53#^[lI^7)*nS3o9o-TulP][l`p\qcg %Ba5rFKA/"p>s2I4&pBAEN^s,#6'[=ZQ_q2[\-\./Kc]jENNhU`MZ)L_'b!P74qJZg^Or[Ebk(QK;<[X!\=_]-\(Fj)6\ZfD+c"\2 %'A8Bp[?kHKIDPV6Hn>$or+&+]^lZ,/a6kR"f<]k\N)\fY'RXNKV$3Jn;Nu#LQg+A+]7*>dZ*EKY_(']BT\s@+KV46WMMN-LO?dc: %X^,L+"d0B$#$Q)6"U#PC>K'dpc]7$o41aoMdhE<">+A#2Im=$VBhpZimlQMaj4rV %0p_*[1&DGb]#FOIEuO8XK+]4;6t;GugHq?2SDat_u0nq"BPcq %Fq/3?!RX#+BY1$0j:&6I%^cu]>".=P@piLbfYqgi]?s3^(r?jRadP*LBub+u6_jH/0S,#)0$5m9)\)uK6i[Y>(ucqNj6BIH3aCQaACBZ'?JW`V1Du*FpqGWp2I0WP1L(cApr!GXmi+q&o-BKc:[pQk#S`^_K)!KQ)/>/JO>Bb=5X#_uFLm)9qrtAlC1pZ>o %\(,bYWCRng$*.fY:lZesiJd?[g0S.t_+Z:ZiU4j^.+Ud*($;M:UcS-klLn%mb7p*de(#*4/qWZs/=:EX]\D=SHQ,ZMH[81"fTfQi %A'XdN9CbmmqXf5]*&P<+Pr]g+6rh7C=FJq3"f+TF4!TqZcG*R^R="s@5fLB_B1/M^-N[5*DanQk,d*;J_7%jXB62&,uoCr2=n %mQ)&,gBns?LZSk-^8Y"]lbY12HUTF?O>2@UFiQ#+3=n=>q1O)J$<4-Da<&4BVBc%,n-4kU-cGV0*hZ3eu6hNJ!XB/";\ao-C&.,#6I_jNhCGfanGAp7f$^'sS=s)89&:1eRB"B[_&ABP&j2,l, %(7Ycl9t>"e'--K9?E-`T_soa-j\kb-4#4*A?8t9lcbZ)DBEIhK5,KtmcRIQ&o^1.o`_3ZX[p5Q"UcpQIa_lSH5Ee\;nHi!7+DEI^ %=\j;Bi'=qh=1bktS+cQDQ!N^I&^$R:qV%AW4/.5lC;">?UQe9+O8&%90h;CT#d4ZF\gcCB2OO]Z`=^g,.h!d56I:C%^i[m?=;f-J %[4e1K''qBZOGA&fS05DYL$'R3BFt>k?UnC"46-J2\(!MSKrgK($NSK]bHscX&mjbU(?h`dYh1!Xb&k(I02ib0gH1 %T\'6qV?(:c!4P=H[/j5%_p_&,b@Df)]4q#^!%\m`s"'/ulNGi[)Ve+n!M^3A6$ru_C`2el@NoXa3*c^=GEgB.\Vj+GN<9s?aJR4Z %I-=tpPd>TeaQ\G--tI9tfEh\[#h^AXRt=d$Th+Er=p7-FGS0lN3?^H(0#9%!AcVD$nE!sFYREf`*"o>6.Sn1FdTkq3c%+FOYqkg@ %6PnN*@Uki:7=5(-1T+iW-U;:"3PCK'D9Sr8)CJ,H^mq-hOG$)'.j0 %R1?R:M:9l3hW*?)HObLq=Nf7;f&*aiI0COie0;J'-3Xrt?\%Y8d\<*sPYMYG/is/YG'#s0m;rVT\;qJ-gpFO<\=s7/5aM`")MG;e %6pN4W;?S4=VL"V&7AE`7\m3L2EDsCEJST2+gnT!!AdKm#G.3&)6AoX^bEFHlesQSu"!4cZd!Z9B8,tAhMH[\MVaYl5bY:``VX[+9 %_2ofpk]?B\OJu:#S_5B(M4#-qOQV!PVrtTT>BNds+8'NuPmd_O!qK4@!kblQahha-_Qg1E/_j1/DqeqY(M-hsluk&JVV)SknL)^# %0QD/Rk]5XM:oFl9W&[bW^AJL0;%J1BWW@jH;k[s+b@_`Ft=CBrJ`iCA]rd<0o/mR%)d%Aj<37n&tDU-d?"pK!JneR^OmV__mZa\Yodf7.#M[,1F7-&AnHb0VDlu:7_T,g64PH/2GhmBHI,<4W>F#9Oki37J' %9V9pM;KJe\IY6>\5Vm6!"%[^dL6)Oc;\Kh?V9dI"_mgm#n1bF3=g6Y; %WFs7!SkC+BgV_b[H`k18g=t/X-i(br#'7Snl,/I6%f.(Vns:1XB4SkCP=BNm@Y0+C-k-DD;HuHr!-B8dM>fl?R3IX^"d'-&5!:I< %aD"!R^VYATB'OZ*O,esiHCjEOaW9jT(e:k"%36>+(XImR`A.C6?B&]CTK[f#LfMqI?l&?sL/0L.8O4>d(+t3u;679Qo\r]mH7g,0 %KEW28]LdDpZ9$S2"L"ARK;"cjoFE-_`&V:fYp@'\`*fRN]WPLW]p %TW\=['-E0A0`99lLNrWI:\JBb=O5G?Z[pQn!oBgI4Y*$m'Dk#6@rS+Nj %HMd$3^AIVJs4a,nroo2Fr7/RV"oGo]r8ua0qNE;K56(6k^\R"6^Ad[>Il3?Oqd7)7iU,qa:N%:PC#efgIY42QrhuB,&q'l5R=fG( %5Q0:,YQ"Oc5NI%*&ZoMdlt>3D91)f@-H#=ER\YIu %,EiCd%Ob^XE[/9_ouuo=%eCeHg2F,"!!$hT.,On5:PVuJ*2V!eP%(D`1"#+2&R\]seF2ec#,nG*P,c3no'J6^]4=/(S:u\4=DZ0L %"DBSA;ja4p\=.bAC)G"8oX4,"(.N"/jSK,;s1ZT;fTPb3RHkXU@H*f:Wu`V.LQr %^u?M](dh_N*>A_7?9(,.h_;n=7:Qr7T,V\J)5YN;d?-2BVn*QQd$PjV8k"u2'LM@OJ?>dm$D&1D-XAE?:E5kd!bOPg^1X:$NBh+D9`-8+`;(JKcL@K:@C:@`q=r_/Og(;A=1E\0T#hgU6QsYiakE1<^5;L)j@D08'a6hDX:,,bq/B/ng%lP`L5jYA0fZ(VC;fKq>fJ^.&==*E@Onm1H@#M^0\7A)%B"%_LM %cT)IK,bdXkOl]J'],oagi'1&n,79kaTT^R5&/quL9Z>(O$C>Gs`+PJ/AWiN@i=eLe=r.E9s6'8,UL*@t2"W6o\fZB#TQJ>8A:^TmDC(P6d=tsQh(7%A$;*OAF*)K4ug0B"^`"0\T %@?=kME(]Y*nu[aS7''>m\dWHh+HYiIm(j?)M[.Jm3E+-`4>EMV5Qh6?"IV%Zi_e)'QiStMb5?2)QoI>X"qO8jrZ:PZU:1W/.\_mB %2U)a=.9rk[G??1XJS8OqbXU)l6d3opfq8lg$5V4WIm^f?KTRY0X-Z=G_R9RE)8RIMXMV)KUTK=aoh %-+]uo5^/'q/huX;%og@o+\eW\ep=8iets[KelnLb_.eWX-QN6PUH9u`G_qd>8b],fE@H$'5<_MCe8&*H/X9n^p\s4 %L.;OenX>J7.?M[b4@P]jWP+0*Cl3?O&jALdZH8oF`oUX/_sm.&c9rgd)=BX;@MIh+#7Ad)?kuj3^b$WVPYlbPC!e(ja9M&p>sW02 %pg,H"n:A^H>`:_.bR0g"*HG(-n$\5X>ot*u:`-;kd:/`),E!"-*b23tP@<4A@B?h4V23QW$?LPjKRs!VV&$Q&DWP'8U^E,H/)_Ur %R^d-D0#PeeX]6,3\nI0G+mV/]h1:E1pGOEV`Q1&T6`aDD<8/VR;[f=0kc)!'KWl$o-I68t1'o(MkLY5nu_#@N(RKo=9`?k;=c6j?m\M"0DF':=a[ %d:d8#%ET,hh%,H26f@PEKAA*o5\VS/.uR"NMADD$0W,Y1BP;-Li)uaFjhdS2"J0[E"asdX*Up=5:7pB9Qk-\#JSB_A"=\(LOi5[I %i4r=iU$j3Y$&SeA,qfq_.7cElIX"Yhj9?U]"Q]VKAU7&>3<^"^]%Y\j`A0\dL'K-TR7\#MT%mML('#;Y8FCh">u2@@'LgU`V+P+' %h$=$TWOZ\\2m#+.(EBEd<\`.("[>9h4AZCPS'n]f=YZ:)VPI,:&BXn2q0fLF^cMl=&,SE2moC%$R\IbEAoe/c"upS#DjgYt'\%o< %8g390`9C?b\feVU-I:J@Ca=c*'E^/.J2`#;ftAf8;[*SO1&+6WMhPQXR8Q>b8;@bX8"P2!:<#[UHC8tBB&k9fhf)5+P"pj#t@S8(5d8h*=hDcYLi&YoqU-2 %P3n3k1f^rTOuuF@'&%E*5=Ig?'LsK@12i8,EI.pVcm]'DZ?!`2j.\koeX^\]h7ZWd4etFoiaR5ZC"6?4Je-or@*oC?,)%D+k71q0 %nJmc2=1\as6H>K]\QqRVjuN4QV7je=AdH*s:IE+c-e`-GZ-<6DVfbk$\4dn>eZ)2d_2IN["-A@1i>+@:(g\s/IHo%TSIQf1^Cr.d %S:]s[0o$o1+'^T,+!D3V*(lQ!muQ_ahGK.sScEttIj0l,aQ;f#.QIL_5GD!k]cHI]6+W/V$"ikdY'H^$d=cCQ;;%X]UeNnhNO7.R %),4lsbma7M\ERENUa/b$'#6*-Mc+od"75,d".F4KMj,?'7EjCdn6i0'Wh`>D8etc$W)@rM-!J;@ipRET<@LWA>ElIW7hB0W?'aF_L_@KMa"loJJ>')u9-%IC9b()`1&h"1X %B.=uYR8?D:;.dBSM=5M>)&/D17.f?NL-6`KMhEmT-ZDmW2.C0^4I1Y;U%IQILP!R((V2W/Wr(%,l(/,*;]QStgiOkmS(8-Ek:E.3 %0U9UMdK"GU'H&;em,GRQ'Pn8_GtsKT0VTEm""ouF,u#.=TGQrAh5HjUV@jf?Yf=mU8a?ugeamWDTal[Y#B@"c)+mI(YOn34oK]B2 %cN1!5jA&`&(^Rf07:F3A-B^C>TJ7%<$c%E:.(b?*NU1f#Q?2bPesiS7GgWWPm[OpG0.t<*fj?fAm\1t>*Ue11%E)eC$B?,AM,0q@ %*[CɲTfQ!oAC2i1jW&X9F*Kn['Z6"-QiZ4FSie3\SZ/;A;rW;huHc&kbXiY;7YWYa7ZkE8egjhe5(8bPOjSuJmQ!+RgEof6'U!f[l;Ys__J$\Bf2q::nl %_TU>Z`D#s)bUC&u>&n:jC,0!2maE(RS1)_uo0m-%bao:(heP/P4VVL50GENSK"'.b:'6GKM&!Uf;bYD/=uSS-e.TR4Cbec2<8cUE?kr]nRt]=qrYGT=FH9Pob9jO9/c_Lo87UpqmgT*'.cPh03hnMkt3^c"VM/t$MKnTktj.26OEQJoBe %X=5^PaA@]cNAR5Jc9^t]+2mVeO0O`'U"J:V[XXsl5YDLS %`ZmV'"d2eh"+_F.YL/PiBhh&41@iH%h,RQteIM1iP@HVTU8Nm27[Ml_Lga<+aDsghMKnD+=V_J:!$BmL.$`KGmr-')cfqSmS\?sp %fQSksJ7M]X?^8@c@&ud9jY(.9G/.uoVT[hu5aFtcl3eATP9H#MU^^YV>Ye0unrfN7Q1Jn9rnaLu$$j6VcF^#ikq%6eZ7+=G.\9\R %_ZD5>/KoG&L-gN=Kg`=3kd=t2?_8+!"%4/?o#F-.`+ednNp;SP'cI\>OI+YfF=m-'q?:mejmmT5ffY$Q,B)AI`;-jo)Xfa %<2,?s7h=\.E8);EF=!aHN@`be*8koFBQRa0.Mua%.3RR@6u2sQ,[#SKSu"@gZOh1DT/^WZ&>S"Ar[,6&@U=S]-BFC_gT30fhp'/YgIO:_a"[9qilS %1!!@WCY4p_e_@X(@'tRc/iJGH5%7?^Msrj64JnTMWb-ZXlIl:`F>#2+f=6$$0u2_8-BKL3hWnASr_Y<>&;Dek/0g\$2heoC/I8,H %):?'^:RengP[-!1PtA40;HU;!m7j15#g6:@S]gG',*XPs+\[gbqADT2F.udiDp&)TU%ml/g#:@Nd.P]F,\2AEY0f$^-lVE8?)!d1 %L7,NZOF/.RD`lJ'Q-iQg8i2eSDI,`H":p*YrVU+4n:[>-jT$Z$nSfZIM=V8)$P(FlcX28GXip>)^nL>=@/oA4,6hQpG^^=eqm:CqYT;ai+;P\Pdi,caM?%s@,n*hlG"TTF]4ljd. %baV)U(&NAi/t-P#S5sVie;J&d+9@0$^Nf#UZDFE'I*dT0$<[$Q4d(2TYl>+/(>ZgtNjeh/o@/!#VD %YuiT8bC-=tVfYk;QQ,sD*PDW@Gl%mg3"2PV[YH*2&^C@p@t@i+B9f.K-Ats+#;WIjl;=C*0PS-NUI>n=M@`m#Wq9O<8lq,doJl/, %g253*hFM.B2IWi-Z_)s/=UZ3/9!`aBMi]4V+hfqM5cWLB:du:>oEbWTb>Ykup(Xf`kBq*A]MhX_]L5aZ\gc42?^V@\?nXMJpHD3p %8qA(%0+uto4b2\f#lnid8-L63eq(JAAo5>Fj442V3]d[@%qHGsoQfH!]NRa0,h\K\P>FK+tW&W23u9\+_s7DHp> %OA7YRa@`:f(=$1:#o!X5-n@3cIRjFU>dj^kJ@"%L>X5XTQ&`4s*7X>J5jjQgd0&&1=?9k'SV$$DdnY7'<07udA)1_td-'*VXG1=Wp+0gK0\R*o%F)+J>MfjHD0eJJ0JIS@hi:$HSLH1 %![PfQ8AKfgUcI3=,N?C`?#e[A_Phh>1QT-: %Ueq\@*R1]VW^JrD.fJQ]:rQ^,Bm2n;?l4LElrGN=U(_4P]J!80^Bd_0,s#1@!:D&<+k(Arg+h %I]f,@C?X'KU0t54(:E^h+ZDUtXZ\8FqUcOb]AL'8K1%@TMda05,,F'FRC+Jg%NbB$mT+;&Xi$I<+pBdqpW:9n$_TKom,Opb8Z.@n %[FMJRJD-dPI%\#](*-f0(LW;<)m.n[]J(K>1koL+TT9FT5CO=]fV@6Po"pM9b_s*Tf`;,D&[[8d&)AN&L6S6G%F+Fm>rUU0M?$_6 %>4o_;&._2o9O0g$3#NHaY)*j"+>CiO82UJMpPp::9_\*rP^E %?7"&lO@?O@OB6=08*q]B#)'Y+QV7Fl.!]UJLR(mRJeT!K!8^21:P.2B_05#kqK%PZ_(DA?-Xl,e"BC2+J(ee$Fs]Pj>^#<1=Y6"d@9Gk %0@>IJZH>F#O3K>ji'm0.[n>\CZsn36PS\_[/9&JKE(d7h;oDPWEW"\\+J5`5iFfhBgOP&nfS/,(2QDZLGesS %VCNIQ!hT=B=$XIZ-oVcj&LE.#*/A#$#$."^\5%AqNAZMN9sa""'29#P0^>,8J8+t7!gXg'UANLAVI+.)flbigk7^B8W#,t?RHmIO %m4&T?A%fH`9fVdglij;D*X`]4"1jsge<:\?*WdHH@U4a'?1Y5eT&rEkT\eM#8,gL(>1Yd\D:L,:IKp5o,(dF^M=h"SG_hW8dnsOl %/"mJE)FBfmD?[L&r=4bViEE3LHi)%Ph'N*(^NueBZ1sNiM?>S3#0`X2r6Yn)NVI"P_`Q2N0]H\*1A>[0d_C"4PNbe(!Y=+]@6Dg5 %#`D.W"s\M?f`G$mphsIfk>as\F@MbSCb3u\j9eosR^T@m7eN4GV+302@N;BoNKrhDW0.36HOpoolX#`=2]%QQVi7TamZPq%gP[?P7&M) %ZY0;Ued+mpR5iERf4Wq?EDZAN'f$Kt/[k?Q&8+_RHi_/gG]6,lia&&#[D<"X#AHQ8'd#k9_f>jt0?OKTU[k(NRKjsad?]7i'["2p %&-mmq()K6+<=FM$56ebSGAb/V5lBF@5:D>t(J#.=%1ich?#gl,ILTfi`&RiR+<2NL=UK2+W=EtZ.mC3-iLlG>]U"G-6Mghf3^+PL %`nKDg5TD;WH7K@GcDln9?I3VN^5WAJG[B"E?EO'\/'+qbak?#h63i<&7SI1N!Jn)5,M`_4+:_QnNrX1LNV'H+]>;jPTTT<@$;C(U %56Ac+]/&4CEUI5cRp5r5ei6p&=_TpE("jN^AP\B3tZ/bU\J?"VB"YZ]rT9&8/Dhp&GZe4]>.iOS:7s%6gJ4$('h9cehCTO+tBF&8ZL9G7r0!\'-;!;gW[!TbZ:^Kl\QP0nG[*t_ViupYkAP_E\4c]d6 %Sn$sR&0Thog>VQ5<_Sdp/8so&S7otfm9iIW.T^VA+hRh>pP3,^p/l9]Lj]+c;e>-r$AK,U(@smIKU63AI%hdo,pIWie;J7+'q@J8 %OP"[llA:6,"?ak=pL<*-\L=X4r@J!BBpFCO3RJDf=q&^K(U&iLLO)HX=T?'@_%9Yr>dtf8L&d<$-?;OBii7^FB*o>nm2ZXmIUh^b %%Dh-R65Zn>86c=CG;s,?OE-%BE2SB'GJYN=&Jks.-l`9o88tAb[Mgegn)GQ2Jt8MU)RWT(@bLV1p53:KE(KWNa:f'"\XlQYh%Wpb %O"29'j"^L%6s4)'pZsnR>0,oM#]2bd/3Lo[#9h^U+-cY*"8Y,Fm5f`-ec?uX!2 %XJcC\+P^F0;%Z.=*U'8s#WT:%ZR+C:GI58a!jF_']=acs2p3<.nn]'.]Ab%'V"$o+i9$KlC$o=-%(-"qS<\rA.4^:pjK-nsUh9.& %/5L=bZgt\QF6@/?I"1kcd(R#a82+;Z=eJd@AS,Zm#e[BTVe5HkJ``8oVe2Xb4Fb"aZZmVp@iQj($8eJLY]*Ja6-1aY`AMo_5[)5e %^[-'SAX]bH,D?L$hN`kZFkN]X-^nDCID%)n)R8lsYWA$i3PBHPiTW>+NQLWrd-sd7d$]VeMXC@7T0;,AD:$fD'C+&s@G^(ho!O6r %GrH3Bgn0hF;S9((hacL,6+PIEC>XF"cA9q`Tsj[)Kh8tg?KZ+Qe=V],QNU#D %q.U#BPl*klQK2Ts>l0_4"<(FYo$h*QVRl$FP$G^IXZ]mOqjS44AP;G3^QKlR@HU6(P,Cp85d9-tKTab(C["],dcS2_-.sSEnap). %pP86u&0qrF;fF#'1[p5X@2t/35P.F6?ic1O&2[V**o(VS!+8J1%a`1tXP]ORon/#A']%-QqUW)F&s5DZ)F<;0*GJg85rB06Ht$7Q %+iFHBBV;G)N(dB!APqA2Pk]cdL>N`o::emH&3PkPc\PPbX2C:Jb8gk?)e;#=O,lAM`!o.3jOSCQ40_EF.(@/%)H.*E?cC1P:nf.- %='Q7;MHq-BW*Uf(-m;ip>d%BgR<@'!BB%`YH4N]TZdNuso^@"B_aQq;"7:a'V(f;a=9Eqta0dkk4:DA1E^9AZDC*lQ %FEEG@M%c.Q/dB:;^DX"OChl;mW&eh*V0/!8B0=rhE\./1'r)ngE$)V5D%(R=6-<:p":$=4"s.pg\Usp(5?CRC.M0cl.8n(VPgcr+ %6JtR%o%,tHjjsdZKLr>)mEuip_)UML7).inU/qp#T!G0#@aSMM'pI'W^f<*fbT'Q$l%B11)m_&"_'o_FFn$)9R+8@!Uf%:KUk)Y0 %/dYk0QBVp35/?R<#^:a1Fq3<0&oafu0D.tW9,hZ=Pca3YHD^`%'4^+))5D5&(Zj&j52uWC=GT21'RTmLP$ZBTl3h4aSc-XiikS#\#6. %iliIeToO0<*b&po'(+@>gc`6WZ"@o["E;]DSrZN!g9aL-6m'I-S2QRDSW7_GFF %hQ_E)4bIj_25&d:Rrq\hpo7=D7=#Q[Vo#*"0*6imV3Y:Q_B,o1,1$H23,0%=DG_F^BG^JLC/Nk[X\7W(E=cEj=_\O&$*c]QP*:*j %7;_h5R$UtZlj+?oV&#aYVn0Fg+tOeOI@",jC/nRk<*I]+nQRS+PbT$8g/6AS@KOu>@PT:ZR+S;Dp %5\R/-P!!a26ZTXo#bHh<@8KeC&s"(<"\f.f4:2FIb.Xl)kkk1h_k*V3l$(A=!7-?Yd+>(kd[?0.hIR=H\q85#j&G;Hj)hkH#fQoKbcd*hssgA(j^6"iK[l#P4Qb@n@79<=h\p5F'@c_BGIni]qGB2@7F7GDOO%lDDF&l79gBqleqS^a2g %WpA_eIGS\5TI;4odRJM+r(87-Zr,3@#'7SNc7A)4SMl?uUQfqGdRI/+ %cPtuX8peVu"g&J_Mf?_-F^03e(M2chU@3,QS\.g[OV]7F]MZn*gu=ejQ3G+8ph0sa;e`YV[A;p0)[/Z*Vis)tS%05">)B#Im!MaO %//&@DoZ+mICjb%A^(Nq7?<6Sg*!O;[:j:nIBO1h`,C&BRXi/US3JjLID't@XB*?rr8o9h#kmA8VHI?Zm_dNnbPq;;:LnQo25k-8Y %fXFtV&mf^.R(%*$od\`!JetG0GjblDJt5t,,\?GbS*".<\!uMg$rU?*TN@#(?LK!@82MbXL;Dc$Zgnq;.C;d/#(""+)1B"*DrJYo %D)pE*6SP\t6]_Io4O\`sJgl%,ji\4jo5PY"LDI>7 %KB6DFC]A!.10(WB(I?UH+@19cj6\c,5&S=akr&SgWB?W1JA1haa_:m>&ioZsGR,!`o7pk9ZMAN=I0XX]khlG9ZS'DJ_%5pL %^I*qMNfhc'n10VhT[;sdTlQ;q-+lm!"N=gLCBnId^#In"qfCA,_ef<36A+$r>'YpkJgOU_JsO,6dMT^0-s;@f#>4O0ibfZoqMS5S %(jqu-TC\aVKsJ@;o5Ycg1IHD:lT6RTPu**'f+L3mnj4[#[hMOJ2jjSQ3_9qf %5TuM=TG7tNY7#qGo!;XalHi<#5"!5R_6W"PjC[+?CEBa/Ui#[C %hp"p/(123NnH7&)alj)"Lo),m=Tc=%LE8BgDn]bPj)l#fk.Ql&*n$Y>7=4pU:AO[?/f/Vjl)4E-5S(*U"90@c++8M9[Qf#C@.a?W %FJU*>rA4s:FtsZcITK3",P#Mg3LVQghI3VM?$!O?0AAd]W5[,#=F?c$?jIjX\3nVL?d/`HR-eN*s#c_i6>6ohHG=_',N&I=+8'MG %<\". %AI9_PrivateDataEnd pgbackrest-release-2.24/doc/resource/latex/preamble.tex000066400000000000000000000143701362531507100232360ustar00rootroot00000000000000% ---------------------------------------------------------------------------------------------------------------------------------- % pgBackRest User Guide % ---------------------------------------------------------------------------------------------------------------------------------- \documentclass[letterpaper,12pt]{article} % Add hyperlinks to TOC % ---------------------------------------------------------------------------------------------------------------------------------- \usepackage{hyperref} % Allow EPS files % ---------------------------------------------------------------------------------------------------------------------------------- \usepackage{graphicx} \usepackage{epstopdf} % Use the caption package to enable captions that are not numbered (caption*) % ---------------------------------------------------------------------------------------------------------------------------------- \usepackage[font=small,textfont=it,justification=justified,singlelinecheck=false]{caption} % Create a light gray color to use for source code listings % ---------------------------------------------------------------------------------------------------------------------------------- \usepackage[table]{xcolor} \definecolor{ltgray}{HTML}{E8E8E8} \definecolor{dkblue}{HTML}{396A93} % Styling for hyperlinks % ---------------------------------------------------------------------------------------------------------------------------------- \hypersetup{frenchlinks=true} % { % colorlinks, % linkcolor={dkblue}, % citecolor={dkblue}, % urlcolor={dkblue} %} % Use listings package instead of verbatim for displaying code % ---------------------------------------------------------------------------------------------------------------------------------- \usepackage{courier} \usepackage{textcomp} \usepackage{listings} \lstset { basicstyle=\small\ttfamily, columns=flexible, breaklines=true, frame=tb, backgroundcolor=\color{ltgray}, upquote=true } % Use tabularx for tables % ---------------------------------------------------------------------------------------------------------------------------------- \usepackage{tabularx} \newcolumntype{R}{>{\raggedleft\arraybackslash}X}% \newcolumntype{C}{>{\centering\arraybackslash}X}% \renewcommand{\arraystretch}{1.3} % \usepackage{ltablex} % Allow four section levels (The fourth is implemented with paragraph) % ---------------------------------------------------------------------------------------------------------------------------------- \usepackage{titlesec} \setcounter{secnumdepth}{4} \titleformat{\paragraph} {\normalfont\normalsize\bfseries}{\theparagraph}{1em}{} \titlespacing*{\paragraph}{0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex} % Section styling % ---------------------------------------------------------------------------------------------------------------------------------- \usepackage{sectsty} \allsectionsfont{\color{dkblue}} % Define source code highlighting % ---------------------------------------------------------------------------------------------------------------------------------- \newcommand{\Hilight}{\makebox[0pt][l]{\color{cyan}\rule[-4pt]{0.65\linewidth}{14pt}}} % Set the font to Helvetica % ---------------------------------------------------------------------------------------------------------------------------------- \usepackage{helvet} \renewcommand{\familydefault}{\sfdefault} % Set margins % ---------------------------------------------------------------------------------------------------------------------------------- \usepackage[top=.9in, bottom=1in, left=.5in, right=.5in]{geometry} % Sections start a new page % ---------------------------------------------------------------------------------------------------------------------------------- \let\stdsection\section \renewcommand\section{\newpage\stdsection} % Format paragraphs with no indent and a blank line between paragraphs % ---------------------------------------------------------------------------------------------------------------------------------- \setlength\parindent{0pt} \usepackage{parskip} % Add page headers and footers % ---------------------------------------------------------------------------------------------------------------------------------- \usepackage{fancyhdr} \fancyhead[LE,RO]{\slshape \rightmark} \fancyhead[LO,RE]{\slshape \leftmark} \fancypagestyle{plain} { \fancyhead{} \lhead[]{TABLE OF CONTENTS} } \lfoot[]{{[pdf-footer-left]}} \cfoot[]{{[pdf-footer-center]}} \rfoot[]{{[pdf-footer-right]}} \pagestyle{fancy} \renewcommand{\headrulewidth}{0.4pt} \renewcommand{\footrulewidth}{0.4pt} % Use framed package for admonition % ---------------------------------------------------------------------------------------------------------------------------------- \usepackage{framed} % ---------------------------------------------------------------------------------------------------------------------------------- % Begin document % ---------------------------------------------------------------------------------------------------------------------------------- \begin{document} % Create the title page % ---------------------------------------------------------------------------------------------------------------------------------- \hypersetup{pageanchor=false} \makeatletter \begin{titlepage} \begin{center} {\large \ }\\[18ex] {\huge \bfseries {[pdf-title1]}}\\[1ex] {\large \bfseries {[pdf-title2]}}\\[4ex] {\large {[pdf-title3]}}\\[12ex] \includegraphics[width=6in]{{[pdf-logo]}}\\[12ex] {\large {[pdf-organization]}}\\[1ex] {\large \today} \end{center} \end{titlepage} \makeatother \thispagestyle{empty} \newpage \hypersetup{pageanchor=true} % Generate TOC % ---------------------------------------------------------------------------------------------------------------------------------- \setcounter{tocdepth}{3} \topskip0in \thispagestyle{plain} \renewcommand\contentsname{Table of Contents} \tableofcontents % ---------------------------------------------------------------------------------------------------------------------------------- % Content % ---------------------------------------------------------------------------------------------------------------------------------- pgbackrest-release-2.24/doc/resource/logo.png000066400000000000000000000065771362531507100212700ustar00rootroot00000000000000‰PNG  IHDR``â˜w8 pHYs  šœãiTXtXML:com.adobe.xmp ›«BIDATxœí[h\U†¿œ4j’VšŠJ±¶h¥ñJ´¡ZñŠŠ`}(UŠ/‚AA}QQû ¢T(Xµ Šw©o‚x©mUªX­¢©×64^2‘:&mêŒË11̹ÍÙ{¯™Ìú`½tNÏZûÿÏì³÷>ûL:ªÕ*†Údd1pö¿1,z‘6LÃÀWÀàcàs ©¯°f5àDàà2Dôã€ÎÎ3 | |¼ |tSâìdx¹j}ÄwÀuÁZÓ"¬Þ&ñ'þL#îæûo^óÒÜüJÑëÅïÀ£È=¦­XŒôÍZÂÏŒ°Êk‹›„Näª/£/z½x]ÍJ!#m‘Óâ'à*O¨q0†¾¸yâBhp1°}AóÆ$°ÖƒA¹}!‹Dx*·+ÑÐU<èVÿœüŒ¾p®b¸É©B@ÆÕÚ¢ùˆ›êä­è å+ÆcÝIåžÐÉw<ïL-Ç,£õÆúÆÝn$sG°}aBÆéN”sÄZô /8Qν̮!gž,*^TôÈêæ"çiEn-z‚¢ôç +ˆÕ¢Å´£È…×­]HÈÂÛSÀ^ô»×1¼ ¬N ±MÁ˜܆­-œ‹ØãT¡@,CŠŸ@_ÄFâuàLÇš¨°ø}A³Æ2«Ÿu¼†¾¸i±XâKmæï¡/r\üBànž­‰]@?p*p42ü*CÀÈ›, ¼\’#wF‹}¥YèFî'3µÁkøÙŸ:檰>àaà7⯜ `3Ùg†ðuÂùBÇ¡µ/A¾-qç;¼ ,ÍxκÌþÌÑIàid3m+‘g®ÚâW2ÔÛ…<ã.å8oxé9rq)°»@ƒweȳ¡@W± 8<¥Îó ä(÷GdЄU—¶­c©Ã\ÄßȬ6‰AÜíäÛ˜’‹ÓpûPe?pEJÎ'æËiKÊç’¯ Î7Æ%ë¾ôÐÈ òŽ£½Ò+êêC^ðps¸°^Âõº%¡¡ÏyÌûRjº×cî2'úSþÐgƒ¯LhìϹëŦ„zzð¿¢{ûô„Ohð^âG ?$½>¦€‡äbÚDø‡@>/¡ÑCj¨Å@L„ÛXÖ!“„% ¸$馷=P Ýíî˜ÏÎ Ü»c+"àÚ@É@Þˆã“`UÀ÷Èð²ËÖ1!ïá†"éáýp°*’s…Ü`ÐGL87á³ýÁªˆ¿ú!¹F×Ì‹þ0I²CÖ‘”ËÅV¬T"`$`BãÿŒFÀÚU´1»"à%Â~ý)¶GÈšÈNíJÚ”÷k7œ7TËhO¶#5Ö#?xd„cL ¹F€;õji;v¯€ìᬱ¸ù•* Æ‘í-Õ¹öÈÇpM܇}À.ü­þµÂÍ~þÚ_fÆ‚äÌY_ ypRrÞ,ä=ã­Óÿ¡Þ´{y8¿9DEm·ÀåÀ3yÿãj¬ *ä'zâ’¥-<½Õx; d…aðWÜ!WþŒ:ÌI?Ä)]Èîêf¦/d²´íéó±Q!–ã°.H3@3@3@3@3@3@3@3@3@3@3@3@3@3@3@3@3@3@3@3@3@3@3@3@3@3@3@3@3@3@3@3@™,¯(U¼W1{I}ë?Í€qä¯Å™ Q&ð&<㮉Ïù”IEND®B`‚pgbackrest-release-2.24/doc/xml/000077500000000000000000000000001362531507100165545ustar00rootroot00000000000000pgbackrest-release-2.24/doc/xml/auto/000077500000000000000000000000001362531507100175245ustar00rootroot00000000000000pgbackrest-release-2.24/doc/xml/auto/metric-coverage-report.auto.xml000066400000000000000000000156321362531507100256110ustar00rootroot00000000000000 command 3/3 (100.0%) 50/50 (100.0%) 89/89 (100.0%) command/archive 12/12 (100.0%) 76/76 (100.0%) 212/212 (100.0%) command/archive/get 7/7 (100.0%) 84/84 (100.0%) 223/223 (100.0%) command/archive/push 10/10 (100.0%) 82/82 (100.0%) 271/271 (100.0%) command/backup 33/33 (100.0%) 466/466 (100.0%) 1089/1089 (100.0%) command/check 8/8 (100.0%) 54/54 (100.0%) 125/125 (100.0%) command/control 4/4 (100.0%) 34/34 (100.0%) 63/63 (100.0%) command/expire 8/8 (100.0%) 134/134 (100.0%) 243/243 (100.0%) command/help 4/4 (100.0%) 114/114 (100.0%) 161/161 (100.0%) command/info 7/7 (100.0%) 162/162 (100.0%) 347/347 (100.0%) command/local 1/1 (100.0%) --- 17/17 (100.0%) command/remote 1/1 (100.0%) 6/6 (100.0%) 28/28 (100.0%) command/restore 26/26 (100.0%) 462/462 (100.0%) 927/927 (100.0%) command/stanza 7/7 (100.0%) 104/104 (100.0%) 155/155 (100.0%) command/storage 3/3 (100.0%) 28/28 (100.0%) 76/76 (100.0%) common 155/155 (100.0%) 514/514 (100.0%) 1595/1595 (100.0%) common/compress/gzip 16/16 (100.0%) 24/24 (100.0%) 163/163 (100.0%) common/crypto 26/26 (100.0%) 74/74 (100.0%) 332/332 (100.0%) common/encode 5/5 (100.0%) 32/32 (100.0%) 81/81 (100.0%) common/io 45/45 (100.0%) 108/108 (100.0%) 488/488 (100.0%) common/io/filter 41/41 (100.0%) 86/86 (100.0%) 411/411 (100.0%) common/io/http 37/37 (100.0%) 172/172 (100.0%) 472/472 (100.0%) common/io/tls 17/17 (100.0%) 88/88 (100.0%) 285/285 (100.0%) common/type 249/249 (100.0%) 554/554 (100.0%) 2894/2894 (100.0%) config 101/101 (100.0%) 590/590 (100.0%) 1435/1435 (100.0%) db 27/27 (100.0%) 100/100 (100.0%) 368/368 (100.0%) info 117/117 (100.0%) 724/724 (100.0%) 2336/2336 (100.0%) postgres 37/37 (100.0%) 122/122 (100.0%) 424/424 (100.0%) protocol 67/67 (100.0%) 188/188 (100.0%) 814/814 (100.0%) storage 67/67 (100.0%) 194/194 (100.0%) 774/774 (100.0%) storage/cifs 1/1 (100.0%) --- 9/9 (100.0%) storage/posix 28/28 (100.0%) 159/160 (99.38%) 493/493 (100.0%) storage/remote 29/29 (100.0%) 108/108 (100.0%) 615/615 (100.0%) storage/s3 29/29 (100.0%) 126/126 (100.0%) 587/587 (100.0%) TOTAL 1228/1228 (100.0%) 5819/5820 (99.98%) 18602/18602 (100.0%) pgbackrest-release-2.24/doc/xml/coding.xml000066400000000000000000000313061362531507100205440ustar00rootroot00000000000000 {[project]} Coding Standard.
    Standards
    Indentation

    Indentation is four spaces -- no tabs. Only file types that absolutely require tabs (e.g. `Makefile`) may use them.

    Line Length

    With the exception of documentation code, no line of any code or test file shall exceed 132 characters. If a line break is required, then it shall be after the first function parenthesis:

    // CORRECT - location of line break after first function parenthesis if line length is greater than 132 StringList *removeList = infoBackupDataLabelList( infoBackup, strNewFmt("^%s.*", strPtr(strLstGet(currentBackupList, fullIdx)))); // INCORRECT StringList *removeList = infoBackupDataLabelList(infoBackup, strNewFmt("^%s.*", strPtr(strLstGet(currentBackupList, fullIdx))));

    If a conditional, then after a completed conditional, for example:

    // CORRECT - location of line break after a completed conditional if line length is greater than 132 if (archiveInfoPgHistory.id != backupInfoPgHistory.id || archiveInfoPgHistory.systemId != backupInfoPgHistory.systemId || archiveInfoPgHistory.version != backupInfoPgHistory.version) // INCORRECT if (archiveInfoPgHistory.id != backupInfoPgHistory.id || archiveInfoPgHistory.systemId != backupInfoPgHistory.systemId || archiveInfoPgHistory.version != backupInfoPgHistory.version)
    Inline Comment

    Inline comments shall start at character 69 and must not exceed the line length of 132. For example:

    typedef struct InlineCommentExample { const String *comment; // Inline comment example const String *longComment; // Inline comment example that exceeds 132 characters should // then go to next line but this should be avoided } InlineCommentExample;
    Naming
    Variables

    Variable names use camel case with the first letter lower-case.

    stanzaName - the name of the stanza nameIdx - loop variable for iterating through a list of names

    Variable names should be descriptive. Avoid i, j, etc.

    Types

    Type names use camel case with the first letter upper case: typedef struct MemContext <...> typedef enum {<...>} ErrorState;

    Constants

    #define Constants

    #define constants should be all caps with _ separators.

    #define MY_CONSTANT "STRING"

    The value should be aligned at column 69 whenever possible.

    This type of constant should mostly be used for strings. Use enums whenever possible for integer constants.

    String Constants

    String constants can be declared using the STRING_STATIC() macro for local strings and STRING_EXTERN() for strings that will be extern'd for use in other modules.

    Extern'd strings should be declared in the header file as:

    #define SAMPLE_VALUE "STRING" STRING_DECLARE(SAMPLE_VALUE_STR);

    And in the C file as:

    STRING_EXTERN(SAMPLE_VALUE_STR, SAMPLE_VALUE);

    Static strings declared in the C file are not required to have a #define if the #define version is not used. Extern'd strings must always have the #define in the header file.

    Enum Constants

    Enum elements follow the same case rules as variables. They are strongly typed so this shouldn't present any confusion.

    typedef enum { cipherModeEncrypt, cipherModeDecrypt, } CipherMode;

    Note the comma after the last element. This reduces diff churn when new elements are added.

    Macros

    Macro names should be upper-case with underscores between words. Macros (except simple constants) should be avoided whenever possible as they make code less clear and test coverage harder to measure.

    Macros should follow the format:

    #define MACRO(paramName1, paramName2) \ <code>

    If the macro defines a block it should look like:

    #define MACRO_2(paramName1, paramName2) \ { \ <code> \ }

    Continuation characters should be aligned at column 132 (unlike the examples above that have been shortened for display purposes).

    To avoid conflicts, variables in a macro will be named [macro name]_[var name], e.g. TEST_RESULT_resultExpected. Variables that need to be accessed in wrapped code should be provided accessor macros.

    Variadic functions are an exception to the capitalization rule.

    Begin / End

    Use Begin / End for names rather than Start / Finish, etc.

    New / Free

    Use New / Free for constructors and destructors rather than Create / Destroy, etc.

    Formatting
    Braces

    C allows braces to be excluded for a single statement. However, braces should be used when the control statement (if, while, etc.) spans more than one line or the statement to be executed spans more than one line.

    No braces needed:

    if (condition) return value;

    Braces needed:

    if (conditionThatUsesEntireLine1 && conditionThatUsesEntireLine2) { return value; } if (condition) { return valueThatUsesEntireLine1 && valueThatUsesEntireLine2; }
    Hints, Warnings, and Errors

    Hints are to be formatted with capitalized HINT: followed by a space and a sentence. The sentence shall only begin with a capital letter if the first word is an acronym (e.g. TLS) or a proper name (e.g. PostgreSQL). The sentence must end with a period, question mark or exclamation point as appropriate.

    Warning and errors shall be lowercase with the exceptions for proper names and acronyms and end without punctuation.

    Language Elements
    Data Types

    Don't get exotic - use the simplest type that will work. Use int or unsigned int for general cases. int will be at least 32 bits. When not using int use one of the types defined in common/type.h.

    Macros

    Don't use a macro when a function could be used instead. Macros make it hard to measure code coverage.

    Objects

    Object-oriented programming is used extensively. The object pointer is always referred to as this.

    Variadic Functions

    Variadic functions can take a variable number of parameters. While the printf() pattern is variadic, it is not very flexible in terms of optional parameters given in any order.

    This project implements variadic functions using macros (which are exempt from the normal macro rule of being all caps). A typical variadic function definition:

    typedef struct StoragePathCreateParam { bool errorOnExists; bool noParentCreate; mode_t mode; } StoragePathCreateParam; #define storagePathCreateP(this, pathExp, ...) \ storagePathCreate(this, pathExp, (StoragePathCreateParam){__VA_ARGS__}) #define storagePathCreateP(this, pathExp) \ storagePathCreate(this, pathExp, (StoragePathCreateParam){0}) void storagePathCreate(const Storage *this, const String *pathExp, StoragePathCreateParam param);

    Continuation characters should be aligned at column 132 (unlike the example above that has been shortened for display purposes).

    This function can be called without variable parameters:

    storagePathCreateP(storageLocal(), "/tmp/pgbackrest");

    Or with variable parameters:

    storagePathCreateP(storageLocal(), "/tmp/pgbackrest", .errorOnExists = true, .mode = 0777);

    If the majority of functions in a module or object are variadic it is best to provide macros for all functions even if they do not have variable parameters. Do not use the base function when variadic macros exist.

    Testing
    Uncoverable/Uncovered Code
    Uncoverable Code

    The uncoverable keyword marks code that can never be covered. For instance, a function that never returns because it always throws an error. Uncoverable code should be rare to non-existent outside the common libraries and test code.

    } // {uncoverable - function throws error so never returns}

    Subsequent code that is uncoverable for the same reason is marked with // {+uncoverable}.

    Uncovered Code

    Marks code that is not tested for one reason or another. This should be kept to a minimum and an excuse given for each instance.

    exit(EXIT_FAILURE); // {uncovered - test harness does not support non-zero exit}

    Subsequent code that is uncovered for the same reason is marked with `// {+uncovered}`.

    pgbackrest-release-2.24/doc/xml/contributing.xml000066400000000000000000000606301362531507100220120ustar00rootroot00000000000000 {[project]} Contributing Guidelines. contrib pgbackrest-dev {[host-user]} pgbackrest/doc:contrib use Cwd qw(cwd); cwd() {[copy-ca-cert]} # Fix root tty RUN sed -i 's/^mesg n/tty -s \&\& mesg n/g' /root/.profile && \ # Suppress dpkg interactive output rm /etc/apt/apt.conf.d/70debconf # Install base packages RUN apt-get update && \ apt-get install -y sudo ssh curl vim 2>&1 # Add test user with sudo privileges RUN adduser --disabled-password --gecos "" {[host-user]} && \ echo '%{[host-user]} ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers WORKDIR /home/{[host-user]} ENTRYPOINT service ssh restart && bash
    Introduction

    This documentation is intended to assist contributors to by outlining some basic steps and guidelines for contributing to the project. Coding standards to follow are defined in CODING.md. At a minimum, unit tests must be written and run and the documentation generated before submitting a Pull Request; see the Testing section below for details.

    Building a Development Environment

    This example is based on Ubuntu 19.04, but it should work on many versions of Debian and Ubuntu.

    Install development tools apt-get install rsync git devscripts build-essential valgrind autoconf libssl-dev zlib1g-dev libxml2-dev libpq-dev libxml-checker-perl libyaml-libyaml-perl libdbd-pg-perl -y 2>&1

    Coverage testing is an important component of testing and is integrated directly into the test harness. Unfortunately, the default version of lcov is often not compatible with gcc. lcov 1.14 works up to gcc 8.

    Build lcov 2.14 curl -fsSL https://github.com/linux-test-project/lcov/releases/download/v1.14/lcov-1.14.tar.gz | tar zx make -C lcov-1.14 install

    Some unit tests and all the integration test require Docker. Running in containers allows us to simulate multiple hosts, test on different distributions and versions of , and use sudo without affecting the host system.

    Install Docker curl -fsSL https://get.docker.com | sudo sh 2>&1 usermod -aG docker `whoami`

    This clone of the repository is sufficient for experimentation. For development, create a fork and clone that instead.

    Clone <backrest/> repository git clone https://github.com/pgbackrest/pgbackrest.git
    Running Tests
    Without Docker

    If Docker is not installed, then the available tests can be listed using --vm-none.

    List tests that don't require a container pgbackrest/test/test.pl --vm=none --dry-run [0-9]+ tests selected|DRY RUN COMPLETED SUCCESSFULLY

    Once a test has been selected it can be run by specifying the module and test. The --dev option sets several flags that are appropriate for development rather than test. Most importantly, it reuses object files from the previous test run to speed testing. The --vm-out option displays the test output.

    Run a test pgbackrest/test/test.pl --vm=none --dev --vm-out --module=common --test=wait

    An entire module can be run by using only the --module option.

    Run a module pgbackrest/test/test.pl --vm=none --dev --module=postgres
    With Docker

    Build a container to run tests. The vm must be pre-configured but a variety are available. The vm names are all three character abbreviations, e.g. u19 for Ubuntu 19.04.

    Build a VM pgbackrest/test/test.pl --vm-build --vm=u19 Run a Test pgbackrest/test/test.pl {[dash]}-vm=u19 {[dash]}-dev {[dash]}-module=mock {[dash]}-test=archive {[dash]}-run=2
    Adding an Option

    Options can be added to a command or multiple commands. Options can be configuration file only, command-line only or valid for both. Once an option is added, config.auto.*, define.auto.* and parse.auto.* files will automatically be generated by the build system.

    To add an option, two files need be to be modified:

    build/lib/pgBackRestBuild/Config/Data.pm doc/xml/reference.xml

    These files are discussed in the following sections.

    Data.pm

    There is a detailed comment at the top of this file on the configuration definitions which one can refer to in determining how to define the rules for the option.

    Command Line Only Options

    Command-line only options are options where CFGDEF_SECTION rule is not defined. There are two sections to be updated when adding a command-line only option, each of which is marked by the comment Command-line only options.

    Section 1: Find the first section with the Command-line only options comment. This section defines and exports the constant for the actual option. Section 2: Find the second section with the Command-line only options comment. This is where the rules for the option are defined.

    The steps for how to update these sections are detailed below.

    Section 1

    Copy the two lines (use constant/push) of an existing option and paste them where the option would be in alphabetical order and rename it to the same name as the new option name. For example CFGOPT_DRY_RUN, defined as dry-run.

    Section 2

    To better explain this section, CFGOPT_ONLINE will be used as an example:

    &CFGOPT_ONLINE => { &CFGDEF_TYPE => CFGDEF_TYPE_BOOLEAN, &CFGDEF_NEGATE => true, &CFGDEF_DEFAULT => true, &CFGDEF_COMMAND => { &CFGCMD_BACKUP => {}, &CFGCMD_STANZA_CREATE => {}, &CFGCMD_STANZA_UPGRADE => {}, } },

    Note that CFGDEF_SECTION is not present thereby making this a command-line only option. Each line is explained below:

    CFGOPT_ONLINE - the name of the option as defined in Section 1 CFGDEF_TYPE - the type of the option. Valid types are: CFGDEF_TYPE_BOOLEAN, CFGDEF_TYPE_FLOAT, CFGDEF_TYPE_HASH, CFGDEF_TYPE_INTEGER, CFGDEF_TYPE_LIST, CFGDEF_TYPE_PATH, CFGDEF_TYPE_SIZE, and CFGDEF_TYPE_STRING CFGDEF_NEGATE - being a command-line only boolean option, this rule would automatically default to false so it must be defined if the option is negatable. Ask yourself if negation makes sense, for example, would a --dry-run option make sense as --no-dry-run? If the answer is no, then this rule can be omitted as it would automatically default to false. Any boolean option that cannot be negatable, must be a command-line only and not a configuration file option as all configuration boolean options must be negatable. CFGDEF_DEFAULT - sets a default for the option if the option is not provided when the command is run. The default can be global or it can be specified for a specific command in the CFGDEF_COMMAND section. For example, if it was desirable for the default to be false for the CFGCMD_STANZA_CREATE then CFGDEF_NEGATE => would be set to true in each command listed except for CFGCMD_STANZA_CREATE where it would be false and it would not be specified (as it is here) in the global section (meaning global for all commands listed). CFGDEF_COMMAND - list each command for which the option is valid. If a command is not listed, then the option is not valid for the command and an error will be thrown if it attempted to be used for that command.
    reference.xml

    All options must be documented or the system will error during the build. To add an option, find the command section identified by command id="COMMAND" section where COMMAND is the name of the command (e.g. expire) or, if the option is used by more than one command and the definition for the option is the same for all of the commands, the operation-general title="General Options" section.

    To add an option, add the following to the <option-list> section; if it does not exist, then wrap the following in <option-list> </option-list>. This example uses the boolean option force of the restore command. Simply replace that with your new option and the appropriate summary, text and example.

    <option id="force" name="Force"> <summary>Force a restore.</summary> <text>By itself this option forces the <postgres/> data and tablespace paths to be completely overwritten. In combination with <br-option>--delta</br-option> a timestamp/size delta will be performed instead of using checksums.</text> <example>y</example> </option> currently a period (.) is required to end the summary section.
    Testing

    For testing, it is recommended that Vagrant and Docker be used; instructions are provided in the README.md file of the test directory. A list of all possible test combinations can be viewed by running:

    /backrest/test/test.pl --dry-run currently the BACKREST_USER in ContainerTest.pm must exist, or the test suite will fail with a string concatenation error.

    If using a RHEL system, the CPAN XML parser is required for running test.pl and doc.pl. Instructions for installing Docker and the XML parse can be found in the README.md file of the doc directory in the section The following is a sample CentOS/RHEL 7 configuration that can be used for building the documentation. NOTE that the Install latex (for building PDF) is not required since testing of the docs need only be run for HTML output.

    While some files are automatically generated during make, others are generated by running the test harness as follows:

    /backrest/test/test.pl --gen-only

    Prior to any submission, the html version of the documentation should also be run.

    /backrest/doc/doc.pl --out=html ERROR: [028] regarding cache is invalid is OK; it just means there have been changes and the documentation will be built from scratch. In this case, be patient as the build could take 20 minutes or more depending on your system.
    Writing a Unit Test

    The goal of unit testing is to have 100 percent coverage. Two files will usually be involved in this process:

    define.yaml - defines the number of tests to be run for each module and test file. There is a comment at the top of the file that provides more information about this file. src/module/somefileTest.c - where somefile is the path and name of the test file where the unit tests are located for the code being updated (e.g. src/module/command/expireTest.c).
    define.yaml

    Each module is separated by a line of asterisks (*) and each test within is separated by a line of dashes (-). In the example below, the module is command and the unit test is check. The number of calls to testBegin() in a unit test file will dictate the number following total:, in this case 2. Under coverage:, the list of files that will be tested must be listed followed by the coverage level, which should always be full.

    # ******************************************************************************************************************************** - name: command test: # ---------------------------------------------------------------------------------------------------------------------------- - name: check total: 2 coverage: command/check/common: full command/check/check: full
    somefileTest.c

    Assuming that a test file already exists, new unit tests will either go in a new testBegin() section or be added to an existing section.

    Unit test files are organized in the test/src/module directory with the same directory structure as the source code being tested. For example, if new code is added to src/command/expire.c then test/src/module/command/expireTest.c will need to be updated.

    // ***************************************************************************************************************************** if (testBegin("expireBackup()"))

    Setting up the command to be run

    If configuration options are required then a string list with the command and options must be defined and passed to the function harnessCfgLoad(). For example, the following will set up a test to run pgbackrest --repo-path=test/test-0/repo info command:

    String *repoPath = strNewFmt("%s/repo", testPath()); // create a string defining the repo path on the test system StringList *argList = strLstNew(); // create an empty string list strLstAdd(argList, strNewFmt("--repo-path=%s/", strPtr(repoPath))); // add the --repo-path option as a formatted string strLstAddZ(argList, "info"); // add the command harnessCfgLoad(cfgCmdExpire, argList); // load the command and option list into the test harness TEST_RESULT_STR_Z(infoRender(), "No stanzas exist in the repository.\n", "text - no stanzas"); // run the test

    Tests are run via macros. All test macros expect the first parameter to be the function to call that is being tested. With the exception of TEST_RESULT_VOID, the second parameter is the expected result, and with the exception of TEST_ERROR, the third parameter is a short description of the test. The most common macros are:

    TEST_RESULT_STR - Test the actual value of the string returned by the function. TEST_RESULT_UINT / TEST_RESULT_INT - Test for an unsigned integer / integer. TEST_RESULT_BOOL - Test a boolean return value. TEST_RESULT_PTR / TEST_RESULT_PTR_NE - Test a pointer: useful for testing if the pointer is NULL or not equal (NE) to NULL. TEST_RESULT_VOID - The function being tested returns a void. This is then usually followed by tests that ensure other actions occurred (e.g. a file was written to disk). TEST_ERROR / TEST_ERROR_FMT - Test for that a specific error code was raised with specific wording.

    Storing a file

    Sometimes it is necessary to store a file to the test directory. The following demonstrates that. It is not necessary to wrap the storagePutNP in TEST_RESULT_VOID, but doing so allows a short description to be displayed when running the tests (in this case store a corrupt backup.info file).

    String *content = strNew("bad content"); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageTest, strNewFmt("%s/backup/demo/backup.info", strPtr(repoPath))), harnessInfoChecksum(content)), "store a corrupt backup.info file");

    Testing a log message

    If a function being tested logs something with LOG_WARN, LOG_INFO or other LOG_ macro, then the logged message must be cleared before the end of the test by using the harnessLogResult() function.

    harnessLogResult( "P00 WARN: WAL segment '000000010000000100000001' was not pushed due to error [25] and was manually skipped: error");
    Running a Unit Test

    Unit tests are run, and coverage of the code being tested is provided, by running the following. This example would run the test set from the define.yaml section detailed above.

    /backrest/test/test.pl --vm-out --dev --module=command --test=check --coverage-only If you have changed branches, it is recommended the above be run with --dev-test instead of --dev to rebuild the code from scratch.

    Because no test run is specified and --coverage-only has been requested, a coverage report will be generated and written to the local file system under backrest/test/coverage/c-coverage.html and will highlight code that has not been tested.

    Sometimes it is useful to look at files that were generated during the test. The default for running any test is that, at the start/end of the test, the test harness will clean up all files and directories created. To override this behavior, a single test run must be specified and the option --no-cleanup provided. Again, continuing with the check command, we see in define.yaml above that there are two tests. Below, test one will be run and nothing will be cleaned up so that the files and directories in test/test-0 can be inspected.

    /backrest/test/test.pl --vm-out --dev --module=command --test=check --coverage-only --run=1 --no-cleanup

    For more details on running tests, again, please refer to the README.md file of the test directory.

    pgbackrest-release-2.24/doc/xml/documentation.xml000066400000000000000000000107651362531507100221600ustar00rootroot00000000000000 Building {[project]} Documentation
    General Builds

    The documentation can output a variety of formats and target several platforms and versions.

    This will build all documentation with defaults:

    ./doc.pl

    The user guide can be built for different platforms: centos6, centos7, and debian. This will build the HTML user guide for CentOS/RHEL 7:

    ./doc.pl --out=html --include=user-guide --var=os-type=centos7

    Documentation generation will build a cache of all executed statements and use the cache to build the documentation quickly if no executed statements have changed. This makes proofing text-only edits very fast, but sometimes it is useful to do a full build without using the cache:

    ./doc.pl --out=html --include=user-guide --var=os-type=centos6 --no-cache

    Each os-type has a default container image that will be used as a base for creating hosts. For centos6/centos7 these defaults are generally fine, but for debian it can be useful to change the image.

    ./doc.pl --out=html --include=user-guide --var=os-type=debian --var=os-image=debian:9

    The following is a sample CentOS/RHEL 7 configuration that can be used for building the documentation.

    # Install docker sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce sudo systemctl start docker # Install tools sudo yum install -y git wget # Install latex (for building PDF) sudo yum install -y texlive texlive-titlesec texlive-sectsty texlive-framed texlive-epstopdf ghostscript # Install Perl modules that do not have CentOS packages via CPAN sudo yum install -y yum cpanminus sudo yum groupinstall -y "Development Tools" "Development Libraries" sudo cpanm install --force XML::Checker::Parser # Add documentation test user sudo groupadd test sudo adduser -gtest -n testdoc sudo usermod -aG docker testdoc
    Building with Packages

    A user-specified package can be used when building the documentation. Since the documentation exercises most functionality this is a great way to smoke-test packages.

    The package must be located within the repo and the specified path should be relative to the repository base. test/package is a good default path to use.

    Ubuntu 16.04:

    ./doc.pl --out=html --include=user-guide --no-cache --var=os-type=debian --var=os-image=ubuntu:16.04 --var=package=test/package/pgbackrest_2.08-0_amd64.deb

    CentOS/RHEL 6:

    ./doc.pl --out=html --include=user-guide --no-cache --var=os-type=centos6 --var=package=test/package/pgbackrest-2.08-1.el6.x86_64.rpm

    CentOS/RHEL 7:

    ./doc.pl --out=html --include=user-guide --no-cache --var=os-type=centos7 --var=package=test/package/pgbackrest-2.08-1.el7.x86_64.rpm

    Packages can be built with test.pl using the following configuration on top of the configuration given for building the documentation.

    # Install recent git sudo yum remove -y git sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm sudo yum install -y git2u-all # Install Perl modules sudo yum install -y perl-ExtUtils-ParseXS perl-ExtUtils-Embed perl-ExtUtils-MakeMaker perl-YAML-LibYAML # Install dev libraries sudo yum install -y libxml2-devel openssl-devel # Add test user with sudo privileges sudo adduser -gtest -n test sudo usermod -aG docker test sudo chmod 750 /home/test sudo echo 'test ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/pgbackrest # Add pgbackrest user required by tests sudo adduser -gtest -n pgbackrest
    pgbackrest-release-2.24/doc/xml/dtd/000077500000000000000000000000001362531507100173275ustar00rootroot00000000000000pgbackrest-release-2.24/doc/xml/dtd/doc.dtd000066400000000000000000000242141362531507100205740ustar00rootroot00000000000000 pgbackrest-release-2.24/doc/xml/dtd/manifest.dtd000066400000000000000000000014711362531507100216350ustar00rootroot00000000000000 pgbackrest-release-2.24/doc/xml/faq.xml000066400000000000000000000211441362531507100200470ustar00rootroot00000000000000 {[project]} Frequently Asked Questions (FAQ).
    Introduction

    Frequently Asked Questions are intended to provide details for specific questions that may or may not be covered in the User Guide, Configuration, or Command reference. If you are unable to find details for your specific issue here, remember that the Issues List in GitHub is also a valuable resource.

    What if I get the <quote>could not find WAL segment</quote> error?

    The cause of this error can be a result of many different issues, some of which may be:

    misconfigured archive_command misconfigured configuration files network or permissions issue third party product (e.g. S3, Swift or Minio) configuration issue large amount of WAL queueing to be archived

    It is advisable to:

    check the archive_command in check the configuration settings on each host (e.g. pg* settings are set on the repository host and repo* settings on the pg host) run the check command with {[dash]}-archive-timeout set to a higher value than in the configuration file (or default) to see if the WAL queue needs more time to clear. If the system is generating a lot of WAL, then consider configuring asynchronous archiving
    How do I manually purge a backup set?

    Backup sets in the middle cannot be expired, but it is possible to expire the oldest backup sets by running the expire command with retention. For example, the following command will keep only the last two full backups, purging any prior full backups including their associated incremental/differential backups and archive:

    pgbackrest --stanza=xxx --repo1-retention-full=2 expire

    Using the {[dash]}-repo1-retention-full option on the command- line simply overrides the setting in the configuration file for that one execution of the command. See the Retention section in the User Guide for more information on retention.

    How can I configure options independently for each command?

    has the ability to set options independently in the configuration file for each command. Configure Cluster Stanza details this feature as well as option precedence.

    For example, the process-max option can be optimized for each command:

    [global] # used where not overridden process-max=2 [global:backup] # more cores for backup process-max=4 [global:restore] # all the cores for restore process-max=8 [global:archive-push] # more cores for archive-push process-max=3 [global:archive-get] # fewer cores for archive-get process-max=1
    Can I use dots (periods) in my S3 bucket name?

    RFC-2818 does not allow wildcards to match on a dot (.) so s3 bucket names must not contain dots. If there are dots in the S3 bucket name then an error such as unable to find hostname 'my.backup.bucket.s3.amazonaws.com' in certificate common name or subject alternative names will occur.

    Where can I find packages for older versions of <backrest/>?

    The apt.postgresql.org repository maintains an archive of older versions. Debian also maintains snapshots of all test builds.

    Why does a backup attempt fail when <br-option>backup-standby=y</br-option> and the standby database is down?

    Configuring backup from standby is generally intended to reduce load on the primary, so switching backups to the primary when the standby is down often defeats the point. Putting more load on the primary in a situation where there are already failures in the system is not recommended. Backups are not critical as long as you have one that is fairly recent -- the important thing is to keep up with WAL archiving. There is plenty of time to get a backup when the system is stable again.

    If you really need a backup, the solution is to have more standbys or remove backup-standby. This can be overridden on the command line with --no-backup-standby, so there is no need to reconfigure for a one-off backup.

    Should I setup my repository on a standby host?

    No. When primary and standby databases are configured, the configuration files should be symmetric in order to seamlessly handle failovers. If they are not, the configurations will need to be changed on failover or further problems may result.

    See the Dedicated Repository Host section of the User Guide for more information.

    Time-based Point-in-Time Recovery does not appear to work, why?

    The most common mistake when using time-based Point-in-Time Recovery is forgetting to choose a backup set that is before the target time. defaults to the latest backup and if it is after the target time, then --target= is not considered valid by and is therefore ignored, resulting in WAL recovery to the latest time available.

    To choose the correct backup set, run the info command and find the backup with a timestamp stop that is before the target time. When running the restore, specify the option --set=BACKUP_LABEL where BACKUP_LABEL is the backup that was found with a stop timestamp before the target time.

    See the Point-in-Time Recovery section of the User Guide for more information.

    pgbackrest-release-2.24/doc/xml/index.xml000066400000000000000000000333271362531507100204150ustar00rootroot00000000000000 {[project]} provides fast, reliable backup and restore for {[postgres]} and seamlessly scales to terabyte scale databases by implementing stream compression and parallel processing. https://github.com {[github-url-root]}/pgbackrest/pgbackrest {[github-url-base]}/blob/master {[github-url-base]}/issues {[github-url-base]}/archive/release {[github-url-master]}/LICENSE {[github-url-base]}/wiki {[github-url-wiki]}#backlog http://www.pgbackrest.org user-guide-index configuration command release http://www.crunchydata.com {[crunchy-url-base]}/crunchy-backup-manager http://www.resonate.com
    Introduction

    aims to be a simple, reliable backup and restore solution that can seamlessly scale up to the largest databases and workloads by utilizing algorithms that are optimized for database-specific requirements.

    v{[version-stable]} is the current stable release. Release notes are on the Releases page.

    Documentation for v1 can be found here. No further releases are planned for v1 because v2 is backward-compatible with v1 options and repositories.

    Features
    Parallel Backup & Restore

    Compression is usually the bottleneck during backup operations but, even with now ubiquitous multi-core servers, most database backup solutions are still single-process. solves the compression bottleneck with parallel processing.

    Utilizing multiple cores for compression makes it possible to achieve 1TB/hr raw throughput even on a 1Gb/s link. More cores and a larger pipe lead to even higher throughput.

    Local or Remote Operation

    A custom protocol allows to backup, restore, and archive locally or remotely via SSH with minimal configuration. An interface to query is also provided via the protocol layer so that remote access to is never required, which enhances security.

    Full, Incremental, & Differential Backups

    Full, differential, and incremental backups are supported. is not susceptible to the time resolution issues of rsync, making differential and incremental backups completely safe.

    Backup Rotation & Archive Expiration

    Retention polices can be set for full and differential backups to create coverage for any timeframe. WAL archive can be maintained for all backups or strictly for the most recent backups. In the latter case WAL required to make older backups consistent will be maintained in the archive.

    Backup Integrity

    Checksums are calculated for every file in the backup and rechecked during a restore. After a backup finishes copying files, it waits until every WAL segment required to make the backup consistent reaches the repository.

    Backups in the repository are stored in the same format as a standard cluster (including tablespaces). If compression is disabled and hard links are enabled it is possible to snapshot a backup in the repository and bring up a cluster directly on the snapshot. This is advantageous for terabyte-scale databases that are time consuming to restore in the traditional way.

    All operations utilize file and directory level fsync to ensure durability.

    Page Checksums

    has supported page-level checksums since 9.3. If page checksums are enabled will validate the checksums for every file that is copied during a backup. All page checksums are validated during a full backup and checksums in files that have changed are validated during differential and incremental backups.

    Validation failures do not stop the backup process, but warnings with details of exactly which pages have failed validation are output to the console and file log.

    This feature allows page-level corruption to be detected early, before backups that contain valid copies of the data have expired.

    Backup Resume

    An aborted backup can be resumed from the point where it was stopped. Files that were already copied are compared with the checksums in the manifest to ensure integrity. Since this operation can take place entirely on the backup server, it reduces load on the database server and saves time since checksum calculation is faster than compressing and retransmitting data.

    Streaming Compression & Checksums

    Compression and checksum calculations are performed in stream while files are being copied to the repository, whether the repository is located locally or remotely.

    If the repository is on a backup server, compression is performed on the database server and files are transmitted in a compressed format and simply stored on the backup server. When compression is disabled a lower level of compression is utilized to make efficient use of available bandwidth while keeping CPU cost to a minimum.

    Delta Restore

    The manifest contains checksums for every file in the backup so that during a restore it is possible to use these checksums to speed processing enormously. On a delta restore any files not present in the backup are first removed and then checksums are taken for the remaining files. Files that match the backup are left in place and the rest of the files are restored as usual. Parallel processing can lead to a dramatic reduction in restore times.

    Parallel, Asynchronous WAL Push & Get

    Dedicated commands are included for pushing WAL to the archive and getting WAL from the archive. Both commands support parallelism to accelerate processing and run asynchronously to provide the fastest possible response time to .

    WAL push automatically detects WAL segments that are pushed multiple times and de-duplicates when the segment is identical, otherwise an error is raised. Asynchronous WAL push allows transfer to be offloaded to another process which compresses WAL segments in parallel for maximum throughput. This can be a critical feature for databases with extremely high write volume.

    Asynchronous WAL get maintains a local queue of WAL segments that are decompressed and ready for replay. This reduces the time needed to provide WAL to which maximizes replay speed. Higher-latency connections and storage (such as S3) benefit the most.

    The push and get commands both ensure that the database and repository match by comparing versions and system identifiers. This virtually eliminates the possibility of misconfiguring the WAL archive location.

    S3-Compatible Object Store Support

    repositories can be located in S3-compatible object stores to allow for virtually unlimited capacity and retention.

    Encryption

    can encrypt the repository to secure backups wherever they are stored.

    Compatibility with <postgres/> >= 8.3

    includes support for versions down to 8.3, since older versions of PostgreSQL are still regularly utilized.

    Getting Started

    strives to be easy to configure and operate:

    User guides for various operating systems and versions. Command reference for command-line operations. Configuration reference for creating configurations.
    Contributions

    Contributions to are always welcome! Code fixes or new features can be submitted via pull requests. Ideas for new features and improvements to existing functionality or documentation can be submitted as issues. You may want to check the Feature Backlog to see if your suggestion has already been submitted. Bug reports should be submitted as issues. Please provide as much information as possible to aid in determining the cause of the problem. You will always receive credit in the release notes for your contributions.

    Support

    is completely free and open source under the MIT license. You may use it for personal or commercial purposes without any restrictions whatsoever. Bug reports are taken very seriously and will be addressed as quickly as possible. Creating a robust disaster recovery policy with proper replication and backup strategies can be a very complex and daunting task. You may find that you need help during the architecture phase and ongoing support to ensure that your enterprise continues running smoothly. Crunchy Data provides packaged versions of for major operating systems and expert full life-cycle commercial support for and all things . Crunchy Data is committed to providing open source solutions with no vendor lock-in, ensuring that cross-compatibility with the community version of is always strictly maintained. Please visit Crunchy Data for more information.

    Recognition

    Primary recognition goes to Stephen Frost for all his valuable advice and criticism during the development of . Crunchy Data has contributed significant time and resources to and continues to actively support development. Resonate also contributed to the development of and allowed early (but well tested) versions to be installed as their primary backup solution.

    Armchair graphic by Sandor Szabo.

    pgbackrest-release-2.24/doc/xml/metric.xml000066400000000000000000000026331362531507100205650ustar00rootroot00000000000000 ]> {[project]} project metrics.
    Code Coverage

    aims to have complete function/branch/line coverage for the core C code in /src.

    Function/line coverage is complete with no exceptions.

    Branch coverage excludes branches inside macros and assert() calls. Macros have their own unit tests so they do not need to be tested everywhere they appear. Asserts are not expected to have complete branch coverage since they test cases that should always be true.

    Directory Functions Branches Lines &metricCoverageReport;

    The C unit test modules in /test/src/module also have complete function/line coverage but are not included in the report.

    pgbackrest-release-2.24/doc/xml/reference.xml000066400000000000000000002671251362531507100212510ustar00rootroot00000000000000 The {[project]} Configuration Reference details all configuration options. can be used entirely with command-line parameters but a configuration file is more practical for installations that are complex or set a lot of options. The default location for the configuration file is /etc/pgbackrest/pgbackrest.conf. If no file exists in that location then the old default of /etc/pgbackrest.conf will be checked. The log section defines logging-related settings.Trace-level logging may expose secrets such as keys and passwords. Use with caution! Level for file logging. The following log levels are supported:
    • off - No logging at all (not recommended)
    • error - Log only errors
    • warn - Log warnings and errors
    • info - Log info, warnings, and errors
    • detail - Log detail, info, warnings, and errors
    • debug - Log debug, detail, info, warnings, and errors
    • trace - Log trace (very verbose debugging), debug, info, warnings, and errors
    debug
    Level for console logging. The following log levels are supported:
    • off - No logging at all (not recommended)
    • error - Log only errors
    • warn - Log warnings and errors
    • info - Log info, warnings, and errors
    • detail - Log detail, info, warnings, and errors
    • debug - Log debug, detail, info, warnings, and errors
    • trace - Log trace (very verbose debugging), debug, info, warnings, and errors
    error
    Level for stderr logging. Specifies which log levels will output to stderr rather than stdout (specified by log-level-console). The timestamp and process will not be output to stderr. The following log levels are supported:
    • off - No logging at all (not recommended)
    • error - Log only errors
    • warn - Log warnings and errors
    • info - Log info, warnings, and errors
    • detail - Log detail, info, warnings, and errors
    • debug - Log debug, detail, info, warnings, and errors
    • trace - Log trace (very verbose debugging), debug, info, warnings, and errors
    error
    Path where log files are stored. The log path provides a location for to store log files. Note that if log-level-file=off then no log path is required. /backup/db/log Enable timestamp in logging. Enables the timestamp in console and file logging. This option is disabled in special situations such as generating documentation. n Enable logging in subprocesses. Enable file logging for any subprocesses created by this process using the log level specified by log-level-file. y
    The general section defines options that are common for many commands. Buffer size for file operations. Set the buffer size used for copy, compress, and uncompress functions. A maximum of 3 buffers will be in use at a time per process. An additional maximum of 256K per process may be used for zlib buffers. Size can be entered in bytes (default) or KB, MB, GB, TB, or PB where the multiplier is a power of 1024. For example, the case-insensitive value 32k (or 32KB) can be used instead of 32768. Allowed values, in bytes, are 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, and 16777216. 32K Path to ssh client executable. Use a specific SSH client when an alternate is desired or the ssh executable is not in $PATH. /usr/bin/ssh Use gzip file compression. Backup files are compatible with command-line gzip tools. n Compression level for stored files. Sets the zlib level to be used for file compression when compress=y. 0-9 9 Compression level for network transfer when compress=n. Sets the zlib level to be used for protocol compression when compress=n and the database cluster is not on the same host as the repository. Protocol compression is used to reduce network traffic but can be disabled by setting compress-level-network=0. When compress=y the compress-level-network setting is ignored and compress-level is used instead so that the file is only compressed once. SSH compression is always disabled. 0-9 1 Database query timeout. Sets the timeout, in seconds, for queries against the database. This includes the pg_start_backup() and pg_stop_backup() functions which can each take a substantial amount of time. Because of this the timeout should be kept high unless you know that these functions will return quickly (i.e. if you have set startfast=y and you know that the database cluster will not generate many WAL segments during the backup). The db-timeout option must be less than the protocol-timeout option. 600 Restore or backup using checksums. During a restore, by default the data and tablespace directories are expected to be present but empty. This option performs a delta restore using checksums. During a backup, this option will use checksums instead of the timestamps to determine if files will be copied. y Path where lock files are stored. The lock path provides a location for to create lock files to prevent conflicting operations from being run concurrently. /backup/db/lock Use a neutral umask. Sets the umask to 0000 so modes in the repository are created in a sensible way. The default directory mode is 0750 and default file mode is 0640. The lock and log directories set the directory and file mode to 0770 and 0660 respectively. To use the executing user's umask instead specify neutral-umask=n in the config file or --no-neutral-umask on the command line. n Path where transient data is stored. This path is used to store data for the asynchronous archive-push and archive-get command. The asynchronous archive-push command writes acknowledgements into the spool path when it has successfully stored WAL in the archive (and errors on failure) so the foreground process can quickly notify . Acknowledgement files are very small (zero on success and a few hundred bytes on error). The asynchronous archive-push process queues WAL in the spool path so it can be provided very quickly when requests it. Moving files to is most efficient when the spool path is on the same filesystem as pg_xlog/pg_wal. The data stored in the spool path is not strictly temporary since it can and should survive a reboot. However, loss of the data in the spool path is not a problem. will simply recheck each WAL segment to ensure it is safely archived for archive-push and rebuild the queue for archive-get. The spool path is intended to be located on a local Posix-compatible filesystem, not a remote filesystem such as NFS or CIFS. /backup/db/spool Max processes to use for compress/transfer. Each process will perform compression and transfer to make the command run faster, but don't set process-max so high that it impacts database performance. 4 Protocol timeout. Sets the timeout, in seconds, that the local or remote process will wait for a new message to be received on the protocol layer. This prevents processes from waiting indefinitely for a message. The protocol-timeout option must be greater than the db-timeout option. 630 The repository section defines options used to configure the repository. Indexing: All repo- options are indexed to allow for configuring multiple repositories, though only a single repository is currently supported. For example, the repository is configured with the repo1-path, repo1-host, etc. options. The repo-retention-* options define how long backups will be retained. Expiration only occurs when the number of complete backups exceeds the allowed retention. In other words, if retention-full is set to 2, then there must be 3 complete backups before the oldest will be expired. Make sure you always have enough space for retention + 1 backups. Repository host when operating remotely via SSH. Make sure that trusted SSH authentication is configured between the host and the repository host. When backing up and archiving to a locally mounted filesystem this setting is not required. repo1.domain.com exe path on the repository host. Required only if the path to is different on the local and repository hosts. If not defined, the repository host exe path will be set the same as the local exe path. same as local /usr/lib/backrest/bin/pgbackrest repository host configuration file. Sets the location of the configuration file on the repository host. This is only required if the repository host configuration file is in a different location than the local configuration file. /conf/pgbackrest/pgbackrest.conf repository host configuration include path. Sets the location of the configuration include path on the repository host. This is only required if the repository host configuration include path is in a different location than the local configuration include path. /conf/pgbackrest/conf.d repository host configuration path. Sets the location of the configuration path on the repository host. This is only required if the repository host configuration path is in a different location than the local configuration path. /conf/pgbackrest Repository host user when repo-host is set. Defines the user that will be used for operations on the repository host. Preferably this is not the postgres user but rather some other user like pgbackrest. If runs on the repository host the postgres user can be placed in the pgbackrest group so it has read permissions on the repository without being able to damage the contents accidentally. repo-user Repository host port when repo-host is set. Use this option to specify a non-default port for the repository host protocol. Currently only SSH is supported 25 Hardlink files between backups in the repository. Enable hard-linking of files in differential and incremental backups to their full backups. This gives the appearance that each backup is a full backup at the file-system level. Be careful, though, because modifying files that are hard-linked can affect all the backups in the set. y Path where backups and archive are stored. The repository is where stores backups and archives WAL segments. It may be difficult to estimate in advance how much space you'll need. The best thing to do is take some backups then record the size of different types of backups (full/incr/diff) and measure the amount of WAL generated per day. This will give you a general idea of how much space you'll need, though of course requirements will likely change over time as your database evolves. /backup/db/backrest Number of full backups to retain. When a full backup expires, all differential and incremental backups associated with the full backup will also expire. When the option is not defined a warning will be issued. If indefinite retention is desired then set the option to the max value. 2 Number of differential backups to retain. When a differential backup expires, all incremental backups associated with the differential backup will also expire. When not defined all differential backups will be kept until the full backups they depend on expire. 3 Backup type for WAL retention. If set to full will keep archive logs for the number of full backups defined by repo-retention-archive. If set to diff (differential) will keep archive logs for the number of full and differential backups defined by repo-retention-archive, meaning if the last backup taken was a full backup, it will be counted as a differential for the purpose of repo-retention. If set to incr (incremental) will keep archive logs for the number of full, differential, and incremental backups defined by repo-retention-archive. It is recommended that this setting not be changed from the default which will only expire WAL in conjunction with expiring full backups. diff Number of backups worth of continuous WAL to retain. WAL segments required to make a backup consistent are always retained until the backup is expired regardless of how this option is configured.If this value is not set, then the archive to expire will default to the repo-retention-full (or repo-retention-diff) value corresponding to the repo-retention-archive-type if set to full (or diff). This will ensure that WAL is only expired for backups that are already expired. This option must be set if repo-retention-archive-type is set to incr. If disk space is at a premium, then this setting, in conjunction with repo-retention-archive-type, can be used to aggressively expire WAL segments. However, doing so negates the ability to perform PITR from the backups with expired WAL and is therefore not recommended. 2 S3 repository access key. AWS key used to access this bucket. AKIAIOSFODNN7EXAMPLE S3 repository secret access key. AWS secret key used to access this bucket. wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY S3 repository security token. AWS security token used with temporary credentials. AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22 ... S3 repository bucket. S3 bucket used to store the repository. repositories can be stored in the bucket root by setting repo-path=/ but it is usually best to specify a prefix, such as /repo, so logs and other AWS generated content can also be stored in the bucket. pg-backup S3 SSL CA File. Use a CA file other than the system default. /etc/pki/tls/certs/ca-bundle.crt S3 SSL CA Path. Use a CA path other than the system default. /etc/pki/tls/certs S3 repository endpoint. The AWS end point should be valid for the selected region. s3.amazonaws.com S3 repository host. Connect to a host other than the end point. This is typically used for testing. 127.0.0.1 S3 repository port. Port to use when connecting to the endpoint (or host if specified). 9000 S3 repository region. The AWS region where the bucket was created. us-east-1 S3 URI Style. The following URI styles are supported:
    • host - Connect to bucket.endpoint host.
    • path - Connect to endpoint host and prepend bucket to URIs.
    path
    Verify S3 server certificate. Disables verification of the S3 server certificate. This should only be used for testing or other scenarios where a certificate has been self-signed. n Type of storage used for the repository. The following repository types are supported:
    • cifs - Like posix, but disables links and directory fsyncs
    • posix - Posix-compliant file systems
    • s3 - AWS Simple Storage Service
    cifs
    Cipher used to encrypt the repository. The following repository types are supported:
    • none - The repository is not encrypted
    • aes-256-cbc - Advanced Encryption Standard with 256 bit key length
    Note that encryption is always performed client-side even if the repository type (e.g. S3) supports encryption.
    none aes-256-cbc
    Repository cipher passphrase. Passphrase used to encrypt/decrypt files of the repository. zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO
    The backup section defines settings related to backup. Check that WAL segments are in the archive before backup completes. Checks that all WAL segments required to make the backup consistent are present in the WAL archive. It's a good idea to leave this as the default unless you are using another method for archiving. This option must be enabled if archive-copy is enabled. n Copy WAL segments needed for consistency to the backup. This slightly paranoid option protects against corruption in the WAL segment archive by storing the WAL segments required for consistency directly in the backup. WAL segments are still stored in the archive so this option will use additional space. On restore, the WAL segments will be present in pg_xlog/pg_wal and will use them in preference to calling the restore_command. The archive-check option must be enabled if archive-copy is enabled. y Backup from the standby cluster. Enable backup from standby to reduce load on the primary cluster. This option requires that both the primary and standby hosts be configured. y Validate data page checksums. Directs to validate all data page checksums while backing up a cluster. This option is automatically enabled when data page checksums are enabled on the cluster. Failures in checksum validation will not abort a backup. Rather, warnings will be emitted in the log (and to the console with default settings) and the list of invalid pages will be stored in the backup manifest. n Exclude paths/files from the backup. All exclusions are relative to $PGDATA. If the exclusion ends with / then only files in the specified directory will be excluded, e.g. --exclude=junk/ will exclude all files in the $PGDATA/junk directory but include the directory itself. If the exclusion does not end with / then the file may match the exclusion exactly or match with / appended to the exclusion, e.g. --exclude=junk will exclude the $PGDATA/junk directory and all the files it contains. Be careful using this feature -- it is very easy to exclude something critical that will make the backup inconsistent. Be sure to test your restores! All excluded files will be logged at info level along with the exclusion rule. Be sure to audit the list of excluded files to ensure nothing unexpected is being excluded.Exclusions are not honored on delta restores. Any files/directories that were excluded by the backup will be removed on delta restore.This option should not be used to exclude logs from a backup. Logs can be moved out of the PGDATA directory using the log_directory setting, which has the benefit of allowing logs to be preserved after a restore. Multiple exclusions may be specified on the command-line or in a configuration file. junk/ Manifest save threshold during backup. Defines how often the manifest will be saved during a backup. Saving the manifest is important because it stores the checksums and allows the resume function to work efficiently. The actual threshold used is 1% of the backup size or manifest-save-threshold, whichever is greater. Size can be entered in bytes (default) or KB, MB, GB, TB, or PB where the multiplier is a power of 1024. 5G Allow resume of failed backup. Defines whether the resume feature is enabled. Resume can greatly reduce the amount of time required to run a backup after a previous backup of the same type has failed. It adds complexity, however, so it may be desirable to disable in environments that do not require the feature. n Force a checkpoint to start backup quickly. Forces a checkpoint (by passing y to the fast parameter of pg_start_backup()) so the backup begins immediately. Otherwise the backup will start after the next regular checkpoint. This feature only works in >= 8.4. y Stop prior failed backup on new backup. This will only be done if an exclusive advisory lock can be acquired to demonstrate that the prior failed backup process has really stopped. This feature relies on pg_is_in_backup() so only works on >= 9.3. This feature is not supported for >= 9.6 since backups are run in non-exclusive mode. The setting is disabled by default because it assumes that is the only process doing exclusive online backups. It depends on an advisory lock that only sets so it may abort other processes that do exclusive online backups. Note that base_backup and pg_dump are safe to use with this setting because they do not call pg_start_backup() so are not exclusive. y The archive section defines options for the archive-push and archive-get commands. Push/get WAL segments asynchronously. Enables asynchronous operation for the archive-push and archive-get commands. Asynchronous operation is more efficient because it can reuse connections and take advantage of parallelism. See the spool-path, archive-get-queue-max, and archive-push-queue-max options for more information. y Maximum size of the archive-get queue. Specifies the maximum size of the archive-get queue when archive-async is enabled. The queue is stored in the spool-path and is used to speed providing WAL to . Size can be entered in bytes (default) or KB, MB, GB, TB, or PB where the multiplier is a power of 1024. 1073741824 Maximum size of the archive queue. After the limit is reached, the following will happen:
    1. will notify that the WAL was successfully archived, then DROP IT.
    2. A warning will be output to the Postgres log.
    If this occurs then the archive log stream will be interrupted and PITR will not be possible past that point. A new backup will be required to regain full restore capability. In asynchronous mode the entire queue will be dropped to prevent spurts of WAL getting through before the queue limit is exceeded again. The purpose of this feature is to prevent the log volume from filling up at which point Postgres will stop completely. Better to lose the backup than have go down. Size can be entered in bytes (default) or KB, MB, GB, TB, or PB where the multiplier is a power of 1024.
    1GB
    Archive timeout. Set maximum time, in seconds, to wait for each WAL segment to reach the archive repository. The timeout applies to the check and backup commands when waiting for WAL segments required for backup consistency to be archived. 30
    The restore section defines settings used for restoring backups. Restore only specified databases. This feature allows only selected databases to be restored. Databases not specifically included will be restored as sparse, zeroed files to save space but still allow to perform recovery. After recovery the databases that were not included will not be accessible but can be removed with the drop database command. built-in databases (template0, template1, and postgres) are always restored.The {[dash]}-db-include option can be passed multiple times to specify more than one database to include. db_main Restore all symlinks. By default symlinked directories and files are restored as normal directories and files in $PGDATA. This is because it may not be safe to restore symlinks to their original destinations on a system other than where the original backup was performed. This option restores all the symlinks just as they were on the original system where the backup was performed. y Modify the destination of a symlink. Allows the destination file or path of a symlink to be changed on restore. This is useful for restoring to systems that have a different storage layout than the original system where the backup was generated. pg_xlog=/data/xlog Set an option in recovery.conf. See http://www.postgresql.org/docs/X.X/static/recovery-config.html for details on recovery.conf options (replace X.X with your version). This option can be used multiple times.The restore_command option will be automatically generated but can be overridden with this option. Be careful about specifying your own restore_command as is designed to handle this for you. Target Recovery options (recovery_target_name, recovery_target_time, etc.) are generated automatically by and should not be set with this option.Since does not start after writing the recovery.conf file, it is always possible to edit/check recovery.conf before manually restarting. primary_conninfo=db.mydomain.com Restore a tablespace into the specified directory. Moves a tablespace to a new location during the restore. This is useful when tablespace locations are not the same on a replica, or an upgraded system has different mount points. Since 9.2 tablespace locations are not stored in pg_tablespace so moving tablespaces can be done with impunity. However, moving a tablespace to the data_directory is not recommended and may cause problems. For more information on moving tablespaces http://www.databasesoup.com/2013/11/moving-tablespaces.html is a good resource. ts_01=/db/ts_01 Restore all tablespaces into the specified directory. By default tablespaces are restored into their original locations and while this behavior can be modified by with the tablespace-map open it is sometime preferable to remap all tablespaces to a new directory all at once. This is particularly useful for development or staging systems that may not have the same storage layout as the original system where the backup was generated. The path specified will be the parent path used to create all the tablespaces in the backup. /data/tablespace A stanza defines the backup configuration for a specific database cluster. The stanza section must define the database cluster path and host/user if the database cluster is remote. Also, any global configuration sections can be overridden to define stanza-specific settings. Indexing: All pg- options are indexed to allow for configuring multiple hosts. For example, a single primary is configured with the pg1-path, pg1-port, etc. options. If a standby is configured then index the pg- options on the repository host as pg2- (e.g. pg2-host, pg2-path, etc). exe path on the host. Required only if the path to is different on the local and hosts. If not defined, the database host exe path will be set the same as the local exe path. same as local /usr/lib/backrest/bin/pgbackrest database host configuration file. Sets the location of the configuration file on the host. This is only required if the host configuration file is in a different location than the local configuration file. /conf/pgbackrest/pgbackrest.conf database host configuration include path. Sets the location of the configuration include path on the host. This is only required if the host configuration include path is in a different location than the local configuration include path. /conf/pgbackrest/conf.d database host configuration path. Sets the location of the configuration path on the host. This is only required if the host configuration path is in a different location than the local configuration path. /conf/pgbackrest host for operating remotely via SSH. Used for backups where the host is different from the repository host. db.domain.com host logon user when pg-host is set. This user will also own the remote process and will initiate connections to . For this to work correctly the user should be the database cluster owner which is generally postgres, the default. db_owner data directory. This should be the same as the data_directory setting in postgresql.conf. Even though this value can be read from postgresql.conf or it is prudent to set it in case those resources are not available during a restore or offline backup scenario. The pg-path option is tested against the value reported by on every online backup so it should always be current. /data/db port. Port that is running on. This usually does not need to be specified as most clusters run on the default port. 6543 unix socket path. The unix socket directory that was specified when was started. will automatically look in the standard location for your OS so there is usually no need to specify this setting unless the socket directory was explicitly modified with the unix_socket_directory setting in postgresql.conf. /var/run/postgresql database user. The database user name used when connecting to . If not specified will connect with the local OS user or PGUSER. backupuser host port when pg-host is set. Use this option to specify a non-default port for the host protocol. Currently only SSH is supported 25
    The {[project]} Command Reference details all commands and options. Commands are used to execute the various functions. Here the command options are listed exhaustively, that is, each option applicable to a command is listed with that command even if it applies to one or more other commands. This includes all the options that may also configured in pgbackrest.conf. Non-boolean options configured in pgbackrest.conf can be reset to default on the command-line by using the reset- prefix. This feature may be used to restore a backup directly on a repository host. Normally, will error because it can see that the database host is remote and restores cannot be done remotely. By adding --reset-pg1-host on the command-line, will ignore the remote database host and restore locally. It may be necessary to pass a new --pg-path to force the restore to happen in a specific path, i.e. not the path used on the database host. The no- prefix may be used to set a boolean option to false on the command-line. Any option may be set in an environment variable using the PGBACKREST_ prefix and the option name in all caps replacing - with _, e.g. pg1-path becomes PGBACKREST_PG1_PATH and stanza becomes PGBACKREST_STANZA. Boolean options are represented as they would be in a configuration file, e.g. PGBACKREST_COMPRESS="n", and reset-* variants are not allowed. Options that that can be specified multiple times on the command-line or in a config file can be represented by separating the values with colons, e.g. PGBACKREST_DB_INCLUDE="db1:db2". Command-line options override environment options which override config file options. Backup a database cluster. does not have a built-in scheduler so it's best to run it from cron or some other scheduling mechanism. {[backrest-exe]} --stanza=db --type=full backup Run a full backup on the db stanza. --type can also be set to incr or diff for incremental or differential backups. However, if no full backup exists then a full backup will be forced even if incr or diff is requested. Push a WAL segment to the archive. The WAL segment may be pushed immediately to the archive or stored locally depending on the value of archive-async {[backrest-exe]} --stanza=db archive-push %p Accepts a WAL segment from and archives it in the repository defined by repo-path. %p is how specifies the location of the WAL segment to be archived. Get a WAL segment from the archive. WAL segments are required for restoring a cluster or maintaining a replica. {[backrest-exe]} --stanza=db archive-get %f %p Retrieves a WAL segment from the repository. This command is used in recovery.conf to restore a backup, perform PITR, or as an alternative to streaming for keeping a replica up to date. %f is how specifies the WAL segment it needs and %p is the location where it should be copied. Check the configuration. The check command validates that and the archive_command setting are configured correctly for archiving and backups. It detects misconfigurations, particularly in archiving, that result in incomplete backups because required WAL segments did not reach the archive. The command can be run on the database or the repository host. The command may also be run on the standby host, however, since pg_switch_xlog()/pg_switch_wal() cannot be performed on the standby, the command will only test the repository configuration. Note that pg_create_restore_point('pgBackRest Archive Check') and pg_switch_xlog()/pg_switch_wal() are called to force to archive a WAL segment. Restore points are only supported in >= 9.1 so for older versions the check command may fail if there has been no write activity since the last log rotation, therefore it is recommended that activity be generated by the user if there have been no writes since the last WAL switch before running the check command. {[backrest-exe]} --stanza=db check Expire backups that exceed retention. does backup rotation but is not concerned with when the backups were created. If two full backups are configured for retention, will keep two full backups no matter whether they occur two hours or two weeks apart. {[backrest-exe]} --stanza=db expire Expire (rotate) any backups that exceed the defined retention. Expiration is run automatically after every successful backup, so there is no need to run this command separately unless you have reduced retention, usually to free up some space. Restore a database cluster. This command is generally run manually, but there are instances where it might be automated. {[backrest-exe]} --stanza=db --type=name --target=release restore Restores the latest database cluster backup and then recovers to the release restore point. Retrieve information about backups. The info command operates on a single stanza or all stanzas. Text output is the default and gives a human-readable summary of backups for the stanza(s) requested. This format is subject to change with any release. For machine-readable output use --output=json. The JSON output contains far more information than the text output and is kept stable unless a bug is found. {[backrest-exe]} --stanza=db --output=json info Get information about backups in the db stanza. {[backrest-exe]} --output=json info Get information about backups for all stanzas in the repository. Get help. Three levels of help are provided. If no command is specified then general help will be displayed. If a command is specified then a full description of the command will be displayed along with a list of valid options. If an option is specified in addition to a command then the a full description of the option as it applies to the command will be displayed. {[backrest-exe]} help backup Get help for the backup command. {[backrest-exe]} help backup force Get help for the force option of the backup command. Allow processes to run. If the processes were previously stopped using the stop command then they can be started again using the start command. Note that this will not immediately start up any processes but they are allowed to run. {[backrest-exe]} --stanza=main start Allows processes to run for the main stanza. Stop processes from running. Does not allow any new processes to run. By default running processes will be allowed to complete successfully. Use the --force option to terminate running processes. processes will return an error if they are run after the stop command completes. {[backrest-exe]} stop Stop new processes for all stanzas but allow any current process to complete. List paths/files in the repository. This is intended to be a general purpose list function, but for now it only works on the repository. {[backrest-exe]} ls backup/demo List all backups in the demo stanza. Get version. Displays installed version. {[backrest-exe]} version Get version. Create the required stanza data. The stanza-create command must be run on the host where the repository is located after the stanza has been configured in pgbackrest.conf. {[backrest-exe]} --stanza=db stanza-create Create the required data for the db stanza. Upgrade a stanza. Immediately after upgrading to a newer major version, the pg-path for all configurations must be set to the new database location and the stanza-upgrade run on the repository host. If the database is offline use the --no-online option. {[backrest-exe]} --stanza=db stanza-upgrade Upgrade the db stanza to a new version of . Delete a stanza. The stanza-delete command removes data in the repository associated with a stanza.Use this command with caution &mdash; it will permanently remove all backups and archives from the repository for the specified stanza. To delete a stanza:
    • Shut down the cluster associated with the stanza (or use --force to override).
    • Run the stop command on the repository host.
    • Run the stanza-delete command on the repository host.
    Once the command successfully completes, it is the responsibility of the user to remove the stanza from all configuration files.
    {[backrest-exe]} --stanza=db stanza-delete Delete the db stanza repository.
    pgbackrest-release-2.24/doc/xml/release.xml000066400000000000000000014624231362531507100207320ustar00rootroot00000000000000 The {[project]} Releases detail each version of the software and lists the changes made in each version. release numbers consist of two parts, major and minor. A major release may break compatibility with the prior major release, but v2 releases are fully compatible with v1 repositories and will accept all v1 options. Minor releases can include bug fixes and features but do not change the repository format and strive to avoid changing options and naming. Documentation for the v1 release can be found here. The notes for a release may also contain Additional Notes but changes in this section are only to documentation or the test suite and have no direct impact on the codebase.

    Prevent defunct processes in asynchronous archive commands.

    Error when archive-get/archive-push/restore are not run on a host.

    Read HTTP content to eof when size/encoding not specified.

    Fix resume when the resumable backup was created by Perl.

    In this case the resumable backup should be ignored, but the C code was not able to load the partial manifest written by Perl since the format differs slightly. Add validations to catch this case and continue gracefully.

    Auto-select backup set on restore when time target is specified.

    Auto-selection is performed only when --set is not specified. If a backup set for the given target time cannot not be found, the latest (default) backup set will be used.

    Skip pg_internal.init temp file during backup.

    Add more validations to the manifest on backup.

    Prevent lock-bot from adding comments to locked issues.

    Fix missing files corrupting the manifest.

    If a file was removed by during the backup (or was missing from the standby) then the next file might not be copied and updated in the manifest. If this happened then the backup would error when restored.

    Use pkg-config instead of xml2-config for libxml2 build options.

    Validate checksums are set in the manifest on backup/restore.

    Fix error in timeline conversion.

    The timeline is required to verify WAL segments in the archive after a backup. The conversion was performed base 10 instead of 16, which led to errors when the timeline was &ge; 0xA.

    Fix options being ignored by asynchronous commands.

    The asynchronous archive-get/archive-push processes were not loading options configured in command configuration sections, e.g. [global:archive-get].

    Fix handling of \ in filenames.

    \ was not being properly escaped when calculating the manifest checksum which prevented the manifest from loading. Since instances of \ in cluster filenames should be rare to nonexistent this does not seem likely to be a serious problem in the field.

    is now pure C.

    Add pg-user option.

    Specifies the database user name when connecting to . If not specified will connect with the local OS user or PGUSER, which was the previous behavior.

    Allow path-style URIs in S3 driver.

    The backup command is implemented entirely in C.

    Add basic time management functions.

    Add httpLastModifiedToTime() to parse HTTP last-modified header.

    Parse dates in storageS3InfoList() and storageS3Info().

    Fix archive-push/archive-get when PGDATA is symlinked.

    These commands tried to use cwd() as PGDATA but this would disagree with the path configured in pgBackRest if PGDATA was symlinked. If cwd() does not match the path then chdir() to the path and make sure the next cwd() matches the result from the first call.

    Fix reference list when backup.info is reconstructed in expire command.

    Since the backup command is still using the Perl version of reconstruct this issue will not express unless 1) there is a backup missing from backup.info and 2) the expire command is run directly instead of running after backup as usual. This unlikely combination of events means this is probably not a problem in the field.

    Fix segfault on unexpected EOF in gzip decompression.

    Add manifest build for new backups.

    Fix remote timeout in delta restore.

    When performing a delta restore on a largely unchanged cluster the remote could timeout if no files were fetched from the repository within protocol-timeout. Add keep-alives to prevent remote timeout.

    Fix handling of repeated HTTP headers.

    When HTTP headers are repeated they should be considered equivalent to a single comma-separated header rather than generating an error, which was the prior behavior.

    JSON output from the info command is no longer pretty-printed.

    Monitoring systems can more easily ingest the JSON without linefeeds. External tools such as jq can be used to pretty-print if desired.

    The check command is implemented entirely in C.

    Document how to contribute to .

    Document maximum version for auto-stop option.

    Fix container test path being used when --vm=none.

    Fix mismatched timezone in expect test.

    Don't autogenerate embedded libc code by default.

    12 support.

    Add info command set option for detailed text output.

    The additional details include databases that can be used for selective restore and a list of tablespaces and symlinks with their default destinations.

    Add standby restore type.

    This restore type automatically adds standby_mode=on to recovery.conf for < 12 and creates standby.signal for &ge; 12, creating a common interface between PostgreSQL versions.

    The restore command is implemented entirely in C.

    Migrate backup manifest load/save to C.

    Improve performance of info file load/save.

    Add helper function for adding CipherBlock filters to groups.

    Document the relationship between db-timeout and protocol-timeout.

    Add documentation clarifications regarding standby repositories.

    Add FAQ for time-based Point-in-Time Recovery.

    Improve slow manifest build for very large quantities of tables/segments.

    Fix exclusions for special files.

    The stanza-create/update/delete commands are implemented entirely in C.

    The start/stop commands are implemented entirely in C.

    Create log directories/files with 0750/0640 mode.

    Move info file checksum to the end of the file.

    Fix yum.p.o package being installed when custom package specified.

    Build as an unprivileged user.

    Retry S3 RequestTimeTooSkewed errors instead of immediately terminating.

    Fix incorrect handling of transfer-encoding response to HEAD request.

    Fix scoping violations exposed by optimizations in gcc 9.

    Add repo-s3-port option for setting a non-standard S3 service port.

    The local command for backup is implemented entirely in C.

    The check command is implemented partly in C.

    Add Perl interface to C storage layer.

    Add Db object to encapsulate queries and commands.

    Add PostgreSQL query client.

    Fix archive retention expiring too aggressively.

    The expire command is implemented entirely in C.

    The local command for restore is implemented entirely in C.

    Remove hard-coded user so $PGUSER works.

    Honor configure --prefix option.

    Rename repo-s3-verify-ssl option to repo-s3-verify-tls.

    The new name is preferred because pgBackRest does not support any SSL protocol versions (they are all considered to be insecure). The old name will continue to be accepted.

    Add most unimplemented functions to the remote storage driver.

    Rename info*New() functions to info*NewLoad().

    Add backup management functions to InfoBackup.

    Add FAQ to the documentation.

    Use wal_level=replica in the documentation for &ge; 9.6.

    Fix segfault when process-max > 8 for archive-push/archive-get.

    Bypass database checks when stanza-delete issued with force.

    Add configure script for improved multi-platform support.

    Filter improvements. Only process next filter in IoFilterGroup when input buffer is full or flushing. Improve filter's notion of done to optimize filter processing.

    Improve performance of non-blocking reads by using maximum buffer size.

    Add storageInfoList() to get detailed info about all entries in a path.

    Allow storageInfo() to follow links.

    Allow StorageFileWrite to set user, group, and modification time.

    Add pathExists() to Storage object.

    Improve zero-length content handling in HttpClient object.

    Don't append strerror() to error message when errno is 0.

    Improve type safety of interfaces and drivers.

    Add --c option to request a C remote.

    Add common/macro.h for general-purpose macros.

    Add macros for object free functions.

    Various MemContext callback improvements.

    Various Buffer improvements.

    Simplify storage object names.

    Add ioWriteStr() and ioWriteStrLine().

    Add separate functions to encode/decode each JSON type.

    Add macros to create constant Buffer objects.

    Add missing httpUriEncode() in S3 request.

    Add unsigned int Variant type and update code to use it.

    Expose handle (file descriptor) from IoWrite when applicable.

    Add iniSave() and iniMove() to Ini object.

    Add *Save() functions to most Info objects.

    Extern infoHash() so it can be used by other modules.

    varNewKv() accepts a KeyValue object rather than creating one.

    Add constant for maximum buffer sizes required by cvt*() functions.

    Add true and false String constants.

    Refactor Ini interface to expose String values instead of Variant.

    Refactor main() as a switch() statement.

    Add cfgOptionUInt() and cfgOptionUInt64() and update code to use them.

    Improve log performance, simplify macros, rename logWill() to logAny().

    Improve coverage in perl/exec, config/config, and config/parse modules.

    Remove -Wswitch-enum compiler option.

    Error on multiple option alternate names and simplify help command.

    Use THROW_ON_SYS_ERROR*() to improve code coverage.

    Improve macros and coverage rules that were hiding missing coverage.

    Improve efficiency of FUNCTION_LOG*() macros.

    Add user guides for CentOS/RHEL 6/7.

    Automate coverage summary report generation.

    Add --out-preserve to preserve contents of output path.

    Restore index menu url default lost in b85e51d6.

    Add harnessInfoChecksum/Z() to ease creation of test info files.

    Update containers with minor releases and liblz4.

    Add testUser() and testGroup().

    Add build-max option to set max build processes.

    Reduce ScalityS3 processes since only two are needed.

    Update mock/expire module test matrix so expect tests output.

    Fix zero-length reads causing problems for IO filters that did not expect them.

    Fix reliability of error reporting from local/remote processes.

    Fix Posix/CIFS error messages reporting the wrong filename on write/sync/close.

    Harden IO filters against zero input and optimize zero output case.

    Move lockRelease() to the end of exitSafe().

    Add CHECK() macro for production assertions.

    Automatically generate constants for command and option names.

    Use a macro instead of a nested struct to create common String variables.

    Add STR() macro to create constant String objects from runtime strings.

    Add macros to create constant Variant types.

    Migrate backupRegExp() to C.

    Option to build documentation from current apt.postgres.org packages.

    IMPORTANT NOTE: The new TLS/SSL implementation forbids dots in S3 bucket names per RFC-2818. This security fix is required for compliant hostname verification.

    Fix issues when a path option is / terminated.

    Fix issues when log-level-file=off is set for the archive-get command.

    Fix C code to recognize host:port option format like Perl does.

    Fix issues with remote/local command logging options.

    The archive-push command is implemented entirely in C.

    Increase process-max limit to 999.

    Improve error message when an S3 bucket name contains dots.

    Add separate archive-push-async command.

    CryptoHash improvements and fixes. Fix incorrect buffer size used in cryptoHashOne(). Add missing const to cryptoHashOne() and cryptoHashOneStr(). Add hash size constants. Extern hash type constant.

    Add CIFS storage driver.

    Add file write to the remote and S3 storage drivers.

    Add storageRepoWrite() and storagePg()/storagePgWrite() to storage helper.

    Use a single file to handle global errors in async archiving.

    Add document creation to XML objects.

    Remove redundant documentation from interface files and clarify ambiguous function names.

    Add WAL info to interface.

    Refactor interface to remove most code duplication.

    Logging improvements. Allow three-digit process IDs in logging. Allow process id in C logging.

    Add process id to ProtocolParallelJob.

    Add process id to C archive-get and archive-push logging.

    Close log file before exec().

    Allow warnings to be written by archiveAsyncStatusOkWrite().

    Move WAL path prefix logic into walPath().

    Make notion of current info ID in C align with Perl.

    Add locking capability to the remote command.

    Add forkSafe() to handle fork errors.

    Add httpHeaderDup().

    httpClientRequest() accepts a body parameter.

    Add protocolKeepAlive() to send noops to all remotes.

    Make strLstDup() null-tolerant.

    Add strLstMergeAnti() for merge anti-joins.

    Add cvtSSizeToZ() and debug macros.

    Remove unused infoArchiveCheckPg() function.

    Add constants for .ok/.error status extensions.

    Clarify that S3-compatible object stores are supported.

    Build test harness with the same warnings as code being tested.

    Add TEST_64BIT() macro to detect 64-bit platforms.

    Skip coverage for macros with numbers in their name.

    Use restore command for remote performances tests.

    Fix possible truncated WAL segments when an error occurs mid-write.

    Fix info command missing WAL min/max when stanza specified.

    Fix non-compliant JSON for options passed from C to Perl.

    The archive-get command is implemented entirely in C.

    Enable socket keep-alive on older Perl versions.

    Error when parameters are passed to a command that does not accept parameters.

    Add hints when unable to find a WAL segment in the archive.

    Improve error when hostname cannot be found in a certificate.

    Add additional options to backup.manifest for debugging purposes.

    Migrate local and remote commands to C.

    Add separate archive-get-async command.

    Add ProtocolParallel* objects for parallelizing commands.

    Add ProtocolCommand object.

    Add exists() to remote storage.

    Resolve storage path expressions before passing to remote.

    Expose handle (file descriptor) from IoRead when applicable.

    Add storageHelperFree() to storage helper.

    Add kvKeyExists() to KeyValue object.

    Add lstRemove() to List object.

    Allow cfgExecParam() to exclude options.

    MemContext improvements. Improve performance of context and memory allocations. Use contextTop/contextCurrent instead of memContextTop()/memContextCurrent(). Don't make a copy of the context name.

    Make DESTDIR fully-configurable in the Makefile.

    Add note for CSTD settings on BSD variants.

    Add clean and uninstall targets to Makefile.

    Change execRead() to return a size_t.

    Prevent option warning from being output when running help command.

    Improve null-handling of strToLog() and varToLog().

    Increase per-call stack trace size to 4096.

    Move compress module to common/compress.

    Move crypto module to common/crypto.

    Update default documentation version to 10.

    Add instructions for building the coverage report.

    Documentation builds on 9.4-10.

    Create test matrix for mock/archive, mock/archive-stop, mock/all, mock/expire, and mock/stanza to increase coverage and reduce tests.

    Improve fork harness to allow multiple children and setup pipes automatically.

    Reduce expect log level in mock/archive and mock/stanza tests.

    Rename test modules for consistency.

    Only run test-level stack trace by default for unit-tested modules.

    Add missing ToLog() coverage to String, List, and PgControl.

    Create aliases for test VMs ordered by age.

    Add unimplemented S3 driver method required for archive-get.

    Fix check for improperly configured pg-path.

    JSON improvements. Optimize parser implementation. Make the renderer more null tolerant.

    Automatically adjust db-timeout when protocol-timeout is smaller.

    Fix issue with multiple async status files causing a hard error.

    The info command is implemented entirely in C.

    Simplify info command text message when no stanzas are present.

    Replace the repository path with the repository.

    Add _DARWIN_C_SOURCE flag to Makefile for MacOS builds.

    Update address lookup in C TLS client to use modern methods.

    Include Posix-compliant header for strcasecmp() and fd_set.

    Add remote storage objects.

    Add ProtocolClient object and helper functions.

    Add Exec object.

    Add IoHandleRead and IoHandleWrite objects.

    Add cfgExecParam() to generate parameters for executing commands.

    Ignore SIGPIPE signals and check EPIPE result instead.

    Function log macro improvements. Rename FUNCTION_DEBUG_* and consolidate ASSERT_* macros for consistency. Improve CONST and P/PP type macro handling. Move MACRO_TO_STR() to common/debug.h. Remove unused type parameter from FUNCTION_TEST_RETURN().

    Make the C version of the info command conform to the Perl version.

    Improve accuracy of strSizeFormat().

    Add ioReadBuf() to easily read into a buffer.

    JSON improvements. Allow empty arrays in JSON parser. Fix null output in JSON renderer. Fix escaping in JSON string parser/renderer.

    Allocate extra space for concatenations in the String object.

    Return UnknownError from errorTypeFromCode() for invalid error codes.

    Update Perl repo rules to work when stanza is not specified.

    Update Storage::Local->list() to accept an undefined path.

    Null-terminate list returned by strLstPtr().

    Add kvMove() and varLstMove().

    Replace FileOpenError with HostConnectError in TlsClient.

    Allow string Variant objects to contain null.

    Rename common/io/handle module to common/io/handleWrite.

    Add const VariantList * debug type.

    Fix hard-coded repository path.

    Clarify that encryption is always performed client-side.

    Add examples for building a documentation host.

    Allow if in manifest variables, lists, and list items.

    Move C module include in test.c above headers included for testing.

    Allow primary gid for the test user to be different from uid.

    Increase timeout in storage/s3 module to improve reliability.

    Remove request for S3 object info directly after putting it.

    Correct archive-get-queue-max to be size type.

    Add error message when current user uid/gid does not map to a name.

    Error when --target-action=shutdown specified for < 9.5.

    Set TCP keepalives on S3 connections.

    Reorder info command text output so most recent backup is output last.

    Change file ownership only when required.

    Redact authentication header when throwing S3 errors.

    Enable S3 storage and encryption for archive-get command in C.

    Migrate local info command to C.

    Add S3 storage driver.

    Add HttpClient object.

    Add TlsClient object.

    Add interface objects for libxml2.

    Add encryption capability to Info* objects.

    Add IoFilter interface to CipherBlock object.

    Allow arbitrary InOut filters to be chained in IoFilterGroup.

    Add infoBackup object to encapsulate the backup.info file.

    Improve JSON to Variant conversion and add Variant to JSON conversion.

    Storage helper improvements. Allow NULL stanza in storage helper. Add path expression for repository backup.

    Info module improvements. Rename constants in Info module for consistency. Remove #define statements in the InfoPg module to conform with newly-adopted coding standards. Use cast to make for loop more readable in InfoPg module. Add infoArchiveIdHistoryMatch() to the InfoArchive object.

    Allow I/O read interface to explicitly request blocking reads.

    Improve error messages when info files are missing/corrupt.

    Add strSizeFormat() to String object.

    Add strLstInsert() and strLstInsertZ() to StringList object.

    Rename PGBACKREST/BACKREST constants to PROJECT.

    Require S3 key options except for local/remote commands.

    Explicitly compile with Posix 2001 standard.

    Add ServiceError for errors from a service that can be retried.

    Conditional compilation of Perl logic in exit.c.

    Merge cipher.h into crypto.h.

    Remove extraneous use/include statements.

    Remove embedded semicolon from String constant macros.

    Reduce debug level for infoIni() to test.

    Return IoFilterGroup * from ioFilterGroupAdd().

    Add coding standards for String constants.

    Add missing LOG_DEBUG() macro.

    Clarify when target-action is effective and version support.

    Clarify that region/endpoint must be configured correctly for the bucket.

    Add documentation for building the documentation.

    Add admonitions to all documentation renderers (HTML, PDF, Markdown and help text) and update xml files accordingly.

    Add HTML table rendering and update PDF/Markdown renderers to support header-less tables. Add optional table captions.

    Escape special characters in latex when not in a code block.

    Base menu ordering on natural ordering in the manifest.

    Replace keywords with more flexible if statements.

    Pre-build containers for any execute elements marked pre.

    Documentation may be built with user-specified packages.

    Add Centos/RHEL 7 option to documentation build.

    Allow custom logo for PDF documentation.

    Modify general document elements to allow any child element.

    Use absolute paths so that ./doc.pl runs.

    Pick pg_switch_wal()/pg_switch_xlog() based on version.

    Add configuration to the standby so it works as a primary when promoted.

    Create common if expressions for testing os-type.

    Add zlib1g-dev to Debian builds.

    New test containers with static test certificates.

    Fix test binary name for gprof.

    Allow arbitrary multiplier and flush character in IoTestFilterMultiply.

    Update URL for Docker install.

    Add testRepoPath() to let C unit tests know where the code repository is located.

    Merge common/typeStringListTest module into common/typeStringTest.

    Merge common/typeVariantListTest module into common/typeVariantTest.

    Fix issue with archive-push-queue-max not being honored on connection error.

    Fix static WAL segment size used to determine if archive-push-queue-max has been exceeded.

    Fix error after log file open failure when processing should continue.

    Automatically enable backup checksum delta when anomalies (e.g. timeline switch) are detected.

    Retry all S3 5xx errors rather than just 500 internal errors.

    Correct current history item in InfoPg to always be in position 0.

    Make ioReadLine() read less aggressively.

    Add ioWriteFlush() to flush pending output.

    Add destructors to IoRead and IoWrite objects.

    Add base variants to all integer to string conversion functions.

    Add lstInsert() to List object.

    Add strCatChr(), strEmpty(), and constant macros to String object.

    Add regExpPrefix() to aid in static prefix searches.

    Correct cfgDefDataFind() to use UINTP instead of VOIDPP.

    Change infoArchiveCheckPg() to display the version as a string (e.g. 9.4) instead of the integer representation (e.g. 90400) when throwing an error.

    Allow storage path and file mode to be 0.

    Limit usable Buffer size without changing allocated size.

    Construct Wait object in milliseconds instead of fractional seconds.

    Add THROW*_ON_SYS_ERROR* macros to test and throw system errors.

    Add KernelError to report miscellaneous kernel errors.

    Use THROW_ON_SYS_ERROR macro to improve fork code coverage.

    Storage interface methods no longer declare the driver as const.

    Add memContextCallbackClear() to prevent double free() calls.

    Merge crypto/random module into crypto/crypto.

    Add cryptoError() and update crypto code to use it.

    Rename CipherError to CryptoError.

    Reword misleading message in stack trace when parameter buffer is full.

    Add logging macros for TimeMSec type.

    Modify value of PERL_EMBED_ERROR macro.

    Add new HTML tags and strExtra to DocHtmlElement.

    Remove error suppression for make.

    New test containers. Add libxml2 library needed for S3 development. Include new minor version upgrades for . Remove 11 beta/rc repository.

    Test speed improvements. Mount tmpfs in Vagrantfile instead test.pl. Preserve contents of C unit test build directory between test.pl executions. Improve efficiency of code generation.

    New, concise coverage report for C.

    Add TEST_LOG() and TEST_LOG_FMT() macros.

    Improve alignment of expected vs. actual error test results.

    Add time since the beginning of the run to each test statement.

    Fix missing URI encoding in S3 driver.

    Fix incorrect error message for duplicate options in configuration files.

    Fix incorrectly reported error return in info logging.

    A return code of 1 from the archive-get was being logged as an error message at info level but otherwise worked correctly.

    Add checksum delta for incremental backups.

    Checksum delta backups uses checksums rather than timestamps to determine if files have changed.

    11 support, including configurable WAL segment size.

    Ignore all files in a linked tablespace directory except the subdirectory for the current version of .

    Previously an error would be generated if other files were present and not owned by the user.

    Improve info command to display the stanza cipher type.

    Improve support for special characters in filenames.

    Allow delta option to be specified in the configuration file.

    Migrate local, unencrypted, non-S3 archive-get command to C.

    Storage refactoring. Posix file functions now differentiate between open and missing errors. Don't use negations in objects below Storage. Rename posix driver files/functions for consistency. Full abstraction of storage driver interface. Merge protocol storage helper into storage helper. Add CIFS driver to storage helper for read-only repositories.

    Update all interfaces to use variable parameter constructors.

    Info objects now parse JSON and use specified storage.

    Add ioReadLine()/ioWriteLine() to IoRead/IoWrite objects.

    Add helper for repository storage.

    Add cryptoHmacOne() for HMAC support.

    Add cfgDefOptionMulti() to identify multi-value options.

    Add bufNewZ() and bufHex() to Buffer object.

    Allow hashSize() to run on remote storage.

    Restore bIgnoreMissing flag in backupFile() lost in storage refactor.

    Migrate walIsPartial(), walIsSegment(), and walSegmentFind() from Perl to C.

    Migrate control functions to detect stop files to C.

    Make archive-get info messages consistent between C and Perl implementations.

    Change locking around async process forking to be more test friendly.

    Simplify debug logging by allowing log functions to return String objects.

    Improve documentation in filter.h and filter.internal.h.

    Use command in authorized_hosts to improve SSH security.

    List allowable values for the buffer-size option in the configuration reference.

    Update introduction to be pithy.

    Install nodejs from deb.nodesource.com.

    Disable flapping archive/get unit on CentOS 6.

    Move test expect log out of the regular test directory.

    Fix buffer underrun in configuration test harness.

    Fix missing test caused by a misplaced YAML tag.

    Make Valgrind return an error even when a non-fatal issue is detected. Update some minor issues discovered in the tests as a result.

    Add -ftree-coalesce-vars option to unit test compilation.

    Clear test directory between test runs.

    Allow C or Perl coverage to run on more than one VM.

    Don't perform valgrind when requested.

    Remove compiler warnings that are not valid for u16.

    Merge all posix storage tests into a single unit.

    Add .gitignore to C src directory.

    Fix typo in unit test error messages, EXECTED => EXPECTED.

    Make comment blocks consistent across all tests.

    Fix issue where relative links in $PGDATA could be stored in the backup with the wrong path.

    This issue did not affect absolute links and relative tablespace links were caught by other checks.

    Remove incompletely implemented online option from the check command.

    Offline operation runs counter to the purpose of this command, which is to check if archiving and backups are working correctly.

    Fix issue where errors raised in C were not logged when called from Perl.

    properly terminated with the correct error code but lacked an error message to aid in debugging.

    Fix issue when a boolean option (e.g. delta) was specified more than once.

    Allow any option to be set in an environment variable.

    This includes options that previously could only be specified on the command line, e.g. stanza, and secret options that could not be specified on the command-line, e.g. repo1-s3-key-secret.

    Exclude temporary and unlogged relation (table/index) files from backup.

    Implemented using the same logic as the patches adding this feature to , 8694cc96 and 920a5e50. Temporary relation exclusion is enabled in &ge; 9.0. Unlogged relation exclusion is enabled in &ge; 9.1, where the feature was introduced.

    Allow arbitrary directories and/or files to be excluded from a backup.

    Misuse of this feature can lead to inconsistent backups so read the --exclude documentation carefully before using.

    Add log-subprocess option to allow file logging for local and remote subprocesses.

    11 Beta 3 support.

    Allow zero-size files in backup manifest to reference a prior manifest regardless of timestamp delta.

    Improve asynchronous archive-get/archive-push performance by directly checking status files.

    Improve error message when a command is missing the stanza option.

    Validate configuration options in a single pass. By pre-calculating and storing the option dependencies in parse.auto.c validation can be completed in a single pass, which is both simpler and faster.

    Add gzip compression/decompression filters for C.

    Improve performance of string to int conversion. Use strtoll() instead of sprintf() for conversion. Also use available integer min/max constants rather than hard-coded values.

    Add uint64 variant type and supporting conversion functions.

    Add basic C JSON parser.

    Migrate minimum set of code for reading archive.info files from Perl to C.

    Allow Buffer object used size to be different than allocated size. Add functions to manage used size and remaining size and update automatically when possible.

    Abstract IO layer out of the storage layer. This allows the routines to be used for IO objects that do not have a storage representation. Implement buffer read and write IO objects. Implement filters and update cryptoHash to use the new interface. Implement size and buffer filters.

    storageFileRead() accepts a buffer for output rather than creating one. This is more efficient overall and allows the caller to specify how many bytes will be read on each call. Reads are appended if the buffer already contains data but the buffer size will never increase.

    Add iniSectionList() to Ini object and remove dead code.

    Manifest improvements. Require catalog version when instantiating a Manifest object (and not loading it from disk). Prevent manifest from being built more than once. Limit manifest build recursion (i.e. links followed) to sixteen levels to detect link loops.

    Do nothing in memContextMove() when the context is already in the specified parent.

    Allow command/option constants to autonumber in both C and Perl to reduce churn when a new command/option is added.

    Show exact log level required for stack trace param output instead of just debug.

    Update Archive::Info->archiveIdList() to return a valid error code instead of unknown.

    Add cvtBoolToConstZ() to simplify conversion of boolean to string.

    Add cvtZToUInt() to convert string to unsigned int.

    Enable -Wstrict-prototypes, -Wpointer-arith, -Wduplicated-branches, -Wvla, and -Wduplicated-cond and update code to conform where necessary.

    Rename error-handling variables in Main.pm to conform to standard.

    Remove redundant lines from embedded Perl by combining blank lines.

    Define cipher magic size with sizeof() rather than using a constant.

    Add cvtCharToZ() and macro for debugging char params.

    Add strReplaceChr() to String object.

    Correct OptionInvalidError to OptionInvalidValueError in boolean option parsing.

    Fix invalid log level in log-path option reference.

    Stop trying to arrange contributors in release.xml by last/first name.

    Contributor names have always been presented in the release notes exactly as given, but we tried to assign internal IDs based on last/first name which can be hard to determine and ultimately doesn't make sense. Inspired by Christophe's PostgresOpen 2017 talk, Human Beings Do Not Have a Primary Key.

    Allow containers to be defined in a document. The defined containers are built before the document build begins which allows them to be reused.

    Move most host setup to containers defined in the documentation. This includes installation which had previously been included in the documentation. This way produces faster builds and there is no need for us to document installation.

    Error if LibC build is performed outside the test environment.

    LibC is no longer required for production builds.

    Use pre-built images from Docker Hub when the container definition has not changed. Downloading an image is quite a bit faster than building a new image from scratch and saves minutes per test run in CI.

    Refactor the common/log tests to not depend on common/harnessLog. common/harnessLog was not ideally suited for general testing and made all the tests quite awkward. Instead, move all code used to test the common/log module into the logTest module and repurpose common/harnessLog to do log expect testing for all other tests in a cleaner way. Add a few exceptions for config testing since the log levels are reset by default in config/parse.

    Add --log-level-test option. This allows setting the test log level independently from the general test harness setting, but current only works for the C tests. It is useful for seeing log output from functions on the console while a test is running.

    Improve error reporting for TEST_ASSIGN() and TEST_RESULT_VOID() macros.

    Update code count for new file types and exclusions.

    IMPORTANT NOTE: This release fixes a critical bug in the backup resume feature. All resumed backups prior to this release should be considered inconsistent. A backup will be resumed after a prior backup fails, unless resume=n has been specified. A resumed backup can be identified by checking the backup log for the message aborted backup of same type exists, will be cleaned to remove invalid files and resumed. If the message exists, do not use this backup or any backup in the same set for a restore and check the restore logs to see if a resumed backup was restored. If so, there may be inconsistent data in the cluster.

    Fix critical bug in resume that resulted in inconsistent backups.

    A regression in v0.82 removed the timestamp comparison when deciding which files from the aborted backup to keep on resume. See note above for more details.

    Fix error in selective restore when only one user database exists in the cluster.

    Fix non-compliant ISO-8601 timestamp format in S3 authorization headers.

    AWS and some gateways were tolerant of space rather than zero-padded hours while others were not.

    11 Beta 2 support.

    Improve the HTTP client to set content-length to 0 when not specified by the server.

    S3 (and gateways) always set content-length or transfer-encoding but HTTP 1.1 does not require it and proxies (e.g. HAProxy) may not include either.

    Set search_path = 'pg_catalog' on connections.

    Move cryptographic hash functions to C using OpenSSL.

    Split log levels into separate header file. Many modules that use debug.h do not need to do logging so this reduces dependencies for those modules.

    Auto-generate Makefile with dependencies.

    Rename cipher module to the more general crypto.

    Update Debian package to add debug symbols to executable.

    Convert the not very portable uint type to unsigned int.

    Create a new section to describe building and build on a separate host.

    Add sample S3 policy to restrict bucket privileges.

    Fix default location of pgbackrest.conf in option reference.

    Preliminary documentation for 11 unprivileged user backup.

    Remove call to lscpu which can vary widely by build host.

    Build containers from scratch for more accurate testing. Use a prebuilt s3 server container.

    Document generator improvements. Allow parameters to be passed when a container is created. Allow /etc/hosts update to be skipped (for containers without bash). Allow environment load to be skipped. Allow bash wrapping to be skipped. Allow forcing a command to run as a user without sudo. Allow an entire execute list to be hidden.

    Add zero-length file to mock/all test.

    Update primary test environment (Vagrant and Docker) to Ubuntu 18.04.

    Improve efficiency of C library builds now that they are used only for testing.

    Remove RHEL and Debian package patches since they have been committed upstream.

    Update parameters for VBoxService start.

    Make ls ordering deterministic in mock/all test.

    Fix potential buffer overrun in error message handling.

    Fix archive write lock being taken for the synchronous archive-get command.

    Embed exported C functions and Perl modules directly into the executable.

    Use time_t instead of __time_t for better portability.

    Print total runtime in milliseconds at command end.

    Add stack trace macros to all functions. Low-level functions only include stack trace in test builds while higher-level functions ship with stack trace built-in. Stack traces include all parameters passed to the function but production builds only create the parameter list when the log level is set high enough, i.e. debug or trace depending on the function.

    Build libc using links rather than referencing the C files in src directly. The C library builds with different options which should not be reused for the C binary or vice versa.

    Test harness improvements. Allow more than one test to provide coverage for the same module. Add option to disable valgrind. Add option to disabled coverage. Add option to disable debug build. Add option to disable compiler optimization. Add --dev-test mode.

    Update SSL error message test on CentOS 7.

    Set log-timestamp=n for integration tests. This means less filtering of logs needs to be done and new timestamps can be added without adding new filters.

    Fix directory syncs running recursively when only the specified directory should be synced.

    Fix archive-copy throwing path not found error for incr/diff backups.

    Fix failure in manifest build when two or more files in PGDATA are linked to the same directory.

    Fix delta restore failing when a linked file is missing.

    Fix rendering of key/value and list options in help.

    Add asynchronous, parallel archive-get.

    This feature maintains a queue of WAL segments to help reduce latency when requests a WAL segment with restore_command.

    Add support for additional configuration files.

    The directory is specified by the --config-include-path option. Add --config-path option for overriding the default base path of the --config and --config-include-path option.

    Add repo-s3-token option to allow temporary credentials tokens to be configured.

    currently has no way to request new credentials so the entire command (e.g. backup, restore) must complete before the credentials expire.

    Update the archive-push-queue-max, manifest-save-threshold, and buffer-size options to accept values in KB, MB, GB, TB, or PB where the multiplier is a power of 1024.

    Make backup/restore path sync more efficient.

    Scanning the entire directory can be very expensive if there are a lot of small tables. The backup manifest contains the path list so use it to perform syncs instead of scanning the backup/restore path.

    Show command parameters as well as command options in initial info log message.

    Rename archive-queue-max option to archive-push-queue-max.

    This is consistent with the new archive-get-queue-max option. The old option name will continue to be accepted.

    Make backup.history sync more efficient. Only the backup.history/[year] directory was being synced, so check if the backup.history is newly created and sync it as well.

    Move async forking and more error handling to C. The Perl process was exiting directly when called but that interfered with proper locking for the forked async process. Now Perl returns results to the C process which handles all errors, including signals.

    Improved lock implementation written in C. Now only two types of locks can be taken: archive and backup. Most commands use one or the other but the stanza-* commands acquire both locks. This provides better protection than the old command-based locking scheme.

    Storage object improvements. Convert all functions to variadic functions. Enforce read-only storage. Add storageLocalWrite() helper function. Add storageCopy(), storageExists(), storageMove(), storageNewRead()/storageNewWrite(), storagePathCreate(), storagePathRemove(), storagePathSync(), and storageRemove(). Add StorageFileRead and StorageFileWrite objects. Abstract Posix driver code into a separate module. Call storagePathRemove() from the Perl Posix driver.

    Improve String and StringList objects. Add strUpper(), strLower(), strLstExists(), strLstExistsZ(), strChr(), strSub(), strSubN(), and strTrunc().

    Improve Buffer object. Add bufNewC(), bufEq() and bufCat(). Only reallocate buffer when the size has changed.

    Add pgControlInfo() to read pg_control and determine the version.

    Add walSegmentNext() and walSegmentRange().

    Error handling improvements. Add THROWP_* macro variants for error handling. These macros allow an ErrorType pointer to be passed and are required for functions that may return different errors based on a parameter. Add _FMT variants for all THROW macros so format types are checked by the compiler.

    Split cfgLoad() into multiple functions to make testing easier. Mainly this helps with unit tests that need to do log expect testing.

    Allow MemContext objects to be copied to a new parent. This makes it easier to create objects and then copy them to another context when they are complete without having to worry about freeing them on error. Update List, StringList, and Buffer to allow moves. Update Ini and Storage to take advantage of moves.

    Full branch coverage in C code.

    Refactor usec to msec in common/time.c. The implementation provides usec resolution but this is not needed in practice and it makes the interface more complicated due to the extra zeros.

    Replace THROW_ON_SYS_ERROR() with THROW_SYS_ERROR(). The former macro was hiding missing branch coverage for critical error handling.

    Start work on C handle io object and use it to output help.

    Don't copy CFGDEF_NAME_ALT or CFGDEF_INHERIT when processing config option inheritance.

    Split debug and assert code into separate headers. Assert can be used earlier because it only depends on the error-handler and not logging. Add ASSERT() macro which is preserved in production builds.

    Cleanup C types. Remove typec.h. Order all typdefs above local includes.

    Fix header exclusion defines that do not match the general pattern.

    Update docs with 32-bit support and caveats.

    32-bit support was added in v1.26.

    Add monitoring examples using and jq.

    Add example of command section usage to archiving configuration.

    Remove documentation describing info --output=json as experimental.

    Update out-of-date description for the spool-path option.

    Add logic to find the real oid of the test1 database during restore testing.

    Document build improvements. Perform apt-get update to ensure packages are up to date before installing. Add -p to the repository mkdir so it won't fail if the directory already exists, handy for testing packages.

    Use lcov for C unit test coverage reporting.

    Switch from Devel::Cover because it would not report on branch coverage for reports converted from gcov. Incomplete branch coverage for a module now generates an error. Coverage of unit tests is not displayed in the report unless they are incomplete for either statement or branch coverage.

    Move test definitions to test/define.yaml. The location is better because it is no longer buried in the Perl test libs. Also, the data can be easily accessed from C.

    Move help/version integration tests to mock/all. Help and version are covered by unit tests, so we really just to need to make sure there is output when called from the command line.

    Move archive-stop and expire tests to the mock module. These are mock integration tests so they should be grouped with the other mock integration tests.

    Add harnessCfgLoad() test function, which allows a new config to be loaded for unit testing without resetting log functions, opening a log file, or taking locks.

    Add HARNESS_FORK macros for tests that require fork(). A standard pattern for tests makes fork() easier to use and should help prevent some common mistakes.

    Add TEST_ERROR_FMT macro to simplify testing of formatted error messages.

    Generate code counts for all source files. The source files are also classified by type and purpose.

    Include VM type in gcov path to avoid conflicts between VMs with different architectures.

    Improve logic for smart builds to include version changes. Skip version checks when testing in --dev mode.

    Use pip 9.03 in test VMs. pip 10 drops support for Python 2.6 which is still used by the older test VMs.

    Allow -DDEBUG_UNIT to be suppressed to test how debug macros behave.

    Rename Perl tests so they don't conflict with their C counterparts.

    Divide tests into three types (unit, integration, performance). Many options that were set per test can instead be inferred from the types, i.e. container, c, expect, and individual.

    Try tweaking time sync settings to prevent clock drift rather than restarting VBoxService on every test run.

    Fix --target-action and --recovery-option options being reported as invalid when restoring with --type=immediate.

    Immediately error when a secure option (e.g. repo1-s3-key) is passed on the command line.

    Since would not pass secure options on to sub-processes an obscure error was thrown. The new error is much clearer and provides hints about how to fix the problem. Update command documentation to omit secure options that cannot be specified on the command-line.

    Fix issue passing --no-config to embedded Perl.

    Fix issue where specifying log-level-stderr > warn would cause a local/remote process to error on exit due to output found on stderr when none was expected.

    The max value for a local/remote process is now error since there is no reason for these processes to emit warnings.

    Fix manifest test in the check command when tablespaces are present.

    Error when multiple arguments are set in the config file for an option that does not accept multiple arguments.

    Remove extraneous sudo commands from src/Makefile.

    Improve Perl configuration. Set config before Main::main() call to avoid secrets being exposed in a stack trace. Move logic for setting defaults to C.

    Improve logging. Move command begin to C except when it must be called after another command in Perl (e.g. expire after backup). Command begin logs correctly for complex data types like hash and list. Specify which commands will log to file immediately and set the default log level for log messages that are common to all commands. File logging is initiated from C.

    Port most of Config::Config::configLoad() from Perl to C.

    Fix incorrect enum types in config.c that throw warnings under clang.

    Enable -Wswitch-enum, -Wconversion, -Wformat=2, -Wformat-nonliteral, and -Wformat-signedness and silence new warnings.

    Improve code documentation in config module.

    Improve debugging. Add ASSERT_DEBUG() macro for debugging and replace all current assert() calls except in tests that can't use the debug code. Replace remaining NDEBUG blocks with the more granular DEBUG_UNIT. Remove some debug memset() calls in MemContext since valgrind is more useful for these checks.

    Add cfgOptionTest() and update cfgOption() calls that are better implemented as cfgOptionTest().

    Build with -DNDEBUG by default but disable for testing.

    Check int size in common/type.h. This ensures that integers are at least 32-bits without having to run the test suite.

    Improve conversion of C exceptions to Exception objects. Colons in the message would prevent all of the message from being loaded into the Exception object.

    Show index in examples for indexed options, i.e. repo-*, pg-*.

    Simplify table of contents on command page by only listing commands.

    Remove references to the C library being optional.

    Add CentOS/RHEL package builds.

    Use clang for static code analysis.

    Nothing found initially except for some functions that should have been marked __noreturn__.

    Build performance improvements. Improve bin and libc build performance. Improve code generation performance.

    Config test code writes secure options to a file instead of passing on the command-line.

    Disable console display of coverage for C files since Devel::Cover does not handle it well.

    Add new test for Common::Io::Process to show that output on stderr will raise an exception on close() even if the exit code is 0.

    Update pip before installing awscli.

    Remove --smart from --expect tests. This ensures that new binaries are built before running the tests.

    Remove Debian package patch now that it has been merged upstream.

    The archive-push command is now partially coded in C which allows the archive_command to run significantly faster when processing status messages from the asynchronous archive process.

    Improve check command to verify that the backup manifest can be built.

    Improve performance of HTTPS client. Buffering now takes the pending bytes on the socket into account (when present) rather than relying entirely on select(). In some instances the final bytes would not be flushed until the connection was closed.

    Improve S3 delete performance. The constant S3_BATCH_MAX had been replaced with a hard-coded value of 2, probably during testing.

    Allow any non-command-line option to be reset to default on the command-line. This allows options in pgbackrest.conf to be reset to default which reduces the need to write new configuration files for specific needs.

    The C library is now required. This eliminates conditional loading and eases development of new library features.

    The {[project-exe]} executable is now a C binary instead of Perl. This allows certain time-critical commands (like async archive-push) to run more quickly.

    Rename db-* options to pg-* and backup-* options to repo-* to improve consistency. repo-* options are now indexed although currently only one is allowed.

    Implement help command in C.

    Implement version command in C.

    Config parsing implemented in C and passed to Perl as JSON.

    Add Buffer, Ini, KeyValue, List, RegExp, Storage, String, StringList, Variant, VariantList, and Wait objects.

    Add command, exit, log, and time modules.

    Remove deprecated archive-max-mb option.

    Improve MemContext module. Add temporary context blocks and refactor allocation arrays to include allocation size.

    Improve error module. Add functions to convert error codes to C errors and handle system errors.

    Create a master list of errors in build/error.yaml. The C and Perl errors lists are created automatically by Build.pm so they stay up to date.

    Move lock release later in exitSafe() to reduce the chance of a new process starting and acquiring a lock before the old process has exited.

    Add 30 second wait loop to lockAcquire() when fail on no lock enabled. This should help prevent processes that are shutting down from interfering with processes that are starting up.

    Replace cfgCommandTotal()/cfgOptionTotal() functions with constants. The constants are applicable in more cases and allow the compiler to optimize certain loops more efficiently.

    Cleanup usage of internal options. Apply internal to options that need to be read to determine locality but should not appear in the help.

    Refactor code to make valgrind happy.

    Fix non-compliant formatting for function declarations.

    All clusters in the documentation are initialized with checksums.

    List deprecated option names in documentation and command-line help.

    Clarify that S3 buckets must be created by the user.

    Add coding standards document.

    Improve section source feature to not require a title or content. The title will be pulled from the source document.

    Allow code blocks to have a type. Currently this is only rendered in Markdown.

    Add table render for Markdown format.

    PDF rendering improvements. Check both doc-path and bin-path for logo. Allow PDF to be output to a location other than the output directory. Use PDF-specific version variable for more flexible formatting. Allow sections to be excluded from table of contents. More flexible replacements for titles and footers. Fill is now the default for table columns. Column width is specified as a percentage rather that using latex-specific notation. Fix missing variable replace for code-block title.

    Add id param for hosts created with host-add. The host-*-ip variable is created from the id param so the name param can be changed without affecting the host-*-ip variable. If id is not specified then it is copied from name.

    Deploy historical documentation to prior rather than the root directory.

    Run valgrind on all C unit tests.

    Only build C binary/library for Perl unit/integration tests or C unit tests that require Perl.

    Improve speed of C unit tests. Preserve object files between tests and use a Makefile to avoid rebuilding object files.

    Report coverage errors via the console. This helps with debugging coverage issues on remote services like Travis.

    No longer run master branch through CI. The integration branch will be run through CI and then pushed to master with github status checks.

    Rename Perl tests so they don't conflict with their C counterparts.

    Update URL for Debian package repository.

    IMPORTANT NOTE: This release fixes a critical bug in the backup resume feature. All resumed backups prior to this release should be considered inconsistent. A backup will be resumed after a prior backup fails, unless resume=n has been specified. A resumed backup can be identified by checking the backup log for the message aborted backup of same type exists, will be cleaned to remove invalid files and resumed. If the message exists, do not use this backup or any backup in the same set for a restore and check the restore logs to see if a resumed backup was restored. If so, there may be inconsistent data in the cluster.

    Fix critical bug in resume that resulted in inconsistent backups. A regression in v0.82 removed the timestamp comparison when deciding which files from the aborted backup to keep on resume. See note above for more details.

    Fix non-compliant ISO-8601 timestamp format in S3 authorization headers. AWS and some gateways were tolerant of space rather than zero-padded hours while others were not.

    Fix directory syncs running recursively when only the specified directory should be synced.

    Fix --target-action and --recovery-option options being reported as invalid when restoring with --type=immediate.

    Fix archive-copy throwing path not found error for incr/diff backups.

    Fix failure in manifest build when two or more files in PGDATA are linked to the same directory.

    Fix delta restore failing when a linked file was missing.

    Fix error in selective restore when only one user database exists in the cluster.

    Improve the HTTP client to set content-length to 0 when not specified by the server. S3 (and gateways) always set content-length or transfer-encoding but HTTP 1.1 does not require it and proxies (e.g. HAProxy) may not include either.

    Improve performance of HTTPS client. Buffering now takes the pending bytes on the socket into account (when present) rather than relying entirely on select(). In some instances the final bytes would not be flushed until the connection was closed.

    Improve S3 delete performance. The constant S3_BATCH_MAX had been replaced with a hard-coded value of 2, probably during testing.

    Make backup/restore path sync more efficient. Scanning the entire directory can be very expensive if there are a lot of small tables. The backup manifest contains the path list so use it to perform syncs instead of scanning the backup/restore path. Remove recursive path sync functionality since it is no longer used.

    Make backup.history sync more efficient. Only the backup.history/[year] directory was being synced, so check if the backup.history is newly created and sync it as well.

    Add log-level-stderr option for stanza-* commands.

    Update docs with 32-bit support and caveats. 32-bit support was added in v1.26.

    Clarify that S3 buckets must be created by the user.

    Update out-of-date description for the spool-path option.

    Remove call to lscpu which can vary widely by build host.

    Add new test for Common::Io::Process to show that output on stderr will raise an exception on close() even if the exit code is 0.

    Add zero-length file to mock/all test.

    Disable package build tests since v1 will no longer be packaged. Users installing packages should update to v2. v1 builds are intended for users installing from source.

    Update SSL error message test on CentOS 7.

    Update URL for Debian package repository.

    Make ls ordering deterministic in mock/all test.

    Change backup test user from backrest to pgbackrest.

    Fixed inability to restore a single database contained in a tablespace using --db-include.

    Ensure latest db-id is selected on when matching archive.info to backup.info. This provides correct matching in the event there are system-id and db-version duplicates (e.g. after reverting a pg_upgrade).

    Fixed overly chatty error message when reporting an invalid command.

    Add stanza-delete command to cleanup unused stanzas.

    Improve stanza-create command so that it does not error when the stanza already exists.

    Minor changes to Manifest module, mostly for test reproducibility.

    Fix non-compliant formatting for function declarations.

    Update stanza-create --force documentation to urge caution when using.

    Add unit tests for the Manifest module.

    Fixed an issue that suppressed locality errors for backup and restore. When a backup host is present, backups should only be allowed on the backup host and restores should only be allowed on the database host unless an alternate configuration is created that ignores the remote host.

    Fixed an issue where WAL was not expired on 10. This was caused by a faulty regex that expected all major versions to be X.X.

    Fixed an issue where the --no-config option was not passed to child processes. This meant the child processes would still read the local config file and possibly cause unexpected behaviors.

    Fixed info command to eliminate "db (prior)" output if no backups or archives exist for a prior version of the cluster.

    Add memGrowRaw() to memory context module.

    Document the relationship between the archive-copy and archive-check options.

    Improve archive-copy reference documentation.

    Relax permissions set by release.pl.

    Split refactor sections into improvements and development in the release notes. Many development notes are not relevant to users and simply clutter the release notes, so they are no longer shown on the website.

    Allow internal options that do not show up in the documentation. Used for test options initially but other use cases are on the horizon.

    Update CI branches to release/1 and release/1-integration.

    No longer run release/1 branch through CI. The release/1-integration branch will be run through CI and then pushed to release/1 with github status checks.

    Move restore test infrastructure to HostBackup.pm. Required to test restores on the backup server, a fairly common scenario. Improve the restore function to accept optional parameters rather than a long list of parameters. In passing, clean up extraneous use of strType and strComment variables.

    Sync time to prevent build failures when running on VirtualBox.

    Fixed an issue that could cause copying large manifests to fail during restore.

    Fixed incorrect WAL offset for 32-bit architectures.

    Fixed an issue retrieving WAL for old database versions. After a stanza-upgrade it should still be possible to restore backups from the previous version and perform recovery with archive-get. However, archive-get only checked the most recent db version/id and failed. Also clean up some issues when the same db version/id appears multiple times in the history.

    Fixed an issue with invalid backup groups being set correctly on restore. If the backup cannot map a group to a name it stores the group in the manifest as false then uses either the owner of $PGDATA to set the group during restore or failing that the group of the current user. This logic was not working correctly because the selected group was overwriting the user on restore leaving the group undefined and the user incorrectly set to the group.

    Fixed an issue passing parameters to remotes. When more than one db was specified the path, port, and socket path would for db1 were passed no matter which db was actually being addressed.

    Repository encryption support.

    Disable gzip filter when --compress-level-network=0. The filter was used with compress level set to 0 which added overhead without any benefit.

    Inflate performance improvement for gzip filter.

    Refactor protocol param generation into a new function. This allows the code to be tested more precisely and doesn't require executing a remote process.

    Add list type for options. The hash type was being used for lists with an additional flag (`value-hash`) to indicate that it was not really a hash.

    Remove configurable option hints. db-path was the only option with a hint so the feature seemed wasteful. All missing stanza options now output the same hint without needing configuration.

    Convert configuration definitions from auto-generated functions to auto-generated data structures.

    Add eof to S3 file driver (required for encryption support).

    Enable additional warnings for C builds.

    Simplify try..catch..finally names. Also wrap in a do...while loop to make sure that no random else is attached to the main if block.

    Improve base64 implementation. Different encoded strings could be generated based on compiler optimizations. Even though decoding was still successful the encoded strings did not match the standard.

    Disable -Wclobber compiler warning because it is mostly useless but keep the rest of of -Wextra.

    Add template to improve initial information gathered for issue submissions.

    Clarify usage of the archive-timeout option and describe how it is distinct from the archive_timeout setting.

    Update release.pl to push data to site repository.

    Automated tests for 32-bit i386/i686 architecture.

    Update Debian/Ubuntu containers to download latest version of pip.

    Full unit test coverage for gzip filter.

    Only check expect logs on CentOS 7. Variations in distros cause false negatives in tests but don't add much value.

    Fix flapping protocol timeout test. It only matters that the correct error code is returned, so disable logging to prevent message ordering from failing the expect test.

    Designate a single distro (Ubuntu 16.04) for coverage testing. Running coverage testing on multiple distros takes time but doesn't add significant value. Also ensure that the distro designated to run coverage tests is one of the default test distros. For C tests, enable optimizations on the distros that don't do coverage testing.

    Automate generation of WAL and pg_control test files. The existing static files would not work with 32-bit or big-endian systems so create functions to generate these files dynamically rather than creating a bunch of new static files.

    Refactor C unit test macros so they compile with -Wstrict-aliasing.

    Refactor C page checksum unit test to compile with -Wstrict-aliasing.

    Fix custom settings for compress-level option being ignored.

    Remove error when overlapping timelines are detected. Overlapping timelines are valid in many Point-in-Time-Recovery (PITR) scenarios.

    Fix instances where database-id was not rendered as an integer in JSON info output.

    Improve performance of list requests on S3. Any beginning literal portion of a filter expression is used to generate a search prefix which often helps keep the request small enough to avoid rate limiting.

    Improve protocol error handling. In particular, stop errors are no longer reported as unexpected.

    Allow functions with sensitive options to be logged at debug level with redactions. Previously, functions with sensitive options had to be logged at trace level to avoid exposing them. Trace level logging may still expose secrets so use with caution.

    Replace dynamically built class hierarchies in I/O layer with fixed parent() calls.

    Improve labeling for errors in helper processes.

    Update C naming conventions.

    Use int datatype wherever possible.

    Better separation of C source from Perl interface.

    Add LibC.template.pm to simplify LibC module generation.

    Add C error handler.

    Perl error handler recognizes errors thrown from the C library.

    Page checksum module uses new C error handler.

    Add C memory contexts.

    Add base64 encode/decode.

    Add I/O performance tests.

    Add C unit test infrastructure.

    Add test macros for C results and errors.

    Warnings in C builds treated as errors.

    Run all tests on tempfs rather than local disk.

    Improve performance of test code. Wait when all tests have been assigned to reduce CPU load.

    Remove Debian test repo after PostgreSQL 10 release.

    Convert config and page checksum tests into C unit tests.

    Add versions to Debian VMs for testing.

    Fixed an issue where warnings were being emitted in place of lower priority log messages during backup from standby initialization.

    Fixed an issue where some db-* options (e.g. db-port) were not being passed to remotes.

    Exclude contents of pg_snapshots, pg_serial, pg_notify, and pg_dynshmem from backup since they are rebuilt on startup.

    Exclude pg_internal.init files from backup since they are rebuilt on startup.

    Open log file after async process is completely separated from the main process to prevent the main process from also logging to the file.

    Dynamically generate list of files for C library build.

    Break up LibC.xs into separate module files.

    Add passwordless SSH configuration.

    Rename master to primary in documentation to align with convention.

    Add full installation where required and remove doc containers that included parts of the installation.

    Improve C library smart build by ignoring changes outside of /lib/pgBackRest/Config.

    Fixed an issue that could cause compression to abort on growing files.

    Fixed an issue with keep-alives not being sent to the remote from the local process.

    Up to seven standbys can be configured for backup from standby.

    10 support.

    Allow content-length (in addition to chunked encoding) when reading XML data to improve compatibility with third-party S3 gateways.

    Increase HTTP timeout for S3.

    Add HTTP retries to harden against transient S3 network errors.

    Configuration definitions are now pulled from the C library when present.

    Fixed document generation to include section summaries on the Configuration page.

    Move contributor list to the end of release.xml for convenience.

    Change log test order to ignore unimportant log errors while shutting down .

    Drain stderr during test process execution as well as termination to prevent lockups if there is a lot of output.

    Update Docker build in Vagrantfile.

    Update containers to support C library builds in the documentation.

    Simplify smart logic for C Library and package builds.

    Fixed authentication issue in S3 retry.

    The archive_status directory is now recreated on restore to support 8.3 which does not recreate it automatically like more recent versions do.

    Fixed an issue that could cause the empty archive directory for an old version to be left behind after a stanza-upgrade.

    Modified the info command (both text and JSON output) to display the archive ID and minimum/maximum WAL currently present in the archive for the current and prior, if any, database cluster version.

    Added --backup-ssh-port and --db-ssh-port options to support non-default SSH ports.

    Retry when S3 returns an internal error (500).

    Add bIgnoreMissing parameter to Local->manifest().

    Fix description of --online based on the command context.

    Add creation of /etc/pgbackrest.conf to manual installation instructions.

    Move repository options into a separate section in command/command-line help.

    Reduce log verbosity when building documentation by only logging sections that contain an execute list directly or in a child section.

    Debian/Ubuntu documentation now builds on Ubuntu 16.

    Remove vestigial repository options from backup command.

    Fix log checking after shuts down to include FATAL messages and disallow immediate shutdowns which can throw FATAL errors in the log.

    Use Google DNS in test environment for consistency.

    Use new Travis Trusty image.

    Generate global fake cert in containers for testing.

    Consolidate stanza-create and stanza-upgrade tests into new stanza test.

    IMPORTANT NOTE: 8.3 and 8.4 installations utilizing tablespaces should upgrade immediately from any v1 release and run a full backup. A bug prevented tablespaces from being backed up on these versions only. &ge; 9.0 is not affected.

    Fixed an issue that prevented tablespaces from being backed up on &le; 8.4.

    Fixed missing flag in C library build that resulted in a mismatched binary on 32-bit systems.

    Add s3-repo-ca-path and s3-repo-ca-file options to accommodate systems where CAs are not automatically found by IO::Socket::SSL, i.e. RHEL7, or to load custom CAs.

    Harden protocol handshake to handle race conditions.

    Fixed misleading error message when a file was opened for write in a missing directory.

    Change log level of hardlink logging to detail.

    Cast size in S3 manifest to integer.

    Rename Archive modules to remove redundancy.

    Improve S3 error reporting.

    Minor optimizations to package loads and ordering for archive-get and archive-push commands.

    Remove exhaustive version list from Stable Releases TOC.

    Improve S3 server implementation in documentation.

    Update CentOS 6 documentation to build on 9.5.

    Remove mount from host cache-key because it can vary by system.

    Add documentation builds to CI.

    Fix timeouts in ExecuteTest to speed multi-process testing.

    Remove patch directory before Debian package builds.

    Combine hardlink and non/compressed in synthetic tests to reduce test time and improve coverage.

    Split full module into mock and real to allow better test combinations and save time in CI.

    Consolidate archive-push and archive-get tests into new archive test.

    Eliminate redundancy in real tests.

    Install sudo in base containers rather than on demand.

    More optimized container suite that greatly improves build time.

    Added static Debian packages for Devel::Cover to reduce build time.

    Add deprecated state for containers. Deprecated containers may only be used to build packages.

    Remove Debian 8 from CI because it does not provide additional coverage over Ubuntu 12.04, 14.04, 16.04.

    Add Debian 9 to test suite.

    Remove process-max option. Parallelism is now tested in a more targeted manner and the high level option is no longer needed.

    Balance database versions between VMs to minimize test duration.

    Automatically check that all supported versions are being tested on a single default VM.

    Add performance module and basic performance test for archive-push.

    Fixed the info command so the WAL archive min/max displayed is for the current database version.

    Fixed the backup command so the backup-standby option is reset (and the backup proceeds on the primary) if the standby is not configured and/or reachable.

    Fixed config warnings raised from a remote process causing errors in the master process.

    Amazon S3 repository support.

    Refactor storage layer to allow for new repository filesystems using drivers.

    Refactor IO layer to allow for new compression formats, checksum types, and other capabilities using filters.

    Move modules in Protocol directory in subdirectories.

    Move backup modules into Backup directory.

    Changed invalid max-archive-mb option in configuration reference to archive-queue-max.

    Fixed missing sudo in installation section.

    Fixed an undefined variable when a module had no uncoverable code exceptions.

    Fixed issue with --dry-run requiring --vm-out to work properly.

    Moved test and env modules to new directories to avoid namespace conflicts with common tests.

    Set --vm-max=2 for CI.

    Remove flapping protocol timeout test that will be replaced in the upcoming storage patch.

    Fixed an issue where read-only operations that used local worker processes (i.e. restore) were creating write locks that could interfere with parallel archive-push.

    Added the stanza-upgrade command to provide a mechanism for upgrading a stanza after upgrading to a new major version of .

    Added validation of pgbackrest.conf to display warnings if options are not valid or are not in the correct section.

    Simplify locking scheme. Now, only the master process will hold write locks (for archive-push and backup commands) and not all local and remote worker processes as before.

    Do not set timestamps of files in the backup directories to match timestamps in the cluster directory. This was originally done to enable backup resume, but that process is now implemented with checksums.

    Improved error message when the restore command detects the presence of postmaster.pid.

    Renumber return codes between 25 and 125 to avoid PostgreSQL interpreting some as fatal signal exceptions.

    Refactor Ini.pm to facilitate testing.

    The backup and restore commands no longer copy via temp files. In both cases the files are checksummed on resume so there's no danger of partial copies.

    Allow functions to accept optional parameters as a hash.

    Refactor File->list() and fileList() to accept optional parameters.

    Refactor backupLabel() and add unit tests.

    Silence some perl critic warnings.

    Update wording for release note sections.

    Ignore clock skew in container libc/package builds using make. It is common for containers to have clock skew so the build process takes care of this issue independently.

    Complete statement/branch coverage for Ini.pm.

    Improved functions used to test/munge manifest and info files.

    Coverage testing always enabled on Debian-based containers.

    Require description in every call to testResult().

    Make iWaitSeconds an optional parameter for testResult().

    Updated vagrant to new version and image.

    Fixed flapping archive stop tests.

    Added ability to test warning messages.

    Fixed an issue where newly initialized (but unused) pages would cause page checksum warnings.

    Fixed an issue where tables over 1GB would report page checksum warnings after the first segment.

    Fixed an issue where databases created with a non-default tablespace would raise bogus warnings about pg_filenode.map and pg_internal.init not being page aligned.

    Improved the code and tests for fileManifest() to prevent a possible race condition when files are removed by the database while the manifest is being built.

    Container executions now load the user's environment.

    Continuous integration using travis-ci.

    Automated builds of Debian packages for all supported distributions.

    Added --dev option to aggregate commonly used dev options.

    Added --retry option.

    Added --no-package option to skip package builds.

    C library and packages are built by default, added -smart option to rebuild only when file changes are detected.

    The --libc-only option has been changed to --build-only now that packages builds have been added.

    Improved formatting of testResult() output.

    Improved truncation when outputting errors logs in the ExecuteTest module.

    Fixed flapping archive-stop test with testResult() retries.

    Added final test of archive contents to archive-push test.

    Temporarily disable flapping keep-alive test.

    Fixed a regression introduced in v1.13 that could cause backups to fail if files were removed (e.g. tables dropped) while the manifest was being built.

    Refactor FileCommon::fileManifest() and FileCommon::fileStat to be more modular to allow complete branch/statement level coverage testing.

    Complete branch/statement level coverage testing for FileCommon::fileManifest() and FileCommon::fileStat functions and helper functions.

    Fixed an issue where an archive-push error would not be retried and would instead return errors to indefinitely (unless the .error file was manually deleted).

    Fixed a race condition in parallel archiving where creation of new paths generated an error when multiple processes attempted to do so at the same time.

    Improved performance of wal archive min/max provided by the info command.

    Updated async archiving documentation to more accurately describe how the new method works and how it differs from the old method.

    Documentation can now be built with reusable blocks to reduce duplication.

    Improved support for --require option and section depends now default to the previous section.

    Added ability to pass options to containers within the documentation.

    Add proper tag to slightly emphasize proper nouns.

    IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository. To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command. IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.

    Fixed const assignment giving compiler warning in C library.

    Fixed a few directory syncs that were missed for the --repo-sync option.

    Fixed an issue where a missing user/group on restore could cause an uninitialized value error in File->owner().

    Fixed an issue where protocol mismatch errors did not output the expected value.

    Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.

    Improved, multi-process implementation of asynchronous archiving.

    Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory.

    Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica.

    Added archive and backup WAL ranges to the info command.

    Added warning to update pg_tablespace.spclocation when remapping tablespaces in < 9.2.

    Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations.

    Log file banner is not output until the first log entry is written.

    Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.

    Remove Intel-specific optimization from C library build flags.

    Remove --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.

    Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.

    Return proper error code when unable to convert a relative path to an absolute path.

    Refactor File and BackupCommon modules to improve test coverage.

    Moved File->manifest() into the FileCommon.pm module.

    Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.

    Split the check command out of the Archive.pm module.

    Allow logging to be suppressed via logDisable() and logEnable().

    Allow for locks to be taken more than once in the same process without error.

    Lock directories can be created when more than one directory level is required.

    Clean up optionValid()/optionTest() logic in Lock.pm.

    Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.

    Represent .gz extension with a constant.

    Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.

    Refactor process IO and process master/minion code out from the common protocol code.

    Fixed alignment issues with multiline logging.

    Added documentation to the User Guide for the process-max option.

    Update LICENSE.txt for 2017.

    Fixed --no-online tests to suppress expected errors.

    Added integration for testing coverage with Devel::Cover.

    Added unit tests for low-level functions in the File and BackupCommon modules.

    C Library builds only run when C library has actually changed.

    Added more flexibility in initializing and cleaning up after modules and tests.

    testResult() suppresses logging and reports exceptions.

    testException() allows messages to be matched with regular expressions.

    Split test modules into separate files to make the code more maintainable. Tests are dynamically loaded by name rather than requiring an if-else block.

    Allow multiple --module, --test, and --run options to be used for test.pl.

    Added expect log expression to replace year subdirectories in backup.history.

    Refactor name/locations of common modules that setup test environments.

    IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.

    Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error.

    Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.

    Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not.

    Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database.

    Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster.

    Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.

    Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.

    Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully.

    For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.

    Abstracted code to determine which database cluster is the primary and which are standbys.

    Improved consistency and flexibility of the protocol layer by using JSON for all messages.

    File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.

    Improved IO->bufferRead to always return requested number of bytes until EOF.

    Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().

    Improved errors returned from child processes by removing redundant error level and code.

    Code cleanup in preparation for improved stanza-create command.

    Improved parameter/result logging in debug/trace functions.

    Fixed an issue that suppressed exceptions in PDF builds.

    Fixed regression in section links introduced in v1.10.

    Added Retention to QuickStart section.

    Allow a source to be included as a section so large documents can be broken up.

    Added section link support to Markdown output.

    Added list support to PDF output.

    Added include option to explicitly build sources (complements the exclude option though both cannot be used in the same invocation).

    Added keyword-add option to add keywords without overriding the default keyword.

    Added debug option to doc.pl to easily add the debug keyword to documentation builds.

    Added pre option to doc.pl to easily add the pre keyword to documentation builds.

    Builds in release.pl now remove all docker containers to get consistent IP address assignments.

    Improvements to markdown rendering.

    Remove code dependency on project variable, instead use title param.

    Removed erroneous --no-config option in help test module.

    Update control and WAL test files to 9.4 with matching system identifiers.

    Improved exception handling in file unit tests.

    Changed the --no-fork test option to --fork with negation to match all other boolean parameters.

    Various improvements to validation of backup and restore.

    Add more realistic data files to synthetic backup and restore tests.

    Fixed an issue where asynchronous archiving was transferring one file per execution instead of transferring files in batches. This regression was introduced in v1.09 and affected efficiency only, all WAL segments were correctly archived in asynchronous mode.

    Fixed an issue where a backup could error if no changes were made to a database between backups and only pg_control changed.

    Fixed an issue where tablespace paths with the same prefix would cause an invalid link error.

    Added the stanza-create command to formalize creation of stanzas in the repository.

    Removed extraneous use lib directives from Perl modules.

    Fixed missing variable replacements.

    Removed hard-coded host names from configuration file paths.

    Allow command-line length to be configured using cmd-line-len param.

    Added compact param to allow CSS to be embedded in HTML file.

    Added pretty param to produce HTML with proper indenting.

    Only generate HTML menu when required and don't require index page.

    Assign numbers to sections by default.

    VM mount points are now optional.

    Fixed the check command to prevent an error message from being logged if the backup directory does not exist.

    Fixed error message to properly display the archive command when an invalid archive command is detected.

    Fixed an issue where the async archiver would not be started if archive-push did not have enough space to queue a new WAL segment. This meant that the queue would never be cleared without manual intervention (such as calling archive-push directly). now receives errors when there is not enough space to store new WAL segments but the async process will still be started so that space is eventually freed.

    Fixed a remote timeout that occurred when a local process generated checksums (during resume or restore) but did not copy files, allowing the remote to go idle.

    Non-exclusive backups will automatically be used on 9.6.

    Added the cmd-ssh option to allow the ssh client to be specified.

    Added the log-level-stderr option to control whether console log messages are sent to stderr or stdout. By default this is set to warn which represents a change in behavior from previous versions, even though it may be more intuitive. Setting log-level-stderr=off will preserve the old behavior.

    Set application_name to "pgBackRest [command]" for database connections.

    Check that archive_mode is enabled when archive-check option enabled.

    Clarified error message when unable to acquire advisory lock to make it clear that it is not a backup lock.

    version number included in command start INFO log output.

    Process ID logged for local process start/stop INFO log output.

    Added archive-timeout option documentation to the user guide.

    Added dev option to doc.pl to easily add the dev keyword to documentation builds.

    Update CentOS/Debian package definitions.

    Fixed missing expect output for help module.

    Fixed broken vm-max option in test.pl.

    Regression tests can now be run as any properly-configured user, not just vagrant.

    Minimize TeXLive package list to save time during VM builds.

    Fixed an issue where local processes were not disconnecting when complete and could later timeout.

    Fixed an issue where the protocol layer could timeout while waiting for WAL segments to arrive in the archive.

    Cache file log output until the file is created to create a more complete log.

    Show Process ID in output instead of filtering it out with the timestamp.

    Suppress dpkg-reconfigure: unable to re-open stdin: No file or directory warning in Vagrant VM build.

    Show Process ID in expect logs instead of filtering it out with the timestamp.

    Fixed an issue where tablespaces were copied from the primary during standby backup.

    Fixed the check command so backup info is checked remotely and not just locally.

    Fixed an issue where retention-archive was not automatically being set when retention-archive-type=diff, resulting in a less aggressive than intended expiration of archive.

    Converted Perl threads to processes to improve compatibility and performance.

    Exclude contents of $PGDATA/pg_replslot directory so that replication slots on the primary do not become part of the backup.

    The archive-start and archive-stop settings are now filled in backup.manifest even when archive-check=n.

    Additional warnings when archive retention settings may not have the intended effect or would allow indefinite retention.

    Experimental support for non-exclusive backups in 9.6 rc1. Changes to the control/catalog/WAL versions in subsequent release candidates may break compatibility but will be updated with each release to keep pace.

    Refactor of protocol minions in preparation for the new local minion.

    Remove obsolete thread index variable from File() module.

    Changed temporary file names to consistently use the .pgbackrest.tmp extension even if the destination file is compressed or has an appended checksum.

    Improve ASSERT error handling, safely check eval blocks, and convert $@ to $EVAL_ERROR.

    Fixed minor documentation reproducibility issues related to binary paths.

    Documentation for archive retention.

    Suppress TOC for unsupported versions of .

    New vagrant base box and make uid/gid selection for containers dynamic.

    Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely.

    Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised.

    Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased.

    Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the primary.

    More flexible configuration for databases. Master and standby can both be configured on the backup server and will automatically determine which is the primary. This means no configuration changes for backup are required after failing over from a primary to standby when a separate backup server is used.

    Exclude directories during backup that are cleaned, recreated, or zeroed by at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.

    Experimental support for non-exclusive backups in 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but will be updated with each release to keep pace.

    Improve error message for links that reference links in manifest build.

    Added hints to error message when relative paths are detected in archive-push or archive-get.

    Improve backup log messages to indicate which host the files are being copied from.

    Simplify protocol creation and identifying which host is local/remote.

    Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.

    Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.

    Improve host tag rendering.

    Refactor db version constants into a separate module.

    Update synthetic backup tests to 9.4.

    Fixed an issue where tablespace paths that had $PGDATA as a substring would be identified as a subdirectories of $PGDATA even when they were not. Also hardened relative path checking a bit.

    Added documentation for scheduling backups with cron.

    Moved the backlog from the website to the GitHub repository wiki.

    Improved rendering of spaces in code blocks.

    Fixed an issue an where an extraneous remote was created causing threaded backup/restore to possibly timeout and/or throw a lock conflict.

    Fixed an issue where db-path was not required for the check command so an assert was raised when it was missing rather than a polite error message.

    Fixed check command to throw an error when database version/id does not match that of the archive.

    Fixed an issue where a remote could try to start its own remote when the backup-host option was not present in pgbackrest.conf on the database server.

    Fixed an issue where the contents of pg_xlog were being backed up if the directory was symlinked. This didn't cause any issues during restore but was a waste of space.

    Fixed an invalid log() call in lock routines.

    Experimental support for non-exclusive backups in 9.6 beta3. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but will be updated with each release to keep pace.

    Suppress banners on SSH protocol connections.

    Improved remote error messages to identify the host where the error was raised.

    All remote types now take locks. The exceptions date to when the test harness and were running in the same VM and no longer apply.

    Enhancements to the protocol layer for improved reliability and error handling.

    Exceptions are now passed back from threads as messages when possible rather than raised directly.

    Temp files created during backup are now placed in the same directory as the target file.

    Output lock file name when a lock cannot be acquired to aid in debugging.

    Reduce calls to protocolGet() in backup/restore.

    Added clarification on why the default for the backrest-user option is backrest.

    Updated information about package availability on supported platforms.

    Added release.pl to make releases reproducible. For now this only includes building and deploying documentation.

    HTML footer dates are statically created in English in order to be reproducible.

    Fixed a version checking issue in test.pl.

    Fixed an issue where multi-threaded tests were not being run when requested.

    Reduce the frequency that certain tests are run to save time in regression.

    Disable control master for older OS versions where it is less stable.

    Fixed an issue where keep-alives could be starved out by lots of small files during multi-threaded backup. They were also completely absent from single/multi-threaded backup resume and restore checksumming.

    Fixed an issue where the expire command would refuse to run when explicitly called from the command line if the db-host option was set. This was not an issue when expire was run automatically after a backup

    Fixed an issue where validation was being running on archive_command even when the archive-check option was disabled.

    Added check command to validate that is configured correctly for archiving and backups.

    Added the protocol-timeout option. Previously protocol-timeout was set as db-timeout + 30 seconds.

    Failure to shutdown remotes at the end of the backup no longer throws an exception. Instead a warning is generated that recommends a higher protocol-timeout.

    Experimental support for non-exclusive backups in 9.6 beta2. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but will be updated with each release to keep pace.

    Improved handling of users/groups captured during backup that do not exist on the restore host. Also explicitly handle the case where user/group is not mapped to a name.

    Option handling is now far more strict. Previously it was possible for a command to use an option that was not explicitly assigned to it. This was especially true for the backup-host and db-host options which are used to determine locality.

    The pg_xlogfile_name() function is no longer used to construct WAL filenames from LSNs. While this function is convenient it is not available on a standby. Instead, the archive is searched for the LSN in order to find the timeline. If due to some misadventure the LSN appears on multiple timelines then an error will be thrown, whereas before this condition would have passed unnoticed.

    Changed version variable to a constant. It had originally been designed to play nice with a specific packaging tool but that tool was never used.

    Allow a static date to be used for documentation to generate reproducible builds.

    Added documentation for asynchronous archiving to the user guide.

    Recommended install location for modules is now /usr/share/perl5 since /usr/lib/perl5 has been removed from the search path in newer versions of Perl.

    Added instructions for removing prior versions of .

    Fixed DTD search path that did not work properly when --doc-path was used.

    Fixed -specific xml that was loaded for non- projects.

    Fixed section names being repeated in the info output when multiple --require options depended on the same sections.

    Fixed config sections being blank in the output when not loaded from cache.

    Allow hidden options to be added to a command. This allows certain commands (like apt-get) to be forced during the build without making that a part of the documentation.

    Allow command summaries to be inserted anywhere in the documentation to avoid duplication.

    Update TeX Live to 2016 version.

    New, consolidated implementation for link rendering.

    version is now a variable to allow multi-version documentation.

    Obsolete containers are removed by the --vm-force option.

    Major refactor of the test suite to make it more modular and object-oriented. Multiple Docker containers can now be created for a single test to simulate more realistic environments. Tests paths have been renamed for clarity.

    Greatly reduced the quantity of Docker containers built by default. Containers are only built for versions specified in db-minimal and those required to build documentation. Additional containers can be built with --db-version=all or by specifying a version, e.g. --db-version=9.4.

    Fix usage of sprintf() due to new constraints in Perl 5.22. Parameters not referenced in the format string are no longer allowed.

    Log directory create and file open now using FileCommon functions which produce more detailed error messages on failure.

    Fixed syntax that was not compatible with Perl 5.2X.

    Fixed absolute paths that were used for the PDF logo.

    Release notes are now broken into sections so that bugs, features, and refactors are clearly delineated. An Additional Notes section has been added for changes to documentation and the test suite that do not affect the core code.

    Added man page generation.

    The change log was the last piece of documentation to be rendered in Markdown only. Wrote a converter so the document can be output by the standard renderers. The change log will now be located on the website and has been renamed to Releases.

    Added an execution cache so that documentation can be generated without setting up the full container environment. This is useful for packaging, keeps the documentation consistent for a release, and speeds up generation when no changes are made in the execution list.

    Remove function constants and pass strings directly to logDebugParam(). The function names were only used once so creating constants for them was wasteful.

    Lists can now be used outside of p and text tags for more flexible document structuring.

    Replaced overzealous perl -cW check which failed on Perl 5.22 with perl -cw.

    Added Ubuntu 16.04 (Xenial) and Debian 8 (Jessie) to the regression suite.

    Upgraded doc/test VM to Ubuntu 16.04. This will help catch Perl errors in the doc code since it is not run across multiple distributions like the core and test code. It is also to be hoped that a newer kernel will make Docker more stable.

    Test release version against the executable using change-log.xml instead of CHANGELOG.md.

    Enhanced text output of info command to include timestamps, sizes, and the reference list for all backups.

    Allow selective restore of databases from a cluster backup. This feature can result in major space and time savings when only specific databases are restored. Unrestored databases will not be accessible but must be manually dropped before they will be removed from the shared catalogue.

    Experimental support for non-exclusive backups in 9.6 beta1. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but will be updated with each release to keep pace.

    IMPORTANT NOTE: This flag day release breaks compatibility with older versions of . The manifest format, on-disk structure, configuration scheme, and the exe/path names have all changed. You must create a new repository to hold backups for this version of and keep your older repository for a time in case you need to do a restore. Restores from the prior repository will require the prior version of but because of name changes it is possible to have 1.00 and a prior version of installed at the same time. See the notes below for more detailed information on what has changed.

    Implemented a new configuration scheme which should be far simpler to use. See the User Guide and Configuration Reference for details but for a simple configuration all options can now be placed in the stanza section. Options that are shared between stanzas can be placed in the [global] section. More complex configurations can still make use of command sections though this should be a rare use case.

    The repo-path option now always refers to the repository where backups and archive are stored, whether local or remote, so the repo-remote-path option has been removed. The new spool-path option can be used to define a location for queueing WAL segments when archiving asynchronously. A local repository is no longer required.

    The default configuration filename is now pgbackrest.conf instead of pg_backrest.conf. This was done for consistency with other naming changes but also to prevent old config files from being loaded accidentally when migrating to 1.00.

    The default repository name was changed from /var/lib/backup to /var/lib/pgbackrest.

    Lock files are now stored in /tmp/pgbackrest by default. These days /run/pgbackrest is the preferred location but that would require init scripts which are not part of this release. The lock-path option can be used to configure the lock directory.

    Log files are now stored in /var/log/pgbackrest by default and no longer have the date appended so they can be managed with logrotate. The log-path option can be used to configure the log directory.

    Executable filename changed from pg_backrest to pgbackrest.

    All files and directories linked from PGDATA are now included in the backup. By default links will be restored directly into PGDATA as files or directories. The {[dash]}-link-all option can be used to restore all links to their original locations. The {[dash]}-link-map option can be used to remap a link to a new location.

    Removed {[dash]}-tablespace option and replaced with {[dash]}-tablespace-map-all option which should more clearly indicate its function.

    Added detail log level which will output more information than info without being as verbose as debug.

    Fixed an issue where the master process was passing {[dash]}-repo-remote-path instead of {[dash]}-repo-path to the remote and causing the lock files to be created in the default repository directory (/var/lib/backup), generally ending in failure. This was only an issue when {[dash]}-repo-remote-path was defined on the command line rather than in pg_backrest.conf.

    IMPORTANT BUG FIX FOR TABLESPACES: A change to the repository format was accidentally introduced in 0.90 which means the on-disk backup was no longer a valid cluster when the backup contained tablespaces. This only affected users who directly copied the backups to restore clusters rather than using the restore command. However, the fix breaks compatibility with older backups that contain tablespaces no matter how they are being restored ( will throw errors and refuse to restore). New full backups should be taken immediately after installing version 0.91 for any clusters that contain tablespaces. If older backups need to be restored then use a version of that matches the backup version.

    Fixed repository incompatibility introduced in 0.90.

    Copy global/pg_control last during backups.

    Write .info and .manifest files to temp before moving them to their final locations and fsync'ing.

    Rename {[dash]}-no-start-stop option to {[dash]}-no-online.

    Static source analysis using Perl-Critic, currently passes on gentle.

    Fixed an issue where specifying {[dash]}-no-archive-check would throw a configuration error.

    Fixed an issue where a temp WAL file left over after a well-timed system crash could cause the next archive-push to fail.

    The retention-archive option can now be be safely set to less than backup retention (retention-full or retention-diff) without also specifying archive-copy=n. The WAL required to make the backups that fall outside of archive retention consistent will be preserved in the archive. However, in this case PITR will not be possible for the backups that fall outside of archive retention.

    When backing up and restoring tablespaces only operates on the subdirectory created for the version of being run against. Since multiple versions can live in a tablespace (especially during a binary upgrade) this prevents too many files from being copied during a backup and other versions possibly being wiped out during a restore. This only applies to >= 9.0 &mdash; prior versions of could not share a tablespace directory.

    Generate an error when archive-check=y but archive_command does not execute pg_backrest.

    Improved error message when repo-path or repo-remote-path does not exist.

    Added checks for {[dash]}-delta and {[dash]}-force restore options to ensure that the destination is a valid $PGDATA directory. will check for the presence of PG_VERSION or backup.manifest (left over from an aborted restore). If neither file is found then {[dash]}-delta and {[dash]}-force will be disabled but the restore will proceed unless there are files in the $PGDATA directory (or any tablespace directories) in which case the operation will be aborted.

    When restore {[dash]}-set=latest (the default) the actual backup restored will be output to the log.

    Support for 9.5 partial WAL segments and recovery_target_action setting. The archive_mode = 'always' setting is not yet supported.

    Support for recovery_target = 'immediate' recovery setting introduced in 9.4.

    The following tablespace checks have been added: paths or files in pg_tblspc, relative links in pg_tblspc, tablespaces in $PGDATA. All three will generate errors.

    Fixed an issue where document generation failed because some OSs are not tolerant of having multiple installed versions of . A separate VM is now created for each version. Also added a sleep after database starts during document generation to ensure the database is running before the next command runs.

    Fixed an issue where longer-running backups/restores would timeout when remote and threaded. Keepalives are now used to make sure the remote for the main process does not timeout while the thread remotes do all the work. The error message for timeouts was also improved to make debugging easier.

    Allow restores to be performed on a read-only repository by using {[dash]}-no-lock and {[dash]}-log-level-file=off. The {[dash]}-no-lock option can only be used with restores.

    Minor styling changes, clarifications and rewording in the user guide.

    The dev branch has been renamed to master and for the time being the master branch has renamed to release, though it will probably be removed at some point {[dash]}- thus ends the gitflow experiment for . It is recommended that any forks get re-forked and clones get re-cloned.

    Fixed an issue where the start/stop commands required the {[dash]}-config option.

    Fixed an issue where log files were being overwritten instead of appended.

    Fixed an issue where backup-user was not optional.

    Symlinks are no longer created in backup directories in the repository. These symlinks could point virtually anywhere and potentially be dangerous. Symlinks are still recreated during a restore.

    Added better messaging for backup expiration. Full and differential backup expirations are logged on a single line along with a list of all dependent backups expired.

    Archive retention is automatically set to full backup retention if not explicitly configured.

    Added documentation in the user guide for delta restores, expiration, dedicated backup hosts, starting and stopping , and replication.

    The backup_label.old and recovery.done files are now excluded from backups.

    Added a new user guide that covers basics and some advanced topics including PITR. Much more to come, but it's a start.

    The website, markdown, and command-line help are now all generated from the same XML source.

    Fixed an issue where an error could be returned after a backup or restore completely successfully.

    Fixed an issue where a resume would fail if temp files were left in the root backup directory when the backup failed. This scenario was likely if the backup process got terminated during the copy phase.

    Added stop and start commands to prevent processes from running on a system where is shutdown or the system needs to be quiesced for some other reason.

    Experimental support for 9.5 beta1. This may break when the control version or WAL magic changes in future versions but will be updated in each release to keep pace. All regression tests pass except for {[dash]}-target-resume tests (this functionality has changed in 9.5) and there is no testing yet for .partial WAL segments.

    Removed dependency on IO::String module.

    Fixed an issue where resumed compressed backups were not preserving existing files.

    Fixed an issue where resume and incr/diff would not ensure that the prior backup had the same compression and hardlink settings.

    Fixed an issue where a cold backup using {[dash]}-no-start-stop could be started on a running cluster without {[dash]}-force specified.

    Fixed an issue where a thread could be started even when none were requested.

    Fixed an issue where the version number was not being updated in backup.info and archive.info after an upgrade/downgrade.

    Fixed an issue where the info command was throwing an exception when the repository contained no stanzas.

    Fixed an issue where the pg_stop_backup() NOTICEs were being output to stderr.

    Experimental support for 9.5 alpha2. This may break when the control version or WAL magic changes in future versions but will be updated in each release to keep pace. All regression tests pass except for {[dash]}-target-resume tests (this functionality has changed in 9.5) and there is no testing yet for .partial WAL segments.

    Renamed recovery-setting option and section to recovery-option to be more consistent with naming conventions.

    Added dynamic module loading to speed up commands, especially asynchronous archiving.

    Code cleanup and refactoring to standardize on patterns that have evolved over time.

    Command-line help is now extracted from the same XML source that is used for the other documentation and includes much more detail.

    Expiration tests are now synthetic rather than based on actual backups. This will allow development of more advanced expiration features.

    Fixed an issue that caused the formatted timestamp for both the oldest and newest backups to be reported as the current time by the info command. Only text output was affected {[dash]}- json output reported the correct epoch values.

    Fixed protocol issue that was preventing ssh errors (especially on connection) from being logged.

    The repository is now created and updated with consistent directory and file modes. By default umask is set to 0000 but this can be disabled with the neutral-umask setting.

    Added the stop-auto option to allow failed backups to automatically be stopped when a new backup starts.

    Added the db-timeout option to limit the amount of time will wait for pg_start_backup() and pg_stop_backup() to return.

    Remove pg_control file at the beginning of the restore and copy it back at the very end. This prevents the possibility that a partial restore can be started by .

    Added checks to be sure the db-path setting is consistent with db-port by comparing the data_directory as reported by the cluster against the db-path setting and the version as reported by the cluster against the value read from pg_control. The db-socket-path setting is checked to be sure it is an absolute path.

    Experimental support for 9.5 alpha1. This may break when the control version or WAL magic changes in future versions but will be updated in each release to keep pace. All regression tests pass except for {[dash]}-target-resume tests (this functionality has changed in 9.5) and there is no testing yet for .partial WAL segments.

    Now using Perl DBI and DBD::Pg for connections to rather than psql. The cmd-psql and cmd-psql-option settings have been removed and replaced with db-port and db-socket-path. Follow the instructions in the Installation Guide to install DBD::Pg on your operating system.

    Major refactoring of the protocol layer to support future development.

    Split most of README.md out into USERGUIDE.md and CHANGELOG.md because it was becoming unwieldy. Changed most references to database in the user guide to database cluster for clarity.

    Changed most references to database in the user guide to database cluster for clarity.

    Added vagrant test configurations for Ubuntu 14.04 and CentOS 7.

    Removed dependency on CPAN packages for multi-threaded operation. While it might not be a bad idea to update the threads and Thread::Queue packages, it is no longer necessary.

    Modified wait backoff to use a Fibonacci rather than geometric sequence. This will make wait time grow less aggressively while still giving reasonable values.

    Added vagrant test configurations for Ubuntu 12.04 and CentOS 6.

    More options for regression tests and improved code to run in a variety of environments.

    Added file and directory syncs to the File object for additional safety during backup/restore and archiving.

    Added support for Perl 5.10.1 and OpenSSH 5.3 which are default for CentOS/RHEL 6.

    Improved error message when backup is run without archive_command set and without {[dash]}-no-archive-check specified.

    Removed pg_backrest_remote and added the functionality to pg_backrest as the remote command.

    Moved version number out of the VERSION file to Version.pm to better support packaging.

    Replaced IPC::System::Simple and Net::OpenSSH with IPC::Open3 to eliminate CPAN dependency for multiple operating systems.

    IMPORTANT NOTE: This flag day release breaks compatibility with older versions of . The manifest format, on-disk structure, and the binary names have all changed. You must create a new repository to hold backups for this version of and keep your older repository for a time in case you need to do a restore. The pg_backrest.conf file has not changed but you'll need to change any references to pg_backrest.pl in cron (or elsewhere) to pg_backrest (without the .pl extension).

    Added the info command.

    Logging now uses unbuffered output. This should make log files that are being written by multiple threads less chaotic.

    Experimental support for 9.5. This may break when the control version or WAL magic changes but will be updated in each release.

    More efficient file ordering for backup. Files are copied in descending size order so a single thread does not end up copying a large file at the end. This had already been implemented for restore.

    Fixed an issue where archive-copy would fail on an incr/diff backup when hardlink=n. In this case the pg_xlog path does not already exist and must be created.

    Fixed an issue in async archiving where archive-push was not properly returning 0 when archive-max-mb was reached and moved the async check after transfer to avoid having to remove the stop file twice. Also added unit tests for this case and improved error messages to make it clearer to the user what went wrong.

    Fixed a locking issue that could allow multiple operations of the same type against a single stanza. This appeared to be benign in terms of data integrity but caused spurious errors while archiving and could lead to errors in backup/restore.

    Allow duplicate WAL segments to be archived when the checksum matches. This is necessary for some recovery scenarios.

    Allow comments/disabling in pg_backrest.conf using the # character. Only # characters in the forst character of the line are honored.

    Better logging before pg_start_backup() to make it clear when the backup is waiting on a checkpoint.

    Various command behavior and logging fixes.

    Replaced JSON module with JSON::PP which ships with core Perl.

    Various help fixes.

    Fixed an issue where an absolute path was not written into recovery.conf when the restore was run with a relative path.

    Better resume support. Resumed files are checked to be sure they have not been modified and the manifest is saved more often to preserve checksums as the backup progresses. More unit tests to verify each resume case.

    Resume is now optional. Use the resume setting or {[dash]}-no-resume from the command line to disable.

    More info messages during restore. Previously, most of the restore messages were debug level so not a lot was output in the log.

    Added tablespace setting to allow tablespaces to be restored into the pg_tblspc path. This produces compact restores that are convenient for development, staging, etc. Currently these restores cannot be backed up as expects only links in the pg_tblspc path.

    Fixed a buffering error that could occur on large, highly-compressible files when copying to an uncompressed remote destination. The error was detected in the decompression code and resulted in a failed backup rather than corruption so it should not affect successful backups made with previous versions.

    Pushing duplicate WAL now generates an error. This worked before only if checksums were disabled.

    Database System IDs are used to make sure that all WAL in an archive matches up. This should help prevent misconfigurations that send WAL from multiple clusters to the same archive.

    Improved threading model by starting threads early and terminating them late.

    Regression tests working back to 8.3.

    Fixed broken checksums and now they work with normal and resumed backups. Finally realized that checksums and checksum deltas should be functionally separated and this simplified a number of things. Issue #28 has been created for checksum deltas.

    Fixed an issue where a backup could be resumed from an aborted backup that didn't have the same type and prior backup.

    Added restore functionality.

    All options can now be set on the command-line making pg_backrest.conf optional.

    De/compression is now performed without threads and checksum/size is calculated in stream. That means file checksums are no longer optional.

    Added option {[dash]}-no-start-stop to allow backups when Postgres is shut down. If postmaster.pid is present then {[dash]}-force is required to make the backup run (though if Postgres is running an inconsistent backup will likely be created). This option was added primarily for the purpose of unit testing, but there may be applications in the real world as well.

    Checksum for backup.manifest to detect a corrupted/modified manifest.

    Link latest always points to the last backup. This has been added for convenience and to make restores simpler.

    Removed dependency on Moose. It wasn't being used extensively and makes for longer startup times.

    More comprehensive unit tests in all areas.

    Complete rewrite of BackRest::File module to use a custom protocol for remote operations and Perl native GZIP and SHA operations. Compression is performed in threads rather than forked processes.

    Removed dependency on Storable and replaced with a custom ini file implementation.

    Numerous other changes that can only be identified with a diff.

    Added much needed documentation

    Fairly comprehensive unit tests for all the basic operations. More work to be done here for sure, but then there is always more work to be done on unit tests.

    Found and squashed a nasty bug where file_copy() was defaulted to ignore errors. There was also an issue in file_exists() that was causing the test to fail when the file actually did exist. Together they could have resulted in a corrupt backup with no errors, though it is very unlikely.

    Worked on improving error handling in the File object. This is not complete, but works well enough to find a few errors that have been causing us problems (notably, find is occasionally failing building the archive async manifest when system is under load).

    The archive-get command now returns a 1 when the archive file is missing to differentiate from hard errors (ssh connection failure, file copy error, etc.) This lets know that that the archive stream has terminated normally. However, this does not take into account possible holes in the archive stream.

    If an archive directory which should be empty could not be deleted backrest was throwing an error. There's a good fix for that coming, but for the time being it has been changed to a warning so processing can continue. This was impacting backups as sometimes the final archive file would not get pushed if the first archive file had been in a different directory (plus some bad luck).

    Added RequestTTY=yes to ssh sessions. Hoping this will prevent random lockups.

    Added archive-get functionality to aid in restores.

    Added option to force a checkpoint when starting the backup, start-fast=y.

    Removed master_stderr_discard option on database SSH connections. There have been occasional lockups and they could be related to issues originally seen in the file code.

    Changed lock file conflicts on backup and expire commands to ERROR. They were set to DEBUG due to a copy-and-paste from the archive locks.

    No restore functionality, but the backup directories are consistent data directories. You'll need to either uncompress the files or turn off compression in the backup. Uncompressed backups on a ZFS (or similar) filesystem are a good option because backups can be restored locally via a snapshot to create logical backups or do spot data recovery.

    Archiving is single-threaded. This has not posed an issue on our multi-terabyte databases with heavy write volume. Recommend a large WAL volume or to use the async option with a large volume nearby.

    Backups are multi-threaded, but the Net::OpenSSH library does not appear to be 100% thread-safe so it will very occasionally lock up on a thread. There is an overall process timeout that resolves this issue by killing the process. Yes, very ugly.

    Checksums are lost on any resumed backup. Only the final backup will record checksum on multiple resumes. Checksums from previous backups are correctly recorded and a full backup will reset everything.

    The backup.manifest is being written as Storable because Config::IniFile does not seem to handle large files well. Would definitely like to save these as human-readable text.

    Absolutely no documentation (outside the code). Well, excepting these release notes.

    David Steele dwsteele Adam Brusselback Tostino Adam K. Sumner Flamacue Adrian Vondendriesch disco-stu Aleksandr Rogozin arogozin Ale&scaron; Zelen&yacute; aleszeleny Andres Freund anarazel Andrew Schwartz trinchan blogh blogh Brad Nicholson bradnicholson Brian Faherty scrummyin Bruce Burdick baburdick brunre01 brunre01 Bruno Friedmann tigerfoot Camilo Aguilar c4milo Chiranjeevi Ravilla Chris Barber gamerscomplete Chris Fort the1forte Christian Lange chrlange Christoph Berg ChristophBerg Christophe Courtois Krysztophe Christophe Pettus Xof Clinton Adams clad CluelessTechnologist CluelessTechnologist Craig A. James cjames53 Cynthia Shang cmwshang Damiano Albani dalbani Dan Farrell farrellit Daniel Westermann danielwestermann David Youatt youattd Devrim G&uuml;nd&uuml;z devrimgunduz Dmitry Didovicher anarazel donicrosby donicrosby Douglas J Hunley hunleyd ejberdecia ejberdecia Eric Radman eradman Eric Veldhuyzen EricVeldhuyzen Evan Benoit evanbenoit Vidhya Gurumoorthi fpa-postgres Greg Smith gregscds guruguruguru guruguruguru hatifnatt hatifnatt Hans-J&uuml;rgen Sch&ouml;nig Heath Lord crunchyheath Ibrahim Edib Kokdemir Edib James Badger openfirmware James Chanco Jr jameschancojr James Sewell jamessewell Jan Wieck wieck Janice Parkinson jpabt Janis Puris mashuma Jason O'Donnell Dwaligon Javier Wilson javierwilson Jeff McCormick jmccormick2001 Jens Wilke jwpit Jesper St John Underhunden Joe Ayers John Harvey crunchyjohn Julian Zhang julianzhang98 jungle-boogie jungle-boogie Keith Fiske keithf4 Christian ROUX kikijolicoeur Kacey Holston kaceymiri Kyle Nevins kyle-nevins L&aelig;titia LaetitiaLoxo Laurenz Albe laurenz Leo Khomenko lkhomenk Leonardo GG Avellar L30Bola Luca Ferrari fluca1978 Lukas Ertl lukasertl Magnus Hagander mhagander Marc Cousin marco44 Markus Nullmeier mnullmei Matt Kunkel mtkunkel mibiio mibiio Michael Paquier michaelpq Michael Renner terrorobe Michael Vitale MichaelDBA Mihail Shvein M1hacka Mike Palmiotto mpalmi Milosz Suchy Yuxael Mohamad El-Rifai melrifa1 Navid Golpayegani golpa Ned T. Crigler crigler Nick Floersch seinick Nikhilchandra Kulkarni nikhilchandra-kulkarni Nj Baliyan nj3110 Patrick McLaughlin hitech73 Pavel Suderevsky psuderevsky Pritam Barhate pritammobisoft Rachid Broum rachid-casa Rakshitha-BR Rakshitha-BR Ronan Dunklau rdunklau Ryan Lambert rustprooflabs Sarah Conway xenophenes Sascha Biberhofer sbiberhofer Scott Frazer sfrazer sean0101n sean0101n Lardi&egrave;re S&eacute;bastien slardiere Stefan Fercot pgstef St&eacute;phane Schildknecht saspg Stephen Frost sfrost Tim Garton ralfthewise Todd Vernick gintoddic Tomasz Kontusz ktosiek Thomas Flatley seadba ucando ucando Urs Kramer UrsKramer uspen uspen Victor Gdalevich ntrvic Viorel Tabara Vitaliy Kukharik vitabaks vthriller vthriller William Cox mydimension Yogesh Sharma sharmay yummyliu yummyliu
    pgbackrest-release-2.24/doc/xml/test.xml000066400000000000000000000055221362531507100202610ustar00rootroot00000000000000 {[project]} testing configuration requirements, setup, and options.
    Introduction

    uses Docker to run tests and generate documentation. Docker's light-weight virtualization provides the a good balance between proper OS emulation and performance (especially startup)

    A `Vagrantfile` is provided that contains the complete configuration required to run tests and build documentation. If Vagrant is not suitable then the `Vagrantfile` still contains the configuration steps required to build a test system.

    this is not required for normal operation of .
    Testing

    The easiest way to start testing is with the included `Vagrantfile`.

    cd test vagrant up vagrant ssh

    The vagrant up command may take some time as a number of Docker containers must also be built. The vagrant ssh command automatically logs onto the VM.

    /backrest/test/test.pl /backrest/test/test.pl --vm=co6 /backrest/test/test.pl --vm=co6 --module=backup /backrest/test/test.pl --vm=co6 --module=backup --test=full /backrest/test/test.pl --vm=co6 --module=backup --test=full --run=1 /backrest/test/test.pl --vm=co6 --module=backup --test=full --process-max=4 process-max is only applicable to the synthetic and full tests in the backup module. /backrest/test/test.pl --vm=co6 --module=backup --test=full --process-max=4 --pg-version=9.4 pg-version is only applicable to the full test in the backup module. /backrest/test/test.pl --dry-run
    pgbackrest-release-2.24/doc/xml/user-guide-index.xml000066400000000000000000000013331362531507100224540ustar00rootroot00000000000000 List of available {[project]} user guides.
    Available User Guides {[os-debian-title]} / PostgreSQL {[os-debian-pg-version]} {[os-centos7-title]} / PostgreSQL {[os-centos7-pg-version]} {[os-centos6-title]} / PostgreSQL {[os-centos6-pg-version]}
    pgbackrest-release-2.24/doc/xml/user-guide.xml000066400000000000000000005613351362531507100213640ustar00rootroot00000000000000 The {[project]} User Guide demonstrates how to quickly and easily setup {[project]} for your {[postgres]} database. Step-by-step instructions lead the user through all the important features of the fastest, most reliable {[postgres]} backup and restore solution. debian centos6 centos7 Debian & Ubuntu RHEL & CentOS 6 RHEL & CentOS 7 10 9.5 9.6 none debian y '{[os-type]}' eq '{[os-debian]}' '{[os-type]}' eq '{[os-centos6]}' '{[os-type]}' eq '{[os-centos7]}' ({[os-type-is-centos6]} || {[os-type-is-centos7]}) ubuntu:16.04 centos:6 centos:7 {[os-debian-title]} {[os-centos6-title]} {[os-centos7-title]} Debian/Ubuntu RHEL/CentOS 6 RHEL/CentOS 7 /pgbackrest /usr/local/share/ca-certificates /etc/pki/ca-trust/source/anchors resource/fake-cert {[host-repo-path]}/doc/{[fake-cert-path-relative]} {[os-debian-pg-version]} {[os-centos6-pg-version]} {[os-centos7-pg-version]} my $version = '{[pg-version]}'; $version =~ s/\.//g; return $version; hot_standby replica 11 9.6 10 my $version = '{[pg-version-upgrade]}'; $version =~ s/\.//g; return $version; /usr/lib/postgresql/{[pg-version]}/bin /usr/pgsql-{[pg-version]}/bin /usr/lib/postgresql/{[pg-version-upgrade]}/bin /usr/pgsql-{[pg-version-upgrade]}/bin /var/lib/postgresql /var/lib/pgsql postgres /var/lib/pgbackrest aes-256-cbc zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO /usr/bin/pgbackrest pgbackrest {[br-user]} /home/{[br-user]} demo /etc/{[project-exe]} {[backrest-config-path]}/conf.d {[backrest-config-path]}/{[project-exe]}.conf /etc/{[project-exe]}.conf /var/lib/postgresql/[version]/[cluster] /var/lib/pgsql/[version]/data /var/lib/postgresql/{[pg-version]}/{[postgres-cluster-demo]} /var/lib/pgsql/{[pg-version]}/data /var/lib/postgresql/{[pg-version-upgrade]}/{[postgres-cluster-demo]} /var/lib/pgsql/{[pg-version-upgrade]}/data /var/spool/pgbackrest /etc/postgresql/{[pg-version]}/{[postgres-cluster-demo]}/postgresql.conf {[pg-path]}/postgresql.conf /etc/postgresql/{[pg-version-upgrade]}/{[postgres-cluster-demo]}/postgresql.conf {[pg-path-upgrade]}/postgresql.conf /etc/postgresql/{[pg-version]}/{[postgres-cluster-demo]}/pg_hba.conf {[pg-path]}/pg_hba.conf /etc/postgresql/{[pg-version-upgrade]}/{[postgres-cluster-demo]}/pg_hba.conf {[pg-path-upgrade]}/pg_hba.conf {[pg-home-path]}/.pgpass /var/log/postgresql/postgresql-{[pg-version]}-{[postgres-cluster-demo]}.log {[pg-path]}/pg_log/postgresql.log /var/lib/pgsql/{[pg-version]}/pgstartup.log {[pg-path]}/recovery.conf {[pg-path]}/postgresql.auto.conf pg_switch_xlog pg_switch_wal n y demo-bucket demo-repo us-east-1 s3.{[s3-region]}.amazonaws.com accessKey1 verySecretKey1 pgbackrest/doc:{[os-type]} -v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run use English; getpwuid($UID) eq 'root' ? 'vagrant' : getpwuid($UID) . '' {[host-repo-path]}:{[pgbackrest-repo-path]} pgbackrest/test s3 s3-server pg1 pg-primary {[host-user]} {[host-image]} {[host-mount]} build build {[host-user]} {[host-image]} {[host-mount]} pg2 pg-standby {[host-pg1-user]} {[host-image]} {[host-mount]} repo1 repository {[host-user]} {[host-image]} {[host-mount]} pgbackrest ls backup/demo --filter="(F|D|I)$" --sort=desc | head -1 Important Data sleep 2 pg_createcluster {[pg-version]} {[postgres-cluster-demo]} pg_createcluster {[pg-version-upgrade]} {[postgres-cluster-demo]} pg_ctlcluster {[pg-version]} {[postgres-cluster-demo]} start service postgresql-{[pg-version]} start systemctl start postgresql-{[pg-version]}.service pg_ctlcluster {[pg-version-upgrade]} {[postgres-cluster-demo]} start service postgresql-{[pg-version-upgrade]} start systemctl start postgresql-{[pg-version-upgrade]}.service pg_ctlcluster {[pg-version]} {[postgres-cluster-demo]} stop service postgresql-{[pg-version]} stop systemctl stop postgresql-{[pg-version]}.service pg_ctlcluster {[pg-version]} {[postgres-cluster-demo]} restart service postgresql-{[pg-version]} restart systemctl restart postgresql-{[pg-version]}.service pg_ctlcluster {[pg-version]} {[postgres-cluster-demo]} reload service postgresql-{[pg-version]} reload systemctl reload postgresql-{[pg-version]}.service pg_lsclusters service postgresql-{[pg-version]} status systemctl status postgresql-{[pg-version]}.service pg_lsclusters service postgresql-{[pg-version-upgrade]} status systemctl status postgresql-{[pg-version-upgrade]}.service mkdir -p -m 700 /root/.ssh && \ echo '-----BEGIN RSA PRIVATE KEY-----' > /root/.ssh/id_rsa && \ echo 'MIICXwIBAAKBgQDR0yJsZW5d5LcqteiOtv8d+FFeFFHDPI0VTcTOdMn1iDiIP1ou' >> /root/.ssh/id_rsa && \ echo 'X3Q2OyNjsBaDbsRJd+sp9IRq1LKX3zsBcgGZANwm0zduuNEPEU94ajS/uRoejIqY' >> /root/.ssh/id_rsa && \ echo '/XkKOpnEF6ZbQ2S7TaE4sWeGLvba7kUFs0QTOO+N+nV2dMbdqZf6C8lazwIDAQAB' >> /root/.ssh/id_rsa && \ echo 'AoGBAJXa6xzrnFVmwgK5BKzYuX/YF5TPgk2j80ch0ct50buQXH/Cb0/rUH5i4jWS' >> /root/.ssh/id_rsa && \ echo 'T6Hy/DFUehnuzpvV6O9auTOhDs3BhEKFRuRLn1nBwTtZny5Hh+cw7azUCEHFCJlz' >> /root/.ssh/id_rsa && \ echo 'makCrVbgawtno6oU/pFgQm1FcxD0f+Me5ruNcLHqUZsPQwkRAkEA+8pG+ckOlz6R' >> /root/.ssh/id_rsa && \ echo 'AJLIHedmfcrEY9T7sfdo83bzMOz8H5soUUP4aOTLJYCla1LO7JdDnXMGo0KxaHBP' >> /root/.ssh/id_rsa && \ echo 'l8j5zDmVewJBANVVPDJr1w37m0FBi37QgUOAijVfLXgyPMxYp2uc9ddjncif0063' >> /root/.ssh/id_rsa && \ echo '0Wc0FQefoPszf3CDrHv/RHvhHq97jXDwTb0CQQDgH83NygoS1r57pCw9chzpG/R0' >> /root/.ssh/id_rsa && \ echo 'aMEiSPhCvz757fj+qT3aGIal2AJ7/2c/gRZvwrWNETZ3XIZOUKqIkXzJLPjBAkEA' >> /root/.ssh/id_rsa && \ echo 'wnP799W2Y8d4/+VX2pMBkF7lG7sSviHEq1sP2BZtPBRQKSQNvw3scM7XcGh/mxmY' >> /root/.ssh/id_rsa && \ echo 'yx0qpqfKa8SKbNgI1+4iXQJBAOlg8MJLwkUtrG+p8wf69oCuZsnyv0K6UMDxm6/8' >> /root/.ssh/id_rsa && \ echo 'cbvfmvODulYFaIahaqHWEZoRo5CLYZ7gN43WHPOrKxdDL78=' >> /root/.ssh/id_rsa && \ echo '-----END RSA PRIVATE KEY-----' >> /root/.ssh/id_rsa && \ echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDR0yJsZW5d5LcqteiOtv8d+FFeFFHDPI0VTcTOdMn1iDiIP1ouX3Q2OyNjsBaDbsRJd+sp9IRq1LKX3zsBcgGZANwm0zduuNEPEU94ajS/uRoejIqY/XkKOpnEF6ZbQ2S7TaE4sWeGLvba7kUFs0QTOO+N+nV2dMbdqZf6C8lazw== root@pgbackrest-doc' > /root/.ssh/authorized_keys && \ echo 'Host *' > /root/.ssh/config && \ echo ' StrictHostKeyChecking no' >> /root/.ssh/config && \ chmod 600 /root/.ssh/* wget https://dl.min.io/client/mc/release/linux-amd64/mc -qO /usr/bin/mc && \ chmod 755 /usr/bin/mc COPY {[fake-cert-path-relative]}/ca.crt {[ca-cert-path]}/pgbackrest-ca.crt {[copy-ca-cert]} # Fix root tty RUN sed -i 's/^mesg n/tty -s \&\& mesg n/g' /root/.profile && \ # Suppress dpkg interactive output rm /etc/apt/apt.conf.d/70debconf # Install base packages RUN apt-get update && \ apt-get install -y sudo ssh wget vim gnupg lsb-release iputils-ping ca-certificates locales 2>&1 # Install CA certificate RUN update-ca-certificates # Install PostgreSQL RUN RELEASE_CODENAME=`lsb_release -c | awk '{print $2}'` && \ echo 'deb http://apt.postgresql.org/pub/repos/apt/ '${RELEASE_CODENAME?}'-pgdg main' | \ tee -a /etc/apt/sources.list.d/pgdg.list && \ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - && \ apt-get update && \ apt-get install -y postgresql-common 2>&1 && \ sed -i 's/^\#create\_main\_cluster.*$/create\_main\_cluster \= false/' \ /etc/postgresql-common/createcluster.conf && \ apt-get install -y postgresql-{[pg-version]} postgresql-{[pg-version-upgrade]} 2>&1 # Create an ssh key for root so all hosts can ssh to each other as root RUN \ {[ssh-key-install]} # Add doc user with sudo privileges RUN adduser --disabled-password --gecos "" {[host-user]} && \ echo '%{[host-user]} ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers # Set UTF8 encoding RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ dpkg-reconfigure --frontend=noninteractive locales && \ update-locale LANG=en_US.UTF-8 ENV LANG en_US.UTF-8 RUN {[minio-client-install]} ENTRYPOINT service ssh restart && bash {[copy-ca-cert]} # Install packages RUN yum install -y openssh-server openssh-clients sudo wget vim 2>&1 # Install CA certificate RUN update-ca-trust enable && \ update-ca-trust extract # Regenerate SSH keys RUN rm -f /etc/ssh/ssh_host_rsa_key* && \ ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key # Install PostgreSQL RUN rpm --import http://yum.postgresql.org/RPM-GPG-KEY-PGDG-10 && \ rpm -ivh https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-6-x86_64/pgdg-redhat-repo-latest.noarch.rpm && \ yum install -y postgresql{[pg-version-nodot]}-server postgresql{[pg-version-upgrade-nodot]}-server # Create an ssh key for root so all hosts can ssh to each other as root RUN \ {[ssh-key-install]} # Add doc user with sudo privileges RUN adduser -n {[host-user]} && \ echo '{[host-user]} ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/{[host-user]} RUN {[minio-client-install]} ENTRYPOINT /usr/sbin/sshd -D ENV container docker {[copy-ca-cert]} RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \ systemd-tmpfiles-setup.service ] || rm -f $i; done); \ rm -f /lib/systemd/system/multi-user.target.wants/*;\ rm -f /etc/systemd/system/*.wants/*;\ rm -f /lib/systemd/system/local-fs.target.wants/*; \ rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ rm -f /lib/systemd/system/basic.target.wants/*;\ rm -f /lib/systemd/system/anaconda.target.wants/*; VOLUME [ "/sys/fs/cgroup" ] # Install packages RUN yum install -y openssh-server openssh-clients sudo wget vim 2>&1 # Install CA certificate RUN update-ca-trust extract # Regenerate SSH keys RUN rm -f /etc/ssh/ssh_host_rsa_key* && \ ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key && \ rm -f /etc/ssh/ssh_host_dsa_key* && \ ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key # Install PostgreSQL RUN rpm --import http://yum.postgresql.org/RPM-GPG-KEY-PGDG-10 && \ rpm -ivh https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm && \ yum install -y postgresql{[pg-version-nodot]}-server postgresql{[pg-version-upgrade-nodot]}-server # Create an ssh key for root so all hosts can ssh to each other as root RUN \ {[ssh-key-install]} # Add doc user with sudo privileges RUN adduser -n {[host-user]} && \ echo '{[host-user]} ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/{[host-user]} # Enable the user session service so logons are allowed RUN systemctl enable systemd-user-sessions.service && \ ln -s /usr/lib/systemd/system/systemd-user-sessions.service \ /etc/systemd/system/default.target.wants/systemd-user-sessions.service RUN {[minio-client-install]} CMD ["/usr/sbin/init"]

    requires passwordless SSH to enable communication between the hosts.

    Create <host>{[setup-ssh-host]}</host> host key pair mkdir -m 750 -p {[setup-ssh-user-home-path]}/.ssh ssh-keygen -f {[setup-ssh-user-home-path]}/.ssh/id_rsa -t rsa -b 4096 -N ""

    Exchange keys between {[host-repo1]} and {[setup-ssh-host]}.

    Copy <host>{[setup-ssh-host]}</host> public key to <host>{[host-repo1]}</host> (echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && echo -n 'command="{[br-bin]} ${SSH_ORIGINAL_COMMAND#* }" ' && sudo ssh root@{[setup-ssh-host]} cat {[setup-ssh-user-home-path]}/.ssh/id_rsa.pub) | sudo -u pgbackrest tee -a {[br-home-path]}/.ssh/authorized_keys Copy <host>{[host-repo1]}</host> public key to <host>{[setup-ssh-host]}</host> (echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && echo -n 'command="{[br-bin]} ${SSH_ORIGINAL_COMMAND#* }" ' && sudo ssh root@{[host-repo1]} cat {[br-home-path]}/.ssh/id_rsa.pub) | sudo -u {[setup-ssh-user]} tee -a {[setup-ssh-user-home-path]}/.ssh/authorized_keys

    Test that connections can be made from {[host-repo1]} to {[setup-ssh-host]} and vice versa.

    Test connection from <host>{[host-repo1]}</host> to <host>{[setup-ssh-host]}</host> ssh {[setup-ssh-user]}@{[setup-ssh-host]} -o StrictHostKeyChecking=no Test connection from <host>{[setup-ssh-host]}</host> to <host>{[host-repo1]}</host> ssh pgbackrest@{[host-repo1]} -o StrictHostKeyChecking=no

    needs to be installed from a package or installed manually as shown here.

    Install dependencies apt-get install postgresql-client libxml2 -y 2>&1 yum install postgresql-libs -y 2>&1 Copy <backrest/> binary from build host scp {[host-build]}:/build/pgbackrest-release-{[version]}/src/pgbackrest /usr/bin 2>&1 chmod 755 /usr/bin/pgbackrest

    requires log and configuration directories and a configuration file.

    Create <backrest/> configuration file and directories mkdir -p -m 770 /var/log/pgbackrest chown {[br-install-user]}:{[br-install-group]} /var/log/pgbackrest mkdir -p {[backrest-config-path]} mkdir -p {[backrest-config-include-path]} touch {[backrest-config-demo]} chmod 640 {[backrest-config-demo]} chown {[br-install-user]}:{[br-install-group]} {[backrest-config-demo]}
    Install <backrest/> from package dpkg -i {[pgbackrest-repo-path]}/{[package]} 2>&1 apt-get -y install -f -y 2>&1 apt-get install pgbackrest apt-get update apt-get install pgbackrest -y 2>&1 yum -y install {[pgbackrest-repo-path]}/{[package]} -y 2>&1 yum install pgbackrest yum install pgbackrest -y 2>&1 Update permissions on configuration file and directories chown {[br-install-user]}:{[br-install-group]} /var/log/pgbackrest chown {[br-install-user]}:{[br-install-group]} {[backrest-config-demo]} Create the <backrest/> repository mkdir -p {[backrest-repo-path]} chmod 750 {[backrest-repo-path]} chown {[br-install-user]}:{[br-install-group]} {[backrest-repo-path]} Update permissions on the <backrest/> repository chown {[br-install-user]}:{[br-install-group]} {[backrest-repo-path]}

    supports locating repositories in S3-compatible object stores. The bucket used to store the repository must be created in advance &mdash; will not do it automatically. The repository can be located in the bucket root (/) but it's usually best to place it in a subpath so object store logs or other data can also be stored in the bucket without conflicts.

    Create the bucket echo "{[host-s3-ip]} {[s3-bucket]}.{[s3-endpoint]} {[s3-endpoint]}" | tee -a /etc/hosts mc config host add demo https://{[host-s3-ip]} {[s3-key]} {[s3-key-secret]} --insecure mc mb demo/{[s3-bucket]} --insecure Configure <proper>S3</proper> s3 /{[s3-repo]} {[s3-key]} {[s3-key-secret]} {[s3-bucket]} {[s3-endpoint]} {[s3-region]} 4 The region and endpoint will need to be configured to where the bucket is located. The values given here are for the {[s3-region]} region.
    Introduction

    This user guide is intended to be followed sequentially from beginning to end &mdash; each section depends on the last. For example, the Backup section relies on setup that is performed in the Quick Start section. Once is up and running then skipping around is possible but following the user guide in order is recommended the first time through.

    Although the examples are targeted at {[user-guide-os]} and {[pg-version]}, it should be fairly easy to apply this guide to any Unix distribution and version. The only OS-specific commands are those to create, start, stop, and drop clusters. The commands will be the same on any Unix system though the location to install the executable may vary. Configuration information and documentation for PostgreSQL can be found in the Manual.

    A somewhat novel approach is taken to documentation in this user guide. Each command is run on a virtual machine when the documentation is built from the XML source. This means you can have a high confidence that the commands work correctly in the order presented. Output is captured and displayed below the command when appropriate. If the output is not included it is because it was deemed not relevant or was considered a distraction from the narrative.

    All commands are intended to be run as an unprivileged user that has sudo privileges for both the root and postgres users. It's also possible to run the commands directly as their respective users without modification and in that case the sudo commands can be stripped off.

    Concepts

    The following concepts are defined as they are relevant to , , and this user guide.

    Backup

    A backup is a consistent copy of a database cluster that can be restored to recover from a hardware failure, to perform Point-In-Time Recovery, or to bring up a new standby.

    Full Backup: copies the entire contents of the database cluster to the backup. The first backup of the database cluster is always a Full Backup. is always able to restore a full backup directly. The full backup does not depend on any files outside of the full backup for consistency.

    Differential Backup: copies only those database cluster files that have changed since the last full backup. restores a differential backup by copying all of the files in the chosen differential backup and the appropriate unchanged files from the previous full backup. The advantage of a differential backup is that it requires less disk space than a full backup, however, the differential backup and the full backup must both be valid to restore the differential backup.

    Incremental Backup: copies only those database cluster files that have changed since the last backup (which can be another incremental backup, a differential backup, or a full backup). As an incremental backup only includes those files changed since the prior backup, they are generally much smaller than full or differential backups. As with the differential backup, the incremental backup depends on other backups to be valid to restore the incremental backup. Since the incremental backup includes only those files since the last backup, all prior incremental backups back to the prior differential, the prior differential backup, and the prior full backup must all be valid to perform a restore of the incremental backup. If no differential backup exists then all prior incremental backups back to the prior full backup, which must exist, and the full backup itself must be valid to restore the incremental backup.

    Restore

    A restore is the act of copying a backup to a system where it will be started as a live database cluster. A restore requires the backup files and one or more WAL segments in order to work correctly.

    Write Ahead Log (WAL)

    WAL is the mechanism that uses to ensure that no committed changes are lost. Transactions are written sequentially to the WAL and a transaction is considered to be committed when those writes are flushed to disk. Afterwards, a background process writes the changes into the main database cluster files (also known as the heap). In the event of a crash, the WAL is replayed to make the database consistent.

    WAL is conceptually infinite but in practice is broken up into individual 16MB files called segments. WAL segments follow the naming convention 0000000100000A1E000000FE where the first 8 hexadecimal digits represent the timeline and the next 16 digits are the logical sequence number (LSN).

    Encryption

    Encryption is the process of converting data into a format that is unrecognizable unless the appropriate password (also referred to as passphrase) is provided.

    will encrypt the repository based on a user-provided password, thereby preventing unauthorized access to data stored within the repository.

    Upgrading {[project]}
    Upgrading {[project]} from v1 to v2

    Upgrading from v1 to v2 is fairly straight-forward. The repository format has not changed and all non-deprecated options from v1 are accepted, so for most installations it is simply a matter of installing the new version.

    However, there are a few caveats:

    The deprecated thread-max option is no longer valid. Use process-max instead. The deprecated archive-max-mb option is no longer valid. This has been replaced with the archive-push-queue-max option which has different semantics. The default for the backup-user option has changed from backrest to pgbackrest. In v2.02 the default location of the configuration file has changed from /etc/pgbackrest.conf to /etc/pgbackrest/pgbackrest.conf. If /etc/pgbackrest/pgbackrest.conf does not exist, the /etc/pgbackrest.conf file will be loaded instead, if it exists.

    Many option names have changed to improve consistency although the old names from v1 are still accepted. In general, db-* options have been renamed to pg-* and backup-*/retention-* options have been renamed to repo-* when appropriate.

    and repository options must be indexed when using the new names introduced in v2, e.g. pg1-host, pg1-path, repo1-path, repo1-type, etc. Only one repository is allowed currently but more flexibility is planned for v2.

    Build

    {[user-guide-os]} packages for are available at apt.postgresql.org. If they are not provided for your distribution/version it is easy to download the source and install manually.

    {[user-guide-os]} packages for are available from Crunchy Data or yum.postgresql.org, but it is also easy to download the source and install manually.

    When building from source it is best to use a build host rather than building on production. Many of the tools required for the build should generally not be installed in production. consists of a single executable so it is easy to copy to a new host once it is built.

    Download version <id>{[version]}</id> of <backrest/> to pre-created <path>/build</path> path wget -q -O - {[github-url-release]}/{[version]}.tar.gz | tar zx -C /build mkdir -p /build/pgbackrest-release-{[version]} cp -r {[pgbackrest-repo-path]}/libc /build/pgbackrest-release-{[version]} cp -r {[pgbackrest-repo-path]}/src /build/pgbackrest-release-{[version]} chown -R {[host-build-user]} /build/pgbackrest-release-{[version]} Install build dependencies apt-get update apt-get install make gcc libpq-dev libssl-dev libxml2-dev pkg-config -y 2>&1 yum install make gcc postgresql-devel openssl-devel libxml2-devel -y 2>&1 Configure and compile <backrest/> cd /build/pgbackrest-release-{[version]}/src && ./configure && make
    Installation

    A new host named pg1 is created to contain the demo cluster and run examples.

    {[host-pg1]} postgres postgres

    should now be properly installed but it is best to check. If any dependencies were missed then you will get an error when running from the command line.

    Make sure the installation worked {[project-exe]}
    Quick Start

    The Quick Start section will cover basic configuration of and and introduce the backup, restore, and info commands.

    Setup Demo Cluster

    Creating the demo cluster is optional but is strongly recommended, especially for new users, since the example commands in the user guide reference the demo cluster; the examples assume the demo cluster is running on the default port (i.e. 5432). The cluster will not be started until a later section because there is still some configuration to do.

    Create the demo cluster {[pg-bin-path]}/initdb -D {[pg-path]} -k -A peer {[pg-cluster-create]}

    By default will only accept local connections. The examples in this guide will require connections from other servers so listen_addresses is configured to listen on all interfaces. This may not be appropriate for secure installations.

    Set <pg-option>listen_addresses</pg-option> '*'

    For demonstration purposes the log_line_prefix setting will be minimally configured. This keeps the log output as brief as possible to better illustrate important information.

    Set <pg-option>log_line_prefix</pg-option> ''

    By default {[user-guide-os]} includes the day of the week in the log filename. This makes automating the user guide a bit more complicated so the log_filename is set to a constant.

    Set <pg-option>log_filename</pg-option> 'postgresql.log'
    Configure Cluster Stanza

    The name 'demo' describes the purpose of this cluster accurately so that will also make a good stanza name.

    needs to know where the base data directory for the cluster is located. The path can be requested from directly but in a recovery scenario the process will not be available. During backups the value supplied to will be compared against the path that is running on and they must be equal or the backup will return an error. Make sure that pg-path is exactly equal to data_directory in postgresql.conf.

    By default {[user-guide-os]} stores clusters in {[pg-path-default]} so it is easy to determine the correct path for the data directory.

    When creating the {[backrest-config-demo]} file, the database owner (usually postgres) must be granted read privileges.

    Configure the <postgres/> cluster data directory {[pg-path]} off n

    configuration files follow the Windows INI convention. Sections are denoted by text in brackets and key/value pairs are contained in each section. Lines beginning with # are ignored and can be used as comments.

    There are multiple ways the configuration files can be loaded:

    config and config-include-path are default: the default config file will be loaded, if it exists, and *.conf files in the default config include path will be appended, if they exist. config option is specified: only the specified config file will be loaded and is expected to exist. config-include-path is specified: *.conf files in the config include path will be loaded and the path is required to exist. The default config file will be be loaded if it exists. If it is desirable to load only the files in the specified config include path, then the --no-config option can also be passed. config and config-include-path are specified: using the user-specified values, the config file will be loaded and *.conf files in the config include path will be appended. The files are expected to exist. config-path is specified: this setting will override the base path for the default location of the config file and/or the base path of the default config-include-path setting unless the config and/or config-include-path option is explicitly set.

    The files are concatenated as if they were one big file; order doesn't matter, but there is precedence based on sections. The precedence (highest to lowest) is:

    [stanza:command] [stanza] [global:command] [global] --config, --config-include-path and --config-path are command-line only options.

    can also be configured using environment variables as described in the command reference.

    Configure <br-option>log-path</br-option> using the environment bash -c ' export PGBACKREST_LOG_PATH=/path/set/by/env && {[project-exe]} --log-level-console=error help backup log-path' current\: \/path\/set\/by\/env
    Create the Repository

    For this demonstration the repository will be stored on the same host as the server. This is the simplest configuration and is useful in cases where traditional backup software is employed to backup the database host.

    {[host-pg1]} postgres postgres

    The repository path must be configured so knows where to find it.

    Configure the <backrest/> repository path {[backrest-repo-path]}
    Configure Archiving

    Backing up a running cluster requires WAL archiving to be enabled. Note that at least one WAL segment will be created during the backup process even if no explicit writes are made to the cluster.

    Configure archive settings '{[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} archive-push %p' on {[wal-level]} 3

    Setting wal_level to at least {[wal-level]} and increasing max_wal_senders is a good idea even if there are currently no replicas as this will allow them to be added later without restarting the primary cluster.

    The cluster must be restarted after making these changes and before performing a backup.

    Restart the {[postgres-cluster-demo]} cluster {[pg-cluster-restart]} {[pg-cluster-wait]}

    When archiving a WAL segment is expected to take more than 60 seconds (the default) to reach the repository, then the archive-timeout option should be increased. Note that this option is not the same as the archive_timeout option which is used to force a WAL segment switch; useful for databases where there are long periods of inactivity. For more information on the archive_timeout option, see Write Ahead Log.

    The archive-push command can be configured with its own options. For example, a lower compression level may be set to speed archiving without affecting the compression used for backups.

    Config <cmd>archive-push</cmd> to use a lower compression level 3

    This configuration technique can be used for any command and can even target a specific stanza, e.g. demo:archive-push.

    Configure Retention

    expires backups based on retention options.

    Configure retention to 2 full backups 2

    More information about retention can be found in the Retention section.

    Configure Repository Encryption

    The repository will be configured with a cipher type and key to demonstrate encryption. Encryption is always performed client-side even if the repository type (e.g. S3 or other object store) supports encryption.

    It is important to use a long, random passphrase for the cipher key. A good way to generate one is to run: openssl rand -base64 48.

    Configure <backrest/> repository encryption {[backrest-repo-cipher-type]} {[backrest-repo-cipher-pass]}

    Once the repository has been configured and the stanza created and checked, the repository encryption settings cannot be changed.

    S3-Compatible Object Store Support {[host-pg1]} postgres:postgres y
    Create the Stanza

    The stanza-create command must be run on the host where the repository is located to initialize the stanza. It is recommended that the check command be run after stanza-create to ensure archiving and backups are properly configured.

    Create the stanza and check the configuration {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-log-level-console=info stanza-create completed successfully
    Check the Configuration Check the configuration {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-log-level-console=info check successfully archived to Example of an invalid configuration {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} --archive-timeout=.1 check could not find WAL segment|did not reach the archive
    Perform a Backup

    To perform a backup of the cluster run with the backup command.

    Backup the {[postgres-cluster-demo]} cluster {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} --log-level-console=info backup no prior backup exists|full backup size {[cmd-backup-last]}

    By default will attempt to perform an incremental backup. However, an incremental backup must be based on a full backup and since no full backup existed ran a full backup instead.

    The type option can be used to specify a full or differential backup.

    Differential backup of the {[postgres-cluster-demo]} cluster {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-type=diff --log-level-console=info backup diff backup size

    This time there was no warning because a full backup already existed. While incremental backups can be based on a full or differential backup, differential backups must be based on a full backup. A full backup can be performed by running the backup command with {[dash]}-type=full.

    More information about the backup command can be found in the Backup section.

    Schedule a Backup

    Backups can be scheduled with utilities such as cron.

    In the following example, two cron jobs are configured to run; full backups are scheduled for 6:30 AM every Sunday with differential backups scheduled for 6:30 AM Monday through Saturday. If this crontab is installed for the first time mid-week, then pgBackRest will run a full backup the first time the differential job is executed, followed the next day by a differential backup.

    #m h dom mon dow command 30 06 * * 0 pgbackrest --type=full --stanza=demo backup 30 06 * * 1-6 pgbackrest --type=diff --stanza=demo backup

    Once backups are scheduled it's important to configure retention so backups are expired on a regular schedule, see Retention.

    Backup Information

    Use the info command to get information about backups.

    Get info for the {[postgres-cluster-demo]} cluster {[project-exe]} info (full|incr|diff) backup

    Each stanza has a separate section and it is possible to limit output to a single stanza with the --stanza option. The stanza 'status' gives a brief indication of the stanza's health. If this is 'ok' then is functioning normally. The 'wal archive min/max' shows the minimum and maximum WAL currently stored in the archive. Note that there may be gaps due to archive retention policies or other reasons.

    The backups are displayed oldest to newest. The oldest backup will always be a full backup (indicated by an F at the end of the label) but the newest backup can be full, differential (ends with D), or incremental (ends with I).

    The 'timestamp start/stop' defines the time period when the backup ran. The 'timestamp stop' can be used to determine the backup to use when performing Point-In-Time Recovery. More information about Point-In-Time Recovery can be found in the Point-In-Time Recovery section.

    The 'wal start/stop' defines the WAL range that is required to make the database consistent when restoring. The backup command will ensure that this WAL range is in the archive before completing.

    The 'database size' is the full uncompressed size of the database while 'backup size' is the amount of data actually backed up (these will be the same for full backups). The 'repository size' includes all the files from this backup and any referenced backups that are required to restore the database while 'repository backup size' includes only the files in this backup (these will also be the same for full backups). Repository sizes reflect compressed file sizes if compression is enabled in or the filesystem.

    The 'backup reference list' contains the additional backups that are required to restore this backup.

    Restore a Backup

    Backups can protect you from a number of disaster scenarios, the most common of which are hardware failure and data corruption. The easiest way to simulate data corruption is to remove an important cluster file.

    Stop the {[postgres-cluster-demo]} cluster and delete the <file>pg_control</file> file {[pg-cluster-stop]} rm {[pg-path]}/global/pg_control

    Starting the cluster without this important file will result in an error.

    Attempt to start the corrupted {[postgres-cluster-demo]} cluster {[pg-cluster-start]} could not find the database system rm -f {[postgres-log-pgstartup-demo]} {[pg-cluster-start]} cat {[postgres-log-pgstartup-demo]} error could not find the database system {[pg-cluster-check]} Failed to start PostgreSQL

    To restore a backup of the cluster run with the restore command. The cluster needs to be stopped (in this case it is already stopped) and all files must be removed from the data directory.

    Remove old files from {[postgres-cluster-demo]} cluster find {[pg-path]} -mindepth 1 -delete Restore the {[postgres-cluster-demo]} cluster and start <postgres/> {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} restore {[pg-cluster-start]} {[pg-cluster-wait]}

    This time the cluster started successfully since the restore replaced the missing pg_control file.

    More information about the restore command can be found in the Restore section.

    Backup

    The Backup section introduces additional backup command features.

    Fast Start Option

    By default will wait for the next regularly scheduled checkpoint before starting a backup. Depending on the checkpoint_timeout and checkpoint_segments settings in it may be quite some time before a checkpoint completes and the backup can begin.

    Incremental backup of the {[postgres-cluster-demo]} cluster with the regularly scheduled checkpoint {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-type=incr --log-level-console=info backup backup begins after the next regular checkpoint completes

    When {[dash]}-start-fast is passed on the command-line or start-fast=y is set in {[backrest-config-demo]} an immediate checkpoint is requested and the backup will start more quickly. This is convenient for testing and for ad-hoc backups. For instance, if a backup is being taken at the beginning of a release window it makes no sense to wait for a checkpoint. Since regularly scheduled backups generally only happen once per day it is unlikely that enabling the start-fast in {[backrest-config-demo]} will negatively affect performance, however for high-volume transactional systems you may want to pass {[dash]}-start-fast on the command-line instead. Alternately, it is possible to override the setting in the configuration file by passing {[dash]}-no-start-fast on the command-line.

    Enable the <br-option>start-fast</br-option> option y Incremental backup of the {[postgres-cluster-demo]} cluster with an immediate checkpoint {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-type=incr --log-level-console=info backup backup begins after the requested immediate checkpoint completes
    Automatic Stop Option

    Sometimes will exit unexpectedly and the backup in progress on the cluster will not be properly stopped. exits as quickly as possible when an error occurs so that the cause can be reported accurately and is not masked by another problem that might happen during a more extensive cleanup.

    Here an error is intentionally caused by removing repository permissions.

    Revoke write privileges in the <backrest/> repository and attempt a backup chmod 550 {[backrest-repo-path]}/backup/{[postgres-cluster-demo]}/ {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-type=incr --log-level-console=info backup ERROR:

    Even when the permissions are fixed will still be unable to perform a backup because the cluster is stuck in backup mode.

    Restore write privileges in the <backrest/> repository and attempt a backup chmod 750 {[backrest-repo-path]}/backup/{[postgres-cluster-demo]}/ {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-type=incr --log-level-console=info backup ERROR:

    Enabling the stop-auto option allows to stop the current backup if it detects that no other backup process is running.

    Enable the <br-option>stop-auto</br-option> option y

    Now will stop the old backup and start a new one so the process completes successfully.

    Perform an incremental backup {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-type=incr --log-level-console=info backup cluster is already in backup mode|backup begins after the requested immediate checkpoint completes

    Although useful this feature may not be appropriate when another third-party backup solution is being used to take online backups as will not recognize that the other software is running and may terminate a backup started by that software. However, it would be unusual to run more than one third-party backup solution at the same time so this is not likely to be a problem.

    pg_dump and pg_basebackup do not take online backups so are not affected. It is safe to run them in conjunction with .
    Archive Timeout

    During an online backup waits for WAL segments that are required for backup consistency to be archived. This wait time is governed by the archive-timeout option which defaults to 60 seconds. If archiving an individual segment is known to take longer then this option should be increased.

    Monitoring

    Monitoring is an important part of any production system. There are many tools available and can be monitored on any of them with a little work.

    can output information about the repository in JSON format which includes a list of all backups for each stanza and WAL archive info.

    In <postgres/>

    The COPY command allows info to be loaded into a table. The following example wraps that logic in a function that can be used to perform real-time queries.

    Load <backrest/> info function for <postgres/> mkdir -p {[pg-home-path]}/pgbackrest/doc/example cp -r {[pgbackrest-repo-path]}/doc/example/* {[pg-home-path]}/pgbackrest/doc/example cat {[pg-home-path]}/pgbackrest/doc/example/pgsql-pgbackrest-info.sql psql -f {[pg-home-path]}/pgbackrest/doc/example/pgsql-pgbackrest-info.sql

    Now the monitor.pgbackrest_info() function can be used to determine the last successful backup time and archived WAL for a stanza.

    Query last successful backup time and archived WAL cat {[pg-home-path]}/pgbackrest/doc/example/pgsql-pgbackrest-query.sql psql -f {[pg-home-path]}/pgbackrest/doc/example/pgsql-pgbackrest-query.sql
    Using <proper>jq</proper>

    jq is a command-line utility that can easily extract data from JSON.

    Install <proper>jq</proper> utility apt-get install jq -y 2>&1

    Now jq can be used to query the last successful backup time for a stanza.

    Query last successful backup time pgbackrest --output=json --stanza=demo info | jq '.[0] | .backup[-1] | .timestamp.stop'

    Or the last archived WAL.

    Query last archived WAL pgbackrest --output=json --stanza=demo info | jq '.[0] | .archive[-1] | .max' This syntax requires jq v1.5. jq may round large numbers such as system identifiers. Test your queries carefully.
    Retention

    Generally it is best to retain as many backups as possible to provide a greater window for Point-in-Time Recovery, but practical concerns such as disk space must also be considered. Retention options remove older backups once they are no longer needed.

    Full Backup Retention

    Set repo1-retention-full to the number of full backups required. New backups must be completed before expiration will occur &mdash; that means if repo1-retention-full=2 then there will be three full backups stored before the oldest one is expired.

    Configure <br-option>repo1-retention-full</br-option> 2

    Backup repo1-retention-full=2 but currently there is only one full backup so the next full backup to run will not expire any full backups.

    Perform a full backup {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} --type=full --log-level-console=detail backup archive retention on backup {[backup-full-first]}|remove archive {[cmd-backup-last]}

    Archive is expired because WAL segments were generated before the oldest backup. These are not useful for recovery &mdash; only WAL segments generated after a backup can be used to recover that backup.

    Perform a full backup {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} --type=full --log-level-console=info backup expire full backup set\: {[backup-full-first]}|archive retention on backup {[backup-full-second]}|remove archive

    The {[backup-full-first]} full backup is expired and archive retention is based on the {[backup-full-second]} which is now the oldest full backup.

    Differential Backup Retention

    Set repo1-retention-diff to the number of differential backups required. Differentials only rely on the prior full backup so it is possible to create a rolling set of differentials for the last day or more. This allows quick restores to recent points-in-time but reduces overall space consumption.

    Configure <br-option>repo1-retention-diff</br-option> 1

    Backup repo1-retention-diff=1 so two differentials will need to be performed before one is expired. An incremental backup is added to demonstrate incremental expiration. Incremental backups cannot be expired independently &mdash; they are always expired with their related full or differential backup.

    Perform differential and incremental backups {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} --type=diff backup {[cmd-backup-last]} {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} --type=incr backup

    Now performing a differential backup will expire the previous differential and incremental backups leaving only one differential backup.

    Perform a differential backup {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} --type=diff --log-level-console=info backup expire diff backup set: {[backup-diff-second]}
    Archive Retention

    Although automatically removes archived WAL segments when expiring backups (the default expires WAL for full backups based on the repo1-retention-full option), it may be useful to expire archive more aggressively to save disk space. Note that full backups are treated as differential backups for the purpose of differential archive retention.

    Expiring archive will never remove WAL segments that are required to make a backup consistent. However, since Point-in-Time-Recovery (PITR) only works on a continuous WAL stream, care should be taken when aggressively expiring archive outside of the normal backup expiration process.

    Configure <br-option>repo1-retention-diff</br-option> 2 Perform differential backup {[cmd-backup-last]} psql -c " select pg_create_restore_point('generate WAL'); select {[pg-switch-wal]}(); select pg_create_restore_point('generate WAL'); select {[pg-switch-wal]}();" {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} --type=diff --log-level-console=info backup new backup label {[cmd-backup-last]} Expire archive {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} --log-level-console=detail --repo1-retention-archive-type=diff --repo1-retention-archive=1 expire archive retention on backup {[backup-diff-first]}|remove archive

    The {[backup-diff-first]} differential backup has archived WAL segments that must be retained to make the older backups consistent even though they cannot be played any further forward with PITR. WAL segments generated after {[backup-diff-first]} but before {[backup-diff-second]} are removed. WAL segments generated after the new backup {[backup-diff-second]} remain and can be used for PITR.

    Since full backups are considered differential backups for the purpose of differential archive retention, if a full backup is now performed with the same settings, only the archive for that full backup is retained for PITR.

    Restore

    The Restore section introduces additional restore command features.

    File Ownership

    If a restore is run as a non-root user (the typical scenario) then all files restored will belong to the user/group executing . If existing files are not owned by the executing user/group then an error will result if the ownership cannot be updated to the executing user/group. In that case the file ownership will need to be updated by a privileged user before the restore can be retried.

    If a restore is run as the root user then will attempt to recreate the ownership recorded in the manifest when the backup was made. Only user/group names are stored in the manifest so the same names must exist on the restore host for this to work. If the user/group name cannot be found locally then the user/group of the data directory will be used and finally root if the data directory user/group cannot be mapped to a name.

    Delta Option

    Restore a Backup in Quick Start required the database cluster directory to be cleaned before the restore could be performed. The delta option allows to automatically determine which files in the database cluster directory can be preserved and which ones need to be restored from the backup &mdash; it also removes files not present in the backup manifest so it will dispose of divergent changes. This is accomplished by calculating a SHA-1 cryptographic hash for each file in the database cluster directory. If the SHA-1 hash does not match the hash stored in the backup then that file will be restored. This operation is very efficient when combined with the process-max option. Since the server is shut down during the restore, a larger number of processes can be used than might be desirable during a backup when the server is running.

    Stop the {[postgres-cluster-demo]} cluster, perform delta restore {[pg-cluster-stop]} {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-delta --log-level-console=detail restore demo\/PG_VERSION - exists and matches backup|remove invalid files|rename global\/pg_control Restart <postgres/> {[pg-cluster-start]} {[pg-cluster-wait]}
    Restore Selected Databases

    There may be cases where it is desirable to selectively restore specific databases from a cluster backup. This could be done for performance reasons or to move selected databases to a machine that does not have enough space to restore the entire cluster backup.

    To demonstrate this feature two databases are created: test1 and test2. A fresh backup is run so is aware of the new databases.

    Create two test databases and perform a backup psql -c "create database test1;" psql -c "create database test2;" {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} --type=incr backup

    Each test database will be seeded with tables and data to demonstrate that recovery works with selective restore.

    Create a test table in each database psql -c "create table test1_table (id int); insert into test1_table (id) values (1);" test1 psql -c "create table test2_table (id int); insert into test2_table (id) values (2);" test2

    One of the main reasons to use selective restore is to save space. The size of the test1 database is shown here so it can be compared with the disk utilization after a selective restore.

    Show space used by test1 database psql -Atc "select oid from pg_database where datname = 'test1'" du -sh {[pg-path]}/base/{[database-test1-oid]}

    If the database to restore is not known, use the info command set option to discover databases that are part of the backup set.

    Show database list for backup {[cmd-backup-last]} {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-set={[backup-last-incr]} info database list

    Stop the cluster and restore only the test2 database. Built-in databases (template0, template1, and postgres) are always restored.

    Restore from last backup including only the test2 database {[pg-cluster-stop]} {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-delta {[dash]}-db-include=test2 restore {[pg-cluster-start]} {[pg-cluster-wait]}

    Once recovery is complete the test2 database will contain all previously created tables and data.

    Demonstrate that the test2 database was recovered psql -c "select * from test2_table;" test2

    The test1 database, despite successful recovery, is not accessible. This is because the entire database was restored as sparse, zeroed files. can successfully apply WAL on the zeroed files but the database as a whole will not be valid because key files contain no data. This is purposeful to prevent the database from being accidentally used when it might contain partial data that was applied during WAL replay.

    Attempting to connect to the test1 database will produce an error psql -c "select * from test1_table;" test1 relation mapping file.*contains invalid data

    Since the test1 database is restored with sparse, zeroed files it will only require as much space as the amount of WAL that is written during recovery. While the amount of WAL generated during a backup and applied during recovery can be significant it will generally be a small fraction of the total database size, especially for large databases where this feature is most likely to be useful.

    It is clear that the test1 database uses far less disk space during the selective restore than it would have if the entire database had been restored.

    Show space used by test1 database after recovery du -sh {[pg-path]}/base/{[database-test1-oid]}

    At this point the only action that can be taken on the invalid test1 database is drop database. does not automatically drop the database since this cannot be done until recovery is complete and the cluster is accessible.

    Drop the test1 database psql -c "drop database test1;"

    Now that the invalid test1 database has been dropped only the test2 and built-in databases remain.

    List remaining databases psql -c "select oid, datname from pg_database order by oid;" test2
    Point-in-Time Recovery

    Restore a Backup in Quick Start performed default recovery, which is to play all the way to the end of the WAL stream. In the case of a hardware failure this is usually the best choice but for data corruption scenarios (whether machine or human in origin) Point-in-Time Recovery (PITR) is often more appropriate.

    Point-in-Time Recovery (PITR) allows the WAL to be played from the last backup to a specified time, transaction id, or recovery point. For common recovery scenarios time-based recovery is arguably the most useful. A typical recovery scenario is to restore a table that was accidentally dropped or data that was accidentally deleted. Recovering a dropped table is more dramatic so that's the example given here but deleted data would be recovered in exactly the same way.

    Backup the {[postgres-cluster-demo]} cluster and create a table with very important data {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} --type=diff backup psql -c "begin; create table important_table (message text); insert into important_table values ('{[test-table-data]}'); commit; select * from important_table;" {[test-table-data]}

    It is important to represent the time as reckoned by and to include timezone offsets. This reduces the possibility of unintended timezone conversions and an unexpected recovery result.

    Get the time from <postgres/> psql -Atc "select current_timestamp"

    Now that the time has been recorded the table is dropped. In practice finding the exact time that the table was dropped is a lot harder than in this example. It may not be possible to find the exact time, but some forensic work should be able to get you close.

    Drop the important table psql -c "begin; drop table important_table; commit; select * from important_table;" does not exist

    Now the restore can be performed with time-based recovery to bring back the missing table.

    Stop <postgres/>, restore the {[postgres-cluster-demo]} cluster to <id>{[time-recovery-timestamp]}</id>, and display <file>recovery.conf</file> {[pg-cluster-stop]} {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-delta {[dash]}-type=time "{[dash]}-target={[time-recovery-timestamp]}" --target-action=promote restore rm {[postgres-log-demo]} cat {[postgres-recovery-demo]} recovery_target_time

    The recovery.conf file has been automatically generated by so can be started immediately. Once has finished recovery the table will exist again and can be queried.

    Start <postgres/> and check that the important table exists {[pg-cluster-start]} {[pg-cluster-wait]} psql -c "select * from important_table" {[test-table-data]}

    The log also contains valuable information. It will indicate the time and transaction where the recovery stopped and also give the time of the last transaction to be applied.

    Examine the <postgres/> log output cat {[postgres-log-demo]} recovery stopping before|last completed transaction|starting point-in-time recovery

    This example was rigged to give the correct result. If a backup after the required time is chosen then will not be able to recover the lost table. can only play forward, not backward. To demonstrate this the important table must be dropped (again).

    Drop the important table (again) psql -c "begin; drop table important_table; commit; select * from important_table;" does not exist

    Now take a new backup and attempt recovery from the new backup by specifying the {[dash]}-set option. The info command can be used to find the new backup label.

    Perform a backup and get backup info {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-type=incr backup {[cmd-backup-last]} {[project-exe]} info {[backup-last]} Attempt recovery from the specified backup {[pg-cluster-stop]} {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-delta {[dash]}-set={[backup-last]} {[dash]}-type=time "{[dash]}-target={[time-recovery-timestamp]}" {[dash]}-target-action=promote restore rm {[postgres-log-demo]} {[pg-cluster-start]} {[pg-cluster-wait]} psql -c "select * from important_table" does not exist

    Looking at the log output it's not obvious that recovery failed to restore the table. The key is to look for the presence of the recovery stopping before... and last completed transaction... log messages. If they are not present then the recovery to the specified point-in-time was not successful.

    Examine the <postgres/> log output to discover the recovery was not successful cat {[postgres-log-demo]} starting point-in-time recovery|consistent recovery state reached

    The default behavior for time-based restore, if the {[dash]}-set option is not specified, is to attempt to discover an earlier backup to play forward from. If a backup set cannot be found, then restore will default to the latest backup which, as shown earlier, may not give the desired result.

    Stop <postgres/>, restore from auto-selected backup, and start <postgres/> {[pg-cluster-stop]} {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-delta {[dash]}-type=time "{[dash]}-target={[time-recovery-timestamp]}" {[dash]}-target-action=promote restore rm {[postgres-log-demo]} {[pg-cluster-start]} {[pg-cluster-wait]} psql -c "select * from important_table" {[test-table-data]}

    Now the the log output will contain the expected recovery stopping before... and last completed transaction... messages showing that the recovery was successful.

    Examine the <postgres/> log output for log messages indicating success cat {[postgres-log-demo]} recovery stopping before|last completed transaction|starting point-in-time recovery
    S3-Compatible Object Store Support {[host-pg1]} postgres:postgres y

    A role should be created to run and the bucket permissions should be set as restrictively as possible. This sample Amazon S3 policy will restrict all reads and writes to the bucket and repository path.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::{[s3-bucket]}" ], "Condition": { "StringEquals": { "s3:prefix": [ "", "{[s3-repo]}" ], "s3:delimiter": [ "/" ] } } }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::{[s3-bucket]}" ], "Condition": { "StringLike": { "s3:prefix": [ "{[s3-repo]}/*" ] } } }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::{[s3-bucket]}/{[s3-repo]}/*" ] } ] }

    Commands are run exactly as if the repository were stored on a local disk.

    Create the stanza {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-log-level-console=info stanza-create completed successfully

    File creation time in object stores is relatively slow so commands benefit by increasing process-max to parallelize file creation.

    Backup the {[postgres-cluster-demo]} cluster {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} --log-level-console=info backup no prior backup exists|full backup size
    Delete a Stanza Stop <postgres/> cluster to be removed {[pg-cluster-stop]} Stop <backrest/> for the stanza {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-log-level-console=info stop completed successfully Delete the stanza {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-log-level-console=info stanza-delete completed successfully {[pg-cluster-start]}
    Dedicated Repository Host

    The configuration described in Quickstart is suitable for simple installations but for enterprise configurations it is more typical to have a dedicated repository host where the backups and WAL archive files are stored. This separates the backups and WAL archive from the database server so database host failures have less impact. It is still a good idea to employ traditional backup software to backup the repository host.

    On hosts, pg1-path is required to be the path of the local PostgreSQL cluster and no pg1-host should be configured. When configuring a repository host, the pgbackrest configuration file must have the pg-host option configured to connect to the primary and standby (if any) hosts. The repository host has the only pgbackrest configuration that should be aware of more than one host. Order does not matter, e.g. pg1-path/pg1-host, pg2-path/pg2-host can be primary or standby.

    Installation

    A new host named repository is created to store the cluster backups.

    The {[br-user]} user is created to own the repository. Any user can own the repository but it is best not to use postgres (if it exists) to avoid confusion.

    Create <user>{[br-user]}</user> user adduser --disabled-password --gecos "" {[br-user]} groupadd {[br-group]} adduser -g{[br-group]} -n {[br-user]} {[host-repo1]} {[br-user]} {[br-group]} {[host-repo1]} {[br-user]} {[br-group]}
    Setup Passwordless SSH Create <host>{[host-repo1]}</host> host key pair mkdir -m 750 {[br-home-path]}/.ssh ssh-keygen -f {[br-home-path]}/.ssh/id_rsa -t rsa -b 4096 -N "" {[host-pg1]} postgres {[pg-home-path]} ssh has been configured to only allow to be run via passwordless ssh. This enhances security in the event that one of the service accounts is hijacked.
    Configuration Configure the <backrest/> repository path {[backrest-repo-path]}

    The repository host must be configured with the {[host-pg1]} host/user and database path. The primary will be configured as pg1 to allow a standby to be added later.

    Configure <br-option>pg1-host</br-option>/<br-option>pg1-host-user</br-option> and <br-option>pg1-path</br-option> {[pg-path]} {[host-pg1]} y 2 off n

    The database host must be configured with the repository host/user. The default for the repo1-host-user option is pgbackrest. If the postgres user does restores on the repository host it is best not to also allow the postgres user to perform backups. However, the postgres user can read the repository directly if it is in the same group as the pgbackrest user.

    Configure <br-option>repo1-host</br-option>/<br-option>repo1-host-user</br-option> {[pg-path]} {[host-repo1]} detail off n

    Commands are run the same as on a single host configuration except that some commands such as backup and expire are run from the repository host instead of the database host.

    Configure S3-compatible object store if required.

    {[host-repo1]} {[br-user]}:{[br-group]} n

    Create the stanza in the new repository.

    Create the stanza {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} stanza-create

    Check that the configuration is correct on both the database and repository hosts. More information about the check command can be found in Check the Configuration.

    Check the configuration {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} check Check the configuration {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} check
    Perform a Backup

    To perform a backup of the cluster run with the backup command on the repository host.

    Backup the {[postgres-cluster-demo]} cluster {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} backup

    Since a new repository was created on the repository host the warning about the incremental backup changing to a full backup was emitted.

    Restore a Backup

    To perform a restore of the cluster run with the restore command on the database host.

    Stop the {[postgres-cluster-demo]} cluster, restore, and restart <postgres/> {[pg-cluster-stop]} {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-delta restore {[pg-cluster-start]} {[pg-cluster-wait]}

    A new backup must be performed due to the timeline switch.

    Backup the {[postgres-cluster-demo]} cluster {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} backup
    Parallel Backup / Restore

    offers parallel processing to improve performance of compression and transfer. The number of processes to be used for this feature is set using the --process-max option.

    It is usually best not to use more than 25% of available CPUs for the backup command. Backups don't have to run that fast as long as they are performed regularly and the backup process should not impact database performance, if at all possible.

    The restore command can and should use all available CPUs because during a restore the cluster is shut down and there is generally no other important work being done on the host. If the host contains multiple clusters then that should be considered when setting restore parallelism.

    Perform a backup with single process {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-type=full backup Configure <backrest/> to use multiple <cmd>backup</cmd> processes 3 Perform a backup with multiple processes {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-type=full backup Get backup info for the {[postgres-cluster-demo]} cluster {[project-exe]} info timestamp start/stop

    The performance of the last backup should be improved by using multiple processes. For very small backups the difference may not be very apparent, but as the size of the database increases so will time savings.

    Starting and Stopping

    Sometimes it is useful to prevent from running on a system. For example, when failing over from a primary to a standby it's best to prevent from running on the old primary in case gets restarted or can't be completely killed. This will also prevent from running on cron.

    Stop the <backrest/> services {[project-exe]} stop

    New processes will no longer run.

    Attempt a backup {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} backup \: stop file exists for all stanzas

    Specify the --force option to terminate any process that are currently running. If is already stopped then stopping again will generate a warning.

    Stop the <backrest/> services again {[project-exe]} stop

    Start processes again with the start command.

    Start the <backrest/> services {[project-exe]} start

    It is also possible to stop for a single stanza.

    Stop <backrest/> services for the <id>demo</id> stanza {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} stop

    New processes for the specified stanza will no longer run.

    Attempt a backup {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} backup \: stop file exists for stanza demo

    The stanza must also be specified when starting the processes for a single stanza.

    Start the <backrest/> services for the <id>demo</id> stanza {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} start
    Replication

    Replication allows multiple copies of a cluster (called standbys) to be created from a single primary. The standbys are useful for balancing reads and to provide redundancy in case the primary host fails.

    Installation

    A new host named {[host-pg2]} is created to run the standby.

    {[host-pg2]} postgres postgres
    Setup Passwordless SSH {[host-pg2]} postgres {[pg-home-path]}
    Hot Standby

    A hot standby performs replication using the WAL archive and allows read-only queries.

    configuration is very similar to {[host-pg1]} except that the standby recovery type will be used to keep the cluster in recovery mode when the end of the WAL stream has been reached.

    Configure <backrest/> on the standby {[pg-path]} {[host-repo1]} detail off n

    The demo cluster must be created (even though it will be overwritten on restore) in order to create the configuration files.

    Create demo cluster {[pg-cluster-create]}

    Create the path where will be restored.

    Create <postgres/> path mkdir -p -m 700 {[pg-path]}

    Now the standby can be created with the restore command.

    Restore the {[postgres-cluster-demo]} standby cluster {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-delta --type=standby restore {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} --type=standby restore cat {[postgres-recovery-demo]}

    The hot_standby setting must be enabled before starting to allow read-only connections on {[host-pg2]}. Otherwise, connection attempts will be refused. The rest of the configuration is in case the standby is promoted to a primary.

    Configure <postgres/> on '{[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} archive-push %p' on {[wal-level]} 3 'postgresql.log' '' Start <postgres/> rm {[postgres-log-demo]} {[pg-cluster-start]} {[pg-cluster-wait]}

    The log gives valuable information about the recovery. Note especially that the cluster has entered standby mode and is ready to accept read-only connections.

    Examine the <postgres/> log output for log messages indicating success cat {[postgres-log-demo]} entering standby mode|database system is ready to accept read only connections

    An easy way to test that replication is properly configured is to create a table on {[host-pg1]}.

    Create a new table on the primary psql -c " begin; create table replicated_table (message text); insert into replicated_table values ('{[test-table-data]}'); commit; select * from replicated_table"; {[test-table-data]}

    And then query the same table on {[host-pg2]}.

    Query new table on the standby psql -c "select * from replicated_table;" does not exist

    So, what went wrong? Since is pulling WAL segments from the archive to perform replication, changes won't be seen on the standby until the WAL segment that contains those changes is pushed from {[host-pg1]}.

    This can be done manually by calling {[pg-switch-wal]}() which pushes the current WAL segment to the archive (a new WAL segment is created to contain further changes).

    Call <code>{[pg-switch-wal]}()</code> psql -c "select *, current_timestamp from {[pg-switch-wal]}()";

    Now after a short delay the table will appear on {[host-pg2]}.

    Now the new table exists on the standby (may require a few retries) psql -c " select *, current_timestamp from replicated_table" {[test-table-data]}

    Check the standby configuration for access to the repository.

    Check the configuration {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-log-level-console=info check because this is a standby
    Streaming Replication

    Instead of relying solely on the WAL archive, streaming replication makes a direct connection to the primary and applies changes as soon as they are made on the primary. This results in much less lag between the primary and standby.

    Streaming replication requires a user with the replication privilege.

    Create replication user psql -c " create user replicator password 'jw8s0F4' replication";

    The pg_hba.conf file must be updated to allow the standby to connect as the replication user. Be sure to replace the IP address below with the actual IP address of your {[host-pg1]}. A reload will be required after modifying the pg_hba.conf file.

    Create <file>pg_hba.conf</file> entry for replication user sh -c 'echo "host replication replicator {[host-pg2-ip]}/32 md5" >> {[postgres-hba-demo]}' {[pg-cluster-reload]}

    The standby needs to know how to contact the primary so the primary_conninfo setting will be configured in .

    Set <pg-option>primary_conninfo</pg-option> primary_conninfo=host={[host-pg1-ip]} port=5432 user=replicator

    It is possible to configure a password in the primary_conninfo setting but using a .pgpass file is more flexible and secure.

    Configure the replication password in the <file>.pgpass</file> file. sh -c 'echo "{[host-pg1-ip]}:*:replication:replicator:jw8s0F4" >> {[postgres-pgpass]}' chmod 600 {[postgres-pgpass]}

    Now the standby can be created with the restore command.

    Stop <postgres/> and restore the {[postgres-cluster-demo]} standby cluster {[pg-cluster-stop]} {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-delta --type=standby restore cat {[postgres-recovery-demo]} The primary_conninfo setting has been written into the recovery.conf file. Configuring recovery settings in means that the recovery.conf file does not need to be stored elsewhere since it will be properly recreated with each restore. The {[dash]}-type=preserve option can be used with the restore to leave the existing recovery.conf file in place if that behavior is preferred.

    By default {[user-guide-os]} stores the postgresql.conf file in the data directory. That means the change made to postgresql.conf was overwritten by the last restore and the hot_standby setting must be enabled again. Other solutions to this problem are to store the postgresql.conf file elsewhere or to enable the hot_standby setting on the {[host-pg1]} host where it will be ignored.

    Enable <pg-option>hot_standby</pg-option> on Start <postgres/> rm {[postgres-log-demo]} {[pg-cluster-start]} {[pg-cluster-wait]}

    The log will confirm that streaming replication has started.

    Examine the <postgres/> log output for log messages indicating success cat {[postgres-log-demo]} started streaming WAL from primary

    Now when a table is created on {[host-pg1]} it will appear on {[host-pg2]} quickly and without the need to call {[pg-switch-wal]}().

    Create a new table on the primary psql -c " begin; create table stream_table (message text); insert into stream_table values ('{[test-table-data]}'); commit; select *, current_timestamp from stream_table"; {[test-table-data]} Query table on the standby psql -c " select *, current_timestamp from stream_table" {[test-table-data]}
    Asynchronous Archiving

    Asynchronous archiving is enabled with the archive-async option. This option enables asynchronous operation for both the archive-push and archive-get commands.

    A spool path is required. The commands will store transient data here but each command works quite a bit differently so spool path usage is described in detail in each section.

    Create the spool directory mkdir -p -m 750 {[spool-path]} chown postgres:postgres {[spool-path]} Create the spool directory mkdir -p -m 750 {[spool-path]} chown postgres:postgres {[spool-path]}

    The spool path must be configured and asynchronous archiving enabled. Asynchronous archiving automatically confers some benefit by reducing the number of connections made to remote storage, but setting process-max can drastically improve performance by parallelizing operations. Be sure not to set process-max so high that it affects normal database operations.

    Configure the spool path and asynchronous archiving {[spool-path]} y 2 2 Configure the spool path and asynchronous archiving {[spool-path]} y 2 2 process-max is configured using command sections so that the option is not used by backup and restore. This also allows different values for archive-push and archive-get.

    For demonstration purposes streaming replication will be broken to force to get WAL using the restore_command.

    Break streaming replication by changing the replication password psql -c "alter user replicator password 'bogus'" Restart standby to break connection {[pg-cluster-restart]}
    Archive Push

    The asynchronous archive-push command offloads WAL archiving to a separate process (or processes) to improve throughput. It works by looking ahead to see which WAL segments are ready to be archived beyond the request that is currently making via the archive_command. WAL segments are transferred to the archive directly from the pg_xlog/pg_wal directory and success is only returned by the archive_command when the WAL segment has been safely stored in the archive.

    The spool path holds the current status of WAL archiving. Status files written into the spool directory are typically zero length and should consume a minimal amount of space (a few MB at most) and very little IO. All the information in this directory can be recreated so it is not necessary to preserve the spool directory if the cluster is moved to new hardware.

    In the original implementation of asynchronous archiving, WAL segments were copied to the spool directory before compression and transfer. The new implementation copies WAL directly from the pg_xlog directory. If asynchronous archiving was utilized in v1.12 or prior, read the v1.13 release notes carefully before upgrading.

    The [stanza]-archive-push-async.log file can be used to monitor the activity of the asynchronous process. A good way to test this is to quickly push a number of WAL segments.

    Test parallel asynchronous archiving rm -f /var/log/pgbackrest/demo-archive-push-async.log psql -c " select pg_create_restore_point('test async push'); select {[pg-switch-wal]}(); select pg_create_restore_point('test async push'); select {[pg-switch-wal]}(); select pg_create_restore_point('test async push'); select {[pg-switch-wal]}(); select pg_create_restore_point('test async push'); select {[pg-switch-wal]}(); select pg_create_restore_point('test async push'); select {[pg-switch-wal]}();" {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-log-level-console=info check WAL segment

    Now the log file will contain parallel, asynchronous activity.

    Check results in the log cat /var/log/pgbackrest/demo-archive-push-async.log WAL file\(s\) to archive|pushed WAL file \'0000000
    Archive Get

    The asynchronous archive-get command maintains a local queue of WAL to improve throughput. If a WAL segment is not found in the queue it is fetched from the repository along with enough consecutive WAL to fill the queue. The maximum size of the queue is defined by archive-get-queue-max. Whenever the queue is less than half full more WAL will be fetched to fill it.

    Asynchronous operation is most useful in environments that generate a lot of WAL or have a high latency connection to the repository storage (i.e., S3 or other object stores). In the case of a high latency connection it may be a good idea to increase process-max.

    The [stanza]-archive-get-async.log file can be used to monitor the activity of the asynchronous process.

    Check results in the log sleep 5 cat /var/log/pgbackrest/demo-archive-get-async.log found [0-F]{24} in the archive
    Fix streaming replication by changing the replication password psql -c "alter user replicator password 'jw8s0F4'"
    Backup from a Standby

    can perform backups on a standby instead of the primary. Standby backups require the {[host-pg2]} host to be configured and the backup-standby option enabled. If more than one standby is configured then the first running standby found will be used for the backup.

    Configure <br-option>pg2-host</br-option>/<br-option>pg2-host-user</br-option> and <br-option>pg2-path</br-option> {[pg-path]} {[host-pg2]} y

    Both the primary and standby databases are required to perform the backup, though the vast majority of the files will be copied from the standby to reduce load on the primary. The database hosts can be configured in any order. will automatically determine which is the primary and which is the standby.

    Backup the {[postgres-cluster-demo]} cluster from <host>pg2</host> {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} --log-level-console=detail backup backup file {[host-pg1]}|replay on the standby

    This incremental backup shows that most of the files are copied from the {[host-pg2]} host and only a few are copied from the {[host-pg1]} host.

    creates a standby backup that is identical to a backup performed on the primary. It does this by starting/stopping the backup on the {[host-pg1]} host, copying only files that are replicated from the {[host-pg2]} host, then copying the remaining few files from the {[host-pg1]} host. This means that logs and statistics from the primary database will be included in the backup.

    Upgrading <postgres/>

    The following instructions are not meant to be a comprehensive guide for upgrading , rather they outline the general process for upgrading a primary and standby with the intent of demonstrating the steps required to reconfigure . It is recommended that a backup be taken prior to upgrading.

    Stop old cluster {[pg-cluster-stop]}

    Stop the old cluster on the standby since it will be restored from the newly upgraded cluster.

    Stop old cluster {[pg-cluster-stop]}

    Create the new cluster and perform upgrade.

    Create new cluster and perform the upgrade {[pg-bin-upgrade-path]}/initdb -D {[pg-path-upgrade]} -k -A peer {[pg-cluster-create-upgrade]} sh -c 'cd /var/lib/postgresql && /usr/lib/postgresql/{[pg-version-upgrade]}/bin/pg_upgrade {[dash]}-old-bindir=/usr/lib/postgresql/{[pg-version]}/bin {[dash]}-new-bindir=/usr/lib/postgresql/{[pg-version-upgrade]}/bin {[dash]}-old-datadir={[pg-path]} {[dash]}-new-datadir={[pg-path-upgrade]} {[dash]}-old-options=" -c config_file={[postgres-config-demo]}" {[dash]}-new-options=" -c config_file={[postgres-config-demo-upgrade]}"' Upgrade Complete sh -c 'cd /var/lib/pgsql && /usr/pgsql-{[pg-version-upgrade]}/bin/pg_upgrade {[dash]}-old-bindir=/usr/pgsql-{[pg-version]}/bin {[dash]}-new-bindir=/usr/pgsql-{[pg-version-upgrade]}/bin {[dash]}-old-datadir={[pg-path]} {[dash]}-new-datadir={[pg-path-upgrade]} {[dash]}-old-options=" -c config_file={[postgres-config-demo]}" {[dash]}-new-options=" -c config_file={[postgres-config-demo-upgrade]}"' Upgrade Complete

    Configure the new cluster settings and port.

    Configure <postgres/> '{[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} archive-push %p' on {[wal-level]} 3 '*' '' 5432

    Update the configuration on all systems to point to the new cluster.

    Upgrade the <br-option>pg1-path</br-option> {[pg-path-upgrade]} Upgrade the <br-option>pg-path</br-option> {[pg-path-upgrade]} Upgrade <br-option>pg1-path</br-option> and <br-option>pg2-path</br-option>, disable backup from standby {[pg-path-upgrade]} {[pg-path-upgrade]} n Copy hba configuration cp {[postgres-hba-demo]} {[postgres-hba-demo-upgrade]}

    Before starting the new cluster, the stanza-upgrade command must be run on the server where the repository is located.

    Upgrade the stanza {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-no-online {[dash]}-log-level-console=info stanza-upgrade completed successfully

    Start the new cluster and confirm it is successfully installed.

    Start new cluster {[pg-cluster-start-upgrade]}

    Test configuration using the check command.

    Check configuration {[pg-cluster-check-upgrade]} {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} check

    Remove the old cluster.

    Remove old cluster pg_dropcluster {[pg-version]} {[postgres-cluster-demo]} rm -rf {[pg-path]}

    Install the new binaries on the standby and create the cluster.

    Remove old cluster and create the new cluster pg_dropcluster {[pg-version]} {[postgres-cluster-demo]} rm -rf {[pg-path]} mkdir -p -m 700 {[pg-bin-upgrade-path]} {[pg-cluster-create-upgrade]}

    Run the check on the repository host. The warning regarding the standby being down is expected since the standby cluster is down. Running this command demonstrates that the repository server is aware of the standby and is configured properly for the primary server.

    Check configuration {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} check

    Run a full backup on the new cluster and then restore the standby from the backup. The backup type will automatically be changed to full if incr or diff is requested.

    Run a full backup {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-type=full backup Restore the {[postgres-cluster-demo]} standby cluster {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-delta --type=standby restore {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} --type=standby restore Configure <postgres/> on Start <postgres/> and check the <backrest/> configuration {[pg-cluster-start-upgrade]} {[pg-cluster-wait]} {[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} check

    Backup from standby can be enabled now that the standby is restored.

    Reenable backup from standby y
    pgbackrest-release-2.24/lib/000077500000000000000000000000001362531507100157555ustar00rootroot00000000000000pgbackrest-release-2.24/lib/pgBackRest/000077500000000000000000000000001362531507100200025ustar00rootroot00000000000000pgbackrest-release-2.24/lib/pgBackRest/Archive/000077500000000000000000000000001362531507100213635ustar00rootroot00000000000000pgbackrest-release-2.24/lib/pgBackRest/Archive/Common.pm000066400000000000000000000044061362531507100231550ustar00rootroot00000000000000#################################################################################################################################### # ARCHIVE COMMON MODULE #################################################################################################################################### package pgBackRest::Archive::Common; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Config; use Exporter qw(import); our @EXPORT = qw(); use Fcntl qw(SEEK_CUR O_RDONLY); use File::Basename qw(dirname); use pgBackRest::DbVersion; use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::Common::Wait; use pgBackRest::Config::Config; use pgBackRest::Protocol::Storage::Helper; use pgBackRest::Storage::Helper; #################################################################################################################################### # RegEx constants #################################################################################################################################### use constant REGEX_ARCHIVE_DIR_DB_VERSION => '^[0-9]+(\.[0-9]+)*-[0-9]+$'; push @EXPORT, qw(REGEX_ARCHIVE_DIR_DB_VERSION); use constant REGEX_ARCHIVE_DIR_WAL => '^[0-F]{16}$'; push @EXPORT, qw(REGEX_ARCHIVE_DIR_WAL); #################################################################################################################################### # PostgreSQL WAL system id offset #################################################################################################################################### use constant PG_WAL_SYSTEM_ID_OFFSET_GTE_93 => 12 + $Config{ptrsize}; push @EXPORT, qw(PG_WAL_SYSTEM_ID_OFFSET_GTE_93); use constant PG_WAL_SYSTEM_ID_OFFSET_LT_93 => 12; push @EXPORT, qw(PG_WAL_SYSTEM_ID_OFFSET_LT_93); #################################################################################################################################### # WAL segment size #################################################################################################################################### use constant PG_WAL_SEGMENT_SIZE => 16777216; push @EXPORT, qw(PG_WAL_SEGMENT_SIZE); 1; pgbackrest-release-2.24/lib/pgBackRest/Archive/Info.pm000066400000000000000000000545501362531507100226250ustar00rootroot00000000000000#################################################################################################################################### # ARCHIVE INFO MODULE # # The archive.info file is created when archiving begins. It is located under the stanza directory. The file contains information # regarding the stanza database version, database WAL segment system id and other information to ensure that archiving is being # performed on the proper database. #################################################################################################################################### package pgBackRest::Archive::Info; use parent 'pgBackRest::Common::Ini'; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname basename); use pgBackRest::Archive::Common; use pgBackRest::Common::Exception; use pgBackRest::Config::Config; use pgBackRest::Common::Ini; use pgBackRest::Common::Log; use pgBackRest::DbVersion; use pgBackRest::InfoCommon; use pgBackRest::Manifest; use pgBackRest::Protocol::Storage::Helper; use pgBackRest::Storage::Base; use pgBackRest::Storage::Helper; #################################################################################################################################### # File/path constants #################################################################################################################################### use constant ARCHIVE_INFO_FILE => 'archive.info'; push @EXPORT, qw(ARCHIVE_INFO_FILE); #################################################################################################################################### # Archive info constants #################################################################################################################################### use constant INFO_ARCHIVE_SECTION_DB => INFO_BACKUP_SECTION_DB; push @EXPORT, qw(INFO_ARCHIVE_SECTION_DB); use constant INFO_ARCHIVE_SECTION_DB_HISTORY => INFO_BACKUP_SECTION_DB_HISTORY; push @EXPORT, qw(INFO_ARCHIVE_SECTION_DB_HISTORY); use constant INFO_ARCHIVE_KEY_DB_VERSION => MANIFEST_KEY_DB_VERSION; push @EXPORT, qw(INFO_ARCHIVE_KEY_DB_VERSION); use constant INFO_ARCHIVE_KEY_DB_ID => MANIFEST_KEY_DB_ID; push @EXPORT, qw(INFO_ARCHIVE_KEY_DB_ID); use constant INFO_ARCHIVE_KEY_DB_SYSTEM_ID => MANIFEST_KEY_SYSTEM_ID; push @EXPORT, qw(INFO_ARCHIVE_KEY_DB_SYSTEM_ID); #################################################################################################################################### # Global variables #################################################################################################################################### my $strArchiveInfoMissingMsg = ARCHIVE_INFO_FILE . " does not exist but is required to push/get WAL segments\n" . "HINT: is archive_command configured in postgresql.conf?\n" . "HINT: has a stanza-create been performed?\n" . "HINT: use --no-archive-check to disable archive checks during backup if you have an alternate archiving scheme."; #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Class name # Assign function parameters, defaults, and log debug info my ( $strOperation, $strArchiveClusterPath, # Archive cluster path $bRequired, # Is archive info required? $bLoad, # Should the file attempt to be loaded? $bIgnoreMissing, # Don't error on missing files $strCipherPassSub, # Passphrase to encrypt the subsequent archive files if repo is encrypted ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'strArchiveClusterPath'}, {name => 'bRequired', default => true}, {name => 'bLoad', optional => true, default => true}, {name => 'bIgnoreMissing', optional => true, default => false}, {name => 'strCipherPassSub', optional => true}, ); # Build the archive info path/file name my $strArchiveInfoFile = "${strArchiveClusterPath}/" . ARCHIVE_INFO_FILE; my $self = {}; my $iResult = 0; my $strResultMessage; # Init object and store variables eval { $self = $class->SUPER::new($strArchiveInfoFile, {bLoad => $bLoad, bIgnoreMissing => $bIgnoreMissing, oStorage => storageRepo(), strCipherPass => storageRepo()->cipherPassUser(), strCipherPassSub => $strCipherPassSub}); return true; } or do { # Capture error information $iResult = exceptionCode($EVAL_ERROR); $strResultMessage = exceptionMessage($EVAL_ERROR); }; if ($iResult != 0) { # If the file does not exist but is required to exist, then error # The archive info is only allowed not to exist when running a stanza-create on a new install if ($iResult == ERROR_FILE_MISSING) { if ($bRequired) { confess &log(ERROR, $strArchiveInfoMissingMsg, ERROR_FILE_MISSING); } } elsif ($iResult == ERROR_CRYPTO && $strResultMessage =~ "^unable to flush") { confess &log(ERROR, "unable to parse '$strArchiveInfoFile'\nHINT: is or was the repo encrypted?", $iResult); } else { confess $EVAL_ERROR; } } $self->{strArchiveClusterPath} = $strArchiveClusterPath; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # check # # Check archive info file and make sure it is compatible with the current version of the database for the stanza. If the file does # not exist an error will occur. #################################################################################################################################### sub check { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strDbVersion, $ullDbSysId, $bRequired, ) = logDebugParam ( __PACKAGE__ . '->check', \@_, {name => 'strDbVersion'}, {name => 'ullDbSysId'}, {name => 'bRequired', default => true}, ); # ??? remove bRequired after stanza-upgrade if ($bRequired) { # Confirm the info file exists with the DB section $self->confirmExists(); } my $strError = undef; if (!$self->test(INFO_ARCHIVE_SECTION_DB, INFO_ARCHIVE_KEY_DB_VERSION, undef, $strDbVersion)) { $strError = "WAL segment version ${strDbVersion} does not match archive version " . $self->get(INFO_ARCHIVE_SECTION_DB, INFO_ARCHIVE_KEY_DB_VERSION); } if (!$self->test(INFO_ARCHIVE_SECTION_DB, INFO_ARCHIVE_KEY_DB_SYSTEM_ID, undef, $ullDbSysId)) { $strError = (defined($strError) ? ($strError . "\n") : "") . "WAL segment system-id ${ullDbSysId} does not match archive system-id " . $self->get(INFO_ARCHIVE_SECTION_DB, INFO_ARCHIVE_KEY_DB_SYSTEM_ID); } if (defined($strError)) { confess &log(ERROR, "${strError}\nHINT: are you archiving to the correct stanza?", ERROR_ARCHIVE_MISMATCH); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strArchiveId', value => $self->archiveId()} ); } #################################################################################################################################### # archiveId # # Get the archive id which is a combination of the DB version and the db-id setting (e.g. 9.4-1) #################################################################################################################################### sub archiveId { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strDbVersion, $ullDbSysId, ) = logDebugParam ( __PACKAGE__ . '->archiveId', \@_, {name => 'strDbVersion', optional => true}, {name => 'ullDbSysId', optional => true}, ); my $strArchiveId = undef; # If neither optional version and system-id are passed then set the archive id to the current one if (!defined($strDbVersion) && !defined($ullDbSysId)) { $strArchiveId = $self->get(INFO_ARCHIVE_SECTION_DB, INFO_ARCHIVE_KEY_DB_VERSION) . "-" . $self->get(INFO_ARCHIVE_SECTION_DB, INFO_ARCHIVE_KEY_DB_ID); } # If both the optional version and system-id are passed elsif (defined($strDbVersion) && defined($ullDbSysId)) { # Get the newest archiveId for the version/system-id passed $strArchiveId = ($self->archiveIdList($strDbVersion, $ullDbSysId))[0]; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strArchiveId', value => $strArchiveId} ); } #################################################################################################################################### # archiveIdList # # Get a sorted list of the archive ids for the db-version and db-system-id passed. #################################################################################################################################### sub archiveIdList { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strDbVersion, $ullDbSysId, ) = logDebugParam ( __PACKAGE__ . '->archiveIdList', \@_, {name => 'strDbVersion'}, {name => 'ullDbSysId'}, ); my @stryArchiveId; # Get the version and system-id for all known databases my $hDbList = $self->dbHistoryList(); foreach my $iDbHistoryId (sort {$a <=> $b} keys %$hDbList) { # If the version and system-id match then construct the archive id so that the constructed array has the newest match first if (($hDbList->{$iDbHistoryId}{&INFO_DB_VERSION} eq $strDbVersion) && ($hDbList->{$iDbHistoryId}{&INFO_SYSTEM_ID} eq $ullDbSysId)) { unshift(@stryArchiveId, $strDbVersion . "-" . $iDbHistoryId); } } # If the archive id has still not been found, then error if (@stryArchiveId == 0) { confess &log( ERROR, "unable to retrieve the archive id for database version '$strDbVersion' and system-id '$ullDbSysId'", ERROR_ARCHIVE_MISMATCH); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'stryArchiveId', value => \@stryArchiveId} ); } #################################################################################################################################### # create # # Creates the archive.info file. WARNING - this function should only be called from stanza-create or tests. #################################################################################################################################### sub create { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strDbVersion, $ullDbSysId, $bSave, ) = logDebugParam ( __PACKAGE__ . '->create', \@_, {name => 'strDbVersion'}, {name => 'ullDbSysId'}, {name => 'bSave', default => true}, ); # Fill db section and db history section $self->dbSectionSet($strDbVersion, $ullDbSysId, $self->dbHistoryIdGet(false)); if ($bSave) { $self->save(); } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # reconstruct # # Reconstruct the info file from the existing directory and files #################################################################################################################################### sub reconstruct { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strCurrentDbVersion, $ullCurrentDbSysId, ) = logDebugParam ( __PACKAGE__ . '->reconstruct', \@_, {name => 'strCurrentDbVersion'}, {name => 'ullCurrentDbSysId'}, ); my $strInvalidFileStructure = undef; my @stryArchiveId = storageRepo()->list( $self->{strArchiveClusterPath}, {strExpression => REGEX_ARCHIVE_DIR_DB_VERSION, bIgnoreMissing => true}); my %hDbHistoryVersion; # Get the db-version and db-id (history id) from the upper level directory names, e.g. 9.4-1 foreach my $strArchiveId (@stryArchiveId) { my ($strDbVersion, $iDbHistoryId) = split("-", $strArchiveId); $hDbHistoryVersion{$iDbHistoryId} = $strDbVersion; } # Loop through the DBs in the order they were created as indicated by the db-id so that the last one is set in the db section foreach my $iDbHistoryId (sort {$a <=> $b} keys %hDbHistoryVersion) { my $strDbVersion = $hDbHistoryVersion{$iDbHistoryId}; my $strVersionDir = $strDbVersion . "-" . $iDbHistoryId; # Get the name of the first archive directory my $strArchiveDir = (storageRepo()->list( $self->{strArchiveClusterPath} . "/${strVersionDir}", {strExpression => REGEX_ARCHIVE_DIR_WAL, bIgnoreMissing => true}))[0]; # Continue if any file structure or missing files info if (!defined($strArchiveDir)) { $strInvalidFileStructure = "found empty directory " . $self->{strArchiveClusterPath} . "/${strVersionDir}"; next; } # ??? Should probably make a function in ArchiveCommon my $strArchiveFile = (storageRepo()->list( $self->{strArchiveClusterPath} . "/${strVersionDir}/${strArchiveDir}", {strExpression => "^[0-F]{24}(\\.partial){0,1}(-[0-f]+){0,1}(\\." . COMPRESS_EXT . "){0,1}\$", bIgnoreMissing => true}))[0]; # Continue if any file structure or missing files info if (!defined($strArchiveFile)) { $strInvalidFileStructure = "found empty directory " . $self->{strArchiveClusterPath} . "/${strVersionDir}/${strArchiveDir}"; next; } # Get the full path for the file my $strArchiveFilePath = $self->{strArchiveClusterPath}."/${strVersionDir}/${strArchiveDir}/${strArchiveFile}"; # Get the db-system-id from the WAL file depending on the version of postgres my $iSysIdOffset = $strDbVersion >= PG_VERSION_93 ? PG_WAL_SYSTEM_ID_OFFSET_GTE_93 : PG_WAL_SYSTEM_ID_OFFSET_LT_93; # Error if the file encryption setting is not valid for the repo if (!storageRepo()->encryptionValid(storageRepo()->encrypted($strArchiveFilePath))) { confess &log(ERROR, "encryption incompatible for '$strArchiveFilePath'" . "\nHINT: is or was the repo encrypted?", ERROR_CRYPTO); } # If the file is encrypted, then the passphrase from the info file is required, else getEncryptionKeySub returns undefined my $oFileIo = storageRepo()->openRead( $strArchiveFilePath, {rhyFilter => $strArchiveFile =~ ('\.' . COMPRESS_EXT . '$') ? [{strClass => STORAGE_FILTER_GZIP, rxyParam => [STORAGE_DECOMPRESS, false]}] : undef, strCipherPass => $self->cipherPassSub()}); $oFileIo->open(); my $tBlock; $oFileIo->read(\$tBlock, 512); $oFileIo->close(); # Get the required data from the file that was pulled into scalar $tBlock my ($iMagic, $iFlag, $junk, $ullDbSysId) = unpack('SSa' . $iSysIdOffset . 'Q', $tBlock); if (!defined($ullDbSysId)) { confess &log(ERROR, "unable to read database system identifier", ERROR_FILE_READ); } # Fill db section and db history section $self->dbSectionSet($strDbVersion, $ullDbSysId, $iDbHistoryId); } # If the DB section does not exist, then there were no valid directories to read from so create the DB and History sections. if (!$self->test(INFO_ARCHIVE_SECTION_DB)) { $self->create($strCurrentDbVersion, $ullCurrentDbSysId, false); } # Else if it does exist but does not match the current DB, then update the DB section else { # Turn off console logging to control when to display the error logDisable(); eval { $self->check($strCurrentDbVersion, $ullCurrentDbSysId, false); logEnable(); return true; } or do { # Reset the console logging logEnable(); # Confess unhandled errors confess $EVAL_ERROR if (exceptionCode($EVAL_ERROR) != ERROR_ARCHIVE_MISMATCH); # Update the DB section if it does not match the current database $self->dbSectionSet($strCurrentDbVersion, $ullCurrentDbSysId, $self->dbHistoryIdGet(false)+1); }; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strInvalidFileStructure', value => $strInvalidFileStructure} ); } #################################################################################################################################### # dbHistoryIdGet # # Get the db history ID #################################################################################################################################### sub dbHistoryIdGet { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $bFileRequired, ) = logDebugParam ( __PACKAGE__ . '->dbHistoryIdGet', \@_, {name => 'bFileRequired', default => true}, ); # Confirm the info file exists if it is required if ($bFileRequired) { $self->confirmExists(); } # If the DB section does not exist, initialize the history to one, else return the latest ID my $iDbHistoryId = (!$self->test(INFO_ARCHIVE_SECTION_DB)) ? 1 : $self->numericGet(INFO_ARCHIVE_SECTION_DB, INFO_ARCHIVE_KEY_DB_ID); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'iDbHistoryId', value => $iDbHistoryId} ); } #################################################################################################################################### # dbHistoryList # # Get the data from the db history section. #################################################################################################################################### sub dbHistoryList { my $self = shift; my ( $strOperation, ) = logDebugParam ( __PACKAGE__ . '->dbHistoryList', ); my %hDbHash; foreach my $iHistoryId ($self->keys(INFO_ARCHIVE_SECTION_DB_HISTORY)) { $hDbHash{$iHistoryId}{&INFO_DB_VERSION} = $self->get(INFO_ARCHIVE_SECTION_DB_HISTORY, $iHistoryId, INFO_ARCHIVE_KEY_DB_VERSION); $hDbHash{$iHistoryId}{&INFO_SYSTEM_ID} = $self->get(INFO_ARCHIVE_SECTION_DB_HISTORY, $iHistoryId, INFO_ARCHIVE_KEY_DB_ID); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'hDbHash', value => \%hDbHash} ); } #################################################################################################################################### # dbSectionSet # # Set the db and db:history sections. #################################################################################################################################### sub dbSectionSet { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strDbVersion, $ullDbSysId, $iDbHistoryId, ) = logDebugParam ( __PACKAGE__ . '->dbSectionSet', \@_, {name => 'strDbVersion', trace => true}, {name => 'ullDbSysId', trace => true}, {name => 'iDbHistoryId', trace => true} ); # Fill db section $self->numericSet(INFO_ARCHIVE_SECTION_DB, INFO_ARCHIVE_KEY_DB_SYSTEM_ID, undef, $ullDbSysId); # Force the version to a string since newer versions of JSON::PP lose track of the fact that it is one $self->set(INFO_ARCHIVE_SECTION_DB, INFO_ARCHIVE_KEY_DB_VERSION, undef, $strDbVersion . ''); $self->numericSet(INFO_ARCHIVE_SECTION_DB, INFO_ARCHIVE_KEY_DB_ID, undef, $iDbHistoryId); # Fill db history $self->numericSet(INFO_ARCHIVE_SECTION_DB_HISTORY, $iDbHistoryId, INFO_ARCHIVE_KEY_DB_ID, $ullDbSysId); # Force the version to a string since newer versions of JSON::PP lose track of the fact that it is one $self->set(INFO_ARCHIVE_SECTION_DB_HISTORY, $iDbHistoryId, INFO_ARCHIVE_KEY_DB_VERSION, $strDbVersion . ''); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # confirmExists # # Ensure that the archive.info file and the db section exist. #################################################################################################################################### sub confirmExists { my $self = shift; # Confirm the file exists and the DB section is filled out if (!$self->test(INFO_ARCHIVE_SECTION_DB) || !$self->{bExists}) { confess &log(ERROR, $strArchiveInfoMissingMsg, ERROR_FILE_MISSING); } } 1; pgbackrest-release-2.24/lib/pgBackRest/Backup/000077500000000000000000000000001362531507100212075ustar00rootroot00000000000000pgbackrest-release-2.24/lib/pgBackRest/Backup/Common.pm000066400000000000000000000202641362531507100230010ustar00rootroot00000000000000#################################################################################################################################### # BACKUP COMMON MODULE #################################################################################################################################### package pgBackRest::Backup::Common; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use File::Basename; use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Common::Wait; use pgBackRest::Config::Config; use pgBackRest::Protocol::Storage::Helper; use pgBackRest::Storage::Helper; use pgBackRest::Manifest; #################################################################################################################################### # Latest backup link constant #################################################################################################################################### use constant LINK_LATEST => 'latest'; push @EXPORT, qw(LINK_LATEST); #################################################################################################################################### # backupRegExpGet # # Generate a regexp depending on the backups that need to be found. #################################################################################################################################### sub backupRegExpGet { # Assign function parameters, defaults, and log debug info my ( $strOperation, $bFull, $bDifferential, $bIncremental, $bAnchor ) = logDebugParam ( __PACKAGE__ . '::backupRegExpGet', \@_, {name => 'bFull', default => false}, {name => 'bDifferential', default => false}, {name => 'bIncremental', default => false}, {name => 'bAnchor', default => true} ); # One of the types must be selected if (!($bFull || $bDifferential || $bIncremental)) { confess &log(ASSERT, 'at least one backup type must be selected'); } # Standard regexp to match date and time formatting my $strDateTimeRegExp = "[0-9]{8}\\-[0-9]{6}"; # Start the expression with the anchor if requested, date/time regexp and full backup indicator my $strRegExp = ($bAnchor ? '^' : '') . $strDateTimeRegExp . 'F'; # Add the diff and/or incr expressions if requested if ($bDifferential || $bIncremental) { # If full requested then diff/incr is optional if ($bFull) { $strRegExp .= "(\\_"; } # Else diff/incr is required else { $strRegExp .= "\\_"; } # Append date/time regexp for diff/incr $strRegExp .= $strDateTimeRegExp; # Filter on both diff/incr if ($bDifferential && $bIncremental) { $strRegExp .= '(D|I)'; } # Else just diff elsif ($bDifferential) { $strRegExp .= 'D'; } # Else just incr else { $strRegExp .= 'I'; } # If full requested then diff/incr is optional if ($bFull) { $strRegExp .= '){0,1}'; } } # Append the end anchor if requested $strRegExp .= $bAnchor ? "\$" : ''; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strRegExp', value => $strRegExp} ); } push @EXPORT, qw(backupRegExpGet); #################################################################################################################################### # backupLabelFormat # # Format the label for a backup. #################################################################################################################################### sub backupLabelFormat { # Assign function parameters, defaults, and log debug info my ( $strOperation, $strType, $strBackupLabelLast, $lTimestampStart ) = logDebugParam ( __PACKAGE__ . '::backupLabelFormat', \@_, {name => 'strType', trace => true}, {name => 'strBackupLabelLast', required => false, trace => true}, {name => 'lTimestampTart', trace => true} ); # Full backup label my $strBackupLabel; if ($strType eq CFGOPTVAL_BACKUP_TYPE_FULL) { # Last backup label must not be defined if (defined($strBackupLabelLast)) { confess &log(ASSERT, "strBackupLabelLast must not be defined when strType = '${strType}'"); } # Format the timestamp and add the full indicator $strBackupLabel = timestampFileFormat(undef, $lTimestampStart) . 'F'; } # Else diff or incr label else { # Last backup label must be defined if (!defined($strBackupLabelLast)) { confess &log(ASSERT, "strBackupLabelLast must be defined when strType = '${strType}'"); } # Get the full backup portion of the last backup label $strBackupLabel = substr($strBackupLabelLast, 0, 16); # Format the timestamp $strBackupLabel .= '_' . timestampFileFormat(undef, $lTimestampStart); # Add the diff indicator if ($strType eq CFGOPTVAL_BACKUP_TYPE_DIFF) { $strBackupLabel .= 'D'; } # Else incr indicator else { $strBackupLabel .= 'I'; } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strBackupLabel', value => $strBackupLabel, trace => true} ); } push @EXPORT, qw(backupLabelFormat); #################################################################################################################################### # backupLabel # # Get unique backup label. #################################################################################################################################### sub backupLabel { # Assign function parameters, defaults, and log debug info my ( $strOperation, $oStorageRepo, $strType, $strBackupLabelLast, $lTimestampStart ) = logDebugParam ( __PACKAGE__ . '::backupLabelFormat', \@_, {name => 'oStorageRepo', trace => true}, {name => 'strType', trace => true}, {name => 'strBackupLabelLast', required => false, trace => true}, {name => 'lTimestampStart', trace => true} ); # Create backup label my $strBackupLabel = backupLabelFormat($strType, $strBackupLabelLast, $lTimestampStart); # Make sure that the timestamp has not already been used by a prior backup. This is unlikely for online backups since there is # already a wait after the manifest is built but it's still possible if the remote and local systems don't have synchronized # clocks. In practice this is most useful for making offline testing faster since it allows the wait after manifest build to # be skipped by dealing with any backup label collisions here. if ($oStorageRepo->list( STORAGE_REPO_BACKUP, {strExpression => ($strType eq CFGOPTVAL_BACKUP_TYPE_FULL ? '^' : '_') . timestampFileFormat(undef, $lTimestampStart) . ($strType eq CFGOPTVAL_BACKUP_TYPE_FULL ? 'F' : '(D|I)$')}) || $oStorageRepo->list( STORAGE_REPO_BACKUP . qw{/} . PATH_BACKUP_HISTORY . '/' . timestampFormat('%4d', $lTimestampStart), {strExpression => ($strType eq CFGOPTVAL_BACKUP_TYPE_FULL ? '^' : '_') . timestampFileFormat(undef, $lTimestampStart) . ($strType eq CFGOPTVAL_BACKUP_TYPE_FULL ? 'F' : '(D|I)\.manifest\.' . COMPRESS_EXT . qw{$}), bIgnoreMissing => true})) { waitRemainder(); $strBackupLabel = backupLabelFormat($strType, $strBackupLabelLast, time()); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strBackupLabel', value => $strBackupLabel, trace => true} ); } push @EXPORT, qw(backupLabel); 1; pgbackrest-release-2.24/lib/pgBackRest/Backup/Info.pm000066400000000000000000001223401362531507100224420ustar00rootroot00000000000000#################################################################################################################################### # BACKUP INFO MODULE #################################################################################################################################### package pgBackRest::Backup::Info; use parent 'pgBackRest::Common::Ini'; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname basename); use File::stat; use pgBackRest::Archive::Info; use pgBackRest::Backup::Common; use pgBackRest::Common::Exception; use pgBackRest::Common::Ini; use pgBackRest::Common::Log; use pgBackRest::Config::Config; use pgBackRest::InfoCommon; use pgBackRest::Manifest; use pgBackRest::Protocol::Storage::Helper; use pgBackRest::Storage::Helper; #################################################################################################################################### # File/path constants #################################################################################################################################### use constant FILE_BACKUP_INFO => 'backup.info'; push @EXPORT, qw(FILE_BACKUP_INFO); #################################################################################################################################### # Backup info constants #################################################################################################################################### use constant INFO_BACKUP_SECTION_BACKUP => MANIFEST_SECTION_BACKUP; push @EXPORT, qw(INFO_BACKUP_SECTION_BACKUP); use constant INFO_BACKUP_SECTION_BACKUP_CURRENT => INFO_BACKUP_SECTION_BACKUP . ':current'; push @EXPORT, qw(INFO_BACKUP_SECTION_BACKUP_CURRENT); use constant INFO_BACKUP_KEY_ARCHIVE_CHECK => MANIFEST_KEY_ARCHIVE_CHECK; push @EXPORT, qw(INFO_BACKUP_KEY_ARCHIVE_CHECK); use constant INFO_BACKUP_KEY_ARCHIVE_COPY => MANIFEST_KEY_ARCHIVE_COPY; push @EXPORT, qw(INFO_BACKUP_KEY_ARCHIVE_COPY); use constant INFO_BACKUP_KEY_ARCHIVE_START => MANIFEST_KEY_ARCHIVE_START; push @EXPORT, qw(INFO_BACKUP_KEY_ARCHIVE_START); use constant INFO_BACKUP_KEY_ARCHIVE_STOP => MANIFEST_KEY_ARCHIVE_STOP; push @EXPORT, qw(INFO_BACKUP_KEY_ARCHIVE_STOP); use constant INFO_BACKUP_KEY_BACKUP_STANDBY => MANIFEST_KEY_BACKUP_STANDBY; push @EXPORT, qw(INFO_BACKUP_KEY_BACKUP_STANDBY); use constant INFO_BACKUP_KEY_BACKUP_REPO_SIZE => 'backup-info-repo-size'; push @EXPORT, qw(INFO_BACKUP_KEY_BACKUP_REPO_SIZE); use constant INFO_BACKUP_KEY_BACKUP_REPO_SIZE_DELTA => 'backup-info-repo-size-delta'; push @EXPORT, qw(INFO_BACKUP_KEY_BACKUP_REPO_SIZE_DELTA); use constant INFO_BACKUP_KEY_BACKUP_SIZE => 'backup-info-size'; push @EXPORT, qw(INFO_BACKUP_KEY_BACKUP_SIZE); use constant INFO_BACKUP_KEY_BACKUP_SIZE_DELTA => 'backup-info-size-delta'; push @EXPORT, qw(INFO_BACKUP_KEY_BACKUP_SIZE_DELTA); use constant INFO_BACKUP_KEY_CATALOG => MANIFEST_KEY_CATALOG; push @EXPORT, qw(INFO_BACKUP_KEY_CATALOG); use constant INFO_BACKUP_KEY_CONTROL => MANIFEST_KEY_CONTROL; push @EXPORT, qw(INFO_BACKUP_KEY_CONTROL); use constant INFO_BACKUP_KEY_COMPRESS => MANIFEST_KEY_COMPRESS; push @EXPORT, qw(INFO_BACKUP_KEY_COMPRESS); use constant INFO_BACKUP_KEY_CHECKSUM_PAGE => MANIFEST_KEY_CHECKSUM_PAGE; push @EXPORT, qw(INFO_BACKUP_KEY_CHECKSUM_PAGE); use constant INFO_BACKUP_KEY_DB_VERSION => MANIFEST_KEY_DB_VERSION; push @EXPORT, qw(INFO_BACKUP_KEY_DB_VERSION); use constant INFO_BACKUP_KEY_FORMAT => INI_KEY_FORMAT; push @EXPORT, qw(INFO_BACKUP_KEY_FORMAT); use constant INFO_BACKUP_KEY_HARDLINK => MANIFEST_KEY_HARDLINK; push @EXPORT, qw(INFO_BACKUP_KEY_HARDLINK); use constant INFO_BACKUP_KEY_HISTORY_ID => MANIFEST_KEY_DB_ID; push @EXPORT, qw(INFO_BACKUP_KEY_HISTORY_ID); use constant INFO_BACKUP_KEY_LABEL => MANIFEST_KEY_LABEL; push @EXPORT, qw(INFO_BACKUP_KEY_LABEL); use constant INFO_BACKUP_KEY_PRIOR => MANIFEST_KEY_PRIOR; push @EXPORT, qw(INFO_BACKUP_KEY_PRIOR); use constant INFO_BACKUP_KEY_REFERENCE => 'backup-reference'; push @EXPORT, qw(INFO_BACKUP_KEY_REFERENCE); use constant INFO_BACKUP_KEY_ONLINE => MANIFEST_KEY_ONLINE; push @EXPORT, qw(INFO_BACKUP_KEY_ONLINE); use constant INFO_BACKUP_KEY_SYSTEM_ID => MANIFEST_KEY_SYSTEM_ID; push @EXPORT, qw(INFO_BACKUP_KEY_SYSTEM_ID); use constant INFO_BACKUP_KEY_TIMESTAMP_START => MANIFEST_KEY_TIMESTAMP_START; push @EXPORT, qw(INFO_BACKUP_KEY_TIMESTAMP_START); use constant INFO_BACKUP_KEY_TIMESTAMP_STOP => MANIFEST_KEY_TIMESTAMP_STOP; push @EXPORT, qw(INFO_BACKUP_KEY_TIMESTAMP_STOP); use constant INFO_BACKUP_KEY_TYPE => MANIFEST_KEY_TYPE; push @EXPORT, qw(INFO_BACKUP_KEY_TYPE); use constant INFO_BACKUP_KEY_VERSION => INI_KEY_VERSION; push @EXPORT, qw(INFO_BACKUP_KEY_VERSION); #################################################################################################################################### # Global variables #################################################################################################################################### my $strBackupInfoMissingMsg = FILE_BACKUP_INFO . " does not exist and is required to perform a backup.\n" . "HINT: has a stanza-create been performed?"; #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strBackupClusterPath, $bValidate, $bRequired, $oStorage, $bLoad, # Should the file attemp to be loaded? $bIgnoreMissing, # Don't error on missing files $strCipherPassSub, # Generated passphrase to encrypt manifest files if the repo is encrypted ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'strBackupClusterPath'}, {name => 'bValidate', default => true}, {name => 'bRequired', default => true}, {name => 'oStorage', optional => true, default => storageRepo()}, {name => 'bLoad', optional => true, default => true}, {name => 'bIgnoreMissing', optional => true, default => false}, {name => 'strCipherPassSub', optional => true}, ); # Build the backup info path/file name my $strBackupInfoFile = "${strBackupClusterPath}/" . FILE_BACKUP_INFO; my $self = {}; my $iResult = 0; my $strResultMessage; # Init object and store variables eval { $self = $class->SUPER::new($strBackupInfoFile, {bLoad => $bLoad, bIgnoreMissing => $bIgnoreMissing, oStorage => $oStorage, strCipherPass => $oStorage->cipherPassUser(), strCipherPassSub => $strCipherPassSub}); return true; } or do { # Capture error information $iResult = exceptionCode($EVAL_ERROR); $strResultMessage = exceptionMessage($EVAL_ERROR); }; if ($iResult != 0) { # If the backup info file does not exist and is required, then throw an error # The backup info is only allowed not to exist when running a stanza-create on a new install if ($iResult == ERROR_FILE_MISSING) { if ($bRequired) { confess &log(ERROR, "${strBackupClusterPath}/$strBackupInfoMissingMsg", ERROR_FILE_MISSING); } } elsif ($iResult == ERROR_CRYPTO && $strResultMessage =~ "^unable to flush") { confess &log(ERROR, "unable to parse '$strBackupInfoFile'\nHINT: is or was the repo encrypted?", $iResult); } else { confess $EVAL_ERROR; } } $self->{strBackupClusterPath} = $strBackupClusterPath; $self->{oStorage} = $oStorage; # Validate the backup info if ($bValidate) { $self->validate(); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # validate # # Confirm the file exists and reconstruct as necessary. #################################################################################################################################### sub validate { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->validate'); # Confirm the info file exists with the DB section $self->confirmExists(); $self->reconstruct(); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # reconstruct # # Compare the backup info against the actual backups in the repository. Reconstruct the file based on manifests missing or no # longer valid. #################################################################################################################################### sub reconstruct { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $bSave, $bRequired, # If false then must be creating or reconstructing so the DB info must be supplied $strDbVersion, $ullDbSysId, $iControlVersion, $iCatalogVersion, ) = logDebugParam ( __PACKAGE__ . '->reconstruct', \@_, {name => 'bSave', default => true}, {name => 'bRequired', default => true}, {name => 'strDbVersion', required => false}, {name => 'ullDbSysId', required => false}, {name => 'iControlVersion', required => false}, {name => 'iCatalogVersion', required => false}, ); # Check for backups that are not in FILE_BACKUP_INFO foreach my $strBackup ($self->{oStorage}->list( $self->{strBackupClusterPath}, {strExpression => backupRegExpGet(true, true, true)})) { my $strManifestFile = "$self->{strBackupClusterPath}/${strBackup}/" . FILE_MANIFEST; # ??? Check for and move history files that were not moved before and maybe don't consider it to be an error when they # can't be moved. This would also be true for the first move attempt in Backup->process(); if (!$self->current($strBackup) && $self->{oStorage}->exists($strManifestFile)) { my $oManifest = pgBackRest::Manifest->new($strManifestFile, {strCipherPass => ($self->{oStorage}->encrypted($strManifestFile)) ? $self->cipherPassSub() : undef}); # If we are reconstructing, then we need to be sure this db-id and version is in the history section. Also if it # has a db-id greater than anything in the history section, then add it to the db section. if (!$bRequired) { my $hDbList = $self->dbHistoryList(); my $iDbId = $oManifest->get(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_DB_ID); my $iDbIdMax = 0; my $ullDbSysId = $oManifest->get(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_SYSTEM_ID); my $strDbVersion = $oManifest->get(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_DB_VERSION); # If this is the max history id then set the db section foreach my $iDbHistoryId (keys %{$hDbList}) { # If the current history ID is greater than the running max, then set it to the current id if ($iDbHistoryId > $iDbIdMax) { $iDbIdMax = $iDbHistoryId; } } if ($iDbId >= $iDbIdMax) { $self->dbSectionSet($strDbVersion, $oManifest->get(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_CONTROL), $oManifest->get(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_CATALOG), $ullDbSysId, $iDbId); } } &log(WARN, "backup ${strBackup} found in repository added to " . FILE_BACKUP_INFO); $self->add($oManifest, $bSave, $bRequired); } } # If reconstructing, make sure the DB section is correct if (!$bRequired) { # If any database info is missing, then assert if (!defined($strDbVersion) || !defined($ullDbSysId) || !defined($iControlVersion) || !defined($iCatalogVersion)) { confess &log(ASSERT, "backup info cannot be reconstructed without database information"); } # If the DB section does not exist then create the db and history section elsif (!$self->test(INFO_BACKUP_SECTION_DB)) { $self->create($strDbVersion, $ullDbSysId, $iControlVersion, $iCatalogVersion, $bSave); } # Else update the DB section if it does not match the current database else { # Turn off console logging to control when to display the error logDisable(); eval { $self->check($strDbVersion, $iControlVersion, $iCatalogVersion, $ullDbSysId, $bRequired); logEnable(); return true; } or do { # Reset the console logging logEnable(); # Confess unhandled errors confess $EVAL_ERROR if (exceptionCode($EVAL_ERROR) != ERROR_BACKUP_MISMATCH); # Update the DB section if it does not match the current database $self->dbSectionSet($strDbVersion, $iControlVersion, $iCatalogVersion, $ullDbSysId, $self->dbHistoryIdGet(false)+1); }; } } # Remove backups from FILE_BACKUP_INFO that are no longer in the repository foreach my $strBackup ($self->keys(INFO_BACKUP_SECTION_BACKUP_CURRENT)) { my $strManifestFile = "$self->{strBackupClusterPath}/${strBackup}/" . FILE_MANIFEST; my $strBackupPath = "$self->{strBackupClusterPath}/${strBackup}"; if (!$self->{oStorage}->pathExists($strBackupPath) || !$self->{oStorage}->exists($strManifestFile)) { &log(WARN, "backup '${strBackup}' missing manifest removed from " . FILE_BACKUP_INFO); $self->delete($strBackup); } } # ??? Add a section to remove backups that are missing references (unless they are hardlinked?) # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # check # # Check db info and make sure it matches what is already in the repository. Return the db-id if everything matches. #################################################################################################################################### sub check { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strDbVersion, $iControlVersion, $iCatalogVersion, $ullDbSysId, $bRequired, ) = logDebugParam ( __PACKAGE__ . '->check', \@_, {name => 'strDbVersion', trace => true}, {name => 'iControlVersion', trace => true}, {name => 'iCatalogVersion', trace => true}, {name => 'ullDbSysId', trace => true}, {name => 'bRequired', default => true}, ); # Confirm the info file exists with the DB section if ($bRequired) { $self->confirmExists(); } if (!$self->test(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_SYSTEM_ID, undef, $ullDbSysId) || !$self->test(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_DB_VERSION, undef, $strDbVersion)) { confess &log(ERROR, "database version = ${strDbVersion}, system-id ${ullDbSysId} does not match backup version = " . $self->get(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_DB_VERSION) . ", system-id = " . $self->get(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_SYSTEM_ID) . "\n" . "HINT: is this the correct stanza?", ERROR_BACKUP_MISMATCH); } if (!$self->test(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_CATALOG, undef, $iCatalogVersion) || !$self->test(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_CONTROL, undef, $iControlVersion)) { confess &log(ERROR, "database control-version = ${iControlVersion}, catalog-version ${iCatalogVersion}" . " does not match backup control-version = " . $self->get(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_CONTROL) . ", catalog-version = " . $self->get(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_CATALOG) . "\n" . "HINT: this may be a symptom of database or repository corruption!", ERROR_BACKUP_MISMATCH); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'iDbHistoryId', value => $self->numericGet(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_HISTORY_ID)} ); } #################################################################################################################################### # add # # Add a backup to the info file. #################################################################################################################################### sub add { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oBackupManifest, $bSave, $bRequired, ) = logDebugParam ( __PACKAGE__ . '->add', \@_, {name => 'oBackupManifest', trace => true}, {name => 'bSave', default => true, trace => true}, {name => 'bRequired', default => true, trace => true}, ); # Confirm the info file exists with the DB section if ($bRequired) { $self->confirmExists(); } # Get the backup label my $strBackupLabel = $oBackupManifest->get(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_LABEL); # Calculate backup sizes and references my $lBackupSize = 0; my $lBackupSizeDelta = 0; my $lBackupRepoSize = 0; my $lBackupRepoSizeDelta = 0; my $oReferenceHash = undef; foreach my $strFileKey ($oBackupManifest->keys(MANIFEST_SECTION_TARGET_FILE)) { my $lFileSize = $oBackupManifest->get(MANIFEST_SECTION_TARGET_FILE, $strFileKey, MANIFEST_SUBKEY_SIZE); my $lRepoSize = $oBackupManifest->get(MANIFEST_SECTION_TARGET_FILE, $strFileKey, MANIFEST_SUBKEY_REPO_SIZE, false, $lFileSize); my $strFileReference = $oBackupManifest->get(MANIFEST_SECTION_TARGET_FILE, $strFileKey, MANIFEST_SUBKEY_REFERENCE, false); # Temporary until compressed size is back in $lBackupSize += $lFileSize; $lBackupRepoSize += $lRepoSize; if (defined($strFileReference)) { $$oReferenceHash{$strFileReference} = true; } else { $lBackupSizeDelta += $lFileSize; $lBackupRepoSizeDelta += $lRepoSize; } } # Set backup size info $self->numericSet(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_BACKUP_SIZE, $lBackupSize); $self->numericSet(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_BACKUP_SIZE_DELTA, $lBackupSizeDelta); $self->numericSet(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_BACKUP_REPO_SIZE, $lBackupRepoSize); $self->numericSet(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_BACKUP_REPO_SIZE_DELTA, $lBackupRepoSizeDelta); $self->boolSet(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_ARCHIVE_CHECK, $oBackupManifest->boolGet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_ARCHIVE_CHECK)); $self->boolSet(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_ARCHIVE_COPY, $oBackupManifest->boolGet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_ARCHIVE_COPY)); $self->set(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_ARCHIVE_START, $oBackupManifest->get(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_ARCHIVE_START, undef, false)); $self->set(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_ARCHIVE_STOP, $oBackupManifest->get(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_ARCHIVE_STOP, undef, false)); $self->boolSet(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_BACKUP_STANDBY, $oBackupManifest->boolGet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_BACKUP_STANDBY)); $self->boolSet(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_CHECKSUM_PAGE, $oBackupManifest->boolGet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_CHECKSUM_PAGE)); $self->boolSet(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_COMPRESS, $oBackupManifest->boolGet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_COMPRESS)); $self->numericSet(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_FORMAT, $oBackupManifest->numericGet(INI_SECTION_BACKREST, INI_KEY_FORMAT)); $self->boolSet(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_HARDLINK, $oBackupManifest->boolGet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_HARDLINK)); $self->boolSet(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_ONLINE, $oBackupManifest->boolGet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_ONLINE)); $self->numericSet(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_TIMESTAMP_START, $oBackupManifest->numericGet(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_TIMESTAMP_START)); $self->numericSet(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_TIMESTAMP_STOP, $oBackupManifest->numericGet(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_TIMESTAMP_STOP)); $self->set(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_TYPE, $oBackupManifest->get(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_TYPE)); $self->set(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_VERSION, $oBackupManifest->get(INI_SECTION_BACKREST, INI_KEY_VERSION)); if ($bRequired) { $self->set(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_HISTORY_ID, $self->get(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_HISTORY_ID)); } # If we are reconstructing, then the history id must be taken from the manifest else { $self->set(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_HISTORY_ID, $oBackupManifest->get(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_DB_ID)); } if (!$oBackupManifest->test(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_TYPE, undef, CFGOPTVAL_BACKUP_TYPE_FULL)) { my @stryReference = sort(keys(%$oReferenceHash)); $self->set(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_PRIOR, $oBackupManifest->get(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_PRIOR)); $self->set(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel, INFO_BACKUP_KEY_REFERENCE, \@stryReference); } if ($bSave) { $self->save(); } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # current # # Test if a backup is current. #################################################################################################################################### sub current { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strBackup ) = logDebugParam ( __PACKAGE__ . '->current', \@_, {name => 'strBackup'} ); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bTest', value => $self->test(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackup)} ); } #################################################################################################################################### # list # # Get backup keys. #################################################################################################################################### sub list { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strFilter, $strOrder ) = logDebugParam ( __PACKAGE__ . '->list', \@_, {name => 'strFilter', required => false}, {name => 'strOrder', default => 'forward'} ); # List of backups my @stryBackup; # Iterate through the backups and filter for my $strBackup ($self->keys(INFO_BACKUP_SECTION_BACKUP_CURRENT)) { if (!defined($strFilter) || $strBackup =~ $strFilter) { if ($strOrder eq 'reverse') { unshift(@stryBackup, $strBackup) } else { push(@stryBackup, $strBackup) } } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'stryBackup', value => \@stryBackup} ); } #################################################################################################################################### # backupArchiveDbHistoryId # # Gets the backup.info db-id for the archiveId passed. #################################################################################################################################### sub backupArchiveDbHistoryId { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strArchiveId, $strPathBackupArchive, ) = logDebugParam ( __PACKAGE__ . '->backupArchiveDbHistoryId', \@_, {name => 'strArchiveId'}, {name => 'strPathBackupArchive'}, ); # List of backups associated with the db-id provided my @stryArchiveBackup; # Build the db list from the history in the backup info and archive info file my $oArchiveInfo = new pgBackRest::Archive::Info($strPathBackupArchive, true); my $hDbListArchive = $oArchiveInfo->dbHistoryList(); my $hDbListBackup = $self->dbHistoryList(); my $iDbHistoryId = undef; # Get the db-version and db-id (history id) from the archiveId my ($strDbVersionArchive, $iDbIdArchive) = split("-", $strArchiveId); # Get the DB system ID to map back to the backup info if it exists in the archive info file if (exists($hDbListArchive->{$iDbIdArchive})) { my $ullDbSysIdArchive = $$hDbListArchive{$iDbIdArchive}{&INFO_SYSTEM_ID}; # Get the db-id from backup info history that corresponds to the archive db-version and db-system-id # Sort from newest (highest db-id) to oldest foreach my $iDbIdBackup (sort {$b <=> $a} keys %{$hDbListBackup}) { if ($$hDbListBackup{$iDbIdBackup}{&INFO_SYSTEM_ID} == $ullDbSysIdArchive && $$hDbListBackup{$iDbIdBackup}{&INFO_DB_VERSION} eq $strDbVersionArchive) { $iDbHistoryId = $iDbIdBackup; last; } } } # If the database is not found in the backup.info history list if (!defined($iDbHistoryId)) { # Check to see that the current DB sections match for the archive and backup info files if (!($oArchiveInfo->test(INFO_ARCHIVE_SECTION_DB, INFO_ARCHIVE_KEY_DB_VERSION, undef, ($self->get(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_DB_VERSION)))) || !($oArchiveInfo->test(INFO_ARCHIVE_SECTION_DB, INFO_ARCHIVE_KEY_DB_SYSTEM_ID, undef, ($self->get(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_SYSTEM_ID))))) { # This should never happen unless the backup.info file is corrupt confess &log(ASSERT, "the archive and backup database sections do not match", ERROR_FILE_INVALID); } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'iDbHistoryId', value => $iDbHistoryId} ); } #################################################################################################################################### # listByArchiveId # # Filters a list of backups by the archiveId passed. #################################################################################################################################### sub listByArchiveId { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strArchiveId, $strPathBackupArchive, $stryBackup, $strOrder, ) = logDebugParam ( __PACKAGE__ . '->listByArchiveId', \@_, {name => 'strArchiveId'}, {name => 'strPathBackupArchive'}, {name => 'stryBackup'}, {name => 'strOrder', default => 'forward'} ); # List of backups associated with the db-id provided my @stryArchiveBackup; my $iDbHistoryId = $self->backupArchiveDbHistoryId($strArchiveId, $strPathBackupArchive); # If history found, then build list of backups associated with the archive id passed, else return empty array if (defined($iDbHistoryId)) { # Iterate through the backups and filter foreach my $strBackup (@$stryBackup) { # From the backup.info current backup section, get the db-id for the backup and if it is the same, add to the list if ($self->test(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackup, INFO_BACKUP_KEY_HISTORY_ID, $iDbHistoryId)) { if ($strOrder eq 'reverse') { unshift(@stryArchiveBackup, $strBackup) } else { push(@stryArchiveBackup, $strBackup) } } } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'stryArchiveBackup', value => \@stryArchiveBackup} ); } #################################################################################################################################### # last # # Find the last backup depending on the type. #################################################################################################################################### sub last { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strType ) = logDebugParam ( __PACKAGE__ . '->last', \@_, {name => 'strType'} ); my $strFilter = backupRegExpGet(true, $strType ne CFGOPTVAL_BACKUP_TYPE_FULL, $strType eq CFGOPTVAL_BACKUP_TYPE_INCR); my $strBackup = ($self->list($strFilter, 'reverse'))[0]; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strBackup', value => $strBackup} ); } #################################################################################################################################### # delete # # Delete a backup from the info file. #################################################################################################################################### sub delete { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strBackupLabel ) = logDebugParam ( __PACKAGE__ . '->delete', \@_, {name => 'strBackupLabel'} ); $self->remove(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackupLabel); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # create # # Create the info file. WARNING - this file should only be called from stanza-create or test modules. #################################################################################################################################### sub create { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strDbVersion, $ullDbSysId, $iControlVersion, $iCatalogVersion, $bSave, ) = logDebugParam ( __PACKAGE__ . '->create', \@_, {name => 'strDbVersion'}, {name => 'ullDbSysId'}, {name => 'iControlVersion'}, {name => 'iCatalogVersion'}, {name => 'bSave', default => true}, ); # Fill db section and db history section $self->dbSectionSet($strDbVersion, $iControlVersion, $iCatalogVersion, $ullDbSysId, $self->dbHistoryIdGet(false)); if ($bSave) { $self->save(); } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # dbHistoryIdGet # # Get the db history ID #################################################################################################################################### sub dbHistoryIdGet { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $bFileRequired, ) = logDebugParam ( __PACKAGE__ . '->dbHistoryIdGet', \@_, {name => 'bFileRequired', default => true}, ); # Confirm the info file exists if it is required if ($bFileRequired) { $self->confirmExists(); } # If the DB section does not exist, initialize the history to one, else return the latest ID my $iDbHistoryId = (!$self->test(INFO_BACKUP_SECTION_DB)) ? 1 : $self->numericGet(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_HISTORY_ID); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'iDbHistoryId', value => $iDbHistoryId} ); } #################################################################################################################################### # dbHistoryList # # Get the data from the db history section. #################################################################################################################################### sub dbHistoryList { my $self = shift; my ( $strOperation, ) = logDebugParam ( __PACKAGE__ . '->dbHistoryList', ); my %hDbHash; foreach my $iHistoryId ($self->keys(INFO_BACKUP_SECTION_DB_HISTORY)) { $hDbHash{$iHistoryId}{&INFO_DB_VERSION} = $self->get(INFO_BACKUP_SECTION_DB_HISTORY, $iHistoryId, INFO_BACKUP_KEY_DB_VERSION); $hDbHash{$iHistoryId}{&INFO_SYSTEM_ID} = $self->get(INFO_BACKUP_SECTION_DB_HISTORY, $iHistoryId, INFO_BACKUP_KEY_SYSTEM_ID); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'hDbHash', value => \%hDbHash} ); } #################################################################################################################################### # dbSectionSet # # Set the db and db:history sections. #################################################################################################################################### sub dbSectionSet { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strDbVersion, $iControlVersion, $iCatalogVersion, $ullDbSysId, $iDbHistoryId, ) = logDebugParam ( __PACKAGE__ . '->dbSectionSet', \@_, {name => 'strDbVersion', trace => true}, {name => 'iControlVersion', trace => true}, {name => 'iCatalogVersion', trace => true}, {name => 'ullDbSysId', trace => true}, {name => 'iDbHistoryId', trace => true}, ); # Fill db section $self->numericSet(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_CATALOG, undef, $iCatalogVersion); $self->numericSet(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_CONTROL, undef, $iControlVersion); $self->numericSet(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_SYSTEM_ID, undef, $ullDbSysId); # Force the version to a string since newer versions of JSON::PP lose track of the fact that it is one $self->set(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_DB_VERSION, undef, $strDbVersion . ''); $self->numericSet(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_HISTORY_ID, undef, $iDbHistoryId); # Fill db history $self->numericSet(INFO_BACKUP_SECTION_DB_HISTORY, $iDbHistoryId, INFO_BACKUP_KEY_CATALOG, $iCatalogVersion); $self->numericSet(INFO_BACKUP_SECTION_DB_HISTORY, $iDbHistoryId, INFO_BACKUP_KEY_CONTROL, $iControlVersion); $self->numericSet(INFO_BACKUP_SECTION_DB_HISTORY, $iDbHistoryId, INFO_BACKUP_KEY_SYSTEM_ID, $ullDbSysId); $self->set(INFO_BACKUP_SECTION_DB_HISTORY, $iDbHistoryId, INFO_BACKUP_KEY_DB_VERSION, $strDbVersion . ''); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # confirmDb # # Ensure that the backup is associated with the database passed. # NOTE: The backup must exist in the backup:current section. #################################################################################################################################### sub confirmDb { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strBackup, $strDbVersion, $ullDbSysId, ) = logDebugParam ( __PACKAGE__ . '->confirmDb', \@_, {name => 'strBackup', trace => true}, {name => 'strDbVersion', trace => true}, {name => 'ullDbSysId', trace => true}, ); my $bConfirmDb = undef; # Get the db-id associated with the backup my $iDbHistoryId = $self->get(INFO_BACKUP_SECTION_BACKUP_CURRENT, $strBackup, INFO_BACKUP_KEY_HISTORY_ID); # Get the version and system-id for all known databases my $hDbList = $self->dbHistoryList(); # If the db-id for the backup exists in the list if (exists $hDbList->{$iDbHistoryId}) { # If the version and system-id match then database is confirmed for the backup if (($hDbList->{$iDbHistoryId}{&INFO_DB_VERSION} eq $strDbVersion) && ($hDbList->{$iDbHistoryId}{&INFO_SYSTEM_ID} eq $ullDbSysId)) { $bConfirmDb = true; } else { $bConfirmDb = false; } } # If not, the backup.info file must be corrupt else { confess &log(ERROR, "backup info file is missing database history information for an existing backup", ERROR_FILE_INVALID); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bConfirmDb', value => $bConfirmDb} ); } #################################################################################################################################### # confirmExists # # Ensure that the backup.info file and the db section exist. #################################################################################################################################### sub confirmExists { my $self = shift; # Confirm the file exists and the DB section is filled out if (!$self->test(INFO_BACKUP_SECTION_DB) || !$self->{bExists}) { confess &log(ERROR, $self->{strBackupClusterPath} . "/" . $strBackupInfoMissingMsg, ERROR_FILE_MISSING); } } 1; pgbackrest-release-2.24/lib/pgBackRest/Common/000077500000000000000000000000001362531507100212325ustar00rootroot00000000000000pgbackrest-release-2.24/lib/pgBackRest/Common/Exception.pm000066400000000000000000000145651362531507100235410ustar00rootroot00000000000000#################################################################################################################################### # COMMON EXCEPTION MODULE #################################################################################################################################### package pgBackRest::Common::Exception; use strict; use warnings FATAL => qw(all); use Carp qw(confess longmess); use Scalar::Util qw(blessed); use Exporter qw(import); our @EXPORT = qw(); use pgBackRest::Common::ExceptionAuto; #################################################################################################################################### # Export error constants #################################################################################################################################### push(@EXPORT, @pgBackRest::Common::ExceptionAuto::EXPORT); #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Class name my $strLevel = shift; # Log level my $iCode = shift; # Error code my $strMessage = shift; # ErrorMessage my $strTrace = shift; # Stack trace my $rExtra = shift; # Extra info used exclusively by the logging system my $bErrorC = shift; # Is this a C error? if ($iCode < ERROR_MINIMUM || $iCode > ERROR_MAXIMUM) { $iCode = ERROR_INVALID; } # Create the class hash my $self = {}; bless $self, $class; # Initialize exception $self->{strLevel} = $strLevel; $self->{iCode} = $iCode; $self->{strMessage} = $strMessage; $self->{strTrace} = $strTrace; $self->{rExtra} = $rExtra; $self->{bErrorC} = $bErrorC ? 1 : 0; return $self; } #################################################################################################################################### # level #################################################################################################################################### sub level { my $self = shift; return $self->{strLevel}; } #################################################################################################################################### # CODE #################################################################################################################################### sub code { my $self = shift; return $self->{iCode}; } #################################################################################################################################### # Is this a C error? #################################################################################################################################### sub errorC { my $self = shift; return $self->{bErrorC}; } #################################################################################################################################### # extra #################################################################################################################################### sub extra { my $self = shift; return $self->{rExtra}; } #################################################################################################################################### # MESSAGE #################################################################################################################################### sub message { my $self = shift; return $self->{strMessage}; } #################################################################################################################################### # TRACE #################################################################################################################################### sub trace { my $self = shift; return $self->{strTrace}; } #################################################################################################################################### # isException - is this a structured exception or a default Perl exception? #################################################################################################################################### sub isException { my $roException = shift; # Only check if defined if (defined($roException) && defined($$roException)) { # If a standard Exception if (blessed($$roException)) { return $$roException->isa('pgBackRest::Common::Exception') ? 1 : 0; } # Else if a specially formatted string from the C library elsif ($$roException =~ /^PGBRCLIB\:[0-9]+\:/) { # Split message and discard the first part used for identification my @stryException = split(/\:/, $$roException); shift(@stryException); # Construct exception fields my $iCode = shift(@stryException) + 0; my $strTrace = shift(@stryException) . qw{:} . shift(@stryException); my $strMessage = join(':', @stryException); # Create exception $$roException = new pgBackRest::Common::Exception("ERROR", $iCode, $strMessage, $strTrace, undef, 1); return 1; } } return 0; } push @EXPORT, qw(isException); #################################################################################################################################### # exceptionCode # # Extract the error code from an exception - if a Perl exception return ERROR_UNKNOWN. #################################################################################################################################### sub exceptionCode { my $oException = shift; return isException(\$oException) ? $oException->code() : ERROR_UNKNOWN; } push @EXPORT, qw(exceptionCode); #################################################################################################################################### # exceptionMessage # # Extract the error message from an exception - if a Perl exception return bare exception. #################################################################################################################################### sub exceptionMessage { my $oException = shift; return isException(\$oException) ? $oException->message() : $oException; } push @EXPORT, qw(exceptionMessage); 1; pgbackrest-release-2.24/lib/pgBackRest/Common/ExceptionAuto.pm000066400000000000000000000235051362531507100243640ustar00rootroot00000000000000#################################################################################################################################### # COMMON EXCEPTION AUTO MODULE # # Automatically generated by Build.pm -- do not modify directly. #################################################################################################################################### package pgBackRest::Common::ExceptionAuto; use strict; use warnings FATAL => qw(all); use Exporter qw(import); our @EXPORT = qw(); #################################################################################################################################### # Error Definitions #################################################################################################################################### use constant ERROR_MINIMUM => 25; push @EXPORT, qw(ERROR_MINIMUM); use constant ERROR_MAXIMUM => 125; push @EXPORT, qw(ERROR_MAXIMUM); use constant ERROR_ASSERT => 25; push @EXPORT, qw(ERROR_ASSERT); use constant ERROR_CHECKSUM => 26; push @EXPORT, qw(ERROR_CHECKSUM); use constant ERROR_CONFIG => 27; push @EXPORT, qw(ERROR_CONFIG); use constant ERROR_FILE_INVALID => 28; push @EXPORT, qw(ERROR_FILE_INVALID); use constant ERROR_FORMAT => 29; push @EXPORT, qw(ERROR_FORMAT); use constant ERROR_COMMAND_REQUIRED => 30; push @EXPORT, qw(ERROR_COMMAND_REQUIRED); use constant ERROR_OPTION_INVALID => 31; push @EXPORT, qw(ERROR_OPTION_INVALID); use constant ERROR_OPTION_INVALID_VALUE => 32; push @EXPORT, qw(ERROR_OPTION_INVALID_VALUE); use constant ERROR_OPTION_INVALID_RANGE => 33; push @EXPORT, qw(ERROR_OPTION_INVALID_RANGE); use constant ERROR_OPTION_INVALID_PAIR => 34; push @EXPORT, qw(ERROR_OPTION_INVALID_PAIR); use constant ERROR_OPTION_DUPLICATE_KEY => 35; push @EXPORT, qw(ERROR_OPTION_DUPLICATE_KEY); use constant ERROR_OPTION_NEGATE => 36; push @EXPORT, qw(ERROR_OPTION_NEGATE); use constant ERROR_OPTION_REQUIRED => 37; push @EXPORT, qw(ERROR_OPTION_REQUIRED); use constant ERROR_POSTMASTER_RUNNING => 38; push @EXPORT, qw(ERROR_POSTMASTER_RUNNING); use constant ERROR_PROTOCOL => 39; push @EXPORT, qw(ERROR_PROTOCOL); use constant ERROR_PATH_NOT_EMPTY => 40; push @EXPORT, qw(ERROR_PATH_NOT_EMPTY); use constant ERROR_FILE_OPEN => 41; push @EXPORT, qw(ERROR_FILE_OPEN); use constant ERROR_FILE_READ => 42; push @EXPORT, qw(ERROR_FILE_READ); use constant ERROR_PARAM_REQUIRED => 43; push @EXPORT, qw(ERROR_PARAM_REQUIRED); use constant ERROR_ARCHIVE_MISMATCH => 44; push @EXPORT, qw(ERROR_ARCHIVE_MISMATCH); use constant ERROR_ARCHIVE_DUPLICATE => 45; push @EXPORT, qw(ERROR_ARCHIVE_DUPLICATE); use constant ERROR_VERSION_NOT_SUPPORTED => 46; push @EXPORT, qw(ERROR_VERSION_NOT_SUPPORTED); use constant ERROR_PATH_CREATE => 47; push @EXPORT, qw(ERROR_PATH_CREATE); use constant ERROR_COMMAND_INVALID => 48; push @EXPORT, qw(ERROR_COMMAND_INVALID); use constant ERROR_HOST_CONNECT => 49; push @EXPORT, qw(ERROR_HOST_CONNECT); use constant ERROR_LOCK_ACQUIRE => 50; push @EXPORT, qw(ERROR_LOCK_ACQUIRE); use constant ERROR_BACKUP_MISMATCH => 51; push @EXPORT, qw(ERROR_BACKUP_MISMATCH); use constant ERROR_FILE_SYNC => 52; push @EXPORT, qw(ERROR_FILE_SYNC); use constant ERROR_PATH_OPEN => 53; push @EXPORT, qw(ERROR_PATH_OPEN); use constant ERROR_PATH_SYNC => 54; push @EXPORT, qw(ERROR_PATH_SYNC); use constant ERROR_FILE_MISSING => 55; push @EXPORT, qw(ERROR_FILE_MISSING); use constant ERROR_DB_CONNECT => 56; push @EXPORT, qw(ERROR_DB_CONNECT); use constant ERROR_DB_QUERY => 57; push @EXPORT, qw(ERROR_DB_QUERY); use constant ERROR_DB_MISMATCH => 58; push @EXPORT, qw(ERROR_DB_MISMATCH); use constant ERROR_DB_TIMEOUT => 59; push @EXPORT, qw(ERROR_DB_TIMEOUT); use constant ERROR_FILE_REMOVE => 60; push @EXPORT, qw(ERROR_FILE_REMOVE); use constant ERROR_PATH_REMOVE => 61; push @EXPORT, qw(ERROR_PATH_REMOVE); use constant ERROR_STOP => 62; push @EXPORT, qw(ERROR_STOP); use constant ERROR_TERM => 63; push @EXPORT, qw(ERROR_TERM); use constant ERROR_FILE_WRITE => 64; push @EXPORT, qw(ERROR_FILE_WRITE); use constant ERROR_PROTOCOL_TIMEOUT => 66; push @EXPORT, qw(ERROR_PROTOCOL_TIMEOUT); use constant ERROR_FEATURE_NOT_SUPPORTED => 67; push @EXPORT, qw(ERROR_FEATURE_NOT_SUPPORTED); use constant ERROR_ARCHIVE_COMMAND_INVALID => 68; push @EXPORT, qw(ERROR_ARCHIVE_COMMAND_INVALID); use constant ERROR_LINK_EXPECTED => 69; push @EXPORT, qw(ERROR_LINK_EXPECTED); use constant ERROR_LINK_DESTINATION => 70; push @EXPORT, qw(ERROR_LINK_DESTINATION); use constant ERROR_HOST_INVALID => 72; push @EXPORT, qw(ERROR_HOST_INVALID); use constant ERROR_PATH_MISSING => 73; push @EXPORT, qw(ERROR_PATH_MISSING); use constant ERROR_FILE_MOVE => 74; push @EXPORT, qw(ERROR_FILE_MOVE); use constant ERROR_BACKUP_SET_INVALID => 75; push @EXPORT, qw(ERROR_BACKUP_SET_INVALID); use constant ERROR_TABLESPACE_MAP => 76; push @EXPORT, qw(ERROR_TABLESPACE_MAP); use constant ERROR_PATH_TYPE => 77; push @EXPORT, qw(ERROR_PATH_TYPE); use constant ERROR_LINK_MAP => 78; push @EXPORT, qw(ERROR_LINK_MAP); use constant ERROR_FILE_CLOSE => 79; push @EXPORT, qw(ERROR_FILE_CLOSE); use constant ERROR_DB_MISSING => 80; push @EXPORT, qw(ERROR_DB_MISSING); use constant ERROR_DB_INVALID => 81; push @EXPORT, qw(ERROR_DB_INVALID); use constant ERROR_ARCHIVE_TIMEOUT => 82; push @EXPORT, qw(ERROR_ARCHIVE_TIMEOUT); use constant ERROR_FILE_MODE => 83; push @EXPORT, qw(ERROR_FILE_MODE); use constant ERROR_OPTION_MULTIPLE_VALUE => 84; push @EXPORT, qw(ERROR_OPTION_MULTIPLE_VALUE); use constant ERROR_PROTOCOL_OUTPUT_REQUIRED => 85; push @EXPORT, qw(ERROR_PROTOCOL_OUTPUT_REQUIRED); use constant ERROR_LINK_OPEN => 86; push @EXPORT, qw(ERROR_LINK_OPEN); use constant ERROR_ARCHIVE_DISABLED => 87; push @EXPORT, qw(ERROR_ARCHIVE_DISABLED); use constant ERROR_FILE_OWNER => 88; push @EXPORT, qw(ERROR_FILE_OWNER); use constant ERROR_USER_MISSING => 89; push @EXPORT, qw(ERROR_USER_MISSING); use constant ERROR_OPTION_COMMAND => 90; push @EXPORT, qw(ERROR_OPTION_COMMAND); use constant ERROR_GROUP_MISSING => 91; push @EXPORT, qw(ERROR_GROUP_MISSING); use constant ERROR_PATH_EXISTS => 92; push @EXPORT, qw(ERROR_PATH_EXISTS); use constant ERROR_FILE_EXISTS => 93; push @EXPORT, qw(ERROR_FILE_EXISTS); use constant ERROR_MEMORY => 94; push @EXPORT, qw(ERROR_MEMORY); use constant ERROR_CRYPTO => 95; push @EXPORT, qw(ERROR_CRYPTO); use constant ERROR_PARAM_INVALID => 96; push @EXPORT, qw(ERROR_PARAM_INVALID); use constant ERROR_PATH_CLOSE => 97; push @EXPORT, qw(ERROR_PATH_CLOSE); use constant ERROR_FILE_INFO => 98; push @EXPORT, qw(ERROR_FILE_INFO); use constant ERROR_JSON_FORMAT => 99; push @EXPORT, qw(ERROR_JSON_FORMAT); use constant ERROR_KERNEL => 100; push @EXPORT, qw(ERROR_KERNEL); use constant ERROR_SERVICE => 101; push @EXPORT, qw(ERROR_SERVICE); use constant ERROR_EXECUTE => 102; push @EXPORT, qw(ERROR_EXECUTE); use constant ERROR_RUNTIME => 122; push @EXPORT, qw(ERROR_RUNTIME); use constant ERROR_INVALID => 123; push @EXPORT, qw(ERROR_INVALID); use constant ERROR_UNHANDLED => 124; push @EXPORT, qw(ERROR_UNHANDLED); use constant ERROR_UNKNOWN => 125; push @EXPORT, qw(ERROR_UNKNOWN); 1; pgbackrest-release-2.24/lib/pgBackRest/Common/Ini.pm000066400000000000000000000753541362531507100223250ustar00rootroot00000000000000#################################################################################################################################### # COMMON INI MODULE #################################################################################################################################### package pgBackRest::Common::Ini; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use JSON::PP; use Storable qw(dclone); use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::LibC qw(:crypto); use pgBackRest::Version; #################################################################################################################################### # Boolean constants #################################################################################################################################### use constant INI_TRUE => JSON::PP::true; push @EXPORT, qw(INI_TRUE); use constant INI_FALSE => JSON::PP::false; push @EXPORT, qw(INI_FALSE); #################################################################################################################################### # Ini control constants #################################################################################################################################### use constant INI_SECTION_BACKREST => 'backrest'; push @EXPORT, qw(INI_SECTION_BACKREST); use constant INI_KEY_CHECKSUM => 'backrest-checksum'; push @EXPORT, qw(INI_KEY_CHECKSUM); use constant INI_KEY_FORMAT => 'backrest-format'; push @EXPORT, qw(INI_KEY_FORMAT); use constant INI_KEY_VERSION => 'backrest-version'; push @EXPORT, qw(INI_KEY_VERSION); use constant INI_SECTION_CIPHER => 'cipher'; push @EXPORT, qw(INI_SECTION_CIPHER); use constant INI_KEY_CIPHER_PASS => 'cipher-pass'; push @EXPORT, qw(INI_KEY_CIPHER_PASS); #################################################################################################################################### # Ini file copy extension #################################################################################################################################### use constant INI_COPY_EXT => '.copy'; push @EXPORT, qw(INI_COPY_EXT); #################################################################################################################################### # Ini sort orders #################################################################################################################################### use constant INI_SORT_FORWARD => 'forward'; push @EXPORT, qw(INI_SORT_FORWARD); use constant INI_SORT_REVERSE => 'reverse'; push @EXPORT, qw(INI_SORT_REVERSE); use constant INI_SORT_NONE => 'none'; push @EXPORT, qw(INI_SORT_NONE); #################################################################################################################################### # new() #################################################################################################################################### sub new { my $class = shift; # Class name # Create the class hash my $self = {}; bless $self, $class; # Load Storage::Helper module require pgBackRest::Storage::Helper; pgBackRest::Storage::Helper->import(); # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{strFileName}, my $bLoad, my $strContent, $self->{oStorage}, $self->{iInitFormat}, $self->{strInitVersion}, my $bIgnoreMissing, $self->{strCipherPass}, # Passphrase to read/write the file my $strCipherPassSub, # Passphrase to read/write subsequent files ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'strFileName', trace => true}, {name => 'bLoad', optional => true, default => true, trace => true}, {name => 'strContent', optional => true, trace => true}, {name => 'oStorage', optional => true, default => storageLocal(), trace => true}, {name => 'iInitFormat', optional => true, default => REPOSITORY_FORMAT, trace => true}, {name => 'strInitVersion', optional => true, default => PROJECT_VERSION, trace => true}, {name => 'bIgnoreMissing', optional => true, default => false, trace => true}, {name => 'strCipherPass', optional => true, trace => true}, {name => 'strCipherPassSub', optional => true, trace => true}, ); if (defined($self->{oStorage}->cipherPassUser()) && !defined($self->{strCipherPass})) { confess &log(ERROR, 'passphrase is required when storage is encrypted', ERROR_CRYPTO); } # Set changed to false $self->{bModified} = false; # Set exists to false $self->{bExists} = false; # Load the file if requested if ($bLoad) { $self->load($bIgnoreMissing); } # Load from a string if provided elsif (defined($strContent)) { $self->{oContent} = iniParse($strContent); $self->headerCheck(); } # Initialize if not loading the file and not loading from string or if a load was attempted and the file does not exist if (!$self->{bExists} && !defined($strContent)) { $self->numericSet(INI_SECTION_BACKREST, INI_KEY_FORMAT, undef, $self->{iInitFormat}); $self->set(INI_SECTION_BACKREST, INI_KEY_VERSION, undef, $self->{strInitVersion}); # Determine if the passphrase section should be set if (defined($self->{strCipherPass}) && defined($strCipherPassSub)) { $self->set(INI_SECTION_CIPHER, INI_KEY_CIPHER_PASS, undef, $strCipherPassSub); } elsif ((defined($self->{strCipherPass}) && !defined($strCipherPassSub)) || (!defined($self->{strCipherPass}) && defined($strCipherPassSub))) { confess &log(ASSERT, 'a user passphrase and sub passphrase are both required when encrypting'); } } return $self; } #################################################################################################################################### # loadVersion() - load a version (main or copy) of the ini file #################################################################################################################################### sub loadVersion { my $self = shift; my $bCopy = shift; my $bIgnoreError = shift; # Make sure the file encryption setting is valid for the repo if ($self->{oStorage}->encryptionValid($self->{oStorage}->encrypted($self->{strFileName} . ($bCopy ? INI_COPY_EXT : ''), {bIgnoreMissing => $bIgnoreError}))) { # Load main my $rstrContent = $self->{oStorage}->get( $self->{oStorage}->openRead($self->{strFileName} . ($bCopy ? INI_COPY_EXT : ''), {bIgnoreMissing => $bIgnoreError, strCipherPass => $self->{strCipherPass}})); # If the file exists then attempt to parse it if (defined($rstrContent)) { my $rhContent = iniParse($$rstrContent, {bIgnoreInvalid => $bIgnoreError}); # If the content is valid then check the header if (defined($rhContent)) { $self->{oContent} = $rhContent; # If the header is invalid then undef content if (!$self->headerCheck({bIgnoreInvalid => $bIgnoreError})) { delete($self->{oContent}); } } } } else { confess &log(ERROR, "unable to parse '$self->{strFileName}" . ($bCopy ? INI_COPY_EXT : '') . "'" . "\nHINT: is or was the repo encrypted?", ERROR_CRYPTO); } return defined($self->{oContent}); } #################################################################################################################################### # load() - load the ini #################################################################################################################################### sub load { my $self = shift; my $bIgnoreMissing = shift; # If main was not loaded then try the copy if (!$self->loadVersion(false, true)) { if (!$self->loadVersion(true, true)) { return if $bIgnoreMissing; confess &log(ERROR, "unable to open $self->{strFileName} or $self->{strFileName}" . INI_COPY_EXT, ERROR_FILE_MISSING); } } $self->{bExists} = true; } #################################################################################################################################### # headerCheck() - check that version and checksum in header are as expected #################################################################################################################################### sub headerCheck { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $bIgnoreInvalid, ) = logDebugParam ( __PACKAGE__ . '->headerCheck', \@_, {name => 'bIgnoreInvalid', optional => true, default => false, trace => true}, ); # Eval so exceptions can be ignored on bIgnoreInvalid my $bValid = true; eval { # Make sure the ini is valid by testing checksum my $strChecksum = $self->get(INI_SECTION_BACKREST, INI_KEY_CHECKSUM, undef, false); my $strTestChecksum = $self->hash(); if (!defined($strChecksum) || $strChecksum ne $strTestChecksum) { confess &log(ERROR, "invalid checksum in '$self->{strFileName}', expected '${strTestChecksum}' but found " . (defined($strChecksum) ? "'${strChecksum}'" : '[undef]'), ERROR_CHECKSUM); } # Make sure that the format is current, otherwise error my $iFormat = $self->get(INI_SECTION_BACKREST, INI_KEY_FORMAT, undef, false, 0); if ($iFormat != $self->{iInitFormat}) { confess &log(ERROR, "invalid format in '$self->{strFileName}', expected $self->{iInitFormat} but found ${iFormat}", ERROR_FORMAT); } # Check if the version has changed if (!$self->test(INI_SECTION_BACKREST, INI_KEY_VERSION, undef, $self->{strInitVersion})) { $self->set(INI_SECTION_BACKREST, INI_KEY_VERSION, undef, $self->{strInitVersion}); } return true; } or do { # Confess the error if it should not be ignored if (!$bIgnoreInvalid) { confess $EVAL_ERROR; } # Return false when errors are ignored $bValid = false; }; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bValid', value => $bValid, trace => true} ); } #################################################################################################################################### # iniParse() - parse from standard INI format to a hash. #################################################################################################################################### push @EXPORT, qw(iniParse); sub iniParse { # Assign function parameters, defaults, and log debug info my ( $strOperation, $strContent, $bRelaxed, $bIgnoreInvalid, ) = logDebugParam ( __PACKAGE__ . '::iniParse', \@_, {name => 'strContent', required => false, trace => true}, {name => 'bRelaxed', optional => true, default => false, trace => true}, {name => 'bIgnoreInvalid', optional => true, default => false, trace => true}, ); # Ini content my $oContent = undef; my $strSection; # Create the JSON object my $oJSON = JSON::PP->new()->allow_nonref(); # Eval so exceptions can be ignored on bIgnoreInvalid eval { # Read the INI file foreach my $strLine (split("\n", defined($strContent) ? $strContent : '')) { $strLine = trim($strLine); # Skip lines that are blank or comments if ($strLine ne '' && $strLine !~ '^[ ]*#.*') { # Get the section if (index($strLine, '[') == 0) { $strSection = substr($strLine, 1, length($strLine) - 2); } else { if (!defined($strSection)) { confess &log(ERROR, "key/value pair '${strLine}' found outside of a section", ERROR_CONFIG); } # Get key and value my $iIndex = index($strLine, '='); if ($iIndex == -1) { confess &log(ERROR, "unable to find '=' in '${strLine}'", ERROR_CONFIG); } my $strKey = substr($strLine, 0, $iIndex); my $strValue = substr($strLine, $iIndex + 1); # If relaxed then read the value directly if ($bRelaxed) { if (defined($oContent->{$strSection}{$strKey})) { if (ref($oContent->{$strSection}{$strKey}) ne 'ARRAY') { $oContent->{$strSection}{$strKey} = [$oContent->{$strSection}{$strKey}]; } push(@{$oContent->{$strSection}{$strKey}}, $strValue); } else { $oContent->{$strSection}{$strKey} = $strValue; } } # Else read the value as stricter JSON else { ${$oContent}{$strSection}{$strKey} = $oJSON->decode($strValue); } } } } # Error if the file is empty if (!($bRelaxed || defined($oContent))) { confess &log(ERROR, 'no key/value pairs found', ERROR_CONFIG); } return true; } or do { # Confess the error if it should not be ignored if (!$bIgnoreInvalid) { confess $EVAL_ERROR; } # Undef content when errors are ignored undef($oContent); }; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oContent', value => $oContent, trace => true} ); } #################################################################################################################################### # save() - save the file. #################################################################################################################################### sub save { my $self = shift; # Save only if modified if ($self->{bModified}) { # Calculate the hash $self->hash(); # Save the file $self->{oStorage}->put($self->{strFileName}, iniRender($self->{oContent}), {strCipherPass => $self->{strCipherPass}}); $self->{oStorage}->pathSync(dirname($self->{strFileName})); $self->{oStorage}->put($self->{strFileName} . INI_COPY_EXT, iniRender($self->{oContent}), {strCipherPass => $self->{strCipherPass}}); $self->{oStorage}->pathSync(dirname($self->{strFileName})); $self->{bModified} = false; # Indicate the file now exists $self->{bExists} = true; # File was saved return true; } # File was not saved return false; } #################################################################################################################################### # saveCopy - save only a copy of the file. #################################################################################################################################### sub saveCopy { my $self = shift; if ($self->{oStorage}->exists($self->{strFileName})) { confess &log(ASSERT, "cannot save copy only when '$self->{strFileName}' exists"); } $self->hash(); $self->{oStorage}->put($self->{strFileName} . INI_COPY_EXT, iniRender($self->{oContent}), {strCipherPass => $self->{strCipherPass}}); } #################################################################################################################################### # iniRender() - render hash to standard INI format. #################################################################################################################################### push @EXPORT, qw(iniRender); sub iniRender { # Assign function parameters, defaults, and log debug info my ( $strOperation, $oContent, $bRelaxed, ) = logDebugParam ( __PACKAGE__ . '::iniRender', \@_, {name => 'oContent', trace => true}, {name => 'bRelaxed', default => false, trace => true}, ); # Open the ini file for writing my $strContent = ''; my $bFirst = true; # Create the JSON object canonical so that fields are alpha ordered to pass unit tests my $oJSON = JSON::PP->new()->canonical()->allow_nonref(); # Write the INI file foreach my $strSection (sort(keys(%$oContent))) { # Add a linefeed between sections if (!$bFirst) { $strContent .= "\n"; } # Write the section $strContent .= "[${strSection}]\n"; # Iterate through all keys in the section foreach my $strKey (sort(keys(%{$oContent->{$strSection}}))) { # If the value is a hash then convert it to JSON, otherwise store as is my $strValue = ${$oContent}{$strSection}{$strKey}; # If relaxed then store as old-style config if ($bRelaxed) { # If the value is an array then save each element to a separate key/value pair if (ref($strValue) eq 'ARRAY') { foreach my $strArrayValue (@{$strValue}) { $strContent .= "${strKey}=${strArrayValue}\n"; } } # Else write a standard key/value pair else { $strContent .= "${strKey}=${strValue}\n"; } } # Else write as stricter JSON else { # Skip the checksum for now but write all other key/value pairs if (!($strSection eq INI_SECTION_BACKREST && $strKey eq INI_KEY_CHECKSUM)) { $strContent .= "${strKey}=" . $oJSON->encode($strValue) . "\n"; } } } $bFirst = false; } # If there is a checksum write it at the end of the file. Having the checksum at the end of the file allows some major # performance optimizations which we won't implement in Perl, but will make the C code much more efficient. if (!$bRelaxed && defined($oContent->{&INI_SECTION_BACKREST}) && defined($oContent->{&INI_SECTION_BACKREST}{&INI_KEY_CHECKSUM})) { $strContent .= "\n[" . INI_SECTION_BACKREST . "]\n" . INI_KEY_CHECKSUM . '=' . $oJSON->encode($oContent->{&INI_SECTION_BACKREST}{&INI_KEY_CHECKSUM}) . "\n"; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strContent', value => $strContent, trace => true} ); } #################################################################################################################################### # hash() - generate hash for the manifest. #################################################################################################################################### sub hash { my $self = shift; # Remove the old checksum delete($self->{oContent}{&INI_SECTION_BACKREST}{&INI_KEY_CHECKSUM}); # Set the new checksum $self->{oContent}{&INI_SECTION_BACKREST}{&INI_KEY_CHECKSUM} = cryptoHashOne('sha1', JSON::PP->new()->canonical()->allow_nonref()->encode($self->{oContent})); return $self->{oContent}{&INI_SECTION_BACKREST}{&INI_KEY_CHECKSUM}; } #################################################################################################################################### # get() - get a value. #################################################################################################################################### sub get { my $self = shift; my $strSection = shift; my $strKey = shift; my $strSubKey = shift; my $bRequired = shift; my $oDefault = shift; # Parameter constraints if (!defined($strSection)) { confess &log(ASSERT, 'strSection is required'); } if (defined($strSubKey) && !defined($strKey)) { confess &log(ASSERT, "strKey is required when strSubKey '${strSubKey}' is requested"); } # Get the result my $oResult = $self->{oContent}->{$strSection}; if (defined($strKey) && defined($oResult)) { $oResult = $oResult->{$strKey}; if (defined($strSubKey) && defined($oResult)) { $oResult = $oResult->{$strSubKey}; } } # When result is not defined if (!defined($oResult)) { # Error if a result is required if (!defined($bRequired) || $bRequired) { confess &log(ASSERT, "strSection '$strSection'" . (defined($strKey) ? ", strKey '$strKey'" : '') . (defined($strSubKey) ? ", strSubKey '$strSubKey'" : '') . ' is required but not defined'); } # Return default if specified if (defined($oDefault)) { return $oDefault; } } return $oResult } #################################################################################################################################### # boolGet() - get a boolean value. #################################################################################################################################### sub boolGet { my $self = shift; my $strSection = shift; my $strKey = shift; my $strSubKey = shift; my $bRequired = shift; my $bDefault = shift; return $self->get( $strSection, $strKey, $strSubKey, $bRequired, defined($bDefault) ? ($bDefault ? INI_TRUE : INI_FALSE) : undef) ? true : false; } #################################################################################################################################### # numericGet() - get a numeric value. #################################################################################################################################### sub numericGet { my $self = shift; my $strSection = shift; my $strKey = shift; my $strSubKey = shift; my $bRequired = shift; my $nDefault = shift; return $self->get($strSection, $strKey, $strSubKey, $bRequired, defined($nDefault) ? $nDefault + 0 : undef) + 0; } #################################################################################################################################### # set - set a value. #################################################################################################################################### sub set { my $self = shift; my $strSection = shift; my $strKey = shift; my $strSubKey = shift; my $oValue = shift; # Parameter constraints if (!(defined($strSection) && defined($strKey))) { confess &log(ASSERT, 'strSection and strKey are required'); } my $oCurrentValue; if (defined($strSubKey)) { $oCurrentValue = \$self->{oContent}{$strSection}{$strKey}{$strSubKey}; } else { $oCurrentValue = \$self->{oContent}{$strSection}{$strKey}; } if (!defined($$oCurrentValue) || defined($oCurrentValue) != defined($oValue) || ${dclone($oCurrentValue)} ne ${dclone(\$oValue)}) { $$oCurrentValue = $oValue; if (!$self->{bModified}) { $self->{bModified} = true; } return true; } return false; } #################################################################################################################################### # boolSet - set a boolean value. #################################################################################################################################### sub boolSet { my $self = shift; my $strSection = shift; my $strKey = shift; my $strSubKey = shift; my $bValue = shift; $self->set($strSection, $strKey, $strSubKey, $bValue ? INI_TRUE : INI_FALSE); } #################################################################################################################################### # numericSet - set a numeric value. #################################################################################################################################### sub numericSet { my $self = shift; my $strSection = shift; my $strKey = shift; my $strSubKey = shift; my $nValue = shift; $self->set($strSection, $strKey, $strSubKey, defined($nValue) ? $nValue + 0 : undef); } #################################################################################################################################### # remove - remove a value. #################################################################################################################################### sub remove { my $self = shift; my $strSection = shift; my $strKey = shift; my $strSubKey = shift; # Test if the value exists if ($self->test($strSection, $strKey, $strSubKey)) { # Remove a subkey if (defined($strSubKey)) { delete($self->{oContent}{$strSection}{$strKey}{$strSubKey}); } # Remove a key if (defined($strKey)) { if (!defined($strSubKey)) { delete($self->{oContent}{$strSection}{$strKey}); } # Remove the section if it is now empty if (keys(%{$self->{oContent}{$strSection}}) == 0) { delete($self->{oContent}{$strSection}); } } # Remove a section if (!defined($strKey)) { delete($self->{oContent}{$strSection}); } # Record changes if (!$self->{bModified}) { $self->{bModified} = true; } return true; } return false; } #################################################################################################################################### # keys - get the list of keys in a section. #################################################################################################################################### sub keys { my $self = shift; my $strSection = shift; my $strSortOrder = shift; if ($self->test($strSection)) { if (!defined($strSortOrder) || $strSortOrder eq INI_SORT_FORWARD) { return (sort(keys(%{$self->get($strSection)}))); } elsif ($strSortOrder eq INI_SORT_REVERSE) { return (sort {$b cmp $a} (keys(%{$self->get($strSection)}))); } elsif ($strSortOrder eq INI_SORT_NONE) { return (keys(%{$self->get($strSection)})); } else { confess &log(ASSERT, "invalid strSortOrder '${strSortOrder}'"); } } my @stryEmptyArray; return @stryEmptyArray; } #################################################################################################################################### # test - test a value. # # Test a value to see if it equals the supplied test value. If no test value is given, tests that the section, key, or subkey # is defined. #################################################################################################################################### sub test { my $self = shift; my $strSection = shift; my $strValue = shift; my $strSubValue = shift; my $strTest = shift; # Get the value my $strResult = $self->get($strSection, $strValue, $strSubValue, false); # Is there a result if (defined($strResult)) { # Is there a value to test against? if (defined($strTest)) { # Make sure these are explicit strings or Devel::Cover thinks they are equal if one side is a boolean return ($strResult . '') eq ($strTest . '') ? true : false; } return true; } return false; } #################################################################################################################################### # boolTest - test a boolean value, see test(). #################################################################################################################################### sub boolTest { my $self = shift; my $strSection = shift; my $strValue = shift; my $strSubValue = shift; my $bTest = shift; return $self->test($strSection, $strValue, $strSubValue, defined($bTest) ? ($bTest ? INI_TRUE : INI_FALSE) : undef); } #################################################################################################################################### # cipherPassSub - gets the passphrase (if it exists) used to read/write subsequent files #################################################################################################################################### sub cipherPassSub { my $self = shift; return $self->get(INI_SECTION_CIPHER, INI_KEY_CIPHER_PASS, undef, false); } #################################################################################################################################### # Properties. #################################################################################################################################### sub modified {shift->{bModified}} # Has the data been modified since last load/save? sub exists {shift->{bExists}} # Is the data persisted to file? sub cipherPass {shift->{strCipherPass}} # Return passphrase (will be undef if repo not encrypted) 1; pgbackrest-release-2.24/lib/pgBackRest/Common/Io/000077500000000000000000000000001362531507100216015ustar00rootroot00000000000000pgbackrest-release-2.24/lib/pgBackRest/Common/Io/Base.pm000066400000000000000000000102131362531507100230060ustar00rootroot00000000000000#################################################################################################################################### # Base IO Module #################################################################################################################################### package pgBackRest::Common::Io::Base; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Exporter qw(import); our @EXPORT = qw(); use Scalar::Util qw(blessed); use pgBackRest::Common::Log; #################################################################################################################################### # Package name constant #################################################################################################################################### use constant COMMON_IO_BASE => __PACKAGE__; push @EXPORT, qw(COMMON_IO_BASE); #################################################################################################################################### # Default buffer max #################################################################################################################################### use constant COMMON_IO_BUFFER_MAX => 4194304; push @EXPORT, qw(COMMON_IO_BUFFER_MAX); #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Create the class hash my $self = {}; bless $self, $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{strId}, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'strId', trace => true}, ); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # error - throw errors #################################################################################################################################### sub error { my $self = shift; my $iCode = shift; my $strMessage = shift; my $strDetail = shift; logErrorResult($iCode, $strMessage, $strDetail); } #################################################################################################################################### # result - retrieve a result from io or a filter #################################################################################################################################### sub result { my $self = shift; my $strModule = shift; if (!defined($strModule)) { return $self->{rhResult}; } return $self->{rhResult}{$strModule}; } #################################################################################################################################### # resultAll - get all results #################################################################################################################################### sub resultAll { shift->{rhResult}; } #################################################################################################################################### # resultSet - set a result from io or a filter #################################################################################################################################### sub resultSet { my $self = shift; my $strModule = shift; my $xResult = shift; $self->{rhResult}{$strModule} = $xResult; } #################################################################################################################################### # Getters #################################################################################################################################### sub className {blessed(shift)} sub id {shift->{strId}} 1; pgbackrest-release-2.24/lib/pgBackRest/Common/Io/Buffered.pm000066400000000000000000000235711362531507100236710ustar00rootroot00000000000000#################################################################################################################################### # Buffered Handle IO #################################################################################################################################### package pgBackRest::Common::Io::Buffered; use parent 'pgBackRest::Common::Io::Filter'; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Exporter qw(import); our @EXPORT = qw(); use IO::Select; use Time::HiRes qw(gettimeofday); use pgBackRest::Common::Exception; use pgBackRest::Common::Io::Base; use pgBackRest::Common::Io::Handle; use pgBackRest::Common::Log; use pgBackRest::Common::Wait; #################################################################################################################################### # Package name constant #################################################################################################################################### use constant COMMON_IO_BUFFERED => __PACKAGE__; push @EXPORT, qw(COMMON_IO_BUFFERED); #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oParent, $iTimeout, $lBufferMax, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oParent', trace => true}, {name => 'iTimeout', default => 0, trace => true}, {name => 'lBufferMax', default => COMMON_IO_BUFFER_MAX, trace => true}, ); # Bless with new class my $self = $class->SUPER::new($oParent); bless $self, $class; # Set read handle so select object is created $self->handleReadSet($self->handleRead()); # Set variables $self->{iTimeout} = $iTimeout; $self->{lBufferMax} = $lBufferMax; # Initialize buffer $self->{tBuffer} = ''; $self->{lBufferSize} = 0; $self->{lBufferPos} = 0; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # read - buffered read from a handle with optional blocking #################################################################################################################################### sub read { my $self = shift; my $tBufferRef = shift; my $iRequestSize = shift; my $bBlock = shift; # Set working variables my $iRemainingSize = $iRequestSize; # If there is data left over in the buffer from lineRead then use it my $lBufferRemaining = $self->{lBufferSize} - $self->{lBufferPos}; if ($lBufferRemaining > 0) { my $iReadSize = $iRequestSize < $lBufferRemaining ? $iRequestSize : $lBufferRemaining; $$tBufferRef .= substr($self->{tBuffer}, $self->{lBufferPos}, $iReadSize); $self->{lBufferPos} += $iReadSize; $iRemainingSize -= $iReadSize; } # If this is a blocking read then loop until all bytes have been read, else error. If not blocking read until the request size # has been met or EOF. my $fTimeStart = gettimeofday(); my $fRemaining = $self->timeout(); while ($iRemainingSize > 0 && $fRemaining > 0) { # Check if the sysread call will block if ($self->pending() || $self->{oReadSelect}->can_read($fRemaining)) { # Read data into the buffer my $iReadSize = $self->parent()->read($tBufferRef, $iRemainingSize); # Check for EOF if ($iReadSize == 0) { if ($bBlock) { $self->error(ERROR_FILE_READ, "unable to read ${iRequestSize} byte(s) due to EOF from " . $self->id()); } else { return $iRequestSize - $iRemainingSize; } } # Update remaining size and return when it reaches 0 $iRemainingSize -= $iReadSize; } # Calculate time remaining before timeout $fRemaining = $self->timeout() - (gettimeofday() - $fTimeStart); }; # Throw an error if timeout happened before required bytes were read if ($iRemainingSize != 0 && $bBlock) { $self->error( ERROR_FILE_READ, "unable to read ${iRequestSize} byte(s) after " . $self->timeout() . ' second(s) from ' . $self->id()); } return $iRequestSize - $iRemainingSize; } #################################################################################################################################### # readLine - read the next lf-terminated line. #################################################################################################################################### sub readLine { my $self = shift; my $bIgnoreEOF = shift; my $bError = shift; # Try to find the next linefeed my $iLineFeedPos = index($self->{tBuffer}, "\n", $self->{lBufferPos}); # If no linefeed was found then load more data if ($iLineFeedPos == -1) { my $fRemaining = $self->timeout(); my $fTimeStart = gettimeofday(); # Load data do { # If the buffer already has data and the buffer position is not 0 then trim it so there's room for more data if ($self->{lBufferPos} != 0) { $self->{tBuffer} = substr($self->{tBuffer}, $self->{lBufferPos}); $self->{lBufferSize} = $self->{lBufferSize} - $self->{lBufferPos}; $self->{lBufferPos} = 0; } # Load data into the buffer my $iBufferRead = 0; if ($self->pending() || $self->{oReadSelect}->can_read($fRemaining)) { $iBufferRead = $self->parent()->read( \$self->{tBuffer}, $self->{lBufferSize} >= $self->bufferMax() ? $self->bufferMax() : $self->bufferMax() - $self->{lBufferSize}); # Check for EOF if ($iBufferRead == 0) { # Return undef if EOF is ignored if (defined($bIgnoreEOF) && $bIgnoreEOF) { return; } # Else throw an error $self->error(ERROR_FILE_READ, 'unexpected EOF reading line from ' . $self->id()); } } # If data was read then check for a linefeed if ($iBufferRead > 0) { $self->{lBufferSize} += $iBufferRead; $iLineFeedPos = index($self->{tBuffer}, "\n"); } # Calculate time remaining before timeout if ($iLineFeedPos == -1) { $fRemaining = $self->timeout() - (gettimeofday() - $fTimeStart); } } while ($iLineFeedPos == -1 && $fRemaining > 0); # If not linefeed was found within the timeout throw error if ($iLineFeedPos == -1) { if (!defined($bError) || $bError) { $self->error( ERROR_FILE_READ, 'unable to read line after ' . $self->timeout() . ' second(s) from ' . $self->id()); } return; } } # Return the line that was found and adjust the buffer position my $strLine = substr($self->{tBuffer}, $self->{lBufferPos}, $iLineFeedPos - $self->{lBufferPos}); $self->{lBufferPos} = $iLineFeedPos + 1; return $strLine; } #################################################################################################################################### # writeLine - write a string and \n terminate it #################################################################################################################################### sub writeLine { my $self = shift; my $strBuffer = shift; $strBuffer .= "\n"; return $self->parent()->write(\$strBuffer); } #################################################################################################################################### # Getters/Setters #################################################################################################################################### sub timeout {shift->{iTimeout}}; sub bufferMax {shift->{lBufferMax}}; #################################################################################################################################### # handleReadSet - create a select object when read handle is set #################################################################################################################################### sub handleReadSet { my $self = shift; my $fhRead = shift; $self->parent()->handleReadSet($fhRead); # Create select object to make IO waits more efficient $self->{oReadSelect} = IO::Select->new(); $self->{oReadSelect}->add($self->handleRead()); # Check if the read handle has a pending method. This should be checked before can_read for SSL sockets. $self->{bPending} = defined($fhRead) && $fhRead->can('pending') ? true : false; } #################################################################################################################################### # Are bytes pending that won't show up in select? #################################################################################################################################### sub pending { my $self = shift; return ($self->{bPending} && $self->handleRead()->pending() ? true : false); } 1; pgbackrest-release-2.24/lib/pgBackRest/Common/Io/Filter.pm000066400000000000000000000055071362531507100233730ustar00rootroot00000000000000#################################################################################################################################### # Base Filter Module #################################################################################################################################### package pgBackRest::Common::Io::Filter; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Exporter qw(import); our @EXPORT = qw(); use Scalar::Util qw(blessed); use pgBackRest::Common::Log; #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Create the class hash my $self = {}; bless $self, $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{oParent}, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oParent', trace => true}, ); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # Pass through for unimplemented methods #################################################################################################################################### sub bufferMax {shift->{oParent}->bufferMax()}; sub className {shift->{oParent}->className()}; sub close {shift->{oParent}->close()}; sub eof {shift->{oParent}->eof()}; sub eofSet {shift->{oParent}->eofSet(@_)}; sub error {shift->{oParent}->error(@_)}; sub id {shift->{oParent}->id()}; sub handleRead {shift->{oParent}->handleRead()}; sub handleReadSet {shift->{oParent}->handleReadSet(@_)}; sub handleWrite {shift->{oParent}->handleWrite()}; sub handleWriteSet {shift->{oParent}->handleWriteSet(@_)}; sub name {shift->{oParent}->name()}; sub read {shift->{oParent}->read(@_)}; sub readLine {shift->{oParent}->readLine(@_)}; sub result {shift->{oParent}->result(@_)}; sub resultAll {shift->{oParent}->resultAll()}; sub resultSet {shift->{oParent}->resultSet(@_)}; sub size {shift->{oParent}->size()}; sub timeout {shift->{oParent}->timeout()}; sub write {shift->{oParent}->write(@_)}; sub writeLine {shift->{oParent}->writeLine(@_)}; #################################################################################################################################### # Getters #################################################################################################################################### sub parent {shift->{oParent}} 1; pgbackrest-release-2.24/lib/pgBackRest/Common/Io/Handle.pm000066400000000000000000000141431362531507100233350ustar00rootroot00000000000000#################################################################################################################################### # Basic Handle IO #################################################################################################################################### package pgBackRest::Common::Io::Handle; use parent 'pgBackRest::Common::Io::Base'; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Exporter qw(import); our @EXPORT = qw(); use pgBackRest::Common::Exception; use pgBackRest::Common::Log; #################################################################################################################################### # Package name constant #################################################################################################################################### use constant COMMON_IO_HANDLE => __PACKAGE__; push @EXPORT, qw(COMMON_IO_HANDLE); #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strId, $fhRead, $fhWrite, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'strId', trace => true}, {name => 'fhRead', required => false, trace => true}, {name => 'fhWrite', required => false, trace => true}, ); # Create class my $self = $class->SUPER::new($strId); bless $self, $class; # Set handles $self->handleReadSet($fhRead) if defined($fhRead); $self->handleWriteSet($fhWrite) if defined($fhWrite); # Size tracks number of bytes read and written $self->{lSize} = 0; # Initialize EOF to false $self->eofSet(false); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # eof - have reads reached eof? # # Note that there may be more bytes to be read but this is set to true whenever there is a zero read and back to false on a # non-zero read. #################################################################################################################################### sub eof { return shift->{bEOF}; } #################################################################################################################################### # eofSet - set eof #################################################################################################################################### sub eofSet { my $self = shift; my $bEOF = shift; $self->{bEOF} = $bEOF; } #################################################################################################################################### # read - read data from handle #################################################################################################################################### sub read { my $self = shift; my $rtBuffer = shift; my $iSize = shift; # Read the block my $iActualSize; eval { $iActualSize = sysread($self->handleRead(), $$rtBuffer, $iSize, defined($$rtBuffer) ? length($$rtBuffer) : 0); return true; } or do { $self->error(ERROR_FILE_READ, 'unable to read from ' . $self->id(), $EVAL_ERROR); }; # Report any errors # uncoverable branch true - all errors seem to be caught by the handler above but check for error here just in case defined($iActualSize) or $self->error(ERROR_FILE_READ, 'unable to read from ' . $self->id(), $OS_ERROR); # Update size $self->{lSize} += $iActualSize; # Update EOF $self->eofSet($iActualSize == 0 ? true : false); return $iActualSize; } #################################################################################################################################### # write - write data to handle #################################################################################################################################### sub write { my $self = shift; my $rtBuffer = shift; # Write the block my $iActualSize; eval { $iActualSize = syswrite($self->handleWrite(), $$rtBuffer); return true; } or do { $self->error(ERROR_FILE_WRITE, 'unable to write to ' . $self->id(), $EVAL_ERROR); }; # Report any errors # uncoverable branch true - all errors seem to be caught by the handler above but check for error here just in case defined($iActualSize) or $self->error(ERROR_FILE_WRITE, 'unable to write to ' . $self->id(), $OS_ERROR); # Update size $self->{lSize} += $iActualSize; return $iActualSize; } #################################################################################################################################### # close - record read/write size #################################################################################################################################### sub close { my $self = shift; # Set bytes read and written if (defined($self->{lSize})) { $self->resultSet(COMMON_IO_HANDLE, $self->{lSize}); undef($self->{lSize}); } return true; } #################################################################################################################################### # Getters/Setters #################################################################################################################################### sub handleRead {return shift->{fhHandleRead}} sub handleReadSet {my $self = shift; $self->{fhHandleRead} = shift} sub handleWrite {return shift->{fhHandleWrite}} sub handleWriteSet {my $self = shift; $self->{fhHandleWrite} = shift} sub size {shift->{lSize}} 1; pgbackrest-release-2.24/lib/pgBackRest/Common/Log.pm000066400000000000000000000670211362531507100223170ustar00rootroot00000000000000#################################################################################################################################### # COMMON LOG MODULE #################################################################################################################################### package pgBackRest::Common::Log; use strict; use warnings FATAL => qw(all); use Carp qw(confess longmess); use English '-no_match_vars'; use Exporter qw(import); our @EXPORT = qw(); use Fcntl qw(:DEFAULT :flock); use File::Basename qw(dirname); use Scalar::Util qw(blessed reftype); use Time::HiRes qw(gettimeofday usleep); use pgBackRest::Common::Exception; use pgBackRest::Common::String; #################################################################################################################################### # Boolean constants #################################################################################################################################### use constant true => 1; push @EXPORT, qw(true); use constant false => 0; push @EXPORT, qw(false); #################################################################################################################################### # Log level constants #################################################################################################################################### use constant TRACE => 'TRACE'; push @EXPORT, qw(TRACE); use constant DEBUG => 'DEBUG'; push @EXPORT, qw(DEBUG); use constant DETAIL => 'DETAIL'; push @EXPORT, qw(DETAIL); use constant INFO => 'INFO'; push @EXPORT, qw(INFO); use constant WARN => 'WARN'; push @EXPORT, qw(WARN); use constant PROTOCOL => 'PROTOCOL'; push @EXPORT, qw(PROTOCOL); use constant ERROR => 'ERROR'; push @EXPORT, qw(ERROR); use constant ASSERT => 'ASSERT'; push @EXPORT, qw(ASSERT); use constant OFF => 'OFF'; push @EXPORT, qw(OFF); #################################################################################################################################### # Log levels ranked by severity #################################################################################################################################### my %oLogLevelRank; $oLogLevelRank{TRACE}{rank} = 8; $oLogLevelRank{DEBUG}{rank} = 7; $oLogLevelRank{DETAIL}{rank} = 6; $oLogLevelRank{INFO}{rank} = 5; $oLogLevelRank{WARN}{rank} = 4; $oLogLevelRank{PROTOCOL}{rank} = 3; $oLogLevelRank{ERROR}{rank} = 2; $oLogLevelRank{ASSERT}{rank} = 1; $oLogLevelRank{OFF}{rank} = 0; #################################################################################################################################### # Module globals #################################################################################################################################### my $hLogFile = undef; my $strLogFileCache = undef; my $strLogLevelFile = OFF; my $strLogLevelConsole = OFF; my $strLogLevelStdErr = WARN; my $bLogTimestamp = true; # Size of the process id log field my $iLogProcessSize = 2; # Flags to limit banner printing until there is actual output my $bLogFileExists; my $bLogFileFirst; # Allow log to be globally enabled or disabled with logEnable() and logDisable() my $bLogDisable = 0; # Allow errors to be logged as warnings my $bLogWarnOnError = 0; # Store the last logged error my $oErrorLast; #################################################################################################################################### # logFileSet - set the file messages will be logged to #################################################################################################################################### sub logFileSet { my $oStorage = shift; my $strFile = shift; my $bLogFileFirstParam = shift; # Only open the log file if file logging is enabled if ($strLogLevelFile ne OFF) { $oStorage->pathCreate(dirname($strFile), {strMode => '0750', bIgnoreExists => true, bCreateParent => true}); $strFile .= '.log'; $bLogFileExists = -e $strFile ? true : false; $bLogFileFirst = defined($bLogFileFirstParam) ? $bLogFileFirstParam : false; if (!sysopen($hLogFile, $strFile, O_WRONLY | O_CREAT | O_APPEND, oct('0640'))) { logErrorResult(ERROR_FILE_OPEN, "unable to open log file '${strFile}'", $OS_ERROR); } # Write out anything that was cached before the file was opened if (defined($strLogFileCache)) { logBanner(); syswrite($hLogFile, $strLogFileCache); undef($strLogFileCache); } } } push @EXPORT, qw(logFileSet); #################################################################################################################################### # logBanner # # Output a banner on the first log entry written to a file #################################################################################################################################### sub logBanner { if ($bLogFileFirst) { if ($bLogFileExists) { syswrite($hLogFile, "\n"); } syswrite($hLogFile, "-------------------PROCESS START-------------------\n"); } $bLogFileFirst = false; } #################################################################################################################################### # logLevelSet - set the log level for file and console #################################################################################################################################### sub logLevelSet { my $strLevelFileParam = shift; my $strLevelConsoleParam = shift; my $strLevelStdErrParam = shift; my $bLogTimestampParam = shift; my $iLogProcessMax = shift; if (defined($strLevelFileParam)) { if (!defined($oLogLevelRank{uc($strLevelFileParam)}{rank})) { confess &log(ERROR, "file log level ${strLevelFileParam} does not exist"); } $strLogLevelFile = uc($strLevelFileParam); } if (defined($strLevelConsoleParam)) { if (!defined($oLogLevelRank{uc($strLevelConsoleParam)}{rank})) { confess &log(ERROR, "console log level ${strLevelConsoleParam} does not exist"); } $strLogLevelConsole = uc($strLevelConsoleParam); } if (defined($strLevelStdErrParam)) { if (!defined($oLogLevelRank{uc($strLevelStdErrParam)}{rank})) { confess &log(ERROR, "stdout log level ${strLevelStdErrParam} does not exist"); } $strLogLevelStdErr = uc($strLevelStdErrParam); } if (defined($bLogTimestampParam)) { $bLogTimestamp = $bLogTimestampParam; } if (defined($iLogProcessMax)) { $iLogProcessSize = $iLogProcessMax > 99 ? 3 : 2; } } push @EXPORT, qw(logLevelSet); #################################################################################################################################### # logDisable #################################################################################################################################### sub logDisable { $bLogDisable++; } push @EXPORT, qw(logDisable); #################################################################################################################################### # logEnable #################################################################################################################################### sub logEnable { $bLogDisable--; } push @EXPORT, qw(logEnable); #################################################################################################################################### # logWarnOnErrorDisable #################################################################################################################################### sub logWarnOnErrorDisable { $bLogWarnOnError--; } push @EXPORT, qw(logWarnOnErrorDisable); #################################################################################################################################### # logWarnOnErrorEnable - when an error is thrown, log it as a warning instead #################################################################################################################################### sub logWarnOnErrorEnable { $bLogWarnOnError++; } push @EXPORT, qw(logWarnOnErrorEnable); #################################################################################################################################### # logDebugParam # # Log parameters passed to functions. #################################################################################################################################### use constant DEBUG_PARAM => '()'; sub logDebugParam { my $strFunction = shift; my $oyParamRef = shift; return logDebugProcess($strFunction, DEBUG_PARAM, undef, $oyParamRef, @_); } push @EXPORT, qw(logDebugParam); #################################################################################################################################### # logDebugReturn # # Log values returned from functions. #################################################################################################################################### use constant DEBUG_RETURN => '=>'; sub logDebugReturn { my $strFunction = shift; return logDebugProcess($strFunction, DEBUG_RETURN, undef, undef, @_); } push @EXPORT, qw(logDebugReturn); #################################################################################################################################### # logDebugMisc # # Log misc values and details during execution. #################################################################################################################################### use constant DEBUG_MISC => ''; sub logDebugMisc { my $strFunction = shift; my $strDetail = shift; return logDebugProcess($strFunction, DEBUG_MISC, $strDetail, undef, @_); } push @EXPORT, qw(logDebugMisc); #################################################################################################################################### # logDebugProcess #################################################################################################################################### sub logDebugProcess { my $strFunction = shift; my $strType = shift; my $strDetail = shift; my $oyParamRef = shift; my $iIndex = 0; my $oParamHash = {}; my @oyResult; my $bLogTrace = true; if ($strType eq DEBUG_PARAM) { push @oyResult, $strFunction; } # Process each parameter hash my $oParam = shift; my $bOptionalBlock = false; # Strip the package name off strFunction if it's pgBackRest $strFunction =~ s/^pgBackRest[^\:]*\:\://; while (defined($oParam)) { my $strParamName = $$oParam{name}; my $bParamOptional = defined($oParam->{optional}) && $oParam->{optional}; my $bParamRequired = !defined($oParam->{required}) || $oParam->{required}; my $oValue; # Should the param be redacted? $oParamHash->{$strParamName}{redact} = $oParam->{redact} ? true : false; # If param is optional then the optional block has been entered if ($bParamOptional) { if (defined($oParam->{required})) { confess &log(ASSERT, "cannot define 'required' for optional parameter '${strParamName}'"); } $bParamRequired = false; $bOptionalBlock = true; } # Don't allow non-optional parameters once optional block has started if ($bParamOptional != $bOptionalBlock) { confess &log(ASSERT, "non-optional parameter '${strParamName}' invalid after optional parameters"); } # Push the return value into the return value array if ($strType eq DEBUG_PARAM) { if ($bParamOptional) { $oValue = $$oyParamRef[$iIndex]->{$strParamName}; } else { $oValue = $$oyParamRef[$iIndex]; } if (defined($oValue)) { push(@oyResult, $oValue); } else { push(@oyResult, $${oParam}{default}); $$oParamHash{$strParamName}{default} = true; } $oValue = $oyResult[-1]; if (!defined($oValue) && $bParamRequired) { confess &log(ASSERT, "${strParamName} is required in ${strFunction}"); } } else { if (ref($$oParam{value}) eq 'ARRAY') { if (defined($$oParam{ref}) && $$oParam{ref}) { push(@oyResult, $$oParam{value}); } else { push(@oyResult, @{$$oParam{value}}); } } else { push(@oyResult, $$oParam{value}); } $oValue = $$oParam{value}; } if (!defined($$oParam{log}) || $$oParam{log}) { # If the parameter is a hash but not blessed then represent it as a string # ??? This should go away once the inputs to logDebug can be changed if (ref($oValue) eq 'HASH' && !blessed($oValue)) { $$oParamHash{$strParamName}{value} = '[hash]'; } # Else log the parameter value exactly else { $$oParamHash{$strParamName}{value} = $oValue; } # There are certain return values that it's wasteful to generate debug logging for if (!($strParamName eq 'self') && (!defined($$oParam{trace}) || !$$oParam{trace})) { $bLogTrace = false; } } # Get the next parameter hash $oParam = shift; if (!$bParamOptional) { $iIndex++; } } if (defined($strDetail) && $iIndex == 0) { $bLogTrace = false; } logDebugOut($strFunction, $strType, $strDetail, $oParamHash, $bLogTrace ? TRACE : DEBUG); # If there are one or zero return values then just return a scalar (this will be undef if there are no return values) if (@oyResult == 1) { return $oyResult[0]; } # Else return an array containing return values return @oyResult; } #################################################################################################################################### # logDebugBuild #################################################################################################################################### sub logDebugBuild { my $strValue = shift; my $rResult; # Value is undefined if (!defined($strValue)) { $rResult = \'[undef]'; } # Value is not a ref, but return it as a ref for efficiency elsif (!ref($strValue)) { $rResult = \$strValue; } # Value is a hash elsif (ref($strValue) eq 'HASH') { my $strValueHash; for my $strSubValue (sort(keys(%{$strValue}))) { $strValueHash .= (defined($strValueHash) ? ', ' : '{') . "${strSubValue} => " . ${logDebugBuild($strValue->{$strSubValue})}; } $rResult = \(defined($strValueHash) ? $strValueHash . '}' : '{}'); } # Value is an array elsif (ref($strValue) eq 'ARRAY') { my $strValueArray; for my $strSubValue (@{$strValue}) { $strValueArray .= (defined($strValueArray) ? ', ' : '(') . ${logDebugBuild($strSubValue)}; } $rResult = \(defined($strValueArray) ? $strValueArray . ')' : '()'); } # Else some other type ??? For the moment this is forced to object to not make big log changes else { $rResult = \('[object]'); } return $rResult; } push @EXPORT, qw(logDebugBuild); #################################################################################################################################### # logDebugOut #################################################################################################################################### use constant DEBUG_STRING_MAX_LEN => 1024; sub logDebugOut { my $strFunction = shift; my $strType = shift; my $strMessage = shift; my $oParamHash = shift; my $strLevel = shift; $strLevel = defined($strLevel) ? $strLevel : DEBUG; if ($oLogLevelRank{$strLevel}{rank} <= $oLogLevelRank{$strLogLevelConsole}{rank} || $oLogLevelRank{$strLevel}{rank} <= $oLogLevelRank{$strLogLevelFile}{rank} || $oLogLevelRank{$strLevel}{rank} <= $oLogLevelRank{$strLogLevelStdErr}{rank}) { if (defined($oParamHash)) { my $strParamSet; foreach my $strParam (sort(keys(%$oParamHash))) { if (defined($strParamSet)) { $strParamSet .= ', '; } my $strValueRef = defined($oParamHash->{$strParam}{value}) ? logDebugBuild($oParamHash->{$strParam}{value}) : undef; my $bDefault = defined($$strValueRef) && defined($$oParamHash{$strParam}{default}) ? $$oParamHash{$strParam}{default} : false; $strParamSet .= "${strParam} = " . ($oParamHash->{$strParam}{redact} && defined($$strValueRef) ? '' : ($bDefault ? '<' : '') . (defined($$strValueRef) ? ($strParam =~ /^(b|is)/ ? ($$strValueRef ? 'true' : 'false'): (length($$strValueRef) > DEBUG_STRING_MAX_LEN ? substr($$strValueRef, 0, DEBUG_STRING_MAX_LEN) . ' ... ': $$strValueRef)) : '[undef]') . ($bDefault ? '>' : '')); } if (defined($strMessage)) { $strMessage = $strMessage . (defined($strParamSet) ? ": ${strParamSet}" : ''); } else { $strMessage = $strParamSet; } } &log($strLevel, "${strFunction}${strType}" . (defined($strMessage) ? ": $strMessage" : '')); } } #################################################################################################################################### # logException #################################################################################################################################### sub logException { my $oException = shift; return &log($oException->level(), $oException->message(), $oException->code(), undef, undef, undef, $oException->extra()); } push @EXPORT, qw(logException); #################################################################################################################################### # logErrorResult #################################################################################################################################### sub logErrorResult { my $iCode = shift; my $strMessage = shift; my $strResult = shift; confess &log(ERROR, $strMessage . (defined($strResult) ? ': ' . trim($strResult) : ''), $iCode); } push @EXPORT, qw(logErrorResult); #################################################################################################################################### # LOG - log messages #################################################################################################################################### sub log { my $strLevel = shift; my $strMessage = shift; my $iCode = shift; my $bSuppressLog = shift; my $iIndent = shift; my $iProcessId = shift; my $rExtra = shift; # Set defaults $bSuppressLog = defined($bSuppressLog) ? $bSuppressLog : false; # Initialize rExtra if (!defined($rExtra)) { $rExtra = { bLogFile => false, bLogConsole => false, }; } # Set operational variables my $strMessageFormat = $strMessage; my $iLogLevelRank = $oLogLevelRank{$strLevel}{rank}; # Level rank must be valid if (!defined($iLogLevelRank)) { confess &log(ASSERT, "log level ${strLevel} does not exist"); } # If message was undefined then set default message if (!defined($strMessageFormat)) { $strMessageFormat = '(undefined)'; } # Set the error code if ($strLevel eq ASSERT) { $iCode = ERROR_ASSERT; } elsif ($strLevel eq ERROR && !defined($iCode)) { $iCode = ERROR_UNKNOWN; } $strMessageFormat = (defined($iCode) ? sprintf('[%03d]: ', $iCode) : '') . $strMessageFormat; # Indent subsequent lines of the message if it has more than one line - makes the log more readable if (defined($iIndent)) { my $strIndent = ' ' x $iIndent; $strMessageFormat =~ s/\n/\n${strIndent}/g; } else { # Indent subsequent message lines so they align $bLogTimestamp ? $strMessageFormat =~ s/\n/\n /g : $strMessageFormat =~ s/\n/\n /g } # Indent TRACE and debug levels so they are distinct from normal messages if ($strLevel eq TRACE) { $strMessageFormat =~ s/\n/\n /g; $strMessageFormat = ' ' . $strMessageFormat; } elsif ($strLevel eq DEBUG) { $strMessageFormat =~ s/\n/\n /g; $strMessageFormat = ' ' . $strMessageFormat; } # Format the message text my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); # If logging warnings as errors then change the display level and rank. These will be used to determine if the message will be # displayed or not. my $strDisplayLevel = ($bLogWarnOnError && $strLevel eq ERROR ? WARN : $strLevel); my $iLogDisplayLevelRank = ($bLogWarnOnError && $strLevel eq ERROR ? $oLogLevelRank{$strDisplayLevel}{rank} : $iLogLevelRank); $strMessageFormat = ($bLogTimestamp ? timestampFormat() . sprintf('.%03d ', (gettimeofday() - int(gettimeofday())) * 1000) : '') . sprintf('P%0*d', $iLogProcessSize, defined($iProcessId) ? $iProcessId : 0) . (' ' x (7 - length($strDisplayLevel))) . "${strDisplayLevel}: ${strMessageFormat}\n"; # Skip output if disabled if (!$bLogDisable) { # Output to stderr if configured log level setting rank is greater than the display level rank. if (!$rExtra->{bLogConsole} && $iLogDisplayLevelRank <= $oLogLevelRank{$strLogLevelStdErr}{rank}) { if ($strLogLevelStdErr ne PROTOCOL) { syswrite(*STDERR, $strDisplayLevel . (defined($iCode) ? sprintf(' [%03d]: ', $iCode) : '') . ': '); } syswrite(*STDERR, "${strMessage}\n"); $rExtra->{bLogConsole} = true; } # Else output to stdout if configured log level setting rank is greater than the display level rank elsif (!$rExtra->{bLogConsole} && $iLogDisplayLevelRank <= $oLogLevelRank{$strLogLevelConsole}{rank}) { if (!$bSuppressLog) { syswrite(*STDOUT, $strMessageFormat); # This is here for debugging purposes - it's not clear how best to make it into a switch # if ($strLevel eq ASSERT || $strLevel eq ERROR) # { # my $strStackTrace = longmess() . "\n"; # $strStackTrace =~ s/\n/\n /g; # syswrite(*STDOUT, $strStackTrace); # } } $rExtra->{bLogConsole} = true; } # Output to file if configured log level setting rank is greater than the display level rank or test flag is set. if (!$rExtra->{bLogLogFile} && $iLogDisplayLevelRank <= $oLogLevelRank{$strLogLevelFile}{rank}) { if (defined($hLogFile) || (defined($strLogLevelFile) && $strLogLevelFile ne OFF)) { if (!$bSuppressLog) { if (defined($hLogFile)) { logBanner(); syswrite($hLogFile, $strMessageFormat); } else { $strLogFileCache .= $strMessageFormat; } if ($strDisplayLevel eq ASSERT || ($strDisplayLevel eq ERROR && ($strLogLevelFile eq DEBUG || $strLogLevelFile eq TRACE))) { my $strStackTrace = longmess() . "\n"; $strStackTrace =~ s/\n/\n /g; if (defined($hLogFile)) { syswrite($hLogFile, $strStackTrace); } else { $strLogFileCache .= $strStackTrace; } } } } $rExtra->{bLogFile} = true; } } # Return a typed exception if code is defined if (defined($iCode)) { $oErrorLast = new pgBackRest::Common::Exception($strLevel, $iCode, $strMessage, longmess(), $rExtra); return $oErrorLast; } # Return the message so it can be used in a confess return $strMessage; } push @EXPORT, qw(log); #################################################################################################################################### # logErrorLast - get the last logged error #################################################################################################################################### sub logErrorLast { return $oErrorLast; } push @EXPORT, qw(logErrorLast); #################################################################################################################################### # logLevel - get the current log levels #################################################################################################################################### sub logLevel { return ($strLogLevelFile, $strLogLevelConsole, $strLogLevelStdErr, $bLogTimestamp); } push @EXPORT, qw(logLevel); #################################################################################################################################### # logFileCacheClear - Clear the log file cache #################################################################################################################################### sub logFileCacheClear { undef($strLogFileCache); } push @EXPORT, qw(logFileCacheClear); #################################################################################################################################### # logFileCache - Get the log file cache #################################################################################################################################### sub logFileCache { return $strLogFileCache; } push @EXPORT, qw(logFileCache); 1; pgbackrest-release-2.24/lib/pgBackRest/Common/String.pm000066400000000000000000000150011362531507100230330ustar00rootroot00000000000000#################################################################################################################################### # COMMON STRING MODULE #################################################################################################################################### package pgBackRest::Common::String; use strict; use warnings FATAL => qw(all); use Carp qw(confess longmess); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); #################################################################################################################################### # trim # # Trim whitespace. #################################################################################################################################### sub trim { my $strBuffer = shift; if (!defined($strBuffer)) { return; } $strBuffer =~ s/^\s+|\s+$//g; return $strBuffer; } push @EXPORT, qw(trim); #################################################################################################################################### # coalesce - return first defined parameter #################################################################################################################################### sub coalesce { foreach my $strParam (@_) { if (defined($strParam)) { return $strParam; } } return; } push @EXPORT, qw(coalesce); #################################################################################################################################### # commonPrefix # # Determine how much of two strings is the same from the beginning. #################################################################################################################################### sub commonPrefix { my $strString1 = shift; my $strString2 = shift; my $iCommonLen = 0; my $iCompareLen = length($strString1) < length($strString2) ? length($strString1) : length($strString2); for (my $iIndex = 0; $iIndex < $iCompareLen; $iIndex++) { if (substr($strString1, $iIndex, 1) ne substr($strString2, $iIndex, 1)) { last; } $iCommonLen++; } return $iCommonLen; } push @EXPORT, qw(commonPrefix); #################################################################################################################################### # boolFormat # # Output boolean as true or false. #################################################################################################################################### sub boolFormat { return shift() ? 'true' : 'false'; } push @EXPORT, qw(boolFormat); #################################################################################################################################### # fileSizeFormat # # Format file sizes in human-readable form. #################################################################################################################################### sub fileSizeFormat { my $lFileSize = shift; if ($lFileSize < 1024) { return $lFileSize . 'B'; } if ($lFileSize < (1024 * 1024)) { return (int($lFileSize / 102.4) / 10) . 'KB'; } if ($lFileSize < (1024 * 1024 * 1024)) { return (int($lFileSize / 1024 / 102.4) / 10) . 'MB'; } return (int($lFileSize / 1024 / 1024 / 102.4) / 10) . 'GB'; } push @EXPORT, qw(fileSizeFormat); #################################################################################################################################### # timestampFormat # # Get standard timestamp format (or formatted as specified). #################################################################################################################################### sub timestampFormat { my $strFormat = shift; my $lTime = shift; if (!defined($strFormat)) { $strFormat = '%4d-%02d-%02d %02d:%02d:%02d'; } if (!defined($lTime)) { $lTime = time(); } my ($iSecond, $iMinute, $iHour, $iMonthDay, $iMonth, $iYear, $iWeekDay, $iYearDay, $bIsDst) = localtime($lTime); if ($strFormat eq "%4d") { return sprintf($strFormat, $iYear + 1900) } else { return sprintf($strFormat, $iYear + 1900, $iMonth + 1, $iMonthDay, $iHour, $iMinute, $iSecond); } } push @EXPORT, qw(timestampFormat); #################################################################################################################################### # timestampFileFormat #################################################################################################################################### sub timestampFileFormat { my $strFormat = shift; my $lTime = shift; return timestampFormat(defined($strFormat) ? $strFormat : '%4d%02d%02d-%02d%02d%02d', $lTime); } push @EXPORT, qw(timestampFileFormat); #################################################################################################################################### # stringSplit #################################################################################################################################### sub stringSplit { my $strString = shift; my $strChar = shift; my $iLength = shift; if (length($strString) <= $iLength) { return $strString, undef; } my $iPos = index($strString, $strChar); if ($iPos == -1) { return $strString, undef; } my $iNewPos = $iPos; while ($iNewPos != -1 && $iNewPos + 1 < $iLength) { $iPos = $iNewPos; $iNewPos = index($strString, $strChar, $iPos + 1); } return substr($strString, 0, $iPos + 1), substr($strString, $iPos + 1); } push @EXPORT, qw(stringSplit); #################################################################################################################################### # regexPrefix - return the constant first part of the regex if it has a beginning anchor # # This works by scanning the string until the first special regex character is found so escaped characters will not be included. #################################################################################################################################### sub regexPrefix { my $strExpression = shift; my $strPrefix; # Only generate prefix if expression is defined and has a beginning anchor if (defined($strExpression) && $strExpression =~ /^\^/) { ($strPrefix) = substr($strExpression, 1) =~ /^[^\.\^\$\*\+\-\?\(\)\[\]\{\}\\\|\ ]+/g; } return $strPrefix; } push @EXPORT, qw(regexPrefix); 1; pgbackrest-release-2.24/lib/pgBackRest/Common/Wait.pm000066400000000000000000000117671362531507100225100ustar00rootroot00000000000000#################################################################################################################################### # COMMON WAIT MODULE #################################################################################################################################### package pgBackRest::Common::Wait; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use POSIX qw(ceil); use Time::HiRes qw(gettimeofday usleep); use pgBackRest::Common::Log; #################################################################################################################################### # Wait constants #################################################################################################################################### use constant WAIT_TIME_MINIMUM => .1; push @EXPORT, qw(WAIT_TIME_MINIMUM); #################################################################################################################################### # waitRemainder #################################################################################################################################### sub waitRemainder { my $bWait = shift; my $lTimeBegin = gettimeofday(); if (!defined($bWait) || $bWait) { my $lSleepMs = ceil(((int($lTimeBegin) + 1.05) - $lTimeBegin) * 1000); usleep($lSleepMs * 1000); &log(TRACE, "WAIT_REMAINDER: slept ${lSleepMs}ms: begin ${lTimeBegin}, end " . gettimeofday()); } return int($lTimeBegin); } push @EXPORT, qw(waitRemainder); #################################################################################################################################### # waitHiRes #################################################################################################################################### sub waitHiRes { my $fSecond = shift; return usleep($fSecond * 1000000); } push @EXPORT, qw(waitHiRes); #################################################################################################################################### # waitInit #################################################################################################################################### sub waitInit { my $fWaitTime = shift; my $fSleep = shift; # Declare oWait hash my $oWait = {}; # If wait seconds is not defined or 0 then return undef if (!defined($fWaitTime) || $fWaitTime == 0) { return; } # Wait seconds can be a minimum of .1 if ($fWaitTime < .1) { confess &log(ASSERT, 'fWaitTime cannot be < .1'); } # If fSleep is not defined set it if (!defined($fSleep)) { if ($fWaitTime >= 1) { $$oWait{sleep} = .1; } else { $$oWait{sleep} = $fWaitTime / 10; } } # Else make sure it's not greater than fWaitTime else { # Make sure fsleep is less than fWaitTime if ($fSleep >= $fWaitTime) { confess &log(ASSERT, 'fSleep > fWaitTime - this is useless'); } } # Set variables $$oWait{wait_time} = $fWaitTime; $$oWait{time_begin} = gettimeofday(); $$oWait{time_end} = $$oWait{time_begin}; return $oWait; } push @EXPORT, qw(waitInit); #################################################################################################################################### # waitMore #################################################################################################################################### sub waitMore { my $oWait = shift; # Return if oWait is not defined if (!defined($oWait)) { return false; } # Sleep for fSleep time waitHiRes($$oWait{sleep}); # Capture the end time $$oWait{time_end} = gettimeofday(); # Exit if wait time has expired if ((gettimeofday() - $$oWait{time_begin}) < $$oWait{wait_time}) { return true; } # Else calculate the new sleep time my $fSleepNext = $$oWait{sleep} + (defined($$oWait{sleep_prev}) ? $$oWait{sleep_prev} : 0); if ($fSleepNext > $$oWait{wait_time} - ($$oWait{time_end} - $$oWait{time_begin})) { $fSleepNext = ($$oWait{wait_time} - ($$oWait{time_end} - $$oWait{time_begin})) + .001 } $$oWait{sleep_prev} = $$oWait{sleep}; $$oWait{sleep} = $fSleepNext; return false; } push @EXPORT, qw(waitMore); #################################################################################################################################### # waitInterval #################################################################################################################################### sub waitInterval { my $oWait = shift; # Error if oWait is not defined if (!defined($oWait)) { confess &log(ERROR, "oWait is not defined"); } return int(($$oWait{time_end} - $$oWait{time_begin}) * 1000) / 1000; } push @EXPORT, qw(waitInterval); 1; pgbackrest-release-2.24/lib/pgBackRest/Config/000077500000000000000000000000001362531507100212075ustar00rootroot00000000000000pgbackrest-release-2.24/lib/pgBackRest/Config/Config.pm000066400000000000000000000412621362531507100227570ustar00rootroot00000000000000#################################################################################################################################### # CONFIG MODULE #################################################################################################################################### package pgBackRest::Config::Config; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Exporter qw(import); our @EXPORT = qw(); use JSON::PP; use pgBackRest::Common::Exception; use pgBackRest::Common::Ini; use pgBackRest::Common::Io::Base; use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Common::Wait; use pgBackRest::LibC qw(:config :configDefine); use pgBackRest::Version; #################################################################################################################################### # Export config constants and functions #################################################################################################################################### push(@EXPORT, @{$pgBackRest::LibC::EXPORT_TAGS{config}}); push(@EXPORT, @{$pgBackRest::LibC::EXPORT_TAGS{configDefine}}); #################################################################################################################################### # SOURCE Constants #################################################################################################################################### use constant CFGDEF_SOURCE_CONFIG => 'config'; push @EXPORT, qw(CFGDEF_SOURCE_CONFIG); use constant CFGDEF_SOURCE_PARAM => 'param'; push @EXPORT, qw(CFGDEF_SOURCE_PARAM); use constant CFGDEF_SOURCE_DEFAULT => 'default'; push @EXPORT, qw(CFGDEF_SOURCE_DEFAULT); #################################################################################################################################### # Configuration section constants #################################################################################################################################### use constant CFGDEF_SECTION_GLOBAL => 'global'; push @EXPORT, qw(CFGDEF_SECTION_GLOBAL); use constant CFGDEF_SECTION_STANZA => 'stanza'; push @EXPORT, qw(CFGDEF_SECTION_STANZA); #################################################################################################################################### # Module variables #################################################################################################################################### my %oOption; # Option hash my $strCommand; # Command (backup, archive-get, ...) my $bInitLog = false; # Has logging been initialized yet? #################################################################################################################################### # configLogging - configure logging based on options #################################################################################################################################### sub configLogging { my $bLogInitForce = shift; if ($bInitLog || (defined($bLogInitForce) && $bLogInitForce)) { logLevelSet( cfgOptionValid(CFGOPT_LOG_LEVEL_FILE) ? cfgOption(CFGOPT_LOG_LEVEL_FILE) : OFF, cfgOptionValid(CFGOPT_LOG_LEVEL_CONSOLE) ? cfgOption(CFGOPT_LOG_LEVEL_CONSOLE) : OFF, cfgOptionValid(CFGOPT_LOG_LEVEL_STDERR) ? cfgOption(CFGOPT_LOG_LEVEL_STDERR) : OFF, cfgOptionValid(CFGOPT_LOG_TIMESTAMP) ? cfgOption(CFGOPT_LOG_TIMESTAMP) : undef, cfgOptionValid(CFGOPT_PROCESS_MAX) ? cfgOption(CFGOPT_PROCESS_MAX) : undef); $bInitLog = true; } } push @EXPORT, qw(configLogging); #################################################################################################################################### # Load configuration # # Additional conditions that cannot be codified by the option definitions are also tested here. #################################################################################################################################### sub configLoad { my $bInitLogging = shift; my $strBackRestBin = shift; my $strCommandName = shift; my $rstrConfigJson = shift; # Set backrest bin projectBinSet($strBackRestBin); # Set command $strCommand = $strCommandName; eval { %oOption = %{(JSON::PP->new()->allow_nonref())->decode($$rstrConfigJson)}; return true; } or do { confess &log(ASSERT, "unable to parse config JSON"); }; # Load options into final option hash for (my $iOptionId = 0; $iOptionId < cfgOptionTotal(); $iOptionId++) { my $strOptionName = cfgOptionName($iOptionId); # If option is defined it is valid if (defined($oOption{$strOptionName})) { # Convert JSON bool to standard bool that Perl understands if (cfgDefOptionType($iOptionId) eq CFGDEF_TYPE_BOOLEAN && defined($oOption{$strOptionName}{value})) { $oOption{$strOptionName}{value} = $oOption{$strOptionName}{value} eq INI_TRUE ? true : false; } } # Else it is not valid else { $oOption{$strOptionName}{valid} = false; } } # If this is not the remote and logging is allowed (to not overwrite log levels for tests) then set the log level so that # INFO/WARN messages can be displayed (the user may still disable them). This should be run before any WARN logging is # generated. if (!defined($bInitLogging) || $bInitLogging) { configLogging(true); } return true; } push @EXPORT, qw(configLoad); #################################################################################################################################### # cfgOptionIdFromIndex - return name for options that can be indexed (e.g. pg1-host, pg2-host). #################################################################################################################################### sub cfgOptionIdFromIndex { my $iOptionId = shift; my $iIndex = shift; # If the option doesn't have a prefix it can't be indexed $iIndex = defined($iIndex) ? $iIndex : 1; my $strPrefix = cfgDefOptionPrefix($iOptionId); if (!defined($strPrefix)) { if ($iIndex > 1) { confess &log(ASSERT, "'" . cfgOptionName($iOptionId) . "' option does not allow indexing"); } return $iOptionId; } return cfgOptionId("${strPrefix}${iIndex}" . substr(cfgOptionName($iOptionId), index(cfgOptionName($iOptionId), '-'))); } push @EXPORT, qw(cfgOptionIdFromIndex); #################################################################################################################################### # cfgOptionSource - how was the option set? #################################################################################################################################### sub cfgOptionSource { my $iOptionId = shift; cfgOptionValid($iOptionId, true); return $oOption{cfgOptionName($iOptionId)}{source}; } push @EXPORT, qw(cfgOptionSource); #################################################################################################################################### # cfgOptionValid - is the option valid for the current command? #################################################################################################################################### sub cfgOptionValid { my $iOptionId = shift; my $bError = shift; # If defined then this is the command help is being generated for so all valid checks should be against that command my $iCommandId; if (defined($strCommand)) { $iCommandId = cfgCommandId($strCommand); } if (defined($iCommandId) && cfgDefOptionValid($iCommandId, $iOptionId)) { return true; } if (defined($bError) && $bError) { my $strOption = cfgOptionName($iOptionId); if (!defined($oOption{$strOption})) { confess &log(ASSERT, "option '${strOption}' does not exist"); } confess &log(ASSERT, "option '${strOption}' not valid for command '" . cfgCommandName(cfgCommandGet()) . "'"); } return false; } push @EXPORT, qw(cfgOptionValid); #################################################################################################################################### # cfgOption - get option value #################################################################################################################################### sub cfgOption { my $iOptionId = shift; my $bRequired = shift; cfgOptionValid($iOptionId, true); my $strOption = cfgOptionName($iOptionId); if (!defined($oOption{$strOption}{value}) && (!defined($bRequired) || $bRequired)) { confess &log(ASSERT, "option ${strOption} is required"); } return $oOption{$strOption}{value}; } push @EXPORT, qw(cfgOption); #################################################################################################################################### # cfgOptionDefault - get option default value #################################################################################################################################### sub cfgOptionDefault { my $iOptionId = shift; cfgOptionValid($iOptionId, true); return cfgDefOptionDefault(cfgCommandId($strCommand), $iOptionId); } push @EXPORT, qw(cfgOptionDefault); #################################################################################################################################### # cfgOptionSet - set option value and source #################################################################################################################################### sub cfgOptionSet { my $iOptionId = shift; my $oValue = shift; my $bForce = shift; my $strOption = cfgOptionName($iOptionId); if (!cfgOptionValid($iOptionId, !defined($bForce) || !$bForce)) { $oOption{$strOption}{valid} = true; } $oOption{$strOption}{source} = CFGDEF_SOURCE_PARAM; $oOption{$strOption}{value} = $oValue; } push @EXPORT, qw(cfgOptionSet); #################################################################################################################################### # cfgOptionTest - test if an option exists or has a specific value #################################################################################################################################### sub cfgOptionTest { my $iOptionId = shift; my $strValue = shift; if (!cfgOptionValid($iOptionId)) { return false; } if (defined($strValue)) { return cfgOption($iOptionId) eq $strValue ? true : false; } return defined($oOption{cfgOptionName($iOptionId)}{value}) ? true : false; } push @EXPORT, qw(cfgOptionTest); #################################################################################################################################### # cfgCommandGet - get the current command #################################################################################################################################### sub cfgCommandGet { return cfgCommandId($strCommand); } push @EXPORT, qw(cfgCommandGet); #################################################################################################################################### # cfgCommandTest - test that the current command is equal to the provided value #################################################################################################################################### sub cfgCommandTest { my $iCommandIdTest = shift; return cfgCommandName($iCommandIdTest) eq $strCommand; } push @EXPORT, qw(cfgCommandTest); #################################################################################################################################### # Set current command #################################################################################################################################### sub cfgCommandSet { my $iCommandId = shift; $strCommand = cfgCommandName($iCommandId); } push @EXPORT, qw(cfgCommandSet); #################################################################################################################################### # cfgCommandWrite - using the options for the current command, write the command string for another command # # For example, this can be used to write the archive-get command for recovery.conf during a restore. #################################################################################################################################### sub cfgCommandWrite { my $iNewCommandId = shift; my $bIncludeConfig = shift; my $strExeString = shift; my $bIncludeCommand = shift; my $oOptionOverride = shift; my $bDisplayOnly = shift; # Set defaults $strExeString = defined($strExeString) ? $strExeString : projectBin(); $bIncludeConfig = defined($bIncludeConfig) ? $bIncludeConfig : false; $bIncludeCommand = defined($bIncludeCommand) ? $bIncludeCommand : true; # Iterate the options to figure out which ones are not default and need to be written out to the new command string for (my $iOptionId = 0; $iOptionId < cfgOptionTotal(); $iOptionId++) { my $strOption = cfgOptionName($iOptionId); my $bSecure = cfgDefOptionSecure($iOptionId); # Skip option if it is secure and should not be output in logs or the command line next if (($bSecure || $iOptionId == CFGOPT_REPO_CIPHER_TYPE) && !$bDisplayOnly); # Process any option id overrides first if (defined($oOptionOverride->{$iOptionId})) { if (defined($oOptionOverride->{$iOptionId}{value})) { $strExeString .= cfgCommandWriteOptionFormat( $strOption, false, $bSecure, {value => $oOptionOverride->{$iOptionId}{value}}); } } # And process overrides passed by string - this is used by Perl compatibility functions elsif (defined($oOptionOverride->{$strOption})) { if (defined($oOptionOverride->{$strOption}{value})) { $strExeString .= cfgCommandWriteOptionFormat( $strOption, false, $bSecure, {value => $oOptionOverride->{$strOption}{value}}); } } # else look for non-default options in the current configuration elsif (cfgDefOptionValid($iNewCommandId, $iOptionId) && defined($oOption{$strOption}{value}) && ($bIncludeConfig ? $oOption{$strOption}{source} ne CFGDEF_SOURCE_DEFAULT : $oOption{$strOption}{source} eq CFGDEF_SOURCE_PARAM)) { my $oValue; my $bMulti = false; # If this is a hash then it will break up into multiple command-line options if (ref($oOption{$strOption}{value}) eq 'HASH') { $oValue = $oOption{$strOption}{value}; $bMulti = true; } # Else a single value but store it in a hash anyway to make processing below simpler else { $oValue = {value => $oOption{$strOption}{value}}; } $strExeString .= cfgCommandWriteOptionFormat($strOption, $bMulti, $bSecure, $oValue); } # Else is reset elsif (cfgDefOptionValid($iNewCommandId, $iOptionId) && $oOption{$strOption}{reset}) { $strExeString .= " --reset-${strOption}"; } } if ($bIncludeCommand) { $strExeString .= ' ' . cfgCommandName($iNewCommandId); } return $strExeString; } push @EXPORT, qw(cfgCommandWrite); # Helper function for cfgCommandWrite() to correctly format options for command-line usage sub cfgCommandWriteOptionFormat { my $strOption = shift; my $bMulti = shift; my $bSecure = shift; my $oValue = shift; # Loops though all keys in the hash my $strOptionFormat = ''; my $strParam; foreach my $strKey (sort(keys(%$oValue))) { # Get the value - if the original value was a hash then the key must be prefixed my $strValue = $bSecure ? '' : ($bMulti ? "${strKey}=" : '') . $$oValue{$strKey}; # Handle the no- prefix for boolean values if (cfgDefOptionType(cfgOptionId($strOption)) eq CFGDEF_TYPE_BOOLEAN) { $strParam = '--' . ($strValue ? '' : 'no-') . $strOption; } else { $strParam = "--${strOption}=${strValue}"; } # Add quotes if the value has spaces in it $strOptionFormat .= ' ' . (index($strValue, " ") != -1 ? "\"${strParam}\"" : $strParam); } return $strOptionFormat; } 1; pgbackrest-release-2.24/lib/pgBackRest/Db.pm000066400000000000000000000601341362531507100206710ustar00rootroot00000000000000#################################################################################################################################### # DB MODULE #################################################################################################################################### package pgBackRest::Db; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Exporter qw(import); our @EXPORT = qw(); use Fcntl qw(O_RDONLY); use File::Basename qw(dirname); use JSON::PP; use pgBackRest::DbVersion; use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Common::Wait; use pgBackRest::Config::Config; use pgBackRest::Manifest; use pgBackRest::Protocol::Storage::Helper; use pgBackRest::Version; #################################################################################################################################### # Backup advisory lock #################################################################################################################################### use constant DB_BACKUP_ADVISORY_LOCK => '12340078987004321'; push @EXPORT, qw(DB_BACKUP_ADVISORY_LOCK); #################################################################################################################################### # Map the control and catalog versions to PostgreSQL version. # # The control version can be found in src/include/catalog/pg_control.h and may not change with every version of PostgreSQL but is # still checked to detect custom builds which change the structure. The catalog version can be found in # src/include/catalog/catversion.h and should change with every release. #################################################################################################################################### my $oPgControlVersionHash = { # iControlVersion => {iCatalogVersion => strDbVersion} 833 => {200711281 => PG_VERSION_83}, 843 => {200904091 => PG_VERSION_84}, 903 => { 201008051 => PG_VERSION_90, 201105231 => PG_VERSION_91, }, 922 => {201204301 => PG_VERSION_92}, 937 => {201306121 => PG_VERSION_93}, 942 => { 201409291 => PG_VERSION_94, 201510051 => PG_VERSION_95, }, 960 => { 201608131 => PG_VERSION_96, }, 1002 => { 201707211 => PG_VERSION_10, }, 1100 => { 201809051 => PG_VERSION_11, }, 1201 => { 201909212 => PG_VERSION_12, }, }; #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Class name # Create the class hash my $self = {}; bless $self, $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{iRemoteIdx}, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'iRemoteIdx', required => false}, ); if (defined($self->{iRemoteIdx})) { $self->{strDbPath} = cfgOption(cfgOptionIdFromIndex(CFGOPT_PG_PATH, $self->{iRemoteIdx})); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # DESTRUCTOR #################################################################################################################################### sub DESTROY { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->DESTROY'); if (defined($self->{oDb})) { $self->{oDb}->close(); undef($self->{oDb}); } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # connect #################################################################################################################################### sub connect { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $bWarnOnError, ) = logDebugParam ( __PACKAGE__ . '::connect', \@_, {name => 'bWarnOnError', default => false}, ); # Only connect if not already connected my $bResult = true; if (!defined($self->{oDb})) { $self->{oDb} = new pgBackRest::LibC::PgClient( cfgOption(cfgOptionIdFromIndex(CFGOPT_PG_SOCKET_PATH, $self->{iRemoteIdx}), false), cfgOption(cfgOptionIdFromIndex(CFGOPT_PG_PORT, $self->{iRemoteIdx})), 'postgres', cfgOption(CFGOPT_DB_TIMEOUT) * 1000); if ($bWarnOnError) { eval { $self->{oDb}->open(); return true; } or do { &log(WARN, exceptionMessage($EVAL_ERROR)); $bResult = false; undef($self->{oDb}); } } else { $self->{oDb}->open(); } if (defined($self->{oDb})) { my ($fDbVersion) = $self->versionGet(); if ($fDbVersion >= PG_VERSION_APPLICATION_NAME) { # Set application name for monitoring and debugging $self->{oDb}->query("set application_name = '" . PROJECT_NAME . ' [' . cfgCommandName(cfgCommandGet()) . "]'"); # Clear search path to prevent possible function overrides $self->{oDb}->query("set search_path = 'pg_catalog'"); } } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bResult', value => $bResult} ); } #################################################################################################################################### # executeSql #################################################################################################################################### sub executeSql { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strSql, $bIgnoreError, $bResult, ) = logDebugParam ( __PACKAGE__ . '::executeSql', \@_, {name => 'strSql'}, {name => 'bIgnoreError', default => false}, {name => 'bResult', default => true}, ); # Get the user-defined command for psql my @stryResult; $self->connect(); my $strResult = $self->{oDb}->query($strSql); if (defined($strResult)) { @stryResult = @{JSON::PP->new()->allow_nonref()->decode($strResult)}; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'stryResult', value => \@stryResult, ref => true} ); } #################################################################################################################################### # executeSqlRow #################################################################################################################################### sub executeSqlRow { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strSql ) = logDebugParam ( __PACKAGE__ . '->executeSqlRow', \@_, {name => 'strSql'} ); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'stryResult', value => @{$self->executeSql($strSql)}[0]} ); } #################################################################################################################################### # executeSqlOne #################################################################################################################################### sub executeSqlOne { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strSql ) = logDebugParam ( __PACKAGE__ . '->executeSqlOne', \@_, {name => 'strSql'} ); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strResult', value => @{@{$self->executeSql($strSql)}[0]}[0]} ); } #################################################################################################################################### # info #################################################################################################################################### sub info { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strDbPath ) = logDebugParam ( __PACKAGE__ . '->info', \@_, {name => 'strDbPath', default => $self->{strDbPath}} ); # Get info if it is not cached #------------------------------------------------------------------------------------------------------------------------------- if (!defined($self->{info}{$strDbPath})) { # Open the control file and read system id and versions #----------------------------------------------------------------------------------------------------------------------- my $strControlFile = "${strDbPath}/" . DB_FILE_PGCONTROL; my $hFile; my $tBlock; sysopen($hFile, $strControlFile, O_RDONLY) or confess &log(ERROR, "unable to open ${strControlFile}", ERROR_FILE_OPEN); # Read system identifier sysread($hFile, $tBlock, 8) == 8 or confess &log(ERROR, "unable to read database system identifier"); $self->{info}{$strDbPath}{ullDbSysId} = unpack('Q', $tBlock); # Read control version sysread($hFile, $tBlock, 4) == 4 or confess &log(ERROR, "unable to read control version"); $self->{info}{$strDbPath}{iDbControlVersion} = unpack('L', $tBlock); # Read catalog version sysread($hFile, $tBlock, 4) == 4 or confess &log(ERROR, "unable to read catalog version"); $self->{info}{$strDbPath}{iDbCatalogVersion} = unpack('L', $tBlock); # Close the control file close($hFile); # Get PostgreSQL version $self->{info}{$strDbPath}{strDbVersion} = $oPgControlVersionHash->{$self->{info}{$strDbPath}{iDbControlVersion}} {$self->{info}{$strDbPath}{iDbCatalogVersion}}; if (!defined($self->{info}{$strDbPath}{strDbVersion})) { confess &log( ERROR, 'unexpected control version = ' . $self->{info}{$strDbPath}{iDbControlVersion} . ' and catalog version = ' . $self->{info}{$strDbPath}{iDbCatalogVersion} . "\n" . 'HINT: is this version of PostgreSQL supported?', ERROR_VERSION_NOT_SUPPORTED); } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strDbVersion', value => $self->{info}{$strDbPath}{strDbVersion}}, {name => 'iDbControlVersion', value => $self->{info}{$strDbPath}{iDbControlVersion}}, {name => 'iDbCatalogVersion', value => $self->{info}{$strDbPath}{iDbCatalogVersion}}, {name => 'ullDbSysId', value => $self->{info}{$strDbPath}{ullDbSysId}} ); } #################################################################################################################################### # versionGet #################################################################################################################################### sub versionGet { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->versionGet'); # Get data from the cache if possible if (defined($self->{strDbVersion}) && defined($self->{strDbPath})) { return $self->{strDbVersion}, $self->{strDbPath}; } # Get version and pg-path from my ($strVersionNum, $strDbPath) = $self->executeSqlRow( "select (select setting from pg_settings where name = 'server_version_num'), " . " (select setting from pg_settings where name = 'data_directory')"); # Get first part of the major version - for 10 and above there will only be one part $self->{strDbVersion} = substr($strVersionNum, 0, length($strVersionNum) - 4); # Now retrieve the second part of the major version for versions less than 10 if ($self->{strDbVersion} < PG_VERSION_10) { $self->{strDbVersion} .= qw{.} . int(substr($strVersionNum, 1, 2)); } # Check that the version is supported my @stryVersionSupport = versionSupport(); if ($self->{strDbVersion} < $stryVersionSupport[0]) { confess &log(ERROR, 'unsupported Postgres version' . $self->{strDbVersion}, ERROR_VERSION_NOT_SUPPORTED); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strDbVersion', value => $self->{strDbVersion}}, {name => 'strDbPath', value => $strDbPath} ); } #################################################################################################################################### # configValidate # # Validate the database configuration and archiving. #################################################################################################################################### sub configValidate { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, ) = logDebugParam ( __PACKAGE__ . '->configValidate', \@_, ); # Get the version from the control file my ($strDbVersion) = $self->info(); # Get version and db path from the database my ($fCompareDbVersion, $strCompareDbPath) = $self->versionGet(); # Error if the version from the control file and the configured pg-path do not match the values obtained from the database if (!($strDbVersion == $fCompareDbVersion && $self->{strDbPath} eq $strCompareDbPath)) { confess &log(ERROR, "version '${fCompareDbVersion}' and path '${strCompareDbPath}' queried from cluster do not match version" . " '${strDbVersion}' and " . cfgOptionName(CFGOPT_PG_PATH) . " '$self->{strDbPath}' read from" . " '$self->{strDbPath}/" . DB_FILE_PGCONTROL . "'\n" . "HINT: the " . cfgOptionName(CFGOPT_PG_PATH) . " and " . cfgOptionName(CFGOPT_PG_PORT) . " settings likely reference different clusters.", ERROR_DB_MISMATCH); } # If cluster is not a standby and archive checking is enabled, then perform various validations if (!$self->isStandby() && cfgOptionValid(CFGOPT_ARCHIVE_CHECK) && cfgOption(CFGOPT_ARCHIVE_CHECK)) { my $strArchiveMode = $self->executeSqlOne('show archive_mode'); # Error if archive_mode = off since pg_start_backup () will fail if ($strArchiveMode eq 'off') { confess &log(ERROR, 'archive_mode must be enabled', ERROR_ARCHIVE_DISABLED); } # Error if archive_mode = always (support has not been added yet) if ($strArchiveMode eq 'always') { confess &log(ERROR, "archive_mode=always not supported", ERROR_FEATURE_NOT_SUPPORTED); } # Check if archive_command is set my $strArchiveCommand = $self->executeSqlOne('show archive_command'); if (index($strArchiveCommand, PROJECT_EXE) == -1) { confess &log(ERROR, 'archive_command ' . (defined($strArchiveCommand) ? "'${strArchiveCommand}'" : '[null]') . ' must contain \'' . PROJECT_EXE . '\'', ERROR_ARCHIVE_COMMAND_INVALID); } } return logDebugReturn ( $strOperation ); } #################################################################################################################################### # walId # # Returns 'wal' or 'xlog' depending on the version of PostgreSQL. #################################################################################################################################### sub walId { my $self = shift; return $self->{strDbVersion} >= PG_VERSION_10 ? 'wal' : 'xlog'; } #################################################################################################################################### # isStandby # # Determines if a database is a standby by testing if it is in recovery mode. #################################################################################################################################### sub isStandby { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->isStandby'); if (!defined($self->{bStandby})) { my ($strDbVersion) = $self->versionGet(); if ($strDbVersion <= PG_VERSION_90) { $self->{bStandby} = false; } else { $self->{bStandby} = $self->executeSqlOne('select pg_is_in_recovery()') ? true : false; } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bStandby', value => $self->{bStandby}} ); } #################################################################################################################################### # dbObjectGet # # Gets the database objects(s) and indexes. The databases required for the backup type must be online. A connection to the available # databases will be established to determine which is the master and which, if any, is the standby. If there is a master and a # standby to which a connection can be established, it returns both, else just the master. #################################################################################################################################### sub dbObjectGet { # Assign function parameters, defaults, and log debug info my ( $strOperation, $bMasterOnly, ) = logDebugParam ( __PACKAGE__ . '::dbObjectGet', \@_, {name => 'bMasterOnly', optional => true, default => false}, ); my $iStandbyIdx = undef; my $iMasterRemoteIdx = 1; my $oDbMaster = undef; my $oDbStandby = undef; # Only iterate databases if online and more than one is defined. It might be better to check the version of each database but # this is simple and works. if (!$bMasterOnly && cfgOptionTest(CFGOPT_ONLINE) && cfgOption(CFGOPT_ONLINE) && multipleDb()) { for (my $iRemoteIdx = 1; $iRemoteIdx <= cfgOptionIndexTotal(CFGOPT_PG_HOST); $iRemoteIdx++) { # Make sure a db is defined for this index if (cfgOptionTest(cfgOptionIdFromIndex(CFGOPT_PG_PATH, $iRemoteIdx)) || cfgOptionTest(cfgOptionIdFromIndex(CFGOPT_PG_HOST, $iRemoteIdx))) { # Create the db object my $oDb; logWarnOnErrorEnable(); eval { $oDb = new pgBackRest::Db($iRemoteIdx); return true; } or do {}; logWarnOnErrorDisable(); my $bAssigned = false; if (defined($oDb)) { # If able to connect then test if the database is a master or a standby. It's OK if some databases cannot be # reached as long as the databases required for the backup type are present. if ($oDb->connect(true)) { # If this db is a standby if ($oDb->isStandby()) { # If standby backup is requested then use the first standby found if (cfgOption(CFGOPT_BACKUP_STANDBY) && !defined($oDbStandby)) { $oDbStandby = $oDb; $iStandbyIdx = $iRemoteIdx; $bAssigned = true; } } # Else this db is a master else { # Error if more than one master is found if (defined($oDbMaster)) { confess &log(ERROR, 'more than one master database found'); } $oDbMaster = $oDb; $iMasterRemoteIdx = $iRemoteIdx; $bAssigned = true; } } } } } # Make sure a standby database is defined when backup from standby option is set if (cfgOption(CFGOPT_BACKUP_STANDBY) && !defined($oDbStandby)) { # Throw an error that is distinct from connecting to the master for testing purposes confess &log(ERROR, 'unable to find standby database - cannot proceed', ERROR_HOST_CONNECT); } # A master database is always required if (!defined($oDbMaster)) { # Throw an error that is distinct from connecting to a standy for testing purposes confess &log(ERROR, 'unable to find master database - cannot proceed', ERROR_DB_CONNECT); } } # If master db is not already defined then set to default if (!defined($oDbMaster)) { $oDbMaster = new pgBackRest::Db($iMasterRemoteIdx); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oDbMaster', value => $oDbMaster}, {name => 'iDbMasterIdx', value => $iMasterRemoteIdx}, {name => 'oDbStandby', value => $oDbStandby}, {name => 'iDbStandbyIdx', value => $iStandbyIdx}, ); } push @EXPORT, qw(dbObjectGet); #################################################################################################################################### # dbMasterGet # # Usually only the master database is required so this function makes getting it simple. If in offline mode (which is true for a # lot of archive operations) then the database returned is simply the first configured. #################################################################################################################################### sub dbMasterGet { # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '::dbMasterGet'); my ($oDbMaster) = dbObjectGet({bMasterOnly => true}); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oDbMaster', value => $oDbMaster, trace => true}, ); } push @EXPORT, qw(dbMasterGet); #################################################################################################################################### # multipleDb # # Helper function to determine if there is more than one database defined. #################################################################################################################################### sub multipleDb { for (my $iDbPathIdx = 2; $iDbPathIdx <= cfgOptionIndexTotal(CFGOPT_PG_PATH); $iDbPathIdx++) { # If an index exists above 1 then return true if (cfgOptionTest(cfgOptionIdFromIndex(CFGOPT_PG_PATH, $iDbPathIdx))) { return true; } } return false; } 1; pgbackrest-release-2.24/lib/pgBackRest/DbVersion.pm000066400000000000000000000075131362531507100222410ustar00rootroot00000000000000#################################################################################################################################### # DB VERSION MODULE #################################################################################################################################### package pgBackRest::DbVersion; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use pgBackRest::Common::Log; #################################################################################################################################### # Supported page size #################################################################################################################################### use constant PG_PAGE_SIZE => 8192; push @EXPORT, qw(PG_PAGE_SIZE); #################################################################################################################################### # PostgreSQL version numbers #################################################################################################################################### use constant PG_VERSION_83 => '8.3'; push @EXPORT, qw(PG_VERSION_83); use constant PG_VERSION_84 => '8.4'; push @EXPORT, qw(PG_VERSION_84); use constant PG_VERSION_90 => '9.0'; push @EXPORT, qw(PG_VERSION_90); use constant PG_VERSION_91 => '9.1'; push @EXPORT, qw(PG_VERSION_91); use constant PG_VERSION_92 => '9.2'; push @EXPORT, qw(PG_VERSION_92); use constant PG_VERSION_93 => '9.3'; push @EXPORT, qw(PG_VERSION_93); use constant PG_VERSION_94 => '9.4'; push @EXPORT, qw(PG_VERSION_94); use constant PG_VERSION_95 => '9.5'; push @EXPORT, qw(PG_VERSION_95); use constant PG_VERSION_96 => '9.6'; push @EXPORT, qw(PG_VERSION_96); use constant PG_VERSION_10 => '10'; push @EXPORT, qw(PG_VERSION_10); use constant PG_VERSION_11 => '11'; push @EXPORT, qw(PG_VERSION_11); use constant PG_VERSION_12 => '12'; push @EXPORT, qw(PG_VERSION_12); use constant PG_VERSION_APPLICATION_NAME => PG_VERSION_90; push @EXPORT, qw(PG_VERSION_APPLICATION_NAME); use constant PG_VERSION_HOT_STANDBY => PG_VERSION_91; push @EXPORT, qw(PG_VERSION_HOT_STANDBY); use constant PG_VERSION_BACKUP_STANDBY => PG_VERSION_92; push @EXPORT, qw(PG_VERSION_BACKUP_STANDBY); #################################################################################################################################### # versionSupport # # Returns an array of the supported Postgres versions. #################################################################################################################################### sub versionSupport { # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->versionSupport'); my @strySupportVersion = (PG_VERSION_83, PG_VERSION_84, PG_VERSION_90, PG_VERSION_91, PG_VERSION_92, PG_VERSION_93, PG_VERSION_94, PG_VERSION_95, PG_VERSION_96, PG_VERSION_10, PG_VERSION_11, PG_VERSION_12); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strySupportVersion', value => \@strySupportVersion} ); } push @EXPORT, qw(versionSupport); 1; pgbackrest-release-2.24/lib/pgBackRest/InfoCommon.pm000066400000000000000000000032621362531507100224070ustar00rootroot00000000000000#################################################################################################################################### # INFO MODULE # Constants, variables and functions common to the info files #################################################################################################################################### package pgBackRest::InfoCommon; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); #################################################################################################################################### # DB section constants #################################################################################################################################### use constant INFO_BACKUP_SECTION_DB => 'db'; push @EXPORT, qw(INFO_BACKUP_SECTION_DB); use constant INFO_BACKUP_SECTION_DB_HISTORY => INFO_BACKUP_SECTION_DB . ':history'; push @EXPORT, qw(INFO_BACKUP_SECTION_DB_HISTORY); #################################################################################################################################### # History section constants #################################################################################################################################### use constant INFO_HISTORY_ID => 'id'; push @EXPORT, qw(INFO_HISTORY_ID); use constant INFO_DB_VERSION => 'version'; push @EXPORT, qw(INFO_DB_VERSION); use constant INFO_SYSTEM_ID => 'system-id'; push @EXPORT, qw(INFO_SYSTEM_ID); 1; pgbackrest-release-2.24/lib/pgBackRest/LibC.pm000066400000000000000000000034561362531507100211610ustar00rootroot00000000000000#################################################################################################################################### # C to Perl Interface #################################################################################################################################### package pgBackRest::LibC; use base 'Exporter'; use 5.010001; use strict; use warnings; use Carp; use pgBackRest::LibCAuto; # Dynamically create constants my $rhConstant = pgBackRest::LibCAuto::libcAutoConstant(); foreach my $strConstant (keys(%{$rhConstant})) { eval "use constant ${strConstant} => '" . $rhConstant->{$strConstant} . "'"; } # Export functions and constants our %EXPORT_TAGS = %{pgBackRest::LibCAuto::libcAutoExportTag()}; our @EXPORT_OK; foreach my $strSection (keys(%EXPORT_TAGS)) { # Assign values to serial constants like CFGCMD_* and CFGOPT_*. New commands and options (especially options) renumber the list # and cause a lot of churn in the commits. This takes care of the renumbering to cut down on that churn. my $strPrefixLast = 'XXXXXXXX'; my $iConstantIdx = 0; foreach my $strConstant (@{$EXPORT_TAGS{$strSection}}) { my $strPrefix = ($strConstant =~ m/^[A-Z0-9]+/g)[0]; if (defined($strPrefix)) { if ($strPrefix ne $strPrefixLast) { $iConstantIdx = 0; } else { $iConstantIdx++; } if ($strPrefix eq 'CFGCMD' || $strPrefix eq 'CFGOPT') { eval "use constant ${strConstant} => ${iConstantIdx}"; } $strPrefixLast = $strPrefix; } } # OK to export everything in the tag push(@EXPORT_OK, @{$EXPORT_TAGS{$strSection}}); } # Nothing is exported by default our @EXPORT = (); 1; pgbackrest-release-2.24/lib/pgBackRest/LibCAuto.pm000066400000000000000000000321571362531507100220120ustar00rootroot00000000000000#################################################################################################################################### # Automatically generated by Build.pm -- do not modify directly. #################################################################################################################################### package pgBackRest::LibCAuto; use strict; use warnings; # Configuration option value constants sub libcAutoConstant { return { CFGOPTVAL_INFO_OUTPUT_TEXT => 'text', CFGOPTVAL_INFO_OUTPUT_JSON => 'json', CFGOPTVAL_LS_OUTPUT_TEXT => 'text', CFGOPTVAL_LS_OUTPUT_JSON => 'json', CFGOPTVAL_REMOTE_TYPE_PG => 'pg', CFGOPTVAL_REMOTE_TYPE_REPO => 'repo', CFGOPTVAL_REPO_CIPHER_TYPE_NONE => 'none', CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC => 'aes-256-cbc', CFGOPTVAL_REPO_RETENTION_ARCHIVE_TYPE_FULL => 'full', CFGOPTVAL_REPO_RETENTION_ARCHIVE_TYPE_DIFF => 'diff', CFGOPTVAL_REPO_RETENTION_ARCHIVE_TYPE_INCR => 'incr', CFGOPTVAL_REPO_S3_URI_STYLE_HOST => 'host', CFGOPTVAL_REPO_S3_URI_STYLE_PATH => 'path', CFGOPTVAL_REPO_TYPE_CIFS => 'cifs', CFGOPTVAL_REPO_TYPE_POSIX => 'posix', CFGOPTVAL_REPO_TYPE_S3 => 's3', CFGOPTVAL_SORT_NONE => 'none', CFGOPTVAL_SORT_ASC => 'asc', CFGOPTVAL_SORT_DESC => 'desc', CFGOPTVAL_RESTORE_TARGET_ACTION_PAUSE => 'pause', CFGOPTVAL_RESTORE_TARGET_ACTION_PROMOTE => 'promote', CFGOPTVAL_RESTORE_TARGET_ACTION_SHUTDOWN => 'shutdown', CFGOPTVAL_BACKUP_TYPE_FULL => 'full', CFGOPTVAL_BACKUP_TYPE_DIFF => 'diff', CFGOPTVAL_BACKUP_TYPE_INCR => 'incr', CFGOPTVAL_RESTORE_TYPE_NAME => 'name', CFGOPTVAL_RESTORE_TYPE_TIME => 'time', CFGOPTVAL_RESTORE_TYPE_XID => 'xid', CFGOPTVAL_RESTORE_TYPE_PRESERVE => 'preserve', CFGOPTVAL_RESTORE_TYPE_NONE => 'none', CFGOPTVAL_RESTORE_TYPE_IMMEDIATE => 'immediate', CFGOPTVAL_RESTORE_TYPE_DEFAULT => 'default', CFGOPTVAL_RESTORE_TYPE_STANDBY => 'standby', CFGDEF_TYPE_BOOLEAN => 0, CFGDEF_TYPE_FLOAT => 1, CFGDEF_TYPE_HASH => 2, CFGDEF_TYPE_INTEGER => 3, CFGDEF_TYPE_LIST => 4, CFGDEF_TYPE_PATH => 5, CFGDEF_TYPE_SIZE => 6, CFGDEF_TYPE_STRING => 7, ENCODE_TYPE_BASE64 => 0, CIPHER_MODE_ENCRYPT => 0, CIPHER_MODE_DECRYPT => 1, } } # Export function and constants sub libcAutoExportTag { return { checksum => [ 'pageChecksum', ], config => [ 'CFGOPTVAL_INFO_OUTPUT_TEXT', 'CFGOPTVAL_INFO_OUTPUT_JSON', 'CFGOPTVAL_LS_OUTPUT_TEXT', 'CFGOPTVAL_LS_OUTPUT_JSON', 'CFGOPTVAL_REMOTE_TYPE_PG', 'CFGOPTVAL_REMOTE_TYPE_REPO', 'CFGOPTVAL_REPO_CIPHER_TYPE_NONE', 'CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC', 'CFGOPTVAL_REPO_RETENTION_ARCHIVE_TYPE_FULL', 'CFGOPTVAL_REPO_RETENTION_ARCHIVE_TYPE_DIFF', 'CFGOPTVAL_REPO_RETENTION_ARCHIVE_TYPE_INCR', 'CFGOPTVAL_REPO_S3_URI_STYLE_HOST', 'CFGOPTVAL_REPO_S3_URI_STYLE_PATH', 'CFGOPTVAL_REPO_TYPE_CIFS', 'CFGOPTVAL_REPO_TYPE_POSIX', 'CFGOPTVAL_REPO_TYPE_S3', 'CFGOPTVAL_SORT_NONE', 'CFGOPTVAL_SORT_ASC', 'CFGOPTVAL_SORT_DESC', 'CFGOPTVAL_RESTORE_TARGET_ACTION_PAUSE', 'CFGOPTVAL_RESTORE_TARGET_ACTION_PROMOTE', 'CFGOPTVAL_RESTORE_TARGET_ACTION_SHUTDOWN', 'CFGOPTVAL_BACKUP_TYPE_FULL', 'CFGOPTVAL_BACKUP_TYPE_DIFF', 'CFGOPTVAL_BACKUP_TYPE_INCR', 'CFGOPTVAL_RESTORE_TYPE_NAME', 'CFGOPTVAL_RESTORE_TYPE_TIME', 'CFGOPTVAL_RESTORE_TYPE_XID', 'CFGOPTVAL_RESTORE_TYPE_PRESERVE', 'CFGOPTVAL_RESTORE_TYPE_NONE', 'CFGOPTVAL_RESTORE_TYPE_IMMEDIATE', 'CFGOPTVAL_RESTORE_TYPE_DEFAULT', 'CFGOPTVAL_RESTORE_TYPE_STANDBY', 'CFGCMD_ARCHIVE_GET', 'CFGCMD_ARCHIVE_PUSH', 'CFGCMD_BACKUP', 'CFGCMD_CHECK', 'CFGCMD_EXPIRE', 'CFGCMD_HELP', 'CFGCMD_INFO', 'CFGCMD_LS', 'CFGCMD_RESTORE', 'CFGCMD_STANZA_CREATE', 'CFGCMD_STANZA_DELETE', 'CFGCMD_STANZA_UPGRADE', 'CFGCMD_START', 'CFGCMD_STOP', 'CFGCMD_VERSION', 'CFGOPT_ARCHIVE_ASYNC', 'CFGOPT_ARCHIVE_CHECK', 'CFGOPT_ARCHIVE_COPY', 'CFGOPT_ARCHIVE_GET_QUEUE_MAX', 'CFGOPT_ARCHIVE_PUSH_QUEUE_MAX', 'CFGOPT_ARCHIVE_TIMEOUT', 'CFGOPT_BACKUP_STANDBY', 'CFGOPT_BUFFER_SIZE', 'CFGOPT_CHECKSUM_PAGE', 'CFGOPT_CMD_SSH', 'CFGOPT_COMPRESS', 'CFGOPT_COMPRESS_LEVEL', 'CFGOPT_COMPRESS_LEVEL_NETWORK', 'CFGOPT_CONFIG', 'CFGOPT_CONFIG_INCLUDE_PATH', 'CFGOPT_CONFIG_PATH', 'CFGOPT_DB_INCLUDE', 'CFGOPT_DB_TIMEOUT', 'CFGOPT_DELTA', 'CFGOPT_EXCLUDE', 'CFGOPT_FILTER', 'CFGOPT_FORCE', 'CFGOPT_HOST_ID', 'CFGOPT_LINK_ALL', 'CFGOPT_LINK_MAP', 'CFGOPT_LOCK_PATH', 'CFGOPT_LOG_LEVEL_CONSOLE', 'CFGOPT_LOG_LEVEL_FILE', 'CFGOPT_LOG_LEVEL_STDERR', 'CFGOPT_LOG_PATH', 'CFGOPT_LOG_SUBPROCESS', 'CFGOPT_LOG_TIMESTAMP', 'CFGOPT_MANIFEST_SAVE_THRESHOLD', 'CFGOPT_NEUTRAL_UMASK', 'CFGOPT_ONLINE', 'CFGOPT_OUTPUT', 'CFGOPT_PG_HOST', 'CFGOPT_PG_HOST2', 'CFGOPT_PG_HOST3', 'CFGOPT_PG_HOST4', 'CFGOPT_PG_HOST5', 'CFGOPT_PG_HOST6', 'CFGOPT_PG_HOST7', 'CFGOPT_PG_HOST8', 'CFGOPT_PG_HOST_CMD', 'CFGOPT_PG_HOST_CMD2', 'CFGOPT_PG_HOST_CMD3', 'CFGOPT_PG_HOST_CMD4', 'CFGOPT_PG_HOST_CMD5', 'CFGOPT_PG_HOST_CMD6', 'CFGOPT_PG_HOST_CMD7', 'CFGOPT_PG_HOST_CMD8', 'CFGOPT_PG_HOST_CONFIG', 'CFGOPT_PG_HOST_CONFIG2', 'CFGOPT_PG_HOST_CONFIG3', 'CFGOPT_PG_HOST_CONFIG4', 'CFGOPT_PG_HOST_CONFIG5', 'CFGOPT_PG_HOST_CONFIG6', 'CFGOPT_PG_HOST_CONFIG7', 'CFGOPT_PG_HOST_CONFIG8', 'CFGOPT_PG_HOST_CONFIG_INCLUDE_PATH', 'CFGOPT_PG_HOST_CONFIG_INCLUDE_PATH2', 'CFGOPT_PG_HOST_CONFIG_INCLUDE_PATH3', 'CFGOPT_PG_HOST_CONFIG_INCLUDE_PATH4', 'CFGOPT_PG_HOST_CONFIG_INCLUDE_PATH5', 'CFGOPT_PG_HOST_CONFIG_INCLUDE_PATH6', 'CFGOPT_PG_HOST_CONFIG_INCLUDE_PATH7', 'CFGOPT_PG_HOST_CONFIG_INCLUDE_PATH8', 'CFGOPT_PG_HOST_CONFIG_PATH', 'CFGOPT_PG_HOST_CONFIG_PATH2', 'CFGOPT_PG_HOST_CONFIG_PATH3', 'CFGOPT_PG_HOST_CONFIG_PATH4', 'CFGOPT_PG_HOST_CONFIG_PATH5', 'CFGOPT_PG_HOST_CONFIG_PATH6', 'CFGOPT_PG_HOST_CONFIG_PATH7', 'CFGOPT_PG_HOST_CONFIG_PATH8', 'CFGOPT_PG_HOST_PORT', 'CFGOPT_PG_HOST_PORT2', 'CFGOPT_PG_HOST_PORT3', 'CFGOPT_PG_HOST_PORT4', 'CFGOPT_PG_HOST_PORT5', 'CFGOPT_PG_HOST_PORT6', 'CFGOPT_PG_HOST_PORT7', 'CFGOPT_PG_HOST_PORT8', 'CFGOPT_PG_HOST_USER', 'CFGOPT_PG_HOST_USER2', 'CFGOPT_PG_HOST_USER3', 'CFGOPT_PG_HOST_USER4', 'CFGOPT_PG_HOST_USER5', 'CFGOPT_PG_HOST_USER6', 'CFGOPT_PG_HOST_USER7', 'CFGOPT_PG_HOST_USER8', 'CFGOPT_PG_PATH', 'CFGOPT_PG_PATH2', 'CFGOPT_PG_PATH3', 'CFGOPT_PG_PATH4', 'CFGOPT_PG_PATH5', 'CFGOPT_PG_PATH6', 'CFGOPT_PG_PATH7', 'CFGOPT_PG_PATH8', 'CFGOPT_PG_PORT', 'CFGOPT_PG_PORT2', 'CFGOPT_PG_PORT3', 'CFGOPT_PG_PORT4', 'CFGOPT_PG_PORT5', 'CFGOPT_PG_PORT6', 'CFGOPT_PG_PORT7', 'CFGOPT_PG_PORT8', 'CFGOPT_PG_SOCKET_PATH', 'CFGOPT_PG_SOCKET_PATH2', 'CFGOPT_PG_SOCKET_PATH3', 'CFGOPT_PG_SOCKET_PATH4', 'CFGOPT_PG_SOCKET_PATH5', 'CFGOPT_PG_SOCKET_PATH6', 'CFGOPT_PG_SOCKET_PATH7', 'CFGOPT_PG_SOCKET_PATH8', 'CFGOPT_PG_USER', 'CFGOPT_PG_USER2', 'CFGOPT_PG_USER3', 'CFGOPT_PG_USER4', 'CFGOPT_PG_USER5', 'CFGOPT_PG_USER6', 'CFGOPT_PG_USER7', 'CFGOPT_PG_USER8', 'CFGOPT_PROCESS', 'CFGOPT_PROCESS_MAX', 'CFGOPT_PROTOCOL_TIMEOUT', 'CFGOPT_RECOVERY_OPTION', 'CFGOPT_RECURSE', 'CFGOPT_REMOTE_TYPE', 'CFGOPT_REPO_CIPHER_PASS', 'CFGOPT_REPO_CIPHER_TYPE', 'CFGOPT_REPO_HARDLINK', 'CFGOPT_REPO_HOST', 'CFGOPT_REPO_HOST_CMD', 'CFGOPT_REPO_HOST_CONFIG', 'CFGOPT_REPO_HOST_CONFIG_INCLUDE_PATH', 'CFGOPT_REPO_HOST_CONFIG_PATH', 'CFGOPT_REPO_HOST_PORT', 'CFGOPT_REPO_HOST_USER', 'CFGOPT_REPO_PATH', 'CFGOPT_REPO_RETENTION_ARCHIVE', 'CFGOPT_REPO_RETENTION_ARCHIVE_TYPE', 'CFGOPT_REPO_RETENTION_DIFF', 'CFGOPT_REPO_RETENTION_FULL', 'CFGOPT_REPO_S3_BUCKET', 'CFGOPT_REPO_S3_CA_FILE', 'CFGOPT_REPO_S3_CA_PATH', 'CFGOPT_REPO_S3_ENDPOINT', 'CFGOPT_REPO_S3_HOST', 'CFGOPT_REPO_S3_KEY', 'CFGOPT_REPO_S3_KEY_SECRET', 'CFGOPT_REPO_S3_PORT', 'CFGOPT_REPO_S3_REGION', 'CFGOPT_REPO_S3_TOKEN', 'CFGOPT_REPO_S3_URI_STYLE', 'CFGOPT_REPO_S3_VERIFY_TLS', 'CFGOPT_REPO_TYPE', 'CFGOPT_RESUME', 'CFGOPT_SET', 'CFGOPT_SORT', 'CFGOPT_SPOOL_PATH', 'CFGOPT_STANZA', 'CFGOPT_START_FAST', 'CFGOPT_STOP_AUTO', 'CFGOPT_TABLESPACE_MAP', 'CFGOPT_TABLESPACE_MAP_ALL', 'CFGOPT_TARGET', 'CFGOPT_TARGET_ACTION', 'CFGOPT_TARGET_EXCLUSIVE', 'CFGOPT_TARGET_TIMELINE', 'CFGOPT_TYPE', 'cfgCommandName', 'cfgOptionIndexTotal', 'cfgOptionName', ], configDefine => [ 'CFGDEF_TYPE_BOOLEAN', 'CFGDEF_TYPE_FLOAT', 'CFGDEF_TYPE_HASH', 'CFGDEF_TYPE_INTEGER', 'CFGDEF_TYPE_LIST', 'CFGDEF_TYPE_PATH', 'CFGDEF_TYPE_SIZE', 'CFGDEF_TYPE_STRING', 'cfgCommandId', 'cfgDefOptionDefault', 'cfgDefOptionPrefix', 'cfgDefOptionSecure', 'cfgDefOptionType', 'cfgDefOptionValid', 'cfgOptionId', 'cfgOptionTotal', ], crypto => [ 'cryptoHashOne', ], debug => [ 'libcUvSize', ], storage => [ 'storageRepoFree', ], test => [ 'cfgParseTest', ], } } 1; pgbackrest-release-2.24/lib/pgBackRest/Manifest.pm000066400000000000000000002136211362531507100221130ustar00rootroot00000000000000#################################################################################################################################### # MANIFEST MODULE #################################################################################################################################### package pgBackRest::Manifest; use parent 'pgBackRest::Common::Ini'; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname basename); use Time::Local qw(timelocal); use pgBackRest::DbVersion; use pgBackRest::Common::Exception; use pgBackRest::Common::Ini; use pgBackRest::Common::Log; use pgBackRest::Common::Wait; use pgBackRest::Config::Config; use pgBackRest::Protocol::Storage::Helper; use pgBackRest::Storage::Helper; #################################################################################################################################### # File/path constants #################################################################################################################################### use constant PATH_BACKUP_HISTORY => 'backup.history'; push @EXPORT, qw(PATH_BACKUP_HISTORY); use constant FILE_MANIFEST => 'backup.manifest'; push @EXPORT, qw(FILE_MANIFEST); use constant FILE_MANIFEST_COPY => FILE_MANIFEST . INI_COPY_EXT; push @EXPORT, qw(FILE_MANIFEST_COPY); #################################################################################################################################### # Default match factor #################################################################################################################################### use constant MANIFEST_DEFAULT_MATCH_FACTOR => 0.1; push @EXPORT, qw(MANIFEST_DEFAULT_MATCH_FACTOR); #################################################################################################################################### # MANIFEST Constants #################################################################################################################################### use constant MANIFEST_TARGET_PGDATA => 'pg_data'; push @EXPORT, qw(MANIFEST_TARGET_PGDATA); use constant MANIFEST_TARGET_PGTBLSPC => 'pg_tblspc'; push @EXPORT, qw(MANIFEST_TARGET_PGTBLSPC); use constant MANIFEST_VALUE_PATH => 'path'; push @EXPORT, qw(MANIFEST_VALUE_PATH); use constant MANIFEST_VALUE_LINK => 'link'; push @EXPORT, qw(MANIFEST_VALUE_LINK); # Manifest sections use constant MANIFEST_SECTION_BACKUP => 'backup'; push @EXPORT, qw(MANIFEST_SECTION_BACKUP); use constant MANIFEST_SECTION_BACKUP_DB => 'backup:db'; push @EXPORT, qw(MANIFEST_SECTION_BACKUP_DB); use constant MANIFEST_SECTION_BACKUP_INFO => 'backup:info'; push @EXPORT, qw(MANIFEST_SECTION_BACKUP_INFO); use constant MANIFEST_SECTION_BACKUP_OPTION => 'backup:option'; push @EXPORT, qw(MANIFEST_SECTION_BACKUP_OPTION); use constant MANIFEST_SECTION_BACKUP_TARGET => 'backup:target'; push @EXPORT, qw(MANIFEST_SECTION_BACKUP_TARGET); use constant MANIFEST_SECTION_DB => 'db'; push @EXPORT, qw(MANIFEST_SECTION_DB); use constant MANIFEST_SECTION_TARGET_PATH => 'target:path'; push @EXPORT, qw(MANIFEST_SECTION_TARGET_PATH); use constant MANIFEST_SECTION_TARGET_FILE => 'target:file'; push @EXPORT, qw(MANIFEST_SECTION_TARGET_FILE); use constant MANIFEST_SECTION_TARGET_LINK => 'target:link'; push @EXPORT, qw(MANIFEST_SECTION_TARGET_LINK); # Backup metadata required for restores use constant MANIFEST_KEY_ARCHIVE_START => 'backup-archive-start'; push @EXPORT, qw(MANIFEST_KEY_ARCHIVE_START); use constant MANIFEST_KEY_ARCHIVE_STOP => 'backup-archive-stop'; push @EXPORT, qw(MANIFEST_KEY_ARCHIVE_STOP); use constant MANIFEST_KEY_LABEL => 'backup-label'; push @EXPORT, qw(MANIFEST_KEY_LABEL); use constant MANIFEST_KEY_LSN_START => 'backup-lsn-start'; push @EXPORT, qw(MANIFEST_KEY_LSN_START); use constant MANIFEST_KEY_LSN_STOP => 'backup-lsn-stop'; push @EXPORT, qw(MANIFEST_KEY_LSN_STOP); use constant MANIFEST_KEY_PRIOR => 'backup-prior'; push @EXPORT, qw(MANIFEST_KEY_PRIOR); use constant MANIFEST_KEY_TIMESTAMP_COPY_START => 'backup-timestamp-copy-start'; push @EXPORT, qw(MANIFEST_KEY_TIMESTAMP_COPY_START); use constant MANIFEST_KEY_TIMESTAMP_START => 'backup-timestamp-start'; push @EXPORT, qw(MANIFEST_KEY_TIMESTAMP_START); use constant MANIFEST_KEY_TIMESTAMP_STOP => 'backup-timestamp-stop'; push @EXPORT, qw(MANIFEST_KEY_TIMESTAMP_STOP); use constant MANIFEST_KEY_TYPE => 'backup-type'; push @EXPORT, qw(MANIFEST_KEY_TYPE); # Options that were set when the backup was made use constant MANIFEST_KEY_BACKUP_STANDBY => 'option-' . cfgOptionName(CFGOPT_BACKUP_STANDBY); push @EXPORT, qw(MANIFEST_KEY_BACKUP_STANDBY); use constant MANIFEST_KEY_HARDLINK => 'option-hardlink'; push @EXPORT, qw(MANIFEST_KEY_HARDLINK); use constant MANIFEST_KEY_ARCHIVE_CHECK => 'option-' . cfgOptionName(CFGOPT_ARCHIVE_CHECK); push @EXPORT, qw(MANIFEST_KEY_ARCHIVE_CHECK); use constant MANIFEST_KEY_ARCHIVE_COPY => 'option-' .cfgOptionName(CFGOPT_ARCHIVE_COPY); push @EXPORT, qw(MANIFEST_KEY_ARCHIVE_COPY); use constant MANIFEST_KEY_BUFFER_SIZE => 'option-' . cfgOptionName(CFGOPT_BUFFER_SIZE); push @EXPORT, qw(MANIFEST_KEY_BUFFER_SIZE); use constant MANIFEST_KEY_CHECKSUM_PAGE => 'option-' . cfgOptionName(CFGOPT_CHECKSUM_PAGE); push @EXPORT, qw(MANIFEST_KEY_CHECKSUM_PAGE); use constant MANIFEST_KEY_COMPRESS => 'option-' . cfgOptionName(CFGOPT_COMPRESS); push @EXPORT, qw(MANIFEST_KEY_COMPRESS); use constant MANIFEST_KEY_COMPRESS_LEVEL => 'option-' . cfgOptionName(CFGOPT_COMPRESS_LEVEL); push @EXPORT, qw(MANIFEST_KEY_COMPRESS_LEVEL); use constant MANIFEST_KEY_COMPRESS_LEVEL_NETWORK => 'option-' . cfgOptionName(CFGOPT_COMPRESS_LEVEL_NETWORK); push @EXPORT, qw(MANIFEST_KEY_COMPRESS_LEVEL_NETWORK); use constant MANIFEST_KEY_ONLINE => 'option-' . cfgOptionName(CFGOPT_ONLINE); push @EXPORT, qw(MANIFEST_KEY_ONLINE); use constant MANIFEST_KEY_DELTA => 'option-' . cfgOptionName(CFGOPT_DELTA); push @EXPORT, qw(MANIFEST_KEY_DELTA); use constant MANIFEST_KEY_PROCESS_MAX => 'option-' . cfgOptionName(CFGOPT_PROCESS_MAX); push @EXPORT, qw(MANIFEST_KEY_PROCESS_MAX); # Information about the database that was backed up use constant MANIFEST_KEY_DB_ID => 'db-id'; push @EXPORT, qw(MANIFEST_KEY_DB_ID); use constant MANIFEST_KEY_SYSTEM_ID => 'db-system-id'; push @EXPORT, qw(MANIFEST_KEY_SYSTEM_ID); use constant MANIFEST_KEY_CATALOG => 'db-catalog-version'; push @EXPORT, qw(MANIFEST_KEY_CATALOG); use constant MANIFEST_KEY_CONTROL => 'db-control-version'; push @EXPORT, qw(MANIFEST_KEY_CONTROL); use constant MANIFEST_KEY_DB_LAST_SYSTEM_ID => 'db-last-system-id'; push @EXPORT, qw(MANIFEST_KEY_DB_LAST_SYSTEM_ID); use constant MANIFEST_KEY_DB_VERSION => 'db-version'; push @EXPORT, qw(MANIFEST_KEY_DB_VERSION); # Subkeys used for path/file/link info use constant MANIFEST_SUBKEY_CHECKSUM => 'checksum'; push @EXPORT, qw(MANIFEST_SUBKEY_CHECKSUM); use constant MANIFEST_SUBKEY_CHECKSUM_PAGE => 'checksum-page'; push @EXPORT, qw(MANIFEST_SUBKEY_CHECKSUM_PAGE); use constant MANIFEST_SUBKEY_CHECKSUM_PAGE_ERROR => 'checksum-page-error'; push @EXPORT, qw(MANIFEST_SUBKEY_CHECKSUM_PAGE_ERROR); use constant MANIFEST_SUBKEY_DESTINATION => 'destination'; push @EXPORT, qw(MANIFEST_SUBKEY_DESTINATION); use constant MANIFEST_SUBKEY_FILE => 'file'; push @EXPORT, qw(MANIFEST_SUBKEY_FILE); use constant MANIFEST_SUBKEY_FUTURE => 'future'; push @EXPORT, qw(MANIFEST_SUBKEY_FUTURE); use constant MANIFEST_SUBKEY_GROUP => 'group'; push @EXPORT, qw(MANIFEST_SUBKEY_GROUP); use constant MANIFEST_SUBKEY_MASTER => 'master'; push @EXPORT, qw(MANIFEST_SUBKEY_MASTER); use constant MANIFEST_SUBKEY_MODE => 'mode'; push @EXPORT, qw(MANIFEST_SUBKEY_MODE); use constant MANIFEST_SUBKEY_TIMESTAMP => 'timestamp'; push @EXPORT, qw(MANIFEST_SUBKEY_TIMESTAMP); use constant MANIFEST_SUBKEY_TYPE => 'type'; push @EXPORT, qw(MANIFEST_SUBKEY_TYPE); use constant MANIFEST_SUBKEY_PATH => 'path'; push @EXPORT, qw(MANIFEST_SUBKEY_PATH); use constant MANIFEST_SUBKEY_REFERENCE => 'reference'; push @EXPORT, qw(MANIFEST_SUBKEY_REFERENCE); use constant MANIFEST_SUBKEY_REPO_SIZE => 'repo-size'; push @EXPORT, qw(MANIFEST_SUBKEY_REPO_SIZE); use constant MANIFEST_SUBKEY_SIZE => 'size'; push @EXPORT, qw(MANIFEST_SUBKEY_SIZE); use constant MANIFEST_SUBKEY_TABLESPACE_ID => 'tablespace-id'; push @EXPORT, qw(MANIFEST_SUBKEY_TABLESPACE_ID); use constant MANIFEST_SUBKEY_TABLESPACE_NAME => 'tablespace-name'; push @EXPORT, qw(MANIFEST_SUBKEY_TABLESPACE_NAME); use constant MANIFEST_SUBKEY_USER => 'user'; push @EXPORT, qw(MANIFEST_SUBKEY_USER); #################################################################################################################################### # Database locations for important files/paths #################################################################################################################################### use constant DB_PATH_ARCHIVESTATUS => 'archive_status'; push @EXPORT, qw(DB_PATH_ARCHIVESTATUS); use constant DB_PATH_BASE => 'base'; push @EXPORT, qw(DB_PATH_BASE); use constant DB_PATH_GLOBAL => 'global'; push @EXPORT, qw(DB_PATH_GLOBAL); use constant DB_PATH_PGDYNSHMEM => 'pg_dynshmem'; push @EXPORT, qw(DB_PATH_PGDYNSHMEM); use constant DB_PATH_PGMULTIXACT => 'pg_multixact'; push @EXPORT, qw(DB_PATH_PGMULTIXACT); use constant DB_PATH_PGNOTIFY => 'pg_notify'; push @EXPORT, qw(DB_PATH_PGNOTIFY); use constant DB_PATH_PGREPLSLOT => 'pg_replslot'; push @EXPORT, qw(DB_PATH_PGREPLSLOT); use constant DB_PATH_PGSERIAL => 'pg_serial'; push @EXPORT, qw(DB_PATH_PGSERIAL); use constant DB_PATH_PGSNAPSHOTS => 'pg_snapshots'; push @EXPORT, qw(DB_PATH_PGSNAPSHOTS); use constant DB_PATH_PGSTATTMP => 'pg_stat_tmp'; push @EXPORT, qw(DB_PATH_PGSTATTMP); use constant DB_PATH_PGSUBTRANS => 'pg_subtrans'; push @EXPORT, qw(DB_PATH_PGSUBTRANS); use constant DB_PATH_PGTBLSPC => 'pg_tblspc'; push @EXPORT, qw(DB_PATH_PGTBLSPC); use constant DB_FILE_BACKUPLABEL => 'backup_label'; push @EXPORT, qw(DB_FILE_BACKUPLABEL); use constant DB_FILE_BACKUPLABELOLD => DB_FILE_BACKUPLABEL . '.old'; push @EXPORT, qw(DB_FILE_BACKUPLABELOLD); use constant DB_FILE_PGCONTROL => DB_PATH_GLOBAL . '/pg_control'; push @EXPORT, qw(DB_FILE_PGCONTROL); use constant DB_FILE_PGFILENODEMAP => 'pg_filenode.map'; push @EXPORT, qw(DB_FILE_PGFILENODEMAP); use constant DB_FILE_PGINTERNALINIT => 'pg_internal.init'; push @EXPORT, qw(DB_FILE_PGINTERNALINIT); use constant DB_FILE_PGVERSION => 'PG_VERSION'; push @EXPORT, qw(DB_FILE_PGVERSION); use constant DB_FILE_POSTGRESQLAUTOCONFTMP => 'postgresql.auto.conf.tmp'; push @EXPORT, qw(DB_FILE_POSTGRESQLAUTOCONFTMP); use constant DB_FILE_POSTMASTEROPTS => 'postmaster.opts'; push @EXPORT, qw(DB_FILE_POSTMASTEROPTS); use constant DB_FILE_POSTMASTERPID => 'postmaster.pid'; push @EXPORT, qw(DB_FILE_POSTMASTERPID); use constant DB_FILE_RECOVERYCONF => 'recovery.conf'; push @EXPORT, qw(DB_FILE_RECOVERYCONF); use constant DB_FILE_RECOVERYSIGNAL => 'recovery.signal'; push @EXPORT, qw(DB_FILE_RECOVERYSIGNAL); use constant DB_FILE_RECOVERYDONE => 'recovery.done'; push @EXPORT, qw(DB_FILE_RECOVERYDONE); use constant DB_FILE_STANDBYSIGNAL => 'standby.signal'; push @EXPORT, qw(DB_FILE_STANDBYSIGNAL); use constant DB_FILE_TABLESPACEMAP => 'tablespace_map'; push @EXPORT, qw(DB_FILE_TABLESPACEMAP); use constant DB_FILE_PREFIX_TMP => 'pgsql_tmp'; push @EXPORT, qw(DB_FILE_PREFIX_TMP); #################################################################################################################################### # Manifest locations for important files/paths #################################################################################################################################### use constant MANIFEST_PATH_BASE => MANIFEST_TARGET_PGDATA . '/' . DB_PATH_BASE; push @EXPORT, qw(MANIFEST_PATH_BASE); use constant MANIFEST_PATH_GLOBAL => MANIFEST_TARGET_PGDATA . '/' . DB_PATH_GLOBAL; push @EXPORT, qw(MANIFEST_PATH_GLOBAL); use constant MANIFEST_PATH_PGDYNSHMEM => MANIFEST_TARGET_PGDATA . '/' . DB_PATH_PGDYNSHMEM; push @EXPORT, qw(MANIFEST_PATH_PGDYNSHMEM); use constant MANIFEST_PATH_PGMULTIXACT => MANIFEST_TARGET_PGDATA . '/' . DB_PATH_PGMULTIXACT; push @EXPORT, qw(MANIFEST_PATH_PGMULTIXACT); use constant MANIFEST_PATH_PGNOTIFY => MANIFEST_TARGET_PGDATA . '/' . DB_PATH_PGNOTIFY; push @EXPORT, qw(MANIFEST_PATH_PGNOTIFY); use constant MANIFEST_PATH_PGREPLSLOT => MANIFEST_TARGET_PGDATA . '/' . DB_PATH_PGREPLSLOT; push @EXPORT, qw(MANIFEST_PATH_PGREPLSLOT); use constant MANIFEST_PATH_PGSERIAL => MANIFEST_TARGET_PGDATA . '/' . DB_PATH_PGSERIAL; push @EXPORT, qw(MANIFEST_PATH_PGSERIAL); use constant MANIFEST_PATH_PGSNAPSHOTS => MANIFEST_TARGET_PGDATA . '/' . DB_PATH_PGSNAPSHOTS; push @EXPORT, qw(MANIFEST_PATH_PGSNAPSHOTS); use constant MANIFEST_PATH_PGSTATTMP => MANIFEST_TARGET_PGDATA . '/' . DB_PATH_PGSTATTMP; push @EXPORT, qw(MANIFEST_PATH_PGSTATTMP); use constant MANIFEST_PATH_PGSUBTRANS => MANIFEST_TARGET_PGDATA . '/' . DB_PATH_PGSUBTRANS; push @EXPORT, qw(MANIFEST_PATH_PGSUBTRANS); use constant MANIFEST_PATH_PGTBLSPC => MANIFEST_TARGET_PGDATA . '/' . DB_PATH_PGTBLSPC; push @EXPORT, qw(MANIFEST_PATH_PGTBLSPC); use constant MANIFEST_FILE_BACKUPLABEL => MANIFEST_TARGET_PGDATA . '/' . DB_FILE_BACKUPLABEL; push @EXPORT, qw(MANIFEST_FILE_BACKUPLABEL); use constant MANIFEST_FILE_BACKUPLABELOLD => MANIFEST_TARGET_PGDATA . '/' . DB_FILE_BACKUPLABELOLD; push @EXPORT, qw(MANIFEST_FILE_BACKUPLABELOLD); use constant MANIFEST_FILE_PGCONTROL => MANIFEST_TARGET_PGDATA . '/' . DB_FILE_PGCONTROL; push @EXPORT, qw(MANIFEST_FILE_PGCONTROL); use constant MANIFEST_FILE_POSTGRESQLAUTOCONFTMP => MANIFEST_TARGET_PGDATA . '/' . DB_FILE_POSTGRESQLAUTOCONFTMP; push @EXPORT, qw(MANIFEST_FILE_PGCONTROL); use constant MANIFEST_FILE_POSTMASTEROPTS => MANIFEST_TARGET_PGDATA . '/' . DB_FILE_POSTMASTEROPTS; push @EXPORT, qw(MANIFEST_FILE_POSTMASTEROPTS); use constant MANIFEST_FILE_POSTMASTERPID => MANIFEST_TARGET_PGDATA . '/' . DB_FILE_POSTMASTERPID; push @EXPORT, qw(MANIFEST_FILE_POSTMASTERPID); use constant MANIFEST_FILE_RECOVERYCONF => MANIFEST_TARGET_PGDATA . '/' . DB_FILE_RECOVERYCONF; push @EXPORT, qw(MANIFEST_FILE_RECOVERYCONF); use constant MANIFEST_FILE_RECOVERYSIGNAL => MANIFEST_TARGET_PGDATA . '/' . DB_FILE_RECOVERYSIGNAL; push @EXPORT, qw(MANIFEST_FILE_RECOVERYSIGNAL); use constant MANIFEST_FILE_RECOVERYDONE => MANIFEST_TARGET_PGDATA . '/' . DB_FILE_RECOVERYDONE; push @EXPORT, qw(MANIFEST_FILE_RECOVERYDONE); use constant MANIFEST_FILE_STANDBYSIGNAL => MANIFEST_TARGET_PGDATA . '/' . DB_FILE_STANDBYSIGNAL; push @EXPORT, qw(MANIFEST_FILE_STANDBYSIGNAL); use constant MANIFEST_FILE_TABLESPACEMAP => MANIFEST_TARGET_PGDATA . '/' . DB_FILE_TABLESPACEMAP; push @EXPORT, qw(MANIFEST_FILE_TABLESPACEMAP); #################################################################################################################################### # Minimum ID for a user object in postgres #################################################################################################################################### use constant DB_USER_OBJECT_MINIMUM_ID => 16384; push @EXPORT, qw(DB_USER_OBJECT_MINIMUM_ID); #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strFileName, $bLoad, $oStorage, $strDbVersion, $iDbCatalogVersion, $strCipherPass, # Passphrase to open the manifest if encrypted $strCipherPassSub, # Passphrase to encrypt the backup files ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'strFileName', trace => true}, {name => 'bLoad', optional => true, default => true, trace => true}, {name => 'oStorage', optional => true, default => storageRepo(), trace => true}, {name => 'strDbVersion', optional => true, trace => true}, {name => 'iDbCatalogVersion', optional => true, trace => true}, {name => 'strCipherPass', optional => true, redact => true}, {name => 'strCipherPassSub', optional => true, redact => true}, ); # Init object and store variables my $self = $class->SUPER::new($strFileName, {bLoad => $bLoad, oStorage => $oStorage, strCipherPass => $strCipherPass, strCipherPassSub => $strCipherPassSub}); # If manifest not loaded from a file then the db version and catalog version must be set if (!$bLoad) { if (!(defined($strDbVersion) && defined($iDbCatalogVersion))) { confess &log(ASSERT, 'strDbVersion and iDbCatalogVersion must be provided with bLoad = false'); } # Force the version to a string since newer versions of JSON::PP lose track of the fact that it is one $self->set(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_DB_VERSION, undef, $strDbVersion . ''); $self->numericSet(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_CATALOG, undef, $iDbCatalogVersion); } # Mark the manifest as built if it was loaded from a file $self->{bBuilt} = $bLoad; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # save # # Save the manifest. #################################################################################################################################### sub save { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->save'); # Call inherited save $self->SUPER::save(); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # get # # Get a value. #################################################################################################################################### sub get { my $self = shift; my $strSection = shift; my $strKey = shift; my $strSubKey = shift; my $bRequired = shift; my $oDefault = shift; my $oValue = $self->SUPER::get($strSection, $strKey, $strSubKey, false); if (!defined($oValue) && defined($strKey) && defined($strSubKey) && ($strSection eq MANIFEST_SECTION_TARGET_FILE || $strSection eq MANIFEST_SECTION_TARGET_PATH || $strSection eq MANIFEST_SECTION_TARGET_LINK) && ($strSubKey eq MANIFEST_SUBKEY_USER || $strSubKey eq MANIFEST_SUBKEY_GROUP || $strSubKey eq MANIFEST_SUBKEY_MODE || $strSubKey eq MANIFEST_SUBKEY_MASTER) && $self->test($strSection, $strKey)) { $oValue = $self->SUPER::get("${strSection}:default", $strSubKey, undef, $bRequired, $oDefault); } else { $oValue = $self->SUPER::get($strSection, $strKey, $strSubKey, $bRequired, $oDefault); } return $oValue; } #################################################################################################################################### # boolGet # # Get a numeric value. #################################################################################################################################### sub boolGet { my $self = shift; my $strSection = shift; my $strValue = shift; my $strSubValue = shift; my $bRequired = shift; my $bDefault = shift; return $self->get($strSection, $strValue, $strSubValue, $bRequired, defined($bDefault) ? ($bDefault ? INI_TRUE : INI_FALSE) : undef) ? true : false; } #################################################################################################################################### # numericGet # # Get a numeric value. #################################################################################################################################### sub numericGet { my $self = shift; my $strSection = shift; my $strValue = shift; my $strSubValue = shift; my $bRequired = shift; my $nDefault = shift; return $self->get($strSection, $strValue, $strSubValue, $bRequired, defined($nDefault) ? $nDefault + 0 : undef) + 0; } #################################################################################################################################### # tablespacePathGet # # Get the unique path assigned by Postgres for the tablespace. #################################################################################################################################### sub tablespacePathGet { my $self = shift; return('PG_' . $self->get(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_DB_VERSION) . '_' . $self->get(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_CATALOG)); } #################################################################################################################################### # dbPathGet # # Convert a repo path to where the file actually belongs in the db. #################################################################################################################################### sub dbPathGet { my $self = shift; my $strDbPath = shift; my $strFile = shift; my $strDbFile = defined($strDbPath) ? "${strDbPath}/" : ''; if (index($strFile, MANIFEST_TARGET_PGDATA . '/') == 0) { $strDbFile .= substr($strFile, length(MANIFEST_TARGET_PGDATA) + 1); } else { $strDbFile .= $strFile; } return $strDbFile; } #################################################################################################################################### # repoPathGet # # Convert a database path to where to file is located in the repo. #################################################################################################################################### sub repoPathGet { my $self = shift; my $strTarget = shift; my $strFile = shift; my $strRepoFile = $strTarget; if ($self->isTargetTablespace($strTarget) && ($self->dbVersion() >= PG_VERSION_90)) { $strRepoFile .= '/' . $self->tablespacePathGet(); } if (defined($strFile)) { $strRepoFile .= "/${strFile}"; } return $strRepoFile; } #################################################################################################################################### # isTargetValid # # Determine if a target is valid. #################################################################################################################################### sub isTargetValid { my $self = shift; my $strTarget = shift; my $bError = shift; if (!defined($strTarget)) { confess &log(ASSERT, 'target is not defined'); } if (!$self->test(MANIFEST_SECTION_BACKUP_TARGET, $strTarget)) { if (defined($bError) && $bError) { confess &log(ASSERT, "${strTarget} is not a valid target"); } return false; } return true; } #################################################################################################################################### # isTargetLink # # Determine if a target is a link. #################################################################################################################################### sub isTargetLink { my $self = shift; my $strTarget = shift; $self->isTargetValid($strTarget, true); return $self->test(MANIFEST_SECTION_BACKUP_TARGET, $strTarget, MANIFEST_SUBKEY_TYPE, MANIFEST_VALUE_LINK); } #################################################################################################################################### # isTargetFile # # Determine if a target is a file link. #################################################################################################################################### sub isTargetFile { my $self = shift; my $strTarget = shift; $self->isTargetValid($strTarget, true); return $self->test(MANIFEST_SECTION_BACKUP_TARGET, $strTarget, MANIFEST_SUBKEY_FILE); } #################################################################################################################################### # isTargetTablespace # # Determine if a target is a tablespace. #################################################################################################################################### sub isTargetTablespace { my $self = shift; my $strTarget = shift; $self->isTargetValid($strTarget, true); return $self->test(MANIFEST_SECTION_BACKUP_TARGET, $strTarget, MANIFEST_SUBKEY_TABLESPACE_ID); } #################################################################################################################################### # checkDelta # # Determine if the delta option should be enabled. Only called if delta has not yet been enabled. #################################################################################################################################### sub checkDelta { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strLastBackupSource, $bOnlineSame, $strTimelineCurrent, $strTimelineLast, ) = logDebugParam ( __PACKAGE__ . '->checkDelta', \@_, {name => 'strLastBackupSource'}, {name => 'bOnlineSame'}, {name => 'strTimelineCurrent', required => false}, {name => 'strTimelineLast', required => false}, ); my $bDelta = false; # Determine if a timeline switch has occurred if (defined($strTimelineLast) && defined($strTimelineCurrent)) { # If there is a prior backup, check if a timeline switch has occurred since then if ($strTimelineLast ne $strTimelineCurrent) { &log(WARN, "a timeline switch has occurred since the ${strLastBackupSource} backup, enabling delta checksum"); $bDelta = true; } } # If delta was not set above and there is a change in the online option, then set delta option if (!$bDelta && !$bOnlineSame) { &log(WARN, "the online option has changed since the ${strLastBackupSource} backup, enabling delta checksum"); $bDelta = true; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bDelta', value => $bDelta, trace => true}, ); } #################################################################################################################################### # checkDeltaFile # # Determine if the delta option should be enabled. Only called if delta has not yet been enabled. #################################################################################################################################### sub checkDeltaFile { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $stryFileList, $oPriorManifest, $lTimeBegin, ) = logDebugParam ( __PACKAGE__ . '->checkDeltaFile', \@_, {name => 'stryFileList'}, {name => 'oPriorManifest', required => false}, {name => 'lTimeBegin', required => false}, ); my $bDelta = false; # Loop though all files foreach my $strName (@{$stryFileList}) { # If $lTimeBegin is defined, then this is not an aborted manifest so check if modification time is in the future (in this # backup OR the last backup) then enable delta and exit if (defined($lTimeBegin) && ($self->numericGet(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_TIMESTAMP) > $lTimeBegin || (defined($oPriorManifest) && $oPriorManifest->test(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_FUTURE, 'y')))) { &log(WARN, "file $strName has timestamp in the future, enabling delta checksum"); $bDelta = true; last; } # If the time on the file is earlier than the last manifest time or the size is different but the timestamp is the # same, then enable delta and exit if (defined($oPriorManifest) && $oPriorManifest->test(MANIFEST_SECTION_TARGET_FILE, $strName) && ($self->numericGet(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_TIMESTAMP) < $oPriorManifest->numericGet(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_TIMESTAMP) || ($self->numericGet(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_SIZE) != $oPriorManifest->numericGet(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_SIZE) && $self->numericGet(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_TIMESTAMP) == $oPriorManifest->numericGet(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_TIMESTAMP)))) { &log(WARN, "file $strName timestamp in the past or size changed but timestamp did not, enabling delta checksum"); $bDelta = true; last; } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bDelta', value => $bDelta, trace => true}, ); } #################################################################################################################################### # build # # Build the manifest object. #################################################################################################################################### sub build { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oStorageDbMaster, $strPath, $oLastManifest, $bOnline, $bDelta, $hTablespaceMap, $hDatabaseMap, $rhExclude, $strTimelineCurrent, $strTimelineLast, $strLevel, $bTablespace, $strParentPath, $strFilter, $iLevel, ) = logDebugParam ( __PACKAGE__ . '->build', \@_, {name => 'oStorageDbMaster'}, {name => 'strPath'}, {name => 'oLastManifest', required => false}, {name => 'bOnline'}, {name => 'bDelta'}, {name => 'hTablespaceMap', required => false}, {name => 'hDatabaseMap', required => false}, {name => 'rhExclude', required => false}, {name => 'strTimelineCurrent', required => false}, {name => 'strTimelineLast', required => false}, {name => 'strLevel', required => false}, {name => 'bTablespace', required => false}, {name => 'strParentPath', required => false}, {name => 'strFilter', required => false}, {name => 'iLevel', required => false, default => 0}, ); # Limit recursion to something reasonable (if more then we are very likely in a link loop) if ($iLevel >= 16) { confess &log( ERROR, "recursion in manifest build exceeds depth of ${iLevel}: ${strLevel}\n" . 'HINT: is there a link loop in $PGDATA?', ERROR_FORMAT); } if (!defined($strLevel)) { # Don't allow the manifest to be built more than once if ($self->{bBuilt}) { confess &log(ASSERT, "manifest has already been built"); } $self->{bBuilt} = true; # Set initial level $strLevel = MANIFEST_TARGET_PGDATA; # If not online then build the tablespace map from pg_tblspc path if (!$bOnline && !defined($hTablespaceMap)) { my $hTablespaceManifest = $oStorageDbMaster->manifest($strPath . '/' . DB_PATH_PGTBLSPC); $hTablespaceMap = {}; foreach my $strOid (sort(CORE::keys(%{$hTablespaceManifest}))) { if ($strOid eq '.' or $strOid eq '..') { next; } logDebugMisc($strOperation, "found tablespace ${strOid} in offline mode"); $hTablespaceMap->{$strOid} = "ts${strOid}"; } } # If there is a last manifest, then check to see if delta checksum should be enabled if (defined($oLastManifest) && !$bDelta) { $bDelta = $self->checkDelta( 'last', $oLastManifest->boolTest(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_ONLINE, undef, $bOnline), $strTimelineCurrent, $strTimelineLast); } } $self->set(MANIFEST_SECTION_BACKUP_TARGET, $strLevel, MANIFEST_SUBKEY_PATH, $strPath); $self->set(MANIFEST_SECTION_BACKUP_TARGET, $strLevel, MANIFEST_SUBKEY_TYPE, $strLevel eq MANIFEST_TARGET_PGDATA ? MANIFEST_VALUE_PATH : MANIFEST_VALUE_LINK); if ($bTablespace) { my $iTablespaceId = (split('\/', $strLevel))[1]; if (!defined($hTablespaceMap->{$iTablespaceId})) { confess &log(ASSERT, "tablespace with oid ${iTablespaceId} not found in tablespace map\n" . "HINT: was a tablespace created or dropped during the backup?"); } $self->set(MANIFEST_SECTION_BACKUP_TARGET, $strLevel, MANIFEST_SUBKEY_TABLESPACE_ID, $iTablespaceId); $self->set(MANIFEST_SECTION_BACKUP_TARGET, $strLevel, MANIFEST_SUBKEY_TABLESPACE_NAME, $hTablespaceMap->{$iTablespaceId}); } if (index($strPath, '/') != 0) { if (!defined($strParentPath)) { confess &log(ASSERT, "cannot get manifest for '${strPath}' when no parent path is specified"); } $strPath = $oStorageDbMaster->pathAbsolute($strParentPath, $strPath); } # Get the manifest for this level my $hManifest = $oStorageDbMaster->manifest($strPath, {strFilter => $strFilter}); my $strManifestType = MANIFEST_VALUE_LINK; # Loop though all paths/files/links in the manifest foreach my $strName (sort(CORE::keys(%{$hManifest}))) { my $strFile = $strLevel; if ($strName ne '.') { if ($strManifestType eq MANIFEST_VALUE_LINK && $hManifest->{$strName}{type} eq 'l') { confess &log(ERROR, 'link \'' . $self->dbPathGet( $self->get(MANIFEST_SECTION_BACKUP_TARGET, MANIFEST_TARGET_PGDATA, MANIFEST_SUBKEY_PATH), $strLevel) . '\' -> \'' . $self->get(MANIFEST_SECTION_BACKUP_TARGET, $strLevel, MANIFEST_SUBKEY_PATH) . '\' cannot reference another link', ERROR_LINK_DESTINATION); } if ($strManifestType eq MANIFEST_VALUE_LINK) { $strFile = dirname($strFile); $self->set(MANIFEST_SECTION_BACKUP_TARGET, $strLevel, MANIFEST_SUBKEY_PATH, dirname($self->get(MANIFEST_SECTION_BACKUP_TARGET, $strLevel, MANIFEST_SUBKEY_PATH))); $self->set(MANIFEST_SECTION_BACKUP_TARGET, $strLevel, MANIFEST_SUBKEY_FILE, $strName); } $strFile .= "/${strName}"; } else { $strManifestType = MANIFEST_VALUE_PATH; } # Skip wal directory when doing an online backup. WAL will be restored from the archive or stored in the wal directory at # the end of the backup if the archive-copy option is set. next if ($bOnline && $strFile =~ (qw{^} . MANIFEST_TARGET_PGDATA . qw{/} . $self->walPath() . '\/') && $strFile !~ ('^' . MANIFEST_TARGET_PGDATA . qw{/} . $self->walPath() . qw{/} . DB_PATH_ARCHIVESTATUS . '$')); # Skip all directories and files that start with pgsql_tmp. The files are removed when the server is restarted and the # directories are recreated. next if $strName =~ ('(^|\/)' . DB_FILE_PREFIX_TMP); # Skip pg_dynshmem/* since these files cannot be reused on recovery next if $strFile =~ ('^' . MANIFEST_PATH_PGDYNSHMEM . '\/') && $self->dbVersion() >= PG_VERSION_94; # Skip pg_notify/* since these files cannot be reused on recovery next if $strFile =~ ('^' . MANIFEST_PATH_PGNOTIFY . '\/') && $self->dbVersion() >= PG_VERSION_90; # Skip pg_replslot/* since these files are generally not useful after a restore next if $strFile =~ ('^' . MANIFEST_PATH_PGREPLSLOT . '\/') && $self->dbVersion() >= PG_VERSION_94; # Skip pg_serial/* since these files are reset next if $strFile =~ ('^' . MANIFEST_PATH_PGSERIAL . '\/') && $self->dbVersion() >= PG_VERSION_91; # Skip pg_snapshots/* since these files cannot be reused on recovery next if $strFile =~ ('^' . MANIFEST_PATH_PGSNAPSHOTS . '\/') && $self->dbVersion() >= PG_VERSION_92; # Skip temporary statistics in pg_stat_tmp even when stats_temp_directory is set because PGSS_TEXT_FILE is always created # there. next if $strFile =~ ('^' . MANIFEST_PATH_PGSTATTMP . '\/') && $self->dbVersion() >= PG_VERSION_84; # Skip pg_subtrans/* since these files are reset next if $strFile =~ ('^' . MANIFEST_PATH_PGSUBTRANS . '\/'); # Skip pg_internal.init since it is recreated on startup next if $strFile =~ (DB_FILE_PGINTERNALINIT . '$'); # Skip recovery files if ($self->dbVersion() >= PG_VERSION_12) { next if ($strFile eq MANIFEST_FILE_RECOVERYSIGNAL || $strFile eq MANIFEST_FILE_STANDBYSIGNAL); } else { next if ($strFile eq MANIFEST_FILE_RECOVERYDONE || $strFile eq MANIFEST_FILE_RECOVERYCONF); } # Skip ignored files if ($strFile eq MANIFEST_FILE_POSTGRESQLAUTOCONFTMP || # postgresql.auto.conf.tmp - temp file for safe writes $strFile eq MANIFEST_FILE_BACKUPLABELOLD || # backup_label.old - old backup labels are not useful $strFile eq MANIFEST_FILE_POSTMASTEROPTS || # postmaster.opts - not useful for backup $strFile eq MANIFEST_FILE_POSTMASTERPID) # postmaster.pid - to avoid confusing postgres after restore { next; } # If version is greater than 9.0, check for files to exclude if ($self->dbVersion() >= PG_VERSION_90 && $hManifest->{$strName}{type} eq 'f') { # Get the directory name from the manifest; it will be used later to search for existence in the keys my $strDir = dirname($strName); # If it is a database data directory (base or tablespace) then check for files to skip if ($strDir =~ '^base\/[0-9]+$' || $strDir =~ ('^' . $self->tablespacePathGet() . '\/[0-9]+$')) { # Get just the filename my $strBaseName = basename($strName); # Skip temp tables (lower t followed by numbers underscore numbers and a dot (segment) or underscore (fork) and/or # segment, e.g. t1234_123, t1234_123.1, t1234_123_vm, t1234_123_fsm.1 if ($strBaseName =~ '^t[0-9]+\_[0-9]+(|\_(fsm|vm)){0,1}(\.[0-9]+){0,1}$') { next; } # If version is greater than 9.1 then check for unlogged tables to skip if ($self->dbVersion() >= PG_VERSION_91) { # Exclude all forks for unlogged tables except the init fork (numbers underscore init and optional dot segment) if ($strBaseName =~ '^[0-9]+(|\_(fsm|vm)){0,1}(\.[0-9]+){0,1}$') { # Get the filenode (OID) my ($strFileNode) = $strBaseName =~ '^(\d+)'; # Add _init to the OID to see if this is an unlogged object $strFileNode = $strDir. "/" . $strFileNode . "_init"; # If key exists in manifest then skip if (exists($hManifest->{$strFileNode}) && $hManifest->{$strFileNode}{type} eq 'f') { next; } } } } } # Exclude files requested by the user if (defined($rhExclude)) { # Exclusions are based on the name of the file relative to PGDATA my $strPgFile = $self->dbPathGet(undef, $strFile); my $bExclude = false; # Iterate through exclusions foreach my $strExclude (sort(keys(%{$rhExclude}))) { # If the exclusion ends in / then we must do a prefix match if ($strExclude =~ /\/$/) { if (index($strPgFile, $strExclude) == 0) { $bExclude = true; } } # Else an exact match or a prefix match with / appended is required elsif ($strPgFile eq $strExclude || index($strPgFile, "${strExclude}/") == 0) { $bExclude = true; } # Log everything that gets excluded at a high level so it will hopefully be seen if wrong if ($bExclude) { &log(INFO, "exclude ${strPgFile} from backup using '${strExclude}' exclusion"); last; } } # Skip the file if it was excluded next if $bExclude; } my $cType = $hManifest->{$strName}{type}; my $strSection = MANIFEST_SECTION_TARGET_PATH; if ($cType eq 'f') { $strSection = MANIFEST_SECTION_TARGET_FILE; } elsif ($cType eq 'l') { $strSection = MANIFEST_SECTION_TARGET_LINK; } elsif ($cType ne 'd') { &log(WARN, "exclude special file '" . $self->dbPathGet(undef, $strFile) . "' from backup"); next; } # Make sure that DB_PATH_PGTBLSPC contains only absolute links that do not point inside PGDATA my $bTablespace = false; if (index($strName, DB_PATH_PGTBLSPC . '/') == 0 && $strLevel eq MANIFEST_TARGET_PGDATA) { $bTablespace = true; $strFile = MANIFEST_TARGET_PGDATA . '/' . $strName; # Check for files in DB_PATH_PGTBLSPC that are not links if ($hManifest->{$strName}{type} ne 'l') { confess &log(ERROR, "${strName} is not a symlink - " . DB_PATH_PGTBLSPC . ' should contain only symlinks', ERROR_LINK_EXPECTED); } # Check for tablespaces in PGDATA if (index($hManifest->{$strName}{link_destination}, "${strPath}/") == 0 || (index($hManifest->{$strName}{link_destination}, '/') != 0 && index($oStorageDbMaster->pathAbsolute($strPath . '/' . DB_PATH_PGTBLSPC, $hManifest->{$strName}{link_destination}) . '/', "${strPath}/") == 0)) { confess &log(ERROR, 'tablespace symlink ' . $hManifest->{$strName}{link_destination} . ' destination must not be in $PGDATA', ERROR_LINK_DESTINATION); } } # User and group required for all types if (defined($hManifest->{$strName}{user})) { $self->set($strSection, $strFile, MANIFEST_SUBKEY_USER, $hManifest->{$strName}{user}); } else { $self->boolSet($strSection, $strFile, MANIFEST_SUBKEY_USER, false); } if (defined($hManifest->{$strName}{group})) { $self->set($strSection, $strFile, MANIFEST_SUBKEY_GROUP, $hManifest->{$strName}{group}); } else { $self->boolSet($strSection, $strFile, MANIFEST_SUBKEY_GROUP, false); } # Mode for required file and path type only if ($cType eq 'f' || $cType eq 'd') { $self->set($strSection, $strFile, MANIFEST_SUBKEY_MODE, $hManifest->{$strName}{mode}); } # Modification time and size required for file type only if ($cType eq 'f') { $self->set($strSection, $strFile, MANIFEST_SUBKEY_TIMESTAMP, $hManifest->{$strName}{modification_time} + 0); $self->set($strSection, $strFile, MANIFEST_SUBKEY_SIZE, $hManifest->{$strName}{size} + 0); $self->boolSet($strSection, $strFile, MANIFEST_SUBKEY_MASTER, ($strFile eq MANIFEST_FILE_PGCONTROL || $self->isMasterFile($strFile))); } # Link destination required for link type only if ($cType eq 'l') { my $strLinkDestination = $hManifest->{$strName}{link_destination}; $self->set($strSection, $strFile, MANIFEST_SUBKEY_DESTINATION, $strLinkDestination); # If this is a tablespace then set the filter to use for the next level my $strFilter; if ($bTablespace) { # Only versions >= 9.0 have the special top-level tablespace path. Below 9.0 the database files are stored # directly in the path referenced by the symlink. if ($self->dbVersion() >= PG_VERSION_90) { $strFilter = $self->tablespacePathGet(); } $self->set(MANIFEST_SECTION_TARGET_PATH, MANIFEST_TARGET_PGTBLSPC, undef, $self->get(MANIFEST_SECTION_TARGET_PATH, MANIFEST_TARGET_PGDATA)); # PGDATA prefix was only needed for the link so strip it off before recursing $strFile = substr($strFile, length(MANIFEST_TARGET_PGDATA) + 1); } $bDelta = $self->build( $oStorageDbMaster, $strLinkDestination, undef, $bOnline, $bDelta, $hTablespaceMap, $hDatabaseMap, $rhExclude, undef, undef, $strFile, $bTablespace, dirname("${strPath}/${strName}"), $strFilter, $iLevel + 1); } } # If this is the base level then do post-processing if ($strLevel eq MANIFEST_TARGET_PGDATA) { my $bTimeInFuture = false; # Wait for the remainder of the second when doing online backups. This is done because most filesystems only have a one # second resolution and Postgres will still be modifying files during the second that the manifest is built and this could # lead to an invalid diff/incr backup later when using timestamps to determine which files have changed. Offline backups do # not wait because it makes testing much faster and Postgres should not be running (if it is the backup will not be # consistent anyway and the one-second resolution problem is the least of our worries). my $lTimeBegin = waitRemainder($bOnline); # Check that links are valid $self->linkCheck(); if (defined($oLastManifest)) { $self->set(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_PRIOR, undef, $oLastManifest->get(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_LABEL)); } # Store database map information when provided during an online backup. foreach my $strDbName (sort(keys(%{$hDatabaseMap}))) { $self->numericSet(MANIFEST_SECTION_DB, $strDbName, MANIFEST_KEY_DB_ID, $hDatabaseMap->{$strDbName}{&MANIFEST_KEY_DB_ID}); $self->numericSet(MANIFEST_SECTION_DB, $strDbName, MANIFEST_KEY_DB_LAST_SYSTEM_ID, $hDatabaseMap->{$strDbName}{&MANIFEST_KEY_DB_LAST_SYSTEM_ID}); } # Determine if delta checksum should be enabled if (!$bDelta) { my @stryFileList = $self->keys(MANIFEST_SECTION_TARGET_FILE); if (@stryFileList) { $bDelta = $self->checkDeltaFile(\@stryFileList, $oLastManifest, $lTimeBegin); } } # Loop though all files foreach my $strName ($self->keys(MANIFEST_SECTION_TARGET_FILE)) { # If modification time is in the future (in this backup OR the last backup) set warning flag and do not # allow a reference if ($self->numericGet(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_TIMESTAMP) > $lTimeBegin || (defined($oLastManifest) && $oLastManifest->test(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_FUTURE, 'y'))) { $bTimeInFuture = true; # Only mark as future if still in the future in the current backup if ($self->numericGet(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_TIMESTAMP) > $lTimeBegin) { $self->set(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_FUTURE, 'y'); } } # Else check if the size and timestamp match OR if the size matches and the delta option is set, then keep the file. # In the latter case, if there had been a timestamp change then rather than removing and recopying the file, the file # will be tested in backupFile to see if the db/repo checksum still matches: if so, it is not necessary to recopy, # else it will need to be copied to the new backup. For zero sized files, the reference will be set and copying # will be skipped later. elsif (defined($oLastManifest) && $oLastManifest->test(MANIFEST_SECTION_TARGET_FILE, $strName) && $self->numericGet(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_SIZE) == $oLastManifest->numericGet(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_SIZE) && ($bDelta || ($self->numericGet(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_SIZE) == 0 || $self->numericGet(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_TIMESTAMP) == $oLastManifest->numericGet(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_TIMESTAMP)))) { # Copy reference from previous backup if possible if ($oLastManifest->test(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_REFERENCE)) { $self->set(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_REFERENCE, $oLastManifest->get(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_REFERENCE)); } # Otherwise the reference is to the previous backup else { $self->set(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_REFERENCE, $oLastManifest->get(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_LABEL)); } # Copy the checksum from previous manifest (if it exists - zero sized files don't have checksums) if ($oLastManifest->test(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_CHECKSUM)) { $self->set(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_CHECKSUM, $oLastManifest->get(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_CHECKSUM)); } # Copy repo size from the previous manifest (if it exists) if ($oLastManifest->test(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_REPO_SIZE)) { $self->set(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_REPO_SIZE, $oLastManifest->get(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_REPO_SIZE)); } # Copy master flag from the previous manifest (if it exists) if ($oLastManifest->test(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_MASTER)) { $self->set( MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_MASTER, $oLastManifest->get(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_MASTER)); } # Copy checksum page from the previous manifest (if it exists) my $bChecksumPage = $oLastManifest->get( MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_CHECKSUM_PAGE, false); if (defined($bChecksumPage)) { $self->boolSet(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_CHECKSUM_PAGE, $bChecksumPage); if (!$bChecksumPage && $oLastManifest->test(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_CHECKSUM_PAGE_ERROR)) { $self->set( MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_CHECKSUM_PAGE_ERROR, $oLastManifest->get(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_CHECKSUM_PAGE_ERROR)); } } } } # Warn if any files in the current backup are in the future if ($bTimeInFuture) { &log(WARN, "some files have timestamps in the future - they will be copied to prevent possible race conditions"); } # Record the time when copying will start $self->set(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_TIMESTAMP_COPY_START, undef, $lTimeBegin + ($bOnline ? 1 : 0)); # Build default sections $self->buildDefault(); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bDelta', value => $bDelta, trace => true}, ); } #################################################################################################################################### # linkCheck # # Check all link targets and make sure none of them are a subset of another link. In theory it would be possible to resolve the # dependencies and generate a valid backup/restore but it's really complicated and there don't seem to be any compelling use cases. #################################################################################################################################### sub linkCheck { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->linkCheck'); # Working variable my $strBasePath = $self->get(MANIFEST_SECTION_BACKUP_TARGET, MANIFEST_TARGET_PGDATA, MANIFEST_SUBKEY_PATH); foreach my $strTargetParent ($self->keys(MANIFEST_SECTION_BACKUP_TARGET)) { if ($self->isTargetLink($strTargetParent)) { my $strParentPath = $self->get(MANIFEST_SECTION_BACKUP_TARGET, $strTargetParent, MANIFEST_SUBKEY_PATH); my $strParentFile = $self->get(MANIFEST_SECTION_BACKUP_TARGET, $strTargetParent, MANIFEST_SUBKEY_FILE, false); foreach my $strTargetChild ($self->keys(MANIFEST_SECTION_BACKUP_TARGET)) { if ($self->isTargetLink($strTargetChild) && $strTargetParent ne $strTargetChild) { my $strChildPath = $self->get(MANIFEST_SECTION_BACKUP_TARGET, $strTargetChild, MANIFEST_SUBKEY_PATH); my $strChildFile = $self->get(MANIFEST_SECTION_BACKUP_TARGET, $strTargetParent, MANIFEST_SUBKEY_FILE, false); if (!(defined($strParentFile) && defined($strChildFile)) && index( storageLocal()->pathAbsolute($strBasePath, $strChildPath) . '/', storageLocal()->pathAbsolute($strBasePath, $strParentPath) . '/') == 0) { confess &log(ERROR, 'link ' . $self->dbPathGet($strBasePath, $strTargetChild) . " (${strChildPath}) references a subdirectory of or" . " the same directory as link " . $self->dbPathGet($strBasePath, $strTargetParent) . " (${strParentPath})", ERROR_LINK_DESTINATION); } } } } } } #################################################################################################################################### # fileAdd # # Add files to the manifest that were generated after the initial manifest build, e.g. backup_label, tablespace_map, and copied WAL # files. Since the files were not in the original cluster the user, group, and mode must be defaulted. #################################################################################################################################### sub fileAdd { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strManifestFile, $lModificationTime, $lSize, $strChecksum, $bMaster, ) = logDebugParam ( __PACKAGE__ . '->fileAdd', \@_, {name => 'strManifestFile'}, {name => 'lModificationTime'}, {name => 'lSize'}, {name => 'lChecksum'}, {name => 'bMaster'}, ); # Set manifest values if (!$self->test(MANIFEST_SECTION_TARGET_FILE . ':default', MANIFEST_SUBKEY_USER) || !$self->test(MANIFEST_SECTION_TARGET_FILE . ':default', MANIFEST_SUBKEY_USER, undef, $self->get(MANIFEST_SECTION_TARGET_PATH, MANIFEST_TARGET_PGDATA, MANIFEST_SUBKEY_USER))) { $self->set(MANIFEST_SECTION_TARGET_FILE, $strManifestFile, MANIFEST_SUBKEY_USER, $self->get(MANIFEST_SECTION_TARGET_PATH, MANIFEST_TARGET_PGDATA, MANIFEST_SUBKEY_USER)); } if (!$self->test(MANIFEST_SECTION_TARGET_FILE . ':default', MANIFEST_SUBKEY_GROUP) || !$self->test(MANIFEST_SECTION_TARGET_FILE . ':default', MANIFEST_SUBKEY_GROUP, undef, $self->get(MANIFEST_SECTION_TARGET_PATH, MANIFEST_TARGET_PGDATA, MANIFEST_SUBKEY_GROUP))) { $self->set(MANIFEST_SECTION_TARGET_FILE, $strManifestFile, MANIFEST_SUBKEY_GROUP, $self->get(MANIFEST_SECTION_TARGET_PATH, MANIFEST_TARGET_PGDATA, MANIFEST_SUBKEY_GROUP)); } if (!$self->test(MANIFEST_SECTION_TARGET_FILE . ':default', MANIFEST_SUBKEY_MODE) || !$self->test(MANIFEST_SECTION_TARGET_FILE . ':default', MANIFEST_SUBKEY_MODE, undef, '0600')) { $self->set(MANIFEST_SECTION_TARGET_FILE, $strManifestFile, MANIFEST_SUBKEY_MODE, '0600'); } $self->set(MANIFEST_SECTION_TARGET_FILE, $strManifestFile, MANIFEST_SUBKEY_TIMESTAMP, $lModificationTime); $self->set(MANIFEST_SECTION_TARGET_FILE, $strManifestFile, MANIFEST_SUBKEY_SIZE, $lSize); $self->set(MANIFEST_SECTION_TARGET_FILE, $strManifestFile, MANIFEST_SUBKEY_CHECKSUM, $strChecksum); $self->boolSet(MANIFEST_SECTION_TARGET_FILE, $strManifestFile, MANIFEST_SUBKEY_MASTER, $bMaster); } #################################################################################################################################### # buildDefault # # Builds the default section. #################################################################################################################################### sub buildDefault { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->buildDefault'); # Set defaults for subkeys that tend to repeat foreach my $strSection (&MANIFEST_SECTION_TARGET_FILE, &MANIFEST_SECTION_TARGET_PATH, &MANIFEST_SECTION_TARGET_LINK) { foreach my $strSubKey (&MANIFEST_SUBKEY_USER, &MANIFEST_SUBKEY_GROUP, &MANIFEST_SUBKEY_MODE, &MANIFEST_SUBKEY_MASTER) { # Links don't have a mode so skip next if ($strSection eq MANIFEST_SECTION_TARGET_LINK && $strSubKey eq &MANIFEST_SUBKEY_MODE); # Only files have the master subkey next if ($strSection ne MANIFEST_SECTION_TARGET_FILE && $strSubKey eq &MANIFEST_SUBKEY_MASTER); my %oDefault; my $iSectionTotal = 0; foreach my $strFile ($self->keys($strSection)) { # Don't count false values when subkey in (MANIFEST_SUBKEY_USER, MANIFEST_SUBKEY_GROUP) next if (($strSubKey eq MANIFEST_SUBKEY_USER || $strSubKey eq MANIFEST_SUBKEY_GROUP) && $self->boolTest($strSection, $strFile, $strSubKey, false)); my $strValue = $self->get($strSection, $strFile, $strSubKey); if (defined($oDefault{$strValue})) { $oDefault{$strValue}++; } else { $oDefault{$strValue} = 1; } $iSectionTotal++; } my $strMaxValue; my $iMaxValueTotal = 0; foreach my $strValue (sort(keys(%oDefault))) { if ($oDefault{$strValue} > $iMaxValueTotal) { $iMaxValueTotal = $oDefault{$strValue}; $strMaxValue = $strValue; } } if (defined($strMaxValue) > 0 && $iMaxValueTotal > $iSectionTotal * MANIFEST_DEFAULT_MATCH_FACTOR) { if ($strSubKey eq MANIFEST_SUBKEY_MASTER) { $self->boolSet("${strSection}:default", $strSubKey, undef, $strMaxValue); } else { $self->set("${strSection}:default", $strSubKey, undef, $strMaxValue); } foreach my $strFile ($self->keys($strSection)) { if ($self->test($strSection, $strFile, $strSubKey, $strMaxValue)) { $self->remove($strSection, $strFile, $strSubKey); } } } } } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # validate # # Checks for any missing values or inconsistencies in the manifest. #################################################################################################################################### sub validate { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . 'validate'); # Make sure that all files have size and checksum (when size > 0). Since these values are removed before the backup file copy # starts this ensures that all files had results stored in the manifest during the file copy. foreach my $strFile ($self->keys(MANIFEST_SECTION_TARGET_FILE)) { # Ensure size is set if (!$self->test(MANIFEST_SECTION_TARGET_FILE, $strFile, MANIFEST_SUBKEY_SIZE)) { confess &log(ASSERT, "manifest subvalue 'size' not set for file '${strFile}'"); } # If size > 0 then checksum must also be set if ($self->numericGet(MANIFEST_SECTION_TARGET_FILE, $strFile, MANIFEST_SUBKEY_SIZE) > 0 && !$self->test(MANIFEST_SECTION_TARGET_FILE, $strFile, MANIFEST_SUBKEY_CHECKSUM)) { confess &log(ASSERT, "manifest subvalue 'checksum' not set for file '${strFile}'"); } } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # dbVersion - version of PostgreSQL that the manifest is being built for #################################################################################################################################### sub dbVersion { my $self = shift; return $self->get(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_DB_VERSION); } #################################################################################################################################### # xactPath - return the transaction directory based on the PostgreSQL version #################################################################################################################################### sub xactPath { my $self = shift; return $self->dbVersion() >= PG_VERSION_10 ? 'pg_xact' : 'pg_clog'; } #################################################################################################################################### # walPath - return the wal directory based on the PostgreSQL version #################################################################################################################################### sub walPath { my $self = shift; return $self->dbVersion() >= PG_VERSION_10 ? 'pg_wal' : 'pg_xlog'; } #################################################################################################################################### # isMasterFile # # Is this file required to be copied from the master? #################################################################################################################################### sub isMasterFile { my $self = shift; my $strFile = shift; return $strFile !~ ('^(' . MANIFEST_TARGET_PGDATA . '\/' . '(' . DB_PATH_BASE . '|' . DB_PATH_GLOBAL . '|' . $self->xactPath() . '|' . DB_PATH_PGMULTIXACT . ')|' . DB_PATH_PGTBLSPC . ')\/'); } #################################################################################################################################### # isChecksumPage # # Can this file have page checksums in PG >= 9.3? #################################################################################################################################### sub isChecksumPage { my $strFile = shift; if (($strFile =~ ('^' . MANIFEST_TARGET_PGDATA . '\/' . DB_PATH_BASE . '\/[0-9]+\/|^' . MANIFEST_TARGET_PGTBLSPC . '\/[0-9]+\/[^\/]+\/[0-9]+\/') && $strFile !~ ('(' . DB_FILE_PGFILENODEMAP . '|' . DB_FILE_PGINTERNALINIT . '|' . DB_FILE_PGVERSION . ')$')) || ($strFile =~ ('^' . MANIFEST_TARGET_PGDATA . '\/' . DB_PATH_GLOBAL . '\/') && $strFile !~ ('(' . DB_FILE_PGFILENODEMAP . '|' . DB_FILE_PGINTERNALINIT . '|' . DB_FILE_PGVERSION . '|' . DB_FILE_PGCONTROL . ')$'))) { return true; } return false; } push @EXPORT, qw(isChecksumPage); 1; pgbackrest-release-2.24/lib/pgBackRest/Protocol/000077500000000000000000000000001362531507100216035ustar00rootroot00000000000000pgbackrest-release-2.24/lib/pgBackRest/Protocol/Storage/000077500000000000000000000000001362531507100232075ustar00rootroot00000000000000pgbackrest-release-2.24/lib/pgBackRest/Protocol/Storage/Helper.pm000066400000000000000000000106251362531507100247700ustar00rootroot00000000000000#################################################################################################################################### # Db & Repository Storage Helper #################################################################################################################################### package pgBackRest::Protocol::Storage::Helper; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(basename); use pgBackRest::Common::Log; use pgBackRest::Config::Config; use pgBackRest::LibC qw(:storage); use pgBackRest::Storage::Helper; #################################################################################################################################### # Storage constants #################################################################################################################################### use constant STORAGE_DB => ''; push @EXPORT, qw(STORAGE_DB); use constant STORAGE_REPO => ''; push @EXPORT, qw(STORAGE_REPO); use constant STORAGE_REPO_ARCHIVE => ''; push @EXPORT, qw(STORAGE_REPO_ARCHIVE); use constant STORAGE_REPO_BACKUP => ''; push @EXPORT, qw(STORAGE_REPO_BACKUP); #################################################################################################################################### # Cache storage so it can be retrieved quickly #################################################################################################################################### my $hStorage; #################################################################################################################################### # storageDb - get db storage #################################################################################################################################### sub storageDb { # Assign function parameters, defaults, and log debug info my ( $strOperation, ) = logDebugParam ( __PACKAGE__ . '::storageDb', \@_, ); # Create storage if not defined if (!defined($hStorage->{&STORAGE_DB})) { $hStorage->{&STORAGE_DB} = new pgBackRest::Storage::Storage( STORAGE_DB, {lBufferMax => cfgOption(CFGOPT_BUFFER_SIZE)}); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oStorageDb', value => $hStorage->{&STORAGE_DB}, trace => true}, ); } push @EXPORT, qw(storageDb); #################################################################################################################################### # storageRepo - get repository storage #################################################################################################################################### sub storageRepo { # Assign function parameters, defaults, and log debug info my ( $strOperation, $strStanza, ) = logDebugParam ( __PACKAGE__ . '::storageRepo', \@_, {name => 'strStanza', optional => true, trace => true}, ); # Create storage if not defined if (!defined($hStorage->{&STORAGE_REPO})) { $hStorage->{&STORAGE_REPO} = new pgBackRest::Storage::Storage( STORAGE_REPO, {lBufferMax => cfgOption(CFGOPT_BUFFER_SIZE)}); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oStorageRepo', value => $hStorage->{&STORAGE_REPO}, trace => true}, ); } push @EXPORT, qw(storageRepo); #################################################################################################################################### # Clear the repo storage cache - FOR TESTING ONLY! #################################################################################################################################### sub storageRepoCacheClear { # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '::storageRepoCacheClear'); delete($hStorage->{&STORAGE_REPO}); storageRepoFree(); # Return from function and log return values if any return logDebugReturn($strOperation); } push @EXPORT, qw(storageRepoCacheClear); 1; pgbackrest-release-2.24/lib/pgBackRest/Storage/000077500000000000000000000000001362531507100214065ustar00rootroot00000000000000pgbackrest-release-2.24/lib/pgBackRest/Storage/Base.pm000066400000000000000000000322051362531507100226200ustar00rootroot00000000000000#################################################################################################################################### # Base Storage Module #################################################################################################################################### package pgBackRest::Storage::Base; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use pgBackRest::Common::Exception; use pgBackRest::Common::Io::Base; use pgBackRest::Common::Log; #################################################################################################################################### # Storage constants #################################################################################################################################### use constant STORAGE_LOCAL => ''; push @EXPORT, qw(STORAGE_LOCAL); use constant STORAGE_S3 => 's3'; push @EXPORT, qw(STORAGE_S3); use constant STORAGE_POSIX => 'posix'; push @EXPORT, qw(STORAGE_POSIX); #################################################################################################################################### # Compress constants #################################################################################################################################### use constant STORAGE_COMPRESS => 'compress'; push @EXPORT, qw(STORAGE_COMPRESS); use constant STORAGE_DECOMPRESS => 'decompress'; push @EXPORT, qw(STORAGE_DECOMPRESS); #################################################################################################################################### # Cipher constants #################################################################################################################################### use constant STORAGE_ENCRYPT => 'encrypt'; push @EXPORT, qw(STORAGE_ENCRYPT); use constant STORAGE_DECRYPT => 'decrypt'; push @EXPORT, qw(STORAGE_DECRYPT); use constant CIPHER_MAGIC => 'Salted__'; push @EXPORT, qw(CIPHER_MAGIC); #################################################################################################################################### # Filter constants #################################################################################################################################### use constant STORAGE_FILTER_CIPHER_BLOCK => 'pgBackRest::Storage::Filter::CipherBlock'; push @EXPORT, qw(STORAGE_FILTER_CIPHER_BLOCK); use constant STORAGE_FILTER_GZIP => 'pgBackRest::Storage::Filter::Gzip'; push @EXPORT, qw(STORAGE_FILTER_GZIP); use constant STORAGE_FILTER_SHA => 'pgBackRest::Storage::Filter::Sha'; push @EXPORT, qw(STORAGE_FILTER_SHA); #################################################################################################################################### # Capability constants #################################################################################################################################### # Can the size in the storage be different than what was written? For example, a ZFS filesystem could be doing compression of a # backup where compression was not enabled. This affects how repo-size is calculated. If the file system only stores what was # written or won't report differently then we can save some time by just setting repo-size to size. use constant STORAGE_CAPABILITY_SIZE_DIFF => 'size-diff'; push @EXPORT, qw(STORAGE_CAPABILITY_SIZE_DIFF); use constant STORAGE_CAPABILITY_LINK => 'link'; push @EXPORT, qw(STORAGE_CAPABILITY_LINK); use constant STORAGE_CAPABILITY_PATH_SYNC => 'path-sync'; push @EXPORT, qw(STORAGE_CAPABILITY_PATH_SYNC); #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Create the class hash my $self = {}; bless $self, $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{lBufferMax}, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'lBufferMax', optional => true, default => COMMON_IO_BUFFER_MAX, trace => true}, ); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # Copy a file. If special encryption settings are required, then the file objects from openRead/openWrite must be passed instead of # file names. #################################################################################################################################### sub copy { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $xSourceFile, $xDestinationFile, $bSourceOpen, ) = logDebugParam ( __PACKAGE__ . '->copy', \@_, {name => 'xSourceFile', required => false}, {name => 'xDestinationFile'}, {name => 'bSourceOpen', optional => true, default => false}, ); # Is source/destination an IO object or a file expression? my $oSourceFileIo = defined($xSourceFile) ? (ref($xSourceFile) ? $xSourceFile : $self->openRead($xSourceFile)) : undef; # Does the source file exist? my $bResult = false; # Copy if the source file exists if (defined($oSourceFileIo)) { my $oDestinationFileIo = ref($xDestinationFile) ? $xDestinationFile : $self->openWrite($xDestinationFile); # Use C copy if source and destination are C objects if (defined($oSourceFileIo->{oStorageCRead}) && defined($oDestinationFileIo->{oStorageCWrite})) { $bResult = $self->{oStorageC}->copy( $oSourceFileIo->{oStorageCRead}, $oDestinationFileIo->{oStorageCWrite}) ? true : false; } else { # Open the source file if it is a C object $bResult = defined($oSourceFileIo->{oStorageCRead}) ? ($bSourceOpen || $oSourceFileIo->open()) : true; if ($bResult) { # Open the destination file if it is a C object if (defined($oDestinationFileIo->{oStorageCWrite})) { $oDestinationFileIo->open(); } # Copy the data do { # Read data my $tBuffer = ''; $oSourceFileIo->read(\$tBuffer, $self->{lBufferMax}); $oDestinationFileIo->write(\$tBuffer); } while (!$oSourceFileIo->eof()); # Close files $oSourceFileIo->close(); $oDestinationFileIo->close(); } } } return logDebugReturn ( $strOperation, {name => 'bResult', value => $bResult, trace => true}, ); } #################################################################################################################################### # get - reads a buffer from storage all at once #################################################################################################################################### sub get { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $xFile, $strCipherPass, ) = logDebugParam ( __PACKAGE__ . '->get', \@_, {name => 'xFile', required => false, trace => true}, {name => 'strCipherPass', optional => true, redact => true}, ); # Is this an IO object or a file expression? If file expression, then open the file and pass passphrase if one is defined or # if the repo has a user passphrase defined - else pass undef my $oFileIo = defined($xFile) ? (ref($xFile) ? $xFile : $self->openRead( $xFile, {strCipherPass => defined($strCipherPass) ? $strCipherPass : $self->cipherPassUser()})) : undef; # Read only if there is something to read from my $tContent; my $lSize = 0; if (defined($oFileIo)) { my $lSizeRead; do { $lSizeRead = $oFileIo->read(\$tContent, $self->{lBufferMax}); $lSize += $lSizeRead; } while ($lSizeRead != 0); # Close the file $oFileIo->close(); # If nothing was read then set to undef if ($lSize == 0) { $tContent = undef; } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'rtContent', value => defined($oFileIo) ? \$tContent : undef, trace => true}, ); } #################################################################################################################################### # pathAbsolute - generate an absolute path from an absolute base path and a relative path #################################################################################################################################### sub pathAbsolute { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strBasePath, $strPath ) = logDebugParam ( __PACKAGE__ . '::pathAbsolute', \@_, {name => 'strBasePath', trace => true}, {name => 'strPath', trace => true} ); # Working variables my $strAbsolutePath; # If the path is already absolute if (index($strPath, '/') == 0) { $strAbsolutePath = $strPath; } # Else make it absolute using the base path else { # Make sure the absolute path is really absolute if (index($strBasePath, '/') != 0 || index($strBasePath, '/..') != -1) { confess &log(ERROR, "${strBasePath} is not an absolute path", ERROR_PATH_TYPE); } while (index($strPath, '..') == 0) { $strBasePath = dirname($strBasePath); $strPath = substr($strPath, 2); if (index($strPath, '/') == 0) { $strPath = substr($strPath, 1); } } $strAbsolutePath = "${strBasePath}/${strPath}"; } # Make sure the result is really an absolute path if (index($strAbsolutePath, '/') != 0 || index($strAbsolutePath, '/..') != -1) { confess &log(ERROR, "result ${strAbsolutePath} was not an absolute path", ERROR_PATH_TYPE); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strAbsolutePath', value => $strAbsolutePath, trace => true} ); } #################################################################################################################################### # put - writes a buffer out to storage all at once #################################################################################################################################### sub put { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $xFile, $xContent, $strCipherPass, ) = logDebugParam ( __PACKAGE__ . '->put', \@_, {name => 'xFile', trace => true}, {name => 'xContent', required => false, trace => true}, {name => 'strCipherPass', optional => true, trace => true, redact => true}, ); # Is this an IO object or a file expression? If file expression, then open the file and pass passphrase if one is defined or if # the repo has a user passphrase defined - else pass undef my $oFileIo = ref($xFile) ? $xFile : $self->openWrite( $xFile, {strCipherPass => defined($strCipherPass) ? $strCipherPass : $self->cipherPassUser()}); # Determine size of content my $lSize = defined($xContent) ? length(ref($xContent) ? $$xContent : $xContent) : 0; # Write only if there is something to write if ($lSize > 0) { $oFileIo->write(ref($xContent) ? $xContent : \$xContent); } # Else open the file so a zero length file is created (since file is not opened until first write) else { $oFileIo->open(); } # Close the file $oFileIo->close(); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'lSize', value => $lSize, trace => true}, ); } 1; pgbackrest-release-2.24/lib/pgBackRest/Storage/Helper.pm000066400000000000000000000044371362531507100231730ustar00rootroot00000000000000#################################################################################################################################### # Local Storage Helper #################################################################################################################################### package pgBackRest::Storage::Helper; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(basename); use pgBackRest::Common::Log; use pgBackRest::Config::Config; use pgBackRest::Storage::Base; use pgBackRest::Storage::Storage; use pgBackRest::Version; #################################################################################################################################### # Compression extension #################################################################################################################################### use constant COMPRESS_EXT => 'gz'; push @EXPORT, qw(COMPRESS_EXT); #################################################################################################################################### # Temp file extension #################################################################################################################################### use constant STORAGE_TEMP_EXT => PROJECT_EXE . '.tmp'; push @EXPORT, qw(STORAGE_TEMP_EXT); #################################################################################################################################### # storageLocal - get local storage # # Local storage is generally read-only (except for locking) and can never reference a remote path. Used for adhoc activities like # reading pgbackrest.conf. #################################################################################################################################### sub storageLocal { # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '::storageLocal'); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oStorageLocal', value => new pgBackRest::Storage::Storage(STORAGE_LOCAL), trace => true}, ); } push @EXPORT, qw(storageLocal); 1; pgbackrest-release-2.24/lib/pgBackRest/Storage/Storage.pm000066400000000000000000001024161362531507100233540ustar00rootroot00000000000000#################################################################################################################################### # C Storage Interface #################################################################################################################################### package pgBackRest::Storage::Storage; use parent 'pgBackRest::Storage::Base'; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use File::Basename qw(dirname); use Fcntl qw(:mode); use File::stat qw{lstat}; use JSON::PP; use pgBackRest::Common::Exception; use pgBackRest::Common::Io::Handle; use pgBackRest::Common::Log; use pgBackRest::Storage::Base; use pgBackRest::Storage::StorageRead; use pgBackRest::Storage::StorageWrite; #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Create the class hash my $self = {}; bless $self, $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{strType}, $self->{strPath}, $self->{lBufferMax}, $self->{strDefaultPathMode}, $self->{strDefaultFileMode}, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'strType'}, {name => 'strPath', optional => true}, {name => 'lBufferMax', optional => true, default => 65536}, {name => 'strDefaultPathMode', optional => true, default => '0750'}, {name => 'strDefaultFileMode', optional => true, default => '0640'}, ); # Create C storage object $self->{oStorageC} = pgBackRest::LibC::Storage->new($self->{strType}, $self->{strPath}); # Get encryption settings if ($self->{strType} eq '') { $self->{strCipherType} = $self->{oStorageC}->cipherType(); $self->{strCipherPass} = $self->{oStorageC}->cipherPass(); } # Create JSON object $self->{oJSON} = JSON::PP->new()->allow_nonref(); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # Check if file exists (not a path) #################################################################################################################################### sub exists { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strFileExp, ) = logDebugParam ( __PACKAGE__ . '->exists', \@_, {name => 'strFileExp'}, ); # Check exists my $bExists = $self->{oStorageC}->exists($strFileExp); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bExists', value => $bExists ? true : false} ); } #################################################################################################################################### # Read a buffer from storage all at once #################################################################################################################################### sub get { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $xFile, $strCipherPass, ) = logDebugParam ( __PACKAGE__ . '->get', \@_, {name => 'xFile', required => false, trace => true}, {name => 'strCipherPass', optional => true, default => $self->cipherPassUser(), redact => true}, ); # Is this an IO object or a file expression? If file expression, then open the file and pass passphrase if one is defined or # if the repo has a user passphrase defined - else pass undef my $oFileIo = defined($xFile) ? (ref($xFile) ? $xFile : $self->openRead($xFile, {strCipherPass => $strCipherPass})) : undef; # Get the file contents my $bEmpty = false; my $tContent = $self->{oStorageC}->get($oFileIo->{oStorageCRead}); if (defined($tContent) && length($tContent) == 0) { $tContent = undef; $bEmpty = true; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'rtContent', value => defined($tContent) || $bEmpty ? \$tContent : undef, trace => true}, ); } #################################################################################################################################### # Calculate sha1 hash and size of file. If special encryption settings are required, then the file objects from openRead/openWrite # must be passed instead of file names. #################################################################################################################################### sub hashSize { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $xFileExp, $bIgnoreMissing, ) = logDebugParam ( __PACKAGE__ . '->hashSize', \@_, {name => 'xFileExp'}, {name => 'bIgnoreMissing', optional => true, default => false}, ); # Set operation variables my $strHash; my $lSize; # Is this an IO object or a file expression? my $oFileIo = ref($xFileExp) ? $xFileExp : $self->openRead($xFileExp, {bIgnoreMissing => $bIgnoreMissing}); # Add size and sha filters $oFileIo->{oStorageCRead}->filterAdd(COMMON_IO_HANDLE, undef); $oFileIo->{oStorageCRead}->filterAdd(STORAGE_FILTER_SHA, undef); # Read the file and set results if it exists if ($self->{oStorageC}->readDrain($oFileIo->{oStorageCRead})) { $strHash = $oFileIo->result(STORAGE_FILTER_SHA); $lSize = $oFileIo->result(COMMON_IO_HANDLE); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strHash', value => $strHash}, {name => 'lSize', value => $lSize} ); } #################################################################################################################################### # Get information for path/file #################################################################################################################################### sub info { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathFileExp, $bIgnoreMissing, ) = logDebugParam ( __PACKAGE__ . '->info', \@_, {name => 'strPathFileExp'}, {name => 'bIgnoreMissing', optional => true, default => false}, ); my $rhInfo; my $strJson = $self->{oStorageC}->info($strPathFileExp, $bIgnoreMissing); if (defined($strJson)) { $rhInfo = $self->{oJSON}->decode($strJson); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'rhInfo', value => $rhInfo, trace => true} ); } #################################################################################################################################### # linkCreate - create a link #################################################################################################################################### sub linkCreate { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strSourcePathFileExp, $strDestinationLinkExp, $bHard, $bRelative, $bPathCreate, $bIgnoreExists, ) = logDebugParam ( __PACKAGE__ . '->linkCreate', \@_, {name => 'strSourcePathFileExp'}, {name => 'strDestinationLinkExp'}, {name => 'bHard', optional=> true, default => false}, {name => 'bRelative', optional=> true, default => false}, {name => 'bPathCreate', optional=> true, default => true}, {name => 'bIgnoreExists', optional => true, default => false}, ); # Get source and destination paths my $strSourcePathFile = $self->pathGet($strSourcePathFileExp); my $strDestinationLink = $self->pathGet($strDestinationLinkExp); # Generate relative path if requested if ($bRelative) { # Determine how much of the paths are common my @strySource = split('/', $strSourcePathFile); my @stryDestination = split('/', $strDestinationLink); while (defined($strySource[0]) && defined($stryDestination[0]) && $strySource[0] eq $stryDestination[0]) { shift(@strySource); shift(@stryDestination); } # Add relative path sections $strSourcePathFile = ''; for (my $iIndex = 0; $iIndex < @stryDestination - 1; $iIndex++) { $strSourcePathFile .= '../'; } # Add path to source $strSourcePathFile .= join('/', @strySource); logDebugMisc ( $strOperation, 'apply relative path', {name => 'strSourcePathFile', value => $strSourcePathFile, trace => true} ); } if (!($bHard ? link($strSourcePathFile, $strDestinationLink) : symlink($strSourcePathFile, $strDestinationLink))) { my $strMessage = "unable to create link '${strDestinationLink}'"; # If parent path or source is missing if ($OS_ERROR{ENOENT}) { # Check if source is missing if (!$self->exists($strSourcePathFile)) { confess &log(ERROR, "${strMessage} because source '${strSourcePathFile}' does not exist", ERROR_FILE_MISSING); } if (!$bPathCreate) { confess &log(ERROR, "${strMessage} because parent does not exist", ERROR_PATH_MISSING); } # Create parent path $self->pathCreate(dirname($strDestinationLink), {bIgnoreExists => true, bCreateParent => true}); # Create link $self->linkCreate($strSourcePathFile, $strDestinationLink, {bHard => $bHard}); } # Else if link already exists elsif ($OS_ERROR{EEXIST}) { if (!$bIgnoreExists) { confess &log(ERROR, "${strMessage} because it already exists", ERROR_PATH_EXISTS); } } else { logErrorResult(ERROR_PATH_CREATE, ${strMessage}, $OS_ERROR); } } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # List all files/paths in path #################################################################################################################################### sub list { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathExp, $strExpression, $strSortOrder, $bIgnoreMissing, ) = logDebugParam ( __PACKAGE__ . '->list', \@_, {name => 'strPathExp', required => false}, {name => 'strExpression', optional => true}, {name => 'strSortOrder', optional => true, default => 'forward'}, {name => 'bIgnoreMissing', optional => true, default => false}, ); # Get file list my $rstryFileList = []; my $strFileList = $self->{oStorageC}->list($strPathExp, $bIgnoreMissing, $strSortOrder eq 'forward', $strExpression); if (defined($strFileList) && $strFileList ne '[]') { $rstryFileList = $self->{oJSON}->decode($strFileList); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'stryFileList', value => $rstryFileList} ); } #################################################################################################################################### # Build path/file/link manifest starting with base path and including all subpaths #################################################################################################################################### sub manifest { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathExp, $strFilter, ) = logDebugParam ( __PACKAGE__ . '->manifest', \@_, {name => 'strPathExp'}, {name => 'strFilter', optional => true, trace => true}, ); my $hManifest = $self->{oJSON}->decode($self->manifestJson($strPathExp, {strFilter => $strFilter})); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'hManifest', value => $hManifest, trace => true} ); } sub manifestJson { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathExp, $strFilter, ) = logDebugParam ( __PACKAGE__ . '->manifestJson', \@_, {name => 'strPathExp'}, {name => 'strFilter', optional => true, trace => true}, ); my $strManifestJson = $self->{oStorageC}->manifest($strPathExp, $strFilter); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strManifestJson', value => $strManifestJson, trace => true} ); } #################################################################################################################################### # move - move path/file #################################################################################################################################### sub move { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strSourceFileExp, $strDestinationFileExp, $bPathCreate, ) = logDebugParam ( __PACKAGE__ . '->move', \@_, {name => 'strSourceFileExp'}, {name => 'strDestinationFileExp'}, ); # Get source and destination paths my $strSourceFile = $self->pathGet($strSourceFileExp); my $strDestinationFile = $self->pathGet($strDestinationFileExp); # Move the file if (!rename($strSourceFile, $strDestinationFile)) { logErrorResult(ERROR_FILE_MOVE, "unable to move '${strSourceFile}' to '${strDestinationFile}'", $OS_ERROR); } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # Open file for reading #################################################################################################################################### sub openRead { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $xFileExp, $bIgnoreMissing, $rhyFilter, $strCipherPass, ) = logDebugParam ( __PACKAGE__ . '->openRead', \@_, {name => 'xFileExp'}, {name => 'bIgnoreMissing', optional => true, default => false}, {name => 'rhyFilter', optional => true}, {name => 'strCipherPass', optional => true, default => $self->cipherPassUser(), redact => true}, ); # Open the file my $oFileIo = pgBackRest::LibC::StorageRead->new($self->{oStorageC}, $xFileExp, $bIgnoreMissing); # If cipher is set then decryption is the first filter applied to the read if (defined($self->cipherType())) { $oFileIo->filterAdd(STORAGE_FILTER_CIPHER_BLOCK, $self->{oJSON}->encode([false, $self->cipherType(), $strCipherPass])); } # Apply any other filters if (defined($rhyFilter)) { foreach my $rhFilter (@{$rhyFilter}) { $oFileIo->filterAdd( $rhFilter->{strClass}, defined($rhFilter->{rxyParam}) ? $self->{oJSON}->encode($rhFilter->{rxyParam}) : undef); } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oFileIo', value => new pgBackRest::Storage::StorageRead($self, $oFileIo), trace => true}, ); } #################################################################################################################################### # Open file for writing #################################################################################################################################### sub openWrite { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $xFileExp, $strMode, $strUser, $strGroup, $lTimestamp, $bAtomic, $bPathCreate, $rhyFilter, $strCipherPass, ) = logDebugParam ( __PACKAGE__ . '->openWrite', \@_, {name => 'xFileExp'}, {name => 'strMode', optional => true, default => $self->{strDefaultFileMode}}, {name => 'strUser', optional => true}, {name => 'strGroup', optional => true}, {name => 'lTimestamp', optional => true, default => '0'}, {name => 'bAtomic', optional => true, default => false}, {name => 'bPathCreate', optional => true, default => false}, {name => 'rhyFilter', optional => true}, {name => 'strCipherPass', optional => true, default => $self->cipherPassUser(), redact => true}, ); # Open the file my $oFileIo = pgBackRest::LibC::StorageWrite->new( $self->{oStorageC}, $xFileExp, oct($strMode), $strUser, $strGroup, $lTimestamp, $bAtomic, $bPathCreate); # Apply any other filters if (defined($rhyFilter)) { foreach my $rhFilter (@{$rhyFilter}) { $oFileIo->filterAdd( $rhFilter->{strClass}, defined($rhFilter->{rxyParam}) ? $self->{oJSON}->encode($rhFilter->{rxyParam}) : undef); } } # If cipher is set then encryption is the last filter applied to the write if (defined($self->cipherType())) { $oFileIo->filterAdd(STORAGE_FILTER_CIPHER_BLOCK, $self->{oJSON}->encode([true, $self->cipherType(), $strCipherPass])); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oFileIo', value => new pgBackRest::Storage::StorageWrite($self, $oFileIo), trace => true}, ); } #################################################################################################################################### # Change ownership of path/file #################################################################################################################################### sub owner { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathFileExp, $strUser, $strGroup ) = logDebugParam ( __PACKAGE__ . '->owner', \@_, {name => 'strPathFileExp'}, {name => 'strUser', required => false}, {name => 'strGroup', required => false} ); # Only proceed if user or group was specified if (defined($strUser) || defined($strGroup)) { my $strPathFile = $self->pathGet($strPathFileExp); my $strMessage = "unable to set ownership for '${strPathFile}'"; my $iUserId; my $iGroupId; # If the user or group is not defined then get it by stat'ing the file. This is because the chown function requires that # both user and group be set. my $oStat = lstat($strPathFile); if (!defined($oStat)) { confess &log(ERROR, "unable to stat '${strPathFile}': No such file or directory", ERROR_FILE_MISSING); } if (!defined($strUser)) { $iUserId = $oStat->uid; } if (!defined($strGroup)) { $iGroupId = $oStat->gid; } # Lookup user if specified if (defined($strUser)) { $iUserId = getpwnam($strUser); if (!defined($iUserId)) { logErrorResult(ERROR_FILE_OWNER, "${strMessage} because user '${strUser}' does not exist"); } } # Lookup group if specified if (defined($strGroup)) { $iGroupId = getgrnam($strGroup); if (!defined($iGroupId)) { logErrorResult(ERROR_FILE_OWNER, "${strMessage} because group '${strGroup}' does not exist"); } } # Set ownership on the file if the user or group would be changed if ($iUserId != $oStat->uid || $iGroupId != $oStat->gid) { if (!chown($iUserId, $iGroupId, $strPathFile)) { logErrorResult(ERROR_FILE_OWNER, "${strMessage}", $OS_ERROR); } } } # Return from function and log return values if any return logDebugReturn ( $strOperation ); } #################################################################################################################################### # Generate an absolute path from an absolute base path and a relative path #################################################################################################################################### sub pathAbsolute { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strBasePath, $strPath ) = logDebugParam ( __PACKAGE__ . '->pathAbsolute', \@_, {name => 'strBasePath', trace => true}, {name => 'strPath', trace => true} ); # Working variables my $strAbsolutePath; # If the path is already absolute if (index($strPath, '/') == 0) { $strAbsolutePath = $strPath; } # Else make it absolute using the base path else { # Make sure the absolute path is really absolute if (index($strBasePath, '/') != 0 || index($strBasePath, '/..') != -1) { confess &log(ERROR, "${strBasePath} is not an absolute path", ERROR_PATH_TYPE); } while (index($strPath, '..') == 0) { $strBasePath = dirname($strBasePath); $strPath = substr($strPath, 2); if (index($strPath, '/') == 0) { $strPath = substr($strPath, 1); } } $strAbsolutePath = "${strBasePath}/${strPath}"; } # Make sure the result is really an absolute path if (index($strAbsolutePath, '/') != 0 || index($strAbsolutePath, '/..') != -1) { confess &log(ERROR, "result ${strAbsolutePath} was not an absolute path", ERROR_PATH_TYPE); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strAbsolutePath', value => $strAbsolutePath, trace => true} ); } #################################################################################################################################### # Create a path #################################################################################################################################### sub pathCreate { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathExp, $strMode, $bIgnoreExists, $bCreateParent, ) = logDebugParam ( __PACKAGE__ . '->pathCreate', \@_, {name => 'strPathExp'}, {name => 'strMode', optional => true}, {name => 'bIgnoreExists', optional => true, default => false}, {name => 'bCreateParent', optional => true, default => false}, ); # Create path $self->{oStorageC}->pathCreate($strPathExp, $strMode, $bIgnoreExists, $bCreateParent); # Return from function and log return values if any return logDebugReturn ( $strOperation ); } #################################################################################################################################### # Check if path exists #################################################################################################################################### sub pathExists { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathExp, ) = logDebugParam ( __PACKAGE__ . '->pathExists', \@_, {name => 'strPathExp'}, ); # Check exists my $bExists = $self->{oStorageC}->pathExists($strPathExp); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bExists', value => $bExists ? true : false} ); } #################################################################################################################################### # Resolve a path expression into an absolute path #################################################################################################################################### sub pathGet { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathExp, ) = logDebugParam ( __PACKAGE__ . '->pathGet', \@_, {name => 'strPathExp'}, ); # Check exists my $strPath = $self->{oStorageC}->pathGet($strPathExp); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strPath', value => $strPath, trace => true} ); } #################################################################################################################################### # Remove path and all files below it #################################################################################################################################### sub pathRemove { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathExp, $bIgnoreMissing, $bRecurse, ) = logDebugParam ( __PACKAGE__ . '->pathRemove', \@_, {name => 'strPathExp'}, {name => 'bIgnoreMissing', optional => true, default => true}, {name => 'bRecurse', optional => true, default => false}, ); $self->{oStorageC}->pathRemove($strPathExp, $bIgnoreMissing, $bRecurse); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # Sync path so newly added file entries are not lost #################################################################################################################################### sub pathSync { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathExp, ) = logDebugParam ( __PACKAGE__ . '->pathSync', \@_, {name => 'strPathExp'}, ); $self->{oStorageC}->pathSync($strPathExp); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # put - writes a buffer out to storage all at once #################################################################################################################################### sub put { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $xFile, $xContent, $strCipherPass, ) = logDebugParam ( __PACKAGE__ . '->put', \@_, {name => 'xFile', trace => true}, {name => 'xContent', required => false, trace => true}, {name => 'strCipherPass', optional => true, default => $self->cipherPassUser(), trace => true, redact => true}, ); # Is this an IO object or a file expression? If file expression, then open the file and pass passphrase if one is defined or if # the repo has a user passphrase defined - else pass undef my $oFileIo = ref($xFile) ? $xFile : $self->openWrite($xFile, {strCipherPass => $strCipherPass}); # Write the content my $lSize = $self->{oStorageC}->put($oFileIo->{oStorageCWrite}, ref($xContent) ? $$xContent : $xContent); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'lSize', value => $lSize, trace => true}, ); } #################################################################################################################################### # Remove file #################################################################################################################################### sub remove { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $xFileExp, $bIgnoreMissing, ) = logDebugParam ( __PACKAGE__ . '->remove', \@_, {name => 'xFileExp'}, {name => 'bIgnoreMissing', optional => true, default => true}, ); foreach my $strFileExp (ref($xFileExp) ? @{$xFileExp} : ($xFileExp)) { $self->{oStorageC}->remove($strFileExp, $bIgnoreMissing); } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # encrypted - determine if the file is encrypted or not #################################################################################################################################### sub encrypted { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strFileExp, $bIgnoreMissing, ) = logDebugParam ( __PACKAGE__ . '->encrypted', \@_, {name => 'strFileExp'}, {name => 'bIgnoreMissing', optional => true, default => false}, ); my $bEncrypted = false; # Open the file via the driver my $oFileIo = new pgBackRest::Storage::StorageRead( $self, pgBackRest::LibC::StorageRead->new($self->{oStorageC}, $strFileExp, $bIgnoreMissing)); # If the file does not exist because we're ignoring missing (else it would error before this is executed) then determine if it # should be encrypted based on the repo if (!$oFileIo->open()) { if (defined($self->cipherType())) { $bEncrypted = true; } } else { # If the file does exist, then read the magic signature my $tMagicSignature = ''; my $lSizeRead = $oFileIo->read(\$tMagicSignature, length(CIPHER_MAGIC)); $oFileIo->close(); if (substr($tMagicSignature, 0, length(CIPHER_MAGIC)) eq CIPHER_MAGIC) { $bEncrypted = true; } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bEncrypted', value => $bEncrypted} ); } #################################################################################################################################### # encryptionValid - determine if encryption set properly based on the value passed #################################################################################################################################### sub encryptionValid { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $bEncrypted, ) = logDebugParam ( __PACKAGE__ . '->encryptionValid', \@_, {name => 'bEncrypted'}, ); my $bValid = ($bEncrypted && defined($self->cipherType())) || (!$bEncrypted && !defined($self->cipherType())); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bValid', value => $bValid ? true : false} ); } #################################################################################################################################### # Getters #################################################################################################################################### sub capability {shift->type() eq STORAGE_POSIX} sub type {shift->{oStorageC}->type()} sub cipherType {shift->{strCipherType}} sub cipherPassUser {shift->{strCipherPass}} 1; pgbackrest-release-2.24/lib/pgBackRest/Storage/StorageRead.pm000066400000000000000000000132371362531507100241520ustar00rootroot00000000000000#################################################################################################################################### # C Storage Read Interface #################################################################################################################################### package pgBackRest::Storage::StorageRead; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use File::Basename qw(dirname); use Fcntl qw(:mode); use File::stat qw{lstat}; use JSON::PP; use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::Storage::Base; #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Create the class hash my $self = {}; bless $self, $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{oStorage}, $self->{oStorageCRead}, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oStorage'}, {name => 'oStorageCRead'}, ); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # Open the file #################################################################################################################################### sub open { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->open'); return logDebugReturn ( $strOperation, {name => 'bResult', value => $self->{oStorageCRead}->open() ? true : false, trace => true}, ); } #################################################################################################################################### # Read data #################################################################################################################################### sub read { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $rtBuffer, $iSize, ) = logDebugParam ( __PACKAGE__ . '->read', \@_, {name => 'rtBuffer'}, {name => 'iSize'}, ); # Read if not eof my $iActualSize = 0; if (!$self->eof()) { my $tBuffer = $self->{oStorageCRead}->read($iSize); $iActualSize = length($tBuffer); $$rtBuffer .= $tBuffer; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'iActualSize', value => $iActualSize} ); } #################################################################################################################################### # Is the file at eof? #################################################################################################################################### sub eof { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->eof'); return logDebugReturn ( $strOperation, {name => 'bResult', value => $self->{oStorageCRead}->eof() ? true : false, trace => true}, ); } #################################################################################################################################### # Close the file #################################################################################################################################### sub close { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->close'); $self->{oStorageCRead}->close(); return logDebugReturn ( $strOperation, {name => 'bResult', value => true, trace => true}, ); } #################################################################################################################################### # Get a filter result #################################################################################################################################### sub result { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strClass, ) = logDebugParam ( __PACKAGE__ . '->result', \@_, {name => 'strClass'}, ); my $xResult = $self->{oStorage}->{oJSON}->decode($self->{oStorageCRead}->result($strClass)); return logDebugReturn ( $strOperation, {name => 'xResult', value => $xResult, trace => true}, ); } #################################################################################################################################### # Get all filter results #################################################################################################################################### sub resultAll { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->resultAll'); my $xResult = $self->{oStorage}->{oJSON}->decode($self->{oStorageCRead}->resultAll()); return logDebugReturn ( $strOperation, {name => 'xResultAll', value => $xResult, trace => true}, ); } 1; pgbackrest-release-2.24/lib/pgBackRest/Storage/StorageWrite.pm000066400000000000000000000115301362531507100243630ustar00rootroot00000000000000#################################################################################################################################### # C Storage Write Interface #################################################################################################################################### package pgBackRest::Storage::StorageWrite; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use File::Basename qw(dirname); use Fcntl qw(:mode); use File::stat qw{lstat}; use JSON::PP; use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::Storage::Base; #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Create the class hash my $self = {}; bless $self, $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{oStorage}, $self->{oStorageCWrite}, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oStorage'}, {name => 'oStorageCWrite'}, ); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # Open the file #################################################################################################################################### sub open { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->open'); $self->{oStorageCWrite}->open(); return logDebugReturn ( $strOperation, {name => 'bResult', value => true, trace => true}, ); } #################################################################################################################################### # Write data #################################################################################################################################### sub write { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $rtBuffer, ) = logDebugParam ( __PACKAGE__ . '->write', \@_, {name => 'rtBuffer'}, ); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'iActualSize', value => $self->{oStorageCWrite}->write($$rtBuffer)} ); } #################################################################################################################################### # Close the file #################################################################################################################################### sub close { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->close'); $self->{oStorageCWrite}->close(); return logDebugReturn ( $strOperation, {name => 'bResult', value => true, trace => true}, ); } #################################################################################################################################### # Get a filter result #################################################################################################################################### sub result { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strClass, ) = logDebugParam ( __PACKAGE__ . '->result', \@_, {name => 'strClass'}, ); my $xResult = $self->{oStorage}->{oJSON}->decode($self->{oStorageCWrite}->result($strClass)); return logDebugReturn ( $strOperation, {name => 'xResult', value => $xResult, trace => true}, ); } #################################################################################################################################### # Get all filter results #################################################################################################################################### sub resultAll { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->resultAll'); my $xResult = $self->{oStorage}->{oJSON}->decode($self->{oStorageCWrite}->resultAll()); return logDebugReturn ( $strOperation, {name => 'xResultAll', value => $xResult, trace => true}, ); } 1; pgbackrest-release-2.24/lib/pgBackRest/Version.pm000066400000000000000000000044151362531507100217710ustar00rootroot00000000000000#################################################################################################################################### # VERSION MODULE # # Contains project version and format numbers. #################################################################################################################################### package pgBackRest::Version; use strict; use warnings FATAL => qw(all); use Cwd qw(abs_path); use Exporter qw(import); our @EXPORT = qw(); # Project Name # # Defines the official project name. #----------------------------------------------------------------------------------------------------------------------------------- use constant PROJECT_NAME => 'pgBackRest'; push @EXPORT, qw(PROJECT_NAME); use constant PROJECT_EXE => lc(PROJECT_NAME); push @EXPORT, qw(PROJECT_EXE); use constant PROJECT_CONF => PROJECT_EXE . '.conf'; push @EXPORT, qw(PROJECT_CONF); # Binary location # # Stores the exe location. #----------------------------------------------------------------------------------------------------------------------------------- my $strProjectBin; sub projectBin {return $strProjectBin}; sub projectBinSet {$strProjectBin = shift} push @EXPORT, qw(projectBin projectBinSet); # Project Version Number # # Defines the current version of the BackRest executable. The version number is used to track features but does not affect what # repositories or manifests can be read - that's the job of the format number. #----------------------------------------------------------------------------------------------------------------------------------- use constant PROJECT_VERSION => '2.24'; push @EXPORT, qw(PROJECT_VERSION); # Repository Format Number # # Defines format for info and manifest files as well as on-disk structure. If this number changes then the repository will be # invalid unless migration functions are written. #----------------------------------------------------------------------------------------------------------------------------------- use constant REPOSITORY_FORMAT => 5; push @EXPORT, qw(REPOSITORY_FORMAT); 1; pgbackrest-release-2.24/libc/000077500000000000000000000000001362531507100161205ustar00rootroot00000000000000pgbackrest-release-2.24/libc/LibC.h000066400000000000000000000171711362531507100171110ustar00rootroot00000000000000/*********************************************************************************************************************************** Helper macros for LibC.xs ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Package Names ***********************************************************************************************************************************/ #define PACKAGE_NAME "pgBackRest" #define PACKAGE_NAME_LIBC PACKAGE_NAME "::LibC" /*********************************************************************************************************************************** Error handling macros that throw a Perl error when a C error is caught ***********************************************************************************************************************************/ #define ERROR_XS_BEGIN() \ TRY_BEGIN() #define ERROR_XS() \ croak("PGBRCLIB:%d:%s:%d:%s", errorCode(), errorFileName(), errorFileLine(), errorMessage()); #define ERROR_XS_END() \ CATCH_ANY() \ { \ ERROR_XS(); \ } \ TRY_END(); /*********************************************************************************************************************************** Simplifies switching to a temp memory context in functions and includes error handling ***********************************************************************************************************************************/ #define MEM_CONTEXT_XS_TEMP() \ MEM_CONTEXT_XS_TEMP_memContext #define MEM_CONTEXT_XS_TEMP_BEGIN() \ { \ /* Create temp memory context */ \ MemContext *MEM_CONTEXT_XS_TEMP() = memContextNew("temporary"); \ \ /* Switch to temp memory context */ \ MemContext *MEM_CONTEXT_memContextPrior = memContextSwitch(MEM_CONTEXT_XS_TEMP()); \ \ /* Store any errors to be croaked to Perl at the end */ \ bool MEM_CONTEXT_XS_croak = false; \ \ /* Try the statement block */ \ TRY_BEGIN() #define MEM_CONTEXT_XS_TEMP_END() \ /* Set error to be croak to Perl later */ \ CATCH_ANY() \ { \ MEM_CONTEXT_XS_croak = true; \ } \ /* Free the context on error */ \ FINALLY() \ { \ memContextSwitch(memContextPrior()); \ memContextFree(MEM_CONTEXT_XS_TEMP()); \ } \ TRY_END(); \ \ /* Croak on error */ \ if (MEM_CONTEXT_XS_croak) \ { \ ERROR_XS() \ } \ } /*********************************************************************************************************************************** Create new string from an SV ***********************************************************************************************************************************/ #define STR_NEW_SV(param) \ (SvOK(param) ? strNewN(SvPV_nolen(param), SvCUR(param)) : NULL) /*********************************************************************************************************************************** Create const buffer from an SV ***********************************************************************************************************************************/ #define BUF_CONST_SV(param) \ (SvOK(param) ? BUF(SvPV_nolen(param), SvCUR(param)) : NULL) pgbackrest-release-2.24/libc/LibC.xs000066400000000000000000000112411362531507100173040ustar00rootroot00000000000000/*********************************************************************************************************************************** C to Perl Interface The following C types are mapped by the current typemap: 'AV *', 'Boolean', 'CV *', 'FILE *', 'FileHandle', 'HV *', 'I16', 'I32', 'I8', 'IV', 'InOutStream', 'InputStream', 'NV', 'OutputStream', 'PerlIO *', 'Result', 'STRLEN', 'SV *', 'SVREF', 'SysRet', 'SysRetLong', 'Time_t *', 'U16', 'U32', 'U8', 'UV', 'bool', 'bool_t', 'caddr_t', 'char', 'char *', 'char **', 'const char *', 'double', 'float', 'int', 'long', 'short', 'size_t', 'ssize_t', 'time_t', 'unsigned', 'unsigned char', 'unsigned char *', 'unsigned int', 'unsigned long', 'unsigned long *', 'unsigned short', 'void *', 'wchar_t', 'wchar_t *' ***********************************************************************************************************************************/ #include "build.auto.h" #define PERL_NO_GET_CONTEXT /*********************************************************************************************************************************** Perl includes Order is critical here so don't change it. ***********************************************************************************************************************************/ #if __GNUC__ > 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ > 8 || (__GNUC_MINOR__ == 8 && __GNUC_PATCHLEVEL__ >= 0))) #define WARNING_MAYBE_INITIALIZED 1 #elif __GNUC__ > 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ > 6 || (__GNUC_MINOR__ == 6 && __GNUC_PATCHLEVEL__ >= 0))) #define WARNING_INITIALIZED 1 #endif #if WARNING_MAYBE_INITIALIZED #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" #elif WARNING_INITIALIZED #pragma GCC diagnostic ignored "-Wuninitialized" #endif #pragma GCC diagnostic ignored "-Wsign-conversion" #pragma GCC diagnostic ignored "-Wconversion" #include #include #include #if WARNING_MAYBE_INITIALIZED #pragma GCC diagnostic warning "-Wmaybe-uninitialized" #elif WARNING_INITIALIZED #pragma GCC diagnostic warning "-Wuninitialized" #endif /*********************************************************************************************************************************** C includes These includes are from the src directory. There is no Perl-specific code in them. ***********************************************************************************************************************************/ #include "common/crypto/common.h" #include "common/error.h" #include "common/io/io.h" #include "config/config.h" #include "config/define.h" #include "config/load.h" #include "config/parse.h" #include "postgres/pageChecksum.h" #include "storage/posix/storage.h" /*********************************************************************************************************************************** Helper macros ***********************************************************************************************************************************/ #include "LibC.h" /*********************************************************************************************************************************** XSH includes These includes define data structures that are required for the C to Perl interface but are not part of the regular C source. ***********************************************************************************************************************************/ #include "xs/crypto/hash.xsh" #include "xs/config/configTest.xsh" #include "xs/postgres/client.xsh" #include "xs/storage/storage.xsh" #include "xs/storage/storageRead.xsh" #include "xs/storage/storageWrite.xsh" /*********************************************************************************************************************************** Module definition ***********************************************************************************************************************************/ MODULE = pgBackRest::LibC PACKAGE = pgBackRest::LibC PROTOTYPES: DISABLE # Return UVSIZE to ensure that this Perl supports 64-bit integers # ---------------------------------------------------------------------------------------------------------------------------------- I32 libcUvSize() CODE: RETVAL = UVSIZE; OUTPUT: RETVAL # Exported functions and modules # # These modules should map 1-1 with C modules in src directory. # ---------------------------------------------------------------------------------------------------------------------------------- INCLUDE: xs/config/config.xs INCLUDE: xs/config/configTest.xs INCLUDE: xs/config/define.xs INCLUDE: xs/crypto/hash.xs INCLUDE: xs/postgres/client.xs INCLUDE: xs/postgres/pageChecksum.xs INCLUDE: xs/storage/storage.xs INCLUDE: xs/storage/storageRead.xs INCLUDE: xs/storage/storageWrite.xs pgbackrest-release-2.24/libc/Makefile.PL000066400000000000000000000114361362531507100200770ustar00rootroot00000000000000#################################################################################################################################### # Build Makefile and Auto-Generate Files Required for Build # # The C library is only used for Perl unit tests. For a production build all C library exports are built directly into the # pgbackrest executable. See src/perl/libc.auto.c. #################################################################################################################################### use 5.010001; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; # Convert die to confess to capture the stack trace $SIG{__DIE__} = sub { Carp::confess @_ }; use Cwd qw(abs_path); use ExtUtils::MakeMaker; use File::Basename qw(dirname); #################################################################################################################################### # Storage object to use for all file operations #################################################################################################################################### use constant PROJECT_NAME => 'pgBackRest'; #################################################################################################################################### # Make sure the makefile is being created in an expected test directory. This should prevent users from building it in production. #################################################################################################################################### if (dirname($0) !~ /\.vagrant\/bin\/[^\/]+\/libc$/) { confess "LibC is not being built in a test directory (" . dirname($0) . "). LibC should not be distributed for production builds. See build documentation for details."; } #################################################################################################################################### # Create C Makefile #################################################################################################################################### my $strBuildPath = dirname(dirname(abs_path($0))); # Create C files array my @stryCFile = ( 'LibC.c', 'command/command.c', 'common/compress/gzip/common.c', 'common/compress/gzip/compress.c', 'common/compress/gzip/decompress.c', 'common/crypto/cipherBlock.c', 'common/crypto/common.c', 'common/crypto/hash.c', 'common/debug.c', 'common/encode.c', 'common/encode/base64.c', 'common/error.c', 'common/ini.c', 'common/io/bufferRead.c', 'common/io/bufferWrite.c', 'common/io/filter/buffer.c', 'common/io/filter/filter.c', 'common/io/filter/group.c', 'common/io/filter/sink.c', 'common/io/filter/size.c', 'common/io/handleWrite.c', 'common/io/http/cache.c', 'common/io/http/client.c', 'common/io/http/common.c', 'common/io/http/header.c', 'common/io/http/query.c', 'common/io/io.c', 'common/io/read.c', 'common/io/tls/client.c', 'common/io/write.c', 'common/log.c', 'common/memContext.c', 'common/regExp.c', 'common/stackTrace.c', 'common/time.c', 'common/type/convert.c', 'common/type/buffer.c', 'common/type/json.c', 'common/type/keyValue.c', 'common/type/list.c', 'common/type/string.c', 'common/type/stringList.c', 'common/type/variant.c', 'common/type/variantList.c', 'common/type/xml.c', 'common/user.c', 'common/wait.c', 'config/config.c', 'config/define.c', 'config/load.c', 'config/parse.c', 'protocol/client.c', 'protocol/command.c', 'protocol/helper.c', 'protocol/parallel.c', 'protocol/parallelJob.c', 'protocol/server.c', 'postgres/client.c', 'postgres/pageChecksum.c', 'storage/posix/read.c', 'storage/posix/storage.c', 'storage/posix/write.c', 'storage/s3/read.c', 'storage/s3/storage.c', 'storage/s3/write.c', 'storage/helper.c', 'storage/read.c', 'storage/storage.c', 'storage/write.c', ); # Add ../src for files that are outside libc for (my $iFileIdx = 1; $iFileIdx < @stryCFile; $iFileIdx++) { $stryCFile[$iFileIdx] = '../src/' . $stryCFile[$iFileIdx]; } # Write the makefile WriteMakefile ( NAME => PROJECT_NAME . '::LibC', VERSION => '999', AUTHOR => 'David Steele ', CCFLAGS => join(' ', qw) -Wfatal-errors -Wall -Wextra -Wwrite-strings -Wno-clobbered -Wno-missing-field-initializers -o $@ -std=c99 -D_POSIX_C_SOURCE=200112L -D_FILE_OFFSET_BITS=64 `pkg-config libxml-2.0 --cflags` -I`pg_config --includedir` )), INC => join(' ', qw( -I. -I../src )), C => \@stryCFile, LIBS => '-lcrypto -lpq -lssl -lxml2', OBJECT => '$(O_FILES)', ); pgbackrest-release-2.24/libc/build/000077500000000000000000000000001362531507100172175ustar00rootroot00000000000000pgbackrest-release-2.24/libc/build/lib/000077500000000000000000000000001362531507100177655ustar00rootroot00000000000000pgbackrest-release-2.24/libc/build/lib/pgBackRestLibC/000077500000000000000000000000001362531507100225445ustar00rootroot00000000000000pgbackrest-release-2.24/libc/build/lib/pgBackRestLibC/Build.pm000066400000000000000000000275541362531507100241560ustar00rootroot00000000000000#################################################################################################################################### # Auto-Generate XS and PM Files Required for Perl #################################################################################################################################### package pgBackRestLibC::Build; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Cwd qw(abs_path); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use Storable qw(dclone); use lib dirname($0) . '/../build/lib'; use lib dirname($0) . '/../lib'; use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Version; use pgBackRestBuild::Build; use pgBackRestBuild::Build::Common; use pgBackRestBuild::Config::Data; use pgBackRestBuild::Error::Data; use pgBackRestTest::Common::Storage; use pgBackRestTest::Common::StoragePosix; #################################################################################################################################### # Perl function and constant exports #################################################################################################################################### use constant BLD_EXPORTTYPE_SUB => 'sub'; use constant BLD_EXPORTTYPE_CONSTANT => 'constant'; use constant LIB_AUTO_NAME => 'LibCAuto'; #################################################################################################################################### # Save contents to a file if the file is missing or the contents are different. This saves write IO and prevents the timestamp from # changing. #################################################################################################################################### sub buildPutDiffers { my $oStorage = shift; my $strFile = shift; my $strContents = shift; # Attempt to load the file my $bSave = true; my $oFile = $oStorage->openRead($strFile, {bIgnoreMissing => true}); # If file was found see if the content is the same if (defined($oFile) && ${$oStorage->get($oFile)} eq $strContents) { $bSave = false; } # Save if the contents are different or missing if ($bSave) { $oStorage->put($strFile, $strContents); } return $bSave; } #################################################################################################################################### # Static exports #################################################################################################################################### my $rhExport = { 'checksum' => { &BLD_EXPORTTYPE_SUB => [qw( pageChecksum )], }, 'config' => { &BLD_EXPORTTYPE_SUB => [qw( cfgCommandName cfgOptionIndexTotal cfgOptionName )], }, 'configDefine' => { &BLD_EXPORTTYPE_SUB => [qw( cfgCommandId cfgDefOptionDefault cfgDefOptionPrefix cfgDefOptionSecure cfgDefOptionType cfgDefOptionValid cfgOptionId cfgOptionTotal )], }, 'crypto' => { &BLD_EXPORTTYPE_SUB => [qw( cryptoHashOne )], }, 'debug' => { &BLD_EXPORTTYPE_SUB => [qw( libcUvSize )], }, 'storage' => { &BLD_EXPORTTYPE_SUB => [qw( storageRepoFree )], }, 'test' => { &BLD_EXPORTTYPE_SUB => [qw( cfgParseTest )], }, }; #################################################################################################################################### # Execute all build functions #################################################################################################################################### sub buildXsAll { my $strBuildPath = shift; # List of files built my @stryBuilt; # Storage my $oStorage = new pgBackRestTest::Common::Storage( $strBuildPath, new pgBackRestTest::Common::StoragePosix({bFileSync => false, bPathSync => false})); # Build interface file my $strContent = ('#' x 132) . "\n" . '# ' . bldAutoWarning('Build.pm') . "\n" . ('#' x 132) . "\n" . "package pgBackRest::LibCAuto;\n" . "\n" . "use strict;\n" . "use warnings;\n"; # Generate constants for options that have a list of strings as allowed values my $rhConfigDefine = cfgDefine(); my $strConstantBlock; foreach my $strOption (sort(keys(%{$rhConfigDefine}))) { my $rhOption = $rhConfigDefine->{$strOption}; next if $rhOption->{&CFGDEF_TYPE} ne CFGDEF_TYPE_STRING; next if $strOption =~ /^log-level-/; if (defined($rhOption->{&CFGDEF_ALLOW_LIST})) { $strConstantBlock .= defined($strConstantBlock) ? "\n" : ''; foreach my $strValue (@{$rhOption->{&CFGDEF_ALLOW_LIST}}) { my $strConstant = 'CFGOPTVAL_' . uc("${strOption}_${strValue}"); $strConstant =~ s/\-/\_/g; $strConstantBlock .= " ${strConstant}" . (' ' x (69 - length($strConstant) - 4)) . "=> '${strValue}',\n"; push(@{$rhExport->{'config'}{&BLD_EXPORTTYPE_CONSTANT}}, $strConstant); } } foreach my $strCommand (sort(keys(%{$rhOption->{&CFGDEF_COMMAND}}))) { my $rhCommand = $rhOption->{&CFGDEF_COMMAND}{$strCommand}; if (defined($rhCommand->{&CFGDEF_ALLOW_LIST})) { $strConstantBlock .= defined($strConstantBlock) ? "\n" : ''; foreach my $strValue (@{$rhCommand->{&CFGDEF_ALLOW_LIST}}) { my $strConstant = 'CFGOPTVAL_' . uc("${strCommand}_${strOption}_${strValue}"); $strConstant =~ s/\-/\_/g; $strConstantBlock .= " ${strConstant}" . (' ' x (69 - length($strConstant) - 4)) . "=> '${strValue}',\n"; push(@{$rhExport->{'config'}{&BLD_EXPORTTYPE_CONSTANT}}, $strConstant); } } } } # Generate command constants foreach my $strCommand (cfgDefineCommandList()) { my $strConstant = "CFGCMD_" . uc($strCommand); $strConstant =~ s/\-/\_/g; push(@{$rhExport->{'config'}{&BLD_EXPORTTYPE_CONSTANT}}, $strConstant); } # Generate option constants foreach my $strOption (sort(keys(%{$rhConfigDefine}))) { # Build Perl constant my $strConstant = "CFGOPT_" . uc($strOption); $strConstant =~ s/\-/\_/g; # Builds option data for (my $iOptionIndex = 1; $iOptionIndex <= $rhConfigDefine->{$strOption}{&CFGDEF_INDEX_TOTAL}; $iOptionIndex++) { push(@{$rhExport->{'config'}{&BLD_EXPORTTYPE_CONSTANT}}, $strConstant . ($iOptionIndex == 1 ? '' : $iOptionIndex)); } } # Generate option type constants $strConstantBlock .= defined($strConstantBlock) ? "\n" : ''; my $iIndex = 0; foreach my $strOptionType (cfgDefineOptionTypeList()) { # Build Perl constant my $strConstant = "CFGDEF_TYPE_" . uc($strOptionType); $strConstant =~ s/\-/\_/g; $strConstantBlock .= " ${strConstant}" . (' ' x (69 - length($strConstant) - 4)) . "=> $iIndex,\n"; push(@{$rhExport->{'configDefine'}{&BLD_EXPORTTYPE_CONSTANT}}, $strConstant); $iIndex++; }; # Generate encode type constants $strConstantBlock .= defined($strConstantBlock) ? "\n" : ''; my $strConstant = "ENCODE_TYPE_BASE64"; $strConstantBlock .= " ${strConstant}" . (' ' x (69 - length($strConstant) - 4)) . "=> 0,\n"; # Generate cipher type constants $strConstantBlock .= defined($strConstantBlock) ? "\n" : ''; $strConstant = "CIPHER_MODE_ENCRYPT"; $strConstantBlock .= " ${strConstant}" . (' ' x (69 - length($strConstant) - 4)) . "=> 0,\n"; $strConstant = "CIPHER_MODE_DECRYPT"; $strConstantBlock .= " ${strConstant}" . (' ' x (69 - length($strConstant) - 4)) . "=> 1,\n"; $strContent .= "\n" . "# Configuration option value constants\n" . "sub libcAutoConstant\n" . "{\n" . " return\n" . " {\n" . " " . trim($strConstantBlock) . "\n" . " }\n" . "}\n"; # Generate export tags my $strExportTags; foreach my $strSection (sort(keys(%{$rhExport}))) { my $rhExportSection = $rhExport->{$strSection}; $strExportTags .= (defined($strExportTags) ? "\n" : '') . " ${strSection} =>\n [\n"; if (defined($rhExportSection->{&BLD_EXPORTTYPE_CONSTANT}) && @{$rhExportSection->{&BLD_EXPORTTYPE_CONSTANT}} > 0) { foreach my $strConstant (@{$rhExportSection->{&BLD_EXPORTTYPE_CONSTANT}}) { $strExportTags .= " '${strConstant}',\n"; } } if (defined($rhExportSection->{&BLD_EXPORTTYPE_SUB}) && @{$rhExportSection->{&BLD_EXPORTTYPE_SUB}} > 0) { foreach my $strSub (@{$rhExportSection->{&BLD_EXPORTTYPE_SUB}}) { $strExportTags .= " '${strSub}',\n"; } } $strExportTags .= " ],\n"; } $strContent .= "\n" . "# Export function and constants\n" . "sub libcAutoExportTag\n" . "{\n" . " return\n" . " {\n" . $strExportTags . " }\n" . "}\n"; # Add module end marker $strContent .= "\n" . "1;\n"; # Save the file my $strFile = 'lib/' . PROJECT_NAME . '/' . LIB_AUTO_NAME . '.pm'; if (buildPutDiffers($oStorage, "../${strFile}", $strContent)) { push(@stryBuilt, $strFile); } # Build error file #------------------------------------------------------------------------------------------------------------------------------- my $rhErrorDefine = errorDefine(); # Order by id for the list that is id ordered my $rhErrorId = {}; foreach my $strType (sort(keys(%{$rhErrorDefine}))) { my $iCode = $rhErrorDefine->{$strType}; $rhErrorId->{$iCode} = $strType; } # Output errors $strContent = ('#' x 132) . "\n" . "# COMMON EXCEPTION AUTO MODULE\n" . "# \n" . '# ' . bldAutoWarning('Build.pm') . "\n" . ('#' x 132) . "\n" . "package pgBackRest::Common::ExceptionAuto;\n" . "\n" . "use strict;\n" . "use warnings FATAL => qw(all);\n" . "\n" . "use Exporter qw(import);\n" . " our \@EXPORT = qw();\n" . "\n" . ('#' x 132) . "\n" . "# Error Definitions\n" . ('#' x 132) . "\n" . "use constant ERROR_MINIMUM => " . ERRDEF_MIN . ";\n" . "push \@EXPORT, qw(ERROR_MINIMUM);\n" . "use constant ERROR_MAXIMUM => " . ERRDEF_MAX . ";\n" . "push \@EXPORT, qw(ERROR_MAXIMUM);\n" . "\n"; foreach my $iCode (sort({sprintf("%03d", $a) cmp sprintf("%03d", $b)} keys(%{$rhErrorId}))) { my $strType = "ERROR_" . uc($rhErrorId->{$iCode}); $strType =~ s/\-/\_/g; $strContent .= "use constant ${strType}" . (' ' x (54 - length($strType))) . " => $iCode;\n" . "push \@EXPORT, qw(${strType});\n" } $strContent .= "\n" . "1;\n"; $strFile = 'lib/' . PROJECT_NAME . '/Common/ExceptionAuto.pm'; if (buildPutDiffers($oStorage, "../${strFile}", $strContent)) { push(@stryBuilt, $strFile); } # Return list of files built return @stryBuilt; } push @EXPORT, qw(buildXsAll); 1; pgbackrest-release-2.24/libc/typemap000066400000000000000000000002261362531507100175220ustar00rootroot00000000000000pgBackRest::LibC::PgClient T_PTROBJ pgBackRest::LibC::Storage T_PTROBJ pgBackRest::LibC::StorageRead T_PTROBJ pgBackRest::LibC::StorageWrite T_PTROBJ pgbackrest-release-2.24/libc/xs/000077500000000000000000000000001362531507100165525ustar00rootroot00000000000000pgbackrest-release-2.24/libc/xs/config/000077500000000000000000000000001362531507100200175ustar00rootroot00000000000000pgbackrest-release-2.24/libc/xs/config/config.xs000066400000000000000000000007731362531507100216470ustar00rootroot00000000000000# ---------------------------------------------------------------------------------------------------------------------------------- # Config Perl Exports # ---------------------------------------------------------------------------------------------------------------------------------- MODULE = pgBackRest::LibC PACKAGE = pgBackRest::LibC const char * cfgCommandName(commandId) U32 commandId I32 cfgOptionIndexTotal(optionId) U32 optionId const char * cfgOptionName(optionId) U32 optionId pgbackrest-release-2.24/libc/xs/config/configTest.xs000066400000000000000000000031621362531507100225020ustar00rootroot00000000000000# ---------------------------------------------------------------------------------------------------------------------------------- # Config Test Perl Exports # ---------------------------------------------------------------------------------------------------------------------------------- MODULE = pgBackRest::LibC PACKAGE = pgBackRest::LibC #################################################################################################################################### # Parse command line and return a JSON object with results #################################################################################################################################### SV * cfgParseTest(backrestBin, parseParam) const char *backrestBin const char *parseParam CODE: RETVAL = NULL; ERROR_XS_BEGIN() { // This should run in a temp context but for some reason getopt_long gets upset when if gets called again after the previous // arg list being freed. So, this is a memory leak but it is only used for testing, not production. StringList *paramList = strLstNewSplitZ(strCat(strNew("pgbackrest|"), parseParam), "|"); // Don't use cfgLoad() because it has a lot of side effects that we don't want configParse(strLstSize(paramList), strLstPtr(paramList), false); cfgExeSet(strNew(backrestBin)); cfgLoadUpdateOption(); String *result = perlOptionJson(); RETVAL = newSV(strSize(result)); SvPOK_only(RETVAL); strcpy(SvPV_nolen(RETVAL), strPtr(result)); SvCUR_set(RETVAL, strSize(result)); } ERROR_XS_END() OUTPUT: RETVAL pgbackrest-release-2.24/libc/xs/config/configTest.xsh000066400000000000000000000077531362531507100226640ustar00rootroot00000000000000/*********************************************************************************************************************************** Config XS Header ***********************************************************************************************************************************/ #include #include "common/memContext.h" #include "common/type/json.h" #include "config/config.h" /*********************************************************************************************************************************** Build JSON output from options ***********************************************************************************************************************************/ String * perlOptionJson(void) { String *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { KeyValue *configKv = kvNew(); for (ConfigOption optionId = 0; optionId < CFG_OPTION_TOTAL; optionId++) { // Skip if not valid if (!cfgOptionValid(optionId)) continue; Variant *optionVar = varNewKv(kvNew()); // Add valid kvPut(varKv(optionVar), VARSTRDEF("valid"), BOOL_TRUE_VAR); // Add source const Variant *source = NULL; switch (cfgOptionSource(optionId)) { case cfgSourceParam: { source = varNewStrZ("param"); break; } case cfgSourceConfig: { source = varNewStrZ("config"); break; } case cfgSourceDefault: { source = varNewStrZ("default"); break; } } kvPut(varKv(optionVar), VARSTRDEF("source"), source); // Add negate and reset kvPut(varKv(optionVar), VARSTRDEF("negate"), VARBOOL(cfgOptionNegate(optionId))); kvPut(varKv(optionVar), VARSTRDEF("reset"), VARBOOL(cfgOptionReset(optionId))); // Add value if it is set if (cfgOptionTest(optionId)) { const Variant *valueVar = NULL; switch (cfgDefOptionType(cfgOptionDefIdFromId(optionId))) { case cfgDefOptTypeBoolean: case cfgDefOptTypeFloat: case cfgDefOptTypeInteger: case cfgDefOptTypePath: case cfgDefOptTypeSize: case cfgDefOptTypeString: { valueVar = cfgOption(optionId); break; } case cfgDefOptTypeHash: { valueVar = varNewKv(kvNew()); const KeyValue *valueKv = cfgOptionKv(optionId); const VariantList *keyList = kvKeyList(valueKv); for (unsigned int listIdx = 0; listIdx < varLstSize(keyList); listIdx++) kvPut(varKv(valueVar), varLstGet(keyList, listIdx), kvGet(valueKv, varLstGet(keyList, listIdx))); break; } case cfgDefOptTypeList: { valueVar = varNewKv(kvNew()); const VariantList *valueList = cfgOptionLst(optionId); for (unsigned int listIdx = 0; listIdx < varLstSize(valueList); listIdx++) kvPut(varKv(valueVar), varLstGet(valueList, listIdx), BOOL_TRUE_VAR); break; } } kvPut(varKv(optionVar), VARSTRDEF("value"), valueVar); } kvPut(configKv, VARSTRZ(cfgOptionName(optionId)), optionVar); } MEM_CONTEXT_PRIOR_BEGIN() { result = jsonFromKv(configKv); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); return result; } pgbackrest-release-2.24/libc/xs/config/define.xs000066400000000000000000000040141362531507100216240ustar00rootroot00000000000000# ---------------------------------------------------------------------------------------------------------------------------------- # Config Definition Perl Exports # ---------------------------------------------------------------------------------------------------------------------------------- MODULE = pgBackRest::LibC PACKAGE = pgBackRest::LibC I32 cfgCommandId(commandName) const char *commandName CODE: RETVAL = 0; ERROR_XS_BEGIN() { RETVAL = cfgCommandId(commandName, true); } ERROR_XS_END(); OUTPUT: RETVAL I32 cfgOptionId(optionName) const char *optionName CODE: RETVAL = 0; ERROR_XS_BEGIN() { RETVAL = cfgOptionId(optionName); } ERROR_XS_END(); OUTPUT: RETVAL const char * cfgDefOptionDefault(commandId, optionId) U32 commandId U32 optionId CODE: RETVAL = NULL; ERROR_XS_BEGIN() { RETVAL = cfgDefOptionDefault(cfgCommandDefIdFromId(commandId), cfgOptionDefIdFromId(optionId)); } ERROR_XS_END(); OUTPUT: RETVAL const char * cfgDefOptionPrefix(optionId) U32 optionId CODE: RETVAL = NULL; ERROR_XS_BEGIN() { RETVAL = cfgDefOptionPrefix(cfgOptionDefIdFromId(optionId)); } ERROR_XS_END(); OUTPUT: RETVAL bool cfgDefOptionSecure(optionId) U32 optionId CODE: RETVAL = false; ERROR_XS_BEGIN() { RETVAL = cfgDefOptionSecure(cfgOptionDefIdFromId(optionId)); } ERROR_XS_END(); OUTPUT: RETVAL I32 cfgDefOptionType(optionId); U32 optionId CODE: RETVAL = 0; ERROR_XS_BEGIN() { RETVAL = cfgDefOptionType(cfgOptionDefIdFromId(optionId)); } ERROR_XS_END(); OUTPUT: RETVAL bool cfgDefOptionValid(commandId, optionId) U32 commandId U32 optionId CODE: RETVAL = false; ERROR_XS_BEGIN() { RETVAL = cfgDefOptionValid(cfgCommandDefIdFromId(commandId), cfgOptionDefIdFromId(optionId)); } ERROR_XS_END(); OUTPUT: RETVAL U32 cfgOptionTotal() CODE: RETVAL = CFG_OPTION_TOTAL; OUTPUT: RETVAL pgbackrest-release-2.24/libc/xs/crypto/000077500000000000000000000000001362531507100200725ustar00rootroot00000000000000pgbackrest-release-2.24/libc/xs/crypto/hash.xs000066400000000000000000000020641362531507100213730ustar00rootroot00000000000000#################################################################################################################################### # Cryptographic Hashes Perl Exports # # XS wrapper for functions in cipher/hash.c. #################################################################################################################################### MODULE = pgBackRest::LibC PACKAGE = pgBackRest::LibC #################################################################################################################################### SV * cryptoHashOne(type, message) const char *type SV *message CODE: RETVAL = NULL; MEM_CONTEXT_XS_TEMP_BEGIN() { STRLEN messageSize; const void *messagePtr = SvPV(message, messageSize); String *hash = bufHex(cryptoHashOne(strNew(type), BUF(messagePtr, messageSize))); RETVAL = newSV(strSize(hash)); SvPOK_only(RETVAL); strcpy((char *)SvPV_nolen(RETVAL), strPtr(hash)); SvCUR_set(RETVAL, strSize(hash)); } MEM_CONTEXT_XS_TEMP_END(); OUTPUT: RETVAL pgbackrest-release-2.24/libc/xs/crypto/hash.xsh000066400000000000000000000005111362531507100215360ustar00rootroot00000000000000/*********************************************************************************************************************************** Cryptographic Hashes XS Header ***********************************************************************************************************************************/ #include "common/crypto/hash.h" pgbackrest-release-2.24/libc/xs/postgres/000077500000000000000000000000001362531507100204205ustar00rootroot00000000000000pgbackrest-release-2.24/libc/xs/postgres/client.xs000066400000000000000000000047141362531507100222600ustar00rootroot00000000000000# ---------------------------------------------------------------------------------------------------------------------------------- # PostgreSQL Query Client # ---------------------------------------------------------------------------------------------------------------------------------- MODULE = pgBackRest::LibC PACKAGE = pgBackRest::LibC::PgClient #################################################################################################################################### pgBackRest::LibC::PgClient new(class, host, port, database, queryTimeout) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: const String *class = STR_NEW_SV($arg); const String *host = STR_NEW_SV($arg); U32 port const String *database = STR_NEW_SV($arg); UV queryTimeout CODE: CHECK(strEqZ(class, PACKAGE_NAME_LIBC "::PgClient")); MEM_CONTEXT_PRIOR_BEGIN() { RETVAL = pgClientNew(host, port, database, NULL, queryTimeout); } MEM_CONTEXT_PRIOR_END(); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### void open(self) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::PgClient self CODE: pgClientOpen(self); CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### const char * query(self, query) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::PgClient self const String *query = STR_NEW_SV($arg); CODE: VariantList *result = pgClientQuery(self, query); RETVAL = result ? strPtr(jsonFromVar(varNewVarLst(result))) : NULL; OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### void close(self) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::PgClient self CODE: pgClientClose(self); CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### void DESTROY(self) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::PgClient self CODE: pgClientFree(self); CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); pgbackrest-release-2.24/libc/xs/postgres/client.xsh000066400000000000000000000005651362531507100224300ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL Query Client Header ***********************************************************************************************************************************/ #include "postgres/client.h" typedef PgClient *pgBackRest__LibC__PgClient; pgbackrest-release-2.24/libc/xs/postgres/pageChecksum.xs000066400000000000000000000011711362531507100233730ustar00rootroot00000000000000# ---------------------------------------------------------------------------------------------------------------------------------- # Page Checksum Perl Exports # ---------------------------------------------------------------------------------------------------------------------------------- MODULE = pgBackRest::LibC PACKAGE = pgBackRest::LibC U16 pageChecksum(page, blockNo, pageSize) const char *page U32 blockNo U32 pageSize CODE: RETVAL = 0; ERROR_XS_BEGIN() { RETVAL = pageChecksum( (const unsigned char *)page, blockNo, pageSize); } ERROR_XS_END(); OUTPUT: RETVAL pgbackrest-release-2.24/libc/xs/storage/000077500000000000000000000000001362531507100202165ustar00rootroot00000000000000pgbackrest-release-2.24/libc/xs/storage/storage.xs000066400000000000000000000275341362531507100222510ustar00rootroot00000000000000# ---------------------------------------------------------------------------------------------------------------------------------- # Storage Exports # ---------------------------------------------------------------------------------------------------------------------------------- MODULE = pgBackRest::LibC PACKAGE = pgBackRest::LibC::Storage #################################################################################################################################### pgBackRest::LibC::Storage new(class, type, path) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: const String *class = STR_NEW_SV($arg); const String *type = STR_NEW_SV($arg); const String *path = STR_NEW_SV($arg); CODE: CHECK(strEqZ(class, PACKAGE_NAME_LIBC "::Storage")); if (strEqZ(type, "")) { MEM_CONTEXT_PRIOR_BEGIN() { RETVAL = storagePosixNew( path == NULL ? STRDEF("/") : path, STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); } MEM_CONTEXT_PRIOR_END(); } else if (strEqZ(type, "")) { CHECK(path == NULL); RETVAL = (Storage *)storageRepoWrite(); } else if (strEqZ(type, "")) { CHECK(path == NULL); MEM_CONTEXT_PRIOR_BEGIN() { RETVAL = storagePosixNew(cfgOptionStr(cfgOptPgPath), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); } MEM_CONTEXT_PRIOR_END(); } else THROW_FMT(AssertError, "unexpected storage type '%s'", strPtr(type)); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### void bucketCreate(self) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::Storage self CODE: if (strEq(storageType(self), STORAGE_S3_TYPE_STR)) storageS3Request((StorageS3 *)storageDriver(self), HTTP_VERB_PUT_STR, FSLASH_STR, NULL, NULL, true, false); else THROW_FMT(AssertError, "unable to create bucket on '%s' storage", strPtr(storageType(self))); CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### bool copy(self, source, destination) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::StorageRead source pgBackRest::LibC::StorageWrite destination CODE: RETVAL = storageCopyP(source, destination); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### bool exists(self, fileExp) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::Storage self const String *fileExp = STR_NEW_SV($arg); CODE: RETVAL = storageExistsP(self, fileExp); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### SV * get(self, read) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::StorageRead read CODE: RETVAL = NULL; Buffer *buffer = storageGetP(read); if (buffer != NULL) { if (bufUsed(buffer) == 0) RETVAL = newSVpv("", 0); else RETVAL = newSVpv((char *)bufPtr(buffer), bufUsed(buffer)); } OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### SV * info(self, pathExp, ignoreMissing) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::Storage self const String *pathExp = STR_NEW_SV($arg); bool ignoreMissing CODE: RETVAL = NULL; StorageInfo info = storageInfoP(self, pathExp, .ignoreMissing = ignoreMissing); if (info.exists) { String *json = storageManifestXsInfo(NULL, &info); RETVAL = newSVpv((char *)strPtr(json), strSize(json)); } OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### SV * list(self, pathExp, ignoreMissing, sortAsc, expression) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::Storage self const String *pathExp = STR_NEW_SV($arg); bool ignoreMissing bool sortAsc const String *expression = STR_NEW_SV($arg); CODE: StringList *fileList = strLstSort( storageListP(self, pathExp, .errorOnMissing = storageFeature(self, storageFeaturePath) ? !ignoreMissing : false, .expression = expression), sortAsc ? sortOrderAsc : sortOrderDesc); const String *fileListJson = jsonFromVar(varNewVarLst(varLstNewStrLst(fileList))); RETVAL = newSVpv(strPtr(fileListJson), strSize(fileListJson)); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### SV * manifest(self, pathExp, filter=NULL) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::Storage self const String *pathExp = STR_NEW_SV($arg); const String *filter = STR_NEW_SV($arg); CODE: StorageManifestXsCallbackData data = {.storage = self, .json = strNew("{"), .pathRoot = pathExp, .filter = filter}; // If a path is specified StorageInfo info = storageInfoP(self, pathExp, .ignoreMissing = true); if (!info.exists || info.type == storageTypePath) { storageInfoListP( self, data.pathRoot, storageManifestXsCallback, &data, .errorOnMissing = storageFeature(self, storageFeaturePath) ? true : false); } // Else a file is specified else { info.name = strBase(storagePathP(self, pathExp)); strCat(data.json, strPtr(storageManifestXsInfo(NULL, &info))); } strCat(data.json, "}"); RETVAL = newSVpv((char *)strPtr(data.json), strSize(data.json)); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### void pathCreate(self, pathExp, mode, ignoreExists, createParent) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::Storage self const String *pathExp = STR_NEW_SV($arg); const String *mode = STR_NEW_SV($arg); bool ignoreExists bool createParent CODE: if (storageFeature(self, storageFeaturePath)) storagePathCreateP( self, pathExp, .mode = mode ? cvtZToMode(strPtr(mode)) : 0, .errorOnExists = !ignoreExists, .noParentCreate = !createParent); CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### bool pathExists(self, pathExp) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::Storage self const String *pathExp = STR_NEW_SV($arg); CODE: RETVAL = true; if (storageFeature(self, storageFeaturePath)) RETVAL = storagePathExistsP(self, pathExp); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### SV * pathGet(self, pathExp) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::Storage self const String *pathExp = STR_NEW_SV($arg); CODE: String *path = storagePathP(self, pathExp); RETVAL = newSVpv((char *)strPtr(path), strSize(path)); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### void pathRemove(self, pathExp, ignoreMissing, recurse) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::Storage self const String *pathExp = STR_NEW_SV($arg); bool ignoreMissing bool recurse CODE: storagePathRemoveP( self, pathExp, .errorOnMissing = storageFeature(self, storageFeaturePath) ? !ignoreMissing : false, .recurse = recurse); CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### void pathSync(self, pathExp) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::Storage self const String *pathExp = STR_NEW_SV($arg); CODE: storagePathSyncP(self, pathExp); CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### UV put(self, write, buffer) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::StorageWrite write const Buffer *buffer = BUF_CONST_SV($arg); CODE: storagePutP(write, buffer); RETVAL = buffer ? bufUsed(buffer) : 0; OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### bool readDrain(self, read) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::StorageRead read CODE: RETVAL = false; // Read and discard all IO (this is useful for processing filters) if (ioReadOpen(storageReadIo(read))) { Buffer *buffer = bufNew(ioBufferSize()); do { ioRead(storageReadIo(read), buffer); bufUsedZero(buffer); } while (!ioReadEof(storageReadIo(read))); ioReadClose(storageReadIo(read)); RETVAL = true; } OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### void remove(self, fileExp, ignoreMissing) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::Storage self const String *fileExp = STR_NEW_SV($arg); bool ignoreMissing CODE: storageRemoveP(self, fileExp, .errorOnMissing = storageFeature(self, storageFeaturePath) ? !ignoreMissing : false); CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### const char * cipherType(self) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { CODE: if (cfgOptionStr(cfgOptRepoCipherType) == NULL || cipherType(cfgOptionStr(cfgOptRepoCipherType)) == cipherTypeNone) RETVAL = NULL; else RETVAL = strPtr(cfgOptionStr(cfgOptRepoCipherType)); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### const char * cipherPass(self) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { CODE: RETVAL = strPtr(cfgOptionStr(cfgOptRepoCipherPass)); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### const char * type(self) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::Storage self CODE: RETVAL = strPtr(storageType(self)); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); MODULE = pgBackRest::LibC PACKAGE = pgBackRest::LibC #################################################################################################################################### void storageRepoFree() CODE: storageHelperFree(); pgbackrest-release-2.24/libc/xs/storage/storage.xsh000066400000000000000000000165771362531507100224260ustar00rootroot00000000000000/*********************************************************************************************************************************** Storage XS Header ***********************************************************************************************************************************/ #include "common/assert.h" #include "common/compress/gzip/compress.h" #include "common/compress/gzip/decompress.h" #include "common/crypto/cipherBlock.h" #include "common/io/filter/size.h" #include "common/memContext.h" #include "common/type/convert.h" #include "common/type/json.h" #include "postgres/interface.h" #include "storage/helper.h" #include "storage/s3/storage.intern.h" #include "storage/storage.intern.h" typedef Storage *pgBackRest__LibC__Storage; /*********************************************************************************************************************************** Manifest callback ***********************************************************************************************************************************/ typedef struct StorageManifestXsCallbackData { const Storage *storage; const String *pathRoot; const String *path; String *json; const String *filter; } StorageManifestXsCallbackData; String * storageManifestXsInfo(const String *path, const StorageInfo *info) { String *json = strNew(""); if (info->name != NULL) { strCatFmt( json, "%s:", strPtr(jsonFromStr(path == NULL ? info->name : strNewFmt("%s/%s", strPtr(path), strPtr(info->name))))); } strCatFmt(json, "{\"group\":%s,\"user\":%s,\"type\":\"", strPtr(jsonFromStr(info->group)), strPtr(jsonFromStr(info->user))); switch (info->type) { case storageTypeFile: { strCatFmt( json, "f\",\"mode\":\"%04o\",\"modification_time\":%" PRId64 ",\"size\":%" PRIu64 "}", info->mode, (int64_t)info->timeModified, info->size); break; } case storageTypeLink: { strCatFmt(json, "l\",\"link_destination\":%s}", strPtr(jsonFromStr(info->linkDestination))); break; } case storageTypePath: { strCatFmt(json, "d\",\"mode\":\"%04o\"}", info->mode); break; } case storageTypeSpecial: { strCatFmt(json, "s\",\"mode\":\"%04o\"}", info->mode); break; } } return json; } void storageManifestXsCallback(void *callbackData, const StorageInfo *info) { StorageManifestXsCallbackData *data = (StorageManifestXsCallbackData *)callbackData; if (data->path == NULL || !strEqZ(info->name, ".")) { if (!strEqZ(info->name, ".") && data->filter && !strEq(data->filter, info->name)) return; if (strSize(data->json) != 1) strCat(data->json, ","); strCat(data->json, strPtr(storageManifestXsInfo(data->path, info))); if (info->type == storageTypePath) { if (!strEqZ(info->name, ".")) { StorageManifestXsCallbackData dataSub = { .storage = data->storage, .json = data->json, .pathRoot = data->pathRoot, .path = data->path == NULL ? info->name : strNewFmt("%s/%s", strPtr(data->path), strPtr(info->name)), }; storageInfoListP( dataSub.storage, strNewFmt("%s/%s", strPtr(dataSub.pathRoot), strPtr(dataSub.path)), storageManifestXsCallback, &dataSub); } } } } /*********************************************************************************************************************************** Add IO filter ***********************************************************************************************************************************/ void storageFilterXsAdd(IoFilterGroup *filterGroup, const String *filter, const String *paramJson) { VariantList *paramList = paramJson ? jsonToVarLst(paramJson) : NULL; if (strEqZ(filter, "pgBackRest::Storage::Filter::CipherBlock")) { ioFilterGroupAdd( filterGroup, cipherBlockNew( varUInt64Force(varLstGet(paramList, 0)) ? cipherModeEncrypt : cipherModeDecrypt, cipherType(varStr(varLstGet(paramList, 1))), BUFSTR(varStr(varLstGet(paramList, 2))), NULL)); } else if (strEqZ(filter, "pgBackRest::Storage::Filter::Sha")) { ioFilterGroupAdd(filterGroup, cryptoHashNew(HASH_TYPE_SHA1_STR)); } else if (strEqZ(filter, "pgBackRest::Common::Io::Handle")) { ioFilterGroupAdd(filterGroup, ioSizeNew()); } else if (strEqZ(filter, "pgBackRest::Storage::Filter::Gzip")) { if (strEqZ(varStr(varLstGet(paramList, 0)), "compress")) { ioFilterGroupAdd( filterGroup, gzipCompressNew(varUIntForce(varLstGet(paramList, 2)), varBoolForce(varLstGet(paramList, 1)))); } else { ioFilterGroupAdd(filterGroup, gzipDecompressNew(varBoolForce(varLstGet(paramList, 1)))); } } else THROW_FMT(AssertError, "unable to add invalid filter '%s'", strPtr(filter)); } /*********************************************************************************************************************************** Get result from IO filter ***********************************************************************************************************************************/ String * storageFilterXsResult(const IoFilterGroup *filterGroup, const String *filter) { const Variant *result; if (strEqZ(filter, "pgBackRest::Storage::Filter::Sha")) { result = ioFilterGroupResult(filterGroup, CRYPTO_HASH_FILTER_TYPE_STR); } else if (strEqZ(filter, "pgBackRest::Common::Io::Handle")) { result = ioFilterGroupResult(filterGroup, SIZE_FILTER_TYPE_STR); } else THROW_FMT(AssertError, "unable to get result for invalid filter '%s'", strPtr(filter)); if (result == NULL) THROW_FMT(AssertError, "unable to find result for filter '%s'", strPtr(filter)); return jsonFromVar(result); } /*********************************************************************************************************************************** Get results from all IO filters ***********************************************************************************************************************************/ String * storageFilterXsResultAll(const IoFilterGroup *filterGroup) { const VariantList *filterList = kvKeyList(varKv(ioFilterGroupResultAll(filterGroup))); String *result = strNew("{"); for (unsigned int filterIdx = 0; filterIdx < varLstSize(filterList); filterIdx++) { const String *filter = varStr(varLstGet(filterList, filterIdx)); const String *filterPerl = NULL; if (strEq(filter, CRYPTO_HASH_FILTER_TYPE_STR)) { filterPerl = strNew("pgBackRest::Storage::Filter::Sha"); } else if (strEq(filter, SIZE_FILTER_TYPE_STR)) { filterPerl = strNew("pgBackRest::Common::Io::Handle"); } if (filterPerl != NULL) { if (strSize(result) > 1) strCat(result, ","); strCatFmt( result, "%s:%s", strPtr(jsonFromStr(filterPerl)), strPtr(storageFilterXsResult(filterGroup, filterPerl))); } } strCat(result, "}"); return result; } pgbackrest-release-2.24/libc/xs/storage/storageRead.xs000066400000000000000000000104331362531507100230330ustar00rootroot00000000000000# ---------------------------------------------------------------------------------------------------------------------------------- # Storage Read Exports # ---------------------------------------------------------------------------------------------------------------------------------- MODULE = pgBackRest::LibC PACKAGE = pgBackRest::LibC::StorageRead #################################################################################################################################### pgBackRest::LibC::StorageRead new(class, storage, file, ignoreMissing) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: const String *class = STR_NEW_SV($arg); pgBackRest::LibC::Storage storage const String *file = STR_NEW_SV($arg); bool ignoreMissing CODE: CHECK(strEqZ(class, PACKAGE_NAME_LIBC "::StorageRead")); RETVAL = storageReadMove(storageNewReadP(storage, file, .ignoreMissing = ignoreMissing), memContextPrior()); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### void filterAdd(self, filter, param) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::StorageRead self const String *filter = STR_NEW_SV($arg); const String *param = STR_NEW_SV($arg); CODE: IoFilterGroup *filterGroup = ioReadFilterGroup(storageReadIo(self)); storageFilterXsAdd(filterGroup, filter, param); CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### bool open(self) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::StorageRead self CODE: RETVAL = ioReadOpen(storageReadIo(self)); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### SV * read(self, bufferSize) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::StorageRead self U32 bufferSize CODE: RETVAL = NEWSV(0, bufferSize); SvPOK_only(RETVAL); Buffer *bufferRead = bufNewUseC((unsigned char *)SvPV_nolen(RETVAL), bufferSize); ioRead(storageReadIo(self), bufferRead); SvCUR_set(RETVAL, bufUsed(bufferRead)); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### bool eof(self) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::StorageRead self CODE: RETVAL = ioReadEof(storageReadIo(self)); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### void close(self) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::StorageRead self CODE: ioReadClose(storageReadIo(self)); CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### const char * result(self, filter) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::StorageRead self const String *filter = STR_NEW_SV($arg); CODE: RETVAL = strPtr(storageFilterXsResult(ioReadFilterGroup(storageReadIo(self)), filter)); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### const char * resultAll(self) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::StorageRead self CODE: RETVAL = strPtr(storageFilterXsResultAll(ioReadFilterGroup(storageReadIo(self)))); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### void DESTROY(self) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::StorageRead self CODE: storageReadFree(self); CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); pgbackrest-release-2.24/libc/xs/storage/storageRead.xsh000066400000000000000000000005251362531507100232040ustar00rootroot00000000000000/*********************************************************************************************************************************** Storage Read XS Header ***********************************************************************************************************************************/ typedef StorageRead *pgBackRest__LibC__StorageRead; pgbackrest-release-2.24/libc/xs/storage/storageWrite.xs000066400000000000000000000102731362531507100232540ustar00rootroot00000000000000# ---------------------------------------------------------------------------------------------------------------------------------- # Storage Write Exports # ---------------------------------------------------------------------------------------------------------------------------------- MODULE = pgBackRest::LibC PACKAGE = pgBackRest::LibC::StorageWrite #################################################################################################################################### pgBackRest::LibC::StorageWrite new(class, storage, file, mode, user, group, timeModified, atomic, pathCreate) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: const String *class = STR_NEW_SV($arg); pgBackRest::LibC::Storage storage const String *file = STR_NEW_SV($arg); U32 mode const String *user = STR_NEW_SV($arg); const String *group = STR_NEW_SV($arg); IV timeModified bool atomic bool pathCreate CODE: CHECK(strEqZ(class, PACKAGE_NAME_LIBC "::StorageWrite")); RETVAL = storageWriteMove( storageNewWriteP( storage, file, .modeFile = mode, .user = user, .group = group, .timeModified = (time_t)timeModified, .noCreatePath = storageFeature(storage, storageFeaturePath) ? !pathCreate : false, .noSyncPath = !atomic, .noAtomic = !atomic), memContextPrior()); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### void filterAdd(self, filter, param) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::StorageWrite self const String *filter = STR_NEW_SV($arg); const String *param = STR_NEW_SV($arg); CODE: IoFilterGroup *filterGroup = ioWriteFilterGroup(storageWriteIo(self)); storageFilterXsAdd(filterGroup, filter, param); CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### void open(self) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::StorageWrite self CODE: ioWriteOpen(storageWriteIo(self)); CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### UV write(self, buffer) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::StorageWrite self const Buffer *buffer = BUF_CONST_SV($arg); CODE: ioWrite(storageWriteIo(self), buffer); RETVAL = bufUsed(buffer); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### void close(self) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::StorageWrite self CODE: ioWriteClose(storageWriteIo(self)); CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### const char * result(self, filter) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::StorageWrite self const String *filter = STR_NEW_SV($arg); CODE: RETVAL = strPtr(storageFilterXsResult(ioWriteFilterGroup(storageWriteIo(self)), filter)); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### const char * resultAll(self) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::StorageWrite self CODE: RETVAL = strPtr(storageFilterXsResultAll(ioWriteFilterGroup(storageWriteIo(self)))); OUTPUT: RETVAL CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); #################################################################################################################################### void DESTROY(self) PREINIT: MEM_CONTEXT_XS_TEMP_BEGIN() { INPUT: pgBackRest::LibC::StorageWrite self CODE: storageWriteFree(self); CLEANUP: } MEM_CONTEXT_XS_TEMP_END(); pgbackrest-release-2.24/libc/xs/storage/storageWrite.xsh000066400000000000000000000005301362531507100234170ustar00rootroot00000000000000/*********************************************************************************************************************************** Storage Write XS Header ***********************************************************************************************************************************/ typedef StorageWrite *pgBackRest__LibC__StorageWrite; pgbackrest-release-2.24/src/000077500000000000000000000000001362531507100157765ustar00rootroot00000000000000pgbackrest-release-2.24/src/.gitignore000066400000000000000000000001351362531507100177650ustar00rootroot00000000000000/pgbackrest *.o /autom4te.cache /config.log /config.status /config.h /build.auto.h /Makefile pgbackrest-release-2.24/src/Makefile.in000066400000000000000000003134421362531507100200520ustar00rootroot00000000000000#################################################################################################################################### # pgBackRest Makefile #################################################################################################################################### #################################################################################################################################### # Compiler options #################################################################################################################################### CC = @CC@ # Standards CSTANDARD = -std=c99 -D_POSIX_C_SOURCE=200809L -D_DARWIN_C_SOURCE # Optimizations COPTIMIZE = @COPTIMIZE@ # Warnings CWARNING = @CWARNING@ # Locations of header files CINCLUDE = @CINCLUDE@ # Options required by libraries CLIBRARY = @CLIBRARY@ # Concatenate options for easy usage CMAKE = $(CSTANDARD) $(COPTIMIZE) $(CWARNING) $(CINCLUDE) $(CLIBRARY) #################################################################################################################################### # Linker options #################################################################################################################################### LDLIBRARY = @LIBS@ # Concatenate options for easy usage LDMAKE = $(LDLIBRARY) #################################################################################################################################### # Directory options #################################################################################################################################### prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ #################################################################################################################################### # List of required source files. main.c should always be listed last and the rest in alpha order. #################################################################################################################################### SRCS = \ command/archive/common.c \ command/archive/get/file.c \ command/archive/get/get.c \ command/archive/get/protocol.c \ command/archive/push/file.c \ command/archive/push/protocol.c \ command/archive/push/push.c \ command/backup/backup.c \ command/backup/common.c \ command/backup/file.c \ command/backup/pageChecksum.c \ command/check/check.c \ command/check/common.c \ command/backup/protocol.c \ command/expire/expire.c \ command/help/help.c \ command/info/info.c \ command/command.c \ command/control/common.c \ command/control/start.c \ command/control/stop.c \ command/local/local.c \ command/restore/file.c \ command/restore/protocol.c \ command/restore/restore.c \ command/remote/remote.c \ command/stanza/common.c \ command/stanza/create.c \ command/stanza/delete.c \ command/stanza/upgrade.c \ command/storage/list.c \ common/compress/gzip/common.c \ common/compress/gzip/compress.c \ common/compress/gzip/decompress.c \ common/crypto/cipherBlock.c \ common/crypto/common.c \ common/crypto/hash.c \ common/debug.c \ common/encode.c \ common/encode/base64.c \ common/error.c \ common/exec.c \ common/exit.c \ common/fork.c \ common/io/bufferRead.c \ common/io/bufferWrite.c \ common/io/filter/buffer.c \ common/io/filter/filter.c \ common/io/filter/group.c \ common/io/filter/sink.c \ common/io/filter/size.c \ common/io/handleRead.c \ common/io/handleWrite.c \ common/io/http/cache.c \ common/io/http/client.c \ common/io/http/common.c \ common/io/http/header.c \ common/io/http/query.c \ common/io/io.c \ common/io/read.c \ common/io/tls/client.c \ common/io/write.c \ common/ini.c \ common/lock.c \ common/log.c \ common/memContext.c \ common/regExp.c \ common/stackTrace.c \ common/time.c \ common/type/buffer.c \ common/type/convert.c \ common/type/json.c \ common/type/keyValue.c \ common/type/list.c \ common/type/mcv.c \ common/type/string.c \ common/type/stringList.c \ common/type/variant.c \ common/type/variantList.c \ common/type/xml.c \ common/user.c \ common/wait.c \ config/config.c \ config/define.c \ config/exec.c \ config/load.c \ config/parse.c \ config/protocol.c \ db/db.c \ db/helper.c \ db/protocol.c \ info/info.c \ info/infoArchive.c \ info/infoBackup.c \ info/manifest.c \ info/infoPg.c \ postgres/client.c \ postgres/interface.c \ postgres/interface/v083.c \ postgres/interface/v084.c \ postgres/interface/v090.c \ postgres/interface/v091.c \ postgres/interface/v092.c \ postgres/interface/v093.c \ postgres/interface/v094.c \ postgres/interface/v095.c \ postgres/interface/v096.c \ postgres/interface/v100.c \ postgres/interface/v110.c \ postgres/interface/v120.c \ postgres/pageChecksum.c \ protocol/client.c \ protocol/command.c \ protocol/helper.c \ protocol/parallel.c \ protocol/parallelJob.c \ protocol/server.c \ storage/cifs/storage.c \ storage/posix/read.c \ storage/posix/storage.c \ storage/posix/write.c \ storage/remote/read.c \ storage/remote/protocol.c \ storage/remote/storage.c \ storage/remote/write.c \ storage/s3/read.c \ storage/s3/storage.c \ storage/s3/write.c \ storage/helper.c \ storage/read.c \ storage/storage.c \ storage/write.c \ main.c # Create obj list from source list OBJS=$(SRCS:.c=.o) #################################################################################################################################### # Compile and link #################################################################################################################################### pgbackrest: $(OBJS) $(CC) -o pgbackrest $(OBJS) $(LDFLAGS) $(LDMAKE) #################################################################################################################################### # Installation. DESTDIR can be used to modify the install location. #################################################################################################################################### install: pgbackrest install -d $(DESTDIR)$(bindir) install -m 755 pgbackrest $(DESTDIR)$(bindir) #################################################################################################################################### # Uninstallation. DESTDIR should be set to the same value as when installed. #################################################################################################################################### uninstall: rm -f $(DESTDIR)$(bindir)/pgbackrest #################################################################################################################################### # Clean object files and executable created by make #################################################################################################################################### .PHONY = clean clean: rm -f $(OBJS) rm -f pgbackrest #################################################################################################################################### # Compile rules #################################################################################################################################### command/archive/common.o: command/archive/common.c build.auto.h command/archive/common.h common/assert.h common/debug.h common/error.auto.h common/error.h common/fork.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/wait.h config/config.auto.h config/config.h config/define.auto.h config/define.h postgres/version.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/archive/common.c -o command/archive/common.o command/archive/get/file.o: command/archive/get/file.c build.auto.h command/archive/common.h command/archive/get/file.h command/control/common.h common/assert.h common/compress/gzip/common.h common/compress/gzip/decompress.h common/crypto/cipherBlock.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h info/info.h info/infoArchive.h info/infoPg.h postgres/interface.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/archive/get/file.c -o command/archive/get/file.o command/archive/get/get.o: command/archive/get/get.c build.auto.h command/archive/common.h command/archive/get/file.h command/archive/get/protocol.h command/command.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/wait.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/exec.h postgres/interface.h protocol/client.h protocol/command.h protocol/helper.h protocol/parallel.h protocol/parallelJob.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/archive/get/get.c -o command/archive/get/get.o command/archive/get/protocol.o: command/archive/get/protocol.c build.auto.h command/archive/get/file.h command/archive/get/protocol.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/archive/get/protocol.c -o command/archive/get/protocol.o command/archive/push/file.o: command/archive/push/file.c build.auto.h command/archive/common.h command/archive/push/file.h command/control/common.h common/assert.h common/compress/gzip/common.h common/compress/gzip/compress.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h postgres/interface.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/archive/push/file.c -o command/archive/push/file.o command/archive/push/protocol.o: command/archive/push/protocol.c build.auto.h command/archive/push/file.h command/archive/push/protocol.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/archive/push/protocol.c -o command/archive/push/protocol.o command/archive/push/push.o: command/archive/push/push.c build.auto.h command/archive/common.h command/archive/push/file.h command/archive/push/protocol.h command/command.h command/control/common.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/wait.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/exec.h info/info.h info/infoArchive.h info/infoPg.h postgres/interface.h protocol/client.h protocol/command.h protocol/helper.h protocol/parallel.h protocol/parallelJob.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/archive/push/push.c -o command/archive/push/push.o command/backup/backup.o: command/backup/backup.c build.auto.h command/archive/common.h command/backup/backup.h command/backup/common.h command/backup/file.h command/backup/protocol.h command/check/common.h command/control/common.h command/stanza/common.h common/assert.h common/compress/gzip/common.h common/compress/gzip/compress.h common/compress/gzip/decompress.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/filter/size.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h db/db.h db/helper.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/client.h postgres/interface.h postgres/version.h protocol/client.h protocol/command.h protocol/helper.h protocol/parallel.h protocol/parallelJob.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/backup/backup.c -o command/backup/backup.o command/backup/common.o: command/backup/common.c build.auto.h command/backup/common.h common/assert.h common/debug.h common/error.auto.h common/error.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/string.h common/type/stringz.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/backup/common.c -o command/backup/common.o command/backup/file.o: command/backup/file.c build.auto.h command/backup/file.h command/backup/pageChecksum.h common/assert.h common/compress/gzip/common.h common/compress/gzip/compress.h common/compress/gzip/decompress.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/filter/size.h common/io/io.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h postgres/interface.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/backup/file.c -o command/backup/file.o command/backup/pageChecksum.o: command/backup/pageChecksum.c build.auto.h command/backup/pageChecksum.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/filter.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h postgres/pageChecksum.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/backup/pageChecksum.c -o command/backup/pageChecksum.o command/backup/protocol.o: command/backup/protocol.c build.auto.h command/backup/file.h command/backup/protocol.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/backup/protocol.c -o command/backup/protocol.o command/check/check.o: command/check/check.c build.auto.h command/archive/common.h command/check/check.h command/check/common.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h db/db.h db/helper.h info/info.h info/infoArchive.h info/infoPg.h postgres/client.h postgres/interface.h protocol/client.h protocol/command.h protocol/helper.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/check/check.c -o command/check/check.o command/check/common.o: command/check/common.c build.auto.h command/backup/common.h command/check/common.h common/assert.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h db/db.h db/helper.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/client.h postgres/interface.h protocol/client.h protocol/command.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/check/common.c -o command/check/common.o command/command.o: command/command.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/http/client.h common/io/http/header.h common/io/http/query.h common/io/read.h common/io/tls/client.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/command.c -o command/command.o command/control/common.o: command/control/common.c build.auto.h command/control/common.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/control/common.c -o command/control/common.o command/control/start.o: command/control/start.c build.auto.h command/control/common.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/control/start.c -o command/control/start.o command/control/stop.o: command/control/stop.c build.auto.h command/control/common.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h storage/helper.h storage/info.h storage/read.h storage/read.intern.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/control/stop.c -o command/control/stop.o command/expire/expire.o: command/expire/expire.c build.auto.h command/archive/common.h command/backup/common.h common/assert.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/expire/expire.c -o command/expire/expire.o command/help/help.o: command/help/help.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/handleWrite.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/help/help.c -o command/help/help.o command/info/info.o: command/info/info.c build.auto.h command/archive/common.h command/backup/common.h command/info/info.h common/assert.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/handleWrite.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/interface.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/info/info.c -o command/info/info.o command/local/local.o: command/local/local.c build.auto.h command/archive/get/protocol.h command/archive/push/protocol.h command/backup/protocol.h command/restore/protocol.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/handleRead.h common/io/handleWrite.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/protocol.h protocol/client.h protocol/command.h protocol/helper.h protocol/server.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/local/local.c -o command/local/local.o command/remote/remote.o: command/remote/remote.c build.auto.h command/control/common.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/handleRead.h common/io/handleWrite.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/protocol.h db/protocol.h protocol/client.h protocol/command.h protocol/helper.h protocol/server.h storage/remote/protocol.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/remote/remote.c -o command/remote/remote.o command/restore/file.o: command/restore/file.c build.auto.h command/restore/file.h common/assert.h common/compress/gzip/common.h common/compress/gzip/decompress.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/filter/size.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/restore/file.c -o command/restore/file.o command/restore/protocol.o: command/restore/protocol.c build.auto.h command/restore/file.h command/restore/protocol.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/restore/protocol.c -o command/restore/protocol.o command/restore/restore.o: command/restore/restore.c build.auto.h command/backup/common.h command/restore/protocol.h command/restore/restore.h common/assert.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/io/write.intern.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/user.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/exec.h info/info.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/interface.h postgres/version.h protocol/client.h protocol/command.h protocol/helper.h protocol/parallel.h protocol/parallelJob.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h storage/write.intern.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/restore/restore.c -o command/restore/restore.o command/stanza/common.o: command/stanza/common.c build.auto.h command/check/common.h common/assert.h common/crypto/common.h common/debug.h common/encode.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h db/db.h db/helper.h info/info.h info/infoPg.h postgres/client.h postgres/interface.h postgres/version.h protocol/client.h protocol/command.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/stanza/common.c -o command/stanza/common.o command/stanza/create.o: command/stanza/create.c build.auto.h command/backup/common.h command/check/common.h command/control/common.h command/stanza/common.h command/stanza/create.h common/assert.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h db/db.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/client.h postgres/interface.h postgres/version.h protocol/client.h protocol/command.h protocol/helper.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/stanza/create.c -o command/stanza/create.o command/stanza/delete.o: command/stanza/delete.c build.auto.h command/backup/common.h command/control/common.h command/stanza/delete.h common/assert.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/interface.h protocol/client.h protocol/command.h protocol/helper.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/stanza/delete.c -o command/stanza/delete.o command/stanza/upgrade.o: command/stanza/upgrade.c build.auto.h command/backup/common.h command/check/common.h command/control/common.h command/stanza/common.h command/stanza/upgrade.h common/assert.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h db/db.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/client.h postgres/interface.h postgres/version.h protocol/client.h protocol/command.h protocol/helper.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/stanza/upgrade.c -o command/stanza/upgrade.o command/storage/list.o: command/storage/list.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/handleWrite.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/storage/list.c -o command/storage/list.o common/compress/gzip/common.o: common/compress/gzip/common.c build.auto.h common/assert.h common/compress/gzip/common.h common/debug.h common/error.auto.h common/error.h common/logLevel.h common/memContext.h common/stackTrace.h common/type/convert.h common/type/stringz.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/compress/gzip/common.c -o common/compress/gzip/common.o common/compress/gzip/compress.o: common/compress/gzip/compress.c build.auto.h common/assert.h common/compress/gzip/common.h common/compress/gzip/compress.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/filter.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/compress/gzip/compress.c -o common/compress/gzip/compress.o common/compress/gzip/decompress.o: common/compress/gzip/decompress.c build.auto.h common/assert.h common/compress/gzip/common.h common/compress/gzip/decompress.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/filter.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/compress/gzip/decompress.c -o common/compress/gzip/decompress.o common/crypto/cipherBlock.o: common/crypto/cipherBlock.c build.auto.h common/assert.h common/crypto/cipherBlock.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/filter.intern.h common/io/filter/group.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/crypto/cipherBlock.c -o common/crypto/cipherBlock.o common/crypto/common.o: common/crypto/common.c build.auto.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/log.h common/logLevel.h common/stackTrace.h common/type/convert.h common/type/stringz.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/crypto/common.c -o common/crypto/common.o common/crypto/hash.o: common/crypto/hash.c build.auto.h common/assert.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/filter.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/crypto/hash.c -o common/crypto/hash.o common/debug.o: common/debug.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/logLevel.h common/stackTrace.h common/type/convert.h common/type/stringz.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/debug.c -o common/debug.o common/encode.o: common/encode.c build.auto.h common/assert.h common/debug.h common/encode.h common/encode/base64.h common/error.auto.h common/error.h common/logLevel.h common/stackTrace.h common/type/convert.h common/type/stringz.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/encode.c -o common/encode.o common/encode/base64.o: common/encode/base64.c build.auto.h common/assert.h common/debug.h common/encode/base64.h common/error.auto.h common/error.h common/logLevel.h common/stackTrace.h common/type/convert.h common/type/stringz.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/encode/base64.c -o common/encode/base64.o common/error.o: common/error.c build.auto.h common/error.auto.c common/error.auto.h common/error.h common/logLevel.h common/stackTrace.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/error.c -o common/error.o common/exec.o: common/exec.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/exec.h common/io/filter/filter.h common/io/filter/group.h common/io/handleRead.h common/io/handleWrite.h common/io/io.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/wait.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/exec.c -o common/exec.o common/exit.o: common/exit.c build.auto.h command/command.h common/assert.h common/debug.h common/error.auto.h common/error.h common/exit.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h protocol/client.h protocol/command.h protocol/helper.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/exit.c -o common/exit.o common/fork.o: common/fork.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/log.h common/logLevel.h common/stackTrace.h common/type/convert.h common/type/stringz.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/fork.c -o common/fork.o common/ini.o: common/ini.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/ini.c -o common/ini.o common/io/bufferRead.o: common/io/bufferRead.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/bufferRead.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/read.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/io/bufferRead.c -o common/io/bufferRead.o common/io/bufferWrite.o: common/io/bufferWrite.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/bufferWrite.h common/io/filter/filter.h common/io/filter/group.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/io/bufferWrite.c -o common/io/bufferWrite.o common/io/filter/buffer.o: common/io/filter/buffer.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/buffer.h common/io/filter/filter.h common/io/filter/filter.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/io/filter/buffer.c -o common/io/filter/buffer.o common/io/filter/filter.o: common/io/filter/filter.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/filter.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/io/filter/filter.c -o common/io/filter/filter.o common/io/filter/group.o: common/io/filter/group.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/buffer.h common/io/filter/filter.h common/io/filter/filter.intern.h common/io/filter/group.h common/io/io.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/io/filter/group.c -o common/io/filter/group.o common/io/filter/sink.o: common/io/filter/sink.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/filter.intern.h common/io/filter/sink.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/io/filter/sink.c -o common/io/filter/sink.o common/io/filter/size.o: common/io/filter/size.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/filter.intern.h common/io/filter/size.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/io/filter/size.c -o common/io/filter/size.o common/io/handleRead.o: common/io/handleRead.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/handleRead.h common/io/read.h common/io/read.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/io/handleRead.c -o common/io/handleRead.o common/io/handleWrite.o: common/io/handleWrite.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/handleWrite.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/io/handleWrite.c -o common/io/handleWrite.o common/io/http/cache.o: common/io/http/cache.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/http/cache.h common/io/http/client.h common/io/http/header.h common/io/http/query.h common/io/read.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/io/http/cache.c -o common/io/http/cache.o common/io/http/client.o: common/io/http/client.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/http/client.h common/io/http/common.h common/io/http/header.h common/io/http/query.h common/io/io.h common/io/read.h common/io/read.intern.h common/io/tls/client.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/wait.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/io/http/client.c -o common/io/http/client.o common/io/http/common.o: common/io/http/common.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/http/common.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/string.h common/type/stringz.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/io/http/common.c -o common/io/http/common.o common/io/http/header.o: common/io/http/header.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/http/header.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/io/http/header.c -o common/io/http/header.o common/io/http/query.o: common/io/http/query.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/http/common.h common/io/http/query.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/io/http/query.c -o common/io/http/query.o common/io/io.o: common/io/io.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/sink.h common/io/io.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/io/io.c -o common/io/io.o common/io/read.o: common/io/read.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/read.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/io/read.c -o common/io/read.o common/io/tls/client.o: common/io/tls/client.c build.auto.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/read.intern.h common/io/tls/client.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/wait.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/io/tls/client.c -o common/io/tls/client.o common/io/write.o: common/io/write.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/io/write.c -o common/io/write.o common/lock.o: common/lock.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/handleWrite.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/wait.h storage/helper.h storage/info.h storage/read.h storage/read.intern.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/lock.c -o common/lock.o common/log.o: common/log.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/log.h common/logLevel.h common/stackTrace.h common/time.h common/type/convert.h common/type/stringz.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/log.c -o common/log.o common/memContext.o: common/memContext.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/logLevel.h common/memContext.h common/stackTrace.h common/type/convert.h common/type/stringz.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/memContext.c -o common/memContext.o common/regExp.o: common/regExp.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/regExp.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/string.h common/type/stringz.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/regExp.c -o common/regExp.o common/stackTrace.o: common/stackTrace.c build.auto.h common/assert.h common/error.auto.h common/error.h common/logLevel.h common/stackTrace.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/stackTrace.c -o common/stackTrace.o common/time.o: common/time.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/logLevel.h common/stackTrace.h common/time.h common/type/convert.h common/type/stringz.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/time.c -o common/time.o common/type/buffer.o: common/type/buffer.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/string.h common/type/stringz.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/type/buffer.c -o common/type/buffer.o common/type/convert.o: common/type/convert.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/logLevel.h common/stackTrace.h common/type/convert.h common/type/stringz.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/type/convert.c -o common/type/convert.o common/type/json.o: common/type/json.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/log.h common/logLevel.h common/stackTrace.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/stringz.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/type/json.c -o common/type/json.o common/type/keyValue.o: common/type/keyValue.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/type/keyValue.c -o common/type/keyValue.o common/type/list.o: common/type/list.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/list.h common/type/param.h common/type/string.h common/type/stringz.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/type/list.c -o common/type/list.o common/type/mcv.o: common/type/mcv.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/mcv.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/type/mcv.c -o common/type/mcv.o common/type/string.o: common/type/string.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/logLevel.h common/macro.h common/memContext.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/type/string.c -o common/type/string.o common/type/stringList.o: common/type/stringList.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/logLevel.h common/memContext.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/type/stringList.c -o common/type/stringList.o common/type/variant.o: common/type/variant.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/logLevel.h common/memContext.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/type/variant.c -o common/type/variant.o common/type/variantList.o: common/type/variantList.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/logLevel.h common/memContext.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/type/variantList.c -o common/type/variantList.o common/type/xml.o: common/type/xml.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/list.h common/type/param.h common/type/string.h common/type/stringz.h common/type/xml.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/type/xml.c -o common/type/xml.o common/user.o: common/user.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/logLevel.h common/memContext.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/string.h common/type/stringz.h common/user.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/user.c -o common/user.o common/wait.o: common/wait.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/convert.h common/type/stringz.h common/wait.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/wait.c -o common/wait.o config/config.o: config/config.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.c config/config.auto.h config/config.h config/define.auto.h config/define.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c config/config.c -o config/config.o config/define.o: config/define.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/logLevel.h common/memContext.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/string.h common/type/stringz.h config/define.auto.c config/define.auto.h config/define.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c config/define.c -o config/define.o config/exec.o: config/exec.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/exec.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c config/exec.c -o config/exec.o config/load.o: config/load.c build.auto.h command/command.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/io.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/load.h config/parse.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c config/load.c -o config/load.o config/parse.o: config/parse.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/parse.auto.c config/parse.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c config/parse.c -o config/parse.o config/protocol.o: config/protocol.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/protocol.h protocol/client.h protocol/command.h protocol/server.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c config/protocol.c -o config/protocol.o db/db.o: db/db.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/wait.h db/db.h db/protocol.h postgres/client.h postgres/interface.h postgres/version.h protocol/client.h protocol/command.h protocol/helper.h protocol/server.h storage/info.h storage/read.h storage/storage.h storage/write.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c db/db.c -o db/db.o db/helper.o: db/helper.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h db/db.h db/helper.h postgres/client.h postgres/interface.h protocol/client.h protocol/command.h protocol/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c db/helper.c -o db/helper.o db/protocol.o: db/protocol.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h db/protocol.h postgres/client.h postgres/interface.h protocol/client.h protocol/command.h protocol/server.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c db/protocol.c -o db/protocol.o info/info.o: info/info.c build.auto.h common/assert.h common/crypto/hash.h common/debug.h common/encode.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/filter.intern.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h info/info.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c info/info.c -o info/info.o info/infoArchive.o: info/infoArchive.c build.auto.h common/assert.h common/crypto/cipherBlock.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h info/info.h info/infoArchive.h info/infoPg.h postgres/interface.h postgres/version.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c info/infoArchive.c -o info/infoArchive.o info/infoBackup.o: info/infoBackup.c build.auto.h command/backup/common.h common/assert.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h info/info.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/interface.h postgres/version.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c info/infoBackup.c -o info/infoBackup.o info/infoPg.o: info/infoPg.c build.auto.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h info/info.h info/infoPg.h postgres/interface.h postgres/version.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c info/infoPg.c -o info/infoPg.o info/manifest.o: info/manifest.c build.auto.h command/backup/common.h common/assert.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/mcv.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h info/info.h info/manifest.h postgres/interface.h postgres/version.h storage/info.h storage/read.h storage/storage.h storage/write.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c info/manifest.c -o info/manifest.o main.o: main.c build.auto.h command/archive/get/get.h command/archive/push/push.h command/backup/backup.h command/check/check.h command/command.h command/control/start.h command/control/stop.h command/expire/expire.h command/help/help.h command/info/info.h command/local/local.h command/remote/remote.h command/restore/restore.h command/stanza/create.h command/stanza/delete.h command/stanza/upgrade.h command/storage/list.h common/assert.h common/debug.h common/error.auto.h common/error.h common/exit.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/load.h postgres/interface.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c main.c -o main.o postgres/client.o: postgres/client.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/wait.h postgres/client.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c postgres/client.c -o postgres/client.o postgres/interface.o: postgres/interface.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h postgres/interface.h postgres/interface/version.h postgres/version.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c postgres/interface.c -o postgres/interface.o postgres/interface/v083.o: postgres/interface/v083.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h postgres/interface.h postgres/interface/version.auto.h postgres/interface/version.h postgres/interface/version.intern.h postgres/version.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c postgres/interface/v083.c -o postgres/interface/v083.o postgres/interface/v084.o: postgres/interface/v084.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h postgres/interface.h postgres/interface/version.auto.h postgres/interface/version.h postgres/interface/version.intern.h postgres/version.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c postgres/interface/v084.c -o postgres/interface/v084.o postgres/interface/v090.o: postgres/interface/v090.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h postgres/interface.h postgres/interface/version.auto.h postgres/interface/version.h postgres/interface/version.intern.h postgres/version.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c postgres/interface/v090.c -o postgres/interface/v090.o postgres/interface/v091.o: postgres/interface/v091.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h postgres/interface.h postgres/interface/version.auto.h postgres/interface/version.h postgres/interface/version.intern.h postgres/version.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c postgres/interface/v091.c -o postgres/interface/v091.o postgres/interface/v092.o: postgres/interface/v092.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h postgres/interface.h postgres/interface/version.auto.h postgres/interface/version.h postgres/interface/version.intern.h postgres/version.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c postgres/interface/v092.c -o postgres/interface/v092.o postgres/interface/v093.o: postgres/interface/v093.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h postgres/interface.h postgres/interface/version.auto.h postgres/interface/version.h postgres/interface/version.intern.h postgres/version.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c postgres/interface/v093.c -o postgres/interface/v093.o postgres/interface/v094.o: postgres/interface/v094.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h postgres/interface.h postgres/interface/version.auto.h postgres/interface/version.h postgres/interface/version.intern.h postgres/version.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c postgres/interface/v094.c -o postgres/interface/v094.o postgres/interface/v095.o: postgres/interface/v095.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h postgres/interface.h postgres/interface/version.auto.h postgres/interface/version.h postgres/interface/version.intern.h postgres/version.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c postgres/interface/v095.c -o postgres/interface/v095.o postgres/interface/v096.o: postgres/interface/v096.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h postgres/interface.h postgres/interface/version.auto.h postgres/interface/version.h postgres/interface/version.intern.h postgres/version.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c postgres/interface/v096.c -o postgres/interface/v096.o postgres/interface/v100.o: postgres/interface/v100.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h postgres/interface.h postgres/interface/version.auto.h postgres/interface/version.h postgres/interface/version.intern.h postgres/version.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c postgres/interface/v100.c -o postgres/interface/v100.o postgres/interface/v110.o: postgres/interface/v110.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h postgres/interface.h postgres/interface/version.auto.h postgres/interface/version.h postgres/interface/version.intern.h postgres/version.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c postgres/interface/v110.c -o postgres/interface/v110.o postgres/interface/v120.o: postgres/interface/v120.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h postgres/interface.h postgres/interface/version.auto.h postgres/interface/version.h postgres/interface/version.intern.h postgres/version.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c postgres/interface/v120.c -o postgres/interface/v120.o postgres/pageChecksum.o: postgres/pageChecksum.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h postgres/interface.h postgres/pageChecksum.h storage/info.h storage/read.h storage/storage.h storage/write.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) @COPTIMIZE_PAGE_CHECKSUM@ -c postgres/pageChecksum.c -o postgres/pageChecksum.o protocol/client.o: protocol/client.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h protocol/client.h protocol/command.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c protocol/client.c -o protocol/client.o protocol/command.o: protocol/command.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h protocol/command.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c protocol/command.c -o protocol/command.o protocol/helper.o: protocol/helper.c build.auto.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/exec.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/exec.h config/protocol.h postgres/version.h protocol/client.h protocol/command.h protocol/helper.h protocol/server.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c protocol/helper.c -o protocol/helper.o protocol/parallel.o: protocol/parallel.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h protocol/client.h protocol/command.h protocol/parallel.h protocol/parallelJob.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c protocol/parallel.c -o protocol/parallel.o protocol/parallelJob.o: protocol/parallelJob.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h protocol/client.h protocol/command.h protocol/parallelJob.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c protocol/parallelJob.c -o protocol/parallelJob.o protocol/server.o: protocol/server.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h protocol/client.h protocol/command.h protocol/helper.h protocol/server.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c protocol/server.c -o protocol/server.o storage/cifs/storage.o: storage/cifs/storage.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h storage/cifs/storage.h storage/info.h storage/posix/storage.h storage/posix/storage.intern.h storage/read.h storage/read.intern.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/cifs/storage.c -o storage/cifs/storage.o storage/helper.o: storage/helper.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h protocol/client.h protocol/command.h protocol/helper.h storage/cifs/storage.h storage/helper.h storage/info.h storage/posix/storage.h storage/read.h storage/read.intern.h storage/remote/storage.h storage/s3/storage.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/helper.c -o storage/helper.o storage/posix/read.o: storage/posix/read.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h storage/info.h storage/posix/read.h storage/posix/storage.h storage/posix/storage.intern.h storage/read.h storage/read.intern.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/posix/read.c -o storage/posix/read.o storage/posix/storage.o: storage/posix/storage.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/user.h storage/info.h storage/posix/read.h storage/posix/storage.h storage/posix/storage.intern.h storage/posix/write.h storage/read.h storage/read.intern.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/posix/storage.c -o storage/posix/storage.o storage/posix/write.o: storage/posix/write.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/user.h storage/info.h storage/posix/storage.h storage/posix/storage.intern.h storage/posix/write.h storage/read.h storage/read.intern.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/posix/write.c -o storage/posix/write.o storage/read.o: storage/read.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/read.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h storage/read.h storage/read.intern.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/read.c -o storage/read.o storage/remote/protocol.o: storage/remote/protocol.c build.auto.h command/backup/pageChecksum.h common/assert.h common/compress/gzip/compress.h common/compress/gzip/decompress.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/filter/sink.h common/io/filter/size.h common/io/io.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h protocol/client.h protocol/command.h protocol/helper.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/read.intern.h storage/remote/protocol.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/remote/protocol.c -o storage/remote/protocol.o storage/remote/read.o: storage/remote/read.c build.auto.h common/assert.h common/compress/gzip/compress.h common/compress/gzip/decompress.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h protocol/client.h protocol/command.h protocol/server.h storage/info.h storage/read.h storage/read.intern.h storage/remote/protocol.h storage/remote/read.h storage/remote/storage.h storage/remote/storage.intern.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/remote/read.c -o storage/remote/read.o storage/remote/storage.o: storage/remote/storage.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h protocol/client.h protocol/command.h protocol/server.h storage/info.h storage/read.h storage/read.intern.h storage/remote/protocol.h storage/remote/read.h storage/remote/storage.h storage/remote/storage.intern.h storage/remote/write.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/remote/storage.c -o storage/remote/storage.o storage/remote/write.o: storage/remote/write.c build.auto.h common/assert.h common/compress/gzip/compress.h common/compress/gzip/decompress.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h protocol/client.h protocol/command.h protocol/server.h storage/info.h storage/read.h storage/read.intern.h storage/remote/protocol.h storage/remote/storage.h storage/remote/storage.intern.h storage/remote/write.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/remote/write.c -o storage/remote/write.o storage/s3/read.o: storage/s3/read.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/http/client.h common/io/http/header.h common/io/http/query.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h storage/info.h storage/read.h storage/read.intern.h storage/s3/read.h storage/s3/storage.h storage/s3/storage.intern.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/s3/read.c -o storage/s3/read.o storage/s3/storage.o: storage/s3/storage.c build.auto.h common/assert.h common/crypto/hash.h common/debug.h common/encode.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/http/cache.h common/io/http/client.h common/io/http/common.h common/io/http/header.h common/io/http/query.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/type/xml.h storage/info.h storage/read.h storage/read.intern.h storage/s3/read.h storage/s3/storage.h storage/s3/storage.intern.h storage/s3/write.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/s3/storage.c -o storage/s3/storage.o storage/s3/write.o: storage/s3/write.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/http/client.h common/io/http/header.h common/io/http/query.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/type/xml.h storage/info.h storage/read.h storage/read.intern.h storage/s3/storage.h storage/s3/storage.intern.h storage/s3/write.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/s3/write.c -o storage/s3/write.o storage/storage.o: storage/storage.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/wait.h storage/info.h storage/read.h storage/read.intern.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/storage.c -o storage/storage.o storage/write.o: storage/write.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h storage/write.h storage/write.intern.h version.h $(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/write.c -o storage/write.o pgbackrest-release-2.24/src/build.auto.h.in000066400000000000000000000005421362531507100206230ustar00rootroot00000000000000/*********************************************************************************************************************************** Build Flags Generated by Configure ***********************************************************************************************************************************/ // Are test code and asserts disabled? #undef NDEBUG pgbackrest-release-2.24/src/command/000077500000000000000000000000001362531507100174145ustar00rootroot00000000000000pgbackrest-release-2.24/src/command/archive/000077500000000000000000000000001362531507100210355ustar00rootroot00000000000000pgbackrest-release-2.24/src/command/archive/common.c000066400000000000000000000530771362531507100225050ustar00rootroot00000000000000/*********************************************************************************************************************************** Archive Common ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include #include "command/archive/common.h" #include "common/debug.h" #include "common/fork.h" #include "common/log.h" #include "common/memContext.h" #include "common/regExp.h" #include "common/wait.h" #include "config/config.h" #include "postgres/version.h" #include "storage/helper.h" #include "storage/helper.h" /*********************************************************************************************************************************** WAL segment constants ***********************************************************************************************************************************/ STRING_EXTERN(WAL_SEGMENT_REGEXP_STR, WAL_SEGMENT_REGEXP); STRING_EXTERN(WAL_SEGMENT_PARTIAL_REGEXP_STR, WAL_SEGMENT_PARTIAL_REGEXP); STRING_EXTERN(WAL_SEGMENT_DIR_REGEXP_STR, WAL_SEGMENT_DIR_REGEXP); STRING_EXTERN(WAL_SEGMENT_FILE_REGEXP_STR, WAL_SEGMENT_FILE_REGEXP); /*********************************************************************************************************************************** Global error file constant ***********************************************************************************************************************************/ #define STATUS_FILE_GLOBAL "global" STRING_STATIC(STATUS_FILE_GLOBAL_STR, STATUS_FILE_GLOBAL); #define STATUS_FILE_GLOBAL_ERROR STATUS_FILE_GLOBAL STATUS_EXT_ERROR STRING_STATIC(STATUS_FILE_GLOBAL_ERROR_STR, STATUS_FILE_GLOBAL_ERROR); /*********************************************************************************************************************************** Get the correct spool queue based on the archive mode ***********************************************************************************************************************************/ static const String * archiveAsyncSpoolQueue(ArchiveMode archiveMode) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, archiveMode); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN((archiveMode == archiveModeGet ? STORAGE_SPOOL_ARCHIVE_IN_STR : STORAGE_SPOOL_ARCHIVE_OUT_STR)); } /**********************************************************************************************************************************/ void archiveAsyncErrorClear(ArchiveMode archiveMode, const String *archiveFile) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(ENUM, archiveMode); FUNCTION_LOG_PARAM(STRING, archiveFile); FUNCTION_LOG_END(); storageRemoveP( storageSpoolWrite(), strNewFmt(STORAGE_SPOOL_ARCHIVE_OUT "/%s" STATUS_EXT_ERROR, strPtr(archiveFile))); storageRemoveP(storageSpoolWrite(), STRDEF(STORAGE_SPOOL_ARCHIVE_OUT "/" STATUS_FILE_GLOBAL_ERROR)); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Check for ok/error status files in the spool in/out directory ***********************************************************************************************************************************/ bool archiveAsyncStatus(ArchiveMode archiveMode, const String *walSegment, bool throwOnError) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(ENUM, archiveMode); FUNCTION_LOG_PARAM(STRING, walSegment); FUNCTION_LOG_PARAM(BOOL, throwOnError); FUNCTION_LOG_END(); bool result = false; MEM_CONTEXT_TEMP_BEGIN() { const String *errorFile = NULL; bool errorFileExists = false; const String *spoolQueue = archiveAsyncSpoolQueue(archiveMode); String *okFile = strNewFmt("%s" STATUS_EXT_OK, strPtr(walSegment)); bool okFileExists = storageExistsP(storageSpool(), strNewFmt("%s/%s", strPtr(spoolQueue), strPtr(okFile))); // If the ok file does not exist then check to see if a file-specific or global error exists if (!okFileExists) { // Check for a file-specific error first errorFile = strNewFmt("%s" STATUS_EXT_ERROR, strPtr(walSegment)); errorFileExists = storageExistsP(storageSpool(), strNewFmt("%s/%s", strPtr(spoolQueue), strPtr(errorFile))); // If that doesn't exist then check for a global error if (!errorFileExists) { errorFile = STATUS_FILE_GLOBAL_ERROR_STR; errorFileExists = storageExistsP(storageSpool(), strNewFmt("%s/%s", strPtr(spoolQueue), strPtr(errorFile))); } } // If either of them exists then check what happened and report back if (okFileExists || errorFileExists) { // Get the status file content const String *statusFile = okFileExists ? okFile: errorFile; String *content = strNewBuf( storageGetP(storageNewReadP(storageSpool(), strNewFmt("%s/%s", strPtr(spoolQueue), strPtr(statusFile))))); // Get the code and message if the file has content int code = 0; const String *message = NULL; if (strSize(content) != 0) { // Find the line feed after the error code -- should be the first one const char *linefeedPtr = strchr(strPtr(content), '\n'); // Error if linefeed not found if (linefeedPtr == NULL) THROW_FMT(FormatError, "%s content must have at least two lines", strPtr(statusFile)); // Error if message is zero-length if (strlen(linefeedPtr + 1) == 0) THROW_FMT(FormatError, "%s message must be > 0", strPtr(statusFile)); // Get contents code = varIntForce(VARSTR(strNewN(strPtr(content), (size_t)(linefeedPtr - strPtr(content))))); message = strTrim(strNew(linefeedPtr + 1)); } // Process OK files if (okFileExists) { // If there is content in the status file it is a warning if (strSize(content) != 0) { // If error code is not success, then this was a renamed error file if (code != 0) { message = strNewFmt( "WAL segment '%s' was not pushed due to error [%d] and was manually skipped: %s", strPtr(walSegment), code, strPtr(message)); } LOG_WARN(strPtr(message)); } result = true; } else if (throwOnError) { // Error status files must have content if (strSize(content) == 0) THROW_FMT(AssertError, "status file '%s' has no content", strPtr(statusFile)); // Throw error using the code passed in the file THROW_CODE(code, strPtr(message)); } } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, result); } /*********************************************************************************************************************************** Write an error status file ***********************************************************************************************************************************/ void archiveAsyncStatusErrorWrite(ArchiveMode archiveMode, const String *walSegment, int code, const String *message) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(ENUM, archiveMode); FUNCTION_LOG_PARAM(STRING, walSegment); FUNCTION_LOG_PARAM(INT, code); FUNCTION_LOG_PARAM(STRING, message); FUNCTION_LOG_END(); ASSERT(code != 0); ASSERT(message != NULL); MEM_CONTEXT_TEMP_BEGIN() { const String *errorFile = walSegment == NULL ? STATUS_FILE_GLOBAL_STR : walSegment; storagePutP( storageNewWriteP( storageSpoolWrite(), strNewFmt("%s/%s" STATUS_EXT_ERROR, strPtr(archiveAsyncSpoolQueue(archiveMode)), strPtr(errorFile))), BUFSTR(strNewFmt("%d\n%s", code, strPtr(message)))); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Write an ok status file ***********************************************************************************************************************************/ void archiveAsyncStatusOkWrite(ArchiveMode archiveMode, const String *walSegment, const String *warning) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(ENUM, archiveMode); FUNCTION_LOG_PARAM(STRING, walSegment); FUNCTION_LOG_PARAM(STRING, warning); FUNCTION_LOG_END(); ASSERT(walSegment != NULL); MEM_CONTEXT_TEMP_BEGIN() { // Write file storagePutP( storageNewWriteP( storageSpoolWrite(), strNewFmt("%s/%s" STATUS_EXT_OK, strPtr(archiveAsyncSpoolQueue(archiveMode)), strPtr(walSegment))), warning == NULL ? NULL : BUFSTR(strNewFmt("0\n%s", strPtr(warning)))); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /**********************************************************************************************************************************/ void archiveAsyncExec(ArchiveMode archiveMode, const StringList *commandExec) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(ENUM, archiveMode); FUNCTION_LOG_PARAM(STRING_LIST, commandExec); FUNCTION_LOG_END(); ASSERT(commandExec != NULL); // Fork off the async process pid_t pid = forkSafe(); if (pid == 0) { // Disable logging and close log file logClose(); // Detach from parent process forkDetach(); // Execute the binary. This statement will not return if it is successful. THROW_ON_SYS_ERROR_FMT( execvp(strPtr(strLstGet(commandExec, 0)), (char ** const)strLstPtr(commandExec)) == -1, ExecuteError, "unable to execute asynchronous '%s'", archiveMode == archiveModeGet ? CFGCMD_ARCHIVE_GET : CFGCMD_ARCHIVE_PUSH); } #ifdef DEBUG_EXEC_TIME // Get the time to measure how long it takes for the forked process to exit TimeMSec timeBegin = timeMSec(); #endif // The process that was just forked should return immediately int processStatus; THROW_ON_SYS_ERROR(waitpid(pid, &processStatus, 0) == -1, ExecuteError, "unable to wait for forked process"); // The first fork should exit with success. If not, something went wrong during the second fork. CHECK(WIFEXITED(processStatus) && WEXITSTATUS(processStatus) == 0); #ifdef DEBUG_EXEC_TIME // If the process does not exit immediately then something probably went wrong with the double fork. It's possible that this // test will fail on very slow systems so it may need to be tuned. The idea is to make sure that the waitpid() above is not // waiting on the async process. ASSERT(timeMSec() - timeBegin < 10); #endif FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Is the segment partial? ***********************************************************************************************************************************/ bool walIsPartial(const String *walSegment) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, walSegment); FUNCTION_LOG_END(); ASSERT(walSegment != NULL); ASSERT(walIsSegment(walSegment)); FUNCTION_LOG_RETURN(BOOL, strEndsWithZ(walSegment, WAL_SEGMENT_PARTIAL_EXT)); } /*********************************************************************************************************************************** Generates the location of the wal directory using a relative wal path and the supplied pg path ***********************************************************************************************************************************/ String * walPath(const String *walFile, const String *pgPath, const String *command) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, walFile); FUNCTION_LOG_PARAM(STRING, pgPath); FUNCTION_LOG_PARAM(STRING, command); FUNCTION_LOG_END(); ASSERT(walFile != NULL); ASSERT(command != NULL); String *result = NULL; if (!strBeginsWithZ(walFile, "/")) { // Error if walFile has a relative path and pgPath is not set if (pgPath == NULL) { THROW_FMT( OptionRequiredError, "option '" CFGOPT_PG1_PATH "' must be specified when relative wal paths are used\n" "HINT: is %%f passed to %s instead of %%p?\n" "HINT: PostgreSQL may pass relative paths even with %%p depending on the environment.", strPtr(command)); } // Get the working directory char currentWorkDir[4096]; THROW_ON_SYS_ERROR(getcwd(currentWorkDir, sizeof(currentWorkDir)) == NULL, FormatError, "unable to get cwd"); // Check if the working directory is the same as pgPath if (!strEqZ(pgPath, currentWorkDir)) { // If not we'll change the working directory to pgPath and see if that equals the working directory we got called with THROW_ON_SYS_ERROR_FMT(chdir(strPtr(pgPath)) != 0, PathMissingError, "unable to chdir() to '%s'", strPtr(pgPath)); // Get the new working directory char newWorkDir[4096]; THROW_ON_SYS_ERROR(getcwd(newWorkDir, sizeof(newWorkDir)) == NULL, FormatError, "unable to get cwd"); // Error if the new working directory is not equal to the original current working directory. This means that // PostgreSQL and pgBackrest have a different idea about where the PostgreSQL data directory is located. if (strcmp(currentWorkDir, newWorkDir) != 0) THROW_FMT(AssertError, "working path '%s' is not the same path as '%s'", currentWorkDir, strPtr(pgPath)); } result = strNewFmt("%s/%s", strPtr(pgPath), strPtr(walFile)); } else result = strDup(walFile); FUNCTION_LOG_RETURN(STRING, result); } /*********************************************************************************************************************************** Is the file a segment or some other file (e.g. .history, .backup, etc) ***********************************************************************************************************************************/ bool walIsSegment(const String *walSegment) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, walSegment); FUNCTION_LOG_END(); ASSERT(walSegment != NULL); // Create the regular expression to identify WAL segments if it does not already exist static RegExp *regExpSegment = NULL; if (regExpSegment == NULL) { MEM_CONTEXT_BEGIN(memContextTop()) { regExpSegment = regExpNew(WAL_SEGMENT_PARTIAL_REGEXP_STR); } MEM_CONTEXT_END(); } FUNCTION_LOG_RETURN(BOOL, regExpMatch(regExpSegment, walSegment)); } /*********************************************************************************************************************************** Find a WAL segment in the repository The file name can have several things appended such as a hash, compression extension, and partial extension so it is possible to have multiple files that match the segment, though more than one match is not a good thing. ***********************************************************************************************************************************/ String * walSegmentFind(const Storage *storage, const String *archiveId, const String *walSegment, TimeMSec timeout) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE, storage); FUNCTION_LOG_PARAM(STRING, archiveId); FUNCTION_LOG_PARAM(STRING, walSegment); FUNCTION_LOG_PARAM(TIME_MSEC, timeout); FUNCTION_LOG_END(); ASSERT(storage != NULL); ASSERT(archiveId != NULL); ASSERT(walSegment != NULL); ASSERT(walIsSegment(walSegment)); String *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { Wait *wait = timeout > 0 ? waitNew(timeout) : NULL; do { // Get a list of all WAL segments that match StringList *list = storageListP( storage, strNewFmt(STORAGE_REPO_ARCHIVE "/%s/%s", strPtr(archiveId), strPtr(strSubN(walSegment, 0, 16))), .expression = strNewFmt("^%s%s-[0-f]{40}(\\.gz){0,1}$", strPtr(strSubN(walSegment, 0, 24)), walIsPartial(walSegment) ? WAL_SEGMENT_PARTIAL_EXT : ""), .nullOnMissing = true); // If there are results if (list != NULL && strLstSize(list) > 0) { // Error if there is more than one match if (strLstSize(list) > 1) { THROW_FMT( ArchiveDuplicateError, "duplicates found in archive for WAL segment %s: %s\n" "HINT: are multiple primaries archiving to this stanza?", strPtr(walSegment), strPtr(strLstJoin(strLstSort(list, sortOrderAsc), ", "))); } // Copy file name of WAL segment found into the prior context MEM_CONTEXT_PRIOR_BEGIN() { result = strDup(strLstGet(list, 0)); } MEM_CONTEXT_PRIOR_END(); } } while (result == NULL && wait != NULL && waitMore(wait)); } MEM_CONTEXT_TEMP_END(); if (result == NULL && timeout != 0) { THROW_FMT( ArchiveTimeoutError, "WAL segment %s was not archived before the %" PRIu64 "ms timeout\n" "HINT: check the archive_command to ensure that all options are correct (especially --stanza).\n" "HINT: check the PostgreSQL server log for errors.", strPtr(walSegment), timeout); } FUNCTION_LOG_RETURN(STRING, result); } /*********************************************************************************************************************************** Get the next WAL segment given a WAL segment and WAL segment size ***********************************************************************************************************************************/ String * walSegmentNext(const String *walSegment, size_t walSegmentSize, unsigned int pgVersion) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, walSegment); FUNCTION_LOG_PARAM(SIZE, walSegmentSize); FUNCTION_LOG_PARAM(UINT, pgVersion); FUNCTION_LOG_END(); ASSERT(walSegment != NULL); ASSERT(strSize(walSegment) == 24); ASSERT(UINT32_MAX % walSegmentSize == walSegmentSize - 1); ASSERT(pgVersion >= PG_VERSION_11 || walSegmentSize == 16 * 1024 * 1024); // Extract WAL parts uint32_t timeline = 0; uint32_t major = 0; uint32_t minor = 0; MEM_CONTEXT_TEMP_BEGIN() { timeline = (uint32_t)strtol(strPtr(strSubN(walSegment, 0, 8)), NULL, 16); major = (uint32_t)strtol(strPtr(strSubN(walSegment, 8, 8)), NULL, 16); minor = (uint32_t)strtol(strPtr(strSubN(walSegment, 16, 8)), NULL, 16); // Increment minor and adjust major dir on overflow minor++; if (minor > UINT32_MAX / walSegmentSize) { major++; minor = 0; } // Special hack for PostgreSQL < 9.3 which skipped minor FF if (minor == 0xFF && pgVersion < PG_VERSION_93) { major++; minor = 0; } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING, strNewFmt("%08X%08X%08X", timeline, major, minor)); } /*********************************************************************************************************************************** Build a list of WAL segments based on a beginning WAL and number of WAL in the range (inclusive) ***********************************************************************************************************************************/ StringList * walSegmentRange(const String *walSegmentBegin, size_t walSegmentSize, unsigned int pgVersion, unsigned int range) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, walSegmentBegin); FUNCTION_LOG_PARAM(SIZE, walSegmentSize); FUNCTION_LOG_PARAM(UINT, pgVersion); FUNCTION_LOG_END(); ASSERT(range > 0); StringList *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { result = strLstNew(); strLstAdd(result, walSegmentBegin); if (range > 1) { String *current = strDup(walSegmentBegin); for (unsigned int rangeIdx = 0; rangeIdx < range - 1; rangeIdx++) { String *next = walSegmentNext(current, walSegmentSize, pgVersion); strLstAdd(result, next); strFree(current); current = next; } } strLstMove(result, memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING_LIST, result); } pgbackrest-release-2.24/src/command/archive/common.h000066400000000000000000000110401362531507100224720ustar00rootroot00000000000000/*********************************************************************************************************************************** Archive Common ***********************************************************************************************************************************/ #ifndef COMMAND_ARCHIVE_COMMON_H #define COMMAND_ARCHIVE_COMMON_H #include /*********************************************************************************************************************************** Archive mode enum Used for functions that are common to both archive-push and archive-get so they can tailor their behavior to the command being run. ***********************************************************************************************************************************/ typedef enum { archiveModePush, archiveModeGet, } ArchiveMode; #include "common/type/stringList.h" #include "storage/storage.h" /*********************************************************************************************************************************** Status file extension constants ***********************************************************************************************************************************/ #define STATUS_EXT_ERROR ".error" #define STATUS_EXT_ERROR_SIZE (sizeof(STATUS_EXT_ERROR) - 1) #define STATUS_EXT_OK ".ok" #define STATUS_EXT_OK_SIZE (sizeof(STATUS_EXT_OK) - 1) /*********************************************************************************************************************************** WAL segment constants ***********************************************************************************************************************************/ // Extension for partial segments #define WAL_SEGMENT_PARTIAL_EXT ".partial" // Match when the first 24 characters match a WAL segment #define WAL_SEGMENT_PREFIX_REGEXP "^[0-F]{24}" // Match on a WAL segment without checksum appended #define WAL_SEGMENT_REGEXP WAL_SEGMENT_PREFIX_REGEXP "$" STRING_DECLARE(WAL_SEGMENT_REGEXP_STR); // Match on a WAL segment with partial allowed #define WAL_SEGMENT_PARTIAL_REGEXP WAL_SEGMENT_PREFIX_REGEXP "(\\.partial){0,1}$" STRING_DECLARE(WAL_SEGMENT_PARTIAL_REGEXP_STR); // Defines the size of standard WAL segment name -- hopefully this won't change #define WAL_SEGMENT_NAME_SIZE ((unsigned int)24) // WAL segment directory/file #define WAL_SEGMENT_DIR_REGEXP "^[0-F]{16}$" STRING_DECLARE(WAL_SEGMENT_DIR_REGEXP_STR); #define WAL_SEGMENT_FILE_REGEXP "^[0-F]{24}-[0-f]{40}(\\.gz){0,1}$" STRING_DECLARE(WAL_SEGMENT_FILE_REGEXP_STR); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ // Remove errors for an archive file. This should be done before forking the async process to prevent a race condition where an // old error may be reported rather than waiting for the async process to succeed or fail. void archiveAsyncErrorClear(ArchiveMode archiveMode, const String *archiveFile); bool archiveAsyncStatus(ArchiveMode archiveMode, const String *walSegment, bool throwOnError); void archiveAsyncStatusOkWrite(ArchiveMode archiveMode, const String *walSegment, const String *warning); void archiveAsyncStatusErrorWrite(ArchiveMode archiveMode, const String *walSegment, int code, const String *message); // Execute the async process. This function will only return in the calling process and the implementation is platform depedent. void archiveAsyncExec(ArchiveMode archiveMode, const StringList *commandExec); bool walIsPartial(const String *walSegment); bool walIsSegment(const String *walSegment); String *walPath(const String *walFile, const String *pgPath, const String *command); String *walSegmentFind(const Storage *storage, const String *archiveId, const String *walSegment, TimeMSec timeout); String *walSegmentNext(const String *walSegment, size_t walSegmentSize, unsigned int pgVersion); StringList *walSegmentRange(const String *walSegmentBegin, size_t walSegmentSize, unsigned int pgVersion, unsigned int range); #endif pgbackrest-release-2.24/src/command/archive/get/000077500000000000000000000000001362531507100216145ustar00rootroot00000000000000pgbackrest-release-2.24/src/command/archive/get/file.c000066400000000000000000000163201362531507100227010ustar00rootroot00000000000000/*********************************************************************************************************************************** Archive Get File ***********************************************************************************************************************************/ #include "build.auto.h" #include "command/archive/get/file.h" #include "command/archive/common.h" #include "command/control/common.h" #include "common/compress/gzip/common.h" #include "common/compress/gzip/decompress.h" #include "common/crypto/cipherBlock.h" #include "common/debug.h" #include "common/io/filter/group.h" #include "common/log.h" #include "config/config.h" #include "info/infoArchive.h" #include "postgres/interface.h" #include "storage/helper.h" /*********************************************************************************************************************************** Check if a WAL file exists in the repository ***********************************************************************************************************************************/ #define FUNCTION_LOG_ARCHIVE_GET_CHECK_RESULT_TYPE \ ArchiveGetCheckResult #define FUNCTION_LOG_ARCHIVE_GET_CHECK_RESULT_FORMAT(value, buffer, bufferSize) \ objToLog(&value, "ArchiveGetCheckResult", buffer, bufferSize) typedef struct ArchiveGetCheckResult { String *archiveFileActual; String *cipherPass; } ArchiveGetCheckResult; static ArchiveGetCheckResult archiveGetCheck(const String *archiveFile, CipherType cipherType, const String *cipherPass) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, archiveFile); FUNCTION_LOG_PARAM(ENUM, cipherType); FUNCTION_TEST_PARAM(STRING, cipherPass); FUNCTION_LOG_END(); ASSERT(archiveFile != NULL); ArchiveGetCheckResult result = {0}; MEM_CONTEXT_TEMP_BEGIN() { // Get pg control info PgControl controlInfo = pgControlFromFile(storagePg()); // Attempt to load the archive info file InfoArchive *info = infoArchiveLoadFile(storageRepo(), INFO_ARCHIVE_PATH_FILE_STR, cipherType, cipherPass); // Loop through the pg history in case the WAL we need is not in the most recent archive id String *archiveId = NULL; const String *archiveFileActual = NULL; for (unsigned int pgIdx = 0; pgIdx < infoPgDataTotal(infoArchivePg(info)); pgIdx++) { InfoPgData pgData = infoPgData(infoArchivePg(info), pgIdx); // Only use the archive id if it matches the current cluster if (pgData.systemId == controlInfo.systemId && pgData.version == controlInfo.version) { archiveId = infoPgArchiveId(infoArchivePg(info), pgIdx); // If a WAL segment search among the possible file names if (walIsSegment(archiveFile)) { String *walSegmentFile = walSegmentFind(storageRepo(), archiveId, archiveFile, 0); if (walSegmentFile != NULL) { archiveFileActual = strNewFmt("%s/%s", strPtr(strSubN(archiveFile, 0, 16)), strPtr(walSegmentFile)); break; } } // Else if not a WAL segment, see if it exists in the archive dir else if ( storageExistsP( storageRepo(), strNewFmt(STORAGE_REPO_ARCHIVE "/%s/%s", strPtr(archiveId), strPtr(archiveFile)))) { archiveFileActual = archiveFile; break; } } } // Error if no archive id was found -- this indicates a mismatch with the current cluster if (archiveId == NULL) { THROW_FMT( ArchiveMismatchError, "unable to retrieve the archive id for database version '%s' and system-id '%" PRIu64 "'", strPtr(pgVersionToStr(controlInfo.version)), controlInfo.systemId); } if (archiveFileActual != NULL) { MEM_CONTEXT_PRIOR_BEGIN() { result.archiveFileActual = strNewFmt("%s/%s", strPtr(archiveId), strPtr(archiveFileActual)); result.cipherPass = strDup(infoArchiveCipherPass(info)); } MEM_CONTEXT_PRIOR_END(); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(ARCHIVE_GET_CHECK_RESULT, result); } /*********************************************************************************************************************************** Copy a file from the archive to the specified destination ***********************************************************************************************************************************/ int archiveGetFile( const Storage *storage, const String *archiveFile, const String *walDestination, bool durable, CipherType cipherType, const String *cipherPass) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE, storage); FUNCTION_LOG_PARAM(STRING, archiveFile); FUNCTION_LOG_PARAM(STRING, walDestination); FUNCTION_LOG_PARAM(BOOL, durable); FUNCTION_LOG_PARAM(ENUM, cipherType); FUNCTION_TEST_PARAM(STRING, cipherPass); FUNCTION_LOG_END(); ASSERT(archiveFile != NULL); ASSERT(walDestination != NULL); // By default result indicates WAL segment not found int result = 1; // Is the file compressible during the copy? bool compressible = true; // Test for stop file lockStopTest(); MEM_CONTEXT_TEMP_BEGIN() { // Make sure the file exists and other checks pass ArchiveGetCheckResult archiveGetCheckResult = archiveGetCheck(archiveFile, cipherType, cipherPass); if (archiveGetCheckResult.archiveFileActual != NULL) { StorageWrite *destination = storageNewWriteP( storage, walDestination, .noCreatePath = true, .noSyncFile = !durable, .noSyncPath = !durable, .noAtomic = !durable); // If there is a cipher then add the decrypt filter if (cipherType != cipherTypeNone) { ioFilterGroupAdd( ioWriteFilterGroup(storageWriteIo(destination)), cipherBlockNew(cipherModeDecrypt, cipherType, BUFSTR(archiveGetCheckResult.cipherPass), NULL)); compressible = false; } // If file is compressed then add the decompression filter if (strEndsWithZ(archiveGetCheckResult.archiveFileActual, "." GZIP_EXT)) { ioFilterGroupAdd(ioWriteFilterGroup(storageWriteIo(destination)), gzipDecompressNew(false)); compressible = false; } // Copy the file storageCopyP( storageNewReadP( storageRepo(), strNewFmt(STORAGE_REPO_ARCHIVE "/%s", strPtr(archiveGetCheckResult.archiveFileActual)), .compressible = compressible), destination); // The WAL file was found result = 0; } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(INT, result); } pgbackrest-release-2.24/src/command/archive/get/file.h000066400000000000000000000016131362531507100227050ustar00rootroot00000000000000/*********************************************************************************************************************************** Archive Get File ***********************************************************************************************************************************/ #ifndef COMMAND_ARCHIVE_GET_FILE_H #define COMMAND_ARCHIVE_GET_FILE_H #include "common/crypto/common.h" #include "common/type/string.h" #include "storage/storage.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ int archiveGetFile( const Storage *storage, const String *archiveFile, const String *walDestination, bool durable, CipherType cipherType, const String *cipherPass); #endif pgbackrest-release-2.24/src/command/archive/get/get.c000066400000000000000000000437341362531507100225520ustar00rootroot00000000000000/*********************************************************************************************************************************** Archive Get Command ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include #include "command/archive/common.h" #include "command/archive/get/file.h" #include "command/archive/get/protocol.h" #include "command/command.h" #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "common/regExp.h" #include "common/wait.h" #include "config/config.h" #include "config/exec.h" #include "postgres/interface.h" #include "protocol/helper.h" #include "protocol/parallel.h" #include "storage/helper.h" /*********************************************************************************************************************************** Clean the queue and prepare a list of WAL segments that the async process should get ***********************************************************************************************************************************/ static StringList * queueNeed(const String *walSegment, bool found, uint64_t queueSize, size_t walSegmentSize, unsigned int pgVersion) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, walSegment); FUNCTION_LOG_PARAM(BOOL, found); FUNCTION_LOG_PARAM(UINT64, queueSize); FUNCTION_LOG_PARAM(SIZE, walSegmentSize); FUNCTION_LOG_PARAM(UINT, pgVersion); FUNCTION_LOG_END(); ASSERT(walSegment != NULL); StringList *result = strLstNew(); MEM_CONTEXT_TEMP_BEGIN() { // Determine the first WAL segment for the async process to get. If the WAL segment requested by // PostgreSQL was not found then use that. If the segment was found but the queue is not full then // start with the next segment. const String *walSegmentFirst = found ? walSegmentNext(walSegment, walSegmentSize, pgVersion) : walSegment; // Determine how many WAL segments should be in the queue. The queue total must be at least 2 or it doesn't make sense to // have async turned on at all. unsigned int walSegmentQueueTotal = (unsigned int)(queueSize / walSegmentSize); if (walSegmentQueueTotal < 2) walSegmentQueueTotal = 2; // Build the ideal queue -- the WAL segments we want in the queue after the async process has run StringList *idealQueue = walSegmentRange(walSegmentFirst, walSegmentSize, pgVersion, walSegmentQueueTotal); // Get the list of files actually in the queue StringList *actualQueue = strLstSort( storageListP(storageSpool(), STORAGE_SPOOL_ARCHIVE_IN_STR, .errorOnMissing = true), sortOrderAsc); // Only preserve files that match the ideal queue. error/ok files are deleted so the async process can try again. RegExp *regExpPreserve = regExpNew(strNewFmt("^(%s)$", strPtr(strLstJoin(idealQueue, "|")))); // Build a list of WAL segments that are being kept so we can later make a list of what is needed StringList *keepQueue = strLstNew(); for (unsigned int actualQueueIdx = 0; actualQueueIdx < strLstSize(actualQueue); actualQueueIdx++) { // Get file from actual queue const String *file = strLstGet(actualQueue, actualQueueIdx); // Does this match a file we want to preserve? if (regExpMatch(regExpPreserve, file)) strLstAdd(keepQueue, file); // Else delete it else storageRemoveP(storageSpoolWrite(), strNewFmt(STORAGE_SPOOL_ARCHIVE_IN "/%s", strPtr(file))); } // Generate a list of the WAL that are needed by removing kept WAL from the ideal queue strLstSort(keepQueue, sortOrderAsc); for (unsigned int idealQueueIdx = 0; idealQueueIdx < strLstSize(idealQueue); idealQueueIdx++) { if (!strLstExists(keepQueue, strLstGet(idealQueue, idealQueueIdx))) strLstAdd(result, strLstGet(idealQueue, idealQueueIdx)); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING_LIST, result); } /*********************************************************************************************************************************** Get an archive file from the repository (WAL segment, history file, etc.) ***********************************************************************************************************************************/ int cmdArchiveGet(void) { FUNCTION_LOG_VOID(logLevelDebug); // PostgreSQL must be local pgIsLocalVerify(); // Set the result assuming the archive file will not be found int result = 1; MEM_CONTEXT_TEMP_BEGIN() { // Check the parameters const StringList *commandParam = cfgCommandParam(); if (strLstSize(commandParam) != 2) { if (strLstSize(commandParam) == 0) THROW(ParamRequiredError, "WAL segment to get required"); if (strLstSize(commandParam) == 1) THROW(ParamRequiredError, "path to copy WAL segment required"); THROW(ParamInvalidError, "extra parameters found"); } // Get the segment name String *walSegment = strBase(strLstGet(commandParam, 0)); // Destination is wherever we were told to move the WAL segment const String *walDestination = walPath(strLstGet(commandParam, 1), cfgOptionStr(cfgOptPgPath), STR(cfgCommandName(cfgCommand()))); // Async get can only be performed on WAL segments, history or other files must use synchronous mode if (cfgOptionBool(cfgOptArchiveAsync) && walIsSegment(walSegment)) { bool found = false; // Has the WAL segment been found yet? bool queueFull = false; // Is the queue half or more full? bool forked = false; // Has the async process been forked yet? bool throwOnError = false; // Should we throw errors? // Loop and wait for the WAL segment to be pushed Wait *wait = waitNew((TimeMSec)(cfgOptionDbl(cfgOptArchiveTimeout) * MSEC_PER_SEC)); do { // Check for errors or missing files. For archive-get ok indicates that the process succeeded but there is no WAL // file to download. if (archiveAsyncStatus(archiveModeGet, walSegment, throwOnError)) { storageRemoveP( storageSpoolWrite(), strNewFmt(STORAGE_SPOOL_ARCHIVE_IN "/%s" STATUS_EXT_OK, strPtr(walSegment)), .errorOnMissing = true); break; } // Check if the WAL segment is already in the queue found = storageExistsP(storageSpool(), strNewFmt(STORAGE_SPOOL_ARCHIVE_IN "/%s", strPtr(walSegment))); // If found then move the WAL segment to the destination directory if (found) { // Source is the WAL segment in the spool queue StorageRead *source = storageNewReadP( storageSpool(), strNewFmt(STORAGE_SPOOL_ARCHIVE_IN "/%s", strPtr(walSegment))); // A move will be attempted but if the spool queue and the WAL path are on different file systems then a copy // will be performed instead. // // It looks scary that we are disabling syncs and atomicity (in case we need to copy instead of move) but this // is safe because if the system crashes Postgres will not try to reuse a restored WAL segment but will instead // request it again using the restore_command. In the case of a move this hardly matters since path syncs are // cheap but if a copy is required we could save a lot of writes. StorageWrite *destination = storageNewWriteP( storageLocalWrite(), walDestination, .noCreatePath = true, .noSyncFile = true, .noSyncPath = true, .noAtomic = true); // Move (or copy if required) the file storageMoveP(storageSpoolWrite(), source, destination); // Return success result = 0; // Get a list of WAL segments left in the queue StringList *queue = storageListP( storageSpool(), STORAGE_SPOOL_ARCHIVE_IN_STR, .expression = WAL_SEGMENT_REGEXP_STR, .errorOnMissing = true); if (strLstSize(queue) > 0) { // Get size of the WAL segment uint64_t walSegmentSize = storageInfoP(storageLocal(), walDestination).size; // Use WAL segment size to estimate queue size and determine if the async process should be launched queueFull = strLstSize(queue) * walSegmentSize > cfgOptionUInt64(cfgOptArchiveGetQueueMax) / 2; } } // If the WAL segment has not already been found then start the async process to get it. There's no point in // forking the async process off more than once so track that as well. Use an archive lock to prevent forking if // the async process was launched by another process. if (!forked && (!found || !queueFull) && lockAcquire(cfgOptionStr(cfgOptLockPath), cfgOptionStr(cfgOptStanza), cfgLockType(), 0, false)) { // Get control info PgControl pgControl = pgControlFromFile(storagePg()); // Create the queue storagePathCreateP(storageSpoolWrite(), STORAGE_SPOOL_ARCHIVE_IN_STR); // The async process should not output on the console at all KeyValue *optionReplace = kvNew(); kvPut(optionReplace, VARSTR(CFGOPT_LOG_LEVEL_CONSOLE_STR), VARSTRDEF("off")); kvPut(optionReplace, VARSTR(CFGOPT_LOG_LEVEL_STDERR_STR), VARSTRDEF("off")); // Generate command options StringList *commandExec = cfgExecParam(cfgCmdArchiveGet, cfgCmdRoleAsync, optionReplace, true, false); strLstInsert(commandExec, 0, cfgExe()); // Clean the current queue using the list of WAL that we ideally want in the queue. queueNeed() // will return the list of WAL needed to fill the queue and this will be passed to the async process. const StringList *queue = queueNeed( walSegment, found, cfgOptionUInt64(cfgOptArchiveGetQueueMax), pgControl.walSegmentSize, pgControl.version); for (unsigned int queueIdx = 0; queueIdx < strLstSize(queue); queueIdx++) strLstAdd(commandExec, strLstGet(queue, queueIdx)); // Clear errors for the current wal segment archiveAsyncErrorClear(archiveModeGet, walSegment); // Release the lock so the child process can acquire it lockRelease(true); // Execute the async process archiveAsyncExec(archiveModeGet, commandExec); // Mark the async process as forked so it doesn't get forked again. A single run of the async process should be // enough to do the job, running it again won't help anything. forked = true; } // Exit loop if WAL was found if (found) break; // Now that the async process has been launched, throw any errors that are found throwOnError = true; } while (waitMore(wait)); } // Else perform synchronous get else { // Get the repo storage in case it is remote and encryption settings need to be pulled down storageRepo(); // Get the archive file result = archiveGetFile( storageLocalWrite(), walSegment, walDestination, false, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); } // Log whether or not the file was found if (result == 0) LOG_INFO_FMT("found %s in the archive", strPtr(walSegment)); else LOG_INFO_FMT("unable to find %s in the archive", strPtr(walSegment)); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(INT, result); } /*********************************************************************************************************************************** Async version of archive get that runs in parallel for performance ***********************************************************************************************************************************/ typedef struct ArchiveGetAsyncData { const StringList *walSegmentList; // List of wal segments to process unsigned int walSegmentIdx; // Current index in the list to be processed } ArchiveGetAsyncData; static ProtocolParallelJob *archiveGetAsyncCallback(void *data, unsigned int clientIdx) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, data); FUNCTION_TEST_PARAM(UINT, clientIdx); FUNCTION_TEST_END(); // No special logic based on the client, we'll just get the next job (void)clientIdx; // Get a new job if there are any left ArchiveGetAsyncData *jobData = data; if (jobData->walSegmentIdx < strLstSize(jobData->walSegmentList)) { const String *walSegment = strLstGet(jobData->walSegmentList, jobData->walSegmentIdx); jobData->walSegmentIdx++; ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_ARCHIVE_GET_STR); protocolCommandParamAdd(command, VARSTR(walSegment)); FUNCTION_TEST_RETURN(protocolParallelJobNew(VARSTR(walSegment), command)); } FUNCTION_TEST_RETURN(NULL); } void cmdArchiveGetAsync(void) { FUNCTION_LOG_VOID(logLevelDebug); // PostgreSQL must be local pgIsLocalVerify(); MEM_CONTEXT_TEMP_BEGIN() { TRY_BEGIN() { // Check the parameters ArchiveGetAsyncData jobData = {.walSegmentList = cfgCommandParam()}; if (strLstSize(jobData.walSegmentList) < 1) THROW(ParamInvalidError, "at least one wal segment is required"); LOG_INFO_FMT( "get %u WAL file(s) from archive: %s%s", strLstSize(jobData.walSegmentList), strPtr(strLstGet(jobData.walSegmentList, 0)), strLstSize(jobData.walSegmentList) == 1 ? "" : strPtr(strNewFmt("...%s", strPtr(strLstGet(jobData.walSegmentList, strLstSize(jobData.walSegmentList) - 1))))); // Create the parallel executor ProtocolParallel *parallelExec = protocolParallelNew( (TimeMSec)(cfgOptionDbl(cfgOptProtocolTimeout) * MSEC_PER_SEC) / 2, archiveGetAsyncCallback, &jobData); for (unsigned int processIdx = 1; processIdx <= cfgOptionUInt(cfgOptProcessMax); processIdx++) protocolParallelClientAdd(parallelExec, protocolLocalGet(protocolStorageTypeRepo, 1, processIdx)); // Process jobs do { unsigned int completed = protocolParallelProcess(parallelExec); for (unsigned int jobIdx = 0; jobIdx < completed; jobIdx++) { // Get the job and job key ProtocolParallelJob *job = protocolParallelResult(parallelExec); unsigned int processId = protocolParallelJobProcessId(job); const String *walSegment = varStr(protocolParallelJobKey(job)); // The job was successful if (protocolParallelJobErrorCode(job) == 0) { // Get the archive file if (varIntForce(protocolParallelJobResult(job)) == 0) { LOG_DETAIL_PID_FMT(processId, "found %s in the archive", strPtr(walSegment)); } // If it does not exist write an ok file to indicate that it was checked else { LOG_DETAIL_PID_FMT(processId, "unable to find %s in the archive", strPtr(walSegment)); archiveAsyncStatusOkWrite(archiveModeGet, walSegment, NULL); } } // Else the job errored else { LOG_WARN_PID_FMT( processId, "could not get %s from the archive (will be retried): [%d] %s", strPtr(walSegment), protocolParallelJobErrorCode(job), strPtr(protocolParallelJobErrorMessage(job))); archiveAsyncStatusErrorWrite( archiveModeGet, walSegment, protocolParallelJobErrorCode(job), protocolParallelJobErrorMessage(job)); } protocolParallelJobFree(job); } } while (!protocolParallelDone(parallelExec)); } // On any global error write a single error file to cover all unprocessed files CATCH_ANY() { archiveAsyncStatusErrorWrite(archiveModeGet, NULL, errorCode(), STR(errorMessage())); RETHROW(); } TRY_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/command/archive/get/get.h000066400000000000000000000012671362531507100225520ustar00rootroot00000000000000/*********************************************************************************************************************************** Archive Get Command ***********************************************************************************************************************************/ #ifndef COMMAND_ARCHIVE_GET_GET_H #define COMMAND_ARCHIVE_GET_GET_H /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ int cmdArchiveGet(void); void cmdArchiveGetAsync(void); #endif pgbackrest-release-2.24/src/command/archive/get/protocol.c000066400000000000000000000046541362531507100236320ustar00rootroot00000000000000/*********************************************************************************************************************************** Archive Get Protocol Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include "command/archive/get/file.h" #include "command/archive/get/protocol.h" #include "common/debug.h" #include "common/io/io.h" #include "common/log.h" #include "common/memContext.h" #include "config/config.h" #include "storage/helper.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ STRING_EXTERN(PROTOCOL_COMMAND_ARCHIVE_GET_STR, PROTOCOL_COMMAND_ARCHIVE_GET); /*********************************************************************************************************************************** Process protocol requests ***********************************************************************************************************************************/ bool archiveGetProtocol(const String *command, const VariantList *paramList, ProtocolServer *server) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, command); FUNCTION_LOG_PARAM(VARIANT_LIST, paramList); FUNCTION_LOG_PARAM(PROTOCOL_SERVER, server); FUNCTION_LOG_END(); ASSERT(command != NULL); // Get the repo storage in case it is remote and encryption settings need to be pulled down storageRepo(); // Attempt to satisfy the request -- we may get requests that are meant for other handlers bool found = true; MEM_CONTEXT_TEMP_BEGIN() { if (strEq(command, PROTOCOL_COMMAND_ARCHIVE_GET_STR)) { const String *walSegment = varStr(varLstGet(paramList, 0)); protocolServerResponse( server, VARINT( archiveGetFile( storageSpoolWrite(), walSegment, strNewFmt(STORAGE_SPOOL_ARCHIVE_IN "/%s", strPtr(walSegment)), true, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)))); } else found = false; } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, found); } pgbackrest-release-2.24/src/command/archive/get/protocol.h000066400000000000000000000023671362531507100236360ustar00rootroot00000000000000/*********************************************************************************************************************************** Archive Get Protocol Handler ***********************************************************************************************************************************/ #ifndef COMMAND_ARCHIVE_GET_PROTOCOL_H #define COMMAND_ARCHIVE_GET_PROTOCOL_H #include "common/type/string.h" #include "common/type/variantList.h" #include "protocol/server.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define PROTOCOL_COMMAND_ARCHIVE_GET "archiveGet" STRING_DECLARE(PROTOCOL_COMMAND_ARCHIVE_GET_STR); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ bool archiveGetProtocol(const String *command, const VariantList *paramList, ProtocolServer *server); #endif pgbackrest-release-2.24/src/command/archive/push/000077500000000000000000000000001362531507100220145ustar00rootroot00000000000000pgbackrest-release-2.24/src/command/archive/push/file.c000066400000000000000000000136141362531507100231040ustar00rootroot00000000000000/*********************************************************************************************************************************** Archive Push File ***********************************************************************************************************************************/ #include "build.auto.h" #include "command/archive/push/file.h" #include "command/archive/common.h" #include "command/control/common.h" #include "common/compress/gzip/common.h" #include "common/compress/gzip/compress.h" #include "common/crypto/cipherBlock.h" #include "common/crypto/hash.h" #include "common/debug.h" #include "common/io/filter/group.h" #include "common/io/io.h" #include "common/log.h" #include "config/config.h" #include "postgres/interface.h" #include "storage/helper.h" /*********************************************************************************************************************************** Copy a file from the source to the archive ***********************************************************************************************************************************/ String * archivePushFile( const String *walSource, const String *archiveId, unsigned int pgVersion, uint64_t pgSystemId, const String *archiveFile, CipherType cipherType, const String *cipherPass, bool compress, int compressLevel) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, walSource); FUNCTION_LOG_PARAM(STRING, archiveId); FUNCTION_LOG_PARAM(UINT, pgVersion); FUNCTION_LOG_PARAM(UINT64, pgSystemId); FUNCTION_LOG_PARAM(STRING, archiveFile); FUNCTION_LOG_PARAM(ENUM, cipherType); FUNCTION_TEST_PARAM(STRING, cipherPass); FUNCTION_LOG_PARAM(BOOL, compress); FUNCTION_LOG_PARAM(INT, compressLevel); FUNCTION_LOG_END(); ASSERT(walSource != NULL); ASSERT(archiveId != NULL); ASSERT(archiveFile != NULL); String *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { // Is this a WAL segment? bool isSegment = walIsSegment(archiveFile); // If this is a segment compare archive version and systemId to the WAL header if (isSegment) { PgWal walInfo = pgWalFromFile(walSource); if (walInfo.version != pgVersion || walInfo.systemId != pgSystemId) { THROW_FMT( ArchiveMismatchError, "WAL file '%s' version %s, system-id %" PRIu64 " do not match stanza version %s, system-id %" PRIu64, strPtr(walSource), strPtr(pgVersionToStr(walInfo.version)), walInfo.systemId, strPtr(pgVersionToStr(pgVersion)), pgSystemId); } } // Set archive destination initially to the archive file, this will be updated later for wal segments String *archiveDestination = strDup(archiveFile); // Get wal segment checksum and compare it to what exists in the repo, if any String *walSegmentFile = NULL; if (isSegment) { // Generate a sha1 checksum for the wal segment IoRead *read = storageReadIo(storageNewReadP(storageLocal(), walSource)); ioFilterGroupAdd(ioReadFilterGroup(read), cryptoHashNew(HASH_TYPE_SHA1_STR)); ioReadDrain(read); const String *walSegmentChecksum = varStr(ioFilterGroupResult(ioReadFilterGroup(read), CRYPTO_HASH_FILTER_TYPE_STR)); // If the wal segment already exists in the repo then compare checksums walSegmentFile = walSegmentFind(storageRepo(), archiveId, archiveFile, 0); if (walSegmentFile != NULL) { String *walSegmentRepoChecksum = strSubN(walSegmentFile, strSize(archiveFile) + 1, HASH_TYPE_SHA1_SIZE_HEX); if (strEq(walSegmentChecksum, walSegmentRepoChecksum)) { MEM_CONTEXT_PRIOR_BEGIN() { result = strNewFmt( "WAL file '%s' already exists in the archive with the same checksum" "\nHINT: this is valid in some recovery scenarios but may also indicate a problem.", strPtr(archiveFile)); } MEM_CONTEXT_PRIOR_END(); } else THROW_FMT(ArchiveDuplicateError, "WAL file '%s' already exists in the archive", strPtr(archiveFile)); } // Append the checksum to the archive destination strCatFmt(archiveDestination, "-%s", strPtr(walSegmentChecksum)); } // Only copy if the file was not found in the archive if (walSegmentFile == NULL) { StorageRead *source = storageNewReadP(storageLocal(), walSource); // Is the file compressible during the copy? bool compressible = true; // If the file will be compressed then add compression filter if (isSegment && compress) { strCat(archiveDestination, "." GZIP_EXT); ioFilterGroupAdd(ioReadFilterGroup(storageReadIo(source)), gzipCompressNew(compressLevel, false)); compressible = false; } // If there is a cipher then add the encrypt filter if (cipherType != cipherTypeNone) { ioFilterGroupAdd( ioReadFilterGroup(storageReadIo(source)), cipherBlockNew(cipherModeEncrypt, cipherType, BUFSTR(cipherPass), NULL)); compressible = false; } // Copy the file storageCopyP( source, storageNewWriteP( storageRepoWrite(), strNewFmt(STORAGE_REPO_ARCHIVE "/%s/%s", strPtr(archiveId), strPtr(archiveDestination)), .compressible = compressible)); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING, result); } pgbackrest-release-2.24/src/command/archive/push/file.h000066400000000000000000000017201362531507100231040ustar00rootroot00000000000000/*********************************************************************************************************************************** Archive Push File ***********************************************************************************************************************************/ #ifndef COMMAND_ARCHIVE_PUSH_FILE_H #define COMMAND_ARCHIVE_PUSH_FILE_H #include "common/crypto/common.h" #include "common/type/string.h" #include "storage/storage.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ String *archivePushFile( const String *walSource, const String *archiveId, unsigned int pgVersion, uint64_t pgSystemId, const String *archiveFile, CipherType cipherType, const String *cipherPass, bool compress, int compressLevel); #endif pgbackrest-release-2.24/src/command/archive/push/protocol.c000066400000000000000000000050531362531507100240240ustar00rootroot00000000000000/*********************************************************************************************************************************** Archive Push Protocol Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include "command/archive/push/file.h" #include "command/archive/push/protocol.h" #include "common/debug.h" #include "common/io/io.h" #include "common/log.h" #include "common/memContext.h" #include "config/config.h" #include "storage/helper.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ STRING_EXTERN(PROTOCOL_COMMAND_ARCHIVE_PUSH_STR, PROTOCOL_COMMAND_ARCHIVE_PUSH); /*********************************************************************************************************************************** Process protocol requests ***********************************************************************************************************************************/ bool archivePushProtocol(const String *command, const VariantList *paramList, ProtocolServer *server) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, command); FUNCTION_LOG_PARAM(VARIANT_LIST, paramList); FUNCTION_LOG_PARAM(PROTOCOL_SERVER, server); FUNCTION_LOG_END(); ASSERT(command != NULL); // Get the repo storage in case it is remote and encryption settings need to be pulled down storageRepo(); // Attempt to satisfy the request -- we may get requests that are meant for other handlers bool found = true; MEM_CONTEXT_TEMP_BEGIN() { if (strEq(command, PROTOCOL_COMMAND_ARCHIVE_PUSH_STR)) { protocolServerResponse( server, VARSTR( archivePushFile( varStr(varLstGet(paramList, 0)), varStr(varLstGet(paramList, 1)), varUIntForce(varLstGet(paramList, 2)), varUInt64(varLstGet(paramList, 3)), varStr(varLstGet(paramList, 4)), (CipherType)varUIntForce(varLstGet(paramList, 5)), varStr(varLstGet(paramList, 6)), varBool(varLstGet(paramList, 7)), varIntForce(varLstGet(paramList, 8))))); } else found = false; } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, found); } pgbackrest-release-2.24/src/command/archive/push/protocol.h000066400000000000000000000023751362531507100240350ustar00rootroot00000000000000/*********************************************************************************************************************************** Archive Push Protocol Handler ***********************************************************************************************************************************/ #ifndef COMMAND_ARCHIVE_PUSH_PROTOCOL_H #define COMMAND_ARCHIVE_PUSH_PROTOCOL_H #include "common/type/string.h" #include "common/type/variantList.h" #include "protocol/server.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define PROTOCOL_COMMAND_ARCHIVE_PUSH "archivePush" STRING_DECLARE(PROTOCOL_COMMAND_ARCHIVE_PUSH_STR); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ bool archivePushProtocol(const String *command, const VariantList *paramList, ProtocolServer *server); #endif pgbackrest-release-2.24/src/command/archive/push/push.c000066400000000000000000000603311362531507100231420ustar00rootroot00000000000000/*********************************************************************************************************************************** Archive Push Command ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include "command/archive/common.h" #include "command/archive/push/file.h" #include "command/archive/push/protocol.h" #include "command/command.h" #include "command/control/common.h" #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "common/wait.h" #include "config/config.h" #include "config/exec.h" #include "info/infoArchive.h" #include "postgres/interface.h" #include "protocol/helper.h" #include "protocol/parallel.h" #include "storage/helper.h" /*********************************************************************************************************************************** Ready file extension constants ***********************************************************************************************************************************/ #define STATUS_EXT_READY ".ready" #define STATUS_EXT_READY_SIZE (sizeof(STATUS_EXT_READY) - 1) /*********************************************************************************************************************************** Format the warning when a file is dropped ***********************************************************************************************************************************/ static String * archivePushDropWarning(const String *walFile, uint64_t queueMax) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, walFile); FUNCTION_TEST_PARAM(UINT64, queueMax); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN( strNewFmt("dropped WAL file '%s' because archive queue exceeded %s", strPtr(walFile), strPtr(strSizeFormat(queueMax)))); } /*********************************************************************************************************************************** Determine if the WAL process list has become large enough to drop ***********************************************************************************************************************************/ static bool archivePushDrop(const String *walPath, const StringList *const processList) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, walPath); FUNCTION_LOG_PARAM(STRING_LIST, processList); FUNCTION_LOG_END(); const uint64_t queueMax = cfgOptionUInt64(cfgOptArchivePushQueueMax); uint64_t queueSize = 0; bool result = false; for (unsigned int processIdx = 0; processIdx < strLstSize(processList); processIdx++) { queueSize += storageInfoP( storagePg(), strNewFmt("%s/%s", strPtr(walPath), strPtr(strLstGet(processList, processIdx)))).size; if (queueSize > queueMax) { result = true; break; } } FUNCTION_LOG_RETURN(BOOL, result); } /*********************************************************************************************************************************** Get the list of WAL files ready to be pushed according to PostgreSQL ***********************************************************************************************************************************/ static StringList * archivePushReadyList(const String *walPath) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, walPath); FUNCTION_LOG_END(); ASSERT(walPath != NULL); StringList *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { result = strLstNew(); // Read the ready files from the archive_status directory StringList *readyListRaw = strLstSort( storageListP( storagePg(), strNewFmt("%s/" PG_PATH_ARCHIVE_STATUS, strPtr(walPath)), .expression = STRDEF("\\" STATUS_EXT_READY "$"), .errorOnMissing = true), sortOrderAsc); for (unsigned int readyIdx = 0; readyIdx < strLstSize(readyListRaw); readyIdx++) { strLstAdd( result, strSubN(strLstGet(readyListRaw, readyIdx), 0, strSize(strLstGet(readyListRaw, readyIdx)) - STATUS_EXT_READY_SIZE)); } strLstMove(result, memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING_LIST, result); } /*********************************************************************************************************************************** Determine which WAL files need to be pushed to the archive when in async mode This is the heart of the "look ahead" functionality in async archiving. Any files in the out directory that do not end in ok are removed and any ok files that do not have a corresponding ready file in archive_status (meaning it has been acknowledged by PostgreSQL) are removed. Then all ready files that do not have a corresponding ok file (meaning it has already been processed) are returned for processing. ***********************************************************************************************************************************/ static StringList * archivePushProcessList(const String *walPath) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, walPath); FUNCTION_LOG_END(); ASSERT(walPath != NULL); StringList *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { // Create the spool out path if it does not already exist storagePathCreateP(storageSpoolWrite(), STORAGE_SPOOL_ARCHIVE_OUT_STR); // Read the status files from the spool directory, then remove any files that do not end in ok and create a list of the // ok files for further processing StringList *statusList = strLstSort( storageListP(storageSpool(), STORAGE_SPOOL_ARCHIVE_OUT_STR, .errorOnMissing = true), sortOrderAsc); StringList *okList = strLstNew(); for (unsigned int statusIdx = 0; statusIdx < strLstSize(statusList); statusIdx++) { const String *statusFile = strLstGet(statusList, statusIdx); if (strEndsWithZ(statusFile, STATUS_EXT_OK)) strLstAdd(okList, strSubN(statusFile, 0, strSize(statusFile) - STATUS_EXT_OK_SIZE)); else { storageRemoveP( storageSpoolWrite(), strNewFmt(STORAGE_SPOOL_ARCHIVE_OUT "/%s", strPtr(statusFile)), .errorOnMissing = true); } } // Read the ready files from the archive_status directory StringList *readyList = archivePushReadyList(walPath); // Remove ok files that are not in the ready list StringList *okRemoveList = strLstMergeAnti(okList, readyList); for (unsigned int okRemoveIdx = 0; okRemoveIdx < strLstSize(okRemoveList); okRemoveIdx++) { storageRemoveP( storageSpoolWrite(), strNewFmt(STORAGE_SPOOL_ARCHIVE_OUT "/%s" STATUS_EXT_OK, strPtr(strLstGet(okRemoveList, okRemoveIdx))), .errorOnMissing = true); } // Return all ready files that are not in the ok list result = strLstMove(strLstMergeAnti(readyList, okList), memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING_LIST, result); } /*********************************************************************************************************************************** Check that pg_control and archive.info match and get the archive id and archive cipher passphrase (if present) As much information as possible is collected here so that async archiving has as little work as possible to do for each file. Sync archiving does not benefit but it makes sense to use the same function. ***********************************************************************************************************************************/ #define FUNCTION_LOG_ARCHIVE_PUSH_CHECK_RESULT_TYPE \ ArchivePushCheckResult #define FUNCTION_LOG_ARCHIVE_PUSH_CHECK_RESULT_FORMAT(value, buffer, bufferSize) \ objToLog(&value, "ArchivePushCheckResult", buffer, bufferSize) typedef struct ArchivePushCheckResult { unsigned int pgVersion; // PostgreSQL version uint64_t pgSystemId; // PostgreSQL system id unsigned int pgWalSegmentSize; // PostgreSQL WAL segment size String *archiveId; // Archive id for current pg version String *archiveCipherPass; // Archive cipher passphrase } ArchivePushCheckResult; static ArchivePushCheckResult archivePushCheck(CipherType cipherType, const String *cipherPass) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(ENUM, cipherType); FUNCTION_TEST_PARAM(STRING, cipherPass); FUNCTION_LOG_END(); ArchivePushCheckResult result = {0}; MEM_CONTEXT_TEMP_BEGIN() { // Get info from pg_control PgControl controlInfo = pgControlFromFile(storagePg()); // Attempt to load the archive info file InfoArchive *info = infoArchiveLoadFile(storageRepo(), INFO_ARCHIVE_PATH_FILE_STR, cipherType, cipherPass); // Get archive id for the most recent version -- archive-push will only operate against the most recent version String *archiveId = infoPgArchiveId(infoArchivePg(info), infoPgDataCurrentId(infoArchivePg(info))); InfoPgData archiveInfo = infoPgData(infoArchivePg(info), infoPgDataCurrentId(infoArchivePg(info))); // Ensure that the version and system identifier match if (controlInfo.version != archiveInfo.version || controlInfo.systemId != archiveInfo.systemId) { THROW_FMT( ArchiveMismatchError, "PostgreSQL version %s, system-id %" PRIu64 " do not match stanza version %s, system-id %" PRIu64 "\nHINT: are you archiving to the correct stanza?", strPtr(pgVersionToStr(controlInfo.version)), controlInfo.systemId, strPtr(pgVersionToStr(archiveInfo.version)), archiveInfo.systemId); } MEM_CONTEXT_PRIOR_BEGIN() { result.pgVersion = controlInfo.version; result.pgSystemId = controlInfo.systemId; result.pgWalSegmentSize = controlInfo.walSegmentSize; result.archiveId = strDup(archiveId); result.archiveCipherPass = strDup(infoArchiveCipherPass(info)); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(ARCHIVE_PUSH_CHECK_RESULT, result); } /*********************************************************************************************************************************** Push a WAL segment to the repository ***********************************************************************************************************************************/ void cmdArchivePush(void) { FUNCTION_LOG_VOID(logLevelDebug); ASSERT(cfgCommand() == cfgCmdArchivePush); // PostgreSQL must be local pgIsLocalVerify(); MEM_CONTEXT_TEMP_BEGIN() { // Make sure there is a parameter to retrieve the WAL segment from const StringList *commandParam = cfgCommandParam(); if (strLstSize(commandParam) != 1) THROW(ParamRequiredError, "WAL segment to push required"); // Test for stop file lockStopTest(); // Get the segment name String *walFile = walPath(strLstGet(commandParam, 0), cfgOptionStr(cfgOptPgPath), STR(cfgCommandName(cfgCommand()))); String *archiveFile = strBase(walFile); if (cfgOptionBool(cfgOptArchiveAsync)) { bool pushed = false; // Has the WAL segment been pushed yet? bool forked = false; // Has the async process been forked yet? bool throwOnError = false; // Should we throw errors? // Loop and wait for the WAL segment to be pushed Wait *wait = waitNew((TimeMSec)(cfgOptionDbl(cfgOptArchiveTimeout) * MSEC_PER_SEC)); do { // Check if the WAL segment has been pushed. Errors will not be thrown on the first try to allow the async process // a chance to fix them. pushed = archiveAsyncStatus(archiveModePush, archiveFile, throwOnError); // If the WAL segment has not already been pushed then start the async process to push it. There's no point in // forking the async process off more than once so track that as well. Use an archive lock to prevent more than // one async process being launched. if (!pushed && !forked && lockAcquire(cfgOptionStr(cfgOptLockPath), cfgOptionStr(cfgOptStanza), cfgLockType(), 0, false)) { // The async process should not output on the console at all KeyValue *optionReplace = kvNew(); kvPut(optionReplace, VARSTR(CFGOPT_LOG_LEVEL_CONSOLE_STR), VARSTRDEF("off")); kvPut(optionReplace, VARSTR(CFGOPT_LOG_LEVEL_STDERR_STR), VARSTRDEF("off")); // Generate command options StringList *commandExec = cfgExecParam(cfgCmdArchivePush, cfgCmdRoleAsync, optionReplace, true, false); strLstInsert(commandExec, 0, cfgExe()); strLstAdd(commandExec, strPath(walFile)); // Clear errors for the current archive file archiveAsyncErrorClear(archiveModePush, archiveFile); // Release the lock so the child process can acquire it lockRelease(true); // Execute the async process archiveAsyncExec(archiveModePush, commandExec); // Mark the async process as forked so it doesn't get forked again. A single run of the async process should be // enough to do the job, running it again won't help anything. forked = true; } // Now that the async process has been launched, throw any errors that are found throwOnError = true; } while (!pushed && waitMore(wait)); // If the WAL segment was not pushed then error if (!pushed) { THROW_FMT( ArchiveTimeoutError, "unable to push WAL file '%s' to the archive asynchronously after %lg second(s)", strPtr(archiveFile), cfgOptionDbl(cfgOptArchiveTimeout)); } // Log success LOG_INFO_FMT("pushed WAL file '%s' to the archive asynchronously", strPtr(archiveFile)); } else { // Get the repo storage in case it is remote and encryption settings need to be pulled down storageRepo(); // Get archive info ArchivePushCheckResult archiveInfo = archivePushCheck( cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); // Check if the push queue has been exceeded if (cfgOptionTest(cfgOptArchivePushQueueMax) && archivePushDrop(strPath(walFile), archivePushReadyList(strPath(walFile)))) { LOG_WARN(strPtr(archivePushDropWarning(archiveFile, cfgOptionUInt64(cfgOptArchivePushQueueMax)))); } // Else push the file else { // Push the file to the archive String *warning = archivePushFile( walFile, archiveInfo.archiveId, archiveInfo.pgVersion, archiveInfo.pgSystemId, archiveFile, cipherType(cfgOptionStr(cfgOptRepoCipherType)), archiveInfo.archiveCipherPass, cfgOptionBool(cfgOptCompress), cfgOptionInt(cfgOptCompressLevel)); // If a warning was returned then log it if (warning != NULL) LOG_WARN(strPtr(warning)); // Log success LOG_INFO_FMT("pushed WAL file '%s' to the archive", strPtr(archiveFile)); } } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Async version of archive push that runs in parallel for performance ***********************************************************************************************************************************/ typedef struct ArchivePushAsyncData { const String *walPath; // Path to pg_wal/pg_xlog const StringList *walFileList; // List of wal files to process unsigned int walFileIdx; // Current index in the list to be processed CipherType cipherType; // Cipher type bool compress; // Compress wal files int compressLevel; // Compression level for wal files ArchivePushCheckResult archiveInfo; // Archive info } ArchivePushAsyncData; static ProtocolParallelJob *archivePushAsyncCallback(void *data, unsigned int clientIdx) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, data); FUNCTION_TEST_PARAM(UINT, clientIdx); FUNCTION_TEST_END(); // No special logic based on the client, we'll just get the next job (void)clientIdx; // Get a new job if there are any left ArchivePushAsyncData *jobData = data; if (jobData->walFileIdx < strLstSize(jobData->walFileList)) { const String *walFile = strLstGet(jobData->walFileList, jobData->walFileIdx); jobData->walFileIdx++; ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_ARCHIVE_PUSH_STR); protocolCommandParamAdd(command, VARSTR(strNewFmt("%s/%s", strPtr(jobData->walPath), strPtr(walFile)))); protocolCommandParamAdd(command, VARSTR(jobData->archiveInfo.archiveId)); protocolCommandParamAdd(command, VARUINT(jobData->archiveInfo.pgVersion)); protocolCommandParamAdd(command, VARUINT64(jobData->archiveInfo.pgSystemId)); protocolCommandParamAdd(command, VARSTR(walFile)); protocolCommandParamAdd(command, VARUINT(jobData->cipherType)); protocolCommandParamAdd(command, VARSTR(jobData->archiveInfo.archiveCipherPass)); protocolCommandParamAdd(command, VARBOOL(jobData->compress)); protocolCommandParamAdd(command, VARINT(jobData->compressLevel)); FUNCTION_TEST_RETURN(protocolParallelJobNew(VARSTR(walFile), command)); } FUNCTION_TEST_RETURN(NULL); } void cmdArchivePushAsync(void) { FUNCTION_LOG_VOID(logLevelDebug); ASSERT(cfgCommand() == cfgCmdArchivePush && cfgCommandRole() == cfgCmdRoleAsync); // PostgreSQL must be local pgIsLocalVerify(); MEM_CONTEXT_TEMP_BEGIN() { // Make sure there is a parameter with the wal path const StringList *commandParam = cfgCommandParam(); if (strLstSize(commandParam) != 1) THROW(ParamRequiredError, "WAL path to push required"); ArchivePushAsyncData jobData = { .walPath = strLstGet(commandParam, 0), .compress = cfgOptionBool(cfgOptCompress), .compressLevel = cfgOptionInt(cfgOptCompressLevel), }; TRY_BEGIN() { // Test for stop file lockStopTest(); // Get a list of WAL files that are ready for processing jobData.walFileList = archivePushProcessList(jobData.walPath); // The archive-push:async command should not have been called unless there are WAL files to process if (strLstSize(jobData.walFileList) == 0) THROW(AssertError, "no WAL files to process"); LOG_INFO_FMT( "push %u WAL file(s) to archive: %s%s", strLstSize(jobData.walFileList), strPtr(strLstGet(jobData.walFileList, 0)), strLstSize(jobData.walFileList) == 1 ? "" : strPtr(strNewFmt("...%s", strPtr(strLstGet(jobData.walFileList, strLstSize(jobData.walFileList) - 1))))); // Drop files if queue max has been exceeded if (cfgOptionTest(cfgOptArchivePushQueueMax) && archivePushDrop(jobData.walPath, jobData.walFileList)) { for (unsigned int walFileIdx = 0; walFileIdx < strLstSize(jobData.walFileList); walFileIdx++) { const String *walFile = strLstGet(jobData.walFileList, walFileIdx); const String *warning = archivePushDropWarning(walFile, cfgOptionUInt64(cfgOptArchivePushQueueMax)); archiveAsyncStatusOkWrite(archiveModePush, walFile, warning); LOG_WARN(strPtr(warning)); } } // Else continue processing else { // Get the repo storage in case it is remote and encryption settings need to be pulled down storageRepo(); // Get cipher type jobData.cipherType = cipherType(cfgOptionStr(cfgOptRepoCipherType)); // Get archive info jobData.archiveInfo = archivePushCheck( cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); // Create the parallel executor ProtocolParallel *parallelExec = protocolParallelNew( (TimeMSec)(cfgOptionDbl(cfgOptProtocolTimeout) * MSEC_PER_SEC) / 2, archivePushAsyncCallback, &jobData); for (unsigned int processIdx = 1; processIdx <= cfgOptionUInt(cfgOptProcessMax); processIdx++) protocolParallelClientAdd(parallelExec, protocolLocalGet(protocolStorageTypeRepo, 1, processIdx)); // Process jobs do { unsigned int completed = protocolParallelProcess(parallelExec); for (unsigned int jobIdx = 0; jobIdx < completed; jobIdx++) { protocolKeepAlive(); // Get the job and job key ProtocolParallelJob *job = protocolParallelResult(parallelExec); unsigned int processId = protocolParallelJobProcessId(job); const String *walFile = varStr(protocolParallelJobKey(job)); // The job was successful if (protocolParallelJobErrorCode(job) == 0) { LOG_DETAIL_PID_FMT(processId, "pushed WAL file '%s' to the archive", strPtr(walFile)); archiveAsyncStatusOkWrite(archiveModePush, walFile, varStr(protocolParallelJobResult(job))); } // Else the job errored else { LOG_WARN_PID_FMT( processId, "could not push WAL file '%s' to the archive (will be retried): [%d] %s", strPtr(walFile), protocolParallelJobErrorCode(job), strPtr(protocolParallelJobErrorMessage(job))); archiveAsyncStatusErrorWrite( archiveModePush, walFile, protocolParallelJobErrorCode(job), protocolParallelJobErrorMessage(job)); } protocolParallelJobFree(job); } } while (!protocolParallelDone(parallelExec)); } } // On any global error write a single error file to cover all unprocessed files CATCH_ANY() { archiveAsyncStatusErrorWrite(archiveModePush, NULL, errorCode(), STR(errorMessage())); RETHROW(); } TRY_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/command/archive/push/push.h000066400000000000000000000012771362531507100231530ustar00rootroot00000000000000/*********************************************************************************************************************************** Archive Push Command ***********************************************************************************************************************************/ #ifndef COMMAND_ARCHIVE_PUSH_PUSH_H #define COMMAND_ARCHIVE_PUSH_PUSH_H /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void cmdArchivePush(void); void cmdArchivePushAsync(void); #endif pgbackrest-release-2.24/src/command/backup/000077500000000000000000000000001362531507100206615ustar00rootroot00000000000000pgbackrest-release-2.24/src/command/backup/backup.c000066400000000000000000002650111362531507100222770ustar00rootroot00000000000000/*********************************************************************************************************************************** Backup Command ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include "command/archive/common.h" #include "command/control/common.h" #include "command/backup/backup.h" #include "command/backup/common.h" #include "command/backup/file.h" #include "command/backup/protocol.h" #include "command/check/common.h" #include "command/stanza/common.h" #include "common/crypto/cipherBlock.h" #include "common/compress/gzip/common.h" #include "common/compress/gzip/compress.h" #include "common/compress/gzip/decompress.h" #include "common/debug.h" #include "common/io/filter/size.h" #include "common/log.h" #include "common/time.h" #include "common/type/convert.h" #include "config/config.h" #include "db/helper.h" #include "info/infoArchive.h" #include "info/infoBackup.h" #include "info/manifest.h" #include "postgres/interface.h" #include "postgres/version.h" #include "protocol/helper.h" #include "protocol/parallel.h" #include "storage/helper.h" #include "version.h" /*********************************************************************************************************************************** Backup constants ***********************************************************************************************************************************/ #define BACKUP_PATH_HISTORY "backup.history" #define BACKUP_LINK_LATEST "latest" /********************************************************************************************************************************** Generate a unique backup label that does not contain a timestamp from a previous backup ***********************************************************************************************************************************/ // Helper to format the backup label static String * backupLabelFormat(BackupType type, const String *backupLabelPrior, time_t timestamp) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(ENUM, type); FUNCTION_LOG_PARAM(STRING, backupLabelPrior); FUNCTION_LOG_PARAM(TIME, timestamp); FUNCTION_LOG_END(); ASSERT((type == backupTypeFull && backupLabelPrior == NULL) || (type != backupTypeFull && backupLabelPrior != NULL)); ASSERT(timestamp > 0); // Format the timestamp char buffer[16]; THROW_ON_SYS_ERROR( strftime(buffer, sizeof(buffer), "%Y%m%d-%H%M%S", localtime(×tamp)) == 0, AssertError, "unable to format time"); // If full label String *result = NULL; if (type == backupTypeFull) { result = strNewFmt("%sF", buffer); } // Else diff or incr label else { // Get the full backup portion of the prior backup label result = strSubN(backupLabelPrior, 0, 16); // Append the diff/incr timestamp strCatFmt(result, "_%s%s", buffer, type == backupTypeDiff ? "D" : "I"); } FUNCTION_LOG_RETURN(STRING, result); } static String * backupLabelCreate(BackupType type, const String *backupLabelPrior, time_t timestamp) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(ENUM, type); FUNCTION_LOG_PARAM(STRING, backupLabelPrior); FUNCTION_LOG_PARAM(TIME, timestamp); FUNCTION_LOG_END(); ASSERT((type == backupTypeFull && backupLabelPrior == NULL) || (type != backupTypeFull && backupLabelPrior != NULL)); ASSERT(timestamp > 0); String *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { const String *backupLabelLatest = NULL; // Get the newest backup const StringList *backupList = strLstSort( storageListP( storageRepo(), STRDEF(STORAGE_REPO_BACKUP), .expression = backupRegExpP(.full = true, .differential = true, .incremental = true)), sortOrderDesc); if (strLstSize(backupList) > 0) backupLabelLatest = strLstGet(backupList, 0); // Get the newest history const StringList *historyYearList = strLstSort( storageListP(storageRepo(), STRDEF(STORAGE_REPO_BACKUP "/" BACKUP_PATH_HISTORY), .expression = STRDEF("^2[0-9]{3}$")), sortOrderDesc); if (strLstSize(historyYearList) > 0) { const StringList *historyList = strLstSort( storageListP( storageRepo(), strNewFmt(STORAGE_REPO_BACKUP "/" BACKUP_PATH_HISTORY "/%s", strPtr(strLstGet(historyYearList, 0))), .expression = strNewFmt( "%s\\.manifest\\." GZIP_EXT "$", strPtr(backupRegExpP(.full = true, .differential = true, .incremental = true, .noAnchorEnd = true)))), sortOrderDesc); if (strLstSize(historyList) > 0) { const String *historyLabelLatest = strLstGet(historyList, 0); if (backupLabelLatest == NULL || strCmp(historyLabelLatest, backupLabelLatest) > 0) backupLabelLatest = historyLabelLatest; } } // Now that we have the latest label check if the provided timestamp will give us an even later label result = backupLabelFormat(type, backupLabelPrior, timestamp); if (backupLabelLatest != NULL && strCmp(result, backupLabelLatest) <= 0) { // If that didn't give us a later label then add one second. It's possible that two backups (they would need to be // offline or halted online) have run very close together. result = backupLabelFormat(type, backupLabelPrior, timestamp + 1); // If the label is still not latest then error. There is probably a timezone change or massive clock skew. if (strCmp(result, backupLabelLatest) <= 0) { THROW_FMT( FormatError, "new backup label '%s' is not later than latest backup label '%s'\n" "HINT: has the timezone changed?\n" "HINT: is there clock skew?", strPtr(result), strPtr(backupLabelLatest)); } // If adding a second worked then sleep the remainder of the current second so we don't start early sleepMSec(MSEC_PER_SEC - (timeMSec() % MSEC_PER_SEC)); } MEM_CONTEXT_PRIOR_BEGIN() { result = strDup(result); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING, result); } /*********************************************************************************************************************************** Get the postgres database and storage objects ***********************************************************************************************************************************/ #define FUNCTION_LOG_BACKUP_DATA_TYPE \ BackupData * #define FUNCTION_LOG_BACKUP_DATA_FORMAT(value, buffer, bufferSize) \ objToLog(value, "BackupData", buffer, bufferSize) typedef struct BackupData { unsigned int pgIdPrimary; // Configuration id of the primary Db *dbPrimary; // Database connection to the primary const Storage *storagePrimary; // Storage object for the primary const String *hostPrimary; // Host name of the primary unsigned int pgIdStandby; // Configuration id of the standby Db *dbStandby; // Database connection to the standby const Storage *storageStandby; // Storage object for the standby const String *hostStandby; // Host name of the standby unsigned int version; // PostgreSQL version unsigned int pageSize; // PostgreSQL page size unsigned int walSegmentSize; // PostgreSQL wal segment size } BackupData; static BackupData * backupInit(const InfoBackup *infoBackup) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_BACKUP, infoBackup); FUNCTION_LOG_END(); ASSERT(infoBackup != NULL); // Initialize for offline backup BackupData *result = memNew(sizeof(BackupData)); *result = (BackupData){.pgIdPrimary = 1}; // Check that the PostgreSQL version supports backup from standby. The check is done using the stanza info because pg_control // cannot be loaded until a primary is found -- which will also lead to an error if the version does not support standby. If the // pg_control version does not match the stanza version then there will be an error further down. InfoPgData infoPg = infoPgDataCurrent(infoBackupPg(infoBackup)); if (cfgOptionBool(cfgOptOnline) && cfgOptionBool(cfgOptBackupStandby) && infoPg.version < PG_VERSION_BACKUP_STANDBY) { THROW_FMT( ConfigError, "option '" CFGOPT_BACKUP_STANDBY "' not valid for " PG_NAME " < %s", strPtr(pgVersionToStr(PG_VERSION_BACKUP_STANDBY))); } // Don't allow backup from standby when offline if (!cfgOptionBool(cfgOptOnline) && cfgOptionBool(cfgOptBackupStandby)) { LOG_WARN( "option " CFGOPT_BACKUP_STANDBY " is enabled but backup is offline - backups will be performed from the primary"); cfgOptionSet(cfgOptBackupStandby, cfgSourceParam, BOOL_FALSE_VAR); } // Get database info when online if (cfgOptionBool(cfgOptOnline)) { bool backupStandby = cfgOptionBool(cfgOptBackupStandby); DbGetResult dbInfo = dbGet(!backupStandby, true, backupStandby); result->pgIdPrimary = dbInfo.primaryId; result->dbPrimary = dbInfo.primary; if (backupStandby) { ASSERT(dbInfo.standbyId != 0); result->pgIdStandby = dbInfo.standbyId; result->dbStandby = dbInfo.standby; result->storageStandby = storagePgId(result->pgIdStandby); result->hostStandby = cfgOptionStr(cfgOptPgHost + result->pgIdStandby - 1); } } // Add primary info result->storagePrimary = storagePgId(result->pgIdPrimary); result->hostPrimary = cfgOptionStr(cfgOptPgHost + result->pgIdPrimary - 1); // Get pg_control info from the primary PgControl pgControl = pgControlFromFile(result->storagePrimary); result->version = pgControl.version; result->pageSize = pgControl.pageSize; result->walSegmentSize = pgControl.walSegmentSize; // Validate pg_control info against the stanza if (result->version != infoPg.version || pgControl.systemId != infoPg.systemId) { THROW_FMT( BackupMismatchError, PG_NAME " version %s, system-id %" PRIu64 " do not match stanza version %s, system-id %" PRIu64 "\n" "HINT: is this the correct stanza?", strPtr(pgVersionToStr(pgControl.version)), pgControl.systemId, strPtr(pgVersionToStr(infoPg.version)), infoPg.systemId); } // Only allow stop auto in PostgreSQL >= 9.3 and <= 9.5 if (cfgOptionBool(cfgOptStopAuto) && result->version < PG_VERSION_93) { LOG_WARN(CFGOPT_STOP_AUTO " option is only available in " PG_NAME " >= " PG_VERSION_93_STR); cfgOptionSet(cfgOptStopAuto, cfgSourceParam, BOOL_FALSE_VAR); } // Only allow start-fast option for PostgreSQL >= 8.4 if (cfgOptionBool(cfgOptStartFast) && result->version < PG_VERSION_84) { LOG_WARN(CFGOPT_START_FAST " option is only available in " PG_NAME " >= " PG_VERSION_84_STR); cfgOptionSet(cfgOptStartFast, cfgSourceParam, BOOL_FALSE_VAR); } // If checksum page is not explicity set then automatically enable it when checksums are available if (!cfgOptionTest(cfgOptChecksumPage)) { // If online then use the value in pg_control to set checksum-page if (cfgOptionBool(cfgOptOnline)) { cfgOptionSet(cfgOptChecksumPage, cfgSourceParam, VARBOOL(pgControl.pageChecksum)); } // Else set to false. An offline cluster is likely to have false positives so better if the user enables manually. else cfgOptionSet(cfgOptChecksumPage, cfgSourceParam, BOOL_FALSE_VAR); } // Else if checksums have been explicitly enabled but are not available then warn and reset. ??? We should be able to make this // determination when offline as well, but the integration tests don't write pg_control accurately enough to support it. else if (cfgOptionBool(cfgOptOnline) && !pgControl.pageChecksum && cfgOptionBool(cfgOptChecksumPage)) { LOG_WARN(CFGOPT_CHECKSUM_PAGE " option set to true but checksums are not enabled on the cluster, resetting to false"); cfgOptionSet(cfgOptChecksumPage, cfgSourceParam, BOOL_FALSE_VAR); } FUNCTION_LOG_RETURN(BACKUP_DATA, result); } /********************************************************************************************************************************** Get time from the database or locally depending on online ***********************************************************************************************************************************/ static time_t backupTime(BackupData *backupData, bool waitRemainder) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(BACKUP_DATA, backupData); FUNCTION_LOG_PARAM(BOOL, waitRemainder); FUNCTION_LOG_END(); // Offline backups will just grab the time from the local system since the value of copyStart is not important in this context. // No worries about causing a delta backup since switching online will do that anyway. time_t result = time(NULL); // When online get the time from the database server if (cfgOptionBool(cfgOptOnline)) { // Get time from the database TimeMSec timeMSec = dbTimeMSec(backupData->dbPrimary); result = (time_t)(timeMSec / MSEC_PER_SEC); // Sleep the remainder of the second when requested (this is so copyStart is not subject to one second resolution issues) if (waitRemainder) { sleepMSec(MSEC_PER_SEC - (timeMSec % MSEC_PER_SEC)); // Check time again to be sure we slept long enough if (result >= (time_t)(dbTimeMSec(backupData->dbPrimary) / MSEC_PER_SEC)) THROW(AssertError, "invalid sleep for online backup time with wait remainder"); } } FUNCTION_LOG_RETURN(TIME, result); } /*********************************************************************************************************************************** Create an incremental backup if type is not full and a compatible prior backup exists ***********************************************************************************************************************************/ // Helper to find a compatible prior backup static Manifest * backupBuildIncrPrior(const InfoBackup *infoBackup) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_BACKUP, infoBackup); FUNCTION_LOG_END(); ASSERT(infoBackup != NULL); Manifest *result = NULL; // No incremental if backup type is full BackupType type = backupType(cfgOptionStr(cfgOptType)); if (type != backupTypeFull) { MEM_CONTEXT_TEMP_BEGIN() { InfoPgData infoPg = infoPgDataCurrent(infoBackupPg(infoBackup)); const String *backupLabelPrior = NULL; unsigned int backupTotal = infoBackupDataTotal(infoBackup); for (unsigned int backupIdx = backupTotal - 1; backupIdx < backupTotal; backupIdx--) { InfoBackupData backupPrior = infoBackupData(infoBackup, backupIdx); // The prior backup for a diff must be full if (type == backupTypeDiff && backupType(backupPrior.backupType) != backupTypeFull) continue; // The backups must come from the same cluster ??? This should enable delta instead if (infoPg.id != backupPrior.backupPgId) continue; // This backup is a candidate for prior backupLabelPrior = strDup(backupPrior.backupLabel); break; } // If there is a prior backup then check that options for the new backup are compatible if (backupLabelPrior != NULL) { result = manifestLoadFile( storageRepo(), strNewFmt(STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE, strPtr(backupLabelPrior)), cipherType(cfgOptionStr(cfgOptRepoCipherType)), infoPgCipherPass(infoBackupPg(infoBackup))); const ManifestData *manifestPriorData = manifestData(result); LOG_INFO_FMT( "last backup label = %s, version = %s", strPtr(manifestData(result)->backupLabel), strPtr(manifestData(result)->backrestVersion)); // Warn if compress option changed if (cfgOptionBool(cfgOptCompress) != manifestPriorData->backupOptionCompress) { LOG_WARN_FMT( "%s backup cannot alter compress option to '%s', reset to value in %s", strPtr(cfgOptionStr(cfgOptType)), cvtBoolToConstZ(cfgOptionBool(cfgOptCompress)), strPtr(backupLabelPrior)); cfgOptionSet(cfgOptCompress, cfgSourceParam, VARBOOL(manifestPriorData->backupOptionCompress)); } // Warn if hardlink option changed ??? Doesn't seem like this is needed? Hardlinks are always to a directory that // is guaranteed to contain a real file -- like references. Also annoying that if the full backup was not // hardlinked then an diff/incr can't be used because we need more testing. if (cfgOptionBool(cfgOptRepoHardlink) != manifestPriorData->backupOptionHardLink) { LOG_WARN_FMT( "%s backup cannot alter hardlink option to '%s', reset to value in %s", strPtr(cfgOptionStr(cfgOptType)), cvtBoolToConstZ(cfgOptionBool(cfgOptRepoHardlink)), strPtr(backupLabelPrior)); cfgOptionSet(cfgOptRepoHardlink, cfgSourceParam, VARBOOL(manifestPriorData->backupOptionHardLink)); } // If not defined this backup was done in a version prior to page checksums being introduced. Just set // checksum-page to false and move on without a warning. Page checksums will start on the next full backup. if (manifestData(result)->backupOptionChecksumPage == NULL) { cfgOptionSet(cfgOptChecksumPage, cfgSourceParam, BOOL_FALSE_VAR); } // Don't allow the checksum-page option to change in a diff or incr backup. This could be confusing as only // certain files would be checksummed and the list could be incomplete during reporting. else { bool checksumPagePrior = varBool(manifestData(result)->backupOptionChecksumPage); // Warn if an incompatible setting was explicitly requested if (checksumPagePrior != cfgOptionBool(cfgOptChecksumPage)) { LOG_WARN_FMT( "%s backup cannot alter '" CFGOPT_CHECKSUM_PAGE "' option to '%s', reset to '%s' from %s", strPtr(cfgOptionStr(cfgOptType)), cvtBoolToConstZ(cfgOptionBool(cfgOptChecksumPage)), cvtBoolToConstZ(checksumPagePrior), strPtr(manifestData(result)->backupLabel)); } cfgOptionSet(cfgOptChecksumPage, cfgSourceParam, VARBOOL(checksumPagePrior)); } manifestMove(result, memContextPrior()); } else { LOG_WARN_FMT("no prior backup exists, %s backup has been changed to full", strPtr(cfgOptionStr(cfgOptType))); cfgOptionSet(cfgOptType, cfgSourceParam, VARSTR(backupTypeStr(backupTypeFull))); } } MEM_CONTEXT_TEMP_END(); } FUNCTION_LOG_RETURN(MANIFEST, result); } static bool backupBuildIncr(const InfoBackup *infoBackup, Manifest *manifest, Manifest *manifestPrior, const String *archiveStart) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_BACKUP, infoBackup); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_LOG_PARAM(MANIFEST, manifestPrior); FUNCTION_LOG_PARAM(STRING, archiveStart); FUNCTION_LOG_END(); ASSERT(infoBackup != NULL); ASSERT(manifest != NULL); bool result = false; // No incremental if no prior manifest if (manifestPrior != NULL) { MEM_CONTEXT_TEMP_BEGIN() { // Move the manifest to this context so it will be freed when we are done manifestMove(manifestPrior, MEM_CONTEXT_TEMP()); // Build incremental manifest manifestBuildIncr(manifest, manifestPrior, backupType(cfgOptionStr(cfgOptType)), archiveStart); // Set the cipher subpass from prior manifest since we want a single subpass for the entire backup set manifestCipherSubPassSet(manifest, manifestCipherSubPass(manifestPrior)); // Incremental was built result = true; } MEM_CONTEXT_TEMP_END(); } FUNCTION_LOG_RETURN(BOOL, result); } /*********************************************************************************************************************************** Check for a backup that can be resumed and merge into the manifest if found ***********************************************************************************************************************************/ typedef struct BackupResumeData { Manifest *manifest; // New manifest const Manifest *manifestResume; // Resumed manifest const bool compressed; // Is the backup compressed? const bool delta; // Is this a delta backup? const String *backupPath; // Path to the current level of the backup being cleaned const String *manifestParentName; // Parent manifest name used to construct manifest name } BackupResumeData; // Callback to clean invalid paths/files/links out of the resumable backup path void backupResumeCallback(void *data, const StorageInfo *info) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, data); FUNCTION_TEST_PARAM(STORAGE_INFO, *storageInfo); FUNCTION_TEST_END(); ASSERT(data != NULL); ASSERT(info != NULL); BackupResumeData *resumeData = data; // Skip all . paths because they have already been handled on the previous level of recursion if (strEq(info->name, DOT_STR)) { FUNCTION_TEST_RETURN_VOID(); return; } // Skip backup.manifest.copy -- it must be preserved to allow resume again if this process throws an error before writing the // manifest for the first time if (resumeData->manifestParentName == NULL && strEqZ(info->name, BACKUP_MANIFEST_FILE INFO_COPY_EXT)) { FUNCTION_TEST_RETURN_VOID(); return; } // Build the name used to lookup files in the manifest const String *manifestName = resumeData->manifestParentName != NULL ? strNewFmt("%s/%s", strPtr(resumeData->manifestParentName), strPtr(info->name)) : info->name; // Build the backup path used to remove files/links/paths that are invalid const String *backupPath = strNewFmt("%s/%s", strPtr(resumeData->backupPath), strPtr(info->name)); // Process file types switch (info->type) { // Check paths // ------------------------------------------------------------------------------------------------------------------------- case storageTypePath: { // If the path was not found in the new manifest then remove it if (manifestPathFindDefault(resumeData->manifest, manifestName, NULL) == NULL) { LOG_DETAIL_FMT("remove path '%s' from resumed backup", strPtr(storagePathP(storageRepo(), backupPath))); storagePathRemoveP(storageRepoWrite(), backupPath, .recurse = true); } // Else recurse into the path { BackupResumeData resumeDataSub = *resumeData; resumeDataSub.manifestParentName = manifestName; resumeDataSub.backupPath = backupPath; storageInfoListP( storageRepo(), resumeDataSub.backupPath, backupResumeCallback, &resumeDataSub, .sortOrder = sortOrderAsc); } break; } // Check files // ------------------------------------------------------------------------------------------------------------------------- case storageTypeFile: { // If the backup is compressed then strip off the extension before doing the lookup if (resumeData->compressed) manifestName = strSubN(manifestName, 0, strSize(manifestName) - sizeof(GZIP_EXT)); // Find the file in both manifests const ManifestFile *file = manifestFileFindDefault(resumeData->manifest, manifestName, NULL); const ManifestFile *fileResume = manifestFileFindDefault(resumeData->manifestResume, manifestName, NULL); // Check if the file can be resumed or must be removed const char *removeReason = NULL; if (file == NULL) removeReason = "missing in manifest"; else if (file->reference != NULL) removeReason = "reference in manifest"; else if (fileResume == NULL) removeReason = "missing in resumed manifest"; else if (fileResume->reference != NULL) removeReason = "reference in resumed manifest"; else if (fileResume->checksumSha1[0] == '\0') removeReason = "no checksum in resumed manifest"; else if (file->size != fileResume->size) removeReason = "mismatched size"; else if (!resumeData->delta && file->timestamp != fileResume->timestamp) removeReason = "mismatched timestamp"; else if (file->size == 0) // ??? don't resume zero size files because Perl wouldn't -- this can be removed after the migration) removeReason = "zero size"; else { manifestFileUpdate( resumeData->manifest, manifestName, file->size, fileResume->sizeRepo, fileResume->checksumSha1, NULL, fileResume->checksumPage, fileResume->checksumPageError, fileResume->checksumPageErrorList); } // Remove the file if it could not be resumed if (removeReason != NULL) { LOG_DETAIL_FMT( "remove file '%s' from resumed backup (%s)", strPtr(storagePathP(storageRepo(), backupPath)), removeReason); storageRemoveP(storageRepoWrite(), backupPath); } break; } // Remove links. We could check that the link has not changed and preserve it but it doesn't seem worth the extra testing. // The link will be recreated during the backup if needed. // ------------------------------------------------------------------------------------------------------------------------- case storageTypeLink: { storageRemoveP(storageRepoWrite(), backupPath); break; } // Remove special files // ------------------------------------------------------------------------------------------------------------------------- case storageTypeSpecial: { LOG_WARN_FMT("remove special file '%s' from resumed backup", strPtr(storagePathP(storageRepo(), backupPath))); storageRemoveP(storageRepoWrite(), backupPath); break; } } FUNCTION_TEST_RETURN_VOID(); } // Helper to find a resumable backup static const Manifest * backupResumeFind(const Manifest *manifest, const String *cipherPassBackup) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_TEST_PARAM(STRING, cipherPassBackup); FUNCTION_LOG_END(); ASSERT(manifest != NULL); Manifest *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { // Only the last backup can be resumed const StringList *backupList = strLstSort( storageListP( storageRepo(), STRDEF(STORAGE_REPO_BACKUP), .expression = backupRegExpP(.full = true, .differential = true, .incremental = true)), sortOrderDesc); if (strLstSize(backupList) > 0) { const String *backupLabel = strLstGet(backupList, 0); const String *manifestFile = strNewFmt(STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE, strPtr(backupLabel)); // Resumable backups have a copy of the manifest but no main if (storageExistsP(storageRepo(), strNewFmt("%s" INFO_COPY_EXT, strPtr(manifestFile))) && !storageExistsP(storageRepo(), manifestFile)) { bool usable = false; const String *reason = STRDEF("resume is disabled"); Manifest *manifestResume = NULL; // Attempt to read the manifest file in the resumable backup to see if it can be used. If any error at all occurs // then the backup will be considered unusable and a resume will not be attempted. if (cfgOptionBool(cfgOptResume)) { reason = strNewFmt("unable to read %s" INFO_COPY_EXT, strPtr(manifestFile)); TRY_BEGIN() { manifestResume = manifestLoadFile( storageRepo(), manifestFile, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cipherPassBackup); const ManifestData *manifestResumeData = manifestData(manifestResume); // Check pgBackRest version. This allows the resume implementation to be changed with each version of // pgBackRest at the expense of users losing a resumable back after an upgrade, which seems worth the cost. if (!strEq(manifestResumeData->backrestVersion, manifestData(manifest)->backrestVersion)) { reason = strNewFmt( "new " PROJECT_NAME " version '%s' does not match resumable " PROJECT_NAME " version '%s'", strPtr(manifestData(manifest)->backrestVersion), strPtr(manifestResumeData->backrestVersion)); } // Check backup type because new backup label must be the same type as resume backup label else if (manifestResumeData->backupType != backupType(cfgOptionStr(cfgOptType))) { reason = strNewFmt( "new backup type '%s' does not match resumable backup type '%s'", strPtr(cfgOptionStr(cfgOptType)), strPtr(backupTypeStr(manifestResumeData->backupType))); } // Check prior backup label ??? Do we really care about the prior backup label? else if (!strEq(manifestResumeData->backupLabelPrior, manifestData(manifest)->backupLabelPrior)) { reason = strNewFmt( "new prior backup label '%s' does not match resumable prior backup label '%s'", manifestResumeData->backupLabelPrior ? strPtr(manifestResumeData->backupLabelPrior) : "", manifestData(manifest)->backupLabelPrior ? strPtr(manifestData(manifest)->backupLabelPrior) : ""); } // Check compression. Compression can't be changed between backups so resume won't work either. else if (manifestResumeData->backupOptionCompress != cfgOptionBool(cfgOptCompress)) { reason = strNewFmt( "new compression '%s' does not match resumable compression '%s'", cvtBoolToConstZ(cfgOptionBool(cfgOptCompress)), cvtBoolToConstZ(manifestResumeData->backupOptionCompress)); } else usable = true; } CATCH_ANY() { } TRY_END(); } // If the backup is usable then return the manifest if (usable) { result = manifestMove(manifestResume, memContextPrior()); } // Else warn and remove the unusable backup else { LOG_WARN_FMT("backup '%s' cannot be resumed: %s", strPtr(backupLabel), strPtr(reason)); storagePathRemoveP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s", strPtr(backupLabel)), .recurse = true); } } } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(MANIFEST, result); } static bool backupResume(Manifest *manifest, const String *cipherPassBackup) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_TEST_PARAM(STRING, cipherPassBackup); FUNCTION_LOG_END(); ASSERT(manifest != NULL); bool result = false; MEM_CONTEXT_TEMP_BEGIN() { const Manifest *manifestResume = backupResumeFind(manifest, cipherPassBackup); // If a resumable backup was found set the label and cipher subpass if (manifestResume) { // Resuming result = true; // Set the backup label to the resumed backup manifestBackupLabelSet(manifest, manifestData(manifestResume)->backupLabel); LOG_WARN_FMT( "resumable backup %s of same type exists -- remove invalid files and resume", strPtr(manifestData(manifest)->backupLabel)); // If resuming a full backup then copy cipher subpass since it was used to encrypt the resumable files if (manifestData(manifest)->backupType == backupTypeFull) manifestCipherSubPassSet(manifest, manifestCipherSubPass(manifestResume)); // Clean resumed backup BackupResumeData resumeData = { .manifest = manifest, .manifestResume = manifestResume, .compressed = cfgOptionBool(cfgOptCompress), .delta = cfgOptionBool(cfgOptDelta), .backupPath = strNewFmt(STORAGE_REPO_BACKUP "/%s", strPtr(manifestData(manifest)->backupLabel)), }; storageInfoListP(storageRepo(), resumeData.backupPath, backupResumeCallback, &resumeData, .sortOrder = sortOrderAsc); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, result); } /*********************************************************************************************************************************** Start the backup ***********************************************************************************************************************************/ typedef struct BackupStartResult { String *lsn; String *walSegmentName; VariantList *dbList; VariantList *tablespaceList; } BackupStartResult; #define FUNCTION_LOG_BACKUP_START_RESULT_TYPE \ BackupStartResult #define FUNCTION_LOG_BACKUP_START_RESULT_FORMAT(value, buffer, bufferSize) \ objToLog(&value, "BackupStartResult", buffer, bufferSize) static BackupStartResult backupStart(BackupData *backupData) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(BACKUP_DATA, backupData); FUNCTION_LOG_END(); BackupStartResult result = {.lsn = NULL}; MEM_CONTEXT_TEMP_BEGIN() { // If this is an offline backup if (!cfgOptionBool(cfgOptOnline)) { // Check if Postgres is running and if so only continue when forced if (storageExistsP(backupData->storagePrimary, PG_FILE_POSTMASTERPID_STR)) { if (cfgOptionBool(cfgOptForce)) { LOG_WARN( "--no-" CFGOPT_ONLINE " passed and " PG_FILE_POSTMASTERPID " exists but --" CFGOPT_FORCE " was passed so" " backup will continue though it looks like the postmaster is running and the backup will probably not be" " consistent"); } else { THROW( PostmasterRunningError, "--no-" CFGOPT_ONLINE " passed but " PG_FILE_POSTMASTERPID " exists - looks like the postmaster is running." " Shutdown the postmaster and try again, or use --force."); } } } // Else start the backup normally else { // Check database configuration checkDbConfig(backupData->version, backupData->pgIdPrimary, backupData->dbPrimary, false); // Start backup LOG_INFO_FMT( "execute %sexclusive pg_start_backup(): backup begins after the %s checkpoint completes", backupData->version >= PG_VERSION_96 ? "non-" : "", cfgOptionBool(cfgOptStartFast) ? "requested immediate" : "next regular"); DbBackupStartResult dbBackupStartResult = dbBackupStart( backupData->dbPrimary, cfgOptionBool(cfgOptStartFast), cfgOptionBool(cfgOptStopAuto)); MEM_CONTEXT_PRIOR_BEGIN() { result.lsn = strDup(dbBackupStartResult.lsn); result.walSegmentName = strDup(dbBackupStartResult.walSegmentName); result.dbList = dbList(backupData->dbPrimary); result.tablespaceList = dbTablespaceList(backupData->dbPrimary); } MEM_CONTEXT_PRIOR_END(); LOG_INFO_FMT("backup start archive = %s, lsn = %s", strPtr(result.walSegmentName), strPtr(result.lsn)); // Wait for replay on the standby to catch up if (cfgOptionBool(cfgOptBackupStandby)) { LOG_INFO_FMT("wait for replay on the standby to reach %s", strPtr(result.lsn)); dbReplayWait(backupData->dbStandby, result.lsn, (TimeMSec)(cfgOptionDbl(cfgOptArchiveTimeout) * MSEC_PER_SEC)); LOG_INFO_FMT("replay on the standby reached %s", strPtr(result.lsn)); // The standby db object won't be used anymore so free it dbFree(backupData->dbStandby); // The standby protocol connection won't be used anymore so free it protocolRemoteFree(backupData->pgIdStandby); } } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BACKUP_START_RESULT, result); } /*********************************************************************************************************************************** Stop the backup ***********************************************************************************************************************************/ // Helper to write a file from a string to the repository and update the manifest static void backupFilePut(BackupData *backupData, Manifest *manifest, const String *name, time_t timestamp, const String *content) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(BACKUP_DATA, backupData); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_LOG_PARAM(STRING, name); FUNCTION_LOG_PARAM(TIME, timestamp); FUNCTION_LOG_PARAM(STRING, content); FUNCTION_LOG_END(); // Skip files with no content if (content != NULL) { MEM_CONTEXT_TEMP_BEGIN() { // Create file const String *manifestName = strNewFmt(MANIFEST_TARGET_PGDATA "/%s", strPtr(name)); bool compress = cfgOptionBool(cfgOptCompress); StorageWrite *write = storageNewWriteP( storageRepoWrite(), strNewFmt( STORAGE_REPO_BACKUP "/%s/%s%s", strPtr(manifestData(manifest)->backupLabel), strPtr(manifestName), compress ? "." GZIP_EXT : ""), .compressible = true); IoFilterGroup *filterGroup = ioWriteFilterGroup(storageWriteIo(write)); // Add SHA1 filter ioFilterGroupAdd(filterGroup, cryptoHashNew(HASH_TYPE_SHA1_STR)); // Add compression if (compress) { ioFilterGroupAdd( ioWriteFilterGroup(storageWriteIo(write)), gzipCompressNew((int)cfgOptionUInt(cfgOptCompressLevel), false)); } // Add encryption filter if required cipherBlockFilterGroupAdd( filterGroup, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cipherModeEncrypt, manifestCipherSubPass(manifest)); // Add size filter last to calculate repo size ioFilterGroupAdd(filterGroup, ioSizeNew()); // Write file storagePutP(write, BUFSTR(content)); // Use base path to set ownership and mode const ManifestPath *basePath = manifestPathFind(manifest, MANIFEST_TARGET_PGDATA_STR); // Add to manifest ManifestFile file = { .name = manifestName, .primary = true, .mode = basePath->mode & (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH), .user = basePath->user, .group = basePath->group, .size = strSize(content), .sizeRepo = varUInt64Force(ioFilterGroupResult(filterGroup, SIZE_FILTER_TYPE_STR)), .timestamp = timestamp, }; memcpy( file.checksumSha1, strPtr(varStr(ioFilterGroupResult(filterGroup, CRYPTO_HASH_FILTER_TYPE_STR))), HASH_TYPE_SHA1_SIZE_HEX + 1); manifestFileAdd(manifest, &file); LOG_DETAIL_FMT("wrote '%s' file returned from pg_stop_backup()", strPtr(name)); } MEM_CONTEXT_TEMP_END(); } FUNCTION_LOG_RETURN_VOID(); } /*--------------------------------------------------------------------------------------------------------------------------------*/ typedef struct BackupStopResult { String *lsn; String *walSegmentName; time_t timestamp; } BackupStopResult; #define FUNCTION_LOG_BACKUP_STOP_RESULT_TYPE \ BackupStopResult #define FUNCTION_LOG_BACKUP_STOP_RESULT_FORMAT(value, buffer, bufferSize) \ objToLog(&value, "BackupStopResult", buffer, bufferSize) static BackupStopResult backupStop(BackupData *backupData, Manifest *manifest) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(BACKUP_DATA, backupData); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_LOG_END(); BackupStopResult result = {.lsn = NULL}; if (cfgOptionBool(cfgOptOnline)) { MEM_CONTEXT_TEMP_BEGIN() { // Stop the backup LOG_INFO_FMT( "execute %sexclusive pg_stop_backup() and wait for all WAL segments to archive", backupData->version >= PG_VERSION_96 ? "non-" : ""); DbBackupStopResult dbBackupStopResult = dbBackupStop(backupData->dbPrimary); MEM_CONTEXT_PRIOR_BEGIN() { result.timestamp = backupTime(backupData, false); result.lsn = strDup(dbBackupStopResult.lsn); result.walSegmentName = strDup(dbBackupStopResult.walSegmentName); } MEM_CONTEXT_PRIOR_END(); LOG_INFO_FMT("backup stop archive = %s, lsn = %s", strPtr(result.walSegmentName), strPtr(result.lsn)); // Save files returned by stop backup backupFilePut(backupData, manifest, STRDEF(PG_FILE_BACKUPLABEL), result.timestamp, dbBackupStopResult.backupLabel); backupFilePut(backupData, manifest, STRDEF(PG_FILE_TABLESPACEMAP), result.timestamp, dbBackupStopResult.tablespaceMap); } MEM_CONTEXT_TEMP_END(); } else result.timestamp = backupTime(backupData, false); FUNCTION_LOG_RETURN(BACKUP_STOP_RESULT, result); } /*********************************************************************************************************************************** Log the results of a job and throw errors ***********************************************************************************************************************************/ static uint64_t backupJobResult( Manifest *manifest, const String *host, const String *const fileName, StringList *fileRemove, ProtocolParallelJob *const job, const uint64_t sizeTotal, uint64_t sizeCopied, unsigned int pageSize) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_LOG_PARAM(STRING, host); FUNCTION_LOG_PARAM(STRING, fileName); FUNCTION_LOG_PARAM(STRING_LIST, fileRemove); FUNCTION_LOG_PARAM(PROTOCOL_PARALLEL_JOB, job); FUNCTION_LOG_PARAM(UINT64, sizeTotal); FUNCTION_LOG_PARAM(UINT64, sizeCopied); FUNCTION_LOG_PARAM(UINT, pageSize); FUNCTION_LOG_END(); ASSERT(manifest != NULL); ASSERT(fileName != NULL); ASSERT(fileRemove != NULL); ASSERT(job != NULL); // The job was successful if (protocolParallelJobErrorCode(job) == 0) { MEM_CONTEXT_TEMP_BEGIN() { const ManifestFile *const file = manifestFileFind(manifest, varStr(protocolParallelJobKey(job))); const unsigned int processId = protocolParallelJobProcessId(job); const VariantList *const jobResult = varVarLst(protocolParallelJobResult(job)); const BackupCopyResult copyResult = (BackupCopyResult)varUIntForce(varLstGet(jobResult, 0)); const uint64_t copySize = varUInt64(varLstGet(jobResult, 1)); const uint64_t repoSize = varUInt64(varLstGet(jobResult, 2)); const String *const copyChecksum = varStr(varLstGet(jobResult, 3)); const KeyValue *const checksumPageResult = varKv(varLstGet(jobResult, 4)); // Increment backup copy progress sizeCopied += copySize; // Create log file name const String *fileLog = host == NULL ? fileName : strNewFmt("%s:%s", strPtr(host), strPtr(fileName)); // Format log strings const String *const logProgress = strNewFmt( "%s, %" PRIu64 "%%", strPtr(strSizeFormat(copySize)), sizeTotal == 0 ? 100 : sizeCopied * 100 / sizeTotal); const String *const logChecksum = copySize != 0 ? strNewFmt(" checksum %s", strPtr(copyChecksum)) : EMPTY_STR; // If the file is in a prior backup and nothing changed, just log it if (copyResult == backupCopyResultNoOp) { LOG_DETAIL_PID_FMT( processId, "match file from prior backup %s (%s)%s", strPtr(fileLog), strPtr(logProgress), strPtr(logChecksum)); } // Else if the repo matched the expect checksum, just log it else if (copyResult == backupCopyResultChecksum) { LOG_DETAIL_PID_FMT( processId, "checksum resumed file %s (%s)%s", strPtr(fileLog), strPtr(logProgress), strPtr(logChecksum)); } // Else if the file was removed during backup add it to the list of files to be removed from the manifest when the // backup is complete. It can't be removed right now because that will invalidate the pointers that are being used for // processing. else if (copyResult == backupCopyResultSkip) { LOG_DETAIL_PID_FMT(processId, "skip file removed by database %s", strPtr(fileLog)); strLstAdd(fileRemove, file->name); } // Else file was copied so update manifest else { // If the file had to be recopied then warn that there may be an issue with corruption in the repository // ??? This should really be below the message below for more context -- can be moved after the migration // ??? The name should be a pg path not manifest name -- can be fixed after the migration if (copyResult == backupCopyResultReCopy) { LOG_WARN_FMT( "resumed backup file %s does not have expected checksum %s. The file will be recopied and backup will" " continue but this may be an issue unless the resumed backup path in the repository is known to be" " corrupted.\n" "NOTE: this does not indicate a problem with the PostgreSQL page checksums.", strPtr(file->name), file->checksumSha1); } LOG_INFO_PID_FMT( processId, "backup file %s (%s)%s", strPtr(fileLog), strPtr(logProgress), strPtr(logChecksum)); // If the file had page checksums calculated during the copy ASSERT((!file->checksumPage && checksumPageResult == NULL) || (file->checksumPage && checksumPageResult != NULL)); bool checksumPageError = false; const VariantList *checksumPageErrorList = NULL; if (checksumPageResult != NULL) { // If the checksum was valid if (!varBool(kvGet(checksumPageResult, VARSTRDEF("valid")))) { checksumPageError = true; if (!varBool(kvGet(checksumPageResult, VARSTRDEF("align")))) { checksumPageErrorList = NULL; // ??? Update formatting after migration LOG_WARN_FMT( "page misalignment in file %s: file size %" PRIu64 " is not divisible by page size %u", strPtr(fileLog), copySize, pageSize); } else { // Format the page checksum errors checksumPageErrorList = varVarLst(kvGet(checksumPageResult, VARSTRDEF("error"))); ASSERT(varLstSize(checksumPageErrorList) > 0); String *error = strNew(""); unsigned int errorTotalMin = 0; for (unsigned int errorIdx = 0; errorIdx < varLstSize(checksumPageErrorList); errorIdx++) { const Variant *const errorItem = varLstGet(checksumPageErrorList, errorIdx); // Add a comma if this is not the first item if (errorIdx != 0) strCat(error, ", "); // If an error range if (varType(errorItem) == varTypeVariantList) { const VariantList *const errorItemList = varVarLst(errorItem); ASSERT(varLstSize(errorItemList) == 2); strCatFmt( error, "%" PRIu64 "-%" PRIu64, varUInt64(varLstGet(errorItemList, 0)), varUInt64(varLstGet(errorItemList, 1))); errorTotalMin += 2; } // Else a single error else { ASSERT(varType(errorItem) == varTypeUInt64); strCatFmt(error, "%" PRIu64, varUInt64(errorItem)); errorTotalMin++; } } // Make message plural when appropriate const String *const plural = errorTotalMin > 1 ? STRDEF("s") : EMPTY_STR; // ??? Update formatting after migration LOG_WARN_FMT( "invalid page checksum%s found in file %s at page%s %s", strPtr(plural), strPtr(fileLog), strPtr(plural), strPtr(error)); } } } // Update file info and remove any reference to the file's existence in a prior backup manifestFileUpdate( manifest, file->name, copySize, repoSize, strPtr(copyChecksum), VARSTR(NULL), file->checksumPage, checksumPageError, checksumPageErrorList); } } MEM_CONTEXT_TEMP_END(); // Free the job protocolParallelJobFree(job); } // Else the job errored else THROW_CODE(protocolParallelJobErrorCode(job), strPtr(protocolParallelJobErrorMessage(job))); FUNCTION_LOG_RETURN(UINT64, sizeCopied); } /*********************************************************************************************************************************** Save a copy of the backup manifest during processing to preserve checksums for a possible resume ***********************************************************************************************************************************/ static void backupManifestSaveCopy(Manifest *const manifest, const String *cipherPassBackup) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_TEST_PARAM(STRING, cipherPassBackup); FUNCTION_LOG_END(); ASSERT(manifest != NULL); MEM_CONTEXT_TEMP_BEGIN() { // Open file for write IoWrite *write = storageWriteIo( storageNewWriteP( storageRepoWrite(), strNewFmt( STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE INFO_COPY_EXT, strPtr(manifestData(manifest)->backupLabel)))); // Add encryption filter if required cipherBlockFilterGroupAdd( ioWriteFilterGroup(write), cipherType(cfgOptionStr(cfgOptRepoCipherType)), cipherModeEncrypt, cipherPassBackup); // Save file manifestSave(manifest, write); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Process the backup manifest ***********************************************************************************************************************************/ // Comparator to order ManifestFile objects by size then name static int backupProcessQueueComparator(const void *item1, const void *item2) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, item1); FUNCTION_TEST_PARAM_P(VOID, item2); FUNCTION_TEST_END(); ASSERT(item1 != NULL); ASSERT(item2 != NULL); // If the size differs then that's enough to determine order if ((*(ManifestFile **)item1)->size < (*(ManifestFile **)item2)->size) FUNCTION_TEST_RETURN(-1); else if ((*(ManifestFile **)item1)->size > (*(ManifestFile **)item2)->size) FUNCTION_TEST_RETURN(1); // If size is the same then use name to generate a deterministic ordering (names must be unique) FUNCTION_TEST_RETURN(strCmp((*(ManifestFile **)item1)->name, (*(ManifestFile **)item2)->name)); } // Helper to generate the backup queues static uint64_t backupProcessQueue(Manifest *manifest, List **queueList) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_LOG_PARAM_P(LIST, queueList); FUNCTION_LOG_END(); ASSERT(manifest != NULL); uint64_t result = 0; MEM_CONTEXT_TEMP_BEGIN() { // Create list of process queue *queueList = lstNew(sizeof(List *)); // Generate the list of targets StringList *targetList = strLstNew(); strLstAdd(targetList, STRDEF(MANIFEST_TARGET_PGDATA "/")); for (unsigned int targetIdx = 0; targetIdx < manifestTargetTotal(manifest); targetIdx++) { const ManifestTarget *target = manifestTarget(manifest, targetIdx); if (target->tablespaceId != 0) strLstAdd(targetList, strNewFmt("%s/", strPtr(target->name))); } // Generate the processing queues (there is always at least one) bool backupStandby = cfgOptionBool(cfgOptBackupStandby); unsigned int queueOffset = backupStandby ? 1 : 0; MEM_CONTEXT_BEGIN(lstMemContext(*queueList)) { for (unsigned int queueIdx = 0; queueIdx < strLstSize(targetList) + queueOffset; queueIdx++) { List *queue = lstNewP(sizeof(ManifestFile *), .comparator = backupProcessQueueComparator); lstAdd(*queueList, &queue); } } MEM_CONTEXT_END(); // Now put all files into the processing queues bool delta = cfgOptionBool(cfgOptDelta); uint64_t fileTotal = 0; bool pgControlFound = false; for (unsigned int fileIdx = 0; fileIdx < manifestFileTotal(manifest); fileIdx++) { const ManifestFile *file = manifestFile(manifest, fileIdx); // If the file is a reference it should only be backed up if delta and not zero size if (file->reference != NULL && (!delta || file->size == 0)) continue; // Is pg_control in the backup? if (strEq(file->name, STRDEF(MANIFEST_TARGET_PGDATA "/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL))) pgControlFound = true; // Files that must be copied from the primary are always put in queue 0 when backup from standby if (backupStandby && file->primary) { lstAdd(*(List **)lstGet(*queueList, 0), &file); } // Else find the correct queue by matching the file to a target else { // Find the target that contains this file unsigned int targetIdx = 0; do { // A target should always be found CHECK(targetIdx < strLstSize(targetList)); if (strBeginsWith(file->name, strLstGet(targetList, targetIdx))) break; targetIdx++; } while (1); // Add file to queue lstAdd(*(List **)lstGet(*queueList, targetIdx + queueOffset), &file); } // Add size to total result += file->size; // Increment total files fileTotal++; } // pg_control should always be in an online backup if (!pgControlFound && cfgOptionBool(cfgOptOnline)) { THROW( FileMissingError, PG_FILE_PGCONTROL " must be present in all online backups\n" "HINT: is something wrong with the clock or filesystem timestamps?"); } // If there are no files to backup then we'll exit with an error. This could happen if the database is down and backup is // called with --no-online twice in a row. if (fileTotal == 0) THROW(FileMissingError, "no files have changed since the last backup - this seems unlikely"); // Sort the queues for (unsigned int queueIdx = 0; queueIdx < lstSize(*queueList); queueIdx++) lstSort(*(List **)lstGet(*queueList, queueIdx), sortOrderDesc); // Move process queues to prior context lstMove(*queueList, memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(UINT64, result); } // Helper to caculate the next queue to scan based on the client index static int backupJobQueueNext(unsigned int clientIdx, int queueIdx, unsigned int queueTotal) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, clientIdx); FUNCTION_TEST_PARAM(INT, queueIdx); FUNCTION_TEST_PARAM(UINT, queueTotal); FUNCTION_TEST_END(); // Move (forward or back) to the next queue queueIdx += clientIdx % 2 ? -1 : 1; // Deal with wrapping on either end if (queueIdx < 0) FUNCTION_TEST_RETURN((int)queueTotal - 1); else if (queueIdx == (int)queueTotal) FUNCTION_TEST_RETURN(0); FUNCTION_TEST_RETURN(queueIdx); } // Callback to fetch backup jobs for the parallel executor typedef struct BackupJobData { const String *const backupLabel; // Backup label (defines the backup path) const bool backupStandby; // Backup from standby const String *const cipherSubPass; // Passphrase used to encrypt files in the backup const bool compress; // Is the backup compressed? const unsigned int compressLevel; // Compress level if backup is compressed const bool delta; // Is this a checksum delta backup? const uint64_t lsnStart; // Starting lsn for the backup List *queueList; // List of processing queues } BackupJobData; static ProtocolParallelJob *backupJobCallback(void *data, unsigned int clientIdx) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, data); FUNCTION_TEST_PARAM(UINT, clientIdx); FUNCTION_TEST_END(); ASSERT(data != NULL); ProtocolParallelJob *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { // Get a new job if there are any left BackupJobData *jobData = data; // Determine where to begin scanning the queue (we'll stop when we get back here). When copying from the primary during // backup from standby only queue 0 will be used. unsigned int queueOffset = jobData->backupStandby && clientIdx > 0 ? 1 : 0; int queueIdx = jobData->backupStandby && clientIdx == 0 ? 0 : (int)(clientIdx % (lstSize(jobData->queueList) - queueOffset)); int queueEnd = queueIdx; do { List *queue = *(List **)lstGet(jobData->queueList, (unsigned int)queueIdx + queueOffset); if (lstSize(queue) > 0) { const ManifestFile *file = *(ManifestFile **)lstGet(queue, 0); // Create backup job ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_BACKUP_FILE_STR); protocolCommandParamAdd(command, VARSTR(manifestPathPg(file->name))); protocolCommandParamAdd( command, VARBOOL(!strEq(file->name, STRDEF(MANIFEST_TARGET_PGDATA "/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL)))); protocolCommandParamAdd(command, VARUINT64(file->size)); protocolCommandParamAdd(command, file->checksumSha1[0] != 0 ? VARSTRZ(file->checksumSha1) : NULL); protocolCommandParamAdd(command, VARBOOL(file->checksumPage)); protocolCommandParamAdd(command, VARUINT64(jobData->lsnStart)); protocolCommandParamAdd(command, VARSTR(file->name)); protocolCommandParamAdd(command, VARBOOL(file->reference != NULL)); protocolCommandParamAdd(command, VARBOOL(jobData->compress)); protocolCommandParamAdd(command, VARUINT(jobData->compressLevel)); protocolCommandParamAdd(command, VARSTR(jobData->backupLabel)); protocolCommandParamAdd(command, VARBOOL(jobData->delta)); protocolCommandParamAdd(command, VARSTR(jobData->cipherSubPass)); // Remove job from the queue lstRemoveIdx(queue, 0); // Assign job to result result = protocolParallelJobMove(protocolParallelJobNew(VARSTR(file->name), command), memContextPrior()); // Break out of the loop early since we found a job break; } // Don't get next queue when copying from primary during backup from standby since the primary only has one queue if (!jobData->backupStandby || clientIdx > 0) queueIdx = backupJobQueueNext(clientIdx, queueIdx, lstSize(jobData->queueList) - queueOffset); } while (queueIdx != queueEnd); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } static void backupProcess(BackupData *backupData, Manifest *manifest, const String *lsnStart, const String *cipherPassBackup) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(BACKUP_DATA, backupData); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_LOG_PARAM(STRING, lsnStart); FUNCTION_TEST_PARAM(STRING, cipherPassBackup); FUNCTION_LOG_END(); ASSERT(manifest != NULL); MEM_CONTEXT_TEMP_BEGIN() { // Get backup info const BackupType backupType = manifestData(manifest)->backupType; const String *const backupLabel = manifestData(manifest)->backupLabel; const String *const backupPathExp = strNewFmt(STORAGE_REPO_BACKUP "/%s", strPtr(backupLabel)); bool hardLink = cfgOptionBool(cfgOptRepoHardlink) && storageFeature(storageRepoWrite(), storageFeatureHardLink); bool backupStandby = cfgOptionBool(cfgOptBackupStandby); // If this is a full backup or hard-linked and paths are supported then create all paths explicitly so that empty paths will // exist in to repo. Also create tablspace symlinks when symlinks are available, This makes it possible for the user to // make a copy of the backup path and get a valid cluster. if (backupType == backupTypeFull || hardLink) { // Create paths when available if (storageFeature(storageRepoWrite(), storageFeaturePath)) { for (unsigned int pathIdx = 0; pathIdx < manifestPathTotal(manifest); pathIdx++) { storagePathCreateP( storageRepoWrite(), strNewFmt("%s/%s", strPtr(backupPathExp), strPtr(manifestPath(manifest, pathIdx)->name))); } } // Create tablespace symlinks when available if (storageFeature(storageRepoWrite(), storageFeatureSymLink)) { for (unsigned int targetIdx = 0; targetIdx < manifestTargetTotal(manifest); targetIdx++) { const ManifestTarget *const target = manifestTarget(manifest, targetIdx); if (target->tablespaceId != 0) { const String *const link = storagePathP( storageRepo(), strNewFmt("%s/" MANIFEST_TARGET_PGDATA "/%s", strPtr(backupPathExp), strPtr(target->name))); const String *const linkDestination = strNewFmt( "../../" MANIFEST_TARGET_PGTBLSPC "/%u", target->tablespaceId); THROW_ON_SYS_ERROR_FMT( symlink(strPtr(linkDestination), strPtr(link)) == -1, FileOpenError, "unable to create symlink '%s' to '%s'", strPtr(link), strPtr(linkDestination)); } } } } // Generate processing queues BackupJobData jobData = { .backupLabel = backupLabel, .backupStandby = backupStandby, .compress = cfgOptionBool(cfgOptCompress), .compressLevel = cfgOptionUInt(cfgOptCompressLevel), .cipherSubPass = manifestCipherSubPass(manifest), .delta = cfgOptionBool(cfgOptDelta), .lsnStart = cfgOptionBool(cfgOptOnline) ? pgLsnFromStr(lsnStart) : 0xFFFFFFFFFFFFFFFF, }; uint64_t sizeTotal = backupProcessQueue(manifest, &jobData.queueList); // Create the parallel executor ProtocolParallel *parallelExec = protocolParallelNew( (TimeMSec)(cfgOptionDbl(cfgOptProtocolTimeout) * MSEC_PER_SEC) / 2, backupJobCallback, &jobData); // First client is always on the primary protocolParallelClientAdd(parallelExec, protocolLocalGet(protocolStorageTypePg, backupData->pgIdPrimary, 1)); // Create the rest of the clients on the primary or standby depending on the value of backup-standby. Note that standby // backups don't count the primary client in process-max. unsigned int processMax = cfgOptionUInt(cfgOptProcessMax) + (backupStandby ? 1 : 0); unsigned int pgId = backupStandby ? backupData->pgIdStandby : backupData->pgIdPrimary; for (unsigned int processIdx = 2; processIdx <= processMax; processIdx++) protocolParallelClientAdd(parallelExec, protocolLocalGet(protocolStorageTypePg, pgId, processIdx)); // Maintain a list of files that need to be removed from the manifest when the backup is complete StringList *fileRemove = strLstNew(); // Determine how often the manifest will be saved (every one percent or threshold size, whichever is greater) uint64_t manifestSaveLast = 0; uint64_t manifestSaveSize = sizeTotal / 100; if (manifestSaveSize < cfgOptionUInt64(cfgOptManifestSaveThreshold)) manifestSaveSize = cfgOptionUInt64(cfgOptManifestSaveThreshold); // Process jobs uint64_t sizeCopied = 0; MEM_CONTEXT_TEMP_RESET_BEGIN() { do { unsigned int completed = protocolParallelProcess(parallelExec); for (unsigned int jobIdx = 0; jobIdx < completed; jobIdx++) { ProtocolParallelJob *job = protocolParallelResult(parallelExec); sizeCopied = backupJobResult( manifest, backupStandby && protocolParallelJobProcessId(job) > 1 ? backupData->hostStandby : backupData->hostPrimary, storagePathP( protocolParallelJobProcessId(job) > 1 ? storagePgId(pgId) : backupData->storagePrimary, manifestPathPg(manifestFileFind(manifest, varStr(protocolParallelJobKey(job)))->name)), fileRemove, job, sizeTotal, sizeCopied, backupData->pageSize); } // A keep-alive is required here for the remote holding open the backup connection protocolKeepAlive(); // Save the manifest periodically to preserve checksums for resume if (sizeCopied - manifestSaveLast >= manifestSaveSize) { backupManifestSaveCopy(manifest, cipherPassBackup); manifestSaveLast = sizeCopied; } // Reset the memory context occasionally so we don't use too much memory or slow down processing MEM_CONTEXT_TEMP_RESET(1000); } while (!protocolParallelDone(parallelExec)); } MEM_CONTEXT_TEMP_END(); #ifdef DEBUG // Ensure that all processing queues are empty for (unsigned int queueIdx = 0; queueIdx < lstSize(jobData.queueList); queueIdx++) ASSERT(lstSize(*(List **)lstGet(jobData.queueList, queueIdx)) == 0); #endif // Remove files from the manifest that were removed during the backup. This must happen after processing to avoid // invalidating pointers by deleting items from the list. for (unsigned int fileRemoveIdx = 0; fileRemoveIdx < strLstSize(fileRemove); fileRemoveIdx++) manifestFileRemove(manifest, strLstGet(fileRemove, fileRemoveIdx)); // Log references or create hardlinks for all files const char *const compressExt = jobData.compress ? "." GZIP_EXT : ""; for (unsigned int fileIdx = 0; fileIdx < manifestFileTotal(manifest); fileIdx++) { const ManifestFile *const file = manifestFile(manifest, fileIdx); // If the file has a reference, then it was not copied since it can be retrieved from the referenced backup. However, // if hardlinking is enabled the link will need to be created. if (file->reference != NULL) { // If hardlinking is enabled then create a hardlink for files that have not changed since the last backup if (hardLink) { LOG_DETAIL_FMT("hardlink %s to %s", strPtr(file->name), strPtr(file->reference)); const String *const linkName = storagePathP( storageRepo(), strNewFmt("%s/%s%s", strPtr(backupPathExp), strPtr(file->name), compressExt)); const String *const linkDestination = storagePathP( storageRepo(), strNewFmt(STORAGE_REPO_BACKUP "/%s/%s%s", strPtr(file->reference), strPtr(file->name), compressExt)); THROW_ON_SYS_ERROR_FMT( link(strPtr(linkDestination), strPtr(linkName)) == -1, FileOpenError, "unable to create hardlink '%s' to '%s'", strPtr(linkName), strPtr(linkDestination)); } // Else log the reference. With delta, it is possible that references may have been removed if a file needed to be // recopied. else LOG_DETAIL_FMT("reference %s to %s", strPtr(file->name), strPtr(file->reference)); } } // Sync backup paths if required if (storageFeature(storageRepoWrite(), storageFeaturePathSync)) { for (unsigned int pathIdx = 0; pathIdx < manifestPathTotal(manifest); pathIdx++) { const String *const path = strNewFmt("%s/%s", strPtr(backupPathExp), strPtr(manifestPath(manifest, pathIdx)->name)); if (backupType == backupTypeFull || hardLink || storagePathExistsP(storageRepo(), path)) storagePathSyncP(storageRepoWrite(), path); } } LOG_INFO_FMT("%s backup size = %s", strPtr(backupTypeStr(backupType)), strPtr(strSizeFormat(sizeTotal))); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Check and copy WAL segments required to make the backup consistent ***********************************************************************************************************************************/ static void backupArchiveCheckCopy(Manifest *manifest, unsigned int walSegmentSize, const String *cipherPassBackup) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_LOG_PARAM(UINT, walSegmentSize); FUNCTION_TEST_PARAM(STRING, cipherPassBackup); FUNCTION_LOG_END(); ASSERT(manifest != NULL); // If archive logs are required to complete the backup, then check them. This is the default, but can be overridden if the // archive logs are going to a different server. Be careful of disabling this option because there is no way to verify that the // backup will be consistent - at least not here. if (cfgOptionBool(cfgOptOnline) && cfgOptionBool(cfgOptArchiveCheck)) { MEM_CONTEXT_TEMP_BEGIN() { unsigned int timeline = cvtZToUIntBase(strPtr(strSubN(manifestData(manifest)->archiveStart, 0, 8)), 16); uint64_t lsnStart = pgLsnFromStr(manifestData(manifest)->lsnStart); uint64_t lsnStop = pgLsnFromStr(manifestData(manifest)->lsnStop); LOG_INFO_FMT( "check archive for segment(s) %s:%s", strPtr(pgLsnToWalSegment(timeline, lsnStart, walSegmentSize)), strPtr(pgLsnToWalSegment(timeline, lsnStop, walSegmentSize))); // Save the backup manifest before getting archive logs in case of failure backupManifestSaveCopy(manifest, cipherPassBackup); // Use base path to set ownership and mode const ManifestPath *basePath = manifestPathFind(manifest, MANIFEST_TARGET_PGDATA_STR); // Loop through all the segments in the lsn range InfoArchive *infoArchive = infoArchiveLoadFile( storageRepo(), INFO_ARCHIVE_PATH_FILE_STR, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); const String *archiveId = infoArchiveId(infoArchive); StringList *walSegmentList = pgLsnRangeToWalSegmentList( manifestData(manifest)->pgVersion, timeline, lsnStart, lsnStop, walSegmentSize); for (unsigned int walSegmentIdx = 0; walSegmentIdx < strLstSize(walSegmentList); walSegmentIdx++) { const String *walSegment = strLstGet(walSegmentList, walSegmentIdx); // Find the actual wal segment file in the archive const String *archiveFile = walSegmentFind( storageRepo(), archiveId, walSegment, (TimeMSec)(cfgOptionDbl(cfgOptArchiveTimeout) * MSEC_PER_SEC)); if (cfgOptionBool(cfgOptArchiveCopy)) { // Is the archive file compressed? bool archiveCompressed = strEndsWithZ(archiveFile, "." GZIP_EXT); // Open the archive file StorageRead *read = storageNewReadP( storageRepo(), strNewFmt(STORAGE_REPO_ARCHIVE "/%s/%s", strPtr(archiveId), strPtr(archiveFile))); IoFilterGroup *filterGroup = ioReadFilterGroup(storageReadIo(read)); // Decrypt with archive key if encrypted cipherBlockFilterGroupAdd( filterGroup, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cipherModeDecrypt, infoArchiveCipherPass(infoArchive)); // Compress or decompress if archive and backup do not have the same compression settings if (archiveCompressed != cfgOptionBool(cfgOptCompress)) { if (archiveCompressed) ioFilterGroupAdd(ioReadFilterGroup(storageReadIo(read)), gzipDecompressNew(false)); else ioFilterGroupAdd(filterGroup, gzipCompressNew(cfgOptionInt(cfgOptCompressLevel), false)); } // Encrypt with backup key if encrypted cipherBlockFilterGroupAdd( filterGroup, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cipherModeEncrypt, manifestCipherSubPass(manifest)); // Add size filter last to calculate repo size ioFilterGroupAdd(filterGroup, ioSizeNew()); // Copy the file const String *manifestName = strNewFmt( MANIFEST_TARGET_PGDATA "/%s/%s", strPtr(pgWalPath(manifestData(manifest)->pgVersion)), strPtr(walSegment)); storageCopyP( read, storageNewWriteP( storageRepoWrite(), strNewFmt( STORAGE_REPO_BACKUP "/%s/%s%s", strPtr(manifestData(manifest)->backupLabel), strPtr(manifestName), cfgOptionBool(cfgOptCompress) ? "." GZIP_EXT : ""))); // Add to manifest ManifestFile file = { .name = manifestName, .primary = true, .mode = basePath->mode & (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH), .user = basePath->user, .group = basePath->group, .size = walSegmentSize, .sizeRepo = varUInt64Force(ioFilterGroupResult(filterGroup, SIZE_FILTER_TYPE_STR)), .timestamp = manifestData(manifest)->backupTimestampStop, }; memcpy(file.checksumSha1, strPtr(strSubN(archiveFile, 25, 40)), HASH_TYPE_SHA1_SIZE_HEX + 1); manifestFileAdd(manifest, &file); } } } MEM_CONTEXT_TEMP_END(); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Save and update all files required to complete the backup ***********************************************************************************************************************************/ static void backupComplete(InfoBackup *const infoBackup, Manifest *const manifest) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_BACKUP, infoBackup); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_LOG_END(); ASSERT(manifest != NULL); MEM_CONTEXT_TEMP_BEGIN() { const String *const backupLabel = manifestData(manifest)->backupLabel; // Validation and final save of the backup manifest. Validate in strict mode to catch as many potential issues as possible. // ------------------------------------------------------------------------------------------------------------------------- manifestValidate(manifest, true); backupManifestSaveCopy(manifest, infoPgCipherPass(infoBackupPg(infoBackup))); storageCopy( storageNewReadP( storageRepo(), strNewFmt(STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE INFO_COPY_EXT, strPtr(backupLabel))), storageNewWriteP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE, strPtr(backupLabel)))); // Copy a compressed version of the manifest to history. If the repo is encrypted then the passphrase to open the manifest // is required. We can't just do a straight copy since the destination needs to be compressed and that must happen before // encryption in order to be efficient. Compression will always be gz for compatibility and since it is always available. // ------------------------------------------------------------------------------------------------------------------------- StorageRead *manifestRead = storageNewReadP( storageRepo(), strNewFmt(STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE, strPtr(backupLabel))); cipherBlockFilterGroupAdd( ioReadFilterGroup(storageReadIo(manifestRead)), cipherType(cfgOptionStr(cfgOptRepoCipherType)), cipherModeDecrypt, infoPgCipherPass(infoBackupPg(infoBackup))); StorageWrite *manifestWrite = storageNewWriteP( storageRepoWrite(), strNewFmt( STORAGE_REPO_BACKUP "/" BACKUP_PATH_HISTORY "/%s/%s.manifest." GZIP_EXT, strPtr(strSubN(backupLabel, 0, 4)), strPtr(backupLabel))); ioFilterGroupAdd(ioWriteFilterGroup(storageWriteIo(manifestWrite)), gzipCompressNew(9, false)); cipherBlockFilterGroupAdd( ioWriteFilterGroup(storageWriteIo(manifestWrite)), cipherType(cfgOptionStr(cfgOptRepoCipherType)), cipherModeEncrypt, infoPgCipherPass(infoBackupPg(infoBackup))); storageCopyP(manifestRead, manifestWrite); // Sync history path if required if (storageFeature(storageRepoWrite(), storageFeaturePathSync)) storagePathSyncP(storageRepoWrite(), STRDEF(STORAGE_REPO_BACKUP "/" BACKUP_PATH_HISTORY)); // Create a symlink to the most recent backup if supported. This link is purely informational for the user and is never // used by us since symlinks are not supported on all storage types. // ------------------------------------------------------------------------------------------------------------------------- const String *const latestLink = storagePathP(storageRepo(), STRDEF(STORAGE_REPO_BACKUP "/" BACKUP_LINK_LATEST)); // Remove an existing latest link/file in case symlink capabilities have changed storageRemoveP(storageRepoWrite(), latestLink); if (storageFeature(storageRepoWrite(), storageFeatureSymLink)) { THROW_ON_SYS_ERROR_FMT( symlink(strPtr(backupLabel), strPtr(latestLink)) == -1, FileOpenError, "unable to create symlink '%s' to '%s'", strPtr(latestLink), strPtr(backupLabel)); } // Sync backup path if required if (storageFeature(storageRepoWrite(), storageFeaturePathSync)) storagePathSyncP(storageRepoWrite(), STORAGE_REPO_BACKUP_STR); // Add manifest and save backup.info (infoBackupSaveFile() is responsible for proper syncing) // ------------------------------------------------------------------------------------------------------------------------- infoBackupDataAdd(infoBackup, manifest); infoBackupSaveFile( infoBackup, storageRepoWrite(), INFO_BACKUP_PATH_FILE_STR, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Make a backup ***********************************************************************************************************************************/ void cmdBackup(void) { FUNCTION_LOG_VOID(logLevelDebug); // Verify the repo is local repoIsLocalVerify(); // Test for stop file lockStopTest(); MEM_CONTEXT_TEMP_BEGIN() { // Load backup.info InfoBackup *infoBackup = infoBackupLoadFileReconstruct( storageRepo(), INFO_BACKUP_PATH_FILE_STR, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); InfoPgData infoPg = infoPgDataCurrent(infoBackupPg(infoBackup)); const String *cipherPassBackup = infoPgCipherPass(infoBackupPg(infoBackup)); // Get pg storage and database objects BackupData *backupData = backupInit(infoBackup); // Get the start timestamp which will later be written into the manifest to track total backup time time_t timestampStart = backupTime(backupData, false); // Check if there is a prior manifest when backup type is diff/incr Manifest *manifestPrior = backupBuildIncrPrior(infoBackup); // Start the backup BackupStartResult backupStartResult = backupStart(backupData); // Build the manifest Manifest *manifest = manifestNewBuild( backupData->storagePrimary, infoPg.version, cfgOptionBool(cfgOptOnline), cfgOptionBool(cfgOptChecksumPage), strLstNewVarLst(cfgOptionLst(cfgOptExclude)), backupStartResult.tablespaceList); // Validate the manifest using the copy start time manifestBuildValidate(manifest, cfgOptionBool(cfgOptDelta), backupTime(backupData, true), cfgOptionBool(cfgOptCompress)); // Build an incremental backup if type is not full (manifestPrior will be freed in this call) if (!backupBuildIncr(infoBackup, manifest, manifestPrior, backupStartResult.walSegmentName)) manifestCipherSubPassSet(manifest, cipherPassGen(cipherType(cfgOptionStr(cfgOptRepoCipherType)))); // Set delta if it is not already set and the manifest requires it if (!cfgOptionBool(cfgOptDelta) && varBool(manifestData(manifest)->backupOptionDelta)) cfgOptionSet(cfgOptDelta, cfgSourceParam, BOOL_TRUE_VAR); // Resume a backup when possible if (!backupResume(manifest, cipherPassBackup)) { manifestBackupLabelSet( manifest, backupLabelCreate(backupType(cfgOptionStr(cfgOptType)), manifestData(manifest)->backupLabelPrior, timestampStart)); } // Save the manifest before processing starts backupManifestSaveCopy(manifest, cipherPassBackup); // Process the backup manifest backupProcess(backupData, manifest, backupStartResult.lsn, cipherPassBackup); // Stop the backup BackupStopResult backupStopResult = backupStop(backupData, manifest); // Complete manifest manifestBuildComplete( manifest, timestampStart, backupStartResult.lsn, backupStartResult.walSegmentName, backupStopResult.timestamp, backupStopResult.lsn, backupStopResult.walSegmentName, infoPg.id, infoPg.systemId, backupStartResult.dbList, cfgOptionBool(cfgOptOnline) && cfgOptionBool(cfgOptArchiveCheck), !cfgOptionBool(cfgOptOnline) || (cfgOptionBool(cfgOptArchiveCheck) && cfgOptionBool(cfgOptArchiveCopy)), cfgOptionUInt(cfgOptBufferSize), cfgOptionUInt(cfgOptCompressLevel), cfgOptionUInt(cfgOptCompressLevelNetwork), cfgOptionBool(cfgOptRepoHardlink), cfgOptionUInt(cfgOptProcessMax), cfgOptionBool(cfgOptBackupStandby)); // The primary db object won't be used anymore so free it dbFree(backupData->dbPrimary); // The primary protocol connection won't be used anymore so free it. Any further access to the primary storage object may // result in an error (likely eof). protocolRemoteFree(backupData->pgIdPrimary); // Check and copy WAL segments required to make the backup consistent backupArchiveCheckCopy(manifest, backupData->walSegmentSize, cipherPassBackup); // Complete the backup LOG_INFO_FMT("new backup label = %s", strPtr(manifestData(manifest)->backupLabel)); backupComplete(infoBackup, manifest); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/command/backup/backup.h000066400000000000000000000012141362531507100222750ustar00rootroot00000000000000/*********************************************************************************************************************************** Backup Command ***********************************************************************************************************************************/ #ifndef COMMAND_BACKUP_BACKUP_H #define COMMAND_BACKUP_BACKUP_H /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void cmdBackup(void); #endif pgbackrest-release-2.24/src/command/backup/common.c000066400000000000000000000107201362531507100223150ustar00rootroot00000000000000/*********************************************************************************************************************************** Common Functions and Definitions for Backup and Expire Commands ***********************************************************************************************************************************/ #include "build.auto.h" #include "command/backup/common.h" #include "common/debug.h" #include "common/log.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define DATE_TIME_REGEX "[0-9]{8}\\-[0-9]{6}" STRING_EXTERN(BACKUP_TYPE_FULL_STR, BACKUP_TYPE_FULL); STRING_EXTERN(BACKUP_TYPE_DIFF_STR, BACKUP_TYPE_DIFF); STRING_EXTERN(BACKUP_TYPE_INCR_STR, BACKUP_TYPE_INCR); /*********************************************************************************************************************************** Returns an anchored regex string for filtering backups based on the type (at least one type is required to be true) ***********************************************************************************************************************************/ String * backupRegExp(BackupRegExpParam param) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(BOOL, param.full); FUNCTION_LOG_PARAM(BOOL, param.differential); FUNCTION_LOG_PARAM(BOOL, param.incremental); FUNCTION_LOG_PARAM(BOOL, param.noAnchorEnd); FUNCTION_LOG_END(); ASSERT(param.full || param.differential || param.incremental); String *result = NULL; // Start the expression with the anchor, date/time regexp and full backup indicator result = strNew("^" DATE_TIME_REGEX "F"); // Add the diff and/or incr expressions if requested if (param.differential || param.incremental) { // If full requested then diff/incr is optional if (param.full) { strCat(result, "(\\_"); } // Else diff/incr is required else { strCat(result, "\\_"); } // Append date/time regexp for diff/incr strCat(result, DATE_TIME_REGEX); // Filter on both diff/incr if (param.differential && param.incremental) { strCat(result, "(D|I)"); } // Else just diff else if (param.differential) { strCatChr(result, 'D'); } // Else just incr else { strCatChr(result, 'I'); } // If full requested then diff/incr is optional if (param.full) { strCat(result, "){0,1}"); } } // Append the end anchor if (!param.noAnchorEnd) strCat(result, "$"); FUNCTION_LOG_RETURN(STRING, result); } /*********************************************************************************************************************************** Convert text backup type to an enum and back ***********************************************************************************************************************************/ BackupType backupType(const String *type) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, type); FUNCTION_TEST_END(); ASSERT(type != NULL); BackupType result; if (strEq(type, BACKUP_TYPE_FULL_STR)) result = backupTypeFull; else if (strEq(type, BACKUP_TYPE_DIFF_STR)) result = backupTypeDiff; else if (strEq(type, BACKUP_TYPE_INCR_STR)) result = backupTypeIncr; else THROW_FMT(AssertError, "invalid backup type '%s'", strPtr(type)); FUNCTION_TEST_RETURN(result); } const String *backupTypeStr(BackupType type) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, type); FUNCTION_TEST_END(); ASSERT(type <= backupTypeIncr); const String *result = NULL; switch (type) { case backupTypeFull: { result = BACKUP_TYPE_FULL_STR; break; } case backupTypeDiff: { result = BACKUP_TYPE_DIFF_STR; break; } case backupTypeIncr: { result = BACKUP_TYPE_INCR_STR; break; } } FUNCTION_TEST_RETURN(result); } pgbackrest-release-2.24/src/command/backup/common.h000066400000000000000000000044571362531507100223340ustar00rootroot00000000000000/*********************************************************************************************************************************** Common Functions and Definitions for Backup and Expire Commands ***********************************************************************************************************************************/ #ifndef COMMAND_BACKUP_COMMON_H #define COMMAND_BACKUP_COMMON_H #include #include "common/type/string.h" /*********************************************************************************************************************************** Backup type enum and constants ***********************************************************************************************************************************/ typedef enum { backupTypeFull, backupTypeDiff, backupTypeIncr, } BackupType; #define BACKUP_TYPE_FULL "full" STRING_DECLARE(BACKUP_TYPE_FULL_STR); #define BACKUP_TYPE_DIFF "diff" STRING_DECLARE(BACKUP_TYPE_DIFF_STR); #define BACKUP_TYPE_INCR "incr" STRING_DECLARE(BACKUP_TYPE_INCR_STR); /*********************************************************************************************************************************** Returns an anchored regex string for filtering backups based on the type (at least one type is required to be true) ***********************************************************************************************************************************/ typedef struct BackupRegExpParam { bool full; bool differential; bool incremental; bool noAnchorEnd; } BackupRegExpParam; #define backupRegExpP(...) \ backupRegExp((BackupRegExpParam){__VA_ARGS__}) String *backupRegExp(BackupRegExpParam param); /*********************************************************************************************************************************** Convert text backup type to an enum and back ***********************************************************************************************************************************/ BackupType backupType(const String *type); const String *backupTypeStr(BackupType type); #endif pgbackrest-release-2.24/src/command/backup/file.c000066400000000000000000000333761362531507100217600ustar00rootroot00000000000000/*********************************************************************************************************************************** Backup File ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "command/backup/file.h" #include "command/backup/pageChecksum.h" #include "common/compress/gzip/common.h" #include "common/compress/gzip/compress.h" #include "common/compress/gzip/decompress.h" #include "common/crypto/cipherBlock.h" #include "common/crypto/hash.h" #include "common/debug.h" #include "common/io/filter/group.h" #include "common/io/filter/size.h" #include "common/io/io.h" #include "common/log.h" #include "common/regExp.h" #include "common/type/convert.h" #include "postgres/interface.h" #include "storage/helper.h" /*********************************************************************************************************************************** Helper functions ***********************************************************************************************************************************/ static unsigned int segmentNumber(const String *pgFile) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, pgFile); FUNCTION_TEST_END(); // Determine which segment number this is by checking for a numeric extension. No extension means segment 0. FUNCTION_TEST_RETURN(regExpMatchOne(STRDEF("\\.[0-9]+$"), pgFile) ? cvtZToUInt(strrchr(strPtr(pgFile), '.') + 1) : 0); } /*********************************************************************************************************************************** Copy a file from the PostgreSQL data directory to the repository ***********************************************************************************************************************************/ BackupFileResult backupFile( const String *pgFile, bool pgFileIgnoreMissing, uint64_t pgFileSize, const String *pgFileChecksum, bool pgFileChecksumPage, uint64_t pgFileChecksumPageLsnLimit, const String *repoFile, bool repoFileHasReference, bool repoFileCompress, unsigned int repoFileCompressLevel, const String *backupLabel, bool delta, CipherType cipherType, const String *cipherPass) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, pgFile); // Database file to copy to the repo FUNCTION_LOG_PARAM(BOOL, pgFileIgnoreMissing); // Is it OK if the database file is missing? FUNCTION_LOG_PARAM(UINT64, pgFileSize); // Size of the database file FUNCTION_LOG_PARAM(STRING, pgFileChecksum); // Checksum to verify the database file FUNCTION_LOG_PARAM(BOOL, pgFileChecksumPage); // Should page checksums be validated FUNCTION_LOG_PARAM(UINT64, pgFileChecksumPageLsnLimit); // Upper LSN limit to which page checksums must be valid FUNCTION_LOG_PARAM(STRING, repoFile); // Destination in the repo to copy the pg file FUNCTION_LOG_PARAM(BOOL, repoFileHasReference); // Does the repo file exist in a prior backup in the set? FUNCTION_LOG_PARAM(BOOL, repoFileCompress); // Compress destination file FUNCTION_LOG_PARAM(UINT, repoFileCompressLevel); // Compression level for destination file FUNCTION_LOG_PARAM(STRING, backupLabel); // Label of current backup FUNCTION_LOG_PARAM(BOOL, delta); // Is the delta option on? FUNCTION_LOG_PARAM(ENUM, cipherType); // Encryption type FUNCTION_TEST_PARAM(STRING, cipherPass); // Password to access the repo file if encrypted FUNCTION_LOG_END(); ASSERT(pgFile != NULL); ASSERT(repoFile != NULL); ASSERT(backupLabel != NULL); ASSERT((cipherType == cipherTypeNone && cipherPass == NULL) || (cipherType != cipherTypeNone && cipherPass != NULL)); // Backup file results BackupFileResult result = {.backupCopyResult = backupCopyResultCopy}; MEM_CONTEXT_TEMP_BEGIN() { // Generate complete repo path and add compression extension if needed const String *repoPathFile = strNewFmt( STORAGE_REPO_BACKUP "/%s/%s%s", strPtr(backupLabel), strPtr(repoFile), repoFileCompress ? "." GZIP_EXT : ""); // If checksum is defined then the file needs to be checked. If delta option then check the DB and possibly the repo, else // just check the repo. if (pgFileChecksum != NULL) { // Does the file in pg match the checksum and size passed? bool pgFileMatch = false; // If delta, then check the DB checksum and possibly the repo. If the checksum does not match in either case then // recopy. if (delta) { // Generate checksum/size for the pg file IoRead *read = storageReadIo(storageNewReadP(storagePg(), pgFile, .ignoreMissing = pgFileIgnoreMissing)); ioFilterGroupAdd(ioReadFilterGroup(read), cryptoHashNew(HASH_TYPE_SHA1_STR)); ioFilterGroupAdd(ioReadFilterGroup(read), ioSizeNew()); // If the pg file exists check the checksum/size if (ioReadDrain(read)) { const String *pgTestChecksum = varStr( ioFilterGroupResult(ioReadFilterGroup(read), CRYPTO_HASH_FILTER_TYPE_STR)); uint64_t pgTestSize = varUInt64Force(ioFilterGroupResult(ioReadFilterGroup(read), SIZE_FILTER_TYPE_STR)); // Does the pg file match? if (pgFileSize == pgTestSize && strEq(pgFileChecksum, pgTestChecksum)) { pgFileMatch = true; // If it matches and is a reference to a previous backup then no need to copy the file if (repoFileHasReference) { MEM_CONTEXT_PRIOR_BEGIN() { result.backupCopyResult = backupCopyResultNoOp; result.copySize = pgTestSize; result.copyChecksum = strDup(pgTestChecksum); } MEM_CONTEXT_PRIOR_END(); } } } // Else the source file is missing from the database so skip this file else result.backupCopyResult = backupCopyResultSkip; } // If this is not a delta backup or it is and the file exists and the checksum from the DB matches, then also test the // checksum of the file in the repo (unless it is in a prior backup) and if the checksum doesn't match, then there may // be corruption in the repo, so recopy if (!delta || !repoFileHasReference) { // If this is a delta backup and the file is missing from the DB, then remove it from the repo (backupManifestUpdate // will remove it from the manifest) if (result.backupCopyResult == backupCopyResultSkip) { storageRemoveP(storageRepoWrite(), repoPathFile); } else if (!delta || pgFileMatch) { // Check the repo file in a try block because on error (e.g. missing or corrupt file that can't be decrypted or // decompressed) we should recopy rather than ending the backup. TRY_BEGIN() { // Generate checksum/size for the repo file IoRead *read = storageReadIo(storageNewReadP(storageRepo(), repoPathFile)); if (cipherType != cipherTypeNone) { ioFilterGroupAdd( ioReadFilterGroup(read), cipherBlockNew(cipherModeDecrypt, cipherType, BUFSTR(cipherPass), NULL)); } if (repoFileCompress) ioFilterGroupAdd(ioReadFilterGroup(read), gzipDecompressNew(false)); ioFilterGroupAdd(ioReadFilterGroup(read), cryptoHashNew(HASH_TYPE_SHA1_STR)); ioFilterGroupAdd(ioReadFilterGroup(read), ioSizeNew()); ioReadDrain(read); // Test checksum/size const String *pgTestChecksum = varStr( ioFilterGroupResult(ioReadFilterGroup(read), CRYPTO_HASH_FILTER_TYPE_STR)); uint64_t pgTestSize = varUInt64Force(ioFilterGroupResult(ioReadFilterGroup(read), SIZE_FILTER_TYPE_STR)); // No need to recopy if checksum/size match if (pgFileSize == pgTestSize && strEq(pgFileChecksum, pgTestChecksum)) { MEM_CONTEXT_PRIOR_BEGIN() { result.backupCopyResult = backupCopyResultChecksum; result.copySize = pgTestSize; result.copyChecksum = strDup(pgTestChecksum); } MEM_CONTEXT_PRIOR_END(); } // Else recopy when repo file is not as expected else result.backupCopyResult = backupCopyResultReCopy; } // Recopy on any kind of error CATCH_ANY() { result.backupCopyResult = backupCopyResultReCopy; } TRY_END(); } } } // Copy the file if (result.backupCopyResult == backupCopyResultCopy || result.backupCopyResult == backupCopyResultReCopy) { // Is the file compressible during the copy? bool compressible = !repoFileCompress && cipherType == cipherTypeNone; // Setup pg file for read StorageRead *read = storageNewReadP( storagePg(), pgFile, .ignoreMissing = pgFileIgnoreMissing, .compressible = compressible); ioFilterGroupAdd(ioReadFilterGroup(storageReadIo(read)), cryptoHashNew(HASH_TYPE_SHA1_STR)); ioFilterGroupAdd(ioReadFilterGroup(storageReadIo(read)), ioSizeNew()); // Add page checksum filter if (pgFileChecksumPage) { ioFilterGroupAdd( ioReadFilterGroup(storageReadIo(read)), pageChecksumNew(segmentNumber(pgFile), PG_SEGMENT_PAGE_DEFAULT, PG_PAGE_SIZE_DEFAULT, pgFileChecksumPageLsnLimit)); } // Add compression if (repoFileCompress) ioFilterGroupAdd(ioReadFilterGroup(storageReadIo(read)), gzipCompressNew((int)repoFileCompressLevel, false)); // If there is a cipher then add the encrypt filter if (cipherType != cipherTypeNone) { ioFilterGroupAdd( ioReadFilterGroup( storageReadIo(read)), cipherBlockNew(cipherModeEncrypt, cipherType, BUFSTR(cipherPass), NULL)); } // Setup the repo file for write StorageWrite *write = storageNewWriteP(storageRepoWrite(), repoPathFile, .compressible = compressible); ioFilterGroupAdd(ioWriteFilterGroup(storageWriteIo(write)), ioSizeNew()); // Open the source and destination and copy the file if (storageCopy(read, write)) { MEM_CONTEXT_PRIOR_BEGIN() { // Get sizes and checksum result.copySize = varUInt64Force( ioFilterGroupResult(ioReadFilterGroup(storageReadIo(read)), SIZE_FILTER_TYPE_STR)); result.copyChecksum = strDup( varStr(ioFilterGroupResult(ioReadFilterGroup(storageReadIo(read)), CRYPTO_HASH_FILTER_TYPE_STR))); result.repoSize = varUInt64Force(ioFilterGroupResult(ioWriteFilterGroup(storageWriteIo(write)), SIZE_FILTER_TYPE_STR)); // Get results of page checksum validation if (pgFileChecksumPage) { result.pageChecksumResult = kvDup( varKv(ioFilterGroupResult(ioReadFilterGroup(storageReadIo(read)), PAGE_CHECKSUM_FILTER_TYPE_STR))); } } MEM_CONTEXT_PRIOR_END(); } // Else if source file is missing and the read setup indicated ignore a missing file, the database removed it so skip it else result.backupCopyResult = backupCopyResultSkip; } // If the file was copied get the repo size only if the storage can store the files with a different size than what was // written. This has to be checked after the file is at rest because filesystem compression may affect the actual repo size // and this cannot be calculated in stream. // // If the file was checksummed then get the size in all cases since we don't already have it. if (((result.backupCopyResult == backupCopyResultCopy || result.backupCopyResult == backupCopyResultReCopy) && storageFeature(storageRepo(), storageFeatureCompress)) || result.backupCopyResult == backupCopyResultChecksum) { result.repoSize = storageInfoP(storageRepo(), repoPathFile).size; } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BACKUP_FILE_RESULT, result); } pgbackrest-release-2.24/src/command/backup/file.h000066400000000000000000000045301362531507100217530ustar00rootroot00000000000000/*********************************************************************************************************************************** Backup File ***********************************************************************************************************************************/ #ifndef COMMAND_BACKUP_FILE_H #define COMMAND_BACKUP_FILE_H #include "common/crypto/common.h" #include "common/type/keyValue.h" /*********************************************************************************************************************************** Backup file types ***********************************************************************************************************************************/ typedef enum { backupCopyResultChecksum, backupCopyResultCopy, backupCopyResultReCopy, backupCopyResultSkip, backupCopyResultNoOp, } BackupCopyResult; /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ typedef struct BackupFileResult { BackupCopyResult backupCopyResult; uint64_t copySize; String *copyChecksum; uint64_t repoSize; KeyValue *pageChecksumResult; } BackupFileResult; BackupFileResult backupFile( const String *pgFile, bool pgFileIgnoreMissing, uint64_t pgFileSize, const String *pgFileChecksum, bool pgFileChecksumPage, uint64_t pgFileChecksumPageLsnLimit, const String *repoFile, bool repoFileHasReference, bool repoFileCompress, unsigned int repoFileCompressLevel, const String *backupLabel, bool delta, CipherType cipherType, const String *cipherPass); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_BACKUP_FILE_RESULT_TYPE \ BackupFileResult #define FUNCTION_LOG_BACKUP_FILE_RESULT_FORMAT(value, buffer, bufferSize) \ objToLog(&value, "BackupFileResult", buffer, bufferSize) #endif pgbackrest-release-2.24/src/command/backup/pageChecksum.c000066400000000000000000000241641362531507100234330ustar00rootroot00000000000000/*********************************************************************************************************************************** Page Checksum Filter ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/io/filter/filter.intern.h" #include "command/backup/pageChecksum.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "postgres/pageChecksum.h" /*********************************************************************************************************************************** Filter type constant ***********************************************************************************************************************************/ STRING_EXTERN(PAGE_CHECKSUM_FILTER_TYPE_STR, PAGE_CHECKSUM_FILTER_TYPE); /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ typedef struct PageChecksum { MemContext *memContext; // Mem context of filter unsigned int pageNoOffset; // Page number offset for subsequent segments size_t pageSize; // Page size uint64_t lsnLimit; // Lower limit of pages that could be torn bool valid; // Is the relation structure valid? bool align; // Is the relation alignment valid? VariantList *error; // List of checksum errors unsigned int errorMin; // Current min error page unsigned int errorMax; // Current max error page } PageChecksum; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String * pageChecksumToLog(const PageChecksum *this) { return strNewFmt("{valid: %s, align: %s}", cvtBoolToConstZ(this->valid), cvtBoolToConstZ(this->align)); } #define FUNCTION_LOG_PAGE_CHECKSUM_TYPE \ PageChecksum * #define FUNCTION_LOG_PAGE_CHECKSUM_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, pageChecksumToLog, buffer, bufferSize) /*********************************************************************************************************************************** Count bytes in the input ***********************************************************************************************************************************/ static void pageChecksumProcess(THIS_VOID, const Buffer *input) { THIS(PageChecksum); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PAGE_CHECKSUM, this); FUNCTION_LOG_PARAM(BUFFER, input); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(input != NULL); // Calculate total pages in the buffer unsigned int pageTotal = (unsigned int)(bufUsed(input) / this->pageSize); // If there is a partial page make sure there is enough of it to validate the checksum unsigned int pageRemainder = (unsigned int)(bufUsed(input) % this->pageSize); if (pageRemainder != 0) { // Misaligned blocks, if any, should only be at the end of the file if (!this->align) THROW(AssertError, "should not be possible to see two misaligned pages in a row"); // Mark this buffer as misaligned in case we see another one this->align = false; // If there at least 512 bytes then we'll treat this as a partial write (modern file systems will have at least 4096) if (pageRemainder >= 512) { pageTotal++; } // Else this appears to be a corrupted file and we'll stop doing page checksums else this->valid = false; } // Verify the checksums of complete pages in the buffer if (this->valid) { for (unsigned int pageIdx = 0; pageIdx < pageTotal; pageIdx++) { unsigned char *pagePtr = bufPtr(input) + (pageIdx * this->pageSize); unsigned int pageNo = this->pageNoOffset + pageIdx; size_t pageSize = this->align || pageIdx < pageTotal - 1 ? this->pageSize : pageRemainder; if (!pageChecksumTest( pagePtr, pageNo, (unsigned int)pageSize, (unsigned int)(this->lsnLimit >> 32), (unsigned int)(this->lsnLimit & 0xFFFFFFFF))) { MEM_CONTEXT_BEGIN(this->memContext) { // Create the error list if it does not exist yet if (this->error == NULL) this->error = varLstNew(); // Add page number and lsn to the error list VariantList *pair = varLstNew(); varLstAdd(pair, varNewUInt(pageNo)); varLstAdd(pair, varNewUInt64(pageLsn(pagePtr))); varLstAdd(this->error, varNewVarLst(pair)); } MEM_CONTEXT_END(); } } this->pageNoOffset += pageTotal; } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Return filter result ***********************************************************************************************************************************/ static Variant * pageChecksumResult(THIS_VOID) { THIS(PageChecksum); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PAGE_CHECKSUM, this); FUNCTION_LOG_END(); ASSERT(this != NULL); KeyValue *result = kvNew(); if (this->error != NULL) { VariantList *errorList = varLstNew(); unsigned int errorIdx = 0; // Convert the full list to an abbreviated list. In the future we want to return the entire list so pages can be verified // in the WAL. do { unsigned int pageId = varUInt(varLstGet(varVarLst(varLstGet(this->error, errorIdx)), 0)); if (errorIdx == varLstSize(this->error) - 1) { varLstAdd(errorList, varNewUInt(pageId)); errorIdx++; } else { unsigned int pageIdNext = varUInt(varLstGet(varVarLst(varLstGet(this->error, errorIdx + 1)), 0)); if (pageIdNext > pageId + 1) { varLstAdd(errorList, varNewUInt(pageId)); errorIdx++; } else { unsigned int pageIdLast = pageIdNext; errorIdx++; while (errorIdx < varLstSize(this->error) - 1) { pageIdNext = varUInt(varLstGet(varVarLst(varLstGet(this->error, errorIdx + 1)), 0)); if (pageIdNext > pageIdLast + 1) break; pageIdLast = pageIdNext; errorIdx++; } VariantList *errorListSub = varLstNew(); varLstAdd(errorListSub, varNewUInt(pageId)); varLstAdd(errorListSub, varNewUInt(pageIdLast)); varLstAdd(errorList, varNewVarLst(errorListSub)); errorIdx++; } } } while (errorIdx < varLstSize(this->error)); this->valid = false; kvPut(result, varNewStrZ("error"), varNewVarLst(errorList)); } kvPut(result, VARSTRDEF("valid"), VARBOOL(this->valid)); kvPut(result, VARSTRDEF("align"), VARBOOL(this->align)); FUNCTION_LOG_RETURN(VARIANT, varNewKv(result)); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ IoFilter * pageChecksumNew(unsigned int segmentNo, unsigned int segmentPageTotal, size_t pageSize, uint64_t lsnLimit) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(UINT, segmentNo); FUNCTION_LOG_PARAM(UINT, segmentPageTotal); FUNCTION_LOG_PARAM(SIZE, pageSize); FUNCTION_LOG_PARAM(UINT64, lsnLimit); FUNCTION_LOG_END(); IoFilter *this = NULL; MEM_CONTEXT_NEW_BEGIN("PageChecksum") { PageChecksum *driver = memNew(sizeof(PageChecksum)); *driver = (PageChecksum) { .memContext = memContextCurrent(), .pageNoOffset = segmentNo * segmentPageTotal, .pageSize = pageSize, .lsnLimit = lsnLimit, .valid = true, .align = true, }; // Create param list VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewUInt(segmentNo)); varLstAdd(paramList, varNewUInt(segmentPageTotal)); varLstAdd(paramList, varNewUInt64(pageSize)); varLstAdd(paramList, varNewUInt64(lsnLimit)); this = ioFilterNewP( PAGE_CHECKSUM_FILTER_TYPE_STR, driver, paramList, .in = pageChecksumProcess, .result = pageChecksumResult); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(IO_FILTER, this); } IoFilter * pageChecksumNewVar(const VariantList *paramList) { return pageChecksumNew( varUIntForce(varLstGet(paramList, 0)), varUIntForce(varLstGet(paramList, 1)), varUIntForce(varLstGet(paramList, 2)), varUInt64(varLstGet(paramList, 3))); } pgbackrest-release-2.24/src/command/backup/pageChecksum.h000066400000000000000000000025271362531507100234370ustar00rootroot00000000000000/*********************************************************************************************************************************** Page Checksum Filter Check all pages in a PostgreSQL relation to ensure the checksums are valid. ***********************************************************************************************************************************/ #ifndef COMMAND_BACKUP_PAGE_CHECKSUM_H #define COMMAND_BACKUP_PAGE_CHECKSUM_H #include "common/io/filter/filter.h" /*********************************************************************************************************************************** Filter type constant ***********************************************************************************************************************************/ #define PAGE_CHECKSUM_FILTER_TYPE "pageChecksum" STRING_DECLARE(PAGE_CHECKSUM_FILTER_TYPE_STR); /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ IoFilter *pageChecksumNew(unsigned int segmentNo, unsigned int segmentPageTotal, size_t pageSize, uint64_t lsnLimit); IoFilter *pageChecksumNewVar(const VariantList *paramList); #endif pgbackrest-release-2.24/src/command/backup/protocol.c000066400000000000000000000061341362531507100226720ustar00rootroot00000000000000/*********************************************************************************************************************************** Backup Protocol Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include "command/backup/file.h" #include "command/backup/protocol.h" #include "common/debug.h" #include "common/io/io.h" #include "common/log.h" #include "common/memContext.h" #include "config/config.h" #include "storage/helper.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ STRING_EXTERN(PROTOCOL_COMMAND_BACKUP_FILE_STR, PROTOCOL_COMMAND_BACKUP_FILE); /*********************************************************************************************************************************** Process protocol requests ***********************************************************************************************************************************/ bool backupProtocol(const String *command, const VariantList *paramList, ProtocolServer *server) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, command); FUNCTION_LOG_PARAM(VARIANT_LIST, paramList); FUNCTION_LOG_PARAM(PROTOCOL_SERVER, server); FUNCTION_LOG_END(); ASSERT(command != NULL); // Attempt to satisfy the request -- we may get requests that are meant for other handlers bool found = true; MEM_CONTEXT_TEMP_BEGIN() { if (strEq(command, PROTOCOL_COMMAND_BACKUP_FILE_STR)) { // Backup the file BackupFileResult result = backupFile( varStr(varLstGet(paramList, 0)), varBool(varLstGet(paramList, 1)), varUInt64(varLstGet(paramList, 2)), varStr(varLstGet(paramList, 3)), varBool(varLstGet(paramList, 4)), varUInt64(varLstGet(paramList, 5)), varStr(varLstGet(paramList, 6)), varBool(varLstGet(paramList, 7)), varBool(varLstGet(paramList, 8)), varUIntForce(varLstGet(paramList, 9)), varStr(varLstGet(paramList, 10)), varBool(varLstGet(paramList, 11)), varStr(varLstGet(paramList, 12)) == NULL ? cipherTypeNone : cipherTypeAes256Cbc, varStr(varLstGet(paramList, 12))); // Return backup result VariantList *resultList = varLstNew(); varLstAdd(resultList, varNewUInt(result.backupCopyResult)); varLstAdd(resultList, varNewUInt64(result.copySize)); varLstAdd(resultList, varNewUInt64(result.repoSize)); varLstAdd(resultList, varNewStr(result.copyChecksum)); varLstAdd(resultList, result.pageChecksumResult != NULL ? varNewKv(result.pageChecksumResult) : NULL); protocolServerResponse(server, varNewVarLst(resultList)); } else found = false; } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, found); } pgbackrest-release-2.24/src/command/backup/protocol.h000066400000000000000000000023431362531507100226750ustar00rootroot00000000000000/*********************************************************************************************************************************** Backup Protocol Handler ***********************************************************************************************************************************/ #ifndef COMMAND_BACKUP_PROTOCOL_H #define COMMAND_BACKUP_PROTOCOL_H #include "common/type/string.h" #include "common/type/variantList.h" #include "protocol/server.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define PROTOCOL_COMMAND_BACKUP_FILE "backupFile" STRING_DECLARE(PROTOCOL_COMMAND_BACKUP_FILE_STR); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ bool backupProtocol(const String *command, const VariantList *paramList, ProtocolServer *server); #endif pgbackrest-release-2.24/src/command/check/000077500000000000000000000000001362531507100204715ustar00rootroot00000000000000pgbackrest-release-2.24/src/command/check/check.c000066400000000000000000000151661362531507100217230ustar00rootroot00000000000000/*********************************************************************************************************************************** Check Command ***********************************************************************************************************************************/ #include "build.auto.h" #include "command/archive/common.h" #include "command/check/check.h" #include "command/check/common.h" #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "config/config.h" #include "db/helper.h" #include "info/infoArchive.h" #include "postgres/interface.h" #include "protocol/helper.h" #include "storage/helper.h" /*********************************************************************************************************************************** Helper functions (to assist with testing) ***********************************************************************************************************************************/ static unsigned int checkManifest(void) { FUNCTION_LOG_VOID(logLevelTrace); // Return the actual number of pg* defined unsigned int result = 0; MEM_CONTEXT_TEMP_BEGIN() { // Loop through all defined databases and attempt to build a manifest for (unsigned int pgIdx = 0; pgIdx < cfgOptionIndexTotal(cfgOptPgPath); pgIdx++) { if (cfgOptionTest(cfgOptPgHost + pgIdx) || cfgOptionTest(cfgOptPgPath + pgIdx)) { result++; // ??? Placeholder for manifest build storageListP(storagePgId(pgIdx + 1), varStr(cfgOption(cfgOptPgPath + pgIdx))); } } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(UINT, result); } static void checkStandby(const DbGetResult dbGroup, unsigned int pgPathDefinedTotal) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(DB_GET_RESULT, dbGroup); FUNCTION_LOG_PARAM(UINT, pgPathDefinedTotal); FUNCTION_LOG_END(); // If a standby is defined, check the configuration if (dbGroup.standby != NULL) { // If primary was not found if (dbGroup.primary == NULL) { // If the repo is local or more than one pg-path is found then a master should have been found so error if (repoIsLocal() || pgPathDefinedTotal > 1) { THROW( ConfigError, "primary database not found\n" "HINT: check indexed pg-path/pg-host configurations"); } } // Validate the standby database config PgControl pgControl = pgControlFromFile(storagePgId(dbGroup.standbyId)); // Check the user configured path and version against the database checkDbConfig(pgControl.version, dbGroup.standbyId, dbGroup.standby, true); // Get the repo storage in case it is remote and encryption settings need to be pulled down (performed here for testing) storageRepo(); // Check that the backup and archive info files exist and are valid for the current database of the stanza checkStanzaInfoPg( storageRepo(), pgControl.version, pgControl.systemId, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); LOG_INFO("switch wal not performed because this is a standby"); // Free the standby connection dbFree(dbGroup.standby); } // If backup from standby is true then warn when a standby not found else if (cfgOptionBool(cfgOptBackupStandby)) { LOG_WARN_FMT("option '%s' is enabled but standby is not properly configured", cfgOptionName(cfgOptBackupStandby)); } FUNCTION_LOG_RETURN_VOID(); } static void checkPrimary(const DbGetResult dbGroup) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(DB_GET_RESULT, dbGroup); FUNCTION_LOG_END(); // If a primary is defined, check the configuration and perform a WAL switch and make sure the WAL is archived if (dbGroup.primary != NULL) { // Validate the primary database config PgControl pgControl = pgControlFromFile(storagePgId(dbGroup.primaryId)); // Check the user configured path and version against the database checkDbConfig(pgControl.version, dbGroup.primaryId, dbGroup.primary, false); // Get the repo storage in case it is remote and encryption settings need to be pulled down (performed here for testing) storageRepo(); // Check that the backup and archive info files exist and are valid for the current database of the stanza checkStanzaInfoPg( storageRepo(), pgControl.version, pgControl.systemId, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); // Attempt to load the archive info file and retrieve the archiveId InfoArchive *archiveInfo = infoArchiveLoadFile( storageRepo(), INFO_ARCHIVE_PATH_FILE_STR, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); const String *archiveId = infoArchiveId(archiveInfo); // Perform a WAL switch const String *walSegment = dbWalSwitch(dbGroup.primary); dbFree(dbGroup.primary); // Wait for the WAL to appear in the repo TimeMSec archiveTimeout = (TimeMSec)(cfgOptionDbl(cfgOptArchiveTimeout) * MSEC_PER_SEC); const String *walSegmentFile = walSegmentFind(storageRepo(), archiveId, walSegment, archiveTimeout); LOG_INFO_FMT( "WAL segment %s successfully archived to '%s'", strPtr(walSegment), strPtr(storagePathP(storageRepo(), strNewFmt(STORAGE_REPO_ARCHIVE "/%s/%s", strPtr(archiveId), strPtr(walSegmentFile))))); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Perform standard checks ***********************************************************************************************************************************/ void cmdCheck(void) { FUNCTION_LOG_VOID(logLevelDebug); MEM_CONTEXT_TEMP_BEGIN() { // Get the primary/standby connections (standby is only required if backup from standby is enabled) DbGetResult dbGroup = dbGet(false, false, false); if (dbGroup.standby == NULL && dbGroup.primary == NULL) THROW(ConfigError, "no database found\nHINT: check indexed pg-path/pg-host configurations"); unsigned int pgPathDefinedTotal = checkManifest(); checkStandby(dbGroup, pgPathDefinedTotal); checkPrimary(dbGroup); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/command/check/check.h000066400000000000000000000012061362531507100217160ustar00rootroot00000000000000/*********************************************************************************************************************************** Check Command ***********************************************************************************************************************************/ #ifndef COMMAND_CHECK_CHECK_H #define COMMAND_CHECK_CHECK_H /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void cmdCheck(void); #endif pgbackrest-release-2.24/src/command/check/common.c000066400000000000000000000164331362531507100221340ustar00rootroot00000000000000/*********************************************************************************************************************************** Check Common Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "command/check/common.h" #include "common/debug.h" #include "config/config.h" #include "db/helper.h" #include "info/infoArchive.h" #include "info/infoBackup.h" #include "postgres/interface.h" #include "storage/helper.h" #include "version.h" /*********************************************************************************************************************************** Helper function ***********************************************************************************************************************************/ static bool checkArchiveCommand(const String *archiveCommand) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, archiveCommand); FUNCTION_TEST_END(); bool result = archiveCommand != NULL; if (result && strstr(strPtr(archiveCommand), PROJECT_BIN) == NULL) result = false; if (!result) { THROW_FMT( ArchiveCommandInvalidError, "archive_command '%s' must contain %s", (archiveCommand != NULL ? strPtr(archiveCommand) : "[" NULL_Z "]"), PROJECT_BIN); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Check the database path and version are configured correctly ***********************************************************************************************************************************/ void checkDbConfig(const unsigned int pgVersion, const unsigned int dbIdx, const Db *dbObject, bool isStandby) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, pgVersion); FUNCTION_TEST_PARAM(UINT, dbIdx); FUNCTION_TEST_PARAM(DB, dbObject); FUNCTION_TEST_PARAM(BOOL, isStandby); FUNCTION_TEST_END(); ASSERT(dbIdx > 0); ASSERT(dbObject != NULL); MEM_CONTEXT_TEMP_BEGIN() { unsigned int dbVersion = dbPgVersion(dbObject); const String *dbPath = dbPgDataPath(dbObject); unsigned int pgPath = cfgOptPgPath + (dbIdx - 1); // Error if the version from the control file and the configured pg-path do not match the values obtained from the database if (pgVersion != dbVersion || strCmp(cfgOptionStr(pgPath), dbPath) != 0) { THROW_FMT( DbMismatchError, "version '%s' and path '%s' queried from cluster do not match version '%s' and '%s' read from '%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL "'\nHINT: the %s and %s settings likely reference different clusters.", strPtr(pgVersionToStr(dbVersion)), strPtr(dbPath), strPtr(pgVersionToStr(pgVersion)), strPtr(cfgOptionStr(pgPath)), strPtr(cfgOptionStr(pgPath)), cfgOptionName(pgPath), cfgOptionName(cfgOptPgPort + (dbIdx - 1))); } // Check archive configuration if option is valid for the command and set if (!isStandby && cfgOptionValid(cfgOptArchiveCheck) && cfgOptionBool(cfgOptArchiveCheck)) { // Error if archive_mode = off since pg_start_backup () will fail if (strCmpZ(dbArchiveMode(dbObject), "off") == 0) { THROW(ArchiveDisabledError, "archive_mode must be enabled"); } // Error if archive_mode = always (support has not been added yet) if (strCmpZ(dbArchiveMode(dbObject), "always") == 0) { THROW(FeatureNotSupportedError, "archive_mode=always not supported"); } // Check if archive_command is set and is valid checkArchiveCommand(dbArchiveCommand(dbObject)); } } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Validate the archive and backup info files ***********************************************************************************************************************************/ void checkStanzaInfo(const InfoPgData *archiveInfo, const InfoPgData *backupInfo) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(INFO_PG_DATA, archiveInfo); FUNCTION_TEST_PARAM_P(INFO_PG_DATA, backupInfo); FUNCTION_TEST_END(); ASSERT(archiveInfo != NULL); ASSERT(backupInfo != NULL); // Error if there is a mismatch between the archive and backup info files if (archiveInfo->id != backupInfo->id || archiveInfo->systemId != backupInfo->systemId || archiveInfo->version != backupInfo->version) { THROW_FMT( FileInvalidError, "backup info file and archive info file do not match\n" "archive: id = %u, version = %s, system-id = %" PRIu64 "\n" "backup : id = %u, version = %s, system-id = %" PRIu64 "\n" "HINT: this may be a symptom of repository corruption!", archiveInfo->id, strPtr(pgVersionToStr(archiveInfo->version)), archiveInfo->systemId, backupInfo->id, strPtr(pgVersionToStr(backupInfo->version)), backupInfo->systemId); } FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Load and validate the database data of the info files against each other and the current database ***********************************************************************************************************************************/ void checkStanzaInfoPg( const Storage *storage, const unsigned int pgVersion, const uint64_t pgSystemId, CipherType cipherType, const String *cipherPass) { FUNCTION_TEST_BEGIN(); FUNCTION_LOG_PARAM(STORAGE, storage); FUNCTION_LOG_PARAM(UINT, pgVersion); FUNCTION_LOG_PARAM(UINT64, pgSystemId); FUNCTION_LOG_PARAM(ENUM, cipherType); FUNCTION_TEST_PARAM(STRING, cipherPass); FUNCTION_TEST_END(); ASSERT(storage != NULL); MEM_CONTEXT_TEMP_BEGIN() { // Check that the backup and archive info files exist InfoArchive *infoArchive = infoArchiveLoadFile(storage, INFO_ARCHIVE_PATH_FILE_STR, cipherType, cipherPass); InfoPgData archiveInfoPg = infoPgData(infoArchivePg(infoArchive), infoPgDataCurrentId(infoArchivePg(infoArchive))); InfoBackup *infoBackup = infoBackupLoadFile(storage, INFO_BACKUP_PATH_FILE_STR, cipherType, cipherPass); InfoPgData backupInfoPg = infoPgData(infoBackupPg(infoBackup), infoPgDataCurrentId(infoBackupPg(infoBackup))); // Check that the info files pg data match each other checkStanzaInfo(&archiveInfoPg, &backupInfoPg); // Check that the version and system id match the current database if (pgVersion != archiveInfoPg.version || pgSystemId != archiveInfoPg.systemId) { THROW(FileInvalidError, "backup and archive info files exist but do not match the database\n" "HINT: is this the correct stanza?\n" "HINT: did an error occur during stanza-upgrade?"); } } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN_VOID(); } pgbackrest-release-2.24/src/command/check/common.h000066400000000000000000000020551362531507100221340ustar00rootroot00000000000000/*********************************************************************************************************************************** Check Command Common ***********************************************************************************************************************************/ #ifndef COMMAND_CHECK_COMMON_H #define COMMAND_CHECK_COMMON_H #include "common/type/string.h" #include "db/db.h" #include "info/infoPg.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void checkDbConfig(const unsigned int pgVersion, const unsigned int dbIdx, const Db *dbObject, bool isStandby); void checkStanzaInfo(const InfoPgData *archiveInfo, const InfoPgData *backupInfo); void checkStanzaInfoPg( const Storage *storage, const unsigned int pgVersion, const uint64_t pgSystemId, CipherType cipherType, const String *cipherPass); #endif pgbackrest-release-2.24/src/command/command.c000066400000000000000000000223441362531507100212030ustar00rootroot00000000000000/*********************************************************************************************************************************** Common Command Routines ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include "common/debug.h" #include "common/io/http/client.h" #include "common/io/tls/client.h" #include "common/log.h" #include "common/memContext.h" #include "common/time.h" #include "config/config.h" #include "version.h" /*********************************************************************************************************************************** Track time command started ***********************************************************************************************************************************/ static TimeMSec timeBegin; /*********************************************************************************************************************************** Capture time at the very start of main so total time is more accurate ***********************************************************************************************************************************/ void cmdInit(void) { FUNCTION_LOG_VOID(logLevelTrace); timeBegin = timeMSec(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Begin the command ***********************************************************************************************************************************/ void cmdBegin(bool logOption) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(BOOL, logOption); FUNCTION_LOG_END(); ASSERT(cfgCommand() != cfgCmdNone); // This is fairly expensive log message to generate so skip it if it won't be output if (logAny(cfgLogLevelDefault())) { MEM_CONTEXT_TEMP_BEGIN() { // Basic info on command start String *info = strNewFmt("%s command begin", strPtr(cfgCommandRoleName())); if (logOption) { strCatFmt(info, " %s:", PROJECT_VERSION); // Get command define id used to determine which options are valid for this command ConfigDefineCommand commandDefId = cfgCommandDefIdFromId(cfgCommand()); // Add command parameters if they exist const StringList *commandParamList = cfgCommandParam(); if (strLstSize(commandParamList) != 0) { strCatFmt(info, " ["); for (unsigned int commandParamIdx = 0; commandParamIdx < strLstSize(commandParamList); commandParamIdx++) { const String *commandParam = strLstGet(commandParamList, commandParamIdx); if (commandParamIdx != 0) strCatFmt(info, ", "); if (strchr(strPtr(commandParam), ' ') != NULL) commandParam = strNewFmt("\"%s\"", strPtr(commandParam)); strCat(info, strPtr(commandParam)); } strCatFmt(info, "]"); } // Loop though options and add the ones that are interesting for (ConfigOption optionId = 0; optionId < CFG_OPTION_TOTAL; optionId++) { // Skip the option if not valid for this command. Generally only one command runs at a time, but sometimes // commands are chained together (e.g. backup and expire) and the second command may not use all the options of // the first command. Displaying them is harmless but might cause confusion. if (!cfgDefOptionValid(commandDefId, cfgOptionDefIdFromId(optionId))) continue; // If option was negated if (cfgOptionNegate(optionId)) strCatFmt(info, " --no-%s", cfgOptionName(optionId)); // If option was reset else if (cfgOptionReset(optionId)) strCatFmt(info, " --reset-%s", cfgOptionName(optionId)); // Else set and not default else if (cfgOptionSource(optionId) != cfgSourceDefault && cfgOptionTest(optionId)) { ConfigDefineOption optionDefId = cfgOptionDefIdFromId(optionId); // Don't show redacted options if (cfgDefOptionSecure(optionDefId)) strCatFmt(info, " --%s=", cfgOptionName(optionId)); // Output boolean option else if (cfgDefOptionType(optionDefId) == cfgDefOptTypeBoolean) strCatFmt(info, " --%s", cfgOptionName(optionId)); // Output other options else { StringList *valueList = NULL; // Generate the values of hash options if (cfgDefOptionType(optionDefId) == cfgDefOptTypeHash) { valueList = strLstNew(); const KeyValue *optionKv = cfgOptionKv(optionId); const VariantList *keyList = kvKeyList(optionKv); for (unsigned int keyIdx = 0; keyIdx < varLstSize(keyList); keyIdx++) { strLstAdd( valueList, strNewFmt( "%s=%s", strPtr(varStr(varLstGet(keyList, keyIdx))), strPtr(varStrForce(kvGet(optionKv, varLstGet(keyList, keyIdx)))))); } } // Generate values for list options else if (cfgDefOptionType(optionDefId) == cfgDefOptTypeList) { valueList = strLstNewVarLst(cfgOptionLst(optionId)); } // Else only one value else { valueList = strLstNew(); strLstAdd(valueList, varStrForce(cfgOption(optionId))); } // Output options and values for (unsigned int valueListIdx = 0; valueListIdx < strLstSize(valueList); valueListIdx++) { const String *value = strLstGet(valueList, valueListIdx); strCatFmt(info, " --%s", cfgOptionName(optionId)); if (strchr(strPtr(value), ' ') != NULL) value = strNewFmt("\"%s\"", strPtr(value)); strCatFmt(info, "=%s", strPtr(value)); } } } } } LOG(cfgLogLevelDefault(), 0, strPtr(info)); } MEM_CONTEXT_TEMP_END(); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** End the command ***********************************************************************************************************************************/ void cmdEnd(int code, const String *errorMessage) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(INT, code); FUNCTION_LOG_PARAM(STRING, errorMessage); FUNCTION_LOG_END(); ASSERT(cfgCommand() != cfgCmdNone); // Skip this log message if it won't be output. It's not too expensive but since we skipped cmdBegin(), may as well. if (logAny(cfgLogLevelDefault())) { MEM_CONTEXT_TEMP_BEGIN() { // Log tls statistics String *tlsClientStat = tlsClientStatStr(); if (tlsClientStat != NULL) LOG_DETAIL(strPtr(tlsClientStat)); // Log http statistics String *httpClientStat = httpClientStatStr(); if (httpClientStat != NULL) LOG_INFO(strPtr(httpClientStat)); // Basic info on command end String *info = strNewFmt("%s command end: ", strPtr(cfgCommandRoleName())); if (errorMessage == NULL) { strCat(info, "completed successfully"); if (cfgOptionValid(cfgOptLogTimestamp) && cfgOptionBool(cfgOptLogTimestamp)) strCatFmt(info, " (%" PRIu64 "ms)", timeMSec() - timeBegin); } else strCat(info, strPtr(errorMessage)); LOG(cfgLogLevelDefault(), 0, strPtr(info)); } MEM_CONTEXT_TEMP_END(); } // Reset timeBegin in case there is another command following this one timeBegin = timeMSec(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/command/command.h000066400000000000000000000013731362531507100212070ustar00rootroot00000000000000/*********************************************************************************************************************************** Common Command Routines ***********************************************************************************************************************************/ #ifndef COMMAND_COMMAND_H #define COMMAND_COMMAND_H #include "common/type/string.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void cmdInit(void); void cmdBegin(bool logOption); void cmdEnd(int code, const String *errorMessage); #endif pgbackrest-release-2.24/src/command/control/000077500000000000000000000000001362531507100210745ustar00rootroot00000000000000pgbackrest-release-2.24/src/command/control/common.c000066400000000000000000000037321362531507100225350ustar00rootroot00000000000000/*********************************************************************************************************************************** Common Handler for Control Commands ***********************************************************************************************************************************/ #include "build.auto.h" #include "command/control/common.h" #include "common/debug.h" #include "config/config.h" #include "storage/helper.h" /*********************************************************************************************************************************** Create the stop filename ***********************************************************************************************************************************/ String * lockStopFileName(const String *stanza) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, stanza); FUNCTION_TEST_END(); String *result = strNewFmt( "%s/%s" STOP_FILE_EXT, strPtr(cfgOptionStr(cfgOptLockPath)), stanza != NULL ? strPtr(stanza) : "all"); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Test for the existence of a stop file ***********************************************************************************************************************************/ void lockStopTest(void) { FUNCTION_LOG_VOID(logLevelDebug); MEM_CONTEXT_TEMP_BEGIN() { // Check the current stanza (if any) if (cfgOptionTest(cfgOptStanza)) { if (storageExistsP(storageLocal(), lockStopFileName(cfgOptionStr(cfgOptStanza)))) THROW_FMT(StopError, "stop file exists for stanza %s", strPtr(cfgOptionStr(cfgOptStanza))); } // Check all stanzas if (storageExistsP(storageLocal(), lockStopFileName(NULL))) THROW(StopError, "stop file exists for all stanzas"); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/command/control/common.h000066400000000000000000000021301362531507100225310ustar00rootroot00000000000000/*********************************************************************************************************************************** Common Handler for Control Commands ***********************************************************************************************************************************/ #ifndef COMMAND_CONTROL_COMMON_H #define COMMAND_CONTROL_COMMON_H #include "common/type/string.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define STOP_FILE_EXT ".stop" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ String *lockStopFileName(const String *stanza); void lockStopTest(void); #endif pgbackrest-release-2.24/src/command/control/start.c000066400000000000000000000023441362531507100224000ustar00rootroot00000000000000/*********************************************************************************************************************************** Start Command ***********************************************************************************************************************************/ #include "build.auto.h" #include "command/control/common.h" #include "common/debug.h" #include "config/config.h" #include "storage/helper.h" #include "storage/storage.h" void cmdStart(void) { FUNCTION_LOG_VOID(logLevelDebug); MEM_CONTEXT_TEMP_BEGIN() { // Remove the stop file so processes can run String *stopFile = lockStopFileName(cfgOptionStr(cfgOptStanza)); // If the stop file exists, then remove it if (storageExistsP(storageLocal(), stopFile)) { // If the file cannot be removed, storageRemove() will throw an error if the error is not ENOENT storageRemoveP(storageLocalWrite(), stopFile); } else { LOG_WARN_FMT("stop file does not exist%s", (cfgOptionTest(cfgOptStanza) ? strPtr(strNewFmt(" for stanza %s", strPtr(cfgOptionStr(cfgOptStanza)))) : "")); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/command/control/start.h000066400000000000000000000012121362531507100223760ustar00rootroot00000000000000/*********************************************************************************************************************************** Start Command ***********************************************************************************************************************************/ #ifndef COMMAND_CONTROL_START_H #define COMMAND_CONTROL_START_H /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void cmdStart(void); #endif pgbackrest-release-2.24/src/command/control/stop.c000066400000000000000000000107271362531507100222340ustar00rootroot00000000000000/*********************************************************************************************************************************** Stop Command ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include #include #include "command/control/common.h" #include "common/debug.h" #include "common/type/convert.h" #include "config/config.h" #include "storage/helper.h" #include "storage/storage.h" #include "storage/storage.intern.h" void cmdStop(void) { FUNCTION_LOG_VOID(logLevelDebug); MEM_CONTEXT_TEMP_BEGIN() { String *stopFile = lockStopFileName(cfgOptionStr(cfgOptStanza)); // If the stop file does not already exist, then create it if (!storageExistsP(storageLocal(), stopFile)) { // Create the lock path (ignore if already created) storagePathCreateP(storageLocalWrite(), strPath(stopFile), .mode = 0770); // Create the stop file with Read/Write and Create only - do not use Truncate int fileHandle = -1; THROW_ON_SYS_ERROR_FMT( ((fileHandle = open(strPtr(stopFile), O_WRONLY | O_CREAT, STORAGE_MODE_FILE_DEFAULT)) == -1), FileOpenError, "unable to open stop file '%s'", strPtr(stopFile)); // Close the file close(fileHandle); // If --force was specified then send term signals to running processes if (cfgOptionBool(cfgOptForce)) { const String *lockPath = cfgOptionStr(cfgOptLockPath); StringList *lockPathFileList = strLstSort( storageListP(storageLocal(), lockPath, .errorOnMissing = true), sortOrderAsc); // Find each lock file and send term signals to the processes for (unsigned int lockPathFileIdx = 0; lockPathFileIdx < strLstSize(lockPathFileList); lockPathFileIdx++) { String *lockFile = strNewFmt("%s/%s", strPtr(lockPath), strPtr(strLstGet(lockPathFileList, lockPathFileIdx))); // Skip any file that is not a lock file if (!strEndsWithZ(lockFile, LOCK_FILE_EXT)) continue; // If we cannot open the lock file for any reason then warn and continue to next file if ((fileHandle = open(strPtr(lockFile), O_RDONLY, 0)) == -1) { LOG_WARN_FMT( "unable to open lock file %s", strPtr(lockFile)); continue; } // Attempt a lock on the file - if a lock can be acquired that means the original process died without removing // the lock file so remove it now if (flock(fileHandle, LOCK_EX | LOCK_NB) == 0) { unlink(strPtr(lockFile)); close(fileHandle); continue; } // The file is locked so that means there is a running process - read the process id and send it a term signal char contents[64]; ssize_t actualBytes = read(fileHandle, contents, sizeof(contents)); String *processId = actualBytes > 0 ? strTrim(strNewN(contents, (size_t)actualBytes)) : NULL; // If the process id is defined then assume this is a valid lock file if (processId != NULL && strSize(processId) > 0) { if (kill(cvtZToInt(strPtr(processId)), SIGTERM) != 0) LOG_WARN_FMT("unable to send term signal to process %s", strPtr(processId)); else LOG_INFO_FMT("sent term signal to process %s", strPtr(processId)); } else { unlink(strPtr(lockFile)); close(fileHandle); } } } } else { LOG_WARN_FMT( "stop file already exists for %s", cfgOptionTest(cfgOptStanza) ? strPtr(strNewFmt("stanza %s", strPtr(cfgOptionStr(cfgOptStanza)))) : "all stanzas"); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/command/control/stop.h000066400000000000000000000012061362531507100222310ustar00rootroot00000000000000/*********************************************************************************************************************************** Stop Command ***********************************************************************************************************************************/ #ifndef COMMAND_CONTROL_STOP_H #define COMMAND_CONTROL_STOP_H /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void cmdStop(void); #endif pgbackrest-release-2.24/src/command/expire/000077500000000000000000000000001362531507100207105ustar00rootroot00000000000000pgbackrest-release-2.24/src/command/expire/expire.c000066400000000000000000001041071362531507100223530ustar00rootroot00000000000000/*********************************************************************************************************************************** Expire Command ***********************************************************************************************************************************/ #include "build.auto.h" #include "command/archive/common.h" #include "command/backup/common.h" #include "common/type/list.h" #include "common/debug.h" #include "common/regExp.h" #include "config/config.h" #include "info/infoArchive.h" #include "info/infoBackup.h" #include "info/manifest.h" #include "storage/helper.h" #include /*********************************************************************************************************************************** Helper functions and structures ***********************************************************************************************************************************/ typedef struct ArchiveExpired { uint64_t total; String *start; String *stop; } ArchiveExpired; static int archiveIdComparator(const void *item1, const void *item2) { StringList *archiveSort1 = strLstNewSplitZ(*(String **)item1, "-"); StringList *archiveSort2 = strLstNewSplitZ(*(String **)item2, "-"); int int1 = atoi(strPtr(strLstGet(archiveSort1, 1))); int int2 = atoi(strPtr(strLstGet(archiveSort2, 1))); return (int1 - int2); } typedef struct ArchiveRange { const String *start; const String *stop; } ArchiveRange; /*********************************************************************************************************************************** Common function for expiring any backup ***********************************************************************************************************************************/ static void expireBackup(InfoBackup *infoBackup, String *removeBackupLabel, String *backupExpired) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_BACKUP, infoBackup); FUNCTION_LOG_PARAM(STRING, removeBackupLabel); FUNCTION_LOG_PARAM(STRING, backupExpired); FUNCTION_LOG_END(); ASSERT(infoBackup != NULL); ASSERT(removeBackupLabel != NULL); ASSERT(backupExpired != NULL); storageRemoveP(storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE, strPtr(removeBackupLabel))); storageRemoveP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE INFO_COPY_EXT, strPtr(removeBackupLabel))); // Remove the backup from the info object infoBackupDataDelete(infoBackup, removeBackupLabel); if (strSize(backupExpired) == 0) strCat(backupExpired, strPtr(removeBackupLabel)); else strCatFmt(backupExpired, ", %s", strPtr(removeBackupLabel)); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Expire differential backups ***********************************************************************************************************************************/ static unsigned int expireDiffBackup(InfoBackup *infoBackup) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_BACKUP, infoBackup); FUNCTION_LOG_END(); ASSERT(infoBackup != NULL); unsigned int result = 0; MEM_CONTEXT_TEMP_BEGIN() { unsigned int differentialRetention = cfgOptionTest(cfgOptRepoRetentionDiff) ? cfgOptionUInt(cfgOptRepoRetentionDiff) : 0; // Find all the expired differential backups if (differentialRetention > 0) { // Get a list of full and differential backups. Full are considered differential for the purpose of retention. // Example: F1, D1, D2, F2, repo-retention-diff=2, then F1,D2,F2 will be retained, not D2 and D1 as might be expected. StringList *currentBackupList = infoBackupDataLabelList(infoBackup, backupRegExpP(.full = true, .differential = true)); // If there are more backups than the number to retain, then expire the oldest ones if (strLstSize(currentBackupList) > differentialRetention) { for (unsigned int diffIdx = 0; diffIdx < strLstSize(currentBackupList) - differentialRetention; diffIdx++) { // Skip if this is a full backup. Full backups only count as differential when deciding which differential // backups to expire. if (regExpMatchOne(backupRegExpP(.full = true), strLstGet(currentBackupList, diffIdx))) continue; // Get a list of all differential and incremental backups StringList *removeList = infoBackupDataLabelList( infoBackup, backupRegExpP(.differential = true, .incremental = true)); // Initialize the log message String *backupExpired = strNew(""); // Remove the manifest files in each directory and remove the backup from the current section of backup.info for (unsigned int rmvIdx = 0; rmvIdx < strLstSize(removeList); rmvIdx++) { // Remove all differential and incremental backups before the oldest valid differential // (removeBackupLabel < oldest valid differential) String *removeBackupLabel = strLstGet(removeList, rmvIdx); if (strCmp(removeBackupLabel, strLstGet(currentBackupList, diffIdx + 1)) < 0) { expireBackup(infoBackup, removeBackupLabel, backupExpired); result++; } } // If the message contains a comma, then prepend "set:" LOG_INFO_FMT( "expire diff backup %s%s", (strChr(backupExpired, ',') != -1 ? "set: " : ""), strPtr(backupExpired)); } } } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(UINT, result); } /*********************************************************************************************************************************** Expire full backups ***********************************************************************************************************************************/ static unsigned int expireFullBackup(InfoBackup *infoBackup) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_BACKUP, infoBackup); FUNCTION_LOG_END(); ASSERT(infoBackup != NULL); unsigned int result = 0; MEM_CONTEXT_TEMP_BEGIN() { unsigned int fullRetention = cfgOptionTest(cfgOptRepoRetentionFull) ? cfgOptionUInt(cfgOptRepoRetentionFull) : 0; // Find all the expired full backups if (fullRetention > 0) { // Get list of current full backups (default order is oldest to newest) StringList *currentBackupList = infoBackupDataLabelList(infoBackup, backupRegExpP(.full = true)); // If there are more full backups then the number to retain, then expire the oldest ones if (strLstSize(currentBackupList) > fullRetention) { // Expire all backups that depend on the full backup for (unsigned int fullIdx = 0; fullIdx < strLstSize(currentBackupList) - fullRetention; fullIdx++) { // The list of backups to remove includes the full backup and the default sort order will put it first StringList *removeList = infoBackupDataLabelList( infoBackup, strNewFmt("^%s.*", strPtr(strLstGet(currentBackupList, fullIdx)))); // Initialize the log message String *backupExpired = strNew(""); // Remove the manifest files in each directory and remove the backup from the current section of backup.info for (unsigned int rmvIdx = 0; rmvIdx < strLstSize(removeList); rmvIdx++) { String *removeBackupLabel = strLstGet(removeList, rmvIdx); expireBackup(infoBackup, removeBackupLabel, backupExpired); result++; } // If the message contains a comma, then prepend "set:" LOG_INFO_FMT( "expire full backup %s%s", (strChr(backupExpired, ',') != -1 ? "set: " : ""), strPtr(backupExpired)); } } } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(UINT, result); } /*********************************************************************************************************************************** Log detailed information about archive logs removed ***********************************************************************************************************************************/ static void logExpire(ArchiveExpired *archiveExpire, String *archiveId) { if (archiveExpire->start != NULL) { // Force out any remaining message LOG_DETAIL_FMT( "remove archive: archiveId = %s, start = %s, stop = %s", strPtr(archiveId), strPtr(archiveExpire->start), strPtr(archiveExpire->stop)); archiveExpire->start = NULL; } } /*********************************************************************************************************************************** Process archive retention ***********************************************************************************************************************************/ static void removeExpiredArchive(InfoBackup *infoBackup) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_BACKUP, infoBackup); FUNCTION_LOG_END(); ASSERT(infoBackup != NULL); MEM_CONTEXT_TEMP_BEGIN() { // Get the retention options. repo-archive-retention-type always has a value as it defaults to "full" const String *archiveRetentionType = cfgOptionStr(cfgOptRepoRetentionArchiveType); unsigned int archiveRetention = cfgOptionTest(cfgOptRepoRetentionArchive) ? cfgOptionUInt(cfgOptRepoRetentionArchive) : 0; // If archive retention is undefined, then ignore archiving. The user does not have to set this - it will be defaulted in // cfgLoadUpdateOption based on certain rules. if (archiveRetention == 0) { LOG_INFO_FMT("option '%s' is not set - archive logs will not be expired", cfgOptionName(cfgOptRepoRetentionArchive)); } else { // Determine which backup type to use for archive retention (full, differential, incremental) and get a list of the // remaining non-expired backups, from newest to oldest, based on the type. StringList *globalBackupRetentionList = NULL; if (strCmp(archiveRetentionType, STRDEF(CFGOPTVAL_TMP_REPO_RETENTION_ARCHIVE_TYPE_FULL)) == 0) { globalBackupRetentionList = strLstSort( infoBackupDataLabelList(infoBackup, backupRegExpP(.full = true)), sortOrderDesc); } else if (strCmp(archiveRetentionType, STRDEF(CFGOPTVAL_TMP_REPO_RETENTION_ARCHIVE_TYPE_DIFF)) == 0) { globalBackupRetentionList = strLstSort( infoBackupDataLabelList(infoBackup, backupRegExpP(.full = true, .differential = true)), sortOrderDesc); } else { // Incrementals can depend on Full or Diff so get a list of all incrementals globalBackupRetentionList = strLstSort( infoBackupDataLabelList(infoBackup, backupRegExpP(.full = true, .differential = true, .incremental = true)), sortOrderDesc); } // Expire archives. If no backups were found then preserve current archive logs - too soon to expire them. if (strLstSize(globalBackupRetentionList) > 0) { // Attempt to load the archive info file InfoArchive *infoArchive = infoArchiveLoadFile( storageRepo(), INFO_ARCHIVE_PATH_FILE_STR, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); InfoPg *infoArchivePgData = infoArchivePg(infoArchive); // Get a list of archive directories (e.g. 9.4-1, 10-2, etc) sorted by the db-id (number after the dash). StringList *listArchiveDisk = strLstSort( strLstComparatorSet( storageListP(storageRepo(), STORAGE_REPO_ARCHIVE_STR, .expression = STRDEF(REGEX_ARCHIVE_DIR_DB_VERSION)), archiveIdComparator), sortOrderAsc); StringList *globalBackupArchiveRetentionList = strLstNew(); // globalBackupRetentionList is ordered newest to oldest backup, so create globalBackupArchiveRetentionList of the // newest backups whose archives will be retained for (unsigned int idx = 0; idx < (archiveRetention < strLstSize(globalBackupRetentionList) ? archiveRetention : strLstSize(globalBackupRetentionList)); idx++) { strLstAdd(globalBackupArchiveRetentionList, strLstGet(globalBackupRetentionList, idx)); } // From newest to oldest, confirm the pgVersion and pgSystemId from the archive.info history id match that of the // same history id of the backup.info and if not, there is a mismatch between the info files so do not continue. // NOTE: If the archive.info file was reconstructed and contains history 4: version 10, sys-id 456 and history 3: // version 9.6, sys-id 123, but backup.info contains history 4 and 3 (identical to archive.info) but also 2 and 1 // then an error will not be thrown since only archive 4 and 3 would have existed and the others expired so // nothing really to do. for (unsigned int infoPgIdx = 0; infoPgIdx < infoPgDataTotal(infoArchivePgData); infoPgIdx++) { InfoPgData archiveInfoPgHistory = infoPgData(infoArchivePgData, infoPgIdx); InfoPgData backupInfoPgHistory = infoPgData(infoBackupPg(infoBackup), infoPgIdx); if (archiveInfoPgHistory.id != backupInfoPgHistory.id || archiveInfoPgHistory.systemId != backupInfoPgHistory.systemId || archiveInfoPgHistory.version != backupInfoPgHistory.version) { THROW(FormatError, "archive expiration cannot continue - archive and backup history lists do not match"); } } // Loop through the archive.info history from oldest to newest and if there is a corresponding directory on disk // then remove WAL that are not part of retention as long as the db:history id verion/system-id matches backup.info for (unsigned int pgIdx = infoPgDataTotal(infoArchivePgData) - 1; (int)pgIdx >= 0; pgIdx--) { String *archiveId = infoPgArchiveId(infoArchivePgData, pgIdx); StringList *localBackupRetentionList = strLstNew(); // Initialize the expired archive information for this archive ID ArchiveExpired archiveExpire = {.total = 0, .start = NULL, .stop = NULL}; for (unsigned int archiveIdx = 0; archiveIdx < strLstSize(listArchiveDisk); archiveIdx++) { // Is there an archive directory for this archiveId? If not, move on to the next. if (strCmp(archiveId, strLstGet(listArchiveDisk, archiveIdx)) != 0) continue; StringList *archiveSplit = strLstNewSplitZ(archiveId, "-"); unsigned int archivePgId = cvtZToUInt(strPtr(strLstGet(archiveSplit, 1))); // From the global list of backups to retain, create a list of backups, oldest to newest, associated with // this archiveId (e.g. 9.4-1), e.g. If globalBackupRetention has 4F, 3F, 2F, 1F then // localBackupRetentionList will have 1F, 2F, 3F, 4F (assuming they all have same history id) for (unsigned int retentionIdx = strLstSize(globalBackupRetentionList) - 1; (int)retentionIdx >=0; retentionIdx--) { for (unsigned int backupIdx = 0; backupIdx < infoBackupDataTotal(infoBackup); backupIdx++) { InfoBackupData backupData = infoBackupData(infoBackup, backupIdx); if (strCmp(backupData.backupLabel, strLstGet(globalBackupRetentionList, retentionIdx)) == 0 && backupData.backupPgId == archivePgId) { strLstAdd(localBackupRetentionList, backupData.backupLabel); } } } // If no backup to retain was found if (strLstSize(localBackupRetentionList) == 0) { // If this is not the current database, then delete the archive directory else do nothing since the // current DB archive directory must not be deleted InfoPgData currentPg = infoPgDataCurrent(infoArchivePgData); if (currentPg.id != archivePgId) { String *fullPath = storagePathP( storageRepo(), strNewFmt(STORAGE_REPO_ARCHIVE "/%s", strPtr(archiveId))); storagePathRemoveP(storageRepoWrite(), fullPath, .recurse = true); LOG_INFO_FMT("remove archive path: %s", strPtr(fullPath)); } // Continue to next directory break; } // If we get here, then a local backup was found for retention StringList *localBackupArchiveRetentionList = strLstNew(); // If the archive retention is less than or equal to the number of all backups, then perform selective // expiration if (archiveRetention <= strLstSize(globalBackupRetentionList)) { // From the full list of backups in archive retention, find the intersection of local backups to retain // from oldest to newest for (unsigned int globalIdx = strLstSize(globalBackupArchiveRetentionList) - 1; (int)globalIdx >= 0; globalIdx--) { for (unsigned int localIdx = 0; localIdx < strLstSize(localBackupRetentionList); localIdx++) { if (strCmp( strLstGet(globalBackupArchiveRetentionList, globalIdx), strLstGet(localBackupRetentionList, localIdx)) == 0) { strLstAdd(localBackupArchiveRetentionList, strLstGet(localBackupRetentionList, localIdx)); } } } } // Else if there are not enough backups yet globally to start archive expiration then set the archive // retention to the oldest backup so anything prior to that will be removed as it is not needed but // everything else is. This is incase there are old archives left around so that they don't stay around // forever. else { LOG_INFO_FMT( "full backup total < %u - using oldest full backup for %s archive retention", archiveRetention, strPtr(archiveId)); strLstAdd(localBackupArchiveRetentionList, strLstGet(localBackupRetentionList, 0)); } // If no local backups were found as part of retention then set the backup archive retention to the newest // backup so that the database is fully recoverable (can be recovered from the last backup through pitr) if (strLstSize(localBackupArchiveRetentionList) == 0) { strLstAdd( localBackupArchiveRetentionList, strLstGet(localBackupRetentionList, strLstSize(localBackupRetentionList) - 1)); } // Get the data for the backup selected for retention and all backups associated with this archive id List *archiveIdBackupList = lstNew(sizeof(InfoBackupData)); InfoBackupData archiveRetentionBackup = {0}; for (unsigned int infoBackupIdx = 0; infoBackupIdx < infoBackupDataTotal(infoBackup); infoBackupIdx++) { InfoBackupData archiveIdBackup = infoBackupData(infoBackup, infoBackupIdx); // If this is the backup selected for retention, store its data if (strCmp(archiveIdBackup.backupLabel, strLstGet(localBackupArchiveRetentionList, 0)) == 0) archiveRetentionBackup = infoBackupData(infoBackup, infoBackupIdx); // If this is a backup associated with this archive Id, then add it to the list to check if (archiveIdBackup.backupPgId == archivePgId) lstAdd(archiveIdBackupList, &archiveIdBackup); } // Only expire if the selected backup has archive data - backups performed with --no-online will // not have archive data and cannot be used for expiration. bool removeArchive = false; if (archiveRetentionBackup.backupArchiveStart != NULL) { // Get archive ranges to preserve. Because archive retention can be less than total retention it is // important to preserve archive that is required to make the older backups consistent even though they // cannot be played any further forward with PITR. String *archiveExpireMax = NULL; List *archiveRangeList = lstNew(sizeof(ArchiveRange)); // From the full list of backups, loop through those associated with this archiveId for (unsigned int backupListIdx = 0; backupListIdx < lstSize(archiveIdBackupList); backupListIdx++) { InfoBackupData *backupData = lstGet(archiveIdBackupList, backupListIdx); // If the backup is earlier than or the same as the retention backup and the backup has an // archive start if (strCmp(backupData->backupLabel, archiveRetentionBackup.backupLabel) <= 0 && backupData->backupArchiveStart != NULL) { ArchiveRange archiveRange = { .start = strDup(backupData->backupArchiveStart), .stop = NULL, }; // If this is not the retention backup, then set the stop, otherwise set the expire max to // the archive start of the archive to retain if (strCmp(backupData->backupLabel, archiveRetentionBackup.backupLabel) != 0) archiveRange.stop = strDup(backupData->backupArchiveStop); else archiveExpireMax = strDup(archiveRange.start); LOG_DETAIL_FMT( "archive retention on backup %s, archiveId = %s, start = %s%s", strPtr(backupData->backupLabel), strPtr(archiveId), strPtr(archiveRange.start), archiveRange.stop != NULL ? strPtr(strNewFmt(", stop = %s", strPtr(archiveRange.stop))) : ""); // Add the archive range to the list lstAdd(archiveRangeList, &archiveRange); } } // Get all major archive paths (timeline and first 32 bits of LSN) StringList *walPathList = strLstSort( storageListP( storageRepo(), strNewFmt(STORAGE_REPO_ARCHIVE "/%s", strPtr(archiveId)), .expression = STRDEF(WAL_SEGMENT_DIR_REGEXP)), sortOrderAsc); for (unsigned int walIdx = 0; walIdx < strLstSize(walPathList); walIdx++) { String *walPath = strLstGet(walPathList, walIdx); removeArchive = true; // Keep the path if it falls in the range of any backup in retention for (unsigned int rangeIdx = 0; rangeIdx < lstSize(archiveRangeList); rangeIdx++) { ArchiveRange *archiveRange = lstGet(archiveRangeList, rangeIdx); if (strCmp(walPath, strSubN(archiveRange->start, 0, 16)) >= 0 && (archiveRange->stop == NULL || strCmp(walPath, strSubN(archiveRange->stop, 0, 16)) <= 0)) { removeArchive = false; break; } } // Remove the entire directory if all archive is expired if (removeArchive) { storagePathRemoveP( storageRepoWrite(), strNewFmt(STORAGE_REPO_ARCHIVE "/%s/%s", strPtr(archiveId), strPtr(walPath)), .recurse = true); archiveExpire.total++; archiveExpire.start = strDup(walPath); archiveExpire.stop = strDup(walPath); } // Else delete individual files instead if the major path is less than or equal to the most recent // retention backup. This optimization prevents scanning though major paths that could not possibly // have anything to expire. else if (strCmp(walPath, strSubN(archiveExpireMax, 0, 16)) <= 0) { // Look for files in the archive directory StringList *walSubPathList = strLstSort( storageListP( storageRepo(), strNewFmt(STORAGE_REPO_ARCHIVE "/%s/%s", strPtr(archiveId), strPtr(walPath)), .expression = STRDEF("^[0-F]{24}.*$")), sortOrderAsc); for (unsigned int subIdx = 0; subIdx < strLstSize(walSubPathList); subIdx++) { removeArchive = true; String *walSubPath = strLstGet(walSubPathList, subIdx); // Determine if the individual archive log is used in a backup for (unsigned int rangeIdx = 0; rangeIdx < lstSize(archiveRangeList); rangeIdx++) { ArchiveRange *archiveRange = lstGet(archiveRangeList, rangeIdx); if (strCmp(strSubN(walSubPath, 0, 24), archiveRange->start) >= 0 && (archiveRange->stop == NULL || strCmp(strSubN(walSubPath, 0, 24), archiveRange->stop) <= 0)) { removeArchive = false; break; } } // Remove archive log if it is not used in a backup if (removeArchive) { storageRemoveP( storageRepoWrite(), strNewFmt(STORAGE_REPO_ARCHIVE "/%s/%s/%s", strPtr(archiveId), strPtr(walPath), strPtr(walSubPath))); // Track that this archive was removed archiveExpire.total++; archiveExpire.stop = strDup(strSubN(walSubPath, 0, 24)); if (archiveExpire.start == NULL) archiveExpire.start = strDup(strSubN(walSubPath, 0, 24)); } else logExpire(&archiveExpire, archiveId); } } } // Log if no archive was expired if (archiveExpire.total == 0) { LOG_DETAIL_FMT("no archive to remove, archiveId = %s", strPtr(archiveId)); } // Log if there is more to log else logExpire(&archiveExpire, archiveId); } } } } } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Remove expired backups from repo ***********************************************************************************************************************************/ static void removeExpiredBackup(InfoBackup *infoBackup) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_BACKUP, infoBackup); FUNCTION_LOG_END(); ASSERT(infoBackup != NULL); // Get all the current backups in backup.info StringList *currentBackupList = strLstSort(infoBackupDataLabelList(infoBackup, NULL), sortOrderDesc); StringList *backupList = strLstSort( storageListP( storageRepo(), STORAGE_REPO_BACKUP_STR, .expression = backupRegExpP(.full = true, .differential = true, .incremental = true)), sortOrderDesc); // Remove non-current backups from disk for (unsigned int backupIdx = 0; backupIdx < strLstSize(backupList); backupIdx++) { if (!strLstExists(currentBackupList, strLstGet(backupList, backupIdx))) { LOG_INFO_FMT("remove expired backup %s", strPtr(strLstGet(backupList, backupIdx))); storagePathRemoveP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s", strPtr(strLstGet(backupList, backupIdx))), .recurse = true); } } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Expire backups and archives ***********************************************************************************************************************************/ void cmdExpire(void) { FUNCTION_LOG_VOID(logLevelDebug); MEM_CONTEXT_TEMP_BEGIN() { // Get the repo storage in case it is remote and encryption settings need to be pulled down storageRepo(); // Load the backup.info InfoBackup *infoBackup = infoBackupLoadFileReconstruct( storageRepo(), INFO_BACKUP_PATH_FILE_STR, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); expireFullBackup(infoBackup); expireDiffBackup(infoBackup); infoBackupSaveFile( infoBackup, storageRepoWrite(), INFO_BACKUP_PATH_FILE_STR, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); removeExpiredBackup(infoBackup); removeExpiredArchive(infoBackup); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/command/expire/expire.h000066400000000000000000000012141362531507100223530ustar00rootroot00000000000000/*********************************************************************************************************************************** Expire Command ***********************************************************************************************************************************/ #ifndef COMMAND_EXPIRE_EXPIRE_H #define COMMAND_EXPIRE_EXPIRE_H /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void cmdExpire(void); #endif pgbackrest-release-2.24/src/command/help/000077500000000000000000000000001362531507100203445ustar00rootroot00000000000000pgbackrest-release-2.24/src/command/help/help.c000066400000000000000000000361011362531507100214410ustar00rootroot00000000000000/*********************************************************************************************************************************** Help Command ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include "common/debug.h" #include "common/io/handleWrite.h" #include "common/memContext.h" #include "config/config.h" #include "config/define.h" #include "version.h" /*********************************************************************************************************************************** Define the console width - use a fixed with of 80 since this should be safe on virtually all consoles ***********************************************************************************************************************************/ #define CONSOLE_WIDTH 80 /*********************************************************************************************************************************** Helper function for helpRender() to make output look good on a console ***********************************************************************************************************************************/ static String * helpRenderText(const String *text, size_t indent, bool indentFirst, size_t length) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, text); FUNCTION_LOG_PARAM(SIZE, indent); FUNCTION_LOG_PARAM(BOOL, indentFirst); FUNCTION_LOG_PARAM(SIZE, length); FUNCTION_LOG_END(); ASSERT(text != NULL); ASSERT(length > 0); String *result = strNew(""); // Split the text into paragraphs StringList *lineList = strLstNewSplitZ(text, "\n"); // Iterate through each paragraph and split the lines according to the line length for (unsigned int lineIdx = 0; lineIdx < strLstSize(lineList); lineIdx++) { // Add LF if there is already content if (strSize(result) != 0) strCat(result, "\n"); // Split the paragraph into lines that don't exceed the line length StringList *partList = strLstNewSplitSizeZ(strLstGet(lineList, lineIdx), " ", length - indent); for (unsigned int partIdx = 0; partIdx < strLstSize(partList); partIdx++) { // Indent when required if (partIdx != 0 || indentFirst) { if (partIdx != 0) strCat(result, "\n"); if (strSize(strLstGet(partList, partIdx))) strCatFmt(result, "%*s", (int)indent, ""); } // Add the line strCat(result, strPtr(strLstGet(partList, partIdx))); } } FUNCTION_LOG_RETURN(STRING, result); } /*********************************************************************************************************************************** Helper function for helpRender() to output values as strings ***********************************************************************************************************************************/ static const String * helpRenderValue(const Variant *value) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(VARIANT, value); FUNCTION_LOG_END(); const String *result = NULL; if (value != NULL) { if (varType(value) == varTypeBool) { if (varBool(value)) result = Y_STR; else result = N_STR; } else if (varType(value) == varTypeKeyValue) { String *resultTemp = strNew(""); const KeyValue *optionKv = varKv(value); const VariantList *keyList = kvKeyList(optionKv); for (unsigned int keyIdx = 0; keyIdx < varLstSize(keyList); keyIdx++) { if (keyIdx != 0) strCat(resultTemp, ", "); strCatFmt( resultTemp, "%s=%s", strPtr(varStr(varLstGet(keyList, keyIdx))), strPtr(varStrForce(kvGet(optionKv, varLstGet(keyList, keyIdx))))); } result = resultTemp; } else if (varType(value) == varTypeVariantList) { String *resultTemp = strNew(""); const VariantList *list = varVarLst(value); for (unsigned int listIdx = 0; listIdx < varLstSize(list); listIdx++) { if (listIdx != 0) strCat(resultTemp, ", "); strCatFmt(resultTemp, "%s", strPtr(varStr(varLstGet(list, listIdx)))); } result = resultTemp; } else result = varStrForce(value); } FUNCTION_LOG_RETURN_CONST(STRING, result); } /*********************************************************************************************************************************** Render help to a string ***********************************************************************************************************************************/ static String * helpRender(void) { FUNCTION_LOG_VOID(logLevelDebug); String *result = strNew(PROJECT_NAME " " PROJECT_VERSION); MEM_CONTEXT_TEMP_BEGIN() { // Message for more help when it is available const String *more = NULL; // Display general help if (cfgCommand() == cfgCmdHelp || cfgCommand() == cfgCmdNone) { strCat( result, " - General help\n" "\n" "Usage:\n" " " PROJECT_BIN " [options] [command]\n" "\n" "Commands:\n"); // Find size of longest command name size_t commandSizeMax = 0; for (ConfigCommand commandId = 0; commandId < CFG_COMMAND_TOTAL; commandId++) { if (commandId == cfgCmdNone || cfgCommandInternal(commandId)) continue; if (strlen(cfgCommandName(commandId)) > commandSizeMax) commandSizeMax = strlen(cfgCommandName(commandId)); } // Output help for each command for (ConfigCommand commandId = 0; commandId < CFG_COMMAND_TOTAL; commandId++) { if (commandId == cfgCmdNone || cfgCommandInternal(commandId)) continue; strCatFmt( result, " %s%*s%s\n", cfgCommandName(commandId), (int)(commandSizeMax - strlen(cfgCommandName(commandId)) + 2), "", strPtr( helpRenderText( STR(cfgDefCommandHelpSummary(cfgCommandDefIdFromId(commandId))), commandSizeMax + 6, false, CONSOLE_WIDTH))); } // Construct message for more help more = strNew("[command]"); } else { ConfigCommand commandId = cfgCommand(); ConfigDefineCommand commandDefId = cfgCommandDefIdFromId(commandId); const char *commandName = cfgCommandName(commandId); // Output command part of title strCatFmt(result, " - '%s' command", commandName); // If no additional params then this is command help if (strLstSize(cfgCommandParam()) == 0) { // Output command summary and description strCatFmt( result, " help\n" "\n" "%s\n" "\n" "%s\n", strPtr(helpRenderText(STR(cfgDefCommandHelpSummary(commandDefId)), 0, true, CONSOLE_WIDTH)), strPtr(helpRenderText(STR(cfgDefCommandHelpDescription(commandDefId)), 0, true, CONSOLE_WIDTH))); // Construct key/value of sections and options KeyValue *optionKv = kvNew(); size_t optionSizeMax = 0; for (unsigned int optionDefId = 0; optionDefId < cfgDefOptionTotal(); optionDefId++) { if (cfgDefOptionValid(commandDefId, optionDefId) && !cfgDefOptionInternal(commandDefId, optionDefId)) { const String *section = NULL; if (cfgDefOptionHelpSection(optionDefId) != NULL) section = strNew(cfgDefOptionHelpSection(optionDefId)); if (section == NULL || (!strEqZ(section, "general") && !strEqZ(section, "log") && !strEqZ(section, "repository") && !strEqZ(section, "stanza"))) { section = strNew("command"); } kvAdd(optionKv, VARSTR(section), VARINT((int)optionDefId)); if (strlen(cfgDefOptionName(optionDefId)) > optionSizeMax) optionSizeMax = strlen(cfgDefOptionName(optionDefId)); } } // Output sections StringList *sectionList = strLstSort(strLstNewVarLst(kvKeyList(optionKv)), sortOrderAsc); for (unsigned int sectionIdx = 0; sectionIdx < strLstSize(sectionList); sectionIdx++) { const String *section = strLstGet(sectionList, sectionIdx); strCatFmt(result, "\n%s Options:\n\n", strPtr(strFirstUpper(strDup(section)))); // Output options VariantList *optionList = kvGetList(optionKv, VARSTR(section)); for (unsigned int optionIdx = 0; optionIdx < varLstSize(optionList); optionIdx++) { ConfigDefineOption optionDefId = varInt(varLstGet(optionList, optionIdx)); ConfigOption optionId = cfgOptionIdFromDefId(optionDefId, 0); // Get option summary String *summary = strFirstLower(strNewN( cfgDefOptionHelpSummary(commandDefId, optionDefId), strlen(cfgDefOptionHelpSummary(commandDefId, optionDefId)) - 1)); // Ouput current and default values if they exist const String *defaultValue = helpRenderValue(cfgOptionDefault(optionId)); const String *value = NULL; if (cfgOptionSource(optionId) != cfgSourceDefault) value = helpRenderValue(cfgOption(optionId)); if (value != NULL || defaultValue != NULL) { strCat(summary, " ["); if (value != NULL) strCatFmt(summary, "current=%s", cfgDefOptionSecure(optionDefId) ? "" : strPtr(value)); if (defaultValue != NULL) { if (value != NULL) strCat(summary, ", "); strCatFmt(summary, "default=%s", strPtr(defaultValue)); } strCat(summary, "]"); } // Output option help strCatFmt( result, " --%s%*s%s\n", cfgDefOptionName(optionDefId), (int)(optionSizeMax - strlen(cfgDefOptionName(optionDefId)) + 2), "", strPtr(helpRenderText(summary, optionSizeMax + 6, false, CONSOLE_WIDTH))); } } // Construct message for more help if there are options if (optionSizeMax > 0) more = strNewFmt("%s [option]", commandName); } // Else option help for the specified command else { // Make sure only one option was specified if (strLstSize(cfgCommandParam()) > 1) THROW(ParamInvalidError, "only one option allowed for option help"); // Ensure the option is valid const char *optionName = strPtr(strLstGet(cfgCommandParam(), 0)); ConfigOption optionId = cfgOptionId(optionName); if (cfgOptionId(optionName) == -1) { if (cfgDefOptionId(optionName) != -1) optionId = cfgOptionIdFromDefId(cfgDefOptionId(optionName), 0); else THROW_FMT(OptionInvalidError, "option '%s' is not valid for command '%s'", optionName, commandName); } // Output option summary and description ConfigDefineOption optionDefId = cfgOptionDefIdFromId(optionId); strCatFmt( result, " - '%s' option help\n" "\n" "%s\n" "\n" "%s\n", optionName, strPtr(helpRenderText(STR(cfgDefOptionHelpSummary(commandDefId, optionDefId)), 0, true, CONSOLE_WIDTH)), strPtr(helpRenderText(STR(cfgDefOptionHelpDescription(commandDefId, optionDefId)), 0, true, CONSOLE_WIDTH))); // Ouput current and default values if they exist const String *defaultValue = helpRenderValue(cfgOptionDefault(optionId)); const String *value = NULL; if (cfgOptionSource(optionId) != cfgSourceDefault) value = helpRenderValue(cfgOption(optionId)); if (value != NULL || defaultValue != NULL) { strCat(result, "\n"); if (value != NULL) strCatFmt(result, "current: %s\n", cfgDefOptionSecure(optionDefId) ? "" : strPtr(value)); if (defaultValue != NULL) strCatFmt(result, "default: %s\n", strPtr(defaultValue)); } // Output alternate name (call it deprecated so the user will know not to use it) if (cfgDefOptionHelpNameAlt(optionDefId)) strCatFmt(result, "\ndeprecated name: %s\n", cfgDefOptionHelpNameAltValue(optionDefId, 0)); } } // If there is more help available output a message to let the user know if (more != NULL) strCatFmt(result, "\nUse '" PROJECT_BIN " help %s' for more information.\n", strPtr(more)); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING, result); } /*********************************************************************************************************************************** Render help and output to stdout ***********************************************************************************************************************************/ void cmdHelp(void) { FUNCTION_LOG_VOID(logLevelDebug); MEM_CONTEXT_TEMP_BEGIN() { ioHandleWriteOneStr(STDOUT_FILENO, helpRender()); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/command/help/help.h000066400000000000000000000012001362531507100214360ustar00rootroot00000000000000/*********************************************************************************************************************************** Help Command ***********************************************************************************************************************************/ #ifndef COMMAND_HELP_HELP_H #define COMMAND_HELP_HELP_H /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void cmdHelp(void); #endif pgbackrest-release-2.24/src/command/info/000077500000000000000000000000001362531507100203475ustar00rootroot00000000000000pgbackrest-release-2.24/src/command/info/info.c000066400000000000000000001144261362531507100214560ustar00rootroot00000000000000/*********************************************************************************************************************************** Info Command ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include "command/archive/common.h" #include "command/info/info.h" #include "common/debug.h" #include "common/io/handleWrite.h" #include "common/log.h" #include "common/memContext.h" #include "common/type/json.h" #include "config/config.h" #include "common/crypto/common.h" #include "info/info.h" #include "info/infoArchive.h" #include "info/infoBackup.h" #include "info/infoPg.h" #include "info/manifest.h" #include "postgres/interface.h" #include "storage/helper.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ STRING_STATIC(CFGOPTVAL_INFO_OUTPUT_TEXT_STR, "text"); // Naming convention: _KEY__VAR. If the key exists in multiple sections, then _ is omitted. VARIANT_STRDEF_STATIC(ARCHIVE_KEY_MIN_VAR, "min"); VARIANT_STRDEF_STATIC(ARCHIVE_KEY_MAX_VAR, "max"); VARIANT_STRDEF_STATIC(BACKREST_KEY_FORMAT_VAR, "format"); VARIANT_STRDEF_STATIC(BACKREST_KEY_VERSION_VAR, "version"); VARIANT_STRDEF_STATIC(BACKUP_KEY_BACKREST_VAR, "backrest"); VARIANT_STRDEF_STATIC(BACKUP_KEY_DATABASE_REF_VAR, "database-ref"); VARIANT_STRDEF_STATIC(BACKUP_KEY_INFO_VAR, "info"); VARIANT_STRDEF_STATIC(BACKUP_KEY_LABEL_VAR, "label"); VARIANT_STRDEF_STATIC(BACKUP_KEY_LINK_VAR, "link"); VARIANT_STRDEF_STATIC(BACKUP_KEY_PRIOR_VAR, "prior"); VARIANT_STRDEF_STATIC(BACKUP_KEY_REFERENCE_VAR, "reference"); VARIANT_STRDEF_STATIC(BACKUP_KEY_TABLESPACE_VAR, "tablespace"); VARIANT_STRDEF_STATIC(BACKUP_KEY_TIMESTAMP_VAR, "timestamp"); VARIANT_STRDEF_STATIC(BACKUP_KEY_TYPE_VAR, "type"); VARIANT_STRDEF_STATIC(DB_KEY_ID_VAR, "id"); VARIANT_STRDEF_STATIC(DB_KEY_SYSTEM_ID_VAR, "system-id"); VARIANT_STRDEF_STATIC(DB_KEY_VERSION_VAR, "version"); VARIANT_STRDEF_STATIC(INFO_KEY_REPOSITORY_VAR, "repository"); VARIANT_STRDEF_STATIC(KEY_ARCHIVE_VAR, "archive"); VARIANT_STRDEF_STATIC(KEY_DATABASE_VAR, "database"); VARIANT_STRDEF_STATIC(KEY_DELTA_VAR, "delta"); VARIANT_STRDEF_STATIC(KEY_DESTINATION_VAR, "destination"); VARIANT_STRDEF_STATIC(KEY_NAME_VAR, "name"); VARIANT_STRDEF_STATIC(KEY_OID_VAR, "oid"); VARIANT_STRDEF_STATIC(KEY_SIZE_VAR, "size"); VARIANT_STRDEF_STATIC(KEY_START_VAR, "start"); VARIANT_STRDEF_STATIC(KEY_STOP_VAR, "stop"); VARIANT_STRDEF_STATIC(STANZA_KEY_BACKUP_VAR, "backup"); VARIANT_STRDEF_STATIC(STANZA_KEY_CIPHER_VAR, "cipher"); VARIANT_STRDEF_STATIC(STANZA_KEY_STATUS_VAR, "status"); VARIANT_STRDEF_STATIC(STANZA_KEY_DB_VAR, "db"); VARIANT_STRDEF_STATIC(STATUS_KEY_CODE_VAR, "code"); VARIANT_STRDEF_STATIC(STATUS_KEY_MESSAGE_VAR, "message"); #define INFO_STANZA_STATUS_OK "ok" #define INFO_STANZA_STATUS_ERROR "error" #define INFO_STANZA_STATUS_CODE_OK 0 STRING_STATIC(INFO_STANZA_STATUS_MESSAGE_OK_STR, "ok"); #define INFO_STANZA_STATUS_CODE_MISSING_STANZA_PATH 1 STRING_STATIC(INFO_STANZA_STATUS_MESSAGE_MISSING_STANZA_PATH_STR, "missing stanza path"); #define INFO_STANZA_STATUS_CODE_NO_BACKUP 2 STRING_STATIC(INFO_STANZA_STATUS_MESSAGE_NO_BACKUP_STR, "no valid backups"); #define INFO_STANZA_STATUS_CODE_MISSING_STANZA_DATA 3 STRING_STATIC(INFO_STANZA_STATUS_MESSAGE_MISSING_STANZA_DATA_STR, "missing stanza data"); /*********************************************************************************************************************************** Set error status code and message for the stanza to the code and message passed. ***********************************************************************************************************************************/ static void stanzaStatus(const int code, const String *message, Variant *stanzaInfo) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT, code); FUNCTION_TEST_PARAM(STRING, message); FUNCTION_TEST_PARAM(VARIANT, stanzaInfo); FUNCTION_TEST_END(); ASSERT(code >= 0 && code <= 3); ASSERT(message != NULL); ASSERT(stanzaInfo != NULL); KeyValue *statusKv = kvPutKv(varKv(stanzaInfo), STANZA_KEY_STATUS_VAR); kvAdd(statusKv, STATUS_KEY_CODE_VAR, VARINT(code)); kvAdd(statusKv, STATUS_KEY_MESSAGE_VAR, VARSTR(message)); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Set the data for the archive section of the stanza for the database info from the backup.info file. ***********************************************************************************************************************************/ static void archiveDbList(const String *stanza, const InfoPgData *pgData, VariantList *archiveSection, const InfoArchive *info, bool currentDb) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, stanza); FUNCTION_TEST_PARAM_P(INFO_PG_DATA, pgData); FUNCTION_TEST_PARAM(VARIANT, archiveSection); FUNCTION_TEST_PARAM(BOOL, currentDb); FUNCTION_TEST_END(); ASSERT(stanza != NULL); ASSERT(pgData != NULL); ASSERT(archiveSection != NULL); // With multiple DB versions, the backup.info history-id may not be the same as archive.info history-id, so the // archive path must be built by retrieving the archive id given the db version and system id of the backup.info file. // If there is no match, an error will be thrown. const String *archiveId = infoArchiveIdHistoryMatch(info, pgData->id, pgData->version, pgData->systemId); String *archivePath = strNewFmt(STORAGE_PATH_ARCHIVE "/%s/%s", strPtr(stanza), strPtr(archiveId)); String *archiveStart = NULL; String *archiveStop = NULL; Variant *archiveInfo = varNewKv(kvNew()); // Get a list of WAL directories in the archive repo from oldest to newest, if any exist StringList *walDir = strLstSort( storageListP(storageRepo(), archivePath, .expression = WAL_SEGMENT_DIR_REGEXP_STR), sortOrderAsc); if (strLstSize(walDir) > 0) { // Not every WAL dir has WAL files so check each for (unsigned int idx = 0; idx < strLstSize(walDir); idx++) { // Get a list of all WAL in this WAL dir StringList *list = storageListP( storageRepo(), strNewFmt("%s/%s", strPtr(archivePath), strPtr(strLstGet(walDir, idx))), .expression = WAL_SEGMENT_FILE_REGEXP_STR); // If wal segments are found, get the oldest one as the archive start if (strLstSize(list) > 0) { // Sort the list from oldest to newest to get the oldest starting WAL archived for this DB list = strLstSort(list, sortOrderAsc); archiveStart = strSubN(strLstGet(list, 0), 0, 24); break; } } // Iterate through the directory list in the reverse so processing newest first. Cast comparison to an int for readability. for (unsigned int idx = strLstSize(walDir) - 1; (int)idx >= 0; idx--) { // Get a list of all WAL in this WAL dir StringList *list = storageListP( storageRepo(), strNewFmt("%s/%s", strPtr(archivePath), strPtr(strLstGet(walDir, idx))), .expression = WAL_SEGMENT_FILE_REGEXP_STR); // If wal segments are found, get the newest one as the archive stop if (strLstSize(list) > 0) { // Sort the list from newest to oldest to get the newest ending WAL archived for this DB list = strLstSort(list, sortOrderDesc); archiveStop = strSubN(strLstGet(list, 0), 0, 24); break; } } } // If there is an archive or the database is the current database then store it if (currentDb || archiveStart != NULL) { // Add empty database section to archiveInfo and then fill in database id from the backup.info KeyValue *databaseInfo = kvPutKv(varKv(archiveInfo), KEY_DATABASE_VAR); kvAdd(databaseInfo, DB_KEY_ID_VAR, VARUINT(pgData->id)); kvPut(varKv(archiveInfo), DB_KEY_ID_VAR, VARSTR(archiveId)); kvPut(varKv(archiveInfo), ARCHIVE_KEY_MIN_VAR, (archiveStart != NULL ? VARSTR(archiveStart) : (Variant *)NULL)); kvPut(varKv(archiveInfo), ARCHIVE_KEY_MAX_VAR, (archiveStop != NULL ? VARSTR(archiveStop) : (Variant *)NULL)); varLstAdd(archiveSection, archiveInfo); } FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** For each current backup in the backup.info file of the stanza, set the data for the backup section. ***********************************************************************************************************************************/ static void backupList(VariantList *backupSection, InfoBackup *info, const String *backupLabel) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, backupSection); FUNCTION_TEST_PARAM(INFO_BACKUP, info); FUNCTION_TEST_PARAM(STRING, backupLabel); FUNCTION_TEST_END(); ASSERT(backupSection != NULL); ASSERT(info != NULL); // For each current backup, get the label and corresponding data and build the backup section for (unsigned int keyIdx = 0; keyIdx < infoBackupDataTotal(info); keyIdx++) { // Get the backup data InfoBackupData backupData = infoBackupData(info, keyIdx); Variant *backupInfo = varNewKv(kvNew()); // main keys kvPut(varKv(backupInfo), BACKUP_KEY_LABEL_VAR, VARSTR(backupData.backupLabel)); kvPut(varKv(backupInfo), BACKUP_KEY_TYPE_VAR, VARSTR(backupData.backupType)); kvPut( varKv(backupInfo), BACKUP_KEY_PRIOR_VAR, (backupData.backupPrior != NULL ? VARSTR(backupData.backupPrior) : NULL)); kvPut( varKv(backupInfo), BACKUP_KEY_REFERENCE_VAR, (backupData.backupReference != NULL ? varNewVarLst(varLstNewStrLst(backupData.backupReference)) : NULL)); // archive section KeyValue *archiveInfo = kvPutKv(varKv(backupInfo), KEY_ARCHIVE_VAR); kvAdd( archiveInfo, KEY_START_VAR, (backupData.backupArchiveStart != NULL ? VARSTR(backupData.backupArchiveStart) : NULL)); kvAdd( archiveInfo, KEY_STOP_VAR, (backupData.backupArchiveStop != NULL ? VARSTR(backupData.backupArchiveStop) : NULL)); // backrest section KeyValue *backrestInfo = kvPutKv(varKv(backupInfo), BACKUP_KEY_BACKREST_VAR); kvAdd(backrestInfo, BACKREST_KEY_FORMAT_VAR, VARUINT(backupData.backrestFormat)); kvAdd(backrestInfo, BACKREST_KEY_VERSION_VAR, VARSTR(backupData.backrestVersion)); // database section KeyValue *dbInfo = kvPutKv(varKv(backupInfo), KEY_DATABASE_VAR); kvAdd(dbInfo, DB_KEY_ID_VAR, VARUINT(backupData.backupPgId)); // info section KeyValue *infoInfo = kvPutKv(varKv(backupInfo), BACKUP_KEY_INFO_VAR); kvAdd(infoInfo, KEY_SIZE_VAR, VARUINT64(backupData.backupInfoSize)); kvAdd(infoInfo, KEY_DELTA_VAR, VARUINT64(backupData.backupInfoSizeDelta)); // info:repository section KeyValue *repoInfo = kvPutKv(infoInfo, INFO_KEY_REPOSITORY_VAR); kvAdd(repoInfo, KEY_SIZE_VAR, VARUINT64(backupData.backupInfoRepoSize)); kvAdd(repoInfo, KEY_DELTA_VAR, VARUINT64(backupData.backupInfoRepoSizeDelta)); // timestamp section KeyValue *timeInfo = kvPutKv(varKv(backupInfo), BACKUP_KEY_TIMESTAMP_VAR); // time_t is generally a signed int so cast it to uint64 since it can never be negative (before 1970) in our system kvAdd(timeInfo, KEY_START_VAR, VARUINT64((uint64_t)backupData.backupTimestampStart)); kvAdd(timeInfo, KEY_STOP_VAR, VARUINT64((uint64_t)backupData.backupTimestampStop)); // If a backup label was specified and this is that label, then get the manifest if (backupLabel != NULL && strEq(backupData.backupLabel, backupLabel)) { // Load the manifest file const Manifest *manifest = manifestLoadFile( storageRepo(), strNewFmt(STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE, strPtr(backupLabel)), cipherType(cfgOptionStr(cfgOptRepoCipherType)), infoPgCipherPass(infoBackupPg(info))); // Get the list of databases in this backup VariantList *databaseSection = varLstNew(); for (unsigned int dbIdx = 0; dbIdx < manifestDbTotal(manifest); dbIdx++) { const ManifestDb *db = manifestDb(manifest, dbIdx); // Do not display template databases if (db->id > db->lastSystemId) { Variant *database = varNewKv(kvNew()); kvPut(varKv(database), KEY_NAME_VAR, VARSTR(db->name)); kvPut(varKv(database), KEY_OID_VAR, VARUINT64(db->id)); varLstAdd(databaseSection, database); } } // Add the database section even if none found kvPut(varKv(backupInfo), BACKUP_KEY_DATABASE_REF_VAR, varNewVarLst(databaseSection)); // Get symlinks and tablespaces VariantList *linkSection = varLstNew(); VariantList *tablespaceSection = varLstNew(); for (unsigned int targetIdx = 0; targetIdx < manifestTargetTotal(manifest); targetIdx++) { const ManifestTarget *target = manifestTarget(manifest, targetIdx); Variant *link = varNewKv(kvNew()); Variant *tablespace = varNewKv(kvNew()); if (target->type == manifestTargetTypeLink) { if (target->tablespaceName != NULL) { kvPut(varKv(tablespace), KEY_NAME_VAR, VARSTR(target->tablespaceName)); kvPut(varKv(tablespace), KEY_DESTINATION_VAR, VARSTR(target->path)); kvPut(varKv(tablespace), KEY_OID_VAR, VARUINT64(target->tablespaceId)); varLstAdd(tablespaceSection, tablespace); } else if (target->file != NULL) { kvPut(varKv(link), KEY_NAME_VAR, varNewStr(target->file)); kvPut( varKv(link), KEY_DESTINATION_VAR, varNewStr(strNewFmt("%s/%s", strPtr(target->path), strPtr(target->file)))); varLstAdd(linkSection, link); } else { kvPut(varKv(link), KEY_NAME_VAR, VARSTR(manifestPathPg(target->name))); kvPut(varKv(link), KEY_DESTINATION_VAR, VARSTR(target->path)); varLstAdd(linkSection, link); } } } kvPut(varKv(backupInfo), BACKUP_KEY_LINK_VAR, (varLstSize(linkSection) > 0 ? varNewVarLst(linkSection) : NULL)); kvPut( varKv(backupInfo), BACKUP_KEY_TABLESPACE_VAR, (varLstSize(tablespaceSection) > 0 ? varNewVarLst(tablespaceSection) : NULL)); } varLstAdd(backupSection, backupInfo); } FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Set the stanza data for each stanza found in the repo. ***********************************************************************************************************************************/ static VariantList * stanzaInfoList(const String *stanza, StringList *stanzaList, const String *backupLabel) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, stanza); FUNCTION_TEST_PARAM(STRING_LIST, stanzaList); FUNCTION_TEST_PARAM(STRING, backupLabel); FUNCTION_TEST_END(); ASSERT(stanzaList != NULL); VariantList *result = varLstNew(); bool stanzaFound = false; // Sort the list stanzaList = strLstSort(stanzaList, sortOrderAsc); for (unsigned int idx = 0; idx < strLstSize(stanzaList); idx++) { String *stanzaListName = strLstGet(stanzaList, idx); // If a specific stanza has been requested and this is not it, then continue to the next in the list else indicate found if (stanza != NULL) { if (!strEq(stanza, stanzaListName)) continue; else stanzaFound = true; } // Create the stanzaInfo and section variables Variant *stanzaInfo = varNewKv(kvNew()); VariantList *dbSection = varLstNew(); VariantList *backupSection = varLstNew(); VariantList *archiveSection = varLstNew(); InfoBackup *info = NULL; // Catch certain errors TRY_BEGIN() { // Attempt to load the backup info file info = infoBackupLoadFile( storageRepo(), strNewFmt(STORAGE_PATH_BACKUP "/%s/%s", strPtr(stanzaListName), INFO_BACKUP_FILE), cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); } CATCH(FileMissingError) { // If there is no backup.info then set the status to indicate missing stanzaStatus( INFO_STANZA_STATUS_CODE_MISSING_STANZA_DATA, INFO_STANZA_STATUS_MESSAGE_MISSING_STANZA_DATA_STR, stanzaInfo); } CATCH(CryptoError) { // If a reason for the error is due to a an encryption error, add a hint THROW_FMT( CryptoError, "%s\n" "HINT: use option --stanza if encryption settings are different for the stanza than the global settings.", errorMessage()); } TRY_END(); // Set the stanza name and cipher. Since we may not be going through the config parsing system, default the cipher to NONE. kvPut(varKv(stanzaInfo), KEY_NAME_VAR, VARSTR(stanzaListName)); kvPut(varKv(stanzaInfo), STANZA_KEY_CIPHER_VAR, VARSTR(CIPHER_TYPE_NONE_STR)); // If the backup.info file exists, get the database history information (newest to oldest) and corresponding archive if (info != NULL) { // Determine if encryption is enabled by checking for a cipher passphrase. This is not ideal since it does not tell us // what type of encryption is in use, but to figure that out we need a way to query the (possibly) remote repo to find // out. No such mechanism exists so this will have to do for now. Probably the easiest thing to do is store the // cipher type in the info file. if (infoPgCipherPass(infoBackupPg(info)) != NULL) kvPut(varKv(stanzaInfo), STANZA_KEY_CIPHER_VAR, VARSTR(CIPHER_TYPE_AES_256_CBC_STR)); for (unsigned int pgIdx = infoPgDataTotal(infoBackupPg(info)) - 1; (int)pgIdx >= 0; pgIdx--) { InfoPgData pgData = infoPgData(infoBackupPg(info), pgIdx); Variant *pgInfo = varNewKv(kvNew()); kvPut(varKv(pgInfo), DB_KEY_ID_VAR, VARUINT(pgData.id)); kvPut(varKv(pgInfo), DB_KEY_SYSTEM_ID_VAR, VARUINT64(pgData.systemId)); kvPut(varKv(pgInfo), DB_KEY_VERSION_VAR, VARSTR(pgVersionToStr(pgData.version))); varLstAdd(dbSection, pgInfo); // Get the archive info for the DB from the archive.info file InfoArchive *info = infoArchiveLoadFile( storageRepo(), strNewFmt(STORAGE_PATH_ARCHIVE "/%s/%s", strPtr(stanzaListName), INFO_ARCHIVE_FILE), cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); archiveDbList(stanzaListName, &pgData, archiveSection, info, (pgIdx == 0 ? true : false)); } // Get data for all existing backups for this stanza backupList(backupSection, info, backupLabel); } // Add the database history, backup and archive sections to the stanza info kvPut(varKv(stanzaInfo), STANZA_KEY_DB_VAR, varNewVarLst(dbSection)); kvPut(varKv(stanzaInfo), STANZA_KEY_BACKUP_VAR, varNewVarLst(backupSection)); kvPut(varKv(stanzaInfo), KEY_ARCHIVE_VAR, varNewVarLst(archiveSection)); // If a status has not already been set and there are no backups then set status to no backup if (kvGet(varKv(stanzaInfo), STANZA_KEY_STATUS_VAR) == NULL && varLstSize(kvGetList(varKv(stanzaInfo), STANZA_KEY_BACKUP_VAR)) == 0) { stanzaStatus(INFO_STANZA_STATUS_CODE_NO_BACKUP, INFO_STANZA_STATUS_MESSAGE_NO_BACKUP_STR, stanzaInfo); } // If a status has still not been set then set it to OK if (kvGet(varKv(stanzaInfo), STANZA_KEY_STATUS_VAR) == NULL) stanzaStatus(INFO_STANZA_STATUS_CODE_OK, INFO_STANZA_STATUS_MESSAGE_OK_STR, stanzaInfo); varLstAdd(result, stanzaInfo); } // If looking for a specific stanza and it was not found, set minimum info and the status if (stanza != NULL && !stanzaFound) { Variant *stanzaInfo = varNewKv(kvNew()); kvPut(varKv(stanzaInfo), KEY_NAME_VAR, VARSTR(stanza)); kvPut(varKv(stanzaInfo), STANZA_KEY_DB_VAR, varNewVarLst(varLstNew())); kvPut(varKv(stanzaInfo), STANZA_KEY_BACKUP_VAR, varNewVarLst(varLstNew())); stanzaStatus(INFO_STANZA_STATUS_CODE_MISSING_STANZA_PATH, INFO_STANZA_STATUS_MESSAGE_MISSING_STANZA_PATH_STR, stanzaInfo); varLstAdd(result, stanzaInfo); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Format the text output for each database of the stanza. ***********************************************************************************************************************************/ static void formatTextDb(const KeyValue *stanzaInfo, String *resultStr, const String *backupLabel) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(KEY_VALUE, stanzaInfo); FUNCTION_TEST_PARAM(STRING, resultStr); FUNCTION_TEST_PARAM(STRING, backupLabel); FUNCTION_TEST_END(); ASSERT(stanzaInfo != NULL); VariantList *dbSection = kvGetList(stanzaInfo, STANZA_KEY_DB_VAR); VariantList *archiveSection = kvGetList(stanzaInfo, KEY_ARCHIVE_VAR); VariantList *backupSection = kvGetList(stanzaInfo, STANZA_KEY_BACKUP_VAR); // For each database (working from oldest to newest) find the corresponding archive and backup info for (unsigned int dbIdx = 0; dbIdx < varLstSize(dbSection); dbIdx++) { KeyValue *pgInfo = varKv(varLstGet(dbSection, dbIdx)); unsigned int dbId = varUInt(kvGet(pgInfo, DB_KEY_ID_VAR)); bool backupInDb = false; // If a backup label was specified then see if it exists for this database if (backupLabel != NULL) { for (unsigned int backupIdx = 0; backupIdx < varLstSize(backupSection); backupIdx++) { KeyValue *backupInfo = varKv(varLstGet(backupSection, backupIdx)); KeyValue *backupDbInfo = varKv(kvGet(backupInfo, KEY_DATABASE_VAR)); unsigned int backupDbId = varUInt(kvGet(backupDbInfo, DB_KEY_ID_VAR)); // If the backup requested is in this database then break from the loop if (backupDbId == dbId) { backupInDb = true; break; } } } // If backup label was requested but was not found in this database then continue to next database if (backupLabel != NULL && !backupInDb) continue; // List is ordered so 0 is always the current DB index if (dbIdx == varLstSize(dbSection) - 1) strCat(resultStr, "\n db (current)"); // Get the min/max archive information for the database String *archiveResult = strNew(""); for (unsigned int archiveIdx = 0; archiveIdx < varLstSize(archiveSection); archiveIdx++) { KeyValue *archiveInfo = varKv(varLstGet(archiveSection, archiveIdx)); KeyValue *archiveDbInfo = varKv(kvGet(archiveInfo, KEY_DATABASE_VAR)); unsigned int archiveDbId = varUInt(kvGet(archiveDbInfo, DB_KEY_ID_VAR)); if (archiveDbId == dbId) { strCatFmt( archiveResult, "\n wal archive min/max (%s): ", strPtr(varStr(kvGet(archiveInfo, DB_KEY_ID_VAR)))); // Get the archive min/max if there are any archives for the database if (kvGet(archiveInfo, ARCHIVE_KEY_MIN_VAR) != NULL) { strCatFmt( archiveResult, "%s/%s\n", strPtr(varStr(kvGet(archiveInfo, ARCHIVE_KEY_MIN_VAR))), strPtr(varStr(kvGet(archiveInfo, ARCHIVE_KEY_MAX_VAR)))); } else strCat(archiveResult, "none present\n"); } } // Get the information for each current backup String *backupResult = strNew(""); for (unsigned int backupIdx = 0; backupIdx < varLstSize(backupSection); backupIdx++) { KeyValue *backupInfo = varKv(varLstGet(backupSection, backupIdx)); KeyValue *backupDbInfo = varKv(kvGet(backupInfo, KEY_DATABASE_VAR)); unsigned int backupDbId = varUInt(kvGet(backupDbInfo, DB_KEY_ID_VAR)); // If a backup label was specified but this is not it then continue if (backupLabel != NULL && !strEq(varStr(kvGet(backupInfo, BACKUP_KEY_LABEL_VAR)), backupLabel)) continue; if (backupDbId == dbId) { strCatFmt( backupResult, "\n %s backup: %s\n", strPtr(varStr(kvGet(backupInfo, BACKUP_KEY_TYPE_VAR))), strPtr(varStr(kvGet(backupInfo, BACKUP_KEY_LABEL_VAR)))); KeyValue *timestampInfo = varKv(kvGet(backupInfo, BACKUP_KEY_TIMESTAMP_VAR)); // Get and format the backup start/stop time char timeBufferStart[20]; char timeBufferStop[20]; time_t timeStart = (time_t)varUInt64(kvGet(timestampInfo, KEY_START_VAR)); time_t timeStop = (time_t)varUInt64(kvGet(timestampInfo, KEY_STOP_VAR)); strftime(timeBufferStart, sizeof(timeBufferStart), "%Y-%m-%d %H:%M:%S", localtime(&timeStart)); strftime(timeBufferStop, sizeof(timeBufferStop), "%Y-%m-%d %H:%M:%S", localtime(&timeStop)); strCatFmt( backupResult, " timestamp start/stop: %s / %s\n", timeBufferStart, timeBufferStop); strCat(backupResult, " wal start/stop: "); KeyValue *archiveBackupInfo = varKv(kvGet(backupInfo, KEY_ARCHIVE_VAR)); if (kvGet(archiveBackupInfo, KEY_START_VAR) != NULL && kvGet(archiveBackupInfo, KEY_STOP_VAR) != NULL) { strCatFmt(backupResult, "%s / %s\n", strPtr(varStr(kvGet(archiveBackupInfo, KEY_START_VAR))), strPtr(varStr(kvGet(archiveBackupInfo, KEY_STOP_VAR)))); } else strCat(backupResult, "n/a\n"); KeyValue *info = varKv(kvGet(backupInfo, BACKUP_KEY_INFO_VAR)); strCatFmt( backupResult, " database size: %s, backup size: %s\n", strPtr(strSizeFormat(varUInt64Force(kvGet(info, KEY_SIZE_VAR)))), strPtr(strSizeFormat(varUInt64Force(kvGet(info, KEY_DELTA_VAR))))); KeyValue *repoInfo = varKv(kvGet(info, INFO_KEY_REPOSITORY_VAR)); strCatFmt( backupResult, " repository size: %s, repository backup size: %s\n", strPtr(strSizeFormat(varUInt64Force(kvGet(repoInfo, KEY_SIZE_VAR)))), strPtr(strSizeFormat(varUInt64Force(kvGet(repoInfo, KEY_DELTA_VAR))))); if (kvGet(backupInfo, BACKUP_KEY_REFERENCE_VAR) != NULL) { StringList *referenceList = strLstNewVarLst(varVarLst(kvGet(backupInfo, BACKUP_KEY_REFERENCE_VAR))); strCatFmt(backupResult, " backup reference list: %s\n", strPtr(strLstJoin(referenceList, ", "))); } if (kvGet(backupInfo, BACKUP_KEY_DATABASE_REF_VAR) != NULL) { VariantList *dbSection = kvGetList(backupInfo, BACKUP_KEY_DATABASE_REF_VAR); strCat(backupResult, " database list:"); if (varLstSize(dbSection) == 0) strCat(backupResult, " none\n"); else { for (unsigned int dbIdx = 0; dbIdx < varLstSize(dbSection); dbIdx++) { KeyValue *db = varKv(varLstGet(dbSection, dbIdx)); strCatFmt( backupResult, " %s (%s)", strPtr(varStr(kvGet(db, KEY_NAME_VAR))), strPtr(varStrForce(kvGet(db, KEY_OID_VAR)))); if (dbIdx != varLstSize(dbSection) - 1) strCat(backupResult, ","); } strCat(backupResult, "\n"); } } if (kvGet(backupInfo, BACKUP_KEY_LINK_VAR) != NULL) { VariantList *linkSection = kvGetList(backupInfo, BACKUP_KEY_LINK_VAR); strCat(backupResult, " symlinks:\n"); for (unsigned int linkIdx = 0; linkIdx < varLstSize(linkSection); linkIdx++) { KeyValue *link = varKv(varLstGet(linkSection, linkIdx)); strCatFmt( backupResult, " %s => %s", strPtr(varStr(kvGet(link, KEY_NAME_VAR))), strPtr(varStr(kvGet(link, KEY_DESTINATION_VAR)))); if (linkIdx != varLstSize(linkSection) - 1) strCat(backupResult, "\n"); } strCat(backupResult, "\n"); } if (kvGet(backupInfo, BACKUP_KEY_TABLESPACE_VAR) != NULL) { VariantList *tablespaceSection = kvGetList(backupInfo, BACKUP_KEY_TABLESPACE_VAR); strCat(backupResult, " tablespaces:\n"); for (unsigned int tblIdx = 0; tblIdx < varLstSize(tablespaceSection); tblIdx++) { KeyValue *tablespace = varKv(varLstGet(tablespaceSection, tblIdx)); strCatFmt( backupResult, " %s (%s) => %s", strPtr(varStr(kvGet(tablespace, KEY_NAME_VAR))), strPtr(varStrForce(kvGet(tablespace, KEY_OID_VAR))), strPtr(varStr(kvGet(tablespace, KEY_DESTINATION_VAR)))); if (tblIdx != varLstSize(tablespaceSection) - 1) strCat(backupResult, "\n"); } strCat(backupResult, "\n"); } } } // If there is data to display, then display it. if (strSize(archiveResult) > 0 || strSize(backupResult) > 0) { if (dbIdx != varLstSize(dbSection) - 1) strCat(resultStr, "\n db (prior)"); if (strSize(archiveResult) > 0) strCat(resultStr, strPtr(archiveResult)); if (strSize(backupResult) > 0) strCat(resultStr, strPtr(backupResult)); } } FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Render the information for the stanza based on the command parameters. ***********************************************************************************************************************************/ static String * infoRender(void) { FUNCTION_LOG_VOID(logLevelDebug); String *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { // Get stanza if specified const String *stanza = cfgOptionTest(cfgOptStanza) ? cfgOptionStr(cfgOptStanza) : NULL; // Get the backup label if specified const String *backupLabel = cfgOptionTest(cfgOptSet) ? cfgOptionStr(cfgOptSet) : NULL; // Get the repo storage in case it is remote and encryption settings need to be pulled down storageRepo(); // If a backup set was specified, see if the manifest exists if (backupLabel != NULL) { if (!strEq(cfgOptionStr(cfgOptOutput), CFGOPTVAL_INFO_OUTPUT_TEXT_STR)) THROW(ConfigError, "option 'set' is currently only valid for text output"); if (!storageExistsP(storageRepo(), strNewFmt(STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE, strPtr(backupLabel)))) { THROW_FMT( FileMissingError, "manifest does not exist for backup '%s'\n" "HINT: is the backup listed when running the info command with --stanza option only?", strPtr(backupLabel)); } } // Get a list of stanzas in the backup directory. StringList *stanzaList = storageListP(storageRepo(), STORAGE_PATH_BACKUP_STR); VariantList *infoList = varLstNew(); String *resultStr = strNew(""); // If the backup storage exists, then search for and process any stanzas if (strLstSize(stanzaList) > 0) infoList = stanzaInfoList(stanza, stanzaList, backupLabel); // Format text output if (strEq(cfgOptionStr(cfgOptOutput), CFGOPTVAL_INFO_OUTPUT_TEXT_STR)) { // Process any stanza directories if (varLstSize(infoList) > 0) { for (unsigned int stanzaIdx = 0; stanzaIdx < varLstSize(infoList); stanzaIdx++) { KeyValue *stanzaInfo = varKv(varLstGet(infoList, stanzaIdx)); // Add a carriage return between stanzas if (stanzaIdx > 0) strCatFmt(resultStr, "\n"); // Stanza name and status strCatFmt( resultStr, "stanza: %s\n status: ", strPtr(varStr(kvGet(stanzaInfo, KEY_NAME_VAR)))); // If an error has occurred, provide the information that is available and move onto next stanza KeyValue *stanzaStatus = varKv(kvGet(stanzaInfo, STANZA_KEY_STATUS_VAR)); int statusCode = varInt(kvGet(stanzaStatus, STATUS_KEY_CODE_VAR)); if (statusCode != INFO_STANZA_STATUS_CODE_OK) { strCatFmt( resultStr, "%s (%s)\n", INFO_STANZA_STATUS_ERROR, strPtr(varStr(kvGet(stanzaStatus, STATUS_KEY_MESSAGE_VAR)))); if (statusCode == INFO_STANZA_STATUS_CODE_MISSING_STANZA_DATA || statusCode == INFO_STANZA_STATUS_CODE_NO_BACKUP) { strCatFmt( resultStr, " cipher: %s\n", strPtr(varStr(kvGet(stanzaInfo, STANZA_KEY_CIPHER_VAR)))); // If there is a backup.info file but no backups, then process the archive info if (statusCode == INFO_STANZA_STATUS_CODE_NO_BACKUP) formatTextDb(stanzaInfo, resultStr, NULL); } continue; } else strCatFmt(resultStr, "%s\n", INFO_STANZA_STATUS_OK); // Cipher strCatFmt(resultStr, " cipher: %s\n", strPtr(varStr(kvGet(stanzaInfo, STANZA_KEY_CIPHER_VAR)))); formatTextDb(stanzaInfo, resultStr, backupLabel); } } else resultStr = strNew("No stanzas exist in the repository.\n"); } // Format json output else resultStr = jsonFromVar(varNewVarLst(infoList)); MEM_CONTEXT_PRIOR_BEGIN() { result = strDup(resultStr); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING, result); } /*********************************************************************************************************************************** Render info and output to stdout ***********************************************************************************************************************************/ void cmdInfo(void) { FUNCTION_LOG_VOID(logLevelDebug); MEM_CONTEXT_TEMP_BEGIN() { ioHandleWriteOneStr(STDOUT_FILENO, infoRender()); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/command/info/info.h000066400000000000000000000012001362531507100214440ustar00rootroot00000000000000/*********************************************************************************************************************************** Info Command ***********************************************************************************************************************************/ #ifndef COMMAND_INFO_INFO_H #define COMMAND_INFO_INFO_H /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void cmdInfo(void); #endif pgbackrest-release-2.24/src/command/local/000077500000000000000000000000001362531507100205065ustar00rootroot00000000000000pgbackrest-release-2.24/src/command/local/local.c000066400000000000000000000035251362531507100217510ustar00rootroot00000000000000/*********************************************************************************************************************************** Local Command ***********************************************************************************************************************************/ #include "build.auto.h" #include "command/archive/get/protocol.h" #include "command/archive/push/protocol.h" #include "command/backup/protocol.h" #include "command/restore/protocol.h" #include "common/debug.h" #include "common/io/handleRead.h" #include "common/io/handleWrite.h" #include "common/log.h" #include "config/config.h" #include "config/protocol.h" #include "protocol/helper.h" #include "protocol/server.h" /*********************************************************************************************************************************** Remote command ***********************************************************************************************************************************/ void cmdLocal(int handleRead, int handleWrite) { FUNCTION_LOG_VOID(logLevelDebug); MEM_CONTEXT_TEMP_BEGIN() { String *name = strNewFmt(PROTOCOL_SERVICE_LOCAL "-%u", cfgOptionUInt(cfgOptProcess)); IoRead *read = ioHandleReadNew(name, handleRead, (TimeMSec)(cfgOptionDbl(cfgOptProtocolTimeout) * 1000)); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(name, handleWrite); ioWriteOpen(write); ProtocolServer *server = protocolServerNew(name, PROTOCOL_SERVICE_LOCAL_STR, read, write); protocolServerHandlerAdd(server, archiveGetProtocol); protocolServerHandlerAdd(server, archivePushProtocol); protocolServerHandlerAdd(server, backupProtocol); protocolServerHandlerAdd(server, restoreProtocol); protocolServerProcess(server); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/command/local/local.h000066400000000000000000000012411362531507100217470ustar00rootroot00000000000000/*********************************************************************************************************************************** Local Command ***********************************************************************************************************************************/ #ifndef COMMAND_LOCAL_LOCAL_H #define COMMAND_LOCAL_LOCAL_H /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void cmdLocal(int handleRead, int handleWrite); #endif pgbackrest-release-2.24/src/command/remote/000077500000000000000000000000001362531507100207075ustar00rootroot00000000000000pgbackrest-release-2.24/src/command/remote/remote.c000066400000000000000000000061731362531507100223550ustar00rootroot00000000000000/*********************************************************************************************************************************** Remote Command ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "command/control/common.h" #include "common/debug.h" #include "common/io/handleRead.h" #include "common/io/handleWrite.h" #include "common/log.h" #include "config/config.h" #include "config/protocol.h" #include "db/protocol.h" #include "protocol/helper.h" #include "protocol/server.h" #include "storage/remote/protocol.h" /*********************************************************************************************************************************** Remote command ***********************************************************************************************************************************/ void cmdRemote(int handleRead, int handleWrite) { FUNCTION_LOG_VOID(logLevelDebug); MEM_CONTEXT_TEMP_BEGIN() { String *name = strNewFmt(PROTOCOL_SERVICE_REMOTE "-%u", cfgOptionUInt(cfgOptProcess)); IoRead *read = ioHandleReadNew(name, handleRead, (TimeMSec)(cfgOptionDbl(cfgOptProtocolTimeout) * 1000)); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(name, handleWrite); ioWriteOpen(write); ProtocolServer *server = protocolServerNew(name, PROTOCOL_SERVICE_REMOTE_STR, read, write); protocolServerHandlerAdd(server, storageRemoteProtocol); protocolServerHandlerAdd(server, dbProtocol); protocolServerHandlerAdd(server, configProtocol); // Acquire a lock if this command needs one. We'll use the noop that is always sent from the client right after the // handshake to return an error. We can't take a lock earlier than this because we want the error to go back through the // protocol layer. volatile bool success = false; TRY_BEGIN() { // Read the command. No need to parse it since we know this is the first noop. ioReadLine(read); // Only try the lock if this is process 0, i.e. the remote started from the main process if (cfgOptionUInt(cfgOptProcess) == 0) { // Acquire a lock if this command requires a lock if (cfgLockRemoteRequired()) { // Make sure the local host is not stopped lockStopTest(); // Acquire the lock lockAcquire(cfgOptionStr(cfgOptLockPath), cfgOptionStr(cfgOptStanza), cfgLockType(), 0, true); } } // Notify the client of success protocolServerResponse(server, NULL); success = true; } CATCH_ANY() { protocolServerError(server, errorCode(), STR(errorMessage()), STR(errorStackTrace())); } TRY_END(); // If not successful we'll just exit if (success) protocolServerProcess(server); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/command/remote/remote.h000066400000000000000000000012471362531507100223570ustar00rootroot00000000000000/*********************************************************************************************************************************** Remote Command ***********************************************************************************************************************************/ #ifndef COMMAND_REMOTE_REMOTE_H #define COMMAND_REMOTE_REMOTE_H /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void cmdRemote(int handleRead, int handleWrite); #endif pgbackrest-release-2.24/src/command/restore/000077500000000000000000000000001362531507100210775ustar00rootroot00000000000000pgbackrest-release-2.24/src/command/restore/file.c000066400000000000000000000202751362531507100221700ustar00rootroot00000000000000/*********************************************************************************************************************************** Restore File ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include "command/restore/file.h" #include "common/compress/gzip/common.h" #include "common/compress/gzip/decompress.h" #include "common/crypto/cipherBlock.h" #include "common/crypto/hash.h" #include "common/debug.h" #include "common/io/filter/group.h" #include "common/io/filter/size.h" #include "common/io/io.h" #include "common/log.h" #include "config/config.h" #include "storage/helper.h" /*********************************************************************************************************************************** Copy a file from the backup to the specified destination ***********************************************************************************************************************************/ bool restoreFile( const String *repoFile, const String *repoFileReference, bool repoFileCompressed, const String *pgFile, const String *pgFileChecksum, bool pgFileZero, uint64_t pgFileSize, time_t pgFileModified, mode_t pgFileMode, const String *pgFileUser, const String *pgFileGroup, time_t copyTimeBegin, bool delta, bool deltaForce, const String *cipherPass) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, repoFile); FUNCTION_LOG_PARAM(STRING, repoFileReference); FUNCTION_LOG_PARAM(BOOL, repoFileCompressed); FUNCTION_LOG_PARAM(STRING, pgFile); FUNCTION_LOG_PARAM(STRING, pgFileChecksum); FUNCTION_LOG_PARAM(BOOL, pgFileZero); FUNCTION_LOG_PARAM(UINT64, pgFileSize); FUNCTION_LOG_PARAM(TIME, pgFileModified); FUNCTION_LOG_PARAM(MODE, pgFileMode); FUNCTION_LOG_PARAM(STRING, pgFileUser); FUNCTION_LOG_PARAM(STRING, pgFileGroup); FUNCTION_LOG_PARAM(TIME, copyTimeBegin); FUNCTION_LOG_PARAM(BOOL, delta); FUNCTION_LOG_PARAM(BOOL, deltaForce); FUNCTION_TEST_PARAM(STRING, cipherPass); FUNCTION_LOG_END(); ASSERT(repoFile != NULL); ASSERT(repoFileReference != NULL); ASSERT(pgFile != NULL); // Was the file copied? bool result = true; // Is the file compressible during the copy? bool compressible = true; MEM_CONTEXT_TEMP_BEGIN() { // Perform delta if requested. Delta zero-length files to avoid overwriting the file if the timestamp is correct. if (delta && !pgFileZero) { // Perform delta if the file exists StorageInfo info = storageInfoP(storagePg(), pgFile, .ignoreMissing = true, .followLink = true); if (info.exists) { // If force then use size/timestamp delta if (deltaForce) { // Make sure that timestamp/size are equal and that timestamp is before the copy start time of the backup if (info.size == pgFileSize && info.timeModified == pgFileModified && info.timeModified < copyTimeBegin) result = false; } // Else use size and checksum else { // Only continue delta if the file size is as expected if (info.size == pgFileSize) { // Generate checksum for the file if size is not zero IoRead *read = NULL; if (info.size != 0) { read = storageReadIo(storageNewReadP(storagePgWrite(), pgFile)); ioFilterGroupAdd(ioReadFilterGroup(read), cryptoHashNew(HASH_TYPE_SHA1_STR)); ioReadDrain(read); } // If size and checksum are equal then no need to copy the file if (pgFileSize == 0 || strEq( pgFileChecksum, varStr(ioFilterGroupResult(ioReadFilterGroup(read), CRYPTO_HASH_FILTER_TYPE_STR)))) { // Even if hash/size are the same set the time back to backup time. This helps with unit testing, but // also presents a pristine version of the database after restore. if (info.timeModified != pgFileModified) { THROW_ON_SYS_ERROR_FMT( utime( strPtr(storagePathP(storagePg(), pgFile)), &((struct utimbuf){.actime = pgFileModified, .modtime = pgFileModified})) == -1, FileInfoError, "unable to set time for '%s'", strPtr(storagePathP(storagePg(), pgFile))); } result = false; } } } } } // Copy file from repository to database or create zero-length/sparse file if (result) { // Create destination file StorageWrite *pgFileWrite = storageNewWriteP( storagePgWrite(), pgFile, .modeFile = pgFileMode, .user = pgFileUser, .group = pgFileGroup, .timeModified = pgFileModified, .noAtomic = true, .noCreatePath = true, .noSyncPath = true); // If size is zero/sparse no need to actually copy if (pgFileSize == 0 || pgFileZero) { ioWriteOpen(storageWriteIo(pgFileWrite)); // Truncate the file to specified length (note in this case the file with grow, not shrink) if (pgFileZero) { THROW_ON_SYS_ERROR_FMT( ftruncate(ioWriteHandle(storageWriteIo(pgFileWrite)), (off_t)pgFileSize) == -1, FileWriteError, "unable to truncate '%s'", strPtr(pgFile)); // Report the file as not copied result = false; } ioWriteClose(storageWriteIo(pgFileWrite)); } // Else perform the copy else { IoFilterGroup *filterGroup = ioWriteFilterGroup(storageWriteIo(pgFileWrite)); // Add decryption filter if (cipherPass != NULL) { ioFilterGroupAdd(filterGroup, cipherBlockNew(cipherModeDecrypt, cipherTypeAes256Cbc, BUFSTR(cipherPass), NULL)); compressible = false; } // Add decompression filter if (repoFileCompressed) { ioFilterGroupAdd(filterGroup, gzipDecompressNew(false)); compressible = false; } // Add sha1 filter ioFilterGroupAdd(filterGroup, cryptoHashNew(HASH_TYPE_SHA1_STR)); // Add size filter ioFilterGroupAdd(filterGroup, ioSizeNew()); // Copy file storageCopyP( storageNewReadP( storageRepo(), strNewFmt( STORAGE_REPO_BACKUP "/%s/%s%s", strPtr(repoFileReference), strPtr(repoFile), repoFileCompressed ? "." GZIP_EXT : ""), .compressible = compressible), pgFileWrite); // Validate checksum if (!strEq(pgFileChecksum, varStr(ioFilterGroupResult(filterGroup, CRYPTO_HASH_FILTER_TYPE_STR)))) { THROW_FMT( ChecksumError, "error restoring '%s': actual checksum '%s' does not match expected checksum '%s'", strPtr(pgFile), strPtr(varStr(ioFilterGroupResult(filterGroup, CRYPTO_HASH_FILTER_TYPE_STR))), strPtr(pgFileChecksum)); } } } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, result); } pgbackrest-release-2.24/src/command/restore/file.h000066400000000000000000000021151362531507100221660ustar00rootroot00000000000000/*********************************************************************************************************************************** Restore File ***********************************************************************************************************************************/ #ifndef COMMAND_RESTORE_FILE_H #define COMMAND_RESTORE_FILE_H #include "common/crypto/common.h" #include "common/type/string.h" #include "storage/storage.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ bool restoreFile( const String *repoFile, const String *repoFileReference, bool repoFileCompressed, const String *pgFile, const String *pgFileChecksum, bool pgFileZero, uint64_t pgFileSize, time_t pgFileModified, mode_t pgFileMode, const String *pgFileUser, const String *pgFileGroup, time_t copyTimeBegin, bool delta, bool deltaForce, const String *cipherPass); #endif pgbackrest-release-2.24/src/command/restore/protocol.c000066400000000000000000000055321362531507100231110ustar00rootroot00000000000000/*********************************************************************************************************************************** Restore Protocol Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include "command/restore/file.h" #include "command/restore/protocol.h" #include "common/debug.h" #include "common/io/io.h" #include "common/log.h" #include "common/memContext.h" #include "config/config.h" #include "storage/helper.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ STRING_EXTERN(PROTOCOL_COMMAND_RESTORE_FILE_STR, PROTOCOL_COMMAND_RESTORE_FILE); /*********************************************************************************************************************************** Process protocol requests ***********************************************************************************************************************************/ bool restoreProtocol(const String *command, const VariantList *paramList, ProtocolServer *server) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, command); FUNCTION_LOG_PARAM(VARIANT_LIST, paramList); FUNCTION_LOG_PARAM(PROTOCOL_SERVER, server); FUNCTION_LOG_END(); ASSERT(command != NULL); // Get the repo storage in case it is remote and encryption settings need to be pulled down storageRepo(); // Attempt to satisfy the request -- we may get requests that are meant for other handlers bool found = true; MEM_CONTEXT_TEMP_BEGIN() { if (strEq(command, PROTOCOL_COMMAND_RESTORE_FILE_STR)) { protocolServerResponse( server, VARBOOL( restoreFile( varStr(varLstGet(paramList, 0)), varStr(varLstGet(paramList, 1)), varBoolForce(varLstGet(paramList, 2)), varStr(varLstGet(paramList, 3)), varStr(varLstGet(paramList, 4)), varBoolForce(varLstGet(paramList, 5)), varUInt64(varLstGet(paramList, 6)), (time_t)varInt64Force(varLstGet(paramList, 7)), cvtZToUIntBase(strPtr(varStr(varLstGet(paramList, 8))), 8), varStr(varLstGet(paramList, 9)), varStr(varLstGet(paramList, 10)), (time_t)varInt64Force(varLstGet(paramList, 11)), varBoolForce(varLstGet(paramList, 12)), varBoolForce(varLstGet(paramList, 13)), varStr(varLstGet(paramList, 14))))); } else found = false; } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, found); } pgbackrest-release-2.24/src/command/restore/protocol.h000066400000000000000000000023521362531507100231130ustar00rootroot00000000000000/*********************************************************************************************************************************** Restore Protocol Handler ***********************************************************************************************************************************/ #ifndef COMMAND_RESTORE_PROTOCOL_H #define COMMAND_RESTORE_PROTOCOL_H #include "common/type/string.h" #include "common/type/variantList.h" #include "protocol/server.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define PROTOCOL_COMMAND_RESTORE_FILE "restoreFile" STRING_DECLARE(PROTOCOL_COMMAND_RESTORE_FILE_STR); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ bool restoreProtocol(const String *command, const VariantList *paramList, ProtocolServer *server); #endif pgbackrest-release-2.24/src/command/restore/restore.c000066400000000000000000003010321362531507100227250ustar00rootroot00000000000000/*********************************************************************************************************************************** Restore Command ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include "command/restore/protocol.h" #include "command/restore/restore.h" #include "common/crypto/cipherBlock.h" #include "common/debug.h" #include "common/log.h" #include "common/regExp.h" #include "common/user.h" #include "config/config.h" #include "config/exec.h" #include "info/infoBackup.h" #include "info/manifest.h" #include "postgres/interface.h" #include "postgres/version.h" #include "protocol/helper.h" #include "protocol/parallel.h" #include "storage/helper.h" #include "storage/write.intern.h" #include "version.h" /*********************************************************************************************************************************** Recovery constants ***********************************************************************************************************************************/ #define RESTORE_COMMAND "restore_command" STRING_STATIC(RESTORE_COMMAND_STR, RESTORE_COMMAND); #define RECOVERY_TARGET "recovery_target" #define RECOVERY_TARGET_LSN "recovery_target_lsn" #define RECOVERY_TARGET_NAME "recovery_target_name" #define RECOVERY_TARGET_TIME "recovery_target_time" #define RECOVERY_TARGET_XID "recovery_target_xid" #define RECOVERY_TARGET_ACTION "recovery_target_action" #define RECOVERY_TARGET_ACTION_SHUTDOWN "shutdown" STRING_STATIC(RECOVERY_TARGET_ACTION_SHUTDOWN_STR, RECOVERY_TARGET_ACTION_SHUTDOWN); #define RECOVERY_TARGET_INCLUSIVE "recovery_target_inclusive" #define RECOVERY_TARGET_TIMELINE "recovery_target_timeline" #define PAUSE_AT_RECOVERY_TARGET "pause_at_recovery_target" #define STANDBY_MODE "standby_mode" STRING_STATIC(STANDBY_MODE_STR, STANDBY_MODE); #define RECOVERY_TYPE_DEFAULT "default" STRING_STATIC(RECOVERY_TYPE_DEFAULT_STR, RECOVERY_TYPE_DEFAULT); #define RECOVERY_TYPE_IMMEDIATE "immediate" STRING_STATIC(RECOVERY_TYPE_IMMEDIATE_STR, RECOVERY_TYPE_IMMEDIATE); #define RECOVERY_TYPE_NONE "none" STRING_STATIC(RECOVERY_TYPE_NONE_STR, RECOVERY_TYPE_NONE); #define RECOVERY_TYPE_PRESERVE "preserve" STRING_STATIC(RECOVERY_TYPE_PRESERVE_STR, RECOVERY_TYPE_PRESERVE); #define RECOVERY_TYPE_STANDBY "standby" STRING_STATIC(RECOVERY_TYPE_STANDBY_STR, RECOVERY_TYPE_STANDBY); #define RECOVERY_TYPE_TIME "time" STRING_STATIC(RECOVERY_TYPE_TIME_STR, RECOVERY_TYPE_TIME); /*********************************************************************************************************************************** Validate restore path ***********************************************************************************************************************************/ static void restorePathValidate(void) { FUNCTION_LOG_VOID(logLevelDebug); MEM_CONTEXT_TEMP_BEGIN() { // The PGDATA directory must exist // ??? We should remove this requirement in a separate commit. What's the harm in creating the dir assuming we have perms? if (!storagePathExistsP(storagePg(), NULL)) THROW_FMT(PathMissingError, "$PGDATA directory '%s' does not exist", strPtr(cfgOptionStr(cfgOptPgPath))); // PostgreSQL must not be running if (storageExistsP(storagePg(), PG_FILE_POSTMASTERPID_STR)) { THROW_FMT( PostmasterRunningError, "unable to restore while PostgreSQL is running\n" "HINT: presence of '" PG_FILE_POSTMASTERPID "' in '%s' indicates PostgreSQL is running.\n" "HINT: remove '" PG_FILE_POSTMASTERPID "' only if PostgreSQL is not running.", strPtr(cfgOptionStr(cfgOptPgPath))); } // If the restore will be destructive attempt to verify that PGDATA looks like a valid PostgreSQL directory if ((cfgOptionBool(cfgOptDelta) || cfgOptionBool(cfgOptForce)) && !storageExistsP(storagePg(), PG_FILE_PGVERSION_STR) && !storageExistsP(storagePg(), BACKUP_MANIFEST_FILE_STR)) { LOG_WARN_FMT( "--delta or --force specified but unable to find '" PG_FILE_PGVERSION "' or '" BACKUP_MANIFEST_FILE "' in '%s' to" " confirm that this is a valid $PGDATA directory. --delta and --force have been disabled and if any files" " exist in the destination directories the restore will be aborted.", strPtr(cfgOptionStr(cfgOptPgPath))); // Disable delta and force so restore will fail if the directories are not empty cfgOptionSet(cfgOptDelta, cfgSourceDefault, VARBOOL(false)); cfgOptionSet(cfgOptForce, cfgSourceDefault, VARBOOL(false)); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Get epoch time from formatted string ***********************************************************************************************************************************/ static time_t getEpoch(const String *targetTime) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, targetTime); FUNCTION_LOG_END(); ASSERT(targetTime != NULL); time_t result = 0; MEM_CONTEXT_TEMP_BEGIN() { // Build the regex to accept formats: YYYY-MM-DD HH:MM:SS with optional msec (up to 6 digits and separated from minutes by // a comma or period), optional timezone offset +/- HH or HHMM or HH:MM, where offset boundaries are UTC-12 to UTC+14 const String *expression = STRDEF( "^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}((\\,|\\.)[0-9]{1,6})?((\\+|\\-)[0-9]{2}(:?)([0-9]{2})?)?$"); RegExp *regExp = regExpNew(expression); // If the target-recovery time matches the regular expression then validate it if (regExpMatch(regExp, targetTime)) { // Strip off the date and time and put the remainder into another string String *datetime = strSubN(targetTime, 0, 19); int dtYear = cvtZToInt(strPtr(strSubN(datetime, 0, 4))); int dtMonth = cvtZToInt(strPtr(strSubN(datetime, 5, 2))); int dtDay = cvtZToInt(strPtr(strSubN(datetime, 8, 2))); int dtHour = cvtZToInt(strPtr(strSubN(datetime, 11, 2))); int dtMinute = cvtZToInt(strPtr(strSubN(datetime, 14, 2))); int dtSecond = cvtZToInt(strPtr(strSubN(datetime, 17, 2))); // Confirm date and time parts are valid datePartsValid(dtYear, dtMonth, dtDay); timePartsValid(dtHour, dtMinute, dtSecond); String *timeTargetZone = strSub(targetTime, 19); // Find the + or - indicating a timezone offset was provided (there may be milliseconds before the timezone, so need to // skip). If a timezone offset was not provided, then local time is assumed. int idxSign = strChr(timeTargetZone, '+'); if (idxSign == -1) idxSign = strChr(timeTargetZone, '-'); if (idxSign != -1) { String *timezoneOffset = strSub(timeTargetZone, (size_t)idxSign); // Include the sign with the hour int tzHour = cvtZToInt(strPtr(strSubN(timezoneOffset, 0, 3))); int tzMinute = 0; // If minutes are included in timezone offset then extract the minutes based on whether a colon separates them from // the hour if (strSize(timezoneOffset) > 3) tzMinute = cvtZToInt(strPtr(strSubN(timezoneOffset, 3 + (strChr(timezoneOffset, ':') == -1 ? 0 : 1), 2))); result = epochFromParts(dtYear, dtMonth, dtDay, dtHour, dtMinute, dtSecond, tzOffsetSeconds(tzHour, tzMinute)); } // If there is no timezone offset, then assume it is local time else { // Set tm_isdst to -1 to force mktime to consider if DST. For example, if system time is America/New_York then // 2019-09-14 20:02:49 was a time in DST so the Epoch value should be 1568505769 (and not 1568509369 which would be // 2019-09-14 21:02:49 - an hour too late) result = mktime( &(struct tm){.tm_sec = dtSecond, .tm_min = dtMinute, .tm_hour = dtHour, .tm_mday = dtDay, .tm_mon = dtMonth - 1, .tm_year = dtYear - 1900, .tm_isdst = -1}); } } else { LOG_WARN_FMT( "automatic backup set selection cannot be performed with provided time '%s', latest backup set will be used" "\nHINT: time format must be YYYY-MM-DD HH:MM:SS with optional msec and optional timezone (+/- HH or HHMM or HH:MM)" " - if timezone is ommitted, local time is assumed (for UTC use +00)", strPtr(targetTime)); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(TIME, result); } /*********************************************************************************************************************************** Get the backup set to restore ***********************************************************************************************************************************/ static String * restoreBackupSet(InfoBackup *infoBackup) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_BACKUP, infoBackup); FUNCTION_LOG_END(); ASSERT(infoBackup != NULL); String *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { // If backup set to restore is default (i.e. latest) then get the actual set const String *backupSet = NULL; if (cfgOptionSource(cfgOptSet) == cfgSourceDefault) { if (infoBackupDataTotal(infoBackup) == 0) THROW(BackupSetInvalidError, "no backup sets to restore"); time_t timeTargetEpoch = 0; // If the recovery type is time, attempt to determine the backup set if (strEq(cfgOptionStr(cfgOptType), RECOVERY_TYPE_TIME_STR)) { timeTargetEpoch = getEpoch(cfgOptionStr(cfgOptTarget)); // Try to find the newest backup set with a stop time before the target recovery time if (timeTargetEpoch != 0) { // Search current backups from newest to oldest for (unsigned int keyIdx = infoBackupDataTotal(infoBackup) - 1; (int)keyIdx >= 0; keyIdx--) { // Get the backup data InfoBackupData backupData = infoBackupData(infoBackup, keyIdx); // If the end of the backup is before the target time, then select this backup if (backupData.backupTimestampStop < timeTargetEpoch) { backupSet = backupData.backupLabel; break; } } if (backupSet == NULL) { LOG_WARN_FMT( "unable to find backup set with stop time less than '%s', latest backup set will be used", strPtr(cfgOptionStr(cfgOptTarget))); } } } // If a backup set was not found or the recovery type was not time, then use the latest backup if (backupSet == NULL) backupSet = infoBackupData(infoBackup, infoBackupDataTotal(infoBackup) - 1).backupLabel; } // Otherwise check to make sure the specified backup set is valid else { bool found = false; backupSet = cfgOptionStr(cfgOptSet); for (unsigned int backupIdx = 0; backupIdx < infoBackupDataTotal(infoBackup); backupIdx++) { if (strEq(infoBackupData(infoBackup, backupIdx).backupLabel, backupSet)) { found = true; break; } } if (!found) THROW_FMT(BackupSetInvalidError, "backup set %s is not valid", strPtr(backupSet)); } MEM_CONTEXT_PRIOR_BEGIN() { result = strDup(backupSet); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING, result); } /*********************************************************************************************************************************** Validate the manifest ***********************************************************************************************************************************/ static void restoreManifestValidate(Manifest *manifest, const String *backupSet) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_LOG_PARAM(STRING, backupSet); FUNCTION_LOG_END(); ASSERT(manifest != NULL); ASSERT(backupSet != NULL); MEM_CONTEXT_TEMP_BEGIN() { // If there are no files in the manifest then something has gone horribly wrong CHECK(manifestFileTotal(manifest) > 0); // Sanity check to ensure the manifest has not been moved to a new directory const ManifestData *data = manifestData(manifest); if (!strEq(data->backupLabel, backupSet)) { THROW_FMT( FormatError, "requested backup '%s' and manifest label '%s' do not match\n" "HINT: this indicates some sort of corruption (at the very least paths have been renamed).", strPtr(backupSet), strPtr(data->backupLabel)); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Remap the manifest based on mappings provided by the user ***********************************************************************************************************************************/ static void restoreManifestMap(Manifest *manifest) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_LOG_END(); ASSERT(manifest != NULL); MEM_CONTEXT_TEMP_BEGIN() { // Remap the data directory // ------------------------------------------------------------------------------------------------------------------------- const String *pgPath = cfgOptionStr(cfgOptPgPath); const ManifestTarget *targetBase = manifestTargetBase(manifest); if (!strEq(targetBase->path, pgPath)) { LOG_INFO_FMT("remap data directory to '%s'", strPtr(pgPath)); manifestTargetUpdate(manifest, targetBase->name, pgPath, NULL); } // Remap tablespaces // ------------------------------------------------------------------------------------------------------------------------- KeyValue *tablespaceMap = varKv(cfgOption(cfgOptTablespaceMap)); const String *tablespaceMapAllPath = cfgOptionStr(cfgOptTablespaceMapAll); if (tablespaceMap != NULL || tablespaceMapAllPath != NULL) { StringList *tablespaceRemapped = strLstNew(); for (unsigned int targetIdx = 0; targetIdx < manifestTargetTotal(manifest); targetIdx++) { const ManifestTarget *target = manifestTarget(manifest, targetIdx); // Is this a tablespace? if (target->tablespaceId != 0) { const String *tablespacePath = NULL; // Check for an individual mapping for this tablespace if (tablespaceMap != NULL) { // Attempt to get the tablespace by name const String *tablespacePathByName = varStr(kvGet(tablespaceMap, VARSTR(target->tablespaceName))); if (tablespacePathByName != NULL) strLstAdd(tablespaceRemapped, target->tablespaceName); // Attempt to get the tablespace by id const String *tablespacePathById = varStr( kvGet(tablespaceMap, VARSTR(varStrForce(VARUINT(target->tablespaceId))))); if (tablespacePathById != NULL) strLstAdd(tablespaceRemapped, varStrForce(VARUINT(target->tablespaceId))); // Error when both are set but the paths are different if (tablespacePathByName != NULL && tablespacePathById != NULL && ! strEq(tablespacePathByName, tablespacePathById)) { THROW_FMT( TablespaceMapError, "tablespace remapped by name '%s' and id %u with different paths", strPtr(target->tablespaceName), target->tablespaceId); } // Else set the path by name else if (tablespacePathByName != NULL) { tablespacePath = tablespacePathByName; } // Else set the path by id else if (tablespacePathById != NULL) tablespacePath = tablespacePathById; } // If not individual mapping check if all tablespaces are being remapped if (tablespacePath == NULL && tablespaceMapAllPath != NULL) tablespacePath = strNewFmt("%s/%s", strPtr(tablespaceMapAllPath), strPtr(target->tablespaceName)); // Remap tablespace if a mapping was found if (tablespacePath != NULL) { LOG_INFO_FMT("map tablespace '%s' to '%s'", strPtr(target->name), strPtr(tablespacePath)); manifestTargetUpdate(manifest, target->name, tablespacePath, NULL); manifestLinkUpdate(manifest, strNewFmt(MANIFEST_TARGET_PGDATA "/%s", strPtr(target->name)), tablespacePath); } } } // Error on invalid tablespaces if (tablespaceMap != NULL) { const VariantList *tablespaceMapList = kvKeyList(tablespaceMap); strLstSort(tablespaceRemapped, sortOrderAsc); for (unsigned int tablespaceMapIdx = 0; tablespaceMapIdx < varLstSize(tablespaceMapList); tablespaceMapIdx++) { const String *tablespace = varStr(varLstGet(tablespaceMapList, tablespaceMapIdx)); if (!strLstExists(tablespaceRemapped, tablespace)) THROW_FMT(TablespaceMapError, "unable to remap invalid tablespace '%s'", strPtr(tablespace)); } } // Issue a warning message when remapping tablespaces in PostgreSQL < 9.2 if (manifestData(manifest)->pgVersion <= PG_VERSION_92) LOG_WARN("update pg_tablespace.spclocation with new tablespace locations for PostgreSQL <= " PG_VERSION_92_STR); } // Remap links // ------------------------------------------------------------------------------------------------------------------------- KeyValue *linkMap = varKv(cfgOption(cfgOptLinkMap)); bool linkAll = cfgOptionBool(cfgOptLinkAll); StringList *linkRemapped = strLstNew(); for (unsigned int targetIdx = 0; targetIdx < manifestTargetTotal(manifest); targetIdx++) { const ManifestTarget *target = manifestTarget(manifest, targetIdx); // Is this a link? if (target->type == manifestTargetTypeLink && target->tablespaceId == 0) { const String *link = strSub(target->name, strSize(MANIFEST_TARGET_PGDATA_STR) + 1); const String *linkPath = linkMap == NULL ? NULL : varStr(kvGet(linkMap, VARSTR(link))); // Remap link if a mapping was found if (linkPath != NULL) { LOG_INFO_FMT("map link '%s' to '%s'", strPtr(link), strPtr(linkPath)); manifestLinkUpdate(manifest, target->name, linkPath); // If the link is a file separate the file name from the path to update the target const String *linkFile = NULL; if (target->file != NULL) { // The link destination must have at least one path component in addition to the file part. So '..' would // not be a valid destination but '../file' or '/file' is. if (strSize(strPath(linkPath)) == 0) { THROW_FMT( LinkMapError, "'%s' is not long enough to be the destination for file link '%s'", strPtr(linkPath), strPtr(link)); } linkFile = strBase(linkPath); linkPath = strPath(linkPath); } manifestTargetUpdate(manifest, target->name, linkPath, linkFile); // Add to remapped list for later validation that all links were valid strLstAdd(linkRemapped, link); } // If all links are not being restored then remove the target and link else if (!linkAll) { if (target->file != NULL) LOG_WARN_FMT("file link '%s' will be restored as a file at the same location", strPtr(link)); else { LOG_WARN_FMT( "contents of directory link '%s' will be restored in a directory at the same location", strPtr(link)); } manifestLinkRemove(manifest, target->name); manifestTargetRemove(manifest, target->name); targetIdx--; } } } // Error on invalid links if (linkMap != NULL) { const VariantList *linkMapList = kvKeyList(linkMap); strLstSort(linkRemapped, sortOrderAsc); for (unsigned int linkMapIdx = 0; linkMapIdx < varLstSize(linkMapList); linkMapIdx++) { const String *link = varStr(varLstGet(linkMapList, linkMapIdx)); if (!strLstExists(linkRemapped, link)) THROW_FMT(LinkMapError, "unable to remap invalid link '%s'", strPtr(link)); } } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Check ownership of items in the manifest ***********************************************************************************************************************************/ // Helper to get list of owners from a file/link/path list #define RESTORE_MANIFEST_OWNER_GET(type) \ for (unsigned int itemIdx = 0; itemIdx < manifest##type##Total(manifest); itemIdx++) \ { \ Manifest##type *item = (Manifest##type *)manifest##type(manifest, itemIdx); \ \ if (item->user == NULL) \ userNull = true; \ else \ strLstAddIfMissing(userList, item->user); \ \ if (item->group == NULL) \ groupNull = true; \ else \ strLstAddIfMissing(groupList, item->group); \ \ if (!userRoot()) \ { \ item->user = NULL; \ item->group = NULL; \ } \ } // Helper to update an owner in a file/link/path list #define RESTORE_MANIFEST_OWNER_NULL_UPDATE(type, user, group) \ for (unsigned int itemIdx = 0; itemIdx < manifest##type##Total(manifest); itemIdx++) \ { \ Manifest##type *item = (Manifest##type *)manifest##type(manifest, itemIdx); \ \ if (item->user == NULL) \ item->user = user; \ \ if (item->group == NULL) \ item->group = group; \ } // Helper to warn when an owner is missing and must be remapped #define RESTORE_MANIFEST_OWNER_WARN(type) \ do \ { \ if (type##Null) \ LOG_WARN("unknown " #type " in backup manifest mapped to current " #type); \ \ for (unsigned int ownerIdx = 0; ownerIdx < strLstSize(type##List); ownerIdx++) \ { \ const String *owner = strLstGet(type##List, ownerIdx); \ \ if (type##Name() == NULL || !strEq(type##Name(), owner)) \ LOG_WARN_FMT("unknown " #type " '%s' in backup manifest mapped to current " #type, strPtr(owner)); \ } \ } \ while (0) static void restoreManifestOwner(Manifest *manifest) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_LOG_END(); ASSERT(manifest != NULL); MEM_CONTEXT_TEMP_BEGIN() { // Build a list of users and groups in the manifest // ------------------------------------------------------------------------------------------------------------------------- bool userNull = false; StringList *userList = strLstNew(); bool groupNull = false; StringList *groupList = strLstNew(); RESTORE_MANIFEST_OWNER_GET(File); RESTORE_MANIFEST_OWNER_GET(Link); RESTORE_MANIFEST_OWNER_GET(Path); // Update users and groups in the manifest (this can only be done as root) // ------------------------------------------------------------------------------------------------------------------------- if (userRoot()) { // Get user/group info from data directory to use for invalid user/groups StorageInfo pathInfo = storageInfoP(storagePg(), manifestTargetBase(manifest)->path); // If user/group is null then set it to root if (pathInfo.user == NULL) pathInfo.user = userName(); if (pathInfo.group == NULL) pathInfo.group = groupName(); if (userNull || groupNull) { if (userNull) LOG_WARN_FMT("unknown user in backup manifest mapped to '%s'", strPtr(pathInfo.user)); if (groupNull) LOG_WARN_FMT("unknown group in backup manifest mapped to '%s'", strPtr(pathInfo.group)); MEM_CONTEXT_PRIOR_BEGIN() { const String *user = strDup(pathInfo.user); const String *group = strDup(pathInfo.group); RESTORE_MANIFEST_OWNER_NULL_UPDATE(File, user, group) RESTORE_MANIFEST_OWNER_NULL_UPDATE(Link, user, group) RESTORE_MANIFEST_OWNER_NULL_UPDATE(Path, user, group) } MEM_CONTEXT_PRIOR_END(); } } // Else set owners to NULL. This means we won't make any attempt to update ownership and will just leave it as written by // the current user/group. If there are existing files that are not owned by the current user/group then we will attempt // to update them, which will generally cause an error, though some systems allow updates to the group ownership. // ------------------------------------------------------------------------------------------------------------------------- else { RESTORE_MANIFEST_OWNER_WARN(user); RESTORE_MANIFEST_OWNER_WARN(group); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Clean the data directory of any paths/files/links that are not in the manifest and create missing links/paths ***********************************************************************************************************************************/ typedef struct RestoreCleanCallbackData { const Manifest *manifest; // Manifest to compare against const ManifestTarget *target; // Current target being compared const String *targetName; // Name to use when finding files/paths/links const String *targetPath; // Path of target currently being compared const String *subPath; // Subpath in target currently being compared bool basePath; // Is this the base path? bool exists; // Does the target path exist? bool delta; // Is this a delta restore? StringList *fileIgnore; // Files to ignore during clean } RestoreCleanCallbackData; // Helper to update ownership on a file/link/path static void restoreCleanOwnership( const String *pgPath, const String *manifestUserName, const String *manifestGroupName, uid_t actualUserId, gid_t actualGroupId, bool new) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, pgPath); FUNCTION_TEST_PARAM(STRING, manifestUserName); FUNCTION_TEST_PARAM(STRING, manifestGroupName); FUNCTION_TEST_PARAM(UINT, actualUserId); FUNCTION_TEST_PARAM(UINT, actualGroupId); FUNCTION_TEST_PARAM(BOOL, new); FUNCTION_TEST_END(); ASSERT(pgPath != NULL); // Get the expected user id uid_t expectedUserId = userId(); if (manifestUserName != NULL) { uid_t manifestUserId = userIdFromName(manifestUserName); if (manifestUserId != (uid_t)-1) expectedUserId = manifestUserId; } // Get the expected group id gid_t expectedGroupId = groupId(); if (manifestGroupName != NULL) { uid_t manifestGroupId = groupIdFromName(manifestGroupName); if (manifestGroupId != (uid_t)-1) expectedGroupId = manifestGroupId; } // Update ownership if not as expected if (actualUserId != expectedUserId || actualGroupId != expectedGroupId) { // If this is a newly created file/link/path then there's no need to log updated permissions if (!new) LOG_DETAIL_FMT("update ownership for '%s'", strPtr(pgPath)); THROW_ON_SYS_ERROR_FMT( lchown(strPtr(pgPath), expectedUserId, expectedGroupId) == -1, FileOwnerError, "unable to set ownership for '%s'", strPtr(pgPath)); } FUNCTION_TEST_RETURN_VOID(); } // Helper to update mode on a file/path static void restoreCleanMode(const String *pgPath, mode_t manifestMode, const StorageInfo *info) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, pgPath); FUNCTION_TEST_PARAM(MODE, manifestMode); FUNCTION_TEST_PARAM(INFO, info); FUNCTION_TEST_END(); ASSERT(pgPath != NULL); ASSERT(info != NULL); // Update mode if not as expected if (manifestMode != info->mode) { LOG_DETAIL_FMT("update mode for '%s' to %04o", strPtr(pgPath), manifestMode); THROW_ON_SYS_ERROR_FMT( chmod(strPtr(pgPath), manifestMode) == -1, FileOwnerError, "unable to set mode for '%s'", strPtr(pgPath)); } FUNCTION_TEST_RETURN_VOID(); } // storageInfoList() callback that cleans the paths static void restoreCleanInfoListCallback(void *data, const StorageInfo *info) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, data); FUNCTION_TEST_PARAM(STORAGE_INFO, info); FUNCTION_TEST_END(); ASSERT(data != NULL); ASSERT(info != NULL); RestoreCleanCallbackData *cleanData = (RestoreCleanCallbackData *)data; // Don't include backup.manifest or recovery.conf (when preserved) in the comparison or empty directory check if (cleanData->basePath && info->type == storageTypeFile && strLstExists(cleanData->fileIgnore, info->name)) { FUNCTION_TEST_RETURN_VOID(); return; } // Is this the . path, i.e. the root path for this list? bool dotPath = info->type == storageTypePath && strEq(info->name, DOT_STR); // If this is not a delta then error because the directory is expected to be empty. Ignore the . path. if (!cleanData->delta) { if (!dotPath) { THROW_FMT( PathNotEmptyError, "unable to restore to path '%s' because it contains files\n" "HINT: try using --delta if this is what you intended.", strPtr(cleanData->targetPath)); } FUNCTION_TEST_RETURN_VOID(); return; } // Construct the name used to find this file/link/path in the manifest const String *manifestName = dotPath ? cleanData->targetName : strNewFmt("%s/%s", strPtr(cleanData->targetName), strPtr(info->name)); // Construct the path of this file/link/path in the PostgreSQL data directory const String *pgPath = dotPath ? cleanData->targetPath : strNewFmt("%s/%s", strPtr(cleanData->targetPath), strPtr(info->name)); switch (info->type) { case storageTypeFile: { const ManifestFile *manifestFile = manifestFileFindDefault(cleanData->manifest, manifestName, NULL); if (manifestFile != NULL) { restoreCleanOwnership(pgPath, manifestFile->user, manifestFile->group, info->userId, info->groupId, false); restoreCleanMode(pgPath, manifestFile->mode, info); } else { LOG_DETAIL_FMT("remove invalid file '%s'", strPtr(pgPath)); storageRemoveP(storageLocalWrite(), pgPath, .errorOnMissing = true); } break; } case storageTypeLink: { const ManifestLink *manifestLink = manifestLinkFindDefault(cleanData->manifest, manifestName, NULL); if (manifestLink != NULL) { if (!strEq(manifestLink->destination, info->linkDestination)) { LOG_DETAIL_FMT("remove link '%s' because destination changed", strPtr(pgPath)); storageRemoveP(storageLocalWrite(), pgPath, .errorOnMissing = true); } else restoreCleanOwnership(pgPath, manifestLink->user, manifestLink->group, info->userId, info->groupId, false); } else { LOG_DETAIL_FMT("remove invalid link '%s'", strPtr(pgPath)); storageRemoveP(storageLocalWrite(), pgPath, .errorOnMissing = true); } break; } case storageTypePath: { const ManifestPath *manifestPath = manifestPathFindDefault(cleanData->manifest, manifestName, NULL); if (manifestPath != NULL) { // Check ownership/permissions if (dotPath) { restoreCleanOwnership(pgPath, manifestPath->user, manifestPath->group, info->userId, info->groupId, false); restoreCleanMode(pgPath, manifestPath->mode, info); } // Recurse into the path else { RestoreCleanCallbackData cleanDataSub = *cleanData; cleanDataSub.targetName = strNewFmt("%s/%s", strPtr(cleanData->targetName), strPtr(info->name)); cleanDataSub.targetPath = strNewFmt("%s/%s", strPtr(cleanData->targetPath), strPtr(info->name)); cleanDataSub.basePath = false; storageInfoListP( storageLocalWrite(), cleanDataSub.targetPath, restoreCleanInfoListCallback, &cleanDataSub, .errorOnMissing = true, .sortOrder = sortOrderAsc); } } else { LOG_DETAIL_FMT("remove invalid path '%s'", strPtr(pgPath)); storagePathRemoveP(storageLocalWrite(), pgPath, .errorOnMissing = true, .recurse = true); } break; } // Special file types cannot exist in the manifest so just delete them case storageTypeSpecial: { LOG_DETAIL_FMT("remove special file '%s'", strPtr(pgPath)); storageRemoveP(storageLocalWrite(), pgPath, .errorOnMissing = true); break; } } FUNCTION_TEST_RETURN_VOID(); } static void restoreCleanBuild(Manifest *manifest) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_LOG_END(); ASSERT(manifest != NULL); MEM_CONTEXT_TEMP_BEGIN() { // Is this a delta restore? bool delta = cfgOptionBool(cfgOptDelta) || cfgOptionBool(cfgOptForce); // Allocate data for each target RestoreCleanCallbackData *cleanDataList = memNew(sizeof(RestoreCleanCallbackData) * manifestTargetTotal(manifest)); // Step 1: Check permissions and validity (is the directory empty without delta?) if the target directory exists // ------------------------------------------------------------------------------------------------------------------------- StringList *pathChecked = strLstNew(); for (unsigned int targetIdx = 0; targetIdx < manifestTargetTotal(manifest); targetIdx++) { RestoreCleanCallbackData *cleanData = &cleanDataList[targetIdx]; *cleanData = (RestoreCleanCallbackData) { .manifest = manifest, .target = manifestTarget(manifest, targetIdx), .delta = delta, .fileIgnore = strLstNew(), }; cleanData->targetName = cleanData->target->name; cleanData->targetPath = manifestTargetPath(manifest, cleanData->target); cleanData->basePath = strEq(cleanData->targetName, MANIFEST_TARGET_PGDATA_STR); // Ignore backup.manifest while cleaning since it may exist from an prior incomplete restore strLstAdd(cleanData->fileIgnore, BACKUP_MANIFEST_FILE_STR); // Also ignore recovery files when recovery type = preserve if (strEq(cfgOptionStr(cfgOptType), RECOVERY_TYPE_PRESERVE_STR)) { // If recovery GUCs then three files must be preserved if (manifestData(manifest)->pgVersion >= PG_VERSION_RECOVERY_GUC) { strLstAdd(cleanData->fileIgnore, PG_FILE_POSTGRESQLAUTOCONF_STR); strLstAdd(cleanData->fileIgnore, PG_FILE_RECOVERYSIGNAL_STR); strLstAdd(cleanData->fileIgnore, PG_FILE_STANDBYSIGNAL_STR); } // Else just recovery.conf else strLstAdd(cleanData->fileIgnore, PG_FILE_RECOVERYCONF_STR); } // If this is a tablespace append the tablespace identifier if (cleanData->target->type == manifestTargetTypeLink && cleanData->target->tablespaceId != 0) { const String *tablespaceId = pgTablespaceId(manifestData(manifest)->pgVersion); // Only PostgreSQL >= 9.0 has tablespace indentifiers if (tablespaceId != NULL) { cleanData->targetName = strNewFmt("%s/%s", strPtr(cleanData->targetName), strPtr(tablespaceId)); cleanData->targetPath = strNewFmt("%s/%s", strPtr(cleanData->targetPath), strPtr(tablespaceId)); } } strLstSort(cleanData->fileIgnore, sortOrderAsc); // Check that the path exists. If not, there's no need to do any cleaning and we'll attempt to create it later. // Don't log check for the same path twice. There can be multiple links to files in the same path, but logging it more // than once makes the logs noisy and looks like a bug. if (!strLstExists(pathChecked, cleanData->targetPath)) LOG_DETAIL_FMT("check '%s' exists", strPtr(cleanData->targetPath)); StorageInfo info = storageInfoP(storageLocal(), cleanData->targetPath, .ignoreMissing = true, .followLink = true); strLstAdd(pathChecked, cleanData->targetPath); if (info.exists) { // Make sure our uid will be able to write to this directory if (!userRoot() && userId() != info.userId) { THROW_FMT( PathOpenError, "unable to restore to path '%s' not owned by current user", strPtr(cleanData->targetPath)); } if ((info.mode & 0700) != 0700) { THROW_FMT( PathOpenError, "unable to restore to path '%s' without rwx permissions", strPtr(cleanData->targetPath)); } // If not a delta restore then check that the directories are empty, or if a file link, that the file doesn't exist if (!cleanData->delta) { if (cleanData->target->file == NULL) { storageInfoListP( storageLocal(), cleanData->targetPath, restoreCleanInfoListCallback, cleanData, .errorOnMissing = true); } else { const String *file = strNewFmt("%s/%s", strPtr(cleanData->targetPath), strPtr(cleanData->target->file)); if (storageExistsP(storageLocal(), file)) { THROW_FMT( FileExistsError, "unable to restore file '%s' because it already exists\n" "HINT: try using --delta if this is what you intended.", strPtr(file)); } } // Now that we know there are no files in this target enable delta for processing in step 2 cleanData->delta = true; } // The target directory exists and is valid and will need to be cleaned cleanData->exists = true; } } // Skip the tablespace_map file when present so PostgreSQL does not rewrite links in pg_tblspc. The tablespace links will be // created after paths are cleaned. if (manifestFileFindDefault(manifest, STRDEF(MANIFEST_TARGET_PGDATA "/" PG_FILE_TABLESPACEMAP), NULL) != NULL && manifestData(manifest)->pgVersion >= PG_VERSION_TABLESPACE_MAP) { LOG_DETAIL_FMT("skip '" PG_FILE_TABLESPACEMAP "' -- tablespace links will be created based on mappings"); manifestFileRemove(manifest, STRDEF(MANIFEST_TARGET_PGDATA "/" PG_FILE_TABLESPACEMAP)); } // Skip postgresql.auto.conf if preserve is set and the PostgreSQL version supports recovery GUCs if (manifestData(manifest)->pgVersion >= PG_VERSION_RECOVERY_GUC && strEq(cfgOptionStr(cfgOptType), RECOVERY_TYPE_PRESERVE_STR) && manifestFileFindDefault(manifest, STRDEF(MANIFEST_TARGET_PGDATA "/" PG_FILE_POSTGRESQLAUTOCONF), NULL) != NULL) { LOG_DETAIL_FMT("skip '" PG_FILE_POSTGRESQLAUTOCONF "' -- recovery type is preserve"); manifestFileRemove(manifest, STRDEF(MANIFEST_TARGET_PGDATA "/" PG_FILE_POSTGRESQLAUTOCONF)); } // Step 2: Clean target directories // ------------------------------------------------------------------------------------------------------------------------- // Delete the pg_control file (if it exists) so the cluster cannot be started if restore does not complete. Sync the path // so the file does not return, zombie-like, in the case of a host crash. if (storageExistsP(storagePg(), STRDEF(PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL))) { LOG_DETAIL_FMT( "remove '" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL "' so cluster will not start if restore does not complete"); storageRemoveP(storagePgWrite(), STRDEF(PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL)); storagePathSyncP(storagePgWrite(), PG_PATH_GLOBAL_STR); } for (unsigned int targetIdx = 0; targetIdx < manifestTargetTotal(manifest); targetIdx++) { RestoreCleanCallbackData *cleanData = &cleanDataList[targetIdx]; // Only clean if the target exists if (cleanData->exists) { // Don't clean file links. It doesn't matter whether the file exists or not since we know it is in the manifest. if (cleanData->target->file == NULL) { // Only log when doing a delta restore because otherwise the targets should be empty. We'll still run the clean // to fix permissions/ownership on the target paths. if (delta) LOG_INFO_FMT("remove invalid files/links/paths from '%s'", strPtr(cleanData->targetPath)); // Clean the target storageInfoListP( storageLocalWrite(), cleanData->targetPath, restoreCleanInfoListCallback, cleanData, .errorOnMissing = true, .sortOrder = sortOrderAsc); } } // If the target does not exist we'll attempt to create it else { const ManifestPath *path = NULL; // There is no path information for a file link so we'll need to use the data directory if (cleanData->target->file != NULL) { path = manifestPathFind(manifest, MANIFEST_TARGET_PGDATA_STR); } // Else grab the info for the path that matches the link name else path = manifestPathFind(manifest, cleanData->target->name); storagePathCreateP(storageLocalWrite(), cleanData->targetPath, .mode = path->mode); restoreCleanOwnership(cleanData->targetPath, path->user, path->group, userId(), groupId(), true); } } // Step 3: Create missing paths and path links // ------------------------------------------------------------------------------------------------------------------------- for (unsigned int pathIdx = 0; pathIdx < manifestPathTotal(manifest); pathIdx++) { const ManifestPath *path = manifestPath(manifest, pathIdx); // Skip the pg_tblspc path because it only maps to the manifest. We should remove this in a future release but not much // can be done about it for now. if (strEq(path->name, MANIFEST_TARGET_PGTBLSPC_STR)) continue; // If this path has been mapped as a link then create a link. The path has already been created as part of target // creation (or it might have already existed). const ManifestLink *link = manifestLinkFindDefault( manifest, strBeginsWith(path->name, MANIFEST_TARGET_PGTBLSPC_STR) ? strNewFmt(MANIFEST_TARGET_PGDATA "/%s", strPtr(path->name)) : path->name, NULL); if (link != NULL) { const String *pgPath = storagePathP(storagePg(), manifestPathPg(link->name)); StorageInfo linkInfo = storageInfoP(storagePg(), pgPath, .ignoreMissing = true); // Create the link if it is missing. If it exists it should already have the correct ownership and destination. if (!linkInfo.exists) { LOG_DETAIL_FMT("create symlink '%s' to '%s'", strPtr(pgPath), strPtr(link->destination)); THROW_ON_SYS_ERROR_FMT( symlink(strPtr(link->destination), strPtr(pgPath)) == -1, FileOpenError, "unable to create symlink '%s' to '%s'", strPtr(pgPath), strPtr(link->destination)); restoreCleanOwnership(pgPath, link->user, link->group, userId(), groupId(), true); } } // Create the path normally else { const String *pgPath = storagePathP(storagePg(), manifestPathPg(path->name)); StorageInfo pathInfo = storageInfoP(storagePg(), pgPath, .ignoreMissing = true); // Create the path if it is missing If it exists it should already have the correct ownership and mode. if (!pathInfo.exists) { LOG_DETAIL_FMT("create path '%s'", strPtr(pgPath)); storagePathCreateP(storagePgWrite(), pgPath, .mode = path->mode, .noParentCreate = true, .errorOnExists = true); restoreCleanOwnership(storagePathP(storagePg(), pgPath), path->user, path->group, userId(), groupId(), true); } } } // Step 4: Create file links. These don't get created during path creation because they do not have a matching path entry. // ------------------------------------------------------------------------------------------------------------------------- for (unsigned int linkIdx = 0; linkIdx < manifestLinkTotal(manifest); linkIdx++) { const ManifestLink *link = manifestLink(manifest, linkIdx); const String *pgPath = storagePathP(storagePg(), manifestPathPg(link->name)); StorageInfo linkInfo = storageInfoP(storagePg(), pgPath, .ignoreMissing = true); // Create the link if it is missing. If it exists it should already have the correct ownership and destination. if (!linkInfo.exists) { LOG_DETAIL_FMT("create symlink '%s' to '%s'", strPtr(pgPath), strPtr(link->destination)); THROW_ON_SYS_ERROR_FMT( symlink(strPtr(link->destination), strPtr(pgPath)) == -1, FileOpenError, "unable to create symlink '%s' to '%s'", strPtr(pgPath), strPtr(link->destination)); restoreCleanOwnership(pgPath, link->user, link->group, userId(), groupId(), true); } } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Generate the expression to zero files that are not needed for selective restore ***********************************************************************************************************************************/ static String * restoreSelectiveExpression(Manifest *manifest) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_LOG_END(); ASSERT(manifest != NULL); String *result = NULL; // Continue if db-include is specified if (cfgOptionTest(cfgOptDbInclude)) { MEM_CONTEXT_TEMP_BEGIN() { // Generate base expression RegExp *baseRegExp = regExpNew(STRDEF("^" MANIFEST_TARGET_PGDATA "/" PG_PATH_BASE "/[0-9]+/" PG_FILE_PGVERSION)); // Generate tablespace expression RegExp *tablespaceRegExp = NULL; const String *tablespaceId = pgTablespaceId(manifestData(manifest)->pgVersion); if (tablespaceId == NULL) tablespaceRegExp = regExpNew(STRDEF("^" MANIFEST_TARGET_PGTBLSPC "/[0-9]+/[0-9]+/" PG_FILE_PGVERSION)); else { tablespaceRegExp = regExpNew( strNewFmt("^" MANIFEST_TARGET_PGTBLSPC "/[0-9]+/%s/[0-9]+/" PG_FILE_PGVERSION, strPtr(tablespaceId))); } // Generate a list of databases in base or in a tablespace StringList *dbList = strLstNew(); for (unsigned int fileIdx = 0; fileIdx < manifestFileTotal(manifest); fileIdx++) { const ManifestFile *file = manifestFile(manifest, fileIdx); if (regExpMatch(baseRegExp, file->name) || regExpMatch(tablespaceRegExp, file->name)) strLstAddIfMissing(dbList, strBase(strPath(file->name))); } strLstSort(dbList, sortOrderAsc); // If no databases were found then this backup is not a valid cluster if (strLstSize(dbList) == 0) THROW(FormatError, "no databases found for selective restore\nHINT: is this a valid cluster?"); // Log databases found LOG_DETAIL_FMT("databases found for selective restore (%s)", strPtr(strLstJoin(dbList, ", "))); // Remove included databases from the list const StringList *includeList = strLstNewVarLst(cfgOptionLst(cfgOptDbInclude)); for (unsigned int includeIdx = 0; includeIdx < strLstSize(includeList); includeIdx++) { const String *includeDb = strLstGet(includeList, includeIdx); // If the db to include is not in the list as an id then search by name if (!strLstExists(dbList, includeDb)) { const ManifestDb *db = manifestDbFindDefault(manifest, includeDb, NULL); if (db == NULL || !strLstExists(dbList, varStrForce(VARUINT(db->id)))) THROW_FMT(DbMissingError, "database to include '%s' does not exist", strPtr(includeDb)); // Set the include db to the id if the name mapping was successful includeDb = varStrForce(VARUINT(db->id)); } // Error if the db is a system db if (cvtZToUInt64(strPtr(includeDb)) < PG_USER_OBJECT_MIN_ID) THROW(DbInvalidError, "system databases (template0, postgres, etc.) are included by default"); // Remove from list of DBs to zero strLstRemove(dbList, includeDb); } // Build regular expression to identify files that will be zeroed strLstSort(dbList, sortOrderAsc); String *expression = NULL; for (unsigned int dbIdx = 0; dbIdx < strLstSize(dbList); dbIdx++) { const String *db = strLstGet(dbList, dbIdx); // Only user created databases can be zeroed, never system databases if (cvtZToUInt64(strPtr(db)) >= PG_USER_OBJECT_MIN_ID) { // Create expression string or append | if (expression == NULL) expression = strNew(""); else strCat(expression, "|"); // Filter files in base directory strCatFmt(expression, "(^" MANIFEST_TARGET_PGDATA "/" PG_PATH_BASE "/%s/)", strPtr(db)); // Filter files in tablespace directories for (unsigned int targetIdx = 0; targetIdx < manifestTargetTotal(manifest); targetIdx++) { const ManifestTarget *target = manifestTarget(manifest, targetIdx); if (target->tablespaceId != 0) { if (tablespaceId == NULL) strCatFmt(expression, "|(^%s/%s/)", strPtr(target->name), strPtr(db)); else strCatFmt(expression, "|(^%s/%s/%s/)", strPtr(target->name), strPtr(tablespaceId), strPtr(db)); } } } } // If all user databases have been selected then nothing to do if (expression == NULL) { LOG_INFO_FMT("nothing to filter - all user databases have been selected"); } // Else return the expression else { MEM_CONTEXT_PRIOR_BEGIN() { result = strDup(expression); } MEM_CONTEXT_PRIOR_END(); } } MEM_CONTEXT_TEMP_END(); } FUNCTION_LOG_RETURN(STRING, result); } /*********************************************************************************************************************************** Generate the recovery file ***********************************************************************************************************************************/ // Helper to generate recovery options static KeyValue * restoreRecoveryOption(unsigned int pgVersion) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(UINT, pgVersion); FUNCTION_LOG_END(); KeyValue *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { result = kvNew(); StringList *recoveryOptionKey = strLstNew(); if (cfgOptionTest(cfgOptRecoveryOption)) { const KeyValue *recoveryOption = cfgOptionKv(cfgOptRecoveryOption); recoveryOptionKey = strLstSort(strLstNewVarLst(kvKeyList(recoveryOption)), sortOrderAsc); for (unsigned int keyIdx = 0; keyIdx < strLstSize(recoveryOptionKey); keyIdx++) { // Get the key and value String *key = strLstGet(recoveryOptionKey, keyIdx); const String *value = varStr(kvGet(recoveryOption, VARSTR(key))); // Replace - in key with _. Since we use - users naturally will as well. strReplaceChr(key, '-', '_'); kvPut(result, VARSTR(key), VARSTR(value)); } strLstSort(recoveryOptionKey, sortOrderAsc); } // Write restore_command if (!strLstExists(recoveryOptionKey, RESTORE_COMMAND_STR)) { // Null out options that it does not make sense to pass from the restore command to archive-get. All of these have // reasonable defaults so there is no danger of a error -- they just might not be optimal. In any case, it seems // better than, for example, passing --process-max=32 to archive-get because it was specified for restore. KeyValue *optionReplace = kvNew(); kvPut(optionReplace, VARSTR(CFGOPT_LOG_LEVEL_CONSOLE_STR), NULL); kvPut(optionReplace, VARSTR(CFGOPT_LOG_LEVEL_FILE_STR), NULL); kvPut(optionReplace, VARSTR(CFGOPT_LOG_LEVEL_STDERR_STR), NULL); kvPut(optionReplace, VARSTR(CFGOPT_LOG_SUBPROCESS_STR), NULL); kvPut(optionReplace, VARSTR(CFGOPT_LOG_TIMESTAMP_STR), NULL); kvPut(optionReplace, VARSTR(CFGOPT_PROCESS_MAX_STR), NULL); kvPut( result, VARSTRZ(RESTORE_COMMAND), VARSTR( strNewFmt( "%s %s %%f \"%%p\"", strPtr(cfgExe()), strPtr(strLstJoin(cfgExecParam(cfgCmdArchiveGet, cfgCmdRoleDefault, optionReplace, true, true), " "))))); } // If recovery type is immediate if (strEq(cfgOptionStr(cfgOptType), RECOVERY_TYPE_IMMEDIATE_STR)) { kvPut(result, VARSTRZ(RECOVERY_TARGET), VARSTRZ(RECOVERY_TYPE_IMMEDIATE)); } // Else recovery type is standby else if (strEq(cfgOptionStr(cfgOptType), RECOVERY_TYPE_STANDBY_STR)) { // Write standby_mode for PostgreSQL versions that support it if (pgVersion < PG_VERSION_RECOVERY_GUC) kvPut(result, VARSTR(STANDBY_MODE_STR), VARSTRDEF("on")); } // Else recovery type is not default so write target options else if (!strEq(cfgOptionStr(cfgOptType), RECOVERY_TYPE_DEFAULT_STR)) { // Write the recovery target kvPut( result, VARSTR(strNewFmt(RECOVERY_TARGET "_%s", strPtr(cfgOptionStr(cfgOptType)))), VARSTR(cfgOptionStr(cfgOptTarget))); // Write recovery_target_inclusive if (cfgOptionTest(cfgOptTargetExclusive) && cfgOptionBool(cfgOptTargetExclusive)) kvPut(result, VARSTRZ(RECOVERY_TARGET_INCLUSIVE), VARSTR(FALSE_STR)); } // Write pause_at_recovery_target/recovery_target_action if (cfgOptionTest(cfgOptTargetAction)) { const String *targetAction = cfgOptionStr(cfgOptTargetAction); if (!strEqZ(targetAction, cfgDefOptionDefault(cfgDefCmdRestore, cfgDefOptTargetAction))) { // Write recovery_target on supported PostgreSQL versions if (pgVersion >= PG_VERSION_RECOVERY_TARGET_ACTION) { kvPut(result, VARSTRZ(RECOVERY_TARGET_ACTION), VARSTR(targetAction)); } // Write pause_at_recovery_target on supported PostgreSQL versions else if (pgVersion >= PG_VERSION_RECOVERY_TARGET_PAUSE) { // Shutdown action is not supported with pause_at_recovery_target setting if (strEq(targetAction, RECOVERY_TARGET_ACTION_SHUTDOWN_STR)) { THROW_FMT( OptionInvalidError, CFGOPT_TARGET_ACTION "=" RECOVERY_TARGET_ACTION_SHUTDOWN " is only available in PostgreSQL >= %s", strPtr(pgVersionToStr(PG_VERSION_RECOVERY_TARGET_ACTION))); } kvPut(result, VARSTRZ(PAUSE_AT_RECOVERY_TARGET), VARSTR(FALSE_STR)); } // Else error on unsupported version else { THROW_FMT( OptionInvalidError, CFGOPT_TARGET_ACTION " option is only available in PostgreSQL >= %s", strPtr(pgVersionToStr(PG_VERSION_RECOVERY_TARGET_PAUSE))); } } } // Write recovery_target_timeline if (cfgOptionTest(cfgOptTargetTimeline)) kvPut(result, VARSTRZ(RECOVERY_TARGET_TIMELINE), VARSTR(cfgOptionStr(cfgOptTargetTimeline))); // Move to prior context kvMove(result, memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(KEY_VALUE, result); } // Helper to convert recovery options to text format static String * restoreRecoveryConf(unsigned int pgVersion, const String *restoreLabel) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(UINT, pgVersion); FUNCTION_LOG_PARAM(STRING, restoreLabel); FUNCTION_LOG_END(); String *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { result = strNewFmt("# Recovery settings generated by " PROJECT_NAME " restore on %s\n", strPtr(restoreLabel)); // Output all recovery options KeyValue *optionKv = restoreRecoveryOption(pgVersion); const VariantList *optionKeyList = kvKeyList(optionKv); for (unsigned int optionKeyIdx = 0; optionKeyIdx < varLstSize(optionKeyList); optionKeyIdx++) { const Variant *optionKey = varLstGet(optionKeyList, optionKeyIdx); strCatFmt(result, "%s = '%s'\n", strPtr(varStr(optionKey)), strPtr(varStr(kvGet(optionKv, optionKey)))); } // Move to prior context MEM_CONTEXT_PRIOR_BEGIN() { result = strDup(result); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING, result); } // Helper to write recovery options into recovery.conf static void restoreRecoveryWriteConf(const Manifest *manifest, unsigned int pgVersion, const String *restoreLabel) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_LOG_PARAM(UINT, pgVersion); FUNCTION_LOG_PARAM(STRING, restoreLabel); FUNCTION_LOG_END(); // Only write recovery.conf if recovery type != none if (!strEq(cfgOptionStr(cfgOptType), RECOVERY_TYPE_NONE_STR)) { LOG_INFO_FMT("write %s", strPtr(storagePathP(storagePg(), PG_FILE_RECOVERYCONF_STR))); // Use the data directory to set permissions and ownership for recovery file const ManifestPath *dataPath = manifestPathFind(manifest, MANIFEST_TARGET_PGDATA_STR); mode_t recoveryFileMode = dataPath->mode & (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); // Write recovery.conf storagePutP( storageNewWriteP( storagePgWrite(), PG_FILE_RECOVERYCONF_STR, .noCreatePath = true, .modeFile = recoveryFileMode, .noAtomic = true, .noSyncPath = true, .user = dataPath->user, .group = dataPath->group), BUFSTR(restoreRecoveryConf(pgVersion, restoreLabel))); } FUNCTION_LOG_RETURN_VOID(); } // Helper to write recovery options into postgresql.auto.conf static void restoreRecoveryWriteAutoConf(unsigned int pgVersion, const String *restoreLabel) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(UINT, pgVersion); FUNCTION_LOG_PARAM(STRING, restoreLabel); FUNCTION_LOG_END(); MEM_CONTEXT_TEMP_BEGIN() { String *content = strNew(""); // Load postgresql.auto.conf so we can preserve the existing contents Buffer *autoConf = storageGetP(storageNewReadP(storagePg(), PG_FILE_POSTGRESQLAUTOCONF_STR, .ignoreMissing = true)); // It is unusual for the file not to exist, but we'll continue processing by creating a blank file if (autoConf == NULL) { LOG_WARN(PG_FILE_POSTGRESQLAUTOCONF " does not exist -- creating to contain recovery settings"); } // Else the file does exist so comment out old recovery options that could interfere with the current recovery. Don't // comment out *all* recovery options because some should only be commented out if there is a new option to replace it, e.g. // primary_conninfo. If the option shouldn't be commented out all the time then it won't ever be commnented out -- this // may not be ideal but it is what was decided. PostgreSQL will use the last value set so this is safe as long as the option // does not have dependencies on other options. else { // Generate a regexp that will match on all current recovery_target settings RegExp *recoveryExp = regExpNew( STRDEF( "^\\s*(" RECOVERY_TARGET "|" RECOVERY_TARGET_ACTION "|" RECOVERY_TARGET_INCLUSIVE "|" RECOVERY_TARGET_LSN "|" RECOVERY_TARGET_NAME "|" RECOVERY_TARGET_TIME "|" RECOVERY_TARGET_TIMELINE "|" RECOVERY_TARGET_XID ")\\s*=")); // Check each line for recovery settings const StringList *contentList = strLstNewSplit(strNewBuf(autoConf), LF_STR); for (unsigned int contentIdx = 0; contentIdx < strLstSize(contentList); contentIdx++) { if (contentIdx != 0) strCat(content, "\n"); const String *line = strLstGet(contentList, contentIdx); if (regExpMatch(recoveryExp, line)) strCatFmt(content, "# Removed by " PROJECT_NAME " restore on %s # ", strPtr(restoreLabel)); strCat(content, strPtr(line)); } // If settings will be appended then format the file so a blank line will be between old and new settings if (!strEq(cfgOptionStr(cfgOptType), RECOVERY_TYPE_NONE_STR)) { strTrim(content); strCat(content, "\n\n"); } } // If recovery was requested then write the recovery options if (!strEq(cfgOptionStr(cfgOptType), RECOVERY_TYPE_NONE_STR)) { // If the user specified standby_mode as a recovery option then error. It's tempting to just set type=standby in this // case but since config parsing has already happened the target options could be in an invalid state. if (cfgOptionTest(cfgOptRecoveryOption)) { const KeyValue *recoveryOption = cfgOptionKv(cfgOptRecoveryOption); StringList *recoveryOptionKey = strLstNewVarLst(kvKeyList(recoveryOption)); for (unsigned int keyIdx = 0; keyIdx < strLstSize(recoveryOptionKey); keyIdx++) { // Get the key and value String *key = strLstGet(recoveryOptionKey, keyIdx); // Replace - in key with _. Since we use - users naturally will as well. strReplaceChr(key, '-', '_'); if (strEq(key, STANDBY_MODE_STR)) { THROW_FMT( OptionInvalidError, "'" STANDBY_MODE "' setting is not valid for " PG_NAME " >= %s\n" "HINT: use --" CFGOPT_TYPE "=" RECOVERY_TYPE_STANDBY " instead of --" CFGOPT_RECOVERY_OPTION "=" STANDBY_MODE "=on.", strPtr(pgVersionToStr(PG_VERSION_RECOVERY_GUC))); } } } strCatFmt(content, "%s", strPtr(restoreRecoveryConf(pgVersion, restoreLabel))); } LOG_INFO_FMT( "write %s%s", autoConf == NULL ? "" : "updated ", strPtr(storagePathP(storagePg(), PG_FILE_POSTGRESQLAUTOCONF_STR))); // Use the data directory to set permissions and ownership for recovery file const StorageInfo dataPath = storageInfoP(storagePg(), NULL); mode_t recoveryFileMode = dataPath.mode & (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); // Write postgresql.auto.conf storagePutP( storageNewWriteP( storagePgWrite(), PG_FILE_POSTGRESQLAUTOCONF_STR, .noCreatePath = true, .modeFile = recoveryFileMode, .noAtomic = true, .noSyncPath = true, .user = dataPath.user, .group = dataPath.group), BUFSTR(content)); // The recovery.signal file is required for targeted recovery storagePutP( storageNewWriteP( storagePgWrite(), PG_FILE_RECOVERYSIGNAL_STR, .noCreatePath = true, .modeFile = recoveryFileMode, .noAtomic = true, .noSyncPath = true, .user = dataPath.user, .group = dataPath.group), NULL); // The standby.signal file is required for standby mode if (strEq(cfgOptionStr(cfgOptType), RECOVERY_TYPE_STANDBY_STR)) { storagePutP( storageNewWriteP( storagePgWrite(), PG_FILE_STANDBYSIGNAL_STR, .noCreatePath = true, .modeFile = recoveryFileMode, .noAtomic = true, .noSyncPath = true, .user = dataPath.user, .group = dataPath.group), NULL); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } static void restoreRecoveryWrite(const Manifest *manifest) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_LOG_END(); // Get PostgreSQL version to write recovery for unsigned int pgVersion = manifestData(manifest)->pgVersion; MEM_CONTEXT_TEMP_BEGIN() { // If recovery type is preserve then leave recovery file as it is if (strEq(cfgOptionStr(cfgOptType), RECOVERY_TYPE_PRESERVE_STR)) { // Determine which file recovery setttings will be written to const String *recoveryFile = pgVersion >= PG_VERSION_RECOVERY_GUC ? PG_FILE_POSTGRESQLAUTOCONF_STR : PG_FILE_RECOVERYCONF_STR; if (!storageExistsP(storagePg(), recoveryFile)) { LOG_WARN_FMT( "recovery type is " RECOVERY_TYPE_PRESERVE " but recovery file does not exist at '%s'", strPtr(storagePathP(storagePg(), recoveryFile))); } } // Else write recovery file else { // Generate a label used to identify this restore in the recovery file char restoreTimestamp[20]; time_t timestamp = time(NULL); strftime(restoreTimestamp, sizeof(restoreTimestamp), "%Y-%m-%d %H:%M:%S", localtime(×tamp)); const String *restoreLabel = STR(restoreTimestamp); // Write recovery file based on PostgreSQL version if (pgVersion >= PG_VERSION_RECOVERY_GUC) restoreRecoveryWriteAutoConf(pgVersion, restoreLabel); else restoreRecoveryWriteConf(manifest, pgVersion, restoreLabel); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Generate a list of queues that determine the order of file processing ***********************************************************************************************************************************/ // Comparator to order ManifestFile objects by size then name static int restoreProcessQueueComparator(const void *item1, const void *item2) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, item1); FUNCTION_TEST_PARAM_P(VOID, item2); FUNCTION_TEST_END(); ASSERT(item1 != NULL); ASSERT(item2 != NULL); // If the size differs then that's enough to determine order if ((*(ManifestFile **)item1)->size < (*(ManifestFile **)item2)->size) FUNCTION_TEST_RETURN(-1); else if ((*(ManifestFile **)item1)->size > (*(ManifestFile **)item2)->size) FUNCTION_TEST_RETURN(1); // If size is the same then use name to generate a deterministic ordering (names must be unique) FUNCTION_TEST_RETURN(strCmp((*(ManifestFile **)item1)->name, (*(ManifestFile **)item2)->name)); } static uint64_t restoreProcessQueue(Manifest *manifest, List **queueList) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_LOG_PARAM_P(LIST, queueList); FUNCTION_LOG_END(); ASSERT(manifest != NULL); uint64_t result = 0; MEM_CONTEXT_TEMP_BEGIN() { // Create list of process queue *queueList = lstNew(sizeof(List *)); // Generate the list of processing queues (there is always at least one) StringList *targetList = strLstNew(); strLstAdd(targetList, STRDEF(MANIFEST_TARGET_PGDATA "/")); for (unsigned int targetIdx = 0; targetIdx < manifestTargetTotal(manifest); targetIdx++) { const ManifestTarget *target = manifestTarget(manifest, targetIdx); if (target->tablespaceId != 0) strLstAdd(targetList, strNewFmt("%s/", strPtr(target->name))); } // Generate the processing queues MEM_CONTEXT_BEGIN(lstMemContext(*queueList)) { for (unsigned int targetIdx = 0; targetIdx < strLstSize(targetList); targetIdx++) { List *queue = lstNewP(sizeof(ManifestFile *), .comparator = restoreProcessQueueComparator); lstAdd(*queueList, &queue); } } MEM_CONTEXT_END(); // Now put all files into the processing queues for (unsigned int fileIdx = 0; fileIdx < manifestFileTotal(manifest); fileIdx++) { const ManifestFile *file = manifestFile(manifest, fileIdx); // Find the target that contains this file unsigned int targetIdx = 0; do { // A target should always be found CHECK(targetIdx < strLstSize(targetList)); if (strBeginsWith(file->name, strLstGet(targetList, targetIdx))) break; targetIdx++; } while (1); // Add file to queue lstAdd(*(List **)lstGet(*queueList, targetIdx), &file); // Add size to total result += file->size; } // Sort the queues for (unsigned int targetIdx = 0; targetIdx < strLstSize(targetList); targetIdx++) lstSort(*(List **)lstGet(*queueList, targetIdx), sortOrderDesc); // Move process queues to prior context lstMove(*queueList, memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(UINT64, result); } /*********************************************************************************************************************************** Log the results of a job and throw errors ***********************************************************************************************************************************/ // Helper function to determine if a file should be zeroed static bool restoreFileZeroed(const String *manifestName, RegExp *zeroExp) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, manifestName); FUNCTION_TEST_PARAM(REGEXP, zeroExp); FUNCTION_TEST_END(); ASSERT(manifestName != NULL); FUNCTION_TEST_RETURN( zeroExp == NULL ? false : regExpMatch(zeroExp, manifestName) && !strEndsWith(manifestName, STRDEF("/" PG_FILE_PGVERSION))); } // Helper function to construct the absolute pg path for any file static String * restoreFilePgPath(const Manifest *manifest, const String *manifestName) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, manifest); FUNCTION_TEST_PARAM(STRING, manifestName); FUNCTION_TEST_END(); ASSERT(manifest != NULL); ASSERT(manifestName != NULL); String *result = strNewFmt("%s/%s", strPtr(manifestTargetBase(manifest)->path), strPtr(manifestPathPg(manifestName))); if (strEq(manifestName, STRDEF(MANIFEST_TARGET_PGDATA "/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL))) result = strNewFmt("%s." STORAGE_FILE_TEMP_EXT, strPtr(result)); FUNCTION_TEST_RETURN(result); } static uint64_t restoreJobResult(const Manifest *manifest, ProtocolParallelJob *job, RegExp *zeroExp, uint64_t sizeTotal, uint64_t sizeRestored) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_LOG_PARAM(PROTOCOL_PARALLEL_JOB, job); FUNCTION_LOG_PARAM(REGEXP, zeroExp); FUNCTION_LOG_PARAM(UINT64, sizeTotal); FUNCTION_LOG_PARAM(UINT64, sizeRestored); FUNCTION_LOG_END(); ASSERT(manifest != NULL); // The job was successful if (protocolParallelJobErrorCode(job) == 0) { MEM_CONTEXT_TEMP_BEGIN() { const ManifestFile *file = manifestFileFind(manifest, varStr(protocolParallelJobKey(job))); bool zeroed = restoreFileZeroed(file->name, zeroExp); bool copy = varBool(protocolParallelJobResult(job)); String *log = strNew("restore"); // Note if file was zeroed (i.e. selective restore) if (zeroed) strCat(log, " zeroed"); // Add filename strCatFmt(log, " file %s", strPtr(restoreFilePgPath(manifest, file->name))); // If not copied and not zeroed add details to explain why it was not copied if (!copy && !zeroed) { strCat(log, " - "); // On force we match on size and modification time if (cfgOptionBool(cfgOptForce)) { strCatFmt( log, "exists and matches size %" PRIu64 " and modification time %" PRIu64, file->size, (uint64_t)file->timestamp); } // Else a checksum delta or file is zero-length else { strCat(log, "exists and "); // No need to copy zero-length files if (file->size == 0) { strCat(log, "is zero size"); } // The file matched the manifest checksum so did not need to be copied else strCat(log, "matches backup"); } } // Add size and percent complete sizeRestored += file->size; strCatFmt(log, " (%s, %" PRIu64 "%%)", strPtr(strSizeFormat(file->size)), sizeRestored * 100 / sizeTotal); // If not zero-length add the checksum if (file->size != 0 && !zeroed) strCatFmt(log, " checksum %s", file->checksumSha1); LOG_PID(copy ? logLevelInfo : logLevelDetail, protocolParallelJobProcessId(job), 0, strPtr(log)); } MEM_CONTEXT_TEMP_END(); // Free the job protocolParallelJobFree(job); } // Else the job errored else THROW_CODE(protocolParallelJobErrorCode(job), strPtr(protocolParallelJobErrorMessage(job))); FUNCTION_LOG_RETURN(UINT64, sizeRestored); } /*********************************************************************************************************************************** Return new restore jobs as requested ***********************************************************************************************************************************/ typedef struct RestoreJobData { Manifest *manifest; // Backup manifest List *queueList; // List of processing queues RegExp *zeroExp; // Identify files that should be sparse zeroed const String *cipherSubPass; // Passphrase used to decrypt files in the backup } RestoreJobData; // Helper to caculate the next queue to scan based on the client index static int restoreJobQueueNext(unsigned int clientIdx, int queueIdx, unsigned int queueTotal) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, clientIdx); FUNCTION_TEST_PARAM(INT, queueIdx); FUNCTION_TEST_PARAM(UINT, queueTotal); FUNCTION_TEST_END(); // Move (forward or back) to the next queue queueIdx += clientIdx % 2 ? -1 : 1; // Deal with wrapping on either end if (queueIdx < 0) FUNCTION_TEST_RETURN((int)queueTotal - 1); else if (queueIdx == (int)queueTotal) FUNCTION_TEST_RETURN(0); FUNCTION_TEST_RETURN(queueIdx); } // Callback to fetch restore jobs for the parallel executor static ProtocolParallelJob *restoreJobCallback(void *data, unsigned int clientIdx) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, data); FUNCTION_TEST_PARAM(UINT, clientIdx); FUNCTION_TEST_END(); ASSERT(data != NULL); ProtocolParallelJob *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { // Get a new job if there are any left RestoreJobData *jobData = data; // Determine where to begin scanning the queue (we'll stop when we get back here) int queueIdx = (int)(clientIdx % lstSize(jobData->queueList)); int queueEnd = queueIdx; do { List *queue = *(List **)lstGet(jobData->queueList, (unsigned int)queueIdx); if (lstSize(queue) > 0) { const ManifestFile *file = *(ManifestFile **)lstGet(queue, 0); // Create restore job ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_RESTORE_FILE_STR); protocolCommandParamAdd(command, VARSTR(file->name)); protocolCommandParamAdd( command, file->reference != NULL ? VARSTR(file->reference) : VARSTR(manifestData(jobData->manifest)->backupLabel)); protocolCommandParamAdd(command, VARBOOL(manifestData(jobData->manifest)->backupOptionCompress)); protocolCommandParamAdd(command, VARSTR(restoreFilePgPath(jobData->manifest, file->name))); protocolCommandParamAdd(command, VARSTRZ(file->checksumSha1)); protocolCommandParamAdd(command, VARBOOL(restoreFileZeroed(file->name, jobData->zeroExp))); protocolCommandParamAdd(command, VARUINT64(file->size)); protocolCommandParamAdd(command, VARUINT64((uint64_t)file->timestamp)); protocolCommandParamAdd(command, VARSTR(strNewFmt("%04o", file->mode))); protocolCommandParamAdd(command, VARSTR(file->user)); protocolCommandParamAdd(command, VARSTR(file->group)); protocolCommandParamAdd(command, VARUINT64((uint64_t)manifestData(jobData->manifest)->backupTimestampCopyStart)); protocolCommandParamAdd(command, VARBOOL(cfgOptionBool(cfgOptDelta) || cfgOptionBool(cfgOptForce))); protocolCommandParamAdd(command, VARBOOL(cfgOptionBool(cfgOptForce))); protocolCommandParamAdd(command, VARSTR(jobData->cipherSubPass)); // Remove job from the queue lstRemoveIdx(queue, 0); // Assign job to result result = protocolParallelJobMove(protocolParallelJobNew(VARSTR(file->name), command), memContextPrior()); // Break out of the loop early since we found a job break; } queueIdx = restoreJobQueueNext(clientIdx, queueIdx, lstSize(jobData->queueList)); } while (queueIdx != queueEnd); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Restore a backup ***********************************************************************************************************************************/ void cmdRestore(void) { FUNCTION_LOG_VOID(logLevelDebug); MEM_CONTEXT_TEMP_BEGIN() { // Get information for the current user userInit(); // PostgreSQL must be local pgIsLocalVerify(); // Validate restore path restorePathValidate(); // Get the repo storage in case it is remote and encryption settings need to be pulled down storageRepo(); // Load backup.info InfoBackup *infoBackup = infoBackupLoadFile( storageRepo(), INFO_BACKUP_PATH_FILE_STR, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); // Get the backup set const String *backupSet = restoreBackupSet(infoBackup); // Load manifest RestoreJobData jobData = {0}; jobData.manifest = manifestLoadFile( storageRepo(), strNewFmt(STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE, strPtr(backupSet)), cipherType(cfgOptionStr(cfgOptRepoCipherType)), infoPgCipherPass(infoBackupPg(infoBackup))); // Validate manifest. Don't use strict mode because we'd rather ignore problems that won't affect a restore. manifestValidate(jobData.manifest, false); // Get the cipher subpass used to decrypt files in the backup jobData.cipherSubPass = manifestCipherSubPass(jobData.manifest); // Validate the manifest restoreManifestValidate(jobData.manifest, backupSet); // Log the backup set to restore LOG_INFO_FMT("restore backup set %s", strPtr(backupSet)); // Map manifest restoreManifestMap(jobData.manifest); // Check that links are sane manifestLinkCheck(jobData.manifest); // Update ownership restoreManifestOwner(jobData.manifest); // Generate the selective restore expression String *expression = restoreSelectiveExpression(jobData.manifest); jobData.zeroExp = expression == NULL ? NULL : regExpNew(expression); // Clean the data directory and build path/link structure restoreCleanBuild(jobData.manifest); // Generate processing queues uint64_t sizeTotal = restoreProcessQueue(jobData.manifest, &jobData.queueList); // Save manifest to the data directory so we can restart a delta restore even if the PG_VERSION file is missing manifestSave(jobData.manifest, storageWriteIo(storageNewWriteP(storagePgWrite(), BACKUP_MANIFEST_FILE_STR))); // Create the parallel executor ProtocolParallel *parallelExec = protocolParallelNew( (TimeMSec)(cfgOptionDbl(cfgOptProtocolTimeout) * MSEC_PER_SEC) / 2, restoreJobCallback, &jobData); for (unsigned int processIdx = 1; processIdx <= cfgOptionUInt(cfgOptProcessMax); processIdx++) protocolParallelClientAdd(parallelExec, protocolLocalGet(protocolStorageTypeRepo, 1, processIdx)); // Process jobs uint64_t sizeRestored = 0; do { unsigned int completed = protocolParallelProcess(parallelExec); for (unsigned int jobIdx = 0; jobIdx < completed; jobIdx++) { sizeRestored = restoreJobResult( jobData.manifest, protocolParallelResult(parallelExec), jobData.zeroExp, sizeTotal, sizeRestored); } } while (!protocolParallelDone(parallelExec)); // Write recovery settings restoreRecoveryWrite(jobData.manifest); // Remove backup.manifest storageRemoveP(storagePgWrite(), BACKUP_MANIFEST_FILE_STR); // Sync file link paths. These need to be synced separately because they are not linked from the data directory. StringList *pathSynced = strLstNew(); for (unsigned int targetIdx = 0; targetIdx < manifestTargetTotal(jobData.manifest); targetIdx++) { const ManifestTarget *target = manifestTarget(jobData.manifest, targetIdx); if (target->type == manifestTargetTypeLink && target->file != NULL) { const String *pgPath = manifestTargetPath(jobData.manifest, target); // Don't sync the same path twice. There can be multiple links to files in the same path, but syncing it more than // once makes the logs noisy and looks like a bug even though it doesn't hurt anything or realistically affect // performance. if (strLstExists(pathSynced, pgPath)) continue; else strLstAdd(pathSynced, pgPath); // Sync the path LOG_DETAIL_FMT("sync path '%s'", strPtr(pgPath)); storagePathSyncP(storageLocalWrite(), pgPath); } } // Sync paths in the data directory for (unsigned int pathIdx = 0; pathIdx < manifestPathTotal(jobData.manifest); pathIdx++) { const String *manifestName = manifestPath(jobData.manifest, pathIdx)->name; // Skip the pg_tblspc path because it only maps to the manifest. We should remove this in a future release but not much // can be done about it for now. if (strEqZ(manifestName, MANIFEST_TARGET_PGTBLSPC)) continue; // We'll sync global after pg_control is written if (strEq(manifestName, STRDEF(MANIFEST_TARGET_PGDATA "/" PG_PATH_GLOBAL))) continue; const String *pgPath = storagePathP(storagePg(), manifestPathPg(manifestName)); LOG_DETAIL_FMT("sync path '%s'", strPtr(pgPath)); storagePathSyncP(storagePgWrite(), pgPath); } // Rename pg_control if (storageExistsP(storagePg(), STRDEF(PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL "." STORAGE_FILE_TEMP_EXT))) { LOG_INFO( "restore " PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL " (performed last to ensure aborted restores cannot be started)"); storageMoveP( storagePgWrite(), storageNewReadP(storagePg(), STRDEF(PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL "." STORAGE_FILE_TEMP_EXT)), storageNewWriteP(storagePgWrite(), STRDEF(PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL), .noSyncPath = true)); } else LOG_WARN("backup does not contain '" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL "' -- cluster will not start"); // Sync global path LOG_DETAIL_FMT("sync path '%s'", strPtr(storagePathP(storagePg(), PG_PATH_GLOBAL_STR))); storagePathSyncP(storagePgWrite(), PG_PATH_GLOBAL_STR); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/command/restore/restore.h000066400000000000000000000012221362531507100227300ustar00rootroot00000000000000/*********************************************************************************************************************************** Restore Command ***********************************************************************************************************************************/ #ifndef COMMAND_RESTORE_RESTORE_H #define COMMAND_RESTORE_RESTORE_H /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void cmdRestore(void); #endif pgbackrest-release-2.24/src/command/stanza/000077500000000000000000000000001362531507100207145ustar00rootroot00000000000000pgbackrest-release-2.24/src/command/stanza/common.c000066400000000000000000000051221362531507100223500ustar00rootroot00000000000000/*********************************************************************************************************************************** Stanza Commands Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include "command/check/common.h" #include "common/debug.h" #include "common/encode.h" #include "common/log.h" #include "config/config.h" #include "db/helper.h" #include "info/infoPg.h" #include "postgres/interface.h" #include "postgres/version.h" #include "storage/helper.h" /*********************************************************************************************************************************** Generate a cipher ***********************************************************************************************************************************/ String * cipherPassGen(CipherType cipherType) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, cipherType); FUNCTION_TEST_END(); String *result = NULL; if (cipherType != cipherTypeNone) { unsigned char buffer[48]; // 48 is the amount of entropy needed to get a 64 base key cryptoRandomBytes(buffer, sizeof(buffer)); char cipherPassSubChar[64]; encodeToStr(encodeBase64, buffer, sizeof(buffer), cipherPassSubChar); result = strNew(cipherPassSubChar); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Validate and return database information ***********************************************************************************************************************************/ PgControl pgValidate(void) { FUNCTION_TEST_VOID(); PgControl result = {0}; MEM_CONTEXT_TEMP_BEGIN() { if (cfgOptionBool(cfgOptOnline)) { // Check the connections of the master (and standby, if any) and return the master database object. DbGetResult dbObject = dbGet(false, true, false); // Get the pgControl information from the pg*-path deemed to be the master result = pgControlFromFile(storagePgId(dbObject.primaryId)); // Check the user configured path and version against the database checkDbConfig(result.version, dbObject.primaryId, dbObject.primary, false); } // If the database is not online, assume that pg1 is the master else result = pgControlFromFile(storagePg()); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } pgbackrest-release-2.24/src/command/stanza/common.h000066400000000000000000000014031362531507100223530ustar00rootroot00000000000000/*********************************************************************************************************************************** Stanza Commands Handler ***********************************************************************************************************************************/ #ifndef COMMAND_STANZA_COMMON_H #define COMMAND_STANZA_COMMON_H #include "info/infoPg.h" #include "postgres/interface.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ String *cipherPassGen(CipherType cipherType); PgControl pgValidate(void); #endif pgbackrest-release-2.24/src/command/stanza/create.c000066400000000000000000000156331362531507100223330ustar00rootroot00000000000000/*********************************************************************************************************************************** Stanza Create Command ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include "command/check/common.h" #include "command/control/common.h" #include "command/stanza/common.h" #include "command/stanza/create.h" #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "config/config.h" #include "info/infoArchive.h" #include "info/infoBackup.h" #include "info/infoPg.h" #include "postgres/interface.h" #include "postgres/version.h" #include "protocol/helper.h" #include "storage/helper.h" /*********************************************************************************************************************************** Process stanza-create ***********************************************************************************************************************************/ void cmdStanzaCreate(void) { FUNCTION_LOG_VOID(logLevelDebug); // Verify the repo is local and that a stop was not issued before proceeding repoIsLocalVerify(); lockStopTest(); MEM_CONTEXT_TEMP_BEGIN() { if (cfgOptionBool(cfgOptForce)) LOG_WARN("option --force is no longer supported"); const Storage *storageRepoReadStanza = storageRepo(); const Storage *storageRepoWriteStanza = storageRepoWrite(); InfoArchive *infoArchive = NULL; InfoBackup *infoBackup = NULL; // Get the version and system information - validating it if the database is online PgControl pgControl = pgValidate(); bool archiveInfoFileExists = storageExistsP(storageRepoReadStanza, INFO_ARCHIVE_PATH_FILE_STR); bool archiveInfoFileCopyExists = storageExistsP(storageRepoReadStanza, INFO_ARCHIVE_PATH_FILE_COPY_STR); bool backupInfoFileExists = storageExistsP(storageRepoReadStanza, INFO_BACKUP_PATH_FILE_STR); bool backupInfoFileCopyExists = storageExistsP(storageRepoReadStanza, INFO_BACKUP_PATH_FILE_COPY_STR); // If neither archive info nor backup info files exist and nothing else exists in the stanza directory // then create the stanza if (!archiveInfoFileExists && !archiveInfoFileCopyExists && !backupInfoFileExists && !backupInfoFileCopyExists) { bool archiveNotEmpty = strLstSize(storageListP(storageRepoReadStanza, STORAGE_REPO_ARCHIVE_STR)) > 0 ? true : false; bool backupNotEmpty = strLstSize(storageListP(storageRepoReadStanza, STORAGE_REPO_BACKUP_STR)) > 0 ? true : false; // If something else exists in the backup or archive directories for this stanza, then error if (archiveNotEmpty || backupNotEmpty) { THROW_FMT( PathNotEmptyError, "%s%s%snot empty", (backupNotEmpty ? "backup directory " : ""), (backupNotEmpty && archiveNotEmpty ? "and/or " : ""), (archiveNotEmpty ? "archive directory " : "")); } // If the repo is encrypted, generate a cipher passphrase for encrypting subsequent archive files String *cipherPassSub = cipherPassGen(cipherType(cfgOptionStr(cfgOptRepoCipherType))); // Create and save archive info infoArchive = infoArchiveNew(pgControl.version, pgControl.systemId, cipherPassSub); infoArchiveSaveFile( infoArchive, storageRepoWriteStanza, INFO_ARCHIVE_PATH_FILE_STR, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); // If the repo is encrypted, generate a cipher passphrase for encrypting subsequent backup files cipherPassSub = cipherPassGen(cipherType(cfgOptionStr(cfgOptRepoCipherType))); // Create and save backup info infoBackup = infoBackupNew(pgControl.version, pgControl.systemId, cipherPassSub); infoBackupSaveFile( infoBackup, storageRepoWriteStanza, INFO_BACKUP_PATH_FILE_STR, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); } // Else if at least one archive and one backup info file exists, then ensure both are valid else if ((archiveInfoFileExists || archiveInfoFileCopyExists) && (backupInfoFileExists || backupInfoFileCopyExists)) { // Error if there is a mismatch between the archive and backup info files or the database version/system Id matches // current database checkStanzaInfoPg( storageRepoReadStanza, pgControl.version, pgControl.systemId, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); // The files are valid - upgrade const String *sourceFile = NULL; const String *destinationFile = NULL; // If the existing files are valid, then, if a file is missing, copy the existing one to the missing one to ensure // there is both a .info and .info.copy if (!archiveInfoFileExists || !archiveInfoFileCopyExists) { sourceFile = archiveInfoFileExists ? INFO_ARCHIVE_PATH_FILE_STR : INFO_ARCHIVE_PATH_FILE_COPY_STR; destinationFile = !archiveInfoFileExists ? INFO_ARCHIVE_PATH_FILE_STR : INFO_ARCHIVE_PATH_FILE_COPY_STR; storageCopyP( storageNewReadP(storageRepoReadStanza, sourceFile), storageNewWriteP(storageRepoWriteStanza, destinationFile)); } if (!backupInfoFileExists || !backupInfoFileCopyExists) { sourceFile = backupInfoFileExists ? INFO_BACKUP_PATH_FILE_STR : INFO_BACKUP_PATH_FILE_COPY_STR; destinationFile = !backupInfoFileExists ? INFO_BACKUP_PATH_FILE_STR : INFO_BACKUP_PATH_FILE_COPY_STR; storageCopyP( storageNewReadP(storageRepoReadStanza, sourceFile), storageNewWriteP(storageRepoWriteStanza, destinationFile)); } // If no files copied, then the stanza was already valid if (sourceFile == NULL) LOG_INFO_FMT("stanza '%s' already exists and is valid", strPtr(cfgOptionStr(cfgOptStanza))); } // Else if both .info and corresponding .copy file are missing for one but not the other, then error else { THROW_FMT( FileMissingError, "%s\n" "HINT: this may be a symptom of repository corruption!", ((archiveInfoFileExists || archiveInfoFileCopyExists) ? "archive.info exists but backup.info is missing" : "backup.info exists but archive.info is missing")); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/command/stanza/create.h000066400000000000000000000012311362531507100223250ustar00rootroot00000000000000/*********************************************************************************************************************************** Stanza Create Command ***********************************************************************************************************************************/ #ifndef COMMAND_STANZA_CREATE_H #define COMMAND_STANZA_CREATE_H /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void cmdStanzaCreate(void); #endif pgbackrest-release-2.24/src/command/stanza/delete.c000066400000000000000000000146101362531507100223240ustar00rootroot00000000000000/*********************************************************************************************************************************** Stanza Delete Command ***********************************************************************************************************************************/ #include "build.auto.h" #include "command/control/common.h" #include "command/stanza/delete.h" #include "command/backup/common.h" #include "common/debug.h" #include "common/memContext.h" #include "config/config.h" #include "info/infoArchive.h" #include "info/infoBackup.h" #include "info/manifest.h" #include "postgres/interface.h" #include "protocol/helper.h" #include "storage/helper.h" /*********************************************************************************************************************************** Helper functions to assist with testing ***********************************************************************************************************************************/ static void manifestDelete(const Storage *storageRepoWriteStanza) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE, storageRepoWriteStanza); FUNCTION_TEST_END(); ASSERT(storageRepoWriteStanza != NULL); // Get the list of backup directories from newest to oldest since don't want to invalidate a backup before // invalidating any backups that depend on it. StringList *backupList = strLstSort( storageListP( storageRepo(), STORAGE_REPO_BACKUP_STR, .expression = backupRegExpP(.full = true, .differential = true, .incremental = true)), sortOrderDesc); // Delete all manifest files for (unsigned int idx = 0; idx < strLstSize(backupList); idx++) { storageRemoveP( storageRepoWriteStanza, strNewFmt(STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE, strPtr(strLstGet(backupList, idx)))); storageRemoveP( storageRepoWriteStanza, strNewFmt(STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE INFO_COPY_EXT, strPtr(strLstGet(backupList, idx)))); } FUNCTION_TEST_RETURN_VOID(); } static bool stanzaDelete(const Storage *storageRepoWriteStanza, const StringList *archiveList, const StringList *backupList) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE, storageRepoWriteStanza); FUNCTION_TEST_PARAM(STRING_LIST, archiveList); FUNCTION_TEST_PARAM(STRING_LIST, archiveList); FUNCTION_TEST_END(); ASSERT(storageRepoWriteStanza != NULL); bool result = false; // For most drivers, NULL indicates the directory does not exist at all. For those that do not support paths (e.g. S3) an // empty StringList will be returned; in such a case, the directory will attempt to be deleted (this is OK). if (archiveList != NULL || backupList != NULL) { bool archiveNotEmpty = (archiveList != NULL && strLstSize(archiveList) > 0) ? true : false; bool backupNotEmpty = (backupList != NULL && strLstSize(backupList) > 0) ? true : false; // If something exists in either directory, then remove if (archiveNotEmpty || backupNotEmpty) { // If the stop file does not exist, then error. This check is required even when --force is issued. if (!storageExistsP(storageLocal(), lockStopFileName(cfgOptionStr(cfgOptStanza)))) { THROW_FMT( FileMissingError, "stop file does not exist for stanza '%s'\n" "HINT: has the pgbackrest stop command been run on this server for this stanza?", strPtr(cfgOptionStr(cfgOptStanza))); } // If a force has not been issued and Postgres is running, then error if (!cfgOptionBool(cfgOptForce) && storageExistsP(storagePg(), STRDEF(PG_FILE_POSTMASTERPID))) { THROW_FMT( PostmasterRunningError, PG_FILE_POSTMASTERPID " exists - looks like the postmaster is running. " "To delete stanza '%s', shutdown the postmaster for stanza '%s' and try again, or use --force.", strPtr(cfgOptionStr(cfgOptStanza)), strPtr(cfgOptionStr(cfgOptStanza))); } // Delete the archive info files if (archiveNotEmpty) { storageRemoveP(storageRepoWriteStanza, INFO_ARCHIVE_PATH_FILE_STR); storageRemoveP(storageRepoWriteStanza, INFO_ARCHIVE_PATH_FILE_COPY_STR); } // Delete the backup info files if (backupNotEmpty) { storageRemoveP(storageRepoWriteStanza, INFO_BACKUP_PATH_FILE_STR); storageRemoveP(storageRepoWriteStanza, INFO_BACKUP_PATH_FILE_COPY_STR); } // Remove manifest files manifestDelete(storageRepoWriteStanza); } // Recursively remove the entire stanza repo if exists. S3 will attempt to remove even if not. if (archiveList != NULL) storagePathRemoveP(storageRepoWriteStanza, STORAGE_REPO_ARCHIVE_STR, .recurse = true); if (backupList != NULL) storagePathRemoveP(storageRepoWriteStanza, STORAGE_REPO_BACKUP_STR, .recurse = true); // Remove the stop file - this will not error if the stop file does not exist. If the stanza directories existed but nothing // was in them, then no pgbackrest commands can be in progress without the info files so a stop is technically not necessary storageRemoveP(storageLocalWrite(), lockStopFileName(cfgOptionStr(cfgOptStanza))); result = true; } else result = true; FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Process stanza-delete ***********************************************************************************************************************************/ void cmdStanzaDelete(void) { FUNCTION_LOG_VOID(logLevelDebug); // Verify the repo is local before proceeding repoIsLocalVerify(); MEM_CONTEXT_TEMP_BEGIN() { const Storage *storageRepoReadStanza = storageRepo(); stanzaDelete( storageRepoWrite(), storageListP(storageRepoReadStanza, STORAGE_REPO_ARCHIVE_STR, .nullOnMissing = true), storageListP(storageRepoReadStanza, STORAGE_REPO_BACKUP_STR, .nullOnMissing = true)); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/command/stanza/delete.h000066400000000000000000000012311362531507100223240ustar00rootroot00000000000000/*********************************************************************************************************************************** Stanza Delete Command ***********************************************************************************************************************************/ #ifndef COMMAND_STANZA_DELETE_H #define COMMAND_STANZA_DELETE_H /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void cmdStanzaDelete(void); #endif pgbackrest-release-2.24/src/command/stanza/upgrade.c000066400000000000000000000103241362531507100225070ustar00rootroot00000000000000/*********************************************************************************************************************************** Stanza Update Command ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include "command/check/common.h" #include "command/control/common.h" #include "command/stanza/common.h" #include "command/stanza/upgrade.h" #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "config/config.h" #include "info/infoArchive.h" #include "info/infoBackup.h" #include "info/infoPg.h" #include "postgres/interface.h" #include "postgres/version.h" #include "protocol/helper.h" #include "storage/helper.h" /*********************************************************************************************************************************** Process stanza-upgrade ***********************************************************************************************************************************/ void cmdStanzaUpgrade(void) { FUNCTION_LOG_VOID(logLevelDebug); // Verify the repo is local and that a stop was not issued before proceeding repoIsLocalVerify(); lockStopTest(); MEM_CONTEXT_TEMP_BEGIN() { const Storage *storageRepoReadStanza = storageRepo(); const Storage *storageRepoWriteStanza = storageRepoWrite(); bool infoArchiveUpgrade = false; bool infoBackupUpgrade = false; // Get the version and system information - validating it if the database is online PgControl pgControl = pgValidate(); // Load the info files (errors if missing) InfoArchive *infoArchive = infoArchiveLoadFile( storageRepoReadStanza, INFO_ARCHIVE_PATH_FILE_STR, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); InfoPgData archiveInfo = infoPgData(infoArchivePg(infoArchive), infoPgDataCurrentId(infoArchivePg(infoArchive))); InfoBackup *infoBackup = infoBackupLoadFile( storageRepoReadStanza, INFO_BACKUP_PATH_FILE_STR, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); InfoPgData backupInfo = infoPgData(infoBackupPg(infoBackup), infoPgDataCurrentId(infoBackupPg(infoBackup))); // Since the file save of archive.info and backup.info are not atomic, then check and update each separately. // Update archive if (pgControl.version != archiveInfo.version || pgControl.systemId != archiveInfo.systemId) { infoArchivePgSet(infoArchive, pgControl.version, pgControl.systemId); infoArchiveUpgrade = true; } // Update backup if (pgControl.version != backupInfo.version || pgControl.systemId != backupInfo.systemId) { infoBackupPgSet(infoBackup, pgControl.version, pgControl.systemId); infoBackupUpgrade = true; } // Get the backup and archive info pg data and throw an error if the ids do not match before saving (even if only one // needed to be updated) backupInfo = infoPgData(infoBackupPg(infoBackup), infoPgDataCurrentId(infoBackupPg(infoBackup))); archiveInfo = infoPgData(infoArchivePg(infoArchive), infoPgDataCurrentId(infoArchivePg(infoArchive))); checkStanzaInfo(&archiveInfo, &backupInfo); // Save archive info if (infoArchiveUpgrade) { infoArchiveSaveFile( infoArchive, storageRepoWriteStanza, INFO_ARCHIVE_PATH_FILE_STR, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); } // Save backup info if (infoBackupUpgrade) { infoBackupSaveFile( infoBackup, storageRepoWriteStanza, INFO_BACKUP_PATH_FILE_STR, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)); } if (!(infoArchiveUpgrade || infoBackupUpgrade)) LOG_INFO_FMT("stanza '%s' is already up to date", strPtr(cfgOptionStr(cfgOptStanza))); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/command/stanza/upgrade.h000066400000000000000000000012351362531507100225150ustar00rootroot00000000000000/*********************************************************************************************************************************** Stanza Upgrade Command ***********************************************************************************************************************************/ #ifndef COMMAND_STANZA_UPGRADE_H #define COMMAND_STANZA_UPGRADE_H /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void cmdStanzaUpgrade(void); #endif pgbackrest-release-2.24/src/command/storage/000077500000000000000000000000001362531507100210605ustar00rootroot00000000000000pgbackrest-release-2.24/src/command/storage/list.c000066400000000000000000000133731362531507100222060ustar00rootroot00000000000000/*********************************************************************************************************************************** Storage List Command ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/debug.h" #include "common/io/handleWrite.h" #include "common/log.h" #include "common/memContext.h" #include "common/type/json.h" #include "common/type/string.h" #include "config/config.h" #include "storage/helper.h" /*********************************************************************************************************************************** Render storage list ***********************************************************************************************************************************/ typedef struct StorageListRenderCallbackData { IoWrite *write; // Where to write output bool json; // Is this json output? bool first; // Is this the first item? } StorageListRenderCallbackData; void storageListRenderCallback(void *data, const StorageInfo *info) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, data); FUNCTION_TEST_PARAM(STORAGE_INFO, info); FUNCTION_TEST_END(); ASSERT(data != NULL); ASSERT(info != NULL); StorageListRenderCallbackData *listData = (StorageListRenderCallbackData *)data; // Skip . path when output is text if (info->type == storageTypePath && strEq(info->name, DOT_STR) && !listData->json) { FUNCTION_TEST_RETURN_VOID(); return; } // Add seperator character if (!listData->first) { if (listData->json) ioWrite(listData->write, COMMA_BUF); else ioWrite(listData->write, LF_BUF); } else listData->first = false; // Render in json if (listData->json) { ioWriteStr(listData->write, jsonFromStr(info->name)); ioWrite(listData->write, BUFSTRDEF(":{\"type\":\"")); switch (info->type) { case storageTypeFile: { ioWrite(listData->write, BUFSTRDEF("file\"")); break; } case storageTypeLink: { ioWrite(listData->write, BUFSTRDEF("link\"")); break; } case storageTypePath: { ioWrite(listData->write, BUFSTRDEF("path\"")); break; } case storageTypeSpecial: { ioWrite(listData->write, BUFSTRDEF("special\"")); break; } } if (info->type == storageTypeFile) { ioWriteStr(listData->write, strNewFmt(",\"size\":%" PRIu64, info->size)); ioWriteStr(listData->write, strNewFmt(",\"time\":%" PRId64, (int64_t)info->timeModified)); } if (info->type == storageTypeLink) ioWriteStr(listData->write, strNewFmt(",\"destination\":%s", strPtr(jsonFromStr(info->linkDestination)))); ioWrite(listData->write, BRACER_BUF); } // Render in text else { ioWrite(listData->write, BUFSTR(info->name)); } FUNCTION_TEST_RETURN_VOID(); } static void storageListRender(IoWrite *write) { FUNCTION_LOG_BEGIN(logLevelDebug) FUNCTION_LOG_PARAM(IO_WRITE, write); FUNCTION_LOG_END(); // Get sort order SortOrder sortOrder = sortOrderAsc; if (strEqZ(cfgOptionStr(cfgOptSort), "desc")) sortOrder = sortOrderDesc; else if (!strEqZ(cfgOptionStr(cfgOptSort), "asc")) { ASSERT(strEqZ(cfgOptionStr(cfgOptSort), "none")); sortOrder = sortOrderNone; } // Get path const String *path = NULL; if (strLstSize(cfgCommandParam()) == 1) path = strLstGet(cfgCommandParam(), 0); else if (strLstSize(cfgCommandParam()) > 1) THROW(ParamInvalidError, "only one path may be specified"); // Get output bool json = strEqZ(cfgOptionStr(cfgOptOutput), "json") ? true : false; // Render the info list StorageListRenderCallbackData data = { .write = write, .json = json, .first = true, }; ioWriteOpen(data.write); if (data.json) ioWrite(data.write, BRACEL_BUF); storageInfoListP( storageRepo(), path, storageListRenderCallback, &data, .sortOrder = sortOrder, .expression = cfgOptionStr(cfgOptFilter), .recurse = cfgOptionBool(cfgOptRecurse)); if (data.json) ioWrite(data.write, BRACER_BUF); ioWriteClose(data.write); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Render storage list and output to stdout ***********************************************************************************************************************************/ void cmdStorageList(void) { FUNCTION_LOG_VOID(logLevelDebug); MEM_CONTEXT_TEMP_BEGIN() { TRY_BEGIN() { storageListRender(ioHandleWriteNew(STRDEF("stdout"), STDOUT_FILENO)); ioHandleWriteOneStr(STDOUT_FILENO, LF_STR); } // Ignore write errors because it's possible (even likely) that this output is being piped to something like head which // will exit when it gets what it needs and leave us writing to a broken pipe. It would be better to just ignore the broken // pipe error but currently we don't store system error codes. CATCH(FileWriteError) { } TRY_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/command/storage/list.h000066400000000000000000000012251362531507100222040ustar00rootroot00000000000000/*********************************************************************************************************************************** Storage List Command ***********************************************************************************************************************************/ #ifndef COMMAND_STORAGE_LIST_H #define COMMAND_STORAGE_LIST_H /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void cmdStorageList(void); #endif pgbackrest-release-2.24/src/common/000077500000000000000000000000001362531507100172665ustar00rootroot00000000000000pgbackrest-release-2.24/src/common/assert.h000066400000000000000000000054071362531507100207460ustar00rootroot00000000000000/*********************************************************************************************************************************** Assert Routines ***********************************************************************************************************************************/ #ifndef COMMON_ASSERT_H #define COMMON_ASSERT_H #include "common/error.h" /*********************************************************************************************************************************** Asserts are used in test code to ensure that certain conditions are true. They are omitted from production builds. ***********************************************************************************************************************************/ #ifndef NDEBUG #define ASSERT(condition) \ do \ { \ if (!(condition)) \ THROW_FMT(AssertError, "assertion '%s' failed", #condition); \ } \ while (0) #else #define ASSERT(condition) #endif /*********************************************************************************************************************************** Checks are used in production builds to test very important conditions. Be sure to limit use to the most critical cases. ***********************************************************************************************************************************/ #define CHECK(condition) \ do \ { \ if (!(condition)) \ THROW_FMT(AssertError, "check '%s' failed", #condition); \ } \ while (0) #endif pgbackrest-release-2.24/src/common/compress/000077500000000000000000000000001362531507100211215ustar00rootroot00000000000000pgbackrest-release-2.24/src/common/compress/gzip/000077500000000000000000000000001362531507100220725ustar00rootroot00000000000000pgbackrest-release-2.24/src/common/compress/gzip/common.c000066400000000000000000000070321362531507100235300ustar00rootroot00000000000000/*********************************************************************************************************************************** Gzip Common ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/compress/gzip/common.h" #include "common/debug.h" #include "common/memContext.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define WINDOW_BITS 15 #define WANT_GZIP 16 /*********************************************************************************************************************************** Process gzip errors ***********************************************************************************************************************************/ int gzipError(int error) { if (error != Z_OK && error != Z_STREAM_END) { const char *errorMsg; const ErrorType *errorType = &FormatError; switch (error) { // Not exactly an error, but since we are not using custom dictionaries it shouldn't be possible to get this result case Z_NEED_DICT: { errorMsg = "need dictionary"; errorType = &AssertError; break; } // We should not get this error -- included for completeness case Z_ERRNO: { errorMsg = "file error"; errorType = &AssertError; break; } case Z_STREAM_ERROR: { errorMsg = "stream error"; break; } case Z_DATA_ERROR: { errorMsg = "data error"; break; } case Z_MEM_ERROR: { errorMsg = "insufficient memory"; errorType = &MemoryError; break; } // This error indicates an error in the code -- there should always be space in the buffer case Z_BUF_ERROR: { errorMsg = "no space in buffer"; errorType = &AssertError; break; } case Z_VERSION_ERROR: { errorMsg = "incompatible version"; break; } default: { errorMsg = "unknown error"; errorType = &AssertError; } } THROWP_FMT(errorType, "zlib threw error: [%d] %s", error, errorMsg); } return error; } /*********************************************************************************************************************************** Get gzip window bits Window bits define how large the compression window is. Larger window sizes generally result in better compression so we'll always use the largest size. When raw is specified disable the gzip header and produce raw compressed output (this is indicated by passing negative window bits). ***********************************************************************************************************************************/ int gzipWindowBits(bool raw) { return raw ? -WINDOW_BITS : WANT_GZIP | WINDOW_BITS; } pgbackrest-release-2.24/src/common/compress/gzip/common.h000066400000000000000000000020601362531507100235310ustar00rootroot00000000000000/*********************************************************************************************************************************** Gzip Common ***********************************************************************************************************************************/ #ifndef COMMON_COMPRESS_GZIP_COMMON_H #define COMMON_COMPRESS_GZIP_COMMON_H #include /*********************************************************************************************************************************** Gzip extension ***********************************************************************************************************************************/ #define GZIP_EXT "gz" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ int gzipError(int error); int gzipWindowBits(bool raw); #endif pgbackrest-release-2.24/src/common/compress/gzip/compress.c000066400000000000000000000203311362531507100240700ustar00rootroot00000000000000/*********************************************************************************************************************************** Gzip Compress ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include "common/compress/gzip/common.h" #include "common/compress/gzip/compress.h" #include "common/debug.h" #include "common/io/filter/filter.intern.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" /*********************************************************************************************************************************** Filter type constant ***********************************************************************************************************************************/ STRING_EXTERN(GZIP_COMPRESS_FILTER_TYPE_STR, GZIP_COMPRESS_FILTER_TYPE); /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define GZIP_COMPRESS_TYPE GzipCompress #define GZIP_COMPRESS_PREFIX gzipCompress typedef struct GzipCompress { MemContext *memContext; // Context to store data z_stream stream; // Compression stream state bool inputSame; // Is the same input required on the next process call? bool flush; // Is input complete and flushing in progress? bool done; // Is compression done? } GzipCompress; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ static String * gzipCompressToLog(const GzipCompress *this) { return strNewFmt( "{inputSame: %s, done: %s, flushing: %s, availIn: %u}", cvtBoolToConstZ(this->inputSame), cvtBoolToConstZ(this->done), cvtBoolToConstZ(this->done), this->stream.avail_in); } #define FUNCTION_LOG_GZIP_COMPRESS_TYPE \ GzipCompress * #define FUNCTION_LOG_GZIP_COMPRESS_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, gzipCompressToLog, buffer, bufferSize) /*********************************************************************************************************************************** Compression constants ***********************************************************************************************************************************/ #define MEM_LEVEL 9 /*********************************************************************************************************************************** Free deflate stream ***********************************************************************************************************************************/ OBJECT_DEFINE_FREE_RESOURCE_BEGIN(GZIP_COMPRESS, LOG, logLevelTrace) { deflateEnd(&this->stream); } OBJECT_DEFINE_FREE_RESOURCE_END(LOG); /*********************************************************************************************************************************** Compress data ***********************************************************************************************************************************/ static void gzipCompressProcess(THIS_VOID, const Buffer *uncompressed, Buffer *compressed) { THIS(GzipCompress); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(GZIP_COMPRESS, this); FUNCTION_LOG_PARAM(BUFFER, uncompressed); FUNCTION_LOG_PARAM(BUFFER, compressed); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(!this->done); ASSERT(compressed != NULL); ASSERT(!this->flush || uncompressed == NULL); ASSERT(this->flush || (!this->inputSame || this->stream.avail_in != 0)); // Flushing if (uncompressed == NULL) { this->stream.avail_in = 0; this->flush = true; } // More input else { // Is new input allowed? if (!this->inputSame) { this->stream.avail_in = (unsigned int)bufUsed(uncompressed); this->stream.next_in = bufPtr(uncompressed); } } // Initialize compressed output buffer this->stream.avail_out = (unsigned int)bufRemains(compressed); this->stream.next_out = bufPtr(compressed) + bufUsed(compressed); // Perform compression gzipError(deflate(&this->stream, this->flush ? Z_FINISH : Z_NO_FLUSH)); // Set buffer used space bufUsedSet(compressed, bufSize(compressed) - (size_t)this->stream.avail_out); // Is compression done? if (this->flush && this->stream.avail_out > 0) this->done = true; // Can more input be provided on the next call? this->inputSame = this->flush ? !this->done : this->stream.avail_in != 0; FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Is compress done? ***********************************************************************************************************************************/ static bool gzipCompressDone(const THIS_VOID) { THIS(const GzipCompress); FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(GZIP_COMPRESS, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->done); } /*********************************************************************************************************************************** Is the same input required on the next process call? ***********************************************************************************************************************************/ static bool gzipCompressInputSame(const THIS_VOID) { THIS(const GzipCompress); FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(GZIP_COMPRESS, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->inputSame); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ IoFilter * gzipCompressNew(int level, bool raw) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(INT, level); FUNCTION_LOG_PARAM(BOOL, raw); FUNCTION_LOG_END(); ASSERT(level >= -1 && level <= 9); IoFilter *this = NULL; MEM_CONTEXT_NEW_BEGIN("GzipCompress") { GzipCompress *driver = memNew(sizeof(GzipCompress)); *driver = (GzipCompress) { .memContext = MEM_CONTEXT_NEW(), .stream = {.zalloc = NULL}, }; // Create gzip stream gzipError(deflateInit2(&driver->stream, level, Z_DEFLATED, gzipWindowBits(raw), MEM_LEVEL, Z_DEFAULT_STRATEGY)); // Set free callback to ensure gzip context is freed memContextCallbackSet(driver->memContext, gzipCompressFreeResource, driver); // Create param list VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewInt(level)); varLstAdd(paramList, varNewBool(raw)); // Create filter interface this = ioFilterNewP( GZIP_COMPRESS_FILTER_TYPE_STR, driver, paramList, .done = gzipCompressDone, .inOut = gzipCompressProcess, .inputSame = gzipCompressInputSame); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(IO_FILTER, this); } IoFilter * gzipCompressNewVar(const VariantList *paramList) { return gzipCompressNew(varIntForce(varLstGet(paramList, 0)), varBool(varLstGet(paramList, 1))); } pgbackrest-release-2.24/src/common/compress/gzip/compress.h000066400000000000000000000023431362531507100241000ustar00rootroot00000000000000/*********************************************************************************************************************************** Gzip Compress Compress IO using the gzip format. ***********************************************************************************************************************************/ #ifndef COMMON_COMPRESS_GZIP_COMPRESS_H #define COMMON_COMPRESS_GZIP_COMPRESS_H #include "common/io/filter/filter.h" /*********************************************************************************************************************************** Filter type constant ***********************************************************************************************************************************/ #define GZIP_COMPRESS_FILTER_TYPE "gzipCompress" STRING_DECLARE(GZIP_COMPRESS_FILTER_TYPE_STR); /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ IoFilter *gzipCompressNew(int level, bool raw); IoFilter *gzipCompressNewVar(const VariantList *paramList); #endif pgbackrest-release-2.24/src/common/compress/gzip/decompress.c000066400000000000000000000170661362531507100244140ustar00rootroot00000000000000/*********************************************************************************************************************************** Gzip Decompress ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include "common/compress/gzip/common.h" #include "common/compress/gzip/decompress.h" #include "common/debug.h" #include "common/io/filter/filter.intern.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" /*********************************************************************************************************************************** Filter type constant ***********************************************************************************************************************************/ STRING_EXTERN(GZIP_DECOMPRESS_FILTER_TYPE_STR, GZIP_DECOMPRESS_FILTER_TYPE); /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define GZIP_DECOMPRESS_TYPE GzipDecompress #define GZIP_DECOMPRESS_PREFIX gzipDecompress typedef struct GzipDecompress { MemContext *memContext; // Context to store data z_stream stream; // Decompression stream state int result; // Result of last operation bool inputSame; // Is the same input required on the next process call? bool done; // Is decompression done? } GzipDecompress; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String * gzipDecompressToLog(const GzipDecompress *this) { return strNewFmt( "{inputSame: %s, done: %s, availIn: %u}", cvtBoolToConstZ(this->inputSame), cvtBoolToConstZ(this->done), this->stream.avail_in); } #define FUNCTION_LOG_GZIP_DECOMPRESS_TYPE \ GzipDecompress * #define FUNCTION_LOG_GZIP_DECOMPRESS_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, gzipDecompressToLog, buffer, bufferSize) /*********************************************************************************************************************************** Free inflate stream ***********************************************************************************************************************************/ OBJECT_DEFINE_FREE_RESOURCE_BEGIN(GZIP_DECOMPRESS, LOG, logLevelTrace) { inflateEnd(&this->stream); } OBJECT_DEFINE_FREE_RESOURCE_END(LOG); /*********************************************************************************************************************************** Decompress data ***********************************************************************************************************************************/ void gzipDecompressProcess(THIS_VOID, const Buffer *compressed, Buffer *uncompressed) { THIS(GzipDecompress); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(GZIP_DECOMPRESS, this); FUNCTION_LOG_PARAM(BUFFER, compressed); FUNCTION_LOG_PARAM(BUFFER, uncompressed); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(uncompressed != NULL); // There should never be a flush because in a valid compressed stream the end of data can be determined and done will be set. // If a flush is received it means the compressed stream terminated early, e.g. a zero-length or truncated file. if (compressed == NULL) THROW(FormatError, "unexpected eof in compressed data"); if (!this->inputSame) { this->stream.avail_in = (unsigned int)bufUsed(compressed); this->stream.next_in = bufPtr(compressed); } this->stream.avail_out = (unsigned int)bufRemains(uncompressed); this->stream.next_out = bufPtr(uncompressed) + bufUsed(uncompressed); this->result = gzipError(inflate(&this->stream, Z_NO_FLUSH)); // Set buffer used space bufUsedSet(uncompressed, bufSize(uncompressed) - (size_t)this->stream.avail_out); // Is decompression done? this->done = this->result == Z_STREAM_END; // Is the same input expected on the next call? this->inputSame = this->done ? false : this->stream.avail_in != 0; FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Is decompress done? ***********************************************************************************************************************************/ bool gzipDecompressDone(const THIS_VOID) { THIS(const GzipDecompress); FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(GZIP_DECOMPRESS, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->done); } /*********************************************************************************************************************************** Is the same input required on the next process call? ***********************************************************************************************************************************/ bool gzipDecompressInputSame(const THIS_VOID) { THIS(const GzipDecompress); FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(GZIP_DECOMPRESS, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->inputSame); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ IoFilter * gzipDecompressNew(bool raw) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(BOOL, raw); FUNCTION_LOG_END(); IoFilter *this = NULL; MEM_CONTEXT_NEW_BEGIN("GzipDecompress") { // Allocate state and set context GzipDecompress *driver = memNew(sizeof(GzipDecompress)); *driver = (GzipDecompress) { .memContext = MEM_CONTEXT_NEW(), .stream = {.zalloc = NULL}, }; // Create gzip stream gzipError(driver->result = inflateInit2(&driver->stream, gzipWindowBits(raw))); // Set free callback to ensure gzip context is freed memContextCallbackSet(driver->memContext, gzipDecompressFreeResource, driver); // Create param list VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewBool(raw)); // Create filter interface this = ioFilterNewP( GZIP_DECOMPRESS_FILTER_TYPE_STR, driver, paramList, .done = gzipDecompressDone, .inOut = gzipDecompressProcess, .inputSame = gzipDecompressInputSame); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(IO_FILTER, this); } IoFilter * gzipDecompressNewVar(const VariantList *paramList) { return gzipDecompressNew(varBool(varLstGet(paramList, 0))); } pgbackrest-release-2.24/src/common/compress/gzip/decompress.h000066400000000000000000000023471362531507100244150ustar00rootroot00000000000000/*********************************************************************************************************************************** Gzip Decompress Decompress IO from the gzip format. ***********************************************************************************************************************************/ #ifndef COMMON_COMPRESS_GZIP_DECOMPRESS_H #define COMMON_COMPRESS_GZIP_DECOMPRESS_H #include "common/io/filter/filter.h" /*********************************************************************************************************************************** Filter type constant ***********************************************************************************************************************************/ #define GZIP_DECOMPRESS_FILTER_TYPE "gzipDecompress" STRING_DECLARE(GZIP_DECOMPRESS_FILTER_TYPE_STR); /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ IoFilter *gzipDecompressNew(bool raw); IoFilter *gzipDecompressNewVar(const VariantList *paramList); #endif pgbackrest-release-2.24/src/common/crypto/000077500000000000000000000000001362531507100206065ustar00rootroot00000000000000pgbackrest-release-2.24/src/common/crypto/cipherBlock.c000066400000000000000000000500131362531507100231760ustar00rootroot00000000000000/*********************************************************************************************************************************** Block Cipher ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include "common/crypto/cipherBlock.h" #include "common/crypto/common.h" #include "common/debug.h" #include "common/io/filter/filter.intern.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" /*********************************************************************************************************************************** Filter type constant ***********************************************************************************************************************************/ STRING_EXTERN(CIPHER_BLOCK_FILTER_TYPE_STR, CIPHER_BLOCK_FILTER_TYPE); /*********************************************************************************************************************************** Header constants and sizes ***********************************************************************************************************************************/ // Magic constant for salted encrypt. Only salted encrypt is done here, but this constant is required for compatibility with the // openssl command-line tool. #define CIPHER_BLOCK_MAGIC "Salted__" #define CIPHER_BLOCK_MAGIC_SIZE (sizeof(CIPHER_BLOCK_MAGIC) - 1) // Total length of cipher header #define CIPHER_BLOCK_HEADER_SIZE (CIPHER_BLOCK_MAGIC_SIZE + PKCS5_SALT_LEN) /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define CIPHER_BLOCK_TYPE CipherBlock #define CIPHER_BLOCK_PREFIX cipherBlock typedef struct CipherBlock { MemContext *memContext; // Context to store data CipherMode mode; // Mode encrypt/decrypt bool saltDone; // Has the salt been read/generated? bool processDone; // Has any data been processed? size_t passSize; // Size of passphrase in bytes unsigned char *pass; // Passphrase used to generate encryption key size_t headerSize; // Size of header read during decrypt unsigned char header[CIPHER_BLOCK_HEADER_SIZE]; // Buffer to hold partial header during decrypt const EVP_CIPHER *cipher; // Cipher object const EVP_MD *digest; // Message digest object EVP_CIPHER_CTX *cipherContext; // Encrypt/decrypt context Buffer *buffer; // Internal buffer in case destination buffer isn't large enough bool inputSame; // Is the same input required on next process call? bool done; // Is processing done? } CipherBlock; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String * cipherBlockToLog(const CipherBlock *this) { return strNewFmt( "{inputSame: %s, done: %s}", cvtBoolToConstZ(this->inputSame), cvtBoolToConstZ(this->done)); } #define FUNCTION_LOG_CIPHER_BLOCK_TYPE \ CipherBlock * #define FUNCTION_LOG_CIPHER_BLOCK_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, cipherBlockToLog, buffer, bufferSize) /*********************************************************************************************************************************** Free cipher context ***********************************************************************************************************************************/ OBJECT_DEFINE_FREE_RESOURCE_BEGIN(CIPHER_BLOCK, LOG, logLevelTrace) { EVP_CIPHER_CTX_cleanup(this->cipherContext); } OBJECT_DEFINE_FREE_RESOURCE_END(LOG); /*********************************************************************************************************************************** Determine how large the destination buffer should be ***********************************************************************************************************************************/ static size_t cipherBlockProcessSize(CipherBlock *this, size_t sourceSize) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(CIPHER_BLOCK, this); FUNCTION_LOG_PARAM(SIZE, sourceSize); FUNCTION_LOG_END(); ASSERT(this != NULL); // Destination size is source size plus one extra block size_t destinationSize = sourceSize + EVP_MAX_BLOCK_LENGTH; // On encrypt the header size must be included before the first block if (this->mode == cipherModeEncrypt && !this->saltDone) destinationSize += CIPHER_BLOCK_MAGIC_SIZE + PKCS5_SALT_LEN; FUNCTION_LOG_RETURN(SIZE, destinationSize); } /*********************************************************************************************************************************** Encrypt/decrypt data ***********************************************************************************************************************************/ static size_t cipherBlockProcessBlock(CipherBlock *this, const unsigned char *source, size_t sourceSize, unsigned char *destination) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(CIPHER_BLOCK, this); FUNCTION_LOG_PARAM_P(UCHARDATA, source); FUNCTION_LOG_PARAM(SIZE, sourceSize); FUNCTION_LOG_PARAM_P(UCHARDATA, destination); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(source != NULL || sourceSize == 0); ASSERT(destination != NULL); // Actual destination size size_t destinationSize = 0; // If the salt has not been generated/read yet if (!this->saltDone) { const unsigned char *salt = NULL; // On encrypt the salt is generated if (this->mode == cipherModeEncrypt) { // Add magic to the destination buffer so openssl knows the file is salted memcpy(destination, CIPHER_BLOCK_MAGIC, CIPHER_BLOCK_MAGIC_SIZE); destination += CIPHER_BLOCK_MAGIC_SIZE; destinationSize += CIPHER_BLOCK_MAGIC_SIZE; // Add salt to the destination buffer cryptoRandomBytes(destination, PKCS5_SALT_LEN); salt = destination; destination += PKCS5_SALT_LEN; destinationSize += PKCS5_SALT_LEN; } // On decrypt the salt is read from the header else if (sourceSize > 0) { // Check if the entire header has been read if (this->headerSize + sourceSize >= CIPHER_BLOCK_HEADER_SIZE) { // Copy header (or remains of header) from source into the header buffer memcpy(this->header + this->headerSize, source, CIPHER_BLOCK_HEADER_SIZE - this->headerSize); salt = this->header + CIPHER_BLOCK_MAGIC_SIZE; // Advance source and source size by the number of bytes read source += CIPHER_BLOCK_HEADER_SIZE - this->headerSize; sourceSize -= CIPHER_BLOCK_HEADER_SIZE - this->headerSize; // The first bytes of the file to decrypt should be equal to the magic. If not then this is not an // encrypted file, or at least not in a format we recognize. if (memcmp(this->header, CIPHER_BLOCK_MAGIC, CIPHER_BLOCK_MAGIC_SIZE) != 0) THROW(CryptoError, "cipher header invalid"); } // Else copy what was provided into the header buffer and return 0 else { memcpy(this->header + this->headerSize, source, sourceSize); this->headerSize += sourceSize; // Indicate that there is nothing left to process sourceSize = 0; } } // If salt generation/read is done if (salt) { // Generate key and initialization vector unsigned char key[EVP_MAX_KEY_LENGTH]; unsigned char initVector[EVP_MAX_IV_LENGTH]; EVP_BytesToKey( this->cipher, this->digest, salt, (unsigned char *)this->pass, (int)this->passSize, 1, key, initVector); // Create context to track cipher cryptoError(!(this->cipherContext = EVP_CIPHER_CTX_new()), "unable to create context"); // Set free callback to ensure cipher context is freed memContextCallbackSet(this->memContext, cipherBlockFreeResource, this); // Initialize cipher cryptoError( !EVP_CipherInit_ex( this->cipherContext, this->cipher, NULL, key, initVector, this->mode == cipherModeEncrypt), "unable to initialize cipher"); this->saltDone = true; } } // Recheck that source size > 0 as the bytes may have been consumed reading the header if (sourceSize > 0) { // Process the data size_t destinationUpdateSize = 0; cryptoError( !EVP_CipherUpdate(this->cipherContext, destination, (int *)&destinationUpdateSize, source, (int)sourceSize), "unable to process cipher"); destinationSize += destinationUpdateSize; // Note that data has been processed so flush is valid this->processDone = true; } // Return actual destination size FUNCTION_LOG_RETURN(SIZE, destinationSize); } /*********************************************************************************************************************************** Flush the remaining data ***********************************************************************************************************************************/ static size_t cipherBlockFlush(CipherBlock *this, Buffer *destination) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(CIPHER_BLOCK, this); FUNCTION_LOG_PARAM(BUFFER, destination); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(destination != NULL); // Actual destination size size_t destinationSize = 0; // If no header was processed then error if (!this->saltDone) THROW(CryptoError, "cipher header missing"); // Only flush remaining data if some data was processed if (!EVP_CipherFinal(this->cipherContext, bufRemainsPtr(destination), (int *)&destinationSize)) THROW(CryptoError, "unable to flush"); // Return actual destination size FUNCTION_LOG_RETURN(SIZE, destinationSize); } /*********************************************************************************************************************************** Process function used by C filter ***********************************************************************************************************************************/ static void cipherBlockProcess(THIS_VOID, const Buffer *source, Buffer *destination) { THIS(CipherBlock); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(CIPHER_BLOCK, this); FUNCTION_LOG_PARAM(BUFFER, source); FUNCTION_LOG_PARAM(BUFFER, destination); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(destination != NULL); ASSERT(bufRemains(destination) > 0); // Copy already buffered bytes if (this->buffer != NULL && bufUsed(this->buffer) > 0) { if (bufRemains(destination) >= bufUsed(this->buffer)) { bufCat(destination, this->buffer); bufUsedZero(this->buffer); this->inputSame = false; } else { size_t catSize = bufRemains(destination); bufCatSub(destination, this->buffer, 0, catSize); memmove(bufPtr(this->buffer), bufPtr(this->buffer) + catSize, bufUsed(this->buffer) - catSize); bufUsedSet(this->buffer, bufUsed(this->buffer) - catSize); this->inputSame = true; } } else { ASSERT(this->buffer == NULL || bufUsed(this->buffer) == 0); // Determine how much space is required in the output buffer Buffer *outputActual = destination; size_t destinationSize = cipherBlockProcessSize(this, source == NULL ? 0 : bufUsed(source)); if (destinationSize > bufRemains(destination)) { // Allocate the buffer if needed MEM_CONTEXT_BEGIN(this->memContext) { if (this->buffer == NULL) { this->buffer = bufNew(destinationSize); } // Resize buffer if needed else bufResize(this->buffer, destinationSize); } MEM_CONTEXT_END(); outputActual = this->buffer; } // Encrypt/decrypt bytes size_t destinationSizeActual; if (source == NULL) { // If salt was not generated it means that process() was never called with any data. It's OK to encrypt a zero byte // file but we need to call process to generate the header. if (!this->saltDone) { destinationSizeActual = cipherBlockProcessBlock(this, NULL, 0, bufRemainsPtr(outputActual)); bufUsedInc(outputActual, destinationSizeActual); } destinationSizeActual = cipherBlockFlush(this, outputActual); this->done = true; } else destinationSizeActual = cipherBlockProcessBlock(this, bufPtr(source), bufUsed(source), bufRemainsPtr(outputActual)); bufUsedInc(outputActual, destinationSizeActual); // Copy from buffer to destination if needed if (this->buffer != NULL && bufUsed(this->buffer) > 0) cipherBlockProcess(this, source, destination); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Is cipher done? ***********************************************************************************************************************************/ static bool cipherBlockDone(const THIS_VOID) { THIS(const CipherBlock); FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(CIPHER_BLOCK, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->done && !this->inputSame); } /*********************************************************************************************************************************** Should the same input be provided again? ***********************************************************************************************************************************/ static bool cipherBlockInputSame(const THIS_VOID) { THIS(const CipherBlock); FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(CIPHER_BLOCK, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->inputSame); } /*********************************************************************************************************************************** New block encrypt/decrypt object ***********************************************************************************************************************************/ IoFilter * cipherBlockNew(CipherMode mode, CipherType cipherType, const Buffer *pass, const String *digestName) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(ENUM, mode); FUNCTION_LOG_PARAM(ENUM, cipherType); FUNCTION_TEST_PARAM(BUFFER, pass); // Use FUNCTION_TEST so passphrase is not logged FUNCTION_LOG_PARAM(STRING, digestName); FUNCTION_LOG_END(); ASSERT(pass != NULL); ASSERT(bufSize(pass) > 0); // Init crypto subsystem cryptoInit(); // Lookup cipher by name. This means the ciphers passed in must exactly match a name expected by OpenSSL. This is a good // thing since the name required by the openssl command-line tool will match what is used by pgBackRest. const EVP_CIPHER *cipher = EVP_get_cipherbyname(strPtr(cipherTypeName(cipherType))); if (!cipher) THROW_FMT(AssertError, "unable to load cipher '%s'", strPtr(cipherTypeName(cipherType))); // Lookup digest. If not defined it will be set to sha1. const EVP_MD *digest = NULL; if (digestName) digest = EVP_get_digestbyname(strPtr(digestName)); else digest = EVP_sha1(); if (!digest) THROW_FMT(AssertError, "unable to load digest '%s'", strPtr(digestName)); // Allocate memory to hold process state IoFilter *this = NULL; MEM_CONTEXT_NEW_BEGIN("CipherBlock") { CipherBlock *driver = memNew(sizeof(CipherBlock)); *driver = (CipherBlock) { .memContext = MEM_CONTEXT_NEW(), .mode = mode, .cipher = cipher, .digest = digest, .passSize = bufUsed(pass), }; // Store the passphrase driver->pass = memNew(driver->passSize); memcpy(driver->pass, bufPtr(pass), driver->passSize); // Create param list VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewUInt(mode)); varLstAdd(paramList, varNewUInt(cipherType)); // ??? Using a string here is not correct since the passphrase is being passed as a buffer so may contain null characters. // However, since strings are used to hold the passphrase in the rest of the code this is currently valid. varLstAdd(paramList, varNewStr(strNewBuf(pass))); varLstAdd(paramList, digestName ? varNewStr(digestName) : NULL); // Create filter interface this = ioFilterNewP( CIPHER_BLOCK_FILTER_TYPE_STR, driver, paramList, .done = cipherBlockDone, .inOut = cipherBlockProcess, .inputSame = cipherBlockInputSame); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(IO_FILTER, this); } IoFilter * cipherBlockNewVar(const VariantList *paramList) { return cipherBlockNew( (CipherMode)varUIntForce(varLstGet(paramList, 0)), (CipherType)varUIntForce(varLstGet(paramList, 1)), BUFSTR(varStr(varLstGet(paramList, 2))), varLstGet(paramList, 3) == NULL ? NULL : varStr(varLstGet(paramList, 3))); } /*********************************************************************************************************************************** Helper function to add a block cipher to an io object ***********************************************************************************************************************************/ IoFilterGroup * cipherBlockFilterGroupAdd(IoFilterGroup *filterGroup, CipherType type, CipherMode mode, const String *pass) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_FILTER_GROUP, filterGroup); FUNCTION_LOG_PARAM(ENUM, type); FUNCTION_LOG_PARAM(ENUM, mode); FUNCTION_TEST_PARAM(STRING, pass); // Use FUNCTION_TEST so passphrase is not logged FUNCTION_LOG_END(); ASSERT(filterGroup != NULL); ASSERT((type == cipherTypeNone && pass == NULL) || (type != cipherTypeNone && pass != NULL)); if (type != cipherTypeNone) ioFilterGroupAdd(filterGroup, cipherBlockNew(mode, type, BUFSTR(pass), NULL)); FUNCTION_LOG_RETURN(IO_FILTER_GROUP, filterGroup); } pgbackrest-release-2.24/src/common/crypto/cipherBlock.h000066400000000000000000000032621362531507100232070ustar00rootroot00000000000000/*********************************************************************************************************************************** Block Cipher Header ***********************************************************************************************************************************/ #ifndef COMMON_CRYPTO_CIPHERBLOCK_H #define COMMON_CRYPTO_CIPHERBLOCK_H #include "common/io/filter/group.h" #include "common/crypto/common.h" /*********************************************************************************************************************************** Filter type constant ***********************************************************************************************************************************/ #define CIPHER_BLOCK_FILTER_TYPE "cipherBlock" STRING_DECLARE(CIPHER_BLOCK_FILTER_TYPE_STR); /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ IoFilter *cipherBlockNew(CipherMode mode, CipherType cipherType, const Buffer *pass, const String *digestName); IoFilter *cipherBlockNewVar(const VariantList *paramList); /*********************************************************************************************************************************** Helper functions ***********************************************************************************************************************************/ IoFilterGroup *cipherBlockFilterGroupAdd(IoFilterGroup *filterGroup, CipherType type, CipherMode mode, const String *pass); #endif pgbackrest-release-2.24/src/common/crypto/common.c000066400000000000000000000125161362531507100222470ustar00rootroot00000000000000/*********************************************************************************************************************************** Crypto Common ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include #include "common/debug.h" #include "common/error.h" #include "common/log.h" #include "common/crypto/common.h" /*********************************************************************************************************************************** Cipher types ***********************************************************************************************************************************/ STRING_EXTERN(CIPHER_TYPE_NONE_STR, CIPHER_TYPE_NONE); STRING_EXTERN(CIPHER_TYPE_AES_256_CBC_STR, CIPHER_TYPE_AES_256_CBC); /*********************************************************************************************************************************** Flag to indicate if OpenSSL has already been initialized ***********************************************************************************************************************************/ static bool cryptoInitDone = false; /*********************************************************************************************************************************** Throw crypto errors ***********************************************************************************************************************************/ void cryptoError(bool error, const char *description) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BOOL, error); FUNCTION_TEST_PARAM(STRINGZ, description); FUNCTION_TEST_END(); if (error) cryptoErrorCode(ERR_get_error(), description); FUNCTION_TEST_RETURN_VOID(); } void cryptoErrorCode(unsigned long code, const char *description) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT64, code); FUNCTION_TEST_PARAM(STRINGZ, description); FUNCTION_TEST_END(); const char *errorMessage = ERR_reason_error_string(code); THROW_FMT(CryptoError, "%s: [%lu] %s", description, code, errorMessage == NULL ? "no details available" : errorMessage); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Get cipher type or name ***********************************************************************************************************************************/ CipherType cipherType(const String *name) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_END(); ASSERT(name != NULL); CipherType result = cipherTypeNone; if (strEq(name, CIPHER_TYPE_AES_256_CBC_STR)) result = cipherTypeAes256Cbc; else if (!strEq(name, CIPHER_TYPE_NONE_STR)) THROW_FMT(AssertError, "invalid cipher name '%s'", strPtr(name)); FUNCTION_TEST_RETURN(result); } const String * cipherTypeName(CipherType type) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, type); FUNCTION_TEST_END(); const String *result = CIPHER_TYPE_NONE_STR; if (type == cipherTypeAes256Cbc) result = CIPHER_TYPE_AES_256_CBC_STR; else if (type != cipherTypeNone) THROW_FMT(AssertError, "invalid cipher type %u", type); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Initialize crypto ***********************************************************************************************************************************/ void cryptoInit(void) { FUNCTION_LOG_VOID(logLevelTrace); if (!cryptoInitDone) { // Load crypto strings and algorithms ERR_load_crypto_strings(); OpenSSL_add_all_algorithms(); // SSL initialization depends on the version of OpenSSL #if OPENSSL_VERSION_NUMBER < 0x10100000L OPENSSL_config(NULL); SSL_library_init(); SSL_load_error_strings(); #else OPENSSL_init_ssl(OPENSSL_INIT_LOAD_CONFIG, NULL); #endif // Mark crypto as initialized cryptoInitDone = true; } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Has crypto been initialized? ***********************************************************************************************************************************/ bool cryptoIsInit(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(cryptoInitDone); } /*********************************************************************************************************************************** Generate random bytes ***********************************************************************************************************************************/ void cryptoRandomBytes(unsigned char *buffer, size_t size) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM_P(UCHARDATA, buffer); FUNCTION_LOG_PARAM(SIZE, size); FUNCTION_LOG_END(); ASSERT(buffer != NULL); ASSERT(size > 0); RAND_bytes(buffer, (int)size); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/common/crypto/common.h000066400000000000000000000036631362531507100222570ustar00rootroot00000000000000/*********************************************************************************************************************************** Crypto Common ***********************************************************************************************************************************/ #ifndef COMMON_CRYPTO_COMMON_H #define COMMON_CRYPTO_COMMON_H /*********************************************************************************************************************************** Cipher modes ***********************************************************************************************************************************/ typedef enum { cipherModeEncrypt, cipherModeDecrypt, } CipherMode; /*********************************************************************************************************************************** Cipher types ***********************************************************************************************************************************/ typedef enum { cipherTypeNone, cipherTypeAes256Cbc, } CipherType; #include #define CIPHER_TYPE_NONE "none" STRING_DECLARE(CIPHER_TYPE_NONE_STR); #define CIPHER_TYPE_AES_256_CBC "aes-256-cbc" STRING_DECLARE(CIPHER_TYPE_AES_256_CBC_STR); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void cryptoInit(void); bool cryptoIsInit(void); void cryptoError(bool error, const char *description); void cryptoErrorCode(unsigned long code, const char *description) __attribute__((__noreturn__)); CipherType cipherType(const String *name); const String *cipherTypeName(CipherType type); void cryptoRandomBytes(unsigned char *buffer, size_t size); #endif pgbackrest-release-2.24/src/common/crypto/hash.c000066400000000000000000000241411362531507100216770ustar00rootroot00000000000000/*********************************************************************************************************************************** Cryptographic Hash ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include "common/crypto/hash.h" #include "common/debug.h" #include "common/io/filter/filter.intern.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "common/crypto/common.h" /*********************************************************************************************************************************** Filter type constant ***********************************************************************************************************************************/ STRING_EXTERN(CRYPTO_HASH_FILTER_TYPE_STR, CRYPTO_HASH_FILTER_TYPE); /*********************************************************************************************************************************** Hash types ***********************************************************************************************************************************/ STRING_EXTERN(HASH_TYPE_MD5_STR, HASH_TYPE_MD5); STRING_EXTERN(HASH_TYPE_SHA1_STR, HASH_TYPE_SHA1); STRING_EXTERN(HASH_TYPE_SHA256_STR, HASH_TYPE_SHA256); /*********************************************************************************************************************************** Hashes for zero-length files (i.e., seed value) ***********************************************************************************************************************************/ STRING_EXTERN(HASH_TYPE_SHA1_ZERO_STR, HASH_TYPE_SHA1_ZERO); STRING_EXTERN(HASH_TYPE_SHA256_ZERO_STR, HASH_TYPE_SHA256_ZERO); /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define CRYPTO_HASH_TYPE CryptoHash #define CRYPTO_HASH_PREFIX cryptoHash typedef struct CryptoHash { MemContext *memContext; // Context to store data const EVP_MD *hashType; // Hash type (sha1, md5, etc.) EVP_MD_CTX *hashContext; // Message hash context Buffer *hash; // Hash in binary form } CryptoHash; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_CRYPTO_HASH_TYPE \ CryptoHash * #define FUNCTION_LOG_CRYPTO_HASH_FORMAT(value, buffer, bufferSize) \ objToLog(value, "CryptoHash", buffer, bufferSize) /*********************************************************************************************************************************** Free hash context ***********************************************************************************************************************************/ OBJECT_DEFINE_FREE_RESOURCE_BEGIN(CRYPTO_HASH, LOG, logLevelTrace) { EVP_MD_CTX_destroy(this->hashContext); } OBJECT_DEFINE_FREE_RESOURCE_END(LOG); /*********************************************************************************************************************************** Add message data to the hash from a Buffer ***********************************************************************************************************************************/ static void cryptoHashProcess(THIS_VOID, const Buffer *message) { THIS(CryptoHash); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(CRYPTO_HASH, this); FUNCTION_LOG_PARAM(BUFFER, message); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->hashContext != NULL); ASSERT(this->hash == NULL); ASSERT(message != NULL); cryptoError(!EVP_DigestUpdate(this->hashContext, bufPtr(message), bufUsed(message)), "unable to process message hash"); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Get binary representation of the hash ***********************************************************************************************************************************/ static const Buffer * cryptoHash(CryptoHash *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(CRYPTO_HASH, this); FUNCTION_LOG_END(); ASSERT(this != NULL); if (this->hash == NULL) { MEM_CONTEXT_BEGIN(this->memContext) { this->hash = bufNew((size_t)EVP_MD_size(this->hashType)); bufUsedSet(this->hash, bufSize(this->hash)); cryptoError(!EVP_DigestFinal_ex(this->hashContext, bufPtr(this->hash), NULL), "unable to finalize message hash"); } MEM_CONTEXT_END(); } FUNCTION_LOG_RETURN(BUFFER, this->hash); } /*********************************************************************************************************************************** Get string representation of the hash as a filter result ***********************************************************************************************************************************/ static Variant * cryptoHashResult(THIS_VOID) { THIS(CryptoHash); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(CRYPTO_HASH, this); FUNCTION_LOG_END(); ASSERT(this != NULL); FUNCTION_LOG_RETURN(VARIANT, varNewStr(bufHex(cryptoHash(this)))); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ IoFilter * cryptoHashNew(const String *type) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, type); FUNCTION_LOG_END(); ASSERT(type != NULL); // Init crypto subsystem cryptoInit(); // Allocate memory to hold process state IoFilter *this = NULL; MEM_CONTEXT_NEW_BEGIN("CryptoHash") { CryptoHash *driver = memNew(sizeof(CryptoHash)); *driver = (CryptoHash) { .memContext = MEM_CONTEXT_NEW(), }; // Lookup digest if ((driver->hashType = EVP_get_digestbyname(strPtr(type))) == NULL) THROW_FMT(AssertError, "unable to load hash '%s'", strPtr(type)); // Create context cryptoError((driver->hashContext = EVP_MD_CTX_create()) == NULL, "unable to create hash context"); // Set free callback to ensure hash context is freed memContextCallbackSet(driver->memContext, cryptoHashFreeResource, driver); // Initialize context cryptoError(!EVP_DigestInit_ex(driver->hashContext, driver->hashType, NULL), "unable to initialize hash context"); // Create param list VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewStr(type)); // Create filter interface this = ioFilterNewP(CRYPTO_HASH_FILTER_TYPE_STR, driver, paramList, .in = cryptoHashProcess, .result = cryptoHashResult); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(IO_FILTER, this); } IoFilter * cryptoHashNewVar(const VariantList *paramList) { return cryptoHashNew(varStr(varLstGet(paramList, 0))); } /*********************************************************************************************************************************** Get hash for one C buffer ***********************************************************************************************************************************/ Buffer * cryptoHashOne(const String *type, const Buffer *message) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, type); FUNCTION_LOG_PARAM(BUFFER, message); FUNCTION_LOG_END(); ASSERT(type != NULL); ASSERT(message != NULL); Buffer *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { IoFilter *hash = cryptoHashNew(type); if (bufUsed(message) > 0) ioFilterProcessIn(hash, message); const Buffer *buffer = cryptoHash((CryptoHash *)ioFilterDriver(hash)); MEM_CONTEXT_PRIOR_BEGIN() { result = bufDup(buffer); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BUFFER, result); } /*********************************************************************************************************************************** Get hmac for one message/key ***********************************************************************************************************************************/ Buffer * cryptoHmacOne(const String *type, const Buffer *key, const Buffer *message) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, type); FUNCTION_LOG_PARAM(BUFFER, key); FUNCTION_LOG_PARAM(BUFFER, message); FUNCTION_LOG_END(); ASSERT(type != NULL); ASSERT(key != NULL); ASSERT(message != NULL); const EVP_MD *hashType = EVP_get_digestbyname(strPtr(type)); ASSERT(hashType != NULL); // Allocate a buffer to hold the hmac Buffer *result = bufNew((size_t)EVP_MD_size(hashType)); bufUsedSet(result, bufSize(result)); // Calculate the HMAC HMAC(hashType, bufPtr(key), (int)bufUsed(key), bufPtr(message), bufUsed(message), bufPtr(result), NULL); FUNCTION_LOG_RETURN(BUFFER, result); } pgbackrest-release-2.24/src/common/crypto/hash.h000066400000000000000000000075731362531507100217160ustar00rootroot00000000000000/*********************************************************************************************************************************** Cryptographic Hash Generate a hash (sha1, md5, etc.) from a string, Buffer, or using an IoFilter. ***********************************************************************************************************************************/ #ifndef COMMON_CRYPTO_HASH_H #define COMMON_CRYPTO_HASH_H #include "common/io/filter/filter.h" #include "common/type/string.h" /*********************************************************************************************************************************** Filter type constant ***********************************************************************************************************************************/ #define CRYPTO_HASH_FILTER_TYPE "hash" STRING_DECLARE(CRYPTO_HASH_FILTER_TYPE_STR); /*********************************************************************************************************************************** Hash types ***********************************************************************************************************************************/ #define HASH_TYPE_MD5 "md5" STRING_DECLARE(HASH_TYPE_MD5_STR); #define HASH_TYPE_SHA1 "sha1" STRING_DECLARE(HASH_TYPE_SHA1_STR); #define HASH_TYPE_SHA256 "sha256" STRING_DECLARE(HASH_TYPE_SHA256_STR); /*********************************************************************************************************************************** Hashes for zero-length files (i.e., starting hash) ***********************************************************************************************************************************/ #define HASH_TYPE_MD5_ZERO "d41d8cd98f00b204e9800998ecf8427e" #define HASH_TYPE_SHA1_ZERO "da39a3ee5e6b4b0d3255bfef95601890afd80709" STRING_DECLARE(HASH_TYPE_SHA1_ZERO_STR); #define HASH_TYPE_SHA256_ZERO \ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" STRING_DECLARE(HASH_TYPE_SHA256_ZERO_STR); /*********************************************************************************************************************************** Hash type sizes ***********************************************************************************************************************************/ #define HASH_TYPE_M5_SIZE 16 #define HASH_TYPE_MD5_SIZE_HEX (HASH_TYPE_M5_SIZE * 2) #define HASH_TYPE_SHA1_SIZE 20 #define HASH_TYPE_SHA1_SIZE_HEX (HASH_TYPE_SHA1_SIZE * 2) #define HASH_TYPE_SHA256_SIZE 32 #define HASH_TYPE_SHA256_SIZE_HEX (HASH_TYPE_SHA256_SIZE * 2) /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ IoFilter *cryptoHashNew(const String *type); IoFilter *cryptoHashNewVar(const VariantList *paramList); /*********************************************************************************************************************************** Helper functions ***********************************************************************************************************************************/ Buffer *cryptoHashOne(const String *type, const Buffer *message); Buffer *cryptoHmacOne(const String *type, const Buffer *key, const Buffer *message); #endif pgbackrest-release-2.24/src/common/debug.c000066400000000000000000000050421362531507100205210ustar00rootroot00000000000000/*********************************************************************************************************************************** Debug Routines ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/debug.h" /*********************************************************************************************************************************** Convert object to a zero-terminated string for logging ***********************************************************************************************************************************/ size_t objToLog(const void *object, const char *objectName, char *buffer, size_t bufferSize) { size_t result = 0; if (object == NULL) result = (size_t)snprintf(buffer, bufferSize, NULL_Z); else result = (size_t)snprintf(buffer, bufferSize, "{%s}", objectName); return result; } /*********************************************************************************************************************************** Convert pointer to a zero-terminated string for logging ***********************************************************************************************************************************/ size_t ptrToLog(const void *pointer, const char *pointerName, char *buffer, size_t bufferSize) { size_t result = 0; if (pointer == NULL) result = (size_t)snprintf(buffer, bufferSize, NULL_Z); else result = (size_t)snprintf(buffer, bufferSize, "(%s)", pointerName); return result; } /*********************************************************************************************************************************** Convert zero-terminated string for logging ***********************************************************************************************************************************/ size_t strzToLog(const char *string, char *buffer, size_t bufferSize) { return (size_t)snprintf(buffer, bufferSize, string == NULL ? "%s" : "\"%s\"", string == NULL ? NULL_Z : string); } /*********************************************************************************************************************************** Convert a type name to a zero-terminated string for logging ***********************************************************************************************************************************/ size_t typeToLog(const char *typeName, char *buffer, size_t bufferSize) { return (size_t)snprintf(buffer, bufferSize, "%s", typeName); } pgbackrest-release-2.24/src/common/debug.h000066400000000000000000000611221362531507100205270ustar00rootroot00000000000000/*********************************************************************************************************************************** Debug Routines ***********************************************************************************************************************************/ #ifndef COMMON_DEBUG_H #define COMMON_DEBUG_H #include "common/assert.h" #include "common/stackTrace.h" #include "common/type/convert.h" #include "common/type/stringz.h" /*********************************************************************************************************************************** NDEBUG indicates to C library routines that debugging is off -- set a more readable flag to use when debugging is on ***********************************************************************************************************************************/ #ifndef NDEBUG #define DEBUG #endif /*********************************************************************************************************************************** Extern variables that are needed for unit testing ***********************************************************************************************************************************/ #ifdef DEBUG_UNIT #define DEBUG_UNIT_EXTERN #else #define DEBUG_UNIT_EXTERN \ static #endif /*********************************************************************************************************************************** Base function debugging macros In debug mode parameters will always be recorded in the stack trace while in production mode they will only be recorded when the log level is set to debug or trace. ***********************************************************************************************************************************/ #define FUNCTION_LOG_LEVEL() \ FUNCTION_LOG_logLevel #ifdef DEBUG_TEST_TRACE #define FUNCTION_LOG_BEGIN_BASE(logLevel) \ LogLevel FUNCTION_LOG_LEVEL() = STACK_TRACE_PUSH(logLevel); \ \ { \ stackTraceParamLog(); \ stackTraceTestStop(); #define FUNCTION_LOG_END_BASE() \ stackTraceTestStart(); \ LOG_FMT(FUNCTION_LOG_LEVEL(), 0, "(%s)", stackTraceParam()); \ } #else #define FUNCTION_LOG_BEGIN_BASE(logLevel) \ LogLevel FUNCTION_LOG_LEVEL() = STACK_TRACE_PUSH(logLevel); \ \ if (logAny(FUNCTION_LOG_LEVEL())) \ { \ stackTraceParamLog(); #define FUNCTION_LOG_END_BASE() \ LOG_FMT(FUNCTION_LOG_LEVEL(), 0, "(%s)", stackTraceParam()); \ } #endif /*********************************************************************************************************************************** General purpose function debugging macros FUNCTION_LOG_VOID() is provided as a shortcut for functions that have no parameters. ***********************************************************************************************************************************/ #define FUNCTION_LOG_BEGIN(logLevel) \ FUNCTION_LOG_BEGIN_BASE(logLevel) #define FUNCTION_LOG_END() \ FUNCTION_LOG_END_BASE() #define FUNCTION_LOG_VOID(logLevel) \ FUNCTION_LOG_BEGIN_BASE(logLevel); \ FUNCTION_LOG_END_BASE() #define FUNCTION_LOG_PARAM(typeMacroPrefix, param) \ stackTraceParamAdd(FUNCTION_LOG_##typeMacroPrefix##_FORMAT(param, stackTraceParamBuffer(#param), STACK_TRACE_PARAM_MAX)) #define FUNCTION_LOG_PARAM_P(typeMacroPrefix, param) \ do \ { \ char *buffer = stackTraceParamBuffer(#param); \ \ if (param == NULL) \ stackTraceParamAdd(typeToLog(NULL_Z, buffer, STACK_TRACE_PARAM_MAX)); \ else \ { \ buffer[0] = '*'; \ stackTraceParamAdd(FUNCTION_LOG_##typeMacroPrefix##_FORMAT(*param, buffer + 1, STACK_TRACE_PARAM_MAX - 1) + 1); \ } \ } \ while (0) #define FUNCTION_LOG_PARAM_PP(typeMacroPrefix, param) \ do \ { \ char *buffer = stackTraceParamBuffer(#param); \ \ if (param == NULL) \ stackTraceParamAdd(typeToLog(NULL_Z, buffer, STACK_TRACE_PARAM_MAX)); \ else if (*param == NULL) \ stackTraceParamAdd(typeToLog("*null", buffer, STACK_TRACE_PARAM_MAX)); \ else \ { \ buffer[0] = '*'; \ buffer[1] = '*'; \ stackTraceParamAdd(FUNCTION_LOG_##typeMacroPrefix##_FORMAT(**param, buffer + 2, STACK_TRACE_PARAM_MAX - 2) + 2); \ } \ } \ while (0) /*********************************************************************************************************************************** Functions and macros to render various data types ***********************************************************************************************************************************/ size_t objToLog(const void *object, const char *objectName, char *buffer, size_t bufferSize); size_t ptrToLog(const void *pointer, const char *pointerName, char *buffer, size_t bufferSize); size_t strzToLog(const char *string, char *buffer, size_t bufferSize); size_t typeToLog(const char *typeName, char *buffer, size_t bufferSize); #define FUNCTION_LOG_BOOL_TYPE \ bool #define FUNCTION_LOG_BOOL_FORMAT(value, buffer, bufferSize) \ cvtBoolToZ(value, buffer, bufferSize) #define FUNCTION_LOG_CHAR_TYPE \ char #define FUNCTION_LOG_CHAR_FORMAT(value, buffer, bufferSize) \ cvtCharToZ(value, buffer, bufferSize) #define FUNCTION_LOG_CHARDATA_TYPE \ char #define FUNCTION_LOG_CHARDATA_FORMAT(value, buffer, bufferSize) \ typeToLog("(char)", buffer, bufferSize) #define FUNCTION_LOG_CHARPY_TYPE \ char *[] #define FUNCTION_LOG_CHARPY_FORMAT(value, buffer, bufferSize) \ ptrToLog(value, "char *[]", buffer, bufferSize) #define FUNCTION_LOG_DOUBLE_TYPE \ double #define FUNCTION_LOG_DOUBLE_FORMAT(value, buffer, bufferSize) \ cvtDoubleToZ(value, buffer, bufferSize) #define FUNCTION_LOG_INT_TYPE \ int #define FUNCTION_LOG_INT_FORMAT(value, buffer, bufferSize) \ cvtIntToZ(value, buffer, bufferSize) #define FUNCTION_LOG_INT64_TYPE \ int64_t #define FUNCTION_LOG_INT64_FORMAT(value, buffer, bufferSize) \ cvtInt64ToZ(value, buffer, bufferSize) #define FUNCTION_LOG_ENUM_TYPE \ unsigned int #define FUNCTION_LOG_ENUM_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_UINT_FORMAT(value, buffer, bufferSize) #define FUNCTION_LOG_FUNCTIONP_FORMAT(value, buffer, bufferSize) \ ptrToLog(value == NULL ? NULL : (void *)1, "function *", buffer, bufferSize) #define FUNCTION_LOG_MODE_TYPE \ mode_t #define FUNCTION_LOG_MODE_FORMAT(value, buffer, bufferSize) \ cvtModeToZ(value, buffer, bufferSize) #define FUNCTION_LOG_TIMEMSEC_TYPE \ TimeMSec #define FUNCTION_LOG_TIMEMSEC_FORMAT(value, buffer, bufferSize) \ cvtUInt64ToZ(value, buffer, bufferSize) #define FUNCTION_LOG_UCHARDATA_TYPE \ unsigned char #define FUNCTION_LOG_UCHARDATA_FORMAT(value, buffer, bufferSize) \ typeToLog("(unsigned char)", buffer, bufferSize) #define FUNCTION_LOG_SIZE_TYPE \ size_t #define FUNCTION_LOG_SIZE_FORMAT(value, buffer, bufferSize) \ cvtSizeToZ(value, buffer, bufferSize) #define FUNCTION_LOG_SSIZE_TYPE \ ssize_t #define FUNCTION_LOG_SSIZE_FORMAT(value, buffer, bufferSize) \ cvtSSizeToZ(value, buffer, bufferSize) #define FUNCTION_LOG_TIME_TYPE \ time_t #define FUNCTION_LOG_TIME_FORMAT(value, buffer, bufferSize) \ cvtTimeToZ(value, buffer, bufferSize) #define FUNCTION_LOG_UINT_TYPE \ unsigned int #define FUNCTION_LOG_UINT_FORMAT(value, buffer, bufferSize) \ cvtUIntToZ(value, buffer, bufferSize) #define FUNCTION_LOG_UINT16_TYPE \ uint16_t #define FUNCTION_LOG_UINT16_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_UINT_FORMAT(value, buffer, bufferSize) #define FUNCTION_LOG_UINT32_TYPE \ uint32_t #define FUNCTION_LOG_UINT32_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_UINT_FORMAT(value, buffer, bufferSize) #define FUNCTION_LOG_UINT64_TYPE \ uint64_t #define FUNCTION_LOG_UINT64_FORMAT(value, buffer, bufferSize) \ cvtUInt64ToZ(value, buffer, bufferSize) #define FUNCTION_LOG_VOID_TYPE \ void #define FUNCTION_LOG_VOID_FORMAT(value, buffer, bufferSize) \ typeToLog("void", buffer, bufferSize) #define FUNCTION_LOG_STRINGZ_TYPE \ char * #define FUNCTION_LOG_STRINGZ_FORMAT(value, buffer, bufferSize) \ strzToLog(value, buffer, bufferSize) /*********************************************************************************************************************************** Macros to return function results (or void) ***********************************************************************************************************************************/ #define FUNCTION_LOG_RETURN_BASE(typePre, typeMacroPrefix, typePost, result) \ do \ { \ typePre FUNCTION_LOG_##typeMacroPrefix##_TYPE typePost FUNCTION_LOG_RETURN_result = result; \ \ STACK_TRACE_POP(false); \ \ IF_LOG_ANY(FUNCTION_LOG_LEVEL()) \ { \ char buffer[STACK_TRACE_PARAM_MAX]; \ \ FUNCTION_LOG_##typeMacroPrefix##_FORMAT(FUNCTION_LOG_RETURN_result, buffer, sizeof(buffer)); \ LOG_FMT(FUNCTION_LOG_LEVEL(), 0, "=> %s", buffer); \ } \ \ return FUNCTION_LOG_RETURN_result; \ } \ while (0) #define FUNCTION_LOG_RETURN(typeMacroPrefix, result) \ FUNCTION_LOG_RETURN_BASE(, typeMacroPrefix, , result) #define FUNCTION_LOG_RETURN_P(typeMacroPrefix, result) \ FUNCTION_LOG_RETURN_BASE(, typeMacroPrefix, *, result) #define FUNCTION_LOG_RETURN_PP(typeMacroPrefix, result) \ FUNCTION_LOG_RETURN_BASE(, typeMacroPrefix, **, result) #define FUNCTION_LOG_RETURN_CONST(typeMacroPrefix, result) \ FUNCTION_LOG_RETURN_BASE(const, typeMacroPrefix, , result) #define FUNCTION_LOG_RETURN_CONST_P(typeMacroPrefix, result) \ FUNCTION_LOG_RETURN_BASE(const, typeMacroPrefix, *, result) #define FUNCTION_LOG_RETURN_CONST_PP(typeMacroPrefix, result) \ FUNCTION_LOG_RETURN_BASE(const, typeMacroPrefix, **, result) #define FUNCTION_LOG_RETURN_VOID() \ do \ { \ STACK_TRACE_POP(false); \ \ LOG(FUNCTION_LOG_LEVEL(), 0, "=> void"); \ } \ while (0) /*********************************************************************************************************************************** Function Test Macros In debug builds these macros will update the stack trace with function names and parameters but not log. In production builds all test macros are compiled out (except for return statements). ***********************************************************************************************************************************/ #ifdef DEBUG_TEST_TRACE #define FUNCTION_TEST_BEGIN() \ if (stackTraceTest()) \ { \ STACK_TRACE_PUSH(logLevelDebug); \ stackTraceParamLog(); \ stackTraceTestStop() #define FUNCTION_TEST_PARAM(typeMacroPrefix, param) \ FUNCTION_LOG_PARAM(typeMacroPrefix, param) #define FUNCTION_TEST_PARAM_P(typeName, param) \ FUNCTION_LOG_PARAM_P(typeName, param) #define FUNCTION_TEST_PARAM_PP(typeName, param) \ FUNCTION_LOG_PARAM_PP(typeName, param) #define FUNCTION_TEST_END() \ stackTraceTestStart(); \ } #define FUNCTION_TEST_VOID() \ FUNCTION_TEST_BEGIN(); \ FUNCTION_TEST_END(); #define FUNCTION_TEST_RETURN(result) \ do \ { \ STACK_TRACE_POP(true); \ return result; \ } \ while (0) #define FUNCTION_TEST_RETURN_VOID() \ STACK_TRACE_POP(true) #else #define FUNCTION_TEST_BEGIN() #define FUNCTION_TEST_PARAM(typeMacroPrefix, param) #define FUNCTION_TEST_PARAM_P(typeMacroPrefix, param) #define FUNCTION_TEST_PARAM_PP(typeMacroPrefix, param) #define FUNCTION_TEST_END() #define FUNCTION_TEST_VOID() #define FUNCTION_TEST_RETURN(result) \ return result #define FUNCTION_TEST_RETURN_VOID() #endif #endif pgbackrest-release-2.24/src/common/encode.c000066400000000000000000000126371362531507100207000ustar00rootroot00000000000000/*********************************************************************************************************************************** Binary to String Encode/Decode ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include "common/encode.h" #include "common/encode/base64.h" #include "common/debug.h" #include "common/error.h" /*********************************************************************************************************************************** Macro to handle invalid encode type errors ***********************************************************************************************************************************/ #define ENCODE_TYPE_INVALID_ERROR(encodeType) \ THROW_FMT(AssertError, "invalid encode type %u", encodeType); /*********************************************************************************************************************************** Encode binary data to a printable string ***********************************************************************************************************************************/ void encodeToStr(EncodeType encodeType, const unsigned char *source, size_t sourceSize, char *destination) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, encodeType); FUNCTION_TEST_PARAM_P(UCHARDATA, source); FUNCTION_TEST_PARAM(SIZE, sourceSize); FUNCTION_TEST_PARAM_P(CHARDATA, destination); FUNCTION_TEST_END(); if (encodeType == encodeBase64) encodeToStrBase64(source, sourceSize, destination); else ENCODE_TYPE_INVALID_ERROR(encodeType); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Size of the string returned by encodeToStr() ***********************************************************************************************************************************/ size_t encodeToStrSize(EncodeType encodeType, size_t sourceSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, encodeType); FUNCTION_TEST_PARAM(SIZE, sourceSize); FUNCTION_TEST_END(); size_t destinationSize = 0; if (encodeType == encodeBase64) destinationSize = encodeToStrSizeBase64(sourceSize); else ENCODE_TYPE_INVALID_ERROR(encodeType); FUNCTION_TEST_RETURN(destinationSize); } /*********************************************************************************************************************************** Decode a string to binary data ***********************************************************************************************************************************/ void decodeToBin(EncodeType encodeType, const char *source, unsigned char *destination) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, encodeType); FUNCTION_TEST_PARAM(STRINGZ, source); FUNCTION_TEST_PARAM_P(UCHARDATA, destination); FUNCTION_TEST_END(); if (encodeType == encodeBase64) decodeToBinBase64(source, destination); else ENCODE_TYPE_INVALID_ERROR(encodeType); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Size of the binary data returned by decodeToBin() ***********************************************************************************************************************************/ size_t decodeToBinSize(EncodeType encodeType, const char *source) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, encodeType); FUNCTION_TEST_PARAM(STRINGZ, source); FUNCTION_TEST_END(); size_t destinationSize = 0; if (encodeType == encodeBase64) destinationSize = decodeToBinSizeBase64(source); else ENCODE_TYPE_INVALID_ERROR(encodeType); FUNCTION_TEST_RETURN(destinationSize); } /*********************************************************************************************************************************** Check that the encoded string is valid ***********************************************************************************************************************************/ bool decodeToBinValid(EncodeType encodeType, const char *source) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, encodeType); FUNCTION_TEST_PARAM(STRINGZ, source); FUNCTION_TEST_END(); bool valid = true; TRY_BEGIN() { decodeToBinValidate(encodeType, source); } CATCH(FormatError) { valid = false; } TRY_END(); FUNCTION_TEST_RETURN(valid); } /*********************************************************************************************************************************** Validate the encoded string ***********************************************************************************************************************************/ void decodeToBinValidate(EncodeType encodeType, const char *source) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, encodeType); FUNCTION_TEST_PARAM(STRINGZ, source); FUNCTION_TEST_END(); if (encodeType == encodeBase64) decodeToBinValidateBase64(source); else ENCODE_TYPE_INVALID_ERROR(encodeType); FUNCTION_TEST_RETURN_VOID(); } pgbackrest-release-2.24/src/common/encode.h000066400000000000000000000030011362531507100206660ustar00rootroot00000000000000/*********************************************************************************************************************************** Binary to String Encode/Decode These high-level functions are preferred to the low-level functions for each encoding type in the encode subdirectory. ***********************************************************************************************************************************/ #ifndef COMMON_ENCODE_H #define COMMON_ENCODE_H /*********************************************************************************************************************************** Encoding types ***********************************************************************************************************************************/ typedef enum {encodeBase64} EncodeType; /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void encodeToStr(EncodeType encodeType, const unsigned char *source, size_t sourceSize, char *destination); size_t encodeToStrSize(EncodeType encodeType, size_t sourceSize); void decodeToBin(EncodeType encodeType, const char *source, unsigned char *destination); size_t decodeToBinSize(EncodeType encodeType, const char *source); bool decodeToBinValid(EncodeType encodeType, const char *source); void decodeToBinValidate(EncodeType encodeType, const char *source); #endif pgbackrest-release-2.24/src/common/encode/000077500000000000000000000000001362531507100205235ustar00rootroot00000000000000pgbackrest-release-2.24/src/common/encode/base64.c000066400000000000000000000223001362531507100217500ustar00rootroot00000000000000/*********************************************************************************************************************************** Base64 Binary to String Encode/Decode ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/encode/base64.h" #include "common/debug.h" #include "common/error.h" /*********************************************************************************************************************************** Encode binary data to a printable string ***********************************************************************************************************************************/ static const char encodeBase64Lookup[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; void encodeToStrBase64(const unsigned char *source, size_t sourceSize, char *destination) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(UCHARDATA, source); FUNCTION_TEST_PARAM(SIZE, sourceSize); FUNCTION_TEST_PARAM_P(CHARDATA, destination); FUNCTION_TEST_END(); ASSERT(source != NULL); ASSERT(destination != NULL); unsigned int destinationIdx = 0; // Encode the string from three bytes to four characters for (unsigned int sourceIdx = 0; sourceIdx < sourceSize; sourceIdx += 3) { // First encoded character is always used completely destination[destinationIdx++] = encodeBase64Lookup[source[sourceIdx] >> 2]; // If there is only one byte to encode then the second encoded character is only partly used and the third and fourth // encoded characters are padded. if (sourceSize - sourceIdx == 1) { destination[destinationIdx++] = encodeBase64Lookup[(source[sourceIdx] & 0x03) << 4]; destination[destinationIdx++] = 0x3d; destination[destinationIdx++] = 0x3d; } // Else if more than one byte to encode else { // If there is more than one byte to encode then the second encoded character is used completely destination[destinationIdx++] = encodeBase64Lookup[((source[sourceIdx] & 0x03) << 4) | ((source[sourceIdx + 1] & 0xf0) >> 4)]; // If there are only two bytes to encode then the third encoded character is only partly used and the fourth encoded // character is padded. if (sourceSize - sourceIdx == 2) { destination[destinationIdx++] = encodeBase64Lookup[(source[sourceIdx + 1] & 0x0f) << 2]; destination[destinationIdx++] = 0x3d; } // Else the third and fourth encoded characters are used completely else { destination[destinationIdx++] = encodeBase64Lookup[((source[sourceIdx + 1] & 0x0f) << 2) | ((source[sourceIdx + 2] & 0xc0) >> 6)]; destination[destinationIdx++] = encodeBase64Lookup[source[sourceIdx + 2] & 0x3f]; } } } // Zero-terminate the string destination[destinationIdx] = 0; FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Size of the destination param required by encodeToStrBase64() minus space for the null terminator ***********************************************************************************************************************************/ size_t encodeToStrSizeBase64(size_t sourceSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(SIZE, sourceSize); FUNCTION_TEST_END(); // Calculate how many groups of three are in the source size_t encodeGroupTotal = sourceSize / 3; // Increase by one if there is a partial group if (sourceSize % 3 != 0) encodeGroupTotal++; // Four characters are needed to encode each group FUNCTION_TEST_RETURN(encodeGroupTotal * 4); } /*********************************************************************************************************************************** Decode a string to binary data ***********************************************************************************************************************************/ static const int decodeBase64Lookup[256] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, }; void decodeToBinBase64(const char *source, unsigned char *destination) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, source); FUNCTION_TEST_PARAM_P(UCHARDATA, destination); FUNCTION_TEST_END(); // Validate encoded string decodeToBinValidateBase64(source); int destinationIdx = 0; // Decode the binary data from four characters to three bytes for (unsigned int sourceIdx = 0; sourceIdx < strlen(source); sourceIdx += 4) { // Always decode the first character destination[destinationIdx++] = (unsigned char)(decodeBase64Lookup[(int)source[sourceIdx]] << 2 | decodeBase64Lookup[(int)source[sourceIdx + 1]] >> 4); // Second character is optional if (source[sourceIdx + 2] != 0x3d) { destination[destinationIdx++] = (unsigned char) (decodeBase64Lookup[(int)source[sourceIdx + 1]] << 4 | decodeBase64Lookup[(int)source[sourceIdx + 2]] >> 2); } // Third character is optional if (source[sourceIdx + 3] != 0x3d) { destination[destinationIdx++] = (unsigned char) (((decodeBase64Lookup[(int)source[sourceIdx + 2]] << 6) & 0xc0) | decodeBase64Lookup[(int)source[sourceIdx + 3]]); } } FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Size of the destination param required by decodeToBinBase64() ***********************************************************************************************************************************/ size_t decodeToBinSizeBase64(const char *source) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, source); FUNCTION_TEST_END(); // Validate encoded string decodeToBinValidateBase64(source); // Start with size calculated directly from source length size_t sourceSize = strlen(source); size_t destinationSize = sourceSize / 4 * 3; // Subtract last character if it is not present if (source[sourceSize - 1] == 0x3d) { destinationSize--; // Subtract second to last character if it is not present if (source[sourceSize - 2] == 0x3d) destinationSize--; } FUNCTION_TEST_RETURN(destinationSize); } /*********************************************************************************************************************************** Validate the encoded string ***********************************************************************************************************************************/ void decodeToBinValidateBase64(const char *source) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, source); FUNCTION_TEST_END(); // Check for the correct length size_t sourceSize = strlen(source); if (sourceSize % 4 != 0) THROW_FMT(FormatError, "base64 size %zu is not evenly divisible by 4", sourceSize); // Check all characters for (unsigned int sourceIdx = 0; sourceIdx < sourceSize; sourceIdx++) { // Check terminators if (source[sourceIdx] == 0x3d) { // Make sure they are only in the last two positions if (sourceIdx < sourceSize - 2) THROW(FormatError, "base64 '=' character may only appear in last two positions"); // If second to last char is = then last char must also be if (sourceIdx == sourceSize - 2 && source[sourceSize - 1] != 0x3d) THROW(FormatError, "base64 last character must be '=' if second to last is"); } else { // Error on any invalid characters if (decodeBase64Lookup[(int)source[sourceIdx]] == -1) THROW_FMT(FormatError, "base64 invalid character found at position %u", sourceIdx); } } FUNCTION_TEST_RETURN_VOID(); } pgbackrest-release-2.24/src/common/encode/base64.h000066400000000000000000000020461362531507100217620ustar00rootroot00000000000000/*********************************************************************************************************************************** Base64 Binary to String Encode/Decode The high-level functions in encode.c should be used in preference to these low-level functions. ***********************************************************************************************************************************/ #ifndef COMMON_ENCODE_BASE64_H #define COMMON_ENCODE_BASE64_H /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void encodeToStrBase64(const unsigned char *source, size_t sourceSize, char *destination); size_t encodeToStrSizeBase64(size_t sourceSize); void decodeToBinBase64(const char *source, unsigned char *destination); size_t decodeToBinSizeBase64(const char *source); void decodeToBinValidateBase64(const char *source); #endif pgbackrest-release-2.24/src/common/error.auto.c000066400000000000000000000153671362531507100215460ustar00rootroot00000000000000/*********************************************************************************************************************************** Error Type Definition Automatically generated by Build.pm -- do not modify directly. ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Error type definitions ***********************************************************************************************************************************/ ERROR_DEFINE( 25, AssertError, RuntimeError); ERROR_DEFINE( 26, ChecksumError, RuntimeError); ERROR_DEFINE( 27, ConfigError, RuntimeError); ERROR_DEFINE( 28, FileInvalidError, RuntimeError); ERROR_DEFINE( 29, FormatError, RuntimeError); ERROR_DEFINE( 30, CommandRequiredError, RuntimeError); ERROR_DEFINE( 31, OptionInvalidError, RuntimeError); ERROR_DEFINE( 32, OptionInvalidValueError, RuntimeError); ERROR_DEFINE( 33, OptionInvalidRangeError, RuntimeError); ERROR_DEFINE( 34, OptionInvalidPairError, RuntimeError); ERROR_DEFINE( 35, OptionDuplicateKeyError, RuntimeError); ERROR_DEFINE( 36, OptionNegateError, RuntimeError); ERROR_DEFINE( 37, OptionRequiredError, RuntimeError); ERROR_DEFINE( 38, PostmasterRunningError, RuntimeError); ERROR_DEFINE( 39, ProtocolError, RuntimeError); ERROR_DEFINE( 40, PathNotEmptyError, RuntimeError); ERROR_DEFINE( 41, FileOpenError, RuntimeError); ERROR_DEFINE( 42, FileReadError, RuntimeError); ERROR_DEFINE( 43, ParamRequiredError, RuntimeError); ERROR_DEFINE( 44, ArchiveMismatchError, RuntimeError); ERROR_DEFINE( 45, ArchiveDuplicateError, RuntimeError); ERROR_DEFINE( 46, VersionNotSupportedError, RuntimeError); ERROR_DEFINE( 47, PathCreateError, RuntimeError); ERROR_DEFINE( 48, CommandInvalidError, RuntimeError); ERROR_DEFINE( 49, HostConnectError, RuntimeError); ERROR_DEFINE( 50, LockAcquireError, RuntimeError); ERROR_DEFINE( 51, BackupMismatchError, RuntimeError); ERROR_DEFINE( 52, FileSyncError, RuntimeError); ERROR_DEFINE( 53, PathOpenError, RuntimeError); ERROR_DEFINE( 54, PathSyncError, RuntimeError); ERROR_DEFINE( 55, FileMissingError, RuntimeError); ERROR_DEFINE( 56, DbConnectError, RuntimeError); ERROR_DEFINE( 57, DbQueryError, RuntimeError); ERROR_DEFINE( 58, DbMismatchError, RuntimeError); ERROR_DEFINE( 59, DbTimeoutError, RuntimeError); ERROR_DEFINE( 60, FileRemoveError, RuntimeError); ERROR_DEFINE( 61, PathRemoveError, RuntimeError); ERROR_DEFINE( 62, StopError, RuntimeError); ERROR_DEFINE( 63, TermError, RuntimeError); ERROR_DEFINE( 64, FileWriteError, RuntimeError); ERROR_DEFINE( 66, ProtocolTimeoutError, RuntimeError); ERROR_DEFINE( 67, FeatureNotSupportedError, RuntimeError); ERROR_DEFINE( 68, ArchiveCommandInvalidError, RuntimeError); ERROR_DEFINE( 69, LinkExpectedError, RuntimeError); ERROR_DEFINE( 70, LinkDestinationError, RuntimeError); ERROR_DEFINE( 72, HostInvalidError, RuntimeError); ERROR_DEFINE( 73, PathMissingError, RuntimeError); ERROR_DEFINE( 74, FileMoveError, RuntimeError); ERROR_DEFINE( 75, BackupSetInvalidError, RuntimeError); ERROR_DEFINE( 76, TablespaceMapError, RuntimeError); ERROR_DEFINE( 77, PathTypeError, RuntimeError); ERROR_DEFINE( 78, LinkMapError, RuntimeError); ERROR_DEFINE( 79, FileCloseError, RuntimeError); ERROR_DEFINE( 80, DbMissingError, RuntimeError); ERROR_DEFINE( 81, DbInvalidError, RuntimeError); ERROR_DEFINE( 82, ArchiveTimeoutError, RuntimeError); ERROR_DEFINE( 83, FileModeError, RuntimeError); ERROR_DEFINE( 84, OptionMultipleValueError, RuntimeError); ERROR_DEFINE( 85, ProtocolOutputRequiredError, RuntimeError); ERROR_DEFINE( 86, LinkOpenError, RuntimeError); ERROR_DEFINE( 87, ArchiveDisabledError, RuntimeError); ERROR_DEFINE( 88, FileOwnerError, RuntimeError); ERROR_DEFINE( 89, UserMissingError, RuntimeError); ERROR_DEFINE( 90, OptionCommandError, RuntimeError); ERROR_DEFINE( 91, GroupMissingError, RuntimeError); ERROR_DEFINE( 92, PathExistsError, RuntimeError); ERROR_DEFINE( 93, FileExistsError, RuntimeError); ERROR_DEFINE( 94, MemoryError, RuntimeError); ERROR_DEFINE( 95, CryptoError, RuntimeError); ERROR_DEFINE( 96, ParamInvalidError, RuntimeError); ERROR_DEFINE( 97, PathCloseError, RuntimeError); ERROR_DEFINE( 98, FileInfoError, RuntimeError); ERROR_DEFINE( 99, JsonFormatError, RuntimeError); ERROR_DEFINE(100, KernelError, RuntimeError); ERROR_DEFINE(101, ServiceError, RuntimeError); ERROR_DEFINE(102, ExecuteError, RuntimeError); ERROR_DEFINE(122, RuntimeError, RuntimeError); ERROR_DEFINE(123, InvalidError, RuntimeError); ERROR_DEFINE(124, UnhandledError, RuntimeError); ERROR_DEFINE(125, UnknownError, RuntimeError); /*********************************************************************************************************************************** Error type array ***********************************************************************************************************************************/ static const ErrorType *errorTypeList[] = { &AssertError, &ChecksumError, &ConfigError, &FileInvalidError, &FormatError, &CommandRequiredError, &OptionInvalidError, &OptionInvalidValueError, &OptionInvalidRangeError, &OptionInvalidPairError, &OptionDuplicateKeyError, &OptionNegateError, &OptionRequiredError, &PostmasterRunningError, &ProtocolError, &PathNotEmptyError, &FileOpenError, &FileReadError, &ParamRequiredError, &ArchiveMismatchError, &ArchiveDuplicateError, &VersionNotSupportedError, &PathCreateError, &CommandInvalidError, &HostConnectError, &LockAcquireError, &BackupMismatchError, &FileSyncError, &PathOpenError, &PathSyncError, &FileMissingError, &DbConnectError, &DbQueryError, &DbMismatchError, &DbTimeoutError, &FileRemoveError, &PathRemoveError, &StopError, &TermError, &FileWriteError, &ProtocolTimeoutError, &FeatureNotSupportedError, &ArchiveCommandInvalidError, &LinkExpectedError, &LinkDestinationError, &HostInvalidError, &PathMissingError, &FileMoveError, &BackupSetInvalidError, &TablespaceMapError, &PathTypeError, &LinkMapError, &FileCloseError, &DbMissingError, &DbInvalidError, &ArchiveTimeoutError, &FileModeError, &OptionMultipleValueError, &ProtocolOutputRequiredError, &LinkOpenError, &ArchiveDisabledError, &FileOwnerError, &UserMissingError, &OptionCommandError, &GroupMissingError, &PathExistsError, &FileExistsError, &MemoryError, &CryptoError, &ParamInvalidError, &PathCloseError, &FileInfoError, &JsonFormatError, &KernelError, &ServiceError, &ExecuteError, &RuntimeError, &InvalidError, &UnhandledError, &UnknownError, NULL, }; pgbackrest-release-2.24/src/common/error.auto.h000066400000000000000000000064231362531507100215440ustar00rootroot00000000000000/*********************************************************************************************************************************** Error Type Definition Automatically generated by Build.pm -- do not modify directly. ***********************************************************************************************************************************/ #ifndef COMMON_ERROR_AUTO_H #define COMMON_ERROR_AUTO_H /*********************************************************************************************************************************** Error type declarations ***********************************************************************************************************************************/ ERROR_DECLARE(AssertError); ERROR_DECLARE(ChecksumError); ERROR_DECLARE(ConfigError); ERROR_DECLARE(FileInvalidError); ERROR_DECLARE(FormatError); ERROR_DECLARE(CommandRequiredError); ERROR_DECLARE(OptionInvalidError); ERROR_DECLARE(OptionInvalidValueError); ERROR_DECLARE(OptionInvalidRangeError); ERROR_DECLARE(OptionInvalidPairError); ERROR_DECLARE(OptionDuplicateKeyError); ERROR_DECLARE(OptionNegateError); ERROR_DECLARE(OptionRequiredError); ERROR_DECLARE(PostmasterRunningError); ERROR_DECLARE(ProtocolError); ERROR_DECLARE(PathNotEmptyError); ERROR_DECLARE(FileOpenError); ERROR_DECLARE(FileReadError); ERROR_DECLARE(ParamRequiredError); ERROR_DECLARE(ArchiveMismatchError); ERROR_DECLARE(ArchiveDuplicateError); ERROR_DECLARE(VersionNotSupportedError); ERROR_DECLARE(PathCreateError); ERROR_DECLARE(CommandInvalidError); ERROR_DECLARE(HostConnectError); ERROR_DECLARE(LockAcquireError); ERROR_DECLARE(BackupMismatchError); ERROR_DECLARE(FileSyncError); ERROR_DECLARE(PathOpenError); ERROR_DECLARE(PathSyncError); ERROR_DECLARE(FileMissingError); ERROR_DECLARE(DbConnectError); ERROR_DECLARE(DbQueryError); ERROR_DECLARE(DbMismatchError); ERROR_DECLARE(DbTimeoutError); ERROR_DECLARE(FileRemoveError); ERROR_DECLARE(PathRemoveError); ERROR_DECLARE(StopError); ERROR_DECLARE(TermError); ERROR_DECLARE(FileWriteError); ERROR_DECLARE(ProtocolTimeoutError); ERROR_DECLARE(FeatureNotSupportedError); ERROR_DECLARE(ArchiveCommandInvalidError); ERROR_DECLARE(LinkExpectedError); ERROR_DECLARE(LinkDestinationError); ERROR_DECLARE(HostInvalidError); ERROR_DECLARE(PathMissingError); ERROR_DECLARE(FileMoveError); ERROR_DECLARE(BackupSetInvalidError); ERROR_DECLARE(TablespaceMapError); ERROR_DECLARE(PathTypeError); ERROR_DECLARE(LinkMapError); ERROR_DECLARE(FileCloseError); ERROR_DECLARE(DbMissingError); ERROR_DECLARE(DbInvalidError); ERROR_DECLARE(ArchiveTimeoutError); ERROR_DECLARE(FileModeError); ERROR_DECLARE(OptionMultipleValueError); ERROR_DECLARE(ProtocolOutputRequiredError); ERROR_DECLARE(LinkOpenError); ERROR_DECLARE(ArchiveDisabledError); ERROR_DECLARE(FileOwnerError); ERROR_DECLARE(UserMissingError); ERROR_DECLARE(OptionCommandError); ERROR_DECLARE(GroupMissingError); ERROR_DECLARE(PathExistsError); ERROR_DECLARE(FileExistsError); ERROR_DECLARE(MemoryError); ERROR_DECLARE(CryptoError); ERROR_DECLARE(ParamInvalidError); ERROR_DECLARE(PathCloseError); ERROR_DECLARE(FileInfoError); ERROR_DECLARE(JsonFormatError); ERROR_DECLARE(KernelError); ERROR_DECLARE(ServiceError); ERROR_DECLARE(ExecuteError); ERROR_DECLARE(RuntimeError); ERROR_DECLARE(InvalidError); ERROR_DECLARE(UnhandledError); ERROR_DECLARE(UnknownError); #endif pgbackrest-release-2.24/src/common/error.c000066400000000000000000000452441362531507100205740ustar00rootroot00000000000000/*********************************************************************************************************************************** Error Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include "common/error.h" #include "common/stackTrace.h" /*********************************************************************************************************************************** Represents an error type ***********************************************************************************************************************************/ struct ErrorType { const int code; const char *name; const struct ErrorType *parentType; }; // Macro for defining new error types #define ERROR_DEFINE(code, name, parentType) \ const ErrorType name = {code, #name, &parentType} // Include error type definitions #include "common/error.auto.c" /*********************************************************************************************************************************** Maximum allowed number of nested try blocks ***********************************************************************************************************************************/ #define ERROR_TRY_MAX 64 /*********************************************************************************************************************************** States for each try ***********************************************************************************************************************************/ typedef enum {errorStateBegin, errorStateTry, errorStateCatch, errorStateFinal, errorStateEnd} ErrorState; /*********************************************************************************************************************************** Track error handling ***********************************************************************************************************************************/ static struct { // Array of jump buffers jmp_buf jumpList[ERROR_TRY_MAX]; // State of each try int tryTotal; struct { ErrorState state; bool uncaught; } tryList[ERROR_TRY_MAX + 1]; // Last error struct { const ErrorType *errorType; // Error type const char *fileName; // Source file where the error occurred const char *functionName; // Function where the error occurred int fileLine; // Source file line where the error occurred const char *message; // Description of the error const char *stackTrace; // Stack trace } error; } errorContext; /*********************************************************************************************************************************** Message buffer and buffer size The message buffer is statically allocated so there is some space to store error messages. Not being able to allocate such a small amount of memory seems pretty unlikely so just keep the code simple and let the loader deal with massively constrained memory situations. The temp buffer is required because the error message being passed might be the error already stored in the message buffer. ***********************************************************************************************************************************/ #define ERROR_MESSAGE_BUFFER_SIZE 8192 static char messageBuffer[ERROR_MESSAGE_BUFFER_SIZE]; static char messageBufferTemp[ERROR_MESSAGE_BUFFER_SIZE]; static char stackTraceBuffer[ERROR_MESSAGE_BUFFER_SIZE]; /*********************************************************************************************************************************** Error type code ***********************************************************************************************************************************/ int errorTypeCode(const ErrorType *errorType) { return errorType->code; } /*********************************************************************************************************************************** Get error type using a code ***********************************************************************************************************************************/ const ErrorType * errorTypeFromCode(int code) { // Search for error type by code int errorTypeIdx = 0; const ErrorType *result = errorTypeList[errorTypeIdx]; while (result != NULL) { if (result->code == code) break; result = errorTypeList[++errorTypeIdx]; } // Error if type was not found if (result == NULL) result = &UnknownError; return result; } /*********************************************************************************************************************************** Error type name ***********************************************************************************************************************************/ const char * errorTypeName(const ErrorType *errorType) { return errorType->name; } /*********************************************************************************************************************************** Error type parent ***********************************************************************************************************************************/ const ErrorType * errorTypeParent(const ErrorType *errorType) { return errorType->parentType; } /*********************************************************************************************************************************** Get the depth of the current try statement (0 if none) ***********************************************************************************************************************************/ unsigned int errorTryDepth(void) { return (unsigned int)errorContext.tryTotal; } /*********************************************************************************************************************************** Does the child error type extend the parent error type? ***********************************************************************************************************************************/ bool errorTypeExtends(const ErrorType *child, const ErrorType *parent) { const ErrorType *find = child; do { find = errorTypeParent(find); // Parent was found if (find == parent) return true; } while (find != errorTypeParent(find)); // Parent was not found return false; } /*********************************************************************************************************************************** Error type ***********************************************************************************************************************************/ const ErrorType * errorType(void) { return errorContext.error.errorType; } /*********************************************************************************************************************************** Error code (pulled from error type) ***********************************************************************************************************************************/ int errorCode(void) { return errorTypeCode(errorType()); } /*********************************************************************************************************************************** Error filename ***********************************************************************************************************************************/ const char * errorFileName(void) { return errorContext.error.fileName; } /*********************************************************************************************************************************** Error function name ***********************************************************************************************************************************/ const char * errorFunctionName(void) { return errorContext.error.functionName; } /*********************************************************************************************************************************** Error file line number ***********************************************************************************************************************************/ int errorFileLine(void) { return errorContext.error.fileLine; } /*********************************************************************************************************************************** Error message ***********************************************************************************************************************************/ const char * errorMessage(void) { return errorContext.error.message; } /*********************************************************************************************************************************** Error name (pulled from error type) ***********************************************************************************************************************************/ const char * errorName(void) { return errorTypeName(errorType()); } /*********************************************************************************************************************************** Error stack trace ***********************************************************************************************************************************/ const char * errorStackTrace(void) { return errorContext.error.stackTrace; } /*********************************************************************************************************************************** Is this error an instance of the error type? ***********************************************************************************************************************************/ bool errorInstanceOf(const ErrorType *errorTypeTest) { return errorType() == errorTypeTest || errorTypeExtends(errorType(), errorTypeTest); } /*********************************************************************************************************************************** Return current error context state ***********************************************************************************************************************************/ static ErrorState errorInternalState(void) { return errorContext.tryList[errorContext.tryTotal].state; } /*********************************************************************************************************************************** True when in try state ***********************************************************************************************************************************/ bool errorInternalStateTry(void) { return errorInternalState() == errorStateTry; } /*********************************************************************************************************************************** True when in catch state and the expected error matches ***********************************************************************************************************************************/ bool errorInternalStateCatch(const ErrorType *errorTypeCatch) { if (errorInternalState() == errorStateCatch && errorInstanceOf(errorTypeCatch)) return errorInternalProcess(true); return false; } /*********************************************************************************************************************************** True when in final state ***********************************************************************************************************************************/ bool errorInternalStateFinal(void) { return errorInternalState() == errorStateFinal; } /*********************************************************************************************************************************** Return jump buffer for current try ***********************************************************************************************************************************/ jmp_buf * errorInternalJump(void) { return &errorContext.jumpList[errorContext.tryTotal - 1]; } /*********************************************************************************************************************************** Begin the try block ***********************************************************************************************************************************/ bool errorInternalTry(const char *fileName, const char *functionName, int fileLine) { // If try total has been exceeded then throw an error if (errorContext.tryTotal >= ERROR_TRY_MAX) errorInternalThrowFmt(&AssertError, fileName, functionName, fileLine, "too many nested try blocks"); // Increment try total errorContext.tryTotal++; // Setup try errorContext.tryList[errorContext.tryTotal].state = errorStateBegin; errorContext.tryList[errorContext.tryTotal].uncaught = false; // Try setup was successful return true; } /*********************************************************************************************************************************** Propagate the error up so it can be caught ***********************************************************************************************************************************/ void errorInternalPropagate(void) { // Mark the error as uncaught errorContext.tryList[errorContext.tryTotal].uncaught = true; // If there is a parent try then jump to it if (errorContext.tryTotal > 0) longjmp(errorContext.jumpList[errorContext.tryTotal - 1], 1); // If there was no try to catch this error then output to stderr fprintf(stderr, "\nUncaught %s: %s\n thrown at %s:%d\n\n", errorName(), errorMessage(), errorFileName(), errorFileLine()); fflush(stderr); // Exit with failure exit(UnhandledError.code); } /*********************************************************************************************************************************** Process the error through each try and state ***********************************************************************************************************************************/ bool errorInternalProcess(bool catch) { // If a catch statement then return if (catch) { errorContext.tryList[errorContext.tryTotal].uncaught = false; return true; } // Else if just entering error state clean up the stack else if (errorContext.tryList[errorContext.tryTotal].state == errorStateTry) stackTraceClean(errorTryDepth()); // Increment the state errorContext.tryList[errorContext.tryTotal].state++; // If the error has been caught then increment the state if (errorContext.tryList[errorContext.tryTotal].state == errorStateCatch && !errorContext.tryList[errorContext.tryTotal].uncaught) { errorContext.tryList[errorContext.tryTotal].state++; } // Return if not done if (errorContext.tryList[errorContext.tryTotal].state < errorStateEnd) return true; // Remove the try errorContext.tryTotal--; // If not caught in the last try then propagate if (errorContext.tryList[errorContext.tryTotal + 1].uncaught) errorInternalPropagate(); // Nothing left to process return false; } /*********************************************************************************************************************************** Throw an error ***********************************************************************************************************************************/ void errorInternalThrow(const ErrorType *errorType, const char *fileName, const char *functionName, int fileLine, const char *message) { // Setup error data errorContext.error.errorType = errorType; errorContext.error.fileName = fileName; errorContext.error.functionName = functionName; errorContext.error.fileLine = fileLine; // Assign message to the error strncpy(messageBuffer, message, sizeof(messageBuffer)); messageBuffer[sizeof(messageBuffer) - 1] = 0; errorContext.error.message = (const char *)messageBuffer; // Generate the stack trace for the error if (stackTraceToZ( stackTraceBuffer, sizeof(stackTraceBuffer), fileName, functionName, (unsigned int)fileLine) >= sizeof(stackTraceBuffer)) { // Indicate that the stack trace was truncated } errorContext.error.stackTrace = (const char *)stackTraceBuffer; // Propagate the error errorInternalPropagate(); } void errorInternalThrowFmt( const ErrorType *errorType, const char *fileName, const char *functionName, int fileLine, const char *format, ...) { // Format message va_list argument; va_start(argument, format); vsnprintf(messageBufferTemp, ERROR_MESSAGE_BUFFER_SIZE - 1, format, argument); va_end(argument); errorInternalThrow(errorType, fileName, functionName, fileLine, messageBufferTemp); } /*********************************************************************************************************************************** Throw a system error ***********************************************************************************************************************************/ void errorInternalThrowSys( #ifdef DEBUG_COVERAGE bool error, #else int errNo, #endif const ErrorType *errorType, const char *fileName, const char *functionName, int fileLine, const char *message) { #ifdef DEBUG_COVERAGE if (error) { int errNo = errno; #endif // Format message with system message appended if (errNo == 0) { strncpy(messageBufferTemp, message, ERROR_MESSAGE_BUFFER_SIZE - 1); messageBufferTemp[sizeof(messageBuffer) - 1] = 0; } else snprintf(messageBufferTemp, ERROR_MESSAGE_BUFFER_SIZE - 1, "%s: [%d] %s", message, errNo, strerror(errNo)); errorInternalThrow(errorType, fileName, functionName, fileLine, messageBufferTemp); #ifdef DEBUG_COVERAGE } #endif } void errorInternalThrowSysFmt( #ifdef DEBUG_COVERAGE bool error, #else int errNo, #endif const ErrorType *errorType, const char *fileName, const char *functionName, int fileLine, const char *format, ...) { #ifdef DEBUG_COVERAGE if (error) { int errNo = errno; #endif // Format message va_list argument; va_start(argument, format); size_t messageSize = (size_t)vsnprintf(messageBufferTemp, ERROR_MESSAGE_BUFFER_SIZE - 1, format, argument); va_end(argument); // Append the system message if (errNo != 0) snprintf(messageBufferTemp + messageSize, ERROR_MESSAGE_BUFFER_SIZE - 1 - messageSize, ": [%d] %s", errNo, strerror(errNo)); errorInternalThrow(errorType, fileName, functionName, fileLine, messageBufferTemp); #ifdef DEBUG_COVERAGE } #endif } pgbackrest-release-2.24/src/common/error.h000066400000000000000000000445051362531507100206000ustar00rootroot00000000000000/*********************************************************************************************************************************** Error Handler Implement a try ... catch ... finally error handler. TRY_BEGIN() { } CATCH(Error1) { } CATCH(Error2) { } CATCH_ANY() { } FINALLY() { } TRY_END(); The CATCH() and FINALLY() blocks are optional but at least one must be specified. There is no need for a TRY block by itself because errors will automatically be propagated to the nearest try block in the call stack. IMPORTANT: If a local variable of the function containing a TRY block is modified in the TRY_BEGIN() block and used later in the function after an error is thrown, that variable must be declared "volatile" if the preserving the value is important. Beware that gcc's -Wclobbered warnings are almost entirely useless for catching such issues. IMPORTANT: Never call return from within any of the error-handling blocks. ***********************************************************************************************************************************/ #ifndef COMMON_ERROR_H #define COMMON_ERROR_H #include #include #include /*********************************************************************************************************************************** Error type object ***********************************************************************************************************************************/ typedef struct ErrorType ErrorType; // Macro for declaring new error types #define ERROR_DECLARE(name) \ extern const ErrorType name // Include error type declarations #include "common/error.auto.h" /*********************************************************************************************************************************** Functions to get information about a generic error type ***********************************************************************************************************************************/ int errorTypeCode(const ErrorType *errorType); const ErrorType *errorTypeFromCode(int code); const char *errorTypeName(const ErrorType *errorType); const ErrorType *errorTypeParent(const ErrorType *errorType); bool errorTypeExtends(const ErrorType *child, const ErrorType *parent); /*********************************************************************************************************************************** Functions to get information about the current error ***********************************************************************************************************************************/ const ErrorType *errorType(void); int errorCode(void); const char *errorFileName(void); const char *errorFunctionName(void); int errorFileLine(void); bool errorInstanceOf(const ErrorType *errorTypeTest); const char *errorMessage(void); const char *errorName(void); const char *errorStackTrace(void); /*********************************************************************************************************************************** Functions to get information about the try stack ***********************************************************************************************************************************/ unsigned int errorTryDepth(void); /*********************************************************************************************************************************** Begin a block where errors can be thrown ***********************************************************************************************************************************/ #define TRY_BEGIN() \ do \ { \ if (errorInternalTry(__FILE__, __func__, __LINE__) && setjmp(*errorInternalJump()) >= 0) \ { \ while (errorInternalProcess(false)) \ { \ if (errorInternalStateTry()) /*********************************************************************************************************************************** Catch a specific error thrown in the try block ***********************************************************************************************************************************/ #define CATCH(errorTypeCatch) \ else if (errorInternalStateCatch(&errorTypeCatch)) /*********************************************************************************************************************************** Catch any error thrown in the try block ***********************************************************************************************************************************/ #define CATCH_ANY() \ else if (errorInternalStateCatch(&RuntimeError)) /*********************************************************************************************************************************** Code to run whether the try block was successful or not ***********************************************************************************************************************************/ #define FINALLY() \ else if (errorInternalStateFinal()) /*********************************************************************************************************************************** End the try block ***********************************************************************************************************************************/ #define TRY_END() \ } \ } \ } while (0) /*********************************************************************************************************************************** Throw an error Errors can be thrown any time, but if there is no TRY block somewhere in the call stack then the program will exit and print the error information to stderr. The seldom used "THROWP" variants allow an error to be thrown with a pointer to the error type. ***********************************************************************************************************************************/ #define THROW(errorType, message) \ errorInternalThrow(&errorType, __FILE__, __func__, __LINE__, message) #define THROW_FMT(errorType, ...) \ errorInternalThrowFmt(&errorType, __FILE__, __func__, __LINE__, __VA_ARGS__) #define THROWP(errorType, message) \ errorInternalThrow(errorType, __FILE__, __func__, __LINE__, message) #define THROWP_FMT(errorType, ...) \ errorInternalThrowFmt(errorType, __FILE__, __func__, __LINE__, __VA_ARGS__) #define THROW_CODE(errorCode, message) \ errorInternalThrow(errorTypeFromCode(errorCode), __FILE__, __func__, __LINE__, message) #define THROW_CODE_FMT(errorCode, ...) \ errorInternalThrowFmt(errorTypeFromCode(errorCode), __FILE__, __func__, __LINE__, __VA_ARGS__) /*********************************************************************************************************************************** Throw an error when a system call fails ***********************************************************************************************************************************/ // When coverage testing define special versions of the macros that don't contain branches. These macros are less efficient because // they need to call errorInternalThrowSys*() before determining if there is an error or not, but they allow coverage testing for // THROW*_ON*() calls that contain conditionals. #ifdef DEBUG_COVERAGE #define THROW_SYS_ERROR(errorType, message) \ errorInternalThrowSys(true, &errorType, __FILE__, __func__, __LINE__, message) #define THROW_SYS_ERROR_FMT(errorType, ...) \ errorInternalThrowSysFmt(true, &errorType, __FILE__, __func__, __LINE__, __VA_ARGS__) #define THROWP_SYS_ERROR(errorType, message) \ errorInternalThrowSys(true, errorType, __FILE__, __func__, __LINE__, message) #define THROWP_SYS_ERROR_FMT(errorType, ...) \ errorInternalThrowSysFmt(true, errorType, __FILE__, __func__, __LINE__, __VA_ARGS__) #define THROW_ON_SYS_ERROR(error, errorType, message) \ errorInternalThrowSys(error, &errorType, __FILE__, __func__, __LINE__, message) #define THROW_ON_SYS_ERROR_FMT(error, errorType, ...) \ errorInternalThrowSysFmt(error, &errorType, __FILE__, __func__, __LINE__, __VA_ARGS__) #define THROWP_ON_SYS_ERROR(error, errorType, message) \ errorInternalThrowSys(error, errorType, __FILE__, __func__, __LINE__, message) #define THROWP_ON_SYS_ERROR_FMT(error, errorType, ...) \ errorInternalThrowSysFmt(error, errorType, __FILE__, __func__, __LINE__, __VA_ARGS__) // Else define the normal macros which check for an error first #else #define THROW_SYS_ERROR(errorType, message) \ errorInternalThrowSys(errno, &errorType, __FILE__, __func__, __LINE__, message) #define THROW_SYS_ERROR_FMT(errorType, ...) \ errorInternalThrowSysFmt(errno, &errorType, __FILE__, __func__, __LINE__, __VA_ARGS__) #define THROWP_SYS_ERROR(errorType, message) \ errorInternalThrowSys(errno, errorType, __FILE__, __func__, __LINE__, message) #define THROWP_SYS_ERROR_FMT(errorType, ...) \ errorInternalThrowSysFmt(errno, errorType, __FILE__, __func__, __LINE__, __VA_ARGS__) #define THROW_ON_SYS_ERROR(error, errorType, message) \ do \ { \ if (error) \ errorInternalThrowSys(errno, &errorType, __FILE__, __func__, __LINE__, message); \ } while(0) #define THROW_ON_SYS_ERROR_FMT(error, errorType, ...) \ do \ { \ if (error) \ errorInternalThrowSysFmt(errno, &errorType, __FILE__, __func__, __LINE__, __VA_ARGS__); \ } while(0) #define THROWP_ON_SYS_ERROR(error, errorType, message) \ do \ { \ if (error) \ errorInternalThrowSys(errno, errorType, __FILE__, __func__, __LINE__, message); \ } while(0) #define THROWP_ON_SYS_ERROR_FMT(error, errorType, ...) \ do \ { \ if (error) \ errorInternalThrowSysFmt(errno, errorType, __FILE__, __func__, __LINE__, __VA_ARGS__); \ } while(0) #endif #define THROW_SYS_ERROR_CODE(errNo, errorType, message) \ errorInternalThrowSys(errNo, &errorType, __FILE__, __func__, __LINE__, message) #define THROW_SYS_ERROR_CODE_FMT(errNo, errorType, ...) \ errorInternalThrowSysFmt(errNo, &errorType, __FILE__, __func__, __LINE__, __VA_ARGS__) #define THROWP_SYS_ERROR_CODE(errNo, errorType, message) \ errorInternalThrowSys(errNo, errorType, __FILE__, __func__, __LINE__, message) #define THROWP_SYS_ERROR_CODE_FMT(errNo, errorType, ...) \ errorInternalThrowSysFmt(errNo, errorType, __FILE__, __func__, __LINE__, __VA_ARGS__) /*********************************************************************************************************************************** Rethrow the current error ***********************************************************************************************************************************/ #define RETHROW() \ errorInternalPropagate() /*********************************************************************************************************************************** Internal functions These functions are used by the macros to implement the error handler and should never be called independently. ***********************************************************************************************************************************/ bool errorInternalTry(const char *fileName, const char *functionName, int fileLine); jmp_buf *errorInternalJump(void); bool errorInternalStateTry(void); bool errorInternalStateCatch(const ErrorType *errorTypeCatch); bool errorInternalStateFinal(void); bool errorInternalProcess(bool catch); void errorInternalPropagate(void) __attribute__((__noreturn__)); void errorInternalThrow( const ErrorType *errorType, const char *fileName, const char *functionName, int fileLine, const char *message) __attribute__((__noreturn__)); void errorInternalThrowFmt( const ErrorType *errorType, const char *fileName, const char *functionName, int fileLine, const char *format, ...) __attribute__((format(printf, 5, 6))) __attribute__((__noreturn__)); void errorInternalThrowSys( #ifdef DEBUG_COVERAGE bool error, #else int errNo, #endif const ErrorType *errorType, const char *fileName, const char *functionName, int fileLine, const char *message) #ifdef DEBUG_COVERAGE ; #else __attribute__((__noreturn__)); #endif void errorInternalThrowSysFmt( #ifdef DEBUG_COVERAGE bool error, #else int errNo, #endif const ErrorType *errorType, const char *fileName, const char *functionName, int fileLine, const char *format, ...) __attribute__((format(printf, 6, 7))) #ifdef DEBUG_COVERAGE ; #else __attribute__((__noreturn__)); #endif /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_ERROR_TYPE_TYPE \ ErrorType * #define FUNCTION_LOG_ERROR_TYPE_FORMAT(value, buffer, bufferSize) \ objToLog(value, "ErrorType", buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/exec.c000066400000000000000000000406501362531507100203630ustar00rootroot00000000000000/*********************************************************************************************************************************** Execute Process ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include #include #include "common/debug.h" #include "common/log.h" #include "common/exec.h" #include "common/io/handleRead.h" #include "common/io/handleWrite.h" #include "common/io/io.h" #include "common/io/read.intern.h" #include "common/io/write.intern.h" #include "common/object.h" #include "common/wait.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct Exec { MemContext *memContext; // Mem context String *command; // Command to execute StringList *param; // List of parameters to pass to command const String *name; // Name to display in log/error messages TimeMSec timeout; // Timeout for any i/o operation (read, write, etc.) pid_t processId; // Process id of the child process int handleRead; // Read handle int handleWrite; // Write handle int handleError; // Error handle IoRead *ioReadHandle; // Handle read interface IoWrite *ioWriteHandle; // Handle write interface IoRead *ioReadExec; // Wrapper for handle read interface IoWrite *ioWriteExec; // Wrapper for handle write interface }; OBJECT_DEFINE_FREE(EXEC); /*********************************************************************************************************************************** Macro to close file descriptors after dup2() in the child process If the parent process is daemomized and has closed stdout, stdin, and stderr or some combination of them, then the newly created descriptors might overlap stdout, stdin, or stderr. In that case we don't want to accidentally close the descriptor that we have just copied. Note that this is pretty specific to the way that file descriptors are handled in this module and may not be generally applicable in other code. ***********************************************************************************************************************************/ #define PIPE_DUP2(pipe, pipeIdx, fd) \ do \ { \ dup2(pipe[pipeIdx], fd); \ \ if (pipe[0] != fd) \ close(pipe[0]); \ \ if (pipe[1] != fd) \ close(pipe[1]); \ } \ while (0); /*********************************************************************************************************************************** Free exec handles and ensure process is shut down ***********************************************************************************************************************************/ OBJECT_DEFINE_FREE_RESOURCE_BEGIN(EXEC, LOG, logLevelTrace) { // Close the io handles close(this->handleRead); close(this->handleWrite); close(this->handleError); // Wait for the child to exit. We don't really care how it exits as long as it does. if (this->processId != 0) { MEM_CONTEXT_TEMP_BEGIN() { int processResult = 0; Wait *wait = waitNew(this->timeout); do { THROW_ON_SYS_ERROR( (processResult = waitpid(this->processId, NULL, WNOHANG)) == -1, ExecuteError, "unable to wait on child process"); } while (processResult == 0 && waitMore(wait)); // If the process did not exit then error -- else we may end up with a collection of zombie processes if (processResult == 0) THROW_FMT(ExecuteError, "%s did not exit when expected", strPtr(this->name)); } MEM_CONTEXT_TEMP_END(); } } OBJECT_DEFINE_FREE_RESOURCE_END(LOG); /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ Exec * execNew(const String *command, const StringList *param, const String *name, TimeMSec timeout) { FUNCTION_LOG_BEGIN(logLevelDebug) FUNCTION_LOG_PARAM(STRING, command); FUNCTION_LOG_PARAM(STRING_LIST, param); FUNCTION_LOG_PARAM(STRING, name); FUNCTION_LOG_PARAM(TIME_MSEC, timeout); FUNCTION_LOG_END(); ASSERT(command != NULL); ASSERT(name != NULL); ASSERT(timeout > 0); Exec *this = NULL; MEM_CONTEXT_NEW_BEGIN("Exec") { this = memNew(sizeof(Exec)); *this = (Exec) { .memContext = MEM_CONTEXT_NEW(), .command = strDup(command), .name = strDup(name), .timeout = timeout, // Parameter list is optional but if not specified we need to build one with the command .param = param == NULL ? strLstNew() : strLstDup(param), }; // The first parameter must be the command strLstInsert(this->param, 0, this->command); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(EXEC, this); } /*********************************************************************************************************************************** Check if the process is still running This should be called when anything unexpected happens while reading or writing, including errors and eof. If this function returns then the original error should be rethrown. ***********************************************************************************************************************************/ static void execCheck(Exec *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(EXEC, this); FUNCTION_LOG_END(); ASSERT(this != NULL); int processStatus; int processResult; THROW_ON_SYS_ERROR( (processResult = waitpid(this->processId, &processStatus, WNOHANG)) == -1, ExecuteError, "unable to wait on child process"); if (processResult != 0) { // Clear the process id so we don't try to wait for this process on free this->processId = 0; // If the process exited normally if (WIFEXITED(processStatus)) { // Get data from stderr to help diagnose the problem IoRead *ioReadError = ioHandleReadNew(strNewFmt("%s error", strPtr(this->name)), this->handleError, 0); ioReadOpen(ioReadError); String *errorStr = strTrim(strNewBuf(ioReadBuf(ioReadError))); // Throw the error with as much information as is available THROWP_FMT( errorTypeFromCode(WEXITSTATUS(processStatus)), "%s terminated unexpectedly [%d]%s%s", strPtr(this->name), WEXITSTATUS(processStatus), strSize(errorStr) > 0 ? ": " : "", strSize(errorStr) > 0 ? strPtr(errorStr) : ""); } // If the process did not exit normally then it must have been a signal THROW_FMT(ExecuteError, "%s terminated unexpectedly on signal %d", strPtr(this->name), WTERMSIG(processStatus)); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Read from the process ***********************************************************************************************************************************/ static size_t execRead(THIS_VOID, Buffer *buffer, bool block) { THIS(Exec); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(EXEC, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_PARAM(BOOL, block); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(buffer != NULL); size_t result = 0; TRY_BEGIN() { result = ioReadInterface(this->ioReadHandle)->read(ioReadDriver(this->ioReadHandle), buffer, block); } CATCH_ANY() { execCheck(this); RETHROW(); } TRY_END(); FUNCTION_LOG_RETURN(SIZE, result); } /*********************************************************************************************************************************** Write to the process ***********************************************************************************************************************************/ static void execWrite(THIS_VOID, const Buffer *buffer) { THIS(Exec); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(EXEC, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(buffer != NULL); TRY_BEGIN() { ioWrite(this->ioWriteHandle, buffer); ioWriteFlush(this->ioWriteHandle); } CATCH_ANY() { execCheck(this); RETHROW(); } TRY_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Is the process eof? ***********************************************************************************************************************************/ static bool execEof(THIS_VOID) { THIS(Exec); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(EXEC, this); FUNCTION_LOG_END(); ASSERT(this != NULL); // Check if the process is still running on eof if (ioReadInterface(this->ioReadHandle)->eof(ioReadDriver(this->ioReadHandle))) execCheck(this); FUNCTION_LOG_RETURN(BOOL, false); } /*********************************************************************************************************************************** Get the read handle ***********************************************************************************************************************************/ static int execHandleRead(const THIS_VOID) { THIS(const Exec); FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(EXEC, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->handleRead); } /*********************************************************************************************************************************** Execute command ***********************************************************************************************************************************/ void execOpen(Exec *this) { FUNCTION_LOG_BEGIN(logLevelDebug) FUNCTION_LOG_PARAM(EXEC, this); FUNCTION_LOG_END(); ASSERT(this != NULL); // Create pipes to communicate with the subprocess. The names of the pipes are from the perspective of the parent process since // the child process will use them only briefly before exec'ing. int pipeRead[2]; int pipeWrite[2]; int pipeError[2]; THROW_ON_SYS_ERROR(pipe(pipeRead) == -1, KernelError, "unable to create read pipe"); THROW_ON_SYS_ERROR(pipe(pipeWrite) == -1, KernelError, "unable to create write pipe"); THROW_ON_SYS_ERROR(pipe(pipeError) == -1, KernelError, "unable to create error pipe"); // Fork the subprocess this->processId = fork(); // Exec command in the child process if (this->processId == 0) { // Disable logging and close log file logClose(); // Assign stdout to the input side of the read pipe PIPE_DUP2(pipeRead, 1, STDOUT_FILENO); // Assign stdin to the output side of the write pipe PIPE_DUP2(pipeWrite, 0, STDIN_FILENO); // Assign stderr to the input side of the error pipe PIPE_DUP2(pipeError, 1, STDERR_FILENO); // Execute the binary. This statement will not return if it is successful execvp(strPtr(this->command), (char ** const)strLstPtr(this->param)); // If we got here then there was an error. We can't use a throw as we normally would because we have already shutdown // logging and we don't want to execute exit paths that might free parent resources which we still have references to. fprintf(stderr, "unable to execute '%s': [%d] %s\n", strPtr(this->command), errno, strerror(errno)); exit(errorTypeCode(&ExecuteError)); } // Close the unused handles close(pipeRead[1]); close(pipeWrite[0]); close(pipeError[1]); // Store the handles we'll use and need to close when the process terminates this->handleRead = pipeRead[0]; this->handleWrite = pipeWrite[1]; this->handleError = pipeError[0]; // Assign handles to io interfaces this->ioReadHandle = ioHandleReadNew(strNewFmt("%s read", strPtr(this->name)), this->handleRead, this->timeout); this->ioWriteHandle = ioHandleWriteNew(strNewFmt("%s write", strPtr(this->name)), this->handleWrite); ioWriteOpen(this->ioWriteHandle); // Create wrapper interfaces that check process state this->ioReadExec = ioReadNewP(this, .block = true, .read = execRead, .eof = execEof, .handle = execHandleRead); ioReadOpen(this->ioReadExec); this->ioWriteExec = ioWriteNewP(this, .write = execWrite); ioWriteOpen(this->ioWriteExec); // Set a callback so the handles will get freed memContextCallbackSet(this->memContext, execFreeResource, this); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Get read interface ***********************************************************************************************************************************/ IoRead * execIoRead(const Exec *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(EXEC, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->ioReadExec); } /*********************************************************************************************************************************** Get write interface ***********************************************************************************************************************************/ IoWrite * execIoWrite(const Exec *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(EXEC, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->ioWriteExec); } /*********************************************************************************************************************************** Get the object mem context ***********************************************************************************************************************************/ MemContext * execMemContext(const Exec *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(EXEC, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->memContext); } pgbackrest-release-2.24/src/common/exec.h000066400000000000000000000060561362531507100203720ustar00rootroot00000000000000/*********************************************************************************************************************************** Execute Process Executes a child process and allows the calling process to communicate with it using read/write io. This object is specially tailored to implement the protocol layer and may or may not be generally applicable to general purpose execution. ***********************************************************************************************************************************/ #ifndef COMMON_EXEC_H #define COMMON_EXEC_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define EXEC_TYPE Exec #define EXEC_PREFIX exec typedef struct Exec Exec; #include "common/io/read.h" #include "common/io/write.h" #include "common/time.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ Exec *execNew(const String *command, const StringList *param, const String *name, TimeMSec timeout); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void execOpen(Exec *this); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ IoRead *execIoRead(const Exec *this); IoWrite *execIoWrite(const Exec *this); MemContext *execMemContext(const Exec *this); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void execFree(Exec *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_EXEC_TYPE \ Exec * #define FUNCTION_LOG_EXEC_FORMAT(value, buffer, bufferSize) \ objToLog(value, "Exec", buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/exit.c000066400000000000000000000122551362531507100204100ustar00rootroot00000000000000/*********************************************************************************************************************************** Exit Routines ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include "command/command.h" #include "common/debug.h" #include "common/error.h" #include "common/exit.h" #include "common/lock.h" #include "common/log.h" #include "config/config.h" #include "protocol/helper.h" /*********************************************************************************************************************************** Return signal names ***********************************************************************************************************************************/ static const char * exitSignalName(int signalType) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT, signalType); FUNCTION_TEST_END(); const char *name = NULL; switch (signalType) { case signalTypeHup: { name = "HUP"; break; } case signalTypeInt: { name = "INT"; break; } case signalTypeTerm: { name = "TERM"; break; } case signalTypeNone: THROW(AssertError, "no name for signal none"); } FUNCTION_TEST_RETURN(name); } /*********************************************************************************************************************************** Catch signals ***********************************************************************************************************************************/ static void exitOnSignal(int signalType) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(INT, signalType); FUNCTION_LOG_END(); exit(exitSafe(errorTypeCode(&TermError), false, (SignalType)signalType)); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Setup signal handlers ***********************************************************************************************************************************/ void exitInit(void) { FUNCTION_LOG_VOID(logLevelTrace); signal(SIGHUP, exitOnSignal); signal(SIGINT, exitOnSignal); signal(SIGTERM, exitOnSignal); // Ignore SIGPIPE and check for EPIPE errors on write() instead signal(SIGPIPE, SIG_IGN); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Do cleanup and return result code ***********************************************************************************************************************************/ int exitSafe(int result, bool error, SignalType signalType) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INT, result); FUNCTION_LOG_PARAM(BOOL, error); FUNCTION_LOG_PARAM(ENUM, signalType); FUNCTION_LOG_END(); // Report error if one was thrown if (error) { LogLevel logLevel = errorCode() == errorTypeCode(&AssertError) ? logLevelAssert : logLevelError; // Assert errors always output a stack trace if (logLevel == logLevelAssert) LOG_FMT(logLevel, errorCode(), "%s\nSTACK TRACE:\n%s", errorMessage(), errorStackTrace()); else { // Log just the error to non-debug levels LOG_INTERNAL(logLevel, LOG_LEVEL_MIN, logLevelDetail, 0, errorCode(), errorMessage()); // Log the stack trace debug levels if (logAny(logLevelDebug)) { LOG_INTERNAL_FMT( logLevel, logLevelDebug, LOG_LEVEL_MAX, 0, errorCode(), "%s\nSTACK TRACE:\n%s", errorMessage(), errorStackTrace()); } } result = errorCode(); } // Free protocol objects but ignore errors TRY_BEGIN() { protocolFree(); } TRY_END(); // Log command end if a command is set if (cfgCommand() != cfgCmdNone) { String *errorMessage = NULL; // On error generate an error message if (result != 0) { // On process terminate if (result == errorTypeCode(&TermError)) { errorMessage = strNew("terminated on signal "); // Terminate from a child if (signalType == signalTypeNone) strCat(errorMessage, "from child process"); // Else terminated directly else strCatFmt(errorMessage, "[SIG%s]", exitSignalName(signalType)); } // Standard error exit message else if (error) errorMessage = strNewFmt("aborted with exception [%03d]", result); } cmdEnd(result, errorMessage); } // Release any locks but ignore errors TRY_BEGIN() { lockRelease(false); } TRY_END(); // Return result - caller should immediate pass this result to exit() FUNCTION_LOG_RETURN(INT, result); } pgbackrest-release-2.24/src/common/exit.h000066400000000000000000000021521362531507100204100ustar00rootroot00000000000000/*********************************************************************************************************************************** Exit Routines ***********************************************************************************************************************************/ #ifndef COMMON_EXIT_H #define COMMON_EXIT_H #include /*********************************************************************************************************************************** Signal type ***********************************************************************************************************************************/ typedef enum { signalTypeNone = 0, signalTypeHup = SIGHUP, signalTypeInt = SIGINT, signalTypeTerm = SIGTERM, } SignalType; /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void exitInit(void); int exitSafe(int result, bool error, SignalType signalType); #endif pgbackrest-release-2.24/src/common/fork.c000066400000000000000000000056161362531507100204030ustar00rootroot00000000000000/*********************************************************************************************************************************** Fork Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include "common/debug.h" #include "common/error.h" #include "common/log.h" /*********************************************************************************************************************************** Fork a new process and throw an error if it fails ***********************************************************************************************************************************/ int forkSafe(void) { FUNCTION_LOG_VOID(logLevelTrace); int result = fork(); THROW_ON_SYS_ERROR(result == -1, KernelError, "unable to fork"); FUNCTION_LOG_RETURN(INT, result); } /*********************************************************************************************************************************** Detach a forked process so it can continue running after the parent process has exited. This is not a typical daemon startup because the parent process may continue to run and perform work for some time. ***********************************************************************************************************************************/ void forkDetach(void) { FUNCTION_LOG_VOID(logLevelTrace); // Make this process a group leader so the parent process won't block waiting for it to finish THROW_ON_SYS_ERROR(setsid() == -1, KernelError, "unable to create new session group"); // The process should never receive a SIGHUP but ignore it just in case signal(SIGHUP, SIG_IGN); // There should be no way the child process can exit first (after the next fork) but just in case ignore SIGCHLD. This means // that the child process will automatically be reaped by the kernel should it finish first rather than becoming defunct. signal(SIGCHLD, SIG_IGN); // Fork again and let the parent process terminate to ensure that we get rid of the session leading process. Only session // leaders may get a TTY again. if (forkSafe() != 0) exit(0); // Reset SIGCHLD to the default handler so waitpid() calls in the process will work as expected signal(SIGCHLD, SIG_DFL); // Change the working directory to / so there is no dependency on the original working directory THROW_ON_SYS_ERROR(chdir("/") == -1, PathMissingError, "unable to change directory to '/'"); // Close standard file handles THROW_ON_SYS_ERROR(close(STDIN_FILENO) == -1, FileCloseError, "unable to close stdin"); THROW_ON_SYS_ERROR(close(STDOUT_FILENO) == -1, FileCloseError, "unable to close stdout"); THROW_ON_SYS_ERROR(close(STDERR_FILENO) == -1, FileCloseError, "unable to close stderr"); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/common/fork.h000066400000000000000000000012131362531507100203750ustar00rootroot00000000000000/*********************************************************************************************************************************** Fork Handler ***********************************************************************************************************************************/ #ifndef COMMON_FORK_H #define COMMON_FORK_H /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ int forkSafe(void); void forkDetach(void); #endif pgbackrest-release-2.24/src/common/ini.c000066400000000000000000000363561362531507100202260ustar00rootroot00000000000000/*********************************************************************************************************************************** Ini Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include "common/debug.h" #include "common/memContext.h" #include "common/log.h" #include "common/ini.h" #include "common/type/keyValue.h" #include "common/object.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct Ini { MemContext *memContext; // Context that contains the ini KeyValue *store; // Key value store that contains the ini data }; OBJECT_DEFINE_MOVE(INI); OBJECT_DEFINE_FREE(INI); /*********************************************************************************************************************************** Create a new Ini object ***********************************************************************************************************************************/ Ini * iniNew(void) { FUNCTION_TEST_VOID(); Ini *this = NULL; MEM_CONTEXT_NEW_BEGIN("Ini") { this = memNew(sizeof(Ini)); *this = (Ini) { .memContext = MEM_CONTEXT_NEW(), .store = kvNew(), }; } MEM_CONTEXT_NEW_END(); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Internal function to get an ini value ***********************************************************************************************************************************/ static const Variant * iniGetInternal(const Ini *this, const String *section, const String *key, bool required) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INI, this); FUNCTION_TEST_PARAM(STRING, section); FUNCTION_TEST_PARAM(STRING, key); FUNCTION_TEST_PARAM(BOOL, required); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(section != NULL); ASSERT(key != NULL); const Variant *result = NULL; // Get the section KeyValue *sectionKv = varKv(kvGet(this->store, VARSTR(section))); // Section must exist to get the value if (sectionKv != NULL) result = kvGet(sectionKv, VARSTR(key)); // If value is null and required then error if (result == NULL && required) THROW_FMT(FormatError, "section '%s', key '%s' does not exist", strPtr(section), strPtr(key)); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Get an ini value -- error if it does not exist ***********************************************************************************************************************************/ const String * iniGet(const Ini *this, const String *section, const String *key) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INI, this); FUNCTION_TEST_PARAM(STRING, section); FUNCTION_TEST_PARAM(STRING, key); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(section != NULL); ASSERT(key != NULL); // Get the value const Variant *result = iniGetInternal(this, section, key, true); FUNCTION_TEST_RETURN(varStr(result)); } /*********************************************************************************************************************************** Get an ini value -- if it does not exist then return specified default ***********************************************************************************************************************************/ const String * iniGetDefault(const Ini *this, const String *section, const String *key, const String *defaultValue) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INI, this); FUNCTION_TEST_PARAM(STRING, section); FUNCTION_TEST_PARAM(STRING, key); FUNCTION_TEST_PARAM(STRING, defaultValue); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(section != NULL); ASSERT(key != NULL); // Get the value const Variant *result = iniGetInternal(this, section, key, false); FUNCTION_TEST_RETURN(result == NULL ? defaultValue : varStr(result)); } /*********************************************************************************************************************************** Internal function to get an ini value list ***********************************************************************************************************************************/ StringList * iniGetList(const Ini *this, const String *section, const String *key) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INI, this); FUNCTION_TEST_PARAM(STRING, section); FUNCTION_TEST_PARAM(STRING, key); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(section != NULL); ASSERT(key != NULL); // Get the value const Variant *result = iniGetInternal(this, section, key, false); FUNCTION_TEST_RETURN(result == NULL ? NULL : strLstNewVarLst(varVarLst(result))); } /*********************************************************************************************************************************** Internal function to get an ini value list ***********************************************************************************************************************************/ bool iniSectionKeyIsList(const Ini *this, const String *section, const String *key) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INI, this); FUNCTION_TEST_PARAM(STRING, section); FUNCTION_TEST_PARAM(STRING, key); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(section != NULL); ASSERT(key != NULL); // Get the value const Variant *result = iniGetInternal(this, section, key, true); FUNCTION_TEST_RETURN(varType(result) == varTypeVariantList); } /*********************************************************************************************************************************** Get a list of keys for a section ***********************************************************************************************************************************/ StringList * iniSectionKeyList(const Ini *this, const String *section) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INI, this); FUNCTION_TEST_PARAM(STRING, section); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(section != NULL); StringList *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { // Get the section KeyValue *sectionKv = varKv(kvGet(this->store, VARSTR(section))); // Return key list if the section exists if (sectionKv != NULL) result = strLstNewVarLst(kvKeyList(sectionKv)); // Otherwise return an empty list else result = strLstNew(); strLstMove(result, memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Get a list of sections ***********************************************************************************************************************************/ StringList * iniSectionList(const Ini *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INI, this); FUNCTION_TEST_END(); ASSERT(this != NULL); StringList *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { // Get the sections from the keyList result = strLstNewVarLst(kvKeyList(this->store)); strLstMove(result, memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Parse ini from a string ***********************************************************************************************************************************/ void iniParse(Ini *this, const String *content) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INI, this); FUNCTION_TEST_PARAM(STRING, content); FUNCTION_TEST_END(); ASSERT(this != NULL); MEM_CONTEXT_BEGIN(this->memContext) { kvFree(this->store); this->store = kvNew(); if (content != NULL) { MEM_CONTEXT_TEMP_BEGIN() { // Track the current section String *section = NULL; // Split the content into lines and loop StringList *lines = strLstNewSplitZ(content, "\n"); for (unsigned int lineIdx = 0; lineIdx < strLstSize(lines); lineIdx++) { // Get next line const String *line = strTrim(strLstGet(lines, lineIdx)); const char *linePtr = strPtr(line); // Only interested in lines that are not blank or comments if (strSize(line) > 0 && linePtr[0] != '#') { // Looks like this line is a section if (linePtr[0] == '[') { // Make sure the section ends with ] if (linePtr[strSize(line) - 1] != ']') THROW_FMT(FormatError, "ini section should end with ] at line %u: %s", lineIdx + 1, linePtr); // Assign section section = strNewN(linePtr + 1, strSize(line) - 2); } // Else it should be a key/value else { if (section == NULL) THROW_FMT(FormatError, "key/value found outside of section at line %u: %s", lineIdx + 1, linePtr); // Find the = const char *lineEqual = strstr(linePtr, "="); if (lineEqual == NULL) THROW_FMT(FormatError, "missing '=' in key/value at line %u: %s", lineIdx + 1, linePtr); // Extract the key String *key = strTrim(strNewN(linePtr, (size_t)(lineEqual - linePtr))); if (strSize(key) == 0) THROW_FMT(FormatError, "key is zero-length at line %u: %s", lineIdx++, linePtr); // Store the section/key/value iniSet(this, section, key, strTrim(strNew(lineEqual + 1))); } } } } MEM_CONTEXT_TEMP_END(); } } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Set an ini value ***********************************************************************************************************************************/ void iniSet(Ini *this, const String *section, const String *key, const String *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INI, this); FUNCTION_TEST_PARAM(STRING, section); FUNCTION_TEST_PARAM(STRING, key); FUNCTION_TEST_PARAM(STRING, value); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(section != NULL); ASSERT(key != NULL); ASSERT(value != NULL); MEM_CONTEXT_TEMP_BEGIN() { const Variant *sectionKey = VARSTR(section); KeyValue *sectionKv = varKv(kvGet(this->store, sectionKey)); if (sectionKv == NULL) sectionKv = kvPutKv(this->store, sectionKey); kvAdd(sectionKv, VARSTR(key), VARSTR(value)); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Load an ini file and return data to a callback ***********************************************************************************************************************************/ void iniLoad( IoRead *read, void (*callbackFunction)(void *data, const String *section, const String *key, const String *value), void *callbackData) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(IO_READ, read); FUNCTION_LOG_PARAM(FUNCTIONP, callbackFunction); FUNCTION_LOG_PARAM_P(VOID, callbackData); FUNCTION_LOG_END(); ASSERT(read != NULL); MEM_CONTEXT_TEMP_BEGIN() { // Track the current section String *section = NULL; // Keep track of the line number for error reporting unsigned int lineIdx = 0; MEM_CONTEXT_TEMP_RESET_BEGIN() { ioReadOpen(read); do { const String *line = strTrim(ioReadLineParam(read, true)); const char *linePtr = strPtr(line); // Only interested in lines that are not blank or comments if (strSize(line) > 0 && linePtr[0] != '#') { // Looks like this line is a section if (linePtr[0] == '[') { // Make sure the section ends with ] if (linePtr[strSize(line) - 1] != ']') THROW_FMT(FormatError, "ini section should end with ] at line %u: %s", lineIdx + 1, linePtr); // Assign section MEM_CONTEXT_PRIOR_BEGIN() { section = strNewN(linePtr + 1, strSize(line) - 2); } MEM_CONTEXT_PRIOR_END(); } // Else it should be a key/value else { if (section == NULL) THROW_FMT(FormatError, "key/value found outside of section at line %u: %s", lineIdx + 1, linePtr); // Find the = const char *lineEqual = strstr(linePtr, "="); if (lineEqual == NULL) THROW_FMT(FormatError, "missing '=' in key/value at line %u: %s", lineIdx + 1, linePtr); // Extract the key String *key = strTrim(strNewN(linePtr, (size_t)(lineEqual - linePtr))); if (strSize(key) == 0) THROW_FMT(FormatError, "key is zero-length at line %u: %s", lineIdx++, linePtr); // Callback with the section/key/value callbackFunction(callbackData, section, key, strTrim(strNew(lineEqual + 1))); } } lineIdx++; MEM_CONTEXT_TEMP_RESET(1000); } while (!ioReadEof(read)); } MEM_CONTEXT_TEMP_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/common/ini.h000066400000000000000000000073531362531507100202260ustar00rootroot00000000000000/*********************************************************************************************************************************** Ini Handler ***********************************************************************************************************************************/ #ifndef COMMON_INI_H #define COMMON_INI_H /*********************************************************************************************************************************** Ini object ***********************************************************************************************************************************/ #define INI_TYPE Ini #define INI_PREFIX ini typedef struct Ini Ini; #include "common/io/read.h" #include "common/io/write.h" #include "common/type/variant.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ Ini *iniNew(void); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ Ini *iniMove(Ini *this, MemContext *parentNew); void iniParse(Ini *this, const String *content); void iniSet(Ini *this, const String *section, const String *key, const String *value); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ const String *iniGet(const Ini *this, const String *section, const String *key); const String *iniGetDefault(const Ini *this, const String *section, const String *key, const String *defaultValue); StringList *iniGetList(const Ini *this, const String *section, const String *key); bool iniSectionKeyIsList(const Ini *this, const String *section, const String *key); StringList *iniSectionKeyList(const Ini *this, const String *section); StringList *iniSectionList(const Ini *this); String *iniFileName(const Ini *this); bool iniFileExists(const Ini *this); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void iniFree(Ini *this); /*********************************************************************************************************************************** Helper Functions ***********************************************************************************************************************************/ void iniLoad( IoRead *read, void (*callbackFunction)(void *data, const String *section, const String *key, const String *value), void *callbackData); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_INI_TYPE \ Ini * #define FUNCTION_LOG_INI_FORMAT(value, buffer, bufferSize) \ objToLog(value, "Ini", buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/io/000077500000000000000000000000001362531507100176755ustar00rootroot00000000000000pgbackrest-release-2.24/src/common/io/bufferRead.c000066400000000000000000000106101362531507100221040ustar00rootroot00000000000000/*********************************************************************************************************************************** Buffer IO Read ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/io/bufferRead.h" #include "common/io/read.intern.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ typedef struct IoBufferRead { MemContext *memContext; // Object memory context const Buffer *read; // Buffer to read data from size_t readPos; // Current position in the read buffer bool eof; // Has the end of the buffer been reached? } IoBufferRead; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_IO_BUFFER_READ_TYPE \ IoBufferRead * #define FUNCTION_LOG_IO_BUFFER_READ_FORMAT(value, buffer, bufferSize) \ objToLog(value, "IoBufferRead", buffer, bufferSize) /*********************************************************************************************************************************** Read data from the buffer ***********************************************************************************************************************************/ static size_t ioBufferRead(THIS_VOID, Buffer *buffer, bool block) { THIS(IoBufferRead); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_BUFFER_READ, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_PARAM(BOOL, block); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(buffer != NULL); size_t actualBytes = 0; if (!this->eof) { // Determine how many bytes can actually be read from the buffer (if all bytes will be read then EOF) actualBytes = bufUsed(this->read) - this->readPos; if (actualBytes > bufRemains(buffer)) actualBytes = bufRemains(buffer); else this->eof = true; // Copy bytes to buffer bufCatSub(buffer, this->read, this->readPos, actualBytes); this->readPos += actualBytes; } FUNCTION_LOG_RETURN(SIZE, actualBytes); } /*********************************************************************************************************************************** Have all bytes been read from the buffer? ***********************************************************************************************************************************/ static bool ioBufferReadEof(THIS_VOID) { THIS(IoBufferRead); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_BUFFER_READ, this); FUNCTION_LOG_END(); ASSERT(this != NULL); FUNCTION_LOG_RETURN(BOOL, this->eof); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ IoRead * ioBufferReadNew(const Buffer *buffer) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_END(); ASSERT(buffer != NULL); IoRead *this = NULL; MEM_CONTEXT_NEW_BEGIN("IoBufferRead") { IoBufferRead *driver = memNew(sizeof(IoBufferRead)); *driver = (IoBufferRead) { .memContext = MEM_CONTEXT_NEW(), .read = buffer, }; this = ioReadNewP(driver, .eof = ioBufferReadEof, .read = ioBufferRead); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(IO_READ, this); } pgbackrest-release-2.24/src/common/io/bufferRead.h000066400000000000000000000013711362531507100221150ustar00rootroot00000000000000/*********************************************************************************************************************************** Buffer IO Read Read from a Buffer object using the IoRead interface. ***********************************************************************************************************************************/ #ifndef COMMON_IO_BUFFERREAD_H #define COMMON_IO_BUFFERREAD_H #include "common/io/read.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ IoRead *ioBufferReadNew(const Buffer *buffer); #endif pgbackrest-release-2.24/src/common/io/bufferWrite.c000066400000000000000000000061311362531507100223260ustar00rootroot00000000000000/*********************************************************************************************************************************** Buffer IO Write ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/io/bufferWrite.h" #include "common/io/write.intern.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ typedef struct IoBufferWrite { MemContext *memContext; // Object memory context Buffer *write; // Buffer to write into } IoBufferWrite; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_IO_BUFFER_WRITE_TYPE \ IoBufferWrite * #define FUNCTION_LOG_IO_BUFFER_WRITE_FORMAT(value, buffer, bufferSize) \ objToLog(value, "IoBufferWrite", buffer, bufferSize) /*********************************************************************************************************************************** Write to the buffer ***********************************************************************************************************************************/ static void ioBufferWrite(THIS_VOID, const Buffer *buffer) { THIS(IoBufferWrite); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_BUFFER_WRITE, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(buffer != NULL); bufCat(this->write, buffer); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ IoWrite * ioBufferWriteNew(Buffer *buffer) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_END(); ASSERT(buffer != NULL); IoWrite *this = NULL; MEM_CONTEXT_NEW_BEGIN("IoBufferWrite") { IoBufferWrite *driver = memNew(sizeof(IoBufferWrite)); *driver = (IoBufferWrite) { .memContext = memContextCurrent(), .write = buffer, }; this = ioWriteNewP(driver, .write = ioBufferWrite); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(IO_WRITE, this); } pgbackrest-release-2.24/src/common/io/bufferWrite.h000066400000000000000000000013711362531507100223340ustar00rootroot00000000000000/*********************************************************************************************************************************** Buffer IO Write Write to a Buffer object using the IoWrite interface. ***********************************************************************************************************************************/ #ifndef COMMON_IO_BUFFERWRITE_H #define COMMON_IO_BUFFERWRITE_H #include "common/io/write.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ IoWrite *ioBufferWriteNew(Buffer *buffer); #endif pgbackrest-release-2.24/src/common/io/filter/000077500000000000000000000000001362531507100211625ustar00rootroot00000000000000pgbackrest-release-2.24/src/common/io/filter/buffer.c000066400000000000000000000122551362531507100226040ustar00rootroot00000000000000/*********************************************************************************************************************************** IO Buffer Filter ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/debug.h" #include "common/io/filter/buffer.h" #include "common/io/filter/filter.intern.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" /*********************************************************************************************************************************** Filter type constant ***********************************************************************************************************************************/ #define BUFFER_FILTER_TYPE "buffer" STRING_STATIC(BUFFER_FILTER_TYPE_STR, BUFFER_FILTER_TYPE); /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ typedef struct IoBuffer { MemContext *memContext; // Mem context of filter size_t inputPos; // Position in input buffer bool inputSame; // Is the same input required again? } IoBuffer; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String * ioBufferToLog(const IoBuffer *this) { return strNewFmt("{inputSame: %s, inputPos: %zu}", cvtBoolToConstZ(this->inputSame), this->inputPos); } #define FUNCTION_LOG_IO_BUFFER_TYPE \ IoBuffer * #define FUNCTION_LOG_IO_BUFFER_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, ioBufferToLog, buffer, bufferSize) /*********************************************************************************************************************************** Move data from the input buffer to the output buffer ***********************************************************************************************************************************/ static void ioBufferProcess(THIS_VOID, const Buffer *input, Buffer *output) { THIS(IoBuffer); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_BUFFER, this); FUNCTION_LOG_PARAM(BUFFER, input); FUNCTION_LOG_PARAM(BUFFER, output); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(input != NULL); ASSERT(output != NULL); // Determine how much data needs to be copied and reduce if there is not enough space in the output size_t copySize = bufUsed(input) - this->inputPos; if (copySize > bufRemains(output)) copySize = bufRemains(output); // Copy data to the output buffer bufCatSub(output, input, this->inputPos, copySize); // If all data was copied then reset inputPos and allow new input if (this->inputPos + copySize == bufUsed(input)) { this->inputSame = false; this->inputPos = 0; } // Else update inputPos and indicate that the same input should be passed again else { this->inputSame = true; this->inputPos += copySize; } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Is the same input required again? If the remaining space in the output buffer is smaller than the used space in the input buffer then the same input must be provided again. ***********************************************************************************************************************************/ static bool ioBufferInputSame(const THIS_VOID) { THIS(const IoBuffer); FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_BUFFER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->inputSame); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ IoFilter * ioBufferNew(void) { FUNCTION_LOG_VOID(logLevelTrace); IoFilter *this = NULL; MEM_CONTEXT_NEW_BEGIN("IoBuffer") { IoBuffer *driver = memNew(sizeof(IoBuffer)); *driver = (IoBuffer) { .memContext = memContextCurrent(), }; this = ioFilterNewP(BUFFER_FILTER_TYPE_STR, driver, NULL, .inOut = ioBufferProcess, .inputSame = ioBufferInputSame); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(IO_FILTER, this); } pgbackrest-release-2.24/src/common/io/filter/buffer.h000066400000000000000000000017441362531507100226120ustar00rootroot00000000000000/*********************************************************************************************************************************** IO Buffer Filter Move data from the input buffer to the output buffer without overflowing the output buffer. Automatically used as the last filter in a FilterGroup if the last filter is not already an InOut filter, so there is no reason to add it manually to a FilterGroup. ***********************************************************************************************************************************/ #ifndef COMMON_IO_FILTER_BUFFER_H #define COMMON_IO_FILTER_BUFFER_H #include "common/io/filter/filter.h" #include "common/type/buffer.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ IoFilter *ioBufferNew(void); #endif pgbackrest-release-2.24/src/common/io/filter/filter.c000066400000000000000000000232421362531507100226160ustar00rootroot00000000000000/*********************************************************************************************************************************** IO Filter Interface ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/io/filter/filter.intern.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct IoFilter { MemContext *memContext; // Mem context of filter const String *type; // Filter type void *driver; // Filter driver const VariantList *paramList; // Filter parameters IoFilterInterface interface; // Filter interface bool flushing; // Has the filter started flushing? }; OBJECT_DEFINE_MOVE(IO_FILTER); OBJECT_DEFINE_FREE(IO_FILTER); /*********************************************************************************************************************************** New object Allocations will be in the memory context of the caller. ***********************************************************************************************************************************/ IoFilter * ioFilterNew(const String *type, void *driver, VariantList *paramList, IoFilterInterface interface) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, type); FUNCTION_LOG_PARAM_P(VOID, driver); FUNCTION_LOG_PARAM(VARIANT_LIST, paramList); FUNCTION_LOG_PARAM(IO_FILTER_INTERFACE, interface); FUNCTION_LOG_END(); ASSERT(type != NULL); ASSERT(driver != NULL); // One of processIn or processInOut must be set ASSERT(interface.in != NULL || interface.inOut != NULL); // But not both of them ASSERT(!(interface.in != NULL && interface.inOut != NULL)); // If the filter does not produce output then it should produce a result ASSERT(interface.in == NULL || (interface.result != NULL && interface.done == NULL && interface.inputSame == NULL)); IoFilter *this = memNew(sizeof(IoFilter)); *this = (IoFilter) { .memContext = memContextCurrent(), .type = type, .driver = driver, .paramList = paramList, .interface = interface, }; FUNCTION_LOG_RETURN(IO_FILTER, this); } /*********************************************************************************************************************************** Filter input only (a result is expected) ***********************************************************************************************************************************/ void ioFilterProcessIn(IoFilter *this, const Buffer *input) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_FILTER, this); FUNCTION_TEST_PARAM(BUFFER, input); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(this->interface.in != NULL); CHECK(input == NULL || bufUsed(input) > 0); CHECK(!this->flushing || input == NULL); if (input == NULL) this->flushing = true; else this->interface.in(this->driver, input); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Filter input and produce output ***********************************************************************************************************************************/ void ioFilterProcessInOut(IoFilter *this, const Buffer *input, Buffer *output) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_FILTER, this); FUNCTION_TEST_PARAM(BUFFER, input); FUNCTION_TEST_PARAM(BUFFER, output); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(output != NULL); ASSERT(this->interface.inOut != NULL); CHECK(input == NULL || bufUsed(input) > 0); CHECK(!this->flushing || input == NULL); if (input == NULL && !this->flushing) this->flushing = true; if (!ioFilterDone(this)) this->interface.inOut(this->driver, input, output); CHECK(!ioFilterInputSame(this) || bufUsed(output) > 0); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Is the filter done? If done is not defined by the filter then check inputSame. If inputSame is true then the filter is not done. Even if the filter is done the interface will not report done until the interface is flushing. ***********************************************************************************************************************************/ bool ioFilterDone(const IoFilter *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_FILTER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); bool result = false; if (this->flushing) result = this->interface.done != NULL ? this->interface.done(this->driver) : !ioFilterInputSame(this); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Driver for the filter ***********************************************************************************************************************************/ void * ioFilterDriver(IoFilter *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_FILTER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->driver); } /*********************************************************************************************************************************** Does the filter need the same input again? If the filter cannot get all its output into the output buffer then it may need access to the same input again. ***********************************************************************************************************************************/ bool ioFilterInputSame(const IoFilter *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_FILTER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->interface.inputSame != NULL ? this->interface.inputSame(this->driver) : false); } /*********************************************************************************************************************************** Interface for the filter ***********************************************************************************************************************************/ const IoFilterInterface * ioFilterInterface(const IoFilter *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_FILTER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(&this->interface); } /*********************************************************************************************************************************** Does filter produce output? All In filters produce output. ***********************************************************************************************************************************/ bool ioFilterOutput(const IoFilter *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_FILTER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->interface.inOut != NULL); } /*********************************************************************************************************************************** List of filter parameters ***********************************************************************************************************************************/ const VariantList * ioFilterParamList(const IoFilter *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_FILTER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->paramList); } /*********************************************************************************************************************************** Get filter result ***********************************************************************************************************************************/ Variant * ioFilterResult(const IoFilter *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_FILTER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->interface.result ? this->interface.result(this->driver) : NULL); } /*********************************************************************************************************************************** Get filter type This name identifies the filter and is used when pulling results from the filter group. ***********************************************************************************************************************************/ const String * ioFilterType(const IoFilter *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_FILTER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->type); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * ioFilterToLog(const IoFilter *this) { return strNewFmt("{type: %s}", strPtr(this->type)); } pgbackrest-release-2.24/src/common/io/filter/filter.h000066400000000000000000000052011362531507100226160ustar00rootroot00000000000000/*********************************************************************************************************************************** IO Filter Interface Filters can modify an i/o stream (e.g. GzipCompress, GzipDecompress), generate a result (e.g. IoSize, CryptoHash), or even do both. A filter is created using a constructor implemented by each filter (e.g. ioBufferNew). Filter processing is managed by IoFilterGroup so the only user facing functions are ioFilterResult() and ioFilterType(). Information on implementing a filter is in filter.internal.h. ***********************************************************************************************************************************/ #ifndef COMMON_IO_FILTER_FILTER_H #define COMMON_IO_FILTER_FILTER_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define IO_FILTER_TYPE IoFilter #define IO_FILTER_PREFIX ioFilter typedef struct IoFilter IoFilter; #include "common/type/string.h" #include "common/type/variant.h" /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ Variant *ioFilterResult(const IoFilter *this); const String *ioFilterType(const IoFilter *this); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void ioFilterFree(IoFilter *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *ioFilterToLog(const IoFilter *this); #define FUNCTION_LOG_IO_FILTER_TYPE \ IoFilter * #define FUNCTION_LOG_IO_FILTER_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, ioFilterToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/io/filter/filter.intern.h000066400000000000000000000123641362531507100241240ustar00rootroot00000000000000/*********************************************************************************************************************************** IO Filter Interface Internal Two types of filters are implemented using this interface: In and InOut. In filters accept input and produce a result, but do not modify the input. An example is the IoSize filter which counts all bytes that pass through it. InOut filters accept input and produce output (and perhaps a result). Because the input/output buffers may not be the same size the filter must be prepared to accept the same input again (by implementing IoFilterInputSame) if the output buffer is too small to accept all processed data. If the filter holds state even when inputSame is false then it may also implement IoFilterDone to indicate that the filter should be flushed (by passing NULL inputs) after all input has been processed. InOut filters should strive to fill the output buffer as much as possible, i.e., if the output buffer is not full after processing then inputSame should be false. An example is the IoBuffer filter which buffers data between unequally sized input/output buffers. Each filter has a type that allows it to be identified in the filter list. ***********************************************************************************************************************************/ #ifndef COMMON_IO_FILTER_FILTER_INTERN_H #define COMMON_IO_FILTER_FILTER_INTERN_H #include "common/io/filter/filter.h" #include "common/type/variantList.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ typedef struct IoFilterInterface { // Indicates that filter processing is done. This is used for filters that have additional data to be flushed even after all // input has been processed. Compression and encryption filters will usually need to implement done. If done is not // implemented then it will always return true if all input has been consumed, i.e. if inputSame returns false. bool (*done)(const void *driver); // Processing function for filters that do not produce output. Note that result must be implemented in this case (or else what // would be the point. void (*in)(void *driver, const Buffer *); // Processing function for filters that produce output. InOut filters will typically implement inputSame and may also implement // done. void (*inOut)(void *driver, const Buffer *, Buffer *); // InOut filters must be prepared for an output buffer that is too small to accept all the processed output. In this case the // filter must implement inputSame and set it to true when there is more output to be produced for a given input. On the next // call to inOut the same input will be passed along with a fresh output buffer with space for more processed output. bool (*inputSame)(const void *driver); // If the filter produces a result then this function must be implemented to return the result. A result can be anything that // is not processed output, e.g. a count of total bytes or a cryptographic hash. Variant *(*result)(void *driver); } IoFilterInterface; #define ioFilterNewP(type, driver, paramList, ...) \ ioFilterNew(type, driver, paramList, (IoFilterInterface){__VA_ARGS__}) IoFilter *ioFilterNew(const String *type, void *driver, VariantList *paramList, IoFilterInterface); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void ioFilterProcessIn(IoFilter *this, const Buffer *input); void ioFilterProcessInOut(IoFilter *this, const Buffer *input, Buffer *output); IoFilter *ioFilterMove(IoFilter *this, MemContext *parentNew); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ bool ioFilterDone(const IoFilter *this); void *ioFilterDriver(IoFilter *this); bool ioFilterInputSame(const IoFilter *this); const IoFilterInterface *ioFilterInterface(const IoFilter *this); bool ioFilterOutput(const IoFilter *this); const VariantList *ioFilterParamList(const IoFilter *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_IO_FILTER_INTERFACE_TYPE \ IoFilterInterface * #define FUNCTION_LOG_IO_FILTER_INTERFACE_FORMAT(value, buffer, bufferSize) \ objToLog(&value, "IoFilterInterface", buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/io/filter/group.c000066400000000000000000000526651362531507100225000ustar00rootroot00000000000000/*********************************************************************************************************************************** IO Filter Group ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/debug.h" #include "common/io/filter/buffer.h" #include "common/io/filter/filter.intern.h" #include "common/io/filter/group.h" #include "common/io/io.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "common/type/list.h" /*********************************************************************************************************************************** Filter and buffer structure Contains the filter object and inout/output buffers. ***********************************************************************************************************************************/ typedef struct IoFilterData { const Buffer **input; // Input buffer for filter Buffer *inputLocal; // Non-null if a locally created buffer that can be cleared IoFilter *filter; // Filter to apply Buffer *output; // Output buffer for filter } IoFilterData; // Macros for logging #define FUNCTION_LOG_IO_FILTER_DATA_TYPE \ IoFilterData * #define FUNCTION_LOG_IO_FILTER_DATA_FORMAT(value, buffer, bufferSize) \ objToLog(value, "IoFilterData", buffer, bufferSize) /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct IoFilterGroup { MemContext *memContext; // Mem context List *filterList; // List of filters to apply const Buffer *input; // Input buffer passed in for processing KeyValue *filterResult; // Filter results (if any) bool inputSame; // Same input required again? bool done; // Is processing done? #ifdef DEBUG bool opened; // Has the filter set been opened? bool flushing; // Is output being flushed? bool closed; // Has the filter set been closed? #endif }; OBJECT_DEFINE_FREE(IO_FILTER_GROUP); /*********************************************************************************************************************************** New Object ***********************************************************************************************************************************/ IoFilterGroup * ioFilterGroupNew(void) { FUNCTION_LOG_VOID(logLevelTrace); IoFilterGroup *this = NULL; MEM_CONTEXT_NEW_BEGIN("IoFilterGroup") { this = memNew(sizeof(IoFilterGroup)); *this = (IoFilterGroup) { .memContext = memContextCurrent(), .done = false, .filterList = lstNew(sizeof(IoFilterData)), }; } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(IO_FILTER_GROUP, this); } /*********************************************************************************************************************************** Add a filter ***********************************************************************************************************************************/ IoFilterGroup * ioFilterGroupAdd(IoFilterGroup *this, IoFilter *filter) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(IO_FILTER_GROUP, this); FUNCTION_LOG_PARAM(IO_FILTER, filter); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(!this->opened && !this->closed); ASSERT(filter != NULL); // Move the filter to this object's mem context ioFilterMove(filter, this->memContext); // Add the filter IoFilterData filterData = {.filter = filter}; lstAdd(this->filterList, &filterData); FUNCTION_LOG_RETURN(IO_FILTER_GROUP, this); } /*********************************************************************************************************************************** Insert a filter before an index ***********************************************************************************************************************************/ IoFilterGroup * ioFilterGroupInsert(IoFilterGroup *this, unsigned int listIdx, IoFilter *filter) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(IO_FILTER_GROUP, this); FUNCTION_LOG_PARAM(IO_FILTER, filter); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(!this->opened && !this->closed); ASSERT(filter != NULL); // Move the filter to this object's mem context ioFilterMove(filter, this->memContext); // Add the filter IoFilterData filterData = {.filter = filter}; lstInsert(this->filterList, listIdx, &filterData); FUNCTION_LOG_RETURN(IO_FILTER_GROUP, this); } /*********************************************************************************************************************************** Get a filter ***********************************************************************************************************************************/ static IoFilterData * ioFilterGroupGet(const IoFilterGroup *this, unsigned int filterIdx) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_FILTER_GROUP, this); FUNCTION_TEST_PARAM(UINT, filterIdx); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN((IoFilterData *)lstGet(this->filterList, filterIdx)); } /*********************************************************************************************************************************** Clear filters ***********************************************************************************************************************************/ IoFilterGroup * ioFilterGroupClear(IoFilterGroup *this) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(IO_FILTER_GROUP, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(!this->opened); for (unsigned int filterIdx = 0; filterIdx < ioFilterGroupSize(this); filterIdx++) ioFilterFree(ioFilterGroupGet(this, filterIdx)->filter); lstClear(this->filterList); FUNCTION_LOG_RETURN(IO_FILTER_GROUP, this); } /*********************************************************************************************************************************** Open filter group Setup the filter group and allocate any required buffers. ***********************************************************************************************************************************/ void ioFilterGroupOpen(IoFilterGroup *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_FILTER_GROUP, this); FUNCTION_LOG_END(); ASSERT(this != NULL); MEM_CONTEXT_BEGIN(this->memContext) { // If the last filter is not an output filter then add a filter to buffer/copy data. Input filters won't copy to an output // buffer so we need some way to get the data to the output buffer. if (ioFilterGroupSize(this) == 0 || !ioFilterOutput((ioFilterGroupGet(this, ioFilterGroupSize(this) - 1))->filter)) { ioFilterGroupAdd(this, ioBufferNew()); } // Create filter input/output buffers. Input filters do not get an output buffer since they don't produce output. Buffer **lastOutputBuffer = NULL; for (unsigned int filterIdx = 0; filterIdx < ioFilterGroupSize(this); filterIdx++) { IoFilterData *filterData = ioFilterGroupGet(this, filterIdx); // If there is no last output buffer yet, then use the input buffer that will be provided by the caller if (lastOutputBuffer == NULL) { filterData->input = &this->input; } // Else assign the last output buffer to the input else { // This cast is required because the compiler can't guarantee the const-ness of this object, i.e. it could be // modified in other parts of the code. This is actually expected and the only reason we need this const is to // match the const-ness of the input buffer provided by the caller. filterData->input = (const Buffer **)lastOutputBuffer; filterData->inputLocal = *lastOutputBuffer; } // If this is not the last output filter then create a new output buffer for it. The output buffer for the last filter // will be provided to the process function. if (ioFilterOutput(filterData->filter) && filterIdx < ioFilterGroupSize(this) - 1) { filterData->output = bufNew(ioBufferSize()); lastOutputBuffer = &filterData->output; } } } MEM_CONTEXT_END(); // Filter group is open #ifdef DEBUG this->opened = true; #endif FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Process filters ***********************************************************************************************************************************/ void ioFilterGroupProcess(IoFilterGroup *this, const Buffer *input, Buffer *output) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_FILTER_GROUP, this); FUNCTION_LOG_PARAM(BUFFER, input); FUNCTION_LOG_PARAM(BUFFER, output); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->opened && !this->closed); ASSERT(input == NULL || bufUsed(input) > 0); ASSERT(!this->flushing || input == NULL); ASSERT(output != NULL); ASSERT(bufRemains(output) > 0); // Once input goes to NULL then flushing has started #ifdef DEBUG if (input == NULL) this->flushing = true; #endif // Assign input and output buffers this->input = input; (ioFilterGroupGet(this, ioFilterGroupSize(this) - 1))->output = output; // do { // Start from the first filter by default unsigned int filterIdx = 0; // Search from the end of the list for a filter that needs the same input. This indicates that the filter was not able to // empty the input buffer on the last call. Maybe it won't this time either -- we can but try. if (this->inputSame) { this->inputSame = false; filterIdx = ioFilterGroupSize(this); do { filterIdx--; if (ioFilterInputSame((ioFilterGroupGet(this, filterIdx))->filter)) { this->inputSame = true; break; } } while (filterIdx != 0); // If no filter is found that needs the same input that means we are done with the current input. So end the loop and // get some more input. if (!this->inputSame) break; } // Process forward from the filter that has input to process. This may be a filter that needs the same input or it may be // new input for the first filter. for (; filterIdx < ioFilterGroupSize(this); filterIdx++) { IoFilterData *filterData = ioFilterGroupGet(this, filterIdx); // Process the filter if it is not done if (!ioFilterDone(filterData->filter)) { // If the filter produces output if (ioFilterOutput(filterData->filter)) { ioFilterProcessInOut(filterData->filter, *filterData->input, filterData->output); // If inputSame is set then the output buffer for this filter is full and it will need to be re-processed with // the same input once the output buffer is cleared if (ioFilterInputSame(filterData->filter)) { this->inputSame = true; } // Else clear the buffer if it was locally allocated. If the input buffer was passed in then the caller is // responsible for clearing it. else if (filterData->inputLocal != NULL) bufUsedZero(filterData->inputLocal); // If the output buffer is not full and the filter is not done then more data is required if (!bufFull(filterData->output) && !ioFilterDone(filterData->filter)) break; } // Else the filter does not produce output else ioFilterProcessIn(filterData->filter, *filterData->input); } // If the filter is done and has no more output then null the output buffer. Downstream filters have a pointer to this // buffer so their inputs will also change to null and they'll flush. if (filterData->output != NULL && ioFilterDone(filterData->filter) && bufUsed(filterData->output) == 0) filterData->output = NULL; } } while (!bufFull(output) && this->inputSame); // Scan the filter list to determine if inputSame is set or done is not set for any filter. We can't trust this->inputSame // when it is true without going through the loop above again. We need to scan to set this->done anyway so set this->inputSame // in the same loop. this->done = true; this->inputSame = false; for (unsigned int filterIdx = 0; filterIdx < ioFilterGroupSize(this); filterIdx++) { IoFilterData *filterData = ioFilterGroupGet(this, filterIdx); // When inputSame then this->done = false and we can exit the loop immediately if (ioFilterInputSame(filterData->filter)) { this->done = false; this->inputSame = true; break; } // Set this->done = false if any filter is not done if (!ioFilterDone(filterData->filter)) this->done = false; } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Close filter group and gather results ***********************************************************************************************************************************/ void ioFilterGroupClose(IoFilterGroup *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_FILTER_GROUP, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->opened && !this->closed); for (unsigned int filterIdx = 0; filterIdx < ioFilterGroupSize(this); filterIdx++) { IoFilterData *filterData = ioFilterGroupGet(this, filterIdx); const Variant *filterResult = ioFilterResult(filterData->filter); if (this->filterResult == NULL) { MEM_CONTEXT_BEGIN(this->memContext) { this->filterResult = kvNew(); } MEM_CONTEXT_END(); } MEM_CONTEXT_TEMP_BEGIN() { kvAdd(this->filterResult, VARSTR(ioFilterType(filterData->filter)), filterResult); } MEM_CONTEXT_TEMP_END(); } // Filter group is open #ifdef DEBUG this->closed = true; #endif FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Is the filter group done processing? ***********************************************************************************************************************************/ bool ioFilterGroupDone(const IoFilterGroup *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_FILTER_GROUP, this); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(this->opened && !this->closed); FUNCTION_TEST_RETURN(this->done); } /*********************************************************************************************************************************** Should the same input be passed again? A buffer of input can produce multiple buffers of output, e.g. when a file containing all zeroes is being decompressed. ***********************************************************************************************************************************/ bool ioFilterGroupInputSame(const IoFilterGroup *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_FILTER_GROUP, this); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(this->opened && !this->closed); FUNCTION_TEST_RETURN(this->inputSame); } /*********************************************************************************************************************************** Get all filters and parameters so they can be passed to a remote ***********************************************************************************************************************************/ Variant * ioFilterGroupParamAll(const IoFilterGroup *this) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(IO_FILTER_GROUP, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(!this->opened); ASSERT(this->filterList != NULL); VariantList *result = varLstNew(); for (unsigned int filterIdx = 0; filterIdx < ioFilterGroupSize(this); filterIdx++) { IoFilter *filter = ioFilterGroupGet(this, filterIdx)->filter; const VariantList *paramList = ioFilterParamList(filter); KeyValue *filterParam = kvNew(); kvAdd(filterParam, VARSTR(ioFilterType(filter)), paramList ? varNewVarLst(paramList) : NULL); varLstAdd(result, varNewKv(filterParam)); } FUNCTION_LOG_RETURN(VARIANT, varNewVarLst(result)); } /*********************************************************************************************************************************** Get filter results ***********************************************************************************************************************************/ const Variant * ioFilterGroupResult(const IoFilterGroup *this, const String *filterType) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(IO_FILTER_GROUP, this); FUNCTION_LOG_PARAM(STRING, filterType); FUNCTION_LOG_END(); ASSERT(this->opened); ASSERT(filterType != NULL); const Variant *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { result = kvGet(this->filterResult, VARSTR(filterType)); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_CONST(VARIANT, result); } /*********************************************************************************************************************************** Get all filter results ***********************************************************************************************************************************/ const Variant * ioFilterGroupResultAll(const IoFilterGroup *this) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(IO_FILTER_GROUP, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->closed); FUNCTION_LOG_RETURN_CONST(VARIANT, varNewKv(this->filterResult)); } /*********************************************************************************************************************************** Set all filter results ***********************************************************************************************************************************/ void ioFilterGroupResultAllSet(IoFilterGroup *this, const Variant *filterResult) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(IO_FILTER_GROUP, this); FUNCTION_LOG_END(); ASSERT(this != NULL); if (filterResult != NULL) { MEM_CONTEXT_BEGIN(this->memContext) { this->filterResult = kvDup(varKv(filterResult)); } MEM_CONTEXT_END(); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Return total number of filters ***********************************************************************************************************************************/ unsigned int ioFilterGroupSize(const IoFilterGroup *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_FILTER_GROUP, this); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN(lstSize(this->filterList)); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * ioFilterGroupToLog(const IoFilterGroup *this) { return strNewFmt( "{inputSame: %s, done: %s" #ifdef DEBUG ", opened %s, flushing %s, closed %s" #endif "}", cvtBoolToConstZ(this->inputSame), cvtBoolToConstZ(this->done) #ifdef DEBUG , cvtBoolToConstZ(this->opened), cvtBoolToConstZ(this->flushing), cvtBoolToConstZ(this->closed) #endif ); } pgbackrest-release-2.24/src/common/io/filter/group.h000066400000000000000000000100211362531507100224610ustar00rootroot00000000000000/*********************************************************************************************************************************** IO Filter Group Process data through an arbitrary group of filters in the order added by the user using ioFilterGroupAdd(). After processing results can be gathered using ioFilterGroupResult() for any filters that produce results. Processing is complex and asymmetric for read/write so should be done via the IoRead and IoWrite objects. General users need only call ioFilterGroupNew(), ioFilterGroupAdd(), and ioFilterGroupResult(). ***********************************************************************************************************************************/ #ifndef COMMON_IO_FILTER_GROUP_H #define COMMON_IO_FILTER_GROUP_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define IO_FILTER_GROUP_TYPE IoFilterGroup #define IO_FILTER_GROUP_PREFIX ioFilterGroup typedef struct IoFilterGroup IoFilterGroup; #include "common/io/filter/filter.h" #include "common/type/string.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ IoFilterGroup *ioFilterGroupNew(void); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ IoFilterGroup *ioFilterGroupAdd(IoFilterGroup *this, IoFilter *filter); IoFilterGroup *ioFilterGroupInsert(IoFilterGroup *this, unsigned int listIdx, IoFilter *filter); IoFilterGroup *ioFilterGroupClear(IoFilterGroup *this); void ioFilterGroupOpen(IoFilterGroup *this); void ioFilterGroupProcess(IoFilterGroup *this, const Buffer *input, Buffer *output); void ioFilterGroupClose(IoFilterGroup *this); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ bool ioFilterGroupDone(const IoFilterGroup *this); bool ioFilterGroupInputSame(const IoFilterGroup *this); Variant *ioFilterGroupParamAll(const IoFilterGroup *this); const Variant *ioFilterGroupResult(const IoFilterGroup *this, const String *filterType); const Variant *ioFilterGroupResultAll(const IoFilterGroup *this); void ioFilterGroupResultAllSet(IoFilterGroup *this, const Variant *filterResult); unsigned int ioFilterGroupSize(const IoFilterGroup *this); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void ioFilterGroupFree(IoFilterGroup *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *ioFilterGroupToLog(const IoFilterGroup *this); #define FUNCTION_LOG_IO_FILTER_GROUP_TYPE \ IoFilterGroup * #define FUNCTION_LOG_IO_FILTER_GROUP_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, ioFilterGroupToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/io/filter/sink.c000066400000000000000000000063651362531507100223040ustar00rootroot00000000000000/*********************************************************************************************************************************** IO Sink Filter ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/io/filter/filter.intern.h" #include "common/io/filter/sink.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" /*********************************************************************************************************************************** Filter type constant ***********************************************************************************************************************************/ STRING_EXTERN(SINK_FILTER_TYPE_STR, SINK_FILTER_TYPE); /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ typedef struct IoSink { MemContext *memContext; // Mem context of filter } IoSink; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_IO_SINK_TYPE \ IoSink * #define FUNCTION_LOG_IO_SINK_FORMAT(value, buffer, bufferSize) \ objToLog(value, "IoSink", buffer, bufferSize) /*********************************************************************************************************************************** Discard all input ***********************************************************************************************************************************/ static void ioSinkProcess(THIS_VOID, const Buffer *input, Buffer *output) { THIS(IoSink); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_SINK, this); FUNCTION_LOG_PARAM(BUFFER, input); FUNCTION_LOG_PARAM(BUFFER, output); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(input != NULL); ASSERT(output != NULL); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ IoFilter * ioSinkNew(void) { FUNCTION_LOG_VOID(logLevelTrace); IoFilter *this = NULL; MEM_CONTEXT_NEW_BEGIN("IoSink") { IoSink *driver = memNew(sizeof(IoSink)); *driver = (IoSink) { .memContext = memContextCurrent(), }; this = ioFilterNewP(SINK_FILTER_TYPE_STR, driver, NULL, .inOut = ioSinkProcess); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(IO_FILTER, this); } pgbackrest-release-2.24/src/common/io/filter/sink.h000066400000000000000000000023501362531507100222770ustar00rootroot00000000000000/*********************************************************************************************************************************** IO Sink Filter Consume all bytes sent to the filter without passing any on. This filter is useful when running size/hash filters on a remote when no data should be returned. ***********************************************************************************************************************************/ #ifndef COMMON_IO_FILTER_SINK_H #define COMMON_IO_FILTER_SINK_H #include "common/io/filter/filter.h" /*********************************************************************************************************************************** Filter type constant ***********************************************************************************************************************************/ #define SINK_FILTER_TYPE "sink" STRING_DECLARE(SINK_FILTER_TYPE_STR); /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ IoFilter *ioSinkNew(void); #endif pgbackrest-release-2.24/src/common/io/filter/size.c000066400000000000000000000077641362531507100223160ustar00rootroot00000000000000/*********************************************************************************************************************************** IO Size Filter ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/debug.h" #include "common/io/filter/filter.intern.h" #include "common/io/filter/size.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" /*********************************************************************************************************************************** Filter type constant ***********************************************************************************************************************************/ STRING_EXTERN(SIZE_FILTER_TYPE_STR, SIZE_FILTER_TYPE); /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ typedef struct IoSize { MemContext *memContext; // Mem context of filter uint64_t size; // Total size of al input } IoSize; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String * ioSizeToLog(const IoSize *this) { return strNewFmt("{size: %" PRIu64 "}", this->size); } #define FUNCTION_LOG_IO_SIZE_TYPE \ IoSize * #define FUNCTION_LOG_IO_SIZE_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, ioSizeToLog, buffer, bufferSize) /*********************************************************************************************************************************** Count bytes in the input ***********************************************************************************************************************************/ static void ioSizeProcess(THIS_VOID, const Buffer *input) { THIS(IoSize); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_SIZE, this); FUNCTION_LOG_PARAM(BUFFER, input); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(input != NULL); this->size += bufUsed(input); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Return filter result ***********************************************************************************************************************************/ static Variant * ioSizeResult(THIS_VOID) { THIS(IoSize); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_SIZE, this); FUNCTION_LOG_END(); ASSERT(this != NULL); FUNCTION_LOG_RETURN(VARIANT, varNewUInt64(this->size)); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ IoFilter * ioSizeNew(void) { FUNCTION_LOG_VOID(logLevelTrace); IoFilter *this = NULL; MEM_CONTEXT_NEW_BEGIN("IoSize") { IoSize *driver = memNew(sizeof(IoSize)); *driver = (IoSize) { .memContext = memContextCurrent(), }; this = ioFilterNewP(SIZE_FILTER_TYPE_STR, driver, NULL, .in = ioSizeProcess, .result = ioSizeResult); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(IO_FILTER, this); } pgbackrest-release-2.24/src/common/io/filter/size.h000066400000000000000000000023521362531507100223070ustar00rootroot00000000000000/*********************************************************************************************************************************** IO Size Filter Count all bytes that pass through the filter. Useful for getting file/IO size if added first in a FilterGroup with IoRead or last in a FilterGroup with IoWrite. ***********************************************************************************************************************************/ #ifndef COMMON_IO_FILTER_SIZE_H #define COMMON_IO_FILTER_SIZE_H #include "common/io/filter/filter.h" /*********************************************************************************************************************************** Filter type constant ***********************************************************************************************************************************/ #define SIZE_FILTER_TYPE "size" STRING_DECLARE(SIZE_FILTER_TYPE_STR); /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ IoFilter *ioSizeNew(void); #endif pgbackrest-release-2.24/src/common/io/handleRead.c000066400000000000000000000147721362531507100221030ustar00rootroot00000000000000/*********************************************************************************************************************************** Handle IO Read ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include "common/debug.h" #include "common/io/handleRead.h" #include "common/io/read.intern.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ typedef struct IoHandleRead { MemContext *memContext; // Object memory context const String *name; // Handle name for error messages int handle; // Handle to read data from TimeMSec timeout; // Timeout for read operation bool eof; // Has the end of the stream been reached? } IoHandleRead; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_IO_HANDLE_READ_TYPE \ IoHandleRead * #define FUNCTION_LOG_IO_HANDLE_READ_FORMAT(value, buffer, bufferSize) \ objToLog(value, "IoHandleRead", buffer, bufferSize) /*********************************************************************************************************************************** Read data from the handle ***********************************************************************************************************************************/ static size_t ioHandleRead(THIS_VOID, Buffer *buffer, bool block) { THIS(IoHandleRead); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_HANDLE_READ, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_PARAM(BOOL, block); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(buffer != NULL); ASSERT(!bufFull(buffer)); ssize_t actualBytes = 0; // If blocking keep reading until buffer is full or eof if (!this->eof) { do { // Initialize the file descriptor set used for select fd_set selectSet; FD_ZERO(&selectSet); // We know the handle is not negative because it passed error handling, so it is safe to cast to unsigned FD_SET((unsigned int)this->handle, &selectSet); // Initialize timeout struct used for select. Recreate this structure each time since Linux (at least) will modify it. struct timeval timeoutSelect; timeoutSelect.tv_sec = (time_t)(this->timeout / MSEC_PER_SEC); timeoutSelect.tv_usec = (time_t)(this->timeout % MSEC_PER_SEC * 1000); // Determine if there is data to be read int result = select(this->handle + 1, &selectSet, NULL, NULL, &timeoutSelect); THROW_ON_SYS_ERROR_FMT(result == -1, FileReadError, "unable to select from %s", strPtr(this->name)); // If no data read after time allotted then error if (!result) THROW_FMT(FileReadError, "unable to read data from %s after %" PRIu64 "ms", strPtr(this->name), this->timeout); // Read and handle errors THROW_ON_SYS_ERROR_FMT( (actualBytes = read(this->handle, bufRemainsPtr(buffer), bufRemains(buffer))) == -1, FileReadError, "unable to read from %s", strPtr(this->name)); // Update amount of buffer used bufUsedInc(buffer, (size_t)actualBytes); // If zero bytes were returned then eof if (actualBytes == 0) this->eof = true; } while (bufRemains(buffer) > 0 && !this->eof && block); } FUNCTION_LOG_RETURN(SIZE, (size_t)actualBytes); } /*********************************************************************************************************************************** Have all bytes been read from the buffer? ***********************************************************************************************************************************/ static bool ioHandleReadEof(THIS_VOID) { THIS(IoHandleRead); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_HANDLE_READ, this); FUNCTION_LOG_END(); ASSERT(this != NULL); FUNCTION_LOG_RETURN(BOOL, this->eof); } /*********************************************************************************************************************************** Get handle (file descriptor) ***********************************************************************************************************************************/ static int ioHandleReadHandle(const THIS_VOID) { THIS(const IoHandleRead); FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_HANDLE_READ, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->handle); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ IoRead * ioHandleReadNew(const String *name, int handle, TimeMSec timeout) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(INT, handle); FUNCTION_LOG_END(); ASSERT(handle != -1); IoRead *this = NULL; MEM_CONTEXT_NEW_BEGIN("IoHandleRead") { IoHandleRead *driver = memNew(sizeof(IoHandleRead)); *driver = (IoHandleRead) { .memContext = memContextCurrent(), .name = strDup(name), .handle = handle, .timeout = timeout, }; this = ioReadNewP(driver, .block = true, .eof = ioHandleReadEof, .handle = ioHandleReadHandle, .read = ioHandleRead); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(IO_READ, this); } pgbackrest-release-2.24/src/common/io/handleRead.h000066400000000000000000000014471362531507100221030ustar00rootroot00000000000000/*********************************************************************************************************************************** Handle IO Read Read from a handle using the IoRead interface. ***********************************************************************************************************************************/ #ifndef COMMON_IO_HANDLEREAD_H #define COMMON_IO_HANDLEREAD_H #include "common/io/read.h" #include "common/time.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ IoRead *ioHandleReadNew(const String *name, int handle, TimeMSec timeout); #endif pgbackrest-release-2.24/src/common/io/handleWrite.c000066400000000000000000000112031362531507100223040ustar00rootroot00000000000000/*********************************************************************************************************************************** Handle IO Write ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/debug.h" #include "common/io/handleWrite.h" #include "common/io/write.intern.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ typedef struct IoHandleWrite { MemContext *memContext; // Object memory context const String *name; // Handle name for error messages int handle; // Handle to write to } IoHandleWrite; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_IO_HANDLE_WRITE_TYPE \ IoHandleWrite * #define FUNCTION_LOG_IO_HANDLE_WRITE_FORMAT(value, buffer, bufferSize) \ objToLog(value, "IoHandleWrite", buffer, bufferSize) /*********************************************************************************************************************************** Write to the handle ***********************************************************************************************************************************/ static void ioHandleWrite(THIS_VOID, const Buffer *buffer) { THIS(IoHandleWrite); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_HANDLE_WRITE, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(buffer != NULL); THROW_ON_SYS_ERROR_FMT( write(this->handle, bufPtr(buffer), bufUsed(buffer)) == -1, FileWriteError, "unable to write to %s", strPtr(this->name)); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Get handle (file descriptor) ***********************************************************************************************************************************/ static int ioHandleWriteHandle(const THIS_VOID) { THIS(const IoHandleWrite); FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_HANDLE_WRITE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->handle); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ IoWrite * ioHandleWriteNew(const String *name, int handle) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(INT, handle); FUNCTION_LOG_END(); IoWrite *this = NULL; MEM_CONTEXT_NEW_BEGIN("IoHandleWrite") { IoHandleWrite *driver = memNew(sizeof(IoHandleWrite)); *driver = (IoHandleWrite) { .memContext = memContextCurrent(), .name = strDup(name), .handle = handle, }; this = ioWriteNewP(driver, .handle = ioHandleWriteHandle, .write = ioHandleWrite); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(IO_WRITE, this); } /*********************************************************************************************************************************** Write a string to the specified handle ***********************************************************************************************************************************/ void ioHandleWriteOneStr(int handle, const String *string) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(INT, handle); FUNCTION_LOG_PARAM(STRING, string); FUNCTION_LOG_END(); ASSERT(string != NULL); if (write(handle, strPtr(string), strSize(string)) != (int)strSize(string)) THROW_SYS_ERROR(FileWriteError, "unable to write to handle"); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/common/io/handleWrite.h000066400000000000000000000021321362531507100223120ustar00rootroot00000000000000/*********************************************************************************************************************************** Handle IO Write Write to a handle using the IoWrite interface. ***********************************************************************************************************************************/ #ifndef COMMON_IO_HANDLEWRITE_H #define COMMON_IO_HANDLEWRITE_H #include "common/io/write.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ IoWrite *ioHandleWriteNew(const String *name, int handle); /*********************************************************************************************************************************** Helper functions ***********************************************************************************************************************************/ void ioHandleWriteOneStr(int handle, const String *string); #endif pgbackrest-release-2.24/src/common/io/http/000077500000000000000000000000001362531507100206545ustar00rootroot00000000000000pgbackrest-release-2.24/src/common/io/http/cache.c000066400000000000000000000073611362531507100220720ustar00rootroot00000000000000/*********************************************************************************************************************************** Http Client Cache ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/io/http/cache.h" #include "common/log.h" #include "common/object.h" #include "common/type/list.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct HttpClientCache { MemContext *memContext; // Mem context const String *host; // Client settings unsigned int port; TimeMSec timeout; bool verifyPeer; const String *caFile; const String *caPath; List *clientList; // List of http clients }; OBJECT_DEFINE_FREE(HTTP_CLIENT_CACHE); /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ HttpClientCache * httpClientCacheNew( const String *host, unsigned int port, TimeMSec timeout, bool verifyPeer, const String *caFile, const String *caPath) { FUNCTION_LOG_BEGIN(logLevelDebug) FUNCTION_LOG_PARAM(STRING, host); FUNCTION_LOG_PARAM(UINT, port); FUNCTION_LOG_PARAM(TIME_MSEC, timeout); FUNCTION_LOG_PARAM(BOOL, verifyPeer); FUNCTION_LOG_PARAM(STRING, caFile); FUNCTION_LOG_PARAM(STRING, caPath); FUNCTION_LOG_END(); ASSERT(host != NULL); HttpClientCache *this = NULL; MEM_CONTEXT_NEW_BEGIN("HttpClientCache") { // Allocate state and set context this = memNew(sizeof(HttpClientCache)); *this = (HttpClientCache) { .memContext = MEM_CONTEXT_NEW(), .host = strDup(host), .port = port, .timeout = timeout, .verifyPeer = verifyPeer, .caFile = strDup(caFile), .caPath = strDup(caPath), .clientList = lstNew(sizeof(HttpClient *)), }; } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(HTTP_CLIENT_CACHE, this); } /*********************************************************************************************************************************** Get an http client from the cache ***********************************************************************************************************************************/ HttpClient * httpClientCacheGet(HttpClientCache *this) { FUNCTION_LOG_BEGIN(logLevelTrace) FUNCTION_LOG_PARAM(HTTP_CLIENT_CACHE, this); FUNCTION_LOG_END(); ASSERT(this != NULL); HttpClient *result = NULL; // Search for a client that is not busy for (unsigned int clientIdx = 0; clientIdx < lstSize(this->clientList); clientIdx++) { HttpClient *httpClient = *(HttpClient **)lstGet(this->clientList, clientIdx); if (!httpClientBusy(httpClient)) result = httpClient; } // If none found then create a new one if (result == NULL) { MEM_CONTEXT_BEGIN(this->memContext) { result = httpClientNew(this->host, this->port, this->timeout, this->verifyPeer, this->caFile, this->caPath); lstAdd(this->clientList, &result); } MEM_CONTEXT_END(); } FUNCTION_LOG_RETURN(HTTP_CLIENT, result); } pgbackrest-release-2.24/src/common/io/http/cache.h000066400000000000000000000052201362531507100220670ustar00rootroot00000000000000/*********************************************************************************************************************************** Http Client Cache Cache http clients and return one that is not busy on request. ***********************************************************************************************************************************/ #ifndef COMMON_IO_HTTP_CLIENT_CACHE_H #define COMMON_IO_HTTP_CLIENT_CACHE_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define HTTP_CLIENT_CACHE_TYPE HttpClientCache #define HTTP_CLIENT_CACHE_PREFIX httpClientCache typedef struct HttpClientCache HttpClientCache; #include "common/io/http/client.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ HttpClientCache *httpClientCacheNew( const String *host, unsigned int port, TimeMSec timeout, bool verifyPeer, const String *caFile, const String *caPath); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ HttpClient *httpClientCacheGet(HttpClientCache *this); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void httpClientCacheFree(HttpClientCache *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_HTTP_CLIENT_CACHE_TYPE \ HttpClientCache * #define FUNCTION_LOG_HTTP_CLIENT_CACHE_FORMAT(value, buffer, bufferSize) \ objToLog(value, "HttpClientCache", buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/io/http/client.c000066400000000000000000000616311362531507100223050ustar00rootroot00000000000000/*********************************************************************************************************************************** Http Client ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/io/http/client.h" #include "common/io/http/common.h" #include "common/io/io.h" #include "common/io/read.intern.h" #include "common/io/tls/client.h" #include "common/log.h" #include "common/object.h" #include "common/wait.h" /*********************************************************************************************************************************** Http constants ***********************************************************************************************************************************/ #define HTTP_VERSION "HTTP/1.1" STRING_STATIC(HTTP_VERSION_STR, HTTP_VERSION); STRING_EXTERN(HTTP_VERB_DELETE_STR, HTTP_VERB_DELETE); STRING_EXTERN(HTTP_VERB_GET_STR, HTTP_VERB_GET); STRING_EXTERN(HTTP_VERB_HEAD_STR, HTTP_VERB_HEAD); STRING_EXTERN(HTTP_VERB_POST_STR, HTTP_VERB_POST); STRING_EXTERN(HTTP_VERB_PUT_STR, HTTP_VERB_PUT); #define HTTP_HEADER_CONNECTION "connection" STRING_STATIC(HTTP_HEADER_CONNECTION_STR, HTTP_HEADER_CONNECTION); STRING_EXTERN(HTTP_HEADER_CONTENT_LENGTH_STR, HTTP_HEADER_CONTENT_LENGTH); STRING_EXTERN(HTTP_HEADER_CONTENT_MD5_STR, HTTP_HEADER_CONTENT_MD5); #define HTTP_HEADER_TRANSFER_ENCODING "transfer-encoding" STRING_STATIC(HTTP_HEADER_TRANSFER_ENCODING_STR, HTTP_HEADER_TRANSFER_ENCODING); STRING_EXTERN(HTTP_HEADER_ETAG_STR, HTTP_HEADER_ETAG); STRING_EXTERN(HTTP_HEADER_LAST_MODIFIED_STR, HTTP_HEADER_LAST_MODIFIED); #define HTTP_VALUE_CONNECTION_CLOSE "close" STRING_STATIC(HTTP_VALUE_CONNECTION_CLOSE_STR, HTTP_VALUE_CONNECTION_CLOSE); #define HTTP_VALUE_TRANSFER_ENCODING_CHUNKED "chunked" STRING_STATIC(HTTP_VALUE_TRANSFER_ENCODING_CHUNKED_STR, HTTP_VALUE_TRANSFER_ENCODING_CHUNKED); // 5xx errors that should always be retried #define HTTP_RESPONSE_CODE_RETRY_CLASS 5 /*********************************************************************************************************************************** Statistics ***********************************************************************************************************************************/ static HttpClientStat httpClientStatLocal; /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct HttpClient { MemContext *memContext; // Mem context TimeMSec timeout; // Request timeout TlsClient *tls; // Tls client IoRead *ioRead; // Read io interface unsigned int responseCode; // Response code (e.g. 200, 404) String *responseMessage; // Response message e.g. (OK, Not Found) HttpHeader *responseHeader; // Response headers bool contentChunked; // Is the response content chunked? uint64_t contentSize; // Content size (ignored for chunked) uint64_t contentRemaining; // Content remaining (per chunk if chunked) bool closeOnContentEof; // Will server close after content is sent? bool contentEof; // Has all content been read? }; OBJECT_DEFINE_FREE(HTTP_CLIENT); /*********************************************************************************************************************************** Read content ***********************************************************************************************************************************/ static size_t httpClientRead(THIS_VOID, Buffer *buffer, bool block) { THIS(HttpClient); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(HTTP_CLIENT, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_PARAM(BOOL, block); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(buffer != NULL); ASSERT(!bufFull(buffer)); // Read if EOF has not been reached size_t actualBytes = 0; if (!this->contentEof) { // If close was requested and no content specified then the server may send content up until the eof if (this->closeOnContentEof && !this->contentChunked && this->contentSize == 0) { ioRead(tlsClientIoRead(this->tls), buffer); this->contentEof = ioReadEof(tlsClientIoRead(this->tls)); } // Else read using specified encoding or size else { do { // If chunked content and no content remaining if (this->contentChunked && this->contentRemaining == 0) { // Read length of next chunk MEM_CONTEXT_TEMP_BEGIN() { this->contentRemaining = cvtZToUInt64Base(strPtr(strTrim(ioReadLine(tlsClientIoRead(this->tls)))), 16); } MEM_CONTEXT_TEMP_END(); // If content remaining is still zero then eof if (this->contentRemaining == 0) this->contentEof = true; } // Read if there is content remaining if (this->contentRemaining > 0) { // If the buffer is larger than the content that needs to be read then limit the buffer size so the read won't // block or read too far. Casting to size_t is safe on 32-bit because we know the max buffer size is defined as // less than 2^32 so content remaining can't be more than that. if (bufRemains(buffer) > this->contentRemaining) bufLimitSet(buffer, bufSize(buffer) - (bufRemains(buffer) - (size_t)this->contentRemaining)); actualBytes = bufRemains(buffer); this->contentRemaining -= ioRead(tlsClientIoRead(this->tls), buffer); // Error if EOF but content read is not complete if (ioReadEof(tlsClientIoRead(this->tls))) THROW(FileReadError, "unexpected EOF reading HTTP content"); // Clear limit (this works even if the limit was not set and it is easier than checking) bufLimitClear(buffer); } // If no content remaining if (this->contentRemaining == 0) { // If chunked then consume the blank line that follows every chunk. There might be more chunk data so loop back // around to check. if (this->contentChunked) { ioReadLine(tlsClientIoRead(this->tls)); } // If total content size was provided then this is eof else this->contentEof = true; } } while (!bufFull(buffer) && !this->contentEof); } // If the server notified that it would close the connection after sending content then close the client side if (this->contentEof && this->closeOnContentEof) tlsClientClose(this->tls); } FUNCTION_LOG_RETURN(SIZE, (size_t)actualBytes); } /*********************************************************************************************************************************** Has all content been read? ***********************************************************************************************************************************/ static bool httpClientEof(THIS_VOID) { THIS(HttpClient); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(HTTP_CLIENT, this); FUNCTION_LOG_END(); ASSERT(this != NULL); FUNCTION_LOG_RETURN(BOOL, this->contentEof); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ HttpClient * httpClientNew( const String *host, unsigned int port, TimeMSec timeout, bool verifyPeer, const String *caFile, const String *caPath) { FUNCTION_LOG_BEGIN(logLevelDebug) FUNCTION_LOG_PARAM(STRING, host); FUNCTION_LOG_PARAM(UINT, port); FUNCTION_LOG_PARAM(TIME_MSEC, timeout); FUNCTION_LOG_PARAM(BOOL, verifyPeer); FUNCTION_LOG_PARAM(STRING, caFile); FUNCTION_LOG_PARAM(STRING, caPath); FUNCTION_LOG_END(); ASSERT(host != NULL); HttpClient *this = NULL; MEM_CONTEXT_NEW_BEGIN("HttpClient") { this = memNew(sizeof(HttpClient)); *this = (HttpClient) { .memContext = MEM_CONTEXT_NEW(), .timeout = timeout, .tls = tlsClientNew(host, port, timeout, verifyPeer, caFile, caPath), }; httpClientStatLocal.object++; } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(HTTP_CLIENT, this); } /*********************************************************************************************************************************** Perform a request ***********************************************************************************************************************************/ Buffer * httpClientRequest( HttpClient *this, const String *verb, const String *uri, const HttpQuery *query, const HttpHeader *requestHeader, const Buffer *body, bool returnContent) { FUNCTION_LOG_BEGIN(logLevelDebug) FUNCTION_LOG_PARAM(HTTP_CLIENT, this); FUNCTION_LOG_PARAM(STRING, verb); FUNCTION_LOG_PARAM(STRING, uri); FUNCTION_LOG_PARAM(HTTP_QUERY, query); FUNCTION_LOG_PARAM(HTTP_HEADER, requestHeader); FUNCTION_LOG_PARAM(BUFFER, body); FUNCTION_LOG_PARAM(BOOL, returnContent); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(verb != NULL); ASSERT(uri != NULL); // Buffer for returned content Buffer *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { bool complete = false; bool retry; Wait *wait = this->timeout > 0 ? waitNew(this->timeout) : NULL; do { // Assume there will be no retry retry = false; // Free the read interface httpClientDone(this); // Free response status left over from the last request httpHeaderFree(this->responseHeader); this->responseHeader = NULL; strFree(this->responseMessage); this->responseMessage = NULL; // Reset all content info this->contentChunked = false; this->contentSize = 0; this->contentRemaining = 0; this->closeOnContentEof = false; this->contentEof = true; TRY_BEGIN() { if (tlsClientOpen(this->tls)) httpClientStatLocal.session++; // Write the request String *queryStr = httpQueryRender(query); ioWriteStrLine( tlsClientIoWrite(this->tls), strNewFmt( "%s %s%s%s " HTTP_VERSION "\r", strPtr(verb), strPtr(httpUriEncode(uri, true)), queryStr == NULL ? "" : "?", queryStr == NULL ? "" : strPtr(queryStr))); // Write headers if (requestHeader != NULL) { const StringList *headerList = httpHeaderList(requestHeader); for (unsigned int headerIdx = 0; headerIdx < strLstSize(headerList); headerIdx++) { const String *headerKey = strLstGet(headerList, headerIdx); ioWriteStrLine( tlsClientIoWrite(this->tls), strNewFmt("%s:%s\r", strPtr(headerKey), strPtr(httpHeaderGet(requestHeader, headerKey)))); } } // Write out blank line to end the headers ioWriteLine(tlsClientIoWrite(this->tls), CR_BUF); // Write out body if any if (body != NULL) ioWrite(tlsClientIoWrite(this->tls), body); // Flush all writes ioWriteFlush(tlsClientIoWrite(this->tls)); // Read status and make sure it starts with the correct http version String *status = strTrim(ioReadLine(tlsClientIoRead(this->tls))); if (!strBeginsWith(status, HTTP_VERSION_STR)) THROW_FMT(FormatError, "http version of response '%s' must be " HTTP_VERSION, strPtr(status)); // Now read the response code and message status = strSub(status, sizeof(HTTP_VERSION)); int spacePos = strChr(status, ' '); if (spacePos < 0) THROW_FMT(FormatError, "response status '%s' must have a space", strPtr(status)); this->responseCode = cvtZToUInt(strPtr(strTrim(strSubN(status, 0, (size_t)spacePos)))); MEM_CONTEXT_BEGIN(this->memContext) { this->responseMessage = strSub(status, (size_t)spacePos + 1); } MEM_CONTEXT_END(); // Read headers MEM_CONTEXT_BEGIN(this->memContext) { this->responseHeader = httpHeaderNew(NULL); } MEM_CONTEXT_END(); do { // Read the next header String *header = strTrim(ioReadLine(tlsClientIoRead(this->tls))); // If the header is empty then we have reached the end of the headers if (strSize(header) == 0) break; // Split the header and store it int colonPos = strChr(header, ':'); if (colonPos < 0) THROW_FMT(FormatError, "header '%s' missing colon", strPtr(strTrim(header))); String *headerKey = strLower(strTrim(strSubN(header, 0, (size_t)colonPos))); String *headerValue = strTrim(strSub(header, (size_t)colonPos + 1)); httpHeaderAdd(this->responseHeader, headerKey, headerValue); // Read transfer encoding (only chunked is supported) if (strEq(headerKey, HTTP_HEADER_TRANSFER_ENCODING_STR)) { // Error if transfer encoding is not chunked if (!strEq(headerValue, HTTP_VALUE_TRANSFER_ENCODING_CHUNKED_STR)) { THROW_FMT( FormatError, "only '%s' is supported for '%s' header", HTTP_VALUE_TRANSFER_ENCODING_CHUNKED, HTTP_HEADER_TRANSFER_ENCODING); } this->contentChunked = true; } // Read content size if (strEq(headerKey, HTTP_HEADER_CONTENT_LENGTH_STR)) { this->contentSize = cvtZToUInt64(strPtr(headerValue)); this->contentRemaining = this->contentSize; } // If the server notified of a closed connection then close the client connection after reading content. This // prevents doing a retry on the next request when using the closed connection. if (strEq(headerKey, HTTP_HEADER_CONNECTION_STR) && strEq(headerValue, HTTP_VALUE_CONNECTION_CLOSE_STR)) { this->closeOnContentEof = true; httpClientStatLocal.close++; } } while (1); // Error if transfer encoding and content length are both set if (this->contentChunked && this->contentSize > 0) { THROW_FMT( FormatError, "'%s' and '%s' headers are both set", HTTP_HEADER_TRANSFER_ENCODING, HTTP_HEADER_CONTENT_LENGTH); } // Was content returned in the response? HEAD will report content but not actually return any. bool contentExists = (this->contentChunked || this->contentSize > 0 || this->closeOnContentEof) && !strEq(verb, HTTP_VERB_HEAD_STR); this->contentEof = !contentExists; // If all content should be returned from this function then read the buffer. Also read the response if there has // been an error. if (returnContent || !httpClientResponseCodeOk(this)) { if (contentExists) { result = bufNew(0); do { bufResize(result, bufSize(result) + ioBufferSize()); httpClientRead(this, result, true); } while (!httpClientEof(this)); } } // Else create an io object, even if there is no content. This makes the logic for readers easier -- they can just // check eof rather than also checking if the io object exists. else { MEM_CONTEXT_BEGIN(this->memContext) { this->ioRead = ioReadNewP(this, .eof = httpClientEof, .read = httpClientRead); ioReadOpen(this->ioRead); } MEM_CONTEXT_END(); } // If the server notified that it would close the connection and there is no content then close the client side if (this->closeOnContentEof && !contentExists) tlsClientClose(this->tls); // Retry when response code is 5xx. These errors generally represent a server error for a request that looks valid. // There are a few errors that might be permanently fatal but they are rare and it seems best not to try and pick // and choose errors in this class to retry. if (httpClientResponseCode(this) / 100 == HTTP_RESPONSE_CODE_RETRY_CLASS) THROW_FMT(ServiceError, "[%u] %s", httpClientResponseCode(this), strPtr(httpClientResponseMessage(this))); // Request was successful complete = true; } CATCH_ANY() { // Retry if wait time has not expired if (wait != NULL && waitMore(wait)) { LOG_DEBUG_FMT("retry %s: %s", errorTypeName(errorType()), errorMessage()); retry = true; httpClientStatLocal.retry++; } tlsClientClose(this->tls); } TRY_END(); } while (!complete && retry); if (!complete) RETHROW(); // Move the result buffer (if any) to the parent context bufMove(result, memContextPrior()); httpClientStatLocal.request++; } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BUFFER, result); } /*********************************************************************************************************************************** Format statistics to a string ***********************************************************************************************************************************/ String * httpClientStatStr(void) { FUNCTION_TEST_VOID(); String *result = NULL; if (httpClientStatLocal.object > 0) { result = strNewFmt( "http statistics: objects %" PRIu64 ", sessions %" PRIu64 ", requests %" PRIu64 ", retries %" PRIu64 ", closes %" PRIu64, httpClientStatLocal.object, httpClientStatLocal.session, httpClientStatLocal.request, httpClientStatLocal.retry, httpClientStatLocal.close); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Mark the client as done if read is complete ***********************************************************************************************************************************/ void httpClientDone(HttpClient *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(HTTP_CLIENT, this); FUNCTION_LOG_END(); ASSERT(this != NULL); if (this->ioRead != NULL) { if (!this->contentEof) tlsClientClose(this->tls); ioReadFree(this->ioRead); this->ioRead = NULL; } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Is the http object busy? ***********************************************************************************************************************************/ bool httpClientBusy(const HttpClient *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(HTTP_CLIENT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->ioRead); } /*********************************************************************************************************************************** Get read interface ***********************************************************************************************************************************/ IoRead * httpClientIoRead(const HttpClient *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(HTTP_CLIENT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->ioRead); } /*********************************************************************************************************************************** Get the response code ***********************************************************************************************************************************/ unsigned int httpClientResponseCode(const HttpClient *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(HTTP_CLIENT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->responseCode); } /*********************************************************************************************************************************** Is this response code OK, i.e. 2XX? ***********************************************************************************************************************************/ bool httpClientResponseCodeOk(const HttpClient *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(HTTP_CLIENT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->responseCode / 100 == 2); } /*********************************************************************************************************************************** Get the response headers ***********************************************************************************************************************************/ const HttpHeader * httpClientResponseHeader(const HttpClient *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(HTTP_CLIENT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->responseHeader); } /*********************************************************************************************************************************** Get the response message ***********************************************************************************************************************************/ const String * httpClientResponseMessage(const HttpClient *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(HTTP_CLIENT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->responseMessage); } pgbackrest-release-2.24/src/common/io/http/client.h000066400000000000000000000140741362531507100223110ustar00rootroot00000000000000/*********************************************************************************************************************************** Http Client A robust HTTP client with connection reuse and automatic retries. Using a single object to make multiple requests is more efficient because connections are reused whenever possible. Requests are automatically retried when the connection has been closed by the server. Any 5xx response is also retried. Only the HTTPS protocol is currently supported. ***********************************************************************************************************************************/ #ifndef COMMON_IO_HTTP_CLIENT_H #define COMMON_IO_HTTP_CLIENT_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define HTTP_CLIENT_TYPE HttpClient #define HTTP_CLIENT_PREFIX httpClient typedef struct HttpClient HttpClient; #include "common/io/http/header.h" #include "common/io/http/query.h" #include "common/io/read.h" #include "common/time.h" #include "common/type/stringList.h" /*********************************************************************************************************************************** HTTP Constants ***********************************************************************************************************************************/ #define HTTP_VERB_DELETE "DELETE" STRING_DECLARE(HTTP_VERB_DELETE_STR); #define HTTP_VERB_GET "GET" STRING_DECLARE(HTTP_VERB_GET_STR); #define HTTP_VERB_HEAD "HEAD" STRING_DECLARE(HTTP_VERB_HEAD_STR); #define HTTP_VERB_POST "POST" STRING_DECLARE(HTTP_VERB_POST_STR); #define HTTP_VERB_PUT "PUT" STRING_DECLARE(HTTP_VERB_PUT_STR); #define HTTP_HEADER_CONTENT_LENGTH "content-length" STRING_DECLARE(HTTP_HEADER_CONTENT_LENGTH_STR); #define HTTP_HEADER_CONTENT_MD5 "content-md5" STRING_DECLARE(HTTP_HEADER_CONTENT_MD5_STR); #define HTTP_HEADER_ETAG "etag" STRING_DECLARE(HTTP_HEADER_ETAG_STR); #define HTTP_HEADER_LAST_MODIFIED "last-modified" STRING_DECLARE(HTTP_HEADER_LAST_MODIFIED_STR); #define HTTP_RESPONSE_CODE_FORBIDDEN 403 #define HTTP_RESPONSE_CODE_NOT_FOUND 404 /*********************************************************************************************************************************** Statistics ***********************************************************************************************************************************/ typedef struct HttpClientStat { uint64_t object; // Objects created uint64_t session; // TLS sessions created uint64_t request; // Requests (i.e. calls to httpClientRequest()) uint64_t retry; // Request retries uint64_t close; // Closes forced by server } HttpClientStat; /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ HttpClient *httpClientNew( const String *host, unsigned int port, TimeMSec timeout, bool verifyPeer, const String *caFile, const String *caPath); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void httpClientDone(HttpClient *this); Buffer *httpClientRequest( HttpClient *this, const String *verb, const String *uri, const HttpQuery *query, const HttpHeader *requestHeader, const Buffer *body, bool returnContent); String *httpClientStatStr(void); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ bool httpClientBusy(const HttpClient *this); IoRead *httpClientIoRead(const HttpClient *this); unsigned int httpClientResponseCode(const HttpClient *this); const HttpHeader *httpClientResponseHeader(const HttpClient *this); const String *httpClientResponseMessage(const HttpClient *this); bool httpClientResponseCodeOk(const HttpClient *this); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void httpClientFree(HttpClient *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_HTTP_CLIENT_TYPE \ HttpClient * #define FUNCTION_LOG_HTTP_CLIENT_FORMAT(value, buffer, bufferSize) \ objToLog(value, "HttpClient", buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/io/http/common.c000066400000000000000000000066311362531507100223160ustar00rootroot00000000000000/*********************************************************************************************************************************** Http Common ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/debug.h" #include "common/io/http/common.h" #include "common/time.h" /*********************************************************************************************************************************** Convert the time using the format specified in https://tools.ietf.org/html/rfc7231#section-7.1.1.1 which is used by HTTP 1.1 (the only version we support). ***********************************************************************************************************************************/ time_t httpLastModifiedToTime(const String *lastModified) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, lastModified); FUNCTION_TEST_END(); time_t result = 0; MEM_CONTEXT_TEMP_BEGIN() { // Find the month static const char *monthList[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; const char *month = strPtr(strSubN(lastModified, 8, 3)); unsigned int monthIdx = 0; for (; monthIdx < sizeof(monthList) / sizeof(char *); monthIdx++) { if (strcmp(month, monthList[monthIdx]) == 0) break; } if (monthIdx == sizeof(monthList) / sizeof(char *)) THROW_FMT(FormatError, "invalid month '%s'", month); // Convert to time_t result = epochFromParts( cvtZToInt(strPtr(strSubN(lastModified, 12, 4))), (int)monthIdx + 1, cvtZToInt(strPtr(strSubN(lastModified, 5, 2))), cvtZToInt(strPtr(strSubN(lastModified, 17, 2))), cvtZToInt(strPtr(strSubN(lastModified, 20, 2))), cvtZToInt(strPtr(strSubN(lastModified, 23, 2))), 0); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Encode string to conform with URI specifications If a path is being encoded then / characters won't be encoded. ***********************************************************************************************************************************/ String * httpUriEncode(const String *uri, bool path) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, uri); FUNCTION_TEST_PARAM(BOOL, path); FUNCTION_TEST_END(); String *result = NULL; // Encode if the string is not null if (uri != NULL) { result = strNew(""); // Iterate all characters in the string for (unsigned uriIdx = 0; uriIdx < strSize(uri); uriIdx++) { char uriChar = strPtr(uri)[uriIdx]; // These characters are reproduced verbatim if ((uriChar >= 'A' && uriChar <= 'Z') || (uriChar >= 'a' && uriChar <= 'z') || (uriChar >= '0' && uriChar <= '9') || uriChar == '_' || uriChar == '-' || uriChar == '~' || uriChar == '.' || (path && uriChar == '/')) { strCatChr(result, uriChar); } // All other characters are hex-encoded else strCatFmt(result, "%%%02X", (unsigned char)uriChar); } } FUNCTION_TEST_RETURN(result); } pgbackrest-release-2.24/src/common/io/http/common.h000066400000000000000000000015321362531507100223160ustar00rootroot00000000000000/*********************************************************************************************************************************** Http Common Http common functions. ***********************************************************************************************************************************/ #ifndef COMMON_IO_HTTP_COMMON_H #define COMMON_IO_HTTP_COMMON_H #include #include "common/type/string.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ // Convert Last-Modified header to time_t time_t httpLastModifiedToTime(const String *lastModified); String *httpUriEncode(const String *uri, bool path); #endif pgbackrest-release-2.24/src/common/io/http/header.c000066400000000000000000000174341362531507100222610ustar00rootroot00000000000000/*********************************************************************************************************************************** Http Header ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/io/http/header.h" #include "common/memContext.h" #include "common/object.h" #include "common/type/keyValue.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct HttpHeader { MemContext *memContext; // Mem context const StringList *redactList; // List of headers to redact during logging KeyValue *kv; // KeyValue store }; OBJECT_DEFINE_MOVE(HTTP_HEADER); OBJECT_DEFINE_FREE(HTTP_HEADER); /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ HttpHeader * httpHeaderNew(const StringList *redactList) { FUNCTION_TEST_VOID(); HttpHeader *this = NULL; MEM_CONTEXT_NEW_BEGIN("HttpHeader") { // Allocate state and set context this = memNew(sizeof(HttpHeader)); *this = (HttpHeader) { .memContext = MEM_CONTEXT_NEW(), .redactList = strLstDup(redactList), .kv = kvNew(), }; } MEM_CONTEXT_NEW_END(); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Duplicate object ***********************************************************************************************************************************/ HttpHeader * httpHeaderDup(const HttpHeader *header, const StringList *redactList) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(HTTP_HEADER, header); FUNCTION_TEST_PARAM(STRING_LIST, redactList); FUNCTION_TEST_END(); HttpHeader *this = NULL; if (header != NULL) { MEM_CONTEXT_NEW_BEGIN("HttpHeader") { // Allocate state and set context this = memNew(sizeof(HttpHeader)); *this = (HttpHeader) { .memContext = MEM_CONTEXT_NEW(), .redactList = redactList == NULL ? strLstDup(header->redactList) : strLstDup(redactList), .kv = kvDup(header->kv), }; } MEM_CONTEXT_NEW_END(); } FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Add a header ***********************************************************************************************************************************/ HttpHeader * httpHeaderAdd(HttpHeader *this, const String *key, const String *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(HTTP_HEADER, this); FUNCTION_TEST_PARAM(STRING, key); FUNCTION_TEST_PARAM(STRING, value); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(key != NULL); ASSERT(value != NULL); // Check if the key already exists const Variant *keyVar = VARSTR(key); const Variant *valueVar = kvGet(this->kv, keyVar); // If the key exists then append the new value. The HTTP spec (RFC 2616, Section 4.2) says that if a header appears more than // once then it is equivalent to a single comma-separated header. There appear to be a few exceptions such as Set-Cookie, but // they should not be of concern to us here. if (valueVar != NULL) { MEM_CONTEXT_TEMP_BEGIN() { String *valueAppend = strDup(varStr(valueVar)); strCat(valueAppend, ", "); strCat(valueAppend, strPtr(value)); kvPut(this->kv, keyVar, VARSTR(valueAppend)); } MEM_CONTEXT_TEMP_END(); } // Else store the key else kvPut(this->kv, keyVar, VARSTR(value)); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Get a value using the key ***********************************************************************************************************************************/ const String * httpHeaderGet(const HttpHeader *this, const String *key) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(HTTP_HEADER, this); FUNCTION_TEST_PARAM(STRING, key); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(key != NULL); FUNCTION_TEST_RETURN(varStr(kvGet(this->kv, VARSTR(key)))); } /*********************************************************************************************************************************** Get list of keys ***********************************************************************************************************************************/ StringList * httpHeaderList(const HttpHeader *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(HTTP_HEADER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(strLstSort(strLstNewVarLst(kvKeyList(this->kv)), sortOrderAsc)); } /*********************************************************************************************************************************** Put a header ***********************************************************************************************************************************/ HttpHeader * httpHeaderPut(HttpHeader *this, const String *key, const String *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(HTTP_HEADER, this); FUNCTION_TEST_PARAM(STRING, key); FUNCTION_TEST_PARAM(STRING, value); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(key != NULL); ASSERT(value != NULL); // Store the key kvPut(this->kv, VARSTR(key), VARSTR(value)); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Should the header be redacted when logging? ***********************************************************************************************************************************/ bool httpHeaderRedact(const HttpHeader *this, const String *key) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(HTTP_HEADER, this); FUNCTION_TEST_PARAM(STRING, key); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(key != NULL); FUNCTION_TEST_RETURN(this->redactList != NULL && strLstExists(this->redactList, key)); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * httpHeaderToLog(const HttpHeader *this) { String *result = strNew("{"); const StringList *keyList = httpHeaderList(this); for (unsigned int keyIdx = 0; keyIdx < strLstSize(keyList); keyIdx++) { const String *key = strLstGet(keyList, keyIdx); if (strSize(result) != 1) strCat(result, ", "); if (httpHeaderRedact(this, key)) strCatFmt(result, "%s: ", strPtr(key)); else strCatFmt(result, "%s: '%s'", strPtr(key), strPtr(httpHeaderGet(this, key))); } strCat(result, "}"); return result; } pgbackrest-release-2.24/src/common/io/http/header.h000066400000000000000000000064671362531507100222720ustar00rootroot00000000000000/*********************************************************************************************************************************** Http Header Object to track HTTP headers. Headers can be marked as redacted so they are not logged. ***********************************************************************************************************************************/ #ifndef COMMON_IO_HTTP_HEADER_H #define COMMON_IO_HTTP_HEADER_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define HTTP_HEADER_TYPE HttpHeader #define HTTP_HEADER_PREFIX httpHeader typedef struct HttpHeader HttpHeader; #include "common/type/stringList.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ HttpHeader *httpHeaderNew(const StringList *redactList); HttpHeader *httpHeaderDup(const HttpHeader *header, const StringList *redactList); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ HttpHeader *httpHeaderAdd(HttpHeader *this, const String *key, const String *value); const String *httpHeaderGet(const HttpHeader *this, const String *key); StringList *httpHeaderList(const HttpHeader *this); HttpHeader *httpHeaderMove(HttpHeader *this, MemContext *parentNew); HttpHeader *httpHeaderPut(HttpHeader *this, const String *header, const String *value); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ bool httpHeaderRedact(const HttpHeader *this, const String *key); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void httpHeaderFree(HttpHeader *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *httpHeaderToLog(const HttpHeader *this); #define FUNCTION_LOG_HTTP_HEADER_TYPE \ HttpHeader * #define FUNCTION_LOG_HTTP_HEADER_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, httpHeaderToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/io/http/query.c000066400000000000000000000147061362531507100221750ustar00rootroot00000000000000/*********************************************************************************************************************************** Http Query ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/io/http/common.h" #include "common/io/http/query.h" #include "common/memContext.h" #include "common/object.h" #include "common/type/keyValue.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct HttpQuery { MemContext *memContext; // Mem context KeyValue *kv; // KeyValue store }; OBJECT_DEFINE_MOVE(HTTP_QUERY); OBJECT_DEFINE_FREE(HTTP_QUERY); /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ HttpQuery * httpQueryNew(void) { FUNCTION_TEST_VOID(); HttpQuery *this = NULL; MEM_CONTEXT_NEW_BEGIN("HttpQuery") { // Allocate state and set context this = memNew(sizeof(HttpQuery)); *this = (HttpQuery) { .memContext = MEM_CONTEXT_NEW(), .kv = kvNew(), }; } MEM_CONTEXT_NEW_END(); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Add a query item ***********************************************************************************************************************************/ HttpQuery * httpQueryAdd(HttpQuery *this, const String *key, const String *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(HTTP_QUERY, this); FUNCTION_TEST_PARAM(STRING, key); FUNCTION_TEST_PARAM(STRING, value); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(key != NULL); ASSERT(value != NULL); // Make sure the key does not already exist const Variant *keyVar = VARSTR(key); if (kvGet(this->kv, keyVar) != NULL) THROW_FMT(AssertError, "key '%s' already exists", strPtr(key)); // Store the key kvPut(this->kv, keyVar, VARSTR(value)); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Get a value using the key ***********************************************************************************************************************************/ const String * httpQueryGet(const HttpQuery *this, const String *key) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(HTTP_QUERY, this); FUNCTION_TEST_PARAM(STRING, key); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(key != NULL); FUNCTION_TEST_RETURN(varStr(kvGet(this->kv, VARSTR(key)))); } /*********************************************************************************************************************************** Get list of keys ***********************************************************************************************************************************/ StringList * httpQueryList(const HttpQuery *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(HTTP_QUERY, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(strLstSort(strLstNewVarLst(kvKeyList(this->kv)), sortOrderAsc)); } /*********************************************************************************************************************************** Put a query item ***********************************************************************************************************************************/ HttpQuery * httpQueryPut(HttpQuery *this, const String *key, const String *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(HTTP_QUERY, this); FUNCTION_TEST_PARAM(STRING, key); FUNCTION_TEST_PARAM(STRING, value); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(key != NULL); ASSERT(value != NULL); // Store the key kvPut(this->kv, VARSTR(key), VARSTR(value)); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Render the query for inclusion in an http request ***********************************************************************************************************************************/ String * httpQueryRender(const HttpQuery *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(HTTP_QUERY, this); FUNCTION_TEST_END(); String *result = NULL; if (this != NULL) { const StringList *keyList = httpQueryList(this); if (strLstSize(keyList) > 0) { result = strNew(""); MEM_CONTEXT_TEMP_BEGIN() { for (unsigned int keyIdx = 0; keyIdx < strLstSize(keyList); keyIdx++) { if (strSize(result) != 0) strCat(result, "&"); strCatFmt( result, "%s=%s", strPtr(strLstGet(keyList, keyIdx)), strPtr(httpUriEncode(httpQueryGet(this, strLstGet(keyList, keyIdx)), false))); } } MEM_CONTEXT_TEMP_END(); } } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * httpQueryToLog(const HttpQuery *this) { String *result = strNew("{"); const StringList *keyList = httpQueryList(this); for (unsigned int keyIdx = 0; keyIdx < strLstSize(keyList); keyIdx++) { if (strSize(result) != 1) strCat(result, ", "); strCatFmt( result, "%s: '%s'", strPtr(strLstGet(keyList, keyIdx)), strPtr(httpQueryGet(this, strLstGet(keyList, keyIdx)))); } strCat(result, "}"); return result; } pgbackrest-release-2.24/src/common/io/http/query.h000066400000000000000000000055651362531507100222050ustar00rootroot00000000000000/*********************************************************************************************************************************** Http Query Object to track HTTP queries and output them with proper escaping. ***********************************************************************************************************************************/ #ifndef COMMON_IO_HTTP_QUERY_H #define COMMON_IO_HTTP_QUERY_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define HTTP_QUERY_TYPE HttpQuery #define HTTP_QUERY_PREFIX httpQuery typedef struct HttpQuery HttpQuery; #include "common/type/stringList.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ HttpQuery *httpQueryNew(void); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ HttpQuery *httpQueryAdd(HttpQuery *this, const String *key, const String *value); const String *httpQueryGet(const HttpQuery *this, const String *key); StringList *httpQueryList(const HttpQuery *this); HttpQuery *httpQueryMove(HttpQuery *this, MemContext *parentNew); HttpQuery *httpQueryPut(HttpQuery *this, const String *header, const String *value); String *httpQueryRender(const HttpQuery *this); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void httpQueryFree(HttpQuery *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *httpQueryToLog(const HttpQuery *this); #define FUNCTION_LOG_HTTP_QUERY_TYPE \ HttpQuery * #define FUNCTION_LOG_HTTP_QUERY_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, httpQueryToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/io/io.c000066400000000000000000000073211362531507100204530ustar00rootroot00000000000000/*********************************************************************************************************************************** IO Functions ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/io/filter/sink.h" #include "common/io/io.h" #include "common/log.h" /*********************************************************************************************************************************** Buffer size This buffer size will be used for all IO operations that require buffers not passed by the caller. Initially it is set to a conservative default with the expectation that it will be changed to a new value after options have been loaded. In general callers should set their buffer size using ioBufferSize() but there may be cases where an alternative buffer size makes sense. ***********************************************************************************************************************************/ #define IO_BUFFER_BLOCK_SIZE (8 * 1024) static size_t bufferSize = (8 * IO_BUFFER_BLOCK_SIZE); /*********************************************************************************************************************************** Get/set buffer size ***********************************************************************************************************************************/ size_t ioBufferSize(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(bufferSize); } void ioBufferSizeSet(size_t bufferSizeParam) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(SIZE, bufferSizeParam); FUNCTION_TEST_END(); bufferSize = bufferSizeParam; FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Read all IO into a buffer ***********************************************************************************************************************************/ Buffer * ioReadBuf(IoRead *read) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_READ, read); FUNCTION_TEST_END(); ASSERT(read != NULL); Buffer *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { // Read IO into the buffer result = bufNew(0); do { bufResize(result, bufSize(result) + ioBufferSize()); ioRead(read, result); } while (!ioReadEof(read)); // Resize the buffer and move to prior context bufResize(result, bufUsed(result)); bufMove(result, memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Read all IO but don't store it. Useful for calculating checksums, size, etc. ***********************************************************************************************************************************/ bool ioReadDrain(IoRead *read) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_READ, read); FUNCTION_TEST_END(); ASSERT(read != NULL); // Add a sink filter so we only need one read ioFilterGroupAdd(ioReadFilterGroup(read), ioSinkNew()); // Check if the IO can be opened bool result = ioReadOpen(read); if (result) { MEM_CONTEXT_TEMP_BEGIN() { // A single read that returns zero bytes ioRead(read, bufNew(1)); ASSERT(ioReadEof(read)); // Close the IO ioReadClose(read); } MEM_CONTEXT_TEMP_END(); } FUNCTION_TEST_RETURN(result); } pgbackrest-release-2.24/src/common/io/io.h000066400000000000000000000021121362531507100204510ustar00rootroot00000000000000/*********************************************************************************************************************************** IO Functions Common IO functions. ***********************************************************************************************************************************/ #ifndef COMMON_IO_IO_H #define COMMON_IO_IO_H #include #include /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ Buffer *ioReadBuf(IoRead *read); bool ioReadDrain(IoRead *read); /*********************************************************************************************************************************** Getters/Setters ***********************************************************************************************************************************/ size_t ioBufferSize(void); void ioBufferSizeSet(size_t bufferSize); #endif pgbackrest-release-2.24/src/common/io/read.c000066400000000000000000000362431362531507100207640ustar00rootroot00000000000000/*********************************************************************************************************************************** IO Read Interface ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/debug.h" #include "common/io/io.h" #include "common/io/read.intern.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct IoRead { MemContext *memContext; // Mem context void *driver; // Driver object IoReadInterface interface; // Driver interface IoFilterGroup *filterGroup; // IO filters Buffer *input; // Input buffer Buffer *output; // Output buffer (holds extra data from line read) bool eofAll; // Is the read done (read and filters complete)? #ifdef DEBUG bool opened; // Has the io been opened? bool closed; // Has the io been closed? #endif }; OBJECT_DEFINE_FREE(IO_READ); /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ IoRead * ioReadNew(void *driver, IoReadInterface interface) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM_P(VOID, driver); FUNCTION_LOG_PARAM(IO_READ_INTERFACE, interface); FUNCTION_LOG_END(); ASSERT(driver != NULL); ASSERT(interface.read != NULL); IoRead *this = NULL; MEM_CONTEXT_NEW_BEGIN("IoRead") { this = memNew(sizeof(IoRead)); *this = (IoRead) { .memContext = memContextCurrent(), .driver = driver, .interface = interface, .filterGroup = ioFilterGroupNew(), .input = bufNew(ioBufferSize()), }; } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(IO_READ, this); } /*********************************************************************************************************************************** Open the IO ***********************************************************************************************************************************/ bool ioReadOpen(IoRead *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_READ, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(!this->opened && !this->closed); ASSERT(ioFilterGroupSize(this->filterGroup) == 0 || !ioReadBlock(this)); // Open if the driver has an open function bool result = this->interface.open != NULL ? this->interface.open(this->driver) : true; // Only open the filter group if the read was opened if (result) ioFilterGroupOpen(this->filterGroup); #ifdef DEBUG this->opened = result; #endif FUNCTION_LOG_RETURN(BOOL, result); } /*********************************************************************************************************************************** Is the driver at EOF? This is different from the overall eof because filters may still be holding buffered data. ***********************************************************************************************************************************/ static bool ioReadEofDriver(const IoRead *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_READ, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->opened && !this->closed); FUNCTION_LOG_RETURN(BOOL, this->interface.eof != NULL ? this->interface.eof(this->driver) : false); } /*********************************************************************************************************************************** Read data from IO and process filters ***********************************************************************************************************************************/ static void ioReadInternal(IoRead *this, Buffer *buffer, bool block) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_READ, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_PARAM(BOOL, block); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(buffer != NULL); ASSERT(this->opened && !this->closed); // Loop until EOF or the output buffer is full size_t bufferUsedBegin = bufUsed(buffer); while (!this->eofAll && bufRemains(buffer) > 0) { // Process input buffer again to get more output if (ioFilterGroupInputSame(this->filterGroup)) { ioFilterGroupProcess(this->filterGroup, this->input, buffer); } // Else new input can be accepted else { // Read if not EOF if (!ioReadEofDriver(this)) { bufUsedZero(this->input); // If blocking then limit the amount of data requested if (ioReadBlock(this) && bufRemains(this->input) > bufRemains(buffer)) bufLimitSet(this->input, bufRemains(buffer)); this->interface.read(this->driver, this->input, block); bufLimitClear(this->input); } // Set input to NULL and flush (no need to actually free the buffer here as it will be freed with the mem context) else this->input = NULL; // Process the input buffer (or flush if NULL) if (this->input == NULL || bufUsed(this->input) > 0) ioFilterGroupProcess(this->filterGroup, this->input, buffer); // Stop if not blocking -- we don't need to fill the buffer as long as we got some data if (!block && bufUsed(buffer) > bufferUsedBegin) break; } // Eof when no more input and the filter group is done this->eofAll = ioReadEofDriver(this) && ioFilterGroupDone(this->filterGroup); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Read data and use buffered line read output when present ***********************************************************************************************************************************/ size_t ioRead(IoRead *this, Buffer *buffer) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_READ, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_PARAM(BUFFER, this->output); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(buffer != NULL); ASSERT(this->opened && !this->closed); // Store size of remaining portion of buffer to calculate total read at the end size_t outputRemains = bufRemains(buffer); // Use any data in the output buffer left over from a line read if (this->output != NULL && bufUsed(this->output) > 0 && bufRemains(buffer) > 0) { // Determine how much data should be copied size_t size = bufUsed(this->output) > bufRemains(buffer) ? bufRemains(buffer) : bufUsed(this->output); // Copy data to the user buffer bufCatSub(buffer, this->output, 0, size); // Remove copied data from the output buffer memmove(bufPtr(this->output), bufPtr(this->output) + size, bufUsed(this->output) - size); bufUsedSet(this->output, bufUsed(this->output) - size); } // Read data ioReadInternal(this, buffer, true); FUNCTION_LOG_RETURN(SIZE, outputRemains - bufRemains(buffer)); } /*********************************************************************************************************************************** Read linefeed-terminated string The entire string to search for must fit within a single buffer. ***********************************************************************************************************************************/ String * ioReadLineParam(IoRead *this, bool allowEof) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_READ, this); FUNCTION_LOG_PARAM(BOOL, allowEof); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->opened && !this->closed); // Allocate the output buffer if it has not already been allocated. This buffer is not allocated at object creation because it // is not always used. if (this->output == NULL) { MEM_CONTEXT_BEGIN(this->memContext) { this->output = bufNew(ioBufferSize()); } MEM_CONTEXT_END(); } // Search for a linefeed String *result = NULL; do { if (bufUsed(this->output) > 0) { // Search for a linefeed in the buffer char *linefeed = memchr(bufPtr(this->output), '\n', bufUsed(this->output)); // A linefeed was found so get the string if (linefeed != NULL) { // Get the string size size_t size = (size_t)(linefeed - (char *)bufPtr(this->output) + 1); // Create the string result = strNewN((char *)bufPtr(this->output), size - 1); // Remove string from the output buffer memmove(bufPtr(this->output), bufPtr(this->output) + size, bufUsed(this->output) - size); bufUsedSet(this->output, bufUsed(this->output) - size); } } // Read data if no linefeed was found in the existing buffer if (result == NULL) { if (bufFull(this->output)) THROW_FMT(FileReadError, "unable to find line in %zu byte buffer", bufSize(this->output)); if (ioReadEof(this)) { if (allowEof) result = strNewN((char *)bufPtr(this->output), bufUsed(this->output)); else THROW(FileReadError, "unexpected eof while reading line"); } else ioReadInternal(this, this->output, false); } } while (result == NULL); FUNCTION_LOG_RETURN(STRING, result); } /*********************************************************************************************************************************** Read linefeed-terminated string and error on eof ***********************************************************************************************************************************/ String * ioReadLine(IoRead *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_READ, this); FUNCTION_LOG_END(); FUNCTION_LOG_RETURN(STRING, ioReadLineParam(this, false)); } /*********************************************************************************************************************************** Close the IO ***********************************************************************************************************************************/ void ioReadClose(IoRead *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_READ, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->opened && !this->closed); // Close the filter group and gather results ioFilterGroupClose(this->filterGroup); // Close the driver if there is a close function if (this->interface.close != NULL) this->interface.close(this->driver); #ifdef DEBUG this->closed = true; #endif FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Do reads block when more bytes are requested than are available to read? ***********************************************************************************************************************************/ bool ioReadBlock(const IoRead *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_READ, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->interface.block); } /*********************************************************************************************************************************** Driver for the read object ***********************************************************************************************************************************/ void * ioReadDriver(IoRead *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_READ, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->driver); } /*********************************************************************************************************************************** Is IO at EOF? All driver reads are complete and all data has been flushed from the filters (if any). ***********************************************************************************************************************************/ bool ioReadEof(const IoRead *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_READ, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->opened && !this->closed); FUNCTION_LOG_RETURN(BOOL, this->eofAll); } /*********************************************************************************************************************************** Get filter group if filters need to be added ***********************************************************************************************************************************/ IoFilterGroup * ioReadFilterGroup(const IoRead *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_READ, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->filterGroup); } /*********************************************************************************************************************************** Handle (file descriptor) for the read object No all read objects have a handle and -1 will be returned in that case. ***********************************************************************************************************************************/ int ioReadHandle(const IoRead *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_READ, this); FUNCTION_LOG_END(); ASSERT(this != NULL); FUNCTION_LOG_RETURN(INT, this->interface.handle == NULL ? -1 : this->interface.handle(this->driver)); } /*********************************************************************************************************************************** Interface for the read object ***********************************************************************************************************************************/ const IoReadInterface * ioReadInterface(const IoRead *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_READ, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(&this->interface); } pgbackrest-release-2.24/src/common/io/read.h000066400000000000000000000061251362531507100207650ustar00rootroot00000000000000/*********************************************************************************************************************************** IO Read Interface Objects that read from some IO source (file, socket, etc.) are implemented using this interface. All objects are required to implement IoReadProcess and can optionally implement IoReadOpen, IoReadClose, or IoReadEof. IoReadOpen and IoReadClose can be used to allocate/open or deallocate/free resources. If IoReadEof is not implemented then ioReadEof() will always return false. An example of an IoRead object is IoBufferRead. ***********************************************************************************************************************************/ #ifndef COMMON_IO_READ_H #define COMMON_IO_READ_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define IO_READ_TYPE IoRead #define IO_READ_PREFIX ioRead typedef struct IoRead IoRead; #include "common/io/filter/group.h" #include "common/type/buffer.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ bool ioReadOpen(IoRead *this); size_t ioRead(IoRead *this, Buffer *buffer); String *ioReadLine(IoRead *this); String *ioReadLineParam(IoRead *this, bool allowEof); void ioReadClose(IoRead *this); /*********************************************************************************************************************************** Getters/Setters ***********************************************************************************************************************************/ bool ioReadBlock(const IoRead *this); bool ioReadEof(const IoRead *this); IoFilterGroup *ioReadFilterGroup(const IoRead *this); int ioReadHandle(const IoRead *this); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void ioReadFree(IoRead *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_IO_READ_TYPE \ IoRead * #define FUNCTION_LOG_IO_READ_FORMAT(value, buffer, bufferSize) \ objToLog(value, "IoRead", buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/io/read.intern.h000066400000000000000000000050301362531507100222550ustar00rootroot00000000000000/*********************************************************************************************************************************** IO Read Interface Internal ***********************************************************************************************************************************/ #ifndef COMMON_IO_READ_INTERN_H #define COMMON_IO_READ_INTERN_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #include "common/io/read.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ typedef struct IoReadInterface { bool block; // Do reads block when buffer is larger than available bytes? bool (*eof)(void *driver); void (*close)(void *driver); bool (*open)(void *driver); int (*handle)(const void *driver); size_t (*read)(void *driver, Buffer *buffer, bool block); } IoReadInterface; #define ioReadNewP(driver, ...) \ ioReadNew(driver, (IoReadInterface){__VA_ARGS__}) IoRead *ioReadNew(void *driver, IoReadInterface interface); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ void *ioReadDriver(IoRead *this); const IoReadInterface *ioReadInterface(const IoRead *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_IO_READ_INTERFACE_TYPE \ IoReadInterface #define FUNCTION_LOG_IO_READ_INTERFACE_FORMAT(value, buffer, bufferSize) \ objToLog(&value, "IoReadInterface", buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/io/tls/000077500000000000000000000000001362531507100204775ustar00rootroot00000000000000pgbackrest-release-2.24/src/common/io/tls/client.c000066400000000000000000000672541362531507100221370ustar00rootroot00000000000000/*********************************************************************************************************************************** TLS Client ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include #include #include #include #ifdef __FreeBSD__ #include #endif #include #include #include #include "common/crypto/common.h" #include "common/debug.h" #include "common/log.h" #include "common/io/tls/client.h" #include "common/io/io.h" #include "common/io/read.intern.h" #include "common/io/write.intern.h" #include "common/memContext.h" #include "common/object.h" #include "common/time.h" #include "common/type/keyValue.h" #include "common/wait.h" /*********************************************************************************************************************************** Statistics ***********************************************************************************************************************************/ static TlsClientStat tlsClientStatLocal; /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct TlsClient { MemContext *memContext; // Mem context String *host; // Hostname or IP address unsigned int port; // Port to connect to host on TimeMSec timeout; // Timeout for any i/o operation (connect, read, etc.) bool verifyPeer; // Should the peer (server) certificate be verified? SSL_CTX *context; // TLS context int socket; // Client socket SSL *session; // TLS session on the socket IoRead *read; // Read interface IoWrite *write; // Write interface }; OBJECT_DEFINE_FREE(TLS_CLIENT); /*********************************************************************************************************************************** Free connection ***********************************************************************************************************************************/ OBJECT_DEFINE_FREE_RESOURCE_BEGIN(TLS_CLIENT, LOG, logLevelTrace) { tlsClientClose(this); SSL_CTX_free(this->context); } OBJECT_DEFINE_FREE_RESOURCE_END(LOG); /*********************************************************************************************************************************** Report TLS errors. Returns true if the command should continue and false if it should exit. ***********************************************************************************************************************************/ static bool tlsError(TlsClient *this, int code) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(TLS_CLIENT, this); FUNCTION_LOG_PARAM(INT, code); FUNCTION_LOG_END(); bool result = false; switch (code) { // The connection was closed case SSL_ERROR_ZERO_RETURN: { tlsClientClose(this); break; } // Try the read/write again case SSL_ERROR_WANT_READ: case SSL_ERROR_WANT_WRITE: { result = true; break; } // A syscall failed (this usually indicates eof) case SSL_ERROR_SYSCALL: { // Get the error before closing so it is not cleared int errNo = errno; tlsClientClose(this); // Throw the sys error if there is one THROW_ON_SYS_ERROR(errNo, KernelError, "tls failed syscall"); break; } // Some other tls error that cannot be handled default: THROW_FMT(ServiceError, "tls error [%d]", code); } FUNCTION_LOG_RETURN(BOOL, result); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ TlsClient * tlsClientNew( const String *host, unsigned int port, TimeMSec timeout, bool verifyPeer, const String *caFile, const String *caPath) { FUNCTION_LOG_BEGIN(logLevelDebug) FUNCTION_LOG_PARAM(STRING, host); FUNCTION_LOG_PARAM(UINT, port); FUNCTION_LOG_PARAM(TIME_MSEC, timeout); FUNCTION_LOG_PARAM(BOOL, verifyPeer); FUNCTION_LOG_PARAM(STRING, caFile); FUNCTION_LOG_PARAM(STRING, caPath); FUNCTION_LOG_END(); ASSERT(host != NULL); TlsClient *this = NULL; MEM_CONTEXT_NEW_BEGIN("TlsClient") { this = memNew(sizeof(TlsClient)); *this = (TlsClient) { .memContext = MEM_CONTEXT_NEW(), .host = strDup(host), .port = port, .timeout = timeout, .verifyPeer = verifyPeer, // Initialize socket to -1 so we know when it is disconnected .socket = -1, }; // Setup TLS context // ------------------------------------------------------------------------------------------------------------------------- cryptoInit(); // Select the TLS method to use. To maintain compatibility with older versions of OpenSSL we need to use an SSL method, // but SSL versions will be excluded in SSL_CTX_set_options(). const SSL_METHOD *method = SSLv23_method(); cryptoError(method == NULL, "unable to load TLS method"); // Create the TLS context this->context = SSL_CTX_new(method); cryptoError(this->context == NULL, "unable to create TLS context"); memContextCallbackSet(this->memContext, tlsClientFreeResource, this); // Exclude SSL versions to only allow TLS and also disable compression SSL_CTX_set_options(this->context, (long)(SSL_OP_ALL | SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_COMPRESSION)); // Disable auto-retry to prevent SSL_read() from hanging SSL_CTX_clear_mode(this->context, SSL_MODE_AUTO_RETRY); // Set location of CA certificates if the server certificate will be verified // ------------------------------------------------------------------------------------------------------------------------- if (this->verifyPeer) { // If the user specified a location if (caFile != NULL || caPath != NULL) { cryptoError( SSL_CTX_load_verify_locations(this->context, strPtr(caFile), strPtr(caPath)) != 1, "unable to set user-defined CA certificate location"); } // Else use the defaults else cryptoError(SSL_CTX_set_default_verify_paths(this->context) != 1, "unable to set default CA certificate location"); } tlsClientStatLocal.object++; } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(TLS_CLIENT, this); } /*********************************************************************************************************************************** Convert an ASN1 string used in certificates to a String ***********************************************************************************************************************************/ static String * asn1ToStr(ASN1_STRING *nameAsn1) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, nameAsn1); FUNCTION_TEST_END(); // The name should not be null if (nameAsn1 == NULL) THROW(CryptoError, "TLS certificate name entry is missing"); FUNCTION_TEST_RETURN( strNewN( #if OPENSSL_VERSION_NUMBER < 0x10100000L (const char *)ASN1_STRING_data(nameAsn1), #else (const char *)ASN1_STRING_get0_data(nameAsn1), #endif (size_t)ASN1_STRING_length(nameAsn1))); } /*********************************************************************************************************************************** Check if a name from the server certificate matches the hostname Matching is always case-insensitive since DNS is case insensitive. ***********************************************************************************************************************************/ static bool tlsClientHostVerifyName(const String *host, const String *name) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, host); FUNCTION_LOG_PARAM(STRING, name); FUNCTION_LOG_END(); ASSERT(host != NULL); ASSERT(name != NULL); // Reject embedded nulls in certificate common or alternative name to prevent attacks like CVE-2009-4034 if (strlen(strPtr(name)) != strSize(name)) THROW(CryptoError, "TLS certificate name contains embedded null"); bool result = false; // Try an exact match if (strcasecmp(strPtr(name), strPtr(host)) == 0) { result = true; } // Else check if a wildcard certificate matches the host name // // The rules are: // 1. Only match the '*' character as wildcard // 2. Only match wildcards at the start of the string // 3. The '*' character does *not* match '.', meaning that we match only a single pathname component. // 4. Don't support more than one '*' in a single pattern. // // This is roughly in line with RFC2818, but contrary to what most browsers appear to be implementing (point 3 being the // difference) else if (strPtr(name)[0] == '*' && strPtr(name)[1] == '.' && strSize(name) > 2 && strSize(name) < strSize(host) && strcasecmp(strPtr(name) + 1, strPtr(host) + strSize(host) - strSize(name) + 1) == 0 && strChr(host, '.') >= (int)(strSize(host) - strSize(name))) { result = true; } FUNCTION_LOG_RETURN(BOOL, result); } /*********************************************************************************************************************************** Verify that the server certificate matches the hostname we connected to The certificate's Common Name and Subject Alternative Names are considered. ***********************************************************************************************************************************/ static bool tlsClientHostVerify(const String *host, X509 *certificate) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, host); FUNCTION_LOG_PARAM_P(VOID, certificate); FUNCTION_LOG_END(); ASSERT(host != NULL); bool result = false; // Error if the certificate is NULL if (certificate == NULL) THROW(CryptoError, "No certificate presented by the TLS server"); MEM_CONTEXT_TEMP_BEGIN() { // First get the subject alternative names from the certificate and compare them against the hostname STACK_OF(GENERAL_NAME) *altNameStack = (STACK_OF(GENERAL_NAME) *)X509_get_ext_d2i( certificate, NID_subject_alt_name, NULL, NULL); bool altNameFound = false; if (altNameStack) { for (int altNameIdx = 0; altNameIdx < sk_GENERAL_NAME_num(altNameStack); altNameIdx++) { const GENERAL_NAME *name = sk_GENERAL_NAME_value(altNameStack, altNameIdx); altNameFound = true; if (name->type == GEN_DNS) result = tlsClientHostVerifyName(host, asn1ToStr(name->d.dNSName)); if (result != false) break; } sk_GENERAL_NAME_free(altNameStack); } // If no subject alternative name was found then check the common name. Per RFC 2818 and RFC 6125, if the subjectAltName // extension of type dNSName is present the CN must be ignored. if (!altNameFound) { X509_NAME *subjectName = X509_get_subject_name(certificate); CHECK(subjectName != NULL); int commonNameIndex = X509_NAME_get_index_by_NID(subjectName, NID_commonName, -1); CHECK(commonNameIndex >= 0); result = tlsClientHostVerifyName( host, asn1ToStr(X509_NAME_ENTRY_get_data(X509_NAME_get_entry(subjectName, commonNameIndex)))); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, result); } /*********************************************************************************************************************************** Wait for the socket to be readable ***********************************************************************************************************************************/ static void tlsClientReadWait(TlsClient *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(TLS_CLIENT, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->session != NULL); // Initialize the file descriptor set used for select fd_set selectSet; FD_ZERO(&selectSet); // We know the socket is not negative because it passed error handling, so it is safe to cast to unsigned FD_SET((unsigned int)this->socket, &selectSet); // Initialize timeout struct used for select. Recreate this structure each time since Linux (at least) will modify it. struct timeval timeoutSelect; timeoutSelect.tv_sec = (time_t)(this->timeout / MSEC_PER_SEC); timeoutSelect.tv_usec = (time_t)(this->timeout % MSEC_PER_SEC * 1000); // Determine if there is data to be read int result = select(this->socket + 1, &selectSet, NULL, NULL, &timeoutSelect); THROW_ON_SYS_ERROR_FMT(result == -1, AssertError, "unable to select from '%s:%u'", strPtr(this->host), this->port); // If no data read after time allotted then error if (!result) { THROW_FMT( FileReadError, "timeout after %" PRIu64 "ms waiting for read from '%s:%u'", this->timeout, strPtr(this->host), this->port); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Read from the TLS session ***********************************************************************************************************************************/ size_t tlsClientRead(THIS_VOID, Buffer *buffer, bool block) { THIS(TlsClient); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(TLS_CLIENT, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_PARAM(BOOL, block); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->session != NULL); ASSERT(buffer != NULL); ASSERT(!bufFull(buffer)); ssize_t result = 0; // If blocking read keep reading until buffer is full do { // If no tls data pending then check the socket if (!SSL_pending(this->session)) tlsClientReadWait(this); // Read and handle errors size_t expectedBytes = bufRemains(buffer); result = SSL_read(this->session, bufRemainsPtr(buffer), (int)expectedBytes); if (result <= 0) { // Break if the error indicates that we should not continue trying if (!tlsError(this, SSL_get_error(this->session, (int)result))) break; } // Update amount of buffer used else bufUsedInc(buffer, (size_t)result); } while (block && bufRemains(buffer) > 0); FUNCTION_LOG_RETURN(SIZE, (size_t)result); } /*********************************************************************************************************************************** Write to the tls session ***********************************************************************************************************************************/ static bool tlsWriteContinue(TlsClient *this, int writeResult, int writeError, size_t writeSize) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(TLS_CLIENT, this); FUNCTION_LOG_PARAM(INT, writeResult); FUNCTION_LOG_PARAM(INT, writeError); FUNCTION_LOG_PARAM(SIZE, writeSize); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(writeSize > 0); bool result = true; // Handle errors if (writeResult <= 0) { // If error = SSL_ERROR_NONE then this is the first write attempt so continue if (writeError != SSL_ERROR_NONE) { // Error if the error indicates that we should not continue trying if (!tlsError(this, writeError)) THROW_FMT(FileWriteError, "unable to write to tls [%d]", writeError); // Wait for the socket to be readable for tls renegotiation tlsClientReadWait(this); } } else { if ((size_t)writeResult != writeSize) { THROW_FMT( FileWriteError, "unable to write to tls, write size %d does not match expected size %zu", writeResult, writeSize); } result = false; } FUNCTION_LOG_RETURN(BOOL, result); } void tlsClientWrite(THIS_VOID, const Buffer *buffer) { THIS(TlsClient); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(TLS_CLIENT, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->session != NULL); ASSERT(buffer != NULL); int result = 0; int error = SSL_ERROR_NONE; while (tlsWriteContinue(this, result, error, bufUsed(buffer))) { result = SSL_write(this->session, bufPtr(buffer), (int)bufUsed(buffer)); error = SSL_get_error(this->session, result); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Close the connection ***********************************************************************************************************************************/ void tlsClientClose(TlsClient *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(TLS_CLIENT, this); FUNCTION_LOG_END(); ASSERT(this != NULL); // Close the socket if (this->socket != -1) { close(this->socket); this->socket = -1; } // Free the TLS session if (this->session != NULL) { SSL_free(this->session); this->session = NULL; } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Has session been closed by the server? ***********************************************************************************************************************************/ bool tlsClientEof(THIS_VOID) { THIS(TlsClient); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(TLS_CLIENT, this); FUNCTION_LOG_END(); ASSERT(this != NULL); FUNCTION_LOG_RETURN(BOOL, this->session == NULL); } /*********************************************************************************************************************************** Open connection if this is a new client or if the connection was closed by the server ***********************************************************************************************************************************/ bool tlsClientOpen(TlsClient *this) { FUNCTION_LOG_BEGIN(logLevelTrace) FUNCTION_LOG_PARAM(TLS_CLIENT, this); FUNCTION_LOG_END(); ASSERT(this != NULL); bool result = false; if (this->session == NULL) { // Free the read/write interfaces ioReadFree(this->read); this->read = NULL; ioWriteFree(this->write); this->write = NULL; MEM_CONTEXT_TEMP_BEGIN() { bool connected = false; bool retry; Wait *wait = this->timeout > 0 ? waitNew(this->timeout) : NULL; do { // Assume there will be no retry retry = false; TRY_BEGIN() { // Set hits that narrow the type of address we are looking for -- we'll take ipv4 or ipv6 struct addrinfo hints = (struct addrinfo) { .ai_family = AF_UNSPEC, .ai_socktype = SOCK_STREAM, .ai_protocol = IPPROTO_TCP, }; // Convert the port to a zero-terminated string for use with getaddrinfo() char port[CVT_BASE10_BUFFER_SIZE]; cvtUIntToZ(this->port, port, sizeof(port)); // Get an address for the host. We are only going to try the first address returned. struct addrinfo *hostAddress; int result; if ((result = getaddrinfo(strPtr(this->host), port, &hints, &hostAddress)) != 0) { THROW_FMT( HostConnectError, "unable to get address for '%s': [%d] %s", strPtr(this->host), result, gai_strerror(result)); } // Connect to the host TRY_BEGIN() { this->socket = socket(hostAddress->ai_family, hostAddress->ai_socktype, hostAddress->ai_protocol); THROW_ON_SYS_ERROR(this->socket == -1, HostConnectError, "unable to create socket"); if (connect(this->socket, hostAddress->ai_addr, hostAddress->ai_addrlen) == -1) THROW_SYS_ERROR_FMT(HostConnectError, "unable to connect to '%s:%u'", strPtr(this->host), this->port); } FINALLY() { freeaddrinfo(hostAddress); } TRY_END(); // Enable TCP keepalives int socketValue = 1; THROW_ON_SYS_ERROR( setsockopt(this->socket, SOL_SOCKET, SO_KEEPALIVE, &socketValue, sizeof(int)) == -1, ProtocolError, "unable set SO_KEEPALIVE"); // Set per-connection keepalive options if they are available #ifdef TCP_KEEPIDLE socketValue = 3; THROW_ON_SYS_ERROR( setsockopt(this->socket, SOL_SOCKET, TCP_KEEPIDLE, &socketValue, sizeof(int)) == -1, ProtocolError, "unable set SO_KEEPIDLE"); THROW_ON_SYS_ERROR( setsockopt(this->socket, SOL_SOCKET, TCP_KEEPINTVL, &socketValue, sizeof(int)) == -1, ProtocolError, "unable set SO_KEEPINTVL"); socketValue = this->timeout / socketValue; THROW_ON_SYS_ERROR( setsockopt(this->socket, SOL_SOCKET, TCP_KEEPCNT, &socketValue, sizeof(int)) == -1, ProtocolError, "unable set SO_KEEPCNT"); #endif // Negotiate TLS cryptoError((this->session = SSL_new(this->context)) == NULL, "unable to create TLS context"); cryptoError(SSL_set_tlsext_host_name(this->session, strPtr(this->host)) != 1, "unable to set TLS host name"); cryptoError(SSL_set_fd(this->session, this->socket) != 1, "unable to add socket to TLS context"); cryptoError(SSL_connect(this->session) != 1, "unable to negotiate TLS connection"); // Connection was successful connected = true; } CATCH_ANY() { // Retry if wait time has not expired if (wait != NULL && waitMore(wait)) { LOG_DEBUG_FMT("retry %s: %s", errorTypeName(errorType()), errorMessage()); retry = true; tlsClientStatLocal.retry++; } tlsClientClose(this); } TRY_END(); } while (!connected && retry); if (!connected) RETHROW(); } MEM_CONTEXT_TEMP_END(); // Verify that the certificate presented by the server is valid if (this->verifyPeer) { // Verify that the chain of trust leads to a valid CA long int verifyResult = SSL_get_verify_result(this->session); if (verifyResult != X509_V_OK) { THROW_FMT( CryptoError, "unable to verify certificate presented by '%s:%u': [%ld] %s", strPtr(this->host), this->port, verifyResult, X509_verify_cert_error_string(verifyResult)); } // Verify that the hostname appears in the certificate X509 *certificate = SSL_get_peer_certificate(this->session); bool nameResult = tlsClientHostVerify(this->host, certificate); X509_free(certificate); if (!nameResult) { THROW_FMT( CryptoError, "unable to find hostname '%s' in certificate common name or subject alternative names", strPtr(this->host)); } } MEM_CONTEXT_BEGIN(this->memContext) { // Create read and write interfaces this->write = ioWriteNewP(this, .write = tlsClientWrite); ioWriteOpen(this->write); this->read = ioReadNewP(this, .block = true, .eof = tlsClientEof, .read = tlsClientRead); ioReadOpen(this->read); } MEM_CONTEXT_END(); tlsClientStatLocal.session++; result = true; } tlsClientStatLocal.request++; FUNCTION_LOG_RETURN(BOOL, result); } /*********************************************************************************************************************************** Format statistics to a string ***********************************************************************************************************************************/ String * tlsClientStatStr(void) { FUNCTION_TEST_VOID(); String *result = NULL; if (tlsClientStatLocal.object > 0) { result = strNewFmt( "tls statistics: objects %" PRIu64 ", sessions %" PRIu64 ", requests %" PRIu64 ", retries %" PRIu64, tlsClientStatLocal.object, tlsClientStatLocal.session, tlsClientStatLocal.request, tlsClientStatLocal.retry); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Get read interface ***********************************************************************************************************************************/ IoRead * tlsClientIoRead(const TlsClient *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(TLS_CLIENT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->read); } /*********************************************************************************************************************************** Get write interface ***********************************************************************************************************************************/ IoWrite * tlsClientIoWrite(const TlsClient *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(TLS_CLIENT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->write); } pgbackrest-release-2.24/src/common/io/tls/client.h000066400000000000000000000113221362531507100221250ustar00rootroot00000000000000/*********************************************************************************************************************************** TLS Client A simple, secure TLS client intended to allow access to services that are exposed via HTTPS. We call it TLS instead of SSL because SSL methods are disabled so only TLS connections are allowed. This object is intended to be used for multiple TLS connections against a service so tlsClientOpen() can be called each time a new connection is needed. By default, an open connection will be reused so the user must be prepared to retry their transaction on a read/write error if the server closes the connection before it is reused. If this behavior is not desirable then tlsClientClose() may be used to ensure that the next call to tlsClientOpen() will create a new TLS session. Note that tlsClientRead() is non-blocking unless there are *zero* bytes to be read from the session in which case it will raise an error after the defined timeout. In any case the tlsClientRead()/tlsClientWrite()/tlsClientEof() functions should not generally be called directly. Instead use the read/write interfaces available from tlsClientIoRead()/tlsClientIoWrite(). ***********************************************************************************************************************************/ #ifndef COMMON_IO_TLS_CLIENT_H #define COMMON_IO_TLS_CLIENT_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define TLS_CLIENT_TYPE TlsClient #define TLS_CLIENT_PREFIX tlsClient typedef struct TlsClient TlsClient; #include "common/io/read.h" #include "common/io/write.h" #include "common/time.h" #include "common/type/string.h" /*********************************************************************************************************************************** Statistics ***********************************************************************************************************************************/ typedef struct TlsClientStat { uint64_t object; // Objects created uint64_t session; // Sessions created uint64_t request; // Requests (i.e. calls to tlsClientOpen()) uint64_t retry; // Connection retries } TlsClientStat; /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ TlsClient *tlsClientNew( const String *host, unsigned int port, TimeMSec timeout, bool verifyPeer, const String *caFile, const String *caPath); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ bool tlsClientOpen(TlsClient *this); void tlsClientClose(TlsClient *this); String *tlsClientStatStr(void); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ IoRead *tlsClientIoRead(const TlsClient *this); IoWrite *tlsClientIoWrite(const TlsClient *this); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void tlsClientFree(TlsClient *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_TLS_CLIENT_TYPE \ TlsClient * #define FUNCTION_LOG_TLS_CLIENT_FORMAT(value, buffer, bufferSize) \ objToLog(value, "TlsClient", buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/io/write.c000066400000000000000000000254201362531507100211760ustar00rootroot00000000000000/*********************************************************************************************************************************** IO Write Interface ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/debug.h" #include "common/io/io.h" #include "common/io/write.intern.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct IoWrite { MemContext *memContext; // Mem context void *driver; // Driver object IoWriteInterface interface; // Driver interface IoFilterGroup *filterGroup; // IO filters Buffer *output; // Output buffer #ifdef DEBUG bool filterGroupSet; // Were filters set? bool opened; // Has the io been opened? bool closed; // Has the io been closed? #endif }; OBJECT_DEFINE_FREE(IO_WRITE); /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ IoWrite * ioWriteNew(void *driver, IoWriteInterface interface) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM_P(VOID, driver); FUNCTION_LOG_PARAM(IO_WRITE_INTERFACE, interface); FUNCTION_LOG_END(); ASSERT(driver != NULL); ASSERT(interface.write != NULL); IoWrite *this = NULL; MEM_CONTEXT_NEW_BEGIN("IoWrite") { this = memNew(sizeof(IoWrite)); *this = (IoWrite) { .memContext = memContextCurrent(), .driver = driver, .interface = interface, .filterGroup = ioFilterGroupNew(), .output = bufNew(ioBufferSize()), }; } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(IO_WRITE, this); } /*********************************************************************************************************************************** Open the IO ***********************************************************************************************************************************/ void ioWriteOpen(IoWrite *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_WRITE, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(!this->opened && !this->closed); if (this->interface.open != NULL) this->interface.open(this->driver); // Track whether filters were added to prevent flush() from being called later since flush() won't work with most filters #ifdef DEBUG this->filterGroupSet = ioFilterGroupSize(this->filterGroup) > 0; #endif // Open the filter group ioFilterGroupOpen(this->filterGroup); #ifdef DEBUG this->opened = true; #endif FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Write data to IO and process filters ***********************************************************************************************************************************/ void ioWrite(IoWrite *this, const Buffer *buffer) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_WRITE, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->opened && !this->closed); // Only write if there is data to write if (buffer != NULL && bufUsed(buffer) > 0) { do { ioFilterGroupProcess(this->filterGroup, buffer, this->output); // Write data if the buffer is full if (bufRemains(this->output) == 0) { this->interface.write(this->driver, this->output); bufUsedZero(this->output); } } while (ioFilterGroupInputSame(this->filterGroup)); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Write linefeed-terminated string ***********************************************************************************************************************************/ void ioWriteLine(IoWrite *this, const Buffer *buffer) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_WRITE, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(buffer != NULL); ioWrite(this, buffer); ioWrite(this, LF_BUF); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Write string ***********************************************************************************************************************************/ void ioWriteStr(IoWrite *this, const String *string) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_WRITE, this); FUNCTION_LOG_PARAM(STRING, string); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(string != NULL); ioWrite(this, BUFSTR(string)); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Write linefeed-terminated string ***********************************************************************************************************************************/ void ioWriteStrLine(IoWrite *this, const String *string) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_WRITE, this); FUNCTION_LOG_PARAM(STRING, string); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(string != NULL); ioWrite(this, BUFSTR(string)); ioWrite(this, LF_BUF); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Flush any data in the output buffer This does not end writing and if there are filters that are not done it might not have the intended effect. ***********************************************************************************************************************************/ void ioWriteFlush(IoWrite *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_WRITE, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->opened && !this->closed); ASSERT(!this->filterGroupSet); if (bufUsed(this->output) > 0) { this->interface.write(this->driver, this->output); bufUsedZero(this->output); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Close the IO and write any additional data that has not been written yet ***********************************************************************************************************************************/ void ioWriteClose(IoWrite *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_WRITE, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->opened && !this->closed); // Flush remaining data do { ioFilterGroupProcess(this->filterGroup, NULL, this->output); // Write data if the buffer is full or if this is the last buffer to be written if (bufRemains(this->output) == 0 || (ioFilterGroupDone(this->filterGroup) && bufUsed(this->output) > 0)) { this->interface.write(this->driver, this->output); bufUsedZero(this->output); } } while (!ioFilterGroupDone(this->filterGroup)); // Close the filter group and gather results ioFilterGroupClose(this->filterGroup); // Close the driver if there is a close function if (this->interface.close != NULL) this->interface.close(this->driver); #ifdef DEBUG this->closed = true; #endif FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Interface for the write object ***********************************************************************************************************************************/ void * ioWriteDriver(IoWrite *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_WRITE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->driver); } /*********************************************************************************************************************************** Get/set filters Filters must be set before open and cannot be reset. ***********************************************************************************************************************************/ IoFilterGroup * ioWriteFilterGroup(const IoWrite *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_WRITE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->filterGroup); } /*********************************************************************************************************************************** Handle (file descriptor) for the write object No all write objects have a handle and -1 will be returned in that case. ***********************************************************************************************************************************/ int ioWriteHandle(const IoWrite *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(IO_WRITE, this); FUNCTION_LOG_END(); ASSERT(this != NULL); FUNCTION_LOG_RETURN(INT, this->interface.handle == NULL ? -1 : this->interface.handle(this->driver)); } /*********************************************************************************************************************************** Interface for the write object ***********************************************************************************************************************************/ const IoWriteInterface * ioWriteInterface(const IoWrite *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_WRITE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(&this->interface); } pgbackrest-release-2.24/src/common/io/write.h000066400000000000000000000061101362531507100211760ustar00rootroot00000000000000/*********************************************************************************************************************************** IO Write Interface Objects that write to some IO destination (file, socket, etc.) are implemented using this interface. All objects are required to implement IoWriteProcess and can optionally implement IoWriteOpen or IoWriteClose. IoWriteOpen and IoWriteClose can be used to allocate/open or deallocate/free resources. An example of an IoWrite object is IoBufferWrite. ***********************************************************************************************************************************/ #ifndef COMMON_IO_WRITE_H #define COMMON_IO_WRITE_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define IO_WRITE_TYPE IoWrite #define IO_WRITE_PREFIX ioWrite typedef struct IoWrite IoWrite; #include "common/io/filter/group.h" #include "common/type/buffer.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void ioWriteOpen(IoWrite *this); void ioWrite(IoWrite *this, const Buffer *buffer); void ioWriteLine(IoWrite *this, const Buffer *buffer); void ioWriteStr(IoWrite *this, const String *string); void ioWriteStrLine(IoWrite *this, const String *string); void ioWriteFlush(IoWrite *this); void ioWriteClose(IoWrite *this); /*********************************************************************************************************************************** Getters/Setters ***********************************************************************************************************************************/ IoFilterGroup *ioWriteFilterGroup(const IoWrite *this); int ioWriteHandle(const IoWrite *this); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void ioWriteFree(IoWrite *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_IO_WRITE_TYPE \ IoWrite * #define FUNCTION_LOG_IO_WRITE_FORMAT(value, buffer, bufferSize) \ objToLog(value, "IoWrite", buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/io/write.intern.h000066400000000000000000000041611362531507100225000ustar00rootroot00000000000000/*********************************************************************************************************************************** IO Write Interface Internal ***********************************************************************************************************************************/ #ifndef COMMON_IO_WRITE_INTERN_H #define COMMON_IO_WRITE_INTERN_H #include "common/io/write.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ typedef struct IoWriteInterface { void (*close)(void *driver); int (*handle)(const void *driver); void (*open)(void *driver); void (*write)(void *driver, const Buffer *buffer); } IoWriteInterface; #define ioWriteNewP(driver, ...) \ ioWriteNew(driver, (IoWriteInterface){__VA_ARGS__}) IoWrite *ioWriteNew(void *driver, IoWriteInterface interface); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ void *ioWriteDriver(IoWrite *this); const IoWriteInterface *ioWriteInterface(const IoWrite *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_IO_WRITE_INTERFACE_TYPE \ IoWriteInterface #define FUNCTION_LOG_IO_WRITE_INTERFACE_FORMAT(value, buffer, bufferSize) \ objToLog(&value, "IoWriteInterface", buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/lock.c000066400000000000000000000241471362531507100203720ustar00rootroot00000000000000/*********************************************************************************************************************************** Lock Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include #include "common/debug.h" #include "common/io/handleWrite.h" #include "common/lock.h" #include "common/log.h" #include "common/memContext.h" #include "common/wait.h" #include "storage/helper.h" #include "storage/storage.intern.h" #include "version.h" /*********************************************************************************************************************************** Lock type names ***********************************************************************************************************************************/ static const char *const lockTypeName[] = { "archive", // lockTypeArchive "backup", // lockTypeBackup }; /*********************************************************************************************************************************** Mem context and local variables ***********************************************************************************************************************************/ static MemContext *lockMemContext = NULL; static String *lockFile[lockTypeAll]; static int lockHandle[lockTypeAll]; static LockType lockTypeHeld = lockTypeNone; /*********************************************************************************************************************************** Acquire a lock using a file on the local filesystem ***********************************************************************************************************************************/ static int lockAcquireFile(const String *lockFile, TimeMSec lockTimeout, bool failOnNoLock) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, lockFile); FUNCTION_LOG_PARAM(TIMEMSEC, lockTimeout); FUNCTION_LOG_PARAM(BOOL, failOnNoLock); FUNCTION_LOG_END(); int result = -1; MEM_CONTEXT_TEMP_BEGIN() { Wait *wait = lockTimeout != 0 ? waitNew(lockTimeout) : NULL; bool retry = false; int errNo = 0; do { // Attempt to open the file if ((result = open(strPtr(lockFile), O_WRONLY | O_CREAT, STORAGE_MODE_FILE_DEFAULT)) == -1) { // Save the error for reporting outside the loop errNo = errno; // If the path does not exist then create it if (errNo == ENOENT) { storagePathCreateP(storageLocalWrite(), strPath(lockFile)); retry = true; } } else { // Attempt to lock the file if (flock(result, LOCK_EX | LOCK_NB) == -1) { // Save the error for reporting outside the loop errNo = errno; // Close the file and reset the handle close(result); result = -1; } } } while (result == -1 && ((wait != NULL && waitMore(wait)) || retry)); waitFree(wait); // If the lock was not successful if (result == -1) { // Error when requested if (failOnNoLock) { const String *errorHint = NULL; if (errNo == EWOULDBLOCK) errorHint = strNew("\nHINT: is another " PROJECT_NAME " process running?"); else if (errNo == EACCES) { errorHint = strNewFmt( "\nHINT: does the user running " PROJECT_NAME " have permissions on the '%s' file?", strPtr(lockFile)); } THROW_FMT( LockAcquireError, "unable to acquire lock on file '%s': %s%s", strPtr(lockFile), strerror(errNo), errorHint == NULL ? "" : strPtr(errorHint)); } } else { // Write pid of the current process ioHandleWriteOneStr(result, strNewFmt("%d\n", getpid())); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(INT, result); } /*********************************************************************************************************************************** Release the current lock ***********************************************************************************************************************************/ static void lockReleaseFile(int lockHandle, const String *lockFile) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(INT, lockHandle); FUNCTION_LOG_PARAM(STRING, lockFile); FUNCTION_LOG_END(); // Can't release lock if there isn't one ASSERT(lockHandle != -1); // Remove file first and then close it to release the lock. If we close it first then another process might grab the lock // right before the delete which means the file locked by the other process will get deleted. storageRemoveP(storageLocalWrite(), lockFile); close(lockHandle); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Acquire a lock type This will involve locking one or more files on disk depending on the lock type. Most operations only take a single lock (archive or backup), but the stanza commands all need to lock both. ***********************************************************************************************************************************/ bool lockAcquire(const String *lockPath, const String *stanza, LockType lockType, TimeMSec lockTimeout, bool failOnNoLock) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, lockPath); FUNCTION_LOG_PARAM(STRING, stanza); FUNCTION_LOG_PARAM(ENUM, lockType); FUNCTION_LOG_PARAM(TIMEMSEC, lockTimeout); FUNCTION_LOG_PARAM(BOOL, failOnNoLock); FUNCTION_LOG_END(); bool result = false; // Don't allow failures when locking more than one file. This makes cleanup difficult and there are no known use cases. ASSERT(failOnNoLock || lockType != lockTypeAll); // Don't allow another lock if one is already held if (lockTypeHeld != lockTypeNone) THROW(AssertError, "lock is already held by this process"); // Allocate a mem context to hold lock filenames if one does not already exist if (lockMemContext == NULL) { MEM_CONTEXT_BEGIN(memContextTop()) { MEM_CONTEXT_NEW_BEGIN("Lock") { lockMemContext = MEM_CONTEXT_NEW(); } MEM_CONTEXT_NEW_END(); } MEM_CONTEXT_END(); } // Lock files MEM_CONTEXT_BEGIN(lockMemContext) { LockType lockMin = lockType == lockTypeAll ? lockTypeArchive : lockType; LockType lockMax = lockType == lockTypeAll ? (lockTypeAll - 1) : lockType; bool error = false; for (LockType lockIdx = lockMin; lockIdx <= lockMax; lockIdx++) { lockFile[lockIdx] = strNewFmt("%s/%s-%s" LOCK_FILE_EXT, strPtr(lockPath), strPtr(stanza), lockTypeName[lockIdx]); lockHandle[lockIdx] = lockAcquireFile(lockFile[lockIdx], lockTimeout, failOnNoLock); if (lockHandle[lockIdx] == -1) { error = true; break; } } if (!error) { lockTypeHeld = lockType; result = true; } } MEM_CONTEXT_END(); FUNCTION_LOG_RETURN(BOOL, result); } /*********************************************************************************************************************************** Clear the lock without releasing it. This is used by a master process after it has spawned a child so the child can keep the lock and the master process won't try to free it. ***********************************************************************************************************************************/ bool lockClear(bool failOnNoLock) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(BOOL, failOnNoLock); FUNCTION_LOG_END(); bool result = false; if (lockTypeHeld == lockTypeNone) { if (failOnNoLock) THROW(AssertError, "no lock is held by this process"); } else { // Clear locks LockType lockMin = lockTypeHeld == lockTypeAll ? lockTypeArchive : lockTypeHeld; LockType lockMax = lockTypeHeld == lockTypeAll ? (lockTypeAll - 1) : lockTypeHeld; for (LockType lockIdx = lockMin; lockIdx <= lockMax; lockIdx++) strFree(lockFile[lockIdx]); lockTypeHeld = lockTypeNone; result = true; } FUNCTION_LOG_RETURN(BOOL, result); } /*********************************************************************************************************************************** Release a lock type ***********************************************************************************************************************************/ bool lockRelease(bool failOnNoLock) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(BOOL, failOnNoLock); FUNCTION_LOG_END(); bool result = false; if (lockTypeHeld == lockTypeNone) { if (failOnNoLock) THROW(AssertError, "no lock is held by this process"); } else { // Release locks LockType lockMin = lockTypeHeld == lockTypeAll ? lockTypeArchive : lockTypeHeld; LockType lockMax = lockTypeHeld == lockTypeAll ? (lockTypeAll - 1) : lockTypeHeld; for (LockType lockIdx = lockMin; lockIdx <= lockMax; lockIdx++) { lockReleaseFile(lockHandle[lockIdx], lockFile[lockIdx]); strFree(lockFile[lockIdx]); } lockTypeHeld = lockTypeNone; result = true; } FUNCTION_LOG_RETURN(BOOL, result); } pgbackrest-release-2.24/src/common/lock.h000066400000000000000000000030741362531507100203730ustar00rootroot00000000000000/*********************************************************************************************************************************** Lock Handler ***********************************************************************************************************************************/ #ifndef COMMON_LOCK_H #define COMMON_LOCK_H /*********************************************************************************************************************************** Lock types ***********************************************************************************************************************************/ typedef enum { lockTypeArchive, lockTypeBackup, lockTypeAll, lockTypeNone, } LockType; #include "common/type/string.h" #include "common/time.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define LOCK_FILE_EXT ".lock" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ bool lockAcquire(const String *lockPath, const String *stanza, LockType lockType, TimeMSec lockTimeout, bool failOnNoLock); bool lockClear(bool failOnNoLock); bool lockRelease(bool failOnNoLock); #endif pgbackrest-release-2.24/src/common/log.c000066400000000000000000000462131362531507100202210ustar00rootroot00000000000000/*********************************************************************************************************************************** Log Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include #include #include #include #include "common/debug.h" #include "common/error.h" #include "common/log.h" #include "common/time.h" /*********************************************************************************************************************************** Module variables ***********************************************************************************************************************************/ // Log levels DEBUG_UNIT_EXTERN LogLevel logLevelStdOut = logLevelError; DEBUG_UNIT_EXTERN LogLevel logLevelStdErr = logLevelError; DEBUG_UNIT_EXTERN LogLevel logLevelFile = logLevelOff; DEBUG_UNIT_EXTERN LogLevel logLevelAny = logLevelError; // Log file handles DEBUG_UNIT_EXTERN int logHandleStdOut = STDOUT_FILENO; DEBUG_UNIT_EXTERN int logHandleStdErr = STDERR_FILENO; DEBUG_UNIT_EXTERN int logHandleFile = -1; // Has the log file banner been written yet? DEBUG_UNIT_EXTERN bool logFileBanner = false; // Is the timestamp printed in the log? DEBUG_UNIT_EXTERN bool logTimestamp = false; // Size of the process id field DEBUG_UNIT_EXTERN int logProcessSize = 2; /*********************************************************************************************************************************** Test Asserts ***********************************************************************************************************************************/ #define ASSERT_LOG_LEVEL(logLevel) \ ASSERT(logLevel >= LOG_LEVEL_MIN && logLevel <= LOG_LEVEL_MAX) /*********************************************************************************************************************************** Log buffer -- used to format log header and message ***********************************************************************************************************************************/ static char logBuffer[LOG_BUFFER_SIZE]; /*********************************************************************************************************************************** Convert log level to string and vice versa ***********************************************************************************************************************************/ #define LOG_LEVEL_TOTAL (LOG_LEVEL_MAX + 1) static const char *const logLevelList[LOG_LEVEL_TOTAL] = { "OFF", "ASSERT", "ERROR", "PROTOCOL", "WARN", "INFO", "DETAIL", "DEBUG", "TRACE", }; LogLevel logLevelEnum(const char *logLevel) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, logLevel); FUNCTION_TEST_END(); ASSERT(logLevel != NULL); LogLevel result = logLevelOff; // Search for the log level for (; result < LOG_LEVEL_TOTAL; result++) if (strcasecmp(logLevel, logLevelList[result]) == 0) break; // If the log level was not found if (result == LOG_LEVEL_TOTAL) THROW_FMT(AssertError, "log level '%s' not found", logLevel); FUNCTION_TEST_RETURN(result); } const char * logLevelStr(LogLevel logLevel) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, logLevel); FUNCTION_TEST_END(); ASSERT(logLevel <= LOG_LEVEL_MAX); FUNCTION_TEST_RETURN(logLevelList[logLevel]); } /*********************************************************************************************************************************** Check if a log level will be logged to any output This is useful for log messages that are expensive to generate and should be skipped if they will be discarded. ***********************************************************************************************************************************/ DEBUG_UNIT_EXTERN void logAnySet(void) { FUNCTION_TEST_VOID(); logLevelAny = logLevelStdOut; if (logLevelStdErr > logLevelAny) logLevelAny = logLevelStdErr; if (logLevelFile > logLevelAny && logHandleFile != -1) logLevelAny = logLevelFile; FUNCTION_TEST_RETURN_VOID(); } bool logAny(LogLevel logLevel) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, logLevel); FUNCTION_TEST_END(); ASSERT_LOG_LEVEL(logLevel); FUNCTION_TEST_RETURN(logLevel <= logLevelAny); } /*********************************************************************************************************************************** Initialize the log system ***********************************************************************************************************************************/ void logInit( LogLevel logLevelStdOutParam, LogLevel logLevelStdErrParam, LogLevel logLevelFileParam, bool logTimestampParam, unsigned int logProcessMax) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, logLevelStdOutParam); FUNCTION_TEST_PARAM(ENUM, logLevelStdErrParam); FUNCTION_TEST_PARAM(ENUM, logLevelFileParam); FUNCTION_TEST_PARAM(BOOL, logTimestampParam); FUNCTION_TEST_END(); ASSERT(logLevelStdOutParam <= LOG_LEVEL_MAX); ASSERT(logLevelStdErrParam <= LOG_LEVEL_MAX); ASSERT(logLevelFileParam <= LOG_LEVEL_MAX); ASSERT(logProcessMax <= 999); logLevelStdOut = logLevelStdOutParam; logLevelStdErr = logLevelStdErrParam; logLevelFile = logLevelFileParam; logTimestamp = logTimestampParam; logProcessSize = logProcessMax > 99 ? 3 : 2; logAnySet(); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Close the log file ***********************************************************************************************************************************/ static void logFileClose(void) { FUNCTION_TEST_VOID(); // Close the file handle if it is open if (logHandleFile != -1) { close(logHandleFile); logHandleFile = -1; } logAnySet(); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Set the log file Returns true if file logging is off or the log file was successfully opened, false if the log file could not be opened. ***********************************************************************************************************************************/ bool logFileSet(const char *logFile) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, logFile); FUNCTION_TEST_END(); ASSERT(logFile != NULL); // Close the log file if it is already open logFileClose(); // Only open the file if there is a chance to log something bool result = true; if (logLevelFile != logLevelOff) { // Open the file and handle errors logHandleFile = open(logFile, O_CREAT | O_APPEND | O_WRONLY, 0640); if (logHandleFile == -1) { int errNo = errno; LOG_WARN_FMT( "unable to open log file '%s': %s\nNOTE: process will continue without log file.", logFile, strerror(errNo)); result = false; } // Output the banner on first log message logFileBanner = false; logAnySet(); } logAnySet(); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Close the log system ***********************************************************************************************************************************/ void logClose(void) { FUNCTION_TEST_VOID(); // Disable all logging logInit(logLevelOff, logLevelOff, logLevelOff, false, 1); // Close the log file if it is open logFileClose(); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Determine if the log level is in the specified range ***********************************************************************************************************************************/ static bool logRange(LogLevel logLevel, LogLevel logRangeMin, LogLevel logRangeMax) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, logLevel); FUNCTION_TEST_PARAM(ENUM, logRangeMin); FUNCTION_TEST_PARAM(ENUM, logRangeMax); FUNCTION_TEST_END(); ASSERT_LOG_LEVEL(logLevel); ASSERT_LOG_LEVEL(logRangeMin); ASSERT_LOG_LEVEL(logRangeMax); ASSERT(logRangeMin <= logRangeMax); FUNCTION_TEST_RETURN(logLevel >= logRangeMin && logLevel <= logRangeMax); } /*********************************************************************************************************************************** Internal write function that handles errors ***********************************************************************************************************************************/ static void logWrite(int handle, const char *message, size_t messageSize, const char *errorDetail) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT, handle); FUNCTION_TEST_PARAM(STRINGZ, message); FUNCTION_TEST_PARAM(SIZE, messageSize); FUNCTION_TEST_PARAM(STRINGZ, errorDetail); FUNCTION_TEST_END(); ASSERT(handle != -1); ASSERT(message != NULL); ASSERT(messageSize != 0); ASSERT(errorDetail != NULL); if ((size_t)write(handle, message, messageSize) != messageSize) THROW_SYS_ERROR_FMT(FileWriteError, "unable to write %s", errorDetail); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Write out log message and indent subsequent lines ***********************************************************************************************************************************/ static void logWriteIndent(int handle, const char *message, size_t indentSize, const char *errorDetail) { // Indent buffer -- used to write out indent space without having to loop static const char indentBuffer[] = " "; FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT, handle); FUNCTION_TEST_PARAM(STRINGZ, message); FUNCTION_TEST_PARAM(SIZE, indentSize); FUNCTION_TEST_PARAM(STRINGZ, errorDetail); FUNCTION_TEST_END(); ASSERT(handle != -1); ASSERT(message != NULL); ASSERT(indentSize > 0 && indentSize < sizeof(indentBuffer)); ASSERT(errorDetail != NULL); // Indent all lines after the first const char *linefeedPtr = strchr(message, '\n'); bool first = true; while (linefeedPtr != NULL) { if (!first) logWrite(handle, indentBuffer, indentSize, errorDetail); else first = false; logWrite(handle, message, (size_t)(linefeedPtr - message + 1), errorDetail); message += (size_t)(linefeedPtr - message + 1); linefeedPtr = strchr(message, '\n'); } FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Generate the log header and anything else that needs to happen before the message is output ***********************************************************************************************************************************/ typedef struct LogPreResult { size_t bufferPos; char *logBufferStdErr; size_t indentSize; } LogPreResult; static LogPreResult logPre(LogLevel logLevel, unsigned int processId, const char *fileName, const char *functionName, int code) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, logLevel); FUNCTION_TEST_PARAM(UINT, processId); FUNCTION_TEST_PARAM(STRINGZ, fileName); FUNCTION_TEST_PARAM(STRINGZ, functionName); FUNCTION_TEST_PARAM(INT, code); FUNCTION_TEST_END(); ASSERT_LOG_LEVEL(logLevel); ASSERT(fileName != NULL); ASSERT(functionName != NULL); ASSERT( (code == 0 && logLevel > logLevelError) || (logLevel == logLevelError && code != errorTypeCode(&AssertError)) || (logLevel == logLevelAssert && code == errorTypeCode(&AssertError))); // Initialize buffer position LogPreResult result = {.bufferPos = 0}; // Add time if (logTimestamp) { TimeMSec logTimeMSec = timeMSec(); time_t logTimeSec = (time_t)(logTimeMSec / MSEC_PER_SEC); result.bufferPos += strftime( logBuffer + result.bufferPos, sizeof(logBuffer) - result.bufferPos, "%Y-%m-%d %H:%M:%S", localtime(&logTimeSec)); result.bufferPos += (size_t)snprintf( logBuffer + result.bufferPos, sizeof(logBuffer) - result.bufferPos, ".%03d ", (int)(logTimeMSec % 1000)); } // Add process and aligned log level result.bufferPos += (size_t)snprintf( logBuffer + result.bufferPos, sizeof(logBuffer) - result.bufferPos, "P%0*u %*s: ", logProcessSize, processId, 6, logLevelStr(logLevel)); // When writing to stderr the timestamp, process, and log level alignment will be skipped result.logBufferStdErr = logBuffer + result.bufferPos - strlen(logLevelStr(logLevel)) - 2; // Set the indent size -- this will need to be adjusted for stderr result.indentSize = result.bufferPos; // Add error code if (code != 0) result.bufferPos += (size_t)snprintf(logBuffer + result.bufferPos, sizeof(logBuffer) - result.bufferPos, "[%03d]: ", code); // Add debug info if (logLevel >= logLevelDebug) { // Adding padding for debug and trace levels for (unsigned int paddingIdx = 0; paddingIdx < ((logLevel - logLevelDebug + 1) * 4); paddingIdx++) { logBuffer[result.bufferPos++] = ' '; result.indentSize++; } result.bufferPos += (size_t)snprintf( logBuffer + result.bufferPos, LOG_BUFFER_SIZE - result.bufferPos, "%.*s::%s: ", (int)strlen(fileName) - 2, fileName, functionName); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Finalize formatting and log after the message has been added to the buffer ***********************************************************************************************************************************/ static void logPost(LogPreResult *logData, LogLevel logLevel, LogLevel logRangeMin, LogLevel logRangeMax) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(SIZE, logData->bufferPos); FUNCTION_TEST_PARAM(STRINGZ, logData->logBufferStdErr); FUNCTION_TEST_PARAM(SIZE, logData->indentSize); FUNCTION_TEST_PARAM(ENUM, logLevel); FUNCTION_TEST_PARAM(ENUM, logRangeMin); FUNCTION_TEST_PARAM(ENUM, logRangeMax); FUNCTION_TEST_END(); ASSERT_LOG_LEVEL(logLevel); ASSERT_LOG_LEVEL(logRangeMin); ASSERT_LOG_LEVEL(logRangeMax); ASSERT(logRangeMin <= logRangeMax); // Add linefeed logBuffer[logData->bufferPos++] = '\n'; logBuffer[logData->bufferPos] = 0; // Determine where to log the message based on log-level-stderr if (logLevel <= logLevelStdErr) { if (logRange(logLevelStdErr, logRangeMin, logRangeMax)) { logWriteIndent( logHandleStdErr, logData->logBufferStdErr, logData->indentSize - (size_t)(logData->logBufferStdErr - logBuffer), "log to stderr"); } } else if (logLevel <= logLevelStdOut && logRange(logLevelStdOut, logRangeMin, logRangeMax)) logWriteIndent(logHandleStdOut, logBuffer, logData->indentSize, "log to stdout"); // Log to file if (logLevel <= logLevelFile && logHandleFile != -1 && logRange(logLevelFile, logRangeMin, logRangeMax)) { // If the banner has not been written if (!logFileBanner) { // Add a blank line if the file already has content if (lseek(logHandleFile, 0, SEEK_END) > 0) logWrite(logHandleFile, "\n", 1, "banner spacing to file"); // Write process start banner const char *banner = "-------------------PROCESS START-------------------\n"; logWrite(logHandleFile, banner, strlen(banner), "banner to file"); // Mark banner as written logFileBanner = true; } logWriteIndent(logHandleFile, logBuffer, logData->indentSize, "log to file"); } FUNCTION_TEST_RETURN_VOID(); } /**********************************************************************************************************************************/ void logInternal( LogLevel logLevel, LogLevel logRangeMin, LogLevel logRangeMax, unsigned int processId, const char *fileName, const char *functionName, int code, const char *message) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, logLevel); FUNCTION_TEST_PARAM(ENUM, logRangeMin); FUNCTION_TEST_PARAM(ENUM, logRangeMax); FUNCTION_TEST_PARAM(UINT, processId); FUNCTION_TEST_PARAM(STRINGZ, fileName); FUNCTION_TEST_PARAM(STRINGZ, functionName); FUNCTION_TEST_PARAM(INT, code); FUNCTION_TEST_PARAM(STRINGZ, message); FUNCTION_TEST_END(); ASSERT(message != NULL); LogPreResult logData = logPre(logLevel, processId, fileName, functionName, code); // Copy message into buffer and update buffer position strncpy(logBuffer + logData.bufferPos, message, sizeof(logBuffer) - logData.bufferPos); logBuffer[sizeof(logBuffer) - 1] = 0; logData.bufferPos += strlen(logBuffer + logData.bufferPos); logPost(&logData, logLevel, logRangeMin, logRangeMax); FUNCTION_TEST_RETURN_VOID(); } /**********************************************************************************************************************************/ void logInternalFmt( LogLevel logLevel, LogLevel logRangeMin, LogLevel logRangeMax, unsigned int processId, const char *fileName, const char *functionName, int code, const char *format, ...) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, logLevel); FUNCTION_TEST_PARAM(ENUM, logRangeMin); FUNCTION_TEST_PARAM(ENUM, logRangeMax); FUNCTION_TEST_PARAM(UINT, processId); FUNCTION_TEST_PARAM(STRINGZ, fileName); FUNCTION_TEST_PARAM(STRINGZ, functionName); FUNCTION_TEST_PARAM(INT, code); FUNCTION_TEST_PARAM(STRINGZ, format); FUNCTION_TEST_END(); ASSERT(format != NULL); LogPreResult logData = logPre(logLevel, processId, fileName, functionName, code); // Format message into buffer and update buffer position va_list argumentList; va_start(argumentList, format); logData.bufferPos += (size_t)vsnprintf( logBuffer + logData.bufferPos, LOG_BUFFER_SIZE - logData.bufferPos, format, argumentList); va_end(argumentList); logPost(&logData, logLevel, logRangeMin, logRangeMax); FUNCTION_TEST_RETURN_VOID(); } pgbackrest-release-2.24/src/common/log.h000066400000000000000000000260251362531507100202250ustar00rootroot00000000000000/*********************************************************************************************************************************** Log Handler ***********************************************************************************************************************************/ #ifndef COMMON_LOG_H #define COMMON_LOG_H #include #include "common/logLevel.h" /*********************************************************************************************************************************** Max size allowed for a single log message including header ***********************************************************************************************************************************/ #ifndef LOG_BUFFER_SIZE #define LOG_BUFFER_SIZE ((size_t)(32 * 1024)) #endif /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void logInit( LogLevel logLevelStdOutParam, LogLevel logLevelStdErrParam, LogLevel logLevelFileParam, bool logTimestampParam, unsigned int logProcessMax); void logClose(void); bool logFileSet(const char *logFile); bool logAny(LogLevel logLevel); LogLevel logLevelEnum(const char *logLevel); const char *logLevelStr(LogLevel logLevel); /*********************************************************************************************************************************** Macros Macros only call logInternal()/logInternalFmt() if the message will be logged to one of the available outputs. The also simplify each call site by supplying commonly-used values. Note that it's possible that that not all the macros below will appear in the code. In particular the ERROR and ASSERT macros should not be used directly. They are included for completeness and future usage. ***********************************************************************************************************************************/ // Define a macro to test logAny() that can be removed when performing coverage testing. Checking logAny() saves a function call // for logging calls that won't be output anywhere, but since the macro contains a branch it causes coverage problems. #ifdef DEBUG_COVERAGE #define IF_LOG_ANY(logLevel) #else #define IF_LOG_ANY(logLevel) \ if (logAny(logLevel)) #endif #define LOG_INTERNAL(logLevel, logRangeMin, logRangeMax, processId, code, message) \ do \ { \ IF_LOG_ANY(logLevel) \ { \ logInternal(logLevel, logRangeMin, logRangeMax, processId, __FILE__, __func__, code, message); \ } \ } while (0) #define LOG_INTERNAL_FMT(logLevel, logRangeMin, logRangeMax, processId, code, ...) \ do \ { \ IF_LOG_ANY(logLevel) \ { \ logInternalFmt(logLevel, logRangeMin, logRangeMax, processId, __FILE__, __func__, code, __VA_ARGS__); \ } \ } while (0) #define LOG_PID(logLevel, processId, code, message) \ LOG_INTERNAL(logLevel, LOG_LEVEL_MIN, LOG_LEVEL_MAX, processId, code, message) #define LOG_ASSERT_PID(processId, message) \ LOG_PID(logLevelAssert, processId, errorTypeCode(&AssertError), message) #define LOG_ERROR_PID(processId, code, message) \ LOG_PID(logLevelError, processId, code, message) #define LOG_WARN_PID(processId, message) \ LOG_PID(logLevelWarn, processId, 0, message) #define LOG_INFO_PID(processId, message) \ LOG_PID(logLevelInfo, processId, 0, message) #define LOG_DETAIL_PID(processId, message) \ LOG_PID(logLevelDetail, processId, 0, message) #define LOG_DEBUG_PID(processId, message) \ LOG_PID(logLevelDebug, processId, 0, message) #define LOG_TRACE_PID(processId, message) \ LOG_PID(logLevelTrace, processId, 0, message) #define LOG_PID_FMT(logLevel, processId, code, ...) \ LOG_INTERNAL_FMT(logLevel, LOG_LEVEL_MIN, LOG_LEVEL_MAX, processId, code, __VA_ARGS__) #define LOG_ASSERT_PID_FMT(processId, ...) \ LOG_PID_FMT(logLevelAssert, processId, errorTypeCode(&AssertError), __VA_ARGS__) #define LOG_ERROR_PID_FMT(processId, code, ...) \ LOG_PID_FMT(logLevelError, processId, code, __VA_ARGS__) #define LOG_WARN_PID_FMT(processId, ...) \ LOG_PID_FMT(logLevelWarn, processId, 0, __VA_ARGS__) #define LOG_INFO_PID_FMT(processId, ...) \ LOG_PID_FMT(logLevelInfo, processId, 0, __VA_ARGS__) #define LOG_DETAIL_PID_FMT(processId, ...) \ LOG_PID_FMT(logLevelDetail, processId, 0, __VA_ARGS__) #define LOG_DEBUG_PID_FMT(processId, ...) \ LOG_PID_FMT(logLevelDebug, processId, 0, __VA_ARGS__) #define LOG_TRACE_PID_FMT(processId, ...) \ LOG_PID_FMT(logLevelTrace, processId, 0, __VA_ARGS__) #define LOG(logLevel, code, message) \ LOG_PID(logLevel, 0, code, message) #define LOG_ASSERT(message) \ LOG(logLevelAssert, errorTypeCode(&AssertError), message) #define LOG_ERROR(code, message) \ LOG(logLevelError, code, message) #define LOG_WARN(message) \ LOG(logLevelWarn, 0, message) #define LOG_INFO(message) \ LOG(logLevelInfo, 0, message) #define LOG_DETAIL(message) \ LOG(logLevelDetail, 0, message) #define LOG_DEBUG(message) \ LOG(logLevelDebug, 0, message) #define LOG_TRACE(message) \ LOG(logLevelTrace, 0, message) #define LOG_FMT(logLevel, code, ...) \ LOG_PID_FMT(logLevel, 0, code, __VA_ARGS__) #define LOG_ASSERT_FMT(...) \ LOG_FMT(logLevelAssert, errorTypeCode(&AssertError), __VA_ARGS__) #define LOG_ERROR_FMT(code, ...) \ LOG_FMT(logLevelError, code, __VA_ARGS__) #define LOG_WARN_FMT(...) \ LOG_FMT(logLevelWarn, 0, __VA_ARGS__) #define LOG_INFO_FMT(...) \ LOG_FMT(logLevelInfo, 0, __VA_ARGS__) #define LOG_DETAIL_FMT(...) \ LOG_FMT(logLevelDetail, 0, __VA_ARGS__) #define LOG_DEBUG_FMT(...) \ LOG_FMT(logLevelDebug, 0, __VA_ARGS__) #define LOG_TRACE_FMT(...) \ LOG_FMT(logLevelTrace, 0, __VA_ARGS__) /*********************************************************************************************************************************** Internal Functions (in virtually all cases the macros above should be used in preference to these functions) ***********************************************************************************************************************************/ // Log function void logInternal( LogLevel logLevel, LogLevel logRangeMin, LogLevel logRangeMax, unsigned int processId, const char *fileName, const char *functionName, int code, const char *message); // Log function with formatting void logInternalFmt( LogLevel logLevel, LogLevel logRangeMin, LogLevel logRangeMax, unsigned int processId, const char *fileName, const char *functionName, int code, const char *format, ...) __attribute__((format(printf, 8, 9))); #endif pgbackrest-release-2.24/src/common/logLevel.h000066400000000000000000000017231362531507100212130ustar00rootroot00000000000000/*********************************************************************************************************************************** Log Levels ***********************************************************************************************************************************/ #ifndef COMMON_LOGLEVEL_H #define COMMON_LOGLEVEL_H /*********************************************************************************************************************************** Log types ***********************************************************************************************************************************/ typedef enum { logLevelOff, logLevelAssert, logLevelError, logLevelProtocol, logLevelWarn, logLevelInfo, logLevelDetail, logLevelDebug, logLevelTrace, } LogLevel; #define LOG_LEVEL_MIN logLevelAssert #define LOG_LEVEL_MAX logLevelTrace #endif pgbackrest-release-2.24/src/common/macro.h000066400000000000000000000053721362531507100205470ustar00rootroot00000000000000/*********************************************************************************************************************************** General Macros ***********************************************************************************************************************************/ #ifndef COMMON_MACRO_H #define COMMON_MACRO_H /*********************************************************************************************************************************** Convert the parameter to a zero-terminated string Useful for converting non-string types (e.g. int) to strings for inclusion in messages. ***********************************************************************************************************************************/ #define STRINGIFY_HELPER(param) #param #define STRINGIFY(param) STRINGIFY_HELPER(param) /*********************************************************************************************************************************** Glue together a string/macro and another string//macro Useful for creating function names when one or both of the macro parameter needs to be converted to a macro before concatenating. common/object.h has numerous examples of this. ***********************************************************************************************************************************/ #define GLUE_HELPER(param1, param2) param1##param2 #define GLUE(param1, param2) GLUE_HELPER(param1, param2) /*********************************************************************************************************************************** If param2 > param1 then assign it to param1 Useful for ensuring coverage in cases where compared values may be always ascending or descending. ***********************************************************************************************************************************/ #define MAX_ASSIGN(param1, param2) \ do \ { \ if (param2 > param1) \ param1 = param2; \ } \ while (0) #endif pgbackrest-release-2.24/src/common/memContext.c000066400000000000000000000662011362531507100215620ustar00rootroot00000000000000/*********************************************************************************************************************************** Memory Context Manager ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include "common/debug.h" #include "common/error.h" #include "common/memContext.h" /*********************************************************************************************************************************** Memory context states ***********************************************************************************************************************************/ typedef enum {memContextStateFree = 0, memContextStateFreeing, memContextStateActive} MemContextState; /*********************************************************************************************************************************** Contains information about a memory allocation ***********************************************************************************************************************************/ typedef struct MemContextAlloc { bool active:1; // Is the allocation active? unsigned int size:32; // Allocation size (4GB max) void *buffer; // Allocated buffer } MemContextAlloc; /*********************************************************************************************************************************** Contains information about the memory context ***********************************************************************************************************************************/ struct MemContext { MemContextState state; // Current state of the context const char *name; // Indicates what the context is being used for MemContext *contextParent; // All contexts have a parent except top unsigned int contextParentIdx; // Index in the parent context list MemContext **contextChildList; // List of contexts created in this context unsigned int contextChildListSize; // Size of child context list (not the actual count of contexts) unsigned int contextChildFreeIdx; // Index of first free space in the context list MemContextAlloc *allocList; // List of memory allocations created in this context unsigned int allocListSize; // Size of alloc list (not the actual count of allocations) unsigned int allocFreeIdx; // Index of first free space in the alloc list void (*callbackFunction)(void *); // Function to call before the context is freed void *callbackArgument; // Argument to pass to callback function }; /*********************************************************************************************************************************** Top context The top context always exists and can never be freed. All other contexts are children of the top context. The top context is generally used to allocate memory that exists for the life of the program. ***********************************************************************************************************************************/ MemContext contextTop = {.state = memContextStateActive, .name = "TOP"}; /*********************************************************************************************************************************** Current context All memory allocations will be done from the current context. Initialized to top context at execution start. ***********************************************************************************************************************************/ MemContext *contextCurrent = &contextTop; /*********************************************************************************************************************************** Wrapper around malloc() with error handling ***********************************************************************************************************************************/ static void * memAllocInternal(size_t size) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(SIZE, size); FUNCTION_TEST_END(); // Allocate memory void *buffer = malloc(size); // Error when malloc fails if (buffer == NULL) THROW_FMT(MemoryError, "unable to allocate %zu bytes", size); // Return the buffer FUNCTION_TEST_RETURN(buffer); } /*********************************************************************************************************************************** Allocate an array of pointers and set all entries to NULL ***********************************************************************************************************************************/ static void * memAllocPtrArrayInternal(size_t size) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(SIZE, size); FUNCTION_TEST_END(); // Allocate memory void **buffer = memAllocInternal(size * sizeof(void *)); // Set all pointers to NULL for (size_t ptrIdx = 0; ptrIdx < size; ptrIdx++) buffer[ptrIdx] = NULL; // Return the buffer FUNCTION_TEST_RETURN(buffer); } /*********************************************************************************************************************************** Wrapper around realloc() with error handling ***********************************************************************************************************************************/ static void * memReAllocInternal(void *bufferOld, size_t sizeNew) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, bufferOld); FUNCTION_TEST_PARAM(SIZE, sizeNew); FUNCTION_TEST_END(); ASSERT(bufferOld != NULL); // Allocate memory void *bufferNew = realloc(bufferOld, sizeNew); // Error when realloc fails if (bufferNew == NULL) THROW_FMT(MemoryError, "unable to reallocate %zu bytes", sizeNew); // Return the buffer FUNCTION_TEST_RETURN(bufferNew); } /*********************************************************************************************************************************** Wrapper around realloc() with error handling ***********************************************************************************************************************************/ static void * memReAllocPtrArrayInternal(void *bufferOld, size_t sizeOld, size_t sizeNew) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, bufferOld); FUNCTION_TEST_PARAM(SIZE, sizeOld); FUNCTION_TEST_PARAM(SIZE, sizeNew); FUNCTION_TEST_END(); // Allocate memory void **bufferNew = memReAllocInternal(bufferOld, sizeNew * sizeof(void *)); // Set all new pointers to NULL for (size_t ptrIdx = sizeOld; ptrIdx < sizeNew; ptrIdx++) bufferNew[ptrIdx] = NULL; // Return the buffer FUNCTION_TEST_RETURN(bufferNew); } /*********************************************************************************************************************************** Wrapper around free() ***********************************************************************************************************************************/ static void memFreeInternal(void *buffer) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, buffer); FUNCTION_TEST_END(); ASSERT(buffer != NULL); free(buffer); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Find space for a new mem context ***********************************************************************************************************************************/ static unsigned int memContextNewIndex(MemContext *memContext, bool allowFree) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MEM_CONTEXT, memContext); FUNCTION_TEST_PARAM(BOOL, allowFree); FUNCTION_TEST_END(); ASSERT(memContext != NULL); // Try to find space for the new context for (; memContext->contextChildFreeIdx < memContext->contextChildListSize; memContext->contextChildFreeIdx++) { if (!memContext->contextChildList[memContext->contextChildFreeIdx] || (allowFree && memContext->contextChildList[memContext->contextChildFreeIdx]->state == memContextStateFree)) { break; } } // If no space was found then allocate more if (memContext->contextChildFreeIdx == memContext->contextChildListSize) { // If no space has been allocated to the list if (memContext->contextChildListSize == 0) { // Allocate memory before modifying anything else in case there is an error memContext->contextChildList = memAllocPtrArrayInternal(MEM_CONTEXT_INITIAL_SIZE); // Set new list size memContext->contextChildListSize = MEM_CONTEXT_INITIAL_SIZE; } // Else grow the list else { // Calculate new list size unsigned int contextChildListSizeNew = memContext->contextChildListSize * 2; // ReAllocate memory before modifying anything else in case there is an error memContext->contextChildList = memReAllocPtrArrayInternal( memContext->contextChildList, memContext->contextChildListSize, contextChildListSizeNew); // Set new list size memContext->contextChildListSize = contextChildListSizeNew; } } FUNCTION_TEST_RETURN(memContext->contextChildFreeIdx); } /*********************************************************************************************************************************** Create a new memory context ***********************************************************************************************************************************/ MemContext * memContextNew(const char *name) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, name); FUNCTION_TEST_END(); ASSERT(name != NULL); // Check context name length ASSERT(name[0] != '\0'); // Find space for the new context unsigned int contextIdx = memContextNewIndex(contextCurrent, true); // If the context has not been allocated yet if (contextCurrent->contextChildList[contextIdx] == NULL) contextCurrent->contextChildList[contextIdx] = memAllocInternal(sizeof(MemContext)); // Get the context MemContext *this = contextCurrent->contextChildList[contextIdx]; *this = (MemContext) { // Create initial space for allocations .allocList = memAllocInternal(sizeof(MemContextAlloc) * MEM_CONTEXT_ALLOC_INITIAL_SIZE), .allocListSize = MEM_CONTEXT_ALLOC_INITIAL_SIZE, // Set the context name .name = name, // Set new context active .state = memContextStateActive, // Set current context as the parent .contextParent = contextCurrent, .contextParentIdx = contextIdx, }; // Initialize allocation list for (unsigned int allocIdx = 0; allocIdx < MEM_CONTEXT_ALLOC_INITIAL_SIZE; allocIdx++) this->allocList[allocIdx] = (MemContextAlloc){.active = false}; // Possible free context must be in the next position contextCurrent->contextChildFreeIdx++; // Return context FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Register a callback to be called just before the context is freed ***********************************************************************************************************************************/ void memContextCallbackSet(MemContext *this, void (*callbackFunction)(void *), void *callbackArgument) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MEM_CONTEXT, this); FUNCTION_TEST_PARAM(FUNCTIONP, callbackFunction); FUNCTION_TEST_PARAM_P(VOID, callbackArgument); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(callbackFunction != NULL); // Error if context is not active if (this->state != memContextStateActive) THROW(AssertError, "cannot assign callback to inactive context"); // Top context cannot have a callback if (this == &contextTop) THROW(AssertError, "top context may not have a callback"); // Error if callback has already been set - there may be valid use cases for this but error until one is found if (this->callbackFunction) THROW_FMT(AssertError, "callback is already set for context '%s'", this->name); // Set callback function and argument this->callbackFunction = callbackFunction; this->callbackArgument = callbackArgument; FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Clear the mem context callback. This is usually done in the object free method after resources have been freed but before memContextFree() is called. The goal is to prevent the object free method from being called more than once. ***********************************************************************************************************************************/ void memContextCallbackClear(MemContext *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MEM_CONTEXT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); // Error if context is not active or freeing ASSERT(this->state == memContextStateActive || this->state == memContextStateFreeing); // Top context cannot have a callback ASSERT(this != &contextTop); // Clear callback function and argument this->callbackFunction = NULL; this->callbackArgument = NULL; FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Find an available allocation in the memory context ***********************************************************************************************************************************/ static MemContextAlloc * memContextAllocFind(void) { FUNCTION_TEST_VOID(); // Find space for the new allocation for (; contextCurrent->allocFreeIdx < contextCurrent->allocListSize; contextCurrent->allocFreeIdx++) if (!contextCurrent->allocList[contextCurrent->allocFreeIdx].active) break; // If no space was found then allocate more if (contextCurrent->allocFreeIdx == contextCurrent->allocListSize) { // Only the top context will not have initial space for allocations if (contextCurrent->allocListSize == 0) { // Allocate memory before modifying anything else in case there is an error contextCurrent->allocList = memAllocInternal(sizeof(MemContextAlloc) * MEM_CONTEXT_ALLOC_INITIAL_SIZE); // Initialize allocations in list for (unsigned int allocIdx = 0; allocIdx < MEM_CONTEXT_ALLOC_INITIAL_SIZE; allocIdx++) contextCurrent->allocList[allocIdx] = (MemContextAlloc){.active = false}; // Set new size contextCurrent->allocListSize = MEM_CONTEXT_ALLOC_INITIAL_SIZE; } // Else grow the list else { // Calculate new list size unsigned int allocListSizeNew = contextCurrent->allocListSize * 2; // ReAllocate memory before modifying anything else in case there is an error contextCurrent->allocList = memReAllocInternal(contextCurrent->allocList, sizeof(MemContextAlloc) * allocListSizeNew); // Initialize new allocations in list for (unsigned int allocIdx = contextCurrent->allocListSize; allocIdx < allocListSizeNew; allocIdx++) contextCurrent->allocList[allocIdx] = (MemContextAlloc){.active = false}; // Set new size contextCurrent->allocListSize = allocListSizeNew; } } contextCurrent->allocFreeIdx++; // Return buffer FUNCTION_TEST_RETURN(&contextCurrent->allocList[contextCurrent->allocFreeIdx - 1]); } /*********************************************************************************************************************************** Find a memory allocation ***********************************************************************************************************************************/ static unsigned int memFind(const void *buffer) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, buffer); FUNCTION_TEST_END(); ASSERT(buffer != NULL); // Find memory allocation unsigned int allocIdx; for (allocIdx = 0; allocIdx < contextCurrent->allocListSize; allocIdx++) if (contextCurrent->allocList[allocIdx].buffer == buffer && contextCurrent->allocList[allocIdx].active) break; // Error if the buffer was not found if (allocIdx == contextCurrent->allocListSize) THROW(AssertError, "unable to find allocation"); FUNCTION_TEST_RETURN(allocIdx); } /**********************************************************************************************************************************/ void * memNew(size_t size) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(SIZE, size); FUNCTION_TEST_END(); MemContextAlloc *alloc = memContextAllocFind(); *alloc = (MemContextAlloc) { .active = true, .size = (unsigned int)size, .buffer = memAllocInternal(size), }; FUNCTION_TEST_RETURN(alloc->buffer); } /**********************************************************************************************************************************/ void * memNewPtrArray(size_t size) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(SIZE, size); FUNCTION_TEST_END(); MemContextAlloc *alloc = memContextAllocFind(); *alloc = (MemContextAlloc) { .active = true, .size = (unsigned int)(size * sizeof(void *)), .buffer = memAllocPtrArrayInternal(size), }; FUNCTION_TEST_RETURN(alloc->buffer); } /**********************************************************************************************************************************/ void * memResize(const void *buffer, size_t size) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, buffer); FUNCTION_TEST_PARAM(SIZE, size); FUNCTION_TEST_END(); ASSERT(buffer != NULL); // Find the allocation MemContextAlloc *alloc = &(contextCurrent->allocList[memFind(buffer)]); // Grow the buffer alloc->buffer = memReAllocInternal(alloc->buffer, size); alloc->size = (unsigned int)size; FUNCTION_TEST_RETURN(alloc->buffer); } /**********************************************************************************************************************************/ void memFree(void *buffer) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, buffer); FUNCTION_TEST_END(); ASSERT(buffer != NULL); // Find the allocation unsigned int allocIdx = memFind(buffer); MemContextAlloc *alloc = &(contextCurrent->allocList[allocIdx]); // Free the buffer memFreeInternal(alloc->buffer); alloc->active = false; // If this allocation is before the current free allocation then make it the current free allocation if (allocIdx < contextCurrent->allocFreeIdx) contextCurrent->allocFreeIdx = allocIdx; FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Move a context to a new parent context This is generally used to move objects to a new context once they have been successfully created. ***********************************************************************************************************************************/ void memContextMove(MemContext *this, MemContext *parentNew) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MEM_CONTEXT, this); FUNCTION_TEST_PARAM(MEM_CONTEXT, parentNew); FUNCTION_TEST_END(); ASSERT(parentNew != NULL); // Only move if a valid mem context is provided and the old and new parents are not the same if (this != NULL && this->contextParent != parentNew) { // Find context in the old parent and NULL it out MemContext *parentOld = this->contextParent; unsigned int contextIdx; for (contextIdx = 0; contextIdx < parentOld->contextChildListSize; contextIdx++) { if (parentOld->contextChildList[contextIdx] == this) { parentOld->contextChildList[contextIdx] = NULL; break; } } // The memory must be found if (contextIdx == parentOld->contextChildListSize) THROW(AssertError, "unable to find mem context in old parent"); // Find a place in the new parent context and assign it. The child list may be moved while finding a new index so store the // index and use it with (what might be) the new pointer. contextIdx = memContextNewIndex(parentNew, false); ASSERT(parentNew->contextChildList[contextIdx] == NULL); parentNew->contextChildList[contextIdx] = this; // Assign new parent this->contextParent = parentNew; } FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Switch to the specified context and return the old context ***********************************************************************************************************************************/ MemContext * memContextSwitch(MemContext *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MEM_CONTEXT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); // Error if context is not active if (this->state != memContextStateActive) THROW(AssertError, "cannot switch to inactive context"); MemContext *memContextOld = contextCurrent; contextCurrent = this; FUNCTION_TEST_RETURN(memContextOld); } /*********************************************************************************************************************************** Return the top context ***********************************************************************************************************************************/ MemContext * memContextTop(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(&contextTop); } /*********************************************************************************************************************************** Return the current context ***********************************************************************************************************************************/ MemContext * memContextCurrent(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(contextCurrent); } /*********************************************************************************************************************************** Return the context name ***********************************************************************************************************************************/ const char * memContextName(MemContext *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MEM_CONTEXT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); // Error if context is not active if (this->state != memContextStateActive) THROW(AssertError, "cannot get name for inactive context"); FUNCTION_TEST_RETURN(this->name); } /*********************************************************************************************************************************** memContextFree - free all memory used by the context and all child contexts ***********************************************************************************************************************************/ void memContextFree(MemContext *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MEM_CONTEXT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); // If context is already freeing then return if memContextFree() is called again - this can happen in callbacks if (this->state != memContextStateFreeing) { // Current context cannot be freed unless it is top (top is never really freed, just the stuff under it) if (this == contextCurrent && this != &contextTop) THROW_FMT(AssertError, "cannot free current context '%s'", this->name); // Error if context is not active if (this->state != memContextStateActive) THROW(AssertError, "cannot free inactive context"); // Free child contexts if (this->contextChildListSize > 0) for (unsigned int contextIdx = 0; contextIdx < this->contextChildListSize; contextIdx++) if (this->contextChildList[contextIdx] && this->contextChildList[contextIdx]->state == memContextStateActive) memContextFree(this->contextChildList[contextIdx]); // Set state to freeing now that there are no child contexts. Child contexts might need to interact with their parent while // freeing so the parent needs to remain active until they are all gone. this->state = memContextStateFreeing; // Execute callback if defined bool rethrow = false; if (this->callbackFunction) { TRY_BEGIN() { this->callbackFunction(this->callbackArgument); } CATCH_ANY() { rethrow = true; } TRY_END(); } // Free child context allocations if (this->contextChildListSize > 0) { for (unsigned int contextIdx = 0; contextIdx < this->contextChildListSize; contextIdx++) if (this->contextChildList[contextIdx]) memFreeInternal(this->contextChildList[contextIdx]); memFreeInternal(this->contextChildList); this->contextChildListSize = 0; } // Free memory allocations if (this->allocListSize > 0) { for (unsigned int allocIdx = 0; allocIdx < this->allocListSize; allocIdx++) { MemContextAlloc *alloc = &(this->allocList[allocIdx]); if (alloc->active) memFreeInternal(alloc->buffer); } memFreeInternal(this->allocList); this->allocListSize = 0; } // If the context index is lower than the current free index in the parent then replace it if (this->contextParent != NULL && this->contextParentIdx < this->contextParent->contextChildFreeIdx) this->contextParent->contextChildFreeIdx = this->contextParentIdx; // Make top context active again if (this == &contextTop) this->state = memContextStateActive; // Else reset the memory context so it can be reused else *this = (MemContext){.state = memContextStateFree}; // Rethrow the error that was caught in the callback if (rethrow) RETHROW(); } FUNCTION_TEST_RETURN_VOID(); } pgbackrest-release-2.24/src/common/memContext.h000066400000000000000000000421601362531507100215650ustar00rootroot00000000000000/*********************************************************************************************************************************** Memory Context Manager ***********************************************************************************************************************************/ #ifndef COMMON_MEMCONTEXT_H #define COMMON_MEMCONTEXT_H #include /*********************************************************************************************************************************** Memory context object ***********************************************************************************************************************************/ typedef struct MemContext MemContext; #include "common/error.h" /*********************************************************************************************************************************** Define initial number of memory contexts No space is reserved for child contexts when a new context is created because most contexts will be leaves. When a child context is requested then space will be reserved for this many child contexts initially. When more space is needed the size will be doubled. ***********************************************************************************************************************************/ #define MEM_CONTEXT_INITIAL_SIZE 4 /*********************************************************************************************************************************** Define initial number of memory allocations Space is reserved for this many allocations when a context is created. When more space is needed the size will be doubled. ***********************************************************************************************************************************/ #define MEM_CONTEXT_ALLOC_INITIAL_SIZE 4 /*********************************************************************************************************************************** Memory context management functions MemContext *context = memContextNew(); MemContext *contextPrior = memContextSwitch(context); TRY_BEGIN() { } CATCH_ANY() { memContextFree(context); RETHROW(); } FINALLY { memContextSwitch(contextPrior); } TRY_END(); Use the MEM_CONTEXT*() macros when possible rather than implement error-handling for every memory context block. ***********************************************************************************************************************************/ MemContext *memContextNew(const char *name); void memContextMove(MemContext *this, MemContext *parentNew); void memContextCallbackSet(MemContext *this, void (*callbackFunction)(void *), void *); void memContextCallbackClear(MemContext *this); MemContext *memContextSwitch(MemContext *this); void memContextFree(MemContext *this); /*********************************************************************************************************************************** Memory context accessors ***********************************************************************************************************************************/ MemContext *memContextCurrent(void); MemContext *memContextTop(void); const char *memContextName(MemContext *this); /*********************************************************************************************************************************** Memory management functions All these functions operate in the current memory context, including memResize() and memFree(). ***********************************************************************************************************************************/ // Allocate memory in the current memory context void *memNew(size_t size); // Allocate requested number of pointers and initialize them to NULL void *memNewPtrArray(size_t size); // Reallocate to the new size. Original buffer pointer is undefined on return. void *memResize(const void *buffer, size_t size); // Free memory allocation void memFree(void *buffer); /*********************************************************************************************************************************** Ensure that the prior memory context is restored after the block executes (even on error) MEM_CONTEXT_BEGIN(memContext) { } MEM_CONTEXT_END(); ***********************************************************************************************************************************/ #define MEM_CONTEXT_BEGIN(memContext) \ { \ /* Switch to the new memory context */ \ MemContext *MEM_CONTEXT_memContextPrior = memContextSwitch(memContext); \ \ /* Try the statement block */ \ TRY_BEGIN() #define memContextPrior() \ MEM_CONTEXT_memContextPrior #define MEM_CONTEXT_END() \ /* Switch back to the prior context */ \ FINALLY() \ { \ memContextSwitch(memContextPrior()); \ } \ TRY_END(); \ } /*********************************************************************************************************************************** Switch to prior context and ensure that the previous prior memory context is restored after the block executes (even on error) MEM_CONTEXT_PRIOR_BEGIN(memContext) { } MEM_CONTEXT_PRIOR_END(); ***********************************************************************************************************************************/ #define MEM_CONTEXT_PRIOR_BEGIN(memContext) \ { \ /* Switch to the new memory context */ \ MemContext *MEM_CONTEXT_memContextRestore = memContextSwitch(memContextPrior()); \ \ /* Try the statement block */ \ TRY_BEGIN() #define MEM_CONTEXT_PRIOR_END() \ /* Switch back to the prior context */ \ FINALLY() \ { \ memContextSwitch(MEM_CONTEXT_memContextRestore); \ } \ TRY_END(); \ } /*********************************************************************************************************************************** Create a new context and make sure it is freed on error and prior context is restored in all cases MEM_CONTEXT_NEW_BEGIN(memContextName) { ObjectType *object = memNew(sizeof(ObjectType)); object->memContext = MEM_CONTEXT_NEW(); } MEM_CONTEXT_NEW_END(); Note that memory context names are expected to live for the lifetime of the context -- no copy is made. ***********************************************************************************************************************************/ #define MEM_CONTEXT_NEW() \ MEM_CONTEXT_NEW_memContext #define MEM_CONTEXT_NEW_BEGIN(memContextName) \ { \ MemContext *MEM_CONTEXT_NEW() = memContextNew(memContextName); \ \ MEM_CONTEXT_BEGIN(MEM_CONTEXT_NEW()) #define MEM_CONTEXT_NEW_END() \ CATCH_ANY() \ { \ memContextSwitch(memContextPrior()); \ memContextFree(MEM_CONTEXT_NEW()); \ RETHROW(); \ } \ MEM_CONTEXT_END(); \ } /*********************************************************************************************************************************** Create a temporary memory context and make sure it is freed when done (even on error) MEM_CONTEXT_TEMP_BEGIN() {
    } MEM_CONTEXT_TEMP_END(); ***********************************************************************************************************************************/ #define MEM_CONTEXT_TEMP() \ MEM_CONTEXT_TEMP_memContext #define MEM_CONTEXT_TEMP_BEGIN() \ { \ MemContext *MEM_CONTEXT_TEMP() = memContextNew("temporary"); \ \ MEM_CONTEXT_BEGIN(MEM_CONTEXT_TEMP()) #define MEM_CONTEXT_TEMP_RESET_BEGIN() \ { \ MemContext *MEM_CONTEXT_TEMP() = memContextNew("temporary"); \ unsigned int MEM_CONTEXT_TEMP_loopTotal = 0; \ \ MEM_CONTEXT_BEGIN(MEM_CONTEXT_TEMP()) #define MEM_CONTEXT_TEMP_RESET(resetTotal) \ do \ { \ MEM_CONTEXT_TEMP_loopTotal++; \ \ if (MEM_CONTEXT_TEMP_loopTotal >= resetTotal) \ { \ memContextSwitch(memContextPrior()); \ memContextFree(MEM_CONTEXT_TEMP()); \ MEM_CONTEXT_TEMP() = memContextNew("temporary"); \ memContextSwitch(MEM_CONTEXT_TEMP()); \ MEM_CONTEXT_TEMP_loopTotal = 0; \ } \ } \ while (0) #define MEM_CONTEXT_TEMP_END() \ /* Switch back to the prior context and free temp context */ \ FINALLY() \ { \ memContextSwitch(memContextPrior()); \ memContextFree(MEM_CONTEXT_TEMP()); \ } \ TRY_END(); \ } \ } /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_MEM_CONTEXT_TYPE \ MemContext * #define FUNCTION_LOG_MEM_CONTEXT_FORMAT(value, buffer, bufferSize) \ objToLog(value, "MemContext", buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/object.h000066400000000000000000000225151362531507100207120ustar00rootroot00000000000000/*********************************************************************************************************************************** Object Helper Macros Macros to automate definitions of various boilerplate functions and log macros. Each object should have at least two macros defined it its header file, _TYPE and _PREFIX. So if the object type is "Object" the macros would be: #define OBJECT_TYPE Object #define OBJECT_PREFIX object In most cases _PREFIX will be identical to _TYPE except that the first letter is lower-cased. For commonly used objects (e.g. String) a shorter prefix may be used. When a macro exists to create a function definition in a C file there is no equivalent macro to create the prototype in the header. The prototype is not repetitious enough to justify a macro and it would only serve to obfuscate the header file. ***********************************************************************************************************************************/ #ifndef COMMON_OBJECT_H #define COMMON_OBJECT_H #include "common/macro.h" /*********************************************************************************************************************************** Used in interface function parameter lists to discourage use of the untyped thisVoid parameter, e.g.: size_t bufferRead(THIS_VOID, Buffer *buffer) This macro should not be used unless the function is assigned to an interface. ***********************************************************************************************************************************/ #define THIS_VOID void *thisVoid /*********************************************************************************************************************************** Create a local "this" variable of the correct type from a THIS_VOID parameter ***********************************************************************************************************************************/ #define THIS(type) type *this = thisVoid /*********************************************************************************************************************************** Define a function used by the caller to move an object from one context to another The object type is expected to have a memmber named "memContext" and the object must allocate *all* memory in that context. If "this" is NULL then no action is taken. ***********************************************************************************************************************************/ #define OBJECT_DEFINE_MOVE(objectMacro) \ objectMacro##_TYPE * \ GLUE(objectMacro##_PREFIX, Move)(objectMacro##_TYPE *this, MemContext *parentNew) \ { \ FUNCTION_TEST_BEGIN(); \ FUNCTION_TEST_PARAM(objectMacro, this); \ FUNCTION_TEST_PARAM(MEM_CONTEXT, parentNew); \ FUNCTION_TEST_END(); \ \ ASSERT(parentNew != NULL); \ \ if (this != NULL) \ memContextMove(this->memContext, parentNew); \ \ FUNCTION_TEST_RETURN(this); \ } /*********************************************************************************************************************************** Free resource associated with an object that was not allocated by a mem context Create a callback function intended to be use with memContextCallbackSet() that frees a resource that was allocated by, e.g., a third-party library and not by a mem context. Don't call memFree() or memContextFree() in this function -- that will be handled when the mem context is freed. If the object prefix is "object" then the function will be defined as: static void objectFreeResource(THIS_VOID) ***********************************************************************************************************************************/ #define OBJECT_DEFINE_FREE_RESOURCE_BEGIN(objectMacro, logTypeMacro, logLevelMacro) \ static void \ GLUE(objectMacro##_PREFIX, FreeResource)(THIS_VOID) \ { \ THIS(objectMacro##_TYPE); \ \ FUNCTION_##logTypeMacro##_BEGIN(logLevelMacro); \ FUNCTION_##logTypeMacro##_PARAM(objectMacro, this); \ FUNCTION_##logTypeMacro##_END(); \ \ ASSERT(this != NULL); #define OBJECT_DEFINE_FREE_RESOURCE_END(logTypeMacro) \ FUNCTION_##logTypeMacro##_RETURN_VOID(); \ } /*********************************************************************************************************************************** Define a function used by the caller to dispose of an object that is no longer needed when it would consume significant amounts of memory, e.g. in a loop. For the most part free does not need to be called explicitly, and in fact should not be since the automatic cleanup is much more efficient. If the object type/prefix is "Object"/"object" then the function will be defined as: static void objectFree(Object *this) Note that this function is externed as there no need for a static free function since the context will be cleaned up automatically by the parent context. ***********************************************************************************************************************************/ #define OBJECT_DEFINE_FREE(objectMacro) \ void \ GLUE(objectMacro##_PREFIX, Free)(objectMacro##_TYPE *this) \ { \ FUNCTION_TEST_BEGIN(); \ FUNCTION_TEST_PARAM(objectMacro, this); \ FUNCTION_TEST_END(); \ \ if (this != NULL) \ memContextFree(this->memContext); \ \ FUNCTION_TEST_RETURN_VOID(); \ } #endif pgbackrest-release-2.24/src/common/regExp.c000066400000000000000000000167721362531507100207010ustar00rootroot00000000000000/*********************************************************************************************************************************** Regular Expression Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include "common/debug.h" #include "common/memContext.h" #include "common/object.h" #include "common/regExp.h" /*********************************************************************************************************************************** Contains information about the regular expression handler ***********************************************************************************************************************************/ struct RegExp { MemContext *memContext; regex_t regExp; const char *matchPtr; size_t matchSize; }; OBJECT_DEFINE_FREE(REGEXP); /*********************************************************************************************************************************** Free regular expression ***********************************************************************************************************************************/ OBJECT_DEFINE_FREE_RESOURCE_BEGIN(REGEXP, TEST, ) { regfree(&this->regExp); } OBJECT_DEFINE_FREE_RESOURCE_END(TEST); /*********************************************************************************************************************************** Handle errors ***********************************************************************************************************************************/ static void regExpError(int error) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT, error); FUNCTION_TEST_END(); if (error != 0 && error != REG_NOMATCH) { char buffer[4096]; regerror(error, NULL, buffer, sizeof(buffer)); THROW(FormatError, buffer); } FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** New regular expression handler ***********************************************************************************************************************************/ RegExp * regExpNew(const String *expression) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, expression); FUNCTION_TEST_END(); ASSERT(expression != NULL); RegExp *this = NULL; MEM_CONTEXT_NEW_BEGIN("RegExp") { this = memNew(sizeof(RegExp)); *this = (RegExp) { .memContext = MEM_CONTEXT_NEW(), }; // Compile the regexp and process errors int result = 0; if ((result = regcomp(&this->regExp, strPtr(expression), REG_EXTENDED)) != 0) { memFree(this); regExpError(result); } // Set free callback to ensure cipher context is freed memContextCallbackSet(this->memContext, regExpFreeResource, this); } MEM_CONTEXT_NEW_END(); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Match on a regular expression ***********************************************************************************************************************************/ bool regExpMatch(RegExp *this, const String *string) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(REGEXP, this); FUNCTION_TEST_PARAM(STRING, string); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(string != NULL); // Test for a match regmatch_t matchPtr; int result = regexec(&this->regExp, strPtr(string), 1, &matchPtr, 0); // Check for an error regExpError(result); // Store match results if (result == 0) { this->matchPtr = strPtr(string) + matchPtr.rm_so; this->matchSize = (size_t)(matchPtr.rm_eo - matchPtr.rm_so); } // Else reset match results else { this->matchPtr = NULL; this->matchSize = 0; } FUNCTION_TEST_RETURN(result == 0); } /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ const char * regExpMatchPtr(RegExp *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(REGEXP, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->matchPtr); } size_t regExpMatchSize(RegExp *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(REGEXP, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->matchSize); } String * regExpMatchStr(RegExp *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(REGEXP, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->matchPtr == NULL ? NULL : strNewN(regExpMatchPtr(this), regExpMatchSize(this))); } /*********************************************************************************************************************************** Match a regular expression in one call for brevity ***********************************************************************************************************************************/ bool regExpMatchOne(const String *expression, const String *string) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, expression); FUNCTION_TEST_PARAM(STRING, string); FUNCTION_TEST_END(); ASSERT(expression != NULL); ASSERT(string != NULL); bool result = false; RegExp *regExp = regExpNew(expression); TRY_BEGIN() { result = regExpMatch(regExp, string); } FINALLY() { regExpFree(regExp); } TRY_END(); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Return the constant first part of the regular expression if it has a beginning anchor This works by scanning the string until the first special regex character is found so escaped characters will not be included. ***********************************************************************************************************************************/ String * regExpPrefix(const String *expression) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, expression); FUNCTION_TEST_END(); String *result = NULL; // Only generate prefix if expression is defined and has a beginning anchor if (expression != NULL && strPtr(expression)[0] == '^') { unsigned int expressionIdx = 1; for (; expressionIdx < strSize(expression); expressionIdx++) { char expressionChr = strPtr(expression)[expressionIdx]; // Search for characters that will end the prefix if (expressionChr == '.' || expressionChr == '^' || expressionChr == '$' || expressionChr == '*' || expressionChr == '+' || expressionChr == '-' || expressionChr == '?' || expressionChr == '(' || expressionChr == '[' || expressionChr == '{' || expressionChr == ' ' || expressionChr == '|' || expressionChr == '\\') { break; } } // Will there be any characters in the prefix? if (expressionIdx > 1) result = strSubN(expression, 1, expressionIdx - 1); } FUNCTION_TEST_RETURN(result); } pgbackrest-release-2.24/src/common/regExp.h000066400000000000000000000050141362531507100206710ustar00rootroot00000000000000/*********************************************************************************************************************************** Regular Expression Handler ***********************************************************************************************************************************/ #ifndef COMMON_REGEXP_H #define COMMON_REGEXP_H /*********************************************************************************************************************************** RegExp object ***********************************************************************************************************************************/ #define REGEXP_TYPE RegExp #define REGEXP_PREFIX regExp typedef struct RegExp RegExp; #include "common/type/string.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ RegExp *regExpNew(const String *expression); bool regExpMatch(RegExp *this, const String *string); void regExpFree(RegExp *this); bool regExpMatchOne(const String *expression, const String *string); String *regExpPrefix(const String *expression); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ // Get pointer to the last match. NULL if there was no match. const char *regExpMatchPtr(RegExp *this); // Get size of the last match. 0 if there was no match. size_t regExpMatchSize(RegExp *this); // Get the last match as a String. NULL if there was no match. String *regExpMatchStr(RegExp *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_REGEXP_TYPE \ RegExp * #define FUNCTION_LOG_REGEXP_FORMAT(value, buffer, bufferSize) \ objToLog(value, "RegExp", buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/stackTrace.c000066400000000000000000000305301362531507100215170ustar00rootroot00000000000000/*********************************************************************************************************************************** Stack Trace Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #ifdef WITH_BACKTRACE #include #include #endif #include "common/assert.h" #include "common/error.h" #include "common/stackTrace.h" /*********************************************************************************************************************************** Max call stack depth ***********************************************************************************************************************************/ #define STACK_TRACE_MAX 128 /*********************************************************************************************************************************** Track stack trace ***********************************************************************************************************************************/ static int stackSize = 0; typedef struct StackTraceData { const char *fileName; const char *functionName; unsigned int fileLine; LogLevel functionLogLevel; unsigned int tryDepth; char *param; size_t paramSize; bool paramOverflow; bool paramLog; } StackTraceData; static StackTraceData stackTrace[STACK_TRACE_MAX]; /*********************************************************************************************************************************** Buffer to hold function parameters ***********************************************************************************************************************************/ static char functionParamBuffer[32 * 1024]; struct backtrace_state *backTraceState = NULL; /*********************************************************************************************************************************** Backtrace init and callbacks ***********************************************************************************************************************************/ #ifdef WITH_BACKTRACE void stackTraceInit(const char *exe) { if (backTraceState == NULL) backTraceState = backtrace_create_state(exe, false, NULL, NULL); } static int backTraceCallback(void *data, uintptr_t pc, const char *filename, int lineno, const char *function) { (void)(data); (void)(pc); (void)(filename); (void)(function); if (stackSize > 0) stackTrace[stackSize - 1].fileLine = (unsigned int)lineno; return 1; } static void backTraceCallbackError(void *data, const char *msg, int errnum) { (void)data; (void)msg; (void)errnum; } #endif /*********************************************************************************************************************************** Flag to enable/disable test function logging ***********************************************************************************************************************************/ #ifndef NDEBUG bool stackTraceTestFlag = true; void stackTraceTestStart(void) { stackTraceTestFlag = true; } void stackTraceTestStop(void) { stackTraceTestFlag = false; } bool stackTraceTest(void) { return stackTraceTestFlag; } #endif /*********************************************************************************************************************************** Push a new function onto the trace stack ***********************************************************************************************************************************/ LogLevel stackTracePush(const char *fileName, const char *functionName, LogLevel functionLogLevel) { ASSERT(stackSize < STACK_TRACE_MAX - 1); // Get line number from backtrace if available #ifdef WITH_BACKTRACE backtrace_full(backTraceState, 2, backTraceCallback, backTraceCallbackError, NULL); #endif // Set function info StackTraceData *data = &stackTrace[stackSize]; *data = (StackTraceData) { .fileName = fileName, .functionName = functionName, .tryDepth = errorTryDepth(), }; // Set param pointer if (stackSize == 0) { data->param = functionParamBuffer; data->functionLogLevel = functionLogLevel; } else { StackTraceData *dataPrior = &stackTrace[stackSize - 1]; data->param = dataPrior->param + dataPrior->paramSize + 1; // Log level cannot be lower than the prior function if (functionLogLevel < dataPrior->functionLogLevel) data->functionLogLevel = dataPrior->functionLogLevel; else data->functionLogLevel = functionLogLevel; } stackSize++; return data->functionLogLevel; } /*********************************************************************************************************************************** Get parameters for the top function on the stack ***********************************************************************************************************************************/ static const char * stackTraceParamIdx(int stackIdx) { ASSERT(stackSize > 0); ASSERT(stackIdx < stackSize); StackTraceData *data = &stackTrace[stackIdx]; if (data->paramLog) { if (data->paramOverflow) return "buffer full - parameters not available"; if (data->paramSize == 0) return "void"; return data->param; } // If no parameters return the log level required to get them #define LOG_LEVEL_REQUIRED " log level required for parameters" return data->functionLogLevel == logLevelTrace ? "trace" LOG_LEVEL_REQUIRED : "debug" LOG_LEVEL_REQUIRED; } const char * stackTraceParam() { return stackTraceParamIdx(stackSize - 1); } /*********************************************************************************************************************************** Get the next location where a parameter can be added in the param buffer ***********************************************************************************************************************************/ char * stackTraceParamBuffer(const char *paramName) { ASSERT(stackSize > 0); StackTraceData *data = &stackTrace[stackSize - 1]; size_t paramNameSize = strlen(paramName); // Make sure that adding this parameter will not overflow the buffer if ((size_t)(data->param - functionParamBuffer) + data->paramSize + paramNameSize + 4 > sizeof(functionParamBuffer) - (STACK_TRACE_PARAM_MAX * 2)) { // Set overflow to true data->paramOverflow = true; // There's no way to stop the parameter from being formatted so we reserve a space at the end where the format can safely // take place and not disturb the rest of the buffer. Hopefully overflows just won't happen but we need to be prepared in // case of runaway recursion or some other issue that fills the buffer because we don't want a segfault. return functionParamBuffer + sizeof(functionParamBuffer) - STACK_TRACE_PARAM_MAX; } // Add a comma if a parameter is already in the list if (data->paramSize != 0) { data->param[data->paramSize++] = ','; data->param[data->paramSize++] = ' '; } // Add the parameter name strcpy(data->param + data->paramSize, paramName); data->paramSize += paramNameSize; // Add param/value separator data->param[data->paramSize++] = ':'; data->param[data->paramSize++] = ' '; return data->param + data->paramSize; } /*********************************************************************************************************************************** Add a parameter to the function on the top of the stack ***********************************************************************************************************************************/ void stackTraceParamAdd(size_t bufferSize) { ASSERT(stackSize > 0); StackTraceData *data = &stackTrace[stackSize - 1]; if (!data->paramOverflow) data->paramSize += bufferSize; } /*********************************************************************************************************************************** Mark that parameters are being logged -- it none appear then the function is void ***********************************************************************************************************************************/ void stackTraceParamLog(void) { ASSERT(stackSize > 0); stackTrace[stackSize - 1].paramLog = true; } /*********************************************************************************************************************************** Pop a function from the stack trace ***********************************************************************************************************************************/ #ifdef NDEBUG void stackTracePop(void) { stackSize--; } #else void stackTracePop(const char *fileName, const char *functionName, bool test) { ASSERT(stackSize > 0); if (!test || stackTraceTest()) { stackSize--; StackTraceData *data = &stackTrace[stackSize]; if (strcmp(data->fileName, fileName) != 0 || strcmp(data->functionName, functionName) != 0) THROW_FMT(AssertError, "popping %s:%s but expected %s:%s", fileName, functionName, data->fileName, data->functionName); } } #endif /*********************************************************************************************************************************** Stack trace format ***********************************************************************************************************************************/ static size_t stackTraceFmt(char *buffer, size_t bufferSize, size_t bufferUsed, const char *format, ...) { va_list argumentList; va_start(argumentList, format); int result = vsnprintf( buffer + bufferUsed, bufferUsed < bufferSize ? bufferSize - bufferUsed : 0, format, argumentList); va_end(argumentList); return (size_t)result; } /*********************************************************************************************************************************** Generate the stack trace ***********************************************************************************************************************************/ size_t stackTraceToZ(char *buffer, size_t bufferSize, const char *fileName, const char *functionName, unsigned int fileLine) { size_t result = 0; const char *param = "test build required for parameters"; int stackIdx = stackSize - 1; // If the current function passed in is the same as the top function on the stack then use the parameters for that function if (stackSize > 0 && strcmp(fileName, stackTrace[stackIdx].fileName) == 0 && strcmp(functionName, stackTrace[stackIdx].functionName) == 0) { param = stackTraceParamIdx(stackSize - 1); stackIdx--; } // Output the current function result = stackTraceFmt( buffer, bufferSize, 0, "%.*s:%s:%u:(%s)", (int)(strlen(fileName) - 2), fileName, functionName, fileLine, param); // Output stack if there is anything on it if (stackIdx >= 0) { // If the function passed in was not at the top of the stack then some functions are missing if (stackIdx == stackSize - 1) result += stackTraceFmt(buffer, bufferSize, result, "\n ... function(s) omitted ..."); // Output the rest of the stack for (; stackIdx >= 0; stackIdx--) { StackTraceData *data = &stackTrace[stackIdx]; result += stackTraceFmt( buffer, bufferSize, result, "\n%.*s:%s" #ifdef WITH_BACKTRACE ":%u" #endif ":(%s)", (int)(strlen(data->fileName) - 2), data->fileName, data->functionName, #ifdef WITH_BACKTRACE data->fileLine, #endif stackTraceParamIdx(stackIdx)); } } return result; } /*********************************************************************************************************************************** Clean the stack at and below the try level Called by the error to cleanup the stack when an exception occurs. ***********************************************************************************************************************************/ void stackTraceClean(unsigned int tryDepth) { while (stackSize > 0 && stackTrace[stackSize - 1].tryDepth >= tryDepth) stackSize--; } pgbackrest-release-2.24/src/common/stackTrace.h000066400000000000000000000052601362531507100215260ustar00rootroot00000000000000/*********************************************************************************************************************************** Stack Trace Handler ***********************************************************************************************************************************/ #ifndef COMMON_STACKTRACE_H #define COMMON_STACKTRACE_H #include #include #include "common/logLevel.h" /*********************************************************************************************************************************** Maximum size of a single parameter (including NULL terminator) ***********************************************************************************************************************************/ #define STACK_TRACE_PARAM_MAX 4096 /*********************************************************************************************************************************** Macros to access internal functions ***********************************************************************************************************************************/ #define STACK_TRACE_PUSH(logLevel) \ stackTracePush(__FILE__, __func__, logLevel) #ifdef NDEBUG #define STACK_TRACE_POP(test) \ stackTracePop(); #else #define STACK_TRACE_POP(test) \ stackTracePop(__FILE__, __func__, test); #endif /*********************************************************************************************************************************** Internal Functions ***********************************************************************************************************************************/ #ifdef WITH_BACKTRACE void stackTraceInit(const char *exe); #endif #ifndef NDEBUG void stackTraceTestStart(void); void stackTraceTestStop(void); bool stackTraceTest(void); #endif LogLevel stackTracePush(const char *fileName, const char *functionName, LogLevel functionLogLevel); #ifdef NDEBUG void stackTracePop(void); #else void stackTracePop(const char *fileName, const char *functionName, bool test); #endif size_t stackTraceToZ(char *buffer, size_t bufferSize, const char *fileName, const char *functionName, unsigned int fileLine); void stackTraceParamLog(void); const char *stackTraceParam(void); char *stackTraceParamBuffer(const char *param); void stackTraceParamAdd(size_t bufferSize); void stackTraceClean(unsigned int tryDepth); #endif pgbackrest-release-2.24/src/common/time.c000066400000000000000000000160221362531507100203710ustar00rootroot00000000000000/*********************************************************************************************************************************** Time Management ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include "common/debug.h" #include "common/time.h" /*********************************************************************************************************************************** Constants describing number of sub-units in an interval ***********************************************************************************************************************************/ #define MSEC_PER_USEC ((TimeMSec)1000) /*********************************************************************************************************************************** Epoch time in milliseconds ***********************************************************************************************************************************/ TimeMSec timeMSec(void) { FUNCTION_TEST_VOID(); struct timeval currentTime; gettimeofday(¤tTime, NULL); FUNCTION_TEST_RETURN(((TimeMSec)currentTime.tv_sec * MSEC_PER_SEC) + (TimeMSec)currentTime.tv_usec / MSEC_PER_USEC); } /*********************************************************************************************************************************** Sleep for specified milliseconds ***********************************************************************************************************************************/ void sleepMSec(TimeMSec sleepMSec) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT64, sleepMSec); FUNCTION_TEST_END(); struct timeval delay; delay.tv_sec = (time_t)(sleepMSec / MSEC_PER_SEC); delay.tv_usec = (time_t)(sleepMSec % MSEC_PER_SEC * 1000); select(0, NULL, NULL, NULL, &delay); FUNCTION_TEST_RETURN_VOID(); } /**********************************************************************************************************************************/ void datePartsValid(int year, int month, int day) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT, year); FUNCTION_TEST_PARAM(INT, month); FUNCTION_TEST_PARAM(INT, day); FUNCTION_TEST_END(); static const int daysPerMonth[2][12] = { {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, }; if (!(year >= 1970 && month > 0 && month <= 12 && day > 0 && day <= daysPerMonth[yearIsLeap(year) ? 1 : 0][month - 1])) THROW_FMT(FormatError, "invalid date %04d-%02d-%02d", year, month, day); FUNCTION_TEST_RETURN_VOID(); } /**********************************************************************************************************************************/ void timePartsValid(int hour, int minute, int second) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT, hour); FUNCTION_TEST_PARAM(INT, minute); FUNCTION_TEST_PARAM(INT, second); FUNCTION_TEST_END(); if (!(hour >= 0 && hour < 24 && minute >= 0 && minute < 60 && second >= 0 && second < 60)) THROW_FMT(FormatError, "invalid time %02d:%02d:%02d", hour, minute, second); FUNCTION_TEST_RETURN_VOID(); } /**********************************************************************************************************************************/ void tzPartsValid(int tzHour, int tzMinute) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT, tzHour); // signed hour part of timezone FUNCTION_TEST_PARAM(INT, tzMinute); // minutes part of timezone FUNCTION_TEST_END(); // Valid time zones range from GMT-12 all the way to GMT+14 (i.e. -1200 and +1400 are the min/max). // ??? This is only a sanity check for basic validity of timezone offset of 15 minute intervals until the timezone // database is implemented. if (!(((tzHour > -12 && tzHour < 14) && (tzMinute % 15 == 0)) || (tzHour == -12 && tzMinute == 0) || (tzHour == 14 && tzMinute == 0))) { THROW_FMT(FormatError, "invalid timezone %02d%02d", tzHour, tzMinute); } FUNCTION_TEST_RETURN_VOID(); } /**********************************************************************************************************************************/ int tzOffsetSeconds(int tzHour, int tzMinute) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT, tzHour); // signed hour part of timezone (e.g. -7) FUNCTION_TEST_PARAM(INT, tzMinute); // minutes part of timezone FUNCTION_TEST_END(); // Validate the timezone hour and minute tzPartsValid(tzHour, tzMinute); int sign = 1; // Preserve the sign and convert the hours to a positive number for calculating seconds if (tzHour < 0) { sign = -1; tzHour = sign * tzHour; } FUNCTION_TEST_RETURN(sign * (tzHour * 3600 + tzMinute * 60)); } /**********************************************************************************************************************************/ bool yearIsLeap(int year) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT, year); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)); } /**********************************************************************************************************************************/ int dayOfYear(int year, int month, int day) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT, year); FUNCTION_TEST_PARAM(INT, month); FUNCTION_TEST_PARAM(INT, day); FUNCTION_TEST_END(); datePartsValid(year, month, day); static const int cumulativeDaysPerMonth[2][12] = { {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}, {0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335}, }; FUNCTION_TEST_RETURN(cumulativeDaysPerMonth[yearIsLeap(year) ? 1 : 0][month - 1] + day); } /**********************************************************************************************************************************/ time_t epochFromParts(int year, int month, int day, int hour, int minute, int second, int tzOffsetSecond) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT, year); FUNCTION_TEST_PARAM(INT, month); FUNCTION_TEST_PARAM(INT, day); FUNCTION_TEST_PARAM(INT, hour); FUNCTION_TEST_PARAM(INT, minute); FUNCTION_TEST_PARAM(INT, second); FUNCTION_TEST_PARAM(INT, tzOffsetSecond); FUNCTION_TEST_END(); timePartsValid(hour, minute, second); // Return epoch using calculation from https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_16 FUNCTION_TEST_RETURN( -1 * tzOffsetSecond + second + minute * 60 + hour * 3600 + (dayOfYear(year, month, day) - 1) * 86400 + (year - 1900 - 70) * 31536000 + ((year - 1900 - 69) / 4) * 86400 - ((year - 1900 - 1) / 100) * 86400 + ((year - 1900 + 299) / 400) * 86400); } pgbackrest-release-2.24/src/common/time.h000066400000000000000000000057561362531507100204120ustar00rootroot00000000000000/*********************************************************************************************************************************** Time Management ***********************************************************************************************************************************/ #ifndef COMMON_TIME_H #define COMMON_TIME_H #include #include /*********************************************************************************************************************************** Time types ***********************************************************************************************************************************/ typedef uint64_t TimeMSec; /*********************************************************************************************************************************** Constants describing number of sub-units in an interval ***********************************************************************************************************************************/ #define MSEC_PER_SEC ((TimeMSec)1000) /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void sleepMSec(TimeMSec sleepMSec); TimeMSec timeMSec(void); // Are the date parts valid? (year >= 1970, month 1-12, day 1-31) void datePartsValid(int year, int month, int day); // Are the time parts valid? void timePartsValid(int hour, int minute, int second); // Are the timezone offset parts valid? void tzPartsValid(int tzHour, int tzMinute); // Given the hours, minutes and sign of a time zone (e.g. -0700 => -7, 0) return the signed number or seconds (e.g. -25200) int tzOffsetSeconds(int tzHour, int tzMinute); // Is the year a leap year? bool yearIsLeap(int year); // Get days since the beginning of the year (year >= 1970, month 1-12, day 1-31), returns 1-366 int dayOfYear(int year, int month, int day); // Return epoch time from date/time parts (year >= 1970, month 1-12, day 1-31, hour 0-23, minute 0-59, second 0-59, tzOffsetSecond // is the number of seconds plus or minus (+/-) the provided time - if 0, then the datetime is assumed to be UTC) time_t epochFromParts(int year, int month, int day, int hour, int minute, int second, int tzOffsetSecond); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_TIME_MSEC_TYPE \ TimeMSec #define FUNCTION_LOG_TIME_MSEC_FORMAT(value, buffer, bufferSize) \ cvtUInt64ToZ(value, buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/type/000077500000000000000000000000001362531507100202475ustar00rootroot00000000000000pgbackrest-release-2.24/src/common/type/buffer.c000066400000000000000000000377521362531507100217020ustar00rootroot00000000000000/*********************************************************************************************************************************** Buffer Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include "common/debug.h" #include "common/type/buffer.h" #include "common/object.h" /*********************************************************************************************************************************** Constant buffers that are generally useful ***********************************************************************************************************************************/ BUFFER_STRDEF_EXTERN(BRACEL_BUF, "{"); BUFFER_STRDEF_EXTERN(BRACER_BUF, "}"); BUFFER_STRDEF_EXTERN(BRACKETL_BUF, "["); BUFFER_STRDEF_EXTERN(BRACKETR_BUF, "]"); BUFFER_STRDEF_EXTERN(COMMA_BUF, ","); BUFFER_STRDEF_EXTERN(CR_BUF, "\r"); BUFFER_STRDEF_EXTERN(DOT_BUF, "."); BUFFER_STRDEF_EXTERN(EQ_BUF, "="); BUFFER_STRDEF_EXTERN(LF_BUF, "\n"); BUFFER_STRDEF_EXTERN(QUOTED_BUF, "\""); /*********************************************************************************************************************************** Contains information about the buffer ***********************************************************************************************************************************/ struct Buffer { BUFFER_COMMON // Variables that are common to static and dynamic buffers unsigned char *buffer; // Internal buffer MemContext *memContext; // Mem context for dynamic buffers }; OBJECT_DEFINE_MOVE(BUFFER); OBJECT_DEFINE_FREE(BUFFER); /*********************************************************************************************************************************** Create a new buffer ***********************************************************************************************************************************/ Buffer * bufNew(size_t size) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(SIZE, size); FUNCTION_TEST_END(); Buffer *this = NULL; MEM_CONTEXT_NEW_BEGIN("Buffer") { // Create object this = memNew(sizeof(Buffer)); *this = (Buffer) { .memContext = MEM_CONTEXT_NEW(), .size = size, }; // Allocate buffer if (size > 0) this->buffer = memNew(this->size); } MEM_CONTEXT_NEW_END(); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Create a new buffer from a C buffer ***********************************************************************************************************************************/ Buffer * bufNewC(const void *buffer, size_t size) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, buffer); FUNCTION_TEST_PARAM(SIZE, size); FUNCTION_TEST_END(); ASSERT(buffer != NULL); // Create object and copy data Buffer *this = bufNew(size); memcpy(this->buffer, buffer, this->size); this->used = this->size; FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Create a new buffer using the provided C buffer instead of creating one Note that this type of buffer cannot be resized. ***********************************************************************************************************************************/ Buffer * bufNewUseC(void *buffer, size_t size) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, buffer); FUNCTION_TEST_PARAM(SIZE, size); FUNCTION_TEST_END(); ASSERT(buffer != NULL); // Create object and copy data Buffer *this = bufNew(0); this->buffer = buffer; this->size = size; this->fixedSize = true; FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Duplicate a buffer ***********************************************************************************************************************************/ Buffer * bufDup(const Buffer *buffer) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, buffer); FUNCTION_TEST_END(); ASSERT(buffer != NULL); // Create object and copy data Buffer *this = bufNew(buffer->used); memcpy(this->buffer, buffer->buffer, this->size); this->used = this->size; FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Append the contents of another buffer ***********************************************************************************************************************************/ Buffer * bufCat(Buffer *this, const Buffer *cat) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, this); FUNCTION_TEST_PARAM(BUFFER, cat); FUNCTION_TEST_END(); ASSERT(this != NULL); if (cat != NULL) bufCatC(this, cat->buffer, 0, cat->used); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Append a C buffer ***********************************************************************************************************************************/ Buffer * bufCatC(Buffer *this, const unsigned char *cat, size_t catOffset, size_t catSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, this); FUNCTION_TEST_PARAM_P(UCHARDATA, cat); FUNCTION_TEST_PARAM(SIZE, catOffset); FUNCTION_TEST_PARAM(SIZE, catSize); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(catSize == 0 || cat != NULL); if (catSize > 0) { if (this->used + catSize > bufSize(this)) bufResize(this, this->used + catSize); // Just here to silence nonnull warnings from clang static analyzer ASSERT(this->buffer != NULL); memcpy(this->buffer + this->used, cat + catOffset, catSize); this->used += catSize; } FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Append a subset of another buffer ***********************************************************************************************************************************/ Buffer * bufCatSub(Buffer *this, const Buffer *cat, size_t catOffset, size_t catSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, this); FUNCTION_TEST_PARAM(BUFFER, cat); FUNCTION_TEST_PARAM(SIZE, catOffset); FUNCTION_TEST_PARAM(SIZE, catSize); FUNCTION_TEST_END(); ASSERT(this != NULL); if (cat != NULL) { ASSERT(catOffset <= cat->used); ASSERT(catSize <= cat->used - catOffset); bufCatC(this, cat->buffer, catOffset, catSize); } FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Are two buffers equal? ***********************************************************************************************************************************/ bool bufEq(const Buffer *this, const Buffer *compare) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, this); FUNCTION_TEST_PARAM(BUFFER, compare); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(compare != NULL); bool result = false; if (this->used == compare->used) result = memcmp(this->buffer, compare->buffer, compare->used) == 0; FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Convert the buffer to a hex string ***********************************************************************************************************************************/ String * bufHex(const Buffer *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); String *result = strNew(""); for (unsigned int bufferIdx = 0; bufferIdx < bufUsed(this); bufferIdx++) strCatFmt(result, "%02x", this->buffer[bufferIdx]); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Resize the buffer ***********************************************************************************************************************************/ Buffer * bufResize(Buffer *this, size_t size) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, this); FUNCTION_TEST_PARAM(SIZE, size); FUNCTION_TEST_END(); ASSERT(this != NULL); // Only resize if it the new size is different if (this->size != size) { if (this->fixedSize) THROW(AssertError, "fixed size buffer cannot be resized"); // If new size is zero then free memory if allocated if (size == 0) { // When setting size down to 0 the buffer should always be allocated ASSERT(this->buffer != NULL); MEM_CONTEXT_BEGIN(this->memContext) { memFree(this->buffer); } MEM_CONTEXT_END(); this->buffer = NULL; this->size = 0; } // Else allocate or resize else { MEM_CONTEXT_BEGIN(this->memContext) { if (this->buffer == NULL) this->buffer = memNew(size); else this->buffer = memResize(this->buffer, size); } MEM_CONTEXT_END(); this->size = size; } if (this->used > this->size) this->used = this->size; if (this->limitSet && this->limit > this->size) this->limit = this->size; } FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Is the buffer full? ***********************************************************************************************************************************/ bool bufFull(const Buffer *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->used == bufSize(this)); } /*********************************************************************************************************************************** Set and clear buffer limits ***********************************************************************************************************************************/ void bufLimitClear(Buffer *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); this->limitSet = false; FUNCTION_TEST_RETURN_VOID(); } void bufLimitSet(Buffer *this, size_t limit) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, this); FUNCTION_TEST_PARAM(SIZE, limit); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(limit <= this->size); this->limit = limit; this->limitSet = true; FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Return buffer ptr ***********************************************************************************************************************************/ unsigned char * bufPtr(const Buffer *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->buffer); } /*********************************************************************************************************************************** Get remaining space in the buffer ***********************************************************************************************************************************/ size_t bufRemains(const Buffer *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(bufSize(this) - this->used); } /*********************************************************************************************************************************** Return pointer to remaining space in the buffer (after used space) ***********************************************************************************************************************************/ unsigned char * bufRemainsPtr(const Buffer *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->buffer + this->used); } /*********************************************************************************************************************************** Get buffer size ***********************************************************************************************************************************/ size_t bufSize(const Buffer *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->limitSet ? this->limit : this->size); } /*********************************************************************************************************************************** Get/set the amount of the buffer actually used Tracks how much of the buffer has actually been used. This will be updated automatically when possible but if the buffer is modified by using bufPtr() then the user is responsible for updating the used size. ***********************************************************************************************************************************/ size_t bufUsed(const Buffer *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->used); } void bufUsedInc(Buffer *this, size_t inc) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, this); FUNCTION_TEST_PARAM(SIZE, inc); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(this->used + inc <= bufSize(this)); this->used += inc; FUNCTION_TEST_RETURN_VOID(); } void bufUsedSet(Buffer *this, size_t used) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, this); FUNCTION_TEST_PARAM(SIZE, used); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(used <= bufSize(this)); this->used = used; FUNCTION_TEST_RETURN_VOID(); } void bufUsedZero(Buffer *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); this->used = 0; FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * bufToLog(const Buffer *this) { String *result = strNewFmt("{used: %zu, size: %zu, limit: ", this->used, this->size); if (this->limitSet) strCatFmt(result, "%zu}", this->limit); else strCat(result, "}"); return result; } pgbackrest-release-2.24/src/common/type/buffer.h000066400000000000000000000164761362531507100217070ustar00rootroot00000000000000/*********************************************************************************************************************************** Buffer Handler ***********************************************************************************************************************************/ #ifndef COMMON_TYPE_BUFFER_H #define COMMON_TYPE_BUFFER_H /*********************************************************************************************************************************** Buffer object ***********************************************************************************************************************************/ #define BUFFER_TYPE Buffer #define BUFFER_PREFIX buf typedef struct Buffer Buffer; #include "common/memContext.h" #include "common/type/string.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ Buffer *bufNew(size_t size); Buffer *bufNewC(const void *buffer, size_t size); Buffer *bufNewUseC(void *buffer, size_t size); Buffer *bufDup(const Buffer *buffer); Buffer *bufCat(Buffer *this, const Buffer *cat); Buffer *bufCatC(Buffer *this, const unsigned char *cat, size_t catOffset, size_t catSize); Buffer *bufCatSub(Buffer *this, const Buffer *cat, size_t catOffset, size_t catSize); bool bufEq(const Buffer *this, const Buffer *compare); String *bufHex(const Buffer *this); Buffer *bufMove(Buffer *this, MemContext *parentNew); Buffer *bufResize(Buffer *this, size_t size); bool bufFull(const Buffer *this); void bufLimitClear(Buffer *this); void bufLimitSet(Buffer *this, size_t limit); unsigned char *bufPtr(const Buffer *this); size_t bufRemains(const Buffer *this); unsigned char *bufRemainsPtr(const Buffer *this); size_t bufSize(const Buffer *this); size_t bufUsed(const Buffer *this); void bufUsedInc(Buffer *this, size_t inc); void bufUsedSet(Buffer *this, size_t used); void bufUsedZero(Buffer *this); void bufFree(Buffer *this); /*********************************************************************************************************************************** Fields that are common between dynamically allocated and constant buffers There is nothing user-accessible here but this construct allows constant buffers to be created and then handled by the same functions that process dynamically allocated buffers. ***********************************************************************************************************************************/ #define BUFFER_COMMON \ size_t size; /* Actual size of buffer */ \ bool limitSet; /* Has a limit been set? */ \ bool fixedSize; /* Is this a fixed size buffer? */ \ size_t limit; /* Make the buffer appear smaller */ \ size_t used; /* Amount of buffer used */ typedef struct BufferConst { BUFFER_COMMON // This version of buffer is for const macro assignments because casting can be dangerous const void *buffer; } BufferConst; /*********************************************************************************************************************************** Macros for constant buffers Frequently used constant buffers can be declared with these macros at compile time rather than dynamically at run time. Note that buffers created in this way are declared as const so can't be modified or freed by the buf*() methods. Casting to Buffer * will result in a segfault. By convention all buffer constant identifiers are appended with _BUF. ***********************************************************************************************************************************/ // Create a buffer constant inline from an unsigned char[] #define BUF(bufferParam, sizeParam) \ ((const Buffer *)&(const BufferConst){.size = sizeParam, .used = sizeParam, .buffer = bufferParam}) // Create a buffer constant inline from a non-constant zero-terminated string #define BUFSTRZ(stringz) \ BUF((unsigned char *)stringz, strlen(stringz)) // Create a buffer constant inline from a String #define BUFSTR(string) \ BUF((unsigned char *)strPtr(string), strSize(string)) // Create a buffer constant inline from a constant zero-terminated string #define BUFSTRDEF(stringdef) \ BUF((unsigned char *)stringdef, (sizeof(stringdef) - 1)) // Used to declare buffer constants that will be externed using BUFFER_DECLARE(). Must be used in a .c file. #define BUFFER_STRDEF_EXTERN(name, string) \ const Buffer *const name = BUFSTRDEF(string) // Used to declare buffer constants that will be local to the .c file. Must be used in a .c file. #define BUFFER_STRDEF_STATIC(name, string) \ static BUFFER_STRDEF_EXTERN(name, string) // Used to extern buffer constants declared with BUFFER_STRDEF_EXTERN(. Must be used in a .h file. #define BUFFER_DECLARE(name) \ extern const Buffer *const name /*********************************************************************************************************************************** Constant buffers that are generally useful ***********************************************************************************************************************************/ BUFFER_DECLARE(BRACEL_BUF); BUFFER_DECLARE(BRACER_BUF); BUFFER_DECLARE(BRACKETL_BUF); BUFFER_DECLARE(BRACKETR_BUF); BUFFER_DECLARE(COMMA_BUF); BUFFER_DECLARE(CR_BUF); BUFFER_DECLARE(DOT_BUF); BUFFER_DECLARE(EQ_BUF); BUFFER_DECLARE(LF_BUF); BUFFER_DECLARE(QUOTED_BUF); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *bufToLog(const Buffer *this); #define FUNCTION_LOG_BUFFER_TYPE \ Buffer * #define FUNCTION_LOG_BUFFER_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, bufToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/type/convert.c000066400000000000000000000373101362531507100220770ustar00rootroot00000000000000/*********************************************************************************************************************************** Convert Base Data Types ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include #include #include #include "common/debug.h" #include "common/type/convert.h" /*********************************************************************************************************************************** Check results of strto*() function for: * leading/trailing spaces * invalid characters * blank string * error in errno ***********************************************************************************************************************************/ static void cvtZToIntValid(int errNo, int base, const char *value, const char *endPtr, const char *type) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT, errNo); FUNCTION_TEST_PARAM(STRINGZ, value); FUNCTION_TEST_PARAM(STRINGZ, endPtr); FUNCTION_TEST_PARAM(STRINGZ, type); FUNCTION_TEST_END(); ASSERT(value != NULL); ASSERT(endPtr != NULL); if (errNo != 0 || *value == '\0' || isspace(*value) || *endPtr != '\0') THROW_FMT(FormatError, "unable to convert base %d string '%s' to %s", base, value, type); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Convert zero-terminated string to int64 and validate result ***********************************************************************************************************************************/ static int64_t cvtZToInt64Internal(const char *value, const char *type, int base) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, value); FUNCTION_TEST_PARAM(STRINGZ, type); FUNCTION_TEST_END(); ASSERT(value != NULL); ASSERT(type != NULL); // Convert from string errno = 0; char *endPtr = NULL; int64_t result = strtoll(value, &endPtr, base); // Validate the result cvtZToIntValid(errno, base, value, endPtr, type); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Convert zero-terminated string to uint64 and validate result ***********************************************************************************************************************************/ static uint64_t cvtZToUInt64Internal(const char *value, const char *type, int base) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, value); FUNCTION_TEST_PARAM(STRINGZ, type); FUNCTION_TEST_END(); ASSERT(value != NULL); ASSERT(type != NULL); // Convert from string errno = 0; char *endPtr = NULL; uint64_t result = strtoull(value, &endPtr, base); // Validate the result cvtZToIntValid(errno, base, value, endPtr, type); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Convert boolean to zero-terminated string ***********************************************************************************************************************************/ size_t cvtBoolToZ(bool value, char *buffer, size_t bufferSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BOOL, value); FUNCTION_TEST_PARAM_P(CHARDATA, buffer); FUNCTION_TEST_PARAM(SIZE, bufferSize); FUNCTION_TEST_END(); ASSERT(buffer != NULL); size_t result = (size_t)snprintf(buffer, bufferSize, "%s", cvtBoolToConstZ(value)); if (result >= bufferSize) THROW(AssertError, "buffer overflow"); FUNCTION_TEST_RETURN(result); } // Since booleans only have two possible values we can return a const with the value. This is useful when a boolean needs to be // output as part of a large string. const char * cvtBoolToConstZ(bool value) { return value ? TRUE_Z : FALSE_Z; } /*********************************************************************************************************************************** Convert char to zero-terminated string ***********************************************************************************************************************************/ size_t cvtCharToZ(char value, char *buffer, size_t bufferSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BOOL, value); FUNCTION_TEST_PARAM_P(CHARDATA, buffer); FUNCTION_TEST_PARAM(SIZE, bufferSize); FUNCTION_TEST_END(); ASSERT(buffer != NULL); size_t result = (size_t)snprintf(buffer, bufferSize, "%c", value); if (result >= bufferSize) THROW(AssertError, "buffer overflow"); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Convert double to zero-terminated string and vice versa ***********************************************************************************************************************************/ size_t cvtDoubleToZ(double value, char *buffer, size_t bufferSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(DOUBLE, value); FUNCTION_TEST_PARAM_P(CHARDATA, buffer); FUNCTION_TEST_PARAM(SIZE, bufferSize); FUNCTION_TEST_END(); ASSERT(buffer != NULL); // Convert to a string size_t result = (size_t)snprintf(buffer, bufferSize, "%lf", value); if (result >= bufferSize) THROW(AssertError, "buffer overflow"); // Any formatted double should be at least 8 characters, i.e. 0.000000 ASSERT(strlen(buffer) >= 8); // Any formatted double should have a decimal point ASSERT(strchr(buffer, '.') != NULL); // Strip off any final 0s and the decimal point if there are no non-zero digits after it char *end = buffer + strlen(buffer) - 1; while (*end == '0' || *end == '.') { // It should not be possible to go past the beginning because format "%lf" will always write a decimal point ASSERT(end > buffer); end--; if (*(end + 1) == '.') break; } // Zero terminate the string end[1] = 0; // Return string length FUNCTION_TEST_RETURN((size_t)(end - buffer + 1)); } double cvtZToDouble(const char *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, value); FUNCTION_TEST_END(); ASSERT(value != NULL); double result = 0; sscanf(value, "%lf", &result); if (result == 0 && strcmp(value, "0") != 0) THROW_FMT(FormatError, "unable to convert string '%s' to double", value); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Convert int to zero-terminated string and vice versa ***********************************************************************************************************************************/ size_t cvtIntToZ(int value, char *buffer, size_t bufferSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT, value); FUNCTION_TEST_PARAM_P(CHARDATA, buffer); FUNCTION_TEST_PARAM(SIZE, bufferSize); FUNCTION_TEST_END(); ASSERT(buffer != NULL); size_t result = (size_t)snprintf(buffer, bufferSize, "%d", value); if (result >= bufferSize) THROW(AssertError, "buffer overflow"); FUNCTION_TEST_RETURN(result); } int cvtZToIntBase(const char *value, int base) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, value); FUNCTION_TEST_END(); ASSERT(value != NULL); int64_t result = cvtZToInt64Internal(value, "int", base); if (result > INT_MAX || result < INT_MIN) THROW_FMT(FormatError, "unable to convert base %d string '%s' to int", base, value); FUNCTION_TEST_RETURN((int)result); } int cvtZToInt(const char *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, value); FUNCTION_TEST_END(); ASSERT(value != NULL); FUNCTION_TEST_RETURN(cvtZToIntBase(value, 10)); } /*********************************************************************************************************************************** Convert int64 to zero-terminated string and vice versa ***********************************************************************************************************************************/ size_t cvtInt64ToZ(int64_t value, char *buffer, size_t bufferSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT64, value); FUNCTION_TEST_PARAM_P(CHARDATA, buffer); FUNCTION_TEST_PARAM(SIZE, bufferSize); FUNCTION_TEST_END(); ASSERT(buffer != NULL); size_t result = (size_t)snprintf(buffer, bufferSize, "%" PRId64, value); if (result >= bufferSize) THROW(AssertError, "buffer overflow"); FUNCTION_TEST_RETURN(result); } int64_t cvtZToInt64Base(const char *value, int base) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, value); FUNCTION_TEST_END(); ASSERT(value != NULL); FUNCTION_TEST_RETURN(cvtZToInt64Internal(value, "int64", base)); } int64_t cvtZToInt64(const char *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, value); FUNCTION_TEST_END(); ASSERT(value != NULL); FUNCTION_TEST_RETURN(cvtZToInt64Base(value, 10)); } /*********************************************************************************************************************************** Convert mode to zero-terminated string ***********************************************************************************************************************************/ size_t cvtModeToZ(mode_t value, char *buffer, size_t bufferSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MODE, value); FUNCTION_TEST_PARAM_P(CHARDATA, buffer); FUNCTION_TEST_PARAM(SIZE, bufferSize); FUNCTION_TEST_END(); ASSERT(buffer != NULL); size_t result = (size_t)snprintf(buffer, bufferSize, "%04o", value); if (result >= bufferSize) THROW(AssertError, "buffer overflow"); FUNCTION_TEST_RETURN(result); } mode_t cvtZToMode(const char *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, value); FUNCTION_TEST_END(); ASSERT(value != NULL); FUNCTION_TEST_RETURN(cvtZToUIntBase(value, 8)); } /*********************************************************************************************************************************** Convert size to zero-terminated string ***********************************************************************************************************************************/ size_t cvtSizeToZ(size_t value, char *buffer, size_t bufferSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(SIZE, value); FUNCTION_TEST_PARAM_P(CHARDATA, buffer); FUNCTION_TEST_PARAM(SIZE, bufferSize); FUNCTION_TEST_END(); ASSERT(buffer != NULL); size_t result = (size_t)snprintf(buffer, bufferSize, "%zu", value); if (result >= bufferSize) THROW(AssertError, "buffer overflow"); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Convert ssize to zero-terminated string ***********************************************************************************************************************************/ size_t cvtSSizeToZ(ssize_t value, char *buffer, size_t bufferSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(SSIZE, value); FUNCTION_TEST_PARAM_P(CHARDATA, buffer); FUNCTION_TEST_PARAM(SIZE, bufferSize); FUNCTION_TEST_END(); ASSERT(buffer != NULL); size_t result = (size_t)snprintf(buffer, bufferSize, "%zd", value); if (result >= bufferSize) THROW(AssertError, "buffer overflow"); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Convert time_t to zero-terminated string ***********************************************************************************************************************************/ size_t cvtTimeToZ(time_t value, char *buffer, size_t bufferSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(TIME, value); FUNCTION_TEST_PARAM_P(CHARDATA, buffer); FUNCTION_TEST_PARAM(SIZE, bufferSize); FUNCTION_TEST_END(); ASSERT(buffer != NULL); size_t result = strftime(buffer, bufferSize, "%s", localtime(&value)); if (result == 0) THROW(AssertError, "buffer overflow"); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Convert uint to zero-terminated string ***********************************************************************************************************************************/ size_t cvtUIntToZ(unsigned int value, char *buffer, size_t bufferSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, value); FUNCTION_TEST_PARAM_P(CHARDATA, buffer); FUNCTION_TEST_PARAM(SIZE, bufferSize); FUNCTION_TEST_END(); ASSERT(buffer != NULL); size_t result = (size_t)snprintf(buffer, bufferSize, "%u", value); if (result >= bufferSize) THROW(AssertError, "buffer overflow"); FUNCTION_TEST_RETURN(result); } unsigned int cvtZToUIntBase(const char *value, int base) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, value); FUNCTION_TEST_END(); ASSERT(value != NULL); uint64_t result = cvtZToUInt64Internal(value, "unsigned int", base); // Don't allow negative numbers even though strtoull() does and check max value if (*value == '-' || result > UINT_MAX) THROW_FMT(FormatError, "unable to convert base %d string '%s' to unsigned int", base, value); FUNCTION_TEST_RETURN((unsigned int)result); } unsigned int cvtZToUInt(const char *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, value); FUNCTION_TEST_END(); ASSERT(value != NULL); FUNCTION_TEST_RETURN(cvtZToUIntBase(value, 10)); } /*********************************************************************************************************************************** Convert uint64 to zero-terminated string and visa versa ***********************************************************************************************************************************/ size_t cvtUInt64ToZ(uint64_t value, char *buffer, size_t bufferSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT64, value); FUNCTION_TEST_PARAM_P(CHARDATA, buffer); FUNCTION_TEST_PARAM(SIZE, bufferSize); FUNCTION_TEST_END(); ASSERT(buffer != NULL); size_t result = (size_t)snprintf(buffer, bufferSize, "%" PRIu64, value); if (result >= bufferSize) THROW(AssertError, "buffer overflow"); FUNCTION_TEST_RETURN(result); } uint64_t cvtZToUInt64Base(const char *value, int base) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, value); FUNCTION_TEST_END(); ASSERT(value != NULL); uint64_t result = cvtZToUInt64Internal(value, "uint64", base); // Don't allow negative numbers even though strtoull() does if (*value == '-') THROW_FMT(FormatError, "unable to convert base %d string '%s' to uint64", base, value); FUNCTION_TEST_RETURN(result); } uint64_t cvtZToUInt64(const char *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, value); FUNCTION_TEST_END(); ASSERT(value != NULL); FUNCTION_TEST_RETURN(cvtZToUInt64Base(value, 10)); } pgbackrest-release-2.24/src/common/type/convert.h000066400000000000000000000045021362531507100221010ustar00rootroot00000000000000/*********************************************************************************************************************************** Convert Base Data Types ***********************************************************************************************************************************/ #ifndef COMMON_TYPE_CONVERT_H #define COMMON_TYPE_CONVERT_H #include #include #include /*********************************************************************************************************************************** Required buffer sizes ***********************************************************************************************************************************/ #define CVT_BOOL_BUFFER_SIZE 6 #define CVT_BASE10_BUFFER_SIZE 64 /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ size_t cvtCharToZ(char value, char *buffer, size_t bufferSize); size_t cvtDoubleToZ(double value, char *buffer, size_t bufferSize); double cvtZToDouble(const char *value); size_t cvtIntToZ(int value, char *buffer, size_t bufferSize); int cvtZToInt(const char *value); int cvtZToIntBase(const char *value, int base); size_t cvtInt64ToZ(int64_t value, char *buffer, size_t bufferSize); int64_t cvtZToInt64(const char *value); int64_t cvtZToInt64Base(const char *value, int base); size_t cvtModeToZ(mode_t value, char *buffer, size_t bufferSize); mode_t cvtZToMode(const char *value); size_t cvtSizeToZ(size_t value, char *buffer, size_t bufferSize); size_t cvtSSizeToZ(ssize_t value, char *buffer, size_t bufferSize); size_t cvtTimeToZ(time_t value, char *buffer, size_t bufferSize); size_t cvtUIntToZ(unsigned int value, char *buffer, size_t bufferSize); unsigned int cvtZToUInt(const char *value); unsigned int cvtZToUIntBase(const char *value, int base); size_t cvtUInt64ToZ(uint64_t value, char *buffer, size_t bufferSize); uint64_t cvtZToUInt64(const char *value); uint64_t cvtZToUInt64Base(const char *value, int base); const char *cvtBoolToConstZ(bool value); size_t cvtBoolToZ(bool value, char *buffer, size_t bufferSize); #endif pgbackrest-release-2.24/src/common/type/json.c000066400000000000000000000722761362531507100214020ustar00rootroot00000000000000/*********************************************************************************************************************************** Convert JSON to/from KeyValue ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include "common/debug.h" #include "common/log.h" #include "common/type/json.h" /*********************************************************************************************************************************** Prototypes ***********************************************************************************************************************************/ static Variant *jsonToVarInternal(const char *json, unsigned int *jsonPos); /*********************************************************************************************************************************** Consume whitespace ***********************************************************************************************************************************/ static void jsonConsumeWhiteSpace(const char *json, unsigned int *jsonPos) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, json); FUNCTION_TEST_PARAM_P(UINT, jsonPos); FUNCTION_TEST_END(); // Consume whitespace while (json[*jsonPos] == ' ' || json[*jsonPos] == '\t' || json[*jsonPos] == '\n' || json[*jsonPos] == '\r') (*jsonPos)++; FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Convert a json string to a bool ***********************************************************************************************************************************/ static bool jsonToBoolInternal(const char *json, unsigned int *jsonPos) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, json); FUNCTION_TEST_PARAM_P(UINT, jsonPos); FUNCTION_TEST_END(); bool result; if (strncmp(json + *jsonPos, TRUE_Z, 4) == 0) { result = true; *jsonPos += 4; } else if (strncmp(json + *jsonPos, FALSE_Z, 5) == 0) { result = false; *jsonPos += 5; } else THROW_FMT(JsonFormatError, "expected boolean at '%s'", json + *jsonPos); FUNCTION_TEST_RETURN(result); } bool jsonToBool(const String *json) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, json); FUNCTION_TEST_END(); unsigned int jsonPos = 0; jsonConsumeWhiteSpace(strPtr(json), &jsonPos); bool result = jsonToBoolInternal(strPtr(json), &jsonPos); jsonConsumeWhiteSpace(strPtr(json), &jsonPos); if (jsonPos != strSize(json)) THROW_FMT(JsonFormatError, "unexpected characters after boolean at '%s'", strPtr(json) + jsonPos); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Convert a json number to various integer types ***********************************************************************************************************************************/ static Variant * jsonToNumberInternal(const char *json, unsigned int *jsonPos) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, json); FUNCTION_TEST_PARAM_P(UINT, jsonPos); FUNCTION_TEST_END(); Variant *result = NULL; unsigned int beginPos = *jsonPos; bool intSigned = false; // Consume the - if (json[*jsonPos] == '-') { (*jsonPos)++; intSigned = true; } // Consume all digits while (isdigit(json[*jsonPos])) (*jsonPos)++; // Invalid if only a - was found if (json[*jsonPos - 1] == '-') THROW_FMT(JsonFormatError, "found '-' with no integer at '%s'", json + beginPos); MEM_CONTEXT_TEMP_BEGIN() { // Extract the numeric as a string String *resultStr = strNewN(json + beginPos, *jsonPos - beginPos); // Convert the string to a integer variant MEM_CONTEXT_PRIOR_BEGIN() { if (intSigned) result = varNewInt64(cvtZToInt64(strPtr(resultStr))); else result = varNewUInt64(cvtZToUInt64(strPtr(resultStr))); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } static Variant * jsonToNumber(const String *json) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, json); FUNCTION_TEST_END(); unsigned int jsonPos = 0; jsonConsumeWhiteSpace(strPtr(json), &jsonPos); Variant *result = jsonToNumberInternal(strPtr(json), &jsonPos); jsonConsumeWhiteSpace(strPtr(json), &jsonPos); if (jsonPos != strSize(json)) THROW_FMT(JsonFormatError, "unexpected characters after number at '%s'", strPtr(json) + jsonPos); FUNCTION_TEST_RETURN(result); } int jsonToInt(const String *json) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, json); FUNCTION_TEST_END(); int result = 0; MEM_CONTEXT_TEMP_BEGIN() { result = varIntForce(jsonToNumber(json)); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } int64_t jsonToInt64(const String *json) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, json); FUNCTION_TEST_END(); int64_t result = 0; MEM_CONTEXT_TEMP_BEGIN() { result = varInt64Force(jsonToNumber(json)); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } unsigned int jsonToUInt(const String *json) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, json); FUNCTION_TEST_END(); unsigned int result = 0; MEM_CONTEXT_TEMP_BEGIN() { result = varUIntForce(jsonToNumber(json)); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } uint64_t jsonToUInt64(const String *json) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, json); FUNCTION_TEST_END(); uint64_t result = 0; MEM_CONTEXT_TEMP_BEGIN() { result = varUInt64Force(jsonToNumber(json)); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Convert a json string to a String ***********************************************************************************************************************************/ static String * jsonToStrInternal(const char *json, unsigned int *jsonPos) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, json); FUNCTION_TEST_PARAM_P(UINT, jsonPos); FUNCTION_TEST_END(); String *result = strNew(""); if (json[*jsonPos] != '"') THROW_FMT(JsonFormatError, "expected '\"' at '%s'", json + *jsonPos); MEM_CONTEXT_TEMP_BEGIN() { (*jsonPos)++; while (json[*jsonPos] != '"') { if (json[*jsonPos] == '\\') { (*jsonPos)++;; switch (json[*jsonPos]) { case '"': strCatChr(result, '"'); break; case '\\': strCatChr(result, '\\'); break; case '/': strCatChr(result, '/'); break; case 'n': strCatChr(result, '\n'); break; case 'r': strCatChr(result, '\r'); break; case 't': strCatChr(result, '\t'); break; case 'b': strCatChr(result, '\b'); break; case 'f': strCatChr(result, '\f'); break; default: THROW_FMT(JsonFormatError, "invalid escape character '%c'", json[*jsonPos]); } } else { if (json[*jsonPos] == '\0') THROW(JsonFormatError, "expected '\"' but found null delimiter"); strCatChr(result, json[*jsonPos]); } (*jsonPos)++;; }; // Advance the character array pointer to the next element after the string (*jsonPos)++;; } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } String * jsonToStr(const String *json) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, json); FUNCTION_TEST_END(); unsigned int jsonPos = 0; jsonConsumeWhiteSpace(strPtr(json), &jsonPos); String *result = NULL; if (strncmp(strPtr(json), NULL_Z, 4) == 0) jsonPos += 4; else result = jsonToStrInternal(strPtr(json), &jsonPos); jsonConsumeWhiteSpace(strPtr(json), &jsonPos); if (jsonPos != strSize(json)) THROW_FMT(JsonFormatError, "unexpected characters after string at '%s'", strPtr(json) + jsonPos); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Convert a json object to a KeyValue ***********************************************************************************************************************************/ static KeyValue * jsonToKvInternal(const char *json, unsigned int *jsonPos) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, json); FUNCTION_TEST_PARAM_P(UINT, jsonPos); FUNCTION_TEST_END(); KeyValue *result = kvNew(); MEM_CONTEXT_TEMP_BEGIN() { // Move position to the first key/value in the object (*jsonPos)++; jsonConsumeWhiteSpace(json, jsonPos); // Only proceed if the array is not empty if (json[*jsonPos] != '}') { do { if (json[*jsonPos] == ',') { (*jsonPos)++; jsonConsumeWhiteSpace(json, jsonPos); } Variant *key = varNewStr(jsonToStrInternal(json, jsonPos)); jsonConsumeWhiteSpace(json, jsonPos); if (json[*jsonPos] != ':') THROW_FMT(JsonFormatError, "expected ':' at '%s'", json + *jsonPos); (*jsonPos)++; jsonConsumeWhiteSpace(json, jsonPos); kvPut(result, key, jsonToVarInternal(json, jsonPos)); } while (json[*jsonPos] == ','); } if (json[*jsonPos] != '}') THROW_FMT(JsonFormatError, "expected '}' at '%s'", json + *jsonPos); (*jsonPos)++; } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } KeyValue * jsonToKv(const String *json) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, json); FUNCTION_TEST_END(); unsigned int jsonPos = 0; jsonConsumeWhiteSpace(strPtr(json), &jsonPos); if (strPtr(json)[jsonPos] != '{') THROW_FMT(JsonFormatError, "expected '{' at '%s'", strPtr(json) + jsonPos); KeyValue *result = jsonToKvInternal(strPtr(json), &jsonPos); jsonConsumeWhiteSpace(strPtr(json), &jsonPos); if (jsonPos != strSize(json)) THROW_FMT(JsonFormatError, "unexpected characters after object at '%s'", strPtr(json) + jsonPos); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Convert a json string to an array ***********************************************************************************************************************************/ static VariantList * jsonToVarLstInternal(const char *json, unsigned int *jsonPos) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, json); FUNCTION_TEST_PARAM_P(UINT, jsonPos); FUNCTION_TEST_END(); VariantList *result = varLstNew(); if (json[*jsonPos] != '[') THROW_FMT(JsonFormatError, "expected '[' at '%s'", json + *jsonPos); MEM_CONTEXT_TEMP_BEGIN() { // Move position to the first element in the array (*jsonPos)++; jsonConsumeWhiteSpace(json, jsonPos); // Only proceed if the array is not empty if (json[*jsonPos] != ']') { do { if (json[*jsonPos] == ',') { (*jsonPos)++; jsonConsumeWhiteSpace(json, jsonPos); } MEM_CONTEXT_PRIOR_BEGIN() { varLstAdd(result, jsonToVarInternal(json, jsonPos)); } MEM_CONTEXT_PRIOR_END(); jsonConsumeWhiteSpace(json, jsonPos); } while (json[*jsonPos] == ','); } if (json[*jsonPos] != ']') THROW_FMT(JsonFormatError, "expected ']' at '%s'", json + *jsonPos); (*jsonPos)++; } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } VariantList * jsonToVarLst(const String *json) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, json); FUNCTION_TEST_END(); unsigned int jsonPos = 0; jsonConsumeWhiteSpace(strPtr(json), &jsonPos); VariantList *result = jsonToVarLstInternal(strPtr(json), &jsonPos); jsonConsumeWhiteSpace(strPtr(json), &jsonPos); if (jsonPos != strSize(json)) THROW_FMT(JsonFormatError, "unexpected characters after array at '%s'", strPtr(json) + jsonPos); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Convert JSON to a variant ***********************************************************************************************************************************/ static Variant * jsonToVarInternal(const char *json, unsigned int *jsonPos) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, json); FUNCTION_TEST_PARAM_P(UINT, jsonPos); FUNCTION_TEST_END(); Variant *result = NULL; jsonConsumeWhiteSpace(json, jsonPos); // There should be some data if (json[*jsonPos] == '\0') THROW(JsonFormatError, "expected data"); // Determine data type switch (json[*jsonPos]) { // String case '"': { result = varNewStr(jsonToStrInternal(json, jsonPos)); break; } // Integer case '-': case '0' ... '9': { result = jsonToNumberInternal(json, jsonPos); break; } // Boolean case 't': case 'f': { result = varNewBool(jsonToBoolInternal(json, jsonPos)); break; } // Null case 'n': { if (strncmp(json + *jsonPos, NULL_Z, 4) == 0) *jsonPos += 4; else THROW_FMT(JsonFormatError, "expected null at '%s'", json + *jsonPos); break; } // Array case '[': { result = varNewVarLst(jsonToVarLstInternal(json, jsonPos)); break; } // Object case '{': { result = varNewKv(jsonToKvInternal(json, jsonPos)); break; } // Object default: { THROW_FMT(JsonFormatError, "invalid type at '%s'", json + *jsonPos); break; } } jsonConsumeWhiteSpace(json, jsonPos); FUNCTION_TEST_RETURN(result); } Variant * jsonToVar(const String *json) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, json); FUNCTION_LOG_END(); const char *jsonPtr = strPtr(json); unsigned int jsonPos = 0; FUNCTION_LOG_RETURN(VARIANT, jsonToVarInternal(jsonPtr, &jsonPos)); } /*********************************************************************************************************************************** Convert a boolean to JSON ***********************************************************************************************************************************/ const String * jsonFromBool(bool value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BOOL, value); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN(value ? TRUE_STR : FALSE_STR); } /*********************************************************************************************************************************** Convert a number to JSON ***********************************************************************************************************************************/ String * jsonFromInt(int number) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT, number); FUNCTION_TEST_END(); char working[CVT_BASE10_BUFFER_SIZE]; cvtIntToZ(number, working, sizeof(working)); FUNCTION_TEST_RETURN(strNew(working)); } String * jsonFromInt64(int64_t number) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT64, number); FUNCTION_TEST_END(); char working[CVT_BASE10_BUFFER_SIZE]; cvtInt64ToZ(number, working, sizeof(working)); FUNCTION_TEST_RETURN(strNew(working)); } String * jsonFromUInt(unsigned int number) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, number); FUNCTION_TEST_END(); char working[CVT_BASE10_BUFFER_SIZE]; cvtUIntToZ(number, working, sizeof(working)); FUNCTION_TEST_RETURN(strNew(working)); } String * jsonFromUInt64(uint64_t number) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT64, number); FUNCTION_TEST_END(); char working[CVT_BASE10_BUFFER_SIZE]; cvtUInt64ToZ(number, working, sizeof(working)); FUNCTION_TEST_RETURN(strNew(working)); } /*********************************************************************************************************************************** Output and escape a string ***********************************************************************************************************************************/ static void jsonFromStrInternal(String *json, const String *string) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, json); FUNCTION_TEST_PARAM(STRING, string); FUNCTION_TEST_END(); ASSERT(json != NULL); // If string is null if (string == NULL) { strCat(json, NULL_Z); } // Else escape and output string else { strCatChr(json, '"'); for (unsigned int stringIdx = 0; stringIdx < strSize(string); stringIdx++) { char stringChr = strPtr(string)[stringIdx]; switch (stringChr) { case '"': strCat(json, "\\\""); break; case '\\': strCat(json, "\\\\"); break; case '\n': strCat(json, "\\n"); break; case '\r': strCat(json, "\\r"); break; case '\t': strCat(json, "\\t"); break; case '\b': strCat(json, "\\b"); break; case '\f': strCat(json, "\\f"); break; default: strCatChr(json, stringChr); break; } } strCatChr(json, '"'); } FUNCTION_TEST_RETURN_VOID(); } String * jsonFromStr(const String *string) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, string); FUNCTION_TEST_END(); String *json = strNew(""); jsonFromStrInternal(json, string); FUNCTION_TEST_RETURN(json); } /*********************************************************************************************************************************** Internal recursive function to walk a KeyValue and return a json string ***********************************************************************************************************************************/ static String * jsonFromKvInternal(const KeyValue *kv) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(KEY_VALUE, kv); FUNCTION_TEST_END(); ASSERT(kv != NULL); String *result = strNew("{"); MEM_CONTEXT_TEMP_BEGIN() { const StringList *keyList = strLstSort(strLstNewVarLst(kvKeyList(kv)), sortOrderAsc); for (unsigned int keyIdx = 0; keyIdx < strLstSize(keyList); keyIdx++) { String *key = strLstGet(keyList, keyIdx); const Variant *value = kvGet(kv, VARSTR(key)); // If going to add another key, prepend a comma if (keyIdx > 0) strCat(result, ","); // Keys are always strings in the output, so add starting quote and colon. strCatFmt(result, "\"%s\":", strPtr(key)); // NULL value if (value == NULL) strCat(result, NULL_Z); else { switch (varType(value)) { case varTypeKeyValue: { strCat(result, strPtr(jsonFromKvInternal(kvDup(varKv(value))))); break; } case varTypeVariantList: { // If the array is empty, then do not add formatting, else process the array. if (varVarLst(value) == NULL) strCat(result, NULL_Z); else if (varLstSize(varVarLst(value)) == 0) strCat(result, "[]"); else { strCat(result, "["); for (unsigned int arrayIdx = 0; arrayIdx < varLstSize(varVarLst(value)); arrayIdx++) { Variant *arrayValue = varLstGet(varVarLst(value), arrayIdx); // If going to add another element, add a comma if (arrayIdx > 0) strCat(result, ","); // If array value is null if (arrayValue == NULL) { strCat(result, NULL_Z); } // If the type is a string, add leading and trailing double quotes else if (varType(arrayValue) == varTypeString) { jsonFromStrInternal(result, varStr(arrayValue)); } else if (varType(arrayValue) == varTypeKeyValue) { strCat(result, strPtr(jsonFromKvInternal(kvDup(varKv(arrayValue))))); } else if (varType(arrayValue) == varTypeVariantList) { strCat(result, strPtr(jsonFromVar(arrayValue))); } // Numeric, Boolean or other type else strCat(result, strPtr(varStrForce(arrayValue))); } strCat(result, "]"); } break; } // String case varTypeString: { jsonFromStrInternal(result, varStr(value)); break; } default: { strCat(result, strPtr(varStrForce(value))); break; } } } } result = strCat(result, "}"); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Convert KeyValue object to JSON string. Currently this function is only intended to convert the limited types that are included in info files. More types will be added as needed. Since this function is only intended to read internally-generated JSON it is assumed to be well-formed with no extraneous whitespace. ***********************************************************************************************************************************/ String * jsonFromKv(const KeyValue *kv) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(KEY_VALUE, kv); FUNCTION_LOG_END(); ASSERT(kv != NULL); String *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { String *jsonStr = jsonFromKvInternal(kv); // Duplicate the string into the prior context MEM_CONTEXT_PRIOR_BEGIN() { result = strDup(jsonStr); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING, result); } /*********************************************************************************************************************************** Convert Variant object to JSON string. Currently this function is only intended to convert the limited types that are included in info files. More types will be added as needed. ***********************************************************************************************************************************/ String * jsonFromVar(const Variant *var) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(VARIANT, var); FUNCTION_LOG_END(); String *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { String *jsonStr = strNew(""); // If VariantList then process each item in the array. Currently the list must be KeyValue types. if (var == NULL) { strCat(jsonStr, strPtr(NULL_STR)); } else if (varType(var) == varTypeBool) { strCat(jsonStr, strPtr(jsonFromBool(varBool(var)))); } else if (varType(var) == varTypeUInt) { strCat(jsonStr, strPtr(jsonFromUInt(varUInt(var)))); } else if (varType(var) == varTypeUInt64) { strCat(jsonStr, strPtr(jsonFromUInt64(varUInt64(var)))); } else if (varType(var) == varTypeString) { jsonFromStrInternal(jsonStr, varStr(var)); } else if (varType(var) == varTypeVariantList) { const VariantList *vl = varVarLst(var); // If not an empty array if (varLstSize(vl) > 0) { strCat(jsonStr, "["); // Currently only KeyValue and String lists are supported for (unsigned int vlIdx = 0; vlIdx < varLstSize(vl); vlIdx++) { // If going to add another key, append a comma if (vlIdx > 0) strCat(jsonStr, ","); Variant *varSub = varLstGet(vl, vlIdx); if (varSub == NULL) { strCat(jsonStr, NULL_Z); } else if (varType(varSub) == varTypeBool) { strCat(jsonStr, strPtr(jsonFromBool(varBool(varSub)))); } else if (varType(varSub) == varTypeKeyValue) { strCat(jsonStr, strPtr(jsonFromKvInternal(varKv(varSub)))); } else if (varType(varSub) == varTypeVariantList) { strCat(jsonStr, strPtr(jsonFromVar(varSub))); } else if (varType(varSub) == varTypeInt) { strCat(jsonStr, strPtr(jsonFromInt(varInt(varSub)))); } else if (varType(varSub) == varTypeInt64) { strCat(jsonStr, strPtr(jsonFromInt64(varInt64(varSub)))); } else if (varType(varSub) == varTypeUInt) { strCat(jsonStr, strPtr(jsonFromUInt(varUInt(varSub)))); } else if (varType(varSub) == varTypeUInt64) { strCat(jsonStr, strPtr(jsonFromUInt64(varUInt64(varSub)))); } else jsonFromStrInternal(jsonStr, varStr(varSub)); } // Close the array strCat(jsonStr, "]"); } // Else empty array else strCat(jsonStr, "[]"); } else if (varType(var) == varTypeKeyValue) { strCat(jsonStr, strPtr(jsonFromKvInternal(varKv(var)))); } else THROW(JsonFormatError, "variant type is invalid"); // Duplicate the string into the prior context MEM_CONTEXT_PRIOR_BEGIN() { result = strDup(jsonStr); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING, result); } pgbackrest-release-2.24/src/common/type/json.h000066400000000000000000000025161362531507100213750ustar00rootroot00000000000000/*********************************************************************************************************************************** Convert JSON to/from KeyValue ***********************************************************************************************************************************/ #ifndef COMMON_TYPE_JSON_H #define COMMON_TYPE_JSON_H #include "common/type/keyValue.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ bool jsonToBool(const String *json); int jsonToInt(const String *json); int64_t jsonToInt64(const String *json); KeyValue *jsonToKv(const String *json); String *jsonToStr(const String *json); unsigned int jsonToUInt(const String *json); uint64_t jsonToUInt64(const String *json); Variant *jsonToVar(const String *json); VariantList *jsonToVarLst(const String *json); const String *jsonFromBool(bool value); String *jsonFromInt(int number); String *jsonFromInt64(int64_t number); String *jsonFromKv(const KeyValue *kv); String *jsonFromStr(const String *string); String *jsonFromUInt(unsigned int number); String *jsonFromUInt64(uint64_t number); String *jsonFromVar(const Variant *var); #endif pgbackrest-release-2.24/src/common/type/keyValue.c000066400000000000000000000322261362531507100222050ustar00rootroot00000000000000/*********************************************************************************************************************************** Key Value Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/debug.h" #include "common/memContext.h" #include "common/object.h" #include "common/type/keyValue.h" #include "common/type/list.h" #include "common/type/variantList.h" /*********************************************************************************************************************************** Constant to indicate key not found ***********************************************************************************************************************************/ #define KEY_NOT_FOUND UINT_MAX /*********************************************************************************************************************************** Contains information about the key value store ***********************************************************************************************************************************/ struct KeyValue { MemContext *memContext; // Mem context for the store List *list; // List of keys/values VariantList *keyList; // List of keys }; OBJECT_DEFINE_MOVE(KEY_VALUE); OBJECT_DEFINE_FREE(KEY_VALUE); /*********************************************************************************************************************************** Contains information about an individual key/value pair ***********************************************************************************************************************************/ typedef struct KeyValuePair { Variant *key; // The key Variant *value; // The value (this may be NULL) } KeyValuePair; /*********************************************************************************************************************************** Create a new key/value store ***********************************************************************************************************************************/ KeyValue * kvNew(void) { FUNCTION_TEST_VOID(); KeyValue *this = NULL; MEM_CONTEXT_NEW_BEGIN("KeyValue") { // Allocate state and set context this = memNew(sizeof(KeyValue)); *this = (KeyValue) { .memContext = MEM_CONTEXT_NEW(), .list = lstNew(sizeof(KeyValuePair)), .keyList = varLstNew(), }; } MEM_CONTEXT_NEW_END(); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Duplicate key/value store ***********************************************************************************************************************************/ KeyValue * kvDup(const KeyValue *source) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(KEY_VALUE, source); FUNCTION_TEST_END(); ASSERT(source != NULL); KeyValue *this = kvNew(); // Duplicate all key/values for (unsigned int listIdx = 0; listIdx < lstSize(source->list); listIdx++) { const KeyValuePair *sourcePair = (const KeyValuePair *)lstGet(source->list, listIdx); // Copy the pair KeyValuePair pair; pair.key = varDup(sourcePair->key); pair.value = varDup(sourcePair->value); // Add to the list lstAdd(this->list, &pair); } this->keyList = varLstDup(source->keyList); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Get key index if it exists ***********************************************************************************************************************************/ static unsigned int kvGetIdx(const KeyValue *this, const Variant *key) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(KEY_VALUE, this); FUNCTION_TEST_PARAM(VARIANT, key); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(key != NULL); // Search for the key unsigned int result = KEY_NOT_FOUND; for (unsigned int listIdx = 0; listIdx < lstSize(this->list); listIdx++) { const KeyValuePair *pair = (const KeyValuePair *)lstGet(this->list, listIdx); // Break if the key matches if (varEq(key, pair->key)) { result = listIdx; break; } } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Does the key exist (even if the value is NULL) ***********************************************************************************************************************************/ bool kvKeyExists(const KeyValue *this, const Variant *key) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(KEY_VALUE, this); FUNCTION_TEST_PARAM(VARIANT, key); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN(kvGetIdx(this, key) != KEY_NOT_FOUND); } /*********************************************************************************************************************************** Get list of keys ***********************************************************************************************************************************/ const VariantList * kvKeyList(const KeyValue *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(KEY_VALUE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->keyList); } /*********************************************************************************************************************************** Internal put key/value pair Handles the common logic for the external put functions. The correct mem context should be set before calling this function. ***********************************************************************************************************************************/ static void kvPutInternal(KeyValue *this, const Variant *key, Variant *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(KEY_VALUE, this); FUNCTION_TEST_PARAM(VARIANT, key); FUNCTION_TEST_PARAM(VARIANT, value); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(key != NULL); // Find the key unsigned int listIdx = kvGetIdx(this, key); // If the key was not found then add it if (listIdx == KEY_NOT_FOUND) { // Copy the pair KeyValuePair pair; pair.key = varDup(key); pair.value = value; // Add to the list lstAdd(this->list, &pair); // Add to the key list varLstAdd(this->keyList, varDup(key)); } // Else update it else { KeyValuePair *pair = (KeyValuePair *)lstGet(this->list, listIdx); if (pair->value != NULL) varFree(pair->value); pair->value = value; } FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Put key/value pair ***********************************************************************************************************************************/ KeyValue * kvPut(KeyValue *this, const Variant *key, const Variant *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(KEY_VALUE, this); FUNCTION_TEST_PARAM(VARIANT, key); FUNCTION_TEST_PARAM(VARIANT, value); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(key != NULL); MEM_CONTEXT_BEGIN(this->memContext) { kvPutInternal(this, key, varDup(value)); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Add value to key -- if the key does not exist then this works the same as kvPut() ***********************************************************************************************************************************/ KeyValue * kvAdd(KeyValue *this, const Variant *key, const Variant *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(KEY_VALUE, this); FUNCTION_TEST_PARAM(VARIANT, key); FUNCTION_TEST_PARAM(VARIANT, value); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(key != NULL); MEM_CONTEXT_BEGIN(this->memContext) { // Find the key unsigned int listIdx = kvGetIdx(this, key); // If the key was not found then add it if (listIdx == KEY_NOT_FOUND) { kvPutInternal(this, key, varDup(value)); } // Else create or add to the variant list else { KeyValuePair *pair = (KeyValuePair *)lstGet(this->list, listIdx); if (pair->value == NULL) pair->value = varDup(value); else if (varType(pair->value) != varTypeVariantList) { Variant *valueList = varNewVarLst(varLstNew()); varLstAdd(varVarLst(valueList), pair->value); varLstAdd(varVarLst(valueList), varDup(value)); pair->value = valueList; } else varLstAdd(varVarLst(pair->value), varDup(value)); } } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Put key/value store If this is called on an existing key it will replace the key with an empty kev/value store, even if the key already contains a key/value store. ***********************************************************************************************************************************/ KeyValue * kvPutKv(KeyValue *this, const Variant *key) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(KEY_VALUE, this); FUNCTION_TEST_PARAM(VARIANT, key); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(key != NULL); KeyValue *result = NULL; MEM_CONTEXT_BEGIN(this->memContext) { result = kvNew(); kvPutInternal(this, key, varNewKv(result)); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Get a value using the key ***********************************************************************************************************************************/ const Variant * kvGet(const KeyValue *this, const Variant *key) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(KEY_VALUE, this); FUNCTION_TEST_PARAM(VARIANT, key); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(key != NULL); Variant *result = NULL; // Find the key unsigned int listIdx = kvGetIdx(this, key); if (listIdx != KEY_NOT_FOUND) result = ((KeyValuePair *)lstGet(this->list, listIdx))->value; FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Get a value using the key and return a default if not found ***********************************************************************************************************************************/ const Variant * kvGetDefault(const KeyValue *this, const Variant *key, const Variant *defaultValue) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(KEY_VALUE, this); FUNCTION_TEST_PARAM(VARIANT, key); FUNCTION_TEST_PARAM(VARIANT, defaultValue); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(key != NULL); const Variant *result = NULL; // Find the key unsigned int listIdx = kvGetIdx(this, key); // If key not found then return default, else return the value if (listIdx == KEY_NOT_FOUND) result = defaultValue; else result = ((KeyValuePair *)lstGet(this->list, listIdx))->value; FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Get a value as a list (even if there is only one value) using the key ***********************************************************************************************************************************/ VariantList * kvGetList(const KeyValue *this, const Variant *key) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(KEY_VALUE, this); FUNCTION_TEST_PARAM(VARIANT, key); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(key != NULL); VariantList *result = NULL; // Get the value const Variant *value = kvGet(this, key); // Convert the value to a list if it is not already one if (value != NULL && varType(value) == varTypeVariantList) result = varLstDup(varVarLst(value)); else result = varLstAdd(varLstNew(), varDup(value)); FUNCTION_TEST_RETURN(result); } pgbackrest-release-2.24/src/common/type/keyValue.h000066400000000000000000000046341362531507100222140ustar00rootroot00000000000000/*********************************************************************************************************************************** Key Value Handler ***********************************************************************************************************************************/ #ifndef COMMON_TYPE_KEYVALUE_H #define COMMON_TYPE_KEYVALUE_H /*********************************************************************************************************************************** KeyValue object ***********************************************************************************************************************************/ #define KEY_VALUE_TYPE KeyValue #define KEY_VALUE_PREFIX kv typedef struct KeyValue KeyValue; #include "common/type/variantList.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ KeyValue *kvNew(void); KeyValue *kvDup(const KeyValue *source); KeyValue *kvAdd(KeyValue *this, const Variant *key, const Variant *value); const VariantList *kvKeyList(const KeyValue *this); KeyValue *kvMove(KeyValue *this, MemContext *parentNew); KeyValue *kvPut(KeyValue *this, const Variant *key, const Variant *value); KeyValue *kvPutKv(KeyValue *this, const Variant *key); const Variant *kvGet(const KeyValue *this, const Variant *key); const Variant *kvGetDefault(const KeyValue *this, const Variant *key, const Variant *defaultValue); bool kvKeyExists(const KeyValue *this, const Variant *key); VariantList *kvGetList(const KeyValue *this, const Variant *key); void kvFree(KeyValue *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_KEY_VALUE_TYPE \ KeyValue * #define FUNCTION_LOG_KEY_VALUE_FORMAT(value, buffer, bufferSize) \ objToLog(value, "KeyValue", buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/type/list.c000066400000000000000000000353171362531507100213770ustar00rootroot00000000000000/*********************************************************************************************************************************** List Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include "common/debug.h" #include "common/type/list.h" #include "common/object.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct List { MemContext *memContext; size_t itemSize; unsigned int listSize; unsigned int listSizeMax; SortOrder sortOrder; unsigned char *list; ListComparator *comparator; }; OBJECT_DEFINE_MOVE(LIST); OBJECT_DEFINE_FREE(LIST); /*********************************************************************************************************************************** Create a new list ***********************************************************************************************************************************/ List * lstNew(size_t itemSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(SIZE, itemSize); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN(lstNewP(itemSize)); } List * lstNewParam(size_t itemSize, ListParam param) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(SIZE, itemSize); FUNCTION_TEST_PARAM(FUNCTIONP, param.comparator); FUNCTION_TEST_END(); List *this = NULL; MEM_CONTEXT_NEW_BEGIN("List") { // Create object this = memNew(sizeof(List)); *this = (List) { .memContext = MEM_CONTEXT_NEW(), .itemSize = itemSize, .sortOrder = param.sortOrder, .comparator = param.comparator, }; } MEM_CONTEXT_NEW_END(); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Add an item to the end of the list ***********************************************************************************************************************************/ void * lstAdd(List *this, const void *item) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(LIST, this); FUNCTION_TEST_PARAM_P(VOID, item); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(item != NULL); FUNCTION_TEST_RETURN(lstInsert(this, lstSize(this), item)); } /*********************************************************************************************************************************** Clear items from a list ***********************************************************************************************************************************/ List * lstClear(List *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(LIST, this); FUNCTION_TEST_END(); ASSERT(this != NULL); if (this->list != NULL) { MEM_CONTEXT_BEGIN(this->memContext) { memFree(this->list); } MEM_CONTEXT_END(); this->listSize = 0; this->listSizeMax = 0; } FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Compare Strings ascending or structs with a String as the first member ***********************************************************************************************************************************/ int lstComparatorStr(const void *item1, const void *item2) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, item1); FUNCTION_TEST_PARAM_P(VOID, item2); FUNCTION_TEST_END(); ASSERT(item1 != NULL); ASSERT(item2 != NULL); FUNCTION_TEST_RETURN(strCmp(*(String **)item1, *(String **)item2)); } /*********************************************************************************************************************************** General function for a descending comparator that simply switches the parameters on the main comparator (which should be asc) ***********************************************************************************************************************************/ static const List *comparatorDescList = NULL; static int lstComparatorDesc(const void *item1, const void *item2) { return comparatorDescList->comparator(item2, item1); } /*********************************************************************************************************************************** Get an item from the list ***********************************************************************************************************************************/ void * lstGet(const List *this, unsigned int listIdx) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(LIST, this); FUNCTION_TEST_PARAM(UINT, listIdx); FUNCTION_TEST_END(); ASSERT(this != NULL); // Ensure list index is in range if (listIdx >= this->listSize) THROW_FMT(AssertError, "cannot get index %u from list with %u value(s)", listIdx, this->listSize); // Return pointer to list item FUNCTION_TEST_RETURN(this->list + (listIdx * this->itemSize)); } /*********************************************************************************************************************************** Does an item exist in the list? ***********************************************************************************************************************************/ bool lstExists(const List *this, const void *item) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(LIST, this); FUNCTION_TEST_PARAM_P(VOID, item); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(item != NULL); FUNCTION_TEST_RETURN(lstFind(this, item) != NULL); } /*********************************************************************************************************************************** Find an item in the list ***********************************************************************************************************************************/ void * lstFind(const List *this, const void *item) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(LIST, this); FUNCTION_TEST_PARAM_P(VOID, item); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(item != NULL); if (this->sortOrder == sortOrderAsc) FUNCTION_TEST_RETURN(bsearch(item, this->list, this->listSize, this->itemSize, this->comparator)); else if (this->sortOrder == sortOrderDesc) { // Assign the list for the descending comparator to use comparatorDescList = this; FUNCTION_TEST_RETURN(bsearch(item, this->list, this->listSize, this->itemSize, lstComparatorDesc)); } // Fall back on an iterative search for (unsigned int listIdx = 0; listIdx < lstSize(this); listIdx++) { if (this->comparator(item, lstGet(this, listIdx)) == 0) FUNCTION_TEST_RETURN(lstGet(this, listIdx)); } FUNCTION_TEST_RETURN(NULL); } unsigned int lstFindIdx(const List *this, const void *item) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(LIST, this); FUNCTION_TEST_PARAM_P(VOID, item); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(item != NULL); void *result = lstFind(this, item); FUNCTION_TEST_RETURN(result == NULL ? LIST_NOT_FOUND : lstIdx(this, result)); } void * lstFindDefault(const List *this, const void *item, void *itemDefault) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(LIST, this); FUNCTION_TEST_PARAM_P(VOID, item); FUNCTION_TEST_PARAM_P(VOID, itemDefault); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(item != NULL); void *result= lstFind(this, item); FUNCTION_TEST_RETURN(result == NULL ? itemDefault : result); } /*********************************************************************************************************************************** Get the index of a list item ***********************************************************************************************************************************/ unsigned int lstIdx(const List *this, const void *item) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(LIST, this); FUNCTION_TEST_PARAM_P(VOID, item); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(item != NULL); // Item pointers should always be aligned with the beginning of an item in the list ASSERT((size_t)((unsigned char * const)item - this->list) % this->itemSize == 0); size_t result = (size_t)((unsigned char * const)item - this->list) / this->itemSize; // Item pointers should always be in range ASSERT(result < this->listSize); FUNCTION_TEST_RETURN((unsigned int)result); } /*********************************************************************************************************************************** Insert an item into the list ***********************************************************************************************************************************/ void * lstInsert(List *this, unsigned int listIdx, const void *item) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(LIST, this); FUNCTION_TEST_PARAM_P(VOID, item); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(listIdx <= lstSize(this)); ASSERT(item != NULL); // If list size = max then allocate more space if (this->listSize == this->listSizeMax) { MEM_CONTEXT_BEGIN(this->memContext) { // If nothing has been allocated yet if (this->listSizeMax == 0) { this->listSizeMax = LIST_INITIAL_SIZE; this->list = memNew(this->listSizeMax * this->itemSize); } // Else the list needs to be extended else { this->listSizeMax *= 2; this->list = memResize(this->list, this->listSizeMax * this->itemSize); } } MEM_CONTEXT_END(); } // If not inserting at the end then move items down to make space void *itemPtr = this->list + (listIdx * this->itemSize); if (listIdx != lstSize(this)) memmove(this->list + ((listIdx + 1) * this->itemSize), itemPtr, (lstSize(this) - listIdx) * this->itemSize); // Copy item into the list this->sortOrder = sortOrderNone; memcpy(itemPtr, item, this->itemSize); this->listSize++; FUNCTION_TEST_RETURN(itemPtr); } /*********************************************************************************************************************************** Remove an item from the list ***********************************************************************************************************************************/ List * lstRemoveIdx(List *this, unsigned int listIdx) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(LIST, this); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(listIdx <= lstSize(this)); // Remove the item by moving the items after it down this->listSize--; memmove( this->list + (listIdx * this->itemSize), this->list + ((listIdx + 1) * this->itemSize), (lstSize(this) - listIdx) * this->itemSize); FUNCTION_TEST_RETURN(this); } bool lstRemove(List *this, const void *item) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(LIST, this); FUNCTION_TEST_PARAM_P(VOID, item); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(item != NULL); unsigned int listIdx = lstFindIdx(this, item); if (listIdx != LIST_NOT_FOUND) { lstRemoveIdx(this, listIdx); FUNCTION_TEST_RETURN(true); } FUNCTION_TEST_RETURN(false); } /*********************************************************************************************************************************** Return the memory context for this list ***********************************************************************************************************************************/ MemContext * lstMemContext(const List *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(LIST, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->memContext); } /*********************************************************************************************************************************** Return list size ***********************************************************************************************************************************/ unsigned int lstSize(const List *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(LIST, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->listSize); } /*********************************************************************************************************************************** List sort ***********************************************************************************************************************************/ List * lstSort(List *this, SortOrder sortOrder) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(LIST, this); FUNCTION_TEST_PARAM(ENUM, sortOrder); FUNCTION_TEST_END(); ASSERT(this != NULL); switch (sortOrder) { case sortOrderAsc: { qsort(this->list, this->listSize, this->itemSize, this->comparator); break; } case sortOrderDesc: { // Assign the list that will be sorted for the comparator function to use comparatorDescList = this; qsort(this->list, this->listSize, this->itemSize, lstComparatorDesc); break; } case sortOrderNone: break; } this->sortOrder = sortOrder; FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Set a new comparator ***********************************************************************************************************************************/ List * lstComparatorSet(List *this, ListComparator *comparator) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(LIST, this); FUNCTION_TEST_PARAM(FUNCTIONP, comparator); FUNCTION_TEST_END(); ASSERT(this != NULL); this->comparator = comparator; this->sortOrder = sortOrderNone; FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * lstToLog(const List *this) { return strNewFmt("{size: %u}", this->listSize); } pgbackrest-release-2.24/src/common/type/list.h000066400000000000000000000131201362531507100213700ustar00rootroot00000000000000/*********************************************************************************************************************************** List Handler ***********************************************************************************************************************************/ #ifndef COMMON_TYPE_LIST_H #define COMMON_TYPE_LIST_H #include /*********************************************************************************************************************************** List object ***********************************************************************************************************************************/ #define LIST_TYPE List #define LIST_PREFIX lst typedef struct List List; #include "common/memContext.h" #include "common/type/param.h" #include "common/type/string.h" /*********************************************************************************************************************************** Sort orders ***********************************************************************************************************************************/ typedef enum { sortOrderNone, sortOrderAsc, sortOrderDesc, } SortOrder; /*********************************************************************************************************************************** Define initial size of a list ***********************************************************************************************************************************/ #define LIST_INITIAL_SIZE 8 /*********************************************************************************************************************************** Item was not found in the list ***********************************************************************************************************************************/ #define LIST_NOT_FOUND UINT_MAX /*********************************************************************************************************************************** Function type for comparing items in the list The return value should be -1 when item1 < item2, 0 when item1 == item2, and 1 when item2 > item1. ***********************************************************************************************************************************/ typedef int ListComparator(const void *item1, const void *item2); // General purpose list comparator for Strings or structs with a String as the first member int lstComparatorStr(const void *item1, const void *item2); /*********************************************************************************************************************************** Constructors ***********************************************************************************************************************************/ List *lstNew(size_t itemSize); typedef struct ListParam { VAR_PARAM_HEADER; SortOrder sortOrder; ListComparator *comparator; } ListParam; #define lstNewP(itemSize, ...) \ lstNewParam(itemSize, (ListParam){VAR_PARAM_INIT, __VA_ARGS__}) List *lstNewParam(size_t itemSize, ListParam param); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void *lstAdd(List *this, const void *item); List *lstClear(List *this); void *lstGet(const List *this, unsigned int listIdx); bool lstExists(const List *this, const void *item); void *lstFind(const List *this, const void *item); void *lstFindDefault(const List *this, const void *item, void *itemDefault); unsigned int lstFindIdx(const List *this, const void *item); unsigned int lstIdx(const List *this, const void *item); void *lstInsert(List *this, unsigned int listIdx, const void *item); bool lstRemove(List *this, const void *item); List *lstRemoveIdx(List *this, unsigned int listIdx); MemContext *lstMemContext(const List *this); List *lstMove(List *this, MemContext *parentNew); unsigned int lstSize(const List *this); List *lstSort(List *this, SortOrder sortOrder); /*********************************************************************************************************************************** Setters ***********************************************************************************************************************************/ List *lstComparatorSet(List *this, ListComparator *comparator); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void lstFree(List *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *lstToLog(const List *this); #define FUNCTION_LOG_LIST_TYPE \ List * #define FUNCTION_LOG_LIST_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, lstToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/type/mcv.c000066400000000000000000000103361362531507100212030ustar00rootroot00000000000000/*********************************************************************************************************************************** Calculate Most Common Value ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/object.h" #include "common/type/list.h" #include "common/type/mcv.h" #include "common/type/variant.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct MostCommonValue { MemContext *memContext; // Mem context List *list; // List of unique values }; typedef struct MostCommonValueEntry { const Variant *value; // Value to be counted uint64_t total; // Total count for the value } MostCommonValueEntry; OBJECT_DEFINE_FREE(MOST_COMMON_VALUE); /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ MostCommonValue * mcvNew(void) { FUNCTION_TEST_VOID(); MostCommonValue *this = NULL; MEM_CONTEXT_NEW_BEGIN("MostCommonValue") { this = memNew(sizeof(MostCommonValue)); *this = (MostCommonValue) { .memContext = MEM_CONTEXT_NEW(), .list = lstNew(sizeof(MostCommonValueEntry)), }; } MEM_CONTEXT_NEW_END(); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Update counts for a value ***********************************************************************************************************************************/ MostCommonValue * mcvUpdate(MostCommonValue *this, const Variant *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MOST_COMMON_VALUE, this); FUNCTION_TEST_PARAM(VARIANT, value); FUNCTION_TEST_END(); ASSERT(this != NULL); bool found = false; // Increment the value if it already exists for (unsigned int listIdx = 0; listIdx < lstSize(this->list); listIdx++) { MostCommonValueEntry *entry = (MostCommonValueEntry *)lstGet(this->list, listIdx); if (varEq(value, entry->value)) { entry->total++; found = true; break; } } // Add the value if it doesn't if (!found) { MEM_CONTEXT_BEGIN(this->memContext) { MostCommonValueEntry entry = {.value = varDup(value), .total = 1}; lstAdd(this->list, &entry); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Get most common value ***********************************************************************************************************************************/ const Variant * mcvResult(const MostCommonValue *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MOST_COMMON_VALUE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); const Variant *result = NULL; uint64_t resultTotal = 0; for (unsigned int listIdx = 0; listIdx < lstSize(this->list); listIdx++) { MostCommonValueEntry *entry = (MostCommonValueEntry *)lstGet(this->list, listIdx); if (entry->total > resultTotal || // If boolean always return false when there is a tie. This is to maintain compatibility with older mcv code/tests. (entry->total == resultTotal && varType(entry->value) == varTypeBool && !varBool(entry->value))) { result = entry->value; resultTotal = entry->total; } } FUNCTION_TEST_RETURN(result); } pgbackrest-release-2.24/src/common/type/mcv.h000066400000000000000000000044011362531507100212040ustar00rootroot00000000000000/*********************************************************************************************************************************** Calculate Most Common Value Calculate the most common value in a list of variants. If there is a tie then the first value passed to mcvUpdate() wins. mcvResult() can be called multiple times because it does not end processing, but there is a cost to calculating the result each time since it is not stored. ***********************************************************************************************************************************/ #ifndef COMMON_TYPE_MCV_H #define COMMON_TYPE_MCV_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define MOST_COMMON_VALUE_TYPE MostCommonValue #define MOST_COMMON_VALUE_PREFIX mcv typedef struct MostCommonValue MostCommonValue; #include "common/type/stringList.h" #include "common/type/variant.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ MostCommonValue *mcvNew(void); MostCommonValue *mcvUpdate(MostCommonValue *this, const Variant *value); const Variant *mcvResult(const MostCommonValue *this); void mcvFree(MostCommonValue *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_MOST_COMMON_VALUE_TYPE \ MostCommonValue * #define FUNCTION_LOG_MOST_COMMON_VALUE_FORMAT(value, buffer, bufferSize) \ objToLog(value, "MostCommonValue", buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/type/param.h000066400000000000000000000021641362531507100215230ustar00rootroot00000000000000/*********************************************************************************************************************************** Variable Parameter Helper Macros ***********************************************************************************************************************************/ #ifndef COMMON_TYPE_PARAM_H #define COMMON_TYPE_PARAM_H /*********************************************************************************************************************************** Macros to help with implementing functions with variable parameters using structs ***********************************************************************************************************************************/ // This macro goes at the top of the parameter struct #define VAR_PARAM_HEADER \ bool dummy // This macro goes in the struct parameter list right before __VA_ARGS__ #define VAR_PARAM_INIT \ .dummy = false #endif pgbackrest-release-2.24/src/common/type/string.c000066400000000000000000001053161362531507100217270ustar00rootroot00000000000000/*********************************************************************************************************************************** String Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include #include "common/debug.h" #include "common/macro.h" #include "common/memContext.h" #include "common/type/string.h" #include "common/type/stringList.h" #include "common/type/stringz.h" /*********************************************************************************************************************************** Constant strings that are generally useful ***********************************************************************************************************************************/ STRING_EXTERN(BRACKETL_STR, "["); STRING_EXTERN(BRACKETR_STR, "]"); STRING_EXTERN(COLON_STR, COLON_Z); STRING_EXTERN(CR_STR, "\r"); STRING_EXTERN(DASH_STR, DASH_Z); STRING_EXTERN(DOT_STR, "."); STRING_EXTERN(DOTDOT_STR, ".."); STRING_EXTERN(EMPTY_STR, ""); STRING_EXTERN(EQ_STR, "="); STRING_EXTERN(FALSE_STR, FALSE_Z); STRING_EXTERN(FSLASH_STR, "/"); STRING_EXTERN(LF_STR, "\n"); STRING_EXTERN(N_STR, "n"); STRING_EXTERN(NULL_STR, NULL_Z); STRING_EXTERN(TRUE_STR, TRUE_Z); STRING_EXTERN(Y_STR, "y"); STRING_EXTERN(ZERO_STR, "0"); /*********************************************************************************************************************************** Maximum size of a string ***********************************************************************************************************************************/ #define STRING_SIZE_MAX 1073741824 #define CHECK_SIZE(size) \ do \ { \ if ((size) > STRING_SIZE_MAX) \ THROW(AssertError, "string size must be <= " STRINGIFY(STRING_SIZE_MAX) " bytes"); \ } \ while(0) /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct String { STRING_COMMON // Shared in common with constant strings MemContext *memContext; // Required for dynamically allocated strings }; /*********************************************************************************************************************************** Create a new string from a zero-terminated string ***********************************************************************************************************************************/ String * strNew(const char *string) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, string); FUNCTION_TEST_END(); ASSERT(string != NULL); // Check size size_t stringSize = strlen(string); CHECK_SIZE(stringSize); // Create object String *this = memNew(sizeof(String)); *this = (String) { .memContext = memContextCurrent(), .size = (unsigned int)stringSize, }; // Allocate and assign string this->buffer = memNew(this->size + 1); strcpy(this->buffer, string); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Create a new string from a buffer If the buffer has a NULL character this may not work as expected. All the data will be copied but only the data before the NULL character will be used as a string. ***********************************************************************************************************************************/ String * strNewBuf(const Buffer *buffer) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, buffer); FUNCTION_TEST_END(); ASSERT(buffer != NULL); // Check size CHECK_SIZE(bufUsed(buffer)); // Create object String *this = memNew(sizeof(String)); *this = (String) { .memContext = memContextCurrent(), .size = (unsigned int)bufUsed(buffer), }; // Allocate and assign string this->buffer = memNew(this->size + 1); memcpy(this->buffer, (char *)bufPtr(buffer), this->size); this->buffer[this->size] = 0; FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Create a new string from a format string with parameters (i.e. sprintf) ***********************************************************************************************************************************/ String * strNewFmt(const char *format, ...) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, format); FUNCTION_TEST_END(); ASSERT(format != NULL); // Create object String *this = memNew(sizeof(String)); *this = (String) { .memContext = memContextCurrent(), }; // Determine how long the allocated string needs to be va_list argumentList; va_start(argumentList, format); size_t formatSize = (size_t)vsnprintf(NULL, 0, format, argumentList); va_end(argumentList); // Check size CHECK_SIZE(formatSize); // Allocate and assign string this->size = (unsigned int)formatSize; this->buffer = memNew(this->size + 1); va_start(argumentList, format); vsnprintf(this->buffer, this->size + 1, format, argumentList); va_end(argumentList); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Create a new string from a string with a specific length The string may or may not be zero-terminated but we'll use that nomenclature since we're not concerned about the end of the string. ***********************************************************************************************************************************/ String * strNewN(const char *string, size_t size) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(CHARDATA, string); FUNCTION_TEST_PARAM(SIZE, size); FUNCTION_TEST_END(); ASSERT(string != NULL); // Check size CHECK_SIZE(size); // Create object String *this = memNew(sizeof(String)); *this = (String) { .memContext = memContextCurrent(), .size = (unsigned int)size, }; // Allocate and assign string this->buffer = memNew(this->size + 1); strncpy(this->buffer, string, this->size); this->buffer[this->size] = 0; // Return buffer FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Return the file part of a string (i.e. everything after the last / or the entire string if there is no /) ***********************************************************************************************************************************/ String * strBase(const String *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_END(); ASSERT(this != NULL); const char *end = this->buffer + this->size; while (end > this->buffer && *(end - 1) != '/') end--; FUNCTION_TEST_RETURN(strNew(end)); } /*********************************************************************************************************************************** Does the string begin with the specified string? ***********************************************************************************************************************************/ bool strBeginsWith(const String *this, const String *beginsWith) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_PARAM(STRING, beginsWith); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(beginsWith != NULL); FUNCTION_TEST_RETURN(strBeginsWithZ(this, strPtr(beginsWith))); } bool strBeginsWithZ(const String *this, const char *beginsWith) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_PARAM(STRINGZ, beginsWith); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(beginsWith != NULL); bool result = false; unsigned int beginsWithSize = (unsigned int)strlen(beginsWith); if (this->size >= beginsWithSize) result = strncmp(strPtr(this), beginsWith, beginsWithSize) == 0; FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Resize the string to allow the requested number of characters to be appended ***********************************************************************************************************************************/ static void strResize(String *this, size_t requested) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_PARAM(SIZE, requested); FUNCTION_TEST_END(); if (requested > this->extra) { // Check size CHECK_SIZE((size_t)this->size + requested); // Calculate new extra needs to satisfy request and leave extra space for new growth this->extra = (unsigned int)requested + ((this->size + (unsigned int)requested) / 2); MEM_CONTEXT_BEGIN(this->memContext) { this->buffer = memResize(this->buffer, this->size + this->extra + 1); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Append a string ***********************************************************************************************************************************/ String * strCat(String *this, const char *cat) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_PARAM(STRINGZ, cat); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(cat != NULL); // Determine length of string to append size_t sizeGrow = strlen(cat); // Ensure there is enough space to grow the string strResize(this, sizeGrow); // Append the string strcpy(this->buffer + this->size, cat); this->size += (unsigned int)sizeGrow; this->extra -= (unsigned int)sizeGrow; FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Append a character ***********************************************************************************************************************************/ String * strCatChr(String *this, char cat) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_PARAM(CHAR, cat); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(cat != 0); // Ensure there is enough space to grow the string strResize(this, 1); // Append the character this->buffer[this->size++] = cat; this->buffer[this->size] = 0; this->extra--; FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Append a formatted string ***********************************************************************************************************************************/ String * strCatFmt(String *this, const char *format, ...) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_PARAM(STRINGZ, format); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(format != NULL); // Determine how long the allocated string needs to be va_list argumentList; va_start(argumentList, format); size_t sizeGrow = (size_t)vsnprintf(NULL, 0, format, argumentList); va_end(argumentList); // Ensure there is enough space to grow the string strResize(this, sizeGrow); // Append the formatted string va_start(argumentList, format); vsnprintf(this->buffer + this->size, sizeGrow + 1, format, argumentList); va_end(argumentList); this->size += (unsigned int)sizeGrow; this->extra -= (unsigned int)sizeGrow; FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** C-style string compare ***********************************************************************************************************************************/ int strCmp(const String *this, const String *compare) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_PARAM(STRING, compare); FUNCTION_TEST_END(); if (this != NULL && compare != NULL) FUNCTION_TEST_RETURN(strcmp(strPtr(this), strPtr(compare))); else if (this == NULL) { if (compare == NULL) FUNCTION_TEST_RETURN(0); FUNCTION_TEST_RETURN(-1); } FUNCTION_TEST_RETURN(1); } int strCmpZ(const String *this, const char *compare) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_PARAM(STRINGZ, compare); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN(strCmp(this, compare == NULL ? NULL : STRDEF(compare))); } /*********************************************************************************************************************************** Duplicate a string from an existing string ***********************************************************************************************************************************/ String * strDup(const String *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_END(); String *result = NULL; if (this != NULL) result = strNew(strPtr(this)); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Is the string empty? ***********************************************************************************************************************************/ bool strEmpty(const String *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN(strSize(this) == 0); } /*********************************************************************************************************************************** Does the string end with the specified string? ***********************************************************************************************************************************/ bool strEndsWith(const String *this, const String *endsWith) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_PARAM(STRING, endsWith); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(endsWith != NULL); FUNCTION_TEST_RETURN(strEndsWithZ(this, strPtr(endsWith))); } bool strEndsWithZ(const String *this, const char *endsWith) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_PARAM(STRINGZ, endsWith); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(endsWith != NULL); bool result = false; unsigned int endsWithSize = (unsigned int)strlen(endsWith); if (this->size >= endsWithSize) result = strcmp(strPtr(this) + (this->size - endsWithSize), endsWith) == 0; FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Are two strings equal? There are two separate implementations because string objects can get the size very efficiently whereas the zero-terminated strings would need a call to strlen(). ***********************************************************************************************************************************/ bool strEq(const String *this, const String *compare) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_PARAM(STRING, compare); FUNCTION_TEST_END(); bool result = false; if (this != NULL && compare != NULL) { if (this->size == compare->size) result = strcmp(strPtr(this), strPtr(compare)) == 0; } else result = this == NULL && compare == NULL; FUNCTION_TEST_RETURN(result); } bool strEqZ(const String *this, const char *compare) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_PARAM(STRINGZ, compare); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(compare != NULL); FUNCTION_TEST_RETURN(strcmp(strPtr(this), compare) == 0); } /*********************************************************************************************************************************** Upper-case the first letter ***********************************************************************************************************************************/ String * strFirstUpper(String *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_END(); ASSERT(this != NULL); if (this->size > 0) this->buffer[0] = (char)toupper(this->buffer[0]); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Lower-case the first letter ***********************************************************************************************************************************/ String * strFirstLower(String *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_END(); ASSERT(this != NULL); if (this->size > 0) this->buffer[0] = (char)tolower(this->buffer[0]); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Upper-case entire string ***********************************************************************************************************************************/ String * strUpper(String *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_END(); ASSERT(this != NULL); if (this->size > 0) for (unsigned int idx = 0; idx <= this->size; idx++) this->buffer[idx] = (char)toupper(this->buffer[idx]); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Upper-case entire string ***********************************************************************************************************************************/ String * strLower(String *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_END(); ASSERT(this != NULL); if (this->size > 0) for (unsigned int idx = 0; idx <= this->size; idx++) this->buffer[idx] = (char)tolower(this->buffer[idx]); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Return the path part of a string (i.e. everything before the last / or "" if there is no /) ***********************************************************************************************************************************/ String * strPath(const String *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_END(); ASSERT(this != NULL); const char *end = this->buffer + this->size; while (end > this->buffer && *(end - 1) != '/') end--; FUNCTION_TEST_RETURN( strNewN( this->buffer, end - this->buffer <= 1 ? (size_t)(end - this->buffer) : (size_t)(end - this->buffer - 1))); } /*********************************************************************************************************************************** Combine with a base path to get an absolute path ***********************************************************************************************************************************/ String * strPathAbsolute(const String *this, const String *base) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_PARAM(STRING, base); FUNCTION_TEST_END(); ASSERT(this != NULL); String *result = NULL; // Path is already absolute so just return it if (strBeginsWith(this, FSLASH_STR)) { result = strDup(this); } // Else we'll need to construct the absolute path. You would hope we could use realpath() here but it is so broken in the // Posix spec that is seems best avoided. else { ASSERT(base != NULL); // Base must be absolute to start if (!strBeginsWith(base, FSLASH_STR)) THROW_FMT(AssertError, "base path '%s' is not absolute", strPtr(base)); MEM_CONTEXT_TEMP_BEGIN() { StringList *baseList = strLstNewSplit(base, FSLASH_STR); StringList *pathList = strLstNewSplit(this, FSLASH_STR); while (strLstSize(pathList) > 0) { const String *pathPart = strLstGet(pathList, 0); // If the last part is empty if (strSize(pathPart) == 0) { // Allow when this is the last part since it just means there was a trailing / if (strLstSize(pathList) == 1) { strLstRemoveIdx(pathList, 0); break; } THROW_FMT(AssertError, "'%s' is not a valid relative path", strPtr(this)); } if (strEq(pathPart, DOTDOT_STR)) { const String *basePart = strLstGet(baseList, strLstSize(baseList) - 1); if (strSize(basePart) == 0) { THROW_FMT( AssertError, "relative path '%s' goes back too far in base path '%s'", strPtr(this), strPtr(base)); } strLstRemoveIdx(baseList, strLstSize(baseList) - 1); } else if (!strEq(pathPart, DOT_STR)) strLstAdd(baseList, pathPart); strLstRemoveIdx(pathList, 0); } MEM_CONTEXT_PRIOR_BEGIN() { if (strLstSize(baseList) == 1) result = strDup(FSLASH_STR); else result = strLstJoin(baseList, "/"); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); } // There should not be any stray .. or // in the final result if (strstr(strPtr(result), "/..") != NULL || strstr(strPtr(result), "//") != NULL) THROW_FMT(AssertError, "result path '%s' is not absolute", strPtr(result)); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Return string ptr ***********************************************************************************************************************************/ const char * strPtr(const String *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_END(); char *result = NULL; if (this != NULL) result = this->buffer; FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Quote a string ***********************************************************************************************************************************/ String * strQuote(const String *this, const String *quote) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_PARAM(STRING, quote); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(quote != NULL); FUNCTION_TEST_RETURN(strQuoteZ(this, strPtr(quote))); } String * strQuoteZ(const String *this, const char *quote) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_PARAM(STRINGZ, quote); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(quote != NULL); FUNCTION_TEST_RETURN(strNewFmt("%s%s%s", quote, strPtr(this), quote)); } /*********************************************************************************************************************************** Replace a character with another character ***********************************************************************************************************************************/ String * strReplaceChr(String *this, char find, char replace) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_PARAM(CHAR, find); FUNCTION_TEST_PARAM(CHAR, replace); FUNCTION_TEST_END(); ASSERT(this != NULL); for (unsigned int stringIdx = 0; stringIdx < this->size; stringIdx++) { if (this->buffer[stringIdx] == find) this->buffer[stringIdx] = replace; } FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Return a substring given only the start position ***********************************************************************************************************************************/ String * strSub(const String *this, size_t start) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_PARAM(SIZE, start); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(start <= this->size); FUNCTION_TEST_RETURN(strSubN(this, start, this->size - start)); } /*********************************************************************************************************************************** Return a substring given the start position and size ***********************************************************************************************************************************/ String * strSubN(const String *this, size_t start, size_t size) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_PARAM(SIZE, start); FUNCTION_TEST_PARAM(SIZE, size); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(start <= this->size); ASSERT(start + size <= this->size); FUNCTION_TEST_RETURN(strNewN(this->buffer + start, size)); } /*********************************************************************************************************************************** Return string size ***********************************************************************************************************************************/ size_t strSize(const String *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->size); } /*********************************************************************************************************************************** Trim whitespace from the beginning and end of a string ***********************************************************************************************************************************/ String * strTrim(String *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_END(); ASSERT(this != NULL); // Nothing to trim if size is zero if (this->size > 0) { // Find the beginning of the string skipping all whitespace char *begin = this->buffer; while (*begin != 0 && (*begin == ' ' || *begin == '\t' || *begin == '\r' || *begin == '\n')) begin++; // Find the end of the string skipping all whitespace char *end = this->buffer + (this->size - 1); while (end > begin && (*end == ' ' || *end == '\t' || *end == '\r' || *end == '\n')) end--; // Is there anything to trim? size_t newSize = (size_t)(end - begin + 1); if (begin != this->buffer || newSize < strSize(this)) { // Calculate new size this->size = (unsigned int)newSize; // Move the substr to the beginning of the buffer memmove(this->buffer, begin, this->size); this->buffer[this->size] = 0; this->extra = 0; MEM_CONTEXT_BEGIN(this->memContext) { // Resize the buffer this->buffer = memResize(this->buffer, this->size + 1); } MEM_CONTEXT_END(); } } FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Return the index to the location of the the first occurrence of a character within a string, else -1 ***********************************************************************************************************************************/ int strChr(const String *this, char chr) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_PARAM(CHAR, chr); FUNCTION_TEST_END(); ASSERT(this != NULL); int result = -1; if (this->size > 0) { const char *ptr = strchr(this->buffer, chr); if (ptr != NULL) result = (int)(ptr - this->buffer); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Truncate the end of a string from the index provided to the current end (e.g. 123KB pass index of K returns 123) ***********************************************************************************************************************************/ String * strTrunc(String *this, int idx) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(idx >= 0 && (size_t)idx <= this->size); if (this->size > 0) { // Reset the size to end at the index this->size = (unsigned int)(idx); this->buffer[this->size] = 0; this->extra = 0; MEM_CONTEXT_BEGIN(this->memContext) { // Resize the buffer this->buffer = memResize(this->buffer, this->size + 1); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Convert an object to a zero-terminated string for logging ***********************************************************************************************************************************/ size_t strObjToLog(const void *object, StrObjToLogFormat formatFunc, char *buffer, size_t bufferSize) { size_t result = 0; MEM_CONTEXT_TEMP_BEGIN() { result = (size_t)snprintf(buffer, bufferSize, "%s", object == NULL ? NULL_Z : strPtr(formatFunc(object))); } MEM_CONTEXT_TEMP_END(); return result; } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * strToLog(const String *this) { return this == NULL ? strDup(NULL_STR) : strNewFmt("{\"%s\"}", strPtr(this)); } /*********************************************************************************************************************************** Format sizes (file, buffer, etc.) in human-readable form ***********************************************************************************************************************************/ String * strSizeFormat(const uint64_t size) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT64, size); FUNCTION_TEST_END(); String *result = NULL; if (size < 1024) result = strNewFmt("%" PRIu64 "B", size); else if (size < (1024 * 1024)) { if ((uint64_t)((double)size / 102.4) % 10 != 0) result = strNewFmt("%.1lfKB", (double)size / 1024); else result = strNewFmt("%" PRIu64 "KB", size / 1024); } else if (size < (1024 * 1024 * 1024)) { if ((uint64_t)((double)size / (1024 * 102.4)) % 10 != 0) result = strNewFmt("%.1lfMB", (double)size / (1024 * 1024)); else result = strNewFmt("%" PRIu64 "MB", size / (1024 * 1024)); } else { if ((uint64_t)((double)size / (1024 * 1024 * 102.4)) % 10 != 0) result = strNewFmt("%.1lfGB", (double)size / (1024 * 1024 * 1024)); else result = strNewFmt("%" PRIu64 "GB", size / (1024 * 1024 * 1024)); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Free the string ***********************************************************************************************************************************/ void strFree(String *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, this); FUNCTION_TEST_END(); if (this != NULL) { MEM_CONTEXT_BEGIN(this->memContext) { memFree(this->buffer); memFree(this); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN_VOID(); } pgbackrest-release-2.24/src/common/type/string.h000066400000000000000000000217471362531507100217410ustar00rootroot00000000000000/*********************************************************************************************************************************** String Handler Strings are lightweight objects in that they do not have their own memory context, instead they exist in the current context in which they are instantiated. If a string is needed outside the current memory context, the memory context must be switched to the old context and then back. Below is a simplified example: String *result = NULL; <--- is created in the current memory context (referred to as "old context" below) MEM_CONTEXT_TEMP_BEGIN() <--- begins a new temporary context { String *resultStr = strNewN("myNewStr"); <--- creates a string in the temporary memory context MEM_CONTEXT_PRIOR_BEGIN() <--- switch to the old context so the duplication of the string is in that context { result = strDup(resultStr); <--- recreates a copy of the string in the old context where "result" was created } MEM_CONTEXT_PRIOR_END(); <--- switch back to the temporary context } MEM_CONTEXT_TEMP_END(); <-- frees everything created inside this temporary memory context - i.e resultStr ***********************************************************************************************************************************/ #ifndef COMMON_TYPE_STRING_H #define COMMON_TYPE_STRING_H #include /*********************************************************************************************************************************** String object ***********************************************************************************************************************************/ typedef struct String String; #include "common/type/buffer.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ String *strNew(const char *string); String *strNewBuf(const Buffer *buffer); String *strNewFmt(const char *format, ...) __attribute__((format(printf, 1, 2))); String *strNewN(const char *string, size_t size); String *strBase(const String *this); bool strBeginsWith(const String *this, const String *beginsWith); bool strBeginsWithZ(const String *this, const char *beginsWith); String *strCat(String *this, const char *cat); String *strCatChr(String *this, char cat); String *strCatFmt(String *this, const char *format, ...) __attribute__((format(printf, 2, 3))); int strCmp(const String *this, const String *compare); int strCmpZ(const String *this, const char *compare); String *strDup(const String *this); bool strEmpty(const String *this); bool strEndsWith(const String *this, const String *endsWith); bool strEndsWithZ(const String *this, const char *endsWith); bool strEq(const String *this, const String *compare); bool strEqZ(const String *this, const char *compare); String *strFirstUpper(String *this); String *strFirstLower(String *this); String *strUpper(String *this); String *strLower(String *this); String *strPath(const String *this); String *strPathAbsolute(const String *this, const String *base); const char *strPtr(const String *this); String *strQuote(const String *this, const String *quote); String *strQuoteZ(const String *this, const char *quote); String *strReplaceChr(String *this, char find, char replace); size_t strSize(const String *this); String *strSub(const String *this, size_t start); String *strSubN(const String *this, size_t start, size_t size); String *strTrim(String *this); int strChr(const String *this, char chr); String *strTrunc(String *this, int idx); String *strSizeFormat(const uint64_t fileSize); void strFree(String *this); /*********************************************************************************************************************************** Fields that are common between dynamically allocated and constant strings There is nothing user-accessible here but this construct allows constant strings to be created and then handled by the same functions that process dynamically allocated strings. ***********************************************************************************************************************************/ #define STRING_COMMON \ uint64_t size:32; /* Actual size of the string */ \ uint64_t extra:32; /* Extra space allocated for expansion */ \ char *buffer; /* String buffer */ typedef struct StringConst { STRING_COMMON } StringConst; /*********************************************************************************************************************************** Macros for constant strings Frequently used constant strings can be declared with these macros at compile time rather than dynamically at run time. Note that strings created in this way are declared as const so can't be modified or freed by the str*() methods. Casting to String * will result in a segfault due to modifying read-only memory. By convention all string constant identifiers are appended with _STR. ***********************************************************************************************************************************/ // Create a String constant inline from any zero-terminated string #define STR(bufferParam) \ ((const String *)&(const StringConst){.buffer = (char *)(bufferParam), .size = (unsigned int)strlen(bufferParam)}) // Create a String constant inline from a #define or inline string constant #define STRDEF(bufferParam) \ ((const String *)&(const StringConst){.buffer = (char *)(bufferParam), .size = (unsigned int)sizeof(bufferParam) - 1}) // Used to declare String constants that will be externed using STRING_DECLARE(). Must be used in a .c file. #define STRING_EXTERN(name, buffer) \ const String *const name = STRDEF(buffer) // Used to declare String constants that will be local to the .c file. Must be used in a .c file. #define STRING_STATIC(name, buffer) \ static const String *const name = STRDEF(buffer) // Used to extern String constants declared with STRING_EXTERN(). Must be used in a .h file. #define STRING_DECLARE(name) \ extern const String *const name /*********************************************************************************************************************************** Constant strings that are generally useful ***********************************************************************************************************************************/ STRING_DECLARE(BRACKETL_STR); STRING_DECLARE(BRACKETR_STR); STRING_DECLARE(COLON_STR); STRING_DECLARE(CR_STR); STRING_DECLARE(DASH_STR); STRING_DECLARE(DOT_STR); STRING_DECLARE(DOTDOT_STR); STRING_DECLARE(EMPTY_STR); STRING_DECLARE(EQ_STR); STRING_DECLARE(FALSE_STR); STRING_DECLARE(FSLASH_STR); STRING_DECLARE(LF_STR); STRING_DECLARE(N_STR); STRING_DECLARE(NULL_STR); STRING_DECLARE(TRUE_STR); STRING_DECLARE(Y_STR); STRING_DECLARE(ZERO_STR); /*********************************************************************************************************************************** Helper function/macro for object logging ***********************************************************************************************************************************/ typedef String *(*StrObjToLogFormat)(const void *object); size_t strObjToLog(const void *object, StrObjToLogFormat formatFunc, char *buffer, size_t bufferSize); #define FUNCTION_LOG_STRING_OBJECT_FORMAT(object, formatFunc, buffer, bufferSize) \ strObjToLog(object, (StrObjToLogFormat)formatFunc, buffer, bufferSize) /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *strToLog(const String *this); #define FUNCTION_LOG_STRING_TYPE \ String * #define FUNCTION_LOG_STRING_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, strToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/type/stringList.c000066400000000000000000000564131362531507100225660ustar00rootroot00000000000000/*********************************************************************************************************************************** String List Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include "common/debug.h" #include "common/memContext.h" #include "common/type/stringList.h" /*********************************************************************************************************************************** Wrapper for lstNew*() ***********************************************************************************************************************************/ StringList * strLstNew(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(strLstNewParam(lstComparatorStr)); } StringList * strLstNewParam(ListComparator *comparator) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(FUNCTIONP, comparator); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN((StringList *)lstNewP(sizeof(String *), .comparator = comparator)); } /*********************************************************************************************************************************** Internal add -- the string must have been created in the list's mem context before being passed ***********************************************************************************************************************************/ static String * strLstAddInternal(StringList *this, String *string) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_PARAM(STRING, string); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(*(String **)lstAdd((List *)this, &string)); } /*********************************************************************************************************************************** Internal insert -- the string must have been created in the list's mem context before being passed ***********************************************************************************************************************************/ static String * strLstInsertInternal(StringList *this, unsigned int listIdx, String *string) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_PARAM(UINT, listIdx); FUNCTION_TEST_PARAM(STRING, string); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(*(String **)lstInsert((List *)this, listIdx, &string)); } /*********************************************************************************************************************************** Split a string into a string list based on a delimiter ***********************************************************************************************************************************/ StringList * strLstNewSplit(const String *string, const String *delimiter) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, string); FUNCTION_TEST_PARAM(STRING, delimiter); FUNCTION_TEST_END(); ASSERT(string != NULL); ASSERT(delimiter != NULL); FUNCTION_TEST_RETURN(strLstNewSplitZ(string, strPtr(delimiter))); } StringList * strLstNewSplitZ(const String *string, const char *delimiter) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, string); FUNCTION_TEST_PARAM(STRINGZ, delimiter); FUNCTION_TEST_END(); ASSERT(string != NULL); ASSERT(delimiter != NULL); // Create the list StringList *this = strLstNew(); // Base points to the beginning of the string that is being searched const char *stringBase = strPtr(string); // Match points to the next delimiter match that has been found const char *stringMatch = NULL; MEM_CONTEXT_BEGIN(lstMemContext((List *)this)) { do { // Find a delimiter match stringMatch = strstr(stringBase, delimiter); // If a match was found then add the string if (stringMatch != NULL) { strLstAddInternal(this, strNewN(stringBase, (size_t)(stringMatch - stringBase))); stringBase = stringMatch + strlen(delimiter); } // Else make whatever is left the last string else strLstAddInternal(this, strNew(stringBase)); } while(stringMatch != NULL); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Split a string into a string list based on a delimiter and max size per item In other words each item in the list will be no longer than size even if multiple delimiters are skipped. This is useful for breaking up test on spaces, for example. ***********************************************************************************************************************************/ StringList * strLstNewSplitSize(const String *string, const String *delimiter, size_t size) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, string); FUNCTION_TEST_PARAM(STRING, delimiter); FUNCTION_TEST_PARAM(SIZE, size); FUNCTION_TEST_END(); ASSERT(string != NULL); ASSERT(delimiter != NULL); FUNCTION_TEST_RETURN(strLstNewSplitSizeZ(string, strPtr(delimiter), size)); } StringList * strLstNewSplitSizeZ(const String *string, const char *delimiter, size_t size) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, string); FUNCTION_TEST_PARAM(STRINGZ, delimiter); FUNCTION_TEST_PARAM(SIZE, size); FUNCTION_TEST_END(); ASSERT(string != NULL); ASSERT(delimiter != NULL); // Create the list StringList *this = strLstNew(); // Base points to the beginning of the string that is being searched const char *stringBase = strPtr(string); // Match points to the next delimiter match that has been found const char *stringMatchLast = NULL; const char *stringMatch = NULL; MEM_CONTEXT_BEGIN(lstMemContext((List *)this)) { do { // Find a delimiter match stringMatch = strstr(stringMatchLast == NULL ? stringBase : stringMatchLast, delimiter); // If a match was found then add the string if (stringMatch != NULL) { if ((size_t)(stringMatch - stringBase) >= size) { if (stringMatchLast != NULL) stringMatch = stringMatchLast - strlen(delimiter); strLstAddInternal(this, strNewN(stringBase, (size_t)(stringMatch - stringBase))); stringBase = stringMatch + strlen(delimiter); stringMatchLast = NULL; } else stringMatchLast = stringMatch + strlen(delimiter); } // Else make whatever is left the last string else { if (stringMatchLast != NULL && strlen(stringBase) - strlen(delimiter) >= size) { strLstAddInternal(this, strNewN(stringBase, (size_t)((stringMatchLast - strlen(delimiter)) - stringBase))); stringBase = stringMatchLast; } strLstAddInternal(this, strNew(stringBase)); } } while(stringMatch != NULL); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** New string list from a variant list -- all variants in the list must be type string ***********************************************************************************************************************************/ StringList * strLstNewVarLst(const VariantList *sourceList) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT_LIST, sourceList); FUNCTION_TEST_END(); // Create the list StringList *this = NULL; if (sourceList != NULL) { this = strLstNew(); // Copy variants MEM_CONTEXT_BEGIN(lstMemContext((List *)this)) { for (unsigned int listIdx = 0; listIdx < varLstSize(sourceList); listIdx++) strLstAddInternal(this, strDup(varStr(varLstGet(sourceList, listIdx)))); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Duplicate a string list ***********************************************************************************************************************************/ StringList * strLstDup(const StringList *sourceList) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, sourceList); FUNCTION_TEST_END(); StringList *this = NULL; if (sourceList != NULL) { // Create the list this = strLstNew(); // Copy strings MEM_CONTEXT_BEGIN(lstMemContext((List *)this)) { for (unsigned int listIdx = 0; listIdx < strLstSize(sourceList); listIdx++) strLstAddInternal(this, strDup(strLstGet(sourceList, listIdx))); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Does the specified string exist in the list? ***********************************************************************************************************************************/ bool strLstExists(const StringList *this, const String *string) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_PARAM(STRING, string); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(lstExists((List *)this, &string)); } bool strLstExistsZ(const StringList *this, const char *cstring) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_PARAM(STRINGZ, cstring); FUNCTION_TEST_END(); ASSERT(this != NULL); const String *string = cstring == NULL ? NULL : STR(cstring); FUNCTION_TEST_RETURN(lstExists((List *)this, &string)); } /*********************************************************************************************************************************** Add String to the list ***********************************************************************************************************************************/ String * strLstAdd(StringList *this, const String *string) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_PARAM(STRING, string); FUNCTION_TEST_END(); ASSERT(this != NULL); String *result = NULL; MEM_CONTEXT_BEGIN(lstMemContext((List *)this)) { result = strLstAddInternal(this, strDup(string)); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN(result); } String * strLstAddIfMissing(StringList *this, const String *string) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_PARAM(STRING, string); FUNCTION_TEST_END(); ASSERT(this != NULL); String **result = lstFind((List *)this, &string); if (result == NULL) FUNCTION_TEST_RETURN(strLstAdd(this, string)); FUNCTION_TEST_RETURN(*result); } /*********************************************************************************************************************************** Add a zero-terminated string to the list ***********************************************************************************************************************************/ String * strLstAddZ(StringList *this, const char *string) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_PARAM(STRINGZ, string); FUNCTION_TEST_END(); ASSERT(this != NULL); String *result = NULL; MEM_CONTEXT_BEGIN(lstMemContext((List *)this)) { result = strLstAddInternal(this, strNew(string)); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Wrapper for lstGet() ***********************************************************************************************************************************/ String * strLstGet(const StringList *this, unsigned int listIdx) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_PARAM(UINT, listIdx); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(*(String **)lstGet((List *)this, listIdx)); } /*********************************************************************************************************************************** Insert String into the list ***********************************************************************************************************************************/ String * strLstInsert(StringList *this, unsigned int listIdx, const String *string) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_PARAM(UINT, listIdx); FUNCTION_TEST_PARAM(STRING, string); FUNCTION_TEST_END(); ASSERT(this != NULL); String *result = NULL; MEM_CONTEXT_BEGIN(lstMemContext((List *)this)) { result = strLstInsertInternal(this, listIdx, strDup(string)); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Insert zero-terminated string into the list ***********************************************************************************************************************************/ String * strLstInsertZ(StringList *this, unsigned int listIdx, const char *string) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_PARAM(UINT, listIdx); FUNCTION_TEST_PARAM(STRINGZ, string); FUNCTION_TEST_END(); ASSERT(this != NULL); String *result = NULL; MEM_CONTEXT_BEGIN(lstMemContext((List *)this)) { result = strLstInsertInternal(this, listIdx, strNew(string)); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Join a list of strings into a single string using the specified separator ***********************************************************************************************************************************/ String * strLstJoin(const StringList *this, const char *separator) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_PARAM(STRINGZ, separator); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(separator != NULL); FUNCTION_TEST_RETURN(strLstJoinQuote(this, separator, "")); } /*********************************************************************************************************************************** Join a list of strings into a single string using the specified separator and quote with specified quote character ***********************************************************************************************************************************/ String * strLstJoinQuote(const StringList *this, const char *separator, const char *quote) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_PARAM(STRINGZ, separator); FUNCTION_TEST_PARAM(STRINGZ, quote); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(separator != NULL); ASSERT(quote != NULL); String *join = strNew(""); for (unsigned int listIdx = 0; listIdx < strLstSize(this); listIdx++) { if (listIdx != 0) strCat(join, separator); if (strLstGet(this, listIdx) == NULL) strCat(join, "[NULL]"); else strCatFmt(join, "%s%s%s", quote, strPtr(strLstGet(this, listIdx)), quote); } FUNCTION_TEST_RETURN(join); } /*********************************************************************************************************************************** Return all items in this list which are not in the anti list The input lists must *both* be sorted ascending or the results will be unpredictable. ***********************************************************************************************************************************/ StringList * strLstMergeAnti(const StringList *this, const StringList *anti) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_PARAM(STRING_LIST, anti); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(anti != NULL); StringList *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { result = strLstNew(); unsigned int antiIdx = 0; // Check every item in this for (unsigned int thisIdx = 0; thisIdx < strLstSize(this); thisIdx++) { bool add = true; const String *listItem = strLstGet(this, thisIdx); ASSERT(listItem != NULL); // If anything left in anti look for matches while (antiIdx < strLstSize(anti)) { ASSERT(strLstGet(anti, antiIdx) != NULL); int compare = strCmp(listItem, strLstGet(anti, antiIdx)); // If the current item in this is less than the current item in anti then it will be added if (compare < 0) { break; } // If they are equal it will not be added else if (compare == 0) { add = false; antiIdx++; break; } // Otherwise keep searching anti for a match else antiIdx++; } // Add to the result list if no match found if (add) strLstAdd(result, listItem); } strLstMove(result, memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Move the string list ***********************************************************************************************************************************/ StringList * strLstMove(StringList *this, MemContext *parentNew) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_PARAM(MEM_CONTEXT, parentNew); FUNCTION_TEST_END(); ASSERT(parentNew != NULL); lstMove((List *)this, parentNew); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Return a null-terminated array of pointers to the zero-terminated strings in this list. DO NOT override const and modify any of the strings in this array, though it is OK to modify the array itself. ***********************************************************************************************************************************/ const char ** strLstPtr(const StringList *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_END(); ASSERT(this != NULL); const char **list = memNew((strLstSize(this) + 1) * sizeof(char *)); for (unsigned int listIdx = 0; listIdx < strLstSize(this); listIdx++) { if (strLstGet(this, listIdx) == NULL) list[listIdx] = NULL; else list[listIdx] = strPtr(strLstGet(this, listIdx)); } list[strLstSize(this)] = NULL; FUNCTION_TEST_RETURN(list); } /*********************************************************************************************************************************** Remove an item from the list ***********************************************************************************************************************************/ bool strLstRemove(StringList *this, const String *item) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_PARAM(STRING, item); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(item != NULL); FUNCTION_TEST_RETURN(lstRemove((List *)this, &item)); } StringList * strLstRemoveIdx(StringList *this, unsigned int listIdx) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_PARAM(UINT, listIdx); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN((StringList *)lstRemoveIdx((List *)this, listIdx)); } /*********************************************************************************************************************************** Wrapper for lstSize() ***********************************************************************************************************************************/ unsigned int strLstSize(const StringList *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(lstSize((List *)this)); } /*********************************************************************************************************************************** Sort strings in alphabetical order ***********************************************************************************************************************************/ StringList * strLstSort(StringList *this, SortOrder sortOrder) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_PARAM(ENUM, sortOrder); FUNCTION_TEST_END(); ASSERT(this != NULL); lstSort((List *)this, sortOrder); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Set a new comparator ***********************************************************************************************************************************/ StringList * strLstComparatorSet(StringList *this, ListComparator *comparator) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_PARAM(FUNCTIONP, comparator); FUNCTION_TEST_END(); lstComparatorSet((List *)this, comparator); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * strLstToLog(const StringList *this) { return strNewFmt("{[%s]}", strPtr(strLstJoinQuote(this, ", ", "\""))); } /*********************************************************************************************************************************** Wrapper for lstFree() ***********************************************************************************************************************************/ void strLstFree(StringList *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, this); FUNCTION_TEST_END(); lstFree((List *)this); FUNCTION_TEST_RETURN_VOID(); } pgbackrest-release-2.24/src/common/type/stringList.h000066400000000000000000000104631362531507100225660ustar00rootroot00000000000000/*********************************************************************************************************************************** String List Handler ***********************************************************************************************************************************/ #ifndef COMMON_TYPE_STRINGLIST_H #define COMMON_TYPE_STRINGLIST_H /*********************************************************************************************************************************** StringList object ***********************************************************************************************************************************/ typedef struct StringList StringList; #include "common/memContext.h" #include "common/type/list.h" #include "common/type/string.h" #include "common/type/variantList.h" /*********************************************************************************************************************************** Constructors ***********************************************************************************************************************************/ StringList *strLstNew(void); StringList *strLstNewParam(ListComparator *comparator); StringList *strLstNewSplit(const String *string, const String *delimiter); StringList *strLstNewSplitZ(const String *string, const char *delimiter); StringList *strLstNewSplitSize(const String *string, const String *delimiter, size_t size); StringList *strLstNewSplitSizeZ(const String *string, const char *delimiter, size_t size); StringList *strLstNewVarLst(const VariantList *sourceList); StringList *strLstDup(const StringList *sourceList); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ String *strLstAdd(StringList *this, const String *string); String *strLstAddZ(StringList *this, const char *string); String *strLstAddIfMissing(StringList *this, const String *string); bool strLstExists(const StringList *this, const String *string); bool strLstExistsZ(const StringList *this, const char *cstring); String *strLstInsert(StringList *this, unsigned int listIdx, const String *string); String *strLstInsertZ(StringList *this, unsigned int listIdx, const char *string); String *strLstGet(const StringList *this, unsigned int listIdx); String *strLstJoin(const StringList *this, const char *separator); String *strLstJoinQuote(const StringList *this, const char *separator, const char *quote); StringList *strLstMergeAnti(const StringList *this, const StringList *anti); StringList *strLstMove(StringList *this, MemContext *parentNew); const char **strLstPtr(const StringList *this); bool strLstRemove(StringList *this, const String *item); StringList *strLstRemoveIdx(StringList *this, unsigned int listIdx); unsigned int strLstSize(const StringList *this); StringList *strLstSort(StringList *this, SortOrder sortOrder); /*********************************************************************************************************************************** Setters ***********************************************************************************************************************************/ StringList *strLstComparatorSet(StringList *this, ListComparator *comparator); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void strLstFree(StringList *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *strLstToLog(const StringList *this); #define FUNCTION_LOG_STRING_LIST_TYPE \ StringList * #define FUNCTION_LOG_STRING_LIST_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, strLstToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/type/stringz.h000066400000000000000000000020341362531507100221170ustar00rootroot00000000000000/*********************************************************************************************************************************** Zero-Terminated String Handler ***********************************************************************************************************************************/ #ifndef COMMON_TYPE_STRINGZ_H #define COMMON_TYPE_STRINGZ_H /*********************************************************************************************************************************** Zero-terminated strings that are generally useful ***********************************************************************************************************************************/ #define COLON_Z ":" #define DASH_Z "-" #define FALSE_Z "false" #define NULL_Z "null" #define TRUE_Z "true" #endif pgbackrest-release-2.24/src/common/type/variant.c000066400000000000000000001155261362531507100220710ustar00rootroot00000000000000/*********************************************************************************************************************************** Variant Data Type ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include #include #include #include "common/debug.h" #include "common/memContext.h" #include "common/type/convert.h" #include "common/type/variant.h" /*********************************************************************************************************************************** Constant variants that are generally useful ***********************************************************************************************************************************/ // Used to declare Bool Variant constants that will be externed using VARIANT_DECLARE(). Must be used in a .c file. #define VARIANT_BOOL_EXTERN(name, dataParam) \ const Variant *const name = ((const Variant *)&(const VariantBoolConst){.type = varTypeBool, .data = dataParam}) VARIANT_BOOL_EXTERN(BOOL_FALSE_VAR, false); VARIANT_BOOL_EXTERN(BOOL_TRUE_VAR, true); /*********************************************************************************************************************************** Information about the variant ***********************************************************************************************************************************/ struct Variant { VARIANT_COMMON }; typedef struct VariantBool { VARIANT_COMMON VARIANT_BOOL_COMMON MemContext *memContext; } VariantBool; typedef struct VariantDouble { VARIANT_COMMON VARIANT_DOUBLE_COMMON MemContext *memContext; } VariantDouble; typedef struct VariantInt { VARIANT_COMMON VARIANT_INT_COMMON MemContext *memContext; } VariantInt; typedef struct VariantInt64 { VARIANT_COMMON VARIANT_INT64_COMMON MemContext *memContext; } VariantInt64; typedef struct VariantKeyValue { VARIANT_COMMON KeyValue *data; /* KeyValue data */ MemContext *memContext; } VariantKeyValue; typedef struct VariantString { VARIANT_COMMON VARIANT_STRING_COMMON MemContext *memContext; } VariantString; typedef struct VariantUInt { VARIANT_COMMON VARIANT_UINT_COMMON MemContext *memContext; } VariantUInt; typedef struct VariantUInt64 { VARIANT_COMMON VARIANT_UINT64_COMMON MemContext *memContext; } VariantUInt64; typedef struct VariantVariantList { VARIANT_COMMON VariantList *data; /* VariantList data */ MemContext *memContext; } VariantVariantList; /*********************************************************************************************************************************** Variant type names ***********************************************************************************************************************************/ static const char *const variantTypeName[] = { "bool", // varTypeBool "double", // varTypeDouble, "int", // varTypeInt "int64", // varTypeInt64 "KeyValue", // varTypeKeyValue "String", // varTypeString "unsigned int", // varTypeUInt "uint64", // varTypeUInt64 "VariantList", // varTypeVariantList }; /*********************************************************************************************************************************** Duplicate a variant ***********************************************************************************************************************************/ Variant * varDup(const Variant *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this); FUNCTION_TEST_END(); Variant *result = NULL; if (this != NULL) { switch (this->type) { case varTypeBool: { result = varNewBool(varBool(this)); break; } case varTypeDouble: { result = varNewDbl(varDbl(this)); break; } case varTypeInt: { result = varNewInt(varInt(this)); break; } case varTypeInt64: { result = varNewInt64(varInt64(this)); break; } case varTypeKeyValue: { VariantKeyValue *keyValue = memNew(sizeof(VariantKeyValue)); *keyValue = (VariantKeyValue) { .memContext = memContextCurrent(), .type = varTypeKeyValue, .data = kvDup(varKv(this)), }; result = (Variant *)keyValue; break; } case varTypeString: { result = varNewStr(varStr(this)); break; } case varTypeUInt: { result = varNewUInt(varUInt(this)); break; } case varTypeUInt64: { result = varNewUInt64(varUInt64(this)); break; } case varTypeVariantList: { result = varNewVarLst(varVarLst(this)); break; } } } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Test if variants are equal ***********************************************************************************************************************************/ bool varEq(const Variant *this1, const Variant *this2) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this1); FUNCTION_TEST_PARAM(VARIANT, this2); FUNCTION_TEST_END(); bool result = false; // Test if both variants are non-null if (this1 != NULL && this2 != NULL) { // Test if both variants are of the same type if (varType(this1) == varType(this2)) { switch (varType(this1)) { case varTypeBool: { result = varBool(this1) == varBool(this2); break; } case varTypeDouble: { result = varDbl(this1) == varDbl(this2); break; } case varTypeInt: { result = varInt(this1) == varInt(this2); break; } case varTypeInt64: { result = varInt64(this1) == varInt64(this2); break; } case varTypeString: { result = strEq(varStr(this1), varStr(this2)); break; } case varTypeUInt: { result = varUInt(this1) == varUInt(this2); break; } case varTypeUInt64: { result = varUInt64(this1) == varUInt64(this2); break; } default: THROW_FMT(AssertError, "unable to test equality for %s", variantTypeName[this1->type]); } } } // Else they are equal if they are both null else result = this1 == NULL && this2 == NULL; FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Get variant type ***********************************************************************************************************************************/ VariantType varType(const Variant *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->type); } /*********************************************************************************************************************************** New bool variant ***********************************************************************************************************************************/ Variant * varNewBool(bool data) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BOOL, data); FUNCTION_TEST_END(); // Allocate memory for the variant and set the type and data VariantBool *this = memNew(sizeof(VariantBool)); *this = (VariantBool) { .memContext = memContextCurrent(), .type = varTypeBool, .data = data, }; FUNCTION_TEST_RETURN((Variant *)this); } /*********************************************************************************************************************************** Return bool ***********************************************************************************************************************************/ bool varBool(const Variant *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(this->type == varTypeBool); FUNCTION_TEST_RETURN(((VariantBool *)this)->data); } /*********************************************************************************************************************************** Return bool regardless of variant type ***********************************************************************************************************************************/ bool varBoolForce(const Variant *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); bool result = false; switch (this->type) { case varTypeBool: result = varBool(this); break; case varTypeInt: result = varInt(this) != 0; break; case varTypeInt64: result = varInt64(this) != 0; break; case varTypeString: { // List of false/true boolean string values. Note that false/true values must be equal. static const char *const boolString[] = { "n", "f", "0", "no", FALSE_Z, "off", "y", "t", "1", "yes", TRUE_Z, "on", }; // Search for the string const char *string = strPtr(varStr(this)); unsigned int boolIdx; for (boolIdx = 0; boolIdx < sizeof(boolString) / sizeof(char *); boolIdx++) if (strcasecmp(string, boolString[boolIdx]) == 0) break; // If string was not found then not a boolean if (boolIdx == sizeof(boolString) / sizeof(char *)) THROW_FMT(FormatError, "unable to convert str '%s' to bool", string); // False if in first half of list, true if in second half result = boolIdx / (sizeof(boolString) / sizeof(char *) / 2); break; } case varTypeUInt: result = varUInt(this) != 0; break; case varTypeUInt64: result = varUInt64(this) != 0; break; default: THROW_FMT(AssertError, "unable to force %s to %s", variantTypeName[this->type], variantTypeName[varTypeBool]); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** New double variant ***********************************************************************************************************************************/ Variant * varNewDbl(double data) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(DOUBLE, data); FUNCTION_TEST_END(); // Allocate memory for the variant and set the type and data VariantDouble *this = memNew(sizeof(VariantDouble)); *this = (VariantDouble) { .memContext = memContextCurrent(), .type = varTypeDouble, .data = data, }; FUNCTION_TEST_RETURN((Variant *)this); } /*********************************************************************************************************************************** Return double ***********************************************************************************************************************************/ double varDbl(const Variant *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(this->type == varTypeDouble); FUNCTION_TEST_RETURN(((VariantDouble *)this)->data); } /*********************************************************************************************************************************** Return double regardless of variant type ***********************************************************************************************************************************/ double varDblForce(const Variant *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); double result = 0; switch (this->type) { case varTypeBool: { result = varBool(this); break; } case varTypeDouble: { result = varDbl(this); break; } case varTypeInt: { result = varInt(this); break; } case varTypeInt64: { result = (double)varInt64(this); break; } case varTypeString: { result = cvtZToDouble(strPtr(varStr(this))); break; } case varTypeUInt: { result = (double)varUInt(this); break; } case varTypeUInt64: { result = (double)varUInt64(this); break; } default: THROW_FMT(AssertError, "unable to force %s to %s", variantTypeName[this->type], variantTypeName[varTypeDouble]); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** New int variant ***********************************************************************************************************************************/ Variant * varNewInt(int data) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT, data); FUNCTION_TEST_END(); // Allocate memory for the variant and set the type and data VariantInt *this = memNew(sizeof(VariantInt)); *this = (VariantInt) { .memContext = memContextCurrent(), .type = varTypeInt, .data = data, }; FUNCTION_TEST_RETURN((Variant *)this); } /*********************************************************************************************************************************** Return int ***********************************************************************************************************************************/ int varInt(const Variant *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(this->type == varTypeInt); FUNCTION_TEST_RETURN(((VariantInt *)this)->data); } /*********************************************************************************************************************************** Return int regardless of variant type ***********************************************************************************************************************************/ int varIntForce(const Variant *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); int result = 0; switch (this->type) { case varTypeBool: { result = varBool(this); break; } case varTypeInt: { result = varInt(this); break; } case varTypeInt64: { int64_t resultTest = varInt64(this); // Make sure the value fits into a normal 32-bit int range since 32-bit platforms are supported if (resultTest > INT32_MAX || resultTest < INT32_MIN) THROW_FMT( FormatError, "unable to convert %s %" PRId64 " to %s", variantTypeName[this->type], resultTest, variantTypeName[varTypeInt]); result = (int)resultTest; break; } case varTypeString: { result = cvtZToInt(strPtr(varStr(this))); break; } case varTypeUInt: { unsigned int resultTest = varUInt(this); // Make sure the value fits into a normal 32-bit int range if (resultTest > INT32_MAX) THROW_FMT( FormatError, "unable to convert %s %u to %s", variantTypeName[this->type], resultTest, variantTypeName[varTypeInt]); result = (int)resultTest; break; } case varTypeUInt64: { uint64_t resultTest = varUInt64(this); // Make sure the value fits into a normal 32-bit int range if (resultTest > INT32_MAX) THROW_FMT( FormatError, "unable to convert %s %" PRIu64 " to %s", variantTypeName[this->type], resultTest, variantTypeName[varTypeInt]); result = (int)resultTest; break; } default: THROW_FMT(AssertError, "unable to force %s to %s", variantTypeName[this->type], variantTypeName[varTypeInt]); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** New int64 variant ***********************************************************************************************************************************/ Variant * varNewInt64(int64_t data) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INT64, data); FUNCTION_TEST_END(); // Allocate memory for the variant and set the type and data VariantInt64 *this = memNew(sizeof(VariantInt64)); *this = (VariantInt64) { .memContext = memContextCurrent(), .type = varTypeInt64, .data = data, }; FUNCTION_TEST_RETURN((Variant *)this); } /*********************************************************************************************************************************** Return int64 ***********************************************************************************************************************************/ int64_t varInt64(const Variant *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(this->type == varTypeInt64); FUNCTION_TEST_RETURN(((VariantInt64 *)this)->data); } /*********************************************************************************************************************************** Return int64 regardless of variant type ***********************************************************************************************************************************/ int64_t varInt64Force(const Variant *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); int64_t result = 0; switch (this->type) { case varTypeBool: { result = varBool(this); break; } case varTypeInt: { result = (int64_t)varInt(this); break; } case varTypeInt64: { result = varInt64(this); break; } case varTypeString: { result = cvtZToInt64(strPtr(varStr(this))); break; } case varTypeUInt: { result = varUInt(this); break; } case varTypeUInt64: { uint64_t resultTest = varUInt64(this); // If max number of unsigned 64-bit integer is greater than max 64-bit signed integer can hold, then error if (resultTest <= INT64_MAX) result = (int64_t)resultTest; else { THROW_FMT( FormatError, "unable to convert %s %" PRIu64 " to %s", variantTypeName[this->type], resultTest, variantTypeName[varTypeInt64]); } break; } default: THROW_FMT(AssertError, "unable to force %s to %s", variantTypeName[this->type], variantTypeName[varTypeInt64]); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** New unsigned int variant ***********************************************************************************************************************************/ Variant * varNewUInt(unsigned int data) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, data); FUNCTION_TEST_END(); // Allocate memory for the variant and set the type and data VariantUInt *this = memNew(sizeof(VariantUInt)); *this = (VariantUInt) { .memContext = memContextCurrent(), .type = varTypeUInt, .data = data, }; FUNCTION_TEST_RETURN((Variant *)this); } /*********************************************************************************************************************************** Return unsigned int ***********************************************************************************************************************************/ unsigned int varUInt(const Variant *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(this->type == varTypeUInt); FUNCTION_TEST_RETURN(((VariantUInt *)this)->data); } /*********************************************************************************************************************************** Return unsigned int regardless of variant type ***********************************************************************************************************************************/ unsigned int varUIntForce(const Variant *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); unsigned int result = 0; switch (this->type) { case varTypeBool: { result = varBool(this); break; } case varTypeInt: { int resultTest = varInt(this); // If integer is a negative number, throw an error since the resulting conversion would be a different number if (resultTest >= 0) result = (unsigned int)resultTest; else { THROW_FMT( FormatError, "unable to convert %s %d to %s", variantTypeName[this->type], resultTest, variantTypeName[varTypeUInt]); } break; } case varTypeInt64: { int64_t resultTest = varInt64(this); // If integer is a negative number or too large, throw an error since the resulting conversion would be out of bounds if (resultTest >= 0 && resultTest <= UINT_MAX) result = (unsigned int)resultTest; else { THROW_FMT( FormatError, "unable to convert %s %" PRId64 " to %s", variantTypeName[this->type], resultTest, variantTypeName[varTypeUInt]); } break; } case varTypeUInt: { result = varUInt(this); break; } case varTypeUInt64: { uint64_t resultTest = varUInt64(this); // If integer is too large, throw an error since the resulting conversion would be out of bounds if (resultTest <= UINT_MAX) result = (unsigned int)resultTest; else { THROW_FMT( FormatError, "unable to convert %s %" PRIu64 " to %s", variantTypeName[this->type], resultTest, variantTypeName[varTypeUInt]); } break; } case varTypeString: { result = cvtZToUInt(strPtr(varStr(this))); break; } default: THROW_FMT(AssertError, "unable to force %s to %s", variantTypeName[this->type], variantTypeName[varTypeUInt]); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** New uint64 variant ***********************************************************************************************************************************/ Variant * varNewUInt64(uint64_t data) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT64, data); FUNCTION_TEST_END(); // Allocate memory for the variant and set the type and data VariantUInt64 *this = memNew(sizeof(VariantUInt64)); *this = (VariantUInt64) { .memContext = memContextCurrent(), .type = varTypeUInt64, .data = data, }; FUNCTION_TEST_RETURN((Variant *)this); } /*********************************************************************************************************************************** Return int64 ***********************************************************************************************************************************/ uint64_t varUInt64(const Variant *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(this->type == varTypeUInt64); FUNCTION_TEST_RETURN(((VariantUInt64 *)this)->data); } /*********************************************************************************************************************************** Return uint64 regardless of variant type ***********************************************************************************************************************************/ uint64_t varUInt64Force(const Variant *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); uint64_t result = 0; switch (this->type) { case varTypeBool: { result = varBool(this); break; } case varTypeInt: { int resultTest = varInt(this); // If integer is a negative number, throw an error since the resulting conversion would be a different number if (resultTest >= 0) result = (uint64_t)resultTest; else { THROW_FMT( FormatError, "unable to convert %s %d to %s", variantTypeName[this->type], resultTest, variantTypeName[varTypeUInt64]); } break; } case varTypeInt64: { int64_t resultTest = varInt64(this); // If integer is a negative number, throw an error since the resulting conversion would be out of bounds if (resultTest >= 0) result = (uint64_t)resultTest; else { THROW_FMT( FormatError, "unable to convert %s %" PRId64 " to %s", variantTypeName[this->type], resultTest, variantTypeName[varTypeUInt64]); } break; } case varTypeString: { result = cvtZToUInt64(strPtr(varStr(this))); break; } case varTypeUInt: { result = varUInt(this); break; } case varTypeUInt64: { result = varUInt64(this); break; } default: THROW_FMT(AssertError, "unable to force %s to %s", variantTypeName[this->type], variantTypeName[varTypeUInt64]); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** New key/value variant Note that the kv is not duped because it this a heavy-weight operation. It is merely moved into the same MemContext as the Variant. ***********************************************************************************************************************************/ Variant * varNewKv(KeyValue *data) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(KEY_VALUE, data); FUNCTION_TEST_END(); // Allocate memory for the variant and set the type and data VariantKeyValue *this = memNew(sizeof(VariantKeyValue)); *this = (VariantKeyValue) { .memContext = memContextCurrent(), .type = varTypeKeyValue, }; if (data != NULL) this->data = kvMove(data, memContextCurrent()); FUNCTION_TEST_RETURN((Variant *)this); } /*********************************************************************************************************************************** Return key/value ***********************************************************************************************************************************/ KeyValue * varKv(const Variant *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this); FUNCTION_TEST_END(); KeyValue *result = NULL; if (this != NULL) { ASSERT(this->type == varTypeKeyValue); result = ((VariantKeyValue *)this)->data; } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** New string variant ***********************************************************************************************************************************/ Variant * varNewStr(const String *data) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, data); FUNCTION_TEST_END(); // Allocate memory for the variant and set the type and data VariantString *this = memNew(sizeof(VariantString)); *this = (VariantString) { .memContext = memContextCurrent(), .type = varTypeString, .data = strDup(data), }; FUNCTION_TEST_RETURN((Variant *)this); } /*********************************************************************************************************************************** New string variant from a zero-terminated string ***********************************************************************************************************************************/ Variant * varNewStrZ(const char *data) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, data); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN(varNewStr(data == NULL ? NULL : strNew(data))); } /*********************************************************************************************************************************** Return string ***********************************************************************************************************************************/ const String * varStr(const Variant *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this); FUNCTION_TEST_END(); String *result = NULL; if (this != NULL) { ASSERT(this->type == varTypeString); result = ((VariantString *)this)->data; } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Return string regardless of variant type ***********************************************************************************************************************************/ String * varStrForce(const Variant *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); String *result = NULL; switch (varType(this)) { case varTypeBool: { result = strNew(cvtBoolToConstZ(varBool(this))); break; } case varTypeDouble: { char working[CVT_BASE10_BUFFER_SIZE]; cvtDoubleToZ(varDbl(this), working, sizeof(working)); result = strNew(working); break; } case varTypeInt: { char working[CVT_BASE10_BUFFER_SIZE]; cvtIntToZ(varInt(this), working, sizeof(working)); result = strNew(working); break; } case varTypeInt64: { char working[CVT_BASE10_BUFFER_SIZE]; cvtInt64ToZ(varInt64(this), working, sizeof(working)); result = strNew(working); break; } case varTypeString: { result = strDup(varStr(this)); break; } case varTypeUInt: { char working[CVT_BASE10_BUFFER_SIZE]; cvtUIntToZ(varUInt(this), working, sizeof(working)); result = strNew(working); break; } case varTypeUInt64: { char working[CVT_BASE10_BUFFER_SIZE]; cvtUInt64ToZ(varUInt64(this), working, sizeof(working)); result = strNew(working); break; } default: THROW_FMT(FormatError, "unable to force %s to %s", variantTypeName[this->type], variantTypeName[varTypeString]); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** New variant list variant ***********************************************************************************************************************************/ Variant * varNewVarLst(const VariantList *data) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT_LIST, data); FUNCTION_TEST_END(); // Allocate memory for the variant and set the type and data VariantVariantList *this = memNew(sizeof(VariantVariantList)); *this = (VariantVariantList) { .memContext = memContextCurrent(), .type = varTypeVariantList, }; if (data != NULL) this->data = varLstDup(data); FUNCTION_TEST_RETURN((Variant *)this); } /*********************************************************************************************************************************** Return key/value ***********************************************************************************************************************************/ VariantList * varVarLst(const Variant *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this); FUNCTION_TEST_END(); VariantList *result = NULL; if (this != NULL) { ASSERT(this->type == varTypeVariantList); result = ((VariantVariantList *)this)->data; } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Convert variant to a zero-terminated string for logging ***********************************************************************************************************************************/ String * varToLog(const Variant *this) { String *result = NULL; if (this == NULL) result = strDup(NULL_STR); else { switch (varType(this)) { case varTypeString: { result = strToLog(varStr(this)); break; } case varTypeKeyValue: { result = strNew("{KeyValue}"); break; } case varTypeVariantList: { result = strNew("{VariantList}"); break; } case varTypeBool: case varTypeDouble: case varTypeInt: case varTypeInt64: case varTypeUInt: case varTypeUInt64: { result = strNewFmt("{%s}", strPtr(varStrForce(this))); break; } } } return result; } /*********************************************************************************************************************************** Free variant ***********************************************************************************************************************************/ void varFree(Variant *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, this); FUNCTION_TEST_END(); if (this != NULL) { MemContext *memContext = NULL; switch (this->type) { case varTypeBool: { memContext = ((VariantBool *)this)->memContext; break; } case varTypeDouble: { memContext = ((VariantDouble *)this)->memContext; break; } case varTypeInt: { memContext = ((VariantInt *)this)->memContext; break; } case varTypeInt64: { memContext = ((VariantInt64 *)this)->memContext; break; } case varTypeKeyValue: { memContext = ((VariantKeyValue *)this)->memContext; kvFree(((VariantKeyValue *)this)->data); break; } case varTypeString: { memContext = ((VariantString *)this)->memContext; strFree(((VariantString *)this)->data); break; } case varTypeUInt: { memContext = ((VariantUInt *)this)->memContext; break; } case varTypeUInt64: { memContext = ((VariantUInt64 *)this)->memContext; break; } case varTypeVariantList: { memContext = ((VariantVariantList *)this)->memContext; varLstFree(((VariantVariantList *)this)->data); break; } } MEM_CONTEXT_BEGIN(memContext) { memFree(this); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN_VOID(); } pgbackrest-release-2.24/src/common/type/variant.h000066400000000000000000000275401362531507100220740ustar00rootroot00000000000000/*********************************************************************************************************************************** Variant Data Type Variants are lightweight objects in that they do not have their own memory context, instead they exist in the current context in which they are instantiated. If a variant is needed outside the current memory context, the memory context must be switched to the old context and then back. Below is a simplified example: Variant *result = NULL; <--- is created in the current memory context (referred to as "old context" below) MEM_CONTEXT_TEMP_BEGIN() <--- begins a new temporary context { String *resultStr = strNewN("myNewStr"); <--- creates a string in the temporary memory context MEM_CONTEXT_PRIOR_BEGIN() <--- switch to old context so creation of the variant from the string is in old context { result = varNewUInt64(cvtZToUInt64(strPtr(resultStr))); <--- recreates variant from the string in the old context. } MEM_CONTEXT_PRIOR_END(); <--- switch back to the temporary context } MEM_CONTEXT_TEMP_END(); <-- frees everything created inside this temporary memory context - i.e resultStr ***********************************************************************************************************************************/ #ifndef COMMON_TYPE_VARIANT_H #define COMMON_TYPE_VARIANT_H #include /*********************************************************************************************************************************** Variant object ***********************************************************************************************************************************/ typedef struct Variant Variant; /*********************************************************************************************************************************** Variant type ***********************************************************************************************************************************/ typedef enum { varTypeBool, varTypeDouble, varTypeInt, varTypeInt64, varTypeKeyValue, varTypeString, varTypeUInt, varTypeUInt64, varTypeVariantList, } VariantType; #include "common/type/keyValue.h" #include "common/type/string.h" #include "common/type/variantList.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ Variant *varNewBool(bool data); bool varBool(const Variant *this); bool varBoolForce(const Variant *this); Variant *varNewDbl(double data); double varDbl(const Variant *this); double varDblForce(const Variant *this); Variant *varNewInt(int data); int varInt(const Variant *this); int varIntForce(const Variant *this); Variant *varNewInt64(int64_t data); int64_t varInt64(const Variant *this); int64_t varInt64Force(const Variant *this); Variant *varNewKv(KeyValue *data); KeyValue *varKv(const Variant *this); Variant *varNewStr(const String *data); Variant *varNewStrZ(const char *data); const String *varStr(const Variant *this); String *varStrForce(const Variant *this); Variant *varNewUInt(unsigned int data); unsigned int varUInt(const Variant *this); unsigned int varUIntForce(const Variant *this); Variant *varNewUInt64(uint64_t data); uint64_t varUInt64(const Variant *this); uint64_t varUInt64Force(const Variant *this); Variant *varNewVarLst(const VariantList *data); VariantList *varVarLst(const Variant *this); Variant *varDup(const Variant *this); bool varEq(const Variant *this1, const Variant *this2); VariantType varType(const Variant *this); void varFree(Variant *this); /*********************************************************************************************************************************** Fields that are common between dynamically allocated and constant variants There is nothing user-accessible here but this construct allows constant variants to be created and then handled by the same functions that process dynamically allocated variant. ***********************************************************************************************************************************/ #define VARIANT_COMMON \ VariantType type; /* Variant type */ #define VARIANT_BOOL_COMMON \ bool data; /* Boolean data */ typedef struct VariantBoolConst { VARIANT_COMMON const VARIANT_BOOL_COMMON } VariantBoolConst; #define VARIANT_DOUBLE_COMMON \ double data; /* Double data */ typedef struct VariantDoubleConst { VARIANT_COMMON const VARIANT_DOUBLE_COMMON } VariantDoubleConst; #define VARIANT_INT_COMMON \ int data; /* Signed integer data */ typedef struct VariantIntConst { VARIANT_COMMON const VARIANT_INT_COMMON } VariantIntConst; #define VARIANT_INT64_COMMON \ int64_t data; /* 64-bit signed integer data */ typedef struct VariantInt64Const { VARIANT_COMMON const VARIANT_INT64_COMMON } VariantInt64Const; #define VARIANT_STRING_COMMON \ String *data; /* String data */ typedef struct VariantStringConst { VARIANT_COMMON const VARIANT_STRING_COMMON } VariantStringConst; #define VARIANT_UINT_COMMON \ unsigned int data; /* unsigned integer data */ typedef struct VariantUIntConst { VARIANT_COMMON const VARIANT_UINT_COMMON } VariantUIntConst; #define VARIANT_UINT64_COMMON \ uint64_t data; /* 64-bit unsigned integer data */ typedef struct VariantUInt64Const { VARIANT_COMMON const VARIANT_UINT64_COMMON } VariantUInt64Const; /*********************************************************************************************************************************** Macros for constant variants Frequently used constant variants can be declared with these macros at compile time rather than dynamically at run time. Note that variants created in this way are declared as const so can't be modified or freed by the var*() methods. Casting to Variant * will generally result in a segfault. By convention all variant constant identifiers are appended with _VAR. ***********************************************************************************************************************************/ // Create a Bool Variant constant inline from a bool #define VARBOOL(dataParam) \ ((const Variant *)&(const VariantBoolConst){.type = varTypeBool, .data = dataParam}) // Create a Double Variant constant inline from a double #define VARDBL(dataParam) \ ((const Variant *)&(const VariantDoubleConst){.type = varTypeDouble, .data = dataParam}) // Create an Int Variant constant inline from an int #define VARINT(dataParam) \ ((const Variant *)&(const VariantIntConst){.type = varTypeInt, .data = dataParam}) // Create an Int64 Variant constant inline from an int64_t #define VARINT64(dataParam) \ ((const Variant *)&(const VariantInt64Const){.type = varTypeInt64, .data = dataParam}) // Create a String Variant constant inline from any zero-terminated string #define VARSTRZ(dataParam) \ ((const Variant *)&(const VariantStringConst){.type = varTypeString, .data = STR(dataParam)}) // Create a String Variant constant inline from a #define or inline string constant #define VARSTRDEF(dataParam) \ ((const Variant *)&(const VariantStringConst){.type = varTypeString, .data = STRDEF(dataParam)}) // Create a String Variant constant inline from a String constant #define VARSTR(dataParam) \ ((const Variant *)&(const VariantStringConst){.type = varTypeString, .data = dataParam}) // Used to declare String Variant constants that will be externed using VARIANT_DECLARE(). Must be used in a .c file. #define VARIANT_STRDEF_EXTERN(name, dataParam) \ const Variant *const name = VARSTRDEF(dataParam) // Used to declare String Variant constants that will be local to the .c file. Must be used in a .c file. #define VARIANT_STRDEF_STATIC(name, dataParam) \ static const Variant *const name = VARSTRDEF(dataParam) // Create a UInt Variant constant inline from an unsigned int #define VARUINT(dataParam) \ ((const Variant *)&(const VariantUIntConst){.type = varTypeUInt, .data = dataParam}) // Create a UInt64 Variant constant inline from a uint64_t #define VARUINT64(dataParam) \ ((const Variant *)&(const VariantUInt64Const){.type = varTypeUInt64, .data = dataParam}) // Used to extern String Variant constants declared with VARIANT_STRDEF_EXTERN/STATIC(). Must be used in a .h file. #define VARIANT_DECLARE(name) \ extern const Variant *const name /*********************************************************************************************************************************** Constant variants that are generally useful ***********************************************************************************************************************************/ VARIANT_DECLARE(BOOL_FALSE_VAR); VARIANT_DECLARE(BOOL_TRUE_VAR); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *varToLog(const Variant *this); #define FUNCTION_LOG_VARIANT_TYPE \ Variant * #define FUNCTION_LOG_VARIANT_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, varToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/type/variantList.c000066400000000000000000000121761362531507100227220ustar00rootroot00000000000000/*********************************************************************************************************************************** Variant List Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include "common/debug.h" #include "common/memContext.h" #include "common/type/list.h" #include "common/type/variantList.h" /*********************************************************************************************************************************** Wrapper for lstNew() ***********************************************************************************************************************************/ VariantList * varLstNew(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN((VariantList *)lstNew(sizeof(Variant *))); } /*********************************************************************************************************************************** Create a variant list from a string list ***********************************************************************************************************************************/ VariantList * varLstNewStrLst(const StringList *stringList) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, stringList); FUNCTION_TEST_END(); VariantList *result = NULL; if (stringList != NULL) { result = varLstNew(); for (unsigned int listIdx = 0; listIdx < strLstSize(stringList); listIdx++) varLstAdd(result, varNewStr(strLstGet(stringList, listIdx))); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Duplicate a variant list ***********************************************************************************************************************************/ VariantList * varLstDup(const VariantList *source) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT_LIST, source); FUNCTION_TEST_END(); VariantList *result = NULL; if (source != NULL) { result = varLstNew(); for (unsigned int listIdx = 0; listIdx < varLstSize(source); listIdx++) varLstAdd(result, varDup(varLstGet(source, listIdx))); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Wrapper for lstAdd() ***********************************************************************************************************************************/ VariantList * varLstAdd(VariantList *this, Variant *data) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT_LIST, this); FUNCTION_TEST_PARAM(VARIANT, data); FUNCTION_TEST_END(); ASSERT(this != NULL); lstAdd((List *)this, &data); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Wrapper for lstGet() ***********************************************************************************************************************************/ Variant * varLstGet(const VariantList *this, unsigned int listIdx) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT_LIST, this); FUNCTION_TEST_PARAM(UINT, listIdx); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(*(Variant **)lstGet((List *)this, listIdx)); } /*********************************************************************************************************************************** Wrapper for lstSize() ***********************************************************************************************************************************/ unsigned int varLstSize(const VariantList *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT_LIST, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(lstSize((List *)this)); } /*********************************************************************************************************************************** Move to a new mem context ***********************************************************************************************************************************/ VariantList * varLstMove(VariantList *this, MemContext *parentNew) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT_LIST, this); FUNCTION_TEST_PARAM(MEM_CONTEXT, parentNew); FUNCTION_TEST_END(); ASSERT(parentNew != NULL); lstMove((List *)this, parentNew); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Wrapper for lstFree() ***********************************************************************************************************************************/ void varLstFree(VariantList *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT_LIST, this); FUNCTION_TEST_END(); lstFree((List *)this); FUNCTION_TEST_RETURN_VOID(); } pgbackrest-release-2.24/src/common/type/variantList.h000066400000000000000000000040521362531507100227210ustar00rootroot00000000000000/*********************************************************************************************************************************** Variant List Handler ***********************************************************************************************************************************/ #ifndef COMMON_TYPE_VARIANTLIST_H #define COMMON_TYPE_VARIANTLIST_H /*********************************************************************************************************************************** Variant list object ***********************************************************************************************************************************/ typedef struct VariantList VariantList; #include "common/type/stringList.h" #include "common/type/variant.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ VariantList *varLstNew(void); VariantList *varLstNewStrLst(const StringList *stringList); VariantList *varLstDup(const VariantList *source); VariantList *varLstAdd(VariantList *this, Variant *data); Variant *varLstGet(const VariantList *this, unsigned int listIdx); VariantList *varLstMove(VariantList *this, MemContext *parentNew); unsigned int varLstSize(const VariantList *this); void varLstFree(VariantList *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_VARIANT_LIST_TYPE \ VariantList * #define FUNCTION_LOG_VARIANT_LIST_FORMAT(value, buffer, bufferSize) \ objToLog(value, "VariantList", buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/type/xml.c000066400000000000000000000436511362531507100212240ustar00rootroot00000000000000/*********************************************************************************************************************************** Xml Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "common/type/list.h" #include "common/type/xml.h" /*********************************************************************************************************************************** Encoding constants ***********************************************************************************************************************************/ #define XML_ENCODING_TYPE_UTF8 "UTF-8" /*********************************************************************************************************************************** Node type ***********************************************************************************************************************************/ struct XmlNode { xmlNodePtr node; }; /*********************************************************************************************************************************** Document type ***********************************************************************************************************************************/ struct XmlDocument { MemContext *memContext; xmlDocPtr xml; XmlNode *root; }; OBJECT_DEFINE_FREE(XML_DOCUMENT); /*********************************************************************************************************************************** Error handler For now this is a noop until more detailed error messages are needed. The function is called multiple times per error, so the messages need to be accumulated and then returned together. This empty function is required because without it libxml2 will dump errors to stdout. Really. ***********************************************************************************************************************************/ static void xmlErrorHandler(void *ctx, const char *format, ...) { (void)ctx; (void)format; } /*********************************************************************************************************************************** Initialize xml ***********************************************************************************************************************************/ static void xmlInit(void) { FUNCTION_TEST_VOID(); // Initialize xml if it is not already initialized static bool xmlInit = false; if (!xmlInit) { LIBXML_TEST_VERSION; // It's a pretty weird that we can't just pass a handler function but instead have to assign it to a var... static xmlGenericErrorFunc xmlErrorHandlerFunc = xmlErrorHandler; initGenericErrorDefaultFunc(&xmlErrorHandlerFunc); xmlInit = true; } FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Create node list ***********************************************************************************************************************************/ XmlNodeList * xmlNodeLstNew(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN((XmlNodeList *)lstNew(sizeof(XmlNode *))); } /*********************************************************************************************************************************** Get a node from the list ***********************************************************************************************************************************/ XmlNode * xmlNodeLstGet(const XmlNodeList *this, unsigned int listIdx) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(XML_NODE_LIST, this); FUNCTION_TEST_PARAM(UINT, listIdx); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(*(XmlNode **)lstGet((List *)this, listIdx)); } /*********************************************************************************************************************************** Get node list size ***********************************************************************************************************************************/ unsigned int xmlNodeLstSize(const XmlNodeList *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(XML_NODE_LIST, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(lstSize((List *)this)); } /*********************************************************************************************************************************** Free node list ***********************************************************************************************************************************/ void xmlNodeLstFree(XmlNodeList *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(XML_NODE_LIST, this); FUNCTION_TEST_END(); lstFree((List *)this); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Create node ***********************************************************************************************************************************/ static XmlNode * xmlNodeNew(xmlNodePtr node) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, node); FUNCTION_TEST_END(); ASSERT(node != NULL); XmlNode *this = memNew(sizeof(XmlNode)); *this = (XmlNode) { .node = node, }; FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Add a node ***********************************************************************************************************************************/ XmlNode * xmlNodeAdd(XmlNode *this, const String *name) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(XML_NODE, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); XmlNode *result = xmlNodeNew(xmlNewNode(NULL, BAD_CAST strPtr(name))); xmlAddChild(this->node, result->node); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Add a node to a node list ***********************************************************************************************************************************/ static XmlNodeList * xmlNodeLstAdd(XmlNodeList *this, xmlNodePtr node) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(XML_NODE_LIST, this); FUNCTION_TEST_PARAM_P(VOID, node); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(node != NULL); MEM_CONTEXT_BEGIN(lstMemContext((List *)this)) { XmlNode *item = xmlNodeNew(node); lstAdd((List *)this, &item); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Get node attribute ***********************************************************************************************************************************/ String * xmlNodeAttribute(const XmlNode *this, const String *name) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(XML_NODE, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); String *result = NULL; xmlChar *value = xmlGetProp(this->node, (unsigned char *)strPtr(name)); if (value != NULL) { result = strNew((char *)value); xmlFree(value); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Get node content ***********************************************************************************************************************************/ String * xmlNodeContent(const XmlNode *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(XML_NODE, this); FUNCTION_TEST_END(); String *result = NULL; if (this != NULL) { xmlChar *content = xmlNodeGetContent(this->node); result = strNew((char *)content); xmlFree(content); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Set node content ***********************************************************************************************************************************/ void xmlNodeContentSet(XmlNode *this, const String *content) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(XML_NODE, this); FUNCTION_TEST_PARAM(STRING, content); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(content != NULL); xmlAddChild(this->node, xmlNewText(BAD_CAST strPtr(content))); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Get a list of child nodes ***********************************************************************************************************************************/ XmlNodeList * xmlNodeChildList(const XmlNode *this, const String *name) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(XML_NODE, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); XmlNodeList *list = xmlNodeLstNew(); for (xmlNodePtr currentNode = this->node->children; currentNode != NULL; currentNode = currentNode->next) { if (currentNode->type == XML_ELEMENT_NODE && strEqZ(name, (char *)currentNode->name)) xmlNodeLstAdd(list, currentNode); } FUNCTION_TEST_RETURN(list); } /*********************************************************************************************************************************** Get a child node ***********************************************************************************************************************************/ XmlNode * xmlNodeChildN(const XmlNode *this, const String *name, unsigned int index, bool errorOnMissing) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(XML_NODE, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_PARAM(UINT, index); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); XmlNode *child = NULL; unsigned int childIdx = 0; for (xmlNodePtr currentNode = this->node->children; currentNode != NULL; currentNode = currentNode->next) { if (currentNode->type == XML_ELEMENT_NODE && strEqZ(name, (char *)currentNode->name)) { if (childIdx == index) { child = xmlNodeNew(currentNode); break; } childIdx++; } } if (child == NULL && errorOnMissing) THROW_FMT(FormatError, "unable to find child '%s':%u in node '%s'", strPtr(name), index, this->node->name); FUNCTION_TEST_RETURN(child); } XmlNode * xmlNodeChild(const XmlNode *this, const String *name, bool errorOnMissing) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(XML_NODE, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); FUNCTION_TEST_RETURN(xmlNodeChildN(this, name, 0, errorOnMissing)); } /*********************************************************************************************************************************** Get child total ***********************************************************************************************************************************/ unsigned int xmlNodeChildTotal(const XmlNode *this, const String *name) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(XML_NODE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); unsigned int result = 0; for (xmlNodePtr currentNode = this->node->children; currentNode != NULL; currentNode = currentNode->next) { if (currentNode->type == XML_ELEMENT_NODE && strEqZ(name, (char *)currentNode->name)) result++; } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Free node ***********************************************************************************************************************************/ void xmlNodeFree(XmlNode *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(XML_NODE, this); FUNCTION_TEST_END(); if (this != NULL) memFree(this); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Free document ***********************************************************************************************************************************/ OBJECT_DEFINE_FREE_RESOURCE_BEGIN(XML_DOCUMENT, LOG, logLevelTrace) { xmlFreeDoc(this->xml); } OBJECT_DEFINE_FREE_RESOURCE_END(LOG); /*********************************************************************************************************************************** Create a new document with the specified root node ***********************************************************************************************************************************/ XmlDocument * xmlDocumentNew(const String *rootName) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, rootName); FUNCTION_TEST_END(); ASSERT(rootName != NULL); xmlInit(); // Create object XmlDocument *this = NULL; MEM_CONTEXT_NEW_BEGIN("XmlDocument") { this = memNew(sizeof(XmlDocument)); *this = (XmlDocument) { .memContext = MEM_CONTEXT_NEW(), .xml = xmlNewDoc(BAD_CAST "1.0"), }; // Set callback to ensure xml document is freed memContextCallbackSet(this->memContext, xmlDocumentFreeResource, this); this->root = xmlNodeNew(xmlNewNode(NULL, BAD_CAST strPtr(rootName))); xmlDocSetRootElement(this->xml, this->root->node); } MEM_CONTEXT_NEW_END(); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Create document from C buffer ***********************************************************************************************************************************/ XmlDocument * xmlDocumentNewC(const unsigned char *buffer, size_t bufferSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(UCHARDATA, buffer); FUNCTION_TEST_PARAM(SIZE, bufferSize); FUNCTION_TEST_END(); ASSERT(buffer != NULL); ASSERT(bufferSize > 0); xmlInit(); // Create object XmlDocument *this = NULL; MEM_CONTEXT_NEW_BEGIN("XmlDocument") { this = memNew(sizeof(XmlDocument)); *this = (XmlDocument) { .memContext = MEM_CONTEXT_NEW(), }; if ((this->xml = xmlReadMemory((const char *)buffer, (int)bufferSize, "noname.xml", NULL, 0)) == NULL) THROW_FMT(FormatError, "invalid xml"); // Set callback to ensure xml document is freed memContextCallbackSet(this->memContext, xmlDocumentFreeResource, this); // Get the root node this->root = xmlNodeNew(xmlDocGetRootElement(this->xml)); } MEM_CONTEXT_NEW_END(); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Create document from Buffer ***********************************************************************************************************************************/ XmlDocument * xmlDocumentNewBuf(const Buffer *buffer) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, buffer); FUNCTION_TEST_END(); ASSERT(buffer != NULL); ASSERT(bufSize(buffer) > 0); FUNCTION_TEST_RETURN(xmlDocumentNewC(bufPtr(buffer), bufUsed(buffer))); } /*********************************************************************************************************************************** Create document from zero-terminated string ***********************************************************************************************************************************/ XmlDocument * xmlDocumentNewZ(const char *string) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, string); FUNCTION_TEST_END(); ASSERT(string != NULL); ASSERT(strlen(string) > 0); FUNCTION_TEST_RETURN(xmlDocumentNewC((const unsigned char *)string, strlen(string))); } /*********************************************************************************************************************************** Dump document to a buffer ***********************************************************************************************************************************/ Buffer * xmlDocumentBuf(const XmlDocument *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(XML_DOCUMENT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); xmlChar *xml; int xmlSize; xmlDocDumpMemoryEnc(this->xml, &xml, &xmlSize, XML_ENCODING_TYPE_UTF8); Buffer *result = bufNewC(xml, (size_t)xmlSize); xmlFree(xml); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Get the root node ***********************************************************************************************************************************/ XmlNode * xmlDocumentRoot(const XmlDocument *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(XML_DOCUMENT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->root); } pgbackrest-release-2.24/src/common/type/xml.h000066400000000000000000000133261362531507100212250ustar00rootroot00000000000000/*********************************************************************************************************************************** Xml Handler A thin wrapper around the libxml2 library. There are many capabilities of libxml2 that are not exposed here and may need to be added to when implementing new features. ***********************************************************************************************************************************/ #ifndef COMMON_TYPE_XML_H #define COMMON_TYPE_XML_H /*********************************************************************************************************************************** Objects ***********************************************************************************************************************************/ #define XML_DOCUMENT_TYPE XmlDocument #define XML_DOCUMENT_PREFIX xmlDocument typedef struct XmlDocument XmlDocument; typedef struct XmlNode XmlNode; typedef struct XmlNodeList XmlNodeList; #include "common/memContext.h" #include "common/type/string.h" /*********************************************************************************************************************************** Document Constructors ***********************************************************************************************************************************/ XmlDocument *xmlDocumentNew(const String *rootNode); XmlDocument *xmlDocumentNewBuf(const Buffer *); XmlDocument *xmlDocumentNewC(const unsigned char *buffer, size_t bufferSize); XmlDocument *xmlDocumentNewZ(const char *string); /*********************************************************************************************************************************** Document Getters ***********************************************************************************************************************************/ Buffer *xmlDocumentBuf(const XmlDocument *this); XmlNode *xmlDocumentRoot(const XmlDocument *this); /*********************************************************************************************************************************** Document Destructor ***********************************************************************************************************************************/ void xmlDocumentFree(XmlDocument *this); /*********************************************************************************************************************************** Node Functions ***********************************************************************************************************************************/ XmlNode *xmlNodeAdd(XmlNode *this, const String *name); /*********************************************************************************************************************************** Node Getters/Setters ***********************************************************************************************************************************/ String *xmlNodeAttribute(const XmlNode *this, const String *name); XmlNode *xmlNodeChild(const XmlNode *this, const String *name, bool errorOnMissing); XmlNodeList *xmlNodeChildList(const XmlNode *this, const String *name); XmlNode *xmlNodeChildN(const XmlNode *this, const String *name, unsigned int index, bool errorOnMissing); unsigned int xmlNodeChildTotal(const XmlNode *this, const String *name); String *xmlNodeContent(const XmlNode *this); void xmlNodeContentSet(XmlNode *this, const String *content); /*********************************************************************************************************************************** Node Destructor ***********************************************************************************************************************************/ void xmlNodeFree(XmlNode *this); /*********************************************************************************************************************************** Node List Getters ***********************************************************************************************************************************/ XmlNode *xmlNodeLstGet(const XmlNodeList *this, unsigned int listIdx); unsigned int xmlNodeLstSize(const XmlNodeList *this); /*********************************************************************************************************************************** Node List Destructor ***********************************************************************************************************************************/ void xmlNodeLstFree(XmlNodeList *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_XML_DOCUMENT_TYPE \ XmlDocument * #define FUNCTION_LOG_XML_DOCUMENT_FORMAT(value, buffer, bufferSize) \ objToLog(value, "XmlDocument", buffer, bufferSize) #define FUNCTION_LOG_XML_NODE_TYPE \ XmlNode * #define FUNCTION_LOG_XML_NODE_FORMAT(value, buffer, bufferSize) \ objToLog(value, "XmlNode", buffer, bufferSize) #define FUNCTION_LOG_XML_NODE_LIST_TYPE \ XmlNodeList * #define FUNCTION_LOG_XML_NODE_LIST_FORMAT(value, buffer, bufferSize) \ objToLog(value, "XmlNodeList", buffer, bufferSize) #endif pgbackrest-release-2.24/src/common/user.c000066400000000000000000000124451362531507100204160ustar00rootroot00000000000000/*********************************************************************************************************************************** System User/Group Management ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include "common/debug.h" #include "common/memContext.h" #include "common/user.h" /*********************************************************************************************************************************** User group info ***********************************************************************************************************************************/ struct { MemContext *memContext; // Mem context to store data in this struct uid_t userId; // Real user id of the calling process from getuid() bool userRoot; // Is this the root user? const String *userName; // User name if it exists gid_t groupId; // Real group id of the calling process from getgid() const String *groupName; // Group name if it exists } userLocalData; /***********************************************************************************************************************************/ static void userInitInternal(void) { FUNCTION_TEST_VOID(); MEM_CONTEXT_BEGIN(memContextTop()) { MEM_CONTEXT_NEW_BEGIN("UserLocalData") { userLocalData.memContext = MEM_CONTEXT_NEW(); userLocalData.userId = getuid(); userLocalData.userName = userNameFromId(userLocalData.userId); userLocalData.userRoot = userLocalData.userId == 0; userLocalData.groupId = getgid(); userLocalData.groupName = groupNameFromId(userLocalData.groupId); } MEM_CONTEXT_NEW_END(); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN_VOID(); } void userInit(void) { FUNCTION_TEST_VOID(); if (!userLocalData.memContext) userInitInternal(); FUNCTION_TEST_RETURN_VOID(); } /**********************************************************************************************************************************/ gid_t groupId(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(userLocalData.groupId); } /**********************************************************************************************************************************/ gid_t groupIdFromName(const String *groupName) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, groupName); FUNCTION_TEST_END(); if (groupName != NULL) { struct group *groupData = getgrnam(strPtr(groupName)); if (groupData != NULL) FUNCTION_TEST_RETURN(groupData->gr_gid); } FUNCTION_TEST_RETURN((gid_t)-1); } /**********************************************************************************************************************************/ const String * groupName(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(userLocalData.groupName); } /**********************************************************************************************************************************/ String * groupNameFromId(gid_t groupId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, groupId); FUNCTION_TEST_END(); struct group *groupData = getgrgid(groupId); if (groupData != NULL) FUNCTION_TEST_RETURN(strNew(groupData->gr_name)); FUNCTION_TEST_RETURN(NULL); } /**********************************************************************************************************************************/ uid_t userId(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(userLocalData.userId); } /**********************************************************************************************************************************/ uid_t userIdFromName(const String *userName) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, userName); FUNCTION_TEST_END(); if (userName != NULL) { struct passwd *userData = getpwnam(strPtr(userName)); if (userData != NULL) FUNCTION_TEST_RETURN(userData->pw_uid); } FUNCTION_TEST_RETURN((uid_t)-1); } /**********************************************************************************************************************************/ const String * userName(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(userLocalData.userName); } /**********************************************************************************************************************************/ String * userNameFromId(uid_t userId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, userId); FUNCTION_TEST_END(); struct passwd *userData = getpwuid(userId); if (userData != NULL) FUNCTION_TEST_RETURN(strNew(userData->pw_name)); FUNCTION_TEST_RETURN(NULL); } /**********************************************************************************************************************************/ bool userRoot(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(userLocalData.userRoot); } pgbackrest-release-2.24/src/common/user.h000066400000000000000000000033041362531507100204150ustar00rootroot00000000000000/*********************************************************************************************************************************** System User/Group Management ***********************************************************************************************************************************/ #ifndef COMMON_USER_H #define COMMON_USER_H #include #include "common/type/string.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ // Call this initializer before using any of the functions below. Safe to call more than once. void userInit(void); // Get the primary group id of the current user gid_t groupId(void); // Get the id of the specified group. Returns (gid_t)-1 if not found. gid_t groupIdFromName(const String *groupName); // Get the primary group name of the current user. Returns NULL if there is no mapping. const String *groupName(void); // Get the group name from a group id. Returns NULL if the group id is invalid or there is no mapping. String *groupNameFromId(gid_t groupId); // Get the id of the current user uid_t userId(void); // Get the id of the specified user. Returns (uid_t)-1 if not found. uid_t userIdFromName(const String *userName); // Get the name of the current user. Returns NULL if there is no mapping. const String *userName(void); // Get the user name from a user id. Returns NULL if the user id is invalid or there is no mapping. String *userNameFromId(uid_t userId); // Is the current user the root user? bool userRoot(void); #endif pgbackrest-release-2.24/src/common/wait.c000066400000000000000000000100601362531507100203730ustar00rootroot00000000000000/*********************************************************************************************************************************** Wait Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "common/wait.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct Wait { MemContext *memContext; // Context that contains the wait handler TimeMSec waitTime; // Total time to wait (in usec) TimeMSec sleepTime; // Next sleep time (in usec) TimeMSec sleepPrevTime; // Previous time slept (in usec) TimeMSec beginTime; // Time the wait began (in epoch usec) }; OBJECT_DEFINE_FREE(WAIT); /*********************************************************************************************************************************** New wait handler ***********************************************************************************************************************************/ Wait * waitNew(TimeMSec waitTime) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(TIMEMSEC, waitTime); FUNCTION_LOG_END(); ASSERT(waitTime >= 100 && waitTime <= 999999000); // Allocate wait object Wait *this = NULL; MEM_CONTEXT_NEW_BEGIN("wait") { // Create object this = memNew(sizeof(Wait)); *this = (Wait) { .memContext = MEM_CONTEXT_NEW(), .waitTime = waitTime, }; // Calculate first sleep time -- start with 1/10th of a second for anything >= 1 second if (this->waitTime >= MSEC_PER_SEC) this->sleepTime = MSEC_PER_SEC / 10; // Unless the wait time is really small -- in that case divide wait time by 10 else this->sleepTime = this->waitTime / 10; // Get beginning time this->beginTime = timeMSec(); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(WAIT, this); } /*********************************************************************************************************************************** Wait and return whether the caller has more time left ***********************************************************************************************************************************/ bool waitMore(Wait *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(WAIT, this); FUNCTION_LOG_END(); ASSERT(this != NULL); bool result = false; // If sleep is 0 then the wait time has already ended if (this->sleepTime > 0) { // Sleep required amount sleepMSec(this->sleepTime); // Get the end time TimeMSec elapsedTime = timeMSec() - this->beginTime; // Is there more time to go? if (elapsedTime < this->waitTime) { // Calculate sleep time as a sum of current and last (a Fibonacci-type sequence) TimeMSec sleepNextTime = this->sleepTime + this->sleepPrevTime; // Make sure sleep time does not go beyond end time (this won't be negative because of the if condition above) if (sleepNextTime > this->waitTime - elapsedTime) sleepNextTime = this->waitTime - elapsedTime; // Store new sleep times this->sleepPrevTime = this->sleepTime; this->sleepTime = sleepNextTime; } // Else set sleep to zero so next call will return false else this->sleepTime = 0; // Need to wait more result = true; } FUNCTION_LOG_RETURN(BOOL, result); } pgbackrest-release-2.24/src/common/wait.h000066400000000000000000000034021362531507100204020ustar00rootroot00000000000000/*********************************************************************************************************************************** Wait Handler ***********************************************************************************************************************************/ #ifndef COMMON_WAIT_H #define COMMON_WAIT_H /*********************************************************************************************************************************** Wait object ***********************************************************************************************************************************/ #define WAIT_TYPE Wait #define WAIT_PREFIX wait typedef struct Wait Wait; #include "common/time.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ Wait *waitNew(TimeMSec waitTime); bool waitMore(Wait *this); void waitFree(Wait *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_WAIT_TYPE \ Wait * #define FUNCTION_LOG_WAIT_FORMAT(value, buffer, bufferSize) \ objToLog(value, "Wait", buffer, bufferSize) #endif pgbackrest-release-2.24/src/config/000077500000000000000000000000001362531507100172435ustar00rootroot00000000000000pgbackrest-release-2.24/src/config/config.auto.c000066400000000000000000002242331362531507100216310ustar00rootroot00000000000000/*********************************************************************************************************************************** Command and Option Configuration Automatically generated by Build.pm -- do not modify directly. ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Command constants ***********************************************************************************************************************************/ STRING_EXTERN(CFGCMD_ARCHIVE_GET_STR, CFGCMD_ARCHIVE_GET); STRING_EXTERN(CFGCMD_ARCHIVE_PUSH_STR, CFGCMD_ARCHIVE_PUSH); STRING_EXTERN(CFGCMD_BACKUP_STR, CFGCMD_BACKUP); STRING_EXTERN(CFGCMD_CHECK_STR, CFGCMD_CHECK); STRING_EXTERN(CFGCMD_EXPIRE_STR, CFGCMD_EXPIRE); STRING_EXTERN(CFGCMD_HELP_STR, CFGCMD_HELP); STRING_EXTERN(CFGCMD_INFO_STR, CFGCMD_INFO); STRING_EXTERN(CFGCMD_LS_STR, CFGCMD_LS); STRING_EXTERN(CFGCMD_RESTORE_STR, CFGCMD_RESTORE); STRING_EXTERN(CFGCMD_STANZA_CREATE_STR, CFGCMD_STANZA_CREATE); STRING_EXTERN(CFGCMD_STANZA_DELETE_STR, CFGCMD_STANZA_DELETE); STRING_EXTERN(CFGCMD_STANZA_UPGRADE_STR, CFGCMD_STANZA_UPGRADE); STRING_EXTERN(CFGCMD_START_STR, CFGCMD_START); STRING_EXTERN(CFGCMD_STOP_STR, CFGCMD_STOP); STRING_EXTERN(CFGCMD_VERSION_STR, CFGCMD_VERSION); /*********************************************************************************************************************************** Command data ***********************************************************************************************************************************/ static ConfigCommandData configCommandData[CFG_COMMAND_TOTAL] = CONFIG_COMMAND_LIST ( CONFIG_COMMAND ( CONFIG_COMMAND_NAME(CFGCMD_ARCHIVE_GET) CONFIG_COMMAND_INTERNAL(false) CONFIG_COMMAND_LOG_FILE(false) CONFIG_COMMAND_LOG_LEVEL_DEFAULT(logLevelInfo) CONFIG_COMMAND_LOCK_REQUIRED(false) CONFIG_COMMAND_LOCK_REMOTE_REQUIRED(false) CONFIG_COMMAND_LOCK_TYPE(lockTypeArchive) CONFIG_COMMAND_PARAMETER_ALLOWED(true) ) CONFIG_COMMAND ( CONFIG_COMMAND_NAME(CFGCMD_ARCHIVE_PUSH) CONFIG_COMMAND_INTERNAL(false) CONFIG_COMMAND_LOG_FILE(false) CONFIG_COMMAND_LOG_LEVEL_DEFAULT(logLevelInfo) CONFIG_COMMAND_LOCK_REQUIRED(false) CONFIG_COMMAND_LOCK_REMOTE_REQUIRED(true) CONFIG_COMMAND_LOCK_TYPE(lockTypeArchive) CONFIG_COMMAND_PARAMETER_ALLOWED(true) ) CONFIG_COMMAND ( CONFIG_COMMAND_NAME(CFGCMD_BACKUP) CONFIG_COMMAND_INTERNAL(false) CONFIG_COMMAND_LOG_FILE(true) CONFIG_COMMAND_LOG_LEVEL_DEFAULT(logLevelInfo) CONFIG_COMMAND_LOCK_REQUIRED(true) CONFIG_COMMAND_LOCK_REMOTE_REQUIRED(true) CONFIG_COMMAND_LOCK_TYPE(lockTypeBackup) CONFIG_COMMAND_PARAMETER_ALLOWED(false) ) CONFIG_COMMAND ( CONFIG_COMMAND_NAME(CFGCMD_CHECK) CONFIG_COMMAND_INTERNAL(false) CONFIG_COMMAND_LOG_FILE(false) CONFIG_COMMAND_LOG_LEVEL_DEFAULT(logLevelInfo) CONFIG_COMMAND_LOCK_REQUIRED(false) CONFIG_COMMAND_LOCK_REMOTE_REQUIRED(false) CONFIG_COMMAND_LOCK_TYPE(lockTypeNone) CONFIG_COMMAND_PARAMETER_ALLOWED(false) ) CONFIG_COMMAND ( CONFIG_COMMAND_NAME(CFGCMD_EXPIRE) CONFIG_COMMAND_INTERNAL(false) CONFIG_COMMAND_LOG_FILE(true) CONFIG_COMMAND_LOG_LEVEL_DEFAULT(logLevelInfo) CONFIG_COMMAND_LOCK_REQUIRED(true) CONFIG_COMMAND_LOCK_REMOTE_REQUIRED(false) CONFIG_COMMAND_LOCK_TYPE(lockTypeBackup) CONFIG_COMMAND_PARAMETER_ALLOWED(false) ) CONFIG_COMMAND ( CONFIG_COMMAND_NAME(CFGCMD_HELP) CONFIG_COMMAND_INTERNAL(false) CONFIG_COMMAND_LOG_FILE(false) CONFIG_COMMAND_LOG_LEVEL_DEFAULT(logLevelDebug) CONFIG_COMMAND_LOCK_REQUIRED(false) CONFIG_COMMAND_LOCK_REMOTE_REQUIRED(false) CONFIG_COMMAND_LOCK_TYPE(lockTypeNone) CONFIG_COMMAND_PARAMETER_ALLOWED(true) ) CONFIG_COMMAND ( CONFIG_COMMAND_NAME(CFGCMD_INFO) CONFIG_COMMAND_INTERNAL(false) CONFIG_COMMAND_LOG_FILE(false) CONFIG_COMMAND_LOG_LEVEL_DEFAULT(logLevelDebug) CONFIG_COMMAND_LOCK_REQUIRED(false) CONFIG_COMMAND_LOCK_REMOTE_REQUIRED(false) CONFIG_COMMAND_LOCK_TYPE(lockTypeNone) CONFIG_COMMAND_PARAMETER_ALLOWED(false) ) CONFIG_COMMAND ( CONFIG_COMMAND_NAME(CFGCMD_LS) CONFIG_COMMAND_INTERNAL(true) CONFIG_COMMAND_LOG_FILE(false) CONFIG_COMMAND_LOG_LEVEL_DEFAULT(logLevelDebug) CONFIG_COMMAND_LOCK_REQUIRED(false) CONFIG_COMMAND_LOCK_REMOTE_REQUIRED(false) CONFIG_COMMAND_LOCK_TYPE(lockTypeNone) CONFIG_COMMAND_PARAMETER_ALLOWED(true) ) CONFIG_COMMAND ( CONFIG_COMMAND_NAME(CFGCMD_RESTORE) CONFIG_COMMAND_INTERNAL(false) CONFIG_COMMAND_LOG_FILE(true) CONFIG_COMMAND_LOG_LEVEL_DEFAULT(logLevelInfo) CONFIG_COMMAND_LOCK_REQUIRED(false) CONFIG_COMMAND_LOCK_REMOTE_REQUIRED(false) CONFIG_COMMAND_LOCK_TYPE(lockTypeNone) CONFIG_COMMAND_PARAMETER_ALLOWED(false) ) CONFIG_COMMAND ( CONFIG_COMMAND_NAME(CFGCMD_STANZA_CREATE) CONFIG_COMMAND_INTERNAL(false) CONFIG_COMMAND_LOG_FILE(true) CONFIG_COMMAND_LOG_LEVEL_DEFAULT(logLevelInfo) CONFIG_COMMAND_LOCK_REQUIRED(true) CONFIG_COMMAND_LOCK_REMOTE_REQUIRED(false) CONFIG_COMMAND_LOCK_TYPE(lockTypeAll) CONFIG_COMMAND_PARAMETER_ALLOWED(false) ) CONFIG_COMMAND ( CONFIG_COMMAND_NAME(CFGCMD_STANZA_DELETE) CONFIG_COMMAND_INTERNAL(false) CONFIG_COMMAND_LOG_FILE(true) CONFIG_COMMAND_LOG_LEVEL_DEFAULT(logLevelInfo) CONFIG_COMMAND_LOCK_REQUIRED(true) CONFIG_COMMAND_LOCK_REMOTE_REQUIRED(false) CONFIG_COMMAND_LOCK_TYPE(lockTypeAll) CONFIG_COMMAND_PARAMETER_ALLOWED(false) ) CONFIG_COMMAND ( CONFIG_COMMAND_NAME(CFGCMD_STANZA_UPGRADE) CONFIG_COMMAND_INTERNAL(false) CONFIG_COMMAND_LOG_FILE(true) CONFIG_COMMAND_LOG_LEVEL_DEFAULT(logLevelInfo) CONFIG_COMMAND_LOCK_REQUIRED(true) CONFIG_COMMAND_LOCK_REMOTE_REQUIRED(false) CONFIG_COMMAND_LOCK_TYPE(lockTypeAll) CONFIG_COMMAND_PARAMETER_ALLOWED(false) ) CONFIG_COMMAND ( CONFIG_COMMAND_NAME(CFGCMD_START) CONFIG_COMMAND_INTERNAL(false) CONFIG_COMMAND_LOG_FILE(true) CONFIG_COMMAND_LOG_LEVEL_DEFAULT(logLevelInfo) CONFIG_COMMAND_LOCK_REQUIRED(false) CONFIG_COMMAND_LOCK_REMOTE_REQUIRED(false) CONFIG_COMMAND_LOCK_TYPE(lockTypeNone) CONFIG_COMMAND_PARAMETER_ALLOWED(false) ) CONFIG_COMMAND ( CONFIG_COMMAND_NAME(CFGCMD_STOP) CONFIG_COMMAND_INTERNAL(false) CONFIG_COMMAND_LOG_FILE(true) CONFIG_COMMAND_LOG_LEVEL_DEFAULT(logLevelInfo) CONFIG_COMMAND_LOCK_REQUIRED(false) CONFIG_COMMAND_LOCK_REMOTE_REQUIRED(false) CONFIG_COMMAND_LOCK_TYPE(lockTypeNone) CONFIG_COMMAND_PARAMETER_ALLOWED(false) ) CONFIG_COMMAND ( CONFIG_COMMAND_NAME(CFGCMD_VERSION) CONFIG_COMMAND_INTERNAL(false) CONFIG_COMMAND_LOG_FILE(false) CONFIG_COMMAND_LOG_LEVEL_DEFAULT(logLevelDebug) CONFIG_COMMAND_LOCK_REQUIRED(false) CONFIG_COMMAND_LOCK_REMOTE_REQUIRED(false) CONFIG_COMMAND_LOCK_TYPE(lockTypeNone) CONFIG_COMMAND_PARAMETER_ALLOWED(false) ) ) /*********************************************************************************************************************************** Option constants ***********************************************************************************************************************************/ STRING_EXTERN(CFGOPT_ARCHIVE_ASYNC_STR, CFGOPT_ARCHIVE_ASYNC); STRING_EXTERN(CFGOPT_ARCHIVE_CHECK_STR, CFGOPT_ARCHIVE_CHECK); STRING_EXTERN(CFGOPT_ARCHIVE_COPY_STR, CFGOPT_ARCHIVE_COPY); STRING_EXTERN(CFGOPT_ARCHIVE_GET_QUEUE_MAX_STR, CFGOPT_ARCHIVE_GET_QUEUE_MAX); STRING_EXTERN(CFGOPT_ARCHIVE_PUSH_QUEUE_MAX_STR, CFGOPT_ARCHIVE_PUSH_QUEUE_MAX); STRING_EXTERN(CFGOPT_ARCHIVE_TIMEOUT_STR, CFGOPT_ARCHIVE_TIMEOUT); STRING_EXTERN(CFGOPT_BACKUP_STANDBY_STR, CFGOPT_BACKUP_STANDBY); STRING_EXTERN(CFGOPT_BUFFER_SIZE_STR, CFGOPT_BUFFER_SIZE); STRING_EXTERN(CFGOPT_CHECKSUM_PAGE_STR, CFGOPT_CHECKSUM_PAGE); STRING_EXTERN(CFGOPT_CMD_SSH_STR, CFGOPT_CMD_SSH); STRING_EXTERN(CFGOPT_COMPRESS_STR, CFGOPT_COMPRESS); STRING_EXTERN(CFGOPT_COMPRESS_LEVEL_STR, CFGOPT_COMPRESS_LEVEL); STRING_EXTERN(CFGOPT_COMPRESS_LEVEL_NETWORK_STR, CFGOPT_COMPRESS_LEVEL_NETWORK); STRING_EXTERN(CFGOPT_CONFIG_STR, CFGOPT_CONFIG); STRING_EXTERN(CFGOPT_CONFIG_INCLUDE_PATH_STR, CFGOPT_CONFIG_INCLUDE_PATH); STRING_EXTERN(CFGOPT_CONFIG_PATH_STR, CFGOPT_CONFIG_PATH); STRING_EXTERN(CFGOPT_DB_INCLUDE_STR, CFGOPT_DB_INCLUDE); STRING_EXTERN(CFGOPT_DB_TIMEOUT_STR, CFGOPT_DB_TIMEOUT); STRING_EXTERN(CFGOPT_DELTA_STR, CFGOPT_DELTA); STRING_EXTERN(CFGOPT_EXCLUDE_STR, CFGOPT_EXCLUDE); STRING_EXTERN(CFGOPT_FILTER_STR, CFGOPT_FILTER); STRING_EXTERN(CFGOPT_FORCE_STR, CFGOPT_FORCE); STRING_EXTERN(CFGOPT_HOST_ID_STR, CFGOPT_HOST_ID); STRING_EXTERN(CFGOPT_LINK_ALL_STR, CFGOPT_LINK_ALL); STRING_EXTERN(CFGOPT_LINK_MAP_STR, CFGOPT_LINK_MAP); STRING_EXTERN(CFGOPT_LOCK_PATH_STR, CFGOPT_LOCK_PATH); STRING_EXTERN(CFGOPT_LOG_LEVEL_CONSOLE_STR, CFGOPT_LOG_LEVEL_CONSOLE); STRING_EXTERN(CFGOPT_LOG_LEVEL_FILE_STR, CFGOPT_LOG_LEVEL_FILE); STRING_EXTERN(CFGOPT_LOG_LEVEL_STDERR_STR, CFGOPT_LOG_LEVEL_STDERR); STRING_EXTERN(CFGOPT_LOG_PATH_STR, CFGOPT_LOG_PATH); STRING_EXTERN(CFGOPT_LOG_SUBPROCESS_STR, CFGOPT_LOG_SUBPROCESS); STRING_EXTERN(CFGOPT_LOG_TIMESTAMP_STR, CFGOPT_LOG_TIMESTAMP); STRING_EXTERN(CFGOPT_MANIFEST_SAVE_THRESHOLD_STR, CFGOPT_MANIFEST_SAVE_THRESHOLD); STRING_EXTERN(CFGOPT_NEUTRAL_UMASK_STR, CFGOPT_NEUTRAL_UMASK); STRING_EXTERN(CFGOPT_ONLINE_STR, CFGOPT_ONLINE); STRING_EXTERN(CFGOPT_OUTPUT_STR, CFGOPT_OUTPUT); STRING_EXTERN(CFGOPT_PG1_HOST_STR, CFGOPT_PG1_HOST); STRING_EXTERN(CFGOPT_PG2_HOST_STR, CFGOPT_PG2_HOST); STRING_EXTERN(CFGOPT_PG3_HOST_STR, CFGOPT_PG3_HOST); STRING_EXTERN(CFGOPT_PG4_HOST_STR, CFGOPT_PG4_HOST); STRING_EXTERN(CFGOPT_PG5_HOST_STR, CFGOPT_PG5_HOST); STRING_EXTERN(CFGOPT_PG6_HOST_STR, CFGOPT_PG6_HOST); STRING_EXTERN(CFGOPT_PG7_HOST_STR, CFGOPT_PG7_HOST); STRING_EXTERN(CFGOPT_PG8_HOST_STR, CFGOPT_PG8_HOST); STRING_EXTERN(CFGOPT_PG1_HOST_CMD_STR, CFGOPT_PG1_HOST_CMD); STRING_EXTERN(CFGOPT_PG2_HOST_CMD_STR, CFGOPT_PG2_HOST_CMD); STRING_EXTERN(CFGOPT_PG3_HOST_CMD_STR, CFGOPT_PG3_HOST_CMD); STRING_EXTERN(CFGOPT_PG4_HOST_CMD_STR, CFGOPT_PG4_HOST_CMD); STRING_EXTERN(CFGOPT_PG5_HOST_CMD_STR, CFGOPT_PG5_HOST_CMD); STRING_EXTERN(CFGOPT_PG6_HOST_CMD_STR, CFGOPT_PG6_HOST_CMD); STRING_EXTERN(CFGOPT_PG7_HOST_CMD_STR, CFGOPT_PG7_HOST_CMD); STRING_EXTERN(CFGOPT_PG8_HOST_CMD_STR, CFGOPT_PG8_HOST_CMD); STRING_EXTERN(CFGOPT_PG1_HOST_CONFIG_STR, CFGOPT_PG1_HOST_CONFIG); STRING_EXTERN(CFGOPT_PG2_HOST_CONFIG_STR, CFGOPT_PG2_HOST_CONFIG); STRING_EXTERN(CFGOPT_PG3_HOST_CONFIG_STR, CFGOPT_PG3_HOST_CONFIG); STRING_EXTERN(CFGOPT_PG4_HOST_CONFIG_STR, CFGOPT_PG4_HOST_CONFIG); STRING_EXTERN(CFGOPT_PG5_HOST_CONFIG_STR, CFGOPT_PG5_HOST_CONFIG); STRING_EXTERN(CFGOPT_PG6_HOST_CONFIG_STR, CFGOPT_PG6_HOST_CONFIG); STRING_EXTERN(CFGOPT_PG7_HOST_CONFIG_STR, CFGOPT_PG7_HOST_CONFIG); STRING_EXTERN(CFGOPT_PG8_HOST_CONFIG_STR, CFGOPT_PG8_HOST_CONFIG); STRING_EXTERN(CFGOPT_PG1_HOST_CONFIG_INCLUDE_PATH_STR, CFGOPT_PG1_HOST_CONFIG_INCLUDE_PATH); STRING_EXTERN(CFGOPT_PG2_HOST_CONFIG_INCLUDE_PATH_STR, CFGOPT_PG2_HOST_CONFIG_INCLUDE_PATH); STRING_EXTERN(CFGOPT_PG3_HOST_CONFIG_INCLUDE_PATH_STR, CFGOPT_PG3_HOST_CONFIG_INCLUDE_PATH); STRING_EXTERN(CFGOPT_PG4_HOST_CONFIG_INCLUDE_PATH_STR, CFGOPT_PG4_HOST_CONFIG_INCLUDE_PATH); STRING_EXTERN(CFGOPT_PG5_HOST_CONFIG_INCLUDE_PATH_STR, CFGOPT_PG5_HOST_CONFIG_INCLUDE_PATH); STRING_EXTERN(CFGOPT_PG6_HOST_CONFIG_INCLUDE_PATH_STR, CFGOPT_PG6_HOST_CONFIG_INCLUDE_PATH); STRING_EXTERN(CFGOPT_PG7_HOST_CONFIG_INCLUDE_PATH_STR, CFGOPT_PG7_HOST_CONFIG_INCLUDE_PATH); STRING_EXTERN(CFGOPT_PG8_HOST_CONFIG_INCLUDE_PATH_STR, CFGOPT_PG8_HOST_CONFIG_INCLUDE_PATH); STRING_EXTERN(CFGOPT_PG1_HOST_CONFIG_PATH_STR, CFGOPT_PG1_HOST_CONFIG_PATH); STRING_EXTERN(CFGOPT_PG2_HOST_CONFIG_PATH_STR, CFGOPT_PG2_HOST_CONFIG_PATH); STRING_EXTERN(CFGOPT_PG3_HOST_CONFIG_PATH_STR, CFGOPT_PG3_HOST_CONFIG_PATH); STRING_EXTERN(CFGOPT_PG4_HOST_CONFIG_PATH_STR, CFGOPT_PG4_HOST_CONFIG_PATH); STRING_EXTERN(CFGOPT_PG5_HOST_CONFIG_PATH_STR, CFGOPT_PG5_HOST_CONFIG_PATH); STRING_EXTERN(CFGOPT_PG6_HOST_CONFIG_PATH_STR, CFGOPT_PG6_HOST_CONFIG_PATH); STRING_EXTERN(CFGOPT_PG7_HOST_CONFIG_PATH_STR, CFGOPT_PG7_HOST_CONFIG_PATH); STRING_EXTERN(CFGOPT_PG8_HOST_CONFIG_PATH_STR, CFGOPT_PG8_HOST_CONFIG_PATH); STRING_EXTERN(CFGOPT_PG1_HOST_PORT_STR, CFGOPT_PG1_HOST_PORT); STRING_EXTERN(CFGOPT_PG2_HOST_PORT_STR, CFGOPT_PG2_HOST_PORT); STRING_EXTERN(CFGOPT_PG3_HOST_PORT_STR, CFGOPT_PG3_HOST_PORT); STRING_EXTERN(CFGOPT_PG4_HOST_PORT_STR, CFGOPT_PG4_HOST_PORT); STRING_EXTERN(CFGOPT_PG5_HOST_PORT_STR, CFGOPT_PG5_HOST_PORT); STRING_EXTERN(CFGOPT_PG6_HOST_PORT_STR, CFGOPT_PG6_HOST_PORT); STRING_EXTERN(CFGOPT_PG7_HOST_PORT_STR, CFGOPT_PG7_HOST_PORT); STRING_EXTERN(CFGOPT_PG8_HOST_PORT_STR, CFGOPT_PG8_HOST_PORT); STRING_EXTERN(CFGOPT_PG1_HOST_USER_STR, CFGOPT_PG1_HOST_USER); STRING_EXTERN(CFGOPT_PG2_HOST_USER_STR, CFGOPT_PG2_HOST_USER); STRING_EXTERN(CFGOPT_PG3_HOST_USER_STR, CFGOPT_PG3_HOST_USER); STRING_EXTERN(CFGOPT_PG4_HOST_USER_STR, CFGOPT_PG4_HOST_USER); STRING_EXTERN(CFGOPT_PG5_HOST_USER_STR, CFGOPT_PG5_HOST_USER); STRING_EXTERN(CFGOPT_PG6_HOST_USER_STR, CFGOPT_PG6_HOST_USER); STRING_EXTERN(CFGOPT_PG7_HOST_USER_STR, CFGOPT_PG7_HOST_USER); STRING_EXTERN(CFGOPT_PG8_HOST_USER_STR, CFGOPT_PG8_HOST_USER); STRING_EXTERN(CFGOPT_PG1_PATH_STR, CFGOPT_PG1_PATH); STRING_EXTERN(CFGOPT_PG2_PATH_STR, CFGOPT_PG2_PATH); STRING_EXTERN(CFGOPT_PG3_PATH_STR, CFGOPT_PG3_PATH); STRING_EXTERN(CFGOPT_PG4_PATH_STR, CFGOPT_PG4_PATH); STRING_EXTERN(CFGOPT_PG5_PATH_STR, CFGOPT_PG5_PATH); STRING_EXTERN(CFGOPT_PG6_PATH_STR, CFGOPT_PG6_PATH); STRING_EXTERN(CFGOPT_PG7_PATH_STR, CFGOPT_PG7_PATH); STRING_EXTERN(CFGOPT_PG8_PATH_STR, CFGOPT_PG8_PATH); STRING_EXTERN(CFGOPT_PG1_PORT_STR, CFGOPT_PG1_PORT); STRING_EXTERN(CFGOPT_PG2_PORT_STR, CFGOPT_PG2_PORT); STRING_EXTERN(CFGOPT_PG3_PORT_STR, CFGOPT_PG3_PORT); STRING_EXTERN(CFGOPT_PG4_PORT_STR, CFGOPT_PG4_PORT); STRING_EXTERN(CFGOPT_PG5_PORT_STR, CFGOPT_PG5_PORT); STRING_EXTERN(CFGOPT_PG6_PORT_STR, CFGOPT_PG6_PORT); STRING_EXTERN(CFGOPT_PG7_PORT_STR, CFGOPT_PG7_PORT); STRING_EXTERN(CFGOPT_PG8_PORT_STR, CFGOPT_PG8_PORT); STRING_EXTERN(CFGOPT_PG1_SOCKET_PATH_STR, CFGOPT_PG1_SOCKET_PATH); STRING_EXTERN(CFGOPT_PG2_SOCKET_PATH_STR, CFGOPT_PG2_SOCKET_PATH); STRING_EXTERN(CFGOPT_PG3_SOCKET_PATH_STR, CFGOPT_PG3_SOCKET_PATH); STRING_EXTERN(CFGOPT_PG4_SOCKET_PATH_STR, CFGOPT_PG4_SOCKET_PATH); STRING_EXTERN(CFGOPT_PG5_SOCKET_PATH_STR, CFGOPT_PG5_SOCKET_PATH); STRING_EXTERN(CFGOPT_PG6_SOCKET_PATH_STR, CFGOPT_PG6_SOCKET_PATH); STRING_EXTERN(CFGOPT_PG7_SOCKET_PATH_STR, CFGOPT_PG7_SOCKET_PATH); STRING_EXTERN(CFGOPT_PG8_SOCKET_PATH_STR, CFGOPT_PG8_SOCKET_PATH); STRING_EXTERN(CFGOPT_PG1_USER_STR, CFGOPT_PG1_USER); STRING_EXTERN(CFGOPT_PG2_USER_STR, CFGOPT_PG2_USER); STRING_EXTERN(CFGOPT_PG3_USER_STR, CFGOPT_PG3_USER); STRING_EXTERN(CFGOPT_PG4_USER_STR, CFGOPT_PG4_USER); STRING_EXTERN(CFGOPT_PG5_USER_STR, CFGOPT_PG5_USER); STRING_EXTERN(CFGOPT_PG6_USER_STR, CFGOPT_PG6_USER); STRING_EXTERN(CFGOPT_PG7_USER_STR, CFGOPT_PG7_USER); STRING_EXTERN(CFGOPT_PG8_USER_STR, CFGOPT_PG8_USER); STRING_EXTERN(CFGOPT_PROCESS_STR, CFGOPT_PROCESS); STRING_EXTERN(CFGOPT_PROCESS_MAX_STR, CFGOPT_PROCESS_MAX); STRING_EXTERN(CFGOPT_PROTOCOL_TIMEOUT_STR, CFGOPT_PROTOCOL_TIMEOUT); STRING_EXTERN(CFGOPT_RECOVERY_OPTION_STR, CFGOPT_RECOVERY_OPTION); STRING_EXTERN(CFGOPT_RECURSE_STR, CFGOPT_RECURSE); STRING_EXTERN(CFGOPT_REMOTE_TYPE_STR, CFGOPT_REMOTE_TYPE); STRING_EXTERN(CFGOPT_REPO1_CIPHER_PASS_STR, CFGOPT_REPO1_CIPHER_PASS); STRING_EXTERN(CFGOPT_REPO1_CIPHER_TYPE_STR, CFGOPT_REPO1_CIPHER_TYPE); STRING_EXTERN(CFGOPT_REPO1_HARDLINK_STR, CFGOPT_REPO1_HARDLINK); STRING_EXTERN(CFGOPT_REPO1_HOST_STR, CFGOPT_REPO1_HOST); STRING_EXTERN(CFGOPT_REPO1_HOST_CMD_STR, CFGOPT_REPO1_HOST_CMD); STRING_EXTERN(CFGOPT_REPO1_HOST_CONFIG_STR, CFGOPT_REPO1_HOST_CONFIG); STRING_EXTERN(CFGOPT_REPO1_HOST_CONFIG_INCLUDE_PATH_STR, CFGOPT_REPO1_HOST_CONFIG_INCLUDE_PATH); STRING_EXTERN(CFGOPT_REPO1_HOST_CONFIG_PATH_STR, CFGOPT_REPO1_HOST_CONFIG_PATH); STRING_EXTERN(CFGOPT_REPO1_HOST_PORT_STR, CFGOPT_REPO1_HOST_PORT); STRING_EXTERN(CFGOPT_REPO1_HOST_USER_STR, CFGOPT_REPO1_HOST_USER); STRING_EXTERN(CFGOPT_REPO1_PATH_STR, CFGOPT_REPO1_PATH); STRING_EXTERN(CFGOPT_REPO1_RETENTION_ARCHIVE_STR, CFGOPT_REPO1_RETENTION_ARCHIVE); STRING_EXTERN(CFGOPT_REPO1_RETENTION_ARCHIVE_TYPE_STR, CFGOPT_REPO1_RETENTION_ARCHIVE_TYPE); STRING_EXTERN(CFGOPT_REPO1_RETENTION_DIFF_STR, CFGOPT_REPO1_RETENTION_DIFF); STRING_EXTERN(CFGOPT_REPO1_RETENTION_FULL_STR, CFGOPT_REPO1_RETENTION_FULL); STRING_EXTERN(CFGOPT_REPO1_S3_BUCKET_STR, CFGOPT_REPO1_S3_BUCKET); STRING_EXTERN(CFGOPT_REPO1_S3_CA_FILE_STR, CFGOPT_REPO1_S3_CA_FILE); STRING_EXTERN(CFGOPT_REPO1_S3_CA_PATH_STR, CFGOPT_REPO1_S3_CA_PATH); STRING_EXTERN(CFGOPT_REPO1_S3_ENDPOINT_STR, CFGOPT_REPO1_S3_ENDPOINT); STRING_EXTERN(CFGOPT_REPO1_S3_HOST_STR, CFGOPT_REPO1_S3_HOST); STRING_EXTERN(CFGOPT_REPO1_S3_KEY_STR, CFGOPT_REPO1_S3_KEY); STRING_EXTERN(CFGOPT_REPO1_S3_KEY_SECRET_STR, CFGOPT_REPO1_S3_KEY_SECRET); STRING_EXTERN(CFGOPT_REPO1_S3_PORT_STR, CFGOPT_REPO1_S3_PORT); STRING_EXTERN(CFGOPT_REPO1_S3_REGION_STR, CFGOPT_REPO1_S3_REGION); STRING_EXTERN(CFGOPT_REPO1_S3_TOKEN_STR, CFGOPT_REPO1_S3_TOKEN); STRING_EXTERN(CFGOPT_REPO1_S3_URI_STYLE_STR, CFGOPT_REPO1_S3_URI_STYLE); STRING_EXTERN(CFGOPT_REPO1_S3_VERIFY_TLS_STR, CFGOPT_REPO1_S3_VERIFY_TLS); STRING_EXTERN(CFGOPT_REPO1_TYPE_STR, CFGOPT_REPO1_TYPE); STRING_EXTERN(CFGOPT_RESUME_STR, CFGOPT_RESUME); STRING_EXTERN(CFGOPT_SET_STR, CFGOPT_SET); STRING_EXTERN(CFGOPT_SORT_STR, CFGOPT_SORT); STRING_EXTERN(CFGOPT_SPOOL_PATH_STR, CFGOPT_SPOOL_PATH); STRING_EXTERN(CFGOPT_STANZA_STR, CFGOPT_STANZA); STRING_EXTERN(CFGOPT_START_FAST_STR, CFGOPT_START_FAST); STRING_EXTERN(CFGOPT_STOP_AUTO_STR, CFGOPT_STOP_AUTO); STRING_EXTERN(CFGOPT_TABLESPACE_MAP_STR, CFGOPT_TABLESPACE_MAP); STRING_EXTERN(CFGOPT_TABLESPACE_MAP_ALL_STR, CFGOPT_TABLESPACE_MAP_ALL); STRING_EXTERN(CFGOPT_TARGET_STR, CFGOPT_TARGET); STRING_EXTERN(CFGOPT_TARGET_ACTION_STR, CFGOPT_TARGET_ACTION); STRING_EXTERN(CFGOPT_TARGET_EXCLUSIVE_STR, CFGOPT_TARGET_EXCLUSIVE); STRING_EXTERN(CFGOPT_TARGET_TIMELINE_STR, CFGOPT_TARGET_TIMELINE); STRING_EXTERN(CFGOPT_TYPE_STR, CFGOPT_TYPE); /*********************************************************************************************************************************** Option data ***********************************************************************************************************************************/ static ConfigOptionData configOptionData[CFG_OPTION_TOTAL] = CONFIG_OPTION_LIST ( //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_ARCHIVE_ASYNC) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptArchiveAsync) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_ARCHIVE_CHECK) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptArchiveCheck) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_ARCHIVE_COPY) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptArchiveCopy) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_ARCHIVE_GET_QUEUE_MAX) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptArchiveGetQueueMax) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_ARCHIVE_PUSH_QUEUE_MAX) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptArchivePushQueueMax) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_ARCHIVE_TIMEOUT) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptArchiveTimeout) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_BACKUP_STANDBY) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptBackupStandby) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_BUFFER_SIZE) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptBufferSize) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_CHECKSUM_PAGE) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptChecksumPage) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_CMD_SSH) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptCmdSsh) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_COMPRESS) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptCompress) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_COMPRESS_LEVEL) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptCompressLevel) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_COMPRESS_LEVEL_NETWORK) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptCompressLevelNetwork) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_CONFIG) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptConfig) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_CONFIG_INCLUDE_PATH) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptConfigIncludePath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_CONFIG_PATH) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptConfigPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_DB_INCLUDE) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptDbInclude) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_DB_TIMEOUT) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptDbTimeout) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_DELTA) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptDelta) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_EXCLUDE) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptExclude) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_FILTER) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptFilter) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_FORCE) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptForce) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_HOST_ID) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptHostId) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_LINK_ALL) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptLinkAll) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_LINK_MAP) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptLinkMap) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_LOCK_PATH) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptLockPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_LOG_LEVEL_CONSOLE) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptLogLevelConsole) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_LOG_LEVEL_FILE) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptLogLevelFile) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_LOG_LEVEL_STDERR) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptLogLevelStderr) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_LOG_PATH) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptLogPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_LOG_SUBPROCESS) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptLogSubprocess) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_LOG_TIMESTAMP) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptLogTimestamp) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_MANIFEST_SAVE_THRESHOLD) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptManifestSaveThreshold) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_NEUTRAL_UMASK) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptNeutralUmask) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_ONLINE) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptOnline) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_OUTPUT) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptOutput) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG1_HOST) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHost) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG2_HOST) CONFIG_OPTION_INDEX(1) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHost) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG3_HOST) CONFIG_OPTION_INDEX(2) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHost) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG4_HOST) CONFIG_OPTION_INDEX(3) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHost) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG5_HOST) CONFIG_OPTION_INDEX(4) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHost) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG6_HOST) CONFIG_OPTION_INDEX(5) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHost) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG7_HOST) CONFIG_OPTION_INDEX(6) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHost) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG8_HOST) CONFIG_OPTION_INDEX(7) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHost) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG1_HOST_CMD) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostCmd) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG2_HOST_CMD) CONFIG_OPTION_INDEX(1) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostCmd) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG3_HOST_CMD) CONFIG_OPTION_INDEX(2) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostCmd) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG4_HOST_CMD) CONFIG_OPTION_INDEX(3) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostCmd) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG5_HOST_CMD) CONFIG_OPTION_INDEX(4) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostCmd) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG6_HOST_CMD) CONFIG_OPTION_INDEX(5) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostCmd) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG7_HOST_CMD) CONFIG_OPTION_INDEX(6) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostCmd) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG8_HOST_CMD) CONFIG_OPTION_INDEX(7) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostCmd) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG1_HOST_CONFIG) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfig) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG2_HOST_CONFIG) CONFIG_OPTION_INDEX(1) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfig) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG3_HOST_CONFIG) CONFIG_OPTION_INDEX(2) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfig) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG4_HOST_CONFIG) CONFIG_OPTION_INDEX(3) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfig) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG5_HOST_CONFIG) CONFIG_OPTION_INDEX(4) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfig) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG6_HOST_CONFIG) CONFIG_OPTION_INDEX(5) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfig) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG7_HOST_CONFIG) CONFIG_OPTION_INDEX(6) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfig) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG8_HOST_CONFIG) CONFIG_OPTION_INDEX(7) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfig) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG1_HOST_CONFIG_INCLUDE_PATH) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfigIncludePath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG2_HOST_CONFIG_INCLUDE_PATH) CONFIG_OPTION_INDEX(1) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfigIncludePath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG3_HOST_CONFIG_INCLUDE_PATH) CONFIG_OPTION_INDEX(2) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfigIncludePath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG4_HOST_CONFIG_INCLUDE_PATH) CONFIG_OPTION_INDEX(3) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfigIncludePath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG5_HOST_CONFIG_INCLUDE_PATH) CONFIG_OPTION_INDEX(4) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfigIncludePath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG6_HOST_CONFIG_INCLUDE_PATH) CONFIG_OPTION_INDEX(5) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfigIncludePath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG7_HOST_CONFIG_INCLUDE_PATH) CONFIG_OPTION_INDEX(6) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfigIncludePath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG8_HOST_CONFIG_INCLUDE_PATH) CONFIG_OPTION_INDEX(7) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfigIncludePath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG1_HOST_CONFIG_PATH) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfigPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG2_HOST_CONFIG_PATH) CONFIG_OPTION_INDEX(1) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfigPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG3_HOST_CONFIG_PATH) CONFIG_OPTION_INDEX(2) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfigPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG4_HOST_CONFIG_PATH) CONFIG_OPTION_INDEX(3) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfigPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG5_HOST_CONFIG_PATH) CONFIG_OPTION_INDEX(4) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfigPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG6_HOST_CONFIG_PATH) CONFIG_OPTION_INDEX(5) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfigPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG7_HOST_CONFIG_PATH) CONFIG_OPTION_INDEX(6) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfigPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG8_HOST_CONFIG_PATH) CONFIG_OPTION_INDEX(7) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostConfigPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG1_HOST_PORT) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostPort) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG2_HOST_PORT) CONFIG_OPTION_INDEX(1) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostPort) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG3_HOST_PORT) CONFIG_OPTION_INDEX(2) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostPort) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG4_HOST_PORT) CONFIG_OPTION_INDEX(3) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostPort) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG5_HOST_PORT) CONFIG_OPTION_INDEX(4) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostPort) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG6_HOST_PORT) CONFIG_OPTION_INDEX(5) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostPort) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG7_HOST_PORT) CONFIG_OPTION_INDEX(6) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostPort) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG8_HOST_PORT) CONFIG_OPTION_INDEX(7) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostPort) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG1_HOST_USER) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostUser) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG2_HOST_USER) CONFIG_OPTION_INDEX(1) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostUser) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG3_HOST_USER) CONFIG_OPTION_INDEX(2) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostUser) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG4_HOST_USER) CONFIG_OPTION_INDEX(3) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostUser) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG5_HOST_USER) CONFIG_OPTION_INDEX(4) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostUser) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG6_HOST_USER) CONFIG_OPTION_INDEX(5) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostUser) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG7_HOST_USER) CONFIG_OPTION_INDEX(6) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostUser) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG8_HOST_USER) CONFIG_OPTION_INDEX(7) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgHostUser) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG1_PATH) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG2_PATH) CONFIG_OPTION_INDEX(1) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG3_PATH) CONFIG_OPTION_INDEX(2) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG4_PATH) CONFIG_OPTION_INDEX(3) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG5_PATH) CONFIG_OPTION_INDEX(4) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG6_PATH) CONFIG_OPTION_INDEX(5) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG7_PATH) CONFIG_OPTION_INDEX(6) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG8_PATH) CONFIG_OPTION_INDEX(7) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG1_PORT) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgPort) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG2_PORT) CONFIG_OPTION_INDEX(1) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgPort) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG3_PORT) CONFIG_OPTION_INDEX(2) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgPort) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG4_PORT) CONFIG_OPTION_INDEX(3) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgPort) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG5_PORT) CONFIG_OPTION_INDEX(4) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgPort) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG6_PORT) CONFIG_OPTION_INDEX(5) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgPort) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG7_PORT) CONFIG_OPTION_INDEX(6) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgPort) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG8_PORT) CONFIG_OPTION_INDEX(7) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgPort) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG1_SOCKET_PATH) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgSocketPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG2_SOCKET_PATH) CONFIG_OPTION_INDEX(1) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgSocketPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG3_SOCKET_PATH) CONFIG_OPTION_INDEX(2) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgSocketPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG4_SOCKET_PATH) CONFIG_OPTION_INDEX(3) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgSocketPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG5_SOCKET_PATH) CONFIG_OPTION_INDEX(4) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgSocketPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG6_SOCKET_PATH) CONFIG_OPTION_INDEX(5) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgSocketPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG7_SOCKET_PATH) CONFIG_OPTION_INDEX(6) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgSocketPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG8_SOCKET_PATH) CONFIG_OPTION_INDEX(7) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgSocketPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG1_USER) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgUser) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG2_USER) CONFIG_OPTION_INDEX(1) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgUser) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG3_USER) CONFIG_OPTION_INDEX(2) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgUser) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG4_USER) CONFIG_OPTION_INDEX(3) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgUser) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG5_USER) CONFIG_OPTION_INDEX(4) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgUser) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG6_USER) CONFIG_OPTION_INDEX(5) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgUser) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG7_USER) CONFIG_OPTION_INDEX(6) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgUser) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PG8_USER) CONFIG_OPTION_INDEX(7) CONFIG_OPTION_DEFINE_ID(cfgDefOptPgUser) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PROCESS) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptProcess) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PROCESS_MAX) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptProcessMax) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_PROTOCOL_TIMEOUT) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptProtocolTimeout) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_RECOVERY_OPTION) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRecoveryOption) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_RECURSE) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRecurse) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REMOTE_TYPE) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRemoteType) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_CIPHER_PASS) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoCipherPass) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_CIPHER_TYPE) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoCipherType) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_HARDLINK) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoHardlink) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_HOST) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoHost) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_HOST_CMD) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoHostCmd) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_HOST_CONFIG) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoHostConfig) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_HOST_CONFIG_INCLUDE_PATH) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoHostConfigIncludePath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_HOST_CONFIG_PATH) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoHostConfigPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_HOST_PORT) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoHostPort) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_HOST_USER) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoHostUser) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_PATH) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_RETENTION_ARCHIVE) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoRetentionArchive) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_RETENTION_ARCHIVE_TYPE) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoRetentionArchiveType) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_RETENTION_DIFF) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoRetentionDiff) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_RETENTION_FULL) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoRetentionFull) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_S3_BUCKET) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoS3Bucket) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_S3_CA_FILE) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoS3CaFile) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_S3_CA_PATH) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoS3CaPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_S3_ENDPOINT) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoS3Endpoint) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_S3_HOST) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoS3Host) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_S3_KEY) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoS3Key) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_S3_KEY_SECRET) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoS3KeySecret) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_S3_PORT) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoS3Port) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_S3_REGION) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoS3Region) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_S3_TOKEN) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoS3Token) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_S3_URI_STYLE) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoS3UriStyle) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_S3_VERIFY_TLS) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoS3VerifyTls) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_REPO1_TYPE) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoType) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_RESUME) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptResume) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_SET) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptSet) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_SORT) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptSort) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_SPOOL_PATH) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptSpoolPath) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_STANZA) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptStanza) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_START_FAST) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptStartFast) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_STOP_AUTO) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptStopAuto) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_TABLESPACE_MAP) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptTablespaceMap) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_TABLESPACE_MAP_ALL) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptTablespaceMapAll) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_TARGET) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptTarget) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_TARGET_ACTION) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptTargetAction) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_TARGET_EXCLUSIVE) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptTargetExclusive) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_TARGET_TIMELINE) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptTargetTimeline) ) //------------------------------------------------------------------------------------------------------------------------------ CONFIG_OPTION ( CONFIG_OPTION_NAME(CFGOPT_TYPE) CONFIG_OPTION_INDEX(0) CONFIG_OPTION_DEFINE_ID(cfgDefOptType) ) ) pgbackrest-release-2.24/src/config/config.auto.h000066400000000000000000000731701362531507100216400ustar00rootroot00000000000000/*********************************************************************************************************************************** Command and Option Configuration Automatically generated by Build.pm -- do not modify directly. ***********************************************************************************************************************************/ #ifndef CONFIG_CONFIG_AUTO_H #define CONFIG_CONFIG_AUTO_H /*********************************************************************************************************************************** Command constants ***********************************************************************************************************************************/ #define CFGCMD_ARCHIVE_GET "archive-get" STRING_DECLARE(CFGCMD_ARCHIVE_GET_STR); #define CFGCMD_ARCHIVE_PUSH "archive-push" STRING_DECLARE(CFGCMD_ARCHIVE_PUSH_STR); #define CFGCMD_BACKUP "backup" STRING_DECLARE(CFGCMD_BACKUP_STR); #define CFGCMD_CHECK "check" STRING_DECLARE(CFGCMD_CHECK_STR); #define CFGCMD_EXPIRE "expire" STRING_DECLARE(CFGCMD_EXPIRE_STR); #define CFGCMD_HELP "help" STRING_DECLARE(CFGCMD_HELP_STR); #define CFGCMD_INFO "info" STRING_DECLARE(CFGCMD_INFO_STR); #define CFGCMD_LS "ls" STRING_DECLARE(CFGCMD_LS_STR); #define CFGCMD_RESTORE "restore" STRING_DECLARE(CFGCMD_RESTORE_STR); #define CFGCMD_STANZA_CREATE "stanza-create" STRING_DECLARE(CFGCMD_STANZA_CREATE_STR); #define CFGCMD_STANZA_DELETE "stanza-delete" STRING_DECLARE(CFGCMD_STANZA_DELETE_STR); #define CFGCMD_STANZA_UPGRADE "stanza-upgrade" STRING_DECLARE(CFGCMD_STANZA_UPGRADE_STR); #define CFGCMD_START "start" STRING_DECLARE(CFGCMD_START_STR); #define CFGCMD_STOP "stop" STRING_DECLARE(CFGCMD_STOP_STR); #define CFGCMD_VERSION "version" STRING_DECLARE(CFGCMD_VERSION_STR); #define CFG_COMMAND_TOTAL 16 /*********************************************************************************************************************************** Option constants ***********************************************************************************************************************************/ #define CFGOPT_ARCHIVE_ASYNC "archive-async" STRING_DECLARE(CFGOPT_ARCHIVE_ASYNC_STR); #define CFGOPT_ARCHIVE_CHECK "archive-check" STRING_DECLARE(CFGOPT_ARCHIVE_CHECK_STR); #define CFGOPT_ARCHIVE_COPY "archive-copy" STRING_DECLARE(CFGOPT_ARCHIVE_COPY_STR); #define CFGOPT_ARCHIVE_GET_QUEUE_MAX "archive-get-queue-max" STRING_DECLARE(CFGOPT_ARCHIVE_GET_QUEUE_MAX_STR); #define CFGOPT_ARCHIVE_PUSH_QUEUE_MAX "archive-push-queue-max" STRING_DECLARE(CFGOPT_ARCHIVE_PUSH_QUEUE_MAX_STR); #define CFGOPT_ARCHIVE_TIMEOUT "archive-timeout" STRING_DECLARE(CFGOPT_ARCHIVE_TIMEOUT_STR); #define CFGOPT_BACKUP_STANDBY "backup-standby" STRING_DECLARE(CFGOPT_BACKUP_STANDBY_STR); #define CFGOPT_BUFFER_SIZE "buffer-size" STRING_DECLARE(CFGOPT_BUFFER_SIZE_STR); #define CFGOPT_CHECKSUM_PAGE "checksum-page" STRING_DECLARE(CFGOPT_CHECKSUM_PAGE_STR); #define CFGOPT_CMD_SSH "cmd-ssh" STRING_DECLARE(CFGOPT_CMD_SSH_STR); #define CFGOPT_COMPRESS "compress" STRING_DECLARE(CFGOPT_COMPRESS_STR); #define CFGOPT_COMPRESS_LEVEL "compress-level" STRING_DECLARE(CFGOPT_COMPRESS_LEVEL_STR); #define CFGOPT_COMPRESS_LEVEL_NETWORK "compress-level-network" STRING_DECLARE(CFGOPT_COMPRESS_LEVEL_NETWORK_STR); #define CFGOPT_CONFIG "config" STRING_DECLARE(CFGOPT_CONFIG_STR); #define CFGOPT_CONFIG_INCLUDE_PATH "config-include-path" STRING_DECLARE(CFGOPT_CONFIG_INCLUDE_PATH_STR); #define CFGOPT_CONFIG_PATH "config-path" STRING_DECLARE(CFGOPT_CONFIG_PATH_STR); #define CFGOPT_DB_INCLUDE "db-include" STRING_DECLARE(CFGOPT_DB_INCLUDE_STR); #define CFGOPT_DB_TIMEOUT "db-timeout" STRING_DECLARE(CFGOPT_DB_TIMEOUT_STR); #define CFGOPT_DELTA "delta" STRING_DECLARE(CFGOPT_DELTA_STR); #define CFGOPT_EXCLUDE "exclude" STRING_DECLARE(CFGOPT_EXCLUDE_STR); #define CFGOPT_FILTER "filter" STRING_DECLARE(CFGOPT_FILTER_STR); #define CFGOPT_FORCE "force" STRING_DECLARE(CFGOPT_FORCE_STR); #define CFGOPT_HOST_ID "host-id" STRING_DECLARE(CFGOPT_HOST_ID_STR); #define CFGOPT_LINK_ALL "link-all" STRING_DECLARE(CFGOPT_LINK_ALL_STR); #define CFGOPT_LINK_MAP "link-map" STRING_DECLARE(CFGOPT_LINK_MAP_STR); #define CFGOPT_LOCK_PATH "lock-path" STRING_DECLARE(CFGOPT_LOCK_PATH_STR); #define CFGOPT_LOG_LEVEL_CONSOLE "log-level-console" STRING_DECLARE(CFGOPT_LOG_LEVEL_CONSOLE_STR); #define CFGOPT_LOG_LEVEL_FILE "log-level-file" STRING_DECLARE(CFGOPT_LOG_LEVEL_FILE_STR); #define CFGOPT_LOG_LEVEL_STDERR "log-level-stderr" STRING_DECLARE(CFGOPT_LOG_LEVEL_STDERR_STR); #define CFGOPT_LOG_PATH "log-path" STRING_DECLARE(CFGOPT_LOG_PATH_STR); #define CFGOPT_LOG_SUBPROCESS "log-subprocess" STRING_DECLARE(CFGOPT_LOG_SUBPROCESS_STR); #define CFGOPT_LOG_TIMESTAMP "log-timestamp" STRING_DECLARE(CFGOPT_LOG_TIMESTAMP_STR); #define CFGOPT_MANIFEST_SAVE_THRESHOLD "manifest-save-threshold" STRING_DECLARE(CFGOPT_MANIFEST_SAVE_THRESHOLD_STR); #define CFGOPT_NEUTRAL_UMASK "neutral-umask" STRING_DECLARE(CFGOPT_NEUTRAL_UMASK_STR); #define CFGOPT_ONLINE "online" STRING_DECLARE(CFGOPT_ONLINE_STR); #define CFGOPT_OUTPUT "output" STRING_DECLARE(CFGOPT_OUTPUT_STR); #define CFGOPT_PG1_HOST "pg1-host" STRING_DECLARE(CFGOPT_PG1_HOST_STR); #define CFGOPT_PG1_HOST_CMD "pg1-host-cmd" STRING_DECLARE(CFGOPT_PG1_HOST_CMD_STR); #define CFGOPT_PG1_HOST_CONFIG "pg1-host-config" STRING_DECLARE(CFGOPT_PG1_HOST_CONFIG_STR); #define CFGOPT_PG1_HOST_CONFIG_INCLUDE_PATH "pg1-host-config-include-path" STRING_DECLARE(CFGOPT_PG1_HOST_CONFIG_INCLUDE_PATH_STR); #define CFGOPT_PG1_HOST_CONFIG_PATH "pg1-host-config-path" STRING_DECLARE(CFGOPT_PG1_HOST_CONFIG_PATH_STR); #define CFGOPT_PG1_HOST_PORT "pg1-host-port" STRING_DECLARE(CFGOPT_PG1_HOST_PORT_STR); #define CFGOPT_PG1_HOST_USER "pg1-host-user" STRING_DECLARE(CFGOPT_PG1_HOST_USER_STR); #define CFGOPT_PG1_PATH "pg1-path" STRING_DECLARE(CFGOPT_PG1_PATH_STR); #define CFGOPT_PG1_PORT "pg1-port" STRING_DECLARE(CFGOPT_PG1_PORT_STR); #define CFGOPT_PG1_SOCKET_PATH "pg1-socket-path" STRING_DECLARE(CFGOPT_PG1_SOCKET_PATH_STR); #define CFGOPT_PG1_USER "pg1-user" STRING_DECLARE(CFGOPT_PG1_USER_STR); #define CFGOPT_PG2_HOST "pg2-host" STRING_DECLARE(CFGOPT_PG2_HOST_STR); #define CFGOPT_PG2_HOST_CMD "pg2-host-cmd" STRING_DECLARE(CFGOPT_PG2_HOST_CMD_STR); #define CFGOPT_PG2_HOST_CONFIG "pg2-host-config" STRING_DECLARE(CFGOPT_PG2_HOST_CONFIG_STR); #define CFGOPT_PG2_HOST_CONFIG_INCLUDE_PATH "pg2-host-config-include-path" STRING_DECLARE(CFGOPT_PG2_HOST_CONFIG_INCLUDE_PATH_STR); #define CFGOPT_PG2_HOST_CONFIG_PATH "pg2-host-config-path" STRING_DECLARE(CFGOPT_PG2_HOST_CONFIG_PATH_STR); #define CFGOPT_PG2_HOST_PORT "pg2-host-port" STRING_DECLARE(CFGOPT_PG2_HOST_PORT_STR); #define CFGOPT_PG2_HOST_USER "pg2-host-user" STRING_DECLARE(CFGOPT_PG2_HOST_USER_STR); #define CFGOPT_PG2_PATH "pg2-path" STRING_DECLARE(CFGOPT_PG2_PATH_STR); #define CFGOPT_PG2_PORT "pg2-port" STRING_DECLARE(CFGOPT_PG2_PORT_STR); #define CFGOPT_PG2_SOCKET_PATH "pg2-socket-path" STRING_DECLARE(CFGOPT_PG2_SOCKET_PATH_STR); #define CFGOPT_PG2_USER "pg2-user" STRING_DECLARE(CFGOPT_PG2_USER_STR); #define CFGOPT_PG3_HOST "pg3-host" STRING_DECLARE(CFGOPT_PG3_HOST_STR); #define CFGOPT_PG3_HOST_CMD "pg3-host-cmd" STRING_DECLARE(CFGOPT_PG3_HOST_CMD_STR); #define CFGOPT_PG3_HOST_CONFIG "pg3-host-config" STRING_DECLARE(CFGOPT_PG3_HOST_CONFIG_STR); #define CFGOPT_PG3_HOST_CONFIG_INCLUDE_PATH "pg3-host-config-include-path" STRING_DECLARE(CFGOPT_PG3_HOST_CONFIG_INCLUDE_PATH_STR); #define CFGOPT_PG3_HOST_CONFIG_PATH "pg3-host-config-path" STRING_DECLARE(CFGOPT_PG3_HOST_CONFIG_PATH_STR); #define CFGOPT_PG3_HOST_PORT "pg3-host-port" STRING_DECLARE(CFGOPT_PG3_HOST_PORT_STR); #define CFGOPT_PG3_HOST_USER "pg3-host-user" STRING_DECLARE(CFGOPT_PG3_HOST_USER_STR); #define CFGOPT_PG3_PATH "pg3-path" STRING_DECLARE(CFGOPT_PG3_PATH_STR); #define CFGOPT_PG3_PORT "pg3-port" STRING_DECLARE(CFGOPT_PG3_PORT_STR); #define CFGOPT_PG3_SOCKET_PATH "pg3-socket-path" STRING_DECLARE(CFGOPT_PG3_SOCKET_PATH_STR); #define CFGOPT_PG3_USER "pg3-user" STRING_DECLARE(CFGOPT_PG3_USER_STR); #define CFGOPT_PG4_HOST "pg4-host" STRING_DECLARE(CFGOPT_PG4_HOST_STR); #define CFGOPT_PG4_HOST_CMD "pg4-host-cmd" STRING_DECLARE(CFGOPT_PG4_HOST_CMD_STR); #define CFGOPT_PG4_HOST_CONFIG "pg4-host-config" STRING_DECLARE(CFGOPT_PG4_HOST_CONFIG_STR); #define CFGOPT_PG4_HOST_CONFIG_INCLUDE_PATH "pg4-host-config-include-path" STRING_DECLARE(CFGOPT_PG4_HOST_CONFIG_INCLUDE_PATH_STR); #define CFGOPT_PG4_HOST_CONFIG_PATH "pg4-host-config-path" STRING_DECLARE(CFGOPT_PG4_HOST_CONFIG_PATH_STR); #define CFGOPT_PG4_HOST_PORT "pg4-host-port" STRING_DECLARE(CFGOPT_PG4_HOST_PORT_STR); #define CFGOPT_PG4_HOST_USER "pg4-host-user" STRING_DECLARE(CFGOPT_PG4_HOST_USER_STR); #define CFGOPT_PG4_PATH "pg4-path" STRING_DECLARE(CFGOPT_PG4_PATH_STR); #define CFGOPT_PG4_PORT "pg4-port" STRING_DECLARE(CFGOPT_PG4_PORT_STR); #define CFGOPT_PG4_SOCKET_PATH "pg4-socket-path" STRING_DECLARE(CFGOPT_PG4_SOCKET_PATH_STR); #define CFGOPT_PG4_USER "pg4-user" STRING_DECLARE(CFGOPT_PG4_USER_STR); #define CFGOPT_PG5_HOST "pg5-host" STRING_DECLARE(CFGOPT_PG5_HOST_STR); #define CFGOPT_PG5_HOST_CMD "pg5-host-cmd" STRING_DECLARE(CFGOPT_PG5_HOST_CMD_STR); #define CFGOPT_PG5_HOST_CONFIG "pg5-host-config" STRING_DECLARE(CFGOPT_PG5_HOST_CONFIG_STR); #define CFGOPT_PG5_HOST_CONFIG_INCLUDE_PATH "pg5-host-config-include-path" STRING_DECLARE(CFGOPT_PG5_HOST_CONFIG_INCLUDE_PATH_STR); #define CFGOPT_PG5_HOST_CONFIG_PATH "pg5-host-config-path" STRING_DECLARE(CFGOPT_PG5_HOST_CONFIG_PATH_STR); #define CFGOPT_PG5_HOST_PORT "pg5-host-port" STRING_DECLARE(CFGOPT_PG5_HOST_PORT_STR); #define CFGOPT_PG5_HOST_USER "pg5-host-user" STRING_DECLARE(CFGOPT_PG5_HOST_USER_STR); #define CFGOPT_PG5_PATH "pg5-path" STRING_DECLARE(CFGOPT_PG5_PATH_STR); #define CFGOPT_PG5_PORT "pg5-port" STRING_DECLARE(CFGOPT_PG5_PORT_STR); #define CFGOPT_PG5_SOCKET_PATH "pg5-socket-path" STRING_DECLARE(CFGOPT_PG5_SOCKET_PATH_STR); #define CFGOPT_PG5_USER "pg5-user" STRING_DECLARE(CFGOPT_PG5_USER_STR); #define CFGOPT_PG6_HOST "pg6-host" STRING_DECLARE(CFGOPT_PG6_HOST_STR); #define CFGOPT_PG6_HOST_CMD "pg6-host-cmd" STRING_DECLARE(CFGOPT_PG6_HOST_CMD_STR); #define CFGOPT_PG6_HOST_CONFIG "pg6-host-config" STRING_DECLARE(CFGOPT_PG6_HOST_CONFIG_STR); #define CFGOPT_PG6_HOST_CONFIG_INCLUDE_PATH "pg6-host-config-include-path" STRING_DECLARE(CFGOPT_PG6_HOST_CONFIG_INCLUDE_PATH_STR); #define CFGOPT_PG6_HOST_CONFIG_PATH "pg6-host-config-path" STRING_DECLARE(CFGOPT_PG6_HOST_CONFIG_PATH_STR); #define CFGOPT_PG6_HOST_PORT "pg6-host-port" STRING_DECLARE(CFGOPT_PG6_HOST_PORT_STR); #define CFGOPT_PG6_HOST_USER "pg6-host-user" STRING_DECLARE(CFGOPT_PG6_HOST_USER_STR); #define CFGOPT_PG6_PATH "pg6-path" STRING_DECLARE(CFGOPT_PG6_PATH_STR); #define CFGOPT_PG6_PORT "pg6-port" STRING_DECLARE(CFGOPT_PG6_PORT_STR); #define CFGOPT_PG6_SOCKET_PATH "pg6-socket-path" STRING_DECLARE(CFGOPT_PG6_SOCKET_PATH_STR); #define CFGOPT_PG6_USER "pg6-user" STRING_DECLARE(CFGOPT_PG6_USER_STR); #define CFGOPT_PG7_HOST "pg7-host" STRING_DECLARE(CFGOPT_PG7_HOST_STR); #define CFGOPT_PG7_HOST_CMD "pg7-host-cmd" STRING_DECLARE(CFGOPT_PG7_HOST_CMD_STR); #define CFGOPT_PG7_HOST_CONFIG "pg7-host-config" STRING_DECLARE(CFGOPT_PG7_HOST_CONFIG_STR); #define CFGOPT_PG7_HOST_CONFIG_INCLUDE_PATH "pg7-host-config-include-path" STRING_DECLARE(CFGOPT_PG7_HOST_CONFIG_INCLUDE_PATH_STR); #define CFGOPT_PG7_HOST_CONFIG_PATH "pg7-host-config-path" STRING_DECLARE(CFGOPT_PG7_HOST_CONFIG_PATH_STR); #define CFGOPT_PG7_HOST_PORT "pg7-host-port" STRING_DECLARE(CFGOPT_PG7_HOST_PORT_STR); #define CFGOPT_PG7_HOST_USER "pg7-host-user" STRING_DECLARE(CFGOPT_PG7_HOST_USER_STR); #define CFGOPT_PG7_PATH "pg7-path" STRING_DECLARE(CFGOPT_PG7_PATH_STR); #define CFGOPT_PG7_PORT "pg7-port" STRING_DECLARE(CFGOPT_PG7_PORT_STR); #define CFGOPT_PG7_SOCKET_PATH "pg7-socket-path" STRING_DECLARE(CFGOPT_PG7_SOCKET_PATH_STR); #define CFGOPT_PG7_USER "pg7-user" STRING_DECLARE(CFGOPT_PG7_USER_STR); #define CFGOPT_PG8_HOST "pg8-host" STRING_DECLARE(CFGOPT_PG8_HOST_STR); #define CFGOPT_PG8_HOST_CMD "pg8-host-cmd" STRING_DECLARE(CFGOPT_PG8_HOST_CMD_STR); #define CFGOPT_PG8_HOST_CONFIG "pg8-host-config" STRING_DECLARE(CFGOPT_PG8_HOST_CONFIG_STR); #define CFGOPT_PG8_HOST_CONFIG_INCLUDE_PATH "pg8-host-config-include-path" STRING_DECLARE(CFGOPT_PG8_HOST_CONFIG_INCLUDE_PATH_STR); #define CFGOPT_PG8_HOST_CONFIG_PATH "pg8-host-config-path" STRING_DECLARE(CFGOPT_PG8_HOST_CONFIG_PATH_STR); #define CFGOPT_PG8_HOST_PORT "pg8-host-port" STRING_DECLARE(CFGOPT_PG8_HOST_PORT_STR); #define CFGOPT_PG8_HOST_USER "pg8-host-user" STRING_DECLARE(CFGOPT_PG8_HOST_USER_STR); #define CFGOPT_PG8_PATH "pg8-path" STRING_DECLARE(CFGOPT_PG8_PATH_STR); #define CFGOPT_PG8_PORT "pg8-port" STRING_DECLARE(CFGOPT_PG8_PORT_STR); #define CFGOPT_PG8_SOCKET_PATH "pg8-socket-path" STRING_DECLARE(CFGOPT_PG8_SOCKET_PATH_STR); #define CFGOPT_PG8_USER "pg8-user" STRING_DECLARE(CFGOPT_PG8_USER_STR); #define CFGOPT_PROCESS "process" STRING_DECLARE(CFGOPT_PROCESS_STR); #define CFGOPT_PROCESS_MAX "process-max" STRING_DECLARE(CFGOPT_PROCESS_MAX_STR); #define CFGOPT_PROTOCOL_TIMEOUT "protocol-timeout" STRING_DECLARE(CFGOPT_PROTOCOL_TIMEOUT_STR); #define CFGOPT_RECOVERY_OPTION "recovery-option" STRING_DECLARE(CFGOPT_RECOVERY_OPTION_STR); #define CFGOPT_RECURSE "recurse" STRING_DECLARE(CFGOPT_RECURSE_STR); #define CFGOPT_REMOTE_TYPE "remote-type" STRING_DECLARE(CFGOPT_REMOTE_TYPE_STR); #define CFGOPT_REPO1_CIPHER_PASS "repo1-cipher-pass" STRING_DECLARE(CFGOPT_REPO1_CIPHER_PASS_STR); #define CFGOPT_REPO1_CIPHER_TYPE "repo1-cipher-type" STRING_DECLARE(CFGOPT_REPO1_CIPHER_TYPE_STR); #define CFGOPT_REPO1_HARDLINK "repo1-hardlink" STRING_DECLARE(CFGOPT_REPO1_HARDLINK_STR); #define CFGOPT_REPO1_HOST "repo1-host" STRING_DECLARE(CFGOPT_REPO1_HOST_STR); #define CFGOPT_REPO1_HOST_CMD "repo1-host-cmd" STRING_DECLARE(CFGOPT_REPO1_HOST_CMD_STR); #define CFGOPT_REPO1_HOST_CONFIG "repo1-host-config" STRING_DECLARE(CFGOPT_REPO1_HOST_CONFIG_STR); #define CFGOPT_REPO1_HOST_CONFIG_INCLUDE_PATH "repo1-host-config-include-path" STRING_DECLARE(CFGOPT_REPO1_HOST_CONFIG_INCLUDE_PATH_STR); #define CFGOPT_REPO1_HOST_CONFIG_PATH "repo1-host-config-path" STRING_DECLARE(CFGOPT_REPO1_HOST_CONFIG_PATH_STR); #define CFGOPT_REPO1_HOST_PORT "repo1-host-port" STRING_DECLARE(CFGOPT_REPO1_HOST_PORT_STR); #define CFGOPT_REPO1_HOST_USER "repo1-host-user" STRING_DECLARE(CFGOPT_REPO1_HOST_USER_STR); #define CFGOPT_REPO1_PATH "repo1-path" STRING_DECLARE(CFGOPT_REPO1_PATH_STR); #define CFGOPT_REPO1_RETENTION_ARCHIVE "repo1-retention-archive" STRING_DECLARE(CFGOPT_REPO1_RETENTION_ARCHIVE_STR); #define CFGOPT_REPO1_RETENTION_ARCHIVE_TYPE "repo1-retention-archive-type" STRING_DECLARE(CFGOPT_REPO1_RETENTION_ARCHIVE_TYPE_STR); #define CFGOPT_REPO1_RETENTION_DIFF "repo1-retention-diff" STRING_DECLARE(CFGOPT_REPO1_RETENTION_DIFF_STR); #define CFGOPT_REPO1_RETENTION_FULL "repo1-retention-full" STRING_DECLARE(CFGOPT_REPO1_RETENTION_FULL_STR); #define CFGOPT_REPO1_S3_BUCKET "repo1-s3-bucket" STRING_DECLARE(CFGOPT_REPO1_S3_BUCKET_STR); #define CFGOPT_REPO1_S3_CA_FILE "repo1-s3-ca-file" STRING_DECLARE(CFGOPT_REPO1_S3_CA_FILE_STR); #define CFGOPT_REPO1_S3_CA_PATH "repo1-s3-ca-path" STRING_DECLARE(CFGOPT_REPO1_S3_CA_PATH_STR); #define CFGOPT_REPO1_S3_ENDPOINT "repo1-s3-endpoint" STRING_DECLARE(CFGOPT_REPO1_S3_ENDPOINT_STR); #define CFGOPT_REPO1_S3_HOST "repo1-s3-host" STRING_DECLARE(CFGOPT_REPO1_S3_HOST_STR); #define CFGOPT_REPO1_S3_KEY "repo1-s3-key" STRING_DECLARE(CFGOPT_REPO1_S3_KEY_STR); #define CFGOPT_REPO1_S3_KEY_SECRET "repo1-s3-key-secret" STRING_DECLARE(CFGOPT_REPO1_S3_KEY_SECRET_STR); #define CFGOPT_REPO1_S3_PORT "repo1-s3-port" STRING_DECLARE(CFGOPT_REPO1_S3_PORT_STR); #define CFGOPT_REPO1_S3_REGION "repo1-s3-region" STRING_DECLARE(CFGOPT_REPO1_S3_REGION_STR); #define CFGOPT_REPO1_S3_TOKEN "repo1-s3-token" STRING_DECLARE(CFGOPT_REPO1_S3_TOKEN_STR); #define CFGOPT_REPO1_S3_URI_STYLE "repo1-s3-uri-style" STRING_DECLARE(CFGOPT_REPO1_S3_URI_STYLE_STR); #define CFGOPT_REPO1_S3_VERIFY_TLS "repo1-s3-verify-tls" STRING_DECLARE(CFGOPT_REPO1_S3_VERIFY_TLS_STR); #define CFGOPT_REPO1_TYPE "repo1-type" STRING_DECLARE(CFGOPT_REPO1_TYPE_STR); #define CFGOPT_RESUME "resume" STRING_DECLARE(CFGOPT_RESUME_STR); #define CFGOPT_SET "set" STRING_DECLARE(CFGOPT_SET_STR); #define CFGOPT_SORT "sort" STRING_DECLARE(CFGOPT_SORT_STR); #define CFGOPT_SPOOL_PATH "spool-path" STRING_DECLARE(CFGOPT_SPOOL_PATH_STR); #define CFGOPT_STANZA "stanza" STRING_DECLARE(CFGOPT_STANZA_STR); #define CFGOPT_START_FAST "start-fast" STRING_DECLARE(CFGOPT_START_FAST_STR); #define CFGOPT_STOP_AUTO "stop-auto" STRING_DECLARE(CFGOPT_STOP_AUTO_STR); #define CFGOPT_TABLESPACE_MAP "tablespace-map" STRING_DECLARE(CFGOPT_TABLESPACE_MAP_STR); #define CFGOPT_TABLESPACE_MAP_ALL "tablespace-map-all" STRING_DECLARE(CFGOPT_TABLESPACE_MAP_ALL_STR); #define CFGOPT_TARGET "target" STRING_DECLARE(CFGOPT_TARGET_STR); #define CFGOPT_TARGET_ACTION "target-action" STRING_DECLARE(CFGOPT_TARGET_ACTION_STR); #define CFGOPT_TARGET_EXCLUSIVE "target-exclusive" STRING_DECLARE(CFGOPT_TARGET_EXCLUSIVE_STR); #define CFGOPT_TARGET_TIMELINE "target-timeline" STRING_DECLARE(CFGOPT_TARGET_TIMELINE_STR); #define CFGOPT_TYPE "type" STRING_DECLARE(CFGOPT_TYPE_STR); #define CFG_OPTION_TOTAL 172 /*********************************************************************************************************************************** Command enum ***********************************************************************************************************************************/ typedef enum { cfgCmdArchiveGet, cfgCmdArchivePush, cfgCmdBackup, cfgCmdCheck, cfgCmdExpire, cfgCmdHelp, cfgCmdInfo, cfgCmdLs, cfgCmdRestore, cfgCmdStanzaCreate, cfgCmdStanzaDelete, cfgCmdStanzaUpgrade, cfgCmdStart, cfgCmdStop, cfgCmdVersion, cfgCmdNone, } ConfigCommand; /*********************************************************************************************************************************** Option enum ***********************************************************************************************************************************/ typedef enum { cfgOptArchiveAsync, cfgOptArchiveCheck, cfgOptArchiveCopy, cfgOptArchiveGetQueueMax, cfgOptArchivePushQueueMax, cfgOptArchiveTimeout, cfgOptBackupStandby, cfgOptBufferSize, cfgOptChecksumPage, cfgOptCmdSsh, cfgOptCompress, cfgOptCompressLevel, cfgOptCompressLevelNetwork, cfgOptConfig, cfgOptConfigIncludePath, cfgOptConfigPath, cfgOptDbInclude, cfgOptDbTimeout, cfgOptDelta, cfgOptExclude, cfgOptFilter, cfgOptForce, cfgOptHostId, cfgOptLinkAll, cfgOptLinkMap, cfgOptLockPath, cfgOptLogLevelConsole, cfgOptLogLevelFile, cfgOptLogLevelStderr, cfgOptLogPath, cfgOptLogSubprocess, cfgOptLogTimestamp, cfgOptManifestSaveThreshold, cfgOptNeutralUmask, cfgOptOnline, cfgOptOutput, cfgOptPgHost, cfgOptPgHost2, cfgOptPgHost3, cfgOptPgHost4, cfgOptPgHost5, cfgOptPgHost6, cfgOptPgHost7, cfgOptPgHost8, cfgOptPgHostCmd, cfgOptPgHostCmd2, cfgOptPgHostCmd3, cfgOptPgHostCmd4, cfgOptPgHostCmd5, cfgOptPgHostCmd6, cfgOptPgHostCmd7, cfgOptPgHostCmd8, cfgOptPgHostConfig, cfgOptPgHostConfig2, cfgOptPgHostConfig3, cfgOptPgHostConfig4, cfgOptPgHostConfig5, cfgOptPgHostConfig6, cfgOptPgHostConfig7, cfgOptPgHostConfig8, cfgOptPgHostConfigIncludePath, cfgOptPgHostConfigIncludePath2, cfgOptPgHostConfigIncludePath3, cfgOptPgHostConfigIncludePath4, cfgOptPgHostConfigIncludePath5, cfgOptPgHostConfigIncludePath6, cfgOptPgHostConfigIncludePath7, cfgOptPgHostConfigIncludePath8, cfgOptPgHostConfigPath, cfgOptPgHostConfigPath2, cfgOptPgHostConfigPath3, cfgOptPgHostConfigPath4, cfgOptPgHostConfigPath5, cfgOptPgHostConfigPath6, cfgOptPgHostConfigPath7, cfgOptPgHostConfigPath8, cfgOptPgHostPort, cfgOptPgHostPort2, cfgOptPgHostPort3, cfgOptPgHostPort4, cfgOptPgHostPort5, cfgOptPgHostPort6, cfgOptPgHostPort7, cfgOptPgHostPort8, cfgOptPgHostUser, cfgOptPgHostUser2, cfgOptPgHostUser3, cfgOptPgHostUser4, cfgOptPgHostUser5, cfgOptPgHostUser6, cfgOptPgHostUser7, cfgOptPgHostUser8, cfgOptPgPath, cfgOptPgPath2, cfgOptPgPath3, cfgOptPgPath4, cfgOptPgPath5, cfgOptPgPath6, cfgOptPgPath7, cfgOptPgPath8, cfgOptPgPort, cfgOptPgPort2, cfgOptPgPort3, cfgOptPgPort4, cfgOptPgPort5, cfgOptPgPort6, cfgOptPgPort7, cfgOptPgPort8, cfgOptPgSocketPath, cfgOptPgSocketPath2, cfgOptPgSocketPath3, cfgOptPgSocketPath4, cfgOptPgSocketPath5, cfgOptPgSocketPath6, cfgOptPgSocketPath7, cfgOptPgSocketPath8, cfgOptPgUser, cfgOptPgUser2, cfgOptPgUser3, cfgOptPgUser4, cfgOptPgUser5, cfgOptPgUser6, cfgOptPgUser7, cfgOptPgUser8, cfgOptProcess, cfgOptProcessMax, cfgOptProtocolTimeout, cfgOptRecoveryOption, cfgOptRecurse, cfgOptRemoteType, cfgOptRepoCipherPass, cfgOptRepoCipherType, cfgOptRepoHardlink, cfgOptRepoHost, cfgOptRepoHostCmd, cfgOptRepoHostConfig, cfgOptRepoHostConfigIncludePath, cfgOptRepoHostConfigPath, cfgOptRepoHostPort, cfgOptRepoHostUser, cfgOptRepoPath, cfgOptRepoRetentionArchive, cfgOptRepoRetentionArchiveType, cfgOptRepoRetentionDiff, cfgOptRepoRetentionFull, cfgOptRepoS3Bucket, cfgOptRepoS3CaFile, cfgOptRepoS3CaPath, cfgOptRepoS3Endpoint, cfgOptRepoS3Host, cfgOptRepoS3Key, cfgOptRepoS3KeySecret, cfgOptRepoS3Port, cfgOptRepoS3Region, cfgOptRepoS3Token, cfgOptRepoS3UriStyle, cfgOptRepoS3VerifyTls, cfgOptRepoType, cfgOptResume, cfgOptSet, cfgOptSort, cfgOptSpoolPath, cfgOptStanza, cfgOptStartFast, cfgOptStopAuto, cfgOptTablespaceMap, cfgOptTablespaceMapAll, cfgOptTarget, cfgOptTargetAction, cfgOptTargetExclusive, cfgOptTargetTimeline, cfgOptType, } ConfigOption; #endif pgbackrest-release-2.24/src/config/config.c000066400000000000000000001157031362531507100206630ustar00rootroot00000000000000/*********************************************************************************************************************************** Command and Option Configuration ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/debug.h" #include "common/error.h" #include "common/memContext.h" #include "config/config.h" /*********************************************************************************************************************************** Map command names to ids and vice versa. ***********************************************************************************************************************************/ typedef struct ConfigCommandData { const char *name; bool internal:1; bool lockRequired:1; bool lockRemoteRequired:1; unsigned int lockType:2; bool logFile:1; unsigned int logLevelDefault:4; bool parameterAllowed:1; } ConfigCommandData; #define CONFIG_COMMAND_LIST(...) \ {__VA_ARGS__}; #define CONFIG_COMMAND(...) \ {__VA_ARGS__}, #define CONFIG_COMMAND_INTERNAL(internalParam) \ .internal = internalParam, #define CONFIG_COMMAND_LOCK_REQUIRED(lockRequiredParam) \ .lockRequired = lockRequiredParam, #define CONFIG_COMMAND_LOCK_REMOTE_REQUIRED(lockRemoteRequiredParam) \ .lockRemoteRequired = lockRemoteRequiredParam, #define CONFIG_COMMAND_LOCK_TYPE(lockTypeParam) \ .lockType = lockTypeParam, #define CONFIG_COMMAND_LOG_FILE(logFileParam) \ .logFile = logFileParam, #define CONFIG_COMMAND_LOG_LEVEL_DEFAULT(logLevelDefaultParam) \ .logLevelDefault = logLevelDefaultParam, #define CONFIG_COMMAND_NAME(nameParam) \ .name = nameParam, #define CONFIG_COMMAND_PARAMETER_ALLOWED(parameterAllowedParam) \ .parameterAllowed = parameterAllowedParam, /*********************************************************************************************************************************** Map options names and indexes to option definitions. ***********************************************************************************************************************************/ typedef struct ConfigOptionData { const char *name; unsigned int index:5; unsigned int defineId:7; } ConfigOptionData; #define CONFIG_OPTION_LIST(...) \ {__VA_ARGS__}; #define CONFIG_OPTION(...) \ {__VA_ARGS__}, #define CONFIG_OPTION_INDEX(indexParam) \ .index = indexParam, #define CONFIG_OPTION_NAME(nameParam) \ .name = nameParam, #define CONFIG_OPTION_DEFINE_ID(defineIdParam) \ .defineId = defineIdParam, /*********************************************************************************************************************************** Include the automatically generated configuration data ***********************************************************************************************************************************/ #include "config/config.auto.c" /*********************************************************************************************************************************** Static data for the currently loaded configuration ***********************************************************************************************************************************/ static struct ConfigStatic { MemContext *memContext; // Mem context for config data (child of top context) // Generally set by the command parser but can also be set by during execute to change commands, i.e. backup -> expire ConfigCommand command; // Current command ConfigCommandRole commandRole; // Current command role String *exe; // Location of the executable bool help; // Was help requested for the command? StringList *paramList; // Parameters passed to the command (if any) // Map options names and indexes to option definitions struct { bool valid:1; // Is option valid for current command? bool negate:1; // Is the option negated? bool reset:1; // Is the option reset? unsigned int source:2; // Where the option came from, i.e. ConfigSource enum Variant *value; // Value Variant *defaultValue; // Default value } option[CFG_OPTION_TOTAL]; } configStatic; /*********************************************************************************************************************************** Initialize or reinitialize the configuration data ***********************************************************************************************************************************/ void cfgInit(void) { FUNCTION_TEST_VOID(); // Free the old context if (configStatic.memContext != NULL) memContextFree(configStatic.memContext); // Initialize config data configStatic = (struct ConfigStatic){.command = cfgCmdNone}; // Allocate configuration context as a child of the top context MEM_CONTEXT_BEGIN(memContextTop()) { MEM_CONTEXT_NEW_BEGIN("configuration") { configStatic.memContext = MEM_CONTEXT_NEW(); } MEM_CONTEXT_NEW_END(); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Get/set the current command ***********************************************************************************************************************************/ ConfigCommand cfgCommand(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(configStatic.command); } ConfigCommandRole cfgCommandRole(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(configStatic.commandRole); } void cfgCommandSet(ConfigCommand commandId, ConfigCommandRole commandRoleId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandId); FUNCTION_TEST_PARAM(ENUM, commandRoleId); FUNCTION_TEST_END(); ASSERT(commandId <= cfgCmdNone); configStatic.command = commandId; configStatic.commandRole = commandRoleId; FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Was help requested? ***********************************************************************************************************************************/ bool cfgCommandHelp(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(configStatic.help); } void cfgCommandHelpSet(bool help) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BOOL, help); FUNCTION_TEST_END(); configStatic.help = help; FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Get the define id for this command This can be done by just casting the id to the define id. There may be a time when they are not one to one and this function can be modified to do the mapping. ***********************************************************************************************************************************/ ConfigDefineCommand cfgCommandDefIdFromId(ConfigCommand commandId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandId); FUNCTION_TEST_END(); ASSERT(commandId < cfgCmdNone); FUNCTION_TEST_RETURN((ConfigDefineCommand)commandId); } /**********************************************************************************************************************************/ ConfigCommand cfgCommandId(const char *commandName, bool error) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, commandName); FUNCTION_TEST_PARAM(BOOL, error); FUNCTION_TEST_END(); ASSERT(commandName != NULL); ConfigCommand commandId; for (commandId = 0; commandId < cfgCmdNone; commandId++) if (strcmp(commandName, configCommandData[commandId].name) == 0) break; if (commandId == cfgCmdNone && error) THROW_FMT(AssertError, "invalid command '%s'", commandName); FUNCTION_TEST_RETURN(commandId); } /*********************************************************************************************************************************** Get command name by id ***********************************************************************************************************************************/ const char * cfgCommandName(ConfigCommand commandId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandId); FUNCTION_TEST_END(); ASSERT(commandId < cfgCmdNone); FUNCTION_TEST_RETURN(configCommandData[commandId].name); } String * cfgCommandRoleNameParam(ConfigCommand commandId, ConfigCommandRole commandRoleId, const String *separator) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandId); FUNCTION_TEST_PARAM(ENUM, commandRoleId); FUNCTION_TEST_PARAM(STRING, separator); FUNCTION_TEST_END(); String *result = strNew(cfgCommandName(commandId)); if (commandRoleId != cfgCmdRoleDefault) strCatFmt(result, "%s%s", strPtr(separator), strPtr(cfgCommandRoleStr(commandRoleId))); FUNCTION_TEST_RETURN(result); } String * cfgCommandRoleName(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(cfgCommandRoleNameParam(cfgCommand(), cfgCommandRole(), COLON_STR)); } /*********************************************************************************************************************************** Command parameters, if any ***********************************************************************************************************************************/ const StringList * cfgCommandParam(void) { FUNCTION_TEST_VOID(); if (configStatic.paramList == NULL) { MEM_CONTEXT_BEGIN(configStatic.memContext) { configStatic.paramList = strLstNew(); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN(configStatic.paramList); } void cfgCommandParamSet(const StringList *param) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING_LIST, param); FUNCTION_TEST_END(); ASSERT(param != NULL); MEM_CONTEXT_BEGIN(configStatic.memContext) { configStatic.paramList = strLstDup(param); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN_VOID(); } /**********************************************************************************************************************************/ STRING_STATIC(CONFIG_COMMAND_ROLE_ASYNC_STR, CONFIG_COMMAND_ROLE_ASYNC); STRING_STATIC(CONFIG_COMMAND_ROLE_LOCAL_STR, CONFIG_COMMAND_ROLE_LOCAL); STRING_STATIC(CONFIG_COMMAND_ROLE_REMOTE_STR, CONFIG_COMMAND_ROLE_REMOTE); ConfigCommandRole cfgCommandRoleEnum(const String *commandRole) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, commandRole); FUNCTION_TEST_END(); if (commandRole == NULL) FUNCTION_TEST_RETURN(cfgCmdRoleDefault); else if (strEq(commandRole, CONFIG_COMMAND_ROLE_ASYNC_STR)) FUNCTION_TEST_RETURN(cfgCmdRoleAsync); else if (strEq(commandRole, CONFIG_COMMAND_ROLE_LOCAL_STR)) FUNCTION_TEST_RETURN(cfgCmdRoleLocal); else if (strEq(commandRole, CONFIG_COMMAND_ROLE_REMOTE_STR)) FUNCTION_TEST_RETURN(cfgCmdRoleRemote); THROW_FMT(CommandInvalidError, "invalid command role '%s'", strPtr(commandRole)); } const String * cfgCommandRoleStr(ConfigCommandRole commandRole) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandRole); FUNCTION_TEST_END(); const String *result = NULL; switch (commandRole) { case cfgCmdRoleDefault: break; case cfgCmdRoleAsync: { result = CONFIG_COMMAND_ROLE_ASYNC_STR; break; } case cfgCmdRoleLocal: { result = CONFIG_COMMAND_ROLE_LOCAL_STR; break; } case cfgCmdRoleRemote: { result = CONFIG_COMMAND_ROLE_REMOTE_STR; break; } } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Command parameters, if any ***********************************************************************************************************************************/ const String * cfgExe(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(configStatic.exe); } void cfgExeSet(const String *exe) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, exe); FUNCTION_TEST_END(); ASSERT(exe != NULL); MEM_CONTEXT_BEGIN(configStatic.memContext) { configStatic.exe = strDup(exe); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Is this command internal-only? ***********************************************************************************************************************************/ bool cfgCommandInternal(ConfigCommand commandId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandId); FUNCTION_TEST_END(); ASSERT(commandId < cfgCmdNone); FUNCTION_TEST_RETURN(configCommandData[commandId].internal); } /*********************************************************************************************************************************** Does this command require an immediate lock? ***********************************************************************************************************************************/ bool cfgLockRequired(void) { FUNCTION_TEST_VOID(); ASSERT(configStatic.command != cfgCmdNone); // Local roles never take a lock and the remote role has special logic for locking FUNCTION_TEST_RETURN( // If a lock is required for the command and the role is default (configCommandData[cfgCommand()].lockRequired && cfgCommandRole() == cfgCmdRoleDefault) || // Or any command when the role is async cfgCommandRole() == cfgCmdRoleAsync); } /*********************************************************************************************************************************** Does the command require an immediate lock? ***********************************************************************************************************************************/ bool cfgLockRemoteRequired(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(configCommandData[cfgCommand()].lockRemoteRequired); } /*********************************************************************************************************************************** Get the lock type required for this command ***********************************************************************************************************************************/ LockType cfgLockType(void) { FUNCTION_TEST_VOID(); ASSERT(configStatic.command != cfgCmdNone); FUNCTION_TEST_RETURN((LockType)configCommandData[cfgCommand()].lockType); } /*********************************************************************************************************************************** Does this command log to a file? ***********************************************************************************************************************************/ bool cfgLogFile(void) { FUNCTION_TEST_VOID(); ASSERT(configStatic.command != cfgCmdNone); FUNCTION_TEST_RETURN( // If the command always logs to a file configCommandData[cfgCommand()].logFile || // Or log-level-file was explicitly set as a param/env var cfgOptionSource(cfgOptLogLevelFile) == cfgSourceParam || // Or the role is async cfgCommandRole() == cfgCmdRoleAsync); } /*********************************************************************************************************************************** Get default log level -- used for log messages that are common to all commands ***********************************************************************************************************************************/ LogLevel cfgLogLevelDefault(void) { FUNCTION_TEST_VOID(); ASSERT(configStatic.command != cfgCmdNone); FUNCTION_TEST_RETURN((LogLevel)configCommandData[cfgCommand()].logLevelDefault); } /*********************************************************************************************************************************** Does this command allow parameters? ***********************************************************************************************************************************/ bool cfgParameterAllowed(void) { FUNCTION_TEST_VOID(); ASSERT(configStatic.command != cfgCmdNone); FUNCTION_TEST_RETURN(configCommandData[cfgCommand()].parameterAllowed); } /*********************************************************************************************************************************** Get the option define for this option ***********************************************************************************************************************************/ ConfigDefineOption cfgOptionDefIdFromId(ConfigOption optionId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionId); FUNCTION_TEST_END(); ASSERT(optionId < CFG_OPTION_TOTAL); FUNCTION_TEST_RETURN(configOptionData[optionId].defineId); } /*********************************************************************************************************************************** Get/set option default Option defaults are generally not set in advance because the vast majority of them are never used. It is more efficient to generate them when they are requested. Some defaults are (e.g. the exe path) are set at runtime. ***********************************************************************************************************************************/ static Variant * cfgOptionDefaultValue(ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); Variant *result; Variant *defaultValue = varNewStrZ(cfgDefOptionDefault(cfgCommandDefIdFromId(cfgCommand()), optionDefId)); switch (cfgDefOptionType(optionDefId)) { case cfgDefOptTypeBoolean: { result = varNewBool(varBoolForce(defaultValue)); break; } case cfgDefOptTypeFloat: { result = varNewDbl(varDblForce(defaultValue)); break; } case cfgDefOptTypeInteger: case cfgDefOptTypeSize: { result = varNewInt64(varInt64Force(defaultValue)); break; } case cfgDefOptTypePath: case cfgDefOptTypeString: result = varDup(defaultValue); break; default: THROW_FMT(AssertError, "default value not available for option type %d", cfgDefOptionType(optionDefId)); } FUNCTION_TEST_RETURN(result); } const Variant * cfgOptionDefault(ConfigOption optionId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionId); FUNCTION_TEST_END(); ASSERT(optionId < CFG_OPTION_TOTAL); if (configStatic.option[optionId].defaultValue == NULL) { ConfigDefineOption optionDefId = cfgOptionDefIdFromId(optionId); if (cfgDefOptionDefault(cfgCommandDefIdFromId(cfgCommand()), optionDefId) != NULL) { MEM_CONTEXT_BEGIN(configStatic.memContext) { configStatic.option[optionId].defaultValue = cfgOptionDefaultValue(optionDefId); } MEM_CONTEXT_END(); } } FUNCTION_TEST_RETURN(configStatic.option[optionId].defaultValue); } void cfgOptionDefaultSet(ConfigOption optionId, const Variant *defaultValue) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionId); FUNCTION_TEST_PARAM(VARIANT, defaultValue); FUNCTION_TEST_END(); ASSERT(optionId < CFG_OPTION_TOTAL); MEM_CONTEXT_BEGIN(configStatic.memContext) { if (configStatic.option[optionId].defaultValue != NULL) varFree(configStatic.option[optionId].defaultValue); configStatic.option[optionId].defaultValue = varDup(defaultValue); if (configStatic.option[optionId].source == cfgSourceDefault) { if (configStatic.option[optionId].value != NULL) varFree(configStatic.option[optionId].value); configStatic.option[optionId].value = varDup(defaultValue); } } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Parse a host option and extract the host and port (if it exists) ***********************************************************************************************************************************/ String * cfgOptionHostPort(ConfigOption optionId, unsigned int *port) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionId); FUNCTION_TEST_PARAM_P(UINT, port); FUNCTION_TEST_END(); ASSERT(optionId < CFG_OPTION_TOTAL); ASSERT(port != NULL); String *result = NULL; // Proceed if option is valid and has a value if (cfgOptionTest(optionId)) { MEM_CONTEXT_TEMP_BEGIN() { const String *host = cfgOptionStr(optionId); // If the host contains a colon then it has a port appended if (strChr(host, ':') != -1) { const StringList *hostPart = strLstNewSplitZ(host, ":"); // More than one colon is invalid if (strLstSize(hostPart) > 2) { THROW_FMT( OptionInvalidError, "'%s' is not valid for option '%s'" "\nHINT: is more than one port specified?", strPtr(host), cfgOptionName(optionId)); } // Set the host MEM_CONTEXT_PRIOR_BEGIN() { result = strDup(strLstGet(hostPart, 0)); } MEM_CONTEXT_PRIOR_END(); // Set the port and error if it is not a positive integer TRY_BEGIN() { *port = cvtZToUInt(strPtr(strLstGet(hostPart, 1))); } CATCH(FormatError) { THROW_FMT( OptionInvalidError, "'%s' is not valid for option '%s'" "\nHINT: port is not a positive integer.", strPtr(host), cfgOptionName(optionId)); } TRY_END(); } // Else there is no port and just copy the host else { MEM_CONTEXT_PRIOR_BEGIN() { result = strDup(host); } MEM_CONTEXT_PRIOR_END(); } } MEM_CONTEXT_TEMP_END(); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Get index for option ***********************************************************************************************************************************/ unsigned int cfgOptionIndex(ConfigOption optionId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionId); FUNCTION_TEST_END(); ASSERT(optionId < CFG_OPTION_TOTAL); FUNCTION_TEST_RETURN(configOptionData[optionId].index); } /*********************************************************************************************************************************** Get option id by name ***********************************************************************************************************************************/ int cfgOptionId(const char *optionName) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, optionName); FUNCTION_TEST_END(); ASSERT(optionName != NULL); int result = -1; for (ConfigOption optionId = 0; optionId < CFG_OPTION_TOTAL; optionId++) if (strcmp(optionName, configOptionData[optionId].name) == 0) result = optionId; FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Get total indexed values for option ***********************************************************************************************************************************/ unsigned int cfgOptionIndexTotal(ConfigOption optionId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionId); FUNCTION_TEST_END(); ASSERT(optionId < CFG_OPTION_TOTAL); FUNCTION_TEST_RETURN(cfgDefOptionIndexTotal(configOptionData[optionId].defineId)); } /*********************************************************************************************************************************** Get the id for this option define ***********************************************************************************************************************************/ ConfigOption cfgOptionIdFromDefId(ConfigDefineOption optionDefId, unsigned int index) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_PARAM(UINT, index); FUNCTION_TEST_END(); // Search for the option ConfigOption optionId; for (optionId = 0; optionId < CFG_OPTION_TOTAL; optionId++) { if (configOptionData[optionId].defineId == optionDefId) break; } // If the mapping is not found then there is a bug in the code generator ASSERT(optionId != CFG_OPTION_TOTAL); // Make sure the index is valid ASSERT(index < cfgDefOptionIndexTotal(optionDefId)); // Return with original index FUNCTION_TEST_RETURN(optionId + index); } /*********************************************************************************************************************************** Get option name by id ***********************************************************************************************************************************/ const char * cfgOptionName(ConfigOption optionId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionId); FUNCTION_TEST_END(); ASSERT(optionId < CFG_OPTION_TOTAL); FUNCTION_TEST_RETURN(configOptionData[optionId].name); } /*********************************************************************************************************************************** Was the option negated? ***********************************************************************************************************************************/ bool cfgOptionNegate(ConfigOption optionId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionId); FUNCTION_TEST_END(); ASSERT(optionId < CFG_OPTION_TOTAL); FUNCTION_TEST_RETURN(configStatic.option[optionId].negate); } void cfgOptionNegateSet(ConfigOption optionId, bool negate) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionId); FUNCTION_TEST_PARAM(BOOL, negate); FUNCTION_TEST_END(); ASSERT(optionId < CFG_OPTION_TOTAL); configStatic.option[optionId].negate = negate; FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Was the option reset? ***********************************************************************************************************************************/ bool cfgOptionReset(ConfigOption optionId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionId); FUNCTION_TEST_END(); ASSERT(optionId < CFG_OPTION_TOTAL); FUNCTION_TEST_RETURN(configStatic.option[optionId].reset); } void cfgOptionResetSet(ConfigOption optionId, bool reset) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionId); FUNCTION_TEST_PARAM(BOOL, reset); FUNCTION_TEST_END(); ASSERT(optionId < CFG_OPTION_TOTAL); configStatic.option[optionId].reset = reset; FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Get and set config options ***********************************************************************************************************************************/ const Variant * cfgOption(ConfigOption optionId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionId); FUNCTION_TEST_END(); ASSERT(optionId < CFG_OPTION_TOTAL); FUNCTION_TEST_RETURN(configStatic.option[optionId].value); } bool cfgOptionBool(ConfigOption optionId) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(ENUM, optionId); FUNCTION_LOG_END(); ASSERT(optionId < CFG_OPTION_TOTAL); ASSERT(varType(configStatic.option[optionId].value) == varTypeBool); FUNCTION_LOG_RETURN(BOOL, varBool(configStatic.option[optionId].value)); } double cfgOptionDbl(ConfigOption optionId) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(ENUM, optionId); FUNCTION_LOG_END(); ASSERT(optionId < CFG_OPTION_TOTAL); ASSERT(varType(configStatic.option[optionId].value) == varTypeDouble); FUNCTION_LOG_RETURN(DOUBLE, varDbl(configStatic.option[optionId].value)); } int cfgOptionInt(ConfigOption optionId) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(ENUM, optionId); FUNCTION_LOG_END(); ASSERT(optionId < CFG_OPTION_TOTAL); ASSERT(varType(configStatic.option[optionId].value) == varTypeInt64); FUNCTION_LOG_RETURN(INT, varIntForce(configStatic.option[optionId].value)); } int64_t cfgOptionInt64(ConfigOption optionId) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(ENUM, optionId); FUNCTION_LOG_END(); ASSERT(optionId < CFG_OPTION_TOTAL); ASSERT(varType(configStatic.option[optionId].value) == varTypeInt64); FUNCTION_LOG_RETURN(INT64, varInt64(configStatic.option[optionId].value)); } unsigned int cfgOptionUInt(ConfigOption optionId) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(ENUM, optionId); FUNCTION_LOG_END(); ASSERT(optionId < CFG_OPTION_TOTAL); ASSERT(varType(configStatic.option[optionId].value) == varTypeInt64); FUNCTION_LOG_RETURN(UINT, varUIntForce(configStatic.option[optionId].value)); } uint64_t cfgOptionUInt64(ConfigOption optionId) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(ENUM, optionId); FUNCTION_LOG_END(); ASSERT(optionId < CFG_OPTION_TOTAL); ASSERT(varType(configStatic.option[optionId].value) == varTypeInt64); FUNCTION_LOG_RETURN(UINT64, varUInt64Force(configStatic.option[optionId].value)); } const KeyValue * cfgOptionKv(ConfigOption optionId) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(ENUM, optionId); FUNCTION_LOG_END(); ASSERT(optionId < CFG_OPTION_TOTAL); ASSERT(varType(configStatic.option[optionId].value) == varTypeKeyValue); FUNCTION_LOG_RETURN(KEY_VALUE, varKv(configStatic.option[optionId].value)); } const VariantList * cfgOptionLst(ConfigOption optionId) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(ENUM, optionId); FUNCTION_LOG_END(); ASSERT(optionId < CFG_OPTION_TOTAL); ASSERT(configStatic.option[optionId].value == NULL || varType(configStatic.option[optionId].value) == varTypeVariantList); if (configStatic.option[optionId].value == NULL) { MEM_CONTEXT_BEGIN(configStatic.memContext) { configStatic.option[optionId].value = varNewVarLst(varLstNew()); } MEM_CONTEXT_END(); } FUNCTION_LOG_RETURN(VARIANT_LIST, varVarLst(configStatic.option[optionId].value)); } const String * cfgOptionStr(ConfigOption optionId) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(ENUM, optionId); FUNCTION_LOG_END(); ASSERT(optionId < CFG_OPTION_TOTAL); ASSERT(configStatic.option[optionId].value == NULL || varType(configStatic.option[optionId].value) == varTypeString); const String *result = NULL; if (configStatic.option[optionId].value != NULL) result = varStr(configStatic.option[optionId].value); FUNCTION_LOG_RETURN_CONST(STRING, result); } void cfgOptionSet(ConfigOption optionId, ConfigSource source, const Variant *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionId); FUNCTION_TEST_PARAM(ENUM, source); FUNCTION_TEST_PARAM(VARIANT, value); FUNCTION_TEST_END(); ASSERT(optionId < CFG_OPTION_TOTAL); MEM_CONTEXT_BEGIN(configStatic.memContext) { // Set the source configStatic.option[optionId].source = source; // Store old value Variant *valueOld = configStatic.option[optionId].value; // Only set value if it is not null if (value != NULL) { switch (cfgDefOptionType(cfgOptionDefIdFromId(optionId))) { case cfgDefOptTypeBoolean: { if (varType(value) == varTypeBool) configStatic.option[optionId].value = varDup(value); else configStatic.option[optionId].value = varNewBool(varBoolForce(value)); break; } case cfgDefOptTypeFloat: { if (varType(value) == varTypeDouble) configStatic.option[optionId].value = varDup(value); else configStatic.option[optionId].value = varNewDbl(varDblForce(value)); break; } case cfgDefOptTypeInteger: case cfgDefOptTypeSize: { if (varType(value) == varTypeInt64) configStatic.option[optionId].value = varDup(value); else configStatic.option[optionId].value = varNewInt64(varInt64Force(value)); break; } case cfgDefOptTypeHash: { if (varType(value) == varTypeKeyValue) configStatic.option[optionId].value = varDup(value); else THROW_FMT(AssertError, "option '%s' must be set with KeyValue variant", cfgOptionName(optionId)); break; } case cfgDefOptTypeList: { if (varType(value) == varTypeVariantList) configStatic.option[optionId].value = varDup(value); else THROW_FMT(AssertError, "option '%s' must be set with VariantList variant", cfgOptionName(optionId)); break; } case cfgDefOptTypePath: case cfgDefOptTypeString: { if (varType(value) == varTypeString) configStatic.option[optionId].value = varDup(value); else THROW_FMT(AssertError, "option '%s' must be set with String variant", cfgOptionName(optionId)); break; } } } else configStatic.option[optionId].value = NULL; // Free old value if (valueOld != NULL) varFree(valueOld); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** How was the option set (default, param, config)? ***********************************************************************************************************************************/ ConfigSource cfgOptionSource(ConfigOption optionId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionId); FUNCTION_TEST_END(); ASSERT(optionId < CFG_OPTION_TOTAL); FUNCTION_TEST_RETURN(configStatic.option[optionId].source); } /*********************************************************************************************************************************** Is the option valid for the command and set? ***********************************************************************************************************************************/ bool cfgOptionTest(ConfigOption optionId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionId); FUNCTION_TEST_END(); ASSERT(optionId < CFG_OPTION_TOTAL); FUNCTION_TEST_RETURN(cfgOptionValid(optionId) && configStatic.option[optionId].value != NULL); } /*********************************************************************************************************************************** Is the option valid for this command? ***********************************************************************************************************************************/ bool cfgOptionValid(ConfigOption optionId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionId); FUNCTION_TEST_END(); ASSERT(optionId < CFG_OPTION_TOTAL); FUNCTION_TEST_RETURN(configStatic.option[optionId].valid); } void cfgOptionValidSet(ConfigOption optionId, bool valid) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionId); FUNCTION_TEST_PARAM(BOOL, valid); FUNCTION_TEST_END(); ASSERT(optionId < CFG_OPTION_TOTAL); configStatic.option[optionId].valid = valid; FUNCTION_TEST_RETURN_VOID(); } pgbackrest-release-2.24/src/config/config.h000066400000000000000000000162031362531507100206630ustar00rootroot00000000000000/*********************************************************************************************************************************** Command and Option Configuration This module serves as a database for the configuration options. The configuration rules reside in config/define.c and config/parse.c sets the command and options and determines which options are valid for a command. ***********************************************************************************************************************************/ #ifndef CONFIG_CONFIG_H #define CONFIG_CONFIG_H #include "common/lock.h" #include "common/log.h" #include "common/type/stringList.h" #include "config/define.h" #include "config/config.auto.h" /*********************************************************************************************************************************** Command Role Enum Commands may have multiple processes that work together to implement their functionality. These roles allow each process to know what it is supposed to do. ***********************************************************************************************************************************/ typedef enum { // Called directly by the user. This is the main part of the command that may or may not spawn other command roles. cfgCmdRoleDefault = 0, // Async worker that is spawned so the main process can return a result while work continues. An async worker may spawn local // or remote workers. cfgCmdRoleAsync, // Local worker for parallelizing jobs. A local work may spawn a remote worker. cfgCmdRoleLocal, // Remote worker for accessing resources on another host cfgCmdRoleRemote, } ConfigCommandRole; // Constants for the command roles #define CONFIG_COMMAND_ROLE_ASYNC "async" #define CONFIG_COMMAND_ROLE_LOCAL "local" #define CONFIG_COMMAND_ROLE_REMOTE "remote" /*********************************************************************************************************************************** Constants Constants for configuration options. ***********************************************************************************************************************************/ #define CFGOPTVAL_TMP_REPO_RETENTION_ARCHIVE_TYPE_DIFF "diff" #define CFGOPTVAL_TMP_REPO_RETENTION_ARCHIVE_TYPE_FULL "full" #define CFGOPTVAL_TMP_REPO_RETENTION_ARCHIVE_TYPE_INCR "incr" /*********************************************************************************************************************************** Command Functions Access the current command and command parameters. ***********************************************************************************************************************************/ ConfigCommand cfgCommand(void); // Current command role (async, local, remote) ConfigCommandRole cfgCommandRole(void); bool cfgCommandInternal(ConfigCommand commandId); const char *cfgCommandName(ConfigCommand commandId); // Get command:role name String *cfgCommandRoleName(void); bool cfgLockRequired(void); bool cfgLockRemoteRequired(void); LockType cfgLockType(void); bool cfgLogFile(void); LogLevel cfgLogLevelDefault(void); bool cfgParameterAllowed(void); const StringList *cfgCommandParam(void); /*********************************************************************************************************************************** Option Functions Access option values, indexes, and determine if an option is valid for the current command. ***********************************************************************************************************************************/ const Variant *cfgOption(ConfigOption optionId); bool cfgOptionBool(ConfigOption optionId); double cfgOptionDbl(ConfigOption optionId); int cfgOptionInt(ConfigOption optionId); int64_t cfgOptionInt64(ConfigOption optionId); const KeyValue *cfgOptionKv(ConfigOption optionId); const VariantList *cfgOptionLst(ConfigOption optionId); const String *cfgOptionStr(ConfigOption optionId); unsigned int cfgOptionUInt(ConfigOption optionId); uint64_t cfgOptionUInt64(ConfigOption optionId); unsigned int cfgOptionIndex(ConfigOption optionId); unsigned int cfgOptionIndexTotal(ConfigOption optionDefId); const char *cfgOptionName(ConfigOption optionId); bool cfgOptionValid(ConfigOption optionId); bool cfgOptionTest(ConfigOption optionId); /*********************************************************************************************************************************** Option Source Enum Defines where an option was sourced from. The source is only needed when determining what parameters should be passed to a remote process. ***********************************************************************************************************************************/ typedef enum { cfgSourceDefault, // Default value cfgSourceParam, // Passed as command-line parameter cfgSourceConfig, // From configuration file or environment variable } ConfigSource; /*********************************************************************************************************************************** Load Functions Used primarily by modules that need to manipulate the configuration. These modules include, but are not limited to, config/parse.c, config/load.c. ***********************************************************************************************************************************/ void cfgInit(void); ConfigDefineCommand cfgCommandDefIdFromId(ConfigCommand commandId); bool cfgCommandHelp(void); void cfgCommandHelpSet(bool help); // Get command id by name. If error is true then assert when the command does not exist. ConfigCommand cfgCommandId(const char *commandName, bool error); void cfgCommandParamSet(const StringList *param); void cfgCommandSet(ConfigCommand commandId, ConfigCommandRole commandRoleId); // Get command/role name with custom separator String *cfgCommandRoleNameParam(ConfigCommand commandId, ConfigCommandRole commandRoleId, const String *separator); // Convert command role from String to enum and vice versa ConfigCommandRole cfgCommandRoleEnum(const String *commandRole); const String *cfgCommandRoleStr(ConfigCommandRole commandRole); const String *cfgExe(void); void cfgExeSet(const String *exe); const Variant *cfgOptionDefault(ConfigOption optionId); void cfgOptionDefaultSet(ConfigOption optionId, const Variant *defaultValue); ConfigDefineOption cfgOptionDefIdFromId(ConfigOption optionId); String *cfgOptionHostPort(ConfigOption optionId, unsigned int *port); int cfgOptionId(const char *optionName); ConfigOption cfgOptionIdFromDefId(ConfigDefineOption optionDefId, unsigned int index); bool cfgOptionNegate(ConfigOption optionId); void cfgOptionNegateSet(ConfigOption optionId, bool negate); bool cfgOptionReset(ConfigOption optionId); void cfgOptionResetSet(ConfigOption optionId, bool reset); void cfgOptionSet(ConfigOption optionId, ConfigSource source, const Variant *value); ConfigSource cfgOptionSource(ConfigOption optionId); void cfgOptionValidSet(ConfigOption optionId, bool valid); #endif pgbackrest-release-2.24/src/config/define.auto.c000066400000000000000000005421031362531507100216150ustar00rootroot00000000000000/*********************************************************************************************************************************** Command and Option Definition Automatically generated by Build.pm -- do not modify directly. ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Command define data ***********************************************************************************************************************************/ static ConfigDefineCommandData configDefineCommandData[] = CFGDEFDATA_COMMAND_LIST ( CFGDEFDATA_COMMAND ( CFGDEFDATA_COMMAND_NAME("archive-get") CFGDEFDATA_COMMAND_HELP_SUMMARY("Get a WAL segment from the archive.") CFGDEFDATA_COMMAND_HELP_DESCRIPTION ( "WAL segments are required for restoring a PostgreSQL cluster or maintaining a replica." ) ) CFGDEFDATA_COMMAND ( CFGDEFDATA_COMMAND_NAME("archive-push") CFGDEFDATA_COMMAND_HELP_SUMMARY("Push a WAL segment to the archive.") CFGDEFDATA_COMMAND_HELP_DESCRIPTION ( "The WAL segment may be pushed immediately to the archive or stored locally depending on the value of archive-async" ) ) CFGDEFDATA_COMMAND ( CFGDEFDATA_COMMAND_NAME("backup") CFGDEFDATA_COMMAND_HELP_SUMMARY("Backup a database cluster.") CFGDEFDATA_COMMAND_HELP_DESCRIPTION ( "pgBackRest does not have a built-in scheduler so it's best to run it from cron or some other scheduling mechanism." ) ) CFGDEFDATA_COMMAND ( CFGDEFDATA_COMMAND_NAME("check") CFGDEFDATA_COMMAND_HELP_SUMMARY("Check the configuration.") CFGDEFDATA_COMMAND_HELP_DESCRIPTION ( "The check command validates that pgBackRest and the archive_command setting are configured correctly for archiving " "and backups. It detects misconfigurations, particularly in archiving, that result in incomplete backups because " "required WAL segments did not reach the archive. The command can be run on the database or the repository host. " "The command may also be run on the standby host, however, since pg_switch_xlog()/pg_switch_wal() cannot be " "performed on the standby, the command will only test the repository configuration.\n" "\n" "Note that pg_create_restore_point('pgBackRest Archive Check') and pg_switch_xlog()/pg_switch_wal() are called to " "force PostgreSQL to archive a WAL segment. Restore points are only supported in PostgreSQL >= 9.1 so for older " "versions the check command may fail if there has been no write activity since the last log rotation, therefore it " "is recommended that activity be generated by the user if there have been no writes since the last WAL switch " "before running the check command." ) ) CFGDEFDATA_COMMAND ( CFGDEFDATA_COMMAND_NAME("expire") CFGDEFDATA_COMMAND_HELP_SUMMARY("Expire backups that exceed retention.") CFGDEFDATA_COMMAND_HELP_DESCRIPTION ( "pgBackRest does backup rotation but is not concerned with when the backups were created. If two full backups are " "configured for retention, pgBackRest will keep two full backups no matter whether they occur two hours or two " "weeks apart." ) ) CFGDEFDATA_COMMAND ( CFGDEFDATA_COMMAND_NAME("help") CFGDEFDATA_COMMAND_HELP_SUMMARY("Get help.") CFGDEFDATA_COMMAND_HELP_DESCRIPTION ( "Three levels of help are provided. If no command is specified then general help will be displayed. If a command is " "specified then a full description of the command will be displayed along with a list of valid options. If an " "option is specified in addition to a command then the a full description of the option as it applies to the " "command will be displayed." ) ) CFGDEFDATA_COMMAND ( CFGDEFDATA_COMMAND_NAME("info") CFGDEFDATA_COMMAND_HELP_SUMMARY("Retrieve information about backups.") CFGDEFDATA_COMMAND_HELP_DESCRIPTION ( "The info command operates on a single stanza or all stanzas. Text output is the default and gives a human-readable " "summary of backups for the stanza(s) requested. This format is subject to change with any release.\n" "\n" "For machine-readable output use --output=json. The JSON output contains far more information than the text output and " "is kept stable unless a bug is found." ) ) CFGDEFDATA_COMMAND ( CFGDEFDATA_COMMAND_NAME("ls") CFGDEFDATA_COMMAND_HELP_SUMMARY("List paths/files in the repository.") CFGDEFDATA_COMMAND_HELP_DESCRIPTION ( "This is intended to be a general purpose list function, but for now it only works on the repository." ) ) CFGDEFDATA_COMMAND ( CFGDEFDATA_COMMAND_NAME("restore") CFGDEFDATA_COMMAND_HELP_SUMMARY("Restore a database cluster.") CFGDEFDATA_COMMAND_HELP_DESCRIPTION ( "This command is generally run manually, but there are instances where it might be automated." ) ) CFGDEFDATA_COMMAND ( CFGDEFDATA_COMMAND_NAME("stanza-create") CFGDEFDATA_COMMAND_HELP_SUMMARY("Create the required stanza data.") CFGDEFDATA_COMMAND_HELP_DESCRIPTION ( "The stanza-create command must be run on the host where the repository is located after the stanza has been " "configured in pgbackrest.conf." ) ) CFGDEFDATA_COMMAND ( CFGDEFDATA_COMMAND_NAME("stanza-delete") CFGDEFDATA_COMMAND_HELP_SUMMARY("Delete a stanza.") CFGDEFDATA_COMMAND_HELP_DESCRIPTION ( "The stanza-delete command removes data in the repository associated with a stanza.\n" "WARNING: Use this command with caution -- it will permanently remove all backups and archives from the pgBackRest " "repository for the specified stanza.\n" "\n" "\n" "To delete a stanza:\n" "\n" "* Shut down the PostgreSQL cluster associated with the stanza (or use --force to override).\n" "* Run the stop command on the repository host.\n" "* Run the stanza-delete command on the repository host.\n" "\n" "Once the command successfully completes, it is the responsibility of the user to remove the stanza from all " "pgBackRest configuration files." ) ) CFGDEFDATA_COMMAND ( CFGDEFDATA_COMMAND_NAME("stanza-upgrade") CFGDEFDATA_COMMAND_HELP_SUMMARY("Upgrade a stanza.") CFGDEFDATA_COMMAND_HELP_DESCRIPTION ( "Immediately after upgrading PostgreSQL to a newer major version, the pg-path for all pgBackRest configurations must " "be set to the new database location and the stanza-upgrade run on the repository host. If the database is offline " "use the --no-online option." ) ) CFGDEFDATA_COMMAND ( CFGDEFDATA_COMMAND_NAME("start") CFGDEFDATA_COMMAND_HELP_SUMMARY("Allow pgBackRest processes to run.") CFGDEFDATA_COMMAND_HELP_DESCRIPTION ( "If the pgBackRest processes were previously stopped using the stop command then they can be started again using the " "start command. Note that this will not immediately start up any pgBackRest processes but they are allowed to run." ) ) CFGDEFDATA_COMMAND ( CFGDEFDATA_COMMAND_NAME("stop") CFGDEFDATA_COMMAND_HELP_SUMMARY("Stop pgBackRest processes from running.") CFGDEFDATA_COMMAND_HELP_DESCRIPTION ( "Does not allow any new pgBackRest processes to run. By default running processes will be allowed to complete " "successfully. Use the --force option to terminate running processes.\n" "\n" "pgBackRest processes will return an error if they are run after the stop command completes." ) ) CFGDEFDATA_COMMAND ( CFGDEFDATA_COMMAND_NAME("version") CFGDEFDATA_COMMAND_HELP_SUMMARY("Get version.") CFGDEFDATA_COMMAND_HELP_DESCRIPTION ( "Displays installed pgBackRest version." ) ) ) /*********************************************************************************************************************************** Option define data ***********************************************************************************************************************************/ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST ( // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("archive-async") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("archive") CFGDEFDATA_OPTION_HELP_SUMMARY("Push/get WAL segments asynchronously.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Enables asynchronous operation for the archive-push and archive-get commands.\n" "\n" "Asynchronous operation is more efficient because it can reuse connections and take advantage of parallelism. See the " "spool-path, archive-get-queue-max, and archive-push-queue-max options for more information." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("0") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("archive-check") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("backup") CFGDEFDATA_OPTION_HELP_SUMMARY("Check that WAL segments are in the archive before backup completes.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Checks that all WAL segments required to make the backup consistent are present in the WAL archive. It's a good idea " "to leave this as the default unless you are using another method for archiving.\n" "\n" "This option must be enabled if archive-copy is enabled." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("1") CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptOnline, "1" ) ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("archive-copy") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("backup") CFGDEFDATA_OPTION_HELP_SUMMARY("Copy WAL segments needed for consistency to the backup.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "This slightly paranoid option protects against corruption in the WAL segment archive by storing the WAL segments " "required for consistency directly in the backup. WAL segments are still stored in the archive so this option will " "use additional space.\n" "\n" "On restore, the WAL segments will be present in pg_xlog/pg_wal and PostgreSQL will use them in preference to calling " "the restore_command.\n" "\n" "The archive-check option must be enabled if archive-copy is enabled." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("0") CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptArchiveCheck, "1" ) ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("archive-get-queue-max") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeSize) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("archive") CFGDEFDATA_OPTION_HELP_SUMMARY("Maximum size of the pgBackRest archive-get queue.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Specifies the maximum size of the archive-get queue when archive-async is enabled. The queue is stored in the " "spool-path and is used to speed providing WAL to PostgreSQL.\n" "\n" "Size can be entered in bytes (default) or KB, MB, GB, TB, or PB where the multiplier is a power of 1024." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(0, 4503599627370496) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("134217728") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("archive-push-queue-max") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeSize) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("archive") CFGDEFDATA_OPTION_HELP_SUMMARY("Maximum size of the PostgreSQL archive queue.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "After the limit is reached, the following will happen:\n" "\n" "* pgBackRest will notify PostgreSQL that the WAL was successfully archived, then DROP IT.\n" "* A warning will be output to the Postgres log.\n" "\n" "If this occurs then the archive log stream will be interrupted and PITR will not be possible past that point. A new " "backup will be required to regain full restore capability.\n" "\n" "In asynchronous mode the entire queue will be dropped to prevent spurts of WAL getting through before the queue limit " "is exceeded again.\n" "\n" "The purpose of this feature is to prevent the log volume from filling up at which point Postgres will stop " "completely. Better to lose the backup than have PostgreSQL go down.\n" "\n" "Size can be entered in bytes (default) or KB, MB, GB, TB, or PB where the multiplier is a power of 1024." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(0, 4503599627370496) CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("archive-queue-max") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("archive-timeout") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeFloat) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("archive") CFGDEFDATA_OPTION_HELP_SUMMARY("Archive timeout.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Set maximum time, in seconds, to wait for each WAL segment to reach the pgBackRest archive repository. The timeout " "applies to the check and backup commands when waiting for WAL segments required for backup consistency to be " "archived." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(0.1, 86400) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("60") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("backup-standby") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("backup") CFGDEFDATA_OPTION_HELP_SUMMARY("Backup from the standby cluster.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Enable backup from standby to reduce load on the primary cluster. This option requires that both the primary and " "standby hosts be configured." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("0") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("buffer-size") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeSize) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("general") CFGDEFDATA_OPTION_HELP_SUMMARY("Buffer size for file operations.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Set the buffer size used for copy, compress, and uncompress functions. A maximum of 3 buffers will be in use at a " "time per process. An additional maximum of 256K per process may be used for zlib buffers.\n" "\n" "Size can be entered in bytes (default) or KB, MB, GB, TB, or PB where the multiplier is a power of 1024. For example, " "the case-insensitive value 32k (or 32KB) can be used instead of 32768.\n" "\n" "Allowed values, in bytes, are 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, and " "16777216." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST ( "16384", "32768", "65536", "131072", "262144", "524288", "1048576", "2097152", "4194304", "8388608", "16777216" ) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("4194304") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("checksum-page") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("backup") CFGDEFDATA_OPTION_HELP_SUMMARY("Validate data page checksums.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Directs pgBackRest to validate all data page checksums while backing up a cluster. This option is automatically " "enabled when data page checksums are enabled on the cluster.\n" "\n" "Failures in checksum validation will not abort a backup. Rather, warnings will be emitted in the log (and to the " "console with default settings) and the list of invalid pages will be stored in the backup manifest." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("cmd-ssh") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("general") CFGDEFDATA_OPTION_HELP_SUMMARY("Path to ssh client executable.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Use a specific SSH client when an alternate is desired or the ssh executable is not in $PATH." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("ssh") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("compress") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("general") CFGDEFDATA_OPTION_HELP_SUMMARY("Use gzip file compression.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Backup files are compatible with command-line gzip tools." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("1") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("compress-level") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeInteger) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("general") CFGDEFDATA_OPTION_HELP_SUMMARY("Compression level for stored files.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Sets the zlib level to be used for file compression when compress=y." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(0, 9) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("6") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("compress-level-network") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeInteger) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("general") CFGDEFDATA_OPTION_HELP_SUMMARY("Compression level for network transfer when compress=n.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Sets the zlib level to be used for protocol compression when compress=n and the database cluster is not on the same " "host as the repository. Protocol compression is used to reduce network traffic but can be disabled by setting " "compress-level-network=0. When compress=y the compress-level-network setting is ignored and compress-level is " "used instead so that the file is only compressed once. SSH compression is always disabled." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(0, 9) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("3") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("config") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("general") CFGDEFDATA_OPTION_HELP_SUMMARY("pgBackRest configuration file.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Use this option to specify a different configuration file than the default." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("/etc/pgbackrest/pgbackrest.conf") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("config-include-path") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypePath) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("general") CFGDEFDATA_OPTION_HELP_SUMMARY("Path to additional pgBackRest configuration files.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Configuration files existing in the specified location with extension .conf will be concatenated with the pgBackRest " "configuration file, resulting in one configuration file." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("/etc/pgbackrest/conf.d") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("config-path") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypePath) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("general") CFGDEFDATA_OPTION_HELP_SUMMARY("Base path of pgBackRest configuration files.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "This setting is used to override the default base path setting for the --config and --config-include-path options " "unless they are explicitly set on the command-line.\n" "\n" "For example, passing only --config-path=/conf/pgbackrest results in the --config default being set to " "/conf/pgbackrest/pgbackrest.conf and the --config-include-path default being set to /conf/pgbackrest/conf.d." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("/etc/pgbackrest") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("db-include") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeList) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("restore") CFGDEFDATA_OPTION_HELP_SUMMARY("Restore only specified databases.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "This feature allows only selected databases to be restored. Databases not specifically included will be restored as " "sparse, zeroed files to save space but still allow PostgreSQL to perform recovery. After recovery the databases " "that were not included will not be accessible but can be removed with the drop database command. \n" "NOTE: built-in databases (template0, template1, and postgres) are always restored.\n" "\n" "The --db-include option can be passed multiple times to specify more than one database to include." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("db-timeout") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeFloat) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("general") CFGDEFDATA_OPTION_HELP_SUMMARY("Database query timeout.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Sets the timeout, in seconds, for queries against the database. This includes the pg_start_backup() and " "pg_stop_backup() functions which can each take a substantial amount of time. Because of this the timeout should " "be kept high unless you know that these functions will return quickly (i.e. if you have set startfast=y and you " "know that the database cluster will not generate many WAL segments during the backup). \n" "NOTE: The db-timeout option must be less than the protocol-timeout option." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(0.1, 604800) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("1800") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("delta") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("general") CFGDEFDATA_OPTION_HELP_SUMMARY("Restore or backup using checksums.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "During a restore, by default the PostgreSQL data and tablespace directories are expected to be present but empty. " "This option performs a delta restore using checksums.\n" "\n" "During a backup, this option will use checksums instead of the timestamps to determine if files will be copied." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("0") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("exclude") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeList) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("backup") CFGDEFDATA_OPTION_HELP_SUMMARY("Exclude paths/files from the backup.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "All exclusions are relative to $PGDATA. If the exclusion ends with / then only files in the specified directory will " "be excluded, e.g. --exclude=junk/ will exclude all files in the $PGDATA/junk directory but include the directory " "itself. If the exclusion does not end with / then the file may match the exclusion exactly or match with / " "appended to the exclusion, e.g. --exclude=junk will exclude the $PGDATA/junk directory and all the files it " "contains.\n" "\n" "Be careful using this feature -- it is very easy to exclude something critical that will make the backup " "inconsistent. Be sure to test your restores!\n" "\n" "All excluded files will be logged at info level along with the exclusion rule. Be sure to audit the list of excluded " "files to ensure nothing unexpected is being excluded.\n" "NOTE: Exclusions are not honored on delta restores. Any files/directories that were excluded by the backup will be " "removed on delta restore.\n" "\n" "This option should not be used to exclude PostgreSQL logs from a backup. Logs can be moved out of the PGDATA " "directory using the PostgreSQL log_directory setting, which has the benefit of allowing logs to be preserved " "after a restore.\n" "\n" "Multiple exclusions may be specified on the command-line or in a configuration file." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("filter") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Filter output with a regular expression.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "The filter is applied against the file/path names before they are output." ) ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("force") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptOnline, "0" ) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("0") CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Force an offline backup.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "When used with --no-start-stop a backup will be run even if pgBackRest thinks that PostgreSQL is running. " "This option should be used with extreme care as it will likely result in a bad backup.\n" "\n" "There are some scenarios where a backup might still be desirable under these conditions. For example, if a " "server crashes and the database cluster volume can only be mounted read-only, it would be a good idea to " "take a backup even if postmaster.pid is present. In this case it would be better to revert to the prior " "backup and replay WAL, but possibly there is a very important transaction in a WAL segment that did not " "get archived." ) ) CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("0") CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Force a restore.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "By itself this option forces the PostgreSQL data and tablespace paths to be completely overwritten. In " "combination with --delta a timestamp/size delta will be performed instead of using checksums." ) ) CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("0") CFGDEFDATA_OPTION_OPTIONAL_INTERNAL(true) ) CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("0") CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Force stanza delete.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "If PostgreSQL is still running for the stanza, then this option can be used to force the stanza to be deleted " "from the repository." ) ) CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdStop) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("0") CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Force all pgBackRest processes to stop.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "This option will send TERM signals to all running pgBackRest processes to effect a graceful but immediate " "shutdown. Note that this will also shutdown processes that were initiated on another system but have " "remotes running on the current system. For instance, if a backup was started on the backup server then " "running stop --force on the database server will shutdown the backup process on the backup server." ) ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("host-id") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeInteger) CFGDEFDATA_OPTION_INTERNAL(true) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(1, 8) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("link-all") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("restore") CFGDEFDATA_OPTION_HELP_SUMMARY("Restore all symlinks.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "By default symlinked directories and files are restored as normal directories and files in $PGDATA. This is because " "it may not be safe to restore symlinks to their original destinations on a system other than where the original " "backup was performed. This option restores all the symlinks just as they were on the original system where the " "backup was performed." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("0") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("link-map") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeHash) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("restore") CFGDEFDATA_OPTION_HELP_SUMMARY("Modify the destination of a symlink.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Allows the destination file or path of a symlink to be changed on restore. This is useful for restoring to systems " "that have a different storage layout than the original system where the backup was generated." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("lock-path") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypePath) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("general") CFGDEFDATA_OPTION_HELP_SUMMARY("Path where lock files are stored.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "The lock path provides a location for pgBackRest to create lock files to prevent conflicting operations from being " "run concurrently." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("/tmp/pgbackrest") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("log-level-console") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("log") CFGDEFDATA_OPTION_HELP_SUMMARY("Level for console logging.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "The following log levels are supported:\n" "\n" "* off - No logging at all (not recommended)\n" "* error - Log only errors\n" "* warn - Log warnings and errors\n" "* info - Log info, warnings, and errors\n" "* detail - Log detail, info, warnings, and errors\n" "* debug - Log debug, detail, info, warnings, and errors\n" "* trace - Log trace (very verbose debugging), debug, info, warnings, and errors" ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST ( "off", "error", "warn", "info", "detail", "debug", "trace" ) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("warn") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("log-level-file") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("log") CFGDEFDATA_OPTION_HELP_SUMMARY("Level for file logging.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "The following log levels are supported:\n" "\n" "* off - No logging at all (not recommended)\n" "* error - Log only errors\n" "* warn - Log warnings and errors\n" "* info - Log info, warnings, and errors\n" "* detail - Log detail, info, warnings, and errors\n" "* debug - Log debug, detail, info, warnings, and errors\n" "* trace - Log trace (very verbose debugging), debug, info, warnings, and errors" ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST ( "off", "error", "warn", "info", "detail", "debug", "trace" ) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("info") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("log-level-stderr") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("log") CFGDEFDATA_OPTION_HELP_SUMMARY("Level for stderr logging.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Specifies which log levels will output to stderr rather than stdout (specified by log-level-console). The timestamp " "and process will not be output to stderr.\n" "\n" "The following log levels are supported:\n" "\n" "* off - No logging at all (not recommended)\n" "* error - Log only errors\n" "* warn - Log warnings and errors\n" "* info - Log info, warnings, and errors\n" "* detail - Log detail, info, warnings, and errors\n" "* debug - Log debug, detail, info, warnings, and errors\n" "* trace - Log trace (very verbose debugging), debug, info, warnings, and errors" ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST ( "off", "error", "warn", "info", "detail", "debug", "trace" ) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("warn") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("log-path") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypePath) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("log") CFGDEFDATA_OPTION_HELP_SUMMARY("Path where log files are stored.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "The log path provides a location for pgBackRest to store log files. Note that if log-level-file=off then no log path " "is required." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("/var/log/pgbackrest") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("log-subprocess") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("log") CFGDEFDATA_OPTION_HELP_SUMMARY("Enable logging in subprocesses.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Enable file logging for any subprocesses created by this process using the log level specified by log-level-file." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("0") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("log-timestamp") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("log") CFGDEFDATA_OPTION_HELP_SUMMARY("Enable timestamp in logging.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Enables the timestamp in console and file logging. This option is disabled in special situations such as generating " "documentation." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("1") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("manifest-save-threshold") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeSize) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("backup") CFGDEFDATA_OPTION_HELP_SUMMARY("Manifest save threshold during backup.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Defines how often the manifest will be saved during a backup. Saving the manifest is important because it stores the " "checksums and allows the resume function to work efficiently. The actual threshold used is 1% of the backup size " "or manifest-save-threshold, whichever is greater.\n" "\n" "Size can be entered in bytes (default) or KB, MB, GB, TB, or PB where the multiplier is a power of 1024." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(1, 1099511627776) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("1073741824") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("neutral-umask") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("general") CFGDEFDATA_OPTION_HELP_SUMMARY("Use a neutral umask.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Sets the umask to 0000 so modes in the repository are created in a sensible way. The default directory mode is 0750 " "and default file mode is 0640. The lock and log directories set the directory and file mode to 0770 and 0660 " "respectively.\n" "\n" "To use the executing user's umask instead specify neutral-umask=n in the config file or --no-neutral-umask on the " "command line." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("1") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("online") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("1") CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Perform an online backup.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "Specifying --no-online prevents pgBackRest from running pg_start_backup() and pg_stop_backup() on the " "database cluster. In order for this to work PostgreSQL should be shut down and pgBackRest will generate " "an error if it is not.\n" "\n" "The purpose of this option is to allow offline backups. The pg_xlog/pg_wal directory is copied as-is and " "archive-check is automatically disabled for the backup." ) ) CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Create on an online cluster.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "Specifying --no-online prevents pgBackRest from connecting to PostgreSQL when creating the stanza." ) ) CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Update an online cluster.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "Specifying --no-online prevents pgBackRest from connecting to PostgreSQL when upgrading the stanza." ) ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("output") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST ( "text", "json" ) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("text") CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Output format.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "The following output types are supported:\n" "\n" "* text - Human-readable summary of backup information.\n" "* json - Exhaustive machine-readable backup information in JSON format." ) ) CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST ( "text", "json" ) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("text") CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Output format.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "The following output types are supported:\n" "\n" "* text - Simple list with one file/link/path name on each line.\n" "* json - Detailed file/link/path information in JSON format." ) ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("pg-host") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionStanza) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(8) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("stanza") CFGDEFDATA_OPTION_HELP_SUMMARY("PostgreSQL host for operating remotely via SSH.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Used for backups where the PostgreSQL host is different from the repository host." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_PREFIX("pg") CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("db-host") CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_OPTIONAL_INTERNAL(true) ) CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_OPTIONAL_INTERNAL(true) ) CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_OPTIONAL_INTERNAL(true) ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("pg-host-cmd") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionStanza) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(8) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("stanza") CFGDEFDATA_OPTION_HELP_SUMMARY("pgBackRest exe path on the PostgreSQL host.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Required only if the path to pgbackrest is different on the local and PostgreSQL hosts. If not defined, the database " "host exe path will be set the same as the local exe path." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND(cfgDefOptPgHost) CFGDEFDATA_OPTION_OPTIONAL_PREFIX("pg") CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("db-cmd") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("pg-host-config") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionStanza) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(8) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("stanza") CFGDEFDATA_OPTION_HELP_SUMMARY("pgBackRest database host configuration file.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Sets the location of the configuration file on the PostgreSQL host. This is only required if the PostgreSQL host " "configuration file is in a different location than the local configuration file." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND(cfgDefOptPgHost) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("/etc/pgbackrest/pgbackrest.conf") CFGDEFDATA_OPTION_OPTIONAL_PREFIX("pg") CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("db-config") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("pg-host-config-include-path") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionStanza) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypePath) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(8) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("stanza") CFGDEFDATA_OPTION_HELP_SUMMARY("pgBackRest database host configuration include path.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Sets the location of the configuration include path on the PostgreSQL host. This is only required if the PostgreSQL " "host configuration include path is in a different location than the local configuration include path." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND(cfgDefOptPgHost) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("/etc/pgbackrest/conf.d") CFGDEFDATA_OPTION_OPTIONAL_PREFIX("pg") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("pg-host-config-path") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionStanza) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypePath) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(8) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("stanza") CFGDEFDATA_OPTION_HELP_SUMMARY("pgBackRest database host configuration path.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Sets the location of the configuration path on the PostgreSQL host. This is only required if the PostgreSQL host " "configuration path is in a different location than the local configuration path." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND(cfgDefOptPgHost) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("/etc/pgbackrest") CFGDEFDATA_OPTION_OPTIONAL_PREFIX("pg") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("pg-host-port") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionStanza) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeInteger) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(8) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("stanza") CFGDEFDATA_OPTION_HELP_SUMMARY("PostgreSQL host port when pg-host is set.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Use this option to specify a non-default port for the PostgreSQL host protocol. Currently only SSH is supported" ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(0, 65535) CFGDEFDATA_OPTION_OPTIONAL_DEPEND(cfgDefOptPgHost) CFGDEFDATA_OPTION_OPTIONAL_PREFIX("pg") CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("db-ssh-port") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("pg-host-user") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionStanza) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(8) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("stanza") CFGDEFDATA_OPTION_HELP_SUMMARY("PostgreSQL host logon user when pg-host is set.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "This user will also own the remote pgBackRest process and will initiate connections to PostgreSQL. For this to work " "correctly the user should be the PostgreSQL database cluster owner which is generally postgres, the default." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND(cfgDefOptPgHost) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("postgres") CFGDEFDATA_OPTION_OPTIONAL_PREFIX("pg") CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("db-user") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("pg-path") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionStanza) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypePath) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(8) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("stanza") CFGDEFDATA_OPTION_HELP_SUMMARY("PostgreSQL data directory.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "This should be the same as the data_directory setting in postgresql.conf. Even though this value can be read from " "postgresql.conf or PostgreSQL it is prudent to set it in case those resources are not available during a restore " "or offline backup scenario.\n" "\n" "The pg-path option is tested against the value reported by PostgreSQL on every online backup so it should always be " "current." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_PREFIX("pg") CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("db-path") CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_OPTIONAL_REQUIRED(false) ) CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_OPTIONAL_REQUIRED(false) ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("pg-port") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionStanza) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeInteger) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(8) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("stanza") CFGDEFDATA_OPTION_HELP_SUMMARY("PostgreSQL port.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Port that PostgreSQL is running on. This usually does not need to be specified as most PostgreSQL clusters run on the " "default port." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(0, 65535) CFGDEFDATA_OPTION_OPTIONAL_DEPEND(cfgDefOptPgPath) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("5432") CFGDEFDATA_OPTION_OPTIONAL_PREFIX("pg") CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("db-port") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("pg-socket-path") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionStanza) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypePath) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(8) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("stanza") CFGDEFDATA_OPTION_HELP_SUMMARY("PostgreSQL unix socket path.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "The unix socket directory that was specified when PostgreSQL was started. pgBackRest will automatically look in the " "standard location for your OS so there is usually no need to specify this setting unless the socket directory was " "explicitly modified with the unix_socket_directory setting in postgresql.conf." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(0, 65535) CFGDEFDATA_OPTION_OPTIONAL_DEPEND(cfgDefOptPgPath) CFGDEFDATA_OPTION_OPTIONAL_PREFIX("pg") CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("db-socket-path") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("pg-user") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionStanza) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(8) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("stanza") CFGDEFDATA_OPTION_HELP_SUMMARY("PostgreSQL database user.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "The database user name used when connecting to PostgreSQL. If not specified pgBackRest will connect with the local OS " "user or PGUSER." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND(cfgDefOptPgPath) CFGDEFDATA_OPTION_OPTIONAL_PREFIX("pg") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("process") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeInteger) CFGDEFDATA_OPTION_INTERNAL(true) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(0, 1024) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("process-max") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeInteger) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("general") CFGDEFDATA_OPTION_HELP_SUMMARY("Max processes to use for compress/transfer.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Each process will perform compression and transfer to make the command run faster, but don't set process-max so high " "that it impacts database performance." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(1, 999) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("1") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("protocol-timeout") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeFloat) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("general") CFGDEFDATA_OPTION_HELP_SUMMARY("Protocol timeout.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Sets the timeout, in seconds, that the local or remote process will wait for a new message to be received on the " "protocol layer. This prevents processes from waiting indefinitely for a message. \n" "NOTE: The protocol-timeout option must be greater than the db-timeout option." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(0.1, 604800) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("1830") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("recovery-option") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeHash) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("restore") CFGDEFDATA_OPTION_HELP_SUMMARY("Set an option in recovery.conf.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "See http://www.postgresql.org/docs/X.X/static/recovery-config.html for details on recovery.conf options (replace X.X " "with your PostgreSQL version). This option can be used multiple times.\n" "NOTE: The restore_command option will be automatically generated but can be overridden with this option. Be careful " "about specifying your own restore_command as pgBackRest is designed to handle this for you. Target Recovery " "options (recovery_target_name, recovery_target_time, etc.) are generated automatically by pgBackRest and should " "not be set with this option.\n" "\n" "Since pgBackRest does not start PostgreSQL after writing the recovery.conf file, it is always possible to edit/check " "recovery.conf before manually restarting." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptType, "default", "immediate", "name", "time", "standby", "xid" ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("recurse") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("0") CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Include all subpaths in output.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "All subpaths and their files will be included in the output." ) ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("remote-type") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(true) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST ( "pg", "repo" ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-cipher-pass") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(true) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("Repository cipher passphrase.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Passphrase used to encrypt/decrypt files of the repository." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptRepoCipherType, "aes-256-cbc" ) CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-cipher-type") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("Cipher used to encrypt the repository.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "The following repository types are supported:\n" "\n" "* none - The repository is not encrypted\n" "* aes-256-cbc - Advanced Encryption Standard with 256 bit key length\n" "\n" "Note that encryption is always performed client-side even if the repository type (e.g. S3) supports encryption." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST ( "none", "aes-256-cbc" ) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("none") CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-hardlink") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("Hardlink files between backups in the repository.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Enable hard-linking of files in differential and incremental backups to their full backups. This gives the appearance " "that each backup is a full backup at the file-system level. Be careful, though, because modifying files that are " "hard-linked can affect all the backups in the set." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("0") CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("hardlink") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-host") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("Repository host when operating remotely via SSH.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Make sure that trusted SSH authentication is configured between the PostgreSQL host and the repository host.\n" "\n" "When backing up and archiving to a locally mounted filesystem this setting is not required." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("backup-host") CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_OPTIONAL_INTERNAL(true) ) CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_OPTIONAL_INTERNAL(true) ) CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_OPTIONAL_INTERNAL(true) ) CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_OPTIONAL_INTERNAL(true) ) CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_OPTIONAL_INTERNAL(true) ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-host-cmd") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("pgBackRest exe path on the repository host.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Required only if the path to pgbackrest is different on the local and repository hosts. If not defined, the " "repository host exe path will be set the same as the local exe path." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND(cfgDefOptRepoHost) CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("backup-cmd") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-host-config") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("pgBackRest repository host configuration file.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Sets the location of the configuration file on the repository host. This is only required if the repository host " "configuration file is in a different location than the local configuration file." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND(cfgDefOptRepoHost) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("/etc/pgbackrest/pgbackrest.conf") CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("backup-config") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-host-config-include-path") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypePath) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("pgBackRest repository host configuration include path.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Sets the location of the configuration include path on the repository host. This is only required if the repository " "host configuration include path is in a different location than the local configuration include path." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND(cfgDefOptRepoHost) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("/etc/pgbackrest/conf.d") CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-host-config-path") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypePath) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("pgBackRest repository host configuration path.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Sets the location of the configuration path on the repository host. This is only required if the repository host " "configuration path is in a different location than the local configuration path." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND(cfgDefOptRepoHost) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("/etc/pgbackrest") CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-host-port") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeInteger) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("Repository host port when repo-host is set.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Use this option to specify a non-default port for the repository host protocol. Currently only SSH is supported" ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(0, 65535) CFGDEFDATA_OPTION_OPTIONAL_DEPEND(cfgDefOptRepoHost) CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("backup-ssh-port") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-host-user") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("Repository host user when repo-host is set.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Defines the user that will be used for operations on the repository host. Preferably this is not the postgres user " "but rather some other user like pgbackrest. If PostgreSQL runs on the repository host the postgres user can be " "placed in the pgbackrest group so it has read permissions on the repository without being able to damage the " "contents accidentally." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND(cfgDefOptRepoHost) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("pgbackrest") CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("backup-user") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-path") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypePath) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("Path where backups and archive are stored.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "The repository is where pgBackRest stores backups and archives WAL segments.\n" "\n" "It may be difficult to estimate in advance how much space you'll need. The best thing to do is take some backups then " "record the size of different types of backups (full/incr/diff) and measure the amount of WAL generated per day. " "This will give you a general idea of how much space you'll need, though of course requirements will likely change " "over time as your database evolves." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("/var/lib/pgbackrest") CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-retention-archive") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeInteger) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("Number of backups worth of continuous WAL to retain.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "NOTE: WAL segments required to make a backup consistent are always retained until the backup is expired regardless of " "how this option is configured.\n" "\n" "If this value is not set, then the archive to expire will default to the repo-retention-full (or repo-retention-diff) " "value corresponding to the repo-retention-archive-type if set to full (or diff). This will ensure that WAL is " "only expired for backups that are already expired.\n" "\n" "This option must be set if repo-retention-archive-type is set to incr. If disk space is at a premium, then this " "setting, in conjunction with repo-retention-archive-type, can be used to aggressively expire WAL segments. " "However, doing so negates the ability to perform PITR from the backups with expired WAL and is therefore not " "recommended." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(1, 9999999) CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("retention-archive") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-retention-archive-type") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("Backup type for WAL retention.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "If set to full pgBackRest will keep archive logs for the number of full backups defined by repo-retention-archive. If " "set to diff (differential) pgBackRest will keep archive logs for the number of full and differential backups " "defined by repo-retention-archive, meaning if the last backup taken was a full backup, it will be counted as a " "differential for the purpose of repo-retention. If set to incr (incremental) pgBackRest will keep archive logs " "for the number of full, differential, and incremental backups defined by repo-retention-archive. It is " "recommended that this setting not be changed from the default which will only expire WAL in conjunction with " "expiring full backups." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST ( "full", "diff", "incr" ) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("full") CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("retention-archive-type") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-retention-diff") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeInteger) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("Number of differential backups to retain.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "When a differential backup expires, all incremental backups associated with the differential backup will also expire. " "When not defined all differential backups will be kept until the full backups they depend on expire." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(1, 9999999) CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("retention-diff") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-retention-full") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeInteger) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("Number of full backups to retain.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "When a full backup expires, all differential and incremental backups associated with the full backup will also " "expire. When the option is not defined a warning will be issued. If indefinite retention is desired then set the " "option to the max value." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(1, 9999999) CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("retention-full") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-s3-bucket") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("S3 repository bucket.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "S3 bucket used to store the repository.\n" "\n" "pgBackRest repositories can be stored in the bucket root by setting repo-path=/ but it is usually best to specify a " "prefix, such as /repo, so logs and other AWS generated content can also be stored in the bucket." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptRepoType, "s3" ) CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-s3-ca-file") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("S3 SSL CA File.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Use a CA file other than the system default." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptRepoType, "s3" ) CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-s3-ca-path") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypePath) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("S3 SSL CA Path.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Use a CA path other than the system default." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptRepoType, "s3" ) CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-s3-endpoint") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("S3 repository endpoint.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "The AWS end point should be valid for the selected region." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptRepoType, "s3" ) CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-s3-host") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("S3 repository host.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Connect to a host other than the end point. This is typically used for testing." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptRepoType, "s3" ) CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-s3-key") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(true) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("S3 repository access key.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "AWS key used to access this bucket." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptRepoType, "s3" ) CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-s3-key-secret") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(true) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("S3 repository secret access key.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "AWS secret key used to access this bucket." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptRepoType, "s3" ) CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-s3-port") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeInteger) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("S3 repository port.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Port to use when connecting to the endpoint (or host if specified)." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(1, 65535) CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptRepoType, "s3" ) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("443") CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-s3-region") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("S3 repository region.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "The AWS region where the bucket was created." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptRepoType, "s3" ) CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-s3-token") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(true) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("S3 repository security token.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "AWS security token used with temporary credentials." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptRepoType, "s3" ) CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-s3-uri-style") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("S3 URI Style.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "The following URI styles are supported:\n" "\n" "* host - Connect to bucket.endpoint host.\n" "* path - Connect to endpoint host and prepend bucket to URIs." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST ( "host", "path" ) CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptRepoType, "s3" ) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("host") CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-s3-verify-tls") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("Verify S3 server certificate.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Disables verification of the S3 server certificate. This should only be used for testing or other scenarios where a " "certificate has been self-signed." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptRepoType, "s3" ) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("1") CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT("repo-s3-verify-ssl") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("repo-type") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("repository") CFGDEFDATA_OPTION_HELP_SUMMARY("Type of storage used for the repository.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "The following repository types are supported:\n" "\n" "* cifs - Like posix, but disables links and directory fsyncs\n" "* posix - Posix-compliant file systems\n" "* s3 - AWS Simple Storage Service" ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST ( "cifs", "posix", "s3" ) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("posix") CFGDEFDATA_OPTION_OPTIONAL_PREFIX("repo") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("resume") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("backup") CFGDEFDATA_OPTION_HELP_SUMMARY("Allow resume of failed backup.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Defines whether the resume feature is enabled. Resume can greatly reduce the amount of time required to run a backup " "after a previous backup of the same type has failed. It adds complexity, however, so it may be desirable to " "disable in environments that do not require the feature." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("1") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("set") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_OPTIONAL_DEPEND(cfgDefOptStanza) CFGDEFDATA_OPTION_OPTIONAL_REQUIRED(false) CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Backup set to detail.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "Details include a list of databases (with OIDs) in the backup set (excluding template databases), tablespaces " "(with OIDs) with the destination where they will be restored by default, and symlinks with the " "destination where they will be restored when --link-all is specified." ) ) CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("latest") CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Backup set to restore.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "The backup set to be restored. latest will restore the latest backup, otherwise provide the name of the " "backup to restore." ) ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("sort") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLs) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST ( "none", "asc", "desc" ) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("asc") CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdLs) CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Sort output ascending, descending, or none.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "The following sort types are supported:\n" "\n" "* asc - sort ascending.\n" "* desc - sort descending.\n" "* none - no sorting." ) ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("spool-path") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypePath) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("general") CFGDEFDATA_OPTION_HELP_SUMMARY("Path where transient data is stored.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "This path is used to store data for the asynchronous archive-push and archive-get command.\n" "\n" "The asynchronous archive-push command writes acknowledgements into the spool path when it has successfully stored WAL " "in the archive (and errors on failure) so the foreground process can quickly notify PostgreSQL. Acknowledgement " "files are very small (zero on success and a few hundred bytes on error).\n" "\n" "The asynchronous archive-push process queues WAL in the spool path so it can be provided very quickly when PostgreSQL " "requests it. Moving files to PostgreSQL is most efficient when the spool path is on the same filesystem as " "pg_xlog/pg_wal.\n" "\n" "The data stored in the spool path is not strictly temporary since it can and should survive a reboot. However, loss " "of the data in the spool path is not a problem. pgBackRest will simply recheck each WAL segment to ensure it is " "safely archived for archive-push and rebuild the queue for archive-get.\n" "\n" "The spool path is intended to be located on a local Posix-compatible filesystem, not a remote filesystem such as NFS " "or CIFS." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("/var/spool/pgbackrest") CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptArchiveAsync, "1" ) ) CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptArchiveAsync, "1" ) ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("stanza") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("general") CFGDEFDATA_OPTION_HELP_SUMMARY("Defines the stanza.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "A stanza is the configuration for a PostgreSQL database cluster that defines where it is located, how it will be " "backed up, archiving options, etc. Most db servers will only have one Postgres database cluster and therefore one " "stanza, whereas backup servers will have a stanza for every database cluster that needs to be backed up.\n" "\n" "It is tempting to name the stanza after the primary cluster but a better name describes the databases contained in " "the cluster. Because the stanza name will be used for the primary and all replicas it is more appropriate to " "choose a name that describes the actual function of the cluster, such as app or dw, rather than the local cluster " "name, such as main or prod." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_OPTIONAL_REQUIRED(false) ) CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdStart) CFGDEFDATA_OPTION_OPTIONAL_REQUIRED(false) ) CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdStop) CFGDEFDATA_OPTION_OPTIONAL_REQUIRED(false) ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("start-fast") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("backup") CFGDEFDATA_OPTION_HELP_SUMMARY("Force a checkpoint to start backup quickly.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Forces a checkpoint (by passing y to the fast parameter of pg_start_backup()) so the backup begins immediately. " "Otherwise the backup will start after the next regular checkpoint.\n" "\n" "This feature only works in PostgreSQL >= 8.4." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("0") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("stop-auto") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("backup") CFGDEFDATA_OPTION_HELP_SUMMARY("Stop prior failed backup on new backup.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "This will only be done if an exclusive advisory lock can be acquired to demonstrate that the prior failed backup " "process has really stopped.\n" "\n" "This feature relies on pg_is_in_backup() so only works on PostgreSQL >= 9.3.\n" "\n" "This feature is not supported for PostgreSQL >= 9.6 since backups are run in non-exclusive mode.\n" "\n" "The setting is disabled by default because it assumes that pgBackRest is the only process doing exclusive online " "backups. It depends on an advisory lock that only pgBackRest sets so it may abort other processes that do " "exclusive online backups. Note that base_backup and pg_dump are safe to use with this setting because they do not " "call pg_start_backup() so are not exclusive." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("0") ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("tablespace-map") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeHash) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("restore") CFGDEFDATA_OPTION_HELP_SUMMARY("Restore a tablespace into the specified directory.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "Moves a tablespace to a new location during the restore. This is useful when tablespace locations are not the same on " "a replica, or an upgraded system has different mount points.\n" "\n" "Since PostgreSQL 9.2 tablespace locations are not stored in pg_tablespace so moving tablespaces can be done with " "impunity. However, moving a tablespace to the data_directory is not recommended and may cause problems. For more " "information on moving tablespaces http://www.databasesoup.com/2013/11/moving-tablespaces.html is a good resource." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("tablespace-map-all") CFGDEFDATA_OPTION_REQUIRED(false) CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_HELP_SECTION("restore") CFGDEFDATA_OPTION_HELP_SUMMARY("Restore all tablespaces into the specified directory.") CFGDEFDATA_OPTION_HELP_DESCRIPTION ( "By default tablespaces are restored into their original locations and while this behavior can be modified by with the " "tablespace-map open it is sometime preferable to remap all tablespaces to a new directory all at once. This is " "particularly useful for development or staging systems that may not have the same storage layout as the original " "system where the backup was generated.\n" "\n" "The path specified will be the parent path used to create all the tablespaces in the backup." ) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("target") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptType, "name", "time", "xid" ) CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Recovery target.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "Defines the recovery target when --type is name, xid, or time." ) ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("target-action") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST ( "pause", "promote", "shutdown" ) CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptType, "immediate", "name", "time", "xid" ) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("pause") CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Action to take when recovery target is reached.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "This option is effective when hot_standby=on is configured in postgresql.conf, otherwise the cluster will be " "promoted when the target is reached or there is no more WAL in the archive.\n" "\n" "The following actions are supported:\n" "\n" "* pause - pause when recovery target is reached. (PostgreSQL >= 9.1)\n" "* promote - promote and switch timeline when recovery target is reached. (PostgreSQL >= 9.1)\n" "* shutdown - shutdown server when recovery target is reached. (PostgreSQL >= 9.5)" ) ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("target-exclusive") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeBoolean) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptType, "time", "xid" ) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("0") CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Stop just before the recovery target is reached.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "Defines whether recovery to the target would be exclusive (the default is inclusive) and is only valid when " "--type is time or xid. For example, using --target-exclusive would exclude the contents of transaction " "1007 when --type=xid and --target=1007. See the recovery_target_inclusive option in the PostgreSQL docs " "for more information." ) ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("target-timeline") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST ( cfgDefOptType, "default", "name", "standby", "time", "xid" ) CFGDEFDATA_OPTION_OPTIONAL_REQUIRED(false) CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Recover along a timeline.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "See recovery_target_timeline in the PostgreSQL docs for more information." ) ) ) ) // ----------------------------------------------------------------------------------------------------------------------------- CFGDEFDATA_OPTION ( CFGDEFDATA_OPTION_NAME("type") CFGDEFDATA_OPTION_REQUIRED(true) CFGDEFDATA_OPTION_SECTION(cfgDefSectionCommandLine) CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString) CFGDEFDATA_OPTION_INTERNAL(false) CFGDEFDATA_OPTION_INDEX_TOTAL(1) CFGDEFDATA_OPTION_SECURE(false) CFGDEFDATA_OPTION_COMMAND_LIST ( CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) ) CFGDEFDATA_OPTION_OPTIONAL_LIST ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST ( "full", "diff", "incr" ) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("incr") CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Backup type.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "The following backup types are supported:\n" "\n" "* full - all database cluster files will be copied and there will be no dependencies on previous backups.\n" "* incr - incremental from the last successful backup.\n" "* diff - like an incremental backup but always based on the last full backup." ) ) CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE ( CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST ( "name", "time", "xid", "preserve", "none", "immediate", "default", "standby" ) CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("default") CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY("Recovery type.") CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION ( "The following recovery types are supported:\n" "\n" "* default - recover to the end of the archive stream.\n" "* immediate - recover only until the database becomes consistent. This option is only supported on PostgreSQL " ">= 9.4.\n" "* name - recover the restore point specified in --target.\n" "* xid - recover to the transaction id specified in --target.\n" "* time - recover to the time specified in --target.\n" "* preserve - preserve the existing recovery.conf file.\n" "* standby - add standby_mode=on to recovery.conf file so cluster will start in standby mode.\n" "* none - no recovery.conf file is written so PostgreSQL will attempt to achieve consistency using WAL " "segments present in pg_xlog/pg_wal. Provide the required WAL segments or use the archive-copy setting to " "include them with the backup." ) ) ) ) ) pgbackrest-release-2.24/src/config/define.auto.h000066400000000000000000000105151362531507100216170ustar00rootroot00000000000000/*********************************************************************************************************************************** Command and Option Definition Automatically generated by Build.pm -- do not modify directly. ***********************************************************************************************************************************/ #ifndef CONFIG_DEFINE_AUTO_H #define CONFIG_DEFINE_AUTO_H /*********************************************************************************************************************************** Command define enum ***********************************************************************************************************************************/ typedef enum { cfgDefCmdArchiveGet, cfgDefCmdArchivePush, cfgDefCmdBackup, cfgDefCmdCheck, cfgDefCmdExpire, cfgDefCmdHelp, cfgDefCmdInfo, cfgDefCmdLs, cfgDefCmdRestore, cfgDefCmdStanzaCreate, cfgDefCmdStanzaDelete, cfgDefCmdStanzaUpgrade, cfgDefCmdStart, cfgDefCmdStop, cfgDefCmdVersion, } ConfigDefineCommand; /*********************************************************************************************************************************** Option type define enum ***********************************************************************************************************************************/ typedef enum { cfgDefOptTypeBoolean, cfgDefOptTypeFloat, cfgDefOptTypeHash, cfgDefOptTypeInteger, cfgDefOptTypeList, cfgDefOptTypePath, cfgDefOptTypeSize, cfgDefOptTypeString, } ConfigDefineOptionType; /*********************************************************************************************************************************** Option define enum ***********************************************************************************************************************************/ typedef enum { cfgDefOptArchiveAsync, cfgDefOptArchiveCheck, cfgDefOptArchiveCopy, cfgDefOptArchiveGetQueueMax, cfgDefOptArchivePushQueueMax, cfgDefOptArchiveTimeout, cfgDefOptBackupStandby, cfgDefOptBufferSize, cfgDefOptChecksumPage, cfgDefOptCmdSsh, cfgDefOptCompress, cfgDefOptCompressLevel, cfgDefOptCompressLevelNetwork, cfgDefOptConfig, cfgDefOptConfigIncludePath, cfgDefOptConfigPath, cfgDefOptDbInclude, cfgDefOptDbTimeout, cfgDefOptDelta, cfgDefOptExclude, cfgDefOptFilter, cfgDefOptForce, cfgDefOptHostId, cfgDefOptLinkAll, cfgDefOptLinkMap, cfgDefOptLockPath, cfgDefOptLogLevelConsole, cfgDefOptLogLevelFile, cfgDefOptLogLevelStderr, cfgDefOptLogPath, cfgDefOptLogSubprocess, cfgDefOptLogTimestamp, cfgDefOptManifestSaveThreshold, cfgDefOptNeutralUmask, cfgDefOptOnline, cfgDefOptOutput, cfgDefOptPgHost, cfgDefOptPgHostCmd, cfgDefOptPgHostConfig, cfgDefOptPgHostConfigIncludePath, cfgDefOptPgHostConfigPath, cfgDefOptPgHostPort, cfgDefOptPgHostUser, cfgDefOptPgPath, cfgDefOptPgPort, cfgDefOptPgSocketPath, cfgDefOptPgUser, cfgDefOptProcess, cfgDefOptProcessMax, cfgDefOptProtocolTimeout, cfgDefOptRecoveryOption, cfgDefOptRecurse, cfgDefOptRemoteType, cfgDefOptRepoCipherPass, cfgDefOptRepoCipherType, cfgDefOptRepoHardlink, cfgDefOptRepoHost, cfgDefOptRepoHostCmd, cfgDefOptRepoHostConfig, cfgDefOptRepoHostConfigIncludePath, cfgDefOptRepoHostConfigPath, cfgDefOptRepoHostPort, cfgDefOptRepoHostUser, cfgDefOptRepoPath, cfgDefOptRepoRetentionArchive, cfgDefOptRepoRetentionArchiveType, cfgDefOptRepoRetentionDiff, cfgDefOptRepoRetentionFull, cfgDefOptRepoS3Bucket, cfgDefOptRepoS3CaFile, cfgDefOptRepoS3CaPath, cfgDefOptRepoS3Endpoint, cfgDefOptRepoS3Host, cfgDefOptRepoS3Key, cfgDefOptRepoS3KeySecret, cfgDefOptRepoS3Port, cfgDefOptRepoS3Region, cfgDefOptRepoS3Token, cfgDefOptRepoS3UriStyle, cfgDefOptRepoS3VerifyTls, cfgDefOptRepoType, cfgDefOptResume, cfgDefOptSet, cfgDefOptSort, cfgDefOptSpoolPath, cfgDefOptStanza, cfgDefOptStartFast, cfgDefOptStopAuto, cfgDefOptTablespaceMap, cfgDefOptTablespaceMapAll, cfgDefOptTarget, cfgDefOptTargetAction, cfgDefOptTargetExclusive, cfgDefOptTargetTimeline, cfgDefOptType, } ConfigDefineOption; #endif pgbackrest-release-2.24/src/config/define.c000066400000000000000000001130401362531507100206400ustar00rootroot00000000000000/*********************************************************************************************************************************** Command and Option Configuration Definition ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include "common/debug.h" #include "common/error.h" #include "config/define.h" /*********************************************************************************************************************************** Define global section name ***********************************************************************************************************************************/ STRING_EXTERN(CFGDEF_SECTION_GLOBAL_STR, CFGDEF_SECTION_GLOBAL); /*********************************************************************************************************************************** Map command names to ids and vice versa. ***********************************************************************************************************************************/ typedef struct ConfigDefineCommandData { const char *name; // Command name const char *helpSummary; // Brief summary of the command const char *helpDescription; // Full description of the command } ConfigDefineCommandData; // Command macros are intended to make the command definitions easy to read and to produce good diffs. //---------------------------------------------------------------------------------------------------------------------------------- #define CFGDEFDATA_COMMAND_LIST(...) \ {__VA_ARGS__}; #define CFGDEFDATA_COMMAND(...) \ {__VA_ARGS__}, #define CFGDEFDATA_COMMAND_NAME(nameParam) \ .name = nameParam, #define CFGDEFDATA_COMMAND_HELP_SUMMARY(helpSummaryParam) \ .helpSummary = helpSummaryParam, #define CFGDEFDATA_COMMAND_HELP_DESCRIPTION(helpDescriptionParam) \ .helpDescription = helpDescriptionParam, /*********************************************************************************************************************************** Define how an option is parsed and interacts with other options. ***********************************************************************************************************************************/ typedef struct ConfigDefineOptionData { const char *name; // Option name unsigned int type:3; // Option type (e.g. string, int, boolean, etc.) unsigned int internal:1; // Is the option only used internally? unsigned int indexTotal:4; // 0 normally, > 0 if indexed option (e.g. pg1-*) unsigned int section:2; // Config section (e.g. global, stanza, cmd-line) bool required:1; // Is the option required? bool secure:1; // Does the option need to be redacted on logs and cmd-line? unsigned int commandValid:20; // Bitmap for commands that the option is valid for const char *helpSection; // Classify the option const char *helpSummary; // Brief summary of the option const char *helpDescription; // Full description of the option const void **data; // Optional data and command overrides } ConfigDefineOptionData; // Option macros are intended to make the command definitions easy to read and to produce good diffs. //---------------------------------------------------------------------------------------------------------------------------------- #define CFGDEFDATA_OPTION_LIST(...) \ {__VA_ARGS__}; #define CFGDEFDATA_OPTION(...) \ {__VA_ARGS__}, #define CFGDEFDATA_OPTION_NAME(nameParam) \ .name = nameParam, #define CFGDEFDATA_OPTION_INDEX_TOTAL(indexTotalParam) \ .indexTotal = indexTotalParam, #define CFGDEFDATA_OPTION_INTERNAL(internalParam) \ .internal = internalParam, #define CFGDEFDATA_OPTION_REQUIRED(requiredParam) \ .required = requiredParam, #define CFGDEFDATA_OPTION_SECTION(sectionParam) \ .section = sectionParam, #define CFGDEFDATA_OPTION_SECURE(secureParam) \ .secure = secureParam, #define CFGDEFDATA_OPTION_TYPE(typeParam) \ .type = typeParam, #define CFGDEFDATA_OPTION_HELP_SECTION(helpSectionParam) \ .helpSection = helpSectionParam, #define CFGDEFDATA_OPTION_HELP_SUMMARY(helpSummaryParam) \ .helpSummary = helpSummaryParam, #define CFGDEFDATA_OPTION_HELP_DESCRIPTION(helpDescriptionParam) \ .helpDescription = helpDescriptionParam, // Define additional types of data that can be associated with an option. Because these types are rare they are not give dedicated // fields and are instead packed into an array which is read at runtime. This may seem inefficient but they are only accessed a // single time during parse so space efficiency is more important than performance. //---------------------------------------------------------------------------------------------------------------------------------- typedef enum { configDefDataTypeEnd, // Indicates there is no more data configDefDataTypeAllowList, configDefDataTypeAllowRange, configDefDataTypeCommand, configDefDataTypeDefault, configDefDataTypeDepend, configDefDataTypeInternal, configDefDataTypePrefix, configDefDataTypeRequired, configDefDataTypeHelpNameAlt, configDefDataTypeHelpSummary, configDefDataTypeHelpDescription, } ConfigDefineDataType; #define CFGDATA_OPTION_OPTIONAL_PUSH_LIST(type, size, data, ...) \ (const void *)((uint32_t)type << 24 | (uint32_t)size << 16 | (uint32_t)data), __VA_ARGS__ #define CFGDATA_OPTION_OPTIONAL_PUSH(type, size, data) \ (const void *)((uint32_t)type << 24 | (uint32_t)size << 16 | (uint32_t)data) #define CFGDEFDATA_OPTION_COMMAND_LIST(...) \ .commandValid = 0 __VA_ARGS__, #define CFGDEFDATA_OPTION_COMMAND(commandParam) \ | (1 << commandParam) #define CFGDEFDATA_OPTION_OPTIONAL_LIST(...) \ .data = (const void *[]){__VA_ARGS__ NULL}, #define CFGDEFDATA_OPTION_OPTIONAL_DEFAULT(defaultValue) \ CFGDATA_OPTION_OPTIONAL_PUSH_LIST(configDefDataTypeDefault, 1, 0, defaultValue), #define CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST(...) \ CFGDATA_OPTION_OPTIONAL_PUSH_LIST( \ configDefDataTypeAllowList, sizeof((const char *[]){__VA_ARGS__}) / sizeof(const char *), 0, __VA_ARGS__), #define CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(rangeMinParam, rangeMaxParam) \ CFGDATA_OPTION_OPTIONAL_PUSH_LIST( \ configDefDataTypeAllowRange, 4, 0, \ (const void *)(intptr_t)(int32_t)(((int64_t)((double)rangeMinParam * 100)) % 1000000000L), \ (const void *)(intptr_t)(int32_t)(((int64_t)((double)rangeMinParam * 100)) / 1000000000L), \ (const void *)(intptr_t)(int32_t)(((int64_t)((double)rangeMaxParam * 100)) % 1000000000L), \ (const void *)(intptr_t)(int32_t)(((int64_t)((double)rangeMaxParam * 100)) / 1000000000L)), #define CFGDEFDATA_OPTION_OPTIONAL_PREFIX(prefixParam) \ CFGDATA_OPTION_OPTIONAL_PUSH_LIST(configDefDataTypePrefix, 1, 0, prefixParam), #define CFGDEFDATA_OPTION_OPTIONAL_DEPEND(optionDepend) \ CFGDATA_OPTION_OPTIONAL_PUSH(configDefDataTypeDepend, 0, optionDepend), #define CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST(optionDepend, ...) \ CFGDATA_OPTION_OPTIONAL_PUSH_LIST( \ configDefDataTypeDepend, sizeof((const char *[]){__VA_ARGS__}) / sizeof(const char *), optionDepend, __VA_ARGS__), #define CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRIDE(...) \ __VA_ARGS__ #define CFGDEFDATA_OPTION_OPTIONAL_COMMAND(command) \ CFGDATA_OPTION_OPTIONAL_PUSH(configDefDataTypeCommand, 0, command), #define CFGDEFDATA_OPTION_OPTIONAL_INTERNAL(commandOptionInternal) \ CFGDATA_OPTION_OPTIONAL_PUSH(configDefDataTypeInternal, 0, commandOptionInternal), #define CFGDEFDATA_OPTION_OPTIONAL_REQUIRED(commandOptionRequired) \ CFGDATA_OPTION_OPTIONAL_PUSH(configDefDataTypeRequired, 0, commandOptionRequired), #define CFGDEFDATA_OPTION_OPTIONAL_HELP_NAME_ALT(...) \ CFGDATA_OPTION_OPTIONAL_PUSH_LIST( \ configDefDataTypeHelpNameAlt, sizeof((const char *[]){__VA_ARGS__}) / sizeof(const char *), 0, __VA_ARGS__), #define CFGDEFDATA_OPTION_OPTIONAL_HELP_SUMMARY(helpSummaryParam) \ CFGDATA_OPTION_OPTIONAL_PUSH_LIST(configDefDataTypeHelpSummary, 1, 0, helpSummaryParam), #define CFGDEFDATA_OPTION_OPTIONAL_HELP_DESCRIPTION(helpDescriptionParam) \ CFGDATA_OPTION_OPTIONAL_PUSH_LIST(configDefDataTypeHelpDescription, 1, 0, helpDescriptionParam), /*********************************************************************************************************************************** Include the automatically generated configuration data. ***********************************************************************************************************************************/ #include "config/define.auto.c" /*********************************************************************************************************************************** Find optional data for a command and option. ***********************************************************************************************************************************/ static void cfgDefDataFind( ConfigDefineDataType typeFind, ConfigDefineCommand commandDefId, const void **dataList, bool *dataDefFound, int *dataDef, const void ***dataDefList, unsigned int *dataDefListSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, typeFind); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_PARAM_PP(VOID, dataList); FUNCTION_TEST_PARAM_P(BOOL, dataDefFound); FUNCTION_TEST_PARAM_P(INT, dataDef); FUNCTION_TEST_PARAM_PP(VOID, dataDefList); FUNCTION_TEST_PARAM_P(UINT, dataDefListSize); FUNCTION_TEST_END(); ASSERT(dataDefFound != NULL); ASSERT(dataDef != NULL); ASSERT(dataDefList != NULL); ASSERT(dataDefListSize != NULL); *dataDefFound = false; // Only proceed if there is data if (dataList != NULL) { ConfigDefineDataType type; unsigned int offset = 0; unsigned int size; int data; unsigned int commandCurrent = UINT_MAX; // Loop through all data do { // Extract data type = (ConfigDefineDataType)(((uintptr_t)dataList[offset] >> 24) & 0xFF); size = ((uintptr_t)dataList[offset] >> 16) & 0xFF; data = (uintptr_t)dataList[offset] & 0xFFFF; // If a command block then set the current command if (type == configDefDataTypeCommand) { // If data was not found in the expected command then there's nothing more to look for if (commandCurrent == commandDefId) break; // Set the current command commandCurrent = (unsigned int)data; } // Only find type if not in a command block yet or in the expected command else if (type == typeFind && (commandCurrent == UINT_MAX || commandCurrent == commandDefId)) { // Store the data found *dataDefFound = true; *dataDef = data; *dataDefList = &dataList[offset + 1]; *dataDefListSize = size; // If found in the expected command block then nothing more to look for if (commandCurrent == commandDefId) break; } offset += size + 1; } while(type != configDefDataTypeEnd); } FUNCTION_TEST_RETURN_VOID(); } #define CONFIG_DEFINE_DATA_FIND(commandDefId, optionDefId, type) \ bool dataDefFound = false; \ int dataDef = 0; \ unsigned int dataDefListSize = 0; \ const void **dataDefList = NULL; \ \ cfgDefDataFind( \ type, commandDefId, configDefineOptionData[optionDefId].data, &dataDefFound, &dataDef, &dataDefList, &dataDefListSize); /*********************************************************************************************************************************** Command and option define totals ***********************************************************************************************************************************/ unsigned int cfgDefCommandTotal(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(sizeof(configDefineCommandData) / sizeof(ConfigDefineCommandData)); } unsigned int cfgDefOptionTotal(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(sizeof(configDefineOptionData) / sizeof(ConfigDefineOptionData)); } /*********************************************************************************************************************************** Command help description ***********************************************************************************************************************************/ const char * cfgDefCommandHelpDescription(ConfigDefineCommand commandDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); FUNCTION_TEST_RETURN(configDefineCommandData[commandDefId].helpDescription); } /*********************************************************************************************************************************** Command help summary ***********************************************************************************************************************************/ const char * cfgDefCommandHelpSummary(ConfigDefineCommand commandDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); FUNCTION_TEST_RETURN(configDefineCommandData[commandDefId].helpSummary); } /*********************************************************************************************************************************** Option allow lists ***********************************************************************************************************************************/ bool cfgDefOptionAllowList(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); ASSERT(optionDefId < cfgDefOptionTotal()); CONFIG_DEFINE_DATA_FIND(commandDefId, optionDefId, configDefDataTypeAllowList); FUNCTION_TEST_RETURN(dataDefFound); } const char * cfgDefOptionAllowListValue(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId, unsigned int valueId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_PARAM(UINT, valueId); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); ASSERT(optionDefId < cfgDefOptionTotal()); ASSERT(valueId < cfgDefOptionAllowListValueTotal(commandDefId, optionDefId)); CONFIG_DEFINE_DATA_FIND(commandDefId, optionDefId, configDefDataTypeAllowList); FUNCTION_TEST_RETURN((char *)dataDefList[valueId]); } unsigned int cfgDefOptionAllowListValueTotal(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); ASSERT(optionDefId < cfgDefOptionTotal()); CONFIG_DEFINE_DATA_FIND(commandDefId, optionDefId, configDefDataTypeAllowList); FUNCTION_TEST_RETURN(dataDefListSize); } // Check if the value matches a value in the allow list bool cfgDefOptionAllowListValueValid(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId, const char *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_PARAM(STRINGZ, value); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); ASSERT(optionDefId < cfgDefOptionTotal()); ASSERT(value != NULL); bool result = false; for (unsigned int valueIdx = 0; valueIdx < cfgDefOptionAllowListValueTotal(commandDefId, optionDefId); valueIdx++) { if (strcmp(value, cfgDefOptionAllowListValue(commandDefId, optionDefId, valueIdx)) == 0) result = true; } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Allow range ***********************************************************************************************************************************/ bool cfgDefOptionAllowRange(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); ASSERT(optionDefId < cfgDefOptionTotal()); CONFIG_DEFINE_DATA_FIND(commandDefId, optionDefId, configDefDataTypeAllowRange); FUNCTION_TEST_RETURN(dataDefFound); } double cfgDefOptionAllowRangeMax(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); ASSERT(optionDefId < cfgDefOptionTotal()); CONFIG_DEFINE_DATA_FIND(commandDefId, optionDefId, configDefDataTypeAllowRange); FUNCTION_TEST_RETURN( ((double)(((int64_t)(intptr_t)dataDefList[2]) + (((int64_t)(intptr_t)dataDefList[3]) * 1000000000L))) / 100); } double cfgDefOptionAllowRangeMin(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); ASSERT(optionDefId < cfgDefOptionTotal()); CONFIG_DEFINE_DATA_FIND(commandDefId, optionDefId, configDefDataTypeAllowRange); FUNCTION_TEST_RETURN( ((double)(((int64_t)(intptr_t)dataDefList[0]) + (((int64_t)(intptr_t)dataDefList[1]) * 1000000000L))) / 100); } /*********************************************************************************************************************************** Default value for the option ***********************************************************************************************************************************/ const char * cfgDefOptionDefault(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); ASSERT(optionDefId < cfgDefOptionTotal()); CONFIG_DEFINE_DATA_FIND(commandDefId, optionDefId, configDefDataTypeDefault); char *result = NULL; if (dataDefFound) result = (char *)dataDefList[0]; FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Dependencies and depend lists ***********************************************************************************************************************************/ bool cfgDefOptionDepend(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); ASSERT(optionDefId < cfgDefOptionTotal()); CONFIG_DEFINE_DATA_FIND(commandDefId, optionDefId, configDefDataTypeDepend); FUNCTION_TEST_RETURN(dataDefFound); } ConfigDefineOption cfgDefOptionDependOption(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); ASSERT(optionDefId < cfgDefOptionTotal()); CONFIG_DEFINE_DATA_FIND(commandDefId, optionDefId, configDefDataTypeDepend); FUNCTION_TEST_RETURN((ConfigDefineOption)dataDef); } const char * cfgDefOptionDependValue(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId, unsigned int valueId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_PARAM(UINT, valueId); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); ASSERT(optionDefId < cfgDefOptionTotal()); ASSERT(valueId < cfgDefOptionDependValueTotal(commandDefId, optionDefId)); CONFIG_DEFINE_DATA_FIND(commandDefId, optionDefId, configDefDataTypeDepend); FUNCTION_TEST_RETURN((char *)dataDefList[valueId]); } unsigned int cfgDefOptionDependValueTotal(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); ASSERT(optionDefId < cfgDefOptionTotal()); CONFIG_DEFINE_DATA_FIND(commandDefId, optionDefId, configDefDataTypeDepend); FUNCTION_TEST_RETURN(dataDefListSize); } // Check if the value matches a value in the allow list bool cfgDefOptionDependValueValid(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId, const char *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_PARAM(STRINGZ, value); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); ASSERT(optionDefId < cfgDefOptionTotal()); ASSERT(value != NULL); bool result = false; for (unsigned int valueIdx = 0; valueIdx < cfgDefOptionDependValueTotal(commandDefId, optionDefId); valueIdx++) { if (strcmp(value, cfgDefOptionDependValue(commandDefId, optionDefId, valueIdx)) == 0) result = true; } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Option help description ***********************************************************************************************************************************/ const char * cfgDefOptionHelpDescription(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); ASSERT(optionDefId < cfgDefOptionTotal()); CONFIG_DEFINE_DATA_FIND(commandDefId, optionDefId, configDefDataTypeHelpDescription); const char *result = configDefineOptionData[optionDefId].helpDescription; if (dataDefFound) result = (char *)dataDefList[0]; FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Option help name alt ***********************************************************************************************************************************/ bool cfgDefOptionHelpNameAlt(ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(optionDefId < cfgDefOptionTotal()); CONFIG_DEFINE_DATA_FIND(-1, optionDefId, configDefDataTypeHelpNameAlt); FUNCTION_TEST_RETURN(dataDefFound); } const char * cfgDefOptionHelpNameAltValue(ConfigDefineOption optionDefId, unsigned int valueId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_PARAM(UINT, valueId); FUNCTION_TEST_END(); ASSERT(optionDefId < cfgDefOptionTotal()); ASSERT(valueId < cfgDefOptionHelpNameAltValueTotal(optionDefId)); CONFIG_DEFINE_DATA_FIND(-1, optionDefId, configDefDataTypeHelpNameAlt); FUNCTION_TEST_RETURN((char *)dataDefList[valueId]); } unsigned int cfgDefOptionHelpNameAltValueTotal(ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(optionDefId < cfgDefOptionTotal()); CONFIG_DEFINE_DATA_FIND(-1, optionDefId, configDefDataTypeHelpNameAlt); FUNCTION_TEST_RETURN(dataDefListSize); } /*********************************************************************************************************************************** Option help section ***********************************************************************************************************************************/ const char * cfgDefOptionHelpSection(ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(optionDefId < cfgDefOptionTotal()); FUNCTION_TEST_RETURN(configDefineOptionData[optionDefId].helpSection); } /*********************************************************************************************************************************** Option help summary ***********************************************************************************************************************************/ const char * cfgDefOptionHelpSummary(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); ASSERT(optionDefId < cfgDefOptionTotal()); CONFIG_DEFINE_DATA_FIND(commandDefId, optionDefId, configDefDataTypeHelpSummary); const char *result = configDefineOptionData[optionDefId].helpSummary; if (dataDefFound) result = (char *)dataDefList[0]; FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Get option id by name ***********************************************************************************************************************************/ int cfgDefOptionId(const char *optionName) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRINGZ, optionName); FUNCTION_TEST_END(); ASSERT(optionName != NULL); int result = -1; for (ConfigDefineOption optionDefId = 0; optionDefId < cfgDefOptionTotal(); optionDefId++) if (strcmp(optionName, configDefineOptionData[optionDefId].name) == 0) result = optionDefId; FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Get total indexed values for option ***********************************************************************************************************************************/ unsigned int cfgDefOptionIndexTotal(ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(optionDefId < cfgDefOptionTotal()); FUNCTION_TEST_RETURN(configDefineOptionData[optionDefId].indexTotal); } /*********************************************************************************************************************************** Is the option for internal use only? ***********************************************************************************************************************************/ bool cfgDefOptionInternal(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); ASSERT(optionDefId < cfgDefOptionTotal()); CONFIG_DEFINE_DATA_FIND(commandDefId, optionDefId, configDefDataTypeInternal); bool result = configDefineOptionData[optionDefId].internal; if (dataDefFound) result = (bool)dataDef; FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Does the option accept multiple values? ***********************************************************************************************************************************/ bool cfgDefOptionMulti(ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(optionDefId < cfgDefOptionTotal()); FUNCTION_TEST_RETURN( configDefineOptionData[optionDefId].type == cfgDefOptTypeHash || configDefineOptionData[optionDefId].type == cfgDefOptTypeList); } /*********************************************************************************************************************************** Name of the option ***********************************************************************************************************************************/ const char * cfgDefOptionName(ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(optionDefId < cfgDefOptionTotal()); FUNCTION_TEST_RETURN(configDefineOptionData[optionDefId].name); } /*********************************************************************************************************************************** Option prefix for indexed options ***********************************************************************************************************************************/ const char * cfgDefOptionPrefix(ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(optionDefId < cfgDefOptionTotal()); CONFIG_DEFINE_DATA_FIND(-1, optionDefId, configDefDataTypePrefix); char *result = NULL; if (dataDefFound) result = (char *)dataDefList[0]; FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Does the option need to be protected from showing up in logs, command lines, etc? ***********************************************************************************************************************************/ bool cfgDefOptionSecure(ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(optionDefId < cfgDefOptionTotal()); FUNCTION_TEST_RETURN(configDefineOptionData[optionDefId].secure); } /*********************************************************************************************************************************** Is the option required ***********************************************************************************************************************************/ bool cfgDefOptionRequired(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); ASSERT(optionDefId < cfgDefOptionTotal()); CONFIG_DEFINE_DATA_FIND(commandDefId, optionDefId, configDefDataTypeRequired); bool result = configDefineOptionData[optionDefId].required; if (dataDefFound) result = (bool)dataDef; FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Get option section ***********************************************************************************************************************************/ ConfigDefSection cfgDefOptionSection(ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(optionDefId < cfgDefOptionTotal()); FUNCTION_TEST_RETURN(configDefineOptionData[optionDefId].section); } /*********************************************************************************************************************************** Get option data type ***********************************************************************************************************************************/ int cfgDefOptionType(ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(optionDefId < cfgDefOptionTotal()); FUNCTION_TEST_RETURN(configDefineOptionData[optionDefId].type); } /*********************************************************************************************************************************** Is the option valid for the command? ***********************************************************************************************************************************/ bool cfgDefOptionValid(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, commandDefId); FUNCTION_TEST_PARAM(ENUM, optionDefId); FUNCTION_TEST_END(); ASSERT(commandDefId < cfgDefCommandTotal()); ASSERT(optionDefId < cfgDefOptionTotal()); FUNCTION_TEST_RETURN(configDefineOptionData[optionDefId].commandValid & (1 << commandDefId)); } pgbackrest-release-2.24/src/config/define.h000066400000000000000000000113001362531507100206410ustar00rootroot00000000000000/*********************************************************************************************************************************** Command and Option Configuration Definition ***********************************************************************************************************************************/ #ifndef CONFIG_DEFINE_H #define CONFIG_DEFINE_H #include /*********************************************************************************************************************************** Section enum - defines which sections of the config an option can appear in ***********************************************************************************************************************************/ typedef enum { cfgDefSectionCommandLine, // command-line only cfgDefSectionGlobal, // command-line or in any config section cfgDefSectionStanza, // command-line or in any config stanza section } ConfigDefSection; #include "config/define.auto.h" #include "common/type/string.h" /*********************************************************************************************************************************** Define global section name ***********************************************************************************************************************************/ #define CFGDEF_SECTION_GLOBAL "global" STRING_DECLARE(CFGDEF_SECTION_GLOBAL_STR); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ unsigned int cfgDefCommandTotal(void); const char *cfgDefCommandHelpDescription(ConfigDefineCommand commandDefId); const char *cfgDefCommandHelpSummary(ConfigDefineCommand commandDefId); bool cfgDefOptionAllowList(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId); unsigned int cfgDefOptionAllowListValueTotal(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId); bool cfgDefOptionAllowListValueValid(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId, const char *value); const char *cfgDefOptionAllowListValue(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId, unsigned int valueId); bool cfgDefOptionAllowRange(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId); double cfgDefOptionAllowRangeMax(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId); double cfgDefOptionAllowRangeMin(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId); void cfgDefOptionCheck(ConfigDefineOption optionDefId); const char *cfgDefOptionDefault(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId); bool cfgDefOptionDepend(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId); ConfigDefineOption cfgDefOptionDependOption(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId); unsigned int cfgDefOptionDependValueTotal(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId); bool cfgDefOptionDependValueValid(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId, const char *value); const char *cfgDefOptionDependValue(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId, unsigned int valueId); const char *cfgDefOptionHelpDescription(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId); bool cfgDefOptionHelpNameAlt(ConfigDefineOption optionDefId); const char *cfgDefOptionHelpNameAltValue(ConfigDefineOption optionDefId, unsigned int valueId); unsigned int cfgDefOptionHelpNameAltValueTotal(ConfigDefineOption optionDefId); const char *cfgDefOptionHelpSection(ConfigDefineOption optionDefId); const char *cfgDefOptionHelpSummary(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId); int cfgDefOptionId(const char *optionName); unsigned int cfgDefOptionIndexTotal(ConfigDefineOption optionDefId); bool cfgDefOptionInternal(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId); bool cfgDefOptionMulti(ConfigDefineOption optionDefId); const char *cfgDefOptionName(ConfigDefineOption optionDefId); const char *cfgDefOptionPrefix(ConfigDefineOption optionDefId); bool cfgDefOptionRequired(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId); ConfigDefSection cfgDefOptionSection(ConfigDefineOption optionDefId); bool cfgDefOptionSecure(ConfigDefineOption optionDefId); unsigned int cfgDefOptionTotal(void); int cfgDefOptionType(ConfigDefineOption optionDefId); bool cfgDefOptionValid(ConfigDefineCommand commandDefId, ConfigDefineOption optionDefId); #endif pgbackrest-release-2.24/src/config/exec.c000066400000000000000000000131041362531507100203320ustar00rootroot00000000000000/*********************************************************************************************************************************** Exec Configuration ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/debug.h" #include "common/log.h" #include "config/exec.h" /**********************************************************************************************************************************/ StringList * cfgExecParam(ConfigCommand commandId, ConfigCommandRole commandRoleId, const KeyValue *optionReplace, bool local, bool quote) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(ENUM, commandId); FUNCTION_LOG_PARAM(ENUM, commandRoleId); FUNCTION_LOG_PARAM(KEY_VALUE, optionReplace); FUNCTION_LOG_PARAM(BOOL, local); // Will the new process be running on the same host? FUNCTION_LOG_PARAM(BOOL, quote); // Do parameters with spaces need to be quoted? FUNCTION_LOG_END(); StringList *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { // Loop though options and add the ones that apply to the specified command result = strLstNew(); ConfigDefineCommand commandDefId = cfgCommandDefIdFromId(commandId); for (ConfigOption optionId = 0; optionId < CFG_OPTION_TOTAL; optionId++) { ConfigDefineOption optionDefId = cfgOptionDefIdFromId(optionId); // Skip the option if it is not valid for the specified command or if is secure. Also skip repo1-cipher-type because // there's no point of passing it if the other process doesn't have access to repo1-cipher-pass. There is probably a // better way to do this... if (!cfgDefOptionValid(commandDefId, optionDefId) || cfgDefOptionSecure(optionDefId) || optionDefId == cfgDefOptRepoCipherType) { continue; } // First check for a replacement const Variant *key = VARSTRZ(cfgOptionName(optionId)); const Variant *value = NULL; bool exists = false; if (optionReplace != NULL) { exists = kvKeyExists(optionReplace, key); if (exists) value = kvGet(optionReplace, key); } // If the key exists but is NULL then skip this option if (exists && value == NULL) continue; // If no replacement then see if this option is valid for the current command and is not default if (value == NULL && cfgOptionValid(optionId)) { if (cfgOptionNegate(optionId)) value = BOOL_FALSE_VAR; else if (cfgOptionSource(optionId) != cfgSourceDefault) value = cfgOption(optionId); } // If the option was reset if (cfgOptionReset(optionId)) { strLstAdd(result, strNewFmt("--reset-%s", cfgOptionName(optionId))); } // Else format the value if found else if (value != NULL && (!local || exists || cfgOptionSource(optionId) == cfgSourceParam)) { if (varType(value) == varTypeBool) { strLstAdd(result, strNewFmt("--%s%s", varBool(value) ? "" : "no-", cfgOptionName(optionId))); } else { StringList *valueList = NULL; if (varType(value) == varTypeKeyValue) { valueList = strLstNew(); const KeyValue *optionKv = varKv(value); const VariantList *keyList = kvKeyList(optionKv); for (unsigned int keyIdx = 0; keyIdx < varLstSize(keyList); keyIdx++) { strLstAdd( valueList, strNewFmt( "%s=%s", strPtr(varStr(varLstGet(keyList, keyIdx))), strPtr(varStrForce(kvGet(optionKv, varLstGet(keyList, keyIdx)))))); } } else if (varType(value) == varTypeVariantList) { valueList = strLstNewVarLst(varVarLst(value)); } // Else only one value else { valueList = strLstNew(); strLstAdd(valueList, varStrForce(value)); } // Output options and values for (unsigned int valueListIdx = 0; valueListIdx < strLstSize(valueList); valueListIdx++) { const String *value = strLstGet(valueList, valueListIdx); if (quote && strchr(strPtr(value), ' ') != NULL) value = strNewFmt("\"%s\"", strPtr(value)); strLstAdd(result, strNewFmt("--%s=%s", cfgOptionName(optionId), strPtr(value))); } } } } // Add the command strLstAdd(result, cfgCommandRoleNameParam(commandId, commandRoleId, COLON_STR)); // Move list to the prior context strLstMove(result, memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING_LIST, result); } pgbackrest-release-2.24/src/config/exec.h000066400000000000000000000023751362531507100203470ustar00rootroot00000000000000/*********************************************************************************************************************************** Exec Configuration ***********************************************************************************************************************************/ #ifndef CONFIG_EXEC_H #define CONFIG_EXEC_H #include "common/type/stringList.h" #include "config/config.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ // Generate a list of options required for execution of a new command, overriding options with the values in optionReplace when // present. If local is set then the new command must have access to the local configuration files and environment since only // options originally passed on the command-line will be added to the list. Use quote when the options will be used as a // concatenated string rather than being passed directly to exec*() as a list. StringList *cfgExecParam( ConfigCommand commandId, ConfigCommandRole commandRoleId, const KeyValue *optionReplace, bool local, bool quote); #endif pgbackrest-release-2.24/src/config/load.c000066400000000000000000000341741362531507100203370ustar00rootroot00000000000000/*********************************************************************************************************************************** Configuration Load ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include "command/command.h" #include "common/memContext.h" #include "common/debug.h" #include "common/io/io.h" #include "common/lock.h" #include "common/log.h" #include "config/config.h" #include "config/load.h" #include "config/parse.h" /*********************************************************************************************************************************** Load log settings ***********************************************************************************************************************************/ void cfgLoadLogSetting(void) { FUNCTION_LOG_VOID(logLevelTrace); // Initialize logging LogLevel logLevelConsole = logLevelOff; LogLevel logLevelStdErr = logLevelOff; LogLevel logLevelFile = logLevelOff; bool logTimestamp = true; unsigned int logProcessMax = 1; if (cfgOptionValid(cfgOptLogLevelConsole)) logLevelConsole = logLevelEnum(strPtr(cfgOptionStr(cfgOptLogLevelConsole))); if (cfgOptionValid(cfgOptLogLevelStderr)) { logLevelStdErr = logLevelEnum(strPtr(cfgOptionStr(cfgOptLogLevelStderr))); } if (cfgOptionValid(cfgOptLogLevelFile)) logLevelFile = logLevelEnum(strPtr(cfgOptionStr(cfgOptLogLevelFile))); if (cfgOptionValid(cfgOptLogTimestamp)) logTimestamp = cfgOptionBool(cfgOptLogTimestamp); if (cfgOptionValid(cfgOptProcessMax)) logProcessMax = cfgOptionUInt(cfgOptProcessMax); logInit(logLevelConsole, logLevelStdErr, logLevelFile, logTimestamp, logProcessMax); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Update options that have complex rules ***********************************************************************************************************************************/ void cfgLoadUpdateOption(void) { FUNCTION_LOG_VOID(logLevelTrace); // Set default for repo-host-cmd if (cfgOptionTest(cfgOptRepoHost) && cfgOptionSource(cfgOptRepoHostCmd) == cfgSourceDefault) cfgOptionDefaultSet(cfgOptRepoHostCmd, VARSTR(cfgExe())); // Set default for pg-host-cmd if (cfgOptionValid(cfgOptPgHostCmd)) { for (unsigned int optionIdx = 0; optionIdx < cfgOptionIndexTotal(cfgOptPgHost); optionIdx++) { if (cfgOptionTest(cfgOptPgHost + optionIdx) && cfgOptionSource(cfgOptPgHostCmd + optionIdx) == cfgSourceDefault) cfgOptionDefaultSet(cfgOptPgHostCmd + optionIdx, VARSTR(cfgExe())); } } // Protocol timeout should be greater than db timeout if (cfgOptionTest(cfgOptDbTimeout) && cfgOptionTest(cfgOptProtocolTimeout) && cfgOptionDbl(cfgOptProtocolTimeout) <= cfgOptionDbl(cfgOptDbTimeout)) { // If protocol-timeout is default then increase it to be greater than db-timeout if (cfgOptionSource(cfgOptProtocolTimeout) == cfgSourceDefault) cfgOptionSet(cfgOptProtocolTimeout, cfgSourceDefault, VARDBL(cfgOptionDbl(cfgOptDbTimeout) + 30)); else if (cfgOptionSource(cfgOptDbTimeout) == cfgSourceDefault) { double dbTimeout = cfgOptionDbl(cfgOptProtocolTimeout) - 30; // Normally the protocol time will be greater than 45 seconds so db timeout can be at least 15 seconds if (dbTimeout >= 15) { cfgOptionSet(cfgOptDbTimeout, cfgSourceDefault, VARDBL(dbTimeout)); } // But in some test cases the protocol timeout will be very small so make db timeout half of protocol timeout else cfgOptionSet(cfgOptDbTimeout, cfgSourceDefault, VARDBL(cfgOptionDbl(cfgOptProtocolTimeout) / 2)); } else { THROW_FMT( OptionInvalidValueError, "'%s' is not valid for '" CFGOPT_PROTOCOL_TIMEOUT "' option\nHINT '" CFGOPT_PROTOCOL_TIMEOUT "' option (%s)" " should be greater than '" CFGOPT_DB_TIMEOUT "' option (%s).", strPtr(varStrForce(cfgOption(cfgOptProtocolTimeout))), strPtr(varStrForce(cfgOption(cfgOptProtocolTimeout))), strPtr(varStrForce(cfgOption(cfgOptDbTimeout)))); } } // Make sure that repo and pg host settings are not both set - cannot both be remote if (cfgOptionValid(cfgOptPgHost) && cfgOptionValid(cfgOptRepoHost)) { bool pgHostFound = false; for (unsigned int optionIdx = 0; optionIdx < cfgOptionIndexTotal(cfgOptPgHost); optionIdx++) { if (cfgOptionTest(cfgOptPgHost + optionIdx)) { pgHostFound = true; break; } } // If a pg-host was found, see if a repo-host is configured if (pgHostFound == true) { for (unsigned int optionIdx = 0; optionIdx < cfgOptionIndexTotal(cfgOptRepoHost); optionIdx++) { if (cfgOptionTest(cfgOptRepoHost + optionIdx)) THROW_FMT(ConfigError, "pg and repo hosts cannot both be configured as remote"); } } } // Warn when repo-retention-full is not set on a configured repo if (!cfgCommandHelp() && cfgOptionValid(cfgOptRepoRetentionFull) && cfgCommandRole() == cfgCmdRoleDefault) { for (unsigned int optionIdx = 0; optionIdx < cfgOptionIndexTotal(cfgOptRepoType); optionIdx++) { // If the repo-type is defined, then see if corresponding retention-full is set if (cfgOptionTest(cfgOptRepoType + optionIdx) && !cfgOptionTest(cfgOptRepoRetentionFull + optionIdx)) { LOG_WARN_FMT( "option %s is not set, the repository may run out of space" "\nHINT: to retain full backups indefinitely (without warning), set option '%s' to the maximum.", cfgOptionName(cfgOptRepoRetentionFull + optionIdx), cfgOptionName(cfgOptRepoRetentionFull + optionIdx)); } } } // If archive retention is valid for the command, then set archive settings if (cfgOptionValid(cfgOptRepoRetentionArchive)) { // For each possible repo, check and adjust the settings as appropriate for (unsigned int optionIdx = 0; optionIdx < cfgOptionIndexTotal(cfgOptRepoType); optionIdx++) { const String *archiveRetentionType = cfgOptionStr(cfgOptRepoRetentionArchiveType + optionIdx); const String *msgArchiveOff = strNewFmt( "WAL segments will not be expired: option '" CFGOPT_REPO1_RETENTION_ARCHIVE_TYPE "=%s' but", strPtr(archiveRetentionType)); // If the archive retention is not explicitly set then determine what it should be defaulted to if (!cfgOptionTest(cfgOptRepoRetentionArchive + optionIdx)) { // If repo-retention-archive-type is default, then if repo-retention-full is set, set the repo-retention-archive // to this value, else ignore archiving if (strEqZ(archiveRetentionType, CFGOPTVAL_TMP_REPO_RETENTION_ARCHIVE_TYPE_FULL)) { if (cfgOptionTest(cfgOptRepoRetentionFull + optionIdx)) { cfgOptionSet(cfgOptRepoRetentionArchive + optionIdx, cfgSourceDefault, VARUINT(cfgOptionUInt(cfgOptRepoRetentionFull + optionIdx))); } } else if (strEqZ(archiveRetentionType, CFGOPTVAL_TMP_REPO_RETENTION_ARCHIVE_TYPE_DIFF)) { // if repo-retention-diff is set then user must have set it if (cfgOptionTest(cfgOptRepoRetentionDiff + optionIdx)) { cfgOptionSet(cfgOptRepoRetentionArchive + optionIdx, cfgSourceDefault, VARUINT(cfgOptionUInt(cfgOptRepoRetentionDiff + optionIdx))); } else { LOG_WARN_FMT("%s neither option '%s' nor option '%s' is set", strPtr(msgArchiveOff), cfgOptionName(cfgOptRepoRetentionArchive + optionIdx), cfgOptionName(cfgOptRepoRetentionDiff + optionIdx)); } } else { CHECK(strEqZ(archiveRetentionType, CFGOPTVAL_TMP_REPO_RETENTION_ARCHIVE_TYPE_INCR)); LOG_WARN_FMT("%s option '%s' is not set", strPtr(msgArchiveOff), cfgOptionName(cfgOptRepoRetentionArchive + optionIdx)); } } else { // If repo-retention-archive is set then check repo-retention-archive-type and issue a warning if the // corresponding setting is UNDEF since UNDEF means backups will not be expired but they should be in the // practice of setting this value even though expiring the archive itself is OK and will be performed. if ((strEqZ(archiveRetentionType, CFGOPTVAL_TMP_REPO_RETENTION_ARCHIVE_TYPE_DIFF)) && (!cfgOptionTest(cfgOptRepoRetentionDiff + optionIdx))) { LOG_WARN_FMT("option '%s' is not set for '%s=%s'\n" "HINT: to retain differential backups indefinitely (without warning), set option '%s' to the maximum.", cfgOptionName(cfgOptRepoRetentionDiff + optionIdx), cfgOptionName(cfgOptRepoRetentionArchiveType + optionIdx), CFGOPTVAL_TMP_REPO_RETENTION_ARCHIVE_TYPE_DIFF, cfgOptionName(cfgOptRepoRetentionDiff + optionIdx)); } } } } // Error if an S3 bucket name contains dots if (cfgOptionTest(cfgOptRepoS3Bucket) && cfgOptionBool(cfgOptRepoS3VerifyTls) && strChr(cfgOptionStr(cfgOptRepoS3Bucket), '.') != -1) { THROW_FMT( OptionInvalidValueError, "'%s' is not valid for option '" CFGOPT_REPO1_S3_BUCKET "'" "\nHINT: RFC-2818 forbids dots in wildcard matches." "\nHINT: TLS/SSL verification cannot proceed with this bucket name." "\nHINT: remove dots from the bucket name.", strPtr(cfgOptionStr(cfgOptRepoS3Bucket))); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Attempt to set the log file and turn file logging off if the file cannot be opened ***********************************************************************************************************************************/ void cfgLoadLogFile(void) { if (cfgLogFile() && !cfgCommandHelp()) { MEM_CONTEXT_TEMP_BEGIN() { // Construct log filename prefix String *logFile = strNewFmt( "%s/%s-%s", strPtr(cfgOptionStr(cfgOptLogPath)), cfgOptionTest(cfgOptStanza) ? strPtr(cfgOptionStr(cfgOptStanza)): "all", cfgCommandName(cfgCommand())); // ??? Append async for local/remote archive async commands. It would be good to find a more generic way to do this in // case the async role is added to more commands. if (cfgCommandRole() == cfgCmdRoleLocal || cfgCommandRole() == cfgCmdRoleRemote) { if (cfgOptionValid(cfgOptArchiveAsync) && cfgOptionBool(cfgOptArchiveAsync)) strCatFmt(logFile, "-async"); } // Add command role if it is not default if (cfgCommandRole() != cfgCmdRoleDefault) strCatFmt(logFile, "-%s", strPtr(cfgCommandRoleStr(cfgCommandRole()))); // Add process id if local or remote role if (cfgCommandRole() == cfgCmdRoleLocal || cfgCommandRole() == cfgCmdRoleRemote) strCatFmt(logFile, "-%03u", cfgOptionUInt(cfgOptProcess)); // Add extension strCat(logFile, ".log"); // Attempt to open log file if (!logFileSet(strPtr(logFile))) cfgOptionSet(cfgOptLogLevelFile, cfgSourceParam, varNewStrZ("off")); } MEM_CONTEXT_TEMP_END(); } } /*********************************************************************************************************************************** Load the configuration ***********************************************************************************************************************************/ void cfgLoad(unsigned int argListSize, const char *argList[]) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(UINT, argListSize); FUNCTION_LOG_PARAM(CHARPY, argList); FUNCTION_LOG_END(); MEM_CONTEXT_TEMP_BEGIN() { // Parse config from command line and config file configParse(argListSize, argList, true); // Load the log settings cfgLoadLogSetting(); // Neutralize the umask to make the repository file/path modes more consistent if (cfgOptionValid(cfgOptNeutralUmask) && cfgOptionBool(cfgOptNeutralUmask)) umask(0000); // If a command is set if (cfgCommand() != cfgCmdNone) { // Set IO buffer size if (cfgOptionValid(cfgOptBufferSize)) ioBufferSizeSet(cfgOptionUInt(cfgOptBufferSize)); // Open the log file if this command logs to a file cfgLoadLogFile(); // Begin the command cmdBegin(true); // Acquire a lock if this command requires a lock if (cfgLockRequired() && !cfgCommandHelp()) lockAcquire(cfgOptionStr(cfgOptLockPath), cfgOptionStr(cfgOptStanza), cfgLockType(), 0, true); // Update options that have complex rules cfgLoadUpdateOption(); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/config/load.h000066400000000000000000000014671362531507100203430ustar00rootroot00000000000000/*********************************************************************************************************************************** Configuration Load ***********************************************************************************************************************************/ #ifndef CONFIG_LOAD_H #define CONFIG_LOAD_H #include #include "common/type/string.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void cfgLoad(unsigned int argListSize, const char *argList[]); void cfgLoadLogSetting(void); void cfgLoadLogFile(void); void cfgLoadUpdateOption(void); #endif pgbackrest-release-2.24/src/config/parse.auto.c000066400000000000000000002460351362531507100215020ustar00rootroot00000000000000/*********************************************************************************************************************************** Option Parse Definition Automatically generated by Build.pm -- do not modify directly. ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Option parse data ***********************************************************************************************************************************/ static const struct option optionList[] = { // archive-async option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_ARCHIVE_ASYNC, .val = PARSE_OPTION_FLAG | cfgOptArchiveAsync, }, { .name = "no-" CFGOPT_ARCHIVE_ASYNC, .val = PARSE_OPTION_FLAG | PARSE_NEGATE_FLAG | cfgOptArchiveAsync, }, { .name = "reset-" CFGOPT_ARCHIVE_ASYNC, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptArchiveAsync, }, // archive-check option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_ARCHIVE_CHECK, .val = PARSE_OPTION_FLAG | cfgOptArchiveCheck, }, { .name = "no-" CFGOPT_ARCHIVE_CHECK, .val = PARSE_OPTION_FLAG | PARSE_NEGATE_FLAG | cfgOptArchiveCheck, }, { .name = "reset-" CFGOPT_ARCHIVE_CHECK, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptArchiveCheck, }, // archive-copy option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_ARCHIVE_COPY, .val = PARSE_OPTION_FLAG | cfgOptArchiveCopy, }, { .name = "no-" CFGOPT_ARCHIVE_COPY, .val = PARSE_OPTION_FLAG | PARSE_NEGATE_FLAG | cfgOptArchiveCopy, }, { .name = "reset-" CFGOPT_ARCHIVE_COPY, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptArchiveCopy, }, // archive-get-queue-max option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_ARCHIVE_GET_QUEUE_MAX, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptArchiveGetQueueMax, }, { .name = "reset-" CFGOPT_ARCHIVE_GET_QUEUE_MAX, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptArchiveGetQueueMax, }, // archive-push-queue-max option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_ARCHIVE_PUSH_QUEUE_MAX, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptArchivePushQueueMax, }, { .name = "reset-" CFGOPT_ARCHIVE_PUSH_QUEUE_MAX, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptArchivePushQueueMax, }, { .name = "archive-queue-max", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptArchivePushQueueMax, }, { .name = "reset-archive-queue-max", .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | PARSE_RESET_FLAG | cfgOptArchivePushQueueMax, }, // archive-timeout option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_ARCHIVE_TIMEOUT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptArchiveTimeout, }, { .name = "reset-" CFGOPT_ARCHIVE_TIMEOUT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptArchiveTimeout, }, // backup-standby option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_BACKUP_STANDBY, .val = PARSE_OPTION_FLAG | cfgOptBackupStandby, }, { .name = "no-" CFGOPT_BACKUP_STANDBY, .val = PARSE_OPTION_FLAG | PARSE_NEGATE_FLAG | cfgOptBackupStandby, }, { .name = "reset-" CFGOPT_BACKUP_STANDBY, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptBackupStandby, }, // buffer-size option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_BUFFER_SIZE, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptBufferSize, }, { .name = "reset-" CFGOPT_BUFFER_SIZE, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptBufferSize, }, // checksum-page option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_CHECKSUM_PAGE, .val = PARSE_OPTION_FLAG | cfgOptChecksumPage, }, { .name = "no-" CFGOPT_CHECKSUM_PAGE, .val = PARSE_OPTION_FLAG | PARSE_NEGATE_FLAG | cfgOptChecksumPage, }, { .name = "reset-" CFGOPT_CHECKSUM_PAGE, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptChecksumPage, }, // cmd-ssh option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_CMD_SSH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptCmdSsh, }, { .name = "reset-" CFGOPT_CMD_SSH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptCmdSsh, }, // compress option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_COMPRESS, .val = PARSE_OPTION_FLAG | cfgOptCompress, }, { .name = "no-" CFGOPT_COMPRESS, .val = PARSE_OPTION_FLAG | PARSE_NEGATE_FLAG | cfgOptCompress, }, { .name = "reset-" CFGOPT_COMPRESS, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptCompress, }, // compress-level option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_COMPRESS_LEVEL, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptCompressLevel, }, { .name = "reset-" CFGOPT_COMPRESS_LEVEL, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptCompressLevel, }, // compress-level-network option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_COMPRESS_LEVEL_NETWORK, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptCompressLevelNetwork, }, { .name = "reset-" CFGOPT_COMPRESS_LEVEL_NETWORK, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptCompressLevelNetwork, }, // config option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_CONFIG, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptConfig, }, { .name = "no-" CFGOPT_CONFIG, .val = PARSE_OPTION_FLAG | PARSE_NEGATE_FLAG | cfgOptConfig, }, // config-include-path option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_CONFIG_INCLUDE_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptConfigIncludePath, }, // config-path option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_CONFIG_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptConfigPath, }, // db-include option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_DB_INCLUDE, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptDbInclude, }, { .name = "reset-" CFGOPT_DB_INCLUDE, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptDbInclude, }, // db-timeout option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_DB_TIMEOUT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptDbTimeout, }, { .name = "reset-" CFGOPT_DB_TIMEOUT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptDbTimeout, }, // delta option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_DELTA, .val = PARSE_OPTION_FLAG | cfgOptDelta, }, { .name = "no-" CFGOPT_DELTA, .val = PARSE_OPTION_FLAG | PARSE_NEGATE_FLAG | cfgOptDelta, }, { .name = "reset-" CFGOPT_DELTA, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptDelta, }, // exclude option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_EXCLUDE, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptExclude, }, { .name = "reset-" CFGOPT_EXCLUDE, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptExclude, }, // filter option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_FILTER, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptFilter, }, // force option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_FORCE, .val = PARSE_OPTION_FLAG | cfgOptForce, }, // host-id option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_HOST_ID, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptHostId, }, // link-all option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_LINK_ALL, .val = PARSE_OPTION_FLAG | cfgOptLinkAll, }, { .name = "no-" CFGOPT_LINK_ALL, .val = PARSE_OPTION_FLAG | PARSE_NEGATE_FLAG | cfgOptLinkAll, }, { .name = "reset-" CFGOPT_LINK_ALL, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptLinkAll, }, // link-map option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_LINK_MAP, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptLinkMap, }, { .name = "reset-" CFGOPT_LINK_MAP, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptLinkMap, }, // lock-path option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_LOCK_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptLockPath, }, { .name = "reset-" CFGOPT_LOCK_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptLockPath, }, // log-level-console option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_LOG_LEVEL_CONSOLE, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptLogLevelConsole, }, { .name = "reset-" CFGOPT_LOG_LEVEL_CONSOLE, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptLogLevelConsole, }, // log-level-file option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_LOG_LEVEL_FILE, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptLogLevelFile, }, { .name = "reset-" CFGOPT_LOG_LEVEL_FILE, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptLogLevelFile, }, // log-level-stderr option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_LOG_LEVEL_STDERR, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptLogLevelStderr, }, { .name = "reset-" CFGOPT_LOG_LEVEL_STDERR, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptLogLevelStderr, }, // log-path option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_LOG_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptLogPath, }, { .name = "reset-" CFGOPT_LOG_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptLogPath, }, // log-subprocess option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_LOG_SUBPROCESS, .val = PARSE_OPTION_FLAG | cfgOptLogSubprocess, }, { .name = "no-" CFGOPT_LOG_SUBPROCESS, .val = PARSE_OPTION_FLAG | PARSE_NEGATE_FLAG | cfgOptLogSubprocess, }, { .name = "reset-" CFGOPT_LOG_SUBPROCESS, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptLogSubprocess, }, // log-timestamp option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_LOG_TIMESTAMP, .val = PARSE_OPTION_FLAG | cfgOptLogTimestamp, }, { .name = "no-" CFGOPT_LOG_TIMESTAMP, .val = PARSE_OPTION_FLAG | PARSE_NEGATE_FLAG | cfgOptLogTimestamp, }, { .name = "reset-" CFGOPT_LOG_TIMESTAMP, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptLogTimestamp, }, // manifest-save-threshold option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_MANIFEST_SAVE_THRESHOLD, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptManifestSaveThreshold, }, { .name = "reset-" CFGOPT_MANIFEST_SAVE_THRESHOLD, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptManifestSaveThreshold, }, // neutral-umask option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_NEUTRAL_UMASK, .val = PARSE_OPTION_FLAG | cfgOptNeutralUmask, }, { .name = "no-" CFGOPT_NEUTRAL_UMASK, .val = PARSE_OPTION_FLAG | PARSE_NEGATE_FLAG | cfgOptNeutralUmask, }, { .name = "reset-" CFGOPT_NEUTRAL_UMASK, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptNeutralUmask, }, // online option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_ONLINE, .val = PARSE_OPTION_FLAG | cfgOptOnline, }, { .name = "no-" CFGOPT_ONLINE, .val = PARSE_OPTION_FLAG | PARSE_NEGATE_FLAG | cfgOptOnline, }, // output option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_OUTPUT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptOutput, }, // pg-host option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_PG1_HOST, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptPgHost, }, { .name = "reset-" CFGOPT_PG1_HOST, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptPgHost, }, { .name = "db-host", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptPgHost, }, { .name = "db1-host", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptPgHost, }, { .name = CFGOPT_PG2_HOST, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHost + 1), }, { .name = "reset-" CFGOPT_PG2_HOST, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHost + 1), }, { .name = "db2-host", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHost + 1), }, { .name = CFGOPT_PG3_HOST, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHost + 2), }, { .name = "reset-" CFGOPT_PG3_HOST, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHost + 2), }, { .name = "db3-host", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHost + 2), }, { .name = CFGOPT_PG4_HOST, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHost + 3), }, { .name = "reset-" CFGOPT_PG4_HOST, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHost + 3), }, { .name = "db4-host", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHost + 3), }, { .name = CFGOPT_PG5_HOST, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHost + 4), }, { .name = "reset-" CFGOPT_PG5_HOST, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHost + 4), }, { .name = "db5-host", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHost + 4), }, { .name = CFGOPT_PG6_HOST, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHost + 5), }, { .name = "reset-" CFGOPT_PG6_HOST, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHost + 5), }, { .name = "db6-host", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHost + 5), }, { .name = CFGOPT_PG7_HOST, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHost + 6), }, { .name = "reset-" CFGOPT_PG7_HOST, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHost + 6), }, { .name = "db7-host", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHost + 6), }, { .name = CFGOPT_PG8_HOST, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHost + 7), }, { .name = "reset-" CFGOPT_PG8_HOST, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHost + 7), }, { .name = "db8-host", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHost + 7), }, // pg-host-cmd option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_PG1_HOST_CMD, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptPgHostCmd, }, { .name = "reset-" CFGOPT_PG1_HOST_CMD, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptPgHostCmd, }, { .name = "db-cmd", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptPgHostCmd, }, { .name = "db1-cmd", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptPgHostCmd, }, { .name = CFGOPT_PG2_HOST_CMD, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostCmd + 1), }, { .name = "reset-" CFGOPT_PG2_HOST_CMD, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostCmd + 1), }, { .name = "db2-cmd", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostCmd + 1), }, { .name = CFGOPT_PG3_HOST_CMD, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostCmd + 2), }, { .name = "reset-" CFGOPT_PG3_HOST_CMD, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostCmd + 2), }, { .name = "db3-cmd", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostCmd + 2), }, { .name = CFGOPT_PG4_HOST_CMD, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostCmd + 3), }, { .name = "reset-" CFGOPT_PG4_HOST_CMD, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostCmd + 3), }, { .name = "db4-cmd", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostCmd + 3), }, { .name = CFGOPT_PG5_HOST_CMD, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostCmd + 4), }, { .name = "reset-" CFGOPT_PG5_HOST_CMD, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostCmd + 4), }, { .name = "db5-cmd", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostCmd + 4), }, { .name = CFGOPT_PG6_HOST_CMD, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostCmd + 5), }, { .name = "reset-" CFGOPT_PG6_HOST_CMD, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostCmd + 5), }, { .name = "db6-cmd", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostCmd + 5), }, { .name = CFGOPT_PG7_HOST_CMD, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostCmd + 6), }, { .name = "reset-" CFGOPT_PG7_HOST_CMD, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostCmd + 6), }, { .name = "db7-cmd", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostCmd + 6), }, { .name = CFGOPT_PG8_HOST_CMD, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostCmd + 7), }, { .name = "reset-" CFGOPT_PG8_HOST_CMD, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostCmd + 7), }, { .name = "db8-cmd", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostCmd + 7), }, // pg-host-config option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_PG1_HOST_CONFIG, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptPgHostConfig, }, { .name = "reset-" CFGOPT_PG1_HOST_CONFIG, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptPgHostConfig, }, { .name = "db-config", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptPgHostConfig, }, { .name = "db1-config", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptPgHostConfig, }, { .name = CFGOPT_PG2_HOST_CONFIG, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfig + 1), }, { .name = "reset-" CFGOPT_PG2_HOST_CONFIG, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfig + 1), }, { .name = "db2-config", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostConfig + 1), }, { .name = CFGOPT_PG3_HOST_CONFIG, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfig + 2), }, { .name = "reset-" CFGOPT_PG3_HOST_CONFIG, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfig + 2), }, { .name = "db3-config", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostConfig + 2), }, { .name = CFGOPT_PG4_HOST_CONFIG, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfig + 3), }, { .name = "reset-" CFGOPT_PG4_HOST_CONFIG, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfig + 3), }, { .name = "db4-config", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostConfig + 3), }, { .name = CFGOPT_PG5_HOST_CONFIG, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfig + 4), }, { .name = "reset-" CFGOPT_PG5_HOST_CONFIG, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfig + 4), }, { .name = "db5-config", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostConfig + 4), }, { .name = CFGOPT_PG6_HOST_CONFIG, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfig + 5), }, { .name = "reset-" CFGOPT_PG6_HOST_CONFIG, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfig + 5), }, { .name = "db6-config", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostConfig + 5), }, { .name = CFGOPT_PG7_HOST_CONFIG, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfig + 6), }, { .name = "reset-" CFGOPT_PG7_HOST_CONFIG, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfig + 6), }, { .name = "db7-config", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostConfig + 6), }, { .name = CFGOPT_PG8_HOST_CONFIG, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfig + 7), }, { .name = "reset-" CFGOPT_PG8_HOST_CONFIG, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfig + 7), }, { .name = "db8-config", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostConfig + 7), }, // pg-host-config-include-path option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_PG1_HOST_CONFIG_INCLUDE_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptPgHostConfigIncludePath, }, { .name = "reset-" CFGOPT_PG1_HOST_CONFIG_INCLUDE_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptPgHostConfigIncludePath, }, { .name = CFGOPT_PG2_HOST_CONFIG_INCLUDE_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfigIncludePath + 1), }, { .name = "reset-" CFGOPT_PG2_HOST_CONFIG_INCLUDE_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfigIncludePath + 1), }, { .name = CFGOPT_PG3_HOST_CONFIG_INCLUDE_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfigIncludePath + 2), }, { .name = "reset-" CFGOPT_PG3_HOST_CONFIG_INCLUDE_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfigIncludePath + 2), }, { .name = CFGOPT_PG4_HOST_CONFIG_INCLUDE_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfigIncludePath + 3), }, { .name = "reset-" CFGOPT_PG4_HOST_CONFIG_INCLUDE_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfigIncludePath + 3), }, { .name = CFGOPT_PG5_HOST_CONFIG_INCLUDE_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfigIncludePath + 4), }, { .name = "reset-" CFGOPT_PG5_HOST_CONFIG_INCLUDE_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfigIncludePath + 4), }, { .name = CFGOPT_PG6_HOST_CONFIG_INCLUDE_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfigIncludePath + 5), }, { .name = "reset-" CFGOPT_PG6_HOST_CONFIG_INCLUDE_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfigIncludePath + 5), }, { .name = CFGOPT_PG7_HOST_CONFIG_INCLUDE_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfigIncludePath + 6), }, { .name = "reset-" CFGOPT_PG7_HOST_CONFIG_INCLUDE_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfigIncludePath + 6), }, { .name = CFGOPT_PG8_HOST_CONFIG_INCLUDE_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfigIncludePath + 7), }, { .name = "reset-" CFGOPT_PG8_HOST_CONFIG_INCLUDE_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfigIncludePath + 7), }, // pg-host-config-path option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_PG1_HOST_CONFIG_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptPgHostConfigPath, }, { .name = "reset-" CFGOPT_PG1_HOST_CONFIG_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptPgHostConfigPath, }, { .name = CFGOPT_PG2_HOST_CONFIG_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfigPath + 1), }, { .name = "reset-" CFGOPT_PG2_HOST_CONFIG_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfigPath + 1), }, { .name = CFGOPT_PG3_HOST_CONFIG_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfigPath + 2), }, { .name = "reset-" CFGOPT_PG3_HOST_CONFIG_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfigPath + 2), }, { .name = CFGOPT_PG4_HOST_CONFIG_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfigPath + 3), }, { .name = "reset-" CFGOPT_PG4_HOST_CONFIG_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfigPath + 3), }, { .name = CFGOPT_PG5_HOST_CONFIG_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfigPath + 4), }, { .name = "reset-" CFGOPT_PG5_HOST_CONFIG_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfigPath + 4), }, { .name = CFGOPT_PG6_HOST_CONFIG_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfigPath + 5), }, { .name = "reset-" CFGOPT_PG6_HOST_CONFIG_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfigPath + 5), }, { .name = CFGOPT_PG7_HOST_CONFIG_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfigPath + 6), }, { .name = "reset-" CFGOPT_PG7_HOST_CONFIG_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfigPath + 6), }, { .name = CFGOPT_PG8_HOST_CONFIG_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostConfigPath + 7), }, { .name = "reset-" CFGOPT_PG8_HOST_CONFIG_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostConfigPath + 7), }, // pg-host-port option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_PG1_HOST_PORT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptPgHostPort, }, { .name = "reset-" CFGOPT_PG1_HOST_PORT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptPgHostPort, }, { .name = "db-ssh-port", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptPgHostPort, }, { .name = "db1-ssh-port", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptPgHostPort, }, { .name = CFGOPT_PG2_HOST_PORT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostPort + 1), }, { .name = "reset-" CFGOPT_PG2_HOST_PORT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostPort + 1), }, { .name = "db2-ssh-port", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostPort + 1), }, { .name = CFGOPT_PG3_HOST_PORT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostPort + 2), }, { .name = "reset-" CFGOPT_PG3_HOST_PORT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostPort + 2), }, { .name = "db3-ssh-port", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostPort + 2), }, { .name = CFGOPT_PG4_HOST_PORT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostPort + 3), }, { .name = "reset-" CFGOPT_PG4_HOST_PORT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostPort + 3), }, { .name = "db4-ssh-port", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostPort + 3), }, { .name = CFGOPT_PG5_HOST_PORT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostPort + 4), }, { .name = "reset-" CFGOPT_PG5_HOST_PORT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostPort + 4), }, { .name = "db5-ssh-port", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostPort + 4), }, { .name = CFGOPT_PG6_HOST_PORT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostPort + 5), }, { .name = "reset-" CFGOPT_PG6_HOST_PORT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostPort + 5), }, { .name = "db6-ssh-port", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostPort + 5), }, { .name = CFGOPT_PG7_HOST_PORT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostPort + 6), }, { .name = "reset-" CFGOPT_PG7_HOST_PORT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostPort + 6), }, { .name = "db7-ssh-port", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostPort + 6), }, { .name = CFGOPT_PG8_HOST_PORT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostPort + 7), }, { .name = "reset-" CFGOPT_PG8_HOST_PORT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostPort + 7), }, { .name = "db8-ssh-port", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostPort + 7), }, // pg-host-user option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_PG1_HOST_USER, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptPgHostUser, }, { .name = "reset-" CFGOPT_PG1_HOST_USER, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptPgHostUser, }, { .name = "db-user", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptPgHostUser, }, { .name = "db1-user", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptPgHostUser, }, { .name = CFGOPT_PG2_HOST_USER, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostUser + 1), }, { .name = "reset-" CFGOPT_PG2_HOST_USER, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostUser + 1), }, { .name = "db2-user", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostUser + 1), }, { .name = CFGOPT_PG3_HOST_USER, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostUser + 2), }, { .name = "reset-" CFGOPT_PG3_HOST_USER, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostUser + 2), }, { .name = "db3-user", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostUser + 2), }, { .name = CFGOPT_PG4_HOST_USER, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostUser + 3), }, { .name = "reset-" CFGOPT_PG4_HOST_USER, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostUser + 3), }, { .name = "db4-user", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostUser + 3), }, { .name = CFGOPT_PG5_HOST_USER, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostUser + 4), }, { .name = "reset-" CFGOPT_PG5_HOST_USER, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostUser + 4), }, { .name = "db5-user", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostUser + 4), }, { .name = CFGOPT_PG6_HOST_USER, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostUser + 5), }, { .name = "reset-" CFGOPT_PG6_HOST_USER, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostUser + 5), }, { .name = "db6-user", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostUser + 5), }, { .name = CFGOPT_PG7_HOST_USER, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostUser + 6), }, { .name = "reset-" CFGOPT_PG7_HOST_USER, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostUser + 6), }, { .name = "db7-user", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostUser + 6), }, { .name = CFGOPT_PG8_HOST_USER, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgHostUser + 7), }, { .name = "reset-" CFGOPT_PG8_HOST_USER, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgHostUser + 7), }, { .name = "db8-user", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgHostUser + 7), }, // pg-path option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_PG1_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptPgPath, }, { .name = "reset-" CFGOPT_PG1_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptPgPath, }, { .name = "db-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptPgPath, }, { .name = "db1-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptPgPath, }, { .name = CFGOPT_PG2_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgPath + 1), }, { .name = "reset-" CFGOPT_PG2_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgPath + 1), }, { .name = "db2-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgPath + 1), }, { .name = CFGOPT_PG3_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgPath + 2), }, { .name = "reset-" CFGOPT_PG3_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgPath + 2), }, { .name = "db3-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgPath + 2), }, { .name = CFGOPT_PG4_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgPath + 3), }, { .name = "reset-" CFGOPT_PG4_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgPath + 3), }, { .name = "db4-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgPath + 3), }, { .name = CFGOPT_PG5_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgPath + 4), }, { .name = "reset-" CFGOPT_PG5_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgPath + 4), }, { .name = "db5-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgPath + 4), }, { .name = CFGOPT_PG6_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgPath + 5), }, { .name = "reset-" CFGOPT_PG6_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgPath + 5), }, { .name = "db6-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgPath + 5), }, { .name = CFGOPT_PG7_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgPath + 6), }, { .name = "reset-" CFGOPT_PG7_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgPath + 6), }, { .name = "db7-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgPath + 6), }, { .name = CFGOPT_PG8_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgPath + 7), }, { .name = "reset-" CFGOPT_PG8_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgPath + 7), }, { .name = "db8-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgPath + 7), }, // pg-port option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_PG1_PORT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptPgPort, }, { .name = "reset-" CFGOPT_PG1_PORT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptPgPort, }, { .name = "db-port", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptPgPort, }, { .name = "db1-port", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptPgPort, }, { .name = CFGOPT_PG2_PORT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgPort + 1), }, { .name = "reset-" CFGOPT_PG2_PORT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgPort + 1), }, { .name = "db2-port", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgPort + 1), }, { .name = CFGOPT_PG3_PORT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgPort + 2), }, { .name = "reset-" CFGOPT_PG3_PORT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgPort + 2), }, { .name = "db3-port", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgPort + 2), }, { .name = CFGOPT_PG4_PORT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgPort + 3), }, { .name = "reset-" CFGOPT_PG4_PORT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgPort + 3), }, { .name = "db4-port", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgPort + 3), }, { .name = CFGOPT_PG5_PORT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgPort + 4), }, { .name = "reset-" CFGOPT_PG5_PORT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgPort + 4), }, { .name = "db5-port", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgPort + 4), }, { .name = CFGOPT_PG6_PORT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgPort + 5), }, { .name = "reset-" CFGOPT_PG6_PORT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgPort + 5), }, { .name = "db6-port", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgPort + 5), }, { .name = CFGOPT_PG7_PORT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgPort + 6), }, { .name = "reset-" CFGOPT_PG7_PORT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgPort + 6), }, { .name = "db7-port", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgPort + 6), }, { .name = CFGOPT_PG8_PORT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgPort + 7), }, { .name = "reset-" CFGOPT_PG8_PORT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgPort + 7), }, { .name = "db8-port", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgPort + 7), }, // pg-socket-path option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_PG1_SOCKET_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptPgSocketPath, }, { .name = "reset-" CFGOPT_PG1_SOCKET_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptPgSocketPath, }, { .name = "db-socket-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptPgSocketPath, }, { .name = "db1-socket-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptPgSocketPath, }, { .name = CFGOPT_PG2_SOCKET_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgSocketPath + 1), }, { .name = "reset-" CFGOPT_PG2_SOCKET_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgSocketPath + 1), }, { .name = "db2-socket-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgSocketPath + 1), }, { .name = CFGOPT_PG3_SOCKET_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgSocketPath + 2), }, { .name = "reset-" CFGOPT_PG3_SOCKET_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgSocketPath + 2), }, { .name = "db3-socket-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgSocketPath + 2), }, { .name = CFGOPT_PG4_SOCKET_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgSocketPath + 3), }, { .name = "reset-" CFGOPT_PG4_SOCKET_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgSocketPath + 3), }, { .name = "db4-socket-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgSocketPath + 3), }, { .name = CFGOPT_PG5_SOCKET_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgSocketPath + 4), }, { .name = "reset-" CFGOPT_PG5_SOCKET_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgSocketPath + 4), }, { .name = "db5-socket-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgSocketPath + 4), }, { .name = CFGOPT_PG6_SOCKET_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgSocketPath + 5), }, { .name = "reset-" CFGOPT_PG6_SOCKET_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgSocketPath + 5), }, { .name = "db6-socket-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgSocketPath + 5), }, { .name = CFGOPT_PG7_SOCKET_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgSocketPath + 6), }, { .name = "reset-" CFGOPT_PG7_SOCKET_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgSocketPath + 6), }, { .name = "db7-socket-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgSocketPath + 6), }, { .name = CFGOPT_PG8_SOCKET_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgSocketPath + 7), }, { .name = "reset-" CFGOPT_PG8_SOCKET_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgSocketPath + 7), }, { .name = "db8-socket-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | (cfgOptPgSocketPath + 7), }, // pg-user option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_PG1_USER, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptPgUser, }, { .name = "reset-" CFGOPT_PG1_USER, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptPgUser, }, { .name = CFGOPT_PG2_USER, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgUser + 1), }, { .name = "reset-" CFGOPT_PG2_USER, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgUser + 1), }, { .name = CFGOPT_PG3_USER, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgUser + 2), }, { .name = "reset-" CFGOPT_PG3_USER, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgUser + 2), }, { .name = CFGOPT_PG4_USER, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgUser + 3), }, { .name = "reset-" CFGOPT_PG4_USER, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgUser + 3), }, { .name = CFGOPT_PG5_USER, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgUser + 4), }, { .name = "reset-" CFGOPT_PG5_USER, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgUser + 4), }, { .name = CFGOPT_PG6_USER, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgUser + 5), }, { .name = "reset-" CFGOPT_PG6_USER, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgUser + 5), }, { .name = CFGOPT_PG7_USER, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgUser + 6), }, { .name = "reset-" CFGOPT_PG7_USER, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgUser + 6), }, { .name = CFGOPT_PG8_USER, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | (cfgOptPgUser + 7), }, { .name = "reset-" CFGOPT_PG8_USER, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | (cfgOptPgUser + 7), }, // process option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_PROCESS, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptProcess, }, // process-max option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_PROCESS_MAX, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptProcessMax, }, { .name = "reset-" CFGOPT_PROCESS_MAX, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptProcessMax, }, // protocol-timeout option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_PROTOCOL_TIMEOUT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptProtocolTimeout, }, { .name = "reset-" CFGOPT_PROTOCOL_TIMEOUT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptProtocolTimeout, }, // recovery-option option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_RECOVERY_OPTION, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRecoveryOption, }, { .name = "reset-" CFGOPT_RECOVERY_OPTION, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRecoveryOption, }, // recurse option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_RECURSE, .val = PARSE_OPTION_FLAG | cfgOptRecurse, }, // remote-type option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REMOTE_TYPE, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRemoteType, }, // repo-cipher-pass option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_CIPHER_PASS, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoCipherPass, }, { .name = "reset-" CFGOPT_REPO1_CIPHER_PASS, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoCipherPass, }, { .name = "repo-cipher-pass", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoCipherPass, }, // repo-cipher-type option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_CIPHER_TYPE, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoCipherType, }, { .name = "reset-" CFGOPT_REPO1_CIPHER_TYPE, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoCipherType, }, { .name = "repo-cipher-type", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoCipherType, }, // repo-hardlink option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_HARDLINK, .val = PARSE_OPTION_FLAG | cfgOptRepoHardlink, }, { .name = "no-" CFGOPT_REPO1_HARDLINK, .val = PARSE_OPTION_FLAG | PARSE_NEGATE_FLAG | cfgOptRepoHardlink, }, { .name = "reset-" CFGOPT_REPO1_HARDLINK, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoHardlink, }, { .name = "hardlink", .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoHardlink, }, { .name = "no-hardlink", .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | PARSE_NEGATE_FLAG | cfgOptRepoHardlink, }, // repo-host option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_HOST, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoHost, }, { .name = "reset-" CFGOPT_REPO1_HOST, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoHost, }, { .name = "backup-host", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoHost, }, // repo-host-cmd option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_HOST_CMD, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoHostCmd, }, { .name = "reset-" CFGOPT_REPO1_HOST_CMD, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoHostCmd, }, { .name = "backup-cmd", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoHostCmd, }, // repo-host-config option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_HOST_CONFIG, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoHostConfig, }, { .name = "reset-" CFGOPT_REPO1_HOST_CONFIG, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoHostConfig, }, { .name = "backup-config", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoHostConfig, }, // repo-host-config-include-path option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_HOST_CONFIG_INCLUDE_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoHostConfigIncludePath, }, { .name = "reset-" CFGOPT_REPO1_HOST_CONFIG_INCLUDE_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoHostConfigIncludePath, }, // repo-host-config-path option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_HOST_CONFIG_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoHostConfigPath, }, { .name = "reset-" CFGOPT_REPO1_HOST_CONFIG_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoHostConfigPath, }, // repo-host-port option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_HOST_PORT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoHostPort, }, { .name = "reset-" CFGOPT_REPO1_HOST_PORT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoHostPort, }, { .name = "backup-ssh-port", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoHostPort, }, // repo-host-user option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_HOST_USER, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoHostUser, }, { .name = "reset-" CFGOPT_REPO1_HOST_USER, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoHostUser, }, { .name = "backup-user", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoHostUser, }, // repo-path option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoPath, }, { .name = "reset-" CFGOPT_REPO1_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoPath, }, { .name = "repo-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoPath, }, // repo-retention-archive option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_RETENTION_ARCHIVE, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoRetentionArchive, }, { .name = "reset-" CFGOPT_REPO1_RETENTION_ARCHIVE, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoRetentionArchive, }, { .name = "retention-archive", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoRetentionArchive, }, // repo-retention-archive-type option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_RETENTION_ARCHIVE_TYPE, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoRetentionArchiveType, }, { .name = "reset-" CFGOPT_REPO1_RETENTION_ARCHIVE_TYPE, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoRetentionArchiveType, }, { .name = "retention-archive-type", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoRetentionArchiveType, }, // repo-retention-diff option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_RETENTION_DIFF, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoRetentionDiff, }, { .name = "reset-" CFGOPT_REPO1_RETENTION_DIFF, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoRetentionDiff, }, { .name = "retention-diff", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoRetentionDiff, }, // repo-retention-full option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_RETENTION_FULL, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoRetentionFull, }, { .name = "reset-" CFGOPT_REPO1_RETENTION_FULL, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoRetentionFull, }, { .name = "retention-full", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoRetentionFull, }, // repo-s3-bucket option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_S3_BUCKET, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoS3Bucket, }, { .name = "reset-" CFGOPT_REPO1_S3_BUCKET, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoS3Bucket, }, { .name = "repo-s3-bucket", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoS3Bucket, }, // repo-s3-ca-file option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_S3_CA_FILE, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoS3CaFile, }, { .name = "reset-" CFGOPT_REPO1_S3_CA_FILE, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoS3CaFile, }, { .name = "repo-s3-ca-file", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoS3CaFile, }, // repo-s3-ca-path option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_S3_CA_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoS3CaPath, }, { .name = "reset-" CFGOPT_REPO1_S3_CA_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoS3CaPath, }, { .name = "repo-s3-ca-path", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoS3CaPath, }, // repo-s3-endpoint option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_S3_ENDPOINT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoS3Endpoint, }, { .name = "reset-" CFGOPT_REPO1_S3_ENDPOINT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoS3Endpoint, }, { .name = "repo-s3-endpoint", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoS3Endpoint, }, // repo-s3-host option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_S3_HOST, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoS3Host, }, { .name = "reset-" CFGOPT_REPO1_S3_HOST, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoS3Host, }, { .name = "repo-s3-host", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoS3Host, }, // repo-s3-key option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_S3_KEY, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoS3Key, }, { .name = "reset-" CFGOPT_REPO1_S3_KEY, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoS3Key, }, { .name = "repo-s3-key", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoS3Key, }, // repo-s3-key-secret option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_S3_KEY_SECRET, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoS3KeySecret, }, { .name = "reset-" CFGOPT_REPO1_S3_KEY_SECRET, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoS3KeySecret, }, { .name = "repo-s3-key-secret", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoS3KeySecret, }, // repo-s3-port option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_S3_PORT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoS3Port, }, { .name = "reset-" CFGOPT_REPO1_S3_PORT, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoS3Port, }, // repo-s3-region option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_S3_REGION, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoS3Region, }, { .name = "reset-" CFGOPT_REPO1_S3_REGION, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoS3Region, }, { .name = "repo-s3-region", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoS3Region, }, // repo-s3-token option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_S3_TOKEN, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoS3Token, }, { .name = "reset-" CFGOPT_REPO1_S3_TOKEN, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoS3Token, }, // repo-s3-uri-style option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_S3_URI_STYLE, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoS3UriStyle, }, { .name = "reset-" CFGOPT_REPO1_S3_URI_STYLE, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoS3UriStyle, }, // repo-s3-verify-tls option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_S3_VERIFY_TLS, .val = PARSE_OPTION_FLAG | cfgOptRepoS3VerifyTls, }, { .name = "no-" CFGOPT_REPO1_S3_VERIFY_TLS, .val = PARSE_OPTION_FLAG | PARSE_NEGATE_FLAG | cfgOptRepoS3VerifyTls, }, { .name = "reset-" CFGOPT_REPO1_S3_VERIFY_TLS, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoS3VerifyTls, }, { .name = "repo-s3-verify-ssl", .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoS3VerifyTls, }, { .name = "no-repo-s3-verify-ssl", .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | PARSE_NEGATE_FLAG | cfgOptRepoS3VerifyTls, }, { .name = "repo1-s3-verify-ssl", .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoS3VerifyTls, }, { .name = "no-repo1-s3-verify-ssl", .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | PARSE_NEGATE_FLAG | cfgOptRepoS3VerifyTls, }, // repo-type option and deprecations // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_REPO1_TYPE, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptRepoType, }, { .name = "reset-" CFGOPT_REPO1_TYPE, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptRepoType, }, { .name = "repo-type", .has_arg = required_argument, .val = PARSE_OPTION_FLAG | PARSE_DEPRECATE_FLAG | cfgOptRepoType, }, // resume option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_RESUME, .val = PARSE_OPTION_FLAG | cfgOptResume, }, { .name = "no-" CFGOPT_RESUME, .val = PARSE_OPTION_FLAG | PARSE_NEGATE_FLAG | cfgOptResume, }, { .name = "reset-" CFGOPT_RESUME, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptResume, }, // set option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_SET, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptSet, }, // sort option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_SORT, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptSort, }, // spool-path option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_SPOOL_PATH, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptSpoolPath, }, { .name = "reset-" CFGOPT_SPOOL_PATH, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptSpoolPath, }, // stanza option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_STANZA, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptStanza, }, // start-fast option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_START_FAST, .val = PARSE_OPTION_FLAG | cfgOptStartFast, }, { .name = "no-" CFGOPT_START_FAST, .val = PARSE_OPTION_FLAG | PARSE_NEGATE_FLAG | cfgOptStartFast, }, { .name = "reset-" CFGOPT_START_FAST, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptStartFast, }, // stop-auto option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_STOP_AUTO, .val = PARSE_OPTION_FLAG | cfgOptStopAuto, }, { .name = "no-" CFGOPT_STOP_AUTO, .val = PARSE_OPTION_FLAG | PARSE_NEGATE_FLAG | cfgOptStopAuto, }, { .name = "reset-" CFGOPT_STOP_AUTO, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptStopAuto, }, // tablespace-map option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_TABLESPACE_MAP, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptTablespaceMap, }, { .name = "reset-" CFGOPT_TABLESPACE_MAP, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptTablespaceMap, }, // tablespace-map-all option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_TABLESPACE_MAP_ALL, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptTablespaceMapAll, }, { .name = "reset-" CFGOPT_TABLESPACE_MAP_ALL, .val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptTablespaceMapAll, }, // target option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_TARGET, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptTarget, }, // target-action option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_TARGET_ACTION, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptTargetAction, }, // target-exclusive option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_TARGET_EXCLUSIVE, .val = PARSE_OPTION_FLAG | cfgOptTargetExclusive, }, // target-timeline option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_TARGET_TIMELINE, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptTargetTimeline, }, // type option // ----------------------------------------------------------------------------------------------------------------------------- { .name = CFGOPT_TYPE, .has_arg = required_argument, .val = PARSE_OPTION_FLAG | cfgOptType, }, // Terminate option list { .name = NULL } }; /*********************************************************************************************************************************** Order for option parse resolution ***********************************************************************************************************************************/ static const ConfigOption optionResolveOrder[] = { cfgOptStanza, cfgOptArchiveAsync, cfgOptArchiveGetQueueMax, cfgOptArchivePushQueueMax, cfgOptArchiveTimeout, cfgOptBackupStandby, cfgOptBufferSize, cfgOptChecksumPage, cfgOptCmdSsh, cfgOptCompress, cfgOptCompressLevel, cfgOptCompressLevelNetwork, cfgOptConfig, cfgOptConfigIncludePath, cfgOptConfigPath, cfgOptDbInclude, cfgOptDbTimeout, cfgOptDelta, cfgOptExclude, cfgOptFilter, cfgOptHostId, cfgOptLinkAll, cfgOptLinkMap, cfgOptLockPath, cfgOptLogLevelConsole, cfgOptLogLevelFile, cfgOptLogLevelStderr, cfgOptLogPath, cfgOptLogSubprocess, cfgOptLogTimestamp, cfgOptManifestSaveThreshold, cfgOptNeutralUmask, cfgOptOnline, cfgOptOutput, cfgOptPgHost, cfgOptPgHost + 1, cfgOptPgHost + 2, cfgOptPgHost + 3, cfgOptPgHost + 4, cfgOptPgHost + 5, cfgOptPgHost + 6, cfgOptPgHost + 7, cfgOptPgHostCmd, cfgOptPgHostCmd + 1, cfgOptPgHostCmd + 2, cfgOptPgHostCmd + 3, cfgOptPgHostCmd + 4, cfgOptPgHostCmd + 5, cfgOptPgHostCmd + 6, cfgOptPgHostCmd + 7, cfgOptPgHostConfig, cfgOptPgHostConfig + 1, cfgOptPgHostConfig + 2, cfgOptPgHostConfig + 3, cfgOptPgHostConfig + 4, cfgOptPgHostConfig + 5, cfgOptPgHostConfig + 6, cfgOptPgHostConfig + 7, cfgOptPgHostConfigIncludePath, cfgOptPgHostConfigIncludePath + 1, cfgOptPgHostConfigIncludePath + 2, cfgOptPgHostConfigIncludePath + 3, cfgOptPgHostConfigIncludePath + 4, cfgOptPgHostConfigIncludePath + 5, cfgOptPgHostConfigIncludePath + 6, cfgOptPgHostConfigIncludePath + 7, cfgOptPgHostConfigPath, cfgOptPgHostConfigPath + 1, cfgOptPgHostConfigPath + 2, cfgOptPgHostConfigPath + 3, cfgOptPgHostConfigPath + 4, cfgOptPgHostConfigPath + 5, cfgOptPgHostConfigPath + 6, cfgOptPgHostConfigPath + 7, cfgOptPgHostPort, cfgOptPgHostPort + 1, cfgOptPgHostPort + 2, cfgOptPgHostPort + 3, cfgOptPgHostPort + 4, cfgOptPgHostPort + 5, cfgOptPgHostPort + 6, cfgOptPgHostPort + 7, cfgOptPgHostUser, cfgOptPgHostUser + 1, cfgOptPgHostUser + 2, cfgOptPgHostUser + 3, cfgOptPgHostUser + 4, cfgOptPgHostUser + 5, cfgOptPgHostUser + 6, cfgOptPgHostUser + 7, cfgOptPgPath, cfgOptPgPath + 1, cfgOptPgPath + 2, cfgOptPgPath + 3, cfgOptPgPath + 4, cfgOptPgPath + 5, cfgOptPgPath + 6, cfgOptPgPath + 7, cfgOptPgPort, cfgOptPgPort + 1, cfgOptPgPort + 2, cfgOptPgPort + 3, cfgOptPgPort + 4, cfgOptPgPort + 5, cfgOptPgPort + 6, cfgOptPgPort + 7, cfgOptPgSocketPath, cfgOptPgSocketPath + 1, cfgOptPgSocketPath + 2, cfgOptPgSocketPath + 3, cfgOptPgSocketPath + 4, cfgOptPgSocketPath + 5, cfgOptPgSocketPath + 6, cfgOptPgSocketPath + 7, cfgOptPgUser, cfgOptPgUser + 1, cfgOptPgUser + 2, cfgOptPgUser + 3, cfgOptPgUser + 4, cfgOptPgUser + 5, cfgOptPgUser + 6, cfgOptPgUser + 7, cfgOptProcess, cfgOptProcessMax, cfgOptProtocolTimeout, cfgOptRecurse, cfgOptRemoteType, cfgOptRepoCipherType, cfgOptRepoHardlink, cfgOptRepoHost, cfgOptRepoHostCmd, cfgOptRepoHostConfig, cfgOptRepoHostConfigIncludePath, cfgOptRepoHostConfigPath, cfgOptRepoHostPort, cfgOptRepoHostUser, cfgOptRepoPath, cfgOptRepoRetentionArchive, cfgOptRepoRetentionArchiveType, cfgOptRepoRetentionDiff, cfgOptRepoRetentionFull, cfgOptRepoType, cfgOptResume, cfgOptSet, cfgOptSort, cfgOptSpoolPath, cfgOptStartFast, cfgOptStopAuto, cfgOptTablespaceMap, cfgOptTablespaceMapAll, cfgOptType, cfgOptArchiveCheck, cfgOptArchiveCopy, cfgOptForce, cfgOptRecoveryOption, cfgOptRepoCipherPass, cfgOptRepoS3Bucket, cfgOptRepoS3CaFile, cfgOptRepoS3CaPath, cfgOptRepoS3Endpoint, cfgOptRepoS3Host, cfgOptRepoS3Key, cfgOptRepoS3KeySecret, cfgOptRepoS3Port, cfgOptRepoS3Region, cfgOptRepoS3Token, cfgOptRepoS3UriStyle, cfgOptRepoS3VerifyTls, cfgOptTarget, cfgOptTargetAction, cfgOptTargetExclusive, cfgOptTargetTimeline, }; pgbackrest-release-2.24/src/config/parse.c000066400000000000000000001552571362531507100205400ustar00rootroot00000000000000/*********************************************************************************************************************************** Command and Option Parse ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include "common/debug.h" #include "common/error.h" #include "common/ini.h" #include "common/log.h" #include "common/memContext.h" #include "common/regExp.h" #include "config/parse.h" #include "storage/helper.h" #include "version.h" /*********************************************************************************************************************************** Standard config file name and old default path and name ***********************************************************************************************************************************/ #define PGBACKREST_CONFIG_FILE PROJECT_BIN ".conf" #define PGBACKREST_CONFIG_ORIG_PATH_FILE "/etc/" PGBACKREST_CONFIG_FILE STRING_STATIC(PGBACKREST_CONFIG_ORIG_PATH_FILE_STR, PGBACKREST_CONFIG_ORIG_PATH_FILE); /*********************************************************************************************************************************** Prefix for environment variables ***********************************************************************************************************************************/ #define PGBACKREST_ENV "PGBACKREST_" #define PGBACKREST_ENV_SIZE (sizeof(PGBACKREST_ENV) - 1) // In some environments this will not be extern'd extern char **environ; /*********************************************************************************************************************************** Standard config include path name ***********************************************************************************************************************************/ #define PGBACKREST_CONFIG_INCLUDE_PATH "conf.d" /*********************************************************************************************************************************** Option value constants ***********************************************************************************************************************************/ VARIANT_STRDEF_STATIC(OPTION_VALUE_0, "0"); VARIANT_STRDEF_STATIC(OPTION_VALUE_1, "1"); /*********************************************************************************************************************************** Parse option flags ***********************************************************************************************************************************/ // Offset the option values so they don't conflict with getopt_long return codes #define PARSE_OPTION_FLAG (1 << 30) // Add a flag for negation rather than checking "--no-" #define PARSE_NEGATE_FLAG (1 << 29) // Add a flag for reset rather than checking "--reset-" #define PARSE_RESET_FLAG (1 << 28) // Indicate that option name has been deprecated and will be removed in a future release #define PARSE_DEPRECATE_FLAG (1 << 27) // Mask to exclude all flags and get at the actual option id (only 12 bits allowed for option id, the rest reserved for flags) #define PARSE_OPTION_MASK 0xFFF /*********************************************************************************************************************************** Include automatically generated data structure for getopt_long() ***********************************************************************************************************************************/ #include "config/parse.auto.c" /*********************************************************************************************************************************** Struct to hold options parsed from the command line ***********************************************************************************************************************************/ typedef struct ParseOption { bool found:1; // Was the option found on the command line? bool negate:1; // Was the option negated on the command line? bool reset:1; // Was the option reset on the command line? unsigned int source:2; // Where was to option found? StringList *valueList; // List of values found } ParseOption; #define FUNCTION_LOG_PARSE_OPTION_FORMAT(value, buffer, bufferSize) \ typeToLog("ParseOption", buffer, bufferSize) /*********************************************************************************************************************************** Find an option by name in the option list ***********************************************************************************************************************************/ static unsigned int optionFind(const String *option) { unsigned int optionIdx = 0; while (optionList[optionIdx].name != NULL) { if (strcmp(strPtr(option), optionList[optionIdx].name) == 0) break; optionIdx++; } return optionIdx; } /*********************************************************************************************************************************** Convert the value passed into bytes and update valueDbl for range checking ***********************************************************************************************************************************/ static double sizeQualifierToMultiplier(char qualifier) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(CHAR, qualifier); FUNCTION_TEST_END(); double result; switch (qualifier) { case 'b': { result = 1; break; } case 'k': { result = 1024; break; } case 'm': { result = 1024 * 1024; break; } case 'g': { result = 1024 * 1024 * 1024; break; } case 't': { result = 1024LL * 1024LL * 1024LL * 1024LL; break; } case 'p': { result = 1024LL * 1024LL * 1024LL * 1024LL * 1024LL; break; } default: THROW_FMT(AssertError, "'%c' is not a valid size qualifier", qualifier); } FUNCTION_TEST_RETURN(result); } static void convertToByte(String **value, double *valueDbl) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM_P(STRING, value); FUNCTION_LOG_PARAM_P(DOUBLE, valueDbl); FUNCTION_LOG_END(); ASSERT(valueDbl != NULL); // Make a copy of the value so it is not updated until we know the conversion will succeed String *result = strLower(strDup(*value)); // Match the value against possible values if (regExpMatchOne(STRDEF("^[0-9]+(kb|k|mb|m|gb|g|tb|t|pb|p|b)*$"), result)) { // Get the character array and size const char *strArray = strPtr(result); size_t size = strSize(result); int chrPos = -1; // If there is a 'b' on the end, then see if the previous character is a number if (strArray[size - 1] == 'b') { // If the previous character is a number, then the letter to look at is 'b' which is the last position else it is in the // next to last position (e.g. kb - so the 'k' is the position of interest). Only need to test for <= 9 since the regex // enforces the format. if (strArray[size - 2] <= '9') chrPos = (int)(size - 1); else chrPos = (int)(size - 2); } // else if there is no 'b' at the end but the last position is not a number then it must be one of the letters, e.g. 'k' else if (strArray[size - 1] > '9') chrPos = (int)(size - 1); double multiplier = 1; // If a letter was found calculate multiplier, else do nothing since assumed value is already in bytes if (chrPos != -1) { multiplier = sizeQualifierToMultiplier(strArray[chrPos]); // Remove any letters strTrunc(result, chrPos); } // Convert string to bytes double newDbl = varDblForce(VARSTR(result)) * multiplier; result = varStrForce(VARDBL(newDbl)); // If nothing has blown up then safe to overwrite the original values *valueDbl = newDbl; *value = result; } else THROW_FMT(FormatError, "value '%s' is not valid", strPtr(*value)); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Load the configuration file(s) The parent mem context is used. Defaults are passed to make testing easier. Rules: - config and config-include-path are default. In this case, the config file will be loaded, if it exists, and *.conf files in the config-include-path will be appended, if they exist. A missing/empty dir will be ignored except that the original default for the config file will be attempted to be loaded if the current default is not found. - config only is specified. Only the specified config file will be loaded and is required. The default config-include-path will be ignored. - config and config-path are specified. The specified config file will be loaded and is required. The overridden default of the config-include-path (/conf.d) will be loaded if exists but is not required. - config-include-path only is specified. *.conf files in the config-include-path will be loaded and the path is required to exist. The default config will be be loaded if it exists. - config-include-path and config-path are specified. The *.conf files in the config-include-path will be loaded and the directory passed must exist. The overridden default of the config file path (/pgbackrest.conf) will be loaded if exists but is not required. - If the config and config-include-path are specified. The config file will be loaded and is expected to exist and *.conf files in the config-include-path will be appended and at least one is expected to exist. - If --no-config is specified and --config-include-path is specified then only *.conf files in the config-include-path will be loaded; the directory is required. - If --no-config is specified and --config-path is specified then only *.conf files in the overridden default config-include-path (/conf.d) will be loaded if exist but not required. - If --no-config is specified and neither --config-include-path nor --config-path are specified then no configs will be loaded. - If --config-path only, the defaults for config and config-include-path will be changed to use that as a base path but the files will not be required to exist since this is a default override. ***********************************************************************************************************************************/ static void cfgFileLoadPart(String **config, const Buffer *configPart) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM_P(STRING, config); FUNCTION_LOG_PARAM(BUFFER, configPart); FUNCTION_LOG_END(); if (configPart != NULL) { String *configPartStr = strNewBuf(configPart); // Validate the file by parsing it as an Ini object. If the file is not properly formed, an error will occur. if (strSize(configPartStr) > 0) { Ini *configPartIni = iniNew(); iniParse(configPartIni, configPartStr); // Create the result config file if (*config == NULL) *config = strNew(""); // Else add an LF in case the previous file did not end with one else // Add the config part to the result config file strCat(*config, "\n"); strCat(*config, strPtr(configPartStr)); } } FUNCTION_LOG_RETURN_VOID(); } static String * cfgFileLoad( // NOTE: Passing defaults to enable more complete test coverage const ParseOption *optionList, // All options and their current settings const String *optConfigDefault, // Current default for --config option const String *optConfigIncludePathDefault, // Current default for --config-include-path option const String *origConfigDefault) // Original --config option default (/etc/pgbackrest.conf) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM_P(PARSE_OPTION, optionList); FUNCTION_LOG_PARAM(STRING, optConfigDefault); FUNCTION_LOG_PARAM(STRING, optConfigIncludePathDefault); FUNCTION_LOG_PARAM(STRING, origConfigDefault); FUNCTION_LOG_END(); ASSERT(optionList != NULL); ASSERT(optConfigDefault != NULL); ASSERT(optConfigIncludePathDefault != NULL); ASSERT(origConfigDefault != NULL); bool loadConfig = true; bool loadConfigInclude = true; // If the option is specified on the command line, then found will be true meaning the file is required to exist, // else it is optional bool configRequired = optionList[cfgOptConfig].found; bool configIncludeRequired = optionList[cfgOptConfigIncludePath].found; // Save default for later determining if must check old original default config path const String *optConfigDefaultCurrent = optConfigDefault; // If the config-path option is found on the command line, then its value will override the base path defaults for config and // config-include-path if (optionList[cfgOptConfigPath].found) { optConfigDefault = strNewFmt("%s/%s", strPtr(strLstGet(optionList[cfgOptConfigPath].valueList, 0)), strPtr(strBase(optConfigDefault))); optConfigIncludePathDefault = strNewFmt("%s/%s", strPtr(strLstGet(optionList[cfgOptConfigPath].valueList, 0)), PGBACKREST_CONFIG_INCLUDE_PATH); } // If the --no-config option was passed then do not load the config file if (optionList[cfgOptConfig].negate) { loadConfig = false; configRequired = false; } // If --config option is specified on the command line but neither the --config-include-path nor the config-path are passed, // then do not attempt to load the include files if (optionList[cfgOptConfig].found && !(optionList[cfgOptConfigIncludePath].found || optionList[cfgOptConfigPath].found)) { loadConfigInclude = false; configIncludeRequired = false; } String *result = NULL; // Load the main config file if (loadConfig) { const String *configFileName = NULL; // Get the config file name from the command-line if it exists else default if (optionList[cfgOptConfig].found) configFileName = strLstGet(optionList[cfgOptConfig].valueList, 0); else configFileName = optConfigDefault; // Load the config file Buffer *buffer = storageGetP(storageNewReadP(storageLocal(), configFileName, .ignoreMissing = !configRequired)); // Convert the contents of the file buffer to the config string object if (buffer != NULL) result = strNewBuf(buffer); else if (strEq(configFileName, optConfigDefaultCurrent)) { // If confg is current default and it was not found, attempt to load the config file from the old default location buffer = storageGetP(storageNewReadP(storageLocal(), origConfigDefault, .ignoreMissing = !configRequired)); if (buffer != NULL) result = strNewBuf(buffer); } } // Load *.conf files from the include directory if (loadConfigInclude) { if (result != NULL) { // Validate the file by parsing it as an Ini object. If the file is not properly formed, an error will occur. Ini *ini = iniNew(); iniParse(ini, result); } const String *configIncludePath = NULL; // Get the config include path from the command-line if it exists else default if (optionList[cfgOptConfigIncludePath].found) configIncludePath = strLstGet(optionList[cfgOptConfigIncludePath].valueList, 0); else configIncludePath = optConfigIncludePathDefault; // Get a list of conf files from the specified path -error on missing directory if the option was passed on the command line StringList *list = storageListP( storageLocal(), configIncludePath, .expression = STRDEF(".+\\.conf$"), .errorOnMissing = configIncludeRequired, .nullOnMissing = !configIncludeRequired); // If conf files are found, then add them to the config string if (list != NULL && strLstSize(list) > 0) { // Sort the list for reproducibility only -- order does not matter strLstSort(list, sortOrderAsc); for (unsigned int listIdx = 0; listIdx < strLstSize(list); listIdx++) { cfgFileLoadPart( &result, storageGetP( storageNewReadP( storageLocal(), strNewFmt("%s/%s", strPtr(configIncludePath), strPtr(strLstGet(list, listIdx))), .ignoreMissing = true))); } } } FUNCTION_LOG_RETURN(STRING, result); } /*********************************************************************************************************************************** Parse the command-line arguments and config file to produce final config data ??? Add validation of section names and check all sections for invalid options in the check command. It's too expensive to add the logic to this critical path code. ***********************************************************************************************************************************/ void configParse(unsigned int argListSize, const char *argList[], bool resetLogLevel) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(UINT, argListSize); FUNCTION_LOG_PARAM(CHARPY, argList); FUNCTION_LOG_END(); // Initialize configuration cfgInit(); MEM_CONTEXT_TEMP_BEGIN() { // Set the exe cfgExeSet(STR(argList[0])); // Phase 1: parse command line parameters // ------------------------------------------------------------------------------------------------------------------------- int option; // Code returned by getopt_long int optionListIdx; // Index of option is list (if an option was returned) bool argFound = false; // Track args found to decide on error or help at the end StringList *commandParamList = NULL; // List of command parameters // Reset optind to 1 in case getopt_long has been called before optind = 1; // Don't error automatically on unknown options - they will be processed in the loop below opterr = false; // List of parsed options ParseOption parseOptionList[CFG_OPTION_TOTAL] = {{.found = false}}; // Only the first non-option parameter should be treated as a command so track if the command has been set bool commandSet = false; while ((option = getopt_long((int)argListSize, (char **)argList, "-:", optionList, &optionListIdx)) != -1) { switch (option) { // Parse arguments that are not options, i.e. commands and parameters passed to commands case 1: { // The first argument should be the command if (!commandSet) { const char *command = argList[optind - 1]; // Try getting the command from the valid command list ConfigCommand commandId = cfgCommandId(command, false); ConfigCommandRole commandRoleId = cfgCmdRoleDefault; // If not successful then a command role may be appended if (commandId == cfgCmdNone) { const StringList *commandPart = strLstNewSplit(STR(command), COLON_STR); if (strLstSize(commandPart) == 2) { // Get command id commandId = cfgCommandId(strPtr(strLstGet(commandPart, 0)), false); // If command id is valid then get command role id if (commandId != cfgCmdNone) commandRoleId = cfgCommandRoleEnum(strLstGet(commandPart, 1)); } } // Error when command does not exist if (commandId == cfgCmdNone) THROW_FMT(CommandInvalidError, "invalid command '%s'", command); // Set the command cfgCommandSet(commandId, commandRoleId); if (cfgCommand() == cfgCmdHelp) cfgCommandHelpSet(true); else commandSet = true; } // Additional arguments are command arguments else { if (commandParamList == NULL) commandParamList = strLstNew(); strLstAdd(commandParamList, STR(argList[optind - 1])); } break; } // If the option is unknown then error case '?': THROW_FMT(OptionInvalidError, "invalid option '%s'", argList[optind - 1]); // If the option is missing an argument then error case ':': THROW_FMT(OptionInvalidError, "option '%s' requires argument", argList[optind - 1]); // Parse valid option default: { // Get option id and flags from the option code ConfigOption optionId = option & PARSE_OPTION_MASK; bool negate = option & PARSE_NEGATE_FLAG; bool reset = option & PARSE_RESET_FLAG; // Make sure the option id is valid ASSERT(optionId < CFG_OPTION_TOTAL); // Error if this option is secure and cannot be passed on the command line if (cfgDefOptionSecure(cfgOptionDefIdFromId(optionId))) { THROW_FMT( OptionInvalidError, "option '%s' is not allowed on the command-line\n" "HINT: this option could expose secrets in the process list.\n" "HINT: specify the option in a configuration file or an environment variable instead.", cfgOptionName(optionId)); } // If the the option has not been found yet then set it if (!parseOptionList[optionId].found) { parseOptionList[optionId].found = true; parseOptionList[optionId].negate = negate; parseOptionList[optionId].reset = reset; parseOptionList[optionId].source = cfgSourceParam; // Only set the argument if the option requires one if (optionList[optionListIdx].has_arg == required_argument) { parseOptionList[optionId].valueList = strLstNew(); strLstAdd(parseOptionList[optionId].valueList, STR(optarg)); } } else { // Make sure option is not negated more than once. It probably wouldn't hurt anything to accept this case // but there's no point in allowing the user to be sloppy. if (parseOptionList[optionId].negate && negate) THROW_FMT(OptionInvalidError, "option '%s' is negated multiple times", cfgOptionName(optionId)); // Make sure option is not reset more than once. Same justification as negate. if (parseOptionList[optionId].reset && reset) THROW_FMT(OptionInvalidError, "option '%s' is reset multiple times", cfgOptionName(optionId)); // Don't allow an option to be both negated and reset if ((parseOptionList[optionId].reset && negate) || (parseOptionList[optionId].negate && reset)) THROW_FMT(OptionInvalidError, "option '%s' cannot be negated and reset", cfgOptionName(optionId)); // Don't allow an option to be both set and negated if (parseOptionList[optionId].negate != negate) THROW_FMT(OptionInvalidError, "option '%s' cannot be set and negated", cfgOptionName(optionId)); // Don't allow an option to be both set and reset if (parseOptionList[optionId].reset != reset) THROW_FMT(OptionInvalidError, "option '%s' cannot be set and reset", cfgOptionName(optionId)); // Add the argument if (optionList[optionListIdx].has_arg == required_argument && cfgDefOptionMulti(cfgOptionDefIdFromId(optionId))) { strLstAdd(parseOptionList[optionId].valueList, strNew(optarg)); } // Error if the option does not accept multiple arguments else THROW_FMT(OptionInvalidError, "option '%s' cannot be set multiple times", cfgOptionName(optionId)); } break; } } // Arg has been found argFound = true; } // Handle command not found if (!commandSet && !cfgCommandHelp()) { // If there are args then error if (argFound) THROW_FMT(CommandRequiredError, "no command found"); // Otherwise set the command to help cfgCommandHelpSet(true); } // Set command params if (commandParamList != NULL) { if (!cfgCommandHelp() && !cfgParameterAllowed()) THROW(ParamInvalidError, "command does not allow parameters"); cfgCommandParamSet(commandParamList); } // Enable logging (except for local and remote commands) so config file warnings will be output if (cfgCommandRole() != cfgCmdRoleLocal && cfgCommandRole() != cfgCmdRoleRemote && resetLogLevel) logInit(logLevelWarn, logLevelWarn, logLevelOff, false, 1); // Only continue if command options need to be validated, i.e. a real command is running or we are getting help for a // specific command and would like to display actual option values in the help. if (cfgCommand() != cfgCmdNone && cfgCommand() != cfgCmdVersion && cfgCommand() != cfgCmdHelp) { // Phase 2: parse environment variables // --------------------------------------------------------------------------------------------------------------------- ConfigDefineCommand commandDefId = cfgCommandDefIdFromId(cfgCommand()); unsigned int environIdx = 0; // Loop through all environment variables and look for our env vars by matching the prefix while (environ[environIdx] != NULL) { const char *keyValue = environ[environIdx]; environIdx++; if (strstr(keyValue, PGBACKREST_ENV) == keyValue) { // Find the first = char const char *equalPtr = strchr(keyValue, '='); ASSERT(equalPtr != NULL); // Get key and value const String *key = strReplaceChr( strLower(strNewN(keyValue + PGBACKREST_ENV_SIZE, (size_t)(equalPtr - (keyValue + PGBACKREST_ENV_SIZE)))), '_', '-'); const String *value = STR(equalPtr + 1); // Find the option unsigned int optionIdx = optionFind(key); // Warn if the option not found if (optionList[optionIdx].name == NULL) { LOG_WARN_FMT("environment contains invalid option '%s'", strPtr(key)); continue; } // Warn if negate option found in env else if (optionList[optionIdx].val & PARSE_NEGATE_FLAG) { LOG_WARN_FMT("environment contains invalid negate option '%s'", strPtr(key)); continue; } // Warn if reset option found in env else if (optionList[optionIdx].val & PARSE_RESET_FLAG) { LOG_WARN_FMT("environment contains invalid reset option '%s'", strPtr(key)); continue; } ConfigOption optionId = optionList[optionIdx].val & PARSE_OPTION_MASK; ConfigDefineOption optionDefId = cfgOptionDefIdFromId(optionId); // Continue if the option is not valid for this command if (!cfgDefOptionValid(commandDefId, optionDefId)) continue; if (strSize(value) == 0) THROW_FMT(OptionInvalidValueError, "environment variable '%s' must have a value", strPtr(key)); // Continue if the option has already been specified on the command line if (parseOptionList[optionId].found) continue; parseOptionList[optionId].found = true; parseOptionList[optionId].source = cfgSourceConfig; // Convert boolean to string if (cfgDefOptionType(optionDefId) == cfgDefOptTypeBoolean) { if (strEqZ(value, "n")) parseOptionList[optionId].negate = true; else if (!strEqZ(value, "y")) THROW_FMT(OptionInvalidValueError, "environment boolean option '%s' must be 'y' or 'n'", strPtr(key)); } // Else split list/hash into separate values else if (cfgDefOptionMulti(optionDefId)) { parseOptionList[optionId].valueList = strLstNewSplitZ(value, ":"); } // Else add the string value else { parseOptionList[optionId].valueList = strLstNew(); strLstAdd(parseOptionList[optionId].valueList, value); } } } // Phase 3: parse config file unless --no-config passed // --------------------------------------------------------------------------------------------------------------------- // Load the configuration file(s) String *configString = cfgFileLoad(parseOptionList, STR(cfgDefOptionDefault(commandDefId, cfgOptionDefIdFromId(cfgOptConfig))), STR(cfgDefOptionDefault(commandDefId, cfgOptionDefIdFromId(cfgOptConfigIncludePath))), PGBACKREST_CONFIG_ORIG_PATH_FILE_STR); if (configString != NULL) { Ini *config = iniNew(); iniParse(config, configString); // Get the stanza name String *stanza = NULL; if (parseOptionList[cfgOptStanza].found) stanza = strLstGet(parseOptionList[cfgOptStanza].valueList, 0); // Build list of sections to search for options StringList *sectionList = strLstNew(); if (stanza != NULL) { strLstAdd(sectionList, strNewFmt("%s:%s", strPtr(stanza), cfgCommandName(cfgCommand()))); strLstAdd(sectionList, stanza); } strLstAdd(sectionList, strNewFmt(CFGDEF_SECTION_GLOBAL ":%s", cfgCommandName(cfgCommand()))); strLstAdd(sectionList, CFGDEF_SECTION_GLOBAL_STR); // Loop through sections to search for options for (unsigned int sectionIdx = 0; sectionIdx < strLstSize(sectionList); sectionIdx++) { String *section = strLstGet(sectionList, sectionIdx); StringList *keyList = iniSectionKeyList(config, section); KeyValue *optionFound = kvNew(); // Loop through keys to search for options for (unsigned int keyIdx = 0; keyIdx < strLstSize(keyList); keyIdx++) { String *key = strLstGet(keyList, keyIdx); // Find the optionName in the main list unsigned int optionIdx = optionFind(key); // Warn if the option not found if (optionList[optionIdx].name == NULL) { LOG_WARN_FMT("configuration file contains invalid option '%s'", strPtr(key)); continue; } // Warn if negate option found in config else if (optionList[optionIdx].val & PARSE_NEGATE_FLAG) { LOG_WARN_FMT("configuration file contains negate option '%s'", strPtr(key)); continue; } // Warn if reset option found in config else if (optionList[optionIdx].val & PARSE_RESET_FLAG) { LOG_WARN_FMT("configuration file contains reset option '%s'", strPtr(key)); continue; } ConfigOption optionId = optionList[optionIdx].val & PARSE_OPTION_MASK; ConfigDefineOption optionDefId = cfgOptionDefIdFromId(optionId); /// Warn if this option should be command-line only if (cfgDefOptionSection(optionDefId) == cfgDefSectionCommandLine) { LOG_WARN_FMT("configuration file contains command-line only option '%s'", strPtr(key)); continue; } // Make sure this option does not appear in the same section with an alternate name const Variant *optionFoundKey = VARINT(optionId); const Variant *optionFoundName = kvGet(optionFound, optionFoundKey); if (optionFoundName != NULL) { THROW_FMT( OptionInvalidError, "configuration file contains duplicate options ('%s', '%s') in section '[%s]'", strPtr(key), strPtr(varStr(optionFoundName)), strPtr(section)); } else kvPut(optionFound, optionFoundKey, VARSTR(key)); // Continue if the option is not valid for this command if (!cfgDefOptionValid(commandDefId, optionDefId)) { // Warn if it is in a command section if (sectionIdx % 2 == 0) { LOG_WARN_FMT( "configuration file contains option '%s' invalid for section '%s'", strPtr(key), strPtr(section)); continue; } continue; } // Continue if stanza option is in a global section if (cfgDefOptionSection(optionDefId) == cfgDefSectionStanza && strBeginsWithZ(section, CFGDEF_SECTION_GLOBAL)) { LOG_WARN_FMT( "configuration file contains stanza-only option '%s' in global section '%s'", strPtr(key), strPtr(section)); continue; } // Continue if this option has already been found in another section or command-line/environment if (parseOptionList[optionId].found) continue; parseOptionList[optionId].found = true; parseOptionList[optionId].source = cfgSourceConfig; // Process list if (iniSectionKeyIsList(config, section, key)) { // Error if the option cannot be specified multiple times if (!cfgDefOptionMulti(optionDefId)) THROW_FMT(OptionInvalidError, "option '%s' cannot be set multiple times", cfgOptionName(optionId)); parseOptionList[optionId].valueList = iniGetList(config, section, key); } else { // Get the option value const String *value = iniGet(config, section, key); if (strSize(value) == 0) { THROW_FMT( OptionInvalidValueError, "section '%s', key '%s' must have a value", strPtr(section), strPtr(key)); } if (cfgDefOptionType(optionDefId) == cfgDefOptTypeBoolean) { if (strEqZ(value, "n")) parseOptionList[optionId].negate = true; else if (!strEqZ(value, "y")) THROW_FMT(OptionInvalidValueError, "boolean option '%s' must be 'y' or 'n'", strPtr(key)); } // Else add the string value else { parseOptionList[optionId].valueList = strLstNew(); strLstAdd(parseOptionList[optionId].valueList, value); } } } } } // Phase 4: validate option definitions and load into configuration // --------------------------------------------------------------------------------------------------------------------- for (unsigned int optionOrderIdx = 0; optionOrderIdx < CFG_OPTION_TOTAL; optionOrderIdx++) { // Validate options based on the option resolve order. This allows resolving all options in a single pass. ConfigOption optionId = optionResolveOrder[optionOrderIdx]; // Get the option data parsed from the command-line ParseOption *parseOption = &parseOptionList[optionId]; // Get the option definition id -- will be used to look up option rules ConfigDefineOption optionDefId = cfgOptionDefIdFromId(optionId); ConfigDefineOptionType optionDefType = cfgDefOptionType(optionDefId); // Error if the option is not valid for this command if (parseOption->found && !cfgDefOptionValid(commandDefId, optionDefId)) { THROW_FMT( OptionInvalidError, "option '%s' not valid for command '%s'", cfgOptionName(optionId), cfgCommandName(cfgCommand())); } // Is the option valid for this command? If not, there is nothing more to do. cfgOptionValidSet(optionId, cfgDefOptionValid(commandDefId, optionDefId)); if (!cfgOptionValid(optionId)) continue; // Is the value set for this option? bool optionSet = parseOption->found && (optionDefType == cfgDefOptTypeBoolean || !parseOption->negate) && !parseOption->reset; // Set negate flag cfgOptionNegateSet(optionId, parseOption->negate); // Set reset flag cfgOptionResetSet(optionId, parseOption->reset); // Check option dependencies bool dependResolved = true; if (cfgDefOptionDepend(commandDefId, optionDefId)) { ConfigOption dependOptionId = cfgOptionIdFromDefId(cfgDefOptionDependOption(commandDefId, optionDefId), cfgOptionIndex(optionId)); ConfigDefineOption dependOptionDefId = cfgOptionDefIdFromId(dependOptionId); ConfigDefineOptionType dependOptionDefType = cfgDefOptionType(dependOptionDefId); // Get the depend option value const Variant *dependValue = cfgOption(dependOptionId); if (dependValue != NULL) { if (dependOptionDefType == cfgDefOptTypeBoolean) { if (cfgOptionBool(dependOptionId)) dependValue = OPTION_VALUE_1; else dependValue = OPTION_VALUE_0; } } // Can't resolve if the depend option value is null if (dependValue == NULL) { dependResolved = false; // If depend not resolved and option value is set on the command-line then error. See unresolved list // depend below for a detailed explanation. if (optionSet && parseOption->source == cfgSourceParam) { THROW_FMT( OptionInvalidError, "option '%s' not valid without option '%s'", cfgOptionName(optionId), cfgOptionName(dependOptionId)); } } // If a depend list exists, make sure the value is in the list else if (cfgDefOptionDependValueTotal(commandDefId, optionDefId) > 0) { dependResolved = cfgDefOptionDependValueValid(commandDefId, optionDefId, strPtr(varStr(dependValue))); // If depend not resolved and option value is set on the command-line then error. It's OK to have // unresolved options in the config file because they may be there for another command. For instance, // spool-path is only loaded for the archive-push command when archive-async=y, and the presence of // spool-path in the config file should not cause an error here, it will just end up null. if (!dependResolved && optionSet && parseOption->source == cfgSourceParam) { // Get the depend option name const String *dependOptionName = STR(cfgOptionName(dependOptionId)); // Build the list of possible depend values StringList *dependValueList = strLstNew(); for (unsigned int listIdx = 0; listIdx < cfgDefOptionDependValueTotal(commandDefId, optionDefId); listIdx++) { const char *dependValue = cfgDefOptionDependValue(commandDefId, optionDefId, listIdx); // Build list based on depend option type if (dependOptionDefType == cfgDefOptTypeBoolean) { // Boolean outputs depend option name as no-* when false if (strcmp(dependValue, "0") == 0) dependOptionName = strNewFmt("no-%s", cfgOptionName(dependOptionId)); } else { ASSERT(dependOptionDefType == cfgDefOptTypePath || dependOptionDefType == cfgDefOptTypeString); strLstAdd(dependValueList, strNewFmt("'%s'", dependValue)); } } // Build the error string const String *errorValue = EMPTY_STR; if (strLstSize(dependValueList) == 1) errorValue = strNewFmt(" = %s", strPtr(strLstGet(dependValueList, 0))); else if (strLstSize(dependValueList) > 1) errorValue = strNewFmt(" in (%s)", strPtr(strLstJoin(dependValueList, ", "))); // Throw the error THROW( OptionInvalidError, strPtr( strNewFmt( "option '%s' not valid without option '%s'%s", cfgOptionName(optionId), strPtr(dependOptionName), strPtr(errorValue)))); } } } // Is the option resolved? if (dependResolved) { // Is the option set? if (optionSet) { if (optionDefType == cfgDefOptTypeBoolean) { cfgOptionSet(optionId, parseOption->source, VARBOOL(!parseOption->negate)); } else if (optionDefType == cfgDefOptTypeHash) { Variant *value = varNewKv(kvNew()); KeyValue *keyValue = varKv(value); for (unsigned int listIdx = 0; listIdx < strLstSize(parseOption->valueList); listIdx++) { const char *pair = strPtr(strLstGet(parseOption->valueList, listIdx)); const char *equal = strchr(pair, '='); if (equal == NULL) { THROW_FMT( OptionInvalidError, "key/value '%s' not valid for '%s' option", strPtr(strLstGet(parseOption->valueList, listIdx)), cfgOptionName(optionId)); } kvPut(keyValue, VARSTR(strNewN(pair, (size_t)(equal - pair))), VARSTRZ(equal + 1)); } cfgOptionSet(optionId, parseOption->source, value); } else if (optionDefType == cfgDefOptTypeList) { cfgOptionSet(optionId, parseOption->source, varNewVarLst(varLstNewStrLst(parseOption->valueList))); } else { String *value = strLstGet(parseOption->valueList, 0); // If a numeric type check that the value is valid if (optionDefType == cfgDefOptTypeInteger || optionDefType == cfgDefOptTypeFloat || optionDefType == cfgDefOptTypeSize) { double valueDbl = 0; // Check that the value can be converted TRY_BEGIN() { if (optionDefType == cfgDefOptTypeInteger) { valueDbl = (double)varInt64Force(VARSTR(value)); } else if (optionDefType == cfgDefOptTypeSize) { convertToByte(&value, &valueDbl); } else valueDbl = varDblForce(VARSTR(value)); } CATCH_ANY() { THROW_FMT( OptionInvalidValueError, "'%s' is not valid for '%s' option", strPtr(value), cfgOptionName(optionId)); } TRY_END(); // Check value range if (cfgDefOptionAllowRange(commandDefId, optionDefId) && (valueDbl < cfgDefOptionAllowRangeMin(commandDefId, optionDefId) || valueDbl > cfgDefOptionAllowRangeMax(commandDefId, optionDefId))) { THROW_FMT( OptionInvalidValueError, "'%s' is out of range for '%s' option", strPtr(value), cfgOptionName(optionId)); } } // Else if path make sure it is valid else if (optionDefType == cfgDefOptTypePath) { // Make sure it is long enough to be a path if (strSize(value) == 0) { THROW_FMT( OptionInvalidValueError, "'%s' must be >= 1 character for '%s' option", strPtr(value), cfgOptionName(optionId)); } // Make sure it starts with / if (!strBeginsWithZ(value, "/")) { THROW_FMT( OptionInvalidValueError, "'%s' must begin with / for '%s' option", strPtr(value), cfgOptionName(optionId)); } // Make sure there are no occurrences of // if (strstr(strPtr(value), "//") != NULL) { THROW_FMT( OptionInvalidValueError, "'%s' cannot contain // for '%s' option", strPtr(value), cfgOptionName(optionId)); } // If the path ends with a / we'll strip it off (unless the value is just /) if (strEndsWithZ(value, "/") && strSize(value) != 1) strTrunc(value, (int)strSize(value) - 1); } // If the option has an allow list then check it if (cfgDefOptionAllowList(commandDefId, optionDefId) && !cfgDefOptionAllowListValueValid(commandDefId, optionDefId, strPtr(value))) { THROW_FMT( OptionInvalidValueError, "'%s' is not allowed for '%s' option", strPtr(value), cfgOptionName(optionId)); } cfgOptionSet(optionId, parseOption->source, VARSTR(value)); } } else if (parseOption->negate) cfgOptionSet(optionId, parseOption->source, NULL); // Else try to set a default else { // Get the default value for this option const char *value = cfgDefOptionDefault(commandDefId, optionDefId); if (value != NULL) cfgOptionSet(optionId, cfgSourceDefault, VARSTRZ(value)); else if (cfgOptionIndex(optionId) == 0 && cfgDefOptionRequired(commandDefId, optionDefId) && !cfgCommandHelp()) { const char *hint = ""; if (cfgDefOptionSection(optionDefId) == cfgDefSectionStanza) hint = "\nHINT: does this stanza exist?"; THROW_FMT( OptionRequiredError, "%s command requires option: %s%s", cfgCommandName(cfgCommand()), cfgOptionName(optionId), hint); } } } } } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/config/parse.h000066400000000000000000000013341362531507100205270ustar00rootroot00000000000000/*********************************************************************************************************************************** Parse Configuration ***********************************************************************************************************************************/ #ifndef CONFIG_PARSE_H #define CONFIG_PARSE_H #include "config/config.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void configParse(unsigned int argListSize, const char *argList[], bool resetLogLevel); #endif pgbackrest-release-2.24/src/config/protocol.c000066400000000000000000000064111362531507100212520ustar00rootroot00000000000000/*********************************************************************************************************************************** Configuration Protocol Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/io/io.h" #include "common/log.h" #include "common/memContext.h" #include "config/config.h" #include "config/protocol.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ STRING_EXTERN(PROTOCOL_COMMAND_CONFIG_OPTION_STR, PROTOCOL_COMMAND_CONFIG_OPTION); /*********************************************************************************************************************************** Process config protocol requests ***********************************************************************************************************************************/ bool configProtocol(const String *command, const VariantList *paramList, ProtocolServer *server) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, command); FUNCTION_LOG_PARAM(VARIANT_LIST, paramList); FUNCTION_LOG_PARAM(PROTOCOL_SERVER, server); FUNCTION_LOG_END(); ASSERT(command != NULL); // Attempt to satisfy the request -- we may get requests that are meant for other handlers bool found = true; MEM_CONTEXT_TEMP_BEGIN() { if (strEq(command, PROTOCOL_COMMAND_CONFIG_OPTION_STR)) { VariantList *optionList = varLstNew(); for (unsigned int optionIdx = 0; optionIdx < varLstSize(paramList); optionIdx++) varLstAdd(optionList, varDup(cfgOption(cfgOptionId(strPtr(varStr(varLstGet(paramList, optionIdx))))))); protocolServerResponse(server, varNewVarLst(optionList)); } else found = false; } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, found); } /*********************************************************************************************************************************** Get option values from another process ***********************************************************************************************************************************/ VariantList * configProtocolOption(ProtocolClient *client, const VariantList *paramList) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PROTOCOL_CLIENT, client); FUNCTION_LOG_PARAM(VARIANT_LIST, paramList); FUNCTION_LOG_END(); VariantList *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_CONFIG_OPTION_STR); for (unsigned int paramIdx = 0; paramIdx < varLstSize(paramList); paramIdx++) protocolCommandParamAdd(command, varLstGet(paramList, paramIdx)); MEM_CONTEXT_PRIOR_BEGIN() { result = varVarLst(protocolClientExecute(client, command, true)); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(VARIANT_LIST, result); } pgbackrest-release-2.24/src/config/protocol.h000066400000000000000000000025251362531507100212610ustar00rootroot00000000000000/*********************************************************************************************************************************** Configuration Protocol Handler ***********************************************************************************************************************************/ #ifndef CONFIG_PROTOCOL_H #define CONFIG_PROTOCOL_H #include "common/type/string.h" #include "common/type/variantList.h" #include "protocol/client.h" #include "protocol/server.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define PROTOCOL_COMMAND_CONFIG_OPTION "configOption" STRING_DECLARE(PROTOCOL_COMMAND_CONFIG_OPTION_STR); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ bool configProtocol(const String *command, const VariantList *paramList, ProtocolServer *server); VariantList *configProtocolOption(ProtocolClient *client, const VariantList *paramList); #endif pgbackrest-release-2.24/src/configure000077500000000000000000004312261362531507100177150ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for pgBackRest 2.24. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='pgBackRest' PACKAGE_TARNAME='pgbackrest' PACKAGE_VERSION='2.24' PACKAGE_STRING='pgBackRest 2.24' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_unique_file="version.h" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS CLIBRARY EGREP GREP CPP XML2_CONFIG CINCLUDE CWARNING COPTIMIZE_PAGE_CHECKSUM COPTIMIZE OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_test enable_optimize ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS XML2_CONFIG CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures pgBackRest 2.24 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/pgbackrest] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of pgBackRest 2.24:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-test enable internal test code and assertions for debugging --disable-optimize disable compiler optimizations Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory XML2_CONFIG path to xml2 config utility CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF pgBackRest configure 2.24 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by pgBackRest $as_me 2.24, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Check compiler ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 $as_echo_n "checking for $CC option to accept ISO C99... " >&6; } if ${ac_cv_prog_cc_c99+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #include // Check varargs macros. These examples are taken from C99 6.10.3.5. #define debug(...) fprintf (stderr, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK your preprocessor is broken; #endif #if BIG_OK #else your preprocessor is broken; #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\0'; ++i) continue; return 0; } // Check varargs and va_copy. static void test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str; int number; float fnumber; while (*format) { switch (*format++) { case 's': // string str = va_arg (args_copy, const char *); break; case 'd': // int number = va_arg (args_copy, int); break; case 'f': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); } int main () { // Check bool. _Bool success = false; // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. test_varargs ("s, d' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' || dynamic_array[ni.number - 1] != 543); ; return 0; } _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c99" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c99" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 $as_echo "$ac_cv_prog_cc_c99" >&6; } ;; esac if test "x$ac_cv_prog_cc_c99" != xno; then : fi # Enable internal test code and assertions by undefining NDEBUG warning='-Wall -Wextra -Wno-clobbered -Wno-missing-field-initializers' # Check whether --enable-test was given. if test "${enable_test+set}" = set; then : enableval=$enable_test; fi if test "$enable_test" != yes then $as_echo "#define NDEBUG 1" >>confdefs.h # Enable optimizations if not testing and they have not been disabled # Check whether --enable-optimize was given. if test "${enable_optimize+set}" = set; then : enableval=$enable_optimize; fi if test "$enable_optimize" != no then COPTIMIZE="-O2" COPTIMIZE_PAGE_CHECKSUM="-funroll-loops -ftree-vectorize" fi CWARNING=$warning else CWARNING="$warning -Wwrite-strings -Wconversion -Wformat=2 -Wformat-nonliteral -Wstrict-prototypes -Wpointer-arith -Wvla" fi # Set includes CINCLUDE="-I." # Check required pq library { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PQconnectdb in -lpq" >&5 $as_echo_n "checking for PQconnectdb in -lpq... " >&6; } if ${ac_cv_lib_pq_PQconnectdb+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpq $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char PQconnectdb (); int main () { return PQconnectdb (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_pq_PQconnectdb=yes else ac_cv_lib_pq_PQconnectdb=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pq_PQconnectdb" >&5 $as_echo "$ac_cv_lib_pq_PQconnectdb" >&6; } if test "x$ac_cv_lib_pq_PQconnectdb" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBPQ 1 _ACEOF LIBS="-lpq $LIBS" else as_fn_error $? "library 'pq' is required" "$LINENO" 5 fi CINCLUDE="$CINCLUDE -I`pg_config --includedir`" # Check required openssl libraries { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_get_digestbyname in -lcrypto" >&5 $as_echo_n "checking for EVP_get_digestbyname in -lcrypto... " >&6; } if ${ac_cv_lib_crypto_EVP_get_digestbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcrypto $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char EVP_get_digestbyname (); int main () { return EVP_get_digestbyname (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_crypto_EVP_get_digestbyname=yes else ac_cv_lib_crypto_EVP_get_digestbyname=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_EVP_get_digestbyname" >&5 $as_echo "$ac_cv_lib_crypto_EVP_get_digestbyname" >&6; } if test "x$ac_cv_lib_crypto_EVP_get_digestbyname" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBCRYPTO 1 _ACEOF LIBS="-lcrypto $LIBS" else as_fn_error $? "library 'crypto' is required" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_new in -lssl" >&5 $as_echo_n "checking for SSL_new in -lssl... " >&6; } if ${ac_cv_lib_ssl_SSL_new+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lssl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char SSL_new (); int main () { return SSL_new (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ssl_SSL_new=yes else ac_cv_lib_ssl_SSL_new=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_new" >&5 $as_echo "$ac_cv_lib_ssl_SSL_new" >&6; } if test "x$ac_cv_lib_ssl_SSL_new" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBSSL 1 _ACEOF LIBS="-lssl $LIBS" else as_fn_error $? "library 'ssl' is required" "$LINENO" 5 fi # Check required xml library if test -z "$XML2_CONFIG"; then XML2_CONFIG="pkg-config libxml-2.0" fi CPPFLAGS="$CPPFLAGS `$XML2_CONFIG --cflags`" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xmlSaveToBuffer in -lxml2" >&5 $as_echo_n "checking for xmlSaveToBuffer in -lxml2... " >&6; } if ${ac_cv_lib_xml2_xmlSaveToBuffer+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lxml2 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char xmlSaveToBuffer (); int main () { return xmlSaveToBuffer (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_xml2_xmlSaveToBuffer=yes else ac_cv_lib_xml2_xmlSaveToBuffer=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_xmlSaveToBuffer" >&5 $as_echo "$ac_cv_lib_xml2_xmlSaveToBuffer" >&6; } if test "x$ac_cv_lib_xml2_xmlSaveToBuffer" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBXML2 1 _ACEOF LIBS="-lxml2 $LIBS" else as_fn_error $? "library 'xml2' is required" "$LINENO" 5 fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_c_check_header_mongrel "$LINENO" "libxml/parser.h" "ac_cv_header_libxml_parser_h" "$ac_includes_default" if test "x$ac_cv_header_libxml_parser_h" = xyes; then : else as_fn_error $? "header file is required" "$LINENO" 5 fi CLIBRARY="$CLIBRARY `pkg-config libxml-2.0 --cflags`" # Check required gzip library { $as_echo "$as_me:${as_lineno-$LINENO}: checking for deflate in -lz" >&5 $as_echo_n "checking for deflate in -lz... " >&6; } if ${ac_cv_lib_z_deflate+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char deflate (); int main () { return deflate (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_deflate=yes else ac_cv_lib_z_deflate=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_deflate" >&5 $as_echo "$ac_cv_lib_z_deflate" >&6; } if test "x$ac_cv_lib_z_deflate" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBZ 1 _ACEOF LIBS="-lz $LIBS" else as_fn_error $? "library 'z' is required" "$LINENO" 5 fi # Write output ac_config_headers="$ac_config_headers build.auto.h" ac_config_files="$ac_config_files Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by pgBackRest $as_me 2.24, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ pgBackRest config.status 2.24 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "build.auto.h") CONFIG_HEADERS="$CONFIG_HEADERS build.auto.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi pgbackrest-release-2.24/src/configure.ac000066400000000000000000000040131362531507100202620ustar00rootroot00000000000000# Initialize configuration AC_PREREQ([2.69]) AC_INIT([pgBackRest], [2.24]) AC_CONFIG_SRCDIR([version.h]) # Check compiler AC_PROG_CC_C99 # Enable internal test code and assertions by undefining NDEBUG warning='-Wall -Wextra -Wno-clobbered -Wno-missing-field-initializers' AC_ARG_ENABLE( test, [AS_HELP_STRING([--enable-test], [enable internal test code and assertions for debugging])]) if test "$enable_test" != yes then AC_DEFINE(NDEBUG) # Enable optimizations if not testing and they have not been disabled AC_ARG_ENABLE(optimize, [AS_HELP_STRING([--disable-optimize], [disable compiler optimizations])]) if test "$enable_optimize" != no then AC_SUBST(COPTIMIZE, "-O2") AC_SUBST(COPTIMIZE_PAGE_CHECKSUM, "-funroll-loops -ftree-vectorize") fi AC_SUBST(CWARNING, $warning) else AC_SUBST(CWARNING, "$warning -Wwrite-strings -Wconversion -Wformat=2 -Wformat-nonliteral -Wstrict-prototypes -Wpointer-arith -Wvla") fi # Set includes AC_SUBST(CINCLUDE, "-I.") # Check required pq library AC_CHECK_LIB([pq], [PQconnectdb], [], [AC_MSG_ERROR([library 'pq' is required])]) AC_SUBST(CINCLUDE, "$CINCLUDE -I`pg_config --includedir`") # Check required openssl libraries AC_CHECK_LIB([crypto], [EVP_get_digestbyname], [], [AC_MSG_ERROR([library 'crypto' is required])]) AC_CHECK_LIB([ssl], [SSL_new], [], [AC_MSG_ERROR([library 'ssl' is required])]) # Check required xml library AC_ARG_VAR(XML2_CONFIG, [path to xml2 config utility])dnl if test -z "$XML2_CONFIG"; then XML2_CONFIG="pkg-config libxml-2.0" fi CPPFLAGS="$CPPFLAGS `$XML2_CONFIG --cflags`" AC_CHECK_LIB([xml2], [xmlSaveToBuffer], [], [AC_MSG_ERROR([library 'xml2' is required])]) AC_CHECK_HEADER(libxml/parser.h, [], [AC_MSG_ERROR([header file is required])]) AC_SUBST(CLIBRARY, "$CLIBRARY `pkg-config libxml-2.0 --cflags`") # Check required gzip library AC_CHECK_LIB([z], [deflate], [], [AC_MSG_ERROR([library 'z' is required])]) # Write output AC_CONFIG_HEADERS([build.auto.h]) AC_CONFIG_FILES([Makefile]) AC_OUTPUT pgbackrest-release-2.24/src/db/000077500000000000000000000000001362531507100163635ustar00rootroot00000000000000pgbackrest-release-2.24/src/db/db.c000066400000000000000000000657141362531507100171310ustar00rootroot00000000000000/*********************************************************************************************************************************** Database Client ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "common/wait.h" #include "db/db.h" #include "db/protocol.h" #include "postgres/interface.h" #include "postgres/version.h" #include "protocol/helper.h" #include "version.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define PG_BACKUP_ADVISORY_LOCK "12340078987004321" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct Db { MemContext *memContext; PgClient *client; // Local PostgreSQL client ProtocolClient *remoteClient; // Protocol client for remote db queries unsigned int remoteIdx; // Index provided by the remote on open for subsequent calls const String *applicationName; // Used to identify this connection in PostgreSQL unsigned int pgVersion; // Version as reported by the database const String *pgDataPath; // Data directory reported by the database const String *archiveMode; // The archive_mode reported by the database const String *archiveCommand; // The archive_command reported by the database }; OBJECT_DEFINE_MOVE(DB); OBJECT_DEFINE_FREE(DB); /*********************************************************************************************************************************** Close protocol connection. No need to close a locally created PgClient since it has its own destructor. ***********************************************************************************************************************************/ OBJECT_DEFINE_FREE_RESOURCE_BEGIN(DB, LOG, logLevelTrace) { ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_DB_CLOSE_STR); protocolCommandParamAdd(command, VARUINT(this->remoteIdx)); protocolClientExecute(this->remoteClient, command, false); } OBJECT_DEFINE_FREE_RESOURCE_END(LOG); /*********************************************************************************************************************************** Create object ***********************************************************************************************************************************/ Db * dbNew(PgClient *client, ProtocolClient *remoteClient, const String *applicationName) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(PG_CLIENT, client); FUNCTION_LOG_PARAM(PROTOCOL_CLIENT, remoteClient); FUNCTION_LOG_PARAM(STRING, applicationName); FUNCTION_LOG_END(); ASSERT((client != NULL && remoteClient == NULL) || (client == NULL && remoteClient != NULL)); ASSERT(applicationName != NULL); Db *this = NULL; MEM_CONTEXT_NEW_BEGIN("Db") { this = memNew(sizeof(Db)); *this = (Db) { .memContext = memContextCurrent(), .remoteClient = remoteClient, .applicationName = strDup(applicationName), }; this->client = pgClientMove(client, this->memContext); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(DB, this); } /*********************************************************************************************************************************** Execute a query ***********************************************************************************************************************************/ static VariantList * dbQuery(Db *this, const String *query) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(DB, this); FUNCTION_LOG_PARAM(STRING, query); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(query != NULL); VariantList *result = NULL; // Query remotely if (this->remoteClient != NULL) { ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_DB_QUERY_STR); protocolCommandParamAdd(command, VARUINT(this->remoteIdx)); protocolCommandParamAdd(command, VARSTR(query)); result = varVarLst(protocolClientExecute(this->remoteClient, command, true)); } // Else locally else result = pgClientQuery(this->client, query); FUNCTION_LOG_RETURN(VARIANT_LIST, result); } /*********************************************************************************************************************************** Execute a command that expects no output ***********************************************************************************************************************************/ static void dbExec(Db *this, const String *command) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(DB, this); FUNCTION_LOG_PARAM(STRING, command); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(command != NULL); CHECK(dbQuery(this, command) == NULL); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Execute a query that returns a single row and column ***********************************************************************************************************************************/ static Variant * dbQueryColumn(Db *this, const String *query) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(DB, this); FUNCTION_LOG_PARAM(STRING, query); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(query != NULL); VariantList *result = dbQuery(this, query); CHECK(varLstSize(result) == 1); CHECK(varLstSize(varVarLst(varLstGet(result, 0))) == 1); FUNCTION_LOG_RETURN(VARIANT, varLstGet(varVarLst(varLstGet(result, 0)), 0)); } /*********************************************************************************************************************************** Execute a query that returns a single row ***********************************************************************************************************************************/ static VariantList * dbQueryRow(Db *this, const String *query) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(DB, this); FUNCTION_LOG_PARAM(STRING, query); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(query != NULL); VariantList *result = dbQuery(this, query); CHECK(varLstSize(result) == 1); FUNCTION_LOG_RETURN(VARIANT_LIST, varVarLst(varLstGet(result, 0))); } /*********************************************************************************************************************************** Open the db connection ***********************************************************************************************************************************/ void dbOpen(Db *this) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(DB, this); FUNCTION_LOG_END(); ASSERT(this != NULL); MEM_CONTEXT_TEMP_BEGIN() { // Open the connection if (this->remoteClient != NULL) { ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_DB_OPEN_STR); this->remoteIdx = varUIntForce(protocolClientExecute(this->remoteClient, command, true)); // Set a callback to notify the remote when a connection is closed memContextCallbackSet(this->memContext, dbFreeResource, this); } else pgClientOpen(this->client); // Set search_path to prevent overrides of the functions we expect to call. All queries should also be schema-qualified, // but this is an extra level protection. dbExec(this, STRDEF("set search_path = 'pg_catalog'")); // Set client encoding to UTF8. This is the only encoding (other than ASCII) that we can safely work with. dbExec(this, STRDEF("set client_encoding = 'UTF8'")); // Query the version and data_directory VariantList *row = dbQueryRow( this, STRDEF( "select (select setting from pg_catalog.pg_settings where name = 'server_version_num')::int4," " (select setting from pg_catalog.pg_settings where name = 'data_directory')::text," " (select setting from pg_catalog.pg_settings where name = 'archive_mode')::text," " (select setting from pg_catalog.pg_settings where name = 'archive_command')::text")); // Strip the minor version off since we don't need it. In the future it might be a good idea to warn users when they are // running an old minor version. this->pgVersion = varUIntForce(varLstGet(row, 0)) / 100 * 100; // Store the data directory that PostgreSQL is running in, the archive mode, and archive command. These can be compared to // the configured pgBackRest directory, and archive settings checked for validity, when validating the configuration. MEM_CONTEXT_BEGIN(this->memContext) { this->pgDataPath = strDup(varStr(varLstGet(row, 1))); this->archiveMode = strDup(varStr(varLstGet(row, 2))); this->archiveCommand = strDup(varStr(varLstGet(row, 3))); } MEM_CONTEXT_END(); if (this->pgVersion >= PG_VERSION_APPLICATION_NAME) dbExec(this, strNewFmt("set application_name = '%s'", strPtr(this->applicationName))); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /**********************************************************************************************************************************/ // Helper to build start backup query static String * dbBackupStartQuery(unsigned int pgVersion, bool startFast) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, pgVersion); FUNCTION_TEST_PARAM(BOOL, startFast); FUNCTION_TEST_END(); // Build query to return start lsn and WAL segment name String *result = strNewFmt( "select lsn::text as lsn,\n" " pg_catalog.pg_%sfile_name(lsn)::text as wal_segment_name\n" " from pg_catalog.pg_start_backup('" PROJECT_NAME " backup started at ' || current_timestamp", strPtr(pgWalName(pgVersion))); // Start backup after immediate checkpoint if (startFast) { strCatFmt(result, ", " TRUE_Z); } // Else start backup at the next scheduled checkpoint else if (pgVersion >= PG_VERSION_84) strCatFmt(result, ", " FALSE_Z); // Use non-exclusive backup mode when available if (pgVersion >= PG_VERSION_96) strCatFmt(result, ", " FALSE_Z); // Complete query strCatFmt(result, ") as lsn"); FUNCTION_TEST_RETURN(result); } #define FUNCTION_LOG_DB_BACKUP_START_RESULT_TYPE \ DbBackupStartResult #define FUNCTION_LOG_DB_BACKUP_START_RESULT_FORMAT(value, buffer, bufferSize) \ objToLog(&value, "DbBackupStartResult", buffer, bufferSize) DbBackupStartResult dbBackupStart(Db *this, bool startFast, bool stopAuto) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(DB, this); FUNCTION_LOG_PARAM(BOOL, startFast); FUNCTION_LOG_PARAM(BOOL, stopAuto); FUNCTION_LOG_END(); ASSERT(this != NULL); DbBackupStartResult result = {.lsn = NULL}; MEM_CONTEXT_TEMP_BEGIN() { // Acquire the backup advisory lock to make sure that backups are not running from multiple backup servers against the same // database cluster. This lock helps make the stop-auto option safe. if (!varBool(dbQueryColumn(this, STRDEF("select pg_catalog.pg_try_advisory_lock(" PG_BACKUP_ADVISORY_LOCK ")::bool")))) { THROW( LockAcquireError, "unable to acquire " PROJECT_NAME " advisory lock\n" "HINT: is another " PROJECT_NAME " backup already running on this cluster?"); } // If stop-auto is enabled check for a running backup if (stopAuto) { // Feature is not supported in PostgreSQL < 9.3 CHECK(dbPgVersion(this) >= PG_VERSION_93); // Feature is not needed for PostgreSQL >= 9.6 since backups are run in non-exclusive mode if (dbPgVersion(this) < PG_VERSION_96) { if (varBool(dbQueryColumn(this, STRDEF("select pg_catalog.pg_is_in_backup()::bool")))) { LOG_WARN( "the cluster is already in backup mode but no " PROJECT_NAME " backup process is running." " pg_stop_backup() will be called so a new backup can be started."); dbBackupStop(this); } } } // Start backup VariantList *row = dbQueryRow(this, dbBackupStartQuery(dbPgVersion(this), startFast)); // Return results MEM_CONTEXT_PRIOR_BEGIN() { result.lsn = strDup(varStr(varLstGet(row, 0))); result.walSegmentName = strDup(varStr(varLstGet(row, 1))); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(DB_BACKUP_START_RESULT, result); } /**********************************************************************************************************************************/ // Helper to build stop backup query static String * dbBackupStopQuery(unsigned int pgVersion) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, pgVersion); FUNCTION_TEST_END(); // Build query to return start lsn and WAL segment name String *result = strNewFmt( "select lsn::text as lsn,\n" " pg_catalog.pg_%sfile_name(lsn)::text as wal_segment_name", strPtr(pgWalName(pgVersion))); // For PostgreSQL >= 9.6 the backup label and tablespace map are returned from pg_stop_backup if (pgVersion >= PG_VERSION_96) { strCat( result, ",\n" " labelfile::text as backuplabel_file,\n" " spcmapfile::text as tablespacemap_file"); } // Build stop backup function strCat( result, "\n" " from pg_catalog.pg_stop_backup("); // Use non-exclusive backup mode when available if (pgVersion >= PG_VERSION_96) strCatFmt(result, FALSE_Z); // Disable archive checking in pg_stop_backup() since we do this elsewhere if (pgVersion >= PG_VERSION_10) strCatFmt(result, ", " FALSE_Z); // Complete query strCatFmt(result, ")"); if (pgVersion < PG_VERSION_96) strCatFmt(result, " as lsn"); FUNCTION_TEST_RETURN(result); } #define FUNCTION_LOG_DB_BACKUP_STOP_RESULT_TYPE \ DbBackupStopResult #define FUNCTION_LOG_DB_BACKUP_STOP_RESULT_FORMAT(value, buffer, bufferSize) \ objToLog(&value, "DbBackupStopResult", buffer, bufferSize) DbBackupStopResult dbBackupStop(Db *this) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(DB, this); FUNCTION_LOG_END(); ASSERT(this != NULL); DbBackupStopResult result = {.lsn = NULL}; MEM_CONTEXT_TEMP_BEGIN() { // Stop backup VariantList *row = dbQueryRow(this, dbBackupStopQuery(dbPgVersion(this))); // Check if the tablespace map is empty bool tablespaceMapEmpty = dbPgVersion(this) >= PG_VERSION_96 ? strSize(strTrim(strDup(varStr(varLstGet(row, 3))))) == 0 : false; // Return results MEM_CONTEXT_PRIOR_BEGIN() { result.lsn = strDup(varStr(varLstGet(row, 0))); result.walSegmentName = strDup(varStr(varLstGet(row, 1))); if (dbPgVersion(this) >= PG_VERSION_96) { result.backupLabel = strDup(varStr(varLstGet(row, 2))); if (!tablespaceMapEmpty) result.tablespaceMap = strDup(varStr(varLstGet(row, 3))); } } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(DB_BACKUP_STOP_RESULT, result); } /*********************************************************************************************************************************** Is this instance a standby? ***********************************************************************************************************************************/ bool dbIsStandby(Db *this) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(DB, this); FUNCTION_LOG_END(); ASSERT(this != NULL); bool result = false; if (this->pgVersion >= PG_VERSION_HOT_STANDBY) { result = varBool(dbQueryColumn(this, STRDEF("select pg_catalog.pg_is_in_recovery()"))); } FUNCTION_LOG_RETURN(BOOL, result); } /**********************************************************************************************************************************/ VariantList * dbList(Db *this) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(DB, this); FUNCTION_LOG_END(); FUNCTION_LOG_RETURN( VARIANT_LIST, dbQuery(this, STRDEF("select oid::oid, datname::text, datlastsysoid::oid from pg_catalog.pg_database"))); } /**********************************************************************************************************************************/ void dbReplayWait(Db *this, const String *targetLsn, TimeMSec timeout) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(DB, this); FUNCTION_LOG_PARAM(STRING, targetLsn); FUNCTION_LOG_PARAM(TIME_MSEC, timeout); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(targetLsn != NULL); ASSERT(timeout > 0); MEM_CONTEXT_TEMP_BEGIN() { // Loop until lsn has been reached or timeout Wait *wait = waitNew(timeout); bool targetReached = false; const char *lsnName = strPtr(pgLsnName(dbPgVersion(this))); const String *replayLsnFunction = strNewFmt( "pg_catalog.pg_last_%s_replay_%s()", strPtr(pgWalName(dbPgVersion(this))), lsnName); const String *replayLsn = NULL; do { // Build the query String *query = strNewFmt( "select replayLsn::text,\n" " (replayLsn > '%s')::bool as targetReached", strPtr(targetLsn)); if (replayLsn != NULL) { strCatFmt( query, ",\n" " (replayLsn > '%s')::bool as replayProgress", strPtr(replayLsn)); } strCatFmt( query, "\n" " from %s as replayLsn", strPtr(replayLsnFunction)); // Execute the query and get replayLsn VariantList *row = dbQueryRow(this, query); replayLsn = varStr(varLstGet(row, 0)); // Error when replayLsn is null which indicates that this is not a standby. This should have been sorted out before we // connected but it's possible that the standy was promoted in the meantime. if (replayLsn == NULL) { THROW_FMT( ArchiveTimeoutError, "unable to query replay lsn on the standby using '%s'\n" "HINT: Is this a standby?", strPtr(replayLsnFunction)); } targetReached = varBool(varLstGet(row, 1)); // If the target has not been reached but progress is being made then reset the timer if (!targetReached && varLstSize(row) > 2 && varBool(varLstGet(row, 2))) wait = waitNew(timeout); protocolKeepAlive(); } while (!targetReached && waitMore(wait)); // Error if a timeout occurred before the target lsn was reached if (!targetReached) { THROW_FMT( ArchiveTimeoutError, "timeout before standby replayed to %s - only reached %s", strPtr(targetLsn), strPtr(replayLsn)); } // Perform a checkpoint dbExec(this, STRDEF("checkpoint")); // On PostgreSQL >= 9.6 the checkpoint location can be verified // // ??? We have seen one instance where this check failed. Is there any chance that the replayed position could be ahead of // the checkpoint recorded in pg_control? It seems possible since it would be safer if the checkpoint in pg_control was // behind rather than ahead, so add a loop to keep checking until the checkpoint has been recorded or timeout. if (dbPgVersion(this) >= PG_VERSION_96) { // Build the query const String *query = strNewFmt( "select (checkpoint_%s > '%s')::bool as targetReached,\n" " checkpoint_%s::text as checkpointLsn\n" " from pg_catalog.pg_control_checkpoint()", lsnName, strPtr(targetLsn), lsnName); // Execute query VariantList *row = dbQueryRow(this, query); // Verify target was reached if (!varBool(varLstGet(row, 0))) { THROW_FMT( ArchiveTimeoutError, "the checkpoint lsn %s is less than the target lsn %s even though the replay lsn is %s", strPtr(varStr(varLstGet(row, 1))), strPtr(targetLsn), strPtr(replayLsn)); } } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /**********************************************************************************************************************************/ VariantList * dbTablespaceList(Db *this) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(DB, this); FUNCTION_LOG_END(); FUNCTION_LOG_RETURN(VARIANT_LIST, dbQuery(this, STRDEF("select oid::oid, spcname::text from pg_catalog.pg_tablespace"))); } /**********************************************************************************************************************************/ TimeMSec dbTimeMSec(Db *this) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(DB, this); FUNCTION_LOG_END(); FUNCTION_LOG_RETURN( TIME_MSEC, varUInt64Force(dbQueryColumn(this, STRDEF("select (extract(epoch from clock_timestamp()) * 1000)::bigint")))); } /*********************************************************************************************************************************** Switch the WAL segment and return the segment that should have been archived ***********************************************************************************************************************************/ String * dbWalSwitch(Db *this) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(DB, this); FUNCTION_LOG_END(); ASSERT(this != NULL); String *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { // Create a restore point to ensure current WAL will be archived. For versions < 9.1 activity will need to be generated by // the user if there have been no writes since the last WAL switch. if (this->pgVersion >= PG_VERSION_RESTORE_POINT) dbQueryColumn(this, STRDEF("select pg_catalog.pg_create_restore_point('" PROJECT_NAME " Archive Check')::text")); // Request a WAL segment switch const char *walName = strPtr(pgWalName(this->pgVersion)); const String *walFileName = varStr( dbQueryColumn(this, strNewFmt("select pg_catalog.pg_%sfile_name(pg_catalog.pg_switch_%s())::text", walName, walName))); // Copy WAL segment name to the prior context MEM_CONTEXT_PRIOR_BEGIN() { result = strDup(walFileName); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING, result); } /*********************************************************************************************************************************** Get pg data path loaded from the data_directory GUC ***********************************************************************************************************************************/ const String * dbPgDataPath(const Db *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(DB, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->pgDataPath); } /*********************************************************************************************************************************** Get pg version loaded from the server_version_num GUC ***********************************************************************************************************************************/ unsigned int dbPgVersion(const Db *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(DB, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->pgVersion); } /*********************************************************************************************************************************** Get pg version loaded from the server_version_num GUC ***********************************************************************************************************************************/ const String * dbArchiveMode(const Db *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(DB, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->archiveMode); } /*********************************************************************************************************************************** Get pg version loaded from the server_version_num GUC ***********************************************************************************************************************************/ const String * dbArchiveCommand(const Db *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(DB, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->archiveCommand); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * dbToLog(const Db *this) { return strNewFmt( "{client: %s, remoteClient: %s}", this->client == NULL ? NULL_Z : strPtr(pgClientToLog(this->client)), this->remoteClient == NULL ? NULL_Z : strPtr(protocolClientToLog(this->remoteClient))); } pgbackrest-release-2.24/src/db/db.h000066400000000000000000000102121362531507100171150ustar00rootroot00000000000000/*********************************************************************************************************************************** Database Client Implements the required PostgreSQL queries and commands. Notice that there is no general purpose query function -- all queries are expected to be embedded in this object. ***********************************************************************************************************************************/ #ifndef DB_DB_H #define DB_DB_H #include "postgres/client.h" #include "protocol/client.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define DB_TYPE Db #define DB_PREFIX db typedef struct Db Db; /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ Db *dbNew(PgClient *client, ProtocolClient *remoteClient, const String *applicationName); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void dbOpen(Db *this); // Start backup and return starting lsn and wal segment name typedef struct DbBackupStartResult { String *lsn; String *walSegmentName; } DbBackupStartResult; DbBackupStartResult dbBackupStart(Db *this, bool startFast, bool stopAuto); // Stop backup and return starting lsn, wal segment name, backup label, and tablspace map typedef struct DbBackupStopResult { String *lsn; String *walSegmentName; String *backupLabel; String *tablespaceMap; } DbBackupStopResult; DbBackupStopResult dbBackupStop(Db *this); bool dbIsStandby(Db *this); // Get list of databases in the cluster: select oid, datname, datlastsysoid from pg_database VariantList *dbList(Db *this); // Waits for replay on the standby to equal the target LSN void dbReplayWait(Db *this, const String *targetLsn, TimeMSec timeout); // Epoch time on the PostgreSQL host in ms TimeMSec dbTimeMSec(Db *this); // Get list of tablespaces in the cluster: select oid, datname, datlastsysoid from pg_database VariantList *dbTablespaceList(Db *this); String *dbWalSwitch(Db *this); void dbClose(Db *this); Db *dbMove(Db *this, MemContext *parentNew); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ const String *dbPgDataPath(const Db *this); unsigned int dbPgVersion(const Db *this); const String *dbArchiveMode(const Db *this); const String *dbArchiveCommand(const Db *this); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void dbFree(Db *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *dbToLog(const Db *this); #define FUNCTION_LOG_DB_TYPE \ Db * #define FUNCTION_LOG_DB_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, dbToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/db/helper.c000066400000000000000000000123361362531507100200130ustar00rootroot00000000000000/*********************************************************************************************************************************** Database Helper ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "config/config.h" #include "db/helper.h" #include "postgres/interface.h" #include "protocol/helper.h" #include "version.h" /*********************************************************************************************************************************** Get specified cluster ***********************************************************************************************************************************/ static Db * dbGetId(unsigned int pgId) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(UINT, pgId); FUNCTION_LOG_END(); ASSERT(pgId > 0); Db *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { const String *applicationName = strNewFmt(PROJECT_NAME " [%s]", cfgCommandName(cfgCommand())); if (pgIsLocal(pgId)) { result = dbNew( pgClientNew( cfgOptionStr(cfgOptPgSocketPath + pgId - 1), cfgOptionUInt(cfgOptPgPort + pgId - 1), PG_DB_POSTGRES_STR, cfgOptionStr(cfgOptPgUser + pgId - 1), (TimeMSec)(cfgOptionDbl(cfgOptDbTimeout) * MSEC_PER_SEC)), NULL, applicationName); } else result = dbNew(NULL, protocolRemoteGet(protocolStorageTypePg, pgId), applicationName); dbMove(result, memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(DB, result); } /*********************************************************************************************************************************** Get primary cluster or primary and standby cluster ***********************************************************************************************************************************/ DbGetResult dbGet(bool primaryOnly, bool primaryRequired, bool standbyRequired) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(BOOL, primaryOnly); FUNCTION_LOG_PARAM(BOOL, primaryRequired); FUNCTION_LOG_PARAM(BOOL, standbyRequired); FUNCTION_LOG_END(); ASSERT(!(primaryOnly && standbyRequired)); DbGetResult result = {0}; MEM_CONTEXT_TEMP_BEGIN() { // Loop through to look for primary and standby (if required) for (unsigned int pgIdx = 0; pgIdx < cfgOptionIndexTotal(cfgOptPgPath); pgIdx++) { if (cfgOptionTest(cfgOptPgHost + pgIdx) || cfgOptionTest(cfgOptPgPath + pgIdx)) { Db *db = NULL; bool standby = false; TRY_BEGIN() { db = dbGetId(pgIdx + 1); // This needs to be nested because db can be reset to NULL on an error in the outer try but we need the pointer // to be able to free it. TRY_BEGIN() { dbOpen(db); standby = dbIsStandby(db); } CATCH_ANY() { dbFree(db); RETHROW(); } TRY_END(); } CATCH_ANY() { LOG_WARN_FMT("unable to check pg-%u: [%s] %s", pgIdx + 1, errorTypeName(errorType()), errorMessage()); db = NULL; } TRY_END(); // Was the connection successful if (db != NULL) { // Is this cluster a standby if (standby) { // If a standby has not already been found then assign it if (result.standbyId == 0 && !primaryOnly) { result.standbyId = pgIdx + 1; result.standby = db; } // Else close the connection since we don't need it else dbFree(db); } // Else is a primary else { // Error if more than one primary was found if (result.primaryId != 0) THROW(DbConnectError, "more than one primary cluster found"); result.primaryId = pgIdx + 1; result.primary = db; } } } } // Error if no primary was found if (result.primaryId == 0 && primaryRequired) THROW(DbConnectError, "unable to find primary cluster - cannot proceed"); // Error if no standby was found if (result.standbyId == 0 && standbyRequired) THROW(DbConnectError, "unable to find standby cluster - cannot proceed"); dbMove(result.primary, memContextPrior()); dbMove(result.standby, memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(DB_GET_RESULT, result); } pgbackrest-release-2.24/src/db/helper.h000066400000000000000000000030231362531507100200110ustar00rootroot00000000000000/*********************************************************************************************************************************** Database Helper Helper functions for getting connections to PostgreSQL. ***********************************************************************************************************************************/ #ifndef DB_HELPER_H #define DB_HELPER_H #include #include "db/db.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ typedef struct DbGetResult { unsigned int primaryId; Db *primary; unsigned int standbyId; Db *standby; } DbGetResult; DbGetResult dbGet(bool primaryOnly, bool primaryRequired, bool standbyRequired); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_DB_GET_RESULT_TYPE \ DbGetResult #define FUNCTION_LOG_DB_GET_RESULT_FORMAT(value, buffer, bufferSize) \ objToLog(&value, "DbGetResult", buffer, bufferSize) #endif pgbackrest-release-2.24/src/db/protocol.c000066400000000000000000000103041362531507100203660ustar00rootroot00000000000000/*********************************************************************************************************************************** Db Protocol Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/io/io.h" #include "common/log.h" #include "common/memContext.h" #include "common/type/list.h" #include "config/config.h" #include "db/protocol.h" #include "postgres/client.h" #include "postgres/interface.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ STRING_EXTERN(PROTOCOL_COMMAND_DB_OPEN_STR, PROTOCOL_COMMAND_DB_OPEN); STRING_EXTERN(PROTOCOL_COMMAND_DB_QUERY_STR, PROTOCOL_COMMAND_DB_QUERY); STRING_EXTERN(PROTOCOL_COMMAND_DB_CLOSE_STR, PROTOCOL_COMMAND_DB_CLOSE); /*********************************************************************************************************************************** Local variables ***********************************************************************************************************************************/ static struct { List *pgClientList; // List of db objects } dbProtocolLocal; /*********************************************************************************************************************************** Process db protocol requests ***********************************************************************************************************************************/ bool dbProtocol(const String *command, const VariantList *paramList, ProtocolServer *server) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, command); FUNCTION_LOG_PARAM(VARIANT_LIST, paramList); FUNCTION_LOG_PARAM(PROTOCOL_SERVER, server); FUNCTION_LOG_END(); ASSERT(command != NULL); // Attempt to satisfy the request -- we may get requests that are meant for other handlers bool found = true; MEM_CONTEXT_TEMP_BEGIN() { if (strEq(command, PROTOCOL_COMMAND_DB_OPEN_STR)) { // If the db list does not exist then create it in the prior context (which should be persistent) if (dbProtocolLocal.pgClientList == NULL) { MEM_CONTEXT_PRIOR_BEGIN() { dbProtocolLocal.pgClientList = lstNew(sizeof(PgClient *)); } MEM_CONTEXT_PRIOR_END(); } // Add db to the list unsigned int dbIdx = lstSize(dbProtocolLocal.pgClientList); MEM_CONTEXT_BEGIN(lstMemContext(dbProtocolLocal.pgClientList)) { // Only a single db is passed to the remote PgClient *pgClient = pgClientNew( cfgOptionStr(cfgOptPgSocketPath), cfgOptionUInt(cfgOptPgPort), PG_DB_POSTGRES_STR, cfgOptionStr(cfgOptPgUser), (TimeMSec)(cfgOptionDbl(cfgOptDbTimeout) * MSEC_PER_SEC)); pgClientOpen(pgClient); lstAdd(dbProtocolLocal.pgClientList, &pgClient); } MEM_CONTEXT_END(); // Return db index which should be included in subsequent calls protocolServerResponse(server, VARUINT(dbIdx)); } else if (strEq(command, PROTOCOL_COMMAND_DB_QUERY_STR) || strEq(command, PROTOCOL_COMMAND_DB_CLOSE_STR)) { PgClient *pgClient = *(PgClient **)lstGet(dbProtocolLocal.pgClientList, varUIntForce(varLstGet(paramList, 0))); if (strEq(command, PROTOCOL_COMMAND_DB_QUERY_STR)) protocolServerResponse(server, varNewVarLst(pgClientQuery(pgClient, varStr(varLstGet(paramList, 1))))); else { pgClientClose(pgClient); protocolServerResponse(server, NULL); } } else found = false; } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, found); } pgbackrest-release-2.24/src/db/protocol.h000066400000000000000000000027331362531507100204020ustar00rootroot00000000000000/*********************************************************************************************************************************** Db Protocol Handler ***********************************************************************************************************************************/ #ifndef DB_PROTOCOL_H #define DB_PROTOCOL_H #include "common/type/string.h" #include "common/type/variantList.h" #include "protocol/client.h" #include "protocol/server.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define PROTOCOL_COMMAND_DB_OPEN "dbOpen" STRING_DECLARE(PROTOCOL_COMMAND_DB_OPEN_STR); #define PROTOCOL_COMMAND_DB_QUERY "dbQuery" STRING_DECLARE(PROTOCOL_COMMAND_DB_QUERY_STR); #define PROTOCOL_COMMAND_DB_CLOSE "dbClose" STRING_DECLARE(PROTOCOL_COMMAND_DB_CLOSE_STR); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ bool dbProtocol(const String *command, const VariantList *paramList, ProtocolServer *server); #endif pgbackrest-release-2.24/src/info/000077500000000000000000000000001362531507100167315ustar00rootroot00000000000000pgbackrest-release-2.24/src/info/info.c000066400000000000000000000566441362531507100200470ustar00rootroot00000000000000/*********************************************************************************************************************************** Info Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include "common/type/convert.h" #include "common/crypto/hash.h" #include "common/debug.h" #include "common/encode.h" #include "common/io/filter/filter.intern.h" #include "common/ini.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "common/type/json.h" #include "info/info.h" #include "storage/helper.h" #include "version.h" /*********************************************************************************************************************************** Internal constants ***********************************************************************************************************************************/ #define INFO_SECTION_BACKREST "backrest" STRING_STATIC(INFO_SECTION_BACKREST_STR, INFO_SECTION_BACKREST); STRING_STATIC(INFO_SECTION_CIPHER_STR, "cipher"); STRING_STATIC(INFO_KEY_CIPHER_PASS_STR, "cipher-pass"); #define INFO_KEY_CHECKSUM "backrest-checksum" STRING_STATIC(INFO_KEY_CHECKSUM_STR, INFO_KEY_CHECKSUM); STRING_EXTERN(INFO_KEY_FORMAT_STR, INFO_KEY_FORMAT); STRING_EXTERN(INFO_KEY_VERSION_STR, INFO_KEY_VERSION); /*********************************************************************************************************************************** Object types ***********************************************************************************************************************************/ struct Info { MemContext *memContext; // Mem context const String *backrestVersion; // pgBackRest version const String *cipherPass; // Cipher passphrase if set }; struct InfoSave { MemContext *memContext; // Mem context IoWrite *write; // Write object IoFilter *checksum; // hash to generate file checksum String *sectionLast; // The last section seen }; /*********************************************************************************************************************************** Macros and buffer constants for checksum generation ***********************************************************************************************************************************/ #define INFO_CHECKSUM_BEGIN(checksum) \ do \ { \ ioFilterProcessIn(checksum, BRACEL_BUF); \ } \ while (0) BUFFER_STRDEF_STATIC(INFO_CHECKSUM_SECTION_END_BUF, "\":{"); #define INFO_CHECKSUM_SECTION(checksum, section) \ do \ { \ ioFilterProcessIn(checksum, QUOTED_BUF); \ ioFilterProcessIn(checksum, BUFSTR(section)); \ ioFilterProcessIn(checksum, INFO_CHECKSUM_SECTION_END_BUF); \ } \ while (0) BUFFER_STRDEF_STATIC(INFO_CHECKSUM_SECTION_NEXT_END_BUF, "},"); #define INFO_CHECKSUM_SECTION_NEXT(checksum) \ do \ { \ ioFilterProcessIn(checksum, INFO_CHECKSUM_SECTION_NEXT_END_BUF); \ } \ while (0) BUFFER_STRDEF_STATIC(INFO_CHECKSUM_KEY_VALUE_END_BUF, ":"); #define INFO_CHECKSUM_KEY_VALUE(checksum, key, value) \ do \ { \ ioFilterProcessIn(checksum, BUFSTR(jsonFromStr(key))); \ ioFilterProcessIn(checksum, INFO_CHECKSUM_KEY_VALUE_END_BUF); \ ioFilterProcessIn(checksum, BUFSTR(value)); \ } \ while (0) #define INFO_CHECKSUM_KEY_VALUE_NEXT(checksum) \ do \ { \ ioFilterProcessIn(checksum, COMMA_BUF); \ } \ while (0) BUFFER_STRDEF_STATIC(INFO_CHECKSUM_END_BUF, "}}"); #define INFO_CHECKSUM_END(checksum) \ do \ { \ ioFilterProcessIn(checksum, INFO_CHECKSUM_END_BUF); \ } \ while (0) /*********************************************************************************************************************************** Internal constructor ***********************************************************************************************************************************/ static Info * infoNewInternal(void) { FUNCTION_TEST_VOID(); Info *this = memNew(sizeof(Info)); *this = (Info) { .memContext = memContextCurrent(), }; FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Create new object ***********************************************************************************************************************************/ Info * infoNew(const String *cipherPass) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_TEST_PARAM(STRING, cipherPass); // Use FUNCTION_TEST so cipher is not logged FUNCTION_LOG_END(); Info *this = NULL; MEM_CONTEXT_NEW_BEGIN("Info") { this = infoNewInternal(); // Cipher used to encrypt/decrypt subsequent dependent files. Value may be NULL. infoCipherPassSet(this, cipherPass); this->backrestVersion = STRDEF(PROJECT_VERSION); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(INFO, this); } /*********************************************************************************************************************************** Load and validate the info file (or copy) ***********************************************************************************************************************************/ typedef struct InfoLoadData { MemContext *memContext; // Mem context to use for storing data in this structure InfoLoadNewCallback *callbackFunction; // Callback function for child object void *callbackData; // Callback data for child object Info *info; // Info object String *sectionLast; // The last section seen during load IoFilter *checksumActual; // Checksum calculated from the file String *checksumExpected; // Checksum found in ini file } InfoLoadData; static void infoLoadCallback(void *data, const String *section, const String *key, const String *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, data); FUNCTION_TEST_PARAM(STRING, section); FUNCTION_TEST_PARAM(STRING, key); FUNCTION_TEST_PARAM(STRING, value); FUNCTION_TEST_END(); ASSERT(data != NULL); ASSERT(section != NULL); ASSERT(key != NULL); ASSERT(value != NULL); InfoLoadData *loadData = (InfoLoadData *)data; // Calculate checksum if (!(strEq(section, INFO_SECTION_BACKREST_STR) && strEq(key, INFO_KEY_CHECKSUM_STR))) { if (loadData->sectionLast == NULL || !strEq(section, loadData->sectionLast)) { if (loadData->sectionLast != NULL) INFO_CHECKSUM_SECTION_NEXT(loadData->checksumActual); INFO_CHECKSUM_SECTION(loadData->checksumActual, section); MEM_CONTEXT_BEGIN(loadData->memContext) { loadData->sectionLast = strDup(section); } MEM_CONTEXT_END(); } else INFO_CHECKSUM_KEY_VALUE_NEXT(loadData->checksumActual); INFO_CHECKSUM_KEY_VALUE(loadData->checksumActual, key, value); } // Process backrest section if (strEq(section, INFO_SECTION_BACKREST_STR)) { // Validate format if (strEq(key, INFO_KEY_FORMAT_STR)) { if (jsonToUInt(value) != REPOSITORY_FORMAT) THROW_FMT(FormatError, "expected format %d but found %d", REPOSITORY_FORMAT, cvtZToInt(strPtr(value))); } // Store pgBackRest version else if (strEq(key, INFO_KEY_VERSION_STR)) { MEM_CONTEXT_BEGIN(loadData->info->memContext) { loadData->info->backrestVersion = jsonToStr(value); } MEM_CONTEXT_END(); } // Store checksum to be validated later else if (strEq(key, INFO_KEY_CHECKSUM_STR)) { MEM_CONTEXT_BEGIN(loadData->memContext) { loadData->checksumExpected = jsonToStr(value); } MEM_CONTEXT_END(); } } // Process cipher section else if (strEq(section, INFO_SECTION_CIPHER_STR)) { // No validation needed for cipher-pass, just store it if (strEq(key, INFO_KEY_CIPHER_PASS_STR)) { MEM_CONTEXT_BEGIN(loadData->info->memContext) { loadData->info->cipherPass = jsonToStr(value); } MEM_CONTEXT_END(); } } // Else pass to callback for processing else loadData->callbackFunction(loadData->callbackData, section, key, value); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Create new object and load contents from a file ***********************************************************************************************************************************/ Info * infoNewLoad(IoRead *read, InfoLoadNewCallback *callbackFunction, void *callbackData) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(IO_READ, read); FUNCTION_LOG_PARAM(FUNCTIONP, callbackFunction); FUNCTION_LOG_PARAM_P(VOID, callbackData); FUNCTION_LOG_END(); ASSERT(read != NULL); ASSERT(callbackFunction != NULL); ASSERT(callbackData != NULL); Info *this = NULL; MEM_CONTEXT_NEW_BEGIN("Info") { this = infoNewInternal(); MEM_CONTEXT_TEMP_BEGIN() { // Load and parse the info file InfoLoadData data = { .memContext = MEM_CONTEXT_TEMP(), .callbackFunction = callbackFunction, .callbackData = callbackData, .info = this, .checksumActual = cryptoHashNew(HASH_TYPE_SHA1_STR), }; INFO_CHECKSUM_BEGIN(data.checksumActual); TRY_BEGIN() { iniLoad(read, infoLoadCallback, &data); } CATCH(CryptoError) { THROW_FMT(CryptoError, "%s\nHINT: is or was the repo encrypted?", errorMessage()); } TRY_END(); INFO_CHECKSUM_END(data.checksumActual); // Verify the checksum const String *checksumActual = varStr(ioFilterResult(data.checksumActual)); if (data.checksumExpected == NULL) THROW_FMT(ChecksumError, "invalid checksum, actual '%s' but no checksum found", strPtr(checksumActual)); else if (!strEq(data.checksumExpected, checksumActual)) { THROW_FMT( ChecksumError, "invalid checksum, actual '%s' but expected '%s'", strPtr(checksumActual), strPtr(data.checksumExpected)); } } MEM_CONTEXT_TEMP_END(); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(INFO, this); } /*********************************************************************************************************************************** Check if the section should be saved ***********************************************************************************************************************************/ bool infoSaveSection(InfoSave *infoSaveData, const String *section, const String *sectionNext) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INFO_SAVE, infoSaveData); FUNCTION_TEST_PARAM(STRING, section); FUNCTION_TEST_PARAM(STRING, sectionNext); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN( (infoSaveData->sectionLast == NULL || strCmp(section, infoSaveData->sectionLast) > 0) && (sectionNext == NULL || strCmp(section, sectionNext) < 0)); } /*********************************************************************************************************************************** Save a JSON formatted value and update checksum ***********************************************************************************************************************************/ void infoSaveValue(InfoSave *infoSaveData, const String *section, const String *key, const String *jsonValue) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INFO_SAVE, infoSaveData); FUNCTION_TEST_PARAM(STRING, section); FUNCTION_TEST_PARAM(STRING, key); FUNCTION_TEST_PARAM(STRING, jsonValue); FUNCTION_TEST_END(); ASSERT(infoSaveData != NULL); ASSERT(section != NULL); ASSERT(key != NULL); ASSERT(jsonValue != NULL); // Save section if (infoSaveData->sectionLast == NULL || !strEq(section, infoSaveData->sectionLast)) { if (infoSaveData->sectionLast != NULL) { INFO_CHECKSUM_SECTION_NEXT(infoSaveData->checksum); ioWriteLine(infoSaveData->write, BUFSTRDEF("")); } INFO_CHECKSUM_SECTION(infoSaveData->checksum, section); ioWrite(infoSaveData->write, BRACKETL_BUF); ioWrite(infoSaveData->write, BUFSTR(section)); ioWriteLine(infoSaveData->write, BRACKETR_BUF); MEM_CONTEXT_BEGIN(infoSaveData->memContext) { infoSaveData->sectionLast = strDup(section); } MEM_CONTEXT_END(); } else INFO_CHECKSUM_KEY_VALUE_NEXT(infoSaveData->checksum); // Save key/value INFO_CHECKSUM_KEY_VALUE(infoSaveData->checksum, key, jsonValue); ioWrite(infoSaveData->write, BUFSTR(key)); ioWrite(infoSaveData->write, EQ_BUF); ioWriteLine(infoSaveData->write, BUFSTR(jsonValue)); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Save to file ***********************************************************************************************************************************/ void infoSave(Info *this, IoWrite *write, InfoSaveCallback *callbackFunction, void *callbackData) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO, this); FUNCTION_LOG_PARAM(IO_WRITE, write); FUNCTION_LOG_PARAM(FUNCTIONP, callbackFunction); FUNCTION_LOG_PARAM_P(VOID, callbackData); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(write != NULL); ASSERT(callbackFunction != NULL); ASSERT(callbackData != NULL); MEM_CONTEXT_TEMP_BEGIN() { InfoSave data = { .memContext = MEM_CONTEXT_TEMP(), .write = write, }; ioWriteOpen(data.write); // Begin checksum calculation data.checksum = cryptoHashNew(HASH_TYPE_SHA1_STR); INFO_CHECKSUM_BEGIN(data.checksum); // Add version and format callbackFunction(callbackData, INFO_SECTION_BACKREST_STR, &data); infoSaveValue(&data, INFO_SECTION_BACKREST_STR, INFO_KEY_FORMAT_STR, jsonFromUInt(REPOSITORY_FORMAT)); infoSaveValue(&data, INFO_SECTION_BACKREST_STR, INFO_KEY_VERSION_STR, jsonFromStr(STRDEF(PROJECT_VERSION))); // Add cipher passphrase if defined if (this->cipherPass != NULL) { callbackFunction(callbackData, INFO_SECTION_CIPHER_STR, &data); infoSaveValue(&data, INFO_SECTION_CIPHER_STR, INFO_KEY_CIPHER_PASS_STR, jsonFromStr(this->cipherPass)); } // Flush out any additional sections callbackFunction(callbackData, NULL, &data); // Add checksum (this must be set after all other values or it will not be valid) INFO_CHECKSUM_END(data.checksum); ioWrite(data.write, BUFSTRDEF("\n[" INFO_SECTION_BACKREST "]\n" INFO_KEY_CHECKSUM "=")); ioWriteLine(data.write, BUFSTR(jsonFromVar(ioFilterResult(data.checksum)))); // Close the file ioWriteClose(data.write); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Accessor functions ***********************************************************************************************************************************/ const String * infoCipherPass(const Info *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INFO, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->cipherPass); } void infoCipherPassSet(Info *this, const String *cipherPass) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INFO, this); FUNCTION_TEST_PARAM(STRING, cipherPass); FUNCTION_TEST_END(); ASSERT(this != NULL); MEM_CONTEXT_BEGIN(this->memContext) { this->cipherPass = strDup(cipherPass); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN_VOID(); } const String * infoBackrestVersion(const Info *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INFO, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->backrestVersion); } /*********************************************************************************************************************************** Load info file(s) and throw error for each attempt if none are successful ***********************************************************************************************************************************/ void infoLoad(const String *error, InfoLoadCallback *callbackFunction, void *callbackData) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, error); FUNCTION_LOG_PARAM(FUNCTIONP, callbackFunction); FUNCTION_LOG_PARAM_P(VOID, callbackData); FUNCTION_LOG_END(); ASSERT(error != NULL); ASSERT(callbackFunction != NULL); ASSERT(callbackData != NULL); MEM_CONTEXT_TEMP_BEGIN() { unsigned int try = 0; bool done = false; bool loaded = false; const ErrorType *loadErrorType = NULL; String *loadErrorMessage = NULL; do { // Attempt to load the file TRY_BEGIN() { loaded = callbackFunction(callbackData, try); done = true; // There must be at least one attempt to the load file ASSERT(loaded || try > 0); } CATCH_ANY() { // Set error type if none has been set if (loadErrorType == NULL) { loadErrorType = errorType(); loadErrorMessage = strNewFmt("%s:", strPtr(error)); } // Else if the error type is different else if (loadErrorType != errorType()) { // Set type that is not file missing (which is likely the most common error) if (loadErrorType == &FileMissingError) { loadErrorType = errorType(); } // Else set a generic error else if (errorType() != &FileMissingError) loadErrorType = &FileOpenError; } // Append new error strCatFmt(loadErrorMessage, "\n%s: %s", errorTypeName(errorType()), errorMessage()); // Try again try++; } TRY_END(); } while (!done); // Error when no file was loaded if (!loaded) THROWP(loadErrorType, strPtr(loadErrorMessage)); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/info/info.h000066400000000000000000000120011362531507100200270ustar00rootroot00000000000000/*********************************************************************************************************************************** Info Handler ***********************************************************************************************************************************/ #ifndef INFO_INFO_H #define INFO_INFO_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define INFO_TYPE Info #define INFO_PREFIX info typedef struct Info Info; typedef struct InfoSave InfoSave; #include "common/ini.h" #include "storage/storage.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define INFO_COPY_EXT ".copy" #define INFO_KEY_FORMAT "backrest-format" STRING_DECLARE(INFO_KEY_FORMAT_STR); #define INFO_KEY_VERSION "backrest-version" STRING_DECLARE(INFO_KEY_VERSION_STR); /*********************************************************************************************************************************** Function types for loading and saving ***********************************************************************************************************************************/ // The purpose of this callback is to attempt a load (from file or otherwise). Return true when the load is successful or throw an // error. Return false when there are no more loads to try, but always make at least one load attempt. The try parameter will // start at 0 and be incremented on each call. typedef bool InfoLoadCallback(void *data, unsigned int try); typedef void InfoLoadNewCallback(void *data, const String *section, const String *key, const String *value); typedef void InfoSaveCallback(void *data, const String *sectionNext, InfoSave *infoSaveData); /*********************************************************************************************************************************** Constructors ***********************************************************************************************************************************/ Info *infoNew(const String *cipherPassSub); Info *infoNewLoad(IoRead *read, InfoLoadNewCallback *callbackFunction, void *callbackData); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void infoSave(Info *this, IoWrite *write, InfoSaveCallback *callbackFunction, void *callbackData); bool infoSaveSection(InfoSave *infoSaveData, const String *section, const String *sectionNext); void infoSaveValue(InfoSave *infoSaveData, const String *section, const String *key, const String *jsonValue); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ const String *infoCipherPass(const Info *this); void infoCipherPassSet(Info *this, const String *cipherPass); const String *infoBackrestVersion(const Info *this); /*********************************************************************************************************************************** Helper functions ***********************************************************************************************************************************/ void infoLoad(const String *error, InfoLoadCallback *callbackFunction, void *callbackData); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_INFO_TYPE \ Info * #define FUNCTION_LOG_INFO_FORMAT(value, buffer, bufferSize) \ objToLog(value, "Info", buffer, bufferSize) #define FUNCTION_LOG_INFO_SAVE_TYPE \ InfoSave * #define FUNCTION_LOG_INFO_SAVE_FORMAT(value, buffer, bufferSize) \ objToLog(value, "InfoSave", buffer, bufferSize) #endif pgbackrest-release-2.24/src/info/infoArchive.c000066400000000000000000000344361362531507100213440ustar00rootroot00000000000000/*********************************************************************************************************************************** Archive Info Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include "common/crypto/cipherBlock.h" #include "common/debug.h" #include "common/log.h" #include "common/ini.h" #include "common/memContext.h" #include "common/object.h" #include "info/infoArchive.h" #include "info/infoPg.h" #include "postgres/interface.h" #include "postgres/version.h" #include "storage/helper.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ STRING_EXTERN(INFO_ARCHIVE_PATH_FILE_STR, INFO_ARCHIVE_PATH_FILE); STRING_EXTERN(INFO_ARCHIVE_PATH_FILE_COPY_STR, INFO_ARCHIVE_PATH_FILE_COPY); /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct InfoArchive { MemContext *memContext; // Mem context InfoPg *infoPg; // Contents of the DB data }; OBJECT_DEFINE_FREE(INFO_ARCHIVE); /*********************************************************************************************************************************** Internal constructor ***********************************************************************************************************************************/ static InfoArchive * infoArchiveNewInternal(void) { FUNCTION_TEST_VOID(); InfoArchive *this = memNew(sizeof(InfoArchive)); *this = (InfoArchive) { .memContext = memContextCurrent(), }; FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Create new object without loading it from a file ***********************************************************************************************************************************/ InfoArchive * infoArchiveNew(unsigned int pgVersion, uint64_t pgSystemId, const String *cipherPassSub) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(UINT, pgVersion); FUNCTION_LOG_PARAM(UINT64, pgSystemId); FUNCTION_TEST_PARAM(STRING, cipherPassSub); FUNCTION_LOG_END(); ASSERT(pgVersion > 0 && pgSystemId > 0); InfoArchive *this = NULL; MEM_CONTEXT_NEW_BEGIN("InfoArchive") { this = infoArchiveNewInternal(); // Initialize the pg data this->infoPg = infoPgNew(infoPgArchive, cipherPassSub); infoArchivePgSet(this, pgVersion, pgSystemId); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(INFO_ARCHIVE, this); } /*********************************************************************************************************************************** Create new object and load contents from a file ***********************************************************************************************************************************/ static InfoArchive * infoArchiveNewLoad(IoRead *read) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(IO_READ, read); FUNCTION_LOG_END(); ASSERT(read != NULL); InfoArchive *this = NULL; MEM_CONTEXT_NEW_BEGIN("InfoArchive") { this = infoArchiveNewInternal(); this->infoPg = infoPgNewLoad(read, infoPgArchive, NULL, NULL); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(INFO_ARCHIVE, this); } /*********************************************************************************************************************************** Given a backrest history id and postgres systemId and version, return the archiveId of the best match ***********************************************************************************************************************************/ const String * infoArchiveIdHistoryMatch( const InfoArchive *this, const unsigned int historyId, const unsigned int pgVersion, const uint64_t pgSystemId) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(INFO_ARCHIVE, this); FUNCTION_LOG_PARAM(UINT, historyId); FUNCTION_LOG_PARAM(UINT, pgVersion); FUNCTION_LOG_PARAM(UINT64, pgSystemId); FUNCTION_LOG_END(); ASSERT(this != NULL); String *archiveId = NULL; InfoPg *infoPg = infoArchivePg(this); // Search the history list, from newest to oldest for (unsigned int pgIdx = 0; pgIdx < infoPgDataTotal(infoPg); pgIdx++) { InfoPgData pgDataArchive = infoPgData(infoPg, pgIdx); // If there is an exact match with the history, system and version then get the archiveId and stop if (historyId == pgDataArchive.id && pgSystemId == pgDataArchive.systemId && pgVersion == pgDataArchive.version) { archiveId = infoPgArchiveId(infoPg, pgIdx); break; } } // If there was not an exact match, then search for the first matching database system-id and version if (archiveId == NULL) { for (unsigned int pgIdx = 0; pgIdx < infoPgDataTotal(infoPg); pgIdx++) { InfoPgData pgDataArchive = infoPgData(infoPg, pgIdx); if (pgSystemId == pgDataArchive.systemId && pgVersion == pgDataArchive.version) { archiveId = infoPgArchiveId(infoPg, pgIdx); break; } } } // If the archive id has not been found, then error if (archiveId == NULL) { THROW_FMT( ArchiveMismatchError, "unable to retrieve the archive id for database version '%s' and system-id '%" PRIu64 "'", strPtr(pgVersionToStr(pgVersion)), pgSystemId); } FUNCTION_LOG_RETURN(STRING, archiveId); } /*********************************************************************************************************************************** Save to file ***********************************************************************************************************************************/ static void infoArchiveSave(InfoArchive *this, IoWrite *write) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_ARCHIVE, this); FUNCTION_LOG_PARAM(IO_WRITE, write); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(write != NULL); MEM_CONTEXT_TEMP_BEGIN() { infoPgSave(infoArchivePg(this), write, NULL, NULL); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Get the current archive id ***********************************************************************************************************************************/ const String * infoArchiveId(const InfoArchive *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INFO_ARCHIVE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(infoPgArchiveId(this->infoPg, infoPgDataCurrentId(this->infoPg))); } /*********************************************************************************************************************************** Return the cipher passphrase ***********************************************************************************************************************************/ const String * infoArchiveCipherPass(const InfoArchive *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INFO_ARCHIVE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(infoPgCipherPass(this->infoPg)); } /*********************************************************************************************************************************** Get PostgreSQL info ***********************************************************************************************************************************/ InfoPg * infoArchivePg(const InfoArchive *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INFO_ARCHIVE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->infoPg); } /*********************************************************************************************************************************** Set the infoPg data ***********************************************************************************************************************************/ InfoArchive * infoArchivePgSet(InfoArchive *this, unsigned int pgVersion, uint64_t pgSystemId) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_ARCHIVE, this); FUNCTION_LOG_PARAM(UINT, pgVersion); FUNCTION_LOG_PARAM(UINT64, pgSystemId); FUNCTION_LOG_END(); ASSERT(this != NULL); this->infoPg = infoPgSet(this->infoPg, infoPgArchive, pgVersion, pgSystemId); FUNCTION_LOG_RETURN(INFO_ARCHIVE, this); } /*********************************************************************************************************************************** Helper function to load archive info files ***********************************************************************************************************************************/ typedef struct InfoArchiveLoadFileData { MemContext *memContext; // Mem context const Storage *storage; // Storage to load from const String *fileName; // Base filename CipherType cipherType; // Cipher type const String *cipherPass; // Cipher passphrase InfoArchive *infoArchive; // Loaded infoArchive object } InfoArchiveLoadFileData; static bool infoArchiveLoadFileCallback(void *data, unsigned int try) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM_P(VOID, data); FUNCTION_LOG_PARAM(UINT, try); FUNCTION_LOG_END(); ASSERT(data != NULL); InfoArchiveLoadFileData *loadData = (InfoArchiveLoadFileData *)data; bool result = false; if (try < 2) { // Construct filename based on try const String *fileName = try == 0 ? loadData->fileName : strNewFmt("%s" INFO_COPY_EXT, strPtr(loadData->fileName)); // Attempt to load the file IoRead *read = storageReadIo(storageNewReadP(loadData->storage, fileName)); cipherBlockFilterGroupAdd(ioReadFilterGroup(read), loadData->cipherType, cipherModeDecrypt, loadData->cipherPass); MEM_CONTEXT_BEGIN(loadData->memContext) { loadData->infoArchive = infoArchiveNewLoad(read); result = true; } MEM_CONTEXT_END(); } FUNCTION_LOG_RETURN(BOOL, result); } InfoArchive * infoArchiveLoadFile(const Storage *storage, const String *fileName, CipherType cipherType, const String *cipherPass) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE, storage); FUNCTION_LOG_PARAM(STRING, fileName); FUNCTION_LOG_PARAM(ENUM, cipherType); FUNCTION_TEST_PARAM(STRING, cipherPass); FUNCTION_LOG_END(); ASSERT(storage != NULL); ASSERT(fileName != NULL); ASSERT((cipherType == cipherTypeNone && cipherPass == NULL) || (cipherType != cipherTypeNone && cipherPass != NULL)); InfoArchiveLoadFileData data = { .memContext = memContextCurrent(), .storage = storage, .fileName = fileName, .cipherType = cipherType, .cipherPass = cipherPass, }; MEM_CONTEXT_TEMP_BEGIN() { const char *fileNamePath = strPtr(storagePathP(storage, fileName)); TRY_BEGIN() { infoLoad( strNewFmt("unable to load info file '%s' or '%s" INFO_COPY_EXT "'", fileNamePath, fileNamePath), infoArchiveLoadFileCallback, &data); } CATCH_ANY() { THROWP_FMT( errorType(), "%s\n" "HINT: archive.info cannot be opened but is required to push/get WAL segments.\n" "HINT: is archive_command configured correctly in postgresql.conf?\n" "HINT: has a stanza-create been performed?\n" "HINT: use --no-archive-check to disable archive checks during backup if you have an alternate archiving scheme.", errorMessage()); } TRY_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(INFO_ARCHIVE, data.infoArchive); } /*********************************************************************************************************************************** Helper function to save archive info files ***********************************************************************************************************************************/ void infoArchiveSaveFile( InfoArchive *infoArchive, const Storage *storage, const String *fileName, CipherType cipherType, const String *cipherPass) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_ARCHIVE, infoArchive); FUNCTION_LOG_PARAM(STORAGE, storage); FUNCTION_LOG_PARAM(STRING, fileName); FUNCTION_LOG_PARAM(ENUM, cipherType); FUNCTION_TEST_PARAM(STRING, cipherPass); FUNCTION_LOG_END(); ASSERT(infoArchive != NULL); ASSERT(storage != NULL); ASSERT(fileName != NULL); ASSERT((cipherType == cipherTypeNone && cipherPass == NULL) || (cipherType != cipherTypeNone && cipherPass != NULL)); MEM_CONTEXT_TEMP_BEGIN() { // Save the file IoWrite *write = storageWriteIo(storageNewWriteP(storage, fileName)); cipherBlockFilterGroupAdd(ioWriteFilterGroup(write), cipherType, cipherModeEncrypt, cipherPass); infoArchiveSave(infoArchive, write); // Make a copy of the file storageCopy( storageNewReadP(storage, fileName), storageNewWriteP(storage, strNewFmt("%s" INFO_COPY_EXT, strPtr(fileName)))); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/info/infoArchive.h000066400000000000000000000110321362531507100213340ustar00rootroot00000000000000/*********************************************************************************************************************************** Archive Info Handler ***********************************************************************************************************************************/ #ifndef INFO_INFOARCHIVE_H #define INFO_INFOARCHIVE_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define INFO_ARCHIVE_TYPE InfoArchive #define INFO_ARCHIVE_PREFIX infoArchive typedef struct InfoArchive InfoArchive; #include "common/crypto/common.h" #include "common/type/string.h" #include "info/infoPg.h" #include "storage/storage.h" /*********************************************************************************************************************************** Archive info filename ***********************************************************************************************************************************/ #define INFO_ARCHIVE_FILE "archive.info" #define REGEX_ARCHIVE_DIR_DB_VERSION "^[0-9]+(\\.[0-9]+)*-[0-9]+$" #define INFO_ARCHIVE_PATH_FILE STORAGE_REPO_ARCHIVE "/" INFO_ARCHIVE_FILE STRING_DECLARE(INFO_ARCHIVE_PATH_FILE_STR); #define INFO_ARCHIVE_PATH_FILE_COPY INFO_ARCHIVE_PATH_FILE INFO_COPY_EXT STRING_DECLARE(INFO_ARCHIVE_PATH_FILE_COPY_STR); /*********************************************************************************************************************************** Constructors ***********************************************************************************************************************************/ InfoArchive *infoArchiveNew(const unsigned int pgVersion, const uint64_t pgSystemId, const String *cipherPassSub); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ const String *infoArchiveIdHistoryMatch( const InfoArchive *this, const unsigned int historyId, const unsigned int pgVersion, const uint64_t pgSystemId); InfoArchive *infoArchivePgSet( InfoArchive *this, unsigned int pgVersion, uint64_t pgSystemId); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ const String *infoArchiveId(const InfoArchive *this); const String *infoArchiveCipherPass(const InfoArchive *this); InfoPg *infoArchivePg(const InfoArchive *this); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void infoArchiveFree(InfoArchive *this); /*********************************************************************************************************************************** Helper functions ***********************************************************************************************************************************/ InfoArchive *infoArchiveLoadFile( const Storage *storage, const String *fileName, CipherType cipherType, const String *cipherPass); void infoArchiveSaveFile( InfoArchive *infoArchive, const Storage *storage, const String *fileName, CipherType cipherType, const String *cipherPass); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_INFO_ARCHIVE_TYPE \ InfoArchive * #define FUNCTION_LOG_INFO_ARCHIVE_FORMAT(value, buffer, bufferSize) \ objToLog(value, "InfoArchive", buffer, bufferSize) #endif pgbackrest-release-2.24/src/info/infoBackup.c000066400000000000000000001012201362531507100211520ustar00rootroot00000000000000/*********************************************************************************************************************************** Backup Info Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include "command/backup/common.h" #include "common/crypto/cipherBlock.h" #include "common/debug.h" #include "common/ini.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "common/regExp.h" #include "common/type/json.h" #include "common/type/list.h" #include "info/infoBackup.h" #include "info/manifest.h" #include "postgres/interface.h" #include "postgres/version.h" #include "storage/helper.h" #include "version.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define INFO_BACKUP_SECTION "backup" #define INFO_BACKUP_SECTION_BACKUP_CURRENT INFO_BACKUP_SECTION ":current" STRING_STATIC(INFO_BACKUP_SECTION_BACKUP_CURRENT_STR, INFO_BACKUP_SECTION_BACKUP_CURRENT); VARIANT_STRDEF_STATIC(INFO_BACKUP_KEY_BACKUP_ARCHIVE_START_VAR, "backup-archive-start"); VARIANT_STRDEF_STATIC(INFO_BACKUP_KEY_BACKUP_ARCHIVE_STOP_VAR, "backup-archive-stop"); VARIANT_STRDEF_STATIC(INFO_BACKUP_KEY_BACKUP_INFO_REPO_SIZE_VAR, "backup-info-repo-size"); VARIANT_STRDEF_STATIC(INFO_BACKUP_KEY_BACKUP_INFO_REPO_SIZE_DELTA_VAR, "backup-info-repo-size-delta"); VARIANT_STRDEF_STATIC(INFO_BACKUP_KEY_BACKUP_INFO_SIZE_VAR, "backup-info-size"); VARIANT_STRDEF_STATIC(INFO_BACKUP_KEY_BACKUP_INFO_SIZE_DELTA_VAR, "backup-info-size-delta"); VARIANT_STRDEF_STATIC(INFO_BACKUP_KEY_BACKUP_PRIOR_VAR, "backup-prior"); VARIANT_STRDEF_STATIC(INFO_BACKUP_KEY_BACKUP_REFERENCE_VAR, "backup-reference"); VARIANT_STRDEF_STATIC(INFO_BACKUP_KEY_BACKUP_TIMESTAMP_START_VAR, "backup-timestamp-start"); VARIANT_STRDEF_STATIC(INFO_BACKUP_KEY_BACKUP_TIMESTAMP_STOP_VAR, "backup-timestamp-stop"); VARIANT_STRDEF_STATIC(INFO_BACKUP_KEY_BACKUP_TYPE_VAR, "backup-type"); VARIANT_STRDEF_STATIC(INFO_BACKUP_KEY_OPT_ARCHIVE_CHECK_VAR, "option-archive-check"); VARIANT_STRDEF_STATIC(INFO_BACKUP_KEY_OPT_ARCHIVE_COPY_VAR, "option-archive-copy"); VARIANT_STRDEF_STATIC(INFO_BACKUP_KEY_OPT_BACKUP_STANDBY_VAR, "option-backup-standby"); VARIANT_STRDEF_STATIC(INFO_BACKUP_KEY_OPT_CHECKSUM_PAGE_VAR, "option-checksum-page"); VARIANT_STRDEF_STATIC(INFO_BACKUP_KEY_OPT_COMPRESS_VAR, "option-compress"); VARIANT_STRDEF_STATIC(INFO_BACKUP_KEY_OPT_HARDLINK_VAR, "option-hardlink"); VARIANT_STRDEF_STATIC(INFO_BACKUP_KEY_OPT_ONLINE_VAR, "option-online"); STRING_EXTERN(INFO_BACKUP_PATH_FILE_STR, INFO_BACKUP_PATH_FILE); STRING_EXTERN(INFO_BACKUP_PATH_FILE_COPY_STR, INFO_BACKUP_PATH_FILE_COPY); /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct InfoBackup { MemContext *memContext; // Mem context InfoPg *infoPg; // Contents of the DB data List *backup; // List of current backups and their associated data }; OBJECT_DEFINE_FREE(INFO_BACKUP); /*********************************************************************************************************************************** Create new object ***********************************************************************************************************************************/ static InfoBackup * infoBackupNewInternal(void) { FUNCTION_TEST_VOID(); InfoBackup *this = memNew(sizeof(InfoBackup)); *this = (InfoBackup) { .memContext = memContextCurrent(), .backup = lstNewP(sizeof(InfoBackupData), .comparator = lstComparatorStr), }; FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Create new object without loading it from a file ***********************************************************************************************************************************/ InfoBackup * infoBackupNew(unsigned int pgVersion, uint64_t pgSystemId, const String *cipherPassSub) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(UINT, pgVersion); FUNCTION_LOG_PARAM(UINT64, pgSystemId); FUNCTION_TEST_PARAM(STRING, cipherPassSub); FUNCTION_LOG_END(); ASSERT(pgVersion > 0 && pgSystemId > 0); InfoBackup *this = NULL; MEM_CONTEXT_NEW_BEGIN("InfoBackup") { this = infoBackupNewInternal(); // Initialize the pg data this->infoPg = infoPgNew(infoPgBackup, cipherPassSub); infoBackupPgSet(this, pgVersion, pgSystemId); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(INFO_BACKUP, this); } /*********************************************************************************************************************************** Create new object and load contents from a file ***********************************************************************************************************************************/ static void infoBackupLoadCallback(void *data, const String *section, const String *key, const String *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, data); FUNCTION_TEST_PARAM(STRING, section); FUNCTION_TEST_PARAM(STRING, key); FUNCTION_TEST_PARAM(STRING, value); FUNCTION_TEST_END(); ASSERT(data != NULL); ASSERT(section != NULL); ASSERT(key != NULL); ASSERT(value != NULL); InfoBackup *infoBackup = (InfoBackup *)data; // Process current backup list if (strEq(section, INFO_BACKUP_SECTION_BACKUP_CURRENT_STR)) { const KeyValue *backupKv = jsonToKv(value); MEM_CONTEXT_BEGIN(lstMemContext(infoBackup->backup)) { InfoBackupData infoBackupData = { .backrestFormat = varUIntForce(kvGet(backupKv, VARSTR(INFO_KEY_FORMAT_STR))), .backrestVersion = varStrForce(kvGet(backupKv, VARSTR(INFO_KEY_VERSION_STR))), .backupInfoRepoSize = varUInt64(kvGet(backupKv, INFO_BACKUP_KEY_BACKUP_INFO_REPO_SIZE_VAR)), .backupInfoRepoSizeDelta = varUInt64(kvGet(backupKv, INFO_BACKUP_KEY_BACKUP_INFO_REPO_SIZE_DELTA_VAR)), .backupInfoSize = varUInt64(kvGet(backupKv, INFO_BACKUP_KEY_BACKUP_INFO_SIZE_VAR)), .backupInfoSizeDelta = varUInt64(kvGet(backupKv, INFO_BACKUP_KEY_BACKUP_INFO_SIZE_DELTA_VAR)), .backupLabel = strDup(key), .backupPgId = cvtZToUInt(strPtr(varStrForce(kvGet(backupKv, INFO_KEY_DB_ID_VAR)))), // When reading timestamps, read as uint64 to ensure always positive value (guarantee no backups before 1970) .backupTimestampStart = (time_t)varUInt64(kvGet(backupKv, INFO_BACKUP_KEY_BACKUP_TIMESTAMP_START_VAR)), .backupTimestampStop= (time_t)varUInt64(kvGet(backupKv, INFO_BACKUP_KEY_BACKUP_TIMESTAMP_STOP_VAR)), .backupType = varStrForce(kvGet(backupKv, INFO_BACKUP_KEY_BACKUP_TYPE_VAR)), // Possible NULL values .backupArchiveStart = strDup(varStr(kvGet(backupKv, INFO_BACKUP_KEY_BACKUP_ARCHIVE_START_VAR))), .backupArchiveStop = strDup(varStr(kvGet(backupKv, INFO_BACKUP_KEY_BACKUP_ARCHIVE_STOP_VAR))), .backupPrior = strDup(varStr(kvGet(backupKv, INFO_BACKUP_KEY_BACKUP_PRIOR_VAR))), .backupReference = kvGet(backupKv, INFO_BACKUP_KEY_BACKUP_REFERENCE_VAR) != NULL ? strLstNewVarLst(varVarLst(kvGet(backupKv, INFO_BACKUP_KEY_BACKUP_REFERENCE_VAR))) : NULL, // Options .optionArchiveCheck = varBool(kvGet(backupKv, INFO_BACKUP_KEY_OPT_ARCHIVE_CHECK_VAR)), .optionArchiveCopy = varBool(kvGet(backupKv, INFO_BACKUP_KEY_OPT_ARCHIVE_COPY_VAR)), .optionBackupStandby = varBool(kvGet(backupKv, INFO_BACKUP_KEY_OPT_BACKUP_STANDBY_VAR)), .optionChecksumPage = varBool(kvGet(backupKv, INFO_BACKUP_KEY_OPT_CHECKSUM_PAGE_VAR)), .optionCompress = varBool(kvGet(backupKv, INFO_BACKUP_KEY_OPT_COMPRESS_VAR)), .optionHardlink = varBool(kvGet(backupKv, INFO_BACKUP_KEY_OPT_HARDLINK_VAR)), .optionOnline = varBool(kvGet(backupKv, INFO_BACKUP_KEY_OPT_ONLINE_VAR)), }; // Add the backup data to the list lstAdd(infoBackup->backup, &infoBackupData); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN_VOID(); } static InfoBackup * infoBackupNewLoad(IoRead *read) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(IO_READ, read); FUNCTION_LOG_END(); ASSERT(read != NULL); InfoBackup *this = NULL; MEM_CONTEXT_NEW_BEGIN("InfoBackup") { this = infoBackupNewInternal(); this->infoPg = infoPgNewLoad(read, infoPgBackup, infoBackupLoadCallback, this); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(INFO_BACKUP, this); } /*********************************************************************************************************************************** Save to file ***********************************************************************************************************************************/ static void infoBackupSaveCallback(void *data, const String *sectionNext, InfoSave *infoSaveData) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, data); FUNCTION_TEST_PARAM(STRING, sectionNext); FUNCTION_TEST_PARAM(INFO_SAVE, infoSaveData); FUNCTION_TEST_END(); ASSERT(data != NULL); ASSERT(infoSaveData != NULL); InfoBackup *infoBackup = (InfoBackup *)data; if (infoSaveSection(infoSaveData, INFO_BACKUP_SECTION_BACKUP_CURRENT_STR, sectionNext)) { // Set the backup current section for (unsigned int backupIdx = 0; backupIdx < infoBackupDataTotal(infoBackup); backupIdx++) { InfoBackupData backupData = infoBackupData(infoBackup, backupIdx); KeyValue *backupDataKv = kvNew(); kvPut(backupDataKv, VARSTR(INFO_KEY_FORMAT_STR), VARUINT(backupData.backrestFormat)); kvPut(backupDataKv, VARSTR(INFO_KEY_VERSION_STR), VARSTR(backupData.backrestVersion)); kvPut(backupDataKv, INFO_KEY_DB_ID_VAR, VARUINT(backupData.backupPgId)); kvPut(backupDataKv, INFO_BACKUP_KEY_BACKUP_ARCHIVE_START_VAR, VARSTR(backupData.backupArchiveStart)); kvPut(backupDataKv, INFO_BACKUP_KEY_BACKUP_ARCHIVE_STOP_VAR, VARSTR(backupData.backupArchiveStop)); if (backupData.backupPrior != NULL) kvPut(backupDataKv, INFO_BACKUP_KEY_BACKUP_PRIOR_VAR, VARSTR(backupData.backupPrior)); if (backupData.backupReference != NULL) { kvPut( backupDataKv, INFO_BACKUP_KEY_BACKUP_REFERENCE_VAR, varNewVarLst(varLstNewStrLst(backupData.backupReference))); } kvPut(backupDataKv, INFO_BACKUP_KEY_BACKUP_INFO_REPO_SIZE_VAR, VARUINT64(backupData.backupInfoRepoSize)); kvPut(backupDataKv, INFO_BACKUP_KEY_BACKUP_INFO_REPO_SIZE_DELTA_VAR, VARUINT64(backupData.backupInfoRepoSizeDelta)); kvPut(backupDataKv, INFO_BACKUP_KEY_BACKUP_INFO_SIZE_VAR, VARUINT64(backupData.backupInfoSize)); kvPut(backupDataKv, INFO_BACKUP_KEY_BACKUP_INFO_SIZE_DELTA_VAR, VARUINT64(backupData.backupInfoSizeDelta)); // When storing time_t treat as signed int to avoid casting kvPut(backupDataKv, INFO_BACKUP_KEY_BACKUP_TIMESTAMP_START_VAR, VARINT64(backupData.backupTimestampStart)); kvPut(backupDataKv, INFO_BACKUP_KEY_BACKUP_TIMESTAMP_STOP_VAR, VARINT64(backupData.backupTimestampStop)); kvPut(backupDataKv, INFO_BACKUP_KEY_BACKUP_TYPE_VAR, VARSTR(backupData.backupType)); kvPut(backupDataKv, INFO_BACKUP_KEY_OPT_ARCHIVE_CHECK_VAR, VARBOOL(backupData.optionArchiveCheck)); kvPut(backupDataKv, INFO_BACKUP_KEY_OPT_ARCHIVE_COPY_VAR, VARBOOL(backupData.optionArchiveCopy)); kvPut(backupDataKv, INFO_BACKUP_KEY_OPT_BACKUP_STANDBY_VAR, VARBOOL(backupData.optionBackupStandby)); kvPut(backupDataKv, INFO_BACKUP_KEY_OPT_CHECKSUM_PAGE_VAR, VARBOOL(backupData.optionChecksumPage)); kvPut(backupDataKv, INFO_BACKUP_KEY_OPT_COMPRESS_VAR, VARBOOL(backupData.optionCompress)); kvPut(backupDataKv, INFO_BACKUP_KEY_OPT_HARDLINK_VAR, VARBOOL(backupData.optionHardlink)); kvPut(backupDataKv, INFO_BACKUP_KEY_OPT_ONLINE_VAR, VARBOOL(backupData.optionOnline)); infoSaveValue( infoSaveData, INFO_BACKUP_SECTION_BACKUP_CURRENT_STR, backupData.backupLabel, jsonFromKv(backupDataKv)); } } FUNCTION_TEST_RETURN_VOID(); } static void infoBackupSave(InfoBackup *this, IoWrite *write) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_BACKUP, this); FUNCTION_LOG_PARAM(IO_WRITE, write); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(write != NULL); MEM_CONTEXT_TEMP_BEGIN() { infoPgSave(infoBackupPg(this), write, infoBackupSaveCallback, this); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Get PostgreSQL info ***********************************************************************************************************************************/ InfoPg * infoBackupPg(const InfoBackup *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INFO_BACKUP, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->infoPg); } /*********************************************************************************************************************************** Set the infoPg data ***********************************************************************************************************************************/ InfoBackup * infoBackupPgSet(InfoBackup *this, unsigned int pgVersion, uint64_t pgSystemId) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_BACKUP, this); FUNCTION_LOG_PARAM(UINT, pgVersion); FUNCTION_LOG_PARAM(UINT64, pgSystemId); FUNCTION_LOG_END(); this->infoPg = infoPgSet(this->infoPg, infoPgBackup, pgVersion, pgSystemId); FUNCTION_LOG_RETURN(INFO_BACKUP, this); } /*********************************************************************************************************************************** Get total current backups ***********************************************************************************************************************************/ unsigned int infoBackupDataTotal(const InfoBackup *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INFO_BACKUP, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(lstSize(this->backup)); } /*********************************************************************************************************************************** Return a structure of the backup data from a specific index ***********************************************************************************************************************************/ InfoBackupData infoBackupData(const InfoBackup *this, unsigned int backupDataIdx) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(INFO_BACKUP, this); FUNCTION_LOG_PARAM(UINT, backupDataIdx); FUNCTION_LOG_END(); ASSERT(this != NULL); FUNCTION_LOG_RETURN(INFO_BACKUP_DATA, *((InfoBackupData *)lstGet(this->backup, backupDataIdx))); } /*********************************************************************************************************************************** Add a backup to the current list ***********************************************************************************************************************************/ void infoBackupDataAdd(const InfoBackup *this, const Manifest *manifest) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(INFO_BACKUP, this); FUNCTION_LOG_PARAM(MANIFEST, manifest); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(manifest != NULL); MEM_CONTEXT_TEMP_BEGIN() { const ManifestData *manData = manifestData(manifest); // Calculate backup sizes and references uint64_t backupSize = 0; uint64_t backupSizeDelta = 0; uint64_t backupRepoSize = 0; uint64_t backupRepoSizeDelta = 0; StringList *referenceList = strLstNew(); for (unsigned int fileIdx = 0; fileIdx < manifestFileTotal(manifest); fileIdx++) { const ManifestFile *file = manifestFile(manifest, fileIdx); backupSize += file->size; backupRepoSize += file->sizeRepo > 0 ? file->sizeRepo : file->size; // If a reference to a file exists, then it is in a previous backup and the delta calculation was already done if (file->reference != NULL) strLstAddIfMissing(referenceList, file->reference); else { backupSizeDelta += file->size; backupRepoSizeDelta += file->sizeRepo > 0 ? file->sizeRepo : file->size; } } MEM_CONTEXT_BEGIN(lstMemContext(this->backup)) { InfoBackupData infoBackupData = { .backupLabel = strDup(manData->backupLabel), .backrestFormat = REPOSITORY_FORMAT, .backrestVersion = strDup(manData->backrestVersion), .backupInfoRepoSize = backupRepoSize, .backupInfoRepoSizeDelta = backupRepoSizeDelta, .backupInfoSize = backupSize, .backupInfoSizeDelta = backupSizeDelta, .backupPgId = manData->pgId, .backupTimestampStart = manData->backupTimestampStart, .backupTimestampStop= manData->backupTimestampStop, .backupType = backupTypeStr(manData->backupType), .backupArchiveStart = strDup(manData->archiveStart), .backupArchiveStop = strDup(manData->archiveStop), .optionArchiveCheck = manData->backupOptionArchiveCheck, .optionArchiveCopy = manData->backupOptionArchiveCopy, .optionBackupStandby = manData->backupOptionStandby != NULL ? varBool(manData->backupOptionStandby) : false, .optionChecksumPage = manData->backupOptionChecksumPage != NULL ? varBool(manData->backupOptionChecksumPage) : false, .optionCompress = manData->backupOptionCompress, .optionHardlink = manData->backupOptionHardLink, .optionOnline = manData->backupOptionOnline, }; if (manData->backupType != backupTypeFull) { strLstSort(referenceList, sortOrderAsc); infoBackupData.backupReference = strLstDup(referenceList); infoBackupData.backupPrior = strDup(manData->backupLabelPrior); } // Add the backup data to the current backup list lstAdd(this->backup, &infoBackupData); // Ensure the list is sorted ascending by the backupLabel lstSort(this->backup, sortOrderAsc); } MEM_CONTEXT_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Delete a backup from the current backup list ***********************************************************************************************************************************/ void infoBackupDataDelete(const InfoBackup *this, const String *backupDeleteLabel) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(INFO_BACKUP, this); FUNCTION_LOG_PARAM(STRING, backupDeleteLabel); FUNCTION_LOG_END(); ASSERT(this != NULL); for (unsigned int idx = 0; idx < infoBackupDataTotal(this); idx++) { InfoBackupData backupData = infoBackupData(this, idx); if (strCmp(backupData.backupLabel, backupDeleteLabel) == 0) lstRemoveIdx(this->backup, idx); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Return a list of current backup labels, applying a regex expression if provided ***********************************************************************************************************************************/ StringList * infoBackupDataLabelList(const InfoBackup *this, const String *expression) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(INFO_BACKUP, this); FUNCTION_LOG_PARAM(STRING, expression); FUNCTION_LOG_END(); ASSERT(this != NULL); // Return a 0 sized list if no current backups or none matching the filter StringList *result = strLstNew(); MEM_CONTEXT_TEMP_BEGIN() { // Prepare regexp if an expression was passed RegExp *regExp = (expression == NULL) ? NULL : regExpNew(expression); // For each backup label, compare it to the filter (if any) and sort it for return for (unsigned int backupLabelIdx = 0; backupLabelIdx < infoBackupDataTotal(this); backupLabelIdx++) { InfoBackupData backupData = infoBackupData(this, backupLabelIdx); if (regExp == NULL || regExpMatch(regExp, backupData.backupLabel)) { strLstAdd(result, backupData.backupLabel); } } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING_LIST, result); } /*********************************************************************************************************************************** Return the cipher passphrase ***********************************************************************************************************************************/ const String * infoBackupCipherPass(const InfoBackup *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INFO_BACKUP, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(infoPgCipherPass(this->infoPg)); } /*********************************************************************************************************************************** Helper function to load backup info files ***********************************************************************************************************************************/ typedef struct InfoBackupLoadFileData { MemContext *memContext; // Mem context const Storage *storage; // Storage to load from const String *fileName; // Base filename CipherType cipherType; // Cipher type const String *cipherPass; // Cipher passphrase InfoBackup *infoBackup; // Loaded infoBackup object } InfoBackupLoadFileData; static bool infoBackupLoadFileCallback(void *data, unsigned int try) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM_P(VOID, data); FUNCTION_LOG_PARAM(UINT, try); FUNCTION_LOG_END(); ASSERT(data != NULL); InfoBackupLoadFileData *loadData = (InfoBackupLoadFileData *)data; bool result = false; if (try < 2) { // Construct filename based on try const String *fileName = try == 0 ? loadData->fileName : strNewFmt("%s" INFO_COPY_EXT, strPtr(loadData->fileName)); // Attempt to load the file IoRead *read = storageReadIo(storageNewReadP(loadData->storage, fileName)); cipherBlockFilterGroupAdd(ioReadFilterGroup(read), loadData->cipherType, cipherModeDecrypt, loadData->cipherPass); MEM_CONTEXT_BEGIN(loadData->memContext) { loadData->infoBackup = infoBackupNewLoad(read); result = true; } MEM_CONTEXT_END(); } FUNCTION_LOG_RETURN(BOOL, result); } InfoBackup * infoBackupLoadFile(const Storage *storage, const String *fileName, CipherType cipherType, const String *cipherPass) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE, storage); FUNCTION_LOG_PARAM(STRING, fileName); FUNCTION_LOG_PARAM(ENUM, cipherType); FUNCTION_TEST_PARAM(STRING, cipherPass); FUNCTION_LOG_END(); ASSERT(storage != NULL); ASSERT(fileName != NULL); ASSERT((cipherType == cipherTypeNone && cipherPass == NULL) || (cipherType != cipherTypeNone && cipherPass != NULL)); InfoBackupLoadFileData data = { .memContext = memContextCurrent(), .storage = storage, .fileName = fileName, .cipherType = cipherType, .cipherPass = cipherPass, }; MEM_CONTEXT_TEMP_BEGIN() { const char *fileNamePath = strPtr(storagePathP(storage, fileName)); TRY_BEGIN() { infoLoad( strNewFmt("unable to load info file '%s' or '%s" INFO_COPY_EXT "'", fileNamePath, fileNamePath), infoBackupLoadFileCallback, &data); } CATCH_ANY() { THROWP_FMT( errorType(), "%s\n" "HINT: backup.info cannot be opened and is required to perform a backup.\n" "HINT: has a stanza-create been performed?", errorMessage()); } TRY_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(INFO_BACKUP, data.infoBackup); } /*********************************************************************************************************************************** Load backup info and update it by adding valid backups from the repo or removing backups no longer in the repo ***********************************************************************************************************************************/ InfoBackup * infoBackupLoadFileReconstruct(const Storage *storage, const String *fileName, CipherType cipherType, const String *cipherPass) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE, storage); FUNCTION_LOG_PARAM(STRING, fileName); FUNCTION_LOG_PARAM(ENUM, cipherType); FUNCTION_TEST_PARAM(STRING, cipherPass); FUNCTION_LOG_END(); ASSERT(storage != NULL); ASSERT(fileName != NULL); ASSERT((cipherType == cipherTypeNone && cipherPass == NULL) || (cipherType != cipherTypeNone && cipherPass != NULL)); InfoBackup *infoBackup = infoBackupLoadFile(storage, fileName, cipherType, cipherPass); MEM_CONTEXT_TEMP_BEGIN() { // Get a list of backups in the repo StringList *backupList = strLstSort( storageListP( storage, STORAGE_REPO_BACKUP_STR, .expression = backupRegExpP(.full = true, .differential = true, .incremental = true)), sortOrderAsc); // Get the current list of backups from backup.info StringList *backupCurrentList = strLstSort(infoBackupDataLabelList(infoBackup, NULL), sortOrderAsc); // For each backup in the repo, check if it exists in backup.info for (unsigned int backupIdx = 0; backupIdx < strLstSize(backupList); backupIdx++) { String *backupLabel = strLstGet(backupList, backupIdx); // If it does not exist in the list of current backups, then if it is valid, add it if (!strLstExists(backupCurrentList, backupLabel)) { String *manifestFileName = strNewFmt(STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE, strPtr(backupLabel)); // Check if a completed backup exists (backup.manifest only - ignore .copy) if (storageExistsP(storage, manifestFileName)) { bool found = false; const Manifest *manifest = manifestLoadFile( storage, manifestFileName, cipherType, infoPgCipherPass(infoBackup->infoPg)); const ManifestData *manData = manifestData(manifest); // If the pg data for the manifest exists in the history, then add it to current, but if something doesn't match // then warn that the backup is not valid for (unsigned int pgIdx = 0; pgIdx < infoPgDataTotal(infoBackup->infoPg); pgIdx++) { InfoPgData pgHistory = infoPgData(infoBackup->infoPg, pgIdx); // If there is an exact match with the history, system and version then add it to the current backup list if (manData->pgId == pgHistory.id && manData->pgSystemId == pgHistory.systemId && manData->pgVersion == pgHistory.version) { LOG_WARN_FMT("backup '%s' found in repository added to " INFO_BACKUP_FILE, strPtr(backupLabel)); infoBackupDataAdd(infoBackup, manifest); found = true; break; } } if (!found) LOG_WARN_FMT("invalid backup '%s' cannot be added to current backups", strPtr(manData->backupLabel)); } } } // Get the updated list of current backups and remove backups from current that are no longer in the repository backupCurrentList = infoBackupDataLabelList(infoBackup, NULL); for (unsigned int backupCurrIdx = 0; backupCurrIdx < strLstSize(backupCurrentList); backupCurrIdx++) { String *backupLabel = strLstGet(backupCurrentList, backupCurrIdx); String *manifestFileName = strNewFmt(STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE, strPtr(backupLabel)); // Remove backup from the current list in the infoBackup object if (!storageExistsP(storage, manifestFileName)) { LOG_WARN_FMT("backup '%s' missing manifest removed from " INFO_BACKUP_FILE, strPtr(backupLabel)); infoBackupDataDelete(infoBackup, backupLabel); } } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(INFO_BACKUP, infoBackup); } /*********************************************************************************************************************************** Helper function to save backup info files ***********************************************************************************************************************************/ void infoBackupSaveFile( InfoBackup *infoBackup, const Storage *storage, const String *fileName, CipherType cipherType, const String *cipherPass) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_BACKUP, infoBackup); FUNCTION_LOG_PARAM(STORAGE, storage); FUNCTION_LOG_PARAM(STRING, fileName); FUNCTION_LOG_PARAM(ENUM, cipherType); FUNCTION_TEST_PARAM(STRING, cipherPass); FUNCTION_LOG_END(); ASSERT(infoBackup != NULL); ASSERT(storage != NULL); ASSERT(fileName != NULL); ASSERT((cipherType == cipherTypeNone && cipherPass == NULL) || (cipherType != cipherTypeNone && cipherPass != NULL)); MEM_CONTEXT_TEMP_BEGIN() { // Save the file IoWrite *write = storageWriteIo(storageNewWriteP(storage, fileName)); cipherBlockFilterGroupAdd(ioWriteFilterGroup(write), cipherType, cipherModeEncrypt, cipherPass); infoBackupSave(infoBackup, write); // Make a copy of the file storageCopy( storageNewReadP(storage, fileName), storageNewWriteP(storage, strNewFmt("%s" INFO_COPY_EXT, strPtr(fileName)))); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * infoBackupDataToLog(const InfoBackupData *this) { return strNewFmt("{label: %s, pgId: %u}", strPtr(this->backupLabel), this->backupPgId); } pgbackrest-release-2.24/src/info/infoBackup.h000066400000000000000000000145571362531507100211770ustar00rootroot00000000000000/*********************************************************************************************************************************** Backup Info Handler ***********************************************************************************************************************************/ #ifndef INFO_INFOBACKUP_H #define INFO_INFOBACKUP_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define INFO_BACKUP_TYPE InfoBackup #define INFO_BACKUP_PREFIX infoBackup typedef struct InfoBackup InfoBackup; #include "common/type/string.h" #include "common/type/stringList.h" #include "info/infoPg.h" #include "info/manifest.h" #include "storage/storage.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define INFO_BACKUP_FILE "backup.info" #define INFO_BACKUP_PATH_FILE STORAGE_REPO_BACKUP "/" INFO_BACKUP_FILE STRING_DECLARE(INFO_BACKUP_PATH_FILE_STR); #define INFO_BACKUP_PATH_FILE_COPY INFO_BACKUP_PATH_FILE INFO_COPY_EXT STRING_DECLARE(INFO_BACKUP_PATH_FILE_COPY_STR); /*********************************************************************************************************************************** Information about an existing backup ***********************************************************************************************************************************/ typedef struct InfoBackupData { const String *backupLabel; // backupLabel must be first to allow for built-in list sorting unsigned int backrestFormat; const String *backrestVersion; const String *backupArchiveStart; const String *backupArchiveStop; uint64_t backupInfoRepoSize; uint64_t backupInfoRepoSizeDelta; uint64_t backupInfoSize; uint64_t backupInfoSizeDelta; unsigned int backupPgId; const String *backupPrior; StringList *backupReference; time_t backupTimestampStart; time_t backupTimestampStop; const String *backupType; bool optionArchiveCheck; bool optionArchiveCopy; bool optionBackupStandby; bool optionChecksumPage; bool optionCompress; bool optionHardlink; bool optionOnline; } InfoBackupData; /*********************************************************************************************************************************** Constructors ***********************************************************************************************************************************/ InfoBackup *infoBackupNew(unsigned int pgVersion, uint64_t pgSystemId, const String *cipherPassSub); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ // Add backup to current section void infoBackupDataAdd(const InfoBackup *this, const Manifest *manifest); // Remove a backup from the current section void infoBackupDataDelete(const InfoBackup *this, const String *backupDeleteLabel); InfoBackup *infoBackupPgSet(InfoBackup *this, unsigned int pgVersion, uint64_t pgSystemId); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ // Get a list of current backup labels StringList *infoBackupDataLabelList(const InfoBackup *this, const String *expression); InfoPg *infoBackupPg(const InfoBackup *this); InfoBackupData infoBackupData(const InfoBackup *this, unsigned int backupDataIdx); unsigned int infoBackupDataTotal(const InfoBackup *this); const String *infoBackupCipherPass(const InfoBackup *this); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void infoBackupFree(InfoBackup *this); /*********************************************************************************************************************************** Helper functions ***********************************************************************************************************************************/ InfoBackup *infoBackupLoadFile( const Storage *storage, const String *fileName, CipherType cipherType, const String *cipherPass); InfoBackup *infoBackupLoadFileReconstruct( const Storage *storage, const String *fileName, CipherType cipherType, const String *cipherPass); void infoBackupSaveFile( InfoBackup *infoBackup, const Storage *storage, const String *fileName, CipherType cipherType, const String *cipherPass); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *infoBackupDataToLog(const InfoBackupData *this); #define FUNCTION_LOG_INFO_BACKUP_TYPE \ InfoBackup * #define FUNCTION_LOG_INFO_BACKUP_FORMAT(value, buffer, bufferSize) \ objToLog(value, "InfoBackup", buffer, bufferSize) #define FUNCTION_LOG_INFO_BACKUP_DATA_TYPE \ InfoBackupData #define FUNCTION_LOG_INFO_BACKUP_DATA_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(&value, infoBackupDataToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/info/infoPg.c000066400000000000000000000477731362531507100203410ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL Info Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include #include #include "common/debug.h" #include "common/ini.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "common/type/json.h" #include "common/type/list.h" #include "info/info.h" #include "info/infoPg.h" #include "postgres/interface.h" #include "postgres/version.h" #include "storage/helper.h" /*********************************************************************************************************************************** Internal constants ***********************************************************************************************************************************/ STRING_STATIC(INFO_SECTION_DB_STR, "db"); STRING_STATIC(INFO_SECTION_DB_HISTORY_STR, "db:history"); STRING_STATIC(INFO_KEY_DB_ID_STR, INFO_KEY_DB_ID); VARIANT_STRDEF_EXTERN(INFO_KEY_DB_ID_VAR, INFO_KEY_DB_ID); VARIANT_STRDEF_STATIC(INFO_KEY_DB_CATALOG_VERSION_VAR, "db-catalog-version"); VARIANT_STRDEF_STATIC(INFO_KEY_DB_CONTROL_VERSION_VAR, "db-control-version"); VARIANT_STRDEF_STATIC(INFO_KEY_DB_SYSTEM_ID_VAR, "db-system-id"); VARIANT_STRDEF_STATIC(INFO_KEY_DB_VERSION_VAR, "db-version"); /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct InfoPg { MemContext *memContext; // Mem context Info *info; // Info contents InfoPgType type; // Type of info file being loaded List *history; // A list of InfoPgData unsigned int historyCurrent; // Index of the current history item }; /*********************************************************************************************************************************** Internal constructor ***********************************************************************************************************************************/ static InfoPg * infoPgNewInternal(InfoPgType type) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, type); FUNCTION_TEST_END(); InfoPg *this = memNew(sizeof(InfoPg)); *this = (InfoPg) { .memContext = memContextCurrent(), .type = type, .history = lstNew(sizeof(InfoPgData)), }; FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Create new object ***********************************************************************************************************************************/ InfoPg * infoPgNew(InfoPgType type, const String *cipherPassSub) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(ENUM, type); FUNCTION_TEST_PARAM(STRING, cipherPassSub); FUNCTION_LOG_END(); InfoPg *this = NULL; MEM_CONTEXT_NEW_BEGIN("InfoPg") { this = infoPgNewInternal(type); this->info = infoNew(cipherPassSub); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(INFO_PG, this); } /*********************************************************************************************************************************** Create new object and load contents from a file ***********************************************************************************************************************************/ typedef struct InfoPgLoadData { InfoLoadNewCallback *callbackFunction; // Callback function for child object void *callbackData; // Callback data for child object InfoPg *infoPg; // Pg info unsigned int currentId; // Current database id } InfoPgLoadData; static void infoPgLoadCallback(void *data, const String *section, const String *key, const String *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, data); FUNCTION_TEST_PARAM(STRING, section); FUNCTION_TEST_PARAM(STRING, key); FUNCTION_TEST_PARAM(STRING, value); FUNCTION_TEST_END(); ASSERT(data != NULL); ASSERT(section != NULL); ASSERT(key != NULL); ASSERT(value != NULL); InfoPgLoadData *loadData = (InfoPgLoadData *)data; // Process db section if (strEq(section, INFO_SECTION_DB_STR)) { if (strEq(key, INFO_KEY_DB_ID_STR)) loadData->currentId = jsonToUInt(value); } // Process db:history section else if (strEq(section, INFO_SECTION_DB_HISTORY_STR)) { // Load JSON loadData into a KeyValue const KeyValue *pgDataKv = jsonToKv(value); // Get db values that are common to all info files InfoPgData infoPgData = { .id = cvtZToUInt(strPtr(key)), .version = pgVersionFromStr(varStr(kvGet(pgDataKv, INFO_KEY_DB_VERSION_VAR))), // This is different in archive.info due to a typo that can't be fixed without a format version bump .systemId = varUInt64Force( kvGet(pgDataKv, loadData->infoPg->type == infoPgArchive ? INFO_KEY_DB_ID_VAR : INFO_KEY_DB_SYSTEM_ID_VAR)), }; // Insert at beginning of list so the history is reverse ordered lstInsert(loadData->infoPg->history, 0, &infoPgData); } // Callback if set else if (loadData->callbackFunction != NULL) loadData->callbackFunction(loadData->callbackData, section, key, value); FUNCTION_TEST_RETURN_VOID(); } InfoPg * infoPgNewLoad(IoRead *read, InfoPgType type, InfoLoadNewCallback *callbackFunction, void *callbackData) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(IO_READ, read); FUNCTION_LOG_PARAM(ENUM, type); FUNCTION_LOG_PARAM(FUNCTIONP, callbackFunction); FUNCTION_LOG_PARAM_P(VOID, callbackData); FUNCTION_LOG_END(); ASSERT(read != NULL); ASSERT(type == infoPgBackup || type == infoPgArchive); ASSERT((callbackFunction == NULL && callbackData == NULL) || (callbackFunction != NULL && callbackData != NULL)); InfoPg *this = NULL; MEM_CONTEXT_NEW_BEGIN("InfoPg") { this = infoPgNewInternal(type); // Set historyCurrent to UINT_MAX so we can detect if it was loaded correctly this->historyCurrent = UINT_MAX; // Load InfoPgLoadData loadData = { .callbackFunction = callbackFunction, .callbackData = callbackData, .infoPg = this, }; this->info = infoNewLoad(read, infoPgLoadCallback, &loadData); // History must include at least one item or the file is corrupt CHECK(lstSize(this->history) > 0); // If the current id was not found then the file is corrupt CHECK(loadData.currentId > 0); // Find the current history item for (unsigned int historyIdx = 0; historyIdx < lstSize(this->history); historyIdx++) { if (((InfoPgData *)lstGet(this->history, historyIdx))->id == loadData.currentId) this->historyCurrent = historyIdx; } // If the current id did not match the history list then the file is corrupt CHECK(this->historyCurrent != UINT_MAX); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(INFO_PG, this); } /*********************************************************************************************************************************** Add Postgres data to the history list at position 0 to ensure the latest history is always first in the list ***********************************************************************************************************************************/ void infoPgAdd(InfoPg *this, const InfoPgData *infoPgData) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_PG, this); FUNCTION_LOG_PARAM_P(INFO_PG_DATA, infoPgData); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(infoPgData != NULL); lstInsert(this->history, 0, infoPgData); this->historyCurrent = 0; FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Set the InfoPg object data based on values passed ***********************************************************************************************************************************/ InfoPg * infoPgSet(InfoPg *this, InfoPgType type, const unsigned int pgVersion, const uint64_t pgSystemId) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_PG, this); FUNCTION_LOG_PARAM(ENUM, type); FUNCTION_LOG_PARAM(UINT, pgVersion); FUNCTION_LOG_PARAM(UINT64, pgSystemId); FUNCTION_LOG_END(); ASSERT(this != NULL); MEM_CONTEXT_TEMP_BEGIN() { unsigned int pgDataId = 1; // If there is some history, then get the historyId of the most current and increment it if (infoPgDataTotal(this) > 0) pgDataId = infoPgCurrentDataId(this) + 1; // Set db values that are common to all info files InfoPgData infoPgData = { .id = pgDataId, .version = pgVersion, // This is different in archive.info due to a typo that can't be fixed without a format version bump .systemId = pgSystemId, }; // Add the pg data to the history list infoPgAdd(this, &infoPgData); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(INFO_PG, this); } /*********************************************************************************************************************************** Save to file ***********************************************************************************************************************************/ typedef struct InfoPgSaveData { InfoSaveCallback *callbackFunction; // Callback function for child object void *callbackData; // Callback data for child object InfoPgType type; // Type of info file being loaded InfoPg *infoPg; // InfoPg object to be saved } InfoPgSaveData; static void infoPgSaveCallback(void *data, const String *sectionNext, InfoSave *infoSaveData) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, data); FUNCTION_TEST_PARAM(STRING, sectionNext); FUNCTION_TEST_PARAM(INFO_SAVE, infoSaveData); FUNCTION_TEST_END(); ASSERT(data != NULL); ASSERT(infoSaveData != NULL); InfoPgSaveData *saveData = (InfoPgSaveData *)data; if (infoSaveSection(infoSaveData, INFO_SECTION_DB_STR, sectionNext)) { if (saveData->callbackFunction != NULL) saveData->callbackFunction(saveData->callbackData, INFO_SECTION_DB_STR, infoSaveData); InfoPgData pgData = infoPgDataCurrent(saveData->infoPg); // These need to be saved because older pgBackRest versions expect them if (saveData->infoPg->type == infoPgBackup) { infoSaveValue( infoSaveData, INFO_SECTION_DB_STR, varStr(INFO_KEY_DB_CATALOG_VERSION_VAR), jsonFromUInt(pgCatalogVersion(pgData.version))); infoSaveValue( infoSaveData, INFO_SECTION_DB_STR, varStr(INFO_KEY_DB_CONTROL_VERSION_VAR), jsonFromUInt(pgControlVersion(pgData.version))); } infoSaveValue(infoSaveData, INFO_SECTION_DB_STR, varStr(INFO_KEY_DB_ID_VAR), jsonFromUInt(pgData.id)); infoSaveValue(infoSaveData, INFO_SECTION_DB_STR, varStr(INFO_KEY_DB_SYSTEM_ID_VAR), jsonFromUInt64(pgData.systemId)); infoSaveValue( infoSaveData, INFO_SECTION_DB_STR, varStr(INFO_KEY_DB_VERSION_VAR), jsonFromStr(pgVersionToStr(pgData.version))); } if (infoSaveSection(infoSaveData, INFO_SECTION_DB_HISTORY_STR, sectionNext)) { if (saveData->callbackFunction != NULL) saveData->callbackFunction(saveData->callbackData, INFO_SECTION_DB_HISTORY_STR, infoSaveData); // Set the db history section in reverse so oldest history is first instead of last to be consistent with load for (unsigned int pgDataIdx = infoPgDataTotal(saveData->infoPg) - 1; (int)pgDataIdx >= 0; pgDataIdx--) { InfoPgData pgData = infoPgData(saveData->infoPg, pgDataIdx); KeyValue *pgDataKv = kvNew(); kvPut(pgDataKv, INFO_KEY_DB_VERSION_VAR, VARSTR(pgVersionToStr(pgData.version))); if (saveData->infoPg->type == infoPgBackup) { kvPut(pgDataKv, INFO_KEY_DB_SYSTEM_ID_VAR, VARUINT64(pgData.systemId)); // These need to be saved because older pgBackRest versions expect them kvPut(pgDataKv, INFO_KEY_DB_CATALOG_VERSION_VAR, VARUINT(pgCatalogVersion(pgData.version))); kvPut(pgDataKv, INFO_KEY_DB_CONTROL_VERSION_VAR, VARUINT(pgControlVersion(pgData.version))); } else kvPut(pgDataKv, INFO_KEY_DB_ID_VAR, VARUINT64(pgData.systemId)); infoSaveValue(infoSaveData, INFO_SECTION_DB_HISTORY_STR, varStrForce(VARUINT(pgData.id)), jsonFromKv(pgDataKv)); } } // Process the callback even if none of the sections above get executed if (saveData->callbackFunction != NULL) saveData->callbackFunction(saveData->callbackData, sectionNext, infoSaveData); FUNCTION_TEST_RETURN_VOID() } void infoPgSave(InfoPg *this, IoWrite *write, InfoSaveCallback *callbackFunction, void *callbackData) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_PG, this); FUNCTION_LOG_PARAM(IO_WRITE, write); FUNCTION_LOG_PARAM(FUNCTIONP, callbackFunction); FUNCTION_LOG_PARAM_P(VOID, callbackData); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(write != NULL); ASSERT((callbackFunction == NULL && callbackData == NULL) || (callbackFunction != NULL && callbackData != NULL)); MEM_CONTEXT_TEMP_BEGIN() { InfoPgSaveData saveData = { .callbackFunction = callbackFunction, .callbackData = callbackData, .infoPg = this, }; infoSave(infoPgInfo(this), write, infoPgSaveCallback, &saveData); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Construct archive id ***********************************************************************************************************************************/ String * infoPgArchiveId(const InfoPg *this, unsigned int pgDataIdx) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(INFO_PG, this); FUNCTION_LOG_PARAM(UINT, pgDataIdx); FUNCTION_LOG_END(); ASSERT(this != NULL); InfoPgData pgData = infoPgData(this, pgDataIdx); FUNCTION_LOG_RETURN(STRING, strNewFmt("%s-%u", strPtr(pgVersionToStr(pgData.version)), pgData.id)); } /*********************************************************************************************************************************** Return the cipher passphrase ***********************************************************************************************************************************/ const String * infoPgCipherPass(const InfoPg *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INFO_PG, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(infoCipherPass(this->info)); } /*********************************************************************************************************************************** Return a structure of the Postgres data from a specific index ***********************************************************************************************************************************/ InfoPgData infoPgData(const InfoPg *this, unsigned int pgDataIdx) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(INFO_PG, this); FUNCTION_LOG_PARAM(UINT, pgDataIdx); FUNCTION_LOG_END(); ASSERT(this != NULL); FUNCTION_LOG_RETURN(INFO_PG_DATA, *((InfoPgData *)lstGet(this->history, pgDataIdx))); } /*********************************************************************************************************************************** Return a structure of the current Postgres data ***********************************************************************************************************************************/ InfoPgData infoPgDataCurrent(const InfoPg *this) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_PG, this); FUNCTION_LOG_END(); ASSERT(this != NULL); FUNCTION_LOG_RETURN(INFO_PG_DATA, infoPgData(this, infoPgDataCurrentId(this))); } /*********************************************************************************************************************************** Return the current history index ***********************************************************************************************************************************/ unsigned int infoPgDataCurrentId(const InfoPg *this) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INFO_PG, this); FUNCTION_LOG_END(); ASSERT(this != NULL); FUNCTION_LOG_RETURN(UINT, this->historyCurrent); } /*********************************************************************************************************************************** Get base info ***********************************************************************************************************************************/ Info * infoPgInfo(const InfoPg *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(INFO_PG, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->info); } /*********************************************************************************************************************************** Return total Postgres data in the history ***********************************************************************************************************************************/ unsigned int infoPgDataTotal(const InfoPg *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(INFO_PG, this); FUNCTION_LOG_END(); ASSERT(this != NULL); FUNCTION_LOG_RETURN(UINT, lstSize(this->history)); } /*********************************************************************************************************************************** Return current pgId from the history ***********************************************************************************************************************************/ unsigned int infoPgCurrentDataId(const InfoPg *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(INFO_PG, this); FUNCTION_LOG_END(); ASSERT(this != NULL); InfoPgData currentData = infoPgDataCurrent(this); FUNCTION_LOG_RETURN(UINT, currentData.id); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * infoPgDataToLog(const InfoPgData *this) { return strNewFmt("{id: %u, version: %u, systemId: %" PRIu64 "}", this->id, this->version, this->systemId); } pgbackrest-release-2.24/src/info/infoPg.h000066400000000000000000000116351362531507100203320ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL Info Handler ***********************************************************************************************************************************/ #ifndef INFO_INFOPG_H #define INFO_INFOPG_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define INFO_PG_TYPE InfoPg #define INFO_PG_PREFIX infoPg typedef struct InfoPg InfoPg; #include #include "common/crypto/common.h" #include "common/ini.h" #include "info/info.h" #include "storage/storage.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define INFO_KEY_DB_ID "db-id" VARIANT_DECLARE(INFO_KEY_DB_ID_VAR); /*********************************************************************************************************************************** Information about the PostgreSQL cluster ***********************************************************************************************************************************/ typedef struct InfoPgData { unsigned int id; uint64_t systemId; unsigned int version; } InfoPgData; /*********************************************************************************************************************************** Info types for determining data in DB section ***********************************************************************************************************************************/ typedef enum { infoPgArchive, // archive info file infoPgBackup, // backup info file } InfoPgType; /*********************************************************************************************************************************** Constructors ***********************************************************************************************************************************/ InfoPg *infoPgNew(InfoPgType type, const String *cipherPassSub); InfoPg *infoPgNewLoad(IoRead *read, InfoPgType type, InfoLoadNewCallback *callbackFunction, void *callbackData); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void infoPgAdd(InfoPg *this, const InfoPgData *infoPgData); InfoPg *infoPgSet(InfoPg *this, InfoPgType type, const unsigned int pgVersion, const uint64_t pgSystemId); void infoPgSave(InfoPg *this, IoWrite *write, InfoSaveCallback *callbackFunction, void *callbackData); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ String *infoPgArchiveId(const InfoPg *this, unsigned int pgDataIdx); const String *infoPgCipherPass(const InfoPg *this); InfoPgData infoPgData(const InfoPg *this, unsigned int pgDataIdx); InfoPgData infoPgDataCurrent(const InfoPg *this); unsigned int infoPgDataCurrentId(const InfoPg *this); Info *infoPgInfo(const InfoPg *this); unsigned int infoPgDataTotal(const InfoPg *this); unsigned int infoPgCurrentDataId(const InfoPg *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *infoPgDataToLog(const InfoPgData *this); #define FUNCTION_LOG_INFO_PG_TYPE \ InfoPg * #define FUNCTION_LOG_INFO_PG_FORMAT(value, buffer, bufferSize) \ objToLog(value, "InfoPg", buffer, bufferSize) #define FUNCTION_LOG_INFO_PG_DATA_TYPE \ InfoPgData #define FUNCTION_LOG_INFO_PG_DATA_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(&value, infoPgDataToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/info/manifest.c000066400000000000000000003707471362531507100207250ustar00rootroot00000000000000/*********************************************************************************************************************************** Backup Manifest Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include "common/crypto/cipherBlock.h" #include "common/debug.h" #include "common/log.h" #include "common/object.h" #include "common/regExp.h" #include "common/type/json.h" #include "common/type/list.h" #include "common/type/mcv.h" #include "info/info.h" #include "info/manifest.h" #include "postgres/interface.h" #include "postgres/version.h" #include "storage/storage.h" #include "version.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ STRING_EXTERN(BACKUP_MANIFEST_FILE_STR, BACKUP_MANIFEST_FILE); STRING_EXTERN(MANIFEST_TARGET_PGDATA_STR, MANIFEST_TARGET_PGDATA); STRING_EXTERN(MANIFEST_TARGET_PGTBLSPC_STR, MANIFEST_TARGET_PGTBLSPC); STRING_STATIC(MANIFEST_TARGET_TYPE_LINK_STR, "link"); STRING_STATIC(MANIFEST_TARGET_TYPE_PATH_STR, "path"); STRING_STATIC(MANIFEST_SECTION_BACKUP_STR, "backup"); STRING_STATIC(MANIFEST_SECTION_BACKUP_DB_STR, "backup:db"); STRING_STATIC(MANIFEST_SECTION_BACKUP_OPTION_STR, "backup:option"); STRING_STATIC(MANIFEST_SECTION_BACKUP_TARGET_STR, "backup:target"); STRING_STATIC(MANIFEST_SECTION_DB_STR, "db"); STRING_STATIC(MANIFEST_SECTION_TARGET_FILE_STR, "target:file"); STRING_STATIC(MANIFEST_SECTION_TARGET_FILE_DEFAULT_STR, "target:file:default"); STRING_STATIC(MANIFEST_SECTION_TARGET_LINK_STR, "target:link"); STRING_STATIC(MANIFEST_SECTION_TARGET_LINK_DEFAULT_STR, "target:link:default"); STRING_STATIC(MANIFEST_SECTION_TARGET_PATH_STR, "target:path"); STRING_STATIC(MANIFEST_SECTION_TARGET_PATH_DEFAULT_STR, "target:path:default"); #define MANIFEST_KEY_BACKUP_ARCHIVE_START "backup-archive-start" STRING_STATIC(MANIFEST_KEY_BACKUP_ARCHIVE_START_STR, MANIFEST_KEY_BACKUP_ARCHIVE_START); #define MANIFEST_KEY_BACKUP_ARCHIVE_STOP "backup-archive-stop" STRING_STATIC(MANIFEST_KEY_BACKUP_ARCHIVE_STOP_STR, MANIFEST_KEY_BACKUP_ARCHIVE_STOP); #define MANIFEST_KEY_BACKUP_LABEL "backup-label" STRING_STATIC(MANIFEST_KEY_BACKUP_LABEL_STR, MANIFEST_KEY_BACKUP_LABEL); #define MANIFEST_KEY_BACKUP_LSN_START "backup-lsn-start" STRING_STATIC(MANIFEST_KEY_BACKUP_LSN_START_STR, MANIFEST_KEY_BACKUP_LSN_START); #define MANIFEST_KEY_BACKUP_LSN_STOP "backup-lsn-stop" STRING_STATIC(MANIFEST_KEY_BACKUP_LSN_STOP_STR, MANIFEST_KEY_BACKUP_LSN_STOP); #define MANIFEST_KEY_BACKUP_PRIOR "backup-prior" STRING_STATIC(MANIFEST_KEY_BACKUP_PRIOR_STR, MANIFEST_KEY_BACKUP_PRIOR); #define MANIFEST_KEY_BACKUP_TIMESTAMP_COPY_START "backup-timestamp-copy-start" STRING_STATIC(MANIFEST_KEY_BACKUP_TIMESTAMP_COPY_START_STR, MANIFEST_KEY_BACKUP_TIMESTAMP_COPY_START); #define MANIFEST_KEY_BACKUP_TIMESTAMP_START "backup-timestamp-start" STRING_STATIC(MANIFEST_KEY_BACKUP_TIMESTAMP_START_STR, MANIFEST_KEY_BACKUP_TIMESTAMP_START); #define MANIFEST_KEY_BACKUP_TIMESTAMP_STOP "backup-timestamp-stop" STRING_STATIC(MANIFEST_KEY_BACKUP_TIMESTAMP_STOP_STR, MANIFEST_KEY_BACKUP_TIMESTAMP_STOP); #define MANIFEST_KEY_BACKUP_TYPE "backup-type" STRING_STATIC(MANIFEST_KEY_BACKUP_TYPE_STR, MANIFEST_KEY_BACKUP_TYPE); #define MANIFEST_KEY_CHECKSUM "checksum" VARIANT_STRDEF_STATIC(MANIFEST_KEY_CHECKSUM_VAR, MANIFEST_KEY_CHECKSUM); #define MANIFEST_KEY_CHECKSUM_PAGE "checksum-page" VARIANT_STRDEF_STATIC(MANIFEST_KEY_CHECKSUM_PAGE_VAR, MANIFEST_KEY_CHECKSUM_PAGE); #define MANIFEST_KEY_CHECKSUM_PAGE_ERROR "checksum-page-error" VARIANT_STRDEF_STATIC(MANIFEST_KEY_CHECKSUM_PAGE_ERROR_VAR, MANIFEST_KEY_CHECKSUM_PAGE_ERROR); #define MANIFEST_KEY_DB_ID "db-id" STRING_STATIC(MANIFEST_KEY_DB_ID_STR, MANIFEST_KEY_DB_ID); VARIANT_STRDEF_STATIC(MANIFEST_KEY_DB_ID_VAR, MANIFEST_KEY_DB_ID); #define MANIFEST_KEY_DB_LAST_SYSTEM_ID "db-last-system-id" VARIANT_STRDEF_STATIC(MANIFEST_KEY_DB_LAST_SYSTEM_ID_VAR, MANIFEST_KEY_DB_LAST_SYSTEM_ID); #define MANIFEST_KEY_DB_SYSTEM_ID "db-system-id" STRING_STATIC(MANIFEST_KEY_DB_SYSTEM_ID_STR, MANIFEST_KEY_DB_SYSTEM_ID); #define MANIFEST_KEY_DB_VERSION "db-version" STRING_STATIC(MANIFEST_KEY_DB_VERSION_STR, MANIFEST_KEY_DB_VERSION); #define MANIFEST_KEY_DESTINATION "destination" VARIANT_STRDEF_STATIC(MANIFEST_KEY_DESTINATION_VAR, MANIFEST_KEY_DESTINATION); #define MANIFEST_KEY_FILE "file" VARIANT_STRDEF_STATIC(MANIFEST_KEY_FILE_VAR, MANIFEST_KEY_FILE); #define MANIFEST_KEY_GROUP "group" STRING_STATIC(MANIFEST_KEY_GROUP_STR, MANIFEST_KEY_GROUP); VARIANT_STRDEF_STATIC(MANIFEST_KEY_GROUP_VAR, MANIFEST_KEY_GROUP); #define MANIFEST_KEY_PRIMARY "ma" "st" "er" STRING_STATIC(MANIFEST_KEY_PRIMARY_STR, MANIFEST_KEY_PRIMARY); VARIANT_STRDEF_STATIC(MANIFEST_KEY_PRIMARY_VAR, MANIFEST_KEY_PRIMARY); #define MANIFEST_KEY_MODE "mode" STRING_STATIC(MANIFEST_KEY_MODE_STR, MANIFEST_KEY_MODE); VARIANT_STRDEF_STATIC(MANIFEST_KEY_MODE_VAR, MANIFEST_KEY_MODE); #define MANIFEST_KEY_PATH "path" VARIANT_STRDEF_STATIC(MANIFEST_KEY_PATH_VAR, MANIFEST_KEY_PATH); #define MANIFEST_KEY_REFERENCE "reference" VARIANT_STRDEF_STATIC(MANIFEST_KEY_REFERENCE_VAR, MANIFEST_KEY_REFERENCE); #define MANIFEST_KEY_SIZE "size" VARIANT_STRDEF_STATIC(MANIFEST_KEY_SIZE_VAR, MANIFEST_KEY_SIZE); #define MANIFEST_KEY_SIZE_REPO "repo-size" VARIANT_STRDEF_STATIC(MANIFEST_KEY_SIZE_REPO_VAR, MANIFEST_KEY_SIZE_REPO); #define MANIFEST_KEY_TABLESPACE_ID "tablespace-id" VARIANT_STRDEF_STATIC(MANIFEST_KEY_TABLESPACE_ID_VAR, MANIFEST_KEY_TABLESPACE_ID); #define MANIFEST_KEY_TABLESPACE_NAME "tablespace-name" VARIANT_STRDEF_STATIC(MANIFEST_KEY_TABLESPACE_NAME_VAR, MANIFEST_KEY_TABLESPACE_NAME); #define MANIFEST_KEY_TIMESTAMP "timestamp" VARIANT_STRDEF_STATIC(MANIFEST_KEY_TIMESTAMP_VAR, MANIFEST_KEY_TIMESTAMP); #define MANIFEST_KEY_TYPE "type" VARIANT_STRDEF_STATIC(MANIFEST_KEY_TYPE_VAR, MANIFEST_KEY_TYPE); #define MANIFEST_KEY_USER "user" STRING_STATIC(MANIFEST_KEY_USER_STR, MANIFEST_KEY_USER); VARIANT_STRDEF_STATIC(MANIFEST_KEY_USER_VAR, MANIFEST_KEY_USER); #define MANIFEST_KEY_OPTION_ARCHIVE_CHECK "option-archive-check" STRING_STATIC(MANIFEST_KEY_OPTION_ARCHIVE_CHECK_STR, MANIFEST_KEY_OPTION_ARCHIVE_CHECK); #define MANIFEST_KEY_OPTION_ARCHIVE_COPY "option-archive-copy" STRING_STATIC(MANIFEST_KEY_OPTION_ARCHIVE_COPY_STR, MANIFEST_KEY_OPTION_ARCHIVE_COPY); #define MANIFEST_KEY_OPTION_BACKUP_STANDBY "option-backup-standby" STRING_STATIC(MANIFEST_KEY_OPTION_BACKUP_STANDBY_STR, MANIFEST_KEY_OPTION_BACKUP_STANDBY); #define MANIFEST_KEY_OPTION_BUFFER_SIZE "option-buffer-size" STRING_STATIC(MANIFEST_KEY_OPTION_BUFFER_SIZE_STR, MANIFEST_KEY_OPTION_BUFFER_SIZE); #define MANIFEST_KEY_OPTION_CHECKSUM_PAGE "option-checksum-page" STRING_STATIC(MANIFEST_KEY_OPTION_CHECKSUM_PAGE_STR, MANIFEST_KEY_OPTION_CHECKSUM_PAGE); #define MANIFEST_KEY_OPTION_COMPRESS "option-compress" STRING_STATIC(MANIFEST_KEY_OPTION_COMPRESS_STR, MANIFEST_KEY_OPTION_COMPRESS); #define MANIFEST_KEY_OPTION_COMPRESS_LEVEL "option-compress-level" STRING_STATIC(MANIFEST_KEY_OPTION_COMPRESS_LEVEL_STR, MANIFEST_KEY_OPTION_COMPRESS_LEVEL); #define MANIFEST_KEY_OPTION_COMPRESS_LEVEL_NETWORK "option-compress-level-network" STRING_STATIC(MANIFEST_KEY_OPTION_COMPRESS_LEVEL_NETWORK_STR, MANIFEST_KEY_OPTION_COMPRESS_LEVEL_NETWORK); #define MANIFEST_KEY_OPTION_DELTA "option-delta" STRING_STATIC(MANIFEST_KEY_OPTION_DELTA_STR, MANIFEST_KEY_OPTION_DELTA); #define MANIFEST_KEY_OPTION_HARDLINK "option-hardlink" STRING_STATIC(MANIFEST_KEY_OPTION_HARDLINK_STR, MANIFEST_KEY_OPTION_HARDLINK); #define MANIFEST_KEY_OPTION_ONLINE "option-online" STRING_STATIC(MANIFEST_KEY_OPTION_ONLINE_STR, MANIFEST_KEY_OPTION_ONLINE); #define MANIFEST_KEY_OPTION_PROCESS_MAX "option-process-max" STRING_STATIC(MANIFEST_KEY_OPTION_PROCESS_MAX_STR, MANIFEST_KEY_OPTION_PROCESS_MAX); /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct Manifest { MemContext *memContext; // Context that contains the Manifest Info *info; // Base info object StringList *ownerList; // List of users/groups StringList *referenceList; // List of file references ManifestData data; // Manifest data and options List *targetList; // List of targets List *pathList; // List of paths List *fileList; // List of files List *linkList; // List of links List *dbList; // List of databases }; OBJECT_DEFINE_MOVE(MANIFEST); /*********************************************************************************************************************************** Internal functions to add types to their lists ***********************************************************************************************************************************/ // Helper to add owner to the owner list if it is not there already and return the pointer. This saves a lot of space. static const String * manifestOwnerCache(Manifest *this, const String *owner) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(STRING, owner); FUNCTION_TEST_END(); ASSERT(this != NULL); if (owner != NULL) FUNCTION_TEST_RETURN(strLstAddIfMissing(this->ownerList, owner)); FUNCTION_TEST_RETURN(NULL); } static void manifestDbAdd(Manifest *this, const ManifestDb *db) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(MANIFEST_DB, db); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(db != NULL); ASSERT(db->name != NULL); MEM_CONTEXT_BEGIN(lstMemContext(this->dbList)) { ManifestDb dbAdd = { .id = db->id, .lastSystemId = db->lastSystemId, .name = strDup(db->name), }; lstAdd(this->dbList, &dbAdd); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN_VOID(); } void manifestFileAdd(Manifest *this, const ManifestFile *file) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(MANIFEST_FILE, file); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(file != NULL); ASSERT(file->name != NULL); MEM_CONTEXT_BEGIN(lstMemContext(this->fileList)) { ManifestFile fileAdd = { .checksumPage = file->checksumPage, .checksumPageError = file->checksumPageError, .checksumPageErrorList = varLstDup(file->checksumPageErrorList), .group = manifestOwnerCache(this, file->group), .mode = file->mode, .name = strDup(file->name), .primary = file->primary, .size = file->size, .sizeRepo = file->sizeRepo, .timestamp = file->timestamp, .user = manifestOwnerCache(this, file->user), }; memcpy(fileAdd.checksumSha1, file->checksumSha1, HASH_TYPE_SHA1_SIZE_HEX + 1); if (file->reference != NULL) { // Search for the reference in the list for (unsigned int referenceIdx = 0; referenceIdx < strLstSize(this->referenceList); referenceIdx++) { const String *found = strLstGet(this->referenceList, referenceIdx); if (strEq(file->reference, found)) { fileAdd.reference = found; break; } } // If not found then add it if (fileAdd.reference == NULL) { strLstAdd(this->referenceList, file->reference); fileAdd.reference = strLstGet(this->referenceList, strLstSize(this->referenceList) - 1); } } lstAdd(this->fileList, &fileAdd); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN_VOID(); } static void manifestLinkAdd(Manifest *this, const ManifestLink *link) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(MANIFEST_LINK, link); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(link != NULL); ASSERT(link->name != NULL); ASSERT(link->destination != NULL); MEM_CONTEXT_BEGIN(lstMemContext(this->linkList)) { ManifestLink linkAdd = { .destination = strDup(link->destination), .name = strDup(link->name), .group = manifestOwnerCache(this, link->group), .user = manifestOwnerCache(this, link->user), }; lstAdd(this->linkList, &linkAdd); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN_VOID(); } static void manifestPathAdd(Manifest *this, const ManifestPath *path) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(MANIFEST_PATH, path); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(path != NULL); ASSERT(path->name != NULL); MEM_CONTEXT_BEGIN(lstMemContext(this->pathList)) { ManifestPath pathAdd = { .mode = path->mode, .name = strDup(path->name), .group = manifestOwnerCache(this, path->group), .user = manifestOwnerCache(this, path->user), }; lstAdd(this->pathList, &pathAdd); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN_VOID(); } static void manifestTargetAdd(Manifest *this, const ManifestTarget *target) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(MANIFEST_TARGET, target); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(target != NULL); ASSERT(target->path != NULL); ASSERT(target->name != NULL); MEM_CONTEXT_BEGIN(lstMemContext(this->targetList)) { ManifestTarget targetAdd = { .file = strDup(target->file), .name = strDup(target->name), .path = strDup(target->path), .tablespaceId = target->tablespaceId, .tablespaceName = strDup(target->tablespaceName), .type = target->type, }; lstAdd(this->targetList, &targetAdd); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Create new object ***********************************************************************************************************************************/ static Manifest * manifestNewInternal(void) { FUNCTION_TEST_VOID(); Manifest *this = memNew(sizeof(Manifest)); *this = (Manifest) { .memContext = memContextCurrent(), .dbList = lstNewP(sizeof(ManifestDb), .comparator = lstComparatorStr), .fileList = lstNewP(sizeof(ManifestFile), .comparator = lstComparatorStr), .linkList = lstNewP(sizeof(ManifestLink), .comparator = lstComparatorStr), .pathList = lstNewP(sizeof(ManifestPath), .comparator = lstComparatorStr), .ownerList = strLstNew(), .referenceList = strLstNew(), .targetList = lstNewP(sizeof(ManifestTarget), .comparator = lstComparatorStr), }; FUNCTION_TEST_RETURN(this); } /**********************************************************************************************************************************/ typedef struct ManifestBuildData { Manifest *manifest; const Storage *storagePg; const String *tablespaceId; // Tablespace id if PostgreSQL version has one bool online; // Is this an online backup? bool checksumPage; // Are page checksums being checked? const String *manifestWalName; // Wal manifest name for this version of PostgreSQL RegExp *dbPathExp; // Identify paths containing relations RegExp *tempRelationExp; // Identify temp relations RegExp *standbyExp; // Identify files that must be copied from the primary const VariantList *tablespaceList; // List of tablespaces in the database StringList *excludeContent; // Exclude contents of directories StringList *excludeSingle; // Exclude a single file/link/path // These change with each level of recursion const String *manifestParentName; // Manifest name of this file/link/path's parent const String *pgPath; // Current path in the PostgreSQL data directory bool dbPath; // Does this path contain relations? } ManifestBuildData; // Callback to process files/links/paths and add them to the manifest static void manifestBuildCallback(void *data, const StorageInfo *info) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, data); FUNCTION_TEST_PARAM(STORAGE_INFO, *storageInfo); FUNCTION_TEST_END(); ASSERT(data != NULL); ASSERT(info != NULL); // Skip all . paths because they have already been recorded on the previous level of recursion if (strEq(info->name, DOT_STR)) { FUNCTION_TEST_RETURN_VOID(); return; } // Skip any path/file/link that begins with pgsql_tmp. The files are removed when the server is restarted and the directories // are recreated. if (strBeginsWithZ(info->name, PG_PREFIX_PGSQLTMP)) { FUNCTION_TEST_RETURN_VOID(); return; } // Get build data ManifestBuildData buildData = *(ManifestBuildData *)data; unsigned int pgVersion = buildData.manifest->data.pgVersion; // Contruct the name used to identify this file/link/path in the manifest const String *manifestName = strNewFmt("%s/%s", strPtr(buildData.manifestParentName), strPtr(info->name)); // Skip excluded files/links/paths if (buildData.excludeSingle != NULL && strLstExists(buildData.excludeSingle, manifestName)) { LOG_INFO_FMT( "exclude '%s/%s' from backup using '%s' exclusion", strPtr(buildData.pgPath), strPtr(info->name), strPtr(strSub(manifestName, sizeof(MANIFEST_TARGET_PGDATA)))); FUNCTION_TEST_RETURN_VOID(); return; } // Process storage types switch (info->type) { // Add paths // ------------------------------------------------------------------------------------------------------------------------- case storageTypePath: { // There should not be any paths in pg_tblspc if (strEqZ(buildData.manifestParentName, MANIFEST_TARGET_PGDATA "/" MANIFEST_TARGET_PGTBLSPC)) { THROW_FMT( LinkExpectedError, "'%s' is not a symlink - " MANIFEST_TARGET_PGTBLSPC " should contain only symlinks", strPtr(manifestName)); } // Add path to manifest ManifestPath path = { .name = manifestName, .mode = info->mode, .user = info->user, .group = info->group, }; manifestPathAdd(buildData.manifest, &path); // Skip excluded path content if (buildData.excludeContent != NULL && strLstExists(buildData.excludeContent, manifestName)) { LOG_INFO_FMT( "exclude contents of '%s/%s' from backup using '%s/' exclusion", strPtr(buildData.pgPath), strPtr(info->name), strPtr(strSub(manifestName, sizeof(MANIFEST_TARGET_PGDATA)))); FUNCTION_TEST_RETURN_VOID(); return; } // Skip the contents of these paths if they exist in the base path since they won't be reused after recovery if (strEq(buildData.manifestParentName, MANIFEST_TARGET_PGDATA_STR)) { // Skip pg_dynshmem/* since these files cannot be reused on recovery if (strEqZ(info->name, PG_PATH_PGDYNSHMEM) && pgVersion >= PG_VERSION_94) { FUNCTION_TEST_RETURN_VOID(); return; } // Skip pg_notify/* since these files cannot be reused on recovery if (strEqZ(info->name, PG_PATH_PGNOTIFY) && pgVersion >= PG_VERSION_90) { FUNCTION_TEST_RETURN_VOID(); return; } // Skip pg_replslot/* since these files are generally not useful after a restore if (strEqZ(info->name, PG_PATH_PGREPLSLOT) && pgVersion >= PG_VERSION_94) { FUNCTION_TEST_RETURN_VOID(); return; } // Skip pg_serial/* since these files are reset if (strEqZ(info->name, PG_PATH_PGSERIAL) && pgVersion >= PG_VERSION_91) { FUNCTION_TEST_RETURN_VOID(); return; } // Skip pg_snapshots/* since these files cannot be reused on recovery if (strEqZ(info->name, PG_PATH_PGSNAPSHOTS) && pgVersion >= PG_VERSION_92) { FUNCTION_TEST_RETURN_VOID(); return; } // Skip temporary statistics in pg_stat_tmp even when stats_temp_directory is set because PGSS_TEXT_FILE is always // created there if (strEqZ(info->name, PG_PATH_PGSTATTMP) && pgVersion >= PG_VERSION_84) { FUNCTION_TEST_RETURN_VOID(); return; } // Skip pg_subtrans/* since these files are reset if (strEqZ(info->name, PG_PATH_PGSUBTRANS)) { FUNCTION_TEST_RETURN_VOID(); return; } } // Skip the contents of archive_status when online if (buildData.online && strEq(buildData.manifestParentName, buildData.manifestWalName) && strEqZ(info->name, PG_PATH_ARCHIVE_STATUS)) { FUNCTION_TEST_RETURN_VOID(); return; } // Recurse into the path ManifestBuildData buildDataSub = buildData; buildDataSub.manifestParentName = manifestName; buildDataSub.pgPath = strNewFmt("%s/%s", strPtr(buildData.pgPath), strPtr(info->name)); if (buildData.dbPathExp != NULL) buildDataSub.dbPath = regExpMatch(buildData.dbPathExp, manifestName); storageInfoListP( buildDataSub.storagePg, buildDataSub.pgPath, manifestBuildCallback, &buildDataSub, .sortOrder = sortOrderAsc); break; } // Add files // ------------------------------------------------------------------------------------------------------------------------- case storageTypeFile: { // There should not be any files in pg_tblspc if (strEqZ(buildData.manifestParentName, MANIFEST_TARGET_PGDATA "/" MANIFEST_TARGET_PGTBLSPC)) { THROW_FMT( LinkExpectedError, "'%s' is not a symlink - " MANIFEST_TARGET_PGTBLSPC " should contain only symlinks", strPtr(manifestName)); } // Skip pg_internal.init since it is recreated on startup. It's also possible, (though unlikely) that a temp file with // the creating process id as the extension can exist so skip that as well. This seems to be a bug in PostgreSQL since // the temp file should be removed on startup. Use regExpMatchOne() here instead of preparing a regexp in advance since // the likelihood of needing the regexp should be very small. if ((pgVersion <= PG_VERSION_84 || buildData.dbPath) && strBeginsWithZ(info->name, PG_FILE_PGINTERNALINIT) && (strSize(info->name) == sizeof(PG_FILE_PGINTERNALINIT) - 1 || regExpMatchOne(STRDEF("\\.[0-9]+"), strSub(info->name, sizeof(PG_FILE_PGINTERNALINIT) - 1)))) { FUNCTION_TEST_RETURN_VOID(); return; } // Skip files in the root data path if (strEq(buildData.manifestParentName, MANIFEST_TARGET_PGDATA_STR)) { // Skip recovery files if (((strEqZ(info->name, PG_FILE_RECOVERYSIGNAL) || strEqZ(info->name, PG_FILE_STANDBYSIGNAL)) && pgVersion >= PG_VERSION_12) || ((strEqZ(info->name, PG_FILE_RECOVERYCONF) || strEqZ(info->name, PG_FILE_RECOVERYDONE)) && pgVersion < PG_VERSION_12) || // Skip temp file for safely writing postgresql.auto.conf (strEqZ(info->name, PG_FILE_POSTGRESQLAUTOCONFTMP) && pgVersion >= PG_VERSION_94) || // Skip backup_label in versions where non-exclusive backup is supported (strEqZ(info->name, PG_FILE_BACKUPLABEL) && pgVersion >= PG_VERSION_96) || // Skip old backup labels strEqZ(info->name, PG_FILE_BACKUPLABELOLD) || // Skip running postmaster options strEqZ(info->name, PG_FILE_POSTMASTEROPTS) || // Skip process id file to avoid confusing postgres after restore strEqZ(info->name, PG_FILE_POSTMASTERPID)) { FUNCTION_TEST_RETURN_VOID(); return; } } // Skip the contents of the wal path when online. WAL will be restored from the archive or stored in the wal directory // at the end of the backup if the archive-copy option is set. if (buildData.online && strEq(buildData.manifestParentName, buildData.manifestWalName)) { FUNCTION_TEST_RETURN_VOID(); return; } // Skip temp relations in db paths if (buildData.dbPath && regExpMatch(buildData.tempRelationExp, info->name)) { FUNCTION_TEST_RETURN_VOID(); return; } // Add file to manifest ManifestFile file = { .name = manifestName, .mode = info->mode, .user = info->user, .group = info->group, .size = info->size, .sizeRepo = info->size, .timestamp = info->timeModified, }; // Set a flag to indicate if this file must be copied from the primary file.primary = strEqZ(manifestName, MANIFEST_TARGET_PGDATA "/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL) || !regExpMatch(buildData.standbyExp, manifestName); // Determine if this file should be page checksummed if (buildData.dbPath && buildData.checksumPage) { file.checksumPage = !strEndsWithZ(manifestName, "/" PG_FILE_PGFILENODEMAP) && !strEndsWithZ(manifestName, "/" PG_FILE_PGVERSION) && !strEqZ(manifestName, MANIFEST_TARGET_PGDATA "/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL); } manifestFileAdd(buildData.manifest, &file); break; } // Add links // ------------------------------------------------------------------------------------------------------------------------- case storageTypeLink: { // If the destination is another link then error. In the future we'll allow this by following the link chain to the // eventual destination but for now we are trying to maintain compatibility during the migration. To do this check we // need to read outside of the data directory but it is a read-only operation so is considered safe. const String *linkDestinationAbsolute = strPathAbsolute(info->linkDestination, buildData.pgPath); StorageInfo linkedCheck = storageInfoP( buildData.storagePg, linkDestinationAbsolute, .ignoreMissing = true, .noPathEnforce = true); if (linkedCheck.exists && linkedCheck.type == storageTypeLink) { THROW_FMT( LinkDestinationError, "link '%s/%s' cannot reference another link '%s'", strPtr(buildData.pgPath), strPtr(info->name), strPtr(linkDestinationAbsolute)); } // Initialize link and target ManifestLink link = { .name = manifestName, .user = info->user, .group = info->group, .destination = info->linkDestination, }; ManifestTarget target = { .name = manifestName, .type = manifestTargetTypeLink, }; // Make a copy of the link name because it will need to be modified when there are tablespace ids const String *linkName = info->name; // Is this a tablespace? if (strEq(buildData.manifestParentName, STRDEF(MANIFEST_TARGET_PGDATA "/" MANIFEST_TARGET_PGTBLSPC))) { // Strip pg_data off the manifest name so it begins with pg_tblspc instead. This reflects how the files are stored // in the backup directory. manifestName = strSub(manifestName, sizeof(MANIFEST_TARGET_PGDATA)); // Identify this target as a tablespace target.name = manifestName; target.tablespaceId = cvtZToUInt(strPtr(info->name)); // Look for this tablespace in the provided list (list may be null for off-line backup) if (buildData.tablespaceList != NULL) { // Search list for (unsigned int tablespaceIdx = 0; tablespaceIdx < varLstSize(buildData.tablespaceList); tablespaceIdx++) { const VariantList *tablespace = varVarLst(varLstGet(buildData.tablespaceList, tablespaceIdx)); if (target.tablespaceId == varUIntForce(varLstGet(tablespace, 0))) target.tablespaceName = varStr(varLstGet(tablespace, 1)); } // Error if the tablespace could not be found. ??? This seems excessive, perhaps just warn here? if (target.tablespaceName == NULL) { THROW_FMT( AssertError, "tablespace with oid %u not found in tablespace map\n" "HINT: was a tablespace created or dropped during the backup?", target.tablespaceId); } } // If no tablespace name was found then create one if (target.tablespaceName == NULL) target.tablespaceName = strNewFmt("ts%s", strPtr(info->name)); // Add a dummy pg_tblspc path entry if it does not already exist. This entry will be ignored by restore but it is // part of the original manifest format so we need to have it. lstSort(buildData.manifest->pathList, sortOrderAsc); const ManifestPath *pathBase = manifestPathFind(buildData.manifest, MANIFEST_TARGET_PGDATA_STR); if (manifestPathFindDefault(buildData.manifest, MANIFEST_TARGET_PGTBLSPC_STR, NULL) == NULL) { ManifestPath path = { .name = MANIFEST_TARGET_PGTBLSPC_STR, .mode = pathBase->mode, .user = pathBase->user, .group = pathBase->group, }; manifestPathAdd(buildData.manifest, &path); } // If the tablespace id is present then the tablespace link destination path is not the path where data will be // stored so we can just store it as dummy path. if (buildData.tablespaceId != NULL) { const ManifestPath *pathTblSpc = manifestPathFind( buildData.manifest, STRDEF(MANIFEST_TARGET_PGDATA "/" MANIFEST_TARGET_PGTBLSPC)); ManifestPath path = { .name = manifestName, .mode = pathTblSpc->mode, .user = pathTblSpc->user, .group = pathTblSpc->group, }; manifestPathAdd(buildData.manifest, &path); // Update build structure to reflect the path added above and the tablespace id buildData.manifestParentName = manifestName; manifestName = strNewFmt("%s/%s", strPtr(manifestName), strPtr(buildData.tablespaceId)); buildData.pgPath = strNewFmt("%s/%s", strPtr(buildData.pgPath), strPtr(info->name)); linkName = buildData.tablespaceId; } // If no tablespace id then parent manifest name is the tablespace directory else buildData.manifestParentName = MANIFEST_TARGET_PGTBLSPC_STR; } // Add info about the linked file/path const String *linkPgPath = strNewFmt("%s/%s", strPtr(buildData.pgPath), strPtr(linkName)); StorageInfo linkedInfo = storageInfoP( buildData.storagePg, linkPgPath, .followLink = true, .ignoreMissing = true); linkedInfo.name = linkName; // If the link destination exists then proceed as usual if (linkedInfo.exists) { // If a path link then recurse if (linkedInfo.type == storageTypePath) { target.path = info->linkDestination; } // Else it must be a file or special (since we have already checked if it is a link) else { // Tablespace links should never be to a file CHECK(target.tablespaceId == 0); // Identify target as a file target.path = strPath(info->linkDestination); target.file = strBase(info->linkDestination); } // Use the callback to add and do all related checks manifestBuildCallback(&buildData, &linkedInfo); } // Else dummy up the target with a destination so manifestLinkCheck() can be run. This is so errors about links with // destinations in PGDATA will take precedence over missing a destination. We will probably simplify this once the // migration is done and it doesn't matter which error takes precedence. else target.path = info->linkDestination; // Add target and link manifestTargetAdd(buildData.manifest, &target); manifestLinkAdd(buildData.manifest, &link); // Make sure the link is valid manifestLinkCheck(buildData.manifest); // If the link check was successful but the destination does not exist then check it again to generate an error if (!linkedInfo.exists) storageInfoP(buildData.storagePg, linkPgPath, .followLink = true); break; } // Skip special files // ------------------------------------------------------------------------------------------------------------------------- case storageTypeSpecial: { LOG_WARN_FMT("exclude special file '%s/%s' from backup", strPtr(buildData.pgPath), strPtr(info->name)); break; } } FUNCTION_TEST_RETURN_VOID(); } // Regular expression constants #define RELATION_EXP "[0-9]+(|_(fsm|vm)){0,1}(\\.[0-9]+){0,1}" #define DB_PATH_EXP \ "(" MANIFEST_TARGET_PGDATA "/(" PG_PATH_GLOBAL "|" PG_PATH_BASE "/[0-9]+)|" MANIFEST_TARGET_PGTBLSPC "/[0-9]+/%s/[0-9]+)" Manifest * manifestNewBuild( const Storage *storagePg, unsigned int pgVersion, bool online, bool checksumPage, const StringList *excludeList, const VariantList *tablespaceList) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE, storagePg); FUNCTION_LOG_PARAM(UINT, pgVersion); FUNCTION_LOG_PARAM(BOOL, online); FUNCTION_LOG_PARAM(BOOL, checksumPage); FUNCTION_LOG_PARAM(STRING_LIST, excludeList); FUNCTION_LOG_PARAM(VARIANT_LIST, tablespaceList); FUNCTION_LOG_END(); ASSERT(storagePg != NULL); ASSERT(pgVersion != 0); ASSERT(!checksumPage || pgVersion >= PG_VERSION_93); Manifest *this = NULL; MEM_CONTEXT_NEW_BEGIN("Manifest") { this = manifestNewInternal(); this->info = infoNew(NULL); this->data.backrestVersion = strNew(PROJECT_VERSION); this->data.pgVersion = pgVersion; this->data.backupOptionOnline = online; this->data.backupOptionChecksumPage = varNewBool(checksumPage); // Data needed to build the manifest ManifestBuildData buildData = { .manifest = this, .storagePg = storagePg, .tablespaceId = pgTablespaceId(pgVersion), .online = online, .checksumPage = checksumPage, .tablespaceList = tablespaceList, .manifestParentName = MANIFEST_TARGET_PGDATA_STR, .manifestWalName = strNewFmt(MANIFEST_TARGET_PGDATA "/%s", strPtr(pgWalPath(pgVersion))), .pgPath = storagePathP(storagePg, NULL), }; // We won't identify db paths for PostgreSQL < 9.0. This means that temp relations will not be excluded but it doesn't seem // worth supporting this feature on such old versions of PostgreSQL. // ------------------------------------------------------------------------------------------------------------------------- if (pgVersion >= PG_VERSION_90) { ASSERT(buildData.tablespaceId != NULL); // Expression to identify database paths buildData.dbPathExp = regExpNew(strNewFmt("^" DB_PATH_EXP "$", strPtr(buildData.tablespaceId))); // Expression to find temp relations buildData.tempRelationExp = regExpNew(STRDEF("^t[0-9]+_" RELATION_EXP "$")); } // Build expression to identify files that can be copied from the standby when standby backup is supported // ------------------------------------------------------------------------------------------------------------------------- buildData.standbyExp = regExpNew( strNewFmt( "^((" MANIFEST_TARGET_PGDATA "/(" PG_PATH_BASE "|" PG_PATH_GLOBAL "|%s|" PG_PATH_PGMULTIXACT "))|" MANIFEST_TARGET_PGTBLSPC ")/", strPtr(pgXactPath(pgVersion)))); // Build list of exclusions // ------------------------------------------------------------------------------------------------------------------------- if (excludeList != NULL) { for (unsigned int excludeIdx = 0; excludeIdx < strLstSize(excludeList); excludeIdx++) { const String *exclude = strNewFmt(MANIFEST_TARGET_PGDATA "/%s", strPtr(strLstGet(excludeList, excludeIdx))); // If the exclusions refers to the contents of a path if (strEndsWithZ(exclude, "/")) { if (buildData.excludeContent == NULL) buildData.excludeContent = strLstNew(); strLstAdd(buildData.excludeContent, strSubN(exclude, 0, strSize(exclude) - 1)); } // Otherwise exclude a single file/link/path else { if (buildData.excludeSingle == NULL) buildData.excludeSingle = strLstNew(); strLstAdd(buildData.excludeSingle, exclude); } } } // Build manifest // ------------------------------------------------------------------------------------------------------------------------- StorageInfo info = storageInfoP(storagePg, buildData.pgPath, .followLink = true); ManifestPath path = { .name = MANIFEST_TARGET_PGDATA_STR, .mode = info.mode, .user = info.user, .group = info.group, }; manifestPathAdd(this, &path); ManifestTarget target = { .name = MANIFEST_TARGET_PGDATA_STR, .path = buildData.pgPath, .type = manifestTargetTypePath, }; manifestTargetAdd(this, &target); // Gather info for the rest of the files/links/paths storageInfoListP( storagePg, buildData.pgPath, manifestBuildCallback, &buildData, .errorOnMissing = true, .sortOrder = sortOrderAsc); // These may not be in order even if the incoming data was sorted lstSort(this->fileList, sortOrderAsc); lstSort(this->linkList, sortOrderAsc); lstSort(this->pathList, sortOrderAsc); lstSort(this->targetList, sortOrderAsc); // Remove unlogged relations from the manifest. This can't be done during the initial build because of the requirement to // check for _init files which will sort after the vast majority of the relation files. We could check storage for each // _init file but that would be expensive. // ------------------------------------------------------------------------------------------------------------------------- if (pgVersion >= PG_VERSION_91) { RegExp *relationExp = regExpNew(strNewFmt("^" DB_PATH_EXP "/" RELATION_EXP "$", strPtr(buildData.tablespaceId))); unsigned int fileIdx = 0; const String *lastRelationFileId = NULL; bool lastRelationFileIdUnlogged = false; while (fileIdx < manifestFileTotal(this)) { const ManifestFile *file = manifestFile(this, fileIdx); // If this file looks like a relation. Note that this never matches on _init forks. if (regExpMatch(relationExp, file->name)) { String *fileName = strBase(file->name); String *relationFileId = strNew(""); // Strip off the numeric part of the relation for (unsigned int nameIdx = 0; nameIdx < strSize(fileName); nameIdx++) { char nameChr = strPtr(fileName)[nameIdx]; if (!isdigit(nameChr)) break; strCatChr(relationFileId, nameChr); } // Store the last relation so it does not need to be found everytime if (lastRelationFileId == NULL || !strEq(lastRelationFileId, relationFileId)) { // Determine if the relation is unlogged const String *relationInit = strNewFmt("%s/%s_init", strPtr(strPath(file->name)), strPtr(relationFileId)); lastRelationFileId = relationFileId; lastRelationFileIdUnlogged = manifestFileFindDefault(this, relationInit, NULL) != NULL; } // If relation is unlogged then remove it if (lastRelationFileIdUnlogged) { manifestFileRemove(this, file->name); continue; } } fileIdx++; } } } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(MANIFEST, this); } /**********************************************************************************************************************************/ void manifestBuildValidate(Manifest *this, bool delta, time_t copyStart, bool compress) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, this); FUNCTION_LOG_PARAM(BOOL, delta); FUNCTION_LOG_PARAM(TIME, copyStart); FUNCTION_LOG_PARAM(TIME, compress); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(copyStart > 0); MEM_CONTEXT_BEGIN(this->memContext) { // Store the delta option. If true we can skip checks that automatically enable delta. this->data.backupOptionDelta = varNewBool(delta); // If online then add one second to the copy start time to allow for database updates during the last second that the // manifest was being built. It's up to the caller to actually wait the remainder of the second, but for comparison // purposes we want the time when the waiting started. this->data.backupTimestampCopyStart = copyStart + (this->data.backupOptionOnline ? 1 : 0); // This value is not needed in this function, but it is needed for resumed manifests and this is last place to set it before // processing begins this->data.backupOptionCompress = compress; } MEM_CONTEXT_END(); // Check the manifest for timestamp anomalies that require a delta backup (if delta is not already specified) if (!varBool(this->data.backupOptionDelta)) { MEM_CONTEXT_TEMP_BEGIN() { for (unsigned int fileIdx = 0; fileIdx < manifestFileTotal(this); fileIdx++) { const ManifestFile *file = manifestFile(this, fileIdx); // Check for timestamp in the future if (file->timestamp > copyStart) { LOG_WARN_FMT( "file '%s' has timestamp in the future, enabling delta checksum", strPtr(manifestPathPg(file->name))); this->data.backupOptionDelta = BOOL_TRUE_VAR; break; } } } MEM_CONTEXT_TEMP_END(); } FUNCTION_LOG_RETURN_VOID(); } /**********************************************************************************************************************************/ void manifestBuildIncr(Manifest *this, const Manifest *manifestPrior, BackupType type, const String *archiveStart) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, this); FUNCTION_LOG_PARAM(MANIFEST, manifestPrior); FUNCTION_LOG_PARAM(ENUM, type); FUNCTION_LOG_PARAM(STRING, archiveStart); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(manifestPrior != NULL); ASSERT(type == backupTypeDiff || type == backupTypeIncr); ASSERT(type != backupTypeDiff || manifestPrior->data.backupType == backupTypeFull); ASSERT(archiveStart == NULL || strSize(archiveStart) == 24); MEM_CONTEXT_BEGIN(this->memContext) { // Set prior backup label this->data.backupLabelPrior = strDup(manifestPrior->data.backupLabel); // Set diff/incr backup type this->data.backupType = type; } MEM_CONTEXT_END(); MEM_CONTEXT_TEMP_BEGIN() { // Enable delta if timelines differ if (archiveStart != NULL && manifestData(manifestPrior)->archiveStop != NULL && !strEq(strSubN(archiveStart, 0, 8), strSubN(manifestData(manifestPrior)->archiveStop, 0, 8))) { LOG_WARN_FMT( "a timeline switch has occurred since the %s backup, enabling delta checksum", strPtr(manifestData(manifestPrior)->backupLabel)); this->data.backupOptionDelta = BOOL_TRUE_VAR; } // Else enable delta if online differs else if (manifestData(manifestPrior)->backupOptionOnline != this->data.backupOptionOnline) { LOG_WARN_FMT( "the online option has changed since the %s backup, enabling delta checksum", strPtr(manifestData(manifestPrior)->backupLabel)); this->data.backupOptionDelta = BOOL_TRUE_VAR; } // Check for anomalies between manifests if delta is not already enabled. This can't be combined with the main comparison // loop below because delta changes the behavior of that loop. if (!varBool(this->data.backupOptionDelta)) { for (unsigned int fileIdx = 0; fileIdx < manifestFileTotal(this); fileIdx++) { const ManifestFile *file = manifestFile(this, fileIdx); const ManifestFile *filePrior = manifestFileFindDefault(manifestPrior, file->name, NULL); // If file was found in prior manifest then perform checks if (filePrior != NULL) { // Check for timestamp earlier than the prior backup if (file->timestamp < filePrior->timestamp) { LOG_WARN_FMT( "file '%s' has timestamp earlier than prior backup, enabling delta checksum", strPtr(manifestPathPg(file->name))); this->data.backupOptionDelta = BOOL_TRUE_VAR; break; } // Check for size change with no timestamp change if (file->size != filePrior->size && file->timestamp == filePrior->timestamp) { LOG_WARN_FMT( "file '%s' has same timestamp as prior but different size, enabling delta checksum", strPtr(manifestPathPg(file->name))); this->data.backupOptionDelta = BOOL_TRUE_VAR; break; } } } } // Find files to reference in the prior manifest: // 1) that don't need to be copied because delta is disabled and the size and timestamp match or size matches and is zero // 2) where delta is enabled and size matches so checksum will be verified during backup and the file copied on mismatch bool delta = varBool(this->data.backupOptionDelta); for (unsigned int fileIdx = 0; fileIdx < lstSize(this->fileList); fileIdx++) { const ManifestFile *file = manifestFile(this, fileIdx); const ManifestFile *filePrior = manifestFileFindDefault(manifestPrior, file->name, NULL); // Check if prior file can be used if (filePrior != NULL && file->size == filePrior->size && (delta || file->size == 0 || file->timestamp == filePrior->timestamp)) { manifestFileUpdate( this, file->name, file->size, filePrior->sizeRepo, filePrior->checksumSha1, VARSTR(filePrior->reference != NULL ? filePrior->reference : manifestPrior->data.backupLabel), filePrior->checksumPage, filePrior->checksumPageError, filePrior->checksumPageErrorList); } } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /**********************************************************************************************************************************/ void manifestBuildComplete( Manifest *this, time_t timestampStart, const String *lsnStart, const String *archiveStart, time_t timestampStop, const String *lsnStop, const String *archiveStop, unsigned int pgId, uint64_t pgSystemId, const VariantList *dbList, bool optionArchiveCheck, bool optionArchiveCopy, size_t optionBufferSize, unsigned int optionCompressLevel, unsigned int optionCompressLevelNetwork, bool optionHardLink, unsigned int optionProcessMax, bool optionStandby) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, this); FUNCTION_LOG_PARAM(TIME, timestampStart); FUNCTION_LOG_PARAM(STRING, lsnStart); FUNCTION_LOG_PARAM(STRING, archiveStart); FUNCTION_LOG_PARAM(TIME, timestampStop); FUNCTION_LOG_PARAM(STRING, lsnStop); FUNCTION_LOG_PARAM(STRING, archiveStop); FUNCTION_LOG_PARAM(UINT, pgId); FUNCTION_LOG_PARAM(UINT64, pgSystemId); FUNCTION_LOG_PARAM(VARIANT_LIST, dbList); FUNCTION_LOG_PARAM(BOOL, optionArchiveCheck); FUNCTION_LOG_PARAM(BOOL, optionArchiveCopy); FUNCTION_LOG_PARAM(SIZE, optionBufferSize); FUNCTION_LOG_PARAM(UINT, optionCompressLevel); FUNCTION_LOG_PARAM(UINT, optionCompressLevelNetwork); FUNCTION_LOG_PARAM(BOOL, optionHardLink); FUNCTION_LOG_PARAM(UINT, optionProcessMax); FUNCTION_LOG_PARAM(BOOL, optionStandby); FUNCTION_LOG_END(); MEM_CONTEXT_BEGIN(this->memContext) { // Save info this->data.backupTimestampStart = timestampStart; this->data.lsnStart = strDup(lsnStart); this->data.archiveStart = strDup(archiveStart); this->data.backupTimestampStop = timestampStop; this->data.lsnStop = strDup(lsnStop); this->data.archiveStop = strDup(archiveStop); this->data.pgId = pgId; this->data.pgSystemId = pgSystemId; // Save db list if (dbList != NULL) { for (unsigned int dbIdx = 0; dbIdx < varLstSize(dbList); dbIdx++) { const VariantList *dbRow = varVarLst(varLstGet(dbList, dbIdx)); ManifestDb db = { .id = varUIntForce(varLstGet(dbRow, 0)), .name = varStr(varLstGet(dbRow, 1)), .lastSystemId = varUIntForce(varLstGet(dbRow, 2)), }; manifestDbAdd(this, &db); } lstSort(this->dbList, sortOrderAsc); } // Save options this->data.backupOptionArchiveCheck = optionArchiveCheck; this->data.backupOptionArchiveCopy = optionArchiveCopy; this->data.backupOptionBufferSize = varNewUInt64(optionBufferSize); this->data.backupOptionCompressLevel = varNewUInt(optionCompressLevel); this->data.backupOptionCompressLevelNetwork = varNewUInt(optionCompressLevelNetwork); this->data.backupOptionHardLink = optionHardLink; this->data.backupOptionProcessMax = varNewUInt(optionProcessMax); this->data.backupOptionStandby = varNewBool(optionStandby); } MEM_CONTEXT_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Load manifest ***********************************************************************************************************************************/ // Keep track of which values were found during load and which need to be loaded from defaults. There is no point in having // multiple structs since most of the fields are the same and the size shouldn't be more than 4/8 bytes. typedef struct ManifestLoadFound { bool group:1; bool mode:1; bool primary:1; bool user:1; } ManifestLoadFound; typedef struct ManifestLoadData { MemContext *memContext; // Mem context for data needed only during load Manifest *manifest; // Manifest info List *fileFoundList; // Values found in files const Variant *fileGroupDefault; // File default group mode_t fileModeDefault; // File default mode bool filePrimaryDefault; // File default primary const Variant *fileUserDefault; // File default user List *linkFoundList; // Values found in links const Variant *linkGroupDefault; // Link default group const Variant *linkUserDefault; // Link default user List *pathFoundList; // Values found in paths const Variant *pathGroupDefault; // Path default group mode_t pathModeDefault; // Path default mode const Variant *pathUserDefault; // Path default user } ManifestLoadData; // Helper to transform a variant that could be boolean or string into a string. If the boolean is false return NULL else return // the string. The boolean cannot be true. static const String * manifestOwnerGet(const Variant *owner) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(VARIANT, owner); FUNCTION_TEST_END(); ASSERT(owner != NULL); // If bool then it should be false. This indicates that the owner could not be mapped to a name during the backup. if (varType(owner) == varTypeBool) { CHECK(!varBool(owner)); FUNCTION_TEST_RETURN(NULL); } FUNCTION_TEST_RETURN(varStr(owner)); } // Helper to convert default owner to a variant. Input could be boolean false (meaning there is no owner) or a string (there is an // owner). static const Variant * manifestOwnerDefaultGet(const String *ownerDefault) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, ownerDefault); FUNCTION_TEST_END(); ASSERT(ownerDefault != NULL); FUNCTION_TEST_RETURN(strEq(ownerDefault, FALSE_STR) ? BOOL_FALSE_VAR : varNewStr(jsonToStr(ownerDefault))); } static void manifestLoadCallback(void *callbackData, const String *section, const String *key, const String *value) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, callbackData); FUNCTION_TEST_PARAM(STRING, section); FUNCTION_TEST_PARAM(STRING, key); FUNCTION_TEST_PARAM(STRING, value); FUNCTION_TEST_END(); ASSERT(callbackData != NULL); ASSERT(section != NULL); ASSERT(key != NULL); ASSERT(value != NULL); ManifestLoadData *loadData = (ManifestLoadData *)callbackData; Manifest *manifest = loadData->manifest; // ----------------------------------------------------------------------------------------------------------------------------- if (strEq(section, MANIFEST_SECTION_TARGET_FILE_STR)) { KeyValue *fileKv = varKv(jsonToVar(value)); MEM_CONTEXT_BEGIN(lstMemContext(manifest->fileList)) { ManifestLoadFound valueFound = {0}; ManifestFile file = { .name = key, .reference = varStr(kvGetDefault(fileKv, MANIFEST_KEY_REFERENCE_VAR, NULL)), }; // Timestamp is required so error if it is not present const Variant *timestamp = kvGet(fileKv, MANIFEST_KEY_TIMESTAMP_VAR); if (timestamp == NULL) THROW_FMT(FormatError, "missing timestamp for file '%s'", strPtr(key)); file.timestamp = (time_t)varUInt64(timestamp); // Size is required so error if it is not present. Older versions removed the size before the backup to ensure that the // manifest was updated during the backup, so size can be missing in partial manifests. This error will prevent older // partials from being resumed. const Variant *size = kvGet(fileKv, MANIFEST_KEY_SIZE_VAR); if (size == NULL) THROW_FMT(FormatError, "missing size for file '%s'", strPtr(key)); file.size = varUInt64(size); // If "repo-size" is not present in the manifest file, then it is the same as size (i.e. uncompressed) - to save space, // the repo-size is only stored in the manifest file if it is different than size. file.sizeRepo = varUInt64(kvGetDefault(fileKv, MANIFEST_KEY_SIZE_REPO_VAR, VARUINT64(file.size))); // If file size is zero then assign the static zero hash if (file.size == 0) { memcpy(file.checksumSha1, HASH_TYPE_SHA1_ZERO, HASH_TYPE_SHA1_SIZE_HEX + 1); } // Else if the key exists then load it. The key might not exist if this is a partial save that was done during the // backup to preserve checksums for already backed up files. else if (kvKeyExists(fileKv, MANIFEST_KEY_CHECKSUM_VAR)) { memcpy( file.checksumSha1, strPtr(varStr(kvGet(fileKv, MANIFEST_KEY_CHECKSUM_VAR))), HASH_TYPE_SHA1_SIZE_HEX + 1); } const Variant *checksumPage = kvGetDefault(fileKv, MANIFEST_KEY_CHECKSUM_PAGE_VAR, NULL); if (checksumPage != NULL) { file.checksumPage = true; file.checksumPageError = !varBool(checksumPage); const Variant *checksumPageErrorList = kvGetDefault(fileKv, MANIFEST_KEY_CHECKSUM_PAGE_ERROR_VAR, NULL); if (checksumPageErrorList != NULL) file.checksumPageErrorList = varVarLst(checksumPageErrorList); } if (kvKeyExists(fileKv, MANIFEST_KEY_GROUP_VAR)) { valueFound.group = true; file.group = manifestOwnerGet(kvGet(fileKv, MANIFEST_KEY_GROUP_VAR)); } if (kvKeyExists(fileKv, MANIFEST_KEY_MODE_VAR)) { valueFound.mode = true; file.mode = cvtZToMode(strPtr(varStr(kvGet(fileKv, MANIFEST_KEY_MODE_VAR)))); } if (kvKeyExists(fileKv, MANIFEST_KEY_PRIMARY_VAR)) { valueFound.primary = true; file.primary = varBool(kvGet(fileKv, MANIFEST_KEY_PRIMARY_VAR)); } if (kvKeyExists(fileKv, MANIFEST_KEY_USER_VAR)) { valueFound.user = true; file.user = manifestOwnerGet(kvGet(fileKv, MANIFEST_KEY_USER_VAR)); } lstAdd(loadData->fileFoundList, &valueFound); manifestFileAdd(manifest, &file); } MEM_CONTEXT_END(); } // ----------------------------------------------------------------------------------------------------------------------------- else if (strEq(section, MANIFEST_SECTION_TARGET_PATH_STR)) { KeyValue *pathKv = varKv(jsonToVar(value)); MEM_CONTEXT_BEGIN(lstMemContext(manifest->pathList)) { ManifestLoadFound valueFound = {0}; ManifestPath path = { .name = key, }; if (kvKeyExists(pathKv, MANIFEST_KEY_GROUP_VAR)) { valueFound.group = true; path.group = manifestOwnerGet(kvGet(pathKv, MANIFEST_KEY_GROUP_VAR)); } if (kvKeyExists(pathKv, MANIFEST_KEY_MODE_VAR)) { valueFound.mode = true; path.mode = cvtZToMode(strPtr(varStr(kvGet(pathKv, MANIFEST_KEY_MODE_VAR)))); } if (kvKeyExists(pathKv, MANIFEST_KEY_USER_VAR)) { valueFound.user = true; path.user = manifestOwnerGet(kvGet(pathKv, MANIFEST_KEY_USER_VAR)); } lstAdd(loadData->pathFoundList, &valueFound); manifestPathAdd(manifest, &path); } MEM_CONTEXT_END(); } // ----------------------------------------------------------------------------------------------------------------------------- else if (strEq(section, MANIFEST_SECTION_TARGET_LINK_STR)) { KeyValue *linkKv = varKv(jsonToVar(value)); MEM_CONTEXT_BEGIN(lstMemContext(manifest->linkList)) { ManifestLoadFound valueFound = {0}; ManifestLink link = { .name = key, .destination = varStr(kvGet(linkKv, MANIFEST_KEY_DESTINATION_VAR)), }; if (kvKeyExists(linkKv, MANIFEST_KEY_GROUP_VAR)) { valueFound.group = true; link.group = manifestOwnerGet(kvGet(linkKv, MANIFEST_KEY_GROUP_VAR)); } if (kvKeyExists(linkKv, MANIFEST_KEY_USER_VAR)) { valueFound.user = true; link.user = manifestOwnerGet(kvGet(linkKv, MANIFEST_KEY_USER_VAR)); } lstAdd(loadData->linkFoundList, &valueFound); manifestLinkAdd(manifest, &link); } MEM_CONTEXT_END(); } // ----------------------------------------------------------------------------------------------------------------------------- else if (strEq(section, MANIFEST_SECTION_TARGET_FILE_DEFAULT_STR)) { MEM_CONTEXT_BEGIN(loadData->memContext) { if (strEq(key, MANIFEST_KEY_GROUP_STR)) loadData->fileGroupDefault = manifestOwnerDefaultGet(value); else if (strEq(key, MANIFEST_KEY_MODE_STR)) loadData->fileModeDefault = cvtZToMode(strPtr(jsonToStr(value))); else if (strEq(key, MANIFEST_KEY_PRIMARY_STR)) loadData->filePrimaryDefault = jsonToBool(value); else if (strEq(key, MANIFEST_KEY_USER_STR)) loadData->fileUserDefault = manifestOwnerDefaultGet(value); } MEM_CONTEXT_END(); } // ----------------------------------------------------------------------------------------------------------------------------- else if (strEq(section, MANIFEST_SECTION_TARGET_PATH_DEFAULT_STR)) { MEM_CONTEXT_BEGIN(loadData->memContext) { if (strEq(key, MANIFEST_KEY_GROUP_STR)) loadData->pathGroupDefault = manifestOwnerDefaultGet(value); else if (strEq(key, MANIFEST_KEY_MODE_STR)) loadData->pathModeDefault = cvtZToMode(strPtr(jsonToStr(value))); else if (strEq(key, MANIFEST_KEY_USER_STR)) loadData->pathUserDefault = manifestOwnerDefaultGet(value); } MEM_CONTEXT_END(); } // ----------------------------------------------------------------------------------------------------------------------------- else if (strEq(section, MANIFEST_SECTION_TARGET_LINK_DEFAULT_STR)) { MEM_CONTEXT_BEGIN(loadData->memContext) { if (strEq(key, MANIFEST_KEY_GROUP_STR)) loadData->linkGroupDefault = manifestOwnerDefaultGet(value); else if (strEq(key, MANIFEST_KEY_USER_STR)) loadData->linkUserDefault = manifestOwnerDefaultGet(value); } MEM_CONTEXT_END(); } // ----------------------------------------------------------------------------------------------------------------------------- else if (strEq(section, MANIFEST_SECTION_BACKUP_TARGET_STR)) { KeyValue *targetKv = varKv(jsonToVar(value)); const String *targetType = varStr(kvGet(targetKv, MANIFEST_KEY_TYPE_VAR)); ASSERT(strEq(targetType, MANIFEST_TARGET_TYPE_LINK_STR) || strEq(targetType, MANIFEST_TARGET_TYPE_PATH_STR)); ManifestTarget target = { .name = key, .file = varStr(kvGetDefault(targetKv, MANIFEST_KEY_FILE_VAR, NULL)), .path = varStr(kvGet(targetKv, MANIFEST_KEY_PATH_VAR)), .tablespaceId = cvtZToUInt(strPtr(varStr(kvGetDefault(targetKv, MANIFEST_KEY_TABLESPACE_ID_VAR, VARSTRDEF("0"))))), .tablespaceName = varStr(kvGetDefault(targetKv, MANIFEST_KEY_TABLESPACE_NAME_VAR, NULL)), .type = strEq(targetType, MANIFEST_TARGET_TYPE_PATH_STR) ? manifestTargetTypePath : manifestTargetTypeLink, }; manifestTargetAdd(manifest, &target); } // ----------------------------------------------------------------------------------------------------------------------------- else if (strEq(section, MANIFEST_SECTION_DB_STR)) { KeyValue *dbKv = varKv(jsonToVar(value)); MEM_CONTEXT_BEGIN(lstMemContext(manifest->dbList)) { ManifestDb db = { .name = strDup(key), .id = varUIntForce(kvGet(dbKv, MANIFEST_KEY_DB_ID_VAR)), .lastSystemId = varUIntForce(kvGet(dbKv, MANIFEST_KEY_DB_LAST_SYSTEM_ID_VAR)), }; manifestDbAdd(manifest, &db); } MEM_CONTEXT_END(); } // ----------------------------------------------------------------------------------------------------------------------------- else if (strEq(section, MANIFEST_SECTION_BACKUP_STR)) { MEM_CONTEXT_BEGIN(manifest->memContext) { if (strEq(key, MANIFEST_KEY_BACKUP_ARCHIVE_START_STR)) manifest->data.archiveStart = jsonToStr(value); else if (strEq(key, MANIFEST_KEY_BACKUP_ARCHIVE_STOP_STR)) manifest->data.archiveStop = jsonToStr(value); else if (strEq(key, MANIFEST_KEY_BACKUP_LABEL_STR)) manifest->data.backupLabel = jsonToStr(value); else if (strEq(key, MANIFEST_KEY_BACKUP_LSN_START_STR)) manifest->data.lsnStart = jsonToStr(value); else if (strEq(key, MANIFEST_KEY_BACKUP_LSN_STOP_STR)) manifest->data.lsnStop = jsonToStr(value); else if (strEq(key, MANIFEST_KEY_BACKUP_PRIOR_STR)) manifest->data.backupLabelPrior = jsonToStr(value); else if (strEq(key, MANIFEST_KEY_BACKUP_TIMESTAMP_COPY_START_STR)) manifest->data.backupTimestampCopyStart = (time_t)jsonToUInt64(value); else if (strEq(key, MANIFEST_KEY_BACKUP_TIMESTAMP_START_STR)) manifest->data.backupTimestampStart = (time_t)jsonToUInt64(value); else if (strEq(key, MANIFEST_KEY_BACKUP_TIMESTAMP_STOP_STR)) manifest->data.backupTimestampStop = (time_t)jsonToUInt64(value); else if (strEq(key, MANIFEST_KEY_BACKUP_TYPE_STR)) manifest->data.backupType = backupType(jsonToStr(value)); } MEM_CONTEXT_END(); } // ----------------------------------------------------------------------------------------------------------------------------- else if (strEq(section, MANIFEST_SECTION_BACKUP_DB_STR)) { if (strEq(key, MANIFEST_KEY_DB_ID_STR)) manifest->data.pgId = jsonToUInt(value); else if (strEq(key, MANIFEST_KEY_DB_SYSTEM_ID_STR)) manifest->data.pgSystemId = jsonToUInt64(value); else if (strEq(key, MANIFEST_KEY_DB_VERSION_STR)) manifest->data.pgVersion = pgVersionFromStr(jsonToStr(value)); } // ----------------------------------------------------------------------------------------------------------------------------- else if (strEq(section, MANIFEST_SECTION_BACKUP_OPTION_STR)) { MEM_CONTEXT_BEGIN(manifest->memContext) { // Required options if (strEq(key, MANIFEST_KEY_OPTION_ARCHIVE_CHECK_STR)) manifest->data.backupOptionArchiveCheck = jsonToBool(value); else if (strEq(key, MANIFEST_KEY_OPTION_ARCHIVE_COPY_STR)) manifest->data.backupOptionArchiveCopy = jsonToBool(value); else if (strEq(key, MANIFEST_KEY_OPTION_COMPRESS_STR)) manifest->data.backupOptionCompress = jsonToBool(value); else if (strEq(key, MANIFEST_KEY_OPTION_HARDLINK_STR)) manifest->data.backupOptionHardLink = jsonToBool(value); else if (strEq(key, MANIFEST_KEY_OPTION_ONLINE_STR)) manifest->data.backupOptionOnline = jsonToBool(value); // Options that were added after v1.00 and may not be present in every manifest else if (strEq(key, MANIFEST_KEY_OPTION_BACKUP_STANDBY_STR)) manifest->data.backupOptionStandby = varNewBool(jsonToBool(value)); else if (strEq(key, MANIFEST_KEY_OPTION_BUFFER_SIZE_STR)) manifest->data.backupOptionBufferSize = varNewUInt(jsonToUInt(value)); else if (strEq(key, MANIFEST_KEY_OPTION_CHECKSUM_PAGE_STR)) manifest->data.backupOptionChecksumPage = varNewBool(jsonToBool(value)); else if (strEq(key, MANIFEST_KEY_OPTION_COMPRESS_LEVEL_STR)) manifest->data.backupOptionCompressLevel = varNewUInt(jsonToUInt(value)); else if (strEq(key, MANIFEST_KEY_OPTION_COMPRESS_LEVEL_NETWORK_STR)) manifest->data.backupOptionCompressLevelNetwork = varNewUInt(jsonToUInt(value)); else if (strEq(key, MANIFEST_KEY_OPTION_DELTA_STR)) manifest->data.backupOptionDelta = varNewBool(jsonToBool(value)); else if (strEq(key, MANIFEST_KEY_OPTION_PROCESS_MAX_STR)) manifest->data.backupOptionProcessMax = varNewUInt(jsonToUInt(value)); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN_VOID(); } Manifest * manifestNewLoad(IoRead *read) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(IO_READ, read); FUNCTION_LOG_END(); ASSERT(read != NULL); Manifest *this = NULL; MEM_CONTEXT_NEW_BEGIN("Manifest") { this = manifestNewInternal(); // Load the manifest ManifestLoadData loadData = { .memContext = memContextNew("load"), .manifest = this, }; MEM_CONTEXT_BEGIN(loadData.memContext) { loadData.fileFoundList = lstNew(sizeof(ManifestLoadFound)); loadData.linkFoundList = lstNew(sizeof(ManifestLoadFound)); loadData.pathFoundList = lstNew(sizeof(ManifestLoadFound)); } MEM_CONTEXT_END(); this->info = infoNewLoad(read, manifestLoadCallback, &loadData); this->data.backrestVersion = infoBackrestVersion(this->info); // Process file defaults for (unsigned int fileIdx = 0; fileIdx < manifestFileTotal(this); fileIdx++) { ManifestFile *file = lstGet(this->fileList, fileIdx); ManifestLoadFound *found = lstGet(loadData.fileFoundList, fileIdx); if (!found->group) file->group = manifestOwnerCache(this, manifestOwnerGet(loadData.fileGroupDefault)); if (!found->mode) file->mode = loadData.fileModeDefault; if (!found->primary) file->primary = loadData.filePrimaryDefault; if (!found->user) file->user = manifestOwnerCache(this, manifestOwnerGet(loadData.fileUserDefault)); } // Process link defaults for (unsigned int linkIdx = 0; linkIdx < manifestLinkTotal(this); linkIdx++) { ManifestLink *link = lstGet(this->linkList, linkIdx); ManifestLoadFound *found = lstGet(loadData.linkFoundList, linkIdx); if (!found->group) link->group = manifestOwnerCache(this, manifestOwnerGet(loadData.linkGroupDefault)); if (!found->user) link->user = manifestOwnerCache(this, manifestOwnerGet(loadData.linkUserDefault)); } // Process path defaults for (unsigned int pathIdx = 0; pathIdx < manifestPathTotal(this); pathIdx++) { ManifestPath *path = lstGet(this->pathList, pathIdx); ManifestLoadFound *found = lstGet(loadData.pathFoundList, pathIdx); if (!found->group) path->group = manifestOwnerCache(this, manifestOwnerGet(loadData.pathGroupDefault)); if (!found->mode) path->mode = loadData.pathModeDefault; if (!found->user) path->user = manifestOwnerCache(this, manifestOwnerGet(loadData.pathUserDefault)); } // Sort the lists. They should already be sorted in the file but it is possible that this system has a different collation // that renders that sort useless. // // This must happen *after* the default processing because found lists are in natural file order and it is not worth writing // comparator routines for them. lstSort(this->dbList, sortOrderAsc); lstSort(this->fileList, sortOrderAsc); lstSort(this->linkList, sortOrderAsc); lstSort(this->pathList, sortOrderAsc); lstSort(this->targetList, sortOrderAsc); // Make sure the base path exists manifestTargetBase(this); // Free the context holding temporary load data memContextFree(loadData.memContext); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(MANIFEST, this); } /*********************************************************************************************************************************** Save manifest ***********************************************************************************************************************************/ typedef struct ManifestSaveData { Manifest *manifest; // Manifest object to be saved const Variant *fileGroupDefault; // File default group mode_t fileModeDefault; // File default mode bool filePrimaryDefault; // File default primary const Variant *fileUserDefault; // File default user const Variant *linkGroupDefault; // Link default group const Variant *linkUserDefault; // Link default user const Variant *pathGroupDefault; // Path default group mode_t pathModeDefault; // Path default mode const Variant *pathUserDefault; // Path default user } ManifestSaveData; // Helper to convert the owner MCV to a default. If the input is NULL boolean false should be returned, else the owner string. static const Variant * manifestOwnerVar(const String *ownerDefault) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, ownerDefault); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN(ownerDefault == NULL ? BOOL_FALSE_VAR : varNewStr(ownerDefault)); } static void manifestSaveCallback(void *callbackData, const String *sectionNext, InfoSave *infoSaveData) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, callbackData); FUNCTION_TEST_PARAM(STRING, sectionNext); FUNCTION_TEST_PARAM(INFO_SAVE, infoSaveData); FUNCTION_TEST_END(); ASSERT(callbackData != NULL); ASSERT(infoSaveData != NULL); ManifestSaveData *saveData = (ManifestSaveData *)callbackData; Manifest *manifest = saveData->manifest; // ----------------------------------------------------------------------------------------------------------------------------- if (infoSaveSection(infoSaveData, MANIFEST_SECTION_BACKUP_STR, sectionNext)) { if (manifest->data.archiveStart != NULL) { infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_STR, MANIFEST_KEY_BACKUP_ARCHIVE_START_STR, jsonFromStr(manifest->data.archiveStart)); } if (manifest->data.archiveStop != NULL) { infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_STR, MANIFEST_KEY_BACKUP_ARCHIVE_STOP_STR, jsonFromStr(manifest->data.archiveStop)); } infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_STR, MANIFEST_KEY_BACKUP_LABEL_STR, jsonFromStr(manifest->data.backupLabel)); if (manifest->data.lsnStart != NULL) { infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_STR, MANIFEST_KEY_BACKUP_LSN_START_STR, jsonFromStr(manifest->data.lsnStart)); } if (manifest->data.lsnStop != NULL) { infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_STR, MANIFEST_KEY_BACKUP_LSN_STOP_STR, jsonFromStr(manifest->data.lsnStop)); } if (manifest->data.backupLabelPrior != NULL) { infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_STR, MANIFEST_KEY_BACKUP_PRIOR_STR, jsonFromStr(manifest->data.backupLabelPrior)); } infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_STR, MANIFEST_KEY_BACKUP_TIMESTAMP_COPY_START_STR, jsonFromInt64(manifest->data.backupTimestampCopyStart)); infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_STR, MANIFEST_KEY_BACKUP_TIMESTAMP_START_STR, jsonFromInt64(manifest->data.backupTimestampStart)); infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_STR, MANIFEST_KEY_BACKUP_TIMESTAMP_STOP_STR, jsonFromInt64(manifest->data.backupTimestampStop)); infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_STR, MANIFEST_KEY_BACKUP_TYPE_STR, jsonFromStr(backupTypeStr(manifest->data.backupType))); } // ----------------------------------------------------------------------------------------------------------------------------- if (infoSaveSection(infoSaveData, MANIFEST_SECTION_BACKUP_DB_STR, sectionNext)) { infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_DB_STR, STRDEF("db-catalog-version"), jsonFromUInt(pgCatalogVersion(manifest->data.pgVersion))); infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_DB_STR, STRDEF("db-control-version"), jsonFromUInt(pgControlVersion(manifest->data.pgVersion))); infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_DB_STR, MANIFEST_KEY_DB_ID_STR, jsonFromUInt(manifest->data.pgId)); infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_DB_STR, MANIFEST_KEY_DB_SYSTEM_ID_STR, jsonFromUInt64(manifest->data.pgSystemId)); infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_DB_STR, MANIFEST_KEY_DB_VERSION_STR, jsonFromStr(pgVersionToStr(manifest->data.pgVersion))); } // ----------------------------------------------------------------------------------------------------------------------------- if (infoSaveSection(infoSaveData, MANIFEST_SECTION_BACKUP_OPTION_STR, sectionNext)) { infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_OPTION_STR, MANIFEST_KEY_OPTION_ARCHIVE_CHECK_STR, jsonFromBool(manifest->data.backupOptionArchiveCheck)); infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_OPTION_STR, MANIFEST_KEY_OPTION_ARCHIVE_COPY_STR, jsonFromBool(manifest->data.backupOptionArchiveCopy)); if (manifest->data.backupOptionStandby != NULL) { infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_OPTION_STR, MANIFEST_KEY_OPTION_BACKUP_STANDBY_STR, jsonFromVar(manifest->data.backupOptionStandby)); } if (manifest->data.backupOptionBufferSize != NULL) { infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_OPTION_STR, MANIFEST_KEY_OPTION_BUFFER_SIZE_STR, jsonFromVar(manifest->data.backupOptionBufferSize)); } if (manifest->data.backupOptionChecksumPage != NULL) { infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_OPTION_STR, MANIFEST_KEY_OPTION_CHECKSUM_PAGE_STR, jsonFromVar(manifest->data.backupOptionChecksumPage)); } infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_OPTION_STR, MANIFEST_KEY_OPTION_COMPRESS_STR, jsonFromBool(manifest->data.backupOptionCompress)); if (manifest->data.backupOptionCompressLevel != NULL) { infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_OPTION_STR, MANIFEST_KEY_OPTION_COMPRESS_LEVEL_STR, jsonFromVar(manifest->data.backupOptionCompressLevel)); } if (manifest->data.backupOptionCompressLevelNetwork != NULL) { infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_OPTION_STR, MANIFEST_KEY_OPTION_COMPRESS_LEVEL_NETWORK_STR, jsonFromVar(manifest->data.backupOptionCompressLevelNetwork)); } if (manifest->data.backupOptionDelta != NULL) { infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_OPTION_STR, MANIFEST_KEY_OPTION_DELTA_STR, jsonFromVar(manifest->data.backupOptionDelta)); } infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_OPTION_STR, MANIFEST_KEY_OPTION_HARDLINK_STR, jsonFromBool(manifest->data.backupOptionHardLink)); infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_OPTION_STR, MANIFEST_KEY_OPTION_ONLINE_STR, jsonFromBool(manifest->data.backupOptionOnline)); if (manifest->data.backupOptionProcessMax != NULL) { infoSaveValue( infoSaveData, MANIFEST_SECTION_BACKUP_OPTION_STR, MANIFEST_KEY_OPTION_PROCESS_MAX_STR, jsonFromVar(manifest->data.backupOptionProcessMax)); } } // ----------------------------------------------------------------------------------------------------------------------------- if (infoSaveSection(infoSaveData, MANIFEST_SECTION_BACKUP_TARGET_STR, sectionNext)) { MEM_CONTEXT_TEMP_RESET_BEGIN() { for (unsigned int targetIdx = 0; targetIdx < manifestTargetTotal(manifest); targetIdx++) { const ManifestTarget *target = manifestTarget(manifest, targetIdx); KeyValue *targetKv = kvNew(); if (target->file != NULL) kvPut(targetKv, MANIFEST_KEY_FILE_VAR, VARSTR(target->file)); kvPut(targetKv, MANIFEST_KEY_PATH_VAR, VARSTR(target->path)); if (target->tablespaceId != 0) kvPut(targetKv, MANIFEST_KEY_TABLESPACE_ID_VAR, VARSTR(strNewFmt("%u", target->tablespaceId))); if (target->tablespaceName != NULL) kvPut(targetKv, MANIFEST_KEY_TABLESPACE_NAME_VAR, VARSTR(target->tablespaceName)); kvPut( targetKv, MANIFEST_KEY_TYPE_VAR, VARSTR( target->type == manifestTargetTypePath ? MANIFEST_TARGET_TYPE_PATH_STR : MANIFEST_TARGET_TYPE_LINK_STR)); infoSaveValue(infoSaveData, MANIFEST_SECTION_BACKUP_TARGET_STR, target->name, jsonFromKv(targetKv)); MEM_CONTEXT_TEMP_RESET(1000); } } MEM_CONTEXT_TEMP_END(); } // ----------------------------------------------------------------------------------------------------------------------------- if (infoSaveSection(infoSaveData, MANIFEST_SECTION_DB_STR, sectionNext)) { MEM_CONTEXT_TEMP_RESET_BEGIN() { for (unsigned int dbIdx = 0; dbIdx < manifestDbTotal(manifest); dbIdx++) { const ManifestDb *db = manifestDb(manifest, dbIdx); KeyValue *dbKv = kvNew(); kvPut(dbKv, MANIFEST_KEY_DB_ID_VAR, VARUINT(db->id)); kvPut(dbKv, MANIFEST_KEY_DB_LAST_SYSTEM_ID_VAR, VARUINT(db->lastSystemId)); infoSaveValue(infoSaveData, MANIFEST_SECTION_DB_STR, db->name, jsonFromKv(dbKv)); MEM_CONTEXT_TEMP_RESET(1000); } } MEM_CONTEXT_TEMP_END(); } // ----------------------------------------------------------------------------------------------------------------------------- if (infoSaveSection(infoSaveData, MANIFEST_SECTION_TARGET_FILE_STR, sectionNext)) { MEM_CONTEXT_TEMP_RESET_BEGIN() { for (unsigned int fileIdx = 0; fileIdx < manifestFileTotal(manifest); fileIdx++) { const ManifestFile *file = manifestFile(manifest, fileIdx); KeyValue *fileKv = kvNew(); // Save if the file size is not zero and the checksum exists. The checksum might not exist if this is a partial // save performed during a backup. if (file->size != 0 && file->checksumSha1[0] != 0) kvPut(fileKv, MANIFEST_KEY_CHECKSUM_VAR, VARSTRZ(file->checksumSha1)); if (file->checksumPage) { kvPut(fileKv, MANIFEST_KEY_CHECKSUM_PAGE_VAR, VARBOOL(!file->checksumPageError)); if (file->checksumPageErrorList != NULL) kvPut(fileKv, MANIFEST_KEY_CHECKSUM_PAGE_ERROR_VAR, varNewVarLst(file->checksumPageErrorList)); } if (!varEq(manifestOwnerVar(file->group), saveData->fileGroupDefault)) kvPut(fileKv, MANIFEST_KEY_GROUP_VAR, manifestOwnerVar(file->group)); if (file->primary != saveData->filePrimaryDefault) kvPut(fileKv, MANIFEST_KEY_PRIMARY_VAR, VARBOOL(file->primary)); if (file->mode != saveData->fileModeDefault) kvPut(fileKv, MANIFEST_KEY_MODE_VAR, VARSTR(strNewFmt("%04o", file->mode))); if (file->reference != NULL) kvPut(fileKv, MANIFEST_KEY_REFERENCE_VAR, VARSTR(file->reference)); if (file->sizeRepo != file->size) kvPut(fileKv, MANIFEST_KEY_SIZE_REPO_VAR, varNewUInt64(file->sizeRepo)); kvPut(fileKv, MANIFEST_KEY_SIZE_VAR, varNewUInt64(file->size)); kvPut(fileKv, MANIFEST_KEY_TIMESTAMP_VAR, varNewUInt64((uint64_t)file->timestamp)); if (!varEq(manifestOwnerVar(file->user), saveData->fileUserDefault)) kvPut(fileKv, MANIFEST_KEY_USER_VAR, manifestOwnerVar(file->user)); infoSaveValue(infoSaveData, MANIFEST_SECTION_TARGET_FILE_STR, file->name, jsonFromKv(fileKv)); MEM_CONTEXT_TEMP_RESET(1000); } } MEM_CONTEXT_TEMP_END(); } // ----------------------------------------------------------------------------------------------------------------------------- if (infoSaveSection(infoSaveData, MANIFEST_SECTION_TARGET_FILE_DEFAULT_STR, sectionNext)) { infoSaveValue( infoSaveData, MANIFEST_SECTION_TARGET_FILE_DEFAULT_STR, MANIFEST_KEY_GROUP_STR, jsonFromVar(saveData->fileGroupDefault)); infoSaveValue( infoSaveData, MANIFEST_SECTION_TARGET_FILE_DEFAULT_STR, MANIFEST_KEY_PRIMARY_STR, jsonFromBool(saveData->filePrimaryDefault)); infoSaveValue( infoSaveData, MANIFEST_SECTION_TARGET_FILE_DEFAULT_STR, MANIFEST_KEY_MODE_STR, jsonFromStr(strNewFmt("%04o", saveData->fileModeDefault))); infoSaveValue( infoSaveData, MANIFEST_SECTION_TARGET_FILE_DEFAULT_STR, MANIFEST_KEY_USER_STR, jsonFromVar(saveData->fileUserDefault)); } // ----------------------------------------------------------------------------------------------------------------------------- if (infoSaveSection(infoSaveData, MANIFEST_SECTION_TARGET_LINK_STR, sectionNext)) { MEM_CONTEXT_TEMP_RESET_BEGIN() { for (unsigned int linkIdx = 0; linkIdx < manifestLinkTotal(manifest); linkIdx++) { const ManifestLink *link = manifestLink(manifest, linkIdx); KeyValue *linkKv = kvNew(); if (!varEq(manifestOwnerVar(link->user), saveData->linkUserDefault)) kvPut(linkKv, MANIFEST_KEY_USER_VAR, manifestOwnerVar(link->user)); if (!varEq(manifestOwnerVar(link->group), saveData->linkGroupDefault)) kvPut(linkKv, MANIFEST_KEY_GROUP_VAR, manifestOwnerVar(link->group)); kvPut(linkKv, MANIFEST_KEY_DESTINATION_VAR, VARSTR(link->destination)); infoSaveValue(infoSaveData, MANIFEST_SECTION_TARGET_LINK_STR, link->name, jsonFromKv(linkKv)); MEM_CONTEXT_TEMP_RESET(1000); } } MEM_CONTEXT_TEMP_END(); } // ----------------------------------------------------------------------------------------------------------------------------- if (infoSaveSection(infoSaveData, MANIFEST_SECTION_TARGET_LINK_DEFAULT_STR, sectionNext)) { if (manifestLinkTotal(manifest) > 0) { infoSaveValue( infoSaveData, MANIFEST_SECTION_TARGET_LINK_DEFAULT_STR, MANIFEST_KEY_GROUP_STR, jsonFromVar(saveData->linkGroupDefault)); infoSaveValue( infoSaveData, MANIFEST_SECTION_TARGET_LINK_DEFAULT_STR, MANIFEST_KEY_USER_STR, jsonFromVar(saveData->linkUserDefault)); } } // ----------------------------------------------------------------------------------------------------------------------------- if (infoSaveSection(infoSaveData, MANIFEST_SECTION_TARGET_PATH_STR, sectionNext)) { MEM_CONTEXT_TEMP_RESET_BEGIN() { for (unsigned int pathIdx = 0; pathIdx < manifestPathTotal(manifest); pathIdx++) { const ManifestPath *path = manifestPath(manifest, pathIdx); KeyValue *pathKv = kvNew(); if (!varEq(manifestOwnerVar(path->group), saveData->pathGroupDefault)) kvPut(pathKv, MANIFEST_KEY_GROUP_VAR, manifestOwnerVar(path->group)); if (path->mode != saveData->pathModeDefault) kvPut(pathKv, MANIFEST_KEY_MODE_VAR, VARSTR(strNewFmt("%04o", path->mode))); if (!varEq(manifestOwnerVar(path->user), saveData->pathUserDefault)) kvPut(pathKv, MANIFEST_KEY_USER_VAR, manifestOwnerVar(path->user)); infoSaveValue(infoSaveData, MANIFEST_SECTION_TARGET_PATH_STR, path->name, jsonFromKv(pathKv)); MEM_CONTEXT_TEMP_RESET(1000); } } MEM_CONTEXT_TEMP_END(); } // ----------------------------------------------------------------------------------------------------------------------------- if (infoSaveSection(infoSaveData, MANIFEST_SECTION_TARGET_PATH_DEFAULT_STR, sectionNext)) { infoSaveValue( infoSaveData, MANIFEST_SECTION_TARGET_PATH_DEFAULT_STR, MANIFEST_KEY_GROUP_STR, jsonFromVar(saveData->pathGroupDefault)); infoSaveValue( infoSaveData, MANIFEST_SECTION_TARGET_PATH_DEFAULT_STR, MANIFEST_KEY_MODE_STR, jsonFromStr(strNewFmt("%04o", saveData->pathModeDefault))); infoSaveValue( infoSaveData, MANIFEST_SECTION_TARGET_PATH_DEFAULT_STR, MANIFEST_KEY_USER_STR, jsonFromVar(saveData->pathUserDefault)); } FUNCTION_TEST_RETURN_VOID(); } void manifestSave(Manifest *this, IoWrite *write) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, this); FUNCTION_LOG_PARAM(IO_WRITE, write); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(write != NULL); MEM_CONTEXT_TEMP_BEGIN() { // Files can be added from outside the manifest so make sure they are sorted lstSort(this->fileList, sortOrderAsc); ManifestSaveData saveData = { .manifest = this, }; // Get default file values MostCommonValue *fileGroupMcv = mcvNew(); MostCommonValue *fileModeMcv = mcvNew(); MostCommonValue *filePrimaryMcv = mcvNew(); MostCommonValue *fileUserMcv = mcvNew(); ASSERT(manifestFileTotal(this) > 0); for (unsigned int fileIdx = 0; fileIdx < manifestFileTotal(this); fileIdx++) { const ManifestFile *file = manifestFile(this, fileIdx); mcvUpdate(fileGroupMcv, VARSTR(file->group)); mcvUpdate(fileModeMcv, VARUINT(file->mode)); mcvUpdate(filePrimaryMcv, VARBOOL(file->primary)); mcvUpdate(fileUserMcv, VARSTR(file->user)); } saveData.fileGroupDefault = manifestOwnerVar(varStr(mcvResult(fileGroupMcv))); saveData.fileModeDefault = varUInt(mcvResult(fileModeMcv)); saveData.filePrimaryDefault = varBool(mcvResult(filePrimaryMcv)); saveData.fileUserDefault = manifestOwnerVar(varStr(mcvResult(fileUserMcv))); // Get default link values if (manifestLinkTotal(this) > 0) { MostCommonValue *linkGroupMcv = mcvNew(); MostCommonValue *linkUserMcv = mcvNew(); for (unsigned int linkIdx = 0; linkIdx < manifestLinkTotal(this); linkIdx++) { const ManifestLink *link = manifestLink(this, linkIdx); mcvUpdate(linkGroupMcv, VARSTR(link->group)); mcvUpdate(linkUserMcv, VARSTR(link->user)); } saveData.linkGroupDefault = manifestOwnerVar(varStr(mcvResult(linkGroupMcv))); saveData.linkUserDefault = manifestOwnerVar(varStr(mcvResult(linkUserMcv))); } // Get default path values MostCommonValue *pathGroupMcv = mcvNew(); MostCommonValue *pathModeMcv = mcvNew(); MostCommonValue *pathUserMcv = mcvNew(); ASSERT(manifestPathTotal(this) > 0); for (unsigned int pathIdx = 0; pathIdx < manifestPathTotal(this); pathIdx++) { const ManifestPath *path = manifestPath(this, pathIdx); mcvUpdate(pathGroupMcv, VARSTR(path->group)); mcvUpdate(pathModeMcv, VARUINT(path->mode)); mcvUpdate(pathUserMcv, VARSTR(path->user)); } saveData.pathGroupDefault = manifestOwnerVar(varStr(mcvResult(pathGroupMcv))); saveData.pathModeDefault = varUInt(mcvResult(pathModeMcv)); saveData.pathUserDefault = manifestOwnerVar(varStr(mcvResult(pathUserMcv))); // Save manifest infoSave(this->info, write, manifestSaveCallback, &saveData); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /**********************************************************************************************************************************/ void manifestValidate(Manifest *this, bool strict) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, this); FUNCTION_LOG_PARAM(BOOL, strict); FUNCTION_LOG_END(); ASSERT(this != NULL); MEM_CONTEXT_TEMP_BEGIN() { String *error = strNew(""); // Validate files for (unsigned int fileIdx = 0; fileIdx < manifestFileTotal(this); fileIdx++) { const ManifestFile *file = manifestFile(this, fileIdx); // All files must have a checksum if (file->checksumSha1[0] == '\0') strCatFmt(error, "\nmissing checksum for file '%s'", strPtr(file->name)); // These are strict checks to be performed only after a backup and before the final manifest save if (strict) { // Zero-length files must have a specific checksum if (file->size == 0 && !strEqZ(HASH_TYPE_SHA1_ZERO_STR, file->checksumSha1)) strCatFmt(error, "\ninvalid checksum '%s' for zero size file '%s'", file->checksumSha1, strPtr(file->name)); // Non-zero size files must have non-zero repo size if (file->sizeRepo == 0 && file->size != 0) strCatFmt(error, "\nrepo size must be > 0 for file '%s'", strPtr(file->name)); } } // Throw exception when there are errors if (strSize(error) > 0) THROW_FMT(FormatError, "manifest validation failed:%s", strPtr(error)); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Ensure that symlinks do not point to the same directory or a subdirectory of another link ***********************************************************************************************************************************/ void manifestLinkCheck(const Manifest *this) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MANIFEST, this); FUNCTION_LOG_END(); ASSERT(this != NULL); // Base path used for link checks const ManifestTarget *base = manifestTargetFind(this, MANIFEST_TARGET_PGDATA_STR); for (unsigned int linkIdx1 = 0; linkIdx1 < manifestTargetTotal(this); linkIdx1++) { const ManifestTarget *link1 = manifestTarget(this, linkIdx1); // Only compare links if (link1->type == manifestTargetTypeLink) { // Check that the link is not inside the base data path if (strBeginsWith( strNewFmt("%s/", strPtr(manifestTargetPath(this, link1))), strNewFmt("%s/", strPtr(manifestTargetPath(this, base))))) { THROW_FMT( LinkDestinationError, "link '%s' destination '%s' is in PGDATA", strPtr(manifestPathPg(link1->name)), strPtr(manifestTargetPath(this, link1))); } // Check that no link is a subpath of another link for (unsigned int linkIdx2 = 0; linkIdx2 < manifestTargetTotal(this); linkIdx2++) { const ManifestTarget *link2 = manifestTarget(this, linkIdx2); if (link2->type == manifestTargetTypeLink && link1 != link2) { if (!(link1->file != NULL && link2->file != NULL) && strBeginsWith( strNewFmt("%s/", strPtr(manifestTargetPath(this, link1))), strNewFmt("%s/", strPtr(manifestTargetPath(this, link2))))) { THROW_FMT( LinkDestinationError, "link '%s' (%s) destination is a subdirectory of or the same directory as link '%s' (%s)", strPtr(manifestPathPg(link1->name)), strPtr(manifestTargetPath(this, link1)), strPtr(manifestPathPg(link2->name)), strPtr(manifestTargetPath(this, link2))); } } } } } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Db functions and getters/setters ***********************************************************************************************************************************/ const ManifestDb * manifestDb(const Manifest *this, unsigned int dbIdx) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(UINT, dbIdx); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(lstGet(this->dbList, dbIdx)); } const ManifestDb * manifestDbFind(const Manifest *this, const String *name) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); const ManifestDb *result = lstFind(this->dbList, &name); if (result == NULL) THROW_FMT(AssertError, "unable to find '%s' in manifest db list", strPtr(name)); FUNCTION_TEST_RETURN(result); } // If the database requested is not found in the list, return the default passed rather than throw an error const ManifestDb * manifestDbFindDefault(const Manifest *this, const String *name, const ManifestDb *dbDefault) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_PARAM(MANIFEST_DB, dbDefault); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); FUNCTION_TEST_RETURN(lstFindDefault(this->dbList, &name, (void *)dbDefault)); } unsigned int manifestDbTotal(const Manifest *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(lstSize(this->dbList)); } /*********************************************************************************************************************************** File functions and getters/setters ***********************************************************************************************************************************/ const ManifestFile * manifestFile(const Manifest *this, unsigned int fileIdx) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(UINT, fileIdx); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(lstGet(this->fileList, fileIdx)); } const ManifestFile * manifestFileFind(const Manifest *this, const String *name) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); const ManifestFile *result = lstFind(this->fileList, &name); if (result == NULL) THROW_FMT(AssertError, "unable to find '%s' in manifest file list", strPtr(name)); FUNCTION_TEST_RETURN(result); } // If the file requested is not found in the list, return the default passed rather than throw an error const ManifestFile * manifestFileFindDefault(const Manifest *this, const String *name, const ManifestFile *fileDefault) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_PARAM(MANIFEST_TARGET, fileDefault); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); FUNCTION_TEST_RETURN(lstFindDefault(this->fileList, &name, (void *)fileDefault)); } void manifestFileRemove(const Manifest *this, const String *name) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); if (!lstRemove(this->fileList, &name)) THROW_FMT(AssertError, "unable to remove '%s' from manifest file list", strPtr(name)); FUNCTION_TEST_RETURN_VOID(); } unsigned int manifestFileTotal(const Manifest *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(lstSize(this->fileList)); } void manifestFileUpdate( Manifest *this, const String *name, uint64_t size, uint64_t sizeRepo, const char *checksumSha1, const Variant *reference, bool checksumPage, bool checksumPageError, const VariantList *checksumPageErrorList) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_PARAM(UINT64, size); FUNCTION_TEST_PARAM(UINT64, sizeRepo); FUNCTION_TEST_PARAM(STRINGZ, checksumSha1); FUNCTION_TEST_PARAM(VARIANT, reference); FUNCTION_TEST_PARAM(BOOL, checksumPage); FUNCTION_TEST_PARAM(BOOL, checksumPageError); FUNCTION_TEST_PARAM(VARIANT_LIST, checksumPageErrorList); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); ASSERT( (!checksumPage && !checksumPageError && checksumPageErrorList == NULL) || (checksumPage && !checksumPageError && checksumPageErrorList == NULL) || (checksumPage && checksumPageError)); ManifestFile *file = (ManifestFile *)manifestFileFind(this, name); MEM_CONTEXT_BEGIN(lstMemContext(this->fileList)) { // Update reference if set if (reference != NULL) { if (varStr(reference) == NULL) file->reference = NULL; else file->reference = strLstAddIfMissing(this->referenceList, varStr(reference)); } // Update checksum if set if (checksumSha1 != NULL) memcpy(file->checksumSha1, checksumSha1, HASH_TYPE_SHA1_SIZE_HEX + 1); // Update repo size file->size = size; file->sizeRepo = sizeRepo; // Update checksum page info file->checksumPage = checksumPage; file->checksumPageError = checksumPageError; file->checksumPageErrorList = varLstDup(checksumPageErrorList); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Link functions and getters/setters ***********************************************************************************************************************************/ const ManifestLink * manifestLink(const Manifest *this, unsigned int linkIdx) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(UINT, linkIdx); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(lstGet(this->linkList, linkIdx)); } const ManifestLink * manifestLinkFind(const Manifest *this, const String *name) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); const ManifestLink *result = lstFind(this->linkList, &name); if (result == NULL) THROW_FMT(AssertError, "unable to find '%s' in manifest link list", strPtr(name)); FUNCTION_TEST_RETURN(result); } // If the link requested is not found in the list, return the default passed rather than throw an error const ManifestLink * manifestLinkFindDefault(const Manifest *this, const String *name, const ManifestLink *linkDefault) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_PARAM(MANIFEST_TARGET, linkDefault); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); FUNCTION_TEST_RETURN(lstFindDefault(this->linkList, &name, (void *)linkDefault)); } void manifestLinkRemove(const Manifest *this, const String *name) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); if (!lstRemove(this->linkList, &name)) THROW_FMT(AssertError, "unable to remove '%s' from manifest link list", strPtr(name)); FUNCTION_TEST_RETURN_VOID(); } unsigned int manifestLinkTotal(const Manifest *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(lstSize(this->linkList)); } void manifestLinkUpdate(const Manifest *this, const String *name, const String *destination) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_PARAM(STRING, destination); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); ASSERT(destination != NULL); ManifestLink *link = (ManifestLink *)manifestLinkFind(this, name); MEM_CONTEXT_BEGIN(lstMemContext(this->linkList)) { if (!strEq(link->destination, destination)) link->destination = strDup(destination); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Path functions and getters/setters ***********************************************************************************************************************************/ const ManifestPath * manifestPath(const Manifest *this, unsigned int pathIdx) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(UINT, pathIdx); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(lstGet(this->pathList, pathIdx)); } const ManifestPath * manifestPathFind(const Manifest *this, const String *name) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); const ManifestPath *result = lstFind(this->pathList, &name); if (result == NULL) THROW_FMT(AssertError, "unable to find '%s' in manifest path list", strPtr(name)); FUNCTION_TEST_RETURN(result); } // If the path requested is not found in the list, return the default passed rather than throw an error const ManifestPath * manifestPathFindDefault(const Manifest *this, const String *name, const ManifestPath *pathDefault) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_PARAM(MANIFEST_TARGET, pathDefault); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); FUNCTION_TEST_RETURN(lstFindDefault(this->pathList, &name, (void *)pathDefault)); } String * manifestPathPg(const String *manifestPath) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, manifestPath); FUNCTION_TEST_END(); ASSERT(manifestPath != NULL); // If something in pg_data/ if (strBeginsWith(manifestPath, STRDEF(MANIFEST_TARGET_PGDATA "/"))) { FUNCTION_TEST_RETURN(strNew(strPtr(manifestPath) + sizeof(MANIFEST_TARGET_PGDATA))); } // Else not pg_data (this is faster since the length of everything else will be different than pg_data) else if (!strEq(manifestPath, MANIFEST_TARGET_PGDATA_STR)) { // A tablespace target is the only valid option if not pg_data or pg_data/ ASSERT( strEq(manifestPath, MANIFEST_TARGET_PGTBLSPC_STR) || strBeginsWith(manifestPath, STRDEF(MANIFEST_TARGET_PGTBLSPC "/"))); FUNCTION_TEST_RETURN(strDup(manifestPath)); } FUNCTION_TEST_RETURN(NULL); } unsigned int manifestPathTotal(const Manifest *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(lstSize(this->pathList)); } /*********************************************************************************************************************************** Target functions and getters/setters ***********************************************************************************************************************************/ const ManifestTarget * manifestTarget(const Manifest *this, unsigned int targetIdx) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(UINT, targetIdx); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(lstGet(this->targetList, targetIdx)); } const ManifestTarget * manifestTargetBase(const Manifest *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(manifestTargetFind(this, MANIFEST_TARGET_PGDATA_STR)); } const ManifestTarget * manifestTargetFind(const Manifest *this, const String *name) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); const ManifestTarget *result = lstFind(this->targetList, &name); if (result == NULL) THROW_FMT(AssertError, "unable to find '%s' in manifest target list", strPtr(name)); FUNCTION_TEST_RETURN(result); } String * manifestTargetPath(const Manifest *this, const ManifestTarget *target) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(MANIFEST_TARGET, target); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(target != NULL); // If the target path is already absolute then just return it if (strBeginsWith(target->path, FSLASH_STR)) FUNCTION_TEST_RETURN(strDup(target->path)); // Construct it from the base pg path and a relative path String *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { String *pgPath = strPath(manifestPathPg(target->name)); if (strSize(pgPath) != 0) strCat(pgPath, "/"); strCat(pgPath, strPtr(target->path)); MEM_CONTEXT_PRIOR_BEGIN() { result = strPathAbsolute(pgPath, manifestTargetBase(this)->path); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } void manifestTargetRemove(const Manifest *this, const String *name) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); if (!lstRemove(this->targetList, &name)) THROW_FMT(AssertError, "unable to remove '%s' from manifest target list", strPtr(name)); FUNCTION_TEST_RETURN_VOID(); } unsigned int manifestTargetTotal(const Manifest *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(lstSize(this->targetList)); } void manifestTargetUpdate(const Manifest *this, const String *name, const String *path, const String *file) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_PARAM(STRING, path); FUNCTION_TEST_PARAM(STRING, file); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(name != NULL); ASSERT(path != NULL); ManifestTarget *target = (ManifestTarget *)manifestTargetFind(this, name); ASSERT((target->file == NULL && file == NULL) || (target->file != NULL && file != NULL)); MEM_CONTEXT_BEGIN(lstMemContext(this->targetList)) { if (!strEq(target->path, path)) target->path = strDup(path); if (!strEq(target->file, file)) target->file = strDup(file); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Getters/Setters ***********************************************************************************************************************************/ const String * manifestCipherSubPass(const Manifest *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(infoCipherPass(this->info)); } void manifestCipherSubPassSet(Manifest *this, const String *cipherSubPass) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(STRING, cipherSubPass); FUNCTION_TEST_END(); ASSERT(this != NULL); infoCipherPassSet(this->info, cipherSubPass); FUNCTION_TEST_RETURN_VOID(); } const ManifestData * manifestData(const Manifest *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(&this->data); } void manifestBackupLabelSet(Manifest *this, const String *backupLabel) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(MANIFEST, this); FUNCTION_TEST_PARAM(STRING, backupLabel); FUNCTION_TEST_END(); ASSERT(this != NULL); MEM_CONTEXT_BEGIN(this->memContext) { this->data.backupLabel = strDup(backupLabel); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Helper function to load backup manifest files ***********************************************************************************************************************************/ typedef struct ManifestLoadFileData { MemContext *memContext; // Mem context const Storage *storage; // Storage to load from const String *fileName; // Base filename CipherType cipherType; // Cipher type const String *cipherPass; // Cipher passphrase Manifest *manifest; // Loaded manifest object } ManifestLoadFileData; static bool manifestLoadFileCallback(void *data, unsigned int try) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM_P(VOID, data); FUNCTION_LOG_PARAM(UINT, try); FUNCTION_LOG_END(); ASSERT(data != NULL); ManifestLoadFileData *loadData = (ManifestLoadFileData *)data; bool result = false; if (try < 2) { // Construct filename based on try const String *fileName = try == 0 ? loadData->fileName : strNewFmt("%s" INFO_COPY_EXT, strPtr(loadData->fileName)); // Attempt to load the file IoRead *read = storageReadIo(storageNewReadP(loadData->storage, fileName)); cipherBlockFilterGroupAdd(ioReadFilterGroup(read), loadData->cipherType, cipherModeDecrypt, loadData->cipherPass); MEM_CONTEXT_BEGIN(loadData->memContext) { loadData->manifest = manifestNewLoad(read); result = true; } MEM_CONTEXT_END(); } FUNCTION_LOG_RETURN(BOOL, result); } Manifest * manifestLoadFile(const Storage *storage, const String *fileName, CipherType cipherType, const String *cipherPass) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE, storage); FUNCTION_LOG_PARAM(STRING, fileName); FUNCTION_LOG_PARAM(ENUM, cipherType); FUNCTION_TEST_PARAM(STRING, cipherPass); FUNCTION_LOG_END(); ASSERT(storage != NULL); ASSERT(fileName != NULL); ASSERT((cipherType == cipherTypeNone && cipherPass == NULL) || (cipherType != cipherTypeNone && cipherPass != NULL)); ManifestLoadFileData data = { .memContext = memContextCurrent(), .storage = storage, .fileName = fileName, .cipherType = cipherType, .cipherPass = cipherPass, }; MEM_CONTEXT_TEMP_BEGIN() { const char *fileNamePath = strPtr(storagePathP(storage, fileName)); infoLoad( strNewFmt("unable to load backup manifest file '%s' or '%s" INFO_COPY_EXT "'", fileNamePath, fileNamePath), manifestLoadFileCallback, &data); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(MANIFEST, data.manifest); } pgbackrest-release-2.24/src/info/manifest.h000066400000000000000000000467441362531507100207270ustar00rootroot00000000000000/*********************************************************************************************************************************** Backup Manifest Handler The backup manifest stores a complete list of all files, links, and paths in a backup along with metadata such as checksums, sizes, timestamps, etc. A list of databases is also included for selective restore. The purpose of the manifest is to allow the restore command to confidently reconstruct the PostgreSQL data directory and ensure that nothing is missing or corrupt. It is also useful for reporting, e.g. size of backup, backup time, etc. ***********************************************************************************************************************************/ #ifndef INFO_MANIFEST_H #define INFO_MANIFEST_H #include "command/backup/common.h" #include "common/crypto/common.h" #include "common/type/variantList.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define BACKUP_MANIFEST_FILE "backup.manifest" STRING_DECLARE(BACKUP_MANIFEST_FILE_STR); #define MANIFEST_TARGET_PGDATA "pg_data" STRING_DECLARE(MANIFEST_TARGET_PGDATA_STR); #define MANIFEST_TARGET_PGTBLSPC "pg_tblspc" STRING_DECLARE(MANIFEST_TARGET_PGTBLSPC_STR); /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define MANIFEST_TYPE Manifest #define MANIFEST_PREFIX manifest typedef struct Manifest Manifest; #include "common/crypto/hash.h" #include "storage/storage.h" /*********************************************************************************************************************************** Manifest data ***********************************************************************************************************************************/ typedef struct ManifestData { const String *backrestVersion; // pgBackRest version const String *backupLabel; // Backup label (unique identifier for the backup) const String *backupLabelPrior; // Backup label for backup this diff/incr is based on time_t backupTimestampCopyStart; // When did the file copy start? time_t backupTimestampStart; // When did the backup start? time_t backupTimestampStop; // When did the backup stop? BackupType backupType; // Type of backup: full, diff, incr // ??? Note that these fields are redundant and verbose since storing the start/stop lsn as a uint64 would be sufficient. // However, we currently lack the functions to transform these values back and forth so this will do for now. const String *archiveStart; // First WAL file in the backup const String *archiveStop; // Last WAL file in the backup const String *lsnStart; // Start LSN for the backup const String *lsnStop; // Stop LSN for the backup unsigned int pgId; // PostgreSQL id in backup.info unsigned int pgVersion; // PostgreSQL version uint64_t pgSystemId; // PostgreSQL system identifier bool backupOptionArchiveCheck; // Will WAL segments be checked at the end of the backup? bool backupOptionArchiveCopy; // Will WAL segments be copied to the backup? const Variant *backupOptionStandby; // Will the backup be performed from a standby? const Variant *backupOptionBufferSize; // Buffer size used for file/protocol operations const Variant *backupOptionChecksumPage; // Will page checksums be verified? bool backupOptionCompress; // Will compression be used for backup? const Variant *backupOptionCompressLevel; // Level to use for compression const Variant *backupOptionCompressLevelNetwork; // Level to use for network compression const Variant *backupOptionDelta; // Will a checksum delta be performed? bool backupOptionHardLink; // Will hardlinks be created in the backup? bool backupOptionOnline; // Will an online backup be performed? const Variant *backupOptionProcessMax; // How many processes will be used for backup? } ManifestData; /*********************************************************************************************************************************** Db type ***********************************************************************************************************************************/ typedef struct ManifestDb { const String *name; // Db name (must be first member in struct) unsigned int id; // Db oid unsigned int lastSystemId; // Highest oid used by system objects in this database } ManifestDb; /*********************************************************************************************************************************** File type ***********************************************************************************************************************************/ typedef struct ManifestFile { const String *name; // File name (must be first member in struct) bool primary:1; // Should this file be copied from the primary? bool checksumPage:1; // Does this file have page checksums? bool checksumPageError:1; // Is there an error in the page checksum? mode_t mode; // File mode char checksumSha1[HASH_TYPE_SHA1_SIZE_HEX + 1]; // SHA1 checksum const VariantList *checksumPageErrorList; // List of page checksum errors if there are any const String *user; // User name const String *group; // Group name const String *reference; // Reference to a prior backup uint64_t size; // Original size uint64_t sizeRepo; // Size in repo time_t timestamp; // Original timestamp } ManifestFile; /*********************************************************************************************************************************** Link type ***********************************************************************************************************************************/ typedef struct ManifestLink { const String *name; // Link name (must be first member in struct) const String *destination; // Link destination const String *user; // User name const String *group; // Group name } ManifestLink; /*********************************************************************************************************************************** Path type ***********************************************************************************************************************************/ typedef struct ManifestPath { const String *name; // Path name (must be first member in struct) mode_t mode; // Directory mode const String *user; // User name const String *group; // Group name } ManifestPath; /*********************************************************************************************************************************** Target type ***********************************************************************************************************************************/ typedef enum { manifestTargetTypePath, manifestTargetTypeLink, } ManifestTargetType; typedef struct ManifestTarget { const String *name; // Target name (must be first member in struct) ManifestTargetType type; // Target type const String *path; // Target path (if path or link) const String *file; // Target file (if file link) unsigned int tablespaceId; // Oid if this link is a tablespace const String *tablespaceName; // Name of the tablespace } ManifestTarget; /*********************************************************************************************************************************** Constructors ***********************************************************************************************************************************/ // Build a new manifest for a PostgreSQL data directory Manifest *manifestNewBuild( const Storage *storagePg, unsigned int pgVersion, bool online, bool checksumPage, const StringList *excludeList, const VariantList *tablespaceList); // Load a manifest from IO Manifest *manifestNewLoad(IoRead *read); /*********************************************************************************************************************************** Build functions ***********************************************************************************************************************************/ // Validate the timestamps in the manifest given a copy start time, i.e. all times should be <= the copy start time void manifestBuildValidate(Manifest *this, bool delta, time_t copyStart, bool compress); // Create a diff/incr backup by comparing to a previous backup manifest void manifestBuildIncr(Manifest *this, const Manifest *prior, BackupType type, const String *archiveStart); // Set remaining values before the final save void manifestBuildComplete( Manifest *this, time_t timestampStart, const String *lsnStart, const String *archiveStart, time_t timestampStop, const String *lsnStop, const String *archiveStop, unsigned int pgId, uint64_t pgSystemId, const VariantList *dbList, bool optionArchiveCheck, bool optionArchiveCopy, size_t optionBufferSize, unsigned int optionCompressLevel, unsigned int optionCompressLevelNetwork, bool optionHardLink, unsigned int optionProcessMax, bool optionStandby); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void manifestLinkCheck(const Manifest *this); Manifest *manifestMove(Manifest *this, MemContext *parentNew); void manifestSave(Manifest *this, IoWrite *write); // Validate a completed manifest. Use strict mode only when saving the manifest after a backup. void manifestValidate(Manifest *this, bool strict); /*********************************************************************************************************************************** Db functions and getters/setters ***********************************************************************************************************************************/ const ManifestDb *manifestDb(const Manifest *this, unsigned int dbIdx); const ManifestDb *manifestDbFind(const Manifest *this, const String *name); const ManifestDb *manifestDbFindDefault(const Manifest *this, const String *name, const ManifestDb *dbDefault); unsigned int manifestDbTotal(const Manifest *this); /*********************************************************************************************************************************** File functions and getters/setters ***********************************************************************************************************************************/ const ManifestFile *manifestFile(const Manifest *this, unsigned int fileIdx); void manifestFileAdd(Manifest *this, const ManifestFile *file); const ManifestFile *manifestFileFind(const Manifest *this, const String *name); const ManifestFile *manifestFileFindDefault(const Manifest *this, const String *name, const ManifestFile *fileDefault); void manifestFileRemove(const Manifest *this, const String *name); unsigned int manifestFileTotal(const Manifest *this); // Update a file with new data void manifestFileUpdate( Manifest *this, const String *name, uint64_t size, uint64_t sizeRepo, const char *checksumSha1, const Variant *reference, bool checksumPage, bool checksumPageError, const VariantList *checksumPageErrorList); /*********************************************************************************************************************************** Link functions and getters/setters ***********************************************************************************************************************************/ const ManifestLink *manifestLink(const Manifest *this, unsigned int linkIdx); const ManifestLink *manifestLinkFind(const Manifest *this, const String *name); const ManifestLink *manifestLinkFindDefault(const Manifest *this, const String *name, const ManifestLink *linkDefault); void manifestLinkRemove(const Manifest *this, const String *name); unsigned int manifestLinkTotal(const Manifest *this); void manifestLinkUpdate(const Manifest *this, const String *name, const String *path); /*********************************************************************************************************************************** Path functions and getters/setters ***********************************************************************************************************************************/ const ManifestPath *manifestPath(const Manifest *this, unsigned int pathIdx); const ManifestPath *manifestPathFind(const Manifest *this, const String *name); const ManifestPath *manifestPathFindDefault(const Manifest *this, const String *name, const ManifestPath *pathDefault); // Data directory relative path for any manifest file/link/path/target name String *manifestPathPg(const String *manifestPath); unsigned int manifestPathTotal(const Manifest *this); /*********************************************************************************************************************************** Target functions and getters/setters ***********************************************************************************************************************************/ const ManifestTarget *manifestTarget(const Manifest *this, unsigned int targetIdx); // Base target, i.e. the target that is the data directory const ManifestTarget *manifestTargetBase(const Manifest *this); const ManifestTarget *manifestTargetFind(const Manifest *this, const String *name); // Absolute path to the target String *manifestTargetPath(const Manifest *this, const ManifestTarget *target); void manifestTargetRemove(const Manifest *this, const String *name); unsigned int manifestTargetTotal(const Manifest *this); void manifestTargetUpdate(const Manifest *this, const String *name, const String *path, const String *file); /*********************************************************************************************************************************** Getters/Setters ***********************************************************************************************************************************/ // Get/set the cipher subpassphrase const String *manifestCipherSubPass(const Manifest *this); void manifestCipherSubPassSet(Manifest *this, const String *cipherSubPass); // Get manifest configuration and options const ManifestData *manifestData(const Manifest *this); // Set backup label void manifestBackupLabelSet(Manifest *this, const String *backupLabel); /*********************************************************************************************************************************** Helper functions ***********************************************************************************************************************************/ Manifest *manifestLoadFile(const Storage *storage, const String *fileName, CipherType cipherType, const String *cipherPass); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_MANIFEST_TYPE \ Manifest * #define FUNCTION_LOG_MANIFEST_FORMAT(value, buffer, bufferSize) \ objToLog(value, "Manifest", buffer, bufferSize) #define FUNCTION_LOG_MANIFEST_DB_TYPE \ ManifestDb * #define FUNCTION_LOG_MANIFEST_DB_FORMAT(value, buffer, bufferSize) \ objToLog(value, "ManifestDb", buffer, bufferSize) #define FUNCTION_LOG_MANIFEST_FILE_TYPE \ ManifestFile * #define FUNCTION_LOG_MANIFEST_FILE_FORMAT(value, buffer, bufferSize) \ objToLog(value, "ManifestFile", buffer, bufferSize) #define FUNCTION_LOG_MANIFEST_LINK_TYPE \ ManifestLink * #define FUNCTION_LOG_MANIFEST_LINK_FORMAT(value, buffer, bufferSize) \ objToLog(value, "ManifestLink", buffer, bufferSize) #define FUNCTION_LOG_MANIFEST_PATH_TYPE \ ManifestPath * #define FUNCTION_LOG_MANIFEST_PATH_FORMAT(value, buffer, bufferSize) \ objToLog(value, "ManifestPath", buffer, bufferSize) #define FUNCTION_LOG_MANIFEST_TARGET_TYPE \ ManifestTarget * #define FUNCTION_LOG_MANIFEST_TARGET_FORMAT(value, buffer, bufferSize) \ objToLog(value, "ManifestTarget", buffer, bufferSize) #endif pgbackrest-release-2.24/src/main.c000066400000000000000000000200321362531507100170630ustar00rootroot00000000000000/*********************************************************************************************************************************** Main ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include "command/archive/get/get.h" #include "command/archive/push/push.h" #include "command/backup/backup.h" #include "command/check/check.h" #include "command/command.h" #include "command/control/start.h" #include "command/control/stop.h" #include "command/expire/expire.h" #include "command/help/help.h" #include "command/info/info.h" #include "command/local/local.h" #include "command/remote/remote.h" #include "command/restore/restore.h" #include "command/stanza/create.h" #include "command/stanza/delete.h" #include "command/stanza/upgrade.h" #include "command/storage/list.h" #include "common/debug.h" #include "common/error.h" #include "common/exit.h" #include "config/config.h" #include "config/load.h" #include "postgres/interface.h" #include "storage/helper.h" #include "version.h" int main(int argListSize, const char *argList[]) { #ifdef WITH_BACKTRACE stackTraceInit(argList[0]); #endif FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INT, argListSize); FUNCTION_LOG_PARAM(CHARPY, argList); FUNCTION_LOG_END(); // Initialize command with the start time cmdInit(); volatile bool result = 0; volatile bool error = false; // Initialize exit handler exitInit(); TRY_BEGIN() { // Load the configuration // ------------------------------------------------------------------------------------------------------------------------- cfgLoad((unsigned int)argListSize, argList); ConfigCommandRole commandRole = cfgCommandRole(); // Display help // ------------------------------------------------------------------------------------------------------------------------- if (cfgCommandHelp()) { cmdHelp(); } // Local role // ------------------------------------------------------------------------------------------------------------------------- else if (commandRole == cfgCmdRoleLocal) { cmdLocal(STDIN_FILENO, STDOUT_FILENO); } // Remote role // ------------------------------------------------------------------------------------------------------------------------- else if (commandRole == cfgCmdRoleRemote) { cmdRemote(STDIN_FILENO, STDOUT_FILENO); } else { switch (cfgCommand()) { // Archive get command // ----------------------------------------------------------------------------------------------------------------- case cfgCmdArchiveGet: { if (commandRole == cfgCmdRoleAsync) cmdArchiveGetAsync(); else result = cmdArchiveGet(); break; } // Archive push command // ----------------------------------------------------------------------------------------------------------------- case cfgCmdArchivePush: { if (commandRole == cfgCmdRoleAsync) cmdArchivePushAsync(); else cmdArchivePush(); break; } // Backup command // ----------------------------------------------------------------------------------------------------------------- case cfgCmdBackup: { // Run backup cmdBackup(); // Switch to expire command cmdEnd(0, NULL); cfgCommandSet(cfgCmdExpire, cfgCmdRoleDefault); cfgLoadLogFile(); cmdBegin(true); // Run expire cmdExpire(); break; } // Check command // ----------------------------------------------------------------------------------------------------------------- case cfgCmdCheck: { cmdCheck(); break; } // Expire command // ----------------------------------------------------------------------------------------------------------------- case cfgCmdExpire: { cmdExpire(); break; } // Help command // ----------------------------------------------------------------------------------------------------------------- case cfgCmdHelp: case cfgCmdNone: { THROW(AssertError, "'help' and 'none' commands should have been handled already"); } // Info command // ----------------------------------------------------------------------------------------------------------------- case cfgCmdInfo: { cmdInfo(); break; } // Restore command // ----------------------------------------------------------------------------------------------------------------- case cfgCmdRestore: { cmdRestore(); break; } // Stanza create command // ----------------------------------------------------------------------------------------------------------------- case cfgCmdStanzaCreate: { cmdStanzaCreate(); break; } // Stanza delete command // ----------------------------------------------------------------------------------------------------------------- case cfgCmdStanzaDelete: { cmdStanzaDelete(); break; } // Stanza upgrade command // ----------------------------------------------------------------------------------------------------------------- case cfgCmdStanzaUpgrade: { cmdStanzaUpgrade(); break; } // Start command // ----------------------------------------------------------------------------------------------------------------- case cfgCmdStart: { cmdStart(); break; } // Stop command // ----------------------------------------------------------------------------------------------------------------- case cfgCmdStop: { cmdStop(); break; } // Storage list command // ----------------------------------------------------------------------------------------------------------------- case cfgCmdLs: { cmdStorageList(); break; } // Display version // ----------------------------------------------------------------------------------------------------------------- case cfgCmdVersion: { printf(PROJECT_NAME " " PROJECT_VERSION "\n"); fflush(stdout); break; } } } } CATCH_ANY() { error = true; } TRY_END(); FUNCTION_LOG_RETURN(INT, exitSafe(result, error, 0)); } pgbackrest-release-2.24/src/postgres/000077500000000000000000000000001362531507100176445ustar00rootroot00000000000000pgbackrest-release-2.24/src/postgres/client.c000066400000000000000000000331421362531507100212710ustar00rootroot00000000000000/*********************************************************************************************************************************** Postgres Client ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "common/type/list.h" #include "common/wait.h" #include "postgres/client.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct PgClient { MemContext *memContext; const String *host; unsigned int port; const String *database; const String *user; TimeMSec queryTimeout; PGconn *connection; }; OBJECT_DEFINE_MOVE(PG_CLIENT); OBJECT_DEFINE_FREE(PG_CLIENT); /*********************************************************************************************************************************** Close protocol connection ***********************************************************************************************************************************/ OBJECT_DEFINE_FREE_RESOURCE_BEGIN(PG_CLIENT, LOG, logLevelTrace) { PQfinish(this->connection); } OBJECT_DEFINE_FREE_RESOURCE_END(LOG); /*********************************************************************************************************************************** Create object ***********************************************************************************************************************************/ PgClient * pgClientNew(const String *host, const unsigned int port, const String *database, const String *user, const TimeMSec queryTimeout) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, host); FUNCTION_LOG_PARAM(UINT, port); FUNCTION_LOG_PARAM(STRING, database); FUNCTION_LOG_PARAM(STRING, user); FUNCTION_LOG_PARAM(TIME_MSEC, queryTimeout); FUNCTION_LOG_END(); ASSERT(port >= 1 && port <= 65535); ASSERT(database != NULL); PgClient *this = NULL; MEM_CONTEXT_NEW_BEGIN("PgClient") { this = memNew(sizeof(PgClient)); *this = (PgClient) { .memContext = MEM_CONTEXT_NEW(), .host = strDup(host), .port = port, .database = strDup(database), .user = strDup(user), .queryTimeout = queryTimeout, }; } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(PG_CLIENT, this); } /*********************************************************************************************************************************** Just ignore notices and warnings ***********************************************************************************************************************************/ static void pgClientNoticeProcessor(void *arg, const char *message) { (void)arg; (void)message; } /*********************************************************************************************************************************** Encode string to escape ' and \ ***********************************************************************************************************************************/ static String * pgClientEscape(const String *string) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, string); FUNCTION_TEST_END(); ASSERT(string != NULL); String *result = strNew("'"); // Iterate all characters in the string for (unsigned stringIdx = 0; stringIdx < strSize(string); stringIdx++) { char stringChar = strPtr(string)[stringIdx]; // These characters are escaped if (stringChar == '\'' || stringChar == '\\') strCatChr(result, '\\'); strCatChr(result, stringChar); } strCatChr(result, '\''); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Open connection to PostgreSQL ***********************************************************************************************************************************/ PgClient * pgClientOpen(PgClient *this) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(PG_CLIENT, this); FUNCTION_LOG_END(); ASSERT(this != NULL); CHECK(this->connection == NULL); MEM_CONTEXT_TEMP_BEGIN() { // Base connection string String *connInfo = strNewFmt("dbname=%s port=%u", strPtr(pgClientEscape(this->database)), this->port); // Add user if specified if (this->user != NULL) strCatFmt(connInfo, " user=%s", strPtr(pgClientEscape(this->user))); // Add host if specified if (this->host != NULL) strCatFmt(connInfo, " host=%s", strPtr(pgClientEscape(this->host))); // Make the connection this->connection = PQconnectdb(strPtr(connInfo)); // Set a callback to shutdown the connection memContextCallbackSet(this->memContext, pgClientFreeResource, this); // Handle errors if (PQstatus(this->connection) != CONNECTION_OK) { THROW_FMT( DbConnectError, "unable to connect to '%s': %s", strPtr(connInfo), strPtr(strTrim(strNew(PQerrorMessage(this->connection))))); } // Set notice and warning processor PQsetNoticeProcessor(this->connection, pgClientNoticeProcessor, NULL); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(PG_CLIENT, this); } /*********************************************************************************************************************************** Execute a query and return results ***********************************************************************************************************************************/ VariantList * pgClientQuery(PgClient *this, const String *query) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(PG_CLIENT, this); FUNCTION_LOG_PARAM(STRING, query); FUNCTION_LOG_END(); ASSERT(this != NULL); CHECK(this->connection != NULL); ASSERT(query != NULL); VariantList *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { // Send the query without waiting for results so we can timeout if needed if (!PQsendQuery(this->connection, strPtr(query))) { THROW_FMT( DbQueryError, "unable to send query '%s': %s", strPtr(query), strPtr(strTrim(strNew(PQerrorMessage(this->connection))))); } // Wait for a result Wait *wait = waitNew(this->queryTimeout); bool busy = false; do { PQconsumeInput(this->connection); busy = PQisBusy(this->connection); } while (busy && waitMore(wait)); // If the query is still busy after the timeout attempt to cancel if (busy) { PGcancel *cancel = PQgetCancel(this->connection); CHECK(cancel != NULL); TRY_BEGIN() { char error[256]; if (!PQcancel(cancel, error, sizeof(error))) THROW_FMT(DbQueryError, "unable to cancel query '%s': %s", strPtr(query), strPtr(strTrim(strNew(error)))); } FINALLY() { PQfreeCancel(cancel); } TRY_END(); } // Get the result (even if query was cancelled -- to prevent the connection being left in a bad state) PGresult *pgResult = PQgetResult(this->connection); TRY_BEGIN() { // Throw timeout error if cancelled if (busy) THROW_FMT(DbQueryError, "query '%s' timed out after %" PRIu64 "ms", strPtr(query), this->queryTimeout); // If this was a command that returned no results then we are done int resultStatus = PQresultStatus(pgResult); if (resultStatus != PGRES_COMMAND_OK) { // Expect some rows to be returned if (resultStatus != PGRES_TUPLES_OK) { THROW_FMT( DbQueryError, "unable to execute query '%s': %s", strPtr(query), strPtr(strTrim(strNew(PQresultErrorMessage(pgResult))))); } // Fetch row and column values result = varLstNew(); MEM_CONTEXT_BEGIN(lstMemContext((List *)result)) { int rowTotal = PQntuples(pgResult); int columnTotal = PQnfields(pgResult); // Get column types Oid *columnType = memNew(sizeof(int) * (size_t)columnTotal); for (int columnIdx = 0; columnIdx < columnTotal; columnIdx++) columnType[columnIdx] = PQftype(pgResult, columnIdx); // Get values for (int rowIdx = 0; rowIdx < rowTotal; rowIdx++) { VariantList *resultRow = varLstNew(); for (int columnIdx = 0; columnIdx < columnTotal; columnIdx++) { char *value = PQgetvalue(pgResult, rowIdx, columnIdx); // If value is zero-length then check if it is null if (value[0] == '\0' && PQgetisnull(pgResult, rowIdx, columnIdx)) { varLstAdd(resultRow, NULL); } // Else convert the value to a variant else { // Convert column type. Not all PostgreSQL types are supported but these should suffice. switch (columnType[columnIdx]) { // Boolean type case 16: // bool { varLstAdd(resultRow, varNewBool(varBoolForce(varNewStrZ(value)))); break; } // Text/char types case 18: // char case 19: // name case 25: // text { varLstAdd(resultRow, varNewStrZ(value)); break; } // Integer types case 20: // int8 case 21: // int2 case 23: // int4 case 26: // oid { varLstAdd(resultRow, varNewInt64(cvtZToInt64(value))); break; } default: { THROW_FMT( FormatError, "unable to parse type %u in column %d for query '%s'", columnType[columnIdx], columnIdx, strPtr(query)); } } } } varLstAdd(result, varNewVarLst(resultRow)); } } MEM_CONTEXT_END(); } } FINALLY() { // Free the result PQclear(pgResult); // Need to get a NULL result to complete the request CHECK(PQgetResult(this->connection) == NULL); } TRY_END(); varLstMove(result, memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(VARIANT_LIST, result); } /*********************************************************************************************************************************** Close connection to PostgreSQL ***********************************************************************************************************************************/ void pgClientClose(PgClient *this) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(PG_CLIENT, this); FUNCTION_LOG_END(); ASSERT(this != NULL); if (this->connection != NULL) { memContextCallbackClear(this->memContext); PQfinish(this->connection); this->connection = NULL; } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * pgClientToLog(const PgClient *this) { return strNewFmt( "{host: %s, port: %u, database: %s, user: %s, queryTimeout %" PRIu64 "}", strPtr(strToLog(this->host)), this->port, strPtr(strToLog(this->database)), strPtr(strToLog(this->user)), this->queryTimeout); } pgbackrest-release-2.24/src/postgres/client.h000066400000000000000000000060741362531507100213020ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL Client Connect to a PostgreSQL database and run queries. This is not intended to be a general purpose client but is suitable for pgBackRest's limited needs. In particular, data type support is limited to text, int, and bool types so it may be necessary to add casts to queries to output one of these types. ***********************************************************************************************************************************/ #ifndef POSTGRES_QUERY_H #define POSTGRES_QUERY_H #include "common/type/string.h" #include "common/type/variantList.h" #include "common/time.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define PG_CLIENT_TYPE PgClient #define PG_CLIENT_PREFIX pgClient typedef struct PgClient PgClient; /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ PgClient *pgClientNew( const String *host, const unsigned int port, const String *database, const String *user, const TimeMSec queryTimeout); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ PgClient *pgClientOpen(PgClient *this); VariantList *pgClientQuery(PgClient *this, const String *query); void pgClientClose(PgClient *this); PgClient *pgClientMove(PgClient *this, MemContext *parentNew); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void pgClientFree(PgClient *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *pgClientToLog(const PgClient *this); #define FUNCTION_LOG_PG_CLIENT_TYPE \ PgClient * #define FUNCTION_LOG_PG_CLIENT_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, pgClientToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/postgres/interface.c000066400000000000000000000740261362531507100217610ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL Interface ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "common/regExp.h" #include "postgres/interface.h" #include "postgres/interface/version.h" #include "postgres/version.h" #include "storage/helper.h" /*********************************************************************************************************************************** Defines for various Postgres paths and files ***********************************************************************************************************************************/ STRING_EXTERN(PG_FILE_PGVERSION_STR, PG_FILE_PGVERSION); STRING_EXTERN(PG_FILE_POSTGRESQLAUTOCONF_STR, PG_FILE_POSTGRESQLAUTOCONF); STRING_EXTERN(PG_FILE_POSTMASTERPID_STR, PG_FILE_POSTMASTERPID); STRING_EXTERN(PG_FILE_RECOVERYCONF_STR, PG_FILE_RECOVERYCONF); STRING_EXTERN(PG_FILE_RECOVERYDONE_STR, PG_FILE_RECOVERYDONE); STRING_EXTERN(PG_FILE_RECOVERYSIGNAL_STR, PG_FILE_RECOVERYSIGNAL); STRING_EXTERN(PG_FILE_STANDBYSIGNAL_STR, PG_FILE_STANDBYSIGNAL); STRING_EXTERN(PG_PATH_GLOBAL_STR, PG_PATH_GLOBAL); STRING_EXTERN(PG_NAME_WAL_STR, PG_NAME_WAL); STRING_EXTERN(PG_NAME_XLOG_STR, PG_NAME_XLOG); // Wal path names depending on version STRING_STATIC(PG_PATH_PGWAL_STR, "pg_wal"); STRING_STATIC(PG_PATH_PGXLOG_STR, "pg_xlog"); // Transaction commit log path names depending on version STRING_STATIC(PG_PATH_PGCLOG_STR, "pg_clog"); STRING_STATIC(PG_PATH_PGXACT_STR, "pg_xact"); // Lsn name used in functions depnding on version STRING_STATIC(PG_NAME_LSN_STR, "lsn"); STRING_STATIC(PG_NAME_LOCATION_STR, "location"); /*********************************************************************************************************************************** Define default wal segment size Before PostgreSQL 11 WAL segment size could only be changed at compile time and is not known to be well-tested, so only the default WAL segment size is supported for versions below 11. ***********************************************************************************************************************************/ #define PG_WAL_SEGMENT_SIZE_DEFAULT ((unsigned int)(16 * 1024 * 1024)) /*********************************************************************************************************************************** Control file size. The control file is actually 8192 bytes but only the first 512 bytes are used to prevent torn pages even on really old storage with 512-byte sectors. This is true across all versions of PostgreSQL. ***********************************************************************************************************************************/ #define PG_CONTROL_SIZE ((unsigned int)(8 * 1024)) #define PG_CONTROL_DATA_SIZE ((unsigned int)(512)) /*********************************************************************************************************************************** WAL header size. It doesn't seem worth tracking the exact size of the WAL header across versions of PostgreSQL so just set it to something far larger needed but <= the minimum read size on just about any system. ***********************************************************************************************************************************/ #define PG_WAL_HEADER_SIZE ((unsigned int)(512)) /*********************************************************************************************************************************** Name of default PostgreSQL database used for running all queries and commands ***********************************************************************************************************************************/ STRING_EXTERN(PG_DB_POSTGRES_STR, PG_DB_POSTGRES); /*********************************************************************************************************************************** PostgreSQL interface definitions Each supported version of PostgreSQL must have interface files named postgres/interface/vXXX.c/h that implement the functions specified in the interface structure below. The functions are documented here rather than in the interface files so that a change in wording does not need to be propagated through N source files. ***********************************************************************************************************************************/ typedef struct PgInterface { // Version of PostgreSQL supported by this interface unsigned int version; // Get the catalog version for this version of PostgreSQL uint32_t (*catalogVersion)(void); // Does pg_control match this version of PostgreSQL? bool (*controlIs)(const unsigned char *); // Convert pg_control to a common data structure PgControl (*control)(const unsigned char *); // Get the control version for this version of PostgreSQL uint32_t (*controlVersion)(void); // Does the WAL header match this version of PostgreSQL? bool (*walIs)(const unsigned char *); // Convert WAL header to a common data structure PgWal (*wal)(const unsigned char *); #ifdef DEBUG // Create pg_control for testing void (*controlTest)(PgControl, unsigned char *); // Create WAL header for testing void (*walTest)(PgWal, unsigned char *); #endif } PgInterface; static const PgInterface pgInterface[] = { { .version = PG_VERSION_12, .catalogVersion = pgInterfaceCatalogVersion120, .controlIs = pgInterfaceControlIs120, .control = pgInterfaceControl120, .controlVersion = pgInterfaceControlVersion120, .walIs = pgInterfaceWalIs120, .wal = pgInterfaceWal120, #ifdef DEBUG .controlTest = pgInterfaceControlTest120, .walTest = pgInterfaceWalTest120, #endif }, { .version = PG_VERSION_11, .catalogVersion = pgInterfaceCatalogVersion110, .controlIs = pgInterfaceControlIs110, .control = pgInterfaceControl110, .controlVersion = pgInterfaceControlVersion110, .walIs = pgInterfaceWalIs110, .wal = pgInterfaceWal110, #ifdef DEBUG .controlTest = pgInterfaceControlTest110, .walTest = pgInterfaceWalTest110, #endif }, { .version = PG_VERSION_10, .catalogVersion = pgInterfaceCatalogVersion100, .controlIs = pgInterfaceControlIs100, .control = pgInterfaceControl100, .controlVersion = pgInterfaceControlVersion100, .walIs = pgInterfaceWalIs100, .wal = pgInterfaceWal100, #ifdef DEBUG .controlTest = pgInterfaceControlTest100, .walTest = pgInterfaceWalTest100, #endif }, { .version = PG_VERSION_96, .catalogVersion = pgInterfaceCatalogVersion096, .controlIs = pgInterfaceControlIs096, .control = pgInterfaceControl096, .controlVersion = pgInterfaceControlVersion096, .walIs = pgInterfaceWalIs096, .wal = pgInterfaceWal096, #ifdef DEBUG .controlTest = pgInterfaceControlTest096, .walTest = pgInterfaceWalTest096, #endif }, { .version = PG_VERSION_95, .catalogVersion = pgInterfaceCatalogVersion095, .controlIs = pgInterfaceControlIs095, .control = pgInterfaceControl095, .controlVersion = pgInterfaceControlVersion095, .walIs = pgInterfaceWalIs095, .wal = pgInterfaceWal095, #ifdef DEBUG .controlTest = pgInterfaceControlTest095, .walTest = pgInterfaceWalTest095, #endif }, { .version = PG_VERSION_94, .catalogVersion = pgInterfaceCatalogVersion094, .controlIs = pgInterfaceControlIs094, .control = pgInterfaceControl094, .controlVersion = pgInterfaceControlVersion094, .walIs = pgInterfaceWalIs094, .wal = pgInterfaceWal094, #ifdef DEBUG .controlTest = pgInterfaceControlTest094, .walTest = pgInterfaceWalTest094, #endif }, { .version = PG_VERSION_93, .catalogVersion = pgInterfaceCatalogVersion093, .controlIs = pgInterfaceControlIs093, .control = pgInterfaceControl093, .controlVersion = pgInterfaceControlVersion093, .walIs = pgInterfaceWalIs093, .wal = pgInterfaceWal093, #ifdef DEBUG .controlTest = pgInterfaceControlTest093, .walTest = pgInterfaceWalTest093, #endif }, { .version = PG_VERSION_92, .catalogVersion = pgInterfaceCatalogVersion092, .controlIs = pgInterfaceControlIs092, .control = pgInterfaceControl092, .controlVersion = pgInterfaceControlVersion092, .walIs = pgInterfaceWalIs092, .wal = pgInterfaceWal092, #ifdef DEBUG .controlTest = pgInterfaceControlTest092, .walTest = pgInterfaceWalTest092, #endif }, { .version = PG_VERSION_91, .catalogVersion = pgInterfaceCatalogVersion091, .controlIs = pgInterfaceControlIs091, .control = pgInterfaceControl091, .controlVersion = pgInterfaceControlVersion091, .walIs = pgInterfaceWalIs091, .wal = pgInterfaceWal091, #ifdef DEBUG .controlTest = pgInterfaceControlTest091, .walTest = pgInterfaceWalTest091, #endif }, { .version = PG_VERSION_90, .catalogVersion = pgInterfaceCatalogVersion090, .controlIs = pgInterfaceControlIs090, .control = pgInterfaceControl090, .controlVersion = pgInterfaceControlVersion090, .walIs = pgInterfaceWalIs090, .wal = pgInterfaceWal090, #ifdef DEBUG .controlTest = pgInterfaceControlTest090, .walTest = pgInterfaceWalTest090, #endif }, { .version = PG_VERSION_84, .catalogVersion = pgInterfaceCatalogVersion084, .controlIs = pgInterfaceControlIs084, .control = pgInterfaceControl084, .controlVersion = pgInterfaceControlVersion084, .walIs = pgInterfaceWalIs084, .wal = pgInterfaceWal084, #ifdef DEBUG .controlTest = pgInterfaceControlTest084, .walTest = pgInterfaceWalTest084, #endif }, { .version = PG_VERSION_83, .catalogVersion = pgInterfaceCatalogVersion083, .controlIs = pgInterfaceControlIs083, .control = pgInterfaceControl083, .controlVersion = pgInterfaceControlVersion083, .walIs = pgInterfaceWalIs083, .wal = pgInterfaceWal083, #ifdef DEBUG .controlTest = pgInterfaceControlTest083, .walTest = pgInterfaceWalTest083, #endif }, }; // Total PostgreSQL versions in pgInterface #define PG_INTERFACE_SIZE (sizeof(pgInterface) / sizeof(PgInterface)) /*********************************************************************************************************************************** These pg_control fields are common to all versions of PostgreSQL, so we can use them to generate error messages when the pg_control version cannot be found. ***********************************************************************************************************************************/ typedef struct PgControlCommon { uint64_t systemId; uint32_t controlVersion; uint32_t catalogVersion; } PgControlCommon; /*********************************************************************************************************************************** Get the interface for a PostgreSQL version ***********************************************************************************************************************************/ static const PgInterface * pgInterfaceVersion(unsigned int pgVersion) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, pgVersion); FUNCTION_TEST_END(); const PgInterface *result = NULL; for (unsigned int interfaceIdx = 0; interfaceIdx < PG_INTERFACE_SIZE; interfaceIdx++) { if (pgInterface[interfaceIdx].version == pgVersion) { result = &pgInterface[interfaceIdx]; break; } } // If the version was not found then error if (result == NULL) THROW_FMT(AssertError, "invalid " PG_NAME " version %u", pgVersion); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Get the catalog version for a PostgreSQL version ***********************************************************************************************************************************/ uint32_t pgCatalogVersion(unsigned int pgVersion) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, pgVersion); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN(pgInterfaceVersion(pgVersion)->catalogVersion()); } /*********************************************************************************************************************************** Get info from pg_control ***********************************************************************************************************************************/ PgControl pgControlFromBuffer(const Buffer *controlFile) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(BUFFER, controlFile); FUNCTION_LOG_END(); ASSERT(controlFile != NULL); // Search for the version of PostgreSQL that uses this control file const PgInterface *interface = NULL; for (unsigned int interfaceIdx = 0; interfaceIdx < PG_INTERFACE_SIZE; interfaceIdx++) { if (pgInterface[interfaceIdx].controlIs(bufPtr(controlFile))) { interface = &pgInterface[interfaceIdx]; break; } } // If the version was not found then error with the control and catalog version that were found if (interface == NULL) { PgControlCommon *controlCommon = (PgControlCommon *)bufPtr(controlFile); THROW_FMT( VersionNotSupportedError, "unexpected control version = %u and catalog version = %u\n" "HINT: is this version of PostgreSQL supported?", controlCommon->controlVersion, controlCommon->catalogVersion); } // Get info from the control file PgControl result = interface->control(bufPtr(controlFile)); result.version = interface->version; // Check the segment size if (result.version < PG_VERSION_11 && result.walSegmentSize != PG_WAL_SEGMENT_SIZE_DEFAULT) { THROW_FMT( FormatError, "wal segment size is %u but must be %u for " PG_NAME " <= " PG_VERSION_10_STR, result.walSegmentSize, PG_WAL_SEGMENT_SIZE_DEFAULT); } // Check the page size if (result.pageSize != PG_PAGE_SIZE_DEFAULT) THROW_FMT(FormatError, "page size is %u but must be %u", result.pageSize, PG_PAGE_SIZE_DEFAULT); FUNCTION_LOG_RETURN(PG_CONTROL, result); } /*********************************************************************************************************************************** Get info from pg_control ***********************************************************************************************************************************/ PgControl pgControlFromFile(const Storage *storage) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE, storage); FUNCTION_LOG_END(); ASSERT(storage != NULL); PgControl result = {0}; MEM_CONTEXT_TEMP_BEGIN() { // Read control file Buffer *controlFile = storageGetP( storageNewReadP(storage, STRDEF(PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL)), .exactSize = PG_CONTROL_DATA_SIZE); result = pgControlFromBuffer(controlFile); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(PG_CONTROL, result); } /*********************************************************************************************************************************** Get the control version for a PostgreSQL version ***********************************************************************************************************************************/ uint32_t pgControlVersion(unsigned int pgVersion) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, pgVersion); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN(pgInterfaceVersion(pgVersion)->controlVersion()); } /*********************************************************************************************************************************** These WAL header fields are common to all versions of PostgreSQL, so we can use them to generate error messages when the WAL magic cannot be found. ***********************************************************************************************************************************/ typedef struct PgWalCommon { uint16_t magic; uint16_t flag; } PgWalCommon; #define PG_WAL_LONG_HEADER 0x0002 /*********************************************************************************************************************************** Get info from WAL header ***********************************************************************************************************************************/ PgWal pgWalFromBuffer(const Buffer *walBuffer) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(BUFFER, walBuffer); FUNCTION_LOG_END(); ASSERT(walBuffer != NULL); // Check that this is a long format WAL header if (!(((PgWalCommon *)bufPtr(walBuffer))->flag & PG_WAL_LONG_HEADER)) THROW_FMT(FormatError, "first page header in WAL file is expected to be in long format"); // Search for the version of PostgreSQL that uses this WAL magic const PgInterface *interface = NULL; for (unsigned int interfaceIdx = 0; interfaceIdx < PG_INTERFACE_SIZE; interfaceIdx++) { if (pgInterface[interfaceIdx].walIs(bufPtr(walBuffer))) { interface = &pgInterface[interfaceIdx]; break; } } // If the version was not found then error with the magic that was found if (interface == NULL) { THROW_FMT( VersionNotSupportedError, "unexpected WAL magic %u\n" "HINT: is this version of PostgreSQL supported?", ((PgWalCommon *)bufPtr(walBuffer))->magic); } // Get info from the control file PgWal result = interface->wal(bufPtr(walBuffer)); result.version = interface->version; FUNCTION_LOG_RETURN(PG_WAL, result); } /*********************************************************************************************************************************** Get info from a WAL segment ***********************************************************************************************************************************/ PgWal pgWalFromFile(const String *walFile) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, walFile); FUNCTION_LOG_END(); ASSERT(walFile != NULL); PgWal result = {0}; MEM_CONTEXT_TEMP_BEGIN() { // Read WAL segment header Buffer *walBuffer = storageGetP(storageNewReadP(storageLocal(), walFile), .exactSize = PG_WAL_HEADER_SIZE); result = pgWalFromBuffer(walBuffer); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(PG_WAL, result); } /**********************************************************************************************************************************/ String * pgTablespaceId(unsigned int pgVersion) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, pgVersion); FUNCTION_TEST_END(); String *result = NULL; if (pgVersion >= PG_VERSION_90) { MEM_CONTEXT_TEMP_BEGIN() { String *pgVersionStr = pgVersionToStr(pgVersion); MEM_CONTEXT_PRIOR_BEGIN() { result = strNewFmt("PG_%s_%u", strPtr(pgVersionStr), pgCatalogVersion(pgVersion)); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); } FUNCTION_TEST_RETURN(result); } /**********************************************************************************************************************************/ uint64_t pgLsnFromStr(const String *lsn) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, lsn); FUNCTION_TEST_END(); uint64_t result = 0; MEM_CONTEXT_TEMP_BEGIN() { StringList *lsnPart = strLstNewSplit(lsn, FSLASH_STR); CHECK(strLstSize(lsnPart) == 2); result = (cvtZToUInt64Base(strPtr(strLstGet(lsnPart, 0)), 16) << 32) + cvtZToUInt64Base(strPtr(strLstGet(lsnPart, 1)), 16); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } String * pgLsnToStr(uint64_t lsn) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT64, lsn); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN(strNewFmt("%x/%x", (unsigned int)(lsn >> 32), (unsigned int)(lsn & 0xFFFFFFFF))); } /**********************************************************************************************************************************/ String * pgLsnToWalSegment(uint32_t timeline, uint64_t lsn, unsigned int walSegmentSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, timeline); FUNCTION_TEST_PARAM(UINT64, lsn); FUNCTION_TEST_PARAM(UINT, walSegmentSize); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN( strNewFmt("%08X%08X%08X", timeline, (unsigned int)(lsn >> 32), (unsigned int)(lsn & 0xFFFFFFFF) / walSegmentSize)); } /**********************************************************************************************************************************/ StringList * pgLsnRangeToWalSegmentList( unsigned int pgVersion, uint32_t timeline, uint64_t lsnStart, uint64_t lsnStop, unsigned int walSegmentSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, pgVersion); FUNCTION_TEST_PARAM(UINT, timeline); FUNCTION_TEST_PARAM(UINT64, lsnStart); FUNCTION_TEST_PARAM(UINT64, lsnStop); FUNCTION_TEST_PARAM(UINT, walSegmentSize); FUNCTION_TEST_END(); ASSERT(pgVersion != 0); ASSERT(timeline != 0); ASSERT(lsnStart <= lsnStop); ASSERT(walSegmentSize != 0); ASSERT(pgVersion > PG_VERSION_92 || walSegmentSize == PG_WAL_SEGMENT_SIZE_DEFAULT); StringList *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { result = strLstNew(); // Skip the FF segment when PostgreSQL <= 9.2 (in this case segment size should always be 16MB) bool skipFF = pgVersion <= PG_VERSION_92; // Calculate the start and stop segments unsigned int startMajor = (unsigned int)(lsnStart >> 32); unsigned int startMinor = (unsigned int)(lsnStart & 0xFFFFFFFF) / walSegmentSize; unsigned int stopMajor = (unsigned int)(lsnStop >> 32); unsigned int stopMinor = (unsigned int)(lsnStop & 0xFFFFFFFF) / walSegmentSize; unsigned int minorPerMajor = 0xFFFFFFFF / walSegmentSize; // Create list strLstAdd(result, strNewFmt("%08X%08X%08X", timeline, startMajor, startMinor)); while (!(startMajor == stopMajor && startMinor == stopMinor)) { startMinor++; if ((skipFF && startMinor == 0xFF) || (!skipFF && startMinor > minorPerMajor)) { startMajor++; startMinor = 0; } strLstAdd(result, strNewFmt("%08X%08X%08X", timeline, startMajor, startMinor)); } strLstMove(result, memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } /**********************************************************************************************************************************/ const String * pgLsnName(unsigned int pgVersion) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, pgVersion); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN(pgVersion >= PG_VERSION_WAL_RENAME ? PG_NAME_LSN_STR : PG_NAME_LOCATION_STR); } /*********************************************************************************************************************************** Get WAL name (wal/xlog) for a PostgreSQL version ***********************************************************************************************************************************/ const String * pgWalName(unsigned int pgVersion) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, pgVersion); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN(pgVersion >= PG_VERSION_WAL_RENAME ? PG_NAME_WAL_STR : PG_NAME_XLOG_STR); } /**********************************************************************************************************************************/ const String * pgWalPath(unsigned int pgVersion) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, pgVersion); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN(pgVersion >= PG_VERSION_WAL_RENAME ? PG_PATH_PGWAL_STR : PG_PATH_PGXLOG_STR); } /**********************************************************************************************************************************/ const String * pgXactPath(unsigned int pgVersion) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, pgVersion); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN(pgVersion >= PG_VERSION_WAL_RENAME ? PG_PATH_PGXACT_STR : PG_PATH_PGCLOG_STR); } /*********************************************************************************************************************************** Create pg_control for testing ***********************************************************************************************************************************/ #ifdef DEBUG Buffer * pgControlTestToBuffer(PgControl pgControl) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(PG_CONTROL, pgControl); FUNCTION_TEST_END(); // Set defaults if values are not passed pgControl.pageSize = pgControl.pageSize == 0 ? PG_PAGE_SIZE_DEFAULT : pgControl.pageSize; pgControl.walSegmentSize = pgControl.walSegmentSize == 0 ? PG_WAL_SEGMENT_SIZE_DEFAULT : pgControl.walSegmentSize; // Create the buffer and clear it Buffer *result = bufNew(PG_CONTROL_SIZE); memset(bufPtr(result), 0, bufSize(result)); bufUsedSet(result, bufSize(result)); // Generate pg_control pgInterfaceVersion(pgControl.version)->controlTest(pgControl, bufPtr(result)); FUNCTION_TEST_RETURN(result); } #endif /*********************************************************************************************************************************** Create WAL for testing ***********************************************************************************************************************************/ #ifdef DEBUG void pgWalTestToBuffer(PgWal pgWal, Buffer *walBuffer) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(PG_WAL, pgWal); FUNCTION_TEST_PARAM(BUFFER, walBuffer); FUNCTION_TEST_END(); ASSERT(walBuffer != NULL); // Generate WAL pgInterfaceVersion(pgWal.version)->walTest(pgWal, bufPtr(walBuffer)); FUNCTION_TEST_RETURN_VOID(); } #endif /*********************************************************************************************************************************** Convert version string to version number ***********************************************************************************************************************************/ unsigned int pgVersionFromStr(const String *version) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, version); FUNCTION_LOG_END(); ASSERT(version != NULL); unsigned int result = 0; MEM_CONTEXT_TEMP_BEGIN() { // If format is not number.number (9.4) or number only (10) then error if (!regExpMatchOne(STRDEF("^[0-9]+[.]*[0-9]+$"), version)) THROW_FMT(AssertError, "version %s format is invalid", strPtr(version)); // If there is a dot set the major and minor versions, else just the major int idxStart = strChr(version, '.'); unsigned int major; unsigned int minor = 0; if (idxStart != -1) { major = cvtZToUInt(strPtr(strSubN(version, 0, (size_t)idxStart))); minor = cvtZToUInt(strPtr(strSub(version, (size_t)idxStart + 1))); } else major = cvtZToUInt(strPtr(version)); // No check to see if valid/supported PG version is on purpose result = major * 10000 + minor * 100; } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(UINT, result); } /*********************************************************************************************************************************** Convert version number to string ***********************************************************************************************************************************/ String * pgVersionToStr(unsigned int version) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(UINT, version); FUNCTION_LOG_END(); String *result = version >= PG_VERSION_10 ? strNewFmt("%u", version / 10000) : strNewFmt("%u.%u", version / 10000, version % 10000 / 100); FUNCTION_LOG_RETURN(STRING, result); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * pgControlToLog(const PgControl *pgControl) { return strNewFmt( "{version: %u, systemId: %" PRIu64 ", walSegmentSize: %u, pageChecksum: %s}", pgControl->version, pgControl->systemId, pgControl->walSegmentSize, cvtBoolToConstZ(pgControl->pageChecksum)); } String * pgWalToLog(const PgWal *pgWal) { return strNewFmt("{version: %u, systemId: %" PRIu64 "}", pgWal->version, pgWal->systemId); } pgbackrest-release-2.24/src/postgres/interface.h000066400000000000000000000235101362531507100217560ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL Interface ***********************************************************************************************************************************/ #ifndef POSTGRES_INTERFACE_H #define POSTGRES_INTERFACE_H #include #include #include "common/debug.h" #include "common/type/string.h" #include "storage/storage.h" /*********************************************************************************************************************************** Defines for various Postgres paths and files ***********************************************************************************************************************************/ #define PG_FILE_BACKUPLABEL "backup_label" #define PG_FILE_BACKUPLABELOLD "backup_label.old" #define PG_FILE_PGCONTROL "pg_control" #define PG_FILE_PGFILENODEMAP "pg_filenode.map" #define PG_FILE_PGINTERNALINIT "pg_internal.init" #define PG_FILE_PGVERSION "PG_VERSION" STRING_DECLARE(PG_FILE_PGVERSION_STR); #define PG_FILE_POSTGRESQLAUTOCONF "postgresql.auto.conf" STRING_DECLARE(PG_FILE_POSTGRESQLAUTOCONF_STR); #define PG_FILE_POSTGRESQLAUTOCONFTMP "postgresql.auto.conf.tmp" #define PG_FILE_POSTMASTEROPTS "postmaster.opts" #define PG_FILE_POSTMASTERPID "postmaster.pid" STRING_DECLARE(PG_FILE_POSTMASTERPID_STR); #define PG_FILE_RECOVERYCONF "recovery.conf" STRING_DECLARE(PG_FILE_RECOVERYCONF_STR); #define PG_FILE_RECOVERYDONE "recovery.done" STRING_DECLARE(PG_FILE_RECOVERYDONE_STR); #define PG_FILE_RECOVERYSIGNAL "recovery.signal" STRING_DECLARE(PG_FILE_RECOVERYSIGNAL_STR); #define PG_FILE_STANDBYSIGNAL "standby.signal" STRING_DECLARE(PG_FILE_STANDBYSIGNAL_STR); #define PG_FILE_TABLESPACEMAP "tablespace_map" #define PG_PATH_ARCHIVE_STATUS "archive_status" #define PG_PATH_BASE "base" #define PG_PATH_GLOBAL "global" STRING_DECLARE(PG_PATH_GLOBAL_STR); #define PG_PATH_PGMULTIXACT "pg_multixact" #define PG_PATH_PGDYNSHMEM "pg_dynshmem" #define PG_PATH_PGNOTIFY "pg_notify" #define PG_PATH_PGREPLSLOT "pg_replslot" #define PG_PATH_PGSERIAL "pg_serial" #define PG_PATH_PGSNAPSHOTS "pg_snapshots" #define PG_PATH_PGSTATTMP "pg_stat_tmp" #define PG_PATH_PGSUBTRANS "pg_subtrans" #define PG_PATH_PGTBLSPC "pg_tblspc" #define PG_PREFIX_PGSQLTMP "pgsql_tmp" #define PG_NAME_WAL "wal" STRING_DECLARE(PG_NAME_WAL_STR); #define PG_NAME_XLOG "xlog" STRING_DECLARE(PG_NAME_XLOG_STR); /*********************************************************************************************************************************** Name of default PostgreSQL database used for running all queries and commands ***********************************************************************************************************************************/ #define PG_DB_POSTGRES "postgres" STRING_DECLARE(PG_DB_POSTGRES_STR); /*********************************************************************************************************************************** Define default page size Page size can only be changed at compile time and is not known to be well-tested, so only the default page size is supported. ***********************************************************************************************************************************/ #define PG_PAGE_SIZE_DEFAULT ((unsigned int)(8 * 1024)) /*********************************************************************************************************************************** Define the minimum oid that can be used for a user object Everything below this number should have been created at initdb time. ***********************************************************************************************************************************/ #define PG_USER_OBJECT_MIN_ID 16384 /*********************************************************************************************************************************** Define default segment size and pages per segment Segment size can only be changed at compile time and is not known to be well-tested, so only the default segment size is supported. ***********************************************************************************************************************************/ #define PG_SEGMENT_SIZE_DEFAULT ((unsigned int)(1 * 1024 * 1024 * 1024)) #define PG_SEGMENT_PAGE_DEFAULT (PG_SEGMENT_SIZE_DEFAULT / PG_PAGE_SIZE_DEFAULT) /*********************************************************************************************************************************** PostgreSQL Control File Info ***********************************************************************************************************************************/ typedef struct PgControl { unsigned int version; uint64_t systemId; unsigned int pageSize; unsigned int walSegmentSize; bool pageChecksum; } PgControl; /*********************************************************************************************************************************** PostgreSQL WAL Info ***********************************************************************************************************************************/ typedef struct PgWal { unsigned int version; uint64_t systemId; } PgWal; /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ uint32_t pgCatalogVersion(unsigned int pgVersion); PgControl pgControlFromFile(const Storage *storage); PgControl pgControlFromBuffer(const Buffer *controlFile); uint32_t pgControlVersion(unsigned int pgVersion); unsigned int pgVersionFromStr(const String *version); String *pgVersionToStr(unsigned int version); PgWal pgWalFromFile(const String *walFile); PgWal pgWalFromBuffer(const Buffer *walBuffer); // Get the tablespace identifier used to distinguish versions in a tablespace directory, e.g. PG_9.0_201008051 String *pgTablespaceId(unsigned int pgVersion); // Convert a string to an lsn and vice versa uint64_t pgLsnFromStr(const String *lsn); String *pgLsnToStr(uint64_t lsn); // Convert a timeline and lsn to a wal segment String *pgLsnToWalSegment(uint32_t timeline, uint64_t lsn, unsigned int walSegmentSize); // Convert a timeline and lsn range to a list of wal segments StringList *pgLsnRangeToWalSegmentList( unsigned int pgVersion, uint32_t timeline, uint64_t lsnStart, uint64_t lsnStop, unsigned int walSegmentSize); // Get name used for lsn in functions (this was changed in PostgreSQL 10 for consistency since lots of names were changing) const String *pgLsnName(unsigned int pgVersion); const String *pgWalName(unsigned int pgVersion); // Get wal path (this was changed in PostgreSQL 10 to avoid including "log" in the name) const String *pgWalPath(unsigned int pgVersion); // Get transaction commit log path (this was changed in PostgreSQL 10 to avoid including "log" in the name) const String *pgXactPath(unsigned int pgVersion); /*********************************************************************************************************************************** Test Functions ***********************************************************************************************************************************/ #ifdef DEBUG Buffer *pgControlTestToBuffer(PgControl pgControl); void pgWalTestToBuffer(PgWal pgWal, Buffer *walBuffer); #endif /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *pgControlToLog(const PgControl *pgControl); String *pgWalToLog(const PgWal *pgWal); #define FUNCTION_LOG_PG_CONTROL_TYPE \ PgControl #define FUNCTION_LOG_PG_CONTROL_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(&value, pgControlToLog, buffer, bufferSize) #define FUNCTION_LOG_PG_WAL_TYPE \ PgWal #define FUNCTION_LOG_PG_WAL_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(&value, pgWalToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/postgres/interface/000077500000000000000000000000001362531507100216045ustar00rootroot00000000000000pgbackrest-release-2.24/src/postgres/interface/v083.c000066400000000000000000000010161362531507100224460ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL 8.3 Interface See postgres/interface/version.intern.h for documentation. ***********************************************************************************************************************************/ #include "build.auto.h" #define PG_VERSION PG_VERSION_83 #include "postgres/interface/version.intern.h" PG_INTERFACE(083); pgbackrest-release-2.24/src/postgres/interface/v084.c000066400000000000000000000010161362531507100224470ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL 8.4 Interface See postgres/interface/version.intern.h for documentation. ***********************************************************************************************************************************/ #include "build.auto.h" #define PG_VERSION PG_VERSION_84 #include "postgres/interface/version.intern.h" PG_INTERFACE(084); pgbackrest-release-2.24/src/postgres/interface/v090.c000066400000000000000000000010161362531507100224440ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL 9.0 Interface See postgres/interface/version.intern.h for documentation. ***********************************************************************************************************************************/ #include "build.auto.h" #define PG_VERSION PG_VERSION_90 #include "postgres/interface/version.intern.h" PG_INTERFACE(090); pgbackrest-release-2.24/src/postgres/interface/v091.c000066400000000000000000000010161362531507100224450ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL 9.1 Interface See postgres/interface/version.intern.h for documentation. ***********************************************************************************************************************************/ #include "build.auto.h" #define PG_VERSION PG_VERSION_91 #include "postgres/interface/version.intern.h" PG_INTERFACE(091); pgbackrest-release-2.24/src/postgres/interface/v092.c000066400000000000000000000010161362531507100224460ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL 9.2 Interface See postgres/interface/version.intern.h for documentation. ***********************************************************************************************************************************/ #include "build.auto.h" #define PG_VERSION PG_VERSION_92 #include "postgres/interface/version.intern.h" PG_INTERFACE(092); pgbackrest-release-2.24/src/postgres/interface/v093.c000066400000000000000000000010161362531507100224470ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL 9.3 Interface See postgres/interface/version.intern.h for documentation. ***********************************************************************************************************************************/ #include "build.auto.h" #define PG_VERSION PG_VERSION_93 #include "postgres/interface/version.intern.h" PG_INTERFACE(093); pgbackrest-release-2.24/src/postgres/interface/v094.c000066400000000000000000000010161362531507100224500ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL 9.4 Interface See postgres/interface/version.intern.h for documentation. ***********************************************************************************************************************************/ #include "build.auto.h" #define PG_VERSION PG_VERSION_94 #include "postgres/interface/version.intern.h" PG_INTERFACE(094); pgbackrest-release-2.24/src/postgres/interface/v095.c000066400000000000000000000010161362531507100224510ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL 9.5 Interface See postgres/interface/version.intern.h for documentation. ***********************************************************************************************************************************/ #include "build.auto.h" #define PG_VERSION PG_VERSION_95 #include "postgres/interface/version.intern.h" PG_INTERFACE(095); pgbackrest-release-2.24/src/postgres/interface/v096.c000066400000000000000000000010161362531507100224520ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL 9.6 Interface See postgres/interface/version.intern.h for documentation. ***********************************************************************************************************************************/ #include "build.auto.h" #define PG_VERSION PG_VERSION_96 #include "postgres/interface/version.intern.h" PG_INTERFACE(096); pgbackrest-release-2.24/src/postgres/interface/v100.c000066400000000000000000000010151362531507100224330ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL 10 Interface See postgres/interface/version.intern.h for documentation. ***********************************************************************************************************************************/ #include "build.auto.h" #define PG_VERSION PG_VERSION_10 #include "postgres/interface/version.intern.h" PG_INTERFACE(100); pgbackrest-release-2.24/src/postgres/interface/v110.c000066400000000000000000000010151362531507100224340ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL 11 Interface See postgres/interface/version.intern.h for documentation. ***********************************************************************************************************************************/ #include "build.auto.h" #define PG_VERSION PG_VERSION_11 #include "postgres/interface/version.intern.h" PG_INTERFACE(110); pgbackrest-release-2.24/src/postgres/interface/v120.c000066400000000000000000000010151362531507100224350ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL 12 Interface See postgres/interface/version.intern.h for documentation. ***********************************************************************************************************************************/ #include "build.auto.h" #define PG_VERSION PG_VERSION_12 #include "postgres/interface/version.intern.h" PG_INTERFACE(120); pgbackrest-release-2.24/src/postgres/interface/version.auto.h000066400000000000000000002374501362531507100244240ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL Types Despite the .auto.h suffix this file is not automatically generated, though it could be. We use this suffix to emphasize that the types have been copied from PostgreSQL and to exclude this file from project code counts. For each supported release of PostgreSQL check the types in this file to see if they have changed. The easiest way to do this is to copy and paste in place and check git to see if there are any diffs. Tabs should be copied as is to make this process easy even though the pgBackRest project does not use tabs elsewhere. New versions should always be added to the top of each type's #if block, underneath `PG_VERSION > PG_VERSION_MAX` to cause as little churn as possible. This also ensures that new versions will not work until PG_VERSION_MAX and this file have been updated. New data structures do not need to add #elif branches for old versions. See pg_time_t as an example. Comments should be copied with the types they apply to, even if the comment has not changed. This does get repetitive, but has no runtime cost and makes the rules a bit easier to follow. If a comment has syntax only changes, then the new version of the comment can be applied to older versions of the type. If a comment has changed in a way that implies a difference in the way the type is used, then a new version of the comment and type should be created. See the CheckPoint type difference between 9.5 and 9.6 as an example. ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Types from src/include/c.h ***********************************************************************************************************************************/ // int64 type // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_83 typedef int64_t int64; #endif // uint16 type // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_83 typedef uint16_t uint16; #endif // uint32 type // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_83 typedef uint32_t uint32; #endif // uint64 type // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_83 typedef uint64_t uint64; #endif // transactionId type // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_83 typedef uint32 TransactionId; #endif // MultiXactId type // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_83 /* MultiXactId must be equivalent to TransactionId, to fit in t_xmax */ typedef TransactionId MultiXactId; #endif // MultiXactOffset // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_83 typedef uint32 MultiXactOffset; #endif /*********************************************************************************************************************************** Types from src/include/pgtime.h ***********************************************************************************************************************************/ // pg_time_t type // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_84 /* * The API of this library is generally similar to the corresponding * C library functions, except that we use pg_time_t which (we hope) is * 64 bits wide, and which is most definitely signed not unsigned. */ typedef int64 pg_time_t; #endif /*********************************************************************************************************************************** Types from src/include/postgres_ext.h ***********************************************************************************************************************************/ // Oid Type // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_83 /* * Object ID is a fundamental type in Postgres. */ typedef unsigned int Oid; #endif /*********************************************************************************************************************************** Types from src/include/utils/pg_crc32.h ***********************************************************************************************************************************/ // pg_crc32/c type // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_95 typedef uint32 pg_crc32c; #elif PG_VERSION >= PG_VERSION_83 typedef uint32 pg_crc32; #endif /*********************************************************************************************************************************** Types from src/include/access/xlogdefs.h ***********************************************************************************************************************************/ // XLogRecPtr type // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_93 /* * Pointer to a location in the XLOG. These pointers are 64 bits wide, * because we don't want them ever to overflow. */ typedef uint64 XLogRecPtr; #elif PG_VERSION >= PG_VERSION_83 /* * Pointer to a location in the XLOG. These pointers are 64 bits wide, * because we don't want them ever to overflow. * * NOTE: xrecoff == 0 is used to indicate an invalid pointer. This is OK * because we use page headers in the XLOG, so no XLOG record can start * right at the beginning of a file. * * NOTE: the "log file number" is somewhat misnamed, since the actual files * making up the XLOG are much smaller than 4Gb. Each actual file is an * XLogSegSize-byte "segment" of a logical log file having the indicated * xlogid. The log file number and segment number together identify a * physical XLOG file. Segment number and offset within the physical file * are computed from xrecoff div and mod XLogSegSize. */ typedef struct XLogRecPtr { uint32 xlogid; /* log file #, 0 based */ uint32 xrecoff; /* byte offset of location in log file */ } XLogRecPtr; #endif // TimeLineID type // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_83 /* * TimeLineID (TLI) - identifies different database histories to prevent * confusion after restoring a prior state of a database installation. * TLI does not change in a normal stop/restart of the database (including * crash-and-recover cases); but we must assign a new TLI after doing * a recovery to a prior state, a/k/a point-in-time recovery. This makes * the new WAL logfile sequence we generate distinguishable from the * sequence that was generated in the previous incarnation. */ typedef uint32 TimeLineID; #endif /*********************************************************************************************************************************** Types from src/include/catalog/catversion.h ***********************************************************************************************************************************/ // CATALOG_VERSION_NO define // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_12 /* * We could use anything we wanted for version numbers, but I recommend * following the "YYYYMMDDN" style often used for DNS zone serial numbers. * YYYYMMDD are the date of the change, and N is the number of the change * on that day. (Hopefully we'll never commit ten independent sets of * catalog changes on the same day...) */ /* yyyymmddN */ #define CATALOG_VERSION_NO 201909212 #elif PG_VERSION >= PG_VERSION_11 /* * We could use anything we wanted for version numbers, but I recommend * following the "YYYYMMDDN" style often used for DNS zone serial numbers. * YYYYMMDD are the date of the change, and N is the number of the change * on that day. (Hopefully we'll never commit ten independent sets of * catalog changes on the same day...) */ /* yyyymmddN */ #define CATALOG_VERSION_NO 201809051 #elif PG_VERSION >= PG_VERSION_10 /* * We could use anything we wanted for version numbers, but I recommend * following the "YYYYMMDDN" style often used for DNS zone serial numbers. * YYYYMMDD are the date of the change, and N is the number of the change * on that day. (Hopefully we'll never commit ten independent sets of * catalog changes on the same day...) */ /* yyyymmddN */ #define CATALOG_VERSION_NO 201707211 #elif PG_VERSION >= PG_VERSION_96 /* * We could use anything we wanted for version numbers, but I recommend * following the "YYYYMMDDN" style often used for DNS zone serial numbers. * YYYYMMDD are the date of the change, and N is the number of the change * on that day. (Hopefully we'll never commit ten independent sets of * catalog changes on the same day...) */ /* yyyymmddN */ #define CATALOG_VERSION_NO 201608131 #elif PG_VERSION >= PG_VERSION_95 /* * We could use anything we wanted for version numbers, but I recommend * following the "YYYYMMDDN" style often used for DNS zone serial numbers. * YYYYMMDD are the date of the change, and N is the number of the change * on that day. (Hopefully we'll never commit ten independent sets of * catalog changes on the same day...) */ /* yyyymmddN */ #define CATALOG_VERSION_NO 201510051 #elif PG_VERSION >= PG_VERSION_94 /* * We could use anything we wanted for version numbers, but I recommend * following the "YYYYMMDDN" style often used for DNS zone serial numbers. * YYYYMMDD are the date of the change, and N is the number of the change * on that day. (Hopefully we'll never commit ten independent sets of * catalog changes on the same day...) */ /* yyyymmddN */ #define CATALOG_VERSION_NO 201409291 #elif PG_VERSION >= PG_VERSION_93 /* * We could use anything we wanted for version numbers, but I recommend * following the "YYYYMMDDN" style often used for DNS zone serial numbers. * YYYYMMDD are the date of the change, and N is the number of the change * on that day. (Hopefully we'll never commit ten independent sets of * catalog changes on the same day...) */ /* yyyymmddN */ #define CATALOG_VERSION_NO 201306121 #elif PG_VERSION >= PG_VERSION_92 /* * We could use anything we wanted for version numbers, but I recommend * following the "YYYYMMDDN" style often used for DNS zone serial numbers. * YYYYMMDD are the date of the change, and N is the number of the change * on that day. (Hopefully we'll never commit ten independent sets of * catalog changes on the same day...) */ /* yyyymmddN */ #define CATALOG_VERSION_NO 201204301 #elif PG_VERSION >= PG_VERSION_91 /* * We could use anything we wanted for version numbers, but I recommend * following the "YYYYMMDDN" style often used for DNS zone serial numbers. * YYYYMMDD are the date of the change, and N is the number of the change * on that day. (Hopefully we'll never commit ten independent sets of * catalog changes on the same day...) */ /* yyyymmddN */ #define CATALOG_VERSION_NO 201105231 #elif PG_VERSION >= PG_VERSION_90 /* * We could use anything we wanted for version numbers, but I recommend * following the "YYYYMMDDN" style often used for DNS zone serial numbers. * YYYYMMDD are the date of the change, and N is the number of the change * on that day. (Hopefully we'll never commit ten independent sets of * catalog changes on the same day...) */ /* yyyymmddN */ #define CATALOG_VERSION_NO 201008051 #elif PG_VERSION >= PG_VERSION_84 /* * We could use anything we wanted for version numbers, but I recommend * following the "YYYYMMDDN" style often used for DNS zone serial numbers. * YYYYMMDD are the date of the change, and N is the number of the change * on that day. (Hopefully we'll never commit ten independent sets of * catalog changes on the same day...) */ /* yyyymmddN */ #define CATALOG_VERSION_NO 200904091 #elif PG_VERSION >= PG_VERSION_83 /* * We could use anything we wanted for version numbers, but I recommend * following the "YYYYMMDDN" style often used for DNS zone serial numbers. * YYYYMMDD are the date of the change, and N is the number of the change * on that day. (Hopefully we'll never commit ten independent sets of * catalog changes on the same day...) */ /* yyyymmddN */ #define CATALOG_VERSION_NO 200711281 #endif /*********************************************************************************************************************************** Types from src/include/access/transam.h ***********************************************************************************************************************************/ // FullTransactionId type // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_12 /* * A 64 bit value that contains an epoch and a TransactionId. This is * wrapped in a struct to prevent implicit conversion to/from TransactionId. * Not all values represent valid normal XIDs. */ typedef struct FullTransactionId { uint64 value; } FullTransactionId; #endif /*********************************************************************************************************************************** Types from src/include/catalog/pg_control.h ***********************************************************************************************************************************/ // PG_CONTROL_VERSION define // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_12 /* Version identifier for this pg_control format */ #define PG_CONTROL_VERSION 1201 #elif PG_VERSION >= PG_VERSION_11 /* Version identifier for this pg_control format */ #define PG_CONTROL_VERSION 1100 #elif PG_VERSION >= PG_VERSION_10 /* Version identifier for this pg_control format */ #define PG_CONTROL_VERSION 1002 #elif PG_VERSION >= PG_VERSION_96 /* Version identifier for this pg_control format */ #define PG_CONTROL_VERSION 960 #elif PG_VERSION >= PG_VERSION_94 /* Version identifier for this pg_control format */ #define PG_CONTROL_VERSION 942 #elif PG_VERSION >= PG_VERSION_93 /* Version identifier for this pg_control format */ #define PG_CONTROL_VERSION 937 #elif PG_VERSION >= PG_VERSION_92 /* Version identifier for this pg_control format */ #define PG_CONTROL_VERSION 922 #elif PG_VERSION >= PG_VERSION_90 /* Version identifier for this pg_control format */ #define PG_CONTROL_VERSION 903 #elif PG_VERSION >= PG_VERSION_84 /* Version identifier for this pg_control format */ #define PG_CONTROL_VERSION 843 #elif PG_VERSION >= PG_VERSION_83 /* Version identifier for this pg_control format */ #define PG_CONTROL_VERSION 833 #endif // MOCK_AUTH_NONCE_LEN define // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_10 /* Nonce key length, see below */ #define MOCK_AUTH_NONCE_LEN 32 #endif // CheckPoint Type // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_12 /* * Body of CheckPoint XLOG records. This is declared here because we keep * a copy of the latest one in pg_control for possible disaster recovery. * Changing this struct requires a PG_CONTROL_VERSION bump. */ typedef struct CheckPoint { XLogRecPtr redo; /* next RecPtr available when we began to * create CheckPoint (i.e. REDO start point) */ TimeLineID ThisTimeLineID; /* current TLI */ TimeLineID PrevTimeLineID; /* previous TLI, if this record begins a new * timeline (equals ThisTimeLineID otherwise) */ bool fullPageWrites; /* current full_page_writes */ FullTransactionId nextFullXid; /* next free full transaction ID */ Oid nextOid; /* next free OID */ MultiXactId nextMulti; /* next free MultiXactId */ MultiXactOffset nextMultiOffset; /* next free MultiXact offset */ TransactionId oldestXid; /* cluster-wide minimum datfrozenxid */ Oid oldestXidDB; /* database with minimum datfrozenxid */ MultiXactId oldestMulti; /* cluster-wide minimum datminmxid */ Oid oldestMultiDB; /* database with minimum datminmxid */ pg_time_t time; /* time stamp of checkpoint */ TransactionId oldestCommitTsXid; /* oldest Xid with valid commit * timestamp */ TransactionId newestCommitTsXid; /* newest Xid with valid commit * timestamp */ /* * Oldest XID still running. This is only needed to initialize hot standby * mode from an online checkpoint, so we only bother calculating this for * online checkpoints and only when wal_level is replica. Otherwise it's * set to InvalidTransactionId. */ TransactionId oldestActiveXid; } CheckPoint; #elif PG_VERSION >= PG_VERSION_96 /* * Body of CheckPoint XLOG records. This is declared here because we keep * a copy of the latest one in pg_control for possible disaster recovery. * Changing this struct requires a PG_CONTROL_VERSION bump. */ typedef struct CheckPoint { XLogRecPtr redo; /* next RecPtr available when we began to * create CheckPoint (i.e. REDO start point) */ TimeLineID ThisTimeLineID; /* current TLI */ TimeLineID PrevTimeLineID; /* previous TLI, if this record begins a new * timeline (equals ThisTimeLineID otherwise) */ bool fullPageWrites; /* current full_page_writes */ uint32 nextXidEpoch; /* higher-order bits of nextXid */ TransactionId nextXid; /* next free XID */ Oid nextOid; /* next free OID */ MultiXactId nextMulti; /* next free MultiXactId */ MultiXactOffset nextMultiOffset; /* next free MultiXact offset */ TransactionId oldestXid; /* cluster-wide minimum datfrozenxid */ Oid oldestXidDB; /* database with minimum datfrozenxid */ MultiXactId oldestMulti; /* cluster-wide minimum datminmxid */ Oid oldestMultiDB; /* database with minimum datminmxid */ pg_time_t time; /* time stamp of checkpoint */ TransactionId oldestCommitTsXid; /* oldest Xid with valid commit * timestamp */ TransactionId newestCommitTsXid; /* newest Xid with valid commit * timestamp */ /* * Oldest XID still running. This is only needed to initialize hot standby * mode from an online checkpoint, so we only bother calculating this for * online checkpoints and only when wal_level is replica. Otherwise it's * set to InvalidTransactionId. */ TransactionId oldestActiveXid; } CheckPoint; #elif PG_VERSION >= PG_VERSION_95 /* * Body of CheckPoint XLOG records. This is declared here because we keep * a copy of the latest one in pg_control for possible disaster recovery. * Changing this struct requires a PG_CONTROL_VERSION bump. */ typedef struct CheckPoint { XLogRecPtr redo; /* next RecPtr available when we began to * create CheckPoint (i.e. REDO start point) */ TimeLineID ThisTimeLineID; /* current TLI */ TimeLineID PrevTimeLineID; /* previous TLI, if this record begins a new * timeline (equals ThisTimeLineID otherwise) */ bool fullPageWrites; /* current full_page_writes */ uint32 nextXidEpoch; /* higher-order bits of nextXid */ TransactionId nextXid; /* next free XID */ Oid nextOid; /* next free OID */ MultiXactId nextMulti; /* next free MultiXactId */ MultiXactOffset nextMultiOffset; /* next free MultiXact offset */ TransactionId oldestXid; /* cluster-wide minimum datfrozenxid */ Oid oldestXidDB; /* database with minimum datfrozenxid */ MultiXactId oldestMulti; /* cluster-wide minimum datminmxid */ Oid oldestMultiDB; /* database with minimum datminmxid */ pg_time_t time; /* time stamp of checkpoint */ TransactionId oldestCommitTsXid; /* oldest Xid with valid commit * timestamp */ TransactionId newestCommitTsXid; /* newest Xid with valid commit * timestamp */ /* * Oldest XID still running. This is only needed to initialize hot standby * mode from an online checkpoint, so we only bother calculating this for * online checkpoints and only when wal_level is hot_standby. Otherwise * it's set to InvalidTransactionId. */ TransactionId oldestActiveXid; } CheckPoint; #elif PG_VERSION >= PG_VERSION_93 /* * Body of CheckPoint XLOG records. This is declared here because we keep * a copy of the latest one in pg_control for possible disaster recovery. * Changing this struct requires a PG_CONTROL_VERSION bump. */ typedef struct CheckPoint { XLogRecPtr redo; /* next RecPtr available when we began to * create CheckPoint (i.e. REDO start point) */ TimeLineID ThisTimeLineID; /* current TLI */ TimeLineID PrevTimeLineID; /* previous TLI, if this record begins a new * timeline (equals ThisTimeLineID otherwise) */ bool fullPageWrites; /* current full_page_writes */ uint32 nextXidEpoch; /* higher-order bits of nextXid */ TransactionId nextXid; /* next free XID */ Oid nextOid; /* next free OID */ MultiXactId nextMulti; /* next free MultiXactId */ MultiXactOffset nextMultiOffset; /* next free MultiXact offset */ TransactionId oldestXid; /* cluster-wide minimum datfrozenxid */ Oid oldestXidDB; /* database with minimum datfrozenxid */ MultiXactId oldestMulti; /* cluster-wide minimum datminmxid */ Oid oldestMultiDB; /* database with minimum datminmxid */ pg_time_t time; /* time stamp of checkpoint */ /* * Oldest XID still running. This is only needed to initialize hot standby * mode from an online checkpoint, so we only bother calculating this for * online checkpoints and only when wal_level is hot_standby. Otherwise * it's set to InvalidTransactionId. */ TransactionId oldestActiveXid; } CheckPoint; #elif PG_VERSION >= PG_VERSION_92 /* * Body of CheckPoint XLOG records. This is declared here because we keep * a copy of the latest one in pg_control for possible disaster recovery. * Changing this struct requires a PG_CONTROL_VERSION bump. */ typedef struct CheckPoint { XLogRecPtr redo; /* next RecPtr available when we began to * create CheckPoint (i.e. REDO start point) */ TimeLineID ThisTimeLineID; /* current TLI */ bool fullPageWrites; /* current full_page_writes */ uint32 nextXidEpoch; /* higher-order bits of nextXid */ TransactionId nextXid; /* next free XID */ Oid nextOid; /* next free OID */ MultiXactId nextMulti; /* next free MultiXactId */ MultiXactOffset nextMultiOffset; /* next free MultiXact offset */ TransactionId oldestXid; /* cluster-wide minimum datfrozenxid */ Oid oldestXidDB; /* database with minimum datfrozenxid */ pg_time_t time; /* time stamp of checkpoint */ /* * Oldest XID still running. This is only needed to initialize hot standby * mode from an online checkpoint, so we only bother calculating this for * online checkpoints and only when wal_level is hot_standby. Otherwise * it's set to InvalidTransactionId. */ TransactionId oldestActiveXid; } CheckPoint; #elif PG_VERSION >= PG_VERSION_90 /* * Body of CheckPoint XLOG records. This is declared here because we keep * a copy of the latest one in pg_control for possible disaster recovery. * Changing this struct requires a PG_CONTROL_VERSION bump. */ typedef struct CheckPoint { XLogRecPtr redo; /* next RecPtr available when we began to * create CheckPoint (i.e. REDO start point) */ TimeLineID ThisTimeLineID; /* current TLI */ uint32 nextXidEpoch; /* higher-order bits of nextXid */ TransactionId nextXid; /* next free XID */ Oid nextOid; /* next free OID */ MultiXactId nextMulti; /* next free MultiXactId */ MultiXactOffset nextMultiOffset; /* next free MultiXact offset */ TransactionId oldestXid; /* cluster-wide minimum datfrozenxid */ Oid oldestXidDB; /* database with minimum datfrozenxid */ pg_time_t time; /* time stamp of checkpoint */ /* * Oldest XID still running. This is only needed to initialize hot standby * mode from an online checkpoint, so we only bother calculating this for * online checkpoints and only when wal_level is hot_standby. Otherwise * it's set to InvalidTransactionId. */ TransactionId oldestActiveXid; } CheckPoint; #elif PG_VERSION >= PG_VERSION_84 /* * Body of CheckPoint XLOG records. This is declared here because we keep * a copy of the latest one in pg_control for possible disaster recovery. */ typedef struct CheckPoint { XLogRecPtr redo; /* next RecPtr available when we began to * create CheckPoint (i.e. REDO start point) */ TimeLineID ThisTimeLineID; /* current TLI */ uint32 nextXidEpoch; /* higher-order bits of nextXid */ TransactionId nextXid; /* next free XID */ Oid nextOid; /* next free OID */ MultiXactId nextMulti; /* next free MultiXactId */ MultiXactOffset nextMultiOffset; /* next free MultiXact offset */ pg_time_t time; /* time stamp of checkpoint */ } CheckPoint; #elif PG_VERSION >= PG_VERSION_83 /* * Body of CheckPoint XLOG records. This is declared here because we keep * a copy of the latest one in pg_control for possible disaster recovery. */ typedef struct CheckPoint { XLogRecPtr redo; /* next RecPtr available when we began to * create CheckPoint (i.e. REDO start point) */ TimeLineID ThisTimeLineID; /* current TLI */ uint32 nextXidEpoch; /* higher-order bits of nextXid */ TransactionId nextXid; /* next free XID */ Oid nextOid; /* next free OID */ MultiXactId nextMulti; /* next free MultiXactId */ MultiXactOffset nextMultiOffset; /* next free MultiXact offset */ time_t time; /* time stamp of checkpoint */ } CheckPoint; #endif // DBState enum // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_91 /* * System status indicator. Note this is stored in pg_control; if you change * it, you must bump PG_CONTROL_VERSION */ typedef enum DBState { DB_STARTUP = 0, DB_SHUTDOWNED, DB_SHUTDOWNED_IN_RECOVERY, DB_SHUTDOWNING, DB_IN_CRASH_RECOVERY, DB_IN_ARCHIVE_RECOVERY, DB_IN_PRODUCTION } DBState; #elif PG_VERSION >= PG_VERSION_83 /* System status indicator */ typedef enum DBState { DB_STARTUP = 0, DB_SHUTDOWNED, DB_SHUTDOWNING, DB_IN_CRASH_RECOVERY, DB_IN_ARCHIVE_RECOVERY, DB_IN_PRODUCTION } DBState; #endif // LOCALE_NAME_BUFLEN define // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_84 #elif PG_VERSION >= PG_VERSION_83 #define LOCALE_NAME_BUFLEN 128 #endif // ControlFileData type // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_12 /* * Contents of pg_control. */ typedef struct ControlFileData { /* * Unique system identifier --- to ensure we match up xlog files with the * installation that produced them. */ uint64 system_identifier; /* * Version identifier information. Keep these fields at the same offset, * especially pg_control_version; they won't be real useful if they move * around. (For historical reasons they must be 8 bytes into the file * rather than immediately at the front.) * * pg_control_version identifies the format of pg_control itself. * catalog_version_no identifies the format of the system catalogs. * * There are additional version identifiers in individual files; for * example, WAL logs contain per-page magic numbers that can serve as * version cues for the WAL log. */ uint32 pg_control_version; /* PG_CONTROL_VERSION */ uint32 catalog_version_no; /* see catversion.h */ /* * System status data */ DBState state; /* see enum above */ pg_time_t time; /* time stamp of last pg_control update */ XLogRecPtr checkPoint; /* last check point record ptr */ CheckPoint checkPointCopy; /* copy of last check point record */ XLogRecPtr unloggedLSN; /* current fake LSN value, for unlogged rels */ /* * These two values determine the minimum point we must recover up to * before starting up: * * minRecoveryPoint is updated to the latest replayed LSN whenever we * flush a data change during archive recovery. That guards against * starting archive recovery, aborting it, and restarting with an earlier * stop location. If we've already flushed data changes from WAL record X * to disk, we mustn't start up until we reach X again. Zero when not * doing archive recovery. * * backupStartPoint is the redo pointer of the backup start checkpoint, if * we are recovering from an online backup and haven't reached the end of * backup yet. It is reset to zero when the end of backup is reached, and * we mustn't start up before that. A boolean would suffice otherwise, but * we use the redo pointer as a cross-check when we see an end-of-backup * record, to make sure the end-of-backup record corresponds the base * backup we're recovering from. * * backupEndPoint is the backup end location, if we are recovering from an * online backup which was taken from the standby and haven't reached the * end of backup yet. It is initialized to the minimum recovery point in * pg_control which was backed up last. It is reset to zero when the end * of backup is reached, and we mustn't start up before that. * * If backupEndRequired is true, we know for sure that we're restoring * from a backup, and must see a backup-end record before we can safely * start up. If it's false, but backupStartPoint is set, a backup_label * file was found at startup but it may have been a leftover from a stray * pg_start_backup() call, not accompanied by pg_stop_backup(). */ XLogRecPtr minRecoveryPoint; TimeLineID minRecoveryPointTLI; XLogRecPtr backupStartPoint; XLogRecPtr backupEndPoint; bool backupEndRequired; /* * Parameter settings that determine if the WAL can be used for archival * or hot standby. */ int wal_level; bool wal_log_hints; int MaxConnections; int max_worker_processes; int max_wal_senders; int max_prepared_xacts; int max_locks_per_xact; bool track_commit_timestamp; /* * This data is used to check for hardware-architecture compatibility of * the database and the backend executable. We need not check endianness * explicitly, since the pg_control version will surely look wrong to a * machine of different endianness, but we do need to worry about MAXALIGN * and floating-point format. (Note: storage layout nominally also * depends on SHORTALIGN and INTALIGN, but in practice these are the same * on all architectures of interest.) * * Testing just one double value is not a very bulletproof test for * floating-point compatibility, but it will catch most cases. */ uint32 maxAlign; /* alignment requirement for tuples */ double floatFormat; /* constant 1234567.0 */ #define FLOATFORMAT_VALUE 1234567.0 /* * This data is used to make sure that configuration of this database is * compatible with the backend executable. */ uint32 blcksz; /* data block size for this DB */ uint32 relseg_size; /* blocks per segment of large relation */ uint32 xlog_blcksz; /* block size within WAL files */ uint32 xlog_seg_size; /* size of each WAL segment */ uint32 nameDataLen; /* catalog name field width */ uint32 indexMaxKeys; /* max number of columns in an index */ uint32 toast_max_chunk_size; /* chunk size in TOAST tables */ uint32 loblksize; /* chunk size in pg_largeobject */ /* flags indicating pass-by-value status of various types */ bool float4ByVal; /* float4 pass-by-value? */ bool float8ByVal; /* float8, int8, etc pass-by-value? */ /* Are data pages protected by checksums? Zero if no checksum version */ uint32 data_checksum_version; /* * Random nonce, used in authentication requests that need to proceed * based on values that are cluster-unique, like a SASL exchange that * failed at an early stage. */ char mock_authentication_nonce[MOCK_AUTH_NONCE_LEN]; /* CRC of all above ... MUST BE LAST! */ pg_crc32c crc; } ControlFileData; #elif PG_VERSION >= PG_VERSION_11 /* * Contents of pg_control. */ typedef struct ControlFileData { /* * Unique system identifier --- to ensure we match up xlog files with the * installation that produced them. */ uint64 system_identifier; /* * Version identifier information. Keep these fields at the same offset, * especially pg_control_version; they won't be real useful if they move * around. (For historical reasons they must be 8 bytes into the file * rather than immediately at the front.) * * pg_control_version identifies the format of pg_control itself. * catalog_version_no identifies the format of the system catalogs. * * There are additional version identifiers in individual files; for * example, WAL logs contain per-page magic numbers that can serve as * version cues for the WAL log. */ uint32 pg_control_version; /* PG_CONTROL_VERSION */ uint32 catalog_version_no; /* see catversion.h */ /* * System status data */ DBState state; /* see enum above */ pg_time_t time; /* time stamp of last pg_control update */ XLogRecPtr checkPoint; /* last check point record ptr */ CheckPoint checkPointCopy; /* copy of last check point record */ XLogRecPtr unloggedLSN; /* current fake LSN value, for unlogged rels */ /* * These two values determine the minimum point we must recover up to * before starting up: * * minRecoveryPoint is updated to the latest replayed LSN whenever we * flush a data change during archive recovery. That guards against * starting archive recovery, aborting it, and restarting with an earlier * stop location. If we've already flushed data changes from WAL record X * to disk, we mustn't start up until we reach X again. Zero when not * doing archive recovery. * * backupStartPoint is the redo pointer of the backup start checkpoint, if * we are recovering from an online backup and haven't reached the end of * backup yet. It is reset to zero when the end of backup is reached, and * we mustn't start up before that. A boolean would suffice otherwise, but * we use the redo pointer as a cross-check when we see an end-of-backup * record, to make sure the end-of-backup record corresponds the base * backup we're recovering from. * * backupEndPoint is the backup end location, if we are recovering from an * online backup which was taken from the standby and haven't reached the * end of backup yet. It is initialized to the minimum recovery point in * pg_control which was backed up last. It is reset to zero when the end * of backup is reached, and we mustn't start up before that. * * If backupEndRequired is true, we know for sure that we're restoring * from a backup, and must see a backup-end record before we can safely * start up. If it's false, but backupStartPoint is set, a backup_label * file was found at startup but it may have been a leftover from a stray * pg_start_backup() call, not accompanied by pg_stop_backup(). */ XLogRecPtr minRecoveryPoint; TimeLineID minRecoveryPointTLI; XLogRecPtr backupStartPoint; XLogRecPtr backupEndPoint; bool backupEndRequired; /* * Parameter settings that determine if the WAL can be used for archival * or hot standby. */ int wal_level; bool wal_log_hints; int MaxConnections; int max_worker_processes; int max_prepared_xacts; int max_locks_per_xact; bool track_commit_timestamp; /* * This data is used to check for hardware-architecture compatibility of * the database and the backend executable. We need not check endianness * explicitly, since the pg_control version will surely look wrong to a * machine of different endianness, but we do need to worry about MAXALIGN * and floating-point format. (Note: storage layout nominally also * depends on SHORTALIGN and INTALIGN, but in practice these are the same * on all architectures of interest.) * * Testing just one double value is not a very bulletproof test for * floating-point compatibility, but it will catch most cases. */ uint32 maxAlign; /* alignment requirement for tuples */ double floatFormat; /* constant 1234567.0 */ #define FLOATFORMAT_VALUE 1234567.0 /* * This data is used to make sure that configuration of this database is * compatible with the backend executable. */ uint32 blcksz; /* data block size for this DB */ uint32 relseg_size; /* blocks per segment of large relation */ uint32 xlog_blcksz; /* block size within WAL files */ uint32 xlog_seg_size; /* size of each WAL segment */ uint32 nameDataLen; /* catalog name field width */ uint32 indexMaxKeys; /* max number of columns in an index */ uint32 toast_max_chunk_size; /* chunk size in TOAST tables */ uint32 loblksize; /* chunk size in pg_largeobject */ /* flags indicating pass-by-value status of various types */ bool float4ByVal; /* float4 pass-by-value? */ bool float8ByVal; /* float8, int8, etc pass-by-value? */ /* Are data pages protected by checksums? Zero if no checksum version */ uint32 data_checksum_version; /* * Random nonce, used in authentication requests that need to proceed * based on values that are cluster-unique, like a SASL exchange that * failed at an early stage. */ char mock_authentication_nonce[MOCK_AUTH_NONCE_LEN]; /* CRC of all above ... MUST BE LAST! */ pg_crc32c crc; } ControlFileData; #elif PG_VERSION >= PG_VERSION_10 /* * Contents of pg_control. */ typedef struct ControlFileData { /* * Unique system identifier --- to ensure we match up xlog files with the * installation that produced them. */ uint64 system_identifier; /* * Version identifier information. Keep these fields at the same offset, * especially pg_control_version; they won't be real useful if they move * around. (For historical reasons they must be 8 bytes into the file * rather than immediately at the front.) * * pg_control_version identifies the format of pg_control itself. * catalog_version_no identifies the format of the system catalogs. * * There are additional version identifiers in individual files; for * example, WAL logs contain per-page magic numbers that can serve as * version cues for the WAL log. */ uint32 pg_control_version; /* PG_CONTROL_VERSION */ uint32 catalog_version_no; /* see catversion.h */ /* * System status data */ DBState state; /* see enum above */ pg_time_t time; /* time stamp of last pg_control update */ XLogRecPtr checkPoint; /* last check point record ptr */ XLogRecPtr prevCheckPoint; /* previous check point record ptr */ CheckPoint checkPointCopy; /* copy of last check point record */ XLogRecPtr unloggedLSN; /* current fake LSN value, for unlogged rels */ /* * These two values determine the minimum point we must recover up to * before starting up: * * minRecoveryPoint is updated to the latest replayed LSN whenever we * flush a data change during archive recovery. That guards against * starting archive recovery, aborting it, and restarting with an earlier * stop location. If we've already flushed data changes from WAL record X * to disk, we mustn't start up until we reach X again. Zero when not * doing archive recovery. * * backupStartPoint is the redo pointer of the backup start checkpoint, if * we are recovering from an online backup and haven't reached the end of * backup yet. It is reset to zero when the end of backup is reached, and * we mustn't start up before that. A boolean would suffice otherwise, but * we use the redo pointer as a cross-check when we see an end-of-backup * record, to make sure the end-of-backup record corresponds the base * backup we're recovering from. * * backupEndPoint is the backup end location, if we are recovering from an * online backup which was taken from the standby and haven't reached the * end of backup yet. It is initialized to the minimum recovery point in * pg_control which was backed up last. It is reset to zero when the end * of backup is reached, and we mustn't start up before that. * * If backupEndRequired is true, we know for sure that we're restoring * from a backup, and must see a backup-end record before we can safely * start up. If it's false, but backupStartPoint is set, a backup_label * file was found at startup but it may have been a leftover from a stray * pg_start_backup() call, not accompanied by pg_stop_backup(). */ XLogRecPtr minRecoveryPoint; TimeLineID minRecoveryPointTLI; XLogRecPtr backupStartPoint; XLogRecPtr backupEndPoint; bool backupEndRequired; /* * Parameter settings that determine if the WAL can be used for archival * or hot standby. */ int wal_level; bool wal_log_hints; int MaxConnections; int max_worker_processes; int max_prepared_xacts; int max_locks_per_xact; bool track_commit_timestamp; /* * This data is used to check for hardware-architecture compatibility of * the database and the backend executable. We need not check endianness * explicitly, since the pg_control version will surely look wrong to a * machine of different endianness, but we do need to worry about MAXALIGN * and floating-point format. (Note: storage layout nominally also * depends on SHORTALIGN and INTALIGN, but in practice these are the same * on all architectures of interest.) * * Testing just one double value is not a very bulletproof test for * floating-point compatibility, but it will catch most cases. */ uint32 maxAlign; /* alignment requirement for tuples */ double floatFormat; /* constant 1234567.0 */ #define FLOATFORMAT_VALUE 1234567.0 /* * This data is used to make sure that configuration of this database is * compatible with the backend executable. */ uint32 blcksz; /* data block size for this DB */ uint32 relseg_size; /* blocks per segment of large relation */ uint32 xlog_blcksz; /* block size within WAL files */ uint32 xlog_seg_size; /* size of each WAL segment */ uint32 nameDataLen; /* catalog name field width */ uint32 indexMaxKeys; /* max number of columns in an index */ uint32 toast_max_chunk_size; /* chunk size in TOAST tables */ uint32 loblksize; /* chunk size in pg_largeobject */ /* flags indicating pass-by-value status of various types */ bool float4ByVal; /* float4 pass-by-value? */ bool float8ByVal; /* float8, int8, etc pass-by-value? */ /* Are data pages protected by checksums? Zero if no checksum version */ uint32 data_checksum_version; /* * Random nonce, used in authentication requests that need to proceed * based on values that are cluster-unique, like a SASL exchange that * failed at an early stage. */ char mock_authentication_nonce[MOCK_AUTH_NONCE_LEN]; /* CRC of all above ... MUST BE LAST! */ pg_crc32c crc; } ControlFileData; #elif PG_VERSION >= PG_VERSION_95 /* * Contents of pg_control. * * NOTE: try to keep this under 512 bytes so that it will fit on one physical * sector of typical disk drives. This reduces the odds of corruption due to * power failure midway through a write. */ typedef struct ControlFileData { /* * Unique system identifier --- to ensure we match up xlog files with the * installation that produced them. */ uint64 system_identifier; /* * Version identifier information. Keep these fields at the same offset, * especially pg_control_version; they won't be real useful if they move * around. (For historical reasons they must be 8 bytes into the file * rather than immediately at the front.) * * pg_control_version identifies the format of pg_control itself. * catalog_version_no identifies the format of the system catalogs. * * There are additional version identifiers in individual files; for * example, WAL logs contain per-page magic numbers that can serve as * version cues for the WAL log. */ uint32 pg_control_version; /* PG_CONTROL_VERSION */ uint32 catalog_version_no; /* see catversion.h */ /* * System status data */ DBState state; /* see enum above */ pg_time_t time; /* time stamp of last pg_control update */ XLogRecPtr checkPoint; /* last check point record ptr */ XLogRecPtr prevCheckPoint; /* previous check point record ptr */ CheckPoint checkPointCopy; /* copy of last check point record */ XLogRecPtr unloggedLSN; /* current fake LSN value, for unlogged rels */ /* * These two values determine the minimum point we must recover up to * before starting up: * * minRecoveryPoint is updated to the latest replayed LSN whenever we * flush a data change during archive recovery. That guards against * starting archive recovery, aborting it, and restarting with an earlier * stop location. If we've already flushed data changes from WAL record X * to disk, we mustn't start up until we reach X again. Zero when not * doing archive recovery. * * backupStartPoint is the redo pointer of the backup start checkpoint, if * we are recovering from an online backup and haven't reached the end of * backup yet. It is reset to zero when the end of backup is reached, and * we mustn't start up before that. A boolean would suffice otherwise, but * we use the redo pointer as a cross-check when we see an end-of-backup * record, to make sure the end-of-backup record corresponds the base * backup we're recovering from. * * backupEndPoint is the backup end location, if we are recovering from an * online backup which was taken from the standby and haven't reached the * end of backup yet. It is initialized to the minimum recovery point in * pg_control which was backed up last. It is reset to zero when the end * of backup is reached, and we mustn't start up before that. * * If backupEndRequired is true, we know for sure that we're restoring * from a backup, and must see a backup-end record before we can safely * start up. If it's false, but backupStartPoint is set, a backup_label * file was found at startup but it may have been a leftover from a stray * pg_start_backup() call, not accompanied by pg_stop_backup(). */ XLogRecPtr minRecoveryPoint; TimeLineID minRecoveryPointTLI; XLogRecPtr backupStartPoint; XLogRecPtr backupEndPoint; bool backupEndRequired; /* * Parameter settings that determine if the WAL can be used for archival * or hot standby. */ int wal_level; bool wal_log_hints; int MaxConnections; int max_worker_processes; int max_prepared_xacts; int max_locks_per_xact; bool track_commit_timestamp; /* * This data is used to check for hardware-architecture compatibility of * the database and the backend executable. We need not check endianness * explicitly, since the pg_control version will surely look wrong to a * machine of different endianness, but we do need to worry about MAXALIGN * and floating-point format. (Note: storage layout nominally also * depends on SHORTALIGN and INTALIGN, but in practice these are the same * on all architectures of interest.) * * Testing just one double value is not a very bulletproof test for * floating-point compatibility, but it will catch most cases. */ uint32 maxAlign; /* alignment requirement for tuples */ double floatFormat; /* constant 1234567.0 */ #define FLOATFORMAT_VALUE 1234567.0 /* * This data is used to make sure that configuration of this database is * compatible with the backend executable. */ uint32 blcksz; /* data block size for this DB */ uint32 relseg_size; /* blocks per segment of large relation */ uint32 xlog_blcksz; /* block size within WAL files */ uint32 xlog_seg_size; /* size of each WAL segment */ uint32 nameDataLen; /* catalog name field width */ uint32 indexMaxKeys; /* max number of columns in an index */ uint32 toast_max_chunk_size; /* chunk size in TOAST tables */ uint32 loblksize; /* chunk size in pg_largeobject */ /* flag indicating internal format of timestamp, interval, time */ bool enableIntTimes; /* int64 storage enabled? */ /* flags indicating pass-by-value status of various types */ bool float4ByVal; /* float4 pass-by-value? */ bool float8ByVal; /* float8, int8, etc pass-by-value? */ /* Are data pages protected by checksums? Zero if no checksum version */ uint32 data_checksum_version; /* CRC of all above ... MUST BE LAST! */ pg_crc32c crc; } ControlFileData; #elif PG_VERSION >= PG_VERSION_94 /* * Contents of pg_control. * * NOTE: try to keep this under 512 bytes so that it will fit on one physical * sector of typical disk drives. This reduces the odds of corruption due to * power failure midway through a write. */ typedef struct ControlFileData { /* * Unique system identifier --- to ensure we match up xlog files with the * installation that produced them. */ uint64 system_identifier; /* * Version identifier information. Keep these fields at the same offset, * especially pg_control_version; they won't be real useful if they move * around. (For historical reasons they must be 8 bytes into the file * rather than immediately at the front.) * * pg_control_version identifies the format of pg_control itself. * catalog_version_no identifies the format of the system catalogs. * * There are additional version identifiers in individual files; for * example, WAL logs contain per-page magic numbers that can serve as * version cues for the WAL log. */ uint32 pg_control_version; /* PG_CONTROL_VERSION */ uint32 catalog_version_no; /* see catversion.h */ /* * System status data */ DBState state; /* see enum above */ pg_time_t time; /* time stamp of last pg_control update */ XLogRecPtr checkPoint; /* last check point record ptr */ XLogRecPtr prevCheckPoint; /* previous check point record ptr */ CheckPoint checkPointCopy; /* copy of last check point record */ XLogRecPtr unloggedLSN; /* current fake LSN value, for unlogged rels */ /* * These two values determine the minimum point we must recover up to * before starting up: * * minRecoveryPoint is updated to the latest replayed LSN whenever we * flush a data change during archive recovery. That guards against * starting archive recovery, aborting it, and restarting with an earlier * stop location. If we've already flushed data changes from WAL record X * to disk, we mustn't start up until we reach X again. Zero when not * doing archive recovery. * * backupStartPoint is the redo pointer of the backup start checkpoint, if * we are recovering from an online backup and haven't reached the end of * backup yet. It is reset to zero when the end of backup is reached, and * we mustn't start up before that. A boolean would suffice otherwise, but * we use the redo pointer as a cross-check when we see an end-of-backup * record, to make sure the end-of-backup record corresponds the base * backup we're recovering from. * * backupEndPoint is the backup end location, if we are recovering from an * online backup which was taken from the standby and haven't reached the * end of backup yet. It is initialized to the minimum recovery point in * pg_control which was backed up last. It is reset to zero when the end * of backup is reached, and we mustn't start up before that. * * If backupEndRequired is true, we know for sure that we're restoring * from a backup, and must see a backup-end record before we can safely * start up. If it's false, but backupStartPoint is set, a backup_label * file was found at startup but it may have been a leftover from a stray * pg_start_backup() call, not accompanied by pg_stop_backup(). */ XLogRecPtr minRecoveryPoint; TimeLineID minRecoveryPointTLI; XLogRecPtr backupStartPoint; XLogRecPtr backupEndPoint; bool backupEndRequired; /* * Parameter settings that determine if the WAL can be used for archival * or hot standby. */ int wal_level; bool wal_log_hints; int MaxConnections; int max_worker_processes; int max_prepared_xacts; int max_locks_per_xact; /* * This data is used to check for hardware-architecture compatibility of * the database and the backend executable. We need not check endianness * explicitly, since the pg_control version will surely look wrong to a * machine of different endianness, but we do need to worry about MAXALIGN * and floating-point format. (Note: storage layout nominally also * depends on SHORTALIGN and INTALIGN, but in practice these are the same * on all architectures of interest.) * * Testing just one double value is not a very bulletproof test for * floating-point compatibility, but it will catch most cases. */ uint32 maxAlign; /* alignment requirement for tuples */ double floatFormat; /* constant 1234567.0 */ #define FLOATFORMAT_VALUE 1234567.0 /* * This data is used to make sure that configuration of this database is * compatible with the backend executable. */ uint32 blcksz; /* data block size for this DB */ uint32 relseg_size; /* blocks per segment of large relation */ uint32 xlog_blcksz; /* block size within WAL files */ uint32 xlog_seg_size; /* size of each WAL segment */ uint32 nameDataLen; /* catalog name field width */ uint32 indexMaxKeys; /* max number of columns in an index */ uint32 toast_max_chunk_size; /* chunk size in TOAST tables */ uint32 loblksize; /* chunk size in pg_largeobject */ /* flag indicating internal format of timestamp, interval, time */ bool enableIntTimes; /* int64 storage enabled? */ /* flags indicating pass-by-value status of various types */ bool float4ByVal; /* float4 pass-by-value? */ bool float8ByVal; /* float8, int8, etc pass-by-value? */ /* Are data pages protected by checksums? Zero if no checksum version */ uint32 data_checksum_version; /* CRC of all above ... MUST BE LAST! */ pg_crc32 crc; } ControlFileData; #elif PG_VERSION >= PG_VERSION_93 /* * Contents of pg_control. * * NOTE: try to keep this under 512 bytes so that it will fit on one physical * sector of typical disk drives. This reduces the odds of corruption due to * power failure midway through a write. */ typedef struct ControlFileData { /* * Unique system identifier --- to ensure we match up xlog files with the * installation that produced them. */ uint64 system_identifier; /* * Version identifier information. Keep these fields at the same offset, * especially pg_control_version; they won't be real useful if they move * around. (For historical reasons they must be 8 bytes into the file * rather than immediately at the front.) * * pg_control_version identifies the format of pg_control itself. * catalog_version_no identifies the format of the system catalogs. * * There are additional version identifiers in individual files; for * example, WAL logs contain per-page magic numbers that can serve as * version cues for the WAL log. */ uint32 pg_control_version; /* PG_CONTROL_VERSION */ uint32 catalog_version_no; /* see catversion.h */ /* * System status data */ DBState state; /* see enum above */ pg_time_t time; /* time stamp of last pg_control update */ XLogRecPtr checkPoint; /* last check point record ptr */ XLogRecPtr prevCheckPoint; /* previous check point record ptr */ CheckPoint checkPointCopy; /* copy of last check point record */ XLogRecPtr unloggedLSN; /* current fake LSN value, for unlogged rels */ /* * These two values determine the minimum point we must recover up to * before starting up: * * minRecoveryPoint is updated to the latest replayed LSN whenever we * flush a data change during archive recovery. That guards against * starting archive recovery, aborting it, and restarting with an earlier * stop location. If we've already flushed data changes from WAL record X * to disk, we mustn't start up until we reach X again. Zero when not * doing archive recovery. * * backupStartPoint is the redo pointer of the backup start checkpoint, if * we are recovering from an online backup and haven't reached the end of * backup yet. It is reset to zero when the end of backup is reached, and * we mustn't start up before that. A boolean would suffice otherwise, but * we use the redo pointer as a cross-check when we see an end-of-backup * record, to make sure the end-of-backup record corresponds the base * backup we're recovering from. * * backupEndPoint is the backup end location, if we are recovering from an * online backup which was taken from the standby and haven't reached the * end of backup yet. It is initialized to the minimum recovery point in * pg_control which was backed up last. It is reset to zero when the end * of backup is reached, and we mustn't start up before that. * * If backupEndRequired is true, we know for sure that we're restoring * from a backup, and must see a backup-end record before we can safely * start up. If it's false, but backupStartPoint is set, a backup_label * file was found at startup but it may have been a leftover from a stray * pg_start_backup() call, not accompanied by pg_stop_backup(). */ XLogRecPtr minRecoveryPoint; TimeLineID minRecoveryPointTLI; XLogRecPtr backupStartPoint; XLogRecPtr backupEndPoint; bool backupEndRequired; /* * Parameter settings that determine if the WAL can be used for archival * or hot standby. */ int wal_level; int MaxConnections; int max_prepared_xacts; int max_locks_per_xact; /* * This data is used to check for hardware-architecture compatibility of * the database and the backend executable. We need not check endianness * explicitly, since the pg_control version will surely look wrong to a * machine of different endianness, but we do need to worry about MAXALIGN * and floating-point format. (Note: storage layout nominally also * depends on SHORTALIGN and INTALIGN, but in practice these are the same * on all architectures of interest.) * * Testing just one double value is not a very bulletproof test for * floating-point compatibility, but it will catch most cases. */ uint32 maxAlign; /* alignment requirement for tuples */ double floatFormat; /* constant 1234567.0 */ #define FLOATFORMAT_VALUE 1234567.0 /* * This data is used to make sure that configuration of this database is * compatible with the backend executable. */ uint32 blcksz; /* data block size for this DB */ uint32 relseg_size; /* blocks per segment of large relation */ uint32 xlog_blcksz; /* block size within WAL files */ uint32 xlog_seg_size; /* size of each WAL segment */ uint32 nameDataLen; /* catalog name field width */ uint32 indexMaxKeys; /* max number of columns in an index */ uint32 toast_max_chunk_size; /* chunk size in TOAST tables */ /* flag indicating internal format of timestamp, interval, time */ bool enableIntTimes; /* int64 storage enabled? */ /* flags indicating pass-by-value status of various types */ bool float4ByVal; /* float4 pass-by-value? */ bool float8ByVal; /* float8, int8, etc pass-by-value? */ /* Are data pages protected by checksums? Zero if no checksum version */ uint32 data_checksum_version; /* CRC of all above ... MUST BE LAST! */ pg_crc32 crc; } ControlFileData; #elif PG_VERSION >= PG_VERSION_92 /* * Contents of pg_control. * * NOTE: try to keep this under 512 bytes so that it will fit on one physical * sector of typical disk drives. This reduces the odds of corruption due to * power failure midway through a write. */ typedef struct ControlFileData { /* * Unique system identifier --- to ensure we match up xlog files with the * installation that produced them. */ uint64 system_identifier; /* * Version identifier information. Keep these fields at the same offset, * especially pg_control_version; they won't be real useful if they move * around. (For historical reasons they must be 8 bytes into the file * rather than immediately at the front.) * * pg_control_version identifies the format of pg_control itself. * catalog_version_no identifies the format of the system catalogs. * * There are additional version identifiers in individual files; for * example, WAL logs contain per-page magic numbers that can serve as * version cues for the WAL log. */ uint32 pg_control_version; /* PG_CONTROL_VERSION */ uint32 catalog_version_no; /* see catversion.h */ /* * System status data */ DBState state; /* see enum above */ pg_time_t time; /* time stamp of last pg_control update */ XLogRecPtr checkPoint; /* last check point record ptr */ XLogRecPtr prevCheckPoint; /* previous check point record ptr */ CheckPoint checkPointCopy; /* copy of last check point record */ /* * These two values determine the minimum point we must recover up to * before starting up: * * minRecoveryPoint is updated to the latest replayed LSN whenever we * flush a data change during archive recovery. That guards against * starting archive recovery, aborting it, and restarting with an earlier * stop location. If we've already flushed data changes from WAL record X * to disk, we mustn't start up until we reach X again. Zero when not * doing archive recovery. * * backupStartPoint is the redo pointer of the backup start checkpoint, if * we are recovering from an online backup and haven't reached the end of * backup yet. It is reset to zero when the end of backup is reached, and * we mustn't start up before that. A boolean would suffice otherwise, but * we use the redo pointer as a cross-check when we see an end-of-backup * record, to make sure the end-of-backup record corresponds the base * backup we're recovering from. * * backupEndPoint is the backup end location, if we are recovering from an * online backup which was taken from the standby and haven't reached the * end of backup yet. It is initialized to the minimum recovery point in * pg_control which was backed up last. It is reset to zero when the end * of backup is reached, and we mustn't start up before that. * * If backupEndRequired is true, we know for sure that we're restoring * from a backup, and must see a backup-end record before we can safely * start up. If it's false, but backupStartPoint is set, a backup_label * file was found at startup but it may have been a leftover from a stray * pg_start_backup() call, not accompanied by pg_stop_backup(). */ XLogRecPtr minRecoveryPoint; XLogRecPtr backupStartPoint; XLogRecPtr backupEndPoint; bool backupEndRequired; /* * Parameter settings that determine if the WAL can be used for archival * or hot standby. */ int wal_level; int MaxConnections; int max_prepared_xacts; int max_locks_per_xact; /* * This data is used to check for hardware-architecture compatibility of * the database and the backend executable. We need not check endianness * explicitly, since the pg_control version will surely look wrong to a * machine of different endianness, but we do need to worry about MAXALIGN * and floating-point format. (Note: storage layout nominally also * depends on SHORTALIGN and INTALIGN, but in practice these are the same * on all architectures of interest.) * * Testing just one double value is not a very bulletproof test for * floating-point compatibility, but it will catch most cases. */ uint32 maxAlign; /* alignment requirement for tuples */ double floatFormat; /* constant 1234567.0 */ #define FLOATFORMAT_VALUE 1234567.0 /* * This data is used to make sure that configuration of this database is * compatible with the backend executable. */ uint32 blcksz; /* data block size for this DB */ uint32 relseg_size; /* blocks per segment of large relation */ uint32 xlog_blcksz; /* block size within WAL files */ uint32 xlog_seg_size; /* size of each WAL segment */ uint32 nameDataLen; /* catalog name field width */ uint32 indexMaxKeys; /* max number of columns in an index */ uint32 toast_max_chunk_size; /* chunk size in TOAST tables */ /* flag indicating internal format of timestamp, interval, time */ bool enableIntTimes; /* int64 storage enabled? */ /* flags indicating pass-by-value status of various types */ bool float4ByVal; /* float4 pass-by-value? */ bool float8ByVal; /* float8, int8, etc pass-by-value? */ /* CRC of all above ... MUST BE LAST! */ pg_crc32 crc; } ControlFileData; #elif PG_VERSION >= PG_VERSION_90 /* * Contents of pg_control. * * NOTE: try to keep this under 512 bytes so that it will fit on one physical * sector of typical disk drives. This reduces the odds of corruption due to * power failure midway through a write. */ typedef struct ControlFileData { /* * Unique system identifier --- to ensure we match up xlog files with the * installation that produced them. */ uint64 system_identifier; /* * Version identifier information. Keep these fields at the same offset, * especially pg_control_version; they won't be real useful if they move * around. (For historical reasons they must be 8 bytes into the file * rather than immediately at the front.) * * pg_control_version identifies the format of pg_control itself. * catalog_version_no identifies the format of the system catalogs. * * There are additional version identifiers in individual files; for * example, WAL logs contain per-page magic numbers that can serve as * version cues for the WAL log. */ uint32 pg_control_version; /* PG_CONTROL_VERSION */ uint32 catalog_version_no; /* see catversion.h */ /* * System status data */ DBState state; /* see enum above */ pg_time_t time; /* time stamp of last pg_control update */ XLogRecPtr checkPoint; /* last check point record ptr */ XLogRecPtr prevCheckPoint; /* previous check point record ptr */ CheckPoint checkPointCopy; /* copy of last check point record */ /* * These two values determine the minimum point we must recover up to * before starting up: * * minRecoveryPoint is updated to the latest replayed LSN whenever we * flush a data change during archive recovery. That guards against * starting archive recovery, aborting it, and restarting with an earlier * stop location. If we've already flushed data changes from WAL record X * to disk, we mustn't start up until we reach X again. Zero when not * doing archive recovery. * * backupStartPoint is the redo pointer of the backup start checkpoint, if * we are recovering from an online backup and haven't reached the end of * backup yet. It is reset to zero when the end of backup is reached, and * we mustn't start up before that. A boolean would suffice otherwise, but * we use the redo pointer as a cross-check when we see an end-of-backup * record, to make sure the end-of-backup record corresponds the base * backup we're recovering from. */ XLogRecPtr minRecoveryPoint; XLogRecPtr backupStartPoint; /* * Parameter settings that determine if the WAL can be used for archival * or hot standby. */ int wal_level; int MaxConnections; int max_prepared_xacts; int max_locks_per_xact; /* * This data is used to check for hardware-architecture compatibility of * the database and the backend executable. We need not check endianness * explicitly, since the pg_control version will surely look wrong to a * machine of different endianness, but we do need to worry about MAXALIGN * and floating-point format. (Note: storage layout nominally also * depends on SHORTALIGN and INTALIGN, but in practice these are the same * on all architectures of interest.) * * Testing just one double value is not a very bulletproof test for * floating-point compatibility, but it will catch most cases. */ uint32 maxAlign; /* alignment requirement for tuples */ double floatFormat; /* constant 1234567.0 */ #define FLOATFORMAT_VALUE 1234567.0 /* * This data is used to make sure that configuration of this database is * compatible with the backend executable. */ uint32 blcksz; /* data block size for this DB */ uint32 relseg_size; /* blocks per segment of large relation */ uint32 xlog_blcksz; /* block size within WAL files */ uint32 xlog_seg_size; /* size of each WAL segment */ uint32 nameDataLen; /* catalog name field width */ uint32 indexMaxKeys; /* max number of columns in an index */ uint32 toast_max_chunk_size; /* chunk size in TOAST tables */ /* flag indicating internal format of timestamp, interval, time */ bool enableIntTimes; /* int64 storage enabled? */ /* flags indicating pass-by-value status of various types */ bool float4ByVal; /* float4 pass-by-value? */ bool float8ByVal; /* float8, int8, etc pass-by-value? */ /* CRC of all above ... MUST BE LAST! */ pg_crc32 crc; } ControlFileData; #elif PG_VERSION >= PG_VERSION_84 /* * Contents of pg_control. * * NOTE: try to keep this under 512 bytes so that it will fit on one physical * sector of typical disk drives. This reduces the odds of corruption due to * power failure midway through a write. */ typedef struct ControlFileData { /* * Unique system identifier --- to ensure we match up xlog files with the * installation that produced them. */ uint64 system_identifier; /* * Version identifier information. Keep these fields at the same offset, * especially pg_control_version; they won't be real useful if they move * around. (For historical reasons they must be 8 bytes into the file * rather than immediately at the front.) * * pg_control_version identifies the format of pg_control itself. * catalog_version_no identifies the format of the system catalogs. * * There are additional version identifiers in individual files; for * example, WAL logs contain per-page magic numbers that can serve as * version cues for the WAL log. */ uint32 pg_control_version; /* PG_CONTROL_VERSION */ uint32 catalog_version_no; /* see catversion.h */ /* * System status data */ DBState state; /* see enum above */ pg_time_t time; /* time stamp of last pg_control update */ XLogRecPtr checkPoint; /* last check point record ptr */ XLogRecPtr prevCheckPoint; /* previous check point record ptr */ CheckPoint checkPointCopy; /* copy of last check point record */ XLogRecPtr minRecoveryPoint; /* must replay xlog to here */ /* * This data is used to check for hardware-architecture compatibility of * the database and the backend executable. We need not check endianness * explicitly, since the pg_control version will surely look wrong to a * machine of different endianness, but we do need to worry about MAXALIGN * and floating-point format. (Note: storage layout nominally also * depends on SHORTALIGN and INTALIGN, but in practice these are the same * on all architectures of interest.) * * Testing just one double value is not a very bulletproof test for * floating-point compatibility, but it will catch most cases. */ uint32 maxAlign; /* alignment requirement for tuples */ double floatFormat; /* constant 1234567.0 */ #define FLOATFORMAT_VALUE 1234567.0 /* * This data is used to make sure that configuration of this database is * compatible with the backend executable. */ uint32 blcksz; /* data block size for this DB */ uint32 relseg_size; /* blocks per segment of large relation */ uint32 xlog_blcksz; /* block size within WAL files */ uint32 xlog_seg_size; /* size of each WAL segment */ uint32 nameDataLen; /* catalog name field width */ uint32 indexMaxKeys; /* max number of columns in an index */ uint32 toast_max_chunk_size; /* chunk size in TOAST tables */ /* flag indicating internal format of timestamp, interval, time */ bool enableIntTimes; /* int64 storage enabled? */ /* flags indicating pass-by-value status of various types */ bool float4ByVal; /* float4 pass-by-value? */ bool float8ByVal; /* float8, int8, etc pass-by-value? */ /* CRC of all above ... MUST BE LAST! */ pg_crc32 crc; } ControlFileData; #elif PG_VERSION >= PG_VERSION_83 /* * Contents of pg_control. * * NOTE: try to keep this under 512 bytes so that it will fit on one physical * sector of typical disk drives. This reduces the odds of corruption due to * power failure midway through a write. Currently it fits comfortably, * but we could probably reduce LOCALE_NAME_BUFLEN if things get tight. */ typedef struct ControlFileData { /* * Unique system identifier --- to ensure we match up xlog files with the * installation that produced them. */ uint64 system_identifier; /* * Version identifier information. Keep these fields at the same offset, * especially pg_control_version; they won't be real useful if they move * around. (For historical reasons they must be 8 bytes into the file * rather than immediately at the front.) * * pg_control_version identifies the format of pg_control itself. * catalog_version_no identifies the format of the system catalogs. * * There are additional version identifiers in individual files; for * example, WAL logs contain per-page magic numbers that can serve as * version cues for the WAL log. */ uint32 pg_control_version; /* PG_CONTROL_VERSION */ uint32 catalog_version_no; /* see catversion.h */ /* * System status data */ DBState state; /* see enum above */ time_t time; /* time stamp of last pg_control update */ XLogRecPtr checkPoint; /* last check point record ptr */ XLogRecPtr prevCheckPoint; /* previous check point record ptr */ CheckPoint checkPointCopy; /* copy of last check point record */ XLogRecPtr minRecoveryPoint; /* must replay xlog to here */ /* * This data is used to check for hardware-architecture compatibility of * the database and the backend executable. We need not check endianness * explicitly, since the pg_control version will surely look wrong to a * machine of different endianness, but we do need to worry about MAXALIGN * and floating-point format. (Note: storage layout nominally also * depends on SHORTALIGN and INTALIGN, but in practice these are the same * on all architectures of interest.) * * Testing just one double value is not a very bulletproof test for * floating-point compatibility, but it will catch most cases. */ uint32 maxAlign; /* alignment requirement for tuples */ double floatFormat; /* constant 1234567.0 */ #define FLOATFORMAT_VALUE 1234567.0 /* * This data is used to make sure that configuration of this database is * compatible with the backend executable. */ uint32 blcksz; /* data block size for this DB */ uint32 relseg_size; /* blocks per segment of large relation */ uint32 xlog_blcksz; /* block size within WAL files */ uint32 xlog_seg_size; /* size of each WAL segment */ uint32 nameDataLen; /* catalog name field width */ uint32 indexMaxKeys; /* max number of columns in an index */ uint32 toast_max_chunk_size; /* chunk size in TOAST tables */ /* flag indicating internal format of timestamp, interval, time */ uint32 enableIntTimes; /* int64 storage enabled? */ /* active locales */ uint32 localeBuflen; char lc_collate[LOCALE_NAME_BUFLEN]; char lc_ctype[LOCALE_NAME_BUFLEN]; /* CRC of all above ... MUST BE LAST! */ pg_crc32 crc; } ControlFileData; #endif /*********************************************************************************************************************************** Types from src/include/access/xlog_internal.h ***********************************************************************************************************************************/ // XLOG_PAGE_MAGIC define // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_12 #define XLOG_PAGE_MAGIC 0xD101 /* can be used as WAL version indicator */ #elif PG_VERSION >= PG_VERSION_11 #define XLOG_PAGE_MAGIC 0xD098 /* can be used as WAL version indicator */ #elif PG_VERSION >= PG_VERSION_10 #define XLOG_PAGE_MAGIC 0xD097 /* can be used as WAL version indicator */ #elif PG_VERSION >= PG_VERSION_96 #define XLOG_PAGE_MAGIC 0xD093 /* can be used as WAL version indicator */ #elif PG_VERSION >= PG_VERSION_95 #define XLOG_PAGE_MAGIC 0xD087 /* can be used as WAL version indicator */ #elif PG_VERSION >= PG_VERSION_94 #define XLOG_PAGE_MAGIC 0xD07E /* can be used as WAL version indicator */ #elif PG_VERSION >= PG_VERSION_93 #define XLOG_PAGE_MAGIC 0xD075 /* can be used as WAL version indicator */ #elif PG_VERSION >= PG_VERSION_92 #define XLOG_PAGE_MAGIC 0xD071 /* can be used as WAL version indicator */ #elif PG_VERSION >= PG_VERSION_91 #define XLOG_PAGE_MAGIC 0xD066 /* can be used as WAL version indicator */ #elif PG_VERSION >= PG_VERSION_90 #define XLOG_PAGE_MAGIC 0xD064 /* can be used as WAL version indicator */ #elif PG_VERSION >= PG_VERSION_84 #define XLOG_PAGE_MAGIC 0xD063 /* can be used as WAL version indicator */ #elif PG_VERSION >= PG_VERSION_83 #define XLOG_PAGE_MAGIC 0xD062 /* can be used as WAL version indicator */ #endif // XLogPageHeaderData type // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_93 /* * Each page of XLOG file has a header like this: */ typedef struct XLogPageHeaderData { uint16 xlp_magic; /* magic value for correctness checks */ uint16 xlp_info; /* flag bits, see below */ TimeLineID xlp_tli; /* TimeLineID of first record on page */ XLogRecPtr xlp_pageaddr; /* XLOG address of this page */ /* * When there is not enough space on current page for whole record, we * continue on the next page. xlp_rem_len is the number of bytes * remaining from a previous page. * * Note that xl_rem_len includes backup-block data; that is, it tracks * xl_tot_len not xl_len in the initial header. Also note that the * continuation data isn't necessarily aligned. */ uint32 xlp_rem_len; /* total len of remaining data for record */ } XLogPageHeaderData; #elif PG_VERSION >= PG_VERSION_83 /* * Each page of XLOG file has a header like this: */ typedef struct XLogPageHeaderData { uint16 xlp_magic; /* magic value for correctness checks */ uint16 xlp_info; /* flag bits, see below */ TimeLineID xlp_tli; /* TimeLineID of first record on page */ XLogRecPtr xlp_pageaddr; /* XLOG address of this page */ } XLogPageHeaderData; #endif // XLogLongPageHeaderData type // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_83 /* * When the XLP_LONG_HEADER flag is set, we store additional fields in the * page header. (This is ordinarily done just in the first page of an * XLOG file.) The additional fields serve to identify the file accurately. */ typedef struct XLogLongPageHeaderData { XLogPageHeaderData std; /* standard header fields */ uint64 xlp_sysid; /* system identifier from pg_control */ uint32 xlp_seg_size; /* just as a cross-check */ uint32 xlp_xlog_blcksz; /* just as a cross-check */ } XLogLongPageHeaderData; #endif // XLP_LONG_HEADER define // --------------------------------------------------------------------------------------------------------------------------------- #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_83 /* This flag indicates a "long" page header */ #define XLP_LONG_HEADER 0x0002 #endif pgbackrest-release-2.24/src/postgres/interface/version.h000066400000000000000000000152431362531507100234470ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL Version Interface ***********************************************************************************************************************************/ #ifndef POSTGRES_INTERFACE_VERSION_H #define POSTGRES_INTERFACE_VERSION_H #include "postgres/interface.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ uint32_t pgInterfaceCatalogVersion083(void); bool pgInterfaceControlIs083(const unsigned char *controlFile); PgControl pgInterfaceControl083(const unsigned char *controlFile); uint32_t pgInterfaceControlVersion083(void); bool pgInterfaceWalIs083(const unsigned char *walFile); PgWal pgInterfaceWal083(const unsigned char *controlFile); uint32_t pgInterfaceCatalogVersion084(void); bool pgInterfaceControlIs084(const unsigned char *controlFile); PgControl pgInterfaceControl084(const unsigned char *controlFile); uint32_t pgInterfaceControlVersion084(void); bool pgInterfaceWalIs084(const unsigned char *walFile); PgWal pgInterfaceWal084(const unsigned char *controlFile); uint32_t pgInterfaceCatalogVersion090(void); bool pgInterfaceControlIs090(const unsigned char *controlFile); PgControl pgInterfaceControl090(const unsigned char *controlFile); uint32_t pgInterfaceControlVersion090(void); bool pgInterfaceWalIs090(const unsigned char *walFile); PgWal pgInterfaceWal090(const unsigned char *controlFile); uint32_t pgInterfaceCatalogVersion091(void); bool pgInterfaceControlIs091(const unsigned char *controlFile); PgControl pgInterfaceControl091(const unsigned char *controlFile); uint32_t pgInterfaceControlVersion091(void); bool pgInterfaceWalIs091(const unsigned char *walFile); PgWal pgInterfaceWal091(const unsigned char *controlFile); uint32_t pgInterfaceCatalogVersion092(void); bool pgInterfaceControlIs092(const unsigned char *controlFile); PgControl pgInterfaceControl092(const unsigned char *controlFile); uint32_t pgInterfaceControlVersion092(void); bool pgInterfaceWalIs092(const unsigned char *walFile); PgWal pgInterfaceWal092(const unsigned char *controlFile); uint32_t pgInterfaceCatalogVersion093(void); bool pgInterfaceControlIs093(const unsigned char *controlFile); PgControl pgInterfaceControl093(const unsigned char *controlFile); uint32_t pgInterfaceControlVersion093(void); bool pgInterfaceWalIs093(const unsigned char *walFile); PgWal pgInterfaceWal093(const unsigned char *controlFile); uint32_t pgInterfaceCatalogVersion094(void); bool pgInterfaceControlIs094(const unsigned char *controlFile); PgControl pgInterfaceControl094(const unsigned char *controlFile); uint32_t pgInterfaceControlVersion094(void); bool pgInterfaceWalIs094(const unsigned char *walFile); PgWal pgInterfaceWal094(const unsigned char *controlFile); uint32_t pgInterfaceCatalogVersion095(void); bool pgInterfaceControlIs095(const unsigned char *controlFile); PgControl pgInterfaceControl095(const unsigned char *controlFile); uint32_t pgInterfaceControlVersion095(void); bool pgInterfaceWalIs095(const unsigned char *walFile); PgWal pgInterfaceWal095(const unsigned char *controlFile); uint32_t pgInterfaceCatalogVersion096(void); bool pgInterfaceControlIs096(const unsigned char *controlFile); PgControl pgInterfaceControl096(const unsigned char *controlFile); uint32_t pgInterfaceControlVersion096(void); bool pgInterfaceWalIs096(const unsigned char *walFile); PgWal pgInterfaceWal096(const unsigned char *controlFile); uint32_t pgInterfaceCatalogVersion100(void); bool pgInterfaceControlIs100(const unsigned char *controlFile); PgControl pgInterfaceControl100(const unsigned char *controlFile); uint32_t pgInterfaceControlVersion100(void); bool pgInterfaceWalIs100(const unsigned char *walFile); PgWal pgInterfaceWal100(const unsigned char *controlFile); uint32_t pgInterfaceCatalogVersion110(void); bool pgInterfaceControlIs110(const unsigned char *controlFile); PgControl pgInterfaceControl110(const unsigned char *controlFile); uint32_t pgInterfaceControlVersion110(void); bool pgInterfaceWalIs110(const unsigned char *walFile); PgWal pgInterfaceWal110(const unsigned char *controlFile); uint32_t pgInterfaceCatalogVersion120(void); bool pgInterfaceControlIs120(const unsigned char *controlFile); PgControl pgInterfaceControl120(const unsigned char *controlFile); uint32_t pgInterfaceControlVersion120(void); bool pgInterfaceWalIs120(const unsigned char *walFile); PgWal pgInterfaceWal120(const unsigned char *controlFile); /*********************************************************************************************************************************** Test Functions ***********************************************************************************************************************************/ #ifdef DEBUG void pgInterfaceControlTest083(PgControl pgControl, unsigned char *buffer); void pgInterfaceWalTest083(PgWal pgWal, unsigned char *buffer); void pgInterfaceControlTest084(PgControl pgControl, unsigned char *buffer); void pgInterfaceWalTest084(PgWal pgWal, unsigned char *buffer); void pgInterfaceControlTest090(PgControl pgControl, unsigned char *buffer); void pgInterfaceWalTest090(PgWal pgWal, unsigned char *buffer); void pgInterfaceControlTest091(PgControl pgControl, unsigned char *buffer); void pgInterfaceWalTest091(PgWal pgWal, unsigned char *buffer); void pgInterfaceControlTest092(PgControl pgControl, unsigned char *buffer); void pgInterfaceWalTest092(PgWal pgWal, unsigned char *buffer); void pgInterfaceControlTest093(PgControl pgControl, unsigned char *buffer); void pgInterfaceWalTest093(PgWal pgWal, unsigned char *buffer); void pgInterfaceControlTest094(PgControl pgControl, unsigned char *buffer); void pgInterfaceWalTest094(PgWal pgWal, unsigned char *buffer); void pgInterfaceControlTest095(PgControl pgControl, unsigned char *buffer); void pgInterfaceWalTest095(PgWal pgWal, unsigned char *buffer); void pgInterfaceControlTest096(PgControl pgControl, unsigned char *buffer); void pgInterfaceWalTest096(PgWal pgWal, unsigned char *buffer); void pgInterfaceControlTest100(PgControl pgControl, unsigned char *buffer); void pgInterfaceWalTest100(PgWal pgWal, unsigned char *buffer); void pgInterfaceControlTest110(PgControl pgControl, unsigned char *buffer); void pgInterfaceWalTest110(PgWal pgWal, unsigned char *buffer); void pgInterfaceControlTest120(PgControl pgControl, unsigned char *buffer); void pgInterfaceWalTest120(PgWal pgWal, unsigned char *buffer); #endif #endif pgbackrest-release-2.24/src/postgres/interface/version.intern.h000066400000000000000000000460331362531507100247460ustar00rootroot00000000000000/*********************************************************************************************************************************** PostgreSQL Version Interface Macros for building version-specific functions that interface with the types in version.auto.h. Due to the way PostgreSQL types evolve over time, this seems to be the easiest way to extract information from them. These macros should be kept as simple as possible, with most of the logic contained in postgres/interface.c. Each version of PostgreSQL will need a vXXX.c file to contain the version-specific functions created by these macros. ***********************************************************************************************************************************/ #ifndef POSTGRES_INTERFACE_IMPLEMENTATION_H #define POSTGRES_INTERFACE_IMPLEMENTATION_H #include "common/debug.h" #include "postgres/interface/version.h" #include "postgres/version.h" #include "postgres/interface/version.auto.h" /*********************************************************************************************************************************** Get the catalog version ***********************************************************************************************************************************/ #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_83 #define PG_INTERFACE_CATALOG_VERSION(version) \ uint32_t \ pgInterfaceCatalogVersion##version(void) \ { \ return CATALOG_VERSION_NO; \ } #endif /*********************************************************************************************************************************** Determine if the supplied pg_control is for this version of PostgreSQL ***********************************************************************************************************************************/ #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_83 #define PG_INTERFACE_CONTROL_IS(version) \ bool \ pgInterfaceControlIs##version(const unsigned char *controlFile) \ { \ ASSERT(controlFile != NULL); \ \ return \ ((ControlFileData *)controlFile)->pg_control_version == PG_CONTROL_VERSION && \ ((ControlFileData *)controlFile)->catalog_version_no == CATALOG_VERSION_NO; \ } #endif /*********************************************************************************************************************************** Read the version specific pg_control into a general data structure ***********************************************************************************************************************************/ #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_93 #define PG_INTERFACE_CONTROL(version) \ PgControl \ pgInterfaceControl##version(const unsigned char *controlFile) \ { \ ASSERT(controlFile != NULL); \ ASSERT(pgInterfaceControlIs##version(controlFile)); \ \ return (PgControl) \ { \ .systemId = ((ControlFileData *)controlFile)->system_identifier, \ .pageSize = ((ControlFileData *)controlFile)->blcksz, \ .walSegmentSize = ((ControlFileData *)controlFile)->xlog_seg_size, \ .pageChecksum = ((ControlFileData *)controlFile)->data_checksum_version != 0, \ }; \ } #elif PG_VERSION >= PG_VERSION_83 #define PG_INTERFACE_CONTROL(version) \ PgControl \ pgInterfaceControl##version(const unsigned char *controlFile) \ { \ ASSERT(controlFile != NULL); \ ASSERT(pgInterfaceControlIs##version(controlFile)); \ \ return (PgControl) \ { \ .systemId = ((ControlFileData *)controlFile)->system_identifier, \ .pageSize = ((ControlFileData *)controlFile)->blcksz, \ .walSegmentSize = ((ControlFileData *)controlFile)->xlog_seg_size, \ }; \ } #endif /*********************************************************************************************************************************** Get the control version ***********************************************************************************************************************************/ #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_83 #define PG_INTERFACE_CONTROL_VERSION(version) \ uint32_t \ pgInterfaceControlVersion##version(void) \ { \ return PG_CONTROL_VERSION; \ } #endif /*********************************************************************************************************************************** Create a pg_control file for testing ***********************************************************************************************************************************/ #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_93 #define PG_INTERFACE_CONTROL_TEST(version) \ void \ pgInterfaceControlTest##version(PgControl pgControl, unsigned char *buffer) \ { \ ASSERT(buffer != NULL); \ \ *(ControlFileData *)buffer = (ControlFileData) \ { \ .system_identifier = pgControl.systemId, \ .pg_control_version = PG_CONTROL_VERSION, \ .catalog_version_no = CATALOG_VERSION_NO, \ .blcksz = pgControl.pageSize, \ .xlog_seg_size = pgControl.walSegmentSize, \ .data_checksum_version = pgControl.pageChecksum, \ }; \ } #elif PG_VERSION >= PG_VERSION_83 #define PG_INTERFACE_CONTROL_TEST(version) \ void \ pgInterfaceControlTest##version(PgControl pgControl, unsigned char *buffer) \ { \ ASSERT(buffer != NULL); \ ASSERT(!pgControl.pageChecksum); \ \ *(ControlFileData *)buffer = (ControlFileData) \ { \ .system_identifier = pgControl.systemId, \ .pg_control_version = PG_CONTROL_VERSION, \ .catalog_version_no = CATALOG_VERSION_NO, \ .blcksz = pgControl.pageSize, \ .xlog_seg_size = pgControl.walSegmentSize, \ }; \ } #endif /*********************************************************************************************************************************** Determine if the supplied WAL is for this version of PostgreSQL ***********************************************************************************************************************************/ #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_83 #define PG_INTERFACE_WAL_IS(version) \ bool \ pgInterfaceWalIs##version(const unsigned char *walFile) \ { \ ASSERT(walFile != NULL); \ \ return ((XLogPageHeaderData *)walFile)->xlp_magic == XLOG_PAGE_MAGIC; \ } #endif /*********************************************************************************************************************************** Read the version specific WAL header into a general data structure ***********************************************************************************************************************************/ #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_83 #define PG_INTERFACE_WAL(version) \ PgWal \ pgInterfaceWal##version(const unsigned char *walFile) \ { \ ASSERT(walFile != NULL); \ ASSERT(pgInterfaceWalIs##version(walFile)); \ \ return (PgWal) \ { \ .systemId = ((XLogLongPageHeaderData *)walFile)->xlp_sysid, \ }; \ } #endif /*********************************************************************************************************************************** Create a WAL file file for testing ***********************************************************************************************************************************/ #if PG_VERSION > PG_VERSION_MAX #elif PG_VERSION >= PG_VERSION_83 #define PG_INTERFACE_WAL_TEST(version) \ void \ pgInterfaceWalTest##version(PgWal pgWal, unsigned char *buffer) \ { \ ((XLogLongPageHeaderData *)buffer)->std.xlp_magic = XLOG_PAGE_MAGIC; \ ((XLogLongPageHeaderData *)buffer)->std.xlp_info = XLP_LONG_HEADER; \ ((XLogLongPageHeaderData *)buffer)->xlp_sysid = pgWal.systemId; \ } #endif /*********************************************************************************************************************************** Call all macros with a single macro to make the vXXX.c files as simple as possible ***********************************************************************************************************************************/ #define PG_INTERFACE_BASE(version) \ PG_INTERFACE_CATALOG_VERSION(version) \ PG_INTERFACE_CONTROL_IS(version) \ PG_INTERFACE_CONTROL(version) \ PG_INTERFACE_CONTROL_VERSION(version) \ PG_INTERFACE_WAL_IS(version) \ PG_INTERFACE_WAL(version) #ifdef DEBUG #define PG_INTERFACE(version) \ PG_INTERFACE_BASE(version) \ PG_INTERFACE_CONTROL_TEST(version) \ PG_INTERFACE_WAL_TEST(version) #else #define PG_INTERFACE(version) \ PG_INTERFACE_BASE(version) #endif #endif pgbackrest-release-2.24/src/postgres/pageChecksum.c000066400000000000000000000360171362531507100224160ustar00rootroot00000000000000/*********************************************************************************************************************************** Checksum Implementation for Data Pages Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group Portions Copyright (c) 1994, Regents of the University of California Copied from src/include/storage/checksum_impl.h in the PostgreSQL project. The algorithm used to checksum pages is chosen for very fast calculation. Workloads where the database working set fits into OS file cache but not into shared buffers can read in pages at a very fast pace and the checksum algorithm itself can become the largest bottleneck. The checksum algorithm itself is based on the FNV-1a hash (FNV is shorthand for Fowler/Noll/Vo). The primitive of a plain FNV-1a hash folds in data 1 byte at a time according to the formula: hash = (hash ^ value) * FNV_PRIME FNV-1a algorithm is described at http://www.isthe.com/chongo/tech/comp/fnv/ PostgreSQL doesn't use FNV-1a hash directly because it has bad mixing of high bits - high order bits in input data only affect high order bits in output data. To resolve this we xor in the value prior to multiplication shifted right by 17 bits. The number 17 was chosen because it doesn't have common denominator with set bit positions in FNV_PRIME and empirically provides the fastest mixing for high order bits of final iterations quickly avalanche into lower positions. For performance reasons we choose to combine 4 bytes at a time. The actual hash formula used as the basis is: hash = (hash ^ value) * FNV_PRIME ^ ((hash ^ value) >> 17) The main bottleneck in this calculation is the multiplication latency. To hide the latency and to make use of SIMD parallelism multiple hash values are calculated in parallel. The page is treated as a 32 column two dimensional array of 32 bit values. Each column is aggregated separately into a partial checksum. Each partial checksum uses a different initial value (offset basis in FNV terminology). The initial values actually used were chosen randomly, as the values themselves don't matter as much as that they are different and don't match anything in real data. After initializing partial checksums each value in the column is aggregated according to the above formula. Finally two more iterations of the formula are performed with value 0 to mix the bits of the last value added. The partial checksums are then folded together using xor to form a single 32-bit checksum. The caller can safely reduce the value to 16 bits using modulo 2^16-1. That will cause a very slight bias towards lower values but this is not significant for the performance of the checksum. The algorithm choice was based on what instructions are available in SIMD instruction sets. This meant that a fast and good algorithm needed to use multiplication as the main mixing operator. The simplest multiplication based checksum primitive is the one used by FNV. The prime used is chosen for good dispersion of values. It has no known simple patterns that result in collisions. Test of 5-bit differentials of the primitive over 64bit keys reveals no differentials with 3 or more values out of 100000 random keys colliding. Avalanche test shows that only high order bits of the last word have a bias. Tests of 1-4 uncorrelated bit errors, stray 0 and 0xFF bytes, overwriting page from random position to end with 0 bytes, and overwriting random segments of page with 0x00, 0xFF and random data all show optimal 2e-16 false positive rate within margin of error. Vectorization of the algorithm requires 32bit x 32bit -> 32bit integer multiplication instruction. As of 2013 the corresponding instruction is available on x86 SSE4.1 extensions (pmulld) and ARM NEON (vmul.i32). Vectorization requires a compiler to do the vectorization for us. For recent GCC versions the flags -msse4.1 -funroll-loops -ftree-vectorize are enough to achieve vectorization. The optimal amount of parallelism to use depends on CPU specific instruction latency, SIMD instruction width, throughput and the amount of registers available to hold intermediate state. Generally, more parallelism is better up to the point that state doesn't fit in registers and extra load-store instructions are needed to swap values in/out. The number chosen is a fixed part of the algorithm because changing the parallelism changes the checksum result. The parallelism number 32 was chosen based on the fact that it is the largest state that fits into architecturally visible x86 SSE registers while leaving some free registers for intermediate values. For future processors with 256bit vector registers this will leave some performance on the table. When vectorization is not available it might be beneficial to restructure the computation to calculate a subset of the columns at a time and perform multiple passes to avoid register spilling. This optimization opportunity is not used. Current coding also assumes that the compiler has the ability to unroll the inner loop to avoid loop overhead and minimize register spilling. For less sophisticated compilers it might be beneficial to manually unroll the inner loop. ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/debug.h" #include "common/error.h" #include "common/log.h" #include "postgres/interface.h" #include "postgres/pageChecksum.h" /*********************************************************************************************************************************** For historical reasons, the 64-bit LSN value is stored as two 32-bit values. ***********************************************************************************************************************************/ typedef struct { uint32_t walid; // high bits uint32_t xrecoff; // low bits } PageWalRecPtr; /*********************************************************************************************************************************** Space management information generic to any page. Only values required for pgBackRest are represented here. pd_lsn - identifies wal record for last change to this page. pd_checksum - page checksum, if set. The LSN is used by the buffer manager to enforce the basic rule of WAL: "thou shalt write wal before data". A dirty buffer cannot be dumped to disk until wal has been flushed at least as far as the page's LSN. pd_checksum stores the page checksum, if it has been set for this page; zero is a valid value for a checksum. If a checksum is not in use then we leave the field unset. This will typically mean the field is zero though non-zero values may also be present if databases have been pg_upgraded from releases prior to 9.3, when the same byte offset was used to store the current timelineid when the page was last updated. Note that there is no indication on a page as to whether the checksum is valid or not, a deliberate design choice which avoids the problem of relying on the page contents to decide whether to verify it. Hence there are no flag bits relating to checksums. ***********************************************************************************************************************************/ typedef struct PageHeaderData { // LSN is member of *any* block, not only page-organized ones PageWalRecPtr pd_lsn; // Lsn for last change to this page uint16_t pd_checksum; // checksum uint16_t pd_flags; // flag bits, see below uint16_t pd_lower; // offset to start of free space uint16_t pd_upper; // offset to end of free space } PageHeaderData; typedef PageHeaderData *PageHeader; /*********************************************************************************************************************************** pageChecksumBlock - block checksum algorithm The data argument must be aligned on a 4-byte boundary. ***********************************************************************************************************************************/ // number of checksums to calculate in parallel #define N_SUMS 32 // prime multiplier of FNV-1a hash #define FNV_PRIME 16777619 // Base offsets to initialize each of the parallel FNV hashes into a different initial state. static const uint32_t checksumBaseOffsets[N_SUMS] = { 0x5B1F36E9, 0xB8525960, 0x02AB50AA, 0x1DE66D2A, 0x79FF467A, 0x9BB9F8A3, 0x217E7CD2, 0x83E13D2C, 0xF8D4474F, 0xE39EB970, 0x42C6AE16, 0x993216FA, 0x7B093B5D, 0x98DAFF3C, 0xF718902A, 0x0B1C9CDB, 0xE58F764B, 0x187636BC, 0x5D7B3BB1, 0xE73DE7DE, 0x92BEC979, 0xCCA6C0B2, 0x304A0979, 0x85AA43D4, 0x783125BB, 0x6CA8EAA2, 0xE407EAC6, 0x4B5CFC3E, 0x9FBF8C76, 0x15CA20BE, 0xF2CA9FD3, 0x959BD756 }; // Calculate one round of the checksum. #define CHECKSUM_COMP(checksum, value) \ do { \ uint32_t temp = (checksum) ^ (value); \ (checksum) = temp * FNV_PRIME ^ (temp >> 17); \ } while (0) static uint32_t pageChecksumBlock(const unsigned char *page, unsigned int pageSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(UCHARDATA, page); FUNCTION_TEST_PARAM(UINT, pageSize); FUNCTION_TEST_END(); ASSERT(page != NULL); uint32_t sums[N_SUMS]; uint32_t (*dataArray)[N_SUMS] = (uint32_t (*)[N_SUMS])page; uint32_t result = 0; uint32_t i, j; /* initialize partial checksums to their corresponding offsets */ memcpy(sums, checksumBaseOffsets, sizeof(checksumBaseOffsets)); /* main checksum calculation */ for (i = 0; i < pageSize / sizeof(uint32_t) / N_SUMS; i++) for (j = 0; j < N_SUMS; j++) CHECKSUM_COMP(sums[j], dataArray[i][j]); /* finally add in two rounds of zeroes for additional mixing */ for (i = 0; i < 2; i++) for (j = 0; j < N_SUMS; j++) CHECKSUM_COMP(sums[j], 0); // xor fold partial checksums together for (i = 0; i < N_SUMS; i++) result ^= sums[i]; FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** pageChecksum - compute the checksum for a PostgreSQL page The checksum includes the block number (to detect the case where a page is somehow moved to a different location), the page header (excluding the checksum itself), and the page data. ***********************************************************************************************************************************/ uint16_t pageChecksum(const unsigned char *page, unsigned int blockNo, unsigned int pageSize) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(UCHARDATA, page); FUNCTION_TEST_PARAM(UINT, blockNo); FUNCTION_TEST_PARAM(UINT, pageSize); FUNCTION_TEST_END(); ASSERT(page != NULL); // Save pd_checksum and temporarily set it to zero, so that the checksum calculation isn't affected by the old checksum stored // on the page. Restore it after, because actually updating the checksum is NOT part of the API of this function. PageHeader pageHeader = (PageHeader)page; uint16_t originalChecksum = pageHeader->pd_checksum; pageHeader->pd_checksum = 0; uint32_t checksum = pageChecksumBlock(page, pageSize); pageHeader->pd_checksum = originalChecksum; // Mix in the block number to detect transposed pages checksum ^= blockNo; // Reduce to a uint16 with an offset of one. That avoids checksums of zero, which seems like a good idea. FUNCTION_TEST_RETURN((uint16_t)(checksum % 65535 + 1)); } /*********************************************************************************************************************************** Return the lsn for a page ***********************************************************************************************************************************/ uint64_t pageLsn(const unsigned char *page) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(UCHARDATA, page); FUNCTION_TEST_END(); // Reduce to a uint16 with an offset of one. That avoids checksums of zero, which seems like a good idea. FUNCTION_TEST_RETURN((uint64_t)((PageHeader)page)->pd_lsn.walid << 32 | ((PageHeader)page)->pd_lsn.xrecoff); } /*********************************************************************************************************************************** pageChecksumTest - test if checksum is valid for a single page ***********************************************************************************************************************************/ bool pageChecksumTest( const unsigned char *page, unsigned int blockNo, unsigned int pageSize, uint32_t ignoreWalId, uint32_t ignoreWalOffset) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(UCHARDATA, page); FUNCTION_TEST_PARAM(UINT, blockNo); FUNCTION_TEST_PARAM(UINT, pageSize); FUNCTION_TEST_PARAM(UINT32, ignoreWalId); FUNCTION_TEST_PARAM(UINT32, ignoreWalOffset); FUNCTION_TEST_END(); ASSERT(page != NULL); FUNCTION_TEST_RETURN( // This is a new page so don't test checksum ((PageHeader)page)->pd_upper == 0 || // LSN is after the backup started so checksum is not tested because pages may be torn (((PageHeader)page)->pd_lsn.walid >= ignoreWalId && ((PageHeader)page)->pd_lsn.xrecoff >= ignoreWalOffset) || // Checksum is valid if a full page (pageSize == PG_PAGE_SIZE_DEFAULT && ((PageHeader)page)->pd_checksum == pageChecksum(page, blockNo, pageSize))); } /*********************************************************************************************************************************** pageChecksumBufferTest - test if checksums are valid for all pages in a buffer ***********************************************************************************************************************************/ bool pageChecksumBufferTest( const unsigned char *pageBuffer, unsigned int pageBufferSize, unsigned int blockNoBegin, unsigned int pageSize, uint32_t ignoreWalId, uint32_t ignoreWalOffset) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM_P(UCHARDATA, pageBuffer); FUNCTION_LOG_PARAM(UINT, pageBufferSize); FUNCTION_LOG_PARAM(UINT, blockNoBegin); FUNCTION_LOG_PARAM(UINT, pageSize); FUNCTION_LOG_PARAM(UINT32, ignoreWalId); FUNCTION_LOG_PARAM(UINT32, ignoreWalOffset); FUNCTION_LOG_END(); ASSERT(pageBuffer != NULL); ASSERT(pageBufferSize > 0); ASSERT(pageBufferSize % pageSize == 0); bool result = true; // Loop through all pages in the buffer for (unsigned int pageIdx = 0; pageIdx < pageBufferSize / pageSize; pageIdx++) { const unsigned char *page = pageBuffer + (pageIdx * pageSize); // Return false if the checksums do not match if (!pageChecksumTest(page, blockNoBegin + pageIdx, pageSize, ignoreWalId, ignoreWalOffset)) { result = false; break; } } FUNCTION_LOG_RETURN(BOOL, result); } pgbackrest-release-2.24/src/postgres/pageChecksum.h000066400000000000000000000022111362531507100224100ustar00rootroot00000000000000/*********************************************************************************************************************************** Checksum Implementation for Data Pages ***********************************************************************************************************************************/ #ifndef POSTGRES_PAGECHECKSUM_H #define POSTGRES_PAGECHECKSUM_H #include /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ uint16_t pageChecksum(const unsigned char *page, unsigned int blockNo, unsigned int pageSize); uint64_t pageLsn(const unsigned char *page); bool pageChecksumTest( const unsigned char *page, unsigned int blockNo, unsigned int pageSize, uint32_t ignoreWalId, uint32_t ignoreWalOffset); bool pageChecksumBufferTest( const unsigned char *pageBuffer, unsigned int pageBufferSize, unsigned int blockNoBegin, unsigned int pageSize, uint32_t ignoreWalId, uint32_t ignoreWalOffset); #endif pgbackrest-release-2.24/src/postgres/version.h000066400000000000000000000111531362531507100215030ustar00rootroot00000000000000/*********************************************************************************************************************************** PostreSQL Version Constants ***********************************************************************************************************************************/ #ifndef POSTGRES_VERSION_H #define POSTGRES_VERSION_H /*********************************************************************************************************************************** PostgreSQL name ***********************************************************************************************************************************/ #define PG_NAME "PostgreSQL" /*********************************************************************************************************************************** PostgreSQL version constants ***********************************************************************************************************************************/ #define PG_VERSION_83 80300 #define PG_VERSION_84 80400 #define PG_VERSION_90 90000 #define PG_VERSION_91 90100 #define PG_VERSION_92 90200 #define PG_VERSION_93 90300 #define PG_VERSION_94 90400 #define PG_VERSION_95 90500 #define PG_VERSION_96 90600 #define PG_VERSION_10 100000 #define PG_VERSION_11 110000 #define PG_VERSION_12 120000 #define PG_VERSION_MAX PG_VERSION_12 /*********************************************************************************************************************************** Version where various PostgreSQL capabilities were introduced ***********************************************************************************************************************************/ // application_name can be set to show the application name in pg_stat_activity #define PG_VERSION_APPLICATION_NAME PG_VERSION_90 // pg_is_in_recovery() supported #define PG_VERSION_HOT_STANDBY PG_VERSION_91 // pg_create_restore_point() supported #define PG_VERSION_RESTORE_POINT PG_VERSION_91 // pause_at_recovery_target is supported #define PG_VERSION_RECOVERY_TARGET_PAUSE PG_VERSION_91 // Backup from standby is supported #define PG_VERSION_BACKUP_STANDBY PG_VERSION_92 // tablespace_map is created during backup #define PG_VERSION_TABLESPACE_MAP PG_VERSION_95 // recovery target action supported #define PG_VERSION_RECOVERY_TARGET_ACTION PG_VERSION_95 // xlog was renamed to wal #define PG_VERSION_WAL_RENAME PG_VERSION_10 // recovery settings are implemented as GUCs (recovery.conf is no longer valid) #define PG_VERSION_RECOVERY_GUC PG_VERSION_12 /*********************************************************************************************************************************** PostgreSQL version string constants for use in error messages ***********************************************************************************************************************************/ #define PG_VERSION_83_STR "8.3" #define PG_VERSION_84_STR "8.4" #define PG_VERSION_90_STR "9.0" #define PG_VERSION_91_STR "9.1" #define PG_VERSION_92_STR "9.2" #define PG_VERSION_93_STR "9.3" #define PG_VERSION_94_STR "9.4" #define PG_VERSION_95_STR "9.5" #define PG_VERSION_96_STR "9.6" #define PG_VERSION_10_STR "10" #define PG_VERSION_11_STR "11" #define PG_VERSION_12_STR "12" #endif pgbackrest-release-2.24/src/protocol/000077500000000000000000000000001362531507100176375ustar00rootroot00000000000000pgbackrest-release-2.24/src/protocol/client.c000066400000000000000000000330331362531507100212630ustar00rootroot00000000000000/*********************************************************************************************************************************** Protocol Client ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "common/time.h" #include "common/type/json.h" #include "common/type/keyValue.h" #include "protocol/client.h" #include "version.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ STRING_EXTERN(PROTOCOL_GREETING_NAME_STR, PROTOCOL_GREETING_NAME); STRING_EXTERN(PROTOCOL_GREETING_SERVICE_STR, PROTOCOL_GREETING_SERVICE); STRING_EXTERN(PROTOCOL_GREETING_VERSION_STR, PROTOCOL_GREETING_VERSION); STRING_EXTERN(PROTOCOL_COMMAND_NOOP_STR, PROTOCOL_COMMAND_NOOP); STRING_EXTERN(PROTOCOL_COMMAND_EXIT_STR, PROTOCOL_COMMAND_EXIT); STRING_EXTERN(PROTOCOL_ERROR_STR, PROTOCOL_ERROR); STRING_EXTERN(PROTOCOL_ERROR_STACK_STR, PROTOCOL_ERROR_STACK); STRING_EXTERN(PROTOCOL_OUTPUT_STR, PROTOCOL_OUTPUT); /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct ProtocolClient { MemContext *memContext; const String *name; const String *errorPrefix; IoRead *read; IoWrite *write; TimeMSec keepAliveTime; }; OBJECT_DEFINE_MOVE(PROTOCOL_CLIENT); OBJECT_DEFINE_FREE(PROTOCOL_CLIENT); /*********************************************************************************************************************************** Close protocol connection ***********************************************************************************************************************************/ OBJECT_DEFINE_FREE_RESOURCE_BEGIN(PROTOCOL_CLIENT, LOG, logLevelTrace) { // Send an exit command but don't wait to see if it succeeds MEM_CONTEXT_TEMP_BEGIN() { protocolClientWriteCommand(this, protocolCommandNew(PROTOCOL_COMMAND_EXIT_STR)); } MEM_CONTEXT_TEMP_END(); } OBJECT_DEFINE_FREE_RESOURCE_END(LOG); /*********************************************************************************************************************************** Create object ***********************************************************************************************************************************/ ProtocolClient * protocolClientNew(const String *name, const String *service, IoRead *read, IoWrite *write) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, name); FUNCTION_LOG_PARAM(STRING, service); FUNCTION_LOG_PARAM(IO_READ, read); FUNCTION_LOG_PARAM(IO_WRITE, write); FUNCTION_LOG_END(); ASSERT(name != NULL); ASSERT(read != NULL); ASSERT(write != NULL); ProtocolClient *this = NULL; MEM_CONTEXT_NEW_BEGIN("ProtocolClient") { this = memNew(sizeof(ProtocolClient)); *this = (ProtocolClient) { .memContext = memContextCurrent(), .name = strDup(name), .errorPrefix = strNewFmt("raised from %s", strPtr(name)), .read = read, .write = write, .keepAliveTime = timeMSec(), }; // Read, parse, and check the protocol greeting MEM_CONTEXT_TEMP_BEGIN() { String *greeting = ioReadLine(this->read); KeyValue *greetingKv = jsonToKv(greeting); const String *expected[] = { PROTOCOL_GREETING_NAME_STR, STRDEF(PROJECT_NAME), PROTOCOL_GREETING_SERVICE_STR, service, PROTOCOL_GREETING_VERSION_STR, STRDEF(PROJECT_VERSION), }; for (unsigned int expectedIdx = 0; expectedIdx < sizeof(expected) / sizeof(char *) / 2; expectedIdx++) { const String *expectedKey = expected[expectedIdx * 2]; const String *expectedValue = expected[expectedIdx * 2 + 1]; const Variant *actualValue = kvGet(greetingKv, VARSTR(expectedKey)); if (actualValue == NULL) THROW_FMT(ProtocolError, "unable to find greeting key '%s'", strPtr(expectedKey)); if (varType(actualValue) != varTypeString) THROW_FMT(ProtocolError, "greeting key '%s' must be string type", strPtr(expectedKey)); if (!strEq(varStr(actualValue), expectedValue)) { THROW_FMT( ProtocolError, "expected value '%s' for greeting key '%s' but got '%s'", strPtr(expectedValue), strPtr(expectedKey), strPtr(varStr(actualValue))); } } } MEM_CONTEXT_TEMP_END(); // Send one noop to catch any errors that might happen after the greeting protocolClientNoOp(this); // Set a callback to shutdown the protocol memContextCallbackSet(this->memContext, protocolClientFreeResource, this); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(PROTOCOL_CLIENT, this); } /*********************************************************************************************************************************** Read the command output ***********************************************************************************************************************************/ // Helper to process errors static void protocolClientProcessError(ProtocolClient *this, KeyValue *errorKv) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PROTOCOL_CLIENT, this); FUNCTION_LOG_PARAM(KEY_VALUE, errorKv); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(errorKv != NULL); MEM_CONTEXT_TEMP_BEGIN() { // Process error if any const Variant *error = kvGet(errorKv, VARSTR(PROTOCOL_ERROR_STR)); if (error != NULL) { const ErrorType *type = errorTypeFromCode(varIntForce(error)); const String *message = varStr(kvGet(errorKv, VARSTR(PROTOCOL_OUTPUT_STR))); // Required part of the message String *throwMessage = strNewFmt( "%s: %s", strPtr(this->errorPrefix), message == NULL ? "no details available" : strPtr(message)); // Add stack trace if the error is an assertion or debug-level logging is enabled if (type == &AssertError || logAny(logLevelDebug)) { const String *stack = varStr(kvGet(errorKv, VARSTR(PROTOCOL_ERROR_STACK_STR))); strCat(throwMessage, "\n"); strCat(throwMessage, stack == NULL ? "no stack trace available" : strPtr(stack)); } THROWP(type, strPtr(throwMessage)); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } const Variant * protocolClientReadOutput(ProtocolClient *this, bool outputRequired) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PROTOCOL_CLIENT, this); FUNCTION_LOG_PARAM(BOOL, outputRequired); FUNCTION_LOG_END(); ASSERT(this != NULL); const Variant *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { // Read the response String *response = ioReadLine(this->read); KeyValue *responseKv = varKv(jsonToVar(response)); // Process error if any protocolClientProcessError(this, responseKv); // Get output result = kvGet(responseKv, VARSTR(PROTOCOL_OUTPUT_STR)); if (outputRequired) { // Just move the entire response kv since the output is the largest part if it kvMove(responseKv, memContextPrior()); } // Else if no output is required then there should not be any else if (result != NULL) THROW(AssertError, "no output required by command"); // Reset the keep alive time this->keepAliveTime = timeMSec(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_CONST(VARIANT, result); } /*********************************************************************************************************************************** Write the protocol command ***********************************************************************************************************************************/ void protocolClientWriteCommand(ProtocolClient *this, const ProtocolCommand *command) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PROTOCOL_CLIENT, this); FUNCTION_LOG_PARAM(PROTOCOL_COMMAND, command); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(command != NULL); // Write out the command ioWriteStrLine(this->write, protocolCommandJson(command)); ioWriteFlush(this->write); // Reset the keep alive time this->keepAliveTime = timeMSec(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Execute a protocol command and get the output ***********************************************************************************************************************************/ const Variant * protocolClientExecute(ProtocolClient *this, const ProtocolCommand *command, bool outputRequired) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PROTOCOL_CLIENT, this); FUNCTION_LOG_PARAM(PROTOCOL_COMMAND, command); FUNCTION_LOG_PARAM(BOOL, outputRequired); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(command != NULL); protocolClientWriteCommand(this, command); FUNCTION_LOG_RETURN_CONST(VARIANT, protocolClientReadOutput(this, outputRequired)); } /*********************************************************************************************************************************** Send noop to test connection or keep it alive ***********************************************************************************************************************************/ void protocolClientNoOp(ProtocolClient *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PROTOCOL_CLIENT, this); FUNCTION_LOG_END(); ASSERT(this != NULL); MEM_CONTEXT_TEMP_BEGIN() { protocolClientExecute(this, protocolCommandNew(PROTOCOL_COMMAND_NOOP_STR), false); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Read a line ***********************************************************************************************************************************/ String * protocolClientReadLine(ProtocolClient *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PROTOCOL_CLIENT, this); FUNCTION_LOG_END(); ASSERT(this != NULL); String *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { result = ioReadLine(this->read); if (strSize(result) == 0) { THROW(FormatError, "unexpected empty line"); } else if (strPtr(result)[0] == '{') { KeyValue *responseKv = varKv(jsonToVar(result)); // Process expected error protocolClientProcessError(this, responseKv); // If not an error then there is probably a protocol bug THROW(FormatError, "expected error but got output"); } else if (strPtr(result)[0] != '.') THROW_FMT(FormatError, "invalid prefix in '%s'", strPtr(result)); MEM_CONTEXT_PRIOR_BEGIN() { result = strSub(result, 1); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING, result); } /*********************************************************************************************************************************** Get read interface ***********************************************************************************************************************************/ IoRead * protocolClientIoRead(const ProtocolClient *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(PROTOCOL_CLIENT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->read); } /*********************************************************************************************************************************** Get write interface ***********************************************************************************************************************************/ IoWrite * protocolClientIoWrite(const ProtocolClient *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(PROTOCOL_CLIENT, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->write); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * protocolClientToLog(const ProtocolClient *this) { return strNewFmt("{name: %s}", strPtr(this->name)); } pgbackrest-release-2.24/src/protocol/client.h000066400000000000000000000112231362531507100212650ustar00rootroot00000000000000/*********************************************************************************************************************************** Protocol Client ***********************************************************************************************************************************/ #ifndef PROTOCOL_CLIENT_H #define PROTOCOL_CLIENT_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define PROTOCOL_CLIENT_TYPE ProtocolClient #define PROTOCOL_CLIENT_PREFIX protocolClient typedef struct ProtocolClient ProtocolClient; #include "common/io/read.h" #include "common/io/write.h" #include "protocol/command.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define PROTOCOL_GREETING_NAME "name" STRING_DECLARE(PROTOCOL_GREETING_NAME_STR); #define PROTOCOL_GREETING_SERVICE "service" STRING_DECLARE(PROTOCOL_GREETING_SERVICE_STR); #define PROTOCOL_GREETING_VERSION "version" STRING_DECLARE(PROTOCOL_GREETING_VERSION_STR); #define PROTOCOL_COMMAND_EXIT "exit" STRING_DECLARE(PROTOCOL_COMMAND_EXIT_STR); #define PROTOCOL_COMMAND_NOOP "noop" STRING_DECLARE(PROTOCOL_COMMAND_NOOP_STR); #define PROTOCOL_ERROR "err" STRING_DECLARE(PROTOCOL_ERROR_STR); #define PROTOCOL_ERROR_STACK "errStack" STRING_DECLARE(PROTOCOL_ERROR_STACK_STR); #define PROTOCOL_OUTPUT "out" STRING_DECLARE(PROTOCOL_OUTPUT_STR); /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ ProtocolClient *protocolClientNew(const String *name, const String *service, IoRead *read, IoWrite *write); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ const Variant *protocolClientExecute(ProtocolClient *this, const ProtocolCommand *command, bool outputRequired); ProtocolClient *protocolClientMove(ProtocolClient *this, MemContext *parentNew); void protocolClientNoOp(ProtocolClient *this); String *protocolClientReadLine(ProtocolClient *this); const Variant *protocolClientReadOutput(ProtocolClient *this, bool outputRequired); void protocolClientWriteCommand(ProtocolClient *this, const ProtocolCommand *command); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ IoRead *protocolClientIoRead(const ProtocolClient *this); IoWrite *protocolClientIoWrite(const ProtocolClient *this); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void protocolClientFree(ProtocolClient *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *protocolClientToLog(const ProtocolClient *this); #define FUNCTION_LOG_PROTOCOL_CLIENT_TYPE \ ProtocolClient * #define FUNCTION_LOG_PROTOCOL_CLIENT_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, protocolClientToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/protocol/command.c000066400000000000000000000107421362531507100214250ustar00rootroot00000000000000/*********************************************************************************************************************************** Protocol Command ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "common/type/json.h" #include "common/type/keyValue.h" #include "protocol/command.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ STRING_EXTERN(PROTOCOL_KEY_COMMAND_STR, PROTOCOL_KEY_COMMAND); STRING_EXTERN(PROTOCOL_KEY_PARAMETER_STR, PROTOCOL_KEY_PARAMETER); /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct ProtocolCommand { MemContext *memContext; const String *command; Variant *parameterList; }; OBJECT_DEFINE_MOVE(PROTOCOL_COMMAND); OBJECT_DEFINE_FREE(PROTOCOL_COMMAND); /*********************************************************************************************************************************** Create object ***********************************************************************************************************************************/ ProtocolCommand * protocolCommandNew(const String *command) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, command); FUNCTION_TEST_END(); ASSERT(command != NULL); ProtocolCommand *this = NULL; MEM_CONTEXT_NEW_BEGIN("ProtocolCommand") { this = memNew(sizeof(ProtocolCommand)); *this = (ProtocolCommand) { .memContext = memContextCurrent(), .command = strDup(command), }; } MEM_CONTEXT_NEW_END(); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Read the command output ***********************************************************************************************************************************/ ProtocolCommand * protocolCommandParamAdd(ProtocolCommand *this, const Variant *param) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(PROTOCOL_COMMAND, this); FUNCTION_TEST_PARAM(VARIANT, param); FUNCTION_TEST_END(); ASSERT(this != NULL); MEM_CONTEXT_BEGIN(this->memContext) { // Create parameter list if not already created if (this->parameterList == NULL) this->parameterList = varNewVarLst(varLstNew()); // Add parameter to the list varLstAdd(varVarLst(this->parameterList), varDup(param)); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN(this); } /*********************************************************************************************************************************** Get write interface ***********************************************************************************************************************************/ String * protocolCommandJson(const ProtocolCommand *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(PROTOCOL_COMMAND, this); FUNCTION_TEST_END(); ASSERT(this != NULL); String *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { KeyValue *command = kvPut(kvNew(), VARSTR(PROTOCOL_KEY_COMMAND_STR), VARSTR(this->command)); if (this->parameterList != NULL) kvPut(command, VARSTR(PROTOCOL_KEY_PARAMETER_STR), this->parameterList); MEM_CONTEXT_PRIOR_BEGIN() { result = jsonFromKv(command); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * protocolCommandToLog(const ProtocolCommand *this) { return strNewFmt("{command: %s}", strPtr(this->command)); } pgbackrest-release-2.24/src/protocol/command.h000066400000000000000000000067651362531507100214440ustar00rootroot00000000000000/*********************************************************************************************************************************** Protocol Command ***********************************************************************************************************************************/ #ifndef PROTOCOL_COMMAND_H #define PROTOCOL_COMMAND_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define PROTOCOL_COMMAND_TYPE ProtocolCommand #define PROTOCOL_COMMAND_PREFIX protocolCommand typedef struct ProtocolCommand ProtocolCommand; #include "common/type/variant.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define PROTOCOL_KEY_COMMAND "cmd" STRING_DECLARE(PROTOCOL_KEY_COMMAND_STR); #define PROTOCOL_KEY_PARAMETER "param" STRING_DECLARE(PROTOCOL_KEY_PARAMETER_STR); /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ ProtocolCommand *protocolCommandNew(const String *command); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ ProtocolCommand *protocolCommandMove(ProtocolCommand *this, MemContext *parentNew); ProtocolCommand *protocolCommandParamAdd(ProtocolCommand *this, const Variant *param); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ String *protocolCommandJson(const ProtocolCommand *this); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void protocolCommandFree(ProtocolCommand *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *protocolCommandToLog(const ProtocolCommand *this); #define FUNCTION_LOG_PROTOCOL_COMMAND_TYPE \ ProtocolCommand * #define FUNCTION_LOG_PROTOCOL_COMMAND_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, protocolCommandToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/protocol/helper.c000066400000000000000000000616461362531507100212770ustar00rootroot00000000000000/*********************************************************************************************************************************** Protocol Helper ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/crypto/common.h" #include "common/debug.h" #include "common/exec.h" #include "common/memContext.h" #include "config/config.h" #include "config/exec.h" #include "config/protocol.h" #include "postgres/version.h" #include "protocol/helper.h" #include "version.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ STRING_EXTERN(PROTOCOL_SERVICE_LOCAL_STR, PROTOCOL_SERVICE_LOCAL); STRING_EXTERN(PROTOCOL_SERVICE_REMOTE_STR, PROTOCOL_SERVICE_REMOTE); STRING_STATIC(PROTOCOL_REMOTE_TYPE_PG_STR, PROTOCOL_REMOTE_TYPE_PG); STRING_STATIC(PROTOCOL_REMOTE_TYPE_REPO_STR, PROTOCOL_REMOTE_TYPE_REPO); /*********************************************************************************************************************************** Local variables ***********************************************************************************************************************************/ typedef struct ProtocolHelperClient { Exec *exec; // Executed client ProtocolClient *client; // Protocol client } ProtocolHelperClient; static struct { MemContext *memContext; // Mem context for protocol helper unsigned int clientRemoteSize; // Remote clients ProtocolHelperClient *clientRemote; unsigned int clientLocalSize; // Local clients ProtocolHelperClient *clientLocal; } protocolHelper; /*********************************************************************************************************************************** Init local mem context and data structure ***********************************************************************************************************************************/ static void protocolHelperInit(void) { // In the protocol helper has not been initialized if (protocolHelper.memContext == NULL) { // Create a mem context to store protocol objects MEM_CONTEXT_BEGIN(memContextTop()) { MEM_CONTEXT_NEW_BEGIN("ProtocolHelper") { protocolHelper.memContext = MEM_CONTEXT_NEW(); } MEM_CONTEXT_NEW_END(); } MEM_CONTEXT_END(); } } /*********************************************************************************************************************************** Is the repository local? ***********************************************************************************************************************************/ bool repoIsLocal(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(!cfgOptionTest(cfgOptRepoHost)); } /*********************************************************************************************************************************** Error if the repository is not local ***********************************************************************************************************************************/ void repoIsLocalVerify(void) { FUNCTION_TEST_VOID(); if (!repoIsLocal()) THROW_FMT(HostInvalidError, "%s command must be run on the repository host", cfgCommandName(cfgCommand())); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Is pg local? ***********************************************************************************************************************************/ bool pgIsLocal(unsigned int hostId) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(UINT, hostId); FUNCTION_LOG_END(); ASSERT(hostId > 0); FUNCTION_LOG_RETURN(BOOL, !cfgOptionTest(cfgOptPgHost + hostId - 1)); } /**********************************************************************************************************************************/ void pgIsLocalVerify(void) { FUNCTION_TEST_VOID(); if (!pgIsLocal(1)) THROW_FMT(HostInvalidError, "%s command must be run on the " PG_NAME " host", cfgCommandName(cfgCommand())); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Get the command line required for local protocol execution ***********************************************************************************************************************************/ static StringList * protocolLocalParam(ProtocolStorageType protocolStorageType, unsigned int hostId, unsigned int protocolId) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(ENUM, protocolStorageType); FUNCTION_LOG_PARAM(UINT, hostId); FUNCTION_LOG_PARAM(UINT, protocolId); FUNCTION_LOG_END(); ASSERT(hostId > 0); StringList *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { // Option replacements KeyValue *optionReplace = kvNew(); // Add the process id -- used when more than one process will be called kvPut(optionReplace, VARSTR(CFGOPT_PROCESS_STR), VARUINT(protocolId)); // Add the host id kvPut(optionReplace, VARSTR(CFGOPT_HOST_ID_STR), VARUINT(hostId)); // Add the remote type kvPut(optionReplace, VARSTR(CFGOPT_REMOTE_TYPE_STR), VARSTR(protocolStorageTypeStr(protocolStorageType))); // Only enable file logging on the local when requested kvPut( optionReplace, VARSTR(CFGOPT_LOG_LEVEL_FILE_STR), cfgOptionBool(cfgOptLogSubprocess) ? cfgOption(cfgOptLogLevelFile) : VARSTRDEF("off")); // Always output errors on stderr for debugging purposes kvPut(optionReplace, VARSTR(CFGOPT_LOG_LEVEL_STDERR_STR), VARSTRDEF("error")); // Disable output to stdout since it is used by the protocol kvPut(optionReplace, VARSTR(CFGOPT_LOG_LEVEL_CONSOLE_STR), VARSTRDEF("off")); result = strLstMove(cfgExecParam(cfgCommand(), cfgCmdRoleLocal, optionReplace, true, false), memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING_LIST, result); } /*********************************************************************************************************************************** Get the local protocol client ***********************************************************************************************************************************/ ProtocolClient * protocolLocalGet(ProtocolStorageType protocolStorageType, unsigned int hostId, unsigned int protocolId) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(ENUM, protocolStorageType); FUNCTION_LOG_PARAM(UINT, hostId); FUNCTION_LOG_PARAM(UINT, protocolId); FUNCTION_LOG_END(); ASSERT(hostId > 0); protocolHelperInit(); // Allocate the client cache if (protocolHelper.clientLocalSize == 0) { MEM_CONTEXT_BEGIN(protocolHelper.memContext) { protocolHelper.clientLocalSize = cfgOptionUInt(cfgOptProcessMax) + 1; protocolHelper.clientLocal = memNew(protocolHelper.clientLocalSize * sizeof(ProtocolHelperClient)); for (unsigned int clientIdx = 0; clientIdx < protocolHelper.clientLocalSize; clientIdx++) protocolHelper.clientLocal[clientIdx] = (ProtocolHelperClient){.exec = NULL}; } MEM_CONTEXT_END(); } ASSERT(protocolId <= protocolHelper.clientLocalSize); // Create protocol object ProtocolHelperClient *protocolHelperClient = &protocolHelper.clientLocal[protocolId - 1]; if (protocolHelperClient->client == NULL) { MEM_CONTEXT_BEGIN(protocolHelper.memContext) { // Execute the protocol command protocolHelperClient->exec = execNew( cfgExe(), protocolLocalParam(protocolStorageType, hostId, protocolId), strNewFmt(PROTOCOL_SERVICE_LOCAL "-%u process", protocolId), (TimeMSec)(cfgOptionDbl(cfgOptProtocolTimeout) * 1000)); execOpen(protocolHelperClient->exec); // Create protocol object protocolHelperClient->client = protocolClientNew( strNewFmt(PROTOCOL_SERVICE_LOCAL "-%u protocol", protocolId), PROTOCOL_SERVICE_LOCAL_STR, execIoRead(protocolHelperClient->exec), execIoWrite(protocolHelperClient->exec)); protocolClientMove(protocolHelperClient->client, execMemContext(protocolHelperClient->exec)); } MEM_CONTEXT_END(); } FUNCTION_LOG_RETURN(PROTOCOL_CLIENT, protocolHelperClient->client); } /*********************************************************************************************************************************** Get the command line required for remote protocol execution ***********************************************************************************************************************************/ static StringList * protocolRemoteParam(ProtocolStorageType protocolStorageType, unsigned int protocolId, unsigned int hostIdx) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(ENUM, protocolStorageType); FUNCTION_LOG_PARAM(UINT, protocolId); FUNCTION_LOG_PARAM(UINT, hostIdx); FUNCTION_LOG_END(); // Is this a repo remote? bool isRepo = protocolStorageType == protocolStorageTypeRepo; // Fixed parameters for ssh command StringList *result = strLstNew(); strLstAddZ(result, "-o"); strLstAddZ(result, "LogLevel=error"); strLstAddZ(result, "-o"); strLstAddZ(result, "Compression=no"); strLstAddZ(result, "-o"); strLstAddZ(result, "PasswordAuthentication=no"); // Append port if specified ConfigOption optHostPort = isRepo ? cfgOptRepoHostPort : cfgOptPgHostPort + hostIdx; if (cfgOptionTest(optHostPort)) { strLstAddZ(result, "-p"); strLstAdd(result, strNewFmt("%u", cfgOptionUInt(optHostPort))); } // Append user/host strLstAdd( result, strNewFmt( "%s@%s", strPtr(cfgOptionStr(isRepo ? cfgOptRepoHostUser : cfgOptPgHostUser + hostIdx)), strPtr(cfgOptionStr(isRepo ? cfgOptRepoHost : cfgOptPgHost + hostIdx)))); // Option replacements KeyValue *optionReplace = kvNew(); // Replace config options with the host versions unsigned int optConfig = isRepo ? cfgOptRepoHostConfig : cfgOptPgHostConfig + hostIdx; kvPut(optionReplace, VARSTR(CFGOPT_CONFIG_STR), cfgOptionSource(optConfig) != cfgSourceDefault ? cfgOption(optConfig) : NULL); unsigned int optConfigIncludePath = isRepo ? cfgOptRepoHostConfigIncludePath : cfgOptPgHostConfigIncludePath + hostIdx; kvPut( optionReplace, VARSTR(CFGOPT_CONFIG_INCLUDE_PATH_STR), cfgOptionSource(optConfigIncludePath) != cfgSourceDefault ? cfgOption(optConfigIncludePath) : NULL); unsigned int optConfigPath = isRepo ? cfgOptRepoHostConfigPath : cfgOptPgHostConfigPath + hostIdx; kvPut( optionReplace, VARSTR(CFGOPT_CONFIG_PATH_STR), cfgOptionSource(optConfigPath) != cfgSourceDefault ? cfgOption(optConfigPath) : NULL); // Update/remove repo/pg options that are sent to the remote const String *repoHostPrefix = STR(cfgDefOptionName(cfgDefOptRepoHost)); const String *repoPrefix = strNewFmt("%s-", PROTOCOL_REMOTE_TYPE_REPO); const String *pgHostPrefix = STR(cfgDefOptionName(cfgDefOptPgHost)); const String *pgPrefix = strNewFmt("%s-", PROTOCOL_REMOTE_TYPE_PG); for (ConfigOption optionId = 0; optionId < CFG_OPTION_TOTAL; optionId++) { const String *optionDefName = STR(cfgDefOptionName(cfgOptionDefIdFromId(optionId))); bool remove = false; // Remove repo host options that are not needed on the remote. The remote is not expecting to see host settings and it // could get confused about the locality of the repo, i.e. local or remote. if (strBeginsWith(optionDefName, repoHostPrefix)) { remove = true; } // Remove repo options when the remote type is pg since they won't be used else if (strBeginsWith(optionDefName, repoPrefix)) { if (protocolStorageType == protocolStorageTypePg) remove = true; } // Remove pg host options that are not needed on the remote. The remote is not expecting to see host settings and it could // get confused about the locality of pg, i.e. local or remote. else if (strBeginsWith(optionDefName, pgHostPrefix)) { remove = true; } else if (strBeginsWith(optionDefName, pgPrefix)) { // Remove pg options when the remote type is repo since they won't be used if (protocolStorageType == protocolStorageTypeRepo) { remove = true; } // Else move/remove pg options with index > 0 since they won't be used else if (cfgOptionIndex(optionId) > 0) { // If the option index matches the host-id then this is a pg option that the remote needs. Since the remote expects // to find pg options in index 0, copy the option to index 0. if (cfgOptionIndex(optionId) == hostIdx) { kvPut( optionReplace, VARSTRZ(cfgOptionName(optionId - hostIdx)), cfgOptionSource(optionId) != cfgSourceDefault ? cfgOption(optionId) : NULL); } // Remove pg options that are not needed on the remote. The remote is only going to look at index 0 so the options // in higher indexes will not be used and just add clutter which makes debugging harder. remove = true; } } // Remove options that have been marked for removal if they are not already null or invalid. This is more efficient because // cfgExecParam() won't have to search through as large a list looking for overrides. if (remove && cfgOptionTest(optionId)) kvPut(optionReplace, VARSTRZ(cfgOptionName(optionId)), NULL); } // Don't pass host-id to the remote. The host will always be in index 0. kvPut(optionReplace, VARSTR(CFGOPT_HOST_ID_STR), NULL); // Add the process id (or use the current process id if it is valid) if (!cfgOptionTest(cfgOptProcess)) kvPut(optionReplace, VARSTR(CFGOPT_PROCESS_STR), VARINT((int)protocolId)); // Don't pass log-path or lock-path since these are host specific kvPut(optionReplace, VARSTR(CFGOPT_LOG_PATH_STR), NULL); kvPut(optionReplace, VARSTR(CFGOPT_LOCK_PATH_STR), NULL); // ??? Don't pass restore options which the remote doesn't need and are likely to contain spaces because they might get mangled // on the way to the remote depending on how SSH is set up on the server. This code should be removed when option passing with // spaces is resolved. kvPut(optionReplace, VARSTR(CFGOPT_TYPE_STR), NULL); kvPut(optionReplace, VARSTR(CFGOPT_TARGET_STR), NULL); kvPut(optionReplace, VARSTR(CFGOPT_TARGET_EXCLUSIVE_STR), NULL); kvPut(optionReplace, VARSTR(CFGOPT_TARGET_ACTION_STR), NULL); kvPut(optionReplace, VARSTR(CFGOPT_TARGET_STR), NULL); kvPut(optionReplace, VARSTR(CFGOPT_TARGET_TIMELINE_STR), NULL); kvPut(optionReplace, VARSTR(CFGOPT_RECOVERY_OPTION_STR), NULL); // Only enable file logging on the remote when requested kvPut( optionReplace, VARSTR(CFGOPT_LOG_LEVEL_FILE_STR), cfgOptionBool(cfgOptLogSubprocess) ? cfgOption(cfgOptLogLevelFile) : VARSTRDEF("off")); // Always output errors on stderr for debugging purposes kvPut(optionReplace, VARSTR(CFGOPT_LOG_LEVEL_STDERR_STR), VARSTRDEF("error")); // Disable output to stdout since it is used by the protocol kvPut(optionReplace, VARSTR(CFGOPT_LOG_LEVEL_CONSOLE_STR), VARSTRDEF("off")); // Add the remote type kvPut(optionReplace, VARSTR(CFGOPT_REMOTE_TYPE_STR), VARSTR(protocolStorageTypeStr(protocolStorageType))); StringList *commandExec = cfgExecParam(cfgCommand(), cfgCmdRoleRemote, optionReplace, false, true); strLstInsert(commandExec, 0, cfgOptionStr(isRepo ? cfgOptRepoHostCmd : cfgOptPgHostCmd + hostIdx)); strLstAdd(result, strLstJoin(commandExec, " ")); FUNCTION_LOG_RETURN(STRING_LIST, result); } /*********************************************************************************************************************************** Get the remote protocol client ***********************************************************************************************************************************/ ProtocolClient * protocolRemoteGet(ProtocolStorageType protocolStorageType, unsigned int hostId) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(ENUM, protocolStorageType); FUNCTION_LOG_PARAM(UINT, hostId); FUNCTION_LOG_END(); ASSERT(hostId > 0); // Is this a repo remote? bool isRepo = protocolStorageType == protocolStorageTypeRepo; protocolHelperInit(); // Allocate the client cache if (protocolHelper.clientRemoteSize == 0) { MEM_CONTEXT_BEGIN(protocolHelper.memContext) { // The number of remotes allowed is the greater of allowed repo or pg configs + 1 (0 is reserved for connections from // the main process). Since these are static and only one will be true it presents a problem for coverage. We think // that pg remotes will always be greater but we'll protect that assumption with an assertion. ASSERT(cfgDefOptionIndexTotal(cfgDefOptPgPath) >= cfgDefOptionIndexTotal(cfgDefOptRepoPath)); protocolHelper.clientRemoteSize = cfgDefOptionIndexTotal(cfgDefOptPgPath) + 1; protocolHelper.clientRemote = memNew(protocolHelper.clientRemoteSize * sizeof(ProtocolHelperClient)); for (unsigned int clientIdx = 0; clientIdx < protocolHelper.clientRemoteSize; clientIdx++) protocolHelper.clientRemote[clientIdx] = (ProtocolHelperClient){.exec = NULL}; } MEM_CONTEXT_END(); } // Determine protocol id for the remote. If the process option is set then use that since we want the remote protocol id to // match the local protocol id. Otherwise set to 0 since the remote is being started from a main process and there should only // be one remote per host. unsigned int protocolId = 0; // Use hostId to determine where to cache to remote unsigned int protocolIdx = hostId - 1; if (cfgOptionTest(cfgOptProcess)) protocolId = cfgOptionUInt(cfgOptProcess); CHECK(protocolIdx < protocolHelper.clientRemoteSize); // Create protocol object ProtocolHelperClient *protocolHelperClient = &protocolHelper.clientRemote[protocolIdx]; if (protocolHelperClient->client == NULL) { MEM_CONTEXT_BEGIN(protocolHelper.memContext) { unsigned int optHost = isRepo ? cfgOptRepoHost : cfgOptPgHost + hostId - 1; // Execute the protocol command protocolHelperClient->exec = execNew( cfgOptionStr(cfgOptCmdSsh), protocolRemoteParam(protocolStorageType, protocolId, hostId - 1), strNewFmt(PROTOCOL_SERVICE_REMOTE "-%u process on '%s'", protocolId, strPtr(cfgOptionStr(optHost))), (TimeMSec)(cfgOptionDbl(cfgOptProtocolTimeout) * 1000)); execOpen(protocolHelperClient->exec); // Create protocol object protocolHelperClient->client = protocolClientNew( strNewFmt(PROTOCOL_SERVICE_REMOTE "-%u protocol on '%s'", protocolId, strPtr(cfgOptionStr(optHost))), PROTOCOL_SERVICE_REMOTE_STR, execIoRead(protocolHelperClient->exec), execIoWrite(protocolHelperClient->exec)); // Get cipher options from the remote if none are locally configured if (isRepo && strEq(cfgOptionStr(cfgOptRepoCipherType), CIPHER_TYPE_NONE_STR)) { // Options to query VariantList *param = varLstNew(); varLstAdd(param, varNewStr(CFGOPT_REPO1_CIPHER_TYPE_STR)); varLstAdd(param, varNewStr(CFGOPT_REPO1_CIPHER_PASS_STR)); VariantList *optionList = configProtocolOption(protocolHelperClient->client, param); if (!strEq(varStr(varLstGet(optionList, 0)), CIPHER_TYPE_NONE_STR)) { cfgOptionSet(cfgOptRepoCipherType, cfgSourceConfig, varLstGet(optionList, 0)); cfgOptionSet(cfgOptRepoCipherPass, cfgSourceConfig, varLstGet(optionList, 1)); } } protocolClientMove(protocolHelperClient->client, execMemContext(protocolHelperClient->exec)); } MEM_CONTEXT_END(); } FUNCTION_LOG_RETURN(PROTOCOL_CLIENT, protocolHelperClient->client); } /**********************************************************************************************************************************/ void protocolRemoteFree(unsigned int hostId) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(UINT, hostId); FUNCTION_LOG_END(); ASSERT(hostId > 0); if (protocolHelper.clientRemote != NULL) { ProtocolHelperClient *protocolHelperClient = &protocolHelper.clientRemote[hostId - 1]; if (protocolHelperClient->client != NULL) { protocolClientFree(protocolHelperClient->client); execFree(protocolHelperClient->exec); protocolHelperClient->client = NULL; protocolHelperClient->exec = NULL; } } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Send keepalives to all remotes ***********************************************************************************************************************************/ void protocolKeepAlive(void) { FUNCTION_LOG_VOID(logLevelTrace); if (protocolHelper.memContext != NULL) { for (unsigned int clientIdx = 0; clientIdx < protocolHelper.clientRemoteSize; clientIdx++) { if (protocolHelper.clientRemote[clientIdx].client != NULL) protocolClientNoOp(protocolHelper.clientRemote[clientIdx].client); } } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ ProtocolStorageType protocolStorageTypeEnum(const String *type) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, type); FUNCTION_TEST_END(); ASSERT(type != NULL); if (strEq(type, PROTOCOL_REMOTE_TYPE_PG_STR)) FUNCTION_TEST_RETURN(protocolStorageTypePg); else if (strEq(type, PROTOCOL_REMOTE_TYPE_REPO_STR)) FUNCTION_TEST_RETURN(protocolStorageTypeRepo); THROW_FMT(AssertError, "invalid protocol storage type '%s'", strPtr(type)); } const String * protocolStorageTypeStr(ProtocolStorageType type) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(ENUM, type); FUNCTION_TEST_END(); switch (type) { case protocolStorageTypePg: FUNCTION_TEST_RETURN(PROTOCOL_REMOTE_TYPE_PG_STR); case protocolStorageTypeRepo: FUNCTION_TEST_RETURN(PROTOCOL_REMOTE_TYPE_REPO_STR); } THROW_FMT(AssertError, "invalid protocol storage type %u", type); } /*********************************************************************************************************************************** Free the protocol objects and shutdown processes ***********************************************************************************************************************************/ void protocolFree(void) { FUNCTION_LOG_VOID(logLevelTrace); if (protocolHelper.memContext != NULL) { // Free remotes for (unsigned int clientIdx = 0; clientIdx < protocolHelper.clientRemoteSize; clientIdx++) protocolRemoteFree(clientIdx + 1); // Free locals for (unsigned int clientIdx = 0; clientIdx < protocolHelper.clientLocalSize; clientIdx++) { ProtocolHelperClient *protocolHelperClient = &protocolHelper.clientLocal[clientIdx]; if (protocolHelperClient->client != NULL) { protocolClientFree(protocolHelperClient->client); execFree(protocolHelperClient->exec); *protocolHelperClient = (ProtocolHelperClient){.exec = NULL}; } } } FUNCTION_LOG_RETURN_VOID(); } pgbackrest-release-2.24/src/protocol/helper.h000066400000000000000000000056271362531507100213010ustar00rootroot00000000000000/*********************************************************************************************************************************** Protocol Helper ***********************************************************************************************************************************/ #ifndef PROTOCOL_HELPER_H #define PROTOCOL_HELPER_H /*********************************************************************************************************************************** Protocol storage type enum ***********************************************************************************************************************************/ typedef enum { protocolStorageTypeRepo, protocolStorageTypePg, } ProtocolStorageType; #include "protocol/client.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define PROTOCOL_SERVICE_LOCAL "local" STRING_DECLARE(PROTOCOL_SERVICE_LOCAL_STR); #define PROTOCOL_SERVICE_REMOTE "remote" STRING_DECLARE(PROTOCOL_SERVICE_REMOTE_STR); #define PROTOCOL_REMOTE_TYPE_PG "pg" #define PROTOCOL_REMOTE_TYPE_REPO "repo" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void protocolKeepAlive(void); ProtocolClient *protocolLocalGet(ProtocolStorageType protocolStorageType, unsigned int hostId, unsigned int protocolId); ProtocolClient *protocolRemoteGet(ProtocolStorageType protocolStorageType, unsigned int hostId); // Free (shutdown) a remote void protocolRemoteFree(unsigned int hostId); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ bool pgIsLocal(unsigned int hostId); // Error if PostgreSQL is not local, i.e. pg-host is set void pgIsLocalVerify(void); bool repoIsLocal(void); void repoIsLocalVerify(void); // Get enum/string for protocol storage type ProtocolStorageType protocolStorageTypeEnum(const String *type); const String *protocolStorageTypeStr(ProtocolStorageType type); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void protocolFree(void); #endif pgbackrest-release-2.24/src/protocol/parallel.c000066400000000000000000000255561362531507100216140ustar00rootroot00000000000000/*********************************************************************************************************************************** Protocol Parallel Executor ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "common/type/json.h" #include "common/type/keyValue.h" #include "common/type/list.h" #include "protocol/command.h" #include "protocol/parallel.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct ProtocolParallel { MemContext *memContext; TimeMSec timeout; // Max time to wait for jobs before returning ParallelJobCallback *callbackFunction; // Function to get new jobs void *callbackData; // Data to pass to callback function List *clientList; // List of clients to process jobs List *jobList; // List of jobs to be processed ProtocolParallelJob **clientJobList; // Jobs being processing by each client ProtocolParallelJobState state; // Overall state of job processing }; OBJECT_DEFINE_FREE(PROTOCOL_PARALLEL); /*********************************************************************************************************************************** Create object ***********************************************************************************************************************************/ ProtocolParallel * protocolParallelNew(TimeMSec timeout, ParallelJobCallback *callbackFunction, void *callbackData) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(UINT64, timeout); FUNCTION_LOG_PARAM(FUNCTIONP, callbackFunction); FUNCTION_LOG_PARAM_P(VOID, callbackData); FUNCTION_LOG_END(); ASSERT(callbackFunction != NULL); ASSERT(callbackData != NULL); ProtocolParallel *this = NULL; MEM_CONTEXT_NEW_BEGIN("ProtocolParallel") { this = memNew(sizeof(ProtocolParallel)); *this = (ProtocolParallel) { .memContext = MEM_CONTEXT_NEW(), .timeout = timeout, .callbackFunction = callbackFunction, .callbackData = callbackData, .clientList = lstNew(sizeof(ProtocolClient *)), .jobList = lstNew(sizeof(ProtocolParallelJob *)), .state = protocolParallelJobStatePending, }; } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(PROTOCOL_PARALLEL, this); } /*********************************************************************************************************************************** Add client ***********************************************************************************************************************************/ void protocolParallelClientAdd(ProtocolParallel *this, ProtocolClient *client) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PROTOCOL_PARALLEL, this); FUNCTION_LOG_PARAM(PROTOCOL_CLIENT, client); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(client != NULL); ASSERT(this->state == protocolParallelJobStatePending); if (ioReadHandle(protocolClientIoRead(client)) == -1) THROW(AssertError, "client with read handle is required"); lstAdd(this->clientList, &client); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Process jobs ***********************************************************************************************************************************/ unsigned int protocolParallelProcess(ProtocolParallel *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PROTOCOL_PARALLEL, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->state != protocolParallelJobStateDone); unsigned int result = 0; // If called for the first time, initialize processing if (this->state == protocolParallelJobStatePending) { MEM_CONTEXT_BEGIN(this->memContext) { this->clientJobList = memNewPtrArray(lstSize(this->clientList)); } MEM_CONTEXT_END(); this->state = protocolParallelJobStateRunning; } // Initialize the file descriptor set used for select fd_set selectSet; FD_ZERO(&selectSet); int handleMax = -1; // Find clients that are running jobs unsigned int clientRunningTotal = 0; for (unsigned int clientIdx = 0; clientIdx < lstSize(this->clientList); clientIdx++) { if (this->clientJobList[clientIdx] != NULL) { int handle = ioReadHandle(protocolClientIoRead(*(ProtocolClient **)lstGet(this->clientList, clientIdx))); FD_SET((unsigned int)handle, &selectSet); // Find the max file handle needed for select() MAX_ASSIGN(handleMax, handle); clientRunningTotal++; } } // If clients are running then wait for one to finish if (clientRunningTotal > 0) { // Initialize timeout struct used for select. Recreate this structure each time since Linux (at least) will modify it. struct timeval timeoutSelect; timeoutSelect.tv_sec = (time_t)(this->timeout / MSEC_PER_SEC); timeoutSelect.tv_usec = (time_t)(this->timeout % MSEC_PER_SEC * 1000); // Determine if there is data to be read int completed = select(handleMax + 1, &selectSet, NULL, NULL, &timeoutSelect); THROW_ON_SYS_ERROR(completed == -1, AssertError, "unable to select from parallel client(s)"); // If any jobs have completed then get the results if (completed > 0) { for (unsigned int clientIdx = 0; clientIdx < lstSize(this->clientList); clientIdx++) { ProtocolParallelJob *job = this->clientJobList[clientIdx]; if (job != NULL && FD_ISSET( (unsigned int)ioReadHandle(protocolClientIoRead(*(ProtocolClient **)lstGet(this->clientList, clientIdx))), &selectSet)) { MEM_CONTEXT_TEMP_BEGIN() { TRY_BEGIN() { protocolParallelJobResultSet( job, protocolClientReadOutput(*(ProtocolClient **)lstGet(this->clientList, clientIdx), true)); } CATCH_ANY() { protocolParallelJobErrorSet(job, errorCode(), STR(errorMessage())); } TRY_END(); protocolParallelJobStateSet(job, protocolParallelJobStateDone); this->clientJobList[clientIdx] = NULL; } MEM_CONTEXT_TEMP_END(); } } result = (unsigned int)completed; } } // Find new jobs to be run for (unsigned int clientIdx = 0; clientIdx < lstSize(this->clientList); clientIdx++) { // If nothing is running for this client if (this->clientJobList[clientIdx] == NULL) { // Get a new job ProtocolParallelJob *job = NULL; MEM_CONTEXT_BEGIN(lstMemContext(this->jobList)) { job = this->callbackFunction(this->callbackData, clientIdx); } MEM_CONTEXT_END(); // If a new job was found if (job != NULL) { // Add to the job list lstAdd(this->jobList, &job); // Send the job to the client protocolClientWriteCommand( *(ProtocolClient **)lstGet(this->clientList, clientIdx), protocolParallelJobCommand(job)); // Set client id and running state protocolParallelJobProcessIdSet(job, clientIdx + 1); protocolParallelJobStateSet(job, protocolParallelJobStateRunning); this->clientJobList[clientIdx] = job; } } } FUNCTION_LOG_RETURN(UINT, result); } /*********************************************************************************************************************************** Get a completed job result ***********************************************************************************************************************************/ ProtocolParallelJob * protocolParallelResult(ProtocolParallel *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PROTOCOL_PARALLEL, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->state == protocolParallelJobStateRunning); ProtocolParallelJob *result = NULL; // Find the next completed job for (unsigned int jobIdx = 0; jobIdx < lstSize(this->jobList); jobIdx++) { ProtocolParallelJob *job = *(ProtocolParallelJob **)lstGet(this->jobList, jobIdx); if (protocolParallelJobState(job) == protocolParallelJobStateDone) { result = protocolParallelJobMove(job, memContextCurrent()); lstRemoveIdx(this->jobList, jobIdx); break; } } // If all jobs have been returned then we are done if (lstSize(this->jobList) == 0) this->state = protocolParallelJobStateDone; FUNCTION_LOG_RETURN(PROTOCOL_PARALLEL_JOB, result); } /*********************************************************************************************************************************** Process jobs ***********************************************************************************************************************************/ bool protocolParallelDone(const ProtocolParallel *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PROTOCOL_PARALLEL, this); FUNCTION_LOG_END(); FUNCTION_LOG_RETURN(BOOL, this->state == protocolParallelJobStateDone); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * protocolParallelToLog(const ProtocolParallel *this) { return strNewFmt( "{state: %s, clientTotal: %u, jobTotal: %u}", protocolParallelJobToConstZ(this->state), lstSize(this->clientList), lstSize(this->jobList)); } pgbackrest-release-2.24/src/protocol/parallel.h000066400000000000000000000073341362531507100216130ustar00rootroot00000000000000/*********************************************************************************************************************************** Protocol Parallel Executor ***********************************************************************************************************************************/ #ifndef PROTOCOL_PARALLEL_H #define PROTOCOL_PARALLEL_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define PROTOCOL_PARALLEL_TYPE ProtocolParallel #define PROTOCOL_PARALLEL_PREFIX protocolParallel typedef struct ProtocolParallel ProtocolParallel; #include "common/time.h" #include "protocol/client.h" #include "protocol/parallelJob.h" /*********************************************************************************************************************************** Job request callback Called whenever a new job is required for processing. If no more jobs are available then NULL is returned. Note that NULL must be returned to each clientIdx in case job distribution varies by clientIdx. ***********************************************************************************************************************************/ typedef ProtocolParallelJob *ParallelJobCallback(void *data, unsigned int clientIdx); /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ ProtocolParallel *protocolParallelNew(TimeMSec timeout, ParallelJobCallback *callbackFunction, void *callbackData); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void protocolParallelClientAdd(ProtocolParallel *this, ProtocolClient *client); unsigned int protocolParallelProcess(ProtocolParallel *this); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ bool protocolParallelDone(const ProtocolParallel *this); ProtocolParallelJob *protocolParallelResult(ProtocolParallel *this); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void protocolParallelFree(ProtocolParallel *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *protocolParallelToLog(const ProtocolParallel *this); #define FUNCTION_LOG_PROTOCOL_PARALLEL_TYPE \ ProtocolParallel * #define FUNCTION_LOG_PROTOCOL_PARALLEL_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, protocolParallelToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/protocol/parallelJob.c000066400000000000000000000226441362531507100222420ustar00rootroot00000000000000/*********************************************************************************************************************************** Protocol Parallel Job ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "protocol/command.h" #include "protocol/parallelJob.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct ProtocolParallelJob { MemContext *memContext; // Job mem context ProtocolParallelJobState state; // Current state of the job const Variant *key; // Unique key used to identify the job const ProtocolCommand *command; // Command to be executed unsigned int processId; // Process that executed this job int code; // Non-zero result indicates an error String *message; // Message if there was a error const Variant *result; // Result if job was successful }; OBJECT_DEFINE_MOVE(PROTOCOL_PARALLEL_JOB); OBJECT_DEFINE_FREE(PROTOCOL_PARALLEL_JOB); /*********************************************************************************************************************************** Create object ***********************************************************************************************************************************/ ProtocolParallelJob * protocolParallelJobNew(const Variant *key, ProtocolCommand *command) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(VARIANT, key); FUNCTION_LOG_PARAM(PROTOCOL_COMMAND, command); FUNCTION_LOG_END(); ProtocolParallelJob *this = NULL; MEM_CONTEXT_NEW_BEGIN("ProtocolParallelJob") { this = memNew(sizeof(ProtocolParallelJob)); *this = (ProtocolParallelJob) { .memContext = memContextCurrent(), .state = protocolParallelJobStatePending, .key = varDup(key), }; this->command = protocolCommandMove(command, this->memContext); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(PROTOCOL_PARALLEL_JOB, this); } /*********************************************************************************************************************************** Get job command ***********************************************************************************************************************************/ const ProtocolCommand * protocolParallelJobCommand(const ProtocolParallelJob *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(PROTOCOL_PARALLEL_JOB, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->command); } /*********************************************************************************************************************************** Get/set job error ***********************************************************************************************************************************/ int protocolParallelJobErrorCode(const ProtocolParallelJob *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(PROTOCOL_PARALLEL_JOB, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->code); } const String * protocolParallelJobErrorMessage(const ProtocolParallelJob *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(PROTOCOL_PARALLEL_JOB, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->message); } void protocolParallelJobErrorSet(ProtocolParallelJob *this, int code, const String *message) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PROTOCOL_PARALLEL_JOB, this); FUNCTION_LOG_PARAM(INT, code); FUNCTION_LOG_PARAM(STRING, message); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(code != 0); ASSERT(message != NULL); MEM_CONTEXT_BEGIN(this->memContext) { this->code = code; this->message = strDup(message); } MEM_CONTEXT_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Get job key ***********************************************************************************************************************************/ const Variant * protocolParallelJobKey(const ProtocolParallelJob *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(PROTOCOL_PARALLEL_JOB, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->key); } /*********************************************************************************************************************************** Get/set process id ***********************************************************************************************************************************/ unsigned int protocolParallelJobProcessId(const ProtocolParallelJob *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(PROTOCOL_PARALLEL_JOB, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->processId); } void protocolParallelJobProcessIdSet(ProtocolParallelJob *this, unsigned int processId) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PROTOCOL_PARALLEL_JOB, this); FUNCTION_LOG_PARAM(UINT, processId); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(processId > 0); this ->processId = processId; FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Get/set job result ***********************************************************************************************************************************/ const Variant * protocolParallelJobResult(const ProtocolParallelJob *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(PROTOCOL_PARALLEL_JOB, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->result); } void protocolParallelJobResultSet(ProtocolParallelJob *this, const Variant *result) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PROTOCOL_PARALLEL_JOB, this); FUNCTION_LOG_PARAM(VARIANT, result); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->code == 0); MEM_CONTEXT_BEGIN(this->memContext) { this->result = varDup(result); } MEM_CONTEXT_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Get/set state ***********************************************************************************************************************************/ ProtocolParallelJobState protocolParallelJobState(const ProtocolParallelJob *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(PROTOCOL_PARALLEL_JOB, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->state); } void protocolParallelJobStateSet(ProtocolParallelJob *this, ProtocolParallelJobState state) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PROTOCOL_PARALLEL_JOB, this); FUNCTION_LOG_PARAM(ENUM, state); FUNCTION_LOG_END(); ASSERT(this != NULL); if (this->state == protocolParallelJobStatePending && state == protocolParallelJobStateRunning) this->state = protocolParallelJobStateRunning; else if (this->state == protocolParallelJobStateRunning && state == protocolParallelJobStateDone) this->state = protocolParallelJobStateDone; else { THROW_FMT( AssertError, "invalid state transition from '%s' to '%s'", protocolParallelJobToConstZ(this->state), protocolParallelJobToConstZ(state)); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ const char * protocolParallelJobToConstZ(ProtocolParallelJobState state) { const char *result = NULL; switch (state) { case protocolParallelJobStatePending: { result = "pending"; break; } case protocolParallelJobStateRunning: { result = "running"; break; } case protocolParallelJobStateDone: { result = "done"; break; } } return result; } String * protocolParallelJobToLog(const ProtocolParallelJob *this) { return strNewFmt( "{state: %s, key: %s, command: %s, code: %d, message: %s, result: %s}", protocolParallelJobToConstZ(this->state), strPtr(varToLog(this->key)), strPtr(protocolCommandToLog(this->command)), this->code, strPtr(strToLog(this->message)), strPtr(varToLog(this->result))); } pgbackrest-release-2.24/src/protocol/parallelJob.h000066400000000000000000000105271362531507100222440ustar00rootroot00000000000000/*********************************************************************************************************************************** Protocol Parallel Job ***********************************************************************************************************************************/ #ifndef PROTOCOL_PARALLEL_JOB_H #define PROTOCOL_PARALLEL_JOB_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define PROTOCOL_PARALLEL_JOB_TYPE ProtocolParallelJob #define PROTOCOL_PARALLEL_JOB_PREFIX protocolParallelJob typedef struct ProtocolParallelJob ProtocolParallelJob; /*********************************************************************************************************************************** Job state enum ***********************************************************************************************************************************/ typedef enum { protocolParallelJobStatePending, protocolParallelJobStateRunning, protocolParallelJobStateDone, } ProtocolParallelJobState; #include "common/time.h" #include "protocol/client.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ ProtocolParallelJob *protocolParallelJobNew(const Variant *key, ProtocolCommand *command); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ ProtocolParallelJob *protocolParallelJobMove(ProtocolParallelJob *this, MemContext *parentNew); /*********************************************************************************************************************************** Getters/Setters ***********************************************************************************************************************************/ const ProtocolCommand *protocolParallelJobCommand(const ProtocolParallelJob *this); int protocolParallelJobErrorCode(const ProtocolParallelJob *this); const String *protocolParallelJobErrorMessage(const ProtocolParallelJob *this); void protocolParallelJobErrorSet(ProtocolParallelJob *this, int code, const String *message); const Variant *protocolParallelJobKey(const ProtocolParallelJob *this); unsigned int protocolParallelJobProcessId(const ProtocolParallelJob *this); void protocolParallelJobProcessIdSet(ProtocolParallelJob *this, unsigned int processId); const Variant *protocolParallelJobResult(const ProtocolParallelJob *this); void protocolParallelJobResultSet(ProtocolParallelJob *this, const Variant *result); ProtocolParallelJobState protocolParallelJobState(const ProtocolParallelJob *this); void protocolParallelJobStateSet(ProtocolParallelJob *this, ProtocolParallelJobState state); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void protocolParallelJobFree(ProtocolParallelJob *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ const char *protocolParallelJobToConstZ(ProtocolParallelJobState state); String *protocolParallelJobToLog(const ProtocolParallelJob *this); #define FUNCTION_LOG_PROTOCOL_PARALLEL_JOB_TYPE \ ProtocolParallelJob * #define FUNCTION_LOG_PROTOCOL_PARALLEL_JOB_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, protocolParallelJobToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/protocol/server.c000066400000000000000000000245221362531507100213160ustar00rootroot00000000000000/*********************************************************************************************************************************** Protocol Server ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "common/time.h" #include "common/type/json.h" #include "common/type/keyValue.h" #include "common/type/list.h" #include "protocol/client.h" #include "protocol/helper.h" #include "protocol/server.h" #include "version.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct ProtocolServer { MemContext *memContext; const String *name; IoRead *read; IoWrite *write; List *handlerList; }; OBJECT_DEFINE_MOVE(PROTOCOL_SERVER); OBJECT_DEFINE_FREE(PROTOCOL_SERVER); /*********************************************************************************************************************************** Create object ***********************************************************************************************************************************/ ProtocolServer * protocolServerNew(const String *name, const String *service, IoRead *read, IoWrite *write) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, name); FUNCTION_LOG_PARAM(STRING, service); FUNCTION_LOG_PARAM(IO_READ, read); FUNCTION_LOG_PARAM(IO_WRITE, write); FUNCTION_LOG_END(); ASSERT(name != NULL); ASSERT(read != NULL); ASSERT(write != NULL); ProtocolServer *this = NULL; MEM_CONTEXT_NEW_BEGIN("ProtocolServer") { this = memNew(sizeof(ProtocolServer)); *this = (ProtocolServer) { .memContext = memContextCurrent(), .name = strDup(name), .read = read, .write = write, .handlerList = lstNew(sizeof(ProtocolServerProcessHandler)), }; // Send the protocol greeting MEM_CONTEXT_TEMP_BEGIN() { KeyValue *greetingKv = kvNew(); kvPut(greetingKv, VARSTR(PROTOCOL_GREETING_NAME_STR), VARSTRZ(PROJECT_NAME)); kvPut(greetingKv, VARSTR(PROTOCOL_GREETING_SERVICE_STR), VARSTR(service)); kvPut(greetingKv, VARSTR(PROTOCOL_GREETING_VERSION_STR), VARSTRZ(PROJECT_VERSION)); ioWriteStrLine(this->write, jsonFromKv(greetingKv)); ioWriteFlush(this->write); } MEM_CONTEXT_TEMP_END(); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(PROTOCOL_SERVER, this); } /*********************************************************************************************************************************** Add a new handler ***********************************************************************************************************************************/ void protocolServerHandlerAdd(ProtocolServer *this, ProtocolServerProcessHandler handler) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PROTOCOL_SERVER, this); FUNCTION_LOG_PARAM(FUNCTIONP, handler); FUNCTION_LOG_END(); lstAdd(this->handlerList, &handler); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Return an error ***********************************************************************************************************************************/ void protocolServerError(ProtocolServer *this, int code, const String *message, const String *stack) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PROTOCOL_SERVER, this); FUNCTION_LOG_PARAM(INT, code); FUNCTION_LOG_PARAM(STRING, message); FUNCTION_LOG_PARAM(STRING, stack); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(code != 0); ASSERT(message != NULL); ASSERT(stack != NULL); KeyValue *error = kvNew(); kvPut(error, VARSTR(PROTOCOL_ERROR_STR), VARINT(code)); kvPut(error, VARSTR(PROTOCOL_OUTPUT_STR), VARSTR(message)); kvPut(error, VARSTR(PROTOCOL_ERROR_STACK_STR), VARSTR(stack)); ioWriteStrLine(this->write, jsonFromKv(error)); ioWriteFlush(this->write); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Process requests ***********************************************************************************************************************************/ void protocolServerProcess(ProtocolServer *this) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(PROTOCOL_SERVER, this); FUNCTION_LOG_END(); // Loop until exit command is received bool exit = false; do { TRY_BEGIN() { MEM_CONTEXT_TEMP_BEGIN() { // Read command KeyValue *commandKv = jsonToKv(ioReadLine(this->read)); const String *command = varStr(kvGet(commandKv, VARSTR(PROTOCOL_KEY_COMMAND_STR))); VariantList *paramList = varVarLst(kvGet(commandKv, VARSTR(PROTOCOL_KEY_PARAMETER_STR))); // Process command bool found = false; for (unsigned int handlerIdx = 0; handlerIdx < lstSize(this->handlerList); handlerIdx++) { // Get the next handler ProtocolServerProcessHandler handler = *(ProtocolServerProcessHandler *)lstGet(this->handlerList, handlerIdx); // Send the command to the handler. Run the handler in the server's memory context in case any persistent data // needs to be stored by the handler. MEM_CONTEXT_BEGIN(this->memContext) { found = handler(command, paramList, this); } MEM_CONTEXT_END(); // If the handler processed the command then exit the handler loop if (found) break; } if (!found) { if (strEq(command, PROTOCOL_COMMAND_NOOP_STR)) protocolServerResponse(this, NULL); else if (strEq(command, PROTOCOL_COMMAND_EXIT_STR)) exit = true; else THROW_FMT(ProtocolError, "invalid command '%s'", strPtr(command)); } // Send keep alives to remotes. When a local process is doing work that does not involve the remote it is important // that the remote does not timeout. This will send a keep alive once per unit of work that is performed by the // local process. protocolKeepAlive(); } MEM_CONTEXT_TEMP_END(); } CATCH_ANY() { // Report error to the client protocolServerError(this, errorCode(), STR(errorMessage()), STR(errorStackTrace())); } TRY_END(); } while (!exit); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Respond to request with output if provided ***********************************************************************************************************************************/ void protocolServerResponse(ProtocolServer *this, const Variant *output) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PROTOCOL_SERVER, this); FUNCTION_LOG_PARAM(VARIANT, output); FUNCTION_LOG_END(); KeyValue *result = kvNew(); if (output != NULL) kvAdd(result, VARSTR(PROTOCOL_OUTPUT_STR), output); ioWriteStrLine(this->write, jsonFromKv(result)); ioWriteFlush(this->write); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Write a line ***********************************************************************************************************************************/ void protocolServerWriteLine(const ProtocolServer *this, const String *line) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(PROTOCOL_SERVER, this); FUNCTION_LOG_PARAM(STRING, line); FUNCTION_LOG_END(); ASSERT(this != NULL); // Dot indicates the start of an lf-terminated line ioWrite(this->write, DOT_BUF); // Write the line if it exists if (line != NULL) ioWriteStr(this->write, line); // Terminate with a linefeed ioWrite(this->write, LF_BUF); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Get read interface ***********************************************************************************************************************************/ IoRead * protocolServerIoRead(const ProtocolServer *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(PROTOCOL_SERVER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->read); } /*********************************************************************************************************************************** Get write interface ***********************************************************************************************************************************/ IoWrite * protocolServerIoWrite(const ProtocolServer *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(PROTOCOL_SERVER, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->write); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * protocolServerToLog(const ProtocolServer *this) { return strNewFmt("{name: %s}", strPtr(this->name)); } pgbackrest-release-2.24/src/protocol/server.h000066400000000000000000000074701362531507100213260ustar00rootroot00000000000000/*********************************************************************************************************************************** Protocol Server ***********************************************************************************************************************************/ #ifndef PROTOCOL_SERVER_H #define PROTOCOL_SERVER_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define PROTOCOL_SERVER_TYPE ProtocolServer #define PROTOCOL_SERVER_PREFIX protocolServer typedef struct ProtocolServer ProtocolServer; #include "common/io/read.h" #include "common/io/write.h" /*********************************************************************************************************************************** Protocol process handler type ***********************************************************************************************************************************/ typedef bool (*ProtocolServerProcessHandler)(const String *command, const VariantList *paramList, ProtocolServer *server); /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ ProtocolServer *protocolServerNew(const String *name, const String *service, IoRead *read, IoWrite *write); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void protocolServerError(ProtocolServer *this, int code, const String *message, const String *stack); void protocolServerProcess(ProtocolServer *this); void protocolServerResponse(ProtocolServer *this, const Variant *output); void protocolServerHandlerAdd(ProtocolServer *this, ProtocolServerProcessHandler handler); ProtocolServer *protocolServerMove(ProtocolServer *this, MemContext *parentNew); void protocolServerWriteLine(const ProtocolServer *this, const String *line); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ IoRead *protocolServerIoRead(const ProtocolServer *this); IoWrite *protocolServerIoWrite(const ProtocolServer *this); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void protocolServerFree(ProtocolServer *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *protocolServerToLog(const ProtocolServer *this); #define FUNCTION_LOG_PROTOCOL_SERVER_TYPE \ ProtocolServer * #define FUNCTION_LOG_PROTOCOL_SERVER_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, protocolServerToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/storage/000077500000000000000000000000001362531507100174425ustar00rootroot00000000000000pgbackrest-release-2.24/src/storage/cifs/000077500000000000000000000000001362531507100203665ustar00rootroot00000000000000pgbackrest-release-2.24/src/storage/cifs/storage.c000066400000000000000000000033151362531507100222000ustar00rootroot00000000000000/*********************************************************************************************************************************** CIFS Storage ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "common/regExp.h" #include "storage/cifs/storage.h" #include "storage/posix/storage.intern.h" /*********************************************************************************************************************************** Storage type ***********************************************************************************************************************************/ STRING_EXTERN(STORAGE_CIFS_TYPE_STR, STORAGE_CIFS_TYPE); /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ Storage * storageCifsNew( const String *path, mode_t modeFile, mode_t modePath, bool write, StoragePathExpressionCallback pathExpressionFunction) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, path); FUNCTION_LOG_PARAM(MODE, modeFile); FUNCTION_LOG_PARAM(MODE, modePath); FUNCTION_LOG_PARAM(BOOL, write); FUNCTION_LOG_PARAM(FUNCTIONP, pathExpressionFunction); FUNCTION_LOG_END(); FUNCTION_LOG_RETURN( STORAGE, storagePosixNewInternal(STORAGE_CIFS_TYPE_STR, path, modeFile, modePath, write, pathExpressionFunction, false)); } pgbackrest-release-2.24/src/storage/cifs/storage.h000066400000000000000000000022751362531507100222110ustar00rootroot00000000000000/*********************************************************************************************************************************** CIFS Storage ***********************************************************************************************************************************/ #ifndef STORAGE_CIFS_STORAGE_H #define STORAGE_CIFS_STORAGE_H #include "storage/storage.intern.h" /*********************************************************************************************************************************** Storage type ***********************************************************************************************************************************/ #define STORAGE_CIFS_TYPE "cifs" STRING_DECLARE(STORAGE_CIFS_TYPE_STR); /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ Storage *storageCifsNew( const String *path, mode_t modeFile, mode_t modePath, bool write, StoragePathExpressionCallback pathExpressionFunction); #endif pgbackrest-release-2.24/src/storage/helper.c000066400000000000000000000516321362531507100210740ustar00rootroot00000000000000/*********************************************************************************************************************************** Storage Helper ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/debug.h" #include "common/memContext.h" #include "common/regExp.h" #include "config/define.h" #include "config/config.h" #include "protocol/helper.h" #include "storage/cifs/storage.h" #include "storage/posix/storage.h" #include "storage/remote/storage.h" #include "storage/s3/storage.h" #include "storage/helper.h" /*********************************************************************************************************************************** Storage path constants ***********************************************************************************************************************************/ STRING_EXTERN(STORAGE_SPOOL_ARCHIVE_IN_STR, STORAGE_SPOOL_ARCHIVE_IN); STRING_EXTERN(STORAGE_SPOOL_ARCHIVE_OUT_STR, STORAGE_SPOOL_ARCHIVE_OUT); STRING_EXTERN(STORAGE_REPO_ARCHIVE_STR, STORAGE_REPO_ARCHIVE); STRING_EXTERN(STORAGE_REPO_BACKUP_STR, STORAGE_REPO_BACKUP); STRING_EXTERN(STORAGE_PATH_ARCHIVE_STR, STORAGE_PATH_ARCHIVE); STRING_EXTERN(STORAGE_PATH_BACKUP_STR, STORAGE_PATH_BACKUP); /*********************************************************************************************************************************** Local variables ***********************************************************************************************************************************/ static struct StorageHelper { MemContext *memContext; // Mem context for storage helper Storage *storageLocal; // Local read-only storage Storage *storageLocalWrite; // Local write storage Storage **storagePg; // PostgreSQL read-only storage Storage **storagePgWrite; // PostgreSQL write storage Storage *storageRepo; // Repository read-only storage Storage *storageRepoWrite; // Repository write storage Storage *storageSpool; // Spool read-only storage Storage *storageSpoolWrite; // Spool write storage String *stanza; // Stanza for storage bool stanzaInit; // Has the stanza been initialized? RegExp *walRegExp; // Regular expression for identifying wal files } storageHelper; /*********************************************************************************************************************************** Create the storage helper memory context ***********************************************************************************************************************************/ static void storageHelperInit(void) { FUNCTION_TEST_VOID(); if (storageHelper.memContext == NULL) { MEM_CONTEXT_BEGIN(memContextTop()) { MEM_CONTEXT_NEW_BEGIN("StorageHelper") { storageHelper.memContext = MEM_CONTEXT_NEW(); } MEM_CONTEXT_NEW_END(); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Initialize the stanza and error if it changes ***********************************************************************************************************************************/ static void storageHelperStanzaInit(const bool stanzaRequired) { FUNCTION_TEST_VOID(); // If the stanza is NULL and the storage has not already been initialized then initialize the stanza if (!storageHelper.stanzaInit) { if (stanzaRequired && cfgOptionStr(cfgOptStanza) == NULL) THROW(AssertError, "stanza cannot be NULL for this storage object"); MEM_CONTEXT_BEGIN(storageHelper.memContext) { storageHelper.stanza = strDup(cfgOptionStr(cfgOptStanza)); storageHelper.stanzaInit = true; } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Get a local storage object ***********************************************************************************************************************************/ const Storage * storageLocal(void) { FUNCTION_TEST_VOID(); if (storageHelper.storageLocal == NULL) { storageHelperInit(); MEM_CONTEXT_BEGIN(storageHelper.memContext) { storageHelper.storageLocal = storagePosixNew( FSLASH_STR, STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, false, NULL); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN(storageHelper.storageLocal); } /*********************************************************************************************************************************** Get a writable local storage object This should be used very sparingly. If writes are not needed then always use storageLocal() or a specific storage object instead. ***********************************************************************************************************************************/ const Storage * storageLocalWrite(void) { FUNCTION_TEST_VOID(); if (storageHelper.storageLocalWrite == NULL) { storageHelperInit(); MEM_CONTEXT_BEGIN(storageHelper.memContext) { storageHelper.storageLocalWrite = storagePosixNew( FSLASH_STR, STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN(storageHelper.storageLocalWrite); } /*********************************************************************************************************************************** Get pg storage for the specified host id ***********************************************************************************************************************************/ static Storage * storagePgGet(unsigned int hostId, bool write) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, hostId); FUNCTION_TEST_PARAM(BOOL, write); FUNCTION_TEST_END(); Storage *result = NULL; // Use remote storage if (!pgIsLocal(hostId)) { result = storageRemoteNew( STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, write, NULL, protocolRemoteGet(protocolStorageTypePg, hostId), cfgOptionUInt(cfgOptCompressLevelNetwork)); } // Use Posix storage else { result = storagePosixNew( cfgOptionStr(cfgOptPgPath + hostId - 1), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, write, NULL); } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Get read-only PostgreSQL storage for a specific host id ***********************************************************************************************************************************/ const Storage * storagePgId(unsigned int hostId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, hostId); FUNCTION_TEST_END(); if (storageHelper.storagePg == NULL || storageHelper.storagePg[hostId - 1] == NULL) { storageHelperInit(); MEM_CONTEXT_BEGIN(storageHelper.memContext) { if (storageHelper.storagePg == NULL) storageHelper.storagePg = memNewPtrArray(cfgDefOptionIndexTotal(cfgDefOptPgPath)); storageHelper.storagePg[hostId - 1] = storagePgGet(hostId, false); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN(storageHelper.storagePg[hostId - 1]); } /*********************************************************************************************************************************** Get read-only PostgreSQL storage for the host-id or the default of 1 ***********************************************************************************************************************************/ const Storage * storagePg(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(storagePgId(cfgOptionTest(cfgOptHostId) ? cfgOptionUInt(cfgOptHostId) : 1)); } /*********************************************************************************************************************************** Get write PostgreSQL storage for a specific host id ***********************************************************************************************************************************/ const Storage * storagePgIdWrite(unsigned int hostId) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(UINT, hostId); FUNCTION_TEST_END(); if (storageHelper.storagePgWrite == NULL || storageHelper.storagePgWrite[hostId - 1] == NULL) { storageHelperInit(); MEM_CONTEXT_BEGIN(storageHelper.memContext) { if (storageHelper.storagePgWrite == NULL) storageHelper.storagePgWrite = memNewPtrArray(cfgDefOptionIndexTotal(cfgDefOptPgPath)); storageHelper.storagePgWrite[hostId - 1] = storagePgGet(hostId, true); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN(storageHelper.storagePgWrite[hostId - 1]); } /*********************************************************************************************************************************** Get write PostgreSQL storage for the host-id or the default of 1 ***********************************************************************************************************************************/ const Storage * storagePgWrite(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN(storagePgIdWrite(cfgOptionTest(cfgOptHostId) ? cfgOptionUInt(cfgOptHostId) : 1)); } /*********************************************************************************************************************************** Create the WAL regular expression ***********************************************************************************************************************************/ static void storageHelperRepoInit(void) { FUNCTION_TEST_VOID(); if (storageHelper.walRegExp == NULL) { MEM_CONTEXT_BEGIN(memContextTop()) { storageHelper.walRegExp = regExpNew(STRDEF("^[0-F]{24}")); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Construct a repo path from an expression and path ***********************************************************************************************************************************/ static String * storageRepoPathExpression(const String *expression, const String *path) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, expression); FUNCTION_TEST_PARAM(STRING, path); FUNCTION_TEST_END(); ASSERT(expression != NULL); String *result = NULL; if (strEq(expression, STORAGE_REPO_ARCHIVE_STR)) { // Construct the base path if (storageHelper.stanza != NULL) result = strNewFmt(STORAGE_PATH_ARCHIVE "/%s", strPtr(storageHelper.stanza)); else result = strNew(STORAGE_PATH_ARCHIVE); // If a subpath should be appended, determine if it is WAL path, else just append the subpath if (path != NULL) { StringList *pathSplit = strLstNewSplitZ(path, "/"); String *file = strLstSize(pathSplit) == 2 ? strLstGet(pathSplit, 1) : NULL; if (file != NULL && regExpMatch(storageHelper.walRegExp, file)) strCatFmt(result, "/%s/%s/%s", strPtr(strLstGet(pathSplit, 0)), strPtr(strSubN(file, 0, 16)), strPtr(file)); else strCatFmt(result, "/%s", strPtr(path)); } } else if (strEq(expression, STORAGE_REPO_BACKUP_STR)) { // Construct the base path if (storageHelper.stanza != NULL) result = strNewFmt(STORAGE_PATH_BACKUP "/%s", strPtr(storageHelper.stanza)); else result = strNew(STORAGE_PATH_BACKUP); // Append subpath if provided if (path != NULL) strCatFmt(result, "/%s", strPtr(path)); } else THROW_FMT(AssertError, "invalid expression '%s'", strPtr(expression)); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Get the repo storage ***********************************************************************************************************************************/ static Storage * storageRepoGet(const String *type, bool write) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, type); FUNCTION_TEST_PARAM(BOOL, write); FUNCTION_TEST_END(); ASSERT(type != NULL); Storage *result = NULL; // Use remote storage if (!repoIsLocal()) { result = storageRemoteNew( STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, write, storageRepoPathExpression, protocolRemoteGet(protocolStorageTypeRepo, 1), cfgOptionUInt(cfgOptCompressLevelNetwork)); } // Use CIFS storage else if (strEqZ(type, STORAGE_TYPE_CIFS)) { result = storageCifsNew( cfgOptionStr(cfgOptRepoPath), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, write, storageRepoPathExpression); } // Use Posix storage else if (strEqZ(type, STORAGE_TYPE_POSIX)) { result = storagePosixNew( cfgOptionStr(cfgOptRepoPath), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, write, storageRepoPathExpression); } // Use S3 storage else if (strEqZ(type, STORAGE_TYPE_S3)) { // Set the default port unsigned int port = cfgOptionUInt(cfgOptRepoS3Port); // Extract port from the endpoint and host if it is present const String *endPoint = cfgOptionHostPort(cfgOptRepoS3Endpoint, &port); const String *host = cfgOptionHostPort(cfgOptRepoS3Host, &port); // If the port option was set explicitly then use it in preference to appended ports if (cfgOptionSource(cfgOptRepoS3Port) != cfgSourceDefault) port = cfgOptionUInt(cfgOptRepoS3Port); result = storageS3New( cfgOptionStr(cfgOptRepoPath), write, storageRepoPathExpression, cfgOptionStr(cfgOptRepoS3Bucket), endPoint, strEqZ(cfgOptionStr(cfgOptRepoS3UriStyle), STORAGE_S3_URI_STYLE_HOST) ? storageS3UriStyleHost : storageS3UriStylePath, cfgOptionStr(cfgOptRepoS3Region), cfgOptionStr(cfgOptRepoS3Key), cfgOptionStr(cfgOptRepoS3KeySecret), cfgOptionTest(cfgOptRepoS3Token) ? cfgOptionStr(cfgOptRepoS3Token) : NULL, STORAGE_S3_PARTSIZE_MIN, STORAGE_S3_DELETE_MAX, host, port, STORAGE_S3_TIMEOUT_DEFAULT, cfgOptionBool(cfgOptRepoS3VerifyTls), cfgOptionTest(cfgOptRepoS3CaFile) ? cfgOptionStr(cfgOptRepoS3CaFile) : NULL, cfgOptionTest(cfgOptRepoS3CaPath) ? cfgOptionStr(cfgOptRepoS3CaPath) : NULL); } else THROW_FMT(AssertError, "invalid storage type '%s'", strPtr(type)); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Get a read-only repository storage object ***********************************************************************************************************************************/ const Storage * storageRepo(void) { FUNCTION_TEST_VOID(); if (storageHelper.storageRepo == NULL) { storageHelperInit(); storageHelperStanzaInit(false); storageHelperRepoInit(); MEM_CONTEXT_BEGIN(storageHelper.memContext) { storageHelper.storageRepo = storageRepoGet(cfgOptionStr(cfgOptRepoType), false); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN(storageHelper.storageRepo); } /*********************************************************************************************************************************** Get a writable repository storage object ***********************************************************************************************************************************/ const Storage * storageRepoWrite(void) { FUNCTION_TEST_VOID(); if (storageHelper.storageRepoWrite == NULL) { storageHelperInit(); storageHelperStanzaInit(false); storageHelperRepoInit(); MEM_CONTEXT_BEGIN(storageHelper.memContext) { storageHelper.storageRepoWrite = storageRepoGet(cfgOptionStr(cfgOptRepoType), true); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN(storageHelper.storageRepoWrite); } /*********************************************************************************************************************************** Get a spool storage object ***********************************************************************************************************************************/ static String * storageSpoolPathExpression(const String *expression, const String *path) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, expression); FUNCTION_TEST_PARAM(STRING, path); FUNCTION_TEST_END(); ASSERT(expression != NULL); ASSERT(storageHelper.stanza != NULL); String *result = NULL; if (strEqZ(expression, STORAGE_SPOOL_ARCHIVE_IN)) { if (path == NULL) result = strNewFmt(STORAGE_PATH_ARCHIVE "/%s/in", strPtr(storageHelper.stanza)); else result = strNewFmt(STORAGE_PATH_ARCHIVE "/%s/in/%s", strPtr(storageHelper.stanza), strPtr(path)); } else if (strEqZ(expression, STORAGE_SPOOL_ARCHIVE_OUT)) { if (path == NULL) result = strNewFmt(STORAGE_PATH_ARCHIVE "/%s/out", strPtr(storageHelper.stanza)); else result = strNewFmt(STORAGE_PATH_ARCHIVE "/%s/out/%s", strPtr(storageHelper.stanza), strPtr(path)); } else THROW_FMT(AssertError, "invalid expression '%s'", strPtr(expression)); FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Get a read-only spool storage object ***********************************************************************************************************************************/ const Storage * storageSpool(void) { FUNCTION_TEST_VOID(); if (storageHelper.storageSpool == NULL) { storageHelperInit(); storageHelperStanzaInit(true); MEM_CONTEXT_BEGIN(storageHelper.memContext) { storageHelper.storageSpool = storagePosixNew( cfgOptionStr(cfgOptSpoolPath), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, false, storageSpoolPathExpression); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN(storageHelper.storageSpool); } /*********************************************************************************************************************************** Get a writable spool storage object ***********************************************************************************************************************************/ const Storage * storageSpoolWrite(void) { FUNCTION_TEST_VOID(); if (storageHelper.storageSpoolWrite == NULL) { storageHelperInit(); storageHelperStanzaInit(true); MEM_CONTEXT_BEGIN(storageHelper.memContext) { storageHelper.storageSpoolWrite = storagePosixNew( cfgOptionStr(cfgOptSpoolPath), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, storageSpoolPathExpression); } MEM_CONTEXT_END(); } FUNCTION_TEST_RETURN(storageHelper.storageSpoolWrite); } /*********************************************************************************************************************************** Free all storage helper objects. This should be done on any config load to ensure that stanza changes are honored. Currently this is only done in testing, but in the future it will likely be done in production as well. ***********************************************************************************************************************************/ void storageHelperFree(void) { FUNCTION_TEST_VOID(); if (storageHelper.memContext != NULL) memContextFree(storageHelper.memContext); storageHelper = (struct StorageHelper){.memContext = NULL}; FUNCTION_TEST_RETURN_VOID(); } pgbackrest-release-2.24/src/storage/helper.h000066400000000000000000000051521362531507100210750ustar00rootroot00000000000000/*********************************************************************************************************************************** Storage Helper ***********************************************************************************************************************************/ #ifndef STORAGE_HELPER_H #define STORAGE_HELPER_H #include "storage/storage.h" /*********************************************************************************************************************************** Storage path constants ***********************************************************************************************************************************/ #define STORAGE_SPOOL_ARCHIVE_IN "" STRING_DECLARE(STORAGE_SPOOL_ARCHIVE_IN_STR); #define STORAGE_SPOOL_ARCHIVE_OUT "" STRING_DECLARE(STORAGE_SPOOL_ARCHIVE_OUT_STR); #define STORAGE_REPO_ARCHIVE "" STRING_DECLARE(STORAGE_REPO_ARCHIVE_STR); #define STORAGE_REPO_BACKUP "" STRING_DECLARE(STORAGE_REPO_BACKUP_STR); #define STORAGE_PATH_ARCHIVE "archive" STRING_DECLARE(STORAGE_PATH_ARCHIVE_STR); #define STORAGE_PATH_BACKUP "backup" STRING_DECLARE(STORAGE_PATH_BACKUP_STR); /*********************************************************************************************************************************** Repository storage types ***********************************************************************************************************************************/ #define STORAGE_TYPE_CIFS "cifs" #define STORAGE_TYPE_POSIX "posix" #define STORAGE_TYPE_S3 "s3" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ const Storage *storageLocal(void); const Storage *storageLocalWrite(void); const Storage *storagePg(void); const Storage *storagePgId(unsigned int hostId); const Storage *storagePgWrite(void); const Storage *storagePgIdWrite(unsigned int hostId); const Storage *storageRepo(void); const Storage *storageRepoWrite(void); const Storage *storageSpool(void); const Storage *storageSpoolWrite(void); void storageHelperFree(void); #endif pgbackrest-release-2.24/src/storage/info.h000066400000000000000000000053371362531507100205560ustar00rootroot00000000000000/*********************************************************************************************************************************** Storage Info ***********************************************************************************************************************************/ #ifndef STORAGE_INFO_H #define STORAGE_INFO_H #include /*********************************************************************************************************************************** Storage type ***********************************************************************************************************************************/ typedef enum { storageTypeFile, storageTypePath, storageTypeLink, storageTypeSpecial, } StorageType; /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ typedef struct StorageInfo { const String *name; // Name of path/file/link bool exists; // Does the path/file/link exist? StorageType type; // Type file/path/link) uint64_t size; // Size (path/link is 0) time_t timeModified; // Time file was last modified mode_t mode; // Mode of path/file/link uid_t userId; // User that owns the file uid_t groupId; // Group that owns the file const String *user; // Name of user that owns the file const String *group; // Name of group that owns the file const String *linkDestination; // Destination if this is a link } StorageInfo; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_STORAGE_INFO_TYPE \ StorageInfo #define FUNCTION_LOG_STORAGE_INFO_FORMAT(value, buffer, bufferSize) \ objToLog(&value, "StorageInfo", buffer, bufferSize) #endif pgbackrest-release-2.24/src/storage/posix/000077500000000000000000000000001362531507100206045ustar00rootroot00000000000000pgbackrest-release-2.24/src/storage/posix/read.c000066400000000000000000000211111362531507100216570ustar00rootroot00000000000000/*********************************************************************************************************************************** Posix Storage Read ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include "common/debug.h" #include "common/io/read.intern.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "storage/posix/read.h" #include "storage/posix/storage.intern.h" #include "storage/read.intern.h" /*********************************************************************************************************************************** Object types ***********************************************************************************************************************************/ #define STORAGE_READ_POSIX_TYPE StorageReadPosix #define STORAGE_READ_POSIX_PREFIX storageReadPosix typedef struct StorageReadPosix { MemContext *memContext; // Object mem context StorageReadInterface interface; // Interface StoragePosix *storage; // Storage that created this object int handle; bool eof; } StorageReadPosix; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_STORAGE_READ_POSIX_TYPE \ StorageReadPosix * #define FUNCTION_LOG_STORAGE_READ_POSIX_FORMAT(value, buffer, bufferSize) \ objToLog(value, "StorageReadPosix", buffer, bufferSize) /*********************************************************************************************************************************** Close the file handle ***********************************************************************************************************************************/ OBJECT_DEFINE_FREE_RESOURCE_BEGIN(STORAGE_READ_POSIX, LOG, logLevelTrace) { if (this->handle != -1) THROW_ON_SYS_ERROR_FMT(close(this->handle) == -1, FileCloseError, STORAGE_ERROR_READ_CLOSE, strPtr(this->interface.name)); } OBJECT_DEFINE_FREE_RESOURCE_END(LOG); /*********************************************************************************************************************************** Open the file ***********************************************************************************************************************************/ static bool storageReadPosixOpen(THIS_VOID) { THIS(StorageReadPosix); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_READ_POSIX, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->handle == -1); bool result = false; // Open the file this->handle = open(strPtr(this->interface.name), O_RDONLY, 0); // Handle errors if (this->handle == -1) { if (errno == ENOENT) { if (!this->interface.ignoreMissing) THROW_FMT(FileMissingError, STORAGE_ERROR_READ_MISSING, strPtr(this->interface.name)); } else THROW_SYS_ERROR_FMT(FileOpenError, STORAGE_ERROR_READ_OPEN, strPtr(this->interface.name)); } // On success set free callback to ensure file handle is freed if (this->handle != -1) { memContextCallbackSet(this->memContext, storageReadPosixFreeResource, this); result = true; } FUNCTION_LOG_RETURN(BOOL, result); } /*********************************************************************************************************************************** Read from a file ***********************************************************************************************************************************/ static size_t storageReadPosix(THIS_VOID, Buffer *buffer, bool block) { THIS(StorageReadPosix); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_READ_POSIX, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_PARAM(BOOL, block); FUNCTION_LOG_END(); ASSERT(this != NULL && this->handle != -1); ASSERT(buffer != NULL && !bufFull(buffer)); // Read if EOF has not been reached ssize_t actualBytes = 0; if (!this->eof) { // Read and handle errors size_t expectedBytes = bufRemains(buffer); actualBytes = read(this->handle, bufRemainsPtr(buffer), expectedBytes); // Error occurred during read if (actualBytes == -1) THROW_SYS_ERROR_FMT(FileReadError, "unable to read '%s'", strPtr(this->interface.name)); // Update amount of buffer used bufUsedInc(buffer, (size_t)actualBytes); // If less data than expected was read then EOF. The file may not actually be EOF but we are not concerned with files that // are growing. Just read up to the point where the file is being extended. if ((size_t)actualBytes != expectedBytes) this->eof = true; } FUNCTION_LOG_RETURN(SIZE, (size_t)actualBytes); } /*********************************************************************************************************************************** Close the file ***********************************************************************************************************************************/ static void storageReadPosixClose(THIS_VOID) { THIS(StorageReadPosix); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_READ_POSIX, this); FUNCTION_LOG_END(); ASSERT(this != NULL); storageReadPosixFreeResource(this); memContextCallbackClear(this->memContext); this->handle = -1; FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Has file reached EOF? ***********************************************************************************************************************************/ static bool storageReadPosixEof(THIS_VOID) { THIS(StorageReadPosix); FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_READ_POSIX, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->eof); } /*********************************************************************************************************************************** Get handle (file descriptor) ***********************************************************************************************************************************/ static int storageReadPosixHandle(const THIS_VOID) { THIS(const StorageReadPosix); FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_READ_POSIX, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->handle); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ StorageRead * storageReadPosixNew(StoragePosix *storage, const String *name, bool ignoreMissing) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, name); FUNCTION_LOG_PARAM(BOOL, ignoreMissing); FUNCTION_LOG_END(); ASSERT(name != NULL); StorageRead *this = NULL; MEM_CONTEXT_NEW_BEGIN("StorageReadPosix") { StorageReadPosix *driver = memNew(sizeof(StorageReadPosix)); *driver = (StorageReadPosix) { .memContext = MEM_CONTEXT_NEW(), .storage = storage, .handle = -1, .interface = (StorageReadInterface) { .type = STORAGE_POSIX_TYPE_STR, .name = strDup(name), .ignoreMissing = ignoreMissing, .ioInterface = (IoReadInterface) { .close = storageReadPosixClose, .eof = storageReadPosixEof, .handle = storageReadPosixHandle, .open = storageReadPosixOpen, .read = storageReadPosix, }, }, }; this = storageReadNew(driver, &driver->interface); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(STORAGE_READ, this); } pgbackrest-release-2.24/src/storage/posix/read.h000066400000000000000000000014251362531507100216720ustar00rootroot00000000000000/*********************************************************************************************************************************** Posix Storage Read ***********************************************************************************************************************************/ #ifndef STORAGE_POSIX_READ_H #define STORAGE_POSIX_READ_H #include "storage/posix/storage.h" #include "storage/read.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ StorageRead *storageReadPosixNew(StoragePosix *storage, const String *name, bool ignoreMissing); #endif pgbackrest-release-2.24/src/storage/posix/storage.c000066400000000000000000000604261362531507100224240ustar00rootroot00000000000000/*********************************************************************************************************************************** Posix Storage ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include #include #include #include #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "common/regExp.h" #include "common/user.h" #include "storage/posix/read.h" #include "storage/posix/storage.intern.h" #include "storage/posix/write.h" /*********************************************************************************************************************************** Storage type ***********************************************************************************************************************************/ STRING_EXTERN(STORAGE_POSIX_TYPE_STR, STORAGE_POSIX_TYPE); /*********************************************************************************************************************************** Define PATH_MAX if it is not defined ***********************************************************************************************************************************/ #ifndef PATH_MAX #define PATH_MAX (4 * 1024) #endif /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct StoragePosix { STORAGE_COMMON_MEMBER; MemContext *memContext; // Object memory context }; /**********************************************************************************************************************************/ static bool storagePosixExists(THIS_VOID, const String *file, StorageInterfaceExistsParam param) { THIS(StoragePosix); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_POSIX, this); FUNCTION_LOG_PARAM(STRING, file); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(file != NULL); bool result = false; // Attempt to stat the file to determine if it exists struct stat statFile; // Any error other than entry not found should be reported if (stat(strPtr(file), &statFile) == -1) { if (errno != ENOENT) THROW_SYS_ERROR_FMT(FileOpenError, "unable to stat '%s'", strPtr(file)); } // Else found else result = !S_ISDIR(statFile.st_mode); FUNCTION_LOG_RETURN(BOOL, result); } /**********************************************************************************************************************************/ static StorageInfo storagePosixInfo(THIS_VOID, const String *file, StorageInterfaceInfoParam param) { THIS(StoragePosix); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_POSIX, this); FUNCTION_LOG_PARAM(STRING, file); FUNCTION_LOG_PARAM(BOOL, param.followLink); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(file != NULL); StorageInfo result = {0}; // Attempt to stat the file struct stat statFile; if ((param.followLink ? stat(strPtr(file), &statFile) : lstat(strPtr(file), &statFile)) == -1) { if (errno != ENOENT) THROW_SYS_ERROR_FMT(FileOpenError, STORAGE_ERROR_INFO, strPtr(file)); } // On success load info into a structure else { result.exists = true; result.groupId = statFile.st_gid; result.group = groupNameFromId(result.groupId); result.userId = statFile.st_uid; result.user = userNameFromId(result.userId); result.timeModified = statFile.st_mtime; if (S_ISREG(statFile.st_mode)) { result.type = storageTypeFile; result.size = (uint64_t)statFile.st_size; } else if (S_ISDIR(statFile.st_mode)) result.type = storageTypePath; else if (S_ISLNK(statFile.st_mode)) { result.type = storageTypeLink; char linkDestination[PATH_MAX]; ssize_t linkDestinationSize = 0; THROW_ON_SYS_ERROR_FMT( (linkDestinationSize = readlink(strPtr(file), linkDestination, sizeof(linkDestination) - 1)) == -1, FileReadError, "unable to get destination for link '%s'", strPtr(file)); result.linkDestination = strNewN(linkDestination, (size_t)linkDestinationSize); } else result.type = storageTypeSpecial; result.mode = statFile.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO); } FUNCTION_LOG_RETURN(STORAGE_INFO, result); } /**********************************************************************************************************************************/ static void storagePosixInfoListEntry( StoragePosix *this, const String *path, const String *name, StorageInfoListCallback callback, void *callbackData) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_POSIX, this); FUNCTION_TEST_PARAM(STRING, path); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_PARAM(FUNCTIONP, callback); FUNCTION_TEST_PARAM_P(VOID, callbackData); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(path != NULL); ASSERT(name != NULL); ASSERT(callback != NULL); if (!strEqZ(name, "..")) { String *pathInfo = strEqZ(name, ".") ? strDup(path) : strNewFmt("%s/%s", strPtr(path), strPtr(name)); StorageInfo storageInfo = storageInterfaceInfoP(this, pathInfo); if (storageInfo.exists) { storageInfo.name = name; callback(callbackData, &storageInfo); } } FUNCTION_TEST_RETURN_VOID(); } static bool storagePosixInfoList( THIS_VOID, const String *path, StorageInfoListCallback callback, void *callbackData, StorageInterfaceInfoListParam param) { THIS(StoragePosix); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_POSIX, this); FUNCTION_LOG_PARAM(STRING, path); FUNCTION_LOG_PARAM(FUNCTIONP, callback); FUNCTION_LOG_PARAM_P(VOID, callbackData); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(path != NULL); ASSERT(callback != NULL); bool result = false; // Open the directory for read DIR *dir = opendir(strPtr(path)); // If the directory could not be opened process errors and report missing directories if (dir == NULL) { if (errno != ENOENT) THROW_SYS_ERROR_FMT(PathOpenError, STORAGE_ERROR_LIST_INFO, strPtr(path)); } else { // Directory was found result = true; TRY_BEGIN() { MEM_CONTEXT_TEMP_RESET_BEGIN() { // Read the directory entries struct dirent *dirEntry = readdir(dir); while (dirEntry != NULL) { // Get info and perform callback storagePosixInfoListEntry(this, path, STR(dirEntry->d_name), callback, callbackData); // Get next entry dirEntry = readdir(dir); // Reset the memory context occasionally so we don't use too much memory or slow down processing MEM_CONTEXT_TEMP_RESET(1000); } } MEM_CONTEXT_TEMP_END(); } FINALLY() { closedir(dir); } TRY_END(); } FUNCTION_LOG_RETURN(BOOL, result); } /**********************************************************************************************************************************/ static StringList * storagePosixList(THIS_VOID, const String *path, StorageInterfaceListParam param) { THIS(StoragePosix); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_POSIX, this); FUNCTION_LOG_PARAM(STRING, path); FUNCTION_LOG_PARAM(STRING, param.expression); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(path != NULL); StringList *result = NULL; DIR *dir = NULL; TRY_BEGIN() { // Open the directory for read dir = opendir(strPtr(path)); // If the directory could not be opened process errors but ignore missing directories when specified if (!dir) { if (errno != ENOENT) THROW_SYS_ERROR_FMT(PathOpenError, STORAGE_ERROR_LIST, strPtr(path)); } else { MEM_CONTEXT_TEMP_BEGIN() { // Prepare regexp if an expression was passed RegExp *regExp = param.expression == NULL ? NULL : regExpNew(param.expression); // Create the string list now that we know the directory is valid result = strLstNew(); // Read the directory entries struct dirent *dirEntry = readdir(dir); while (dirEntry != NULL) { const String *entry = STR(dirEntry->d_name); // Exclude current/parent directory and apply the expression if specified if (!strEqZ(entry, ".") && !strEqZ(entry, "..") && (regExp == NULL || regExpMatch(regExp, entry))) strLstAdd(result, entry); dirEntry = readdir(dir); } // Move finished list up to the old context strLstMove(result, memContextPrior()); } MEM_CONTEXT_TEMP_END(); } } FINALLY() { if (dir != NULL) closedir(dir); } TRY_END(); FUNCTION_LOG_RETURN(STRING_LIST, result); } /**********************************************************************************************************************************/ static bool storagePosixMove(THIS_VOID, StorageRead *source, StorageWrite *destination, StorageInterfaceMoveParam param) { THIS(StoragePosix); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_POSIX, this); FUNCTION_LOG_PARAM(STORAGE_READ, source); FUNCTION_LOG_PARAM(STORAGE_WRITE, destination); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(source != NULL); ASSERT(destination != NULL); bool result = true; MEM_CONTEXT_TEMP_BEGIN() { const String *sourceFile = storageReadName(source); const String *destinationFile = storageWriteName(destination); const String *destinationPath = strPath(destinationFile); // Attempt to move the file if (rename(strPtr(sourceFile), strPtr(destinationFile)) == -1) { // Determine which file/path is missing if (errno == ENOENT) { if (!storageInterfaceExistsP(this, sourceFile)) THROW_SYS_ERROR_FMT(FileMissingError, "unable to move missing file '%s'", strPtr(sourceFile)); if (!storageWriteCreatePath(destination)) { THROW_SYS_ERROR_FMT( PathMissingError, "unable to move '%s' to missing path '%s'", strPtr(sourceFile), strPtr(destinationPath)); } storageInterfacePathCreateP(this, destinationPath, false, false, storageWriteModePath(destination)); result = storageInterfaceMoveP(this, source, destination); } // Else the destination is on a different device so a copy will be needed else if (errno == EXDEV) { result = false; } else THROW_SYS_ERROR_FMT(FileMoveError, "unable to move '%s' to '%s'", strPtr(sourceFile), strPtr(destinationFile)); } // Sync paths on success else { // Sync source path if the destination path was synced and the paths are not equal if (storageWriteSyncPath(destination)) { String *sourcePath = strPath(sourceFile); if (!strEq(destinationPath, sourcePath)) storageInterfacePathSyncP(this, sourcePath); } } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, result); } /**********************************************************************************************************************************/ static StorageRead * storagePosixNewRead(THIS_VOID, const String *file, bool ignoreMissing, StorageInterfaceNewReadParam param) { THIS(StoragePosix); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_POSIX, this); FUNCTION_LOG_PARAM(STRING, file); FUNCTION_LOG_PARAM(BOOL, ignoreMissing); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(file != NULL); FUNCTION_LOG_RETURN(STORAGE_READ, storageReadPosixNew(this, file, ignoreMissing)); } /**********************************************************************************************************************************/ static StorageWrite * storagePosixNewWrite(THIS_VOID, const String *file, StorageInterfaceNewWriteParam param) { THIS(StoragePosix); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_POSIX, this); FUNCTION_LOG_PARAM(STRING, file); FUNCTION_LOG_PARAM(MODE, param.modeFile); FUNCTION_LOG_PARAM(MODE, param.modePath); FUNCTION_LOG_PARAM(STRING, param.user); FUNCTION_LOG_PARAM(STRING, param.group); FUNCTION_LOG_PARAM(TIME, param.timeModified); FUNCTION_LOG_PARAM(BOOL, param.createPath); FUNCTION_LOG_PARAM(BOOL, param.syncFile); FUNCTION_LOG_PARAM(BOOL, param.syncPath); FUNCTION_LOG_PARAM(BOOL, param.atomic); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(file != NULL); FUNCTION_LOG_RETURN( STORAGE_WRITE, storageWritePosixNew( this, file, param.modeFile, param.modePath, param.user, param.group, param.timeModified, param.createPath, param.syncFile, this->interface.pathSync != NULL ? param.syncPath : false, param.atomic)); } /**********************************************************************************************************************************/ void storagePosixPathCreate( THIS_VOID, const String *path, bool errorOnExists, bool noParentCreate, mode_t mode, StorageInterfacePathCreateParam param) { THIS(StoragePosix); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_POSIX, this); FUNCTION_LOG_PARAM(STRING, path); FUNCTION_LOG_PARAM(BOOL, errorOnExists); FUNCTION_LOG_PARAM(BOOL, noParentCreate); FUNCTION_LOG_PARAM(MODE, mode); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(path != NULL); // Attempt to create the directory if (mkdir(strPtr(path), mode) == -1) { // If the parent path does not exist then create it if allowed if (errno == ENOENT && !noParentCreate) { storageInterfacePathCreateP(this, strPath(path), errorOnExists, noParentCreate, mode); storageInterfacePathCreateP(this, path, errorOnExists, noParentCreate, mode); } // Ignore path exists if allowed else if (errno != EEXIST || errorOnExists) THROW_SYS_ERROR_FMT(PathCreateError, "unable to create path '%s'", strPtr(path)); } FUNCTION_LOG_RETURN_VOID(); } /**********************************************************************************************************************************/ static bool storagePosixPathExists(THIS_VOID, const String *path, StorageInterfacePathExistsParam param) { THIS(StoragePosix); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_POSIX, this); FUNCTION_LOG_PARAM(STRING, path); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(path != NULL); bool result = false; // Attempt to stat the file to determine if it exists struct stat statPath; // Any error other than entry not found should be reported if (stat(strPtr(path), &statPath) == -1) { if (errno != ENOENT) THROW_SYS_ERROR_FMT(PathOpenError, "unable to stat '%s'", strPtr(path)); } // Else found else result = S_ISDIR(statPath.st_mode); FUNCTION_LOG_RETURN(BOOL, result); } /**********************************************************************************************************************************/ static bool storagePosixPathRemove(THIS_VOID, const String *path, bool recurse, StorageInterfacePathRemoveParam param) { THIS(StoragePosix); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_POSIX, this); FUNCTION_LOG_PARAM(STRING, path); FUNCTION_LOG_PARAM(BOOL, recurse); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(path != NULL); bool result = true; MEM_CONTEXT_TEMP_BEGIN() { // Recurse if requested if (recurse) { // Get a list of files in this path StringList *fileList = storageInterfaceListP(this, path); // Only continue if the path exists if (fileList != NULL) { // Delete all paths and files for (unsigned int fileIdx = 0; fileIdx < strLstSize(fileList); fileIdx++) { String *file = strNewFmt("%s/%s", strPtr(path), strPtr(strLstGet(fileList, fileIdx))); // Rather than stat the file to discover what type it is, just try to unlink it and see what happens if (unlink(strPtr(file)) == -1) { // These errors indicate that the entry is actually a path so we'll try to delete it that way if (errno == EPERM || errno == EISDIR) // {uncovered_branch - no EPERM on tested systems} storageInterfacePathRemoveP(this, file, true); // Else error else THROW_SYS_ERROR_FMT(PathRemoveError, STORAGE_ERROR_PATH_REMOVE_FILE, strPtr(file)); } } } } // Delete the path if (rmdir(strPtr(path)) == -1) { if (errno != ENOENT) THROW_SYS_ERROR_FMT(PathRemoveError, STORAGE_ERROR_PATH_REMOVE, strPtr(path)); // Path does not exist result = false; } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, result); } /**********************************************************************************************************************************/ void storagePosixPathSync(THIS_VOID, const String *path, StorageInterfacePathSyncParam param) { THIS(StoragePosix); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_POSIX, this); FUNCTION_LOG_PARAM(STRING, path); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(path != NULL); // Open directory and handle errors int handle = open(strPtr(path), O_RDONLY, 0); // Handle errors if (handle == -1) { if (errno == ENOENT) THROW_FMT(PathMissingError, STORAGE_ERROR_PATH_SYNC_MISSING, strPtr(path)); else THROW_SYS_ERROR_FMT(PathOpenError, STORAGE_ERROR_PATH_SYNC_OPEN, strPtr(path)); } else { // Attempt to sync the directory if (fsync(handle) == -1) { int errNo = errno; // Close the handle to free resources but don't check for failure close(handle); THROW_SYS_ERROR_CODE_FMT(errNo, PathSyncError, STORAGE_ERROR_PATH_SYNC, strPtr(path)); } THROW_ON_SYS_ERROR_FMT(close(handle) == -1, PathCloseError, STORAGE_ERROR_PATH_SYNC_CLOSE, strPtr(path)); } FUNCTION_LOG_RETURN_VOID(); } /**********************************************************************************************************************************/ static void storagePosixRemove(THIS_VOID, const String *file, StorageInterfaceRemoveParam param) { THIS(StoragePosix); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_POSIX, this); FUNCTION_LOG_PARAM(STRING, file); FUNCTION_LOG_PARAM(BOOL, param.errorOnMissing); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(file != NULL); // Attempt to unlink the file if (unlink(strPtr(file)) == -1) { if (param.errorOnMissing || errno != ENOENT) THROW_SYS_ERROR_FMT(FileRemoveError, "unable to remove '%s'", strPtr(file)); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ static const StorageInterface storageInterfacePosix = { .feature = (1 << storageFeaturePath | 1 << storageFeatureCompress), .exists = storagePosixExists, .info = storagePosixInfo, .infoList = storagePosixInfoList, .list = storagePosixList, .move = storagePosixMove, .newRead = storagePosixNewRead, .newWrite = storagePosixNewWrite, .pathCreate = storagePosixPathCreate, .pathExists = storagePosixPathExists, .pathRemove = storagePosixPathRemove, .pathSync = storagePosixPathSync, .remove = storagePosixRemove, }; Storage * storagePosixNewInternal( const String *type, const String *path, mode_t modeFile, mode_t modePath, bool write, StoragePathExpressionCallback pathExpressionFunction, bool pathSync) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, type); FUNCTION_LOG_PARAM(STRING, path); FUNCTION_LOG_PARAM(MODE, modeFile); FUNCTION_LOG_PARAM(MODE, modePath); FUNCTION_LOG_PARAM(BOOL, write); FUNCTION_LOG_PARAM(FUNCTIONP, pathExpressionFunction); FUNCTION_LOG_PARAM(BOOL, pathSync); FUNCTION_LOG_END(); ASSERT(type != NULL); ASSERT(path != NULL); ASSERT(modeFile != 0); ASSERT(modePath != 0); // Initialze user module userInit(); // Create the object Storage *this = NULL; MEM_CONTEXT_NEW_BEGIN("StoragePosix") { StoragePosix *driver = memNew(sizeof(StoragePosix)); *driver = (StoragePosix) { .memContext = MEM_CONTEXT_NEW(), .interface = storageInterfacePosix, }; // Disable path sync when not supported if (!pathSync) driver->interface.pathSync = NULL; // If this is a posix driver then add link features if (strEq(type, STORAGE_POSIX_TYPE_STR)) driver->interface.feature |= (1 << storageFeatureHardLink | 1 << storageFeatureSymLink | 1 << storageFeaturePathSync); this = storageNew(type, path, modeFile, modePath, write, pathExpressionFunction, driver, driver->interface); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(STORAGE, this); } Storage * storagePosixNew( const String *path, mode_t modeFile, mode_t modePath, bool write, StoragePathExpressionCallback pathExpressionFunction) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, path); FUNCTION_LOG_PARAM(MODE, modeFile); FUNCTION_LOG_PARAM(MODE, modePath); FUNCTION_LOG_PARAM(BOOL, write); FUNCTION_LOG_PARAM(FUNCTIONP, pathExpressionFunction); FUNCTION_LOG_END(); FUNCTION_LOG_RETURN( STORAGE, storagePosixNewInternal(STORAGE_POSIX_TYPE_STR, path, modeFile, modePath, write, pathExpressionFunction, true)); } pgbackrest-release-2.24/src/storage/posix/storage.h000066400000000000000000000030041362531507100224160ustar00rootroot00000000000000/*********************************************************************************************************************************** Posix Storage ***********************************************************************************************************************************/ #ifndef STORAGE_POSIX_STORAGE_H #define STORAGE_POSIX_STORAGE_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ typedef struct StoragePosix StoragePosix; #include "storage/storage.intern.h" /*********************************************************************************************************************************** Storage type ***********************************************************************************************************************************/ #define STORAGE_POSIX_TYPE "posix" STRING_DECLARE(STORAGE_POSIX_TYPE_STR); /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ Storage *storagePosixNew( const String *path, mode_t modeFile, mode_t modePath, bool write, StoragePathExpressionCallback pathExpressionFunction); #endif pgbackrest-release-2.24/src/storage/posix/storage.intern.h000066400000000000000000000040431362531507100237200ustar00rootroot00000000000000/*********************************************************************************************************************************** Posix Storage Internal ***********************************************************************************************************************************/ #ifndef STORAGE_POSIX_STORAGE_INTERN_H #define STORAGE_POSIX_STORAGE_INTERN_H #include "common/object.h" #include "storage/posix/storage.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ Storage *storagePosixNewInternal( const String *type, const String *path, mode_t modeFile, mode_t modePath, bool write, StoragePathExpressionCallback pathExpressionFunction, bool pathSync); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void storagePosixPathCreate( THIS_VOID, const String *path, bool errorOnExists, bool noParentCreate, mode_t mode, StorageInterfacePathCreateParam param); void storagePosixPathSync(THIS_VOID, const String *path, StorageInterfacePathSyncParam param); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_STORAGE_POSIX_TYPE \ StoragePosix * #define FUNCTION_LOG_STORAGE_POSIX_FORMAT(value, buffer, bufferSize) \ objToLog(value, "StoragePosix *", buffer, bufferSize) #endif pgbackrest-release-2.24/src/storage/posix/write.c000066400000000000000000000262441362531507100221120ustar00rootroot00000000000000/*********************************************************************************************************************************** Posix Storage File write ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include #include #include "common/debug.h" #include "common/io/write.intern.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "common/user.h" #include "storage/posix/storage.intern.h" #include "storage/posix/write.h" #include "storage/write.intern.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define STORAGE_WRITE_POSIX_TYPE StorageWritePosix #define STORAGE_WRITE_POSIX_PREFIX storageWritePosix typedef struct StorageWritePosix { MemContext *memContext; // Object mem context StorageWriteInterface interface; // Interface StoragePosix *storage; // Storage that created this object const String *nameTmp; const String *path; int handle; } StorageWritePosix; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_STORAGE_WRITE_POSIX_TYPE \ StorageWritePosix * #define FUNCTION_LOG_STORAGE_WRITE_POSIX_FORMAT(value, buffer, bufferSize) \ objToLog(value, "StorageWritePosix", buffer, bufferSize) /*********************************************************************************************************************************** File open constants Since open is called more than once use constants to make sure these parameters are always the same ***********************************************************************************************************************************/ #define FILE_OPEN_FLAGS (O_CREAT | O_TRUNC | O_WRONLY) #define FILE_OPEN_PURPOSE "write" /*********************************************************************************************************************************** Close file handle ***********************************************************************************************************************************/ OBJECT_DEFINE_FREE_RESOURCE_BEGIN(STORAGE_WRITE_POSIX, LOG, logLevelTrace) { THROW_ON_SYS_ERROR_FMT(close(this->handle) == -1, FileCloseError, STORAGE_ERROR_WRITE_CLOSE, strPtr(this->nameTmp)); } OBJECT_DEFINE_FREE_RESOURCE_END(LOG); /*********************************************************************************************************************************** Open the file ***********************************************************************************************************************************/ static void storageWritePosixOpen(THIS_VOID) { THIS(StorageWritePosix); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_WRITE_POSIX, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->handle == -1); // Open the file this->handle = open(strPtr(this->nameTmp), FILE_OPEN_FLAGS, this->interface.modeFile); // Attempt the create the path if it is missing if (this->handle == -1 && errno == ENOENT && this->interface.createPath) { // Create the path storageInterfacePathCreateP(this->storage, this->path, false, false, this->interface.modePath); // Open file again this->handle = open(strPtr(this->nameTmp), FILE_OPEN_FLAGS, this->interface.modeFile); } // Handle errors if (this->handle == -1) { if (errno == ENOENT) THROW_FMT(FileMissingError, STORAGE_ERROR_WRITE_MISSING, strPtr(this->interface.name)); else THROW_SYS_ERROR_FMT(FileOpenError, STORAGE_ERROR_WRITE_OPEN, strPtr(this->interface.name)); } // Set free callback to ensure file handle is freed memContextCallbackSet(this->memContext, storageWritePosixFreeResource, this); // Update user/group owner if (this->interface.user != NULL || this->interface.group != NULL) { uid_t updateUserId = userIdFromName(this->interface.user); if (updateUserId == userId()) updateUserId = (uid_t)-1; gid_t updateGroupId = groupIdFromName(this->interface.group); if (updateGroupId == groupId()) updateGroupId = (gid_t)-1; THROW_ON_SYS_ERROR_FMT( chown(strPtr(this->nameTmp), updateUserId, updateGroupId) == -1, FileOwnerError, "unable to set ownership for '%s'", strPtr(this->nameTmp)); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Write to the file ***********************************************************************************************************************************/ static void storageWritePosix(THIS_VOID, const Buffer *buffer) { THIS(StorageWritePosix); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_WRITE_POSIX, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(buffer != NULL); ASSERT(this->handle != -1); // Write the data if (write(this->handle, bufPtr(buffer), bufUsed(buffer)) != (ssize_t)bufUsed(buffer)) THROW_SYS_ERROR_FMT(FileWriteError, "unable to write '%s'", strPtr(this->nameTmp)); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Close the file ***********************************************************************************************************************************/ static void storageWritePosixClose(THIS_VOID) { THIS(StorageWritePosix); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_WRITE_POSIX, this); FUNCTION_LOG_END(); ASSERT(this != NULL); // Close if the file has not already been closed if (this->handle != -1) { // Sync the file if (this->interface.syncFile) THROW_ON_SYS_ERROR_FMT(fsync(this->handle) == -1, FileSyncError, STORAGE_ERROR_WRITE_SYNC, strPtr(this->nameTmp)); // Close the file memContextCallbackClear(this->memContext); THROW_ON_SYS_ERROR_FMT(close(this->handle) == -1, FileCloseError, STORAGE_ERROR_WRITE_CLOSE, strPtr(this->nameTmp)); this->handle = -1; // Update modified time if (this->interface.timeModified != 0) { THROW_ON_SYS_ERROR_FMT( utime( strPtr(this->nameTmp), &((struct utimbuf){.actime = this->interface.timeModified, .modtime = this->interface.timeModified})) == -1, FileInfoError, "unable to set time for '%s'", strPtr(this->nameTmp)); } // Rename from temp file if (this->interface.atomic) { if (rename(strPtr(this->nameTmp), strPtr(this->interface.name)) == -1) { THROW_SYS_ERROR_FMT( FileMoveError, "unable to move '%s' to '%s'", strPtr(this->nameTmp), strPtr(this->interface.name)); } } // Sync the path if (this->interface.syncPath) storageInterfacePathSyncP(this->storage, this->path); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Get handle (file descriptor) ***********************************************************************************************************************************/ static int storageWritePosixHandle(const THIS_VOID) { THIS(const StorageWritePosix); FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_WRITE_POSIX, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->handle); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ StorageWrite * storageWritePosixNew( StoragePosix *storage, const String *name, mode_t modeFile, mode_t modePath, const String *user, const String *group, time_t timeModified, bool createPath, bool syncFile, bool syncPath, bool atomic) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_POSIX, storage); FUNCTION_LOG_PARAM(STRING, name); FUNCTION_LOG_PARAM(MODE, modeFile); FUNCTION_LOG_PARAM(MODE, modePath); FUNCTION_LOG_PARAM(STRING, user); FUNCTION_LOG_PARAM(STRING, group); FUNCTION_LOG_PARAM(TIME, timeModified); FUNCTION_LOG_PARAM(BOOL, createPath); FUNCTION_LOG_PARAM(BOOL, syncFile); FUNCTION_LOG_PARAM(BOOL, syncPath); FUNCTION_LOG_PARAM(BOOL, atomic); FUNCTION_LOG_END(); ASSERT(storage != NULL); ASSERT(name != NULL); ASSERT(modeFile != 0); ASSERT(modePath != 0); StorageWrite *this = NULL; MEM_CONTEXT_NEW_BEGIN("StorageWritePosix") { StorageWritePosix *driver = memNew(sizeof(StorageWritePosix)); *driver = (StorageWritePosix) { .memContext = MEM_CONTEXT_NEW(), .storage = storage, .path = strPath(name), .handle = -1, .interface = (StorageWriteInterface) { .type = STORAGE_POSIX_TYPE_STR, .name = strDup(name), .atomic = atomic, .createPath = createPath, .group = strDup(group), .modeFile = modeFile, .modePath = modePath, .syncFile = syncFile, .syncPath = syncPath, .user = strDup(user), .timeModified = timeModified, .ioInterface = (IoWriteInterface) { .close = storageWritePosixClose, .handle = storageWritePosixHandle, .open = storageWritePosixOpen, .write = storageWritePosix, }, }, }; // Create temp file name driver->nameTmp = atomic ? strNewFmt("%s." STORAGE_FILE_TEMP_EXT, strPtr(name)) : driver->interface.name; this = storageWriteNew(driver, &driver->interface); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(STORAGE_WRITE, this); } pgbackrest-release-2.24/src/storage/posix/write.h000066400000000000000000000016611362531507100221130ustar00rootroot00000000000000/*********************************************************************************************************************************** Posix Storage File write ***********************************************************************************************************************************/ #ifndef STORAGE_POSIX_WRITE_H #define STORAGE_POSIX_WRITE_H #include "storage/posix/storage.h" #include "storage/write.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ StorageWrite *storageWritePosixNew( StoragePosix *storage, const String *name, mode_t modeFile, mode_t modePath, const String *user, const String *group, time_t timeModified, bool createPath, bool syncFile, bool syncPath, bool atomic); #endif pgbackrest-release-2.24/src/storage/read.c000066400000000000000000000131201362531507100205160ustar00rootroot00000000000000/*********************************************************************************************************************************** Storage Read Interface ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "storage/read.intern.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct StorageRead { MemContext *memContext; // Object mem context void *driver; const StorageReadInterface *interface; IoRead *io; }; OBJECT_DEFINE_MOVE(STORAGE_READ); OBJECT_DEFINE_FREE(STORAGE_READ); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_STORAGE_READ_INTERFACE_TYPE \ StorageReadInterface #define FUNCTION_LOG_STORAGE_READ_INTERFACE_FORMAT(value, buffer, bufferSize) \ objToLog(&value, "StorageReadInterface", buffer, bufferSize) /*********************************************************************************************************************************** Create a new storage file ***********************************************************************************************************************************/ StorageRead * storageReadNew(void *driver, const StorageReadInterface *interface) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM_P(VOID, driver); FUNCTION_LOG_PARAM_P(STORAGE_READ_INTERFACE, interface); FUNCTION_LOG_END(); ASSERT(driver != NULL); ASSERT(interface != NULL); StorageRead *this = NULL; this = memNew(sizeof(StorageRead)); *this = (StorageRead) { .memContext = memContextCurrent(), .driver = driver, .interface = interface, .io = ioReadNew(driver, interface->ioInterface), }; FUNCTION_LOG_RETURN(STORAGE_READ, this); } /*********************************************************************************************************************************** Get file driver ***********************************************************************************************************************************/ void * storageRead(const StorageRead *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_READ, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->driver); } /*********************************************************************************************************************************** Should a missing file be ignored? ***********************************************************************************************************************************/ bool storageReadIgnoreMissing(const StorageRead *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_READ, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->interface->ignoreMissing); } /*********************************************************************************************************************************** Get io interface ***********************************************************************************************************************************/ IoRead * storageReadIo(const StorageRead *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_READ, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->io); } /*********************************************************************************************************************************** Get file name ***********************************************************************************************************************************/ const String * storageReadName(const StorageRead *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_READ, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->interface->name); } /*********************************************************************************************************************************** Get file type ***********************************************************************************************************************************/ const String * storageReadType(const StorageRead *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_READ, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->interface->type); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * storageReadToLog(const StorageRead *this) { return strNewFmt( "{type: %s, name: %s, ignoreMissing: %s}", strPtr(this->interface->type), strPtr(strToLog(this->interface->name)), cvtBoolToConstZ(this->interface->ignoreMissing)); } pgbackrest-release-2.24/src/storage/read.h000066400000000000000000000052451362531507100205340ustar00rootroot00000000000000/*********************************************************************************************************************************** Storage Read Interface ***********************************************************************************************************************************/ #ifndef STORAGE_READ_H #define STORAGE_READ_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define STORAGE_READ_TYPE StorageRead #define STORAGE_READ_PREFIX storageRead typedef struct StorageRead StorageRead; #include "common/io/read.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ StorageRead *storageReadMove(StorageRead *this, MemContext *parentNew); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ IoRead *storageReadIo(const StorageRead *this); bool storageReadIgnoreMissing(const StorageRead *this); const String *storageReadName(const StorageRead *this); const String *storageReadType(const StorageRead *this); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void storageReadFree(StorageRead *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *storageReadToLog(const StorageRead *this); #define FUNCTION_LOG_STORAGE_READ_TYPE \ StorageRead * #define FUNCTION_LOG_STORAGE_READ_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, storageReadToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/storage/read.intern.h000066400000000000000000000027101362531507100220240ustar00rootroot00000000000000/*********************************************************************************************************************************** Storage Read Interface Internal ***********************************************************************************************************************************/ #ifndef STORAGE_READ_INTERN_H #define STORAGE_READ_INTERN_H #include "common/io/read.intern.h" #include "storage/read.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ typedef struct StorageReadInterface { const String * type; const String * name; bool compressible; // Is this file compressible? unsigned int compressLevel; // Level to use for compression bool ignoreMissing; IoReadInterface ioInterface; } StorageReadInterface; StorageRead *storageReadNew(void *driver, const StorageReadInterface *interface); /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ void *storageRead(const StorageRead *this); #endif pgbackrest-release-2.24/src/storage/remote/000077500000000000000000000000001362531507100207355ustar00rootroot00000000000000pgbackrest-release-2.24/src/storage/remote/protocol.c000066400000000000000000000436251362531507100227540ustar00rootroot00000000000000/*********************************************************************************************************************************** Remote Storage Protocol Handler ***********************************************************************************************************************************/ #include "build.auto.h" #include "command/backup/pageChecksum.h" #include "common/compress/gzip/compress.h" #include "common/compress/gzip/decompress.h" #include "common/crypto/cipherBlock.h" #include "common/crypto/hash.h" #include "common/debug.h" #include "common/io/filter/sink.h" #include "common/io/filter/size.h" #include "common/io/io.h" #include "common/log.h" #include "common/memContext.h" #include "common/regExp.h" #include "common/type/json.h" #include "config/config.h" #include "protocol/helper.h" #include "storage/remote/protocol.h" #include "storage/helper.h" #include "storage/storage.intern.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ STRING_EXTERN(PROTOCOL_COMMAND_STORAGE_EXISTS_STR, PROTOCOL_COMMAND_STORAGE_EXISTS); STRING_EXTERN(PROTOCOL_COMMAND_STORAGE_FEATURE_STR, PROTOCOL_COMMAND_STORAGE_FEATURE); STRING_EXTERN(PROTOCOL_COMMAND_STORAGE_INFO_STR, PROTOCOL_COMMAND_STORAGE_INFO); STRING_EXTERN(PROTOCOL_COMMAND_STORAGE_INFO_LIST_STR, PROTOCOL_COMMAND_STORAGE_INFO_LIST); STRING_EXTERN(PROTOCOL_COMMAND_STORAGE_LIST_STR, PROTOCOL_COMMAND_STORAGE_LIST); STRING_EXTERN(PROTOCOL_COMMAND_STORAGE_OPEN_READ_STR, PROTOCOL_COMMAND_STORAGE_OPEN_READ); STRING_EXTERN(PROTOCOL_COMMAND_STORAGE_OPEN_WRITE_STR, PROTOCOL_COMMAND_STORAGE_OPEN_WRITE); STRING_EXTERN(PROTOCOL_COMMAND_STORAGE_PATH_CREATE_STR, PROTOCOL_COMMAND_STORAGE_PATH_CREATE); STRING_EXTERN(PROTOCOL_COMMAND_STORAGE_PATH_EXISTS_STR, PROTOCOL_COMMAND_STORAGE_PATH_EXISTS); STRING_EXTERN(PROTOCOL_COMMAND_STORAGE_PATH_REMOVE_STR, PROTOCOL_COMMAND_STORAGE_PATH_REMOVE); STRING_EXTERN(PROTOCOL_COMMAND_STORAGE_PATH_SYNC_STR, PROTOCOL_COMMAND_STORAGE_PATH_SYNC); STRING_EXTERN(PROTOCOL_COMMAND_STORAGE_REMOVE_STR, PROTOCOL_COMMAND_STORAGE_REMOVE); /*********************************************************************************************************************************** Regular expressions ***********************************************************************************************************************************/ STRING_STATIC(BLOCK_REG_EXP_STR, PROTOCOL_BLOCK_HEADER "-1|[0-9]+"); /*********************************************************************************************************************************** Local variables ***********************************************************************************************************************************/ static struct { MemContext *memContext; // Mem context RegExp *blockRegExp; // Regular expression to check block messages } storageRemoteProtocolLocal; /*********************************************************************************************************************************** Set filter group based on passed filters ***********************************************************************************************************************************/ static void storageRemoteFilterGroup(IoFilterGroup *filterGroup, const Variant *filterList) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(IO_FILTER_GROUP, filterGroup); FUNCTION_TEST_PARAM(VARIANT, filterList); FUNCTION_TEST_END(); ASSERT(filterGroup != NULL); ASSERT(filterList != NULL); for (unsigned int filterIdx = 0; filterIdx < varLstSize(varVarLst(filterList)); filterIdx++) { const KeyValue *filterKv = varKv(varLstGet(varVarLst(filterList), filterIdx)); const String *filterKey = varStr(varLstGet(kvKeyList(filterKv), 0)); const VariantList *filterParam = varVarLst(kvGet(filterKv, VARSTR(filterKey))); if (strEq(filterKey, GZIP_COMPRESS_FILTER_TYPE_STR)) ioFilterGroupAdd(filterGroup, gzipCompressNewVar(filterParam)); else if (strEq(filterKey, GZIP_DECOMPRESS_FILTER_TYPE_STR)) ioFilterGroupAdd(filterGroup, gzipDecompressNewVar(filterParam)); else if (strEq(filterKey, CIPHER_BLOCK_FILTER_TYPE_STR)) ioFilterGroupAdd(filterGroup, cipherBlockNewVar(filterParam)); else if (strEq(filterKey, CRYPTO_HASH_FILTER_TYPE_STR)) ioFilterGroupAdd(filterGroup, cryptoHashNewVar(filterParam)); else if (strEq(filterKey, PAGE_CHECKSUM_FILTER_TYPE_STR)) ioFilterGroupAdd(filterGroup, pageChecksumNewVar(filterParam)); else if (strEq(filterKey, SINK_FILTER_TYPE_STR)) ioFilterGroupAdd(filterGroup, ioSinkNew()); else if (strEq(filterKey, SIZE_FILTER_TYPE_STR)) ioFilterGroupAdd(filterGroup, ioSizeNew()); else THROW_FMT(AssertError, "unable to add filter '%s'", strPtr(filterKey)); } FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Write storage info into the protocol ***********************************************************************************************************************************/ // Helper to write storage type into the protocol static void storageRemoteInfoWriteType(ProtocolServer *server, StorageType type) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(PROTOCOL_SERVER, server); FUNCTION_TEST_PARAM(ENUM, type); FUNCTION_TEST_END(); switch (type) { case storageTypeFile: { protocolServerWriteLine(server, STRDEF("f")); break; } case storageTypePath: { protocolServerWriteLine(server, STRDEF("p")); break; } case storageTypeLink: { protocolServerWriteLine(server, STRDEF("l")); break; } case storageTypeSpecial: { protocolServerWriteLine(server, STRDEF("s")); break; } } FUNCTION_TEST_RETURN_VOID(); } static void storageRemoteInfoWrite(ProtocolServer *server, const StorageInfo *info) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(PROTOCOL_SERVER, server); FUNCTION_TEST_PARAM(STORAGE_INFO, info); FUNCTION_TEST_END(); storageRemoteInfoWriteType(server, info->type); protocolServerWriteLine(server, jsonFromUInt(info->userId)); protocolServerWriteLine(server, jsonFromStr(info->user)); protocolServerWriteLine(server, jsonFromUInt(info->groupId)); protocolServerWriteLine(server, jsonFromStr(info->group)); protocolServerWriteLine(server, jsonFromUInt(info->mode)); protocolServerWriteLine(server, jsonFromInt64(info->timeModified)); if (info->type == storageTypeFile) protocolServerWriteLine(server, jsonFromUInt64(info->size)); if (info->type == storageTypeLink) protocolServerWriteLine(server, jsonFromStr(info->linkDestination)); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Callback to write info list into the protocol ***********************************************************************************************************************************/ static void storageRemoteProtocolInfoListCallback(void *server, const StorageInfo *info) { FUNCTION_TEST_BEGIN(); FUNCTION_LOG_PARAM(PROTOCOL_SERVER, server); FUNCTION_LOG_PARAM(STORAGE_INFO, info); FUNCTION_TEST_END(); protocolServerWriteLine(server, jsonFromStr(info->name)); storageRemoteInfoWrite(server, info); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Process storage protocol requests ***********************************************************************************************************************************/ bool storageRemoteProtocol(const String *command, const VariantList *paramList, ProtocolServer *server) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, command); FUNCTION_LOG_PARAM(VARIANT_LIST, paramList); FUNCTION_LOG_PARAM(PROTOCOL_SERVER, server); FUNCTION_LOG_END(); ASSERT(command != NULL); // Determine which storage should be used const Storage *storage = protocolStorageTypeEnum( cfgOptionStr(cfgOptRemoteType)) == protocolStorageTypeRepo ? storageRepo() : storagePg(); StorageInterface interface = storageInterface(storage); void *driver = storageDriver(storage); // Attempt to satisfy the request -- we may get requests that are meant for other handlers bool found = true; MEM_CONTEXT_TEMP_BEGIN() { if (strEq(command, PROTOCOL_COMMAND_STORAGE_EXISTS_STR)) { protocolServerResponse(server, VARBOOL(storageInterfaceExistsP(driver, varStr(varLstGet(paramList, 0))))); } else if (strEq(command, PROTOCOL_COMMAND_STORAGE_FEATURE_STR)) { protocolServerWriteLine(server, jsonFromStr(storagePathP(storage, NULL))); protocolServerWriteLine(server, jsonFromUInt64(interface.feature)); protocolServerResponse(server, NULL); } else if (strEq(command, PROTOCOL_COMMAND_STORAGE_INFO_STR)) { StorageInfo info = storageInterfaceInfoP( driver, varStr(varLstGet(paramList, 0)), .followLink = varBool(varLstGet(paramList, 1))); protocolServerResponse(server, VARBOOL(info.exists)); if (info.exists) { storageRemoteInfoWrite(server, &info); protocolServerResponse(server, NULL); } } else if (strEq(command, PROTOCOL_COMMAND_STORAGE_INFO_LIST_STR)) { bool result = storageInterfaceInfoListP( driver, varStr(varLstGet(paramList, 0)), storageRemoteProtocolInfoListCallback, server); protocolServerWriteLine(server, NULL); protocolServerResponse(server, VARBOOL(result)); } else if (strEq(command, PROTOCOL_COMMAND_STORAGE_LIST_STR)) { protocolServerResponse( server, varNewVarLst( varLstNewStrLst( storageInterfaceListP( driver, varStr(varLstGet(paramList, 0)), .expression = varStr(varLstGet(paramList, 1)))))); } else if (strEq(command, PROTOCOL_COMMAND_STORAGE_OPEN_READ_STR)) { // Create the read object IoRead *fileRead = storageReadIo( storageInterfaceNewReadP(driver, varStr(varLstGet(paramList, 0)), varBool(varLstGet(paramList, 1)))); // Set filter group based on passed filters storageRemoteFilterGroup(ioReadFilterGroup(fileRead), varLstGet(paramList, 2)); // Check if the file exists bool exists = ioReadOpen(fileRead); protocolServerResponse(server, VARBOOL(exists)); // Transfer the file if it exists if (exists) { Buffer *buffer = bufNew(ioBufferSize()); // Write file out to protocol layer do { ioRead(fileRead, buffer); if (bufUsed(buffer) > 0) { ioWriteStrLine(protocolServerIoWrite(server), strNewFmt(PROTOCOL_BLOCK_HEADER "%zu", bufUsed(buffer))); ioWrite(protocolServerIoWrite(server), buffer); ioWriteFlush(protocolServerIoWrite(server)); bufUsedZero(buffer); } } while (!ioReadEof(fileRead)); ioReadClose(fileRead); // Write a zero block to show file is complete ioWriteLine(protocolServerIoWrite(server), BUFSTRDEF(PROTOCOL_BLOCK_HEADER "0")); ioWriteFlush(protocolServerIoWrite(server)); // Push filter results protocolServerResponse(server, ioFilterGroupResultAll(ioReadFilterGroup(fileRead))); } } else if (strEq(command, PROTOCOL_COMMAND_STORAGE_OPEN_WRITE_STR)) { // Create the write object IoWrite *fileWrite = storageWriteIo( storageInterfaceNewWriteP( driver, varStr(varLstGet(paramList, 0)), .modeFile = varUIntForce(varLstGet(paramList, 1)), .modePath = varUIntForce(varLstGet(paramList, 2)), .user = varStr(varLstGet(paramList, 3)), .group = varStr(varLstGet(paramList, 4)), .timeModified = (time_t)varUInt64Force(varLstGet(paramList, 5)), .createPath = varBool(varLstGet(paramList, 6)), .syncFile = varBool(varLstGet(paramList, 7)), .syncPath = varBool(varLstGet(paramList, 8)), .atomic = varBool(varLstGet(paramList, 9)))); // Set filter group based on passed filters storageRemoteFilterGroup(ioWriteFilterGroup(fileWrite), varLstGet(paramList, 10)); // Open file ioWriteOpen(fileWrite); protocolServerResponse(server, NULL); // Write data Buffer *buffer = bufNew(ioBufferSize()); ssize_t remaining; do { // How much data is remaining to write? remaining = storageRemoteProtocolBlockSize(ioReadLine(protocolServerIoRead(server))); // Write data if (remaining > 0) { size_t bytesToCopy = (size_t)remaining; do { if (bytesToCopy < bufSize(buffer)) bufLimitSet(buffer, bytesToCopy); bytesToCopy -= ioRead(protocolServerIoRead(server), buffer); ioWrite(fileWrite, buffer); bufUsedZero(buffer); bufLimitClear(buffer); } while (bytesToCopy > 0); } // Close when all data has been written else if (remaining == 0) { ioWriteClose(fileWrite); // Push filter results protocolServerResponse(server, ioFilterGroupResultAll(ioWriteFilterGroup(fileWrite))); } // Write was aborted so free the file else { ioWriteFree(fileWrite); protocolServerResponse(server, NULL); } } while (remaining > 0); } else if (strEq(command, PROTOCOL_COMMAND_STORAGE_PATH_CREATE_STR)) { storageInterfacePathCreateP( driver, varStr(varLstGet(paramList, 0)), varBool(varLstGet(paramList, 1)), varBool(varLstGet(paramList, 2)), varUIntForce(varLstGet(paramList, 3))); protocolServerResponse(server, NULL); } else if (strEq(command, PROTOCOL_COMMAND_STORAGE_PATH_EXISTS_STR)) { // Not all drivers implement pathExists() CHECK(interface.pathExists != NULL); protocolServerResponse(server, VARBOOL(storageInterfacePathExistsP(driver, varStr(varLstGet(paramList, 0))))); } else if (strEq(command, PROTOCOL_COMMAND_STORAGE_PATH_REMOVE_STR)) { protocolServerResponse(server, VARBOOL(storageInterfacePathRemoveP(driver, varStr(varLstGet(paramList, 0)), varBool(varLstGet(paramList, 1))))); } else if (strEq(command, PROTOCOL_COMMAND_STORAGE_PATH_SYNC_STR)) { storageInterfacePathSyncP(driver, varStr(varLstGet(paramList, 0))); protocolServerResponse(server, NULL); } else if (strEq(command, PROTOCOL_COMMAND_STORAGE_REMOVE_STR)) { storageInterfaceRemoveP(driver, varStr(varLstGet(paramList, 0)), .errorOnMissing = varBool(varLstGet(paramList, 1))); protocolServerResponse(server, NULL); } else found = false; } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, found); } /*********************************************************************************************************************************** Get size of the next transfer block ***********************************************************************************************************************************/ ssize_t storageRemoteProtocolBlockSize(const String *message) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, message); FUNCTION_LOG_END(); ASSERT(message != NULL); // Create block regular expression if it has not been created yet if (storageRemoteProtocolLocal.memContext == NULL) { MEM_CONTEXT_BEGIN(memContextTop()) { MEM_CONTEXT_NEW_BEGIN("StorageRemoteFileReadLocal") { storageRemoteProtocolLocal.memContext = memContextCurrent(); storageRemoteProtocolLocal.blockRegExp = regExpNew(BLOCK_REG_EXP_STR); } MEM_CONTEXT_NEW_END(); } MEM_CONTEXT_END(); } // Validate the header block size message if (!regExpMatch(storageRemoteProtocolLocal.blockRegExp, message)) THROW_FMT(ProtocolError, "'%s' is not a valid block size message", strPtr(message)); FUNCTION_LOG_RETURN(SSIZE, (ssize_t)cvtZToInt(strPtr(message) + sizeof(PROTOCOL_BLOCK_HEADER) - 1)); } pgbackrest-release-2.24/src/storage/remote/protocol.h000066400000000000000000000057011362531507100227520ustar00rootroot00000000000000/*********************************************************************************************************************************** Remote Storage Protocol Handler ***********************************************************************************************************************************/ #ifndef STORAGE_REMOTE_PROTOCOL_H #define STORAGE_REMOTE_PROTOCOL_H #include "common/type/string.h" #include "common/type/variantList.h" #include "protocol/server.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define PROTOCOL_BLOCK_HEADER "BRBLOCK" #define PROTOCOL_COMMAND_STORAGE_EXISTS "storageExists" STRING_DECLARE(PROTOCOL_COMMAND_STORAGE_EXISTS_STR); #define PROTOCOL_COMMAND_STORAGE_FEATURE "storageFeature" STRING_DECLARE(PROTOCOL_COMMAND_STORAGE_FEATURE_STR); #define PROTOCOL_COMMAND_STORAGE_INFO "storageInfo" STRING_DECLARE(PROTOCOL_COMMAND_STORAGE_INFO_STR); #define PROTOCOL_COMMAND_STORAGE_INFO_LIST "storageInfoList" STRING_DECLARE(PROTOCOL_COMMAND_STORAGE_INFO_LIST_STR); #define PROTOCOL_COMMAND_STORAGE_LIST "storageList" STRING_DECLARE(PROTOCOL_COMMAND_STORAGE_LIST_STR); #define PROTOCOL_COMMAND_STORAGE_OPEN_READ "storageOpenRead" STRING_DECLARE(PROTOCOL_COMMAND_STORAGE_OPEN_READ_STR); #define PROTOCOL_COMMAND_STORAGE_OPEN_WRITE "storageOpenWrite" STRING_DECLARE(PROTOCOL_COMMAND_STORAGE_OPEN_WRITE_STR); #define PROTOCOL_COMMAND_STORAGE_PATH_CREATE "storagePathCreate" STRING_DECLARE(PROTOCOL_COMMAND_STORAGE_PATH_CREATE_STR); #define PROTOCOL_COMMAND_STORAGE_PATH_EXISTS "storagePathExists" STRING_DECLARE(PROTOCOL_COMMAND_STORAGE_PATH_EXISTS_STR); #define PROTOCOL_COMMAND_STORAGE_REMOVE "storageRemove" STRING_DECLARE(PROTOCOL_COMMAND_STORAGE_REMOVE_STR); #define PROTOCOL_COMMAND_STORAGE_PATH_REMOVE "storagePathRemove" STRING_DECLARE(PROTOCOL_COMMAND_STORAGE_PATH_REMOVE_STR); #define PROTOCOL_COMMAND_STORAGE_PATH_SYNC "storagePathSync" STRING_DECLARE(PROTOCOL_COMMAND_STORAGE_PATH_SYNC_STR); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ ssize_t storageRemoteProtocolBlockSize(const String *message); bool storageRemoteProtocol(const String *command, const VariantList *paramList, ProtocolServer *server); #endif pgbackrest-release-2.24/src/storage/remote/read.c000066400000000000000000000214241362531507100220170ustar00rootroot00000000000000/*********************************************************************************************************************************** Remote Storage Read ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include "common/compress/gzip/compress.h" #include "common/compress/gzip/decompress.h" #include "common/debug.h" #include "common/io/read.intern.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "common/type/convert.h" #include "storage/remote/protocol.h" #include "storage/remote/read.h" #include "storage/read.intern.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ typedef struct StorageReadRemote { MemContext *memContext; // Object mem context StorageReadInterface interface; // Interface StorageRemote *storage; // Storage that created this object StorageRead *read; // Storage read interface ProtocolClient *client; // Protocol client for requests size_t remaining; // Bytes remaining to be read in block bool eof; // Has the file reached eof? #ifdef DEBUG uint64_t protocolReadBytes; // How many bytes were read from the protocol layer? #endif } StorageReadRemote; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_STORAGE_READ_REMOTE_TYPE \ StorageReadRemote * #define FUNCTION_LOG_STORAGE_READ_REMOTE_FORMAT(value, buffer, bufferSize) \ objToLog(value, "StorageReadRemote", buffer, bufferSize) /*********************************************************************************************************************************** Open the file ***********************************************************************************************************************************/ static bool storageReadRemoteOpen(THIS_VOID) { THIS(StorageReadRemote); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_READ_REMOTE, this); FUNCTION_LOG_END(); ASSERT(this != NULL); bool result = false; MEM_CONTEXT_TEMP_BEGIN() { // If the file is compressible add compression filter on the remote if (this->interface.compressible) { ioFilterGroupAdd( ioReadFilterGroup(storageReadIo(this->read)), gzipCompressNew((int)this->interface.compressLevel, true)); } ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_STORAGE_OPEN_READ_STR); protocolCommandParamAdd(command, VARSTR(this->interface.name)); protocolCommandParamAdd(command, VARBOOL(this->interface.ignoreMissing)); protocolCommandParamAdd(command, ioFilterGroupParamAll(ioReadFilterGroup(storageReadIo(this->read)))); result = varBool(protocolClientExecute(this->client, command, true)); // Clear filters since they will be run on the remote side ioFilterGroupClear(ioReadFilterGroup(storageReadIo(this->read))); // If the file is compressible add decompression filter locally if (this->interface.compressible) ioFilterGroupAdd(ioReadFilterGroup(storageReadIo(this->read)), gzipDecompressNew(true)); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, result); } /*********************************************************************************************************************************** Read from a file ***********************************************************************************************************************************/ static size_t storageReadRemote(THIS_VOID, Buffer *buffer, bool block) { THIS(StorageReadRemote); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_READ_REMOTE, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_PARAM(BOOL, block); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(buffer != NULL && !bufFull(buffer)); size_t result = 0; // Read if eof has not been reached if (!this->eof) { do { // If no bytes remaining then read a new block if (this->remaining == 0) { MEM_CONTEXT_TEMP_BEGIN() { this->remaining = (size_t)storageRemoteProtocolBlockSize(ioReadLine(protocolClientIoRead(this->client))); if (this->remaining == 0) { ioFilterGroupResultAllSet( ioReadFilterGroup(storageReadIo(this->read)), protocolClientReadOutput(this->client, true)); this->eof = true; } #ifdef DEBUG this->protocolReadBytes += this->remaining; #endif } MEM_CONTEXT_TEMP_END(); } // Read if not eof if (!this->eof) { // If the buffer can contain all remaining bytes if (bufRemains(buffer) >= this->remaining) { bufLimitSet(buffer, bufUsed(buffer) + this->remaining); ioRead(protocolClientIoRead(this->client), buffer); bufLimitClear(buffer); this->remaining = 0; } // Else read what we can else this->remaining -= ioRead(protocolClientIoRead(this->client), buffer); } } while (!this->eof && !bufFull(buffer)); } FUNCTION_LOG_RETURN(SIZE, result); } /*********************************************************************************************************************************** Has file reached EOF? ***********************************************************************************************************************************/ static bool storageReadRemoteEof(THIS_VOID) { THIS(StorageReadRemote); FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_READ_REMOTE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->eof); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ StorageRead * storageReadRemoteNew( StorageRemote *storage, ProtocolClient *client, const String *name, bool ignoreMissing, bool compressible, unsigned int compressLevel) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_REMOTE, storage); FUNCTION_LOG_PARAM(PROTOCOL_CLIENT, client); FUNCTION_LOG_PARAM(STRING, name); FUNCTION_LOG_PARAM(BOOL, ignoreMissing); FUNCTION_LOG_PARAM(BOOL, compressible); FUNCTION_LOG_PARAM(UINT, compressLevel); FUNCTION_LOG_END(); ASSERT(storage != NULL); ASSERT(client != NULL); ASSERT(name != NULL); StorageReadRemote *this = NULL; MEM_CONTEXT_NEW_BEGIN("StorageReadRemote") { this = memNew(sizeof(StorageReadRemote)); *this = (StorageReadRemote) { .memContext = MEM_CONTEXT_NEW(), .storage = storage, .client = client, .interface = (StorageReadInterface) { .type = STORAGE_REMOTE_TYPE_STR, .name = strDup(name), .compressible = compressible, .compressLevel = compressLevel, .ignoreMissing = ignoreMissing, .ioInterface = (IoReadInterface) { .eof = storageReadRemoteEof, .open = storageReadRemoteOpen, .read = storageReadRemote, }, }, }; this->read = storageReadNew(this, &this->interface); } MEM_CONTEXT_NEW_END(); ASSERT(this != NULL); FUNCTION_LOG_RETURN(STORAGE_READ, this->read); } pgbackrest-release-2.24/src/storage/remote/read.h000066400000000000000000000016171362531507100220260ustar00rootroot00000000000000/*********************************************************************************************************************************** Remote Storage Read ***********************************************************************************************************************************/ #ifndef STORAGE_REMOTE_READ_H #define STORAGE_REMOTE_READ_H #include "protocol/client.h" #include "storage/remote/storage.intern.h" #include "storage/read.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ StorageRead *storageReadRemoteNew( StorageRemote *storage, ProtocolClient *client, const String *name, bool ignoreMissing, bool compressible, unsigned int compressLevel); #endif pgbackrest-release-2.24/src/storage/remote/storage.c000066400000000000000000000441301362531507100225470ustar00rootroot00000000000000/*********************************************************************************************************************************** Remote Storage ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "common/type/json.h" #include "storage/remote/protocol.h" #include "storage/remote/read.h" #include "storage/remote/storage.intern.h" #include "storage/remote/write.h" /*********************************************************************************************************************************** Storage type ***********************************************************************************************************************************/ STRING_EXTERN(STORAGE_REMOTE_TYPE_STR, STORAGE_REMOTE_TYPE); /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct StorageRemote { STORAGE_COMMON_MEMBER; MemContext *memContext; ProtocolClient *client; // Protocol client unsigned int compressLevel; // Protocol compression level }; /**********************************************************************************************************************************/ static bool storageRemoteExists(THIS_VOID, const String *file, StorageInterfaceExistsParam param) { THIS(StorageRemote); FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_REMOTE, this); FUNCTION_LOG_PARAM(STRING, file); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(file != NULL); bool result = false; MEM_CONTEXT_TEMP_BEGIN() { ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_STORAGE_EXISTS_STR); protocolCommandParamAdd(command, VARSTR(file)); result = varBool(protocolClientExecute(this->client, command, true)); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, result); } /**********************************************************************************************************************************/ // Helper to convert protocol storage type to an enum static StorageType storageRemoteInfoParseType(const char type) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(CHAR, type); FUNCTION_TEST_END(); switch (type) { case 'f': FUNCTION_TEST_RETURN(storageTypeFile); case 'p': FUNCTION_TEST_RETURN(storageTypePath); case 'l': FUNCTION_TEST_RETURN(storageTypeLink); case 's': FUNCTION_TEST_RETURN(storageTypeSpecial); } THROW_FMT(AssertError, "unknown storage type '%c'", type); } // Helper to parse storage info from the protocol output static void storageRemoteInfoParse(ProtocolClient *client, StorageInfo *info) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(PROTOCOL_CLIENT, client); FUNCTION_TEST_PARAM(STORAGE_INFO, info); FUNCTION_TEST_END(); info->type = storageRemoteInfoParseType(strPtr(protocolClientReadLine(client))[0]); info->userId = jsonToUInt(protocolClientReadLine(client)); info->user = jsonToStr(protocolClientReadLine(client)); info->groupId = jsonToUInt(protocolClientReadLine(client)); info->group = jsonToStr(protocolClientReadLine(client)); info->mode = jsonToUInt(protocolClientReadLine(client)); info->timeModified = (time_t)jsonToUInt64(protocolClientReadLine(client)); if (info->type == storageTypeFile) info->size = jsonToUInt64(protocolClientReadLine(client)); if (info->type == storageTypeLink) info->linkDestination = jsonToStr(protocolClientReadLine(client)); FUNCTION_TEST_RETURN_VOID(); } static StorageInfo storageRemoteInfo(THIS_VOID, const String *file, StorageInterfaceInfoParam param) { THIS(StorageRemote); FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_REMOTE, this); FUNCTION_LOG_PARAM(STRING, file); FUNCTION_LOG_PARAM(BOOL, param.followLink); FUNCTION_LOG_END(); ASSERT(this != NULL); StorageInfo result = {.exists = false}; MEM_CONTEXT_TEMP_BEGIN() { ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_STORAGE_INFO_STR); protocolCommandParamAdd(command, VARSTR(file)); protocolCommandParamAdd(command, VARBOOL(param.followLink)); result.exists = varBool(protocolClientExecute(this->client, command, true)); if (result.exists) { // Read info from protocol storageRemoteInfoParse(this->client, &result); // Acknowledge command completed protocolClientReadOutput(this->client, false); // Duplicate strings into the prior context MEM_CONTEXT_PRIOR_BEGIN() { result.name = strDup(result.name); result.linkDestination = strDup(result.linkDestination); result.user = strDup(result.user); result.group = strDup(result.group); } MEM_CONTEXT_PRIOR_END(); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STORAGE_INFO, result); } /**********************************************************************************************************************************/ static bool storageRemoteInfoList( THIS_VOID, const String *path, StorageInfoListCallback callback, void *callbackData, StorageInterfaceInfoListParam param) { THIS(StorageRemote); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_REMOTE, this); FUNCTION_LOG_PARAM(STRING, path); FUNCTION_LOG_PARAM(FUNCTIONP, callback); FUNCTION_LOG_PARAM_P(VOID, callbackData); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(path != NULL); ASSERT(callback != NULL); bool result = false; MEM_CONTEXT_TEMP_BEGIN() { ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_STORAGE_INFO_LIST_STR); protocolCommandParamAdd(command, VARSTR(path)); // Send command protocolClientWriteCommand(this->client, command); // Read list. The list ends when there is a blank line -- this is safe even for file systems that allow blank filenames // since the filename is json-encoded so will always include quotes. const String *name = protocolClientReadLine(this->client); while (strSize(name) != 0) { StorageInfo info = {.exists = true, .name = jsonToStr(name)}; storageRemoteInfoParse(this->client, &info); callback(callbackData, &info); // Read the next item name = protocolClientReadLine(this->client); } // Acknowledge command completed result = varBool(protocolClientReadOutput(this->client, true)); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, result); } /**********************************************************************************************************************************/ static StringList * storageRemoteList(THIS_VOID, const String *path, StorageInterfaceListParam param) { THIS(StorageRemote); FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_REMOTE, this); FUNCTION_LOG_PARAM(STRING, path); FUNCTION_LOG_PARAM(STRING, param.expression); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(path != NULL); StringList *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_STORAGE_LIST_STR); protocolCommandParamAdd(command, VARSTR(path)); protocolCommandParamAdd(command, VARSTR(param.expression)); result = strLstMove(strLstNewVarLst(varVarLst(protocolClientExecute(this->client, command, true))), memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING_LIST, result); } /**********************************************************************************************************************************/ static StorageRead * storageRemoteNewRead(THIS_VOID, const String *file, bool ignoreMissing, StorageInterfaceNewReadParam param) { THIS(StorageRemote); FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_REMOTE, this); FUNCTION_LOG_PARAM(STRING, file); FUNCTION_LOG_PARAM(BOOL, ignoreMissing); FUNCTION_LOG_PARAM(BOOL, param.compressible); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(file != NULL); FUNCTION_LOG_RETURN( STORAGE_READ, storageReadRemoteNew( this, this->client, file, ignoreMissing, this->compressLevel > 0 ? param.compressible : false, this->compressLevel)); } /**********************************************************************************************************************************/ static StorageWrite * storageRemoteNewWrite( THIS_VOID, const String *file, StorageInterfaceNewWriteParam param) { THIS(StorageRemote); FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_REMOTE, this); FUNCTION_LOG_PARAM(STRING, file); FUNCTION_LOG_PARAM(MODE, param.modeFile); FUNCTION_LOG_PARAM(MODE, param.modePath); FUNCTION_LOG_PARAM(STRING, param.user); FUNCTION_LOG_PARAM(STRING, param.group); FUNCTION_LOG_PARAM(TIME, param.timeModified); FUNCTION_LOG_PARAM(BOOL, param.createPath); FUNCTION_LOG_PARAM(BOOL, param.syncFile); FUNCTION_LOG_PARAM(BOOL, param.syncPath); FUNCTION_LOG_PARAM(BOOL, param.atomic); FUNCTION_LOG_PARAM(BOOL, param.compressible); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(file != NULL); FUNCTION_LOG_RETURN( STORAGE_WRITE, storageWriteRemoteNew( this, this->client, file, param.modeFile, param.modePath, param.user, param.group, param.timeModified, param.createPath, param.syncFile, param.syncPath, param.atomic, this->compressLevel > 0 ? param.compressible : false, this->compressLevel)); } /**********************************************************************************************************************************/ static void storageRemotePathCreate( THIS_VOID, const String *path, bool errorOnExists, bool noParentCreate, mode_t mode, StorageInterfacePathCreateParam param) { THIS(StorageRemote); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_REMOTE, this); FUNCTION_LOG_PARAM(STRING, path); FUNCTION_LOG_PARAM(BOOL, errorOnExists); FUNCTION_LOG_PARAM(BOOL, noParentCreate); FUNCTION_LOG_PARAM(MODE, mode); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(path != NULL); MEM_CONTEXT_TEMP_BEGIN() { ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_STORAGE_PATH_CREATE_STR); protocolCommandParamAdd(command, VARSTR(path)); protocolCommandParamAdd(command, VARBOOL(errorOnExists)); protocolCommandParamAdd(command, VARBOOL(noParentCreate)); protocolCommandParamAdd(command, VARUINT(mode)); protocolClientExecute(this->client, command, false); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /**********************************************************************************************************************************/ static bool storageRemotePathExists(THIS_VOID, const String *path, StorageInterfacePathExistsParam param) { THIS(StorageRemote); FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_REMOTE, this); FUNCTION_LOG_PARAM(STRING, path); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(path != NULL); bool result = false; MEM_CONTEXT_TEMP_BEGIN() { ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_STORAGE_PATH_EXISTS_STR); protocolCommandParamAdd(command, VARSTR(path)); result = varBool(protocolClientExecute(this->client, command, true)); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, result); } /**********************************************************************************************************************************/ static bool storageRemotePathRemove(THIS_VOID, const String *path, bool recurse, StorageInterfacePathRemoveParam param) { THIS(StorageRemote); FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_REMOTE, this); FUNCTION_LOG_PARAM(STRING, path); FUNCTION_LOG_PARAM(BOOL, recurse); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(path != NULL); bool result = false; MEM_CONTEXT_TEMP_BEGIN() { ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_STORAGE_PATH_REMOVE_STR); protocolCommandParamAdd(command, VARSTR(path)); protocolCommandParamAdd(command, VARBOOL(recurse)); result = varBool(protocolClientExecute(this->client, command, true)); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, result); } /**********************************************************************************************************************************/ static void storageRemotePathSync(THIS_VOID, const String *path, StorageInterfacePathSyncParam param) { THIS(StorageRemote); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_REMOTE, this); FUNCTION_LOG_PARAM(STRING, path); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(path != NULL); MEM_CONTEXT_TEMP_BEGIN() { ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_STORAGE_PATH_SYNC_STR); protocolCommandParamAdd(command, VARSTR(path)); protocolClientExecute(this->client, command, false); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /**********************************************************************************************************************************/ static void storageRemoteRemove(THIS_VOID, const String *file, StorageInterfaceRemoveParam param) { THIS(StorageRemote); FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_REMOTE, this); FUNCTION_LOG_PARAM(STRING, file); FUNCTION_LOG_PARAM(BOOL, param.errorOnMissing); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(file != NULL); MEM_CONTEXT_TEMP_BEGIN() { ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_STORAGE_REMOVE_STR); protocolCommandParamAdd(command, VARSTR(file)); protocolCommandParamAdd(command, VARBOOL(param.errorOnMissing)); protocolClientExecute(this->client, command, false); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ static const StorageInterface storageInterfaceRemote = { .exists = storageRemoteExists, .info = storageRemoteInfo, .infoList = storageRemoteInfoList, .list = storageRemoteList, .newRead = storageRemoteNewRead, .newWrite = storageRemoteNewWrite, .pathCreate = storageRemotePathCreate, .pathExists = storageRemotePathExists, .pathRemove = storageRemotePathRemove, .pathSync = storageRemotePathSync, .remove = storageRemoteRemove, }; Storage * storageRemoteNew( mode_t modeFile, mode_t modePath, bool write, StoragePathExpressionCallback pathExpressionFunction, ProtocolClient *client, unsigned int compressLevel) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(MODE, modeFile); FUNCTION_LOG_PARAM(MODE, modePath); FUNCTION_LOG_PARAM(BOOL, write); FUNCTION_LOG_PARAM(FUNCTIONP, pathExpressionFunction); FUNCTION_LOG_PARAM(PROTOCOL_CLIENT, client); FUNCTION_LOG_PARAM(UINT, compressLevel); FUNCTION_LOG_END(); ASSERT(modeFile != 0); ASSERT(modePath != 0); ASSERT(client != NULL); Storage *this = NULL; MEM_CONTEXT_NEW_BEGIN("StorageRemote") { StorageRemote *driver = memNew(sizeof(StorageRemote)); *driver = (StorageRemote) { .memContext = MEM_CONTEXT_NEW(), .client = client, .compressLevel = compressLevel, .interface = storageInterfaceRemote, }; const String *path = NULL; // Get storage features from the remote MEM_CONTEXT_TEMP_BEGIN() { // Send command protocolClientWriteCommand(driver->client, protocolCommandNew(PROTOCOL_COMMAND_STORAGE_FEATURE_STR)); // Read values path = jsonToStr(protocolClientReadLine(driver->client)); driver->interface.feature = jsonToUInt64(protocolClientReadLine(driver->client)); // Acknowledge command completed protocolClientReadOutput(driver->client, false); // Dup path into parent context MEM_CONTEXT_PRIOR_BEGIN() { path = strDup(path); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); this = storageNew( STORAGE_REMOTE_TYPE_STR, path, modeFile, modePath, write, pathExpressionFunction, driver, driver->interface); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(STORAGE, this); } pgbackrest-release-2.24/src/storage/remote/storage.h000066400000000000000000000024121362531507100225510ustar00rootroot00000000000000/*********************************************************************************************************************************** Remote Storage ***********************************************************************************************************************************/ #ifndef STORAGE_REMOTE_STORAGE_H #define STORAGE_REMOTE_STORAGE_H #include "protocol/client.h" #include "storage/storage.intern.h" /*********************************************************************************************************************************** Storage type ***********************************************************************************************************************************/ #define STORAGE_REMOTE_TYPE "remote" STRING_DECLARE(STORAGE_REMOTE_TYPE_STR); /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ Storage *storageRemoteNew( mode_t modeFile, mode_t modePath, bool write, StoragePathExpressionCallback pathExpressionFunction, ProtocolClient *client, unsigned int compressLevel); #endif pgbackrest-release-2.24/src/storage/remote/storage.intern.h000066400000000000000000000025401362531507100240510ustar00rootroot00000000000000/*********************************************************************************************************************************** Remote Storage Internal ***********************************************************************************************************************************/ #ifndef STORAGE_REMOTE_STORAGE_INTERN_H #define STORAGE_REMOTE_STORAGE_INTERN_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ typedef struct StorageRemote StorageRemote; #include "storage/remote/storage.h" /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_STORAGE_REMOTE_TYPE \ StorageRemote * #define FUNCTION_LOG_STORAGE_REMOTE_FORMAT(value, buffer, bufferSize) \ objToLog(value, "StorageRemote", buffer, bufferSize) #endif pgbackrest-release-2.24/src/storage/remote/write.c000066400000000000000000000237051362531507100222420ustar00rootroot00000000000000/*********************************************************************************************************************************** Remote Storage File write ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/compress/gzip/compress.h" #include "common/compress/gzip/decompress.h" #include "common/debug.h" #include "common/io/write.intern.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "storage/remote/protocol.h" #include "storage/remote/write.h" #include "storage/write.intern.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define STORAGE_WRITE_REMOTE_TYPE StorageWriteRemote #define STORAGE_WRITE_REMOTE_PREFIX storageWriteRemote typedef struct StorageWriteRemote { MemContext *memContext; // Object mem context StorageWriteInterface interface; // Interface StorageRemote *storage; // Storage that created this object StorageWrite *write; // Storage write interface ProtocolClient *client; // Protocol client to make requests with #ifdef DEBUG uint64_t protocolWriteBytes; // How many bytes were written to the protocol layer? #endif } StorageWriteRemote; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_STORAGE_WRITE_REMOTE_TYPE \ StorageWriteRemote * #define FUNCTION_LOG_STORAGE_WRITE_REMOTE_FORMAT(value, buffer, bufferSize) \ objToLog(value, "StorageWriteRemote", buffer, bufferSize) /*********************************************************************************************************************************** Close file on the remote ***********************************************************************************************************************************/ OBJECT_DEFINE_FREE_RESOURCE_BEGIN(STORAGE_WRITE_REMOTE, LOG, logLevelTrace) { ioWriteLine(protocolClientIoWrite(this->client), BUFSTRDEF(PROTOCOL_BLOCK_HEADER "-1")); ioWriteFlush(protocolClientIoWrite(this->client)); protocolClientReadOutput(this->client, false); } OBJECT_DEFINE_FREE_RESOURCE_END(LOG); /*********************************************************************************************************************************** Open the file ***********************************************************************************************************************************/ static void storageWriteRemoteOpen(THIS_VOID) { THIS(StorageWriteRemote); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_WRITE_REMOTE, this); FUNCTION_LOG_END(); ASSERT(this != NULL); MEM_CONTEXT_TEMP_BEGIN() { // If the file is compressible add decompression filter on the remote if (this->interface.compressible) ioFilterGroupInsert(ioWriteFilterGroup(storageWriteIo(this->write)), 0, gzipDecompressNew(true)); ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_STORAGE_OPEN_WRITE_STR); protocolCommandParamAdd(command, VARSTR(this->interface.name)); protocolCommandParamAdd(command, VARUINT(this->interface.modeFile)); protocolCommandParamAdd(command, VARUINT(this->interface.modePath)); protocolCommandParamAdd(command, VARSTR(this->interface.user)); protocolCommandParamAdd(command, VARSTR(this->interface.group)); protocolCommandParamAdd(command, VARINT64(this->interface.timeModified)); protocolCommandParamAdd(command, VARBOOL(this->interface.createPath)); protocolCommandParamAdd(command, VARBOOL(this->interface.syncFile)); protocolCommandParamAdd(command, VARBOOL(this->interface.syncPath)); protocolCommandParamAdd(command, VARBOOL(this->interface.atomic)); protocolCommandParamAdd(command, ioFilterGroupParamAll(ioWriteFilterGroup(storageWriteIo(this->write)))); protocolClientExecute(this->client, command, false); // Clear filters since they will be run on the remote side ioFilterGroupClear(ioWriteFilterGroup(storageWriteIo(this->write))); // If the file is compressible add compression filter locally if (this->interface.compressible) { ioFilterGroupAdd( ioWriteFilterGroup(storageWriteIo(this->write)), gzipCompressNew((int)this->interface.compressLevel, true)); } // Set free callback to ensure remote file is freed memContextCallbackSet(this->memContext, storageWriteRemoteFreeResource, this); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Write to the file ***********************************************************************************************************************************/ static void storageWriteRemote(THIS_VOID, const Buffer *buffer) { THIS(StorageWriteRemote); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_WRITE_REMOTE, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(buffer != NULL); ioWriteStrLine(protocolClientIoWrite(this->client), strNewFmt(PROTOCOL_BLOCK_HEADER "%zu", bufUsed(buffer))); ioWrite(protocolClientIoWrite(this->client), buffer); ioWriteFlush(protocolClientIoWrite(this->client)); #ifdef DEBUG this->protocolWriteBytes += bufUsed(buffer); #endif FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Close the file ***********************************************************************************************************************************/ static void storageWriteRemoteClose(THIS_VOID) { THIS(StorageWriteRemote); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_WRITE_REMOTE, this); FUNCTION_LOG_END(); ASSERT(this != NULL); // Close if the file has not already been closed if (this->client != NULL) { ioWriteLine(protocolClientIoWrite(this->client), BUFSTRDEF(PROTOCOL_BLOCK_HEADER "0")); ioWriteFlush(protocolClientIoWrite(this->client)); ioFilterGroupResultAllSet(ioWriteFilterGroup(storageWriteIo(this->write)), protocolClientReadOutput(this->client, true)); this->client = NULL; memContextCallbackClear(this->memContext); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Create a new file ***********************************************************************************************************************************/ StorageWrite * storageWriteRemoteNew( StorageRemote *storage, ProtocolClient *client, const String *name, mode_t modeFile, mode_t modePath, const String *user, const String *group, time_t timeModified, bool createPath, bool syncFile, bool syncPath, bool atomic, bool compressible, unsigned int compressLevel) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_REMOTE, storage); FUNCTION_LOG_PARAM(STRING, name); FUNCTION_LOG_PARAM(MODE, modeFile); FUNCTION_LOG_PARAM(MODE, modePath); FUNCTION_LOG_PARAM(STRING, user); FUNCTION_LOG_PARAM(STRING, group); FUNCTION_LOG_PARAM(TIME, timeModified); FUNCTION_LOG_PARAM(BOOL, createPath); FUNCTION_LOG_PARAM(BOOL, syncFile); FUNCTION_LOG_PARAM(BOOL, syncPath); FUNCTION_LOG_PARAM(BOOL, atomic); FUNCTION_LOG_PARAM(BOOL, compressible); FUNCTION_LOG_PARAM(UINT, compressLevel); FUNCTION_LOG_END(); ASSERT(storage != NULL); ASSERT(client != NULL); ASSERT(name != NULL); ASSERT(modeFile != 0); ASSERT(modePath != 0); StorageWriteRemote *this = NULL; MEM_CONTEXT_NEW_BEGIN("StorageWriteRemote") { this = memNew(sizeof(StorageWriteRemote)); *this = (StorageWriteRemote) { .memContext = MEM_CONTEXT_NEW(), .storage = storage, .client = client, .interface = (StorageWriteInterface) { .type = STORAGE_REMOTE_TYPE_STR, .name = strDup(name), .atomic = atomic, .compressible = compressible, .compressLevel = compressLevel, .createPath = createPath, .group = strDup(group), .modeFile = modeFile, .modePath = modePath, .syncFile = syncFile, .syncPath = syncPath, .user = strDup(user), .timeModified = timeModified, .ioInterface = (IoWriteInterface) { .close = storageWriteRemoteClose, .open = storageWriteRemoteOpen, .write = storageWriteRemote, }, }, }; this->write = storageWriteNew(this, &this->interface); } MEM_CONTEXT_NEW_END(); ASSERT(this != NULL); FUNCTION_LOG_RETURN(STORAGE_WRITE, this->write); } pgbackrest-release-2.24/src/storage/remote/write.h000066400000000000000000000020461362531507100222420ustar00rootroot00000000000000/*********************************************************************************************************************************** Remote Storage File write ***********************************************************************************************************************************/ #ifndef STORAGE_REMOTE_WRITE_H #define STORAGE_REMOTE_WRITE_H #include "protocol/client.h" #include "storage/remote/storage.intern.h" #include "storage/write.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ StorageWrite *storageWriteRemoteNew( StorageRemote *storage, ProtocolClient *client, const String *name, mode_t modeFile, mode_t modePath, const String *user, const String *group, time_t timeModified, bool createPath, bool syncFile, bool syncPath, bool atomic, bool compressible, unsigned int compressLevel); #endif pgbackrest-release-2.24/src/storage/s3/000077500000000000000000000000001362531507100177675ustar00rootroot00000000000000pgbackrest-release-2.24/src/storage/s3/read.c000066400000000000000000000163051362531507100210530ustar00rootroot00000000000000/*********************************************************************************************************************************** S3 Storage Read ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include "common/debug.h" #include "common/io/http/client.h" #include "common/io/read.intern.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "storage/s3/read.h" #include "storage/read.intern.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define STORAGE_READ_S3_TYPE StorageReadS3 #define STORAGE_READ_S3_PREFIX storageReadS3 typedef struct StorageReadS3 { MemContext *memContext; // Object mem context StorageReadInterface interface; // Interface StorageS3 *storage; // Storage that created this object HttpClient *httpClient; // Http client for requests } StorageReadS3; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_STORAGE_READ_S3_TYPE \ StorageReadS3 * #define FUNCTION_LOG_STORAGE_READ_S3_FORMAT(value, buffer, bufferSize) \ objToLog(value, "StorageReadS3", buffer, bufferSize) /*********************************************************************************************************************************** Mark http client as done so it can be reused ***********************************************************************************************************************************/ OBJECT_DEFINE_FREE_RESOURCE_BEGIN(STORAGE_READ_S3, LOG, logLevelTrace) { httpClientDone(this->httpClient); } OBJECT_DEFINE_FREE_RESOURCE_END(LOG); /*********************************************************************************************************************************** Open the file ***********************************************************************************************************************************/ static bool storageReadS3Open(THIS_VOID) { THIS(StorageReadS3); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_READ_S3, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->httpClient == NULL); bool result = false; // Request the file this->httpClient = storageS3Request(this->storage, HTTP_VERB_GET_STR, this->interface.name, NULL, NULL, false, true).httpClient; if (httpClientResponseCodeOk(this->httpClient)) { memContextCallbackSet(this->memContext, storageReadS3FreeResource, this); result = true; } // Else error unless ignore missing else if (!this->interface.ignoreMissing) THROW_FMT(FileMissingError, "unable to open '%s': No such file or directory", strPtr(this->interface.name)); FUNCTION_LOG_RETURN(BOOL, result); } /*********************************************************************************************************************************** Read from a file ***********************************************************************************************************************************/ static size_t storageReadS3(THIS_VOID, Buffer *buffer, bool block) { THIS(StorageReadS3); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_READ_S3, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_PARAM(BOOL, block); FUNCTION_LOG_END(); ASSERT(this != NULL && this->httpClient != NULL); ASSERT(httpClientIoRead(this->httpClient) != NULL); ASSERT(buffer != NULL && !bufFull(buffer)); FUNCTION_LOG_RETURN(SIZE, ioRead(httpClientIoRead(this->httpClient), buffer)); } /*********************************************************************************************************************************** Close the file ***********************************************************************************************************************************/ static void storageReadS3Close(THIS_VOID) { THIS(StorageReadS3); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_READ_S3, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->httpClient != NULL); memContextCallbackClear(this->memContext); storageReadS3FreeResource(this); this->httpClient = NULL; FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Has file reached EOF? ***********************************************************************************************************************************/ static bool storageReadS3Eof(THIS_VOID) { THIS(StorageReadS3); FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_READ_S3, this); FUNCTION_TEST_END(); ASSERT(this != NULL && this->httpClient != NULL); ASSERT(httpClientIoRead(this->httpClient) != NULL); FUNCTION_TEST_RETURN(ioReadEof(httpClientIoRead(this->httpClient))); } /*********************************************************************************************************************************** Create a new file ***********************************************************************************************************************************/ StorageRead * storageReadS3New(StorageS3 *storage, const String *name, bool ignoreMissing) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_S3, storage); FUNCTION_LOG_PARAM(STRING, name); FUNCTION_LOG_PARAM(BOOL, ignoreMissing); FUNCTION_LOG_END(); ASSERT(storage != NULL); ASSERT(name != NULL); StorageRead *this = NULL; MEM_CONTEXT_NEW_BEGIN("StorageReadS3") { StorageReadS3 *driver = memNew(sizeof(StorageReadS3)); *driver = (StorageReadS3) { .memContext = MEM_CONTEXT_NEW(), .storage = storage, .interface = (StorageReadInterface) { .type = STORAGE_S3_TYPE_STR, .name = strDup(name), .ignoreMissing = ignoreMissing, .ioInterface = (IoReadInterface) { .close = storageReadS3Close, .eof = storageReadS3Eof, .open = storageReadS3Open, .read = storageReadS3, }, }, }; this = storageReadNew(driver, &driver->interface); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(STORAGE_READ, this); } pgbackrest-release-2.24/src/storage/s3/read.h000066400000000000000000000014121362531507100210510ustar00rootroot00000000000000/*********************************************************************************************************************************** S3 Storage Read ***********************************************************************************************************************************/ #ifndef STORAGE_S3_READ_H #define STORAGE_S3_READ_H #include "storage/s3/storage.intern.h" #include "storage/read.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ StorageRead *storageReadS3New(StorageS3 *storage, const String *name, bool ignoreMissing); #endif pgbackrest-release-2.24/src/storage/s3/storage.c000066400000000000000000001226421362531507100216060ustar00rootroot00000000000000/*********************************************************************************************************************************** S3 Storage ***********************************************************************************************************************************/ #include "build.auto.h" #include #include "common/crypto/hash.h" #include "common/encode.h" #include "common/debug.h" #include "common/io/http/cache.h" #include "common/io/http/common.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "common/regExp.h" #include "common/type/xml.h" #include "storage/s3/read.h" #include "storage/s3/storage.intern.h" #include "storage/s3/write.h" /*********************************************************************************************************************************** Storage type ***********************************************************************************************************************************/ STRING_EXTERN(STORAGE_S3_TYPE_STR, STORAGE_S3_TYPE); /*********************************************************************************************************************************** S3 http headers ***********************************************************************************************************************************/ STRING_STATIC(S3_HEADER_AUTHORIZATION_STR, "authorization"); STRING_STATIC(S3_HEADER_HOST_STR, "host"); STRING_STATIC(S3_HEADER_CONTENT_SHA256_STR, "x-amz-content-sha256"); STRING_STATIC(S3_HEADER_DATE_STR, "x-amz-date"); STRING_STATIC(S3_HEADER_TOKEN_STR, "x-amz-security-token"); /*********************************************************************************************************************************** S3 query tokens ***********************************************************************************************************************************/ STRING_STATIC(S3_QUERY_CONTINUATION_TOKEN_STR, "continuation-token"); STRING_STATIC(S3_QUERY_DELETE_STR, "delete"); STRING_STATIC(S3_QUERY_DELIMITER_STR, "delimiter"); STRING_STATIC(S3_QUERY_LIST_TYPE_STR, "list-type"); STRING_STATIC(S3_QUERY_PREFIX_STR, "prefix"); STRING_STATIC(S3_QUERY_VALUE_LIST_TYPE_2_STR, "2"); /*********************************************************************************************************************************** S3 errors ***********************************************************************************************************************************/ STRING_STATIC(S3_ERROR_REQUEST_TIME_TOO_SKEWED_STR, "RequestTimeTooSkewed"); /*********************************************************************************************************************************** XML tags ***********************************************************************************************************************************/ STRING_STATIC(S3_XML_TAG_CODE_STR, "Code"); STRING_STATIC(S3_XML_TAG_COMMON_PREFIXES_STR, "CommonPrefixes"); STRING_STATIC(S3_XML_TAG_CONTENTS_STR, "Contents"); STRING_STATIC(S3_XML_TAG_DELETE_STR, "Delete"); STRING_STATIC(S3_XML_TAG_ERROR_STR, "Error"); STRING_STATIC(S3_XML_TAG_KEY_STR, "Key"); STRING_STATIC(S3_XML_TAG_LAST_MODIFIED_STR, "LastModified"); STRING_STATIC(S3_XML_TAG_MESSAGE_STR, "Message"); STRING_STATIC(S3_XML_TAG_NEXT_CONTINUATION_TOKEN_STR, "NextContinuationToken"); STRING_STATIC(S3_XML_TAG_OBJECT_STR, "Object"); STRING_STATIC(S3_XML_TAG_PREFIX_STR, "Prefix"); STRING_STATIC(S3_XML_TAG_QUIET_STR, "Quiet"); STRING_STATIC(S3_XML_TAG_SIZE_STR, "Size"); /*********************************************************************************************************************************** AWS authentication v4 constants ***********************************************************************************************************************************/ #define S3 "s3" BUFFER_STRDEF_STATIC(S3_BUF, S3); #define AWS4 "AWS4" #define AWS4_REQUEST "aws4_request" BUFFER_STRDEF_STATIC(AWS4_REQUEST_BUF, AWS4_REQUEST); #define AWS4_HMAC_SHA256 "AWS4-HMAC-SHA256" /*********************************************************************************************************************************** Starting date for signing string so it will be regenerated on the first request ***********************************************************************************************************************************/ STRING_STATIC(YYYYMMDD_STR, "YYYYMMDD"); /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct StorageS3 { STORAGE_COMMON_MEMBER; MemContext *memContext; HttpClientCache *httpClientCache; // Http client cache to service requests StringList *headerRedactList; // List of headers to redact from logging const String *bucket; // Bucket to store data in const String *region; // e.g. us-east-1 const String *accessKey; // Access key const String *secretAccessKey; // Secret access key const String *securityToken; // Security token, if any size_t partSize; // Part size for multi-part upload unsigned int deleteMax; // Maximum objects that can be deleted in one request StorageS3UriStyle uriStyle; // Path or host style URIs const String *bucketEndpoint; // Set to {bucket}.{endpoint} unsigned int port; // Host port // Current signing key and date it is valid for const String *signingKeyDate; // Date of cached signing key (so we know when to regenerate) const Buffer *signingKey; // Cached signing key }; /*********************************************************************************************************************************** Expected ISO-8601 data/time size ***********************************************************************************************************************************/ #define ISO_8601_DATE_TIME_SIZE 16 /*********************************************************************************************************************************** Format ISO-8601 date/time for authentication ***********************************************************************************************************************************/ static String * storageS3DateTime(time_t authTime) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(TIME, authTime); FUNCTION_TEST_END(); char buffer[ISO_8601_DATE_TIME_SIZE + 1]; THROW_ON_SYS_ERROR( strftime(buffer, sizeof(buffer), "%Y%m%dT%H%M%SZ", gmtime(&authTime)) != ISO_8601_DATE_TIME_SIZE, AssertError, "unable to format date"); FUNCTION_TEST_RETURN(strNew(buffer)); } /*********************************************************************************************************************************** Generate authorization header and add it to the supplied header list Based on the excellent documentation at http://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html. ***********************************************************************************************************************************/ static void storageS3Auth( StorageS3 *this, const String *verb, const String *uri, const HttpQuery *query, const String *dateTime, HttpHeader *httpHeader, const String *payloadHash) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_S3, this); FUNCTION_TEST_PARAM(STRING, verb); FUNCTION_TEST_PARAM(STRING, uri); FUNCTION_TEST_PARAM(HTTP_QUERY, query); FUNCTION_TEST_PARAM(STRING, dateTime); FUNCTION_TEST_PARAM(KEY_VALUE, httpHeader); FUNCTION_TEST_PARAM(STRING, payloadHash); FUNCTION_TEST_END(); ASSERT(verb != NULL); ASSERT(uri != NULL); ASSERT(dateTime != NULL); ASSERT(httpHeader != NULL); ASSERT(payloadHash != NULL); MEM_CONTEXT_TEMP_BEGIN() { // Get date from datetime const String *date = strSubN(dateTime, 0, 8); // Set required headers httpHeaderPut(httpHeader, S3_HEADER_CONTENT_SHA256_STR, payloadHash); httpHeaderPut(httpHeader, S3_HEADER_DATE_STR, dateTime); httpHeaderPut(httpHeader, S3_HEADER_HOST_STR, this->bucketEndpoint); if (this->securityToken != NULL) httpHeaderPut(httpHeader, S3_HEADER_TOKEN_STR, this->securityToken); // Generate canonical request and signed headers const StringList *headerList = strLstSort(strLstDup(httpHeaderList(httpHeader)), sortOrderAsc); String *signedHeaders = NULL; String *canonicalRequest = strNewFmt( "%s\n%s\n%s\n", strPtr(verb), strPtr(uri), query == NULL ? "" : strPtr(httpQueryRender(query))); for (unsigned int headerIdx = 0; headerIdx < strLstSize(headerList); headerIdx++) { const String *headerKey = strLstGet(headerList, headerIdx); const String *headerKeyLower = strLower(strDup(headerKey)); // Skip the authorization header -- if it exists this is a retry if (strEq(headerKeyLower, S3_HEADER_AUTHORIZATION_STR)) continue; strCatFmt(canonicalRequest, "%s:%s\n", strPtr(headerKeyLower), strPtr(httpHeaderGet(httpHeader, headerKey))); if (signedHeaders == NULL) signedHeaders = strDup(headerKeyLower); else strCatFmt(signedHeaders, ";%s", strPtr(headerKeyLower)); } strCatFmt(canonicalRequest, "\n%s\n%s", strPtr(signedHeaders), strPtr(payloadHash)); // Generate string to sign const String *stringToSign = strNewFmt( AWS4_HMAC_SHA256 "\n%s\n%s/%s/" S3 "/" AWS4_REQUEST "\n%s", strPtr(dateTime), strPtr(date), strPtr(this->region), strPtr(bufHex(cryptoHashOne(HASH_TYPE_SHA256_STR, BUFSTR(canonicalRequest))))); // Generate signing key. This key only needs to be regenerated every seven days but we'll do it once a day to keep the // logic simple. It's a relatively expensive operation so we'd rather not do it for every request. // If the cached signing key has expired (or has none been generated) then regenerate it if (!strEq(date, this->signingKeyDate)) { const Buffer *dateKey = cryptoHmacOne( HASH_TYPE_SHA256_STR, BUFSTR(strNewFmt(AWS4 "%s", strPtr(this->secretAccessKey))), BUFSTR(date)); const Buffer *regionKey = cryptoHmacOne(HASH_TYPE_SHA256_STR, dateKey, BUFSTR(this->region)); const Buffer *serviceKey = cryptoHmacOne(HASH_TYPE_SHA256_STR, regionKey, S3_BUF); // Switch to the object context so signing key and date are not lost MEM_CONTEXT_BEGIN(this->memContext) { this->signingKey = cryptoHmacOne(HASH_TYPE_SHA256_STR, serviceKey, AWS4_REQUEST_BUF); this->signingKeyDate = strDup(date); } MEM_CONTEXT_END(); } // Generate authorization header const String *authorization = strNewFmt( AWS4_HMAC_SHA256 " Credential=%s/%s/%s/" S3 "/" AWS4_REQUEST ",SignedHeaders=%s,Signature=%s", strPtr(this->accessKey), strPtr(date), strPtr(this->region), strPtr(signedHeaders), strPtr(bufHex(cryptoHmacOne(HASH_TYPE_SHA256_STR, this->signingKey, BUFSTR(stringToSign))))); httpHeaderPut(httpHeader, S3_HEADER_AUTHORIZATION_STR, authorization); } MEM_CONTEXT_TEMP_END(); FUNCTION_TEST_RETURN_VOID(); } /*********************************************************************************************************************************** Process S3 request ***********************************************************************************************************************************/ StorageS3RequestResult storageS3Request( StorageS3 *this, const String *verb, const String *uri, const HttpQuery *query, const Buffer *body, bool returnContent, bool allowMissing) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_S3, this); FUNCTION_LOG_PARAM(STRING, verb); FUNCTION_LOG_PARAM(STRING, uri); FUNCTION_LOG_PARAM(HTTP_QUERY, query); FUNCTION_LOG_PARAM(BUFFER, body); FUNCTION_LOG_PARAM(BOOL, returnContent); FUNCTION_LOG_PARAM(BOOL, allowMissing); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(verb != NULL); ASSERT(uri != NULL); StorageS3RequestResult result = {0}; unsigned int retryRemaining = 2; bool done; // When using path-style URIs the bucket name needs to be prepended if (this->uriStyle == storageS3UriStylePath) uri = strNewFmt("/%s%s", strPtr(this->bucket), strPtr(uri)); do { done = true; MEM_CONTEXT_TEMP_BEGIN() { // Create header list and add content length HttpHeader *requestHeader = httpHeaderNew(this->headerRedactList); // Set content length httpHeaderAdd( requestHeader, HTTP_HEADER_CONTENT_LENGTH_STR, body == NULL || bufUsed(body) == 0 ? ZERO_STR : strNewFmt("%zu", bufUsed(body))); // Calculate content-md5 header if there is content if (body != NULL) { char md5Hash[HASH_TYPE_MD5_SIZE_HEX]; encodeToStr(encodeBase64, bufPtr(cryptoHashOne(HASH_TYPE_MD5_STR, body)), HASH_TYPE_M5_SIZE, md5Hash); httpHeaderAdd(requestHeader, HTTP_HEADER_CONTENT_MD5_STR, STR(md5Hash)); } // Generate authorization header storageS3Auth( this, verb, httpUriEncode(uri, true), query, storageS3DateTime(time(NULL)), requestHeader, body == NULL || bufUsed(body) == 0 ? HASH_TYPE_SHA256_ZERO_STR : bufHex(cryptoHashOne(HASH_TYPE_SHA256_STR, body))); // Get an http client HttpClient *httpClient = httpClientCacheGet(this->httpClientCache); // Process request Buffer *response = httpClientRequest(httpClient, verb, uri, query, requestHeader, body, returnContent); // Error if the request was not successful if (!httpClientResponseCodeOk(httpClient) && (!allowMissing || httpClientResponseCode(httpClient) != HTTP_RESPONSE_CODE_NOT_FOUND)) { // If there are retries remaining and a response parse it as XML to extract the S3 error code if (response != NULL && retryRemaining > 0) { // Attempt to parse the XML and extract the S3 error code TRY_BEGIN() { XmlNode *error = xmlDocumentRoot(xmlDocumentNewBuf(response)); const String *errorCode = xmlNodeContent(xmlNodeChild(error, S3_XML_TAG_CODE_STR, true)); if (strEq(errorCode, S3_ERROR_REQUEST_TIME_TOO_SKEWED_STR)) { LOG_DEBUG_FMT( "retry %s: %s", strPtr(errorCode), strPtr(xmlNodeContent(xmlNodeChild(error, S3_XML_TAG_MESSAGE_STR, true)))); retryRemaining--; done = false; } } // On failure just drop through and report the error as usual CATCH_ANY() { } TRY_END(); } // If not done then retry instead of reporting the error if (done) { // General error message String *error = strNewFmt( "S3 request failed with %u: %s", httpClientResponseCode(httpClient), strPtr(httpClientResponseMessage(httpClient))); // Output uri/query strCat(error, "\n*** URI/Query ***:"); strCatFmt(error, "\n%s", strPtr(httpUriEncode(uri, true))); if (query != NULL) strCatFmt(error, "?%s", strPtr(httpQueryRender(query))); // Output request headers const StringList *requestHeaderList = httpHeaderList(requestHeader); strCat(error, "\n*** Request Headers ***:"); for (unsigned int requestHeaderIdx = 0; requestHeaderIdx < strLstSize(requestHeaderList); requestHeaderIdx++) { const String *key = strLstGet(requestHeaderList, requestHeaderIdx); strCatFmt( error, "\n%s: %s", strPtr(key), httpHeaderRedact(requestHeader, key) || strEq(key, S3_HEADER_DATE_STR) ? "" : strPtr(httpHeaderGet(requestHeader, key))); } // Output response headers const HttpHeader *responseHeader = httpClientResponseHeader(httpClient); const StringList *responseHeaderList = httpHeaderList(responseHeader); if (strLstSize(responseHeaderList) > 0) { strCat(error, "\n*** Response Headers ***:"); for (unsigned int responseHeaderIdx = 0; responseHeaderIdx < strLstSize(responseHeaderList); responseHeaderIdx++) { const String *key = strLstGet(responseHeaderList, responseHeaderIdx); strCatFmt(error, "\n%s: %s", strPtr(key), strPtr(httpHeaderGet(responseHeader, key))); } } // If there was content then output it if (response!= NULL) strCatFmt(error, "\n*** Response Content ***:\n%s", strPtr(strNewBuf(response))); THROW(ProtocolError, strPtr(error)); } } else { // On success move the buffer to the prior context result.httpClient = httpClient; result.responseHeader = httpHeaderMove( httpHeaderDup(httpClientResponseHeader(httpClient), NULL), memContextPrior()); result.response = bufMove(response, memContextPrior()); } } MEM_CONTEXT_TEMP_END(); } while (!done); FUNCTION_LOG_RETURN(STORAGE_S3_REQUEST_RESULT, result); } /*********************************************************************************************************************************** General function for listing files to be used by other list routines ***********************************************************************************************************************************/ static void storageS3ListInternal( StorageS3 *this, const String *path, const String *expression, bool recurse, void (*callback)(StorageS3 *this, void *callbackData, const String *name, StorageType type, const XmlNode *xml), void *callbackData) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_S3, this); FUNCTION_LOG_PARAM(STRING, path); FUNCTION_LOG_PARAM(STRING, expression); FUNCTION_LOG_PARAM(BOOL, recurse); FUNCTION_LOG_PARAM(FUNCTIONP, callback); FUNCTION_LOG_PARAM_P(VOID, callbackData); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(path != NULL); MEM_CONTEXT_TEMP_BEGIN() { const String *continuationToken = NULL; // Prepare regexp if an expression was passed RegExp *regExp = expression == NULL ? NULL : regExpNew(expression); // Build the base prefix by stripping off the initial / const String *basePrefix; if (strSize(path) == 1) basePrefix = EMPTY_STR; else basePrefix = strNewFmt("%s/", strPtr(strSub(path, 1))); // Get the expression prefix when possible to limit initial results const String *expressionPrefix = regExpPrefix(expression); // If there is an expression prefix then use it to build the query prefix, otherwise query prefix is base prefix const String *queryPrefix; if (expressionPrefix == NULL) queryPrefix = basePrefix; else { if (strEmpty(basePrefix)) queryPrefix = expressionPrefix; else queryPrefix = strNewFmt("%s%s", strPtr(basePrefix), strPtr(expressionPrefix)); } // Loop as long as a continuation token returned do { // Use an inner mem context here because we could potentially be retrieving millions of files so it is a good idea to // free memory at regular intervals MEM_CONTEXT_TEMP_BEGIN() { HttpQuery *query = httpQueryNew(); // Add continuation token from the prior loop if any if (continuationToken != NULL) httpQueryAdd(query, S3_QUERY_CONTINUATION_TOKEN_STR, continuationToken); // Add the delimiter to not recurse if (!recurse) httpQueryAdd(query, S3_QUERY_DELIMITER_STR, FSLASH_STR); // Use list type 2 httpQueryAdd(query, S3_QUERY_LIST_TYPE_STR, S3_QUERY_VALUE_LIST_TYPE_2_STR); // Don't specified empty prefix because it is the default if (!strEmpty(queryPrefix)) httpQueryAdd(query, S3_QUERY_PREFIX_STR, queryPrefix); XmlNode *xmlRoot = xmlDocumentRoot( xmlDocumentNewBuf( storageS3Request(this, HTTP_VERB_GET_STR, FSLASH_STR, query, NULL, true, false).response)); // Get subpath list XmlNodeList *subPathList = xmlNodeChildList(xmlRoot, S3_XML_TAG_COMMON_PREFIXES_STR); for (unsigned int subPathIdx = 0; subPathIdx < xmlNodeLstSize(subPathList); subPathIdx++) { const XmlNode *subPathNode = xmlNodeLstGet(subPathList, subPathIdx); // Get subpath name const String *subPath = xmlNodeContent(xmlNodeChild(subPathNode, S3_XML_TAG_PREFIX_STR, true)); // Strip off base prefix and final / subPath = strSubN(subPath, strSize(basePrefix), strSize(subPath) - strSize(basePrefix) - 1); // Add to list after checking expression if present if (regExp == NULL || regExpMatch(regExp, subPath)) callback(this, callbackData, subPath, storageTypePath, subPathNode); } // Get file list XmlNodeList *fileList = xmlNodeChildList(xmlRoot, S3_XML_TAG_CONTENTS_STR); for (unsigned int fileIdx = 0; fileIdx < xmlNodeLstSize(fileList); fileIdx++) { const XmlNode *fileNode = xmlNodeLstGet(fileList, fileIdx); // Get file name const String *file = xmlNodeContent(xmlNodeChild(fileNode, S3_XML_TAG_KEY_STR, true)); // Strip off the base prefix when present file = strEmpty(basePrefix) ? file : strSub(file, strSize(basePrefix)); // Add to list after checking expression if present if (regExp == NULL || regExpMatch(regExp, file)) callback(this, callbackData, file, storageTypeFile, fileNode); } // Get the continuation token and store it in the outer temp context MEM_CONTEXT_PRIOR_BEGIN() { continuationToken = xmlNodeContent(xmlNodeChild(xmlRoot, S3_XML_TAG_NEXT_CONTINUATION_TOKEN_STR, false)); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); } while (continuationToken != NULL); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /**********************************************************************************************************************************/ static bool storageS3Exists(THIS_VOID, const String *file, StorageInterfaceExistsParam param) { THIS(StorageS3); FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_S3, this); FUNCTION_LOG_PARAM(STRING, file); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(file != NULL); bool result = false; MEM_CONTEXT_TEMP_BEGIN() { result = httpClientResponseCodeOk(storageS3Request(this, HTTP_VERB_HEAD_STR, file, NULL, NULL, true, true).httpClient); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, result); } /**********************************************************************************************************************************/ static StorageInfo storageS3Info(THIS_VOID, const String *file, StorageInterfaceInfoParam param) { THIS(StorageS3); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_S3, this); FUNCTION_LOG_PARAM(STRING, file); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(file != NULL); StorageInfo result = {0}; // Attempt to get file info StorageS3RequestResult httpResult = storageS3Request(this, HTTP_VERB_HEAD_STR, file, NULL, NULL, true, true); // On success load info into a structure if (httpClientResponseCodeOk(httpResult.httpClient)) { result.exists = true; result.type = storageTypeFile; result.size = cvtZToUInt64(strPtr(httpHeaderGet(httpResult.responseHeader, HTTP_HEADER_CONTENT_LENGTH_STR))); result.timeModified = httpLastModifiedToTime(httpHeaderGet(httpResult.responseHeader, HTTP_HEADER_LAST_MODIFIED_STR)); } FUNCTION_LOG_RETURN(STORAGE_INFO, result); } /**********************************************************************************************************************************/ typedef struct StorageS3InfoListData { StorageInfoListCallback callback; // User-supplied callback function void *callbackData; // User-supplied callback data } StorageS3InfoListData; // Helper to convert YYYY-MM-DDTHH:MM:SS.MSECZ format to time_t. This format is very nearly ISO-8601 except for the inclusion of // milliseconds which are discarded here. static time_t storageS3CvtTime(const String *time) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STRING, time); FUNCTION_TEST_END(); FUNCTION_TEST_RETURN( epochFromParts( cvtZToInt(strPtr(strSubN(time, 0, 4))), cvtZToInt(strPtr(strSubN(time, 5, 2))), cvtZToInt(strPtr(strSubN(time, 8, 2))), cvtZToInt(strPtr(strSubN(time, 11, 2))), cvtZToInt(strPtr(strSubN(time, 14, 2))), cvtZToInt(strPtr(strSubN(time, 17, 2))), 0)); } static void storageS3InfoListCallback(StorageS3 *this, void *callbackData, const String *name, StorageType type, const XmlNode *xml) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_S3, this); FUNCTION_TEST_PARAM_P(VOID, callbackData); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_PARAM(ENUM, type); FUNCTION_TEST_PARAM(XML_NODE, xml); FUNCTION_TEST_END(); (void)this; ASSERT(callbackData != NULL); ASSERT(name != NULL); ASSERT(xml != NULL); StorageS3InfoListData *data = (StorageS3InfoListData *)callbackData; StorageInfo info = { .type = type, .name = name, .size = type == storageTypeFile ? cvtZToUInt64(strPtr(xmlNodeContent(xmlNodeChild(xml, S3_XML_TAG_SIZE_STR, true)))) : 0, .timeModified = type == storageTypeFile ? storageS3CvtTime(xmlNodeContent(xmlNodeChild(xml, S3_XML_TAG_LAST_MODIFIED_STR, true))) : 0, }; data->callback(data->callbackData, &info); FUNCTION_TEST_RETURN_VOID(); } static bool storageS3InfoList( THIS_VOID, const String *path, StorageInfoListCallback callback, void *callbackData, StorageInterfaceInfoListParam param) { THIS(StorageS3); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_S3, this); FUNCTION_LOG_PARAM(STRING, path); FUNCTION_LOG_PARAM(FUNCTIONP, callback); FUNCTION_LOG_PARAM_P(VOID, callbackData); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(path != NULL); ASSERT(callback != NULL); MEM_CONTEXT_TEMP_BEGIN() { StorageS3InfoListData data = {.callback = callback, .callbackData = callbackData}; storageS3ListInternal(this, path, false, false, storageS3InfoListCallback, &data); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, true); } /**********************************************************************************************************************************/ static void storageS3ListCallback(StorageS3 *this, void *callbackData, const String *name, StorageType type, const XmlNode *xml) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_S3, this); FUNCTION_TEST_PARAM_P(VOID, callbackData); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_PARAM(ENUM, type); FUNCTION_TEST_PARAM(XML_NODE, xml); FUNCTION_TEST_END(); (void)this; ASSERT(callbackData != NULL); ASSERT(name != NULL); (void)type; (void)xml; strLstAdd((StringList *)callbackData, name); FUNCTION_TEST_RETURN_VOID(); } static StringList * storageS3List(THIS_VOID, const String *path, StorageInterfaceListParam param) { THIS(StorageS3); FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_S3, this); FUNCTION_LOG_PARAM(STRING, path); FUNCTION_LOG_PARAM(STRING, param.expression); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(path != NULL); StringList *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { result = strLstNew(); storageS3ListInternal(this, path, param.expression, false, storageS3ListCallback, result); strLstMove(result, memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING_LIST, result); } /**********************************************************************************************************************************/ static StorageRead * storageS3NewRead(THIS_VOID, const String *file, bool ignoreMissing, StorageInterfaceNewReadParam param) { THIS(StorageS3); FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_S3, this); FUNCTION_LOG_PARAM(STRING, file); FUNCTION_LOG_PARAM(BOOL, ignoreMissing); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(file != NULL); FUNCTION_LOG_RETURN(STORAGE_READ, storageReadS3New(this, file, ignoreMissing)); } /**********************************************************************************************************************************/ static StorageWrite * storageS3NewWrite(THIS_VOID, const String *file, StorageInterfaceNewWriteParam param) { THIS(StorageS3); FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_S3, this); FUNCTION_LOG_PARAM(STRING, file); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(file != NULL); ASSERT(param.createPath); ASSERT(param.user == NULL); ASSERT(param.group == NULL); ASSERT(param.timeModified == 0); FUNCTION_LOG_RETURN(STORAGE_WRITE, storageWriteS3New(this, file, this->partSize)); } /**********************************************************************************************************************************/ typedef struct StorageS3PathRemoveData { MemContext *memContext; // Mem context to create xml document in unsigned int size; // Size of delete request XmlDocument *xml; // Delete request } StorageS3PathRemoveData; static void storageS3PathRemoveInternal(StorageS3 *this, XmlDocument *request) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_S3, this); FUNCTION_TEST_PARAM(XML_DOCUMENT, request); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(request != NULL); Buffer *response = storageS3Request( this, HTTP_VERB_POST_STR, FSLASH_STR, httpQueryAdd(httpQueryNew(), S3_QUERY_DELETE_STR, EMPTY_STR), xmlDocumentBuf(request), true, false).response; // Nothing is returned when there are no errors if (response != NULL) { XmlNodeList *errorList = xmlNodeChildList(xmlDocumentRoot(xmlDocumentNewBuf(response)), S3_XML_TAG_ERROR_STR); if (xmlNodeLstSize(errorList) > 0) { XmlNode *error = xmlNodeLstGet(errorList, 0); THROW_FMT( FileRemoveError, STORAGE_ERROR_PATH_REMOVE_FILE ": [%s] %s", strPtr(xmlNodeContent(xmlNodeChild(error, S3_XML_TAG_KEY_STR, true))), strPtr(xmlNodeContent(xmlNodeChild(error, S3_XML_TAG_CODE_STR, true))), strPtr(xmlNodeContent(xmlNodeChild(error, S3_XML_TAG_MESSAGE_STR, true)))); } } FUNCTION_TEST_RETURN_VOID(); } static void storageS3PathRemoveCallback(StorageS3 *this, void *callbackData, const String *name, StorageType type, const XmlNode *xml) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_S3, this); FUNCTION_TEST_PARAM_P(VOID, callbackData); FUNCTION_TEST_PARAM(STRING, name); FUNCTION_TEST_PARAM(ENUM, type); FUNCTION_TEST_PARAM(XML_NODE, xml); FUNCTION_TEST_END(); ASSERT(this != NULL); ASSERT(callbackData != NULL); (void)name; ASSERT(xml != NULL); // Only delete files since paths don't really exist if (type == storageTypeFile) { StorageS3PathRemoveData *data = (StorageS3PathRemoveData *)callbackData; // If there is something to delete then create the request if (data->xml == NULL) { MEM_CONTEXT_BEGIN(data->memContext) { data->xml = xmlDocumentNew(S3_XML_TAG_DELETE_STR); xmlNodeContentSet(xmlNodeAdd(xmlDocumentRoot(data->xml), S3_XML_TAG_QUIET_STR), TRUE_STR); } MEM_CONTEXT_END(); } // Add to delete list xmlNodeContentSet( xmlNodeAdd(xmlNodeAdd(xmlDocumentRoot(data->xml), S3_XML_TAG_OBJECT_STR), S3_XML_TAG_KEY_STR), xmlNodeContent(xmlNodeChild(xml, S3_XML_TAG_KEY_STR, true))); data->size++; // Delete list when it is full if (data->size == this->deleteMax) { storageS3PathRemoveInternal(this, data->xml); xmlDocumentFree(data->xml); data->xml = NULL; data->size = 0; } } FUNCTION_TEST_RETURN_VOID(); } static bool storageS3PathRemove(THIS_VOID, const String *path, bool recurse, StorageInterfacePathRemoveParam param) { THIS(StorageS3); FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_S3, this); FUNCTION_LOG_PARAM(STRING, path); FUNCTION_LOG_PARAM(BOOL, recurse); (void)param; // No parameters are used FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(path != NULL); MEM_CONTEXT_TEMP_BEGIN() { StorageS3PathRemoveData data = {.memContext = memContextCurrent()}; storageS3ListInternal(this, path, NULL, true, storageS3PathRemoveCallback, &data); if (data.xml != NULL) storageS3PathRemoveInternal(this, data.xml); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, true); } /**********************************************************************************************************************************/ static void storageS3Remove(THIS_VOID, const String *file, StorageInterfaceRemoveParam param) { THIS(StorageS3); FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_S3, this); FUNCTION_LOG_PARAM(STRING, file); FUNCTION_LOG_PARAM(BOOL, param.errorOnMissing); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(file != NULL); ASSERT(!param.errorOnMissing); storageS3Request(this, HTTP_VERB_DELETE_STR, file, NULL, NULL, true, false); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ static const StorageInterface storageInterfaceS3 = { .exists = storageS3Exists, .info = storageS3Info, .infoList = storageS3InfoList, .list = storageS3List, .newRead = storageS3NewRead, .newWrite = storageS3NewWrite, .pathRemove = storageS3PathRemove, .remove = storageS3Remove, }; Storage * storageS3New( const String *path, bool write, StoragePathExpressionCallback pathExpressionFunction, const String *bucket, const String *endPoint, StorageS3UriStyle uriStyle, const String *region, const String *accessKey, const String *secretAccessKey, const String *securityToken, size_t partSize, unsigned int deleteMax, const String *host, unsigned int port, TimeMSec timeout, bool verifyPeer, const String *caFile, const String *caPath) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STRING, path); FUNCTION_LOG_PARAM(BOOL, write); FUNCTION_LOG_PARAM(FUNCTIONP, pathExpressionFunction); FUNCTION_LOG_PARAM(STRING, bucket); FUNCTION_LOG_PARAM(STRING, endPoint); FUNCTION_LOG_PARAM(ENUM, uriStyle); FUNCTION_LOG_PARAM(STRING, region); FUNCTION_TEST_PARAM(STRING, accessKey); FUNCTION_TEST_PARAM(STRING, secretAccessKey); FUNCTION_TEST_PARAM(STRING, securityToken); FUNCTION_LOG_PARAM(SIZE, partSize); FUNCTION_LOG_PARAM(STRING, host); FUNCTION_LOG_PARAM(UINT, port); FUNCTION_LOG_PARAM(TIME_MSEC, timeout); FUNCTION_LOG_PARAM(BOOL, verifyPeer); FUNCTION_LOG_PARAM(STRING, caFile); FUNCTION_LOG_PARAM(STRING, caPath); FUNCTION_LOG_END(); ASSERT(path != NULL); ASSERT(bucket != NULL); ASSERT(endPoint != NULL); ASSERT(region != NULL); ASSERT(accessKey != NULL); ASSERT(secretAccessKey != NULL); Storage *this = NULL; MEM_CONTEXT_NEW_BEGIN("StorageS3") { StorageS3 *driver = memNew(sizeof(StorageS3)); *driver = (StorageS3) { .memContext = MEM_CONTEXT_NEW(), .interface = storageInterfaceS3, .bucket = strDup(bucket), .region = strDup(region), .accessKey = strDup(accessKey), .secretAccessKey = strDup(secretAccessKey), .securityToken = strDup(securityToken), .partSize = partSize, .deleteMax = deleteMax, .uriStyle = uriStyle, .bucketEndpoint = uriStyle == storageS3UriStyleHost ? strNewFmt("%s.%s", strPtr(bucket), strPtr(endPoint)) : strDup(endPoint), .port = port, // Force the signing key to be generated on the first run .signingKeyDate = YYYYMMDD_STR, }; // Create the http client cache used to service requests driver->httpClientCache = httpClientCacheNew( host == NULL ? driver->bucketEndpoint : host, driver->port, timeout, verifyPeer, caFile, caPath); // Create list of redacted headers driver->headerRedactList = strLstNew(); strLstAdd(driver->headerRedactList, S3_HEADER_AUTHORIZATION_STR); this = storageNew( STORAGE_S3_TYPE_STR, path, 0, 0, write, pathExpressionFunction, driver, driver->interface); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(STORAGE, this); } pgbackrest-release-2.24/src/storage/s3/storage.h000066400000000000000000000047721362531507100216160ustar00rootroot00000000000000/*********************************************************************************************************************************** S3 Storage ***********************************************************************************************************************************/ #ifndef STORAGE_S3_STORAGE_H #define STORAGE_S3_STORAGE_H #include "storage/storage.intern.h" /*********************************************************************************************************************************** Storage type ***********************************************************************************************************************************/ #define STORAGE_S3_TYPE "s3" STRING_DECLARE(STORAGE_S3_TYPE_STR); /*********************************************************************************************************************************** URI style ***********************************************************************************************************************************/ typedef enum { storageS3UriStyleHost, storageS3UriStylePath, } StorageS3UriStyle; #define STORAGE_S3_URI_STYLE_HOST "host" #define STORAGE_S3_URI_STYLE_PATH "path" /*********************************************************************************************************************************** Defaults ***********************************************************************************************************************************/ #define STORAGE_S3_TIMEOUT_DEFAULT 60000 #define STORAGE_S3_PARTSIZE_MIN ((size_t)5 * 1024 * 1024) #define STORAGE_S3_DELETE_MAX 1000 /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ Storage *storageS3New( const String *path, bool write, StoragePathExpressionCallback pathExpressionFunction, const String *bucket, const String *endPoint, StorageS3UriStyle uriStyle, const String *region, const String *accessKey, const String *secretAccessKey, const String *securityToken, size_t partSize, unsigned int deleteMax, const String *host, unsigned int port, TimeMSec timeout, bool verifyPeer, const String *caFile, const String *caPath); #endif pgbackrest-release-2.24/src/storage/s3/storage.intern.h000066400000000000000000000044771362531507100231160ustar00rootroot00000000000000/*********************************************************************************************************************************** S3 Storage Internal ***********************************************************************************************************************************/ #ifndef STORAGE_S3_STORAGE_INTERN_H #define STORAGE_S3_STORAGE_INTERN_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ typedef struct StorageS3 StorageS3; #include "common/io/http/client.h" #include "storage/s3/storage.h" /*********************************************************************************************************************************** Perform an S3 Request ***********************************************************************************************************************************/ #define FUNCTION_LOG_STORAGE_S3_REQUEST_RESULT_TYPE \ StorageS3RequestResult #define FUNCTION_LOG_STORAGE_S3_REQUEST_RESULT_FORMAT(value, buffer, bufferSize) \ objToLog(&value, "StorageS3RequestResult", buffer, bufferSize) typedef struct StorageS3RequestResult { HttpClient *httpClient; HttpHeader *responseHeader; Buffer *response; } StorageS3RequestResult; StorageS3RequestResult storageS3Request( StorageS3 *this, const String *verb, const String *uri, const HttpQuery *query, const Buffer *body, bool returnContent, bool allowMissing); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_STORAGE_S3_TYPE \ StorageS3 * #define FUNCTION_LOG_STORAGE_S3_FORMAT(value, buffer, bufferSize) \ objToLog(value, "StorageS3", buffer, bufferSize) #endif pgbackrest-release-2.24/src/storage/s3/write.c000066400000000000000000000255301362531507100212720ustar00rootroot00000000000000/*********************************************************************************************************************************** S3 Storage File write ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/io/write.intern.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "common/type/xml.h" #include "storage/s3/write.h" #include "storage/write.intern.h" /*********************************************************************************************************************************** S3 query tokens ***********************************************************************************************************************************/ STRING_STATIC(S3_QUERY_PART_NUMBER_STR, "partNumber"); STRING_STATIC(S3_QUERY_UPLOADS_STR, "uploads"); STRING_STATIC(S3_QUERY_UPLOAD_ID_STR, "uploadId"); /*********************************************************************************************************************************** XML tags ***********************************************************************************************************************************/ STRING_STATIC(S3_XML_TAG_ETAG_STR, "ETag"); STRING_STATIC(S3_XML_TAG_UPLOAD_ID_STR, "UploadId"); STRING_STATIC(S3_XML_TAG_COMPLETE_MULTIPART_UPLOAD_STR, "CompleteMultipartUpload"); STRING_STATIC(S3_XML_TAG_PART_STR, "Part"); STRING_STATIC(S3_XML_TAG_PART_NUMBER_STR, "PartNumber"); /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ typedef struct StorageWriteS3 { MemContext *memContext; // Object mem context StorageWriteInterface interface; // Interface StorageS3 *storage; // Storage that created this object size_t partSize; Buffer *partBuffer; const String *uploadId; StringList *uploadPartList; } StorageWriteS3; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_STORAGE_WRITE_S3_TYPE \ StorageWriteS3 * #define FUNCTION_LOG_STORAGE_WRITE_S3_FORMAT(value, buffer, bufferSize) \ objToLog(value, "StorageWriteS3", buffer, bufferSize) /*********************************************************************************************************************************** Open the file ***********************************************************************************************************************************/ static void storageWriteS3Open(THIS_VOID) { THIS(StorageWriteS3); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_WRITE_S3, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->partBuffer == NULL); // Allocate the part buffer MEM_CONTEXT_BEGIN(this->memContext) { this->partBuffer = bufNew(this->partSize); } MEM_CONTEXT_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Flush bytes to upload part ***********************************************************************************************************************************/ static void storageWriteS3Part(StorageWriteS3 *this) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_WRITE_S3, this); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->partBuffer != NULL); ASSERT(bufSize(this->partBuffer) > 0); MEM_CONTEXT_TEMP_BEGIN() { // Get the upload id if we have not already if (this->uploadId == NULL) { // Initiate mult-part upload XmlNode *xmlRoot = xmlDocumentRoot( xmlDocumentNewBuf( storageS3Request( this->storage, HTTP_VERB_POST_STR, this->interface.name, httpQueryAdd(httpQueryNew(), S3_QUERY_UPLOADS_STR, EMPTY_STR), NULL, true, false).response)); // Store the upload id MEM_CONTEXT_BEGIN(this->memContext) { this->uploadId = xmlNodeContent(xmlNodeChild(xmlRoot, S3_XML_TAG_UPLOAD_ID_STR, true)); this->uploadPartList = strLstNew(); } MEM_CONTEXT_END(); } // Upload the part and add etag to part list HttpQuery *query = httpQueryNew(); httpQueryAdd(query, S3_QUERY_UPLOAD_ID_STR, this->uploadId); httpQueryAdd(query, S3_QUERY_PART_NUMBER_STR, strNewFmt("%u", strLstSize(this->uploadPartList) + 1)); strLstAdd( this->uploadPartList, httpHeaderGet( storageS3Request( this->storage, HTTP_VERB_PUT_STR, this->interface.name, query, this->partBuffer, true, false).responseHeader, HTTP_HEADER_ETAG_STR)); ASSERT(strLstGet(this->uploadPartList, strLstSize(this->uploadPartList) - 1) != NULL); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Write to internal buffer ***********************************************************************************************************************************/ static void storageWriteS3(THIS_VOID, const Buffer *buffer) { THIS(StorageWriteS3); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_WRITE_S3, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->partBuffer != NULL); size_t bytesTotal = 0; // Continue until the write buffer has been exhausted do { // Copy as many bytes as possible into the part buffer size_t bytesNext = bufRemains(this->partBuffer) > bufUsed(buffer) - bytesTotal ? bufUsed(buffer) - bytesTotal : bufRemains(this->partBuffer); bufCatSub(this->partBuffer, buffer, bytesTotal, bytesNext); bytesTotal += bytesNext; // If the part buffer is full then write it if (bufRemains(this->partBuffer) == 0) { storageWriteS3Part(this); bufUsedZero(this->partBuffer); } } while (bytesTotal != bufUsed(buffer)); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Close the file ***********************************************************************************************************************************/ static void storageWriteS3Close(THIS_VOID) { THIS(StorageWriteS3); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_WRITE_S3, this); FUNCTION_LOG_END(); ASSERT(this != NULL); // Close if the file has not already been closed if (this->partBuffer != NULL) { MEM_CONTEXT_TEMP_BEGIN() { // If a multi-part upload was started we need to finish that way if (this->uploadId != NULL) { // If there is anything left in the part buffer then write it if (bufUsed(this->partBuffer) > 0) storageWriteS3Part(this); // Generate the xml part list XmlDocument *partList = xmlDocumentNew(S3_XML_TAG_COMPLETE_MULTIPART_UPLOAD_STR); for (unsigned int partIdx = 0; partIdx < strLstSize(this->uploadPartList); partIdx++) { XmlNode *partNode = xmlNodeAdd(xmlDocumentRoot(partList), S3_XML_TAG_PART_STR); xmlNodeContentSet(xmlNodeAdd(partNode, S3_XML_TAG_PART_NUMBER_STR), strNewFmt("%u", partIdx + 1)); xmlNodeContentSet(xmlNodeAdd(partNode, S3_XML_TAG_ETAG_STR), strLstGet(this->uploadPartList, partIdx)); } // Finalize the multi-part upload storageS3Request( this->storage, HTTP_VERB_POST_STR, this->interface.name, httpQueryAdd(httpQueryNew(), S3_QUERY_UPLOAD_ID_STR, this->uploadId), xmlDocumentBuf(partList), true, false); } // Else upload all the data in a single put else { storageS3Request( this->storage, HTTP_VERB_PUT_STR, this->interface.name, NULL, this->partBuffer, true, false); } bufFree(this->partBuffer); this->partBuffer = NULL; } MEM_CONTEXT_TEMP_END(); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ StorageWrite * storageWriteS3New(StorageS3 *storage, const String *name, size_t partSize) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE_S3, storage); FUNCTION_LOG_PARAM(STRING, name); FUNCTION_LOG_END(); ASSERT(storage != NULL); ASSERT(name != NULL); StorageWrite *this = NULL; MEM_CONTEXT_NEW_BEGIN("StorageWriteS3") { StorageWriteS3 *driver = memNew(sizeof(StorageWriteS3)); *driver = (StorageWriteS3) { .memContext = MEM_CONTEXT_NEW(), .storage = storage, .partSize = partSize, .interface = (StorageWriteInterface) { .type = STORAGE_S3_TYPE_STR, .name = strDup(name), .atomic = true, .createPath = true, .syncFile = true, .syncPath = true, .ioInterface = (IoWriteInterface) { .close = storageWriteS3Close, .open = storageWriteS3Open, .write = storageWriteS3, }, }, }; this = storageWriteNew(driver, &driver->interface); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(STORAGE_WRITE, this); } pgbackrest-release-2.24/src/storage/s3/write.h000066400000000000000000000014221362531507100212710ustar00rootroot00000000000000/*********************************************************************************************************************************** S3 Storage File write ***********************************************************************************************************************************/ #ifndef STORAGE_S3_WRITE_H #define STORAGE_S3_WRITE_H #include "storage/s3/storage.intern.h" #include "storage/write.h" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ StorageWrite *storageWriteS3New(StorageS3 *storage, const String *name, size_t partSize); #endif pgbackrest-release-2.24/src/storage/storage.c000066400000000000000000001073221362531507100212570ustar00rootroot00000000000000/*********************************************************************************************************************************** Storage Interface ***********************************************************************************************************************************/ #include "build.auto.h" #include #include #include "common/debug.h" #include "common/io/io.h" #include "common/type/list.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "common/regExp.h" #include "common/wait.h" #include "storage/storage.intern.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct Storage { MemContext *memContext; void *driver; StorageInterface interface; const String *type; const String *path; mode_t modeFile; mode_t modePath; bool write; StoragePathExpressionCallback *pathExpressionFunction; }; OBJECT_DEFINE_FREE(STORAGE); /*********************************************************************************************************************************** New storage object ***********************************************************************************************************************************/ Storage * storageNew( const String *type, const String *path, mode_t modeFile, mode_t modePath, bool write, StoragePathExpressionCallback pathExpressionFunction, void *driver, StorageInterface interface) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STRING, type); FUNCTION_LOG_PARAM(STRING, path); FUNCTION_LOG_PARAM(MODE, modeFile); FUNCTION_LOG_PARAM(MODE, modePath); FUNCTION_LOG_PARAM(BOOL, write); FUNCTION_LOG_PARAM(FUNCTIONP, pathExpressionFunction); FUNCTION_LOG_PARAM_P(VOID, driver); FUNCTION_LOG_PARAM(STORAGE_INTERFACE, interface); FUNCTION_LOG_END(); ASSERT(type != NULL); ASSERT(strSize(path) >= 1 && strPtr(path)[0] == '/'); ASSERT(driver != NULL); ASSERT(interface.exists != NULL); ASSERT(interface.list != NULL); ASSERT(interface.newRead != NULL); ASSERT(interface.newWrite != NULL); ASSERT(interface.pathRemove != NULL); ASSERT(interface.remove != NULL); Storage *this = (Storage *)memNew(sizeof(Storage)); *this = (Storage) { .memContext = memContextCurrent(), .driver = driver, .interface = interface, .type = type, .path = strDup(path), .modeFile = modeFile, .modePath = modePath, .write = write, .pathExpressionFunction = pathExpressionFunction, }; // If path sync feature is enabled then path feature must be enabled CHECK(!storageFeature(this, storageFeaturePathSync) || storageFeature(this, storageFeaturePath)); // If hardlink feature is enabled then path feature must be enabled CHECK(!storageFeature(this, storageFeatureHardLink) || storageFeature(this, storageFeaturePath)); // If symlink feature is enabled then path feature must be enabled CHECK(!storageFeature(this, storageFeatureSymLink) || storageFeature(this, storageFeaturePath)); FUNCTION_LOG_RETURN(STORAGE, this); } /*********************************************************************************************************************************** Copy a file ***********************************************************************************************************************************/ bool storageCopy(StorageRead *source, StorageWrite *destination) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_READ, source); FUNCTION_LOG_PARAM(STORAGE_WRITE, destination); FUNCTION_LOG_END(); ASSERT(source != NULL); ASSERT(destination != NULL); bool result = false; MEM_CONTEXT_TEMP_BEGIN() { // Open source file if (ioReadOpen(storageReadIo(source))) { // Open the destination file now that we know the source file exists and is readable ioWriteOpen(storageWriteIo(destination)); // Copy data from source to destination Buffer *read = bufNew(ioBufferSize()); do { ioRead(storageReadIo(source), read); ioWrite(storageWriteIo(destination), read); bufUsedZero(read); } while (!ioReadEof(storageReadIo(source))); // Close the source and destination files ioReadClose(storageReadIo(source)); ioWriteClose(storageWriteIo(destination)); // Set result to indicate that the file was copied result = true; } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, result); } /*********************************************************************************************************************************** Does a file exist? This function is only for files, not paths. ***********************************************************************************************************************************/ bool storageExists(const Storage *this, const String *pathExp, StorageExistsParam param) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE, this); FUNCTION_LOG_PARAM(STRING, pathExp); FUNCTION_LOG_PARAM(TIMEMSEC, param.timeout); FUNCTION_LOG_END(); ASSERT(this != NULL); bool result = false; MEM_CONTEXT_TEMP_BEGIN() { // Build the path to the file String *path = storagePathP(this, pathExp); // Create Wait object of timeout > 0 Wait *wait = param.timeout != 0 ? waitNew(param.timeout) : NULL; // Loop until file exists or timeout do { // Call driver function result = storageInterfaceExistsP(this->driver, path); } while (!result && wait != NULL && waitMore(wait)); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, result); } /*********************************************************************************************************************************** Read from storage into a buffer ***********************************************************************************************************************************/ Buffer * storageGet(StorageRead *file, StorageGetParam param) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_READ, file); FUNCTION_LOG_PARAM(SIZE, param.exactSize); FUNCTION_LOG_END(); ASSERT(file != NULL); Buffer *result = NULL; // If the file exists if (ioReadOpen(storageReadIo(file))) { MEM_CONTEXT_TEMP_BEGIN() { // If exact read if (param.exactSize > 0) { result = bufNew(param.exactSize); ioRead(storageReadIo(file), result); // If an exact read make sure the size is as expected if (bufUsed(result) != param.exactSize) { THROW_FMT( FileReadError, "unable to read %zu byte(s) from '%s'", param.exactSize, strPtr(storageReadName(file))); } } // Else read entire file else { result = bufNew(0); Buffer *read = bufNew(ioBufferSize()); do { // Read data ioRead(storageReadIo(file), read); // Add to result and free read buffer bufCat(result, read); bufUsedZero(read); } while (!ioReadEof(storageReadIo(file))); } // Move buffer to parent context on success bufMove(result, memContextPrior()); } MEM_CONTEXT_TEMP_END(); ioReadClose(storageReadIo(file)); } FUNCTION_LOG_RETURN(BUFFER, result); } /*********************************************************************************************************************************** File/path info ***********************************************************************************************************************************/ StorageInfo storageInfo(const Storage *this, const String *fileExp, StorageInfoParam param) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE, this); FUNCTION_LOG_PARAM(STRING, fileExp); FUNCTION_LOG_PARAM(BOOL, param.ignoreMissing); FUNCTION_LOG_PARAM(BOOL, param.followLink); FUNCTION_LOG_PARAM(BOOL, param.noPathEnforce); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->interface.info != NULL); StorageInfo result = {0}; MEM_CONTEXT_TEMP_BEGIN() { // Build the path String *file = storagePathP(this, fileExp, .noEnforce = param.noPathEnforce); // Call driver function result = storageInterfaceInfoP(this->driver, file, .followLink = param.followLink); // Error if the file missing and not ignoring if (!result.exists && !param.ignoreMissing) THROW_SYS_ERROR_FMT(FileOpenError, STORAGE_ERROR_INFO_MISSING, strPtr(file)); // Dup the strings into the prior context MEM_CONTEXT_PRIOR_BEGIN() { result.linkDestination = strDup(result.linkDestination); result.user = strDup(result.user); result.group = strDup(result.group); } MEM_CONTEXT_PRIOR_END(); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STORAGE_INFO, result); } /*********************************************************************************************************************************** Info for all files/paths in a path ***********************************************************************************************************************************/ typedef struct StorageInfoListSortData { MemContext *memContext; // Mem context to use for allocating data in this struct StringList *ownerList; // List of users and groups to reduce memory usage List *infoList; // List of info } StorageInfoListSortData; static void storageInfoListSortCallback(void *data, const StorageInfo *info) { FUNCTION_TEST_BEGIN(); FUNCTION_LOG_PARAM_P(VOID, data); FUNCTION_LOG_PARAM(STORAGE_INFO, info); FUNCTION_TEST_END(); StorageInfoListSortData *infoData = data; MEM_CONTEXT_BEGIN(infoData->memContext) { // Copy info and dup strings StorageInfo infoCopy = *info; infoCopy.name = strDup(info->name); infoCopy.linkDestination = strDup(info->linkDestination); infoCopy.user = strLstAddIfMissing(infoData->ownerList, info->user); infoCopy.group = strLstAddIfMissing(infoData->ownerList, info->group); lstAdd(infoData->infoList, &infoCopy); } MEM_CONTEXT_END(); FUNCTION_TEST_RETURN_VOID(); } static bool storageInfoListSort( const Storage *this, const String *path, SortOrder sortOrder, StorageInfoListCallback callback, void *callbackData) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM(STORAGE, this); FUNCTION_LOG_PARAM(STRING, path); FUNCTION_LOG_PARAM(ENUM, sortOrder); FUNCTION_LOG_PARAM(FUNCTIONP, callback); FUNCTION_LOG_PARAM_P(VOID, callbackData); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(callback != NULL); bool result = false; MEM_CONTEXT_TEMP_BEGIN() { // If no sorting then use the callback directly if (sortOrder == sortOrderNone) { result = storageInterfaceInfoListP(this->driver, path, callback, callbackData); } // Else sort the info before sending it to the callback else { StorageInfoListSortData data = { .memContext = MEM_CONTEXT_TEMP(), .ownerList = strLstNew(), .infoList = lstNewP(sizeof(StorageInfo), .comparator = lstComparatorStr), }; result = storageInterfaceInfoListP(this->driver, path, storageInfoListSortCallback, &data); lstSort(data.infoList, sortOrder); MEM_CONTEXT_TEMP_RESET_BEGIN() { for (unsigned int infoIdx = 0; infoIdx < lstSize(data.infoList); infoIdx++) { // Pass info to the caller callback(callbackData, lstGet(data.infoList, infoIdx)); // Reset the memory context occasionally MEM_CONTEXT_TEMP_RESET(1000); } } MEM_CONTEXT_TEMP_END(); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, result); } typedef struct StorageInfoListData { const Storage *storage; // Storage object; StorageInfoListCallback callbackFunction; // Original callback function void *callbackData; // Original callback data RegExp *expression; // Filter for names bool recurse; // Should we recurse? SortOrder sortOrder; // Sort order const String *path; // Top-level path for info const String *subPath; // Path below the top-level path (starts as NULL) } StorageInfoListData; static void storageInfoListCallback(void *data, const StorageInfo *info) { FUNCTION_TEST_BEGIN(); FUNCTION_LOG_PARAM_P(VOID, data); FUNCTION_LOG_PARAM(STORAGE_INFO, info); FUNCTION_TEST_END(); StorageInfoListData *listData = data; // Is this the . path? bool dotPath = info->type == storageTypePath && strEq(info->name, DOT_STR); // Skip . paths when getting info for subpaths (since info was already reported in the parent path) if (dotPath && listData->subPath != NULL) { FUNCTION_TEST_RETURN_VOID(); return; } // Update the name in info with the subpath StorageInfo infoUpdate = *info; if (listData->subPath != NULL) infoUpdate.name = strNewFmt("%s/%s", strPtr(listData->subPath), strPtr(infoUpdate.name)); // Only continue if there is no expression or the expression matches if (listData->expression == NULL || regExpMatch(listData->expression, infoUpdate.name)) { if (listData->sortOrder != sortOrderDesc) listData->callbackFunction(listData->callbackData, &infoUpdate); // Recurse into paths if (infoUpdate.type == storageTypePath && listData->recurse && !dotPath) { StorageInfoListData data = *listData; data.subPath = infoUpdate.name; storageInfoListSort( data.storage, strNewFmt("%s/%s", strPtr(data.path), strPtr(data.subPath)), data.sortOrder, storageInfoListCallback, &data); } if (listData->sortOrder == sortOrderDesc) listData->callbackFunction(listData->callbackData, &infoUpdate); } FUNCTION_TEST_RETURN_VOID(); } bool storageInfoList( const Storage *this, const String *pathExp, StorageInfoListCallback callback, void *callbackData, StorageInfoListParam param) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE, this); FUNCTION_LOG_PARAM(STRING, pathExp); FUNCTION_LOG_PARAM(FUNCTIONP, callback); FUNCTION_LOG_PARAM_P(VOID, callbackData); FUNCTION_LOG_PARAM(BOOL, param.errorOnMissing); FUNCTION_LOG_PARAM(ENUM, param.sortOrder); FUNCTION_LOG_PARAM(STRING, param.expression); FUNCTION_LOG_PARAM(BOOL, param.recurse); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(callback != NULL); ASSERT(this->interface.infoList != NULL); ASSERT(!param.errorOnMissing || storageFeature(this, storageFeaturePath)); bool result = false; MEM_CONTEXT_TEMP_BEGIN() { // Build the path String *path = storagePathP(this, pathExp); // If there is an expression or recursion then the info will need to be filtered through a local callback if (param.expression != NULL || param.recurse) { StorageInfoListData data = { .storage = this, .callbackFunction = callback, .callbackData = callbackData, .sortOrder = param.sortOrder, .recurse = param.recurse, .path = path, }; if (param.expression != NULL) data.expression = regExpNew(param.expression); result = storageInfoListSort(this, path, param.sortOrder, storageInfoListCallback, &data); } else result = storageInfoListSort(this, path, param.sortOrder, callback, callbackData); if (!result && param.errorOnMissing) THROW_FMT(PathMissingError, STORAGE_ERROR_LIST_INFO_MISSING, strPtr(path)); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, result); } /*********************************************************************************************************************************** Get a list of files from a directory ***********************************************************************************************************************************/ StringList * storageList(const Storage *this, const String *pathExp, StorageListParam param) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE, this); FUNCTION_LOG_PARAM(STRING, pathExp); FUNCTION_LOG_PARAM(BOOL, param.errorOnMissing); FUNCTION_LOG_PARAM(BOOL, param.nullOnMissing); FUNCTION_LOG_PARAM(STRING, param.expression); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(!param.errorOnMissing || !param.nullOnMissing); ASSERT(!param.errorOnMissing || storageFeature(this, storageFeaturePath)); StringList *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { // Build the path String *path = storagePathP(this, pathExp); // Get the list result = storageInterfaceListP(this->driver, path, .expression = param.expression); // If the path does not exist if (result == NULL) { // Error if requested if (param.errorOnMissing) THROW_FMT(PathMissingError, STORAGE_ERROR_LIST_MISSING, strPtr(path)); // Build an empty list if the directory does not exist by default. This makes the logic in calling functions simpler // when they don't care if the path is missing. if (!param.nullOnMissing) result = strLstNew(); } // Move list up to the old context result = strLstMove(result, memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STRING_LIST, result); } /*********************************************************************************************************************************** Move a file ***********************************************************************************************************************************/ void storageMove(const Storage *this, StorageRead *source, StorageWrite *destination) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_READ, source); FUNCTION_LOG_PARAM(STORAGE_WRITE, destination); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->interface.move != NULL); ASSERT(source != NULL); ASSERT(destination != NULL); ASSERT(!storageReadIgnoreMissing(source)); ASSERT(strEq(this->type, storageReadType(source))); ASSERT(strEq(storageReadType(source), storageWriteType(destination))); MEM_CONTEXT_TEMP_BEGIN() { // If the file can't be moved it will need to be copied if (!storageInterfaceMoveP(this->driver, source, destination)) { // Perform the copy storageCopyP(source, destination); // Remove the source file storageInterfaceRemoveP(this->driver, storageReadName(source)); // Sync source path if the destination path was synced. We know the source and destination paths are different because // the move did not succeed. This will need updating when drivers other than Posix/CIFS are implemented because there's // no way to get coverage on it now. if (storageWriteSyncPath(destination)) storageInterfacePathSyncP(this->driver, strPath(storageReadName(source))); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Open a file for reading ***********************************************************************************************************************************/ StorageRead * storageNewRead(const Storage *this, const String *fileExp, StorageNewReadParam param) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE, this); FUNCTION_LOG_PARAM(STRING, fileExp); FUNCTION_LOG_PARAM(BOOL, param.ignoreMissing); FUNCTION_LOG_PARAM(BOOL, param.compressible); FUNCTION_LOG_END(); ASSERT(this != NULL); StorageRead *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { result = storageReadMove( storageInterfaceNewReadP( this->driver, storagePathP(this, fileExp), param.ignoreMissing, .compressible = param.compressible), memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STORAGE_READ, result); } /*********************************************************************************************************************************** Open a file for writing ***********************************************************************************************************************************/ StorageWrite * storageNewWrite(const Storage *this, const String *fileExp, StorageNewWriteParam param) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE, this); FUNCTION_LOG_PARAM(STRING, fileExp); FUNCTION_LOG_PARAM(MODE, param.modeFile); FUNCTION_LOG_PARAM(MODE, param.modePath); FUNCTION_LOG_PARAM(STRING, param.user); FUNCTION_LOG_PARAM(STRING, param.group); FUNCTION_LOG_PARAM(INT64, param.timeModified); FUNCTION_LOG_PARAM(BOOL, param.noCreatePath); FUNCTION_LOG_PARAM(BOOL, param.noSyncFile); FUNCTION_LOG_PARAM(BOOL, param.noSyncPath); FUNCTION_LOG_PARAM(BOOL, param.noAtomic); FUNCTION_LOG_PARAM(BOOL, param.compressible); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->write); StorageWrite *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { result = storageWriteMove( storageInterfaceNewWriteP( this->driver, storagePathP(this, fileExp), .modeFile = param.modeFile != 0 ? param.modeFile : this->modeFile, .modePath = param.modePath != 0 ? param.modePath : this->modePath, .user = param.user, .group = param.group, .timeModified = param.timeModified, .createPath = !param.noCreatePath, .syncFile = !param.noSyncFile, .syncPath = !param.noSyncPath, .atomic = !param.noAtomic, .compressible = param.compressible), memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(STORAGE_WRITE, result); } /*********************************************************************************************************************************** Get the absolute path in the storage ***********************************************************************************************************************************/ String * storagePath(const Storage *this, const String *pathExp, StoragePathParam param) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE, this); FUNCTION_TEST_PARAM(STRING, pathExp); FUNCTION_TEST_PARAM(BOOL, param.noEnforce); FUNCTION_TEST_END(); ASSERT(this != NULL); String *result = NULL; // If there is no path expression then return the base storage path if (pathExp == NULL) { result = strDup(this->path); } else { // If the path expression is absolute then use it as is if ((strPtr(pathExp))[0] == '/') { // Make sure the base storage path is contained within the path expression if (!strEqZ(this->path, "/")) { if (!param.noEnforce && (!strBeginsWith(pathExp, this->path) || !(strSize(pathExp) == strSize(this->path) || *(strPtr(pathExp) + strSize(this->path)) == '/'))) { THROW_FMT(AssertError, "absolute path '%s' is not in base path '%s'", strPtr(pathExp), strPtr(this->path)); } } result = strDup(pathExp); } // Else path expression is relative so combine it with the base storage path else { // There may or may not be a path expression that needs to be evaluated String *pathEvaluated = NULL; // Check if there is a path expression that needs to be evaluated if ((strPtr(pathExp))[0] == '<') { if (this->pathExpressionFunction == NULL) THROW_FMT(AssertError, "expression '%s' not valid without callback function", strPtr(pathExp)); // Get position of the expression end char *end = strchr(strPtr(pathExp), '>'); // Error if end is not found if (end == NULL) THROW_FMT(AssertError, "end > not found in path expression '%s'", strPtr(pathExp)); // Create a string from the expression String *expression = strNewN(strPtr(pathExp), (size_t)(end - strPtr(pathExp) + 1)); // Create a string from the path if there is anything left after the expression String *path = NULL; if (strSize(expression) < strSize(pathExp)) { // Error if path separator is not found if (end[1] != '/') THROW_FMT(AssertError, "'/' should separate expression and path '%s'", strPtr(pathExp)); // Only create path if there is something after the path separator if (end[2] == 0) THROW_FMT(AssertError, "path '%s' should not end in '/'", strPtr(pathExp)); path = strNew(end + 2); } // Evaluate the path pathEvaluated = this->pathExpressionFunction(expression, path); // Evaluated path cannot be NULL if (pathEvaluated == NULL) THROW_FMT(AssertError, "evaluated path '%s' cannot be null", strPtr(pathExp)); // Assign evaluated path to path pathExp = pathEvaluated; // Free temp vars strFree(expression); strFree(path); } if (strEqZ(this->path, "/")) result = strNewFmt("/%s", strPtr(pathExp)); else result = strNewFmt("%s/%s", strPtr(this->path), strPtr(pathExp)); strFree(pathEvaluated); } } FUNCTION_TEST_RETURN(result); } /*********************************************************************************************************************************** Create a path ***********************************************************************************************************************************/ void storagePathCreate(const Storage *this, const String *pathExp, StoragePathCreateParam param) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE, this); FUNCTION_LOG_PARAM(STRING, pathExp); FUNCTION_LOG_PARAM(BOOL, param.errorOnExists); FUNCTION_LOG_PARAM(BOOL, param.noParentCreate); FUNCTION_LOG_PARAM(MODE, param.mode); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->interface.pathCreate != NULL && storageFeature(this, storageFeaturePath)); ASSERT(this->write); MEM_CONTEXT_TEMP_BEGIN() { // Build the path String *path = storagePathP(this, pathExp); // Call driver function storageInterfacePathCreateP( this->driver, path, param.errorOnExists, param.noParentCreate, param.mode != 0 ? param.mode : this->modePath); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Does a path exist? ***********************************************************************************************************************************/ bool storagePathExists(const Storage *this, const String *pathExp) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE, this); FUNCTION_LOG_PARAM(STRING, pathExp); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->interface.pathExists != NULL); bool result = false; MEM_CONTEXT_TEMP_BEGIN() { result = storageInterfacePathExistsP(this->driver, storagePathP(this, pathExp)); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN(BOOL, result); } /*********************************************************************************************************************************** Remove a path ***********************************************************************************************************************************/ void storagePathRemove(const Storage *this, const String *pathExp, StoragePathRemoveParam param) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE, this); FUNCTION_LOG_PARAM(STRING, pathExp); FUNCTION_LOG_PARAM(BOOL, param.errorOnMissing); FUNCTION_LOG_PARAM(BOOL, param.recurse); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->write); ASSERT(!param.errorOnMissing || storageFeature(this, storageFeaturePath)); ASSERT(param.recurse || storageFeature(this, storageFeaturePath)); MEM_CONTEXT_TEMP_BEGIN() { // Build the path String *path = storagePathP(this, pathExp); // Call driver function if (!storageInterfacePathRemoveP(this->driver, path, param.recurse) && param.errorOnMissing) { THROW_FMT(PathRemoveError, STORAGE_ERROR_PATH_REMOVE_MISSING, strPtr(path)); } } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Sync a path ***********************************************************************************************************************************/ void storagePathSync(const Storage *this, const String *pathExp) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE, this); FUNCTION_LOG_PARAM(STRING, pathExp); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->write); // Not all storage requires path sync so just do nothing if the function is not implemented if (this->interface.pathSync != NULL) { MEM_CONTEXT_TEMP_BEGIN() { storageInterfacePathSyncP(this->driver, storagePathP(this, pathExp)); } MEM_CONTEXT_TEMP_END(); } FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Write a buffer to storage ***********************************************************************************************************************************/ void storagePut(StorageWrite *file, const Buffer *buffer) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE_WRITE, file); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_END(); ASSERT(file != NULL); ioWriteOpen(storageWriteIo(file)); ioWrite(storageWriteIo(file), buffer); ioWriteClose(storageWriteIo(file)); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Remove a file ***********************************************************************************************************************************/ void storageRemove(const Storage *this, const String *fileExp, StorageRemoveParam param) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(STORAGE, this); FUNCTION_LOG_PARAM(STRING, fileExp); FUNCTION_LOG_PARAM(BOOL, param.errorOnMissing); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(this->write); MEM_CONTEXT_TEMP_BEGIN() { // Build the path String *file = storagePathP(this, fileExp); // Call driver function storageInterfaceRemoveP(this->driver, file, .errorOnMissing = param.errorOnMissing); } MEM_CONTEXT_TEMP_END(); FUNCTION_LOG_RETURN_VOID(); } /*********************************************************************************************************************************** Get the storage driver ***********************************************************************************************************************************/ void * storageDriver(const Storage *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->driver); } /*********************************************************************************************************************************** Is the feature supported by this storage? ***********************************************************************************************************************************/ bool storageFeature(const Storage *this, StorageFeature feature) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE, this); FUNCTION_TEST_PARAM(ENUM, feature); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->interface.feature >> feature & 1); } /*********************************************************************************************************************************** Get the storage interface ***********************************************************************************************************************************/ StorageInterface storageInterface(const Storage *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->interface); } /*********************************************************************************************************************************** Get the storage type (posix, cifs, etc.) ***********************************************************************************************************************************/ const String * storageType(const Storage *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->type); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * storageToLog(const Storage *this) { return strNewFmt( "{type: %s, path: %s, write: %s}", strPtr(this->type), strPtr(strToLog(this->path)), cvtBoolToConstZ(this->write)); } pgbackrest-release-2.24/src/storage/storage.h000066400000000000000000000344301362531507100212630ustar00rootroot00000000000000/*********************************************************************************************************************************** Storage Interface ***********************************************************************************************************************************/ #ifndef STORAGE_STORAGE_H #define STORAGE_STORAGE_H #include /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define STORAGE_TYPE Storage #define STORAGE_PREFIX storage typedef struct Storage Storage; #include "common/type/buffer.h" #include "common/type/stringList.h" #include "common/io/filter/group.h" #include "common/time.h" #include "common/type/param.h" #include "storage/info.h" #include "storage/read.h" #include "storage/write.h" /*********************************************************************************************************************************** Storage feature ***********************************************************************************************************************************/ typedef enum { // Does the storage support paths/directories as something that needs to be created and deleted? Object stores (e.g. S3) often // do not have paths/directories -- they are only inferred by the object name. Therefore it doesn't make sense to create or // remove directories since this implies something is happening on the storage and in the case of objects stores it would be a // noop. We'll error on any path operation (e.g. pathExists(), pathCreate(), non-recursive removes, error on missing paths, // etc.) for storage that does not support paths. storageFeaturePath, // Do paths need to be synced to ensure contents are durable? storeageFeaturePath must also be enabled. storageFeaturePathSync, // Is the storage able to do compression and therefore store the file more efficiently than what was written? If so, the size // will need to checked after write to see if it is different. storageFeatureCompress, // Does the storage support hardlinks? Hardlinks allow the same file to linked into multiple paths to save space. storageFeatureHardLink, // Does the storage support symlinks? Symlinks allow paths/files/links to be accessed from another path. storageFeatureSymLink, } StorageFeature; /*********************************************************************************************************************************** storageCopy ***********************************************************************************************************************************/ #define storageCopyP(source, destination) \ storageCopy(source, destination) bool storageCopy(StorageRead *source, StorageWrite *destination); /*********************************************************************************************************************************** storageExists ***********************************************************************************************************************************/ typedef struct StorageExistsParam { VAR_PARAM_HEADER; TimeMSec timeout; } StorageExistsParam; #define storageExistsP(this, pathExp, ...) \ storageExists(this, pathExp, (StorageExistsParam){VAR_PARAM_INIT, __VA_ARGS__}) bool storageExists(const Storage *this, const String *pathExp, StorageExistsParam param); /*********************************************************************************************************************************** storageGet ***********************************************************************************************************************************/ typedef struct StorageGetParam { VAR_PARAM_HEADER; size_t exactSize; } StorageGetParam; #define storageGetP(file, ...) \ storageGet(file, (StorageGetParam){VAR_PARAM_INIT, __VA_ARGS__}) Buffer *storageGet(StorageRead *file, StorageGetParam param); /*********************************************************************************************************************************** storageInfo ***********************************************************************************************************************************/ typedef struct StorageInfoParam { VAR_PARAM_HEADER; bool ignoreMissing; bool followLink; bool noPathEnforce; } StorageInfoParam; #define storageInfoP(this, fileExp, ...) \ storageInfo(this, fileExp, (StorageInfoParam){VAR_PARAM_INIT, __VA_ARGS__}) StorageInfo storageInfo(const Storage *this, const String *fileExp, StorageInfoParam param); /*********************************************************************************************************************************** storageInfoList ***********************************************************************************************************************************/ typedef void (*StorageInfoListCallback)(void *callbackData, const StorageInfo *info); typedef struct StorageInfoListParam { VAR_PARAM_HEADER; bool errorOnMissing; bool recurse; SortOrder sortOrder; const String *expression; } StorageInfoListParam; #define storageInfoListP(this, fileExp, callback, callbackData, ...) \ storageInfoList(this, fileExp, callback, callbackData, (StorageInfoListParam){VAR_PARAM_INIT, __VA_ARGS__}) bool storageInfoList( const Storage *this, const String *pathExp, StorageInfoListCallback callback, void *callbackData, StorageInfoListParam param); /*********************************************************************************************************************************** storageList ***********************************************************************************************************************************/ typedef struct StorageListParam { VAR_PARAM_HEADER; bool errorOnMissing; bool nullOnMissing; const String *expression; } StorageListParam; #define storageListP(this, pathExp, ...) \ storageList(this, pathExp, (StorageListParam){VAR_PARAM_INIT, __VA_ARGS__}) StringList *storageList(const Storage *this, const String *pathExp, StorageListParam param); /*********************************************************************************************************************************** storageMove ***********************************************************************************************************************************/ #define storageMoveP(this, source, destination) \ storageMove(this, source, destination) void storageMove(const Storage *this, StorageRead *source, StorageWrite *destination); /*********************************************************************************************************************************** storageNewRead ***********************************************************************************************************************************/ typedef struct StorageNewReadParam { VAR_PARAM_HEADER; bool ignoreMissing; bool compressible; } StorageNewReadParam; #define storageNewReadP(this, pathExp, ...) \ storageNewRead(this, pathExp, (StorageNewReadParam){VAR_PARAM_INIT, __VA_ARGS__}) StorageRead *storageNewRead(const Storage *this, const String *fileExp, StorageNewReadParam param); /*********************************************************************************************************************************** storageNewWrite ***********************************************************************************************************************************/ typedef struct StorageNewWriteParam { VAR_PARAM_HEADER; bool noCreatePath; bool noSyncFile; bool noSyncPath; bool noAtomic; bool compressible; mode_t modeFile; mode_t modePath; time_t timeModified; const String *user; const String *group; } StorageNewWriteParam; #define storageNewWriteP(this, pathExp, ...) \ storageNewWrite(this, pathExp, (StorageNewWriteParam){VAR_PARAM_INIT, __VA_ARGS__}) StorageWrite *storageNewWrite(const Storage *this, const String *fileExp, StorageNewWriteParam param); /*********************************************************************************************************************************** storagePath ***********************************************************************************************************************************/ typedef struct StoragePathParam { VAR_PARAM_HEADER; bool noEnforce; } StoragePathParam; #define storagePathP(this, pathExp, ...) \ storagePath(this, pathExp, (StoragePathParam){VAR_PARAM_INIT, __VA_ARGS__}) String *storagePath(const Storage *this, const String *pathExp, StoragePathParam param); /*********************************************************************************************************************************** storagePathCreate ***********************************************************************************************************************************/ typedef struct StoragePathCreateParam { VAR_PARAM_HEADER; bool errorOnExists; bool noParentCreate; mode_t mode; } StoragePathCreateParam; #define storagePathCreateP(this, pathExp, ...) \ storagePathCreate(this, pathExp, (StoragePathCreateParam){VAR_PARAM_INIT, __VA_ARGS__}) void storagePathCreate(const Storage *this, const String *pathExp, StoragePathCreateParam param); /*********************************************************************************************************************************** storagePathExists ***********************************************************************************************************************************/ #define storagePathExistsP(this, pathExp) \ storagePathExists(this, pathExp) bool storagePathExists(const Storage *this, const String *pathExp); /*********************************************************************************************************************************** storagePathRemove ***********************************************************************************************************************************/ typedef struct StoragePathRemoveParam { VAR_PARAM_HEADER; bool errorOnMissing; bool recurse; } StoragePathRemoveParam; #define storagePathRemoveP(this, pathExp, ...) \ storagePathRemove(this, pathExp, (StoragePathRemoveParam){VAR_PARAM_INIT, __VA_ARGS__}) void storagePathRemove(const Storage *this, const String *pathExp, StoragePathRemoveParam param); /*********************************************************************************************************************************** storagePathSync ***********************************************************************************************************************************/ #define storagePathSyncP(this, pathExp) \ storagePathSync(this, pathExp) void storagePathSync(const Storage *this, const String *pathExp); /*********************************************************************************************************************************** storagePut ***********************************************************************************************************************************/ #define storagePutP(file, buffer) \ storagePut(file, buffer) void storagePut(StorageWrite *file, const Buffer *buffer); /*********************************************************************************************************************************** storageRemove ***********************************************************************************************************************************/ typedef struct StorageRemoveParam { VAR_PARAM_HEADER; bool errorOnMissing; } StorageRemoveParam; #define storageRemoveP(this, fileExp, ...) \ storageRemove(this, fileExp, (StorageRemoveParam){VAR_PARAM_INIT, __VA_ARGS__}) void storageRemove(const Storage *this, const String *fileExp, StorageRemoveParam param); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ bool storageFeature(const Storage *this, StorageFeature feature); const String *storageType(const Storage *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *storageToLog(const Storage *this); #define FUNCTION_LOG_STORAGE_TYPE \ Storage * #define FUNCTION_LOG_STORAGE_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, storageToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/storage/storage.intern.h000066400000000000000000000422261362531507100225630ustar00rootroot00000000000000/*********************************************************************************************************************************** Storage Interface Internal ***********************************************************************************************************************************/ #ifndef STORAGE_STORAGE_INTERN_H #define STORAGE_STORAGE_INTERN_H #include "common/type/param.h" #include "storage/read.intern.h" #include "storage/storage.h" #include "storage/write.intern.h" /*********************************************************************************************************************************** Default file and path modes ***********************************************************************************************************************************/ #define STORAGE_MODE_FILE_DEFAULT 0640 #define STORAGE_MODE_PATH_DEFAULT 0750 /*********************************************************************************************************************************** Error messages ***********************************************************************************************************************************/ #define STORAGE_ERROR_READ_CLOSE "unable to close file '%s' after read" #define STORAGE_ERROR_READ_OPEN "unable to open file '%s' for read" #define STORAGE_ERROR_READ_MISSING "unable to open missing file '%s' for read" #define STORAGE_ERROR_INFO "unable to get info for path/file '%s'" #define STORAGE_ERROR_INFO_MISSING "unable to get info for missing path/file '%s'" #define STORAGE_ERROR_LIST "unable to list files for path '%s'" #define STORAGE_ERROR_LIST_MISSING "unable to list files for missing path '%s'" #define STORAGE_ERROR_LIST_INFO "unable to list file info for path '%s'" #define STORAGE_ERROR_LIST_INFO_MISSING "unable to list file info for missing path '%s'" #define STORAGE_ERROR_PATH_REMOVE "unable to remove path '%s'" #define STORAGE_ERROR_PATH_REMOVE_FILE "unable to remove file '%s'" #define STORAGE_ERROR_PATH_REMOVE_MISSING "unable to remove missing path '%s'" #define STORAGE_ERROR_PATH_SYNC "unable to sync path '%s'" #define STORAGE_ERROR_PATH_SYNC_CLOSE "unable to close path '%s' after sync" #define STORAGE_ERROR_PATH_SYNC_OPEN "unable to open path '%s' for sync" #define STORAGE_ERROR_PATH_SYNC_MISSING "unable to sync missing path '%s'" #define STORAGE_ERROR_WRITE_CLOSE "unable to close file '%s' after write" #define STORAGE_ERROR_WRITE_OPEN "unable to open file '%s' for write" #define STORAGE_ERROR_WRITE_MISSING "unable to open file '%s' for write in missing path" #define STORAGE_ERROR_WRITE_SYNC "unable to sync file '%s' after write" /*********************************************************************************************************************************** Path expression callback function type - used to modify paths based on expressions enclosed in <> ***********************************************************************************************************************************/ typedef String *StoragePathExpressionCallback(const String *expression, const String *path); /*********************************************************************************************************************************** Required interface functions ***********************************************************************************************************************************/ // Does a file exist? This function is only for files, not paths. typedef struct StorageInterfaceExistsParam { VAR_PARAM_HEADER; } StorageInterfaceExistsParam; typedef bool StorageInterfaceExists(void *thisVoid, const String *file, StorageInterfaceExistsParam param); #define storageInterfaceExistsP(thisVoid, file, ...) \ STORAGE_COMMON_INTERFACE(thisVoid).exists(thisVoid, file, (StorageInterfaceExistsParam){VAR_PARAM_INIT, __VA_ARGS__}) // --------------------------------------------------------------------------------------------------------------------------------- // Get information about a file typedef struct StorageInterfaceInfoParam { VAR_PARAM_HEADER; // Should symlinks be followed? Only required on storage that supports symlinks. bool followLink; } StorageInterfaceInfoParam; typedef StorageInfo StorageInterfaceInfo(void *thisVoid, const String *file, StorageInterfaceInfoParam param); #define storageInterfaceInfoP(thisVoid, file, ...) \ STORAGE_COMMON_INTERFACE(thisVoid).info(thisVoid, file, (StorageInterfaceInfoParam){VAR_PARAM_INIT, __VA_ARGS__}) // --------------------------------------------------------------------------------------------------------------------------------- // Get a list of files typedef struct StorageInterfaceListParam { VAR_PARAM_HEADER; // Regular expression used to filter the results const String *expression; } StorageInterfaceListParam; typedef StringList *StorageInterfaceList(void *thisVoid, const String *path, StorageInterfaceListParam param); #define storageInterfaceListP(thisVoid, path, ...) \ STORAGE_COMMON_INTERFACE(thisVoid).list(thisVoid, path, (StorageInterfaceListParam){VAR_PARAM_INIT, __VA_ARGS__}) // --------------------------------------------------------------------------------------------------------------------------------- // Create a file read object. The file should not be opened immediately -- open() will be called on the IoRead interface when the // file needs to be opened. typedef struct StorageInterfaceNewReadParam { VAR_PARAM_HEADER; // Is the file compressible? This is useful when the file must be moved across a network and some temporary compression is // helpful. bool compressible; } StorageInterfaceNewReadParam; typedef StorageRead *StorageInterfaceNewRead( void *thisVoid, const String *file, bool ignoreMissing, StorageInterfaceNewReadParam param); #define storageInterfaceNewReadP(thisVoid, file, ignoreMissing, ...) \ STORAGE_COMMON_INTERFACE(thisVoid).newRead( \ thisVoid, file, ignoreMissing, (StorageInterfaceNewReadParam){VAR_PARAM_INIT, __VA_ARGS__}) // --------------------------------------------------------------------------------------------------------------------------------- // Create a file write object. The file should not be opened immediately -- open() will be called on the IoWrite interface when the // file needs to be opened. typedef struct StorageInterfaceNewWriteParam { VAR_PARAM_HEADER; // File/path mode for storage that supports Posix-style permissions. modePath is only used in conjunction with createPath. mode_t modeFile; mode_t modePath; // User/group name const String *user; const String *group; // Modified time time_t timeModified; // Will paths be created as needed? bool createPath; // Sync file/path when required by the storage bool syncFile; bool syncPath; // Ensure the file written atomically. If this is false it's OK to write atomically if that's all the storage supperts // (e.g. S3). Non-atomic writes are used in some places where there is a performance advantage and atomicity is not needed. bool atomic; // Is the file compressible? This is useful when the file must be moved across a network and some temporary compression is // helpful. bool compressible; } StorageInterfaceNewWriteParam; typedef StorageWrite *StorageInterfaceNewWrite(void *thisVoid, const String *file, StorageInterfaceNewWriteParam param); #define storageInterfaceNewWriteP(thisVoid, file, ...) \ STORAGE_COMMON_INTERFACE(thisVoid).newWrite(thisVoid, file, (StorageInterfaceNewWriteParam){VAR_PARAM_INIT, __VA_ARGS__}) // --------------------------------------------------------------------------------------------------------------------------------- // Get info for a path and all paths/files in the path (does not recurse) typedef struct StorageInterfaceInfoListParam { VAR_PARAM_HEADER; } StorageInterfaceInfoListParam; typedef bool StorageInterfaceInfoList( void *thisVoid, const String *path, StorageInfoListCallback callback, void *callbackData, StorageInterfaceInfoListParam param); #define storageInterfaceInfoListP(thisVoid, path, callback, callbackData, ...) \ STORAGE_COMMON_INTERFACE(thisVoid).infoList( \ thisVoid, path, callback, callbackData, (StorageInterfaceInfoListParam){VAR_PARAM_INIT, __VA_ARGS__}) // --------------------------------------------------------------------------------------------------------------------------------- // Remove a path (and optionally recurse) typedef struct StorageInterfacePathRemoveParam { VAR_PARAM_HEADER; } StorageInterfacePathRemoveParam; typedef bool StorageInterfacePathRemove(void *thisVoid, const String *path, bool recurse, StorageInterfacePathRemoveParam param); #define storageInterfacePathRemoveP(thisVoid, path, recurse, ...) \ STORAGE_COMMON_INTERFACE(thisVoid).pathRemove( \ thisVoid, path, recurse, (StorageInterfacePathRemoveParam){VAR_PARAM_INIT, __VA_ARGS__}) // --------------------------------------------------------------------------------------------------------------------------------- // Remove a file typedef struct StorageInterfaceRemoveParam { VAR_PARAM_HEADER; // Error when the file to delete is missing bool errorOnMissing; } StorageInterfaceRemoveParam; typedef void StorageInterfaceRemove(void *thisVoid, const String *file, StorageInterfaceRemoveParam param); #define storageInterfaceRemoveP(thisVoid, file, ...) \ STORAGE_COMMON_INTERFACE(thisVoid).remove(thisVoid, file, (StorageInterfaceRemoveParam){VAR_PARAM_INIT, __VA_ARGS__}) /*********************************************************************************************************************************** Optional interface functions ***********************************************************************************************************************************/ // Move a file atomically typedef struct StorageInterfaceMoveParam { VAR_PARAM_HEADER; } StorageInterfaceMoveParam; typedef bool StorageInterfaceMove(void *thisVoid, StorageRead *source, StorageWrite *destination, StorageInterfaceMoveParam param); #define storageInterfaceMoveP(thisVoid, source, destination, ...) \ STORAGE_COMMON_INTERFACE(thisVoid).move( \ thisVoid, source, destination, (StorageInterfaceMoveParam){VAR_PARAM_INIT, __VA_ARGS__}) // --------------------------------------------------------------------------------------------------------------------------------- // Create a path typedef struct StorageInterfacePathCreateParam { VAR_PARAM_HEADER; } StorageInterfacePathCreateParam; typedef void StorageInterfacePathCreate( void *thisVoid, const String *path, bool errorOnExists, bool noParentCreate, mode_t mode, StorageInterfacePathCreateParam param); #define storageInterfacePathCreateP(thisVoid, path, errorOnExists, noParentCreate, mode, ...) \ STORAGE_COMMON_INTERFACE(thisVoid).pathCreate( \ thisVoid, path, errorOnExists, noParentCreate, mode, (StorageInterfacePathCreateParam){VAR_PARAM_INIT, __VA_ARGS__}) // --------------------------------------------------------------------------------------------------------------------------------- // Does a path exist? typedef struct StorageInterfacePathExistsParam { VAR_PARAM_HEADER; } StorageInterfacePathExistsParam; typedef bool StorageInterfacePathExists(void *thisVoid, const String *path, StorageInterfacePathExistsParam param); #define storageInterfacePathExistsP(thisVoid, path, ...) \ STORAGE_COMMON_INTERFACE(thisVoid).pathExists(thisVoid, path, (StorageInterfacePathExistsParam){VAR_PARAM_INIT, __VA_ARGS__}) // --------------------------------------------------------------------------------------------------------------------------------- // Sync a path typedef struct StorageInterfacePathSyncParam { VAR_PARAM_HEADER; } StorageInterfacePathSyncParam; typedef void StorageInterfacePathSync(void *thisVoid, const String *path, StorageInterfacePathSyncParam param); #define storageInterfacePathSyncP(thisVoid, path, ...) \ STORAGE_COMMON_INTERFACE(thisVoid).pathSync(thisVoid, path, (StorageInterfacePathSyncParam){VAR_PARAM_INIT, __VA_ARGS__}) /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ typedef struct StorageInterface { // Features implemented by the storage driver uint64_t feature; // Required functions StorageInterfaceExists *exists; StorageInterfaceInfo *info; StorageInterfaceInfoList *infoList; StorageInterfaceList *list; StorageInterfaceNewRead *newRead; StorageInterfaceNewWrite *newWrite; StorageInterfacePathRemove *pathRemove; StorageInterfaceRemove *remove; // Optional functions StorageInterfaceMove *move; StorageInterfacePathCreate *pathCreate; StorageInterfacePathExists *pathExists; StorageInterfacePathSync *pathSync; } StorageInterface; #define storageNewP(type, path, modeFile, modePath, write, pathExpressionFunction, driver, ...) \ storageNew(type, path, modeFile, modePath, write, pathExpressionFunction, driver, (StorageInterface){__VA_ARGS__}) Storage *storageNew( const String *type, const String *path, mode_t modeFile, mode_t modePath, bool write, StoragePathExpressionCallback pathExpressionFunction, void *driver, StorageInterface interface); /*********************************************************************************************************************************** Common members to include in every storage driver and macros to extract the common elements ***********************************************************************************************************************************/ #define STORAGE_COMMON_MEMBER \ StorageInterface interface /* Storage interface */ typedef struct StorageCommon { STORAGE_COMMON_MEMBER; } StorageCommon; #define STORAGE_COMMON(thisVoid) \ ((const StorageCommon *)thisVoid) #define STORAGE_COMMON_INTERFACE(thisVoid) \ (STORAGE_COMMON(thisVoid)->interface) /*********************************************************************************************************************************** Getters/Setters ***********************************************************************************************************************************/ void *storageDriver(const Storage *this); StorageInterface storageInterface(const Storage *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_STORAGE_INTERFACE_TYPE \ StorageInterface #define FUNCTION_LOG_STORAGE_INTERFACE_FORMAT(value, buffer, bufferSize) \ objToLog(&value, "StorageInterface", buffer, bufferSize) #endif pgbackrest-release-2.24/src/storage/write.c000066400000000000000000000214521362531507100207440ustar00rootroot00000000000000/*********************************************************************************************************************************** Storage Write Interface ***********************************************************************************************************************************/ #include "build.auto.h" #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" #include "common/object.h" #include "storage/write.intern.h" /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ struct StorageWrite { MemContext *memContext; // Object mem context void *driver; const StorageWriteInterface *interface; IoWrite *io; }; OBJECT_DEFINE_MOVE(STORAGE_WRITE); OBJECT_DEFINE_FREE(STORAGE_WRITE); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_STORAGE_WRITE_INTERFACE_TYPE \ StorageWriteInterface #define FUNCTION_LOG_STORAGE_WRITE_INTERFACE_FORMAT(value, buffer, bufferSize) \ objToLog(&value, "StorageWriteInterface", buffer, bufferSize) /*********************************************************************************************************************************** Create a new storage file This object expects its context to be created in advance. This is so the calling function can add whatever data it wants without required multiple functions and contexts to make it safe. ***********************************************************************************************************************************/ StorageWrite * storageWriteNew(void *driver, const StorageWriteInterface *interface) { FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM_P(VOID, driver); FUNCTION_LOG_PARAM_P(STORAGE_WRITE_INTERFACE, interface); FUNCTION_LOG_END(); ASSERT(driver != NULL); ASSERT(interface != NULL); StorageWrite *this = memNew(sizeof(StorageWrite)); *this = (StorageWrite) { .memContext = memContextCurrent(), .driver = driver, .interface = interface, .io = ioWriteNew(driver, interface->ioInterface), }; FUNCTION_LOG_RETURN(STORAGE_WRITE, this); } /*********************************************************************************************************************************** Will the file be written atomically? Atomic writes means the file will be complete or be missing. Filesystems have different ways to accomplish this. ***********************************************************************************************************************************/ bool storageWriteAtomic(const StorageWrite *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_WRITE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->interface->atomic); } /*********************************************************************************************************************************** Will the path be created if required? ***********************************************************************************************************************************/ bool storageWriteCreatePath(const StorageWrite *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_WRITE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->interface->createPath); } /*********************************************************************************************************************************** Get file driver ***********************************************************************************************************************************/ void * storageWriteDriver(const StorageWrite *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_WRITE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->driver); } /*********************************************************************************************************************************** Get the IO object ***********************************************************************************************************************************/ IoWrite * storageWriteIo(const StorageWrite *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_WRITE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->io); } /*********************************************************************************************************************************** Get file mode ***********************************************************************************************************************************/ mode_t storageWriteModeFile(const StorageWrite *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_WRITE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->interface->modeFile); } /*********************************************************************************************************************************** Get path mode ***********************************************************************************************************************************/ mode_t storageWriteModePath(const StorageWrite *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_WRITE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->interface->modePath); } /*********************************************************************************************************************************** Get file name ***********************************************************************************************************************************/ const String * storageWriteName(const StorageWrite *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_WRITE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->interface->name); } /*********************************************************************************************************************************** Will the file be synced after it is closed? ***********************************************************************************************************************************/ bool storageWriteSyncFile(const StorageWrite *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_WRITE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->interface->syncFile); } /*********************************************************************************************************************************** Will the path be synced after the file is closed? ***********************************************************************************************************************************/ bool storageWriteSyncPath(const StorageWrite *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_WRITE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->interface->syncPath); } /*********************************************************************************************************************************** Get file type ***********************************************************************************************************************************/ const String * storageWriteType(const StorageWrite *this) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(STORAGE_WRITE, this); FUNCTION_TEST_END(); ASSERT(this != NULL); FUNCTION_TEST_RETURN(this->interface->type); } /*********************************************************************************************************************************** Render as string for logging ***********************************************************************************************************************************/ String * storageWriteToLog(const StorageWrite *this) { return strNewFmt( "{type: %s, name: %s, modeFile: %04o, modePath: %04o, createPath: %s, syncFile: %s, syncPath: %s, atomic: %s}", strPtr(storageWriteType(this)), strPtr(strToLog(storageWriteName(this))), storageWriteModeFile(this), storageWriteModePath(this), cvtBoolToConstZ(storageWriteCreatePath(this)), cvtBoolToConstZ(storageWriteSyncFile(this)), cvtBoolToConstZ(storageWriteSyncPath(this)), cvtBoolToConstZ(storageWriteAtomic(this))); } pgbackrest-release-2.24/src/storage/write.h000066400000000000000000000060071362531507100207500ustar00rootroot00000000000000/*********************************************************************************************************************************** Storage Write Interface ***********************************************************************************************************************************/ #ifndef STORAGE_WRITE_H #define STORAGE_WRITE_H /*********************************************************************************************************************************** Object type ***********************************************************************************************************************************/ #define STORAGE_WRITE_TYPE StorageWrite #define STORAGE_WRITE_PREFIX storageWrite typedef struct StorageWrite StorageWrite; #include "common/io/write.h" #include "common/type/buffer.h" #include "common/type/string.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ StorageWrite *storageWriteMove(StorageWrite *this, MemContext *parentNew); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ bool storageWriteAtomic(const StorageWrite *this); bool storageWriteCreatePath(const StorageWrite *this); IoWrite *storageWriteIo(const StorageWrite *this); mode_t storageWriteModeFile(const StorageWrite *this); mode_t storageWriteModePath(const StorageWrite *this); const String *storageWriteName(const StorageWrite *this); bool storageWriteSyncFile(const StorageWrite *this); bool storageWriteSyncPath(const StorageWrite *this); const String *storageWriteType(const StorageWrite *this); /*********************************************************************************************************************************** Destructor ***********************************************************************************************************************************/ void storageWriteFree(StorageWrite *this); /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ String *storageWriteToLog(const StorageWrite *this); #define FUNCTION_LOG_STORAGE_WRITE_TYPE \ StorageWrite * #define FUNCTION_LOG_STORAGE_WRITE_FORMAT(value, buffer, bufferSize) \ FUNCTION_LOG_STRING_OBJECT_FORMAT(value, storageWriteToLog, buffer, bufferSize) #endif pgbackrest-release-2.24/src/storage/write.intern.h000066400000000000000000000043511362531507100222460ustar00rootroot00000000000000/*********************************************************************************************************************************** Storage Write Interface Internal ***********************************************************************************************************************************/ #ifndef STORAGE_WRITE_INTERN_H #define STORAGE_WRITE_INTERN_H #include "common/io/write.intern.h" #include "storage/write.h" #include "version.h" /*********************************************************************************************************************************** Temporary file extension ***********************************************************************************************************************************/ #define STORAGE_FILE_TEMP_EXT PROJECT_BIN ".tmp" /*********************************************************************************************************************************** Constructor ***********************************************************************************************************************************/ typedef struct StorageWriteInterface { const String *type; const String *name; bool atomic; bool createPath; bool compressible; // Is this file compressible? unsigned int compressLevel; // Level to use for compression const String *group; // Group that owns the file mode_t modeFile; mode_t modePath; bool syncFile; bool syncPath; time_t timeModified; // Time file was last modified const String *user; // User that owns the file IoWriteInterface ioInterface; } StorageWriteInterface; StorageWrite *storageWriteNew(void *driver, const StorageWriteInterface *interface); /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void *storageWriteDriver(const StorageWrite *this); #endif pgbackrest-release-2.24/src/version.h000066400000000000000000000037731362531507100176460ustar00rootroot00000000000000/*********************************************************************************************************************************** Version Numbers and Names ***********************************************************************************************************************************/ #ifndef VERSION_H #define VERSION_H /*********************************************************************************************************************************** Official name of the project ***********************************************************************************************************************************/ #define PROJECT_NAME "pgBackRest" /*********************************************************************************************************************************** Standard binary name ***********************************************************************************************************************************/ #define PROJECT_BIN "pgbackrest" /*********************************************************************************************************************************** Format Number -- defines format for info and manifest files as well as on-disk structure. If this number changes then the repository will be invalid unless migration functions are written. ***********************************************************************************************************************************/ #define REPOSITORY_FORMAT 5 /*********************************************************************************************************************************** Software version. Currently this value is maintained in Version.pm and updated by test.pl. ***********************************************************************************************************************************/ #define PROJECT_VERSION "2.24" #endif pgbackrest-release-2.24/test/000077500000000000000000000000001362531507100161665ustar00rootroot00000000000000pgbackrest-release-2.24/test/.gitignore000066400000000000000000000001341362531507100201540ustar00rootroot00000000000000/.vagrant /nytprof* /scratch* /coverage* /ubuntu-bionic-18.04-cloudimg-console.log /profile pgbackrest-release-2.24/test/README.md000066400000000000000000000036621362531507100174540ustar00rootroot00000000000000# pgBackRest
    Regression, Unit, & Integration Testing ## Introduction pgBackRest uses Docker to run tests and generate documentation. Docker's light-weight virtualization provides the a good balance between proper OS emulation and performance (especially startup) A `Vagrantfile` is provided that contains the complete configuration required to run pgBackRest tests and build documentation. If Vagrant is not suitable then the `Vagrantfile` still contains the configuration steps required to build a test system. > **NOTE:** this is not required for normal operation of pgBackRest. ## Testing The easiest way to start testing pgBackRest is with the included `Vagrantfile`. _Build Vagrant and Logon_: ``` cd test vagrant up vagrant ssh ``` The `vagrant up` command may take some time as a number of Docker containers must also be built. The `vagrant ssh` command automatically logs onto the VM. _Run All Tests_: ``` /backrest/test/test.pl ``` _Run Tests for a Specific OS_: ``` /backrest/test/test.pl --vm=co6 ``` _Run Tests for a Specific OS and Module_: ``` /backrest/test/test.pl --vm=co6 --module=backup ``` _Run Tests for a Specific OS, Module, and Test_: ``` /backrest/test/test.pl --vm=co6 --module=backup --test=full ``` _Run Tests for a Specific OS, Module, Test, and Run_: ``` /backrest/test/test.pl --vm=co6 --module=backup --test=full --run=1 ``` _Run Tests for a Specific OS, Module, Test, and Process Max_: ``` /backrest/test/test.pl --vm=co6 --module=backup --test=full --process-max=4 ``` > **NOTE:** process-max is only applicable to the `synthetic` and `full` tests in the `backup` module. _Run Tests for a Specific OS, Module, Test, Process Max, and Database Version_: ``` /backrest/test/test.pl --vm=co6 --module=backup --test=full --process-max=4 --pg-version=9.4 ``` > **NOTE:** pg-version is only applicable to the `full` test in the `backup` module. _Iterate All Possible Test Combinations_: ``` /backrest/test/test.pl --dry-run ``` pgbackrest-release-2.24/test/Vagrantfile000066400000000000000000000131421362531507100203540ustar00rootroot00000000000000Vagrant.configure(2) do |config| config.vm.provider :virtualbox do |vb| vb.memory = 4096 vb.cpus = 8 end config.vm.box = "ubuntu/bionic64" config.vm.box_version = "20180719.0.0" # Increase disk size if the vagrant-disksize plugin is available # To install the plugin: vagrant plugin install vagrant-disksize if Vagrant.has_plugin?('vagrant-disksize') config.disksize.size = '64GB' end config.vm.provider :virtualbox do |vb| vb.name = "pgbackrest-test" end # Provision the VM config.vm.provision "shell", inline: <<-SHELL #--------------------------------------------------------------------------------------------------------------------------- echo 'Build Begin' && date # Suppress "dpkg-reconfigure: unable to re-open stdin: No file or directory" warning export DEBIAN_FRONTEND=noninteractive # Assign a host name sed -i 's/^127\.0\.0\.1\t.*/127\.0\.0\.1\tlocalhost pgbackrest-test/' /etc/hosts hostnamectl set-hostname pgbackrest-test #--------------------------------------------------------------------------------------------------------------------------- echo 'Update Apt' && date apt-get update #--------------------------------------------------------------------------------------------------------------------------- echo 'Synchronize Date' && date apt-get install -y ntpdate ntpdate pool.ntp.org #--------------------------------------------------------------------------------------------------------------------------- echo 'Use Google DNS' && date echo 'supersede domain-name-servers 8.8.8.8;' >> /etc/dhcp/dhclient.conf /etc/init.d/networking restart # Set time sync settings so builds don't fail with clock skew errors. If a build does fail with "clock skew detected", # rerun the following at the command line. #--------------------------------------------------------------------------------------------------------------------------- echo 'Time Sync Settings' && date sudo /etc/init.d/virtualbox-guest-utils stop sudo /usr/sbin/VBoxService --timesync-set-on-restore --timesync-interval 5000 --timesync-set-threshold 1 # Create /tmp/pgbackrest and give ownership to root so we know unit tests are not writing there #--------------------------------------------------------------------------------------------------------------------------- echo 'Create /tmp/pgbackrest owned by root' && date sudo mkdir -p /tmp/pgbackrest sudo chown root:root /tmp/pgbackrest sudo chmod 700 /tmp/pgbackrest # Mount tmpfs at /home/vagrant/test for faster testing #--------------------------------------------------------------------------------------------------------------------------- echo 'Mount tmpfs' && date sudo -u vagrant mkdir -p -m 770 /home/vagrant/test echo 'tmpfs /home/vagrant/test tmpfs size=2560M 0 1' >> /etc/fstab mount -a #--------------------------------------------------------------------------------------------------------------------------- echo 'Install Perl Modules' && date apt-get install -y libdbd-pg-perl libxml-checker-perl libyaml-libyaml-perl #--------------------------------------------------------------------------------------------------------------------------- echo 'Install Build Tools' && date apt-get install -y devscripts build-essential lintian git cloc txt2man debhelper libssl-dev zlib1g-dev libperl-dev \ libxml2-dev liblz4-dev libpq-dev valgrind lcov #--------------------------------------------------------------------------------------------------------------------------- echo 'Install Docker' && date curl -fsSL https://get.docker.com | sh sudo usermod -aG docker vagrant #--------------------------------------------------------------------------------------------------------------------------- echo 'Install Dev Utilities' && date apt-get install -y vim htop #--------------------------------------------------------------------------------------------------------------------------- # echo 'Install TeX Live' && date # Not installed by default since latex is only needed for releases and PDF development/testing # apt-get install -y --no-install-recommends texlive-latex-base texlive-latex-extra texlive-fonts-recommended # apt-get install -y texlive-font-utils #--------------------------------------------------------------------------------------------------------------------------- echo 'Build VM Images' && date rm -rf /backrest/test/.vagrant/docker/* rm -rf /backrest/test/.vagrant/libc/* rm -rf /backrest/test/.vagrant/package/* sudo su - vagrant -c '/backrest/test/test.pl --vm-build' #--------------------------------------------------------------------------------------------------------------------------- echo 'Build End' && date # Useful commands #--------------------------------------------------------------------------------------------------------------------------- # Force remove all containers: # docker rm -f $(docker ps -a -q) # Force remove all images: # docker rmi -f $(docker images -q) SHELL # Don't share the default vagrant folder config.vm.synced_folder ".", "/vagrant", disabled: true # Mount backrest path for testing config.vm.synced_folder "..", "/backrest" end pgbackrest-release-2.24/test/certificate/000077500000000000000000000000001362531507100204505ustar00rootroot00000000000000pgbackrest-release-2.24/test/certificate/.gitignore000066400000000000000000000000141362531507100224330ustar00rootroot00000000000000*.csr *.srl pgbackrest-release-2.24/test/certificate/README.md000066400000000000000000000044071362531507100217340ustar00rootroot00000000000000# pgBackRest Test Certificates The certificates in this directory are used for testing purposes only and are not used for actual services. They are used only by the unit and integration tests and there should be no reason to modify them unless new tests are required. ## Generating the Test CA (pgbackrest-test-ca.crt/key) This is a self-signed CA that is used to sign all server certificates. No intermediate CAs will be generated since they are not needed for testing. ``` cd [pgbackrest-root]/test/certificate openssl genrsa -out pgbackrest-test-ca.key 4096 openssl req -new -x509 -extensions v3_ca -key pgbackrest-test-ca.key -out pgbackrest-test-ca.crt -days 99999 \ -subj "/C=US/ST=All/L=All/O=pgBackRest/CN=test.pgbackrest.org" openssl x509 -in pgbackrest-test-ca.crt -text -noout ``` ## Generating the Test Key (pgbackrest-test.key) This key will be used for all server certificates to keep things simple. ``` cd [pgbackrest-root]/test/certificate openssl genrsa -out pgbackrest-test.key 4096 ``` ## Generating the Alt Name Test Certificate (pgbackrest-test-alt-name.crt) This certificate will include alternate names and will only be used in unit tests to check alternate name verification functionality. ``` cd [pgbackrest-root]/test/certificate openssl req -new -sha256 -nodes -out pgbackrest-test-alt-name.csr -key pgbackrest-test.key -config pgbackrest-test-alt-name.cnf openssl x509 -req -in pgbackrest-test-alt-name.csr -CA pgbackrest-test-ca.crt -CAkey pgbackrest-test-ca.key -CAcreateserial \ -out pgbackrest-test-alt-name.crt -days 99999 -extensions v3_req -extfile pgbackrest-test-alt-name.cnf openssl x509 -in pgbackrest-test-alt-name.crt -text -noout ``` ## Generating the Test Certificate (pgbackrest-test.crt) This certificate will be used in unit and integration tests. It is expected to pass verification but won't be subjected to extensive testing. ``` cd [pgbackrest-root]/test/certificate openssl req -new -sha256 -nodes -out pgbackrest-test.csr -key pgbackrest-test.key -config pgbackrest-test.cnf openssl x509 -req -in pgbackrest-test.csr -CA pgbackrest-test-ca.crt -CAkey pgbackrest-test-ca.key -CAcreateserial \ -out pgbackrest-test.crt -days 99999 -extensions v3_req -extfile pgbackrest-test.cnf openssl x509 -in pgbackrest-test.crt -text -noout ``` pgbackrest-release-2.24/test/certificate/pgbackrest-test-alt-name.cnf000066400000000000000000000007301362531507100257360ustar00rootroot00000000000000[req] default_bits = 4096 prompt = no default_md = sha256 req_extensions = v3_req distinguished_name = dn [ dn ] C=US ST=All L=All O=pgBackRest OU=Unit Testing Domain CN = test.pgbackrest.org [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names [ alt_names ] DNS.1 = test.pgbackrest.org DNS.2 = *.test.pgbackrest.org IP.1 = 127.0.0.1 DNS.3 = test2.pgbackrest.org DNS.4 = *.test2.pgbackrest.org pgbackrest-release-2.24/test/certificate/pgbackrest-test-alt-name.crt000066400000000000000000000040661362531507100257660ustar00rootroot00000000000000-----BEGIN CERTIFICATE----- MIIF4jCCA8qgAwIBAgIJAN+gSjwW7yR+MA0GCSqGSIb3DQEBCwUAMFwxCzAJBgNV BAYTAlVTMQwwCgYDVQQIDANBbGwxDDAKBgNVBAcMA0FsbDETMBEGA1UECgwKcGdC YWNrUmVzdDEcMBoGA1UEAwwTdGVzdC5wZ2JhY2tyZXN0Lm9yZzAgFw0xODExMjAx MzU2MjlaGA8yMjkyMDkwMzEzNTYyOVowejELMAkGA1UEBhMCVVMxDDAKBgNVBAgM A0FsbDEMMAoGA1UEBwwDQWxsMRMwEQYDVQQKDApwZ0JhY2tSZXN0MRwwGgYDVQQL DBNVbml0IFRlc3RpbmcgRG9tYWluMRwwGgYDVQQDDBN0ZXN0LnBnYmFja3Jlc3Qu b3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwzNZDX/VhTA6lALX DZ4AOHv4OQH5wTZipa97XdTrI2TIfMGEffLmv5wzN85pku5HXBuHGJUaUENXt1Ss GwdfBx/gZZEA8oONqkrxOoJTrABWIAs5k6TTUd+f3Y39rlsyQj076f1sw6Mw9qoC h+JKXDDqw8kGwQHifXdtCrxL9OfV4eq+gYKrqdlyFM08WfKxe0Js8bB5cZ4Bt/GC 2JhQzQ9bMjYJlxSXIXivP/FFunVT5hZ8gsUVAH+/sm8xlQ4sedW7mIBKkjT3tgL0 FvchB3XyoZ6Sr0JKVaMOcQjIsTzOqdgawgArO541ZwUWHdJH+DODr/gBWXSnnzhH ED5DAvRMPdO/t353qS/ihpacTqQ91B4UKxK1pVNC84ch3spCLnQncl7kn7RhcdCc b5g4ZfahRmq79QSoMDvN4+7MtyERLXtSttSWiBzQVVj/jcFNDeGeDjKp6Z55xoso tMZ3yVajl4IbuQS1pfTLjp7WdJ58y5hQ+8O/ebjUYIxOo5kZhRZV/jxqoR7Ga9MG bAQ7BPcTuItpfGqiWcdYU+ZdyyFwvpXov6qNoCYt58nj7s+FAbed7EzRHa2Z3RVG kcqv2iX5EddydHmqKip+QUUR4cPLUXn+kvOHtJEOgAWDURh0DVfhrMD5dX1d+9de BUwZ89gYvxkkErPL1o8OPRxyiucCAwEAAaOBhjCBgzAJBgNVHRMEAjAAMAsGA1Ud DwQEAwIF4DBpBgNVHREEYjBgghN0ZXN0LnBnYmFja3Jlc3Qub3JnghUqLnRlc3Qu cGdiYWNrcmVzdC5vcmeHBH8AAAGCFHRlc3QyLnBnYmFja3Jlc3Qub3JnghYqLnRl c3QyLnBnYmFja3Jlc3Qub3JnMA0GCSqGSIb3DQEBCwUAA4ICAQABqorGy+U2CBBl ei2Q0zTccJVPqz3xL6UpZVh0X/SoZFisZNyLPskxAh070q8C11g4uqyPoXPp2eJt smwop2pY6glzO+7b9kEUo2527s8BJejlIzAe9bQ8eZ1Hbqlh52B+wzEE7Ci22KDC O3RZCya6WiMHXxFCjPR7m4qaoodU4XtRefepg/bs0qUq5rrsHDRfvaitISUOeXnj NSsLyiVLbwkCW3mL7bEFAG1Th8GWa809zpw8fJiUkhavtDe35UesHM5fOZ8oqY28 BIcSc5yVgOxDAHDQI9lf9umAN5ZakT9lo5WdndG9eUZGOK72s8Vy1ReiKH+vX2qw 3cI69akD+UBLqvO9NFMJPurDLdM82B453EaBqDhm1oPPwHsXc8wiNG6jYmIAHlvN qX1qXcdJjp54PSv6RFm/ZxcS6CCRRzPv46Zi86cynY32qmEYU5Et3tGVwx6KywRx HKF206NUzyHYW8cuDywTpQZSYuAHrjcWGzS/Fg1aTIGULRffFLTvmt6URHjpfFwJ bRkMcw+k1xdV01rTA2jnDbFAC5f6V7QOGwcqSzc25cz1PDHWweCw4oDwpAxRFx14 X98jbWjo6YYsc9wWpcQt5NICO5wHoaJfhawf7suJmuluQTzOsH2ZS6O0zVJmbsVs KveXMVBWdJoaJjUqEBy6tJHB5uRxJg== -----END CERTIFICATE----- pgbackrest-release-2.24/test/certificate/pgbackrest-test-ca.crt000066400000000000000000000037041362531507100246510ustar00rootroot00000000000000-----BEGIN CERTIFICATE----- MIIFkDCCA3igAwIBAgIJAKfL57w5QrmFMA0GCSqGSIb3DQEBCwUAMFwxCzAJBgNV BAYTAlVTMQwwCgYDVQQIDANBbGwxDDAKBgNVBAcMA0FsbDETMBEGA1UECgwKcGdC YWNrUmVzdDEcMBoGA1UEAwwTdGVzdC5wZ2JhY2tyZXN0Lm9yZzAgFw0xODExMTky MjI2MjNaGA8yMjkyMDkwMjIyMjYyM1owXDELMAkGA1UEBhMCVVMxDDAKBgNVBAgM A0FsbDEMMAoGA1UEBwwDQWxsMRMwEQYDVQQKDApwZ0JhY2tSZXN0MRwwGgYDVQQD DBN0ZXN0LnBnYmFja3Jlc3Qub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC CgKCAgEA363DCLQblcgOjA3qZAJfxameJrRZFvs2xxGNX6IhpLv1uWSr5V6t47lG IUORf/Jol/lj/Y8jN3BuW3eSnsAjeMTVC1t9kE3fmZ5Rvnyugkl+t1hV2Vgxhuc5 wrn3W2YTjW06miWkuSgyfFC1zxfcCa13Lj/WVfVh/VM17z/TgPCsH+UbAzheRVK7 CLE5P4SdSVmmEeUB6CQaFuKxQ4tuEgR2YBsaI9LblgTsr28nIJLmJugxMcy7KVQm dVhMPb8oX4VgWxUDHUn2oCQakBOgOXio3gcVyUrcz1oA8S6QxOJO5s2R0ArGZRSW BPN5c9rAY5+gE6CJwH5oTU8GgtykQn34F4EpXS6CR+tlFMVNPdYmocV7ybn5zJ3b 6k1DpUF2prEbycImPwsDmvGjSoaO6UfELZuGQt9dh8B/zgzbdWMM6MSyaPSKV4VN yUeM6OI1KwJrTqGK8mJ+fOxgwY2yjsjPE3ZJQ3m2V38I8BdiudfFrFFOQc2en3Na cI2B7VRiC0ldjQG8y6YfikcCeJCRXa7pKdNqRX8OkcfT83NXUn2HvdjGpQyHI0c3 VgV3cm5exULatz6liUjskBbTAzer/39j8xjNkTctNzel7X6eHdFLWgR1qWjx9vAi gYFXErzDO9aQ0MTLHGH81rIzpch8fO5rB5sCM9F2lw352+8CgKsCAwEAAaNTMFEw HQYDVR0OBBYEFGo+OwmNN1QFNDAOYpuySZSYdNZ2MB8GA1UdIwQYMBaAFGo+OwmN N1QFNDAOYpuySZSYdNZ2MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQAD ggIBAL/q0d9FFFWRD6ldCVUcarcZX/mWcchtGGO1xHIesvdAZHd7dZx2ZlJ2OmpN KwC+9+jXv7h6EqeVuxqPYFlXUdHSXNqrZecFmmXwqa8hqn08ZCZqYJ5CVFjhw+jE IMvclt5NpessLVKn6Xs75OogbtN69pJdxYnh28l/yoG1gu+41DtDXZjVeIFXCPo3 oLm+ARwG33z1QD66YBnpRmW57M8j+fHiPFtONqCMSk2dt/PEOYDCPhimA5G1lJzw qyrEiMX9+oyYkfpxmQrGjOVswQvvN/XhSgaMrIoa/cZZwUTe+EtY+jQMXWqk7/F2 ufalTU9x1uZElh94YOsOREq34Ef4lJC/9K0ayfoQY+2qyBPKwGISUUJUY/dPGVd+ cz91fCmy12X3jsw1vmyJ9UU/hC2Nr4LGxDlcRq88/ev7eGAvsOHwgRYJzLfwaJF6 XMeKZfxq1uvFlJyAyYszu9BL5n26eDunBsQbH9R2avE7deVOwxWMUkX2nX7QEENp dGL3q/3ar/uaMFrAkk5JGUpfozsiXs4BLYKcXRKGy9oBoRuR3lGk+t163qBHh/Rw M8+tsCo6j4ReSgq2ew+sHfxj4rQ4Bly+965RRPjZPu20QMlbWzD6kEB+F2II537e R1KzQRet3Mqf+IY98aAWRfRW9sefkeYrD9BP9jhbSaoh7E0n -----END CERTIFICATE----- pgbackrest-release-2.24/test/certificate/pgbackrest-test-ca.key000066400000000000000000000062571362531507100246570ustar00rootroot00000000000000-----BEGIN RSA PRIVATE KEY----- MIIJKgIBAAKCAgEA363DCLQblcgOjA3qZAJfxameJrRZFvs2xxGNX6IhpLv1uWSr 5V6t47lGIUORf/Jol/lj/Y8jN3BuW3eSnsAjeMTVC1t9kE3fmZ5Rvnyugkl+t1hV 2Vgxhuc5wrn3W2YTjW06miWkuSgyfFC1zxfcCa13Lj/WVfVh/VM17z/TgPCsH+Ub AzheRVK7CLE5P4SdSVmmEeUB6CQaFuKxQ4tuEgR2YBsaI9LblgTsr28nIJLmJugx Mcy7KVQmdVhMPb8oX4VgWxUDHUn2oCQakBOgOXio3gcVyUrcz1oA8S6QxOJO5s2R 0ArGZRSWBPN5c9rAY5+gE6CJwH5oTU8GgtykQn34F4EpXS6CR+tlFMVNPdYmocV7 ybn5zJ3b6k1DpUF2prEbycImPwsDmvGjSoaO6UfELZuGQt9dh8B/zgzbdWMM6MSy aPSKV4VNyUeM6OI1KwJrTqGK8mJ+fOxgwY2yjsjPE3ZJQ3m2V38I8BdiudfFrFFO Qc2en3NacI2B7VRiC0ldjQG8y6YfikcCeJCRXa7pKdNqRX8OkcfT83NXUn2HvdjG pQyHI0c3VgV3cm5exULatz6liUjskBbTAzer/39j8xjNkTctNzel7X6eHdFLWgR1 qWjx9vAigYFXErzDO9aQ0MTLHGH81rIzpch8fO5rB5sCM9F2lw352+8CgKsCAwEA AQKCAgEAsZ3glqO2l+zBqHNQYdQEywgSvrdNW1NmvxLwCTXMs2xSBsKrQTs6p+8y gi2Od2Q9rBhsTyd/loFgEJ/VvNvkDv12E0u2XIWJ/gla7gFB7dGAnwS1Px6qTW6F Tlyv0FMxSYeoFkm4EROba14H0QgoQUMOtZoZkC6Hfkq6NF6hi+0RMU6Tca4sJa45 OQDJ7edXoqxelC0eo4EvembOzk0EvafvfAdpbXL9zZXhgLmp/1LHEbQlhF8HbB0X YO0ZtZp668cUqZ741yQphCbHNQtwmtJ2fcBwi2Q4DStyPhJ1APKYJuysUeCMhC2h pxLTqazWQwW5bnx3hnSaTHFpQTcF8w7brT3YTxMAe6Eo2efFDILZYQlTTMz7zM7+ QUlg8utQNB+p5T1qaXk5hcyRVdfUrfx1+ionEL9M/hisNKrQlIsC7AzX+90y1Cng idjwgOTcFRC7CutHFBj6+OpDAizm2eVSpklTDn16hMzwQe5QrMxV2y0SVrQ9+mUI 98VqvUZaE4bm6CMsR4xJpxTDAfN4uck5wNSZ++9vMMcZysfC+pAuD3hOzNCtPKrG v/n5+nDC606oBJ3vY2XKDm1tVmxPiY/QXBvyNbiul8ZR75B1OdnOFpUTGg6rrwbs fAHRrYTjsRlTcVbx4t+HJnJINFj8udJM6f3xk8vOUqBYgOB9TJkCggEBAPBbpyUJ dSY+AOj8124CeEbchuo4EDdHaUaOcW//YHvHGe9o3AyV/AHGGop4w/0Js5X3LGDw AjEsX2TiZi/m4X1H0wltCjlOAbLBEa6BpJ29EcC+S1qkJwTUGlQCahPXBqI3XUXj 7mXjcCZBIFKPWCjKZEs19gtQa3YAG2+eIU17QVTlQNzD5sIXbHIKMTr4Pn6btAvr B2gqsKbXkn3ix/9pR+MKCIdOMOvjecIR+nMEwtMVRCFc76iI7QyEIAPfJzXygH43 nuZAFP1G+CxO2yblfOqnAm9szIeBxiDTqX8YWSt6Z9hQt+6TSCkiBmunkDdFtdaJ mSIJMbPazpmZ8j8CggEBAO48O9C6ArAaIuyGM77YqiP/VCginOdsnr3J9LtGG2F7 Jz6lf+a/VEyiHmW5YIVTnYN2TkcSGpMUJGtTRtIcvH4mSvkhNeBllfrnQF+weU3x kZxOffwa6pe4uuODuvohY+9MU66meSg5RVXumF71/NH6e17p1dA+Pfh8aeTANog1 9EKatQBs63C5ho4ACGBIwrK6QLbSZiEvd34X+Jrp5Y5arGnjNjVkuJDhfsPx8HMJ 8b4xCT5evqSCXvdNMO1qnnM8r0pd5hovFUk5MbUpdHFdcezpSL0dGz6nnT7UBTTJ joK1Raf2XzCu7CpSZnxkmIDnMEDwVDdCtHlbiZZy/pUCggEBALLARr7ZmMEXDZA4 MXLD7XUtnjxj81NZDWcGmkBjmPqUqKoOvs+xX1hmXuiqRX9SjrcxulRhShAN4ufh I4PuXbXRC5aP/DF/3O12flLcYXNZ3/EK1HmVaNtDbk0Z+o/Es09Cg2Bt0ab+jTI1 7vbXWgYD9rCkcdYaOcDo9X5+CGBaEM01LZbBLkUcLG9nOxOS+M8ptq3CXaDPVs7N tUlftcMyJd8oYA1YTjOv2aZFvo95c/aNczyopCcfpcNQI4sdk0igj4TOkqLD95gh BoHVJ1B3DP5ps/rv2+/OyG0zXHODxRT7lG0gIpoP+HN2tXWsiSlB86iYbkUMt2T9 jfZXsfsCggEBAIpcNSkePt1j8JCJyJe4YegSLCA7KgFGFlOHbTkumExfKAW8PLIY wK7ZIOpXZXVJgJuPJBsmqoRtGFG0xdbVlat2NejGnvG6TgawM7TfWzQnbjfnZkf6 ofCH+xKTuQ34QoACRj+Ss57m1Bv6PEg6eSDCZtBS4jjVTUx5hU6zS3iETV45V5Ht sDeBqGHkJvk0iM8gWOFVBLeVR8LVzS67VPT+OFAvA5ay7nZGYEcQxmMpjVq2Q/YT NIl6pgjereHVID0xK2T3b+IZIjWqn/HlJ5mHedjsC7C5rM8QrcSFgpiLztaezNul vNcbYFGcFaV9Dw0eN+ofKeoGNaadwSS9mJkCggEAZz41LQSJYxF8nMc1Cx+ROC59 7InZLZBpYFgvkJBMgpabRW3P33SjrF1vOOb8QKHEawmGVICg6y6fDWdUJkuL9PJK KUhM6f6+RrOAmTLEX0nBc/Qu7vn5xWdfU4IaGYyon+J290GlzZv+C31wQyhAfMc4 LffXr9aXDNXF9C6RJiDP07pcgzu295B00KqiRaim8ZG1Ab+FOg+ZrFbvYxE1DdNC UX5iVgVo1T8sOy/An1ACNy5xzCkiEUk3stCKMMCnUiw3Y0fHvxFc9se786JVwejY Pecz4yaqRJDn97WrFvqI/Nwi1W/pOtaOJfsLnsO6S/uZTAW+vXwi9l82ETNjbw== -----END RSA PRIVATE KEY----- pgbackrest-release-2.24/test/certificate/pgbackrest-test.cnf000066400000000000000000000004501362531507100242410ustar00rootroot00000000000000[req] default_bits = 4096 prompt = no default_md = sha256 req_extensions = v3_req distinguished_name = dn [ dn ] C=US ST=All L=All O=pgBackRest OU=Unit Testing Domain CN = *.test.pgbackrest.org [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment pgbackrest-release-2.24/test/certificate/pgbackrest-test.crt000066400000000000000000000036441362531507100242730ustar00rootroot00000000000000-----BEGIN CERTIFICATE----- MIIFdzCCA1+gAwIBAgIJAN+gSjwW7yR/MA0GCSqGSIb3DQEBCwUAMFwxCzAJBgNV BAYTAlVTMQwwCgYDVQQIDANBbGwxDDAKBgNVBAcMA0FsbDETMBEGA1UECgwKcGdC YWNrUmVzdDEcMBoGA1UEAwwTdGVzdC5wZ2JhY2tyZXN0Lm9yZzAgFw0xODExMjAx MzU2NDJaGA8yMjkyMDkwMzEzNTY0MlowfDELMAkGA1UEBhMCVVMxDDAKBgNVBAgM A0FsbDEMMAoGA1UEBwwDQWxsMRMwEQYDVQQKDApwZ0JhY2tSZXN0MRwwGgYDVQQL DBNVbml0IFRlc3RpbmcgRG9tYWluMR4wHAYDVQQDDBUqLnRlc3QucGdiYWNrcmVz dC5vcmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDDM1kNf9WFMDqU AtcNngA4e/g5AfnBNmKlr3td1OsjZMh8wYR98ua/nDM3zmmS7kdcG4cYlRpQQ1e3 VKwbB18HH+BlkQDyg42qSvE6glOsAFYgCzmTpNNR35/djf2uWzJCPTvp/WzDozD2 qgKH4kpcMOrDyQbBAeJ9d20KvEv059Xh6r6Bgqup2XIUzTxZ8rF7QmzxsHlxngG3 8YLYmFDND1syNgmXFJcheK8/8UW6dVPmFnyCxRUAf7+ybzGVDix51buYgEqSNPe2 AvQW9yEHdfKhnpKvQkpVow5xCMixPM6p2BrCACs7njVnBRYd0kf4M4Ov+AFZdKef OEcQPkMC9Ew907+3fnepL+KGlpxOpD3UHhQrErWlU0LzhyHeykIudCdyXuSftGFx 0JxvmDhl9qFGarv1BKgwO83j7sy3IREte1K21JaIHNBVWP+NwU0N4Z4OMqnpnnnG iyi0xnfJVqOXghu5BLWl9MuOntZ0nnzLmFD7w795uNRgjE6jmRmFFlX+PGqhHsZr 0wZsBDsE9xO4i2l8aqJZx1hT5l3LIXC+lei/qo2gJi3nyePuz4UBt53sTNEdrZnd FUaRyq/aJfkR13J0eaoqKn5BRRHhw8tRef6S84e0kQ6ABYNRGHQNV+GswPl1fV37 114FTBnz2Bi/GSQSs8vWjw49HHKK5wIDAQABoxowGDAJBgNVHRMEAjAAMAsGA1Ud DwQEAwIF4DANBgkqhkiG9w0BAQsFAAOCAgEAsjmEXx1dc2bbQHUOZTqfTNZ38/ux O4V8uXGcKER7bR7TKP6NYwYmgUqcwA50FJkBQ8wULF2C/tLsp1AyAu3wlhn+yVsP zeZL+p/fOzXDhTyz0Ggx19tyol4o2q+bxyd+KS8rrcSvzC9Jz7Wjuhs9/M5r2gWr WJydwYbGo4MbAcdPWWJdYRf93vlUqG3Qh3oBnwDntGr0xrBPRBbfcIg+f1c/fnAb S94rkrmRCtCGqf09IKjVgnlNhXERM2YLoiLcMIwJCLPU8TWoar+paDBgevqIzMvD k+WYc/NuHpwkDv2e7iVuWarB5r7BAB0olu4qOC8jyGeD8vrJgLah8qyW1slOAH9h 7h0vGQ6+Gjp14ZVWQUwjvnINyX2xUc3gkkQvaons+Ny7xtyu3tOy6v4Ukl/ryT87 IbgkoCj8T+9whp4PqHBDNUmEicJs18q/VRYa4yTE5hh2ecKaveb++YtdZxwJxZR4 Le1+GHj4wQJzQR+Hv42G7C444FIx0G266RIMRoNgbroRPN5mNwdiAg2oejB6qWlX IOi4+eWbpQk2AM0tvB+eSY/JxHn+5XiVyXiN4hO7ndsAwT7Jj3VNKEjRZyZhTwM9 YO7FOaKbDLnn4IswCgw2iz916fghgBfKLLcjpe/Y9kJvY1g/Fd77zXMHMPs1Zbv3 4MleZ146f1S0En0= -----END CERTIFICATE----- pgbackrest-release-2.24/test/certificate/pgbackrest-test.key000066400000000000000000000062531362531507100242720ustar00rootroot00000000000000-----BEGIN RSA PRIVATE KEY----- MIIJKAIBAAKCAgEAwzNZDX/VhTA6lALXDZ4AOHv4OQH5wTZipa97XdTrI2TIfMGE ffLmv5wzN85pku5HXBuHGJUaUENXt1SsGwdfBx/gZZEA8oONqkrxOoJTrABWIAs5 k6TTUd+f3Y39rlsyQj076f1sw6Mw9qoCh+JKXDDqw8kGwQHifXdtCrxL9OfV4eq+ gYKrqdlyFM08WfKxe0Js8bB5cZ4Bt/GC2JhQzQ9bMjYJlxSXIXivP/FFunVT5hZ8 gsUVAH+/sm8xlQ4sedW7mIBKkjT3tgL0FvchB3XyoZ6Sr0JKVaMOcQjIsTzOqdga wgArO541ZwUWHdJH+DODr/gBWXSnnzhHED5DAvRMPdO/t353qS/ihpacTqQ91B4U KxK1pVNC84ch3spCLnQncl7kn7RhcdCcb5g4ZfahRmq79QSoMDvN4+7MtyERLXtS ttSWiBzQVVj/jcFNDeGeDjKp6Z55xosotMZ3yVajl4IbuQS1pfTLjp7WdJ58y5hQ +8O/ebjUYIxOo5kZhRZV/jxqoR7Ga9MGbAQ7BPcTuItpfGqiWcdYU+ZdyyFwvpXo v6qNoCYt58nj7s+FAbed7EzRHa2Z3RVGkcqv2iX5EddydHmqKip+QUUR4cPLUXn+ kvOHtJEOgAWDURh0DVfhrMD5dX1d+9deBUwZ89gYvxkkErPL1o8OPRxyiucCAwEA AQKCAgA5JquIHElzuW8tLrewMPZ3kzRV3JI3U6kGQZ6pFlHSBwv8Gtyj055js2P7 jt+yOTmDajvfoqgVn+Hqt0u8jifwehDFK/NPDd1IYrDGJKpCzcZpk1/ELpoAeqzf vVbs2Z6ZbjxAggZ6MSmAzr328vY6j8fsksr7b4XUnka6we6rQcWJY6VrXcrM6/FO zdhBraDxKb2j9btY3J48MOXSbKYbo8dbqB6esVSeZCtLWWTE9t0dnK/PycwgXUbP A2dM8N1svnsyZz1uGTv9elfk8W4mNQ5Y64ie75W8BQWRarT3z4niiHctHceKqQOR qheTm6GetdZ0ivQ6MMFzCJMl2lTb4LKPAAP0lsTK+tjbw29D+LKcDY71SYY18gQW AygQhlId5Ms7M9vgp6FPKF8fROvPGtOoMPLv+bnHHf3P8fVHT/n6pywtklC0heY6 2jkYatvihy5WU7OIvfKdQ7dZeD/Y+eYRsXpcTgzVe3DDDVgDB6Wjhk5b+q9KtHsN XToXH8MtV4YLwCxcYI6TRXjqq6ma72AvTEpYomDo3WcvkoyOF431WGtwl/Gqu61F KEQ1QMVwQAPlg9BGSkCAVWf9Ii4PK1V9p9RS50oj9xzKeDqW/2lVLneRElM+UXUV +q/gw0Uo6zATr2fJa6J70MqjYpAvcmbSwbp3tmaN7l3MduQ54QKCAQEA/JEmuH9N 8M16ea/wt/ZbKOflaS8KJfVAmPGJT2JFRzPph7q52Sg2ekDBkKkL3dj/kjjXynk+ NGNWRSfgUwZjQ7Bz3NfTFAW38AmYCommwZPALFM6mXXtTfZeWkkpptHRWJr6uSoR fQlWHqraz7WZrKB2O9o9lN8Lsp5oqYzJ3CvFnImfjn7mR0acG8QIlbbLv5UydAup tGd50Je4JTv2BOxKDhF7k6u6luPb9x3Bofjqr5lPZGA8YAwK+8A0JQGkz70k3/2a iEmlIYX35qWctYv/Yu9kMIkvGqpUt/+kwgb+HnH960l6olESZhs1j32xnl0uMQcB /dKPEudUIIALYwKCAQEAxdqUpNhJLUQfPXv7sH+/nB8rD+X/dRww9YcnoFHGd93q iO8mJlQgLLTZvyWBc+M3IKYVcTPrUUlFBSbeajvuSoyBCPZRHuM6ErJX51tYB7mN R8W1vUEN9YgdIFJEGREPLvvPVEieSsQ589KzTPq/F4dU1AiQRhnVc7IgwsxAmrCg 3FJGy3wGqeJ9GoTT+W0iaoZHl7ECaXfUZ+OanE60jma3y1baKivGG9tn6erECFCS jklh1b0c7uXJshiOgIxNcKRMNWOGKY7nvydVvH6IDrkmHlxNvhSNnkOffC93yGRA XtVBOfhw22zfXaSGBXYucgEWXpI9QqvkozhSv2uTrQKCAQEAz1yhDNNAe5dImgYQ vgke+SvDl6NOUrHUUn3kfW+yb244qv5svdUdPSxTf+C65G7YDgZrbUoz/zEb0HWX 4LKa5yVFSylLnOHBDevij6xKZB5ZpkrDDuHabqr69mehMdyMY5ICjenzJ9R1h4JB Wk3AGRI5YJSjAMpLwV/7kFEOHp01hnsbrBOWHyji3I0Le1f0Wpw1Kz+0GnDme5NF VhSvvYT+nCRQcIKLFH2JyI7+vmwuyvM1UrUMfNMGZYF9jnCWDxU85EZEDOdiE275 hL2uNwP1LxZbDNpk+SClo9fZPpAdLYPrtLTEYeXsFDb8t428OchJN2mIggvQ+fVB hdl6/wKCAQABn8u8lrHzFy4SeSQVzNar122pEcBJG9QjD9r5a/JvJXk5ao0rn2Es PMfU09/+LY1UTUi7xytVXX6djjYhNSC9p+2fPzZnRIJDiQdDtPJCDfnk7vCQ/ym4 LEfg7gv1ELjJL/QBwx7ZikbXg5FJPn23GbtOikt0591it8GhF8AoBO8tH9fI79m2 J0/TmeeLkqPHsBaCXkegygUKXUn1oofE637ywmHEGtvjeqedufml/9NUK7IL6SOF qok/VwhEceJo3FBr18dQLAYnAZGonHlNdaOkeCmDN/P5qqByiok3Met9W87PRQTY KEqlICahgNjcwrmGSTkLhRG5bUrwm1d5AoIBAAxE6SBTn9gmqJhJWRD+8eQGvnAu CSgg/YTF3Hp2HTFCTa1tRa/b+ZXsj7hjhl6txB0FpulqXo+LSq2cKqzgKguz8XVQ rdDLsFdMWZHoN3qLXR6gKGosV0QGCCbiBpSpcrgvtm5sV6MyyExtbVb8a86QC0Gd HIDUfQfyaymM35OoVXRvZtnCb6MDwZryoK6F4HfB9Gme9CvdKvdzAOSjGhvnCKHU O31qnBui9odatFyoFc1/9xDOe2vgPsPLd929xFCz9vA7j1tf7TzLmhY38ynhWaor MyjIeM1oEZzhIdMSxt3kCp8vDykUP1caXc92g7jyyVwC1l03HzvXNHkTFSQ= -----END RSA PRIVATE KEY----- pgbackrest-release-2.24/test/code-count/000077500000000000000000000000001362531507100202265ustar00rootroot00000000000000pgbackrest-release-2.24/test/code-count/code.def000066400000000000000000000003121362531507100216140ustar00rootroot00000000000000XS filter remove_matches ^\s*// filter call_regexp_common C filter remove_inline //.*$ filter remove_inline #.*$ extension xs 3rd_gen_scale 0.77 end_of_line_continuation \\$ pgbackrest-release-2.24/test/code-count/file-type.yaml000066400000000000000000000725761362531507100230310ustar00rootroot00000000000000# File types for source files in the project build/error.yaml: class: build type: yaml build/lib/pgBackRestBuild/Build.pm: class: build type: perl build/lib/pgBackRestBuild/Build/Common.pm: class: build type: perl build/lib/pgBackRestBuild/Config/Build.pm: class: build type: perl build/lib/pgBackRestBuild/Config/BuildDefine.pm: class: build type: perl build/lib/pgBackRestBuild/Config/BuildParse.pm: class: build type: perl build/lib/pgBackRestBuild/Config/Data.pm: class: build type: perl build/lib/pgBackRestBuild/Error/Build.pm: class: build type: perl build/lib/pgBackRestBuild/Error/Data.pm: class: build type: perl doc/doc.pl: class: doc/core type: perl doc/lib/BackRestDoc/Common/Doc.pm: class: doc/core type: perl doc/lib/BackRestDoc/Common/DocConfig.pm: class: doc/core type: perl doc/lib/BackRestDoc/Common/DocExecute.pm: class: doc/core type: perl doc/lib/BackRestDoc/Common/DocManifest.pm: class: doc/core type: perl doc/lib/BackRestDoc/Common/DocRender.pm: class: doc/core type: perl doc/lib/BackRestDoc/Custom/DocCustomRelease.pm: class: doc/core type: perl doc/lib/BackRestDoc/Html/DocHtmlBuilder.pm: class: doc/core type: perl doc/lib/BackRestDoc/Html/DocHtmlElement.pm: class: doc/core type: perl doc/lib/BackRestDoc/Html/DocHtmlPage.pm: class: doc/core type: perl doc/lib/BackRestDoc/Html/DocHtmlSite.pm: class: doc/core type: perl doc/lib/BackRestDoc/Latex/DocLatex.pm: class: doc/core type: perl doc/lib/BackRestDoc/Latex/DocLatexSection.pm: class: doc/core type: perl doc/lib/BackRestDoc/Markdown/DocMarkdown.pm: class: doc/core type: perl doc/lib/BackRestDoc/Markdown/DocMarkdownRender.pm: class: doc/core type: perl doc/manifest.xml: class: doc/source type: xml doc/release.pl: class: doc/core type: perl doc/resource/html/default.css: class: doc/core type: css doc/resource/latex/preamble.tex: class: doc/core type: latex doc/xml/auto/metric-coverage-report.auto.xml: class: doc/source type: xml doc/xml/coding.xml: class: doc/source type: xml doc/xml/contributing.xml: class: doc/source type: xml doc/xml/documentation.xml: class: doc/source type: xml doc/xml/dtd/doc.dtd: class: doc/source type: dtd doc/xml/dtd/manifest.dtd: class: doc/source type: dtd doc/xml/faq.xml: class: doc/source type: xml doc/xml/index.xml: class: doc/source type: xml doc/xml/metric.xml: class: doc/source type: xml doc/xml/reference.xml: class: doc/source type: xml doc/xml/release.xml: class: doc/source type: xml doc/xml/test.xml: class: doc/source type: xml doc/xml/user-guide-index.xml: class: doc/source type: xml doc/xml/user-guide.xml: class: doc/source type: xml lib/pgBackRest/Archive/Common.pm: class: test/harness type: perl lib/pgBackRest/Archive/Info.pm: class: test/harness type: perl lib/pgBackRest/Backup/Common.pm: class: test/harness type: perl lib/pgBackRest/Backup/Info.pm: class: test/harness type: perl lib/pgBackRest/Common/Exception.pm: class: test/harness type: perl lib/pgBackRest/Common/ExceptionAuto.pm: class: test/harness/auto type: perl lib/pgBackRest/Common/Ini.pm: class: test/harness type: perl lib/pgBackRest/Common/Io/Base.pm: class: test/harness type: perl lib/pgBackRest/Common/Io/Buffered.pm: class: test/harness type: perl lib/pgBackRest/Common/Io/Filter.pm: class: test/harness type: perl lib/pgBackRest/Common/Io/Handle.pm: class: test/harness type: perl lib/pgBackRest/Common/Log.pm: class: test/harness type: perl lib/pgBackRest/Common/String.pm: class: test/harness type: perl lib/pgBackRest/Common/Wait.pm: class: test/harness type: perl lib/pgBackRest/Config/Config.pm: class: test/harness type: perl lib/pgBackRest/Db.pm: class: test/harness type: perl lib/pgBackRest/DbVersion.pm: class: test/harness type: perl lib/pgBackRest/InfoCommon.pm: class: test/harness type: perl lib/pgBackRest/LibC.pm: class: test/harness type: perl lib/pgBackRest/LibCAuto.pm: class: test/harness/auto type: perl lib/pgBackRest/Manifest.pm: class: test/harness type: perl lib/pgBackRest/Protocol/Storage/Helper.pm: class: test/harness type: perl lib/pgBackRest/Storage/Base.pm: class: test/harness type: perl lib/pgBackRest/Storage/Helper.pm: class: test/harness type: perl lib/pgBackRest/Storage/Storage.pm: class: test/harness type: perl lib/pgBackRest/Storage/StorageRead.pm: class: test/harness type: perl lib/pgBackRest/Storage/StorageWrite.pm: class: test/harness type: perl lib/pgBackRest/Version.pm: class: test/harness type: perl libc/LibC.h: class: test/harness type: c/h libc/LibC.xs: class: test/harness type: xs libc/Makefile.PL: class: build type: perl libc/build/lib/pgBackRestLibC/Build.pm: class: build type: perl libc/xs/config/config.xs: class: test/harness type: xs libc/xs/config/configTest.xs: class: test/harness type: xs libc/xs/config/configTest.xsh: class: test/harness type: c/h libc/xs/config/define.xs: class: test/harness type: xs libc/xs/crypto/hash.xs: class: test/harness type: xs libc/xs/crypto/hash.xsh: class: test/harness type: c/h libc/xs/postgres/client.xs: class: test/harness type: xs libc/xs/postgres/client.xsh: class: test/harness type: c/h libc/xs/postgres/pageChecksum.xs: class: test/harness type: xs libc/xs/storage/storage.xs: class: test/harness type: xs libc/xs/storage/storage.xsh: class: test/harness type: c/h libc/xs/storage/storageRead.xs: class: test/harness type: xs libc/xs/storage/storageRead.xsh: class: test/harness type: c/h libc/xs/storage/storageWrite.xs: class: test/harness type: xs libc/xs/storage/storageWrite.xsh: class: test/harness type: c/h src/Makefile.in: class: build type: make src/build.auto.h.in: class: core type: c/h src/command/archive/common.c: class: core type: c src/command/archive/common.h: class: core type: c/h src/command/archive/get/file.c: class: core type: c src/command/archive/get/file.h: class: core type: c/h src/command/archive/get/get.c: class: core type: c src/command/archive/get/get.h: class: core type: c/h src/command/archive/get/protocol.c: class: core type: c src/command/archive/get/protocol.h: class: core type: c/h src/command/archive/push/file.c: class: core type: c src/command/archive/push/file.h: class: core type: c/h src/command/archive/push/protocol.c: class: core type: c src/command/archive/push/protocol.h: class: core type: c/h src/command/archive/push/push.c: class: core type: c src/command/archive/push/push.h: class: core type: c/h src/command/backup/backup.c: class: core type: c src/command/backup/backup.h: class: core type: c/h src/command/backup/common.c: class: core type: c src/command/backup/common.h: class: core type: c/h src/command/backup/file.c: class: core type: c src/command/backup/file.h: class: core type: c/h src/command/backup/pageChecksum.c: class: core type: c src/command/backup/pageChecksum.h: class: core type: c/h src/command/backup/protocol.c: class: core type: c src/command/backup/protocol.h: class: core type: c/h src/command/check/check.c: class: core type: c src/command/check/check.h: class: core type: c/h src/command/check/common.c: class: core type: c src/command/check/common.h: class: core type: c/h src/command/command.c: class: core type: c src/command/command.h: class: core type: c/h src/command/control/common.c: class: core type: c src/command/control/common.h: class: core type: c/h src/command/control/start.c: class: core type: c src/command/control/start.h: class: core type: c/h src/command/control/stop.c: class: core type: c src/command/control/stop.h: class: core type: c/h src/command/expire/expire.c: class: core type: c src/command/expire/expire.h: class: core type: c/h src/command/help/help.c: class: core type: c src/command/help/help.h: class: core type: c/h src/command/info/info.c: class: core type: c src/command/info/info.h: class: core type: c/h src/command/local/local.c: class: core type: c src/command/local/local.h: class: core type: c/h src/command/remote/remote.c: class: core type: c src/command/remote/remote.h: class: core type: c/h src/command/restore/file.c: class: core type: c src/command/restore/file.h: class: core type: c/h src/command/restore/protocol.c: class: core type: c src/command/restore/protocol.h: class: core type: c/h src/command/restore/restore.c: class: core type: c src/command/restore/restore.h: class: core type: c/h src/command/stanza/common.c: class: core type: c src/command/stanza/common.h: class: core type: c/h src/command/stanza/create.c: class: core type: c src/command/stanza/create.h: class: core type: c/h src/command/stanza/delete.c: class: core type: c src/command/stanza/delete.h: class: core type: c/h src/command/stanza/upgrade.c: class: core type: c src/command/stanza/upgrade.h: class: core type: c/h src/command/storage/list.c: class: core type: c src/command/storage/list.h: class: core type: c/h src/common/assert.h: class: core type: c/h src/common/compress/gzip/common.c: class: core type: c src/common/compress/gzip/common.h: class: core type: c/h src/common/compress/gzip/compress.c: class: core type: c src/common/compress/gzip/compress.h: class: core type: c/h src/common/compress/gzip/decompress.c: class: core type: c src/common/compress/gzip/decompress.h: class: core type: c/h src/common/crypto/cipherBlock.c: class: core type: c src/common/crypto/cipherBlock.h: class: core type: c/h src/common/crypto/common.c: class: core type: c src/common/crypto/common.h: class: core type: c/h src/common/crypto/hash.c: class: core type: c src/common/crypto/hash.h: class: core type: c/h src/common/debug.c: class: core type: c src/common/debug.h: class: core type: c/h src/common/encode.c: class: core type: c src/common/encode.h: class: core type: c/h src/common/encode/base64.c: class: core type: c src/common/encode/base64.h: class: core type: c/h src/common/error.auto.c: class: core/auto type: c src/common/error.auto.h: class: core/auto type: c/h src/common/error.c: class: core type: c src/common/error.h: class: core type: c/h src/common/exec.c: class: core type: c src/common/exec.h: class: core type: c/h src/common/exit.c: class: core type: c src/common/exit.h: class: core type: c/h src/common/fork.c: class: core type: c src/common/fork.h: class: core type: c/h src/common/ini.c: class: core type: c src/common/ini.h: class: core type: c/h src/common/io/bufferRead.c: class: core type: c src/common/io/bufferRead.h: class: core type: c/h src/common/io/bufferWrite.c: class: core type: c src/common/io/bufferWrite.h: class: core type: c/h src/common/io/filter/buffer.c: class: core type: c src/common/io/filter/buffer.h: class: core type: c/h src/common/io/filter/filter.c: class: core type: c src/common/io/filter/filter.h: class: core type: c/h src/common/io/filter/filter.intern.h: class: core type: c/h src/common/io/filter/group.c: class: core type: c src/common/io/filter/group.h: class: core type: c/h src/common/io/filter/sink.c: class: core type: c src/common/io/filter/sink.h: class: core type: c/h src/common/io/filter/size.c: class: core type: c src/common/io/filter/size.h: class: core type: c/h src/common/io/handleRead.c: class: core type: c src/common/io/handleRead.h: class: core type: c/h src/common/io/handleWrite.c: class: core type: c src/common/io/handleWrite.h: class: core type: c/h src/common/io/http/cache.c: class: core type: c src/common/io/http/cache.h: class: core type: c/h src/common/io/http/client.c: class: core type: c src/common/io/http/client.h: class: core type: c/h src/common/io/http/common.c: class: core type: c src/common/io/http/common.h: class: core type: c/h src/common/io/http/header.c: class: core type: c src/common/io/http/header.h: class: core type: c/h src/common/io/http/query.c: class: core type: c src/common/io/http/query.h: class: core type: c/h src/common/io/io.c: class: core type: c src/common/io/io.h: class: core type: c/h src/common/io/read.c: class: core type: c src/common/io/read.h: class: core type: c/h src/common/io/read.intern.h: class: core type: c/h src/common/io/tls/client.c: class: core type: c src/common/io/tls/client.h: class: core type: c/h src/common/io/write.c: class: core type: c src/common/io/write.h: class: core type: c/h src/common/io/write.intern.h: class: core type: c/h src/common/lock.c: class: core type: c src/common/lock.h: class: core type: c/h src/common/log.c: class: core type: c src/common/log.h: class: core type: c/h src/common/logLevel.h: class: core type: c/h src/common/macro.h: class: core type: c/h src/common/memContext.c: class: core type: c src/common/memContext.h: class: core type: c/h src/common/object.h: class: core type: c/h src/common/regExp.c: class: core type: c src/common/regExp.h: class: core type: c/h src/common/stackTrace.c: class: core type: c src/common/stackTrace.h: class: core type: c/h src/common/time.c: class: core type: c src/common/time.h: class: core type: c/h src/common/type/buffer.c: class: core type: c src/common/type/buffer.h: class: core type: c/h src/common/type/convert.c: class: core type: c src/common/type/convert.h: class: core type: c/h src/common/type/json.c: class: core type: c src/common/type/json.h: class: core type: c/h src/common/type/keyValue.c: class: core type: c src/common/type/keyValue.h: class: core type: c/h src/common/type/list.c: class: core type: c src/common/type/list.h: class: core type: c/h src/common/type/mcv.c: class: core type: c src/common/type/mcv.h: class: core type: c/h src/common/type/param.h: class: core type: c/h src/common/type/string.c: class: core type: c src/common/type/string.h: class: core type: c/h src/common/type/stringList.c: class: core type: c src/common/type/stringList.h: class: core type: c/h src/common/type/stringz.h: class: core type: c/h src/common/type/variant.c: class: core type: c src/common/type/variant.h: class: core type: c/h src/common/type/variantList.c: class: core type: c src/common/type/variantList.h: class: core type: c/h src/common/type/xml.c: class: core type: c src/common/type/xml.h: class: core type: c/h src/common/user.c: class: core type: c src/common/user.h: class: core type: c/h src/common/wait.c: class: core type: c src/common/wait.h: class: core type: c/h src/config/config.auto.c: class: core/auto type: c src/config/config.auto.h: class: core/auto type: c/h src/config/config.c: class: core type: c src/config/config.h: class: core type: c/h src/config/define.auto.c: class: core/auto type: c src/config/define.auto.h: class: core/auto type: c/h src/config/define.c: class: core type: c src/config/define.h: class: core type: c/h src/config/exec.c: class: core type: c src/config/exec.h: class: core type: c/h src/config/load.c: class: core type: c src/config/load.h: class: core type: c/h src/config/parse.auto.c: class: core/auto type: c src/config/parse.c: class: core type: c src/config/parse.h: class: core type: c/h src/config/protocol.c: class: core type: c src/config/protocol.h: class: core type: c/h src/configure: class: build type: make src/configure.ac: class: build type: make src/db/db.c: class: core type: c src/db/db.h: class: core type: c/h src/db/helper.c: class: core type: c src/db/helper.h: class: core type: c/h src/db/protocol.c: class: core type: c src/db/protocol.h: class: core type: c/h src/info/info.c: class: core type: c src/info/info.h: class: core type: c/h src/info/infoArchive.c: class: core type: c src/info/infoArchive.h: class: core type: c/h src/info/infoBackup.c: class: core type: c src/info/infoBackup.h: class: core type: c/h src/info/infoPg.c: class: core type: c src/info/infoPg.h: class: core type: c/h src/info/manifest.c: class: core type: c src/info/manifest.h: class: core type: c/h src/main.c: class: core type: c src/postgres/client.c: class: core type: c src/postgres/client.h: class: core type: c/h src/postgres/interface.c: class: core type: c src/postgres/interface.h: class: core type: c/h src/postgres/interface/v083.c: class: core type: c src/postgres/interface/v084.c: class: core type: c src/postgres/interface/v090.c: class: core type: c src/postgres/interface/v091.c: class: core type: c src/postgres/interface/v092.c: class: core type: c src/postgres/interface/v093.c: class: core type: c src/postgres/interface/v094.c: class: core type: c src/postgres/interface/v095.c: class: core type: c src/postgres/interface/v096.c: class: core type: c src/postgres/interface/v100.c: class: core type: c src/postgres/interface/v110.c: class: core type: c src/postgres/interface/v120.c: class: core type: c src/postgres/interface/version.auto.h: class: core/auto type: c/h src/postgres/interface/version.h: class: core type: c/h src/postgres/interface/version.intern.h: class: core type: c/h src/postgres/pageChecksum.c: class: core type: c src/postgres/pageChecksum.h: class: core type: c/h src/postgres/version.h: class: core type: c/h src/protocol/client.c: class: core type: c src/protocol/client.h: class: core type: c/h src/protocol/command.c: class: core type: c src/protocol/command.h: class: core type: c/h src/protocol/helper.c: class: core type: c src/protocol/helper.h: class: core type: c/h src/protocol/parallel.c: class: core type: c src/protocol/parallel.h: class: core type: c/h src/protocol/parallelJob.c: class: core type: c src/protocol/parallelJob.h: class: core type: c/h src/protocol/server.c: class: core type: c src/protocol/server.h: class: core type: c/h src/storage/cifs/storage.c: class: core type: c src/storage/cifs/storage.h: class: core type: c/h src/storage/helper.c: class: core type: c src/storage/helper.h: class: core type: c/h src/storage/info.h: class: core type: c/h src/storage/posix/read.c: class: core type: c src/storage/posix/read.h: class: core type: c/h src/storage/posix/storage.c: class: core type: c src/storage/posix/storage.h: class: core type: c/h src/storage/posix/storage.intern.h: class: core type: c/h src/storage/posix/write.c: class: core type: c src/storage/posix/write.h: class: core type: c/h src/storage/read.c: class: core type: c src/storage/read.h: class: core type: c/h src/storage/read.intern.h: class: core type: c/h src/storage/remote/protocol.c: class: core type: c src/storage/remote/protocol.h: class: core type: c/h src/storage/remote/read.c: class: core type: c src/storage/remote/read.h: class: core type: c/h src/storage/remote/storage.c: class: core type: c src/storage/remote/storage.h: class: core type: c/h src/storage/remote/storage.intern.h: class: core type: c/h src/storage/remote/write.c: class: core type: c src/storage/remote/write.h: class: core type: c/h src/storage/s3/read.c: class: core type: c src/storage/s3/read.h: class: core type: c/h src/storage/s3/storage.c: class: core type: c src/storage/s3/storage.h: class: core type: c/h src/storage/s3/storage.intern.h: class: core type: c/h src/storage/s3/write.c: class: core type: c src/storage/s3/write.h: class: core type: c/h src/storage/storage.c: class: core type: c src/storage/storage.h: class: core type: c/h src/storage/storage.intern.h: class: core type: c/h src/storage/write.c: class: core type: c src/storage/write.h: class: core type: c/h src/storage/write.intern.h: class: core type: c/h src/version.h: class: core type: c/h test/container.yaml: class: test/harness type: yaml test/define.yaml: class: test/harness type: yaml test/lib/pgBackRestTest/Common/BuildTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Common/CodeCountTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Common/ContainerTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Common/CoverageTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Common/DefineTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Common/ExecuteTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Common/FileTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Common/HostGroupTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Common/HostTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Common/JobTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Common/ListTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Common/LogTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Common/RunTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Common/Storage.pm: class: test/harness type: perl test/lib/pgBackRestTest/Common/StoragePosix.pm: class: test/harness type: perl test/lib/pgBackRestTest/Common/StoragePosixRead.pm: class: test/harness type: perl test/lib/pgBackRestTest/Common/StoragePosixWrite.pm: class: test/harness type: perl test/lib/pgBackRestTest/Common/VmTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Env/ConfigEnvTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Env/ExpireEnvTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Env/Host/HostBackupTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Env/Host/HostBaseTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Env/Host/HostDbCommonTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Env/Host/HostDbSyntheticTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Env/Host/HostDbTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Env/Host/HostS3Test.pm: class: test/harness type: perl test/lib/pgBackRestTest/Env/HostEnvTest.pm: class: test/harness type: perl test/lib/pgBackRestTest/Module/Mock/MockAllTest.pm: class: test/module type: perl test/lib/pgBackRestTest/Module/Mock/MockArchiveStopTest.pm: class: test/module type: perl test/lib/pgBackRestTest/Module/Mock/MockArchiveTest.pm: class: test/module type: perl test/lib/pgBackRestTest/Module/Mock/MockExpireTest.pm: class: test/module type: perl test/lib/pgBackRestTest/Module/Mock/MockStanzaTest.pm: class: test/module type: perl test/lib/pgBackRestTest/Module/Performance/PerformanceArchivePerlTest.pm: class: test/module type: perl test/lib/pgBackRestTest/Module/Real/RealAllTest.pm: class: test/module type: perl test/src/common/harnessConfig.c: class: test/harness type: c test/src/common/harnessConfig.h: class: test/harness type: c/h test/src/common/harnessDebug.h: class: test/harness type: c/h test/src/common/harnessFork.h: class: test/harness type: c/h test/src/common/harnessInfo.c: class: test/harness type: c test/src/common/harnessInfo.h: class: test/harness type: c/h test/src/common/harnessLog.c: class: test/harness type: c test/src/common/harnessLog.h: class: test/harness type: c/h test/src/common/harnessPq.c: class: test/harness type: c test/src/common/harnessPq.h: class: test/harness type: c/h test/src/common/harnessStorage.c: class: test/harness type: c test/src/common/harnessStorage.h: class: test/harness type: c/h test/src/common/harnessTest.c: class: test/harness type: c test/src/common/harnessTest.h: class: test/harness type: c/h test/src/common/harnessTest.intern.h: class: test/harness type: c/h test/src/common/harnessTls.c: class: test/harness type: c test/src/common/harnessTls.h: class: test/harness type: c/h test/src/module/command/archiveCommonTest.c: class: test/module type: c test/src/module/command/archiveGetTest.c: class: test/module type: c test/src/module/command/archivePushTest.c: class: test/module type: c test/src/module/command/backupCommonTest.c: class: test/module type: c test/src/module/command/backupTest.c: class: test/module type: c test/src/module/command/checkTest.c: class: test/module type: c test/src/module/command/commandTest.c: class: test/module type: c test/src/module/command/controlTest.c: class: test/module type: c test/src/module/command/expireTest.c: class: test/module type: c test/src/module/command/helpTest.c: class: test/module type: c test/src/module/command/infoTest.c: class: test/module type: c test/src/module/command/localTest.c: class: test/module type: c test/src/module/command/remoteTest.c: class: test/module type: c test/src/module/command/restoreTest.c: class: test/module type: c test/src/module/command/stanzaTest.c: class: test/module type: c test/src/module/command/storageTest.c: class: test/module type: c test/src/module/common/assertOffTest.c: class: test/module type: c test/src/module/common/assertOnTest.c: class: test/module type: c test/src/module/common/compressGzipTest.c: class: test/module type: c test/src/module/common/cryptoTest.c: class: test/module type: c test/src/module/common/debugOffTest.c: class: test/module type: c test/src/module/common/debugOnTest.c: class: test/module type: c test/src/module/common/encodeTest.c: class: test/module type: c test/src/module/common/errorTest.c: class: test/module type: c test/src/module/common/execTest.c: class: test/module type: c test/src/module/common/exitTest.c: class: test/module type: c test/src/module/common/forkTest.c: class: test/module type: c test/src/module/common/iniTest.c: class: test/module type: c test/src/module/common/ioHttpTest.c: class: test/module type: c test/src/module/common/ioTest.c: class: test/module type: c test/src/module/common/ioTlsTest.c: class: test/module type: c test/src/module/common/lockTest.c: class: test/module type: c test/src/module/common/logTest.c: class: test/module type: c test/src/module/common/memContextTest.c: class: test/module type: c test/src/module/common/objectTest.c: class: test/module type: c test/src/module/common/regExpTest.c: class: test/module type: c test/src/module/common/stackTraceTest.c: class: test/module type: c test/src/module/common/timeTest.c: class: test/module type: c test/src/module/common/typeBufferTest.c: class: test/module type: c test/src/module/common/typeConvertTest.c: class: test/module type: c test/src/module/common/typeJsonTest.c: class: test/module type: c test/src/module/common/typeKeyValueTest.c: class: test/module type: c test/src/module/common/typeListTest.c: class: test/module type: c test/src/module/common/typeMcvTest.c: class: test/module type: c test/src/module/common/typeStringTest.c: class: test/module type: c test/src/module/common/typeVariantTest.c: class: test/module type: c test/src/module/common/typeXmlTest.c: class: test/module type: c test/src/module/common/typecTest.c: class: test/module type: c test/src/module/common/userTest.c: class: test/module type: c test/src/module/common/waitTest.c: class: test/module type: c test/src/module/config/configTest.c: class: test/module type: c test/src/module/config/defineTest.c: class: test/module type: c test/src/module/config/execTest.c: class: test/module type: c test/src/module/config/loadTest.c: class: test/module type: c test/src/module/config/parseTest.c: class: test/module type: c test/src/module/config/protocolTest.c: class: test/module type: c test/src/module/db/dbTest.c: class: test/module type: c test/src/module/info/infoArchiveTest.c: class: test/module type: c test/src/module/info/infoBackupTest.c: class: test/module type: c test/src/module/info/infoPgTest.c: class: test/module type: c test/src/module/info/infoTest.c: class: test/module type: c test/src/module/info/manifestTest.c: class: test/module type: c test/src/module/performance/typeTest.c: class: test/module type: c test/src/module/postgres/clientTest.c: class: test/module type: c test/src/module/postgres/interfaceTest.c: class: test/module type: c test/src/module/postgres/pageChecksumTest.c: class: test/module type: c test/src/module/protocol/protocolTest.c: class: test/module type: c test/src/module/storage/cifsTest.c: class: test/module type: c test/src/module/storage/posixTest.c: class: test/module type: c test/src/module/storage/remoteTest.c: class: test/module type: c test/src/module/storage/s3Test.c: class: test/module type: c test/src/test.c: class: test/harness type: c test/test.pl: class: test/harness type: perl test/travis.pl: class: test/harness type: perl pgbackrest-release-2.24/test/container.yaml000066400000000000000000000022531362531507100210360ustar00rootroot00000000000000# ********************************************************************************************************************************** # Container Cache # # Contains hashes for containers that are available on Docker hub. If present, the container can be pulled instead of being built # locally which saves a lot of time. Note: these are hashes of the Dockerfile not the actual binary image. # # To build a new image: # - if Dockerfile has changed, just build as usual # - if Dockerfile has not changed, comment out vm hash below and use --vm-force when building # # To upload a new image: # - docker login -u pgbackrest # - VM=XXX;DATE=YYYYMMDDX;BASE=pgbackrest/test:${VM?}-base;docker tag ${BASE?} ${BASE?}-${DATE?} && docker push ${BASE?}-${DATE?} # ********************************************************************************************************************************** 20200124A: u12: 0f2fcf1bc79ee35e78121773c9a2155a77cb10d5 u18: e0d670be1f7167152748e36832081b5b09aabc70 u19: 9d057b1081efedfce0f7ba38092b867a125fde37 20191122A: f30: 3a60318c275cdbfa6daa0f2b502a5551562e6db6 co6: 63527115fd269dfee74bda70da8a5b0569f94886 co7: 0b4c4b953709dc086f95fcc5c8ca45dee1a5eee9 pgbackrest-release-2.24/test/data/000077500000000000000000000000001362531507100170775ustar00rootroot00000000000000pgbackrest-release-2.24/test/data/filecopy.archive1.bin000066400000000000000001000000001362531507100230730ustar00rootroot00000000000000uÐ7óï‹R1o‹R  ¸ÿÿtDYš @  OMkƒ?d øÿÿ²Wà»,40,`  éàŸ@ÀŸ: Ÿ:€Ÿ@`Ÿ:î€( incrìîÀ!defaultêìÀ% timeéêÀ% fullèé@default,î `( ™LX1_¼_³8X @áþÅ, ïïîhHˆ ìRB( î`ÝD6ñTî(PÀ ¹Å %( @( óç<=pgbackrest-release-2.24/test/data/filecopy.archive2.bin000066400000000000000001000000001362531507100230740ustar00rootroot00000000000000uÐ7óï‹R1o‹R  ¸ÿÿtDYš @  OMkƒ?d øÿÿ²Wà» @  ONlƒ?d `'±Šç @  OOmƒ?d  ¹$ @  OPnƒ?d à”(ú @  OQoƒ?d ý¢°& @  ORpƒ?d `3§ø @  OSqƒ?d  èa³L @  OTrƒ?d àj𤒠@  OUsƒ?d ³6ª¬ @  OVtƒ?d `1§½r @  OWuƒ?d  ­ Q @  OXvƒ?d à/Ÿ @  OYwƒ?d #EÛ¿ @  OZxƒ?d `¡ÔÌa @  O[yƒ?d  6†ØÕ @  O\zƒ?d à´Ï  @  O]{ƒ?d éÛ’û @  O^|ƒ?d `kJ…% @  O_}ƒ?d  KD,V @  O`~ƒ?d àÉÕ;ˆ @  Oaƒ?d Ð~à  @  Ob€ƒ?d `Rï÷Õ @  Ocƒ?d  Žãa @  Od‚ƒ?d àG,ô¿ @  Oeƒƒ?d žêú @  Of„ƒ?d `{í_ @  Og…ƒ?d  €Ò]| @  Oh†ƒ?d àCJ¢ @  Oi‡ƒ?d ™‹’ @  Ojˆƒ?d `ŒœL @  Ok‰ƒ?d  Zˆø @  OlŠƒ?d à™ËŸ& @  Om‹ƒ?d é¶½Ä @  OnŒƒ?d `k'ª @  Ooƒ?d  Z/$Ù @  OpŽƒ?d àؾ3 @  Oqƒ?d ±4Û @  Orƒ?d ` 3¥‡ @  Os‘ƒ?d   ¤÷“± @  Ot’ƒ?d à &f„o @  Ou“ƒ?d ÿ ŠQ @  Ov”ƒ?d ` }1 @  Ow•ƒ?d   á˜-¬ @  Ox–ƒ?d à c :r @  Oy—ƒ?d oÓûB @  Oz˜ƒ?d ` íBìœ @  O{™ƒ?d   zø( @  O|šƒ?d à øïö @  O}›ƒ?d ¥M² @  O~œƒ?d ` 'Ü¥Ø @  Oƒ?d   Jƒ: @  O€žƒ?d à È-Ö @  OŸƒ?d ± @  O¸Öƒ?d àT))o @  O¹׃?d Xóè_ @  Oº؃?d `Úbÿ @  O»Ùƒ?d  M0ë5 @  O¼Úƒ?d àÏ¡üë @  O½Ûƒ?d ’m¡ @  O¾܃?d `ü¶Å @  O¿݃?d  žõ$ @  OÀÞƒ?d àdú @  OÁ߃?d èY”ú @  OÂàƒ?d `jȃ$ @  OÃáƒ?d  ýš— @  OÄâƒ?d à €N @  OÅãƒ?d ¦ÍŽp @  OÆäƒ?d `$\™® @  OÇåƒ?d  ¸õ) @  OÈæƒ?d à:d>S @  OÉçƒ?d 6¾ÿc @  OÊèƒ?d `´/è½ @  OËéƒ?d  #}ü uÐ  @  OÌêƒ?d à¡ìë× @  OÍëƒ?d 8 ”e›N @  OÎìƒ?d x ôŒ @  OÏíƒ?d ¸ 'üS @  OÐîƒ?d ø ¥m @  OÑïƒ?d 8!Ìç¶Q @  OÒðƒ?d x!Nv¡ @  OÓñƒ?d ¸!Ù$µ; @  OÔòƒ?d ø![µ¢å @  OÕóƒ?d 8"‚s¬Û @  OÖôƒ?d x"â» @  O×õƒ?d ¸"œK & @  OØöƒ?d ø"Úø @  OÙ÷ƒ?d 8#ÝÈ @  OÚøƒ?d x#‘Ê @  OÛùƒ?d ¸#ÃÞ¢ @  OÜúƒ?d ø#…RÉ| @  OÝûƒ?d 8$Øž”Œ @  OÞüƒ?d x$ZƒR @  Oßýƒ?d ¸$z*! @  Oàþƒ?d ø$ø=ÿ @  Oáÿƒ?d 8%¢UŒæ @  Oâ„?d€ x%K˜wÖ @  P„?d ¸%=‹+K @  P„?d ø%¿<• @  P„?d 8&£•ÉF @  P„?d x&!Þ˜ @  P„?d ¸&s1Á @  P„?d ø&ñŽ& @  P„?d 8'3æ¸U @  P„?d x'±w¯‹ @  P  „?d ¸'ãl@Ò @  P  „?d ø'aýW  @  P  „?d 8(ÔÉŽ @  P  „?d x(VX™Ý @  P  „?d ¸(Cv„ @  P„?d ø(†ÒaZ @  P„?d 8)ŒK£ @  P„?d x)Ú´Â @  P„?d ¸)\Á[› @  P„?d ø)ÞPLE @  P„?d 8*Âß¹– @  P„?d x*@N®H @  P„?d ¸*UA @  P„?d ø*ÄVÏ @  P„?d 8+R¬È… @  P„?d x+Ð=ß[ @  P„?d ¸+‚&0 @  P„?d ø+·'Ü @  P„?d 8,˜2Á @  P„?d x,£– @  P„?d ¸,H¸yF @  P„?d ø,Ê)n˜ @  P„?d 8-L²² @  P  „?d x-Î¥l @  P!!„?d ¸-œ‹J5 @  P""„?d ø-]ë @  P##„?d 8.•¨8 @  P$$„?d x.€¿æ @  P%%„?d ¸.ÒP¿ @  P&&„?d ø.PŽGa @  P''„?d 8/’æÙ+ @  P((„?d x/wÎõ @  P))„?d ¸/Bl!¬ @  P**„?d ø/Àý6r @  P++„?d 80ÿèßÒ @  P,,„?d x0}yÈ  @  P--„?d ¸0/b'U @  P..„?d ø0­ó0‹ @  P//„?d 81§jòÍ @  P00„?d x1%ûå @  P11„?d ¸1wà J @  P22„?d ø1õq” @  P33„?d 82éþèG @  P44„?d x2koÿ™ @  P55„?d ¸29tÀ @  P66„?d ø2»å @  P77„?d 83y™T @  P88„?d x3ûŽŠ @  P99„?d ¸3©aÓ @  P::„?d ø3+–v  @  P;;„?d 84³Ð @  P<<„?d x41‚ÇÎ @  P==„?d ¸4c™(— @  P>>„?d ø4á?I @  P??„?d 859wðà @  P@@„?d x5»æç> @  PAA„?d ¸5éýg @  PBB„?d ø5kl¹ @  PCC„?d 86wãêj @  PDD„?d x6õrý´ @  PEE„?d ¸6§ií @  PFF„?d ø6%ø3 @  PGG„?d 87ç›y @  PHH„?d x7eŒ§ @  PII„?d ¸77cþ @  PJJ„?d ø7µ‹t  @  PKK„?d 88¿­/ @  PLL„?d x8‚.ºñ @  PMM„?d ¸8Ð5U¨ @  PNN„?d ø8R¤Bv @  POO„?d 89X=€0 @  PPP„?d x9Ú¬—î @  PQQ„?d ¸9ˆ·x· @  PRR„?d ø9 &oi @  PSS„?d 8:©šº @  PTT„?d x:”8d @  PUU„?d ¸:Æ#b= @  PVV„?d ø:D²uã @  PWW„?d 8;†Úë© @  PXX„?d x;Küw @  PYY„?d ¸;VP. @  PZZ„?d ø;ÔÁð @  P[[„?d 8<LD¢í @  P\\„?d x<ÎÕµ3 @  P]]„?d ¸<œÎZj @  P^^„?d ø<_M´ @  P__„?d 8=˜w‘ž @  P``„?d x=æ†@ @  Paa„?d ¸=Hýi @  Pbb„?d ø=Êl~Ç @  Pcc„?d 8>Öã‹ @  Pdd„?d x>TrœÊ @  Pee„?d ¸>is“ @  Pff„?d ø>„ødM @  Pgg„?d 8?Fú @  Phh„?d x?ÄíÙ @  Pii„?duÐ@7 ¸?–€ @  Pjj„?d ø?‹^ @  Pkk„?d P@Vìúp @  Pll„?d @vøŽ @  Pmm„?d Ð@†f÷ @  Pnn„?d AV.Ž @  Poo„?d PAn×o @  Ppp„?d A.›Õ‘ @  Pqq„?d ÐAÞä/è @  Prr„?d BC ) @  Pss„?d PB@úÍå @  Ptt„?d B`Ï @  Puu„?d ÐBp5b @  Pvv„?d C@8¹Š @  Pww„?d PCЉ¼ö @  Pxx„?d Cð|¾ @  Pyy„?d ÐCDq @  Pzz„?d DM·~ @  P{{„?d PDõ² @  P||„?d D:â÷L @  P}}„?d ÐDÊ 5 @  P~~„?d EÕÝ @  P„?d PEnã±á @  P€€„?d EN³ @  P„?d ÐE¾iIf @  P‚‚„?d F#-é§ @  Pƒƒ„?d PF w«k @  P„„„?d F‚©• @  P……„?d ÐFðýSì @  P††„?d G µß @  P‡‡„?d PG°Úx @  Pˆˆ„?d Gñ؆ @  P‰‰„?d ÐG`Ž"ÿ @  PŠŠ„?d HTq®â @  P‹‹„?d PHW+ì. @  PŒŒ„?d HwÞîÐ @  P„?d ÐH‡¡© @  PŽŽ„?d IWé˜A @  P„?d PI©Á1 @  P„?d I/\ÃÏ @  P‘‘„?d ÐIß#9¶ @  P’’„?d JBg™w @  P““„?d PJA=Û» @  P””„?d JaÈÙE @  P••„?d ÐJ‘·#< @  P––„?d KAÿ¯Ô @  P——„?d PKÑNª¨ @  P˜˜„?d Kñ»¨V @  P™™„?d ÐKÄR/ @  Pšš„?d LŠ¡  @  P››„?d PLÐãì @  Pœœ„?d L;%á @  P„?d ÐLËZk @  Pžž„?d M—ƒ @  PŸŸ„?d PMÏãП @  P  „?d MïÒa @  P¡¡„?d ÐMi( @  P¢¢„?d N‚-ˆÙ @  P££„?d PNwÊ @  P¤¤„?d N¡‚Èë @  P¥¥„?d ÐNQý2’ @  P¦¦„?d Oµ¾z @  P§§„?d PO» @  P¨¨„?d O1ñ¹ø @  P©©„?d ÐOÁŽC @  Pªª„?d PPÿ3 @  P««„?d PP| ½ÿ @  P¬¬„?d P\ÿ¿ @  P­­„?d ÐP¬€Ex @  P®®„?d Q|ÈÉ @  P¯¯„?d PQ$ˆà @  P°°„?d Q}’ @  P±±„?d ÐQôhg @  P²²„?d RiFȦ @  P³³„?d PRjŠj @  P´´„?d RJ鈔 @  Pµµ„?d ÐRº–rí @  P¶¶„?d SjÞþ @  P··„?d PSúoûy @  P¸¸„?d SÚšù‡ @  P¹¹„?d ÐS*åþ @  Pºº„?d T3«ðñ @  P»»„?d PT0ñ²= @  P¼¼„?d T°Ã @  P½½„?d ÐTà{Jº @  P¾¾„?d U03ÆR @  P¿¿„?d PUº•’Í @  PÀÀ„?d Uš`3 @  PÁÁ„?d ÐUjjJ @  P„?d V÷[Ê‹ @  PÃÄ?d PVôˆG @  PÄÄ„?d VÔôй @  PÅÅ„?d ÐV$‹pÀ @  PÆÆ„?d WôÃü( @  PÇÇ„?d PWdrùT @  PÈÈ„?d WD‡ûª @  PÉÉ„?d ÐW´øÓ @  PÊÊ„?d X€Î @  PËË„?d PXƒ]Ï @  PÌÌ„?d X£¨Íü @  PÍÍ„?d ÐXS×7… @  PÎ΄?d YƒŸ»m @  PÏÏ„?d PYÛßâ @  PÐЄ?d Yû*àã @  PÑÑ„?d ÐY Uš @  PÒÒ„?d Z–º[ @  PÓÓ„?d PZ•Kø— @  PÔÔ„?d Zµ¾úi @  PÕÕ„?d ÐZEÁ @  PÖÖ„?d [•‰Œø @  P×ׄ?d P[8‰„ @  PØØ„?d [%Í‹z @  PÙÙ„?d Ð[Õ²q @  PÚÚ„?d \Ìü‚  @  PÛÛ„?d P\ϦÀÀ @  PÜÜ„?d \ïSÂ> @  PÝÝ„?d Ð\,8G @  PÞÞ„?d ]Ïd´¯ @  Pßß„?d P]•ó³ @  Pàà„?d ];`ñM @  Páá„?d Ð]Ë 4 @  Pââ„?d€ ^"˜·S @  Qã„?d P^Àƒ½¶ @  Qä„?d ^àv¿H @  Qå„?d Ð^Õ@¾Ü @  Qæ„?d _24 @  Qç„?d P_[ h2 @  Qè„?d _{þjÌ @  QuÐ`é„?d Ð_E3ÏÏ @  Qê„?d (`ûËzW @  Q ë„?d h`=ØÃv @  Q ì„?d ¨`-Áˆ @  Q í„?d è`(À @  Q î„?d (aøSLô @  Q ï„?d haÃt @  Qð„?d ¨aãõvà @  Qñ„?d èap™í @  Qò„?d (bíÝM @  Qó„?d hb+Îôã @  Qô„?d ¨b ;ö @  Qõ„?d èb> ÷‰ @  Qö„?d (cîE{a @  Q÷„?d hc°F!g @  Qø„?d ¨c³#™ @  Qù„?d èc®~†š @  Qú„?d (d·0u• @  Qû„?d hdq#Ì´ @  Qü„?d ¨dQÖÎJ @  Qý„?d èddàÏÞ @  Qþ„?d (e´¨C6 @  Qÿ„?d he€½V @  Q…?d ¨e HTq @  Q…?d èe""è" @  Q …?d (f¿fHã @  Q!…?d hfyuñ @  Q"…?d ¨fY€ó< @  Q#…?d èfl¶ò¨ @  Q$…?d (g¼þ~@ @  Q%…?d hgâý$F @  Q&…?d ¨gÂ&¸ @  Q' …?d ègüŃ» @  Q( …?d (hÈ:¦ @  Q) …?d hh)¶‡ @  Q* …?d ¨h.Ü´y @  Q+ …?d èhêµí @  Q,…?d (iË¢9 @  Q-…?d hiðñï @  Q.…?d ¨iÐ @  Q/…?d èiCh˜ò @  Q0…?d (jÞ,83 @  Q1…?d hj? @  Q2…?d ¨j8ʃì @  Q3…?d èj ü‚x @  Q4…?d (kÝ´ @  Q5…?d hkƒ·T– @  Q6…?d ¨k£BVh @  Q7…?d èkók @  Q8…?d (l„Ád @  Q9…?d hlBÒ¹E @  Q:…?d ¨lb'»» @  Q;…?d èlWº/ @  Q<…?d (m‡Y6Ç @  Q=…?d hm!½7ñ @  Q> …?d ¨mú& @  Q? !…?d èmÖK´Î @  Q@ "…?d (nK @  QA #…?d hn­. @  QB $…?d ¨n­é¯Ð @  QC %…?d èn˜ß®D @  QD &…?d (oH—"¬ @  QE '…?d ho”xª @  QF (…?d ¨o6azT @  QG )…?d èo¬ßW @  QH *…?d (p¶rcå @  QI +…?d hppaÚÄ @  QJ ,…?d ¨pP”Ø: @  QK -…?d èpe¢Ù® @  QL .…?d (qµêUF @  QM /…?d hq޹m¬ @  QN 0…?d ¨q®LoR @  QO 1…?d èq= ô± @  QP 2…?d (r dTp @  QQ 3…?d hrfwíQ @  QR 4…?d ¨rF‚ï¯ @  QS 5…?d èrs´î; @  QT 6…?d (s£übÓ @  QU 7…?d hsýÿ8Õ @  QV 8…?d ¨sÝ :+ @  QW 9…?d èsãÇŸ( @  QX :…?d (tú‰l' @  QY ;…?d ht<šÕ @  QZ <…?d ¨to×ø @  Q[ =…?d èt)YÖl @  Q\ >…?d (uùZ„ @  Q] ?…?d hu¯¥N£ @  Q^ @…?d ¨uPL] @  Q_ A…?d èu :ð @  Q` B…?d (v~PÏ @  Qa C…?d hvVméî @  Qb D…?d ¨vv˜ë @  Qc E…?d èvC®ê„ @  Qd F…?d (w“æfl @  Qe G…?d hwÍå” @  Qg I…?d èwÓÝ›— @  Qh J…?d (xç"Š @  Qi K…?d hx!1®« @  Qj L…?d ¨xĬU @  Qk M…?d èx4ò­Á @  Ql N…?d (yäº!) @  Qm O…?d hyßéà @  Qn P…?d ¨yÿ= @  Qo Q…?d èylp€Þ @  Qp R…?d (zñ4  @  Qq S…?d hz7'™> @  Qr T…?d ¨zÒ›À @  Qs U…?d èz"äšT @  Qt V…?d ({ò¬¼ @  Qu W…?d h{¬¯Lº @  Qv X…?d ¨{ŒZND @  Qw Y…?d è{²—ëG @  Qx Z…?d (|«ÙH @  Qy […?d h|mÊ¡i @  Qz \…?d ¨|M?£— @  Q{ ]…?d è|x ¢ @  Q| ^…?d (}¨A.ë @  Q} _…?d h}¥/Ý @  Q~ `…?d ¨}.P-# @  Q a…?d è}ák§Ó @  Q€ b…?d (~|/ @  Q c…?d h~º<¾3 @  Q‚ d…?d ¨~šÉ¼Í @  Qƒ e…?d è~¯ÿ½Y @  Q„ f…?d (·1± @  Q… g…?d h!´k· @  Q† h…?d ¨uЀ'AiI @  Q‡ i…?d è?ŒÌJ @  Qˆ j…?d @€Q2.> @  Q‰ k…?d €€5E‚? @  QŠ l…?d À€·Ô•á @  Q‹ m…?d Ð;C @  QŒ n…?d @Rª @  Q o…?d €Ë5W @  QŽ p…?d ÀI "‰ @  Q q…?d ‚ŵu @  Q r…?d @‚G$« @  Q‘ s…?d €‚#Sµª @  Q’ t…?d À‚¡Â¢t @  Q“ u…?d ƒÆ-8Ö @  Q” v…?d @ƒD¼/ @  Q• w…?d €ƒ¸Û`. @  Q– x…?d Àƒ:Jwð @  Q— y…?d „ŸX6" @  Q˜ z…?d @„É!ü @  Q™ {…?d €„y¾ý @  Qš |…?d À„û/š# @  Q› }…?d …œÀ @  Qœ ~…?d @…Q_ @  Q …?d €…÷GBÊ @  Qž €…?d À…uÖU @  QŸ …?d †èi^X @  Q  ‚…?d @†jøI† @  Q¡ ƒ…?d €†å‡ @  Q¢ „…?d À†ŒòY @  Q£ ……?d ‡ëñhû @  Q¤ †…?d @‡i`% @  Q¥ ‡…?d €‡•0 @  Q¦ ˆ…?d À‡–'Ý @  Q§ ‰…?d ˆŸ5 @  Q¨ Š…?d @ˆ¤Ã @  Q© ‹…?d €ˆyӢ @  Qª Œ…?d ÀˆûBµ @  Q« …?d ‰œ­/¾ @  Q¬ Ž…?d @‰<8` @  Q­ …?d €‰‡ ª @  Q® …?d À‰št @  Q¯ ‘…?d Љ#.ˆ @  Q° ’…?d @Š ²9V @  Q± “…?d €ŠoÅ•W @  Q² ”…?d ÀŠíT‚‰ @  Q³ •…?d ‹Š»+ @  Q´ –…?d @‹*õ @  Qµ —…?d €‹ôM@Ó @  Q¶ ˜…?d À‹vÜW  @  Q· ™…?d ŒÓÎß @  Q¸ š…?d @ŒQ_ @  Q¹ ›…?d €Œ5(­ @  Qº œ…?d ÀŒ·¹ºÞ @  Q» …?d ÐV | @  Q¼ ž…?d @RÇ7¢ @  Q½ Ÿ…?d €VG#´ @  Q¾  …?d ÀÔÖ4j @  Q¿ ¡…?d Žçn9´ @  QÀ ¢…?d @Žeÿ.j @  QÁ £…?d €Žˆ‚k @  Q ¤…?d ÀŽƒ•µ @  Qà ¥…?d äö @  QÄ ¦…?d @fgÉ @  QÅ §…?d €šWï @  QÆ ¨…?d À‘@1 @  QÇ ©…?d N^ @  QÈ ª…?d @˜‚Y€ @  QÉ «…?d €üõõ @  QÊ ¬…?d À~dâ_ @  QË ­…?d ‘‹xý @  QÌ ®…?d @‘›o# @  QÍ ¯…?d €‘-Bé @  QÎ °…?d À‘€¼U7 @  QÏ ±…?d ’ yË @  QÐ ²…?d @’Ž”n @  QÑ ³…?d €’êã @  QÒ ´…?d À’hrÕÊ @  QÓ µ…?d “Oh @  QÔ ¶…?d @“ X¶ @  QÕ ·…?d €“qk @  QÖ ¸…?d À“óúN @  Q× ¹…?d ”VèAœ @  QØ º…?d @”ÔyVB @  QÙ »…?d €”°úC @  QÚ ¼…?d À”2Ÿí @  QÛ ½…?d •Upw? @  QÜ ¾…?d @•×á`á @  QÝ ¿…?d €•#1aæ @  QÞ À…?d À•¡ v8 @  Qß Á…?d –<}t @  Qà Â…?d @–¾Žjª @  Qá Ã…?d €–ÚùÆ« @  Qâ Ä…?d€ À–™/&u @  R Å…?d —ôþ @  R Æ…?d @—ã  @  R Ç…?d €—¤>Wë @  R È…?d À—&¯@5 @  R É…?d ˜`¾! @  R Ê…?d @˜â/6Q @  R Ë…?d €˜HêÅ* @  R Ì…?d À˜Ê{Òô @  R Í…?d ™hݳ» @  R Î…?d @™êL¤e @  R Ï…?d €™¶2rB @  R Ð…?d À™4£eœ @  R Ñ…?d šÛ (ú @  R Ò…?d @šY˜?$ @  R Ó…?d €š^üò¿ @  R Ô…?d ÀšÜmåa @  R Õ…?d ›~Ë„. @  R Ö…?d @›üZ“ð @  R ×…?d €›Åt'; @  R Ø…?d À›Gå0å @  R Ù…?d œ,E.M @  R Ú…?d @œ®Ô9“ @  R Û…?d €œÊè @  R Ü…?d Àœ†€Ý6 @  R Ý…?d $&¼y @  R Þ…?d @¦·«§ @  R ß…?d €g~D\ @  R à…?d ÀåïS‚ @  R á…?d ž Eä @  R â…?d @žˆÔ : @  R ã…?d €žž¶ã @  R ä…?d Àž'ôÏ @  R! å…?d Ÿ¾•€ @  R" æ…?d @Ÿ<‚^ @  R# ç…?d €Ÿ>6• @  R$ è…uР?d ÀŸ‡¯!K @  R% é…?d  „JŠ @  R& ê…?d X ÛT @  R' ë…?d ˜ ¬ö/ @  R( ì…?d Ø .áñ @  R) í…?d ¡Œ)€¾ @  R* î…?d X¡¸—` @  R+ ï…?d ˜¡RÆAG @  R, ð…?d Ø¡ÐWV™ @  R- ñ…?d ¢?ýÿ @  R. ò…?d X¢½l ! @  R/ ó…?d ˜¢ºÁº @  R0 ô…?d Ø¢8™Öd @  R1 õ…?d £š?·+ @  R2 ö…?d X£® õ @  R3 ÷…?d ˜£!€> @  R4 ø…?d Ø££à @  R5 ù…?d ¤ȱH @  R6 ú…?d X¤J – @  R7 û…?d ˜¤àåùí @  R8 ü…?d ؤbtî3 @  R9 ý…?d ¥ÀÒ| @  R: þ…?d X¥BC˜¢ @  R; ÿ…?d ˜¥£YVó @  R< †?d Ø¥!ÈA- @  R= †?d ¦Îb K @  R> †?d X¦Ló• @  R? †?d ˜¦ô–÷, @  R@ †?d ئvàò @  RA †?d §Ô¡½ @  RB †?d X§V0–c @  RC †?d ˜§o"¨ @  RD †?d اí5v @  RE  †?d ¨«žTÌ @  RF  †?d X¨)C @  RG  †?d ˜¨ƒÊ°i @  RH  †?d ب[§· @  RI  †?d ©£ýÆø @  RJ †?d X©!lÑ& @  RK †?d ˜©} @  RL †?d Ø©ÿƒß @  RM †?d ª)]¹ @  RN †?d Xª’¸Jg @  RO †?d ˜ª•܇ü @  RP †?d تM" @  RQ †?d «µëñm @  RR †?d X«7zæ³ @  RS †?d ˜«TRx @  RT †?d Ø«ŒÅE¦ @  RU †?d ¬çe[ @  RV †?d X¬eôLÐ @  RW †?d ˜¬Ï1¿« @  RX †?d جM ¨u @  RY †?d ­ïÉ: @  RZ †?d X­m—Þä @  R[ †?d ˜­¬^1 @  R\  †?d Ø­.Ï&Á @  R] !†?d ®Áek§ @  R^ "†?d X®Cô|y @  R_ #†?d ˜®U––R @  R` $†?d خ׌ @  Ra %†?d ¯u¡àà @  Rb &†?d X¯÷0÷ @  Rc '†?d ˜¯ÎCÖ @  Rd (†?d دLT @  Re )†?d °€¿ @  Rf *†?d X°.à @  Rg +†?d ˜°¨ëḠ@  Rh ,†?d ذ*zöf @  Ri -†?d ±ˆÜ—) @  Rj .†?d X± M€÷ @  Rk /†?d ˜±V3VÐ @  Rl 0†?d رÔ¢A @  Rm 1†?d ²; h @  Rn 2†?d X²¹™¶ @  Ro 3†?d ˜²¾ýÖ- @  Rp 4†?d ز†?d XµF¶5 @  R{ ?†?d ˜µw/uß @  R| @†?d صõ¾b @  R} A†?d ¶/g @  R~ B†?d X¶˜…8¹ @  R C†?d ˜¶öä1 @  R€ D†?d ضA'óï @  R E†?d ·ã’  @  R‚ F†?d X·a…~ @  Rƒ G†?d ˜·X>1µ @  R„ H†?d Ø·Ú¯&k @  R… I†?d ¸œ¾GÑ @  R† J†?d X¸/P @  R‡ K†?d ˜¸´ê£t @  Rˆ L†?d ظ6{´ª @  R‰ M†?d ¹”ÝÕå @  RŠ N†?d X¹LÂ; @  R‹ O†?d ˜¹J2 @  RŒ P†?d عȣ @  R Q†?d º' N¤ @  RŽ R†?d Xº¥˜Yz @  R S†?d ˜º¢ü”á @  R T†?d غ mƒ? @  R‘ U†?d »‚Ëâp @  R’ V†?d X»Zõ® @  R“ W†?d ˜»9tAe @  R” X†?d Ø»»åV» @  R• Y†?d ¼ÐEH @  R– Z†?d X¼RÔ_Í @  R— [†?d ˜¼ø¬¶ @  R˜ \†?d ؼz€»h @  R™ ]†?d ½Ø&Ú' @  Rš ^†?d X½Z·Íù @  R› _†?d ˜½›~" @  Rœ `†?d ؽï5Ü @  R a†?d ¾öExº @  Rž b†?d X¾tÔod @  RŸ c†?d ˜¾b¶…O @  R  d†?d ؾà'’‘ @  R¡ e†?d ¿BóÞ @  R¢ f†?d X¿Àä @  R£ g†?d ˜¿ù>PË @uÐÀ  R¤ h†?d Ø¿{¯G @  R¥ i†?d 0Àm±ûà @  R¦ j†?d pÀï ì> @  R§ k†?d °ÀEåE @  R¨ l†?d ðÀÇt› @  R© m†?d 0ÁeÒiÔ @  Rª n†?d pÁçC~  @  R« o†?d °Á»=¨- @  R¬ p†?d ðÁ9¬¿ó @  R­ q†?d 0ÂÖò• @  R® r†?d pÂT—åK @  R¯ s†?d °ÂSó(Ð @  R° t†?d ðÂÑb? @  R± u†?d 0ÃsÄ^A @  R² v†?d pÃñUIŸ @  R³ w†?d °ÃÈ{ýT @  R´ x†?d ðÃJêêŠ @  Rµ y†?d 0Ä!Jô" @  R¶ z†?d pÄ£Ûãü @  R· {†?d °Ä ‡ @  R¸ |†?d ðÄ‹Y @  R¹ }†?d 0Å))f @  Rº ~†?d pÅ«¸qÈ @  R» †?d °Å‡çß° @  R¼ €†?d ðÅvÈn @  R½ †?d 0ÆêÜ… @  R¾ ‚†?d pÆhM’Ö @  R¿ ƒ†?d °ÆÐ(~o @  RÀ „†?d ðÆR¹i± @  RÁ …†?d 0Çðþ @  R ††?d pÇrŽ  @  Rà ‡†?d °ÇK «ë @  RÄ ˆ†?d ðÇÉ1¼5 @  RÅ ‰†?d 0È Ý @  RÆ І?d pÈ ±ÊQ @  RÇ ‹†?d °È§t9* @  RÈ Œ†?d ðÈ%å.ô @  RÉ †?d 0ɇCO» @  RÊ ކ?d pÉÒXe @  RË †?d °ÉY¬ŽB @  RÌ †?d ðÉÛ=™œ @  RÍ ‘†?d 0Ê4—Ôú @  RÎ ’†?d pʶÃ$ @  RÏ “†?d °Ê±b¿ @  RÐ ”†?d ðÊ3óa @  RÑ •†?d 0Ë‘Ux. @  RÒ –†?d pËÄoð @  RÓ —†?d °Ë*êÛ; @  RÔ ˜†?d ð˨{Ìå @  RÕ ™†?d 0ÌÃÛÒM @  RÖ š†?d pÌAJÅ“ @  R× ›†?d °Ìë6è @  RØ œ†?d ðÌi!6 @  RÙ †?d 0Í˸@y @  RÚ ž†?d pÍI)W§ @  RÛ Ÿ†?d °Íˆà¸\ @  RÜ  †?d ðÍ q¯‚ @  RÝ ¡†?d 0ÎåÛâä @  RÞ ¢†?d pÎgJõ: @  Rß £†?d °Îq( @  Rà ¤†?d ðÎó¹Ï @  Rá ¥†?d 0ÏQi€ @  Râ ¦†?d€ pϧMbø @  S §†?d °Ï"ž @  S ¨†?d ðÏý³‰Ä @  S ©†?d 0ÐôÊ#< @  S ª†?d pÐv[4â @  S «†?d °Ð,˜ã @  S ¬†?d ðн= @  S ­†?d 0Ñü©± @  S ®†?d pÑ~8¦Ö @  S ¯†?d °Ñç‹ @  S °†?d ðÑežœÂ @  S ±†?d 0ÒO}*I @  S ²†?d pÒÍì=— @  S ³†?d °Ò©›‘– @  S ´†?d ðÒ+ †H @  S µ†?d 0Ó꿆 @  S ¶†?d pÓh.‘C @  S ·†?d °Ó”IÞe @  S ¸†?d ðÓØÉ» @  S ¹†?d 0Ô¸1,þ @  S º†?d pÔ: ;  @  S »†?d °Ô^×—! @  S ¼†?d ðÔÜF€ÿ @  S ½†?d 0Õ°R¾Ê @  S ¾†?d pÕ2é @  S ¿†?d °Õƨ @  S À†?d ðÕD‚¿Í @  S Á†?d 0Öna F @  S †?d pÖìð˜ @  S Æ?d °Öˆ‡²™ @  S Ć?d ðÖ ¥G @  S ņ?d 0×Ú¥‚" @  S Ɔ?d p×X4•ü @  S! dž?d °×¤SÚÚ @  S" Ȇ?d ð×&ÂÍ @  S# Ɇ?d 0Ø¥šWS @  S$ ʆ?d pØ' @ @  S% ˆ?d °ØC|ìŒ @  S& ̆?d ðØÁíûR @  S' ͆?d 0Ù­ùÅg @  S( Ά?d pÙ/hÒ¹ @  S) φ?d °Ù¶_ÿs @  S* І?d ðÙ4Îè­ @  S+ ц?d 0Ú-^& @  S, Ò†?d pÚœ¼Iø @  S- Ó†?d °ÚøËåù @  S. Ô†?d ðÚzZò' @  S/ Õ†?d 0Û»ïòò @  S0 Ö†?d pÛ9~å, @  S1 ׆?d °ÛŪ  @  S2 ؆?d ðÛGˆ½Ô @  S3 Ù†?d 0ÜéaX‘ @  S4 Ú†?d pÜkðOO @  S5 Û†?d °Ü‡ãN @  S6 ܆?d ðÜô @  S7 ݆?d 0ÝáÊ¥ @  S8 Þ†?d pÝc“Ý{ @  S9 ߆?d °ÝgÉm @  S: à†?d ðÝå‚Þ³ @  S; á†?d 0ÞÏah8 @  S< â†?d pÞMðæ @  S= ã†?d °Þ)‡Óç @  S> ä†?d ðÞ«Ä9 @  S? å†?d 0ßÕ¢åÎ @  S@ æ†?d pßW3ò @  SA ç†?d uÐà/°ß«T½6 @  SB è†?d ðß)Ūè @  SC é†?d Hà‡ÆâT @  SD ê†?d ˆà§3ઠ@  SE ë†?d Èàa Y‹ @  SF ì†?d á±hÕc @  SG í†?d Há¥p` @  SH î†?d ˆá¯Prž @  SI ï†?d Èá”Jt @  SJ ð†?d â Gêµ @  SK ñ†?d Hâ‡?d ˆõ¶*oß @  S™ ?‡?d Èõàž{ø @  Sš @‡?d ö}ÚÛ9 @  S› A‡?d HöHìÚ­ @  Sœ B‡?d ˆöhØS @  S C‡?d Èö® ar @  Sž D‡?d ÷~Bíš @  SŸ E‡?d H÷ü(QÉ @  S  F‡?d ˆ÷ÜÝS7 @  S¡ G‡?d È÷‚Þ 1 @  S¢ H‡?d ø¶!…, @  S£ I‡?d Høƒ„¸ @  S¤ J‡?d ˆø£â†F @  S¥ K‡?d Èøeñ?g @  S¦ L‡?d ùµ¹³ @  S§ M‡?d Hù‹tŒ @  S¨ N‡?d ˆù«r @  S© O‡?d ÈùÒ,˜ @  Sª P‡?d ú –ŒY @  S« Q‡?d Hú8 Í @  S¬ R‡?d ˆúU3 @  S­ S‡?d ÈúÞF6 @  S® T‡?d ûºú @  S¯ U‡?d Hûb! @  S° V‡?d ˆû½—#ç @  S± W‡?d Èûã”yá @  S² X‡?d üúÚŠî @  S³ Y‡?d HüÏì‹z @  S´ Z‡?d ˆü @  Sµ [‡?d Èü) 0¥ @  S¶ \‡?d ýùB¼M @  S· ]‡?d HýÇN @  S¸ ^‡?d ˆýçz° @  S¹ _‡?d ÈýAž† @  Sº `‡?d þÜÚºG @  S» a‡?d Hþéì»Ó @  S¼ b‡?d ˆþɹ- @  S½ c‡?d Èþ  @  S¾ d‡?d ÿßBŒä @  S¿ e‡?d Hÿó/6% @  SÀ f‡?d ˆÿÓÚ4Û @  SÁ uÐg‡?d ÈÿÙnÝ @  S h‡?d ÂmF, @  Sà i‡?d `÷[G¸ @  SÄ j‡?d  ×®EF @  SÅ k‡?d à½üg @  SÆ l‡?d Áõp @  SÇ m‡?d `ÿ8ÕŒ @  SÈ n‡?d  ßÍ×r @  SÉ o‡?d àäžï˜ @  SÊ p‡?d yÚOY @  SË q‡?d `LìNÍ @  SÌ r‡?d  lL3 @  SÍ s‡?d ઠõ @  SÎ t‡?d zByú @  SÏ u‡?d `é.â @  SÐ v‡?d  ÉÛàç @  SÑ w‡?d à—غá @  SÒ x‡?d Ž–Iî @  SÓ y‡?d `» Hz @  SÔ z‡?d  ›UJ„ @  SÕ {‡?d à]Fó¥ @  SÖ |‡?d M @  S× }‡?d `³ÃÚN @  SØ ~‡?d  “6ذ @  SÙ ‡?d àØD˜ @  SÚ €‡?d E8Ä @  SÛ ‡?d `p69P @  SÜ ‚‡?d  PÃ;® @  SÝ ƒ‡?d à–Ђ @  SÞ „‡?d F˜g @  Sß …‡?d `Äò²4 @  Sà †‡?d  ä°Ê @  Sá ‡‡?d àºêÌ @  Sâ ˆ‡?d€ ­Îh @  T ‰‡?d `ÜÚ‡Õ @  T Ї?d  ü/…+ @  T ‹‡?d àÿuÇç @  T Œ‡?d /=K @  T ‡?d ` ßB±v @  T އ?d   ÿ·³ˆ @  T ‡?d à  VÔ @  T ‡?d —tÙ @  T ‘‡?d ` gmŽ  @  T ’‡?d   G˜Œ^ @  T “‡?d à DÂÎ’ @  T ”‡?d ”ŠBz @  T •‡?d ` dõ¸ @  T –‡?d   Dºý @  T —‡?d à ya @  T ˜‡?d `^rn @  T ™‡?d ` !ˆ @  T š‡?d   °ÔŠé @  T ›‡?d à ³ŽÈ% @  T œ‡?d cÆDÍ @  T ‡?d ` “¹¾´ @  T ž‡?d   ³L¼J @  T Ÿ‡?d à Ûâ @  T  ‡?d F^BÇ @  T ¡‡?d `¶!¸¾ @  T ¢‡?d  –Ôº@ @  T £‡?d à•ŽøŒ @  T ¤‡?d EÆtd @  T ¥‡?d `µ¹Ž @  T ¦‡?d  •LŒã @  T §‡?d à¹ZÏ @  T ¨‡?d „,} @  T! ©‡?d `÷ûÖ @  T" ª‡?d  ×Ôú @  T# «‡?d àÔT–6 @  T$ ¬‡?d Þ @  T% ­‡?d `ôcà§ @  T& ®‡?d  Ô–âY @  T' ¯‡?d à!w…É @  T( °‡?d ¼3% @  T) ±‡?d `LLßq @  T* ²‡?d  l¹Ý @  T+ ³‡?d àoãŸC @  T, ´‡?d ¿«« @  T- µ‡?d `OÔéÒ @  T. ¶‡?d  o!ë, @  T/ ·‡?d àR1а @  T0 ¸‡?d K#¿ @  T1 ¹‡?d `»ÙÆ @  T2 º‡?d  ›õÛ8 @  T3 »‡?d à˜¯™ô @  T4 ¼‡?d Hç @  T5 ½‡?d `¸˜ïe @  T6 ¾‡?d  ˜mí› @  T7 ¿‡?d àk¦Æ @  T8 À‡?d / @  T9 Á‡?d `mPü~ @  T: ‡?d  M¥þ€ @  T; Ç?d àNÿ¼L @  T< ć?d ž·0¤ @  T= Ň?d `nÈÊÝ @  T> Ƈ?d  N=È# @  T? LJ?d àÌ,Ò @  T@ ȇ?d øÓ^€ @  TA ɇ?d `¬¤ù @  TB ʇ?d  (Y¦ @  TC ˇ?d à+äË @  TD ̇?d ûKh# @  TE ͇?d ` 4’Z @  TF ·?d  +Á¤ @  TG χ?d àÞ ÷4 @  TH Ї?d CdWõ @  TI ч?d `³­Œ @  TJ Ò‡?d  “î¯r @  TK Ó‡?d à´í¾ @  TL Ô‡?d @üaV @  TM Õ‡?d `°ƒ›/ @  TN Ö‡?d  v™Ñ @  TO ׇ?d à­f¢M @  TP ؇?d ´(QB @  TQ Ù‡?d `DW«; @  TR Ú‡?d  d¢©Å @  TS Û‡?d àgøë  @  TT ܇?d ·°gá @  TU ݇?d `GϘ @  TV Þ‡?d  g:Ÿf @  TW ߇?d àlÁ* @  TX à‡?d ’(aë @  TY á‡?d `bW›’ @  TZ â‡?d  B¢™l @  T[ ã‡?d àAøÛ  @  T\ ä‡?d ‘°WH @  T] å‡?d `aÏ­1 @  T^ æ‡?d  A:¯ÏuÐ  @  T_ ç‡?d àm,³ã @  T` è‡?d 8 'm… @  Ta é‡?d x ìX—ü @  Tb ê‡?d ¸ Ì­• @  Tc ë‡?d ø Ï÷×Î @  Td ì‡?d 8!¿[& @  Te í‡?d x!ïÀ¡_ @  Tf î‡?d ¸!Ï5£¡ @  Tg ï‡?d ø!:ÔÄ1 @  Th ð‡?d 8"§dð @  Ti ñ‡?d x"W @  Tj ò‡?d ¸"wœw @  Tk ó‡?d ø"t@Þ» @  Tl ô‡?d 8#¤RS @  Tm õ‡?d x#Tw¨* @  Tn ö‡?d ¸#t‚ªÔ @  To ÷‡?d ø#I’‘H @  Tp ø‡?d 8$PÜbG @  Tq ù‡?d x$ £˜> @  Tr ú‡?d ¸$€VšÀ @  Ts û‡?d ø$ƒ Ø  @  Tt ü‡?d 8%SDTä @  Tu ý‡?d x%£;® @  Tv þ‡?d ¸%ƒÎ¬c @  Tw ÿ‡?d ø%œZ×O @  Tx ˆ?d 8&wŽ @  Ty ˆ?d x&ña÷ @  Tz ˆ?d ¸&Ñ”  @  T{ ˆ?d ø&ÒÎÍÅ @  T| ˆ?d 8'†A- @  T} ˆ?d x'òù»T @  T~ ˆ?d ¸'Ò ¹ª @  T ˆ?d ø'³K“% @  T€ ˆ?d 8(‡´8 @  T  ˆ?d x(wËåA @  T‚  ˆ?d ¸(W>ç¿ @  Tƒ  ˆ?d ø(Td¥s @  T„  ˆ?d 8)„,)› @  T…  ˆ?d x)tSÓâ @  T† ˆ?d ¸)T¦Ñ @  T‡ ˆ?d ø)¡G¶Œ @  Tˆ ˆ?d 8*<M @  T‰ ˆ?d x*Ì|ì4 @  TŠ ˆ?d ¸*ì‰îÊ @  T‹ ˆ?d ø*ïÓ¬ @  TŒ ˆ?d 8+?› î @  T ˆ?d x+ÏäÚ— @  TŽ ˆ?d ¸+ïØi @  T ˆ?d ø+Òãõ @  T ˆ?d 8,ËOú @  T‘ ˆ?d x,;0êƒ @  T’ ˆ?d ¸,Åè} @  T“ ˆ?d ø,Ÿª± @  T” ˆ?d 8-È×&Y @  T• ˆ?d x-8¨Ü  @  T– ˆ?d ¸-]ÞÞ @  T— ˆ?d ø-p €’ @  T˜  ˆ?d 8.íO S @  T™ !ˆ?d x.0Ú* @  Tš "ˆ?d ¸.=ÅØÔ @  T› #ˆ?d ø.>Ÿš @  Tœ $ˆ?d 8/î×ð @  T %ˆ?d x/¨ì‰ @  Tž &ˆ?d ¸/>]îw @  TŸ 'ˆ?d ø/Kò[ @  T  (ˆ?d 80¬•Né @  T¡ )ˆ?d x0\ê´ @  T¢ *ˆ?d ¸0|¶n @  T£ +ˆ?d ø0Eô¢ @  T¤ ,ˆ?d 81¯ xJ @  T¥ -ˆ?d x1_r‚3 @  T¦ .ˆ?d ¸1‡€Í @  T§ /ˆ?d ø1Šfç] @  T¨ 0ˆ?d 82"Gœ @  T© 1ˆ?d x2ç]½å @  Tª 2ˆ?d ¸2Ǩ¿ @  T« 3ˆ?d ø2Äòý× @  T¬ 4ˆ?d 83ºq? @  T­ 5ˆ?d x3äÅ‹F @  T® 6ˆ?d ¸3Ä0‰¸ @  T¯ 7ˆ?d ø3ù ²$ @  T° 8ˆ?d 84ànA+ @  T± 9ˆ?d x4»R @  T² :ˆ?d ¸40乬 @  T³ ;ˆ?d ø43¾û` @  T´ <ˆ?d 85ãöwˆ @  Tµ =ˆ?d x5‰ñ @  T¶ >ˆ?d ¸53| @  T· ?ˆ?d ø5«zÄR @  T¸ @ˆ?d 866>d“ @  T¹ Aˆ?d x6ÆAžê @  Tº Bˆ?d ¸6æ´œ @  T» Cˆ?d ø6åîÞØ @  T¼ Dˆ?d 875¦R0 @  T½ Eˆ?d x7ÅÙ¨I @  T¾ Fˆ?d ¸7å,ª· @  T¿ Gˆ?d ø7g=°  @  TÀ Hˆ?d 88SÂ< @  TÁ Iˆ?d x8£½Æm @  T Jˆ?d ¸8ƒHÄ“ @  Tà Kˆ?d ø8€†_ @  TÄ Lˆ?d 89PZ · @  TÅ Mˆ?d x9 %ðÎ @  TÆ Nˆ?d ¸9€Ðò0 @  TÇ Oˆ?d ø9u1•  @  TÈ Pˆ?d 8:èu5a @  TÉ Qˆ?d x: Ï @  TÊ Rˆ?d ¸:8ÿÍæ @  TË Sˆ?d ø:;¥* @  TÌ Tˆ?d 8;ëí @  TÍ Uˆ?d x;’ù» @  TÎ Vˆ?d ¸;;gûE @  TÏ Wˆ?d ø;wÀÙ @  TÐ Xˆ?d 8<93Ö @  TÑ Yˆ?d x<ïFɯ @  TÒ Zˆ?d ¸<ϳËQ @  TÓ [ˆ?d ø<Ìé‰ @  TÔ \ˆ?d 8=¡u @  TÕ ]ˆ?d x=ìÞÿ  @  TÖ ^ˆ?d ¸=Ì+ýò @  T× _ˆ?d ø=¤}£¾ @  TØ `ˆ?d 8>99 @  TÙ aˆ?d x>ÉFù @  TÚ bˆ?d ¸>é³ûø @  TÛ cˆ?d ø>êé¹4 @  TÜ dˆ?d 8?:¡5Ü @  TÝ eˆ?d x?ÊÞÏ¥ @  TÞ fˆ?duÐ@7 ¸?ê+Í[ @  Tß gˆ?d ø?Æ=Ñw @  Tà hˆ?d P@‘kK @  Tá iˆ?d @WŠ„ @  Tâ jˆ?d€ Ð@¡Øj @  U kˆ?d A¹ @  U lˆ?d PA“‹ g @  U mˆ?d AÙÓ @  U nˆ?d ÐA†H  @  U oˆ?d B¢Î…ø @  U pˆ?d PB _’& @  U qˆ?d B¼ö" @  U rˆ?d ÐB>g5Û @  U sˆ?d Cª­Ì @  U tˆ?d PC(< @  U uˆ?d C¿n¦ @  U vˆ?d ÐC=ÿx @  U wˆ?d Dø#½¯ @  U xˆ?d PDz²ªq @  U yˆ?d DKº$² @  U zˆ?d ÐDÉ+3l @  U {ˆ?d E]á{ @  U |ˆ?d PEßp¥ @  U }ˆ?d EH" @  U ~ˆ?d ÐEʳÏ @  U ˆ?d Fžòe @  U €ˆ?d PF…å» @  U ˆ?d F€,U˜ @  U ‚ˆ?d ÐF½BF @  U ƒˆ?d G–w`Q @  U „ˆ?d PGæw @  U …ˆ?d Gƒ´c; @  U †ˆ?d ÐG%tå @  U ‡ˆ?d HéHµ  @  U ˆˆ?d PHkÙ¢þ @  U ‰ˆ?d HK×  @  U Šˆ?d ÐHÉFS @  U! ‹ˆ?d I]Œ>D @  U" Œˆ?d PIß)š @  U# ˆ?d IHO=. @  U$ Žˆ?d ÐIÊÞ*ð @  U% ˆ?d JîX¥ @  U& ˆ?d PJlɲÛ @  U' ‘ˆ?d Jð`ø @  U( ’ˆ?d ÐJrñ& @  U) “ˆ?d Kæ;71 @  U* ”ˆ?d PKdª ï @  U+ •ˆ?d Kóø4[ @  U, –ˆ?d ÐKqi#… @  U- —ˆ?d L´µR @  U. ˜ˆ?d PL6$ŠŒ @  U/ ™ˆ?d L,O @  U0 šˆ?d ÐL…½‘ @  U1 ›ˆ?d Mw1† @  U2 œˆ?d PM“æ&X @  U3 ˆ?d M´2ì @  U4 žˆ?d ÐM†%%2 @  U5 Ÿˆ?d N?“ @  U6  ˆ?d PN½…„Å @  U7 ¡ˆ?d N!,4æ @  U8 ¢ˆ?d ÐN£½#8 @  U9 £ˆ?d O7w/ @  U: ¤ˆ?d POµæñ @  U; ¥ˆ?d O"´E @  U< ¦ˆ?d ÐO %› @  U= §ˆ?d PÂiäñ @  U> ¨ˆ?d PP@øó/ @  U? ©ˆ?d PÎñ\Î @  U@ ªˆ?d ÐPL`K @  UA «ˆ?d Qتi @  UB ¬ˆ?d PQZ;~Ù @  UC ­ˆ?d QÍijm @  UD ®ˆ?d ÐQOø}³ @  UE ¯ˆ?d Rk~òF @  UF °ˆ?d PRéïå˜ @  UG ±ˆ?d RuFU» @  UH ²ˆ?d ÐR÷×Be @  UI ³ˆ?d Sc`r @  UJ ´ˆ?d PSáŒw¬ @  UK µˆ?d SvÞc @  UL ¶ˆ?d ÐSôOtÆ @  UM ·ˆ?d T1“Ê @  UN ¸ˆ?d PT³ÝÏ @  UO ¹ˆ?d T‚ S  @  UP ºˆ?d ÐT›DÒ @  UQ »ˆ?d U”QfÅ @  UR ¼ˆ?d PUÀq @  US ½ˆ?d U’e¯ @  UT ¾ˆ?d ÐUrq @  UU ¿ˆ?d VJbÑI @  UV Àˆ?d PVÈóÆ— @  UW Áˆ?d VTZv´ @  UX ˆ?d ÐVÖËaj @  UY È?d WBC} @  UZ Ĉ?d PWÀT£ @  U[ ň?d WWÂ@ @  U\ ƈ?d ÐWÕSWÉ @  U] Lj?d X=>–  @  U^ Ȉ?d PX¿¯Ò @  U_ Ɉ?d XŸ¡(¡ @  U` ʈ?d ÐX0? @  Ua ˈ?d Y‰úh @  Ub ̈?d PY k ¶ @  Uc ͈?d Yœ9 @  Ud Έ?d ÐY¨ Ü @  Ue ψ?d Z:.†) @  Uf Ј?d PZ¸¿‘÷ @  Ug ш?d Z$!Ô @  Uh Òˆ?d ÐZ¦‡6  @  Ui Óˆ?d [2M @  Uj Ôˆ?d P[°Üà @  Uk Õˆ?d ['Žw @  Ul Öˆ?d Ð[¥© @  Um ׈?d \`þ~ @  Un ؈?d P\âR©  @  Uo Ùˆ?d \ÓZ'c @  Up Úˆ?d Ð\QË0½ @  Uq Ûˆ?d ]Ū @  Ur ܈?d P]Gt @  Us ݈?d ]ÐÂÀ @  Ut Þˆ?d Ð]RS @  Uu ߈?d ^ëb°7 @  Uv àˆ?d P^ió§é @  Uw áˆ?d ^õZÊ @  Ux âˆ?d Ð^wË @  Uy ãˆ?d _ã" @  Uz äˆ?d P_a5Ý @  U{ åˆ?d _öÂ!i @  UuÐ`| æˆ?d Ð_tS6· @  U} çˆ?d (`9Î÷ @  U~ èˆ?d h`”¨Ù) @  U éˆ?d ¨`ù÷Fù @  U€ êˆ?d è`{fQ' @  U ëˆ?d (aï¬s0 @  U‚ ìˆ?d ham=dî @  Uƒ íˆ?d ¨aúopZ @  U„ îˆ?d èaxþg„ @  U… ïˆ?d (b\xèq @  U† ðˆ?d hbÞéÿ¯ @  U‡ ñˆ?d ¨bB@OŒ @  Uˆ òˆ?d èbÀÑXR @  U‰ óˆ?d (cTzE @  UŠ ôˆ?d hcÖŠm› @  U‹ õˆ?d ¨cAØy/ @  UŒ öˆ?d ècÃInñ @  U ÷ˆ?d (d•Ð& @  UŽ øˆ?d hd„Çø @  U ùˆ?d ¨dµ I; @  U úˆ?d èd7^å @  U‘ ûˆ?d (e£W|ò @  U’ üˆ?d he!Æk, @  U“ ýˆ?d ¨e¶”˜ @  U” þˆ?d èe4hF @  U• ÿˆ?d (fÅÊà @  U– ‰?d hfTÝ> @  U— ‰?d ¨fým @  U˜ ‰?d èfƒlzà @  U™ ‰?d (g¦XÔ @  Uš ‰?d hg•7O  @  U› ‰?d ¨ge[¾ @  Uœ ‰?d èg€ôL` @  U ‰?d (hh™¥ @  Už ‰?d hhêš{ @  UŸ  ‰?d ¨hÊ3 @  U   ‰?d èhH—$Ö @  U¡  ‰?d (iÜ]Á @  U¢  ‰?d hi^Ì @  U£  ‰?d ¨iÉž« @  U¤ ‰?d èiKu @  U¥ ‰?d (jo‰€ @  U¦ ‰?d hjíŠ^ @  U§ ‰?d ¨jq±:} @  U¨ ‰?d èjó -£ @  U© ‰?d (kgê´ @  Uª ‰?d hkå{j @  U« ‰?d ¨kr) Þ @  U¬ ‰?d èkð¸ @  U­ ‰?d (l5d¥× @  U® ‰?d hl·õ²  @  U¯ ‰?d ¨l†ý<Ê @  U° ‰?d èll+ @  U± ‰?d (m¦  @  U² ‰?d hm7Ý @  U³ ‰?d ¨m…e i @  U´ ‰?d èmô· @  Uµ ‰?d (n¾Å«ž @  U¶  ‰?d hnÝ @  UÇ 1‰?d ¨rô—m> @  UÈ 2‰?d èrvzà @  UÉ 3‰?d (sâÌX÷ @  UÊ 4‰?d hs`]O) @  UË 5‰?d ¨s÷[ @  UÌ 6‰?d èsužLC @  UÍ 7‰?d (t°Bò” @  UÎ 8‰?d ht2ÓåJ @  UÏ 9‰?d ¨tÛk‰ @  UÐ :‰?d ètJ|W @  UÑ ;‰?d (u€^@ @  UÒ <‰?d hu—Iž @  UÓ =‰?d ¨uC]* @  UÔ >‰?d èu‚ÒJô @  UÕ ?‰?d (v˳éÌ @  UÖ @‰?d hvI"þ @  U× A‰?d ¨vÕ‹N1 @  UØ B‰?d èvWYï @  UÙ C‰?d (wÃÐ{ø @  UÚ D‰?d hwAAl& @  UÛ E‰?d ¨wÖx’ @  UÜ F‰?d èwT‚oL @  UÝ G‰?d (x¼ï®‰ @  UÞ H‰?d hx>~¹W @  Uß I‰?d ¨xp$ @  Uà J‰?d èxœáú @  Uá K‰?d (y+%í @  Uâ L‰?d€ hyKýÅ3 @  V M‰?d ¨y=î™® @  V N‰?d èy¿Žp @  V O‰?d (z^°úh @  V P‰?d hzÜ!í¶ @  V Q‰?d ¨zŽ:ï @  V R‰?d èz «1 @  V S‰?d ({VÓh\ @  V T‰?d h{ÔB‚ @  V U‰?d ¨{†YÛ @  V V‰?d è{ȇ @  V W‰?d (|]Â? @  V X‰?d h|†ÌÕá @  V Y‰?d ¨|Ô×:¸ @  V Z‰?d è|VF-f @  V [‰?d (}¡Ÿnë @  V \‰?d h}#y5 @  V ]‰?d ¨}q–l @  V ^‰?d è}ó„² @  V _‰?d (~üÌv @  V `‰?d h~ mÛ¨ @  V a‰?d ¨~_v4ñ @  V b‰?d è~Ýç#/ @  V c‰?d (‡Ÿ^B @  V d‰?d hIœ @  V e‰?d ¨uЀ'W¦Å @  V f‰?d èÕ„± @  V g‰?d @€¢áåZ @  V h‰?d €€‚ç¤ @  V i‰?d À€rkÝ @  V j‰?d ¢#‘5 @  V k‰?d @%n> @  V l‰?d €6ÐlÀ @  V! m‰?d ÀƯ–¹ @  V" n‰?d ‚[ë6x @  V# o‰?d @‚¥ñõ @  V$ p‰?d €‚…÷ @  V% q‰?d À‚u{ ø @  V& r‰?d ƒ¥3 @  V' s‰?d @ƒ­’gK @  V( t‰?d €ƒgeµ @  V) u‰?d Àƒ}ŸÌ @  V* v‰?d „dVlà @  V+ w‰?d @„ÿÍ( @  V, x‰?d €„ßéÏÖ @  V- y‰?d À„/–5¯ @  V. z‰?d …ÿÞ¹G @  V/ {‰?d @…ZÞaü @  V0 |‰?d €…z+c @  V1 }‰?d À…ŠT™{ @  V2 ~‰?d †9º @  V3 ‰?d @†™+‚â @  V4 €‰?d €†¹Þ€ @  V5 ‰?d À†I¡ze @  V6 ‚‰?d ‡™éö @  V7 ƒ‰?d @‡‘HÖ @  V8 „‰?d €‡±½( @  V9 …‰?d À‡AÂèQ @  V: †‰?d ˆu=dL @  V; ‡‰?d @ˆîwŧ @  V< ˆ‰?d €ˆ΂ÇY @  V= ‰‰?d Àˆ>ý=  @  V> Љ?d ‰îµ±È @  V? ‹‰?d @‰ô´HQ @  V@ Œ‰?d €‰ÔAJ¯ @  VA ‰?d À‰ßP‹Ö @  VBމ?d ŠB+ @  VC‰?d @мè @  VD‰?d €Šœûêî @  VE‘‰?d ÀŠl„— @  VF’‰?d ‹¼Ìœ @  VG“‰?d @‹´mz$ @  VH”‰?d €‹”˜xÚ @  VI•‰?d À‹dç‚£ @  VJ–‰?d Œ}©q¬ @  VK—‰?d @ŒæãÐG @  VL˜‰?d €ŒÆÒ¹ @  VM™‰?d ÀŒ6i(À @  VNš‰?d æ!¤( @  VO›‰?d @C!|“ @  VPœ‰?d €cÔ~m @  VQ‰?d À“«„ @  VRž‰?d Žï$Õ @  VSŸ‰?d @ŽmBÞ @  VT ‰?d €ŽM·Üð @  VU¡‰?d À޽È&‰ @  VV¢‰?d m€ªa @  VW£‰?d @e!L: @  VX¤‰?d €EÔNÄ @  VY¥‰?d Àµ«´½ @  VZ¦‰?d  u @  V[§‰?d @?©ä @  V\¨‰?d €°Ê« @  V]©‰?d À@µQc @  V^ª‰?d ‘ýÝ‹ @  V_«‰?d @‘$û"€ @  V`¬‰?d €‘ ~ @  Va­‰?d À‘ôqÚ @  Vb®‰?d ’i5zÆ @  Vc¯‰?d @’—/¹Á @  Vd°‰?d €’·Ú»? @  Ve±‰?d À’G¥AF @  Vf²‰?d “—íÍ® @  Vg³‰?d @“ŸL+õ @  Vh´‰?d €“¿¹)  @  Viµ‰?d À“OÆÓr @  Vj¶‰?d ”Vˆ } @  Vk·‰?d @”Í– @  Vl¸‰?d €”í7ƒh @  Vm¹‰?d À”Hy @  Vnº‰?d •Íõù @  Vo»‰?d @•h-B @  Vp¼‰?d €•Hõ/¼ @  Vq½‰?d À•¸ŠÕÅ @  Vr¾‰?d –%Îu @  Vs¿‰?d @–¶3šÎ @  VtÀ‰?d €––Ƙ0 @  VuÁ‰?d À–f¹bI @  Vv‰?d —¶ñî¡ @  VwÉ?d @—¾Pú @  Vxĉ?d €—ž¥  @  Vyʼn?d À—nÚð} @  VzƉ?d ˜Z%|` @  V{lj?d @˜ÁoÝ‹ @  V|ȉ?d €˜ášßu @  V}ɉ?d À˜å%  @  V~ʉ?d ™Á­©ä @  Vˉ?d @™8ú`L @  V€̉?d €™b² @  V͉?d À™èp˜Ë @  V‚Ή?d šu48  @  Vƒω?d @š‹.û  @  V„Љ?d €š«Ûùó @  V…щ?d Àš[¤Š @  V†Ò‰?d ›‹ìb @  V‡Ó‰?d @›ƒMi9 @  VˆÔ‰?d €›£¸kÇ @  V‰Õ‰?d À›SÇ‘¾ @  VŠÖ‰?d œJ‰b± @  V‹׉?d @œÑÃÃZ @  VŒ؉?d €œñ6Á¤ @  VÙ‰?d ÀœI;Ý @  VŽÚ‰?d Ñ·5 @  VÛ‰?d @toŽ @  V܉?d €Tômp @  V‘݉?d À¤‹—  @  V’Þ‰?d ž9Ï7È @  V“߉?d @žZbÍ @  V”à‰?d €žz—Ïí @  V•á‰?d ÀžŠè5” @  V–â‰?d ŸZ ¹| @  V—ã‰?d @ŸR_' @  V˜ä‰?d €Ÿrô]Ù @  V™å‰uР?d ÀŸ‚‹§  @  Všæ‰?d  ó€yÆ @  V›ç‰?d X hÊØ- @  Vœè‰?d ˜ H?ÚÓ @  Vé‰?d Ø ¸@ ª @  Vžê‰?d ¡h¬B @  VŸë‰?d X¡ÜSI @  V ì‰?d ˜¡üûQ· @  V¡í‰?d Ø¡ „«Î @  V¢î‰?d ¢‘À  @  V£ï‰?d X¢oÚÈ @  V¤ð‰?d ˜¢O/Êö @  V¥ñ‰?d Ø¢¿P0 @  V¦ò‰?d £o¼g @  V§ó‰?d X£g¹Z< @  V¨ô‰?d ˜£GLX @  V©õ‰?d Ø£·3¢» @  Vªö‰?d ¤®}Q´ @  V«÷‰?d X¤57ð_ @  V¬ø‰?d ˜¤Âò¡ @  V­ù‰?d ؤ彨 @  V®ú‰?d ¥5õ„0 @  V¯û‰?d X¥õ\‹ @  V°ü‰?d ˜¥°^u @  V±ý‰?d Ø¥@¤  @  V²þ‰?d ¦Ý;Í @  V³ÿ‰?d X¦žEß¼ @  V´Š?d ˜¦¾°ÝB @  VµŠ?d ئNÏ'; @  V¶Š?d §ž‡«Ó @  V·Š?d X§–&Mˆ @  V¸Š?d ˜§¶ÓOv @  V¹Š?d اF¬µ @  VºŠ?d ¨rS9 @  V»Š?d X¨é˜ù @  V¼Š?d ˜¨Éìš @  V½ Š?d ب9“`~ @  V¾ Š?d ©éÛì– @  V¿ Š?d X©óÚ @  VÀ Š?d ˜©Ó/ñ @  VÁ Š?d Ø©#Píˆ @  VŠ?d ª¾MI @  VÊ?d Xª@ŽN @  VÄŠ?d ˜ª`ûŒ° @  VÅŠ?d ت„vÉ @  VÆŠ?d «@Ìú! @  VÇŠ?d X«Hmz @  VÈŠ?d ˜«h˜„ @  VÉŠ?d Ø«˜çäý @  VÊŠ?d ¬©ò @  VËŠ?d X¬ã¶ @  VÌŠ?d ˜¬:´ç @  VÍŠ?d جÊiNž @  VΊ?d ­!Âv @  VÏŠ?d X­¿!Í @  VЊ?d ˜­ŸÔ3 @  VÑŠ?d Ø­o«âJ @  VÒŠ?d ®òïB‹ @  VÓŠ?d X®‘B¸P @  VÔ Š?d ˜®±·º® @  VÕ!Š?d Ø®AÈ@× @  VÖ"Š?d ¯‘€Ì? @  V×#Š?d X¯™!*d @  VØ$Š?d ˜¯¹Ô(š @  VÙ%Š?d دI«Òã @  VÚ&Š?d °÷unQ @  VÛ'Š?d X°l?Ϻ @  VÜ(Š?d ˜°LÊÍD @  VÝ)Š?d ذ¼µ7= @  VÞ*Š?d ±lý»Õ @  Vß+Š?d X±ØûDÞ @  Và,Š?d ˜±øF  @  Vá-Š?d رq¼Y @  Vâ.Š?d€ ²áö> @  W/Š?d X²þ­‹ @  W0Š?d ˜²ÞX‰î @  W1Š?d زënˆz @  W2Š?d ³;&’ @  W3Š?d X³ý5½³ @  W4Š?d ˜³ÝÀ¿M @  W5Š?d سã N @  W6Š?d ´úCéA @  W 7Š?d X´¤@³G @  W 8Š?d ˜´„µ±¹ @  W 9Š?d Ø´±ƒ°- @  W :Š?d µaË<Å @  W ;Š?d Xµ§Ø…ä @  W<Š?d ˜µ‡-‡ @  W=Š?d صAù @  W>Š?d ¶‰¼8 @  W?Š?d X¶ß±¨ @  W@Š?d ˜¶ÿDªá @  WAŠ?d ضÊr«u @  WBŠ?d ·:' @  WCŠ?d X·Ü)ž¼ @  WDŠ?d ˜·üÜœB @  WEŠ?d Ø·Â9A @  WFŠ?d ¸öîµ\ @  WGŠ?d X¸¨íïZ @  WHŠ?d ˜¸ˆí¤ @  WIŠ?d ظ½.ì0 @  WJŠ?d ¹mf`Ø @  WKŠ?d X¹«uÙù @  WLŠ?d ˜¹‹€Û @  WMŠ?d ع êgT @  W NŠ?d º”®Ç• @  W!OŠ?d Xº¯ýÿ @  W"PŠ?d ˜ºý @  W#QŠ?d غº>ü @  W$RŠ?d »jvpý @  W%SŠ?d X»¬eÉÜ @  W&TŠ?d ˜»ŒË" @  W'UŠ?d Ø»²]n! @  W(VŠ?d ¼«. @  W)WŠ?d X¼õÇ( @  W*XŠ?d ˜¼ÕåÅÖ @  W+YŠ?d ؼàÓÄB @  W,ZŠ?d ½0›Hª @  W-[Š?d X½öˆñ‹ @  W.\Š?d ˜½Ö}óu @  W/]Š?d ؽEh– @  W0^Š?d ¾ØUÈW @  W1_Š?d X¾~±Éa @  W2`Š?d ˜¾^DËŸ @  W3aŠ?d ؾkrÊ  @  W4bŠ?d ¿»:Fã @  W5cŠ?d X¿})ÿ @  W6dŠ?d ˜¿]Üý< @uÐÀ  W7eŠ?d Ø¿cX? @  W8fŠ?d 0Àá m @  W9gŠ?d pÀYâSk @  W:hŠ?d °ÀyQ• @  W;iŠ?d ðÀL!P @  W<jŠ?d 0ÁœiÜé @  W=kŠ?d pÁZzeÈ @  W>lŠ?d °Ázg6 @  W?mŠ?d ðÁVâÝ÷ @  W@nŠ?d 0Â˦}6 @  WAoŠ?d pÂðõEÜ @  WBpŠ?d °ÂÐG" @  WCqŠ?d ðÂå6F¶ @  WDrŠ?d 0Ã5~Ê^ @  WEsŠ?d pÃóms @  WFtŠ?d °ÃÓ˜q @  WGuŠ?d ðÃíUÔ‚ @  WHvŠ?d 0Äô' @  WIwŠ?d pĪ}‹ @  WJxŠ?d °ÄŠíu @  WKyŠ?d ðÄ¿Û~á @  WLzŠ?d 0Åo“ò  @  WM{Š?d pÅ©€K( @  WN|Š?d °Å‰uIÖ @  WO}Š?d ðÅÒ5 @  WP~Š?d 0Ƈ]rô @  WQŠ?d pÆÌ/2A @  WR€Š?d °ÆìÚ0¿ @  WSŠ?d ðÆÙì1+ @  WT‚Š?d 0Ç ¤½Ã @  WUƒŠ?d pÇÏ·â @  WV„Š?d °ÇïB @  WW…Š?d ðÇÑ£ @  WX†Š?d 0Èåp/ @  WY‡Š?d pÈ»su @  WZˆŠ?d °È›†wú @  W[‰Š?d ðÈ®°vn @  W\ŠŠ?d 0É~øú† @  W]‹Š?d pɸëC§ @  W^ŒŠ?d °É˜AY @  W_Š?d ðÉtý  @  W`ŽŠ?d 0ʇ0]Ë @  WaŠ?d pʼce! @  WbŠ?d °Êœ–gß @  Wc‘Š?d ðÊ© fK @  Wd’Š?d 0Ëyèê£ @  We“Š?d pË¿ûS‚ @  Wf”Š?d °ËŸQ| @  Wg•Š?d ðË¡Ãô @  Wh–Š?d 0̸p @  Wi—Š?d pÌæŽ]v @  Wj˜Š?d °ÌÆ{_ˆ @  Wk™Š?d ðÌóM^ @  WlšŠ?d 0Í#Òô @  Wm›Š?d pÍåkÕ @  WnœŠ?d °ÍÅãi+ @  WoŠ?d ðÍVòÈ @  WpžŠ?d 0ÎËËR  @  WqŸŠ?d pÎm/S? @  Wr Š?d °ÎMÚQÁ @  Ws¡Š?d ðÎxìPU @  Wt¢Š?d 0Ϩ¤Ü½ @  Wu£Š?d pÏn·eœ @  Wv¤Š?d °ÏNBgb @  Ww¥Š?d ðÏpÂa @  Wx¦Š?d 0ÐÎQ~Ó @  Wy§Š?d pÐR$Õ @  Wz¨Š?d °Ð°§&+ @  W{©Š?d ðÐ…‘'¿ @  W|ªŠ?d 0ÑUÙ«W @  W}«Š?d pÑ“Êv @  W~¬Š?d °Ñ³?ˆ @  W­Š?d ðÑ|šx @  W€®Š?d 0Òá@:¹ @  W¯Š?d pÒÚS @  W‚°Š?d °Òúæ­ @  Wƒ±Š?d ðÒÏÐ9 @  W„²Š?d 0Ó˜Ñ @  W…³Š?d pÓÙ‹4ð @  W†´Š?d °Óù~6 @  W‡µŠ?d ðÓdz“  @  Wˆ¶Š?d 0ÔÞý` @  W‰·Š?d pÔ€þ: @  WЏŠ?d °Ô  8ú @  W‹¹Š?d ðÔ•=9n @  WŒºŠ?d 0ÕEuµ† @  W»Š?d pÕƒf § @  W޼Š?d °Õ£“Y @  W½Š?d ðÕ0ÿ•º @  W¾Š?d 0Ö­»5{ @  W‘¿Š?d pÖû!\ @  W’ÀŠ?d °ÖÛú#¢ @  W“ÁŠ?d ðÖîÌ"6 @  W”Š?d 0×>„®Þ @  W•Ê?d p×ø—ÿ @  W–ÄŠ?d °×Øb @  W—ÅŠ?d ð×毰 @  W˜ÆŠ?d 0ØÒP< @  W™ÇŠ?d pØŒSf @  WšÈŠ?d °Ø¬¦dç @  W›ÉŠ?d ðØ™es @  WœÊŠ?d 0ÙIØé› @  WËŠ?d pÙËPº @  WžÌŠ?d °Ù¯>RD @  WŸÍŠ?d ðÙ-Tî @  W Ί?d 0Ú°NÖ @  W¡ÏŠ?d pÚ‹Cv< @  W¢Њ?d °Ú«¶t @  W£ÑŠ?d ðÚž€uV @  W¤ÒŠ?d 0ÛNÈù¾ @  W¥ÓŠ?d pÛˆÛ@Ÿ @  W¦ÔŠ?d °Û¨.Ba @  W§ÕŠ?d ðÛ–ãçb @  W¨ÖŠ?d 0Ü­m @  W©׊?d pÜÑ®Nk @  WªØŠ?d °Üñ[L• @  W«ÙŠ?d ðÜÄmM @  W¬ÚŠ?d 0Ý%Áé @  W­ÛŠ?d pÝÒ6xÈ @  W®ÜŠ?d °ÝòÃz6 @  W¯ÝŠ?d ðÝa¯áÕ @  W°ÞŠ?d 0ÞüëA @  W±ߊ?d pÞZ@" @  W²àŠ?d °ÞzúBÜ @  W³áŠ?d ðÞOÌCH @  W´âŠ?d 0ߟ„Ï  @  WµãŠ?d pßY—v @  W¶äŠ?d uÐà/°ßybt @  W·åŠ?d ðßG¯Ñ| @  W¸æŠ?d Hà^ Š @  W¹çŠ?d ˆà¢lÀ¬ @  WºèŠ?d Èà ý×r @  W»éŠ?d áGMÐ @  W¼êŠ?d HáŃZ @  W½ëŠ?d ˆá¡ôö @  W¾ìŠ?d Èá#eáÑ @  W¿íŠ?d âÝì @  WÀîŠ?d Hâ’LûÑ @  WÁïŠ?d ˆâ {Ö @  WÂðŠ?d Èâ‰êÁÅ @  WÃñŠ?d ãî[g @  WÄòŠ?d Hãl”L¹ @  WÅóŠ?d ˆããภ@  WÆôŠ?d ÈãŠr÷f @  WÇõŠ?d ä/`¶´ @  WÈöŠ?d Hä­ñ¡j @  WÉ÷Š?d ˆäQ–îL @  WÊøŠ?d ÈäÓù’ @  WËùŠ?d å´èc0 @  WÌúŠ?d Hå6ytî @  WÍûŠ?d ˆåRØï @  WÎüŠ?d ÈåПÏ1 @  WÏýŠ?d æ\&ãÍ @  WÐþŠ?d HæÞ·ô @  WÑÿŠ?d ˆæHÆôŠ @  WÒ‹?d ÈæÊWãT @  WÓ‹?d ç­¸yö @  WÔ‹?d Hç/)n( @  WÕ‹?d ˆçK^Â) @  WÖ‹?d ÈçÉÏÕ÷ @  W׋?d èAlë7 @  WØ‹?d HèÃýüé @  WÙ‹?d ˆè?š³Ï @  WÚ‹?d Èè½ ¤ @  WÛ ‹?d éÚä>³ @  WÜ ‹?d HéXu)m @  WÝ ‹?d ˆé<…l @  WÞ ‹?d È龓’² @  Wß ‹?d ê#,™þ @  Wà‹?d Hê¡½Ž  @  Wá‹?d ˆê8Š£ê @  Wâ‹?d€ Èê’ f @  X‹?d ë/rí @  X‹?d Hë–¾e3 @  X‹?d ˆë7€2ß @  X‹?d Èëµ% @  X‹?d ìÞ±;© @  X‹?d Hì\ ,w @  X‹?d ˆìnõ<+ @  X‹?d Èììd+õ @  X ‹?d íNÂJº @  X ‹?d HíÌS]d @  X ‹?d ˆímm ˆ @  X ‹?d ÈíïüV @  X ‹?d îVP0 @  X‹?d Hî‚ÇGî @  X‹?d ˆîåT2b @  X ‹?d ÈîgÅ%¼ @  X!‹?d ïÅcDó @  X"‹?d HïGòS- @  X#‹?d ˆïæÌÁ @  X$‹?d Èïd] @  X%‹?d ð¨mB  @  X&‹?d Hð*üUÔ @  X'‹?d ˆð)Eˆ @  X(‹?d Èðš¸RV @  X)‹?d ñ83 @  X*‹?d Hñº$Ç @  X+‹?d ˆñ±s+ @  X,‹?d Èñ™ dõ @  X-‹?d òvŠ)“ @  X.‹?d Hòô>M @  X/‹?d ˆò9U­ @  X 0‹?d Èò¨Bs @  X!1‹?d ó?#< @  X"2‹?d Hó½Ÿ4â @  X#3‹?d ˆó¡c @  X$4‹?d Èóž0tÐ @  X%5‹?d ôõjx @  X&6‹?d Hôw}¦ @  X'7‹?d ˆôEÔmú @  X(8‹?d ÈôÇEz$ @  X)9‹?d õeãk @  X*:‹?d Hõçr µ @  X+;‹?d ˆõFL[Y @  X,<‹?d ÈõÄÝL‡ @  X-=‹?d ö+wá @  X.>‹?d Hö©æ? @  X/?‹?d ˆö>%v¢ @  X0@‹?d Èö¼´a| @  X1A‹?d ÷3 @  X2B‹?d H÷œƒí @  X3C‹?d ˆ÷=½@ @  X4D‹?d È÷¿,Wß @  X5E‹?d øù=6e @  X6F‹?d Hø{¬!» @  X7G‹?d ˆøIy1ç @  X8H‹?d ÈøËè&9 @  X9I‹?d ùiNGv @  X:J‹?d HùëßP¨ @  X;K‹?d ˆùJáD @  X<L‹?d ÈùÈpš @  X=M‹?d ú'Ú]ü @  X>N‹?d Hú¥KJ" @  X?O‹?d ˆúàn'P @  X@P‹?d Èúbÿ0Ž @  XAQ‹?d ûÀYQÁ @  XBR‹?d HûBÈF @  XCS‹?d ˆûãöó @  XDT‹?d Èûag- @  XEU‹?d ü Ç… @  XFV‹?d HüˆV[ @  XGW‹?d ˆüºƒ @  XHX‹?d Èü8Ù @  XIY‹?d ýš´i– @  XJZ‹?d Hý%~H @  XK[‹?d ˆý¹)¤ @  XL\‹?d Èý;Š>z @  XM]‹?d þÔ s @  XN^‹?d HþV±d @  XO_‹?d ˆþ1"N @  XP`‹?d Èþ³³ @  XQa‹?d ÿgß @  XRb‹?d Hÿ“„p @  XSc‹?d ˆÿ2º'í @  XTuÐd‹?d Èÿ°+03 @  XUe‹?d Æ4•ƒ @  XVf‹?d `D¥‚] @  XWg‹?d  vp’ @  XXh‹?d àôá…ß @  XYi‹?d VGä @  XZj‹?d `ÔÖóN @  X[k‹?d  u褢 @  X\l‹?d à÷y³| @  X]m‹?d Óþ @  X^n‹?d `šBéÄ @  X_o‹?d  q`‚$ @  X`p‹?d àóñ•ú @  Xaq‹?d QWôµ @  Xbr‹?d `ÓÆãk @  Xcs‹?d  rø´‡ @  Xdt‹?d àði£Y @  Xeu‹?d ›É½ñ @  Xfv‹?d `Xª/ @  Xgw‹?d  +ºs @  Xhx‹?d à©­­ @  Xiy‹?d  ºÌâ @  Xjz‹?d `‰+Û< @  Xk{‹?d  (ŒÐ @  Xl|‹?d ઄› @  Xm}‹?d E.Öh @  Xn~‹?d `Ç¿Á¶ @  Xo‹?d  Mºõ¹ @  Xp€‹?d àÏ+âg @  Xq‹?d mƒ( @  Xr‚‹?d `ï”ö @  Xsƒ‹?d  N"à @  Xt„‹?d à̳ÔÄ @  Xu…‹?d Š¢µ~ @  Xv†‹?d `3¢  @  Xw‡‹?d  :æ²ü @  Xxˆ‹?d à¸w¥" @  Xy‰‹?d ÑÄm @  XzŠ‹?d ` ˜@Ó³ @  X{‹‹?d   9~„_ @  X|Œ‹?d à »ï“ @  X}‹?d TEÞç @  X~Ž‹?d ` ÖÔÉ9 @  X‹?d   p§”z @  X€‹?d à ò6ƒ¤ @  X‘‹?d Pâë @  X‚’‹?d ` Òõ5 @  Xƒ“‹?d   s?¢Ù @  X„”‹?d à ñ®µ @  X…•‹?d 𫝠@  X†–‹?d ` Ÿ¼q @  X‡—‹?d   *J¬- @  Xˆ˜‹?d à ¨Û»ó @  X‰™‹?d  }Ú¼ @  XŠš‹?d ` ˆìÍb @  X‹›‹?d   )ÒšŽ @  XŒœ‹?d à «CP @  X‹?d DéÀ6 @  XŽž‹?d `Æx×è @  XŸ‹?d  ¡ë¢d @  X ‹?d à#zµº @  X‘¡‹?d ÜÔõ @  X’¢‹?d `MÃ+ @  X“£‹?d  ¢s”Ç @  X”¤‹?d à ⃠@  X•¥‹?d ìÒÒ  @  X–¦‹?d `nCÅÒ @  X—§‹?d  \–ÕŽ @  X˜¨‹?d àÞÂP @  X™©‹?d |¡£ @  Xšª‹?d `þ0´Á @  X›«‹?d  _ã- @  Xœ¬‹?d àÝŸôó @  X­‹?d 25¹• @  Xž®‹?d `°¤®K @  XŸ¯‹?d  [†Å« @  X °‹?d àÙÒu @  X¡±‹?d {±³: @  X¢²‹?d `ù ¤ä @  X£³‹?d  Xó @  X¤´‹?d àÚäÖ @  X¥µ‹?d ±/ú~ @  X¦¶‹?d `3¾í  @  X§·‹?d  kýü @  X¨¸‹?d àƒúê" @  X©¹‹?d !\‹m @  Xªº‹?d `£Íœ³ @  X«»‹?d  óË_ @  X¬¼‹?d à€bÜ @  X­½‹?d oÈ‘ç @  X®¾‹?d `íY†9 @  X¯¿‹?d  z𿤠@  X°À‹?d àø ñz @  X±Á‹?d Z­5 @  X²‹?d `Ø<‡ë @  X³Ë?d  yÐ @  X´Ä‹?d àû“ÇÙ @  XµÅ‹?d ½‚¦c @  X¶Æ‹?d `?±½ @  X·Ç‹?d   Æ¡á @  X¸È‹?d àW¶? @  X¹É‹?d -ñ×p @  XºÊ‹?d `¯`À® @  X»Ë‹?d  ^—B @  X¼Ì‹?d àŒÏ€œ @  X½Í‹?d ceÍú @  X¾΋?d `áôÚ$ @  X¿Ï‹?d  ¤Ñ·V @  XÀЋ?d à&@ ˆ @  XÁÑ‹?d „æÁÇ @  XÂÒ‹?d `wÖ @  XÃÓ‹?d  §Iõ @  XÄÔ‹?d à%Ø–+ @  XÅÕ‹?d Nxˆƒ @  XÆÖ‹?d `ÌéŸ] @  XÇ׋?d  þ< @  XÈØ‹?d à|­˜ß @  XÉÙ‹?d Þ ù @  XÊÚ‹?d `\šîN @  XËÛ‹?d  ý¤¹¢ @  XÌÜ‹?d à5®| @  XÍÝ‹?d Ÿã @  XÎÞ‹?d `ôÄ @  XÏß‹?d  uH @  XÐà‹?d à÷ –– @  XÑá‹?d Uª÷Ù @  XÒâ‹?d `×;à @  XÓã‹?d  v·ëuÐ  @  XÔä‹?d àô” 5 @  XÕå‹?d 8 ÷q“ô @  XÖæ‹?d x uà„* @  X×ç‹?d ¸ G5”v @  XØè‹?d ø Ťƒ¨ @  XÙé‹?d 8!gâç @  XÚê‹?d x!å“õ9 @  XÛë‹?d ¸!D­¢Õ @  XÜì‹?d ø!Æ<µ  @  XÝí‹?d 8")–øm @  XÞî‹?d x"«ï³ @  Xßï‹?d ¸"@%„S @  Xàð‹?d ø"´“ @  Xáñ‹?d 8#`ò @  Xâò‹?d€ x#–@ùº @  Yó‹?d ¸#Ö?æ @  Yô‹?d ø#T®ñ¡ @  Yõ‹?d 8$úGä @  Yö‹?d x$xÖ: @  Y÷‹?d ¸$„±L @  Yø‹?d ø$ [ @  Yù‹?d 8%j4e÷ @  Yú‹?d x%è¥r) @  Y û‹?d ¸%ŒÒÞ( @  Y ü‹?d ø%CÉö @  Y ý‹?d 8&$ } @  Y þ‹?d x&¦1h£ @  Y ÿ‹?d ¸& IW¬ @  YŒ?d ø&ŽØ@r @  YŒ?d 8'Om@§ @  YŒ?d x'ÍüWy @  YŒ?d ¸'©‹ûx @  YŒ?d ø'+ì¦ @  YŒ?d 8(¨Bvñ @  YŒ?d x(*Óa/ @  YŒ?d ¸(Ö´.  @  YŒ?d ø(T%9× @  Y Œ?d 8)81â @  Y Œ?d x)º < @  Y Œ?d ¸)Þ×¼= @  Y Œ?d ø)\F«ã @  Y Œ?d 8*v¥h @  YŒ?d x*ô4 ¶ @  YŒ?d ¸*m'| @  YŒ?d ø*ï’0¢ @  YŒ?d 8+?!Ç @  Y Œ?d x+½° @  Y!Œ?d ¸+ÙǬ @  Y"Œ?d ø+[V»Æ @  Y#Œ?d 8,õ¿^ƒ @  Y$Œ?d x,w.I] @  Y%Œ?d ¸,‹I{ @  Y&Œ?d ø, Ø¥ @  Y'Œ?d 8-eÌ/ @  Y(Œ?d x-ç]8N @  Y)Œ?d ¸-ƒ*”O @  Y*Œ?d ø-»ƒ‘ @  Y+Œ?d 8.+X5 @  Y,Œ?d x.©É"Ä @  Y-Œ?d ¸.­I6Ò @  Y. Œ?d ø./Ø!  @  Y/!Œ?d 8/îm!Ù @  Y0"Œ?d x/lü6 @  Y1#Œ?d ¸/‹š @  Y2$Œ?d ø/ŠØ @  Y3%Œ?d 80ƒc'  @  Y4&Œ?d x0ò0þ @  Y5'Œ?d ¸0ý•Ø @  Y6(Œ?d ø0h @  Y7)Œ?d 81V3 @  Y8*Œ?d x1‘Aí @  Y9+Œ?d ¸1õöíì @  Y:,Œ?d ø1wgú2 @  Y;-Œ?d 82]„L¹ @  Y<.Œ?d x2ß[g @  Y=/Œ?d ¸2F"v­ @  Y>0Œ?d ø2ijas @  Y?1Œ?d 83º@„ @  Y@2Œ?d x38–WZ @  YA3Œ?d ¸3\áû[ @  YB4Œ?d ø3Þpì… @  YC5Œ?d 84p™ À @  YD6Œ?d x4ò @  YE7Œ?d ¸4oQ8 @  YF8Œ?d ø4ŒþFæ @  YG9Œ?d 85àêxÓ @  YH:Œ?d x5b{o  @  YI;Œ?d ¸5 à  @  YJ<Œ?d ø5„ÔÒ @  YK=Œ?d 86®~bY @  YL>Œ?d x6,ïu‡ @  YM?Œ?d ¸6Ø?t€ @  YN@Œ?d ø6Z®c^ @  YOAŒ?d 87›c‹ @  YPBŒ?d x7ŠtU @  YQCŒ?d ¸7}ýØT @  YRDŒ?d ø7ÿlÏŠ @  YSEŒ?d 88|4UÝ @  YTFŒ?d x8þ¥B @  YUGŒ?d ¸8 % @  YVHŒ?d ø8€Sû @  YWIŒ?d 89ìG$Î @  YXJŒ?d x9nÖ3 @  YYKŒ?d ¸9 ¡Ÿ @  YZLŒ?d ø9ˆ0ˆÏ @  Y[MŒ?d 8:¢Ó>D @  Y\NŒ?d x: B)š @  Y]OŒ?d ¸:¹uP @  Y^PŒ?d ø:;äŽ @  Y_QŒ?d 8;ëW4ë @  Y`RŒ?d x;iÆ#5 @  YaSŒ?d ¸; ±4 @  YbTŒ?d ø; ˜ê @  YcUŒ?d 8<!É}¯ @  YdVŒ?d x<£Xjq @  YeWŒ?d ¸<_?%W @  YfXŒ?d ø<Ý®2‰ @  YgYŒ?d 8=±º ¼ @  YhZŒ?d x=3+b @  Yi[Œ?d ¸=W\·c @  Yj\Œ?d ø=ÕÍ ½ @  Yk]Œ?d 8>ÿ.6 @  Yl^Œ?d x>}¿è @  Ym_Œ?d ¸>y?þ @  Yn`Œ?d ø>û®  @  YoaŒ?d 8?:õ @  YpbŒ?d x?¸Š+ @  YqcŒ?duÐ@7 ¸?Üý¹* @  YrdŒ?d ø?^l®ô @  YseŒ?d P@*g‚ @  YtfŒ?d @ ’| @  YugŒ?d Ð@T‘Zz @  YvhŒ?d A„ÙÖ’ @  YwiŒ?d PAºs‘ @  YxjŒ?d Ašáqo @  YykŒ?d ÐA\òÈN @  YzlŒ?d BÁ¶h @  Y{mŒ?d PBô€i @  Y|nŒ?d BÔukå @  Y}oŒ?d ÐBï&S @  Y~pŒ?d C?nßç @  YqŒ?d PCðUU @  Y€rŒ?d CРWé @  YsŒ?d ÐC³îÈ @  Y‚tŒ?d DýÇ @  YƒuŒ?d PD:ËS @  Y„vŒ?d D>­ @  Y…wŒ?d ÐDD=D« @  Y†xŒ?d E”uÈC @  Y‡yŒ?d PEª¸m@ @  YˆzŒ?d EŠMo¾ @  Y‰{Œ?d ÐEL^ÖŸ @  YŠ|Œ?d FÑv^ @  Y‹}Œ?d PFä,wÊ @  YŒ~Œ?d FÄÙu4 @  YŒ?d ÐF«5 @  YŽ€Œ?d G_ã¹i @  YŒ?d PGÌ"Š @  Y‚Œ?d Gìz t @  Y‘ƒŒ?d ÐG*i™U @  Y’„Œ?d H–H @  Y“…Œ?d PH+ Ü @  Y”†Œ?d H U" @  Y•‡Œ?d ÐHUVL$ @  Y–ˆŒ?d I…ÀÌ @  Y—‰Œ?d PI»ÓeÏ @  Y˜ŠŒ?d I›&g1 @  Y™‹Œ?d ÐI]5Þ @  YšŒŒ?d JÀq~Ñ @  Y›Œ?d PJõGE @  YœŽŒ?d JÕ²}» @  YŒ?d ÐJîáEQ @  YžŒ?d K>©É¹ @  YŸ‘Œ?d PK¼Ãuê @  Y ’Œ?d Kœ6w @  Y¡“Œ?d ÐKZ%Î5 @  Y¢”Œ?d LCk=: @  Y£•Œ?d PLv]<® @  Y¤–Œ?d LV¨>P @  Y¥—Œ?d ÐL«dV @  Y¦˜Œ?d MØãè¾ @  Y§™Œ?d PMæ.M½ @  Y¨šŒ?d MÆÛOC @  Y©›Œ?d ÐMÈöb @  YªœŒ?d NŒV£ @  Y«Œ?d PN¨ºW7 @  Y¬žŒ?d NˆOUÉ @  Y­ŸŒ?d ÐN.«Tÿ @  Y® Œ?d OþãØ @  Y¯¡Œ?d POmCô @  Y°¢Œ?d OMzA  @  Y±£Œ?d ÐO‹iø+ @  Y²¤Œ?d P5·D™ @  Y³¥Œ?d PPE  @  Y´¦Œ?d P tGó @  Yµ§Œ?d ÐP~wõ @  Y¶¨Œ?d Q®?‘ @  Y·©Œ?d PQò4 @  Y¸ªŒ?d Q°6à @  Y¹«Œ?d ÐQvÁ @  Yº¬Œ?d RëP/ @  Y»­Œ?d PRÞf.” @  Y¼®Œ?d Rþ“,j @  Y½¯Œ?d ÐRÅÀ€ @  Y¾°Œ?d Sˆ˜h @  Y¿±Œ?d PS9å"© @  YÀ²Œ?d S W @  YÁ³Œ?d ÐSß™v @  Y´Œ?d TÆMjy @  YõŒ?d PTó{kí @  YĶŒ?d TÓŽi @  YÅ·Œ?d ÐT3 @  YƸŒ?d U]Å¿ý @  YǹŒ?d PUcþ @  YȺŒ?d UCý @  YÉ»Œ?d ÐU…î¡! @  YʼŒ?d Vªà @  Y˽Œ?d PV-œt @  Y̾Œ?d V iŠ @  YÍ¿Œ?d ÐV[Ý­ @  YÎÀŒ?d W‹•šE @  YÏÁŒ?d PWù¦ @  YÐÂŒ?d W8 X @  YÑÃŒ?d ÐWþºy @  YÒÄŒ?d XÊà6d @  YÓÅŒ?d PXÿÖ7ð @  YÔÆŒ?d Xß#5 @  YÕÇŒ?d ÐX o @  YÖÈŒ?d YQhãà @  Y×ÉŒ?d PYo¥Fã @  YØÊŒ?d YOPD @  YÙËŒ?d ÐY‰Cý< @  YÚÌŒ?d Z]ý @  YÛÍŒ?d PZ!1\i @  YÜÎŒ?d ZÄ^— @  YÝÏŒ?d ÐZ:—f} @  YÞÐŒ?d [êßê• @  YßÑŒ?d P[hµVÆ @  YàÒŒ?d [H@T8 @  YáÓŒ?d Ð[ŽSí @  YâÔŒ?d€ \VZé @  ZÕŒ?d P\‚- « @  ZÖŒ?d \¢Ø¢U @  Z׌?d Ð\9’¾ @  ZØŒ?d ]éÚV @  ZÙŒ?d P]¥u/ @  ZÚŒ?d ]9PwÑ @  ZÛŒ?d Ð]1ñ‘Š @  ZÜŒ?d ^¬µ1K @  Z ÝŒ?d P^\ÊË2 @  Z ÞŒ?d ^|?ÉÌ @  Z ߌ?d Ð^’3 @  Z àŒ?d _ÏÚ¿ÿ @  Z áŒ?d P_?¥E† @  ZâŒ?d _PGx @  ZuÐ`ãŒ?d Ð_ºPŸÃ @  ZäŒ?d (`¨*[ @  ZåŒ?d h`ô×Ð" @  ZæŒ?d ¨`Ô"ÒÜ @  ZçŒ?d è`Ohs7 @  ZèŒ?d (aŸ ÿß @  ZéŒ?d hao_¦ @  ZêŒ?d ¨aOªX @  ZëŒ?d èaG á @  ZìŒ?d (bÚOA @  ZíŒ?d hb*0»» @  ZîŒ?d ¨b ŹE @  ZïŒ?d èbôßzB @  ZðŒ?d (c$—öª @  ZñŒ?d hcÔè Ó @  ZòŒ?d ¨cô- @  ZóŒ?d èc@ñ& @  Z ôŒ?d (dYU) @  Z!õŒ?d hd©*øP @  Z"öŒ?d ¨d‰ßú® @  Z#÷Œ?d èd•[E @  Z$øŒ?d (eÂÝ×­ @  Z%ùŒ?d he2¢-Ô @  Z&úŒ?d ¨eW/* @  Z'ûŒ?d èeöÉq @  Z(üŒ?d (f‡²i° @  Z)ýŒ?d hfwÍ“É @  Z*þŒ?d ¨fW8‘7 @  Z+ÿŒ?d èf¦dc @  Z,?d (gv,ó‹ @  Z-?d hg†S ò @  Z.?d ¨g¦¦  @  Z/?d èg¦Ó· @  Z0?d (h7Y_ª @  Z1?d hhÇ&¥Ó @  Z2?d ¨hçÓ§- @  Z3?d èh|™Æ @  Z4?d (i¬ÑŠ. @  Z5 ?d hi\®pW @  Z6 ?d ¨i|[r© @  Z7 ?d èitú”ò @  Z8 ?d (jé¾43 @  Z9 ?d hjÁÎJ @  Z:?d ¨j94Ì´ @  Z;?d èjÇ.³ @  Z<?d (kfƒ[ @  Z=?d hkçy" @  Z>?d ¨kÇì{Ü @  Z??d èkÝí‚E @  Z@?d (lÄ£qJ @  ZA?d hl4Ü‹3 @  ZB?d ¨l)‰Í @  ZC?d èlc(& @  ZD?d (m_+¤Î @  ZE?d hm¯T^· @  ZF?d ¨m¡\I @  ZG?d èm‡º @  ZH?d (nDÓ @  ZI?d hnê;ઠ@  ZJ?d ¨nÊÎâT @  ZK?d èn©c @  ZL ?d (oy+”g @  ZM!?d ho‰Tn @  ZN"?d ¨o©¡là @  ZO#?d èo ¡´[ @  ZP$?d (p²é @  ZQ%?d hpBò @  ZR&?d ¨pbõðn @  ZS'?d èpù¿Q… @  ZT(?d (q)÷Ým @  ZU)?d hqÙˆ' @  ZV*?d ¨qù}%ê @  ZW+?d èqñÜñ @  ZX,?d (rl˜cp @  ZY-?d hrœç™  @  ZZ.?d ¨r¼›÷ @  Z[/?d èrBXð @  Z\0?d (s’@Ô @  Z]1?d hsb?.a @  Z^2?d ¨sBÊ,Ÿ @  Z_3?d èsöÌÓ” @  Z`4?d (tï‚ › @  Za5?d htýÚâ @  Zb6?d ¨t?Ø @  Zc7?d èt¤By÷ @  Zd8?d (ut õ @  Ze9?d hu„uf @  Zf:?d ¨u¤€ ˜ @  Zg;?d èu¬!ëà @  Zh<?d (v1eK @  Zi=?d hvÁ±{ @  Zj>?d ¨váï³… @  Zk??d èvr\O @  Zl@?d (w¢ZЧ @  ZmA?d hwR%*Þ @  ZnB?d ¨wrÐ(  @  ZoC?d èw×Ðð› @  ZpD?d (xã/|† @  ZqE?d hxP†ÿ @  ZrF?d ¨x3¥„ @  ZsG?d èx¨ï%ê @  ZtH?d (yx§© @  ZuI?d hyˆØS{ @  ZvJ?d ¨y¨-Q… @  ZwK?d èy Œ·Þ @  ZxL?d (z=È @  ZyM?d hzÍ·íf @  ZzN?d ¨zíBï˜ @  Z{O?d èzX,Ÿ @  Z|P?d ({àw @  Z}Q?d h{3oZ @  Z~R?d ¨{šXð @  ZS?d è{êÍ‘X @  Z€T?d (|óƒbW @  ZU?d h|ü˜. @  Z‚V?d ¨|# šÐ @  ZƒW?d è|¸C;; @  Z„X?d (}h ·Ó @  Z…Y?d h}˜tMª @  Z†Z?d ¨}¸OT @  Z‡[?d è}° © @  Zˆ\?d (~-d Î @  Z‰]?d h~Ýó· @  ZŠ^?d ¨~ýîñI @  Z‹_?d è~žC ’ @  ZŒ`?d (N ‡z @  Za?d h¾t} @  ZŽb?d ¨uЀ'žý @  Zc?d è;§F @  Zd?d @€U?E2 @  Z‘e?d €€$ªk @  Z’f?d À€…µ½µ @  Z“g?d L&‡h @  Z”h?d @η¶ @  Z•i?d €œ¬ï @  Z–j?d À=h1 @  Z—k?d ‚ I9u @  Z˜l?d @‚‹Ø.« @  Z™m?d €‚ÙÃÁò @  Zšn?d À‚[RÖ, @  Z›o?d ƒ÷‘Ž @  Zœp?d @ƒu™Ã @  Zq?d €ƒ'vš @  Zžr?d Àƒ¥ŠaD @  ZŸs?d „ŠSzž @  Z t?d @„Âm@ @  Z¡u?d €„ZÙ‚ @  Z¢v?d À„ØH•Ç @  Z£w?d …Û¯ @  Z¤x?d @…“J¸Ä @  Z¥y?d €…ÁQW @  Z¦z?d À…CÀ@C @  Z§{?d †T´ @  Z¨|?d @†Ö%Ù @  Z©}?d €†„>é€ @  Zª~?d À†¯þ^ @  Z«?d ‡ÚMÞ0 @  Z¬€?d @‡XÜÉî @  Z­?d €‡ Ç&· @  Z®‚?d À‡ˆV1i @  Z¯ƒ?d ˆ›8r @  Z°„?d @ˆ©eÏ @  Z±…?d €ˆK²Š– @  Z²†?d ÀˆÉ#H @  Z³‡?d ‰°§• @  Z´ˆ?d @‰‚!°K @  Zµ‰?d €‰Ð:_ @  Z¶Š?d À‰R«HÌ @  Z·‹?d ŠE߈ @  Z¸Œ?d @ŠÇNV @  Z¹?d €Š•Uá @  ZºŽ?d ÀŠÄöÑ @  Z»?d ‹»®à @  Z¼?d @‹9–¹> @  Z½‘?d €‹kVg @  Z¾’?d À‹éA¹ @  Z¿“?d ŒhÂ\ñ @  ZÀ”?d @ŒêSK/ @  ZÁ•?d €Œ¸H¤v @  Z–?d ÀŒ:Ù³¨ @  Z×?d óJ‰u @  ZĘ?d @qÛž« @  ZÅ™?d €#Àqò @  ZÆš?d À¡Qf, @  ZÇ›?d ޶%7h @  ZÈœ?d @Ž4´ ¶ @  ZÉ?d €Žf¯Ïï @  ZÊž?d ÀŽä>Ø1 @  ZËŸ?d ÕJ¹Ü @  ZÌ ?d @WÛ® @  ZÍ¡?d €ÀA[ @  Z΢?d À‡QV… @  ZÏ£?d %R @  ZФ?d @œ2Œ @  ZÑ¥?d €ΔÝÕ @  ZÒ¦?d ÀLÊ  @  ZÓ§?d ‘…–ðÖ @  ZÔ¨?d @‘ç @  ZÕ©?d €‘UQ @  ZÖª?d À‘× @  Z׫?d ’ÀùNË @  Zج?d @’BhY @  ZÙ­?d €’s¶L @  ZÚ®?d À’’â¡’ @  ZÛ¯?d “>!ù£ @  Zܰ?d @“¼°î} @  Zݱ?d €“î«$ @  ZÞ²?d À“l:ú @  Zß³?d ”Cã  @  Zà´?d @”Árþ @  Záµ?d €”“iõ§ @  Zâ¶?d€ À”e;þß @  [·?d •MéŒ+ @  [¸?d @•Ïx›õ @  [¹?d €•X*A @  [º?d À•Ú»˜Ÿ @  [»?d –}–¡ @  [¼?d @–ì @  [½?d €–E1\ @  [¾?d À–ŸÔ&‚ @  [ ¿?d —›¹©“ @  [ À?d @—(¾M @  [ Á?d €—Žzªù @  [ Â?d À— ë½' @  [ Ã?d ˜|–ŸÅ @  [Ä?d @˜þˆ @  [Å?d €˜ÏØ @  [Æ?d À˜Mž @  [Ç?d ™ADÐ6 @  [È?d @™ÃÕÇè @  [É?d €™T‡Ó\ @  [Ê?d À™ÖÄ‚ @  [Ë?d šÐʼ @  [Ì?d @šAÝb @  [Í?d €šèmA @  [Î?d Àš“yzŸ @  [Ï?d ›úóÙC @  [Ð?d @›xbÎ @  [Ñ?d €›ï0Ú) @  [Ò?d À›m¡Í÷ @  [Ó?d œ0m @  [Ô?d @œ²ü‡Ù @  [Õ?d €œ’ò.ª @  [ Ö?d Àœc9t @  [!×?d ¹øD @  ["Ø?d @ž(ïš @  [#Ù?d € zû. @  [$Ú?d À‹ëìð @  [%Û?d žR-âÎ @  [&Ü?d @žмõ @  ['Ý?d €žLE3 @  [(Þ?d Àž΄Rí @  [)ß?d Ÿ:¹Èí @  [*à?d @Ÿ¸(ß3 @  [+á?d €Ÿ/zˇ @  [,âuР?d ÀŸ­ëÜY @  [-ã?d  ˜b¬À @  [.ä?d X ó» @  [/å?d ˜ +û5Ý @  [0æ?d Ø ©j" @  [1ç?d ¡¥°ã3 @  [2è?d X¡'!ôí @  [3é?d ˜¡°sàY @  [4ê?d Ø¡2â÷‡ @  [5ë?d ¢ë$ù¹ @  [6ì?d X¢iµîg @  [7í?d ˜¢õ^D @  [8î?d Ø¢wIš @  [9ï?d £êF @  [:ð?d X£œ–ý˜ @  [;ñ?d ˜£ Äé, @  [<ò?d Ø£‰Uþò @  [=ó?d ¤Ô™£ @  [>ô?d X¤V´Ü @  [?õ?d ˜¤Ø= @  [@ö?d ؤZ ã @  [A÷?d ¥VJÍÓ @  [Bø?d X¥ÔÛÚ  @  [Cù?d ˜¥C‰Î¹ @  [Dú?d Ø¥ÁÙg @  [Eû?d ¦Þ×Y @  [Fü?d X¦šOÀ‡ @  [Gý?d ˜¦æp¤ @  [Hþ?d ئ„wgz @  [Iÿ?d §P™ÜÐ @  [JŽ?d X§ÒË @  [KŽ?d ˜§EZߺ @  [LŽ?d اÇËÈd @  [MŽ?d ¨·¶ê† @  [NŽ?d X¨5'ýX @  [OŽ?d ˜¨/s› @  [PŽ?d ب†¾dE @  [QŽ?d ©Šd¥u @  [RŽ?d X©õ²« @  [S Ž?d ˜©Ÿ§¦ @  [T Ž?d Ø©6±Á @  [U Ž?d ªÄð¿ÿ @  [V Ž?d XªFa¨! @  [W Ž?d ˜ªÚÈ @  [XŽ?d تXYÜ @  [YŽ?d «1Ó¬ @  [ZŽ?d X«³B»Þ @  [[Ž?d ˜«$¯j @  [\Ž?d Ø«¦¸´ @  []Ž?d ¬ûMåD @  [^Ž?d X¬yÜòš @  [_Ž?d ˜¬YÒ[é @  [`Ž?d جÛCL7 @  [aŽ?d ­×™ @  [bŽ?d X­UšÙ @  [cŽ?d ˜­ÂZŽm @  [dŽ?d Ø­@Ë™³ @  [eŽ?d ®™ — @  [fŽ?d X®œ€S @  [gŽ?d ˜®‡50p @  [hŽ?d Ø®¤'® @  [iŽ?d ¯ñ™½® @  [j Ž?d X¯sªp @  [k!Ž?d ˜¯äZ¾Ä @  [l"Ž?d دfË© @  [m#Ž?d °œ—»W @  [n$Ž?d X°¬‰ @  [o%Ž?d ˜°/"J @  [p&Ž?d ذ­Ÿ5” @  [q'Ž?d ±Z+Ϥ @  [r (Ž?d X±غØz @  [s )Ž?d ˜±OèÌÎ @  [t *Ž?d رÍyÛ @  [u +Ž?d ²¿Õ. @  [v ,Ž?d X²–.Âð @  [w -Ž?d ˜² ‡rÓ @  [x .Ž?d زˆe  @  [y /Ž?d ³áœÆÑ @  [z 0Ž?d X³c Ñ @  [{ 1Ž?d ˜³ô_Å» @  [| 2Ž?d سvÎÒe @  [} 3Ž?d ´+• @  [~ 4Ž?d X´©“˜K @  [ 5Ž?d ˜´ÄÌ› @  [€ 6Ž?d Ø´F]E @  [ 7Ž?d µJ‡Ñu @  [‚ 8Ž?d XµÈÆ« @  [ƒ 9Ž?d ˜µ_DÒ @  [„ :Ž?d صÝÕÅÁ @  [… ;Ž?d ¶Ëÿ @  [† <Ž?d X¶†‚Ü! @  [‡ =Ž?d ˜¶+l @  [ˆ >Ž?d ض˜º{Ü @  [‰ ?Ž?d ·œ×ôÍ @  [Š @Ž?d X·Fã @  [‹ AŽ?d ˜·‰÷§ @  [Œ BŽ?d Ø· …ày @  [ CŽ?d ¸{øÂ› @  [Ž DŽ?d X¸ùiÕE @  [ EŽ?d ˜¸Èa[† @  [ FŽ?d ظJðLX @  [‘ GŽ?d ¹F*h @  [’ HŽ?d X¹Ä»š¶ @  [“ IŽ?d ˜¹SéŽ @  [” JŽ?d عÑx™Ü @  [• KŽ?d º¾—â @  [– LŽ?d XºŠ/€< @  [— MŽ?d ˜º†0 @  [˜ NŽ?d غ”'Á @  [™ OŽ?d »ý„ @  [š PŽ?d X» “à @  [› QŽ?d ˜»è^‡w @  [œ RŽ?d Ø»jÏ© @  [ SŽ?d ¼7ÍY @  [ž TŽ?d X¼µ’Ú‡ @  [Ÿ UŽ?d ˜¼•œsô @  [  VŽ?d ؼ d* @  [¡ WŽ?d ½×¥ @  [¢ XŽ?d X½™F²Ä @  [£ YŽ?d ˜½¦p @  [¤ ZŽ?d ؽŒ…±® @  [¥ [Ž?d ¾UC¿ @  [¦ \Ž?d X¾×Ò¨N @  [§ ]Ž?d ˜¾K{m @  [¨ ^Ž?d ؾÉê³ @  [© _Ž?d ¿=ו³ @  [ª `Ž?d X¿¿F‚m @  [« aŽ?d ˜¿(–Ù @uÐÀ  [¬ bŽ?d Ø¿ª… @  [­ cŽ?d 0ÀŠ÷~ª @  [® dŽ?d pÀfit @  [¯ eŽ?d °À9nç· @  [° fŽ?d ðÀ»ÿði @  [± gŽ?d 0Á·%1Y @  [² hŽ?d pÁ5´&‡ @  [³ iŽ?d °Á¢æ23 @  [´ jŽ?d ðÁ w%í @  [µ kŽ?d 0Âù±+Ó @  [¶ lŽ?d pÂ{ <  @  [· mŽ?d °Â牌. @  [¸ nŽ?d ðÂe›ð @  [¹ oŽ?d 0à ’8, @  [º pŽ?d pÃŽ/ò @  [» qŽ?d °ÃQ;F @  [¼ rŽ?d ðÛÀ,˜ @  [½ sŽ?d 0ÄÆ qh @  [¾ tŽ?d pÄDf¶ @  [¿ uŽ?d °ÄÊ”ÉW @  [À vŽ?d ðÄHÞ‰ @  [Á wŽ?d 0ÅDß¹ @  [ xŽ?d pÅÆNg @  [à yŽ?d °ÅQÓ @  [Ä zŽ?d ðÅÓ  @  [Å {Ž?d 0Æ K3 @  [Æ |Ž?d pƈÚí @  [Ç }Ž?d °Æs¢Î @  [È ~Ž?d ðÆ–âµ @  [É Ž?d 0ÇIn“ @  [Ê €Ž?d pÇ ØyM @  [Ë Ž?d °ÇšŠmù @  [Ì ‚Ž?d ðÇz' @  [Í ƒŽ?d 0ÈhfXÅ @  [Î „Ž?d pÈê÷O @  [Ï …Ž?d °ÈÛÿÁØ @  [Ð †Ž?d ðÈYnÖ @  [Ñ ‡Ž?d 0ÉU´6 @  [Ò ˆŽ?d pÉ×%è @  [Ó ‰Ž?d °É@w\ @  [Ô ŠŽ?d ðÉÂæ‚ @  [Õ ‹Ž?d 0Ê ¼ @  [Ö ŒŽ?d pÊ™±b @  [× Ž?d °ÊªA @  [Ø ŽŽ?d ðʇ‰½Ÿ @  [Ù Ž?d 0ËîC @  [Ú Ž?d pËl’  @  [Û ‘Ž?d °ËûÀ) @  [Ü ’Ž?d ðËyQ ÷ @  [Ý “Ž?d 0Ì$W @  [Þ ”Ž?d p̦ @Ù @  [ß •Ž?d °Ì†éª @  [à –Ž?d ðÌ“þt @  [á —Ž?d 0ÍI?D @  [â ˜Ž?d€ pÍ Ž€# @  \ ™Ž?d °Ízܾ @  \ šŽ?d ðÍø Ë` @  \ ›Ž?d 0Îäƒ>³ @  \ œŽ?d pÎf)m @  \ Ž?d °Î4 Æ4 @  \ žŽ?d ðζ˜Ñê @  \ ŸŽ?d 0ÏŒ @  \  Ž?d pφN @  \ ¡Ž?d °Ï\ì @  \ ¢Ž?d ðÏÞ ûÉ @  \ £Ž?d 0Ðái @  \ ¤Ž?d pÐcˆ· @  \ ¥Ž?d °Ð1“êî @  \ ¦Ž?d ðгý0 @  \ §Ž?d 0ÑÜË]š @  \ ¨Ž?d pÑ^ZJD @  \ ©Ž?d °Ñ A¥ @  \ ªŽ?d ðювà @  \ «Ž?d 0Ò’_G @  \ ¬Ž?d pÒÎPÎ @  \ ­Ž?d °ÒBÕ¿— @  \ ®Ž?d ðÒÀD¨I @  \ ¯Ž?d 0Óg|Tï @  \ °Ž?d pÓåíC1 @  \ ±Ž?d °Ó·ö¬h @  \ ²Ž?d ðÓ5g»¶ @  \ ³Ž?d 0Ô­â« @  \ ´Ž?d pÔ/s u @  \ µŽ?d °Ô}hå, @  \ ¶Ž?d ðÔÿùòò @  \ ·Ž?d 0Õ6uè @  \ ¸Ž?d pÕ§b6 @  \! ¹Ž?d °ÕQ¼o @  \" ºŽ?d ðÕÓ-š± @  \# »Ž?d 0ÖÏ¢ob @  \$ ¼Ž?d pÖM3x¼ @  \% ½Ž?d °Ö(—å @  \& ¾Ž?d ðÖ¹€; @  \' ¿Ž?d 0×WfPP @  \( ÀŽ?d p×Õ÷GŽ @  \) ÁŽ?d °×‡ì¨× @  \* ÂŽ?d ð×}¿  @  \+ ÃŽ?d 0ذIf @  \, ÄŽ?d pØ2ØqØ @  \- ÅŽ?d °Ø`Þ @  \. ÆŽ?d ðØâR‰_ @  \/ ÇŽ?d 0Ù›)õ @  \0 ÈŽ?d pÙ >+ @  \1 ÉŽ?d °Ù]Ñr @  \2 ÊŽ?d ðÙ߀Ƭ @  \3 ËŽ?d 0ÚÃ3 @  \4 ÌŽ?d pÚAž$¡ @  \5 ÍŽ?d °Ú…Ëø @  \6 ÎŽ?d ðÚ‘Ü& @  \7 ÏŽ?d 0Û6, € @  \8 ÐŽ?d pÛ´½7^ @  \9 ÑŽ?d °Ûæ¦Ø @  \: ÒŽ?d ðÛd7ÏÙ @  \; ÓŽ?d 0Üü²iÄ @  \< ÔŽ?d pÜ~#~ @  \= ÕŽ?d °Ü,8‘C @  \> ÖŽ?d ðÜ®©† @  \? ׎?d 0Ý~a @  \@ ØŽ?d pÝüðË @  \A ÙŽ?d °Ý®ëÿ’ @  \B ÚŽ?d ðÝ,zèL @  \C ÛŽ?d 0Þ0õŸ @  \D ÜŽ?d pÞ²d A @  \E ÝŽ?d °Þàå @  \F ÞŽ?d ðÞbîòÆ @  \G ߎ?d 0ßXa7¼ @  \H àŽ?d pßÚð b @  \I áŽ?d uÐà/°ßˆëÏ; @  \J âŽ?d ðß zØå @  \K ãŽ?d Hà’Ó @  \L äŽ?d ˆà²àÑÿ @  \M åŽ?d ÈàBŸ+† @  \N æŽ?d á’×§n @  \O çŽ?d Há¯Çœò @  \P èŽ?d ˆá2ž  @  \Q éŽ?d ÈáMdu @  \R êŽ?d ââ Ä´ @  \S ëŽ?d HâáS†x @  \T ìŽ?d ˆâÁ¦„† @  \U íŽ?d Èâ1Ù~ÿ @  \V îŽ?d ãá‘ò @  \W ïŽ?d Hãp•‡ @  \X ðŽ?d ˆã4…—y @  \Y ñŽ?d ÈãÄúm @  \Z òŽ?d äÝ´ž @  \[ óŽ?d HäÞîÜà @  \\ ôŽ?d ˆäþÞ= @  \] õŽ?d Èäd$D @  \^ öŽ?d åÞ,¨¬ @  \_ ÷Ž?d Håò:´€ @  \` øŽ?d ˆåÒ϶~ @  \a ùŽ?d Èå"°L @  \b úŽ?d æ¿ôìÆ @  \c ûŽ?d Hæ¼®®  @  \d üŽ?d ˆæœ[¬ô @  \e ýŽ?d Èæl$V @  \f þŽ?d ç¼lÚe @  \g ÿŽ?d HçF˦ @  \h ?d ˆçf>’X @  \i ?d Èç–Ah! @  \j ?d 袾ä< @  \k ?d Hè¡ä¦ð @  \l ?d ˆè¤ @  \m ?d Èèqn^w @  \n ?d é¡&ÒŸ @  \o ?d Héœ6é @  \p ?d ˆé¼Ãëý @  \q  ?d ÈéL¼„ @  \r  ?d êÑø±E @  \s  ?d HêÒ¢ó‰ @  \t  ?d ˆêòWñw @  \u  ?d Èê(  @  \v ?d ëÒ`‡æ @  \w ?d Hë'àv @  \x ?d ˆët∠@  \y ?d Èë÷ ñ @  \z ?d ìîEëþ @  \{ ?d Hìí©2 @  \| ?d ˆìÍê«Ì @  \} ?d Èì=•Qµ @  \~ ?d ííÝÝ] @  \ ?d H팚÷Ò @  \€ ?d ˆí¬oõ, @  \ ?d Èí\U @  \‚ ?d îÁT¯” @  \ƒ ?d HîÂíX @  \„ ?d ˆîâûï¦ @  \… ?d Èî„ß @  \† ?d ïÂÌ™7 @  \‡ ?d H漢Ç{ @  \ˆ  ?d ˆïŠoÅ… @  \‰ !?d Èïz?ü @  \Š "?d ðÄ΃N @  \‹ #?d HðÇ”Á‚ @  \Œ $?d ˆðçaÃ| @  \ %?d Èð9 @  \Ž &?d ñÇVµí @  \ '?d HñúFŽq @  \ (?d ˆñÚ³Œ @  \‘ )?d Èñ*Ìvö @  \’ *?d ò·ˆÖ7 @  \“ +?d Hò´Ò”û @  \” ,?d ˆò”'– @  \• -?d ÈòdXl| @  \– .?d ó´à” @  \— /?d HóAñ‡ @  \˜ 0?d ˆóa…ú @  \™ 1?d Èó‘{ƒ @  \š 2?d ôˆ5ŒŒ @  \› 3?d Hô‹oÎ@ @  \œ 4?d ˆô«šÌ¾ @  \ 5?d Èô[å6Ç @  \ž 6?d õ‹­º/ @  \Ÿ 7?d Hõ§»¦ @  \  8?d ˆõ‡N¤ý @  \¡ 9?d Èõw1^„ @  \¢ :?d öêuþE @  \£ ;?d Höé/¼‰ @  \¤ <?d ˆöÉÚ¾w @  \¥ =?d Èö9¥D @  \¦ >?d ÷éíÈæ @  \§ ??d H÷q냻 @  \¨ @?d ˆ÷QE @  \© A?d È÷¡a{< @  \ª B?d ø•ž÷! @  \« C?d Hø–ĵí @  \¬ D?d ˆø¶1· @  \­ E?d ÈøFNMj @  \® F?d ù–Á‚ @  \¯ G?d Hù«ú @  \° H?d ˆù‹ãøà @  \± I?d Èù{œ™ @  \² J?d úæØ¢X @  \³ K?d Húå‚à” @  \´ L?d ˆúÅwâj @  \µ M?d Èú5 @  \¶ N?d ûå@”û @  \· O?d Hû¡ók @  \¸ P?d ˆû0Tñ• @  \¹ Q?d ÈûÀ+ ì @  \º R?d üÙeøã @  \» S?d HüÚ?º/ @  \¼ T?d ˆüúʸÑ @  \½ U?d Èü µB¨ @  \¾ V?d ýÚýÎ@ @  \¿ W?d HýXìÔþ @  \À X?d ˆýxÖ @  \Á Y?d Èýˆf,y @  \ Z?d þ"Œ¸ @  \à [?d HþxÎt @  \Ä \?d ˆþ6ÌŠ @  \Å ]?d ÈþÆò6ó @  \Æ ^?d ÿºº @  \Ç _?d Hÿ~ìäW @  \È `?d ˆÿ^æ© @  \É uÐa?d Èÿ®fÐ @  \Ê b?d áÒ4! @  \Ë c?d `âˆví @  \Ì d?d  Â}t @  \Í e?d à2Žj @  \Î f?d âJ‚ @  \Ï g?d `ßZ9 @  \Ð h?d  ÿ¯;à @  \Ñ i?d àÐÁ™ @  \Ò j?d ’”aX @  \Ó k?d `‘Î#” @  \Ô l?d  ±;!j @  \Õ m?d àADÛ @  \Ö n?d ‘ Wû @  \× o?d `dí0k @  \Ø p?d  D2• @  \Ù q?d à´gÈì @  \Ú r?d ­);ã @  \Û s?d `®sy/ @  \Ü t?d  ކ{Ñ @  \Ý u?d à~ù¨ @  \Þ v?d ®± @ @  \ß w?d `‚§l @  \à x?d  ¢R’ @  \á y?d àR-éë @  \â z?d€ »ªUŒ @  ] {?d `Y±_i @  ] |?d  yD]— @  ] }?d àLr\ @  ] ~?d œ:Ðë @  ] ?d `×H^ @  ] €?d  ÷½’  @  ] ?d àÉp7£ @  ] ‚?d ý»¾ @  ] ƒ?d `;œŸ @  ] „?d  ia @  ] …?d à._õ @  ] †?d þ @  ] ‡?d `  × @  ] ˆ?d   €áÕå @  ] ‰?d à N @  ] Š?d ŽÉîÇ @  ] ‹?d ` HÚWæ @  ] Œ?d   h/U @  ] ?d à ]TŒ @  ] Ž?d QØd @  ] ?d ` ¶àŽ @  ] ?d   –÷âp @  ] ‘?d à ¨:Gs @  ] ’?d ±t´| @  ] “?d ` wg ] @  ] ”?d   W’£ @  ] •?d à b¤7 @  ] –?d ²ì‚ß @  ] —?d ` ìïØÙ @  ] ˜?d   ÌÚ' @  ] ™?d à Npft @  ] š?d Ó4Ƶ @  ]! ›?d `'” @  ]" œ?d  5Ò}j @  ]# ?d àä|þ @  ]$ ž?d Ьð @  ]% Ÿ?d `vHñ  @  ]&  ?d  V½óÞ @  ]' ¡?d àhpVÝ @  ]( ¢?d Ö®êo @  ]) £?d `½SN @  ]* ¤?d  0HQ° @  ]+ ¥?d à~P$ @  ], ¦?d Õ6ÜÌ @  ]- §?d `‹5†Ê @  ]. ¨?d  «À„4 @  ]/ ©?d à8¬× @  ]0 ª?d ¥è¿ @  ]1 «?d `cû7 @  ]2 ¬?d  CÉ @  ]3 ­?d àv8] @  ]4 ®?d ¦p‰µ @  ]5 ¯?d `#±_ @  ]6 °?d  ½Ö³¡ @  ]7 ±?d àƒ¢ @  ]8 ²?d šUå­ @  ]9 ³?d `\F\Œ @  ]: ´?d  |³^r @  ]; µ?d àI…_æ @  ]< ¶?d ™ÍÓ @  ]= ·?d `ÇΉ @  ]> ¸?d  ç;‹ö @  ]? ¹?d àËV17 @  ]@ º?d V‘ö @  ]A »?d `(× @  ]B ¼?d  °ô*) @  ]C ½?d à…Â+½ @  ]D ¾?d UЧU @  ]E ¿?d `>³r @  ]F À?d  #˱Œ @  ]G Á?d à @  ]H Â?d )ù˜’ @  ]I Ã?d `ïê!³ @  ]J Ä?d  Ï#M @  ]K Å?d àú)"Ù @  ]L Æ?d *a®1 @  ]M Ç?d `tbô7 @  ]N È?d  T—öÉ @  ]O É?d àÇûm* @  ]P Ê?d Z¿Íë @  ]Q Ë?d `œ¬tÊ @  ]R Ì?d  ¼Yv4 @  ]S Í?d à‰ow  @  ]T Î?d Y'ûH @  ]U Ï?d `btâ @  ]V Ð?d  BÁ\ @  ]W Ñ?d à|Ld_ @  ]X Ò?d e—P @  ]Y Ó?d `£.q @  ]Z Ô?d  ƒä, @  ][ Õ?d à¶Ò- @  ]\ Ö?d fš¡ó @  ]] ×?d `8™ûõ @  ]^ Ø?d  lù  @  ]_ Ù?d àšEX @  ]` Ú?d Bå™ @  ]a Û?d `ÁQ\¸ @  ]b Ü?d  á¤^F @  ]c Ý?d àÔ’_Ò @  ]d Þ?d ÚÓ: @  ]e ß?d `¢>Ò  @  ]f à?d  ‚ËÐòuÐ  @  ]g á?d à¼uñ @  ]h â?d 8 Í «— @  ]i ã?d x  ¶ @  ]j ä?d ¸ +ëH @  ]k å?d ø ÝÜ @  ]l æ?d 8!Ε4 @  ]m ç?d x!–Ç2 @  ]n è?d ¸!°cÅÌ @  ]o é?d ø!#^/ @  ]p ê?d 8"¾Kþî @  ]q ë?d x"xXGÏ @  ]r ì?d ¸"X­E1 @  ]s í?d ø"m›D¥ @  ]t î?d 8#½ÓÈM @  ]u ï?d x#†€ð§ @  ]v ð?d ¸#¦uòY @  ]w ñ?d ø#˜¸WZ @  ]x ò?d 8$ö¤U @  ]y ó?d x$Gåt @  ]z ô?d ¸$gŠ @  ]{ õ?d ø$R& @  ]| ö?d 8%‚n’ö @  ]} ÷?d x%ÜmÈð @  ]~ ø?d ¸%ü˜Ê @  ] ù?d ø%3£@þ @  ]€ ú?d 8&®çà? @  ] û?d x&hôY @  ]‚ ü?d ¸&H[à @  ]ƒ ý?d ø&}7Zt @  ]„ þ?d 8'­Öœ @  ]… ÿ?d x'`ïå• @  ]† ?d ¸'@çk @  ]‡ ?d ø'~×Bh @  ]ˆ ?d 8(J(Îu @  ]‰ ?d x(Œ;wT @  ]Š ?d ¸(¬Îuª @  ]‹ ?d ø(™øt> @  ]Œ ?d 8)I°øÖ @  ] ?d x)³¢Ð @  ]Ž ?d ¸)7F . @  ]  ?d ø)¤*;Í @  ]  ?d 8*9n›  @  ]‘  ?d x*ÿ}"- @  ]’  ?d ¸*߈ Ó @  ]“  ?d ø*ê¾!G @  ]” ?d 8+:ö­¯ @  ]• ?d x+¥•E @  ]– ?d ¸+!P—» @  ]— ?d ø+2¸ @  ]˜ ?d 8,ÓÁ· @  ]™ ?d x,ÀÀx– @  ]š ?d ¸,à5zh @  ]› ?d ø,Õ{ü @  ]œ ?d 8-K÷ @  ] ?d x-[H­ @  ]ž ?d ¸-{½¯ì @  ]Ÿ ?d ø-ù׿ @  ]  ?d 8.d“³~ @  ]¡ ?d x.¢€ _ @  ]¢ ?d ¸.‚u¡ @  ]£ ?d ø.·C 5 @  ]¤ ?d 8/g …Ý @  ]¥ ?d x/Áï„ë @  ]¦  ?d ¸/ᆠ@  ]§ !?d ø/ß×# @  ]¨ "?d 80a Ÿ¤ @  ]© #?d x0§&… @  ]ª $?d ¸0‡ï${ @  ]« %?d ø0²Ù%ï @  ]¬ &?d 81b‘© @  ]­ '?d x1<’ó @  ]® (?d ¸1gñÿ @  ]¯ )?d ø1 j @  ]° *?d 82OÊÝ @  ]± +?d x2Ô\sü @  ]² ,?d ¸2ô©q @  ]³ -?d ø2ÁŸp– @  ]´ .?d 83×ü~ @  ]µ /?d x3*„Ä” @  ]¶ 0?d ¸3 qÆj @  ]· 1?d ø34¼ci @  ]¸ 2?d 84-òf @  ]¹ 3?d x4ëá)G @  ]º 4?d ¸4Ë+¹ @  ]» 5?d ø4þ"*- @  ]¼ 6?d 85.j¦Å @  ]½ 7?d x5piüà @  ]¾ 8?d ¸5Pœþ= @  ]¿ 9?d ø5|ñDü @  ]À :?d 86áµä= @  ]Á ;?d x6'¦] @  ] <?d ¸6S_â @  ]à =?d ø62e^v @  ]Ä >?d 87â-Òž @  ]Å ??d x7´™Æ¹ @  ]Æ @?d ¸7”lÄG @  ]Ç A?d ø7ª¡aD @  ]È B?d 88ž^íY @  ]É C?d x8XMTx @  ]Ê D?d ¸8x¸V† @  ]Ë E?d ø8MŽW @  ]Ì F?d 89ÆÛú @  ]Í G?d x9ÃÅü @  ]Î H?d ¸9ã0ƒ @  ]Ï I?d ø9p\á @  ]Ð J?d 8:í¸  @  ]Ñ K?d x:+  @  ]Ò L?d ¸: þÿ @  ]Ó M?d ø:>Èk @  ]Ô N?d 8;ƒ @  ]Õ O?d x;ÕÓ¶i @  ]Ö P?d ¸;õ&´— @  ]× Q?d ø;Ëë” @  ]Ø R?d 8<ҥ⛠@  ]Ù S?d x<¶[º @  ]Ú T?d ¸<4CYD @  ]Û U?d ø<uXÐ @  ]Ü V?d 8=Ñ=Ô8 @  ]Ý W?d x=>Ž> @  ]Þ X?d ¸=¯ËŒÀ @  ]ß Y?d ø=-¡0“ @  ]à Z?d 8>°åR @  ]á [?d x>vö)s @  ]â \?d€ ¸>—DÜ @  ^ ]?d ø>C3•0 @  ^ ^?d 8?“{Ø @  ^ _?d x?ðÖã @  ^ `?duÐ@7 ¸?Ð#áý @  ^ a?d ø? \„ @  ^ b?d P@ã𡸠@  ^ c?d @I5Rà @  ^ d?d Ð@ˤE @  ^ e?d Ai$R @  ^ f?d PAë“3Œ @  ^ g?d AÒ½‡G @  ^ h?d ÐAP,™ @  ^ i?d B¿†Ýÿ @  ^ j?d PB=Ê! @  ^ k?d B:sº @  ^ l?d ÐB¸âd @  ^ m?d CDq+ @  ^ n?d PC˜Õfõ @  ^ o?d CÄ«°Ò @  ^ p?d ÐCF:§  @  ^ q?d D-𹤠@  ^ r?d PD¯ ®z @  ^ s?d DÎ] @  ^ t?d ÐD‡_Jß @  ^ u?d E%ù+ @  ^ v?d PE§h @  ^( „?d ÐH‡2eà @  ^) …?d I%”¯ @  ^* †?d PI§q @  ^+ ‡?d Iž+§º @  ^, ˆ?d ÐIº°d @  ^- ‰?d Jóý @  ^. Š?d PJqêÜ @  ^/ ‹?d Jvå'G @  ^0 Œ?d ÐJôt0™ @  ^1 ?d KVÒQÖ @  ^2 Ž?d PKÔCF @  ^3 ?d Kˆ=/ @  ^4 ?d ÐK ¬‡ñ @  ^5 ‘?d La ™Y @  ^6 ’?d PL㎇ @  ^7 “?d LIX}ü @  ^8 ”?d ÐLËÉj" @  ^9 •?d Mio m @  ^: –?d PMëþ³ @  ^; —?d MÒШx @  ^< ˜?d ÐMPA¿¦ @  ^= ™?d N¿ëòÀ @  ^> š?d PN=zå @  ^? ›?d N… § @  ^@ œ?d ÐNŽy @  ^A ?d O¥(6 @  ^B ž?d PO'¹hè @  ^C Ÿ?d Oæp‡ @  ^D  ?d ÐOdáÍ @  ^E ¡?d P¨ÑÁØ @  ^F ¢?d PP*@Ö @  ^G £?d P€…%} @  ^H ¤?d ÐP2£ @  ^I ¥?d Q ²Sì @  ^J ¦?d PQ"#D2 @  ^K §?d Q ðù @  ^L ¨?d ÐQ™œç' @  ^M ©?d Rv6ªA @  ^N ª?d PRô§½Ÿ @  ^O «?d RóÃp @  ^P ¬?d ÐRqRgÚ @  ^Q ­?d SÓô• @  ^R ®?d PSQeK @  ^S ¯?d S Çl @  ^T °?d ÐSŠÐ² @  ^U ±?d Tä*Î @  ^V ²?d PTf»ÙÄ @  ^W ³?d TÌ~*¿ @  ^X ´?d ÐTNï=a @  ^Y µ?d UìI\. @  ^Z ¶?d PUnØKð @  ^[ ·?d UWöÿ; @  ^\ ¸?d ÐUÕgèå @  ^] ¹?d V:Í¥ƒ @  ^^ º?d PV¸\²] @  ^_ »?d V®>Xv @  ^` ¼?d ÐV,¯O¨ @  ^a ½?d WŽ .ç @  ^b ¾?d PW ˜99 @  ^c ¿?d W=ÃÓ @  ^d À?d ÐW¿Ô  @  ^e Á?d Xùµ· @  ^f Â?d PX{¢i @  ^g Ã?d XÑÕQ @  ^h Ä?d ÐXSDFÌ @  ^i Å?d Yñâ'ƒ @  ^j Æ?d PYss0] @  ^k Ç?d YJ]„– @  ^l È?d ÐYÈÌ“H @  ^m É?d Z'fÞ. @  ^n Ê?d PZ¥÷Éð @  ^o Ë?d Z¢“k @  ^p Ì?d ÐZ µ @  ^q Í?d [‚¤rú @  ^r Î?d P[5e$ @  ^s Ï?d [\K³ @  ^t Ð?d Ð[ÞÚ¤Ý @  ^u Ñ?d \µzºu @  ^v Ò?d P\7ë­« @  ^w Ó?d \.^Ð @  ^x Ô?d Ð\¿I @  ^y Õ?d ]½(A @  ^z Ö?d P]?ˆ?Ÿ @  ^{ ×?d ]¦‹T @  ^| Ø?d Ð]„7œŠ @  ^} Ù?d ^kÑì @  ^~ Ú?d P^é Æ2 @  ^ Û?d ^²?º @  ^€ Ü?d Ð^0® d @  ^ Ý?d _’l+ @  ^‚ Þ?d P_™{õ @  ^ƒ ß?d _ÑP” @  ^uÐ`„ à?d Ð_SÁƒÐ @  ^… á?d (`Ÿ×Ûï @  ^† â?d h`FÌ1 @  ^‡ ã?d ¨`·ƒ?J @  ^ˆ ä?d è`5(” @  ^‰ å?d (a—´IÛ @  ^Š æ?d ha%^ @  ^‹ ç?d ¨a, êÎ @  ^Œ è?d èa®šý @  ^ é?d (bA0°v @  ^Ž ê?d hb᧨ @  ^ ë?d ¨bÄÅj3 @  ^ ì?d èbFT}í @  ^‘ í?d (cäò¢ @  ^’ î?d hcfc | @  ^“ ï?d ¨c:Ý[ @  ^” ð?d èc¸ŒÊ… @  ^• ñ?d (dÓ,Ô- @  ^– ò?d hdQ½Ãó @  ^— ó?d ¨dûx0ˆ @  ^˜ ô?d èdyé'V @  ^™ õ?d (eÛOF @  ^š ö?d heYÞQÇ @  ^› ÷?d ¨e`ðå  @  ^œ ø?d èeâaòÒ @  ^ ù?d (f Ë¿´ @  ^ž ú?d hfZ¨j @  ^Ÿ û?d ¨f™8BA @  ^  ü?d èf©UŸ @  ^¡ ý?d (g¹4Ð @  ^¢ þ?d hg;ž# @  ^£ ÿ?d ¨gh¦Øz @  ^¤ ‘?d ègê7Ϥ @  ^¥ ‘?d (h¬&® @  ^¦ ‘?d hh.·¹À @  ^§ ‘?d ¨h„rJ» @  ^¨ ‘?d èhã]e @  ^© ‘?d (i¤E<* @  ^ª ‘?d hi&Ô+ô @  ^« ‘?d ¨iúŸ? @  ^¬ ‘?d èikˆá @  ^­  ‘?d (jrÁŇ @  ^®  ‘?d hjðPÒY @  ^¯  ‘?d ¨j÷4 @  ^°  ‘?d èju¥ @  ^±  ‘?d (k×iS @  ^² ‘?d hkU’~ @  ^³ ‘?d ¨k 쨪 @  ^´ ‘?d èk‹}¿t @  ^µ ‘?d (làÝ¡Ü @  ^¶ ‘?d hlbL¶ @  ^· ‘?d ¨lȉEy @  ^¸ ‘?d èlJR§ @  ^¹ ‘?d (mè¾3è @  ^º ‘?d hmj/$6 @  ^» ‘?d ¨mSý @  ^¼ ‘?d èmч# @  ^½ ‘?d (n>:ÊE @  ^¾ ‘?d hn¼«Ý› @  ^¿ ‘?d ¨nÎ1" @  ^À ‘?d èn†_&ü @  ^Á ‘?d (o$ùG³ @  ^ ‘?d ho¦hPm @  ^à ‘?d ¨og¡¿– @  ^Ä  ‘?d èoå0¨H @  ^Å !‘?d (p)ù] @  ^Æ "‘?d hp«‘îƒ @  ^Ç #‘?d ¨pTø @  ^È $‘?d èpƒÅ & @  ^É %‘?d (q!cki @  ^Ê &‘?d hq£ò|· @  ^Ë '‘?d ¨qšÜÈ| @  ^Ì (‘?d èqMߢ @  ^Í )‘?d (r÷ç’Ä @  ^Î *‘?d hruv… @  ^Ï +‘?d ¨rrH @  ^Ð ,‘?d èrðƒ__ @  ^Ñ -‘?d (sR%> @  ^Ò .‘?d hsд)Î @  ^Ó /‘?d ¨sŒÊÿé @  ^Ô 0‘?d ès[è7 @  ^Õ 1‘?d (teûöŸ @  ^Ö 2‘?d htçjáA @  ^× 3‘?d ¨tM¯: @  ^Ø 4‘?d ètÏ>ä @  ^Ù 5‘?d (um˜d« @  ^Ú 6‘?d huï su @  ^Û 7‘?d ¨uÖ'Ǿ @  ^Ü 8‘?d èuT¶Ð` @  ^Ý 9‘?d (v» @  ^Þ :‘?d hv9ŠØ @  ^ß ;‘?d ¨v/ï`ó @  ^à <‘?d èv­~w- @  ^á =‘?d (wØb @  ^â >‘?d€ hwùŠ @  _ ?‘?d ¨w)R¯Ù @  _ @‘?d èw«Ã¸ @  _ A‘?d (x(›"P @  _ B‘?d hxª 5Ž @  _ C‘?d ¨xÎ}™ @  _ D‘?d èxLìŽQ @  _ E‘?d (y ø°d @  _ F‘?d hy¢i§º @  _ G‘?d ¨y^èœ @  _ H‘?d èyÜŸÿB @  _ I‘?d (zö|IÉ @  _ J‘?d hztí^ @  _ K‘?d ¨zšò @  _ L‘?d èz’ åÈ @  _ M‘?d ({S¾å @  _ N‘?d h{Ñ/òà @  _ O‘?d ¨{Hß  @  _ P‘?d è{ʉÈ× @  _ Q‘?d (|d`-’ @  _ R‘?d h|æñ:L @  _ S‘?d ¨|‚†–M @  _ T‘?d è|“ @  _ U‘?d (}l¿¦ @  _ V‘?d h}î’¨x @  _ W‘?d ¨}õç^ @  _ X‘?d è}dð€ @  _ Y‘?d (~º‡F  @  _ Z‘?d h~8QÕ @  _ [‘?d ¨~\aýÔ @  _ \‘?d è~Þðê  @  _ ]‘?d (CÍo @  _ ^‘?d hŒÒÚ± @  _! _‘?d ¨uЀ'ˆRΧ @  _" `‘?d è ÃÙy @  _# a‘?d @€ÓÚ-G @  _$ b‘?d €€ó//¹ @  _% c‘?d À€5<–˜ @  _& d‘?d åtp @  _' e‘?d @Û¹¿s @  _( f‘?d €ûL½ @  _) g‘?d À¥Oç‹ @  _* h‘?d ‚8 GJ @  _+ i‘?d @‚ =FÞ @  _, j‘?d €‚-ÈD  @  _- k‘?d À‚ëÛý @  _. l‘?d ƒ;“qé @  _/ m‘?d @ƒ¨ÿê  @  _0 n‘?d €ƒˆ èô @  _1 o‘?d Àƒ³YÐ @  _2 p‘?d „ª# @  _3 q‘?d @„Ÿ!"… @  _4 r‘?d €„¿Ô { @  _5 s‘?d À„yÇ™Z @  _6 t‘?d …©² @  _7 u‘?d @…—B°± @  _8 v‘?d €…··²O @  _9 w‘?d À…é´èI @  _: x‘?d †tðHˆ @  _; y‘?d @†AÆI @  _< z‘?d €†a3Kâ @  _= {‘?d À†§ òà @  _> |‘?d ‡wh~+ @  _? }‘?d @‡[Äê @  _@ ~‘?d €‡{ðÆ @  _A ‘?d À‡0‚†¡ @  _B €‘?d ˆ} ¼ @  _C ‘?d @ˆ1K ( @  _D ‚‘?d €ˆ¾ Ö @  _E ƒ‘?d Àˆ×­°÷ @  _F „‘?d ‰å< @  _G …‘?d @‰9(™ @  _H †‘?d €‰Ý›â @  _I ‡‘?d À‰GÞÁä @  _J ˆ‘?d ŠÚša% @  _K ‰‘?d @Šï¬`± @  _L Š‘?d €ŠÏYbO @  _M ‹‘?d ÀŠ JÛn @  _N Œ‘?d ‹ÙW† @  _O ‘?d @‹JnÌe @  _P Ž‘?d €‹j›Î› @  _Q ‘?d À‹QÈöq @  _R ‘?d ŒH†~ @  _S ‘‘?d @Œ}°ê @  _T ’‘?d €Œ]E @  _U “‘?d ÀŒ›V¿5 @  _V ”‘?d K3Ý @  _W •‘?d @uÓ–Þ @  _X –‘?d €U&”  @  _Y —‘?d À %Î& @  _Z ˜‘?d Ž–anç @  _[ ™‘?d @Ž£Wos @  _\ š‘?d €Žƒ¢m @  _] ›‘?d ÀŽE±Ô¬ @  _^ œ‘?d •ùXD @  __ ‘?d @“ä @  _` ž‘?d €7fæé @  _a Ÿ‘?d À‘‚çß @  _b  ‘?d /\[m @  _c ¡‘?d @jZù @  _d ¢‘?d €:ŸX @  _e £‘?d ÀüŒá& @  _f ¤‘?d ‘,ÄmÎ @  _g ¥‘?d @‘ ÈÍ @  _h ¦‘?d €‘2üÊ3 @  _i §‘?d À‘lÿ5 @  _j ¨‘?d ’ñ»0ô @  _k ©‘?d @’Ä1` @  _l ª‘?d €’äx3ž @  _m «‘?d À’"kŠ¿ @  _n ¬‘?d “ò#W @  _o ­‘?d @“aO´ @  _p ®‘?d €“AºŸJ @  _q ¯‘?d À“zé§  @  _r °‘?d ”c§T¯ @  _s ±‘?d @”V‘U; @  _t ²‘?d €”vdWÅ @  _u ³‘?d À”°wîä @  _v ´‘?d •`?b  @  _w µ‘?d @•^òÇ @  _x ¶‘?d €•~Åñ @  _y ·‘?d À• Ÿ÷ @  _z ¸‘?d –½@?6 @  _{ ¹‘?d @–ˆv>¢ @  _| º‘?d €–¨ƒ<\ @  _} »‘?d À–n…} @  _~ ¼‘?d —¾Ø • @  _ ½‘?d @—qãƒe @  _€ ¾‘?d €—Q› @  _ ¿‘?d À—¢•¼ @  _‚ À‘?d ˜3]¡ @  _ƒ Á‘?d @˜k5 @  _„ ‘?d €˜&žË @  _… Ñ?d À˜à£ê @  _† Ä‘?d ™0Å/ @  _‡ Å‘?d @™Š @  _ˆ Æ‘?d €™.ýˆÿ @  _‰ Ç‘?d À™pþÒù @  _Š È‘?d šíºr8 @  _‹ É‘?d @šØŒs¬ @  _Œ Ê‘?d €šøyqR @  _ Ë‘?d Àš>jÈs @  _Ž Ì‘?d ›î"D› @  _ Í‘?d @›}Nßx @  _ Α?d €›]»Ý† @  _‘ Ï‘?d À›fèål @  _’ Б?d œ¦c @  _“ Ñ‘?d @œJ÷ @  _” Ò‘?d €œje  @  _• Ó‘?d Àœ¬v¬( @  _– Ô‘?d |> À @  _— Õ‘?d @Bó…à @  _˜ Ö‘?d €b‡= @  _™ ב?d À<Ý; @  _š Ø‘?d ž¡A}ú @  _› Ù‘?d @ž”w|n @  _œ Ú‘?d €ž´‚~ @  _ Û‘?d Àžr‘DZ @  _ž Ü‘?d Ÿ¢ÙKY @  _Ÿ Ý‘?d @Ÿ ³÷  @  _  Þ‘?d €ŸFõô @  _¡ ß‘uР?d ÀŸ¦¢ô @  _¢ à‘?d  ש*¤ @  _£ á‘?d X âŸ+0 @  _¤ â‘?d ˜ Âj)Î @  _¥ ã‘?d Ø yï @  _¦ ä‘?d ¡Ô1 @  _§ å‘?d X¡êü¹ @  _¨ æ‘?d ˜¡Ê »ú @  _© ç‘?d Ø¡” áü @  _ª è‘?d ¢ NA= @  _« é‘?d X¢ @  _º ø‘?d ¦EµNÿ @  _» ù‘?d X¦pƒOk @  _¼ ú‘?d ˜¦PvM• @  _½ û‘?d ئ–eô´ @  _¾ ü‘?d §F-x\ @  _¿ ý‘?d X§j@ @  _À þ‘?d ˜§JµÀc @  _Á ÿ‘?d اÌ‚àÿ @  _ ’?d ¨ø}lâ @  _à ’?d X¨ÍKmv @  _Ä ’?d ˜¨í¾oˆ @  _Å ’?d ب+­Ö© @  _Æ ’?d ©ûåZA @  _Ç ’?d X©Å(ÿB @  _È ’?d ˜©åÝý¼ @  _É ’?d Ø©»Þ§º @  _Ê ’?d ª&š{ @  _Ë  ’?d Xª¬ï @  _Ì  ’?d ˜ª3Y @  _Í  ’?d تõJ½0 @  _Î  ’?d «%1Ø @  _Ï  ’?d X«¶nª; @  _Ð ’?d ˜«–›¨Å @  _Ñ ’?d Ø«­È/ @  _Ò ’?d ¬´†c  @  _Ó ’?d X¬°b´ @  _Ô ’?d ˜¬¡E`J @  _Õ ’?d جgVÙk @  _Ö ’?d ­·Uƒ @  _× ’?d X­‰Óð€ @  _Ø ’?d ˜­©&ò~ @  _Ù ’?d Ø­÷%¨x @  _Ú ’?d ®ja¹ @  _Û ’?d X®_W - @  _Ü ’?d ˜®¢ Ó @  _Ý ’?d Ø®¹±²ò @  _Þ ’?d ¯iù> @  _ß ’?d X¯ë“‚I @  _à ’?d ˜¯Ëf€· @  _á ’?d دm‚ @  _â  ’?d€ °ë"Ï @  ` !’?d X°?U†® @  ` "’?d ˜° „P @  ` #’?d ذúÆœ @  ` $’?d ±̲Jt @  ` %’?d X±<Ͱ  @  ` &’?d ˜±8²ó @  ` '’?d رŒ‰· @  ` (’?d ²ÍN @  ` )’?d X²á²í7 @  ` *’?d ˜²ÁGïÉ @  ` +’?d ز­ @  ` ,’?d ³U!í @  ` -’?d X³â*Û” @  ` .’?d ˜³ÂßÙj @  ` /’?d سšŸ€ @  ` 0’?d ´ƒÑs @  ` 1’?d X´s®‰l @  ` 2’?d ˜´S[‹’ @  ` 3’?d Ø´PÉ^ @  ` 4’?d µ€IE¶ @  ` 5’?d Xµp6¿Ï @  ` 6’?d ˜µPý1 @  ` 7’?d صÀr¸M @  ` 8’?d ¶]6Œ @  ` 9’?d X¶­Iâõ @  ` :’?d ˜¶¼à  @  ` ;’?d ضŽæ¢Ç @  ` <’?d ·^®./ @  ` =’?d X·®ÑÔV @  ` >’?d ˜·Ž$Ö¨ @  ` ?’?d Ø·ª…„¥ @  ` @’?d ¸žz¸ @  `! A’?d X¸nòÁ @  `" B’?d ˜¸Nðð? @  `# C’?d ظMª²ó @  `$ D’?d ¹â> @  `% E’?d X¹mÄb @  `& F’?d ˜¹MhÆœ @  `' G’?d عÝÙÃà @  `( H’?d º@c! @  `) I’?d Xº°â™X @  `* J’?d ˜º›¦ @  `+ K’?d غ“MÙj @  `, L’?d »CU‚ @  `- M’?d X»³z¯û @  `. N’?d ˜»“­ @  `/ O’?d Ø»ËÏôu @  `0 P’?d ¼Òz @  `1 Q’?d X¼"þý @  `2 R’?d ˜¼ ÿý @  `3 S’?d ؼQ½1 @  `4 T’?d ½Ñ1Ù @  `5 U’?d X½!fË  @  `6 V’?d ˜½“É^ @  `7 W’?d ؽ‘"Ì" @  `8 X’?d ¾ flã @  `9 Y’?d X¾ü–š @  `: Z’?d ˜¾Üì”d @  `; [’?d ؾß¶Ö¨ @  `< \’?d ¿þZ@ @  `= ]’?d X¿ÿ 9 @  `> ^’?d ˜¿ßt¢Ç @uÐÀ  `? _’?d Ø¿¥‚ãI @  `@ `’?d 0ÀÁr² @  `A a’?d pÀ1 Hb @  `B b’?d °ÀøJœ @  `C c’?d ðÀ¢P @  `D d’?d 0ÁÂꄸ @  `E e’?d pÁ2•~Á @  `F f’?d °Á`|? @  `G g’?d ðÁ‚ÑyC @  `H h’?d 0•ق @  `I i’?d pÂïê#û @  `J j’?d °ÂÏ! @  `K k’?d ðÂÌEcÉ @  `L l’?d 0à ï! @  `M m’?d pÃìrX @  `N n’?d °Ã̇¦ @  `O o’?d ðÔÇNÖ @  `P p’?d 0ĉ½Ù @  `Q q’?d pÄ}öG  @  `R r’?d °Ä]E^ @  `S s’?d ðÄ^Y’ @  `T t’?d 0ÅŽ‹z @  `U u’?d pÅ~nq @  `V v’?d °Å^›sý @  `W w’?d ðÅÎ*v @  `X x’?d 0ÆSnÖ@ @  `Y y’?d pÆ£,9 @  `Z z’?d °Æƒä.Ç @  `[ {’?d ðÆ€¾l  @  `\ |’?d 0ÇPöàã @  `] }’?d pÇ ‰š @  `^ ~’?d °Ç€|d @  `_ ’?d ðǹû @  `` €’?d 0Èä’æ @  `a ’?d pÈ}›hŸ @  `b ‚’?d °È]nja @  `c ƒ’?d ðÈ^4(­ @  `d „’?d 0ÉŽ|¤E @  `e …’?d pÉ~^< @  `f †’?d °É^ö\ @  `g ‡’?d ðÉÎGY¾ @  `h ˆ’?d 0ÊSù @  `i ‰’?d pÊ£| @  `j Š’?d °Êƒ‰ø @  `k ‹’?d ðÊ€ÓC4 @  `l Œ’?d 0ËP›ÏÜ @  `m ’?d pË ä5¥ @  `n Ž’?d °Ë€7[ @  `o ’?d ðËØQn+ @  `p ’?d 0ÌÁ$ @  `q ‘’?d pÌ1`g] @  `r ’’?d °Ì•e£ @  `s “’?d ðÌÏ'o @  `t ”’?d 0͇«‡ @  `u •’?d pÍ2øQþ @  `v –’?d °Í S @  `w —’?d ðÍ‚¼V| @  `x ˜’?d 0Îøö½ @  `y ™’?d pÎï‡ Ä @  `z š’?d °ÎÏr: @  `{ ›’?d ðÎÌ(Lö @  `| œ’?d 0Ï`À @  `} ’?d pÏì:g @  `~ ž’?d °ÏÌê8™ @  ` Ÿ’?d ðÏUJI& @  `€  ’?d 0Ðë”õ” @  ` ¡’?d pÐëí @  `‚ ¢’?d °Ð;  @  `ƒ £’?d ðÐ8DOß @  `„ ¤’?d 0Ñè Ã7 @  `… ¥’?d pÑs9N @  `† ¦’?d °Ñ8†;° @  `‡ §’?d ðѨ7>Ì @  `ˆ ¨’?d 0Ò5sž  @  `‰ ©’?d pÒÅ dt @  `Š ª’?d °ÒåùfŠ @  `‹ «’?d ðÒæ£$F @  `Œ ¬’?d 0Ó6먮 @  ` ­’?d pÓÆ”R× @  `Ž ®’?d °ÓæaP) @  ` ¯’?d ðÓ¾! Y @  ` °’?d 0Ô§oúV @  `‘ ±’?d pÔW/ @  `’ ²’?d °ÔwåÑ @  `“ ³’?d ðÔt¿@ @  `” ´’?d 0Õ¤÷Ìõ @  `• µ’?d pÕTˆ6Œ @  `– ¶’?d °Õt}4r @  `— ·’?d ðÕäÌ1 @  `˜ ¸’?d 0Öyˆ‘Ï @  `™ ¹’?d pÖ‰÷k¶ @  `š º’?d °Ö©iH @  `› »’?d ðÖªX+„ @  `œ ¼’?d 0×z§l @  ` ½’?d p׊o] @  `ž ¾’?d °×ªš_ë @  `Ÿ ¿’?d ð׎; æ @  `  À’?d 0غÄû @  `¡ Á’?d pØJ»{‚ @  `¢ Â’?d °ØjNy| @  `£ Ã’?d ðØi;° @  `¤ Ä’?d 0Ù¹\·X @  `¥ Å’?d pÙI#M! @  `¦ Æ’?d °ÙiÖOß @  `§ Ç’?d ðÙùgJ£ @  `¨ È’?d 0Úd#êb @  `© É’?d pÚ”\ @  `ª Ê’?d °Ú´©å @  `« Ë’?d ðÚ·óP) @  `¬ Ì’?d 0Ûg»ÜÁ @  `­ Í’?d pÛ—Ä&¸ @  `® Î’?d °Û·1$F @  `¯ Ï’?d ðÛïq}6 @  `° Ð’?d 0Üö?Ž9 @  `± Ñ’?d pÜ@t@ @  `² Ò’?d °Ü&µv¾ @  `³ Ó’?d ðÜ%ï4r @  `´ Ô’?d 0Ýõ§¸š @  `µ Õ’?d pÝØBã @  `¶ Ö’?d °Ý%-@ @  `· ×’?d ðݵœEa @  `¸ Ø’?d 0Þ(Øå  @  `¹ Ù’?d pÞاÙ @  `º Ú’?d °ÞøR' @  `» Û’?d ðÞû_ë @  `¼ Ü’?d 0ß+@Ó @  `½ Ý’?d pßÛ?)z @  `¾ Þ’?d uÐà/°ßûÊ+„ @  `¿ ß’?d ðß @  `Ñ ñ’?d ˆä†xÔg @  `Ò ò’?d Èäéù @  `Ó ó’?d åUjC @  `Ô ô’?d Hå×û  @  `Õ õ’?d ˆå…àâÄ @  `Ö ö’?d Èåqõ @  `× ÷’?d æˆGy @  `Ø ø’?d Hæ „P§ @  `Ù ù’?d ˆæXŸ¿þ @  `Ú ú’?d ÈæÚ¨  @  `Û û’?d ç‹qÚ @  `Ü ü’?d Hç f @  `Ý ý’?d ˆç[‰] @  `Þ þ’?d ÈçÙ–žƒ @  `ß ÿ’?d è)øVÓ @  `à “?d Hè«iA  @  `á “?d ˆèùr®T @  `â “?d€ Èè ¥, @  a “?d é¿â4ÿ @  a “?d Hé=s#! @  a “?d ˆéª!7• @  a “?d Èé(° K @  a “?d êifÍR @  a “?d Hêë÷ÚŒ @  a  “?d ˆêw^j¯ @  a  “?d ÈêõÏ}q @  a  “?d ëa_f @  a  “?d Hëã”H¸ @  a  “?d ˆëtÆ\  @  a “?d ÈëöWKÒ @  a “?d ìVÛ—é @  a “?d HìÔJ€7 @  a “?d ˆìåBô @  a “?d ÈìgÓ* @  a “?d íó;= @  a “?d Híqˆ,ã @  a “?d ˆíæÚ8W @  a “?d ÈídK/‰ @  a “?d î% @  a “?d Hî§ ÕN @  a “?d ˆî;¥em @  a “?d Èî¹4r³ @  a “?d ï-þP¤ @  a “?d Hï¯oGz @  a “?d ˆï8=SÎ @  a “?d ÈﺬD @  a “?d ð îJ @  a  “?d Hð¢–ù” @  a !“?d ˆð‚˜Pç @  a "“?d Èð G9 @  a! #“?d ñ”Ãe. @  a" $“?d HñRrð @  a# %“?d ˆñfD @  a$ &“?d Èñ‘qš @  a% '“?d òBGœƒ @  a& (“?d HòÀÖ‹] @  a' )“?d ˆò\;~ @  a( *“?d ÈòÞî,  @  a) +“?d óJ$· @  a* ,“?d Hóȵi @  a+ -“?d ˆó_ç Ý @  a, .“?d ÈóÝv @  a- /“?d ô}úÆ8 @  a. 0“?d HôÿkÑæ @  a/ 1“?d ˆôÎc_% @  a0 2“?d ÈôLòHû @  a1 3“?d õØ8jì @  a2 4“?d HõZ©}2 @  a3 5“?d ˆõÍûi† @  a4 6“?d ÈõOj~X @  a5 7“?d ö¼“A @  a6 8“?d HöŒ-„Ÿ @  a7 9“?d ˆö„4¼ @  a8 :“?d Èö’#b @  a9 ;“?d ÷ßu @  a: <“?d H÷„N« @  a; =“?d ˆ÷ @  a< >“?d È÷‘Á @  a= ?“?d øqWš% @  a> @“?d HøóÆû @  a? A“?d ˆø}Ï" @  a@ B“?d Èøÿ^5Ä @  aA C“?d ùk”Ó @  aB D“?d Hùé  @  aC E“?d ˆù~W¹ @  aD F“?d ÈùüÆg @  aE G“?d ú½î~ @  aF H“?d Hú?ù  @  aG I“?d ˆú£(Iƒ @  aH J“?d Èú!¹^] @  aI K“?d ûµs|J @  aJ L“?d Hû7âk” @  aK M“?d ˆû °  @  aL N“?d Èû"!hþ @  aM O“?d ü‚­´Å @  aN P“?d Hü<£ @  aO Q“?d ˆü14-Ø @  aP R“?d Èü³¥: @  aQ S“?d ý'o @  aR T“?d Hý¥þÏ @  aS U“?d ˆý2¬{ @  aT V“?d Èý°= ¥ @  aU W“?d þñëá¼ @  aV X“?d Hþszöb @  aW Y“?d ˆþïÓFA @  aX Z“?d ÈþmBQŸ @  aY [“?d ÿùˆsˆ @  aZ \“?d Hÿ{dV @  a[ ]“?d ˆÿìKpâ @  a\ uÐ^“?d ÈÿnÚg< @  a] _“?d icJ @  a^ `“?d `ýøt” @  a_ a“?d  ÝöÝç @  a` b“?d à_gÊ9 @  aa c“?d Ë­è. @  ab d“?d `I<ÿð @  ac e“?d  ÞnëD @  ad f“?d à\ÿüš @  ae g“?d )ƒ @  af h“?d `Ÿ¸] @  ag i“?d  ¶~ @  ah j“?d à€¡  @  ai k“?d Jƒ· @  aj l“?d `—Û”i @  ak m“?d  ‰€Ý @  al n“?d à‚— @  am o“?d "”K8 @  an p“?d ` \æ @  ao q“?d  ‘ Ò% @  ap r“?d àœÅû @  aq s“?d ‡Vçì @  ar t“?d `Çð2 @  as u“?d  ’•ä† @  at v“?d àóX @  au w“?d QÒA @  av x“?d `ÓC Ÿ @  aw y“?d  Oê¹¼ @  ax z“?d àÍ{®b @  ay {“?d Y±Œu @  az |“?d `Û ›« @  a{ }“?d  Lr @  a| ~“?d àÎã˜Á @  a} “?d 3ÿC· @  a~ €“?d `±nTi @  a “?d  Ü1˹ @  a€ ‚“?d à^ Üg @  a ƒ“?d Êjþp @  a‚ „“?d ` Hûé® @  aƒ …“?d   ß©ý @  a„ †“?d à ]8êÄ @  a… ‡“?d îÝ @  a† ˆ“?d ` ž @  a‡ ‰“?d   Ö   @  aˆ Š“?d à €G·þ @  a‰ ‹“?d •é @  aŠ Œ“?d ` –‚7 @  a‹ “?d   N–ƒ @  aŒ Ž“?d à ƒß] @  a “?d #S]f @  aŽ “?d ` ¡ÂJ¸ @  a ‘“?d   ÊÄ{ @  a ’“?d à [Ó¥ @  a‘ ““?d †‘ñ² @  a’ ”“?d ` æl @  a“ •“?d   “RòØ @  a” –“?d à Ãå @  a• —“?d P @  a– ˜“?d `Ò„Á @  a— ™“?d  N-¯â @  a˜ š“?d à̼¸< @  a™ ›“?d Xvš+ @  aš œ“?d `Úçõ @  a› “?d  Mµ™A @  aœ ž“?d àÏ$ŽŸ @  a Ÿ“?d U$Å @  až  “?d `×3 @  aŸ ¡“?d  ÷šh @  a  ¢“?d àu¶ @  a¡ £“?d áK¯¡ @  a¢ ¤“?d `cÚ¸ @  a£ ¥“?d  ôˆ¬Ë @  a¤ ¦“?d àv» @  a¥ §“?d 7ÏV  @  a¦ ¨“?d `µ^AÒ @  a§ ©“?d  )÷ññ @  a¨ ª“?d à«fæ/ @  a© «“?d ?¬Ä8 @  aª ¬“?d `½=Óæ @  a« ­“?d  *oÇR @  a¬ ®“?d à¨þÐŒ @  a­ ¯“?d r · @  a® °“?d `Šãi @  a¯ ±“?d  »ë•ª @  a° ²“?d à9z‚t @  a± ³“?d ­° c @  a² ´“?d `/!·½ @  a³ µ“?d  ¸s£  @  a´ ¶“?d à:â´× @  aµ ·“?d {4YÎ @  a¶ ¸“?d `ù¥N @  a· ¹“?d  e þ3 @  a¸ º“?d àçéí @  a¹ »“?d sWËú @  aº ¼“?d `ñÆÜ$ @  a» ½“?d  f”È @  a¼ ¾“?d àäßN @  a½ ¿“?d ßPª @  a¾ À“?d `†NGt @  a¿ Á“?d  Gè• @  aÀ “?d àŠÖÿK @  aÁ Ó?d Ý\ @  a Ä“?d `œÊ‚ @  aà Å“?d   ßÞ6 @  aÄ Æ“?d à‰NÉè @  aÅ Ç“?d Ș$ñ @  aÆ È“?d `J 3/ @  aÇ É“?d  Ö ƒ  @  aÈ Ê“?d àT1”Ò @  aÉ Ë“?d Àû¶Å @  aÊ Ì“?d `Bj¡ @  aË Í“?d  Õ8µ¯ @  aÌ Γ?d àW©¢q @  aÍ Ï“?d ÷%~J @  aÎ Г?d `u´i” @  aÏ Ñ“?d  D¼çW @  aÐ Ò“?d àÆ-ð‰ @  aÑ Ó“?d RçÒž @  aÒ Ô“?d `ÐvÅ@ @  aÓ Õ“?d  G$Ñô @  aÔ Ö“?d àŵÆ* @  aÕ ד?d „c+3 @  aÖ Ø“?d `ò<í @  a× Ù“?d  š[ŒÎ @  aØ Ú“?d àÊ› @  aÙ Û“?d Œ¹ @  aÚ Ü“?d `‘®Ù @  aÛ Ý“?d  ™ÃºmuÐ  @  aÜ Þ“?d àR­³ @  aÝ ß“?d 8 N,e= @  aÞ à“?d x ̽rã @  aß á“?d ¸ ì³Û @  aà â“?d ø n"ÌN @  aá ã“?d 8!úèîY @  aâ ä“?d€ x!¹>‡ @  b å“?d ¸!Ï-R @  b æ“?d ø!M¼EÄ @  b ç“?d 8"É#S0 @  b è“?d x"K²Dî @  b é“?d ¸"©«· @  b ê“?d ø"›8¼i @  b ë“?d 8#Á@Á @  b ì“?d x#CÑÖÚ @  b í“?d ¸#Ê9ƒ @  b î“?d ø#“[.] @  b ï“?d 8$öž ‹ @  b ð“?d x$tU @  b ñ“?d ¸$&ñ  @  b ò“?d ø$¤…æÒ @  b ó“?d 8%S\¥_ @  b ô“?d x%ÑͲ @  b õ“?d ¸%ƒÖ]Ø @  b ö“?d ø%GJ @  b ÷“?d 8&…Ø\ò @  b ø“?d x&IK, @  b ù“?d ¸&UR¤u @  b ú“?d ø&×ó« @  b û“?d 8'»ÎÆ @  b ü“?d x'*Ù @  b ý“?d ¸']16A @  b þ“?d ø'ß !Ÿ @  b ÿ“?d 8(¤›kž @  b ”?d x(& |@ @  b ”?d ¸(t“ @  b ”?d ø(ö€„Ç @  b ”?d 8)_àú @  b ”?d x)’Î÷$ @  b! ”?d ¸)ÀÕ} @  b" ”?d ø)BD£ @  b# ”?d 8*ÆÛW @  b$ ”?d x*DJ‰ @  b%  ”?d ¸*QáÐ @  b&  ”?d ø*”Àö @  b'  ”?d 8+θ‹c @  b(  ”?d x+L)œ½ @  b)  ”?d ¸+2sä @  b* ”?d ø+œ£d: @  b+ ”?d 8,ùfCì @  b, ”?d x,{÷T2 @  b- ”?d ¸,)ì»k @  b. ”?d ø,«}¬µ @  b/ ”?d 8-\¤ï8 @  b0 ”?d x-Þ5øæ @  b1 ”?d ¸-Œ.¿ @  b2 ”?d ø-¿a @  b3 ”?d 8.Š • @  b4 ”?d x.±K @  b5 ”?d ¸.Zªî @  b6 ”?d ø.Ø;ùÌ @  b7 ”?d 8/‚C„¡ @  b8 ”?d x/Ò“ @  b9 ”?d ¸/RÉ|& @  b: ”?d ø/ÐXkø @  b; ”?d 80º:O @  b<  ”?d x0 +-‘ @  b= !”?d ¸0_0ÂÈ @  b> "”?d ø0Ý¡Õ @  b? #”?d 81•y·¹ @  b@ $”?d x1è g @  bA %”?d ¸1EóO> @  bB &”?d ø1ÇbXà @  bC '”?d 82CýN @  bD (”?d x2ÁlYÊ @  bE )”?d ¸2“w¶“ @  bF *”?d ø2æ¡M @  bG +”?d 83KžÜ  @  bH ,”?d x3ÉËþ @  bI -”?d ¸3›$§ @  bJ .”?d ø3…3y @  bK /”?d 84|@¯ @  bL 0”?d x4þÑq @  bM 1”?d ¸4¬Êì( @  bN 2”?d ø4.[ûö @  bO 3”?d 85Ù‚¸{ @  bP 4”?d x5[¯¥ @  bQ 5”?d ¸5 @ü @  bR 6”?d ø5‹™W" @  bS 7”?d 86AÖ @  bT 8”?d x6—V @  bU 9”?d ¸6ߌ¹Q @  bV :”?d ø6]® @  bW ;”?d 87eÓâ @  bX <”?d x7…ôÄ< @  bY =”?d ¸7×ï+e @  bZ >”?d ø7U~<» @  b[ ?”?d 88píH² @  b\ @”?d x8ò|_l @  b] A”?d ¸8 g°5 @  b^ B”?d ø8"ö§ë @  b_ C”?d 89Ä)ÃÖ @  b` D”?d x9F¸Ô @  ba E”?d ¸9£;Q @  bb F”?d ø9–2, @  bc G”?d 8:­:{ @  bd H”?d x:<-¥ @  be I”?d ¸:Â'Âü @  bf J”?d ø:@¶Õ" @  bg K”?d 8;ΨO @  bh L”?d x;˜_¿‘ @  bi M”?d ¸;ÊDPÈ @  bj N”?d ø;HÕG @  bk O”?d 8<-`À @  bl P”?d x<¯w @  bm Q”?d ¸<ýš˜G @  bn R”?d ø< ™ @  bo S”?d 8=ˆÒÌ @  bp T”?d x= CÛÊ @  bq U”?d ¸=XX4“ @  br V”?d ø=ÚÉ#M @  bs W”?d 8>^V5¹ @  bt X”?d x>ÜÇ"g @  bu Y”?d ¸>ŽÜÍ> @  bv Z”?d ø> MÚà @  bw [”?d 8?V5§ @  bx \”?d x?Ô¤°S @  by ]”?duÐ@7 ¸?†¿_  @  bz ^”?d ø?.HÔ @  b{ _”?d P@&¾í @  b| `”?d @K @  b} a”?d Ð@ö4çj @  b~ b”?d A&|k‚ @  b c”?d PAß+¢* @  b€ d”?d AÿÞ Ô @  b e”?d ÐA¡Z­ @  b‚ f”?d B’åúl @  bƒ g”?d PB ¯[‡ @  b„ h”?d B)ZYy @  b… i”?d ÐBÙ%£ @  b† j”?d C m/è @  b‡ k”?d PCÌɳ @  bˆ l”?d C!9ËM @  b‰ m”?d ÐCÑF14 @  bŠ n”?d DÈÂ; @  b‹ o”?d PD6< @  bŒ p”?d Dç @  b q”?d ÐDæ˜ù» @  bŽ r”?d E6ÐuS @  b s”?d PE“Эè @  b t”?d E³%¯ @  b‘ u”?d ÐECZUo @  b’ v”?d FÞõ® @  b“ w”?d PFETTE @  b” x”?d Fe¡V» @  b• y”?d ÐF•ެ @  b– z”?d GE– * @  b— {”?d PGM7Æq @  b˜ |”?d GmÂÄ @  b™ }”?d ÐG½>ö @  bš ~”?d H©B²ë @  b› ”?d PH'y ³ @  bœ €”?d HŒ M @  b ”?d ÐH÷óñ4 @  bž ‚”?d I'»}Ü @  bŸ ƒ”?d PI“½‚× @  b  „”?d I³H€) @  b¡ …”?d ÐIC7zP @  b¢ †”?d JÞsÚ‘ @  b£ ‡”?d PJE9{z @  b¤ ˆ”?d JeÌy„ @  b¥ ‰”?d ÐJ•³ƒý @  b¦ Š”?d KEû @  b§ ‹”?d PKMZéN @  b¨ Œ”?d Km¯ë° @  b© ”?d ÐKÐÉ @  bª Ž”?d L„žâÆ @  b« ”?d PLz„!Á @  b¬ ”?d LZq#? @  b­ ‘”?d ÐLªÙF @  b® ’”?d MzFU® @  b¯ “”?d PMßF @  b° ””?d Mÿ³ë @  b± •”?d ÐMÌu’ @  b² –”?d N’ˆÕS @  b³ —”?d PN Ât¸ @  b´ ˜”?d N)7vF @  bµ ™”?d ÐNÙHŒ? @  b¶ š”?d O × @  b· ›”?d PO¡æŒ @  b¸ œ”?d O!Tär @  b¹ ”?d ÐOÑ+  @  bº ž”?d Poõ¢¹ @  b» Ÿ”?d PP XXb @  b¼  ”?d P,­Zœ @  b½ ¡”?d ÐPÜÒ å @  b¾ ¢”?d Q š,  @  b¿ £”?d PQ›Õ” @  bÀ ¤”?d Q6n×j @  bÁ ¥”?d ÐQÆ- @  b ¦”?d R[UÒ @  bà §”?d PRÀ,9 @  bÄ ¨”?d Ràê.Ç @  bÅ ©”?d ÐR•Ô¾ @  bÆ ª”?d SÀÝXV @  bÇ «”?d PSÈ|¾  @  bÈ ¬”?d S艼ó @  bÉ ­”?d ÐSöFŠ @  bÊ ®”?d T¸µ… @  bË ¯”?d PTÿ¢v‚ @  bÌ °”?d TßWt| @  bÍ ±”?d ÐT/(Ž @  bÎ ²”?d Uÿ`í @  bÏ ³”?d PUZ`ÚV @  bÐ ´”?d Uz•ب @  bÑ µ”?d ÐUŠê"Ñ @  bÒ ¶”?d V®‚ @  bÓ ·”?d PVŒä#û @  bÔ ¸”?d V¬! @  bÕ ¹”?d ÐV\nÛ| @  bÖ º”?d WŒ&W” @  b× »”?d PW„‡±Ï @  bØ ¼”?d W¤r³1 @  bÙ ½”?d ÐWT IH @  bÚ ¾”?d X`òÅU @  bÛ ¿”?d PXó*Ÿ @  bÜ À”?d XÓú(a @  bÝ Á”?d ÐX#…Ò @  bÞ ”?d YóÍ^ð @  bß Ô?d PYGË¡û @  bà Ä”?d Yg>£ @  bá Å”?d ÐY—AY| @  bâ Æ”?d€ Z~Æå @  c Ç”?d PZÍ Ù @  c È”?d Z$8' @  c É”?d ÐZ³ @  c Ê”?d [ÁFƒ[ @  c Ë”?d P[U:z @  c Ì”?d [' 8„ @  c Í”?d Ð[m‡ @  c Δ?d \#nˆ @  c Ï”?d P\;pVb @  c Д?d \…Tœ @  c Ñ”?d Ð\.³U @  c Ò”?d ]þûÙà @  c Ó”?d P]8è`Á @  c Ô”?d ]b? @  c Õ”?d Ð]‹qùÜ @  c Ö”?d ^5Y @  c ×”?d P^H6 @  c Ø”?d ^hÃå @  c Ù”?d Ð^]õq @  c Ú”?d _½Œ™ @  c Û”?d P_K®5¸ @  c Ü”?d _k[7F @  cuÐ` Ý”?d Ð_U–’E @  c Þ”?d (`ën'Ý @  c ß”?d h`MŠ&ë @  c à”?d ¨`m$ @  c á”?d è`XI% @  c â”?d (aˆ©i @  c ã”?d haNH @  c ä”?d ¨anç¶ @  c å”?d èaì®å @  c æ”?d (bqÉ$ @  c! ç”?d hb/ÊT" @  c" è”?d ¨b?VÜ @  c# é”?d èb: WH @  c$ ê”?d (cêAÛ  @  c% ë”?d hc,Rb @  c& ì”?d ¨c §` @  c' í”?d èc2jÅ| @  c( î”?d (d+$6s @  c) ï”?d hdw™ @  c* ð”?d ¨d0‚ g @  c+ ñ”?d èd´ ó @  c, ò”?d (eÕü @  c- ó”?d heï8: @  c. ô”?d ¨e3:Ä @  c/ õ”?d èe v¡' @  c0 ö”?d (f=2æ @  c1 ÷”?d hfc1[à @  c2 ø”?d ¨fCÄY @  c3 ù”?d èfvòXŠ @  c4 ú”?d (g¦ºÔb @  c5 û”?d hg`©mC @  c6 ü”?d ¨g@\o½ @  c7 ý”?d èg~‘ʾ @  c8 þ”?d (hJnF£ @  c9 ÿ”?d hh~{S @  c: •?d ¨h^ŽQä @  c; •?d èhk¸Pp @  c< •?d (i»ðܘ @  c= •?d hi}ãe¹ @  c> •?d ¨i]gG @  c? •?d èiq{݆ @  c@ •?d (jì?}G @  cA •?d hj²<'A @  cB •?d ¨j’É%¿ @  cC  •?d èj§ÿ$+ @  cD  •?d (kw·¨Ã @  cE  •?d hk±¤â @  cF  •?d ¨k‘Q @  cG  •?d èk¯œ¶ @  cH •?d (l¶ÒE @  cI •?d hl}ú @  cJ •?d ¨l­t @  cK •?d èl˜B~ @  cL •?d (mH òx @  cM •?d hmŽKY @  cN •?d ¨m®ìI§ @  cO •?d èm=€ÒD @  cP •?d (n Är… @  cQ •?d hnþÇ(ƒ @  cR •?d ¨nÞ2*} @  cS •?d ènë+é @  cT •?d (o;L§ @  cU •?d hoý_  @  cV •?d ¨oݪÞ @  cW •?d èoãg¹Ý @  cX •?d (p]¹o @  cY •?d hpû]Y @  cZ  •?d ¨pÛ¨§ @  c[ !•?d èpîž3 @  c\ "•?d (q>Ö‹Û @  c] #•?d hqøÅ2ú @  c^ $•?d ¨qØ00 @  c_ %•?d èqZZŒW @  c` &•?d (rÇ,– @  ca '•?d hr™v @  cb (•?d ¨r¹ètn @  cc )•?d èrŒÞuú @  cd *•?d (s\–ù @  ce +•?d hsš…@3 @  cf ,•?d ¨sºpBÍ @  cg -•?d ès„½çÎ @  ch .•?d (tóÁ @  ci /•?d ht¦ ,+ @  cj 0•?d ¨t†U.Õ @  ck 1•?d èt³c/A @  cl 2•?d (uc+£© @  cm 3•?d hu¥8ˆ @  cn 4•?d ¨u…Ív @  co 5•?d èu¡ƒ• @  cp 6•?d (v‹å#T @  cq 7•?d hvÕæyR @  cr 8•?d ¨võ{¬ @  cs 9•?d èvÀ%z8 @  ct :•?d (wmöÐ @  cu ;•?d hwÖ~Oñ @  cv <•?d ¨wö‹M @  cw =•?d èwÈFè  @  cx >•?d (xü¹d @  cy ?•?d hxª p6 @  cz @•?d ¨xŠørÈ @  c{ A•?d èx¿Îs\ @  c| B•?d (yo†ÿ´ @  c} C•?d hy©•F• @  c~ D•?d ¨y‰`Dk @  c E•?d èyF[Λ @  c€ F•?d (zÛnZ @  c G•?d hz…4\ @  c‚ H•?d ¨z¥é6¢ @  cƒ I•?d èzß76 @  c„ J•?d ({@—»Þ @  c… K•?d h{†„ÿ @  c† L•?d ¨{¦q @  c‡ M•?d è{˜¼¥ @  cˆ N•?d (|òV  @  c‰ O•?d h|º¡nç @  cŠ P•?d ¨|šTl @  c‹ Q•?d è|¯bm @  cŒ R•?d (}*áe @  c S•?d h}¹9XD @  cŽ T•?d ¨}™ÌZº @  c U•?d è}  ÁY @  c V•?d (~—äa˜ @  c‘ W•?d h~Éç;ž @  c’ X•?d ¨~é9` @  c“ Y•?d è~Ü$8ô @  c” Z•?d ( l´ @  c• [•?d hÊ = @  c– \•?d ¨uЀ'êŠÃ @  c— ]•?d èÔGªÀ @  c˜ ^•?d @€ºùH´ @  c™ _•?d €€¾y\¢ @  cš `•?d À€<èK| @  c› a•?d [ÑÞ @  cœ b•?d @Ù–Æ @  c c•?d €½áj @  cž d•?d À?p}ß @  cŸ e•?d ‚¢Ïv“ @  c  f•?d @‚ ^aM @  c¡ g•?d €‚Ü9.k @  c¢ h•?d À‚^¨9µ @  c£ i•?d ƒ9G£ @  c¤ j•?d @ƒ»Ö´É @  c¥ k•?d €ƒß¡È @  c¦ l•?d Àƒ]0 @  c§ m•?d „ø"NÄ @  c¨ n•?d @„z³Y @  c© o•?d €„ã„tÐ @  cª p•?d À„ac @  c« q•?d …úù¬ @  c¬ r•?d @…„kîr @  c­ s•?d €…àBs @  c® t•?d À…bU­ @  c¯ u•?d †î4yQ @  c° v•?d @†l¥n @  c± w•?d €†Â!© @  c² x•?d À†S6w @  c³ y•?d ‡u¼¬Õ @  c´ z•?d @‡÷-»  @  cµ {•?d €‡“Z  @  c¶ |•?d À‡ËÔ @  c· }•?d ˆ™h> @  c¸ ~•?d @ˆù)Ê @  c¹ •?d €ˆòï|_ @  cº €•?d Àˆp~k @  c» •?d ‰‘ñ# @  c¼ ‚•?d @‰•æý @  c½ ƒ•?d €‰ñwJü @  c¾ „•?d À‰sæ]" @  c¿ …•?d Š@^Pü @  cÀ †•?d @ŠÂÏG" @  cÁ ‡•?d €Š>¨ @  c ˆ•?d Àм9Ú @  cà ‰•?d ‹ÛÖ…x @  cÄ Š•?d @‹YG’¦ @  cÅ ‹•?d €‹=0>§ @  cÆ Œ•?d À‹¿¡)y @  cÇ •?d Œ³h« @  cÈ Ž•?d @Œ˜"u @  cÉ •?d €ŒR¿ @  cÊ •?d ÀŒƒ„Ea @  cË ‘•?d äkßà @  cÌ ’•?d @fúÈ @  cÍ “•?d €d @  cÎ ”•?d À€s @  cÏ ••?d Ž ¥_> @  cÐ –•?d @ŽŽ4Hà @  cÑ —•?d €ŽrSÆ @  cÒ ˜•?d ÀŽð @  cÓ ™•?d —-Šº @  cÔ š•?d @¼d @  cÕ ›•?d €qË1e @  cÖ œ•?d ÀóZ&» @  c× •?d ñØ(Ô @  cØ ž•?d @sI?  @  cÙ Ÿ•?d €wÉ+ @  cÚ  •?d ÀõX< @  cÛ ¡•?d ‘’·¦` @  cÜ ¢•?d @‘&±¾ @  cÝ £•?d €‘tQ¿ @  cÞ ¤•?d À‘öÀ a @  cß ¥•?d ’k- @  cà ¦•?d @’éîó @  cá §•?d €’‰YÕ @  câ ¨•?d€ À’Næ² @  d ©•?d “—à49 @  d ª•?d @“q#ç @  d «•?d €“´Ot  @  d ¬•?d À“6ÞcÕ @  d ­•?d ”]~}} @  d ®•?d @”ßïj£ @  d ¯•?d €”ˆj @  d °•?d À” ûÍ @  d ±•?d •¨]n‚ @  d ²•?d @•*Ìy\ @  d ³•?d €•‹ò.° @  d ´•?d À• c9n @  d µ•?d –æÉt @  d ¶•?d @–dXcÖ @  d ·•?d €–û,Mj @  d ¸•?d À–y½Z´ @  d ¹•?d —Û;û @  d º•?d @—YŠ,% @  d »•?d €—ø´{É @  d ¼•?d À—z%l @  d ½•?d ˜<4 ­ @  d ¾•?d @˜¾¥s @  d ¿•?d €˜„ÇD @  d À•?d À˜VSÐ @  d Á•?d ™¤ð2Ÿ @  d •?d @™&a%A @  d Õ?d €™‡_r­ @  d Ä•?d À™Îes @  d Å•?d šêd( @  d Æ•?d @šhõ?Ë @  d Ç•?d €šæ‡6Ç @  d È•?d Àšd! @  d! É•?d ›ư@V @  d" Ê•?d @›D!Wˆ @  d# Ë•?d €›åd @  d$ Ì•?d À›gŽº @  d% Í•?d œ .  @  d& Ε?d @œŽ¿Ì @  d' Ï•?d €œÙ:l| @  d( Е?d Àœ[«{¢ @  d) Ñ•?d ù í @  d* Ò•?d @{œ 3 @  d+ Ó•?d €Ú¢Zß @  d, Ô•?d ÀX3M @  d- Õ•?d ž·™g @  d. Ö•?d @ž5¹ @  d/ ו?d €žª|9 @  d0 Ø•?d Àž(í.Û @  d1 Ù•?d ŸŠKO” @  d2 Ú•?d @ŸÚXJ @  d3 Û•?d €Ÿ©ä¦ @  d4 Ü•uР?d ÀŸ+ux @  d5 Ý•?d  (+¹ @  d6 Þ•?d X ª æ•?d X¢Œ Î @  d? ç•?d ˜¢¬tP @  d@ è•?d Ø¢.åŽ @  dA é•?d £ŒCuÁ @  dB ê•?d X£Òb @  dC ë•?d ˜£¯ì5ó @  dD ì•?d Ø£-}"- @  dE í•?d ¤FÝ<… @  dF î•?d X¤ÄL+[ @  dG ï•?d ˜¤“ÉYë @  dH ð•?d ؤXN5 @  dI ñ•?d ¥³þ/z @  dJ ò•?d X¥1o8¤ @  dK ó•?d ˜¥QoH @  dL ô•?d Ø¥Àx– @  dM õ•?d ¦ýj5ð @  dN ö•?d X¦û". @  dO ÷•?d ˜¦à ’ @  dP ø•?d ئbL @  dQ ù•?d §À¸z @  dR ú•?d X§B)mÝ @  dS û•?d ˜§ã:1 @  dT ü•?d اa†-ï @  dU ý•?d ¨'—LU @  dV þ•?d X¨¥[‹ @  dW ÿ•?d ˜¨Oç1M @  dX –?d بÍv&“ @  dY –?d ©oÐGÜ @  dZ –?d X©íAP @  d[ –?d ˜©Lî @  d\ –?d Ø©Îî0 @  d] –?d ª!D]V @  d^ –?d Xª£ÕJˆ @  d_ –?d ˜ª-§C„ @  d` –?d ت¯6TZ @  da  –?d « 5 @  db  –?d X«"Ë @  dc  –?d ˜«.?u' @  dd  –?d Ø«¬®bù @  de  –?d ¬Ç|Q @  df –?d X¬EŸk @  dg –?d ˜¬? @  dh –?d ج‹á @  di –?d ­2-o® @  dj –?d X­°¼xp @  dk –?d ˜­‚/œ @  dl –?d Ø­“8B @  dm –?d ®|¹u$ @  dn –?d X®þ(bú @  do –?d ˜®a\LF @  dp –?d Ø®ãÍ[˜ @  dq –?d ¯Ak:× @  dr –?d X¯Ãú-  @  ds –?d ˜¯bÄzå @  dt –?d دàUm; @  du –?d °,e<. @  dv –?d X°®ô+ð @  dw –?d ˜°dÆ`œ @  dx  –?d ذæWwB @  dy !–?d ±Dñ  @  dz "–?d X±Æ`Ó @  d{ #–?d ˜±g^V? @  d| $–?d رåÏAá @  d} %–?d ² e ‡ @  d~ &–?d X²ˆôY @  d '–?d ˜²K×$ö @  d€ (–?d زÉF3( @  d )–?d ³kàRg @  d‚ *–?d X³éqE¹ @  dƒ +–?d ˜³HOU @  d„ ,–?d سÊÞ‹ @  d… -–?d ´¡~# @  d† .–?d X´#ï ý @  d‡ /–?d ˜´tj~M @  dˆ 0–?d Ø´öûi“ @  d‰ 1–?d µT]Ü @  dŠ 2–?d XµÖÌ @  d‹ 3–?d ˜µwòHî @  dŒ 4–?d صõc_0 @  d 5–?d ¶ÉV @  dŽ 6–?d X¶˜Xˆ @  d 7–?d ˜¶,+4 @  d 8–?d ض…½<ê @  d‘ 9–?d ·']¥ @  d’ :–?d X·¥ŠJ{ @  d“ ;–?d ˜·´— @  d” <–?d Ø·†% I @  d• =–?d ¸À4kó @  d– >–?d X¸B¥|- @  d— ?–?d ˜¸xÇ"P @  d˜ @–?d ظúV5Ž @  d™ A–?d ¹XðTÁ @  dš B–?d X¹ÚaC @  d› C–?d ˜¹{_ó @  dœ D–?d عùÎ- @  d E–?d ºdNK @  dž F–?d Xº”õY• @  dŸ G–?d ˜º‡P™ @  d  H–?d غ˜GG @  d¡ I–?d »:°& @  d¢ J–?d X»¸!1Ö @  d£ K–?d ˜»f: @  d¤ L–?d Ø»›Žqä @  d¥ M–?d ¼ð.oL @  d¦ N–?d X¼r¿x’ @  d§ O–?d ˜¼%: " @  d¨ P–?d ؼ§«ü @  d© Q–?d ½ |³ @  dª R–?d X½‡œkm @  d« S–?d ˜½&¢< @  d¬ T–?d ؽ¤3+_ @  d­ U–?d ¾K™f9 @  d® V–?d X¾Éqç @  d¯ W–?d ˜¾V|_[ @  d° X–?d ؾÔíH… @  d± Y–?d ¿vK)Ê @  d² Z–?d X¿ôÚ> @  d³ [–?d ˜¿Uäiø @uÐÀ  d´ \–?d Ø¿×u~& @  dµ ]–?d 0ÀÁkÂÓ @  d¶ ^–?d pÀCúÕ  @  d· _–?d °À‰Èža @  d¸ `–?d ðÀ Y‰¿ @  d¹ a–?d 0Á©ÿèð @  dº b–?d pÁ+nÿ. @  d» c–?d °ÁŠP¨Â @  d¼ d–?d ðÁÁ¿ @  d½ e–?d 0Âçkòz @  d¾ f–?d pÂeúå¤ @  d¿ g–?d °ÂEê: @  dÀ h–?d ðÂÇýä @  dÁ i–?d 0Ãe¸œ« @  d j–?d pÃç)‹u @  dà k–?d °ÃFÜ™ @  dÄ l–?d ðÃĆËG @  dÅ m–?d 0į&Õï @  dÆ n–?d pÄ-·Â1 @  dÇ o–?d °Äz2° @  dÈ p–?d ðÄø£§_ @  dÉ q–?d 0ÅZÆ @  dÊ r–?d pÅØ”ÑÎ @  dË s–?d °Åyª†" @  dÌ t–?d ðÅû;‘ü @  dÍ u–?d 0Ƒܚ @  dÎ v–?d pÆ–ËD @  dÏ w–?d °Æ tåø @  dÐ x–?d ðÆ‹åò& @  dÑ y–?d 0Ç)C“i @  dÒ z–?d pǫ҄· @  dÓ {–?d °Ç ìÓ[ @  dÔ |–?d ðLj}Ä… @  dÕ }–?d 0ÈÎl¥? @  dÖ ~–?d pÈLý²á @  d× –?d °ÈkY¸ @  dØ €–?d ðÈéȯÐ @  dÙ –?d 0ÉKnΟ @  dÚ ‚–?d pÉÉÿÙA @  dÛ ƒ–?d °ÉhÁŽ­ @  dÜ „–?d ðÉêP™s @  dÝ …–?d 0ÊúÔ @  dÞ †–?d pʇkÃË @  dß ‡–?d °Ê ÊÇ @  dà ˆ–?d ðÊ‹ˆÝ @  dá ‰–?d 0Ë).¼V @  dâ Š–?d€ pËß|·. @  e ‹–?d °ËŸ¨ë @  e Œ–?d ðË’¿5 @  e –?d 0̳{Zp @  e Ž–?d pÌ1êM® @  e –?d °Ì¨Ý`d @  e –?d ðÌ*Lwº @  e ‘–?d 0ÍFXI @  e ’–?d pÍÄÉ^Q @  e “–?d °Í ¾òP @  e ”–?d ðÍ"/åŽ @  e •–?d 0ÎÌS @  e ––?d pΊ]DÛ @  e —–?d °Îv: ý @  e ˜–?d ðÎô«# @  e ™–?d 0Ï5ö @  e š–?d pÏ· ( @  e ›–?d °ÏÓø§) @  e œ–?d ðÏQi°÷ @  e –?d 0ÐX @  e ž–?d pÐÚ Ñ @  e Ÿ–?d °ÐÞÇ @  e  –?d ðÐ\ @  e ¡–?d 0Ñ0„0, @  e ¢–?d pѲ'ò @  e £–?d °ÑÖb‹ó @  e ¤–?d ðÑTóœ- @  e ¥–?d 0Ò~*¦ @  e ¦–?d pÒü=x @  e §–?d °Òær^ @  e ¨–?d ðÒ‚we€ @  e ©–?d 0ÓRÄBå @  e ª–?d pÓÐUU; @  e! «–?d °Ó´"ù: @  e" ¬–?d ðÓ6³îä @  e# ­–?d 0Ô˜Z ¡ @  e$ ®–?d pÔË @  e% ¯–?d °Ôƒü1µ @  e& °–?d ðÔm&k @  e' ±–?d 0Õmy^ @  e( ²–?d pÕïè€ @  e) ³–?d °Õ‹Ÿ£ @  e* ´–?d ðÕ ´_ @  e+ µ–?d 0Ö#íÔ @  e, ¶–?d pÖ¡|  @  e- ·–?d °Ö]Z, @  e. ¸–?d ðÖߊMò @  e/ ¹–?d 0×?M' @  e0 º–?d pל®Zù @  e1 »–?d °×øÙöø @  e2 ¼–?d ð×zHá& @  e3 ½–?d 0Øù{q @  e4 ¾–?d pØ{l¯ @  e5 ¿–?d °ØQm¨ @  e6 À–?d ðØ Àzv @  e7 Á–?d 0ÙaÔDC @  e8 –?d pÙãES @  e9 Ö?d °Ù‡2ÿœ @  e: Ä–?d ðÙ£èB @  e; Å–?d 0Ú/@^É @  e< Æ–?d pÚ­ÑI @  e= Ç–?d °ÚQ¶1 @  e> È–?d ðÚÓ'ï @  e? É–?d 0Û­“0 @  e@ Ê–?d pÛ/'Æ @  eA Ë–?d °ÛKu‹Ç @  eB Ì–?d ðÛÉäœ @  eC Í–?d 0Üg y\ @  eD Ζ?d pÜåœn‚ @  eE Ï–?d °Ü|«CH @  eF Ж?d ðÜþ:T– @  eG Ñ–?d 0Ý’.j£ @  eH Ò–?d pÝ¿}} @  eI Ó–?d °ÝtÈÑ| @  eJ Ô–?d ðÝöYÆ¢ @  eK Õ–?d 0Þܺp) @  eL Ö–?d pÞ^+g÷ @  eM ×–?d °Þ¢L(Ñ @  eN Ø–?d ðÞ Ý? @  eO Ù–?d 0ßáh?Ú @  eP Ú–?d pßcù( @  eQ Û–?d uÐà/°ßŽ„ @  eR Ü–?d ðß…“Û @  eS Ý–?d Hà+Ûg @  eT Þ–?d ˆà éÙ™ @  eU ß–?d Èà­ د @  eV à–?d á}ETG @  eW á–?d HáCˆñD @  eX â–?d ˆác}óº @  eY ã–?d Èá¥nJ› @  eZ ä–?d â8*êZ @  e[ å–?d Hâ ëÎ @  e\ æ–?d ˆâ-éé0 @  e] ç–?d Èâsê³6 @  e^ è–?d 㣢?Þ @  e_ é–?d Hã!ȃ @  e` ê–?d ˆã=s @  ea ë–?d ÈãÇ.8R @  eb ì–?d äÞ`Ë] @  ec í–?d HäëVÊÉ @  ed î–?d ˆäË£È7 @  ee ï–?d ÈäðððÝ @  ef ð–?d å ¸|5 @  eg ñ–?d HåuÙ6 @  eh ò–?d ˆå>€ÛÈ @  ei ó–?d Èåø“bé @  ej ô–?d æe×Â( @  ek õ–?d HæPáü @  el ö–?d ˆæpÁB @  em ÷–?d Èæ.›D @  en ø–?d çþ_¬ @  eo ù–?d Hçm3ŒO @  ep ú–?d ˆçMÆŽ± @  eq û–?d Èç‹Õ7 @  er ü–?d è¿*» @  es ý–?d H芺 @  et þ–?d ˆèªé¸ç @  eu ÿ–?d Èèžü­^ @  ev —?d éN´!¶ @  ew —?d Hépy„µ @  ex —?d ˆéPŒ†K @  ey —?d Èé–Ÿ?j @  ez —?d ê ÛŸ« @  e{ —?d Hê>íž? @  e| —?d ˆêœÁ @  e} —?d Èê@ÆÇ @  e~ —?d ëSJ/ @  e  —?d Hë_hÀß @  e€  —?d ˆëÂ! @  e  —?d È빎{ @  e‚  —?d ì Àˆ @  eƒ  —?d Hì•ö‰› @  e„ —?d ˆìµ‹e @  e… —?d ÈìŽP³ @  e† —?d í^?g @  e‡ —?d Hí`Õšd @  eˆ —?d ˆí@ ˜š @  e‰ —?d Èí†3!» @  eŠ —?d îwz @  e‹ —?d Hî.A€î @  eŒ —?d ˆî´‚ @  e —?d ÈîP·Ø @  eŽ —?d ï€ÿTþ @  e —?d Hï“Ï @  e —?d ˆï3fÍã @  e‘ —?d Èïõut @  e’ —?d ðK«Èp @  e“ —?d Hð~Éä @  e” —?d ˆð^hË @  e• —?d ÈðøŒÊ, @  e–  —?d ñ(ÄFÄ @  e— !—?d Hñ ãÇ @  e˜ "—?d ˆñ6üá9 @  e™ #—?d ÈñðïX @  eš $—?d òm«øÙ @  e› %—?d HòXùM @  eœ &—?d ˆòxhû³ @  e '—?d Èò&k¡µ @  ež (—?d óö#-] @  eŸ )—?d HótI‘ @  e  *—?d ˆóT¼“ð @  e¡ +—?d Èó’¯*Ñ @  e¢ ,—?d ô‹áÙÞ @  e£ -—?d Hô¾×ØJ @  e¤ .—?d ˆôž"Ú´ @  e¥ /—?d Èô¥qâ^ @  e¦ 0—?d õu9n¶ @  e§ 1—?d HõKô˵ @  e¨ 2—?d ˆõkÉK @  e© 3—?d Èõ­pj @  eª 4—?d ö0VЫ @  e« 5—?d Hö`Ñ? @  e¬ 6—?d ˆö%•ÓÁ @  e­ 7—?d Èö{–‰Ç @  e® 8—?d ÷«Þ/ @  e¯ 9—?d H÷8²žÌ @  e° :—?d ˆ÷Gœ2 @  e± ;—?d È÷ÞT% @  e² <—?d øê«© @  e³ =—?d Høߨš @  e´ >—?d ˆøÿhªd @  eµ ?—?d Èø©Ü¾C @  e¶ @—?d ùy”2« @  e· A—?d HùGY—¨ @  e¸ B—?d ˆùg¬•V @  e¹ C—?d Èù¡¿,w @  eº D—?d ú<ûŒ¶ @  e» E—?d Hú Í" @  e¼ F—?d ˆú)8Ü @  e½ G—?d Èúw;ÕÚ @  e¾ H—?d û§sY2 @  e¿ I—?d Hû‹ãó @  eÀ J—?d ˆû«ëá  @  eÁ K—?d ÈûmøX, @  e L—?d üt¶«# @  eà M—?d HüA€ª· @  eÄ N—?d ˆüau¨I @  eÅ O—?d ÈüZ&£ @  eÆ P—?d ýŠnK @  eÇ Q—?d Hý´£¹H @  eÈ R—?d ˆý”V»¶ @  eÉ S—?d ÈýRE— @  eÊ T—?d þÏ¢V @  eË U—?d Hþú7£Â @  eÌ V—?d ˆþÚ¡< @  eÍ W—?d Èþ„Áû: @  eÎ X—?d ÿT‰wÒ @  eÏ Y—?d HÿÇåì1 @  eÐ Z—?d ˆÿçîÏ @  eÑ uÐ[—?d Èÿ!Wî @  eÒ \—?d n· @  eÓ ]—?d `[~‹ @  eÔ ^—?d  {t|u @  eÕ _—?d àÝ}C @  eÖ `—?d  Øñ« @  e× a—?d `3T¨ @  eØ b—?d  àVV @  eÙ c—?d àÕóïw @  eÚ d—?d H·O¶ @  eÛ e—?d `}N" @  eÜ f—?d  ]tLÜ @  eÝ g—?d àwÚ @  eÞ h—?d Ó?š2 @  eß i—?d `QU&a @  eà j—?d  q $Ÿ @  eá k—?d à·³¾ @  eâ l—?d€ oº™± @  f m—?d `»ÍÐ  @  f n—?d  ›8Òò @  f o—?d àe"õ @  f p—?d µj @  f q—?d `Egd @  f r—?d  eàeš @  f s—?d àmAƒÁ @  f t—?d ð# @  f u—?d `zÙy @  f v—?d   Û‡ @  f w—?d à»Åzl @  f x—?d kö„ @  f y—?d `›ò ý @  f z—?d  » @  f {—?d àÖ¸ @  f |—?d *øZ¥ @  f }—?d `Ú‡ Ü @  f ~—?d  úr¢" @  f —?d àtIz @  f €—?d ¤•’ @  f —?d ` T~oë @  f ‚—?d   t‹m @  f ƒ—?d à |*‹N @  f „—?d án+ @  f …—?d ` Ñö @  f †—?d   1äÓ @  f ‡—?d à ª®rã @  f ˆ—?d zæþ  @  f ‰—?d ` Š™r @  f Š—?d   ªlŒ @  f ‹—?d à jù‡ @  f Œ—?d $ ˆ @  f! —?d ` ÷[ðñ @  f" Ž—?d   ×®ò @  f# —?d à )´1 @  f$ —?d ùü½à @  f% ‘—?d `  ƒG™ @  f& ’—?d   )vEg @  f' “—?d à !×£< @  f( ”—?d ¼“ý @  f) •—?d `Lìù„ @  f* –—?d  lûz @  f+ ——?d à÷SZ‘ @  f, ˜—?d 'Öy @  f- ™—?d `×d, @  f. š—?d  ÷‘.þ @  f/ ›—?d àR‘öE @  f0 œ—?d ìOJ÷ @  f1 —?d `0°Ž @  f2 ž—?d  <Ųp @  f3 Ÿ—?d à_hH« @  f4  —?d  ÄC @  f5 ¡—?d `_>: @  f6 ¢—?d  _ª<Ä @  f7 £—?d àW ÚŸ @  f8 ¤—?d ÊOz^ @  f9 ¥—?d `:0€' @  f: ¦—?d  Å‚Ù @  f; §—?d à#2 @  f< ¨—?d QǯÚ @  f= ©—?d `¡¸U£ @  f> ª—?d  MW] @  f? «—?d à›L®Ä @  f@ ¬—?d ‚]Ë @  fA ­—?d `r}§² @  fB ®—?d  Rˆ¥L @  fC ¯—?d ଒fK @  fD °—?d |Úê£ @  fE ±—?d `Œ¥Ú @  fF ²—?d  ¬P$ @  fG ³—?d à¤ñô @  fH ´—?d 9µT¾ @  fI µ—?d `É樂 @  fJ ¶—?d  é?¬9 @  fK ·—?d àru Ò @  fL ¸—?d ¢=: @  fM ¹—?d `RB{C @  fN º—?d  r·y½ @  fO »—?d à×·¡ @  fP ¼—?d ãH- @  fQ ½—?d `7×b @  fR ¾—?d  3ÂÕœ @  fS ¿—?d à ?:V @  fT À—?d pw¶¾ @  fU Á—?d `€LÇ @  fV —?d   ýN9 @  fW ×?d à¨\¨b @  fX Ä—?d 5£ @  fY Å—?d `ÅgòÚ @  fZ Æ—?d  å’ð$ @  f[ Ç—?d à~ØQÏ @  f\ È—?d ®Ý' @  f] É—?d `^ï'^ @  f^ Ê—?d  ~%  @  f_ Ë—?d àÊÚ« @  f` Ì—?d ÓR)¤ @  fa Í—?d `#-ÓÝ @  fb Η?d  ØÑ# @  fc Ï—?d àýÂ$ @  fd З?d -ŠžÌ @  fe Ñ—?d `Ýõdµ @  ff Ò—?d  ýfK @  fg Ó—?d àõ¡€ @  fh Ô—?d hå Ñ @  fi Õ—?d `˜šÚ¨ @  fj Ö—?d  ¸oØV @  fk ×—?d à#%y½ @  fl Ø—?d ómõU @  fm Ù—?d `, @  fn Ú—?d  #ç ÒuÐ  @  fo Û—?d à†çÕi @  fp Ü—?d 8 ÷ì  @  fq Ý—?d x “ñv @  fr Þ—?d ¸ 'fóˆ @  fs ß—?d ø DË S @  ft à—?d 8!”ƒ…» @  fu á—?d x!dü @  fv â—?d ¸!D }< @  fw ã—?d ø!L¨›g @  fx ä—?d 8"Ñì;¦ @  fy å—?d x"!“Áß @  fz æ—?d ¸"fÃ! @  f{ ç—?d ø"š,bÊ @  f| è—?d 8#Jdî" @  f} é—?d x#º[ @  f~ ê—?d ¸#šî¥ @  f ë—?d ø#c¹ß  @  f€ ì—?d 8$z÷, @  f í—?d x$ŠˆÖ{ @  f‚ î—?d ¸$ª}Ô… @  fƒ ï—?d ø$Tg‚ @  f„ ð—?d 8%„/›j @  f… ñ—?d x%tPa @  f† ò—?d ¸%T¥cí @  f‡ ó—?d ø%\…¶ @  fˆ ô—?d 8&Á@%w @  f‰ õ—?d x&1?ß @  fŠ ö—?d ¸&ÊÝð @  f‹ ÷—?d ø&Š€| @  fŒ ø—?d 8'ZÈðó @  f ù—?d x'ª· Š @  fŽ ú—?d ¸'ŠBt @  f û—?d ø'/BÐÏ @  f ü—?d 8(½\Ò @  f‘ ý—?d x(릫 @  f’ þ—?d ¸(Ë7¤U @  f“ ÿ—?d ø(ßX{î @  f” ˜?d 8)÷ @  f• ˜?d x)ÿo  @  f– ˜?d ¸)ßš @  f— ˜?d ø)×;éÚ @  f˜ ˜?d 8*JI @  f™ ˜?d x*º³b @  fš ˜?d ¸*šõ±œ @  f› ˜?d ø*¿w @  fœ ˜?d 8+Ñ÷œŸ @  f  ˜?d x+!ˆfæ @  fž  ˜?d ¸+}d @  fŸ  ˜?d ø+µ{› @  f   ˜?d 8,¬5h @  f¡  ˜?d x,\J’e @  f¢ ˜?d ¸,|¿› @  f£ ˜?d ø,‚¥Sœ @  f¤ ˜?d 8-Ríßt @  f¥ ˜?d x-¢’%  @  f¦ ˜?d ¸-‚g'ó @  f§ ˜?d ø-ŠÆÁ¨ @  f¨ ˜?d 8.‚ai @  f© ˜?d x.çý› @  fª ˜?d ¸.Ç™î @  f« ˜?d ø.\B8 @  f¬ ˜?d 8/Œ ´í @  f­ ˜?d x/|uN” @  f® ˜?d ¸/\€Lj @  f¯ ˜?d ø/ù€”Ñ @  f° ˜?d 80G^(c @  f± ˜?d x0·!Ò @  f² ˜?d ¸0—ÔÐä @  f³ ˜?d ø0ôy*? @  f´  ˜?d 81$1¦× @  fµ !˜?d x1ÔN\® @  f¶ "˜?d ¸1ô»^P @  f· #˜?d ø1ü¸  @  f¸ $˜?d 82a^Ê @  f¹ %˜?d x2‘!â³ @  fº &˜?d ¸2±ÔàM @  f» '˜?d ø2*žA¦ @  f¼ (˜?d 83úÖÍN @  f½ )˜?d x3 ©77 @  f¾ *˜?d ¸3*\5É @  f¿ +˜?d ø30]ÌP @  fÀ ,˜?d 84)?_ @  fÁ -˜?d x4ÙlÅ& @  f .˜?d ¸4ù™ÇØ @  fà /˜?d ø4ƒß @  fÄ 0˜?d 85×ˈ7 @  fÅ 1˜?d x5'´rN @  fÆ 2˜?d ¸5Ap° @  fÇ 3˜?d ø5à–ë @  fÈ 4˜?d 86’¤6* @  fÉ 5˜?d x6bÛÌS @  fÊ 6˜?d ¸6B.έ @  fË 7˜?d ø6ÙdoF @  fÌ 8˜?d 87 ,ã® @  fÍ 9˜?d x7ùS× @  fÎ :˜?d ¸7Ù¦) @  fÏ ;˜?d ø7|¦Ã’ @  fÐ <˜?d 88HYO @  fÑ =˜?d x8¸&µö @  fÒ >˜?d ¸8˜Ó· @  fÓ ?˜?d ø8 .X @  fÔ @˜?d 89ÛfÔ* @  fÕ A˜?d x9+.S @  fÖ B˜?d ¸9 ì,­ @  f× C˜?d ø9MÊö @  fØ D˜?d 8:ž j7 @  fÙ E˜?d x:nvN @  fÚ F˜?d ¸:Nƒ’° @  fÛ G˜?d ø:ÕÉ3[ @  fÜ H˜?d 8;¿³ @  fÝ I˜?d x;õþEÊ @  fÞ J˜?d ¸;Õ G4 @  fß K˜?d ø;a ¸? @  fà L˜?d 8<xCK0 @  fá M˜?d x<ˆ<±I @  fâ N˜?d€ ¸<Ü ¯ @  g O˜?d ø<ÃQ$? @  g P˜?d 8=¨× @  g Q˜?d x=&/©C @  g R˜?d ¸=Ú«½ @  g S˜?d ø=ÀÉœ @  g T˜?d 8>]²] @  g U˜?d x>c@^ @  g V˜?d ¸>Cµ  @  g W˜?d ø>¶O¦ @  g X˜?d 8?ÍþÃN @  g Y˜?d x?øÈÂÚ @  g Z˜?duÐ@7 ¸?Ø=À$ @  g [˜?d ø?.y @  g \˜?d P@Ý‚Ã9 @  g ]˜?d @ìŠMú @  g ^˜?d Ð@nZ$ @  g _˜?d Aš&À$ @  g `˜?d PA·×ú @  g a˜?d AåÃN @  g b˜?d ÐA tÔ @  g c˜?d BÔ²Ú® @  g d˜?d PBV#Íp @  g e˜?d BÊŠ}S @  g f˜?d ÐBHj @  g g˜?d CDÁ«½ @  g h˜?d PCÆP¼c @  g i˜?d CQ¨× @  g j˜?d ÐCÓ“¿  @  g k˜?d DŽ_âù @  g l˜?d PD Îõ' @  g m˜?d D,À\T @  g n˜?d ÐD®QKŠ @  g! o˜?d EÇÛèV @  g" p˜?d PEEJÿˆ @  g# q˜?d EÒë< @  g$ r˜?d ÐEP‰üâ @  g% s˜?d F‰OòÜ @  g& t˜?d PF Þå @  g' u˜?d F—wU! @  g( v˜?d ÐFæBÿ @  g) w˜?d G<ƒÏ @  g* x˜?d PG›­” @  g+ y˜?d G ÿ€¥ @  g, z˜?d ÐGŽn—{ @  g- {˜?d Hþµ™ @  g. |˜?d PH|‚¢G @  g/ }˜?d HMŠ,„ @  g0 ~˜?d ÐHÏ;Z @  g1 ˜?d IÖ°àÙ @  g2 €˜?d PIT!÷ @  g3 ˜?d IÃsã³ @  g4 ‚˜?d ÐIAâôm @  g5 ƒ˜?d J˜$úS @  g6 „˜?d PJµí @  g7 …˜?d J†]® @  g8 †˜?d ÐJJp @  g9 ‡˜?d KW‹@ @  g: ˆ˜?d PKŠÆœž @  g; ‰˜?d K”ˆ* @  g< Š˜?d ÐKŸŸô @  g= ‹˜?d LÂÉ @  g> Œ˜?d PL@XÕÚ @  g? ˜?d LÎQz; @  g@ Ž˜?d ÐLLÀmå @  gA ˜?d M%JÎ9 @  gB ˜?d PM§ÛÙç @  gC ‘˜?d M0‰ÍS @  gD ’˜?d ÐM²Ú @  gE “˜?d NkÞÔ³ @  gF ”˜?d PNéOÃm @  gG •˜?d NuæsN @  gH –˜?d ÐN÷wd @  gI —˜?d Oû­¥  @  gJ ˜˜?d POy<²~ @  gK ™˜?d Oîn¦Ê @  gL š˜?d ÐOlÿ± @  gM ›˜?d P–££Y @  gN œ˜?d PP2´‡ @  gO ˜?d P%::D @  gP ž˜?d ÐP§«-š @  gQ Ÿ˜?d QS–·š @  gR  ˜?d PQÑ D @  gS ¡˜?d QFU´ð @  gT ¢˜?d ÐQÄÄ£. @  gU £˜?d R­ @  gV ¤˜?d PRŸ“ºÎ @  gW ¥˜?d R: í @  gX ¦˜?d ÐR«3 @  gY §˜?d SqÜ @  gZ ¨˜?d PSàËÝ @  g[ ©˜?d S˜²ßi @  g\ ª˜?d ÐS#È· @  g] «˜?d TGï•G @  g^ ¬˜?d PTÅ~‚™ @  g_ ­˜?d Tåp+ê @  g` ®˜?d ÐTgá<4 @  ga ¯˜?d UkŸè @  gb °˜?d PUŒúˆ6 @  gc ±˜?d U¨œ‚ @  gd ²˜?d ÐU™9‹\ @  ge ³˜?d V@ÿ…b @  gf ´˜?d PVÂn’¼ @  gg µ˜?d V^Ç"Ÿ @  gh ¶˜?d ÐVÜV5A @  gi ·˜?d WÐŒôq @  gj ¸˜?d PWR㯠@  gk ¹˜?d WÅO÷ @  gl º˜?d ÐWGÞàÅ @  gm »˜?d X7£Â' @  gn ¼˜?d PXµ2Õù @  go ½˜?d X„:[: @  gp ¾˜?d ÐX«Lä @  gq ¿˜?d YÆÃõ @  gr À˜?d PY€WÔ+ @  gs Á˜?d YÀŸ @  gt ˜?d ÐY•”×A @  gu Ø?d ZLRÙ @  gv Ę?d PZÎÃΡ @  gw Ř?d ZRj~‚ @  gx Ƙ?d ÐZÐûi\ @  gy ǘ?d [Ü!¨l @  gz Ș?d P[^°¿² @  g{ ɘ?d [Éâ« @  g| ʘ?d Ð[Ks¼Ø @  g} ˘?d \¿á( @  g~ ̘?d P\”.öö @  g ͘?d \ùqi& @  g€ Θ?d Ð\{à~ø @  g Ϙ?d ]jÝ$ @  g‚ И?d P]ûÊú @  gƒ ј?d ]©ÞN @  g„ Ò˜?d Ð]…8É @  g… Ó˜?d ^\þÇ® @  g† Ô˜?d P^ÞoÐp @  g‡ Õ˜?d ^BÆ`S @  gˆ Ö˜?d Ð^ÀWw @  g‰ ט?d _̶½ @  gŠ ؘ?d P_N¡c @  g‹ Ù˜?d _ÙNµ× @  guÐ`Œ Ú˜?d Ð_[ߢ  @  g Û˜?d (`¡¥¹n @  gŽ ܘ?d h`#4®° @  g ݘ?d ¨`< s @  g Þ˜?d è`­7­ @  g‘ ߘ?d (ad­­ @  g’ à˜?d haæºs @  g“ á˜?d ¨aqS®Ç @  g” â˜?d èaó¹ @  g• ã˜?d (b*·' @  g– ä˜?d hb¨• ù @  g— å˜?d ¨b4<Ú @  g˜ æ˜?d èb¶­ @  g™ ç˜?d (cºwÆ4 @  gš è˜?d hc8æÑê @  g› é˜?d ¨c¯´Å^ @  gœ ê˜?d èc-%Ò€ @  g ë˜?d (dpép @  gž ì˜?d hdòx˜® @  gŸ í˜?d ¨dÒv1Ý @  g  î˜?d èdPç& @  g¡ ï˜?d (e9m…ß @  g¢ ð˜?d he»ü’ @  g£ ñ˜?d ¨e,®†µ @  g¤ ò˜?d èe®?‘k @  g¥ ó˜?d (fwùŸU @  g¦ ô˜?d hfõhˆ‹ @  g§ õ˜?d ¨fiÁ8¨ @  g¨ ö˜?d èfëP/v @  g© ÷˜?d (gçŠîF @  gª ø˜?d hgeù˜ @  g« ù˜?d ¨gòIí, @  g¬ ú˜?d ègpØúò @  g­ û˜?d (h¥Ø @  g® ü˜?d hh‚4ÏÎ @  g¯ ý˜?d ¨h³
    ­Â @  gÞ ,™?d htD¯º @  gß -™?d ¨td¡o @  gà .™?d ètæ0± @  gá /™?d (uº§m @  gâ 0™?d€ hu%±¤á @  h 1™?d ¨uS¢ø| @  h 2™?d èuÑ3ï¢ @  h 3™?d (vͼq @  h 4™?d hvO- ¯ @  h 5™?d ¨v6âö @  h 6™?d èvŸ§õ( @  h 7™?d (w]Ïkb @  h 8™?d hwß^|¼ @  h 9™?d ¨wE“å @  h :™?d èwÔ„; @  h ;™?d (xºà]4 @  h <™?d hx8qJê @  h =™?d ¨xjj¥³ @  h >™?d èxèû²m @  h ?™?d (y…\æ @  h @™?d hy K8 @  h A™?d ¨y_¤a @  h B™?d èyÝž³¿ @  h C™?d (zÁFl @  h D™?d hzC€Q² @  h E™?d ¨z›¾ë @  h F™?d èz“ ©5 @  h G™?d ({Qb7 @  h H™?d h{Óó ¡ @  h I™?d ¨{èÏø @  h J™?d è{yØ& @  h K™?d (|›ü~; @  h L™?d h|miå @  h M™?d ¨|Kv†¼ @  h N™?d è|Éç‘b @  h O™?d (}Òxt” @  h P™?d h}PécJ @  h! Q™?d ¨}òŒ @  h" R™?d è}€c›Í @  h# S™?d (~œìn @  h$ T™?d h~}yÀ @  h% U™?d ¨~Lf–™ @  h& V™?d è~Î÷G @  h' W™?d ( Ÿ  @  h( X™?d hŽÓ @  h) Y™?d ¨uЀ'ÜçŠ @  h* Z™?d è^„ðT @  h+ [™?d @€±ñG2 @  h, \™?d €€‘EÌ @  h- ]™?d À€a{¿µ @  h. ^™?d ±33] @  h/ _™?d @tÄSñ @  h0 `™?d €T1Q @  h1 a™?d À¤N«v @  h2 b™?d ‚9 · @  h3 c™?d @‚:PI{ @  h4 d™?d €‚¥K… @  h5 e™?d À‚êÚ±ü @  h6 f™?d ƒ:’= @  h7 g™?d @ƒª#8h @  h8 h™?d €ƒŠÖ:– @  h9 i™?d Àƒz©Àï @  h: j™?d „cç3à @  h; k™?d @„`½q, @  h< l™?d €„@HsÒ @  h= m™?d À„°7‰« @  h> n™?d …`C @  h? o™?d @…‡>} @  h@ p™?d €…§Ëï @  hA q™?d À…W´…– @  hB r™?d †Êð%W @  hC s™?d @†ɪg› @  hD t™?d €†é_ee @  hE u™?d À† Ÿ @  hF v™?d ‡Éhô @  hG w™?d @‡YÙˆ @  hH x™?d €‡y,v @  hI y™?d À‡‰Sî @  hJ z™?d ˆ½¬b @  hK {™?d @ˆ¾ö Þ @  hL |™?d €ˆž"  @  hM }™?d Àˆn|ØY @  hN ~™?d ‰¾4T± @  hO ™?d @‰–Uuž @  hP €™?d €‰¶ w` @  hQ ™?d À‰Fß @  hR ‚™?d ŠÛ›-Ø @  hS ƒ™?d @ŠØÁo @  hT „™?d €Šø4mê @  hU …™?d ÀŠK—“ @  hV †™?d ‹Ø{ @  hW ‡™?d @‹H² @  hX ˆ™?d €‹hGù @  hY ‰™?d À‹˜8æ€ @  hZ Š™?d Œv @  h[ ‹™?d @Œ‚,WC @  h\ Œ™?d €Œ¢ÙU½ @  h] ™?d ÀŒR¦¯Ä @  h^ Ž™?d ‚î#, @  h_ ™?d @˨]ì @  h` ™?d €ë]_ @  ha ‘™?d À"¥k @  hb ’™?d ކfª @  hc “™?d @Ž…Å @  ht ¤™?d €’Ó<; @  hu ¥™?d À’#jÆB @  hv ¦™?d “ó"Jª @  hw §™?d @“c“OÖ @  hx ¨™?d €“CfM( @  hy ©™?d À“³·Q @  hz ª™?d ”ªWD^ @  h{ «™?d @”© ’ @  h| ¬™?d €”‰øl @  h} ­™?d À”y‡þ @  h~ ®™?d •©Ïrý @  h ¯™?d @•­Ø:ž @  h€ °™?d €•-8` @  h ±™?d À•}R @  h‚ ²™?d –àbØ @  hƒ ³™?d @–ãL  @  h„ ´™?d €–ù"ê @  h… µ™?d À–3ÆØ“ @  h† ¶™?d —ãŽT{ @  h‡ ·™?d @—s?Q @  hˆ ¸™?d €—SÊSù @  h‰ ¹™?d À—£µ©€ @  hŠ º™?d ˜—J% @  h‹ »™?d @˜”gQ @  hŒ ¼™?d €˜´åe¯ @  h ½™?d À˜DšŸÖ @  hŽ ¾™?d ™”Ò> @  h ¿™?d @™¡ufƒ @  h À™?d €™€d} @  h‘ Á™?d À™qÿž @  h’ ™?d šì»>Å @  h“ Ù?d @šïá|  @  h” Ä™?d €šÏ~÷ @  h• Å™?d Àš?k„Ž @  h– Æ™?d ›ï#f @  h— Ç™?d @›’  @  h˜ È™?d €›_gä @  h™ É™?d À›¯õ @  hš Ê™?d œ¶V’ @  h› Ë™?d @œµ D^ @  hœ Ì™?d €œ•ùF  @  h Í™?d Àœe†¼Ù @  hž Ι?d µÎ01 @  hŸ Ï™?d @üˆNñ @  h  Й?d €Ü}L @  h¡ Ñ™?d À,¶v @  h¢ Ò™?d ž±F· @  h£ Ó™?d @ž²T{ @  h¤ Ô™?d €ž’éV… @  h¥ Õ™?d Àžb–¬ü @  h¦ Ö™?d Ÿ²Þ  @  h§ ×™?d @Ÿ"o%h @  h¨ Ø™?d €Ÿš'– @  h© Ù™uР?d ÀŸòåÝï @  hª Ú™?d  ƒî‰ @  h« Û™?d X €´AE @  h¬ Ü™?d ˜  AC» @  h­ Ý™?d Ø P>¹Â @  h® Þ™?d ¡€v5* @  h¯ ß™?d X¡EU† @  h° à™?d ˜¡etWx @  h± á™?d Ø¡• ­ @  h² â™?d ¢O À @  h³ ã™?d X¢ O  @  h´ ä™?d ˜¢+àMò @  hµ å™?d Ø¢ÛŸ·‹ @  h¶ æ™?d £ ×;c @  h· ç™?d X£›f> @  h¸ è™?d ˜£»“<á @  h¹ é™?d Ø£KìÆ˜ @  hº ê™?d ¤R¢5— @  h» ë™?d X¤Qøw[ @  h¼ ì™?d ˜¤q u¥ @  h½ í™?d ؤrÜ @  h¾ î™?d ¥Q:4 @  h¿ ï™?d X¥¶{{f @  hÀ ð™?d ˜¥–Žy˜ @  hÁ ñ™?d Ø¥fñƒá @  h ò™?d ¦ûµ#  @  hà ó™?d X¦øïaì @  hÄ ô™?d ˜¦Øc @  hÅ õ™?d ئ(e™k @  hÆ ö™?d §ø-ƒ @  hÇ ÷™?d X§hœÿ @  hÈ ø™?d ˜§Hi @  hÉ ù™?d ا¸èx @  hÊ ú™?d ¨Œéde @  hË û™?d X¨³&© @  hÌ ü™?d ˜¨¯F$W @  hÍ ý™?d ب_9Þ. @  hÎ þ™?d ©qRÆ @  hÏ ÿ™?d X©jUÀ @  hÐ š?d ˜©J > @  hÑ š?d Ø©ºßëG @  hÒ š?d ª'›K† @  hÓ š?d Xª$Á J @  hÔ š?d ˜ª4 ´ @  hÕ š?d تôKñÍ @  hÖ š?d «$}% @  h× š?d X«´²xY @  hØ š?d ˜«”Gz§ @  hÙ  š?d Ø«d8€Þ @  hÚ  š?d ¬}vsÑ @  hÛ  š?d X¬~,1 @  hÜ  š?d ˜¬^Ù3ã @  hÝ  š?d ج®¦Éš @  hÞ š?d ­~îEr @  hß š?d X­7¨;² @  hà š?d ˜­]9L @  há š?d Ø­ç"Ã5 @  hâ š?d€ ®¥R @  i š?d X®ì¾u· @  i š?d ˜®ÌKwI @  i š?d Ø®ù}vÝ @  i š?d ¯)5ú5 @  i š?d X¯w6 3 @  i š?d ˜¯WâÍ @  i š?d دiÎ @  i š?d °×л| @  i š?d X°Ã] @  i š?d ˜°16£ @  i š?d ذ7 @  i š?d ±ÔHß @  i š?d X±r¬Œé @  i  š?d ˜±RYŽ @  i !š?d رÁ5ô @  i "š?d ²\qµ5 @  i #š?d X²šb  @  i $š?d ˜²º—ê @  i %š?d ز¡~ @  i &š?d ³_郖 @  i 'š?d X³êÙ @  i (š?d ˜³!Ûn @  i )š?d سÒ~m @  i *š?d ´œb @  i +š?d X´À4C @  i ,š?d ˜´àz6½ @  i -š?d Ø´ÕL7) @  i .š?d µ»Á @  i /š?d Xµ>Wƒ+ @  i 0š?d ˜µ¢Õ @  i 1š?d صœÈ=† @  i 2š?d ¶ŒG @  i! 3š?d X¶ÇŸ$f @  i" 4š?d ˜¶çj&˜ @  i# 5š?d ضÒ\'  @  i$ 6š?d ·«ä @  i% 7š?d X·\ñâ @  i& 8š?d ˜·|âó @  i' 9š?d Ø·B/V @  i( :š?d ¸vÐÚ @  i) ;š?d X¸°Ãc# @  i* <š?d ˜¸6aÝ @  i+ =š?d ظ¥`I @  i, >š?d ¹uHì¡ @  i- ?š?d X¹#üø† @  i. @š?d ˜¹ úx @  i/ Aš?d عea› @  i0 Bš?d º !ÁZ @  i1 Cš?d XºË2x{ @  i2 Dš?d ˜ºëÇz… @  i3 Eš?d غÞñ{ @  i4 Fš?d »¹÷ù @  i5 Gš?d X»Pº­ÿ @  i6 Hš?d ˜»pO¯ @  i7 Iš?d Ø»N‚  @  i8 Jš?d ¼WÌù  @  i9 Kš?d X¼‘ß@, @  i: Lš?d ˜¼±*BÒ @  i; Mš?d ؼ„CF @  i< Nš?d ½TTÏ® @  i= Oš?d X½o÷D @  i> Pš?d ˜½Oòõº @  i? Qš?d ؽcŸO{ @  i@ Rš?d ¾þÛïº @  iA Sš?d X¾8ÈV› @  iB Tš?d ˜¾=Te @  iC Uš?d ؾ- Uñ @  iD Vš?d ¿ýCÙ @  iE Wš?d X¿£@ƒ @  iF Xš?d ˜¿ƒµá @uÐÀ  iG Yš?d Ø¿½x$â @  iH Zš?d 0ÀÙˆu° @  iI [š?d pÀ›Ì‘ @  iJ \š?d °À?nÎo @  iK ]š?d ðÀ XÏû @  iL ^š?d 0ÁÚC @  iM _š?d pÁ|ôB% @  iN `š?d °Á\@Û @  iO aš?d ðÁÏmÛ8 @  iP bš?d 0ÂR){ù @  iQ cš?d p”:ÂØ @  iR dš?d °Â´ÏÀ& @  iS eš?d ðÂùÁ² @  iT fš?d 0ÃQ±MZ @  iU gš?d pò\ @  iV hš?d °Ã/G¢ @  iW iš?d ðÃа¡ @  iX jš?d 0ÄÄC® @  iY kš?d pÄÎ×ú @  iZ lš?d °Äî"øq @  i[ mš?d ðÄÛùå @  i\ nš?d 0Å \u  @  i] oš?d pÅ0Mç @  i^ pš?d °ÅúO @  i_ qš?d ðÅ’óJ @  i` rš?d 0ÆÔS‹ @  ia sš?d pÆÉÇêª @  ib tš?d °Æé2èT @  ic uš?d ðÆÜéÀ @  id vš?d 0Ç Le( @  ie wš?d pÇRO?. @  if xš?d °Çrº=Ð @  ig yš?d ðÇLw˜Ó @  ih zš?d 0ÈxˆÎ @  ii {š?d pȾ›­ï @  ij |š?d °Èžn¯ @  ik }š?d ðÈ«X®… @  il ~š?d 0É{"m @  im š?d pÉ0bbØ @  in €š?d °É—`& @  io š?d ðɃûûÅ @  ip ‚š?d 0Ê¿[ @  iq ƒš?d pÊجâ% @  ir „š?d °ÊøYàÛ @  is …š?d ðÊÍoáO @  it †š?d 0Ë'm§ @  iu ‡š?d pËC$7¡ @  iv ˆš?d °ËcÑ5_ @  iw ‰š?d ðË]\ @  ix Šš?d 0ÌDRcS @  iy ‹š?d pÌ‚AÚr @  iz Œš?d °Ì¢´ØŒ @  i{ š?d ðÌ—‚Ù @  i| Žš?d 0ÍGÊUð @  i} š?d pÍ|™m @  i~ š?d °Í\loä @  i ‘š?d ðÍ“Wå @  i€ ’š?d 0ÎEÕ @  i “š?d pÎÈüô @  i‚ ”š?d °Îèõþ  @  iƒ •š?d ðÎÝÃÿž @  i„ –š?d 0Ï ‹sv @  i… —š?d pÏSˆ)p @  i† ˜š?d °Ïs}+Ž @  i‡ ™š?d ðÏM°Ž @  iˆ šš?d 0Ðón2? @  i‰ ›š?d pÐ5}‹ @  iŠ œš?d °Ðˆ‰à @  i‹ š?d ðÐ ¾ˆt @  iŒ žš?d 0Ñðöœ @  i Ÿš?d pÑVª @  iŽ  š?d °ÑvçT @  i ¡š?d ðÑ勜· @  i ¢š?d 0ÒxÏÕl @  iá óš?d ˆæ2Iym @  iâ ôš?d€ ÈæqŸ™³ @  j õš?d ç÷1K8 @  j öš?d Hçu \æ @  j ÷š?d ˆçLŽè- @  j øš?d ÈçÎÿó @  j ùš?d 舞I @  j úš?d Hè Ÿ‰— @  j ûš?d ˆè Zzì @  j üš?d Èè"Ëm2 @  j ýš?d é€m } @  j þš?d Héü£ @  j ÿš?d ˆéQÄà× @  j ›?d ÈéÓU÷  @  j ›?d ê<ÿºo @  j ›?d Hê¾n­± @  j ›?d ˆê¹ `* @  j ›?d Èê;›wô @  j ›?d ë™=» @  j ›?d Hë¬e @  j ›?d ˆë"‚µ® @  j ›?d Èë ¢p @  j  ›?d ì˳¼Ø @  j  ›?d HìI"« @  j  ›?d ˆìãçX} @  j  ›?d ÈìavO£ @  j  ›?d íÃÐ.ì @  j ›?d HíAA92 @  j ›?d ˆí?ï @  j ›?d ÈퟮøË @  j ›?d îpµ­ @  j ›?d Hîò•¢s @  j ›?d ˆîä÷HX @  j ›?d Èîff_† @  j! ›?d ïÄÀ>É @  j" ›?d HïFQ) @  j# ›?d ˆïÜ @  j$ ›?d ÈïýîŠ @  j% ›?d ð1ÞÛ @  j& ›?d Hð³OÌÉ @  j' ›?d ˆðŠ?² @  j( ›?d Èð›(l @  j) ›?d ñ9½I# @  j* ›?d Hñ»,^ý @  j+ ›?d ˆñzå± @  j,  ›?d Èñøt¦Ø @  j- !›?d òÞë¾ @  j. "›?d Hò•Oü` @  j/ #›?d ˆò’+1û @  j0 $›?d Èòº&% @  j1 %›?d ó²Gj @  j2 &›?d Hó0P´ @  j3 '›?d ˆó £ä @  j4 (›?d Èó‹2ó¡ @  j5 )›?d ôà’í  @  j6 *›?d Hôbú× @  j7 +›?d ˆôÈÆ ¬ @  j8 ,›?d ÈôJWr @  j9 -›?d õèñ= @  j: .›?d Hõj`hã @  j; /›?d ˆõ6¾Ä @  j< 0›?d Èõ´© @  j= 1›?d ö[%ä| @  j> 2›?d HöÙ´ó¢ @  j? 3›?d ˆöaÑ @  j@ 4›?d Èöã@Å @  jA 5›?d ÷AæiŠ @  jB 6›?d H÷Ãw~T @  jC 7›?d ˆ÷úYÊŸ @  jD 8›?d È÷xÈÝA @  jE 9›?d ø>Ù¼û @  jF :›?d Hø¼H«% @  jG ;›?d ˆøX^ @  jH <›?d Èø”O€ @  jI =›?d ù6º.Ï @  jJ >›?d Hù´+9 @  jK ?›?d ˆù…²Ãû @  jL @›?d Èù#Ô% @  jM A›?d ú艙C @  jN B›?d HújŽ @  jO C›?d ˆúm|C @  jP D›?d ÈúïíTØ @  jQ E›?d ûMK5— @  jR F›?d HûÏÚ"I @  jS G›?d ˆûöô–‚ @  jT H›?d Èûte\ @  jU I›?d üÅŸô @  jV J›?d HüTˆ* @  jW K›?d ˆü7‘{Q @  jX L›?d Èüµl @  jY M›?d ý¦ À @  jZ N›?d Hý•7 @  j[ O›?d ˆýÉIÌ9 @  j\ P›?d ÈýKØÛç @  j] Q›?d þ¤r– @  j^ R›?d Hþ&ã_ @  j_ S›?d ˆþ0kt @  j` T›?d Èþ²|ª @  ja U›?d ÿ¶å @  jb V›?d Hÿ’' ; @  jc W›?d ˆÿ« ¾ð @  jd uÐX›?d Èÿ)˜©. @  je Y›?d _‡ ž @  jf Z›?d `Ý@ @  jg [›?d  wÓè; @  jh \›?d àõBÿå @  ji ]›?d W䞪 @  jj ^›?d `Õu‰t @  jk _›?d  ¼f @  jl `›?d à–-qQ @  jm a›?d y‡<7 @  jn b›?d `û+é @  jo c›?d  ürær @  jp d›?d à~ãñ¬ @  jq e›?d ÜEã @  jr f›?d `^Ô‡= @  js g›?d  gú3ö @  jt h›?d àåk$( @  ju i›?d ŽË:€ @  jv j›?d ` Z-^ @  jw k›?d  ¦ŸÞ% @  jx l›?d à$Éû @  jy m›?d †¨¨´ @  jz n›?d `9¿j @  j{ o›?d  XGiM @  j| p›?d àÚÖ~“ @  j} q›?d 5|3õ @  j~ r›?d `·í$+ @  j s›?d  ìÞø£ @  j€ t›?d ànOï} @  j u›?d ÌéŽ2 @  j‚ v›?d `Nx™ì @  jƒ w›?d  wV-' @  j„ x›?d àõÇ:ù @  j… y›?d ³Ö[C @  j† z›?d `1GL @  j‡ {›?d  ›‚¿æ @  jˆ |›?d à¨8 @  j‰ }›?d »µÉw @  jŠ ~›?d ` 9$Þ© @  j‹ ›?d   {pÑ @  jŒ €›?d à —êg @  j ›?d x@*i @  jŽ ‚›?d ` úÑ=· @  j ƒ›?d   ýµð, @  j „›?d à $çò @  j‘ …›?d Ý‚†½ @  j’ †›?d ` _‘c @  j“ ‡›?d   f=%¨ @  j” ˆ›?d à ä¬2v @  j• ‰›?d  ,Þ @  j– Š›?d `  ; @  j— ‹›?d   §XÈ{ @  j˜ Œ›?d à %Éߥ @  j™ ›?d ‡o¾ê @  jš Ž›?d ` þ©4 @  j› ›?d   Y€ @  jœ ›?d à ÛhÍ @  j ‘›?d 4»%« @  jž ’›?d `¶*2u @  jŸ “›?d   HØ^ @  j  ”›?d à"ÙÏ€ @  j¡ •›?d €®Ï @  j¢ –›?d `î¹ @  j£ —›?d  ;À Ú @  j¤ ˜›?d à¹Q @  j¥ ™›?d uaK @  j¦ š›?d `÷ð\Ï @  j§ ››?d  ]5¯´ @  j¨ œ›?d àߤ¸j @  j© ›?d }Ù% @  jª ž›?d `ÿ“Îû @  j« Ÿ›?d  >Z! @  j¬  ›?d à¼Ë6Þ @  j­ ¡›?d Sa{¸ @  j® ¢›?d `Ñðlf @  j¯ £›?d  Ö”¡ý @  j° ¤›?d àT¶# @  j± ¥›?d ö£×l @  j² ¦›?d `t2À² @  j³ §›?d  Mty @  j´ ¨›?d àÏc§ @  jµ ©›?d ¤-} @  j¶ ª›?d `&¼jÑ @  j· «›?d  Œy™ª @  j¸ ¬›?d àèŽt @  j¹ ­›?d ¬Nï; @  jº ®›?d `.ßøå @  j» ¯›?d  r¡. @  j¼ °›?d àð09 @  j½ ±›?d štz @  j¾ ²›?d ` c¤ @  j¿ ³›?d  %n @  jÀ ´›?d à§ÿ˜Ã @  jÁ µ›?d YùŒ @  j ¶›?d `‡ÈîR @  jà ·›?d  ¾æZ™ @  jÄ ¸›?d àûr @  jà Ô›?d àö¯ì¬ @  já Õ›?d T ã @  jâ Ö›?d€ `¢[†› @  k ×›?d  z4zyuÐ  @  k Ø›?d àø¥m§ @  k Ù›?d 8 > ¥‹ @  k Ú›?d x ¼˜²U @  k Û›?d ¸ ØïT @  k Ü›?d ø Z~ Š @  k Ý›?d 8!6j7¿ @  k Þ›?d x!´û a @  k ß›?d ¸!°{4w @  k à›?d ø!2ê#© @  k á›?d 8" •" @  k â›?d x"š˜‚ü @  k ã›?d ¸"þï.ý @  k ä›?d ø"|~9# @  k å›?d 8#½Ë9ö @  k æ›?d x#?Z.( @  k ç›?d ¸#Ã=a @  k è›?d ø#A¬vÐ @  k é›?d 8$ïE“• @  k ê›?d x$mÔ„K @  k ë›?d ¸$ £(J @  k ì›?d ø$‹2?” @  k í›?d 8%ç&¡ @  k î›?d x%e· @  k ï›?d ¸%ü€;µ @  k ð›?d ø%~,k @  k ñ›?d 8&Tòšà @  k ò›?d x&Öc> @  k ó›?d ¸&²!? @  k ô›?d ø&0…6á @  k õ›?d 8'à6„ @  k ö›?d x'b§Z @  k! ÷›?d ¸'žÀI| @  k" ø›?d ø'Q^¢ @  k# ù›?d 8(Ÿ Äõ @  k$ ú›?d x(˜Ó+ @  k% û›?d ¸(yï* @  k& ü›?d ø(û~hô @  k' ý›?d 8)—jVÁ @  k( þ›?d x)ûA @  k) ÿ›?d ¸)¿ƒ~ @  k* œ?d ø)=iÎ @  k+ œ?d 8*ñßE @  k, œ?d x*•`È› @  k- œ?d ¸*ñdš @  k. œ?d ø*s†sD @  k/ œ?d 8+²3s‘ @  k0 œ?d x+0¢dO @  k1 œ?d ¸+ÌÅ+i @  k2 œ?d ø+NT<· @  k3  œ?d 8,à½Ùò @  k4  œ?d x,b,Î, @  k5  œ?d ¸,[b- @  k6  œ?d ø,„Êuó @  k7  œ?d 8-èÞKÆ @  k8 œ?d x-jO\ @  k9 œ?d ¸-óxqÒ @  k: œ?d ø-qéf  @  k; œ?d 8.[ Ї @  k< œ?d x.Ù›ÇY @  k= œ?d ¸.½ìkX @  k> œ?d ø.?}|† @  k? œ?d 8/AÉ]q @  k@ œ?d x/ÃXJ¯ @  kA œ?d ¸/??‰ @  kB œ?d ø/½®W @  kC œ?d 80´×¸¯ @  kD œ?d x06F¯q @  kE œ?d ¸0R1p @  kF œ?d ø0Р® @  kG œ?d 81¼´*› @  kH œ?d x1>%=E @  kI œ?d ¸1:¥)S @  kJ  œ?d ø1¸4> @  kK !œ?d 82’׈ @  kL "œ?d x2FŸØ @  kM #œ?d ¸2t13Ù @  kN $œ?d ø2ö $ @  kO %œ?d 837$Ò @  kP &œ?d x3µ„3  @  kQ 'œ?d ¸3Iã|* @  kR (œ?d ø3Ërkô @  kS )œ?d 84e›Ž± @  kT *œ?d x4ç ™o @  kU +œ?d ¸4ƒ}5n @  kV ,œ?d ø4ì"° @  kW -œ?d 85mø… @  kX .œ?d x5ïi [ @  kY /œ?d ¸5v^&‘ @  kZ 0œ?d ø5ôÏ1O @  k[ 1œ?d 86Þ,‡Ä @  k\ 2œ?d x6\½ @  k] 3œ?d ¸68Ê< @  k^ 4œ?d ø6º[+Å @  k_ 5œ?d 87jè   @  k` 6œ?d x7èy~ @  ka 7œ?d ¸7TX @  kb 8œ?d ø7–C† @  kc 9œ?d 88×ÙÑ @  kd :œ?d x8—FÎ @  ke ;œ?d ¸8ó1b @  kf <œ?d ø8q uÐ @  kg =œ?d 89´Kå @  kh >œ?d x9Ÿ%\; @  ki ?œ?d ¸9kõ]< @  kj @œ?d ø9édJâ @  kk Aœ?d 8:Çüi @  kl Bœ?d x:Aë· @  km Cœ?d ¸:%aG¶ @  kn Dœ?d ø:§ðPh @  ko Eœ?d 8;fEP½ @  kp Fœ?d x;äÔGc @  kq Gœ?d ¸;³E @  kr Hœ?d ø;š"› @  ks Iœ?d 8<4ËúÞ @  kt Jœ?d x<¶Zí @  ku Kœ?d ¸<Ò-A @  kv Lœ?d ø<P¼Vß @  kw Mœ?d 8=<¨hê @  kx Nœ?d x=¾94 @  ky Oœ?d ¸='Rþ @  kz Pœ?d ø=¥ŸE  @  k{ Qœ?d 8>|ó« @  k| Rœ?d x> íäu @  k} Sœ?d ¸>išHt @  k~ Tœ?d ø>ë _ª @  k Uœ?d 8?véNl @  k€ Vœ?d x?ôxY² @  k Wœ?duÐ@7 ¸?” @  k‚ Xœ?d ø?ŠŽJ @  kƒ Yœ?d P@þ…­< @  k„ Zœ?d @Þp¯Â @  k… [œ?d Ð@cã @  k† \œ?d AÈ+š  @  k‡ ]œ?d PAöæ? @  kˆ ^œ?d AÖ=ö @  k‰ _œ?d ÐAp÷<À @  kŠ `œ?d Bí³œ @  k‹ aœ?d PBØ…• @  kŒ bœ?d BøpŸk @  k cœ?d ÐB>c&J @  kŽ dœ?d Cî+ª¢ @  k eœ?d PC}G1A @  k fœ?d C]²3¿ @  k‘ gœ?d ÐC±i¹ @  k’ hœ?d Dÿš¶ @  k“ iœ?d PD/É›" @  k” jœ?d D<™Ü @  k• kœ?d ÐDÉ/ ý @  k– lœ?d Eg¬ @  k— mœ?d PE'ª  @  k˜ nœ?d E_ è @  k™ oœ?d ÐE< 3 @  kš pœ?d F¡H“à @  k› qœ?d PF”~’W @  kœ rœ?d F´‹© @  k sœ?d ÐFr˜)ˆ @  kž tœ?d G¢Ð¥` @  kŸ uœ?d PG º3 @  k  vœ?d GOÍ @  k¡ wœ?d ÐG^LAË @  k¢ xœ?d Hj³ÍÖ @  k£ yœ?d PH_…ÌB @  k¤ zœ?d Hpμ @  k¥ {œ?d ÐH¹cw @  k¦ |œ?d Ii+ûu @  k§ }œ?d PIWæ^v @  k¨ ~œ?d Iw\ˆ @  k© œ?d ÐI @  k» ‘œ?d PNØè²ª @  k¼ ’œ?d Nø°T @  k½ “œ?d ÐN> u @  k¾ ”œ?d OîF… @  k¿ •œ?d POÂ+?\ @  kÀ –œ?d OâÞ=¢ @  kÁ —œ?d ÐO¼Ýg¤ @  k ˜œ?d PÛ @  kà ™œ?d PP75Ú‚ @  kÄ šœ?d PÀØ| @  kÅ ›œ?d ÐPÑÓa] @  kÆ œœ?d Q›íµ @  kÇ œ?d PQ?VH¶ @  kÈ žœ?d Q£JH @  kÉ Ÿœ?d ÐQ¹GK~ @  kÊ  œ?d R$ë¿ @  kË ¡œ?d PR5ê+ @  kÌ ¢œ?d R1ÀèÕ @  kÍ £œ?d ÐR÷ÓQô @  kÎ ¤œ?d S'›Ý @  kÏ ¥œ?d PS´÷Fÿ @  kÐ ¦œ?d S”D @  kÑ §œ?d ÐSÊ @  kÒ ¨œ?d TÓOí @  kÓ ©œ?d PTæyìœ @  kÔ ªœ?d TÆŒîb @  kÕ «œ?d ÐTŸWC @  kÖ ¬œ?d UÐ×Û« @  k× ­œ?d PUî~¨ @  kØ ®œ?d UÎï|V @  kÙ ¯œ?d ÐUõ¼D¼ @  kÚ °œ?d Vhøä} @  kÛ ±œ?d PV]Îåé @  kÜ ²œ?d V};ç @  kÝ ³œ?d ÐV»(^6 @  kÞ ´œ?d Wk`ÒÞ @  kß µœ?d PWé n @  kà ¶œ?d WÉÿls @  ká ·œ?d ÐW—ü6u @  kâ ¸œ?d€ X%UÑ @  l ¹œ?d PXñ"[l @  l ºœ?d XÑ×Y’ @  l »œ?d ÐXÒ^ @  l ¼œ?d YÅ—¶ @  l ½œ?d PYòºmÏ @  l ¾œ?d YÒOo1 @  l ¿œ?d ÐYJI$l @  l Àœ?d Z× „­ @  l Áœ?d PZ'r~Ô @  l œ?d Z‡|* @  l Ü?d ÐZÝ>æ @  l Äœ?d [Ô•² @  l Åœ?d P[$êHw @  l Æœ?d [J‰ @  l Çœ?d Ð[9q @  l Èœ?d \ A‚ @  l Éœ?d P\Ð>xc @  l Êœ?d \ðËz @  l Ëœ?d Ð\ó‘8Q @  l Ìœ?d ]#Ù´¹ @  l Íœ?d P]Ó¦NÀ @  l Μ?d ]óSL> @  l Ïœ?d Ð]²+® @  l М?d ^›ö‹o @  l Ñœ?d P^k‰q @  l Òœ?d ^K|sè @  l Óœ?d Ð^H&1$ @  l Ôœ?d _˜n½Ì @  l Õœ?d P_hGµ @  l Öœ?d _HäEK @  luÐ` ל?d Ð_dòYg @  l Øœ?d (`Ú ìÿ @  l! Ùœ?d h`*u† @  l" Úœ?d ¨` €x @  l# Ûœ?d è` ÚV´ @  l$ Üœ?d (aÙ’Ú\ @  l% Ýœ?d ha)í % @  l& Þœ?d ¨a "Û @  l' ßœ?d èaaN|— @  l( àœ?d (bü ÜV @  l) áœ?d hb u&/ @  l* âœ?d ¨b,€$Ñ @  l+ ãœ?d èb/Úf @  l, äœ?d (cÿ’êõ @  l- åœ?d hcíŒ @  l. æœ?d ¨c/r @  l/ çœ?d èc)î @  l0 èœ?d (d FÚá @  l1 éœ?d hdû9 ˜ @  l2 êœ?d ¨dÛÌ"f @  l3 ëœ?d èdØ–`ª @  l4 ìœ?d (eÞìB @  l5 íœ?d heø¡; @  l6 îœ?d ¨eØTÅ @  l7 ïœ?d èe-µsU @  l8 ðœ?d (f°ñÓ” @  l9 ñœ?d hf@Ž)í @  l: òœ?d ¨f`{+ @  l; óœ?d èfc!iß @  l< ôœ?d (g³iå7 @  l= õœ?d hgCN @  l> öœ?d ¨gcã° @  l? ÷œ?d ègáò @  l@ øœ?d (hÕ ‹ @  lA ùœ?d hh%rqj @  lB úœ?d ¨h‡s” @  lC ûœ?d èhÝ1X @  lD üœ?d (iÖ•½° @  lE ýœ?d hi&êGÉ @  lF þœ?d ¨iE7 @  lG ÿœ?d èiü¸ô @  lH ?d (jaü¯5 @  lI ?d hj‘ƒUL @  lJ ?d ¨j±vW² @  lK ?d èj²,~ @  lL ?d (kbd™– @  lM ?d hk’cï @  lN ?d ¨k²îa @  lO ?d èkþZ @  lP ?d (l–°©‚ @  lQ  ?d hlfÏSû @  lR  ?d ¨lF:Q @  lS  ?d èlE`É @  lT  ?d (m•(Ÿ! @  lU  ?d hmeWeX @  lV ?d ¨mE¢g¦ @  lW ?d èm°C6 @  lX ?d (n- ÷ @  lY ?d hnÝxZŽ @  lZ ?d ¨nýXp @  l[ ?d ènþ×¼ @  l\ ?d (o.Ÿ–T @  l] ?d hoÞàl- @  l^ ?d ¨oþnÓ @  l_ ?d èoÒrÿ @  l` ?d (plÝÎM @  la ?d hpœ¢44 @  lb ?d ¨p¼W6Ê @  lc ?d èp¿ t @  ld ?d (qoEøî @  le ?d hqŸ:— @  lf ?d ¨q¿Ïi @  lg ?d èq×™^% @  lh  ?d (rJÝþä @  li !?d hrº¢ @  lj "?d ¨ršWc @  lk #?d èr™ D¯ @  ll $?d (sIEÈG @  lm %?d hs¹:2> @  ln &?d ¨s™Ï0À @  lo '?d ès¤ß \ @  lp (?d (t½‘øS @  lq )?d htMî* @  lr *?d ¨tmÔ @  ls +?d ètnAB @  lt ,?d (u¾ Îð @  lu -?d huNv4‰ @  lv .?d ¨unƒ6w @  lw /?d èu›bQç @  lx 0?d (v&ñ& @  ly 1?d hvöY _ @  lz 2?d ¨vÖ¬ ¡ @  l{ 3?d èvÕöKm @  l| 4?d (w¾Ç… @  l} 5?d hwõÁ=ü @  l~ 6?d ¨wÕ4? @  l 7?d èw´s @  l€ 8?d (x€Œ™ @  l 9?d hx4´Ì@ @  l‚€:?d ¨xAξ @  lƒ€;?d èxŒr @  l„€<?d (yÇSš @  l…€=?d hy7,úã @  l†€>?d ¨yÙø @  l‡€??d èyß³@ @  lˆ€@?d (z› @  l‰€A?d hzâäéø @  lŠ€B?d ¨zÂë @  l‹€C?d èzÁK©Ê @  lŒ€D?d ({%" @  l€E?d h{á|ß[ @  lŽ€F?d ¨{Á‰Ý¥ @  l€G?d è{ü™æ9 @  l€H?d (|å×6 @  l‘€I?d h|¨ïO @  l’€J?d ¨|5]í± @  l“€K?d è|6¯} @  l”€L?d (}æO#• @  l•€M?d h}0Ùì @  l–€N?d ¨}6ÅÛ @  l—€O?d è}Ã$¼‚ @  l˜€P?d (~^`C @  l™€Q?d h~®æ: @  lš€R?d ¨~ŽêäÄ @  l›€S?d è~°¦ @  lœ€T?d (]ø*à @  l€U?d h­‡Ð™ @  lž€V?d ¨uЀ'rÒg @  lŸ€W?d è¡dÎK @  l €X?d @€ÏÚ,? @  l¡€Y?d €€ÁÃf @  l¢€Z?d À€PÔ¸ @  l£€[?d NÓ B @  l¤€\?d @ÌBœ @  l¥€]?d €žYõÅ @  l¦€^?d ÀÈâ @  l§€_?d ‚kK H @  l¨€`?d @‚éÚ– @  l©€a?d €‚»ÁóÏ @  lª€b?d À‚9Pä @  l«€c?d ƒhÓ=ë @  l¬€d?d @ƒêB*5 @  l­€e?d €ƒ¸YÅl @  l®€f?d Àƒ:ÈÒ² @  l¯€g?d „œ ÿ @  l°€h?d @„–! @  l±€i?d €„Lõx @  l²€j?d À„Î⦠@  l³€k?d …ŸŸ;\ @  l´€l?d @…,‚ @  lµ€m?d €…OÃÛ @  l¶€n?d À…Í„Ô @  l·€o?d †'°Š @  l¸€p?d @†¥!T @  l¹€q?d €†÷:ü  @  lº€r?d À†u«ëÓ @  l»€s?d ‡$(2) @  l¼€t?d @‡¦¹%÷ @  l½€u?d €‡ô¢Ê® @  l¾€v?d À‡v3Ýp @  l¿€w?d ˆBL\  @  lÀ€x?d @ˆÀÝKÓ @  lÁ€y?d €ˆ’ƤŠ @  l€z?d ÀˆW³T @  lÀ{?d ‰AÔj® @  lÄ€|?d @‰ÃE}p @  lÅ€}?d €‰‘^’) @  lÆ€~?d À‰Ï…÷ @  lÇ€?d ЉÚ-' @  lÈ€€?d @Š K:ù @  lÉ€?d €ŠYPÕ  @  lÊ€‚?d ÀŠÛÁÂ~ @  lË€ƒ?d ‹ŠB„ @  lÌ€„?d @‹Ó Z @  lÍ€…?d €‹ZÈã @  l΀†?d À‹ØYôÝ @  lÏ€‡?d Œ~–+ @  lЀˆ?d @Œüoh @  m4€Î?d À¯x¶ @  m5€Ï?d ž!)÷C @  m6€Ð?d @ž£¸à @  m7€Ñ?d €ž?P¾ @  m8€Ò?d Àž½€G` @  m9€Ó?d Ÿ)Jew @  m:€Ô?d @Ÿ«Ûr© @  m;€Õ?d €Ÿ<‰f @  m<€ÖuР?d ÀŸ¾qà @  m=€×?d  â} @  m>€Ø?d X ‘õ£ @  m?€Ù?d ˜ ZB @  m@€Ú?d Ø ˆMœ @  mA€Û?d ¡ Bo‹ @  mB€Ü?d X¡‹ÓxU @  mC€Ý?d ˜¡lá @  mD€Þ?d Ø¡ž{? @  mE€ß?d ¢'!Í @  mF€à?d X¢¥°ÚÈ @  mG€á?d ˜¢9jë @  mH€â?d Ø¢»ˆ}5 @  mI€ã?d £/B_" @  mJ€ä?d X£­ÓHü @  mK€å?d ˜£:\H @  mL€æ?d Ø£¸K– @  mM€ç?d ¤}ÌõA @  mN€è?d X¤ÿ]⟠@  mO€é?d ˜¤ÎUl\ @  mP€ê?d ؤLÄ{‚ @  mQ€ë?d ¥ØY• @  mR€ì?d X¥ZŸNK @  mS€í?d ˜¥ÍÍZÿ @  mT€î?d Ø¥O\M! @  mU€ï?d ¦kÚÂÔ @  mV€ð?d X¦éKÕ  @  mW€ñ?d ˜¦uâe) @  mX€ò?d ئ÷sr÷ @  mY€ó?d §c¹Pà @  mZ€ô?d X§á(G> @  m[€õ?d ˜§vzSŠ @  m\€ö?d اôëDT @  m]€÷?d ¨†…‘ @  m^€ø?d X¨ž’O @  m_€ù?d ˜¨¾;< @  m`€ú?d ب<ˆ,â @  ma€û?d ©¨Bõ @  mb€ü?d X©*Ó+ @  mc€ý?d ˜©½ Ÿ @  md€þ?d Ø©?A @  me€ÿ?d ª¦ò @  mf€ž?d Xª$cš @  mg€ž?d ˜ª¸Ê*? @  mh€ž?d ت:[=á @  mi€ž?d «®‘ö @  mj€ž?d X«,( @  mk€ž?d ˜«»Rœ @  ml€ž?d Ø«9à B @  mm€ž?d ¬üµ• @  mn€ž?d X¬~Ž¢K @  mo€ ž?d ˜¬O†,ˆ @  mp€ ž?d جÍ;V @  mq€ ž?d ­YÝA @  mr€ ž?d X­ÛLŸ @  ms€ ž?d ˜­L+ @  mt€ž?d Ø­Î õ @  mu€ž?d ®ê ‚ @  mv€ž?d X®h˜•Þ @  mw€ž?d ˜®ô1%ý @  mx€ž?d Ø®v 2# @  my€ž?d ¯âj4 @  mz€ž?d X¯`ûê @  m{€ž?d ˜¯÷©^ @  m|€ž?d دu8€ @  m}€ž?d °tõê @  m~€ž?d X°•åâ4 @  m€ž?d ˜°øº}ä @  m€€ž?d ذz+j: @  m€ž?d ±îáH- @  m‚€ž?d X±lp_ó @  mƒ€ž?d ˜±û"KG @  m„€ž?d رy³\™ @  m…€ž?d ²À‚ê° @  m†€ ž?d X²Býn @  m‡€!ž?d ˜²ÞºMM @  mˆ€"ž?d ز\+Z“ @  m‰€#ž?d ³Èáx„ @  mŠ€$ž?d X³JpoZ @  m‹€%ž?d ˜³Ý"{î @  mŒ€&ž?d س_³l0 @  m€'ž?d ´šoÒç @  mŽ€(ž?d X´þÅ9 @  m€)ž?d ˜´)öKú @  m€*ž?d Ø´«g\$ @  m‘€+ž?d µ?­~3 @  m’€,ž?d Xµ½ @  m£€=ž?d ˜¹Z"*9 @  m¤€>ž?d عس=ç @  m¥€?ž?d º‘Òžß @  m¦€@ž?d XºC‰ @  m§€Až?d ˜ºê9" @  m¨€Bž?d غ {.ü @  m©€Cž?d »™± ë @  mª€Dž?d X» 5 @  m«€Ež?d ˜»Œr @  m¬€Fž?d Ø»ã_ @  m­€Gž?d ¼Ë?¦ˆ @  m®€Hž?d X¼I®±V @  m¯€Iž?d ˜¼x¦?• @  m°€Jž?d ؼú7(K @  m±€Kž?d ½ný \ @  m²€Lž?d X½ìl‚ @  m³€Mž?d ˜½{> 6 @  m´€Nž?d ؽù¯è @  mµ€Ož?d ¾Ý)‘ @  m¶€Pž?d X¾_¸†Ã @  m·€Qž?d ˜¾Ã6à @  m¸€Rž?d ؾA€!> @  m¹€Sž?d ¿ÕJ) @  mº€Tž?d X¿WÛ÷ @  m»€Už?d ˜¿À‰C @uÐÀ  m¼€Vž?d Ø¿B @  m½€Wž?d 0Àúz  @  m¾€Xž?d pÀxëÉ @  m¿€Yž?d °Àöâ³( @  mÀ€Zž?d ðÀts¤ö @  mÁ€[ž?d 0Áๆá @  m€\ž?d pÁb(‘? @  mÀ]ž?d °Áõz…‹ @  mÄ€^ž?d ðÁwë’U @  mÅ€_ž?d 0ÂÎÚ$| @  mÆ€`ž?d pÂLK3¢ @  mÇ€až?d °ÂÐ⃠@  mÈ€bž?d ðÂRs”_ @  mÉ€cž?d 0Ãƹ¶H @  mÊ€dž?d pÃD(¡– @  mË€ež?d °ÃÓzµ" @  mÌ€fž?d ðÃQë¢ü @  mÍ€gž?d 0Ä”7+ @  m΀hž?d pĦ õ @  mÏ€iž?d °Ä'®…6 @  mЀjž?d ðÄ¥?’è @  mÑ€kž?d 0Å1õ°ÿ @  mÒ€lž?d pųd§! @  mÓ€mž?d °Å$6³• @  mÔ€nž?d ðŦ§¤K @  mÕ€ož?d 0Æ‚!+¾ @  mÖ€pž?d pư<` @  m×€qž?d °ÆœŒC @  mØ€rž?d ðÆˆ› @  mÙ€sž?d 0ÇŠB¹Š @  mÚ€tž?d pÇÓ®T @  mÛ€už?d °ÇŸºà @  mÜ€vž?d ðÇ­> @  mÝ€wž?d 0Èõ}lû @  mÞ€xž?d pÈwì{% @  m߀yž?d °ÈWâÒV @  mà€zž?d ðÈÕsň @  má€{ž?d 0ÉA¹çŸ @  mâ€|ž?d€ pÉoA @  n€}ž?d °Ét|[Ü @  n€~ž?d ðÉöíL @  n€ž?d 0Êg@E @  n€€ž?d pÊå’W› @  n€ž?d °Ê·‰¸Â @  n€‚ž?d ðÊ5¯ @  n€ƒž?d 0Ëo`Òq @  n€„ž?d pËíñů @  n €…ž?d °Ë¿ê*ö @  n €†ž?d ðË={=( @  n €‡ž?d 0Ì=îx @  n €ˆž?d pÌ¿oÌ @  n €‰ž?d °Ìíd€• @  n€Šž?d ðÌoõ—K @  n€‹ž?d 0͘,ÔÆ @  n€Œž?d pͽà @  n€ž?d °ÍH¦,A @  n€Žž?d ðÍÊ7;Ÿ @  n€ž?d 0Î+øO‡ @  n€ž?d pΩiXY @  n€‘ž?d °Îûr· @  n€’ž?d ðÎyã Þ @  n€“ž?d 0Ï#›Ý³ @  n€”ž?d pÏ¡ Êm @  n€•ž?d °Ïó%4 @  n€–ž?d ðÏq€2ê @  n€—ž?d 0ÐÖ…8m @  n€˜ž?d pÐT/³ @  n€™ž?d °ÐÀê @  n€šž?d ðЄž×4 @  n€›ž?d 0ÑbA³  @  n €œž?d pÑàФ× @  n!€ž?d °Ñ²ËKŽ @  n"€žž?d ðÑ0Z\P @  n#€Ÿž?d 0ÒL"” @  n$€ ž?d pÒγJ @  n%€¡ž?d °Òœ¨é @  n&€¢ž?d ðÒ9þÍ @  n'€£ž?d 0ÓDAƒ  @  n(€¤ž?d pÓÆÐ”~ @  n)€¥ž?d °Ó”Ë{' @  n*€¦ž?d ðÓZlù @  n+€§ž?d 0ÔÏ)à @  n,€¨ž?d pÔ”^> @  n-€©ž?d °ÔÆEÑD @  n.€ªž?d ðÔDÔÆš @  n/€«ž?d 0Õ³ … @  n0€¬ž?d pÕ1œ’É @  n1€­ž?d °Õc‡} @  n2€®ž?d ðÕájN @  n3€¯ž?d 0ÖÙV @  n4€°ž?d pÖ‚H ˆ @  n5€±ž?d °ÖÐSæÑ @  n6€²ž?d ðÖRÂñ @  n7€³ž?d 0׺Œb @  n8€´ž?d p׊+›¼ @  n9€µž?d °×Ø0tå @  n:€¶ž?d ð×Z¡c; @  n;€·ž?d 0Øw…Y @  n<€¸ž?d pØõNÍ @  n=€¹ž?d °Ø§¡” @  n>€ºž?d ðØ%ž¶J @  n?€»ž?d 0ÙmFÔå @  n@€¼ž?d pÙï×Ã; @  nA€½ž?d °Ù½Ì,b @  nB€¾ž?d ðÙ?];¼ @  nC€¿ž?d 0Ú³uci @  nD€Àž?d pÚ1ät· @  nE€Áž?d °Úcÿ›î @  nF€ž?d ðÚánŒ0 @  nG€Þ?d 0Û»ñ] @  nH€Äž?d pÛ9‡æƒ @  nI€Åž?d °Ûkœ Ú @  nJ€Æž?d ðÛé  @  nK€Çž?d 0Üé˜[> @  nL€Èž?d pÜk Là @  nM€Éž?d °Ü9£¹ @  nN€Êž?d ðÜ»ƒ´g @  nO€Ëž?d 0ÝLZ÷ê @  nP€Ìž?d pÝÎËà4 @  nQ€Íž?d °ÝœÐm @  nR€Ξ?d ðÝA³ @  nS€Ïž?d 0ÞÿŽl« @  nT€О?d pÞ}{u @  nU€Ñž?d °Þ/”, @  nV€Òž?d ðÞ­•ƒò @  nW€Óž?d 0ß÷íþŸ @  nX€Ôž?d pßu|éA @  nY€Õž?d uÐà/°ß'g @  nZ€Öž?d ðߥöÆ @  n[€מ?d Hॉù @  n\€Øž?d ˆà…|ûû @  n]€Ùž?d Èàu‚ @  n^€Úž?d á¥Kj @  n_€Ûž?d HáMra @  n`€Üž?d ˆá1¸pŸ @  na€Ýž?d ÈáÁÇŠæ @  nb€Þž?d â\ƒ*' @  nc€ßž?d Hâ?.Ðü @  nd€àž?d ˆâÛÒ @  ne€áž?d Èâï¤({ @  nf€âž?d ã?줓 @  ng€ãž?d Hã7MBÈ @  nh€äž?d ˆã¸@6 @  ni€åž?d ÈãçǺO @  nj€æž?d äþ‰I@ @  nk€çž?d HäeÃè« @  nl€èž?d ˆäE6êU @  nm€éž?d ÈäµI, @  nn€êž?d åeœÄ @  no€ëž?d HåÀD @  np€ìž?d ˆåàôF @  nq€íž?d È勼ø @  nr€îž?d æÏ9 @  ns€ïž?d HæsÕß> @  nt€ðž?d ˆæS ÝÀ @  nu€ñž?d Èæ£_'¹ @  nv€òž?d çs«Q @  nw€óž?d Hç{¶M  @  nx€ôž?d ˆç[COô @  ny€õž?d Èç«<µ @  nz€öž?d èŸÃ9 @  n{€÷ž?d H艘{ @  n|€øž?d ˆè$|š… @  n}€ùž?d ÈèÔ`ü @  n~€úž?d éKì @  n€ûž?d Héý%¼ @  n€€üž?d ˆéÝé'B @  n€ýž?d Èé-–Ý; @  n‚€þž?d ê°Ò}ú @  nƒ€ÿž?d HêAŽ“® @  n„€Ÿ?d ˆêa{‘P @  n…€Ÿ?d Èê‘k) @  n†€Ÿ?d ëALçÁ @  n‡€Ÿ?d HëIíš @  nˆ€Ÿ?d ˆëid @  n‰€Ÿ?d Èë™gù @  nŠ€Ÿ?d ì€)  @  n‹€Ÿ?d Hìc«ù @  nŒ€Ÿ?d ˆì;–© @  n€ Ÿ?d ÈìËéS~ @  nŽ€ Ÿ?d í¡ß– @  n€ Ÿ?d Hí¾¡- @  n€ Ÿ?d ˆížTÓ @  n‘€ Ÿ?d Èín+ÿª @  n’€Ÿ?d îóo_k @  n“€Ÿ?d Hî uœl @  n”€Ÿ?d ˆî-€ž’ @  n•€Ÿ?d ÈîÝÿdë @  n–€Ÿ?d ï ·è @  n—€Ÿ?d HïX @  n˜€Ÿ?d ˆï%ã ¦ @  n™€Ÿ?d ÈïÕœöß @  nš€Ÿ?d ðkBJm @  n›€Ÿ?d Hððë† @  nœ€Ÿ?d ˆðÐýéx @  n€Ÿ?d Èð ‚ @  nž€Ÿ?d ñðÊŸé @  nŸ€Ÿ?d HñDÌ`â @  n €Ÿ?d ˆñd9b @  n¡€Ÿ?d Èñ”F˜e @  n¢€Ÿ?d ò 8¤ @  n£€Ÿ?d Hòj¯Â @  n¤€ Ÿ?d ˆòJZÀ @  n¥€!Ÿ?d Èòº%:ø @  n¦€"Ÿ?d ójm¶ @  n§€#Ÿ?d HóbÌPK @  n¨€$Ÿ?d ˆóB9Rµ @  n©€%Ÿ?d Èó²F¨Ì @  nª€&Ÿ?d ô«[à @  n«€'Ÿ?d Hô0Bú( @  n¬€(Ÿ?d ˆô·øÖ @  n­€)Ÿ?d Èôàȯ @  n®€*Ÿ?d õ0€ŽG @  n¯€+Ÿ?d Hõ•€Vü @  n°€,Ÿ?d ˆõµuT @  n±€-Ÿ?d ÈõE ®{ @  n²€.Ÿ?d öØNº @  n³€/Ÿ?d Hö&Tͽ @  n´€0Ÿ?d ˆö¡ÏC @  nµ€1Ÿ?d ÈööÞ5: @  n¶€2Ÿ?d ÷&–¹Ò @  n·€3Ÿ?d H÷.7_‰ @  n¸€4Ÿ?d ˆ÷Â]w @  n¹€5Ÿ?d È÷þ½§ @  nº€6Ÿ?d øÊB+ @  n»€7Ÿ?d HøQŠø @  n¼€8Ÿ?d ˆøqýˆ @  n½€9Ÿ?d Èø‚r @  n¾€:Ÿ?d ùQÊþ— @  n¿€;Ÿ?d HùKË @  nÀ€<Ÿ?d ˆùk>ð @  nÁ€=Ÿ?d Èù›Aÿ‰ @  n€>Ÿ?d ú_H @  nÀ?Ÿ?d Hú•ø°‚ @  nÄ€@Ÿ?d ˆúµ ²| @  nÅ€AŸ?d ÈúErH @  nÆ€BŸ?d û•:Äí @  nÇ€CŸ?d Hû›"¶ @  nÈ€DŸ?d ˆû½n H @  nÉ€EŸ?d ÈûMÚ1 @  nÊ€FŸ?d üT_)> @  nË€GŸ?d HüÏˆÕ @  nÌ€HŸ?d ˆüïàŠ+ @  nÍ€IŸ?d ÈüŸpR @  n΀JŸ?d ýÏ×üº @  nÏ€KŸ?d Hýj×$ @  nЀLŸ?d ˆýJ"&ÿ @  nÑ€MŸ?d Èýº]܆ @  nÒ€NŸ?d þ'|G @  nÓ€OŸ?d HþÙ¿@ @  nÔ€PŸ?d ˆþùö½¾ @  nÕ€QŸ?d Èþ ‰GÇ @  nÖ€RŸ?d ÿÙÁË/ @  n×€SŸ?d HÿÑ`-t @  nØ€TŸ?d ˆÿñ•/Š @  nÙ€uÐUŸ?d ÈÿêÕó @  nÚ€VŸ?d N^ý @  nÛ€WŸ?d `Õ\é @  nÜ€XŸ?d  õá^ @  nÝ€YŸ?d àž¤n @  nÞ€ZŸ?d ÕÖ(† @  n߀[Ÿ?d `aÐ× @  nà€\Ÿ?d  A%Õs @  ná€]Ÿ?d à±Z/  @  nâ€^Ÿ?d€ XÝ“m @  o€_Ÿ?d `Ú1!Ÿ @  o€`Ÿ?d  úÄ#a @  o€aŸ?d àÏò"õ @  o€bŸ?d º® @  o€cŸ?d `Ù©< @  o€dŸ?d  ù\ @  o€eŸ?d àÇ‘°Á @  o€fŸ?d ÞßCÎ @  o €gŸ?d `€ÜÈ @  o €hŸ?d   )6 @  o €iŸ?d à•¢ @  o €jŸ?d EW–J @  o €kŸ?d `ƒD/k @  o€lŸ?d  £±-• @  o€mŸ?d à0ݶv @  o€nŸ?d ­™· @  o€oŸ?d `–Ê.] @  o€pŸ?d  ¶?,£ @  o€qŸ?d àƒ -7 @  o€rŸ?d SA¡ß @  o€sŸ?d `•Rþ @  o€tŸ?d  µ§ @  o€uŸ?d à‹j¿ @  o€vŸ?d ¿•3 @  o€wŸ?d `á–i @  o€xŸ?d  Áckæ @  o€yŸ?d àôUjr @  o€zŸ?d $æš @  o€{Ÿ?d ` â_» @  o€|Ÿ?d   Âû]E @  o€}Ÿ?d à @‘á @  o €~Ÿ?d ÝÕA× @  o!€Ÿ?d ` –§b @  o"€€Ÿ?d   ¶Rœ @  o#€Ÿ?d à ƒd @  o$€‚Ÿ?d S,Žà @  o%€ƒŸ?d ` •?7Á @  o&€„Ÿ?d   µÊ5? @  o'€…Ÿ?d à ‹< @  o(€†Ÿ?d ’Ic3 @  o)€‡Ÿ?d ` ÌJ95 @  o*€ˆŸ?d   ì¿;Ë @  o+€‰Ÿ?d à Ù‰:_ @  o,€ŠŸ?d  Á¶· @  o-€‹Ÿ?d ` ÏÒ– @  o.€ŒŸ?d   ï' h @  o/€Ÿ?d à |K–‹ @  o0€ŽŸ?d á6J @  o1€Ÿ?d `Ú\  @  o2€Ÿ?d  ú© ^ @  o3€‘Ÿ?d àÏŸ Ê @  o4€’Ÿ?d ×" @  o5€“Ÿ?d `ÙÄ8 @  o6€”Ÿ?d  ù1:ý @  o7€•Ÿ?d àÇüŸþ @  o8€–Ÿ?d y"#L @  o9€—Ÿ?d `'!yJ @  o:€˜Ÿ?d  Ô{´ @  o;€™Ÿ?d à2âz  @  o<€šŸ?d âªöÈ @  o=€›Ÿ?d `$¹Oé @  o>€œŸ?d  LM @  o?€Ÿ?d à(!÷Ö @  o@€žŸ?d µeW @  oA€ŸŸ?d `V! @  oB€ Ÿ?d  3tTß @  oC€¡Ÿ?d àBUK @  oD€¢Ÿ?d Ö Ù£ @  oE€£Ÿ?d ``‚ @  oF€¤Ÿ?d  0ìb| @  oG€¥Ÿ?d à!Ç @  oH€¦Ÿ?d o4p @  oI€§Ÿ?d `Ilnv @  oJ€¨Ÿ?d  i™lˆ @  oK€©Ÿ?d à\¯m @  oL€ªŸ?d Œçáô @  oM€«Ÿ?d `JôXÕ @  oN€¬Ÿ?d  jZ+ @  oO€­Ÿ?d àùmÁÈ @  oP€®Ÿ?d d)a  @  oQ€¯Ÿ?d `_zYã @  oR€°Ÿ?d  [ @  oS€±Ÿ?d àJ¹Z‰ @  oT€²Ÿ?d šñÖa @  oU€³Ÿ?d `\âo@ @  oV€´Ÿ?d  |m¾ @  oW€µŸ?d àBÚȽ @  oX€¶Ÿ?d v%D  @  oY€·Ÿ?d `(&¦ @  oZ€¸Ÿ?d  ÓX @  o[€¹Ÿ?d à=åÌ @  o\€ºŸ?d í­‘$ @  o]€»Ÿ?d `+¾( @  o^€¼Ÿ?d   K*û @  o_€½Ÿ?d à‰!–¨ @  o`€¾Ÿ?d e6i @  oa€¿Ÿ?d `BÑ"N @  ob€ÀŸ?d  b$ ° @  oc€ÁŸ?d àW!$ @  od€Ÿ?d ‡Z­Ì @  oe€ß?d `AIí @  of€ÄŸ?d  a¼ @  og€ÅŸ?d à_q³ @  oh€ÆŸ?d F?@ @  oi€ÇŸ?d `< @  oj€ÈŸ?d  8Éç @  ok€ÉŸ?d à ÿs @  ol€ÊŸ?d Ý·•› @  om€ËŸ?d `¤,º @  on€ÌŸ?d  ;Q.D @  oo€ÍŸ?d à¨=µ§ @  op€Ο?d 5yf @  oq€ÏŸ?d `*-Œ @  or€П?d  .ß/r @  os€ÑŸ?d àé.æ @  ot€ÒŸ?d Ë¡¢ @  ou€ÓŸ?d ` ²/ @  ov€ÔŸ?d  -GÑuÐ  @  ow€ÕŸ?d àмÒ @  ox€ÖŸ?d 8 bb´ @  oy€ן?d x <‚8² @  oz€ØŸ?d ¸ w:L @  o{€ÙŸ?d ø )A;Ø @  o|€ÚŸ?d 8!ù ·0 @  o}€ÛŸ?d x!? @  o~€ÜŸ?d ¸!ï ï @  o€ÝŸ?d ø!ÐÔ† @  o€€ÞŸ?d 8"M&Þ @  o€ߟ?d x"ët'è @  o‚€àŸ?d ¸"Ë% @  oƒ€áŸ?d ø"þ·$‚ @  o„€âŸ?d 8#.ÿ¨j @  o…€ãŸ?d x#èìK @  o†€äŸ?d ¸#ȵ @  o‡€åŸ?d ø#öÔ¶¶ @  oˆ€æŸ?d 8$ïšE¹ @  o‰€çŸ?d x$±™¿ @  oŠ€èŸ?d ¸$‘lA @  o‹€éŸ?d ø$¤ZÕ @  oŒ€êŸ?d 8%t= @  o€ëŸ?d x%²) @  oŽ€ìŸ?d ¸%’ô+â @  o€íŸ?d ø%˜° @  o€îŸ?d 8&œÜÀ @  o‘€ïŸ?d x&§(* @  o’€ðŸ?d ¸&‡z*Ô @  o“€ñŸ?d ø&²L+@ @  o”€òŸ?d 8'b§¨ @  o•€óŸ?d x'¤‰ @  o–€ôŸ?d ¸'„âw @  o—€õŸ?d ø'º/¹t @  o˜€öŸ?d 8(ŽÐ5i @  o™€÷Ÿ?d x(ÐÓoo @  oš€øŸ?d ¸(ð&m‘ @  o›€ùŸ?d ø(Ål @  oœ€úŸ?d 8)Xàí @  o€ûŸ?d x)ÓKYÌ @  ož€üŸ?d ¸)ó¾[2 @  oŸ€ýŸ?d ø)qÔça @  o €þŸ?d 8*ìG  @  o¡€ÿŸ?d x*i0;$ @  o¢€ ?d ¸*IÅ9Ú @  o£€ ?d ø*|ó8N @  o¤€ ?d 8+¬»´¦ @  o¥€ ?d x+j¨ ‡ @  o¦€ ?d ¸+J]y @  o§€ ?d ø+tªz @  o¨€ ?d 8,mÞYu @  o©€ ?d x,3Ýs @  oª€ ?d ¸,( @  o«€  ?d ø,& @  o¬€  ?d 8-öVŒñ @  o­€  ?d x-0E5Ð @  o®€  ?d ¸-°7. @  o¯€  ?d ø-ƒÜ¬Í @  o°€ ?d 8.˜  @  o±€ ?d x.%Ë4æ @  o²€ ?d ¸.>6 @  o³€ ?d ø.07Œ @  o´€ ?d 8/à@»d @  oµ€ ?d x/&SE @  o¶€ ?d ¸/¦» @  o·€ ?d ø/8k¥¸ @  o¸€ ?d 80†µ  @  o¹€ ?d x0ضC  @  oº€ ?d ¸0øCAò @  o»€ ?d ø0Íu@f @  o¼€ ?d 81=ÌŽ @  o½€ ?d x1Û.u¯ @  o¾€ ?d ¸1ûÛwQ @  o¿€ ?d ø1×¶Í @  oÀ€ ?d 82JòmQ @  oÁ€ ?d x2ìlg @  o€  ?d ¸2Ìãn™ @  oÀ! ?d ø2ùÕo  @  oÄ€" ?d 83)ãå @  oÅ€# ?d x3ïŽZÄ @  oÆ€$ ?d ¸3Ï{X: @  oÇ€% ?d ø3ñ¶ý9 @  oÈ€& ?d 84èø6 @  oÉ€' ?d x4¶ûT0 @  oÊ€( ?d ¸4–VÎ @  oË€) ?d ø4£8WZ @  oÌ€* ?d 85spÛ² @  oÍ€+ ?d x5µcb“ @  o΀, ?d ¸5•–`m @  oÏ€- ?d ø5úûŽ @  oЀ. ?d 86›¾[O @  oÑ€/ ?d x6 íc¥ @  oÒ€0 ?d ¸6€a[ @  oÓ€1 ?d ø6µ.`Ï @  oÔ€2 ?d 87efì' @  oÕ€3 ?d x7£uU @  oÖ€4 ?d ¸7ƒ€Wø @  o×€5 ?d ø7½Mòû @  oØ€6 ?d 88‰²~æ @  oÙ€7 ?d x8×±$à @  oÚ€8 ?d ¸8÷D& @  oÛ€9 ?d ø8Âr'Š @  oÜ€: ?d 89:«b @  oÝ€; ?d x9Ô)C @  oÞ€< ?d ¸9ôܽ @  o߀= ?d ø9v¶¬î @  oà€> ?d 8:ëò / @  oá€? ?d x:½F @  oâ€@ ?d€ ¸:öïö @  p€A ?d ø:"˜¿¥ @  p€B ?d 8;òÐ3M @  p€C ?d x;ñŠq @  p€D ?d ¸;Ñs @  p€E ?d ø;!‰ @  p€F ?d 8<8Nz  @  p€G ?d x<¨ÿu @  p€H ?d ¸<ˆ }‹ @  p €I ?d ø<xu‡ò @  p €J ?d 8=¨=  @  p €K ?d x=«gIÖ @  p €L ?d ¸=‹’K( @  p €M ?d ø={í±Q @  p€N ?d 8>æ© @  p€O ?d x>¾éHà @  p€P ?d ¸>žJ @  p€Q ?d ø>nc°g @  p€R ?d 8?¾+< @  p€S ?d x?½q~C @  p€T ?duÐ@7 ¸?„|½ @  p€U ?d ø?mû†Ä @  p€V ?d P@®W<ø @  p€W ?d @œ‚,¤ @  p€X ?d Ð@;z @  p€Y ?d A¼µZ5 @  p€Z ?d PA>$Më @  p€[ ?d AŸ @  p€\ ?d ÐA‹ Ù @  p€] ?d Bò!@¿ @  p€^ ?d PBp°Wa @  p€_ ?d B%] @  p €` ?d ÐB„´ƒ @  p!€a ?d C&sÌ @  p"€b ?d PC¤ƒd @  p#€c ?d C½3þ @  p$€d ?d ÐC‡,$  @  p%€e ?d DìŒ:ˆ @  p&€f ?d PDn-V @  p'€g ?d D\È=  @  p(€h ?d ÐDÞY*Ô @  p)€i ?d E|ÿK› @  p*€j ?d PEþn\E @  p+€k ?d E_P © @  p,€l ?d ÐEÝÁw @  p-€m ?d F2kQ @  p.€n ?d PF°úFÏ @  p/€o ?d FJÞ Ÿ @  p0€p ?d ÐFÈOA @  p1€q ?d Gjé| @  p2€r ?d PGèxkÐ @  p3€s ?d GIF<< @  p4€t ?d ÐGË×+â @  p5€u ?d HÆJX @  p6€v ?d PHW]† @  p7€w ?d H=‚MÚ @  p8€x ?d ÐH¿Z @  p9€y ?d Iµ;K @  p:€z ?d PIŸ$,• @  p;€{ ?d I>{y @  p<€| ?d ÐI¼‹l§ @  p=€} ?d JS!!Á @  p>€~ ?d PJѰ6 @  p?€ ?d Jä´#2 @  p@€€ ?d ÐJf%4ì @  pA€ ?d KăU£ @  pB€‚ ?d PKFB} @  pC€ƒ ?d Kç,‘ @  pD€„ ?d ÐKe½O @  pE€… ?d Lç @  pF€† ?d PLŒŒ 9 @  pG€‡ ?d L¾Ye @  pH€ˆ ?d ÐL<È » @  pI€‰ ?d Mžnmô @  pJ€Š ?d PMÿz* @  pK€‹ ?d M½Á-Æ @  pL€Œ ?d ÐM?P: @  pM€ ?d NÐúw~ @  pN€Ž ?d PNRk`  @  pO€ ?d N¨O,ð @  pP€ ?d ÐN*Þ;. @  pQ€‘ ?d OˆxZa @  pR€’ ?d PO éM¿ @  pS€“ ?d O«×S @  pT€” ?d ÐO)F  @  pU€• ?d Påv\˜ @  pV€– ?d PPgçKF @  pW€— ?d PU2[ @  pX€˜ ?d ÐP×£LÄ @  pY€™ ?d Qu-‹ @  pZ€š ?d PQ÷”:U @  p[€› ?d QVªm¹ @  p\€œ ?d ÐQÔ;zg @  p]€ ?d R;‘7 @  p^€ž ?d PR¹ ß @  p_€Ÿ ?d RÏ•rã @  p`€  ?d ÐRMe= @  pa€¡ ?d Sï¢r @  pb€¢ ?d PSm3¬ @  pc€£ ?d SÌ D@ @  pd€¤ ?d ÐSNœSž @  pe€¥ ?d T%Û @  pŒ€Ì ?d Ð]p) @  p€Í ?d ^çÚdc @  pŽ€Π?d P^eKs½ @  p€Ï ?d ^Ÿo?í @  p€Р?d Ð^þ(3 @  p‘€Ñ ?d _¿XI| @  p’€Ò ?d P_=É^¢ @  p“€Ó ?d _œ÷ N @  puÐ`”€Ô ?d Ð_f @  p•€Õ ?d (`ÒpF¯ @  p–€Ö ?d h`PáQq @  p—€× ?d ¨`b4A- @  p˜€Ø ?d è`à¥Vó @  p™€Ù ?d (aB7¼ @  pš€Ú ?d haÀ’ b @  p›€Û ?d ¨aa¬wŽ @  pœ€Ü ?d èaã=`P @  p€Ý ?d (b —-6 @  pž€Þ ?d hbŽ:è @  pŸ€ß ?d ¨bø“hÔ @  p €à ?d èbz  @  p¡€á ?d (cؤE @  p¢€â ?d hcZ5 › @  p£€ã ?d ¨cû ^w @  p¤€ä ?d ècyšI© @  p¥€å ?d (d:W @  p¦€æ ?d hd«@ß @  p§€ç ?d ¨d¢~Pƒ @  p¨€è ?d èd ïG] @  p©€é ?d (e‚I& @  pª€ê ?d heØ1Ì @  p«€ë ?d ¨e¡æf  @  p¬€ì ?d èe#wqþ @  p­€í ?d (fÌÝ<˜ @  p®€î ?d hfNL+F @  p¯€ï ?d ¨f´hg @  p°€ð ?d èf6ùpÈ @  p±€ñ ?d (g”_‡ @  p²€ò ?d hgÎY @  p³€ó ?d ¨g·ðQµ @  p´€ô ?d èg5aFk @  pµ€õ ?d (hsp'Ñ @  p¶€ö ?d hhñá0 @  p·€÷ ?d ¨hÃ4 S @  p¸€ø ?d èhA¥7 @  p¹€ù ?d (iãV @  pº€ú ?d hia’A @  p»€û ?d ¨iÀ¬ð @  p¼€ü ?d èiB=. @  p½€ý ?d (j­—LH @  p¾€þ ?d hj/[– @  p¿€ÿ ?d ¨jee· @  pÀ€¡?d èjçô i @  pÁ€¡?d (kERm& @  p€¡?d hkÇÃzø @  pÀ¡?d ¨kfý- @  pÄ€¡?d èkäl:Ê @  pÅ€¡?d (lÌ$b @  pÆ€¡?d hl ]3¼ @  pÇ€¡?d ¨l?ˆ#à @  pÈ€¡?d èl½4> @  pÉ€ ¡?d (m¿Uq @  pÊ€ ¡?d hm.B¯ @  pË€ ¡?d ¨m<C @  pÌ€ ¡?d èm¾ @  pÍ€ ¡?d (nQ+Oû @  p΀¡?d hnÓºX% @  pÏ€¡?d ¨n)žu @  pЀ¡?d èn«« @  pÑ€¡?d (o ©bä @  pÒ€¡?d ho‹8u: @  pÓ€¡?d ¨o*"Ö @  pÔ€¡?d èo¨—5 @  pÕ€¡?d (pd§d @  pÖ€¡?d hpæ6sà @  p×€¡?d ¨pÔãcŸ @  pØ€¡?d èpVrtA @  pÙ€¡?d (qôÔ @  pÚ€¡?d hqvEÐ @  pÛ€¡?d ¨q×{U< @  pÜ€¡?d èqUêBâ @  pÝ€¡?d (rº@„ @  pÞ€¡?d hr8ÑZ @  p߀¡?d ¨rNDJf @  pà€ ¡?d èrÌÕ]¸ @  pá€!¡?d (sns<÷ @  pâ€"¡?d€ hs˜!7 @  q€#¡?d ¨sØ^(J @  q€$¡?d èsZÏ?” @  q€%¡?d (tô&ÚÑ @  q€&¡?d htv·Í @  q€'¡?d ¨tŠÐ‚) @  q€(¡?d ètA•÷ @  q€)¡?d (udU«Â @  q€*¡?d huæÄ¼ @  q €+¡?d ¨u‚³ @  q €,¡?d èu"à @  q €-¡?d (v*Á±H @  q €.¡?d hv¨P¦– @  q €/¡?d ¨v1g‹\ @  q€0¡?d èv³öœ‚ @  q€1¡?d (wrCœW @  q€2¡?d hwðÒ‹‰ @  q€3¡?d ¨w”¥'ˆ @  q€4¡?d èw40V @  q€5¡?d (x•lª @  q€6¡?d hxý½ß @  q€7¡?d ¨xëšòù @  q€8¡?d èxi å' @  q€9¡?d (yÛ @  q€:¡?d hy‡ŽÌÌ @  q€;¡?d ¨yãù`Í @  q€<¡?d èyahw @  q€=¡?d (zK‹Á˜ @  q€>¡?d hzÉÖF @  q€?¡?d ¨z=Ê×A @  q€@¡?d èz¿[ÀŸ @  q€A¡?d ({oèçú @  q €B¡?d h{íyð$ @  q!€C¡?d ¨{‰\% @  q"€D¡?d è{ ŸKû @  q#€E¡?d (|¥v®¾ @  q$€F¡?d h|'ç¹` @  q%€G¡?d ¨|Û€öF @  q&€H¡?d è|Yᘠ@  q'€I¡?d (}5ß­ @  q(€J¡?d h}·”Ès @  q)€K¡?d ¨}Óãdr @  q*€L¡?d è}Qrs¬ @  q+€M¡?d (~{‘Å' @  q,€N¡?d h~ùÒù @  q-€O¡?d ¨~`7ÿ3 @  q.€P¡?d è~â¦èí @  q/€Q¡?d (#è8 @  q0€R¡?d h¡‚ÿæ @  q1€S¡?d ¨uЀ'ÅõSç @  q2€T¡?d èGdD9 @  q3€U¡?d @€ž}° @  q4€V¡?d €€¾ˆ²ù @  q5€W¡?d À€à‹èÿ @  q6€X¡?d 0Ãd @  q7€Y¡?d @Á @  q8€Z¡?d €.ûÃê @  q9€[¡?d ÀèèzË @  q:€\¡?d ‚u¬Ú  @  q;€]¡?d @‚@šÛž @  q<€^¡?d €‚`oÙ` @  q=€_¡?d À‚Æ‹ØV @  q>€`¡?d ƒÃT¾ @  q?€a¡?d @ƒ:®î @  q@€b¡?d €ƒ[ì @  qA€c¡?d ÀƒÜHU  @  qB€d¡?d „Ŧ¯ @  qC€e¡?d @„ð0§; @  qD€f¡?d €„ÐťŠ@  qE€g¡?d À„ŽÆÿà @  qF€h¡?d …^Žs+ @  qG€i¡?d @…`CÖ( @  qH€j¡?d €…@¶ÔÖ @  qI€k¡?d À…†¥m÷ @  qJ€l¡?d †áÍ6 @  qK€m¡?d @†.×Ì¢ @  qL€n¡?d €†"Î\ @  qM€o¡?d À†5qö¶ @  qN€p¡?d ‡å9z^ @  qO€q¡?d @‡vUá½ @  qP€r¡?d €‡V ãC @  qQ€s¡?d À‡³Zb @  qR€t¡?d ˆ¤LÖ @  qS€u¡?d @ˆ‘z×ë @  qT€v¡?d €ˆ±Õ @  qU€w¡?d ÀˆïŒ @  qV€x¡?d ‰?Äû @  qW€y¡?d @‰ ¦ø @  qX€z¡?d €‰!ü¤ @  qY€{¡?d À‰çï' @  qZ€|¡?d Šz«½æ @  q[€}¡?d @ŠO¼r @  q\€~¡?d €Šoh¾Œ @  q]€¡?d ÀŠ$þ9 @  q^€€¡?d ‹ôRrÑ @  q_€¡?d @‹v8΂ @  q`€‚¡?d €‹VÍÌ| @  qa€ƒ¡?d À‹Þu] @  qb€„¡?d Œ‰†R @  qc€…¡?d @Œ¼¦‡Æ @  qd€†¡?d €ŒœS…8 @  qe€‡¡?d ÀŒÂPß> @  qf€ˆ¡?d SÖ @  qg€‰¡?d @,ÕöÕ @  qh€Š¡?d € ô+ @  qi€‹¡?d ÀÊ3M  @  qj€Œ¡?d ŽWwíË @  qk€¡?d @ŽbAì_ @  ql€Ž¡?d €ŽB´î¡ @  qm€¡?d ÀŽyçÖK @  qn€¡?d ©¯Z£ @  qo€‘¡?d @:ÃÁ@ @  qp€’¡?d €6þ @  qq€“¡?d ÀÜ%zŸ @  qr€”¡?d bûÆ- @  qs€•¡?d @WÍǹ @  qt€–¡?d €w8ÅG @  qu€—¡?d À);ŸA @  qv€˜¡?d ‘ùs© @  qw€™¡?d @‘Ǿ¶ª @  qx€š¡?d €‘çK´T @  qy€›¡?d À‘!X u @  qz€œ¡?d ’¼­´ @  q{€¡?d @’‰*¬  @  q|€ž¡?d €’©ß®Þ @  q}€Ÿ¡?d À’;¯è @  q~€ ¡?d “ßs# @  q€¡¡?d @“H©ð @  q€€¢¡?d €“0½« @  q€£¡?d À“ö®/ @  q‚€¤¡?d ”ïàá  @  qƒ€¥¡?d @”ÚÖà´ @  q„€¦¡?d €”ú#âJ @  q…€§¡?d À”¤ ¸L @  q†€¨¡?d •th4¤ @  q‡€©¡?d @•J¥‘§ @  qˆ€ª¡?d €•jP“Y @  q‰€«¡?d À•¬C*x @  qŠ€¬¡?d –1й @  q‹€­¡?d @–1‹- @  qŒ€®¡?d €–$ĉÓ @  q€¯¡?d À–—±9 @  qŽ€°¡?d —Ïß=Ñ @  q€±¡?d @—\³¦2 @  q€²¡?d €—|F¤Ì @  q‘€³¡?d À—ºUí @  q’€´¡?d ˜Žª‘ð @  q“€µ¡?d @˜»œd @  q”€¶¡?d €˜›i’š @  q•€·¡?d À˜ÅjÈœ @  q–€¸¡?d ™"Dt @  q—€¹¡?d @™+ïáw @  q˜€º¡?d €™ ㉠@  q™€»¡?d À™Í Z¨ @  qš€¼¡?d šPMúi @  q›€½¡?d @še{ûý @  qœ€¾¡?d €šEŽù @  q€¿¡?d Àš:í$ @  qž€À¡?d ›ÃraÌ @  qŸ€Á¡?d @›AÝŸ @  q €¡?d €›aíßa @  q¡€á?d À›§þf@ @  q¢€Ä¡?d œ¾°•O @  q£€Å¡?d @œ‹†”Û @  q¤€Æ¡?d €œ«s–% @  q¥€Ç¡?d ÀœõpÌ# @  q¦€È¡?d %8@Ë @  q§€É¡?d @õåÈ @  q¨€Ê¡?d €;ç6 @  q©€Ë¡?d Àý^ @  qª€Ì¡?d ž`WþÖ @  q«€Í¡?d @žUaÿB @  q¬€Ρ?d €žu”ý¼ @  q­€Ï¡?d ÀžNÇÅV @  q®€С?d ŸžI¾ @  q¯€Ñ¡?d @Ÿ ãÒ] @  q°€Ò¡?d €Ÿ-У @  q±€Ó¡uР?d ÀŸëi‚ @  q²€Ô¡?d  š·ä @  q³€Õ¡?d X ¯8¶p @  q´€Ö¡?d ˜ Í´Ž @  qµ€ס?d Ø ÑÎîˆ @  q¶€Ø¡?d ¡†b` @  q·€Ù¡?d X¡?KÇc @  q¸€Ú¡?d ˜¡¾Å @  q¹€Û¡?d ء٭|¼ @  qº€Ü¡?d ¢DéÜ} @  q»€Ý¡?d X¢qßÝé @  q¼€Þ¡?d ˜¢Q*ß @  q½€ß¡?d Ø¢÷ÎÞ! @  q¾€à¡?d £'†RÉ @  q¿€á¡?d X£ ëè @  qÀ€â¡?d ˜£+êö @  qÁ€ã¡?d Ø£í S× @  q€ä¡?d ¤ôC Ø @  qÀå¡?d X¤Áu¡L @  qÄ€æ¡?d ˜¤ဣ² @  qÅ€ç¡?d ؤ¿ƒù´ @  qÆ€è¡?d ¥oËu\ @  qÇ€é¡?d X¥QÐ_ @  qÈ€ê¡?d ˜¥qóÒ¡ @  qÉ€ë¡?d Ø¥·àk€ @  qÊ€ì¡?d ¦*¤ËA @  qË€í¡?d X¦’ÊÕ @  qÌ€î¡?d ˜¦?gÈ+ @  qÍ€ï¡?d ئ4ðÁ @  q΀ð¡?d §Ô||) @  qÏ€ñ¡?d X§GçÊ @  qЀò¡?d ˜§gåå4 @  qÑ€ó¡?d ا¡ö\ @  qÒ€ô¡?d ¨• Ð @  qÓ€õ¡?d X¨ ?Ñœ @  qÔ€ö¡?d ˜¨€ÊÓb @  qÕ€÷¡?d بÞɉd @  qÖ€ø¡?d ©Œ @  q×€ù¡?d X©0L  @  qØ€ú¡?d ˜©¹¢q @  qÙ€û¡?d ة֪P @  qÚ€ü¡?d ªK @  qÛ€ý¡?d Xª~غ @  qÜ€þ¡?d ˜ª^-¸û @  qÝ€ÿ¡?d تؘg @  qÞ€¢?d «R @  q߀¢?d X«Š8¨Ü @  qà€¢?d ˜«ªÍª" @  qဢ?d Ø«lÞ @  q•?d€ ¬´×  @  r€¢?d X¬` ^± @  r€¢?d ˜¬@U\O @  r€¢?d جÛý¤ @  r€¢?d ­ WqL @  r€ ¢?d X­û(‹5 @  r€ ¢?d ˜­Û݉Ë @  r€ ¢?d Ø­Ó|o @  r€ ¢?d ®N8ÏQ @  r € ¢?d X®¾G5( @  r €¢?d ˜®ž²7Ö @  r €¢?d Ø®`¨ôÑ @  r €¢?d ¯°àx9 @  r €¢?d X¯@Ÿ‚@ @  r€¢?d ˜¯`j€¾ @  r€¢?d دÅjX @  r€¢?d °{´ä· @  r€¢?d X°‹ËÎ @  r€¢?d ˜°«>0 @  r€¢?d ذ0t½Û @  r€¢?d ±à<13 @  r€¢?d X±CËJ @  r€¢?d ˜±0¶É´ @  r€¢?d ر8/ï @  r€¢?d ²¥S. @  r€¢?d X²U,uW @  r€¢?d ˜²uÙw© @  r€¢?d زtr @  r€ ¢?d ³Æ<š @  r€!¢?d X³6Cûã @  r€"¢?d ˜³¶ù @  r€#¢?d س¢° @  r €$¢?d ´»þõ @  r!€%¢?d X´K` @  r"€&¢?d ˜´kt ž @  r#€'¢?d Ø´ð>¬u @  r$€(¢?d µ v  @  r%€)¢?d XµÐ Úä @  r&€*¢?d ˜µðüØ @  r'€+¢?d صø]>A @  r(€,¢?d ¶ež€ @  r)€-¢?d X¶•fdù @  r*€.¢?d ˜¶µ“f @  r+€/¢?d ضK‰¥ @  r,€0¢?d ·›Á)è @  r-€1¢?d X·k¾Ó‘ @  r.€2¢?d ˜·KKÑo @  r/€3¢?d Ø·îK Ô @  r0€4¢?d ¸Ú´…É @  r1€5¢?d X¸*˰ @  r2€6¢?d ˜¸ >}N @  r3€7¢?d ظ‘tÜ¥ @  r4€8¢?d ¹A¢?d ˜ºÔÙ× @  r;€?¢?d غG$ù @  r<€@¢?d »—luõ @  r=€A¢?d X»gŒ @  r>€B¢?d ˜»Gær @  r?€C¢?d Ø»]çtë @  r@€D¢?d ¼D©‡ä @  rA€E¢?d X¼´Ö} @  rB€F¢?d ˜¼”#c @  rC€G¢?d ؼiÞˆ @  rD€H¢?d ½ß!R` @  rE€I¢?d X½/^¨ @  rF€J¢?d ˜½«ªç @  rG€K¢?d ؽ L¼ @  rH€L¢?d ¾šNì} @  rI€M¢?d X¾j1 @  rJ€N¢?d ˜¾JÄú @  rK€O¢?d ؾ´Þ×ý @  rL€P¢?d ¿d–[ @  rM€Q¢?d X¿”é¡l @  rN€R¢?d ˜¿´£’ @uÐÀ  rO€S¢?d Ø¿{) @  rP€T¢?d 0Àuì*{ @  rQ€U¢?d pÀ…“Ð @  rR€V¢?d °À¥fÒü @  rS€W¢?d ðÀ>,s @  rT€X¢?d 0Áîdÿÿ @  rU€Y¢?d pÁ† @  rV€Z¢?d °Á>îx @  rW€[¢?d ðÁ6Oá# @  rX€\¢?d 0« Aâ @  rY€]¢?d pÂ[t»› @  rZ€^¢?d °Â{¹e @  r[€_¢?d ðÂ,C¾ @  r\€`¢?d 0ÃÈdÏV @  r]€a¢?d pÃ85/ @  r^€b¢?d °Ãî7Ñ @  r_€c¢?d ðìèÈÚ @  r`€d¢?d 0ĵ¦;Õ @  ra€e¢?d pÄEÙÁ¬ @  rb€f¢?d °Äe,ÃR @  rc€g¢?d ðÄþfb¹ @  rd€h¢?d 0Å..îQ @  re€i¢?d pÅÞQ( @  rf€j¢?d °Åþ¤Ö @  rg€k¢?d ðÅöð @  rh€l¢?d 0ÆkAPL @  ri€m¢?d pÆ›>ª5 @  rj€n¢?d °Æ»Ë¨Ë @  rk€o¢?d ðÆEÑkÌ @  rl€p¢?d 0Ç•™ç$ @  rm€q¢?d pÇeæ] @  rn€r¢?d °ÇE£ @  ro€s¢?d ðÇàÇ @  rp€t¢?d 0ÈÔìK @  rq€u¢?d pÈ$“±| @  rr€v¢?d °Èf³‚ @  rs€w¢?d ðÈŸ,i @  rt€x¢?d 0ÉOdž @  ru€y¢?d pÉ¿dø @  rv€z¢?d °ÉŸîf @  rw€{¢?d ðÉ—O€] @  rx€|¢?d 0Ê œ @  ry€}¢?d pÊútÚå @  rz€~¢?d °ÊÚØ @  r{€¢?d ðÊTºcC @  r|€€¢?d 0Ë„òï« @  r}€¢?d pËtÒ @  r~€‚¢?d °ËTx, @  r€ƒ¢?d ðË­/Þ„ @  r€€„¢?d 0Ì´a-‹ @  r€…¢?d pÌD×ò @  r‚€†¢?d °ÌdëÕ  @  rƒ€‡¢?d ðÌÿ¡tç @  r„€ˆ¢?d 0Í/éø @  r…€‰¢?d pÍß–v @  r†€Š¢?d °Íÿcˆ @  r‡€‹¢?d ðÍ÷ÂæÓ @  rˆ€Œ¢?d 0Îj†F @  r‰€¢?d pΚù¼k @  rЀޢ?d °Îº ¾• @  r‹€¢?d ðÎD}’ @  rŒ€¢?d 0Ï”^ñz @  r€‘¢?d pÏd!  @  rŽ€’¢?d °ÏDÔ ý @  r€“¢?d ðÏáÔÑF @  r€”¢?d 0Ð_ mô @  r‘€•¢?d pЯu— @  r’€–¢?d °Ð€•s @  r“€—¢?d ðÐÊ4˜ @  r”€˜¢?d 0ÑÄ‚¸p @  r•€™¢?d pÑ4ýB  @  r–€š¢?d °Ñ@÷ @  r—€›¢?d ðÑ©¦¬ @  r˜€œ¢?d 0Òím @  r™€¢?d pÒq’ü @  rš€ž¢?d °ÒQgþê @  r›€Ÿ¢?d ðÒ2Ê1 @  rœ€ ¢?d 0Ó₈Ù @  r€¡¢?d pÓýr  @  rž€¢¢?d °Ó2p^ @  rŸ€£¢?d ðÓ†U @  r €¤¢?d 0ÔŸ@|Z @  r¡€¥¢?d pÔo?†# @  r¢€¦¢?d °ÔOÊ„Ý @  r£€§¢?d ðÔÔ€%6 @  r¤€¨¢?d 0ÕÈ©Þ @  r¥€©¢?d pÕô·S§ @  r¦€ª¢?d °ÕÔBQY @  r§€«¢?d ðÕÜã· @  r¨€¬¢?d 0ÖA§Ã @  r©€­¢?d pÖ±Øíº @  rª€®¢?d °Ö‘-ïD @  r«€¯¢?d ðÖo7,C @  r¬€°¢?d 0׿ « @  r­€±¢?d p×OZÒ @  r®€²¢?d °×oõX, @  r¯€³¢?d ð×Êõ€— @  r°€´¢?d 0Øþ Š @  r±€µ¢?d pØuöó @  r²€¶¢?d °Ø.€ô  @  r³€·¢?d ðصÊUæ @  r´€¸¢?d 0Ùe‚Ù @  rµ€¹¢?d pÙ•ý#w @  r¶€º¢?d °Ùµ!‰ @  r·€»¢?d ðÙ½©ÇÒ @  r¸€¼¢?d 0Ú íg @  r¹€½¢?d pÚÐ’j @  rº€¾¢?d °ÚðgŸ” @  r»€¿¢?d ðÚcšp^ @  r¼€À¢?d 0Û³Òü¶ @  r½€Á¢?d pÛC­Ï @  r¾€¢?d °ÛcX1 @  r¿€â?d ðÛyYý¨ @  rÀ€Ä¢?d 0Ü`§ @  rÁ€Å¢?d pÜhôÞ @  r€Æ¢?d °Ü°ö  @  rÀÇ¢?d ðÜ+×WË @  rĀȢ?d 0ÝûŸÛ# @  rŀɢ?d pÝ à!Z @  rƀʢ?d °Ý+#¤ @  rǀˢ?d ðÝ#´Åÿ @  rȀ̢?d 0Þ¾ðe> @  rɀ͢?d pÞNŸG @  rÊ€΢?d °Þnz¹ @  rˀϢ?d ðÞ`^¾ @  rÌ€Т?d 0ß@(ÒV @  r̀Ѣ?d pß°W(/ @  r΀Ò¢?d uÐà/°ß¢*Ñ @  rÏ€Ó¢?d ðß5¢òj @  rЀÔ¢?d Hà,¬œ @  rÑ€Õ¢?d ˆà~CÅ @  rÒ€Ö¢?d ÈàüŒT @  rÓ€×¢?d á5nÆ @  rԀآ?d Há·Žy @  rÕ€Ù¢?d ˆáå•–A @  rÖ€Ú¢?d ÈágŸ @  r×€Û¢?d âppÐÛ @  r؀ܢ?d HâòáÇ @  rـݢ?d ˆâ ú(\ @  rÚ€Þ¢?d Èâ"k?‚ @  rÛ€ߢ?d ã^o @  rÜ€à¢?d H㑎I± @  rÝ€á¢?d ˆãÕ¦è @  rÞ€â¢?d ÈãA±6 @  r߀ã¢?d änݪì @  rà€ä¢?d HäìL½2 @  rá€å¢?d ˆä¾WRk @  râ€æ¢?d€ ÈäHY @  s€ç¢?d å`×+ç @  s€è¢?d HåâF<9 @  s€é¢?d ˆåu( @  s€ê¢?d Èå÷…?S @  s€ë¢?d æ.C1m @  s€ì¢?d Hæ¬Ò&³ @  s€í¢?d ˆæ0{– @  s€î¢?d Èæ²êN @  s €ï¢?d çÛ`"’ @  s €ð¢?d HçYñ5L @  s €ñ¢?d ˆçΣ!ø @  s €ò¢?d ÈçL26& @  s €ó¢?d èk¥ @  s€£?d ìò6U @  s€£?d Hìýc!‹ @  s€£?d ˆìÝmˆø @  s €£?d Èì_üŸ& @  s!€£?d íS&^ @  s"€£?d HíÑ·IÈ @  s#€ £?d ˆíFå]| @  s$€ £?d ÈíÄtJ¢ @  s%€ £?d î²Dœ @  s&€ £?d HîŸ#SB @  s'€ £?d ˆîŠãa @  s(€£?d Èîô¿ @  s)€£?d ïè‘Wc @  s*€£?d Hïj@½ @  s+€£?d ˆïýRT  @  s,€£?d ÈïÃC× @  s-€£?d ð…ŸQš @  s.€£?d HðFD @  s/€£?d ˆð6ȇ @  s0€£?d Èð´—ßY @  s1€£?d ñ¸Mi @  s2€£?d Hñ:Ü · @  s3€£?d ˆñ­Ž @  s4€£?d Èñ/ Ý @  s5€£?d òöÙã @  s6€£?d HòtH= @  s7€£?d ˆòèᣠ@  s8€£?d Èòjp´À @  s9€£?d óžM.À @  s:€ £?d HóÜ9 @  s;€!£?d ˆó‹Ž-ª @  s<€"£?d Èó :t @  s=€#£?d ôTÓg„ @  s>€$£?d HôÖBpZ @  s?€%£?d ˆôXKß» @  s@€&£?d ÈôÚÚÈe @  sA€'£?d õÖ U @  sB€(£?d HõT‘‹ @  sC€)£?d ˆõÃà ? @  sD€*£?d ÈõARá @  sE€+£?d ö˜”ß @  sF€,£?d Hö @  sG€-£?d ˆö†¬´" @  sH€.£?d Èö=£ü @  sI€/£?d ÷m·  @  sJ€0£?d H÷ï&þ @  sK€1£?d ˆ÷xtJ @  sL€2£?d È÷úå” @  sM€3£?d øŠ˜6v @  sN€4£?d Hø !¨ @  sO€5£?d ˆø9¯k @  sP€6£?d Èø»¸µ @  sQ€7£?d ù·Jy… @  sR€8£?d Hù5Ûn[ @  sS€9£?d ˆù¢‰zï @  sT€:£?d Èù m1 @  sU€;£?d úùÞc @  sV€<£?d Hú{OtÑ @  sW€=£?d ˆúçæÄò @  sX€>£?d ÈúewÓ, @  sY€?£?d ûa\= @  sZ€@£?d Hûã‹Kã @  s[€A£?d ˆûtÙ_W @  s\€B£?d ÈûöHH‰ @  s]€C£?d ü«„y @  s^€D£?d Hü)§ @  s_€E£?d ˆü «Ô @  s`€F£?d Èü‹Š¼  @  sa€G£?d ý‡P}: @  sb€H£?d HýÁjä @  sc€I£?d ˆý’“~P @  sd€J£?d ÈýiŽ @  se€K£?d þÉÄg° @  sf€L£?d HþKUpn @  sg€M£?d ˆþ×üÀM @  sh€N£?d ÈþUmד @  si€O£?d ÿ<çtO @  sj€P£?d Hÿ¾vc‘ @  sk€Q£?d ˆÿ)$w% @  sl€uÐR£?d Èÿ«µ`û @  sm€S£?d VãÆ× @  sn€T£?d `ÔrÑ  @  so€U£?d  åz_Ê @  sp€V£?d àgëH @  sq€W£?d k1‰$ @  sr€X£?d `é žú @  ss€Y£?d  ~òŠN @  st€Z£?d àüc @  su€[£?d %¥“® @  sv€\£?d `§4„p @  sw€]£?d  ;4S @  sx€^£?d ๠# @  sy€_£?d M1¹ @  sz€`£?d `Ï ®S @  s{€a£?d  Xòºç @  s|€b£?d àÚc­9 @  s}€c£?d ‡¯ðÉ @  s~€d£?d `>ç @  s€e£?d  haxÇ @  s€€f£?d àêðo @  s€g£?d æ*®) @  s‚€h£?d `d»¹÷ @  sƒ€i£?d  óé­C @  s„€j£?d àqxº @  s…€k£?d ¨¾´£ @  s†€l£?d `*/£} @  s‡€m£?d  ¶†^ @  sˆ€n£?d à4€ @  s‰€o£?d ]§\ @  sŠ€p£?d `ß °‚ @  s‹€q£?d  H^¤6 @  sŒ€r£?d àÊϳè @  s€s£?d º²‘  @  sŽ€t£?d `8#†Ô @  s€u£?d   + @  s€v£?d à‹ºÉ @  s‘€w£?d ‡`Þù @  s’€x£?d ` ñÉ' @  s“€y£?d   ’£Ý“ @  s”€z£?d à 2ÊM @  s•€{£?d ÉôÄs @  s–€|£?d ` KeÓ­ @  s—€}£?d   ×ÌcŽ @  s˜€~£?d à U]tP @  s™€£?d Lö¯Ó @  sš€€£?d ` Îg¸  @  s›€£?d   Y5¬¹ @  sœ€‚£?d à Û¤»g @  s€ƒ£?d †hæ— @  sž€„£?d ` ùñI @  sŸ€…£?d   $÷X: @  s €†£?d à ¦fOä @  s¡€‡£?d ª¼ŽÔ @  s¢€ˆ£?d ` (-™  @  s£€‰£?d   ¿¾ @  s¤€Š£?d à =îš` @  s¥€‹£?d ä(”^ @  s¦€Œ£?d `f¹ƒ€ @  s§€£?d  ú3£ @  s¨€Ž£?d àx$} @  s©€£?d  ‡¡ @  sª€£?d `“š @  s«€‘£?d  È„Ë @  s¬€’£?d à†Y“ @  s­€“£?d |X @  s®€”£?d `þ”–† @  s¯€•£?d  ÏœE @  s°€–£?d àM › @  s±€—£?d A×Ϋ @  s²€˜£?d `ÃFÙu @  s³€™£?d  TÍÁ @  s´€š£?d àÖ…Ú @  sµ€›£?d CÔ! @  s¶€œ£?d `ÒÃÿ @  s·€£?d  {sÜ @  s¸€ž£?d à“êd @  s¹€Ÿ£?d g×þ @  sº€ £?d `åFéÜ @  s»€¡£?d  rýh @  s¼€¢£?d àð…ê¶ @  s½€££?d ­I·F @  s¾€¤£?d `/Ø ˜ @  s¿€¥£?d  ¡Ñy @  sÀ€¦£?d à#@§ @  sÁ€§£?d /šÙ— @  s€¨£?d `­ ÎI @  sÀ©£?d  :YÚý @  sÄ€ª£?d à¸ÈÍ# @  sÅ€«£?d aà @  sÆ€¬£?d `ãŸÔà @  sÇ€­£?d  6dà @  sÈ€®£?d àý§s> @  sÉ€¯£?d ”-Ðâ @  sÊ€°£?d `¼Ç< @  sË€±£?d  îÓˆ @  sÌ€²£?d àÄV @  sÍ€³£?d sæ´ @  s΀´£?d `ñ“ñj @  sÏ€µ£?d  À›© @  sЀ¶£?d àB hw @  sÑ€·£?d NЩG @  sÒ€¸£?d `ÌA¾™ @  sÓ€¹£?d  [ª- @  sÔ€º£?d àÙ‚½ó @  sÕ€»£?d D³Í @  sÖ€¼£?d `‚Õ¤ @  s×€½£?d  |0 @  sØ€¾£?d àœíî @  sÙ€¿£?d ˜€Œÿ @  sÚ€À£?d `›! @  sÛ€Á£?d  C• @  sÜ€£?d àÒ˜K @  sÝ€ã?d RÅ» @  sހģ?d `ÐÒe @  s߀Å£?d  ð{ @  sà€Æ£?d àrlÈ @  sá€Ç£?d ~Ê­ø @  sâ€È£?d€ `z Ÿ @  t€É£?d   N @  t€Ê£?d àŽYÜ @  t€Ë£?d ’¬ @  t€Ì£?d `‘»Ñ @  t€Í£?d  BŠTˆ @  t€Σ?d àÀCV @  t€Ï£?d g#¿ð @  t€У?d `岨. @  t €Ñ£?d  ·©GwuÐ  @  t €Ò£?d à58P© @  t €Ó£?d 8 ÅøÛÝ @  t €Ô£?d x GiÌ @  t €Õ£?d ¸ r#Z @  t€Ö£?d ø —ã4„ @  t€×£?d 8!ø*”. @  t€Ø£?d x!z»ƒð @  t€Ù£?d ¸!( l© @  t€Ú£?d ø!ª1{w @  t€Û£?d 8"¶¾Ž¤ @  t€Ü£?d x"4/™z @  t€Ý£?d ¸"f4v# @  t€Þ£?d ø"ä¥aý @  t€ߣ?d 8#Þ*¤‡ @  t€à£?d x#\»³Y @  t€á£?d ¸# \ @  t€â£?d ø#Œ1KÞ @  t€ã£?d 8$´íà @  t€ä£?d x$–%ú @  t€å£?d ¸$Ä>D @  t€æ£?d ø$F¯š @  t€ç£?d 8%8`…€ @  t €è£?d x%ºñ’^ @  t!€é£?d ¸%èê} @  t"€ê£?d ø%j{jÙ @  t#€ë£?d 8&vôŸ  @  t$€ì£?d x&ôeˆÔ @  t%€í£?d ¸&¦~g @  t&€î£?d ø&$ïpS @  t'€ï£?d 8'ƒ×Œõ @  t(€ð£?d x'F›+ @  t)€ñ£?d ¸'S]tr @  t*€ò£?d ø'ÑÌc¬ @  t+€ó£?d 8(døº£ @  t,€ô£?d x(æi­} @  t-€õ£?d ¸(´rB$ @  t.€ö£?d ø(6ãUú @  t/€÷£?d 8)Y*õP @  t0€ø£?d x)ۻ⎠@  t1€ù£?d ¸)‰  × @  t2€ú£?d ø) 1  @  t3€û£?d 8*¾ïÚ @  t4€ü£?d x*•/ø @  t5€ý£?d ¸*Ç4] @  t6€þ£?d ø*E¥ƒ @  t7€ÿ£?d 8+ÑÒîà @  t8€¤?d x+SCù> @  t9€¤?d ¸+Xg @  t:€¤?d ø+ƒÉ¹ @  t;€¤?d 8,L§¤ @  t<€¤?d x,™Ý°z @  t=€¤?d ¸,ËÆ_# @  t>€¤?d ø,IWHý @  t?€¤?d 8-™ŸÉu @  t@€¤?d x-Þ« @  tA€ ¤?d ¸-I1ò @  tB€ ¤?d ø-Ë„&, @  tC€ ¤?d 8.× Óÿ @  tD€ ¤?d x.UšÄ! @  tE€ ¤?d ¸.+x @  tF€¤?d ø.…<¦ @  tG€¤?d 8/"(À @  tH€¤?d x/ ¹×Þ @  tI€¤?d ¸/ò¢8‡ @  tJ€¤?d ø/p3/Y @  tK€¤?d 80O&Æù @  tL€¤?d x0Í·Ñ' @  tM€¤?d ¸0Ÿ¬>~ @  tN€¤?d ø0=)  @  tO€¤?d 81rô‰  @  tP€¤?d x1ðežÔ @  tQ€¤?d ¸1¢~q @  tR€¤?d ø1 ïfS @  tS€¤?d 82<`“€ @  tT€¤?d x2¾ñ„^ @  tU€¤?d ¸2ìêk @  tV€¤?d ø2n{|Ù @  tW€¤?d 83Tô¹£ @  tX€ ¤?d x3Öe®} @  tY€!¤?d ¸3„~A$ @  tZ€"¤?d ø3ïVú @  t[€#¤?d 84žjðç @  t\€$¤?d x4ûç9 @  t]€%¤?d ¸4Nà` @  t^€&¤?d ø4Ìq¾ @  t_€'¤?d 85²¾˜¤ @  t`€(¤?d x50/z @  ta€)¤?d ¸5b4`# @  tb€*¤?d ø5à¥wý @  tc€+¤?d 86ü*‚. @  td€,¤?d x6~»•ð @  te€-¤?d ¸6, z© @  tf€.¤?d ø6®1mw @  tg€/¤?d 87 ‘Ñ @  th€0¤?d x7‹˜† @  ti€1¤?d ¸7ÙƒiV @  tj€2¤?d ø7[~ˆ @  tk€3¤?d 88î&§‡ @  tl€4¤?d x8l·°Y @  tm€5¤?d ¸8>¬_ @  tn€6¤?d ø8¼=HÞ @  to€7¤?d 89Óôèt @  tp€8¤?d x9Qeÿª @  tq€9¤?d ¸9~ó @  tr€:¤?d ø9ï- @  ts€;¤?d 8:`òþ @  tt€<¤?d x:ñå  @  tu€=¤?d ¸:Mê y @  tv€>¤?d ø:Ï{§ @  tw€?¤?d 8;¤ÍÌ @  tx€@¤?d x;‡5Ú @  ty€A¤?d ¸;Õ.5K @  tz€B¤?d ø;W¿"• @  t{€C¤?d 8<Ï:„ˆ @  t|€D¤?d x<M«“V @  t}€E¤?d ¸<°| @  t~€F¤?d ø<!kÑ @  t€G¤?d 8=®¿Úh @  t€€H¤?d x=,.Ͷ @  t€I¤?d ¸=~5"ï @  t‚€J¤?d ø=ü¤51 @  tƒ€K¤?d 8>à+Àâ @  t„€L¤?d x>bº×< @  t…€M¤?d ¸>0¡8e @  t†€N¤?d ø>²0/» @  t‡€O¤?d 8?Ó @  tˆ€P¤?d x?—™Äà @  t‰€Q¤?duÐ@7 ¸?Å‚+š @  tŠ€R¤?d ø?GS®Î @  t™€a¤?d ÐCÎ,T· @  tš€b¤?d D×b§¸ @  t›€c¤?d PDÔ8åt @  tœ€d¤?d DôÍçŠ @  t€e¤?d ÐD²ó @  tž€f¤?d EÔú‘ @  tŸ€g¤?d PEøì7 @  t €h¤?d EØÉ @  t¡€i¤?d ÐE(fu° @  t¢€j¤?d Fµ"Õq @  t£€k¤?d PF¶x—½ @  t¤€l¤?d F–•C @  t¥€m¤?d ÐFfòo: @  t¦€n¤?d G¶ºãÒ @  t§€o¤?d PGC[„B @  t¨€p¤?d Gc®†¼ @  t©€q¤?d ÐG“Ñ|Å @  tª€r¤?d H§.ðØ @  t«€s¤?d PH¤t² @  t¬€t¤?d H„°ê @  t­€u¤?d ÐHtþJ“ @  t®€v¤?d I¤¶Æ{ @  t¯€w¤?d PI™¦ýç @  t°€x¤?d I¹Sÿ @  t±€y¤?d ÐII,` @  t²€z¤?d JÔh¥¡ @  t³€{¤?d PJ×2çm @  t´€|¤?d J÷Çå“ @  tµ€}¤?d ÐJ¸ê @  t¶€~¤?d K×ð“ @  t·€¤?d PKR0ŒÍ @  t¸€€¤?d KrÅŽ3 @  t¹€¤?d ÐK‚ºtJ @  tº€‚¤?d L›ô‡E @  t»€ƒ¤?d PL˜®Å‰ @  t¼€„¤?d L¸[Çw @  t½€…¤?d ÐLH$= @  t¾€†¤?d M˜l±æ @  t¿€‡¤?d PM}«X @  tÀ€ˆ¤?d M:ˆ©¦ @  tÁ€‰¤?d ÐMÊ÷Sß @  t€Ф?d NW³ó @  tÀ‹¤?d PNTé±Ò @  tÄ€Œ¤?d Nt³, @  tÅ€¤?d ÐN„cIU @  tÆ€ޤ?d OT+Ž @  tÇ€¤?d PO¡Ê¢- @  tÈ€¤?d O? Ó @  tÉ€‘¤?d ÐOq@Zª @  tÊ€’¤?d PÏžæ @  tË€“¤?d PPÌĤÔ @  tÌ€”¤?d Pì1¦* @  tÍ€•¤?d ÐPN\S @  t΀–¤?d QÌл @  tÏ€—¤?d PQñë' @  tЀ˜¤?d QÑãéÙ @  tÑ€™¤?d ÐQ!œ  @  tÒ€š¤?d R¼Ø³a @  tÓ€›¤?d PR¿‚ñ­ @  tÔ€œ¤?d RŸwóS @  tÕ€¤?d ÐRo * @  tÖ€ž¤?d S¿@… @  t×€Ÿ¤?d PS×ÛŽ @  tØ€ ¤?d S÷ãÙp @  tÙ€¡¤?d ÐSœ#  @  tÚ€¢¤?d TÒÐ @  tÛ€£¤?d PTˆ’Ê @  tÜ€¤¤?d T=}4 @  tÝ€¥¤?d ÐTÍjM @  tÞ€¦¤?d UJæ¥ @  t߀§¤?d PU1\ú‰ @  tà€¨¤?d U©øw @  tဩ¤?d ÐUáÖ @  t‪¤?d€ VQ¾i @  u€«¤?d PVêJ´Œ @  u€¬¤?d VÊ¿¶r @  u€­¤?d ÐVÿ‰·æ @  u€®¤?d W/Á; @  u€¯¤?d PW’ä @  u€°¤?d W4g @  u€±¤?d ÐW ª¤ @  u€²¤?d X>U( @  u €³¤?d PXøF‘% @  u €´¤?d Xس“Û @  u €µ¤?d ÐXí…’O @  u €¶¤?d Y=ͧ @  u €·¤?d PYcÎD¡ @  u€¸¤?d YC;F_ @  u€¹¤?d ÐYÐWݼ @  u€º¤?d ZM}} @  u€»¤?d PZ‹Ä\ @  u€¼¤?d Z«õÆ¢ @  u€½¤?d ÐZžÃÇ6 @  u€¾¤?d [N‹KÞ @  u€¿¤?d P[?_ù @  u€À¤?d [8Ê] @  u€Á¤?d Ð[ø @  u€¤?d \I  @  u€ä?d P\ÙZ²* @  u€Ĥ?d \ù¯°Ô @  u€Ť?d Ð\Ì™±@ @  u€Ƥ?d ]Ñ=¨ @  u€Ǥ?d P]BÒg® @  u€Ȥ?d ]b'eP @  u€ɤ?d Ð]àMÙ @  u €ʤ?d ^} y @  u!€ˤ?d P^»Àã @  u"€̤?d ^›ï @  u#€ͤ?d Ð^®ÙÉ @  u$€Τ?d _~‘Oa @  u%€Ϥ?d P_EÂw‹ @  u&€Ф?d _e7uu @  uuÐ`'€Ѥ?d Ð_[úÐv @  u(€Ò¤?d (`åeî @  u)€Ó¤?d h`#ÜÏ @  u*€Ô¤?d ¨`äÞ1 @  u+€Õ¤?d è`6Òߥ @  u,€Ö¤?d (aæšSM @  u-€פ?d ha¸™ K @  u.€ؤ?d ¨a˜l µ @  u/€Ù¤?d èa V @  u0€Ú¤?d (b–D0— @  u1€Û¤?d hbPW‰¶ @  u2€ܤ?d ¨bp¢‹H @  u3€ݤ?d èbE”ŠÜ @  u4€Þ¤?d (c•Ü4 @  u5€ߤ?d hc38 @  u6€à¤?d ¨cÍü @  u7€á¤?d èc- ÿ @  u8€â¤?d (d4NSð @  u9€ã¤?d hdò]êÑ @  u:€ä¤?d ¨dÒ¨è/ @  u;€å¤?d èdçžé» @  u<€æ¤?d (e7ÖeS @  u=€ç¤?d heiÕ?U @  u>€è¤?d ¨eI =« @  u?€é¤?d èeeM‡j @  u@€ê¤?d (fø '« @  uA€ë¤?d hf>žŠ @  uB€ì¤?d ¨fïœt @  uC€í¤?d èf+Ùà @  uD€î¤?d (gû‘ @  uE€ï¤?d hgÀÂ)â @  uF€ð¤?d ¨gà7+ @  uG€ñ¤?d ègÞúŽ @  uH€ò¤?d (hê @  uI€ó¤?d hh,»# @  uJ€ô¤?d ¨h ã¹Ý @  uK€õ¤?d èh9Õ¸I @  uL€ö¤?d (ié4¡ @  uM€÷¤?d hi·žn§ @  uN€ø¤?d ¨i—klY @  uO€ù¤?d èi÷º @  uP€ú¤?d (j™CW{ @  uQ€û¤?d hj_PîZ @  uR€ü¤?d ¨j¥ì¤ @  uS€ý¤?d èjJ“í0 @  uT€þ¤?d (kšÛaØ @  uU€ÿ¤?d hk®Îta @  uV€¥?d ¨kŽ;vŸ @  uW€¥?d èk°öÓœ @  uX€¥?d (l©¸ “ @  uY€¥?d hlo«™² @  uZ€¥?d ¨lO^›L @  u[€¥?d èlzhšØ @  u\€¥?d (mª 0 @  u]€¥?d hmô#L6 @  u^€¥?d ¨mÔÖNÈ @  u_€ ¥?d èmV¼ò› @  u`€ ¥?d (nËøRZ @  ua€ ¥?d hn ëë{ @  ub€ ¥?d ¨n-é… @  uc€ ¥?d èn(è @  ud€¥?d (oÈ`dù @  ue€¥?d hoó3\ @  uf€¥?d ¨oÓÆ^í @  ug€¥?d èoí ûî @  uh€¥?d (pSÕG\ @  ui€¥?d hp•Æþ} @  uj€¥?d ¨pµ3üƒ @  uk€¥?d èp€ý @  ul€¥?d (qPMqÿ @  um€¥?d hqN+ù @  un€¥?d ¨q.») @  uo€¥?d èq½×²ä @  up€¥?d (r “% @  uq€¥?d hr怫 @  ur€¥?d ¨rÆu©ú @  us€¥?d èróC¨n @  ut€¥?d (s# $† @  uu€¥?d hs…ï%° @  uv€ ¥?d ¨s¥'N @  uw€!¥?d ès›×‚M @  ux€"¥?d (t‚™qB @  uy€#¥?d htDŠÈc @  uz€$¥?d ¨tdÊ @  u{€%¥?d ètQIË  @  u|€&¥?d (uGá @  u}€'¥?d hußç @  u~€(¥?d ¨uÿ÷ @  u€)¥?d èu0Ì•é @  u€€*¥?d (v­ˆ5( @  u€+¥?d hvk›Œ  @  u‚€,¥?d ¨vKnŽ÷ @  uƒ€-¥?d èv~Xc @  u„€.¥?d (w®‹ @  u…€/¥?d hw•C;a @  u†€0¥?d ¨wµ¶9Ÿ @  u‡€1¥?d èw‹{œœ @  uˆ€2¥?d (x¿„ @  u‰€3¥?d hxy—©  @  uŠ€4¥?d ¨xYb«^ @  u‹€5¥?d èxlTªÊ @  uŒ€6¥?d (y¼&" @  u€7¥?d hyâ|$ @  uŽ€8¥?d ¨yÂê~Ú @  u€9¥?d èyQ†å9 @  u€:¥?d (zÌÂEø @  u‘€;¥?d hz ÑüÙ @  u’€<¥?d ¨z*$þ' @  u“€=¥?d èzÿ³ @  u”€>¥?d ({ÏZs[ @  u•€?¥?d h{™îg| @  u–€@¥?d ¨{¹e‚ @  u—€A¥?d è{‡ÖÀ @  u˜€B¥?d (|ž˜3Ž @  u™€C¥?d h|X‹Š¯ @  uš€D¥?d ¨|x~ˆQ @  u›€E¥?d è|MH‰Å @  uœ€F¥?d (}- @  u€G¥?d h}Ã_+ @  už€H¥?d ¨}ãö]Õ @  uŸ€I¥?d è}aœá† @  u €J¥?d (~üØAG @  u¡€K¥?d h~:Ëøf @  u¢€L¥?d ¨~>ú˜ @  u£€M¥?d è~/û  @  u¤€N¥?d (ÿ@wä @  u¥€O¥?d hÄO @  u¦€P¥?d ¨uЀ'äæMð @  u§€Q¥?d èÚ+èó @  u¨€R¥?d @€´• ‡ @  u©€S¥?d €€Ð⦆ @  uª€T¥?d À€Rs±X @  u«€U¥?d 5œ+ú @  u¬€V¥?d @· <$ @  u­€W¥?d €Kjs @  u®€X¥?d ÀÉûdÜ @  u¯€Y¥?d ‚EBH  @  u°€Z¥?d @‚ÇÓ_þ @  u±€[¥?d €‚£¤óÿ @  u²€\¥?d À‚!5ä! @  u³€]¥?d ƒFÚ~ƒ @  u´€^¥?d @ƒÄKi] @  uµ€_¥?d €ƒÀË}K @  u¶€`¥?d ÀƒBZj• @  u·€a¥?d „çH+G @  u¸€b¥?d @„eÙ<™ @  u¹€c¥?d €„®˜ @  uº€d¥?d À„ƒ?‡F @  u»€e¥?d …äÐä @  u¼€f¥?d @…fA : @  u½€g¥?d €…š&E @  u¾€h¥?d À…·R @  u¿€i¥?d †+_ @  uÀ€j¥?d @†©žH @  uÁ€k¥?d €†Íéäà @  u€l¥?d À†Oxó @  uÀm¥?d ‡(—i¿ @  uÄ€n¥?d @‡ª~a @  uÅ€o¥?d €‡31S« @  uÆ€p¥?d À‡± Du @  uÇ€q¥?d ˆ9zµ @  uÈ€r¥?d @ˆ»’mk @  uÉ€s¥?d €ˆßåÁj @  uÊ€t¥?d Àˆ]tÖ´ @  uË€u¥?d ‰:›L @  uÌ€v¥?d @‰¸ [È @  uÍ€w¥?d €‰Dmî @  u΀x¥?d À‰Æü0 @  uÏ€y¥?d ŠJE/Ì @  uЀz¥?d @ŠÈÔ8 @  uÑ€{¥?d €Š¬£” @  uÒ€|¥?d ÀŠ.2ƒÍ @  uÓ€}¥?d ‹IÝo @  uÔ€~¥?d @‹ËL± @  uÕ€¥?d €‹"Z[$ @  uÖ€€¥?d À‹ ËLú @  u×€¥?d ŒÙ ( @  uØ€‚¥?d @Œ‡Hö @  uÙ€ƒ¥?d €Œã?¶÷ @  uÚ€„¥?d ÀŒa®¡) @  uÛ€…¥?d A;‹ @  uÜ€†¥?d @„Ð,U @  uÝ€‡¥?d €x·cs @  uÞ€ˆ¥?d Àú&t­ @  u߀‰¥?d Žg™á @  uà€Š¥?d @Žåh? @  uဋ¥?d €ŽÄ> @  u‌¥?d€ ÀŽ©$à @  v€¥?d Dök @  v€Ž¥?d @Æ–áµ @  v€¥?d €šè7’ @  v€¥?d Ày L @  v€‘¥?d ÔIqY @  v€’¥?d @VØf‡ @  v€“¥?d €ü•ü @  v€”¥?d À~Œ‚" @  v €•¥?d ‘Ü*ãm @  v €–¥?d @‘^»ô³ @  v €—¥?d €‘g•@x @  v €˜¥?d À‘åW¦ @  v €™¥?d ’ ®À @  v€š¥?d @’ˆ?  @  v€›¥?d €’[À… @  v€œ¥?d À’ Ê×[ @  v€¥?d “¯l¶ @  v€ž¥?d @“-ý¡Ê @  v€Ÿ¥?d €“ì4N1 @  v€ ¥?d À“n¥Yï @  v€¡¥?d ”GG @  v€¢¥?d @”‡”P™ @  v€£¥?d €”-Q£â @  v€¤¥?d À”¯À´< @  v€¥¥?d • fÕs @  v€¦¥?d @•÷­ @  v€§¥?d €•¶Ùvf @  v€¨¥?d À•4Ha¸ @  v€©¥?d –Ûâ,Þ @  v€ª¥?d @–Ys; @  v€«¥?d €–OÑ+ @  v €¬¥?d À–Í€Æõ @  v!€­¥?d —o&§º @  v"€®¥?d @—í·°d @  v#€¯¥?d €—±ÉfC @  v$€°¥?d À—3Xq @  v%€±¥?d ˜uI' @  v&€²¥?d @˜÷Øù @  v'€³¥?d €˜]ô‚ @  v(€´¥?d À˜ߌã\ @  v)€µ¥?d ™}*‚ @  v*€¶¥?d @™ÿ»•Í @  v+€·¥?d €™Æ•! @  v,€¸¥?d À™D6Ø @  v-€¹¥?d š«®{¾ @  v.€º¥?d @š)?l` @  v/€»¥?d €š.[¡û @  v0€¼¥?d Àš¬Ê¶% @  v1€½¥?d ›l×j @  v2€¾¥?d @›ŒýÀ´ @  v3€¿¥?d €›½d:^ @  v4€À¥?d À›?õ-€ @  v5€Á¥?d œTU3( @  v6€Â¥?d @œÖÄ$ö @  v7€Ã¥?d €œ|× @  v8€Ä¥?d ÀœþÀS @  v9€Å¥?d \6¡ @  v:€Æ¥?d @Þ§¶Â @  v;€Ç¥?d €ç‰  @  v<€È¥?d Àe× @  v=€É¥?d žвX± @  v>€Ê¥?d @ž#Oo @  v?€Ë¥?d €ž°F£Ö @  v@€Ì¥?d Àž2×´ @  vA€Í¥?d ŸqÕG @  vB€Î¥?d @Ÿà™ @  vC€Ï¥?d €ŸNž¾ @  vD€Ð¥uР?d ÀŸÌ` @  vE€Ñ¥?d  Ïê0¡ @  vF€Ò¥?d X M{' @  vG€Ó¥?d ˜ ç¾Ô @  vH€Ô¥?d Ø e/ÃÚ @  vI€Õ¥?d ¡lj¢• @  vJ€Ö¥?d X¡EµK @  vK€×¥?d ˜¡|6€ @  vL€Ø¥?d Ø¡þ§^ @  vM€Ù¥?d ¢ [8 @  vN€Ú¥?d X¢“œLæ @  vO€Û¥?d ˜¢”ø} @  vP€Ü¥?d Ø¢i–£ @  vQ€Ý¥?d £´Ï÷ì @  vR€Þ¥?d X£6^à2 @  vS€ߥ?d ˜£÷—É @  vT€à¥?d Ø£u @  vU€á¥?d ¤¦¿ @  vV€â¥?d X¤œ7a @  vW€ã¥?d ˜¤6òâ @  vX€ä¥?d ؤ´cõÄ @  vY€å¥?d ¥Å”‹ @  vZ€æ¥?d X¥”TƒU @  v[€ç¥?d ˜¥­z7ž @  v\€è¥?d Ø¥/ë @ @  v]€é¥?d ¦ÀAm& @  v^€ê¥?d X¦BÐzø @  v_€ë¥?d ˜¦T²Ó @  v`€ì¥?d ئÖ#‡  @  va€í¥?d §t…æB @  vb€î¥?d X§öñœ @  vc€ï¥?d ˜§ªj'» @  vd€ð¥?d ا(û0e @  ve€ñ¥?d ¨nêQß @  vf€ò¥?d X¨ì{F @  vg€ó¥?d ˜¨F¾µz @  vh€ô¥?d بÄ/¢¤ @  vi€õ¥?d ©f‰Ãë @  vj€ö¥?d X©äÔ5 @  vk€÷¥?d ˜©Ý6`þ @  vl€ø¥?d Ø©_§w  @  vm€ù¥?d ª° :F @  vn€ú¥?d Xª2œ-˜ @  vo€û¥?d ˜ª5øà @  vp€ü¥?d ت·i÷Ý @  vq€ý¥?d «Ï–’ @  vr€þ¥?d X«—^L @  vs€ÿ¥?d ˜«vDO @  vt€¦?d Ø«ôÕXà @  vu€¦?d ¬ŸuFk @  vv€¦?d X¬äQµ @  vw€¦?d ˜¬·!¢Î @  vx€¦?d ج5°µ @  vy€¦?d ­—Ô_ @  vz€¦?d X­‡Ã @  v{€¦?d ˜­,©wJ @  v|€¦?d Ø­®8`” @  v}€ ¦?d ®A’-ò @  v~€ ¦?d X®Ã:, @  v€ ¦?d ˜®˜0æ¤ @  v€€ ¦?d Ø®¡ñz @  v€ ¦?d ¯¸5 @  v‚€¦?d X¯:–‡ë @  vƒ€¦?d ˜¯fèQÌ @  v„€¦?d دäyF @  v…€¦?d °(I @  v†€¦?d X°ªØÙ @  v‡€¦?d ˜°ó¢ @  vˆ€¦?d ذ‚Œä| @  v‰€¦?d ± *…3 @  vŠ€¦?d X±¢»’í @  v‹€¦?d ˜±›•&& @  vŒ€¦?d ر1ø @  v€¦?d ²ö®|ž @  vŽ€¦?d X²t?k@ @  v€¦?d ˜²s[¦Û @  v€¦?d زñʱ @  v‘€¦?d ³SlÐJ @  v’€¦?d X³ÑýÇ” @  v“€¦?d ˜³4(o @  v”€ ¦?d س’¥?± @  v•€!¦?d ´ù! @  v–€"¦?d X´{”6Ç @  v—€#¦?d ˜´ÑQż @  v˜€$¦?d Ø´SÀÒb @  v™€%¦?d µñf³- @  vš€&¦?d Xµs÷¤ó @  v›€'¦?d ˜µJÙ8 @  vœ€(¦?d صÈHæ @  v€)¦?d ¶'âJ€ @  vž€*¦?d X¶¥s]^ @  vŸ€+¦?d ˜¶³·u @  v €,¦?d ض1€ « @  v¡€-¦?d ·“&Áä @  v¢€.¦?d X··Ö: @  v£€/¦?d ˜·MÉ @  v¤€0¦?d Ø·ÏXà @  v¥€1¦?d ¸‰Ivy @  v¦€2¦?d X¸ Øa§ @  v§€3¦?d ˜¸¡’Ü @  v¨€4¦?d ظ#Œ… @  v©€5¦?d ¹*äM @  vª€6¦?d X¹»ó“ @  v«€7¦?d ˜¹:•GX @  v¬€8¦?d ع¸P† @  v­€9¦?d ºW®à @  v®€:¦?d XºÕ? > @  v¯€;¦?d ˜ºÒ[Ç¥ @  v°€<¦?d غPÊÐ{ @  v±€=¦?d »òl±4 @  v²€>¦?d X»pý¦ê @  v³€?¦?d ˜»Ad\ @  v´€@¦?d Ø»ÃõKÞ @  vµ€A¦?d ¼¨UUv @  v¶€B¦?d X¼*ÄB¨ @  v·€C¦?d ˜¼€±Ó @  v¸€D¦?d ؼ¦  @  v¹€E¦?d ½ 6ÇB @  vº€F¦?d X½"§Ðœ @  v»€G¦?d ˜½‰dW @  v¼€H¦?d ؽ™s‰ @  v½€I¦?d ¾v²>ï @  v¾€J¦?d X¾ô#)1 @  v¿€K¦?d ˜¾LFň @  vÀ€L¦?d ؾÎ×ÒV @  vÁ€M¦?d ¿lq³ @  v€N¦?d X¿îà¤Ç @  vÀO¦?d ˜¿²žrà @uÐÀ  vÄ€P¦?d Ø¿0e> @  vÅ€Q¦?d 0À&ÙË @  vÆ€R¦?d pÀ¤€Î @  vÇ€S¦?d °ÀE=n @  vÈ€T¦?d ðÀŒÔ*° @  vÉ€U¦?d 0Á.rKÿ @  vÊ€V¦?d pÁ¬ã\! @  vË€W¦?d °Á•Íèê @  vÌ€X¦?d ðÁ\ÿ4 @  vÍ€Y¦?d 0Âøö²R @  v΀Z¦?d pÂzg¥Œ @  vÏ€[¦?d °Â}h @  vЀ\¦?d ðÂÿ’É @  vÑ€]¦?d 0Ã]4† @  vÒ€^¦?d pÃߥ X @  vÓ€_¦?d °Ãlæ£ @  vÔ€`¦?d ðÜýñ} @  vÕ€a¦?d 0Ä÷]ïÕ @  vÖ€b¦?d pÄuÌø  @  v×€c¦?d °Äß p @  vØ€d¦?d ðÄ]˜® @  vÙ€e¦?d 0Åÿ>}á @  vÚ€f¦?d pÅ}¯j? @  vÛ€g¦?d °ÅDÞô @  vÜ€h¦?d ðÅÆÉ* @  vÝ€i¦?d 0Æ)º„L @  vÞ€j¦?d pÆ«+“’ @  v߀k¦?d °Æ½Iy¹ @  và€l¦?d ðÆ?Øng @  vá€m¦?d 0Ç~( @  vâ€n¦?d€ pÇk,P @  w€o¦?d °ÇÖš^ @  w€p¦?d ðÇT‚€ @  w€q¦?d 0È×Ú× @  w€r¦?d pÈUK  @  w€s¦?d °È1<¬ @  w€t¦?d ðȳ­»Ö @  w€u¦?d 0Éß¹…ã @  w€v¦?d pÉ](’= @  w €w¦?d °É¡OÝ @  w €x¦?d ðÉ#ÞÊÅ @  w €y¦?d 0Ê =|N @  w €z¦?d pÊ‹¬k @  w €{¦?d °ÊïÛÇ‘ @  w€|¦?d ðÊmJÐO @  w€}¦?d 0ˬÿК @  w€~¦?d pË.nÇD @  w€¦?d °ËÇx’Ñ @  w€€¦?d ðËEé… @  w€¦?d 0Ìë`J @  w€‚¦?d pÌi‘w” @  w€ƒ¦?d °Ì æÛ• @  w€„¦?d ðÌwÌK @  w€…¦?d 0Íãcò~ @  w€†¦?d pÍaòå  @  w€‡¦?d °Í•ª† @  w€ˆ¦?d ðͽX @  w€‰¦?d 0Î5ç Ó @  w€Ц?d pηv  @  w€‹¦?d °ÎÓ°  @  w€Œ¦?d ðÎQ§Ò @  w€¦?d 0Ï#€· @  w €ަ?d pϲ—i @  w!€¦?d °Ïš…º£ @  w"€¦?d ðÏ­} @  w#€‘¦?d 0Ðm… @  w$€’¦?d pГü[ @  w%€“¦?d °Ð÷‹¼Z @  w&€”¦?d ðÐu«„ @  w'€•¦?d 0Ñ•± @  w(€–¦?d pÑ›Ÿ‚o @  w)€—¦?d °ÑgøÍI @  w*€˜¦?d ðÑåiÚ— @  w+€™¦?d 0ÒÏŠl @  w,€š¦?d pÒM{ @  w-€›¦?d °Ò)l×à @  w.€œ¦?d ðÒ«ýÀ @  w/€¦?d 0ÓjHÀÈ @  w0€ž¦?d pÓèÙ× @  w1€Ÿ¦?d °ÓìYà @  w2€ ¦?d ðÓnÈÔÞ @  w3€¡¦?d 0ÔÀ!1› @  w4€¢¦?d pÔB°&E @  w5€£¦?d °Ô&ÇŠD @  w6€¤¦?d ðÔ¤Vš @  w7€¥¦?d 0ÕÈB£¯ @  w8€¦¦?d pÕJÓ´q @  w9€§¦?d °Õ¶´ûW @  w:€¨¦?d ðÕ4%ì‰ @  w;€©¦?d 0ÖÆZ @  w<€ª¦?d pÖœWMÜ @  w=€«¦?d °Öø áÝ @  w>€¬¦?d ðÖz±ö @  w?€­¦?d 0××ô @  w@€®¦?d p׆”À* @  wA€¯¦?d °×£íà @  wB€°¦?d ð×2ú> @  wC€±¦?d 0Øj`i @  wD€²¦?d pØœûw· @  wE€³¦?d °ØøŒÛ¶ @  wF€´¦?d ðØzÌh @  wG€µ¦?d 0Ù ò] @  wH€¶¦?d pÙ”˜åƒ @  wI€·¦?d °Ùhÿª¥ @  wJ€¸¦?d ðÙên½{ @  wK€¹¦?d 0ÚÀ ð @  wL€º¦?d pÚB. @  wM€»¦?d °Ú&k°/ @  wN€¼¦?d ðÚ¤ú§ñ @  wO€½¦?d 0ÛeO§$ @  wP€¾¦?d pÛçÞ°ú @  wQ€¿¦?d °Û±ý @  wR€À¦?d ðÛ‘Ÿ¦# @  wS€Á¦?d 0Ü?vCf @  wT€¦?d pܽçT¸ @  wU€æ?d °ÜÙø¹ @  wV€Ħ?d ðÜ[ïg @  wW€Ŧ?d 0Ý7ÑR @  wX€Ʀ?d pݵ„ÆŒ @  wY€Ǧ?d °ÝI㉪ @  wZ€Ȧ?d ðÝËržt @  w[€ɦ?d 0Þá‘(ÿ @  w\€ʦ?d pÞc?! @  w]€˦?d °Þw“  @  w^€̦?d ðÞ…æ„þ @  w_€ͦ?d 0ßUU£› @  w`€Φ?d pß×Ä´E @  wa€Ϧ?d uÐà/°ßNó™ @  wb€Ц?d ðßÌbŽQ @  wc€Ѧ?d HàbaÆí @  wd€Ò¦?d ˆàB”Ä @  we€Ó¦?d Èà„‡}2 @  wf€Ô¦?d áTÏñÚ @  wg€Õ¦?d HájTÙ @  wh€Ö¦?d ˆáJ÷V' @  wi€צ?d Èáô ! @  wj€ئ?d ≰¬à @  wk€Ù¦?d H⼆­t @  wl€Ú¦?d ˆâœs¯Š @  wm€Û¦?d ÈâZ`« @  wn€ܦ?d ãŠ(šC @  wo€ݦ?d HãD  @  wp€Þ¦?d ˆã9±^ @  wq€ߦ?d ÈãŸUh @  wr€à¦?d ä†ñg @  ws€á¦?d Hä³-ðó @  wt€â¦?d ˆä“Øò  @  wu€ã¦?d ÈäUËK, @  wv€ä¦?d å…ƒÇÄ @  ww€å¦?d Hå»NbÇ @  wx€æ¦?d ˆå›»`9 @  wy€ç¦?d ÈåŸ:? @  wz€è¦?d æXüšþ @  w{€é¦?d HæmÊ›j @  w|€ê¦?d ˆæM?™” @  w}€ë¦?d Èæ‹, µ @  w~€ì¦?d ç[d¬] @  w€í¦?d Hç”_&­ @  w€€î¦?d ˆç´ª$S @  w€ï¦?d Èçù¹ @  w‚€ð¦?d 軤 @  wƒ€ñ¦?d HèŽ0‘0 @  w„€ò¦?d ˆè®Å“Î @  w…€ó¦?d ÈèhÖ*ï @  w†€ô¦?d 鸞¦ @  w‡€õ¦?d Hé†S @  wˆ€ö¦?d ˆé¦¦ú @  w‰€÷¦?d Èéø¥[ü @  wŠ€ø¦?d êeáû= @  w‹€ù¦?d HêP×ú© @  wŒ€ú¦?d ˆêp"øW @  w€û¦?d Èê¶1Av @  wŽ€ü¦?d ëfyÍž @  w€ý¦?d HëõV} @  w€þ¦?d ˆëÕàTƒ @  w‘€ÿ¦?d ÈëáõA: @  w’€§?d ìø»²5 @  w“€§?d Hìͳ¡ @  w”€§?d ˆìíx±_ @  w•€§?d Èì+k~ @  w–€§?d íû#„– @  w—€§?d HíÅî!• @  w˜€§?d ˆíå#k @  w™€§?d Èí»ym @  wš€§?d î&\Ù¬ @  w›€ §?d HîjØ8 @  wœ€ §?d ˆî3ŸÚÆ @  w€ §?d ÈîõŒcç @  wž€ §?d ï%Äï @  wŸ€ §?d Hï§®S\ @  w €§?d ˆï‡[Q¢ @  w¡€§?d Èï¼iH @  w¢€§?d ðÖÕú @  w£€§?d Hð7àÔn @  w¤€§?d ˆðÖ @  w¥€§?d ÈðÑo± @  w¦€§?d ñNãY @  w§€§?d Hñ?ƒFZ @  w¨€§?d ˆñvD¤ @  w©€§?d ÈñAu¢ @  wª€§?d òÜ1¾c @  w«€§?d Hòé¿÷ @  w¬€§?d ˆòÉò½  @  w­€§?d Èòá( @  w®€§?d óß©ˆÀ @  w¯€§?d HóLÅ# @  w°€§?d ˆól0Ý @  w±€§?d ÈóÊÔë @  w²€ §?d ôÓšãä @  w³€!§?d Hôæ¬âp @  w´€"§?d ˆôÆYàŽ @  wµ€#§?d ÈôJY¯ @  w¶€$§?d õÐÕG @  w·€%§?d HõîÏpD @  w¸€&§?d ˆõÎ:rº @  w¹€'§?d Èõ9(¼ @  wº€(§?d ö }ˆ} @  w»€)§?d Hö8K‰é @  w¼€*§?d ˆö¾‹ @  w½€+§?d ÈöÞ­26 @  w¾€,§?d ÷å¾Þ @  w¿€-§?d H÷"ˆ @  wÀ€.§?d ˆ÷}á @  wÁ€/§?d È÷9.>  @  w€0§?d ø Ѳ @  wÀ1§?d Hø8糂 @  wÄ€2§?d ˆø±| @  wÅ€3§?d ÈøÞ] @  wÆ€4§?d ùI„µ @  wÇ€5§?d Hù0„!¶ @  wÈ€6§?d ˆùq#H @  wÉ€7§?d ÈùNryN @  wÊ€8§?d úÓ6Ù @  wË€9§?d HúæØ @  wÌ€:§?d ˆúÆõÚå @  wÍ€;§?d ÈúæcÄ @  w΀<§?d ûЮï, @  wÏ€=§?d HûCÂtÏ @  wЀ>§?d ˆûc7v1 @  wÑ€?§?d Èû5ƒb @  wÒ€@§?d ü,Í‘ @  wÓ€A§?d Hüû @  wÔ€B§?d ˆü9’s @  wÕ€C§?d Èüÿ+R @  wÖ€D§?d ý/U§º @  w×€E§?d Hý˜¹ @  wØ€F§?d ˆý1mG @  wÙ€G§?d ÈýonZA @  wÚ€H§?d þò*ú€ @  wÛ€I§?d HþÇû @  wÜ€J§?d ˆþçéùê @  wÝ€K§?d Èþ!ú@Ë @  wÞ€L§?d ÿñ²Ì# @  w߀M§?d HÿsØpp @  wà€N§?d ˆÿS-rŽ @  wá€uÐ O§?d Èÿh~Jd @  wâ€P§?d€ PvÇ @  x€Q§?d ` Û'?z @  x€R§?d   ûÒ=„ @  x€S§?d à øˆH @  x€T§?d  (Àó  @  x€U§?d ` Ø¿ Ù @  x€V§?d   øJ ' @  x€W§?d à hû[ @  x€X§?d  õ¿®š @  x €Y§?d ` ÀTã @  x €Z§?d   %5V @  x €[§?d à &oÑ @  x €\§?d  ö'˜9 @  x €]§?d ` Xb@ @  x€^§?d   &­`¾ @  x€_§?d à ãZ @  x€`§?d  úó @  x€a§?d `  k d @  x€b§?d   *ž š @  x€c§?d à )ÄIV @  x€d§?d  ùŒÅ¾ @  x€e§?d `  ó?Ç @  x€f§?d   )=9 @  x€g§?d à ¹·8E @  x€h§?d  $ó˜„ @  x€i§?d ` ÔŒbý @  x€j§?d   ôy` @  x€k§?d à ÷#"Ï @  x€l§?d  'k®' @  x€m§?d ` ×T^ @  x€n§?d   ÷áV  @  x€o§?d à ¾§(` @  x €p§?d  ŠX¤} @  x!€q§?d ` z'^ @  x"€r§?d   ZÒ\ú @  x#€s§?d à Yˆ6 @  x$€t§?d ‰À’Þ @  x%€u§?d ` y¿h§ @  x&€v§?d   YJjY @  x'€w§?d à Éûo% @  x(€x§?d T¿Ïä @  x)€y§?d ` ¤À5 @  x*€z§?d   „57c @  x+€{§?d à ‡ou¯ @  x,€|§?d W'ùG @  x-€}§?d ` §X> @  x.€~§?d   ‡­À @  x/€§?d à ¯Ì ï @  x0€€§?d ¶‚Óà @  x1€§?d ` Fý)™ @  x2€‚§?d   f+g @  x3€ƒ§?d à eRi« @  x4€„§?d µåC @  x5€…§?d ` Ee: @  x6€†§?d   eÄ @  x7€‡§?d à õ!¸ @  x8€ˆ§?d  he¸y @  x9€‰§?d ` ˜B @  x:€Ч?d   ¸ï@þ @  x;€‹§?d à »µ2 @  x<€Œ§?d  kýŽÚ @  x=€§?d ` ›‚t£ @  x>€ާ?d   »wv] @  x?€§?d à \6 @  x@€§?d  âè²½ @  xA€‘§?d ` —HÄ @  xB€’§?d   2bJ: @  xC€“§?d à 18ö @  xD€”§?d  áp„ @  xE€•§?d ` ~g @  xF€–§?d   1ú|™ @  xG€—§?d à ¡Kyå @  xH€˜§?d  <Ù$ @  xI€™§?d ` Ìp#] @  xJ€š§?d   ì…!£ @  xK€›§?d à ïßco @  xL€œ§?d  ?—ï‡ @  xM€§?d ` Ïèþ @  xN€ž§?d   ï @  xO€Ÿ§?d à *êw¬ @  xP€ §?d  3¤„£ @  xQ€¡§?d ` ÃÛ~Ú @  xR€¢§?d   ã.|$ @  xS€£§?d à àt>è @  xT€¤§?d  0<² @  xU€¥§?d ` ÀCHy @  xV€¦§?d   à¶J‡ @  xW€§§?d à pOû @  xX€¨§?d  íCï: @  xY€©§?d ` <C @  xZ€ª§?d   =ɽ @  x[€«§?d à >“Uq @  x\€¬§?d  îÛÙ™ @  x]€­§?d ` ¤#à @  x^€®§?d   >Q! @  x_€¯§?d à w_Þ @  x`€°§?d  CèÓà @  xa€±§?d ` ³—)º @  xb€²§?d   “b+D @  xc€³§?d à 8iˆ @  xd€´§?d  @på` @  xe€µ§?d ` ° @  xf€¶§?d   úç @  xg€·§?d à K› @  xh€¸§?d  ¸Z @  xi€¹§?d ` mpB# @  xj€º§?d   M…@Ý @  xk€»§?d à Nß @  xl€¼§?d  ž—Žù @  xm€½§?d ` nèt€ @  xn€¾§?d   Nv~ @  xo€¿§?d à {ºÃ @  xp€À§?d  bôðÌ @  xq€Á§?d ` ’‹ µ @  xr€§?d   ²~K @  xs€ç?d à ±$J‡ @  xt€ħ?d  alÆo @  xu€ŧ?d ` ‘< @  xv€Ƨ?d   ±æ>è @  xw€ǧ?d à !W;” @  xx€ȧ?d  ¼›U @  xy€ɧ?d ` Lla, @  xz€ʧ?d   l™cÒ @  x{€˧?d à oÃ! @  x|€̧?d  ¿‹­ö @  x}€ͧ?d ` OôW @  x~€Χ?d   oUquÐ  @  x€ϧ?d à k @  x€€Ч?d 8 Ãt @  x€ѧ?d x êb9  @  x‚€Ò§?d ¸ Ê—;ó @  xƒ€Ó§?d ø ÉÍy? @  x„€Ô§?d 8! …õ× @  x…€Õ§?d x! éú® @  x†€Ö§?d ¸! É P @  x‡€×§?d ø! Y¾, @  xˆ€ا?d 8" Äú¨í @  x‰€Ù§?d x" 4…R” @  xŠ€Ú§?d ¸" pPj @  x‹€Û§?d ø" *¦ @  xŒ€ܧ?d 8# ÇbžN @  x€ݧ?d x# 7d7 @  xŽ€Þ§?d ¸# èfÉ @  x€ß§?d ø# Òe @  x€à§?d 8$ ËQõj @  x‘€á§?d x$ ;. @  x’€â§?d ¸$ Û í @  x“€ã§?d ø$ O! @  x”€ä§?d 8% ÈÉÃÉ @  x•€å§?d x% 8¶9° @  x–€æ§?d ¸% C;N @  x—€ç§?d ø% ˆò>2 @  x˜€è§?d 8& ¶žó @  x™€é§?d x& åÉdŠ @  xš€ê§?d ¸& Ũ?d ¸; µÇ»ˆ @  y €?¨?d ø; ãs¯¯ @  y€@¨?d 8< ú=\  @  y€A¨?d x< iQÇC @  y€B¨?d ¸< I¤Å½ @  y€C¨?d ø< ·|œ @  y€D¨?d 8= _ÿðt @  y€E¨?d x= jÉñà @  y€F¨?d ¸= J<ó @  y€G¨?d ø= ?© @  y€H¨?d 8> ‰{ Ù @  y€I¨?d x> ·¶¬Ú @  y€J¨?d ¸> —C®$ @  y€K¨?d ø> QP @  y€L¨?d 8? ›í @  y€M¨?d x? ´.šy @  y€N¨?duÐ@ 7 ¸? ”Û˜‡ @  y€O¨?d ø? ¯ˆ m @  y€P¨?d P@ l$Q @  y€Q¨?d @ L*³" @  y €R¨?d Ð@ λ¤ü @  y!€S¨?d A Zq†ë @  y"€T¨?d PA Øà‘5 @  y#€U¨?d A O²… @  y$€V¨?d ÐA Í#’_ @  y%€W¨?d B ŒõF @  y&€X¨?d PB dh˜ @  y'€Y¨?d B ’ÍØ» @  y(€Z¨?d ÐB \Ïe @  y)€[¨?d C „–ír @  y*€\¨?d PC ú¬ @  y+€]¨?d C ‘Uî @  y,€^¨?d ÐC ÄùÆ @  y-€_¨?d D .ÿ! @  y.€`¨?d PD ¬n ÿ @  y/€a¨?d D f…< @  y0€b¨?d ÐD ÷’â @  y1€c¨?d E ‹=°õ @  y2€d¨?d PE  ¬§+ @  y3€e¨?d E žþ³Ÿ @  y4€f¨?d ÐE o¤A @  y5€g¨?d F ]¹IX @  y6€h¨?d PF ß(^† @  y7€i¨?d F Cî¥ @  y8€j¨?d ÐF Áù{ @  y9€k¨?d G UÚÛl @  y:€l¨?d PG ×K̲ @  y;€m¨?d G @Ø @  y<€n¨?d ÐG ÂˆÏØ @  y=€o¨?d H Oµlñ @  y>€p¨?d PH Í${/ @  y?€q¨?d H C-ÔÎ @  y@€r¨?d ÐH Á¼Ã @  yA€s¨?d I Uvá @  yB€t¨?d PI ×çöÙ @  yC€u¨?d I @µâm @  yD€v¨?d ÐI Â$õ³ @  yE€w¨?d J ƒòª @  yF€x¨?d PJ ct @  yG€y¨?d J Ê¿W @  yH€z¨?d ÐJ [¨‰ @  yI€{¨?d K ‹‘Šž @  yJ€|¨?d PK  @ @  yK€}¨?d K žR‰ô @  yL€~¨?d ÐK Þ* @  yM€¨?d L Ìn:N @  yN€€¨?d PL Nÿ- @  yO€¨?d L ÷£S @  yP€‚¨?d ÐL ýf´ @  yQ€ƒ¨?d M i¬–š @  yR€„¨?d PM ë=D @  yS€…¨?d M |o•ð @  yT€†¨?d ÐM þþ‚. @  yU€‡¨?d N ¿(o7 @  yV€ˆ¨?d PN =¹xé @  yW€‰¨?d N ¡ÈÊ @  yX€Ѝ?d ÐN #ß @  yY€‹¨?d O ·Ký @  yZ€Œ¨?d PO 5ÚêÝ @  y[€¨?d O ¢ˆþi @  y\€ލ?d ÐO  é· @  y]€¨?d P 'z1 @  y^€¨?d PP ¥”mï @  y_€‘¨?d P …šÄœ @  y`€’¨?d ÐP  ÓB @  ya€“¨?d Q “ÁñU @  yb€”¨?d PQ Pæ‹ @  yc€•¨?d Q †ò? @  yd€–¨?d ÐQ “åá @  ye€—¨?d R EEø @  yf€˜¨?d PR ÇÔ& @  yg€™¨?d R [}¯ @  yh€š¨?d ÐR Ùì¸Û @  yi€›¨?d S M&šÌ @  yj€œ¨?d PS Ï· @  yk€¨?d S X噦 @  yl€ž¨?d ÐS ÚtŽx @  ym€Ÿ¨?d T çOkŸ @  yn€ ¨?d PT eÞ|A @  yo€¡¨?d T TÖò‚ @  yp€¢¨?d ÐT ÖGå\ @  yq€£¨?d U BÇK @  yr€¤¨?d PU ÀЕ @  ys€¥¨?d U WNÄ! @  yt€¦¨?d ÐU ÕßÓÿ @  yu€§¨?d V ” >æ @  yv€¨¨?d PV ˜)8 @  yw€©¨?d V Š1™ @  yx€ª¨?d ÐV  ŽÅ @  yy€«¨?d W œj¬Ò @  yz€¬¨?d PW û»  @  y{€­¨?d W ‰©¯¸ @  y|€®¨?d ÐW  8¸f @  y}€¯¨?d X †O @  y~€°¨?d PX ” ‘ @  y€±¨?d X iË“A @  y€€²¨?d ÐX ëZ„Ÿ @  y€³¨?d Y ¦ˆ @  y‚€´¨?d PY ý±V @  yƒ€µ¨?d Y jS¥â @  y„€¶¨?d ÐY è²< @  y…€·¨?d Z ©_% @  y†€¸¨?d PZ +…Hû @  y‡€¹¨?d Z ·,øØ @  yˆ€º¨?d ÐZ 5½ï @  y‰€»¨?d [ ¡wÍ @  yŠ€¼¨?d P[ #æÚÏ @  y‹€½¨?d [ ´´Î{ @  yŒ€¾¨?d Ð[ 6%Ù¥ @  y€¿¨?d \ ûN)S @  yŽ€À¨?d P\ yß> @  y€Á¨?d \ H×°N @  y€¨?d Ð\ ÊF§ @  y‘€è?d ] ^Œ…‡ @  y’€Ĩ?d P] Ü’Y @  y“€Ũ?d ] KO†í @  y”€ƨ?d Ð] ÉÞ‘3 @  y•€Ǩ?d ^ ˆ|* @  y–€Ȩ?d P^  ™kô @  y—€ɨ?d ^ –0Û× @  y˜€ʨ?d Ð^ ¡Ì  @  y™€˨?d _ €kî @  yš€̨?d P_ úùÀ @  y›€ͨ?d _ •¨ít @  yuÐ` œ€Ψ?d Ð_ 9úª @  y€Ϩ?d (` ` @  yž€Ш?d h` ’’wØ @  yŸ€Ѩ?d ¨` ²œÞ« @  y €Ò¨?d è` 0 Éu @  y¡€Ó¨?d (a ¤Çëb @  y¢€Ô¨?d ha &Vü¼ @  y£€Õ¨?d ¨a ±è @  y¤€Ö¨?d èa 3•ÿÖ @  y¥€ר?d (b rCÏ @  y¦€ب?d hb ðÒ @  y§€Ù¨?d ¨b l{µ2 @  y¨€Ú¨?d èb îê¢ì @  y©€Û¨?d (c z €û @  yª€ܨ?d hc ø±—% @  y«€ݨ?d ¨c oパ @  y¬€Þ¨?d èc ír”O @  y­€ߨ?d (d ÐIq¨ @  y®€à¨?d hd RØfv @  y¯€á¨?d ¨d cÐèµ @  y°€â¨?d èd áAÿk @  y±€ã¨?d (e u‹Ý| @  y²€ä¨?d he ÷Ê¢ @  y³€å¨?d ¨e `HÞ @  y´€æ¨?d èe âÙÉÈ @  yµ€ç¨?d (f £$Ñ @  y¶€è¨?d hf !ž3 @  y·€é¨?d ¨f ½7ƒ, @  y¸€ê¨?d èf ?¦”ò @  y¹€ë¨?d (g «l¶å @  yº€ì¨?d hg )ý¡; @  y»€í¨?d ¨g ¾¯µ @  y¼€î¨?d èg <>¢Q @  y½€ï¨?d (h ±x @  y¾€ð¨?d hh 3’¦ @  y¿€ñ¨?d ¨h ½›¹G @  yÀ€ò¨?d èh ? ®™ @  yÁ€ó¨?d (i «ÀŒŽ @  y€ô¨?d hi )Q›P @  yÀõ¨?d ¨i ¾ä @  yÄ€ö¨?d èi <’˜: @  yÅ€÷¨?d (j }Du# @  yÆ€ø¨?d hj ÿÕbý @  yÇ€ù¨?d ¨j c|ÒÞ @  yÈ€ú¨?d èj áíÅ @  yÉ€û¨?d (k u'ç @  yÊ€ü¨?d hk ÷¶ðÉ @  yË€ý¨?d ¨k `ää} @  yÌ€þ¨?d èk âuó£ @  yÍ€ÿ¨?d (l M¿Ë @  y΀©?d hl Ï. @  yÏ€©?d ¨l þ&›Ö @  yЀ©?d èl |·Œ @  yÑ€©?d (m è}® @  yÒ€©?d hm jì¹Á @  yÓ€©?d ¨m ý¾­u @  yÔ€©?d èm /º« @  yÕ€©?d (n >ùW² @  yÖ€©?d hn ¼h@l @  y×€ ©?d ¨n  ÁðO @  yØ€ ©?d èn ¢Pç‘ @  yÙ€ ©?d (o 6šÅ† @  yÚ€ ©?d ho ´ ÒX @  yÛ€ ©?d ¨o #YÆì @  yÜ€©?d èo ¡ÈÑ2 @  yÝ€©?d (p ¦ÔB´ @  yÞ€©?d hp $EUj @  y߀©?d ¨p Kü @  yà€©?d èp †ÚëÇ @  yဩ?d (q ÉÐ @  y
?d€ hq QÆ) @  z€©?d ¨q 'Õu“ @  z€©?d èq ¥DbM @  z€©?d (r !Ût¹ @  z€©?d hr £Jcg @  z€©?d ¨r ñQŒ> @  z€©?d èr sÀ›à @  z€©?d (s )¸æ @  z€©?d hs «)ñS @  z €©?d ¨s ù2  @  z €©?d ès {£ Ô @  z €©?d (t ƒÑÞ @  z € ©?d ht @ @  z €!©?d ¨t S[ïY @  z€"©?d èt ÑÊø‡ @  z€#©?d (u &»  @  z€$©?d hu ¤‚¬Ô @  z€%©?d ¨u ö™C @  z€&©?d èu tTS @  z€'©?d (v ð—B§ @  z€(©?d hv rUy @  z€)©?d ¨v  º  @  z€*©?d èv ¢Œ­þ @  z€+©?d (w øôГ @  z€,©?d hw zeÇM @  z€-©?d ¨w (~( @  z€.©?d èw ªï?Ê @  z€/©?d (x â›g @  z€0©?d hx ` pÐ @  z€1©?d ¨x 2Ÿ‰ @  z€2©?d èx °€ˆW @  z€3©?d (y V_ìj @  z €4©?d hy ÔÎû´ @  z!€5©?d ¨y †Õí @  z"€6©?d èy D3 @  z#€7©?d (z €ÛÇ @  z$€8©?d hz J @  z%€9©?d ¨z PQí@ @  z&€:©?d èz ÒÀúž @  z'€;©?d ({ ˆ¸‡ó @  z(€<©?d h{  )- @  z)€=©?d ¨{ X2t @  z*€>©?d è{ Ú£hª @  z+€?©?d (| Òc± @  z,€@©?d h| Pto @  z-€A©?d ¨|  ›6 @  z.€B©?d è| €šŒè @  z/€C©?d (} wCÏe @  z0€D©?d h} õÒØ» @  z1€E©?d ¨} §É7â @  z2€F©?d è} %X < @  z3€G©?d (~ ¡Ç6È @  z4€H©?d h~ #V! @  z5€I©?d ¨~ qMÎO @  z6€J©?d è~ óÜÙ‘ @  z7€K©?d ( ©¤¤ü @  z8€L©?d h +5³" @  z9€M©?d ¨ uЀ 'y.\{ @  z:€N©?d è û¿K¥ @  z;€O©?d @€ éŠ} @  z<€P©?d €€ Éö @  z=€Q©?d À€ 9… @  z>€R©?d éH g @  z?€S©?d @ óIðþ @  z@€T©?d € Ó¼ò @  zA€U©?d À #Ãy @  zB€V©?d ‚ ¾‡¨¸ @  zC€W©?d @‚ %Í S @  zD€X©?d €‚ 8 ­ @  zE€Y©?d À‚ õGñÔ @  zF€Z©?d ƒ %}< @  zG€[©?d @ƒ -®›g @  zH€\©?d €ƒ  [™™ @  zI€]©?d Àƒ ý$cà @  zJ€^©?d „ äjï @  zK€_©?d @„ ‡Çj4 @  zL€`©?d €„ §2hÊ @  zM€a©?d À„ WM’³ @  zN€b©?d … ‡[ @  zO€c©?d @… "Æà @  zP€d©?d €… ðÄ @  zQ€e©?d À… ò>g @  zR€f©?d † oËž¦ @  zS€g©?d @† ô?M @  zT€h©?d €† Ôt=³ @  zU€i©?d À† $ ÇÊ @  zV€j©?d ‡ ôCK" @  zW€k©?d @‡ üâ­y @  zX€l©?d €‡ ܯ‡ @  zY€m©?d À‡ ,hUþ @  zZ€n©?d ˆ —Ùã @  z[€o©?d @ˆ æä @  z\€p©?d €ˆ Æx @  z]€q©?d Àˆ 6âc @  z^€r©?d ‰ æOn‹ @  z_€s©?d @‰ RI‘€ @  z`€t©?d €‰ r¼“~ @  za€u©?d À‰ ‚Ãi @  zb€v©?d Š ‡ÉÆ @  zc€w©?d @Š „Íh- @  zd€x©?d €Š ¤8jÓ @  ze€y©?d ÀŠ TGª @  zf€z©?d ‹ „B @  zg€{©?d @‹ Œ®ú @  zh€|©?d €‹ ¬[øç @  zi€}©?d À‹ \$ž @  zj€~©?d Œ Ejñ‘ @  zk€©?d @Œ ËQJÉ @  zl€€©?d €Œ ë¤H7 @  zm€©?d ÀŒ Û²N @  zn€‚©?d Ë“>¦ @  zo€ƒ©?d @ n“æ @  zp€„©?d € Nfäã @  zq€…©?d À ¾š @  zr€†©?d Ž #]¾[ @  zs€‡©?d @Ž ¸° @  zt€ˆ©?d €Ž ˜âN @  zu€‰©?d ÀŽ hç7 @  zv€Š©?d ¸Õkß @  zw€‹©?d @ °t„ @  zx€Œ©?d € z @  zy€©?d À `þu @  zz€Ž©?d Þ É± @  z{€©?d @  : ¶ @  z|€©?d € ÏH @  z}€‘©?d À ð°ò1 @  z~€’©?d ‘  ø~Ù @  z€“©?d @‘ Ù¯·q @  z€€”©?d €‘ ùZµ @  z€•©?d À‘  %Oö @  z‚€–©?d ’ ”aï7 @  zƒ€—©?d @’ +NÜ @  z„€˜©?d €’ /ÞL" @  z…€™©?d À’ ß¡¶[ @  z†€š©?d “ é:³ @  z‡€›©?d @“ HÜè @  zˆ€œ©?d €“ '½Þ @  z‰€©?d À“ ×Â$o @  zŠ€ž©?d ” ÎŒ×` @  z‹€Ÿ©?d @” ­!-» @  zŒ€ ©?d €” Ô/E @  z€¡©?d À” }«Õ< @  zŽ€¢©?d • ­ãYÔ @  z€£©?d @• ão @  z€¤©?d €• (ƒ‘ @  z‘€¥©?d À• Øiyè @  z’€¦©?d – E-Ù) @  z“€§©?d @– Þgx @  z”€¨©?d €– þ’z< @  z•€©©?d À– í€E @  z–€ª©?d — Þ¥ ­ @  z—€«©?d @— Öêö @  z˜€¬©?d €— öñè @  z™€­©?d À— Žq @  zš€®©?d ˜ 2qžl @  z›€¯©?d @˜ Ìk]k @  zœ€°©?d €˜ ìž_• @  z€±©?d À˜ á¥ì @  zž€²©?d ™ Ì©) @  zŸ€³©?d @™ x¯Ö @  z €´©?d €™ XZÔñ @  z¡€µ©?d À™ ¨%.ˆ @  z¢€¶©?d š 5aŽI @  z£€·©?d @š ®+/¢ @  z¤€¸©?d €š ŽÞ-\ @  z¥€¹©?d Àš ~¡×% @  z¦€º©?d › ®é[Í @  z§€»©?d @› ¦H½– @  z¨€¼©?d €› †½¿h @  z©€½©?d À› vÂE @  zª€¾©?d œ oŒ¶ @  z«€¿©?d @œ üqYÔ @  z¬€À©?d €œ Ü„[* @  z­€Á©?d Àœ ,û¡S @  z®€©?d ü³-» @  z¯€é?d @ Y³õ @  z°€Ä©?d € yF÷þ @  z±€Å©?d À ‰9 ‡ @  z²€Æ©?d ž }­F @  z³€Ç©?d @ž 7 ­ @  z´€È©?d €ž ¯ÂS @  zµ€É©?d Àž _½ô* @  z¶€Ê©?d Ÿ õx @  z·€Ë©?d @Ÿ ‡Tž™ @  z¸€Ì©?d €Ÿ §¡œg @  z¹€Í©uР ?d ÀŸ WÞf @  zº€Ω?d   &Õ¸x @  z»€Ï©?d X  ØÏ{ @  z¼€Щ?d ˜  ø:y @  z½€Ñ©?d Ø  Eƒø @  z¾€Ò©?d ¡ Ø  @  z¿€Ó©?d X¡  ö‰ @  zÀ€Ô©?d ˜¡ âùôw @  zÁ€Õ©?d Ø¡ † @  z€Ö©?d ¢ ®Ï @  zÀש?d X¢ ˆ$ @  zĀة?d ˜¢ 4} Ú @  zÅ€Ù©?d Ø¢ Ä÷£ @  zÆ€Ú©?d £ J{K @  zÇ€Û©?d X£ ë @  zȀܩ?d ˜£ <Ÿî @  zɀݩ?d Ø£ Ìae— @  zÊ€Þ©?d ¤ Õ/–˜ @  zˀߩ?d X¤ ¶‚lC @  zÌ€à©?d ˜¤ –wn½ @  zÍ€á©?d ؤ f”Ä @  z΀â©?d ¥ ¶@, @  zÏ€ã©?d X¥ @À— @  zЀä©?d ˜¥ 3µÂi @  zÑ€å©?d Ø¥ ÃÊ8 @  zÒ€æ©?d ¦ ^Ž˜Ñ @  zÓ€ç©?d X¦ ÅÄ9: @  zÔ€è©?d ˜¦ å1;Ä @  zÕ€é©?d ئ NÁ½ @  zÖ€ê©?d § ÅMU @  z×€ë©?d X§ ͧ« @  zØ€ì©?d ˜§ íR©ð @  zÙ€í©?d ا -S‰ @  zÚ€î©?d ¨ )Òß” @  zÛ€ï©?d X¨ ×È“ @  zÜ€ð©?d ˜¨ ÷=m @  zÝ€ñ©?d ب Bä @  zÞ€ò©?d © × hü @  z߀ó©?d X© c —÷ @  zà€ô©?d ˜© Cù•  @  zá€õ©?d Ø© ³†op @  zâ€ö©?d€ ª ZÓ @  {€÷©?d Xª  :Õ @  {€ø©?d ˜ª ÿ8+ @  {€ù©?d ت 5É9¿ @  {€ú©?d « åµW @  {€û©?d X« #’ v @  {€ü©?d ˜« gˆ @  {€ý©?d Ø« =ª«‹ @  {€þ©?d ¬ $äX„ @  { €ÿ©?d X¬ ¢Óx @  { €ª?d ˜¬ ‚&zæ @  { €ª?d ج ·{r @  { €ª?d ­ gX÷š @  { €ª?d X­ ¡KN» @  {€ª?d ˜­ ¾LE @  {€ª?d Ø­ Òצ @  {€ª?d ® –wg @  {€ª?d X® Ñ•-a @  {€ª?d ˜® ñ`/Ÿ @  {€ ª?d Ø® ÄV.  @  {€ ª?d ¯ ¢ã @  {€ ª?d X¯ Ò Â @  {€ ª?d ˜¯ òø< @  {€ ª?d د Ì5¼? @  {€ª?d ° rë @  {€ª?d X° I¸8g @  {€ª?d ˜° iM:™ @  {€ª?d ذ \{;  @  {€ª?d ± Œ3·å @  {€ª?d X± J Ä @  {€ª?d ˜± jÕ : @  {€ª?d ر è¿°i @  { €ª?d ² uû¨ @  {!€ª?d X² +øJ® @  {"€ª?d ˜²  HP @  {#€ª?d ز >;IÄ @  {$€ª?d ³ îsÅ, @  {%€ª?d X³ (`|  @  {&€ª?d ˜³ •~ó @  {'€ª?d س 6XÛð @  {(€ª?d ´ /(ÿ @  {)€ª?d X´ ‰ò)É @  {*€ ª?d ˜´ ©+7 @  {+€!ª?d Ø´ œ1*£ @  {,€"ª?d µ Ly¦K @  {-€#ª?d Xµ Šjj @  {.€$ª?d ˜µ ªŸ” @  {/€%ª?d ص 9ó†w @  {0€&ª?d ¶ ¤·&¶ @  {1€'ª?d X¶ ú´|° @  {2€(ª?d ˜¶ ÚA~N @  {3€)ª?d ض ïwÚ @  {4€*ª?d · ??ó2 @  {5€+ª?d X· ù,J @  {6€,ª?d ˜· ÙÙHí @  {7€-ª?d Ø· çíî @  {8€.ª?d ¸ Óëaó @  {9€/ª?d X¸ è¸Y @  {:€0ª?d ˜¸ ÈM[ç @  {;€1ª?d ظ ý{Zs @  {<€2ª?d ¹ -3Ö› @  {=€3ª?d X¹ ë oº @  {>€4ª?d ˜¹ ËÕmD @  {?€5ª?d ع ç¸×… @  {@€6ª?d º züwD @  {A€7ª?d Xº $ÿ-B @  {B€8ª?d ˜º  /¼ @  {C€9ª?d غ 1<.( @  {D€:ª?d » át¢À @  {E€;ª?d X» 'gá @  {F€<ª?d ˜» ’ @  {G€=ª?d Ø» 9_¼ @  {H€>ª?d ¼  O @  {I€?ª?d X¼ v¥[4 @  {J€@ª?d ˜¼ VPYÊ @  {K€Aª?d ؼ cfX^ @  {L€Bª?d ½ ³.Ô¶ @  {M€Cª?d X½ u=m— @  {N€Dª?d ˜½ UÈoi @  {O€Eª?d ؽ ƤôŠ @  {P€Fª?d ¾ [àTK @  {Q€Gª?d X¾ ãM @  {R€Hª?d ˜¾ % ³ @  {S€Iª?d ؾ  ' @  {T€Jª?d ¿ ÀhÏ @  {U€Kª?d X¿ {8î @  {V€Lª?d ˜¿ &Ž: @uÐÀ   {W€Mª?d Ø¿ CŸ @  {X€Nª?d 0À |³ÎA @  {Y€Oª?d pÀ Gàö« @  {Z€Pª?d °À gôU @  {[€Qª?d ðÀ R#õÁ @  {\€Rª?d 0Á ‚ky) @  {]€Sª?d pÁ DxÀ @  {^€Tª?d °Á dÂö @  {_€Uª?d ðÁ æç~¥ @  {`€Vª?d 0 {£Þd @  {a€Wª?d p % „b @  {b€Xª?d °Â U†œ @  {c€Yª?d ð 0c‡ @  {d€Zª?d 0à à+ à @  {e€[ª?d pà &8²Á @  {f€\ª?d °Ã Ͱ? @  {g€]ª?d ðà 8< @  {h€^ª?d 0Ä !Næ3 @  {i€_ª?d pÄ ‡ªç @  {j€`ª?d °Ä §_åû @  {k€aª?d ðÄ ’iäo @  {l€bª?d 0Å B!h‡ @  {m€cª?d pÅ „2Ѧ @  {n€dª?d °Å ¤ÇÓX @  {o€eª?d ðÅ 7«H» @  {p€fª?d 0Æ ªïèz @  {q€gª?d pÆ ôì²| @  {r€hª?d °Æ Ô°‚ @  {s€iª?d ðÆ á/± @  {t€jª?d 0Ç 1g=þ @  {u€kª?d pÇ ÷t„ß @  {v€lª?d °Ç ׆! @  {w€mª?d ðÇ éL#" @  {x€nª?d 0È ݳ¯? @  {y€oª?d pÈ æà—Õ @  {z€pª?d °È Æ•+ @  {{€qª?d ðÈ ó#”¿ @  {|€rª?d 0É #kW @  {}€sª?d pÉ åx¡v @  {~€tª?d °É Å£ˆ @  {€uª?d ðÉ  ¶)x @  {€€vª?d 0Ê —ò‰¹ @  {€wª?d pÊ ÉñÓ¿ @  {‚€xª?d °Ê éÑA @  {ƒ€yª?d ðÊ Ü2ÐÕ @  {„€zª?d 0Ë  z\= @  {…€{ª?d pË Êiå @  {†€|ª?d °Ë êœçâ @  {‡€}ª?d ðË ÔQBá @  {ˆ€~ª?d 0Ì Í±î @  {‰€ª?d pÌ †mñ[ @  {Š€€ª?d °Ì ¦˜ó¥ @  {‹€ª?d ðÌ “®ò1 @  {Œ€‚ª?d 0Í Cæ~Ù @  {€ƒª?d pÍ …õÇø @  {Ž€„ª?d °Í ¥Å @  {€…ª?d ðÍ 6l^å @  {€†ª?d 0Î «(þ$ @  {‘€‡ª?d pÎ õ+¤" @  {’€ˆª?d °Î ÕÞ¦Ü @  {“€‰ª?d ðÎ àè§H @  {”€Šª?d 0Ï 0 +  @  {•€‹ª?d pÏ ö³’ @  {–€Œª?d °Ï ÖF @  {—€ª?d ðÏ è‹5| @  {˜€Žª?d 0Ð VU‰Î @  {™€ª?d pÐ m±$ @  {š€ª?d °Ð Mó³Ú @  {›€‘ª?d ðÐ xŲN @  {œ€’ª?d 0Ñ ¨>¦ @  {€“ª?d pÑ nž‡‡ @  {ž€”ª?d °Ñ Nk…y @  {Ÿ€•ª?d ðÑ Ì9* @  { €–ª?d 0Ò QE™ë @  {¡€—ª?d pÒ FÃí @  {¢€˜ª?d °Ò /³Á @  {£€™ª?d ðÒ …À‡ @  {¤€šª?d 0Ó ÊÍLo @  {¥€›ª?d pÓ  ÞõN @  {¦€œª?d °Ó ,+÷° @  {§€ª?d ðÓ æR³ @  {¨€žª?d 0Ô  ¨¡¼ @  {©€Ÿª?d pÔ ­L Š @  {ª€ ª?d °Ô ¹¢t @  {«€¡ª?d ðÔ ¸£à @  {¬€¢ª?d 0Õ hÇ/ @  {­€£ª?d pÕ ®Ô–) @  {®€¤ª?d °Õ Ž!”× @  {¯€¥ª?d ðÕ M4 @  {°€¦ª?d 0Ö € ¯õ @  {±€§ª?d pÖ Þ õó @  {²€¨ª?d °Ö þÿ÷  @  {³€©ª?d ðÖ ËÉö™ @  {´€ªª?d 0× zq @  {µ€«ª?d p× Ý’ÃP @  {¶€¬ª?d °× ýgÁ® @  {·€­ª?d ð× êd­ @  {¸€®ª?d 0Ø ÷Uè° @  {¹€¯ª?d pØ ÌÐZ @  {º€°ª?d °Ø ìóÒ¤ @  {»€±ª?d ðØ ÙÅÓ0 @  {¼€²ª?d 0Ù  _Ø @  {½€³ª?d pÙ Ïžæù @  {¾€´ª?d °Ù ïkä @  {¿€µª?d ðÙ Ã^Æ @  {À€¶ª?d 0Ú ^Bþ @  {Á€·ª?d pÚ A¤ @  {€¸ª?d °Ú  ´¦ÿ @  {À¹ª?d ðÚ ‚§k @  {Ä€ºª?d 0Û ÅÊ+ƒ @  {Å€»ª?d pÛ Ù’¢ @  {Æ€¼ª?d °Û #,\ @  {Ç€½ª?d ðÛ á5_ @  {È€¾ª?d 0Ü ¯ÆP @  {É€¿ª?d pÜ RÒw @  {Ê€Àª?d °Ü rîЉ @  {Ë€Áª?d ðÜ GØÑ @  {Ì€ª?d 0Ý —]õ @  {Í€ê?d pÝ QƒäÔ @  {΀Ī?d °Ý qvæ* @  {Ï€Ū?d ðÝ â}É @  {Ѐƪ?d 0Þ ^Ý @  {Ñ€Ǫ?d pÞ !]‡ @  {Ò€Ȫ?d °Þ ¨…ð @  {Ó€ɪ?d ðÞ 4ž„d @  {Ô€ʪ?d 0ß äÖŒ @  {Õ€˪?d pß "ű­ @  {Ö€̪?d uÐà /°ß 0³S @  {×€ͪ?d ðß <ýP @  {Ø€Ϊ?d Hà %YH¦ @  {Ù€Ϫ?d ˆà ¼nel @  {Ú€Ъ?d Èà >ÿr² @  {Û€Ѫ?d á Yè @  {Ü€Òª?d Há ÛÿÎ @  {Ý€Óª?d ˆá ¿öSÏ @  {Þ€Ôª?d Èá =gD @  {߀Õª?d â  ØO] @  {à€Öª?d Hâ "IXƒ @  {á€ת?d ˆâ Þ.¥ @  {â€ت?d€ Èâ Úé¨Â @  |€Ùª?d ã \GzI @  |€Úª?d Hã ÞÖm— @  |€Ûª?d ˆã hI @  |ܪ?d Èã €ù^Ù @  |ݪ?d ä ëY@q @  |Þª?d Hä iÈW¯ @  |ߪ?d ˆä £úà @  |àª?d Èä !k  @  | áª?d å ƒÍjR @  | âª?d Hå \}Œ @  | ãª?d ˆå  b*` @  | äª?d Èå "ó=¾ @  | åª?d æ ÍYpØ @  |æª?d Hæ OÈg @  |çª?d ˆæ мIº @  |èª?d Èæ R-^d @  |éª?d ç ð‹?+ @  |êª?d Hç r(õ @  |ëª?d ˆç Ó$ @  |ìª?d Èç QµhÇ @  |íª?d è ¤ } @  |îª?d Hè •5£ @  |ïª?d ˆè °l @  |ðª?d Èè @!{Í @  |ñª?d é ⇂ @  |òª?d Hé ` \ @  |óª?d ˆé Á(Z° @  |ôª?d Èé C¹Mn @  |õª?d ê ¬ @  |öª?d Hê .‚Ö @  |÷ª?d ˆê  ðÚ @  | øª?d Èê "a  @  |!ùª?d ë €ÇhK @  |"úª?d Hë V• @  |#ûª?d ˆë £h(y @  |$üª?d Èë !ù?§ @  |%ýª?d ì JY! @  |&þª?d Hì ÈÈ6Ñ @  |'ÿª?d ˆì  i2 @  |(«?d Èì š~ì @  |)«?d í °<£ @  |*«?d Hí 2­} @  |+«?d ˆí ““_‘ @  |,«?d Èí HO @  |-«?d î þ¨) @  |.«?d Hî |9÷ @  |/«?d ˆî ãM“ @  |9«?d ñ [W_Ü @  |:«?d Hñ ÙÆH @  |;«?d ˆñ xøî @  |<«?d Èñ úi0 @  |=«?d ò ÃEV @  |>«?d Hò —RRˆ @  |?«?d ˆò ·'] @  |@«?d Èò 5¶JÈ @  |A«?d ó —+‡ @  |B«?d Hó q @  |H «?d Èô —¼)¯ @  |I!«?d õ 5Hà @  |J"«?d Hõ ·‹_> @  |K#«?d ˆõ µÒ @  |L$«?d Èõ ”$  @  |M%«?d ö {ŽRj @  |N&«?d Hö ùE´ @  |O'«?d ˆö fkk @  |P(«?d Èö äú|Ö @  |Q)«?d ÷ F\™ @  |R*«?d H÷ ÄÍ G @  |S+«?d ˆ÷ eó]« @  |T,«?d È÷ çbJu @  |U-«?d ø ¡s+Ï @  |V.«?d Hø #â< @  |W/«?d ˆø tgN¡ @  |X0«?d Èø ööY @  |Y1«?d ù TP80 @  |Z2«?d Hù ÖÁ/î @  |[3«?d ˆù wÿx @  |\4«?d Èù õnoÜ @  |]5«?d ú Ä"º @  |^6«?d Hú ˜U5d @  |_7«?d ˆú '«?d Hü ~c @  |g?«?d ˆü D}J @  |h@«?d Èü Æì]À @  |iA«?d ý dJ< @  |jB«?d Hý æÛ+Q @  |kC«?d ˆý Gå|½ @  |lD«?d Èý Åtkc @  |mE«?d þ *Þ& @  |nF«?d Hþ ¨O1Û @  |oG«?d ˆþ 7;g @  |pH«?d Èþ µª¹ @  |qI«?d ÿ  iö @  |rJ«?d Hÿ •~( @  |sK«?d ˆÿ 4£)Ä @  |tuÐ L«?d Èÿ ¶2> @  |uM«?d À-›ª @  |vN«?d ` B¼Œt @  |wO«?d   9þÄ @  |xP«?d à —¨é @  |yQ«?d  5ˆU @  |zR«?d ` ·ŸŸ‹ @  |{S«?d   ¡Èg @  ||T«?d à ”0ß¹ @  |}U«?d  {š’ß @  |~V«?d ` ù … @  |W«?d   :(º® @  |€X«?d à ¸¹­p @  |Y«?d  Ì? @  |‚Z«?d ` ˜ŽÛá @  |ƒ[«?d   9°Œ  @  |„\«?d à »!›Ó @  |…]«?d  Ð…{ @  |†^«?d ` R’¥ @  |‡_«?d   ˜"ÙÉ @  |ˆ`«?d à ³Î @  |‰a«?d  ¸¯X @  |Šb«?d ` :„¸† @  |‹c«?d   ›ºïj @  |Œd«?d à +ø´ @  |e«?d  öµÒ @  |Žf«?d ` t¢  @  |g«?d   ëdŒ° @  |h«?d à iõ›n @  |‘i«?d  ËSú! @  |’j«?d ` IÂíÿ @  |“k«?d   èüº @  |”l«?d à jm­Í @  |•m«?d  ,|Ìw @  |–n«?d ` ®íÛ© @  |—o«?d   ùh© @  |˜p«?d à {ù¾Ç @  |™q«?d Ù_߈ @  |šr«?d ` [ÎÈV @  |›s«?d   ú🺠@  |œt«?d à xaˆd @  |u«?d —ËÅ @  |žv«?d ` ZÒÜ @  |Ÿw«?d   ›(ÛÐ @  | x«?d à ¹Ì @  |¡y«?d »­A @  |¢z«?d ` 9ŽºŸ @  |£{«?d   ˜°ís @  |¤|«?d à !ú­ @  |¥}«?d qä @  |¦~«?d ` óóÛ @  |§«?d   Ô´ù4 @  |¨€«?d à V%îê @  |©«?d ôƒ¥ @  |ª‚«?d ` v˜{ @  |«ƒ«?d   ×,Ï— @  |¬„«?d à U½ØI @  |­…«?d  º•/ @  |®†«?d ` 8†‚ñ @  |¯‡«?d   §ò¬M @  |°ˆ«?d à %c»“ @  |±‰«?d  ‡ÅÚÜ @  |²Š«?d ` TÍ @  |³‹«?d   ¤jšî @  |´Œ«?d à &û0 @  |µ«?d  êËÜ% @  |¶Ž«?d ` hZËû @  |·«?d   ?ß¹K @  |¸«?d à ½N®• @  |¹‘«?d  èÏÚ @  |º’«?d ` yØ @  |»“«?d   ¬_ @  |Û«?d   ðû³ @  |Äœ«?d à r‘ìm @  |Å«?d  1òÅ @  |Æž«?d ` › å @  |ÇŸ«?d   Q’®w @  |È «?d à Ó¹© @  |É¡«?d  q¥Øæ @  |Ê¢«?d ` ó4Ï8 @  |Ë£«?d   R ˜Ô @  |̤«?d à Л  @  |Í¥«?d  ?1Âl @  |Φ«?d ` ½ Õ² @  |ϧ«?d   "Ôû @  |Ш«?d à  EìÐ @  |Ñ©«?d  㟠@  |Òª«?d ` €ršA @  |Ó««?d   !LÍ­ @  |Ô¬«?d à £ÝÚs @  |Õ­«?d  åÌ»É @  |Ö®«?d ` g]¬ @  |ׯ«?d   0ØÞ§ @  |ذ«?d à ²IÉy @  |Ù±«?d  ï¨6 @  |Ú²«?d ` ’~¿è @  |Û³«?d   3@è @  |Ü´«?d à ±ÑÿÚ @  |ݵ«?d  ^{²¼ @  |Þ¶«?d ` Üê¥b @  |ß·«?d   R˜¬n @  |ห?d à Ð »° @  |ṫ?d  r¯Úÿ @  |⺫?d€ ` „ýч @  }»«?d   Ä‚ÎB @  }¼«?d à FÙœ @  }½«?d  èú<Ù @  }¾«?d ` jk+ @  }¿«?d   ž»* @  }À«?d à *=Þ @  }Á«?d  p>ë @  }«?d ` ò¯5 @  } ë?d   –ظ4 @  } Ä«?d à I¯ê @  } Å«?d  >ªa @  } Æ«?d ` ¼;¿ @  } Ç«?d   @\A™ @  }È«?d à ÂÍVG @  }É«?d  xV’ @  }Ê«?d ` éAL @  }Ë«?d   åžíMuÐ  @  }Ì«?d à gú“ @  }Í«?d 8 ¡£2¿ @  }Ϋ?d x #2%a @  }Ï«?d ¸ º« @  }Ы?d ø 8”u @  }Ñ«?d 8! T€!@ @  }Ò«?d x! Ö6ž @  }Ó«?d ¸! ²fšŸ @  }Ô«?d ø! 0÷A @  }Õ«?d 8" ;Ê @  }Ö«?d x" ˜…, @  }׫?d ¸" dâc2 @  }Ø«?d ø" æstì @  }Ù«?d 8# 6ÀS‰ @  } Ú«?d x# ´QDW @  }!Û«?d ¸# Ð&èV @  }"Ü«?d ø# R·ÿˆ @  }#Ý«?d 8$ ü^Í @  }$Þ«?d x$ ~Ï  @  }%ß«?d ¸$ zO @  }&à«?d ø$ øÞÛ @  }'á«?d 8% ”Ê0î @  }(â«?d x% ['0 @  })ã«?d ¸% r,‹1 @  }*ä«?d ø% ð½œï @  }+å«?d 8& Ú^*d @  },æ«?d x& XÏ=º @  }-ç«?d ¸& ¤¨rœ @  }.è«?d ø& &9eB @  }/é«?d 8' çŒe— @  }0ê«?d x' erI @  }1ë«?d ¸' jÞH @  }2ì«?d ø' ƒûÉ– @  }3í«?d 8( £SÁ @  }4î«?d x( ‚2D @  }5ï«?d ¸( iÕ @  }6ð«?d ø( ™”~  @  }7ñ«?d 8) õ€@> @  }8ò«?d x) wWà @  }9ó«?d ¸) fûá @  }:ô«?d ø) ‘÷ì? @  };õ«?d 8* »Z´ @  }<ö«?d x* 9…Mj @  }=÷«?d ¸* ÅâL @  }>ø«?d ø* Gs’ @  }?ù«?d 8+ 9Ç4e @  }@ú«?d x+ »V#» @  }Aû«?d ¸+ ß!º @  }Bü«?d ø+ ]°˜d @  }Cý«?d 8, óY}! @  }Dþ«?d x, qÈjÿ @  }Eÿ«?d ¸, Û°Uð @  }F¬?d ø, Y!B. @  }G¬?d 8- 55| @  }H¬?d x- ·¤kÅ @  }I¬?d ¸- ÓÓÇÄ @  }J¬?d ø- QBÐ @  }K¬?d 8. {¡f‘ @  }L¬?d x. ù0qO @  }M¬?d ¸. W>i @  }N¬?d ø. ‡Æ)· @  }O ¬?d 8/ Fs)b @  }P ¬?d x/ Äâ>¼ @  }Q ¬?d ¸/  •’½ @  }R ¬?d ø/ "…c @  }S ¬?d 80 +}/› @  }T¬?d x0 ©ì8E @  }U¬?d ¸0 0Û @  }V¬?d ø0 ²JQ @  }W¬?d 81 Þ^Ys @  }a¬?d ¸3 Zøõr @  }b¬?d ø3 Øi⬠@  }c¬?d 84 v€é @  }d¬?d x4 ô7 @  }e¬?d ¸4 ð‘! @  }f ¬?d ø4 rÿ @  }g!¬?d 85 -Ê @  }h"¬?d x5 œ…: @  }i#¬?d ¸5 øò– @  }j$¬?d ø5 zcË @  }k%¬?d 86 P€7@ @  }l&¬?d x6 Ò ž @  }m'¬?d ¸6 .vo¸ @  }n(¬?d ø6 ¬çxf @  }o)¬?d 87 mRx³ @  }p*¬?d x7 ïÃom @  }q+¬?d ¸7 ‹´Ãl @  }r,¬?d ø7  %Ô² @  }s-¬?d 88 Š}Nå @  }t.¬?d x8 ìY; @  }u/¬?d ¸8 ‘Ûtñ @  }v0¬?d ø8 Jc/ @  }w1¬?d 89 ^] @  }x2¬?d x9 ýÏJÄ @  }y3¬?d ¸9 ™¸æÅ @  }z4¬?d ø9 )ñ @  }{5¬?d 8: 1ÊG @  }|6¬?d x: ³[PN @  }}7¬?d ¸: O<h @  }~8¬?d ø: Í­¶ @  }9¬?d 8; POp @  }€:¬?d x; ÒÞ® @  };¬?d ¸; ¶©¢¯ @  }‚<¬?d ø; 48µq @  }ƒ=¬?d 8< šÑP4 @  }„>¬?d x< @Gê @  }…?¬?d ¸< ìFí @  }†@¬?d ø< nQ3 @  }‡A¬?d 8= o @  }ˆB¬?d x= €„xØ @  }‰C¬?d ¸= äóÔÙ @  }ŠD¬?d ø= fbà @  }‹E¬?d 8> LuŒ @  }ŒF¬?d x> ÎbR @  }G¬?d ¸> 2w-t @  }ŽH¬?d ø> °æ:ª @  }I¬?d 8? qS: @  }J¬?d x? óÂ-¡ @  }‘K¬?duÐ@ 7 ¸? —µ  @  }’L¬?d ø? $–~ @  }“M¬?d P@ a/: @  }”N¬?d @ AÚ8ö @  }•O¬?d Ð@ z‰ @  }–P¬?d A ªÁŒô @  }—Q¬?d PA ” )÷ @  }˜R¬?d A ´ù+  @  }™S¬?d ÐA rê’( @  }šT¬?d B ï®2é @  }›U¬?d PB Ú˜3} @  }œV¬?d B úm1ƒ @  }W¬?d ÐB ¤nk… @  }žX¬?d C t&çm @  }ŸY¬?d PC öL[> @  } Z¬?d C Ö¹YÀ @  }¡[¬?d ÐC ªàá @  }¢\¬?d D  äî @  }£]¬?d PD <Òz @  }¤^¬?d D '„ @  }¥_¬?d ÐD ºÃ² @  }¦`¬?d E j‹Z @  }§a¬?d PE TF8Y @  }¨b¬?d E t³:§ @  }©c¬?d ÐE ² ƒ† @  }ªd¬?d F /ä#G @  }«e¬?d PF Ò"Ó @  }¬f¬?d F :' - @  }­g¬?d ÐF d$z+ @  }®h¬?d G ´löà @  }¯i¬?d PG 'm  @  }°j¬?d G õoÞ @  }±k¬?d ÐG ÁæÖÿ @  }²l¬?d H õZâ @  }³m¬?d PH À/[v @  }´n¬?d H àÚYˆ @  }µo¬?d ÐH Û‰ab @  }¶p¬?d I  ÁíŠ @  }·q¬?d PI 5 H‰ @  }¸r¬?d I ùJw @  }¹s¬?d ÐI ÓêóV @  }ºt¬?d J N®S— @  }»u¬?d PJ {˜R @  }¼v¬?d J [mPý @  }½w¬?d ÐJ n û @  }¾x¬?d K Õ&† @  }¿y¬?d PK ùK<Ò @  }Àz¬?d K Ù¾>, @  }Á{¬?d ÐK ­‡  @  }Â|¬?d L ãt @  }Ã}¬?d PL 3Õu– @  }Ä~¬?d L  wh @  }Ŭ?d ÐL XR7Ý @  }Æ€¬?d M ˆ»5 @  }Ǭ?d PM ¶×6 @  }È‚¬?d M –"È @  }Ƀ¬?d ÐM P1¥é @  }Ê„¬?d N Íu( @  }Ë…¬?d PN øC¼ @  }̆¬?d N ضB @  }͇¬?d ÐN †µ\D @  }Έ¬?d O VýЬ @  }ω¬?d PO Å‘KO @  }ÐЬ?d O ådI± @  }Ñ‹¬?d ÐO #wð @  }ÒŒ¬?d P ©L" @  }Ó¬?d PP ¨ŸM¶ @  }Ôެ?d P ˆjOH @  }Õ¬?d ÐP ³9w¢ @  }Ö¬?d Q cqûJ @  }ב¬?d PQ ]¼^I @  }Ø’¬?d Q }I\· @  }Ù“¬?d ÐQ »Zå– @  }Ú”¬?d R &EW @  }Û•¬?d PR (Dà @  }Ü–¬?d R 3ÝF= @  }Ý—¬?d ÐR mÞ; @  }Þ˜¬?d S ½–Ó @  }ß™¬?d PS ?ü,€ @  }àš¬?d S  .~ @  }᛬?d ÐS Ù—_ @  }✬?d€ T “P @  ~¬?d PT ÕdÚí @  ~ž¬?d T õ‘Ø @  ~Ÿ¬?d ÐT –<"È @  ~ ¬?d U Ft®  @  ~¡¬?d PU ¶ TY @  ~¢¬?d U –þV§ @  ~£¬?d ÐU ž_°ü @  ~¤¬?d V = @  ~ ¥¬?d PV ódêD @  ~ ¦¬?d V Ó‘èº @  ~ §¬?d ÐV HÛIQ @  ~ ¨¬?d W ˜“Ź @  ~ ©¬?d PW hì?À @  ~ª¬?d W H=> @  ~«¬?d ÐW íå… @  ~¬¬?d X Ùæi˜ @  ~­¬?d PX )™“á @  ~®¬?d X  l‘ @  ~¯¬?d ÐX ÷vR @  ~°¬?d Y '>Þð @  ~±¬?d PY ×A$‰ @  ~²¬?d Y ÷´&w @  ~³¬?d ÐY ÿÀ, @  ~´¬?d Z bQ`í @  ~µ¬?d PZ ’.š” @  ~¶¬?d Z ²Û˜j @  ~·¬?d ÐZ )‘9 @  ~¸¬?d [ ùÙµi @  ~¹¬?d P[  ¦O @  ~º¬?d [ )SMî @  ~»¬?d Ð[ U²å @  ~ ¼¬?d \ „Aê @  ~!½¬?d P\ td»“ @  ~"¾¬?d \ T‘¹m @  ~#¿¬?d Ð\ ÇlV§ @  ~$À¬?d ] $ÚO @  ~%Á¬?d P] ç[ 6 @  ~&¬?d ] Ç®"È @  ~'ì?d Ð] ÏÄ“ @  ~(Ĭ?d ^ RKdR @  ~)Ŭ?d P^ ¢4ž+ @  ~*Ƭ?d ^ ‚ÁœÕ @  ~+Ǭ?d Ð^ ‹=> @  ~,Ȭ?d _ ÉñÖ @  ~-ɬ?d P_ 9¼K¯ @  ~.ʬ?d _ IIQ @  ~uÐ` /ˬ?d Ð_ ¼I‘ê @  ~0̬?d (` ±$r @  ~1ͬ?d h` òÎÞ  @  ~2ά?d ¨` Ò;Üõ @  ~3Ϭ?d è` ,!ò @  ~4Ь?d (a üi“ @  ~5Ѭ?d ha  ic @  ~6Ò¬?d ¨a ,ãk @  ~7Ó¬?d èa $BÆ @  ~8Ô¬?d (b ¹- @  ~9Õ¬?d hb Iy×~ @  ~:Ö¬?d ¨b iŒÕ€ @  ~;׬?d èb òÆtk @  ~<ج?d (c "Žøƒ @  ~=Ù¬?d hc Òñú @  ~>Ú¬?d ¨c ò @  ~?Û¬?d èc èù @  ~@ܬ?d (d ñK ’ @  ~Aݬ?d hd 4ðë @  ~BÞ¬?d ¨d !Áò @  ~C߬?d èd BlÎ @  ~Dà¬?d (e ’$„& @  ~Eá¬?d he b[~_ @  ~Fâ¬?d ¨e B®|¡ @  ~Gã¬?d èe Jšú @  ~Hä¬?d (f ×K:; @  ~Iå¬?d hf '4ÀB @  ~Jæ¬?d ¨f Á¼ @  ~Kç¬?d èf œ‹cW @  ~Lè¬?d (g LÃï¿ @  ~Mé¬?d hg ¼¼Æ @  ~Nê¬?d ¨g œI8 @  ~Oë¬?d èg 9Iσ @  ~Pì¬?d (h  ¶Cž @  ~Qí¬?d hh ýɹç @  ~Rî¬?d ¨h Ý<» @  ~Sï¬?d èh #&x @  ~Tð¬?d (i ónôö @  ~Uñ¬?d hi  @  ~Vò¬?d ¨i #ä q @  ~Wó¬?d èi +Eê* @  ~Xô¬?d (j ¶Jë @  ~Yõ¬?d hj F~°’ @  ~Zö¬?d ¨j f‹²l @  ~[÷¬?d èj ýÁ‡ @  ~\ø¬?d (k -‰Ÿo @  ~]ù¬?d hk Ýöe @  ~^ú¬?d ¨k ýgè @  ~_û¬?d èk I˜ã @  ~`ü¬?d (l PKkì @  ~aý¬?d hl  4‘• @  ~bþ¬?d ¨l €Á“k @  ~cÿ¬?d èl q}? @  ~d­?d (m ¡Õñ× @  ~e­?d hm Qª ® @  ~f­?d ¨m q_ P @  ~g­?d èm yþï  @  ~h­?d (n äºOÊ @  ~i­?d hn ŵ³ @  ~j­?d ¨n 40·M @  ~k­?d èn ¯z¦ @  ~l­?d (o 2šN @  ~m ­?d ho M`7 @  ~n ­?d ¨o ¯¸bÉ @  ~o ­?d èo  ¸ºr @  ~p ­?d (p ´fÀ @  ~q ­?d hp Dü¹ @  ~r­?d ¨p dìþG @  ~s­?d èp šö=@ @  ~t­?d (q J¾±¨ @  ~u­?d hq ºÁKÑ @  ~v­?d ¨q š4I/ @  ~w­?d èq ’•¯t @  ~x­?d (r ѵ @  ~y­?d hr ÿ®õÌ @  ~z­?d ¨r ß[÷2 @  ~{­?d èr DVÙ @  ~|­?d (s ”YÚ1 @  ~}­?d hs d& H @  ~~­?d ¨s DÓ"¶ @  ~­?d ès ½„ë @  ~€­?d (t ¤Ê @  ~­?d ht Tµâh @  ~‚­?d ¨t t@à– @  ~ƒ­?d èt íM @  ~„ ­?d (u Ç¥–¥ @  ~…!­?d hu 7ÚlÜ @  ~†"­?d ¨u .è²÷ @  ~‡ #­?d èu &IT¬ @  ~ˆ $­?d (v » ôm @  ~‰ %­?d hv Kr @  ~Š &­?d ¨v k‡ ê @  ~‹ '­?d èv ðÍ­ @  ~Œ (­?d (w  …!é @  ~ )­?d hw ÐúÛ @  ~Ž *­?d ¨w ðÙn @  ~ +­?d èw UÕ @  ~ ,­?d (x aðÈ @  ~‘ -­?d hx ‘w± @  ~’ .­?d ¨x ±zuO @  ~“ /­?d èx O`¶H @  ~” 0­?d (y Ÿ(:  @  ~• 1­?d hy oWÀÙ @  ~– 2­?d ¨y O¢Â' @  ~— 3­?d èy G$| @  ~˜ 4­?d (z ÚG„½ @  ~™ 5­?d hz *8~Ä @  ~š 6­?d ¨z  Í|: @  ~› 7­?d èz ‘‡ÝÑ @  ~œ 8­?d ({ AÏQ9 @  ~ 9­?d h{ ±°«@ @  ~ž :­?d ¨{ ‘E©¾ @  ~Ÿ ;­?d è{ %CVµ @  ~  <­?d (| < ¥º @  ~¡ =­?d h| Ìr_à @  ~¢ >­?d ¨| ì‡]= @  ~£ ?­?d è| z²÷ @  ~¤ @­?d (} ¯2> @  ~¥ A­?d h} _MÄf @  ~¦ B­?d ¨} ¸Æ˜ @  ~§ C­?d è} w à @  ~¨ D­?d (~ ê]€ @  ~© E­?d h~ "z{ @  ~ª F­?d ¨~ :×x… @  ~« G­?d è~ ¡Ùn @  ~¬ H­?d ( qÕU† @  ~­ I­?d h ª¯ÿ @  ~® J­?d ¨ uЀ '¡_­ @  ~¯ K­?d è _uº @  ~° L­?d @€ já—Î @  ~± M­?d €€ 8úx— @  ~² N­?d À€ ºkoI @  ~³ O­?d ¨7x @  ~´ P­?d @ ”9 ¦ @  ~µ Q­?d € Æ"Ïÿ @  ~¶ R­?d À D³Ø! @  ~· S­?d ‚ Slje @  ~¸ T­?d @‚ ÑVž» @  ~¹ U­?d €‚ ƒMqâ @  ~º V­?d À‚ Üf< @  ~» W­?d ƒ ÈO\á @  ~¼ X­?d @ƒ JÞK? @  ~½ Y­?d €ƒ Ťf @  ~¾ Z­?d Àƒ šT³¸ @  ~¿ [­?d „ Š®ð @  ~À \­?d @„ ™¹. @  ~Á ]­?d €„ ËVw @  ~ ^­?d À„ I‘A© @  ~à _­?d … xå D @  ~Ä `­?d @… út7š @  ~Å a­?d €… ¨oØÃ @  ~Æ b­?d À… *þÏ @  ~Ç c­?d † =ŠžY @  ~È d­?d @† ¿‰‡ @  ~É e­?d €† ífÞ @  ~Ê f­?d À† o‘q @  ~Ë g­?d ‡ ¦KÝ @  ~Ì h­?d @‡ $“\ @  ~Í i­?d €‡ vˆ³Z @  ~Î j­?d À‡ ô¤„ @  ~Ï k­?d ˆ çwçü @  ~Ð l­?d @ˆ eæð" @  ~Ñ m­?d €ˆ 7ý{ @  ~Ò n­?d Àˆ µl¥ @  ~Ó o­?d ‰ ¯P” @  ~Ô p­?d @‰ ›>GJ @  ~Õ q­?d €‰ É%¨ @  ~Ö r­?d À‰ K´¿Í @  ~× s­?d Š \Àî‰ @  ~Ø t­?d @Š ÞQùW @  ~Ù u­?d €Š ŒJ @  ~Ú v­?d ÀŠ ÛÐ @  ~Û w­?d ‹ ÇH;  @  ~Ü x­?d @‹ EÙ,Ó @  ~Ý y­?d €‹ ÂÊ @  ~Þ z­?d À‹ •SÔT @  ~ß {­?d Œ ºŠÏŽ @  ~à |­?d @Œ 8ØP @  ~á }­?d €Œ j7  @  ~â ~­?d€ ÀŒ œR @   –­?d À’ ˜§¾à @   —­?d “ ”}Ð @   ˜­?d @“ ìh @   ™­?d €“ ¾|º @   š­?d À“ /kd @   ›­?d ” ^ã6” @   œ­?d @” Ür!J @   ­?d €” ü|ˆ9 @   ž­?d À” ~íŸç @  ! Ÿ­?d • ŠÐç @  "  ­?d @• A9 @  # ¡­?d €• Ÿ @  $ ¢­?d À• ‚S @  % £­?d – ÄDm @  & ¤­?d @– FÕ³ @  ' ¥­?d €– Ú|¸ @  ( ¦­?d À– Xí¯N @  ) §­?d — T7n~ @  * ¨­?d @— Ö¦y  @  + ©­?d €— Aôm @  , ª­?d À— ÃezÊ @  - «­?d ˜ ³X( @  . ¬­?d @˜ 1‰Oö @  / ­­?d €˜ Á5 @  0 ®­?d À˜ ‚Öë @  1 ¯­?d ™ ëšu7 @  2 °­?d @™ i bé @  3 ±­?d €™ þYv] @  4 ²­?d À™ |Èaƒ @  5 ³­?d š ¥o½ @  6 ´­?d @š 'Ÿxc @  7 µ­?d €š »6È@ @  8 ¶­?d Àš 9§ßž @  9 ·­?d › 5}® @  : ¸­?d @› ·ì p @  ; ¹­?d €›  ¾Ä @  < º­?d À› ¢/  @  = »­?d œ ÿãWê @  > ¼­?d @œ }r@4 @  ? ½­?d €œ ó{ïÕ @  @ ¾­?d Àœ qêø  @  A ¿­?d u‡w @  B À­?d @ ÷`Ä @  C Á­?d € `Dtp @  D ­?d À âÕc® @  E í?d ž ;m @  F Ä­?d @ž ¹‚zN @  G Å­?d €ž %+Êm @  H Æ­?d Àž §ºÝ³ @  I Ç­?d Ÿ «`ƒ @  J È­?d @Ÿ )ñ ] @  K É­?d €Ÿ ¾£é @  L Ê­uР ?d ÀŸ <27 @  M Ë­?d    »x® @  N Ì­?d X  ‹*op @  O Í­?d ˜  º"á³ @  P έ?d Ø  8³öm @  Q Ï­?d ¡ Q9U± @  R Э?d X¡ Ó¨Bo @  S Ñ­?d ˜¡ DúVÛ @  T Ò­?d Ø¡ ÆkA @  U Ó­?d ¢ ­O; @  V Ô­?d X¢ ( @  Z Ø­?d X£  O)ö @  [ Ù­?d ˜£ š=B @  \ Ú­?d Ø£ Œ*œ @  ] Û­?d ¤ E@wl @  ^ Ü­?d X¤ ÇÑ`² @  _ Ý­?d ˜¤ çßÉÁ @  ` Þ­?d ؤ eNÞ @  a ß­?d ¥ ‘sD @  b à­?d X¥ âSÁ @  c á­?d ˜¥ „°Gu @  d â­?d Ø¥ !P« @  e ã­?d ¦ ßç^• @  f ä­?d X¦ ]vIK @  g å­?d ˜¦ Áßùh @  h æ­?d ئ CNî¶ @  i ç­?d § O”/† @  j è­?d X§ Í8X @  k é­?d ˜§ ZW,ì @  l ê­?d ا ØÆ;2 @  m ë­?d ¨ ¨»Ð @  n ì­?d X¨ ** @  o í­?d ˜¨ "€Í @  p î­?d ب ™³— @  q ï­?d © ð94Ï @  r ð­?d X© r¨# @  s ñ­?d ˜© åú7¥ @  t ò­?d Ø© gk { @  u ó­?d ª ¾­.E @  v ô­?d Xª <<9› @  w õ­?d ˜ª  •‰¸ @  x ö­?d ت "žf @  y ÷­?d « .Þ_V @  z ø­?d X« ¬OHˆ @  { ù­?d ˜« ;\< @  | ú­?d Ø« ¹ŒKâ @  } û­?d ¬ ä@ @  ~ ü­?d X¬ fÑÌ @   ý­?d ˜¬  Žž @  € þ­?d ج ‰‰Â @   ÿ­?d ­ ]ñ2h @  ‚ ®?d X­ ß`%¶ @  ƒ ®?d ˜­ H21 @  „ ®?d Ø­ Ê£&Ü @  … ®?d ® e(â @  † ®?d X® ‘ô?< @  ‡ ®?d ˜®  ] @  ˆ ®?d Ø® ̘Á @  ‰ ®?d ¯ ƒYñ @  Š ®?d X¯ ‡N/ @  ‹  ®?d ˜¯ –ÕZ› @  Œ  ®?d د DME @    ®?d ° î_ @  Ž  ®?d X° l‰HÖ @    ®?d ˜° ]Æ @   ®?d ذ ßÑË @  ‘ ®?d ± ¶šr @  ’ ®?d X± 4 eÉ @  “ ®?d ˜± £Yq} @  ” ®?d ر !Èf£ @  • ®?d ² øh @  – ®?d X² zŸC @  — ®?d ˜² æ6Ï` @  ˜ ®?d ز d§Ø¾ @  ™ ®?d ³ h}Ž @  š ®?d X³ êìP @  › ®?d ˜³ }¾ä @  œ ®?d س ÿ/ : @   ®?d ´ ¢ãPÊ @  ž ®?d X´  rG @  Ÿ ®?d ˜´ |îg @    ®?d Ø´ ‚íù¹ @  ¡ ®?d µ vÐc¹ @  ¢  ®?d Xµ ôAtg @  £ !®?d ˜µ c`Ó @  ¤ "®?d ص á‚w  @  ¥ #®?d ¶ 8Dy3 @  ¦ $®?d X¶ ºÕní @  § %®?d ˜¶ &|ÞÎ @  ¨ &®?d ض ¤íÉ @  © '®?d · ¨7  @  ª (®?d X· *¦þ @  « )®?d ˜· ½ô J @  ¬ *®?d Ø· ?e” @  ­ +®?d ¸ O>v @  ® ,®?d X¸ ͉)¨ @  ¯ -®?d ˜¸ ü§k @  ° .®?d ظ ~°µ @  ± /®?d ¹ ši @  ² 0®?d X¹ • · @  ³ 1®?d ˜¹ Y @  ´ 2®?d ع €ÈÝ @  µ 3®?d º Y ã @  ¶ 4®?d Xº ÛŸ= @  · 5®?d ˜º G6® @  ¸ 6®?d غ ŧ¹À @  ¹ 7®?d » É}xð @  º 8®?d X» Kìo. @  » 9®?d ˜» ܾ{š @  ¼ :®?d Ø» ^/lD @  ½ ;®?d ¼ ã1´ @  ¾ <®?d X¼ r&j @  ¿ =®?d ˜¼ {‰‹ @  À >®?d ؼ êžU @  Á ?®?d ½ ‰‡D @   @®?d X½  š @  à A®?d ˜½ œD. @  Ä B®?d ؽ Õð @  Å C®?d ¾ Ç Î @  Æ D®?d X¾ E‚ @  Ç E®?d ˜¾ Ù+¬3 @  È F®?d ؾ [º»í @  É G®?d ¿ W`zÝ @  Ê H®?d X¿ Õñm @  Ë I®?d ˜¿ B£y· @uÐÀ   Ì J®?d Ø¿ À2ni @  Í K®?d 0À à@‘Ä @  Î L®?d pÀ bц @  Ï M®?d °À SÙÙ @  Ð N®?d ðÀ ÑH @  Ñ O®?d 0Á ¸Â¼Û @  Ò P®?d pÁ :S« @  Ó Q®?d °Á ­¿± @  Ô R®?d ðÁ /¨o @  Õ S®?d 0 öV¦Q @  Ö T®?d p tDZ @  × U®?d °Â èn¬ @  Ø V®?d ð jÿr @  Ù W®?d 0à f%×B @  Ú X®?d pà ä´Àœ @  Û Y®?d °Ã sæÔ( @  Ü Z®?d ðà ñwÃö @  Ý [®?d 0Ä ¬»ž @  Þ \®?d pÄ .*‰Ø @  ß ]®?d °Ä $ « @  à ^®?d ðÄ Œµ7u @  á _®?d 0Å xˆ­u @  â `®?d€ pÅ Zü., @  € a®?d °Å ,ïr± @  € b®?d ðÅ ®~eo @  € c®?d 0Æ ²ñ¼ @  € d®?d pÆ 0`‡b @  € e®?d °Æ b{h; @  € f®?d ðÆ àêå @  € g®?d 0Ç "‚ᯠ@  € h®?d pÇ  öq @  € i®?d °Ç ò( @  € j®?d ðÇ p™ö @  € k®?d 0È Å­×ù @  € l®?d pÈ G<À' @  € m®?d °È '/~ @  € n®?d ðÈ —¶8  @  € o®?d 0É /úæ @  € p®?d pÉ ¾í8 @  € q®?d °É M¥a @  € r®?d ðÉ Ï4¿ @  € s®?d 0Ê Ó»àl @  € t®?d pÊ Q*÷² @  € u®?d °Ê 1ë @  € v®?d ðÊ  5 @  € w®?d 0Ë CÈ‘ @  € x®?d pË ÁY†¡ @  € y®?d °Ë “Biø @  € z®?d ðË Ó~& @  € {®?d 0Ì ‰VØ; @  € |®?d pÌ  ÇÏå @  € }®?d °Ì YÜ ¼ @  € ~®?d ðÌ ÛM7b @  € ®?d 0Í °óªË @  € €®?d pÍ 2b½ @  €! ®?d °Í `yRL @  €" ‚®?d ðÍ âèE’ @  €# ƒ®?d 0Î þg°A @  €$ „®?d pÎ |ö§Ÿ @  €% …®?d °Î .íHÆ @  €& †®?d ðÎ ¬|_ @  €' ‡®?d 0Ï nÁR @  €( ˆ®?d pÏ ì…ÖŒ @  €) ‰®?d °Ï ¾ž9Õ @  €* Š®?d ðÏ <.  @  €+ ‹®?d 0Ð Ç« @  €, Œ®?d pÐ ‹Ðu @  €- ®?d °Ð Ó?, @  €. Ž®?d ðÐ Q(ò @  €/ ®?d 0Ñ [˜ê´ @  €0 ®?d pÑ Ù ýj @  €1 ‘®?d °Ñ ‹3 @  €2 ’®?d ðÑ  ƒí @  €3 “®?d 0Ò  ð> @  €4 ”®?d pÒ —çà @  €5 •®?d °Ò ņ¹ @  €6 –®?d ðÒ Gg @  €7 —®?d 0Ó …- @  €8 ˜®?d pÓ î–ó @  €9 ™®?d °Ó Uõyª @  €: š®?d ðÓ ×dnt @  €; ›®?d 0Ô OáÈi @  €< œ®?d pÔ Ípß· @  €= ®?d °Ô Ÿk0î @  €> ž®?d ðÔ ú'0 @  €? Ÿ®?d 0Õ 5Õýˆ @  €@  ®?d pÕ ·DêV @  €A ¡®?d °Õ å_ @  €B ¢®?d ðÕ gÎÑ @  €C £®?d 0Ö {Aç @  €D ¤®?d pÖ ùÐðÜ @  €E ¥®?d °Ö «Ë… @  €F ¦®?d ðÖ )Z[ @  €G §®?d 0× ë2– @  €H ¨®?d p× i£Ï @  €I ©®?d °× ;¸n– @  €J ª®?d ð× ¹)yH @  €K «®?d 0Ø   G @  €L ¬®?d pØ ŽŒ·™ @  €M ­®?d °Ø Ü—XÀ @  €N ®®?d ðØ ^O @  €O ¯®?d 0Ù TŸX @  €P °®?d pÙ Öš† @  €Q ±®?d °Ù „uß @  €R ²®?d ðÙ „b @  €S ³®?d 0Ú  —Ò @  €T ´®?d pÚ ˜š€  @  €U µ®?d °Ú ÊoU @  €V ¶®?d ðÚ Hx‹ @  €W ·®?d 0Û ŠxæÁ @  €X ¸®?d pÛ éñ @  €Y ¹®?d °Û ZòF @  €Z º®?d ðÛ Øc ˜ @  €[ »®?d 0Ü @毅 @  €\ ¼®?d pÜ Âw¸[ @  €] ½®?d °Ü lW @  €^ ¾®?d ðÜ ý@Ü @  €_ ¿®?d 0Ý d…‰ç @  €` À®?d pÝ æž9 @  €a Á®?d °Ý ´q` @  €b ®?d ðÝ 6žf¾ @  €c î?d 0Þ *“m @  €d Ä®?d pÞ ¨€„³ @  €e Å®?d °Þ ú›kê @  €f Æ®?d ðÞ x |4 @  €g Ç®?d 0ß ºbâ~ @  €h È®?d pß 8óõ  @  €i É®?d uÐà /°ß jèù @  €j Ê®?d ðß èy ' @  €k Ë®?d Hà pà @  €l Ì®?d ˆà Pã= @  €m Í®?d Èà  œþD @  €n ή?d á pÔr¬ @  €o Ï®?d Há (”+Ü @  €p Ю?d ˆá a)" @  €q Ñ®?d Èá øÓ[ @  €r Ò®?d â eZsš @  €s Ó®?d Hâ f1V @  €t Ô®?d ˆâ Fõ3¨ @  €u Õ®?d Èâ ¶ŠÉÑ @  €v Ö®?d ã fÂE9 @  €w ×®?d Hã ös@E @  €x Ø®?d ˆã Ö†B» @  €y Ù®?d Èã &ù¸Â @  €z Ú®?d ä ?·KÍ @  €{ Û®?d Hä <í  @  €| Ü®?d ˆä  ÿ @  €} Ý®?d Èä ìgñ† @  €~ Þ®?d å  @  €ª  ¯?d ð &ÍVŒ @  €«  ¯?d Hð %—@ @  €¬  ¯?d ˆð b¾ @  €­  ¯?d Èð õìÇ @  €® ¯?d ñ %U`/ @  €¯ ¯?d Hñ }9_ @  €° ¯?d ˆñ ]à;¡ @  €± ¯?d Èñ ­ŸÁØ @  €² ¯?d ò 0Ûa @  €³ ¯?d Hò 3#Õ @  €´ ¯?d ˆò t!+ @  €µ ¯?d Èò ã ÛR @  €¶ ¯?d ó 3CWº @  €· ¯?d Hó £òRÆ @  €¸ ¯?d ˆó ƒP8 @  €¹ ¯?d Èó sxªA @  €º ¯?d ô j6YN @  €» ¯?d Hô il‚ @  €¼ ¯?d ˆô I™| @  €½ ¯?d Èô ¹æã @  €¾ ¯?d õ i®oí @  €¿ ¯?d Hõ X.c @  €À  ¯?d ˆõ 3­, @  €Á !¯?d Èõ ÃÒÖä @  € "¯?d ö ^–v% @  €à #¯?d Hö ]Ì4é @  €Ä $¯?d ˆö }96 @  €Å %¯?d Èö FÌn @  €Æ &¯?d ÷ ]@† @  €Ç '¯?d H÷ Í¿Eú @  €È (¯?d ˆ÷ íJG @  €É )¯?d È÷ 5½} @  €Ê *¯?d ø )Ê1` @  €Ë +¯?d Hø *s¬ @  €Ì ,¯?d ˆø  eqR @  €Í -¯?d Èø ú‹+ @  €Î .¯?d ù *Rà @  €Ï /¯?d Hù r^³ @  €Ð 0¯?d ˆù Rç\M @  €Ñ 1¯?d Èù ¢˜¦4 @  €Ò 2¯?d ú ?Üõ @  €Ó 3¯?d Hú <†D9 @  €Ô 4¯?d ˆú sFÇ @  €Õ 5¯?d Èú ì ¼¾ @  €Ö 6¯?d û ¢ @  €Û ;¯?d Hü fk|n @  €Ü <¯?d ˆü Fž~ @  €Ý =¯?d Èü ¶á„é @  €Þ >¯?d ý f© @  €ß ?¯?d Hý BZ  @  €à @¯?d ˆý býXò @  €á A¯?d Èý ’‚¢‹ @  €â B¯?d€ þ {ì @   C¯?d Hþ ™  @   D¯?d ˆþ ¹ë÷ @   E¯?d Èþ ŒÝc @   F¯?d ÿ \•›‹ @   G¯?d Hÿ –Á @   H¯?d ˆÿ "cÃs @   uÐ I¯?d Èÿ ®fp @   J¯?d SN @   K¯?d ` • ÷  @   L¯?d   µüõ^ @   M¯?d à €ÊôÊ @   N¯?d  P‚x" @   O¯?d ` kÑ@È @   P¯?d   K$B6 @   Q¯?d à ØHÙÕ @   R¯?d  E y @   S¯?d ` ƒÀ5 @   T¯?d   £êÂË @   U¯?d à –ÜÃ_ @   V¯?d  F”O· @   W¯?d ` —± @   X¯?d   8bO @   Y¯?d à ¯²L @   Z¯?d  áAC @   [¯?d ` Ùòøb @   \¯?d   ùúœ @   ]¯?d à Ì1û @   ^¯?d  ywà @   _¯?d ` ºvÖ @   `¯?d   šht( @   a¯?d à È{ @   b¯?d  …Fhº @  ! c¯?d ` CUÑ› @  " d¯?d   c Óe @  # e¯?d à V–Òñ @  $ f¯?d  †Þ^ @  % g¯?d ` ØÝ @  & h¯?d   ø(á @  ' i¯?d à Æå£â @  ( j¯?d  ò/ÿ @  ) k¯?d ` 4 –Þ @  * l¯?d   ü”  @  + m¯?d à !Ê•´ @  , n¯?d ñ‚\ @  - o¯?d ` ÊÑ!¶ @  . p¯?d   ê$#H @  / q¯?d à yH¸« @  0 r¯?d ä j @  1 s¯?d ` "¡K @  2 t¯?d   ꣵ @  3 u¯?d à 7Ü¢! @  4 v¯?d ç”.É @  5 w¯?d ` ¹—tÏ @  6 x¯?d   ™bv1 @  7 y¯?d à §¯Ó2 @  8 z¯?d ¾á = @  9 {¯?d ` xò™ @  : |¯?d   X›â @  ; }¯?d à m1šv @  < ~¯?d ½yž @  = ¯?d ` ö V+ @  > €¯?d   ÖþTÕ @  ? ¯?d à ú“î @  @ ‚¯?d  g×NÕ @  A ƒ¯?d ` ¡Ä÷ô @  B „¯?d   1õ  @  C …¯?d à ´ôž @  D †¯?d  dOxv @  E ‡¯?d ` :L"p @  F ˆ¯?d   ¹ Ž @  G ‰¯?d à $t… @  H Н?d  šª9? @  I ‹¯?d ` \¹€ @  J Œ¯?d   |L‚à @  K ¯?d à Izƒt @  L ޝ?d  ™2œ @  M ¯?d ` ¢a7v @  N ¯?d   ‚”5ˆ @  O ‘¯?d à ø®k @  P ’¯?d  Œ¼ª @  Q “¯?d ` J¯·‹ @  R ”¯?d   jZµu @  S •¯?d à _l´á @  T –¯?d  $8  @  U —¯?d ` Ñ'b @  V ˜¯?d   ñÒ`ñ @  W ™¯?d à ÏÅò @  X š¯?d  ÖQ6ý @  Y ›¯?d ` BÜ @  Z œ¯?d   0·" @  [ ¯?d à Œ¶ @  \ ž¯?d  ÕÉ^ @  ] Ÿ¯?d ` s-h @  ^  ¯?d   SØ– @  _ ¡¯?d à Ѳ¿Å @  ` ¢¯?d  Lö @  a £¯?d ` Šå¦% @  b ¤¯?d   ª¤Û @  c ¥¯?d à Ÿ&¥O @  d ¦¯?d  On)§ @  e §¯?d ` ms¡ @  f ¨¯?d   1˜q_ @  g ©¯?d à UÔ\ @  h ª¯?d  ;ªXA @  i «¯?d ` ý¹á` @  j ¬¯?d   ÝLãž @  k ­¯?d à èzâ  @  l ®¯?d  82nâ @  m ¯¯?d ` aV @  n °¯?d   #”Tö @  o ±¯?d à °øÏ @  p ²¯?d  -¼oÔ @  q ³¯?d ` ë¯Öõ @  r ´¯?d   ËZÔ  @  s µ¯?d à þlÕŸ @  t ¶¯?d  .$Yw @  u ·¯?d ` p'q @  v ¸¯?d   PÒ @  w ¹¯?d à n¤Œ @  x º¯?d  wQWƒ @  y »¯?d ` ±Bî¢ @  z ¼¯?d   ‘·ì\ @  { ½¯?d à ¤íÈ @  | ¾¯?d  tÉa  @  } ¿¯?d ` "}u @  ~ À¯?d   ˆwù @   Á¯?d à ͳý  @  € ¯?d  P÷]È @   ï?d ` –ääé @  ‚ į?d   ¶æ @  ƒ ů?d à ƒ'çƒ @  „ Ư?d  Sokk @  … ǯ?d `  l1m @  † ȯ?d   -™3“uÐ  @  ‡ ɯ?d à T– @  ˆ ʯ?d 8 b_Hö @  ‰ ˯?d x ¤Lñ× @  Š ̯?d ¸ „¹ó) @  ‹ ͯ?d ø ±ò½ @  Œ ί?d 8! aÇ~U @   ϯ?d x! Z”F¿ @  Ž Я?d ¸! zaDA @   ѯ?d ø! é ߢ @   Ò¯?d 8" tIc @  ‘ Ó¯?d x" ²ZÆB @  ’ Ô¯?d ¸" ’¯Ä¼ @  “ Õ¯?d ø" §™Å( @  ” Ö¯?d 8# wÑIÀ @  • ׯ?d x# )ÒÆ @  – د?d ¸#  '8 @  — Ù¯?d ø# 7ê´; @  ˜ Ú¯?d 8$ .¤G4 @  ™ Û¯?d x$ è·þ @  š ܯ?d ¸$ ÈBüë @  › ݯ?d ø$ ýtý @  œ Þ¯?d 8% -°?d 8= ãh«Â @  ‚ ?°?d x= p•D @  ‚ @°?d ¸= P`Fö @  ‚ A°?d ø=  ¼ @  ‚ B°?d 8> =[N @  ‚ C°?d x> ‰]ãE @  ‚ D°?d ¸> ©¨á» @  ‚! E°?d ø> Y× @  ‚" F°?d 8? ‰Ÿ—* @  ‚# G°?d x? Õ6Á @  ‚$ H°?duÐ@ 7 ¸? 2 4? @  ‚% I°?d ø? Â_ÎF @  ‚& J°?d P@ ótz @  ‚' K°?d @ «6‡ @  ‚( L°?d Ð@ )§ß @  ‚) M°?d A ‹ñ @  ‚* N°?d PA  æN @  ‚+ O°?d A Uî0i @  ‚, P°?d ÐA ×'· @  ‚- Q°?d B 8ÕjÑ @  ‚. R°?d PB ºD} @  ‚/ S°?d B ½ °” @  ‚0 T°?d ÐB ?±§J @  ‚1 U°?d C Æ @  ‚2 V°?d PC †ÑÛ @  ‚3 W°?d C &¨e @  ‚4 X°?d ÐC ¤9rÎ @  ‚5 Y°?d D Ï™lf @  ‚6 Z°?d PD M{¸ @  ‚7 [°?d D ç͈à @  ‚8 \°?d ÐD e\Ÿ @  ‚9 ]°?d E ÇúþR @  ‚: ^°?d PE EkéŒ @  ‚; _°?d E „¢w @  ‚< `°?d ÐE 3© @  ‚= a°?d F é™\Ï @  ‚> b°?d PF kK @  ‚? c°?d F Óm§¨ @  ‚@ d°?d ÐF Qü°v @  ‚A e°?d G óZÑ9 @  ‚B f°?d PG qËÆç @  ‚C g°?d G Hår, @  ‚D h°?d ÐG Êteò @  ‚E i°?d H ŒeH @  ‚F j°?d PH ô– @  ‚G k°?d H ¤1àí @  ‚H l°?d ÐH & ÷3 @  ‚I m°?d I „–| @  ‚J n°?d PI —¢ @  ‚K o°?d I ZéW… @  ‚L p°?d ÐI Øx@[ @  ‚M q°?d J 7Ò = @  ‚N r°?d PJ µCã @  ‚O s°?d J ²'×x @  ‚P t°?d ÐJ 0¶À¦ @  ‚Q u°?d K ’¡é @  ‚R v°?d PK ¶7 @  ‚S w°?d K )¯ü @  ‚T x°?d ÐK «>" @  ‚U y°?d L Àž Š @  ‚V z°?d PL BT @  ‚W {°?d L èÊï/ @  ‚X |°?d ÐL j[øñ @  ‚Y }°?d M Èý™¾ @  ‚Z ~°?d PM JlŽ` @  ‚[ °?d M f3  @  ‚\ €°?d ÐM ä¢7Æ @  ‚] °?d N  z  @  ‚^ ‚°?d PN ‰™m~ @  ‚_ ƒ°?d N Ÿû‡U @  ‚` „°?d ÐN j‹ @  ‚a …°?d O ¿ÌñÄ @  ‚b †°?d PO =]æ @  ‚c ‡°?d O sRÑ @  ‚d ˆ°?d ÐO †âE @  ‚e ‰°?d P JÒ @  ‚f а?d PP ÈCÄ @  ‚g ‹°?d P b†ð¿ @  ‚h Œ°?d ÐP àça @  ‚i °?d Q B±†. @  ‚j ް?d PQ À ‘ð @  ‚k °?d Q œ^G× @  ‚l °?d ÐQ ÏP  @  ‚m ‘°?d R ñeo @  ‚n ’°?d PR sô ± @  ‚o “°?d R tÇ* @  ‚p ”°?d ÐR öÐô @  ‚q •°?d S T§±» @  ‚r –°?d PS Ö6¦e @  ‚s —°?d S ï® @  ‚t ˜°?d ÐS m‰p @  ‚u ™°?d T )Ø @  ‚v š°?d PT „¸  @  ‚w ›°?d T .}ÿ} @  ‚x œ°?d ÐT ¬ìè£ @  ‚y °?d U J‰ì @  ‚z ž°?d PU ŒÛž2 @  ‚{ Ÿ°?d U MqÉ @  ‚|  °?d ÐU σf @  ‚} ¡°?d V  )+q @  ‚~ ¢°?d PV ¢¸<¯ @  ‚ £°?d V ù‹à' @  ‚€ ¤°?d ÐV {÷ù @  ‚ ¥°?d W Ù¼–¶ @  ‚‚ ¦°?d PW [-h @  ‚ƒ §°?d W b5£ @  ‚„ ¨°?d ÐW à’"} @  ‚… ©°?d X ¦ƒCÇ @  ‚† ª°?d PX $T @  ‚‡ «°?d X Ž×§b @  ‚ˆ ¬°?d ÐX  F°¼ @  ‚‰ ­°?d Y ®àÑó @  ‚Š ®°?d PY ,qÆ- @  ‚‹ ¯°?d Y p  @  ‚Œ °°?d ÐY òžÔ @  ‚ ±°?d Z 4J² @  ‚Ž ²°?d PZ Ÿ¥]l @  ‚ ³°?d Z ˜Á÷ @  ‚ ´°?d ÐZ P‡) @  ‚‘ µ°?d [ ¸öæf @  ‚’ ¶°?d P[ :gñ¸ @  ‚“ ·°?d [ IEs @  ‚” ¸°?d Ð[ ØR­ @  ‚• ¹°?d \ êxL @  ‚– º°?d P\ hé[Û @  ‚— »°?d \ Â,¨  @  ‚˜ ¼°?d Ð\ @½¿~ @  ‚™ ½°?d ] âÞ1 @  ‚š ¾°?d P] `ŠÉï @  ‚› ¿°?d ] Q3 @  ‚œ À°?d Ð] Ó‚$Û @  ‚ Á°?d ^ <(i½ @  ‚ž °?d P^ ¾¹~c @  ‚Ÿ ð?d ^ ¨Û”H @  ‚  İ?d Ð^ *Jƒ– @  ‚¡ Ű?d _ ˆìâÙ @  ‚¢ ư?d P_  }õ @  ‚£ ǰ?d _ 3SAÌ @  ‚uÐ` ¤ Ȱ?d Ð_ ±ÂV @  ‚¥ ɰ?d (` }Ô- @  ‚¦ ʰ?d h` ÿEó @  ‚§ ˰?d ¨` U€êˆ @  ‚¨ ̰?d è` ×ýV @  ‚© Ͱ?d (a u·œ @  ‚ª ΰ?d ha ÷&‹Ç @  ‚« ϰ?d ¨a «X]à @  ‚¬ а?d èa )ÉJ> @  ‚­ Ѱ?d (b ÆcX @  ‚® Ò°?d hb Dò† @  ‚¯ Ó°?d ¨b C–Ý @  ‚° Ô°?d èb ÁÊà @  ‚± Õ°?d (c c¡«Œ @  ‚² Ö°?d hc á0¼R @  ‚³ ×°?d ¨c Ø™ @  ‚´ ذ?d èc ZG @  ‚µ Ù°?d (d 1/ï @  ‚¶ Ú°?d hd ³¾1 @  ‚· Û°?d ¨d {åJ @  ‚¸ ܰ?d èd ›êò” @  ‚¹ ݰ?d (e 9L“Û @  ‚º Þ°?d he »Ý„ @  ‚» ß°?d ¨e zkþ @  ‚¼ à°?d èe ø…|  @  ‚½ á°?d (f /1F @  ‚¾ â°?d hf •¾&˜ @  ‚¿ ã°?d ¨f -ÛÊ! @  ‚À ä°?d èf ¯JÝÿ @  ‚Á å°?d (g  ì¼° @  ‚ æ°?d hg }«n @  ‚à ç°?d ¨g ¶S¥ @  ‚Ä è°?d èg 4Â{ @  ‚Å é°?d (h ‰½RÁ @  ‚Æê°?d hh  ,E @  ‚Çë°?d ¨h ¡é¶d @  ‚Èì°?d èh #x¡º @  ‚Éí°?d (i ÞÀõ @  ‚Êî°?d hi O×+ @  ‚Ëï°?d ¨i _1  @  ‚Ìð°?d èi Ý Ò @  ‚Íñ°?d (j 2 [´ @  ‚Îò°?d hj °›Lj @  ‚Ïó°?d ¨j ·ÿñ @  ‚Ðô°?d èj 5n–/ @  ‚Ñõ°?d (k —È÷` @  ‚Òö°?d hk Yྠ@  ‚Ó÷°?d ¨k ,wTu @  ‚Ôø°?d èk ®æC« @  ‚Õù°?d (l ÅF] @  ‚Öú°?d hl G×JÝ @  ‚×û°?d ¨l í¹¦ @  ‚Øü°?d èl oƒ®x @  ‚Ùý°?d (m Í%Ï7 @  ‚Úþ°?d hm O´Øé @  ‚Ûÿ°?d ¨m Œ# @  ‚ܱ?d èm ž4C @  ‚ݱ?d (n q·y% @  ‚Þ±?d hn ó&nû @  ‚ß±?d ¨n åD„Ð @  ‚à±?d èn gÕ“ @  ‚á±?d (o ÅsòA @  ‚â±?d€ ho 3!ù9 @  ƒ±?d ¨o ëNÛ @  ƒ±?d èo iß @  ƒ ±?d (p `¦¸ý @  ƒ ±?d hp â7¯# @  ƒ ±?d ¨p †@" @  ƒ ±?d èp Ñü @  ƒ ±?d (q hÅ*É @  ƒ±?d hq êT= @  ƒ ±?d ¨q scÝ @  ƒ ±?d èq ñò @  ƒ ±?d (r Û±ˆ @  ƒ ±?d hr Y€¦V @  ƒ ±?d ¨r =÷ W @  ƒ±?d èr ¿f‰ @  ƒ±?d (s ~Ó\ @  ƒ±?d hs üB ‚ @  ƒ±?d ¨s %E¤ @  ƒ±?d ès ‚´Rz @  ƒ±?d (t ,]·? @  ƒ±?d ht ®Ì á @  ƒ±?d ¨t Ê» à @  ƒ±?d èt H*> @  ƒ±?d (u $>%  @  ƒ±?d hu ¦¯2Õ @  ƒ±?d ¨u ¢/&à @  ƒ ±?d èu  ¾1 @  ƒ!±?d (v  ]‡– @  ƒ"±?d hv ˆÌH @  ƒ#±?d ¨v ì»Du @  ƒ8>±?d h} ¯S« @  ƒ9?±?d ¨} óR¬ @  ƒ:@±?d è} qîEr @  ƒ;A±?d (~ [ óù @  ƒ<B±?d h~ Ùœä' @  ƒ=C±?d ¨~ ½ëH& @  ƒ>D±?d è~ ?z_ø @  ƒ?E±?d ( AÎ~ @  ƒ@F±?d h Ã_iÑ @  ƒAG±?d ¨ uЀ '?8&÷ @  ƒBH±?d è ½©1) @  ƒCI±?d @€ d°Å @  ƒDJ±?d €€ DEÇé @  ƒEK±?d À€ ‚V~È @  ƒFL±?d Rò  @  ƒGM±?d @ lÓW# @  ƒHN±?d € L&UÝ @  ƒIO±?d À wum7 @  ƒJP±?d ‚ ê1Íö @  ƒKQ±?d @‚ ßÌb @  ƒLR±?d €‚ ÿòΜ @  ƒMS±?d À‚ 9áw½ @  ƒNT±?d ƒ é©ûU @  ƒOU±?d @ƒ zÅ`¶ @  ƒPV±?d €ƒ Z0bH @  ƒQW±?d Àƒ 38N @  ƒRX±?d „ }ËA @  ƒSY±?d @„ (KÊÕ @  ƒTZ±?d €„ ¾È+ @  ƒU[±?d À„ έq  @  ƒV\±?d … åýâ @  ƒW]±?d @…  (Xá @  ƒX^±?d €… ÝZ @  ƒY_±?d À… ¦9[) @  ƒZ`±?d † ;}ûè @  ƒ[a±?d @† Kú| @  ƒ\b±?d €† .¾ø‚ @  ƒ]c±?d À† è­A£ @  ƒ^d±?d ‡ 8åÍK @  ƒ_e±?d @‡ ºq @  ƒ`f±?d €‡ šzsæ @  ƒag±?d À‡ Äy)à @  ƒbh±?d ˆ ð†¥ý @  ƒci±?d @ˆ ۤi @  ƒdj±?d €ˆ åE¦— @  ƒek±?d Àˆ #V¶ @  ƒfl±?d ‰ ó“^ @  ƒgm±?d @‰ ÍÓ6] @  ƒhn±?d €‰ í&4£ @  ƒio±?d À‰ Öu I @  ƒjp±?d Š K1¬ˆ @  ƒkq±?d @Š ~­ @  ƒlr±?d €Š ^ò¯â @  ƒms±?d ÀŠ ˜áà @  ƒnt±?d ‹ H©š+ @  ƒou±?d @‹ ÛÅÈ @  ƒpv±?d €‹ û06 @  ƒqw±?d À‹ ¥3Y0 @  ƒrx±?d Œ ¼}ª? @  ƒsy±?d @Œ ‰K«« @  ƒtz±?d €Œ ©¾©U @  ƒu{±?d ÀŒ o­t @  ƒv|±?d ¿åœœ @  ƒw}±?d @ (9Ÿ @  ƒx~±?d € ¡Ý;a @  ƒy±?d À ê¯{Ô @  ƒz€±?d Ž wëÛ @  ƒ{±?d @Ž BÝÚ @  ƒ|‚±?d €Ž b(Ø @  ƒ}ƒ±?d ÀŽ ¤;a^ @  ƒ~„±?d tsí¶ @  ƒ…±?d @ »HgF @  ƒ€†±?d € ›½e¸ @  ƒ‡±?d À ž?¾ @  ƒ‚ˆ±?d {`ƒ  @  ƒƒ‰±?d @ NV‚˜ @  ƒ„б?d € n£€f @  ƒ…‹±?d À ¨°9G @  ƒ†Œ±?d ‘ xøµ¯ @  ƒ‡±?d @‘ F5¬ @  ƒˆޱ?d €‘ fÀR @  ƒ‰±?d À‘ ]“*¸ @  ƒŠ±?d ’ À׊y @  ƒ‹‘±?d @’ õá‹í @  ƒŒ’±?d €’ Õ‰ @  ƒ“±?d À’ 02 @  ƒŽ”±?d “ ÃO¼Ú @  ƒ•±?d @“ P#'9 @  ƒ–±?d €“ pÖ%Ç @  ƒ‘—±?d À“ .ÕÁ @  ƒ’˜±?d ” 7›ŒÎ @  ƒ“™±?d @” ­Z @  ƒ”š±?d €” "X¤ @  ƒ•›±?d À” äK6… @  ƒ–œ±?d • 4ºm @  ƒ—±?d @•  În @  ƒ˜ž±?d €• *; @  ƒ™Ÿ±?d À• Œß¦ @  ƒš ±?d – ›¼g @  ƒ›¡±?d @– $­½ó @  ƒœ¢±?d €– X¿  @  ƒ£±?d À– ÂK, @  ƒž¤±?d — ŠÄ @  ƒŸ¥±?d @— i6— @  ƒ ¦±?d €— °œ4i @  ƒ¡§±?d À— îŸno @  ƒ¢¨±?d ˜ Ú`âr @  ƒ£©±?d @˜ ïVãæ @  ƒ¤ª±?d €˜ Ï£á @  ƒ¥«±?d À˜  °X9 @  ƒ¦¬±?d ™ ÙøÔÑ @  ƒ§­±?d @™ ç5qÒ @  ƒ¨®±?d €™ ÇÀs, @  ƒ©¯±?d À™ ü“KÆ @  ƒª°±?d š a×ë @  ƒ«±±?d @š Táê“ @  ƒ¬²±?d €š tèm @  ƒ­³±?d Àš ²QL @  ƒ®´±?d › bOݤ @  ƒ¯µ±?d @› ñ#FG @  ƒ°¶±?d €› ÑÖD¹ @  ƒ±·±?d À› Õ¿ @  ƒ²¸±?d œ –›í° @  ƒ³¹±?d @œ £­ì$ @  ƒ´º±?d €œ ƒXîÚ @  ƒµ»±?d Àœ EKWû @  ƒ¶¼±?d •Û @  ƒ·½±?d @ «Î~ @  ƒ¸¾±?d € ‹;|î @  ƒ¹¿±?d À ÝhÉ @  ƒºÀ±?d ž @ËÈ @  ƒ»Á±?d @ž uýÉœ @  ƒ¼±?d €ž UËb @  ƒ½ñ?d Àž “rC @  ƒ¾ı?d Ÿ CSþ« @  ƒ¿ű?d @Ÿ o>Dj @  ƒÀƱ?d €Ÿ OËF” @  ƒÁDZuР ?d ÀŸ È’ @  ƒÂȱ?d   `ÃÂô @  ƒÃɱ?d X  UõÃ` @  ƒÄʱ?d ˜  uÁž @  ƒÅ˱?d Ø  ³x¿ @  ƒÆ̱?d ¡ c[ôW @  ƒÇͱ?d X¡ ]–QT @  ƒÈα?d ˜¡ }cSª @  ƒÉϱ?d Ø¡ F0k@ @  ƒÊб?d ¢ ÛtË @  ƒËѱ?d X¢ îBÊ @  ƒÌÒ±?d ˜¢ ηÈë @  ƒÍÓ±?d Ø¢ ¤qÊ @  ƒÎÔ±?d £ Øìý" @  ƒÏÕ±?d X£ K€fÁ @  ƒÐÖ±?d ˜£ kud? @  ƒÑ×±?d Ø£ 5v>9 @  ƒÒر?d ¤ ,8Í6 @  ƒÓÙ±?d X¤ Ì¢ @  ƒÔÚ±?d ˜¤ 9ûÎ\ @  ƒÕÛ±?d ؤ ÿèw} @  ƒÖܱ?d ¥ / û• @  ƒ×ݱ?d X¥ m^– @  ƒØÞ±?d ˜¥ 1˜\h @  ƒÙß±?d Ø¥ —|]^ @  ƒÚà±?d ¦  8ýŸ @  ƒÛá±?d X¦ ?ü  @  ƒÜâ±?d ˜¦ ûþõ @  ƒÝã±?d ئ ÙèGÔ @  ƒÞä±?d §   Ë< @  ƒßå±?d X§ ‹Êwo @  ƒàæ±?d ˜§ «?u‘ @  ƒáç±?d ا õ @  „ ²?d ° hoÈŒ @  „! ²?d X° ˜2õ @  „" ²?d ˜° ¸å0  @  „# ²?d ذ »¿rÇ @  „$ ²?d ± k÷þ/ @  „% ²?d X± ›ˆV @  „&²?d ˜± »}¨ @  „'²?d ر Nœa8 @  „(²?d ² ÓØÁù @  „)²?d X² #§;€ @  „*²?d ˜² R9~ @  „+²?d ز {² @  „,²?d ³ Ð@÷Z @  „-²?d X³  ? # @  „.²?d ˜³ ÊÝ @  „/²?d س =Ú4A @  „0²?d ´ $”ÇN @  „1²?d X´ Ôë=7 @  „2²?d ˜´ ô?É @  „3²?d Ø´ ÷D} @  „4²?d µ ' ñí @  „5²?d Xµ ×s ” @  „6²?d ˜µ ÷† j @  „7²?d ص ŸÐW& @  „8 ²?d ¶ ”÷ç @  „9!²?d X¶ òë ž @  „:"²?d ˜¶ Ò` @  „;#²?d ض ÑDM¬ @  „<$²?d ·  ÁD @  „=%²?d X· ñs;= @  „>&²?d ˜· ц9à @  „?'²?d Ø· S—#} @  „@(²?d ¸ gh¯` @  „A)²?d X¸ —U @  „B*²?d ˜¸ ·âWç @  „C+²?d ظ ´¸+ @  „D,²?d ¹ dð™Ã @  „E-²?d X¹ ”cº @  „F.²?d ˜¹ ´zaD @  „G/²?d ع A›Ô @  „H0²?d º Üߦ @  „I1²?d Xº , \l @  „J2²?d ˜º  U^’ @  „K3²?d غ ^ @  „L4²?d » ßG¶ @  „M5²?d X» /8jÏ @  „N6²?d ˜» Íh1 @  „O7²?d Ø» 2ÝS­ @  „P8²?d ¼ +“ ¢ @  „Q9²?d X¼ ÛìZÛ @  „R:²?d ˜¼ ûX% @  „S;²?d ؼ øCé @  „T<²?d ½ ( – @  „U=²?d X½ Øtlx @  „V>²?d ˜½ øn† @  „W?²?d ؽ `‡%Û @  „X@²?d ¾ ýÃ… @  „YA²?d X¾  ¼c @  „ZB²?d ˜¾ -I} @  „[C²?d ؾ .?Q @  „\D²?d ¿ þ[³¹ @  „]E²?d X¿ $IÀ @  „^F²?d ˜¿ .ÑK> @uÐÀ   „_G²?d Ø¿ ÇW @  „`H²?d 0À f7@ @  „aI²?d pÀ –Hü9 @  „bJ²?d °À ¶½þÇ @  „cK²?d ðÀ µç¼  @  „dL²?d 0Á e¯0ã @  „eM²?d pÁ •ÐÊš @  „fN²?d °Á µ%Èd @  „gO²?d ðÁ @įô @  „hP²?d 0 Ý€5 @  „iQ²?d p -ÿõL @  „jR²?d °Â  ÷² @  „kS²?d ð Pµ~ @  „lT²?d 0à Þ9– @  „mU²?d pà .gÃï @  „nV²?d °Ã ’Á @  „oW²?d ðà 3‚ú @  „pX²?d 0Ä *Ì ‚ @  „qY²?d pÄ Ú³óû @  „rZ²?d °Ä úFñ @  „s[²?d ðÄ ù³É @  „t\²?d 0Å )T?! @  „u]²?d pÅ Ù+ÅX @  „v^²?d °Å ùÞǦ @  „w_²?d ðÅ ‘ˆ™ê @  „x`²?d 0Æ  Ì9+ @  „ya²?d pÆ ü³ÃR @  „zb²?d °Æ ÜFÁ¬ @  „{c²?d ðÆ ßƒ` @  „|d²?d 0Ç Tˆ @  „}e²?d pÇ ÿ+õñ @  „~f²?d °Ç ßÞ÷ @  „g²?d ðÇ ¾™Ý€ @  „€h²?d 0È ŠfQ @  „i²?d pÈ z«ä @  „‚j²?d °È Zì© @  „ƒk²?d ðÈ Y¶ëÖ @  „„l²?d 0É ‰þg> @  „…m²?d pÉ yG @  „†n²?d °É YtŸ¹ @  „‡o²?d ðÉ ¬•ø) @  „ˆp²?d 0Ê 1ÑXè @  „‰q²?d pÊ Á®¢‘ @  „Šr²?d °Ê á[ o @  „‹s²?d ðÊ â⣠@  „Œt²?d 0Ë 2InK @  „u²?d pË Â6”2 @  „Žv²?d °Ë âÖÌ @  „w²?d ðË ßÓ­P @  „x²?d 0Ì Æ^_ @  „‘y²?d pÌ 6â¤& @  „’z²?d °Ì ¦Ø @  „“{²?d ðÌ Mä @  „”|²?d 0Í Åhü @  „•}²?d pÍ 5z’… @  „–~²?d °Í { @  „—²?d ðÍ O´ @  „˜€²?d 0Î  /u @  „™²?d pÎ ýtÕ  @  „š‚²?d °Î Ý×ò @  „›ƒ²?d ðÎ ÞÛ•> @  „œ„²?d 0Ï “Ö @  „…²?d pÏ þì㯠@  „ž†²?d °Ï ÞáQ @  „Ÿ‡²?d ðÏ òý} @  „ ˆ²?d 0Ð LÑAÏ @  „¡‰²?d pÐ ¼®»¶ @  „¢в?d °Ð œ[¹H @  „£‹²?d ðÐ Ÿû„ @  „¤Œ²?d 0Ñ OIwl @  „¥²?d pÑ ¿6 @  „¦޲?d °Ñ ŸÃë @  „§²?d ðÑ j"è{ @  „¨²?d 0Ò ÷fHº @  „©‘²?d pÒ ²Ã @  „ª’²?d °Ò 'ì°= @  „«“²?d ðÒ $¶òñ @  „¬”²?d 0Ó ôþ~ @  „­•²?d pÓ „` @  „®–²?d °Ó $t†ž @  „¯—²?d ðÓ d½ @  „°˜²?d 0Ô *N  @  „±™²?d pÔ ðU´t @  „²š²?d °Ô Р¶Š @  „³›²?d ðÔ ÓúôF @  „´œ²?d 0Õ ²x® @  „µ²?d pÕ óÍ‚× @  „¶ž²?d °Õ Ó8€) @  „·Ÿ²?d ðÕ »nÞe @  „¸ ²?d 0Ö &*~¤ @  „¹¡²?d pÖ ÖU„Ý @  „º¢²?d °Ö ö †# @  „»£²?d ðÖ õúÄï @  „¼¤²?d 0× %²H @  „½¥²?d p× ÕͲ~ @  „¾¦²?d °× õ8°€ @  „¿§²?d ð× w)ª> @  „À¨²?d 0Ø CÖ&# @  „Á©²?d pØ ³©ÜZ @  „ª²?d °Ø “\Þ¤ @  „ë²?d ðØ œh @  „Ĭ²?d 0Ù @N€ @  „Å­²?d pÙ °1êù @  „Æ®²?d °Ù Äè @  „ǯ²?d ðÙ e%— @  „Ȱ²?d 0Ú øa/V @  „ɱ²?d pÚ Õ/ @  „ʲ²?d °Ú (ë×Ñ @  „˳²?d ðÚ +±• @  „Ì´²?d 0Û ûùõ @  „͵²?d pÛ  †ãŒ @  „ζ²?d °Û +sár @  „Ï·²?d ðÛ cÚî @  „и²?d 0Ü -)á @  „ѹ²?d pÜ ÿRÓ˜ @  „Òº²?d °Ü ß§Ñf @  „Ó»²?d ðÜ Üý“ª @  „Ô¼²?d 0Ý  µB @  „Õ½²?d pÝ üÊå; @  „Ö¾²?d °Ý Ü?çÅ @  „׿²?d ðÝ D9¬˜ @  „ØÀ²?d 0Þ Ù} Y @  „ÙÁ²?d pÞ )ö  @  „Ú²?d °Þ  ÷ôÞ @  „Ûò?d ðÞ  ­¶ @  „ÜIJ?d 0ß Úå:ú @  „ÝŲ?d pß *šÀƒ @  „ÞƲ?d uÐà /°ß  oÂ} @  „ßDz?d ðß &yÞQ @  „àȲ?d Hà ?Ý€§ @  „áɲ?d ˆà mÆoþ @  „âʲ?d€ Èà ›”d† @  …˲?d á +VõU @  …̲?d Há ©Çâ‹ @  …Ͳ?d ˆá >•ö? @  …β?d Èá ¼áá @  …ϲ?d â ˜‚n @  …в?d Hâ yÊ @  …Ѳ?d ˆâ †ºÉé @  …Ò²?d Èâ +Þ7 @  … Ó²?d ã áü  @  … Ô²?d Hã pëþ @  … Õ²?d ˆã …"ÿJ @  … Ö²?d Èã ³è” @  … ײ?d ä ÂoVC @  …ز?d Hä @þA @  …Ù²?d ˆä qöÏ^ @  …Ú²?d Èä ógØ€ @  …Û²?d å g­ú— @  …ܲ?d Hå å<íI @  …ݲ?d ˆå rnùý @  …Þ²?d Èå ðÿî# @  …ß²?d æ IÎX  @  …à²?d Hæ Ë_OÔ @  …á²?d ˆæ Wöÿ÷ @  …â²?d Èæ Õgè) @  …ã²?d ç A­Ê> @  …ä²?d Hç Ã<Ýà @  …å²?d ˆç TnÉT @  …æ²?d Èç ÖÿÞŠ @  …ç²?d è >’O @  …è²?d Hè ¼‘ @  …é²?d ˆè œ ¡â @  … ê²?d Èè œ¶< @  …!ë²?d é ŠV”+ @  …"ì²?d Hé ǃõ @  …#í²?d ˆé Ÿ•—A @  …$î²?d Èé €Ÿ @  …%ï²?d ê 9‚j @  …&ð²?d Hê »´ @  …'ñ²?d ˆê 'º¨— @  …(ò²?d Èê ¥+¿I @  …)ó²?d ë 1á^ @  …*ô²?d Hë ³pŠ€ @  …+õ²?d ˆë $"ž4 @  …,ö²?d Èë ¦³‰ê @  …-÷²?d ì co7= @  ….ø²?d Hì áþ ã @  …/ù²?d ˆì Ðö®  @  …0ú²?d Èì Rg¹þ @  …1û²?d í Æ­›é @  …2ü²?d Hí D<Œ7 @  …3ý²?d ˆí Ón˜ƒ @  …4þ²?d Èí Qÿ] @  …5ÿ²?d î z?-û @  …6³?d Hî ø®:% @  …7³?d ˆî dŠ @  …8³?d Èî æ–Ø @  …9³?d ï r\¿Ï @  …:³?d Hï ðͨ @  …;³?d ˆï gŸ¼¥ @  …<³?d Èï å«{ @  …=³?d ð ‡BZ @  …>³?d Hð ÓMÏ @  …? ³?d ˆð ‹Úâ. @  …@ ³?d Èð  Kõð @  …A ³?d ñ ×ç @  …B ³?d Hñ À9 @  …C ³?d ˆñ ˆBÔ @  …D³?d Èñ  ÓÃS @  …E³?d ò .UL¦ @  …F³?d Hò ¬Ä[x @  …G³?d ˆò 0më[ @  …H³?d Èò ²üü… @  …I³?d ó &6Þ’ @  …J³?d Hó ¤§ÉL @  …K³?d ˆó 3õÝø @  …L³?d Èó ±dÊ& @  …M³?d ô t¸tñ @  …N³?d Hô ö)c/ @  …O³?d ˆô Ç!íì @  …P³?d Èô E°ú2 @  …Q³?d õ ÑzØ% @  …R³?d Hõ SëÏû @  …S³?d ˆõ ĹÛO @  …T³?d Èõ F(Ì‘ @  …U³?d ö ÿz¸ @  …V ³?d Hö }ˆmf @  …W!³?d ˆö á!ÝE @  …X"³?d Èö c°Ê› @  …Y#³?d ÷ ÷zèŒ @  …Z$³?d H÷ uëÿR @  …[%³?d ˆ÷ â¹ëæ @  …\&³?d È÷ `(ü8 @  …]'³?d ø ˆE=ý @  …^(³?d Hø  Ô*# @  …_)³?d ˆø *ÚƒP @  …`*³?d Èø ¨K”Ž @  …a+³?d ù <¶™ @  …b,³?d Hù ¾¡G @  …c-³?d ˆù )Bµó @  …d.³?d Èù «Ó¢- @  …e/³?d ú U-Ø @  …f0³?d Hú  Ä: @  …g1³?d ˆú ‘mŠ% @  …h2³?d Èú üû @  …i3³?d û ‡6¿ì @  …j4³?d Hû §¨2 @  …k5³?d ˆû ’õ¼† @  …l6³?d Èû d«X @  …m7³?d ü Õ¸ @  …n8³?d Hü W)Q @  …o9³?d ˆü f!Œ’ @  …p:³?d Èü ä°›L @  …q;³?d ý pz¹[ @  …r<³?d Hý òë®… @  …s=³?d ˆý e¹º1 @  …t>³?d Èý ç(­ï @  …u?³?d þ ®I× @  …v@³?d Hþ ,Ø  @  …wA³?d ˆþ °q©* @  …xB³?d Èþ 2à¾ô @  …yC³?d ÿ ¦*œã @  …zD³?d Hÿ $»‹= @  …{E³?d ˆÿ ³éŸ‰ @  …|uÐ F³?d Èÿ 1xˆW @  …}G³?d Ø,× @  …~H³?d ` Z½ÀÏ @  …I³?d   7â_ @  …€J³?d à µsHÁ @  …K³?d  !¹jÖ @  …‚L³?d ` £(} @  …ƒM³?d   4zi¼ @  …„N³?d à ¶ë~b @  ……O³?d  ’mñ— @  …†P³?d ` üæI @  …‡Q³?d   ŒUVj @  …ˆR³?d à ÄA´ @  …‰S³?d  šc£ @  …ŠT³?d ` Ÿt} @  …‹U³?d   Í`É @  …ŒV³?d à  \w @  …W³?d  È€ÉÀ @  …ŽX³?d ` JÞ @  …Y³?d   {PÝ @  …Z³?d à ùˆG @  …‘[³?d  mBe @  …’\³?d ` ïÓrÊ @  …“]³?d   xf~ @  …”^³?d à úq  @  …•_³?d  C!lj @  …–`³?d ` Á°ÐW @  …—a³?d   ]`t @  …˜b³?d à ߈wª @  …™c³?d  KBU½ @  …šd³?d ` ÉÓBc @  …›e³?d   ^V× @  …œf³?d à ÜA  @  …g³?d  4}€Ì @  …žh³?d ` ¶ì— @  …Ÿi³?d   –â>a @  … j³?d à s)¿ @  …¡k³?d €¹ ¨ @  …¢l³?d ` (v @  …£m³?d   •z @  …¤n³?d à ë @  …¥o³?d 3mé @  …¦p³?d ` ±ü‡7 @  …§q³?d   -U7 @  …¨r³?d à ¯Ä Ê @  …©s³?d ;Ý @  …ªt³?d ` ¹Ÿ @  …«u³?d   .Í· @  …¬v³?d à ¬\i @  …­w³?d i€¨¾ @  …®x³?d ` ë¿` @  …¯y³?d   Ú1£ @  …°z³?d à Xˆ&} @  …±{³?d ÌBj @  …²|³?d ` NÓ´ @  …³}³?d   Ù @  …´~³?d à [Þ @  …µ³?d  ·çt @  …¶€³?d ` &ðª @  …·³?d   @‰ @  …¸‚³?d à “WW @  …¹ƒ³?d  Ôu@ @  …º„³?d ` …Ebž @  …»…³?d   v* @  …¼†³?d à †aô @  …½‡³?d  òÊž @  …¾ˆ³?d ` p[‡@ @  …¿‰³?d   þR(¡ @  …Àг?d à |Ã? @  …Á‹³?d  è h @  …ÂŒ³?d ` j˜ ¶ @  …ó?d   ýÊ @  …Ä޳?d à [ Ü @  …ų?d  [݆) @  …Ƴ?d ` ÙL‘÷ @  …Ç‘³?d   Eå!Ô @  …È’³?d à Çt6  @  …É“³?d  S¾ @  …Ê”³?d ` Ñ/à @  …Ë•³?d   F}w @  …Ì–³?d à Äì© @  …Í—³?d  0¾~ @  …Θ³?d ` ƒ¡©  @  …Ï™³?d   ²©'c @  …К³?d à 080½ @  …Ñ›³?d  ¤òª @  …Òœ³?d ` &ct @  …Ó³?d   ±1À @  …Ôž³?d à 3  @  …ÕŸ³?d  Š‘°7 @  …Ö ³?d ` §é @  …ס³?d   ”©Ê @  …Ø¢³?d à 8 @  …Ù£³?d  ‚ò" @  …Ú¤³?d ` c5Ý @  …Û¥³?d   —1!i @  …ܦ³?d à  6· @  …ݧ³?d  ýÍ÷r @  …Þ¨³?d ` \ଠ@  …ß©³?d   _RIß @  …ળ?d à ÝÃ^ @  …᫳?d  I | @  …⬳?d€ `  ßœÈ @  †­³?d   |ÌÀU @  †®³?d à þ]׋ @  †¯³?d  ’£“ @  †°³?d ` ´M @  †±³?d   Ï[ @  †²³?d à M‰LÊ @  †³³?d  ñ1§ @  †´³?d ` •`&y @  † µ³?d   Ç{É  @  † ¶³?d à EêÞþ @  † ·³?d  E›Ä @  † ¸³?d ` ÇîŒ @  † ¹³?d   •õcC @  †º³?d à dt @  †»³?d  à½7 @  †¼³?d ` b, Î @  †½³?d   07Ï— @  †¾³?d à ²¦ØI @  †¿³?d  >Ž€œ @  †À³?d ` ¼—B @  †Á³?d   îx @  †³?d à l•oÅ @  †ó?d  6í¨ @  †ij?d ` ´|v @  †ų?d   ægê/uÐ  @  †Ƴ?d à döýñ @  †dz?d 8  &•¢ @  †ȳ?d x Ž·‚| @  †ɳ?d ¸ ܬm% @  †ʳ?d ø ^=zû @  †˳?d 8! ¸âÆ @  † ̳?d x! :s  @  †!ͳ?d ¸! hhæA @  †"γ?d ø! êùñŸ @  †#ϳ?d 8"  6…‡ @  †$г?d x" ‰§’Y @  †%ѳ?d ¸" Û¼} @  †&Ò³?d ø" Y-jÞ @  †'Ó³?d 8# U³ @  †(Ô³?d x# Äm @  †)Õ³?d ¸# Óßï4 @  †*Ö³?d ø# QNøê @  †+׳?d 8$ Q۽Р@  †,س?d x$ ÓJª @  †-Ù³?d ¸$ QEW @  †.Ú³?d ø$ ÀR‰ @  †/Û³?d 8% ô @  †0ܳ?d x% vˆÚ @  †1ݳ?d ¸% $“éƒ @  †2Þ³?d ø% ¦þ] @  †3ß³?d 8& Úz³™ @  †4à³?d x& Xë¤G @  †5á³?d ¸&  ðK @  †6â³?d ø& ˆa\À @  †7ã³?d 8' Ò!­ @  †8ä³?d x' Pˆ6s @  †9å³?d ¸' “Ù* @  †:æ³?d ø' €Îô @  †;ç³?d 8( ­&ôÜ @  †<è³?d x( /·ã @  †=é³?d ¸( }¬ [ @  †>ê³?d ø( ÿ=… @  †?ë³?d 8) ·åy* @  †@ì³?d x) 5tnô @  †Aí³?d ¸) go­ @  †Bî³?d ø) åþ–s @  †Cï³?d 8* 1âk @  †Dð³?d x* † õµ @  †Eñ³?d ¸* Ô»ì @  †Fò³?d ø* V* 2 @  †Gó³?d 8+  Rp_ @  †Hô³?d x+ ŽÃg @  †Iõ³?d ¸+ ÜØˆØ @  †Jö³?d ø+ ^IŸ @  †K÷³?d 8, ^ÜÚ< @  †Lø³?d x, ÜMÍâ @  †Mù³?d ¸, ŽV"» @  †Nú³?d ø,  Ç5e @  †Oû³?d 8- ûvè @  †Pü³?d x- ya6 @  †Qý³?d ¸- +”Žo @  †Rþ³?d ø- ©™± @  †Sÿ³?d 8. {…ÿl @  †T´?d x. ùè² @  †U´?d ¸. «ë @  †V´?d ø. )ž5 @  †W´?d 8/ sæmX @  †X´?d x/ ñwz† @  †Y´?d ¸/ £l•ß @  †Z´?d ø/ !ý‚ @  †[´?d 80 †øˆ† @  †\´?d x0 iŸX @  †] ´?d ¸0 Vrp @  †^ ´?d ø0 Ôãgß @  †_ ´?d 81 2<â @  †` ´?d x1 °­< @  †a ´?d ¸1 â¶ûe @  †b´?d ø1 `'ì» @  †c´?d 82 蘣 @  †d´?d x2 y} @  †e´?d ¸2 Qb`$ @  †f´?d ø2 Óówú @  †g´?d 83 ‰‹ — @  †h´?d x3  I @  †i´?d ¸3 Yò @  †j´?d ø3 ÛåÎ @  †k´?d 84 Û ô @  †l´?d x4 Y”·* @  †m´?d ¸4  Xs @  †n´?d ø4 ‰O­ @  †o´?d 85 ~Ç  @  †p´?d x5 üVþ @  †q´?d ¸5 ®Mô§ @  †r´?d ø5 ,Üãy @  †s´?d 86 P¤®½ @  †t ´?d x6 Ò5¹c @  †u!´?d ¸6 €.V: @  †v"´?d ø6 ¿Aä @  †w#´?d 87 XÇ<‰ @  †x$´?d x7 ÚV+W @  †y%´?d ¸7 ˆMÄ @  †z&´?d ø7  ÜÓÐ @  †{'´?d 88 'øéø @  †|(´?d x8 ¥iþ& @  †})´?d ¸8 ÷r @  †~*´?d ø8 uã¡ @  †+´?d 89 ÞmT? @  †€,´?d x9 \üCá @  †-´?d ¸9 笸 @  †‚.´?d ø9 Œv»f @  †ƒ/´?d 8: m¹Ï~ @  †„0´?d x: ï(Ø  @  †…1´?d ¸: ½37ù @  ††2´?d ø: ?¢ ' @  †‡3´?d 8; eÚ]J @  †ˆ4´?d x; çKJ” @  †‰5´?d ¸; µP¥Í @  †Š6´?d ø; 7Á² @  †‹7´?d 8< 7T÷) @  †Œ8´?d x< µÅà÷ @  †9´?d ¸< çÞ® @  †Ž:´?d ø< eOp @  †;´?d 8= ’–[ý @  †<´?d x= L# @  †‘=´?d ¸= B£z @  †’>´?d ø= À´¤ @  †“?´?d 8> L¥ìq @  †”@´?d x> Î4û¯ @  †•A´?d ¸> œ/ö @  †–B´?d ø> ¾( @  †—C´?d 8? DÆ~E @  †˜D´?d x? ÆWi› @  †™E´?duÐ@ 7 ¸? ”L†Â @  †šF´?d ø? Ý‘ @  †›G´?d P@ ̪ @  †œH´?d @ ì_Ÿë @  †I´?d Ð@  e’ @  †žJ´?d A Ìhéz @  †ŸK´?d PA xnq @  † L´?d A X› @  †¡M´?d ÐA ¨äîö @  †¢N´?d B 5 N7 @  †£O´?d PB ˺0 @  †¤P´?d B ëOÎ @  †¥Q´?d ÐB 0u· @  †¦R´?d C Ëxù_ @  †§S´?d PC ÃÙ @  †¨T´?d C ã,ú @  †©U´?d ÐC Sçƒ @  †ªV´?d D  Œ @  †«W´?d PD ‘Wµg @  †¬X´?d D ±¢·™ @  †­Y´?d ÐD AÝMà @  †®Z´?d E ‘•Á @  †¯[´?d PE 4•³ @  †°\´?d E `M @  †±]´?d ÐE äá4 @  †²^´?d F y[Aõ @  †³_´?d PF ö». @  †´`´?d F :¹Ð @  †µa´?d ÐF Ê|C© @  †¶b´?d G 4ÏA @  †·c´?d PG •) @  †¸d´?d G 2`+ä @  †¹e´?d ÐG ÂÑ @  †ºf´?d H öà]€ @  †»g´?d PH mªük @  †¼h´?d H M_þ• @  †½i´?d ÐH ½ ì @  †¾j´?d I mhˆ @  †¿k´?d PI wiq @  †Àl´?d I Wœsc @  †Ám´?d ÐI §ã‰ @  †Ân´?d J :§)Û @  †Ão´?d PJ ĽêÜ @  †Äp´?d J äHè" @  †Åq´?d ÐJ 7[ @  †Ær´?d K Äž³ @  †Çs´?d PK ÌÞxè @  †Èt´?d K ì+z @  †Éu´?d ÐK T€o @  †Êv´?d L s` @  †Ëw´?d PL žPÒ‹ @  †Ìx´?d L ¾¥Ðu @  †Íy´?d ÐL NÚ*  @  †Îz´?d M ž’¦ä @  †Ï{´?d PM ;’~_ @  †Ð|´?d M g|¡ @  †Ñ}´?d ÐM ë†Ø @  †Ò~´?d N v\& @  †Ó´?d PN øgA @  †Ô€´?d N Ø’Ÿ¿ @  †Õ´?d ÐN (íeÆ @  †Ö‚´?d O ø¥é. @  †×ƒ´?d PO ðu @  †Ø„´?d O Ðñ ‹ @  †Ù…´?d ÐO  Ž÷ò @  †Ú†´?d P žPK@ @  †Û‡´?d PP ê« @  †Üˆ´?d P %ïèU @  †Ý‰´?d ÐP Õ, @  †ÞŠ´?d Q ØžÄ @  †ß‹´?d PQ ±ÞaÏ @  †àŒ´?d Q ‘+c1 @  †á´?d ÐQ aT™H @  †âŽ´?d€ R ˆÓ%/ @  ‡´?d PR —ˆ® @  ‡´?d R ·}¬ÿ @  ‡‘´?d ÐR ‚K­k @  ‡’´?d S R!ƒ @  ‡“´?d PS ”˜¢ @  ‡”´?d S ´åš\ @  ‡•´?d ÐS Š(?_ @  ‡–´?d T “fÌP @  ‡ —´?d PT Íe–V @  ‡ ˜´?d T 픨 @  ‡ ™´?d ÐT ئ•< @  ‡ š´?d U îÔ @  ‡ ›´?d PU Îý õ @  ‡œ´?d U î¢  @  ‡´?d ÐU }d9è @  ‡ž´?d V à ™) @  ‡Ÿ´?d PV FĘ @  ‡ ´?d V f1šá @  ‡¡´?d ÐV S›u @  ‡¢´?d W ƒO @  ‡£´?d PW E\®¼ @  ‡¤´?d W e©¬B @  ‡¥´?d ÐW [d A @  ‡¦´?d X o›…\ @  ‡§´?d PX 1˜ßZ @  ‡¨´?d X mݤ @  ‡©´?d ÐX $[Ü0 @  ‡ª´?d Y ôPØ @  ‡«´?d PY 2éù @  ‡¬´?d Y õë @  ‡­´?d ÐY ŸWT @  ‡ ®´?d Z  Û÷• @  ‡!¯´?d PZ 6ˆÏ @  ‡"°´?d Z }Í @  ‡#±´?d ÐZ #KÌ @  ‡$²´?d [ ó@ý @  ‡%³´?d P[ 5ùÜ @  ‡&´´?d [ åû" @  ‡'µ´?d Ð[ +(^! @  ‡(¶´?d \ 2f­. @  ‡)·´?d P\ le÷( @  ‡*¸´?d \ LõÖ @  ‡+¹´?d Ð\ y¦ôB @  ‡,º´?d ] ©îxª @  ‡-»´?d P] oýÁ‹ @  ‡.¼´?d ] OÃu @  ‡/½´?d Ð] ÜdX– @  ‡0¾´?d ^ A øW @  ‡1¿´?d P^ ”ìp @  ‡2À´?d ^ 7aîŽ @  ‡3Á´?d Ð^ Wï @  ‡4´?d _ Òcò @  ‡5ô?d P_  ÚÓ @  ‡6Ä´?d _ 4ùØ- @  ‡uÐ` 7Å´?d Ð_  4}. @  ‡8Æ´?d (` ´Ìȶ @  ‡9Ç´?d h` êÏ’° @  ‡:È´?d ¨` Ê:N @  ‡;É´?d è` ÿ ‘Ú @  ‡<Ê´?d (a /D2 @  ‡=Ë´?d ha éW¤ @  ‡>Ì´?d ¨a É¢¦í @  ‡?Í´?d èa åÏ, @  ‡@δ?d (b x‹¼í @  ‡AÏ´?d hb CØ„ @  ‡Bд?d ¨b c-†ù @  ‡CÑ´?d èb V‡m @  ‡DÒ´?d (c †S … @  ‡EÓ´?d hc @@²¤ @  ‡FÔ´?d ¨c `µ°Z @  ‡GÕ´?d èc ^xY @  ‡HÖ´?d (d G6æV @  ‡I×´?d hd 5¼P @  ‡JØ´?d ¨d 9À¾® @  ‡KÙ´?d èd  ö¿: @  ‡LÚ´?d (e ܾ3Ò @  ‡MÛ´?d he ­Šó @  ‡NÜ´?d ¨e :Xˆ  @  ‡OÝ´?d èe ©4î @  ‡PÞ´?d (f 4p³/ @  ‡Qß´?d hf ’”² @  ‡Rà´?d ¨f ²a°ç @  ‡Sá´?d èf ‡W±s @  ‡Tâ´?d (g W=› @  ‡Uã´?d hg ‘ „º @  ‡Vä´?d ¨g ±ù†D @  ‡Wå´?d èg 4#G @  ‡Xæ´?d (h »Ë¯Z @  ‡Yç´?d hh åÈõ\ @  ‡Zè´?d ¨h Å=÷¢ @  ‡[é´?d èh ð ö6 @  ‡\ê´?d (i  CzÞ @  ‡]ë´?d hi æPÃÿ @  ‡^ì´?d ¨i Æ¥Á @  ‡_í´?d èi DÏ}R @  ‡`î´?d (j Ù‹Ý“ @  ‡aï´?d hj âØåy @  ‡bð´?d ¨j Â-ç‡ @  ‡cñ´?d èj ÷æ @  ‡dò´?d (k 'Sjû @  ‡eó´?d hk á@ÓÚ @  ‡fô´?d ¨k ÁµÑ$ @  ‡gõ´?d èk ÿxt' @  ‡hö´?d (l æ6‡( @  ‡i÷´?d hl ¸5Ý. @  ‡jø´?d ¨l ˜ÀßÐ @  ‡kù´?d èl ­öÞD @  ‡lú´?d (m }¾R¬ @  ‡mû´?d hm »­ë @  ‡nü´?d ¨m ›Xés @  ‡oý´?d èm 4r @  ‡pþ´?d (n •pÒQ @  ‡qÿ´?d hn ¡eÇè @  ‡rµ?d ¨n Å @  ‡sµ?d èn ´¦Ä‚ @  ‡tµ?d (o dîHj @  ‡uµ?d ho ¢ýñK @  ‡vµ?d ¨o ‚óµ @  ‡wµ?d èo ¼ÅV¶ @  ‡xµ?d (p ê @  ‡yµ?d hp \° @  ‡zµ?d ¨p |í²ü @  ‡{ µ?d èp IÛ³h @  ‡| µ?d (q ™“?€ @  ‡} µ?d hq _€†¡ @  ‡~ µ?d ¨q u„_ @  ‡ µ?d èq °N¯ @  ‡€µ?d (r - ®n @  ‡µ?d hr Y–„ @  ‡‚µ?d ¨r 6¬”z @  ‡ƒµ?d èr š•î @  ‡„µ?d (s ÓÒ @  ‡…µ?d hs Á ' @  ‡†µ?d ¨s 54¢Ù @  ‡‡µ?d ès  ùÚ @  ‡ˆµ?d (t ·ôÕ @  ‡‰µ?d ht L´®Ó @  ‡Šµ?d ¨t lA¬- @  ‡‹µ?d èt Yw­¹ @  ‡Œµ?d (u ‰?!Q @  ‡µ?d hu O,˜p @  ‡Žµ?d ¨u oÙšŽ @  ‡µ?d èu üµm @  ‡µ?d (v añ¡¬ @  ‡‘µ?d hv Ç š @  ‡’ µ?d ¨v çà¢d @  ‡“!µ?d èv ÒÖ£ð @  ‡”"µ?d (w ž/ @  ‡•#µ?d hw Ä–9 @  ‡–$µ?d ¨w äx”Ç @  ‡—%µ?d èw Úµ1Ä @  ‡˜&µ?d (x îJ½Ù @  ‡™'µ?d hx °Içß @  ‡š(µ?d ¨x ¼å! @  ‡›)µ?d èx ¥Šäµ @  ‡œ*µ?d (y uÂh] @  ‡+µ?d hy ³ÑÑ| @  ‡ž,µ?d ¨y “$Ó‚ @  ‡Ÿ-µ?d èy NoÑ @  ‡ .µ?d (z Œ Ï @  ‡¡/µ?d hz ·Y÷ú @  ‡¢0µ?d ¨z —¬õ @  ‡£1µ?d èz ¢šô @  ‡¤2µ?d ({ rÒxx @  ‡¥3µ?d h{ ´ÁÁY @  ‡¦4µ?d ¨{ ”4ç @  ‡§5µ?d è{ ªùf¤ @  ‡¨6µ?d (| ³·•« @  ‡©7µ?d h| í´Ï­ @  ‡ª8µ?d ¨| ÍAÍS @  ‡«9µ?d è| øwÌÇ @  ‡¬:µ?d (} (?@/ @  ‡­;µ?d h} î,ù @  ‡®<µ?d ¨} ÎÙûð @  ‡¯=µ?d è} ]µ` @  ‡°>µ?d (~ ÀñÀÒ @  ‡±?µ?d h~ –EÔõ @  ‡²@µ?d ¨~ ¶°Ö  @  ‡³Aµ?d è~ ƒ†×Ÿ @  ‡´Bµ?d ( SÎ[w @  ‡µCµ?d h •ÝâV @  ‡¶Dµ?d ¨ uЀ 'µ(ਠ@  ‡·Eµ?d è ‹åE« @  ‡¸Fµ?d @€ å[§ß @  ‡¹Gµ?d €€ <èù @  ‡ºHµ?d À€ ›­ÿ' @  ‡»Iµ?d üBe… @  ‡¼Jµ?d @ ~Ór[ @  ‡½Kµ?d € ¤ÞZ @  ‡¾Lµ?d À ˜5É„ @  ‡¿Mµ?d ‚ «ÄZ @  ‡ÀNµ?d @‚ )Ó„ @  ‡ÁOµ?d €‚ °+þN @  ‡ÂPµ?d À‚ 2ºé @  ‡ÃQµ?d ƒ UUs2 @  ‡ÄRµ?d @ƒ ×Ädì @  ‡ÅSµ?d €ƒ ³³Èí @  ‡ÆTµ?d Àƒ 1"ß3 @  ‡ÇUµ?d „ ”0žá @  ‡ÈVµ?d @„ ¡‰? @  ‡ÉWµ?d €„ êÆÆ @  ‡ÊXµ?d À„ hWÑÇ @  ‡ËYµ?d … ¸Ke @  ‡ÌZµ?d @… )\» @  ‡Í[µ?d €… é^ðº @  ‡Î\µ?d À… kÏçd @  ‡Ï]µ?d † çv˘ @  ‡Ð^µ?d @† eçÜF @  ‡Ñ_µ?d €† agÈP @  ‡Ò`µ?d À† ãöߎ @  ‡Óaµ?d ‡ „E, @  ‡Ôbµ?d @‡ ˆRò @  ‡Õcµ?d €‡ bÿþó @  ‡Ödµ?d À‡ àné- @  ‡×eµ?d ˆ hÍ×í @  ‡Øfµ?d @ˆ ê\À3 @  ‡Ùgµ?d €ˆ ; @  ‡Úhµ?d Àˆ ”ª˜Ë @  ‡Ûiµ?d ‰ óEi @  ‡Üjµ?d @‰ qÔ· @  ‡Ýkµ?d €‰ £¹¶ @  ‡Þlµ?d À‰ —2®h @  ‡ßmµ?d Š  ¥$ @  ‡ànµ?d @Š ˆ²ú @  ‡áoµ?d €Š +Ÿ0 @  ‡âpµ?d€ ÀŠ » œ¼ @  ˆqµ?d ‹ =ŽN7 @  ˆrµ?d @‹ ¿Yé @  ˆsµ?d €‹ ! @  ˆtµ?d À‹ œ°Û @  ˆuµ?d Œ ÷s @  ˆvµ?d @Œ u­ @  ˆwµ?d €Œ GTñ @  ˆxµ?d ÀŒ ÅÅ/ @  ˆ yµ?d gcv` @  ˆ zµ?d @ åòa¾ @  ˆ {µ?d € DÌ6R @  ˆ |µ?d À Æ]!Œ @  ˆ }µ?d Ž )÷lê @  ˆ~µ?d @Ž «f{4 @  ˆµ?d €Ž !cO; @  ˆ€µ?d ÀŽ £òXå @  ˆµ?d T9ª @  ˆ‚µ?d @ ƒÅ.t @  ˆƒµ?d € "ûy˜ @  ˆ„µ?d À  jnF @  ˆ…µ?d lZ?S @  ˆ†µ?d @ îË( @  ˆ‡µ?d € Ü8Ñ @  ˆˆµ?d À ^/ @  ˆ‰µ?d ‘ ü)N@ @  ˆе?d @‘ ~¸Yž @  ˆ‹µ?d €‘ ߆r @  ˆŒµ?d À‘ ]¬ @  ˆµ?d ’ ²½TÊ @  ˆ޵?d @’ 0,C @  ˆµ?d €’ Û(ô @  ˆ µ?d À’ YŸ?* @  ˆ!‘µ?d “ û9^e @  ˆ"’µ?d @“ y¨I» @  ˆ#“µ?d €“ Ø–W @  ˆ$”µ?d À“ Z ‰ @  ˆ%•µ?d ” 1§! @  ˆ&–µ?d @” ³6ÿ @  ˆ'—µ?d €” 㣠@  ˆ(˜µ?d À” r} @  ˆ)™µ?d • ¡Ôf2 @  ˆ*šµ?d @• #Eqì @  ˆ+›µ?d €• ‚{& @  ˆ,œµ?d À• ê1Þ @  ˆ-µ?d – ï@|¸ @  ˆ.žµ?d @– mÑkf @  ˆ/Ÿµ?d €–  Bê @  ˆ0 µ?d À– ˆÓ 4 @  ˆ1¡µ?d — *uh{ @  ˆ2¢µ?d @— ¨ä¥ @  ˆ3£µ?d €—  Ú(I @  ˆ4¤µ?d À— ‹K?— @  ˆ5¥µ?d ˜ ÍZ^- @  ˆ6¦µ?d @˜ OËIó @  ˆ7§µ?d €˜ }Y¯ @  ˆ8¨µ?d À˜ ÿNq @  ˆ9©µ?d ™ ])/> @  ˆ:ªµ?d @™ ߸8à @  ˆ;«µ?d €™ ~†o  @  ˆ<¬µ?d À™ üxÒ @  ˆ=­µ?d š ½5´ @  ˆ>®µ?d @š ‘,"j @  ˆ?¯µ?d €š Ô O @  ˆ@°µ?d Àš V˜XÆ @  ˆA±µ?d › ô>9‰ @  ˆB²µ?d @› v¯.W @  ˆC³µ?d €› בy» @  ˆD´µ?d À› Une @  ˆEµµ?d œ > pÍ @  ˆF¶µ?d @œ ¼1g @  ˆG·µ?d €œ ŽäwO @  ˆH¸µ?d Àœ  u`‘ @  ˆI¹µ?d ®ÓÞ @  ˆJºµ?d @ ,B @  ˆK»µ?d € |Aì @  ˆL¼µ?d À íV2 @  ˆM½µ?d ž àGT @  ˆN¾µ?d @ž bÖ Š @  ˆO¿µ?d €ž õl @  ˆPÀµ?d Àž w„{É @  ˆQÁµ?d Ÿ Õ"† @  ˆRµ?d @Ÿ W³ X @  ˆSõ?d €Ÿ öZ´ @  ˆTĵuР ?d ÀŸ tMj @  ˆUŵ?d   wù~« @  ˆVƵ?d X  õhiu @  ˆWǵ?d ˜  ǽy) @  ˆXȵ?d Ø  E,n÷ @  ˆYɵ?d ¡ 犸 @  ˆZʵ?d X¡ ef @  ˆ[˵?d ˜¡ Ä%OŠ @  ˆ\̵?d Ø¡ F´XT @  ˆ]͵?d ¢ ©2 @  ˆ^ε?d X¢ +ì @  ˆ_ϵ?d ˜¢ À­i  @  ˆ`е?d Ø¢ B<~Ò @  ˆaѵ?d £ àš @  ˆbÒµ?d X£ b C @  ˆcÓµ?d ˜£ Ã5_¯ @  ˆdÔµ?d Ø£ A¤Hq @  ˆeÕµ?d ¤ *VÙ @  ˆfÖµ?d X¤ ¨•A @  ˆg×µ?d ˜¤ š@Q[ @  ˆhص?d ؤ ÑF… @  ˆiÙµ?d ¥ ºw'Ê @  ˆjÚµ?d X¥ 8æ0 @  ˆkÛµ?d ˜¥ ™Øgø @  ˆlܵ?d Ø¥ Ip& @  ˆmݵ?d ¦ ôã=@ @  ˆnÞµ?d X¦ vr*ž @  ˆoßµ?d ˜¦ á_ @  ˆpàµ?d ئ “pHÌ @  ˆqáµ?d § 1Ö)ƒ @  ˆrâµ?d X§ ³G>] @  ˆsãµ?d ˜§ yi± @  ˆtäµ?d ا è~o @  ˆuåµ?d ¨ ÖùÕ @  ˆvæµ?d X¨ Th  @  ˆwçµ?d ˜¨ f½W @  ˆxèµ?d ب ä,‰ @  ˆyéµ?d © FŠnÆ @  ˆzêµ?d X© Äy @  ˆ{ëµ?d ˜© e%.ô @  ˆ|ìµ?d Ø© ç´9* @  ˆ}íµ?d ª tL @  ˆ~îµ?d Xª Šc’ @  ˆïµ?d ˜ª ,ü>Ñ @  ˆ€ðµ?d ت ®m) @  ˆñµ?d «  ËH@ @  ˆ‚òµ?d X« ŽZ_ž @  ˆƒóµ?d ˜« /dr @  ˆ„ôµ?d Ø« ­õ¬ @  ˆ…õµ?d ¬ ÆU @  ˆ†öµ?d X¬ DÄÚ @  ˆ‡÷µ?d ˜¬ v† @  ˆˆøµ?d ج ô€X @  ˆ‰ùµ?d ­ V&p @  ˆŠúµ?d X­ Ô·gÉ @  ˆ‹ûµ?d ˜­ u‰0% @  ˆŒüµ?d Ø­ ÷'û @  ˆýµ?d ® ²j @  ˆŽþµ?d X® š#}C @  ˆÿµ?d ˜® Ýc)e @  ˆ¶?d Ø® _ò>» @  ˆ‘¶?d ¯ ýT_ô @  ˆ’¶?d X¯ ÅH* @  ˆ“¶?d ˜¯ ÞûÆ @  ˆ”¶?d د \j @  ˆ•¶?d ° ZY  @  ˆ–¶?d X° ËNÓ @  ˆ—¶?d ˜°  ^ @  ˆ˜¶?d ذ ¢IQ @  ˆ™ ¶?d ± )( @  ˆš ¶?d X± ‚¸?À @  ˆ› ¶?d ˜± #†h, @  ˆœ ¶?d ر ¡ò @  ˆ ¶?d ² N½2” @  ˆž¶?d X² Ì,%J @  ˆŸ¶?d ˜² 'Nª @  ˆ ¶?d ز ¥ŸYt @  ˆ¡¶?d ³ 98; @  ˆ¢¶?d X³ …¨/å @  ˆ£¶?d ˜³ $–x  @  ˆ¤¶?d س ¦o× @  ˆ¥¶?d ´ ͧq @  ˆ¦¶?d X´ O6f¡ @  ˆ§¶?d ˜´ }ãvý @  ˆ¨¶?d Ø´ ÿra# @  ˆ©¶?d µ ]Ôl @  ˆª¶?d Xµ ßE² @  ˆ«¶?d ˜µ ~{@^ @  ˆ¬¶?d ص üêW€ @  ˆ­¶?d ¶ @æ @  ˆ®¶?d X¶ ‘Ñ 8 @  ˆ¯¶?d ˜¶ öBx´ @  ˆ° ¶?d ض tÓoj @  ˆ±!¶?d · Öu% @  ˆ²"¶?d X· Täû @  ˆ³#¶?d ˜· õÚN @  ˆ´$¶?d Ø· wKYÉ @  ˆµ%¶?d ¸ 1Z8s @  ˆ¶&¶?d X¸ ³Ë/­ @  ˆ·'¶?d ˜¸ ?ñ @  ˆ¸(¶?d ظ (/ @  ˆ¹)¶?d ¹ ¡)I` @  ˆº*¶?d X¹ #¸^¾ @  ˆ»+¶?d ˜¹ ‚† R @  ˆ¼,¶?d ع Œ @  ˆ½-¶?d º ï½Sê @  ˆ¾.¶?d Xº m,D4 @  ˆ¿/¶?d ˜º ( )F @  ˆÀ0¶?d غ ª˜>˜ @  ˆÁ1¶?d » >_× @  ˆÂ2¶?d X» НH  @  ˆÃ3¶?d ˜» +‘å @  ˆÄ4¶?d Ø» ©; @  ˆÅ5¶?d ¼  “ @  ˆÆ6¶?d X¼ @1M @  ˆÇ7¶?d ˜¼ rä @  ˆÈ8¶?d ؼ ðuÏ @  ˆÉ9¶?d ½ RÓg€ @  ˆÊ:¶?d X½ ÐBp^ @  ˆË;¶?d ˜½ q|'² @  ˆÌ<¶?d ؽ óí0l @  ˆÍ=¶?d ¾ G}  @  ˆÎ>¶?d X¾ žÖjÔ @  ˆÏ?¶?d ˜¾   I @  ˆÐ@¶?d ؾ ‹„— @  ˆÑA¶?d ¿ )"|Ø @  ˆÒB¶?d X¿ «³k @  ˆÓC¶?d ˜¿  <ê @uÐÀ   ˆÔD¶?d Ø¿ ˆ+4 @  ˆÕE¶?d 0À ž—Á @  ˆÖF¶?d pÀ “€ @  ˆ×G¶?d °À .FC @  ˆØH¶?d ðÀ ¬×‡ @  ˆÙI¶?d 0Á qæÒ @  ˆÚJ¶?d pÁ Œàñ  @  ˆÛK¶?d °Á -Þ¦à @  ˆÜL¶?d ðÁ ¯O±> @  ˆÝM¶?d 0 @åüX @  ˆÞN¶?d p Âtë† @  ˆßO¶?d °Â )V€f @  ˆàP¶?d ð «Ç—¸ @  ˆáQ¶?d 0à  aö÷ @  ˆâR¶?d€ pà ÿ3ý @  ‰S¶?d °Ã ¿LâJ @  ‰T¶?d ðà =Ýõ” @  ‰U¶?d 0Ä “4Ñ @  ‰V¶?d pÄ ¥ @  ‰W¶?d °Ä íÂH) @  ‰X¶?d ðÄ oS_÷ @  ‰Y¶?d 0Å Ga @  ‰Z¶?d pÅ Öv @  ‰ [¶?d °Å å¡Ú @  ‰ \¶?d ðÅ g0Íà @  ‰ ]¶?d 0Æ MÓ{H @  ‰ ^¶?d pÆ ÏBl– @  ‰ _¶?d °Æ ËÂx€ @  ‰`¶?d ðÆ ISo^ @  ‰a¶?d 0Ç ˆæo‹ @  ‰b¶?d pÇ  wxU @  ‰c¶?d °Ç nÔT @  ‰d¶?d ðÇ ì‘Ê @  ‰e¶?d 0È oÉYÝ @  ‰f¶?d pÈ íXN @  ‰g¶?d °È ?% @  ‰h¶?d ðÈ “®û @  ‰i¶?d 0É ÿº(Î @  ‰j¶?d pÉ }+? @  ‰k¶?d °É \“ @  ‰l¶?d ðÉ ›Í„Ï @  ‰m¶?d 0Ê ±.2D @  ‰n¶?d pÊ 3¿%š @  ‰o¶?d °Ê ªˆP @  ‰p¶?d ðÊ (Ž @  ‰q¶?d 0Ë øª8ë @  ‰ r¶?d pË z;/5 @  ‰!s¶?d °Ë Lƒ4 @  ‰"t¶?d ðË œÝ”ê @  ‰#u¶?d 0Ì 24q¯ @  ‰$v¶?d pÌ °¥fq @  ‰%w¶?d °Ì LÂ)W @  ‰&x¶?d ðÌ ÎS>‰ @  ‰'y¶?d 0Í ¢G¼ @  ‰(z¶?d pÍ  Öb @  ‰){¶?d °Í D¡»c @  ‰*|¶?d ðÍ Æ0¬½ @  ‰+}¶?d 0Î ìÓ6 @  ‰,~¶?d pÎ nB è @  ‰-¶?d °Î ‡TX} @  ‰.€¶?d ðÎ ÅO£ @  ‰/¶?d 0Ï ÄpOv @  ‰0‚¶?d pÏ FáX¨ @  ‰1ƒ¶?d °Ï "–ô© @  ‰2„¶?d ðÏ  ãw @  ‰3…¶?d 0Ð ©~I @  ‰4†¶?d pÐ +ï^Q @  ‰5‡¶?d °Ð ׈w @  ‰6ˆ¶?d ðÐ U© @  ‰7‰¶?d 0Ñ 9 8œ @  ‰8ж?d pÑ »œ/B @  ‰9‹¶?d °Ñ ßëƒC @  ‰:Œ¶?d ðÑ ]z” @  ‰;¶?d 0Ò w™" @  ‰<޶?d pÒ õ5È @  ‰=¶?d °Ò l? @  ‰>¶?d ðÒ î®Ü @  ‰?‘¶?d 0Ó .+ @  ‰@’¶?d pÓ ‹9õ @  ‰A“¶?d °Ó vü•ô @  ‰B”¶?d ðÓ ôm‚* @  ‰C•¶?d 0Ô Z„go @  ‰D–¶?d pÔ Øp± @  ‰E—¶?d °Ô $r?— @  ‰F˜¶?d ðÔ ¦ã(I @  ‰G™¶?d 0Õ Ê÷| @  ‰Hš¶?d pÕ Hf¢ @  ‰I›¶?d °Õ ,­£ @  ‰Jœ¶?d ðÕ ®€º} @  ‰K¶?d 0Ö „c ö @  ‰Lž¶?d pÖ ò( @  ‰MŸ¶?d °Ö r> @  ‰N ¶?d ðÖ €ãà @  ‰O¡¶?d 0× AV5 @  ‰P¢¶?d p× ÃÇë @  ‰Q£¶?d °× §°£ê @  ‰R¤¶?d ð× %!´4 @  ‰S¥¶?d 0Ø ¦y.c @  ‰T¦¶?d pØ $è9½ @  ‰U§¶?d °Ø Øv› @  ‰V¨¶?d ðØ ZaE @  ‰W©¶?d 0Ù 6 _p @  ‰Xª¶?d pÙ ´›H® @  ‰Y«¶?d °Ù Ðìä¯ @  ‰Z¬¶?d ðÙ R}óq @  ‰[­¶?d 0Ú xžEú @  ‰\®¶?d pÚ úR$ @  ‰]¯¶?d °Ú c8î @  ‰^°¶?d ðÚ á©h0 @  ‰_±¶?d 0Û 1OU @  ‰`²¶?d pÛ ³‹X‹ @  ‰a³¶?d °Û ×üôŠ @  ‰b´¶?d ðÛ UmãT @  ‰cµ¶?d 0Ü û„ @  ‰d¶¶?d pÜ yÏ @  ‰e·¶?d °Ü …r^é @  ‰f¸¶?d ðÜ ãI7 @  ‰g¹¶?d 0Ý k÷w @  ‰hº¶?d pÝ éf`Ü @  ‰i»¶?d °Ý ÌÝ @  ‰j¼¶?d ðÝ €Û @  ‰k½¶?d 0Þ %cmˆ @  ‰l¾¶?d pÞ §òzV @  ‰m¿¶?d °Þ S"{Q @  ‰nÀ¶?d ðÞ ѳl @  ‰oÁ¶?d 0ß lZ @  ‰p¶?d pß ’—{„ @  ‰qö?d uÐà /°ß öà×… @  ‰rĶ?d ðß tqÀ[ @  ‰sŶ?d Hà Úrˆç @  ‰tƶ?d ˆà ú‡Š @  ‰uǶ?d Èà ¤„Ð @  ‰vȶ?d á tÌ\÷ @  ‰wɶ?d Há Jùô @  ‰xʶ?d ˆá jôû  @  ‰y˶?d Èá ¬çB+ @  ‰z̶?d â 1£âê @  ‰{Ͷ?d Hâ •ã~ @  ‰|ζ?d ˆâ $`ဠ@  ‰}϶?d Èâ 3Ùj @  ‰~ж?d ã Ï{U‚ @  ‰Ѷ?d Hã @ßr @  ‰€Ò¶?d ˆã  µÝŒ @  ‰Ó¶?d Èã æ¦d­ @  ‰‚Ô¶?d ä ÿè—¢ @  ‰ƒÕ¶?d Hä ÊÞ–6 @  ‰„Ö¶?d ˆä ê+”È @  ‰…×¶?d Èä ´(ÎÎ @  ‰†ض?d å d`B& @  ‰‡Ù¶?d Hå Z­ç% @  ‰ˆÚ¶?d ˆå zXåÛ @  ‰‰Û¶?d Èå ¼K\ú @  ‰Šܶ?d æ !ü; @  ‰‹ݶ?d Hæ 9ý¯ @  ‰ŒÞ¶?d ˆæ 4ÌÿQ @  ‰ß¶?d Èæ ’(þg @  ‰Žà¶?d ç B`r @  ‰á¶?d Hç Ñ él @  ‰â¶?d ˆç ñùë’ @  ‰‘ã¶?d Èç 7êR³ @  ‰’ä¶?d è Þ® @  ‰“å¶?d Hè 6#ß: @  ‰”æ¶?d ˆè ÖÝÄ @  ‰•ç¶?d Èè HՇ @  ‰–è¶?d é ˜ * @  ‰—é¶?d Hé ¦P®) @  ‰˜ê¶?d ˆé †¥¬× @  ‰™ë¶?d Èé @¶ö @  ‰šì¶?d ê Ýòµ7 @  ‰›í¶?d Hê èÄ´£ @  ‰œî¶?d ˆê È1¶] @  ‰ï¶?d Èê óbŽ· @  ‰žð¶?d ë #*_ @  ‰Ÿñ¶?d Hë ¡@¾  @  ‰ ò¶?d ˆë µ¼ò @  ‰¡ó¶?d Èë G¦Ó @  ‰¢ô¶?d ì ^èöÜ @  ‰£õ¶?d Hì kÞ÷H @  ‰¤ö¶?d ˆì K+õ¶ @  ‰¥÷¶?d Èì (¯° @  ‰¦ø¶?d í Å`#X @  ‰§ù¶?d Hí û­†[ @  ‰¨ú¶?d ˆí ÛX„¥ @  ‰©û¶?d Èí K=„ @  ‰ªü¶?d î €E @  ‰«ý¶?d Hî µ9œÑ @  ‰¬þ¶?d ˆî •Ìž/ @  ‰­ÿ¶?d Èî ¡Ù‹– @  ‰®·?d ï q‘~ @  ‰¯·?d Hï âýœ @  ‰°·?d ˆï žc @  ‰±·?d Èï 'B @  ‰²·?d ð ºÅ›ð @  ‰³·?d Hð óšd @  ‰´·?d ˆð ¯˜š @  ‰µ·?d Èð ñœ @  ‰¶·?d ñ !MNt @  ‰· ·?d Hñ €ëw @  ‰¸ ·?d ˆñ ?ué‰ @  ‰¹ ·?d Èñ ùfP¨ @  ‰º ·?d ò d"ði @  ‰» ·?d Hò Qñý @  ‰¼·?d ˆò qáó @  ‰½·?d Èò J²Ëé @  ‰¾·?d ó šúG @  ‰¿·?d Hó ¶—ýÀ @  ‰À·?d ˆó –bÿ> @  ‰Á·?d Èó PqF @  ‰Â·?d ô I?µ @  ‰Ã·?d Hô | ´„ @  ‰Ä·?d ˆô \ü¶z @  ‰Å·?d Èô ÿì| @  ‰Æ·?d õ Ò·`” @  ‰Ç·?d Hõ ìzÅ— @  ‰È·?d ˆõ ÌÇi @  ‰É·?d Èõ  œ~H @  ‰Ê·?d ö —ØÞ‰ @  ‰Ë·?d Hö ¢îß @  ‰Ì·?d ˆö ‚Ýã @  ‰Í·?d Èö $ÿÜÕ @  ‰Î ·?d ÷ ô·P= @  ‰Ï!·?d H÷ gÛËÞ @  ‰Ð"·?d ˆ÷ G.É  @  ‰Ñ#·?d È÷ =p @  ‰Ò$·?d ø µÂü @  ‰Ó%·?d Hø €ôýˆ @  ‰Ô&·?d ˆø  ÿv @  ‰Õ'·?d Èø þ¥p @  ‰Ö(·?d ù .J)˜ @  ‰×)·?d Hù ‡Œ› @  ‰Ø*·?d ˆù 0rŽe @  ‰Ù+·?d Èù öa7D @  ‰Ú,·?d ú k%—… @  ‰Û-·?d Hú ^– @  ‰Ü.·?d ˆú ~æ”ï @  ‰Ý/·?d Èú Eµ¬ @  ‰Þ0·?d û •ý í @  ‰ß1·?d Hû —œ¾ @  ‰à2·?d ˆû 7bž@ @  ‰á3·?d Èû ñq'a @  ‰â4·?d€ ü )x#n @  Š5·?d Hü ýjÓ @  Š6·?d ˆü Ýúh- @  Š7·?d Èü F°ÉÆ @  Š8·?d ý –øE. @  Š9·?d Hý f‡¿W @  Š:·?d ˆý Fr½© @  Š;·?d Èý NÓ[ò @  Š<·?d þ Ó—û3 @  Š =·?d Hþ #èJ @  Š >·?d ˆþ ´ @  Š ?·?d Èþ àì~ @  Š @·?d ÿ @¨`– @  Š A·?d Hÿ °×šï @  ŠB·?d ˆÿ "˜ @  ŠuÐ C·?d Èÿ 5"@ª @  ŠD·?d z–h[ @  ŠE·?d ` Šé’" @  ŠF·?d   ªÜ @  ŠG·?d à 1V17 @  ŠH·?d  á½ß @  ŠI·?d ` aG¦ @  ŠJ·?d   1”EX @  ŠK·?d à 95£ @  ŠL·?d  ¤q @  ŠM·?d ` Tù» @  ŠN·?d   tûûE @  ŠO·?d à Šá8B @  ŠP·?d  Z©´ª @  ŠQ·?d ` ªÖNÓ @  ŠR·?d   Š#L- @  ŠS·?d à >%³& @  Š T·?d  'k@) @  Š!U·?d ` ׺P @  Š"V·?d   ÷Ḯ @  Š#W·?d à l«E @  Š$X·?d  ¼ã•­ @  Š%Y·?d ` LœoÔ @  Š&Z·?d   lim* @  Š'[·?d à dÈ‹q @  Š(\·?d  ùŒ+° @  Š)]·?d `  óÑÉ @  Š*^·?d   )Ó7 @  Š+_·?d à J«)ì @  Š,`·?d  šã¥ @  Š-a·?d ` jœ_} @  Š.b·?d   Ji]ƒ @  Š/c·?d à ïi…8 @  Š0d·?d  Û– % @  Š1e·?d ` +éó\ @  Š2f·?d    ñ¢ @  Š3g·?d à VPI @  Š4h·?d @Ü¡ @  Š5i·?d ` °a&Ø @  Š6j·?d   ”$& @  Š7k·?d à ˜5Â} @  Š8l·?d qb¼ @  Š9m·?d ` õ˜Å @  Š:n·?d   Õûš; @  Š;o·?d à +áY< @  Š<p·?d û©ÕÔ @  Š=q·?d `  Ö/­ @  Š>r·?d   +#-S @  Š?s·?d à 1"ÔÊ @  Š@t·?d (l'Å @  ŠAu·?d ` Øݼ @  ŠBv·?d   øæßB @  ŠCw·?d à c¬~© @  ŠDx·?d ³äòA @  ŠEy·?d ` C›8 @  ŠFz·?d   cn Æ @  ŠG{·?d à kÏì @  ŠH|·?d  ö‹L\ @  ŠI}·?d ` ô¶% @  ŠJ~·?d   &´Û @  ŠK·?d à ¨:ƒ @  ŠL€·?d  xrƒk @  ŠM·?d ` ˆ y @  ŠN‚·?d   ¨ø{ì @  ŠOƒ·?d à  ø£W @  ŠP„·?d  ³&å @  ŠQ…·?d ` CYåœ @  ŠR†·?d   c¬çb @  ŠS‡·?d à øæF‰ @  ŠTˆ·?d  (®Êa @  ŠU‰·?d ` ØÑ0 @  ŠVŠ·?d   ø$2æ @  ŠW‹·?d à ð…Ô½ @  ŠXŒ·?d  mÁt| @  ŠY·?d ` ¾Ž @  ŠZŽ·?d   ½KŒû @  Š[·?d à CQOü @  Š\·?d  “à @  Š]‘·?d ` cf9m @  Š^’·?d   C“;“ @  Š_“·?d à ÷•Ę @  Š`”·?d  îÛ7— @  Ša•·?d ` ¤Íî @  Šb–·?d   >QÏ @  Šc—·?d à ¥nû @  Šd˜·?d  uSâ @  Še™·?d ` …,j @  Šfš·?d   ¥Ù” @  Šg›·?d à ­xüÏ @  Šhœ·?d  0<\ @  Ši·?d ` ÀC¦w @  Šjž·?d   ඤ‰ @  ŠkŸ·?d à ƒ^R @  Šl ·?d  SSÒº @  Šm¡·?d ` £,(à @  Šn¢·?d   ƒÙ*= @  Šo£·?d à &Ùò† @  Šp¤·?d  &~› @  Šq¥·?d ` âY„â @  Šr¦·?d   ¬† @  Šs§·?d à Yæ'÷ @  Št¨·?d  ‰®« @  Šu©·?d ` yÑQf @  Švª·?d   Y$S˜ @  Šw«·?d à Q…µÃ @  Šx¬·?d  ÌÁ @  Šy­·?d ` <¾ï{ @  Šz®·?d   Kí… @  Š{¯·?d à âQ.‚ @  Š|°·?d  2¢j @  Š}±·?d ` ÂfX @  Š~²·?d   â“Zí @  Š³·?d à Ä“E @  Š€´·?d  Š`J @  Šµ·?d ` òõš3 @  Š‚¶·?d   Ò˜Í @  Šƒ··?d à IJ9& @  Š„¸·?d  ™µÎ @  Š…¹·?d ` i}O· @  Š†º·?d   IˆMI @  Š‡»·?d à A)« @  Šˆ¼·?d  Üm Ó @  Š‰½·?d ` ,ñª @  ŠŠ¾·?d    çóT @  Š‹¿·?d à Ÿž @  ŠŒÀ·?d  ORv @  ŠÁ·?d ` ¿-j @  ŠŽ·?d   ŸØhñuÐ  @  Š÷?d à :ذJ @  ŠÄ·?d 8 KÓn, @  Š‘Å·?d x »¬”U @  Š’Æ·?d ¸ ›Y–« @  Š“Ç·?d ø 7@ @  Š”È·?d 8! Ð[»¨ @  Š•É·?d x!  $AÑ @  Š–Ê·?d ¸! ÑC/ @  Š—Ë·?d ø! p¥t @  Š˜Ì·?d 8" •4µ @  Š™Í·?d x" eKÿÌ @  Ššη?d ¸" E¾ý2 @  Š›Ï·?d ø" »¤>5 @  Šœз?d 8# kì²Ý @  ŠÑ·?d x# ›“H¤ @  ŠžÒ·?d ¸# »fJZ @  ŠŸÓ·?d ø# `µQ @  Š Ô·?d 8$ .F^ @  Š¡Õ·?d x$ æQ¼' @  Š¢Ö·?d ¸$ Ƥ¾Ù @  Š£×·?d ø$ ]î2 @  Š¤Ø·?d 8% ¦“Ú @  Š¥Ù·?d x% }Ùi£ @  Š¦Ú·?d ¸% ],k] @  Š§Û·?d ø% U @  Š¨Ü·?d 8& ÈÉ-Ç @  Š©Ý·?d x& 8¶×¾ @  ŠªÞ·?d ¸& CÕ@ @  Š«ß·?d ø& {î/› @  Š¬à·?d 8' «¦£s @  Š­á·?d x' [ÙY  @  Š®â·?d ¸' {,[ô @  Š¯ã·?d ø' Þ,ƒO @  Š°ä·?d 8( êÓR @  Š±å·?d x( ¬õ+ @  Š²æ·?d ¸( :Y÷Õ @  Š³ç·?d ø( ¡V> @  Š´è·?d 8) q[ÚÖ @  Šµé·?d x) $ ¯ @  Š¶ê·?d ¸) ¡Ñ"Q @  Š·ë·?d ø) ©pÄ  @  Š¸ì·?d 8* 44dË @  Š¹í·?d x* ÄKž² @  Šºî·?d ¸* 侜L @  Š»ï·?d ø* ¤_K @  Š¼ð·?d 8+ ÊìÓ£ @  Š½ñ·?d x+ :“)Ú @  Š¾ò·?d ¸+ f+$ @  Š¿ó·?d ø+ gÒ½ @  ŠÀô·?d 8, )!² @  ŠÁõ·?d x, éVÛË @  ŠÂö·?d ¸, É£Ù5 @  ŠÃ÷·?d ø, RéxÞ @  ŠÄø·?d 8- ‚¡ô6 @  ŠÅù·?d x- rÞO @  ŠÆú·?d ¸- R+ ± @  ŠÇû·?d ø- ZŠêê @  ŠÈü·?d 8. ÇÎJ+ @  ŠÉý·?d x. 7±°R @  ŠÊþ·?d ¸. D²¬ @  ŠËÿ·?d ø. +m @  ŠÌ¸?d 8/ Ócáÿ @  ŠÍ¸?d x/ #† @  ŠÎ¸?d ¸/ éx @  ŠÏ¸?d ø/ ¦éÁà @  ŠÐ¸?d 80 7}q @  ŠÑ¸?d x0 èH‡ @  ŠÒ¸?d ¸0 Ƚ…ö @  ŠÓ¸?d ø0 S÷$ @  ŠÔ¸?d 81 ƒ¿¨õ @  ŠÕ ¸?d x1 sÀRŒ @  ŠÖ ¸?d ¸1 S5Pr @  Š× ¸?d ø1 [”¶) @  ŠØ ¸?d 82 ÆÐè @  ŠÙ ¸?d x2 6¯ì‘ @  ŠÚ¸?d ¸2 Zîo @  ŠÛ¸?d ø2 è@-h @  ŠÜ¸?d 83 8¡€ @  ŠÝ¸?d x3 Èw[ù @  ŠÞ¸?d ¸3 è‚Y @  Šß¸?d ø3 \„¦  @  Šà¸?d 84 EÊU @  Šá¸?d x4 µµ¯z @  Šâ¸?d€ ¸4 ჱ" @  ‹¸?d ø4 ›ˆXà @  ‹¸?d 85 KÀÔ @  ‹¸?d x5 ~öÕœ @  ‹¸?d ¸5 ^×b @  ‹¸?d ø5 ˜nC @  ‹¸?d 86 T΂ @  ‹¸?d x6 ;™k @  ‹¸?d ¸6 li @  ‹ ¸?d ø6 ½ˆhI @  ‹  ¸?d 87 mÀä¡ @  ‹ !¸?d x7 Xöå5 @  ‹ "¸?d ¸7 xçË @  ‹ #¸?d ø7 ¾^ê @  ‹$¸?d 88 ŠïÒ÷ @  ‹%¸?d x8 ƒI @  ‹&¸?d ¸8 9vKê @  ‹'¸?d ø8 guì @  ‹(¸?d 89 ·= @  ‹)¸?d x9 ‚ œ @  ‹*¸?d ¸9 ¢þžn @  ‹+¸?d ø9 dí'O @  ‹,¸?d 8: ù©‡Ž @  ‹-¸?d x: Çd" @  ‹.¸?d ¸: ç‘ s @  ‹/¸?d ø: Ü™ @  ‹0¸?d 8;  Š”q @  ‹1¸?d x; 9¼•å @  ‹2¸?d ¸; I— @  ‹3¸?d ø; ßZ.: @  ‹4¸?d 8< ÆÝ5 @  ‹5¸?d x< D~af @  ‹ 6¸?d ¸< d‹c˜ @  ‹!7¸?d ø< :ˆ9ž @  ‹"8¸?d 8= ®Žv @  ‹# 9¸?d x= $˜â @  ‹$ :¸?d ¸= m @  ‹% ;¸?d ø= Â~4= @  ‹& <¸?d 8> fýH) @  ‹'=¸?d x> X0í* @  ‹(>¸?d ¸> xÅïÔ @  ‹)?¸?d ø> .qûó @  ‹*@¸?d 8? þ9w @  ‹+A¸?d x? Ëv @  ‹,B¸?duÐ@ 7 ¸? ëútq @  ‹-C¸?d ø? -éÍP @  ‹.D¸?d P@ îEwl @  ‹/E¸?d @ ßMù¯ @  ‹0F¸?d Ð@ ]Üîq @  ‹1G¸?d A Q/A @  ‹2H¸?d PA Ó—8Ÿ @  ‹3I¸?d A DÅ,+ @  ‹4J¸?d ÐA ÆT;õ @  ‹5K¸?d B ’5Ë @  ‹6L¸?d PB " @  ‹7M¸?d B ª’6 @  ‹8N¸?d ÐB ƒ;…è @  ‹9O¸?d C ê±&4 @  ‹:P¸?d PC h 1ê @  ‹;Q¸?d C ÿr%^ @  ‹<R¸?d ÐC }ã2€ @  ‹=S¸?d D  /op @  ‹>T¸?d PD ¢¾x® @  ‹?U¸?d D ,·×O @  ‹@V¸?d ÐD ®&À‘ @  ‹AW¸?d E ¢ü¡ @  ‹BX¸?d PE  m @  ‹CY¸?d E ·?Ë @  ‹DZ¸?d ÐE 5® @  ‹E[¸?d F ìh+ @  ‹F\¸?d PF nù õ @  ‹G]¸?d F òP¼Ö @  ‹H^¸?d ÐF pÁ« @  ‹I_¸?d G „ü1 @  ‹J`¸?d PG m&Ö @  ‹Ka¸?d G ‘?2b @  ‹Lb¸?d ÐG ®%¼ @  ‹Mc¸?d H cÓ^ @  ‹Nd¸?d PH áB€ @  ‹Oe¸?d H ÐJžC @  ‹Pf¸?d ÐH RÛ‰ @  ‹Qg¸?d I ^H­ @  ‹Rh¸?d PI Ü_s @  ‹Si¸?d I KÂKÇ @  ‹Tj¸?d ÐI ÉS\ @  ‹Uk¸?d J •R' @  ‹Vl¸?d PJ ’Eù @  ‹Wm¸?d J ­õÚ @  ‹Xn¸?d ÐJ Œ<â @  ‹Yo¸?d K å¶AØ @  ‹Zp¸?d PK g'V @  ‹[q¸?d K ðuB² @  ‹\r¸?d ÐK räUl @  ‹]s¸?d L /(œ @  ‹^t¸?d PL ­¹B @  ‹_u¸?d L ·¶1 @  ‹`v¸?d ÐL &¡ï @  ‹aw¸?d M ü`ß @  ‹bx¸?d PM mw @  ‹cy¸?d M ?cµ @  ‹dz¸?d ÐM ”®tk @  ‹e{¸?d N MhzU @  ‹f|¸?d PN Ïùm‹ @  ‹g}¸?d N SPݨ @  ‹h~¸?d ÐN ÑÁÊv @  ‹i¸?d O Èjõ @  ‹j€¸?d PO Jû+ @  ‹k¸?d O Ý©Ÿ @  ‹l‚¸?d ÐO _8A @  ‹mƒ¸?d P ¥d  @  ‹n„¸?d PP 'õÒ @  ‹o…¸?d P ýŽ @  ‹p†¸?d ÐP ”l™Ï @  ‹q‡¸?d Q ˜¶Xÿ @  ‹rˆ¸?d PQ 'O! @  ‹s‰¸?d Q u[• @  ‹tЏ?d ÐQ äLK @  ‹u‹¸?d R Ö"Bu @  ‹vŒ¸?d PR T³U« @  ‹w¸?d R Èåˆ @  ‹xޏ?d ÐR J‹òV @  ‹y¸?d S #QŠ @  ‹z¸?d PS ¡FT @  ‹{‘¸?d S 6ÂRà @  ‹|’¸?d ÐS ´SE> @  ‹}“¸?d T éŸÎ @  ‹~”¸?d PT k @  ‹•¸?d T QÀ @  ‹€–¸?d ÐT „À‡ @  ‹—¸?d U ˆF. @  ‹‚˜¸?d PU  ‹Qð @  ‹ƒ™¸?d U ÙED @  ‹„š¸?d ÐU HRš @  ‹…›¸?d V ÆŽ\¤ @  ‹†œ¸?d PV DKz @  ‹‡¸?d V ضûY @  ‹ˆž¸?d ÐV Z'ì‡ @  ‹‰Ÿ¸?d W ®v‡ @  ‹Š ¸?d PW ,‹aY @  ‹‹¡¸?d W »Ùuí @  ‹Œ¢¸?d ÐW 9Hb3 @  ‹£¸?d X I5@Ñ @  ‹Ž¤¸?d PX ˤW @  ‹¥¸?d X ú¬ÙÌ @  ‹¦¸?d ÐX x=Î @  ‹‘§¸?d Y tç" @  ‹’¨¸?d PY övü @  ‹“©¸?d Y a$ H @  ‹”ª¸?d ÐY ãµ– @  ‹•«¸?d Z :s¨ @  ‹–¬¸?d PZ ¸âv @  ‹—­¸?d Z $K²U @  ‹˜®¸?d ÐZ ¦Ú¥‹ @  ‹™¯¸?d [ ÏPW @  ‹š°¸?d P[ MÁ‰ @  ‹›±¸?d [ Ú“= @  ‹œ²¸?d Ð[ Xã @  ‹³¸?d \ ÎO @  ‹ž´¸?d P\ ‡_XÍ @  ‹Ÿµ¸?d \ §Qñ¾ @  ‹ ¶¸?d Ð\ %Àæ` @  ‹¡·¸?d ] )'P @  ‹¢¸¸?d P] «‹0Ž @  ‹£¹¸?d ] <Ù$: @  ‹¤º¸?d Ð] ¾H3ä @  ‹¥»¸?d ^ gŽ=Ú @  ‹¦¼¸?d P^ å* @  ‹§½¸?d ^ y¶š' @  ‹¨¾¸?d Ð^ û'ù @  ‹©¿¸?d _ ÿJè @  ‹ªÀ¸?d P_ }Û6 @  ‹«Á¸?d _ ꉂ @  ‹uÐ` ¬¸?d Ð_ h\ @  ‹­ø?d (` ’b ; @  ‹®ĸ?d h` óå @  ‹¯Ÿ?d ¨` !û”& @  ‹°Ƹ?d è` £jƒø @  ‹±Ǹ?d (a ¯°BÈ @  ‹²ȸ?d ha -!U @  ‹³ɸ?d ¨a ºsA¢ @  ‹´ʸ?d èa 8âV| @  ‹µ˸?d (b á$XB @  ‹¶̸?d hb cµOœ @  ‹·͸?d ¨b ÿÿ¿ @  ‹¸θ?d èb }èa @  ‹¹ϸ?d (c K½ @  ‹ºи?d hc ––\c @  ‹»Ѹ?d ¨c ÄH× @  ‹¼Ò¸?d èc ƒU_  @  ‹½Ó¸?d (d Þ™ù @  ‹¾Ô¸?d hd \' @  ‹¿Õ¸?d ¨d ÒºÆ @  ‹ÀÖ¸?d èd P­ @  ‹Á׸?d (e \Jl( @  ‹Âظ?d he ÞÛ{ö @  ‹ÃÙ¸?d ¨e I‰oB @  ‹ÄÚ¸?d èe Ëxœ @  ‹ÅÛ¸?d (f Þv¢ @  ‹Æܸ?d hf Oa| @  ‹Çݸ?d ¨f  æÑ_ @  ‹ÈÞ¸?d èf ŽwÆ @  ‹É߸?d (g zJ\ @  ‹Êà¸?d hg øÛK_ @  ‹Ëá¸?d ¨g o‰_ë @  ‹Ìâ¸?d èg íH5 @  ‹Íã¸?d (h ej× @  ‹Îä¸?d hh ô}  @  ‹Ïå¸?d ¨h .üóÊ @  ‹Ðæ¸?d èh ¬mä @  ‹Ñç¸?d (i  ·%$ @  ‹Òè¸?d hi "&2ú @  ‹Óé¸?d ¨i µt&N @  ‹Ôê¸?d èi 7å1 @  ‹Õë¸?d (j î#?® @  ‹Öì¸?d hj l²(p @  ‹×í¸?d ¨j ð˜S @  ‹Øî¸?d èj rŠ @  ‹Ùï¸?d (k ,Q @  ‹Úð¸?d hk ™‘; @  ‹Ûñ¸?d ¨k Ã/; @  ‹Üò¸?d èk ŒR8å @  ‹Ýó¸?d (l Ñže @  ‹Þô¸?d hl SrË @  ‹ßõ¸?d ¨l sÛ¸ @  ‹àö¸?d èl ñÌf @  ‹á÷¸?d (m ýJ V @  ‹âø¸?d€ hm ù²1 @  Œù¸?d ¨m žî¬ @  Œú¸?d èm  ùr @  Œû¸?d (n € ¡ @  Œü¸?d hn “ @  Œý¸?d ¨n Á ô& @  Œþ¸?d èn C›ãø @  Œÿ¸?d (o ëå2  @  Œ¹?d ho it%Ó @  Œ ¹?d ¨o ;oÊŠ @  Œ ¹?d èo ¹þÝT @  Œ ¹?d (p †ë4ô @  Œ ¹?d hp z#* @  Œ ¹?d ¨p VaÌs @  Œ¹?d èp ÔðÛ­ @  Œ¹?d (q »9{ @  Œ¹?d hq 9¨lÙ @  Œ ¹?d ¨q k³ƒ€ @  Œ ¹?d èq é"”^ @  Œ ¹?d (r õ­a @  Œ ¹?d hr w6¹?d è| 9 µ @  Œ?7¹?d (} éÃ4™ @  Œ@8¹?d h} kR#G @  ŒA9¹?d ¨} 9IÌ @  ŒB:¹?d è} »ØÛÀ @  ŒC;¹?d (~ §W. @  ŒD<¹?d h~ %Æ9Í @  ŒE=¹?d ¨~ wÝÖ” @  ŒF>¹?d è~ õLÁJ @  ŒG?¹?d ( ?“! @  ŒH@¹?d h ½ÿ @  ŒIA¹?d ¨ uЀ 'ïé¦ @  ŒJB¹?d è mˆþx @  ŒKC¹?d @€ ‚ýI @  ŒLD¹?d €€ ¢Kà @  ŒME¹?d À€ Rw±™ @  ŒNF¹?d ‚?=q @  ŒOG¹?d @ ¿/í @  ŒPH¹?d € ŸÚ @  ŒQI¹?d À o¥þj @  ŒRJ¹?d ‚ òá^« @  ŒSK¹?d @‚ ñ»g @  ŒTL¹?d €‚ ÑN™ @  ŒUM¹?d À‚ !1äà @  ŒVN¹?d ƒ ñyh @  ŒWO¹?d @ƒ ˜˜ @  ŒXP¹?d €ƒ $m f @  ŒYQ¹?d Àƒ Ô÷ @  ŒZR¹?d „ Í\ @  Œ[S¹?d @„ ÎFÜ @  Œ\T¹?d €„ îóD" @  Œ]U¹?d À„ Œ¾[ @  Œ^V¹?d … ÎÄ2³ @  Œ_W¹?d @… âÒ.Ÿ @  Œ`X¹?d €… Â',a @  ŒaY¹?d À… 2XÖ @  ŒbZ¹?d † ¯vÙ @  Œc[¹?d @† ¬F4 @  Œd\¹?d €† Œ³6ë @  Œe]¹?d À† |ÌÌ’ @  Œf^¹?d ‡ ¬„@z @  Œg_¹?d @‡ ÄÒ6 @  Œh`¹?d €‡ ä'È @  Œia¹?d À‡ Xæ± @  Œjb¹?d ˆ  §j¬ @  Œkc¹?d @ˆ #ý(` @  Œld¹?d €ˆ *ž @  Œme¹?d Àˆ ówÐç @  Œnf¹?d ‰ #?\ @  Œog¹?d @‰ /g“ @  Œph¹?d €‰ >Úem @  Œqi¹?d À‰ Î¥Ÿ @  Œrj¹?d Š Sá?Õ @  Œsk¹?d @Š P»} @  Œtl¹?d €Š pNç @  Œum¹?d ÀŠ €1…ž @  Œvn¹?d ‹ Py v @  Œwo¹?d @‹ ¥˜næ @  Œxp¹?d €‹ …ml @  Œyq¹?d À‹ u–a @  Œzr¹?d Œ l\en @  Œ{s¹?d @Œ o'¢ @  Œ|t¹?d €Œ Oó%\ @  Œ}u¹?d ÀŒ ¿Œß% @  Œ~v¹?d oÄSÍ @  Œw¹?d @ ƒyB @  Œ€x¹?d € .v{¼ @  Œy¹?d À Þ Å @  Œ‚z¹?d Ž CM! @  Œƒ{¹?d @Ž @cÈ @  Œ„|¹?d €Ž `âa6 @  Œ…}¹?d ÀŽ ›O @  Œ†~¹?d @Õ§ @  Œ‡¹?d @ Åh @  Œˆ€¹?d € åà – @  Œ‰¹?d À Ÿðï @  ŒŠ‚¹?d «AL] @  Œ‹ƒ¹?d @ ¨‘ @  ŒŒ„¹?d € ˆî o @  Œ…¹?d À x‘ö @  ŒŽ†¹?d ‘ ¨Ùzþ @  Œ‡¹?d @‘ •ÉAb @  Œˆ¹?d €‘ µ¾¡> @  Œª¢¹?d ˜  A-# @  Œ«£¹?d @˜  oï @  Œ¬¤¹?d €˜ )îm @  Œ­¥¹?d À˜ Ù‘—h @  Œ®¦¹?d ™  Ù€ @  Œ¯§¹?d @™ 4É  @  Œ°¨¹?d €™ <"â @  Œ±©¹?d À™ äCØ› @  Œ²ª¹?d š yxZ @  Œ³«¹?d @š z]:– @  Œ´¬¹?d €š Z¨8h @  Œµ­¹?d Àš ª× @  Œ¶®¹?d › zŸNù @  Œ·¯¹?d @› ~)i @  Œ¸°¹?d €› ¯‹+— @  Œ¹±¹?d À› _ôÑî @  Œº²¹?d œ Fº"á @  Œ»³¹?d @œ Eà`- @  Œ¼´¹?d €œ ebÓ @  Œ½µ¹?d Àœ •j˜ª @  Œ¾¶¹?d E"B @  Œ¿·¹?d @ Ç3ü @  ŒÀ¸¹?d € çÆ  @  ŒÁ¹¹?d À ¹ö{ @  ŒÂº¹?d ž ŠýVº @  ŒÃ»¹?d @ž ‰§v @  ŒÄ¼¹?d €ž ©Rˆ @  ŒÅ½¹?d Àž Y-ìñ @  ŒÆ¾¹?d Ÿ ‰e` @  ŒÇ¿¹?d @Ÿ c+D @  ŒÈÀ¹?d €Ÿ 1–)º @  ŒÉÁ¹uР ?d ÀŸ ÁéÓà @  ŒÊ¹?d   °â ¥ @  ŒËù?d X  ³¸Oi @  ŒÌĹ?d ˜  “MM— @  ŒÍŹ?d Ø  c2·î @  ŒÎƹ?d ¡ ³z; @  ŒÏǹ?d X¡ Žjš @  ŒÐȹ?d ˜¡ ®Ÿd @  ŒÑɹ?d Ø¡ ^àø @  ŒÒʹ?d ¢ äXÜ @  ŒÓ˹?d X¢ Àþ @  ŒÔ̹?d ˜¢ à î @  ŒÕ͹?d Ø¢ tâ— @  ŒÖι?d £ Àº?d ˜µ {NÒ[ @  ?º?d ص W#hš @  @º?d ¶ ÊgÈ[ @  Aº?d X¶  tqz @  Bº?d ˜¶ ,s„ @  Cº?d ض ·r @  Dº?d · Éÿþø @  Eº?d X· oÿÎ @  F º?d ˜· Oîý0 @  G!º?d Ø· q#X3 @  H"º?d ¸ 8\§R @  I€#º?d X¸ þOs @  J€$º?d ˜¸ Þº @  K€%º?d ظ ëŒ @  L€&º?d ¹ ;Ä‘ñ @  M€'º?d X¹ eÇË÷ @  N€(º?d ˜¹ E2É  @  O€)º?d ع Ö^Rê @  P€*º?d º Kò+ @  Q€+º?d Xº  K  @  R€,º?d ˜º ­üIô @  S€-º?d غ ˜ÊH` @  T€.º?d » H‚Ĉ @  U€/º?d X» sÑüb @  V€0º?d ˜» S$þœ @  W€1º?d Ø» mé[Ÿ @  X€2º?d ¼ t§¨ @  Y€3º?d X¼ ²´± @  Z€4º?d ˜¼ ’AO @  [€5º?d ؼ §wÛ @  \€6º?d ½ w?ž3 @  ]€7º?d X½ )<Ä5 @  ^€8º?d ˜½  ÉÆË @  _€9º?d ؽ ‹£z˜ @  `€:º?d ¾ çÚY @  a€;º?d X¾ Ðôcx @  b€<º?d ˜¾ ða† @  c€=º?d ؾ Å7` @  d€>º?d ¿ ìú @  e€?º?d X¿ CËøÝ @  f€@º?d ˜¿ c>ú# @uÐÀ   g€Aº?d Ø¿ ]ó_  @  h€Bº?d 0À 9r @  i€Cº?d pÀ ÿ·S @  j€Dº?d °À ßåµ­ @  k€Eº?d ðÀ êÓ´9 @  l€Fº?d 0Á :›8Ñ @  m€Gº?d pÁ d˜b× @  n€Hº?d °Á Dm`) @  o€Iº?d ðÁ ×ûÊ @  p€Jº?d 0 JE[  @  q€Kº?d p ŒVâ* @  r€Lº?d °Â ¬£àÔ @  s€Mº?d ð ™•á@ @  t€Nº?d 0à IÝm¨ @  u€Oº?d pà rŽUB @  v€Pº?d °Ã R{W¼ @  w€Qº?d ðà l¶ò¿ @  x€Rº?d 0Ä uø° @  y€Sº?d pÄ ³ë¸‘ @  z€Tº?d °Ä “ºo @  {€Uº?d ðÄ ¦(»û @  |€Vº?d 0Å v`7 @  }€Wº?d pÅ (cm @  ~€Xº?d °Å –oë @  €Yº?d ðÅ Ç­å @  €€Zº?d 0Æ ZéEÚ @  €[º?d pÆ œúüû @  ‚€\º?d °Æ ¼þ @  ƒ€]º?d ðÆ ‰9ÿ‘ @  „€^º?d 0Ç Yqsy @  …€_º?d pÇ ÿ•rO @  †€`º?d °Ç ß`p± @  ‡€aº?d ðÇ á­Õ² @  ˆ€bº?d 0È ÕRY¯ @  ‰€cº?d pÈ AàŽ @  Š€dº?d °È 3´âp @  ‹€eº?d ðÈ ‚ãä @  Œ€fº?d 0É ÖÊo  @  €gº?d pÉ ˆÉ5  @  Ž€hº?d °É ¨<7ô @  €iº?d ðÉ ;P¬ @  €jº?d 0Ê ¦ Ö @  ‘€kº?d pÊ `µ÷ @  ’€lº?d °Ê @ò·  @  “€mº?d ðÊ uĶ @  ”€nº?d 0Ë ¥Œ:u @  •€oº?d pË žßŸ @  –€pº?d °Ë ¾*a @  —€qº?d ðË €ç¥b @  ˜€rº?d 0Ì ™©Vm @  ™€sº?d pÌ _ºïL @  š€tº?d °Ì Oí² @  ›€uº?d ðÌ Jyì& @  œ€vº?d 0Í š1`Î @  €wº?d pÍ Ä2:È @  ž€xº?d °Í äÇ86 @  Ÿ€yº?d ðÍ f­„e @   €zº?d 0Î ûé$¤ @  ¡€{º?d pÎ =ú… @  ¢€|º?d °Î Ÿ{ @  £€}º?d ðÎ (9žï @  ¤€~º?d 0Ï øq @  ¥€º?d pÏ ³R² @  ¦€€º?d °Ï “öPL @  §€º?d ðÏ ­;õO @  ¨€‚º?d 0Ð åIý @  ©€ƒº?d pÐ ÕöðÜ @  ª€„º?d °Ð õò" @  «€…º?d ðÐ À5ó¶ @  ¬€†º?d 0Ñ }^ @  ­€‡º?d pÑ N~%X @  ®€ˆº?d °Ñ n‹'¦ @  ¯€‰º?d ðÑ ýç¼E @  °€Šº?d 0Ò `£„ @  ±€‹º?d pÒ ¦°¥¥ @  ²€Œº?d °Ò †E§[ @  ³€º?d ðÒ ³s¦Ï @  ´€Žº?d 0Ó c;*' @  µ€º?d pÓ XhÍ @  ¶€º?d °Ó x3 @  ·€‘º?d ðÓ FPµ0 @  ¸€’º?d 0Ô _F? @  ¹€“º?d pÔ ™ ÿ @  º€”º?d °Ô ¹øýà @  »€•º?d ðÔ ŒÎüt @  ¼€–º?d 0Õ \†pœ @  ½€—º?d pÕ …*š @  ¾€˜º?d °Õ "p(d @  ¿€™º?d ðÕ ’¥ @  À€šº?d 0Ö “Y2d @  Á€›º?d pÖ UJ‹E @  €œº?d °Ö u¿‰» @  Àº?d ðÖ @‰ˆ/ @  Ä€žº?d 0× ÁÇ @  Å€Ÿº?d p× 6%ñ @  Æ€ º?d °× Ð @  Ç€¡º?d ð× (¢  @  È€¢º?d 0Ø â. @  É€£º?d pØ Úñ—0 @  Ê€¤º?d °Ø ú•Î @  Ë€¥º?d ðØ Ï2”Z @  Ì€¦º?d 0Ù z² @  Í€§º?d pÙ AyB´ @  ΀¨º?d °Ù aŒ@J @  Ï€©º?d ðÙ òàÛ© @  Ѐªº?d 0Ú o¤{h @  Ñ€«º?d pÚ ©·ÂI @  Ò€¬º?d °Ú ‰BÀ· @  Ó€­º?d ðÚ ¼tÁ# @  Ô€®º?d 0Û l€úº?d Hî x– @  Ž?€ûº?d ˆî Àmz· @  Ž@€üº?d Èî Bümi @  ŽA€ýº?d ï àZ & @  ŽB€þº?d Hï bËø @  ŽC€ÿº?d ˆï 1óàŒ @  ŽD€»?d Èï ³b÷R @  ŽE€»?d ð R¦G @  ŽF€»?d Hð ýñ™ @  ŽG€»?d ˆð WBâ @  ŽH€»?d Èð Õ—U< @  ŽI€»?d ñ w14s @  ŽJ€»?d Hñ õ #­ @  ŽK€»?d ˆñ ÌŽ—f @  ŽL€»?d Èñ N€¸ @  ŽM€ »?d ò ¡µÍÞ @  ŽN€ »?d Hò #$Ú @  ŽO€ »?d ˆò $@› @  ŽP€ »?d Èò ¦ÑE @  ŽQ€ »?d ó wa  @  ŽR€»?d Hó †ævÔ @  ŽS€»?d ˆó Ú˜ ó @  ŽT€»?d Èó X ·- @  ŽU€»?d ô 3©©… @  ŽV€»?d Hô ±8¾[ @  ŽW€»?d ˆô ýM  @  ŽX€»?d Èô ™lZþ @  ŽY€»?d õ ;Ê;± @  ŽZ€»?d Hõ ¹[,o @  Ž[€»?d ˆõ €u˜¤ @  Ž\€»?d Èõ äz @  Ž]€»?d ö íN @  Ž^€»?d Hö oßÕ @  Ž_€»?d ˆö y½?é @  Ž`€»?d Èö û,(7 @  Ža€»?d ÷ YŠIx @  Žb€»?d H÷ Û^¦ @  Žc€»?d ˆ÷ Ò±] @  Žd€ »?d È÷ ˜C¦ƒ @  Že€!»?d ø ÞRÇ9 @  Žf€"»?d Hø \ÃÐç @  Žg€#»?d ˆø ö#œ @  Žh€$»?d Èø t—4B @  Ži€%»?d ù Ö1U  @  Žj€&»?d Hù T BÓ @  Žk€'»?d ˆù mŽö @  Žl€(»?d Èù ïáÆ @  Žm€)»?d ú µ¬  @  Žn€*»?d Hú ‚$»~ @  Žo€+»?d ˆú …@vå @  Žp€,»?d Èú Ña; @  Žq€-»?d û ¥wt @  Žr€.»?d Hû 'æª @  Žs€/»?d ˆû {˜Á @  Žt€0»?d Èû ù ÖS @  Žu€1»?d ü ’©Èû @  Žv€2»?d Hü 8ß% @  Žw€3»?d ˆü ºý,^ @  Žx€4»?d Èü 8l;€ @  Žy€5»?d ý šÊZÏ @  Žz€6»?d Hý [M @  Ž{€7»?d ˆý !uùÚ @  Ž|€8»?d Èý £äî @  Ž}€9»?d þ LN£b @  Ž~€:»?d Hþ Îß´¼ @  Ž€;»?d ˆþ •ìh4 @  Ž€€<»?d Èþ }ê @  Ž€=»?d ÿ µÛ¥ @  Ž‚€>»?d Hÿ 7J { @  Žƒ€?»?d ˆÿ Óó‘ @  Ž„€uÐ@»?d Èÿ „BäO @  Ž…€A»?d ò]Aÿ @  Ž†€B»?d `pÌV! @  Ž‡€C»?d  Ú ¥Z @  Žˆ€D»?d àX˜²„ @  Ž‰€E»?d ú>ÓË @  ŽŠ€F»?d `x¯Ä @  Ž‹€G»?d  ApÞ @  ŽŒ€H»?d àÃg @  Ž€I»?d ,º*f @  ŽŽ€J»?d `®+=¸ @  Ž€K»?d  ©Oð# @  Ž€L»?d à+Þçý @  Ž‘€M»?d ‰x†² @  Ž’€N»?d ` é‘l @  Ž“€O»?d  W—GK @  Ž”€P»?d àÕP• @  Ž•€Q»?d ¾¦N= @  Ž–€R»?d `<7Yã @  Ž—€S»?d  –òª˜ @  Ž˜€T»?d àc½F @  Ž™€U»?d ¶ÅÜ  @  Žš€V»?d `4TË× @  Ž›€W»?d   z @  Žœ€X»?d àëh @  Ž€Y»?d `A%¤ @  Žž€Z»?d `âÐ2z @  ŽŸ€[»?d  ô²ØQ @  Ž €\»?d àv#Ï @  Ž¡€]»?d Ô…®À @  Ž¢€^»?d `V¹ @  Ž£€_»?d  —ÝVå @  Ž¤€`»?d àLA; @  Ž¥€a»?d S]  @  Ž¦€b»?d `ÑÌ7_ @  Ž§€c»?d  { Ä$ @  Ž¨€d»?d àù˜Óú @  Ž©€e»?d [>²µ @  Žª€f»?d ` Ù¯¥k @  Ž«€g»?d   à  @  Ž¬€h»?d à b~ @  Ž­€i»?d ºK @  Ž®€j»?d ` +\Æ @  Ž¯€k»?d   O‘] @  Ž°€l»?d à ŠÞ†ƒ @  Ž±€m»?d (xçÌ @  Ž²€n»?d ` ªéð @  Ž³€o»?d   ö—&5 @  Ž´€p»?d à t1ë @  Žµ€q»?d ¦/C @  Ž¶€r»?d ` 78 @  Ž·€s»?d   7òËæ @  Ž¸€t»?d à µcÜ8 @  Ž¹€u»?d Žw @  Žº€v»?d ` •Tª© @  Ž»€w»?d   ¬zb @  Ž¼€x»?d à .ë ¼ @  Ž½€y»?d ÁADÚ @  Ž¾€z»?d `CÐS @  Ž¿€{»?d  ûµ¿½ @  ŽÀ€|»?d ày$¨c @  ŽÁ€}»?d Û‚É, @  Ž€~»?d `YÞò @  ŽÀ»?d  uLpŠ @  ŽÄ€€»?d à÷ÝgT @  ŽÅ€»?d ;í6A @  ŽÆ€‚»?d `¹|!Ÿ @  ŽÇ€ƒ»?d  ¹Òä @  ŽÈ€„»?d à‘(Å: @  ŽÉ€…»?d 3ޤu @  ŽÊ€†»?d `±³« @  ŽË€‡»?d  ˆ1` @  ŽÌ€ˆ»?d à  ¾ @  ŽÍ€‰»?d å ]Ø @  Ž΀Š»?d `g›J @  ŽÏ€‹»?d  `ÿ‡ @  ŽЀŒ»?d àânC @  ŽÑ€»?d @Èñ  @  ŽÒ€Ž»?d `ÂYæÒ @  ŽÓ€»?d  ž'0õ @  ŽÔ€»?d à¶'+ @  ŽÕ€‘»?d w9ƒ @  ŽÖ€’»?d `õ‡.] @  Ž×€“»?d  _BÝ& @  ŽØ€”»?d àÝÓÊø @  ŽÙ€•»?d u«· @  ŽÚ€–»?d `ýä¼i @  ŽÛ€—»?d  ÄÊ¢ @  ŽÜ€˜»?d àF[| @  ŽÝ€™»?d ©ñR @  ŽÞ€š»?d `+`EÄ @  Ž߀›»?d  =¯ï @  Žà€œ»?d à¿“¸1 @  Žá€»?d 5Ù~ @  Žâ€ž»?d€ `ëgÒ @  €Ÿ»?d  ËïuÔ @  € »?d àI~b  @  €¡»?d Ê&ø] @  €¢»?d `H·ïƒ @  €£»?d  ,ÀC‚ @  €¤»?d à®QT\ @  €¥»?d ÂEji @  €¦»?d `@Ô}· @   €§»?d  ¼³2‘ @   €¨»?d à>"%O @   €©»?d Á“Ä @   €ª»?d `–P„ @   €«»?d  ò'( @  €¬»?d àp¶?Å @  €­»?d ±? @  €®»?d `3’(Î @  €¯»?d  ª¥ @  €°»?d à(4Ú @  €±»?d †Ý÷Ÿ @  €²»?d `LàA @  €³»?d  `;L@ @  €´»?d àâª[ž @  €µ»?d ޾e« @  €¶»?d ` /ru @  €·»?d  ðH=S @  €¸»?d àrÙ* @  €¹»?d X:œ @  €º»?d `Ú«‹Ø @  €»»?d  ¾Ü'Ù @  €¼»?d à€Ü»?d ø&(é @  ?€Ý»?d 8'V]7ä @  @€Þ»?d x'ÔÌ : @  A€ß»?d ¸'ÐL4, @  B€à»?d ø'RÝ#ò @  C€á»?d 8(Ñ…¹¥ @  D€â»?d x(S®{ @  E€ã»?d ¸(7cz @  F€ä»?d ø(µò¤ @  G€å»?d 8)Ùæ+‘ @  H€æ»?d x)[w4 @  r€¼?d ø3¶N)ê @  s€¼?d 84§Ì¯ @  t€¼?d x4š6Ûq @  u€¼?d ¸4þAwp @  v€¼?d ø4|Ð`® @  w€¼?d 85Ä^› @  x€¼?d x5’UIE @  y€¼?d ¸5n2c @  z€¼?d ø5죽 @  {€¼?d 86Æ@§6 @  |€¼?d x6DѰè @  }€¼?d ¸6 ¦é @  ~€¼?d ø6¢7 7 @  €¼?d 87?Õñ @  €€¼?d x7½D / @  €¼?d ¸7¹Ä9 @  ‚€ ¼?d ø7;Uç @  ƒ€!¼?d 88¸ ”° @  „€"¼?d x8:œƒn @  …€#¼?d ¸8^ë/o @  †€$¼?d ø8Üz8± @  ‡€%¼?d 89°n„ @  ˆ€&¼?d x92ÿZ @  ‰€'¼?d ¸9Θ^| @  Š€(¼?d ø9L I¢ @  ‹€)¼?d 8:fêÿ) @  Œ€*¼?d x:ä{è÷ @  €+¼?d ¸:€ Dö @  Ž€,¼?d ø:S( @  €-¼?d 8;Ã(Sý @  €.¼?d x;A¹D# @  ‘€/¼?d ¸;ØŽié @  ’€0¼?d ø;Z~7 @  “€1¼?d 8<ôö›r @  ”€2¼?d x<vgŒ¬ @  •€3¼?d ¸< ­ @  –€4¼?d ø<7s @  —€5¼?d 8=ü• F @  ˜€6¼?d x=~˜ @  ™€7¼?d ¸=‚cQ¾ @  š€8¼?d ø=òF` @  ›€9¼?d 8>*ðë @  œ€:¼?d x>¨€ç5 @  €;¼?d ¸>Ì÷K4 @  ž€<¼?d ø>Nf\ê @  Ÿ€=¼?d 8?žÕ{ @   €>¼?d x?DlQ @  ¡€?¼?duÐ@7 ¸?è”mV @  ¢€@¼?d ø?jzˆ @  £€A¼?d P@Öþ @  ¤€B¼?d @>ûÔ @  ¥€C¼?d Ð@øèm! @  ¦€D¼?d A( áÉ @  §€E¼?d PAmDÊ @  ¨€F¼?d A6˜F4 @  ©€G¼?d ÐAh›2 @  ª€H¼?d Bõß¼ó @  «€I¼?d PBÀé½g @  ¬€J¼?d Bà¿™ @  ­€K¼?d ÐB&¸ @  ®€L¼?d CöGŠP @  ¯€M¼?d PCe+³ @  °€N¼?d CEÞM @  ±€O¼?d ÐC~+§ @  ²€P¼?d DgÃØ¨ @  ³€Q¼?d PDRõÙ< @  ´€R¼?d DrÛ @  µ€S¼?d ÐD´bã @  ¶€T¼?d Ed[î  @  ·€U¼?d PEZ–K @  ¸€V¼?d EzcIö @  ¹€W¼?d ÐE$`ð @  º€X¼?d F¹$³1 @  »€Y¼?d PFŒ²¥ @  ¼€Z¼?d F¬ç°[ @  ½€[¼?d ÐFjô z @  ¾€\¼?d Gº¼…’ @  ¿€]¼?d PG–Ñ?S @  À€^¼?d G¶$=­ @  Á€_¼?d ÐGÀ<› @  €`¼?d H$?°† @  Àa¼?d PH ± @  Ä€b¼?d H1ü³ì @  Å€c¼?d ÐH÷ï Í @  Æ€d¼?d I'§†% @  Ç€e¼?d PIj#& @  È€f¼?d I9Ÿ!Ø @  É€g¼?d ÐIgœ{Þ @  Ê€h¼?d JúØÛ @  Ë€i¼?d PJÏîÚ‹ @  Ì€j¼?d JïØu @  Í€k¼?d ÐJ)aT @  ΀l¼?d Kù@í¼ @  Ï€m¼?d PKj,v_ @  Ѐn¼?d KJÙt¡ @  Ñ€o¼?d ÐKqŠLK @  Ò€p¼?d LhÄ¿D @  Ó€q¼?d PL]ò¾Ð @  Ô€r¼?d L}¼. @  Õ€s¼?d ÐL» @  Ö€t¼?d Mk\‰ç @  ×€u¼?d PMU‘,ä @  Ø€v¼?d Mud. @  Ù€w¼?d ÐM+gt @  Ú€x¼?d N¶#ÔÝ @  Û€y¼?d PNƒÕI @  Ü€z¼?d N£à×· @  Ý€{¼?d ÐNeón– @  Þ€|¼?d Oµ»â~ @  ߀}¼?d PO7Ñ^- @  à€~¼?d O$\Ó @  á€¼?d ÐO\Vf @  â€€¼?d€ P‰ÔL: @  €¼?d PP]£‡ @  €‚¼?d P}Vy @  €ƒ¼?d ÐP~ Eµ @  €„¼?d Q®DÉ] @  €…¼?d PQ^;3$ @  €†¼?d Q~Î1Ú @  €‡¼?d ÐQî4¦ @  €ˆ¼?d Rs;”g @   €‰¼?d PRƒDn @   €м?d R£±là @   €‹¼?d ÐR ë., @   €Œ¼?d Sp£¢Ä @   €¼?d PS€ÜX½ @  €޼?d S )ZC @  €¼?d ÐSøi3 @  €¼?d Tá'ð< @  €‘¼?d PTX E @  €’¼?d T1­» @  €“¼?d ÐT2÷Jw @  €”¼?d Uâ¿ÆŸ @  €•¼?d PUÀ<æ @  €–¼?d U25> @  €—¼?d ÐU¢„;d @  €˜¼?d V?À›¥ @  €™¼?d PVÏ¿aÜ @  €š¼?d VïJc" @  €›¼?d ÐVì!î @  €œ¼?d W€¾¼?d _MÒ4ÿ @  uÐ`?€¿¼?d Ð_Çt`` @  @€À¼?d (`yŒÕø @  A€Á¼?d h`‰ó/ @  B€¼?d ¨`©- @  C€ü?d è`ª\o³ @  D€ļ?d (azã[ @  E€ż?d haŠk" @  F€Ƽ?d ¨aªžÜ @  G€Ǽ?d èa:/  @  H€ȼ?d (b§k¾a @  I€ɼ?d hbWD @  J€ʼ?d ¨bwáFæ @  K€˼?d èbt»* @  L€̼?d (c¤óˆÂ @  M€ͼ?d hcTŒr» @  N€μ?d ¨ctypE @  O€ϼ?d èc,9)5 @  P€м?d (d5wÚ: @  Q€Ѽ?d hdÅ C @  R€Ò¼?d ¨dåý"½ @  S€Ó¼?d èdæ§`q @  T€Ô¼?d (e6ïì™ @  U€Õ¼?d heÆà @  V€Ö¼?d ¨eæe @  W€×¼?d èevÔb @  X€ؼ?d (fë±£ @  Y€Ù¼?d hfïKÚ @  Z€Ú¼?d ¨f;I$ @  [€Û¼?d èf8@ è @  \€ܼ?d (gè‡ @  ]€ݼ?d hgw}y @  ^€Þ¼?d ¨g8‚‡ @  _€ß¼?d ègìs8› @  `€à¼?d (hØŒ´† @  a€á¼?d hh(óNÿ @  b€â¼?d ¨hL @  c€ã¼?d èh \Í @  d€ä¼?d (iÛ‚% @  e€å¼?d hi+kx\ @  f€æ¼?d ¨i žz¢ @  g€ç¼?d èi›/Þ @  h€è¼?d (jkß @  i€é¼?d hjö%f @  j€ê¼?d ¨jÖá'˜ @  k€ë¼?d èjÕ»eT @  l€ì¼?d (kóé¼ @  m€í¼?d hkõŒÅ @  n€î¼?d ¨kÕy; @  o€ï¼?d èk9HK @  p€ð¼?d (l”w»D @  q€ñ¼?d hldA= @  r€ò¼?d ¨lDýCà @  s€ó¼?d èlG§ @  t€ô¼?d (m—ïç @  u€õ¼?d hmgwž @  v€ö¼?d ¨mGeu` @  w€÷¼?d èm×Ôp @  x€ø¼?d (nJÐÝ @  y€ù¼?d hnºï*¤ @  z€ú¼?d ¨nš(Z @  {€û¼?d èn™@j– @  |€ü¼?d (oIæ~ @  }€ý¼?d ho¹w @  ~€þ¼?d ¨o™‚ù @  €ÿ¼?d èo’Ó{É @  €€½?d (p, Ç{ @  €½?d hpÜr= @  ‚€½?d ¨pü‡?ü @  ƒ€½?d èpÿÝ}0 @  „€½?d (q/•ñØ @  …€½?d hqßê ¡ @  †€½?d ¨qÿ _ @  ‡€½?d èqo® # @  ˆ€½?d (ròê¬â @  ‰€ ½?d hr•V› @  Š€ ½?d ¨r"`Te @  ‹€ ½?d èr!:© @  Œ€ ½?d (sñršA @  € ½?d hs `8 @  Ž€½?d ¨s!øbÆ @  €½?d èsy¸;¶ @  €½?d (t`öȹ @  ‘€½?d ht‰2À @  ’€½?d ¨t°|0> @  “€½?d èt³&rò @  ”€½?d (ucnþ @  •€½?d hu“c @  –€½?d ¨u³ä @  —€½?d èu#Uá @  ˜€½?d (v¾£  @  ™€½?d hvNnYY @  š€½?d ¨vn›[§ @  ›€½?d èvmÁk @  œ€½?d (w½‰•ƒ @  €½?d hwMöoú @  ž€½?d ¨wmm @  Ÿ€½?d èw¹ò* @   € ½?d (x ¦ @  ¡€!½?d hx}r\| @  ¢€"½?d ¨x]‡^‚ @  £€#½?d èx^ÝN @  ¤€$½?d (yŽ•¦ @  ¥€%½?d hy~êjß @  ¦€&½?d ¨y^h! @  §€'½?d èyήm] @  ¨€(½?d (zSêÍœ @  ©€)½?d hz£•7å @  ª€*½?d ¨zƒ`5 @  «€+½?d èz€:w× @  ¬€,½?d ({Prû? @  ­€-½?d h{  F @  ®€.½?d ¨{€ø¸ @  ¯€/½?d è{ظZÈ @  °€0½?d (|Áö©Ç @  ±€1½?d h|1‰S¾ @  ²€2½?d ¨||Q@ @  ³€3½?d è|&Œ @  ´€4½?d (}ÂnŸd @  µ€5½?d h}2e @  ¶€6½?d ¨}ägã @  ·€7½?d è}‚UbŸ @  ¸€8½?d (~Â^ @  ¹€9½?d h~ïn8' @  º€:½?d ¨~Ï›:Ù @  »€;½?d è~ÌÁx @  ¼€<½?d (‰ôý @  ½€=½?d hìö„ @  ¾€>½?d ¨uЀ'Ì z @  ¿€?½?d èF¥Xå @  À€@½?d @€(º‘ @  Á€A½?d €€zUÈ @  €B½?d À€ø‘B @  ÀC½?d ©›ì @  Ä€D½?d @+ƒŒ2 @  Å€E½?d €y˜ck @  Æ€F½?d Àû tµ @  Ç€G½?d ‚tmÆÖ @  È€H½?d @‚öüÑ @  É€I½?d €‚¤ç>Q @  Ê€J½?d À‚&v) @  Ë€K½?d ƒwõðu @  Ì€L½?d @ƒõdç« @  Í€M½?d €ƒ§ò @  ΀N½?d Àƒ%î, @  Ï€O½?d „æq¢ @  ЀP½?d @„dàµS @  Ñ€Q½?d €„6ûZ  @  Ò€R½?d À„´jMÔ @  Ó€S½?d …åé”. @  Ô€T½?d @…gxƒð @  Õ€U½?d €…5cl© @  Ö€V½?d À…·ò{w @  ×€W½?d †8–É @  Ø€X½?d @†ºÞÊ @  Ù€Y½?d €†è1“ @  Ú€Z½?d À†j&M @  Û€[½?d ‡;ÿ· @  Ü€\½?d @‡¹Ÿèi @  Ý€]½?d €‡ë„0 @  Þ€^½?d À‡iî @  ߀_½?d ˆ ŠÌ1 @  à€`½?d @ˆ‰Ûï @  á€a½?d €ˆÛ4¶ @  â€b½?d€ Àˆ-R?Î @  ‘€c½?d ‰® @  ‘€d½?d @‰¹Ã @  ‘€e½?d €‰ˆS­w @  ‘€f½?d À‰ º© @  ‘€g½?d ŠKW° @  ‘€h½?d @ŠÉ…@n @  ‘€i½?d €ŠU,ðM @  ‘€j½?d ÀŠ×½ç“ @  ‘ €k½?d ‹CwÅ„ @  ‘ €l½?d @‹ÁæÒZ @  ‘ €m½?d €‹V´Æî @  ‘ €n½?d À‹Ô%Ñ0 @  ‘ €o½?d Œt©  @  ‘€p½?d @Œö8Õ @  ‘€q½?d €ŒÇ0” @  ‘€r½?d ÀŒE¡ƒÈ @  ‘€s½?d Ñk¡ß @  ‘€t½?d @Sú¶ @  ‘€u½?d €Ĩ¢µ @  ‘€v½?d ÀF9µk @  ‘€w½?d ŽïXr @  ‘€x½?d @Ž…~O¬ @  ‘€y½?d €Ž×ÿ @  ‘€z½?d ÀŽ›FèQ @  ‘€{½?d ŒÊF @  ‘€|½?d @ݘ @  ‘€}½?d €OÉ, @  ‘€~½?d À˜ÞÞò @  ‘€½?d ïã5+ @  ‘€€½?d @mr"õ @  ‘€½?d €M|‹† @  ‘ €‚½?d ÀÏíœX @  ‘!€ƒ½?d ‘['¾O @  ‘"€„½?d @‘Ù¶©‘ @  ‘#€…½?d €‘Nä½% @  ‘$€†½?d À‘Ìuªû @  ‘%€‡½?d ’£Gâ @  ‘&€ˆ½?d @’2P< @  ‘'€‰½?d €’“›à @  ‘(€н?d À’ ÷Á @  ‘)€‹½?d “…ÀÕÖ @  ‘*€Œ½?d @“Q @  ‘+€½?d €“Ö¼ @  ‘,€޽?d À“’Áb @  ‘-€½?d ”²Y @  ‘.€½?d @”0 ‡ @  ‘/€‘½?d €”‡„D @  ‘0€’½?d À”ƒ“š @  ‘1€“½?d •ܱ @  ‘2€”½?d @••M¦S @  ‘3€•½?d €•²ç @  ‘4€–½?d À•€Ž¥9 @  ‘5€—½?d –ÁXH  @  ‘6€˜½?d @–CÉ_þ @  ‘7€™½?d €–ß`ïÝ @  ‘8€š½?d À–]ñø @  ‘9€›½?d —É;Ú @  ‘:€œ½?d @—KªÍÊ @  ‘;€½?d €—ÜøÙ~ @  ‘<€ž½?d À—^iΠ @  ‘=€Ÿ½?d ˜NãTU @  ‘>€ ½?d @˜ÌrC‹ @  ‘?€¡½?d €˜B{ìj @  ‘@€¢½?d À˜Àêû´ @  ‘A€£½?d ™T Ù£ @  ‘B€¤½?d @™Ö±Î} @  ‘C€¥½?d €™AãÚÉ @  ‘D€¦½?d À™ÃrÍ @  ‘E€§½?d š‚¤  @  ‘F€¨½?d @š57Ð @  ‘G€©½?d €šœœ‡ó @  ‘H€ª½?d Àš - @  ‘I€«½?d ›ŠÇ²: @  ‘J€¬½?d @›V¥ä @  ‘K€­½?d €›Ÿ±P @  ‘L€®½?d À›•¦Ž @  ‘M€¯½?d œ½zµ @  ‘N€°½?d @œ?ˆmk @  ‘O€±½?d €œ€ã¨ @  ‘P€²½?d ÀœŒôv @  ‘Q€³½?d ÛÖa @  ‘R€´½?d @šJÁ¿ @  ‘S€µ½?d € Õ  @  ‘T€¶½?d À‰ÂÕ @  ‘U€·½?d žÎ_/Ì @  ‘V€¸½?d @žLÎ8 @  ‘W€¹½?d €žÐgˆ1 @  ‘X€º½?d ÀžRöŸï @  ‘Y€»½?d ŸÆ<½ø @  ‘Z€¼½?d @ŸD­ª& @  ‘[€½½?d €ŸÓÿ¾’ @  ‘\€¾½uР?d ÀŸQn©L @  ‘]€¿½?d  ô@tÓ @  ‘^€À½?d X vÑc  @  ‘_€Á½?d ˜ VßÊ~ @  ‘`€½?d Ø ÔNÝ  @  ‘a€ý?d ¡@„ÿ· @  ‘b€Ľ?d X¡Âèi @  ‘c€Ž?d ˜¡UGüÝ @  ‘d€ƽ?d Ø¡×Öë @  ‘e€ǽ?d ¢– @  ‘f€Ƚ?d X¢‘Ä @  ‘g€ɽ?d ˜¢ˆ8¡ç @  ‘h€ʽ?d Ø¢ ©¶9 @  ‘i€˽?d £žc”. @  ‘j€̽?d X£òƒð @  ‘k€ͽ?d ˜£‹ —D @  ‘l€ν?d Ø£ 1€š @  ‘m€Ͻ?d ¤©½\¡ @  ‘n€н?d X¤+,K @  ‘o€ѽ?d ˜¤$ż @  ‘p€Ò½?d ؤ˜µÒb @  ‘q€Ó½?d ¥ ðu @  ‘r€Ô½?d X¥Žîç« @  ‘s€Õ½?d ˜¥¼ó @  ‘t€Ö½?d Ø¥›-äÁ @  ‘u€×½?d ¦Úû Ø @  ‘v€ؽ?d X¦Xj @  ‘w€Ù½?d ˜¦Äî% @  ‘x€Ú½?d ئFR¹û @  ‘y€Û½?d §Ò˜›ì @  ‘z€ܽ?d X§P Œ2 @  ‘{€ݽ?d ˜§Ç[˜† @  ‘|€Þ½?d اEÊX @  ‘}€ß½?d ¨U@­ @  ‘~€à½?d X¨×Ñs @  ‘€á½?d ˜¨ºŽ£ @  ‘€€â½?d ب8Š} @  ‘€ã½?d ©¬Õ¨j @  ‘‚€ä½?d X©.D¿´ @  ‘ƒ€å½?d ˜©¹« @  ‘„€æ½?d Ø©;‡¼Þ @  ‘…€ç½?d ªzQQÇ @  ‘†€è½?d XªøÀF @  ‘‡€é½?d ˜ªdiö: @  ‘ˆ€ê½?d تæøáä @  ‘‰€ë½?d «r2Ãó @  ‘Š€ì½?d X«ð£Ô- @  ‘‹€í½?d ˜«gñÀ™ @  ‘Œ€î½?d Ø«å`×G @  ‘€ï½?d ¬Eì | @  ‘Ž€ð½?d X¬Ç}¢ @  ‘€ñ½?d ˜¬öu’a @  ‘€ò½?d جtä…¿ @  ‘‘€ó½?d ­à.§¨ @  ‘’€ô½?d X­b¿°v @  ‘“€õ½?d ˜­õí¤Â @  ‘”€ö½?d Ø­w|³ @  ‘•€÷½?d ®6ª^ @  ‘–€ø½?d X®´;IÛ @  ‘—€ù½?d ˜®(’ùø @  ‘˜€ú½?d Ø®ªî& @  ‘™€û½?d ¯>ÉÌ1 @  ‘š€ü½?d X¯¼XÛï @  ‘›€ý½?d ˜¯+ Ï[ @  ‘œ€þ½?d د©›Ø… @  ‘€ÿ½?d °ãSu @  ‘ž€¾?d X°‘rD« @  ‘Ÿ€¾?d ˜°±|íØ @  ‘ €¾?d ذ3íú @  ‘¡€¾?d ±§'Ø @  ‘¢€¾?d X±%¶ÏÏ @  ‘£€¾?d ˜±²äÛ{ @  ‘¤€¾?d ر0uÌ¥ @  ‘¥€¾?d ²q£!¼ @  ‘¦€¾?d X²ó26b @  ‘§€ ¾?d ˜²o›†A @  ‘¨€ ¾?d زí ‘Ÿ @  ‘©€ ¾?d ³yÀ³ˆ @  ‘ª€ ¾?d X³ûQ¤V @  ‘«€ ¾?d ˜³l°â @  ‘¬€¾?d سî’§< @  ‘­€¾?d ´N{ @  ‘®€¾?d X´ÌlÙ @  ‘¯€¾?d ˜´ý‡â @  ‘°€¾?d Ø´õÄ @  ‘±€¾?d µëÜ×Ó @  ‘²€¾?d XµiMÀ  @  ‘³€¾?d ˜µþÔ¹ @  ‘´€¾?d ص|ŽÃg @  ‘µ€¾?d ¶=X.~ @  ‘¶€¾?d X¶¿É9  @  ‘·€¾?d ˜¶#`‰ƒ @  ‘¸€¾?d ض¡ñž] @  ‘¹€¾?d ·5;¼J @  ‘º€¾?d X··ª«” @  ‘»€¾?d ˜· ø¿  @  ‘¼€¾?d Ø·¢i¨þ @  ‘½€¾?d ¸²ã2  @  ‘¾€ ¾?d X¸0r%Õ @  ‘¿€!¾?d ˜¸¾{Š4 @  ‘À€"¾?d ظ<êê @  ‘Á€#¾?d ¹¨ ¿ý @  ‘€$¾?d X¹*±¨# @  ‘À%¾?d ˜¹½ã¼— @  ‘Ä€&¾?d ع?r«I @  ‘Å€'¾?d º~¤FP @  ‘Æ€(¾?d Xºü5QŽ @  ‘Ç€)¾?d ˜º`œá­ @  ‘È€*¾?d غâ ös @  ‘É€+¾?d »vÇÔd @  ‘Ê€,¾?d X»ôVú @  ‘Ë€-¾?d ˜»c× @  ‘Ì€.¾?d Ø»á•ÀÐ @  ‘Í€/¾?d ¼Aë @  ‘΀0¾?d X¼È 5 @  ‘Ï€1¾?d ˜¼ò€…ö @  ‘Ѐ2¾?d ؼp’( @  ‘Ñ€3¾?d ½äÛ°? @  ‘Ò€4¾?d X½fJ§á @  ‘Ó€5¾?d ˜½ñ³U @  ‘Ô€6¾?d ؽs‰¤‹ @  ‘Õ€7¾?d ¾2_I’ @  ‘Ö€8¾?d X¾°Î^L @  ‘×€9¾?d ˜¾,gîo @  ‘Ø€:¾?d ؾ®öù± @  ‘Ù€;¾?d ¿:<Û¦ @  ‘Ú€<¾?d X¿¸­Ìx @  ‘Û€=¾?d ˜¿/ÿØÌ @uÐÀ  ‘Ü€>¾?d Ø¿­nÏ @  ‘Ý€?¾?d 0À»¹ @  ‘Þ€@¾?d pÀŸ*Šg @  ‘߀A¾?d °À¿$# @  ‘à€B¾?d ðÀ=µ4Ê @  ‘á€C¾?d 0Á©Ý @  ‘â€D¾?d€ pÁê©ö @  ’€E¾?d °Áœºªž @  ’€F¾?d ðÁ+½@ @  ’€G¾?d 0š´«´ @  ’€H¾?d pÂ%¼j @  ’€I¾?d °ÂJ>S3 @  ’€J¾?d ðÂȯDí @  ’€K¾?d 0Ã’×9€ @  ’€L¾?d pÃF.^ @  ’ €M¾?d °ÃB]Á @  ’ €N¾?d ðÃÀÌÖÙ @  ’ €O¾?d 0Ä¥ ñ @  ’ €P¾?d pÄ'˜æÑ @  ’ €Q¾?d °Äuƒ ˆ @  ’€R¾?d ðÄ÷V @  ’€S¾?d 0ÅË]Û @  ’€T¾?d pÅ‚ZJ @  ’€U¾?d °ÅÐA¥\ @  ’€V¾?d ðÅRв‚ @  ’€W¾?d 0ÆÖO¤v @  ’€X¾?d pÆTÞ³¨ @  ’€Y¾?d °ÆÅ\ñ @  ’€Z¾?d ðÆ„TK/ @  ’€[¾?d 0ÇÞ,6B @  ’€\¾?d pÇ\½!œ @  ’€]¾?d °Ç¦ÎÅ @  ’€^¾?d ðÇŒ7Ù @  ’€_¾?d 0ÈYô¸ @  ’€`¾?d pÈÛe¯Ý @  ’€a¾?d °È‰~@„ @  ’€b¾?d ðÈ ïWZ @  ’€c¾?d 0Éí03g @  ’ €d¾?d pÉo¡$¹ @  ’!€e¾?d °É=ºËà @  ’"€f¾?d ðÉ¿+Ü> @  ’#€g¾?d 0Ê;´ÊÊ @  ’$€h¾?d pʹ%Ý @  ’%€i¾?d °Êë>2M @  ’&€j¾?d ðÊi¯%“ @  ’'€k¾?d 0Ë3×Xþ @  ’(€l¾?d p˱FO  @  ’)€m¾?d °Ëã] y @  ’*€n¾?d ðËaÌ·§ @  ’+€o¾?d 0Ì q @  ’,€p¾?d p̆˜‡¯ @  ’-€q¾?d °ÌÔƒhö @  ’.€r¾?d ðÌV( @  ’/€s¾?d 0Í¡Ë<¥ @  ’0€t¾?d pÍ#Z+{ @  ’1€u¾?d °ÍqAÄ" @  ’2€v¾?d ðÍóÐÓü @  ’3€w¾?d 0ÎwOÅ @  ’4€x¾?d pÎõÞÒÖ @  ’5€y¾?d °Î§Å= @  ’6€z¾?d ðÎ%T*Q @  ’7€{¾?d 0Ï,W< @  ’8€|¾?d pÏý½@â @  ’9€}¾?d °Ï¯¦¯» @  ’:€~¾?d ðÏ-7¸e @  ’;€¾?d 0ПC¨Q @  ’<€€¾?d pÐÒ¿ @  ’=€¾?d °ÐOÉPÖ @  ’>€‚¾?d ðÐÍXG @  ’?€ƒ¾?d 0Ñ…€%§ @  ’@€„¾?d pÑ2y @  ’A€…¾?d °ÑU Ý  @  ’B€†¾?d ðÑ×›Êþ @  ’C€‡¾?d 0ÒSÜ  @  ’D€ˆ¾?d pÒÑ•ËÔ @  ’E€‰¾?d °ÒƒŽ$ @  ’F€о?d ðÒ3S @  ’G€‹¾?d 0Ó[gN> @  ’H€Œ¾?d pÓÙöYà @  ’I€¾?d °Ó‹í¶¹ @  ’J€޾?d ðÓ |¡g @  ’K€¾?d 0Ôl¹†± @  ’L€¾?d pÔî(‘o @  ’M€‘¾?d °Ô¼3~6 @  ’N€’¾?d ðÔ>¢iè @  ’O€“¾?d 0ÕÉ{*e @  ’P€”¾?d pÕKê=» @  ’Q€•¾?d °ÕñÒâ @  ’R€–¾?d ðÕ›`Å< @  ’S€—¾?d 0ÖÿÓÈ @  ’T€˜¾?d pÖnÄ @  ’U€™¾?d °ÖÏu+O @  ’V€š¾?d ðÖMä<‘ @  ’W€›¾?d 0לAü @  ’X€œ¾?d pו V" @  ’Y€¾?d °×ǹ{ @  ’Z€ž¾?d ð×E‡®¥ @  ’[€Ÿ¾?d 0ØDϽ @  ’\€ ¾?d pØÕØc @  ’]€¡¾?d °Ø@Î7: @  ’^€¢¾?d ðØÂ_ ä @  ’_€£¾?d 0Ù$€DÙ @  ’`€¤¾?d pÙ¦S @  ’a€¥¾?d °Ùô ¼^ @  ’b€¦¾?d ðÙv›«€ @  ’c€§¾?d 0Úò½t @  ’d€¨¾?d pÚp•ªª @  ’e€©¾?d °Ú"ŽEó @  ’f€ª¾?d ðÚ R- @  ’g€«¾?d 0Ûúg/@ @  ’h€¬¾?d pÛxö8ž @  ’i€­¾?d °Û*í×Ç @  ’j€®¾?d ðÛ¨|À @  ’k€¯¾?d 0Ü͹çÏ @  ’l€°¾?d pÜO(ð @  ’m€±¾?d °Ü3H @  ’n€²¾?d ðÜŸ¢– @  ’o€³¾?d 0Ýh{K @  ’p€´¾?d pÝêê\Å @  ’q€µ¾?d °Ý¸ñ³œ @  ’r€¶¾?d ðÝ:`¤B @  ’s€·¾?d 0Þ¾ÿ²¶ @  ’t€¸¾?d pÞä @  ’œ€à¾?d ˆè ë< @  ’€á¾?d ÈèДÆc @  ’ž€â¾?d éÜJ‹ @  ’Ÿ€ã¾?d Hé´Úµ€ @  ’ €ä¾?d ˆé”/·~ @  ’¡€å¾?d ÈédPM @  ’¢€æ¾?d êùíÆ @  ’£€ç¾?d Hêb^L- @  ’¤€è¾?d ˆêB«NÓ @  ’¥€é¾?d Èê²Ô´ª @  ’¦€ê¾?d ëbœ8B @  ’§€ë¾?d Hëj=Þ @  ’¨€ì¾?d ˆëJÈÜç @  ’©€í¾?d È뺷&ž @  ’ª€î¾?d ì£ùÕ‘ @  ’«€ï¾?d Hì]ã– @  ’¬€ð¾?d ˆì}h @  ’­€ñ¾?d Èìiî @  ’®€ò¾?d í]!bù @  ’¯€ó¾?d Híø!ºB @  ’°€ô¾?d ˆíØÔ¸¼ @  ’±€õ¾?d Èí(«BÅ @  ’²€ö¾?d îµïâ @  ’³€÷¾?d Hî.¥Cï @  ’´€ø¾?d ˆîPA @  ’µ€ù¾?d Èîþ/»h @  ’¶€ú¾?d ï.g7€ @  ’·€û¾?d Hï&ÆÑÛ @  ’¸€ü¾?d ˆï3Ó% @  ’¹€ý¾?d ÈïöL)\ @  ’º€þ¾?d ðH’•î @  ’»€ÿ¾?d Hð¹Î{º @  ’¼€¿?d ˆð™;yD @  ’½€¿?d ÈðiDƒ= @  ’¾€¿?d ñ¹ Õ @  ’¿€¿?d Hñ£ öL @  ’À€¿?d ˆñƒøô² @  ’Á€¿?d Èñs‡Ë @  ’€¿?d òîî  @  ’À¿?d Hòu‰á @  ’Ä€¿?d ˆòU|  @  ’Å€ ¿?d Èò¥÷f @  ’Æ€ ¿?d óuK{Ž @  ’Ç€ ¿?d Hó}êÕ @  ’È€ ¿?d ˆó]Ÿ+ @  ’É€ ¿?d Èó­`eR @  ’Ê€¿?d ô´.–] @  ’Ë€¿?d HôJ4UZ @  ’Ì€¿?d ˆôjÁW¤ @  ’Í€¿?d Èôš¾­Ý @  ’΀¿?d õJö!5 @  ’Ï€¿?d HõïöùŽ @  ’Ѐ¿?d ˆõÏûp @  ’Ñ€¿?d Èõ?|  @  ’Ò€¿?d ö¢8¡È @  ’Ó€¿?d Hö9r# @  ’Ô€¿?d ˆö‡Ý @  ’Õ€¿?d Èöéøø¤ @  ’Ö€¿?d ÷9°tL @  ’×€¿?d H÷1’ @  ’Ø€¿?d ˆ÷äé @  ’Ù€¿?d È÷á›j @  ’Ú€¿?d øÕdæ @  ’Û€¿?d Hø¶ÉV @  ’Ü€ ¿?d ˆø–<¨ @  ’Ý€!¿?d ÈøfCäÑ @  ’Þ€"¿?d ù¶ h9 @  ’߀#¿?d Hù —2 @  ’à€$¿?d ˆù"ø•Ì @  ’á€%¿?d ÈùÒ‡oµ @  ’â€&¿?d€ ú;ÓÒ @  “€'¿?d HúA : @  “€(¿?d ˆúaþ8î @  “€)¿?d ÈúTÈ9z @  “€*¿?d û„€µ’ @  “€+¿?d HûB“ ³ @  “€,¿?d ˆûbfM @  “€-¿?d Èû\««N @  “€.¿?d üEåXA @  “ €/¿?d Hü~¶`« @  “ €0¿?d ˆü^CbU @  “ €1¿?d ÈükucÁ @  “ €2¿?d ý»=ï) @  “ €3¿?d Hý}.V @  “€4¿?d ˆý]ÛTö @  “€5¿?d ÈýηÏ @  “€6¿?d þSóoÔ @  “€7¿?d Hþ ð5Ò @  “€8¿?d ˆþ-7, @  “€9¿?d Èþ36¸ @  “€:¿?d ÿÈ{ºP @  “€;¿?d Hÿhq @  “€<¿?d ˆÿ. @  “€uÐ=¿?d ÈÿP¤Œ @  “€>¿?d _äŒ} @  “€?¿?d ` P˜Z @  “€@¿?d  )¥š¤ @  “€A¿?d à“›0 @  “€B¿?d ÌÛØ @  “€C¿?d ` È®ù @  “€D¿?d  *=¬ @  “€E¿?d à¨WT @  “ €F¿?d 5°• @  “!€G¿?d `kê“ @  “"€H¿?d  Kåèm @  “#€I¿?d à~Óéù @  “$€J¿?d ®›e @  “%€K¿?d `hˆÜ0 @  “&€L¿?d  H}ÞÎ @  “'€M¿?d àv°{Í @  “(€N¿?d oþˆÂ @  “)€O¿?d `T­°( @  “*€P¿?d  tX²Ö @  “+€Q¿?d àAn³B @  “,€R¿?d ‘&?ª @  “-€S¿?d `W5†‹ @  “.€T¿?d  wÀ„u @  “/€U¿?d à䬖 @  “0€V¿?d yè¿W @  “1€W¿?d `'ëåQ @  “2€X¿?d  ç¯ @  “3€Y¿?d à2(æ; @  “4€Z¿?d â`jÓ @  “5€[¿?d `$sÓò @  “6€\¿?d  †Ñ  @  “7€]¿?d à:Kt @  “8€^¿?d ´ø @  “9€_¿?d `¨Pù$ @  “:€`¿?d  ˆ¥ûÚ @  “;€a¿?d ནúN @  “<€b¿?d mÛv¦ @  “=€c¿?d ` «Èχ @  “>€d¿?d   ‹=Íy @  “?€e¿?d à §Pw¸ @  “@€f¿?d :×y @  “A€g¿?d ` d @  “B€h¿?d   Dâ @  “C€i¿?d à qÔŽ @  “D€j¿?d ¡œý @  “E€k¿?d ` g»Ü @  “F€l¿?d   Gz¹" @  “G€m¿?d à y·! @  “H€n¿?d `ùï. @  “I€o¿?d ` [ª×Ä @  “J€p¿?d   {_Õ: @  “K€q¿?d à NiÔ® @  “L€r¿?d ž!XF @  “M€s¿?d ` X2ág @  “N€t¿?d   xÇã™ @  “O€u¿?d à ë«xz @  “P€v¿?d vïØ» @  “Q€w¿?d `(삽 @  “R€x¿?d  €C @  “S€y¿?d à=/× @  “T€z¿?d íg ? @  “U€{¿?d `+t´ @  “V€|¿?d   ¶à @  “W€}¿?d à5Lã @  “X€~¿?d ‹’¯Q @  “Y€¿?d `Ààïä @  “Z€€¿?d  àí @  “[€¿?d àÕ#ìŽ @  “\€‚¿?d k`f @  “]€ƒ¿?d `ÃxÙG @  “^€„¿?d  ãÛ¹ @  “_€…¿?d àaçgê @  “`€†¿?d ü£Ç+ @  “a€‡¿?d `¢ - @  “b€ˆ¿?d  ‚UŸÓ @  “c€‰¿?d à·cžG @  “d€Š¿?d g+¯ @  “e€‹¿?d `¡8«Ž @  “f€Œ¿?d  Í©p @  “g€¿?d à¿ s @  “h€Ž¿?d ¦Nÿ| @  “i€¿?d `Ç– @  “j€¿?d  ½èÅh @  “k€‘¿?d àˆÞÄü @  “l€’¿?d X–H @  “m€“¿?d `ž…ñ5 @  “n€”¿?d  ¾póË @  “o€•¿?d à-h( @  “p€–¿?d °XÈé @  “q€—¿?d `î[’ï @  “r€˜¿?d  ή @  “s€™¿?d àû˜‘… @  “t€š¿?d +Ðm @  “u€›¿?d `íäL @  “v€œ¿?d  Í6¦² @  “w€¿?d àóû± @  “x€ž¿?d Ǭ @  “y€Ÿ¿?d `aàŽš @  “z€ ¿?d  AŒd @  “{€¡¿?d àt#ð @  “|€¢¿?d ¤k @  “}€£¿?d `bx¸9 @  “~€¤¿?d  BºÇ @  “€¥¿?d à¶07 @  “€€¦¿?d òö @  “€§¿?d `NñÊð @  “‚€¨¿?d  nÈ @  “ƒ€©¿?d à[2Éš @  “„€ª¿?d ‹zEr @  “…€«¿?d `MiüS @  “†€¬¿?d  mœþ­ @  “‡€­¿?d àSQ[® @  “ˆ€®¿?d J¨¡ @  “‰€¯¿?d `qLK @  “Š€°¿?d  Q¹’µ @  “‹€±¿?d àd“! @  “Œ€²¿?d ´ÇÉ @  “€³¿?d `rÔ¦è @  “Ž€´¿?d  R!¤ @  “€µ¿?d àÁM?õ @  “€¶¿?d \ Ÿ4 @  “‘€·¿?d ` Å2 @  “’€¸¿?d  "ÿÇÌ @  ““€¹¿?d àÉÆX @  “”€º¿?d ÇJ° @  “•€»¿?d `’ó‘ @  “–€¼¿?d  !gñouÐ  @  “—€½¿?d àªTl @  “˜€¾¿?d 8 n¡Š  @  “™€¿¿?d x 8ž- @  “š€À¿?d ¸ àœÓ @  “›€Á¿?d ø -ÖG @  “œ€¿?d 8!ýž¯ @  “€ÿ?d x!;¨Ž @  “ž€Ä¿?d ¸!xªp @  “Ÿ€Å¿?d ø!™# @  “ €Æ¿?d 8"V¶â @  “¡€Ç¿?d x"ZUìä @  “¢€È¿?d ¸"z î @  “£€É¿?d ø"O–ïŽ @  “¤€Ê¿?d 8#ŸÞcf @  “¥€Ë¿?d x#YÍÚG @  “¦€Ì¿?d ¸#y8ع @  “§€Í¿?d ø#Gõ}º @  “¨€ο?d 8$^»Žµ @  “©€Ï¿?d x$eè¶_ @  “ª€п?d ¸$E´¡ @  “«€Ñ¿?d ø$p+µ5 @  “¬€Ò¿?d 8% c9Ý @  “­€Ó¿?d x%fp€ü @  “®€Ô¿?d ¸%F…‚ @  “¯€Õ¿?d ø%Õéá @  “°€Ö¿?d 8&H­¹  @  “±€׿?d x&®ã& @  “²€Ø¿?d ¸&6[áØ @  “³€Ù¿?d ø&màL @  “´€Ú¿?d 8'Ó%l¤ @  “µ€Û¿?d x'6Õ… @  “¶€Ü¿?d ¸'5Ã×{ @  “·€Ý¿?d ø' rx @  “¸€Þ¿?d 8(?ñþe @  “¹€ß¿?d x(™ÿS @  “º€à¿?d ¸(¹àý­ @  “»€á¿?d ø(ŒÖü9 @  “¼€â¿?d 8)\žpÑ @  “½€ã¿?d x)šÉð @  “¾€ä¿?d ¸)ºxË @  “¿€å¿?d ø)–qÏ @  “À€æ¿?d 8* QÑ @  “Á€ç¿?d x*UR‹ @  “€è¿?d ¸*u§‰ö @  “Àé¿?d ø*@‘ˆb @  “Ä€ê¿?d 8+ÙŠ @  “Å€ë¿?d x+Vʽ« @  “Æ€ì¿?d ¸+v?¿U @  “Ç€í¿?d ø+HòV @  “È€î¿?d 8,Q¼éY @  “É€ï¿?d x,jïѳ @  “Ê€ð¿?d ¸,JÓM @  “Ë€ñ¿?d ø,,ÒÙ @  “Ì€ò¿?d 8-¯d^1 @  “Í€ó¿?d x-iwç @  “΀ô¿?d ¸-I‚åî @  “Ï€õ¿?d ø-Úî~  @  “Ѐö¿?d 8.GªÞÌ @  “Ñ€÷¿?d x.©„Ê @  “Ò€ø¿?d ¸.9\†4 @  “Ó€ù¿?d ø. j‡  @  “Ô€ú¿?d 8/Ü" H @  “Õ€û¿?d x/1²i @  “Ö€ü¿?d ¸/:İ— @  “×€ý¿?d ø/ ” @  “Ø€þ¿?d 80º×©& @  “Ù€ÿ¿?d x0TºóI @  “Ú€À?d ¸0tOñ· @  “Û€À?d ø0Ayð# @  “Ü€À?d 81‘1|Ë @  “Ý€À?d x1W"Åê @  “Þ€À?d ¸1w×Ç @  “߀À?d ø1õ½{G @  “à€À?d 82hùÛ† @  “á€À?d x26ú€ @  “â€À?d€ ¸2Y+Ç @  ”€ À?d ø2D.bz @  ”€ À?d 83”fî’ @  ”€ À?d x3—<¬^ @  ”€ À?d ¸3·É®  @  ”€ À?d ø3G¶TÙ @  ”€À?d 84^ø§Ö @  ”€À?d x4«ÀF @  ”€À?d ¸4‹ì¸ @  ” €À?d ø4{“8Á @  ” €À?d 85«Û´) @  ” €À?d x5¨öå @  ” €À?d ¸5ˆtô @  ” €À?d ø5x b @  ”€À?d 86åO®£ @  ”€À?d x6Ø_•? @  ”€À?d ¸6øª—Á @  ”€À?d ø6Õm¸ @  ”€À?d 87ØáP @  ”€À?d x7ÛÇ£œ @  ”€À?d ¸7û2¡b @  ”€À?d ø7 M[ @  ”€À?d 88?²× @  ”€À?d x8Wä‰J @  ”€ À?d ¸8w‹´ @  ”€!À?d ø8‡nqÍ @  ”€"À?d 89W&ý% @  ”€#À?d x9T|¿é @  ”€$À?d ¸9t‰½ @  ”€%À?d ø9„öGn @  ”€&À?d 8:²ç¯ @  ”€'À?d x:5¤ûƒ @  ” €(À?d ¸:Qù} @  ”!€)À?d ø:å. @  ”"€*À?d 8;5fì @  ”#€+À?d x;6<Í  @  ”$€,À?d ¸;ÉÏÞ @  ”%€-À?d ø;æ¶5§ @  ”&€.À?d 8<ÿøÆ¨ @  ”'€/À?d x< ¡8 @  ”(€0À?d ¸<*ì£Æ @  ”)€1À?d ø<Ú“Y¿ @  ”*€2À?d 8= ÛÕW @  ”+€3À?d x= —› @  ”,€4À?d ¸=)t•e @  ”-€5À?d ø=Ù o @  ”.€6À?d 8>DOÏÝ @  ”/€7À?d x>y_ôA @  ”0€8À?d ¸>Yªö¿ @  ”1€9À?d ø>©Õ Æ @  ”2€:À?d 8?y€. @  ”3€;À?d x?zÇÂâ @  ”4€<À?duÐ@7 ¸?Z2À @  ”5€=À?d ø?ªM:e @  ”6€>À?d P@iá€Y @  ”7€?À?d @SƒÞ$ @  ”8€@À?d Ð@ÑÉú @  ”9€AÀ?d As´¨µ @  ”:€BÀ?d PAñ%¿k @  ”;€CÀ?d APè‡ @  ”<€DÀ?d ÐAÒŠÿY @  ”=€EÀ?d B= ²? @  ”>€FÀ?d PB¿±¥á @  ”?€GÀ?d BŸÄª @  ”@€HÀ?d ÐBU½¡ @  ”A€IÀ?d C¿óÜî @  ”B€JÀ?d PC=bË0 @  ”C€KÀ?d Cœ\œÜ @  ”D€LÀ?d ÐCÍ‹ @  ”E€MÀ?d Dum•ª @  ”F€NÀ?d PD÷ü‚t @  ”G€OÀ?d D yðÄ @  ”H€PÀ?d ÐD"èç @  ”I€QÀ?d E€N†U @  ”J€RÀ?d PEß‘‹ @  ”K€SÀ?d E£áÆg @  ”L€TÀ?d ÐE!pѹ @  ”M€UÀ?d FÎÚœß @  ”N€VÀ?d PFLK‹ @  ”O€WÀ?d FÓ?¥½ @  ”P€XÀ?d ÐFQ®²c @  ”Q€YÀ?d GóÓ, @  ”R€ZÀ?d PGq™Äò @  ”S€[À?d GЧ“ @  ”T€\À?d ÐGR6„À @  ”U€]À?d H'åz @  ”V€^À?d PH–¶ò¤ @  ”W€_À?d H\„¹È @  ”X€`À?d ÐHÞ® @  ”Y€aÀ?d I|³ÏY @  ”Z€bÀ?d PIþ"؇ @  ”[€cÀ?d I_k @  ”\€dÀ?d ÐIݘµ @  ”]€eÀ?d J2'ÕÓ @  ”^€fÀ?d PJ°¶Â  @  ”_€gÀ?d J>ÄË @  ”`€hÀ?d ÐJ¼UÜß @  ”a€iÀ?d Kó½ @  ”b€jÀ?d PKœbªN @  ”c€kÀ?d K=\ý¢ @  ”d€lÀ?d ÐK¿Íê| @  ”e€mÀ?d LÔmôÔ @  ”f€nÀ?d PLVüã  @  ”g€oÀ?d Ly‘º @  ”h€pÀ?d ÐLƒè†d @  ”i€qÀ?d M!Nç+ @  ”j€rÀ?d PM£ßðõ @  ”k€sÀ?d Má§ @  ”l€tÀ?d ÐM€p°Ç @  ”m€uÀ?d NoÚý¡ @  ”n€vÀ?d PNíKê @  ”o€wÀ?d Nr?Äà @  ”p€xÀ?d ÐNð®Ó @  ”q€yÀ?d OR²R @  ”r€zÀ?d POЙ¥Œ @  ”s€{À?d Oq§ò` @  ”t€|À?d ÐOó6å¾ @  ”u€}À?d P?´« @  ”v€~À?d PP½—£u @  ”w€À?d Pš3©š @  ”x€€À?d ÐP¢¾D @  ”y€À?d Qºß  @  ”z€‚À?d PQ8•ÈÕ @  ”{€ƒÀ?d Q™«Ÿ9 @  ”|€„À?d ÐQ:ˆç @  ”}€…À?d RôÅ @  ”~€†À?d PRvÒ_ @  ”€‡À?d Rµ"íð @  ”€€ˆÀ?d ÐR7³ú. @  ”€‰À?d S•›a @  ”‚€ŠÀ?d PS„Œ¿ @  ”ƒ€‹À?d S¶ºÛS @  ”„€ŒÀ?d ÐS4+Ì @  ”…€À?d T_‹Ò% @  ”†€ŽÀ?d PTÝÅû @  ”‡€À?d TŠŸ·K @  ”ˆ€À?d ÐT • @  ”‰€‘À?d Uª¨ÁÚ @  ”Š€’À?d PU(9Ö @  ”‹€“À?d U‰è @  ”Œ€”À?d ÐU ––6 @  ”€•À?d Vä<ÛP @  ”Ž€–À?d PVf­ÌŽ @  ”€—À?d VùÙâ2 @  ”€˜À?d ÐV{Hõì @  ”‘€™À?d WÙ @  ”’€šÀ?d PW[ƒ} @  ”“€›À?d WúAÔ‘ @  ””€œÀ?d ÐWxÐÃO @  ”•€À?d X>Á¢õ @  ”–€žÀ?d PX¼Pµ+ @  ”—€ŸÀ?d XvbþG @  ”˜€ À?d ÐXôóé™ @  ”™€¡À?d YVUˆÖ @  ”š€¢À?d PYÔÄŸ @  ”›€£À?d YuúÈä @  ”œ€¤À?d ÐY÷kß: @  ”€¥À?d ZÁ’\ @  ”ž€¦À?d PZšP…‚ @  ”Ÿ€§À?d Z"ŒŽ @  ” €¨À?d ÐZ–³›P @  ”¡€©À?d [4ú @  ”¢€ªÀ?d P[¶„íÁ @  ”£€«À?d [ºº- @  ”¤€¬À?d Ð[•+­ó @  ”¥€­À?d \þ‹³[ @  ”¦€®À?d P\|¤… @  ”§€¯À?d \+ŸÖ5 @  ”¨€°À?d Ð\©Áë @  ”©€±À?d ] ¨ ¤ @  ”ª€²À?d P]‰9·z @  ”«€³À?d ](à– @  ”¬€´À?d Ð]ª–÷H @  ”­€µÀ?d ^E<º. @  ”®€¶À?d P^Ç­­ð @  ”¯€·À?d ^XÙƒL @  ”°€¸À?d Ð^ÚH”’ @  ”±€¹À?d _xîõÝ @  ”²€ºÀ?d P_úâ @  ”³€»À?d _[Aµï @  ”uÐ`´€¼À?d Ð_ÙТ1 @  ”µ€½À?d (`Æú @  ”¶€¾À?d h`—WíÐ @  ”·€¿À?d ¨`­5³­ @  ”¸€ÀÀ?d è`/¤¤s @  ”¹€ÁÀ?d (aÅ< @  ”º€ÂÀ?d ha“Òâ @  ”»€ÃÀ?d ¨a®­… @  ”¼€ÄÀ?d èa,<’Ð @  ”½€ÅÀ?d (bÖ߶ @  ”¾€ÆÀ?d hbAÈh @  ”¿€ÇÀ?d ¨barÇö @  ”À€ÈÀ?d èbããÐ( @  ”Á€ÉÀ?d (cAE±g @  ”€ÊÀ?d hcÃÔ¦¹ @  ”ÀËÀ?d ¨cbêñU @  ”Ä€ÌÀ?d ècà{æ‹ @  ”Å€ÍÀ?d (d‹Ûø# @  ”Æ€ÎÀ?d hd Jïý @  ”Ç€ÏÀ?d ¨d^ÏM @  ”È€ÐÀ?d èdÜ^Š“ @  ”É€ÑÀ?d (e~øëÜ @  ”Ê€ÒÀ?d heüiü @  ”Ë€ÓÀ?d ¨e]W«î @  ”Ì€ÔÀ?d èe߯¼0 @  ”Í€ÕÀ?d (f0lñV @  ”΀ÖÀ?d hf²ýæˆ @  ”Ï€×À?d ¨f-‰È4 @  ”ЀØÀ?d èf¯ßê @  ”Ñ€ÙÀ?d (g ¾¾¥ @  ”Ò€ÚÀ?d hg/©{ @  ”Ó€ÛÀ?d ¨g.þ— @  ”Ô€ÜÀ?d èg¬€éI @  ”Õ€ÝÀ?d (hꑈó @  ”Ö€ÞÀ?d hhhŸ- @  ”×€ßÀ?d ¨h¢2ÔA @  ”Ø€àÀ?d èh £ÃŸ @  ”Ù€áÀ?d (i‚¢Ð @  ”Ú€âÀ?d hi”µ @  ”Û€ãÀ?d ¨i¡ªââ @  ”Ü€äÀ?d èi#;õ< @  ”Ý€åÀ?d (jÌ‘¸Z @  ”Þ€æÀ?d hjN¯„ @  ”߀çÀ?d ¨jÀr¦ˆ @  ”à€èÀ?d èjBã±V @  ”á€éÀ?d (kàEÐ @  ”â€êÀ?d€ hkÛa @  •€ëÀ?d ¨kVhĤ @  •€ìÀ?d èkÔùÓz @  •€íÀ?d (lz6? @  •€îÀ?d hlø!á @  •€ïÀ?d ¨la¶ + @  •€ðÀ?d èlã'õ @  •€ñÀ?d (m3%À @  •€òÀ?d hm ¢2 @  • €óÀ?d ¨miÕž @  • €ôÀ?d èmëD‰Á @  • €õÀ?d (nÁ§?J @  • €öÀ?d hnC6(” @  • €÷À?d ¨n¿Qg² @  •€øÀ?d èn=Àpl @  •€ùÀ?d (oüup¹ @  •€úÀ?d ho~ägg @  •€ûÀ?d ¨o“Ëf @  •€üÀ?d èo˜ܸ @  •€ýÀ?d (p‘{v@ @  •€þÀ?d hpêaž @  •€ÿÀ?d ¨p…›a @  •€Á?d èp vÙ @  •€Á?d (qkHì @  •€Á?d hqé_2 @  •€Á?d ¨qøó3 @  •€Á?d èqiäí @  •€Á?d (r%ŠRf @  •€Á?d hr§E¸ @  •€Á?d ¨r[| ž @  •€Á?d èrÙí@ @  •€ Á?d (s ^:% @  • € Á?d hs‹Ï-û @  •!€ Á?d ¨sï¸ú @  •"€ Á?d èsm)–$ @  •#€ Á?d (tÃÀsa @  •$€Á?d htAQd¿ @  •%€Á?d ¨t¥æ:  @  •&Á?d èt'w-× @  •'Á?d (uKcâ @  •(Á?d huÉò< @  •)Á?d ¨u­…¨= @  •*Á?d èu/¿ã @  •+Á?d (v÷ h @  •,Á?d hv‡f¶ @  •-Á?d ¨v{Q @  •.Á?d èvùFN @  •/Á?d (w8%F› @  •0Á?d hwº´QE @  •1Á?d ¨wÞÃýD @  •2Á?d èw\Rêš @  •3Á?d (xß pÍ @  •4Á?d hx]›g @  •5Á?d ¨xYs @  •6 Á?d èxÛŠdÛ @  •7!Á?d (y·žZî @  •8"Á?d hy5M0 @  •9#Á?d ¨yQxá1 @  •:$Á?d èyÓéöï @  •;%Á?d (zù @d @  •<&Á?d hz{›Wº @  •='Á?d ¨z‡üœ @  •>(Á?d èzmB @  •?)Á?d ({{Ù.µ @  •@*Á?d h{ùH9k @  •A+Á?d ¨{?•j @  •B,Á?d è{®‚´ @  •C-Á?d (|±Ggñ @  •D.Á?d h|3Öp/ @  •E/Á?d ¨|ªá]å @  •F0Á?d è|(pJ; @  •G1Á?d (}Ddt @  •H2Á?d h}ÆõcÐ @  •I3Á?d ¨}¢‚ÏÑ @  •J4Á?d è} Ø @  •K5Á?d (~ ðn„ @  •L6Á?d h~ˆayZ @  •M7Á?d ¨~t6| @  •N8Á?d è~ö—!¢ @  •O9Á?d (7"!w @  •P:Á?d hµ³6© @  •Q;Á?d ¨uЀ'ÑÄš¨ @  •R<Á?d èSUv @  •S=Á?d @€ŠLyH @  •T>Á?d €€ª¹{¶ @  •U?Á?d À€ü o‘ @  •V@Á?d ,Eãy @  •WAÁ?d @ˆFz @  •XBÁ?d €2}D„ @  •YCÁ?d Àôný¥ @  •ZDÁ?d ‚i*]d @  •[EÁ?d @‚\\ð @  •\FÁ?d €‚|é^ @  •]GÁ?d À‚"ê @  •^HÁ?d ƒò¢ˆà @  •_IÁ?d @ƒpÈ4³ @  •`JÁ?d €ƒP=6M @  •aKÁ?d Àƒ–.l @  •bLÁ?d „`|c @  •cMÁ?d @„ºV}÷ @  •dNÁ?d €„š£  @  •eOÁ?d À„¡ðGã @  •fPÁ?d …q¸Ë  @  •gQÁ?d @…Oun @  •hRÁ?d €…o€lö @  •iSÁ?d À…©“Õ× @  •jTÁ?d †4×u @  •kUÁ?d @†át‚ @  •lVÁ?d €†!v| @  •mWÁ?d À†,z @  •nXÁ?d ‡¯_ ’ @  •oYÁ?d @‡<3;q @  •pZÁ?d €‡Æ9 @  •q[Á?d À‡ÚÕ€® @  •r\Á?d ˆî* ³ @  •s]Á?d @ˆÛ ' @  •t^Á?d €ˆûéÙ @  •u_Á?d Àˆ] ï @  •v`Á?d ‰E‚ @  •waÁ?d @‰³ˆ' @  •xbÁ?d €‰“}%ú @  •ycÁ?d À‰UnœÛ @  •zdÁ?d ŠÈ*< @  •{eÁ?d @Šý=Ž @  •|fÁ?d €ŠÝé?p @  •}gÁ?d ÀŠƒêev @  •~hÁ?d ‹S¢éž @  •iÁ?d @‹œ™cn @  •€jÁ?d €‹¼la @  •kÁ?d À‹zر @  •‚lÁ?d Œc1+¾ @  •ƒmÁ?d @ŒV** @  •„nÁ?d €Œvò(Ô @  •…oÁ?d ÀŒM¡> @  •†pÁ?d éœÖ @  •‡qÁ?d @£$9Õ @  •ˆrÁ?d €ƒÑ;+ @  •‰sÁ?d ÀE‚  @  •ŠtÁ?d Ž؆"Ë @  •‹uÁ?d @Ží°#_ @  •ŒvÁ?d €ŽÍE!¡ @  •wÁ?d ÀŽ“F{§ @  •ŽxÁ?d C÷O @  •yÁ?d @Ðbl¬ @  •zÁ?d €ð—nR @  •‘{Á?d À6„×s @  •’|Á?d ˆZkÁ @  •“}Á?d @½ljU @  •”~Á?d €™h« @  ••Á?d ÀÖë( @  •–€Á?d ‘£¤ö @  •—Á?d @‘8nõ @  •˜‚Á?d €‘›  @  •™ƒÁ?d À‘Þˆº* @  •š„Á?d ’CÌë @  •›…Á?d @’vú @  •œ†Á?d €’V @  •‡Á?d À’ C‡ @  •žˆÁ?d “ØDÏo @  •Ÿ‰Á?d @“Z.s< @  • ŠÁ?d €“zÛq @  •¡‹Á?d À“¼ÈÈã @  •¢ŒÁ?d ”¥†;ì @  •£Á?d @”°:x @  •¤ŽÁ?d €”°E8† @  •¥Á?d À”‹l @  •¦Á?d •[^Œ„ @  •§‘Á?d @•e“)‡ @  •¨’Á?d €•Ef+y @  •©“Á?d À•ƒu’X @  •ª”Á?d –12™ @  •«•Á?d @–+3  @  •¬–Á?d €– ò1ó @  •­—Á?d À–Uñkõ @  •®˜Á?d —…¹ç @  •¯™Á?d @—Õ|þ @  •°šÁ?d €—6 ~ @  •±›Á?d À—ð3Ç! @  •²œÁ?d ˜ÄÌK< @  •³Á?d @˜ñúJ¨ @  •´žÁ?d €˜ÑHV @  •µŸÁ?d À˜wëI` @  •¶ Á?d ™§£Åˆ @  •·¡Á?d @™™n`‹ @  •¸¢Á?d €™¹›bu @  •¹£Á?d À™ˆÛT @  •º¤Á?d šâÌ{• @  •»¥Á?d @š×úz @  •¼¦Á?d €š÷xÿ @  •½§Á?d Àš© "ù @  •¾¨Á?d ›yD® @  •¿©Á?d @›U)Ð @  •ÀªÁ?d €›uÜ. @  •Á«Á?d À›³Ï¯ @  •¬Á?d œª\ @  •íÁ?d @œŸ·]” @  •Ä®Á?d €œ¿B_j @  •ůÁ?d Àœ„g€ @  •ưÁ?d TYëh @  •DZÁ?d @j”Nk @  •ȲÁ?d €JaL• @  •ɳÁ?d ÀŒrõ´ @  •Ê´Á?d ž6Uu @  •˵Á?d @ž$Tá @  •̶Á?d €žõV @  •Í·Á?d ÀžZö  @  •θÁ?d Ÿо€ñ @  •ϹÁ?d @ŸÒ @  •кÁ?d €Ÿ9'ì @  •Ñ»ÁuР?d ÀŸÿ4 Í @  •Ò¼Á?d  Ž?~« @  •Ó½Á?d X » ? @  •Ô¾Á?d ˜ ›ü}Á @  •Õ¿Á?d Ø ÍHiæ @  •ÖÀÁ?d ¡å @  •×ÁÁ?d X¡#Í@  @  •ØÂÁ?d ˜¡8Bó @  •ÙÃÁ?d Ø¡Å+ûÒ @  •ÚÄÁ?d ¢Xo[ @  •ÛÅÁ?d X¢mYZ‡ @  •ÜÆÁ?d ˜¢M¬Xy @  •ÝÇÁ?d Ø¢¯ @  •ÞÈÁ?d £Ã玗 @  •ßÉÁ?d X£A2Ä @  •àÊÁ?d ˜£ax0: @  •áËÁ?d Ø£§k‰ @  •âÌÁ?d€ ¤b @  –ÍÁ?d X¤«Ä© @  –ÎÁ?d ˜¤‹àÆW @  –ÏÁ?d ؤuúP @  –ÐÁ?d ¥¥²‰¸ @  –ÑÁ?d X¥UÍsÁ @  –ÒÁ?d ˜¥u8q? @  –ÓÁ?d Ø¥}™—d @  –ÔÁ?d ¦àÝ7¥ @  – ÕÁ?d X¦¢ÍÜ @  – ÖÁ?d ˜¦0WÏ" @  – ×Á?d ئ«nÉ @  – ØÁ?d §{Uâ! @  – ÙÁ?d X§‹*X @  –ÚÁ?d ˜§«ß¦ @  –ÛÁ?d اß @  –ÜÁ?d ¨: N @  –ÝÁ?d X¨Ê_´y @  –ÞÁ?d ˜¨ꪶ‡ @  –ßÁ?d ب‰L\ @  –àÁ?d ©YOÀ´ @  –áÁ?d X©©0:Í @  –âÁ?d ˜©‰Å83 @  –ãÁ?d Ø©dÞh @  –äÁ?d ª ~© @  –åÁ?d Xªì_„Ð @  –æÁ?d ˜ª̪†. @  –çÁ?d تWà'Å @  –èÁ?d «‡¨«- @  –éÁ?d X«w×QT @  –êÁ?d ˜«W"Sª @  –ëÁ?d Ø«ã$¬¡ @  – ìÁ?d ¬új_® @  –!íÁ?d X¬ ¥× @  –"îÁ?d ˜¬*à§) @  –#ïÁ?d جÔúd. @  –$ðÁ?d ­²èÆ @  –%ñÁ?d X­ôÍ¿ @  –&òÁ?d ˜­Ô8A @  –'óÁ?d Ø­Ü™ö @  –(ôÁ?d ®AÝVÛ @  –)õÁ?d X®±¢¬¢ @  –*öÁ?d ˜®‘W®\ @  –+÷Á?d Ø® · @  –,øÁ?d ¯ÚUƒ_ @  –-ùÁ?d X¯**y& @  –.úÁ?d ˜¯ ß{Ø @  –/ûÁ?d د¯ß£c @  –0üÁ?d °Ñ @  –1ýÁ?d X°á~å¨ @  –2þÁ?d ˜°Á‹çV @  –3ÿÁ?d ذ‚õ<' @  –4Â?d ±R½°Ï @  –5Â?d X±¢ÂJ¶ @  –6Â?d ˜±‚7HH @  –7Â?d رŠ–® @  –8Â?d ²ÒÒ @  –9Â?d X²ç­ô« @  –:Â?d ˜²ÇXöU @  –;Â?d ز\W¾ @  –<Â?d ³ŒZÛV @  –= Â?d X³|%!/ @  –> Â?d ˜³\Ð#Ñ @  –? Â?d سFÑÚH @  –@ Â?d ´_Ÿ)G @  –A Â?d X´¯àÓ> @  –BÂ?d ˜´ÑÀ @  –CÂ?d Ø´qÇ @  –DÂ?d µ¡Gž/ @  –EÂ?d XµQ8dV @  –FÂ?d ˜µqÍf¨ @  –GÂ?d صyl€ó @  –HÂ?d ¶ä( 2 @  –IÂ?d X¶WÚK @  –JÂ?d ˜¶4¢Øµ @  –KÂ?d ض¯èy^ @  –LÂ?d · õ¶ @  –MÂ?d X·ßÏ @  –NÂ?d ˜·¯* 1 @  –OÂ?d Ø· *ÕŠ @  –PÂ?d ¸>ÕY— @  –QÂ?d X¸Ϊ£î @  –RÂ?d ˜¸î_¡ @  –SÂ?d ظò[Ë @  –T Â?d ¹]º×# @  –U!Â?d X¹­Å-Z @  –V"Â?d ˜¹0/¤ @  –W#Â?d ع…‘Éÿ @  –X$Â?d ºÕi> @  –Y%Â?d Xº誓G @  –Z&Â?d ˜ºÈ_‘¹ @  –['Â?d غS0R @  –\(Â?d »ƒ]¼º @  –])Â?d X»s"Fà @  –^*Â?d ˜»S×D= @  –_+Â?d Ø»çÑ»6 @  –`,Â?d ¼þŸH9 @  –a-Â?d X¼à²@ @  –b.Â?d ˜¼.°¾ @  –c/Â?d ؼÐs¹ @  –d0Â?d ½GÿQ @  –e1Â?d X½ð8( @  –f2Â?d ˜½ÐÍÖ @  –g3Â?d ؽØlá @  –h4Â?d ¾E(AL @  –i5Â?d X¾µW»5 @  –j6Â?d ˜¾•¢¹Ë @  –k7Â?d ؾè  @  –l8Â?d ¿Þ ”È @  –m9Â?d X¿.ßn± @  –n:Â?d ˜¿*lO @uÐÀ  –o;Â?d Ø¿«*´ô @  –p<Â?d 0ÀÏÚå¦ @  –q=Â?d pÀ?¥ß @  –r>Â?d °ÀP! @  –s?Â?d ðÀŒ­òë @  –t@Â?d 0Á\å~ @  –uAÂ?d pÁ¬š„z @  –vBÂ?d °ÁŒo†„ @  –wCÂ?d ðÁ„Î`ß @  –xDÂ?d 0ŠÀ @  –yEÂ?d pÂéõ:g @  –zFÂ?d °ÂÉ8™ @  –{GÂ?d ðÂRJ™r @  –|HÂ?d 0š @  –}IÂ?d pÃr}ïã @  –~JÂ?d °ÃRˆí @  –KÂ?d ðëß$µ @  –€LÂ?d 0IJ‘׺ @  –MÂ?d pÄBî-à @  –‚NÂ?d °Äb/= @  –ƒOÂ?d ðÄœì: @  –„PÂ?d 0ÅLI`Ò @  –…QÂ?d pż6š« @  –†RÂ?d °ÅœÃ˜U @  –‡SÂ?d ðÅ”b~ @  –ˆTÂ?d 0Æ &ÞÏ @  –‰UÂ?d pÆùY$¶ @  –ŠVÂ?d °ÆÙ¬&H @  –‹WÂ?d ðÆB懣 @  –ŒXÂ?d 0Ç’® K @  –YÂ?d pÇbÑñ2 @  –ŽZÂ?d °ÇB$óÌ @  –[Â?d ðÇç$+w @  –\Â?d 0ÈÓÛ§j @  –‘]Â?d pÈ#¤] @  –’^Â?d °ÈQ_í @  –“_Â?d ðÈ`ü¥6 @  –”`Â?d 0ɰ´)Þ @  –•aÂ?d pÉ@ËÓ§ @  ––bÂ?d °É`>ÑY @  –—cÂ?d ðÉhŸ7 @  –˜dÂ?d 0ÊõÛ—Ã @  –™eÂ?d pʤmº @  –šfÂ?d °Ê%QoD @  –›gÂ?d ðÊ¾ί @  –œhÂ?d 0ËnSBG @  –iÂ?d pËž,¸> @  –žjÂ?d °Ë¾ÙºÀ @  –ŸkÂ?d ðË ßEË @  – lÂ?d 0Ì‘¶Ä @  –¡mÂ?d pÌãîL½ @  –¢nÂ?d °ÌÃNC @  –£oÂ?d ðÌ=D @  –¤pÂ?d 0ÍíI¬ @  –¥qÂ?d pÍ6ûÕ @  –¦rÂ?d °Í=Ãù+ @  –§sÂ?d ðÍ5bp @  –¨tÂ?d 0Ψ&¿± @  –©uÂ?d pÎXYEÈ @  –ªvÂ?d °Îx¬G6 @  –«wÂ?d ðÎãææÝ @  –¬xÂ?d 0Ï3®j5 @  –­yÂ?d pÏÃÑL @  –®zÂ?d °Ïã$’² @  –¯{Â?d ðÏF$J  @  –°|Â?d 0Ðøúö» @  –±}Â?d pÐ…  @  –²~Â?d °Ð(p< @  –³Â?d ðЦKµd @  –´€Â?d 0Ñv9Œ @  –µÂ?d pц|Ãõ @  –¶‚Â?d °Ñ¦‰Á  @  –·ƒÂ?d ðÑ®('P @  –¸„Â?d 0Ò3l‡‘ @  –¹…Â?d pÒÃ}è @  –º†Â?d °Òãæ @  –»‡Â?d ðÒx¬Þý @  –¼ˆÂ?d 0Ó¨äR @  –½‰Â?d pÓX›¨l @  –¾ŠÂ?d °Óxnª’ @  –¿‹Â?d ðÓboS  @  –ÀŒÂ?d 0Ô{!  @  –ÁÂ?d pÔ‹^Z} @  –ÂŽÂ?d °Ô««Xƒ @  –ÃÂ?d ðÔU±›„ @  –ÄÂ?d 0Õ…ùl @  –Å‘Â?d pÕu†í @  –Æ’Â?d °ÕUsïë @  –Ç“Â?d ðÕ]Ò ° @  –È”Â?d 0ÖÀ–©q @  –É•Â?d pÖ0éS @  –Ê–Â?d °ÖQö @  –Ë—Â?d ðÖ‹Vð @  –̘Â?d 0×[|õ @  –Í™Â?d p׫a†Œ @  –ΚÂ?d °×‹”„r @  –Ï›Â?d ð×.”\É @  –МÂ?d 0ØkÐÔ @  –ÑÂ?d pØê*­ @  –ÒžÂ?d °ØÊá(S @  –ÓŸÂ?d ðØ©LÒˆ @  –Ô Â?d 0Ùy^` @  –Õ¡Â?d pÙ‰{¤ @  –Ö¢Â?d °Ù©Ž¦ç @  –×£Â?d ðÙ¡/@¼ @  –ؤÂ?d 0ÚìÂ?d Hì%ôïÈ @  —?íÂ?d ˆì«ý@) @  —@îÂ?d Èì)lW÷ @  —AïÂ?d í@æô+ @  —BðÂ?d HíÂwãõ @  —CñÂ?d ˆíU%÷A @  —DòÂ?d Èí×´àŸ @  —EóÂ?d îrî¡ @  —FôÂ?d HîŒãù @  —GõÂ?d ˆîJI\ @  —HöÂ?d Èî’Û^‚ @  —I÷Â?d ² @  —JøÂ?d Hïˆl @  —KùÂ?d ˆï‹ÂœØ @  —LúÂ?d Èï S‹ @  —MûÂ?d ðó™K @  —NüÂ?d HðqžŽ• @  —OýÂ?d ˆð@–V @  —PþÂ?d Èðˆ @  —QÿÂ?d ñ¤Ë™ @  —RÃ?d Hñ&ZŽÙ @  —SÃ?d ˆñ±šm @  —TÃ?d Èñ3™³ @  —UÃ?d òê_ƒ @  —VÃ?d HòhΔS @  —WÃ?d ˆòôg$p @  —XÃ?d Èòvö3® @  —YÃ?d óz,òž @  —ZÃ?d Hóø½å@ @  —[ Ã?d ˆóoïñô @  —\ Ã?d Èóí~æ* @  —] Ã?d ô°²»Ú @  —^ Ã?d Hô2#¬ @  —_ Ã?d ˆô-w @  —`Ã?d Èô¼© @  —aÃ?d õù6±u @  —bÃ?d Hõ{§¦« @  —cÃ?d ˆõìõ² @  —dÃ?d Èõnd¥Á @  —eÃ?d ö·¢«ÿ @  —fÃ?d Hö53¼! @  —gÃ?d ˆö©š  @  —hÃ?d Èö+ Ü @  —iÃ?d ÷'ÑÚì @  —jÃ?d H÷¥@Í2 @  —kÃ?d ˆ÷2Ù† @  —lÃ?d È÷°ƒÎX @  —mÃ?d øÀþìº @  —nÃ?d HøBoûd @  —oÃ?d ˆøsgu§ @  —pÃ?d Èøñöby @  —qÃ?d ùËøy @  —r Ã?d Hù‡Zï§ @  —s!Ã?d ˆùû @  —t"Ã?d Èù’™ìÍ @  —u#Ã?d úK_âó @  —v$Ã?d HúÉÎõ- @  —w%Ã?d ˆúUgE @  —x&Ã?d Èú×öRÐ @  —y'Ã?d ûÛ,“à @  —z(Ã?d HûY½„> @  —{)Ã?d ˆûÎïŠ @  —|*Ã?d ÈûL~‡T @  —}+Ã?d ü²Ú¤ @  —~,Ã?d Hü“#Íz @  —-Ã?d ˆüþ|Rª @  —€.Ã?d Èü|íEt @  —/Ã?d ýgæ¨ @  —‚0Ã?d Hý—öñv @  —ƒ1Ã?d ˆý¤å @  —„2Ã?d Èý‚5ò @  —…3Ã?d þ[óü" @  —†4Ã?d HþÙbëü @  —‡5Ã?d ˆþEË[ß @  —ˆ6Ã?d ÈþÇZL @  —‰7Ã?d ÿË€1 @  —Š8Ã?d HÿIšï @  —‹9Ã?d ˆÿÞCŽ[ @  —ŒuÐ:Ã?d Èÿ\Ò™… @  —;Ã?d BZX @  —Ž<Ã?d `ÀŸM† @  —=Ã?d  ñ—ÃE @  —>Ã?d àsÔ› @  —‘?Ã?d wk[Š @  —’@Ã?d `õúLT @  —“AÃ?d  b¨Xà @  —”BÃ?d àà9O> @  —•CÃ?d 9ÿA @  —–DÃ?d `»nVÞ @  ——EÃ?d  'Çæý @  —˜FÃ?d à¥Vñ# @  —™GÃ?d ©Œ0 @  —šHÃ?d `+'Í @  —›IÃ?d  ¼O3y @  —œJÃ?d à>Þ$§ @  —KÃ?d cyW @  —žLÃ?d `áƒn‰ @  —ŸMÃ?d  ÁÇú @  — NÃ?d àCÐ$ @  —¡OÃ?d *–sø @  —¢PÃ?d `¨d& @  —£QÃ?d  ?Up’ @  —¤RÃ?d à½ÄgL @  —¥SÃ?d dir @  —¦TÃ?d `æ“~¬ @  —§UÃ?d  z:Î @  —¨VÃ?d àø«ÙQ @  —©WÃ?d ôqa @  —ªXÃ?d `và¿ @  —«YÃ?d  á²  @  —¬ZÃ?d àc# Õ @  —­[Ã?d ^.7 @  —®\Ã?d `‘Ï9é @  —¯]Ã?d   Ç·* @  —°^Ã?d à"V ô @  —±_Ã?d Ök:ô @  —²`Ã?d ` Tú-* @  —³aÃ?d   è9ž @  —´bÃ?d à A9.@ @  —µcÃ?d ˜ÿ ~ @  —¶dÃ?d ` n7  @  —·eÃ?d   †Ç‡ƒ @  —¸fÃ?d à V] @  —¹gÃ?d ŒQm @  —ºhÃ?d ` ŠF³ @  —»iÃ?d   OR @  —¼jÃ?d à ŸÞEÙ @  —½kÃ?d Â) @  —¾lÃ?d ` @ƒ÷ @  —¿mÃ?d   Ί  @  —ÀnÃ?d à L·È @  —ÁoÃ?d %‘ @  —ÂpÃ?d ` §Ê @  —ÃqÃ?d   0R~ @  —ÄrÃ?d à ²Ã  @  —ÅsÃ?d kž @  —ÆtÃ?d `é”@ @  —ÇuÃ?d  u=©c @  —ÈvÃ?d à÷¬¾½ @  —ÉwÃ?d ûv @  —ÊxÃ?d `yçhS @  —ËyÃ?d  îµ|ç @  —ÌzÃ?d àl$k9 @  —Í{Ã?d –xyt @  —Î|Ã?d `énª @  —Ï}Ã?d  %áài @  —Ð~Ã?d à§p÷· @  —ÑÃ?d ¾Û,4 @  —Ò€Ã?d `[W @  ˜’Ã?d ཯L‰ @  ˜“Ã?d ¡ ¹Z @  ˜”Ã?d `#±®„ @  ˜•Ã?d  qªAÝ @  ˜–Ã?d àó;V @  ˜—Ã?d 1SÈI @  ˜˜Ã?d `³Âß— @  ˜ ™Ã?d  áÙ0Î @  ˜ šÃ?d àcH' @  ˜ ›Ã?d Ö|þ @  ˜ œÃ?d `TíéÁ @  ˜ Ã?d  ö˜ @  ˜žÃ?d à„gF @  ˜ŸÃ?d IêÜ @  ˜ Ã?d `‘Øý @  ˜¡Ã?d  ÃÃ[ @  ˜¢Ã?d àAR… @  ˜£Ã?d ]ÝðV @  ˜¤Ã?d `ßLçˆ @  ˜¥Ã?d  WÑ @  ˜¦Ã?d àÆ @  ˜§Ã?d Í®E @  ˜¨Ã?d `O?–› @  ˜©Ã?d  $y @  ˜ªÃ?d àŸµn @  ˜«Ã?d 0È @  ˜¬Ã?d `…¡ßß @  ˜­Ã?d  ׺0† @  ˜®Ã?d àU+'X @  ˜¯Ã?d N´Â® @  ˜ °Ã?d `Ì%Õp @  ˜!±Ã?d  ž>:) @  ˜"²Ã?d à¯-÷ @  ˜#³Ã?d  Ø$ @  ˜$´Ã?d `‚±Ïú @  ˜%µÃ?d  Ъ £ @  ˜&¶Ã?d àR;7} @  ˜'·Ã?d S©7 @  ˜(¸Ã?d `¾é @  ˜)¹Ã?d  @ÙQ°uÐ  @  ˜*ºÃ?d àÂHFn @  ˜+»Ã?d 8 2ˆÍ @  ˜,¼Ã?d x °ÚÄ @  ˜-½Ã?d ¸ â5 @  ˜.¾Ã?d ø `“"C @  ˜/¿Ã?d 8!íÌÈ @  ˜0ÀÃ?d x!…|Û @  ˜1ÁÃ?d ¸!×g4O @  ˜2ÂÃ?d ø!Uö#‘ @  ˜3ÃÃ?d 8"IyÖB @  ˜4ÄÃ?d x"ËèÁœ @  ˜5ÅÃ?d ¸"™ó.Å @  ˜6ÆÃ?d ø"b9 @  ˜7ÇÃ?d 8#Ù §Q @  ˜8ÈÃ?d x#[›° @  ˜9ÉÃ?d ¸# €_Ö @  ˜:ÊÃ?d ø#‹H @  ˜;ËÃ?d 8$”î @  ˜<ÌÃ?d x$‘ùË @  ˜=ÍÃ?d ¸$Ã’ @  ˜>ÎÃ?d ø$AL @  ˜?ÏÃ?d 8%ôâ( @  ˜@ÐÃ?d x%v†õö @  ˜AÑÃ?d ¸%$¯ @  ˜BÒÃ?d ø%¦ q @  ˜CÓÃ?d 8&ºƒø¢ @  ˜DÔÃ?d x&8ï| @  ˜EÕÃ?d ¸&j % @  ˜FÖÃ?d ø&è˜û @  ˜G×Ã?d 8'*ð‰± @  ˜HØÃ?d x'¨ažo @  ˜IÙÃ?d ¸'úzq6 @  ˜JÚÃ?d ø'xëfè @  ˜KÛÃ?d 8(Íß¿ç @  ˜LÜÃ?d x(ON¨9 @  ˜MÝÃ?d ¸(UG` @  ˜NÞÃ?d ø(ŸÄP¾ @  ˜OßÃ?d 8)ê«$ @  ˜PàÃ?d x)Š{¼ú @  ˜QáÃ?d ¸)Ø`S£ @  ˜RâÃ?d ø)ZñD} @  ˜SãÃ?d 8*F~±® @  ˜TäÃ?d x*Äï¦p @  ˜UåÃ?d ¸*–ôI) @  ˜VæÃ?d ø*e^÷ @  ˜WçÃ?d 8+Ö À½ @  ˜XèÃ?d x+Tœ×c @  ˜YéÃ?d ¸+‡8: @  ˜ZêÃ?d ø+„/ä @  ˜[ëÃ?d 8,“‰ù @  ˜\ìÃ?d x,žž' @  ˜]íÃ?d ¸,Ìq~ @  ˜^îÃ?d ø,Nˆf  @  ˜_ïÃ?d 8-UƒV @  ˜`ðÃ?d x-׆”ˆ @  ˜añÃ?d ¸-…{Ñ @  ˜bòÃ?d ø- l @  ˜cóÃ?d 8.ƒ™Ü @  ˜dôÃ?d x.™Ž @  ˜eõÃ?d ¸.Ë a[ @  ˜föÃ?d ø.I˜v… @  ˜g÷Ã?d 8/‹ðèÏ @  ˜høÃ?d x/ aÿ @  ˜iùÃ?d ¸/[zH @  ˜júÃ?d ø/Ùë– @  ˜kûÃ?d 80æþî6 @  ˜lüÃ?d x0doùè @  ˜mýÃ?d ¸06t± @  ˜nþÃ?d ø0´åo @  ˜oÿÃ?d 813Ñì @  ˜pÄ?d x1¢Æ2 @  ˜qÄ?d ¸1]¹)k @  ˜rÄ?d ø1ß(>µ @  ˜sÄ?d 82çËf @  ˜tÄ?d x2A6ܸ @  ˜uÄ?d ¸2-3á @  ˜vÄ?d ø2‘¼$? @  ˜wÄ?d 83SÔºu @  ˜xÄ?d x3ÑE­« @  ˜y Ä?d ¸3ƒ^Bò @  ˜z Ä?d ø3ÏU, @  ˜{ Ä?d 84™Jó1 @  ˜| Ä?d x4Ûäï @  ˜} Ä?d ¸4IÀ ¶ @  ˜~Ä?d ø4ËQh @  ˜Ä?d 85ŸÏ= @  ˜€Ä?d x5Øã @  ˜Ä?d ¸5M7º @  ˜‚Ä?d ø5Ï„ d @  ˜ƒÄ?d 86Ó Õ· @  ˜„Ä?d x6QšÂi @  ˜…Ä?d ¸6-0 @  ˜†Ä?d ø6:î @  ˜‡Ä?d 87Cx¤¤ @  ˜ˆÄ?d x7Áé³z @  ˜‰Ä?d ¸7“ò\# @  ˜ŠÄ?d ø7cKý @  ˜‹Ä?d 88¤W’ò @  ˜ŒÄ?d x8&Æ…, @  ˜Ä?d ¸8tÝju @  ˜ŽÄ?d ø8öL}« @  ˜Ä?d 89ab†1 @  ˜ Ä?d x9ãó‘ï @  ˜‘!Ä?d ¸9±è~¶ @  ˜’"Ä?d ø93yih @  ˜“#Ä?d 8:/öœ» @  ˜”$Ä?d x:­g‹e @  ˜•%Ä?d ¸:ÿ|d< @  ˜–&Ä?d ø:}ísâ @  ˜—'Ä?d 8;¿…í¨ @  ˜˜(Ä?d x;=úv @  ˜™)Ä?d ¸;o/ @  ˜š*Ä?d ø;ížñ @  ˜›+Ä?d 8<u¤ì @  ˜œ,Ä?d x<÷г2 @  ˜-Ä?d ¸<¥‘\k @  ˜ž.Ä?d ø<'Kµ @  ˜Ÿ/Ä?d 8=<Ÿ®C @  ˜ 0Ä?d x=¾¹ @  ˜¡1Ä?d ¸=ìVÄ @  ˜¢2Ä?d ø=n„A @  ˜£3Ä?d 8>r ´É @  ˜¤4Ä?d x>𚣠@  ˜¥5Ä?d ¸>¢LN @  ˜¦6Ä?d ø> [ @  ˜§7Ä?d 8?âxÅÚ @  ˜¨8Ä?d x?`éÒ @  ˜©9Ä?duÐ@7 ¸?2ò=] @  ˜ª:Ä?d ø?°c*ƒ @  ˜«;Ä?d P@òÅ­ @  ˜¬<Ä?d @ÒñÇS @  ˜­=Ä?d Ð@"Ž=* @  ˜®>Ä?d AòƱ @  ˜¯?Ä?d PAÇaÄ @  ˜°@Ä?d Aç”Æ @  ˜±AÄ?d ÐAë<ø @  ˜²BÄ?d BНœ9 @  ˜³CÄ?d PB‰õÞõ @  ˜´DÄ?d B©Ü  @  ˜µEÄ?d ÐBY&r @  ˜¶FÄ?d C‰7ªš @  ˜·GÄ?d PC†¯æ @  ˜¸HÄ?d C9s­ @  ˜¹IÄ?d ÐCÉ Wa @  ˜ºJÄ?d DÐB¤n @  ˜»KÄ?d PDÓæ¢ @  ˜¼LÄ?d Dóíä\ @  ˜½MÄ?d ÐD’% @  ˜¾NÄ?d EÓÚ’Í @  ˜¿OÄ?d PE4›êŸ @  ˜ÀPÄ?d Enèa @  ˜ÁQÄ?d ÐEä @  ˜ÂRÄ?d FyU²Ù @  ˜ÃSÄ?d PFzð @  ˜ÄTÄ?d FZúòë @  ˜ÅUÄ?d ÐFª…’ @  ˜ÆVÄ?d GzÍ„z @  ˜ÇWÄ?d PGê| @  ˜ÈXÄ?d Gʉƒø @  ˜ÉYÄ?d ÐG:öy @  ˜ÊZÄ?d H õœ @  ˜Ë[Ä?d PH S·P @  ˜Ì\Ä?d H-¦µ® @  ˜Í]Ä?d ÐHÝÙO× @  ˜Î^Ä?d I ‘Ã? @  ˜Ï_Ä?d PIÈf£“ @  ˜Ð`Ä?d Iè“¡m @  ˜ÑaÄ?d ÐIì[ @  ˜ÒbÄ?d J…¨ûÕ @  ˜ÓcÄ?d PJ†ò¹ @  ˜ÔdÄ?d J¦»ç @  ˜ÕeÄ?d ÐJVxAž @  ˜ÖfÄ?d K†0Ív @  ˜×gÄ?d PKÈ  @  ˜ØhÄ?d K6tÊô @  ˜ÙiÄ?d ÐKÆ 0 @  ˜ÚjÄ?d LßE @  ˜ÛkÄ?d PLÜN @  ˜ÜlÄ?d Lüꃰ @  ˜ÝmÄ?d ÐL •yÉ @  ˜ÞnÄ?d MÜÝõ! @  ˜ßoÄ?d PM•›‹á @  ˜àpÄ?d Mµn‰ @  ˜áqÄ?d ÐMEsf @  ˜ârÄ?d€ N¬–Ï @  ™sÄ?d PNNÅä @  ™tÄ?d NnxÇ @  ™uÄ?d ÐN[NÆŽ @  ™vÄ?d O‹Jf @  ™wÄ?d POÕ` @  ™xÄ?d Oõðž @  ™yÄ?d ÐOË=· @  ™zÄ?d Puã / @  ™ {Ä?d PP³ð² @  ™ |Ä?d P“°ð @  ™ }Ä?d ÐP¦3±d @  ™ ~Ä?d Qv{=Œ @  ™ Ä?d PQ@‰E @  ™€€Ä?d Q`| » @  ™€Ä?d ÐQó—X @  ™€‚Ä?d RnT7™ @  ™€ƒÄ?d PR¨Gޏ @  ™€„Ä?d Rˆ²ŒF @  ™€…Ä?d ÐR½„Ò @  ™€†Ä?d SmÌ: @  ™€‡Ä?d PS3Ï[< @  ™€ˆÄ?d S:Y @  ™€‰Ä?d ÐS-÷üÁ @  ™€ŠÄ?d T4¹Î @  ™€‹Ä?d PT*Å“ @  ™ŒÄ?d T¯ßÇm @  ™Ä?d ÐTšéÆù @  ™ŽÄ?d UJ¡J @  ™Ä?d PUqòrû @  ™Ä?d UQp @  ™‘Ä?d ÐUÓmÌV @  ™ ’Ä?d VN)l— @  ™!“Ä?d PVˆ:Õ¶ @  ™"”Ä?d V¨Ï×H @  ™#•Ä?d ÐVùÖÜ @  ™$–Ä?d WM±Z4 @  ™%—Ä?d PW²2 @  ™&˜Ä?d W3GÌ @  ™'™Ä?d ÐW ЧÏ @  ™(šÄ?d X9u+Ò @  ™)›Ä?d PXÿf’ó @  ™*œÄ?d Xß“  @  ™+Ä?d ÐXꥑ™ @  ™,žÄ?d Y:íq @  ™-ŸÄ?d PYœ G @  ™. Ä?d Y¼ü¹ @  ™/¡Ä?d ÐY/…Z @  ™0¢Ä?d Z²Ô%› @  ™1£Ä?d PZtÇœº @  ™2¤Ä?d ZT2žD @  ™3¥Ä?d ÐZaŸÐ @  ™4¦Ä?d [±L8 @  ™5§Ä?d P[ïOI> @  ™6¨Ä?d [ϺKÀ @  ™7©Ä?d Ð[ñwîà @  ™8ªÄ?d \è9Ì @  ™9«Ä?d P\.*¤í @  ™:¬Ä?d \ߦ @  ™;­Ä?d Ð\;駇 @  ™<®Ä?d ]ë¡+o @  ™=¯Ä?d P]Ðò… @  ™>°Ä?d ]ð{ @  ™?±Ä?d Ð]Üj«º @  ™@²Ä?d ^A. { @  ™A³Ä?d P^‡=²Z @  ™B´Ä?d ^§È°¤ @  ™CµÄ?d Ð^’þ±0 @  ™D¶Ä?d _B¶=Ø @  ™E·Ä?d P_µgÞ @  ™F¸Ä?d _<@e  @  ™uÐ`G¹Ä?d Ð_À# @  ™HºÄ?d (`¼uu» @  ™I»Ä?d h`zfÌš @  ™J¼Ä?d ¨`Z“Îd @  ™K½Ä?d è`o¥Ïð @  ™L¾Ä?d (a¿íC @  ™M¿Ä?d haéYW? @  ™NÀÄ?d ¨aɬUÁ @  ™OÁÄ?d èaZÀÎ" @  ™PÂÄ?d (bÇ„nã @  ™QÃÄ?d hb—× @  ™RÄÄ?d ¨b!bÕ< @  ™SÅÄ?d èbTÔ¨ @  ™TÆÄ?d (cÄX@ @  ™UÇÄ?d hcšF @  ™VÈÄ?d ¨cºê¸ @  ™WÉÄ?d èc„'¥» @  ™XÊÄ?d (diV´ @  ™YËÄ?d hd[zï• @  ™ZÌÄ?d ¨d{ík @  ™[ÍÄ?d èdN¹ìÿ @  ™\ÎÄ?d (ežñ` @  ™]ÏÄ?d he¥¢Xý @  ™^ÐÄ?d ¨e…WZ @  ™_ÑÄ?d èe=æP @  ™`ÒÄ?d (fšyF‘ @  ™aÓÄ?d hf\jÿ° @  ™bÔÄ?d ¨f|ŸýN @  ™cÕÄ?d èfI©üÚ @  ™dÖÄ?d (g™áp2 @  ™e×Ä?d hgÇâ*4 @  ™fØÄ?d ¨gç(Ê @  ™gÙÄ?d ègÙÚÉ @  ™hÚÄ?d (hí%Ô @  ™iÛÄ?d hh+6¸õ @  ™jÜÄ?d ¨h ú  @  ™kÝÄ?d èh>õ»Ÿ @  ™lÞÄ?d (iî½7w @  ™mßÄ?d hiHY6A @  ™nàÄ?d ¨ih¬4¿ @  ™oáÄ?d èiûÀ¯\ @  ™pâÄ?d (jf„ @  ™qãÄ?d hj —¶¼ @  ™räÄ?d ¨j€b´B @  ™såÄ?d èjµTµÖ @  ™tæÄ?d (ke9> @  ™uçÄ?d hk;c8 @  ™vèÄ?d ¨kêaÆ @  ™wéÄ?d èk%'ÄÅ @  ™xêÄ?d (lÅ?d @îz,q @  ™Í?Å?d €ª-v @  ™Î@Å?d À˜;:¨ @  ™ÏAÅ?d ‚‚T @  ™ÐBÅ?d @‚–Š @  ™ÑCÅ?d €‚òd­‹ @  ™ÒDÅ?d À‚põºU @  ™ÓEÅ?d ƒ ÷ @  ™ÔFÅ?d @ƒ•‹7) @  ™ÕGÅ?d €ƒiìx @  ™ÖHÅ?d Àƒë}oÑ @  ™×IÅ?d „No. @  ™ØJÅ?d @„Ìþ9Ý @  ™ÙKÅ?d €„¨‰•Ü @  ™ÚLÅ?d À„*‚ @  ™ÛMÅ?d …M÷  @  ™ÜNÅ?d @…Ïf~ @  ™ÝOÅ?d €…VQ"´ @  ™ÞPÅ?d À…ÔÀ5j @  ™ßQÅ?d †I>& @  ™àRÅ?d @†Ëî)ø @  ™áSÅ?d €†¯™…ù @  ™âTÅ?d€ À†ìOe' @  šUÅ?d ‡já·¬ @  šVÅ?d @‡èp r @  šWÅ?d €‡Ñ^¹ @  šXÅ?d À‡SÏg @  šYÅ?d ˆÞbÝ @  šZÅ?d @ˆ—Ou @  š[Å?d €ˆ=Іx @  š\Å?d Àˆ¿‘¦ @  š ]Å?d ‰½ðé @  š ^Å?d @‰Ÿ,ç7 @  š _Å?d €‰^åÌ @  š `Å?d À‰Üt @  š aÅ?d Š3ÞRt @  šbÅ?d @бOEª @  šcÅ?d €Š¶+ˆ1 @  šdÅ?d ÀŠ4ºŸï @  šeÅ?d ‹–þ  @  šfÅ?d @‹é~ @  šgÅ?d €‹-£]µ @  šhÅ?d À‹¯2Jk @  šiÅ?d ŒÄ’Tà @  šjÅ?d @ŒFC @  škÅ?d €Œìưf @  šlÅ?d ÀŒnW§¸ @  šmÅ?d ÌñÆ÷ @  šnÅ?d @N`Ñ) @  šoÅ?d € @  špÅ?d ÀÐ @  šqÅ?d Ž%]¶ @  šrÅ?d @Žý´Jh @  šsÅ?d €ŽëÖ C @  š tÅ?d ÀŽiG· @  š!uÅ?d ËáÖÒ @  š"vÅ?d @IpÁ  @  š#wÅ?d €p^uÇ @  š$xÅ?d ÀòÏb @  š%yÅ?d >ÿ3  @  š&zÅ?d @¼n$Ò @  š'{Å?d €«×© @  š(|Å?d À”:Àw @  š)}Å?d ‘6œ¡8 @  š*~Å?d @‘´ ¶æ @  š+Å?d €‘˜Rž @  š,€Å?d À‘Ã@ @  š-Å?d ’õiB& @  š.‚Å?d @’wøUø @  š/ƒÅ?d €’pœ˜c @  š0„Å?d À’ò ½ @  š1…Å?d “P«îò @  š2†Å?d @“Ò:ù, @  š3‡Å?d €“ëMç @  š4ˆÅ?d À“i…Z9 @  š5‰Å?d ”%D‘ @  š6ŠÅ?d @”€´SO @  š7‹Å?d €”*q 4 @  š8ŒÅ?d À”¨à·ê @  š9Å?d • FÖ¥ @  š:ŽÅ?d @•ˆ×Á{ @  š;Å?d €•Ô©\ @  š<Å?d À•V8‚ @  š=‘Å?d –¹’Mä @  š>’Å?d @–;Z: @  š?“Å?d €–ƒf¶ƒ @  š@”Å?d À–÷¡] @  šA•Å?d —£QÀ @  šB–Å?d @—!À×Ì @  šC—Å?d €—îc @  šD˜Å?d À—štÙ @  šE™Å?d ˜Ünc @  šFšÅ?d @˜^ÿ½ @  šG›Å?d €˜ô:ñÆ @  šHœÅ?d À˜ +•d @  šI€Å?d ™©ô+ @  šJ€žÅ?d @™+ãõ @  šK€ŸÅ?d €™êÕ  @  šL€ Å?d À™hDÐ @  šM€¡Å?d š‡îV¶ @  šN€¢Å?d @šAh @  šO€£Å?d €šŒó @  šP€¤Å?d Àš€Š›- @  šQ€¥Å?d ›",úb @  šR€¦Å?d @› ½í¼ @  šS€§Å?d €›™“Yw @  šT€¨Å?d À›N© @  šU€©Å?d œp¢P @  šV€ªÅ?d @œò3Gß @  šW€«Å?d €œXö´¤ @  šX€¬Å?d ÀœÚg£z @  šY€­Å?d xÁÂ5 @  šZ€®Å?d @úPÕë @  š[€¯Å?d €¦.Ì @  š\€°Å?d À$¿ @  š]€±Å?d žËYt @  š^€²Å?d @žI„Nª @  š_€³Å?d €ž_æ¤ @  š`€´Å?d ÀžÝw³_ @  ša€µÅ?d ŸÑÒ @  šb€¶Å?d @Ÿý@ÅÎ @  šc€·Å?d €ŸÄnq @  šd€¸ÅuР?d ÀŸFÿfÛ @  še€¹Å?d  ú3Á³ @  šfºÅ?d X x¢Öm @  šg»Å?d ˜ Òg% @  šh¼Å?d Ø Pö2È @  ši½Å?d ¡òPS‡ @  šj¾Å?d X¡pÁDY @  šk¿Å?d ˜¡AX¾³ @  šlÀÅ?d Ø¡ÃÉ©m @  šmÁÅ?d ¢,cä  @  šnÂÅ?d X¢®òóÕ @  šoÃÅ?d ˜¢©–>N @  špÄÅ?d Ø¢+) @  šqÅÅ?d £‰¡Hß @  šrÆÅ?d X£ 0_ @  šsÇÅ?d ˜£2ëÊ @  štÈÅ?d Ø£°ü @  šuÉÅ?d ¤Û/â¼ @  švÊÅ?d X¤Y¾õb @  šwËÅ?d ˜¤ó{ @  šxÌÅ?d ؤqêÇ @  šyÍÅ?d ¥ÓLpˆ @  šzÎÅ?d X¥QÝgV @  š{ÏÅ?d ˜¥ £±q @  š|ÐÅ?d Ø¥2¦¯ @  š}ÑÅ?d ¦`˜ëÉ @  š~ÒÅ?d X¦â ü @  šÓÅ?d ˜¦¹: Ÿ @  š€ÔÅ?d ئ;«7A @  šÕÅ?d §™ V @  š‚ÖÅ?d X§œAÐ @  šƒ×Å?d ˜§"²õ @  š„ØÅ?d ا #âÅ @  š…ÙÅ?d ¨æ2ƒ @  š†ÚÅ?d X¨d£”¡ @  š‡ÛÅ?d ˜¨ÎfgÚ @  šˆÜÅ?d بL÷p @  š‰ÝÅ?d ©îQK @  šŠÞÅ?d X©lÀ• @  š‹ßÅ?d ˜©­ én @  šŒàÅ?d Ø©/˜þ° @  šáÅ?d ªÀ2³Ö @  šŽâÅ?d XªB£¤ @  šãÅ?d ˜ªEÇi“ @  šäÅ?d تÇV~M @  š‘åÅ?d «eð @  š’æÅ?d X«çaÜ @  š“çÅ?d ˜«ÞO¼ @  š”èÅ?d Ø«\Þ«É @  š•éÅ?d ¬7~µa @  š–êÅ?d X¬µï¢¿ @  š—ëÅ?d ˜¬*QÄ @  š˜ìÅ?d ج»F @  š™íÅ?d ­?'U @  ššîÅ?d X­½Œ0‹ @  š›ïÅ?d ˜­áòæ¬ @  šœðÅ?d Ø­ccñr @  šñÅ?d ®ŒÉ¼ @  šžòÅ?d X®X«Ê @  šŸóÅ?d ˜®:Aá @  š ôÅ?d Ø®š«V? @  š¡õÅ?d ¯8 7p @  š¢öÅ?d X¯ºœ ® @  š£÷Å?d ˜¯ƒ²”e @  š¤øÅ?d د#ƒ» @  š¥ùÅ?d °ÍÒ® @  š¦úÅ?d X°O‚Åp @  š§ûÅ?d ˜°åG6  @  š¨üÅ?d ذgÖ!Õ @  š©ýÅ?d ±Åp@š @  šªþÅ?d X±GáWD @  š«ÿÅ?d ˜±¦û™ @  š¬Æ?d ر$jŽË @  š­Æ?d ²ËÀí @  š®Æ?d X²IQÔs @  š¯Æ?d ˜²N5è @  š°Æ?d ز̤6 @  š±Æ?d ³noy @  š²Æ?d X³ì“x§ @  š³Æ?d ˜³Õ½Ìl @  š´Æ?d سW,Û² @  šµ Æ?d ´<ŒÅ @  š¶ Æ?d X´¾ÒÄ @  š· Æ?d ˜´Ø!¿ @  š¸ Æ?d Ø´–I6a @  š¹ Æ?d µ4ïW. @  šºÆ?d Xµ¶~@ð @  š»Æ?d ˜µê–× @  š¼Æ?d صh‘  @  š½Æ?d ¶‡;Ìo @  š¾Æ?d X¶ªÛ± @  š¿Æ?d ˜¶½Ï7 @  šÀÆ?d ض?^ Ö @  šÁÆ?d ·øA™ @  šÂÆ?d X·iVG @  šÃÆ?d ˜·&G⌠@  šÄÆ?d Ø·¤ÖõR @  šÅÆ?d ¸âÇ”è @  šÆÆ?d X¸`Vƒ6 @  šÇÆ?d ˜¸Ê“pM @  šÈÆ?d ظHg“ @  šÉÆ?d ¹ê¤Ü @  šÊÆ?d X¹h5 @  šËÆ?d ˜¹©üþù @  šÌ Æ?d ع+mé' @  šÍ!Æ?d ºÄǤA @  šÎ"Æ?d XºFV³Ÿ @  šÏ#Æ?d ˜ºA2~ @  šÐ$Æ?d غãiÚ @  šÑ%Æ?d »a• @  šÒ&Æ?d X»ã”K @  šÓ'Æ?d ˜»Úº«€ @  šÔ(Æ?d Ø»X+¼^ @  šÕ)Æ?d ¼3‹¢ö @  šÖ*Æ?d X¼±µ( @  š×+Æ?d ˜¼ßFS @  šØ,Æ?d ؼ™NQ @  šÙ-Æ?d ½;è0 @  šÚ.Æ?d X½¹y' @  šÛ/Æ?d ˜½åñ; @  šÜ0Æ?d ؽg–æå @  šÝ1Æ?d ¾ˆ<«ƒ @  šÞ2Æ?d X¾ ­¼] @  šß3Æ?d ˜¾ÏVv @  šà4Æ?d ؾž^A¨ @  šá5Æ?d ¿<ø ç @  šâ6Æ?d€ X¿ʪ+Ÿ @  ›7Æ?d ˜¿Å×} @uÐÀ  ›8Æ?d Ø¿TÀ£ @  ›9Æ?d 0ÀC‡» @  ›:Æ?d pÀÁ’e @  ›;Æ?d °À¥åÆ?d pÁÉñQ @  › ?Æ?d °Á=!V @  › @Æ?d ðÁ¿°ˆ @  › AÆ?d 0•S¢ @  › BÆ?d pÂµÝ @  › CÆ?d °ÂsµÜ @  ›DÆ?d ðÂñ$ @  ›EÆ?d 0Ã0‘× @  ›FÆ?d pò  @  ›GÆ?d °ÃNgV/ @  ›HÆ?d ðÃÌöAñ @  ›IÆ?d 0Äb¤´ @  ›JÆ?d pÄàŽ³j @  ›KÆ?d °Ä„ùk @  ›LÆ?d ðÄhµ @  ›MÆ?d 0Åj|6€ @  ›NÆ?d pÅèí!^ @  ›OÆ?d °ÅqÚ ” @  ›PÆ?d ðÅóKJ @  ›QÆ?d 0ÆÙ¨­Á @  ›RÆ?d pÆ[9º @  ›SÆ?d °Æ?N @  ›TÆ?d ðƽßÀ @  ›UÆ?d 0Çml&¥ @  › VÆ?d pÇïý1{ @  ›!WÆ?d °Çš~] @  ›"XÆ?d ðÇ‘ iƒ @  ›#YÆ?d 0ÈSóÔ @  ›$ZÆ?d pÈÂä  @  ›%[Æ?d °ÈôµH  @  ›&\Æ?d ðÈv$_Õ @  ›']Æ?d 0É0aà @  ›(^Æ?d pɘ¡v> @  ›)_Æ?d °Éœ!b( @  ›*`Æ?d ðɰuö @  ›+aÆ?d 0Ê4SÃ} @  ›,bÆ?d pʶÂÔ£ @  ›-cÆ?d °ÊÒµx¢ @  ›.dÆ?d ðÊP$o| @  ›/eÆ?d 0Ë‘‘o© @  ›0fÆ?d pËxw @  ›1gÆ?d °Ëïg7Q @  ›2hÆ?d ðËmö  @  ›3iÆ?d 0ÌÃÅÊ @  ›4jÆ?d pÌAŽÒ @  ›5kÆ?d °Ì%ù~ @  ›6lÆ?d ð̧hiË @  ›7mÆ?d 0ÍË|Wþ @  ›8nÆ?d pÍIí@  @  ›9oÆ?d °ÍÐÚmê @  ›:pÆ?d ðÍRKz4 @  ›;qÆ?d 0Îx¨Ì¿ @  ›<rÆ?d pÎú9Ûa @  ›=sÆ?d °ÎžNw` @  ›>tÆ?d ðÎß`¾ @  ›?uÆ?d 0ÏbkAI @  ›@vÆ?d pÏàúV— @  ›AwÆ?d °Ï± @  ›BxÆ?d ðÏž o @  ›CyÆ?d 0Зu¤— @  ›DzÆ?d pÐä³I @  ›E{Æ?d °Ðq“H @  ›F|Æ?d ðÐó– @  ›G}Æ?d 0ÑŸ6£ @  ›H~Æ?d pч!} @  ›IÆ?d °Ñô‘tè @  ›J€Æ?d ðÑvc6 @  ›KÆ?d 0Ò\ãÕ½ @  ›L‚Æ?d pÒÞrÂc @  ›MƒÆ?d °Òºnb @  ›N„Æ?d ðÒ8”y¼ @  ›O…Æ?d 0Óù!yi @  ›P†Æ?d pÓ{°n· @  ›Q‡Æ?d °Ó‡×!‘ @  ›RˆÆ?d ðÓF6O @  ›S‰Æ?d 0Ô«¯Ó  @  ›TŠÆ?d pÔ)>ÄÔ @  ›U‹Æ?d °ÔMIhÕ @  ›VŒÆ?d ðÔÏØ  @  ›WÆ?d 0Õ£ÌA> @  ›XŽÆ?d pÕ!]Và @  ›YÆ?d °Õ¸j{* @  ›ZÆ?d ðÕ:ûlô @  ›[‘Æ?d 0ÖÚ @  ›\’Æ?d pÖ’‰Í¡ @  ›]“Æ?d °Ööþa  @  ›^”Æ?d ðÖtov~ @  ›_•Æ?d 0פÜQ @  ›`–Æ?d p×&MFÅ @  ›a—Æ?d °×Ú* ã @  ›b˜Æ?d ð×X»= @  ›c™Æ?d 0ØÛã„j @  ›dšÆ?d pØYr“´ @  ›e›Æ?d °Ø=?µ @  ›fœÆ?d ðØ¿”(k @  ›gÆ?d 0ÙÓ€^ @  ›hžÆ?d pÙQ€ @  ›iŸÆ?d °ÙU‘– @  ›j Æ?d ðÙ×H @  ›k¡Æ?d 0Úýã´Ã @  ›l¢Æ?d pÚr£ @  ›m£Æ?d °Ú @  ›n¤Æ?d ðÚ™” @  ›o¥Æ?d 0ÛX! @  ›p¦Æ?d pÛÚ°É @  ›q§Æ?d °Û&×@ï @  ›r¨Æ?d ðÛ¤FW1 @  ›s©Æ?d 0Ü ¯²t @  ›tªÆ?d p܈>¥ª @  ›u«Æ?d °ÜìI « @  ›v¬Æ?d ðÜnØu @  ›w­Æ?d 0ÝÌ @ @  ›x®Æ?d pÝ€]7ž @  ›y¯Æ?d °ÝjT @  ›z°Æ?d ðÝ›û Š @  ›{±Æ?d 0Þ±» @  ›|²Æ?d pÞ3‰¬ß @  ›}³Æ?d °ÞWþÞ @  ›~´Æ?d ðÞÕo @  ›µÆ?d 0ßHÆ @  ›€¶Æ?d pßÊ @  ›·Æ?d uÐà/°ß6{^> @  ›‚¸Æ?d ðß´êIà @  ›ƒ¹Æ?d Hàé\ @  ›„ºÆ?d ˆà:¢ @  ›…»Æ?d Èàüºƒ @  ›†¼Æ?d á,G6k @  ›‡½Æ?d Hናh @  ›ˆ¾Æ?d ˆá2‘– @  ›‰¿Æ?d ÈádË…± @  ›ŠÀÆ?d âù%p @  ›‹ÁÆ?d Hâ̹$ä @  ›ŒÂÆ?d ˆâìL& @  ›ÃÆ?d Èâ*_Ÿ; @  ›ŽÄÆ?d ãúÓ @  ›ÅÆ?d Hãi{ˆ0 @  ›ÆÆ?d ˆãIŽŠÎ @  ›‘ÇÆ?d ÈãÐÈ @  ›’ÈÆ?d äÃ#Ç @  ›“ÉÆ?d Hä;õ"S @  ›”ÊÆ?d ˆä ­ @  ›•ËÆ?d ÈäÝ™Œ @  ›–ÌÆ?d å [d @  ›—ÍÆ?d Hå3–°g @  ›˜ÎÆ?d ˆåc²™ @  ›™ÏÆ?d Èå(0Šs @  ›šÐÆ?d æµt*² @  ››ÑÆ?d Hæ€B+& @  ›œÒÆ?d ˆæ ·)Ø @  ›ÓÆ?d Èæf¤ù @  ›žÔÆ?d ç¶ì @  ›ŸÕÆ?d Hç4† B @  › ÖÆ?d ˆçs¢¼ @  ›¡ׯ?d ÈçJpøº @  ›¢ØÆ?d è~t§ @  ›£ÙÆ?d HèK¹u3 @  ›¤ÚÆ?d ˆèkLwÍ @  ›¥ÛÆ?d Èè­_Îì @  ›¦ÜÆ?d é}B @  ›§ÝÆ?d HéCÚç @  ›¨ÞÆ?d ˆéc/åù @  ›©߯?d ÈéÅËäÏ @  ›ªàÆ?d êXD @  ›«áÆ?d Hêm¹Eš @  ›¬âÆ?d ˆêMLGd @  ›­ãÆ?d Èê‹_þE @  ›®äÆ?d ë[r­ @  ›¯åÆ?d HëÈ{éN @  ›°æÆ?d ˆëèŽë° @  ›±çÆ?d Èë¶±¶ @  ›²èÆ?d ì¯ÃB¹ @  ›³éÆ?d HìšõC- @  ›´êÆ?d ˆìºAÓ @  ›µëÆ?d Èì|øò @  ›¶ìÆ?d í¬[t @  ›·íÆ?d Hí’–Ñ @  ›¸îÆ?d ˆí²cÓç @  ›¹ïÆ?d Èí‰0ë  @  ›ºðÆ?d îtKÌ @  ›»ñÆ?d Hî!BJX @  ›¼òÆ?d ˆî·H¦ @  ›½óÆ?d ÈîǤñ‡ @  ›¾ôÆ?d ïì}o @  ›¿õÆ?d Hï;Ç® @  ›ÀöÆ?d ˆïtÅP @  ›Á÷Æ?d ÈïEwŸV @  ›ÂøÆ?d ðû©#ä @  ›ÃùÆ?d HðΟ"p @  ›ÄúÆ?d ˆðîj Ž @  ›ÅûÆ?d Èð(y™¯ @  ›ÆüÆ?d ñø1G @  ›ÇýÆ?d HñÆü°D @  ›ÈþÆ?d ˆñæ ²º @  ›ÉÿÆ?d ÈñÒ§ @  ›ÊÇ?d òOX @  ›ËÇ?d HòznV @  ›ÌÇ?d ˆòZ›¨ @  ›ÍÇ?d Èòœˆ½‰ @  ›ÎÇ?d óLÀ1a @  ›ÏÇ?d Hó߬ª‚ @  ›ÐÇ?d ˆóÿY¨| @  ›ÑÇ?d Èó¡Zòz @  ›ÒÇ?d ô¸u @  ›Ó Ç?d Hô"á @  ›Ô Ç?d ˆô­× @  ›Õ Ç?d ÈôkÄ»> @  ›Ö Ç?d õ»Œ7Ö @  ›× Ç?d Hõ…A’Õ @  ›ØÇ?d ˆõ¥´+ @  ›ÙÇ?d Èõžç¨Á @  ›ÚÇ?d ö£ @  ›ÛÇ?d Hö6• ” @  ›ÜÇ?d ˆö` j @  ›ÝÇ?d ÈöÐs²K @  ›ÞÇ?d ÷;>£ @  ›ßÇ?d H÷‚Q‚ð @  ›àÇ?d ˆ÷¢¤€ @  ›áÇ?d È÷ü§Ú @  ›âÇ?d€ øNþ¬ @  œÇ?d Høšy· @  œÇ?d ˆøºŒµï @  œÇ?d Èø¹Ö÷# @  œÇ?d ùiž{Ë @  œÇ?d Hù™á² @  œÇ?d ˆù¹ƒL @  œÇ?d ÈùÑBÝ @  œ Ç?d úL}Á @  œ !Ç?d Hú¼y‡¸ @  œ "Ç?d ˆúœŒ…F @  œ #Ç?d ÈúŸÖÇŠ @  œ $Ç?d ûOžKb @  œ %Ç?d Hû¿á± @  œ&Ç?d ˆûŸ³å @  œ'Ç?d Èû¢ˆy @  œ(Ç?d ü»J{v @  œ)Ç?d HüK5 @  œ*Ç?d ˆükÀƒñ @  œ+Ç?d ÈühšÁ= @  œ,Ç?d ý¸ÒMÕ @  œ-Ç?d HýH­·¬ @  œ.Ç?d ˆýhXµR @  œ/Ç?d Èý¹Ò @  œ0Ç?d þýr @  œ1Ç?d Hþð‚ˆz @  œ2Ç?d ˆþÐwŠ„ @  œ3Ç?d ÈþÓ-ÈH @  œ4Ç?d ÿeD  @  œ5Ç?d Hÿó¾Ù @  œ6Ç?d ˆÿÓï¼' @  œuÐ7Ç?d Èÿÿù   @  œ 8Ç?d °Mˆú @  œ!9Ç?d `@2rƒ @  œ":Ç?d  `Çp} @  œ#;Ç?d àc2± @  œ$<Ç?d ³Õ¾Y @  œ%=Ç?d `CªD  @  œ&>Ç?d  c_FÞ @  œ'?Ç?d àûY ƒ @  œ(@Ç?d f­B @  œ)AÇ?d `–bW; @  œ*BÇ?d  ¶—UÅ @  œ+CÇ?d àµÍ  @  œ,DÇ?d e…›á @  œ-EÇ?d `•úa˜ @  œ.FÇ?d  µcf @  œ/GÇ?d àˆXú @  œ0HÇ?d ‘Q«õ @  œ1IÇ?d `a.QŒ @  œ2JÇ?d  AÛSr @  œ3KÇ?d àB¾ @  œ4LÇ?d ’ÉV @  œ5MÇ?d `b¶g/ @  œ6NÇ?d  BCeÑ @  œ7OÇ?d à·¢A @  œ8PÇ?d *梀 @  œ9QÇ?d `Ú™Xù @  œ:RÇ?d  úlZ @  œ;SÇ?d àù6Ë @  œ<TÇ?d )~”# @  œ=UÇ?d `ÙnZ @  œ>VÇ?d  ùôl¤ @  œ?WÇ?d à{åv @  œ@XÇ?d Oú @  œAYÇ?d `¿e~ @  œBZÇ?d  Ÿ€ @  œC[Ç?d àœÊ@L @  œD\Ç?d L‚̤ @  œE]Ç?d ` ¼ý6Ý @  œF^Ç?d   œ4# @  œG_Ç?d à ô^jo @  œH`Ç?d iÊ® @  œIaÇ?d ` ™e0× @  œJbÇ?d   ¹2) @  œKcÇ?d à ºÊpå @  œLdÇ?d j‚ü  @  œMeÇ?d ` šýt @  œNfÇ?d   ºŠ @  œOgÇ?d à ‡? @  œPhÇ?d žVÌ @  œQiÇ?d ` n)6` @  œRjÇ?d   NÜ4ž @  œSkÇ?d à M†vR @  œTlÇ?d Îúº @  œUmÇ?d ` m±Ã @  œVnÇ?d   MD= @  œWoÇ?d à ¸¥e­ @  œXpÇ?d %áÅl @  œYqÇ?d `Õž? @  œZrÇ?d  õk=ë @  œ[sÇ?d àö1' @  œ\tÇ?d &yóÏ @  œ]uÇ?d `Ö ¶ @  œ^vÇ?d  öó H @  œ_wÇ?d àÚåd @  œ`xÇ?d d;«Ö @  œayÇ?d `”DQ¯ @  œbzÇ?d  ´±SQ @  œc{Ç?d à·ë @  œd|Ç?d g£u @  œe}Ç?d `—Üg  @  œf~Ç?d  ·)eò @  œgÇ?d à2éz= @  œh€Ç?d ¯­Úü @  œiÇ?d `_Ò … @  œj‚Ç?d  '"{ @  œkƒÇ?d à|}`· @  œl„Ç?d ¬5ì_ @  œm…Ç?d `\J& @  œn†Ç?d  |¿Ø @  œo‡Ç?d àA¯/D @  œpˆÇ?d XáÜK @  œq‰Ç?d `¨ž&2 @  œrŠÇ?d  ˆk$Ì @  œs‹Ç?d à‹1f @  œtŒÇ?d [yêè @  œuÇ?d `«‘ @  œvŽÇ?d  ‹óo @  œwÇ?d à~uÿ @  œxÇ?d ãVÕ> @  œy‘Ç?d `)/G @  œz’Ç?d  3Ü-¹ @  œ{“Ç?d à0†ou @  œ|”Ç?d àÎã @  œ}•Ç?d `±ä @  œ~–Ç?d  0D @  œ—Ç?d àQ1• @  œ€˜Ç?d eü½ˆ @  œ™Ç?d `•ƒGñ @  œ‚šÇ?d  µvE @  œƒ›Ç?d à¶,à @  œ„œÇ?d fd‹+ @  œ…Ç?d `–qR @  œ†žÇ?d  ¶îs¬ @  œ‡ŸÇ?d àÞ¸-à @  œˆ Ç?d Cü! @  œ‰¡Ç?d `³ƒwX @  œŠ¢Ç?d  “vu¦ @  œ‹£Ç?d à,7j @  œŒ¤Ç?d @d»‚ @  œ¥Ç?d `°Aû @  œŽ¦Ç?d  îC @  œ§Ç?d à­þx™ @  œ¨Ç?d ´°‹– @  œ‘©Ç?d `DÏqï @  œ’ªÇ?d  d:s @  œ“«Ç?d àg`1Ý @  œ”¬Ç?d ·(½5 @  œ•­Ç?d `GWGL @  œ–®Ç?d  g¢E² @  œ—¯Ç?d à’C"" @  œ˜°Ç?d ‚ã @  œ™±Ç?d `ÿxxš @  œš²Ç?d  ßzd @  œ›³Ç?d àÜ×8¨ @  œœ´Ç?d  Ÿ´@ @  œµÇ?d `üàN9 @  œž¶Ç?d  ÜLÇuÐ  @  œŸ·Ç?d àðPë @  œ ¸Ç?d 8 Ž @  œ¡¹Ç?d x qwtô @  œ¢ºÇ?d ¸ Q‚v  @  œ£»Ç?d ø RØ4Æ @  œ¤¼Ç?d 8!‚¸. @  œ¥½Ç?d x!rïBW @  œ¦¾Ç?d ¸!R@© @  œ§¿Ç?d ø!Ê ô @  œ¨ÀÇ?d 8"WX«5 @  œ©ÁÇ?d x"§'QL @  œªÂÇ?d ¸"‡ÒS² @  œ«ÃÇ?d ø"„ˆ~ @  œ¬ÄÇ?d 8#TÀ– @  œ­ÅÇ?d x#¤¿gï @  œ®ÆÇ?d ¸#„Je @  œ¯ÇÇ?d ø#¹Z^ @  œ°ÈÇ?d 8$ ­‚ @  œ±ÉÇ?d x$PkWû @  œ²ÊÇ?d ¸$pžU @  œ³ËÇ?d ø$sÄÉ @  œ´ÌÇ?d 8%£Œ›! @  œµÍÇ?d x%SóaX @  œ¶ÎÇ?d ¸%sc¦ @  œ·ÏÇ?d ø%†ç6 @  œ¸ÐÇ?d 8&£¤÷ @  œ¹ÑÇ?d x&ëÜ^Ž @  œºÒÇ?d ¸&Ë)\p @  œ»ÓÇ?d ø&Ès¼ @  œ¼ÔÇ?d 8';’T @  œ½ÕÇ?d x'èDh- @  œ¾ÖÇ?d ¸'ȱjÓ @  œ¿×Ç?d ø'J pm @  œÀØÇ?d 8(~_üp @  œÁÙÇ?d x(Ž   @  œÂÚÇ?d ¸(®Õ÷ @  œÃÛÇ?d ø(­F; @  œÄÜÇ?d 8)}ÇÊÓ @  œÅÝÇ?d x)¸0ª @  œÆÞÇ?d ¸)­M2T @  œÇßÇ?d ø)Ål @  œÈàÇ?d 8*X_ÌÙ @  œÉáÇ?d x*¨ 6  @  œÊâÇ?d ¸*ˆÕ4^ @  œËãÇ?d ø*‹v’ @  œÌäÇ?d 8+[Çúz @  œÍåÇ?d x+«¸ @  œÎæÇ?d ¸+‹Mý @  œÏçÇ?d ø+¶]9a @  œÐèÇ?d 8,¯Ên @  œÑéÇ?d x,_l0 @  œÒêÇ?d ¸,™2é @  œÓëÇ?d ø,|Ãp% @  œÔìÇ?d 8-¬‹üÍ @  œÕíÇ?d x-\ô´ @  œÖîÇ?d ¸-|J @  œ×ïÇ?d ø-‰àcÚ @  œØðÇ?d 8.¤Ã @  œÙñÇ?d x.äÛ9b @  œÚòÇ?d ¸.Ä.;œ @  œÛóÇ?d ø.ÇtyP @  œÜôÇ?d 8/<õ¸ @  œÝõÇ?d x/çCÁ @  œÞöÇ?d ¸/Ƕ ? @  œß÷Ç?d ø/ë  @  œàøÇ?d 80U~­¡ @  œáùÇ?d x0¥WØ @  œâúÇ?d€ ¸0ñ7I€ @  ûÇ?d ø0,Ce @  üÇ?d 81ÃdÏ @  ýÇ?d x1öRÎ @  þÇ?d ¸1Ö§Ìç @  ÿÇ?d ø1è± @  È?d 82šÅHp @  È?d x2¤ís @  È?d ¸2„ýï @   È?d ø2BîV¬ @   È?d 83’¦ÚD @   È?d x3§ÛÐ @   È?d ¸3‡eÙ. @   È?d ø3Ùfƒ( @  È?d 84À(p' @   È?d x4SDëÄ @   È?d ¸4s±é: @   È?d ø4µ¢P @   È?d 85eêÜó @   È?d x5PÜÝg @  È?d ¸5p)ß™ @  È?d ø5Kzçs @  È?d 86Ö>G² @  È?d x6èóâ± @  È?d ¸6ÈàO @  È?d ø6Yn @  È?d 87Þ]Õ† @  È?d x7ëkÔ @  È?d ¸7ËžÖì @  È?d ø7•Œê @  È?d 88¡b÷ @  È?d x8#¼¤ @   È?d ¸8ý¾Z @  !È?d ø8Åî{ @  "È?d 89¦‹“ @  #È?d x9 Š @  $È?d ¸9eˆù @  %È?d ø9¦‰Ï @  & È?d 8:;Å) @  '!È?d x:Œ  @  ("È?d ¸:%ýŽó @  )#È?d ø:ãî7Ò @  *$È?d 8;3¦»: @  +%È?d x;º® @  ,&È?d ¸;&e¸P @  -'È?d ø;xfâV @  .(È?d 8<a(Y @  /)È?d x<òDŠº @  0*È?d ¸<Ò±ˆD @  1+È?d ø<¢1e @  2,È?d 8=Äê½ @  3-È?d x=ñܼ @  4.È?d ¸=Ñ)¾ç @  5/È?d ø=êz†  @  60È?d 8>w>&Ì @  71È?d x>IóƒÏ @  82È?d ¸>i1 @  93È?d ø>¯8 @  :4È?d 8?]´ø @  ;5È?d x?Jkµl @  <6È?duÐ@7 ¸?jž·’ @  =7È?d ø?4í” @  >8È?d P@÷1W¨ @  ?9È?d @y8øI @  @:È?d Ð@û©ï— @  A;È?d AocÍ€ @  B<È?d PAíòÚ^ @  C=È?d Az Îê @  D>È?d ÐAø1Ù4 @  E?È?d B±Pz  @  F@È?d PB3ÁmÒ @  GAÈ?d B¯hÝñ @  HBÈ?d ÐB-ùÊ/ @  ICÈ?d C¹3è8 @  JDÈ?d PC;¢ÿæ @  KEÈ?d C¬ðëR @  LFÈ?d ÐC.aüŒ @  MGÈ?d Dë½B[ @  NHÈ?d PDi,U… @  OIÈ?d DX$ÛF @  PJÈ?d ÐDڵ̘ @  QKÈ?d ENî @  RLÈ?d PEÌîùQ @  SMÈ?d E[¼íå @  TNÈ?d ÐEÙ-ú; @  UOÈ?d Fý«uÎ @  VPÈ?d PF:b @  WQÈ?d Fã“Ò3 @  XRÈ?d ÐFaÅí @  YSÈ?d GõÈçú @  ZTÈ?d PGwYð$ @  [UÈ?d Gà ä @  \VÈ?d ÐGbšóN @  ]WÈ?d HŠ÷2‹ @  ^XÈ?d PHf%U @  _YÈ?d H(hŒ& @  `ZÈ?d ÐHªù›ø @  a[È?d I>3¹ï @  b\È?d PI¼¢®1 @  c]È?d I+𺅠@  d^È?d ÐI©a­[ @  e_È?d JPr @  f`È?d PJ’Á ¬ @  gaÈ?d Jh¼ @  hbÈ?d ÐJŒù«Q @  icÈ?d K3‰F @  jdÈ?d PKš¢ž˜ @  keÈ?d K ðŠ, @  lfÈ?d ÐKaò @  mgÈ?d LJ½#% @  nhÈ?d PLÈ,4û @  oiÈ?d Lù$º8 @  pjÈ?d ÐL{µ­æ @  qkÈ?d Mïñ @  rlÈ?d PMmî˜/ @  smÈ?d Mú¼Œ› @  tnÈ?d ÐMx-›E @  uoÈ?d N\«° @  vpÈ?d PNÞ:n @  wqÈ?d NB“³M @  xrÈ?d ÐNÀ¤“ @  ysÈ?d OTȆ„ @  ztÈ?d POÖY‘Z @  {uÈ?d OA …î @  |vÈ?d ÐOÚ’0 @  }wÈ?d P¡ÖcZ @  ~xÈ?d PP#Gt„ @  yÈ?d PNëT @  €zÈ?d ÐP̉üŠ @  {È?d QXCÞ @  ‚|È?d PQÚÒÉC @  ƒ}È?d QM€Ý÷ @  „~È?d ÐQÏÊ) @  …È?d R›¶=ƒ @  †€È?d PR'*] @  ‡È?d R…Žš~ @  ˆ‚È?d ÐR  @  ‰ƒÈ?d S“Õ¯· @  Š„È?d PSD¸i @  ‹…È?d S†¬Ý @  Œ†È?d ÐS‡» @  ‡È?d TÁ[Ô @  ŽˆÈ?d PTCÊ  @  ‰È?d TrœÉ @  ŠÈ?d ÐTðS‹ @  ‘‹È?d Ud™© @  ’ŒÈ?d PUæ¾Þ @  “È?d UqZªj @  ”ŽÈ?d ÐUó˽´ @  •È?d V×M2A @  –È?d PVUÜ%Ÿ @  —‘È?d VÉu•¼ @  ˜’È?d ÐVKä‚b @  ™“È?d Wß. u @  š”È?d PW]¿·« @  ›•È?d WÊí£ @  œ–È?d ÐWH|´Á @  —È?d X u @  ž˜È?d PX"€bÚ @  Ÿ™È?d XŽË© @   šÈ?d ÐX€Üw @  ¡›È?d YÕþ` @  ¢œÈ?d PY–Dé¾ @  £È?d Yý  @  ¤žÈ?d ÐYƒ‡êÔ @  ¥ŸÈ?d Z:¶\ý @  ¦ È?d PZ¸'K# @  §¡È?d Z$Žû @  ¨¢È?d ÐZ¦ìÞ @  ©£È?d [2ÕÎÉ @  ª¤È?d P[°DÙ @  «¥È?d ['Í£ @  ¬¦È?d Ð[¥‡Ú} @  ­§È?d \`[dª @  ®¨È?d P\âÊst @  ¯©È?d \ÓÂý· @  °ªÈ?d Ð\QSêi @  ±«È?d ]Å™È~ @  ²¬È?d P]Gß  @  ³­È?d ]ÐZË @  ´®È?d Ð]RËÜÊ @  µ¯È?d ^vMS? @  ¶°È?d P^ôÜDá @  ·±È?d ^huô @  ¸²È?d Ð^êäã @  ¹³È?d _~.Á  @  º´È?d P_ü¿ÖÕ @  »µÈ?d _kíÂa @  uÐ`¼¶È?d Ð_é|Õ¿ @  ½·È?d (`‹-ÿ @  ¾¸È?d h` ‡:! @  ¿¹È?d ¨`‡Ž•À @  ÀºÈ?d è`‚ @  Á»È?d (a‘Õ   @  Â¼È?d haD·× @  Ã½È?d ¨a„£c @  Ä¾È?d èa‡´½ @  Å¿È?d (bOæ… @  ÆÀÈ?d hbÍw[ @  ÇÁÈ?d ¨bQÞ°x @  ÈÂÈ?d èbÓO§¦ @  ÉÃÈ?d (cG……± @  ÊÄÈ?d hcÅ’o @  ËÅÈ?d ¨cRF†Û @  ÌÆÈ?d ècÐב @  ÍÇÈ?d (d /Ò @  ÎÈÈ?d hd—š8  @  ÏÉÈ?d ¨d¦’¶Ï @  ÐÊÈ?d èd$¡ @  ÑËÈ?d (e°Éƒ @  ÒÌÈ?d he2X”Ø @  ÓÍÈ?d ¨e¥ €l @  ÔÎÈ?d èe'›—² @  ÕÏÈ?d (fG @  ÖÐÈ?d hfŒ™ @  ×ÑÈ?d ¨f%¿º @  ØÒÈ?d èfŸ´¨d @  ÙÓÈ?d (g ~Šs @  ÚÔÈ?d hg‰ï­ @  ÛÕÈ?d ¨g½‰ @  ÜÖÈ?d ègœ,žÇ @  Ý×È?d (htA_ @  ÞØÈ?d hhöÐHÜ @  ßÙÈ?d ¨hÖÞᯠ@  àÚÈ?d èhTOöq @  áÛÈ?d (iÀ…Ôf @  âÜÈ?d€ hiƒS4¸ @  žÝÈ?d ¨iõ@h% @  žÞÈ?d èiwÑû @  žßÈ?d (j ©2? @  žàÈ?d hj‰8%á @  žáÈ?d ¨jÛ#ʸ @  žâÈ?d èjY²Ýf @  žãÈ?d (kÊ   @  žäÈ?d hk[·Õ @  ž åÈ?d ¨kÓ@XŒ @  ž æÈ?d èkQÑOR @  ž çÈ?d (lQD h @  ž èÈ?d hlÓÕ¶ @  ž éÈ?d ¨lÎòï @  žêÈ?d èl_å1 @  žëÈ?d (mô†¦¼ @  žìÈ?d hmv±b @  žíÈ?d ¨m$ ^; @  žîÈ?d èm¦Iå @  žïÈ?d (nGR=ý @  žðÈ?d hnÅÃ*# @  žñÈ?d ¨n—ØÅz @  žòÈ?d ènIÒ¤ @  žóÈ?d (oO1¯É @  žôÈ?d hoÍ ¸ @  žõÈ?d ¨oŸ»WN @  žöÈ?d èo*@ @  ž÷È?d (pº/J @  žøÈ?d hp8¾]É @  žùÈ?d ¨pj¥² @  žúÈ?d èpè4¥N @  žûÈ?d (qëÁs @  ž üÈ?d hqŒzÖ­ @  ž!ýÈ?d ¨qÞa9ô @  ž"þÈ?d èq\ð.* @  ž#ÿÈ?d (r²ywa @  ž$É?d hr0è`¿ @  ž%É?d ¨rbóæ @  ž&É?d èràb˜8 @  ž'É?d (sºåU @  ž(É?d hs8‹ò‹ @  ž)É?d ¨sjÒ @  ž*É?d èsè  @  ž+É?d (tè”O6 @  ž,É?d htjXè @  ž- É?d ¨t8·± @  ž. É?d ètº o @  ž/ É?d (uMVãâ @  ž0 É?d huÏÇô< @  ž1 É?d ¨uÜe @  ž2É?d èuM » @  ž3É?d (vþ‚x£ @  ž4É?d hv|o} @  ž5É?d ¨v.€$ @  ž6É?d èv¬™—ú @  ž7É?d (wöáê— @  ž8É?d hwtpýI @  ž9É?d ¨w&k @  ž:É?d èw¤úÎ @  ž;É?d (x‰Þ?æ @  ž<É?d hx O(8 @  ž=É?d ¨xYTÇa @  ž>É?d èxÛÅп @  ž?É?d (y“² @  ž@É?d hyŒ¥Î @  žAÉ?d ¨yC—J— @  žBÉ?d èyÁ]I @  žCÉ?d (z½~ @  žD É?d hz?ïS @  žE!É?d ¨zmôè  @  žF"É?d èzïeÿÔ @  žG#É?d ({µ‚¹ @  žH$É?d h{7Œ•g @  žI%É?d ¨{e—z> @  žJ&É?d è{çmà @  žK'É?d (|ç“(Ú @  žL(É?d h|e? @  žM)É?d ¨|7Ð] @  žN*É?d è|µˆÇƒ @  žO+É?d (}BQ„ @  žP,É?d h}ÀÀ“Ð @  žQ-É?d ¨}’Û|‰ @  žR.É?d è}JkW @  žS/É?d (~ñ…O @  žT0É?d h~s‘ @  žU1É?d ¨~!çÈ @  žV2É?d è~£žð @  žW3É?d (ùæ{ @  žX4É?d h{wš¥ @  žY5É?d ¨uЀ')luü @  žZ6É?d è«ýb" @  ž[7É?d @€ܘ6c @  ž\8É?d €€üm4 @  ž]9É?d À€ Îä @  ž^:É?d ÜZB  @  ž_;É?d @h\½ @  ž`<É?d €H©¿ù @  ža=É?d À¸ÖE€ @  žb>É?d ‚%’åA @  žc?É?d @‚¶o ‹ @  žd@É?d €‚–šu @  žeAÉ?d À‚fåò  @  žfBÉ?d ƒ¶­~ä @  žgCÉ?d @ƒ¾ ˜¿ @  žhDÉ?d €ƒžùšA @  žiEÉ?d Àƒn†`8 @  žjFÉ?d „wÈ“7 @  žkGÉ?d @„ì‚2Ü @  žlHÉ?d €„Ìw0" @  žmIÉ?d À„<Ê[ @  žnJÉ?d …ì@F³ @  žoKÉ?d @…I@ž @  žpLÉ?d €…iµœö @  žqMÉ?d À…™Êf @  žrNÉ?d †ŽÆN @  žsOÉ?d @†ú”I @  žtPÉ?d €†Úa· @  žuQÉ?d À†*ýÎ @  žvRÉ?d ‡úVq& @  žwSÉ?d @‡ò÷—} @  žxTÉ?d €‡Ò•ƒ @  žyUÉ?d À‡"}oú @  žzVÉ?d ˆ‚ãç @  ž{WÉ?d @ˆÈB  @  ž|XÉ?d €ˆ­=@ò @  ž}YÉ?d Àˆ]Bº‹ @  ž~ZÉ?d ‰ 6c @  ž[É?d @‰t]ÿË @  ž€\É?d €‰T¨ý5 @  ž]É?d À‰¤×L @  ž‚^É?d Š9“§ @  žƒ_É?d @ŠZ>]V @  ž„`É?d €ŠzË_¨ @  ž…aÉ?d ÀŠŠ´¥Ñ @  ž†bÉ?d ‹Zü)9 @  ž‡cÉ?d @‹R]Ïb @  žˆdÉ?d €‹r¨Íœ @  ž‰eÉ?d À‹‚×7å @  žŠfÉ?d Œ›™Äê @  ž‹gÉ?d @ŒÓe @  žŒhÉ?d €Œ &gÿ @  žiÉ?d ÀŒÐY† @  žŽjÉ?d n @  žkÉ?d @¥ÉÕ @  žlÉ?d €…äË+ @  ž‘mÉ?d Àu›1R @  ž’nÉ?d Žèß‘“ @  ž“oÉ?d @ŽÅR” @  ž”pÉ?d €Ž60Pj @  ž•qÉ?d ÀŽÆOª @  ž–rÉ?d &û @  ž—sÉ?d @¦À  @  ž˜tÉ?d €>SÂ^ @  ž™uÉ?d ÀÎ,8' @  žšvÉ?d pò„• @  ž›wÉ?d @ë¸%~ @  žœxÉ?d €ËM'€ @  žyÉ?d À;2Ýù @  žžzÉ?d ‘ëzQ @  žŸ{É?d @‘_|® @  ž |É?d €‘‰¬ä @  ž¡}É?d À‘öV @  ž¢~É?d ’²ö\ @  ž£É?d @’œ‰M @  ž¤€É?d €’¼|Oú @  ž¥É?d À’Lµƒ @  ž¦‚É?d “œK9k @  ž§ƒÉ?d @“”êß0 @  ž¨„É?d €“´ÝÎ @  ž©…É?d À“D`'· @  žª†É?d ”].Ô¸ @  ž«‡É?d @”ÆduS @  ž¬ˆÉ?d €”æ‘w­ @  ž­‰É?d À”îÔ @  ž®ŠÉ?d •Ʀ< @  ž¯‹É?d @•c¦Ù‡ @  ž°ŒÉ?d €•CSÛy @  ž±É?d À•³,! @  ž²ŽÉ?d –.hÁ @  ž³É?d @–ÐrBÆ @  ž´É?d €–ð‡@8 @  žµ‘É?d À–øºA @  ž¶’É?d —а6© @  ž·“É?d @—ØÐò @  ž¸”É?d €—øäÒ  @  ž¹•É?d À—›(u @  žº–É?d ˜cì @  ŸÕÉ?d اCóÆï @  ŸÖÉ?d ¨w Jò @  Ÿ×É?d X¨)ô @  ŸØÉ?d ˜¨ ú  @  ŸÙÉ?d ب<Ìž @  ŸÚÉ?d ©섟v @  ŸÛÉ?d X©*—&W @  ŸÜÉ?d ˜© b$© @  ŸÝÉ?d Ø©ˆ˜ú @  Ÿ ÞÉ?d ªL8; @  Ÿ!ßÉ?d Xª³¨9  @  Ÿ"àÉ?d ˜ª“];ó @  Ÿ#áÉ?d ت¦k:g @  Ÿ$âÉ?d «v#¶ @  Ÿ%ãÉ?d X«°0® @  Ÿ&äÉ?d ˜«Å P @  Ÿ'åÉ?d Ø«®¨S @  Ÿ(æÉ?d ¬·F[\ @  Ÿ)çÉ?d X¬éEZ @  Ÿ*èÉ?d ˜¬ɰ¤ @  Ÿ+éÉ?d جü†0 @  Ÿ,êÉ?d ­,ÎŽØ @  Ÿ-ëÉ?d X­êÝ7ù @  Ÿ.ìÉ?d ˜­Ê(5 @  Ÿ/íÉ?d Ø­YD®ä @  Ÿ0îÉ?d ®Ä% @  Ÿ1ïÉ?d X®ÿS6Ï @  Ÿ2ðÉ?d ˜®ߦ41 @  Ÿ3ñÉ?d Ø®ê5¥ @  Ÿ4òÉ?d ¯:عM @  Ÿ5óÉ?d X¯üËl @  Ÿ6ôÉ?d ˜¯Ü>’ @  Ÿ7õÉ?d دâó§‘ @  Ÿ8öÉ?d °\-# @  Ÿ9÷É?d X°.A% @  Ÿ:øÉ?d ˜°"ÛCÛ @  Ÿ;ùÉ?d ذíBO @  Ÿ<úÉ?d ±ǥΧ @  Ÿ=ûÉ?d X±¶w† @  Ÿ>üÉ?d ˜±!Cux @  Ÿ?ýÉ?d ر .Ϲ @  Ÿ@þÉ?d ²jox @  ŸAÿÉ?d X²]Oä @  ŸBÊ?d ˜²6¨M @  ŸCÊ?d زžLŽ @  ŸDÊ?d ³ÓÖÀf @  ŸEÊ?d X³ÅyG @  ŸFÊ?d ˜³50{¹ @  ŸGÊ?d س ýÞº @  ŸHÊ?d ´³-µ @  ŸIÊ?d X´L°w³ @  ŸJÊ?d ˜´lEuM @  ŸK Ê?d Ø´YstÙ @  ŸL Ê?d µ‰;ø1 @  ŸM Ê?d XµO(A @  ŸN Ê?d ˜µoÝCî @  ŸO Ê?d صü±Ø  @  ŸPÊ?d ¶aõxÌ @  ŸQÊ?d X¶Z¦@& @  ŸRÊ?d ˜¶zSBØ @  ŸSÊ?d ضOeCL @  ŸTÊ?d ·Ÿ-Ϥ @  ŸUÊ?d X·Y>v… @  ŸVÊ?d ˜·yËt{ @  ŸWÊ?d Ø·GÑx @  ŸXÊ?d ¸sù]e @  ŸYÊ?d X¸-úc @  ŸZÊ?d ˜¸  @  Ÿ[Ê?d ظ89  @  Ÿ\Ê?d ¹èqˆá @  Ÿ]Ê?d X¹.b1À @  Ÿ^Ê?d ˜¹—3> @  Ÿ_Ê?d عŒým @  Ÿ`Ê?d º¹/¬ @  ŸaÊ?d Xº·].š @  Ÿb Ê?d ˜º—¨,d @  Ÿc!Ê?d غ¢ž-ð @  Ÿd"Ê?d »rÖ¡ @  Ÿe#Ê?d X»´Å9 @  Ÿf$Ê?d ˜»”0Ç @  Ÿg%Ê?d Ø»ªý¿Ä @  Ÿh&Ê?d ¼³³LË @  Ÿi'Ê?d X¼í°Í @  Ÿj(Ê?d ˜¼ÍE3 @  Ÿk)Ê?d ؼøs§ @  Ÿl*Ê?d ½(;™O @  Ÿm+Ê?d X½î( n @  Ÿn,Ê?d ˜½ÎÝ" @  Ÿo-Ê?d ؽ]±¹s @  Ÿp.Ê?d ¾Àõ² @  Ÿq/Ê?d X¾û¦!X @  Ÿr0Ê?d ˜¾ÛS#¦ @  Ÿs1Ê?d ؾîe"2 @  Ÿt2Ê?d ¿>-®Ú @  Ÿu3Ê?d X¿ø>û @  Ÿv4Ê?d ˜¿ØË @uÐÀ  Ÿw5Ê?d Ø¿æ° @  Ÿx6Ê?d 0À‚öáT @  Ÿy7Ê?d pÀÜõ»R @  Ÿz8Ê?d °Àü¹¬ @  Ÿ{9Ê?d ðÀÉ6¸8 @  Ÿ|:Ê?d 0Á~4Ð @  Ÿ};Ê?d pÁßmñ @  Ÿ~<Ê?d °Áÿ˜ @  Ÿ=Ê?d ðÁ0£ÿ @  Ÿ€>Ê?d 0­ç¥> @  Ÿ?Ê?d pÂûS± @  Ÿ‚@Ê?d °Â Ȉç @  Ÿƒ AÊ?d ðÂþ‰s @  Ÿ„ BÊ?d 0ÃŶ› @  Ÿ… CÊ?d pÃ¥¼º @  Ÿ† DÊ?d °Ã#P¾D @  Ÿ‡ EÊ?d ðÃG @  Ÿˆ FÊ?d 0ÄÓèH @  Ÿ‰ GÊ?d pÄZвN @  ŸŠ HÊ?d °Äz%°° @  Ÿ‹ IÊ?d ðÄO±$ @  ŸŒ JÊ?d 0ÅŸ[=Ì @  Ÿ KÊ?d pÅYH„í @  ŸŽ LÊ?d °Åy½† @  Ÿ MÊ?d ðÅêÑð @  Ÿ NÊ?d 0Æw•½1 @  Ÿ‘ OÊ?d pÆLÆ…Û @  Ÿ’ PÊ?d °Æl3‡% @  Ÿ“ QÊ?d ðÆY†± @  Ÿ” RÊ?d 0ljM Y @  Ÿ• SÊ?d pÇO^³x @  Ÿ– TÊ?d °Ço«±† @  Ÿ— UÊ?d ðÇQf… @  Ÿ˜ VÊ?d 0Èe™˜˜ @  Ÿ™ WÊ?d pÈ;šÂž @  Ÿš XÊ?d °ÈoÀ` @  Ÿ› YÊ?d ðÈ.YÁô @  Ÿœ ZÊ?d 0ÉþM @  Ÿ [Ê?d pÉ8ô= @  Ÿž \Ê?d °É÷öà @  ŸŸ ]Ê?d ðÉšJ @  Ÿ  ^Ê?d 0ÊÙêQ @  Ÿ¡ _Ê?d pÊ¡=ëg @  Ÿ¢ `Ê?d °ÊÈé™ @  Ÿ£ aÊ?d ðÊ´þè  @  Ÿ¤ bÊ?d 0Ëd¶då @  Ÿ¥ cÊ?d pË¢¥ÝÄ @  Ÿ¦ dÊ?d °Ë‚Pß: @  Ÿ§ eÊ?d ð˼z9 @  Ÿ¨ fÊ?d 0Ì¥Ó‰6 @  Ÿ© gÊ?d pÌûÐÓ0 @  Ÿª hÊ?d °ÌÛ%ÑÎ @  Ÿ« iÊ?d ðÌîÐZ @  Ÿ¬ jÊ?d 0Í>[\² @  Ÿ­ kÊ?d pÍøHå“ @  Ÿ® lÊ?d °Íؽçm @  Ÿ¯ mÊ?d ðÍKÑ|Ž @  Ÿ° nÊ?d 0ÎÖ•ÜO @  Ÿ± oÊ?d pÎíÆä¥ @  Ÿ² pÊ?d °ÎÍ3æ[ @  Ÿ³ qÊ?d ðÎøçÏ @  Ÿ´ rÊ?d 0Ï(Mk' @  Ÿµ sÊ?d pÏî^Ò @  Ÿ¶ tÊ?d °ÏÎ«Ðø @  Ÿ· uÊ?d ðÏðfuû @  Ÿ¸ vÊ?d 0ÐN¸ÉI @  Ÿ¹ wÊ?d pл“O @  Ÿº xÊ?d °Ð0N‘± @  Ÿ» yÊ?d ðÐx% @  Ÿ¼ zÊ?d 0ÑÕ0Í @  Ÿ½ {Ê?d pÑ#¥ì @  Ÿ¾ |Ê?d °Ñ3Ö§ @  Ÿ¿ }Ê?d ðÑ»Ó @  ŸÀ ~Ê?d 0Ò‚ÿ½ @  ŸÁ Ê?d pÒÉý§ @  Ÿ €Ê?d °ÒéxÿY @  Ÿà Ê?d ðÒÜNþÍ @  ŸÄ ‚Ê?d 0Ó r% @  ŸÅ ƒÊ?d pÓÊË @  ŸÆ „Ê?d °ÓêàÉú @  ŸÇ …Ê?d ðÓÔ-lù @  ŸÈ †Ê?d 0ÔÍcŸö @  ŸÉ ‡Ê?d pÔ“`Åð @  ŸÊ ˆÊ?d °Ô³•Ç @  ŸË ‰Ê?d ðÔ†£Æš @  ŸÌ ŠÊ?d 0ÕVëJr @  ŸÍ ‹Ê?d pÕøóS @  ŸÎ ŒÊ?d °Õ° ñ­ @  ŸÏ Ê?d ðÕ#ajN @  ŸÐ ŽÊ?d 0Ö¾%Ê @  ŸÑ Ê?d pÖ…vòe @  ŸÒ Ê?d °Ö¥ƒð› @  ŸÓ ‘Ê?d ðÖµñ @  ŸÔ ’Ê?d 0×@ý}ç @  ŸÕ “Ê?d p׆îÄÆ @  ŸÖ ”Ê?d °×¦Æ8 @  Ÿ× •Ê?d ðטÖc; @  ŸØ –Ê?d 0ج)ï& @  ŸÙ —Ê?d pØò*µ  @  ŸÚ ˜Ê?d °ØÒß·Þ @  ŸÛ ™Ê?d ðØçé¶J @  ŸÜ šÊ?d 0Ù7¡:¢ @  ŸÝ ›Ê?d pÙñ²ƒƒ @  ŸÞ œÊ?d °ÙÑG} @  Ÿß Ê?d ðÙS-=. @  Ÿà žÊ?d 0ÚÎiï @  Ÿá ŸÊ?d pÚhœÙ @  Ÿâ  Ê?d€ °Úpl @    ¡Ê?d ðÚ¤q%º @    ¢Ê?d 0Ût9©R @    £Ê?d pÛwcëž @    ¤Ê?d °ÛW–é` @    ¥Ê?d ðÛ§é @    ¦Ê?d 0ܾ§à @    §Ê?d pÜ.åj @    ¨Ê?d °Üãç” @    ©Ê?d ðÜþœí @    ªÊ?d 0Ý.Ô‘ @    «Ê?d pÝ-ŽÓÉ @    ¬Ê?d °Ý {Ñ7 @    ­Ê?d ðÝý+N @    ®Ê?d 0Þ`@‹ @    ¯Ê?d pÞ8Òÿ @    °Ê?d °ÞõÐ @    ±Ê?d ðÞèŠ*x @    ²Ê?d 0ß8¦ @    ³Ê?d pß;˜ä\ @    ´Ê?d uÐà/°ßmæ¢ @    µÊ?d ðßëÛ @    ¶Ê?d Hàò¶B- @    ·Ê?d ˆàÀcRq @    ¸Ê?d ÈàBòE¯ @    ¹Ê?d áàT$à @    ºÊ?d HábÅ3> @    »Ê?d ˆáÃûdÒ @    ¼Ê?d ÈáAjs  @    ½Ê?d â®À>j @    ¾Ê?d Hâ,Q)´ @    ¿Ê?d ˆâª”n™ @    ÀÊ?d Èâ(yG @   ! ÁÊ?d ㊣ @   " ÂÊ?d Hã2Ö @   # ÃÊ?d ˆã© X: @   $ ÄÊ?d Èã+Oä @   % ÅÊ?d ä@=QL @   & ÆÊ?d Hä¬F’ @   ' ÇÊ?d ˆäðyVÎ @   ( ÈÊ?d ÈärèA @   ) ÉÊ?d åÐN _ @   * ÊÊ?d HåRß7 @   + ËÊ?d ˆåóá`m @   , ÌÊ?d Èåqpw³ @   - ÍÊ?d æžÚ:Õ @   . ÎÊ?d HæK-  @   / ÏÊ?d ˆææoa[ @   0 ÐÊ?d Èædþv… @   1 ÑÊ?d çÆXÊ @   2 ÒÊ?d HçDÉ @   3 ÓÊ?d ˆçå÷Wø @   4 ÔÊ?d Èçgf@& @   5 ÕÊ?d è!w!œ @   6 ÖÊ?d Hè£æ6B @   7 ×Ê?d ˆè‘3& @   8 ØÊ?d Èè¢1À @   9 ÙÊ?d é±P @   : ÚÊ?d Hé3•GQ @   ; ÛÊ?d ˆé’«½ @   < ÜÊ?d Èé:c @   = ÝÊ?d êÿJ @   > ÞÊ?d Hê}]Û @   ? ßÊ?d ˆê¥“ u @   @ àÊ?d Èê'« @   A áÊ?d ë…¤ä @   B âÊ?d Hë5h: @   C ãÊ?d ˆë¦ ?Ö @   D äÊ?d Èë$š( @   E åÊ?d ìO:6  @   F æÊ?d HìÍ«!~ @   G çÊ?d ˆìÿ~1" @   H èÊ?d Èì}ï&ü @   I éÊ?d íßIG³ @   J êÊ?d Hí]ØPm @   K ëÊ?d ˆíüæ @   L ìÊ?d Èí~w_ @   M íÊ?d î‘Ý]9 @   N îÊ?d HîLJç @   O ïÊ?d ˆîéh· @   P ðÊ?d Èîkùi @   Q ñÊ?d ïÉ_p& @   R òÊ?d HïKÎgø @   S óÊ?d ˆïêð0 @   T ôÊ?d Èïha'Ê @   U õÊ?d ð¤Qvß @   V öÊ?d Hð&Àa @   W ÷Ê?d ˆðq] @   X øÊ?d Èð–„fƒ @   Y ùÊ?d ñ4"Ì @   Z úÊ?d Hñ¶³ @   [ ûÊ?d ˆñGþ @   \ üÊ?d Èñ•P  @   ] ýÊ?d òz¶F @   ^ þÊ?d Hòø' ˜ @   _ ÿÊ?d ˆòCL+ @   ` Ë?d ÈòžÒ[õ @   a Ë?d óxê @   ‘ 1Ë?d ÿœÞb¥ @   ’ 2Ë?d HÿOu{ @   “ 3Ë?d ˆÿ¿q"— @   ” uÐ4Ë?d Èÿ=à5I @   • 5Ë?d Kÿù @   – 6Ë?d `Én‡' @   — 7Ë?d  û»—{ @   ˜ 8Ë?d ày*€¥ @   ™ 9Ë?d ÛŒáê @   š :Ë?d `Yö4 @   › ;Ë?d  ø#¡Ø @   œ <Ë?d àz²¶ @    =Ë?d •û` @   ž >Ë?d `‰ì¾ @   Ÿ ?Ë?d  ‘L«“ @     @Ë?d àݼM @   ¡ AË?d ±{Ý @   ¢ BË?d `3êÊÜ @   £ CË?d  ’Ô0 @   ¤ DË?d àEŠî @   ¥ EË?d {å”F @   ¦ FË?d `ùtƒ˜ @   § GË?d  Ë¡“Ä @   ¨ HË?d àI0„ @   © IË?d ë–åU @   ª JË?d `iò‹ @   « KË?d  È9¥g @   ¬ LË?d àJ¨²¹ @   ­ MË?d ¥ÿß @   ® NË?d `'“è @   ¯ OË?d  Ý·¤Q @   ° PË?d à_&³ @   ± QË?d ý€ÒÀ @   ² RË?d `Å @   ³ SË?d  Þ/’ò @   ´ TË?d à\¾…, @   µ UË?d ¯ä– @   ¶ VË?d `˜>óH @   · WË?d  ªëã @   ¸ XË?d à(zôÊ @   ¹ YË?d ŠÜ•… @   º ZË?d ` M‚[ @   » [Ë?d   ©sÕ· @   ¼ \Ë?d à +âÂi @   ½ ]Ë?d ÄH @   ¾ ^Ë?d ` FÙ˜Ñ @   ¿ _Ë?d   žKÌ @   À `Ë?d à ÚÛ¡ @   Á aË?d ¾|ºî @    bË?d ` <í­0 @   à cË?d   ÓúÜ @   Ä dË?d à Bí @   Å eË?d tâóª @   Æ fË?d ` ösät @   Ç gË?d   Ħô( @   È hË?d à F7ãö @   É iË?d ä‘‚¹ @   Ê jË?d ` f•g @   Ë kË?d   Ç>‹ @   Ì lË?d à E¯ÕU @   Í mË?d ª˜3 @   Î nË?d `(”í @   Ï oË?d  Ұý @   Ð pË?d àP!Ôc @   Ñ qË?d ò‡µ, @   Ò rË?d `p¢ò @   Ó sË?d  Ñ(õ @   Ô tË?d àS¹âÀ @   Õ uË?d Ÿ‰³Õ @   Ö vË?d `¤  @   × wË?d  /Í´W @   Ø xË?d à­\£‰ @   Ù yË?d úÂÆ @   Ú zË?d `kÕ @   Û {Ë?d  ,U‚ô @   Ü |Ë?d à®Ä•* @   Ý }Ë?d AnØL @   Þ ~Ë?d `ÃÿÏ’ @   ß Ë?d  XüÜ- @   à €Ë?d àÚmËó @   á Ë?d x˪¼ @   â ‚Ë?d€ `Ž™¡Ä @  ¡ ƒË?d  Îæ¾ @  ¡ „Ë?d àLw©ß @  ¡ …Ë?d âžLš @  ¡ †Ë?d ``[D @  ¡ ‡Ë?d  œhb @  ¡ ˆË?d àù¼ @  ¡ ‰Ë?d rí=‰ @  ¡ ŠË?d `ð|*W @  ¡ ‹Ë?d  ” †V @  ¡ ŒË?d àš‘ˆ @  ¡ Ë?d  ÀË?d ø"MeÑ @  ¡? ÁË?d 8#3£D& @  ¡@ ÂË?d x#±2Sø @  ¡A ÃË?d ¸#ÕEÿù @  ¡B ÄË?d ø#WÔè' @  ¡C ÅË?d 8$ù= b @  ¡D ÆË?d x${¬¼ @  ¡E ÇË?d ¸$‡ËUš @  ¡F ÈË?d ø$ZBD @  ¡G ÉË?d 8%iN|q @  ¡H ÊË?d x%ëßk¯ @  ¡I ËË?d ¸%¨Ç® @  ¡J ÌË?d ø% 9Ðp @  ¡K ÍË?d 8&'Úfû @  ¡L ÎË?d x&¥Kq% @  ¡M ÏË?d ¸&<|\ï @  ¡N ÐË?d ø&¾íK1 @  ¡O ÑË?d 8'XKä @  ¡P ÒË?d x'ýÉ\: @  ¡Q ÓË?d ¸'™¾ð; @  ¡R ÔË?d ø'/çå @  ¡S ÕË?d 8(˜w}² @  ¡T ÖË?d x(æjl @  ¡U ×Ë?d ¸(æ%J @  ¡V ØË?d ø(d2” @  ¡W ÙË?d 8) ¡ @  ¡X ÚË?d x)Š• @  ¡Y ÛË?d ¸)îâ·~ @  ¡Z ÜË?d ø)ls   @  ¡[ ÝË?d 8*F+ @  ¡\ ÞË?d x*Äõ @  ¡] ßË?d ¸*Àã @  ¡^ àË?d ø*B= @  ¡_ áË?d 8+’£%X @  ¡` âË?d x+22† @  ¡a ãË?d ¸+tEž‡ @  ¡b äË?d ø+öÔ‰Y @  ¡c åË?d 8,X=l @  ¡d æË?d x,Ú¬{ @  ¡e çË?d ¸,&Ë4ä @  ¡f èË?d ø,¤Z#: @  ¡g éË?d 8-ÈN @  ¡h êË?d x-Jß Ñ @  ¡i ëË?d ¸-.¨¦Ð @  ¡j ìË?d ø-¬9± @  ¡k íË?d 8.†Ú… @  ¡l îË?d x.K[ @  ¡m ïË?d ¸.|=‘ @  ¡n ðË?d ø.í*O @  ¡o ñË?d 8/ÞX*š @  ¡p òË?d x/\É=D @  ¡q óË?d ¸/8¾‘E @  ¡r ôË?d ø/º/†› @  ¡s õË?d 80³V,c @  ¡t öË?d x01Ç;½ @  ¡u ÷Ë?d ¸0Í t› @  ¡v øË?d ø0O1cE @  ¡w ùË?d 81#%]p @  ¡x úË?d x1¡´J® @  ¡y ûË?d ¸1ÅÃæ¯ @  ¡z üË?d ø1GRñq @  ¡{ ýË?d 82m±Gú @  ¡| þË?d x2ï P$ @  ¡} ÿË?d ¸2EXo+ @  ¡~ Ì?d ø2ÇÉxõ @  ¡ Ì?d 83Z+i3 @  ¡€ Ì?d x3غ~í @  ¡ Ì?d ¸3¼ÍÒì @  ¡‚ Ì?d ø3>\Å2 @  ¡ƒ Ì?d 84µ w @  ¡„ Ì?d x4$7© @  ¡… Ì?d ¸4îCx @  ¡† Ì?d ø4lÒoQ @  ¡‡  Ì?d 85ÆQd @  ¡ˆ  Ì?d x5‚WFº @  ¡‰  Ì?d ¸5æ ê» @  ¡Š  Ì?d ø5d±ýe @  ¡‹  Ì?d 86NRKî @  ¡Œ Ì?d x6ÌÃ\0 @  ¡ Ì?d ¸6Uôqú @  ¡Ž Ì?d ø6×ef$ @  ¡ Ì?d 87Ðfñ @  ¡ Ì?d x7”Aq/ @  ¡‘ Ì?d ¸7ð6Ý. @  ¡’ Ì?d ø7r§Êð @  ¡“ Ì?d 88ñÿP§ @  ¡” Ì?d x8snGy @  ¡• Ì?d ¸8 _ @  ¡– Ì?d ø8 ˜ @  ¡— Ì?d 89aŒ!´ @  ¡˜ Ì?d x9ã6j @  ¡™ Ì?d ¸9‡jšk @  ¡š Ì?d ø9ûµ @  ¡› Ì?d 8:/;> @  ¡œ Ì?d x:­‰,à @  ¡ Ì?d ¸:© 8ö @  ¡ž  Ì?d ø:+˜/( @  ¡Ÿ !Ì?d 8;û+M @  ¡  "Ì?d x;yº“ @  ¡¡ #Ì?d ¸;ͳ’ @  ¡¢ $Ì?d ø;Ÿ\¤L @  ¡£ %Ì?d 8<1µA  @  ¡¤ &Ì?d x<³$V× @  ¡¥ 'Ì?d ¸<OCñ @  ¡¦ (Ì?d ø<ÍÒ/ @  ¡§ )Ì?d 8=¡Æ0 @  ¡¨ *Ì?d x=#W'Ä @  ¡© +Ì?d ¸=G ‹Å @  ¡ª ,Ì?d ø=űœ @  ¡« -Ì?d 8>ïR* @  ¡¬ .Ì?d x>mÃ=N @  ¡­ /Ì?d ¸>ôô„ @  ¡® 0Ì?d ø>veZ @  ¡¯ 1Ì?d 8?·Ð @  ¡° 2Ì?d x?5AQ @  ¡± 3Ì?duÐ@7 ¸?Q6¼P @  ¡² 4Ì?d ø?Ó§«Ž @  ¡³ 5Ì?d P@§¬ø @  ¡´ 6Ì?d @‡Y @  ¡µ 7Ì?d Ð@ÙZ_ @  ¡¶ 8Ì?d A Óè @  ¡· 9Ì?d PA7ßvë @  ¡¸ :Ì?d A*t @  ¡¹ ;Ì?d ÐAÑ9Í4 @  ¡º <Ì?d BL}mõ @  ¡» =Ì?d PByKla @  ¡¼ >Ì?d BY¾nŸ @  ¡½ ?Ì?d ÐB z¸ @  ¡¾ @Ì?d CßBöP @  ¡¿ AÌ?d PCó/L‘ @  ¡À BÌ?d CÓÚNo @  ¡Á CÌ?d ÐCÉ÷N @  ¡ DÌ?d D ‡A @  ¡à EÌ?d PD9±Õ @  ¡Ä FÌ?d DD+ @  ¡Å GÌ?d ÐDGG]- @  ¡Æ HÌ?d E—ÑÅ @  ¡Ç IÌ?d PE©ÂtÆ @  ¡È JÌ?d E‰7v8 @  ¡É KÌ?d ÐEO$Ï @  ¡Ê LÌ?d FÒ`oØ @  ¡Ë MÌ?d PFçVnL @  ¡Ì NÌ?d FÇ£l² @  ¡Í OÌ?d ÐFüðTX @  ¡Î PÌ?d G,¸Ø° @  ¡Ï QÌ?d PG¿ÔCS @  ¡Ð RÌ?d GŸ!A­ @  ¡Ñ SÌ?d ÐGY2øŒ @  ¡Ò TÌ?d HmÍt‘ @  ¡Ó UÌ?d PHXûu @  ¡Ô VÌ?d Hxwû @  ¡Õ WÌ?d ÐH& -ý @  ¡Ö XÌ?d IöE¡ @  ¡× YÌ?d PIȈ @  ¡Ø ZÌ?d Iè}è @  ¡Ù [Ì?d ÐI.n¿É @  ¡Ú \Ì?d J³* @  ¡Û ]Ì?d PJ†œ @  ¡Ü ^Ì?d J¦éb @  ¡Ý _Ì?d ÐJ T @  ¡Þ `Ì?d KÐE‘¼ @  ¡ß aÌ?d PKR/-ï @  ¡à bÌ?d KrÚ/ @  ¡á cÌ?d ÐK´É–0 @  ¡â dÌ?d€ LlÀ’? @  ¢ eÌ?d PL¸·Û‚ @  ¢ fÌ?d L˜BÙ| @  ¢ gÌ?d ÐLx— @  ¢ hÌ?d MÓ@ô @  ¢ iÌ?d PM#? @  ¢ jÌ?d MÊ ø @  ¢ kÌ?d ÐM kê£ @  ¢ lÌ?d N–/Jb @  ¢ mÌ?d PNfP° @  ¢ nÌ?d NF¥²å @  ¢ oÌ?d ÐN¸¿qâ @  ¢ pÌ?d Oh÷ý  @  ¢ qÌ?d PO˜ˆs @  ¢ rÌ?d O¸} @  ¢ sÌ?d ÐO}Ý6 @  ¢ tÌ?d P££a„ @  ¢ uÌ?d PPSÜ›ý @  ¢ vÌ?d Ps)™ @  ¢ wÌ?d ÐPèc8è @  ¢ xÌ?d Q8+´ @  ¢ yÌ?d PQÈTNy @  ¢ zÌ?d Qè¡L‡ @  ¢ {Ì?d ÐQàªÜ @  ¢ |Ì?d R}D  @  ¢ }Ì?d PR;ðd @  ¢ ~Ì?d R­Îòš @  ¢ Ì?d ÐR#õI @  ¢ €Ì?d Só½Å* @  ¢ Ì?d PSÂ?S @  ¢ ‚Ì?d S#7=­ @  ¢ ƒÌ?d ÐS—1¦ @  ¢ „Ì?d TŽ1© @  ¢! …Ì?d PT~ËÐ @  ¢" †Ì?d T^õÉ. @  ¢# ‡Ì?d ÐTÅ¿hÅ @  ¢$ ˆÌ?d U÷ä- @  ¢% ‰Ì?d PUåˆT @  ¢& ŠÌ?d UÅ}ª @  ¢' ‹Ì?d ÐUÍÜúñ @  ¢( ŒÌ?d VP˜Z0 @  ¢) Ì?d PV ç I @  ¢* ŽÌ?d V€¢· @  ¢+ Ì?d ÐV~a° @  ¢, Ì?d W®@íX @  ¢- ‘Ì?d PW^?! @  ¢. ’Ì?d W~Êß @  ¢/ “Ì?d ÐWÛÊÍd @  ¢0 ”Ì?d Xï5Ay @  ¢1 •Ì?d PXJ» @  ¢2 –Ì?d X?¿¹þ @  ¢3 —Ì?d ÐX¤õ @  ¢4 ˜Ì?d Yt½”ý @  ¢5 ™Ì?d PY„Ân„ @  ¢6 šÌ?d Y¤7lz @  ¢7 ›Ì?d ÐY¬–Š! @  ¢8 œÌ?d Z1Ò*à @  ¢9 Ì?d PZÁ­Ð™ @  ¢: žÌ?d ZáXÒg @  ¢; ŸÌ?d ÐZ‚õ(¼ @  ¢<  Ì?d [R½¤T @  ¢= ¡Ì?d P[¢Â^- @  ¢> ¢Ì?d [‚7\Ó @  ¢? £Ì?d Ð[˜6¥J @  ¢@ ¤Ì?d \xVE @  ¢A ¥Ì?d P\q¬< @  ¢B ¦Ì?d \Qò®Â @  ¢C §Ì?d Ð\ʸ) @  ¢D ¨Ì?d ]ðƒÁ @  ¢E ©Ì?d P]êy¸ @  ¢F ªÌ?d ]Êz{F @  ¢G «Ì?d Ð]ÂÛ @  ¢H ¬Ì?d ^_Ÿ=Ü @  ¢I ­Ì?d P^¯àÇ¥ @  ¢J ®Ì?d ^Å[ @  ¢K ¯Ì?d Ð^q\ @  ¢L °Ì?d _¡GŠ´ @  ¢M ±Ì?d P_Q8pÍ @  ¢N ²Ì?d _qÍr3 @  ¢uÐ`O ³Ì?d Ð_Ôͪˆ @  ¢P ´Ì?d (`j5 @  ¢Q µÌ?d h`šJåi @  ¢R ¶Ì?d ¨`º¿ç— @  ¢S ·Ì?d è`!õF| @  ¢T ¸Ì?d (añ½Ê” @  ¢U ¹Ì?d haÂ0í @  ¢V ºÌ?d ¨a!72 @  ¢W »Ì?d èa)–ÔH @  ¢X ¼Ì?d (b´Òt‰ @  ¢Y ½Ì?d hbD­Žð @  ¢Z ¾Ì?d ¨bdXŒ @  ¢[ ¿Ì?d èb÷¥cÄ @  ¢\ ÀÌ?d (c'íï, @  ¢] ÁÌ?d hc×’U @  ¢^ ÂÌ?d ¨c÷g« @  ¢_ ÃÌ?d ècCaè  @  ¢` ÄÌ?d (dZ/¯ @  ¢a ÅÌ?d hdªPáÖ @  ¢b ÆÌ?d ¨dŠ¥ã( @  ¢c ÇÌ?d èdïBà @  ¢d ÈÌ?d (eÁ§Î+ @  ¢e ÉÌ?d he1Ø4R @  ¢f ÊÌ?d ¨e-6¬ @  ¢g ËÌ?d èeŒÐ÷ @  ¢h ÌÌ?d (f„Èp6 @  ¢i ÍÌ?d hft·ŠO @  ¢j ÎÌ?d ¨fTBˆ± @  ¢k ÏÌ?d èfªXK¶ @  ¢l ÐÌ?d (gzÇ^ @  ¢m ÑÌ?d hgŠo=' @  ¢n ÒÌ?d ¨gªš?Ù @  ¢o ÓÌ?d ègšçb @  ¢p ÔÌ?d (h;ek @  ¢q ÕÌ?d hhË‘ @  ¢r ÖÌ?d ¨hëï“ø @  ¢s ×Ì?d èhp¥2 @  ¢t ØÌ?d (i í¾û @  ¢u ÙÌ?d hiP’D‚ @  ¢v ÚÌ?d ¨ipgF| @  ¢w ÛÌ?d èixÆ ' @  ¢x ÜÌ?d (j傿 @  ¢y ÝÌ?d hjýúŸ @  ¢z ÞÌ?d ¨j5øa @  ¢{ ßÌ?d èjV¥º @  ¢| àÌ?d (k†íŽR @  ¢} áÌ?d hkv’t+ @  ¢~ âÌ?d ¨kVgvÕ @  ¢ ãÌ?d èk¯0¿} @  ¢€ äÌ?d (l¶~Lr @  ¢ åÌ?d hlF¶  @  ¢‚ æÌ?d ¨lfô´õ @  ¢ƒ çÌ?d èlý¾ @  ¢„ èÌ?d (m-ö™ö @  ¢… éÌ?d hm݉c @  ¢† êÌ?d ¨mý|aq @  ¢‡ ëÌ?d èmõ݇* @  ¢ˆ ìÌ?d (nh™'ë @  ¢‰ íÌ?d hn˜æÝ’ @  ¢Š îÌ?d ¨n¸ßl @  ¢‹ ïÌ?d ènF k @  ¢Œ ðÌ?d (o–Aƒ @  ¢ ñÌ?d hof>jú @  ¢Ž òÌ?d ¨oFËh @  ¢ óÌ?d èoã˰¿ @  ¢ ôÌ?d (p]  @  ¢‘ õÌ?d hp­jöt @  ¢’ öÌ?d ¨pŸôŠ @  ¢“ ÷Ì?d èpÕUa @  ¢” øÌ?d (qÆÙ‰ @  ¢• ùÌ?d hq6â#ð @  ¢– úÌ?d ¨q! @  ¢— ûÌ?d èq¶ÇU @  ¢˜ üÌ?d (rƒòg” @  ¢™ ýÌ?d hrsí @  ¢š þÌ?d ¨rSxŸ @  ¢› ÿÌ?d èr¢$qG @  ¢œ Í?d (srlý¯ @  ¢ Í?d hs‚Ö @  ¢ž Í?d ¨s¢æ( @  ¢Ÿ Í?d èsàú# @  ¢  Í?d (t® , @  ¢¡ Í?d htÿÑóU @  ¢¢ Í?d ¨tß$ñ« @  ¢£ Í?d ètDnP@ @  ¢¤ Í?d (u”&ܨ @  ¢¥  Í?d hudY&Ñ @  ¢¦  Í?d ¨uD¬$/ @  ¢§  Í?d èuL Ât @  ¢¨  Í?d (vÑIbµ @  ¢©  Í?d hv!6˜Ì @  ¢ª Í?d ¨vÚ2 @  ¢« Í?d èvÿÙY5 @  ¢¬ Í?d (w/‘ÕÝ @  ¢­ Í?d hwßî/¤ @  ¢® Í?d ¨wÿ-Z @  ¢¯ Í?d èwZõá @  ¢° Í?d (xnäyü @  ¢± Í?d hxž›ƒ… @  ¢² Í?d ¨x¾n{ @  ¢³ Í?d èx%$  @  ¢´ Í?d (yõl¬x @  ¢µ Í?d hyV @  ¢¶ Í?d ¨y%æTÿ @  ¢· Í?d èy-G²¤ @  ¢¸ Í?d (z°e @  ¢¹ Í?d hz@|è @  ¢º Í?d ¨z`‰êâ @  ¢» Í?d èz$9 @  ¢¼  Í?d ({ÓlœÑ @  ¢½ !Í?d h{#f¨ @  ¢¾ "Í?d ¨{ædV @  ¢¿ #Í?d è{çÏ @  ¢À $Í?d (|©nÀ @  ¢Á %Í?d h|ðÖ”¹ @  ¢ &Í?d ¨|Ð#–G @  ¢à 'Í?d è|Ki7¬ @  ¢Ä (Í?d (}›!»D @  ¢Å )Í?d h}k^A= @  ¢Æ *Í?d ¨}K«Cà @  ¢Ç +Í?d è}C ¥˜ @  ¢È ,Í?d (~ÞNY @  ¢É -Í?d h~.1ÿ  @  ¢Ê .Í?d ¨~ÄýÞ @  ¢Ë /Í?d è~ðÞ>Ù @  ¢Ì 0Í?d ( –²1 @  ¢Í 1Í?d hÐéHH @  ¢Î 2Í?d ¨uЀ'ðJ¶ @  ¢Ï 3Í?d èU’  @  ¢Ð 4Í?d @€;¢py @  ¢Ñ 5Í?d €€i¹Ÿ  @  ¢Ò 6Í?d À€ë(ˆþ @  ¢Ó 7Í?d "»²# @  ¢Ô 8Í?d @ *¥ý @  ¢Õ 9Í?d €ò1J¤ @  ¢Ö :Í?d Àp ]z @  ¢× ;Í?d ‚gÔ > @  ¢Ø <Í?d @‚åEà @  ¢Ù =Í?d €‚·^ô¹ @  ¢Ú >Í?d À‚5Ïãg @  ¢Û ?Í?d ƒôë—› @  ¢Ü @Í?d @ƒvz€E @  ¢Ý AÍ?d €ƒ$ao @  ¢Þ BÍ?d Àƒ¦ðx @  ¢ß CÍ?d „‰)c @  ¢à DÍ?d @„ ¸tÆ @  ¢á EÍ?d €„Y£›Ÿ @  ¢â FÍ?d€ À„¯ñç @  £ GÍ?d …‡#â @  £ HÍ?d @…²õÍ @  £ IÍ?d €…’àáy @  £ JÍ?d À…qö§ @  £ KÍ?d †É·ø™ @  £ LÍ?d @†K&ïG @  £ MÍ?d €†×_d @  £ NÍ?d À†UHº @  £ OÍ?d ‡<”ëf @  £ PÍ?d @‡¾ü¸ @  £ QÍ?d €‡)Wè  @  £ RÍ?d À‡«ÆÿÒ @  £ SÍ?d ˆÛ»Ý0 @  £ TÍ?d @ˆY*Êî @  £ UÍ?d €ˆh"D- @  £ VÍ?d Àˆê³Só @  £ WÍ?d ‰æi’à @  £ XÍ?d @‰dø… @  £ YÍ?d €‰󪑩 @  £ ZÍ?d À‰q;†w @  £ [Í?d ЍýˆI @  £ \Í?d @Š*lŸ— @  £ ]Í?d €Š¶Å/´ @  £ ^Í?d ÀŠ4T8j @  £ _Í?d ‹Ài¢j @  £ `Í?d @‹Bøµ´ @  £ aÍ?d €‹Õª¡ @  £ bÍ?d À‹W;¶Þ @  £ cÍ?d Œ ÷ë. @  £ dÍ?d @Œˆfüð @  £ eÍ?d €Œ¨hUƒ @  £ fÍ?d ÀŒ*ùB] @  £! gÍ?d &#ƒm @  £" hÍ?d @¤²”³ @  £# iÍ?d €3à€ @  £$ jÍ?d À±q—Ù @  £% kÍ?d Žh·™ç @  £& lÍ?d @Žê&Ž9 @  £' mÍ?d €Žv> @  £( nÍ?d ÀŽô)Ä @  £) oÍ?d ”Š @  £* pÍ?d @Æ @  £+ qÍ?d €ˆW‰r @  £, rÍ?d À Æž¬ @  £- sÍ?d ðšŒá @  £. tÍ?d @r ›? @  £/ uÍ?d €Cü @  £0 vÍ?d ÀÁ’" @  £1 wÍ?d ‘ÍHà @  £2 xÍ?d @‘OÙÔÌ @  £3 yÍ?d €‘Ø‹Àx @  £4 zÍ?d À‘Zצ @  £5 {Í?d ’ƒÜÙ˜ @  £6 |Í?d @’MÎF @  £7 }Í?d €’ä~e @  £8 ~Í?d À’ui» @  £9 Í?d “Þ²8 @  £: €Í?d @“„O¥æ @  £; Í?d €“±R @  £< ‚Í?d À“‘Œ¦Œ @  £= ƒÍ?d ”Ì@û| @  £> „Í?d @”NÑì¢ @  £? …Í?d €”ÀØCC @  £@ †Í?d À”BIT @  £A ‡Í?d •N“•­ @  £B ˆÍ?d @•Ì‚s @  £C ‰Í?d €•[P–Ç @  £D ŠÍ?d À•ÙÁ @  £E ‹Í?d –' @  £F ŒÍ?d @–‚–˜ù @  £G Í?d €–?(Ú @  £H ŽÍ?d À–œ®? @  £I Í?d —õ$œØ @  £J Í?d @—wµ‹ @  £K ‘Í?d €—à矲 @  £L ’Í?d À—bvˆl @  £M “Í?d ˜ ªŽ @  £N ”Í?d @˜š½P @  £O •Í?d €˜¡’3“ @  £P –Í?d À˜#$M @  £Q —Í?d ™/Ùå} @  £R ˜Í?d @™­Hò£ @  £S ™Í?d €™:æ @  £T šÍ?d À™¸‹ñÉ @  £U ›Í?d šaMÿ÷ @  £V œÍ?d @šãÜè) @  £W Í?d €šuX  @  £X žÍ?d ÀšýäOÔ @  £Y ŸÍ?d › ÙÕÔ @  £Z  Í?d @›‹H  @  £[ ¡Í?d €›Ö¾ @  £\ ¢Í?d À›ž‹Á` @  £] £Í?d œÃGœ @  £^ ¤Í?d @œAÖ‹N @  £_ ¥Í?d €œaØ"= @  £` ¦Í?d ÀœãI5ã @  £a §Í?d ï“ôÓ @  £b ¨Í?d @mã  @  £c ©Í?d €úP÷¹ @  £d ªÍ?d ÀxÁàg @  £e «Í?d ž¡îY @  £f ¬Í?d @ž#–ù‡ @  £g ­Í?d €ž¿?I¤ @  £h ®Í?d Àž=®^z @  £i ¯Í?d ŸT$ý¦ @  £j °Í?d @ŸÖµêx @  £k ±Í?d €ŸAçþÌ @  £l ²ÍuР?d ÀŸÃvé @  £m ³Í?d  öÿ™‹ @  £n ´Í?d X tnŽU @  £o µÍ?d ˜ Ef– @  £p ¶Í?d Ø Ç÷H @  £q ·Í?d ¡Ë-Öx @  £r ¸Í?d X¡I¼Á¦ @  £s ¹Í?d ˜¡ÞîÕ @  £t ºÍ?d Ø¡\ÂÌ @  £u »Í?d ¢…¹Ìò @  £v ¼Í?d X¢(Û, @  £w ½Í?d ˜¢›k @  £x ¾Í?d Ø¢|Ñ @  £y ¿Í?d £}óÀ @  £z ÀÍ?d X£Ÿìä @  £{ ÁÍ?d ˜£¾ðª @  £| ÂÍ?d Ø£Š/çt @  £} ÃÍ?d ¤×㺄 @  £~ ÄÍ?d X¤Ur­Z @  £ ÅÍ?d ˜¤8-2Š @  £€ ÆÍ?d ؤº¼%T @  £ ÇÍ?d ¥¶fäd @  £‚ ÈÍ?d X¥4÷óº @  £ƒ ÉÍ?d ˜¥£¥ç @  £„ ÊÍ?d Ø¥!4ðÐ @  £… ËÍ?d ¦øòþî @  £† ÌÍ?d X¦zcé0 @  £‡ ÍÍ?d ˜¦æÊY @  £ˆ ÎÍ?d ئd[NÍ @  £‰ ÏÍ?d § Ñí @  £Š ÐÍ?d X§@úÏ @  £‹ ÑÍ?d ˜§î{ @  £Œ ÒÍ?d اšƒù¥ @  £ ÓÍ?d ¨êþÛG @  £Ž ÔÍ?d X¨hoÌ™ @  £ ÕÍ?d ˜¨YgBZ @  £ ÖÍ?d بÛöU„ @  £‘ ×Í?d ©×,”´ @  £’ ØÍ?d X©U½ƒj @  £“ ÙÍ?d ˜©Âï—Þ @  £” ÚÍ?d Ø©@~€ @  £• ÛÍ?d ª™¸Ž> @  £– ÜÍ?d Xª)™à @  £— ÝÍ?d ˜ª‡€)à @  £˜ ÞÍ?d ت> @  £™ ßÍ?d «ñ,¤ @  £š àÍ?d X«s½³Ã @  £› áÍ?d ˜«äï§w @  £œ âÍ?d Ø«f~°© @  £ ãÍ?d ¬;²íY @  £ž äÍ?d X¬¹#ú‡ @  £Ÿ åÍ?d ˜¬™-Sô @  £  æÍ?d ج¼D* @  £¡ çÍ?d ­f… @  £¢ èÍ?d X­•÷’Ä @  ££ éÍ?d ˜­¥†p @  £¤ êÍ?d Ø­€4‘® @  £¥ ëÍ?d ®YòŸ @  £¦ ìÍ?d X®ÛcˆN @  £§ íÍ?d ˜®GÊ8m @  £¨ îÍ?d Ø®Å[/³ @  £© ïÍ?d ¯¬ÑŒo @  £ª ðÍ?d X¯.@›± @  £« ñÍ?d ˜¯¹ @  £¬ òÍ?d د;ƒ˜Û @  £­ óÍ?d °Áߊ– @  £® ôÍ?d X°CNH @  £¯ õÍ?d ˜°rF‹ @  £° öÍ?d ذð×U @  £± ÷Í?d ±ü Åe @  £² øÍ?d X±~œÒ» @  £³ ùÍ?d ˜±éÎÆ @  £´ úÍ?d رk_ÑÑ @  £µ ûÍ?d ²²™ßï @  £¶ üÍ?d X²0È1 @  £· ýÍ?d ˜²¬¡x @  £¸ þÍ?d ز.0oÌ @  £¹ ÿÍ?d ³úÞÔf @  £º Î?d X³xOø @  £» Î?d ˜³ï×  @  £¼ Î?d سmŒÀÒ @  £½ Î?d ´0@" @  £¾ Î?d X´²ÑŠü @  £¿ Î?d ˜´<Ø% @  £À Î?d Ø´¾I2à @  £Á Î?d µ²“óó @  £ Î?d Xµ0ä- @  £à  Î?d ˜µ§Pð™ @  £Ä  Î?d ص%ÁçG @  £Å  Î?d ¶üéy @  £Æ  Î?d X¶~–þ§ @  £Ç  Î?d ˜¶â?N„ @  £È Î?d ض`®YZ @  £É Î?d · $ú† @  £Ê Î?d X·‹µíX @  £Ë Î?d ˜·çùì @  £Ì Î?d Ø·žvî2 @  £Í Î?d ¸î ÌÐ @  £Î Î?d X¸lšÛ @  £Ï Î?d ˜¸]’UÍ @  £Ð Î?d ظßB @  £Ñ Î?d ¹ÓÙƒ# @  £Ò Î?d X¹QH”ý @  £Ó Î?d ˜¹Æ€I @  £Ô Î?d عD‹—— @  £Õ Î?d ºM™© @  £Ö Î?d XºÜŽw @  £× Î?d ˜ºƒu>T @  £Ø Î?d غä)Š @  £Ù Î?d »õÙ³Š @  £Ú  Î?d X»wH¤T @  £Û !Î?d ˜»à°à @  £Ü "Î?d Ø»b‹§> @  £Ý #Î?d ¼?GúÎ @  £Þ $Î?d X¼½Öí @  £ß %Î?d ˜¼ØDc @  £à &Î?d ؼIS½ @  £á 'Î?d ½“’ @  £â (Î?d€ X½T-ê @  ¤ )Î?d ˜½aGqw @  ¤ *Î?d ؽãÖf© @  ¤ +Î?d ¾ÿY“z @  ¤ ,Î?d X¾}È„¤ @  ¤ -Î?d ˜¾/Óký @  ¤ .Î?d ؾ­B|# @  ¤ /Î?d ¿ z€… @  ¤ 0Î?d X¿ˆë—[ @  ¤ 1Î?d ˜¿Úðx @uÐÀ  ¤ 2Î?d Ø¿XaoÜ @  ¤ 3Î?d 0À½Zkœ @  ¤ 4Î?d pÀ?Ë|B @  ¤ 5Î?d °ÀmГ @  ¤ 6Î?d ðÀïA„Å @  ¤ 7Î?d 0Á€ˆ$o @  ¤ 8Î?d pÁ3± @  ¤ 9Î?d °ÁPÜè @  ¤ :Î?d ðÁÒ“Ë6 @  ¤ ;Î?d 0ÂÎ>å @  ¤ <Î?d pÂL); @  ¤ =Î?d °Â–Æb @  ¤ >Î?d ðœѼ @  ¤ ?Î?d 0ÃVØ× @  ¤ @Î?d pÃÔI  @  ¤ AÎ?d °Ã†RùP @  ¤ BÎ?d ðÃÃîŽ @  ¤ CÎ?d 0ÄœFH“ @  ¤ DÎ?d pÄ×_M @  ¤ EÎ?d °ÄL̰ @  ¤ FÎ?d ðÄÎ]§Ê @  ¤ GÎ?d 0Ű’ Ð @  ¤ HÎ?d pÅ27 @  ¤! IÎ?d °Å`ØW @  ¤" JÎ?d ðÅâ‰Ï‰ @  ¤# KÎ?d 0Æþ:Z @  ¤$ LÎ?d pÆ|—-„ @  ¤% MÎ?d °Æ.ŒÂÝ @  ¤& NÎ?d ðÆ¬Õ @  ¤' OÎ?d 0Ç %)¥ @  ¤( PÎ?d plj´>{ @  ¤) QÎ?d °ÇÛ¯Ñ" @  ¤* RÎ?d ðÇY>Æü @  ¤+ SÎ?d 0Èì ó @  ¤, TÎ?d pÈn›- @  ¤- UÎ?d °È<€çt @  ¤. VÎ?d ðȾðª @  ¤/ WÎ?d 0ÉÑØP @  ¤0 XÎ?d pÉSIGÞ @  ¤1 YÎ?d °ÉR¨‡ @  ¤2 ZÎ?d ðɃÿY @  ¤3 [Î?d 0ÊŸLJŠ @  ¤4 \Î?d pÊÝ]T @  ¤5 ]Î?d °ÊOƲ  @  ¤6 ^Î?d ðÊÍW¥Ó @  ¤7 _Î?d 0Ë÷Ø`© @  ¤8 `Î?d pËuIww @  ¤9 aÎ?d °Ë'R˜. @  ¤: bÎ?d ðË¥Ãð @  ¤; cÎ?d 0Ì=F)í @  ¤< dÎ?d pÌ¿×>3 @  ¤= eÎ?d °ÌíÌÑj @  ¤> fÎ?d ðÌo]Æ´ @  ¤? gÎ?d 0Í¿•G< @  ¤@ hÎ?d pÍ=Pâ @  ¤A iÎ?d °Ío¿» @  ¤B jÎ?d ðÍ펨e @  ¤C kÎ?d 0Îñ]¶ @  ¤D lÎ?d pÎsJh @  ¤E mÎ?d °Î!‹¥1 @  ¤F nÎ?d ðΣ²ï @  ¤G oÎ?d 0Ï"NI @  ¤H pÎ?d pφ³Y— @  ¤I qÎ?d °ÏÔ¨¶Î @  ¤J rÎ?d ðÏV9¡ @  ¤K sÎ?d 0Ði,H° @  ¤L tÎ?d pÐë½_n @  ¤M uÎ?d °Ð¹¦°7 @  ¤N vÎ?d ðÐ;7§é @  ¤O wÎ?d 0ÑTþC @  ¤P xÎ?d pÑÖo @  ¤Q yÎ?d °Ñ„tÿÄ @  ¤R zÎ?d ðÑåè @  ¤S {Î?d 0ÒjÉ @  ¤T |Î?d pÒ˜û  @  ¤U }Î?d °ÒÊàåN @  ¤V ~Î?d ðÒHqò @  ¤W Î?d 0ÓŸhvi @  ¤X €Î?d pÓùa· @  ¤Y Î?d °ÓOâŽî @  ¤Z ‚Î?d ðÓÍs™0 @  ¤[ ƒÎ?d 0ÔUö?- @  ¤\ „Î?d pÔ×g(ó @  ¤] …Î?d °Ô…|Ǫ @  ¤^ †Î?d ðÔíÐt @  ¤_ ‡Î?d 0Õy"Wn @  ¤` ˆÎ?d pÕû³@° @  ¤a ‰Î?d °Õ©¨¯é @  ¤b ŠÎ?d ðÕ+9¸7 @  ¤c ‹Î?d 0Ö7¶Mä @  ¤d ŒÎ?d pÖµ'Z: @  ¤e Î?d °Öç<µc @  ¤f ŽÎ?d ðÖe­¢½ @  ¤g Î?d 0ו^ @  ¤h Î?d p×@IÅ @  ¤i ‘Î?d °×¦œ @  ¤j ’Î?d ð×ޱB @  ¤k “Î?d 0Ø%ºhM @  ¤l ”Î?d pا+“ @  ¤m •Î?d °Øõ0Ê @  ¤n –Î?d ðØw¡‡ @  ¤o —Î?d 0Ùh'¾ @  ¤p ˜Î?d pÙšù0` @  ¤q ™Î?d °ÙÈâß9 @  ¤r šÎ?d ðÙJsÈç @  ¤s ›Î?d 0ÚVü=4 @  ¤t œÎ?d pÚÔm*ê @  ¤u Î?d °Ú†vų @  ¤v žÎ?d ðÚçÒm @  ¤w ŸÎ?d 0Û>h @  ¤x  Î?d pÛ¼ùÉ @  ¤y ¡Î?d °Ûîâï @  ¤z ¢Î?d ðÛlsøN @  ¤{ £Î?d 0Üôö^S @  ¤| ¤Î?d pÜvgI @  ¤} ¥Î?d °Ü$|¦Ô @  ¤~ ¦Î?d ðÜ¦í±  @  ¤ §Î?d 0Ý•s³ @  ¤€ ¨Î?d pÝâm @  ¤ ©Î?d °ÝEùø4 @  ¤‚ ªÎ?d ðÝÇhïê @  ¤ƒ «Î?d 0ÞÛç9 @  ¤„ ¬Î?d pÞYv ç @  ¤… ­Î?d °Þ mâ¾ @  ¤† ®Î?d ðÞ‰üõ` @  ¤‡ ¯Î?d 0ß.Ä Æ @  ¤ˆ °Î?d p߬U @  ¤‰ ±Î?d uÐà/°ßþNñA @  ¤Š ²Î?d ðß|ßæŸ @  ¤‹ ³Î?d Hàä°í{ @  ¤Œ ´Î?d ˆàÄEï… @  ¤ µÎ?d Èà4:ü @  ¤Ž ¶Î?d áär™ @  ¤ ·Î?d HáÙb¢ˆ @  ¤ ¸Î?d ˆáù— v @  ¤‘ ¹Î?d Èá èZ @  ¤’ ºÎ?d ┬úÎ @  ¤“ »Î?d Hâ—ö¸ @  ¤” ¼Î?d ˆâ·ºü @  ¤• ½Î?d ÈâG|@… @  ¤– ¾Î?d ã—4Ìm @  ¤— ¿Î?d Hã2‡0 @  ¤˜ ÀÎ?d ˆã/Ç…Î @  ¤™ ÁÎ?d Èã߸· @  ¤š ÂÎ?d äÆöŒ¸ @  ¤› ÃÎ?d HäŬÎt @  ¤œ ÄÎ?d ˆäåYÌŠ @  ¤ ÅÎ?d Èä&6ó @  ¤ž ÆÎ?d åÅnº @  ¤Ÿ ÇÎ?d Håéx¦7 @  ¤  ÈÎ?d ˆåɤÉ @  ¤¡ ÉÎ?d Èå9ò^° @  ¤¢ ÊÎ?d 椶þq @  ¤£ ËÎ?d Hæ§ì¼½ @  ¤¤ ÌÎ?d ˆæ‡¾C @  ¤¥ ÍÎ?d ÈæwfD: @  ¤¦ ÎÎ?d ç§.ÈÒ @  ¤§ ÏÎ?d HçRϯB @  ¤¨ ÐÎ?d ˆçr:­¼ @  ¤© ÑÎ?d Èç‚EWÅ @  ¤ª ÒÎ?d è¶ºÛØ @  ¤« ÓÎ?d Hèµà™ @  ¤¬ ÔÎ?d ˆè•›ê @  ¤­ ÕÎ?d Èèeja“ @  ¤® ÖÎ?d éµ"í{ @  ¤¯ ×Î?d Héˆ2Öç @  ¤° ØÎ?d ˆé¨ÇÔ @  ¤± ÙÎ?d ÈéX¸.` @  ¤² ÚÎ?d êÅüŽ¡ @  ¤³ ÛÎ?d HêƦÌm @  ¤´ ÜÎ?d ˆêæSΓ @  ¤µ ÝÎ?d Èê,4ê @  ¤¶ ÞÎ?d ëÆd¸ @  ¤· ßÎ?d Hë®2æN @  ¤¸ àÎ?d ˆëŽÇä° @  ¤¹ áÎ?d Èë~¸É @  ¤º âÎ?d ìgöíÆ @  ¤» ãÎ?d Hìd¬¯  @  ¤¼ äÎ?d ˆìDY­ô @  ¤½ åÎ?d Èì´&W @  ¤¾ æÎ?d ídnÛe @  ¤¿ çÎ?d HíæÁÛ @  ¤À èÎ?d ˆíÆŠÃ% @  ¤Á éÎ?d Èí6õ9\ @  ¤ êÎ?d ™ @  ¤à ëÎ?d Hî¨ëÛQ @  ¤Ä ìÎ?d ˆîˆÙ¯ @  ¤Å íÎ?d Èîxa#Ö @  ¤Æ îÎ?d ï¨)¯> @  ¤Ç ïÎ?d Hï]ÈÈ® @  ¤È ðÎ?d ˆï}=ÊP @  ¤É ñÎ?d ÈïB0) @  ¤Ê òÎ?d ð3œŒ› @  ¤Ë óÎ?d Hð0ÆÎW @  ¤Ì ôÎ?d ˆð3Ì© @  ¤Í õÎ?d ÈðàL6Ð @  ¤Î öÎ?d ñ0º8 @  ¤Ï ÷Î?d Hñ ¤ @  ¤Ð øÎ?d ˆñ-áƒZ @  ¤Ñ ùÎ?d ÈñÝžy# @  ¤Ò úÎ?d ò@ÚÙâ @  ¤Ó ûÎ?d HòC€›. @  ¤Ô üÎ?d ˆòcu™Ð @  ¤Õ ýÎ?d Èò“ c© @  ¤Ö þÎ?d óCBïA @  ¤× ÿÎ?d Hó¹å¥‚ @  ¤Ø Ï?d ˆó™§| @  ¤Ù Ï?d Èóio] @  ¤Ú Ï?d ôp!®  @  ¤Û Ï?d Hôs{ìÆ @  ¤Ü Ï?d ˆôSŽî8 @  ¤Ý Ï?d Èô£ñA @  ¤Þ Ï?d õs¹˜© @  ¤ß Ï?d Hõ_¯„… @  ¤à Ï?d ˆõZ†{ @  ¤á  Ï?d Èõ%| @  ¤â  Ï?d€ öf¢Àe @  ¥  Ï?d Hö„¹Ê€ @  ¥  Ï?d ˆö¤LÈ~ @  ¥  Ï?d Èö‘zÉê @  ¥ Ï?d ÷A2E @  ¥ Ï?d H÷za}è @  ¥ Ï?d ˆ÷Z” @  ¥ Ï?d È÷dYÚ @  ¥ Ï?d øP¦V @  ¥ Ï?d Hø–µï) @  ¥ Ï?d ˆø¶@í× @  ¥ Ï?d ÈøƒvìC @  ¥ Ï?d ùS>`« @  ¥ Ï?d Hù =:­ @  ¥ Ï?d ˆù-È8S @  ¥ Ï?d Èù¾¤£° @  ¥ Ï?d ú#àq @  ¥ Ï?d HúåóºP @  ¥ Ï?d ˆúŸ® @  ¥ Ï?d Èúð0¹: @  ¥ Ï?d û x5Ò @  ¥ Ï?d Hû†œ4ä @  ¥  Ï?d ˆû¦i6 @  ¥ !Ï?d Èû˜¤“ @  ¥ "Ï?d üê` @  ¥ #Ï?d HüGùÙ7 @  ¥ $Ï?d ˆüg ÛÉ @  ¥ %Ï?d ÈüR:Ú] @  ¥ &Ï?d ý‚rVµ @  ¥ 'Ï?d HýÜq ³ @  ¥ (Ï?d ˆýü„M @  ¥ )Ï?d Èý~î² @  ¥ *Ï?d þãªß @  ¥! +Ï?d Hþ%¹«þ @  ¥" ,Ï?d ˆþL© @  ¥# -Ï?d Èþ0z¨” @  ¥$ .Ï?d ÿà2$| @  ¥% /Ï?d HÿÛa– @  ¥& 0Ï?d ˆÿû”h @  ¥' uÐ1Ï?d ÈÿÅY»k @  ¥( 2Ï?d Ší“š @  ¥) 3Ï?d `Lþ*» @  ¥* 4Ï?d  l (E @  ¥+ 5Ï?d àY=)Ñ @  ¥, 6Ï?d ‰u¥9 @  ¥- 7Ï?d `×vÿ? @  ¥. 8Ï?d  ÷ƒýÁ @  ¥/ 9Ï?d àdïf" @  ¥0 :Ï?d ù«Æã @  ¥1 ;Ï?d `?¸Â @  ¥2 <Ï?d  M}< @  ¥3 =Ï?d à*{|¨ @  ¥4 >Ï?d ú3ð@ @  ¥5 ?Ï?d `¬‡äg @  ¥6 @Ï?d  Œræ™ @  ¥7 AÏ?d ಿCš @  ¥8 BÏ?d «ñ°• @  ¥9 CÏ?d `mâ ´ @  ¥: DÏ?d  M J @  ¥; EÏ?d àx! Þ @  ¥< FÏ?d ¨i†6 @  ¥= GÏ?d `öjÜ0 @  ¥> HÏ?d  ÖŸÞÎ @  ¥? IÏ?d àúòd @  ¥@ JÏ?d g¶ÄÎ @  ¥A KÏ?d `¡¥}ï @  ¥B LÏ?d  P @  ¥C MÏ?d à´f~… @  ¥D NÏ?d d.òm @  ¥E OÏ?d `_}ʇ @  ¥F PÏ?d  ˆÈy @  ¥G QÏ?d àAEmz @  ¥H RÏ?d uºág @  ¥I SÏ?d `³©XF @  ¥J TÏ?d  “\Z¸ @  ¥K UÏ?d à¦j[, @  ¥L VÏ?d v"×Ä @  ¥M WÏ?d ` (! @  ¥N XÏ?d   Ô< @  ¥O YÏ?d à ›¸ß @  ¥P ZÏ?d ü´ @  ¥Q [Ï?d ` Àï ? @  ¥R \Ï?d   àÁ @  ¥S ]Ï?d à Õ,U @  ¥T ^Ï?d d‚½ @  ¥U _Ï?d ` £€ƒ‹ @  ¥V `Ï?d   ƒuu @  ¥W aÏ?d à ½¸$v @  ¥X bÏ?d ¤ö×y @  ¥Y cÏ?d ` bånX @  ¥Z dÏ?d   Bl¦ @  ¥[ eÏ?d à w&m2 @  ¥\ fÏ?d §náÚ @  ¥] gÏ?d ` ùm»Ü @  ¥^ hÏ?d   Ù˜¹" @  ¥_ iÏ?d à [òq @  ¥` jÏ?d ƶ¥° @  ¥a kÏ?d `¥‘ @  ¥b lÏ?d   Po @  ¥c mÏ?d àfû @  ¥d nÏ?d Å.“ @  ¥e oÏ?d `þ}«ù @  ¥f pÏ?d  Þˆ© @  ¥g qÏ?d ààE  @  ¥h rÏ?d ^›°¶ @  ¥i sÏ?d `˜ˆ — @  ¥j tÏ?d  ¸} i @  ¥k uÏ?d àK ý @  ¥l vÏ?d ]† @  ¥m wÏ?d `Ü @  ¥n xÏ?d  #õÞí @  ¥o yÏ?d à°™E @  ¥p zÏ?d -ÝåÏ @  ¥q {Ï?d `ëÎ\î @  ¥r |Ï?d  Ë;^ @  ¥s }Ï?d àþ _„ @  ¥t ~Ï?d .EÓl @  ¥u Ï?d `e7“Ù @  ¥v €Ï?d  E‘' @  ¥w Ï?d à{4$ @  ¥x ‚Ï?d bAÇ+ @  ¥y ƒÏ?d `¤R~  @  ¥z „Ï?d  „§|ô @  ¥{ …Ï?d ౑}` @  ¥| †Ï?d aÙñˆ @  ¥} ‡Ï?d `?Ú«Ž @  ¥~ ˆÏ?d  /©p @  ¥ ‰Ï?d àÐ#€ @  ¥€ ŠÏ?d MPƒA @  ¥ ‹Ï?d `‹C:` @  ¥‚ ŒÏ?d  «¶8ž @  ¥ƒ Ï?d àž€9  @  ¥„ ŽÏ?d Nȵâ @  ¥… Ï?d `u› @  ¥† Ï?d  Unö @  ¥‡ ‘Ï?d àk£*õ @  ¥ˆ ’Ï?d _\¦è @  ¥‰ “Ï?d `™OÉ @  ¥Š ”Ï?d  ¹º7 @  ¥‹ •Ï?d àŒŒ£ @  ¥Œ –Ï?d \ÄK @  ¥ —Ï?d `ÇÊM @  ¥Ž ˜Ï?d  "2ȳ @  ¥ ™Ï?d à±^SP @  ¥ šÏ?d ,ó‘ @  ¥‘ ›Ï?d `ê J° @  ¥’ œÏ?d  ÊüHN @  ¥“ Ï?d àÿÊIÚ @  ¥” žÏ?d /‚Å2 @  ¥• ŸÏ?d `‰fÄ @  ¥–  Ï?d  ©“Æú @  ¥— ¡Ï?d à—^cù @  ¥˜ ¢Ï?d Žö @  ¥™ £Ï?d `H)× @  ¥š ¤Ï?d  hö+) @  ¥› ¥Ï?d à]À*½ @  ¥œ ¦Ï?d ˆ¦U @  ¥ §Ï?d `Ó‹üS @  ¥ž ¨Ï?d  ó~þ­ @  ¥Ÿ ©Ï?d àqBþ @  ¥  ªÏ?d ìPâ? @  ¥¡ «Ï?d `*C[ @  ¥¢ ¬Ï?d   ¶Yà @  ¥£ ­Ï?d à?€Xt @  ¥¤ ®Ï?d ïÈÔœ @  ¥¥ ¯Ï?d `Ô›ìv @  ¥¦ °Ï?d  ônîˆuÐ  @  ¥§ ±Ï?d àÊ£K‹ @  ¥¨ ²Ï?d 8 »¨•í @  ¥© ³Ï?d x }»,Ì @  ¥ª ´Ï?d ¸ ]N.2 @  ¥« µÏ?d ø hx/¦ @  ¥¬ ¶Ï?d 8!¸0£N @  ¥­ ·Ï?d x!æ3ùH @  ¥® ¸Ï?d ¸!ÆÆû¶ @  ¥¯ ¹Ï?d ø!Uª`U @  ¥° ºÏ?d 8"ÈîÀ” @  ¥± »Ï?d x"ýyµ @  ¥² ¼Ï?d ¸".{K @  ¥³ ½Ï?d ø">zß @  ¥´ ¾Ï?d 8#Ëvö7 @  ¥µ ¿Ï?d x#Ââ @  ¥¶ ÀÏ?d ¸#½7àî @  ¥· ÁÏ?d ø#ƒúEí @  ¥¸ ÂÏ?d 8$š´¶â @  ¥¹ ÃÏ?d x$\§Ã @  ¥º ÄÏ?d ¸$|R = @  ¥» ÅÏ?d ø$Id © @  ¥¼ ÆÏ?d 8%™,€A @  ¥½ ÇÏ?d x%Ç/ÚG @  ¥¾ ÈÏ?d ¸%çÚØ¹ @  ¥¿ ÉÏ?d ø%Ë·bx @  ¥À ÊÏ?d 8&Vó¹ @  ¥Á ËÏ?d x&à{˜ @  ¥ ÌÏ?d ¸&°yf @  ¥à ÍÏ?d ø&…#xò @  ¥Ä ÎÏ?d 8'Ukô @  ¥Å ÏÏ?d x'n8Ìð @  ¥Æ ÐÏ?d ¸'NÍÎ @  ¥Ç ÑÏ?d ø'pk  @  ¥È ÒÏ?d 8(Dÿç @  ¥É ÓÏ?d x(‚ì^1 @  ¥Ê ÔÏ?d ¸(¢\Ï @  ¥Ë ÕÏ?d ø(—/][ @  ¥Ì ÖÏ?d 8)Ggѳ @  ¥Í ×Ï?d x)d‹µ @  ¥Î ØÏ?d ¸)9‘‰K @  ¥Ï ÙÏ?d ø)ªý¨ @  ¥Ð ÚÏ?d 8*7¹²i @  ¥Ñ ÛÏ?d x*ñª H @  ¥Ò ÜÏ?d ¸*Ñ_ ¶ @  ¥Ó ÝÏ?d ø*äi" @  ¥Ô ÞÏ?d 8+4!„Ê @  ¥Õ ßÏ?d x+’Å…ü @  ¥Ö àÏ?d ¸+²0‡ @  ¥× áÏ?d ø+Œý" @  ¥Ø âÏ?d 8,•³Ñ @  ¥Ù ãÏ?d x,S h/ @  ¥Ú äÏ?d ¸,sUjÑ @  ¥Û åÏ?d ø,FckE @  ¥Ü æÏ?d 8-–+ç­ @  ¥Ý çÏ?d x-È(½« @  ¥Þ èÏ?d ¸-èÝ¿U @  ¥ß éÏ?d ø-j· @  ¥à êÏ?d 8.÷ó£Ç @  ¥á ëÏ?d x.1àæ @  ¥â ìÏ?d€ ¸.ÐRï @  ¦ íÏ?d ø.%¦¥ @  ¦ îÏ?d 8/Ôm*M @  ¦ ïÏ?d x/*wéJ @  ¦ ðÏ?d ¸/ ‚ë´ @  ¦ ñÏ?d ø/úýÍ @  ¦ òÏ?d 80D#­ @  ¦ óÏ?d x0L‚K$ @  ¦ ôÏ?d ¸0lwIÚ @  ¦ õÏ?d ø0œ³£ @  ¦ öÏ?d 81L@?K @  ¦ ÷Ï?d x1× ž  @  ¦ øÏ?d ¸1÷ÿœ^ @  ¦ ùÏ?d ø1€f' @  ¦ úÏ?d 82šÄÆæ @  ¦ ûÏ?d x2?Ä] @  ¦ üÏ?d ¸21£ @  ¦ ýÏ?d ø2ïNæÚ @  ¦ þÏ?d 83?j2 @  ¦ ÿÏ?d x37ߢÖ @  ¦ Ð?d ¸3* ( @  ¦ Ð?d ø3çUZQ @  ¦ Ð?d 84þ©^ @  ¦ Ð?d x4öºO @  ¦ Ð?d ¸4ÖOMû @  ¦ Ð?d ø4&0·‚ @  ¦ Ð?d 85öx;j @  ¦ Ð?d x5m2š @  ¦ Ð?d ¸5Mǘ @  ¦  Ð?d ø5½¸b @  ¦  Ð?d 86 üÂÇ @  ¦  Ð?d x6”ú=Ì @  ¦  Ð?d ¸6´?2 @  ¦!  Ð?d ø6DpÅK @  ¦" Ð?d 87”8I£ @  ¦# Ð?d x7j"Ф @  ¦$ Ð?d ¸7J׈Z @  ¦% Ð?d ø7º¨r# @  ¦& Ð?d 88ŽWþ> @  ¦' Ð?d x8†öe @  ¦( Ð?d ¸8¦› @  ¦) Ð?d ø8V|àâ @  ¦* Ð?d 89†4l  @  ¦+ Ð?d x9~Íá @  ¦, Ð?d ¸9=‹Ï @  ¦- Ð?d ø9Íô5f @  ¦. Ð?d 8:P°•§ @  ¦/ Ð?d x:õ°M @  ¦0 Ð?d ¸:ÕEOâ @  ¦1 Ð?d ø:%:µ› @  ¦2 Ð?d 8;õr9s @  ¦3 Ð?d x;–ßè @  ¦4  Ð?d ¸;¶*ÁV @  ¦5 !Ð?d ø;FU;/ @  ¦6 "Ð?d 8<_È  @  ¦7 #Ð?d x<Wº.{ @  ¦8 $Ð?d ¸<wO,… @  ¦9 %Ð?d ø<‡0Öü @  ¦: &Ð?d 8=WxZ @  ¦; 'Ð?d x=Ì2ûÿ @  ¦< (Ð?d ¸=ìÇù @  ¦= )Ð?d ø=¸x @  ¦> *Ð?d 8>ü£¹ @  ¦? +Ð?d x>›ýZ  @  ¦@ ,Ð?d ¸>»XÞ @  ¦A -Ð?d ø>Kw¢§ @  ¦B .Ð?d 8?›?.O @  ¦C /Ð?d x?e%íH @  ¦D 0Ð?duÐ@7 ¸?EÐï¶ @  ¦E 1Ð?d ø?µ¯Ï @  ¦F 2Ð?d P@v¯ó @  ¦G 3Ð?d @ÜÆ\ˆ @  ¦H 4Ð?d Ð@^WKV @  ¦I 5Ð?d Aüñ* @  ¦J 6Ð?d PA~`=Ç @  ¦K 7Ð?d AGN‰  @  ¦L 8Ð?d ÐAÅßžÒ @  ¦M 9Ð?d B*uÓ´ @  ¦N :Ð?d PB¨äÄj @  ¦O ;Ð?d B¯€ ñ @  ¦P <Ð?d ÐB-/ @  ¦Q =Ð?d C·` @  ¦R >Ð?d PC &h¾ @  ¦S ?Ð?d C<¿’T @  ¦T @Ð?d ÐC¾.…Š @  ¦U AÐ?d DÕŽ›" @  ¦V BÐ?d PDWŒü @  ¦W CÐ?d DýÚ‡ @  ¦X DÐ?d ÐDKhY @  ¦Y EÐ?d EÝí  @  ¦Z FÐ?d PE_|È @  ¦[ GÐ?d EfRª @  ¦\ HÐ?d ÐEäýÝ @  ¦] IÐ?d F ið» @  ¦^ JÐ?d PF‰øçe @  ¦_ KÐ?d FŸš N @  ¦` LÐ?d ÐF  @  ¦a MÐ?d G¿­{ß @  ¦b NÐ?d PG= @  §. üÐ?d èrš˜à @  §/ ýÐ?d (s[»˜5 @  §0 þÐ?d hsÙ*ë @  §1 ÿÐ?d ¨sO[r @  §2 Ñ?d èsÍʘ¬ @  §3 Ñ?d (tc#}é @  §4 Ñ?d htá²j7 @  §5 Ñ?d ¨t…ÅÆ6 @  §6 Ñ?d ètTÑè @  §7 Ñ?d (uk@ïÝ @  §8 Ñ?d huéÑø @  §9 Ñ?d ¨u¶·% @  §: Ñ?d èu—' û @  §;  Ñ?d (v½Äp @  §<  Ñ?d hv?U® @  §=  Ñ?d ¨v["­¯ @  §>  Ñ?d èvÙ³ºq @  §?  Ñ?d (w§›† @  §@ Ñ?d hw%–ŒX @  §A Ñ?d ¨w¼¡¡’ @  §B Ñ?d èw>0¶L @  §C Ñ?d (x½h, @  §D Ñ?d hx?ù;Å @  §E Ñ?d ¨x[Ž—Ä @  §F Ñ?d èxÙ€ @  §G Ñ?d (yµ ¾/ @  §H Ñ?d hy7š©ñ @  §I Ñ?d ¨yËýæ× @  §J Ñ?d èyIlñ  @  §K Ñ?d (zcG‚ @  §L Ñ?d hzáP\ @  §M Ñ?d ¨z…iü] @  §N Ñ?d èzøëƒ @  §O Ñ?d ({ÆMëV @  §P Ñ?d h{DÜüˆ @  §Q Ñ?d ¨{@\èž @  §R  Ñ?d è{ÂÍÿ@ @  §S !Ñ?d (|l$ @  §T "Ñ?d h|îµ Û @  §U #Ñ?d ¨|ŠÂ¡Ú @  §V $Ñ?d è|S¶ @  §W %Ñ?d (}dGˆ1 @  §X &Ñ?d h}æÖŸï @  §Y 'Ñ?d ¨}±ÐÉ @  §Z (Ñ?d è}˜ Ç @  §[ )Ñ?d (~²Ãqœ @  §\ *Ñ?d h~0RfB @  §] +Ñ?d ¨~T%ÊC @  §^ ,Ñ?d è~Ö´Ý @  §_ -Ñ?d (úø @  §` .Ñ?d h„–í& @  §a /Ñ?d ¨uЀ'¡Àì @  §b 0Ñ?d èŸ0×2 @  §c 1Ñ?d @€F)#  @  §d 2Ñ?d €€fÜ!ò @  §e 3Ñ?d À€ Ï˜Ó @  §f 4Ñ?d p‡; @  §g 5Ñ?d @NJ±8 @  §h 6Ñ?d €n¿³Æ @  §i 7Ñ?d À0¼éÀ @  §j 8Ñ?d ‚­øI @  §k 9Ñ?d @‚˜ÎH• @  §l :Ñ?d €‚¸;Jk @  §m ;Ñ?d À‚~(óJ @  §n <Ñ?d ƒ®`¢ @  §o =Ñ?d @ƒ= äA @  §p >Ñ?d €ƒùæ¿ @  §q ?Ñ?d ÀƒKMò˜ @  §r @Ñ?d „R— @  §s AÑ?d @„g5 @  §t BÑ?d €„GÀý @  §u CÑ?d À„Ó»Ü @  §v DÑ?d …Q›74 @  §w EÑ?d @…oV’7 @  §x FÑ?d €…O£É @  §y GÑ?d À… ÊÏ @  §z HÑ?d †Œäj @  §{ IÑ?d @†¹Òkš @  §| JÑ?d €†™'id @  §} KÑ?d À†_4ÐE @  §~ LÑ?d ‡|\­ @  § MÑ?d @‡@GÖ] @  §€ NÑ?d €‡`²Ô£ @  § OÑ?d À‡[áìI @  §‚ PÑ?d ˆo`T @  §ƒ QÑ?d @ˆZ(aÀ @  §„ RÑ?d €ˆzÝc> @  §… SÑ?d Àˆ¼ÎÚ @  §† TÑ?d ‰l†V÷ @  §‡ UÑ?d @‰RKóô @  §ˆ VÑ?d €‰r¾ñ  @  §‰ WÑ?d À‰,½«  @  §Š XÑ?d бù Í @  §‹ YÑ?d @Š„Ï Y @  §Œ ZÑ?d €Š¤:§ @  § [Ñ?d ÀŠb)±† @  §Ž \Ñ?d ‹²a=n @  § ]Ñ?d @‹! ¦ @  § ^Ñ?d €‹ø¤s @  §‘ _Ñ?d À‹§¥E @  §’ `Ñ?d Œ¾RVJ @  §“ aÑ?d @Œ‹dWÞ @  §” bÑ?d €Œ«‘U  @  §• cÑ?d ÀŒm‚ì @  §– dÑ?d ½Ê`é @  §— eÑ?d @ƒÅê @  §˜ fÑ?d €£òÇ @  §™ gÑ?d Àýñ @  §š hÑ?d Ž`µ=Ó @  §› iÑ?d @ŽUƒ¹ @  § kÑ?d À޳e‡˜ @  §ž lÑ?d c- p @  §Ÿ mÑ?d @áG·# @  §  nÑ?d €Á²µÝ @  §¡ oÑ?d Àúá7 @  §¢ pÑ?d D?1… @  §£ qÑ?d @q 0 @  §¤ rÑ?d €Qü2ï @  §¥ sÑ?d À—ï‹Î @  §¦ tÑ?d ‘G§& @  §§ uÑ?d @‘yj¢% @  §¨ vÑ?d €‘YŸ Û @  §© wÑ?d À‘œúÝ @  §ª xÑ?d ’šØZ @  §« yÑ?d @’¯î[ˆ @  §¬ zÑ?d €’Yv @  §­ {Ñ?d À’IàW @  §® |Ñ?d “™@l¿ @  §¯ }Ñ?d @“ ,÷\ @  §° ~Ñ?d €“*Ùõ¢ @  §± Ñ?d À“a«µ @  §² €Ñ?d ”xåF @  §³ Ñ?d @”MÓGŒ @  §´ ‚Ñ?d €”m&Er @  §µ ƒÑ?d À”«5üS @  §¶ „Ñ?d •{}p» @  §· …Ñ?d @•E°Õ¸ @  §¸ †Ñ?d €•eE×F @  §¹ ‡Ñ?d À•;F@ @  §º ˆÑ?d –¦- @  §» ‰Ñ?d @–“4, @  §¼ ŠÑ?d €–³Á.ë @  §½ ‹Ñ?d À–uÒ—Ê @  §¾ ŒÑ?d —¥š" @  §¿ Ñ?d @—‰÷¡ã @  §À ŽÑ?d €—©£ @  §Á Ñ?d À—’Q›÷ @  § Ñ?d ˜¦®ê @  §à ‘Ñ?d @˜“˜~ @  §Ä ’Ñ?d €˜³m€ @  §Å “Ñ?d À˜u~­¡ @  §Æ ”Ñ?d ™¥6!I @  §Ç •Ñ?d @™›û„J @  §È –Ñ?d €™»†´ @  §É —Ñ?d À™å ܲ @  §Ê ˜Ñ?d šxI|s @  §Ë ™Ñ?d @šM}ç @  §Ì šÑ?d €šmŠ @  §Í ›Ñ?d À𫙯8 @  §Î œÑ?d ›{ÑJÐ @  §Ï Ñ?d @›è½Ñ3 @  §Ð žÑ?d €›ÈHÓÍ @  §Ñ ŸÑ?d À›n¬Òû @  §Ò  Ñ?d œwâ!ô @  §Ó ¡Ñ?d @œBÔ ` @  §Ô ¢Ñ?d €œb!"ž @  §Õ £Ñ?d Àœ¤2›¿ @  §Ö ¤Ñ?d tzW @  §× ¥Ñ?d @J·²T @  §Ø ¦Ñ?d €jB°ª @  §Ù §Ñ?d À4Aê¬ @  §Ú ¨Ñ?d ž©Jm @  §Û ©Ñ?d @žœ3Kù @  §Ü ªÑ?d €ž¼ÆI @  §Ý «Ñ?d ÀžzÕð& @  §Þ ¬Ñ?d Ÿª|Î @  §ß ­Ñ?d @Ÿ(÷À @  §à ®Ñ?d €ŸÂc @  §á ¯ÑuР?d ÀŸ3Qú‰ @  §â °Ñ?d€  jÀ0½ @  ¨ ±Ñ?d X ¾·y @  ¨ ²Ñ?d ˜ žB{þ @  ¨ ³Ñ?d Ø 92 @  ¨ ´Ñ?d ¡MPµÚ @  ¨ µÑ?d X¡½/O£ @  ¨ ¶Ñ?d ˜¡ÚM] @  ¨ ·Ñ?d Ø¡ kH! @  ¨ ¸Ñ?d ¢/èà @  ¨ ¹Ñ?d X¢`P™ @  ¨ ºÑ?d ˜¢@¥g @  ¨ »Ñ?d Ø¢CÿR« @  ¨ ¼Ñ?d £“·ÞC @  ¨ ½Ñ?d X£cÈ$: @  ¨ ¾Ñ?d ˜£C=&Ä @  ¨ ¿Ñ?d Ø£všSy @  ¨ ÀÑ?d ¤oÔ v @  ¨ ÁÑ?d X¤Ÿ«Z @  ¨ ÂÑ?d ˜¤¿^Xñ @  ¨ ÃÑ?d ؤ¼= @  ¨ ÄÑ?d ¥lL–Õ @  ¨ ÅÑ?d X¥œ3l¬ @  ¨ ÆÑ?d ˜¥¼ÆnR @  ¨ ÇÑ?d Ø¥,wk. @  ¨ ÈÑ?d ¦±3Ëï @  ¨ ÉÑ?d X¦AL1– @  ¨ ÊÑ?d ˜¦a¹3h @  ¨ ËÑ?d ئbãq¤ @  ¨ ÌÑ?d §²«ýL @  ¨ ÍÑ?d X§BÔ5 @  ¨ ÎÑ?d ˜§b!Ë @  ¨ ÏÑ?d ا+g{  @  ¨ ÐÑ?d ¨˜÷ @  ¨! ÑÑ?d X¨ïç o @  ¨" ÒÑ?d ˜¨Ï‘ @  ¨# ÓÑ?d بÌHM] @  ¨$ ÔÑ?d ©Áµ @  ¨% ÕÑ?d X©ì;Ì @  ¨& ÖÑ?d ˜©ÌŠ92 @  ¨' ×Ñ?d Ø©\;«;q @  ¨2 âÑ?d ˜¬^9 @  ¨3 ãÑ?d ج{C @  ¨4 äÑ?d ­ÍL÷« @  ¨5 åÑ?d X­=3 Ò @  ¨6 æÑ?d ˜­Æ, @  ¨7 çÑ?d Ø­w P @  ¨8 èÑ?d ®3ª‘ @  ¨9 éÑ?d X®àLPè @  ¨: êÑ?d ˜®À¹R @  ¨; ëÑ?d Ø®ÃãÚ @  ¨< ìÑ?d ¯«œ2 @  ¨= íÑ?d X¯ãÔfK @  ¨> îÑ?d ˜¯Ã!dµ @  ¨? ïÑ?d د$`ç @  ¨@ ðÑ?d °š¾ U @  ¨A ñÑ?d X°jÁZ, @  ¨B òÑ?d ˜°J4XÒ @  ¨C óÑ?d ذIn @  ¨D ôÑ?d ±™&–ö @  ¨E õÑ?d X±iYl @  ¨F öÑ?d ˜±I¬nq @  ¨G ÷Ñ?d رÙk  @  ¨H øÑ?d ²DYËÌ @  ¨I ùÑ?d X²´&1µ @  ¨J úÑ?d ˜²”Ó3K @  ¨K ûÑ?d ز—‰q‡ @  ¨L üÑ?d ³GÁýo @  ¨M ýÑ?d X³·¾ @  ¨N þÑ?d ˜³—Kè @  ¨O ÿÑ?d سroDî @  ¨P Ò?d ´k!·á @  ¨Q Ò?d X´›^M˜ @  ¨R Ò?d ˜´»«Of @  ¨S Ò?d Ø´¸ñ ª @  ¨T Ò?d µh¹B @  ¨U Ò?d Xµ˜Æ{; @  ¨V Ò?d ˜µ¸3yÅ @  ¨W Ò?d ص(‚|¹ @  ¨X Ò?d ¶µÆÜx @  ¨Y  Ò?d X¶E¹& @  ¨Z  Ò?d ˜¶eL$ÿ @  ¨[  Ò?d ضff3 @  ¨\  Ò?d ·¶^êÛ @  ¨]  Ò?d X·F!¢ @  ¨^ Ò?d ˜·fÔ\ @  ¨_ Ò?d Ø·/’lœ @  ¨` Ò?d ¸mà @  ¨a Ò?d X¸ëø @  ¨b Ò?d ˜¸Ëç @  ¨c Ò?d ظȽZÊ @  ¨d Ò?d ¹õÖ" @  ¨e Ò?d X¹èŠ,[ @  ¨f Ò?d ˜¹È.¥ @  ¨g Ò?d عXÎ+Ù @  ¨h Ò?d ºÅŠ‹ @  ¨i Ò?d Xº5õqa @  ¨j Ò?d ˜ºsŸ @  ¨k Ò?d غZ1S @  ¨l Ò?d »Æ½» @  ¨m Ò?d X»6mG @  ¨n Ò?d ˜»˜E< @  ¨o Ò?d Ø»Óo% @  ¨p  Ò?d ¼Ê!ÖŸ @  ¨q !Ò?d X¼:^,æ @  ¨r "Ò?d ˜¼«. @  ¨s #Ò?d ؼñlÔ @  ¨t $Ò?d ½ɹà< @  ¨u %Ò?d X½9ÆE @  ¨v &Ò?d ˜½3» @  ¨w 'Ò?d ؽ‰‚Ç @  ¨x (Ò?d ¾ƽ @  ¨y )Ò?d X¾ä¹G @  ¨z *Ò?d ˜¾ÄLE @  ¨{ +Ò?d ؾÇM @  ¨| ,Ò?d ¿^‹¥ @  ¨} -Ò?d X¿ç!qÜ @  ¨~ .Ò?d ˜¿ÇÔs" @uÐÀ  ¨ /Ò?d Ø¿ÃÃ;A @  ¨€ 0Ò?d 0À§3j @  ¨ 1Ò?d pÀWLj @  ¨‚ 2Ò?d °Àw¹’” @  ¨ƒ 3Ò?d ðÀtãÐX @  ¨„ 4Ò?d 0Á¤«\° @  ¨… 5Ò?d pÁTÔ¦É @  ¨† 6Ò?d °Át!¤7 @  ¨‡ 7Ò?d ðÁä¡K @  ¨ˆ 8Ò?d 0ÂyÔŠ @  ¨‰ 9Ò?d p‰«ûó @  ¨Š :Ò?d °Â©^ù  @  ¨‹ ;Ò?d ðª»Á @  ¨Œ <Ò?d 0ÃzL7) @  ¨ =Ò?d pÊ3ÍP @  ¨Ž >Ò?d °ÃªÆÏ® @  ¨ ?Ò?d ðßaº @  ¨ @Ò?d 0Ć/I @  ¨‘ AÒ?d pÄvP³e @  ¨’ BÒ?d °ÄV¥±› @  ¨“ CÒ?d ðÄUÿóW @  ¨” DÒ?d 0Å…·¿ @  ¨• EÒ?d pÅuÈ…Æ @  ¨– FÒ?d °ÅU=‡8 @  ¨— GÒ?d ðÅÅŒ‚D @  ¨˜ HÒ?d 0ÆXÈ"… @  ¨™ IÒ?d pƨ·Øü @  ¨š JÒ?d °ÆˆBÚ @  ¨› KÒ?d ðÆ‹˜Î @  ¨œ LÒ?d 0Ç[P& @  ¨ MÒ?d pÇ«/î_ @  ¨ž NÒ?d °Ç‹Úì¡ @  ¨Ÿ OÒ?d ðÇœ’a @  ¨  PÒ?d 0Èöc| @  ¨¡ QÒ?d pÈä @  ¨¢ RÒ?d °È&éæû @  ¨£ SÒ?d ðÈ%³¤7 @  ¨¤ TÒ?d 0Éõû(ß @  ¨¥ UÒ?d pɄҦ @  ¨¦ VÒ?d °É%qÐX @  ¨§ WÒ?d ðɵÀÕ$ @  ¨¨ XÒ?d 0Ê(„uå @  ¨© YÒ?d pÊØûœ @  ¨ª ZÒ?d °Êøb @  ¨« [Ò?d ðÊûTÏ® @  ¨¬ \Ò?d 0Ë+CF @  ¨­ ]Ò?d pËÛc¹? @  ¨® ^Ò?d °Ëû–»Á @  ¨¯ _Ò?d ðË>aÛm @  ¨° `Ò?d 0Ì'/(b @  ¨± aÒ?d pÌ×PÒ @  ¨² bÒ?d °Ì÷¥Ðå @  ¨³ cÒ?d ðÌôÿ’) @  ¨´ dÒ?d 0Í$·Á @  ¨µ eÒ?d pÍÔÈä¸ @  ¨¶ fÒ?d °Íô=æF @  ¨· gÒ?d ðÍdŒã: @  ¨¸ hÒ?d 0ÎùÈCû @  ¨¹ iÒ?d pÎ ·¹‚ @  ¨º jÒ?d °Î)B»| @  ¨» kÒ?d ðÎ*ù° @  ¨¼ lÒ?d 0ÏúPuX @  ¨½ mÒ?d pÏ /! @  ¨¾ nÒ?d °Ï*Úß @  ¨¿ oÒ?d ðÏÍ›õ @  ¨À pÒ?d 0ÐsEI? @  ¨Á qÒ?d pЃ:³F @  ¨ rÒ?d °Ð£Ï±¸ @  ¨à sÒ?d ðР•ót @  ¨Ä tÒ?d 0ÑpÝœ @  ¨Å uÒ?d pÑ€¢…å @  ¨Æ vÒ?d °Ñ W‡ @  ¨Ç wÒ?d ðÑ0æ‚g @  ¨È xÒ?d 0Ò­¢"¦ @  ¨É yÒ?d pÒ]ÝØß @  ¨Ê zÒ?d °Ò}(Ú! @  ¨Ë {Ò?d ðÒ~r˜í @  ¨Ì |Ò?d 0Ó®: @  ¨Í }Ò?d pÓ^Eî| @  ¨Î ~Ò?d °Ó~°ì‚ @  ¨Ï Ò?d ðÓVÑÍ­ @  ¨Ð €Ò?d 0ÔOŸ>¢ @  ¨Ñ Ò?d pÔ¿àÄÛ @  ¨Ò ‚Ò?d °ÔŸÆ% @  ¨Ó ƒÒ?d ðÔœO„é @  ¨Ô „Ò?d 0ÕL @  ¨Õ …Ò?d pÕ¼xòx @  ¨Ö †Ò?d °Õœð† @  ¨× ‡Ò?d ðÕ <õú @  ¨Ø ˆÒ?d 0Ö‘xU; @  ¨Ù ‰Ò?d pÖa¯B @  ¨Ú ŠÒ?d °ÖAò­¼ @  ¨Û ‹Ò?d ðÖB¨ïp @  ¨Ü ŒÒ?d 0×’àc˜ @  ¨Ý Ò?d p×bŸ™á @  ¨Þ ŽÒ?d °×Bj› @  ¨ß Ò?d ð× ,åß @  ¨à Ò?d 0Ø?Ói @  ¨á ‘Ò?d pØϬ“» @  ¨â ’Ò?d€ °Ø›šã @  © “Ò?d ðØy‡ @  © ”Ò?d 0Ù©É î @  © •Ò?d pÙœÿ z @  © –Ò?d °Ù¼ „ @  © —Ò?d ðÙâ R‚ @  © ˜Ò?d 0ÚMòC @  © ™Ò?d pÚA€W@ @  © šÒ?d °ÚauU¾ @  © ›Ò?d ðÚ§fìŸ @  © œÒ?d 0Ûw.`w @  © Ò?d pÛBaã @  © žÒ?d °Ûbíc @  © ŸÒ?d ðÛÄ b+ @  ©  Ò?d 0ÜÝG‘$ @  © ¡Ò?d pÜN+ Ç @  © ¢Ò?d °ÜnÞ9 @  © £Ò?d ðܨͱ @  © ¤Ò?d 0Ýx…=ð @  © ¥Ò?d pÝM³š @  © §Ò?d ðÝ3Edœ @  © ¨Ò?d 0Þ®Ä] @  © ©Ò?d pÞÌa^ @  © ªÒ?d °Þ°9c  @  © «Ò?d ðÞv*Ú @  © ¬Ò?d 0ߦbVi @  © ­Ò?d pß“TWý @  © ®Ò?d uÐà/°ß³¡U @  © ¯Ò?d ð߈òmé @  © °Ò?d Hà‘V3 @  © ±Ò?d ˆà±Xšl @  © ²Ò?d Èà3ɲ @  ©! ³Ò?d ᧯¥ @  ©" ´Ò?d Há%’¸{ @  ©# µÒ?d ˆá²À¬Ï @  ©$ ¶Ò?d Èá0Q» @  ©% ·Ò?d âq‡V @  ©& ¸Ò?d HâóAÖ @  ©' ¹Ò?d ˆâo¿ñõ @  ©( ºÒ?d Èâí.æ+ @  ©) »Ò?d ãyäÄ< @  ©* ¼Ò?d HãûuÓâ @  ©+ ½Ò?d ˆãl'ÇV @  ©, ¾Ò?d Èãî¶Ðˆ @  ©- ¿Ò?d ä#Ý ~ @  ©. ÀÒ?d Hä¡L7  @  ©/ ÁÒ?d ˆäD¹c @  ©0 ÂÒ?d ÈäÕ®½ @  ©1 ÃÒ?d 册ª @  ©2 ÄÒ?d H厛t @  ©3 ÅÒ?d ˆå“ÜÀ @  ©4 ÆÒ?d ÈåM˜ @  ©5 ÇÒ?d æP›u @  ©6 ÈÒ?d HæÒ bÙ @  ©7 ÉÒ?d ˆæN£Òú @  ©8 ÊÒ?d ÈæÌ2Å$ @  ©9 ËÒ?d çXøç3 @  ©: ÌÒ?d HçÚiðí @  ©; ÍÒ?d ˆçM;äY @  ©< ÎÒ?d ÈçϪó‡ @  ©= ÏÒ?d èB—P® @  ©> ÐÒ?d HèÀGp @  ©? ÑÒ?d ˆèNè‘ @  ©@ ÒÒ?d ÈèÌžÿO @  ©A ÓÒ?d éXTÝX @  ©B ÔÒ?d HéÚÅʆ @  ©C ÕÒ?d ˆéM—Þ2 @  ©D ÖÒ?d ÈéÏÉì @  ©E ×Ò?d êŽÐ$õ @  ©F ØÒ?d Hê A3+ @  ©G ÙÒ?d ˆêèƒ @  ©H ÚÒ?d Èêy”Ö @  ©I ÛÒ?d 놳¶Á @  ©J ÜÒ?d Hë"¡ @  ©K ÝÒ?d ˆë“pµ« @  ©L ÞÒ?d Èëá¢u @  ©M ßÒ?d ì,ÚG’ @  ©N àÒ?d Hì®KPL @  ©O áÒ?d ˆìŸCÞ @  ©P âÒ?d ÈìÒÉQ @  ©Q ãÒ?d í‰ëF @  ©R äÒ?d Hí ‰ü˜ @  ©S åÒ?d ˆíœÛè, @  ©T æÒ?d ÈíJÿò @  ©U çÒ?d î_œë @  ©V èÒ?d HîÝ 5 @  ©W éÒ?d ˆîA¤µ @  ©X êÒ?d ÈîÃ5¢È @  ©Y ëÒ?d ïWÿ€ß @  ©Z ìÒ?d HïÕn— @  ©[ íÒ?d ˆïB<ƒµ @  ©\ îÒ?d ÈïÀ­”k @  ©] ïÒ?d ðDZí @  ©^ ðÒ?d HðE 3 @  ©_ ñÒ?d ˆðe.¹@ @  ©` òÒ?d Èðç¿®ž @  ©a óÒ?d ñsuŒ‰ @  ©b ôÒ?d Hññä›W @  ©c õÒ?d ˆñf¶ã @  ©d öÒ?d Èñä'˜= @  ©e ÷Ò?d ò¥ñu$ @  ©f øÒ?d Hò'`bú @  ©g ùÒ?d ˆò»ÉÒÙ @  ©h úÒ?d Èò9XÅ @  ©i ûÒ?d ó­’ç @  ©j üÒ?d Hó/ðÎ @  ©k ýÒ?d ˆó¸Qäz @  ©l þÒ?d Èó:Àó¤ @  ©m ÿÒ?d ô• Ì @  ©n Ó?d Hô› @  ©o Ó?d ˆô&“›Ñ @  ©p Ó?d Èô¤Œ @  ©q Ó?d õ0È® @  ©r Ó?d Hõ²Y¹Æ @  ©s Ó?d ˆõ% ­r @  ©t Ó?d Èõ§šº¬ @  ©u Ó?d öæLWµ @  ©v Ó?d HödÝ@k @  ©w  Ó?d ˆöøtðH @  ©x  Ó?d Èözåç– @  ©y  Ó?d ÷î/Å @  ©z  Ó?d H÷l¾Ò_ @  ©{  Ó?d ˆ÷ûìÆë @  ©| Ó?d È÷y}Ñ5 @  ©} Ó?d øô@r @  ©~ Ó?d HøvÑe @  © Ó?d ˆøŽú @  ©€ Ó?d Èø™íÌ @  © Ó?d ù ÕÏÛ @  ©‚ Ó?d HùDØ @  ©ƒ Ó?d ˆù̱ @  ©„ Ó?d Èùš‡Ûo @  ©… Ó?d úÛQ6v @  ©† Ó?d HúYÀ!¨ @  ©‡ Ó?d ˆúÅi‘‹ @  ©ˆ Ó?d ÈúGø†U @  ©‰ Ó?d ûÓ2¤B @  ©Š Ó?d HûQ£³œ @  ©‹ Ó?d ˆûÆñ§( @  ©Œ Ó?d ÈûD`°ö @  © Ó?d üy[U @  ©Ž  Ó?d HüûÊBÏ @  © !Ó?d ˆüÊÂÌ  @  © "Ó?d ÈüHSÛÒ @  ©‘ #Ó?d ýÜ™ùÅ @  ©’ $Ó?d Hý^î @  ©“ %Ó?d ˆýÉZú¯ @  ©” &Ó?d ÈýKËíq @  ©• 'Ó?d þ h @  ©– (Ó?d HþˆŒ¶ @  ©— )Ó?d ˆþ%§• @  ©˜ *Ó?d Èþ–´°K @  ©™ +Ó?d ÿ~’\ @  ©š ,Ó?d Hÿ€ï…‚ @  ©› -Ó?d ˆÿ½‘6 @  ©œ uÐ.Ó?d Èÿ•,†è @  © /Ó?d (»B @  ©ž 0Ó?d `›¹¬œ @  ©Ÿ 1Ó?d  »·ï @  ©  2Ó?d à9&1 @  ©¡ 3Ó?d ­ì0& @  ©¢ 4Ó?d `/}'ø @  ©£ 5Ó?d  ¸/3L @  ©¤ 6Ó?d à:¾$’ @  ©¥ 7Ó?d {hÉ‹ @  ©¦ 8Ó?d `ùùÞU @  ©§ 9Ó?d  ePnv @  ©¨ :Ó?d àçÁy¨ @  ©© ;Ó?d s [¿ @  ©ª <Ó?d `ñšLa @  ©« =Ó?d  fÈXÕ @  ©¬ >Ó?d àäYO  @  ©­ ?Ó?d )2¿ý @  ©® @Ó?d `«£¨# @  ©¯ AÓ?d  š«&à @  ©° BÓ?d à:1> @  ©± CÓ?d Œð) @  ©² DÓ?d `a÷ @  ©³ EÓ?d  ™3C @  ©´ FÓ?d ࢠ@  ©µ GÓ?d Ztê„ @  ©¶ HÓ?d `ØåýZ @  ©· IÓ?d  DLMy @  ©¸ JÓ?d àÆÝZ§ @  ©¹ KÓ?d Rx° @  ©º LÓ?d `Іon @  ©» MÓ?d  GÔ{Ú @  ©¼ NÓ?d àÅEl @  ©½ OÓ?d HxÏ- @  ©¾ PÓ?d `ÊéØó @  ©¿ QÓ?d  Dàw @  ©À RÓ?d àÆq`Ì @  ©Á SÓ?d R»BÛ @  © TÓ?d ` Ð*U @  ©à UÓ?d   GxA± @  ©Ä VÓ?d à ÅéVo @  ©Å WÓ?d „?»v @  ©Æ XÓ?d ` ®¬¨ @  ©Ç YÓ?d   š‹ @  ©È ZÓ?d à – U @  ©É [Ó?d Œ\)B @  ©Ê \Ó?d ` Í>œ @  ©Ë ]Ó?d   ™Ÿ*( @  ©Ì ^Ó?d à =ö @  ©Í _Ó?d &5Ø @  ©Î `Ó?d ` ¤¤ÏÏ @  ©Ï aÓ?d   •¬A  @  ©Ð bÓ?d à =VÒ @  ©Ñ cÓ?d ƒ÷tÅ @  ©Ò dÓ?d ` fc @  ©Ó eÓ?d   –4w¯ @  ©Ô fÓ?d à ¥`q @  ©Õ gÓ?d Ush @  ©Ö hÓ?d `×âš¶ @  ©× iÓ?d  KK*• @  ©Ø jÓ?d àÉÚ=K @  ©Ù kÓ?d ]\ @  ©Ú lÓ?d `ß‚ @  ©Û mÓ?d  HÓ6 @  ©Ü nÓ?d àÊB è @  ©Ý oÓ?d Í^˜n @  ©Þ pÓ?d `Oϰ @  ©ß qÓ?d  oÁ&à @  ©à rÓ?d àíP1 @  ©á sÓ?d yš  @  ©â tÓ?d€ `:LóÔ @  ª uÓ?d  L_¯I @  ª vÓ?d àÎθ— @  ª wÓ?d JQ®c @  ª xÓ?d `ÈÀ¹½ @  ª yÓ?d  šÛVä @  ª zÓ?d àJA: @  ª {Ó?d B2 ²Ó?d ø Òh  @  ª? ³Ó?d 8!š°B¤ @  ª@ ´Ó?d x!!Uz @  ªA µÓ?d ¸!J:º# @  ªB ¶Ó?d ø!È«­ý @  ªC ·Ó?d 8"L4»  @  ªD ¸Ó?d x"Î¥¬× @  ªE ¹Ó?d ¸"œ¾CŽ @  ªF ºÓ?d ø"/TP @  ªG »Ó?d 8#DW)= @  ªH ¼Ó?d x#ÆÆ>ã @  ªI ½Ó?d ¸#”ÝѺ @  ªJ ¾Ó?d ø#LÆd @  ªK ¿Ó?d 8$nÍ @  ªL ÀÓ?d x$œÿÚ¡ @  ªM ÁÓ?d ¸$Îä5ø @  ªN ÂÓ?d ø$Lu"& @  ªO ÃÓ?d 8%»¬a« @  ªP ÄÓ?d x%9=vu @  ªQ ÅÓ?d ¸%k&™, @  ªR ÆÓ?d ø%é·Žò @  ªS ÇÓ?d 8&m(˜ @  ªT ÈÓ?d x&ï¹Ø @  ªU ÉÓ?d ¸&½¢` @  ªV ÊÓ?d ø&?3w_ @  ªW ËÓ?d 8'eK 2 @  ªX ÌÓ?d x'çÚì @  ªY ÍÓ?d ¸'µÁòµ @  ªZ ÎÓ?d ø'7Påk @  ª[ ÏÓ?d 8($½¯ @  ª\ ÐÓ?d x(ýµªq @  ª] ÑÓ?d ¸(¯®E( @  ª^ ÒÓ?d ø(-?Rö @  ª_ ÓÓ?d 8)Ëà6Ë @  ª` ÔÓ?d x)Iq! @  ªa ÕÓ?d ¸)jÎL @  ªb ÖÓ?d ø)™ûÙ’ @  ªc ×Ó?d 8*dÏf @  ªd ØÓ?d x*Ÿõظ @  ªe ÙÓ?d ¸*Íî7á @  ªf ÚÓ?d ø*O ? @  ªg ÛÓ?d 8+]R @  ªh ÜÓ?d x+—–JŒ @  ªi ÝÓ?d ¸+Å¥Õ @  ªj ÞÓ?d ø+G²  @  ªk ßÓ?d 8,¿n¬ @  ªl àÓ?d x,=ÿ»ß @  ªm áÓ?d ¸,oäT† @  ªn âÓ?d ø,íuCX @  ªo ãÓ?d 8-¬Õ @  ªp äÓ?d x-˜=  @  ªq åÓ?d ¸-Ê&øR @  ªr æÓ?d ø-H·ïŒ @  ªs çÓ?d 8.Ì(ùx @  ªt èÓ?d x.N¹î¦ @  ªu éÓ?d ¸.¢ÿ @  ªv êÓ?d ø.ž3! @  ªw ëÓ?d 8/ÄKkL @  ªx ìÓ?d x/FÚ|’ @  ªy íÓ?d ¸/Á“Ë @  ªz îÓ?d ø/–P„ @  ª{ ïÓ?d 80Tì~ @  ª| ðÓ?d x0Ö”û  @  ª} ñÓ?d ¸0„ù @  ª~ òÓ?d ø0' @  ª óÓ?d 81­Q¹ @  ª€ ôÓ?d x1/Fg @  ª õÓ?d ¸1}©> @  ª‚ öÓ?d ø1ÿ‹¾à @  ªƒ ÷Ó?d 82{¨ @  ª„ øÓ?d x2ù…¿Ê @  ª… ùÓ?d ¸2«žP“ @  ª† úÓ?d ø2)GM @  ª‡ ûÓ?d 83sw:  @  ªˆ üÓ?d x3ñæ-þ @  ª‰ ýÓ?d ¸3£ý§ @  ªŠ þÓ?d ø3!lÕy @  ª‹ ÿÓ?d 84wæàj @  ªŒ Ô?d x4õw÷´ @  ª Ô?d ¸4§lí @  ªŽ Ô?d ø4%ý3 @  ª Ô?d 85Ò$L¾ @  ª Ô?d x5Pµ[` @  ª‘ Ô?d ¸5®´9 @  ª’ Ô?d ø5€?£ç @  ª“ Ô?d 86 µ @  ª” Ô?d x6†1¢Í @  ª•  Ô?d ¸6Ô*M” @  ª–  Ô?d ø6V»ZJ @  ª—  Ô?d 87 Ã'' @  ª˜  Ô?d x7ŽR0ù @  ª™  Ô?d ¸7ÜIß  @  ªš Ô?d ø7^ØÈ~ @  ª› Ô?d 88¬º @  ªœ Ô?d x8”=‡d @  ª Ô?d ¸8Æ&h= @  ªž Ô?d ø8D·ã @  ªŸ Ô?d 89¢hÞ @  ª  Ô?d x9 ù  @  ª¡ Ô?d ¸9râãY @  ª¢ Ô?d ø9ðsô‡ @  ª£ Ô?d 8:tìâs @  ª¤ Ô?d x:ö}õ­ @  ª¥ Ô?d ¸:¤fô @  ª¦ Ô?d ø:&÷ * @  ª§ Ô?d 8;|pG @  ª¨ Ô?d x;þg™ @  ª© Ô?d ¸;¬ˆÀ @  ªª Ô?d ø;.”Ÿ @  ª« Ô?d 8<Öæ @  ª¬  Ô?d x<Tw–Ê @  ª­ !Ô?d ¸<ly“ @  ª® "Ô?d ø<„ýnM @  ª¯ #Ô?d 8=s$-À @  ª° $Ô?d x=ñµ: @  ª± %Ô?d ¸=£®ÕG @  ª² &Ô?d ø=!?™ @  ª³ 'Ô?d 8>¥ Ôm @  ª´ (Ô?d x>'1ó @  ªµ )Ô?d ¸>u*,ê @  ª¶ *Ô?d ø>÷»;4 @  ª· +Ô?d 8?­ÃFY @  ª¸ ,Ô?d x?/RQ‡ @  ª¹ -Ô?duÐ@7 ¸?}I¾Þ @  ªº .Ô?d ø?ÿØ© @  ª» /Ô?d P@@ÿÇå @  ª¼ 0Ô?d @` Å @  ª½ 1Ô?d Ð@u?b @  ª¾ 2Ô?d A@=³Š @  ª¿ 3Ô?d PAZÔ?d DM* @  ªË ?Ô?d PDÞâÅÈ @  ªÌ @Ô?d DþÇ6 @  ªÍ AÔ?d ÐDh=O @  ªÎ BÔ?d EÞ ±§ @  ªÏ CÔ?d PE{ i @  ªÐ DÔ?d E[Õkâ @  ªÑ EÔ?d ÐE«ª‘› @  ªÒ FÔ?d F6î1Z @  ªÓ GÔ?d PF­¤± @  ªÔ HÔ?d FQ’O @  ªÕ IÔ?d ÐF}.h6 @  ªÖ JÔ?d G­fäÞ @  ª× KÔ?d PG¥Ç… @  ªØ LÔ?d G…2{ @  ªÙ MÔ?d ÐGuMú @  ªÚ NÔ?d HA²v @  ªÛ OÔ?d PH¿¨µ @  ªÜ PÔ?d HŸ]·æ @  ªÝ QÔ?d ÐHo"MŸ @  ªÞ RÔ?d I¿jÁw @  ªß SÔ?d PI l>| @  ªà TÔ?d I+™<‚ @  ªá UÔ?d ÐIÛæÆû @  ªâ VÔ?d€ J2azœ @  « WÔ?d PJHj“^ @  « XÔ?d JhŸ‘  @  « YÔ?d ÐJ]©4 @  « ZÔ?d KáÜ @  « [Ô?d PKKò¥ý @  « \Ô?d Kk§ @  « ]Ô?d ÐKUÊ @  « ^Ô?d LL„ñ @  « _Ô?d PLê`ð9 @  « `Ô?d LÊ•òÇ @  « aÔ?d ÐLÿ£óS @  « bÔ?d M/ë» @  « cÔ?d PMéøÆš @  « dÔ?d MÉ Äd @  « eÔ?d ÐMZa_‡ @  « fÔ?d NÇ%ÿF @  « gÔ?d PN™&¥@ @  « hÔ?d N¹Ó§¾ @  « iÔ?d ÐNŒå¦* @  « jÔ?d O\­* @  « kÔ?d POš¾“ã @  « lÔ?d OºK‘ @  « mÔ?d ÐO„†4 @  « nÔ?d P:Xˆ¬ @  « oÔ?d PP °F @  « pÔ?d P!þ²¸ @  « qÔ?d ÐPȳ, @  « rÔ?d QÄ€?Ä @  « sÔ?d PQ“†å @  « tÔ?d Q"f„ @  « uÔ?d ÐQ  8H @  « vÔ?d R=H˜‰ @  «! wÔ?d PRcK @  «" xÔ?d RC¾Àq @  «# yÔ?d ÐRvˆÁå @  «$ zÔ?d S¦ÀM  @  «% {Ô?d PS`Óô, @  «& |Ô?d S@&öÒ @  «' }Ô?d ÐS~ëSÑ @  «( ~Ô?d Tg¥ Þ @  «) Ô?d PT,×àk @  «* €Ô?d T "â• @  «+ Ô?d ÐT9ã @  «, ‚Ô?d Ué\oé @  «- ƒÔ?d PU/OÖÈ @  «. „Ô?d UºÔ6 @  «/ …Ô?d ÐUœÖOÕ @  «0 †Ô?d V’ï @  «1 ‡Ô?d PV_‘µ @  «2 ˆÔ?d Vd·ì @  «3 ‰Ô?d ÐVJR¶x @  «4 ŠÔ?d Wš: @  «5 ‹Ô?d PW\ ƒ± @  «6 ŒÔ?d W|üO @  «7 Ô?d ÐWB1$L @  «8 ŽÔ?d XvΨQ @  «9 Ô?d PXM» @  «: Ô?d Xmh’E @  «; ‘Ô?d ÐXX^“Ñ @  «< ’Ô?d Yˆ9 @  «= “Ô?d PYN¦ @  «> ”Ô?d Ynð¤æ @  «? •Ô?d ÐYB' @  «@ –Ô?d ZßÙ¾æ @  «A —Ô?d PZÚäà @  «B ˜Ô?d Z¡/æ @  «C ™Ô?d ÐZ”çŠ @  «D šÔ?d [DQkb @  «E ›Ô?d P[‚BÒC @  «F œÔ?d [¢·Ð½ @  «G Ô?d Ð[œzu¾ @  «H žÔ?d \…4†± @  «I ŸÔ?d P\#Ї‡ @  «J  Ô?d \%…y @  «K ¡Ô?d Ð\6„í @  «L ¢Ô?d ]æ[ @  «M £Ô?d P] H±$ @  «N ¤Ô?d ]½³Ú @  «O ¥Ô?d Ð]“Ñ(9 @  «P ¦Ô?d ^•ˆø @  «Q §Ô?d P^P–Òþ @  «R ¨Ô?d ^pcÐ @  «S ©Ô?d Ð^EUÑ” @  «T ªÔ?d _•]| @  «U «Ô?d P_Sä] @  «V ¬Ô?d _sûæ£ @  «uÐ`W ­Ô?d Ð_M6C  @  «X ®Ô?d (`óÎö8 @  «Y ¯Ô?d h`ÈÎÒ @  «Z °Ô?d ¨`èhÌ, @  «[ ±Ô?d è`Ý^͸ @  «\ ²Ô?d (a AP @  «] ³Ô?d haËøq @  «^ ´Ô?d ¨aëðú @  «_ µÔ?d èaišFÜ @  «` ¶Ô?d (bôÞæ @  «a ·Ô?d hbªÝ¼ @  «b ¸Ô?d ¨bŠ(¾å @  «c ¹Ô?d èb¿¿q @  «d ºÔ?d (coV3™ @  «e »Ô?d hc©EЏ @  «f ¼Ô?d ¨c‰°ˆF @  «g ½Ô?d èc·}-E @  «h ¾Ô?d (d®3ÞJ @  «i ¿Ô?d hdø‡Êm @  «j ÀÔ?d ¨dØrÈ“ @  «k ÁÔ?d èdíDÉ @  «l ÂÔ?d (e= Eï @  «m ÃÔ?d heûüÎ @  «n ÄÔ?d ¨eÛêþ0 @  «o ÅÔ?d èeH†eÓ @  «p ÆÔ?d (fÕÂÅ @  «q ÇÔ?d hf‹ÁŸ @  «r ÈÔ?d ¨f«4ê @  «s ÉÔ?d èfžœ~ @  «t ÊÔ?d (gNJ– @  «u ËÔ?d hgˆY©· @  «v ÌÔ?d ¨g¨¬«I @  «w ÍÔ?d èg–aJ @  «x ÎÔ?d (h¢ž‚W @  «y ÏÔ?d hh™Íº½ @  «z ÐÔ?d ¨h¹8¸C @  «{ ÑÔ?d èhŒ¹× @  «| ÒÔ?d (i\F5? @  «} ÓÔ?d hišUŒ @  «~ ÔÔ?d ¨iº Žà @  « ÕÔ?d èiu› @  «€ ÖÔ?d (jèߤÑ @  « ×Ô?d hj¶Üþ× @  «‚ ØÔ?d ¨j–)ü) @  «ƒ ÙÔ?d èj£ý½ @  «„ ÚÔ?d (ksWqU @  «… ÛÔ?d hkµDÈt @  «† ÜÔ?d ¨k•±ÊŠ @  «‡ ÝÔ?d èk«|o‰ @  «ˆ ÞÔ?d (l²2œ† @  «‰ ßÔ?d hlÖ° @  «Š àÔ?d ¨l4#ŸN @  «‹ áÔ?d èlžÚ @  «Œ âÔ?d (mÑ]2 @  « ãÔ?d hmN« @  «Ž äÔ?d ¨m7»©í @  « åÔ?d èm¤×2 @  « æÔ?d (n9“’Ï @  «‘ çÔ?d hngÈÉ @  «’ èÔ?d ¨nGeÊ7 @  «“ éÔ?d ènrSË£ @  «” êÔ?d (o¢GK @  «• ëÔ?d hodþj @  «– ìÔ?d ¨oDýü” @  «— íÔ?d èoz0Y— @  «˜ îÔ?d (pÄîå% @  «™ ïÔ?d hpÿ½ÝÏ @  «š ðÔ?d ¨pßHß1 @  «› ñÔ?d èpê~Þ¥ @  «œ òÔ?d (q:6RM @  « óÔ?d hqü%ël @  «ž ôÔ?d ¨qÜÐé’ @  «Ÿ õÔ?d èq^ºUÁ @  «  öÔ?d (rÃþõ @  «¡ ÷Ô?d hrý¯ @  «¢ øÔ?d ¨r½­ø @  «£ ùÔ?d èrˆ>¬l @  «¤ úÔ?d (sXv „ @  «¥ ûÔ?d hsže™¥ @  «¦ üÔ?d ¨s¾›[ @  «§ ýÔ?d ès€]>X @  «¨ þÔ?d (t™ÍW @  «© ÿÔ?d ht­Øî @  «ª Õ?d ¨tóÚ @  «« Õ?d èt¸ÅÛ„ @  «¬ Õ?d (uhWl @  «­ Õ?d hu®žîM @  «® Õ?d ¨uŽkì³ @  «¯ Õ?d èuwP @  «° Õ?d (v€Cב @  «± Õ?d hvÞ@— @  «² Õ?d ¨vþµi @  «³  Õ?d èv˃Žý @  «´  Õ?d (wË @  «µ  Õ?d hwÝØ»4 @  «¶  Õ?d ¨wý-¹Ê @  «·  Õ?d èwÃàÉ @  «¸ Õ?d (x÷Ô @  «¹ Õ?d hxÌL¨> @  «º Õ?d ¨x칪À @  «» Õ?d èxÙ«T @  «¼ Õ?d (y Ç'¼ @  «½ Õ?d hyÏÔž @  «¾ Õ?d ¨yï!œc @  «¿ Õ?d èyÃL&¢ @  «À Õ?d (z^†c @  «Á Õ?d hz Üe @  « Õ?d ¨z þÞ› @  «à Õ?d èzÈß @  «Ä Õ?d ({Å€Sç @  «Å Õ?d h{“êÆ @  «Æ Õ?d ¨{#fè8 @  «Ç Õ?d è{«M; @  «È Õ?d (|å¾4 @  «É Õ?d h|¢¿ @  «Ê  Õ?d ¨|‚ô½ü @  «Ë !Õ?d è|·Â¼h @  «Ì "Õ?d (}gŠ0€ @  «Í #Õ?d h}¡™‰¡ @  «Î $Õ?d ¨}l‹_ @  «Ï %Õ?d è}¼ @  «Ð &Õ?d (~D°} @  «Ñ 'Õ?d h~ÑGê{ @  «Ò (Õ?d ¨~ñ²è… @  «Ó )Õ?d è~Ä„é @  «Ô *Õ?d (Ìeù @  «Õ +Õ?d hÒßÜØ @  «Ö ,Õ?d ¨uЀ'ò*Þ& @  «× -Õ?d èÌç{% @  «Ø .Õ?d @€¢Y™Q @  «Ù /Õ?d €€;n´› @  «Ú 0Õ?d À€¹ÿ£E @  «Û 1Õ?d Þ9ç @  «Ü 2Õ?d @\.9 @  «Ý 3Õ?d €8ö‚8 @  «Þ 4Õ?d Àºg•æ @  «ß 5Õ?d ‚'Øžª @  «à 6Õ?d @‚¥I‰t @  «á 7Õ?d €‚Y.ÆR @  «â 8Õ?d€ À‚]éy5 @  ¬ 9Õ?d ƒÛG«¾ @  ¬ :Õ?d @ƒYÖ¼` @  ¬ ;Õ?d €ƒøèëŒ @  ¬ <Õ?d ÀƒzyüR @  ¬ =Õ?d „Ùâú @  ¬ >Õ?d @„“Hõ$ @  ¬ ?Õ?d €„©*«Y @  ¬ @Õ?d À„+»¼‡ @  ¬ AÕ?d …‰ÝÈ @  ¬ BÕ?d @… ŒÊ @  ¬ CÕ?d €…ª²ú @  ¬ DÕ?d À…(#Š$ @  ¬ EÕ?d †ljÇB @  ¬ FÕ?d @†EМ @  ¬ GÕ?d €†Úlþ  @  ¬ HÕ?d À†Xýéþ @  ¬ IÕ?d ‡ú[ˆ± @  ¬ JÕ?d @‡xÊŸo @  ¬ KÕ?d €‡Ùôȃ @  ¬ LÕ?d À‡[eß] @  ¬ MÕ?d ˆt¾ç @  ¬ NÕ?d @ˆŸå©9 @  ¬ OÕ?d €ˆÈ`Û‰ @  ¬ PÕ?d ÀˆJñÌW @  ¬ QÕ?d ‰èW­ @  ¬ RÕ?d @‰jƺÆ @  ¬ SÕ?d €‰Ëøí* @  ¬ TÕ?d À‰Iiúô @  ¬ UÕ?d Š¦Ã·’ @  ¬ VÕ?d @Š$R L @  ¬ WÕ?d €Šª ©@ @  ¬ XÕ?d ÀŠ(±¾ž @  ¬! YÕ?d ‹ŠßÑ @  ¬" ZÕ?d @‹†È @  ¬# [Õ?d €‹©¸Ÿã @  ¬$ \Õ?d À‹+)ˆ= @  ¬% ]Õ?d Œ@‰–• @  ¬& ^Õ?d @ŒÂK @  ¬' _Õ?d €Œ*Ê' @  ¬( `Õ?d ÀŒŠ»Ýù @  ¬) aÕ?d (¼¶ @  ¬* bÕ?d @ªŒ«h @  ¬+ cÕ?d € ²ü„ @  ¬, dÕ?d À‰#ëZ @  ¬- eÕ?d Žf‰¦< @  ¬. fÕ?d @Žä±â @  ¬/ gÕ?d €Ž{lŸ^ @  ¬0 hÕ?d ÀŽùýˆ€ @  ¬1 iÕ?d [[éÏ @  ¬2 jÕ?d @ÙÊþ @  ¬3 kÕ?d €xô©ý @  ¬4 lÕ?d Àúe¾# @  ¬5 mÕ?d 6Uï6 @  ¬6 nÕ?d @´Äøè @  ¬7 oÕ?d €ãAŠX @  ¬8 pÕ?d ÀaІ @  ¬9 qÕ?d ‘ÃvüÉ @  ¬: rÕ?d @‘Açë @  ¬; sÕ?d €‘àÙ¼û @  ¬< tÕ?d À‘bH«% @  ¬= uÕ?d ’âæC @  ¬> vÕ?d @’sñ @  ¬? wÕ?d €’/þ @  ¬@ xÕ?d À’­—éÝ @  ¬A yÕ?d “1ˆ’ @  ¬B zÕ?d @“ ŸL @  ¬C {Õ?d €“,žÈ  @  ¬D |Õ?d À“®ß~ @  ¬E }Õ?d ”ůÁÖ @  ¬F ~Õ?d @”G>Ö @  ¬G Õ?d €”`šÜç @  ¬H €Õ?d À”â Ë9 @  ¬I Õ?d •@­ªv @  ¬J ‚Õ?d @•Â<½¨ @  ¬K ƒÕ?d €•cêD @  ¬L „Õ?d À•á“ýš @  ¬M …Õ?d –9°ü @  ¬N †Õ?d @–Œ¨§" @  ¬O ‡Õ?d €–܉ž @  ¬P ˆÕ?d À–‘Mž@ @  ¬Q ‰Õ?d —3ëÿ @  ¬R ŠÕ?d @—±zèÑ @  ¬S ‹Õ?d €—D¿= @  ¬T ŒÕ?d À—’Õ¨ã @  ¬U Õ?d ˜ÔÄÉY @  ¬V ŽÕ?d @˜VUÞ‡ @  ¬W Õ?d €˜Ь7 @  ¬X Õ?d À˜ƒA»é @  ¬Y ‘Õ?d ™!çÚ¦ @  ¬Z ’Õ?d @™£vÍx @  ¬[ “Õ?d €™Hš” @  ¬\ ”Õ?d À™€ÙJ @  ¬] •Õ?d šosÀ, @  ¬^ –Õ?d @šíâ×ò @  ¬_ —Õ?d €šcÞþ @  ¬` ˜Õ?d ÀšáÉ  @  ¬a ™Õ?d ›C§¨o @  ¬b šÕ?d @›Á6¿± @  ¬c ›Õ?d €›`è] @  ¬d œÕ?d À›â™ÿƒ @  ¬e Õ?d œ‰9á+ @  ¬f žÕ?d @œ ¨öõ @  ¬g ŸÕ?d €œÁš½™ @  ¬h  Õ?d ÀœC ªG @  ¬i ¡Õ?d á­Ë @  ¬j ¢Õ?d @c<ÜÖ @  ¬k £Õ?d €Â‹: @  ¬l ¤Õ?d À@“œä @  ¬m ¥Õ?d ž¯9Ñ‚ @  ¬n ¦Õ?d @ž-¨Æ\ @  ¬o §Õ?d €ž²Üèà @  ¬p ¨Õ?d Àž0Mÿ> @  ¬q ©Õ?d Ÿ’ëžq @  ¬r ªÕ?d @Ÿz‰¯ @  ¬s «Õ?d €Ÿ±DÞC @  ¬t ¬ÕuР?d ÀŸ3ÕÉ @  ¬u ­Õ?d  00ú\ @  ¬v ®Õ?d X ²¡í‚ @  ¬w ¯Õ?d ˜ å$Ÿ2 @  ¬x °Õ?d Ø gµˆì @  ¬y ±Õ?d ¡Åé£ @  ¬z ²Õ?d X¡G‚þ} @  ¬{ ³Õ?d ˜¡漩‘ @  ¬| ´Õ?d Ø¡d-¾O @  ¬} µÕ?d ¢‹‡ó) @  ¬~ ¶Õ?d X¢ ä÷ @  ¬ ·Õ?d ˜¢Ê5ÛX @  ¬€ ¸Õ?d Ø¢H¤Ì† @  ¬ ¹Õ?d £ê­É @  ¬‚ ºÕ?d X£h“º @  ¬ƒ »Õ?d ˜£É­íû @  ¬„ ¼Õ?d Ø£K<ú% @  ¬… ½Õ?d ¤ œä @  ¬† ¾Õ?d X¤¢ óS @  ¬‡ ¿Õ?d ˜¤˜o­. @  ¬ˆ ÀÕ?d ؤþºð @  ¬‰ ÁÕ?d ¥¸XÛ¿ @  ¬Š ÂÕ?d X¥:ÉÌa @  ¬‹ ÃÕ?d ˜¥›÷› @  ¬Œ ÄÕ?d Ø¥fŒS @  ¬ ÅÕ?d ¦öÌÁ5 @  ¬Ž ÆÕ?d X¦t]Öë @  ¬ ÇÕ?d ˜¦ë)øW @  ¬ ÈÕ?d ئi¸ï‰ @  ¬‘ ÉÕ?d §ËŽÆ @  ¬’ ÊÕ?d X§I™ @  ¬“ ËÕ?d ˜§è±Îô @  ¬” ÌÕ?d اj Ù* @  ¬• ÍÕ?d ¨,1¸ @  ¬– ÎÕ?d X¨® ¯N @  ¬— ÏÕ?d ˜¨ù%Ýþ @  ¬˜ ÐÕ?d ب{´Ê  @  ¬™ ÑÕ?d ©Ù«o @  ¬š ÒÕ?d X©[ƒ¼± @  ¬› ÓÕ?d ˜©ú½ë] @  ¬œ ÔÕ?d Ø©x,üƒ @  ¬ ÕÕ?d ª—†±å @  ¬ž ÖÕ?d Xª¦; @  ¬Ÿ ×Õ?d ˜ª›e¯7 @  ¬  ØÕ?d تô¸é @  ¬¡ ÙÕ?d «»RÙ¦ @  ¬¢ ÚÕ?d X«9ÃÎx @  ¬£ ÛÕ?d ˜«˜ý™” @  ¬¤ ÜÕ?d Ø«lŽJ @  ¬¥ ÝÕ?d ¬qÌâ @  ¬¦ ÞÕ?d X¬ó]‡< @  ¬§ ßÕ?d ˜¬9oÌP @  ¬¨ àÕ?d ج»þÛŽ @  ¬© áÕ?d ­XºÁ @  ¬ª âÕ?d X­›É­ @  ¬« ãÕ?d ˜­:÷úó @  ¬¬ äÕ?d Ø­¸fí- @  ¬­ åÕ?d ®WÌ K @  ¬® æÕ?d X®Õ]·• @  ¬¯ çÕ?d ˜®J)™) @  ¬° èÕ?d Ø®ȸŽ÷ @  ¬± éÕ?d ¯jï¸ @  ¬² êÕ?d X¯èøf @  ¬³ ëÕ?d ˜¯I±¯Š @  ¬´ ìÕ?d دË ¸T @  ¬µ íÕ?d °éA @  ¬¶ îÕ?d X°…þŸ @  ¬· ïÕ?d ˜°ÒŒ/ @  ¬¸ ðÕ?d ذP•›ñ @  ¬¹ ñÕ?d ±ò3ú¾ @  ¬º òÕ?d X±p¢í` @  ¬» óÕ?d ˜±ÑœºŒ @  ¬¼ ôÕ?d رS ­R @  ¬½ õÕ?d ²¼§à4 @  ¬¾ öÕ?d X²>6÷ê @  ¬¿ ÷Õ?d ˜²Cøt @  ¬À øÕ?d زœÒïª @  ¬Á ùÕ?d ³>tŽå @  ¬ úÕ?d X³¼å™; @  ¬à ûÕ?d ˜³ÛÎ× @  ¬Ä üÕ?d سŸJÙ  @  ¬Å ýÕ?d ´ôêÇ¡ @  ¬Æ þÕ?d X´v{Ð @  ¬Ç ÿÕ?d ˜´œšº¹ @  ¬È Ö?d Ø´ ­g @  ¬É Ö?d µ¼­Ì( @  ¬Ê Ö?d Xµ><Ûö @  ¬Ë Ö?d ˜µŸŒ @  ¬Ì Ö?d ص“›Ä @  ¬Í Ö?d ¶ò9Ö¢ @  ¬Î Ö?d X¶p¨Á| @  ¬Ï Ö?d ˜¶ïÜïÀ @  ¬Ð Ö?d ضmMø @  ¬Ñ  Ö?d ·Ïë™Q @  ¬Ò  Ö?d X·MzŽ @  ¬Ó  Ö?d ˜·ìDÙc @  ¬Ô  Ö?d Ø·nÕν @  ¬Õ  Ö?d ¸(į @  ¬Ö Ö?d X¸ªU¸Ù @  ¬× Ö?d ˜¸ýÐÊi @  ¬Ø Ö?d ظAÝ· @  ¬Ù Ö?d ¹Ýç¼ø @  ¬Ú Ö?d X¹_v«& @  ¬Û Ö?d ˜¹þHüÊ @  ¬Ü Ö?d ع|Ùë @  ¬Ý Ö?d º“s¦r @  ¬Þ Ö?d Xºⱬ @  ¬ß Ö?d ˜ºŸ¸  @  ¬à Ö?d غ¯~ @  ¬á Ö?d »¿§Î1 @  ¬â Ö?d€ X»IõÅI @  ­ Ö?d ˜» ŠÚŒ @  ­ Ö?d Ø»‹ÍR @  ­ Ö?d ¼%ò( @  ­ Ö?d X¼§c?É @  ­ Ö?d ˜¼£ã+ß @  ­  Ö?d ؼ!r< @  ­ !Ö?d ½Mf4 @  ­ "Ö?d X½Ï÷ê @  ­ #Ö?d ˜½«€¹ë @  ­ $Ö?d ؽ)®5 @  ­ %Ö?d ¾ò¾ @  ­ &Ö?d X¾c` @  ­ 'Ö?d ˜¾}@F @  ­ (Ö?d ؾÿ•W˜ @  ­ )Ö?d ¿> WM @  ­ *Ö?d X¿¼±@“ @  ­ +Ö?d ˜¿ØÆì’ @uÐÀ  ­ ,Ö?d Ø¿ZWûL @  ­ -Ö?d 0À‰¼T @  ­ .Ö?d pÀ ‘«Š @  ­ /Ö?d °À’¦†@ @  ­ 0Ö?d ðÀ7‘ž @  ­ 1Ö?d 0Á|#¯« @  ­ 2Ö?d pÁþ²¸u @  ­ 3Ö?d °ÁšÅt @  ­ 4Ö?d ðÁTª @  ­ 5Ö?d 0Â2·µ! @  ­ 6Ö?d p°&¢ÿ @  ­ 7Ö?d °ÂLAíÙ @  ­ 8Ö?d ðÂÎÐú @  ­ 9Ö?d 0ÃcÝb @  ­ :Ö?d pÃصe @  ­!€;Ö?d °Ã¼ÂÉ @  ­"€<Ö?d ðÃ>SÞÊ @  ­#€=Ö?d 0ĺ; @  ­$€>Ö?d pÄ+,Q @  ­%€?Ö?d °Äæû-V @  ­&€@Ö?d ðÄdj:ˆ @  ­'€AÖ?d 0Å~½ @  ­(€BÖ?d pÅŠïc @  ­)€CÖ?d °Åb @  ­*€DÖ?d ðÅl ¨¼ @  ­+€EÖ?d 0ÆFê7 @  ­,€FÖ?d pÆÄ{ é @  ­-€GÖ?d °Æ8FÏ @  ­.€HÖ?d ðƺQ @  ­/€IÖ?d 0Ç{8QÄ @  ­0€JÖ?d pÇù©F @  ­1€KÖ?d °ÇÞê @  ­2€LÖ?d ðÇOýÅ @  ­3€MÖ?d 0Èœg’ @  ­4€NÖ?d pȆpL @  ­5€OÖ?d °È‡±]† @  ­6€PÖ?d ðÈ JX @  ­7€QÖ?d 0Éi4tm @  ­8€RÖ?d pÉë¥c³ @  ­9€SÖ?d °ÉÒϲ @  ­:€TÖ?d ðÉ CØl @  ­;€UÖ?d 0Ê' nç @  ­<€VÖ?d pÊ¥1y9 @  ­=€WÖ?d °ÊYV6 @  ­>€XÖ?d ðÊÛÇ!Á @  ­?€YÖ?d 0Ë¥s6 @  ­@€ZÖ?d pË'âè @  ­A€[Ö?d °ËC•»é @  ­B€\Ö?d ðËÁ¬7 @  ­C€]Ö?d 0ÌoíIr @  ­D€^Ö?d pÌí|^¬ @  ­E€_Ö?d °ÌéüJº @  ­F€`Ö?d ðÌkm]d @  ­G€aÖ?d 0ÍycQ @  ­H€bÖ?d pÍ…èt @  ­I€cÖ?d °ÍáŸØŽ @  ­J€dÖ?d ðÍcÏP @  ­K€eÖ?d 0ÎIíyÛ @  ­L€fÖ?d pÎË|n @  ­M€gÖ?d °Î7!# @  ­N€hÖ?d ðεŠ6ý @  ­O€iÖ?d 0Ït?6( @  ­P€jÖ?d pÏö®!ö @  ­Q€kÖ?d °Ï’Ù÷ @  ­R€lÖ?d ðÏHš) @  ­S€mÖ?d 0Ð10Ñ @  ­T€nÖ?d pЛ ' @  ­U€oÖ?d °Ð— Å @  ­V€pÖ?d ðЀ @  ­W€qÖ?d 0Ñì#. @  ­X€rÖ?d pÑnƒ4ð @  ­Y€sÖ?d °Ñ ô˜ñ @  ­Z€tÖ?d ðшe/ @  ­[€uÖ?d 0Ò¢†9¤ @  ­\€vÖ?d pÒ .z @  ­]€wÖ?d °ÒÜpa\ @  ­^€xÖ?d ðÒ^áv‚ @  ­_€yÖ?d 0ÓŽRQç @  ­`€zÖ?d pÓ ÃF9 @  ­a€{Ö?d °Óh´ê8 @  ­b€|Ö?d ðÓê%ýæ @  ­c€}Ö?d 0ÔDÌ£ @  ­d€~Ö?d pÔÆ]} @  ­e€Ö?d °Ô/KZè @  ­f€€Ö?d ðÔ­ÚM6 @  ­g€Ö?d 0ÕÁÎs @  ­h€‚Ö?d pÕC_dÝ @  ­i€ƒÖ?d °Õ'(ÈÜ @  ­j€„Ö?d ðÕ¥¹ß @  ­k€…Ö?d 0ÖZi‰ @  ­l€†Ö?d pÖ Ë~W @  ­m€‡Ö?d °Öñ¬1q @  ­n€ˆÖ?d ðÖs=&¯ @  ­o€‰Ö?d 0ײˆ&z @  ­p€ŠÖ?d p×01¤ @  ­q€‹Ö?d °×Tn¥ @  ­r€ŒÖ?d ð×ÖÿŠ{ @  ­s€Ö?d 0ØU§, @  ­t€ŽÖ?d pØ×6ò @  ­u€Ö?d °ØN*8 @  ­v€Ö?d ðØÌ=æ @  ­w€‘Ö?d 0Ù „Ó @  ­x€’Ö?d pÙ"  @  ­y€“Ö?d °ÙFb¸  @  ­z€”Ö?d ðÙÄó¯Ò @  ­{€•Ö?d 0ÚîY @  ­|€–Ö?d pÚl‡ @  ­}€—Ö?d °ÚæA¡ @  ­~€˜Ö?d ðÚwV @  ­€™Ö?d 0Û•G¹ @  ­€€šÖ?d pÛ Pg @  ­€›Ö?d °Ûisüf @  ­‚€œÖ?d ðÛëâë¸ @  ­ƒ€Ö?d 0ÜE ý @  ­„€žÖ?d pÜÇš# @  ­…€ŸÖ?d °Üà 5 @  ­†€ Ö?d ðÜA‹ë @  ­‡€¡Ö?d 0Ý-Ÿ$Þ @  ­ˆ€¢Ö?d pݯ3 @  ­‰€£Ö?d °ÝËyŸ @  ­Š€¤Ö?d ðÝIèˆß @  ­‹€¥Ö?d 0Þc >T @  ­Œ€¦Ö?d pÞáš)Š @  ­€§Ö?d °Þýf¬ @  ­Ž€¨Ö?d ðÞŸlqr @  ­€©Ö?d 0ß^Ùq§ @  ­€ªÖ?d pßÜHfy @  ­‘€«Ö?d uÐà/°ß¸?Êx @  ­’€¬Ö?d ðß:®Ý¦ @  ­“€­Ö?d Hà”­• @  ­”€®Ö?d ˆà´X—ä @  ­•€¯Ö?d Èà ¯ @  ­–€°Ö?d á_C#æ @  ­—€±Ö?d Háaކå @  ­˜€²Ö?d ˆáA{„ @  ­™€³Ö?d Èá‡h=: @  ­š€´Ö?d â,û @  ­›€µÖ?d Hâ/œo @  ­œ€¶Ö?d ˆâïž‘ @  ­€·Ö?d ÈâQìÄ— @  ­ž€¸Ö?d ã¤H @  ­Ÿ€¹Ö?d HãÎô, @  ­ €ºÖ?d ˆã#;öÒ @  ­¡€»Ö?d Èãå(Oó @  ­¢€¼Ö?d äüf¼ü @  ­£€½Ö?d HäÉP½h @  ­¤€¾Ö?d ˆä饿– @  ­¥€¿Ö?d Èä¿«± @  ­¦€ÀÖ?d åoY'Y @  ­§€ÁÖ?d HåQ”‚Z @  ­¨€ÂÖ?d ˆåqa€¤ @  ­©€ÃÖ?d Èå·r9… @  ­ª€ÄÖ?d æ*6™D @  ­«€ÅÖ?d Hæ˜Ð @  ­¬€ÆÖ?d ˆæ?õš. @  ­­€ÇÖ?d ÈæaöÀ( @  ­®€ÈÖ?d ç±¾LÀ @  ­¯€ÉÖ?d Hç"Ò×# @  ­°€ÊÖ?d ˆç'ÕÝ @  ­±€ËÖ?d ÈçÄ4lü @  ­²€ÌÖ?d èðËàá @  ­³€ÍÖ?d HèÅýáu @  ­´€ÎÖ?d ˆèåã‹ @  ­µ€ÏÖ?d ÈèÞ[Ûa @  ­¶€ÐÖ?d éW‰ @  ­·€ÑÖ?d Hé0ÞòŠ @  ­¸€ÒÖ?d ˆé+ðt @  ­¹€ÓÖ?d ÈéÖ8IU @  ­º€ÔÖ?d êK|é” @  ­»€ÕÖ?d Hê~Jè @  ­¼€ÖÖ?d ˆê^¿êþ @  ­½€×Ö?d Èê¼°ø @  ­¾€ØÖ?d ëÐô< @  ­¿€ÙÖ?d Hëü™†Ñ @  ­À€ÚÖ?d ˆëÜl„/ @  ­Á€ÛÖ?d Èë= @  ­€ÜÖ?d ì1Î @  ­ÀÝÖ?d Hì6Ï• @  ­Ä€ÞÖ?d ˆìòÍk @  ­Å€ßÖ?d Èì°Ì] @  ­Æ€àÖ?d í`^@µ @  ­Ç€áÖ?d Hí^“å¶ @  ­È€âÖ?d ˆí~fçH @  ­É€ãÖ?d Èí¸u^i @  ­Ê€äÖ?d î%1þ¨ @  ­Ë€åÖ?d Hîÿ< @  ­Ì€æÖ?d ˆî0òý @  ­Í€çÖ?d Èînñ§Ä @  ­΀èÖ?d ï¾¹+, @  ­Ï€éÖ?d Hï-Õ°Ï @  ­ЀêÖ?d ˆï ²1 @  ­Ñ€ëÖ?d ÈïË3  @  ­Ò€ìÖ?d ðuí·¢ @  ­Ó€íÖ?d Hð@Û¶6 @  ­Ô€îÖ?d ˆð`.´È @  ­Õ€ïÖ?d Èð[}Œ" @  ­Ö€ðÖ?d ñ‹5Ê @  ­×€ñÖ?d Hñµø¥É @  ­Ø€òÖ?d ˆñ• §7 @  ­Ù€óÖ?d ÈñS @  ­Ú€ôÖ?d òÎZ¾× @  ­Û€õÖ?d Hòûl¿C @  ­Ü€öÖ?d ˆòÛ™½½ @  ­Ý€÷Ö?d Èò…šç» @  ­Þ€øÖ?d óUÒkS @  ­߀ùÖ?d Hó׸× @  ­à€úÖ?d ˆó÷MÕþ @  ­á€ûÖ?d Èó1^lß @  ­â€üÖ?d€ ôéWhÐ @  ®€ýÖ?d Hô= !m @  ®€þÖ?d ˆôÕ#“ @  ®€ÿÖ?d Èôì‰ÍÇ @  ®€×?d õ<ÁA/ @  ®€×?d Hõ̾»V @  ®€×?d ˆõìK¹¨ @  ®€×?d Èõäê_ó @  ®€×?d öy®ÿ2 @  ® €×?d Hö‰ÑK @  ® €×?d ˆö©$µ @  ® €×?d Èö2n¦^ @  ® €×?d ÷â&*¶ @  ® € ×?d H÷YÐÏ @  ®€ ×?d ˆ÷2¬Ò1 @  ®€ ×?d È÷—¬ Š @  ®€ ×?d ø£S†— @  ®€ ×?d HøS,|î @  ®€×?d ˆøsÙ~ @  ®€×?d Èøý @  ®€×?d ù]‹1ÿ @  ®€×?d Hù­ôˆ @  ®€×?d ˆùÉx @  ®€×?d Èù… /# @  ®€×?d úäâ @  ®€×?d Húè›u› @  ®€×?d ˆúÈnwe @  ®€×?d ÈúS$ÖŽ @  ®€×?d ûƒlZf @  ®€×?d Hûs  @  ®€×?d ˆûSæ¢á @  ®€×?d Èûçà]ê @  ® €×?d üþ®®å @  ®!€×?d HüÑTœ @  ®"€×?d ˆü.$Vb @  ®#€×?d ÈüM‰¬¹ @  ®$€ ×?d ýÁ Q @  ®%€!×?d Hým¾Ú( @  ®&€"×?d ˆýMKØÖ @  ®'€#×?d ÈýEê> @  ®(€$×?d þØ®žL @  ®)€%×?d Hþ(Ñd5 @  ®*€&×?d ˆþ$fË @  ®+€'×?d Èþ“nÇ  @  ®,€(×?d ÿC&KÈ @  ®-€)×?d Hÿ³Y±± @  ®.€*×?d ˆÿ“¬³O @  ®/€uÐ+×?d Èÿ6¬kô @  ®0€,×?d yC @  ®1€-×?d `‰g¹| @  ®2€.×?d  ©’»‚ @  ®3€/×?d àWˆx… @  ®4€0×?d ‡Àôm @  ®5€1×?d `w¿ @  ®6€2×?d  WJ ê @  ®7€3×?d à_ëê± @  ®8€4×?d ¯Jp @  ®9€5×?d `2а  @  ®:€6×?d  %²÷ @  ®;€7×?d à‰o @  ®<€8×?d Y'Ÿô @  ®=€9×?d `©Xe @  ®>€:×?d  ‰­gs @  ®?€;×?d à“¬žê @  ®@€<×?d Šâmå @  ®A€=×?d `z—œ @  ®B€>×?d  Zh•b @  ®C€?×?d àÉ•z¨ @  ®D€@×?d Ýö@ @  ®E€A×?d `é¢ 9 @  ®F€B×?d  ÉWÇ @  ®G€C×?d àÁöèœ @  ®H€D×?d \²H] @  ®I€E×?d `¬Í²$ @  ®J€F×?d  Œ8°Ú @  ®K€G×?d àr1 @  ®L€H×?d Ç:Ù @  ®M€I×?d `7Eg  @  ®N€J×?d  °e^ @  ®O€K×?d ರ½å @  ®P€L×?d †O1ø @  ®Q€M×?d `v0Ë @  ®R€N×?d  VÅÉ @  ®S€O×?d à¨ß x @  ®T€P×?d x—† @  ®U€Q×?d ` ˆè|é @  ®V€R×?d   ¨~ @  ®W€S×?d à  ¼˜L @  ®X€T×?d =ø8 @  ®Y€U×?d ` ͇Âô @  ®Z€V×?d   írÀ  @  ®[€W×?d à v8aá @  ®\€X×?d ¦pí  @  ®]€Y×?d ` Vp @  ®^€Z×?d   vúŽ @  ®_€[×?d à Âüê… @  ®`€\×?d Û²Š @  ®a€]×?d ` +Íãó @  ®b€^×?d    8á  @  ®c€_×?d à h•Ö @  ®d€`×?d ¸Ý—> @  ®e€a×?d ` H¢mG @  ®f€b×?d   hWo¹ @  ®g€c×?d à `ö‰â @  ®h€d×?d ý²)# @  ®i€e×?d ` ÍÓZ @  ®j€f×?d  -8Ѥ @  ®k€g×?d à¶rpO @  ®l€h×?d f:ü§ @  ®m€i×?d `–EÞ @  ®n€j×?d  ¶°  @  ®o€k×?d à°Ü› @  ®p€l×?d ­n`) @  ®q€m×?d `]šP @  ®r€n×?d  }䘮 @  ®s€o×?d àƒþ[© @  ®t€p×?d S¶×A @  ®u€q×?d `£É-8 @  ®v€r×?d  ƒú @  ®Ù€Õ×?d x*üÂă @  ®Ú€Ö×?d ¸*Ü7Æ} @  ®Û€××?d ø*G}g– @  ®Ü€Ø×?d 8+—5ë~ @  ®Ý€Ù×?d x+gJ @  ®Þ€Ú×?d ¸+G¿ù @  ®߀Û×?d ø+ó¹ìò @  ®à€Ü×?d 8,ê÷ý @  ®á€Ý×?d x,ˆå„ @  ®â€Þ×?d€ ¸,N¾ûÜ @  ¯€ß×?d ø,ÌRI. @  ¯€à×?d 8-ÅÆ @  ¯€á×?d x-),ÄR @  ¯€â×?d ¸- ÙÆ¬ @  ¯€ã×?d ø-ÏÊ @  ¯€ä×?d 8.RŽßL @  ¯€å×?d x.lCzO @  ¯€æ×?d ¸.L¶x± @  ¯ €ç×?d ø.µ"· @  ¯ €è×?d 8/Âý®_ @  ¯ €é×?d x/÷˯Ë @  ¯ €ê×?d ¸/×>­5 @  ¯ €ë×?d ø/- @  ¯€ì×?d 80¯ó¨¦ @  ¯€í×?d x0<Ÿ3E @  ¯€î×?d ¸0j1» @  ¯€ï×?d ø0'9 Q @  ¯€ð×?d 81÷q…¹ @  ¯€ñ×?d x1ÂG„- @  ¯€ò×?d ¸1ⲆÓ @  ¯€ó×?d ø1$¡?ò @  ¯€ô×?d 82¹åŸ3 @  ¯€õ×?d x2‡(:0 @  ¯€ö×?d ¸2§Ý8Î @  ¯€÷×?d ø2ùÞbÈ @  ¯€ø×?d 83)–î  @  ¯€ù×?d x3 ï´ @  ¯€ú×?d ¸3 @  ¯;€Ø?d x;Êb«ª @  ¯<€Ø?d ¸;ê—©T @  ¯=€Ø?d ø;,„u @  ¯>€Ø?d 8<5Êãz @  ¯?€Ø?d x<§Y» @  ¯@€Ø?d ¸<9R[E @  ¯A€Ø?d ø<Ÿ¶Zs @  ¯B€ Ø?d 8=OþÖ› @  ¯C€!Ø?d x=zÈ× @  ¯D€"Ø?d ¸=Z=Õñ @  ¯E€#Ø?d ø=œ.lÐ @  ¯F€$Ø?d 8>jÌ @  ¯G€%Ø?d x>?§i @  ¯H€&Ø?d ¸>Rkì @  ¯I€'Ø?d ø>AQ1ê @  ¯J€(Ø?d 8?‘½ @  ¯K€)Ø?d x?¤/¼– @  ¯L€*Ø?duÐ@7 ¸?„Ú¾h @  ¯M€+Ø?d ø?BÉI @  ¯N€,Ø?d P@e½u @  ¯O€-Ø?d @°m3¶ @  ¯P€.Ø?d Ð@2ü$h @  ¯Q€/Ø?d A[v‡´ @  ¯R€0Ø?d PAÙçj @  ¯S€1Ø?d ANµ„Þ @  ¯T€2Ø?d ÐAÌ$“ @  ¯U€3Ø?d Bâ> @  ¯V€4Ø?d PB—sŠà @  ¯W€5Ø?d B Ú:à @  ¯X€6Ø?d ÐB‰K- @  ¯Y€7Ø?d C…‘ì- @  ¯Z€8Ø?d PCûó @  ¯[€9Ø?d CRïG @  ¯\€:Ø?d ÐCÃø™ @  ¯]€;Ø?d DO¥i @  ¯^€<Ø?d PDÍž²· @  ¯_€=Ø?d DíÄ @  ¯`€>Ø?d ÐDo  @  ¯a€?Ø?d Eklƒ  @  ¯b€@Ø?d PEéý”Õ @  ¯c€AØ?d E~¯€a @  ¯d€BØ?d ÐEü>—¿ @  ¯e€CØ?d F%ø™ @  ¯f€DØ?d PF§iŽ_ @  ¯g€EØ?d F;À>| @  ¯h€FØ?d ÐF¹Q)¢ @  ¯i€GØ?d Gµ‹è’ @  ¯j€HØ?d PG7ÿL @  ¯k€IØ?d G Hëø @  ¯l€JØ?d ÐG"Ùü& @  ¯m€KØ?d HR¤ÞÄ @  ¯n€LØ?d PHÐ5É @  ¯o€MØ?d Há=GÙ @  ¯p€NØ?d ÐHc¬P @  ¯q€OØ?d I &óÛ @  ¯r€PØ?d PIˆ·ä @  ¯s€QØ?d Iåð± @  ¯t€RØ?d ÐItço @  ¯u€SØ?d JD²éQ @  ¯v€TØ?d PJÆ#þ @  ¯w€UØ?d JZŠN¬ @  ¯x€VØ?d ÐJØYr @  ¯y€WØ?d KÔÁ˜B @  ¯z€XØ?d PKVPœ @  ¯{€YØ?d KÁ›( @  ¯|€ZØ?d ÐKC“Œö @  ¯}€[Ø?d L_Ñ @  ¯~€\Ø?d PLœÎÆØ @  ¯€]Ø?d Lñ‘Y @  ¯€€^Ø?d ÐLsNÖ @  ¯€_Ø?d M‡=ÔÖ @  ¯‚€`Ø?d PM¬Ã @  ¯ƒ€aØ?d M’þ×¼ @  ¯„€bØ?d ÐMoÀb @  ¯…€cØ?d NÉ©Î\ @  ¯†€dØ?d PNK8Ù‚ @  ¯‡€eØ?d Nבi¡ @  ¯ˆ€fØ?d ÐNU~ @  ¯‰€gØ?d OYÚ¿O @  ¯Š€hØ?d POÛK¨‘ @  ¯‹€iØ?d OL¼% @  ¯Œ€jØ?d ÐOΈ«û @  ¯€kØ?d P4Ô¹¶ @  ¯Ž€lØ?d PP¶E®h @  ¯€mØ?d P‡M « @  ¯€nØ?d ÐPÜ7u @  ¯‘€oØ?d QlV”© @  ¯’€pØ?d PQîǃw @  ¯“€qØ?d Qy•—à @  ¯”€rØ?d ÐQû€ @  ¯•€sØ?d R"ÂŽ# @  ¯–€tØ?d PR S™ý @  ¯—€uØ?d R<ú)Þ @  ¯˜€vØ?d ÐR¾k> @  ¯™€wØ?d S²±ÿ0 @  ¯š€xØ?d PS0 èî @  ¯›€yØ?d S§rüZ @  ¯œ€zØ?d ÐS%ãë„ @  ¯€{Ø?d Tx/¶t @  ¯ž€|Ø?d PTú¾¡ª @  ¯Ÿ€}Ø?d TÚ°Ù @  ¯ €~Ø?d ÐTX! @  ¯¡€Ø?d UAŠÄ„ @  ¯¢€€Ø?d PUÃÓZ @  ¯£€Ø?d UTIÇî @  ¯¤€‚Ø?d ÐUÖØÐ0 @  ¯¥€ƒØ?d VÞ @  ¯¦€„Ø?d PVÉÐ @  ¯§€…Ø?d V&yó @  ¯¨€†Ø?d ÐV“·n- @  ¯©€‡Ø?d WŸm¯ @  ¯ª€ˆØ?d PWü¸Ã @  ¯«€‰Ø?d WŠ®¬w @  ¯¬€ŠØ?d ÐW?»© @  ¯­€‹Ø?d XxB™K @  ¯®€ŒØ?d PXúÓŽ• @  ¯¯€Ø?d XËÛV @  ¯°€ŽØ?d ÐXIJˆ @  ¯±€Ø?d Y À´T @  ¯²€Ø?d PY¢Q£Š @  ¯³€‘Ø?d Y5·> @  ¯´€’Ø?d ÐY·’ à @  ¯µ€“Ø?d ZnT®Þ @  ¯¶€”Ø?d PZìŹ @  ¯·€•Ø?d Zpl # @  ¯¸€–Ø?d ÐZòýý @  ¯¹€—Ø?d [þ'ßÍ @  ¯º€˜Ø?d P[|¶È @  ¯»€™Ø?d [ëäܧ @  ¯¼€šØ?d Ð[iuËy @  ¯½€›Ø?d \4¹–‰ @  ¯¾€œØ?d P\¶(W @  ¯¿€Ø?d \8!.¶ @  ¯À€žØ?d Ð\º°9h @  ¯Á€ŸØ?d ]N£h @  ¯€ Ø?d P]Ì´¶ @  ¯À¡Ø?d ][N  @  ¯Ä€¢Ø?d Ð]Ùß·Ü @  ¯Å€£Ø?d ^¹â @  ¯Æ€¤Ø?d P^‚ˆ®< @  ¯Ç€¥Ø?d ^! @  ¯È€¦Ø?d Ð^œ° Á @  ¯É€§Ø?d _jÈñ @  ¯Ê€¨Ø?d P_ûß/ @  ¯Ë€©Ø?d _…©Ë› @  ¯uÐ`Ì€ªØ?d Ð_8ÜE @  ¯Í€«Ø?d (`ýBÇ" @  ¯΀¬Ø?d h`ÓÐü @  ¯Ï€­Ø?d ¨`NÛ^? @  ¯Ѐ®Ø?d è`ÌJIá @  ¯Ñ€¯Ø?d (a¥Àê= @  ¯Ò€°Ø?d ha'Qýã @  ¯Ó€±Ø?d ¨a°éW @  ¯Ô€²Ø?d èa2’þ‰ @  ¯Õ€³Ø?d (bëTð· @  ¯Ö€´Ø?d hbiÅçi @  ¯×€µØ?d ¨bõlWJ @  ¯Ø€¶Ø?d èbwý@” @  ¯Ù€·Ø?d (c{'¤ @  ¯Ú€¸Ø?d hcù¶–z @  ¯Û€¹Ø?d ¨cnä‚Î @  ¯Ü€ºØ?d ècìu• @  ¯Ý€»Ø?d (d±¹Èà @  ¯Þ€¼Ø?d hd3(ß> @  ¯߀½Ø?d ¨d&vM @  ¯à€¾Ø?d èd‘·a“ @  ¯á€¿Ø?d (e•Úî‚ @  ¯â€ÀØ?d€ he|² @  °€ÁØ?d ¨e I/ @  °€ÂØ?d èeˆ•^ñ @  °€ÃØ?d (f”«" @  °€ÄØ?d hf‹¼ü @  °€ÅØ?d ¨fDS¥ @  °€ÆØ?d èfÆD{ @  °€ÇØ?d (giÚ1 @  °€ÈØ?d hg†øÍï @  ° €ÉØ?d ¨gÔã"¶ @  ° €ÊØ?d ègVr5h @  ° €ËØ?d (hãFìg @  ° €ÌØ?d hha×û¹ @  ° €ÍØ?d ¨h3Ìà @  °€ÎØ?d èh±]> @  °€ÏØ?d (i»ÄÁx @  °€ÐØ?d hi9UÖ¦ @  °€ÑØ?d ¨ikN9ÿ @  °€ÒØ?d èiéß.! @  °€ÓØ?d (jõPÛò @  °€ÔØ?d hjwÁÌ, @  °€ÕØ?d ¨j%Ú#u @  °€ÖØ?d èj§K4« @  °€ר?d (ke#ªá @  °€ØØ?d hkç²½? @  °€ÙØ?d ¨kµ©Rf @  °€ÚØ?d èk78E¸ @  °€ÛØ?d (l¯½ã¥ @  °€ÜØ?d hl-,ô{ @  °€ÝØ?d ¨l7" @  °€ÞØ?d èlý¦ ü @  °€ߨ?d (m{ŽÐÖ @  ° €àØ?d hmùÇ @  °!€áØ?d ¨m«(Q @  °"€âØ?d èm)•? @  °#€ãØ?d (n5Ê\ @  °$€äØ?d hn·‹Ý‚ @  °%€åØ?d ¨nå2Û @  °&€æØ?d èng% @  °'€çØ?d (o¥i»O @  °(€èØ?d ho'ø¬‘ @  °)€éØ?d ¨ouãCÈ @  °*€êØ?d èo÷rT @  °+€ëØ?d (pÈg½¶ @  °,€ìØ?d hpJöªh @  °-€íØ?d ¨píE1 @  °.€îØ?d èpš|Rï @  °/€ïØ?d (qå© @  °0€ðØ?d hqt‡w @  °1€ñØ?d ¨q@oh. @  °2€òØ?d èqÂþð @  °3€óØ?d (rÞqŠ# @  °4€ôØ?d hr\àý @  °5€õØ?d ¨rûr¤ @  °6€öØ?d èrŒjez @  °7€÷Ø?d (sNû0 @  °8€øØ?d hsÌ“ìî @  °9€ùØ?d ¨sžˆ· @  °:€úØ?d èsi @  °;€ûØ?d (t„œ²t @  °<€üØ?d ht ¥ª @  °=€ýØ?d ¨tTJó @  °>€þØ?d ètÖ‡]- @  °?€ÿØ?d (ulY“ @  °@€Ù?d huîÈ„Ä @  °A€Ù?d ¨u¼Ók @  °B€Ù?d èu>B|C @  °C€Ù?d (v"͉ @  °D€Ù?d hv \žN @  °E€Ù?d ¨vòGq @  °F€Ù?d èvpÖfÉ @  °G€Ù?d (w²¾øƒ @  °H€Ù?d hw0/ï] @  °I€ Ù?d ¨wb4 @  °J€ Ù?d èwà¥Ú @  °K€ Ù?d (xU‘ÎÕ @  °L€ Ù?d hx×Ù  @  °M€ Ù?d ¨x…6R @  °N€Ù?d èxŠ!Œ @  °O€Ù?d (y ãÊ @  °P€Ù?d hy‚ô @  °Q€Ù?d ¨yÝ™M @  °R€Ù?d èy_ “ @  °S€Ù?d (zC‡ù@ @  °T€Ù?d hzÁîž @  °U€Ù?d ¨z“ Ç @  °V€Ù?d èzœ @  °W€Ù?d ({ÓôˆS @  °X€Ù?d h{QeŸ @  °Y€Ù?d ¨{~pÔ @  °Z€Ù?d è{ïg  @  °[€Ù?d (|jÁ @  °\€Ù?d h|›ûÖÉ @  °]€Ù?d ¨|Éà9 @  °^€Ù?d è|Kq.N @  °_€Ù?d (}ÍYòd @  °`€ Ù?d h}OÈåº @  °a€!Ù?d ¨}Ó ã @  °b€"Ù?d è}ŸB= @  °c€#Ù?d (~ƒÍèî @  °d€$Ù?d h~\ÿ0 @  °e€%Ù?d ¨~SGi @  °f€&Ù?d è~ÑÖ· @  °g€'Ù?d (¾™ý @  °h€(Ù?d h‘/Ž# @  °i€)Ù?d ¨uЀ'Ã4az @  °j€*Ù?d èA¥v¤ @  °k€+Ù?d @€®ÐÁ @  °l€,Ù?d €€Ž%Ã< @  °m€-Ù?d À€~Z9E @  °n€.Ù?d ®µ­ @  °o€/Ù?d @öRìÝ @  °p€0Ù?d €Ö§î# @  °q€1Ù?d À&ØZ @  °r€2Ù?d ‚»œ´› @  °s€3Ù?d @‚¸ÆöW @  °t€4Ù?d €‚˜3ô© @  °u€5Ù?d À‚hLÐ @  °v€6Ù?d ƒ¸‚8 @  °w€7Ù?d @ƒ(µ‡D @  °x€8Ù?d €ƒ@…º @  °y€9Ù?d Àƒø?à @  °z€:Ù?d „áqŒÌ @  °{€;Ù?d @„â+Î @  °|€<Ù?d €„ÂÞÌþ @  °}€=Ù?d À„2¡6‡ @  °~€>Ù?d …âéºo @  °€?Ù?d @…‹ÞÁ @  °€€@Ù?d €…«ìÜ? @  °€AÙ?d À…[“&F @  °‚€BÙ?d †Æ×†‡ @  °ƒ€CÙ?d @†ÅÄK @  °„€DÙ?d €†åxƵ @  °…€EÙ?d À†<Ì @  °†€FÙ?d ‡ÅO°$ @  °‡€GÙ?d @‡UþµX @  °ˆ€HÙ?d €‡u ·¦ @  °‰€IÙ?d À‡…tMß @  °Š€JÙ?d ˆ±‹Á @  °‹€KÙ?d @ˆ²Ñƒ @  °Œ€LÙ?d €ˆ’$ð @  °€MÙ?d Àˆb[{‰ @  °Ž€NÙ?d ‰²÷a @  °€OÙ?d @‰êS® @  °€PÙ?d €‰ʦ¬ï @  °‘€QÙ?d À‰:ÙV– @  °’€RÙ?d ЧöW @  °“€SÙ?d @Š¤Ç´› @  °”€TÙ?d €Š„2¶e @  °•€UÙ?d ÀŠtML @  °–€VÙ?d ‹¤Àô @  °—€WÙ?d @‹4´Åˆ @  °˜€XÙ?d €‹AÇv @  °™€YÙ?d À‹ä>= @  °š€ZÙ?d ŒýpÎ @  °›€[Ù?d @Œþ*ŒÌ @  °œ€\Ù?d €ŒÞߎ2 @  °€]Ù?d ÀŒ. tK @  °ž€^Ù?d þèø£ @  °Ÿ€_Ù?d @*¿¿ @  ° €`Ù?d € ì½A @  °¡€aÙ?d Àú“G8 @  °¢€bÙ?d Žg×çù @  °£€cÙ?d @Žd¥5 @  °¤€dÙ?d €ŽDx§Ë @  °¥€eÙ?d ÀŽ´]² @  °¦€fÙ?d dOÑZ @  °§€gÙ?d @ôþÔ& @  °¨€hÙ?d €Ô ÖØ @  °©€iÙ?d À$t,¡ @  °ª€jÙ?d šª @  °«€kÙ?d @™ðÒß @  °¬€lÙ?d €¹Ð! @  °­€mÙ?d ÀIz*X @  °®€nÙ?d ‘™2¦° @  °¯€oÙ?d @‘ÁrÿÀ @  °°€pÙ?d €‘á‡ý> @  °±€qÙ?d À‘øG @  °²€rÙ?d ’Œ¼§† @  °³€sÙ?d @’æåJ @  °´€tÙ?d €’¯ç´ @  °µ€uÙ?d À’_lÍ @  °¶€vÙ?d “$‘% @  °·€wÙ?d @“•”Y @  °¸€xÙ?d €“?`–§ @  °¹€yÙ?d À“ÏlÞ @  °º€zÙ?d ”ÖQŸÑ @  °»€{Ù?d @”Õ Ý @  °¼€|Ù?d €”õþßã @  °½€}Ù?d À”%š @  °¾€~Ù?d •ÕÉ©r @  °¿€Ù?d @•B©© @  °À€€Ù?d €•b\« @  °Á€Ù?d À•’#Qø @  °€‚Ù?d –gñ9 @  °ÀƒÙ?d @– =³õ @  °Ä€„Ù?d €–,ȱ  @  °Å€…Ù?d À–Ü·Kr @  °Æ€†Ù?d — ÿÇš @  °Ç€‡Ù?d @—œNÂæ @  °È€ˆÙ?d €—¼»À @  °É€‰Ù?d À—LÄ:a @  °Ê€ŠÙ?d ˜x;¶| @  °Ë€‹Ù?d @˜{aô° @  °Ì€ŒÙ?d €˜[”öN @  °Í€Ù?d À˜«ë 7 @  °΀ŽÙ?d ™{£€ß @  °Ï€Ù?d @™#ãÙ¯ @  °ЀÙ?d €™ÛQ @  °Ñ€‘Ù?d À™ói!( @  °Ò€’Ù?d šn-é @  °Ó€“Ù?d @šmwÃ% @  °Ô€”Ù?d €šM‚ÁÛ @  °Õ€•Ù?d Àš½ý;¢ @  °Ö€–Ù?d ›mµ·J @  °×€—Ù?d @›ý²6 @  °Ø€˜Ù?d €›Ýñ°È @  °Ù€™Ù?d À›-ŽJ± @  °Ú€šÙ?d œ4À¹¾ @  °Û€›Ù?d @œ7šûr @  °Ü€œÙ?d €œoùŒ @  °Ý€Ù?d Àœçõ @  °Þ€žÙ?d 7X @  °߀ŸÙ?d @ã©È @  °à€ Ù?d €Ã\Êÿ @  °á€¡Ù?d À3#0† @  °â€¢Ù?d€ žÚ¤Œá @  ±€£Ù?d @ž8¿† @  ±€¤Ù?d €žJ„ú @  ±€¥Ù?d Àž-|…n @  ±€¦Ù?d Ÿý4 † @  ±€§Ù?d @Ÿ£7S€ @  ±€¨Ù?d €ŸƒÂQ~ @  ±€©ÙuР?d ÀŸ½ô} @  ±€ªÙ?d  Ì* @  ± €«Ù?d X  “: @  ± €¬Ù?d ˜ *â‘Ä @  ± €­Ù?d Ø ÔP @  ± €®Ù?d ¡Ïœ¸ @  ± €¯Ù?d X¡ôÏ$R @  ±€°Ù?d ˜¡Ô:&¬ @  ±€±Ù?d Ø¡GV½O @  ±€²Ù?d ¢ÚŽ @  ±€³Ù?d X¢¤¯ @  ±€´Ù?d ˜¢<ô¦Q @  ±€µÙ?d Ø¢ §Å @  ±€¶Ù?d £ÙŠ+- @  ±€·Ù?d X£‡‰q+ @  ±€¸Ù?d ˜£§|sÕ @  ±€¹Ù?d Ø£™±ÖÖ @  ±€ºÙ?d ¤€ÿ%Ù @  ±€»Ù?d X¤Fìœø @  ±€¼Ù?d ˜¤fž @  ±€½Ù?d ؤS/Ÿ’ @  ±€¾Ù?d ¥ƒgz @  ±€¿Ù?d X¥ÕÓ] @  ±€ÀÙ?d ˜¥õ&£ @  ±€ÁÙ?d Ø¥wL¹ð @  ± €ÂÙ?d ¦ê1 @  ±!€ÃÙ?d X¦,  @  ±"€ÄÙ?d ˜¦ î¢î @  ±#€ÅÙ?d ئ9Ø£z @  ±$€ÆÙ?d §é/’ @  ±%€ÇÙ?d X§·“u” @  ±&€ÈÙ?d ˜§—fwj @  ±'€ÉÙ?d ا©«Òi @  ±(€ÊÙ?d ¨T^t @  ±)€ËÙ?d X¨[GçU @  ±*€ÌÙ?d ˜¨{²å« @  ±+€ÍÙ?d بN„ä? @  ±,€ÎÙ?d ©žÌh× @  ±-€ÏÙ?d X©¥ŸP= @  ±.€ÐÙ?d ˜©…jRà @  ±/€ÑÙ?d Ø©É  @  ±0€ÒÙ?d ª‹Biá @  ±1€ÓÙ?d XªMQÐÀ @  ±2€ÔÙ?d ˜ªm¤Ò> @  ±3€ÕÙ?d تX’Óª @  ±4€ÖÙ?d «ˆÚ_B @  ±5€×Ù?d X«ÖÙD @  ±6€ØÙ?d ˜«ö,º @  ±7€ÙÙ?d Ø«Èᢹ @  ±8€ÚÙ?d ¬ѯQ¶ @  ±9€ÛÙ?d X¬¼è— @  ±:€ÜÙ?d ˜¬7Iêi @  ±;€ÝÙ?d جëý @  ±<€ÞÙ?d ­Ò7g @  ±=€ßÙ?d X­tÓf# @  ±>€àÙ?d ˜­T&dÝ @  ±?€áÙ?d Ø­xKÞ @  ±@€âÙ?d ®å~Ý @  ±A€ãÙ?d X®#Çü @  ±B€äÙ?d ˜®éÅ @  ±C€åÙ?d Ø®6ßÄ– @  ±D€æÙ?d ¯æ—H~ @  ±E€çÙ?d X¯¸”x @  ±F€èÙ?d ˜¯˜a† @  ±G€éÙ?d د¦¬µ… @  ±H€êÙ?d °r 7 @  ±I€ëÙ?d X°Þa° @  ±J€ìÙ?d ˜°þ”²è @  ±K€íÙ?d ذË¢³| @  ±L€îÙ?d ±ê?” @  ±M€ïÙ?d X± ¹~ @  ±N€ðÙ?d ˜±L€ @  ±O€ñÙ?d ر“ žc @  ±P€òÙ?d ²d>¢ @  ±Q€óÙ?d X²Èw‡ƒ @  ±R€ôÙ?d ˜²è‚…} @  ±S€õÙ?d زÝ´„é @  ±T€öÙ?d ³ ü @  ±U€÷Ù?d X³SÿR @  ±V€øÙ?d ˜³s Pù @  ±W€ùÙ?d سMÇõú @  ±X€úÙ?d ´T‰õ @  ±Y€ûÙ?d X´’š¿Ô @  ±Z€üÙ?d ˜´²o½* @  ±[€ýÙ?d Ø´‡Y¼¾ @  ±\€þÙ?d µW0V @  ±]€ÿÙ?d XµÑ&Ê @  ±^€Ú?d ˜µñÓ4 @  ±_€Ú?d صs¹®g @  ±`€Ú?d ¶îý¦ @  ±a€Ú?d X¶(î·‡ @  ±b€Ú?d ˜¶µy @  ±c€Ú?d ض=-´í @  ±d€Ú?d ·íe8 @  ±e€Ú?d X·³fb @  ±f€Ú?d ˜·““`ý @  ±g€ Ú?d Ø·­^Åþ @  ±h€ Ú?d ¸™¡Iã @  ±i€ Ú?d X¸_²ð @  ±j€ Ú?d ˜¸Gò< @  ±k€ Ú?d ظJqó¨ @  ±l€Ú?d ¹š9@ @  ±m€Ú?d X¹¡jGª @  ±n€Ú?d ˜¹ŸET @  ±o€Ú?d عóÞ· @  ±p€Ú?d º·~v @  ±q€Ú?d XºI¤ÇW @  ±r€Ú?d ˜ºiQÅ© @  ±s€Ú?d غ\gÄ= @  ±t€Ú?d »Œ/HÕ @  ±u€Ú?d X»Ò,Ó @  ±v€Ú?d ˜»òÙ- @  ±w€Ú?d ػ̵. @  ±x€Ú?d ¼ÕZF! @  ±y€Ú?d X¼Iÿ @  ±z€Ú?d ˜¼3¼ýþ @  ±{€Ú?d ؼŠüj @  ±|€Ú?d ½ÖÂp‚ @  ±}€Ú?d X½p&q´ @  ±~€ Ú?d ˜½PÓsJ @  ±€!Ú?d ؽŸèùº @  ±€€"Ú?d ¾¬Y{ @  ±€#Ú?d X¾Ä¿àZ @  ±‚€$Ú?d ˜¾äJ⤠@  ±ƒ€%Ú?d ؾÑ|ã0 @  ±„€&Ú?d ¿4oØ @  ±…€'Ú?d X¿_75Þ @  ±†€(Ú?d ˜¿Â7  @uÐÀ  ±‡€)Ú?d Ø¿A’# @  ±ˆ€*Ú?d 0À%ÿÃq @  ±‰€+Ú?d pÀãìzP @  ±Š€,Ú?d °ÀÃx® @  ±‹€-Ú?d ðÀö/y: @  ±Œ€.Ú?d 0Á&gõÒ @  ±€/Ú?d pÁ4Í8 @  ±Ž€0Ú?d °Á=ÁÏÆ @  ±€1Ú?d ðÁ®­T% @  ±€2Ú?d 0Â3éôä @  ±‘€3Ú?d pÂõúMÅ @  ±’€4Ú?d °ÂÕO; @  ±“€5Ú?d ðÂà9N¯ @  ±”€6Ú?d 0Ã0qÂG @  ±•€7Ú?d pÃnr˜A @  ±–€8Ú?d °ÃN‡š¿ @  ±—€9Ú?d ðÃpJ?¼ @  ±˜€:Ú?d 0Äi̳ @  ±™€;Ú?d pįu’ @  ±š€<Ú?d °Äâwl @  ±›€=Ú?d ðĺÔvø @  ±œ€>Ú?d 0Åjœú @  ±€?Ú?d pÅ<(î7 @  ±ž€@Ú?d °ÅÝìÉ @  ±Ÿ€AÚ?d ðÅž·Pš @  ± €BÚ?d 0Æóð[ @  ±¡€CÚ?d pÆÅàIz @  ±¢€DÚ?d °ÆåK„ @  ±£€EÚ?d ðÆÐ#J @  ±¤€FÚ?d 0ÇkÆø @  ±¥€GÚ?d pÇ^hœþ @  ±¦€HÚ?d °Ç~ž @  ±§€IÚ?d ðÇ@P; @  ±¨€JÚ?d 0Èt¯· @  ±©€KÚ?d pȲ¼? @  ±ª€LÚ?d °È’I Á @  ±«€MÚ?d ðȧ U @  ±¬€NÚ?d 0Éw7½ @  ±­€OÚ?d pÉLd¹W @  ±®€PÚ?d °Él‘»© @  ±¯€QÚ?d ðÉÿý J @  ±°€RÚ?d 0Êb¹€‹ @  ±±€SÚ?d pʤª9ª @  ±²€TÚ?d °Ê„_;T @  ±³€UÚ?d ðʱi:À @  ±´€VÚ?d 0Ëa!¶( @  ±µ€WÚ?d pË?"ì. @  ±¶€XÚ?d °Ë×îÐ @  ±·€YÚ?d ðË!KÓ @  ±¸€ZÚ?d 0Ì8T¸Ü @  ±¹€[Ú?d pÌþGý @  ±º€\Ú?d °ÌÞ² @  ±»€]Ú?d ðÌë„— @  ±¼€^Ú?d 0Í;ÌŽ @  ±½€_Ú?d pÍ(I @  ±¾€`Ú?d °Í½Ý· @  ±¿€aÚ?d ðÍ‘°7v @  ±À€bÚ?d 0Î ô—· @  ±Á€cÚ?d pÎÊç.– @  ±€dÚ?d °Îê,h @  ±ÀeÚ?d ðÎß$-ü @  ±Ä€fÚ?d 0Ïl¡ @  ±Å€gÚ?d pÏQoû @  ±Æ€hÚ?d °Ïqšùì @  ±Ç€iÚ?d ðÏOW\ï @  ±È€jÚ?d 0Ðñ‰à] @  ±É€kÚ?d pÐ7šY| @  ±Ê€lÚ?d °Ðo[‚ @  ±Ë€mÚ?d ðÐ"YZ @  ±Ì€nÚ?d 0ÑòÖþ @  ±Í€oÚ?d pÑÉBî @  ±΀pÚ?d °Ñé·ìê @  ±Ï€qÚ?d ðÑzÛw  @  ±ЀrÚ?d 0ÒçŸ×È @  ±Ñ€sÚ?d pÒ!Œné @  ±Ò€tÚ?d °Òyl @  ±Ó€uÚ?d ðÒ4Omƒ @  ±Ô€vÚ?d 0Óäák @  ±Õ€wÚ?d pÓº»m @  ±Ö€xÚ?d °Óšñ¹“ @  ±×€yÚ?d ðÓ¤< @  ±Ø€zÚ?d 0Ô½rïŸ @  ±Ù€{Ú?d pÔ{aV¾ @  ±Ú€|Ú?d °Ô[”T@ @  ±Û€}Ú?d ðÔn¢UÔ @  ±Ü€~Ú?d 0Õ¾êÙ< @  ±Ý€Ú?d pÕõ˜™‰ @  ±Þ€€Ú?d °ÕÕm›w @  ±߀Ú?d ðÕW'$ @  ±à€‚Ú?d 0ÖÊC‡å @  ±á€ƒÚ?d pÖ P>Ä @  ±â€„Ú?d€ °ÖíâË: @  ²€…Ú?d ðÖ9•‚‡ @  ²€†Ú?d 0×éÝo @  ²€‡Ú?d p×r—¯„ @  ²€ˆÚ?d °×Rb­z @  ²€‰Ú?d ð×¢W @  ²€ŠÚ?d 0Ø–âÛ @  ²€‹Ú?d pØžC=E @  ²€ŒÚ?d °Ø¾¶?» @  ² €Ú?d ðØNÉÅ @  ² €ŽÚ?d 0ÙžI* @  ² €Ú?d pÙ`›Š- @  ² €Ú?d °Ù@nˆÓ @  ² €‘Ú?d ðÙ°rª @  ²€’Ú?d 0Ú-UÒk @  ²€“Ú?d pÚˆU Ð @  ²€”Ú?d °Ú¨ . @  ²€•Ú?d ðÚXßòW @  ²€–Ú?d 0Ûˆ—~¿ @  ²€—Ú?d pÛÝßT @  ²€˜Ú?d °Û3(ݪ @  ²€™Ú?d ðÛÃW'Ó @  ²€šÚ?d 0ÜÚÔÜ @  ²€›Ú?d pÜÒ¸2‡ @  ²€œÚ?d °ÜòM0y @  ²€Ú?d ðÜ2Ê @  ²€žÚ?d 0ÝÒzFè @  ²€ŸÚ?d pݱ׼3 @  ²€ Ú?d °Ý‘"¾Í @  ²€¡Ú?d ðÝa]D´ @  ²€¢Ú?d 0Þüäu @  ²€£Ú?d pÞH~ @  ² €¤Ú?d °Þhê€ @  ²!€¥Ú?d ðÞ˜•ãù @  ²"€¦Ú?d 0ßHÝo @  ²#€§Ú?d pßÓ—Îú @  ²$€¨Ú?d uÐà/°ßóbÌ @  ²%€©Ú?d ðß6} @  ²&€ªÚ?d Hà¹h‹ @  ²'€«Ú?d ˆà°|›ð @  ²(€¬Ú?d Èà2íŒ. @  ²)€­Ú?d áKía @  ²*€®Ú?d HáÚú¿ @  ²+€¯Ú?d ˆáN¤,˜ @  ²,€°Ú?d ÈáÌ5;F @  ²-€±Ú?d â#Ÿv  @  ².€²Ú?d Hâ¡aþ @  ²/€³Ú?d ˆâ¦j¬e @  ²0€´Ú?d Èâ$û»» @  ²1€µÚ?d ã†]Úô @  ²2€¶Ú?d HãÌÍ* @  ²3€·Ú?d ˆã=âyá @  ²4€¸Ú?d Èã¿sn? @  ²5€¹Ú?d äÔÓp— @  ²6€ºÚ?d HäVBgI @  ²7€»Ú?d ˆäü‡”2 @  ²8€¼Ú?d Èä~ƒì @  ²9€½Ú?d åܰ⣠@  ²:€¾Ú?d Hå^!õ} @  ²;€¿Ú?d ˆåo¸— @  ²<€ÀÚ?d Èåí)I @  ²=€ÁÚ?d æƒU/ @  ²>€ÂÚ?d Hæ€Bñ @  ²?€ÃÚ?d ˆæ8w®H @  ²@€ÄÚ?d Èæºæ¹– @  ²A€ÅÚ?d ç@ØÙ @  ²B€ÆÚ?d HçšÑÏ @  ²C€ÇÚ?d ˆç£ÿ{Ì @  ²D€ÈÚ?d Èç!nl @  ²E€ÉÚ?d èg ¨ @  ²F€ÊÚ?d Hèåîv @  ²G€ËÚ?d ˆèO+é  @  ²H€ÌÚ?d ÈèͺþÓ @  ²I€ÍÚ?d éoŸœ @  ²J€ÎÚ?d HéíˆB @  ²K€ÏÚ?d ˆé±ó^e @  ²L€ÐÚ?d Èé3bI» @  ²M€ÑÚ?d êÜÈÝ @  ²N€ÒÚ?d Hê^Y @  ²O€ÓÚ?d ˆêY=Þ˜ @  ²P€ÔÚ?d ÈêÛ¬ÉF @  ²Q€ÕÚ?d ëy ¨  @  ²R€ÖÚ?d Hëû›¿× @  ²S€×Ú?d ˆëµ  @  ²T€ØÚ?d Èë@$ @  ²U€ÙÚ?d ì+„j @  ²V€ÚÚ?d Hì©´ @  ²W€ÛÚ?d ˆìÐæÏ @  ²X€ÜÚ?d ÈìAñ @  ²Y€ÝÚ?d í#ç^ @  ²Z€ÞÚ?d Hí¡v‡€ @  ²[€ßÚ?d ˆí`¿h{ @  ²\€àÚ?d Èíâ.¥ @  ²]€áÚ?d î „2à @  ²^€âÚ?d Hî% @  ²_€ãÚ?d ˆî™wÏ6 @  ²`€äÚ?d ÈîæØè @  ²a€åÚ?d ï¹@¹§ @  ²b€æÚ?d Hï;Ñ®y @  ²c€çÚ?d ˆïÿ² @  ²d€èÚ?d Èï€n l @  ²e€éÚ?d ðL^\y @  ²f€êÚ?d HðÎÏK§ @  ²g€ëÚ?d ˆðd ¸Ü @  ²h€ìÚ?d Èð曯 @  ²i€íÚ?d ñD=ÎM @  ²j€îÚ?d HñƬٓ @  ²k€ïÚ?d ˆñšÒ´ @  ²l€ðÚ?d ÈñCj @  ²m€ñÚ?d ò÷éU  @  ²n€òÚ?d HòuxBÒ @  ²o€óÚ?d ˆòrI @  ²p€ôÚ?d Èò𘗠@  ²q€õÚ?d óR+ùØ @  ²r€öÚ?d Hóкî @  ²s€÷Ú?d ˆóé”ZÍ @  ²t€øÚ?d ÈókM @  ²u€ùÚ?d ô¥S» @  ²v€úÚ?d Hô‚4De @  ²w€ûÚ?d ˆô(ñ· @  ²x€üÚ?d Èôª` À @  ²y€ýÚ?d õÆÁ @  ²z€þÚ?d HõŠWÖQ @  ²{€ÿÚ?d ˆõÙo-% @  ²|€Û?d Èõ[þ:û @  ²}€Û?d ö´Tw @  ²~€Û?d Hö6Å`C @  ²€Û?d ˆömö¼Ë @  ²€€Û?d Èöïg« @  ²€Û?d ÷MÁÊZ @  ²‚€Û?d H÷ÏPÝ„ @  ²ƒ€Û?d ˆ÷ö~iO @  ²„€Û?d È÷tï~‘ @  ²…€ Û?d ø2þ+ @  ²†€ Û?d Hø°oõ @  ²‡€ Û?d ˆøªûŽ @  ²ˆ€ Û?d Èø˜;ìP @  ²‰€ Û?d ù: @  ²Š€Û?d Hù¸ šÁ @  ²‹€Û?d ˆùärLæ @  ²Œ€Û?d Èùfã[8 @  ²€Û?d ú‰I^ @  ²Ž€Û?d Hú Ø€ @  ²€Û?d ˆú ¼Ì @  ²€Û?d ÈúŽ-ÛÅ @  ²‘€Û?d û,‹ºŠ @  ²’€Û?d Hû®­T @  ²“€Û?d ˆû—4Ÿ @  ²”€Û?d Èû¥A @  ²•€Û?d ü~é @  ²–€Û?d Hüü”7 @  ²—€Û?d ˆüVQôL @  ²˜€Û?d ÈüÔÀã’ @  ²™€Û?d ývf‚Ý @  ²š€Û?d Hýô÷• @  ²›€Û?d ˆý5>zø @  ²œ€ Û?d Èý·¯m& @  ²€!Û?d þX @ @  ²ž€"Û?d HþÚ”7ž @  ²Ÿ€#Û?d ˆþÌöݵ @  ² €$Û?d ÈþNgÊk @  ²¡€%Û?d ÿìÁ«$ @  ²¢€&Û?d HÿnP¼ú @  ²£€'Û?d ˆÿW~1 @  ²¤€uÐ(Û?d ÈÿÕïï @  ²¥€)Û?d £ðº_ @  ²¦€*Û?d `!a­ @  ²§€+Û?d  ‹¤^ú @  ²¨€,Û?d à 5I$ @  ²©€-Û?d «“(k @  ²ª€.Û?d `)?µ @  ²«€/Û?d  u|é’ @  ²¬€0Û?d à÷íþL @  ²­€1Û?d G³* @  ²®€2Û?d `šÖ¤ô @  ²¯€3Û?d  ²io @  ²°€4Û?d à#~± @  ²±€5Û?d ½…þ @  ²²€6Û?d `?  @  ²³€7Û?d  :¼ë @  ²´€8Û?d à„««5 @  ²µ€9Û?d ï µ @  ²¶€:Û?d `mš¢C @  ²·€;Û?d  Ç_Q8 @  ²¸€<Û?d àEÎFæ @  ²¹€=Û?d çh'© @  ²º€>Û?d `eù0w @  ²»€?Û?d  T`Ê @  ²¼€@Û?d àÖñÝC @  ²½€AÛ?d 9[% @  ²¾€BÛ?d `»Ê‡û @  ²¿€CÛ?d  ¯kB @  ²À€DÛ?d à>|œ @  ²Á€EÛ?d #˜Ó @  ²€FÛ?d `¡  @  ²ÀGÛ?d  ˜'¾Æ @  ²Ä€HÛ?d à¶© @  ²Å€IÛ?d \§È¢ @  ²Æ€JÛ?d `Þ6ß| @  ²Ç€KÛ?d  tó, @  ²È€LÛ?d àöb;Ù @  ²É€MÛ?d TÄZ– @  ²Ê€NÛ?d ` ÖUMH @  ²Ë€OÛ?d   Š+›o @  ²Ì€PÛ?d à ºŒ± @  ²Í€QÛ?d çÁ× @  ²΀RÛ?d ` eÖ  @  ²Ï€SÛ?d   bå’ @  ²ЀTÛ?d à àt L @  ²Ñ€UÛ?d BÒm @  ²Ò€VÛ?d ` ÀCzÝ @  ²Ó€WÛ?d   ùmÎ @  ²Ô€XÛ?d à {üÙÈ @  ²Õ€YÛ?d \Ç` @  ²Ö€ZÛ?d ` ’Íо @  ²×€[Û?d   8#Å @  ²Ø€\Û?d à º™4 @  ²Ù€]Û?d ?UT @  ²Ú€^Û?d ` š®BŠ @  ²Û€_Û?d   [g­q @  ²Ü€`Û?d à Ùöº¯ @  ²Ý€aÛ?d 6\÷É @  ²Þ€bÛ?d `´Íà @  ²߀cÛ?d  ¢¯ < @  ²à€dÛ?d à >â @  ²á€eÛ?d ‚˜|­ @  ²â€fÛ?d€ `tÊwÕ @  ³€gÛ?d  ¬¥‹7 @  ³€hÛ?d à.4œé @  ³€iÛ?d 'M6 @  ³€jÛ?d `¥Ü!Ï @  ³€kÛ?d  Á«Î @  ³€lÛ?d àC:š @  ³€mÛ?d /.¤% @  ³€nÛ?d `­¿³û @  ³ €oÛ?d  4ˆž1 @  ³ €pÛ?d ඉï @  ³ €qÛ?d œú?d @  ³ €rÛ?d `k(º @  ³ €sÛ?d  z„» @  ³€tÛ?d àø“e @  ³€uÛ?d 98“° @  ³€vÛ?d `»©„n @  ³€wÛ?d  GÎËH @  ³€xÛ?d àÅ_Ü– @  ³€yÛ?d k¶9Ó @  ³€zÛ?d `é'.  @  ³€{Û?d  P‚  @  ³€|Û?d àÁ•Ò @  ³€}Û?d cÕ«ç @  ³€~Û?d `áD¼9 @  ³€Û?d  Ré¬ @  ³€€Û?d àŠÃþr @  ³€Û?d   Hù @  ³€‚Û?d `"±_' @  ³€ƒÛ?d  FÆó& @  ³€„Û?d àÄWäø @  ³€…Û?d äà @  ³ €†Û?d `–uÔC @  ³!€‡Û?d  j›e @  ³"€ˆÛ?d à背» @  ³#€‰Û?d kÛì @  ³$€ŠÛ?d `éJ2 @  ³%€‹Û?d  =­3 @  ³&€ŒÛ?d ଺í @  ³'€Û?d c¸„Ø @  ³(€ŽÛ?d `á)“ @  ³)€Û?d  x¾Ì @  ³*€Û?d àú© @  ³+€‘Û?d Ðl™ @  ³,€’Û?d `RýG @  ³-€“Û?d  6ФF @  ³.€”Û?d à´³˜ @  ³/€•Û?d u®³M @  ³0€–Û?d `÷?¤“ @  ³1€—Û?d   Xëµ @  ³2€˜Û?d à‰Éük @  ³3€™Û?d ' . @  ³4€šÛ?d `¥±ð @  ³5€›Û?d  ÁÆ¢ñ @  ³6€œÛ?d àCWµ/ @  ³7€Û?d /C‹ @  ³8€žÛ?d `­ÒœÄ @  ³9€ŸÛ?d  ©RˆÒ @  ³:€ Û?d à+ß  @  ³;€¡Û?d  )‡ @  ³<€¢Û?d `ƒ±>Y @  ³=€£Û?d  çÆ’X @  ³>€¤Û?d àeW…† @  ³?€¥Û?d ã¤q @  ³@€¦Û?d `™r³¯ @  ³A€§Û?d  eü‰uÐ  @  ³B€¨Û?d àç„ëW @  ³C€©Û?d 8 !(#{ @  ³D€ªÛ?d x £¹4¥ @  ³E€«Û?d ¸ ÇΘ¤ @  ³F€¬Û?d ø E_z @  ³G€­Û?d 8!)K±O @  ³H€®Û?d x!«Ú¦‘ @  ³I€¯Û?d ¸!2í‹[ @  ³J€°Û?d ø!°|œ… @  ³K€±Û?d 8"šŸ* @  ³L€²Û?d x"=Ð @  ³M€³Û?d ¸"|y‘Ñ @  ³N€´Û?d ø"þè† @  ³O€µÛ?d 8#?]†Ú @  ³P€¶Û?d x#½Ì‘ @  ³Q€·Û?d ¸#A«Þ" @  ³R€¸Û?d ø#Ã:Éü @  ³S€¹Û?d 8$mÓ,¹ @  ³T€ºÛ?d x$ïB;g @  ³U€»Û?d ¸$‹5—f @  ³V€¼Û?d ø$ ¤€¸ @  ³W€½Û?d 8%e°¾ @  ³X€¾Û?d x%ç!©S @  ³Y€¿Û?d ¸%ñ¨T @  ³Z€ÀÛ?d ø%‘`¿Š @  ³[€ÁÛ?d 8&»ƒ  @  ³\€ÂÛ?d x&9ß @  ³]€ÃÛ?d ¸&]e²Þ @  ³^€ÄÛ?d ø&ßô¥ @  ³_€ÅÛ?d 8'G‚e @  ³`€ÆÛ?d x'Ö•» @  ³a€ÇÛ?d ¸'q±Ú @  ³b€ÈÛ?d ø'ó ÍC @  ³c€ÉÛ?d 8(pxW @  ³d€ÊÛ?d x(òé@Ê @  ³e€ËÛ?d ¸(–žìË @  ³f€ÌÛ?d ø(û @  ³g€ÍÛ?d 8)xÅ  @  ³h€ÎÛ?d x)úŠÒþ @  ³i€ÏÛ?d ¸)c½ÿ4 @  ³j€ÐÛ?d ø)á,èê @  ³k€ÑÛ?d 8*ËÏ^a @  ³l€ÒÛ?d x*I^I¿ @  ³m€ÓÛ?d ¸*-)å¾ @  ³n€ÔÛ?d ø*¯¸ò` @  ³o€ÕÛ?d 8+n òµ @  ³p€ÖÛ?d x+ìœåk @  ³q€×Û?d ¸+ûªM @  ³r€ØÛ?d ø+’j½“ @  ³s€ÙÛ?d 8,<ƒXÖ @  ³t€ÚÛ?d x,¾O @  ³u€ÛÛ?d ¸,Úeã  @  ³v€ÜÛ?d ø,Xôô× @  ³w€ÝÛ?d 8-4àÊâ @  ³x€ÞÛ?d x-¶qÝ< @  ³y€ßÛ?d ¸-²ñÉ* @  ³z€àÛ?d ø-0`Þô @  ³{€áÛ?d 8.ƒh @  ³|€âÛ?d x.˜¡ @  ³}€ãÛ?d ¸.üeÓ  @  ³~€äÛ?d ø.~ôÄ~ @  ³€åÛ?d 8/ãÕ¸ @  ³€€æÛ?d x/a‡Âf @  ³€çÛ?d ¸/à@ @  ³‚€èÛ?d ø/qšž @  ³ƒ€éÛ?d 800f @  ³„€êÛ?d x0”™'¸ @  ³…€ëÛ?d ¸0ð @  ³†€ìÛ?d ø0rœg @  ³‡€íÛ?d 81k¢R @  ³ˆ€îÛ?d x1œúµŒ @  ³‰€ïÛ?d ¸1͘F @  ³Š€ðÛ?d ø1‡\˜ @  ³‹€ñÛ?d 82­¿9 @  ³Œ€òÛ?d x2/..Í @  ³€óÛ?d ¸2KY‚Ì @  ³Ž€ôÛ?d ø2ÉÈ• @  ³€õÛ?d 83}•Ç @  ³€öÛ?d x3Šì‚ @  ³‘€÷Û?d ¸3v‹Í? @  ³’€øÛ?d ø3ôÚá @  ³“€ùÛ?d 84Zó?¤ @  ³”€úÛ?d x4Øb(z @  ³•€ûÛ?d ¸4¼„{ @  ³–€üÛ?d ø4>„“¥ @  ³—€ýÛ?d 85R­ @  ³˜€þÛ?d x5кN @  ³™€ÿÛ?d ¸5zy…A @  ³š€Ü?d ø5øè’Ÿ @  ³›€Ü?d 86Ò $ @  ³œ€Ü?d x6Pš3Ê @  ³€Ü?d ¸64íŸË @  ³ž€Ü?d ø6¶|ˆ @  ³Ÿ€Ü?d 87fϯp @  ³ €Ü?d x7ä^¸® @  ³¡€Ü?d ¸79÷ˆ @  ³¢€Ü?d ø7š¨àV @  ³£€ Ü?d 88ðz @  ³¤€ Ü?d x8›amß @  ³¥€ Ü?d ¸8ÿÁÞ @  ³¦€ Ü?d ø8}‡Ö @  ³§€ Ü?d 89“è5 @  ³¨€Ü?d x9“ÿë @  ³©€Ü?d ¸9 5Ò! @  ³ª€Ü?d ø9ˆ¤Åÿ @  ³«€Ü?d 8:¢Gst @  ³¬€Ü?d x: Ödª @  ³­€Ü?d ¸:D¡È« @  ³®€Ü?d ø:Æ0ßu @  ³¯€Ü?d 8;…ß  @  ³°€Ü?d x;…È~ @  ³±€Ü?d ¸;ys‡X @  ³²€Ü?d ø;û↠@  ³³€Ü?d 8<U uà @  ³´€Ü?d x<ךb @  ³µ€Ü?d ¸<³íÎ @  ³¶€Ü?d ø<1|Ù @  ³·€Ü?d 8=]hç÷ @  ³¸€Ü?d x=ßùð) @  ³¹€Ü?d ¸=Ûyä? @  ³º€ Ü?d ø=Yèóá @  ³»€!Ü?d 8>s Ej @  ³¼€"Ü?d x>ñšR´ @  ³½€#Ü?d ¸>•íþµ @  ³¾€$Ü?d ø>|ék @  ³¿€%Ü?d 8?iÈÈœ @  ³À€&Ü?d x?ëYßB @  ³Á€'Ü?duÐ@7 ¸?>d @  ³€(Ü?d ø?•¯‡º @  ³À)Ü?d P@á¤+Ì @  ³Ä€*Ü?d @ÁQ)2 @  ³Å€+Ü?d Ð@B @  ³Æ€,Ü?d A× û @  ³Ç€-Ü?d PAéǹø @  ³È€.Ü?d AÉ2» @  ³É€/Ü?d ÐAòaƒì @  ³Ê€0Ü?d Bo%#- @  ³Ë€1Ü?d PBZ"¹ @  ³Ì€2Ü?d Bzæ G @  ³Í€3Ü?d ÐB¼õ™f @  ³΀4Ü?d Cl½Ž @  ³Ï€5Ü?d PCÿÑŽm @  ³Ѐ6Ü?d Cß$Œ“ @  ³Ñ€7Ü?d ÐC'Ö• @  ³Ò€8Ü?d D˜i%š @  ³Ó€9Ü?d PD­_$ @  ³Ô€:Ü?d Dª&ð @  ³Õ€;Ü?d ÐDK¹ŸÑ @  ³Ö€<Ü?d E›ñ9 @  ³×€=Ü?d PE¥<¶: @  ³Ø€>Ü?d E…É´Ä @  ³Ù€?Ü?d ÐEÓ} ã @  ³Ú€@Ü?d FN9" @  ³Û€AÜ?d PF{¶ @  ³Ü€BÜ?d F[úH @  ³Ý€CÜ?d ÐFéºi @  ³Þ€DÜ?d GM¡6 @  ³߀EÜ?d PGÏËŠÒ @  ³à€FÜ?d Gï>ˆ, @  ³á€GÜ?d ÐG±=Ò* @  ³â€HÜ?d€ H”öŽ @  ´€IÜ?d PH×ã¿3 @  ´€JÜ?d H÷½Í @  ´€KÜ?d ÐHôLÿ @  ´€LÜ?d I$sé @  ´€MÜ?d PIÔ{‰ @  ´€NÜ?d IôŽ‹n @  ´€OÜ?d ÐIoìþ @  ´€PÜ?d Jœ+L? @  ´ €QÜ?d PJlT¶F @  ´ €RÜ?d JL¡´¸ @  ´ €SÜ?d ÐJOûöt @  ´ €TÜ?d KŸ³zœ @  ´ €UÜ?d PKoÌ€å @  ´€VÜ?d KO9‚ @  ´€WÜ?d ÐKr)¹‡ @  ´€XÜ?d LkgJˆ @  ´€YÜ?d PL›°ñ @  ´€ZÜ?d L»í² @  ´€[Ü?d ÐL¸·ðà @  ´€\Ü?d Mhÿ|+ @  ´€]Ü?d PM˜€†R @  ´€^Ü?d M¸u„¬ @  ´€_Ü?d ÐMÐ#Úà @  ´€`Ü?d NMgz! @  ´€aÜ?d PN½€X @  ´€bÜ?d N킦 @  ´€cÜ?d ÐNž·Àj @  ´€dÜ?d ONÿL‚ @  ´€eÜ?d PO¾€¶û @  ´€fÜ?d Ožu´ @  ´€gÜ?d ÐO²c¨) @  ´ €hÜ?d P ½› @  ´!€iÜ?d PPüÂîâ @  ´"€jÜ?d PÜ7ì @  ´#€kÜ?d ÐPßm®Ð @  ´$€lÜ?d Q%"8 @  ´%€mÜ?d PQÿZØA @  ´&€nÜ?d Q߯ڿ @  ´'€oÜ?d ÐQ*N½/ @  ´(€pÜ?d R· î @  ´)€qÜ?d PRGuç— @  ´*€rÜ?d Rg€åi @  ´+€sÜ?d ÐRdÚ§¥ @  ´,€tÜ?d S´’+M @  ´-€uÜ?d PSDíÑ4 @  ´.€vÜ?d SdÓÊ @  ´/€wÜ?d ÐSYèV @  ´0€xÜ?d T@FY @  ´1€yÜ?d PT°9á  @  ´2€zÜ?d TÌãÞ @  ´3€{Ü?d ÐT“–¡ @  ´4€|Ü?d UCÞ-ú @  ´5€}Ü?d PU³¡×ƒ @  ´6€~Ü?d U“TÕ} @  ´7€Ü?d ÐU”ʲ @  ´8€€Ü?d V‹Ðjs @  ´9€Ü?d PV{¯  @  ´:€‚Ü?d V[Z’ô @  ´;€ƒÜ?d ÐVXÐ8 @  ´<€„Ü?d WˆH\Ð @  ´=€…Ü?d PWx7¦© @  ´>€†Ü?d WX¤W @  ´?€‡Ü?d ÐWÚÓ¾é @  ´@€ˆÜ?d Xî,2ô @  ´A€‰Ü?d PXSÈ @  ´B€ŠÜ?d X>¦Ês @  ´C€‹Ü?d ÐX=üˆ¿ @  ´D€ŒÜ?d Yí´W @  ´E€Ü?d PYËþ. @  ´F€ŽÜ?d Y=>üÐ @  ´G€Ü?d ÐYÈß›@ @  ´H€Ü?d ZU›; @  ´I€‘Ü?d PZ¥äÁø @  ´J€’Ü?d Z…à @  ´K€“Ü?d ÐZ†KÊ @  ´L€”Ü?d [V " @  ´M€•Ü?d P[¦|÷[ @  ´N€–Ü?d [†‰õ¥ @  ´O€—Ü?d Ð[»™Î9 @  ´P€˜Ü?d \¢×=6 @  ´Q€™Ü?d P\R¨ÇO @  ´R€šÜ?d \r]ű @  ´S€›Ü?d Ð\q‡} @  ´T€œÜ?d ]¡O • @  ´U€Ü?d P]Q0ñì @  ´V€žÜ?d ]qÅó @  ´W€ŸÜ?d Ð]“­^ @  ´X€ Ü?d ^„× Ÿ @  ´Y€¡Ü?d P^t¨÷æ @  ´Z€¢Ü?d ^T]õ @  ´[€£Ü?d Ð^W·Ô @  ´\€¤Ü?d _‡O;< @  ´]€¥Ü?d P_w0ÁE @  ´^€¦Ü?d _WÅû @  ´uÐ`_€§Ü?d Ð_{Óß— @  ´`€¨Ü?d (`Å+j @  ´a€©Ü?d h`5Tv @  ´b€ªÜ?d ¨`¡’ˆ @  ´c€«Ü?d è`ûÐD @  ´d€¬Ü?d (aƳ\¬ @  ´e€­Ü?d ha6̦Õ @  ´f€®Ü?d ¨a9¤+ @  ´g€¯Ü?d èaãØÃ» @  ´h€°Ü?d (b~œcz @  ´i€±Ü?d hbŽã™ @  ´j€²Ü?d ¨b®›ý @  ´k€³Ü?d èb­LÙ1 @  ´l€´Ü?d (c}UÙ @  ´m€µÜ?d hc{¯  @  ´n€¶Ü?d ¨c­Ž­^ @  ´o€·Ü?d ècž– @  ´p€¸Ü?d (d‰ÐeÍ @  ´q€¹Ü?d hdy¯Ÿ´ @  ´r€ºÜ?d ¨dYZJ @  ´s€»Ü?d èdZ߆ @  ´t€¼Ü?d (eŠHSn @  ´u€½Ü?d hez7© @  ´v€¾Ü?d ¨eZ«é @  ´w€¿Ü?d èeÂÄà´ @  ´x€ÀÜ?d (f_€@u @  ´y€ÁÜ?d hf¯ÿº  @  ´z€ÂÜ?d ¨f ¸ò @  ´{€ÃÜ?d èfŒPú> @  ´|€ÄÜ?d (g\vÖ @  ´}€ÅÜ?d hg¬gŒ¯ @  ´~€ÆÜ?d ¨gŒ’ŽQ @  ´€ÇÜ?d ègíÕ¤Þ @  ´€€ÈÜ?d (hÙ*(à @  ´€ÉÜ?d hh)UÒº @  ´‚€ÊÜ?d ¨h  ÐD @  ´ƒ€ËÜ?d èh ú’ˆ @  ´„€ÌÜ?d (iÚ²` @  ´…€ÍÜ?d hi*Íä @  ´†€ÎÜ?d ¨i 8æç @  ´‡€ÏÜ?d èiÿÙw @  ´ˆ€ÐÜ?d (jb!¶ @  ´‰€ÑÜ?d hj’âÛÏ @  ´Š€ÒÜ?d ¨j²Ù1 @  ´‹€ÓÜ?d èj±M›ý @  ´Œ€ÔÜ?d (ka @  ´€ÕÜ?d hk‘zíl @  ´Ž€ÖÜ?d ¨k±ï’ @  ´€×Ü?d èkŒŸÔ @  ´€ØÜ?d (l•Ñ' @  ´‘€ÙÜ?d hle®Ýx @  ´’€ÚÜ?d ¨lE[߆ @  ´“€ÛÜ?d èlFJ @  ´”€ÜÜ?d (m–I¢ @  ´•€ÝÜ?d hmf6ëÛ @  ´–€ÞÜ?d ¨mFÃé% @  ´—€ßÜ?d èm.•·i @  ´˜€àÜ?d (n³Ñ¨ @  ´™€áÜ?d hnC®íÑ @  ´š€âÜ?d ¨nc[ï/ @  ´›€ãÜ?d èn`­ã @  ´œ€äÜ?d (o°I!  @  ´€åÜ?d ho@6Ûr @  ´ž€æÜ?d ¨o`ÃÙŒ @  ´Ÿ€çÜ?d èoLÕÅ  @  ´ €èÜ?d (pò y @  ´¡€éÜ?d hptƒk @  ´¢€êÜ?d ¨p"• @  ´£€ëÜ?d èp!ÛÃY @  ´¤€ìÜ?d (qñ“O± @  ´¥€íÜ?d hqìµÈ @  ´¦€îÜ?d ¨q!·6 @  ´§€ïÜ?d èqÔøÐ¦ @  ´¨€ðÜ?d (rI¼pg @  ´©€ñÜ?d hr¹ÃŠ @  ´ª€òÜ?d ¨r™6ˆà @  ´«€óÜ?d èršlÊ, @  ´¬€ôÜ?d (sJ$FÄ @  ´­€õÜ?d hsº[¼½ @  ´®€öÜ?d ¨sš®¾C @  ´¯€÷Ü?d ès§¾…ß @  ´°€øÜ?d (t¾ðvÐ @  ´±€ùÜ?d htNŒ© @  ´²€úÜ?d ¨tnzŽW @  ´³€ûÜ?d ètm Ì› @  ´´€üÜ?d (u½h@s @  ´µ€ýÜ?d huMº  @  ´¶€þÜ?d ¨umâ¸ô @  ´·€ÿÜ?d èu—Eò7 @  ´¸€Ý?d (v Rö @  ´¹€Ý?d hvú~¨ @  ´º€Ý?d ¨vÚ‹ªq @  ´»€Ý?d èvÙÑè½ @  ´¼€Ý?d (w ™dU @  ´½€Ý?d hwùæž, @  ´¾€Ý?d ¨wÙœÒ @  ´¿€Ý?d èw[†l @  ´À€Ý?d (xoý q @  ´Á€ Ý?d hxŸ‚ð @  ´€ Ý?d ¨x¿wòö @  ´À Ý?d èx¼-°: @  ´Ä€ Ý?d (yle<Ò @  ´Å€ Ý?d hyœÆ« @  ´Æ€Ý?d ¨y¼ïÄU @  ´Ç€Ý?d èyI£Å @  ´È€Ý?d (zÔJ @  ´É€Ý?d hz$5ù} @  ´Ê€Ý?d ¨zÀûƒ @  ´Ë€Ý?d èzš¹O @  ´Ì€Ý?d ({×Ò5§ @  ´Í€Ý?d h{'­ÏÞ @  ´΀Ý?d ¨{XÍ  @  ´Ï€Ý?d è{:Hö¼ @  ´ЀÝ?d (|#³ @  ´Ñ€Ý?d h|ÓyÿÊ @  ´Ò€Ý?d ¨|óŒý4 @  ´Ó€Ý?d è|ðÖ¿ø @  ´Ô€Ý?d (} ž3 @  ´Õ€Ý?d h}ÐáÉi @  ´Ö€Ý?d ¨}ðË— @  ´×€Ý?d è}˜B•Û @  ´Ø€ Ý?d (~5 @  ´Ù€!Ý?d h~õyÏc @  ´Ú€"Ý?d ¨~ÕŒÍ @  ´Û€#Ý?d è~ÖÖQ @  ´Ü€$Ý?d (ž¹ @  ´Ý€%Ý?d höáùÀ @  ´Þ€&Ý?d ¨uЀ'Öû> @  ´߀'Ý?d èúç @  ´à€(Ý?d @€”¼f @  ´á€)Ý?d €€Ƨê? @  ´â€*Ý?d€ À€0õáG @  µ€+Ý?d €7p” @  µ€,Ý?d @¦gJ @  µ€-Ý?d €•ôsþ @  µ€.Ý?d Àed  @  µ€/Ý?d ‚3ãëÕ @  µ€0Ý?d @‚±rü  @  µ€1Ý?d €‚-ÛL( @  µ€2Ý?d À‚¯J[ö @  µ €3Ý?d ƒ;€yá @  µ €4Ý?d @ƒ¹n? @  µ €5Ý?d €ƒ.Cz‹ @  µ €6Ý?d Àƒ¬ÒmU @  µ €7Ý?d „iÓ‚ @  µ€8Ý?d @„ëŸÄ\ @  µ€9Ý?d €„Ú—JŸ @  µ€:Ý?d À„X]A @  µ€;Ý?d …ÌÌV @  µ€<Ý?d @…N]hˆ @  µ€=Ý?d €…Ù|< @  µ€>Ý?d À…[žkâ @  µ€?Ý?d †ÿÈÚ @  µ€@Ý?d @†nß @  µ€AÝ?d €† Ço' @  µ€BÝ?d À†ŽVxù @  µ€CÝ?d ‡œZî @  µ€DÝ?d @‡˜ M0 @  µ€EÝ?d €‡_Y„ @  µ€FÝ?d À‡ÎNZ @  µ€GÝ?d ˆe£Ÿ @  µ€HÝ?d @ˆç2˜A @  µ€IÝ?d €ˆÇ<12 @  µ €JÝ?d ÀˆE­&ì @  µ!€KÝ?d ‰Ñgû @  µ"€LÝ?d @‰Sö% @  µ#€MÝ?d €‰Ĥ‘ @  µ$€NÝ?d À‰F5O @  µ%€OÝ?d Šb³Ÿº @  µ&€PÝ?d @Šà"ˆd @  µ'€QÝ?d €Š|‹8G @  µ(€RÝ?d ÀŠþ/™ @  µ)€SÝ?d ‹jÐ Ž @  µ*€TÝ?d @‹èAP @  µ+€UÝ?d €‹ä @  µ,€VÝ?d À‹ý‚: @  µ-€WÝ?d Œ8^§í @  µ.€XÝ?d @ŒºÏ°3 @  µ/€YÝ?d €Œ‹Ç>ð @  µ0€ZÝ?d ÀŒ V). @  µ1€[Ý?d œ 9 @  µ2€\Ý?d @ ç @  µ3€]Ý?d €ˆ_S @  µ4€^Ý?d À Î @  µ5€_Ý?d ޳ÿ©¤ @  µ6€`Ý?d @Ž1n¾z @  µ7€aÝ?d €Ž­ÇY @  µ8€bÝ?d ÀŽ/V‡ @  µ9€cÝ?d »œ; @  µ:€dÝ?d @9 ,N @  µ;€eÝ?d €®_8ú @  µ<€fÝ?d À,Î/$ @  µ=€gÝ?d N‚ÞN @  µ>€hÝ?d @ÌÉ @  µ?€iÝ?d €Bfq @  µ@€jÝ?d ÀÀ‹q¯ @  µA€kÝ?d ‘TAS¸ @  µB€lÝ?d @‘ÖÐDf @  µC€mÝ?d €‘A‚PÒ @  µD€nÝ?d À‘ÃG  @  µE€oÝ?d ’ç•Èù @  µF€pÝ?d @’eß' @  µG€qÝ?d €’ù­o @  µH€rÝ?d À’{_ó @  µœ€ÆÝ?d ا¼‹H- @  µ€ÇÝ?d ¨Tæ‰è @  µž€ÈÝ?d X¨Öwž6 @  µŸ€ÉÝ?d ˜¨öy7E @  µ €ÊÝ?d بtè › @  µ¡€ËÝ?d ©à"Œ @  µ¢€ÌÝ?d X©b³R @  µ£€ÍÝ?d ˜©õáæ @  µ¤€ÎÝ?d Ø©wp8 @  µ¥€ÏÝ?d ªSö™Í @  µ¦€ÐÝ?d XªÑgŽ @  µ§€ÑÝ?d ˜ªMÎ>0 @  µ¨€ÒÝ?d تÏ_)î @  µ©€ÓÝ?d «[• ù @  µª€ÔÝ?d X«Ù' @  µ«€ÕÝ?d ˜«NV“ @  µ¬€ÖÝ?d Ø«ÌÇM @  µ­€×Ý?d ¬ ¡š @  µ®€ØÝ?d X¬‹Š¶D @  µ¯€ÙÝ?d ˜¬º‚8‡ @  µ°€ÚÝ?d ج8/Y @  µ±€ÛÝ?d ­¬Ù N @  µ²€ÜÝ?d X­.H @  µ³€ÝÝ?d ˜­¹$ @  µ´€ÞÝ?d Ø­;‹ú @  µµ€ßÝ?d ®‚º¯Ó @  µ¶€àÝ?d X®+¸  @  µ·€áÝ?d ˜®œ‚. @  µ¸€âÝ?d Ø®ð @  µ¹€ãÝ?d ¯ŠÙ=ç @  µº€äÝ?d X¯H*9 @  µ»€åÝ?d ˜¯Ÿ> @  µ¼€æÝ?d د‹)S @  µ½€çÝ?d °ÇØ9 @  µ¾€èÝ?d X°ýVÏç @  µ¿€éÝ?d ˜°s_` @  µÀ€êÝ?d ذñÎwØ @  µÁ€ëÝ?d ±eUÏ @  µ€ìÝ?d X±ç•B @  µÀíÝ?d ˜±pÇV¥ @  µÄ€îÝ?d رòVA{ @  µÅ€ïÝ?d ²ÖÐÎŽ @  µÆ€ðÝ?d X²TAÙP @  µÇ€ñÝ?d ˜²Èèis @  µÈ€òÝ?d زJy~­ @  µÉ€óÝ?d ³Þ³\º @  µÊ€ôÝ?d X³\"Kd @  µË€õÝ?d ˜³Ëp_Ð @  µÌ€öÝ?d سIáH @  µÍ€÷Ý?d ´Œ=öÙ @  µ΀øÝ?d X´¬á @  µÏ€ùÝ?d ˜´?¤oÄ @  µЀúÝ?d Ø´½5x @  µÑ€ûÝ?d µ)ÿZ  @  µÒ€üÝ?d Xµ«nMÓ @  µÓ€ýÝ?d ˜µ<ýõò @  ¶1€=Þ?d °Ålæ« @  ¶2€>Þ?d ðÅîw u @  ¶3€?Þ?d 0Æb_U  @  ¶4€@Þ?d pÆàÎB~ @  ¶5€AÞ?d °Æ²Õ­' @  ¶6€BÞ?d ðÆ0Dºù @  ¶7€CÞ?d 0Çj<Ç” @  ¶8€DÞ?d pÇè­ÐJ @  ¶9€EÞ?d °Çº¶? @  ¶:€FÞ?d ðÇ8'(Í @  ¶;€GÞ?d 0Èå @  ¶<€HÞ?d pÈ—’; @  ¶=€IÞ?d °Èʼnêb @  ¶>€JÞ?d ðÈGý¼ @  ¶?€KÞ?d 0ÉÀŸ @  ¶@€LÞ?d pÉQˆÍ @  ¶A€MÞ?d °ÉßJg” @  ¶B€NÞ?d ðÉ]ÛpJ @  ¶C€OÞ?d 0ʼR @  ¶D€PÞ?d pÊ>…Œ @  ¶E€QÞ?d °ÊlžüÕ @  ¶F€RÞ?d ðÊîë  @  ¶G€SÞ?d 0Ë´w–f @  ¶H€TÞ?d pË6æ¸ @  ¶I€UÞ?d °Ëdýná @  ¶J€VÞ?d ðËæly? @  ¶K€WÞ?d 0Ìæù< @  ¶L€XÞ?d pÌdh+Û @  ¶M€YÞ?d °Ì6sÄ‚ @  ¶N€ZÞ?d ðÌ´âÓ\ @  ¶O€[Þ?d 0ÍC;Ñ @  ¶P€\Þ?d pÍÁª‡ @  ¶Q€]Þ?d °Í“±hV @  ¶R€^Þ?d ðÍ ˆ @  ¶S€_Þ?d 0ÎmX2L @  ¶T€`Þ?d pÎïÉ%’ @  ¶U€aÞ?d °Î½ÒÊË @  ¶V€bÞ?d ðÎ?CÝ @  ¶W€cÞ?d 0Ïe; x @  ¶X€dÞ?d pÏ窷¦ @  ¶Y€eÞ?d °Ïµ±Xÿ @  ¶Z€fÞ?d ðÏ7 O! @  ¶[€gÞ?d 0Ð%E¦ @  ¶\€hÞ?d pдRx @  ¶]€iÞ?d °Ð@¯½! @  ¶^€jÞ?d ðÐÂ>ªÿ @  ¶_€kÞ?d 0Ñ$áΠ@  ¶`€lÞ?d pѦpÙ @  ¶a€mÞ?d °Ñôk6E @  ¶b€nÞ?d ðÑvú!› @  ¶c€oÞ?d 0Ò—5Uƒ @  ¶d€pÞ?d pÒ¤B] @  ¶e€qÞ?d °ÒG¿­ @  ¶f€rÞ?d ðÒÅ.ºÚ @  ¶g€sÞ?d 0ÓŸVÇ· @  ¶h€tÞ?d pÓÇÐi @  ¶i€uÞ?d °ÓOÜ?0 @  ¶j€vÞ?d ðÓÍM(î @  ¶k€wÞ?d 0ÔÍØmÔ @  ¶l€xÞ?d pÔOIz  @  ¶m€yÞ?d °ÔR•S @  ¶n€zÞ?d ðԟ @  ¶o€{Þ?d 0ÕhÁ @  ¶p€|Þ?d pÕê‹ÖÞ @  ¶q€}Þ?d °Õ¸9‡ @  ¶r€~Þ?d ðÕ:.Y @  ¶s€Þ?d 0Ö«ï" @  ¶t€€Þ?d pÖ)~5À @  ¶u€Þ?d °Ö{eÚ™ @  ¶v€‚Þ?d ðÖùôÍG @  ¶w€ƒÞ?d 0×£Œ°* @  ¶x€„Þ?d p×!§ô @  ¶y€…Þ?d °×sH­ @  ¶z€†Þ?d ð×ñ—_s @  ¶{€‡Þ?d 0Øܳe[ @  ¶|€ˆÞ?d pØ^"r… @  ¶}€‰Þ?d °Ø 9Ü @  ¶~€ŠÞ?d ðØލŠ @  ¶€‹Þ?d 0Ù%&Øœ @  ¶€€ŒÞ?d pÙ§·ÏB @  ¶€Þ?d °Ùõ¬  @  ¶‚€ŽÞ?d ðÙw=7Å @  ¶ƒ€Þ?d 0Ú–òCÝ @  ¶„€Þ?d pÚcT @  ¶…€‘Þ?d °ÚFx»Z @  ¶†€’Þ?d ðÚÄ鬄 @  ¶‡€“Þ?d 0Ûž‘Ñé @  ¶ˆ€”Þ?d pÛÆ7 @  ¶‰€•Þ?d °ÛN)n @  ¶Š€–Þ?d ðÛÌŠ>° @  ¶‹€—Þ?d 0ÜÌ{Š @  ¶Œ€˜Þ?d pÜNŽlT @  ¶€™Þ?d °Ü•ƒ  @  ¶Ž€šÞ?d ðÜž”Ó @  ¶€›Þ?d 0ÝiÝ×^ @  ¶€œÞ?d pÝëLÀ€ @  ¶‘€Þ?d °Ý¹W/Ù @  ¶’€žÞ?d ðÝ;Æ8 @  ¶“€ŸÞ?d 0ÞG¾uà @  ¶”€ Þ?d pÞÅ/b @  ¶•€¡Þ?d °Þ—4D @  ¶–€¢Þ?d ðÞ¥šš @  ¶—€£Þ?d 0ßOÝç÷ @  ¶˜€¤Þ?d pßÍLð) @  ¶™€¥Þ?d uÐà/°ßŸWp @  ¶š€¦Þ?d ð߯® @  ¶›€§Þ?d Hà¹àm @  ¶œ€¨Þ?d ˆà=Lâ“ @  ¶€©Þ?d ÈàÍ3ê @  ¶ž€ªÞ?d á`ûç~ @  ¶Ÿ«Þ?d HáÔýu @  ¶ ¬Þ?d ˆáô‹ @  ¶¡­Þ?d Èáwàò @  ¶¢®Þ?d â™3@3 @  ¶£¯Þ?d Hâg)ƒ4 @  ¶¤°Þ?d ˆâGÜÊ @  ¶¥±Þ?d Èâ·£{³ @  ¶¦²Þ?d ãgë÷[ @  ¶§³Þ?d HãoJ @  ¶¨´Þ?d ˆãO¿þ @  ¶©µÞ?d Èã¿Àé‡ @  ¶ª¶Þ?d 䦎ˆ @  ¶«·Þ?d Hä=Ä»c @  ¶¬¸Þ?d ˆä1¹ @  ¶­¹Þ?d ÈäíNCä @  ¶®ºÞ?d å=Ï  @  ¶¯»Þ?d H嘷 @  ¶°¼Þ?d ˆå¸óI @  ¶±½Þ?d ÈåHŒï0 @  ¶²¾Þ?d æÕÈOñ @  ¶³¿Þ?d HæF5 ; @  ¶´ÀÞ?d ˆæfÀ¢Å @  ¶µÁÞ?d Èæ–¿X¼ @  ¶¶ÂÞ?d çF÷ÔT @  ¶·ÃÞ?d HçNV2 @  ¶¸ÄÞ?d ˆçn£0ñ @  ¶¹ÅÞ?d ÈçžÜʈ @  ¶ºÆÞ?d èª#F• @  ¶»ÇÞ?d Hè1iç~ @  ¶¼ÈÞ?d ˆèœå€ @  ¶½ÉÞ?d Èèáãù @  ¶¾ÊÞ?d é1«“ @  ¶¿ËÞ?d Hé+ªjˆ @  ¶ÀÌÞ?d ˆé _hv @  ¶ÁÍÞ?d Èéû ’ @  ¶ÂÎÞ?d êfd2Î @  ¶ÃÏÞ?d Hê˜~ñÉ @  ¶ÄÐÞ?d ˆê¸‹ó7 @  ¶ÅÑÞ?d ÈêHô N @  ¶ÆÒÞ?d 똼…¦ @  ¶ÇÓÞ?d Hëcý @  ¶ÈÔÞ?d ˆë°èa @  ¶ÉÕÞ?d Èë@—›z @  ¶ÊÖÞ?d ìYÙhu @  ¶Ë×Þ?d Hì“ɞ @  ¶ÌØÞ?d ˆìâfË` @  ¶ÍÙÞ?d Èì1 @  ¶ÎÚÞ?d íÂQ½ñ @  ¶ÏÛÞ?d HígQeJ @  ¶ÐÜÞ?d ˆíG¤g´ @  ¶ÑÝÞ?d Èí·ÛÍ @  ¶ÒÞÞ?d î*Ÿ=  @  ¶ÓßÞ?d HîI2Ç× @  ¶ÔàÞ?d ˆîiÇÅ) @  ¶ÕáÞ?d È?P @  ¶ÖâÞ?d ïI𳸠@  ¶×ãÞ?d HïAQUã @  ¶ØäÞ?d ˆïa¤W @  ¶ÙåÞ?d Èï‘Û­d @  ¶ÚæÞ?d ð/Ö @  ¶ÛçÞ?d Hð´O°= @  ¶ÜèÞ?d ˆð”º²Ã @  ¶ÝéÞ?d ÈðdÅHº @  ¶ÞêÞ?d ñ´ÄR @  ¶ßëÞ?d Hñ‹;Y @  ¶àìÞ?d ˆñ ~9§ @  ¶áíÞ?d ÈñÐÃÞ @  ¶âîÞ?d€ ò9†¹ @  ·ïÞ?d Hò&Ýô— @  ·ðÞ?d ˆò(öi @  ·ñÞ?d Èò3÷ý @  ·òÞ?d óãV{ @  ·óÞ?d Hó%EÂ4 @  ·ôÞ?d ˆó°ÀÊ @  ·õÞ?d Èó;}eÉ @  ·öÞ?d ô"3–Æ @  · ÷Þ?d Hô|0ÌÀ @  · øÞ?d ˆô\ÅÎ> @  · ùÞ?d ÈôióϪ @  · úÞ?d õ¹»CB @  · ûÞ?d Hõ¨úc @  ·üÞ?d ˆõ_]ø @  ·ýÞ?d ÈõÌ1c~ @  ·þÞ?d öQuÿ @  ·ÿÞ?d Höe`Ö @  ·ß?d ˆöE•Ôø @  ·ß?d Èöp£Õl @  ·ß?d ÷ ëY„ @  ·ß?d H÷føà¥ @  ·ß?d ˆ÷F â[ @  ·ß?d È÷xÀGX @  ·ß?d øL?ËE @  ·ß?d Hø<‘C @  ·ß?d ˆø2É“½ @  · ß?d Èøÿ’) @  · ß?d ù×·Á @  · ß?d Hù¤§à @  · ß?d ˆù1Q¥ @  · ß?d Èù³;M @  · ß?d ú.¹Œ @  ·!ß?d Hú,f @  ·"ß?d ˆú5Ùƒ˜ @  ·#ß?d Èúï‚  @  ·$ß?d ûЧä @  ·%ß?d Hû´·Å @  ·&ß?d ˆû6Aµ; @  ·'ß?d ÈûŒ8 @  ·(ß?d üÂã7 @  ·)ß?d HüOÁ¹1 @  ·*ß?d ˆüo4»Ï @  ·+ß?d ÈüZº[ @  ·,ß?d ýŠJ6³ @  ·-ß?d HýLY’ @  ·.ß?d ˆýl¬l @  ·/ß?d ÈýÿÀ @  ·0ß?d þb„¶N @  ·1ß?d HþÄ`·x @  ·2 ß?d ˆþ䕵† @  ·3!ß?d ÈþÑ£´ @  ·4"ß?d ÿë8ú @  ·5#ß?d HÿÇøÛ @  ·6$ß?d ˆÿç ƒ% @  ·7uÐ%ß?d ÈÿÙÀ&& @  ·8&ß?d –t× @  ·9'ß?d `ÈwTÑ @  ·:(ß?d  è‚V/ @  ·;)ß?d àÝ´W» @  ·<*ß?d  üÛS @  ·=+ß?d `Ëïbr @  ·>,ß?d  ë`Œ @  ·?-ß?d àÇwÚM @  ·@.ß?d Z3zŒ @  ·A/ß?d `a`Bf @  ·B0ß?d  A•@˜ @  ·C1ß?d àt£A  @  ·D2ß?d ¤ëÍä @  ·E3ß?d `bøtÅ @  ·F4ß?d  B v; @  ·G5ß?d à|ÀÓ8 @  ·H6ß?d eŽ 7 @  ·I7ß?d `;z1 @  ·J8ß?d  xxÏ @  ·K9ß?d à.Ny[ @  ·L:ß?d þõ³ @  ·M;ß?d `8L’ @  ·N<ß?d  àNl @  ·O=ß?d à‹ŒÕ @  ·P>ß?d ÈuN @  ·Q?ß?d `@|ai @  ·R@ß?d  `‰c— @  ·SAß?d àU¿b @  ·TBß?d …÷îë @  ·UCß?d `CäWÊ @  ·VDß?d  cU4 @  ·WEß?d à]Üð7 @  ·XFß?d i#|* @  ·YGß?d `7 &, @  ·ZHß?d  Õ$Ò @  ·[Iß?d à"ã%F @  ·\Jß?d ò«©® @  ·]Kß?d ` 4¸ @  ·^Lß?d   Mq @  ·_Mß?d à –'®" @  ·`Nß?d  cã @  ·aOß?d ` 006  @  ·bPß?d   Å4÷ @  ·cQß?d à %ó5c @  ·dRß?d õ»¹‹ @  ·eSß?d ` 3¨ª @  ·fTß?d   ]T @  ·gUß?d à -§W @  ·hVß?d 4ÞTX @  ·iWß?d ` jÝ^ @  ·jXß?d   J(   @  ·kYß?d à  4 @  ·lZß?d ¯VÜ @  ·m[ß?d ` iE8ý @  ·n\ß?d   I°: @  ·o]ß?d à ÚÜ¡à @  ·p^ß?d G˜! @  ·q_ß?d `á| @  ·r`ß?d  Á‰é @  ·saß?d àô¿} @  ·tbß?d $÷• @  ·ucß?d `âä6´ @  ·vdß?d  Â4J @  ·weß?d àüÜ‘I @  ·xfß?d B-û @  ·ygß?d `wý @  ·zhß?d  <ôu @  ·{iß?d à Ât— @  ·|jß?d ÙŠø @  ·}kß?d `™A^ @  ·~lß?d  ?lC  @  ·mß?d àðWÉP @  ·€nß?d mi‘ @  ·oß?d `V@Q{ @  ·‚pß?d  vµS… @  ·ƒqß?d àCƒR @  ·„rß?d “ËÞù @  ·…sß?d `UØgØ @  ·†tß?d  u-e& @  ·‡uß?d àKàÀ% @  ·ˆvß?d R®3* @  ·‰wß?d ` ­i, @  ·Šxß?d  ,XkÒ @  ·‹yß?d ànjF @  ·Œzß?d É&æ® @  ·{ß?d `5_ @  ·Ž|ß?d  /À]q @  ·}ß?d ༬ƒ @  ·~ß?d !èfS @  ·‘ß?d `jš&æ @  ·’€ß?d  Jo$ @  ·“ß?d àY%Œ @  ·”‚ß?d ¯©d @  ·•ƒß?d `iE @  ·–„ß?d  I÷» @  ·—…ß?d àw:·¸ @  ·˜†ß?d CÅ;¥ @  ·™‡ß?d `Æa£ @  ·šˆß?d  =3c] @  ·›‰ß?d àbÉ @  ·œŠß?d ØMî! @  ·‹ß?d `^W @  ·žŒß?d  >«Uþ @  ·Ÿß?d à¼Áé­ @  · Žß?d !…Il @  ·¡ß?d `Öq† @  ·¢ß?d  :#sx @  ·£‘ß?d àrì @  ·¤’ß?d ß]þ @  ·¥“ß?d `NG% @  ·¦”ß?d  9»EÛ @  ·§•ß?d àvàØ @  ·¨–ß?d 8× @  ·©—ß?d `@;IÑ @  ·ª˜ß?d  `ÎK/ @  ·«™ß?d àUøJ» @  ·¬šß?d …°ÆS @  ·­›ß?d `C£r @  ·®œß?d  cV}Œ @  ·¯ß?d àð:æo @  ·°žß?d m~F® @  ·±Ÿß?d `ËšG˜ @  ·² ß?d  ëoEf @  ·³¡ß?d àÞYDò @  ·´¢ß?d È @  ·µ£ß?d `Èq; @  ·¶¤ß?d  è÷sÅuÐ  @  ··¥ß?d àÖ:ÖÆ @  ·¸¦ß?d 8 §1  @  ·¹§ß?d x ù2R¦ @  ·º¨ß?d ¸ ÙÇPX @  ·»©ß?d ø ìñQÌ @  ·¼ªß?d 8!<¹Ý$ @  ·½«ß?d x!úªd @  ·¾¬ß?d ¸!Ú_fû @  ·¿­ß?d ø!ö2Ü: @  ·À®ß?d 8"kv|û @  ·Á¯ß?d x"P%D @  ·Â°ß?d ¸"pÐFï @  ·Ã±ß?d ø"EæG{ @  ·Ä²ß?d 8#•®Ë“ @  ·Å³ß?d x#S½r² @  ·Æ´ß?d ¸#sHpL @  ·Çµß?d ø#M…ÕO @  ·È¶ß?d 8$TË&@ @  ·É·ß?d x$ È|F @  ·Ê¸ß?d ¸$*=~¸ @  ·Ë¹ß?d ø$ , @  ·Ìºß?d 8%ÏCóÄ @  ·Í»ß?d x% PJå @  ·Î¼ß?d ¸%)¥H @  ·Ï½ß?d ø%ºÉÓø @  ·Ð¾ß?d 8&'s9 @  ·Ñ¿ß?d x&q9g @  ·ÒÀß?d ¸&QÌeà @  ·ÓÁß?d ø&dúdt @  ·ÔÂß?d 8'´²èœ @  ·ÕÃß?d x'r¡Q½ @  ·ÖÄß?d ¸'RTSC @  ·×Åß?d ø'l™ö@ @  ·ØÆß?d 8(Xfz] @  ·ÙÇß?d x(e [ @  ·ÚÈß?d ¸(&"¥ @  ·ÛÉß?d ø(¦#1 @  ·ÜÊß?d 8)Ãî¯Ù @  ·ÝËß?d x)ýø @  ·ÞÌß?d ¸)% @  ·ßÍß?d ø)§b¨U @  ·àÎß?d 8*:&” @  ·áÏß?d x*u0~ @  ·âÐß?d€ ¸* &Ò @  ¸Ñß?d ø*Ýmoo @  ¸Òß?d 8+ %㇠@  ¸Óß?d x+¡K @  ¸Ôß?d ¸+.Š£µ @  ¸Õß?d ø+ÞõYÌ @  ¸Öß?d 8,Ç»ªÃ @  ¸×ß?d x,W ¯¿ @  ¸Øß?d ¸,wÿ­A @  ¸ Ùß?d ø,‡€W8 @  ¸ Úß?d 8-WÈÛÐ @  ¸ Ûß?d x-T’™ @  ¸ Üß?d ¸-tg›â @  ¸ Ýß?d ø-„a› @  ¸Þß?d 8.\ÁZ @  ¸ßß?d x.Ü«¡ö @  ¸àß?d ¸.ü^£ @  ¸áß?d ø. !Yq @  ¸âß?d 8/ÜiÕ™ @  ¸ãß?d x/ß3—U @  ¸äß?d ¸/ÿÆ•« @  ¸åß?d ø/¹oÒ @  ¸æß?d 80±gÓ` @  ¸çß?d x0!ÖÖ @  ¸èß?d ¸0#Ôâ @  ¸éß?d ø0ñ\.› @  ¸êß?d 81!¢s @  ¸ëß?d x1"Nà¿ @  ¸ìß?d ¸1»âA @  ¸íß?d ø1òÄ8 @  ¸îß?d 82o€¸ù @  ¸ïß?d x2&ÆÆ9 @  ¸ ðß?d ¸23ÄÇ @  ¸!ñß?d ø2öL>¾ @  ¸"òß?d 83&²V @  ¸#óß?d x3%^ðš @  ¸$ôß?d ¸3«òd @  ¸%õß?d ø3õÔ @  ¸&öß?d 84ìšû @  ¸'÷ß?d x4|+þn @  ¸(øß?d ¸4\Þü @  ¸)ùß?d ø4¬¡é @  ¸*úß?d 85|éŠ @  ¸+ûß?d x5³ÈÍ @  ¸,üß?d ¸5_FÊ3 @  ¸-ýß?d ø5¯90J @  ¸.þß?d 862}‹ @  ¸/ÿß?d x6ÔΕ @  ¸0à?d ¸6ô;k @  ¸1à?d ø6Du @  ¸2à?d 87Ô ùú @  ¸3à?d x7×V»6 @  ¸4à?d ¸7÷£¹È @  ¸5à?d ø7ÜC± @  ¸6à?d 883#Ϭ @  ¸7à?d x8£’ÊÐ @  ¸8à?d ¸8ƒgÈ. @  ¸9 à?d ø8s2W @  ¸: à?d 89£P¾¿ @  ¸; à?d x9  üs @  ¸< à?d ¸9€ÿþ @  ¸= à?d ø9p€ô @  ¸>à?d 8:íĤ5 @  ¸?à?d x: …Üg @  ¸@à?d ¸:*pÞ™ @  ¸Aà?d ø:Ú$à @  ¸Bà?d 8; G¨ @  ¸Cà?d x; êÄ @  ¸Dà?d ¸;)èè: @  ¸Eà?d ø;Ù—C @  ¸Fà?d 8<ÀÙáL @  ¸Gà?d x<Phä0 @  ¸Hà?d ¸<pæÎ @  ¸Ià?d ø<€â· @  ¸Jà?d 8=Pª_ @  ¸Kà?d x=SðÒ“ @  ¸Là?d ¸=sÐm @  ¸Mà?d ø=ƒz* @  ¸Nà?d 8>>ŠÕ @  ¸Oà?d x>ÛÉêy @  ¸P à?d ¸>û<è‡ @  ¸Q!à?d ø> Cþ @  ¸R"à?d 8?Û ž @  ¸S#à?d x?ØQÜÚ @  ¸T$à?duÐ@7 ¸?ø¤Þ$ @  ¸U%à?d ø?Û$] @  ¸V&à?d P@Ëwža @  ¸W'à?d @ù¢Ž= @  ¸X(à?d Ð@{3™ã @  ¸Y)à?d AÙ•ø¬ @  ¸Z*à?d PA[ïr @  ¸[+à?d Aú:¸ž @  ¸\,à?d ÐAx«¯@ @  ¸]-à?d B—â& @  ¸^.à?d PBõø @  ¸_/à?d Bþ²ž @  ¸`0à?d ÐB|#‰Æ @  ¸a1à?d CÞ…è‰ @  ¸b2à?d PC\ÿW @  ¸c3à?d Cý*¨» @  ¸d4à?d ÐC»¿e @  ¸e5à?d D¡Í @  ¸f6à?d PD–ж @  ¸g7à?d D¤_¦O @  ¸h8à?d ÐD&α‘ @  ¸i9à?d E„hÐÞ @  ¸j:à?d PEùÇ @  ¸k;à?d E§Çì @  ¸l<à?d ÐE%V‡2 @  ¸m=à?d FÊüÊT @  ¸n>à?d PFHmÝŠ @  ¸o?à?d Fß®½ @  ¸p@à?d ÐF]?ªÉ @  ¸qAà?d Gÿ™Ë† @  ¸rBà?d PG}ÜX @  ¸sCà?d GÜ6‹´ @  ¸tDà?d ÐG^§œj @  ¸uEà?d H¶ýÐ @  ¸vFà?d PHš'ê @  ¸wGà?d H¨òúR @  ¸xHà?d ÐH*cíŒ @  ¸yIà?d IˆÅŒÃ @  ¸zJà?d PI T› @  ¸{Kà?d I«jÌñ @  ¸|Là?d ÐI)ûÛ/ @  ¸}Mà?d JÆQ–I @  ¸~Nà?d PJDÀ— @  ¸Oà?d Jâ³ÜÔ @  ¸€Pà?d ÐJ`"Ë  @  ¸Qà?d K„ªE @  ¸‚Rà?d PK@½› @  ¸ƒSà?d Ká+êw @  ¸„Tà?d ÐKcºý© @  ¸…Uà?d Lã @  ¸†Và?d PLŠ‹ôß @  ¸‡Wà?d L¸^äƒ @  ¸ˆXà?d ÐL:Ïó] @  ¸‰Yà?d M˜i’ @  ¸ŠZà?d PMø…Ì @  ¸‹[à?d M»ÆÒ  @  ¸Œ\à?d ÐM9WÅþ @  ¸]à?d NÖýˆ˜ @  ¸Ž^à?d PNTlŸF @  ¸_à?d N3ÿêÊ @  ¸`à?d ÐN±ný @  ¸‘aà?d OÈœ[ @  ¸’bà?d PO‘Y‹… @  ¸“cà?d O0gÜi @  ¸”dà?d ÐO²öË· @  ¸•eà?d P~Æš¢ @  ¸–fà?d PPüW| @  ¸—gà?d P΂  @  ¸˜hà?d ÐPLŠþ @  ¸™ià?d Qîµë± @  ¸šjà?d PQl$üo @  ¸›kà?d QÍ«ƒ @  ¸œlà?d ÐQO‹¼] @  ¸mà?d R !ñ; @  ¸žnà?d PR"°æå @  ¸Ÿoà?d RÉ’ @  ¸ pà?d ÐRKšÛ @  ¸¡qà?d Sé¥û” @  ¸¢rà?d PSk4ìJ @  ¸£sà?d SÊ »¦ @  ¸¤tà?d ÐSH›¬x @  ¸¥uà?d T#;²Ð @  ¸¦và?d PT¡ª¥ @  ¸§wà?d T“µR @  ¸¨xà?d ÐT @  ¸©yà?d U³HÃà @  ¸ªzà?d PU1ÙÔ @  ¸«{à?d Uçƒñ @  ¸¬|à?d ÐUv”/ @  ¸­}à?d VýÜÙI @  ¸®~à?d PVMΗ @  ¸¯à?d VõHú˜ @  ¸°€à?d ÐVwÙíF @  ¸±à?d WÕŒ  @  ¸²‚à?d PWWî›× @  ¸³ƒà?d WöÐÌ; @  ¸´„à?d ÐWtAÛå @  ¸µ…à?d X2Pº_ @  ¸¶†à?d PX°Á­ @  ¸·‡à?d X‚½Ý @  ¸¸ˆà?d ÐX…ª @  ¸¹‰à?d Y¢#ËL @  ¸ºŠà?d PY ²Ü’ @  ¸»‹à?d YŒ‹~ @  ¸¼Œà?d ÐYœ  @  ¸½à?d Zì·ÑÆ @  ¸¾Žà?d PZn&Æ @  ¸¿à?d Z+«j @  ¸Àà?d ÐZ©’¼´ @  ¸Á‘à?d [ 4Ýû @  ¸Â’à?d P[‰¥Ê% @  ¸Ã“à?d [(›É @  ¸Ä”à?d Ð[ª Š @  ¸Å•à?d \Áª”¿ @  ¸Æ–à?d P\C;ƒa @  ¸Ç—à?d \qî“= @  ¸È˜à?d Ð\ó„ã @  ¸É™à?d ]QÙå¬ @  ¸Êšà?d P]ÓHòr @  ¸Ë›à?d ]rv¥ž @  ¸Ìœà?d Ð]ðç²@ @  ¸Íà?d ^Mÿ& @  ¸Îžà?d P^Üèø @  ¸ÏŸà?d ^úOt @  ¸Ð à?d Ð^xÞŠª @  ¸Ñ¡à?d _Úxëå @  ¸Ò¢à?d P_Xéü; @  ¸Ó£à?d _ù׫× @  ¸uÐ`Ô¤à?d Ð_{F¼  @  ¸Õ¥à?d (`·Pä6 @  ¸Ö¦à?d h`5Áóè @  ¸×§à?d ¨`ã´ @  ¸Ø¨à?d è`……ôj @  ¸Ù©à?d (a'#•% @  ¸Úªà?d ha¥²‚û @  ¸Û«à?d ¨aŒÕ @  ¸Ü¬à?d èa†ÂÉ @  ¸Ý­à?d (bi·¯ @  ¸Þ®à?d hbë&˜q @  ¸ß¯à?d ¨bó‘ @  ¸à°à?d èb‚•äO @  ¸á±à?d (c 3… @  ¸â²à?d€ hcÖaŽx @  ¹³à?d ¨c–‘½ @  ¹´à?d èc†c @  ¹µà?d (dºfc& @  ¹¶à?d hd8÷tø @  ¹·à?d ¨dÄ;Þ @  ¹¸à?d èdF, @  ¹¹à?d (e*5 @  ¹ºà?d he¨„ë @  ¹ »à?d ¨eÌó©ê @  ¹ ¼à?d èeNb¾4 @  ¹ ½à?d (fd¿ @  ¹ ¾à?d hfæa @  ¹ ¿à?d ¨fÀf @  ¹Àà?d èfQ ¸ @  ¹Áà?d (gQä m @  ¹Âà?d hgÓu³ @  ¹Ãà?d ¨g·²² @  ¹Äà?d èg5“¥l @  ¹Åà?d (h¶Ë?; @  ¹Æà?d hh4Z(å @  ¹Çà?d ¨hÈ=gà @  ¹Èà?d èhJ¬p @  ¹Éà?d (i&¸N( @  ¹Êà?d hi¤)Yö @  ¹Ëà?d ¨iÀ^õ÷ @  ¹Ìà?d èiBÏâ) @  ¹Íà?d (jh,T¢ @  ¹Îà?d hjê½C| @  ¹Ïà?d ¨jsŠn¶ @  ¹Ðà?d èjñyh @  ¹Ñà?d (k!¨^  @  ¹ Òà?d hk£9IÓ @  ¹!Óà?d ¨kÇNåÒ @  ¹"Ôà?d èkEßò  @  ¹#Õà?d (lë6I @  ¹$Öà?d hli§— @  ¹%×à?d ¨l•ÀO± @  ¹&Øà?d èlQXo @  ¹'Ùà?d (m{EfZ @  ¹(Úà?d hmùÔq„ @  ¹)Ûà?d ¨m£Ý… @  ¹*Üà?d èm2Ê[ @  ¹+Ýà?d (n5Ñ|Ð @  ¹,Þà?d hn·@k @  ¹-ßà?d ¨n³À @  ¹.àà?d èn1QhÆ @  ¹/áà?d (oðäh @  ¹0âà?d horuÍ @  ¹1ãà?d ¨oÓÌ @  ¹2äà?d èo”“Ä @  ¹3åà?d (pênê @  ¹4æà?d hp{y4 @  ¹5çà?d ¨pã6 @  ¹6èà?d èpa!Ì @  ¹7éà?d (q ™ù @  ¹8êà?d hq' @  ¹9ëà?d ¨që¤& @  ¹:ìà?d èqiî³ø @  ¹;íà?d (rC s @  ¹<îà?d hrÁœ­ @  ¹=ïà?d ¨rX«?g @  ¹>ðà?d èrÚ:(¹ @  ¹?ñà?d (s¤Ž N @  ¹@òà?d hs& @  ¹Aóà?d ¨sBh²‘ @  ¹Bôà?d èsÀù¥O @  ¹Cõà?d (tn@  @  ¹Döà?d htìWÔ @  ¹E÷à?d ¨tæò @  ¹Føà?d èt’w, @  ¹Gùà?d (uþc1 @  ¹Húà?d hu|ò&Ç @  ¹Iûà?d ¨u…ŠÆ @  ¹Jüà?d èuš @  ¹Kýà?d (v°÷+“ @  ¹Lþà?d hv2fá?d €†,$¹ý @  ¹ ?á?d À†z­Ú @  ¹Ž @á?d ‡ªØ!2 @  ¹ Aá?d @‡9´ºÑ @  ¹ Bá?d €‡A¸/ @  ¹‘ Cá?d À‡ßR @  ¹’ Dá?d ˆë­ @  ¹“ Eá?d @ˆÞ›Œ‡ @  ¹” Fá?d €ˆþnŽy @  ¹• Gá?d Àˆ mÔ @  ¹– Há?d ‰p%X— @  ¹— Iá?d @‰Nèý” @  ¹˜ Já?d €‰nÿj @  ¹™ Ká?d À‰¨FK @  ¹š Lá?d Š5JæŠ @  ¹› Má?d @Š|ç @  ¹œ Ná?d €Š ‰åà @  ¹ Oá?d ÀŠÚÝ  @  ¹ž Pá?d ‹Ë’Qâ @  ¹Ÿ Qá?d @‹Iøí± @  ¹  Rá?d €‹i ïO @  ¹¡ Sá?d À‹¯Vn @  ¹¢ Tá?d Œ¶P¥a @  ¹£ Uá?d @Œƒf¤õ @  ¹¤ Vá?d €Œ£“¦  @  ¹¥ Wá?d ÀŒýü  @  ¹¦ Xá?d -Øpå @  ¹§ Yá?d @Õæ @  ¹¨ Zá?d €3à× @  ¹© [á?d Àõón9 @  ¹ª \á?d Žh·Îø @  ¹« ]á?d @Ž]Ïl @  ¹¬ ^á?d €Ž}tÍ’ @  ¹­ _á?d ÀŽṲ̂ @  ¹® `á?d  Ø@L @  ¹¯ aá?d @˜´Û¯ @  ¹° bá?d €¸AÙQ @  ¹± cá?d À~R`p @  ¹² dá?d ÀŒÜ @  ¹³ eá?d @õºÝV @  ¹´ fá?d €ÕOߨ @  ¹µ gá?d À‹L…® @  ¹¶ há?d ‘[ F @  ¹· iá?d @‘eɬE @  ¹¸ já?d €‘E<®» @  ¹¹ ká?d À‘ƒ/š @  ¹º lá?d ’k·[ @  ¹» má?d @’+]¶Ï @  ¹¼ ná?d €’ ¨´1 @  ¹½ oá?d À’0ûŒÛ @  ¹¾ pá?d “à³3 @  ¹¿ qá?d @“ÌÞºò @  ¹À rá?d €“ì+¸  @  ¹Á sá?d À“*8- @  ¹ tá?d ”3vò" @  ¹à uá?d @”@ó¶ @  ¹Ä vá?d €”&µñH @  ¹Å wá?d À”x¶«N @  ¹Æ xá?d •¨þ'¦ @  ¹Ç yá?d @•–3‚¥ @  ¹È zá?d €•¶Æ€[ @  ¹É {á?d À•pÕ9z @  ¹Ê |á?d –í‘™» @  ¹Ë }á?d @–ا˜/ @  ¹Ì ~á?d €–øRšÑ @  ¹Í á?d À–³ Úd @  ¹Î €á?d —chVŒ @  ¹Ï á?d @—ðÍo @  ¹Ð ‚á?d €—ÐñÏ‘ @  ¹Ñ ƒá?d À—âv° @  ¹Ò „á?d ˜"ú­ @  ¹Ó …á?d @˜+û9 @  ¹Ô †á?d €˜7ÞùÇ @  ¹Õ ‡á?d À˜iÝ£Á @  ¹Ö ˆá?d ™¹•/) @  ¹× ‰á?d @™‡XŠ* @  ¹Ø Šá?d €™§­ˆÔ @  ¹Ù ‹á?d À™a¾1õ @  ¹Ú Œá?d šüú‘4 @  ¹Û á?d @šÉÌ  @  ¹Ü Žá?d €šé9’^ @  ¹Ý á?d ÀšÒjª´ @  ¹Þ á?d ›"&\ @  ¹ß ‘á?d @›€Hš @  ¹à ’á?d €› ½˜ñ @  ¹á “á?d À›f®!Ð @  ¹â ”á?d€ œ¾§%ß @  º •á?d @œjÐlb @  º –á?d €œJ%nœ @  º —á?d ÀœÑoÏw @  º ˜á?d 'CŸ @  º ™á?d @ñX¹æ @  º šá?d €Ñ­» @  º ›á?d ÀÙ ]C @  º œá?d žDHý‚ @  º á?d @ž´7û @  º žá?d €ž” @  º Ÿá?d Àž÷oÿÞ @  º  á?d Ÿ''s6 @  º ¡á?d @Ÿ×X‰O @  º ¢á?d €Ÿ÷­‹± @  º £áuР?d ÀŸR­S  @  º ¤á?d  #¦l @  º ¥á?d X ÓÙw @  º ¦á?d ˜ ó,uë @  º §á?d Ø hfÔ @  º ¨á?d ¡¸.Xè @  º ©á?d X¡HQ¢‘ @  º ªá?d ˜¡h¤ o @  º «á?d Ø¡`F4 @  º ¬á?d ¢ýAæõ @  º ­á?d X¢ >Œ @  º ®á?d ˜¢-Ër @  º ¯á?d Ø¢ÓÑÝu @  º °á?d £™Q @  º ±á?d X£óæ«ä @  º ²á?d ˜£Ó© @  º ³á?d Ø£gV @  º ´á?d ¤~[¥ @  º! µá?d X¤Ž$_g @  º" ¶á?d ˜¤®Ñ]™ @  º# ·á?d ؤ5›ür @  º$ ¸á?d ¥åÓpš @  º% ¹á?d X¥¬Šã @  º& ºá?d ˜¥5Yˆ @  º' »á?d Ø¥=ønF @  º( ¼á?d ¦ ¼Î‡ @  º) ½á?d X¦PÃ4þ @  º* ¾á?d ˜¦p66 @  º+ ¿á?d ئãËÙÊ @  º, Àá?d §3ƒU" @  º- Áá?d X§Ãü¯[ @  º. Âá?d ˜§ã ­¥ @  º/ Ãá?d اF u @  º0 Äá?d ¨röù @  º1 Åá?d X¨‚‰z @  º2 Æá?d ˜¨¢|„ @  º3 Çá?d ب96 o @  º4 Èá?d ©é~,‡ @  º5 Éá?d X©Öþ @  º6 Êá?d ˜©9ôÔ @  º7 Ëá?d Ø©1U2[ @  º8 Ìá?d ª¬’š @  º9 Íá?d Xª\nhã @  º: Îá?d ˜ª|›j @  º; Ïá?d ت‚© @  º< Ðá?d «RÉ%ò @  º= Ñá?d X«¢¶ß‹ @  º> Òá?d ˜«‚CÝu @  º? Óá?d Ø«˜B$ì @  º@ Ôá?d ¬ ×ã @  ºA Õá?d X¬qs-š @  ºB Öá?d ˜¬Q†/d @  ºC ×á?d جÊÌŽ @  ºD Øá?d ­„g @  ºE Ùá?d X­êûø @  ºF Úá?d ˜­Êúà @  ºG Ûá?d Ø­¯» @  ºH Üá?d ®_ë¼z @  ºI Ýá?d X®¯”F @  ºJ Þá?d ˜®aDý @  ºK ßá?d Ø®ì̾& @  ºL àá?d ¯<„2Î @  ºM áá?d X¯ÌûÈ· @  ºN âá?d ˜¯ìÊI @  ºO ãá?d دIò @  ºP äá?d °÷Ю@ @  ºQ åá?d X°¯T9 @  ºR æá?d ˜°'ZVÇ @  ºS çá?d ذ¼÷, @  ºT èá?d ±lX{Ä @  ºU éá?d X±œ'½ @  ºV êá?d ˜±¼ÒƒC @  ºW ëá?d ر´se @  ºX ìá?d ²)7ÅÙ @  ºY íá?d X²ÙH?  @  ºZ îá?d ˜²ù½=^ @  º[ ïá?d ز§þY @  º\ ðá?d ³×ïr± @  º] ñá?d X³'ˆÈ @  º^ òá?d ˜³eŠ6 @  º_ óá?d س³cu= @  º` ôá?d ´ª-†2 @  ºa õá?d X´ZR|K @  ºb öá?d ˜´z§~µ @  ºc ÷á?d Ø´áíß^ @  ºd øá?d µ1¥S¶ @  ºe ùá?d XµÁÚ©Ï @  ºf úá?d ˜µá/«1 @  ºg ûá?d صéŽMj @  ºh üá?d ¶tÊí« @  ºi ýá?d X¶„µÒ @  ºj þá?d ˜¶¤@, @  ºk ÿá?d ضç>Î] @  ºl â?d ·7vBµ @  ºm â?d X·Ç ¸Ì @  ºn â?d ˜·çüº2 @  ºo â?d Ø·Büb‰ @  ºp â?d ¸vî” @  ºq â?d X¸†|í @  ºr â?d ˜¸¦‰ @  ºs â?d ظ=÷ø @  ºt â?d ¹í‹; @  ºu  â?d X¹ôÁi @  ºv  â?d ˜¹=× @  ºw  â?d ع5 %Ì @  ºx  â?d º¨ä…  @  ºy  â?d XºX›t @  ºz â?d ˜ºxn}Š @  º{ â?d غ†t¾ @  º| â?d »V<2e @  º} â?d X»¦CÈ @  º~ â?d ˜»†¶Êâ @  º â?d Ø»áJ @  º€ â?d ¼f¯ðE @  º â?d X¼–Ð < @  º‚ â?d ˜¼¶% @  ºƒ â?d ؼ-o©) @  º„ â?d ½ý'%Á @  º… â?d X½ X߸ @  º† â?d ˜½-­ÝF @  º‡ â?d ؽ% ; @  ºˆ â?d ¾¸H›Ü @  º‰ â?d X¾H7a¥ @  ºŠ â?d ˜¾hÂc[ @  º‹ â?d ؾ o™€ @  ºŒ  â?d ¿Û'h @  º !â?d X¿+Xï @  ºŽ "â?d ˜¿ ­íï @uÐÀ  º #â?d Ø¿®­5T @  º $â?d 0ÀÊ]d @  º‘ %â?d pÀ:"ž @  º’ &â?d °Àל @  º“ 'â?d ðÀ=j @  º” (â?d 0ÁQÕ±‚ @  º• )â?d pÁ¡ªKû @  º– *â?d °Á_I @  º— +â?d ðÁ‰þ¯^ @  º˜ ,â?d 0ºŸ @  º™ -â?d pÂäÅõæ @  ºš .â?d °ÂÄ0÷ @  º› /â?d ðÂ:*4 @  ºœ 0â?d 0Ãêb¸÷ @  º 1â?d pÃBŽ @  ºž 2â?d °Ã:è@p @  ºŸ 3â?d ðÃŽî¿{ @  º  4â?d 0Ä— Lt @  º¡ 5â?d pÄgß¶  @  º¢ 6â?d °ÄG*´ó @  º£ 7â?d ðÄÜ` @  º¤ 8â?d 0Å (™ð @  º¥ 9â?d pÅüWc‰ @  º¦ :â?d °ÅÜ¢aw @  º§ ;â?d ðÅÔ‡, @  º¨ <â?d 0ÆIG'í @  º© =â?d pƹ8Ý” @  ºª >â?d °Æ™Íßj @  º« ?â?d ðÆ 00  @  º¬ @â?d 0ÇÚx¼H @  º­ Aâ?d pÇ*F1 @  º® Bâ?d °Ç òDÏ @  º¯ Câ?d ðǯòœt @  º° Dâ?d 0È› i @  º± Eâ?d pÈkrê @  º² Fâ?d °ÈK‡èî @  º³ Gâ?d ðÈÐÍI @  º´ Hâ?d 0É…Åí @  ºµ Iâ?d pÉðú?” @  º¶ Jâ?d °ÉÐ=j @  º· Kâ?d ðÉØ®Û1 @  º¸ Lâ?d 0ÊEê{ð @  º¹ Mâ?d pʵ•‰ @  ºº Nâ?d °Ê•`ƒw @  º» Oâ?d ðÊkz@p @  º¼ Pâ?d 0Ë»2̘ @  º½ Qâ?d pËKM6á @  º¾ Râ?d °Ëk¸4 @  º¿ Sâ?d ðËq¹Í† @  ºÀ Tâ?d 0Ìh÷>‰ @  ºÁ Uâ?d p̘ˆÄð @  º Vâ?d °Ì¸}Æ @  ºà Wâ?d ðÌ#7gå @  ºÄ Xâ?d 0Íóë  @  ºÅ Yâ?d pÍt @  ºÆ Zâ?d °Í#õŠ @  ºÇ [â?d ðÍ+TõÑ @  ºÈ \â?d 0ζU @  ºÉ ]â?d pÎFo¯i @  ºÊ ^â?d °Îfš­— @  ºË _â?d ðÎ7WL @  ºÌ `â?d 0ÏÕÛ¤ @  ºÍ aâ?d pÏ%!Ý @  ºÎ bâ?d °Ïõ## @  ºÏ câ?d ðÏ õû˜ @  ºÐ dâ?d 0Ð+G* @  ºÑ eâ?d pÐîT½S @  ºÒ fâ?d °ÐΡ¿­ @  ºÓ gâ?d ðÐUëF @  ºÔ hâ?d 0Ñ…£’® @  ºÕ iâ?d pÑuÜh× @  ºÖ jâ?d °ÑU)j) @  º× kâ?d ðÑ]ˆŒr @  ºØ lâ?d 0ÒÀÌ,³ @  ºÙ mâ?d pÒ0³ÖÊ @  ºÚ nâ?d °ÒFÔ4 @  ºÛ oâ?d ðÒî\3 @  ºÜ pâ?d 0Ó>›Û @  ºÝ qâ?d pÓÎka¢ @  ºÞ râ?d °Óîžc\ @  ºß sâ?d ðÓZ˜œW @  ºà tâ?d 0ÔCÖoX @  ºá uâ?d pÔ³©•! @  ºâ vâ?d€ °Ô矋y @  » wâ?d ðÔ”b» @  » xâ?d 0ÕMÜîS @  » yâ?d pÕxêïÇ @  » zâ?d °ÕXí9 @  » {â?d ðÕž T @  » |â?d 0ÖHôÙ @  » }â?d pÖ=…QÚ @  » ~â?d °ÖpS$ @  » â?d ðÖV‘ @  » €â?d 0׆JŸy @  » â?d p׳|ží @  » ‚â?d °×“‰œ @  » ƒâ?d ð×Uš%2 @  » „â?d 0Øae©/ @  » …â?d pØò 2Ì @  » †â?d °ØÒü02 @  » ‡â?d ðØŒÿj4 @  » ˆâ?d 0Ù\·æÜ @  » ‰â?d pÙiçH @  » Šâ?d °ÙItå¶ @  » ‹â?d ðÙg\— @  » Œâ?d 0Ú#üV @  » â?d pÚ,îYU @  » Žâ?d °Ú [« @  » â?d ðÚ7HcA @  » â?d 0Ûçï© @  » ‘â?d pÛÒ6î= @  » ’â?d °ÛòÃìà @  » “â?d ðÛ4ÐUâ @  » ”â?d 0Ü-ž¦í @  » •â?d pܯô¾ @  » –â?d °Ü@ @  »! —â?d ðÜÑBF @  »" ˜â?d 0ÝJή @  »# ™â?d pÝ4|Ï: @  »$ šâ?d °Ý‰ÍÄ @  »% ›â?d ðÝÒštå @  »& œâ?d 0ÞOÞÔ$ @  »' â?d pÞqq' @  »( žâ?d °ÞQæsÙ @  ») Ÿâ?d ðÞ÷rï @  »*  â?d 0ß'Jþ @  »+ ¡â?d pß|ÿ“ @  », ¢â?d uÐà/°ß2‰ým @  »- £â?d ðßôšDL @  ». ¤â?d Hàí>º @  »/ ¥â?d ˆàÜ6”y @  »0 ¦â?d Èà^§ƒ§ @  »1 §â?d áR}B— @  »2 ¨â?d HáÐìUI @  »3 ©â?d ˆáG¾Aý @  »4 ªâ?d ÈáÅ/V# @  »5 «â?d âéX @  »6 ¬â?d HâžxOà @  »7 ­â?d ˆâÑÿà @  »8 ®â?d Èâ€@è> @  »9 ¯â?d ãéÊKâ @  »: °â?d Hãk[\< @  »; ±â?d ˆãü Hˆ @  »< ²â?d Èã~˜_V @  »= ³â?d ä#T¦ @  »> ´â?d Hä¡Åx @  »? µâ?d ˆä/̺™ @  »@ ¶â?d Èä­]­G @  »A ·â?d 塇lw @  »B ¸â?d Hå#{© @  »C ¹â?d ˆå´Do @  »D ºâ?d Èå6Õxà @  »E »â?d æïvý @  »F ¼â?d Hæm‚a# @  »G ½â?d ˆæñ+Ñ @  »H ¾â?d ÈæsºÆÞ @  »I ¿â?d çw×IÏ @  »J Àâ?d HçõF^ @  »K Áâ?d ˆçbJ¥ @  »L Ââ?d Èçà…]{ @  »M Ãâ?d èø™ @  »N Äâ?d HèihG @  »O Åâ?d ˆè#aæ„ @  »P Æâ?d Èè¡ðñZ @  »Q Çâ?d é­*0j @  »R Èâ?d Hé/»'´ @  »S Éâ?d ˆé¸é3 @  »T Êâ?d Èé:x$Þ @  »U Ëâ?d êã¾*à @  »V Ìâ?d Hêa/=> @  »W Íâ?d ˆêý† @  »X Îâ?d ÈêšÃ @  »Y Ïâ?d ë9 @  »Z Ðâ?d Hë” .Á @  »[ Ñâ?d ˆë^:u @  »\ Òâ?d ÈëÏ-« @  »] Óâ?d ìÜp[ @  »^ Ôâ?d Hì^’g… @  »_ Õâ?d ˆì~œÎö @  »` Öâ?d Èìü Ù( @  »a ×â?d íð× @  »b Øâ?d HírFÆ @  »c Ùâ?d ˆíår @  »d Úâ?d Èíg… ¬ @  »e Ûâ?d î¾C’ @  »f Üâ?d Hî<ÒL @  »g Ýâ?d ˆî {¥o @  »h Þâ?d Èî"ê²± @  »i ßâ?d ïÖ×(± @  »j àâ?d HïTF?o @  »k áâ?d ˆïÃ+Û @  »l ââ?d ÈïA…< @  »m ãâ?d ð»Ù.H @  »n äâ?d Hð9H9– @  »o åâ?d ˆð@·U @  »p æâ?d ÈðŠÑ ‹ @  »q çâ?d ñ† a» @  »r èâ?d Hñšve @  »s éâ?d ˆñ“ÈbÑ @  »t êâ?d ÈñYu @  »u ëâ?d òÈŸ{1 @  »v ìâ?d HòJlï @  »w íâ?d ˆòÖ§ÜÌ @  »x îâ?d ÈòT6Ë @  »y ïâ?d ó=¼hÎ @  »z ðâ?d Hó¿- @  »{ ñâ?d ˆó(k¤ @  »| òâ?d Èóªî|z @  »} óâ?d ô÷"!Š @  »~ ôâ?d Hôu³6T @  » õâ?d ˆôì©„ @  »€ öâ?d Èôš}¾Z @  » ÷â?d õ–§j @  »‚ øâ?d Hõ6h´ @  »ƒ ùâ?d ˆõƒd| @  »„ úâ?d ÈõõkÞ @  »… ûâ?d öØ3eà @  »† üâ?d HöZ¢r> @  »‡ ýâ?d ˆöÆ Â @  »ˆ þâ?d ÈöDšÕà @  »‰ ÿâ?d ÷"V[L @  »Š ã?d H÷ ÇL’ @  »‹ ã?d ˆ÷7•X& @  »Œ ã?d È÷µOø @  » ã?d øÅym @  »Ž ã?d HøGèzÄ @  » ã?d ˆøvàô @  » ã?d ÈøôqãÙ @  »‘ ã?d ùø«"é @  »’ ã?d Hùz:57 @  »“  ã?d ˆùíh!ƒ @  »”  ã?d Èùoù6] @  »•  ã?d ú¶?8c @  »–  ã?d Hú4®/½ @  »—  ã?d ˆú¨Ÿž @  »˜ ã?d Èú*–ˆ@ @  »™ ã?d ûC+œ @  »š ã?d HûÁã?d àõGC @  »É ?ã?d ñ*Ì @  »Ê @ã?d `s»Ûß @  »Ë Aã?d  äéÏk @  »Ì Bã?d àfxص @  »Í Cã?d úW @  »Î Dã?d `””í‰ @  »Ï Eã?d  ¥œcJ @  »Ð Fã?d à' t” @  »Ñ Gã?d +×µ¤ @  »Ò Hã?d ` ©F¢z @  »Ó Iã?d   >¶Î @  »Ô Jã?d à ¼…¡ @  »Õ Kã?d eC¯. @  »Ö Lã?d ` çÒ¸ð @  »× Mã?d   {{Ó @  »Ø Nã?d à ùê  @  »Ù Oã?d `¼Ñ @  »Ú Pã?d ` ñ« @  »Û Qã?d   …£¿» @  »Ü Rã?d à 2¨e @  »Ý Sã?d Zþõ• @  »Þ Tã?d ` ØoâK @  »ß Uã?d   øaK8 @  »à Vã?d à zð\æ @  »á Wã?d v*Ö @  »â Xã?d€ ` rí"± @  ¼ Yã?d   þ~, @  ¼ Zã?d à †oiò @  ¼ [ã?d šàœ! @  ¼ \ã?d `q‹ÿ @  ¼ ]ã?d  Jjd¦ @  ¼ ^ã?d àÈûsx @  ¼ _ã?d òt¶ @  ¼ `ã?d `på¡Ü @  ¼ aã?d  "þN… @  ¼ bã?d à oY[ @  ¼ cã?d Ÿz°û @  ¼ dã?d `ë§% @  ¼ eã?d  OðH| @  ¼ fã?d àÍa_¢ @  ¼ gã?d ¢¨ÿ @  ¼ hã?d ` 9èÖ @  ¼ iã?d  r" @  ¼ jã?d àð³Q @  ¼ kã?d ì<å‚ @  ¼ lã?d `n­ò\ @  ¼ mã?d  <¶ @  ¼ nã?d à¾' Û @  ¼ oã?d ö} @  ¼ pã?d `›Žá£ @  ¼ qã?d  É•ú @  ¼ rã?d àK$ @  ¼ sã?d Ó¿9 @  ¼ tã?d `Q¨ç @  ¼ uã?d   G¾ @  ¼ vã?d àšP` @  ¼ wã?d ÿU×z @  ¼ xã?d `}ÄÀ¤ @  ¼! yã?d  /ß/ý @  ¼" zã?d à­N8# @  ¼# {ã?d ±ÁÍð @  ¼$ |ã?d `3PÚ. @  ¼% }ã?d  aK5w @  ¼& ~ã?d àãÚ"© @  ¼' ã?d 4æP @  ¼( €ã?d `¶R±Ž @  ¼) ã?d  äI^× @  ¼* ‚ã?d àfØI  @  ¼+ ƒã?d Óì @  ¼, „ã?d `Q}‡Ø @  ¼- …ã?d  fh @  ¼. †ã?d à÷_ @  ¼/ ‡ã?d î>ßõ @  ¼0 ˆã?d `l¯È+ @  ¼1 ‰ã?d  >´'r @  ¼2 Šã?d à¼%0¬ @  ¼3 ‹ã?d  ªÅ @  ¼4 Œã?d `";Ò¡ @  ¼5 ã?d  p =ø @  ¼6 Žã?d àò±*& @  ¼7 ã?d U‰Ö€ @  ¼8 ã?d `×Á^ @  ¼9 ‘ã?d  …. @  ¼: ’ã?d à’9Ù @  ¼; “ã?d ŸŸÄ @  ¼< ”ã?d `†ˆ @  ¼= •ã?d  OgC @  ¼> –ã?d àÍ p @  ¼? —ã?d Äñ @  ¼@ ˜ã?d `ŸUæË @  ¼A ™ã?d  ÍN ’ @  ¼B šã?d àOßL @  ¼C ›ã?d SPëŸ @  ¼D œã?d `ÑÁüA @  ¼E ã?d  ƒÚ @  ¼F žã?d àKÆ @  ¼G Ÿã?d ;ÄÁ¼ @  ¼H  ã?d `¹UÖb @  ¼I ¡ã?d  ëN9;uÐ  @  ¼J ¢ã?d àiß.å @  ¼K £ã?d 8 ™¥‘ @  ¼L ¤ã?d x ޲O @  ¼M ¥ã?d ¸ I•] @  ¼N ¦ã?d ø ËJÈ @  ¼O §ã?d 8!¤Íêb @  ¼P ¨ã?d x!&\ý¼ @  ¼Q ©ã?d ¸!tGå @  ¼R ªã?d ø!öÖ; @  ¼S «ã?d 8"êYðè @  ¼T ¬ã?d x"hÈç6 @  ¼U ­ã?d ¸":Óo @  ¼V ®ã?d ø"¸B± @  ¼W ¯ã?d 8#zã @  ¼X °ã?d x#ëôÉ @  ¼Y ±ã?d ¸#Ïð @  ¼Z ²ã?d ø#Ma N @  ¼[ ³ã?d 8$ÕäªS @  ¼\ ´ã?d x$Wu½ @  ¼] µã?d ¸$nRÔ @  ¼^ ¶ã?d ø$‡ÿE  @  ¼_ ·ã?d 8%ù0 @  ¼` ¸ã?d x%{¡ÕÎ @  ¼a ¹ã?d ¸%)º:— @  ¼b ºã?d ø%«+-I @  ¼c »ã?d 8&·¤Øš @  ¼d ¼ã?d x&55ÏD @  ¼e ½ã?d ¸&g.  @  ¼f ¾ã?d ø&å¿7à @  ¼g ¿ã?d 8'/`ç¨ @  ¼h Àã?d x'­ñðv @  ¼i Áã?d ¸'ÿê/ @  ¼j Âã?d ø'}{ñ @  ¼k Ãã?d 8(ÈOÑþ @  ¼l Äã?d x(JÞÆ  @  ¼m Åã?d ¸(Å)y @  ¼n Æã?d ø(šT>§ @  ¼o Çã?d 8)õž  @  ¼p Èã?d x)w ‰Ó @  ¼q Éã?d ¸)%fŠ @  ¼r Êã?d ø)§†qT @  ¼s Ëã?d 8*» „‡ @  ¼t Ìã?d x*9˜“Y @  ¼u Íã?d ¸*kƒ| @  ¼v Îã?d ø*ékÞ @  ¼w Ïã?d 8+N*—x @  ¼x Ðã?d x+Ì»€¦ @  ¼y Ñã?d ¸+ž oÿ @  ¼z Òã?d ø+1x! @  ¼{ Óã?d 8,„´Þ< @  ¼| Ôã?d x,%Éâ @  ¼} Õã?d ¸,T>&» @  ¼~ Öã?d ø,Ö¯1e @  ¼ ×ã?d 8-å1€Ü @  ¼€ Øã?d x-g — @  ¼ Ùã?d ¸-5»x[ @  ¼‚ Úã?d ø-·*o… @  ¼ƒ Ûã?d 8.«¥šV @  ¼„ Üã?d x.)4ˆ @  ¼… Ýã?d ¸.{/bÑ @  ¼† Þã?d ø.ù¾u @  ¼‡ ßã?d 8/Ã1°u @  ¼ˆ àã?d x/A §« @  ¼‰ áã?d ¸/»Hò @  ¼Š âã?d ø/‘*_, @  ¼‹ ãã?d 80®?¶Œ @  ¼Œ äã?d x0,®¡R @  ¼ åã?d ¸0~µN  @  ¼Ž æã?d ø0ü$YÕ @  ¼ çã?d 81“íù @  ¼ èã?d x1|î¡ @  ¼‘ éã?d ¸1Cgø @  ¼’ êã?d ø1Áö& @  ¼“ ëã?d 82Ýyãõ @  ¼” ìã?d x2_èô+ @  ¼• íã?d ¸2 ór @  ¼– îã?d ø2b ¬ @  ¼— ïã?d 83(Zð  @  ¼˜ ðã?d x3ªËçÔ @  ¼™ ñã?d ¸3øÐ @  ¼š òã?d ø3zAS @  ¼› óã?d 84âĹN @  ¼œ ôã?d x4`U® @  ¼ õã?d ¸42NAÉ @  ¼ž öã?d ø4°ßV @  ¼Ÿ ÷ã?d 85ÎÑ  @  ¼  øã?d x5LÆÓ @  ¼¡ ùã?d ¸5š)Š @  ¼¢ úã?d ø5œ >T @  ¼£ ûã?d 86€„ˇ @  ¼¤ üã?d x6ÜY @  ¼¥ ýã?d ¸6P3 @  ¼¦ þã?d ø6ÒŸ$Þ @  ¼§ ÿã?d 87Fèʽ @  ¼¨ ä?d x7ÄyÝc @  ¼© ä?d ¸7–b2: @  ¼ª ä?d ø7ó%ä @  ¼« ä?d 88¡Çüë @  ¼¬ ä?d x8#Vë5 @  ¼­ ä?d ¸8qMl @  ¼® ä?d ø8óܲ @  ¼¯ ä?d 89œ³ @  ¼° ä?d x9„¤Æ @  ¼±  ä?d ¸9LŸKŸ @  ¼²  ä?d ø9Î\A @  ¼³  ä?d 8:Ò©’ @  ¼´  ä?d x:P¾L @  ¼µ  ä?d ¸: Q @  ¼¶ ä?d ø:€šFË @  ¼· ä?d 8;'¢ºm @  ¼¸ ä?d x;¥3­³ @  ¼¹ ä?d ¸;÷(Bê @  ¼º ä?d ø;u¹U4 @  ¼» ä?d 8<í<ó) @  ¼¼ ä?d x<o­ä÷ @  ¼½ ä?d ¸<=¶ ® @  ¼¾ ä?d ø<¿'p @  ¼¿ ä?d 8=oïø @  ¼À ä?d x=í~Š& @  ¼Á ä?d ¸=¿ee @  ¼ ä?d ø==ôr¡ @  ¼à ä?d 8>!{‡r @  ¼Ä ä?d x>£ê¬ @  ¼Å ä?d ¸>ññõ @  ¼Æ ä?d ø>s`h+ @  ¼Ç ä?d 8?Iï­Q @  ¼È  ä?d x?Ë~º @  ¼É !ä?duÐ@7 ¸?™eUÖ @  ¼Ê "ä?d ø?ôB @  ¼Ë #ä?d P@Y“­& @  ¼Ì $ä?d @yf¯Ø @  ¼Í %ä?d Ð@‰U¡ @  ¼Î &ä?d AYQÙI @  ¼Ï 'ä?d PAdAâÕ @  ¼Ð (ä?d AD´à+ @  ¼Ñ )ä?d ÐA´ËR @  ¼Ò *ä?d B)º“ @  ¼Ó +ä?d PB*Õø_ @  ¼Ô ,ä?d B ú¡ @  ¼Õ -ä?d ÐBú_Ø @  ¼Ö .ä?d C*Œ0 @  ¼× /ä?d PCßöë  @  ¼Ø 0ä?d Cÿé^ @  ¼Ù 1ä?d ÐC|' @  ¼Ú 2ä?d D2à( @  ¼Û 3ä?d PDh¢ä @  ¼Ü 4ä?d D5  @  ¼Ý 5ä?d ÐDÅâZc @  ¼Þ 6ä?d EªÖ‹ @  ¼ß 7ä?d PE9¼Ê§ @  ¼à 8ä?d EIÈY @  ¼á 9ä?d ÐEé62  @  ¼â :ä?d€ F±ŽG @  ½ ;ä?d PF⪄¢ @  ½ <ä?d FÂ_†\ @  ½ =ä?d ÐF÷i‡È @  ½ >ä?d G'!  @  ½ ?ä?d PGq• @  ½ @ä?d GQ`ù @  ½ Aä?d ÐGo­¸ú @  ½ Bä?d H[R4ç @  ½ Cä?d PHAÆ @  ½ Dä?d H½´8 @  ½ Eä?d ÐHˆ‚ެ @  ½ Fä?d IXÊD @  ½ Gä?d PIÉXB @  ½ Hä?d I& @  ½6 pä?d S <ø @  ½7 qä?d ÐS%Æ™û @  ½8 rä?d T<ˆjô @  ½9 sä?d PTú›ÓÕ @  ½: tä?d TÚnÑ+ @  ½; uä?d ÐTïXп @  ½< vä?d U?\W @  ½= wä?d PUaQ @  ½> xä?d UAæ¯ @  ½? yä?d ÐUm‹¾n @  ½@ zä?d Vðϯ @  ½A {ä?d PV6ܧŽ @  ½B |ä?d V)¥p @  ½C }ä?d ÐV#¤ä @  ½D ~ä?d WóW(  @  ½E ä?d PW¸%h¹ @  ½F €ä?d W˜ÐjG @  ½G ä?d ÐW¦ÏD @  ½H ‚ä?d X’âCY @  ½I ƒä?d PXTñúx @  ½J „ä?d Xtø† @  ½K …ä?d ÐXA2ù @  ½L †ä?d Y‘zuú @  ½M ‡ä?d PYÏy/ü @  ½N ˆä?d YïŒ- @  ½O ‰ä?d ÐY|à¶á @  ½P Šä?d Zᤠ @  ½Q ‹ä?d PZ'·¯ @  ½R Œä?d ZB­ÿ @  ½S ä?d ÐZ2t¬k @  ½T Žä?d [â< ƒ @  ½U ä?d P[Ùoi @  ½V ä?d [ùš— @  ½W ‘ä?d Ð[ÇW¿” @  ½X ’ä?d \ÞL› @  ½Y “ä?d P\ õº @  ½Z ”ä?d \8ÿ÷D @  ½[ •ä?d Ð\ ÉöÐ @  ½\ –ä?d ]Ýz8 @  ½] —ä?d P]ƒ‚ > @  ½^ ˜ä?d ]£w"À @  ½_ ™ä?d Ð]!ž“ @  ½` šä?d ^¼Y>R @  ½a ›ä?d P^zJ‡s @  ½b œä?d ^Z¿… @  ½c ä?d Ð^o‰„ @  ½d žä?d _¿Áñ @  ½e Ÿä?d P_% Ç @  ½f  ä?d _9Ð 9 @  ½uÐ`g ¡ä?d Ð_®: @  ½h ¢ä?d (`¹å¢ @  ½i £ä?d h`ö¢ƒ @  ½j ¤ä?d ¨`_ } @  ½k ¥ä?d è`j5¡é @  ½l ¦ä?d (aº}- @  ½m §ä?d haä~w @  ½n ¨ä?d ¨aÄ‹uù @  ½o ©ä?d èaWçî @  ½p ªä?d (bÊ£NÛ @  ½q «ä?d hb °÷ú @  ½r ¬ä?d ¨b,Eõ @  ½s ­ä?d èbsô @  ½t ®ä?d (cÉ;xx @  ½u ¯ä?d hcòh@’ @  ½v °ä?d ¨cÒBl @  ½w ±ä?d ècìPço @  ½x ²ä?d (dõ` @  ½y ³ä?d hd3 ­A @  ½z ´ä?d ¨dø¯¿ @  ½{ µä?d èd&ή+ @  ½| ¶ä?d (eö†"à @  ½} ·ä?d he¨…xÅ @  ½~ ¸ä?d ¨eˆpz; @  ½ ¹ä?d èeGKðË @  ½€ ºä?d (fÚP  @  ½ »ä?d hfé+ @  ½‚ ¼ä?d ¨f<éëÕ @  ½ƒ ½ä?d èf ßêA @  ½„ ¾ä?d (gÙ—f© @  ½… ¿ä?d hg#rŽ @  ½† Àä?d ¨g¯Öpp @  ½‡ Áä?d èg‘Õs @  ½ˆ Âä?d (h¥äYn @  ½‰ Ãä?d hhc÷àO @  ½Š Ää?d ¨hCâ± @  ½‹ Åä?d èhv4ã% @  ½Œ Æä?d (i¦|oÍ @  ½ Çä?d hiø5Ë @  ½Ž Èä?d ¨iØŠ75 @  ½ Éä?d èiKæ¬Ö @  ½ Êä?d (jÖ¢  @  ½‘ Ëä?d hj±µ6 @  ½’ Ìä?d ¨j0D·È @  ½“ Íä?d èjr¶\ @  ½” Îä?d (kÕ::´ @  ½• Ïä?d hkîi^ @  ½– Ðä?d ¨kΜ  @  ½— Ñä?d èkðQ¥£ @  ½˜ Òä?d (léV¬ @  ½™ Óä?d hl/ ï @  ½š Ôä?d ¨lùís @  ½› Õä?d èl:Ïìç @  ½œ Öä?d (mê‡` @  ½ ×ä?d hm´„:  @  ½ž Øä?d ¨m”q8÷ @  ½Ÿ Ùä?d èm„¤ @  ½  Úä?d (n‹_$e @  ½¡ Ûä?d hnMLD @  ½¢ Üä?d ¨nm¹Ÿº @  ½£ Ýä?d ènXž. @  ½¤ Þä?d (oˆÇÆ @  ½¥ ßä?d ho.#ð @  ½¦ àä?d ¨oÖ @  ½§ áä?d èo0´  @  ½¨ âä?d (pŽÅ¿ @  ½© ãä?d hpHÖ±ž @  ½ª ää?d ¨ph#³` @  ½« åä?d èp]²ô @  ½¬ æä?d (q]> @  ½­ çä?d hqÓ^d @  ½® èä?d ¨qó«fä @  ½¯ éä?d èq`Çý @  ½° êä?d (rýƒ]Æ @  ½± ëä?d hr;äç @  ½² ìä?d ¨reæ @  ½³ íä?d èr.Sç @  ½´ îä?d (sþke @  ½µ ïä?d hsÅHS @  ½¶ ðä?d ¨så½Qq @  ½· ñä?d èsÛpôr @  ½¸ òä?d (tÂ>} @  ½¹ óä?d ht-¾\ @  ½º ôä?d ¨t$ؼ¢ @  ½» õä?d ètî½6 @  ½¼ öä?d (uÁ¦1Þ @  ½½ ÷ä?d huŸ¥kØ @  ½¾ øä?d ¨u¿Pi& @  ½¿ ùä?d èu“=Óç @  ½À úä?d (vys& @  ½Á ûä?d hvÈjÊ @  ½ üä?d ¨vèŸÈù @  ½à ýä?d èvÝ©Ém @  ½Ä þä?d (w áE… @  ½Å ÿä?d hw9ôP< @  ½Æ å?d ¨wR @  ½Ç å?d èw'Ì÷Á @  ½È å?d (x3{Ü @  ½É å?d hxÕ Âý @  ½Ê å?d ¨xõÕÀ @  ½Ë å?d èxÀãÁ— @  ½Ì å?d (y«M @  ½Í å?d hyN¨y @  ½Î å?d ¨yn]‡ @  ½Ï  å?d èyý1Žd @  ½Ð  å?d (z`u.¥ @  ½Ñ  å?d hz¦f—„ @  ½Ò  å?d ¨z†“•z @  ½Ó  å?d èz³¥”î @  ½Ô å?d ({cí @  ½Õ å?d h{X¾ ì @  ½Ö å?d ¨{xK" @  ½× å?d è{F†‡ @  ½Ø å?d (|_Èt @  ½Ù å?d h|™ÛÍ? @  ½Ú å?d ¨|¹.ÏÁ @  ½Û å?d è|ŒÎU @  ½Ü å?d (}\PB½ @  ½Ý å?d h}S» @  ½Þ å?d ¨}"¦E @  ½ß å?d è} Ì¦ @  ½à å?d (~=ˆ× @  ½á å?d h~û›¿ö @  ½â å?d€ ¨~)J @  ¾ å?d è~Î^µ @  ¾ å?d (] @  ¾ å?d h}»u† @  ¾  å?d ¨uЀ']Nwx @  ¾ !å?d è­1 @  ¾ "å?d @€Ãou @  ¾ #å?d €€iJœ @  ¾ $å?d À€ëÛ‹Ð @  ¾ %å?d I}êŸ @  ¾ &å?d @ËìýA @  ¾ 'å?d €òÂIŠ @  ¾ (å?d ÀpS^T @  ¾ )å?d ‚Ÿù2 @  ¾ *å?d @‚hì @  ¾ +å?d €‚ Éw @  ¾ ,å?d À‚˜Þ© @  ¾ -å?d ƒ:;¿æ @  ¾ .å?d @ƒ¸ª¨8 @  ¾ /å?d €ƒäÔ~ @  ¾ 0å?d ÀƒfEiÁ @  ¾ 1å?d „ åwi @  ¾ 2å?d @„t`· @  ¾ 3å?d €„%±“Ì @  ¾ 4å?d À„§ „ @  ¾ 5å?d …†å] @  ¾ 6å?d @…‡òƒ @  ¾ 7å?d €…¾9FH @  ¾ 8å?d À…<¨Q– @  ¾ 9å?d †Óð @  ¾ :å?d @†Q“ . @  ¾ ;å?d €†Gñá @  ¾ <å?d À†Å`öÛ @  ¾! =å?d ‡gÆ—” @  ¾" >å?d @‡åW€J @  ¾# ?å?d €‡ÔÎz  @  ¾$ @å?d À‡V_m~ @  ¾% Aå?d ˆN Ä @  ¾& Bå?d @ˆ’ß @  ¾' Cå?d €ˆ8èa @  ¾( Då?d Àˆº‹ÿ¿ @  ¾) Eå?d ‰-žð @  ¾* Få?d @‰š¼‰. @  ¾+ Gå?d €‰£’=å @  ¾, Hå?d À‰!*; @  ¾- Iå?d ŠΩg] @  ¾. Jå?d @ŠL8pƒ @  ¾/ Kå?d €ŠK\½ @  ¾0 Lå?d ÀŠÉͪÆ @  ¾1 Må?d ‹kkˉ @  ¾2 Nå?d @‹éúÜW @  ¾3 Oå?d €‹µ„ p @  ¾4 På?d À‹7® @  ¾5 Qå?d Œ\µ @  ¾6 Rå?d @ŒÞ$Ø @  ¾7 Så?d €Œtáç£ @  ¾8 Tå?d ÀŒöpð} @  ¾9 Uå?d TÖ‘2 @  ¾: Vå?d @ÖG†ì @  ¾; Wå?d €ïi2' @  ¾< Xå?d Àmø%ù @  ¾= Yå?d Ž‚RhŸ @  ¾> Zå?d @ŽÃA @  ¾? [å?d €Ž¸¦“ø @  ¾@ \å?d ÀŽ:7„& @  ¾A ]å?d ˜‘åi @  ¾B ^å?d @ò· @  ¾C _å?d €ÛÉL @  ¾D `å?d ÀYX ’ @  ¾E aå?d •h[‡ @  ¾F bå?d @ùLY @  ¾G cå?d €½<¿" @  ¾H då?d À?­¨ü @  ¾I eå?d ‘ ɳ @  ¾J få?d @‘šÞm @  ¾K gå?d €‘&´j¦ @  ¾L hå?d À‘¤%}x @  ¾M iå?d ’K0 @  ¾N jå?d @’É'À @  ¾O kå?d €’Îzê[ @  ¾P lå?d À’Lëý… @  ¾Q må?d “îMœÊ @  ¾R nå?d @“lÜ‹ @  ¾S oå?d €“0¢]3 @  ¾T på?d À“²3Jí @  ¾U qå?d ”Ù“TE @  ¾V rå?d @”[C› @  ¾W så?d €”ñǰà @  ¾X tå?d À”sV§> @  ¾Y uå?d •ÑðÆq @  ¾Z vå?d @•Saѯ @  ¾[ wå?d €•jOed @  ¾\ xå?d À•èÞrº @  ¾] yå?d –t?Ü @  ¾^ zå?d @–…å( @  ¾_ {å?d €–“‡Â) @  ¾` |å?d À–Õ÷ @  ¾a }å?d —³°´¸ @  ¾b ~å?d @—1!£f @  ¾c å?d €—~  @  ¾d €å?d À—ŸïÀ @  ¾e å?d ˜Ùþ{z @  ¾f ‚å?d @˜[ol¤ @  ¾g ƒå?d €˜ñªŸß @  ¾h „å?d À˜s;ˆ @  ¾i …å?d ™ÑéN @  ¾j †å?d @™S þ @  ¾k ‡å?d €™j"J[ @  ¾l ˆå?d À™è³]… @  ¾m ‰å?d šã @  ¾n Šå?d @š…ˆ= @  ¾o ‹å?d €š‚ìʦ @  ¾p Œå?d Àš}Ýx @  ¾q å?d ›¢Û¼7 @  ¾r Žå?d @› J«é @  ¾s å?d €›|4}Î @  ¾t å?d À›þ¥j @  ¾u ‘å?d œ•t¸ @  ¾v ’å?d @œ”cf @  ¾w “å?d €œ½Q @  ¾x ”å?d Àœ?À‡Ã @  ¾y •å?d fæŒ @  ¾z –å?d @÷ñR @  ¾{ —å?d €&ÙE™ @  ¾| ˜å?d À¤HRG @  ¾} ™å?d žKâ! @  ¾~ šå?d @žÉsÿ @  ¾ ›å?d €ž’@Ôw @  ¾€ œå?d ÀžÑé @  ¾ å?d Ÿ²w¢æ @  ¾‚ žå?d @Ÿ0æµ8 @  ¾ƒ Ÿå?d €Ÿñ/Zà @  ¾„  åuР?d ÀŸs¾M @  ¾… ¡å?d  p[~Ü @  ¾† ¢å?d X òÊi @  ¾‡ £å?d ˜ Xšy @  ¾ˆ ¤å?d Ø Úž§ @  ¾‰ ¥å?d ¡x8ìè @  ¾Š ¦å?d X¡ú©û6 @  ¾‹ §å?d ˜¡ÇOý @  ¾Œ ¨å?d Ø¡AX# @  ¾ ©å?d ¢®¼E @  ¾Ž ªå?d X¢,-› @  ¾ «å?d ˜¢+IÏ @  ¾ ¬å?d Ø¢©ØØÞ @  ¾‘ ­å?d £ ~¹‘ @  ¾’ ®å?d X£‰ï®O @  ¾“ ¯å?d ˜£Õ‘xh @  ¾” °å?d Ø£Wo¶ @  ¾• ±å?d ¤< q @  ¾– ²å?d X¤¾1fÀ @  ¾— ³å?d ˜¤ô•» @  ¾˜ ´å?d ؤ–e‚e @  ¾™ µå?d ¥4Ãã* @  ¾š ¶å?d X¥¶Rôô @  ¾› ·å?d ˜¥|@? @  ¾œ ¸å?d Ø¥ íWá @  ¾ ¹å?d ¦âG‡ @  ¾ž ºå?d X¦`Ö Y @  ¾Ÿ »å?d ˜¦v´çr @  ¾  ¼å?d ئô%ð¬ @  ¾¡ ½å?d §Vƒ‘ã @  ¾¢ ¾å?d X§Ô†= @  ¾£ ¿å?d ˜§å‹|× @  ¾¤ Àå?d اgk  @  ¾¥ Áå?d ¨! ³ @  ¾¦ Âå?d X¨£šm @  ¾§ Ãå?d ˜¨ _î @  ¾¨ Äå?d ب‹ÎùÈ @  ¾© Åå?d ©)h˜‡ @  ¾ª Æå?d X©«ùY @  ¾« Çå?d ˜©’×;’ @  ¾¬ Èå?d Ø©F,L @  ¾­ Éå?d ªÿìa* @  ¾® Êå?d Xª}}vô @  ¾¯ Ëå?d ˜ªz»o @  ¾° Ìå?d تøˆ¬± @  ¾± Íå?d «Z.Íþ @  ¾² Îå?d X«Ø¿Ú  @  ¾³ Ïå?d ˜«„Á  @  ¾´ Ðå?d Ø«PÙ @  ¾µ Ñå?d ¬mðq @  ¾¶ Òå?d X¬ïa¯ @  ¾· Óå?d ˜¬E¤áÔ @  ¾¸ Ôå?d جÇ5ö  @  ¾¹ Õå?d ­e“—E @  ¾º Öå?d X­ç€› @  ¾» ×å?d ˜­Þ,4P @  ¾¼ Øå?d Ø­\½#Ž @  ¾½ Ùå?d ®³nè @  ¾¾ Úå?d X®1†y6 @  ¾¿ Ûå?d ˜®‰ã• @  ¾À Üå?d Ø® r‚Q @  ¾Á Ýå?d ¯©Ôã @  ¾ Þå?d X¯+EôÀ @  ¾à ßå?d ˜¯êŒ; @  ¾Ä àå?d دh å @  ¾Å áå?d °¤-]ð @  ¾Æ âå?d X°&¼J. @  ¾Ç ãå?d ˜°Œy¹U @  ¾È äå?d ذ讋 @  ¾É åå?d ±¬NÏÄ @  ¾Ê æå?d X±.ߨ @  ¾Ë çå?d ˜±ñlÑ @  ¾Ì èå?d ر•`{ @  ¾Í éå?d ²zÊ6i @  ¾Î êå?d X²ø[!· @  ¾Ï ëå?d ˜²ÿ?ì, @  ¾Ð ìå?d ز}®ûò @  ¾Ñ íå?d ³ßš½ @  ¾Ò îå?d X³]™c @  ¾Ó ïå?d ˜³ç[D @  ¾Ô ðå?d سƒvLš @  ¾Õ ñå?d ´èÖR2 @  ¾Ö òå?d X´jGEì @  ¾× óå?d ˜´À‚¶— @  ¾Ø ôå?d Ø´B¡I @  ¾Ù õå?d µàµÀ @  ¾Ú öå?d Xµb$ר @  ¾Û ÷å?d ˜µ[ c @  ¾Ü øå?d صÙ›tÍ @  ¾Ý ùå?d ¶619« @  ¾Þ úå?d X¶´ .u @  ¾ß ûå?d ˜¶¢ÂÄ^ @  ¾à üå?d ض SÓ€ @  ¾á ýå?d ·‚õ²Ï @  ¾â þå?d€ X·t§¹· @  ¿ ÿå?d ˜·tü?Ï @  ¿ æ?d Ø·öm( @  ¿ æ?d ¸u5²F @  ¿ æ?d X¸÷¤¥˜ @  ¿ æ?d ˜¸“Ó ™ @  ¿ æ?d ظBG @  ¿ æ?d ¹}V r @  ¿ æ?d X¹ÿÇ7¬ @  ¿ æ?d ˜¹ xŠ @  ¿ æ?d ع1oT @  ¿  æ?d º«ÒÙß @  ¿  æ?d Xº)CÎ @  ¿  æ?d ˜ºM4b @  ¿  æ?d غÏ¥uÞ @  ¿  æ?d »u  @  ¿ æ?d X»ŒbÕ @  ¿ æ?d ˜»¶O @  ¿ æ?d Ø»—'XÁ @  ¿ æ?d ¼9ν„ @  ¿ æ?d X¼»_ªZ @  ¿ æ?d ˜¼ß([ @  ¿ æ?d ؼ]¹… @  ¿ æ?d ½1­/° @  ¿ æ?d X½³<8n @  ¿ æ?d ˜½O[wH @  ¿ æ?d ؽÍÊ`– @  ¿ æ?d ¾ç)Ö @  ¿ æ?d X¾e¸Áà @  ¿ æ?d ˜¾Ïm @  ¿ æ?d ؾƒ^z @  ¿ æ?d ¿Sí]y @  ¿ æ?d X¿Ñ|J§ @  ¿! æ?d ˜¿Õü^± @uÐÀ  ¿"  æ?d Ø¿WmIo @  ¿# !æ?d 0À„:w @  ¿$ "æ?d pÀ«© @  ¿% #æ?d °Àbܵ¨ @  ¿& $æ?d ðÀàM¢v @  ¿' %æ?d 0ÁŒYœC @  ¿( &æ?d pÁÈ‹ @  ¿) 'æ?d °Áò¯Ä» @  ¿* (æ?d ðÁp>Óe @  ¿+ )æ?d 0ÂZÝeî @  ¿, *æ?d pÂØLr0 @  ¿- +æ?d °Â¼;Þ1 @  ¿. ,æ?d ðÂ>ªÉï @  ¿/ -æ?d 0ÃÿÉ: @  ¿0 .æ?d pÃ}ŽÞä @  ¿1 /æ?d °Ãä¹ó. @  ¿2 0æ?d ðÃf(äð @  ¿3 1æ?d 0ÄÈÁµ @  ¿4 2æ?d pÄJPk @  ¿5 3æ?d °Ä.'ºj @  ¿6 4æ?d ðĬ¶­´ @  ¿7 5æ?d 0ÅÀ¢“ @  ¿8 6æ?d pÅB3„_ @  ¿9 7æ?d °Å¾TËy @  ¿: 8æ?d ðÅ<Åܧ @  ¿; 9æ?d 0Æ&j, @  ¿< :æ?d pÆ”·}ò @  ¿= ;æ?d °ÆðÀÑó @  ¿> <æ?d ðÆrQÆ- @  ¿? =æ?d 0Ç åçÚ @  ¿@ >æ?d pÇŽtð @  ¿A ?æ?d °Çz¤ñ @  ¿B @æ?d ðÇø5æÝ @  ¿C Aæ?d 0È{m|Š @  ¿D Bæ?d pÈùükT @  ¿E Cæ?d °È‹ÇU @  ¿F Dæ?d ðÈЋ @  ¿G Eæ?d 0Ésî¾ @  ¿H Fæ?d pÉñŸù` @  ¿I Gæ?d °É ø¶F @  ¿J Hæ?d ðÉi¡˜ @  ¿K Iæ?d 0Ê¥Š @  ¿L Jæ?d pÊ'Í @  ¿M Kæ?d °ÊCl¬Ì @  ¿N Læ?d ðÊÁý» @  ¿O Mæ?d 0ËH»Ç @  ¿P Næ?d p˂٬ @  ¿Q Oæ?d °ËîÓ @  ¿R Pæ?d ðË™–  @  ¿S Qæ?d 0Ì7–sH @  ¿T Ræ?d p̵d– @  ¿U Sæ?d °ÌÑpÈ— @  ¿V Tæ?d ðÌSáßI @  ¿W Uæ?d 0Í?õá| @  ¿X Væ?d pͽdö¢ @  ¿Y Wæ?d °ÍA¹„ @  ¿Z Xæ?d ðÍÃ’®Z @  ¿[ Yæ?d 0ÎéqÑ @  ¿\ Zæ?d pÎkà @  ¿] [æ?d °Î—£ @  ¿^ \æ?d ðδР@  ¿_ ]æ?d 0Ï]µ“µ @  ¿` ^æ?d pÏß$„k @  ¿a _æ?d °ÏÛ¤} @  ¿b `æ?d ðÏY5‡£ @  ¿c aæ?d 0ÐPL-[ @  ¿d bæ?d pÐÒÝ:… @  ¿e cæ?d °Ð¶ª–„ @  ¿f dæ?d ðÐ4;Z @  ¿g eæ?d 0ÑX/¿o @  ¿h fæ?d pÑÚ¾¨± @  ¿i gæ?d °Ñ&Ùç— @  ¿j hæ?d ðѤHðI @  ¿k iæ?d 0ÒŽ«F @  ¿l jæ?d pÒ :Q @  ¿m kæ?d °ÒhMý @  ¿n læ?d ðÒêÜêà @  ¿o mæ?d 0Ó+iê @  ¿p næ?d pÓ©øýÈ @  ¿q oæ?d °Ó0ÏÐ @  ¿r pæ?d ðÓ²^ÇÜ @  ¿s qæ?d 0Ô·"™ @  ¿t ræ?d pÔž&5G @  ¿u sæ?d °ÔúQ™F @  ¿v tæ?d ðÔxÀŽ˜ @  ¿w uæ?d 0ÕÔ°­ @  ¿x væ?d pÕ–E§s @  ¿y wæ?d °Õj"èU @  ¿z xæ?d ðÕè³ÿ‹ @  ¿{ yæ?d 0ÖÂPI @  ¿| zæ?d pÖ@Á^Þ @  ¿} {æ?d °Ö$¶òß @  ¿~ |æ?d ðÖ¦'å @  ¿ }æ?d 0×;ÅôÇ @  ¿€ ~æ?d p×¹Tã @  ¿ æ?d °×PB¶Œ @  ¿‚ €æ?d ð×ÒÓ¡R @  ¿ƒ æ?d 0ØQ‹; @  ¿„ ‚æ?d pØÓ,Û @  ¿… ƒæ?d °Ø·m€Ú @  ¿† „æ?d ðØ5ü— @  ¿‡ …æ?d 0ÙYè©1 @  ¿ˆ †æ?d pÙÛy¾ï @  ¿‰ ‡æ?d °Ù'ñÉ @  ¿Š ˆæ?d ðÙ¥æ @  ¿‹ ‰æ?d 0ÚlPœ @  ¿Œ Šæ?d pÚ ýGB @  ¿ ‹æ?d °ÚiŠëC @  ¿Ž Œæ?d ðÚëü @  ¿ æ?d 0Û*®üH @  ¿ Žæ?d pÛ¨?ë– @  ¿‘ æ?d °Û1Æ\ @  ¿’ æ?d ðÛ³™Ñ‚ @  ¿“ ‘æ?d 0Üp4Ç @  ¿” ’æ?d pÜŸá# @  ¿• “æ?d °Üû– @  ¿– ”æ?d ðÜy˜Æ @  ¿— •æ?d 0ݦó @  ¿˜ –æ?d pÝ—‚±- @  ¿™ —æ?d °Ýkåþ  @  ¿š ˜æ?d ðÝétéÕ @  ¿› ™æ?d 0Þ×_^ @  ¿œ šæ?d pÞAH€ @  ¿ ›æ?d °Þ%qä @  ¿ž œæ?d ðÞ§àó_ @  ¿Ÿ æ?d 0ßwSÔ: @  ¿  žæ?d pßõÂÃä @  ¿¡ Ÿæ?d uÐà/°ßñB×ò @  ¿¢  æ?d ðßsÓÀ, @  ¿£ ¡æ?d HàÝЈ @  ¿¤ ¢æ?d ˆàý%Šn @  ¿¥ £æ?d Èà;63O @  ¿¦ ¤æ?d áë~¿§ @  ¿§ ¥æ?d HáÕ³¤ @  ¿¨ ¦æ?d ˆáõFZ @  ¿© §æ?d Èá«EB\ @  ¿ª ¨æ?d â6â @  ¿« ©æ?d Hâ7ã  @  ¿¬ ªæ?d ˆâ#Âá÷ @  ¿­ «æ?d ÈâåÑXÖ @  ¿® ¬æ?d ã5™Ô> @  ¿¯ ­æ?d Hã¦õOÝ @  ¿° ®æ?d ˆã†M# @  ¿± ¯æ?d Èã½SuÉ @  ¿² °æ?d ä¤†Æ @  ¿³ ±æ?d Hä‘+‡R @  ¿´ ²æ?d ˆä±Þ…¬ @  ¿µ ³æ?d ÈäwÍ< @  ¿¶ ´æ?d å§…°e @  ¿· µæ?d Hå™Hf @  ¿¸ ¶æ?d ˆå¹½˜ @  ¿¹ ·æ?d Èåç¾Mž @  ¿º ¸æ?d æzúí_ @  ¿» ¹æ?d HæOÌìË @  ¿¼ ºæ?d ˆæo9î5 @  ¿½ »æ?d Èæ©*W @  ¿¾ ¼æ?d çybÛü @  ¿¿ ½æ?d HçUa= @  ¿À ¾æ?d ˆçuúcà @  ¿Á ¿æ?d Èç#Nwä @  ¿ Àæ?d è±ûù @  ¿à Áæ?d Hè"‡úm @  ¿Ä Âæ?d ˆèrø“ @  ¿Å Ãæ?d ÈèÄaA² @  ¿Æ Äæ?d é)ÍZ @  ¿Ç Åæ?d Hé*ähY @  ¿È Ææ?d ˆé j§ @  ¿É Çæ?d ÈéT0¡ @  ¿Ê Èæ?d êÉV` @  ¿Ë Éæ?d Hêü`‘ô @  ¿Ì Êæ?d ˆêÜ•“  @  ¿Í Ëæ?d Èê†*+ @  ¿Î Ìæ?d ëÊΦà @  ¿Ï Íæ?d HëY¢=  @  ¿Ð Îæ?d ˆëyW?Þ @  ¿Ñ Ïæ?d ÈëB4 @  ¿Ò Ðæ?d ì[Jô; @  ¿Ó Ñæ?d Hìn|õ¯ @  ¿Ô Òæ?d ˆìN‰÷Q @  ¿Õ Óæ?d È숚Np @  ¿Ö Ôæ?d íXÒ˜ @  ¿× Õæ?d Hífg› @  ¿Ø Öæ?d ˆíFêee @  ¿Ù ׿?d Èíé?c @  ¿Ú Øæ?d î…­Ÿ¢ @  ¿Û Ùæ?d Hî°›ž6 @  ¿Ü Úæ?d ˆînœÈ @  ¿Ý Ûæ?d ÈîV}%é @  ¿Þ Üæ?d ï†5© @  ¿ß Ýæ?d Hï_R @  ¿à Þæ?d ˆï$ª¬ @  ¿á ßæ?d Èï‚Nš @  ¿â àæ?d€ ðRh @  À áæ?d Hð†i!  @  À âæ?d ˆð¦œ#^ @  À ãæ?d Èð¥Æa’ @  À äæ?d ñuŽíz @  À åæ?d Hñ…ñ @  À ææ?d ˆñ¥ý @  À çæ?d Èñ5µ @  À èæ?d ò¨ñ°@ @  À éæ?d HòXŽJ9 @  À êæ?d ˆòx{HÇ @  À ëæ?d Èò{!  @  À ìæ?d ó«i†ã @  À íæ?d Hó[|š @  À îæ?d ˆó{ã~d @  À ïæ?d Èó#£' @  À ðæ?d ô:íÔ @  À ñæ?d HôÊ’.b @  À òæ?d ˆôêg,œ @  À óæ?d Èôé=nP @  À ôæ?d õ9u⸠@  À õæ?d HõÉ Á @  À öæ?d ˆõéÿ? @  À ÷æ?d ÈõyNC @  À øæ?d öä ¿‚ @  À ùæ?d HöuEû @  À úæ?d ˆö4€G @  À ûæ?d Èö7ÚÉ @  À üæ?d ÷ç’‰! @  À ýæ?d H÷ísX @  À þæ?d ˆ÷7q¦ @  À ÿæ?d È÷q"5 @  À ç?d øEç®( @  À! ç?d Høµ˜TQ @  À" ç?d ˆø•mV¯ @  À# ç?d Èø–7c @  À$ ç?d ùF˜‹ @  À% ç?d Hù¶bò @  À& ç?d ˆù–õ`  @  À' ç?d ÈùDep @  À( ç?d ú›Å± @  À)  ç?d Húk?È @  À*  ç?d ˆúKŠ=6 @  À+  ç?d ÈúHÐú @  À,  ç?d û˜˜ó @  À-  ç?d Hûhç k @  À. ç?d ˆûH • @  À/ ç?d ÈûRRå @  À0 ç?d ü ¡ê @  À1 ç?d Hüùc[“ @  À2 ç?d ˆüÙ–Ym @  À3 ç?d ÈüÚÌ¡ @  À4 ç?d ý „—I @  À5 ç?d Hýúûm0 @  À6 ç?d ˆýÚoÎ @  À7 ç?d ÈýJ¿j² @  À8 ç?d þ×ûÊs @  À9 ç?d Hþ'„0  @  À: ç?d ˆþq2ô @  À; ç?d Èþ+p8 @  À< ç?d ÿÔcüÐ @  À= ç?d Hÿ$© @  À> ç?d ˆÿéW @  À? uÐç?d Èÿ~EÙ @  À@  ç?d 1«m( @  ÀA !ç?d `ÁÔ—Q @  ÀB "ç?d  á!•¯ @  ÀC #ç?d àâ{×c @  ÀD $ç?d 23[‹ @  ÀE %ç?d `ÂL¡ò @  ÀF &ç?d  â¹£  @  ÀG 'ç?d àr¦p @  ÀH (ç?d ïL± @  ÀI )ç?d `3üÈ @  ÀJ *ç?d  ?Æþ6 @  ÀK +ç?d à<œ¼ú @  ÀL ,ç?d ìÔ0 @  ÀM -ç?d `«Êk @  ÀN .ç?d  <^È• @  ÀO /ç?d àd‘å @  ÀP 0ç?d }Pbê @  ÀQ 1ç?d `/˜“ @  ÀR 2ç?d  ­Úšm @  ÀS 3ç?d ஀ء @  ÀT 4ç?d ~ÈTI @  ÀU 5ç?d `Ž·®0 @  ÀV 6ç?d  ®B¬Î @  ÀW 7ç?d à>ó©² @  ÀX 8ç?d £· s @  ÀY 9ç?d `SÈó  @  ÀZ :ç?d  s=ñô @  À[ ;ç?d àpg³8 @  À\ <ç?d  /?Ð @  À] =ç?d `PPÅ© @  À^ >ç?d  p¥ÇW @  À_ ?ç?d àT•Z @  À` @ç?d `ûG @  Àa Aç?d `„ã> @  Àb Bç?d  °qáÀ @  Àc Cç?d à³+£  @  Àd Dç?d cc/ä @  Àe Eç?d ` “Õ @  Àf Fç?d   ³é×c @  Àg Gç?d à #XÒ @  Àh Hç?d ¾rÞ @  Ài Iç?d ` Ncˆ§ @  Àj Jç?d   n–ŠY @  Àk Kç?d à mÌÈ• @  Àl Lç?d ½„D} @  Àm Mç?d ` Mû¾ @  Àn Nç?d   m¼ú @  Ào Oç?d à 5NåŠ @  Àp Pç?d ,… @  Àq Qç?d ` Üìü @  Àr Rç?d   üŠî @  Às Sç?d à ÿЬÎ @  Àt Tç?d /˜ & @  Àu Uç?d ` ßçÚ_ @  Àv Vç?d   ÿØ¡ @  Àw Wç?d à o£ÝÝ @  Àx Xç?d òç} @  Ày Yç?d `˜‡e @  Àz Zç?d  "m…› @  À{ [ç?d à!7ÇW @  À| \ç?d ñK¿ @  À} ]ç?d `±Æ @  À~ ^ç?d  !õ³8 @  À _ç?d à¸U‡ @  À€ `ç?d ‹~5 @  À aç?d `öô„L @  À‚ bç?d  Ö†² @  Àƒ cç?d àÕ[Ä~ @  À„ dç?d H– @  À… eç?d `õl²ï @  À† fç?d  Õ™° @  À‡ gç?d àE(µm @  Àˆ hç?d Øl¬ @  À‰ iç?d `(ïÕ @  ÀŠ jç?d  æí+ @  À‹ kç?d à ¼¯ç @  ÀŒ lç?d Ûô# @  À mç?d `+‹Ùv @  ÀŽ nç?d   ~Ûˆ @  À oç?d àS>‚ø @  À pç?d Jpq÷ @  À‘ qç?d `º‹Ž @  À’ rç?d  šú‰p @  À“ sç?d à™ Ë¼ @  À” tç?d IèGT @  À• uç?d `¹—½- @  À– vç?d  ™b¿Ó @  À— wç?d à Óº¯ @  À˜ xç?d ”—n @  À™ yç?d `dèà @  Àš zç?d  Dâé @  À› {ç?d àGG % @  Àœ |ç?d —,Í @  À }ç?d `gpÖ´ @  Àž ~ç?d  G…ÔJ @  ÀŸ ç?d à~âÒÕ @  À  €ç?d J^È @  À¡ ç?d `ºb¤± @  À¢ ‚ç?d  š—¦O @  À£ ƒç?d à™Íäƒ @  À¤ „ç?d I…hk @  À¥ …ç?d `¹ú’ @  À¦ †ç?d  ™ì @  À§ ‡ç?d à ¾• @  À¨ ˆç?d ”ú5Q @  À© ‰ç?d `d…Ï( @  Àª Šç?d  DpÍÖ @  À« ‹ç?d àG* @  À¬ Œç?d —bò @  À­ ç?d `gù‹ @  À® Žç?d  Gèûu @  À¯ ç?d ਢ @  À° ç?d æQ  @  À± ‘ç?d `ö™«s @  À² ’ç?d  Öl© @  À³ “ç?d àÕ6ëA @  À´ ”ç?d ~g© @  Àµ •ç?d `õÐ @  À¶ –ç?d  ÕôŸ. @  À· —ç?d àEEšR @  À¸ ˜ç?d Ø:“ @  À¹ ™ç?d `(~Àê @  Àº šç?d  ‹Â @  À» ›ç?d à Ñ€Ø @  À¼ œç?d Û™ 0 @  À½ ç?d `+æöI @  À¾ žç?d   ô·uÐ  @  À¿ Ÿç?d àqåµ9 @  ÀÀ  ç?d 8 îk_ @  ÀÁ ¡ç?d x ð‘‘& @  À ¢ç?d ¸ Ðd“Ø @  Àà £ç?d ø Ó>Ñ @  ÀÄ ¤ç?d 8!v]ü @  ÀÅ ¥ç?d x!ó §… @  ÀÆ ¦ç?d ¸!Óü¥{ @  ÀÇ §ç?d ø!CM  @  ÀÈ ¨ç?d 8"Þ Æ @  ÀÉ ©ç?d x".vú¿ @  ÀÊ ªç?d ¸"ƒøA @  ÀË «ç?d ø" Ùº @  ÀÌ ¬ç?d 8#Ý‘6e @  ÀÍ ­ç?d x#-îÌ @  ÀÎ ®ç?d ¸# Îâ @  ÀÏ ¯ç?d ø#U[—’ @  ÀÐ °ç?d 8$Ld @  ÀÑ ±ç?d x$¼jžä @  ÀÒ ²ç?d ¸$œŸœ @  ÀÓ ³ç?d ø$ŸÅÞÖ @  ÀÔ ´ç?d 8%OR> @  ÀÕ µç?d x%¿ò¨G @  ÀÖ ¶ç?d ¸%Ÿª¹ @  À× ·ç?d ø%¶¯Å @  ÀØ ¸ç?d 8&’ò @  ÀÙ ¹ç?d x&bõ} @  ÀÚ ºç?d ¸&Bx÷ƒ @  ÀÛ »ç?d ø&A"µO @  ÀÜ ¼ç?d 8'‘j9§ @  ÀÝ ½ç?d x'aÃÞ @  ÀÞ ¾ç?d ¸'AàÁ  @  Àß ¿ç?d ø'eA“- @  Àà Àç?d 8(Q¾0 @  Àá Áç?d x(¡ÁåI @  Àâ Âç?d€ ¸(õ÷û @  Á Ãç?d ø(ìñô @  Á Äç?d 8)Ǥ} @  Á Åç?d x)ò’|ˆ @  Á Æç?d ¸)Òg~v @  Á Çç?d ø)Œd$p @  Á Èç?d 8* „± @  Á Éç?d x*/í!² @  Á Êç?d ¸*#L @  Á Ëç?d ø*É šm @  Á Ìç?d 8+C… @  Á Íç?d x+,u @  Á Îç?d ¸+ €ï @  Á Ïç?d ø+7Ó- @  Á Ðç?d 8,.Þ  @  Á Ñç?d x,½ñEé @  Á Òç?d ¸,G @  Á Óç?d ø,[þ6 @  Á Ôç?d 8-‹_rÞ @  Á Õç?d x-¾isJ @  Á Öç?d ¸-žœq´ @  Á ×ç?d ø-ÀŸ+² @  Á Øç?d 8.]Û‹s @  Á Ùç?d x.c.p @  Á Úç?d ¸.Cã,Ž @  Á Ûç?d ø.…𕯠@  Á Üç?d 8/U¸G @  Á Ýç?d x/`ŽÓ @  Á Þç?d ¸/@{- @  Á ßç?d ø/æŸ @  Á àç?d 80XA§© @  Á áç?d x0Ú+ú @  Á âç?d ¸0úÞ @  Á! ãç?d ø0<Í % @  Á" äç?d 81ì…,Í @  Á# åç?d x1Ù³-Y @  Á$ æç?d ¸1ùF/§ @  Á% çç?d ø1§Eu¡ @  Á& èç?d 82:Õ` @  Á' éç?d x2Ìpc @  Á( êç?d ¸2$9r @  Á) ëç?d ø2â*˼ @  Á* ìç?d 832bGT @  Á+ íç?d x3TFÀ @  Á, îç?d ¸3'¡D> @  Á- ïç?d ø3ò|Ô @  Á. ðç?d 84¼Û @  Á/ ñç?d x4–Ð8 @  Á0 òç?d ¸4¶%Æ @  Á1 óç?d ø4p6¯ç @  Á2 ôç?d 85 ~# @  Á3 õç?d x5•H"› @  Á4 öç?d ¸5µ½ e @  Á5 ÷ç?d ø5ë¾zc @  Á6 øç?d 86vúÚ¢ @  Á7 ùç?d x6H7¡ @  Á8 úç?d ¸6hÂ}_ @  Á9 ûç?d ø6®ÑÄ~ @  Á: üç?d 87~™H– @  Á; ýç?d x7K¯I @  Á< þç?d ¸7kZKü @  Á= ÿç?d ø7º|oª @  Á> è?d 88Žƒã· @  Á? è?d x8¢îYv @  Á@ è?d ¸8‚[ˆ @  ÁA è?d ø8Dâ© @  ÁB è?d 89”@nA @  ÁC è?d x9¡voÕ @  ÁD è?d ¸9ƒm+ @  ÁE è?d ø9߀7- @  ÁF è?d 8:BÄ—ì @  ÁG  è?d x:| 2ï @  ÁH  è?d ¸:\ü0 @  ÁI  è?d ø:šï‰0 @  ÁJ  è?d 8;J§Ø @  ÁK  è?d x;‘L @  ÁL è?d ¸;_d² @  ÁM è?d ø;d7>X @  ÁN è?d 8<}yÍW @  ÁO è?d x<îV´ @  ÁP è?d ¸<ÎàTJ @  ÁQ è?d ø<óík @  ÁR è?d 8=Ø»aƒ @  ÁS è?d x=í` @  ÁT è?d ¸=Íxbé @  ÁU è?d ø=“{8ï @  ÁV è?d 8>?˜. @  ÁW è?d x>0ò=- @  ÁX è?d ¸>?Ó @  ÁY è?d ø>Ö†ò @  ÁZ è?d 8?\  @  Á[ è?d x?3j Ž @  Á\ è?duÐ@7 ¸?Ÿ p @  Á] è?d ø?µ{F @  Á^  è?d P@vײz @  Á_ !è?d @VÙ  @  Á` "è?d Ð@ÔH × @  Áa #è?d A@‚.À @  Áb $è?d PAÂ9 @  Ác %è?d AUA-ª @  Ád &è?d ÐA×Ð:t @  Áe 'è?d B–×m @  Áf (è?d PB—À³ @  Ág )è?d Bˆ>p @  Áh *è?d ÐB ¯gN @  Ái +è?d CžeEY @  Áj ,è?d PCôR‡ @  Ák -è?d C‹¦F3 @  Ál .è?d ÐC 7Qí @  Ám /è?d D©»Ö @  Án 0è?d PD+*š @  Áo 1è?d D"Ë @  Áp 2è?d ÐD˜³ @  Áq 3è?d E y! @  Ár 4è?d PEŽè6Ü @  Ás 5è?d Eº"h @  Át 6è?d ÐE›+5¶ @  Áu 7è?d FÚýد @  Áv 8è?d PFXlÏq @  Áw 9è?d FÄÅR @  Áx :è?d ÐFFThŒ @  Áy ;è?d GÒžJ› @  Áz <è?d PGP]E @  Á{ =è?d GÇ]Iñ @  Á| >è?d ÐGEÌ^/ @  Á} ?è?d H¥ÑË @  Á~ @è?d PH'‡Æ @  Á Aè?d HJØYÅ @  Á€ Bè?d ÐHÈIN @  Á Cè?d I\ƒl  @  Á‚ Dè?d PIÞ{Ò @  Áƒ Eè?d II@of @  Á„ Fè?d ÐIËÑx¸ @  Á… Gè?d JŠ•¡ @  Á† Hè?d PJ–‚ @  Á‡ Iè?d J”?2\ @  Áˆ Jè?d ÐJ®%‚ @  Á‰ Kè?d K‚d• @  ÁŠ Lè?d PKõK @  Á‹ Mè?d K—§ÿ @  ÁŒ Nè?d ÐK6! @  Á Oè?d LµºÏ @  ÁŽ Pè?d PL7+ØÄ @  Á Qè?d L#V @  Á Rè?d ÐL„²AÙ @  Á‘ Sè?d MxcÎ @  Á’ Tè?d PM’ét @  Á“ Uè?d M»`¤ @  Á” Vè?d ÐM‡*wz @  Á• Wè?d NÆüšc @  Á– Xè?d PNDm½ @  Á— Yè?d NØÄ=ž @  Á˜ Zè?d ÐNZU*@ @  Á™ [è?d OΟW @  Áš \è?d POL‰ @  Á› ]è?d OÛ\ = @  Áœ ^è?d ÐOYÍã @  Á _è?d PÃf¶¹ @  Áž `è?d PPA÷¡g @  ÁŸ aè?d Paù @  Á  bè?d ÐPãhÊ @  Á¡ cè?d Qw¢=Ý @  Á¢ dè?d PQõ3* @  Á£ eè?d Qba>· @  Á¤ fè?d ÐQàð)i @  Á¥ gè?d R¡&Äp @  Á¦ hè?d PR#·Ó® @  Á§ iè?d R¿c @  Á¨ jè?d ÐR=tS @  Á© kè?d S©EVD @  Áª lè?d PS+ÔAš @  Á« mè?d S¼†U. @  Á¬ nè?d ÐS>Bð @  Á­ oè?d Tž›žË @  Á® pè?d PT ‰ @  Á¯ qè?d T-Ö @  Á° rè?d ÐT¯“ @  Á± sè?d U;Y2 @  Á² tè?d PU¹È%Á @  Á³ uè?d U.š1u @  Á´ vè?d ÐU¬ &« @  Áµ wè?d VíÝ˲ @  Á¶ xè?d PVoLÜl @  Á· yè?d VóålO @  Á¸ zè?d ÐVqt{‘ @  Á¹ {è?d Wå¾Y† @  Áº |è?d PWg/NX @  Á» }è?d Wð}Zì @  Á¼ ~è?d ÐWrìM2 @  Á½ è?d Xð–D @  Á¾ €è?d PX aš @  Á¿ è?d Xƒh.{ @  ÁÀ ‚è?d ÐXù9¥ @  ÁÁ ƒè?d Y•3² @  Á „è?d PY¢ l @  Áà …è?d Y€ðØ @  ÁÄ †è?d ÐYa @  ÁÅ ‡è?d ZC·â @  ÁÆ ˆè?d PZÁ&õÁ @  ÁÇ ‰è?d Z]Eâ @  ÁÈ Šè?d ÐZßR< @  ÁÉ ‹è?d [KÔp+ @  ÁÊ Œè?d P[ÉEgõ @  ÁË è?d [^sA @  ÁÌ Žè?d Ð[܆dŸ @  ÁÍ è?d \| ¸¤ @  ÁÎ è?d P\þ›¯z @  ÁÏ ‘è?d \Ï“!¹ @  ÁÐ ’è?d Ð\M6g @  ÁÑ “è?d ]ÙÈp @  ÁÒ ”è?d P][Y® @  ÁÓ •è?d ]Ì  @  ÁÔ –è?d Ð]NšÄ @  ÁÕ —è?d ^LíÝ @  ÁÖ ˜è?d P^Ýú @  Á× ™è?d ^tJ  @  ÁØ šè?d Ð^“å]þ @  ÁÙ ›è?d _/é @  ÁÚ œè?d P_…¾h7 @  ÁÛ è?d _ì|ƒ @  ÁuÐ`Ü žè?d Ð_}k] @  ÁÝ Ÿè?d (` ðÈ- @  ÁÞ  è?d h`ˆaßó @  Áß ¡è?d ¨`¨ov€ @  Áà ¢è?d è`*þa^ @  Áá £è?d (a¾4CI @  Áâ ¤è?d€ haý⣗ @  Â ¥è?d ¨a‹ñÿ  @  Â ¦è?d èa `èÔ @  Â §è?d (bÿþ  @  Â ¨è?d hbnéþ @  Â ©è?d ¨b]u§ @  Â ªè?d èbßäy @  Â «è?d (c…œl @  Â ¬è?d hc {Ê @  Â ­è?d ¨cU”“ @  Â ®è?d ècׇƒM @  Â ¯è?d (d²B¤› @  Â °è?d hd0Ó³E @  Â ±è?d ¨dbÈ\ @  Â ²è?d èdàYK @  Â ³è?d (e€O @  Â ´è?d he•‘ @  Â µè?d ¨eÇ ðÈ @  Â ¶è?d èeE›ç @  Â ·è?d (fÁñâ @  Â ¸è?d hfC•æ< @  Â ¹è?d ¨fŽ e @  Â ºè?d èf“» @  Â »è?d (gÉgcÖ @  Â ¼è?d hgKöt @  Â ½è?d ¨gí›Q @  Â ¾è?d èg›|Œ @  Â ¿è?d (h¾ïø† @  Â Àè?d hh<~ïX @  Â Áè?d ¨hne @  Â Âè?d èhìôß @  Â Ãè?d (i +sâ @  Â Äè?d hiˆºd< @  Â! Åè?d ¨iÚ¡‹e @  Â" Æè?d èiX0œ» @  Â# Çè?d (jܯŠO @  Â$ Èè?d hj^>‘ @  Â% Éè?d ¨j %rÈ @  Â& Êè?d èjŽ´e @  Â' Ëè?d (kÔÌ{ @  Â( Ìè?d hkV]¥ @  Â) Íè?d ¨kFàü @  Â* Îè?d èk†×÷" @  Â+ Ïè?d (lãÐô @  Â, Ðè?d hlaƒÇ* @  Â- Ñè?d ¨l3˜(s @  Â. Òè?d èl± ?­ @  Â/ Óè?d (mFÐ|  @  Â0 Ôè?d hmÄAkþ @  Â1 Õè?d ¨m–Z„§ @  Â2 Öè?d èmË“y @  Â3 ×è?d (nT… @  Â4 Øè?d hnÅ’S @  Â5 Ùè?d ¨n@Þ}  @  Â6 Úè?d ènÂOjÔ @  Â7 Ûè?d (o˜7¹ @  Â8 Üè?d ho¦g @  Â9 Ýè?d ¨oH½ï> @  Â: Þè?d èoÊ,øà @  Â; ßè?d (p•ΩW @  Â< àè?d hp_¾‰ @  Â= áè?d ¨pEDQÐ @  Â> âè?d èpÇÕF @  Â? ãè?d (q $¡ @  Â@ äè?d hq œ3 @  ÂA åè?d ¨q_‡Ü& @  ÂB æè?d èqÝËø @  ÂC çè?d (rY‰Ý  @  ÂD èè?d hrÛÊÒ @  ÂE éè?d ¨r‰%‹ @  ÂF êè?d èr ’2U @  ÂG ëè?d (sQêO8 @  ÂH ìè?d hsÓ{Xæ @  ÂI íè?d ¨s`·¿ @  ÂJ îè?d èsñ a @  ÂK ïè?d (tf4‡· @  ÂL ðè?d htä¥i @  ÂM ñè?d ¨t¶¾0 @  ÂN òè?d èt4/hî @  ÂO óè?d (uÃö+c @  ÂP ôè?d huAg<½ @  ÂQ õè?d ¨u|Óä @  ÂR öè?d èu‘íÄ: @  ÂS ÷è?d (vrÒÎ @  ÂT øè?d hv—ãÅ @  ÂU ùè?d ¨vÅø*I @  ÂV úè?d èvGi=— @  ÂW ûè?d (w@ú @  ÂX üè?d hwŸ€W$ @  ÂY ýè?d ¨wÍ›¸} @  ÂZ þè?d èwO ¯£ @  Â[ ÿè?d (x8Ú4 @  Â\ é?d hxŠ©Íê @  Â] é?d ¨xز"³ @  Â^ é?d èxZ#5m @  Â_ é?d (y¼üQP @  Â` é?d hy>mFŽ @  Âa é?d ¨ylv©× @  Âb é?d èyîç¾  @  Âc é?d (zjx¨ý @  Âd é?d hzèé¿# @  Âe  é?d ¨zºòPz @  Âf  é?d èz8cG¤ @  Âg  é?d ({b:É @  Âh  é?d h{àŠ- @  Âi  é?d ¨{²‘ÂN @  Âj é?d è{0Õ @  Âk é?d (|UÅòF @  Âl é?d h|×Tå˜ @  Âm é?d ¨|…O Á @  Ân é?d è|Þ @  Âo é?d (}ð^’ @  Âp é?d h}r–IL @  Âq é?d ¨} ¦ @  Âr é?d è}¢±Ë @  Âs é?d (~&ƒ§? @  Ât é?d h~¤°á @  Âu é?d ¨~ö _¸ @  Âv é?d è~t˜Hf @  Âw é?d (.à5  @  Âx é?d h¬q"Õ @  Ây é?d ¨uЀ'þjÍŒ @  Âz é?d è|ûÚR @  Â{ é?d @€óyÕ# @  Â|  é?d €€ÓŒ×Ý @  Â} !é?d À€#ó-¤ @  Â~ "é?d ó»¡L @  Â #é?d @ ìhä @  Â€ $é?d €*j @  Â %é?d ÀÚfc @  Â‚ &é?d ‚G"0¢ @  Âƒ 'é?d @‚Üh‘I @  Â„ (é?d €‚ü“· @  Â… )é?d À‚ âiÎ @  Â† *é?d ƒܪå& @  Â‡ +é?d @ƒÔ } @  Âˆ ,é?d €ƒôþƒ @  Â‰ -é?d Àƒûú @  ÂŠ .é?d „Ïõ @  Â‹ /é?d @„ãÕËò @  ÂŒ 0é?d €„Ã É  @  Â 1é?d À„3_3u @  ÂŽ 2é?d …ã¿ @  Â 3é?d @…Fg& @  Â 4é?d €…fâeØ @  Â‘ 5é?d À…–Ÿ¡ @  Â’ 6é?d † Ù?` @  Â“ 7é?d @†“ž‹ @  Â” 8é?d €†°fœu @  Â• 9é?d À†@f  @  Â– :é?d ‡Qêä @  Â— ;é?d @‡˜ð ¿ @  Â˜ <é?d €‡¸A @  Â™ =é?d À‡Hzô8 @  Âš >é?d ˆ|…x% @  Â› ?é?d @ˆïx—ï @  Âœ @é?d €ˆÏ• @  Â Aé?d Àˆ?òoh @  Âž Bé?d ‰ïºã€ @  ÂŸ Cé?d @‰[¼‹ @  Â  Dé?d €‰{Iu @  Â¡ Eé?d À‰‹6ä  @  Â¢ Fé?d ŠrDÍ @  Â£ Gé?d @Š8å& @  Â¤ Hé?d €Š­ÍçØ @  Â¥ Ié?d ÀŠ]²¡ @  Â¦ Jé?d ‹ú‘I @  Â§ Ké?d @‹…[w @  Â¨ Lé?d €‹¥®uì @  Â© Mé?d À‹UÑ• @  Âª Né?d ŒLŸ|š @  Â« Oé?d @Œ²…¿ @  Â¬ Pé?d €Œ’p½c @  Â­ Qé?d ÀŒbG @  Â® Ré?d ²GËò @  Â¯ Sé?d @GI @  Â° Té?d €7²· @  Â± Ué?d ÀÇÍëÎ @  Â² Vé?d ŽZ‰K @  Â³ Wé?d @ŽÁÃêä @  Â´ Xé?d €Žá6è @  Âµ Yé?d ÀŽIc @  Â¶ Zé?d Áž‹ @  Â· [é?d @É xÐ @  Â¸ \é?d €éUz. @  Â¹ ]é?d À*€W @  Âº ^é?d §ô<å @  Â» _é?d @ÄYÆ> @  Â¼ `é?d €ä¬ÄÀ @  Â½ aé?d ÀÓ>¹ @  Â¾ bé?d ‘Ä›²Q @  Â¿ cé?d @‘ÞšKÈ @  ÂÀ dé?d €‘þoI6 @  ÂÁ eé?d À‘³O @  Â fé?d ’“TŽ @  Âà gé?d @’²e @  ÂÄ hé?d €’(ë°› @  ÂÅ ié?d À’Ø”Jâ @  ÂÆ jé?d “ÜÆ  @  ÂÇ ké?d @“} Q @  ÂÈ lé?d €“ ˆ"¯ @  ÂÉ mé?d À“Ð÷ØÖ @  ÂÊ né?d ”ɹ+Ù @  ÂË oé?d @”7£èÞ @  ÂÌ pé?d €”Vê  @  ÂÍ qé?d À”ç)Y @  ÂÎ ré?d •7aœ± @  ÂÏ sé?d @•’aD  @  ÂÐ té?d €•²”Fô @  ÂÑ ué?d À•Bë¼ @  ÂÒ vé?d –߯L @  ÂÓ wé?d @–Då½§ @  ÂÔ xé?d €–d¿Y @  ÂÕ yé?d À–”oE  @  ÂÖ zé?d —D'ÉÈ @  Â× {é?d @—L†/“ @  ÂØ |é?d €—ls-m @  ÂÙ }é?d À—œ × @  ÂÚ ~é?d ˜¨ó[  @  ÂÛ é?d @˜&ÈàQ @  ÂÜ €é?d €˜=⯠@  ÂÝ é?d À˜öBÖ @  ÂÞ ‚é?d ™& ”> @  Âß ƒé?d @™’ k5 @  Âà „é?d €™²ùiË @  Âá …é?d À™B†“² @  Ââ †é?d€ š«/Õ @  Ã ‡é?d @šÑ Æ @  Ã ˆé?d €šñÿÄé @  Ã ‰é?d ÀšÄÉÅ} @  Ã Šé?d ›I• @  Ã ‹é?d @›Ò’ð´ @  Ã Œé?d €›ògòJ @  Ã é?d À›̪WI @  Ã Žé?d œÕä¤F @  Ã é?d @œî·œ¬ @  Ã é?d €œÎBžR @  Ã ‘é?d ÀœûtŸÆ @  Ã ’é?d +<. @  Ã “é?d @í/ª @  Ã ”é?d €ÍÚ¨ñ @  Ã •é?d À^¶3 @  Ã –é?d žÃò“Ó @  Ã —é?d @žñÉÕ @  Ã ˜é?d €ž½Ë+ @  Ã ™é?d Àžˆ2Ê¿ @  Ã šé?d ŸXzFW @  Ã ›é?d @Ÿžiÿv @  Ã œé?d €Ÿ¾œýˆ @  Ã éuР?d ÀŸ€QX‹ @  Ã žé?d  ñZ†í @  Ã Ÿé?d X W¾‡Û @  Ã  é?d ˜ wK…% @  Ã ¡é?d Ø B}„± @  Ã ¢é?d ¡’5Y @  Ã £é?d X¡T&±x @  Ã ¤é?d ˜¡tÓ³† @  Ã ¥é?d Ø¡ö¹Õ @  Ã ¦é?d ¢ký¯ @  Ã! §é?d X¢5þõ @  Ã" ¨é?d ˜¢ ÷ì @  Ã# ©é?d Ø¢ =öx @  Ã$ ªé?d £ðuz @  Ã% «é?d X£6fñ @  Ã& ¬é?d ˜£“ÁO @  Ã' ­é?d Ø£(^dL @  Ã( ®é?d ¤1—C @  Ã) ¯é?d X¤ C¯© @  Ã* °é?d ˜¤*¶­W @  Ã+ ±é?d ؤ€¬Ã @  Ã, ²é?d ¥ÏÈ + @  Ã- ³é?d X¥ Û™  @  Ã. ´é?d ˜¥).›ô @  Ã/ µé?d Ø¥ºB @  Ã0 ¶é?d ¦' Ö @  Ã1 ·é?d X¦yúÐ @  Ã2 ¸é?d ˜¦Yðø. @  Ã3 ¹é?d ئlÆùº @  Ã4 ºé?d §¼ŽuR @  Ã5 »é?d X§zÌs @  Ã6 ¼é?d ˜§ZhÎ @  Ã7 ½é?d اd¥kŽ @  Ã8 ¾é?d ¨PZç“ @  Ã9 ¿é?d X¨îó´ @  Ã: Àé?d ˜¨&ñJ @  Ã; Áé?d ب-ðÞ @  Ã< Âé?d ©Ãe|6 @  Ã= Ãé?d X©vÅ @  Ã> Äé?d ˜©%ƒÇé @  Ã? Åé?d Ø© î}( @  Ã@ Æé?d ª”ªÝé @  ÃA Çé?d XªÊ©‡ï @  ÃB Èé?d ˜ªê\… @  ÃC Éé?d تßj„… @  ÃD Êé?d «"m @  ÃE Ëé?d X«É1±L @  ÃF Ìé?d ˜«éij² @  ÃG Íé?d Ø«× ± @  ÃH Îé?d ¬ÎGå¾ @  ÃI Ïé?d X¬õÝT @  ÃJ Ðé?d ˜¬Õáߪ @  ÃK Ñé?d جà×Þ> @  ÃL Òé?d ­0ŸRÖ @  ÃM Óé?d X­öŒë÷ @  ÃN Ôé?d ˜­Öyé  @  ÃO Õé?d Ø­Erê @  ÃP Öé?d ®ØQÒ+ @  ÃQ ×é?d X®†Rˆ- @  ÃR Øé?d ˜®¦§ŠÓ @  ÃS Ùé?d Ø®“‘‹G @  ÃT Úé?d ¯CÙ¯ @  ÃU Ûé?d X¯…ʾŽ @  ÃV Üé?d ˜¯¥?¼p @  ÃW Ýé?d د›òs @  ÃX Þé?d °%,¥Á @  ÃY ßé?d X°ƒÈ¤÷ @  ÃZ àé?d ˜°£=¦  @  Ã[ áé?d ذ– § @  Ã\ âé?d ±FC+u @  Ã] ãé?d X±€P’T @  Ã^ äé?d ˜± ¥ª @  Ã_ åé?d ر"Ï,ù @  Ã` æé?d ²¿‹Œ8 @  Ãa çé?d X²áˆÖ> @  Ãb èé?d ˜²Á}ÔÀ @  Ãc éé?d زôKÕT @  Ãd êé?d ³$Y¼ @  Ãe ëé?d X³âà @  Ãf ìé?d ˜³Âåâc @  Ãg íé?d سü(G` @  Ãh îé?d ´åf´o @  Ãi ïé?d X´Þ5Œ… @  Ãj ðé?d ˜´þÀŽ{ @  Ãk ñé?d Ø´Ëöï @  Ãl òé?d µ¾ @  Ãm óé?d XµÝ­º& @  Ãn ôé?d ˜µýX¸Ø @  Ão õé?d صn4#; @  Ãp öé?d ¶ópƒú @  Ãq ÷é?d X¶­sÙü @  Ãr øé?d ˜¶†Û @  Ãs ùé?d ض¸°Ú– @  Ãt úé?d ·høV~ @  Ãu ûé?d X·®ëï_ @  Ãv üé?d ˜·Ží¡ @  Ãw ýé?d Ø·°ÓH¢ @  Ãx þé?d ¸„,Ä¿ @  Ãy ÿé?d X¸ä# @  Ãz ê?d ˜¸"îæÝ @  Ã{ ê?d ظØçI @  Ã| ê?d ¹Çk¡ @  Ã} ê?d X¹ƒÒ€ @  Ã~ ê?d ˜¹!vÐ~ @  Ã ê?d عîMZŽ @  Ã€ ê?d ºs úO @  Ã ê?d Xº-  I @  Ã‚ ê?d ˜º ÿ¢· @  Ãƒ  ê?d غ8É£# @  Ã„  ê?d »è/Ë @  Ã…  ê?d X».’–ê @  Ã†  ê?d ˜»g” @  Ã‡  ê?d Ø»0ª1 @  Ãˆ ê?d ¼)ä @  Ã‰ ê?d X¼·úò @  ÃŠ ê?d ˜¼2Bø  @  Ã‹ ê?d ؼtù˜ @  ÃŒ ê?d ½×Õ @  Ã˜ ê?d 0À¡o‡ @  Ã™ ê?d pÀ¾En± @  Ãš  ê?d °Àž°lO @  Ã› !ê?d ðÀ«†mÛ @  Ãœ "ê?d 0Á{Îá3 @  Ã #ê?d pÁ½ÝX @  Ãž $ê?d °Á(Zì @  ÃŸ %ê?d ðÁBæ¿ @  Ã  &ê?d 0‚F~ @  Ã¡ 'ê?d pÂÜx @  Ã¢ (ê?d °Âüð† @  Ã£ )ê?d ðÂÉÆ @  Ã¤ *ê?d 0ÃŽ“ú @  Ã¥ +ê?d pÃß*Û @  Ã¦ ,ê?d °Ãÿh(% @  Ã§ -ê?d ðÃÁ¥& @  Ã¨ .ê?d 0ÄØë~) @  Ã© /ê?d pÄã¸Fà @  Ãª 0ê?d °ÄÃMD= @  Ã« 1ê?d ðÄö{E© @  Ã¬ 2ê?d 0Å&3ÉA @  Ã­ 3ê?d pÅà p` @  Ã® 4ê?d °ÅÀÕrž @  Ã¯ 5ê?d ðÅS¹é} @  Ã° 6ê?d 0ÆÎýI¼ @  Ã± 7ê?d pÆþº @  Ã² 8ê?d °Æ° D @  Ã³ 9ê?d ðÆ…=Ð @  Ã´ :ê?d 0ÇUuœ8 @  Ãµ ;ê?d pÇ“f% @  Ã¶ <ê?d °Ç³“'ç @  Ã· =ê?d ðÇ^‚ä @  Ã¸ >ê?d 0ȹ¡ù @  Ã¹ ?ê?d pÈïÞ @  Ãº @ê?d °ÈÏà  @  Ã» Aê?d ðÈúÖ´ @  Ã¼ Bê?d 0É*ž•\ @  Ã½ Cê?d pÉì,} @  Ã¾ Dê?d °ÉÌx.ƒ @  Ã¿ Eê?d ðÉà”B @  ÃÀ Fê?d 0Ê}Q4ƒ @  ÃÁ Gê?d pÊ#Rn… @  Ã Hê?d °Ê§l{ @  Ãà Iê?d ðÊ6‘mï @  ÃÄ Jê?d 0ËæÙá @  ÃÅ Kê?d pË ÊX& @  ÃÆ Lê?d °Ë?ZØ @  ÃÇ Mê?d ðË>òÿÛ @  ÃÈ Nê?d 0Ì'¼ Ô @  ÃÉ Oê?d pÌï4> @  ÃÊ Pê?d °Ì<6À @  ÃË Qê?d ðÌ ,7T @  ÃÌ Rê?d 0ÍÙd»¼ @  ÃÍ Sê?d pÍw @  ÃÎ Tê?d °Í?‚c @  ÃÏ Uê?d ðͬ @  ÃÐ Vê?d 0Î1ª;A @  ÃÑ Wê?d pÎo©aG @  ÃÒ Xê?d °ÎO\c¹ @  ÃÓ Yê?d ðÎzjb- @  ÃÔ Zê?d 0Ϫ"îÅ @  ÃÕ [ê?d pÏl1Wä @  ÃÖ \ê?d °ÏLÄU @  Ã× ]ê?d ðÏr ð @  ÃØ ^ê?d 0ÐÌ×L« @  ÃÙ _ê?d pÐj3M @  ÃÚ `ê?d °ÐJÆOc @  ÃÛ aê?d ðÐðN÷ @  ÃÜ bê?d 0ѯ¸Â @  ÃÝ cê?d pÑi«{> @  ÃÞ dê?d °ÑI^yÀ @  Ãß eê?d ðÑË4Å“ @  Ãà fê?d 0ÒVpeR @  Ãá gê?d pÒs?T @  Ãâ hê?d€ °Ò®Ð• @  Ä iê?d ðÒz§Ü® @  Ä jê?d 0ÓªïPF @  Ä kê?d pÓ©µŠ @  Ä lê?d °Ó‰@t @  Ä mê?d ðÓy?ê  @  Ä nê?d 0Ô`q @  Ä oê?d pÔ•~’ @  Ä pê?d °Ôµe|l @  Ä qê?d ðÔE† @  Ä rê?d 0Õ•R ý @  Ä sê?d pÕ–H1 @  Ä tê?d °Õ¶ýJÏ @  Ä uê?d ðÕF‚°¶ @  Ä vê?d 0ÖÛÆw @  Ä wê?d pÖæÖ+ë @  Ä xê?d °ÖÆ#) @  Ä yê?d ðÖ6\Ól @  Ä zê?d 0׿_„ @  Ä {ê?d p×åNH @  Ä |ê?d °×Å»¶ @  Ä }ê?d ð×5ÄåÏ @  Ä ~ê?d 0Ø;iÒ @  Ä ê?d pØ„ûv @  Ä €ê?d °Ø¤tã @  Ä ê?d ðØTqŽš @  Ä ‚ê?d 0Ù„9r @  Ä ƒê?d pÙ‡c@¾ @  Ä „ê?d °Ù§–B@ @  Ä …ê?d ðÙWé¸9 @  Ä †ê?d 0ÚÊ­ø @  Ä ‡ê?d pÚæ»Ô @  Ä ˆê?d °ÚÆN* @  Ä! ‰ê?d ðÚ61üS @  Ä" Šê?d 0Ûæyp» @  Ä# ‹ê?d pÛå#2w @  Ä$ Œê?d °ÛÅÖ0‰ @  Ä% ê?d ðÛ5©Êð @  Ä& Žê?d 0Ü,ç9ÿ @  Ä' ê?d pÜÙ^o @  Ä( ê?d °Üùó\‘ @  Ä) ‘ê?d ðÜ Œ¦è @  Ä* ’ê?d 0ÝÙÄ* @  Ä+ “ê?d pÝÚžhÌ @  Ä, ”ê?d °Ýúkj2 @  Ä- •ê?d ðÝ K @  Ä. –ê?d 0Þ—P0Š @  Ä/ —ê?d pÞª@  @  Ä0 ˜ê?d °Þе è @  Ä1 ™ê?d ðÞzÊó‘ @  Ä2 šê?d 0ߪ‚y @  Ä3 ›ê?d pß©Ø=µ @  Ä4 œê?d uÐà/°ß‰-?K @  Ä5 ê?d ðßyRÅ2 @  Ä6 žê?d Hà`ö›Ä @  Ä7 Ÿê?d ˆàªÄШ @  Ä8  ê?d Èà(UÇv @  Ä9 ¡ê?d áŠó¦9 @  Ä: ¢ê?d Háb±ç @  Ä; £ê?d ˆá©\æ  @  Ä< ¤ê?d Èá+ÍñÕ @  Ä= ¥ê?d âÄg¼³ @  Ä> ¦ê?d HâFö«m @  Ä? §ê?d ˆâfƒ¤ó @  Ä@ ¨ê?d Èâä³- @  ÄA ©ê?d ãF´Òb @  ÄB ªê?d HãÄ%ż @  ÄC «ê?d ˆãe’P @  ÄD ¬ê?d Èã犅Ž @  ÄE ­ê?d äŒ*›& @  ÄF ®ê?d H仌ø @  ÄG ¯ê?d ˆäY>þH @  ÄH °ê?d ÈäÛ¯é– @  ÄI ±ê?d åy ˆÙ @  ÄJ ²ê?d Håû˜Ÿ @  ÄK ³ê?d ˆåZ¦Èë @  ÄL ´ê?d ÈåØ7ß5 @  ÄM µê?d æ7’S @  ÄN ¶ê?d Hæµ … @  ÄO ·ê?d ˆæ*x«1 @  ÄP ¸ê?d Èæ¨é¼ï @  ÄQ ¹ê?d ç OÝ  @  ÄR ºê?d HçˆÞÊ~ @  ÄS »ê?d ˆç)à’ @  ÄT ¼ê?d Èç«qŠL @  ÄU ½ê?d èí`ëö @  ÄV ¾ê?d Hèoñü( @  ÄW ¿ê?d ˆèU“¢U @  ÄX Àê?d Èè×µ‹ @  ÄY Áê?d éu¤ÔÄ @  ÄZ Âê?d Hé÷5à @  Ä[ Ãê?d ˆéV ”ö @  Ä\ Äê?d ÈéÔšƒ( @  Ä] Åê?d ê;0ÎN @  Ä^ Æê?d H깡٠@  Ä_ Çê?d ˆê7ÓМ @  Ä` Èê?d ÈêµBÇB @  Äa Éê?d ëä¦  @  Äb Êê?d Hë•u±Ó @  Äc Ëê?d ˆë4Kæ? @  Äd Ìê?d Èë¶Úñá @  Äe Íê?d ìÝzïI @  Äf Îê?d Hì_ëø— @  Äg Ïê?d ˆìnŠ' @  Äh Ðê?d ÈìŠÿù @  Äi Ñê?d í(Yü¶ @  Äj Òê?d HíªÈëh @  Äk Óê?d ˆí ö¼„ @  Äl Ôê?d Èí‰g«Z @  Äm Õê?d îfÍæ< @  Än Öê?d Hîä\ñâ @  Äo ×ê?d ˆî{(ß^ @  Äp Øê?d Èîù¹È€ @  Äq Ùê?d ï[©Ï @  Är Úê?d HïÙŽ¾ @  Äs Ûê?d ˆïx°éý @  Ät Üê?d Èïú!þ# @  Äu Ýê?d ð6¯6 @  Äv Þê?d H𴀸è @  Äw ßê?d ˆð~²ó„ @  Äx àê?d Èðü#äZ @  Äy áê?d ñ^…… @  Äz âê?d HñÜ’Ë @  Ä{ ãê?d ˆñ}*Å' @  Ä| äê?d Èñÿ»Òù @  Ä} åê?d òŸŸ @  Ä~ æê?d Hò’€ˆA @  Ä çê?d ˆòQ£·î @  Ä€ èê?d ÈòÓ2 0 @  Ä éê?d óq”Á @  Ä‚ êê?d HóóÖ¡ @  Äƒ ëê?d ˆóR;M @  Ä„ ìê?d ÈóЪ–“ @  Ä… íê?d ô» ˆ; @  Ä† îê?d Hô9›Ÿå @  Ä‡ ïê?d ˆôníU @  Äˆ ðê?d Èôìú‹ @  Ä‰ ñê?d õN)›Ä @  ÄŠ òê?d Hõ̸Œ @  Ä‹ óê?d ˆõm†Ûö @  ÄŒ ôê?d ÈõïÌ( @  Ä õê?d ö½N @  ÄŽ öê?d Hö‚,– @  Ä ÷ê?d ˆöX¸, @  Ä øê?d ÈöŸÉ¯ò @  Ä‘ ùê?d ÷=oν @  Ä’ úê?d H÷¿þÙc @  Ä“ ûê?d ˆ÷ÀŽ @  Ä” üê?d È÷œQ™Q @  Ä• ýê?d øÚ@øë @  Ä– þê?d HøXÑï5 @  Ä— ÿê?d ˆø°Ö @  Ä˜ ë?d Èø‚ƒ§ @  Ä™ ë?d ù %ÆG @  Äš ë?d Hù¢´Ñ™ @  Ä› ë?d ˆùІu @  Äœ ë?d Èù‘« @  Ä ë?d ún±ÜÍ @  Äž ë?d Húì Ë @  ÄŸ ë?d ˆúbR @  Ä  ë?d ÈúàÃÕÁ @  Ä¡  ë?d ûBe´Ž @  Ä¢  ë?d HûÀô£P @  Ä£  ë?d ˆûaÊô¼ @  Ä¤  ë?d Èûã[ãb @  Ä¥  ë?d üˆûýÊ @  Ä¦ ë?d Hü jê @  Ä§ ë?d ˆü] @  Ä¨ ë?d Èüß~z @  Ä© ë?d ý}Øî5 @  Äª ë?d HýÿIùë @  Ä« ë?d ˆý^w® @  Ä¬ ë?d ÈýÜæ¹Ù @  Ä­ ë?d þ3Lô¿ @  Ä® ë?d Hþ±Ýãa @  Ä¯ ë?d ˆþ.©ÍÝ @  Ä° ë?d Èþ¬8Ú @  Ä± ë?d ÿž»L @  Ä² ë?d HÿŒ¬’ @  Ä³ ë?d ˆÿ-1û~ @  Ä´ uÐë?d Èÿ¯ ì  @  Äµ ë?d Ù¿I @  Ä¶ ë?d `[.^Î @  Ä· ë?d  ‘¢ @  Ä¸  ë?d à| @  Ä¹ !ë?d ±+c3 @  Äº "ë?d `3ºtí @  Ä» #ë?d  ’„# @  Ä¼ $ë?d à4ß @  Ä½ %ë?d ÿ¿y¹ @  Ä¾ &ë?d `}.ng @  Ä¿ 'ë?d  ][aù @  ÄÀ (ë?d àßÊv' @  ÄÁ )ë?d }lh @  Ä *ë?d `ÿý¶ @  Äà +ë?d  ^ÃWZ @  ÄÄ ,ë?d àÜR@„ @  ÄÅ -ë?d ·ò^, @  ÄÆ .ë?d `5cIò @  ÄÇ /ë?d  bæ;B @  ÄÈ 0ë?d ààw,œ @  ÄÉ 1ë?d BÑMÓ @  ÄÊ 2ë?d `À@Z  @  ÄË 3ë?d  a~ á @  ÄÌ 4ë?d àãï? @  ÄÍ 5ë?d  EWY @  ÄÎ 6ë?d `ŽÔ@‡ @  ÄÏ 7ë?d   n; @  ÄÐ 8ë?d à“1yå @  ÄÑ 9ë?d 1—ª @  ÄÒ :ë?d `³t @  ÄÓ ;ë?d  8X˜ @  ÄÔ <ë?d à©OF @  ÄÕ =ë?d Ö¸.ü @  ÄÖ >ë?d `T)9" @  Ä× ?ë?d  nKg_ @  ÄØ @ë?d àìÚp @  ÄÙ Aë?d N|Î @  ÄÚ Bë?d ` Ìí @  ÄÛ Cë?d   mÓQü @  ÄÜ Dë?d à ïBF" @  ÄÝ Eë?d è D @  ÄÞ Fë?d ` ‚yš @  Äß Gë?d    – @  Äà Hë?d à ŽšH @  Äá Ië?d ,w @  Å3 }ë?d ü¤  @  Å4 ~ë?d `~“³þ @  Å5 ë?d  —…æk @  Å6 €ë?d àñµ @  Å7 ë?d yÏ€ @  Å8 ‚ë?d `û‘Ø^ @  Å9 ƒë?d  Ÿæt_ @  Å: „ë?d àwc @  Å; …ë?d 7”Õ  @  Å< †ë?d `µÂÔ @  Å= ‡ë?d  Ibò @  Å> ˆë?d àËóš, @  Å? ‰ë?d µG»Û @  Å@ Šë?d `7Ö¬ @  ÅA ‹ë?d  S¡ @  ÅB Œë?d àÑ0Ú @  ÅC ë?d ÙòŸ @  ÅD Žë?d `ýHåA @  ÅE ë?d  dÈ‹ @  ÅF ë?d àæîßU @  ÅG ‘ë?d Šúá` @  ÅH ’ë?d `kö¾ @  ÅI “ë?d  lZ¿ @  ÅJ ”ë?d àîMa @  ÅK •ë?d Änûê @  ÅL –ë?d `Fÿì4 @  ÅM —ë?d  º˜£ @  ÅN ˜ë?d à8 ´Ì @  ÅO ™ë?d ù¼´ @  ÅP šë?d `{-£Ç @  ÅQ ›ë?d  ZÆuÐ  @  ÅR œë?d àË @  ÅS ë?d 8 [gÐ4 @  ÅT žë?d x ÙöÇê @  ÅU Ÿë?d ¸ ÝvÓü @  ÅV  ë?d ø _çÄ" @  ÅW ¡ë?d 8!3óú @  ÅX ¢ë?d x!±bíÉ @  ÅY £ë?d ¸!ÕAÈ @  ÅZ ¤ë?d ø!W„V @  Å[ ¥ë?d 8"}gà @  Å\ ¦ë?d x"ÿö÷C @  Å] §ë?d ¸"‘¸e @  Å^ ¨ë?d ø"¯» @  Å_ ©ë?d 8#Q³ˆÞ @  Å` ªë?d x#Ó"Ÿ @  Åa «ë?d ¸#·U3 @  Åb ¬ë?d ø#5Ä$ß @  Åc ­ë?d 8$›-Áš @  Åd ®ë?d x$¼ÖD @  Åe ¯ë?d ¸$€‹ûŽ @  Åf °ë?d ø$ìP @  Åg ±ë?d 8%nÒe @  Åh ²ë?d x%ìŸÅ» @  Åi ³ë?d ¸%ˆèiº @  Åj ´ë?d ø% y~d @  Åk µë?d 8& šÈï @  Ål ¶ë?d x&¢ ß1 @  Åm ·ë?d ¸&^l @  Ån ¸ë?d ø&Üý‡É @  Åo ¹ë?d 8'H‡ @  Åp ºë?d x'ŸÙ @  Åq »ë?d ¸'û®<à @  År ¼ë?d ø'y?+ @  Ås ½ë?d 8(úg±J @  Åt ¾ë?d x(xö¦” @  Åu ¿ë?d ¸(Œ&§“ @  Åv Àë?d ø(·°M @  Åw Áë?d 8)b£Žx @  Åx Âë?d x)à2™¦ @  Åy Ãë?d ¸)„E5§ @  Åz Äë?d ø)Ô"y @  Å{ Åë?d 8*,7”ò @  Å| Æë?d x*®¦ƒ, @  Å} Çë?d ¸*RÁÌ  @  Å~ Èë?d ø*ÐPÛÔ @  Å Éë?d 8+M²Ê @  Å€ Êë?d x+Ï#ÝÌ @  Å Ëë?d ¸+«TqÍ @  Å‚ Ìë?d ø+)Åf @  Åƒ Íë?d 8,‡,ƒV @  Å„ Îë?d x,½”ˆ @  Å… Ïë?d ¸,œŠ¹B @  Å† Ðë?d ø,®œ @  Å‡ Ñë?d 8-r© @  Åˆ Òë?d x-ðž‡w @  Å‰ Óë?d ¸-”é+v @  ÅŠ Ôë?d ø-x<¨ @  Å‹ Õë?d 8.<›Š# @  ÅŒ Öë?d x.¾ ý @  Å ×ë?d ¸.BmÒÛ @  ÅŽ Øë?d ø.ÀüÅ @  Å Ùë?d 8/IÅÐ @  Å Úë?d x/ƒØÒ @  Å‘ Ûë?d ¸/ç¯~ @  Å’ Üë?d ø/e>iÑ @  Å“ Ýë?d 80lGÃ) @  Å” Þë?d x0îÖÔ÷ @  Å• ßë?d ¸0êVÀá @  Å– àë?d ø0hÇ×? @  Å— áë?d 81Óé  @  Å˜ âë?d x1†BþÔ @  Å™ ãë?d ¸1â5RÕ @  Åš äë?d ø1`¤E  @  Å› åë?d 82JGó€ @  Åœ æë?d x2ÈÖä^ @  Å çë?d ¸24±«x @  Åž èë?d ø2¶ ¼¦ @  ÅŸ éë?d 83f“›Ã @  Å  êë?d x3äŒ @  Å¡ ëë?d ¸3€u  @  Å¢ ìë?d ø3ä7 @  Å£ íë?d 84¬ Ò‡ @  Å¤ îë?d x4.œÅY @  Å¥ ïë?d ¸4·«è“ @  Å¦ ðë?d ø45:ÿM @  Å§ ñë?d 85Y.Áx @  Å¨ òë?d x5Û¿Ö¦ @  Å© óë?d ¸5¿Èz§ @  Åª ôë?d ø5=Ymy @  Å« õë?d 86ºÛò @  Å¬ öë?d x6•+Ì, @  Å­ ÷ë?d ¸6iLƒ  @  Å® øë?d ø6ëÝ”Ô @  Å¯ ùë?d 87*h” @  Å° úë?d x7¨ùƒß @  Å± ûë?d ¸7ÌŽ/Þ @  Å² üë?d ø7N8 @  Å³ ýë?d 88ÍG¢W @  Å´ þë?d x8OÖµ‰ @  Åµ ÿë?d ¸8宊† @  Å¶ ì?d ø8g?X @  Å· ì?d 89 +£m @  Å¸ ì?d x9‰º´³ @  Å¹ ì?d ¸9íͲ @  Åº ì?d ø9o\l @  Å» ì?d 8:E¿¹ç @  Å¼ ì?d x:Ç.®9 @  Å½ ì?d ¸:;Iá @  Å¾ ì?d ø:¹ØöÁ @  Å¿  ì?d 8;Çl×6 @  ÅÀ  ì?d x;EýÀè @  ÅÁ  ì?d ¸;!Šlé @  Å  ì?d ø;£{7 @  Åà  ì?d 8< òžr @  ÅÄ ì?d x<c‰¬ @  ÅÅ ì?d ¸<T¤f @  ÅÆ ì?d ø<”ų¸ @  ÅÇ ì?d 8=øÑ @  ÅÈ ì?d x=z@šS @  ÅÉ ì?d ¸=76R @  ÅÊ ì?d ø=œ¦!Œ @  ÅË ì?d 8>¶E— @  ÅÌ ì?d x>4Ô€Ù @  ÅÍ ì?d ¸>ȳÏÿ @  ÅÎ ì?d ø>J"Ø! @  ÅÏ ì?d 8?‹—Øô @  ÅÐ ì?d x? Ï* @  ÅÑ ì?duÐ@7 ¸?mqc+ @  ÅÒ ì?d ø?ïàtõ @  ÅÓ ì?d P@›ë؃ @  ÅÔ ì?d @»Ú} @  ÅÕ ì?d Ð@úÛK @  ÅÖ  ì?d AͲW£ @  Å× !ì?d PAóò  @  ÅØ "ì?d AÓŠð^ @  ÅÙ #ì?d ÐA™I @  ÅÚ $ì?d BˆÝé¾ @  ÅÛ %ì?d PB½ëè* @  ÅÜ &ì?d BêÔ @  ÅÝ 'ì?d ÐBÃ°Ò @  ÅÞ (ì?d CU<: @  Åß )ì?d PC‘?€i @  Åà *ì?d C±Ê‚— @  Åá +ì?d ÐCwÙ;¶ @  Åâ ,ì?d€ D¯Ð?¹ @  Æ -ì?d PD{§v @  Æ .ì?d D[Rtú @  Æ /ì?d ÐD¥H·ý @  Æ 0ì?d Eu; @  Æ 1ì?d PE…Ál @  Æ 2ì?d E¥ŠÃ’ @  Æ 3ì?d ÐE­+%É @  Æ 4ì?d F0o… @  Æ 5ì?d PFÀq @  Æ 6ì?d Fàå} @  Æ 7ì?d ÐF{¯Üd @  Æ 8ì?d G«çPŒ @  Æ 9ì?d PG[˜ªõ @  Æ :ì?d G{m¨  @  Æ ;ì?d ÐGÞmp° @  Æ <ì?d Hê’ü­ @  Æ =ì?d PHíÔ @  Æ >ì?d H:* @  Æ ?ì?d ÐH©åëà @  Æ @ì?d Iy­g @  Æ Aì?d PI‰Òq @  Æ Bì?d I©'Ÿ @  Æ Cì?d ÐI¡†yÔ @  Æ Dì?d J<ÂÙ @  Æ Eì?d PJ̽#l @  Æ Fì?d JìH!’ @  Æ Gì?d ÐJw€y @  Æ Hì?d K§J ‘ @  Æ Iì?d PKW5öè @  Æ Jì?d KwÀô @  Æ Kì?d ÐKÃÆ  @  Æ Lì?d LÚˆø @  Æ! Mì?d PL*÷k @  Æ" Nì?d L • @  Æ# Oì?d ÐLôÃ’ @  Æ$ Pì?d M$POz @  Æ% Qì?d PMÔ/µ @  Æ& Rì?d MôÚ·ý @  Æ' Sì?d ÐMü{Q¦ @  Æ( Tì?d Na?ñg @  Æ) Uì?d PN‘@  @  Æ* Vì?d N±µ à @  Æ+ Wì?d ÐN*ÿ¨  @  Æ, Xì?d Oú·$ã @  Æ- Yì?d PO ÈÞš @  Æ. Zì?d O*=Üd @  Æ/ [ì?d ÐO=ß @  Æ0 \ì?d P1ã¸m @  Æ1 ]ì?d PPÁœB @  Æ2 ^ì?d Pái@ê @  Æ3 _ì?d ÐP‚ĺ1 @  Æ4 `ì?d QRŒ6Ù @  Æ5 aì?d PQ¢óÌ  @  Æ6 bì?d Q‚Î^ @  Æ7 cì?d ÐQЧ( @  Æ8 dì?d RãˆÄ @  Æ9 eì?d PRçœr½ @  Æ: fì?d RÇipC @  Æ; gì?d ÐR\#Ѩ @  Æ< hì?d SŒk]@ @  Æ= iì?d PS|§9 @  Æ> jì?d S\á¥Ç @  Æ? kì?d ÐSFà\^ @  Æ@ lì?d T_®¯Q @  ÆA mì?d PT¯ÑU( @  ÆB nì?d T$WÖ @  ÆC oì?d ÐTq>”Ñ @  ÆD pì?d U¡v9 @  ÆE qì?d PUQ â@ @  ÆF rì?d Uqüྠ@  ÆG sì?d ÐUy]å @  ÆH tì?d Vä¦$ @  ÆI uì?d PVf\] @  ÆJ vì?d V4“^£ @  ÆK wì?d ÐV¯ÙÿH @  ÆL xì?d W‘s  @  ÆM yì?d PWî‰Ù @  ÆN zì?d W¯‹' @  ÆO {ì?d ÐW Sœ @  ÆP |ì?d X>äß @  ÆQ }ì?d PXΛ%ø @  ÆR ~ì?d Xîn' @  ÆS ì?d ÐX`Uœ^ @  ÆT €ì?d Y°¶ @  ÆU ì?d PY@bêÏ @  ÆV ‚ì?d Y`—è1 @  ÆW ƒì?d ÐYh6j @  ÆX „ì?d Zõr®« @  ÆY …ì?d PZ TÒ @  ÆZ †ì?d Z%øV, @  Æ[ ‡ì?d ÐZ¾²÷Ç @  Æ\ ˆì?d [nú{/ @  Æ] ‰ì?d P[ž…V @  Æ^ Šì?d [¾pƒ¨ @  Æ_ ‹ì?d Ð[ v|£ @  Æ` Œì?d \8¬ @  Æa ì?d P\ãGuÕ @  Æb Žì?d \òw+ @  Æc ì?d Ð\=¨´, @  Æd ì?d ]íà8Ä @  Æe ‘ì?d P]ŸÂ½ @  Æf ’ì?d ]=jÀC @  Æg “ì?d Ð]5Ë& @  Æh ”ì?d ^¨†Ù @  Æi •ì?d P^Xð|  @  Æj –ì?d ^x~^ @  Æk —ì?d Ð^ãOßµ @  Æl ˜ì?d _3S] @  Æm ™ì?d P_Ãx©$ @  Æn šì?d _ã«Ú @  ÆuÐ`o ›ì?d Ð_Fsa @  Æp œì?d (`øuÆù @  Æq ì?d h` <€ @  Ær žì?d ¨`(ÿ>~ @  Æs Ÿì?d è`KRÄ¥ @  Æt  ì?d (a›HM @  Æu ¡ì?d hake²4 @  Æv ¢ì?d ¨aK°Ê @  Æw £ì?d èaC1V‘ @  Æx ¤ì?d (bÞuöP @  Æy ¥ì?d hb. ) @  Æz ¦ì?d ¨bÿ× @  Æ{ §ì?d èb•µ¯< @  Æ| ¨ì?d (cEý#Ô @  Æ} ©ì?d hcµ‚Ù­ @  Æ~ ªì?d ¨c•wÛS @  Æ «ì?d ècl û @  Æ€ ¬ì?d (dunáô @  Æ ­ì?d hd… @  Æ‚ ®ì?d ¨d¥äs @  Æƒ ¯ì?d èd[þÚt @  Æ„ °ì?d (e‹¶Vœ @  Æ… ±ì?d he{ɬå @  Æ† ²ì?d ¨e[<® @  Æ‡ ³ì?d èeSH@ @  Æˆ ´ì?d (fÎÙè @  Æ‰ µì?d hf>¦ø @  ÆŠ ¶ì?d ¨fS @  Æ‹ ·ì?d èf…±í @  ÆŒ ¸ì?d (gUQ= @  Æ ¹ì?d hg¥.Ç| @  ÆŽ ºì?d ¨g…ÛÅ‚ @  Æ »ì?d èg Û9 @  Æ ¼ì?d (h$‘$ @  Æ‘ ½ì?d hhä[k] @  Æ’ ¾ì?d ¨hÄ®i£ @  Æ“ ¿ì?d èhWS†i @  Æ” Àì?d (i‡  @  Æ• Áì?d hiwdðø @  Æ– Âì?d ¨iW‘ò @  Æ— Ãì?d èi_0] @  Æ˜ Äì?d (jÂt´œ @  Æ™ Åì?d hj2 Nå @  Æš Æì?d ¨jþL @  Æ› Çì?d èj‰´íð @  Æœ Èì?d (kYüa @  Æ Éì?d hk©ƒ›a @  Æž Êì?d ¨k‰v™Ÿ @  ÆŸ Ëì?d èk=pf” @  Æ  Ìì?d (l$>•› @  Æ¡ Íì?d hlÔAoâ @  Æ¢ Îì?d ¨lô´m @  Æ£ Ïì?d èl ®® @  Æ¤ Ðì?d (mÚæ"ó @  Æ¥ Ñì?d hm*™ØŠ @  Æ¦ Òì?d ¨m lÚt @  Æ§ Óì?d èmÍ @  ÆÐ üì?d (xÀR² @  ÆÑ ýì?d hx0-Hq @  ÆÒ þì?d ¨xØJ @  ÆÓ ÿì?d èxᄤÛ @  ÆÔ í?d (y1Ì(3 @  ÆÕ í?d hyÁ³ÒJ @  ÆÖ í?d ¨yáFд @  Æ× í?d èyéç6ï @  ÆØ í?d (zt£–. @  ÆÙ í?d hz„ÜlW @  ÆÚ í?d ¨z¤)n© @  ÆÛ í?d èz?cÏB @  ÆÜ í?d ({ï+Cª @  ÆÝ  í?d h{T¹Ó @  ÆÞ  í?d ¨{?¡»- @  Æß  í?d è{‹§D& @  Æà  í?d (|’é·) @  Æá  í?d h|b–MP @  Æâ í?d€ ¨|6 S @  Ç í?d è|)ûØ& @  Ç í?d (}ù³TÎ @  Ç í?d h}Ì…UZ @  Ç í?d ¨}ìpW¤ @  Ç í?d è}*cî… @  Ç í?d (~·'ND @  Ç í?d h~‰êëG @  Ç í?d ¨~©é¹ @  Ç í?d è~÷³¿ @  Ç í?d ('T?W @  Ç í?d hb>à @  Ç í?d ¨uЀ'2—<= @  Ç í?d èô„… @  Ç í?d @€š:gh @  Ç í?d €€«2é« @  Ç í?d À€)£þu @  Ç í?d Ýždu @  Ç  í?d @_s« @  Ç !í?d €È]g @  Ç "í?d ÀJÌpÁ @  Ç #í?d ‚“ ~ÿ @  Ç $í?d @‚›i! @  Ç %í?d €‚2Ù @  Ç &í?d À‚£ÎÜ @  Ç 'í?d ƒyì @  Ç (í?d @ƒè2 @  Ç )í?d €ƒº † @  Ç *í?d Àƒ”+X @  Ç +í?d „ÉçF¨ @  Ç ,í?d @„KvQv @  Ç -í?d €„kxø @  Ç .í?d À„ééïÛ @  Ç! /í?d …€cL @  Ç" 0í?d @…ò[Ù @  Ç# 1í?d €…• Om @  Ç$ 2í?d À…1X³ @  Ç% 3í?d †Î÷V @  Ç& 4í?d @†LfAS @  Ç' 5í?d €†ÐÏñp @  Ç( 6í?d À†R^æ® @  Ç) 7í?d ‡^„'ž @  Ç* 8í?d @‡Ü0@ @  Ç+ 9í?d €‡KG$ô @  Ç, :í?d À‡ÉÖ3* @  Ç- ;í?d ˆ¹«È @  Ç. <í?d @ˆ;: @  Ç/ =í?d €ˆ 2ˆÕ @  Ç0 >í?d Àˆˆ£Ÿ  @  Ç1 ?í?d ‰ŒÎ @  Ç2 @í?d @‰_Ä @  Ç3 Aí?d €‰™ p @  Ç4 Bí?d À‰œ® @  Ç5 Cí?d ŠÂZ  @  Ç6 Dí?d @Š@ËN @  Ç7 Eí?d €ŠÜb­m @  Ç8 Fí?d ÀŠ^óº³ @  Ç9 Gí?d ‹R){ƒ @  Ç: Hí?d @‹иl] @  Ç; Ií?d €‹Gêxé @  Ç< Jí?d À‹Å{o7 @  Ç= Kí?d Œ˜·2Ç @  Ç> Lí?d @Œ&% @  Ç? Mí?d €Œ”/Šø @  Ç@ Ní?d ÀŒ¾& @  ÇA Oí?d 4>ú @  ÇB Pí?d @ý¥)$ @  ÇC Qí?d €j÷= @  ÇD Rí?d Àèf*N @  ÇE Sí?d Ž1 $p @  ÇF Tí?d @޳13® @  ÇG Uí?d €Ž/˜ƒ @  ÇH Ví?d ÀŽ­ ”S @  ÇI Wí?d ¡ÓUc @  ÇJ Xí?d @#BB½ @  ÇK Yí?d €´V  @  ÇL Zí?d À6A× @  ÇM [í?d ÌÝSš @  ÇN \í?d @NLDD @  ÇO ]í?d €Dʇ @  ÇP ^í?d ÀýÕÝY @  ÇQ _í?d ‘ èGY @  ÇR `í?d @‘‹yP‡ @  ÇS aí?d €‘+D3 @  ÇT bí?d À‘žºSí @  ÇU cí?d ’G|]Ó @  ÇV dí?d @’ÅíJ  @  ÇW eí?d €’YDú. @  ÇX fí?d À’ÛÕíð @  ÇY gí?d “×,À @  ÇZ hí?d @“Už; @  Ç[ ií?d €“ÂÌ/ª @  Ç\ jí?d À“@]8t @  Ç] kí?d ”‘e„ @  Ç^ lí?d @”ŸrZ @  Ç_ mí?d €”¿Û) @  Ç` ní?d À”=ŸÌ÷ @  Ça oí?d •To+ @  Çb pí?d @•Ö„xõ @  Çc qí?d €•AÖlA @  Çd rí?d À•ÃG{Ÿ @  Çe sí?d –u¡ @  Çf tí?d @–˜b @  Çg uí?d €–¹Ò\ @  Çh ví?d À–†(Å‚ @  Çi wí?d —Šò² @  Çj xí?d @—cl @  Çk yí?d €—Ÿ1Ø @  Çl zí?d À—  @  Çm {í?d ˜mÝ2ä @  Çn |í?d @˜ïL%: @  Ço }í?d €˜çƒw, @  Çp~í?d À˜e`ò @  Çqí?d ™|¹»q @  Çr€í?d @™þ(¬¯ @  Çsí?d €™iz¸ @  Çt‚í?d À™ëë¯Å @  Çuƒí?d š2-¡û @  Çv„í?d @š°¼¶% @  Çw…í?d €š, @  Çx†í?d À𮄨 @  Çy‡í?d ›¢^Ðè @  Çzˆí?d @› ÏÇ6 @  Ç{‰í?d €›·Ó‚ @  Ç|Ší?d À›5 Ä\ @  Ç}‹í?d œhÀ™¬ @  Ç~Œí?d @œêQŽr @  Çí?d €œ‡¢ @  Ç€Ží?d ÀœŸ| @  Çí?d l¥  @  Ç‚í?d @~ @  Çƒ‘í?d €yÖ¦Ê @  Ç„’í?d ÀûG± @  Ç…“í?d ž"¿* @  Ç†”í?d @ž ¨ô @  Ç‡•í?d €ž<¹× @  Çˆ–í?d Àž¾(  @  Ç‰—í?d Ÿ²òÎ9 @  ÇŠ˜í?d @Ÿ0cÙç @  Ç‹™í?d €Ÿ§1ÍS @  ÇŒšíuР?d ÀŸ% Ú @  Ç›í?d  )ª @  ÇŽœí?d X ’¸½Ê @  Çí?d ˜ £°3  @  Çží?d Ø !!$× @  Ç‘Ÿí?d ¡Õ¾× @  Ç’ í?d X¡W©  @  Ç“¡í?d ˜¡Àß½½ @  Ç”¢í?d Ø¡BNªc @  Ç•£í?d ¢›ˆ¤] @  Ç–¤í?d X¢³ƒ @  Ç—¥í?d ˜¢…°  @  Ç˜¦í?d Ø¢!~ @  Ç™§í?d £ ûÕN @  Çš¨í?d X£‰j @  Ç›©í?d ˜£8Ö$ @  Çœªí?d Ø£œ©Áú @  Ç«í?d ¤Áeœ  @  Çž¬í?d X¤Cô‹Ô @  ÇŸ­í?d ˜¤cú"§ @  Ç ®í?d ؤák5y @  Ç¡¯í?d ¥ˆá–¥ @  Ç¢°í?d X¥ p{ @  Ç£±í?d ˜¥"•Ï @  Ç¤²í?d Ø¥³‚ @  Ç¥³í?d ¦ÆuŒ/ @  Ç¦´í?d X¦Dä›ñ @  Ç§µí?d ˜¦ØM+Ò @  Ç¨¶í?d ئZÜ<  @  Ç©·í?d §Vý< @  Çª¸í?d X§Ô—êâ @  Ç«¹í?d ˜§CÅþV @  Ç¬ºí?d اÁTéˆ @  Ç­»í?d ¨±)Ëj @  Ç®¼í?d X¨3¸Ü´ @  Ç¯½í?d ˜¨°Rw @  Ç°¾í?d ب€!E© @  Ç±¿í?d ©„Lʸ @  Ç²Àí?d X©ÝÝf @  Ç³Áí?d ˜©‘ÉÒ @  Ç´Âí?d Ø©Þ  @  ÇµÃí?d ªÊØÐ2 @  Ç¶Äí?d XªHIÇì @  Ç·Åí?d ˜ªÔàwÏ @  Ç¸Æí?d تVq` @  Ç¹Çí?d «Z«¡! @  ÇºÈí?d X«Ø:¶ÿ @  Ç»Éí?d ˜«Oh¢K @  Ç¼Êí?d Ø«Íùµ• @  Ç½Ëí?d ¬5èe @  Ç¾Ìí?d X¬¤ÿ» @  Ç¿Íí?d ˜¬œ­PZ @  ÇÀÎí?d ج›u @  ÇÍÛí?d °Ä_‰8 @  ÇÎÜí?d X°FΞæ @  ÇÏÝí?d ˜°wÆ% @  ÇÐÞí?d ذõWû @  ÇÑßí?d ±jû @  ÇÒàí?d X±ƒûŠ% @  ÇÓáí?d ˜±©ž‘ @  ÇÔâí?d ر–8‰O @  ÇÕãí?d ²Oþ‡q @  ÇÖäí?d X²Ío¯ @  Ç×åí?d ˜²QÆ Œ @  ÇØæí?d زÓW7R @  ÇÙçí?d ³ßöb @  ÇÚèí?d X³]á¼ @  ÇÛéí?d ˜³ÊNõ @  ÇÜêí?d سHßâÖ @  ÇÝëí?d ´¿& @  ÇÞìí?d X´—‚¨ø @  Çßíí?d ˜´·Œ‹ @  Çàîí?d Ø´5U @  Çáïí?d µ\—µ‰ @  Çâðí?d€ Xµöœ¶ @  Èñí?d ˜µ€ê˜ @  Èòí?d صýF @  Èóí?d ¶‘• @  Èôí?d X¶œK @  Èõí?d ˜¶Îð @  Èöí?d ضLŠçÌ @  È÷í?d ·Žây† @  Èøí?d X· snX @  È ùí?d ˜·^h @  È úí?d Ø·Üù–ß @  È ûí?d ¸iÍOÐ @  È üí?d X¸ë\X @  È ýí?d ˜¸¹G·W @  Èþí?d ظ;Ö ‰ @  Èÿí?d ¹Œ+z¹ @  Èî?d X¹ºmg @  Èî?d ˜¹\¡‚> @  Èî?d عÞ0•à @  Èî?d º¿`3 @  Èî?d Xº@.wí @  Èî?d ˜º5˜´ @  Èî?d غ¤j @  Èî?d »RÌ  @  Èî?d X»Ð]þ @  È î?d ˜»‚Fé§ @  È î?d Ø»×þy @  È î?d ¼˜RXd @  È î?d X¼ÃOº @  È î?d ˜¼HØ ã @  Èî?d ؼÊI·= @  Èî?d ½ÑÖRË @  È î?d X½SGE @  È!î?d ˜½\ªL @  È"î?d ؽƒÍ½’ @  È#î?d ¾ŸBHA @  È$î?d X¾Ó_Ÿ @  È%î?d ˜¾OȰÆ @  È&î?d ؾÍY§ @  È'î?d ¿19R @  È(î?d X¿ .Œ @  È)î?d ˜¿ß»ÁÕ @uÐÀ  È*î?d Ø¿]*Ö  @  È+î?d 0À¸ÒK @  È,î?d pÀ:€Å• @  È-î?d °Àh›*Ì @  È.î?d ðÀê = @  È/î?d 0Á}$ƈ @  È0 î?d pÁÿµÑV @  È1!î?d °Á­®> @  È2"î?d ðÁ/?)Ñ @  È3#î?d 0Â3°Ü @  È4$î?d p±!ËÜ @  È5%î?d °Âã:$… @  È6&î?d ðÂa«3[ @  È7'î?d 0ãí @  È8(î?d pÃ!RºÏ @  È9)î?d °ÃsIU– @  È:*î?d ðÃñØBH @  È;+î?d 0Äi]äU @  È<,î?d pÄëÌó‹ @  È=-î?d °Ä¹×Ò @  È>.î?d ðÄ;F  @  È?/î?d 0ÅŽÞèh @  È@0î?d pÅ Oÿ¶ @  ÈA1î?d °Å^Tï @  ÈB2î?d ðÅÜÅ1 @  ÈC3î?d 0ÆÀJòâ @  ÈD4î?d pÆBÛå< @  ÈE5î?d °ÆÀ e @  ÈF6î?d ðÆ’Q» @  ÈG7î?d 0ÇP9ƒñ @  ÈH8î?d pÇÒ¨”/ @  ÈI9î?d °Ç€³{v @  ÈJ:î?d ðÇ"l¨ @  ÈK;î?d 0È·µ§ @  ÈL<î?d pÈ5‡¢y @  ÈM=î?d °ÈgœM  @  ÈN>î?d ðÈå Zþ @  ÈO?î?d 0É‚s´u @  ÈP@î?d pÉ⣫ @  ÈQAî?d °ÉRùLò @  ÈRBî?d ðÉÐh[, @  ÈSCî?d 0ÊÌç®ÿ @  ÈTDî?d pÊNv¹! @  ÈUEî?d °ÊmVx @  ÈVFî?d ðÊžüA¦ @  ÈWGî?d 0Ë\”ßì @  ÈXHî?d pËÞÈ2 @  ÈYIî?d °ËŒ'k @  ÈZJî?d ðË0µ @  È[Kî?d 0Ì– –¨ @  È\Lî?d pÌ›v @  È]Mî?d °ÌF€n/ @  È^Nî?d ðÌÄyñ @  È_Oî?d 0Íߎœ @  È`Pî?d pÍ]‹Ù @  ÈaQî?d °Íd€ @  ÈbRî?d ðÍ•s^ @  ÈcSî?d 0Α† @  ÈdTî?d p΋‘S @  ÈeUî?d °ÎA~  @  ÈfVî?d ðÎÃiÔ @  ÈgWî?d 0Ïi÷ž @  ÈhXî?d pσøà@ @  ÈiYî?d °ÏÑã @  ÈjZî?d ðÏSrÇ @  Èk[î?d 0Ðlgñg @  Èl\î?d pÐîöæ¹ @  Èm]î?d °Ð¼í à @  Èn^î?d ðÐ>|> @  Èo_î?d 0Ñ©Rå¤ @  Èp`î?d pÑ+Ãòz @  Èqaî?d °ÑyØ# @  Èrbî?d ðÑûI ý @  Èscî?d 0ÒçÆÿ. @  Ètdî?d pÒeWèð @  Èueî?d °Ò7L© @  Èvfî?d ðÒµÝw @  Èwgî?d 0ÓwµŽ= @  Èxhî?d pÓõ$™ã @  Èyiî?d °Ó§?vº @  Èzjî?d ðÓ%®ad @  È{kî?d 0Ô½+Çy @  È|lî?d pÔ?ºÐ§ @  È}mî?d °Ôm¡?þ @  È~nî?d ðÔï0(  @  Èoî?d 0Õ¹þûu @  È€pî?d pÕ;oì« @  Èqî?d °Õitò @  È‚rî?d ðÕëå, @  Èƒsî?d 0Ö÷jáÿ @  È„tî?d pÖuûö! @  È…uî?d °Ö'àx @  È†vî?d ðÖ¥q¦ @  È‡wî?d 0×gì @  Èˆxî?d p×切2 @  È‰yî?d °×·“hk @  ÈŠzî?d ð×5µ @  È‹{î?d 0Ø€6¦º @  ÈŒ|î?d pا±d @  È}î?d °ØP¼^= @  ÈŽ~î?d ðØÒ-Iã @  Èî?d 0Ù¨•óú @  È€î?d pÙ*ä$ @  È‘î?d °Ùx } @  È’‚î?d ðÙúŽ£ @  È“ƒî?d 0Úæép @  È”„î?d pÚdþ® @  È•…î?d °Ú6‹÷ @  È–†î?d ðÚ´) @  È—‡î?d 0Ûvr˜c @  È˜ˆî?d pÛôã½ @  È™‰î?d °Û¦ø`ä @  ÈšŠî?d ðÛ$iw: @  È›‹î?d 0ܼìÑ' @  ÈœŒî?d pÜ>}Æù @  Èî?d °Ülf)  @  ÈžŽî?d ðÜî÷>~ @  ÈŸî?d 0ÝõhÛˆ @  È î?d pÝwùÌV @  È¡‘î?d °Ý%â# @  È¢’î?d ðݧs4Ñ @  È£“î?d 0Þ»üÁ @  È¤”î?d pÞ9mÖÜ @  È¥•î?d °Þkv9… @  È¦–î?d ðÞéç.[ @  È§—î?d 0ß+° @  È¨˜î?d pß©§Ï @  È©™î?d uÐà/°ßûH– @  Èªšî?d ðßy”_H @  È«›î?d HàáûT¬ @  È¬œî?d ˆàÁVR @  È­î?d Èà1q¬+ @  È®žî?d áá9 à @  È¯Ÿî?d Há$Î@o @  È° î?d ˆá;B‘ @  È±¡î?d ÈáôD¸è @  È²¢î?d âi) @  È³£î?d HâjZZå @  È´¤î?d ˆâJ¯X @  Èµ¥î?d ÈâºÐ¢b @  È¶¦î?d ãj˜.Š @  È·§î?d Hãú)+ö @  È¸¨î?d ˆãÚÜ) @  È¹©î?d Èã*£Óq @  Èºªî?d ä3í ~ @  È»«î?d Hä0·b² @  È¼¬î?d ˆäB`L @  È½­î?d Èäà=š5 @  È¾®î?d å0uÝ @  È¿¯î?d Hå×4n @  ÈÀ°î?d ˆå÷Álq @  ÈÁ±î?d Èå¾– @  È²î?d æšú6É @  Èóî?d Hæ™ t @  ÈÄ´î?d ˆæ¹Uvû @  Èŵî?d ÈæI*Œ‚ @  Èƶî?d ç™bj @  ÈÇ·î?d Hç Ó @  Èȸî?d ˆç)&è @  Èɹî?d ÈçÙYý‘ @  Èʺî?d èí¦qŒ @  ÈË»î?d Hèîü3@ @  È̼î?d ˆèÎ 1¾ @  Èͽî?d Èè>vËÇ @  Èξî?d éî>G/ @  ÈÏ¿î?d HéÛ™2’ @  ÈÐÀî?d ˆéûl0l @  ÈÑÁî?d Èé Ê @  ÈÒÂî?d ê–WjÔ @  ÈÓÃî?d Hê• ( @  ÈÔÄî?d ˆêµø*æ @  ÈÕÅî?d ÈêE‡ÐŸ @  ÈÖÆî?d ë•Ï\w @  È×Çî?d Hë~Y  @  ÈØÈî?d ˆë%‹[õ @  ÈÙÉî?d ÈëÕô¡Œ @  ÈÚÊî?d ì̺Rƒ @  ÈÛËî?d HìÏàO @  ÈÜÌî?d ˆìï± @  ÈÝÍî?d ÈìjèÈ @  ÈÞÎî?d íÏ"d  @  ÈßÏî?d Hí†dà @  ÈàÐî?d ˆí¦‘ @  ÈáÑî?d ÈíVîâg @  ÈâÒî?d€ î¿i^ @  ÉÓî?d Hî]rTå @  ÉÔî?d ˆî}‡V @  ÉÕî?d ÈîH±W @  ÉÖî?d ï˜ùÛg @  É×î?d HïÆúa @  ÉØî?d ˆï惟 @  ÉÙî?d ÈïØÂ&œ @  ÉÚî?d ðfš. @  É Ûî?d Hð # @  É Üî?d ˆð€ú!ñ @  É Ýî?d ÈðµÌ e @  É Þî?d ñe„¬ @  É ßî?d HñÃ`­» @  Éàî?d ˆñ㕯E @  Éáî?d Èñpù4¦ @  Éâî?d òí½”g @  Éãî?d Hò+®-F @  Éäî?d ˆò [/¸ @  Éåî?d Èò>m., @  Éæî?d óî%¢Ä @  Éçî?d Hó°&øÂ @  Éèî?d ˆóÓú< @  Ééî?d Èó®_? @  Éêî?d ô·P¬0 @  Éëî?d HôqC @  Éìî?d ˆôQ¶ï @  Éíî?d Èôd€{ @  Éîî?d õ´Èš“ @  Éïî?d Hõ›¢y @  Éðî?d ˆõ¯n ‡ @  Éñî?d Èõ-Ô @  É òî?d ö°@¼ @  É!óî?d HövS4 @  É"ôî?d ˆöV¦Ê @  É#õî?d Èöc^ @  É$öî?d ÷³ØŠ¶ @  É%÷î?d H÷íÛа @  É&øî?d ˆ÷Í.ÒN @  É'ùî?d È÷óãwM @  É(úî?d øÇûP @  É)ûî?d HøBq @  É*üî?d ˆø!ú@ @  É+ýî?d ÈøÌA @  É,þî?d ùÄ„Íó @  É-ÿî?d Hùð‘ØJ @  É.ï?d ˆùÐdÚ´ @  É/ï?d ÈùCAW @  É0ï?d úÞLá– @  É1ï?d Hú_X· @  É2ï?d ˆú8ªZI @  É3ï?d Èú œ[Ý @  É4ï?d ûÝÔ×5 @  É5ï?d Hûƒ×3 @  É6ï?d ˆû£"Í @  É7 ï?d Èûï*Î @  É8 ï?d ü„¡ÙÁ @  É9 ï?d HüB²`à @  É: ï?d ˆübGb @  É; ï?d ÈüWqcŠ @  É<ï?d ý‡9ïb @  É=ï?d Hý¼j׈ @  É>ï?d ˆýœŸÕv @  É?ï?d Èý°òo· @  É@ï?d þ-¶Ïv @  ÉAï?d Hþë¥vW @  ÉBï?d ˆþËPt© @  ÉCï?d Èþþfu= @  ÉDï?d ÿ..ùÕ @  ÉEï?d Hÿp-£Ó @  ÉFï?d ˆÿPØ¡- @  ÉGuÐï?d Èÿn. @  ÉHï?d !¡,ß @  ÉIï?d `粕þ @  ÉJï?d  ÇG— @  ÉKï?d àòq–” @  ÉLï?d "9| @  ÉMï?d `„ÝJ @  ÉN ï?d  ¤(´ @  ÉO!ï?d à7D‚W @  ÉP"ï?d ª"– @  ÉQ#ï?d `l›· @  ÉR$ï?d  Læ™I @  ÉS%ï?d àyИÝ @  ÉT&ï?d ©˜5 @  ÉU'ï?d `÷›N3 @  ÉV(ï?d  ×nLÍ @  ÉW)ï?d àé£éÎ @  ÉX*ï?d ðíÁ @  ÉY+ï?d `6þ£à @  ÉZ,ï?d   ¡ @  É[-ï?d à#= Š @  É\.ï?d óu,b @  É]/ï?d `È&ˆ @  É^0ï?d  èÓv @  É_1ï?d àj¹ª% @  É`2ï?d ÷ý ä @  Éa3ï?d `1î³Å @  Éb4ï?d  ±; @  Éc5ï?d à$-°¯ @  Éd6ï?d ôeï?d ƒ9{ @  Ém?ï?d ` Õo% @  Én@ï?d   õxmÛ @  ÉoAï?d à fö8 @  ÉpBï?d ûPVù @  ÉqCï?d ` =CïØ @  ÉrDï?d   ¶í& @  ÉsEï?d à (€ì² @  ÉtFï?d øÈ`Z @  ÉuGï?d ` ¦Ë:\ @  ÉvHï?d   †>8¢ @  ÉwIï?d à ¸ó¡ @  ÉxJï?d ¡½n® @  ÉyKï?d ` g®× @  ÉzLï?d   G[Õq @  É{Mï?d à rmÔå @  É|Nï?d ¢%X  @  É}Oï?d ` ™v`ç @  É~Pï?d   ¹ƒb @  ÉQï?d à v¸èé @  É€Rï?d ëüH( @  ÉSï?d `-ïñ  @  É‚Tï?d   ó÷ @  ÉƒUï?d à8,òc @  É„Vï?d èd~‹ @  É…Wï?d `¶g$ @  É†Xï?d  –’&s @  É‡Yï?d à¨_ƒp @  ÉˆZï?d ? @  É‰[ï?d `Ð’†ã @  ÉŠ\ï?d  ðg„ @  É‹]ï?d àÅQ…‰ @  ÉŒ^ï?d  a @  É_ï?d `³ýW @  ÉŽ`ï?d  “ © @  Éaï?d àd‘J @  Ébï?d  1‹ @  É‘cï?d `[3ˆª @  É’dï?d  {ÆŠT @  É“eï?d àNð‹À @  É”fï?d ž¸( @  É•gï?d `À»]. @  É–hï?d  àN_Ð @  É—iï?d àÞƒúÓ @  É˜jï?d ÇÍ Ü @  É™kï?d `Þ°ý @  Éšlï?d  !+² @  É›mï?d à³— @  Éœnï?d ÄU? @  Éoï?d `ÿ• @  Éžpï?d  ßók @  ÉŸqï?d à]™¹8 @  É rï?d ÀÝù @  É¡sï?d `ΠØ @  É¢tï?d  &;¢& @  É£uï?d à £² @  É¤vï?d ÃE/Z @  É¥wï?d `Fu\ @  É¦xï?d  ½³w¢ @  É§yï?d àƒ~Ò¡ @  É¨zï?d ·^¼ @  É©{ï?d `q’ç @  Éª|ï?d  Qgåc @  É«}ï?d àdQä÷ @  É¬~ï?d ´h @  É­ï?d `ÿk(ª @  É®€ï?d  ßž*T @  É¯ï?d àLò±· @  É°‚ï?d Ѷv @  É±ƒï?d `¥¨W @  É²„ï?d  7Pª© @  É³…ï?d àf«= @  É´†ï?d Ò.'Õ @  Éµ‡ï?d `Œ-}Ó @  É¶ˆï?d  ¬Ø- @  É·‰ï?d à’Ú. @  É¸Šï?d ‹[)! @  É¹‹ï?d `MH @  ÉºŒï?d  m½’þ @  É»ï?d àX‹“j @  É¼Žï?d ˆÃ‚ @  É½ï?d `³'h @  É¾ï?d  “e%– @  É¿‘ï?d ࿟W @  ÉÀ’ï?d "L?– @  ÉÁ“ï?d `ä_†· @  É”ï?d  Ī„I @  ÉÕï?d àñœ…Ý @  ÉÄ–ï?d !Ô 5 @  ÉÅ—ï?d `×S3 @  ÉƘï?d  _"QÍuÐ  @  ÉÇ™ï?d àaïôÎ @  ÉÈšï?d 8 ä*¨ @  ÉÉ›ï?d x Ö÷“‰ @  ÉÊœï?d ¸ ö‘w @  ÉËï?d ø Ã4ã @  ÉÌžï?d 8!|  @  ÉÍŸï?d x!µ˜= @  ÉΠï?d ¸!•mà @  ÉÏ¡ï?d ø!„  @  ÉТï?d 8"›E$á @  ÉÑ£ï?d x"]VÀ @  ÉÒ¤ï?d ¸"}£Ÿ> @  ÉÓ¥ï?d ø"H•žª @  ÉÔ¦ï?d 8#˜ÝB @  ÉÕ§ï?d x#ÆÞHD @  ÉÖ¨ï?d ¸#æ+Jº @  Éשï?d ø#Øæï¹ @  Éتï?d 8$Á¨¶ @  ÉÙ«ï?d x$»¥— @  ÉÚ¬ï?d ¸$'N§i @  ÉÛ­ï?d ø$x¦ý @  ÉÜ®ï?d 8%Â0* @  Éݯï?d x%ùcÿ @  ÉÞ°ï?d ¸%Ù– @  Éß±ï?d ø%[ü¬R @  Éà²ï?d 8&Ƹ “ @  Éá³ï?d x&«µ² @  Éâ´ï?d€ ¸&á@L @  Êµï?d ø&5n ñ @  Ê¶ï?d 8'å&… @  Ê·ï?d x'~l$ò @  Ê¸ï?d ¸'^™&  @  Ê¹ï?d ø'®æÜu @  Êºï?d 8(šPh @  Ê»ï?d x(’¸¶3 @  Ê¼ï?d ¸(²M´Í @  Ê ½ï?d ø(B2N´ @  Ê ¾ï?d 8)’zÂ\ @  Ê ¿ï?d x)‡-– @  Ê Àï?d ¸)!r/h @  Ê Áï?d ø)Ñ Õ @  ÊÂï?d 8*LIuÐ @  ÊÃï?d x*éI­k @  ÊÄï?d ¸*ɼ¯• @  ÊÅï?d ø*9ÃUì @  ÊÆï?d 8+é‹Ù @  ÊÇï?d x+rÁxï @  ÊÈï?d ¸+R4z @  ÊÉï?d ø+¢K€h @  ÊÊï?d 8,»sg @  ÊËï?d x,³¤•< @  ÊÌï?d ¸,“Q— @  ÊÍï?d ø,c.m» @  ÊÎï?d 8-³fáS @  ÊÏï?d x-M|"T @  ÊÐï?d ¸-m‰ ª @  ÊÑï?d ø-öÚÓ @  ÊÒï?d 8.²z @  ÊÓï?d x.´´… @  Ê Ôï?d ¸.”A‡ç @  Ê!Õï?d ø.d>}ž @  Ê"Öï?d 8/´vñv @  Ê#×ï?d x// @  Ê4èï?d ¸3y+À @  Ê5éï?d ø3‰jѹ @  Ê6êï?d 84$"¶ @  Ê7ëï?d x4˜…Äí @  Ê8ìï?d ¸4¸pÆ @  Ê9íï?d ø4Hòï?d 86+“+à @  Ê?óï?d x61’ÒZ @  Ê@ôï?d ¸6gФ @  ÊAõï?d ø6á*Ý @  ÊBöï?d 871P¦5 @  ÊC÷ï?d x7ªÞ @  ÊDøï?d ¸7Šï  @  ÊEùï?d ø7zÿY @  ÊFúï?d 88NosD @  ÊGûï?d x8FΕ @  ÊHüï?d ¸8f;—á @  ÊIýï?d ø8–Dm˜ @  ÊJþï?d 89F áp @  ÊKÿï?d x9NÕ)” @  ÊLð?d ¸9n +j @  ÊMð?d ø9ž_Ñ @  ÊNð?d 8:qÒ @  ÊOð?d x:¦©i @  ÊPð?d ¸:†î«— @  ÊQð?d ø:v‘Qî @  ÊRð?d 8;¦ÙÝ @  ÊSð?d x;=“|í @  ÊTð?d ¸;f~ @  ÊU ð?d ø;í„j @  ÊV ð?d 8<ôWwe @  ÊW ð?d x<üö‘> @  ÊX ð?d ¸<Ü“À @  ÊY ð?d ø<,|i¹ @  ÊZð?d 8=ü4åQ @  Ê[ð?d x=.&V @  Ê\ð?d ¸="Û$¨ @  Ê]ð?d ø=Ò¤ÞÑ @  Ê^ð?d 8>Oà~ @  Ê_ð?d x>ûæ @  Ê`ð?d ¸>Ûƒå @  Êað?d ø>+lyœ @  Êbð?d 8?û$õt @  Êcð?d x?`nTŸ @  Êdð?duÐ@7 ¸?@›Va @  Êeð?d ø?°ä¬ @  Êfð?d P@sH$ @  Êgð?d @Ùå_ @  Êhð?d Ð@[ò @  Êið?d Aùº“Î @  Êjð?d PA{+„ @  Êkð?d Aºâkë @  Êl ð?d ÐA8s|5 @  Êm!ð?d B×Ù1S @  Ên"ð?d PBUH& @  Êo#ð?d BR,ë @  Êp$ð?d ÐBнüÈ @  Êq%ð?d Cr‡ @  Êr&ð?d PCðŠŠY @  Ês'ð?d Cɤ>’ @  Êt(ð?d ÐCK5)L @  Êu)ð?d D •7ä @  Êv*ð?d PD¢ : @  Êw+ð?d DÁÓA @  Êx,ð?d ÐDŠPÄŸ @  Êy-ð?d E(ö¥Ð @  Êz.ð?d PEªg² @  Ê{/ð?d Eöd) @  Ê|0ð?d ÐEtˆs÷ @  Ê}1ð?d F›">‘ @  Ê~2ð?d PF³)O @  Ê3ð?d FB€õÇ @  Ê€4ð?d ÐFÀâ @  Ê5ð?d Gb·ƒV @  Ê‚6ð?d PGà&”ˆ @  Êƒ7ð?d GÙ C @  Ê„8ð?d ÐG[™7 @  Ê…9ð?d HˆV' @  Ê†:ð?d PHŸAù @  Ê‡;ð?d H5ܲ‚ @  Êˆ<ð?d ÐH·M¥\ @  Ê‰=ð?d IëÄ @  ÊŠ>ð?d PI—zÓÍ @  Ê‹?ð?d I¦ã)' @  ÊŒ@ð?d ÐI$r>ù @  ÊAð?d JËØsŸ @  ÊŽBð?d PJIIdA @  ÊCð?d JN-©Ú @  ÊDð?d ÐJ̼¾ @  Ê‘Eð?d KnßK @  Ê’Fð?d PKì‹È• @  Ê“Gð?d KÕ¥|^ @  Ê”Hð?d ÐKW4k€ @  Ê•Ið?d L<”u( @  Ê–Jð?d PL¾bö @  Ê—Kð?d LÀ‘ @  Ê˜Lð?d ÐL–Q†S @  Ê™Mð?d M4÷ç @  ÊšNð?d PM¶fð @  Ê›Oð?d Mê&å @  ÊœPð?d ÐMh‰1; @  ÊQð?d N‡#|] @  ÊžRð?d PN²kƒ @  ÊŸSð?d NШ @  Ê Tð?d ÐN‘A–v @  Ê¡Uð?d O3ç÷9 @  Ê¢Vð?d PO±vàç @  Ê£Wð?d OˆXT, @  Ê¤Xð?d ÐO ÉCò @  Ê¥Yð?d PÆùç @  Ê¦Zð?d PPDh9 @  Ê§[ð?d Pî­öB @  Ê¨\ð?d ÐPl<ᜠ@  Ê©]ð?d QΚ€Ó @  Êª^ð?d PQL —  @  Ê«_ð?d QÂxö @  Ê¬`ð?d ÐQSo( @  Ê­að?d Ràù"N @  Ê®bð?d PRbh5 @  Ê¯cð?d Re ø  @  Ê°dð?d ÐRçïÕ @  Ê±eð?d SE;Žš @  Ê²fð?d PSǪ™D @  Ê³gð?d Sþ„- @  Ê´hð?d ÐS|:Q @  Êµið?d Tµ$ù @  Ê¶jð?d PT•$3' @  Ê·kð?d T?áÀ\ @  Ê¸lð?d ÐT½pׂ @  Ê¹mð?d UÖ¶Í @  Êºnð?d PUG¡ @  Ê»oð?d UÁ9w4 @  Ê¼pð?d ÐUC¨`ê @  Ê½qð?d V¬-Œ @  Ê¾rð?d PV.“:R @  Ê¿sð?d V–öÖë @  ÊÀtð?d ÐVgÁ5 @  ÊÁuð?d W¶Á z @  ÊÂvð?d PW4P·¤ @  ÊÃwð?d W ~o @  ÊÄxð?d ÐWï± @  ÊÅyð?d XÉþu  @  ÊÆzð?d PXKobÕ @  ÊÇ{ð?d X᪑® @  ÊÈ|ð?d ÐXc;†p @  ÊÉ}ð?d YÁç? @  ÊÊ~ð?d PYC ðá @  ÊËð?d YoS^™ @  ÊÌ€ð?d ÐYíÂIG @  ÊÍð?d Zh! @  Ê΂ð?d PZ€ùÿ @  Êσð?d Z‡Þd @  ÊЄð?d ÐZ ɺ @  ÊÑ…ð?d [§ª¨õ @  ÊÒ†ð?d P[%;¿+ @  ÊÓ‡ð?d [ à @  ÊÔˆð?d Ð[ž„> @  ÊÕ‰ð?d \õ$– @  ÊÖŠð?d P\wµH @  Ê׋ð?d \Ýpæ3 @  ÊØŒð?d Ð\_áñí @  ÊÙð?d ]ýG¢ @  ÊÚŽð?d P]Ö‡| @  ÊÛð?d ]#¨Q[ @  ÊÜð?d Ð]¡9F… @  ÊÝ‘ð?d ^N“ ã @  ÊÞ’ð?d P^Ì= @  Êß“ð?d ^Ú`ö @  Êà”ð?d Ð^XñáÈ @  Êá•ð?d _úW€‡ @  Êâ–ð?d€ P_ ‹ÿ @  Ë—ð?d _Ôjw @  ËuÐ`˜ð?d Ð_Vû`à @  Ë™ð?d (`_¤Ã @  Ëšð?d h`Ý5ÔÏ @  Ë›ð?d ¨`¹BxÎ @  Ëœð?d è`;Óo @  Ëð?d (aWÇQ% @  Ëžð?d haÕVFû @  Ë Ÿð?d ¨aÑÖRí @  Ë  ð?d èaSGE3 @  Ë ¡ð?d (by¤ó¸ @  Ë ¢ð?d hbû5äf @  Ë £ð?d ¨bŸBHg @  Ë¤ð?d èbÓ_¹ @  Ë¥ð?d (cÜf_l @  Ë¦ð?d hc^÷H² @  Ë§ð?d ¨c¢” @  Ë¨ð?d èc J @  Ë©ð?d (dŽèõ @  Ëªð?d hd yâÑ @  Ë«ð?d ¨dhNÐ @  Ë¬ð?d èdêŸY @  Ë­ð?d (e†‹g; @  Ë®ð?d hepå @  Ë¯ð?d ¨e-]/ @  Ë°ð?d èe¼Jñ @  Ë±ð?d (f5_üz @  Ë²ð?d hf·Îë¤ @  Ë³ð?d ¨fÓ¹G¥ @  Ë´ð?d èfQ(P{ @  Ëµð?d (g›w @  Ë ¶ð?d hg `À @  Ë!·ð?d ¨gÿm/æ @  Ë"¸ð?d èg}ü88 @  Ë#¹ð?d (hþ¤¢o @  Ë$ºð?d hh|5µ± @  Ë%»ð?d ¨hB° @  Ë&¼ð?d èhšÓn @  Ë'½ð?d (iöÇ0[ @  Ë(¾ð?d hitV'… @  Ë)¿ð?d ¨i€†&‚ @  Ë*Àð?d èi1\ @  Ë+Áð?d (j(ô‡× @  Ë,Âð?d hjªe  @  Ë-Ãð?d ¨jÎ< @  Ë.Äð?d èjLƒ+Ö @  Ë/Åð?d (k6+ @  Ë0Æð?d hk§<Ý @  Ë1Çð?d ¨kóÀsû @  Ë2Èð?d èkqQd% @  Ë3Éð?d (l߸` @  Ë4Êð?d hl])–¾ @  Ë5Ëð?d ¨l9^:¿ @  Ë6Ìð?d èl»Ï-a @  Ë7Íð?d (m×ÛT @  Ë8Îð?d hmUJŠ @  Ë9Ïð?d ¨mÌ})@ @  Ë:Ðð?d èmNì>ž @  Ë;Ñð?d (ndˆ @  Ë<Òð?d hn枟Ë @  Ë=Óð?d ¨n‚é3Ê @  Ë>Ôð?d ènx$ @  Ë?Õð?d (o~Ìã @  Ë@Öð?d hoü]= @  ËA×ð?d ¨o:] @  ËBØð?d èo‚«JÅ @  ËCÙð?d (p‹Òà= @  ËDÚð?d hp C÷ã @  ËEÛð?d ¨pm4[â @  ËFÜð?d èpï¥L< @  ËGÝð?d (qƒ±r  @  ËHÞð?d hq e× @  ËIßð?d ¨q qÁ @  ËJàð?d èq‡1f @  ËKáð?d (r­ÒД @  ËLâð?d hr/CÇJ @  ËMãð?d ¨rK4kK @  ËNäð?d èrÉ¥|• @  ËOåð?d (s|@ @  ËPæð?d hsŠkž @  ËQçð?d ¨svæ$¸ @  ËRèð?d èsôw3f @  ËSéð?d (tZžÖ# @  ËTêð?d htØÁý @  ËUëð?d ¨t¼xmü @  ËVìð?d èt>éz" @  ËWíð?d (uRýD @  ËXîð?d huÐlSÉ @  ËYïð?d ¨uI[~ @  ËZðð?d èuËÊiÝ @  Ë[ñð?d (vá)ßV @  Ë\òð?d hvc¸Èˆ @  Ë]óð?d ¨vÏd‰ @  Ë^ôð?d èv…^sW @  Ë_õð?d (wUíT2 @  Ë`öð?d hw×|Cì @  Ëa÷ð?d ¨w+ Ê @  Ëbøð?d èw©Š @  Ëcùð?d (x*ÒC @  Ëdúð?d hx¨C– @  Ëeûð?d ¨xÌ4:œ @  Ëfüð?d èxN¥-B @  Ëgýð?d (y"±w @  Ëhþð?d hy  © @  Ëiÿð?d ¨y6Q0 @  Ëjñ?d èy´Àî @  Ëkñ?d (zž#¥e @  Ëlñ?d hz²²» @  Ëmñ?d ¨zxź @  Ënñ?d èzúT d @  Ëoñ?d ({;á ± @  Ëpñ?d h{¹po @  Ëqñ?d ¨{EQI @  Ërñ?d è{džF— @  Ës ñ?d (|io£Ò @  Ët ñ?d h|ëþ´  @  Ëu ñ?d ¨|‰  @  Ëv ñ?d è| Ó @  Ëw ñ?d (}a 1æ @  Ëxñ?d h}ã&8 @  Ëyñ?d ¨}zª ò @  Ëzñ?d è}ø;, @  Ë{ñ?d (~ÒØª§ @  Ë|ñ?d h~PI½y @  Ë}ñ?d ¨~4>x @  Ë~ñ?d è~¶¯¦ @  Ëñ?d (+M` @  Ë€ñ?d h©Ü¾ @  Ëñ?d ¨uЀ'U»O˜ @  Ë‚ñ?d è×*XF @  Ëƒñ?d @€3¬x @  Ë„ñ?d €€.Æ®† @  Ë…ñ?d À€èÕ§ @  Ë†ñ?d 8›O @  Ë‡ñ?d @P>L @  Ëˆñ?d €&¥<² @  Ë‰ñ?d À€A=„ @  ËŠ ñ?d ‚E @  Ë‹!ñ?d @‚(3œÑ @  ËŒ"ñ?d €‚Æž/ @  Ë#ñ?d À‚ÎÕ' @  ËŽ$ñ?d ƒ«æ @  Ë%ñ?d @ƒñ0 @  Ë&ñ?d €ƒ­2û @  Ë‘'ñ?d Àƒóhý @  Ë’(ñ?d „êI›ò @  Ë“)ñ?d @„ßšf @  Ë”*ñ?d €„ÿŠ˜˜ @  Ë•+ñ?d À„9™!¹ @  Ë–,ñ?d …éÑ­Q @  Ë—-ñ?d @…×R @  Ë˜.ñ?d €…÷é ¬ @  Ë™/ñ?d À…̺2F @  Ëš0ñ?d †Qþ’‡ @  Ë›1ñ?d @†dÈ“ @  Ëœ2ñ?d €†D=‘í @  Ë3ñ?d À†‚.(Ì @  Ëž4ñ?d ‡Rf¤$ @  ËŸ5ñ?d @‡Ð w @  Ë 6ñ?d €‡ðù‰ @  Ë¡7ñ?d À‡®ú@ @  Ë¢8ñ?d ˆšÌ’ @  Ë£9ñ?d @ˆ¯3Í @  Ë¤:ñ?d €ˆÆÏø @  Ë¥;ñ?d ÀˆIÕvÙ @  Ë¦<ñ?d ‰™ú1 @  Ë§=ñ?d @‰§P_2 @  Ë¨>ñ?d €‰‡¥]Ì @  Ë©?ñ?d À‰ÑIë @  Ëª@ñ?d ŠLUé* @  Ë«Añ?d @Šycè¾ @  Ë¬Bñ?d €ŠY–ê@ @  Ë­Cñ?d ÀŠŸ…Sa @  Ë®Dñ?d ‹OÍ߉ @  Ë¯Eñ?d @‹Ü¡Dj @  Ë°Fñ?d €‹üTF” @  Ë±Gñ?d À‹¢W’ @  Ë²Hñ?d Œ»ï @  Ë³Iñ?d @ŒŽ/î  @  Ë´Jñ?d €Œ®Úì÷ @  ËµKñ?d ÀŒhÉUÖ @  Ë¶Lñ?d ¸Ù> @  Ë·Mñ?d @†L|= @  Ë¸Nñ?d €¦¹~à @  Ë¹Oñ?d ÀêF) @  ËºPñ?d Ž®æè @  Ë»Qñ?d @Ž5˜ç| @  Ë¼Rñ?d €Žmå‚ @  Ë½Sñ?d ÀŽÓ~\£ @  Ë¾Tñ?d 6ÐK @  Ë¿Uñ?d @/[jŠ @  ËÀVñ?d €®ht @  ËÁWñ?d ÀQ­2r @  ËÂXñ?d ïsŽÀ @  ËÃYñ?d @ÚET @  ËÄZñ?d €ú°ª @  ËÅ[ñ?d À<£4‹ @  ËÆ\ñ?d ‘ìë¸c @  ËÇ]ñ?d @‘Ò&` @  ËÈ^ñ?d €‘òÓž @  ËÉ_ñ?d À‘T7¨ @  ËÊ`ñ?d ’És¾i @  ËËañ?d @’üE¿ý @  ËÌbñ?d €’ܰ½ @  ËÍcñ?d À’£" @  ËÎdñ?d “ÊëˆÊ @  ËÏeñ?d @“Y‡) @  ËÐfñ?d €“yr× @  ËÑgñ?d À“'qKÑ @  ËÒhñ?d ”>?¸Þ @  ËÓiñ?d @” ¹J @  ËÔjñ?d €”+ü»´ @  ËÕkñ?d À”íï• @  ËÖlñ?d •=§Ž} @  Ë×mñ?d @•j+~ @  ËØnñ?d €•#Ÿ)€ @  ËÙoñ?d À•Ìj @  ËÚpñ?d –…ˆ±« @  ËÛqñ?d @–°¾°? @  ËÜrñ?d €–K²Á @  ËÝsñ?d À–VX à @  ËÞtñ?d —†‡ @  Ëßuñ?d @—z;[ @  Ëàvñ?d €—$9¥ @  Ëáwñ?d À—zŒc£ @  Ëâxñ?d€ ˜È%G @  Ìyñ?d @˜Rº @  Ìzñ?d €˜<§ D @  Ì{ñ?d À˜?ýNˆ @  Ì|ñ?d ™ïµÂ` @  Ì}ñ?d @™Ê8 @  Ì~ñ?d €™??:ç @  Ìñ?d À™ºÿ%( @  Ì€ñ?d š'»…é @  Ì ñ?d @š×Ä @  Ì ‚ñ?d €š÷1}n @  Ì ƒñ?d Àšôk?¢ @  Ì „ñ?d ›$#³J @  Ì …ñ?d @›Ô\I3 @  Ì†ñ?d €›ô©KÍ @  Ì‡ñ?d À›ɹpQ @  Ìˆñ?d œÐ÷ƒ^ @  Ì‰ñ?d @œ ˆy' @  ÌŠñ?d €œ}{Ù @  Ì‹ñ?d Àœ'9 @  ÌŒñ?d Óoµý @  Ìñ?d @#O„ @  ÌŽñ?d €åMz @  Ìñ?d Àö*ê @  Ìñ?d žk@Š+ @  Ì‘ñ?d @ž›?pR @  Ì’ñ?d €ž»Êr¬ @  Ì“ñ?d Àž¸0` @  Ì”ñ?d Ÿhؼˆ @  Ì•ñ?d @Ÿ˜§Fñ @  Ì–ñ?d €Ÿ¸RD @  Ì—ñuР?d ÀŸ”DX# @  Ì ˜ñ?d  åO†E @  Ì!™ñ?d X 0|< @  Ì"šñ?d ˜ 5Å~ @  Ì#›ñ?d Ø 6Ÿ< @  Ì$œñ?d ¡æ×°æ @  Ì%ñ?d X¡¨JŸ @  Ì&žñ?d ˜¡6]Ha @  Ì'Ÿñ?d Ø¡^ - @  Ì( ñ?d ¢ÃO¶ì @  Ì)¡ñ?d X¢30L• @  Ì*¢ñ?d ˜¢ÅNk @  Ì+£ñ?d Ø¢Ÿ § @  Ì,¤ñ?d £À×€O @  Ì-¥ñ?d X£0¨z6 @  Ì.¦ñ?d ˜£]xÈ @  Ì/§ñ?d Ø£-MCT @  Ì0¨ñ?d ¤4°[ @  Ì1©ñ?d X¤Ä|J" @  Ì2ªñ?d ˜¤ä‰HÜ @  Ì3«ñ?d ؤçÓ  @  Ì4¬ñ?d ¥7›†ø @  Ì5­ñ?d X¥Çä| @  Ì6®ñ?d ˜¥ç~ @  Ì7¯ñ?d Ø¥ðï @  Ì8°ñ?d ¦´¹. @  Ì9±ñ?d X¦ËCW @  Ì:²ñ?d ˜¦_>A© @  Ì;³ñ?d ئ\de @  Ì<´ñ?d §Œ, @  Ì=µñ?d X§|Suô @  Ì>¶ñ?d ˜§\¦w  @  Ì?·ñ?d اÞ·m´ @  Ì@¸ñ?d ¨êHá© @  ÌA¹ñ?d X¨7Ð @  ÌBºñ?d ˜¨:Â. @  ÌC»ñ?d ب9˜[â @  ÌD¼ñ?d ©éÐ×  @  ÌE½ñ?d X©¯-s @  ÌF¾ñ?d ˜©9Z/ @  ÌG¿ñ?d Ø©¡\dÐ @  ÌHÀñ?d ª<Ä @  ÌIÁñ?d XªÌg>h @  ÌJÂñ?d ˜ªì’<– @  ÌKÃñ?d تïÈ~Z @  ÌLÄñ?d «?€ò² @  ÌMÅñ?d X«ÏÿË @  ÌNÆñ?d ˜«ï 5 @  ÌOÇñ?d Ø«Ò1© @  ÌPÈñ?d ¬ËT¦ @  ÌQÉñ?d X¬;+8ß @  ÌRÊñ?d ˜¬Þ:! @  ÌSËñ?d ج„xí @  ÌTÌñ?d ­ÈÌô @  ÌUÍñ?d X­8³| @  ÌVÎñ?d ˜­F ‚ @  ÌWÏñ?d Ø­í§k @  ÌXÐñ?d ®pãËÓ @  ÌYÑñ?d X®€œ1ª @  ÌZÒñ?d ˜® i3T @  Ì[Óñ?d Ø®£3q˜ @  Ì\Ôñ?d ¯s{ýp @  Ì]Õñ?d X¯ƒ  @  Ì^Öñ?d ˜¯£ñ÷ @  Ì_×ñ?d دçÛ @  Ì`Øñ?d °19¥i @  ÌaÙñ?d X°ÁF_ @  ÌbÚñ?d ˜°á³]î @  ÌcÛñ?d ذâé" @  ÌdÜñ?d ±2¡“Ê @  ÌeÝñ?d X±ÂÞi³ @  ÌfÞñ?d ˜±â+kM @  Ìgßñ?d رŠ}5 @  Ìhàñ?d ²9•À @  Ìiáñ?d X²çFo¹ @  Ìjâñ?d ˜²dzmG @  Ìkãñ?d زÄé/‹ @  Ìläñ?d ³¡£c @  Ìmåñ?d X³äÞY @  Ìnæñ?d ˜³Ä+[ä @  Ìoçñ?d سù;`x @  Ìpèñ?d ´àu“w @  Ìqéñ?d X´ i @  Ìrêñ?d ˜´0ÿkð @  Ìsëñ?d Ø´3¥)< @  Ìtìñ?d µãí¥Ô @  Ìuíñ?d Xµ*Uƒx @  Ìv îñ?d ˜µ  † @  Ìw ïñ?d صÿAæ @  Ìx ðñ?d ¶bF× @  Ìy ññ?d X¶’z¼® @  Ìz òñ?d ˜¶²¾P @  Ì{ óñ?d ض±Õüœ @  Ì| ôñ?d ·apt @  Ì} õñ?d X·‘⊠ @  Ì~ öñ?d ˜·±ˆó @  Ì ÷ñ?d Ø·ÐP¢| @  Ì€ øñ?d ¸ä¯.a @  Ì ùñ?d X¸ÐÔ @  Ì‚ úñ?d ˜¸4%Öæ @  Ìƒ ûñ?d ظ7”* @  Ì„ üñ?d ¹ç7 @  Ì… ýñ?d X¹Hâ» @  Ì† þñ?d ˜¹7½àE @  Ì‡ ÿñ?d ع8Ÿ£ @  Ìˆ ò?d ºâ|?b @  Ì‰ ò?d XºÅ @  ÌŠ ò?d ˜º2öÇå @  Ì‹ ò?d غ1¬…) @  ÌŒ ò?d »áä Á @  Ì ò?d X»›ó¸ @  ÌŽ ò?d ˜»1nñF @  Ì ò?d Ø» ~ÊÚ @  Ì ò?d ¼09Õ @  Ì‘  ò?d X¼åOì @  Ì’  ò?d ˜¼źÁR @  Ì“  ò?d ؼÆàƒž @  Ì”  ò?d ½¨v @  Ì•  ò?d X½æ×õ @  Ì– ò?d ˜½Æ"÷ñ @  Ì— ò?d ؽ3Ãa @  Ì˜ ò?d ¾®‡0  @  Ì™ ò?d X¾^øÊÙ @  Ìš ò?d ˜¾~ È' @  Ì› ò?d ؾ}WŠë @  Ìœ ò?d ¿­ @  Ì ò?d X¿]`üz @  Ìž ò?d ˜¿}•þ„ @uÐÀ  ÌŸ ò?d Ø¿Qƒâ¨ @  Ì  ò?d 0À5s³ú @  Ì¡ ò?d pÀÅ Iƒ @  Ì¢ ò?d °ÀåùK} @  Ì£ ò?d ðÀæ£ ± @  Ì¤ ò?d 0Á6ë…Y @  Ì¥ ò?d pÁÆ”  @  Ì¦ ò?d °Áæa}Þ @  Ì§ ò?d ðÁŽ7#’ @  Ì¨  ò?d 0ÂsƒS @  Ì© !ò?d pÂã y* @  Ìª "ò?d °ÂÃù{Ô @  Ì« #ò?d ðÂÀ£9 @  Ì¬ $ò?d 0Ãëµð @  Ì­ %ò?d pÃà”O‰ @  Ì® &ò?d °ÃÀaMw @  Ì¯ 'ò?d ðÃýqvë @  Ì° (ò?d 0Ää?…ä @  Ì± )ò?d pÄ@ @  Ì² *ò?d °Ä4µ}c @  Ì³ +ò?d ðÄ7ï?¯ @  Ì´ ,ò?d 0Åç§³G @  Ìµ -ò?d pÅØI> @  Ì¶ .ò?d °Å7-KÀ @  Ì· /ò?d ðÅÂÌ,P @  Ì¸ 0ò?d 0Æ_ˆŒ‘ @  Ì¹ 1ò?d pƯ÷vè @  Ìº 2ò?d °Æt @  Ì» 3ò?d ðÆŒX6Ú @  Ì¼ 4ò?d 0Ç\º2 @  Ì½ 5ò?d pǬo@K @  Ì¾ 6ò?d °ÇŒšBµ @  Ì¿ 7ò?d ðÇ‹X  @  ÌÀ 8ò?d 0È:tÔ @  ÌÁ 9ò?d pÈÊ .o @  Ì :ò?d °Èêþ,‘ @  Ìà ;ò?d ðÈé¤n] @  ÌÄ <ò?d 0É9ìâµ @  ÌÅ =ò?d pÉÉ“Ì @  ÌÆ >ò?d °Ééf2 @  ÌÇ ?ò?d ðÉq`Qo @  ÌÈ @ò?d 0Êì$ñ® @  ÌÉ Aò?d pÊ[ × @  ÌÊ Bò?d °Ê<® ) @  ÌË Cò?d ðÊ?ôKå @  ÌÌ Dò?d 0Ëï¼Ç  @  ÌÍ Eò?d pËÃ=t @  ÌÎ Fò?d °Ë?6?Š @  ÌÏ Gò?d ðË& @  ÌÐ Hò?d 0Ìh÷ @  ÌÑ Iò?d pÌë ` @  ÌÒ Jò?d °ÌËâž @  ÌÓ Kò?d ðÌȸMR @  ÌÔ Lò?d 0ÍðÁº @  ÌÕ Mò?d pÍè;à @  ÌÖ Nò?d °ÍÈz9= @  Ì× Oò?d ðÍ=›^­ @  ÌØ Pò?d 0Πßþl @  ÌÙ Qò?d pÎP  @  ÌÚ Rò?d °ÎpUë @  ÌÛ Sò?d ðÎsD' @  ÌÜ Tò?d 0Ï£GÈÏ @  ÌÝ Uò?d pÏS82¶ @  ÌÞ Vò?d °ÏsÍ0H @  Ìß Wò?d ðÏ_Û,d @  Ìà Xò?d 0ÐáÖ @  Ìá Yò?d pÐzj¯ @  Ìâ Zò?d€ °ÐELt÷ @  Í [ò?d ðЧW~ @  Í \ò?d 0Ñwòú @  Í ]ò?d pÑB)ón @  Í ^ò?d °ÑbÜñ @  Í _ò?d ðÑÄ8ð¦ @  Í `ò?d 0ÒY|Pg @  Í aò?d pÒg±õd @  Í bò?d °ÒGD÷š @  Í cò?d ðÒWN» @  Í dò?d 0ÓQÂS @  Í eò?d pÓd)ÃÇ @  Í fò?d °ÓDÜÁ9 @  Í gò?d ðÓß›? @  Í hò?d 0Ô‘h0 @  Í iò?d pÔýóÓ @  Í jò?d °Ô°ñ- @  Í kò?d ðÔvH  @  Í lò?d 0Õ¦SÄä @  Í mò?d pÕ“eÅp @  Í nò?d °Õ³ÇŽ @  Í oò?d ðÕˆÃÿd @  Í pò?d 0Ö‡_¥ @  Í qò?d pÖ+Jú¦ @  Í rò?d °Ö ¿øX @  Í sò?d ðÖͬAy @  Í tò?d 0×äÍ‘ @  Í uò?d p×(ÒÌ @  Í vò?d °×'Îû @  Í wò?d ð×V$”ý @  Í xò?d 0ØbÛà @  Í yò?d pØ౤³ @  Í zò?d °ØÀD¦M @  Í! {ò?d ðØWl @  Í" |ò?d 0ÙÖ“„ @  Í# }ò?d pÙã)’ @  Í$ ~ò?d °ÙÃÜî @  Í% ò?d ðÙˆ®Ð[ @  Í& €ò?d 0Úêpš @  Í' ò?d pÚ+'Õ™ @  Í( ‚ò?d °Ú Ò×g @  Í) ƒò?d ðÚÍÁnF @  Í* „ò?d 0ۉ⮠@  Í+ …ò?d pÛ(¿ã: @  Í, †ò?d °ÛJáÄ @  Í- ‡ò?d ðÛVI»Â @  Í. ˆò?d 0ÜOHÍ @  Í/ ‰ò?d pÜÜkÓ. @  Í0 Šò?d °ÜüžÑÐ @  Í1 ‹ò?d ðÜ:hñ @  Í2 Œò?d 0ÝêÅä @  Í3 ò?d pÝßóå @  Í4 Žò?d °Ýÿçs @  Í5 ò?d ðÝÄUß™ @  Í6 ò?d 0ÞYX @  Í7 ‘ò?d pÞgÜÚ[ @  Í8 ’ò?d °ÞG)Ø¥ @  Í9 “ò?d ðÞ:a„ @  Í: ”ò?d 0ßQríl @  Í; •ò?d pßdDìø @  Í< –ò?d uÐà/°ßD±î @  Í= —ò?d ðß²´ @  Í> ˜ò?d Hàêö @  Í? ™ò?d ˆàE @  Í@ šò?d ÈàŽRÉ @  ÍA ›ò?d á›DpÞ @  ÍB œò?d HáÕg @  ÍC ò?d ˆáއs´ @  ÍD žò?d Èá dj @  ÍE Ÿò?d âµ'ÒC @  ÍF  ò?d Hâ7¶Å @  ÍG ¡ò?d ˆâ«u¾ @  ÍH ¢ò?d Èâ)Žb` @  ÍI £ò?d ã½D@w @  ÍJ ¤ò?d Hã?ÕW© @  ÍK ¥ò?d ˆã¨‡C @  ÍL ¦ò?d Èã*Tà @  ÍM §ò?d äïÊê @  ÍN ¨ò?d Häm[ýÊ @  ÍO ©ò?d ˆä\Ss  @  ÍP ªò?d ÈäÞÂd× @  ÍQ «ò?d åJFÀ @  ÍR ¬ò?d HåÈ™Q @  ÍS ­ò?d ˆå_ËEª @  ÍT ®ò?d ÈåÝZRt @  ÍU ¯ò?d æùÜÝ @  ÍV °ò?d Hæ{MÊ_ @  ÍW ±ò?d ˆæçäz| @  ÍX ²ò?d Èæeum¢ @  ÍY ³ò?d çñ¿Oµ @  ÍZ ´ò?d Hçs.Xk @  Í[ µò?d ˆçä|Lß @  Í\ ¶ò?d Èçfí[ @  Í] ·ò?d 莀šÄ @  Í^ ¸ò?d Hè  @  Í_ ¹ò?d ˆè,$i @  Í` ºò?d È讎3· @  Ía »ò?d é:D  @  Íb ¼ò?d Hé¸Õ~ @  Íc ½ò?d ˆé/‡Ê @  Íd ¾ò?d Èé­ @  Íe ¿ò?d êäw¦, @  Íf Àò?d Hêfæ±ò @  Íg Áò?d ˆêúOÑ @  Íh Âò?d ÈêxÞ @  Íi Ãò?d ëì4 @  Íj Äò?d Hën…#Æ @  Ík Åò?d ˆëù×7r @  Íl Æò?d Èë{F ¬ @  Ím Çò?d 쾚ž{ @  Ín Èò?d Hì< ‰¥ @  Ío Éò?d ˆì f @  Íp Êò?d Èì’¸ @  Íq Ëò?d íX2¯ @  Ír Ìò?d Hí™É%q @  Ís Íò?d ˆí›1Å @  Ít Îò?d ÈíŒ & @  Íu Ïò?d ©î @  Ív Ðò?d Hî*¾0 @  Íw Ñò?d ˆî¶´ @  Íx Òò?d Èî4%Í @  Íy Óò?d ï ï;Ú @  Íz Ôò?d Hï"~, @  Í{ Õò?d ˆïµ,8° @  Í| Öò?d Èï7½/n @  Í} ×ò?d ðUñÞ @  Í~ Øò?d Hð×`ÉÚ @  Í Ùò?d ˆðº?V  @  Í€ Úò?d Èð8®AÔ @  Í Ûò?d ñ¬dcà @  Í‚ Üò?d Hñ.õt @  Íƒ Ýò?d ˆñ¹§`© @  Í„ Þò?d Èñ;6ww @  Í… ßò?d ò‚Á^ @  Í† àò?d Hò–Ö€ @  Í‡ áò?d ˆòœ?f£ @  Íˆ âò?d Èò®q} @  Í‰ ãò?d óŠdSj @  ÍŠ äò?d HóõD´ @  Í‹ åò?d ˆóŸ§P @  ÍŒ æò?d Èó6GÞ @  Í çò?d ôØêù  @  ÍŽ èò?d HôZ{î× @  Í éò?d ˆôks` @  Í êò?d ÈôéâwÊ @  Í‘ ëò?d õ}(UÝ @  Í’ ìò?d Hõÿ¹B @  Í“ íò?d ˆõhëV· @  Í” îò?d ÈõêzAi @  Í• ïò?d öÎüΜ @  Í– ðò?d HöLmÙB @  Í— ñò?d ˆöÐÄia @  Í˜ òò?d ÈöRU~¿ @  Í™ óò?d ÷ÆŸ\¨ @  Íš ôò?d H÷DKv @  Í› õò?d ˆ÷Ó\_ @  Íœ öò?d È÷QÍH @  Í ÷ò?d ø¹ ‰Ù @  Íž øò?d Hø;1ž @  ÍŸ ùò?d ˆø?7t @  Í  úò?d Èø™® ª @  Í¡ ûò?d ù d½ @  Í¢ üò?d Hùõc @  Í£ ýò?d ˆù§× @  Í¤ þò?d Èùš6  @  Í¥ ÿò?d ú±ö´¯ @  Í¦ ó?d Hú3g£q @  Í§ ó?d ˆú¯ÎR @  Í¨ ó?d Èú-_Œ @  Í© ó?d û¹•&› @  Íª ó?d Hû;1E @  Í« ó?d ˆû¬V%ñ @  Í¬ ó?d Èû.Ç2/ @  Í­ ó?d üëŒø @  Í® ó?d HüiŠ›& @  Í¯  ó?d ˆüX‚å @  Í°  ó?d ÈüÚ; @  Í±  ó?d ýNÙ , @  Í²  ó?d HýÌH7ò @  Í³  ó?d ˆý[#F @  Í´ ó?d ÈýÙ‹4˜ @  Íµ ó?d þý »m @  Í¶ ó?d Hþœ¬³ @  Í· ó?d ˆþã5 @  Í¸ ó?d Èþa¤ N @  Í¹ ó?d ÿõn)Y @  Íº ó?d Hÿwÿ>‡ @  Í» ó?d ˆÿà­*3 @  Í¼ uÐó?d Èÿb<=í @  Í½ ó?d ‹hb« @  Í¾ ó?d ` ùuu @  Í¿ ó?d  ‡ðÚ” @  ÍÀ ó?d àaÍJ @  ÍÁ ó?d ‘«ï] @  Í ó?d `:øƒ @  Íà ó?d  „hì7 @  ÍÄ ó?d àùûé @  ÍÅ ó?d ¿ÈMÀ @  ÍÆ  ó?d `=YZ @  ÍÇ !ó?d  ¡ðê= @  ÍÈ "ó?d à#aýã @  ÍÉ #ó?d ·«ßô @  ÍÊ $ó?d `5:È* @  ÍË %ó?d  ¢hÜž @  ÍÌ &ó?d à ùË@ @  ÍÍ 'ó?d å%u— @  ÍÎ (ó?d `g´bI @  ÍÏ )ó?d  V¼ìŠ @  ÍÐ *ó?d àÔ-ûT @  ÍÑ +ó?d @çÙC @  ÍÒ ,ó?d `ÂvÎ @  ÍÓ -ó?d  U$Ú) @  ÍÔ .ó?d à×µÍ÷ @  ÍÕ /ó?d ó3B @  ÍÖ 0ó?d `q¢UÜ @  Í× 1ó?d  í åÿ @  ÍØ 2ó?d àošò! @  ÍÙ 3ó?d ûPÐ6 @  ÍÚ 4ó?d `yÁÇè @  ÍÛ 5ó?d  î“Ó\ @  ÍÜ 6ó?d àlÄ‚ @  ÍÝ 7ó?d „oG @  ÍÞ 8ó?d `þ™ @  Íß 9ó?d  &ð»ê @  Íà :ó?d à¤a¬4 @  Íá ;ó?d 0«Ž# @  Íâ <ó?d€ ` s}ný @  Î =ó?d   n2` @  Î >ó?d à ‡ÿ%¾ @  Î ?ó?d  ×}k @  Î @ó?d ` ‰Fjµ @  Î Aó?d   Û]…ì @  Î Bó?d à YÌ’2 @  Î Có?d ´ï_ @  Î Dó?d ` %ø @  Î Eó?d   Ó>Ø @  Î Fó?d à Q¯ @  Î Gó?d Q:E< @  Î Hó?d ` Ó«Râ @  Î Ió?d   °½» @  Î Jó?d à !ªe @  Î Kó?d ôøéè @  Î Ló?d ` viþ6 @  Î Mó?d   $ro @  Î Nó?d à ¦ã± @  Î Oó?d G,r© @  Î Pó?d `Žew @  Î Qó?d  —¦Š. @  Î Ró?d à7ð @  Î Só?d OOà @  Î Tó?d `ÍÞ÷C @  Î Uó?d  ŸÅ @  Î Vó?d àTÄ @  Î Wó?d ºQC @  Î Xó?d `8À @  Î Yó?d  jÛýÄ @  Î Zó?d àèJê @  Î [ó?d •Ž' @  Î \ó?d `Œ™ù @  Î! ]ó?d  Þv  @  Î" ^ó?d à\Ža~ @  Î# _ó?d  ö,º @  Î$ `ó?d `¢g;d @  Î% aó?d  ð|Ô= @  Î& bó?d àríÃã @  Î' có?d (•¾Ž @  Î( dó?d `ª©P @  Î) eó?d  øF  @  Î* fó?d àzŽQ× @  Î+ gó?d zí @  Î, hó?d `øŠ3 @  Î- ió?d  ª‘ìj @  Î. jó?d à(û´ @  Î/ kó?d ßÙ¸9 @  Î0 ló?d `]H¯ç @  Î1 mó?d  S@¾ @  Î2 nó?d àÂW` @  Î3 oó?d l #x @  Î4 pó?d `îœ4¦ @  Î5 qó?d  ¼‡Ûÿ @  Î6 ró?d à>Ì! @  Î7 só?d dn±L @  Î8 tó?d `æÿ¦’ @  Î9 uó?d  ´äIË @  Î: vó?d à6u^ @  Î; wó?d Qd= @  Î< xó?d `™Àsã @  Î= yó?d  ËÛœº @  Î> zó?d àIJ‹d @  Î? {ó?d ’éË @  Î@ |ó?d `ƒþ @  ÎA }ó?d  ÑL @  ÎB ~ó?d àS‰’ @  ÎC ó?d Âg Õ @  ÎD €ó?d `@ö  @  ÎE ó?d  íòR @  ÎF ‚ó?d à|åŒ @  ÎG ƒó?d ʘá @  ÎH „ó?d `H•? @  ÎI …ó?d  Ž`f @  ÎJ †ó?d à˜w¸ @  ÎK ‡ó?d ˜Š2‚ @  ÎL ˆó?d `%\ @  ÎM ‰ó?d  HÊ @  ÎN Šó?d àÊ‘ÝÛ @  ÎO ‹ó?d =HžV @  ÎP Œó?d `¿Ù‰ˆ @  ÎQ ó?d  íÂfÑ @  ÎR Žó?d àoSq @  ÎS ó?d Žœ @  ÎT ó?d ` É @  ÎU ‘ó?d  ^ý @  ÎV ’ó?d à܇êN @  ÎW “ó?d †ÿ—# @  ÎX ”ó?d `n€ý @  ÎY •ó?d  Vuo¤uÐ  @  ÎZ –ó?d àÔäxz @  Î[ —ó?d 8 ¼4) @  Î\ ˜ó?d x >¥÷ @  Î] ™ó?d ¸ l¾è® @  Î^ šó?d ø î/ÿp @  Î_ ›ó?d 8!ð›M @  Î` œó?d x!ŠaŒ“ @  Îa ó?d ¸!ØzcÊ @  Îb žó?d ø!Zët @  Îc Ÿó?d 8"&“9Ð @  Îd  ó?d x"¤. @  Îe ¡ó?d ¸"öÁW @  Îf ¢ó?d ø"tˆÖ‰ @  Îg £ó?d 8#.ð«ä @  Îh ¤ó?d x#¬a¼: @  Îi ¥ó?d ¸#þzSc @  Îj ¦ó?d ø#|ëD½ @  Îk §ó?d 8$|~‡ @  Îl ¨ó?d x$þïY @  Îm ©ó?d ¸$¬ôù @  În ªó?d ø$.eîÞ @  Îo «ó?d 8%Ù¼­S @  Îp ¬ó?d x%[-º @  Îq ­ó?d ¸% 6UÔ @  Îr ®ó?d ø%‹§B  @  Îs ¯ó?d 8&jh6 @  Ît °ó?d x&èù!Ì @  Îu ±ó?d ¸&ºâΕ @  Îv ²ó?d ø&8sÙK @  Îw ³ó?d 8'b ¤& @  Îx ´ó?d x'àš³ø @  Îy µó?d ¸'²\¡ @  Îz ¶ó?d ø'0K @  Î{ ·ó?d 8(4qW @  Î| ¸ó?d x(Ÿ¥f‰ @  Î} ¹ó?d ¸(;‰Ð @  Î~ ºó?d ø(O/ž @  Î »ó?d 8)ä¡Ì @  Î€ ¼ó?d x)f0ÛN @  Î ½ó?d ¸)4+4 @  Î‚ ¾ó?d ø)¶º#É @  Îƒ ¿ó?d 8*:’{ @  Î„ Àó?d x*¸l @  Î… Áó?d ¸*ꃛ @  Î† Âó?d ø*h‰”E @  Î‡ Ãó?d 8+2ñé( @  Îˆ Äó?d x+°`þö @  Î‰ Åó?d ¸+â{¯ @  ÎŠ Æó?d ø+`êq @  Î‹ Çó?d 8,`CK @  ÎŒ Èó?d x,âîT• @  Î Éó?d ¸,°õ»Ì @  ÎŽ Êó?d ø,2d¬ @  Î Ëó?d 8-ŽïŸ @  Î Ìó?d x-G,øA @  Î‘ Íó?d ¸-7 @  Î’ Îó?d ø-—¦Æ @  Î“ Ïó?d 8.vitÞ @  Î” Ðó?d x.ôøc @  Î• Ñó?d ¸.¦ãŒY @  Î– Òó?d ø.$r›‡ @  Î— Óó?d 8/~ æê @  Î˜ Ôó?d x/ü›ñ4 @  Î™ Õó?d ¸/®€m @  Îš Öó?d ø/, ³ @  Î› ×ó?d 80‹4 @  Îœ Øó?d x0 …ê @  Î Ùó?d ¸0[žû³ @  Îž Úó?d ø0Ùìm @  ÎŸ Ûó?d 81?ЈP @  Î  Üó?d x1½AŸŽ @  Î¡ Ýó?d ¸1ïZp× @  Î¢ Þó?d ø1mËg  @  Î£ ßó?d 82³*Í @  Î¤ àó?d x2“"= @  Î¥ áó?d ¸2Á9ÒJ @  Î¦ âó?d ø2C¨Å” @  Î§ ãó?d 83иù @  Î¨ äó?d x3›A¯' @  Î© åó?d ¸3ÉZ@~ @  Îª æó?d ø3KËW  @  Î« çó?d 84K^š @  Î¬ èó?d x4ÉÏD @  Î­ éó?d ¸4›Ôê @  Î® êó?d ø4Eýà @  Î¯ ëó?d 85N @  Î° ìó?d x5l © @  Î± íó?d ¸5>FÉ @  Î² îó?d ø5¼‡Q @  Î³ ïó?d 86]H% @  Î´ ðó?d x6ßÙ2Ñ @  Îµ ñó?d ¸6Â݈ @  Î¶ òó?d ø6SÊV @  Î· óó?d 87U+·; @  Î¸ ôó?d x7׺ å @  Î¹ õó?d ¸7…¡O¼ @  Îº öó?d ø70Xb @  Î» ÷ó?d 88*bJ @  Î¼ øó?d x8¨…u” @  Î½ ùó?d ¸8úžšÍ @  Î¾ úó?d ø8x @  Î¿ ûó?d 890×ï¼ @  ÎÀ üó?d x9²Føb @  ÎÁ ýó?d ¸9à]; @  Î þó?d ø9bÌå @  Îà ÿó?d 8:°Lf8 @  ÎÄ ô?d x:2Ýqæ @  ÎÅ ô?d ¸:`Æž¿ @  ÎÆ ô?d ø:âW‰a @  ÎÇ ô?d 8;¸/ô  @  ÎÈ ô?d x;:¾ãÒ @  ÎÉ ô?d ¸;h¥ ‹ @  ÎÊ ô?d ø;ê4U @  ÎË ô?d 8<ê¡^o @  ÎÌ ô?d x<h0I± @  ÎÍ  ô?d ¸<:+¦è @  ÎÎ  ô?d ø<¸º±6 @  ÎÏ  ô?d 8=Ocò» @  ÎÐ  ô?d x=Íòåe @  ÎÑ  ô?d ¸=Ÿé < @  ÎÒ ô?d ø=xâ @  ÎÓ ô?d 8>ü·iú @  ÎÔ ô?d x>~&~$ @  ÎÕ ô?d ¸>,=‘} @  ÎÖ ô?d ø>®¬†£ @  Î× ô?d 8?ôÔûÎ @  ÎØ ô?d x?vEì @  ÎÙ ô?duÐ@7 ¸?$^I @  ÎÚ ô?d ø?¦Ï— @  ÎÛ ô?d P@|¸ž @  ÎÜ ô?d @\M` @  ÎÝ ô?d Ð@¬2à @  ÎÞ ô?d A|zlñ @  Îß ô?d PAÈ|“ú @  Îà ô?d A艑 @  Îá ô?d ÐAök} @  Îâ ô?d€ Bñq× @  Ï ô?d PBseè @  Ï  ô?d BShg @  Ï !ô?d ÐBf^f‚ @  Ï "ô?d C¶êj @  Ï #ô?d PCpSK @  Ï $ô?d CPðQµ @  Ï %ô?d ÐCn=ô¶ @  Ï &ô?d Dws¹ @  Ï 'ô?d PD)p]¿ @  Ï (ô?d D …_A @  Ï )ô?d ÐD<³^Õ @  Ï *ô?d EìûÒ= @  Ï +ô?d PE*èk @  Ï ,ô?d E iâ @  Ï -ô?d ÐE™qò @  Ï .ô?d F5RÀ @  Ï /ô?d PF?fj* @  Ï 0ô?d F“hÔ @  Ï 1ô?d ÐF*¥i@ @  Ï 2ô?d Gúíå¨ @  Ï 3ô?d PG<þ\‰ @  Ï 4ô?d G ^w @  Ï 5ô?d ÐG"Æût @  Ï 6ô?d H9wi @  Ï 7ô?d PHH:-o @  Ï 8ô?d HhÏ/‘ @  Ï 9ô?d ÐH]ù. @  Ï :ô?d I±¢í @  Ï ;ô?d PIK¢Ì @  Ï <ô?d IkW2 @  Ï =ô?d ÐIé=¥a @  Ï >ô?d Jty  @  Ï! ?ô?d PJ"͇ @  Ï" @ô?d J8y @  Ï# Aô?d ÐJ7í @  Ï$ Bô?d KçFž @  Ï% Cô?d PK!U'$ @  Ï& Dô?d K %Ú @  Ï' Eô?d ÐK?m€Ù @  Ï( Fô?d L&#sÖ @  Ï) Gô?d PLx )Ð @  Ï* Hô?d LXÕ+. @  Ï+ Iô?d ÐLmã*º @  Ï, Jô?d M½«¦R @  Ï- Kô?d PM{¸s @  Ï. Lô?d M[M @  Ï/ Mô?d ÐMÈ!†n @  Ï0 Nô?d NUe&¯ @  Ï1 Oô?d PNn6E @  Ï2 Pô?d NNû @  Ï3 Qô?d ÐN{õ/ @  Ï4 Rô?d O«½‘Ç @  Ï5 Sô?d POm®(æ @  Ï6 Tô?d OM[* @  Ï7 Uô?d ÐOs– @  Ï8 Vô?d PÍH3© @  Ï9 Wô?d PP“Ki¯ @  Ï: Xô?d P³¾kQ @  Ï; Yô?d ÐP†ˆjÅ @  Ï< Zô?d QVÀæ- @  Ï= [ô?d PQÓ_  @  Ï> \ô?d Q°&]ò @  Ï? ]ô?d ÐQœKç3 @  Ï@ ^ô?d RGò @  ÏA _ô?d PR§ëFÄ @  ÏB `ô?d R‡D: @  ÏC aô?d ÐR²(E® @  ÏD bô?d Sb`ÉF @  ÏE cô?d PS¤spg @  ÏF dô?d S„†r™ @  ÏG eô?d ÐSºKך @  ÏH fô?d T£$• @  ÏI gô?d PTý~“ @  ÏJ hô?d TÝó|m @  ÏK iô?d ÐTèÅ}ù @  ÏL jô?d U8ñ @  ÏM kô?d PUþžH0 @  ÏN lô?d UÞkJÎ @  ÏO mô?d ÐUMÑ- @  ÏP nô?d VÐCqì @  ÏQ oô?d PVëI @  ÏR pô?d VËåKø @  ÏS qô?d ÐVþÓJl @  ÏT rô?d W.›Æ„ @  ÏU sô?d PW舥 @  ÏV tô?d WÈ}}[ @  ÏW uô?d ÐWö°ØX @  ÏX vô?d XÂOTE @  ÏY wô?d PXœLC @  ÏZ xô?d X¼¹ ½ @  Ï[ yô?d ÐX‰ ) @  Ï\ zô?d YYÇÁ @  Ï] {ô?d PYŸÔ8à @  Ï^ |ô?d Y¿!: @  Ï_ }ô?d ÐY=K†M @  Ï` ~ô?d Z &Œ @  Ïa ô?d PZë}f9 @  Ïb €ô?d ZˈdÇ @  Ïc ô?d ÐZþ¾eS @  Ïd ‚ô?d [.öé» @  Ïe ƒô?d P[èåPš @  Ïf „ô?d [ÈRd @  Ïg …ô?d Ð[öÝ÷g @  Ïh †ô?d \ï“h @  Ïi ‡ô?d P\±^n @  Ïj ˆô?d \‘e\ @  Ïk ‰ô?d Ð\¤S] @  Ïl Šô?d ]tÑì @  Ïm ‹ô?d P]²hÍ @  Ïn Œô?d ]’ýj3 @  Ïo ô?d Ð]‘ñÐ @  Ïp Žô?d ^œÕQ @  Ïq ô?d P^§†iû @  Ïr ô?d ^‡sk @  Ïs ‘ô?d Ð^²Ej‘ @  Ït ’ô?d _b æy @  Ïu “ô?d P_¤_X @  Ïv ”ô?d _„ë]¦ @  ÏuÐ`w •ô?d Ð_º&ø¥ @  Ïx –ô?d (`ÞM= @  Ïy —ô?d h`ZÝ; @  Ïz ˜ô?d ¨`z(Å @  Ï{ ™ô?d è`OQ @  Ï| šô?d (aŸV˜¹ @  Ï} ›ô?d haYE!˜ @  Ï~ œô?d ¨ay°#f @  Ï ô?d èa¶‹©– @  Ï€ žô?d (b+Ï W @  Ï Ÿô?d hb+a @  Ï‚  ô?d ¨b­Þ Ÿ @  Ïƒ ¡ô?d èb˜è  @  Ï„ ¢ô?d (cH ‡ã @  Ï… £ô?d hc޳> @  Ï† ¤ô?d ¨c®F<< @  Ï‡ ¥ô?d èc‹™? @  Ïˆ ¦ô?d (d‰Åj0 @  Ï‰ §ô?d hdׯ06 @  ÏŠ ¨ô?d ¨d÷32È @  Ï‹ ©ô?d èdÂ3\ @  ÏŒ ªô?d (eM¿´ @  Ï «ô?d heÔ^• @  ÏŽ ¬ô?d ¨eô«k @  Ï ­ô?d èegÇŸˆ @  Ï ®ô?d (fúƒ?I @  Ï‘ ¯ô?d hfÁУ @  Ï’ °ô?d ¨fá%] @  Ï“ ±ô?d èfÔÉ @  Ï” ²ô?d (g[ˆ! @  Ï• ³ô?d hgÂH1 @  Ï– ´ô?d ¨gâ½3þ @  Ï— µô?d ègÜp–ý @  Ï˜ ¶ô?d (hèà @  Ï™ ·ô?d hh¶Œ@æ @  Ïš ¸ô?d ¨h–yB @  Ï› ¹ô?d èh£OCŒ @  Ïœ ºô?d (isÏd @  Ï »ô?d hiµvE @  Ïž ¼ô?d ¨i•át» @  ÏŸ ½ô?d èi‹Èè @  Ï  ¾ô?d (jŠÏh) @  Ï¡ ¿ô?d hjÜ{| @  Ï¢ Àô?d ¨jüŽ~ð @  Ï£ Áô?d èjɸd @  Ï¤ Âô?d (kðóŒ @  Ï¥ Ãô?d hkßãJ­ @  Ï¦ Äô?d ¨kÿHS @  Ï§ Åô?d èkÁÛíP @  Ï¨ Æô?d (lØ•_ @  Ï© Çô?d hl†–DY @  Ïª Èô?d ¨l¦cF§ @  Ï« Éô?d èl“UG3 @  Ï¬ Êô?d (mCËÛ @  Ï­ Ëô?d hm…rú @  Ï® Ìô?d ¨m¥ûp @  Ï¯ Íô?d èm6—ëç @  Ï° Îô?d (n«ÓK& @  Ï± Ïô?d hn€sÌ @  Ï² Ðô?d ¨n°uq2 @  Ï³ Ñô?d èn…Cp¦ @  Ï´ Òô?d (oU üN @  Ïµ Óô?d ho“Eo @  Ï¶ Ôô?d ¨o³íG‘ @  Ï· Õô?d èo â’ @  Ï¸ Öô?d (p3þ^  @  Ï¹ ×ô?d hpmý& @  Ïº Øô?d ¨pMØ @  Ï» Ùô?d èpx>L @  Ï¼ Úô?d (q¨v‹¤ @  Ï½ Ûô?d hqne2… @  Ï¾ Üô?d ¨qN0{ @  Ï¿ Ýô?d èqbýŠº @  ÏÀ Þô?d (rÿ¹*{ @  ÏÁ ßô?d hrY]+M @  Ï àô?d ¨ry¨)³ @  Ïà áô?d èrLž(' @  ÏÄ âô?d (sœÖ¤Ï @  ÏÅ ãô?d hsZÅî @  ÏÆ äô?d ¨sz0 @  ÏÇ åô?d èsDýº @  ÏÈ æô?d (t]³I @  ÏÉ çô?d ht° @  ÏÊ èô?d ¨t#Eä @  ÏË éô?d ètsp @  ÏÌ êô?d (uÆ;œ˜ @  ÏÍ ëô?d hu(%¹ @  ÏÎ ìô?d ¨u Ý'G @  ÏÏ íô?d èu³±¼¤ @  ÏÐ îô?d (v.õe @  ÏÑ ïô?d hv¦$ @  ÏÒ ðô?d ¨v5S&q @  ÏÓ ñô?d ève'å @  ÏÔ òô?d (wÐ-«  @  ÏÕ óô?d hw>, @  ÏÖ ôô?d ¨w6ËÒ @  Ï× õô?d èwµÑ @  ÏØ öô?d (x<ù9Ì @  ÏÙ ÷ô?d hxbúcÊ @  ÏÚ øô?d ¨xBa4 @  ÏÛ ùô?d èxw9`  @  ÏÜ úô?d (y§qìH @  ÏÝ ûô?d hyabUi @  ÏÞ üô?d ¨yA—W— @  Ïß ýô?d èyÃýëÄ @  Ïà þô?d (z^¹K @  Ïá ÿô?d hzj¬^¼ @  Ïâ õ?d€ ¨z!°¬ @  Ð õ?d èzõrù @  Ð õ?d ({%:uù @  Ð õ?d h{&`75 @  Ð õ?d ¨{•5Ë @  Ð õ?d è{öêϲ @  Ð õ?d (|ï¤<½ @  Ð õ?d h|9Á @  Ð õ?d ¨|_à;? @  Ð  õ?d è|¯ŸÁF @  Ð  õ?d (}×M® @  Ð  õ?d h}|b @  Ð  õ?d ¨}\x œ @  Ð  õ?d è}¬÷å @  Ð õ?d (~1CW$ @  Ð õ?d h~iT @  Ð õ?d ¨~Iö ª @  Ð õ?d è~¹‰öÓ @  Ð õ?d (iÁz; @  Ð õ?d hj›8÷ @  Ð õ?d ¨uЀ'Jn:  @  Ð õ?d èºÀp @  Ð õ?d @€Ô¯" @  Ð õ?d €€æz2X @  Ð õ?d À€dë%† @  Ð õ?d ÆMDÉ @  Ð õ?d @DÜS @  Ð õ?d €åâû @  Ð õ?d Àgs% @  Ð õ?d ‚ˆÙ^C @  Ð õ?d @‚ HI @  Ð õ?d €‚|Ý¡ @  Ð  õ?d À‚þL  @  Ð! !õ?d ƒ\êm0 @  Ð" "õ?d @ƒÞ{zî @  Ð# #õ?d €ƒE- @  Ð$ $õ?d ÀƒýÔ:Ü @  Ð% %õ?d „–t$t @  Ð& &õ?d @„å3ª @  Ð' 'õ?d €„&0#ö @  Ð( (õ?d À„¤¡4( @  Ð) )õ?d …Ug @  Ð* *õ?d @…„–B¹ @  Ð+ +õ?d €…%¨U @  Ð, ,õ?d À…§9‹ @  Ð- -õ?d †H“Oí @  Ð. .õ?d @†ÊX3 @  Ð/ /õ?d €†0&c @  Ð0 0õ?d À†²·½ @  Ð1 1õ?d ‡bò @  Ð2 2õ?d @‡’€u, @  Ð3 3õ?d €‡3¾"À @  Ð4 4õ?d À‡±/5 @  Ð5 5õ?d ˆ÷>T¤ @  Ð6 6õ?d @ˆu¯Cz @  Ð7 7õ?d €ˆGzS& @  Ð8 8õ?d ÀˆÅëDø @  Ð9 9õ?d ‰gM%· @  Ð: :õ?d @‰åÜ2i @  Ð; ;õ?d €‰Dâe… @  Ð< <õ?d À‰Æsr[ @  Ð= =õ?d Š)Ù?= @  Ð> >õ?d @Š«H(ã @  Ð? ?õ?d €ŠƒŠi\ @  Ð@ @õ?d ÀŠ~‚ @  ÐA Aõ?d ‹£½Í @  ÐB Bõ?d @‹!, @  ÐC Cõ?d €‹€_ÿ @  ÐD Dõ?d À‹ƒH! @  ÐE Eõ?d Œi#V‰ @  ÐF Fõ?d @Œë²AW @  ÐG Gõ?d €ŒÙgQ  @  ÐH Hõ?d ÀŒ[öFÕ @  ÐI Iõ?d ùP'š @  ÐJ Jõ?d @{Á0D @  ÐK Kõ?d €Úÿg¨ @  ÐL Lõ?d ÀXnpv @  ÐM Mõ?d Ž·Ä= @  ÐN Nõ?d @Ž5U*Î @  ÐO Oõ?d €ŽÏqfž @  ÐP Põ?d ÀŽMàq@ @  ÐQ Qõ?d ïF @  ÐR Rõ?d @m×Ñ @  ÐS Sõ?d €ÌéP= @  ÐT Tõ?d ÀNxGã @  ÐU Uõ?d ‚Hö @  ÐV Võ?d @Ù( @  ÐW Wõ?d €2 t @  ÐX Xõ?d À°ª @  ÐY Yõ?d ‘;gå @  ÐZ Zõ?d @‘ªp; @  Ð[ [õ?d €‘1”'× @  Ð\ \õ?d À‘³0  @  Ð] ]õ?d ’\¯}o @  Ð^ ^õ?d @’Þ>j± @  Ð_ _õ?d €’¨«8 @  Ð` `õ?d À’*:/S @  Ða aõ?d “ˆœN @  Ðb bõ?d @“ Y @  Ðc cõ?d €“«3. @  Ðd dõ?d À“)¢ð @  Ðe eõ?d ”BX @  Ðf fõ?d @”À“† @  Ðg gõ?d €”òFÚ @  Ðh hõ?d À”p× @  Ði iõ?d •ÒqvK @  Ðj jõ?d @•Pàa• @  Ðk kõ?d €•ñÞ6y @  Ðl lõ?d À•sO!§ @  Ðm mõ?d –œålÁ @  Ðn nõ?d @–t{ @  Ðo oõ?d €–äP7O @  Ðp põ?d À–fÁ ‘ @  Ðq qõ?d —ÄgAÞ @  Ðr rõ?d @—FöV @  Ðs sõ?d €—çÈì @  Ðt tõ?d À—eY2 @  Ðu uõ?d ˜#Hwˆ @  Ðv võ?d @˜¡Ù`V @  Ðw wõ?d €˜“ p  @  Ðx xõ?d À˜gÔ @  Ðy yõ?d ™³;› @  Ðz zõ?d @™1ªE @  Ð{ {õ?d €™”F© @  Ð| |õ?d À™Qw @  Ð} }õ?d šý¯ @  Ð~ ~õ?d @š> Ï @  Ð õ?d €š©l.Ó @  Ð€ €õ?d Àš+ý9  @  Ð õ?d ›‰[XB @  Ð‚ ‚õ?d @› ÊOœ @  Ðƒ ƒõ?d €›ªôp @  Ð„ „õ?d À›(e® @  Ð… …õ?d œCÅ @  Ð† †õ?d @œÁTØ @  Ð‡ ‡õ?d €œó„ @  Ðˆ ˆõ?d ÀœqZ @  Ð‰ ‰õ?d Ó¶` @  ÐŠ Šõ?d @Q'wË @  Ð‹ ‹õ?d €ð ' @  ÐŒ Œõ?d Àrˆ7ù @  Ð õ?d ž"zŸ @  ÐŽ Žõ?d @ž³mA @  Ð õ?d €žå—! @  Ð õ?d Àžg6Ï @  Ð‘ ‘õ?d ŸÅ W€ @  Ð’ ’õ?d @ŸG1@^ @  Ð“ “õ?d €Ÿæ² @  Ð” ”õuР?d ÀŸdžl @  Ð• •õ?d  g{3­ @  Ð– –õ?d X åê$s @  Ð— —õ?d ˜ ×?4/ @  Ð˜ ˜õ?d Ø U®#ñ @  Ð™ ™õ?d ¡÷B¾ @  Ðš šõ?d X¡u™U` @  Ð› ›õ?d ˜¡Ô§Œ @  Ðœ œõ?d Ø¡V6R @  Ð õ?d ¢¹œX4 @  Ðž žõ?d X¢; Oê @  ÐŸ Ÿõ?d ˜¢M˜Ö @  Ð   õ?d Ø¢Ï  @  Ð¡ ¡õ?d £–ÁPG @  Ð¢¢õ?d X£PG™ @  Ð££õ?d ˜£µnu @  Ð¤¤õ?d Ø£7ÿ« @  Ð¥¥õ?d ¤\_ @  Ð¦¦õ?d X¤ÞÎÝ @  Ð§§õ?d ˜¤ì @  Ð¨¨õ?d ؤnŠ _ @  Ð©©õ?d ¥Ì,h @  Ðªªõ?d X¥N½Î @  Ð««õ?d ˜¥ïƒ(" @  Ð¬¬õ?d Ø¥m?ü @  Ð­­õ?d ¦‚¸rš @  Ð®®õ?d X¦)eD @  Ð¯¯õ?d ˜¦ú ) @  Ð°°õ?d ئxœ>Ê @  Ð±±õ?d §Ú:_… @  Ð²²õ?d X§X«H[ @  Ð³³õ?d ˜§ù•· @  Ð´´õ?d ا{i @  Ðµµõ?d ¨=iÓ @  Ð¶¶õ?d X¨¿„~  @  Ð··õ?d ˜¨QnQ @  Ð¸¸õ?d بÀy @  Ð¹¹õ?d ©­fÀ @  Ðººõ?d X©/÷ @  Ð»»õ?d ˜©ŽÉXò @  Ð¼¼õ?d Ø© XO, @  Ð½½õ?d ªãòJ @  Ð¾¾õ?d Xªac” @  Ð¿¿õ?d ˜ªI¡T+ @  ÐÀÀõ?d تË0Cõ @  ÐÁÁõ?d «i–"º @  ÐÂÂõ?d X«ë5d @  ÐÃÃõ?d ˜«J9bˆ @  ÐÄÄõ?d Ø«ȨuV @  ÐÅÅõ?d ¬£kþ @  ÐÆÆõ?d X¬!™|  @  ÐÇÇõ?d ˜¬Ll| @  ÐÈÈõ?d ج‘Ý{¢ @  ÐÉÉõ?d ­3{í @  ÐÊÊõ?d X­±ê 3 @  ÐËËõ?d ˜­ÔZß @  ÐÌÌõ?d Ø­’EM @  ÐÍÍõ?d ®}ïg @  ÐÎÎõ?d X®ÿ~¹ @  ÐÏÏõ?d ˜®Z[é @  ÐÐÐõ?d Ø®‡ËL7 @  ÐÑÑõ?d ¯%m-x @  ÐÒÒõ?d X¯§ü:¦ @  ÐÓÓõ?d ˜¯ÂmJ @  ÐÔÔõ?d د„Sz” @  ÐÕÕõ?d °Hc+ @  ÐÖÖõ?d X°Êò<_ @  Ð××õ?d ˜°ø', @  ÐØØõ?d ذz¶;Ý @  ÐÙÙõ?d ±ØZ’ @  ÐÚÚõ?d X±ZML @  ÐÛÛõ?d ˜±û¿  @  ÐÜÜõ?d رy. ~ @  ÐÝÝõ?d ²–„@ @  ÐÞÞõ?d X²WÆ @  Ðßßõ?d ˜²b€ú @  Ðààõ?d زà$ @  Ðááõ?d ³B·sk @  Ðââõ?d€ X³´åx @  Ñãõ?d ˜³ôšgÖ @  Ñäõ?d سv p @  Ñåõ?d ´Øâ•M @  Ñæõ?d X´Zs‚“ @  Ñçõ?d ˜´¦͵ @  Ñèõ?d Ø´$…Úk @  Ñéõ?d µH‘ä^ @  Ñêõ?d XµÊó€ @  Ñ ëõ?d ˜µ®w_ @  Ñ ìõ?d ص,æH_ @  Ñ íõ?d ¶þÔ @  Ñ îõ?d X¶„”é  @  Ñ ïõ?d ˜¶£ÄÀ @  Ñðõ?d ضŸ2Ó @  Ññõ?d ·^‡ÓË @  Ñòõ?d X·ÜÄ @  Ñóõ?d ˜·¸ah @  Ñôõ?d Ø·:ðÊ @  Ñõõ?d ¸¹¨å @  Ñöõ?d X¸;9òC @  Ñ÷õ?d ˜¸Ç^½e @  Ñøõ?d ظEϪ» @  Ñùõ?d ¹)Û”Ž @  Ñúõ?d X¹«JƒP @  Ñûõ?d ˜¹Ï=/Q @  Ñüõ?d عM¬8 @  Ñýõ?d ºgOŽ @  Ñþõ?d XºåÞ™Ú @  Ñÿõ?d ˜ºÁ¬f @  Ñö?d غC»¸ @  Ñö?d »“¯œÝ @  Ñ ö?d X»>‹ @  Ñ!ö?d ˜»uI' @  Ñ"ö?d Ø»÷Ø0Ü @  Ñ#ö?d ¼Y1Õ™ @  Ñ$ö?d X¼Û ÂG @  Ñ%ö?d ˜¼'Ça @  Ñ&ö?d ؼ¥Vš¿ @  Ñ' ö?d ½ÉB¤Š @  Ñ( ö?d X½KÓ³T @  Ñ) ö?d ˜½/¤U @  Ñ* ö?d ؽ­5‹ @  Ñ+ ö?d ¾‡Ö¾ @  Ñ,ö?d X¾G©Þ @  Ñ-ö?d ˜¾œp„ @  Ñ.ö?d ؾá“Ê @  Ñ/ö?d ¿ßT“ @  Ñ0ö?d X¿]Å„Á @  Ñ1ö?d ˜¿9²(À @uÐÀ  Ñ2ö?d Ø¿»#? @  Ñ3ö?d 0Àhtx @  Ñ4ö?d pÀêåoØ @  Ñ5ö?d °À‚ þ @  Ñ6ö?d ðÀ”7  @  Ñ7ö?d 0Áø  @  Ñ8ö?d pÁz–Ë @  Ñ9ö?d °Áá²Ê @  Ñ:ö?d ðÁœp¥ @  Ñ;ö?d 0¶“Ÿ @  Ñ<ö?d pÂ4A @  Ñ=ö?d °Â0‚W @  Ñ> ö?d 𲉠@  Ñ?!ö?d 0Ã̧&~ @  Ñ@"ö?d pÃN61  @  ÑA#ö?d °Ã*A¡ @  ÑB$ö?d ðèЊ @  ÑC%ö?d 0Ä9o: @  ÑD&ö?d pÄ„¨xä @  ÑE'ö?d °ÄxÏ7 @  ÑF(ö?d ðÄú^  @  ÑG)ö?d 0Å–J) @  ÑH*ö?d pÅÛ ÷ @  ÑI+ö?d °Åp¬¥ö @  ÑJ,ö?d ðÅò=²( @  ÑK-ö?d 0ÆØÞ£ @  ÑL.ö?d pÆZO} @  ÑM/ö?d °ÆÃx>· @  ÑN0ö?d ðÆAé)i @  ÑO1ö?d 0Ç€\)¼ @  ÑP2ö?d pÇÍ>b @  ÑQ3ö?d °Çfº’c @  ÑR4ö?d ðÇä+…½ @  ÑS5ö?d 0Ègsê @  ÑT6ö?d pÈåâ4 @  ÑU7ö?d °È…G @  ÑV8ö?d ðÈ›PÌ @  ÑW9ö?d 0É÷nù @  ÑX:ö?d pÉu‘y' @  ÑY;ö?d °ÉæÕ& @  ÑZ<ö?d ðÉ“wÂø @  Ñ[=ö?d 0ʹ”ts @  Ñ\>ö?d pÊ;c­ @  Ñ]?ö?d °ÊÏÕbª @  Ñ^@ö?d ðÊMDut @  Ñ_Aö?d 0Ë÷R @  Ñ`Bö?d pËfEÏ @  ÑaCö?d °Ë{éÎ @  ÑbDö?d ðËù€þ @  ÑcEö?d 0ÌWiU @  ÑdFö?d pÌÕø ‹ @  ÑeGö?d °Ì)ŸC­ @  ÑfHö?d ðÌ«Ts @  ÑgIö?d 0ÍÇjF @  ÑhJö?d pÍE‹}˜ @  ÑiKö?d °Í!üÑ™ @  ÑjLö?d ðÍ£mÆG @  ÑkMö?d 0ΉŽpÌ @  ÑlNö?d pÎ g @  ÑmOö?d °Î’(JØ @  ÑnPö?d ðι] @  ÑoQö?d 0ÏÑ ]Ó @  ÑpRö?d pÏSJ  @  ÑqSö?d °Ï7êæ  @  ÑrTö?d ðϵ{ñÒ @  ÑsUö?d 0м[* @  ÑtVö?d pÐ>“Lô @  ÑuWö?d °ÐÂôÒ @  ÑvXö?d ðÐ@e  @  ÑwYö?d 0Ñ,q*9 @  ÑxZö?d pÑ®à=ç @  Ñy[ö?d °ÑÊ—‘æ @  Ñz\ö?d ðÑH†8 @  Ñ{]ö?d 0Òbå0³ @  Ñ|^ö?d pÒàt'm @  Ñ}_ö?d °Òäô3{ @  Ñ~`ö?d ðÒfe$¥ @  Ñaö?d 0Óû‡5c @  Ñ€bö?d pÓy"½ @  Ñcö?d °Óa޼ @  Ñ‚dö?d ðÓŸð™b @  Ñƒeö?d 0Ô1|' @  Ñ„fö?d pÔ³ˆkù @  Ñ…gö?d °ÔOï$ß @  Ñ†hö?d ðÔÍ~3 @  Ñ‡iö?d 0Õ¡j 4 @  Ñˆjö?d pÕ#ûê @  Ñ‰kö?d °ÕGŒ¶ë @  ÑŠlö?d ðÕÅ¡5 @  Ñ‹mö?d 0Öïþ¾ @  ÑŒnö?d pÖmo` @  Ñoö?d °ÖôX-ª @  ÑŽpö?d ðÖvÉ:t @  Ñqö?d 0×·|:¡ @  Ñrö?d p×5í- @  Ñ‘sö?d °×Qš~ @  Ñ’tö?d ð×Ó –  @  Ñ“uö?d 0ØPS ÷ @  Ñ”vö?d pØÒÂ) @  Ñ•wö?d °Ø.¥T @  Ñ–xö?d ðج4CÑ @  Ñ—yö?d 0ÙÀ }ä @  Ñ˜zö?d pÙB±j: @  Ñ™{ö?d °Ù&ÆÆ; @  Ñš|ö?d ðÙ¤WÑå @  Ñ›}ö?d 0ÚŽ´gn @  Ñœ~ö?d pÚ %p° @  Ñö?d °Úå3%% @  Ñž€ö?d ðÚg¢2û @  ÑŸö?d 0Û·ž @  Ñ ‚ö?d pÛ5€@ @  Ñ¡ƒö?d °ÛQ÷®A @  Ñ¢„ö?d ðÛÓf¹Ÿ @  Ñ£…ö?d 0Ü}\Ú @  Ñ¤†ö?d pÜÿK @  Ñ¥‡ö?d °Üy" @  Ñ¦ˆö?d ðÜèü @  Ñ§‰ö?d 0Ýíü-É @  Ñ¨Šö?d pÝom: @  Ñ©‹ö?d °Ý – @  ÑªŒö?d ð݉‹È @  Ñ«ö?d 0Þ£h7C @  Ñ¬Žö?d pÞ!ù  @  Ñ­ö?d °Þ¸Î W @  Ñ®ö?d ðÞ:_‰ @  Ñ¯‘ö?d 0ßûê\ @  Ñ°’ö?d pßy{ ‚ @  Ñ±“ö?d uÐà/°ß ¡ƒ @  Ñ²”ö?d ðߟ¶] @  Ñ³•ö?d Hà1žþá @  Ñ´–ö?d ˆàkü @  Ñµ—ö?d ÈàOh¦ @  Ñ¶˜ö?d ០*ñ @  Ñ·™ö?d Há¡íò @  Ñ¸šö?d ˆá  @  Ñ¹›ö?d ÈáG 4- @  Ñºœö?d âÚO”ì @  Ñ»ö?d Hâïy•x @  Ñ¼žö?d ˆâÏŒ—† @  Ñ½Ÿö?d Èâih–° @  Ñ¾ ö?d ã¹ X @  Ñ¿¡ö?d Hã•M ™ @  ÑÀ¢ö?d ˆãµ¸¢g @  ÑÁ£ö?d Èãs«F @  Ñ¤ö?d äjåèI @  ÑÃ¥ö?d Hä_ÓéÝ @  ÑĦö?d ˆä&ë# @  Ñŧö?d Èä!%±% @  Ñƨö?d åñm=Í @  ÑÇ©ö?d HåÏ ˜Î @  ÑȪö?d ˆåïUš0 @  ÑÉ«ö?d Èå)F# @  Ñʬö?d 洃Р@  ÑË­ö?d Hæ4‚D @  ÑÌ®ö?d ˆæ¡Á€º @  Ñͯö?d Èæš’¸P @  Ñΰö?d çJÚ4¸ @  Ñϱö?d HçÙ¶¯[ @  Ñвö?d ˆçùC­¥ @  Ñѳö?d Èç?P„ @  ÑÒ´ö?d è ¯˜™ @  ÑÓµö?d Hè>™™  @  ÑÔ¶ö?d ˆèl›ó @  ÑÕ·ö?d Èè@oÁõ @  ÑÖ¸ö?d é'M @  Ñ×¹ö?d Hé®êè @  Ñغö?d ˆéŽêà @  ÑÙ»ö?d ÈéH SÁ @  ÑÚ¼ö?d êÕHó @  ÑÛ½ö?d Hêà~ò” @  Ñܾö?d ˆêÀ‹ðj @  ÑÝ¿ö?d Èê–?äM @  ÑÞÀö?d ëFwh¥ @  ÑßÁö?d HëÄÔö @  ÑàÂö?d ˆëäèÖ @  ÑáÃö?d Èë"ûo) @  ÑâÄö?d€ ìúòk& @  ÒÅö?d Hì.…"› @  ÒÆö?d ˆìp e @  ÒÇö?d Èì•:Ž @  ÒÈö?d íEr f @  ÒÉö?d Híµ ÷ @  ÒÊö?d ˆí•øõá @  ÒËö?d ÈíYº @  ÒÌö?d î³{ @  Ò Íö?d HîðbI @  Ò Îö?d ˆîЗKü @  Ò Ïö?d Èî.ˆû @  Ò Ðö?d ïþÅ @  Ò Ñö?d Hïºþj @  ÒÒö?d ˆï.Oü” @  ÒÓö?d Èï‹O$/ @  ÒÔö?d ð5‘˜ @  ÒÕö?d HðÅîbä @  ÒÖö?d ˆðå` @  Ò×ö?d Èð~QÁñ @  ÒØö?d ñ®M @  ÒÙö?d Hñ^f·` @  ÒÚö?d ˆñ~“µž @  ÒÛö?d Èñv2SÅ @  ÒÜö?d òëvó @  ÒÝö?d Hò } @  ÒÞö?d ˆò;ü ƒ @  Òßö?d ÈòXQñX @  Òàö?d óˆ}° @  Òáö?d Hóxf‡É @  Òâö?d ˆóX“…7 @  Òãö?d Èóì•z< @  Ò äö?d ôõÛ‰3 @  Ò!åö?d Hô¤sJ @  Ò"æö?d ˆô%Qq´ @  Ò#çö?d Èô¾Ð_ @  Ò$èö?d õnS\· @  Ò%éö?d Hõž,¦Î @  Ò&êö?d ˆõ¾Ù¤0 @  Ò'ëö?d Èõ¶xBk @  Ò(ìö?d ö+<⪠@  Ò)íö?d HöÛCÓ @  Ò*îö?d ˆöû¶- @  Ò+ïö?d Èö¬Ù* @  Ò,ðö?d ÷ÕäU @  Ò-ñö?d H÷%›¯» @  Ò.òö?d ˆ÷n­E @  Ò/óö?d È÷ nuþ @  Ò0ôö?d ø”‘ùã @  Ò1õö?d Hødîš @  Ò2öö?d ˆøDd @  Ò3÷ö?d ÈøßQ  @  Ò4øö?d ù,g @  Ò5ùö?d HùÿfÖ @  Ò6úö?d ˆùß“Ôà @  Ò7ûö?d Èù×22» @  Ò8üö?d úJv’z @  Ò9ýö?d Húº h @  Ò:þö?d ˆúšüjý @  Ò;ÿö?d Èúk „© @  Ò<÷?d û»èA @  Ò=÷?d HûK—ò8 @  Ò>÷?d ˆûkbðÆ @  Ò?÷?d Èûqc _ @  Ò@÷?d üh-úP @  ÒA÷?d Hü˜R) @  ÒB÷?d ˆü¸§× @  ÒC÷?d Èü#í£< @  ÒD÷?d ýó¥/Ô @  ÒE ÷?d HýÚÕ­ @  ÒF ÷?d ˆý#/×S @  ÒG ÷?d Èý+Ž1 @  ÒH ÷?d þ¶Ê‘É @  ÒI ÷?d HþFµk° @  ÒJ÷?d ˆþf@iN @  ÒK÷?d Èþ˜ZªI @  ÒL÷?d ÿH&¡ @  ÒM÷?d Hÿ¸mÜØ @  ÒN÷?d ˆÿ˜˜Þ& @  ÒOuÐ÷?d Èÿ=˜ @  ÒP÷?d r,.l @  ÒQ÷?d `‚SÔ @  ÒR÷?d  ¢¦Öë @  ÒS÷?d à9ìw @  ÒT÷?d é¤ûè @  ÒU÷?d `Û‘ @  ÒV÷?d  9.o @  ÒW÷?d à1å4 @  ÒX÷?d ¬ËEõ @  ÒY÷?d `\´¿Œ @  ÒZ÷?d  |A½r @  Ò[÷?d àìG© @  Ò\ ÷?d ϤËA @  Ò]!÷?d `?Û18 @  Ò^"÷?d  .3Æ @  Ò_#÷?d à«(ÌÍ @  Ò`$÷?d ²f? @  Òa%÷?d `BÅ» @  Òb&÷?d  bìÇE @  Òc'÷?d àù¦f® @  Òd(÷?d )îêF @  Òe)÷?d `Ù‘? @  Òf*÷?d  ùdÁ @  Òg+÷?d àñÅôš @  Òh,÷?d lT[ @  Òi-÷?d `œþ®" @  Òj.÷?d  ¼ ¬Ü @  Òk/÷?d àBoÛ @  Òl0÷?d ’Yã3 @  Òm1÷?d `b&J @  Òn2÷?d  BÓ´ @  Òo3÷?d àçÓà @  Òp4÷?d Ó,O @  Òq5÷?d `#Sµk @  Òr6÷?d  ¦·• @  Òs7÷?d à˜ì~ @  Òt8÷?d H¤š– @  Òu9÷?d ` ¸Û`ï @  Òv:÷?d   ˜.b @  Òw;÷?d à „J @  Òx<÷?d  Ë$‹ @  Òy=÷?d ` ý´Þò @  Òz>÷?d   ÝAÜ  @  Ò{?÷?d à N¼3Æ @  Ò|@÷?d žô¿. @  Ò}A÷?d ` n‹EW @  Ò~B÷?d   N~G© @  ÒC÷?d à ·)Ž @  Ò€D÷?d ®g} @  ÒE÷?d ` ^‡w @  Ò‚F÷?d   ~í…‰ @  ÒƒG÷?d à å§$b @  Ò„H÷?d 5見 @  Ò…I÷?d ` ÅRó @  Ò†J÷?d   åeP  @  Ò‡K÷?d à íĶV @  ÒˆL÷?d p€— @  Ò‰M÷?d `€ÿìî @  ÒŠN÷?d    î @  Ò‹O÷?d à^- @  ÒŒP÷?d ŽX¡ÿ @  ÒQ÷?d `~'[† @  ÒŽR÷?d  ^ÒYx @  ÒS÷?d àûÒà @  ÒT÷?d E =q @  Ò‘U÷?d `µsÇ @  Ò’V÷?d  •†Åö @  Ò“W÷?d àÌd @  Ò”X÷?d Þ„èõ @  Ò•Y÷?d `.ûŒ @  Ò–Z÷?d  r @  Ò—[÷?d à¯ö) @  Ò˜\÷?d ›ëVè @  Ò™]÷?d `k”¬‘ @  Òš^÷?d  Ka®o @  Ò›_÷?d à(ÌT´ @  Òœ`÷?d ø„Ø\ @  Òa÷?d `û"% @  Òžb÷?d  ( Û @  ÒŸc÷?d àœßÐ @  Ò d÷?d …F,ß @  Ò¡e÷?d `u9Ö¦ @  Ò¢f÷?d  UÌÔX @  Ò£g÷?d àΆu³ @  Ò¤h÷?d Îù[ @  Ò¥i÷?d `î±" @  Ò¦j÷?d  ÎDÜ @  Ò§k÷?d àÆåç‡ @  Ò¨l÷?d [¡GF @  Ò©m÷?d `«Þ½? @  Òªn÷?d  ‹+¿Á @  Ò«o÷?d àu1|Æ @  Ò¬p÷?d ¥yð. @  Ò­q÷?d `U W @  Ò®r÷?d  uó© @  Ò¯s÷?d àÐóÐ @  Ò°t÷?d ä \ @  Ò±u÷?d `s¦v @  Ò²v÷?d  4†¤ˆ @  Ò³w÷?d à¯Ìc @  Ò´x÷?d „‰‹ @  Òµy÷?d `ûsò @  Ò¶z÷?d  ¯q  @  Ò·{÷?d ৯—W @  Ò¸|÷?d :ë7– @  Ò¹}÷?d `Ê”Íï @  Òº~÷?d  êaÏ @  Ò»÷?d àdZtI @  Ò¼€÷?d ´ø¡ @  Ò½÷?d `DmØ @  Ò¾‚÷?d  d˜& @  Ò¿ƒ÷?d à~™ù¿ @  ÒÀ„÷?d g× ° @  ÒÁ…÷?d `—¨ðÉ @  Ò†÷?d  ·]ò7 @  ÒÇ÷?d à,SÜ @  ÒĈ÷?d ü_ß4 @  Òʼn÷?d ` %M @  ÒÆŠ÷?d  ,Õ'³ @  ÒÇ‹÷?d à$tÁè @  ÒÈŒ÷?d ¹0a) @  ÒÉ÷?d `IO›P @  ÒÊŽ÷?d  iº™® @  ÒË÷?d à— Z© @  ÒÌ÷?d GèÖA @  ÒÍ‘÷?d `·—,8 @  ÒÎ’÷?d  —b.ÆuÐ  @  ÒÏ“÷?d à2bö} @  ÒД÷?d 8 Ci( @  ÒÑ•÷?d x ³Òb @  ÒÒ–÷?d ¸ “ãМ @  ÒÓ—÷?d ø ©qw @  ÒÔ˜÷?d 8!ØáýŸ @  ÒÕ™÷?d x!(žæ @  ÒÖš÷?d ¸!k @  Ò×›÷?d ø!ÊãC @  ÒØœ÷?d 8"ŽC‚ @  ÒÙ÷?d x"mñ¹û @  ÒÚž÷?d ¸"M» @  ÒÛŸ÷?d ø".©AÞ @  ÒÜ ÷?d 8#þáÍ6 @  ÒÝ¡÷?d x#ž7O @  ÒÞ¢÷?d ¸#.k5± @  Òߣ÷?d ø#šmʺ @  Òà¤÷?d 8$ƒ#9µ @  Òá¥÷?d x$s\ÃÌ @  Òâ¦÷?d€ ¸$'jÝ” @  Ó§÷?d ø$]a4V @  Ó¨÷?d 8%)¸¾ @  Ó©÷?d x%¸¹* @  Óª÷?d ¸%˜ê»Ô @  Ó«÷?d ø%^ùõ @  Ó¬÷?d 8&ý¢4 @  Ó­÷?d x&ýp7 @  Ó®÷?d ¸&Ý…É @  Ó ¯÷?d ø&æÖ=# @  Ó °÷?d 8'6ž±Ë @  Ó ±÷?d x'¨°_ @  Ó ²÷?d ¸'#]²¡ @  Ó ³÷?d ø'åN € @  Ó´÷?d 8(ѱ‡ @  Óµ÷?d x(BÝ~ @  Ó¶÷?d ¸(b(€ @  Ó·÷?d ø(<+D† @  Ó¸÷?d 8)ìcÈn @  Ó¹÷?d x)ÙUÉú @  Óº÷?d ¸)ù Ë @  Ó»÷?d ø)?³r% @  Ó¼÷?d 8*¢÷Òä @  Ó½÷?d x*œ:wç @  Ó¾÷?d ¸*¼Ïu @  Ó¿÷?d ø*ê{a> @  ÓÀ÷?d 8+:3íÖ @  ÓÁ÷?d x+ìB @  ÓÂ÷?d ¸+/ðî¼ @  ÓÃ÷?d ø+éãW @  ÓÄ÷?d 8,ð­¤’ @  ÓÅ÷?d x,rÇÁ @  Ó Æ÷?d ¸,R2? @  Ó!Ç÷?d ø, 1@9 @  Ó"È÷?d 8-ÜyÌÑ @  Ó#É÷?d x-éOÍE @  Ó$Ê÷?d ¸-ɺϻ @  Ó%Ë÷?d ø-©vš @  Ó&Ì÷?d 8.’íÖ[ @  Ó'Í÷?d x.¬ sX @  Ó(Î÷?d ¸.ŒÕq¦ @  Ó)Ï÷?d ø.·†IL @  Ó*Ð÷?d 8/gÎŤ @  Ó+Ñ÷?d x/RøÄ0 @  Ó,Ò÷?d ¸/r ÆÎ @  Ó-Ó÷?d ø/´ï @  Ó.Ô÷?d 80 ÀÃ] @  Ó/Õ÷?d x0™¬X¾ @  Ó0Ö÷?d ¸0¹YZ@ @  Ó1×÷?d ø0çZF @  Ó2Ø÷?d 817Œ® @  Ó3Ù÷?d x1$: @  Ó4Ú÷?d ¸1"ÑÄ @  Ó5Û÷?d ø1äÂ6å @  Ó6Ü÷?d 82y†–$ @  Ó7Ý÷?d x2GK3' @  Ó8Þ÷?d ¸2g¾1Ù @  Ó9ß÷?d ø2ÁZ0ï @  Ó:à÷?d 83¼ @  Ó;á÷?d x3$$½“ @  Ó<â÷?d ¸3Ñ¿m @  Ó=ã÷?d ø3ÂÂL @  Ó>ä÷?d 84ÛŒõC @  Ó?å÷?d x4÷áO‚ @  Ó@æ÷?d ¸4×M| @  ÓAç÷?d ø4‰z @  ÓBè÷?d 85Y_›’ @  ÓCé÷?d x5liš @  ÓDê÷?d ¸5Lœ˜ø @  ÓEë÷?d ø5Š!Ù @  ÓFì÷?d 86Ë @  ÓGí÷?d x6)$ @  ÓHî÷?d ¸6 ó&å @  ÓIï÷?d ø62  @  ÓJð÷?d 87âè’ç @  ÓKñ÷?d x7×Þ“s @  ÓLò÷?d ¸7÷+‘ @  ÓMó÷?d ø718(¬ @  ÓNô÷?d 88Ǥ± @  ÓOõ÷?d x8–«?R @  ÓPö÷?d ¸8¶^=¬ @  ÓQ÷÷?d ø8è]gª @  ÓRø÷?d 898ëB @  ÓSù÷?d x9 #êÖ @  ÓTú÷?d ¸9-Öè( @  ÓUû÷?d ø9ëÅQ  @  ÓVü÷?d 8:vñÈ @  ÓWý÷?d x:HLTË @  ÓXþ÷?d ¸:h¹V5 @  ÓYÿ÷?d ø:¹Ÿrc @  ÓZø?d 8;i×þ‹ @  Ó[ø?d x;\áÿ @  Ó\ø?d ¸;|ýá @  Ó]ø?d ø;ºDÀ @  Ó^ø?d 8<£I·Ï @  Ó_ø?d x<!# œ @  Ó`ø?d ¸<Ö b @  Óaø?d ø<_ÕSd @  Óbø?d 8=ߌ @  Óc ø?d x=º«Þ @  Ód ø?d ¸=š^Üæ @  Óe ø?d ø=\MeÇ @  Óf ø?d 8>Á Å @  Óg ø?d x>ÿÄ` @  Óhø?d ¸>ß1bû @  Óiø?d ø>äbZ @  Ójø?d 8?4*Öù @  Ókø?d x?×m @  Ólø?duÐ@7 ¸?!éÕ“ @  Ómø?d ø?çúl² @  Ónø?d P@$VÖŽ @  Óoø?d @^XM @  Ópø?d Ð@—ÏO“ @  Óqø?d A›Ž£ @  Órø?d PA„™} @  Ósø?d AŽÖÉ @  Ótø?d ÐA Gš @  Óuø?d BÕ”) @  Óvø?d PBWƒ÷ @  Ówø?d B˹3Ô @  Óxø?d ÐBI($  @  Óyø?d C½¾  @  Óz ø?d PC?„©Ô @  Ó{!ø?d C¨Ö½` @  Ó|"ø?d ÐC*Gª¾ @  Ó}#ø?d Dw‹÷N @  Ó~$ø?d PDõà @  Ó%ø?d D˜E@ @  Ó€&ø?d ÐDÔhž @  Ó'ø?d E©® @  Ó‚(ø?d PE”Ÿ¾p @  Óƒ)ø?d EͪÄ @  Ó„*ø?d ÐE\½ @  Ó…+ø?d FXš³$ @  Ó†,ø?d PFÚ ¤ú @  Ó‡-ø?d FF¢Ù @  Óˆ.ø?d ÐFÄ3 @  Ó‰/ø?d G­¹ Û @  ÓŠ0ø?d PG/(· @  Ó‹1ø?d G¸z£± @  ÓŒ2ø?d ÐG:ë´o @  Ó3ø?d HJ–– @  ÓŽ4ø?d PHÈS @  Ó5ø?d Hù @  Ó6ø?d ÐH{žN @  Ó‘7ø?d IwDÙ~ @  Ó’8ø?d PIõÕΠ @  Ó“9ø?d Ib‡Ú @  Ó”:ø?d ÐIàÍÊ @  Ó•;ø?d J9ÐÃô @  Ó–<ø?d PJ»AÔ* @  Ó—=ø?d J'èd  @  Ó˜>ø?d ÐJ¥ys× @  Ó™?ø?d K¡üÆ @  Óš@ø?d PK#…ë @  Ó›Aø?d K´×ÿ¬ @  ÓœBø?d ÐK6Fèr @  ÓCø?d Lkе‚ @  ÓžDø?d PLé¢\ @  ÓŸEø?d LÉ / @  Ó Fø?d ÐLK„ñ @  Ó¡Gø?d MG^ÝÁ @  Ó¢Hø?d PMÅÏÊ @  Ó£Iø?d MRÞ« @  Ó¤Jø?d ÐMÐ Éu @  Ó¥Kø?d N ÊÇK @  Ó¦Lø?d PN‹[Е @  Ó§Mø?d Nò`¶ @  Ó¨Nø?d ÐN•cwh @  Ó©Oø?d OüéÔ´ @  ÓªPø?d PO~xÃj @  Ó«Qø?d Oé*×Þ @  Ó¬Rø?d ÐOk»À @  Ó­Sø?d P‘çÒM @  Ó®Tø?d PPvÅ“ @  Ó¯Uø?d P"~KP @  Ó°Vø?d ÐP ï\Ž @  Ó±Wø?d Q¬5¾ @  Ó²Xø?d PQ.¤Š` @  Ó³Yø?d Q¹öžÔ @  Ó´Zø?d ÐQ;g‰  @  Óµ[ø?d R⡇4 @  Ó¶\ø?d PR`0ê @  Ó·]ø?d Rü™ É @  Ó¸^ø?d ÐR~7 @  Ó¹_ø?d SŠ5­ @  Óº`ø?d PS¤ºÉ @  Ó»aø?d SŸö®} @  Ó¼bø?d ÐSg¹£ @  Ó½cø?d T@«äS @  Ó¾dø?d PTÂ:ó @  Ó¿eø?d TL3\l @  ÓÀfø?d ÐT΢K² @  ÓÁgø?d UÂxŠ‚ @  ÓÂhø?d PU@é\ @  ÓÃiø?d U×»‰è @  ÓÄjø?d ÐUU*ž6 @  ÓÅkø?d VŒì @  ÓÆlø?d PV}‡Ö @  ÓÇmø?d V’Ô7õ @  ÓÈnø?d ÐVE + @  ÓÉoø?d Wyσ÷ @  ÓÊpø?d PWû^”) @  ÓËqø?d Wl € @  ÓÌrø?d ÐWî—C @  ÓÍsø?d Xžàµ¡ @  ÓÎtø?d PXq¢ @  ÓÏuø?d X-y,¼ @  ÓÐvø?d ÐX¯è;b @  ÓÑwø?d Y£2úR @  ÓÒxø?d PY!£íŒ @  ÓÓyø?d Y¶ñù8 @  ÓÔzø?d ÐY4`îæ @  ÓÕ{ø?d Zí¦àØ @  ÓÖ|ø?d PZo7÷ @  Ó×}ø?d ZóžG% @  ÓØ~ø?d ÐZqPû @  ÓÙø?d [h¤‹x @  ÓÚ€ø?d P[ê5œ¦ @  ÓÛø?d [}gˆ @  ÓÜ‚ø?d Ð[ÿöŸÌ @  Ó݃ø?d \¢:Â< @  ÓÞ„ø?d P\ «Õâ @  Óß…ø?d \¥|‘ @  Óà†ø?d Ð\‚4kO @  Óá‡ø?d ]Žîª @  Óâˆø?d€ P]Š) @  Ô‰ø?d ]ü:I… @  ÔŠø?d Ð]~«^[ @  Ô‹ø?d ^b$«ˆ @  ÔŒø?d P^ർV @  Ôø?d ^²®S @  ÔŽø?d Ð^0?DÑ @  Ôø?d _—¸w @  Ôø?d P_–¯© @  Ô ‘ø?d _G@ð @  ÔuÐ` ’ø?d Ð_ÅW. @  Ô “ø?d (`ú/·¤ @  Ô ”ø?d h`x¾ z @  Ô •ø?d ¨`*¥O# @  Ô–ø?d è`¨4Xý @  Ô—ø?d (aÇýøW @  Ô˜ø?d haElï‰ @  Ô™ø?d ¨awÐ @  Ôšø?d èa•æ @  Ô›ø?d (b‰iâÝ @  Ôœø?d hb øõ @  Ôø?d ¨bYãZ @  Ôžø?d èbÛr „ @  ÔŸø?d (cáýÈþ @  Ô ø?d hcclß  @  Ô¡ø?d ¨c1w0y @  Ô¢ø?d èc³æ'§ @  Ô£ø?d (d+cº @  Ô¤ø?d hd©ò–d @  Ô¥ø?d ¨dûéy= @  Ô¦ø?d èdyxnã @  Ô§ø?d (e·éù @  Ô ¨ø?d he…&þ' @  Ô!©ø?d ¨e×=~ @  Ô"ªø?d èeU¬  @  Ô#«ø?d (fI#ós @  Ô$¬ø?d hf˲ä­ @  Ô%­ø?d ¨f™© ô @  Ô&®ø?d èf8* @  Ô'¯ø?d (g¼àŒ @  Ô(°ø?d hg>‘÷R @  Ô)±ø?d ¨glŠ  @  Ô*²ø?d ègîÕ @  Ô+³ø?d (h[/ÖÚ @  Ô,´ø?d hhÙ¾Á @  Ô-µø?d ¨h‹¥.] @  Ô.¶ø?d èh 49ƒ @  Ô/·ø?d (ifý™) @  Ô0¸ø?d hiälŽ÷ @  Ô1¹ø?d ¨i¶wa® @  Ô2ºø?d èi4ævp @  Ô3»ø?d (j(iƒ£ @  Ô4¼ø?d hjªø”} @  Ô5½ø?d ¨jøã{$ @  Ô6¾ø?d èjzrlú @  Ô7¿ø?d (k°­¼‘ @  Ô8Àø?d hk2<«O @  Ô9Áø?d ¨k`'D @  Ô:Âø?d èkâ¶SÈ @  Ô;Ãø?d (lz3õÕ @  Ô<Äø?d hlø¢â  @  Ô=Åø?d ¨lª¹ R @  Ô>Æø?d èl((Œ @  Ô?Çø?d (møà› @  Ô@Èø?d hmzqŒÚ @  ÔAÉø?d ¨m(jcƒ @  ÔBÊø?d èmªût] @  ÔCËø?d (n¶tŽ @  ÔDÌø?d hn4å–P @  ÔEÍø?d ¨nfþy  @  ÔFÎø?d ènäon× @  ÔGÏø?d (oCW’q @  ÔHÐø?d hoÁÆ…¯ @  ÔIÑø?d ¨o“Ýjö @  ÔJÒø?d èoL}( @  ÔKÓø?d (p.Y”ˆ @  ÔLÔø?d hp¬ÈƒV @  ÔMÕø?d ¨pþÓl @  ÔNÖø?d èp|B{Ñ @  ÔO×ø?d (q‹Û{ @  ÔPØø?d hq‘Ì¥ @  ÔQÙø?d ¨qÃ#ü @  ÔRÚø?d èqA4" @  ÔSÛø?d (r]Áñ @  ÔTÜø?d hrߎÖ/ @  ÔUÝø?d ¨r•9v @  ÔVÞø?d èr.¨ @  ÔWßø?d (s5‹ëÒ @  ÔXàø?d hs·ü  @  ÔYáø?d ¨såU @  ÔZâø?d èsg‹ @  Ô[ãø?d (tÿ¢– @  Ô\äø?d ht}„µH @  Ô]åø?d ¨t/ŸZ @  Ô^æø?d èt­MÏ @  Ô_çø?d (uÓÁÊÕ @  Ô`èø?d huQPÝ  @  Ôaéø?d ¨uK2R @  Ôbêø?d èuÚ%Œ @  Ôcëø?d (vUÐ_ @  Ôdìø?d hvÄÇ @  Ôeíø?d ¨vMß(Ø @  Ôfîø?d èvÏN? @  Ôgïø?d (whvà @  Ôhðø?d hwêçÔ~ @  Ôiñø?d ¨w¸ü;' @  Ôjòø?d èw:m,ù @  Ôkóø?d (xYõö @  Ôlôø?d hx Èâ( @  Ômõø?d ¨x_Ó q @  Ônöø?d èxÝB¯ @  Ôo÷ø?d (y²‹º @  Ôpøø?d hy0­Û @  Ôqùø?d ¨ybB‚ @  Ôrúø?d èyàU\ @  Ôsûø?d (zü  @  Ôtüø?d hz~Ž·Q @  Ôuýø?d ¨z,•X @  Ôvþø?d èz®OÖ @  Ôwÿø?d ({zž# @  Ôxù?d h{„ë‰ý @  Ôyù?d ¨{Öðf¤ @  Ôzù?d è{Taqz @  Ô{ù?d (|Ìä×g @  Ô|ù?d h|NuÀ¹ @  Ô}ù?d ¨|n/à @  Ô~ù?d è|žÿ8> @  Ôù?d (}­a‰‡ @  Ô€ù?d h}/ðžY @  Ô ù?d ¨}}ëq @  Ô‚ ù?d è}ÿzfÞ @  Ôƒ ù?d (~ãõ“  @  Ô„ ù?d h~ad„Ó @  Ô… ù?d ¨~3kŠ @  Ô†ù?d è~±î|T @  Ô‡ù?d (Ö€ò @  Ôˆù?d h”G—, @  Ô‰ù?d ¨uЀ'Æ\xu @  ÔŠù?d èDÍo« @  Ô‹ù?d @€«¸ØÍ @  ÔŒù?d €€‹MÚ3 @  Ôù?d À€{2 J @  ÔŽù?d «z¬¢ @  Ôù?d @–j—> @  Ôù?d €¶Ÿ•À @  Ô‘ù?d ÀFào¹ @  Ô’ù?d ‚Û¤Ïx @  Ô“ù?d @‚Øþ´ @  Ô”ù?d €‚ø J @  Ô•ù?d À‚tu3 @  Ô–ù?d ƒØ<ùÛ @  Ô—ù?d @ƒ°j§— @  Ô˜ ù?d €ƒŸ¥i @  Ô™!ù?d Àƒ`à_ @  Ôš"ù?d „y®¬ @  Ô›#ù?d @„zôîÓ @  Ôœ$ù?d €„Zì- @  Ô%ù?d À„ª~T @  Ôž&ù?d …z6š¼ @  ÔŸ'ù?d @…V † @  Ô (ù?d €…vÕ„n @  Ô¡)ù?d À…†ª~ @  Ô¢*ù?d †îÞÖ @  Ô£+ù?d @†´œ @  Ô¤,ù?d €†8Ažä @  Ô¥-ù?d À†È>d @  Ô¦.ù?d ‡vèu @  Ô§/ù?d @‡í—å @  Ô¨0ù?d €‡Íb @  Ô©1ù?d À‡=wb @  Ôª2ù?d ˆ âû @  Ô«3ù?d @ˆ ¸¹³ @  Ô¬4ù?d €ˆ*M»M @  Ô­5ù?d ÀˆÚ2A4 @  Ô®6ù?d ‰ zÍÜ @  Ô¯7ù?d @‰7jö@ @  Ô°8ù?d €‰Ÿô¾ @  Ô±9ù?d À‰çàÇ @  Ô²:ù?d Šz¤® @  Ô³;ù?d @ŠyþìÊ @  Ô´<ù?d €ŠY î4 @  Ôµ=ù?d ÀŠ©tM @  Ô¶>ù?d ‹y<˜¥ @  Ô·?ù?d @‹á:Óø @  Ô¸@ù?d €‹ÁÏÑ @  Ô¹Aù?d À‹1°+ @  ÔºBù?d Œ(þØp @  Ô»Cù?d @Œ+¤š¼ @  Ô¼Dù?d €Œ Q˜B @  Ô½Eù?d ÀŒû.b; @  Ô¾Fù?d +fîÓ @  Ô¿Gù?d @©wôm @  ÔÀHù?d €‰‚ö“ @  ÔÁIù?d Àyý ê @  ÔÂJù?d Ž乬+ @  ÔÃKù?d @Žçãîç @  ÔÄLù?d €ŽÇì @  ÔÅMù?d ÀŽ7i` @  ÔÆNù?d ç!šˆ @  ÔÇOù?d @Àý @  ÔÈPù?d €25ÿæ @  ÔÉQù?d ÀÂJŸ @  ÔÊRù?d |”¹- @  ÔËSù?d @Îûá @  ÔÌTù?d €_;ù @  ÔÍUù?d À¯Df @  ÔÎVù?d ‘ Ž @  ÔÏWù?d @‘B´ @  ÔÐXù?d €‘bé¶ì @  ÔÑYù?d À‘’–L• @  ÔÒZù?d ’ÒìT @  ÔÓ[ù?d @’ ˆ®˜ @  ÔÔ\ù?d €’,}¬f @  ÔÕ]ù?d À’ÜV @  ÔÖ^ù?d “ JÚ÷ @  Ô×_ù?d @“d„» @  ÔØ`ù?d €“Dé†E @  ÔÙaù?d À“´–|< @  ÔÚbù?d ”­Ø3 @  ÔÛcù?d @”®‚Íÿ @  ÔÜdù?d €”ŽwÏ @  ÔÝeù?d À”~5x @  ÔÞfù?d •®@¹ @  Ôßgù?d @•‚V¥¼ @  Ôàhù?d €•¢£§B @  Ôáiù?d À•RÜ]; @  Ôâjù?d€ –»[á\ @  Õkù?d @–Y@ë¹ @  Õlù?d €–yµéG @  Õmù?d À–LƒèÓ @  Õnù?d —œËd; @  Õoù?d @—§˜\Ñ @  Õpù?d €—‡m^/ @  Õqù?d À—¹ û, @  Õrù?d ˜_w1 @  Õ sù?d @˜KLÎ @  Õ tù?d €˜k¹Ìî @  Õ uù?d À˜^Íz @  Õ vù?d ™ŽÇA’ @  Õ wù?d @™ÐÄ” @  Õxù?d €™ð1j @  Õyù?d À™c]‚‰ @  Õzù?d šþ"H @  Õ{ù?d @š8 ›i @  Õ|ù?d €šÿ™— @  Õ}ù?d Àš-ɘ @  Õ~ù?d ›ýë @  Õù?d @›¶óT^ @  Õ€ù?d €›–V  @  Õù?d À›¨Ëó£ @  Õ‚ù?d œ±…¬ @  Õƒù?d @œw–¹ @  Õ„ù?d €œWc»s @  Õ…ù?d ÀœbUºç @  Õ†ù?d ²6 @  Õ‡ù?d @ìl  @  Õˆù?d €Ìën÷ @  Õ‰ù?d ÀNÒ¤ @  Õ Šù?d žÓÅre @  Õ!‹ù?d @žÖËD @  Õ"Œù?d €ž5#ɺ @  Õ#ù?d ÀžÈ. @  Õ$Žù?d ŸÐ]DÆ @  Õ%ù?d @Ÿë|, @  Õ&ù?d €ŸËû~Ò @  Õ'‘ùuР?d ÀŸõ6ÛÑ @  Õ(’ù?d  „=· @  Õ)“ù?d X B.¼– @  Õ*”ù?d ˜ bÛ¾h @  Õ+•ù?d Ø Wí¿ü @  Õ,–ù?d ¡‡¥3 @  Õ-—ù?d X¡Ù¦i @  Õ.˜ù?d ˜¡ùSkì @  Õ/™ù?d Ø¡j?ð @  Õ0šù?d ¢÷{PÎ @  Õ1›ù?d X¢1héï @  Õ2œù?d ˜¢ë @  Õ3ù?d Ø¢$«ê… @  Õ4žù?d £ôãfm @  Õ5Ÿù?d X£Rg[ @  Õ6 ù?d ˜£ròe¥ @  Õ7¡ù?d Ø£L?À¦ @  Õ8¢ù?d ¤Uq3© @  Õ9£ù?d X¤“bŠˆ @  Õ:¤ù?d ˜¤³—ˆv @  Õ;¥ù?d ؤ†¡‰â @  Õ<¦ù?d ¥Vé  @  Õ=§ù?d X¥ê_  @  Õ>¨ù?d ˜¥(]ò @  Õ?©ù?d Ø¥rç3 @  Õ@ªù?d ¦™6Gò @  ÕA«ù?d X¦_%þÓ @  ÕB¬ù?d ˜¦Ðü- @  ÕC­ù?d ئJæý¹ @  ÕD®ù?d §š®qQ @  ÕE¯ù?d X§¡ýI» @  ÕF°ù?d ˜§KE @  ÕG±ù?d ا¿ÅîF @  ÕH²ù?d ¨‹:b[ @  ÕI³ù?d X¨M)Ûz @  ÕJ´ù?d ˜¨mÜÙ„ @  ÕKµù?d بXêØ @  ÕL¶ù?d ©ˆ¢Tø @  ÕM·ù?d X©Ö¡þ @  ÕN¸ù?d ˜©öT  @  ÕO¹ù?d Ø©e8—ã @  ÕPºù?d ªø|7" @  ÕQ»ù?d Xª>oŽ @  ÕR¼ù?d ˜ªšŒý @  ÕS½ù?d ت+¬i @  ÕT¾ù?d «ûä @  ÕU¿ù?d X«­P¦ @  ÕVÀù?d ˜«¥X @  ÕWÁù?d Ø«³h²[ @  ÕXÂù?d ¬ª&AT @  ÕYÃù?d X¬l5øu @  ÕZÄù?d ˜¬LÀú‹ @  Õ[Åù?d جyöû @  Õ\Æù?d ­©¾w÷ @  Õ]Çù?d X­÷½-ñ @  Õ^Èù?d ˜­×H/ @  Õ_Éù?d Ø­U"“\ @  Õ`Êù?d ®Èf3 @  ÕaËù?d X®uм @  ÕbÌù?d ˜®.€ˆB @  ÕcÍù?d Ø®¶‰Ö @  ÕdÎù?d ¯Ëþ> @  ÕeÏù?d X¯ð­=Ô @  ÕfÐù?d ˜¯ÐX?* @  ÕgÑù?d د) @  ÕhÒù?d °PK&› @  ÕiÓù?d X°–XŸº @  ÕjÔù?d ˜°¶­D @  ÕkÕù?d ذƒ›œÐ @  ÕlÖù?d ±SÓ8 @  Õm×ù?d X± ÐJ> @  ÕnØù?d ˜±-%HÀ @  ÕoÙù?d ر¾IÓ# @  ÕpÚù?d ²# sâ @  ÕqÛù?d X²åÊà @  ÕrÜù?d ˜²ÅëÈ= @  ÕsÝù?d زðÝÉ© @  ÕtÞù?d ³ •EA @  Õußù?d X³†qDw @  Õvàù?d ˜³¦„F‰ @  Õwáù?d س˜I㊠@  Õxâù?d ´… @  Õyãù?d X´G©¤ @  Õzäù?d ˜´gá«Z @  Õ{åù?d Ø´RתÎ @  Õ|æù?d µ‚Ÿ&& @  Õ}çù?d XµÜœ|  @  Õ~èù?d ˜µüi~Þ @  Õéù?d ص3Rô. @  Õ€êù?d ¶®Tï @  Õëù?d X¶híÎ @  Õ‚ìù?d ˜¶Hðï0 @  Õƒíù?d ض}Æî¤ @  Õ„îù?d ·­ŽbL @  Õ…ïù?d X·–ÝZ¦ @  Õ†ðù?d ˜·¶(XX @  Õ‡ñù?d Ø·ˆåý[ @  Õˆòù?d ¸¼qF @  Õ‰óù?d X¸z Èg @  ÕŠôù?d ˜¸ZüÊ™ @  Õ‹õù?d ظoÊË  @  ÕŒöù?d ¹¿‚Gå @  Õ÷ù?d X¹áã @  ÕŽøù?d ˜¹Át @  Õùù?d عR„þ @  Õúù?d ºÏ\$? @  Õ‘ûù?d Xº O @  Õ’üù?d ˜º)ºŸà @  Õ“ýù?d غŒžt @  Õ”þù?d »ÌÄœ @  Õ•ÿù?d X»Jó2 @  Õ–ú?d ˜»j0þ @  Õ—ú?d Ø»TË•ý @  Õ˜ú?d ¼M…fò @  Õ™ú?d X¼‹–ßÓ @  Õšú?d ˜¼«cÝ- @  Õ›ú?d ؼžUܹ @  Õœú?d ½NPQ @  Õú?d X½ W @  Õžú?d ˜½0ë© @  ÕŸ ú?d ؽ²´ú @  Õ  ú?d ¾/Å; @  Õ¡ ú?d X¾éÖ­ @  Õ¢ ú?d ˜¾É#¯ä @  Õ£ ú?d ؾü®p @  Õ¤ú?d ¿,]"˜ @  Õ¥ú?d X¿r @  Õ¦ú?d ˜¿7ûŒ @uÐÀ  Õ§ú?d Ø¿ 6½ @  Õ¨ú?d 0ÀmÆìÝ @  Õ©ú?d pÀ«ÕUü @  Õªú?d °À‹ W @  Õ«ú?d ðÀ¾V– @  Õ¬ú?d 0Án^Ú~ @  Õ­ú?d pÁ0]€x @  Õ®ú?d °Á¨‚† @  Õ¯ú?d ðÁƒÄe @  Õ°ú?d 0€¹¤ @  Õ±ú?d pÂØ“… @  Õ²ú?d °Âøf{ @  Õ³ú?d ðÂÍPï @  Õ´ú?d 0à @  Õµú?d pûüŽ1 @  Õ¶ ú?d °Ã› ŒÏ @  Õ·!ú?d ðÃ¥Ä)Ì @  Õ¸"ú?d 0ļŠÚà @  Õ¹#ú?d pÄz™câ @  Õº$ú?d °ÄZla @  Õ»%ú?d ðÄoZ`ˆ @  Õ¼&ú?d 0Å¿ì` @  Õ½'ú?d pÅá¶f @  Õ¾(ú?d °ÅÁä´˜ @  Õ¿)ú?d ðÅí‰Y @  ÕÀ*ú?d 0ÆpÍ®˜ @  ÕÁ+ú?d pƶ޹ @  ÕÂ,ú?d °Æ–+G @  ÕÃ-ú?d ðÆ£Ó @  ÕÄ.ú?d 0ÇsU˜; @  ÕÅ/ú?d pÇH Ñ @  ÕÆ0ú?d °Çhó¢/ @  ÕÇ1ú?d ðÇV>, @  ÕÈ2ú?d 0ÈbÁ‹1 @  ÕÉ3ú?d pȤÒ2 @  ÕÊ4ú?d °È„'0î @  ÕË5ú?d ðȱ1z @  ÕÌ6ú?d 0ÉaY½’ @  ÕÍ7ú?d pÉ?Zç” @  ÕÎ8ú?d °É¯åj @  ÕÏ9ú?d ðÉŒÃ~‰ @  ÕÐ:ú?d 0ʇÞH @  ÕÑ;ú?d pÊ×”gi @  ÕÒ<ú?d °Ê÷ae— @  ÕÓ=ú?d ðÊÂWd @  ÕÔ>ú?d 0Ëèë @  ÕÕ?ú?d pËD«üÌ @  ÕÖ@ú?d °Ëd^þ2 @  Õ×Aú?d ðËZ“[1 @  ÕØBú?d 0ÌCݨ> @  ÕÙCú?d pÌ…Î @  ÕÚDú?d °Ì¥;á @  ÕÛEú?d ðÌ u @  ÕÜFú?d 0Í@Ež @  ÕÝGú?d pÍFÄ› @  ÕÞHú?d °Í>³Æe @  ÕßIú?d ðͼÙz6 @  ÕàJú?d 0Î!Ú÷ @  ÕáKú?d pÎçŽcÖ @  ÕâLú?d€ °Î<–( @  ÖMú?d ðÎ)%ä• @  Ö Nú?d 0Ïùmh} @  Ö Oú?d pÏw«z @  Ö Pú?d °Ï'‚©„ @  Ö Qú?d ðÏ×ýSý @  Ö Rú?d 0Ði#ïO @  Ö Sú?d pÐa‚  @  Ö Tú?d °ÐAw ê @  Ö Uú?d ðбñ“ @  Ö Vú?d 0Ña@}{ @  Ö Wú?d pÑú Ü @  Ö Xú?d °ÑÚÿÞn @  Ö Yú?d ðÑ*€$ @  Ö Zú?d 0Ò·Ä„Ö @  Ö [ú?d pÒÄ\m @  Ö \ú?d °Ò21^“ @  Ö ]ú?d ðÒÂN¤ê @  Ö ^ú?d 0Ó( @  Ö _ú?d pÓq«ÒÙ @  Ö `ú?d °ÓQ^Ð' @  Ö aú?d ðÓ¡!*^ @  Ö bú?d 0Ô¸oÙQ @  Ö cú?d pÔ°Î?  @  Ö dú?d °Ô;=ô @  Ö eú?d ðÔ`DÇ @  Ö fú?d 0Õ° Ke @  Ö gú?d pÕ+FêŽ @  Ö hú?d °Õ ³èp @  Ö iú?d ðÕûÌ  @  Ö jú?d 0Öfˆ²È @  Ö kú?d pÖÒŽMà @  Ö lú?d °Öò{O= @  Ö! mú?d ðÖµD @  Ö" nú?d 0×ÒL9¬ @  Ö# oú?d p×,Vú« @  Ö$ pú?d °× £øU @  Ö% qú?d ð×üÜ, @  Ö& rú?d 0ØÈ#Ž1 @  Ö' sú?d pØÀ‚hj @  Ö( tú?d °Øàwj” @  Ö) uú?d ðØí @  Ö* vú?d 0ÙÀ@ @  Ö+ wú?d pÙ[ ½î @  Ö, xú?d °Ù{ÿ¿ @  Ö- yú?d ðÙ‹€Ei @  Ö. zú?d 0ÚÄå¨ @  Ö/ {ú?d pÚ³Ä= @  Ö0 |ú?d °Ú“1?í @  Ö1 }ú?d ðÚcNÅ” @  Ö2 ~ú?d 0Û³I| @  Ö3 ú?d pÛ==ò$ @  Ö4 €ú?d °ÛÈðÚ @  Ö5 ú?d ðÛí· £ @  Ö6 ‚ú?d 0Üôùù¬ @  Ö7 ƒú?d pÜüX÷ @  Ö8 „ú?d °ÜÜ­  @  Ö9 …ú?d ðÜ,Òçp @  Ö: †ú?d 0Ýüšk˜ @  Ö; ‡ú?d pÝgÐÊs @  Ö< ˆú?d °ÝG%È @  Ö= ‰ú?d ðÝ·Z2ô @  Ö> Šú?d 0Þ*’5 @  Ö? ‹ú?d pÞ0k¬ @  Ö@ Œú?d °ÞêiR @  ÖA ú?d ðÞà•“+ @  ÖB Žú?d 0ß0Ýà @  ÖC ú?d pßÎÇÜÄ @  ÖD ú?d uÐà/°ßî2Þ: @  ÖE ‘ú?d ðßM$C @  ÖF ’ú?d Hàézµ @  ÖG “ú?d ˆà­,‰Î @  ÖH ”ú?d Èà/½ž @  ÖI •ú?d áÿ_ @  ÖJ –ú?d HáŠè @  ÖK —ú?d ˆá6¤\J @  ÖL ˜ú?d Èá´5K” @  ÖM ™ú?d â[Ÿò @  ÖN šú?d HâÙ, @  ÖO ›ú?d ˆâÞjÜ· @  ÖP œú?d Èâ\ûËi @  ÖQ ú?d ãþ]ª& @  ÖR žú?d Hã|̽ø @  ÖS Ÿú?d ˆã½R @  ÖT  ú?d Èã?”EÝ @  ÖU ¡ú?d äT4[u @  ÖV ¢ú?d HäÖ¥L« @  ÖW £ú?d ˆä|`¿Ð @  ÖX ¤ú?d Èäþñ¨ @  ÖY ¥ú?d å\WÉA @  ÖZ ¦ú?d HåÞÆÞŸ @  Ö[ §ú?d ˆåçèjT @  Ö\ ¨ú?d Èåey}Š @  Ö] ©ú?d æŠÓ0ì @  Ö^ ªú?d HæB'2 @  Ö_ «ú?d ˆæ Í @  Ö` ¬ú?d Èæœ±ÚÇ @  Öa ­ú?d ç>»ˆ @  Öb ®ú?d H缆¬V @  Öc ¯ú?d ˆçàøzq @  Öd °ú?d Èçbim¯ @  Öe ±ú?d è$x  @  Öf ²ú?d Hè¦éË @  Ög ³ú?d ˆè ,è° @  Öh ´ú?d Èè޽ÿn @  Öi µú?d é,ž! @  Öj ¶ú?d H鮊‰ÿ @  Ök ·ú?d ˆé—¤=4 @  Öl ¸ú?d Èé5*ê @  Öm ¹ú?d êúŸgŒ @  Ön ºú?d HêxpR @  Öo »ú?d ˆêj½É @  Öp ¼ú?d Èêýûª @  Öq ½ú?d ë_]ËX @  Ör ¾ú?d HëÝÌ܆ @  Ös ¿ú?d ˆëìU&l @  Öt Àú?d ÈënÄ1² @  Öu Áú?d ìd/ @  Öv Âú?d Hì‡õ8Ä @  Öw Ãú?d ˆì-0Ë¿ @  Öx Äú?d È쯡Üa @  Öy Åú?d í ½. @  Öz Æú?d Hí–ªð @  Ö{ Çú?d ˆí¶¸; @  Ö| Èú?d Èí4) å @  Ö} Éú?d îÛƒDƒ @  Ö~ Êú?d HîYS] @  Ö Ëú?d ˆî!Õ @  Ö€ Ìú?d È˜  @  Ö Íú?d ï"ùD @  Ö‚ Îú?d Hï ‡îš @  Öƒ Ïú?d ˆïüù8½ @  Ö„ Ðú?d Èï~h/c @  Ö… Ñú?d ð²X~v @  Ö† Òú?d Hð0Éi¨ @  Ö‡ Óú?d ˆðš šÓ @  Öˆ Ôú?d Èð  @  Ö‰ Õú?d ñº;ìB @  ÖŠ Öú?d Hñ8ªûœ @  Ö‹ ×ú?d ˆñ„OW @  ÖŒ Øú?d ÈñƒX‰ @  Ö Ùú?d òl¿ï @  ÖŽ Úú?d Hòî.1 @  Ö Ûú?d ˆòéJϪ @  Ö Üú?d ÈòkÛØt @  Ö‘ Ýú?d óÉ}¹; @  Ö’ Þú?d HóKì®å @  Ö“ ßú?d ˆóŠ%A @  Ö” àú?d Èó´VÀ @  Ö• áú?d ôcHh @  Ö– âú?d Hôá…_¶ @  Ö— ãú?d ˆôK@¬Í @  Ö˜ äú?d ÈôÉÑ» @  Ö™ åú?d õkwÚ\ @  Öš æú?d HõéæÍ‚ @  Ö› çú?d ˆõÐÈyI @  Öœ èú?d ÈõRYn— @  Ö éú?d ö½ó#ñ @  Öž êú?d Hö?b4/ @  ÖŸ ëú?d ˆö)Þ @  Ö  ìú?d Èö«‘ÉÚ @  Ö¡ íú?d ÷ 7¨• @  Ö¢ îú?d H÷‹¦¿K @  Ö£ ïú?d ˆ÷רil @  Ö¤ ðú?d È÷UI~² @  Ö¥ ñú?d øX @  Ö¦ òú?d Hø‘ÉÖ @  Ö§ óú?d ˆø; û­ @  Ö¨ ôú?d Èø¹ìs @  Ö© õú?d ù;< @  Öª öú?d Hù™ªšâ @  Ö« ÷ú?d ˆù „.) @  Ö¬ øú?d Èù"9÷ @  Ö­ ùú?d úÍ¿t‘ @  Ö® úú?d HúO.cO @  Ö¯ ûú?d ˆúHJ®Ô @  Ö° üú?d ÈúÊÛ¹  @  Ö± ýú?d ûh}ØE @  Ö² þú?d HûêìÏ› @  Ö³ ÿú?d ˆû¹Ô4ï @  Ö´ û?d Èû;E#1 @  Öµ û?d üPå=™ @  Ö¶ û?d HüÒt*G @  Ö· û?d ˆüx±Ù< @  Ö¸ û?d Èüú Îâ @  Ö¹ û?d ýX†¯­ @  Öº û?d HýÚ¸s @  Ö» û?d ˆýã9 ¸ @  Ö¼ û?d Èýa¨f @  Ö½  û?d þŽV @  Ö¾  û?d Hþ “AÞ @  Ö¿  û?d ˆþ´ö­g @  ÖÀ  û?d Èþ6gº¹ @  ÖÁ  û?d ÿ”ÁÛö @  Ö û?d HÿPÌ( @  Öà û?d ˆÿJ. @  ÖÄ uÐû?d ÈÿÈ¿ Ñ @  ÖÅ û?d ¾ ¨a @  ÖÆ û?d `<1¿¿ @  ÖÇ û?d  –ôLÄ @  ÖÈ û?d àe[ @  ÖÉ û?d ¶Ã:U @  ÖÊ û?d `4R-‹ @  ÖË û?d   |™@ @  ÖÌ û?d à펞 @  ÖÍ û?d `GÃø @  ÖÎ û?d `âÖÔ& @  ÖÏ û?d  å²½ @  ÖÐ û?d àg#c @  ÖÑ û?d Å…o, @  ÖÒ û?d `Gxò @  ÖÓ û?d  †Ý—  @  ÖÔ  û?d àL€× @  ÖÕ !û?d oìž @  ÖÖ "û?d `í}‰¡ @  Ö× #û?d  G¸zÚ @  ÖØ $û?d àÅ)m @  ÖÙ %û?d g K @  ÖÚ &û?d `å• @  ÖÛ 'û?d  Ü0¯^ @  ÖÜ (û?d à^¡¸€ @  ÖÝ )û?d ± õæ @  ÖÞ *û?d `3šâ8 @  Öß +û?d  %ø @  Öà ,û?d à§iÍ @  Öá -û?d Ï~‚ @  Öâ .û?d€ `óuú @  × /û?d  N¢ëô @  × 0û?d àÌ3ü* @  × 1û?d Okf} @  × 2û?d `Íúq£ @  × 3û?d  ©Ý¢ @  × 4û?d à+Ê| @  × 5û?d GôI @  × 6û?d ` ř㗠@  × 7û?d   9þ¬± @  × 8û?d à »o»o @  × 9û?d ‘Œ ä @  × :û?d ` : @  × ;û?d   wj¶; @  × <û?d à õû¡å @  × =û?d 4N¡0 @  × >û?d ` ¶ß¶î @  × ?û?d   B·é @  × @û?d à Àž 7 @  × Aû?d nwEr @  × Bû?d ` ìæR¬ @  × Cû?d   ˆ‘þ­ @  × Dû?d à  és @  × Eû?d f×F @  × Fû?d ` ä…À˜ @  × Gû?d   â¾ @  × Hû?d à šs˜` @  × Iû?d °.ë @  × Jû?d `295 @  × Kû?d  Vv•4 @  × Lû?d àÔç‚ê @  × Mû?d T¥ @  × Nû?d `†Å²Q @  ×! Oû?d  òŸ› @  ×" Pû?d àcˆE @  ×# Qû?d ”"½ @  ×$ Rû?d `‹5c @  ×% Sû?d  rü™b @  ×& Tû?d àðm޼ @  ×' Uû?d œy°‰ @  ×( Vû?d `è§W @  ×) Wû?d  âèq @  ×* Xû?d à`ÿ¯ @  ×+ Yû?d JýI$ @  ×, Zû?d `Èl^ú @  ×- [û?d  ¬òû @  ×. \û?d à.Šå% @  ×/ ]û?d ï?åð @  ×0 ^û?d `m®ò. @  ×1 _û?d  i.æ8 @  ×2 `û?d àë¿ñæ @  ×3 aû?d EV£ @  ×4 bû?d `ÇÇ} @  ×5 cû?d  £°¯| @  ×6 dû?d à!!¸¢ @  ×7 eû?d M5†— @  ×8 fû?d `Ϥ‘I @  ×9 gû?d  3ÃÞo @  ×: hû?d à±Rɱ @  ×; iû?d ›±: @  ×< jû?d ` hä @  ×= kû?d  }WÄå @  ×> lû?d àÿÆÓ; @  ×? mû?d ròÌ @  ×@ nû?d `ãå @  ×A oû?d  šÔÈØ @  ×B pû?d àEß @  ×C qû?d ›EQ @  ×D rû?d `ŒR @  ×E sû?d  }ûþŽ @  ×F tû?d àÿjéP @  ×G uû?d “~×e @  ×H vû?d `ïÀ» @  ×I wû?d  íˆ @  ×J xû?d ào˜C @  ×K yû?d Eú.È @  ×L zû?d `Çk9 @  ×M {û?d  £• @  ×N |û?d à!‚É @  ×O }û?d à8‚ @  ×P ~û?d `b©• @  ×Q û?d  ‹¿ÀW @  ×R €û?d à .׉ @  ×S û?d §Ç2Ì @  ×T ‚û?d `%V% @  ×U ƒû?d  A!‰ @  ×V „û?d àðžÍ @  ×W …û?d ¯¤ ø @  ×X †û?d `-5·& @  ×Y ‡û?d  ÑRø @  ×Z ˆû?d àSÃïÞ @  ×[ ‰û?d y YU @  ×\ Šû?d `û±N‹ @  ×] ‹û?d  ŸÆâŠ @  ×^ Œû?d àWõT @  ×_ û?d ÍäÒ1 @  ×` Žû?d `OuÅï @  ×a û?d  ÖBè%uÐ  @  ×b û?d àTÓÿû @  ×c ‘û?d 8 ’7× @  ×d ’û?d x î  @  ×e “û?d ¸ t™Œ @  ×f ”û?d ø ö›Ö @  ×g •û?d 8!š¥ã @  ×h –û?d x!²= @  ×i —û?d ¸!äêý @  ×j ˜û?d ø!f{êÅ @  ×k ™û?d 8"L˜\N @  ×l šû?d x"Î K @  ×m ›û?d ¸"ª~ç‘ @  ×n œû?d ø"(ïðO @  ×o û?d 8#éZðš @  ×p žû?d x#kËçD @  ×q Ÿû?d ¸#oKóR @  ×r  û?d ø#íÚäŒ @  ×s ¡û?d 8$C3É @  ×t ¢û?d x$Á¢ @  ×u £û?d ¸$¥Õº @  ×v ¤û?d ø$'D­È @  ×w ¥û?d 8%KP“ý @  ×x ¦û?d x%ÉÁ„# @  ×y §û?d ¸%5¦Ë @  ×z ¨û?d ø%·7ÜÛ @  ×{ ©û?d 8&ÔjP @  ×| ªû?d x&E}Ž @  ×} «û?d ¸&{2Ñ @  ×~ ¬û?d ø&ù£ÆQ @  × ­û?d 8'dA×— @  ×€ ®û?d x'æÐÀI @  × ¯û?d ¸'çíƒ @  ×‚ °û?d ø'ývú] @  ×ƒ ±û?d 8(~.`  @  ×„ ²û?d x(ü¿wÔ @  ×… ³û?d ¸(˜ÈÛÕ @  ×† ´û?d ø(YÌ  @  ×‡ µû?d 8)vMò> @  ×ˆ ¶û?d x)ôÜåà @  ×‰ ·û?d ¸)»ªÆ @  ×Š ¸û?d ø)Š*½ @  ×‹ ¹û?d 8* É “ @  ×Œ ºû?d x*"XM @  × »û?d ¸*F/°L @  ×Ž ¼û?d ø*ľ§’ @  × ½û?d 8+ §G @  × ¾û?d x+‡š°™ @  ×‘ ¿û?d ¸+sJ±ž @  ×’ Àû?d ø+ñÛ¦@ @  ×“ Áû?d 8,_2C @  ×” Âû?d x,Ý£TÛ @  ×• Ãû?d ¸,¹ÔøÚ @  ×– Äû?d ø,;Eï @  ×— Åû?d 8-WQÑ1 @  ×˜ Æû?d x-ÕÀÆï @  ×™ Çû?d ¸-)§‰É @  ×š Èû?d ø-«6ž @  ×› Éû?d 8.Õ(œ @  ×œ Êû?d x.D?B @  × Ëû?d ¸.g3“C @  ×ž Ìû?d ø.墄 @  ×Ÿ Íû?d 8/5£ø @  ×  Îû?d x/·€´& @  ×¡ Ïû?d ¸/.·™ì @  ×¢ Ðû?d ø/¬&Ž2 @  ×£ Ñû?d 80¥_$Ê @  ×¤ Òû?d x0'Î3 @  ×¥ Óû?d ¸0C¹Ÿ @  ×¦ Ôû?d ø0Á(ˆË @  ×§ Õû?d 81­<¶þ @  ×¨ Öû?d x1/­¡  @  ×© ×û?d ¸1ÓÊî @  ×ª Øû?d ø1Q[ùØ @  ×« Ùû?d 82{¸OS @  ×¬ Úû?d x2ù)X @  ×­ Ûû?d ¸2^ôŒ @  ×® Üû?d ø2ÏãR @  ×¯ Ýû?d 83Þz㇠@  ×° Þû?d x3\ëôY @  ×± ßû?d ¸3XkàO @  ×² àû?d ø3Úú÷‘ @  ×³ áû?d 84tÔ @  ×´ âû?d x4ö‚  @  ×µ ãû?d ¸4’õ©  @  ×¶ äû?d ø4d¾Õ @  ×· åû?d 85|p€à @  ×¸ æû?d x5þá—> @  ×¹ çû?d ¸5†Ø @  ×º èû?d ø5€ÏÆ @  ×» éû?d 86ªôyM @  ×¼ êû?d x6(en“ @  ×½ ëû?d ¸6LÂ’ @  ×¾ ìû?d ø6΃ÕL @  ×¿ íû?d 87°7ô» @  ×À îû?d x72¦ãe @  ×Á ïû?d ¸7«‘ί @  × ðû?d ø7)Ùq @  ×à ñû?d 88ªXC& @  ×Ä òû?d x8(ÉTø @  ×Å óû?d ¸8L¾øù @  ×Æ ôû?d ø8Î/ï' @  ×Ç õû?d 89¢;Ñ @  ×È öû?d x9 ªÆÌ @  ×É ÷û?d ¸9Ü͉ê @  ×Ê øû?d ø9^\ž4 @  ×Ë ùû?d 8:t¿(¿ @  ×Ì úû?d x:ö.?a @  ×Í ûû?d ¸:’Y“` @  ×Î üû?d ø:È„¾ @  ×Ï ýû?d 8;Ñ}„k @  ×Ð þû?d x;S쓵 @  ×Ñ ÿû?d ¸;ù”¬º @  ×Ò ü?d ø;{»d @  ×Ó ü?d 8<Õì^! @  ×Ô ü?d x<W}Iÿ @  ×Õ ü?d ¸<3 åþ @  ×Ö ü?d ø<±›ò  @  ×× ü?d 8=ÝÌ @  ×Ø ü?d x=_ÛË @  ×Ù ü?d ¸=£y”í @  ×Ú ü?d ø=!èƒ3 @  ×Û  ü?d 8> 5¸ @  ×Ü  ü?d x>‰š"f @  ×Ý  ü?d ¸>ííŽg @  ×Þ  ü?d ø>o|™¹ @  ×ß  ü?d 8?¿Ï¾Ü @  ×à ü?d x?=^© @  ×á ü?duÐ@7 ¸?¤i„È @  ×â ü?d€ ø?b‡D @  Ø ü?d P@›(c @  Ø ü?d @»Ýaå @  Ø ü?d Ð@¸‡#) @  Ø ü?d AhϯÁ @  Ø ü?d PA˜°U¸ @  Ø ü?d A¸EWF @  Ø ü?d ÐA(ôR: @  Ø ü?d Bµ°òû @  Ø ü?d PBEÏ‚ @  Ø ü?d Be: | @  Ø ü?d ÐBf`H° @  Ø ü?d C¶(ÄX @  Ø ü?d PCFW>! @  Ø ü?d Cf¢<ß @  Ø ü?d ÐC£U\s @  Ø  ü?d Dº¯| @  Ø !ü?d PDJdU @  Ø "ü?d Dj‘Wû @  Ø #ü?d ÐDiË7 @  Ø $ü?d E¹ƒ™ß @  Ø %ü?d PEIüc¦ @  Ø &ü?d Ei aX @  Ø 'ü?d ÐEù¸d$ @  Ø (ü?d FdüÄå @  Ø )ü?d PF”ƒ>œ @  Ø *ü?d F´vü?d KÇ¢]¡ @  Ø/ ?ü?d ÐKò( @  Ø0 @ü?d LëKÛ @  Ø1 Aü?d PL4!j @  Ø2 Bü?d L;Á#” @  Ø3 Cü?d ÐL8›aX @  Ø4 Dü?d MèÓí° @  Ø5 Eü?d PM¬É @  Ø6 Fü?d M8Y7 @  Ø7 Gü?d ÐM¨èK @  Ø8 Hü?d N5¬°Š @  Ø9 Iü?d PNÅÓJó @  Ø: Jü?d Nå&H  @  Ø; Kü?d ÐNæ| Á @  Ø< Lü?d O64†) @  Ø= Mü?d POÆK|P @  Ø> Nü?d Oæ¾~® @  Ø? Oü?d ÐOÿü @  Ø@ Pü?d P¿!ºN @  ØA Qü?d PPO^@7 @  ØB Rü?d Po«BÉ @  ØC Sü?d ÐPlñ @  ØD Tü?d Q¼¹Œí @  ØE Uü?d PQLÆv” @  ØF Vü?d Ql3tj @  ØG Wü?d ÐQü‚q @  ØH Xü?d RaÆÑ× @  ØI Yü?d PR‘¹+® @  ØJ Zü?d R±L)P @  ØK [ü?d ÐR²kœ @  ØL \ü?d Sb^çt @  ØM ]ü?d PS’!  @  ØN ^ü?d S²Ôó @  ØO _ü?d ÐSw#_ @  ØP `ü?d TnmŒP @  ØQ aü?d PTžv) @  ØR bü?d T¾çt× @  ØS cü?d ÐT½½6 @  ØT dü?d Umõºó @  ØU eü?d PUŠ@Š @  ØV fü?d U½Bt @  ØW gü?d ÐU-ÎG @  ØX hü?d V°ŠçÉ @  ØY iü?d PV@õ° @  ØZ jü?d V`N @  Ø[ kü?d ÐVcZ]‚ @  Ø\ lü?d W³Ñj @  Ø] mü?d PWCm+ @  Ø^ nü?d Wc˜)í @  Ø_ oü?d ÐW*ÞW- @  Ø` pü?d X!Û0 @  Øa qü?d PXî^!I @  Øb rü?d XΫ#· @  Øc sü?d ÐXÍña{ @  Ød tü?d Y¹í“ @  Øe uü?d PYíÆê @  Øf vü?d YÍ3 @  Øg wü?d ÐY]‚h @  Øh xü?d ZÀư© @  Øi yü?d PZ0¹JÐ @  Øj zü?d ZLH. @  Øk {ü?d ÐZ â @  Øl |ü?d [Ã^†  @  Øm }ü?d P[3!|s @  Øn ~ü?d [Ô~ @  Øo ü?d Ð[;µ_¢ @  Øp €ü?d \"û¬­ @  Øq ü?d P\Ò„VÔ @  Ør ‚ü?d \òqT* @  Øs ƒü?d Ð\ñ+æ @  Øt „ü?d ]!cš @  Øu …ü?d P]Ñ`w @  Øv †ü?d ]ñéb‰ @  Øw ‡ü?d Ð]aXgõ @  Øx ˆü?d ^üÇ4 @  Øy ‰ü?d P^ c=M @  Øz Šü?d ^,–?³ @  Ø{ ‹ü?d Ð^/Ì} @  Ø| Œü?d _ÿ„ñ— @  Ø} ü?d P_û î @  Ø~ Žü?d _/  @  ØuÐ` ü?d Ð_+As @  Ø€ ü?d (`•áôë @  Ø ‘ü?d h`ež’ @  Ø‚ ’ü?d ¨`Ek l @  Øƒ “ü?d è`F1N  @  Ø„ ”ü?d (a–yÂH @  Ø… •ü?d haf81 @  Ø† –ü?d ¨aFó:Ï @  Ø‡ —ü?d èaÖB?³ @  Øˆ ˜ü?d (bKŸr @  Ø‰ ™ü?d hb»ye  @  ØŠ šü?d ¨b›Œgõ @  Ø‹ ›ü?d èb˜Ö%9 @  ØŒ œü?d (cHž©Ñ @  Ø ü?d hc¸áS¨ @  ØŽ žü?d ¨c˜QV @  Ø Ÿü?d èc]ã1ú @  Ø  ü?d (dD­Âõ @  Ø‘ ¡ü?d hd´Ò8Œ @  Ø’ ¢ü?d ¨d”':r @  Ø“ £ü?d èd—}x¾ @  Ø” ¤ü?d (eG5ôV @  Ø• ¥ü?d he·J/ @  Ø– ¦ü?d ¨e—¿ Ñ @  Ø— §ü?d èe ­ @  Ø˜ ¨ü?d (fšJ©l @  Ø™ ©ü?d hfj5S @  Øš ªü?d ¨fJÀQë @  Ø› «ü?d èfIš' @  Øœ ¬ü?d (g™ÒŸÏ @  Ø ­ü?d hgi­e¶ @  Øž ®ü?d ¨gIXgH @  ØŸ ¯ü?d ègˆ @  Ø  °ü?d (h4á•• @  Ø¡ ±ü?d hhÄžoì @  Ø¢ ²ü?d ¨häkm @  Ø£ ³ü?d èhç1/Þ @  Ø¤ ´ü?d (i7y£6 @  Ø¥ µü?d hiÇYO @  Ø¦ ¶ü?d ¨içó[± @  Ø§ ·ü?d èiwB^Í @  Ø¨ ¸ü?d (jêþ  @  Ø© ¹ü?d hjyu @  Øª ºü?d ¨j:Œ‹ @  Ø« »ü?d èj9ÖDG @  Ø¬ ¼ü?d (kéžÈ¯ @  Ø­ ½ü?d hká2Ö @  Ø® ¾ü?d ¨k90( @  Ø¯ ¿ü?d èk ³E• @  Ø° Àü?d (lý¶š @  Ø± Áü?d hlå‚Lã @  Ø² Âü?d ¨lÅwN @  Ø³ Ãü?d èlÆ- Ñ @  Ø´ Äü?d (me€9 @  Øµ Åü?d hmæz@ @  Ø¶ Æü?d ¨mÆïx¾ @  Ø· Çü?d èmV^} @  Ø¸ Èü?d (nËÝ @  Ø¹ Éü?d hn;e'z @  Øº Êü?d ¨n%„ @  Ø» Ëü?d ènÊgH @  Ø¼ Ìü?d (oÈ‚ë  @  Ø½ Íü?d ho8ýÙ @  Ø¾ Îü?d ¨o' @  Ø¿ Ïü?d èoÿIku @  ØÀ Ðü?d (pA—×Ç @  ØÁ Ñü?d hp±è-¾ @  Ø Òü?d ¨p‘/@ @  Øà Óü?d èp’GmŒ @  ØÄ Ôü?d (qBád @  ØÅ Õü?d hq²p @  ØÆ Öü?d ¨q’…ã @  ØÇ ×ü?d èq4Ÿ @  ØÈ Øü?d (rŸp¼^ @  ØÉ Ùü?d hroF' @  ØÊ Úü?d ¨rOúDÙ @  ØË Ûü?d èrL  @  ØÌ Üü?d (sœèŠý @  ØÍ Ýü?d hsl—p„ @  ØÎ Þü?d ¨sLbrz @  ØÏ ßü?d ès‰•Ö @  ØÐ àü?d (tÛáÙ @  ØÑ áü?d ht`¤  @  ØÒ âü?d ¨t@Q^ @  ØÓ ãü?d ètC [’ @  ØÔ äü?d (u“C×z @  ØÕ åü?d huc<- @  ØÖ æü?d ¨uCÉ/ý @  Ø× çü?d èuÓx* @  ØØ èü?d (vN<Š@ @  ØÙ éü?d hv¾Cp9 @  ØÚ êü?d ¨vž¶rÇ @  ØÛ ëü?d èvì0  @  ØÜ ìü?d (wM¤¼ã @  ØÝ íü?d hw½ÛFš @  ØÞ îü?d ¨w.Dd @  Øß ïü?d èwÔh:¤ @  Øà ðü?d (xà—¶¹ @  Øá ñü?d hxèLÀ @  Øâ òü?d€ ¨xDÞR˜ @  Ù óü?d èx¦ÅX} @  Ù ôü?d (yvÔ• @  Ù õü?d hyC»Õ @  Ù öü?d ¨ycN×ÿ @  Ù ÷ü?d èy=Mù @  Ù øü?d (z  -8 @  Ù ùü?d hzžÄˆ; @  Ù úü?d ¨z¾1ŠÅ @  Ù ûü?d èzx"3ä @  Ù üü?d ({¨j¿  @  Ù ýü?d h{\¾˜ @  Ù þü?d ¨{½©¼f @  Ù ÿü?d è{‰¼©ß @  Ù ý?d (|òZÐ @  Ù ý?d h|žÁ3 @  Ù ý?d ¨|#kÃÍ @  Ù ý?d è|åxzì @  Ù ý?d (}50ö @  Ù ý?d h}÷ @  Ù ý?d ¨} óõn @  Ù ý?d è}~ð¯h @  Ù ý?d (~ã´© @  Ù  ý?d h~Ýyªª @  Ù  ý?d ¨~ýŒ¨T @  Ù  ý?d è~;Ÿu @  Ù  ý?d (ë× @  Ù  ý?d hÞᜠ @  Ù ý?d ¨uЀ'þž÷ @  Ù ý?d èÅG¦ @  Ù ý?d @€«ùDi @  Ù ý?d €€‹÷í @  Ù ý?d À€ fúÄ @  Ù! ý?d ¬ØÓ @  Ù" ý?d @=Ï  @  Ù# ý?d €ˆoÛ¹ @  Ù$ ý?d À þÌg @  Ù% ý?d ‚K(!~ @  Ù& ý?d @‚ɹ6  @  Ù' ý?d €‚U†ƒ @  Ù( ý?d À‚ב] @  Ù) ý?d ƒCK³J @  Ù* ý?d @ƒÁÚ¤” @  Ù+ ý?d €ƒVˆ°  @  Ù, ý?d ÀƒÔ§þ @  Ù- ý?d „é"B @  Ù.  ý?d @„k³UÇ @  Ù/ !ý?d €„Z»Û @  Ù0 "ý?d À„Ø*ÌÚ @  Ù1 #ý?d …LàîÍ @  Ù2 $ý?d @…Îqù @  Ù3 %ý?d €…Y#í§ @  Ù4 &ý?d À…Û²úy @  Ù5 'ý?d †šd` @  Ù6 (ý?d @†õ¾ @  Ù7 )ý?d €†„\° @  Ù8 *ý?d À†ͧC @  Ù9 +ý?d ‡’…T @  Ù: ,ý?d @‡–’Š @  Ù; -ý?d €‡‡Ä†> @  Ù< .ý?d À‡U‘à @  Ù= /ý?d ˆˆh2É @  Ù> 0ý?d @ˆ ù% @  Ù? 1ý?d €ˆ„ðŠö @  Ù@ 2ý?d Àˆa( @  ÙA 3ý?d ‰’«¿? @  ÙB 4ý?d @‰:¨á @  ÙC 5ý?d €‰‡h¼U @  ÙD 6ý?d À‰ù«‹ @  ÙE 7ý?d ŠD/F’ @  ÙF 8ý?d @ŠƾQL @  ÙG 9ý?d €ŠZáo @  ÙH :ý?d ÀŠ؆ö± @  ÙI ;ý?d ‹LLÔ¦ @  ÙJ <ý?d @‹ÎÝÃx @  ÙK =ý?d €‹Y×Ì @  ÙL >ý?d À‹ÛÀ @  ÙM ?ý?d Œu0ä @  ÙN @ý?d @Œ”ä': @  ÙO Aý?d €Œ¥ì©ù @  ÙP Bý?d ÀŒ'}¾' @  ÙQ Cý?d ³·œ0 @  ÙR Dý?d @1&‹î @  ÙS Eý?d €¦tŸZ @  ÙT Fý?d À$刄 @  ÙU Gý?d Že3e @  ÙV Hý?d @Žç¢rC @  ÙW Iý?d €Ž{ Â` @  ÙX Jý?d ÀŽùšÕ¾ @  ÙY Ký?d mP÷© @  ÙZ Lý?d @ïÁàw @  Ù[ Mý?d €x“ôà @  Ù\ Ný?d Àúã @  Ù] Oý?d ýp› @  Ù^ Pý?d @gE @  Ù_ Qý?d €_Î6 @  Ù` Rý?d ÀÝÙè @  Ùa Sý?d ‘IÚûÿ @  Ùb Tý?d @‘ËKì! @  Ùc Uý?d €‘\ø• @  Ùd Vý?d À‘ÞˆïK @  Ùe Wý?d ’Ÿ^R @  Ùf Xý?d @’ÏŒ @  Ùg Yý?d €’f¥¯ @  Ùh Zý?d À’÷²q @  Ùi [ý?d “—=f @  Ùj \ý?d @“¬‡¸ @  Ùk ]ý?d €“‚þ“  @  Ùl ^ý?d À“o„Ò @  Ùm _ý?d ”=Ta5 @  Ùn `ý?d @”¿Åvë @  Ùo aý?d €”ŽÍø( @  Ùp bý?d À” \ïö @  Ùq cý?d •˜–Íá @  Ùr dý?d @•Ú? @  Ùs eý?d €•U΋ @  Ùt fý?d À•ÄÙU @  Ùu gý?d –N4L @  Ùv hý?d @–̃#’ @  Ùw iý?d €–P*“± @  Ùx jý?d À–Ò»„o @  Ùy ký?d —Fq¦x @  Ùz lý?d @—Ä౦ @  Ù{ mý?d €—S²¥ @  Ù| ný?d À—Ñ#²Ì @  Ù} oý?d ˜\å @  Ù~ pý?d @˜Þ; @  Ù qý?d €˜³Ð™ë @  Ù€ rý?d À˜1AŽ5 @  Ù sý?d ™¥‹¬" @  Ù‚ tý?d @™'»ü @  Ùƒ uý?d €™°H¯H @  Ù„ vý?d À™2Ù¸– @  Ù… wý?d šsU @  Ù† xý?d @šñžBQ @  Ù‡ yý?d €šm7òr @  Ùˆ zý?d Àšï¦å¬ @  Ù‰ {ý?d ›{lÇ» @  ÙŠ |ý?d @›ùýÐe @  Ù‹ }ý?d €›n¯ÄÑ @  ÙŒ ~ý?d À›ì>Ó @  Ù ý?d œ<“wk @  ÙŽ €ý?d @œ¾`µ @  Ù ý?d €œ îv @  Ù ‚ý?d Àœ ›ù¨ @  Ù‘ ƒý?d ™QÛ¿ @  Ù’ „ý?d @ÀÌa @  Ù“ …ý?d €Œ’ØÕ @  Ù” †ý?d ÀÏ  @  Ù• ‡ý?d žOÕ" @  Ù– ˆý?d @žÍD5Ì @  Ù— ‰ý?d €žQí…ï @  Ù˜ Šý?d ÀžÓ|’1 @  Ù™ ‹ý?d ŸG¶°& @  Ùš Œý?d @ŸÅ'§ø @  Ù› ý?d €ŸRu³L @  Ùœ ŽýuР?d ÀŸÐ䤒 @  Ù ý?d  -UÀ @  Ùž ý?d X š¼B @  ÙŸ ‘ý?d ˜ º²ëm @  Ù  ’ý?d Ø 8#ü³ @  Ù¡ “ý?d ¡¬éÞ¤ @  Ù¢ ”ý?d X¡.xÉz @  Ù£ •ý?d ˜¡¹*ÝÎ @  Ù¤ –ý?d Ø¡;»Ê @  Ù¥ —ý?d ¢zm'  @  Ù¦ ˜ý?d X¢øü0× @  Ù§ ™ý?d ˜¢dU€ô @  Ù¨ šý?d Ø¢æÄ—* @  Ù© ›ý?d £rµ= @  Ùª œý?d X£ðŸ¢ã @  Ù« ý?d ˜£gͶW @  Ù¬ žý?d Ø£å\¡‰ @  Ù­ Ÿý?d ¤ØgDn @  Ù®  ý?d X¤ZöS° @  Ù¯ ¡ý?d ˜¤kþÝs @  Ù° ¢ý?d ؤéoÊ­ @  Ù± £ý?d ¥}¥èº @  Ù² ¤ý?d X¥ÿ4ÿd @  Ù³ ¥ý?d ˜¥hfëÐ @  Ù´ ¦ý?d Ø¥ê÷ü @  Ùµ §ý?d ¦«! @  Ù¶ ¨ý?d X¦)°É @  Ù· ©ý?d ˜¦µ¶ê @  Ù¸ ªý?d ئ7ˆ¡4 @  Ù¹ «ý?d §£Bƒ# @  Ùº ¬ý?d X§!Ó”ý @  Ù» ­ý?d ˜§¶€I @  Ù¼ ®ý?d ا4—— @  Ù½ ¯ý?d ¨¹-4¾ @  Ù¾ °ý?d X¨;¼#` @  Ù¿ ±ý?d ˜¨µµŒ @  ÙÀ ²ý?d ب7$›_ @  ÙÁ ³ý?d ©£î¹H @  Ù ´ý?d X©!®– @  Ùà µý?d ˜©¶-º" @  ÙÄ ¶ý?d Ø©4¼­ü @  ÙÅ ·ý?d ªuj@å @  ÙÆ ¸ý?d Xª÷ûW; @  ÙÇ ¹ý?d ˜ªkRç @  ÙÈ ºý?d تéÃðÆ @  ÙÉ »ý?d «} ÒÑ @  ÙÊ ¼ý?d X«ÿ˜Å @  ÙË ½ý?d ˜«hÊÑ» @  ÙÌ ¾ý?d Ø«ê[Æe @  ÙÍ ¿ý?d ¬'06“ @  ÙÎ Àý?d X¬¥¡!M @  ÙÏ Áý?d ˜¬”©¯Ž @  ÙÐ Âý?d ج8¸P @  ÙÑ Ãý?d ­‚òšG @  ÙÒ Äý?d X­c™ @  ÙÓ Åý?d ˜­—1™- @  ÙÔ Æý?d Ø­ Žó @  ÙÕ Çý?d ®Tvcê @  ÙÖ Èý?d X®Öçt4 @  Ù× Éý?d ˜®JNÄ @  ÙØ Êý?d Ø®ÈßÓÉ @  ÙÙ Ëý?d ¯\ñÞ @  ÙÚ Ìý?d X¯Þ„æ @  ÙÛ Íý?d ˜¯IÖò´ @  ÙÜ Îý?d دËGåj @  ÙÝ Ïý?d °Ì[vì @  ÙÞ Ðý?d X°NÊa2 @  Ùß Ñý?d ˜°nÄÈA @  Ùà Òý?d ذìUߟ @  Ùá Óý?d ±xŸýˆ @  Ùâ Ôý?d€ X±;IV @  Ú Õý?d ˜±MZAË @  Ú Öý?d رÏËV @  Ú ×ý?d ²KT@á @  Ú Øý?d X²ÉÅW? @  Ú Ùý?d ˜²›Þ¸f @  Ú Úý?d زO¯¸ @  Ú Ûý?d ³C7ÒÕ @  Ú Üý?d X³Á¦Å  @  Ú Ýý?d ˜³“½*R @  Ú Þý?d س,=Œ @  Ú ßý?d ´é^#† @  Ú àý?d X´kÏ4X @  Ú áý?d ˜´9ÔÛ @  Ú âý?d Ø´»EÌß @  Ú ãý?d µLœR @  Ú äý?d XµÎ ˜Œ @  Ú åý?d ˜µœwÕ @  Ú æý?d ص‡`  @  Ú çý?d ¶švÿ @  Ú èý?d X¶‰a! @  Ú éý?d ˜¶J’Žx @  Ú êý?d ضÈ™¦ @  Ú ëý?d ·’{äË @  Ú ìý?d X·êó @  Ú íý?d ˜·BñL @  Ú îý?d Ø·À` ’ @  Ú ïý?d ¸ˆSV @  Ú ðý?d X¸ …Dˆ @  Ú ñý?d ˜¸Xž«Ñ @  Ú òý?d ظÚ¼ @  Ú óý?d ¹<ÐØ2 @  Ú ôý?d X¹¾AÏì @  Ú! õý?d ˜¹ìZ µ @  Ú" öý?d عnË7k @  Ú# ÷ý?d ºêT!Ÿ @  Ú$ øý?d XºhÅ6A @  Ú% ùý?d ˜º:ÞÙ @  Ú& úý?d غ¸OÎÆ @  Ú' ûý?d »â7³« @  Ú( üý?d X»`¦¤u @  Ú) ýý?d ˜»2½K, @  Ú* þý?d Ø»°,\ò @  Ú+ ÿý?d ¼hcR @  Ú, þ?d X¼êtŒ @  Ú- þ?d ˜¼¸›Õ @  Ú. þ?d ؼ:–Œ  @  Ú/ þ?d ½ÍOφ @  Ú0 þ?d X½OÞØX @  Ú1 þ?d ˜½Å7 @  Ú2 þ?d ؽŸT ß @  Ú3 þ?d ¾Ë6+ @  Ú4 þ?d X¾™Z!õ @  Ú5  þ?d ˜¾ËAά @  Ú6  þ?d ؾIÐÙr @  Ú7  þ?d ¿¨¤ @  Ú8  þ?d X¿‘9³Á @  Ú9  þ?d ˜¿Ã"\˜ @uÐÀ  Ú: þ?d Ø¿A³KF @  Ú; þ?d 0ÀYÈÎÍ @  Ú< þ?d pÀÛYÙ @  Ú= þ?d °À‰B6J @  Ú> þ?d ðÀ Ó!” @  Ú? þ?d 0ÁC C; @  Ú@ þ?d pÁÁšTå @  ÚA þ?d °Á“»¼ @  ÚB þ?d ðÁ¬b @  ÚC þ?d 0•º– @  ÚD þ?d p­H @  ÚE þ?d °ÂEB @  ÚF þ?d ðÂÇ”UÏ @  ÚG þ?d 0Ãì(¢ @  ÚH þ?d pÃ}?| @  ÚI þ?d °ÃMfÐ% @  ÚJ þ?d ðÃÏ÷Çû @  ÚK þ?d 0Ä7…Ùñ @  ÚL  þ?d pĵÎ/ @  ÚM !þ?d °Äç!v @  ÚN "þ?d ðÄež6¨ @  ÚO #þ?d 0Å’Gu% @  ÚP $þ?d pÅÖbû @  ÚQ %þ?d °ÅBÍ¢ @  ÚR &þ?d ðÅÀ\š| @  ÚS 'þ?d 0ÆDÃŒˆ @  ÚT (þ?d pÆÆR›V @  ÚU )þ?d °Æ”It @  ÚV *þ?d ðÆØcÑ @  ÚW +þ?d 0ÇL ¼ @  ÚX ,þ?d pÇÎ1 b @  ÚY -þ?d °Çœ*æ; @  ÚZ .þ?d ðÇ»ñå @  Ú[ /þ?d 0ÈVÏ©! @  Ú\ 0þ?d pÈÔ^¾ÿ @  Ú] 1þ?d °È†EQ¦ @  Ú^ 2þ?d ðÈÔFx @  Ú_ 3þ?d 0Éâ "E @  Ú` 4þ?d pÉ`š5› @  Úa 5þ?d °É2Ú @  Úb 6þ?d ðÉ°Í @  Úc 7þ?d 0Ê4Ûè @  Úd 8þ?d pʶÌ6 @  Úe 9þ?d °Êä#o @  Úf :þ?d ðÊf”4± @  Úg ;þ?d 0Ë<ìIÜ @  Úh <þ?d p˾}^ @  Úi =þ?d °Ëìf±[ @  Új >þ?d ðËn÷¦… @  Úk ?þ?d 0ÌfÕ­ž @  Úl @þ?d pÌäDº@ @  Úm Aþ?d °Ì¶_U @  Ún Bþ?d ðÌ4ÎBÇ @  Úo Cþ?d 0ÍÃJ @  Úp Dþ?d pÍA†” @  Úq Eþ?d °ÍùÍ @  Úr Fþ?d ðÍ‘ î @  Ús Gþ?d 0Γøç @  Út Hþ?d pΗï9 @  Úu Iþ?d °ÎÅ` @  Úv Jþ?d ðÎGˆ¾ @  Úw Kþ?d 0ÏðjÓ @  Úx Lþ?d pÏŸa}  @  Úy Mþ?d °ÏÍz’T @  Úz Nþ?d ðÏOë…Š @  Ú{ Oþ?d 0оíá @  Ú| Pþ?d pÐ/ú? @  Ú} Qþ?d °Ð]4f @  Ú~ Rþ?d ðÐߥ¸ @  Ú Sþ?d 0Ñt+P& @  Ú€ Tþ?d pÑöºGø @  Ú Uþ?d °Ñ¤¡¨¡ @  Ú‚ Vþ?d ðÑ&0¿ @  Úƒ Wþ?d 0Ò¢¯©‹ @  Ú„ Xþ?d pÒ >¾U @  Ú… Yþ?d °Òr%Q  @  Ú† Zþ?d ðÒð´FÒ @  Ú‡ [þ?d 0ÓªÌ;¿ @  Úˆ \þ?d pÓ(],a @  Ú‰ ]þ?d °ÓzFÃ8 @  ÚŠ ^þ?d ðÓø×Ôæ @  Ú‹ _þ?d 0Ô¥Êì @  ÚŒ `þ?d pÔ‚4Ý2 @  Ú aþ?d °ÔÐ/2k @  ÚŽ bþ?d ðÔR¾%µ @  Ú cþ?d 0Õ¥gf8 @  Ú dþ?d pÕ'öqæ @  Ú‘ eþ?d °Õuíž¿ @  Ú’ fþ?d ðÕ÷|‰a @  Ú“ gþ?d 0Ös㟕 @  Ú” hþ?d pÖñrˆK @  Ú• iþ?d °Ö£ig @  Ú– jþ?d ðÖ!øpÌ @  Ú— kþ?d 0×{€ ¡ @  Ú˜ lþ?d p×ù @  Ú™ mþ?d °×« õ& @  Úš nþ?d ð×)›âø @  Ú› oþ?d 0Øaïº< @  Úœ pþ?d pØã~­â @  Ú qþ?d °Ø±eB» @  Úž rþ?d ðØ3ôUe @  ÚŸ sþ?d 0ÙÕ+1X @  Ú  tþ?d pÙWº&† @  Ú¡ uþ?d °Ù¡Éß @  Ú¢ vþ?d ðÙ‡0Þ @  Ú£ wþ?d 0Ú¯Èõ @  Ú¤ xþ?d pÚ>ß+ @  Ú¥ yþ?d °ÚÓ%0r @  Ú¦ zþ?d ðÚQ´'¬ @  Ú§ {þ?d 0Û ÌZÁ @  Ú¨ |þ?d pÛ‰]M @  Ú© }þ?d °ÛÛF¢F @  Úª ~þ?d ðÛY×µ˜ @  Ú« þ?d 0ÜL3ê @  Ú¬ €þ?d pÜ΢ýÏ @  Ú­ þ?d °Üœ¹– @  Ú® ‚þ?d ðÜ(H @  Ú¯ ƒþ?d 0ÝéñFÅ @  Ú° „þ?d pÝk`Q @  Ú± …þ?d °Ý9{¾B @  Ú² †þ?d ðݻ꩜ @  Ú³ ‡þ?d 0Þ?u¿h @  Ú´ ˆþ?d p޽䨶 @  Úµ ‰þ?d °ÞïÿGï @  Ú¶ Šþ?d ðÞmnP1 @  Ú· ‹þ?d 0ß7-\ @  Ú¸ Œþ?d pßµ‡:‚ @  Ú¹ þ?d uÐà/°ßçœÕÛ @  Úº Žþ?d ðße  @  Ú» þ?d Hà"H* @  Ú¼ þ?d ˆà ×JÔ @  Ú½ ‘þ?d ÈàШ°­ @  Ú¾ ’þ?d áà @  ÚÅ ™þ?d ÈâïÄö @  ÚÆ šþ?d ã̧H @  ÚÇ ›þ?d HãÄ®E @  ÚÈ œþ?d ˆãäó¬» @  ÚÉ þ?d ÈãŒV @  ÚÊ žþ?d ä Â¥Í @  ÚË Ÿþ?d Häno_ @  ÚÌ  þ?d ˆäNš]è @  ÚÍ ¡þ?d Èä¾å§‘ @  ÚÎ ¢þ?d ån­+y @  ÚÏ £þ?d HåË­ó @  ÚÐ ¤þ?d ˆåëXñ< @  ÚÑ ¥þ?d Èå' E @  ÚÒ ¦þ?d æ†c«„ @  ÚÓ §þ?d Hæ) o @  ÚÔ ¨þ?d ˆæ=Ü‘ @  ÚÕ ©þ?d ÈæÍ£òè @  ÚÖ ªþ?d çë~ @  Ú× «þ?d HçJ˜[ @  ÚØ ¬þ?d ˆç5¿š¥ @  ÚÙ ­þ?d ÈçÅÀ`Ü @  ÚÚ ®þ?d èñ?ìÁ @  ÚÛ ¯þ?d Hè%/Æ @  ÚÜ °þ?d ˆè/Ð-8 @  ÚÝ ±þ?d Èè߯×A @  ÚÞ ²þ?d éç[© @  Úß ³þ?d Hé»á¤¢ @  Úà ´þ?d ˆé›¦\ @  Úá µþ?d Èékk\% @  Úâ ¶þ?d€ ê‚ìàB @  Û ·þ?d Hêøç € @  Û ¸þ?d ˆêØ ~ @  Û ¹þ?d Èêí$ ê @  Û ºþ?d ë=l† @  Û »þ?d Hëû?# @  Û ¼þ?d ˆëÛŠ=Ý @  Û ½þ?d ÈëåG˜Þ @  Û ¾þ?d ìü kÑ @  Û ¿þ?d H쪽ö @  Û Àþ?d ˆìŠH} @  Û Áþ?d Èì¿~|œ @  Û Âþ?d ío6ðt @  Û Ãþ?d Hí©%IU @  Û Äþ?d ˆí‰ÐK« @  Û Åþ?d Èí¼ÐH @  Û Æþ?d î‡øp‰ @  Û Çþ?d HîÙû* @  Û Èþ?d ˆîù(q @  Û Éþ?d ÈîÌ8)å @  Û Êþ?d ïp¥  @  Û Ëþ?d HïÚc, @  Û Ìþ?d ˆïú–Ò @  Û Íþ?d ÈïÄ[»Ñ @  Û Îþ?d ðz…c @  Û Ïþ?d HðAÖ?‰ @  Û Ðþ?d ˆða#=w @  Û Ñþ?d ÈðT<ã @  Û Òþ?d ñ„]°  @  Û Óþ?d HñBN * @  Û Ôþ?d ˆñb» Ô @  Û Õþ?d ÈñàÑ·‡ @  Û Öþ?d ò}•F @  Û! ×þ?d Hò#–M@ @  Û" Øþ?d ˆòcO¾ @  Û# Ùþ?d Èò6UN* @  Û$ Úþ?d óæÂ @  Û% Ûþ?d Hó {ã @  Û& Üþ?d ˆóûy @  Û' Ýþ?d Èó>6Ü @  Û( Þþ?d ô'x/ @  Û) ßþ?d Hôœ.' @  Û* àþ?d ˆô¡i,Ù @  Û+ áþ?d Èô”_-M @  Û, âþ?d õD¡¥ @  Û- ãþ?d Hõ‚„ @  Û. äþ?d ˆõ¢ñz @  Û/ åþ?d Èõ1™ @  Û0 æþ?d ö¬Ù!X @  Û1 çþ?d HöòÚ{^ @  Û2 èþ?d ˆöÒ/y  @  Û3 éþ?d Èöçx4 @  Û4 êþ?d ÷7QôÜ @  Û5 ëþ?d H÷ñBMý @  Û6 ìþ?d ˆ÷Ñ·O @  Û7 íþ?d È÷ïzê @  Û8 îþ?d øÛ…f @  Û9 ïþ?d HøàÖ^÷ @  Û: ðþ?d ˆøÀ#\  @  Û; ñþ?d Èøõ] @  Û< òþ?d ù%]Ñu @  Û= óþ?d HùãNhT @  Û> ôþ?d ˆùûjª @  Û? õþ?d ÈùïÖÐk @  Û@ öþ?d úr’pª @  ÛA ÷þ?d Hú,‘*¬ @  ÛB øþ?d ˆú d(R @  ÛC ùþ?d Èú9R)Æ @  ÛD úþ?d ûé¥. @  ÛE ûþ?d Hû/  @  ÛF üþ?d ˆûüñ @  ÛG ýþ?d Èû11»ò @  ÛH þþ?d ü(Hý @  ÛI ÿþ?d Hüj]D @  ÛJ ÿ?d ˆü<Ÿ_º @  ÛK ÿ?d Èü ©^. @  ÛL ÿ?d ýÙáÒÆ @  ÛM ÿ?d Hýòkç @  ÛN ÿ?d ˆý?i @  ÛO ÿ?d Èý¬kòú @  ÛP ÿ?d þ1/R; @  ÛQ ÿ?d Hþo,= @  ÛR ÿ?d ˆþOÙ Ã @  ÛS  ÿ?d Èþzï W @  ÛT  ÿ?d ÿª§‡¿ @  ÛU  ÿ?d Hÿl´>ž @  ÛV  ÿ?d ˆÿLA<` @  ÛW uÐ ÿ?d Èÿ‰â¢c @  ÛXÿ?d ÆVŠ’ @  ÛYÿ?d `ý²x @  ÛZÿ?d  Ýð°† @  Û[ÿ?d àèÆ± @  Û\ÿ?d 8Ž=ú @  Û]ÿ?d `þ„Û @  Û^ÿ?d  Þh†% @  Û_ÿ?d à\:v @  Û`ÿ?d ÁFš· @  Ûaÿ?d `ŸEÀ± @  Ûbÿ?d  ¿°ÂO @  Ûcÿ?d àІÃÛ @  Ûdÿ?d ZÎO3 @  Ûeÿ?d `œÝö @  Ûfÿ?d  ¼(ôì @  Ûgÿ?d à‚åQï @  Ûhÿ?d ›«¢à @  Ûiÿ?d `=O£Ö @  Ûj ÿ?d  º¡( @  Ûk!ÿ?d à(Œ ¼ @  Ûl"ÿ?d øÄ,T @  Ûm#ÿ?d `>וu @  Ûn$ÿ?d  "—‹ @  Ûo%ÿ?d àN h @  Ûp&ÿ?d  ¬© @  Ûq'ÿ?d `N ö¯ @  Ûr(ÿ?d  nüôQ @  Ûs)ÿ?d à[ÊõÅ @  Ût*ÿ?d ‹‚y- @  Ûu+ÿ?d `M‘À  @  Ûv,ÿ?d  mdÂò @  Ûw-ÿ?d àS©gñ @  Ûx.ÿ?d gVëì @  Ûy/ÿ?d `\Ó @  Ûz0ÿ?d  |ðÑø @  Û{1ÿ?d àIÆÐl @  Û|2ÿ?d ™Ž\„ @  Û}3ÿ?d ` _å¥ @  Û~4ÿ?d   hç[ @  Û5ÿ?d à °Sm« @  Û€6ÿ?d -Íj @  Û7ÿ?d ` s—l @  Û‚8ÿ?d   Sá•’ @  Ûƒ9ÿ?d à f×” @  Û„:ÿ?d ¶Ÿî @  Û…;ÿ?d ` pŒ¡Ï @  Û†<ÿ?d   Py£1 @  Û‡=ÿ?d à n´2 @  Ûˆ>ÿ?d wúõ= @  Û‰?ÿ?d ` !Ná @  ÛŠ@ÿ?d   »ãä @  Û‹Aÿ?d à 4âp @  ÛŒBÿ?d äÅn˜ @  ÛCÿ?d ` "Ö×¹ @  ÛŽDÿ?d   #ÕG @  ÛEÿ?d à ‘ON¤ @  ÛFÿ?d  îe @  Û‘Gÿ?d `R´c @  Û’Hÿ?d  rý¶ @  Û“Iÿ?d àGË·  @  Û”Jÿ?d —ƒ;á @  Û•Kÿ?d `Q‚À @  Û–Lÿ?d  qe€> @  Û—Mÿ?d àO¨%= @  Û˜Nÿ?d ñv™ @  Û™Oÿ?d `Ê%¡e @  ÛšPÿ?d  êУ› @  Û›Qÿ?d àßæ¢ @  ÛœRÿ?d ®.ç @  ÛSÿ?d `ɽ—Æ @  ÛžTÿ?d  éH•8 @  ÛŸUÿ?d àk")k @  Û Vÿ?d öf‰ª @  Û¡Wÿ?d `¨eÓ¬ @  Û¢Xÿ?d  ˆÑR @  Û£Yÿ?d à½¦ÐÆ @  Û¤Zÿ?d mî\. @  Û¥[ÿ?d `«ýå @  Û¦\ÿ?d  ‹çñ @  Û§]ÿ?d àµÅBò @  Û¨^ÿ?d ¬‹±ý @  Û©_ÿ?d ` o°Ë @  Ûª`ÿ?d  *š²5 @  Û«aÿ?d ଳ¡ @  Û¬bÿ?d Ïä?I @  Û­cÿ?d ` ÷†h @  Û®dÿ?d  )„– @  Û¯eÿ?d àºnu @  Û°fÿ?d '*¿´ @  Û±gÿ?d `y)å² @  Û²hÿ?d  YÜçL @  Û³iÿ?d àlêæØ @  Û´jÿ?d ¼¢j0 @  Ûµkÿ?d `z±Ó @  Û¶lÿ?d  ZDÑï @  Û·mÿ?d àd‰tì @  Û¸nÿ?d Pvøñ @  Û¹oÿ?d `k%À @  Ûºpÿ?d  KÐÂå @  Û»qÿ?d à~æÃq @  Û¼rÿ?d ®®O™ @  Û½sÿ?d `h½ö¸ @  Û¾tÿ?d  HHôF @  Û¿uÿ?d àd%N‡ @  ÛÀvÿ?d ùaîF @  ÛÁwÿ?d `§b´@ @  ÛÂxÿ?d  ‡—¶¾ @  ÛÃyÿ?d ಡ·* @  ÛÄzÿ?d bé; @  ÛÅ{ÿ?d `¤ú‚ã @  ÛÆ|ÿ?d  „€ @  ÛÇ}ÿ?d àºÂ% @  ÛÈ~ÿ?d £ŒÖ @  ÛÉÿ?d `èþ–¤ @  ÛÊ€ÿ?d  È ”Z @  ÛËÿ?d àý=•Î @  ÛÌ‚ÿ?d -u& @  Û̓ÿ?d `ëf  @  Û΄ÿ?d  Ë“¢ù @  ÛÏ…ÿ?d àXÿ9 @  ÛІÿ?d Å»™Û @  Ûчÿ?d `›¸ÃÝ @  ÛÒˆÿ?d  »MÁ# @  ÛÓ‰ÿ?d àŽ{À· @  ÛÔŠÿ?d ^3L_ @  ÛÕ‹ÿ?d `˜ õ~ @  ÛÖŒÿ?d  ¸Õ÷€uÐ  @  Û×ÿ?d à91Æ* @  ÛØ€Žÿ?d 8 H:L @  ÛÙ€ÿ?d x si ¦ @  ÛÚ€ÿ?d ¸ Sœ"X @  ÛÛ€‘ÿ?d ø fª#Ì @  ÛÜ€’ÿ?d 8!¶â¯$ @  ÛÝ€“ÿ?d x!pñ @  ÛÞ€”ÿ?d ¸!Pû @  Û߀•ÿ?d ø!Òn¨¨ @  Ûà€–ÿ?d 8"O*i @  Ûဗÿ?d x")Ro @  Û‘ÿ?d€ ¸"·Šø( @  Ü€™ÿ?d ø"cý±• @  Ü€šÿ?d 8#³µ=} @  Ü€›ÿ?d x#°ï± @  Ü€œÿ?d ¸#}O @  Ü€ÿ?d ø#`e‡6 @  Ü€žÿ?d 8$y+t9 @  Ü€Ÿÿ?d x$}*u @  Ü€ ÿ?d ¸$1ˆ(‹ @  Ü €¡ÿ?d ø$Á÷Òò @  Ü €¢ÿ?d 8%¿^ @  Ü €£ÿ?d x%åÖ @  Ü €¤ÿ?d ¸%2( @  Ü €¥ÿ?d ø%ÂoäQ @  Ü€¦ÿ?d 8&_+D @  Ü€§ÿ?d x&b;  @  Ü€¨ÿ?d ¸&BÎ}ò @  Ü€©ÿ?d ø&²±‡‹ @  Ü€ªÿ?d 8'bù c @  Ü€«ÿ?d x'a£I¯ @  Ü€¬ÿ?d ¸'AVKQ @  Ü€­ÿ?d ø'±)±( @  Ü€®ÿ?d 8(…Ö=5 @  Ü€¯ÿ?d x(p7Z¥ @  Ü€°ÿ?d ¸(PÂX[ @  Ü€±ÿ?d ø( ½¢" @  Ü€²ÿ?d 8)põ.Ê @  Ü€³ÿ?d x)s¯l @  Ü€´ÿ?d ¸)SZnø @  Ü€µÿ?d ø)£%” @  Ü€¶ÿ?d 8*>a4@ @  Ü€·ÿ?d x*w(l @  Ü €¸ÿ?d ¸*2‚*’ @  Ü!€¹ÿ?d ø*ÂýÐë @  Ü"€ºÿ?d 8+µ\ @  Ü#€»ÿ?d x+ïÏ @  Ü$€¼ÿ?d ¸+11 @  Ü%€½ÿ?d ø+ÁeæH @  Ü&€¾ÿ?d 8,Ø+G @  Ü'€¿ÿ?d x,@-^ @  Ü(€Àÿ?d ¸,`Ø\ä @  Ü)€Áÿ?d ø,§¦ @  Ü*€Âÿ?d 8-@ï*u @  Ü+€Ãÿ?d x-Cµh¹ @  Ü,€Äÿ?d ¸-c@jG @  Ü-€Åÿ?d ø-“?> @  Ü.€Æÿ?d 8.{0ÿ @  Ü/€Çÿ?d x.3k c @  Ü0€Èÿ?d ¸.ž  @  Ü1€Éÿ?d ø.ãáóä @  Ü2€Êÿ?d 8/3©  @  Ü3€Ëÿ?d x/0ó=À @  Ü4€Ìÿ?d ¸/?> @  Ü5€Íÿ?d ø/àyÅG @  Ü6€Îÿ?d 80^§yõ @  Ü7€Ïÿ?d x0«Fe @  Ü8€Ðÿ?d ¸0‹³› @  Ü9€Ñÿ?d ø0{Ìæâ @  Ü:€Òÿ?d 81«„j  @  Ü;€Óÿ?d x1¨Þ(Æ @  Ü<€Ôÿ?d ¸1ˆ+*8 @  Ü=€Õÿ?d ø1xTÐA @  Ü>€Öÿ?d 82åp€ @  Ü?€×ÿ?d x2gj> @  Ü@€Øÿ?d ¸2GôhÀ @  ÜA€Ùÿ?d ø2·‹’¹ @  ÜB€Úÿ?d 83gÃQ @  ÜC€Ûÿ?d x3d™\ @  ÜD€Üÿ?d ¸3Dl^c @  ÜE€Ýÿ?d ø3´¤ @  ÜF€Þÿ?d 84­]W @  ÜG€ßÿ?d x4Å Y @  ÜH€àÿ?d ¸4åþ § @  ÜI€áÿ?d ø4ñÞ @  ÜJ€âÿ?d 85ÅÉ}6 @  ÜK€ãÿ?d x5Æ“?ú @  ÜL€äÿ?d ¸5æf= @  ÜM€åÿ?d ø5Ç} @  ÜN€æÿ?d 86‹]g¼ @  ÜO€çÿ?d x6¶M\  @  ÜP€èÿ?d ¸6–¸^Þ @  ÜQ€éÿ?d ø6fǤ§ @  ÜR€êÿ?d 87¶(O @  ÜS€ëÿ?d x7µÕjƒ @  ÜT€ìÿ?d ¸7• h} @  ÜU€íÿ?d ø7e_’ @  ÜV€îÿ?d 88Q  @  ÜW€ïÿ?d x8¤Ay‰ @  ÜX€ðÿ?d ¸8„´{w @  ÜY€ñÿ?d ø8tË @  ÜZ€òÿ?d 89¤ƒ æ @  Ü[€óÿ?d x9§ÙO* @  Ü\€ôÿ?d ¸9‡,MÔ @  Ü]€õÿ?d ø9wS·­ @  Ü^€öÿ?d 8:êl @  Ü_€÷ÿ?d x:Æ @ @  Ü`€øÿ?d ¸:æô ¾ @  Üa€ùÿ?d ø:‹óÇ @  Üb€úÿ?d 8;ÆÃ/ @  Üc€ûÿ?d x;Å™=ã @  Üd€üÿ?d ¸;ål? @  Üe€ýÿ?d ø;Åd @  Üf€þÿ?d 8< ]6k @  Üg€ÿÿ?d x<ìï±/ @  Üh€?d ¸<Ì³Ñ @  Üi€?d ø<¢¹ßÊ @  Üo€?d x>Ÿ©äV @  Üp€?d ¸>¿\æ¨ @  Üq€ ?d ø>O#Ñ @  Ür€ ?d 8?Ÿk9 @  Üs€ ?d x?œ1Òõ @  Üt€ ?duÐ@7 ¸?¼ÄÐ  @  Üu€ ?d ø?ü…Û @  Üv ?d P@ËP?ç @  Üw ?d @œÕMW @  Üx ?d Ð@DZ‰ @  Üy ?d A¼â;Æ @  Üz ?d PA>s, @  Ü{ ?d AŸM{ô @  Ü| ?d ÐAÜl* @  Ü} ?d Bòv!L @  Ü~ ?d PBpç6’ @  Ü ?d B³Ä = @  Ü€ ?d ÐB1Uã @  Ü ?d C“ó¬ @  Ü‚ ?d PCbhr @  Üƒ ?d C°\?ž @  Ü„ ?d ÐC2Í(@ @  Ü… ?d DYm6è @  Ü† ?d PDÛü!6 @  Ü‡ ?d DÎjZ @  Üˆ  ?d ÐD“_}„ @  Ü‰ !?d E1ùË @  ÜŠ "?d PE³h  @  Ü‹ #?d EV\ù @  ÜŒ $?d ÐEÇK' @  Ü %?d FmA @  ÜŽ &?d PFýüŸ @  Ü '?d Fbˆ?# @  Ü (?d ÐFà(ý @  Ü‘ )?d GB¿I² @  Ü’ *?d PGÀ.^l @  Ü“ +?d Ga € @  Ü” ,?d ÐGã^ @  Ü• -?d H¥ä @  Ü– .?d PH'h: @  Ü— /?d Hp„Š @  Ü˜ 0?d ÐHò T @  Ü™ 1?d IP³l @  Üš 2?d PIÒ"{Å @  Ü› 3?d Is,) @  Üœ 4?d ÐIñ;÷ @  Ü 5?d J'v‘ @  Üž 6?d PJœ¶aO @  ÜŸ 7?d JÄhC @  Ü  8?d ÐJU @  Ü¡ 9?d K2óÒ @  Ü¢ :?d PK°b  @  Ü£ ;?d K\^à @  Ü¤ <?d ÐK“ÍI> @  Ü¥ =?d LømW– @  Ü¦ >?d PLzü@H @  Ü§ ??d L@ž5 @  Ü¨ @?d ÐL ë @  Ü© A?d M`©h¤ @  Üª B?d PMâ8z @  Ü« C?d MC(– @  Ü¬ D?d ÐMÁ—?H @  Ü­ E?d N.=r. @  Ü® F?d PN¬¬eð @  Ü¯ G?d N3ØKL @  Ü° H?d ÐN±I\’ @  Ü± I?d Oï=Ý @  Ü² J?d PO‘~* @  Ü³ K?d O0@}ï @  Ü´ L?d ÐO²Ñj1 @  Üµ M?d P~á;$ @  Ü¶ N?d PPüp,ú @  Ü· O?d P«õ^J @  Ü¸ P?d ÐP)dI” @  Ü¹ Q?d Q‹Â(Û @  Üº R?d PQ S? @  Ü» S?d Q¨mhé @  Ü¼ T?d ÐQ*ü7 @  Ü½ U?d RÅV2Q @  Ü¾ V?d PRGÇ% @  Ü¿ W?d Rg²* @  ÜÀ X?d ÐRå#=Ï @  ÜÁ Y?d SG…\€ @  Ü Z?d PSÅK^ @  Üà [?d Sd*² @  ÜÄ \?d ÐSæ» l @  ÜÅ ]?d TÄ @  ÜÆ ^?d PTŠ @  ÜÇ _?d TŸIv @  ÜÈ `?d ÐTG)^¨ @  ÜÉ a?d Uå?ç @  ÜÊ b?d PUg(9 @  ÜË c?d UÆ Õ @  ÜÌ d?d ÐUD±h  @  ÜÍ e?d V«%m @  ÜÎ f?d PV)Š2³ @  ÜÏ g?d V¶þ @  ÜÐ h?d ÐV4o Ñ @  ÜÑ i?d W–Éjž @  ÜÒ j?d PWX}@ @  ÜÓ k?d Wµf*¬ @  ÜÔ l?d ÐW7÷=r @  ÜÕ m?d Xqæ\È @  ÜÖ n?d PXówK @  Ü× o?d X¤ò9¦ @  ÜØ p?d ÐX&c.x @  ÜÙ q?d Y„ÅO7 @  ÜÚ r?d PYTXé @  ÜÛ s?d Y§j @  ÜÜ t?d ÐY%ûÛ @  ÜÝ u?d ZÊQU½ @  ÜÞ v?d PZHÀBc @  Üß w?d ZƲKo @  Üà x?d ÐZD#\± @  Üá y?d [æ…=þ @  Üâ z?d€ P[×6† @  Ý {?d [P¨)C @  Ý |?d Ð[Ò9> @  Ý }?d \|ÐÛØ @  Ý ~?d P\þAÌ @  Ý ?d \W™“ @  Ý €?d Ð\•ÆŽM @  Ý ?d ]ùÒ°x @  Ý ‚?d P]{C§¦ @  Ý ƒ?d ]4 § @  Ý „?d Ð]¥y @  Ý …?d ^·Fªò @  Ý †?d P^5×½, @  Ý ‡?d ^ɰò  @  Ý ˆ?d Ð^K!åÔ @  Ý ‰?d _Š”å @  Ý Š?d P_òß @  Ý ‹?d _lr^Þ @  ÝuÐ` Œ?d Ð_ª¤æ© @  Ý€?d (`£ûE{ @  Ý€Ž?d h`!jR¥ @  Ý€?d ¨`¸]o @  Ý€?d è`:Ìh± @  Ý€‘?d (aVØV„ @  Ý€’?d haÔIAZ @  Ý€“?d ¨a°>í[ @  Ý€”?d èa2¯ú… @  Ý€•?d (bLL @  Ý€–?d hbšÝ[Ð @  Ý€—?d ¨bfºö @  Ý€˜?d èbä+( @  Ý€™?d (c4˜$M @  Ý €š?d hc¶ 3“ @  Ý!€›?d ¨cÒ~Ÿ’ @  Ý"€œ?d ècPïˆL @  Ý#€?d (dþm  @  Ý$€ž?d hd|—z× @  Ý%€Ÿ?d ¨dxnÁ @  Ý&€ ?d èdú†y @  Ý'€¡?d (e–’G* @  Ý(€¢?d hePô @  Ý)€£?d ¨eptüõ @  Ý*€¤?d èeòåë+ @  Ý+€¥?d (fØ]  @  Ý,€¦?d hfZ—J~ @  Ý-€§?d ¨f¦ðX @  Ý.€¨?d èf$a† @  Ý/€©?d (gåÔS @  Ý0€ª?d hggE @  Ý1€«?d ¨g2©Œ @  Ý2€¬?d èg£¾R @  Ý3€­?d (hû$ @  Ý4€®?d hh€j3Û @  Ý5€¯?d ¨h] @  Ý6€°?d èh›Ì Ï @  Ý7€±?d (i÷Ø7ú @  Ý8€²?d hiuI $ @  Ý9€³?d ¨i>Œ% @  Ý:€´?d èi“¯›û @  Ý;€µ?d (j¹L-p @  Ý<€¶?d hj;Ý:® @  Ý=€·?d ¨jǺuˆ @  Ý>€¸?d èjE+bV @  Ý?€¹?d (k;ŸC¡ @  Ý@€º?d hk¹T @  ÝA€»?d ¨kÝyø~ @  ÝB€¼?d èk_èï  @  ÝC€½?d (lñ å @  ÝD€¾?d hls; @  ÝE€¿?d ¨l‡@< @  ÝF€À?d èlÑ â @  ÝG€Á?d (miÅ5× @  ÝH€Â?d hmëT"  @  ÝI€Ã?d ¨m#Ž @  ÝJ€Ä?d èm ²™Ö @  ÝK€Å?d (n'Q/] @  ÝL€Æ?d hn¥À8ƒ @  ÝM€Ç?d ¨nY§w¥ @  ÝN€È?d ènÛ6`{ @  ÝO€É?d (oƒ`® @  ÝP€Ê?d ho˜wp @  ÝQ€Ë?d ¨oüeÛq @  ÝR€Ì?d èo~ô̯ @  ÝS€Í?d (pwfW @  ÝT€Î?d hpõq‰ @  ÝU€Ï?d ¨pl+\C @  ÝV€Ð?d èpîºK @  ÝW€Ñ?d (q‚®u¨ @  ÝX€Ò?d hq?bv @  ÝY€Ó?d ¨qdHÎw @  ÝZ€Ô?d èqæÙÙ© @  Ý[€Õ?d (rÌ:o" @  Ý\€Ö?d hrN«xü @  Ý]€×?d ¨r²Ì7Ú @  Ý^€Ø?d èr0]  @  Ý_€Ù?d (sàîa @  Ý`€Ú?d hsb¿ @  Ýa€Û?d ¨s¼¾ @  Ýb€Ü?d ès„™«` @  Ýc€Ý?d (t*pN% @  Ýd€Þ?d ht¨áYû @  Ýe€ß?d ¨t¬aMí @  Ýf€à?d èt.ðZ3 @  Ýg€á?d (uBäd @  Ýh€â?d huÀusØ @  Ýi€ã?d ¨u¤ßÙ @  Ýj€ä?d èu&“È @  Ýk€å?d (v p~Œ @  Ýl€æ?d hvŽáiR @  Ým€ç?d ¨vr†&t @  Ýn€è?d èvð1ª @  Ýo€é?d (w1¢1 @  Ýp€ê?d hw³3&¡ @  Ýq€ë?d ¨w×DŠ  @  Ýr€ì?d èwUÕ~ @  Ýs€í?d (xÖ) @  Ýt€î?d hxT÷ @  Ýu€ï?d ¨xÍ+== @  Ýv€ð?d èxOº*ã @  Ýw€ñ?d (y#®Ö @  Ýx€ò?d hy¡? @  Ýy€ó?d ¨yÅH¯  @  Ýz€ô?d èyGÙ¸× @  Ý{€õ?d (zm:\ @  Ý|€ö?d hzï«‚ @  Ý}€÷?d ¨zÌV¤ @  Ý~€ø?d èz‘]Az @  Ý€ù?d ({ ¿P¼ @  Ý€€ú?d h{Ž.Gb @  Ý€û?d ¨{êYëc @  Ý‚€ü?d è{hÈü½ @  Ýƒ€ý?d (|Æ!ø @  Ý„€þ?d h|D°& @  Ý…€ÿ?d ¨|ÒÁ¿ @  Ý†€?d è|PPa @  Ý‡€?d (}?d €Œ€cgr @  ÝÅ€??d ÀŒÖ×sU @  ÝÆ€@?d Ÿÿ½ @  ÝÇ€A?d @8RZ¾ @  ÝÈ€B?d €§X@ @  ÝÉ€C?d ÀÞ´áa @  ÝÊ€D?d ŽCðA  @  ÝË€E?d @ŽvÆ@4 @  ÝÌ€F?d €ŽV3BÊ @  ÝÍ€G?d ÀŽ0Ì @  Ý΀H?d Øx”$ @  ÝÏ€I?d @KÇ @  ÝЀJ?d €ká 9 @  ÝÑ€K?d À­ò´ @  ÝÒ€L?d ,ª @  ÝÓ€M?d @& > @  ÝÔ€N?d €ï À @  ÝÕ€O?d À=¼3* @  ÝÖ€P?d ‘íô¿Â @  Ý×€Q?d @‘Ó9Á @  ÝØ€R?d €‘óÌ? @  ÝÙ€S?d À‘5ß¡ @  ÝÚ€T?d ’¨›ß @  ÝÛ€U?d @’­K @  ÝÜ€V?d €’½Xµ @  ÝÝ€W?d À’ã[X³ @  ÝÞ€X?d “3Ô[ @  Ý߀Y?d @“±yh @  Ýà€Z?d €“‘Œjö @  Ýá€[?d À“WŸÓ× @  Ýâ€\?d€ ”–ר @  Þ€]?d @”[áže @  Þ€^?d €”{œ› @  Þ€_?d À”¹f@ @  Þ€`?d •Èñê¨ @  Þ€a?d @•8ŽÑ @  Þ€b?d €•{/ @  Þ€c?d À•Úôt @  Þ€d?d –žTµ @  Þ €e?d @–}á®Ì @  Þ €f?d €–]¬2 @  Þ €g?d À–Æ^ Ù @  Þ €h?d —1 @  Þ €i?d @—æi{H @  Þ€j?d €—Æœy¶ @  Þ€k?d À—cœ¡  @  Þ€l?d ˜Wc- @  Þ€m?d @˜§×i @  Þ€n?d €˜‡éÕ— @  Þ€o?d À˜yó @  Þ€p?d ™©»šx @  Þ€q?d @™YÄ` @  Þ€r?d €™y1bÿ @  Þ€s?d À™q„¤ @  Þ€t?d šìÔ$e @  Þ€u?d @š«Þ @  Þ€v?d €š<^Üâ @  Þ€w?d Àš§}  @  Þ€x?d ›w\ñá @  Þ€y?d @›‡# ˜ @  Þ€z?d €›§Ö f @  Þ€{?d À›Ðöm @  Þ €|?d œ žb @  Þ!€}?d @œúáÿ @  Þ"€~?d €œÚýå @  Þ#€?d ÀœT/F½ @  Þ$€€?d „gÊU @  Þ%€?d @t0, @  Þ&€‚?d €Tí2Ò @  Þ'€ƒ?d À\LÔ‰ @  Þ(€„?d žÁtH @  Þ)€…?d @ž1wŽ1 @  Þ*€†?d €ž‚ŒÏ @  Þ+€‡?d ÀžŠÈ-$ @  Þ,€ˆ?d ŸZ€¡Ì @  Þ-€‰?d @Ÿªÿ[µ @  Þ.€Š?d €ŸŠ YK @  Þ/€‹uР?d ÀŸ/ ð @  Þ0€Œ?d  #,ê @  Þ1?d X ê9 F @  Þ2 Ž?d ˜ Ê̸ @  Þ3 ?d Ø 4ÖË¿ @  Þ4 ?d ¡äžGW @  Þ5 ‘?d X¡á½. @  Þ6 ’?d ˜¡4¿Ð @  Þ7 “?d Ø¡<µY‹ @  Þ8 ”?d ¢¡ñùJ @  Þ9 •?d X¢QŽ3 @  Þ: –?d ˜¢q{Í @  Þ; —?d Ø¢ê1 & @  Þ< ˜?d £:y,Î @  Þ= ™?d X£ÊÖ· @  Þ> š?d ˜£êóÔI @  Þ? ›?d Ø£ðò-Ð @  Þ@ œ?d ¤é¼Þß @  ÞA ?d X¤Ã$¦ @  ÞB ž?d ˜¤96&X @  ÞC Ÿ?d ؤZ›Üƒ @  ÞD  ?d ¥ŠÓPk @  ÞE ¡?d X¥z¬ª @  ÞF ¢?d ˜¥ZY¨ì @  ÞG £?d Ø¥RøN· @  ÞH ¤?d ¦ϼîv @  ÞI ¥?d X¦?à @  ÞJ ¦?d ˜¦6ñ @  ÞK §?d ئ„|· @  ÞL ¨?d §T4;ò @  ÞM ©?d X§¤KÁ‹ @  ÞN ª?d ˜§„¾Ãu @  ÞO «?d ا!¾Î @  ÞP ¬?d ¨A—Ó @  ÞQ ­?d X¨å>mª @  ÞR ®?d ˜¨ÅËoT @  ÞS ¯?d ب;ѬS @  ÞT °?d ©ë™ » @  ÞU ±?d X©æÚ @  ÞV ²?d ˜©;Ø< @  ÞW ³?d Ø©3²>g @  ÞX ´?d ª®öž¦ @  ÞY µ?d Xª^‰dß @  ÞZ ¶?d ˜ª~|f! @  Þ[ ·?d تå6ÇÊ @  Þ\ ¸?d «5~K" @  Þ] ¹?d X«Å±[ @  Þ^ º?d ˜«åô³¥ @  Þ_ »?d Ø«QòL® @  Þ` ¼?d ¬H¼¿¡ @  Þa ½?d X¬¸ÃEØ @  Þb ¾?d ˜¬˜6G& @  Þc ¿?d ج ˨ì @  Þd À?d ­Ûƒ$ @  Þe Á?d X­+üÞ} @  Þf Â?d ˜­ ܃ @  Þg Ã?d Ø­¨:Ø @  Þh Ä?d ®žìš @  Þi Å?d X®n“`` @  Þj Æ?d ˜®Nfbž @  Þk Ç?d Ø®Õ,Ãu @  Þl È?d ¯dO @  Þm É?d X¯õµä @  Þn Ê?d ˜¯Õî· @  Þo Ë?d دpîo¡ @  Þp Ì?d °Î0Ó @  Þq Í?d X°>O)j @  Þr Î?d ˜°º+” @  Þs Ï?d ذà è“ @  Þt Ð?d ±0èd{ @  Þu Ñ?d X±À—ž @  Þv Ò?d ˜±àbœü @  Þw Ó?d رèÃz§ @  Þx Ô?d ²u‡Úf @  Þy Õ?d X²…ø  @  Þz Ö?d ˜²¥ "á @  Þ{ ×?d ز>Gƒ  @  Þ| Ø?d ³îâ @  Þ} Ù?d X³põ› @  Þ~ Ú?d ˜³>…÷e @  Þ Û?d سÇÒ>Í @  Þ€ Ü?d ´ÞœÍ @  Þ Ý?d X´.ã7» @  Þ‚ Þ?d ˜´5E @  Þƒ ß?d Ø´m»Ïž @  Þ„ à?d µ½óCv @  Þ… á?d XµMŒ¹ @  Þ† â?d ˜µmy»ñ @  Þ‡ ã?d صeØ]ª @  Þˆ ä?d ¶øœýk @  Þ‰ å?d X¶ã @  ÞŠ æ?d ˜¶(ì @  Þ‹ ç?d ض³\¤ @  ÞŒ è?d ·c(ï @  Þ é?d X·“kÒ– @  ÞŽ ê?d ˜·³žÐh @  Þ ë?d Ø·žÓ @  Þ ì?d ¸"a„Î @  Þ‘ í?d X¸Ò~· @  Þ’ î?d ˜¸òë|I @  Þ“ ï?d ظ ñ¿N @  Þ” ð?d ¹ܹ3¦ @  Þ• ñ?d X¹,ÆÉß @  Þ– ò?d ˜¹ 3Ë! @  Þ— ó?d ع’-z @  Þ˜ ô?d º™Ö» @  Þ™ õ?d Xºi©w @  Þš ö?d ˜ºI\u< @  Þ› ÷?d غÒÔ× @  Þœ ø?d »^X? @  Þ ù?d X»ò!¢F @  Þž ú?d ˜»ÒÔ ¸ @  ÞŸ û?d Ø»fÒ_³ @  Þ  ü?d ¼œ¬¼ @  Þ¡ ý?d X¼ãVÅ @  Þ¢ þ?d ˜¼¯T; @  Þ£ ÿ?d ؼìhJ @  Þ¤ ?d ½< ¢ @  Þ¥ ?d X½Ì_ùÛ @  Þ¦ ?d ˜½ìªû% @  Þ§ ?d ؽä ~ @  Þ¨ ?d ¾yO½¿ @  Þ© ?d X¾‰0GÆ @  Þª ?d ˜¾©ÅE8 @  Þ« ?d ؾ2äÓ @  Þ¬ ?d ¿âÇh; @  Þ­  ?d X¿¸’B @  Þ®  ?d ˜¿2M¼ @uÐÀ  Þ¯  ?d Ø¿l#s @  Þ° ?d 0ÀÓ"U @  Þ± ?d pÀø¬Ø, @  Þ²?d °ÀØYÚÒ @  Þ³?d ðÀ&CÕ @  Þ´?d 0Áö •= @  Þµ?d pÁtoD @  Þ¶?d °Á&mº @  Þ·?d ðÁ. ‹á @  Þ¸?d 0³d+  @  Þ¹?d pÂCÑY @  Þº?d °ÂcîÓ§ @  Þ»?d ðÂø¤rL @  Þ¼?d 0Ã(ìþ¤ @  Þ½?d pÃØ“Ý @  Þ¾?d °Ãøf# @  Þ¿?d ðÃâgÿº @  ÞÀ?d 0Äû) µ @  ÞÁ?d pÄ VöÌ @  ÞÂ?d °Ä+£ô2 @  ÞÃ?d ðÄHé @  ÞÄ ?d 0ŘF‚ @  ÞÅ!?d pÅh9xx @  ÞÆ"?d °ÅHÌz† @  ÞÇ#?d ðÅ@mœÝ @  ÞÈ$?d 0ÆÝ)< @  ÞÉ%?d pÆ-VÆe @  ÞÊ&?d °Æ £Ä› @  ÞË'?d ðÆ–éep @  ÞÌ(?d 0ÇF¡é˜ @  ÞÍ)?d pǶÞá @  ÞÎ*?d °Ç–+ @  ÞÏ+?d ðÇ3+ɤ @  ÞÐ,?d 0ÈÔE¹ @  ÞÑ-?d pÈ÷«¿À @  ÞÒ.?d °È×^½> @  ÞÓ/?d ðÈ)D~9 @  ÞÔ0?d 0Éù òÑ @  ÞÕ1?d pÉ s¨ @  ÞÖ2?d °É)† V @  Þ×3?d ðÉ!'ì  @  ÞØ4?d 0ʼcLÌ @  ÞÙ5?d pÊL¶µ @  ÞÚ6?d °Êlé´K @  ÞÛ7?d ðÊ÷£  @  ÞÜ8?d 0Ë'ë™H @  ÞÝ9?d pË×”c1 @  ÞÞ:?d °Ë÷aaÏ @  Þß;?d ðËCgžÄ @  Þà<?d 0ÌZ)mË @  Þá=?d p̪V—² @  Þâ>?d€ °Ìþ`‰ê @  ß??d ðÌŒÜ.  @  ß@?d 0Í\”¢á @  ßA?d pÍi¢£u @  ßB?d °ÍIW¡‹ @  ßC?d ðÍDª @  ßD?d 0θk @  ßE?d pÎ,Íh @  ßF?d °Î 8– @  ß G?d ðÎR;E @  ß H?d 0Ï‚sÉx @  ß I?d pÏ·EÈì @  ß J?d °Ï—°Ê @  ß K?d ðÏQ£s3 @  ßL?d 0Ðï}Ï @  ßM?d pÐ|Tb @  ßN?d °Ð\äVœ @  ßO?d ðÐg·nv @  ßP?d 0Ñ·ÿâž @  ßQ?d pÑ‚Éã  @  ßR?d °Ñ¢<áô @  ßS?d ðÑd/XÕ @  ßT?d 0Òùkø @  ßU?d pÒǦ] @  ßV?d °ÒçS_é @  ßW?d ðÒ¹Pï @  ßX?d 0Ói‰ @  ßY?d pÓ\.ˆ“ @  ßZ?d °Ó|ÛŠm @  ß[?d ðÓºÈ3L @  ß\?d 0Ô£†ÀC @  ß]?d pÔ!ì| @  ß ^?d °Ô~î @  ß!_?d ðÔ§ýØ @  ß"`?d 0Õwµó0 @  ß#a?d pÕBƒò¤ @  ß$b?d °ÕbvðZ @  ß%c?d ðÕ¤eI{ @  ß&d?d 0Ö9!éº @  ß'e?d pÖìL¹ @  ß(f?d °Ö'NG @  ß)g?d ðÖyA @  ß*h?d 0שR˜© @  ß+i?d pלd™= @  ß,j?d °×¼‘›Ã @  ß-k?d ð×z‚"â @  ß.l?d 0ØN}®ÿ @  ß/m?d pØÝ5 @  ß0n?d °Øýä7â @  ß1o?d ðØÆ· @  ß2p?d 0Ùÿƒà @  ß3q?d pÙ#É‚t @  ß4r?d °Ù<€Š @  ß5s?d ðÙÅ/9« @  ß6t?d 0ÚXk™j @  ß7u?d pÚf¦— @  ß9w?d ðÚPd‘ @  ß:x?d 0ÛÈèy @  ß;y?d pÛý.éí @  ß<z?d °ÛÝÛë @  ß={?d ðÛÈR2 @  ß>|?d 0܆¡= @  ß?}?d pÜ.ëü @  ß@~?d °Ü @  ßA?d ðÜElY· @  ßB€?d 0Ý•$Õ_ @  ßC?d pÝ ÔË @  ßD‚?d °Ý€çÖ5 @  ßEƒ?d ðÝFôo @  ßF„?d 0ÞÛ°ÏÕ @  ßG…?d pÞå}jÖ @  ßH†?d °Þňh( @  ßI‡?d ðÞ›‹2. @  ßJˆ?d 0ßKþÆ @  ßK‰?d pß~õ¿R @  ßLŠ?d uÐà/°ß^½¬ @  ßM‹?d ðßZºãX @  ßNŒ?d HàC½® @  ßO?d ˆàr3m @  ßPŽ?d Èàð‡$³ @  ßQ?d á™ ‡o @  ßR?d Hᜱ @  ßS‘?d ˆáŒÎ„ @  ßT’?d Èá_“Û @  ßU“?d â×™å @  ßV”?d HâUŠ; @  ßW•?d ˆâÉ¡: @  ßX–?d ÈâK0-Æ @  ßY—?d ãGêìö @  ßZ˜?d HãÅ{û( @  ß[™?d ˆãR)ïœ @  ß\š?d ÈãиøB @  ß]›?d ät¥² @  ß^œ?d Häå²l @  ß_?d ˆä/ë @  ß`ž?d Èä­z Á @  ßaŸ?d åYG–Á @  ßb ?d HåÛÖ @  ßc¡?d ˆåL„•« @  ßd¢?d Èå΂u @  ße£?d æÓŒK @  ßf¤?d Hæ•B›• @  ßg¥?d ˆæ ë+¶ @  ßh¦?d Èæ‹z®³ @  ßÍ?d ˆðE6 p @  ßÎ?d Èðǧ7® @  ß‘Ï?d ñ®-”r @  ß’Ð?d Hñ,¼ƒ¬ @  ß“Ñ?d ˆñ»î— @  ß”Ò?d Èñ9€Æ @  ß•Ó?d ò๎ø @  ß–Ô?d Hòb(™& @  ß—Õ?d ˆòþ) @  ß˜Ö?d Èò|>Û @  ß™×?d ópÊÿë @  ßšØ?d Hóò[è5 @  ß›Ù?d ˆóe ü @  ßœÚ?d Èóç˜ë_ @  ßÛ?d ôºT¶¯ @  ßžÜ?d Hô8Å¡q @  ßŸÝ?d ˆôË @  ß Þ?d ÈôšZÜ @  ß¡ß?d õng…Ü @  ß¢à?d Hõìö’ @  ß£á?d ˆõ{¤†¶ @  ß¤â?d Èõù5‘h @  ß¥ã?d ö óŸV @  ß¦ä?d Hö¢bˆˆ @  ß§å?d ˆö>Ë8« @  ß¨æ?d Èö¼Z/u @  ß©ç?d ÷°€îE @  ßªè?d H÷2ù› @  ß«é?d ˆ÷¥Cí/ @  ß¬ê?d È÷'Òúñ @  ß­ë?d øW¯Ø @  ß®ì?d HøÕ>ÏÍ @  ß¯í?d ˆøä6A @  ß°î?d Èøf§VÐ @  ß±ï?d ù-õ  @  ß²ð?d Hù¼âÒ @  ß³ñ?d ˆùîöf @  ß´ò?d Èù˜á¸ @  ßµó?d úA¹ï† @  ß¶ô?d HúÃ(øX @  ß·õ?d ˆú_H{ @  ß¸ö?d ÈúÝ_¥ @  ß¹÷?d ûÑÊž• @  ßºø?d HûS[‰K @  ß»ù?d ˆûÄ ÿ @  ß¼ú?d ÈûF˜Š! @  ß½û?d üT×Ñ @  ß¾ü?d Hü™ÅÀ @  ß¿ý?d ˆüÌoî @  ßÀþ?d Èü•]x0 @  ßÁÿ?d ýó‘ö¿ @  ßÂ?d Hýqáa @  ßÃ?d ˆýæRõÕ @  ßÄ?d ÈýdÃâ  @  ßÅ?d þ½ì5 @  ßÆ?d Hþ?”ûë @  ßÇ?d ˆþ£=KÈ @  ßÈ?d Èþ!¬\ @  ßÉ?d ÿ-v& @  ßÊ?d Hÿ¯çŠø @  ßË ?d ˆÿ8µžL @  ßÌuÐ  ?d Èÿº$‰’ @  ßÍ ?d ÛÜ Ü @  ßÎ ?d ` YM @  ßÏ ?d   hE”Á @  ßÐ?d à êÔƒ @  ßÑ?d  ƒ^ à @  ßÒ?d ` Ï7 @  ßÓ?d   –#© @  ßÔ?d à  4w @  ßÕ?d  ÍÊ:I @  ßÖ?d ` O[-— @  ß×?d   Óò´ @  ßØ?d à QcŠj @  ßÙ?d  ]¹KZ @  ßÚ?d ` ß(\„ @  ßÛ?d   HzH0 @  ßÜ?d à Êë_î @  ßÝ?d  —' @  ßÞ?d ` ¶À @  ßß?d   5¸¼³ @  ßà?d à ·)«m @  ßá?d  C1m @  ßâ ?d€ ` ùûÔ“ @  à!?d   èˆ @  à"?d à  yŸÐ @  à#?d  öj @  à$?d ` “g}Ý @  à%?d   Á|’„ @  à&?d à Cí…Z @  à'?d  … @  à(?d `  Î @  à )?d   Qã— @  à *?d à ÓžôI @  à +?d  fª-F @  à ,?d ` ä;:˜ @  à -?d   ¶ ÕÁ @  à.?d à 4±Â @  à/?d >(Y @  à0?d ` ¼¹‡ @  à1?d   î¢øÞ @  à2?d à l3ï @  à3?d p¼Ó @  à4?d ` ò-  @  à5?d    6âT @  à6?d à "§õŠ @  à7?d àÏkÀ @  à8?d ` b^| @  à9?d   0E“G @  à:?d à ²Ô„™ @  à;?d *Q"„ @  à<?d ` ¨À5Z @  à=?d   úÛÚ @  à>?d à xJÍÝ @  à??d 2æ @  à @?d ` Œ£8 @  à!A?d   Þ¸üa @  à"B?d à \)ë¿ @  à#C?d  @¦l @  à$D?d ` Â7 ² @  à%E?d   ,æë @  à&F?d à ½ñ5 @  à'G?d  ÐÕo @  à(H?d ` RDx¡ @  à)I?d   _—ø @  à*J?d à ‚΀& @  à+K?d  ½Ûi† @  à,L?d ` ?J~X @  à-M?d   mQ‘ @  à.N?d à ïÀ†ß @  à/O?d  åYD™ @  à0P?d ` gÈSG @  à1Q?d   5Ó¼ @  à2R?d à ·B«À @  à3S?d  «Í^ @  à4T?d ` )\IÍ @  à5U?d   {G¦” @  à6V?d à ùÖ±J @  à7W?d  ;¾/ @  à8X?d ` ¹/8Þ @  à9Y?d   ë4ׇ @  à:Z?d à i¥ÀY @  à;[?d  ñ fD @  à<\?d ` s±qš @  à=]?d   !ªžÃ @  à>^?d à £;‰ @  à?_?d  ‹S¥ @  à@`?d `  …D{ @  àAa?d   [ž«" @  àBb?d à Ù¼ü @  àCc?d  Å€I/ @  àDd?d ` G^ñ @  àEe?d    ±¨ @  àFf?d à —›¦v @  àGg?d  Uó8< @  àHh?d ` ×b/â @  àIi?d   …yÀ» @  àJj?d à è×e @  àKk?d  ²Üj @  àLl?d ` 0M´ @  àMm?d   bVöí @  àNn?d à àÇá3 @  àOo?d  ê^#u @  àPp?d ` hÏ4« @  àQq?d   :ÔÛò @  àRr?d à ¸EÌ, @  àSs?d  ¤Ê9ÿ @  àTt?d ` &[.! @  àUu?d   t@Áx @  àVv?d à öÑÖ¦ @  àWw?d  4¹Hì @  àXx?d ` ¶(_2 @  àYy?d   ä3°k @  àZz?d à f¢§µ @  à[{?d  þ'¨ @  à\|?d ` |¶v @  à]}?d   .­ù/ @  à^~?d à ¬<îñ @  à_?d  Ç‚sX @  à`€?d ` Ed† @  àa?d   ‹ß @  àb‚?d à •™œ @  àcƒ?d  ‰iÒ @  àd„?d `  ‡~  @  àe…?d   Yœ‘U @  àf†?d à Û †‹ @  àg‡?d  eÁ @  àhˆ?d ` ›ô @  ài‰?d   ÉïàFuÐ  @  àjŠ?d à K~÷˜ @  àk‹?d 8 »¾|ì @  àlŒ?d x 9/k2 @  àm?d ¸ k4„k @  ànŽ?d ø 饓µ @  ào?d 8! ã @  à‹«?d 8( Wï+1 @  àŒ¬?d x( Õ~<ï @  à­?d ¸( ‡eÓ¶ @  àŽ®?d ø( ôÄh @  à¯?d 8) m. @  à°?d x) üð @  à‘±?d ¸) ßçþ© @  à’²?d ø) ]véw @  à“³?d 8* Aù¤ @  à”´?d x* Ãh z @  à•µ?d ¸* ‘sä# @  à–¶?d ø* âóý @  à—·?d 8+ ÑŠm· @  à˜¸?d x+ Szi @  à™¹?d ¸+ •0 @  àšº?d ø+ ƒ‘‚î @  à›»?d 8, $ó @  àœ¼?d x, ™…3- @  à½?d ¸, ËžÜt @  àž¾?d ø, I˪ @  àŸ¿?d 8- ?w‘ @  à À?d x- ½æO @  à¡Á?d ¸- ïýú @  à¢Â?d ø- mlíÈ @  à£Ã?d 8. qã @  à¤Ä?d x. órÅ @  à¥Å?d ¸. ¡iàœ @  à¦Æ?d ø. #ø÷B @  à§Ç?d 8/ ái @  à¨È?d x/ c~Ö @  à©É?d ¸/ 1‘ @  àªÊ?d ø/ ³‹†Q @  à«Ë?d 80 Œžoñ @  à¬Ì?d x0 x/ @  à­Í?d ¸0 \—v @  à®Î?d ø0 Þ…€¨ @  à¯Ï?d 81 ÔBî @  à°Ð?d x1 VU0 @  à±Ñ?d ¸1 –ºi @  à²Ò?d ø1 †­· @  à³Ó?d 82 šˆXd @  à´Ô?d x2 Oº @  àµÕ?d ¸2 J ã @  à¶Ö?d ø2 È“·= @  à·×?d 83  û)w @  à¸Ø?d x3 ˆj>© @  à¹Ù?d ¸3 ÚqÑð @  àºÚ?d ø3 XàÆ. @  à»Û?d 84 Àe`3 @  à¼Ü?d x4 Bôwí @  à½Ý?d ¸4  @  à¾Þ?d ø4 ’~j @  à¿ß?d 85 ºQUÒ @  àÀà?d x5 8ÀB  @  àÁá?d ¸5 jÛ­U @  àÂâ?d ø5 èJº‹ @  àÃã?d 86 ôÅOX @  àÄä?d x6 vTX† @  àÅå?d ¸6 $O·ß @  àÆæ?d ø6 ¦Þ  @  àÇç?d 87 d¶>K @  àÈè?d x7 æ')• @  àÉé?d ¸7 ´<ÆÌ @  àÊê?d ø7 6­Ñ @  àËë?d 88 ƒ™ @  àÌì?d x8 à @  àÍí?d ¸8 Sðš @  àÎî?d ø8 Ñ‚çD @  àÏï?d 89 Û% @  àÐð?d x9 YŠ2Ü @  àÑñ?d ¸9  ‘Ý… @  àÒò?d ø9 ‰Ê[ @  àÓó?d 8: •?ˆ @  àÔô?d x: (V @  àÕõ?d ¸: EÇ @  àÖö?d ø: Ç”ÐÑ @  à×÷?d 8; üN› @  àØø?d x; ‡mYE @  àÙù?d ¸; Õv¶ @  àÚú?d ø; Wç¡Â @  àÛû?d 8< Ïbß @  àÜü?d x< Mó @  àÝý?d ¸< èÿX @  àÞþ?d ø< yè† @  àßÿ?d 8= µ©µ @  àà?d x= 78k @  àá?d ¸= e#ç2 @  àâ?d€ ø= QØ Ÿ @  á?d 8> ¬¶e @  á?d x> .‡¡» @  á?d ¸> ¹Õµ @  á?d ø> ;D¢Ñ @  á?d 8? 7žcá @  á?d x? µt? @  á ?duÐ@ 7 ¸? )¦Ä @  á ?d ø? iž4 @  á  ?d P@ ×wü @  á  ?d @ ÷‚þÿ @  á  ?d Ð@ ´ÿk @  á ?d A üsƒ @  á ?d PA )¯Ki @  á ?d A  ZI— @  á ?d ÐA š6Òt @  á ?d B rrµ @  á ?d PB ÁaË” @  á ?d B á”Éj @  á ?d ÐB Ô¢Èþ @  á ?d C êD @  á ?d PC Zé @  á ?d C zî @  á ?d ÐC Dѹí @  á ?d D ]ŸJâ @  á ?d PD ›Œóà @  á ?d D »yñ= @  á ?d ÐD ŽOð© @  á ?d E ^|A @  á ?d PE øã}w @  á  ?d E ؉ @  á !?d ÐE Z|ÃÚ @  á "?d F Ç8c @  á! #?d PF +Ú: @  á" $?d F !ÞØÄ @  á# %?d ÐF èÙP @  á$ &?d G Ä U¸ @  á% '?d PG 𣾠@  á& (?d G ºV @ @  á' )?d ÐG „›¨C @  á( *?d H °d$^ @  á) +?d PH vw @  á* ,?d H V‚Ÿ @  á+ -?d ÐH c´ž @  á, .?d I ³üý @  á- /?d PI ˆ¯* @  á. 0?d I ¨Z(é @  á/ 1?d ÐI ;6³  @  á0 2?d J ¦rË @  á1 3?d PJ `aªê @  á2 4?d J @”¨ @  á3 5?d ÐJ u¢©€ @  á4 6?d K ¥ê%h @  á5 7?d PK ûén @  á6 8?d K Û} @  á7 9?d ÐK åÑØ“ @  á8 :?d L üŸ+œ @  á9 ;?d PL :Œ’½ @  á: <?d L yC @  á; =?d ÐL /O‘× @  á< >?d M ÿ? @  á= ??d PM ©³  @  á> @?d M ‰F æ @  á? A?d ÐM ¥+±' @  á@ B?d N 8oæ @  áA C?d PN þ|¨Ç @  áB D?d N Þ‰ª9 @  áC E?d ÐN ë¿«­ @  áD F?d O ;÷'E @  áE G?d PO eô}C @  áF H?d O E½ @  áG I?d ÐO {ÌÚ¾ @  áH J?d P Åf  @  áI K?d PP ß- @  áJ L?d P #ôÝÓ @  áK M?d ÐP ÂÜG @  áL N?d Q ÆŠP¯ @  áM O?d PQ ýÙhE @  áN P?d Q Ý,j» @  áO Q?d ÐQ N@ñX @  áP R?d R ÓQ™ @  áQ S?d PR è¸ @  áR T?d R 5âêF @  áS U?d ÐR ÔëÒ @  áT V?d S Мg: @  áU W?d PS ŽŸ=< @  áV X?d S ®j? @  áW Y?d ÐS §šÁ @  áX Z?d T ‰éiÎ @  áY [?d PT OúÐï @  áZ \?d T oÒ @  á[ ]?d ÐT Z9Ó… @  á\ ^?d U Šq_m @  á] _?d PU ,•^[ @  á^ `?d U  `\¥ @  á_ a?d ÐU Ž àö @  á` b?d V N@7 @  áa c?d PV Õ]ù @  áb d?d V õ¨ûè @  ác e?d ÐV Àžú| @  ád f?d W Öv” @  áe g?d PW NÕ,’ @  áf h?d W n .l @  ág i?d ÐW Pí‹o @  áh j?d X dr @  ái k?d PX ¢¾S @  áj l?d X ‚ô¼­ @  ák m?d ÐX ·Â½9 @  ál n?d Y gŠ1Ñ @  ám o?d PY \Ù ; @  án p?d Y |, Å @  áo q?d ÐY ï@& @  áp r?d Z r0ç @  áq s?d PZ ´‰Æ @  ár t?d Z ”â‹8 @  ás u?d ÐZ ¡ÔЬ @  át v?d [ qœD @  áu w?d P[ /Ÿ\B @  áv x?d [ j^¼ @  áw y?d Ð[ 1§û¿ @  áx z?d \ (é° @  áy {?d P\ îú±‘ @  áz |?d \ γo @  á{ }?d Ð\ û9²û @  á| ~?d ] +q> @  á} ?d P] `~¦ @  á~ €?d ] @ö|X @  á ?d Ð] Íö¨ @  á€ ‚?d ^ ‰Vi @  á ƒ?d P^ ÔšïH @  á‚ „?d ^ ôoí¶ @  áƒ …?d Ð^ ÁYì" @  á„ †?d _ `Ê @  á… ‡?d P_ O:Ì @  á† ˆ?d _ oç82 @  áuÐ` ‡ ‰?d Ð_ híAä @  áˆŠ?d (` Öô| @  á‰‹?d h` M] @  áŠŒ?d ¨` 0óO£ @  á‹?d è` ÅN7 @  áŒŽ?d (a ÕÂß @  á?d ha îÞú5 @  áŽ?d ¨a Î+øË @  á‘?d èa ]Gc( @  á’?d (b ÀÃé @  á‘“?d hb zÈ @  á’”?d ¨b &åx6 @  á“•?d èb Óy¢ @  á”–?d (c ÛõJ @  á•—?d hc ˜¯L @  á–˜?d ¨c ½m­² @  á—™?d èc ƒ ± @  á˜š?d (d šîû¾ @  á™›?d hd \ýBŸ @  ášœ?d ¨d |@a @  á›?d èd I>Aõ @  áœž?d (e ™vÍ @  áŸ?d he ?’Ì+ @  áž ?d ¨e gÎÕ @  áŸ¡?d èe  r† @  á ¢?d (f IÒG @  á¡£?d hf ÆZkf @  á¢¤?d ¨f æ¯i˜ @  á£¥?d èf Ó™h  @  á¤¦?d (g Ñää @  á¥§?d hg ]Ò¾â @  á¦¨?d ¨g }'¼ @  á§©?d èg Cê @  á¨ª?d (h w• @  á©«?d hh ±,# @  áª¬?d ¨h ‘ó.Ý @  á«­?d èh ¤Å/I @  á¬®?d (i t£¡ @  á­¯?d hi OÞ›K @  á®°?d ¨i o+™µ @  á¯±?d èi üGV @  á°²?d (j a¢— @  á±³?d hj §¶ @  á²´?d ¨j ‡åH @  á³µ?d èj ²ÓÜ @  á´¶?d (k b›”4 @  áµ·?d hk <˜Î2 @  á¶¸?d ¨k mÌÌ @  á·¹?d èk " iÏ @  á¸º?d (l ;îšÀ @  á¹»?d hl ýý#á @  áº¼?d ¨l Ý! @  á»½?d èl è> ‹ @  á¼¾?d (m 8v¬c @  á½¿?d hm n¸D @  á¾À?d ¨m N7ºº @  á¿Á?d èm bZ{ @  áÀÂ?d (n ÿ º @  áÁÃ?d hn 9 › @  áÂÄ?d ¨n øe @  áÃÅ?d èn ,Îñ @  áÄÆ?d (o ü†– @  áÅÇ?d ho ¢…Ì @  áÆÈ?d ¨o ‚pÎá @  áÇÉ?d èo ¼½kâ @  áÈÊ?d (p c×P @  áÉË?d hp Äpnq @  áÊÌ?d ¨p ä…l @  áËÍ?d èp ѳm @  áÌÎ?d (q ûáó @  áÍÏ?d hq :¨Ù @  áÎÐ?d ¨q ]Ûç @  áÏÑ?d èq ‰1@ @  áÐÒ?d (r uàÅ @  áÑÓ?d hr ÒfYä @  áÒÔ?d ¨r ò“[ @  áÓÕ?d èr Ç¥ZŽ @  áÔÖ?d (s íÖf @  áÕ×?d hs IîŒ` @  áÖØ?d ¨s iŽž @  á×Ù?d ès WÖ+ @  áØÚ?d (t N˜Ø’ @  áÙÛ?d ht ˆ‹a³ @  áÚÜ?d ¨t ¨~cM @  áÛÝ?d èt HbÙ @  áÜÞ?d (u Mî1 @  áÝß?d hu ëäï @  áÞà?d ¨u Ëíù @  áßá?d èu I{Qª @  áàâ?d (v Ô?ñk @  ááã?d hv ,HJ @  áâä?d€ ¨v óž½´ @  âå?d èv 'éô  @  âæ?d (w ÷¡xá @  âç?d hw lëÙ  @  âè?d ¨w LÛô @  âé?d èw ¼a! @  âê?d (x ˆž­ @  âë?d hx €?KË @  âì?d ¨x  ÊI5 @  â í?d èx Pµ³L @  â î?d (y €ý?¤ @  â ï?d hy ~çü£ @  â ð?d ¨y ^þ] @  â ñ?d èy ®m$ @  âò?d (z 3)¤å @  âó?d hz –)|^ @  âô?d ¨z ¶Ü~  @  âõ?d èz F£„Ù @  âö?d ({ –ë1 @  â÷?d h{  ¡©Ú @  âø?d ¨{ -T«$ @  âù?d è{ Ý+Q] @  âú?d (| Äe¢R @  âû?d h| ÌÄD  @  âü?d ¨| ì1F÷ @  âý?d è| N¼Ž @  âþ?d (} Ì0f @  âÿ?d h} =ZÞ2 @  â?d ¨} ¯ÜÌ @  â?d è} íÐ&µ @  â?d (~ p”†t @  â?d h~ Ä’y @  â ?d ¨~ äg{ @  â!?d è~ ø @  â"?d ( ÄP  @  â#?d h _¬û @  â$?d ¨ uЀ 'ï® @  â% ?d è ¶Wˆ© @  â&  ?d @€ ØéjÝ @  â'  ?d €€ r,™¦ @  â(  ?d À€ ð½Žx @  â)  ?d Rï7 @  â* ?d @ Њøé @  â+ ?d € Œô.Î @  â, ?d À e9 @  â- ?d ‚ áÏtv @  â. ?d @‚ c^c¨ @  â/ ?d €‚ d:®3 @  â0 ?d À‚ 櫹í @  â1 ?d ƒ D Ø¢ @  â2 ?d @ƒ ÆœÏ| @  â3 ?d €ƒ ÿ²{· @  â4 ?d Àƒ }#li @  â5 ?d „ ƒrÁ @  â6 ?d @„ ”e @  â7 ?d €„ >×–d @  â8 ?d À„ ¼Fº @  â9 ?d … ààõ @  â: ?d @… œq÷+ @  â; ?d €… ]¸Ð @  â<  ?d À… ß) @  â= !?d † 0ƒBh @  â> "?d @† ²U¶ @  â? #?d €†  w¹ @  â@ $?d À† ˆæ®Ñ @  âA %?d ‡ *@Ïž @  âB &?d @‡ ¨ÑØ@ @  âC '?d €‡ ‘ÿl‹ @  âD (?d À‡ n{U @  âE )?d ˆ Uï @  âF *?d @ˆ ×î 1 @  âG +?d €ˆ }+þJ @  âH ,?d Àˆ ÿºé” @  âI -?d ‰ ]ˆÛ @  âJ .?d @‰ ߟ @  âK /?d €‰ ƒóI" @  âL 0?d À‰ b^ü @  âM 1?d Š îÈš @  âN 2?d @Š lYD @  âO 3?d €Š k=Éß @  âP 4?d ÀŠ é¬Þ @  âQ 5?d ‹ K ¿N @  âR 6?d @‹ É›¨ @  âS 7?d €‹ ðµ[ @  âT 8?d À‹ r$ … @  âU 9?d Œ „- @  âV :?d @Œ ›ó @  âW ;?d €Œ 1Ðñˆ @  âX <?d ÀŒ ³AæV @  âY =?d ç‡ @  âZ >?d @ “vÇ @  â[ ??d € ¢ïj- @  â\ @?d À  ~}ó @  â] A?d Ž ÏÔ0• @  â^ B?d @Ž ME'K @  â_ C?d €Ž ['Í` @  â` D?d ÀŽ Ù¶Ú¾ @  âa E?d {»ñ @  âb F?d @ ù¬/ @  âc G?d € À¯ä @  âd H?d À B>: @  âe I?d Ž^/ @  âf J?d @  ŸIñ @  âg K?d € ¦ZºŠ @  âh L?d À $Ë­T @  âi M?d ‘ †mÌ @  âj N?d @‘ üÛÅ @  âk O?d €‘ X‚ â @  âl P?d À‘ Ú< @  âm Q?d ’ 5¹WZ @  ân R?d @’ ·(@„ @  âo S?d €’ °L @  âp T?d À’ 2ÝšÁ @  âq U?d “ {ûŽ @  âr V?d @“ êìP @  âs W?d €“ +ÄX› @  ât X?d À“ ©UOE @  âu Y?d ” ÂõQí @  âv Z?d @” @dF3 @  âw [?d €” ꡵H @  âx \?d À” h0¢– @  ây ]?d • Ê–ÃÙ @  âz ^?d @• HÔ @  â{ _?d €• ‰Î;ü @  â| `?d À•  _," @  â} a?d – äõaD @  â~ b?d @– fdvš @  â c?d €– =Wª @  â€ d?d À– ¿Æ½Ì @  â e?d — `܃ @  â‚ f?d @— ŸñË] @  âƒ g?d €— ¦ß– @  â„ h?d À— $NhH @  â… i?d ˜ b_ ò @  â† j?d @˜ àÎ, @  â‡ k?d €˜ J íW @  âˆ l?d À˜ Èšú‰ @  â‰ m?d ™ j<›Æ @  âŠ n?d @™ è­Œ @  â‹ o?d €™ ´ÓZ? @  âŒ p?d À™ 6BMá @  â q?d š Ùè‡ @  âŽ r?d @š [yY @  â s?d €š \Ú @  â t?d Àš ÞŒÍ @  â‘ u?d › |*¬S @  â’ v?d @› þ»» @  â“ w?d €› Ç•F @  â” x?d À› E˜ @  â• y?d œ .¤0 @  â– z?d @œ ¬5î @  â— {?d €œ ðâ• @  â˜ |?d Àœ „aõK @  â™ }?d &Ç” @  âš ~?d @ ¤VƒÚ @  â› ?d € ˆ -¢ @  âœ €?d À  ˜:| @  â ?d ž å2w @  âž ‚?d @ž g£`Ä @  âŸ ƒ?d €ž qÁŠï @  â  „?d Àž óP1 @  â¡ …?d Ÿ Qöü~ @  â¢ †?d @Ÿ Ógë  @  â£ ‡?d €Ÿ êI_k @  â¤ ˆuР ?d ÀŸ hØHµ @  â¥ ‰?d   Rú§¡ @  â¦Š?d X  Ðk° @  â§‹?d ˜  z®C @  â¨Œ?d Ø  ø?TÚ @  â©?d ¡ Z™5• @  âªŽ?d X¡ Ø"K @  â«?d ˜¡ „vôl @  â¬?d Ø¡ çã² @  â­‘?d ¢ éM®Ô @  â®’?d X¢ kܹ  @  â¯“?d ˜¢ l¸t‘ @  â°”?d Ø¢ î)cO @  â±•?d £ L @  â²–?d X£ ÎÞ @  â³—?d ˜£ ÷0¡ @  â´˜?d Ø£ u¡¶Ë @  âµ™?d ¤ ¨c @  â¶š?d X¤ œ¿½ @  â·›?d ˜¤ 6ULÆ @  â¸œ?d ؤ ´Ä[ @  â¹?d ¥ b:W @  âºž?d X¥ ”ó-‰ @  â»Ÿ?d ˜¥ U:Âr @  â¼ ?d Ø¥ ׫լ @  â½¡?d ¦ 8˜Ê @  â¾¢?d X¦ º @  â¿£?d ˜¦ õc­ @  âÀ¤?d ئ €dts @  âÁ¥?d § "Â< @  â¦?d X§  Sâ @  âç?d ˜§ ™}¶) @  âĨ?d ا ì¡÷ @  âÅ©?d ¨ ]ýÀM @  âƪ?d X¨ ßlד @  âÇ«?d ˜¨ u©$è @  âȬ?d ب ÷836 @  âÉ­?d © UžRy @  âÊ®?d X© ×E§ @  â˯?d ˜© ‹q“€ @  â̰?d Ø©  à„^ @  âͱ?d ª æJÉ8 @  âβ?d Xª dÛÞæ @  âϳ?d ˜ª c¿} @  âд?d ت ØéØv @  âÑ µ?d « zO¹9 @  âÒ ¶?d X« øÞ®ç @  âÓ ·?d ˜« Áð, @  âÔ ¸?d Ø« Ca ò @  âÕ ¹?d ¬ (ÁZ @  âÖ º?d X¬ ªP„ @  â× »?d ˜¬ •÷ÿ @  âØ ¼?d ج ‚à! @  âÙ ½?d ­  ¢n @  âÚ ¾?d X­ ¢3–° @  âÛ ¿?d ˜­ “ªlZ @  âÜ À?d Ø­ ;{„ @  âÝ Á?d ® þ‘6â @  âÞ Â?d X® |!< @  âß Ã?d ˜® jbË @  âà Ä?d Ø® èóÜÉ @  âá Å?d ¯ JU½† @  ââ Æ?d€ X¯ ¼¶þ @  ã Ç?d ˜¯ dhJ @  ã È?d د æù] @  ã É?d ° ï€÷: @  ã Ê?d X° màä @  ã Ë?d ˜°  fLå @  ã Ì?d ذ ‹÷[; @  ã Í?d ± çãe @  ã Î?d X± errÐ @  ã Ï?d ˜± üE_ @  ã Ð?d ر ~ÔHÄ @  ã Ñ?d ² T7þO @  ã Ò?d X² Ö¦é‘ @  ã Ó?d ˜² ²ÑE @  ã Ô?d ز 0@RN @  ã Õ?d ³ ñõR› @  ã Ö?d X³ sdEE @  ã ×?d ˜³  c @  ã Ø?d س  ’½ @  ã Ù?d ´ £{øø @  ã Ú?d X´ !êï& @  ã Û?d ˜´ EC' @  ã Ü?d Ø´ Ç Tù @  ã Ý?d µ «jÌ @  ã Þ?d Xµ )‰} @  ã ß?d ˜µ - i @  ã à?d ص ¯˜~Ú @  ã á?d ¶ …{ÈQ @  ã â?d X¶ êß @  ã ã?d ˜¶ csŽ @  ã ä?d ض á dP @  ã å?d · 1¿C5 @  ã æ?d X· ³.Të @  ã! ç?d ˜· OIÍ @  ã" è?d Ø· ÍØ  @  ã# é?d ¸ N€–D @  ã$ ê?d X¸ Ìš @  ã% ë?d ˜¸ ¨f-› @  ã& ì?d ظ *÷:E @  ã' í?d ¹ Fãp @  ã( î?d X¹ Är® @  ã) ï?d ˜¹ ]E>d @  ã* ð?d ع ßÔ)º @  ã+ ñ?d º õ7Ÿ1 @  ã, ò?d Xº w¦ˆï @  ã- ó?d ˜º Ñ$î @  ã. ô?d غ ‘@30 @  ã/ õ?d » Põ3å @  ã0 ö?d X» Òd$; @  ã1 ÷?d ˜» .k @  ã2 ø?d Ø» ¬’|à @  ã3 ù?d ¼ {™† @  ã4 ú?d X¼ €êŽX @  ã5 û?d ˜¼ ä"Y @  ã6 ü?d ؼ f 5‡ @  ã7 ý?d ½   ² @  ã8 þ?d X½ ˆ‰l @  ã9 ÿ?d ˜½ ¬Ú)Ð @  ã: ?d ؽ .K> @  ã; ?d ¾ ¨ˆ… @  ã< ?d X¾ †9Ÿ[ @  ã= ?d ˜¾ âN3Z @  ã> ?d ؾ `ß$„ @  ã? ?d ¿ ks @  ã@ ?d X¿ œú­ @  ãA ?d ˜¿ `]‹ @uÐÀ   ãB ?d Ø¿ â JU @  ãC  ?d 0À 1[ M @  ãD  ?d pÀ Š ÆF @  ãE ?d °À îzjG @  ãF ?d ðÀ lë}™ @  ãG ?d 0Á ÿC¬ @  ãH?d pÁ ‚nTr @  ãI?d °Á Yy¸ @  ãJ?d ðÁ ™Ènf @  ãK?d 0 ³+Øí @  ãL?d p 1ºÏ3 @  ãM?d °Â UÍc2 @  ãN?d ð ×\tì @  ãO?d 0à ét9 @  ãP?d pà ”xcç @  ãQ?d °Ã h,Á @  ãR?d ðà êŽ; @  ãS?d 0Ä DgÞZ @  ãT?d pÄ ÆöÉ„ @  ãU?d °Ä ¢e… @  ãV?d ðÄ  r[ @  ãW?d 0Å LLn @  ãX?d pÅ Ε[° @  ãY?d °Å ÊO¦ @  ãZ ?d ðÅ H„Xx @  ã[!?d 0Æ bgîó @  ã\"?d pÆ àöù- @  ã]#?d °Æ „U, @  ã^$?d ðÆ Bò @  ã_%?d 0Ç Ö£e— @  ã`&?d pÇ T2rI @  ãa'?d °Ç ¨U=o @  ãb(?d ðÇ *Ä*± @  ãc)?d 0È ©œ°æ @  ãd*?d pÈ + §8 @  ãe+?d °È Oz 9 @  ãf,?d ðÈ Íëç @  ãg-?d 0É ¡ÿ"Ò @  ãh.?d pÉ #n5  @  ãi/?d °É ºYÆ @  ãj0?d ðÉ 8È @  ãk1?d 0Ê +¹“ @  ãl2?d pÊ º®M @  ãm3?d °Ê ôÍL @  ãn4?d ðÊ v\’ @  ão5?d 0Ë ·éG @  ãp6?d pË 5x™ @  ãq7?d °Ë ÉM¿ @  ãr8?d ðË KŽZa @  ãs9?d 0Ì åg¿$ @  ãt:?d pÌ gö¨ú @  ãu;?d °Ì û @  ãv<?d ðÌ % @  ãw=?d 0Í í- @  ãx>?d pÍ o•:Î @  ãy??d °Í ›E;É @  ãz@?d ðÍ Ô, @  ã{A?d 0Î 37šœ @  ã|B?d pÎ ±¦B @  ã}C?d °Î ÕÑ!C @  ã~D?d ðÎ W@6 @  ãE?d 0Ï Ê¢'[ @  ã€F?d pÏ H30… @  ãG?d °Ï ´T£ @  ã‚H?d ðÏ 6Åh} @  ãƒI?d 0Ð ?¼Â… @  ã„J?d pÐ ½-Õ[ @  ã…K?d °Ð ÙZyZ @  ã†L?d ðÐ [Ën„ @  ã‡M?d 0Ñ 7ßP± @  ãˆN?d pÑ µNGo @  ã‰O?d °Ñ ,yj¥ @  ãŠP?d ðÑ ®è}{ @  ã‹Q?d 0Ò „ Ëð @  ãŒR?d pÒ šÜ. @  ãS?d °Ò bíp/ @  ãŽT?d ðÒ à|gñ @  ãU?d 0Ó !Ég$ @  ãV?d pÓ £Xpú @  ã‘W?d °Ó _??Ü @  ã’X?d ðÓ Ý®( @  ã“Y?d 0Ô sGÍG @  ã”Z?d pÔ ñÖÚ™ @  ã•[?d °Ô •¡v˜ @  ã–\?d ðÔ 0aF @  ã—]?d 0Õ {$_s @  ã˜^?d pÕ ùµH­ @  ã™_?d °Õ ý5\» @  ãš`?d ðÕ ¤Ke @  ã›a?d 0Ö UGýî @  ãœb?d pÖ ×Öê0 @  ãc?d °Ö ³¡F1 @  ãžd?d ðÖ 10Qï @  ãŸe?d 0× áƒvŠ @  ã f?d p× caT @  ã¡g?d °× Ÿu.r @  ã¢h?d ð× ä9¬ @  ã£i?d 0Ø ž¼£û @  ã¤j?d pØ -´% @  ã¥k?d °Ø xZ$ @  ã¦l?d ðØ úËú @  ã§m?d 0Ù –ß1Ï @  ã¨n?d pÙ N& @  ã©o?d °Ù y Û @  ãªp?d ðÙ è @  ã«q?d 0Ú % ªŽ @  ã¬r?d pÚ §š½P @  ã­s?d °Ú ÃíQ @  ã®t?d ðÚ A| @  ã¯u?d 0Û €ÉZ @  ã°v?d pÛ X„ @  ã±w?d °Û þ?^¢ @  ã²x?d ðÛ |®I| @  ã³y?d 0Ü ÒG¬9 @  ã´z?d pÜ PÖ»ç @  ãµ{?d °Ü 4¡æ @  ã¶|?d ðÜ ¶08 @  ã·}?d 0Ý Ú$>  @  ã¸~?d pÝ Xµ)Ó @  ã¹?d °Ý ±£|F @  ãº€?d ðÝ 32k˜ @  ã»?d 0Þ ÑÝ @  ã¼‚?d pÞ ›@ÊÍ @  ã½ƒ?d °Þ ÿ7fÌ @  ã¾„?d ðÞ }¦q @  ã¿…?d 0ß På @  ãÀ†?d pß ƒG; @  ãÁ‡?d uÐà /°ß }ä @  ãˆ?d ðß Ʋà @  ãà ‰?d Hà h±‹ª @  ãÄ Š?d ˆà HD‰T @  ãÅ ‹?d Èà ŽW0u @  ãÆ Œ?d á ^¼ @  ãÇ ?d Há `Òž @  ãÈ Ž?d ˆá @'` @  ãÉ ?d Èá {t#Š @  ãÊ ?d â æ0ƒK @  ãË ‘?d Hâ Ó‚ß @  ãÌ ’?d ˆâ óó€! @  ãÍ “?d Èâ 5à9 @  ãÎ ”?d ã 娵è @  ãÏ •?d Hã vÄ.  @  ãÐ –?d ˆã V1,õ @  ãÑ —?d Èã 2vó @  ãÒ ˜?d ä |…ü @  ãÓ ™?d Hä $J„h @  ãÔ š?d ˆä ¿†– @  ãÕ ›?d Èä ¬?· @  ãÖ œ?d å ä³_ @  ã× ?d Hå ,)\ @  ãØ ž?d ˆå  Ü¢ @  ãÙ Ÿ?d Èå ª8” @  ãÚ  ?d æ 7|µU @  ãÛ ¡?d Hæ J´Á @  ãÜ ¢?d ˆæ "¿¶? @  ãÝ £?d Èæ ä¬ @  ãÞ ¤?d ç 4äƒö @  ãß ¥?d Hç ¶Ž?¥ @  ãà ¦?d ˆç –{=[ @  ãá §?d Èç Èxg] @  ãâ ¨?d€ è zÑCù @  ä ©?d Hè ®¦ D @  ä ª?d ˆè ŽSº @  ä «?d Èè  Jv @  ä ¬?d é ]AÆž @  ä ­?d Hé ­><ç @  ä ®?d ˆé Ë> @  ä ¯?d Èé x*Y‰ @  ä °?d ê ånùH @  ä ±?d Hê 1 @  ä ²?d ˆê 5äÏ @  ä ³?d Èê 6¾C @  ä ´?d ë æöÏë @  ä µ?d Hë ‰5’ @  ä ¶?d ˆë 6|7l @  ä ·?d Èë  l ð @  ä ¸?d ì "ÿÿ @  ä ¹?d Hì â]† @  ä º?d ˆì ¨x @  ä »?d Èì ÁòE´ @  ä ¼?d í ºÉ\ @  ä ½?d Hí áÅ3% @  ä ¾?d ˆí Á01Û @  ä ¿?d Èí Y6z† @  ä À?d î ÄrÚG @  ä Á?d Hî 4 > @  ä Â?d ˆî ø"À @  ä Ã?d Èî ¢`  @  ä Ä?d ï Çêìä @  ä Å?d Hï 7• @  ä Æ?d ˆï `c @  ä Ç?d Èï ;vO @  ä È?d ð …¨´ý @  ä! É?d Hð u×N„ @  ä" Ê?d ˆð U"Lz @  ä# Ë?d Èð Vx¶ @  ä$ Ì?d ñ †0‚^ @  ä% Í?d Hñ vOx' @  ä& Î?d ˆñ VºzÙ @  ä' Ï?d Èñ £[I @  ä( Ð?d ò >½ˆ @  ä) Ñ?d Hò Î`Gñ @  ä* Ò?d ˆò î•E @  ä+ Ó?d Èò íÏà @  ä, Ô?d ó =‡‹+ @  ä- Õ?d Hó ÍøqR @  ä. Ö?d ˆó í s¬ @  ä/ ×?d Èó ÐH0 @  ä0 Ø?d ô ÉS»? @  ä1 Ù?d Hô 9,AF @  ä2 Ú?d ˆô ÙC¸ @  ä3 Û?d Èô ƒt @  ä4 Ü?d õ ÊËœ @  ä5 Ý?d Hõ :´wå @  ä6 Þ?d ˆõ Au @  ä7 ß?d Èõ r+W @  ä8 à?d ö ïS‹– @  ä9 á?d Hö ,qï @  ä: â?d ˆö ?Ùs @  ä; ã?d Èö <ƒ1Ý @  ä< ä?d ÷ ì˽5 @  ä= å?d H÷ ´GL @  ä> æ?d ˆ÷ ·… @  ät ?d !v;m @  äu ?d `!} Á @  äv ?d  !]üÃê @  äw ?d à!5ª¦ @  äx  ?d !¨î=g @  äy !?d `!X‘Ç @  äz "?d  !xdÅà @  ä{ #?d à!{>‡, @  ä| $?d !«v Ä @  ä} %?d `![ ñ½ @  ä~ &?d  !{üóC @  ä '?d à!»ÙÌ @  ä€ (?d !.DUÑ @  ä )?d `!Þ;¯¨ @  ä‚ *?d  !þέV @  äƒ +?d à!ý”ïš @  ä„ ,?d !-Ücr @  ä… -?d ` !Ý£™  @  ä† .?d   !ýV›õ @  ä‡ /?d à !·üe @  äˆ 0?d !•ó\¤ @  ä‰ 1?d ` !eŒ¦Ý @  äŠ 2?d   !Ey¤# @  ä‹ 3?d à !F#æï @  äŒ 4?d !–kj @  ä 5?d ` !f~ @  äŽ 6?d   !Fá’€ @  ä 7?d à !{ñ© @  ä 8?d !b¿Z @  ä‘ 9?d ` !’À j @  ä’ :?d   !²5¢” @  ä“ ;?d à !±oàX @  ä” <?d !a'l° @  ä• =?d ` !‘X–É @  ä– >?d   !±­”7 @  ä— ??d à !)«ßj @  ä˜ @?d !´ï« @  ä™ A?d `!D…Ò @  äš B?d  !de‡, @  ä› C?d à!g?Åà @  äœ D?d !·wI @  ä E?d `!G³q @  äž F?d  !gý± @  äŸ G?d à!Kë­£ @  ä  H?d !õ5 @  ä¡ I?d `!Jëh @  ä¢ J?d  !%¿é– @  ä£ K?d à!&å«Z @  ä¤ L?d !ö­'² @  ä¥ M?d `!ÒÝË @  ä¦ N?d  !&'ß5 @  ä§ O?d à!ÓÆ¸¥ @  ä¨ P?d !N‚d @  ä© Q?d `!¾ýâ @  äª R?d  !žàã @  ä« S?d à!R¢/ @  ä¬ T?d !M.Ç @  ä­ U?d `!½eÔ¾ @  ä® V?d  !Ö@ @  ä¯ W?d à! €íÜ @  ä° X?d !¹ÎÓ @  ä± Y?d `!I±äª @  ä² Z?d  !iDæT @  ä³ [?d à!j¤˜ @  ä´ \?d !ºV(p @  äµ ]?d `!J)Ò  @  ä¶ ^?d  !jÜÐ÷ @  ä· _?d à!ŠŽ» @  ä¸ `?d !ŸÎ.z @  ä¹ a?d `!o±Ô @  äº b?d  !ODÖý @  ä» c?d à!L”1 @  ä¼ d?d !œVÙ @  ä½ e?d `!l)â  @  ä¾ f?d  !LÜà^ @  ä¿ g?d à!ÎÍúà @  äÀ h?d !ú2vý @  äÁ i?d `! MŒ„ @  ä j?d  !*¸Žz @  äà k?d à!)â̶ @  äÄ l?d !ùª@^ @  äÅ m?d `! Õº' @  äÆ n?d  !) ¸Ù @  äÇ o?d à!ÜÁßI @  äÈ p?d !A…ˆ @  äÉ q?d `!±ú…ñ @  äÊ r?d  !‘‡ @  äË s?d à!’UÅà @  äÌ t?d !BI+ @  äÍ u?d `!²b³R @  äÎ v?d  !’—±¬ @  äÏ w?d à!¯‡Š0 @  äÐ x?d !¶Éy? @  äÑ y?d `!F¶ƒF @  äÒ z?d  !fC¸ @  äÓ {?d à!eÃt @  äÔ |?d !µQOœ @  äÕ }?d `!E.µå @  äÖ ~?d  !eÛ· @  ä× ?d à!à¨Ô @  äØ €?d !}_ @  äÙ ?d `! òl @  äÚ ‚?d  !­Õð’ @  äÛ ƒ?d à!®²^ @  äÜ „?d !~Ç>¶ @  äÝ …?d `!ޏÄÏ @  äÞ †?d  !®MÆ1uÐ ! @  äß ‡?d à!»œÈ @  äàˆ?d 8 !Ê—Ø® @  äá‰?d x !:è"× @  äâŠ?d€ ¸ !nÞ< @  å‹?d ø !ŒÅ6j @  åŒ?d 8!!\º‚ @  å?d x!!i»» @  åŽ?d ¸!!IN¹è @  å?d ø!!r @  å?d 8"!ïY!à @  å‘?d x"!Ñ”„À @  å’?d ¸"!ña†> @  å “?d ø"!7r? @  å ”?d 8#!ç:³÷ @  å •?d x#!Ò ²c @  å –?d ¸#!òù° @  å —?d ø#!¬úê› @  å˜?d 8$!µ´” @  å™?d x$!&Ø‚w @  åš?d ¸$!-€‰ @  å›?d ø$!À>9¨ @  åœ?d 8%!vµ@ @  å?d x%!%@´Ô @  åž?d ¸%!µ¶* @  åŸ?d ø%!£Q· @  å ?d 8&!>Ý @  å¡?d x&!زÞ @  å¢?d ¸&! -°  @  å£?d ø&!æ>  @  å¤?d 8'!6v…é @  å¥?d x'!@„} @  å¦?d ¸'!#µ†ƒ @  å§?d ø'!}¶Ü… @  å¨?d 8(!IIP˜ @  å©?d x(!Ë#ìË @  å ª?d ¸(!ëÖî5 @  å!«?d ø(!-ÅW @  å"¬?d 8)!ýÛü @  å#­?d x)!È»Úh @  å$®?d ¸)!èNØ– @  å%¯?d ø)!Óà| @  å&°?d 8*!NY@½ @  å'±?d x*!p”å¾ @  å(²?d ¸*!Paç@ @  å)³?d ø*!–r^a @  å*´?d 8+!F:Ò‰ @  å+µ?d x+!s Ó @  å,¶?d ¸+!SùÑã @  å-·?d ø+! ú‹å @  å.¸?d 8,!´xê @  å/¹?d x,!‡Øã  @  å0º?d ¸,!§-á÷ @  å1»?d ø,!a>XÖ @  å2¼?d 8-!±vÔ> @  å3½?d x-!„@Õª @  å4¾?d ¸-!¤µ×T @  å5¿?d ø-!òÃs @  å6À?d 8.!oEc² @  å7Á?d x.!QˆÆ± @  å8Â?d ¸.!q}ÄO @  å9Ã?d ø.!·n}n @  å:Ä?d 8/!g&ñ† @  å;Å?d x/!Rð @  å<Æ?d ¸/!råòì @  å=Ç?d ø/!,æ¨ê @  å>È?d 80!’8X @  å?É?d x0!¾U®™ @  å@Ê?d ¸0!ž ¬g @  åAË?d ø0!X³F @  åBÌ?d 81!ˆû™® @  åCÍ?d x1!½Í˜: @  åDÎ?d ¸1!8šÄ @  åEÏ?d ø1!¦k¢. @  åFÐ?d 82!;/ï @  åGÑ?d x2!â§ì @  åHÒ?d ¸2!%¥ @  åIÓ?d ø2!ã3 @  åJÔ?d 83!3LÛ @  åKÕ?d x3!z‘O @  åLÖ?d ¸3!&“± @  åM×?d ø3!xŒÉ· @  åNØ?d 84!aÂ:¸ @  åOÙ?d x4!ò®¡[ @  åPÚ?d ¸4!Ò[£¥ @  åQÛ?d ø4!H„ @  åRÜ?d 85!Ä–l @  åSÝ?d x5!ñ6—ø @  åTÞ?d ¸5!ÑÕ @  åUß?d ø5!w'”0 @  åVà?d 86!êc4ñ @  åWá?d x6!Ô®‘ò @  åXâ?d ¸6!ô[“  @  åYã?d ø6!2H*- @  åZä?d 87!â¦Å @  å[å?d x7!×6§Q @  å\æ?d ¸7!÷Ã¥¯ @  å]ç?d ø7!©Àÿ© @  å^è?d 88!?s´ @  å_é?d x8!UÏç @  å`ê?d ¸8!? Í @  åaë?d ø8!ù³t8 @  åbì?d 89!)ûøÐ @  åcí?d x9!ÍùD @  ådî?d ¸9!<8ûº @  åeï?d ø9!kÃP @  åfð?d 8:!š/c‘ @  ågñ?d x:!¤âÆ’ @  åhò?d ¸:!„Äl @  åió?d ø:!B}M @  åjô?d 8;!’Lñ¥ @  åkõ?d x;!§zð1 @  ålö?d ¸;!‡òÏ @  åm÷?d ø;!ÙŒ¨É @  ånø?d 8!<¡pï @  åw?d x>!lÕì @  åx?d ¸>!"™× @  åy?d ø>!äŠn3 @  åz?d 8?!4ÂâÛ @  å{?d x?!ôãO @  å|?duÐ@!7 ¸?!!á± @  å}?d ø?!FÅgb @  å~ ?d P@!…iÝ^ @  å  ?d @!è6BŽ @  å€  ?d Ð@!j§UP @  å  ?d A!þmwG @  å‚  ?d PA!|ü`™ @  åƒ  ?d A!ë®t- @  å„ ?d ÐA!i?có @  å… ?d B!M¹ì @  å† ?d PB!Ï(ûØ @  å‡ ?d B!SKû @  åˆ ?d ÐB!Ñ\% @  å‰ ?d C!EÚ~2 @  åŠ ?d PC!ÇKiì @  å‹ ?d C!P}X @  åŒ ?d ÐC!Òˆj† @  å ?d D!TÔQ @  åŽ ?d PD!•Åà @  å ?d D!¤ÍML @  å ?d ÐD!&\Z’ @  å‘ ?d E!²–x… @  å’ ?d PE!0o[ @  å“ ?d E!§U{ï @  å” ?d ÐE!%Äl1 @  å• ?d F!œõÚ @  å–  ?d PF!dÍÆ @  å— !?d F!‚Í}å @  å˜ "?d ÐF!\j; @  å™ #?d G!”–H, @  åš $?d PG!_ò @  å› %?d G!UKF @  åœ &?d ÐG!Ä\˜ @  å '?d H!ë©] @  åž (?d PH!i8Šƒ @  åŸ )?d H!I6#ð @  å  *?d ÐH!˧4. @  å¡ +?d I!_m9 @  å¢ ,?d PI!Ýüç @  å£ -?d I!J®S @  å¤ .?d ÐI!È? @  å¥ /?d J!ì¹x @  å¦ 0?d PJ!n(š¦ @  å§ 1?d J!ò*… @  å¨ 2?d ÐJ!p=[ @  å© 3?d K!äÚL @  åª 4?d PK!fK’ @  å« 5?d K!ñ& @  å¬ 6?d ÐK!sˆ ø @  å­ 7?d L!¶Tµ/ @  å® 8?d PL!4Å¢ñ @  å¯ 9?d L!Í,2 @  å° :?d ÐL!‡\;ì @  å± ;?d M!–û @  å² <?d PM!‘% @  å³ =?d M!U‘ @  å´ >?d ÐM!„Ä O @  åµ ??d N!Í¥®w @  å¶ @?d PN!O4¹© @  å· A?d N!Ó Š @  å¸ B?d ÐN!Q T @  å¹ C?d O!ÅÆiÍ @  æ }?d ]!ò%†” @  æ ~?d Ð]!p´‘J @  æ ?d ^!áZ  @  æ €?d P^!cËŠÓ @  æ ?d ^!1ÐeŠ @  æ ‚?d Ð^!³ArT @  æ ƒ?d _!é99 @  æ „?d P_!k¨ç @  æ …?d _!9³÷¾ @  æuÐ`! †?d Ð_!‚å<µ @  æ‡?d (`!%Æ? @  æˆ?d h`!§W(Æ @  æ‰?d ¨`!õLÇŸ @  æŠ?d è`!wÝÐA @  æ‹?d (a!‘´| @  æ Œ?d ha!“£¢ @  æ!?d ¨a!AˆLû @  æ"Ž?d èa!Ã[% @  æ#?d (b!"Ö/= @  æ$?d hb! G8ã @  æ%‘?d ¨b!ò\׺ @  æ&’?d èb!pÍÀd @  æ'“?d (c!*µ½  @  æ(”?d hc!¨$ª× @  æ)•?d ¨c!ú?EŽ @  æ*–?d èc!x®RP @  æ+—?d (d!x;j @  æ,˜?d hd!úª´ @  æ-™?d ¨d!¨±ïí @  æ.š?d èd!* ø3 @  æ/›?d (e!Ýù»¾ @  æ0œ?d he!_h¬` @  æ1?d ¨e! sC9 @  æ2ž?d èe!âTç @  æ3Ÿ?d (f!óš# @  æ4 ?d hf!q ý @  æ5¡?d ¨f!#ᤠ@  æ6¢?d èf!¡öz @  æ7£?d (g!ûù‹ @  æ8¤?d hg!yhœÉ @  æ9¥?d ¨g!+ss @  æ:¦?d èg!©âdN @  æ;§?d (h!„Æ^f @  æ<¨?d hh!WI¸ @  æ=©?d ¨h!TL¦á @  æ>ª?d èh!Öݱ? @  æ?«?d (i!žÓ @  æ@¬?d hi!”ÄN @  æA­?d ¨i!N+ @  æB®?d èi!Ì<É @  æC¯?d (j!-ÑHÑ @  æD°?d hj!¯@_ @  æE±?d ¨j!ý[°V @  æF²?d èj!ʧˆ @  æG³?d (k!%²Úå @  æH´?d hk!§#Í; @  æIµ?d ¨k!õ8"b @  æJ¶?d èk!w©5¼ @  æK·?d (l!w/Ô @  æƒï?d (z!ñ[Ì @  æ„ð?d hz!˜`L @  æ…ñ?d ¨z!Ê{£K @  æ†ò?d èz!Hê´• @  æ‡ó?d ({!’Éø @  æˆô?d h{!Þ& @  æ‰õ?d ¨{!Â1 @  æŠö?d è{!@‰&¡ @  æ‹÷?d (|!@c› @  æŒø?d h|!ÂtE @  æù?d ¨|!–› @  æŽú?d è|!ŒÂ @  æû?d (}!åÞÏO @  æü?d h}!gOØ‘ @  æ‘ý?d ¨}!5T7È @  æ’þ?d è}!·Å  @  æ“ÿ?d (~!YLy] @  æ” ?d h~!ÛÝnƒ @  æ• ?d ¨~!‰ÆÚ @  æ– ?d è~! W– @  æ— ?d (!Q/ëi @  æ˜ ?d h!Ó¾ü· @  æ™ ?d ¨!uЀ!'¥î @  æš ?d è!40 @  æ› ?d @€!tQPq @  æœ ?d €€!T¤R @  æ ?d À€!¤Û¨ö @  æž ?d !t“$ @  æŸ ?d @!À•Û @  æ  ?d €!à`Ùë @  æ¡ ?d À!#’ @  æ¢ ?d ‚![ƒS @  æ£ ?d @‚!sA@T @  æ¤ ?d €‚!S´Bª @  æ¥ ?d À‚!£Ë¸Ó @  æ¦ ?d ƒ!sƒ4; @  æ§ ?d @ƒ!{"Ò` @  æ¨ ?d €ƒ![×О @  æ© ?d Àƒ!«¨*ç @  æª ?d „!²æÙè @  æ« ?d @„!)¬x @  æ¬ ?d €„! Yzý @  æ­ ?d À„!ù&€„ @  æ® ?d …!)n l @  æ¯ ?d @…!ŒnÔ× @  æ° ?d €…!¬›Ö) @  æ± ?d À…!\ä,P @  æ² ?d †!Á Œ‘ @  æ³ ?d @†!¢ vJ @  æ´ ?d €†!‚øt´ @  æµ! ?d À†!r‡ŽÍ @  æ¶" ?d ‡!¢Ï% @  æ·# ?d @‡!ªnä~ @  æ¸$ ?d €‡!Š›æ€ @  æ¹% ?d À‡!zäù @  æº& ?d ˆ!Nä @  æ»' ?d @ˆ!ÕQ1 @  æ¼( ?d €ˆ!õ¤3ñ @  æ½) ?d Àˆ!ÛɈ @  æ¾* ?d ‰!Õ“E` @  æ¿+ ?d @‰!Ï’¼ù @  æÀ, ?d €‰!ïg¾ @  æÁ- ?d À‰!D~ @  æÂ. ?d Š!‚\ä¿ @  æÃ/ ?d @Š!|F'¸ @  æÄ0 ?d €Š!\³%F @  æÅ1 ?d ÀŠ!¬Ìß? @  æÆ2 ?d ‹!|„S× @  æÇ3 ?d @‹!t%µŒ @  æÈ4 ?d €‹!Tзr @  æÉ5 ?d À‹!¤¯M  @  æÊ6 ?d Œ!½á¾ @  æË7 ?d @Œ!&«ï @  æÌ8 ?d €Œ!^ @  æÍ9 ?d ÀŒ!ö!çh @  æÎ: ?d !&ik€ @  æÏ; ?d @!ƒi³; @  æÐ< ?d €!£œ±Å @  æÑ= ?d À!SãK¼ @  æÒ> ?d Ž!Χë} @  æÓ? ?d @Ž!]Z· @  æÔ@ ?d €Ž!}¯I @  æÕA ?d ÀŽ!Ðü0 @  æÖB ?d !]˜pØ @  æ×C ?d @!U9–ƒ @  æØD ?d €!uÌ”} @  æÙE ?d À!…³n @  æÚF ?d !;mÒ¶ @  æÛG ?d @! 's] @  æÜH ?d €!€Òq£ @  æÝI ?d À!p­‹Ú @  æÞJ ?d ‘! å2 @  æßK ?d @‘!ãø9 @  æàL ?d €‘!4úÇ @  æáM ?d À‘!Äi¾ @  æâN ?d€ ’!-î¼Ù @  çO ?d @’!2µ7÷ @  çP ?d €’!@5  @  çQ ?d À’!'v4 @  çR ?d “!÷>¸u @  çS ?d @“!1-T @  çT ?d €“!ت @  çU ?d À“!/¦© @  çV ?d ”!6[U¦ @  ç W ?d @”!hX  @  ç X ?d €”!H­ ^ @  ç Y ?d À”!}› Ê @  ç Z ?d •!­Ó€" @  ç [ ?d @•!kÀ9 @  ç\ ?d €•!K5;ý @  ç] ?d À•!ØY  @  ç^ ?d –!Eß @  ç_ ?d @–!ãùé @  ç` ?d €–!à  @  ça ?d À–!ö:ƒ @  çb ?d —!&rŽk @  çc ?d @—!àa7J @  çd ?d €—!À”5´ @  çe ?d À—!þY· @  çf ?d ˜!ʦª @  çg ?d @˜!”¥F¬ @  çh ?d €˜!´PDR @  çi ?d À˜!fEÆ @  çj ?d ™!Q.É. @  çk ?d @™!—=p @  çl ?d €™!·Èrñ @  çm ?d À™!5¢Î¢ @  ç n ?d š!¨ænc @  ç!o ?d @š!“µV‰ @  ç"p ?d €š!³@Tw @  ç#q ?d Àš!†vUã @  ç$r ?d ›!V>Ù  @  ç%s ?d @›!-`* @  ç&t ?d €›!°ØbÔ @  ç'u ?d À›!ŽÇ× @  ç(v ?d œ!—[4Ø @  ç)w ?d @œ!ÉXnÞ @  ç*x ?d €œ!é­l  @  ç+y ?d Àœ!Ü›m´ @  ç,z ?d ! Óá\ @  ç-{ ?d @!ÊÀX} @  ç.| ?d €!ê5Zƒ @  ç/} ?d À!yYÁ` @  ç0~ ?d ž!äa¡ @  ç1 ?d @ž!¯o! @  ç2€ ?d €ž!š#ê @  ç3 ?d Àž!º¬"~ @  ç4‚ ?d Ÿ!jä®– @  ç5ƒ ?d @Ÿ!¬÷· @  ç6„ ?d €Ÿ!ŒI @  ç7… uР!?d ÀŸ!²Ï°J @  ç8† ?d  !¾DP @  ç9€‡ ?d X !àGGV @  ç:€ˆ ?d ˜ !À²E¨ @  ç;€‰ ?d Ø !õ„D< @  ç<€Š ?d ¡!%ÌÈÔ @  ç=€‹ ?d X¡!ãßqõ @  ç>€Œ ?d ˜¡!Ã*s  @  ç?€ ?d Ø¡!ïGÉÊ @  ç@€Ž ?d ¢!ri  @  çA€ ?d X¢!IPQá @  çB€ ?d ˜¢!i¥S @  çC€‘ ?d Ø¢!\“R‹ @  çD€’ ?d £!ŒÛÞc @  çE€“ ?d X£!JÈgB @  çF€” ?d ˜£!j=e¼ @  çG€• ?d Ø£!TðÀ¿ @  çH€– ?d ¤!M¾3° @  çI€— ?d X¤!½i¶ @  çJ€˜ ?d ˜¤!3HkH @  çK€™ ?d ؤ!~jÜ @  çL€š ?d ¥!Ö6æ4 @  çM€› ?d X¥!%_ @  çN€œ ?d ˜¥!0Ð]ë @  çO€ ?d Ø¥!£¼Æ @  çP€ž ?d ¦!>øfÉ @  çQ€Ÿ ?d X¦!˜gÿ @  çR€  ?d ˜¦!¸ée @  çS€¡ ?d ئ!ßd• @  çT€¢ ?d §!]—è} @  çU€£ ?d X§!›„Q\ @  çV€¤ ?d ˜§!»qS¢ @  çW€¥ ?d ا!…¼ö¡ @  çX€¦ ?d ¨!±Cz¼ @  çY€§ ?d X¨!ï@ º @  çZ€¨ ?d ˜¨!ϵ"D @  ç[€© ?d ب!úƒ#Ð @  ç\€ª ?d ©!*˯8 @  ç]€« ?d X©!ìØ @  ç^€¬ ?d ˜©!Ì-ç @  ç_€­ ?d Ø©!NG¨´ @  ç`€® ?d ª!Óu @  ça€¯ ?d Xª!èP0Ÿ @  çb€° ?d ˜ª!È¥2a @  çc€± ?d ت!ý“3õ @  çd€² ?d «!-Û¿ @  çe€³ ?d X«!ëÈ< @  çf€´ ?d ˜«!Ë= @  çg€µ ?d Ø«!õð¡Á @  çh€¶ ?d ¬!ì¾RÎ @  çi€· ?d X¬!²½È @  çj€¸ ?d ˜¬!’H 6 @  çk€¹ ?d ج!§~ ¢ @  çl€º ?d ­!w6‡J @  çm€» ?d X­!±%>k @  çn€¼ ?d ˜­!‘Ð<• @  ço€½ ?d Ø­!¼§v @  çp€¾ ?d ®!Ÿø· @  çq€¿ ?d X®!ÉL @  çr€À ?d ˜®!é¹n @  çs€Á ?d Ø®!Üú @  çt€ ?d ¯! Çœ @  çu€à ?d X¯!ÊÔ%3 @  çv€Ä ?d ˜¯!ê!'Í @  çw€Å ?d د!Ôì‚Î @  çx€Æ ?d °!j2>| @  çy€Ç ?d X°!41dz @  çz€È ?d ˜°!Äf„ @  ç{€É ?d ذ!!òg @  ç|€Ê ?d ±!ñºëø @  ç}€Ë ?d X±!7©RÙ @  ç~€Ì ?d ˜±!\P' @  ç€Í ?d ر!ØgÚ× @  ç€€Î ?d ²!E#z @  ç€Ï ?d X²!~pBü @  ç‚€Ð ?d ˜²!^…@ @  çƒ€Ñ ?d ز!k³A– @  ç„€Ò ?d ³!»ûÍ~ @  ç…€Ó ?d X³!}èt_ @  ç†€Ô ?d ˜³!]v¡ @  ç‡€Õ ?d س!cÐÓ¢ @  çˆ€Ö ?d ´!zž ­ @  ç‰€× ?d X´!$z« @  çŠ€Ø ?d ˜´!hxU @  ç‹€Ù ?d Ø´!1^yÁ @  çŒ€Ú ?d µ!áõ) @  ç€Û ?d Xµ!'L @  çŽ€Ü ?d ˜µ!ðNö @  ç€Ý ?d ص!”œÕ @  ç€Þ ?d ¶! ØuÔ @  ç‘€ß ?d X¶!¯ @  è < ?d °Í!0þÝÀ @  è = ?d ðÍ!À'¹ @  è > ?d 0Î!]Ňx @  è ? ?d pÎ!hbòÅ @  è @ ?d °Î!H—ð; @  è A ?d ðÎ!¸è B @  è B ?d 0Ï!h †ª @  è C ?d pÏ!kúÄf @  è D ?d °Ï!KƘ @  è E ?d ðÏ!»p<á @  è F ?d 0Ð!®€S @  è G ?d pÐ!•…/ @  è H ?d °Ð!µê‡Ñ @  è I ?d ðÐ!E•}¨ @  è J ?d 0Ñ!•Ýñ@ @  è K ?d pÑ!–‡³Œ @  è L ?d °Ñ!¶r±r @  è M ?d ðÑ!F K  @  è N ?d 0Ò!ÛIëÊ @  è O ?d pÒ!’•  @  è P ?d °Ò!²ú—ô @  è! Q ?d ðÒ!B…m @  è" R ?d 0Ó!’Íáe @  è# S ?d pÓ!‘—£© @  è$ T ?d °Ó!±b¡W @  è% U ?d ðÓ!A[. @  è& V ?d 0Ô!XS¨! @  è' W ?d pÔ!Èâ­] @  è( X ?d °Ô!诣 @  è) Y ?d ðÔ!hUÚ @  è* Z ?d 0Õ!È Ù2 @  è+ [ ?d pÕ!Ëz›þ @  è, \ ?d °Õ!ë™ @  è- ] ?d ðÕ!ðcy @  è. ^ ?d 0Ö!†´Ã¸ @  è/ _ ?d pÖ!CC£ @  è0 ` ?d °Ö!c¶¡ê @  è1 a ?d ðÖ!“É[“ @  è2 b ?d 0×!C×{ @  è3 c ?d p×!@Û•· @  è4 d ?d °×!`.—I @  è5 e ?d ð×!Qm0 @  è6 f ?d 0Ø!¤®á- @  è7 g ?d pØ!4äQ @  è8 h ?d °Ø!êæ¯ @  è9 i ?d ðØ!ä•Ö @  è: j ?d 0Ù!4Ý> @  è; k ?d pÙ!7‡Òò @  è< l ?d °Ù!rÐ  @  è= m ?d ðÙ!ç *u @  è> n ?d 0Ú!zIŠ´ @  è? o ?d pÚ!òæ @  è@ p ?d °Ú!½ýð @  èA q ?d ðÚ!M‚ a @  èB r ?d 0Û!ʆ‰ @  èC s ?d pÛ!žÄE @  èD t ?d °Û!¾eÆ» @  èE u ?d ðÛ!N< @  èF v ?d 0Ü!WTÏÍ @  èG w ?d pÜ!Çåʱ @  èH x ?d °Ü!çÈO @  èI y ?d ðÜ!o26 @  èJ z ?d 0Ý!Ç'¾Þ @  èK { ?d pÝ!Ä}ü @  èL | ?d °Ý!äˆþì @  èM } ?d ðÝ!÷• @  èN ~ ?d 0Þ!‰³¤T @  èO  ?d pÞ!¡Ò…{ @  èP € ?d °Þ!'‡… @  èQ  ?d ðÞ!qX}ü @  èR ‚ ?d 0ß!¡ñ @  èS ƒ ?d pß!¢J³Ø @  èT „ ?d uÐà!/°ß!‚¿±& @  èU … ?d ðß!K—Š @  èV† ?d Hà!R£É| @  èW‡ ?d ˆà!`vÙ  @  èXˆ ?d Èà!âçÎþ @  èY‰ ?d á!@A¯± @  èZŠ ?d Há!Âиo @  è[‹ ?d ˆá!cîïƒ @  è\Œ ?d Èá!áø] @  è] ?d â!Õµ; @  è^Ž ?d Hâ!ŒD¢å @  è_ ?d ˆâ!gfÉ @  è` ?d Èâ!å÷ÞÛ @  èa‘ ?d ã!GQ¿” @  èb’ ?d Hã!ÅÀ¨J @  èc“ ?d ˆã!dþÿ¦ @  èd” ?d Èã!æoèx @  èe• ?d ä!ÏöÐ @  èf– ?d Hä!^á @  èg— ?d ˆä!=‹ñR @  èh˜ ?d Èä!¿æŒ @  èi™ ?d å!¼‡Ã @  èjš ?d Hå!Ÿ- @  èk› ?d ˆå!>Çñ @  èlœ ?d Èå!¼‚Ð/ @  èm ?d æ!S(I @  ènž ?d Hæ!Ñ¹Š— @  èoŸ ?d ˆæ!¶*ÿ @  èp  ?d Èæ!4»èÅ @  èq¡ ?d ç!–‰Š @  èr¢ ?d Hç!ŒžT @  ès£ ?d ˆç!µ²É¸ @  èt¤ ?d Èç!7#Þf @  èu¥ ?d è!q2¿Ü @  èv¦ ?d Hè!ó£¨ @  èw§ ?d ˆè!Áv¸^ @  èx¨ ?d Èè!C節 @  èy© ?d é!áAÎÏ @  èzª ?d Hé!cÐÙ @  è{« ?d ˆé!ÂîŽý @  è|¬ ?d Èé!@™# @  è}­ ?d ê!¯ÕÔE @  è~® ?d Hê!-DÛ @  è¯ ?d ˆê!‹7žØ @  è€° ?d Èê! ¦‰ @  è± ?d ë!«èI @  è‚² ?d Hë!)‘ÿ— @  èƒ³ ?d ˆë!ˆ¯¨{ @  è„´ ?d Èë! >¿¥ @  è…µ ?d ì!až¡  @  è†¶ ?d Hì!ã¶Ó @  è‡· ?d ˆì!ÑÚ¦ @  èˆ¸ ?d Èì!SK±Q @  è‰¹ ?d í!ñíÐ @  èŠº ?d Hí!s|ÇÀ @  è‹» ?d ˆí!ÒB, @  èŒ¼ ?d Èí!PÓ‡ò @  è½ ?d î!¿yÊ” @  è޾ ?d Hî!=èÝJ @  è¿ ?d ˆî!ª+½× @  èÀ ?d Èî!(ºª  @  è‘Á ?d ï!ŠËF @  è’ ?d Hï!ܘ @  è“à ?d ˆï!©³‹t @  è”Ä ?d Èï!+"œª @  è•Å ?d ð!çÍ¿ @  è–Æ ?d Hð!eƒÚa @  è—Ç ?d ˆð!WVÊ= @  è˜È ?d Èð!ÕÇÝã @  è™É ?d ñ!wa¼¬ @  èšÊ ?d Hñ!õð«r @  è›Ë ?d ˆñ!TÎüž @  èœÌ ?d Èñ!Ö_ë@ @  èÍ ?d ò!9õ¦& @  èžÎ ?d Hò!»d±ø @  èŸÏ ?d ˆò!PFÚ @  è Ð ?d Èò!Ò×ÍÆ @  è¡Ñ ?d ó!pq¬‰ @  è¢Ò ?d Hó!òà»W @  è£Ó ?d ˆó!SÞì» @  è¤Ô ?d Èó!ÑOûe @  è¥Õ ?d ô!ºïåÍ @  è¦Ö ?d Hô!8~ò @  è§× ?d ˆô! «âO @  è¨Ø ?d Èô!ˆ:õ‘ @  è©Ù ?d õ!*œ”Þ @  èªÚ ?d Hõ!¨ ƒ @  è«Û ?d ˆõ! 3Ôì @  è¬Ü ?d Èõ!‹¢Ã2 @  è­Ý ?d ö!dŽT @  è®Þ ?d Hö!æ™™Š @  è¯ß ?d ˆö! ì @  è°à ?d Èö!›ûØ @  è±á ?d ÷!¡=š— @  è²â ?d H÷!#¬I @  è³ã ?d ˆ÷!‚’Ú¥ @  è´ä ?d È÷!Í{ @  èµå ?d ø!F¬Á @  è¶æ ?d Hø!ă» @  è·ç ?d ˆø!öV«C @  è¸è ?d Èø!tǼ @  è¹é ?d ù!ÖaÝÒ @  èºê ?d Hù!TðÊ  @  è»ë ?d ˆù!õÎà @  è¼ì ?d Èù!w_Š> @  è½í ?d ú!˜õÇX @  è¾î ?d Hú!dІ @  è¿ï ?d ˆú!_A½ô @  èÀð ?d Èú!ÝЪ* @  èÁñ ?d û!vËe @  èÂò ?d Hû!ýçÜ» @  èÃó ?d ˆû!\Ù‹W @  èÄô ?d Èû!ÞHœ‰ @  èÅõ ?d ü!µè‚! @  èÆö ?d Hü!7y•ÿ @  èÇ÷ ?d ˆü!¬…£ @  èÈø ?d Èü!‡=’} @  èÉù ?d ý!%›ó2 @  èÊú ?d Hý!§ äì @  èËû ?d ˆý!4³ @  èÌü ?d Èý!„¥¤Þ @  èÍý ?d þ!ké¸ @  èÎþ ?d Hþ!éžþf @  èÏÿ ?d ˆþ!üŸe @  èÐ ?d Èþ!žmˆ» @  èÑ ?d ÿ!<Ëéô @  èÒ ?d Hÿ!¾Zþ* @  èÓ ?d ˆÿ!d©Æ @  èÔuÐ" ?d Èÿ!õ¾ @  èÕ ?d "ëê¨ @  èÖ ?d `"i{ v @  è× ?d  "[®* @  èØ ?d à"Ù? ô @  èÙ ?d "{™j» @  èÚ ?d `"ù}e @  èÛ ?d  "X6*‰ @  èÜ ?d à"Ú§=W @  èÝ ?d "5 p1 @  èÞ ?d `"·œgï @  èß ?d  "\¾  @  èà ?d à"Þ/Ñ @  èá ?d "|‰zž @  èâ ?d€ `"ŠÛqæ @  é ?d  "ʤn# @  é ?d à"H5yý @  é ?d "æÜœ¸ @  é ?d `"dM‹f @  é ?d  "˜*Ä@ @  é ?d à"»Óž @  é ?d "v¯í« @  é ?d `"ô>úu @  é  ?d  "IVt @  é  ?d à"ØAª @  é  ?d "8;÷! @  é  ?d `"ºªàÿ @  é  ?d  "¾*ôé @  é ?d à"<»ã7 @  é! ?d "ýãâ @  é" ?d `"Ÿô< @  é# ?d  "èX= @  é$ ?d à"™yOã @  é% ?d "!Õ´ @  é& ?d `"˜°Âj @  é' ?d  "d×L @  é( ?d à"æFš’ @  é) ?d "ŠR¤§ @  é* ?d ` "óy @  é+ ?d   "l´x @  é, ?d à "î%¦ @  é- ?d "ÄÆ¾- @  é. ?d ` "FW©ó @  é/ ?d   "ß`„9 @  é0 ?d à "]ñ“ç @  é1 ?d "B´‚ @  é 2 ?d ` "Ó£\ @  é!3 ?d   "k¤] @  é"4 ?d à "é5ƒ @  é#5 ?d "GÜýÆ @  é$6 ?d ` "ÅMê @  é%7 ?d   "9*¥> @  é&8 ?d à "»»²à @  é'9 ?d "ׯŒÕ @  é(: ?d ` "U>›  @  é); ?d   "1I7  @  é*< ?d à "³Ø Ô @  é+= ?d "™;–_ @  é,> ?d `"ª @  é-? ?d  "ïz€† @  é.@ ?d à"më—X @  é/A ?d "¬^— @  é0B ?d `".Ï€S @  é1C ?d  "J¸,R @  é2D ?d à"È);Œ @  é3E ?d "ÁP‘t @  é4F ?d `"CÁ†ª @  é5G ?d  "¿¦ÉŒ @  é6H ?d à"=7ÞR @  é7I ?d "Q#àg @  é8J ?d `"Ó²÷¹ @  é9K ?d  "·Å[¸ @  é:L ?d à"5TLf @  é;M ?d "·úí @  é<N ?d `"&í3 @  é=O ?d  "Àù @  é>P ?d à"†€×' @  é?Q ?d "ø4öÐ @  é@R ?d `"z¥á @  éAS ?d  "ÒM @  éBT ?d à"œCZÑ @  éCU ?d "2ª¿” @  éDV ?d `"°;¨J @  éEW ?d  "L\çl @  éFX ?d à"ÎÍð² @  éGY ?d "¢Ù· @  éHZ ?d `" HÙY @  éI[ ?d  "D?uX @  éJ\ ?d à"Æ®b† @  éK] ?d "ìMÔ  @  éL^ ?d `"nÜÃÓ @  éM_ ?d  "j\×Å @  éN` ?d à"èÍÀ @  éOa ?d ")xÀÎ @  éPb ?d `"«é× @  éQc ?d  "Ïž{ @  éRd ?d à"MlÏ @  éSe ?d "ÎWö˜ @  éTf ?d `"LÆáF @  éUg ?d  "°¡®` @  éVh ?d à"20¹¾ @  éWi ?d "^$‡‹ @  éXj ?d `"ܵU @  éYk ?d  "¸Â¬­ @  éÂÔ ?d ø3"o¯»s @  éÃÕ ?d 84"ÁF^6 @  éÄÖ ?d x4"C×Iè @  éÅ× ?d ¸4"¿°Î @  éÆØ ?d ø4"=! @  éÇÙ ?d 85"Q5/% @  éÈÚ ?d x5"Ó¤8û @  éÉÛ ?d ¸5"·Ó”ú @  éÊÜ ?d ø5"5Bƒ$ @  éËÝ ?d 86"¡5¯ @  éÌÞ ?d x6"0"q @  éÍß ?d ¸6"™°6g @  éÎà ?d ø6"!!¹ @  éÏá ?d 87"Ú”!l @  éÐâ ?d x7"X6² @  éÑã ?d ¸7"ÍÓ @  éâô ?d€ ø;"è-  @  êõ ?d 8<"@@€a @  êö ?d x<"ÂÑ—¿ @  ê÷ ?d ¸<"ûÿ#t @  êø ?d ø<"yn4ª @  êù ?d 8="ÛÈUå @  êú ?d x="YYB; @  êû ?d ¸="óœ±@ @  êü ?d ø="q ¦ž @  ê ý ?d 8>"ž§ëø @  ê þ ?d x>"6ü& @  ê ÿ ?d ¸>"s8Ä @  ê  ?d ø>"ñ–/ @  ê  ?d 8?"S0NU @  ê ?d x?"Ñ¡Y‹ @  ê ?duÐ@"7 ¸?"ÖÅ” @  ê ?d ø?"–ýd @  ê ?d P@"'¿3€ @  ê ?d @"J1~ @  ê ?d Ð@"œ• @  ê ?d A"LH} @  ê ?d PA"¼7æ @  ê ?d A"œÂäú @  ê ?d ÐA"”c¡ @  ê ?d B" '¢` @  ê ?d PB"ùXX @  ê ?d B"Ù­Zç @  ê ?d ÐB"'·™à @  ê ?d C"÷ÿ @  ê ?d PC"€ïq @  ê ?d C"'uí @  ê ?d ÐC"“s„ @  ê  ?d D"Š=á‹ @  ê! ?d PD"zBò @  ê" ?d D"Z·  @  ê# ?d ÐD"Áý¸ç @  ê$ ?d E"µ4 @  ê% ?d PE"áÊÎv @  ê& ?d E"Á?̈ @  ê' ?d ÐE"Éž*Ó @  ê( ?d F"TÚŠ @  ê) ?d PF"¤¥pk @  ê* ?d F"„Pr• @  ê+ ?d ÐF"çýˆN @  ê, ?d G"7µ¦ @  ê-! ?d PG"ÇÊþß @  ê." ?d G"ç?ü! @  ê/# ?d ÐG"B?$š @  ê0$ ?d H"vÀ¨‡ @  ê1% ?d PH"†¿Rþ @  ê2& ?d H"¦JP @  ê3' ?d ÐH"=ñë @  ê4( ?d I"íH} @  ê5) ?d PI"7‡z @  ê6* ?d I"=Â…„ @  ê7+ ?d ÐI"5ccß @  ê8, ?d J"¨'à @  ê9- ?d PJ"XX9g @  ê:. ?d J"x­;™ @  ê;/ ?d ÐJ"†·øž @  ê<0 ?d K"Vÿtv @  ê=1 ?d PK"¦€Ž @  ê>2 ?d K"†uŒñ @  ê?3 ?d ÐK"œtuh @  ê@4 ?d L"…:†g @  êA5 ?d PL"uE| @  êB6 ?d L"U°~à @  êC7 ?d ÐL"Îúß  @  êD8 ?d M"²Sã @  êE9 ?d PM"îÍ©š @  êF: ?d M"Î8«d @  êG; ?d ÐM"Æ™M? @  êH< ?d N"[Ýíþ @  êI= ?d PN"«¢‡ @  êJ> ?d N"‹Wy @  êK? ?d ÐN"ªú³ @  êL@ ?d O"Èâv[ @  êMA ?d PO"8Œ" @  êNB ?d O"hŽÜ @  êOC ?d ÐO"½hVg @  êPD ?d P"¶êÕ @  êQE ?d PP"óɬ @  êRF ?d P"Ó<R @  êSG ?d ÐP"Hv³¹ @  êTH ?d Q"˜>?Q @  êUI ?d PQ"hAÅ( @  êVJ ?d Q"H´ÇÖ @  êWK ?d ÐQ"@! @  êXL ?d R"ÝQL @  êYM ?d PR"-.{5 @  êZN ?d R" ÛyË @  ê[O ?d ÐR"óÁºÌ @  ê\P ?d S"#‰6$ @  ê]Q ?d PS"ÓöÌ] @  ê^R ?d S"óΣ @  ê_S ?d ÐS"G1¨ @  ê`T ?d T"^K§ @  êaU ?d PT"®48Þ @  êbV ?d T"ŽÁ:  @  êcW ?d ÐT"‹›Ë @  êdX ?d U"ÅÃ# @  êeY ?d PU"5¼íZ @  êfZ ?d U"Iï¤ @  êg[ ?d ÐU"è ÿ @  êh\ ?d V"€¬©> @  êi] ?d PV"pÓSG @  êj^ ?d V"P&Q¹ @  êk_ ?d ÐV"3‹«b @  êl` ?d W"ãÃ'Š @  êma ?d PW"¼Ýó @  ênb ?d W"3Iß  @  êoc ?d ÐW"–I¶ @  êpd ?d X"¢¶‹« @  êqe ?d PX"RÉqÒ @  êrf ?d X"r^/ @  êui ?d PY"ÉA¤V @  êvj ?d Y"é´¦¨ @  êwk ?d ÐY"á@ó @  êxl ?d Z"|Qà2 @  êym ?d PZ"Œ.K @  êzn ?d Z"¬Ûµ @  ê{o ?d ÐZ"RÁÛ² @  ê|p ?d ["‚‰WZ @  ê}q ?d P["rö­# @  ê~r ?d ["R¯Ý @  ês ?d Ð["«Tfu @  ê€t ?d \"²•z @  êu ?d P\"Beo @  ê‚v ?d \"bmý @  êƒw ?d Ð\"ùÚÌ @  ê„x ?d ]")’@þ @  ê…y ?d P]"Ùíº‡ @  ê†z ?d ]"ù¸y @  ê‡{ ?d Ð]"ñ¹^" @  êˆ| ?d ^"lýþã @  ê‰} ?d P^"œ‚š @  êŠ~ ?d ^"¼wd @  ê‹ ?d Ð^"2L½< @  êŒ€ ?d _"â1Ô @  ê ?d P_"{Ë­ @  êŽ‚ ?d _"2ŽÉS @  êuÐ`"ƒ ?d Ð_"—Žè @  ê„ ?d (`")v¤p @  ê‘… ?d h`"Ù ^  @  ê’† ?d ¨`"ùü\÷ @  ê“‡ ?d è`"b¶ý @  ê”ˆ ?d (a"²þqô @  ê•‰ ?d ha"B‹ @  ê–Š ?d ¨a"bt‰s @  ê—‹ ?d èa"jÕo( @  ê˜Œ ?d (b"÷‘Ïé @  ê™ ?d hb"î5 @  êšŽ ?d ¨b"'7n @  ê› ?d èb"Ùôi @  êœ ?d (c" Ix @  ê‘ ?d hc"ù6‚ø @  êž’ ?d ¨c"ÙÀ @  êŸ“ ?d èc"mÅ  @  ê ” ?d (d"t‹Œ @  ê¡• ?d hd"„ôv{ @  ê¢– ?d ¨d"¤t… @  ê£— ?d èd"?KÕn @  ê¤˜ ?d (e"ïY† @  ê¥™ ?d he"|£ÿ @  ê¦š ?d ¨e"?‰¡ @  ê§› ?d èe"7(GZ @  ê¨œ ?d (f"ªlç› @  ê© ?d hf"Zâ @  êªž ?d ¨f"zæ @  ê«Ÿ ?d èf"KåÇ @  ê¬  ?d (g"Éi/ @  ê­¡ ?d hg"9|“V @  ê®¢ ?d ¨g"‰‘¨ @  ê¯£ ?d èg"¼‰I @  ê°¤ ?d (h"ˆvÅ @  ê±¥ ?d hh"x ?w @  ê²¦ ?d ¨h"Xü=‰ @  ê³§ ?d èh"öœb @  ê´¨ ?d (i"þŠ @  êµ© ?d hi"ãêó @  ê¶ª ?d ¨i"Ãtè  @  ê·« ?d èi"ËÕV @  ê¸¬ ?d (j"V‘®— @  ê¹­ ?d hj"¦îTî @  êº® ?d ¨j"†V @  ê»¯ ?d èj"x• @  ê¼° ?d (k"¨Iÿ @  ê½± ?d hk"X6ㆠ@  ê¾² ?d ¨k"xÃáx @  ê¿³ ?d èk"bÂá @  êÀ´ ?d (l"{Œëî @  êÁµ ?d hl"‹ó— @  ê¶ ?d ¨l"«i @  ê÷ ?d èl"0L²‚ @  êĸ ?d (m"à>j @  êŹ ?d hm"{Ä @  êƺ ?d ¨m"0ŽÆí @  êÇ» ?d èm"8/ ¶ @  êȼ ?d (n"¥k€w @  êɽ ?d hn"Uz @  êʾ ?d ¨n"uáxð @  êË¿ ?d èn"æ—: @  êÌÀ ?d (o"6TÒ @  êÍÁ ?d ho"Æ+á« @  êΠ?d ¨o"æÞãU @  êÏà ?d èo"CÞ;î @  êÐÄ ?d (p"ý‡\ @  êÑÅ ?d hp" }% @  êÒÆ ?d ¨p"-ŠÛ @  êÓÇ ?d èp"¶ÀÞ0 @  êÔÈ ?d (q"fˆRØ @  êÕÉ ?d hq"–÷¨¡ @  êÖÊ ?d ¨q"¶ª_ @  ê×Ë ?d èq"¾£L @  êØÌ ?d (r"#çìÅ @  êÙÍ ?d hr"Ó˜¼ @  êÚÎ ?d ¨r"ómB @  êÛÏ ?d èr" w×E @  êÜÐ ?d (s"Ý?[­ @  êÝÑ ?d hs"-@¡Ô @  êÞÒ ?d ¨s" µ£* @  êßÓ ?d ès"¹³\! @  êàÔ ?d (t" ý¯. @  êáÕ ?d ht"P‚UW @  êâÖ ?d€ ¨t"´K @  ë× ?d èt"~¿¢Í @  ëØ ?d (u"®÷.% @  ëÙ ?d hu"›Á/± @  ëÚ ?d ¨u"»4-O @  ëÛ ?d èu"}'”n @  ëÜ ?d (v"àc4¯ @  ëÝ ?d hv"Þ®‘¬ @  ëÞ ?d ¨v"þ[“R @  ë ß ?d èv"X¿’d @  ë à ?d (w"ˆ÷Œ @  ë á ?d hw"½Á @  ë â ?d ¨w"4æ @  ë ã ?d èw"['¤Ç @  ëä ?d (x"oØ(Ú @  ëå ?d hx"ü´³9 @  ëæ ?d ¨x"ÜA±Ç @  ëç ?d èx"‚BëÁ @  ëè ?d (y"R g) @  ëé ?d hy"g ?d @„"J“<€ @  ë? ?d €„"Äš“a @  ë@ ?d À„"F „¿ @  ëA ?d …"JÑE @  ëB ?d @…"È@RQ @  ëC ?d €…"_Få @  ëD ?d À…"݃Q; @  ëE ?d †"E_ @  ëF ?d @†"†ÔHÛ @  ëG ?d €†"}øø @  ëH ?d À†"˜ìï& @  ëI ?d ‡"lÑu& @  ëJ ?d @‡"î@bø @  ëK! ?d €‡"yvL @  ëL" ?d À‡"ûƒa’ @  ëM# ?d ˆ"‹þCp @  ëN$ ?d @ˆ" oT® @  ëO% ?d €ˆ"8gÚm @  ëP& ?d Àˆ"ºöͳ @  ëQ' ?d ‰"¶, ƒ @  ëR( ?d @‰"4½] @  ëS) ?d €‰"£ïé @  ëT* ?d À‰"!~7 @  ëU+ ?d Š"ø¸  @  ëV, ?d @Š"z)× @  ëW- ?d €Š"怱ô @  ëX. ?d ÀŠ"d¦* @  ëY/ ?d ‹" ›ö @  ëZ0 ?d @‹" ( @  ë[1 ?d €‹"Xœ @  ë\2 ?d À‹"šÉB @  ë]3 ?d Œ"ÇL² @  ë^4 ?d @Œ"E”[l @  ë_5 ?d €Œ"ešò @  ë`6 ?d ÀŒ"ç åÁ @  ëa7 ?d "ëÑ$ñ @  ëb8 ?d @"i@3/ @  ëc9 ?d €"þ'› @  ëd: ?d À"|ƒ0E @  ëe; ?d Ž"¥E>{ @  ëf< ?d @Ž"'Ô)¥ @  ëg= ?d €Ž"»}™† @  ëh> ?d ÀŽ"9ìŽX @  ëi? ?d "=I @  ëj@ ?d @"¿— @  ëkA ?d €"(B# @  ëlB ?d À"ªÓý @  ëmC ?d "P° @  ënD ?d @"Òn @  ëoE ?d €"ãž­ @  ëpF ?d À"a‡‰s @  ëqG ?d ‘"m]HC @  ërH ?d @‘"ïÌ_ @  ësI ?d €‘"xžK) @  ëtJ ?d À‘"ú\÷ @  ëuK ?d ’"#ÉRÉ @  ëvL ?d @’"¡XE @  ëwM ?d €’"=ñõ4 @  ëxN ?d À’"¿`âê @  ëyO ?d “"ÖêA6 @  ëzP ?d @“"T{Vè @  ë{Q ?d €“"Ã)B\ @  ë|R ?d À“"A¸U‚ @  ë}S ?d ”"tr @  ë~T ?d @”"žå¬ @  ëU ?d €”"óº€| @  ë€V ?d À”"q+—¢ @  ëW ?d •"}ñV’ @  ë‚X ?d @•"ÿ`AL @  ëƒY ?d €•"h2Uø @  ë„Z ?d À•"ê£B& @  ë…[ ?d –"3eL @  ë†\ ?d @–"±ô[Æ @  ë‡] ?d €–"-]ëå @  ëˆ^ ?d À–"¯Ìü; @  ë‰_ ?d —"[ñf; @  ëŠ` ?d @—"Ù`qå @  ë‹a ?d €—"N2eQ @  ëŒb ?d À—"Ì£r @  ëc ?d ˜"¼ÞPm @  ëŽd ?d @˜">OG³ @  ëe ?d €˜"GÉp @  ëf ?d À˜"ÖÞ® @  ë‘g ?d ™" ž @  ë’h ?d @™"@ @  ë“i ?d €™"”Ïô @  ë”j ?d À™"^ * @  ë•k ?d š"Ϙ @  ë–l ?d @š"M Ê @  ë—m ?d €š"Ñ ¢é @  ë˜n ?d Àš"S1µ7 @  ë™o ?d ›":»ë @  ëšp ?d @›"¸*5 @  ë›q ?d €›"/x @  ëœr ?d À›"­é_ @  ës ?d œ"ð%_¯ @  ëžt ?d @œ"r´Hq @  ëŸu ?d €œ"Rºá @  ë v ?d Àœ"Ð+öÜ @  ë¡w ?d "Üñ7ì @  ë¢x ?d @"^` 2 @  ë£y ?d €"É24† @  ë¤z ?d À"K£#X @  ë¥{ ?d ž"’e-f @  ë¦| ?d @ž"ô:¸ @  ë§} ?d €ž"Œ]Š› @  ë¨~ ?d Àž"ÌE @  ë© ?d Ÿ"gFÆ @  ëª€ ?d @Ÿ"•öQ @  ë« ?d €Ÿ"¤E¬ @  ë¬‚ uР"?d ÀŸ"€5Rr @  ë­ƒ ?d  "µ¼"ë @  ë®„ ?d X "7-55 @  ë¯… ?d ˜ "%»ö @  ë°† ?d Ø "„´¬( @  ë±‡ ?d ¡"ˆnm @  ë²ˆ ?d X¡" ÿzÆ @  ë³‰ ?d ˜¡"­nr @  ë´Š ?d Ø¡"ö ?d ؼ"|t›_ @  ì?÷ ?d ½"¬¼× @  ì@ø ?d X½".-  @  ìAù ?d ˜½"|6âP @  ìBú ?d ؽ"þ§õŽ @  ìCû ?d ¾"â(] @  ìDü ?d X¾"`¹ƒ @  ìEý ?d ˜¾"2¢øÚ @  ìFþ ?d ؾ"°3ï @  ìGÿ ?d ¿"ªo Ô @  ìH?d X¿"(þ  @  ìI?d ˜¿"zåóS @uÐÀ"  ìJ?d Ø¿"Á³8X @  ìK ?d 0À"$ˆ< @  ìL ?d pÀ"¦+Æ @  ìM ?d °À"ôÄŸ @  ìN ?d ðÀ"v“ÓA @  ìO ?d 0Á"Zsë @  ìP ?d pÁ"›Ëd5 @  ìQ  ?d °Á"ÉЋl @  ìR  ?d ðÁ"KAœ² @  ìS  ?d 0Â"WÎia @  ìT  ?d pÂ"Õ_~¿ @  ìU  ?d °Â"‡D‘æ @  ìV ?d ðÂ"Õ†8 @  ìW ?d 0Ã"¢ízž @  ìX ?d pÃ" |m@ @  ìY ?d °Ã"rg‚ @  ìZ ?d ðÃ"ðö•Ç @  ì[ ?d 0Ä"hs3Ú @  ì\ ?d pÄ"êâ$ @  ì] ?d °Ä"¸ùË] @  ì^ ?d ðÄ":h܃ @  ì_ ?d 0Å"D§[™ @  ì` ?d pÅ"Æ6LG @  ìa ?d °Å"”-£ @  ìb ?d ðÅ"¼´À @  ìc ?d 0Æ" 3A @  ìd ?d pÆ"ˆ¢VÍ @  ìe ?d °Æ"Ú¹¹” @  ìf ?d ðÆ"X(®J @  ìg ?d 0Ç"b§k0 @  ìh  ?d pÇ"à6|î @  ìi !?d °Ç"²-“· @  ìj "?d ðÇ"0¼„i @  ìk #?d 0È"…ˆ]f @  ìl $?d pÈ"J¸ @  ìm %?d °È"U¥á @  ìn &?d ðÈ"ד²? @  ìo '?d 0É"¸Z• @  ìp (?d pÉ":ËK @  ìq )?d °É"hÐê @  ìr *?d ðÉ"êAýÌ @  ìs +?d 0Ê"öÎ @  ìt ,?d pÊ"t_Á @  ìu -?d °Ê"&Dð˜ @  ìv .?d ðÊ"¤ÕçF @  ìw /?d 0Ë"íà @  ìx 0?d pË"| > @  ìy 1?d °Ë"Ógãg @  ìz 2?d ðË"Qöô¹ @  ì{ 3?d 0Ì"ÉsR¤ @  ì| 4?d pÌ"KâEz @  ì} 5?d °Ì"ùª# @  ì~ 6?d ðÌ"›h½ý @  ì 7?d 0Í"¨ö D @  ì€ 8?d pÍ"*gš @  ì 9?d °Í"x|ôà @  ì‚ :?d ðÍ"úíã @  ìƒ ;?d 0Î"æbÎ @  ì„ <?d pÎ"dó @  ì… =?d °Î"6èîI @  ì† >?d ðÎ"´yù— @  ì‡ ??d 0Ï"~¦)ü @  ìˆ @?d pÏ"ü7>" @  ì‰ A?d °Ï"®,Ñ{ @  ìŠ B?d ðÏ",½Æ¥ @  ì‹ C?d 0Ð"¨/ @  ìŒ D?d pÐ"‘98Û @  ì E?d °Ð"Ã"ׂ @  ìŽ F?d ðÐ"A³À\ @  ì G?d 0Ñ".z`ö @  ì H?d pÑ"¬ëw( @  ì‘ I?d °Ñ"þð˜q @  ì’ J?d ðÑ"|a¯ @  ì“ K?d 0Ò"`îz| @  ì” L?d pÒ"âm¢ @  ì• M?d °Ò"°d‚û @  ì– N?d ðÒ"2õ•% @  ì— O?d 0Ó"•Íiƒ @  ì˜ P?d pÓ"\~] @  ì™ Q?d °Ó"EG‘ @  ìš R?d ðÓ"ÇÖ†Ú @  ì› S?d 0Ô"_S Ç @  ìœ T?d pÔ"ÝÂ7 @  ì U?d °Ô"ÙØ@ @  ìž V?d ðÔ" HÏž @  ìŸ W?d 0Õ"s‡H„ @  ì  X?d pÕ"ñ_Z @  ì¡ Y?d °Õ"£ ° @  ì¢ Z?d ðÕ"!œ§Ý @  ì£ [?d 0Ö"=R @  ì¤ \?d pÖ"¿‚EÐ @  ì¥ ]?d °Ö"홪‰ @  ì¦ ^?d ðÖ"o½W @  ì§ _?d 0×"U‡x- @  ì¨ `?d p×"×oó @  ì© a?d °×"… €ª @  ìª b?d ð×"œ—t @  ì« c?d 0Ø"²¨N{ @  ì¬ d?d pØ"09Y¥ @  ì­ e?d °Ø"b"¶ü @  ì® f?d ðØ"ೡ" @  ì¯ g?d 0Ù"zˆ @  ì° h?d pÙ" ëV @  ì± i?d °Ù"_ðù @  ì² j?d ðÙ"ÝaîÑ @  ì³ k?d 0Ú"Áî @  ì´ l?d pÚ"C Ü @  ìµ m?d °Ú"dã… @  ì¶ n?d ðÚ"“õô[ @  ì· o?d 0Û"4Íý @  ì¸ p?d pÛ"¶\# @  ì¹ q?d °Û"äGðz @  ìº r?d ðÛ"fÖç¤ @  ì» s?d 0Ü"þSA¹ @  ì¼ t?d pÜ"|ÂVg @  ì½ u?d °Ü".Ù¹> @  ì¾ v?d ðÜ"¬H®à @  ì¿ w?d 0Ý"|€/h @  ìÀ x?d pÝ"þ8¶ @  ìÁ y?d °Ý"¬ ×ï @  ì z?d ðÝ".›À1 @  ìà {?d 0Þ"25â @  ìÄ |?d pÞ"°…"< @  ìÅ }?d °Þ"âžÍe @  ìÆ ~?d ðÞ"`Ú» @  ìÇ ?d 0ß"·^B @  ìÈ €?d pß"5‡Iœ @  ìÉ ?d uÐà"/°ß"gœ¦Å @  ìÊ ‚?d ðß"ÜÊmÎ @  ì˃?d Hà"D¥f* @  ìÌ„?d ˆà"dPdÔ @  ìÍ…?d Èà"”/ž­ @  ìΆ?d á"DgE @  ìχ?d Há"yw)Ù @  ìЈ?d ˆá"Y‚+' @  ìщ?d Èá"©ýÑ^ @  ìÒŠ?d â"4¹qŸ @  ìÓ‹?d Hâ"7ã3S @  ìÔŒ?d ˆâ"1­ @  ìÕ?d Èâ"çiËÔ @  ìÖŽ?d ã"7!G< @  ì×?d Hã"ÂÀ ¬ @  ìØ?d ˆã"â5"R @  ìÙ‘?d Èã"JØ+ @  ìÚ’?d ä" +$ @  ìÛ“?d Hä"^iè @  ìÜ”?d ˆä"(«k @  ìÝ•?d Èä"ØÔ‘o @  ìÞ–?d å"œ‡ @  ìß—?d Hå"$Š« @  ìà˜?d ˆå"U @  ìá™?d Èå"ôù, @  ìâš?d€ æ"‡EK @  í›?d Hæ"ÿœO® @  íœ?d ˆæ"ßiMP @  í?d Èæ"ê_LÄ @  íž?d ç":À, @  íŸ?d Hç"œóÁ @  í ?d ˆç"¼Ãä @  í¡?d Èç"‚Ëfç @  í¢?d è"¶4êú @  í £?d Hè"p'SÛ @  í ¤?d ˆè"PÒQ% @  í ¥?d Èè"eäP± @  í ¦?d é"µ¬ÜY @  í §?d Hé"믆_ @  í¨?d ˆé"ËZ„¡ @  í©?d Èé"X6B @  íª?d ê"År¿ƒ @  í«?d Hê"a¢ @  í¬?d ˆê"#”\ @  í­?d Èê"¢È @  í®?d ë"Æê‰  @  í¯?d Hë"ý¹±Ê @  í°?d ˆë"ÝL³4 @  í±?d Èë"ã7 @  í²?d ì"úÏå8 @  í³?d Hì"<Ü\ @  í´?d ˆì")^ç @  íµ?d Èì")_s @  í¶?d í"ùWÓ› @  í·?d Hí"§T‰ @  í¸?d ˆí"‡¡‹c @  í¹?d Èí"Ë70 @  í º?d î"˜—ñ @  í!»?d Hî"^œ.Ð @  í"¼?d ˆî"~i,. @  í#½?d Èî"K_-º @  í$¾?d ï"›¡R @  í%¿?d Hï"Í£µu @  í&À?d ˆï"íV·‹ @  í'Á?d Èï"Ó›ˆ @  í(Â?d ð"mE®: @  í)Ã?d Hð"«V @  í*Ä?d ˆð"‹£å @  í+Å?d Èð"¾•q @  í,Æ?d ñ"nݘ™ @  í-Ç?d Hñ"0ÞŸ @  í.È?d ˆñ"+Àa @  í/É?d Èñ"ƒG[‚ @  í0Ê?d ò"ûC @  í1Ë?d Hò"ØBb @  í2Ì?d ˆò"øå@œ @  í3Í?d Èò"ÍÓA @  í4Î?d ó"›Íà @  í5Ï?d Hó"&Èõ  @  í6Ð?d ˆó"=÷ô @  í7Ñ?d Èó"8ðR÷ @  í8Ò?d ô"!¾¡ø @  í9Ó?d Hô"ç­Ù @  í:Ô?d ˆô"ÇX' @  í;Õ?d Èô"òn³ @  í<Ö?d õ""&—[ @  í=×?d Hõ"|%Í] @  í>Ø?d ˆõ"\ÐÏ£ @  í?Ù?d Èõ"p½ub @  í@Ú?d ö"íùÕ£ @  íAÛ?d Hö"+êl‚ @  íBÜ?d ˆö" n| @  íCÝ?d Èö">)oè @  íDÞ?d ÷"îaã @  íEß?d H÷"H…â6 @  íFà?d ˆ÷"hpàÈ @  íGá?d È÷"V½EË @  íHâ?d ø"bBÉÖ @  íIã?d Hø"¤Qp÷ @  íJä?d ˆø"„¤r  @  íKå?d Èø"±’s @  íLæ?d ù"aÚÿu @  íMç?d Hù"?Ù¥s @  íNè?d ˆù",§ @  íOé?d Èù"Œ@?d #)#ãk @  í¥??d `#—÷L @  í¦@?d  #_bõ² @  í§A?d à#a¯P± @  í¨B?d #ßqì @  í©C?d `#bU" @  íªD?d  #9—WÜ @  í«E?d à# ¡VH @  í¬F?d #ÜéÚ  @  í­G?d `#‚ꀦ @  í®H?d  #¢‚X @  í¯I?d à#1s» @  í°J?d #¬7¹z @  í±K?d `#j$[ @  í²L?d  #JÑ¥ @  í³M?d à#ç1 @  í´N?d #¯¯Ù @  íµO?d `#”ü·3 @  í¶P?d  #´ µÍ @  í·Q?d à#ŠÄÎ @  í¸R?d #“ŠãÁ @  í¹S?d `#U™Zà @  íºT?d  #ulX @  í»U?d à#@ZYŠ @  í¼V?d #Õb @  í½W?d `#Îd @  í¾X?d  #îäš @  í¿Y?d à#‰7[ @  íÀZ?d #_Í—š @  íÁ[?d `#™Þ.» @  íÂ\?d  #¹+,E @  íÃ]?d à#Œ-Ñ @  íÄ^?d #\U¡9 @  íÅ_?d `#ú±  @  íÆ`?d  #ÚD¢ñ @  íÇa?d à#ä‰ò @  íÈb?d #Ðv‹ï @  íÉc?d `#e2Î @  íÊd?d  #600 @  íËe?d à#¦1¤ @  íÌf?d #Óî½L @  íÍg?d `#íçJ @  íÎh?d  #­å´ @  íÏi?d à#>t~W @  íÐj?d #£0Þ– @  íÑk?d `#e#g· @  íÒl?d  #EÖeI @  íÓm?d à#pàdÝ @  íÔn?d # ¨è5 @  íÕo?d `#›ûÐß @  íÖp?d  #»Ò! @  í×q?d à#…Ãw" @  íØr?d #œ„- @  íÙs?d `#Zž=  @  íÚt?d  #zk?ò @  íÛu?d à#O]>f @  íÜv?d #Ÿ²Ž @  íÝw?d `#Áèˆ @  íÞx?d  #áãêv @  íßy?d à#c‰V% @  íàz?d #þÍöä @  íá{?d `#8ÞOÅ @  íâ|?d€  #Ùlº; @  î}?d à# ó† @  î~?d #ÝSn @  î?d `#ShÄ6 @  î€?d  #sÆÈuÐ # @  î?d à#ƒâ<± @  î‚?d 8 #òéâ× @  îƒ?d x #úHŒ @  î„?d ¸ #Ú½r @  î …?d ø #*Âü  @  î †?d 8!#úŠpã @  î ‡?d x!#aÀÑ @  î ˆ?d ¸!#A5Óö @  î ‰?d ø!#±J) @  îŠ?d 8"#,‰N @  î‹?d x"#‰Qõ @  îŒ?d ¸"#©ûS  @  î?d ø"#Y„©r @  îŽ?d 8##‰Ì%š @  î?d x##wÖæ @  î?d ¸##W#äc @  î‘?d ø##§\ @  î’?d 8$#¾í @  î“?d x$#¶³ N @  î”?d ¸$#–F ° @  î•?d ø$#f9óÉ @  î–?d 8%#¶q! @  î—?d x%#-;ÞÊ @  î˜?d ¸%# ÎÜ4 @  î™?d ø%#ý±&M @  îš?d 8&#`õ†Œ @  î›?d x&#Ôóy‡ @  î œ?d ¸&#ô{y @  î!?d ø&#y @  î"ž?d 8'#Ô1 è @  î#Ÿ?d x'#·œ÷3 @  î$ ?d ¸'#—iõÍ @  î%¡?d ø'#g´ @  î&¢?d 8(#S郩 @  î'£?d x(#[Heò @  î(¤?d ¸(#{½g  @  î)¥?d ø(#‹Âu @  î*¦?d 8)#[Š @  î+§?d x)#ÀÀ°v @  î,¨?d ¸)#à5²ˆ @  î-©?d ø)#JHñ @  î.ª?d 8*#è0 @  î/«?d x*#(0‹ @  î0¬?d ¸*#û2u @  î1­?d ø*#ø„È  @  î2®?d 8+#(ÌDä @  î3¯?d x+#ÖÖ‡ã @  î4°?d ¸+#ö#… @  î5±?d ø+#\d @  î6²?d 8,#Œk @  î7³?d x,#³j0 @  î8´?d ¸,#7FhÎ @  î9µ?d ø,#Ç9’· @  î:¶?d 8-#q_ @  î;·?d x-#Œ;¿´ @  î<¸?d ¸-#¬Î½J @  î=¹?d ø-#\±G3 @  î>º?d 8.#Áõçò @  î?»?d x.#Ûôk @  î@¼?d ¸.#û• @  îA½?d ø.# ~æì @  îB¾?d 8/#Û6j @  îC¿?d x/#HË…Î @  îDÀ?d ¸/#h>‡0 @  îEÁ?d ø/#˜A}I @  îFÂ?d 80#&ŸÁû @  îGÃ?d x0#.>'  @  îHÄ?d ¸0#Ë%^ @  îIÅ?d ø0#þ´ß' @  îJÆ?d 81#.üSÏ @  îKÇ?d x1#µ¶ò$ @  îLÈ?d ¸1#•CðÚ @  îMÉ?d ø1#e< £ @  îNÊ?d 82#øxªb @  îOË?d x2#]xrÙ @  îPÌ?d ¸2#}p' @  îQÍ?d ø2#òŠ^ @  îRÎ?d 83#]º¶ @  îSÏ?d x3#£ Å± @  îTÐ?d ¸3#ƒUÇO @  îUÑ?d ø3#s*=6 @  îVÒ?d 84#jdÎ9 @  îWÓ?d x4#bÅ(b @  îXÔ?d ¸4#B0*œ @  îYÕ?d ø4#²OÐå @  îZÖ?d 85#b\  @  î[×?d x5#ùMýæ @  î\Ø?d ¸5#Ù¸ÿ @  î]Ù?d ø5#)Ça @  î^Ú?d 86#´ƒ¥  @  î_Û?d x6#…Z« @  î`Ü?d ¸6# pXU @  îaÝ?d ø6#Т, @  îbÞ?d 87#G.Ä @  îcß?d x7#cêÔ @  îdà?d ¸7#CÖá @  îeá?d ø7#³`,˜ @  îfâ?d 88#‡Ÿ … @  îgã?d x8#>FÞ @  îhä?d ¸8#¯ËD  @  îiå?d ø8#_´¾Y @  îjæ?d 89#ü2± @  îkç?d x9#¶“Z @  îlè?d ¸9#4C‘¤ @  îmé?d ø9#Ä#ƒÄÞ @  îû?d x>#ìÔ v @  î€ü?d ¸>#Ì!ˆ @  îý?d ø>#<^õñ @  î‚þ?d 8?#ìy @  îƒÿ?d x?#äϱý @  î„?duÐ@#7 ¸?#Ä:³ @  î…?d ø?#ö쮯 @  î†?d P@#5@“ @  î‡?d @#Ÿ…çè @  îˆ?d Ð@#ð6 @  î‰?d A#¿²‘y @  îŠ?d PA#=#†§ @  î‹?d A# 2l @  îŒ?d ÐA#†œ%² @  î ?d B#i6hÔ @  îŽ ?d PB#ë§  @  î ?d B#ìò‘ @  î ?d ÐB#nR¥O @  î‘ ?d C#ÌôÄ @  î’?d PC#NeÓÞ @  î“?d C#ù @  î”?d ÐC#Š' @  î•?d D#û*  @  î–?d PD#y»Q @  î—?d D#Ó~è* @  î˜?d ÐD#Qïÿô @  î™?d E#óIž» @  îš?d PE#q؉e @  î›?d E#Hö=® @  îœ?d ÐE#Êg*p @  î?d F#%Íg @  îž?d PF#§\pÈ @  îŸ?d F#±>šã @  î ?d ÐF#3¯= @  î¡?d G#‘ ìr @  î¢?d PG#˜û¬ @  î£?d G#ÒQW @  î¤ ?d ÐG#PÀ‰ @  î¥!?d H#Ñb3 @  î¦"?d PH#”@uí @  î§#?d H#>…†– @  î¨$?d ÐH#¼‘H @  î©%?d I#²ð @  îª&?d PI#œ#çÙ @  î«'?d I#¥ S @  î¬(?d ÐI#'œDÌ @  î­)?d J#È6 ª @  î®*?d PJ#J§t @  î¯+?d J#MÃÓï @  î°,?d ÐJ#ÏRÄ1 @  î±-?d K#mô¥~ @  î².?d PK#ïe²  @  î³/?d K#³d‡ @  î´0?d ÐK#1ŠsY @  îµ1?d L#Z*mñ @  î¶2?d PL#Ø»z/ @  î·3?d L#r~‰T @  î¸4?d ÐL#ð @  î¹5?d M#RIÿÅ @  îº6?d PM#ÐØè @  î»7?d M#éö\Ð @  î¼8?d ÐM#kgK @  î½9?d N#„Íh @  î¾:?d PN#\¶ @  î¿;?d N#¾9ý @  îÀ<?d ÐN#<¨êÑ @  îÁ=?d O#ž‹ž @  îÂ>?d PO#Ÿœ@ @  îÃ??d O#-fª @  îÄ@?d ÐO#¯—qt @  îÅA?d P#c§ a @  îÆB?d PP#á67¿ @  îÇC?d P#KóÄÄ @  îÈD?d ÐP#ÉbÓ @  îÉE?d Q#kIJU @  îÊF?d PQ#éU¥‹ @  îËG?d Q#Ð{@ @  îÌH?d ÐQ#Rêž @  îÍI?d R#½@Kø @  îÎJ?d PR#?Ñ\& @  îÏK?d R#8µ‘½ @  îÐL?d ÐR#º$†c @  îÑM?d S#‚ç, @  îÒN?d PS#šðò @  îÓO?d S#Æm&Õ @  îÔP?d ÐS#Dü1  @  îÕQ?d T#/\/£ @  îÖR?d PT#­Í8} @  î×S?d T#Ë @  îØT?d ÐT#…™ÜØ @  îÙU?d U#'?½— @  îÚV?d PU#¥®ªI @  îÛW?d U#œ€‚ @  îÜX?d ÐU# \ @  îÝY?d V#ñ»D: @  îÞZ?d PV#s*Sä @  îß[?d V#eH¹Ï @  îà\?d ÐV#çÙ® @  îá]?d W#EÏ^ @  îâ^?d€ PW#³-Ä& @  ï_?d W#“¥cô @  ï`?d ÐW#4t* @  ïa?d X#’lî} @  ïb?d PX#ýù£ @  ïc?d X#tŠU¢ @  ïd?d ÐX#öB| @  ïe?d Y#š|I @  ïf?d PY#žk— @  ï g?d Y#äù$± @  ï h?d ÐY#fh3o @  ï i?d Z#L‹…ä @  ï j?d PZ#Î’: @  ï k?d Z#ªm>; @  ïl?d ÐZ#(ü)å @  ïm?d [#éI)0 @  ïn?d P[#kØ>î @  ïo?d [#òï$ @  ïp?d Ð[#p~ú @  ïq?d \#Þ—á¿ @  ïr?d P\#\öa @  ïs?d \#8qZ` @  ït?d Ð\#ºàM¾ @  ïu?d ]#Öôs‹ @  ïv?d P]#TedU @  ïw?d ]#¨+s @  ïx?d Ð]#*“<­ @  ïy?d ^#pŠ& @  ïz?d P^#‚áø @  ï{?d ^#æ–1ù @  ï|?d Ð^#d&' @  ï}?d _#´´B @  ï ~?d P_#6%œ @  ï!?d _#ß3C  @  ïuÐ`#"€?d Ð_#]¢T× @  ï#?d (`#Tý÷ @  ï$‚?d h`#ÖlàÛ @  ï%ƒ?d ¨`#²LÚ @  ï&„?d è`#0Š[ @  ï'…?d (a#\že1 @  ï(†?d ha#Þrï @  ï)‡?d ¨a#"h=É @  ï*ˆ?d èa# ù* @  ï+‰?d (b#Šœœ @  ï,Š?d hb#‹‹B @  ï-‹?d ¨b#lü'C @  ï.Œ?d èb#îm0 @  ï/?d (c#/Ø0H @  ï0Ž?d hc#­I'– @  ï1?d ¨c#4~ \ @  ï2?d èc#¶ï‚ @  ï3‘?d (d#øÇ @  ï4’?d hd#š—ï @  ï5“?d ¨d#þàC @  ï6”?d èd#|qTÆ @  ï7•?d (e#ejó @  ï8–?d he#’ô}- @  ï9—?d ¨e#n“2  @  ï:˜?d èe#ì%Õ @  ï;™?d (f#Æá“^ @  ï<š?d hf#Dp„€ @  ï=›?d ¨f# ( @  ï>œ?d èf#¢–?_ @  ï??d (g#Ü"¨ @  ï@ž?d hg#^³ v @  ïAŸ?d ¨g#Z3` @  ïB ?d èg#Ø¢ ¾ @  ïC¡?d (h#[úé @  ïD¢?d hh#Ùk‡7 @  ïE£?d ¨h#½+6 @  ïF¤?d èh#?<è @  ïG¥?d (i#S™Ý @  ïH¦?d hi#Ñ @  ïI§?d ¨i#-oZ% @  ïJ¨?d èi#¯þMû @  ïK©?d (j#…ûp @  ïLª?d hj#Œì® @  ïM«?d ¨j#cû@¯ @  ïN¬?d èj#ájWq @  ïO­?d (k# ßW¤ @  ïP®?d hk#¢N@z @  ïQ¯?d ¨k#;ym° @  ïR°?d èk#¹èzn @  ïS±?d (l#Ÿ+ @  ïT²?d hl#•ˆõ @  ïU³?d ¨l#ñç$ô @  ïV´?d èl#sv3* @  ïWµ?d (m#b  @  ïX¶?d hm#óÁ @  ïY·?d ¨m#a”Uç @  ïZ¸?d èm#ãB9 @  ï[¹?d (n#Éæô² @  ï\º?d hn#Kwãl @  ï]»?d ¨n#/Om @  ï^¼?d èn#­‘X³ @  ï_½?d (o#}"Ö @  ï`¾?d ho#ÿ³h @  ïa¿?d ¨o# ci @  ïbÀ?d èo#‰ò~Ñ @  ïcÁ?d (p#€‹Ô) @  ïdÂ?d hp#Ã÷ @  ïeÃ?d ¨p#fmoö @  ïfÄ?d èp#äüx( @  ïgÅ?d (q#ˆèF @  ïhÆ?d hq# yQà @  ïiÇ?d ¨q#öå @  ïjÈ?d èq#t ; @  ïkÉ?d (r#^l¿° @  ïlÊ?d hr#Üý¨n @  ïmË?d ¨r#¸Šo @  ïnÌ?d èr#:± @  ïoÍ?d (s#û®d @  ïpÎ?d hs#y?º @  ïqÏ?d ¨s#à)p @  ïrÐ?d ès#b™>® @  ïsÑ?d (t#ÌpÛë @  ïtÒ?d ht#NáÌ5 @  ïuÓ?d ¨t#*–`4 @  ïvÔ?d èt#¨wê @  ïwÕ?d (u#ÄIß @  ïxÖ?d hu#F‚^ @  ïy×?d ¨u#ºå' @  ïzØ?d èu#8tù @  ï{Ù?d (v#—°r @  ï|Ú?d hv#§¬ @  ï}Û?d ¨v#ôq ­ @  ï~Ü?d èv#vàs @  ïÝ?d (w#ë µ @  ï€Þ?d hw#i“k @  ïß?d ¨w#m} @  ï‚à?d èw#ï‚£ @  ïƒá?d (x#lÚƒô @  ï„â?d hx#îK”* @  ï…ã?d ¨x#Š<8+ @  ï†ä?d èx#­/õ @  ï‡å?d (y#d¹À @  ïˆæ?d hy#æ( @  ï‰ç?d ¨y#OI8 @  ïŠè?d èy#˜Þ^æ @  ï‹é?d (z#²=èm @  ïŒê?d hz#0¬ÿ³ @  ïë?d ¨z#TÛS² @  ïŽì?d èz#ÖJDl @  ïí?d ({#ÿD¹ @  ïî?d h{#•nSg @  ï‘ï?d ¨{# Y~­ @  ï’ð?d è{#ŽÈis @  ï“ñ?d (|# !Œ6 @  ï”ò?d h|#¢°›è @  ï•ó?d ¨|#ÆÇ7é @  ï–ô?d è|#DV 7 @  ï—õ?d (}#(B @  ï˜ö?d h}#ªÓ Ü @  ï™÷?d ¨}#V´Fú @  ïšø?d è}#Ô%Q$ @  ï›ù?d (~#þÆç¯ @  ïœú?d h~#|Wðq @  ïû?d ¨~# \p @  ïžü?d è~#š±K® @  ïŸý?d (#JlË @  ï þ?d h#È“{ @  ï¡ÿ?d ¨#uЀ#'^â{Œ @  ï¢?d è#ÜslR @  ï£?d @€#j˜l @  ï¤?d €€#%Ÿš’ @  ï¥?d À€#ãŒ#³ @  ï¦?d #3į[ @  ï§?d @# X @  ï¨?d €#-ü¦ @  ï©?d À#sÿR  @  ïª?d ‚#î»òa @  ï« ?d @‚#Ûóõ @  ï¬ ?d €‚#ûxñ  @  ï­ ?d À‚#=kH* @  ï® ?d ƒ#í#Ä @  ï¯ ?d @ƒ#~O_! @  ï°?d €ƒ#^º]ß @  ï±?d Àƒ#eée5 @  ï²?d „#|§–: @  ï³?d @„#I‘—® @  ï´?d €„#id•P @  ïµ?d À„#¯w,q @  ï¶?d …#? ™ @  ï·?d @…#Aòš @  ï¸?d €…#ad @  ï¹?d À…#?]b @  ïº?d †#¢@ý£ @  ï»?d @†#—vü7 @  ï¼?d €†#·ƒþÉ @  ï½?d À†#qGè @  ï¾?d ‡#¡ØË @  ï¿?d @‡#µqÁ @  ïÀ?d €‡#­@s? @  ïÁ?d À‡# ¤r  @  ï ?d ˆ#?[þ @  ïÃ!?d @ˆ# mÿ€ @  ïÄ"?d €ˆ#*˜ý~ @  ïÅ#?d Àˆ#ì‹D_ @  ïÆ$?d ‰#<ÃÈ· @  ïÇ%?d @‰#m´ @  ïÈ&?d €‰#"ûoJ @  ïÉ'?d À‰#|ø5L @  ïÊ(?d Š#ἕ @  ïË)?d @Š#ÔŠ” @  ïÌ*?d €Š#ô–ç @  ïÍ+?d ÀŠ#2l/Æ @  ïÎ,?d ‹#â$£. @  ïÏ-?d @‹#qH8Í @  ïÐ.?d €‹#Q½:3 @  ïÑ/?d À‹#jîÙ @  ïÒ0?d Œ#s ñÖ @  ïÓ1?d @Œ#F–ðB @  ïÔ2?d €Œ#fcò¼ @  ïÕ3?d ÀŒ# pK @  ïÖ4?d #p8Çu @  ï×5?d @#Nõbv @  ïØ6?d €#n`ˆ @  ïÙ7?d À#0:Ž @  ïÚ8?d Ž#­GšO @  ïÛ9?d @Ž#˜q›Û @  ïÜ:?d €Ž#¸„™% @  ïÝ;?d ÀŽ#~—  @  ïÞ<?d #®ß¬ì @  ïß=?d @#,µ¿ @  ïà>?d €# @A @  ïá??d À#Zôf @  ïâ@?d€ #vV: @  ðA?d @#[‡ @  ðB?d €#{ôy @  ðC?d À#x®_µ @  ðD?d ‘#¨æÓ] @  ðE?d @‘#X™)$ @  ðF?d €‘#xl+Ú @  ðG?d À‘#èÝ.¦ @  ðH?d ’#u™Žg @  ð I?d @’#…æt @  ð J?d €’#¥và @  ð K?d À’#¦I4, @  ð L?d “#v¸Ä @  ð M?d @“#†~B½ @  ðN?d €“#¦‹@C @  ðO?d À“#þË3 @  ðP?d ”#ç…ê< @  ðQ?d @”#úE @  ðR?d €”#7» @  ðS?d À”#4UPw @  ðT?d •#äÜŸ @  ðU?d @•#b&æ @  ðV?d €•#4—$ @  ðW?d À•#¤&!d @  ðX?d –#9b¥ @  ðY?d @–#É{Ü @  ðZ?d €–#éèy" @  ð[?d À–#ê²;î @  ð\?d —#:ú· @  ð]?d @—#Ê…M @  ð^?d €—#êpO @  ð_?d À—#> @  ð `?d ˜# ~„€ @  ð!a?d @˜#ú~ù @  ð"b?d €˜#Úô| @  ð#c?d À˜#Ù®>Ë @  ð$d?d ™# æ²# @  ð%e?d @™#ù™HZ @  ð&f?d €™#ÙlJ¤ @  ð'g?d À™#IÝOØ @  ð(h?d š#Ô™ï @  ð)i?d @š#$æ` @  ð*j?d €š#ž @  ð+k?d Àš#IUR @  ð,l?d ›#×Ùº @  ð-m?d @›#'~#à @  ð.n?d €›#‹!= @  ð/o?d À›#_ËxM @  ð0p?d œ#F…‹B @  ð1q?d @œ#¶úq; @  ð2r?d €œ#–sÅ @  ð3s?d Àœ#•U1  @  ð4t?d #E½á @  ð5u?d @#µbG˜ @  ð6v?d €#•—Ef @  ð7w?d À#&@ @  ð8x?d ž#˜bàÛ @  ð9y?d @ž#h¢ @  ð:z?d €ž#Hè\ @  ð;{?d Àž#K²Z @  ð<|?d Ÿ#›úÖx @  ð=}?d @Ÿ#k…, @  ð>~?d €Ÿ#Kp.ÿ @  ð?uР#?d ÀŸ#Ü.ò @  ð@€?d  #­ð” @  ðA?d X #]d í @  ðB‚?d ˜ #}‘ @  ðCƒ?d Ø #~ËJß @  ðD„?d ¡#®ƒÆ7 @  ðE…?d X¡#^ü° @  ðG‡?d Ø¡#î¸;Ì @  ðHˆ?d ¢#sü›  @  ðI‰?d X¢#ƒƒat @  ðJŠ?d ˜¢#£vcŠ @  ðK‹?d Ø¢# ,!F @  ðLŒ?d £#pd­® @  ðM?d X£#€W× @  ðNŽ?d ˜£# îU) @  ðO?d Ø£#ø® Y @  ðP?d ¤#áàÿV @  ðQ‘?d X¤#Ÿ/ @  ðR’?d ˜¤#1jÑ @  ðS“?d ؤ#20E @  ðT”?d ¥#âxÉõ @  ðU•?d X¥#3Œ @  ðV–?d ˜¥#2ò1r @  ðW—?d Ø¥#¢C4 @  ðX˜?d ¦#?”Ï @  ðY™?d X¦#Ïxn¶ @  ðZš?d ˜¦#ïlH @  ð[›?d ئ#ì×.„ @  ð\œ?d §#<Ÿ¢l @  ð]?d X§#ÌàX @  ð^ž?d ˜§#ìZë @  ð_Ÿ?d ا#8ä÷ @  ð` ?d ¨# ‘ê @  ða¡?d X¨#üdk“ @  ðb¢?d ˜¨#Ü‘im @  ðc£?d ب#ßË+¡ @  ðd¤?d ©#ƒ§I @  ðe¥?d X©#ÿü]0 @  ðf¦?d ˜©#ß _Î @  ðg§?d Ø©#O¸Z² @  ðh¨?d ª#Òüús @  ði©?d Xª#"ƒ  @  ðjª?d ˜ª#vô @  ðk«?d ت#,@8 @  ðl¬?d «#ÑdÌÐ @  ðm­?d X«#!6© @  ðn®?d ˜«#î4W @  ðo¯?d Ø«#Y®m' @  ðp°?d ¬#@àž( @  ðq±?d X¬#°ŸdQ @  ðr²?d ˜¬#jf¯ @  ðs³?d ج#“0$c @  ðt´?d ­#Cx¨‹ @  ðuµ?d X­#³Rò @  ðv¶?d ˜­#“òP  @  ðw·?d Ø­#CUp @  ðx¸?d ®#žõ± @  ðy¹?d X®#nxÈ @  ðzº?d ˜®#N 6 @  ð{»?d Ø®#M×Oú @  ð|¼?d ¯#ŸÃ @  ð}½?d X¯#mà9k @  ð~¾?d ˜¯#M;• @  ð¿?d د#$å_; @  ð€À?d °#š;㉠@  ðÁ?d X°#jDð @  ð‚Â?d ˜°#J± @  ðƒÃ?d ذ#IëY @  ð„Ä?d ±#™£Õ* @  ð…Å?d X±#iÜ/S @  ð†Æ?d ˜±#I)-­ @  ð‡Ç?d ر#Ù˜(Ñ @  ðˆÈ?d ²#D܈ @  ð‰É?d X²#´£ri @  ðŠÊ?d ˜²#”Vp— @  ð‹Ë?d ز#— 2[ @  ðŒÌ?d ³#GD¾³ @  ðÍ?d X³#·;DÊ @  ðŽÎ?d ˜³#—ÎF4 @  ðÏ?d س#ÏŽD @  ðÐ?d ´#ÖÀìK @  ð‘Ñ?d X´#&¿2 @  ð’Ò?d ˜´#JÌ @  ð“Ó?d Ø´#V @  ð”Ô?d µ#ÕXÚè @  ð•Õ?d Xµ#%' ‘ @  ð–Ö?d ˜µ#Ò"o @  ð—×?d ص#•c' @  ð˜Ø?d ¶#'‡Ò @  ð™Ù?d X¶#øX}« @  ðšÚ?d ˜¶#Ø­U @  ð›Û?d ض#Û÷=™ @  ðœÜ?d ·# ¿±q @  ðÝ?d X·#ûÀK @  ðžÞ?d ˜·#Û5Iö @  ðŸß?d Ø·#Äê @  ð à?d ¸#;;‚÷ @  ð¡á?d X¸#ËDxŽ @  ð¢â?d ˜¸#ë±zp @  ð£ã?d ظ#èë8¼ @  ð¤ä?d ¹#8£´T @  ð¥å?d X¹#ÈÜN- @  ð¦æ?d ˜¹#è)LÓ @  ð§ç?d ع#x˜I¯ @  ð¨è?d º#åÜén @  ð©é?d Xº#£ @  ðªê?d ˜º#5Vé @  ð«ë?d غ#6 S% @  ð¬ì?d »#æDßÍ @  ð­í?d X»#;%´ @  ð®î?d ˜»#6Î'J @  ð¯ï?d Ø»#nŽ~: @  ð°ð?d ¼#wÀ5 @  ð±ñ?d X¼#‡¿wL @  ð²ò?d ˜¼#§Ju² @  ð³ó?d ؼ#¤7~ @  ð´ô?d ½#tX»– @  ðµõ?d X½#„'Aï @  ð¶ö?d ˜½#¤ÒC @  ð·÷?d ؽ#4cFm @  ð¸ø?d ¾#©'æ¬ @  ð¹ù?d X¾#YXÕ @  ðºú?d ˜¾#y­+ @  ð»û?d ؾ#z÷\ç @  ð¼ü?d ¿#ª¿Ð @  ð½ý?d X¿#ZÀ*v @  ð¾þ?d ˜¿#z5(ˆ @uÐÀ#  ð¿ÿ?d Ø¿#×”y @  ðÀ ?d 0À#}'Å+ @  ðÁ ?d pÀ#X?R @  ð ?d °À#­­=¬ @  ðà ?d ðÀ#®÷` @  ðÄ ?d 0Á#~¿óˆ @  ðÅ ?d pÁ#ŽÀ ñ @  ðÆ ?d °Á#®5  @  ðÇ ?d ðÁ#>„s @  ðÈ ?d 0Â#£À®² @  ðÉ  ?d pÂ#S¿TË @  ðÊ  ?d °Â#sJV5 @  ðË  ?d ðÂ#pù @  ðÌ  ?d 0Ã# X˜ @  ðÍ  ?d pÃ#P'bh @  ðÎ ?d °Ã#pÒ`– @  ðÏ ?d ðÃ#(’9æ @  ðÐ ?d 0Ä#1ÜÊé @  ðÑ ?d pÄ#Á£0 @  ðÒ ?d °Ä#áV2n @  ðÓ ?d ðÄ#â p¢ @  ðÔ ?d 0Å#2DüJ @  ðÕ ?d pÅ#Â;3 @  ðÖ ?d °Å#âÎÍ @  ð× ?d ðÅ#r± @  ðØ ?d 0Æ#ï;¡p @  ðÙ ?d pÆ#D[  @  ðÚ ?d °Æ#?±Y÷ @  ðÛ ?d ðÆ#<ë; @  ðÜ ?d 0Ç#죗Ó @  ðÝ ?d pÇ#Ümª @  ðÞ ?d °Ç#<)oT @  ðß ?d ðÇ#èØ(H @  ðà  ?d 0È#Ü'¤U @  ðá !?d pÈ#,X^, @  ðâ "?d€ °È#xn@t @  ñ #?d ðÈ#šuJ‘ @  ñ $?d 0É#J=Æy @  ñ %?d pÉ# Çí @  ñ &?d °É#_þÅ @  ñ '?d ðÉ#ýŸ @  ñ (?d 0Ê#œ¹?Ô @  ñ )?d pÊ#¢tš× @  ñ *?d °Ê#‚˜) @  ñ +?d ðÊ#D’! @  ñ ,?d 0Ë#”Ú­à @  ñ -?d pË#¡ì¬t @  ñ .?d °Ë#®Š @  ñ /?d ðË#ºJ–` @  ñ 0?d 0Ì#£eo @  ñ 1?d pÌ#0hþŒ @  ñ 2?d °Ì#ür @  ñ 3?d ðÌ#ÖŽES @  ñ 4?d 0Í#ÆÉ» @  ñ 5?d pÍ#3ðÈ/ @  ñ 6?d °Í#ÊÑ @  ñ 7?d ðÍ#M× @  ñ 8?d 0Î#ÐB0 @  ñ 9?d pÎ#î• @  ñ :?d °Î#Îz—ë @  ñ ;?d ðÎ#i.Ê @  ñ <?d 0Ï#Ø!¢" @  ñ =?d pÏ#í£¶ @  ñ >?d °Ï#Íâ¡H @  ñ ??d ðÏ#›Vµo @  ñ @?d 0Ð#%ˆ Ý @  ñ A?d pÐ#§âµŽ @  ñ B?d °Ð#‡·p @  ñ! C?d ðÐ#AQ @  ñ" D?d 0Ñ#‘L‚¹ @  ñ# E?d pÑ#¤zƒ- @  ñ$ F?d °Ñ#„Ó @  ñ% G?d ðÑ#ÚŒÛÕ @  ñ& H?d 0Ò#GÈ{ @  ñ' I?d pÒ#yÞ @  ñ( J?d °Ò#YðÜé @  ñ) K?d ðÒ#ŸãeÈ @  ñ* L?d 0Ó#O«é  @  ñ+ M?d pÓ#zè´ @  ñ, N?d °Ó#ZhêJ @  ñ- O?d ðÓ#a;Ò  @  ñ. P?d 0Ô#xu!¯ @  ñ/ Q?d pÔ#ëºL @  ñ0 R?d °Ô#Ë츲 @  ñ1 S?d ðÔ# ÿ“ @  ñ2 T?d 0Õ#Ý·{ @  ñ3 U?d pÕ#èŒï @  ñ4 V?d °Õ#ÈtŽ @  ñ5 W?d ðÕ#–wÔ @  ñ6 X?d 0Ö# 3tÖ @  ñ7 Y?d pÖ#5þÑÕ @  ñ8 Z?d °Ö# Ó+ @  ñ9 [?d ðÖ#Ój  @  ñ: \?d 0×#Pæâ @  ñ; ]?d p×#6fçv @  ñ< ^?d °×#“åˆ @  ñ= _?d ð×#°wä¾ @  ñ> `?d 0Ø#„ˆh£ @  ñ? a?d pØ#¨åÒb @  ñ@ b?d °Ø#ˆМ @  ñA c?d ðØ#Ni½ @  ñB d?d 0Ù#žKåU @  ñC e?d pÙ#«}äÁ @  ñD f?d °Ù#‹ˆæ? @  ñE g?d ðÙ#Õ‹¼9 @  ñF h?d 0Ú#HÏø @  ñG i?d pÚ#v¹û @  ñH j?d °Ú#V÷» @  ñI k?d ðÚ#ä$ @  ñJ l?d 0Û#@¬ŽÌ @  ñK m?d pÛ#ušX @  ñL n?d °Û#Uo¦ @  ñM o?d ðÛ#n<µL @  ñN p?d 0Ü#wrFC @  ñO q?d pÜ#äÝ  @  ñP r?d °Ü#Äëß^ @  ñQ s?d ðÜ#øf @  ñR t?d 0Ý#Ò°ê— @  ñS u?d pÝ#ç†ë @  ñT v?d °Ý#Çséý @  ñU w?d ðÝ#™p³û @  ñV x?d 0Þ#4: @  ñW y?d pÞ#:ù¶9 @  ñX z?d °Þ# ´Ç @  ñY {?d ðÞ#Ü æ @  ñZ |?d 0ß# W @  ñ[ }?d pß#9a€š @  ñ\ ~?d uÐà#/°ß#”‚d @  ñ] ?d ðß#k! @  ñ^€?d Hà#r…@ò @  ñ_?d ˆà#R‹é @  ñ`‚?d Èà#Ðþ_ @  ñaƒ?d á#DÐÜH @  ñb„?d Há#ÆAË– @  ñc…?d ˆá#Qß" @  ñd†?d Èá#Ó‚Èü @  ñe‡?d â#’T%å @  ñfˆ?d Hâ#Å2; @  ñg‰?d ˆâ#Œl‚ @  ñhŠ?d Èâ#ý•Æ @  ñi‹?d ã#š7·Ñ @  ñjŒ?d Hã#¦  @  ñk?d ˆã#ô´» @  ñlŽ?d Èã# e£e @  ñm?d ä#­é^ @  ñn?d Hä#/xh€ @  ño‘?d ˆä#pæC @  ñp’?d Èä#œáñ @  ñq“?d å#+ÓŠ @  ñr”?d Hå#ŠºÄT @  ñs•?d ˆå#èÐà @  ñt–?d Èå#ŸyÇ> @  ñu—?d æ#Þ¯*' @  ñv˜?d Hæ#\>=ù @  ñw™?d ˆæ#À—Ú @  ñxš?d Èæ#Bš @  ñy›?d ç#Ö̸ @  ñzœ?d Hç#T]¯Í @  ñ{?d ˆç#ûy @  ñ|ž?d Èç#Až¬§ @  ñ}Ÿ?d è#Q6R @  ñ~ ?d Hè#Ó…!Œ @  ñ¡?d ˆè#¾Ú¾\ @  ñ€¢?d Èè#’ @  ò"?d à$ì¯L @  ò#?d $ pfq @  ò $?d ` $ˆáq¯ @  ò!%?d   $Úúžö @  ò"&?d à $Xk‰( @  ò#'?d $ÜôŸÜ @  ò$(?d ` $^eˆ @  ò%)?d   $ ~g[ @  ò&*?d à $Žïp… @  ò'+?d $Ô— è @  ò(,?d ` $V6 @  ò)-?d   $õo @  ò*.?d à $†Œâ± @  ò+/?d $ãIÅg @  ò,0?d ` $aØÒ¹ @  ò-1?d   $3Ã=à @  ò.2?d à $±R*> @  ò/3?d $F‹i³ @  ò04?d ` $Ä~m @  ò15?d   $–‘4 @  ò26?d à $†ê @  ò37?d $ @  ò48?d `$ž‡À @  ò59?d  $@…h™ @  ò6:?d à$ÂG @  ò7;?d $˜l* @  ò8<?d `$ýô @  ò9=?d  $Hæú­ @  ò:>?d à$Êwís @  ò;??d $eÅ©Õ @  ò<@?d `$çT¾  @  ò=A?d  $µOQR @  ò>B?d à$7ÞFŒ @  ò?C?d $$# @  ò@D?d `$ý—3ý @  òAE?d  $¯ŒÜ¤ @  òBF?d à$-Ëz @  òCG?d $©‚ÝŽ @  òDH?d `$+ÊP @  òEI?d  $y%  @  òFJ?d à$û™2× @  òGK?d $¡áOº @  òHL?d `$#pXd @  òIM?d  $qk·= @  òJN?d à$óú ã @  òKO?d $–?‡5 @  òLP?d `$®ë @  òMQ?d  $Fµ² @  òNR?d à$Ä$hl @  òOS?d $3ý+á @  òPT?d `$±l$à¾áÊ @  óø?d x>$b/ö @  óù?d ¸>$õ}â  @  óú?d ø>$wìõ~ @  óû?d 8?$ã&×i @  óü?d x?$a·À· @  óý?duÐ@$7 ¸?$ýp” @  óþ?d ø?$gJ @  óÿ?d P@$6®à‡ @  ó?d @$[ây @  ó?d Ð@$#mãí @  ó?d A$ó%o @  ó?d PA$56Ö$ @  ó?d A$ÃÔÚ @  ó?d ÐA$—©h‰ @  ó ?d B$ íÈH @  ó!?d PB$Tî’N @  ó"?d B$t° @  ó# ?d ÐB$A-‘$ @  ó$ ?d C$‘eÌ @  ó% ?d PC$Wv¤í @  ó& ?d C$wƒ¦ @  ó' ?d ÐC$IN @  ó(?d D$Pð @  ó)?d PD$kSÈõ @  ó*?d D$K¦Ê  @  ó+?d ÐD$~ËŸ @  ó,?d E$®ØGw @  ó-?d PE$hËþV @  ó.?d E$H>ü¨ @  ó/?d ÐE$ÛRgK @  ó0?d F$FÇŠ @  ó1?d PF$Œ @  ó2?d F$8àŸr @  ó3?d ÐF$ Öžæ @  ó4?d G$Ýž @  ó5?d PG$«/ @  ó6?d G$;x©Ñ @  ó7?d ÐG$µ Ò @  ó8?d H$1J€Ï @  ó9?d PH$—®ù @  ó: ?d H$·[ƒ @  ó;!?d ÐH$‚m‚“ @  ó<"?d I$R%{ @  ó=#?d PI$”6·Z @  ó>$?d I$´Ãµ¤ @  ó?%?d ÐI$˜®e @  ó@&?d J$ꯤ @  óA'?d PJ$[éõ¢ @  óB(?d J${÷\ @  óC)?d ÐJ$N*öÈ @  óD*?d K$žbz  @  óE+?d PK$Xqà @  óF,?d K$x„Áÿ @  óG-?d ÐK$FIdü @  óH.?d L$_—ó @  óI/?d PL$dT¯ @  óJ0?d L$D¡­ç @  óK1?d ÐL$q—¬s @  óL2?d M$¡ß › @  óM3?d PM$gÌ™º @  óN4?d M$G9›D @  óO5?d ÐM$ÔU§ @  óP6?d N$I f @  óQ7?d PN$ú` @  óR8?d N$7çøž @  óS9?d ÐN$Ñù  @  óT:?d O$Ò™uâ @  óU;?d PO$ŠÌà @  óV<?d O$4Î= @  óW=?d ÐO$ ²k> @  óX>?d P$´l׌ @  óY??d PP$âØÃ« @  óZ@?d P$Â-ÁU @  ó[A?d ÐP$÷ÀÁ @  ó\B?d Q$'SL) @  ó]C?d PQ$á@õ @  ó^D?d Q$Áµ÷ö @  ó_E?d ÐQ$CßK¥ @  ó`F?d R$Þ›ëd @  óaG?d PR$€˜±b @  óbH?d R$ m³œ @  ócI?d ÐR$•[² @  ódJ?d S$E>à @  óeK?d PS$ƒ‡Á @  ófL?d S$£õ…? @  ógM?d ÐS$8 < @  óhN?d T$„vÓ3 @  óiO?d PT$¿%ëÙ @  ójP?d T$ŸÐé' @  ókQ?d ÐT$ªæè³ @  ólR?d U$z®d[ @  ómS?d PU$¼½Ýz @  ónT?d U$œHß„ @  óoU?d ÐU$$Dg @  ópV?d V$’`ä¦ @  óqW?d PV$Ìc¾  @  órX?d V$ì–¼^ @  ósY?d ÐV$Ù ½Ê @  ótZ?d W$ è1" @  óu[?d PW$Ïûˆ @  óv\?d W$ïŠý @  ów]?d ÐW$ÑÃ/þ @  óx^?d X$å<£ã @  óy_?d PX$CØ¢Õ @  óz`?d X$c- + @  ó{a?d ÐX$V¡¿ @  ó|b?d Y$†S-W @  ó}c?d PY$@@”v @  ó~d?d Y$`µ–ˆ @  óe?d ÐY$¯Žx @  ó€f?d Z$2ʼ¹ @  óg?d PZ$lÉæ¿ @  ó‚h?d Z$L<äA @  óƒi?d ÐZ$y åÕ @  ó„j?d [$©Bi= @  ó…k?d P[$oQÐ @  ó†l?d [$O¤Òâ @  ó‡m?d Ð[$qiwá @  óˆn?d \$h'„î @  ó‰o?d P\$St¼ @  óŠp?d \$s¾ú @  ó‹q?d Ð\$F·¿n @  óŒr?d ]$–ÿ3† @  ós?d P]$P슧 @  óŽt?d ]$pˆY @  óu?d Ð]$ãuº @  óv?d ^$~1³{ @  ó‘w?d P^$ 2é} @  ó’x?d ^$Çëƒ @  ó“y?d Ð^$5ñê @  ó”z?d _$å¹fÿ @  ó•{?d P_$#ªßÞ @  ó–|?d _$_Ý  @  óuÐ`$—}?d Ð_$=’x# @  ó˜~?d (`$ƒjÍ» @  ó™?d h`$È @  óš€?d ¨`$èíð @  ó›?d è`$ÝÛŽd @  óœ‚?d (a$ “Œ @  óƒ?d ha$Ë€»­ @  óž„?d ¨a$ëu¹S @  óŸ…?d èa$i @  ó †?d (b$ô[¥Á @  ó¡‡?d hb$ªXÿÇ @  ó¢ˆ?d ¨b$Š­ý9 @  ó£‰?d èb$¿›ü­ @  ó¤Š?d (c$oÓpE @  ó¥‹?d hc$©ÀÉd @  ó¦Œ?d ¨c$‰5Ëš @  ó§?d èc$·øn™ @  ó¨Ž?d (d$®¶– @  ó©?d hd$•å¥| @  óª?d ¨d$µ§‚ @  ó«‘?d èd$€&¦ @  ó¬’?d (e$Pn*þ @  ó­“?d he$–}“ß @  ó®”?d ¨e$¶ˆ‘! @  ó¯•?d èe$%ä  @  ó°–?d (f$¸ ª @  ó±—?d hf$æ£ð @  ó²˜?d ¨f$ÆVòû @  ó³™?d èf$ó`óo @  ó´š?d (g$#(‡ @  óµ›?d hg$å;Ʀ @  ó¶œ?d ¨g$ÅÎÄX @  ó·?d èg$ûa[ @  ó¸ž?d (h$ÏüíF @  ó¹Ÿ?d hh$iìp @  óº ?d ¨h$IíîŽ @  ó»¡?d èh$|Ûï @  ó¼¢?d (i$¬“cò @  ó½£?d hi$j€ÚÓ @  ó¾¤?d ¨i$JuØ- @  ó¿¥?d èi$fbì @  óÀ¦?d (j$û\Â- @  óÁ§?d hj$¥_˜+ @  ó¨?d ¨j$…ªšÕ @  óé?d èj$°œ›A @  óĪ?d (k$`Ô© @  óÅ«?d hk$¦Ç®ˆ @  óƬ?d ¨k$†2¬v @  óÇ­?d èk$¸ÿ u @  óÈ®?d (l$¡±úz @  óɯ?d hl$šâ @  óʰ?d ¨l$ºÀn @  ó˱?d èl$!Áú @  ó̲?d (m$_iM @  óͳ?d hm$™zô3 @  óδ?d ¨m$¹öÍ @  óϵ?d èm$*ãm. @  óж?d (n$·§Íï @  óÑ·?d hn$餗é @  óÒ¸?d ¨n$ÉQ• @  óÓ¹?d èn$üg”ƒ @  óÔº?d (o$,/k @  óÕ»?d ho$ê<¡J @  óÖ¼?d ¨o$ÊÉ£´ @  ó×½?d èo$ô· @  óؾ?d (p$JÚº @  óÙ¿?d hp$n®" @  óÚÀ?d ¨p$<›¬Ü @  óÛÁ?d èp$ ­­H @  óÜÂ?d (q$Ùå!  @  óÝÃ?d hq$ö˜ @  óÞÄ?d ¨q$?š @  óßÅ?d èq$½i&, @  óàÆ?d (r$ -†í @  óáÇ?d hr$~.Üë @  óâÈ?d€ ¨r$Øv¬ @  ôÉ?d èr$ ú? @  ôÊ?d (s$ܲ³ù @  ôË?d hs$ßèñ5 @  ôÌ?d ¨s$ÿóË @  ôÍ?d ès$b ² @  ôÎ?d (t$,ú½ @  ôÏ?d ht$ãÍ- @  ôÐ?d ¨t$Ã8ŸÓ @  ô Ñ?d èt$3Geª @  ô Ò?d (u$ãéB @  ô Ó?d hu$àU«Ž @  ô Ô?d ¨u$À ©p @  ô Õ?d èu$0ßS  @  ôÖ?d (v$­›óÈ @  ô×?d hv$‹ÈT @  ôØ?d ¨v$°~ʪ @  ôÙ?d èv$@0Ó @  ôÚ?d (w$I¼; @  ôÛ?d hw$“þ÷ @  ôÜ?d ¨w$³æü  @  ôÝ?d èw$C™p @  ôÞ?d (x$wfŠm @  ôß?d hx$0Ô! @  ôà?d ¨x$?ÅÖß @  ôá?d èx$Ϻ,¦ @  ôâ?d (y$ò N @  ôã?d hy$¨â‚ @  ôä?d ¨y$<]à| @  ôå?d èy$Ì" @  ôæ?d (z$QfºÄ @  ôç?d hz$}p¦è @  ô è?d ¨z$]…¤ @  ô!é?d èz$­ú^o @  ô"ê?d ({$}²Ò‡ @  ô#ë?d h{$~èK @  ô$ì?d ¨{$^’µ @  ô%í?d è{$®bhÌ @  ô&î?d (|$·,›Ã @  ô'ï?d h|$BÍüS @  ô(ð?d ¨|$b8þ­ @  ô)ñ?d è|$’GÔ @  ô*ò?d (}$Bˆ< @  ô+ó?d h}$AUÊð @  ô,ô?d ¨}$a È @  ô-õ?d è}$‘ß2w @  ô.ö?d (~$ ›’¶ @  ô/÷?d h~$1‹©* @  ô0ø?d ¨~$~«Ô @  ô1ù?d è~$áQ­ @  ô2ú?d ($1IÝE @  ô3û?d h$2Ÿ‰ @  ô4ü?d ¨$uЀ$'æw @  ô5ý?d è$â™g @  ô6þ?d @€$Œ'…z @  ô7ÿ?d €€$ÔäÚ™ @  ô8?d À€$VuÍG @  ô9?d $ôÓ¬ @  ô:?d @$vB»Ö @  ô;?d €$×|ì: @  ô<?d À$Uíûä @  ô=?d ‚$ºG¶‚ @  ô>?d @‚$8Ö¡\ @  ô??d €‚$£®Â @  ô@?d À‚$š2¹ @  ôA ?d ƒ$8”ØS @  ôB ?d @ƒ$ºÏ @  ôC ?d €ƒ$;˜a @  ôD ?d Àƒ$™ª¿ @  ôE ?d „$ò ‘ @  ôF?d @„$p›†É @  ôG?d €„$'ôy @  ôH?d À„$¥ã§ @  ôI?d …$)‚è @  ôJ?d @…$…¸•6 @  ôK?d €…$$†ÂÚ @  ôL?d À…$¦Õ @  ôM?d †$I½˜b @  ôN?d @†$Ë,¼ @  ôO?d €†$TX¡ @  ôP?d À†$ÖɶÞ @  ôQ?d ‡$toב @  ôR?d @‡$öþÀO @  ôS?d €‡$WÀ—£ @  ôT?d À‡$ÕQ€} @  ôU?d ˆ$“@áÇ @  ôV?d @ˆ$Ñö @  ôW?d €ˆ$Ûã½u @  ôX ?d Àˆ$Yrª« @  ôY!?d ‰$ûÔËä @  ôZ"?d @‰$yEÜ: @  ô[#?d €‰$Ø{‹Ö @  ô\$?d À‰$Zêœ @  ô]%?d Š$µ@Ñn @  ô^&?d @Š$7ÑÆ° @  ô_'?d €Š$¹£Ï¼ @  ô`(?d ÀŠ$;2Øb @  ôa)?d ‹$™”¹- @  ôb*?d @‹$®ó @  ôc+?d €‹$º;ù @  ôd,?d À‹$8ªîÁ @  ôe-?d Œ$S ði @  ôf.?d @Œ$Ñ›ç· @  ôg/?d €Œ$†• @  ôh0?d ÀŒ$‚Ù @  ôi1?d $¦)ã– @  ôj2?d @$$¸ôH @  ôk3?d €$…†£¤ @  ôl4?d À$´z @  ôm5?d Ž$è½ù @  ôn6?d @Ž$j,î @  ôo7?d €Ž$õXÀ~ @  ôp8?d ÀŽ$wÉ×  @  ôq9?d $Õo¶ï @  ôr:?d @$Wþ¡1 @  ôs;?d €$öÀöÝ @  ôt<?d À$tQá @  ôu=?d $¸a° @  ôv>?d @$:ð§È @  ôw??d €$’ùµ @  ôx@?d À$‚îk @  ôyA?d ‘$ ¥$ @  ôzB?d @‘$¢4˜ú @  ô{C?d €‘$ Ï @  ô|D?d À‘$›ØÈ @  ô}E?d ’$n1•® @  ô~F?d @’$ì ‚p @  ôG?d €’$/ƒ½ß @  ô€H?d À’$­ª @  ôI?d “$´ËN @  ô‚J?d @“$%Ü @  ôƒK?d €“$,‹| @  ô„L?d À“$®Šœ¢ @  ô…M?d ”$Å*‚  @  ô†N?d @”$G»•Ô @  ô‡O?d €”$>çd @  ôˆP?d À”$’¯ðº @  ô‰Q?d •$0 ‘õ @  ôŠR?d @•$²˜†+ @  ô‹S?d €•$¦ÑÇ @  ôŒT?d À•$‘7Æ @  ôU?d –$~‹ @  ôŽV?d @–$ü œ¡ @  ôW?d €–$cx² @  ôX?d À–$áé¥Ã @  ô‘Y?d —$COÄŒ @  ô’Z?d @—$ÁÞÓR @  ô“[?d €—$`à„¾ @  ô”\?d À—$âq“` @  ô•]?d ˜$¤`òÚ @  ô–^?d @˜$&ñå @  ô—_?d €˜$ìîh @  ô˜`?d À˜$nR¹¶ @  ô™a?d ™$ÌôØù @  ôšb?d @™$NeÏ' @  ô›c?d €™$ï[˜Ë @  ôœd?d À™$mÊ @  ôe?d š$‚`Âs @  ôžf?d @š$ñÕ­ @  ôŸg?d €š$ŽƒÜ¡ @  ô h?d Àš$ Ë @  ô¡i?d ›$®´ª0 @  ô¢j?d @›$,%½î @  ô£k?d €›$ê @  ô¤l?d À›$ŠýÜ @  ô¥m?d œ$d*ãt @  ô¦n?d @œ$æ»ôª @  ô§o?d €œ$±>† @  ô¨p?d Àœ$3¯‘Ä @  ô©q?d $‘ ð‹ @  ôªr?d @$˜çU @  ô«s?d €$²¦°¹ @  ô¬t?d À$07§g @  ô­u?d ž$ßê @  ô®v?d @ž$] ýß @  ô¯w?d €ž$ÂxÓc @  ô°x?d Àž$@éĽ @  ô±y?d Ÿ$âO¥ò @  ô²z?d @Ÿ$`Þ², @  ô³{?d €Ÿ$ÁàåÀ @  ô´|uР$?d ÀŸ$Cqò @  ôµ}?d  $@”Áß @  ô¶~?d X $ÂÖ @  ô·?d ˜ $å¡Üî @  ô¸€?d Ø $g0Ë0 @  ô¹?d ¡$Å–ª @  ôº‚?d X¡$G½¡ @  ô»ƒ?d ˜¡$æ9êM @  ô¼„?d Ø¡$d¨ý“ @  ô½…?d ¢$‹°õ @  ô¾†?d X¢$ “§+ @  ô¿‡?d ˜¢$)樵 @  ôÀˆ?d Ø¢$«w¿k @  ôÁ‰?d £$ ÑÞ$ @  ôŠ?d X£$‹@Éú @  ôË?d ˜£$*~ž @  ôÄŒ?d Ø£$¨ï‰È @  ôÅ?d ¤$ÃO—` @  ôÆŽ?d X¤$AÞ€¾ @  ôÇ?d ˜¤$[ò @  ôÈ?d ؤ$”ÊåÐ @  ôÉ‘?d ¥$6l„Ÿ @  ôÊ’?d X¥$´ý“A @  ôË“?d ˜¥$ÃÄ­ @  ôÌ”?d Ø¥$—RÓs @  ôÍ•?d ¦$xøž @  ôΖ?d X¦$úi‰Ë @  ôÏ—?d ˜¦$e§w @  ôИ?d ئ$猰© @  ôÑ™?d §$E*Ñæ @  ôÒš?d X§$Ç»Æ8 @  ôÓ›?d ˜§$f…‘Ô @  ôÔœ?d ا$ä†  @  ôÕ?d ¨$¢ç° @  ôÖž?d X¨$ ”ðn @  ôן?d ˜¨$ꦻ @  ôØ ?d ب$h7¬Ü @  ôÙ¡?d ©$ʑ͓ @  ôÚ¢?d X©$HÚM @  ôÛ£?d ˜©$é>¡ @  ôܤ?d Ø©$k¯š @  ôÝ¥?d ª$„× @  ôÞ¦?d Xª$”ÀÇ @  ôß§?d ˜ª$ˆæÉË @  ôà¨?d ت$ wÞ @  ôá©?d «$¨Ñ¿Z @  ôâª?d€ X«$^ƒ´" @  õ«?d ˜«$ü«ç @  õ¬?d Ø«$œm¼9 @  õ­?d ¬$2„Y| @  õ®?d X¬$°N¢ @  õ¯?d ˜¬$)"ch @  õ°?d ج$«³t¶ @  õ±?d ­$ǧJƒ @  õ²?d X­$E6]] @  õ ³?d ˜­$!Añ\ @  õ ´?d Ø­$£Ðæ‚ @  õ µ?d ®$‰3P  @  õ ¶?d X®$ ¢G× @  õ ·?d ˜®$÷Åñ @  õ¸?d Ø®$uT/ @  õ¹?d ¯$´áú @  õº?d X¯$6p$ @  õ»?d ˜¯$R¤% @  õ¼?d د$Ж³û @  õ½?d °$Ùï @  õ¾?d X°$[~Ý @  õ¿?d ˜°$¯®Ú @  õÀ?d ذ$-? @  õÁ?d ±$A+&1 @  õÂ?d X±$ú1ï @  õÃ?d ˜±$§Íî @  õÄ?d ر$%\Š0 @  õÅ?d ²$¿<» @  õÆ?d X²$.+e @  õÇ?d ˜²$qIdC @  õÈ?d ز$óØs @  õÉ?d ³$#kTø @  õ Ê?d X³$¡úC& @  õ!Ë?d ˜³$Åï' @  õ"Ì?d س$Gøù @  õ#Í?d ´$éõ¼ @  õ$Î?d X´$kd b @  õ%Ï?d ˜´$òS'¨ @  õ&Ð?d Ø´$pÂ0v @  õ'Ñ?d µ$ÖC @  õ(Ò?d Xµ$žG @  õ)Ó?d ˜µ$ú0µœ @  õ*Ô?d ص$x¡¢B @  õ+Õ?d ¶$RBÉ @  õ,Ö?d X¶$ÐÓ @  õ-×?d ˜¶$,´L1 @  õ.Ø?d ض$®%[ï @  õ/Ù?d ·$o[: @  õ0Ú?d X·$íLä @  õ1Û?d ˜·$‰vàå @  õ2Ü?d Ø·$ ç÷; @  õ3Ý?d ¸$ˆ¿ml @  õ4Þ?d X¸$ .z² @  õ5ß?d ˜¸$®n¤ @  õ6à?d ظ$Œ?yz @  õ7á?d ¹$à+GO @  õ8â?d X¹$bºP‘ @  õ9ã?d ˜¹$Íü @  õ:ä?d ع$„\ëN @  õ;å?d º$®¿]Å @  õ<æ?d Xº$,.J @  õ=ç?d ˜º$ÐI= @  õ>è?d غ$RØã @  õ?é?d »$,l3 @  õ@ê?d X»$®ý$Ê @  õAë?d ˜»$ÊŠˆË @  õBì?d Ø»$HŸ @  õCí?d ¼$æòzP @  õDî?d X¼$dcmŽ @  õEï?d ˜¼$ýT@D @  õFð?d ؼ$ÅWš @  õGñ?d ½$Ñi¯ @  õHò?d X½$‘@~q @  õIó?d ˜½$õ7Òp @  õJô?d ؽ$w¦Å® @  õKõ?d ¾$]Es% @  õLö?d X¾$ßÔdû @  õM÷?d ˜¾$#³+Ý @  õNø?d ؾ$¡"< @  õOù?d ¿$`—<Ö @  õPú?d X¿$â+ @  õQû?d ˜¿$†q‡  @uÐÀ$  õRü?d Ø¿$à× @  õSý?d 0À$×·×Ï @  õTþ?d pÀ$U&À @  õUÿ?d °À$quõ­ @  õV?d ðÀ$óäâs @  õW?d 0Á$ŸðÜF @  õX?d pÁ$a˘ @  õY?d °Á$yg™ @  õZ?d ðÁ$û‡pG @  õ[?d 0Â$ÑdÆÌ @  õ\?d pÂ$SõÑ @  õ]?d °Â$¯’ž4 @  õ^?d ðÂ$-‰ê @  õ_ ?d 0Ã$ý°® @  õ` ?d pÃ$!¹Q @  õa ?d °Ã$VP @  õb ?d ðÃ$™ÇŽ @  õc ?d 0Ä$7.çË @  õd?d pÄ$µ¿ð @  õe?d °Ä$,ˆÝß @  õf?d ðÄ$®Ê @  õg?d 0Å$ ô4 @  õh?d pÅ$@œãê @  õi?d °Å$$ëOë @  õj?d ðÅ$¦zX5 @  õk?d 0Æ$Œ™î¾ @  õl?d pÆ$ù` @  õm?d °Æ$òo¶F @  õn?d ðÆ$pþ¡˜ @  õo?d 0Ç$±K¡M @  õp?d pÇ$3Ú¶“ @  õq?d °Ç$W­’ @  õr?d ðÇ$Õ< L @  õs?d 0È$Vd— @  õt?d pÈ$Ôõ€Å @  õu?d °È$Ðu”Ó @  õv ?d ðÈ$Räƒ  @  õw!?d 0É$>ð½8 @  õx"?d pÉ$¼aªæ @  õy#?d °É$Øç @  õz$?d ðÉ$Z‡9 @  õ{%?d 0Ê$pd§² @  õ|&?d pÊ$òõ°l @  õ}'?d °Ê$’ÿJ @  õ~(?d ðÊ$Œè” @  õ)?d 0Ë$áùR @  õ€*?d pË$“pîŒ @  õ+?d °Ë$÷B @  õ‚,?d ðË$u–US @  õƒ-?d 0Ì$Û° @  õ„.?d pÌ$Yî§È @  õ…/?d °Ì$ÀÙŠ @  õ†0?d ðÌ$BHÜ @  õ‡1?d 0Í$.\£é @  õˆ2?d pÍ$¬Í´7 @  õ‰3?d °Í$Ⱥ6 @  õŠ4?d ðÍ$J+è @  õ‹5?d 0Î$`ȹc @  õŒ6?d pÎ$âY®½ @  õ7?d °Î$>á› @  õŽ8?d ðÎ$œ¯öE @  õ9?d 0Ï$]ö @  õ:?d pÏ$ß‹áN @  õ‘;?d °Ï$»üMO @  õ’<?d ðÏ$9mZ‘ @  õ“=?d 0Ð$0ði @  õ”>?d pÐ$²…ç· @  õ•??d °Ð$FUæ° @  õ–@?d ðÐ$ÄÄñn @  õ—A?d 0Ñ$¨ÐÏ[ @  õ˜B?d pÑ$*AØ… @  õ™C?d °Ñ$N6t„ @  õšD?d ðÑ$̧cZ @  õ›E?d 0Ò$æDÕÑ @  õœF?d pÒ$dÕ @  õG?d °Ò$˜²) @  õžH?d ðÒ$#š÷ @  õŸI?d 0Ó$ʽ’ @  õ J?d pÓ$HªL @  õ¡K?d °Ó$,vM @  õ¢L?d ðÓ$®ç“ @  õ£M?d 0Ô$ôÖ @  õ¤N?d pÔ$‚Ÿã @  õ¥O?d °Ô$¨Î @  õ¦P?d ðÔ$™9Ù @  õ§Q?d 0Õ$õ-ç) @  õ¨R?d pÕ$w¼ð÷ @  õ©S?d °Õ$Ë\ö @  õªT?d ðÕ$‘ZK( @  õ«U?d 0Ö$»¹ý£ @  õ¬V?d pÖ$9(ê} @  õ­W?d °Ö$ÅO¥[ @  õ®X?d ðÖ$GÞ²… @  õ¯Y?d 0×$†k²P @  õ°Z?d p×$ú¥Ž @  õ±[?d °×$`  @  õ²\?d ð×$âQ @  õ³]?d 0Ø$aD„ @  õ´^?d pØ$ãÕ“Ø @  õµ_?d °Ø$çU‡Î @  õ¶`?d ðØ$eÄ @  õ·a?d 0Ù$ Ю% @  õ¸b?d pÙ$‹A¹û @  õ¹c?d °Ù$ï6ú @  õºd?d ðÙ$m§$ @  õ»e?d 0Ú$GD´¯ @  õ¼f?d pÚ$ÅÕ£q @  õ½g?d °Ú$9²ìW @  õ¾h?d ðÚ$»#û‰ @  õ¿i?d 0Û$Å—Ú~ @  õÀj?d pÛ$GÍ  @  õÁk?d °Û$#qa¡ @  õÂl?d ðÛ$¡àv @  õÃm?d 0Ü$ “: @  õÄn?d pÜ$˜„ä @  õÅo?d °Ü$¯©. @  õÆp?d ðÜ$–>¾ð @  õÇq?d 0Ý$ú*€Å @  õÈr?d pÝ$x»— @  õÉs?d °Ý$Ì; @  õÊt?d ðÝ$ž],Ä @  õËu?d 0Þ$´¾šO @  õÌv?d pÞ$6/‘ @  õÍw?d °Þ$ÊH· @  õÎx?d ðÞ$HÙÕi @  õÏy?d 0ß$‰lÕ¼ @  õÐz?d pß$ ýÂb @  õÑ{?d uÐà$/°ß$oŠnc @  õÒ|?d ðß$íy½ @  õÓ}?d Hà$C1 @  õÔ~?d ˆà$cí3ÿ @  õÕ?d Èà$(ŸsJ @  õÖ€?d á$ø×ÿ¢ @  õ×?d Há$ÆZ¡ @  õØ‚?d ˆá$æïX_ @  õÙƒ?d Èá$ üá~ @  õÚ„?d â$½¸A¿ @  õÛ…?d Hâ$ˆŽ@+ @  õ܆?d ˆâ$¨{BÕ @  õ݇?d Èâ$öxÓ @  õÞˆ?d ã$&0”; @  õ߉?d Hã$¤Z(h @  õàŠ?d ˆã$„¯*– @  õá‹?d Èã$B¼“· @  õâŒ?d€ ä$šµ—¸ @  ö?d Hä$NÂÞ @  öŽ?d ˆä$n7Üû @  ö?d Èä$-ü @  ö?d å$@e“ @  ö‘?d Hå$°im @  ö’?d ˆå$ïk“ @  ö“?d Èå$˜NÈ @  ö”?d æ$ -  @  ö •?d Hæ$õu×p @  ö –?d ˆæ$Õ€ÕŽ @  ö —?d Èæ$NÊte @  ö ˜?d ç$ž‚ø @  ö ™?d Hç$nýô @  öš?d ˆç$N  @  ö›?d Èç$ëر @  öœ?d è$ß÷T¬ @  ö?d Hè$/ˆ®Õ @  öž?d ˆè$}¬+ @  öŸ?d Èè$lÐVð @  ö ?d é$¼˜Ú @  ö¡?d Hé$Lç a @  ö¢?d ˆé$l"Ÿ @  ö£?d Èé$d³ÄÄ @  ö¤?d ê$ù÷d @  ö¥?d Hê$ ˆž| @  ö¦?d ˆê$)}œ‚ @  ö§?d Èê$²7=i @  ö¨?d ë$b± @  ö©?d Hë$’Kø @  öª?d ˆë$²õI @  ö«?d Èë$ó¶  @  ö ¬?d ì$½E @  ö!­?d Hì$ï¿{ @  ö"®?d ˆì$Ï7½… @  ö#¯?d Èì$1-~‚ @  ö$°?d í$áeòj @  ö%±?d Hí$ @  ö&²?d ˆí$1ï í @  ö'³?d Èí$9Nì¶ @  ö(´?d î$¤ Lw @  ö)µ?d Hî$Tu¶ @  ö*¶?d ˆî$t€´ð @  ö+·?d Èî$ïÊ @  ö,¸?d ï$?‚™ó @  ö-¹?d Hï$ÏýcŠ @  ö.º?d ˆï$ïat @  ö/»?d Èï$J¹Ï @  ö0¼?d ð$ôÖ} @  ö1½?d Hð$©ÿ @  ö2¾?d ˆð$$\ýú @  ö3¿?d Èð$·¡0 @  ö4À?d ñ$géžØ @  ö5Á?d Hñ$—–d¡ @  ö6Â?d ˆñ$·cf_ @  ö7Ã?d Èñ$¿Â€ @  ö8Ä?d ò$"† Å @  ö9Å?d Hò$ÒùÚ¼ @  ö:Æ?d ˆò$ò ØB @  ö;Ç?d Èò$iFy© @  ö<È?d ó$¹õA @  ö=É?d Hó$Iq8 @  ö>Ê?d ˆó$i„ Æ @  ö?Ë?d Èó$s…ô_ @  ö@Ì?d ô$jËP @  öAÍ?d Hô$š´ý) @  öBÎ?d ˆô$ºAÿ× @  öCÏ?d Èô$D[<Ð @  öDÐ?d õ$”°8 @  öEÑ?d Hõ$dlJA @  öFÒ?d ˆõ$D™H¿ @  öGÓ?d Èõ$L8®ä @  öHÔ?d ö$Ñ|% @  öIÕ?d Hö$!ô\ @  öJÖ?d ˆö$öö¢ @  öK×?d Èö$š¼WI @  öLØ?d ÷$JôÛ¡ @  öMÙ?d H÷$º‹!Ø @  öNÚ?d ˆ÷$š~#& @  öOÛ?d È÷$?~û @  öPÜ?d ø$ w€ @  öQÝ?d Hø$ûþù @  öRÞ?d ˆø$Û  @  öSß?d Èø$¸¦uÜ @  öTà?d ù$hîù4 @  öUá?d Hù$˜‘M @  öVâ?d ˆù$¸d³ @  öWã?d Èù$°Åçè @  öXä?d ú$-G) @  öYå?d Hú$Ýþ½P @  öZæ?d ˆú$ý ¿® @  ö[ç?d Èú$fAE @  ö\è?d û$¶ ’­ @  ö]é?d Hû$FvhÔ @  ö^ê?d ˆû$fƒj* @  ö_ë?d Èû$Ò…•! @  ö`ì?d ü$ËËf. @  öaí?d Hü$;´œW @  öbî?d ˆü$Až© @  öcï?d Èü$å[]® @  ödð?d ý$5ÑF @  öeñ?d Hý$Ål+? @  öfò?d ˆý$å™)Á @  ögó?d Èý$í8Ïš @  öhô?d þ$p|o[ @  öiõ?d Hþ$€•" @  öjö?d ˆþ$ ö—Ü @  ök÷?d Èþ$;¼67 @  ölø?d ÿ$ëôºß @  ömù?d Hÿ$‹@¦ @  önú?d ˆÿ$;~BX @  öouÐ%û?d Èÿ$ž~šã @  öpü?d %Ñʲ @  öqý?d `%!µHk @  örþ?d  %@J• @  ösÿ?d à%ð¤Á @  öt?d % T() @  öu?d `%Ð+ÒP @  öv?d  %ðÞЮ @  öw?d à%ø6õ @  öx?d %e;–4 @  öy?d `%•DlM @  öz?d  %µ±n³ @  ö{?d à%.ûÏX @  ö|?d %þ³C° @  ö} ?d `%̹É @  ö~ ?d  %.9»7 @  ö ?d à%×nrŸ @  ö€ ?d %Î  @  ö ?d `%>_{é @  ö‚?d  %ªy @  öƒ?d à%à°º @  ö„?d %0ø6ø @  ö…?d `%À‡Ì @  ö†?d  %àrÎ @  ö‡?d à%èÓ($ @  öˆ?d %u—ˆå @  ö‰?d `%…èrœ @  öŠ?d  %¥pb @  ö‹?d à%>Wщ @  öŒ?d %î]a @  ö?d `%`§ @  öŽ?d  %>•¥æ @  ö?d à%›•}] @  ö?d %¯jñ@ @  ö‘?d `%_ 9 @  ö’?d  %à Ç @  ö“?d à%Mó @  ö” ?d %Ìô @  ö•!?d ` %?d  %TÁX @  ö³??d à%Ç<·Ü @  ö´@?d %t;4 @  öµA?d `%ç ÁM @  ö¶B?d  %Çþó @  ö·C?d à%Ï_%è @  ö¸D?d %R…) @  ö¹E?d `%¢dP @  öºF?d  %‚‘}® @  ö»G?d à%ÛÜE @  ö¼H?d %É“P­ @  ö½I?d `%9ìªÔ @  ö¾J?d  %¨* @  ö¿K?d à%Q³ @  öÀL?d %V¢¼ @  öÁM?d `%ê)XÅ @  öÂN?d  %ÊÜZ; @  öÃO?d à%4Æ™< @  öÄP?d %äŽÔ @  öÅQ?d `%ñï­ @  öÆR?d  %4íS @  öÇS?d à%<¥  @  öÈT?d %¡á«É @  öÉU?d `%QžQ° @  öÊV?d  %qkSN @  öËW?d à%ê!ò¥ @  öÌX?d %:i~M @  öÍY?d `%Ê„4 @  öÎZ?d  %êã†Ê @  öÏ[?d à%Oã^q @  öÐ\?d %{Òl @  öÑ]?d `%‹c( @  öÒ^?d  %«–*ë @  öÓ_?d à%È;Ð0 @  öÔ`?d %s\Ø @  öÕa?d `%è ¦¡ @  öÖb?d  %Èù¤_ @  ö×c?d à%ÀXB @  öØd?d %]âÅ @  öÙe?d `%­c¼ @  öÚf?d  %–B @  öÛg?d à%Ü»© @  öÜh?d %Æ”7A @  öÝi?d `%6ëÍ8 @  öÞj?d  %ÏÆ @  ößk?d à%¢0Í @  öàl?d %»Và@  öám?d `%K)9» @  öân?d€  %'ã @  ÷o?d à%D¬Í @  ÷p?d %Ð % @  ÷q?d `%å:!± @  ÷r?d  %ÅÏ#O @  ÷s?d à%Üšn @  ÷t?d %ž˜:¯ @  ÷u?d `% UŸ¬ @  ÷v?d  %€ R @  ÷ w?d à%Þ£ÇT @  ÷ x?d %ëK¼ @  ÷ y?d `%;ÝJ( @  ÷ z?d  %(HÖuÐ % @  ÷ {?d à%Ý;ñ÷ @  ÷|?d 8 %¬0/‘ @  ÷}?d x %?\´r @  ÷~?d ¸ %©¶Œ @  ÷?d ø %TÛö9 @  ÷€?d 8!%„“zÑ @  ÷?d x!%±¥{E @  ÷‚?d ¸!%ìÐ Ç @  ÷€ƒ?d ø!%*óæ @  ÷€„?d 8"%·‡' @  ÷€…?d x"%‰J¶$ @  ÷€†?d ¸"%©¿´Ú @  ÷€‡?d ø"%÷¼îÜ @  ÷€ˆ?d 8#%'ôb4 @  ÷€‰?d x#%Âc  @  ÷€Š?d ¸#%27a^ @  ÷€‹?d ø#%ô$Ø @  ÷€Œ?d 8$%íj+p @  ÷€?d x$%o—# @  ÷ €Ž?d ¸$%Oõ•Ý @  ÷!€?d ø$%t¦­7 @  ÷"€?d 8%%¤î!ß @  ÷#€‘?d x%%‘Ø K @  ÷$€’?d ¸%%±-"µ @  ÷%€“?d ø%%w>›” @  ÷&€”?d 8&%êz;U @  ÷'€•?d x&%Ô·žV @  ÷(€–?d ¸&%ôBœ¨ @  ÷)€—?d ø&%ªAÆ® @  ÷*€˜?d 8'%z JF @  ÷+€™?d x'%O?KÒ @  ÷,€š?d ¸'%oÊI, @  ÷-€›?d ø'%©Ùð  @  ÷.€œ?d 8(%&| @  ÷/€?d x(%Jçó @  ÷0€ž?d ¸(%.¿å  @  ÷1€Ÿ?d ø(%ˆ[ä; @  ÷2€ ?d 8)%XhÓ @  ÷3€¡?d x)%m%iG @  ÷4€¢?d ¸)%MÐk¹ @  ÷5€£?d ø)%‹ÃÒ˜ @  ÷6€¤?d 8*%‡rY @  ÷7€¥?d x*%(J×Z @  ÷8€¦?d ¸*%¿Õ¤ @  ÷9€§?d ø*%V¼¢ @  ÷:€¨?d 8+%†ôJ @  ÷;€©?d x+%³ÂÞ @  ÷<€ª?d ¸+%“7  @  ÷=€«?d ø+%U$¹ @  ÷>€¬?d 8,%LjJ @  ÷?€­?d x,%`ðÏ @  ÷@€®?d ¸,%@òò1 @  ÷A€¯?d ø,%{¡ÊÛ @  ÷B€°?d 8-%«éF3 @  ÷C€±?d x-%žßG§ @  ÷D€²?d ¸-%¾*EY @  ÷E€³?d ø-%x9üx @  ÷F€´?d 8.%å}\¹ @  ÷G€µ?d x.%Û°ùº @  ÷H€¶?d ¸.%ûEûD @  ÷I€·?d ø.%¥F¡B @  ÷J€¸?d 8/%u-ª @  ÷K€¹?d x/%@8,> @  ÷L€º?d ¸/%`Í.À @  ÷M€»?d ø/%¦Þ—á @  ÷N€¼?d 80%+S @  ÷O€½?d x0%‹l°° @  ÷P€¾?d ¸0%«™²N @  ÷Q€¿?d ø0%ý-¦i @  ÷R€À?d 81%-e* @  ÷S€Á?d x1%S+ @  ÷T€Â?d ¸1%8¦)ë @  ÷U€Ã?d ø1%þµÊ @  ÷V€Ä?d 82%cñ0  @  ÷W€Å?d x2%]<• @  ÷X€Æ?d ¸2%}É—ö @  ÷Y€Ç?d ø2%#ÊÍð @  ÷Z€È?d 83%ó‚A @  ÷[€É?d x3%Æ´@Œ @  ÷\€Ê?d ¸3%æABr @  ÷]€Ë?d ø3% RûS @  ÷^€Ì?d 84%9\ @  ÷_€Í?d x4%»v´ @  ÷`€Î?d ¸4%›ƒ¶ñ @  ÷a€Ï?d ø4% ÐŽ @  ÷b€Ð?d 85%p˜ó @  ÷c€Ñ?d x5%E®g @  ÷d€Ò?d ¸5%e[™ @  ÷e€Ó?d ø5%£H¸¸ @  ÷f€Ô?d 86%> y @  ÷g€Õ?d x6%Á½z @  ÷h€Ö?d ¸6% 4¿„ @  ÷i€×?d ø6%~7å‚ @  ÷j€Ø?d 87%®ij @  ÷k€Ù?d x7%›Ihþ @  ÷l€Ú?d ¸7%»¼j @  ÷m€Û?d ø7%}¯Ó! @  ÷n€Ü?d 88%IP_< @  ÷o€Ý?d x8%Ú<Äß @  ÷p€Þ?d ¸8%úÉÆ! @  ÷q€ß?d ø8%\-Ç @  ÷r€à?d 89%ŒeKÿ @  ÷s€á?d x9%¹SJk @  ÷t€â?d ¸9%™¦H• @  ÷u€ã?d ø9%_µñ´ @  ÷v€ä?d 8:%ÂñQu @  ÷w€å?d x:%ü<ôv @  ÷x€æ?d ¸:%ÜÉöˆ @  ÷y€ç?d ø:%‚ʬŽ @  ÷z€è?d 8;%R‚ f @  ÷{€é?d x;%g´!ò @  ÷|€ê?d ¸;%GA#  @  ÷}€ë?d ø;%Rš- @  ÷~€ì?d 8<%˜i" @  ÷€í?d x<%W'ãÒ @  ÷€€î?d ¸<%wÒá, @  ÷€ï?d ø<%LÙÆ @  ÷‚€ð?d 8=%œÉU. @  ÷ƒ€ñ?d x=%©ÿTº @  ÷„€ò?d ¸=%‰ VD @  ÷…€ó?d ø=%Oïe @  ÷†€ô?d 8>%Ò]O¤ @  ÷‡€õ?d x>%ìê§ @  ÷ˆ€ö?d ¸>%ÌeèY @  ÷‰€÷?d ø>%’f²_ @  ÷Š€ø?d 8?%B.>· @  ÷‹€ù?d x?%w?# @  ÷Œ€ú?duÐ@%7 ¸?%Wí=Ý @  ÷€û?d ø?%ì~÷€ @  ÷Žü?d P@%/ÒM¼ @  ÷ý?d @%Úà @  ÷þ?d Ð@%œKÔ¡ @  ÷‘ÿ?d A%´kÁ @  ÷’?d PA%%| @  ÷“?d A% wh« @  ÷”?d ÐA%ˆæu @  ÷•?d B%Q qK @  ÷–?d PB%Ó±f• @  ÷—?d B%OÖ¶ @  ÷˜?d ÐB%͉Áh @  ÷™?d C%ÁSX @  ÷š?d PC%C† @  ÷› ?d C%Ô2 @  ÷œ ?d ÐC%Vì @  ÷ ?d D% ÍI @  ÷ž ?d PD%‰\^ @  ÷Ÿ ?d D%©R÷± @  ÷ ?d ÐD%+Ãào @  ÷¡?d E%BIC³ @  ÷¢?d PE%ÀØTm @  ÷£?d E%WŠ@Ù @  ÷¤?d ÐE%ÕW @  ÷¥?d F% ÝY9 @  ÷¦?d PF%ŽLNç @  ÷§?d F%åþÄ @  ÷¨?d ÐF%té @  ÷©?d G%œ®(* @  ÷ª?d PG%??ô @  ÷«?d G%‰m+@ @  ÷¬?d ÐG% ü<ž @  ÷­?d H%{| @  ÷®?d PH%ù ¢ @  ÷¯?d H%ȇa @  ÷°?d ÐH%J‰¿ @  ÷±?d I%¾´ ¿ @  ÷² ?d PI%<%a @  ÷³!?d I%«w Õ @  ÷´"?d ÐI%)æ  @  ÷µ#?d J%ð 5 @  ÷¶$?d PJ%r±ë @  ÷·%?d J%î·È @  ÷¸&?d ÐJ%l‰  @  ÷¹'?d K%`Sa& @  ÷º(?d PK%âÂvø @  ÷»)?d K%ubL @  ÷¼*?d ÐK%÷u’ @  ÷½+?d L%ªÍ(b @  ÷¾,?d PL%(\?¼ @  ÷¿-?d L%¦U] @  ÷À.?d ÐL%$ćƒ @  ÷Á/?d M%MN$_ @  ÷Â0?d PM%Ïß3 @  ÷Ã1?d M%X'5 @  ÷Ä2?d ÐM%Ú0ë @  ÷Å3?d N%Ú>Õ @  ÷Æ4?d PN%K)  @  ÷Ç5?d N%â™( @  ÷È6?d ÐN%ŸsŽö @  ÷É7?d O%“©OÆ @  ÷Ê8?d PO%8X @  ÷Ë9?d O%†jL¬ @  ÷Ì:?d ÐO%û[r @  ÷Í;?d P%þ§I? @  ÷Î<?d PP%|6^á @  ÷Ï=?d P%M>Ð" @  ÷Ð>?d ÐP%ϯÇü @  ÷Ñ??d Q%ËÂHí @  ÷Ò@?d PQ%IS_3 @  ÷ÓA?d Q%ÞK‡ @  ÷ÔB?d ÐQ%\\Y @  ÷ÕC?d R%…VRg @  ÷ÖD?d PR%ÇE¹ @  ÷×E?d R%›nõš @  ÷ØF?d ÐR%ÿâD @  ÷ÙG?d S%%#t @  ÷ÚH?d PS%—´4ª @  ÷ÛI?d S%æ  @  ÷ÜJ?d ÐS%‚w7À @  ÷ÝK?d T%ß»j0 @  ÷ÞL?d PT%]*}î @  ÷ßM?d T%}$Ô @  ÷àN?d ÐT%ÿµÃC @  ÷áO?d U%–?`Ÿ @  ÷âP?d€ PU%<4c @  øQ?d U%J'?Ž @  øR?d ÐU%ȶ(P @  øS?d V%Ô9݃ @  øT?d PV%V¨Ê] @  øU?d V%³% @  øV?d ÐV%†"2Ú @  øW?d W%DJ¬ @  øX?d PW%ÆÛ»N @  ø Y?d W%”ÀT @  ø Z?d ÐW%QCÉ @  ø [?d X%£ešÆ @  ø \?d PX%!ô @  ø ]?d X%sïbA @  ø^?d ÐX%ñ~uŸ @  ø_?d Y%fPŽ @  ø`?d PY%äÁ™Û @  øa?d Y%¶Úv‚ @  øb?d ÐY%4Ka\ @  øc?d Z%(Ä” @  ød?d PZ%ªUƒQ @  øe?d Z%øNl @  øf?d ÐZ%zß{Ö @  øg?d [%¸·åœ @  øh?d P[%:&òB @  øi?d [%h= @  øj?d Ð[%ê¬ Å @  øk?d \%r)¬Ø @  øl?d P\%𸻠@  øm?d \%¢£T_ @  øn?d Ð\% 2C @  øo?d ]%;­¦w @  ø p?d P]%¹<±© @  ø!q?d ]%ë'^ð @  ø"r?d Ð]%i¶I. @  ø#s?d ^%u9¼ý @  ø$t?d P^%÷¨«# @  ø%u?d ^%¥³Dz @  ø&v?d Ð^%'"S¤ @  ø'w?d _%åJÍî @  ø(x?d P_%gÛÚ0 @  ø)y?d _%5À5i @  øuÐ`%*z?d Ð_%·Q"· @  ø+{?d (`%ˆbÂ= @  ø,|?d h`% óÕã @  ø-}?d ¨`%Xè:º @  ø.~?d è`%Úy-d @  ø/?d (a% Á—} @  ø0€?d ha%"P€£ @  ø1?d ¨a%pKoú @  ø2‚?d èa%òÚx$ @  ø3ƒ?d (b%îU÷ @  ø4„?d hb%lÄš) @  ø5…?d ¨b%>ßup @  ø6†?d èb%¼Nb® @  ø7‡?d (c%~&üä @  ø8ˆ?d hc%ü·ë: @  ø9‰?d ¨c%®¬c @  ø:Š?d èc%,=½ @  ø;‹?d (d%´¸µ  @  ø<Œ?d hd%6)¢~ @  ø=?d ¨d%d2M' @  ø>Ž?d èd%æ£Zù @  ø??d (e%S;¹ @  ø@?d he%Ѫ®C @  øA‘?d ¨e%ƒ±A @  øB’?d èe% VÄ @  øC“?d (f%¯£ @  øD”?d hf%Ÿ>´É @  øE•?d ¨f%Í%[ @  øF–?d èf%O´LN @  øG—?d (g%ÜÒ @  øH˜?d hg%MÅÚ @  øI™?d ¨g%]V*ƒ @  øJš?d èg%ßÇ=] @  øK›?d (h%jóäR @  øLœ?d hh%èbóŒ @  øM?d ¨h%ºyÕ @  øNž?d èh%8è  @  øOŸ?d (i%¯Æð‘ @  øP ?d hi%-WçO @  øQ¡?d ¨i%L @  øR¢?d èi%ýÝÈ @  øS£?d (j%áRê @  øT¤?d hj%cÃýÅ @  øU¥?d ¨j%1Øœ @  øV¦?d èj%³IB @  øW§?d (k%q!› @  øX¨?d hk%ó°ŒÖ @  øY©?d ¨k%¡«c @  øZª?d èk%#:tQ @  ø[«?d (l%»¿ÒL @  ø\¬?d hl%9.Å’ @  ø]­?d ¨l%k5*Ë @  ø^®?d èl%é¤= @  ø_¯?d (m%ò;Øã @  ø`°?d hm%pªÏ= @  øa±?d ¨m%"± d @  øb²?d èm%  7º @  øc³?d (n%¼¯Âi @  ød´?d hn%>>Õ· @  øeµ?d ¨n%l%:î @  øf¶?d èn%î´-0 @  øg·?d (o%,ܳz @  øh¸?d ho%®M¤¤ @  øi¹?d ¨o%üVKý @  øjº?d èo%~Ç\# @  øk»?d (p%AÒµƒ @  øl¼?d hp%ÃC¢] @  øm½?d ¨p%‘XM @  øn¾?d èp%ÉZÚ @  øo¿?d (q%t·´Q @  øpÀ?d hq%ö&£ @  øqÁ?d ¨q%¤=LÖ @  ørÂ?d èq%&¬[ @  øsÃ?d (r%:#®Û @  øtÄ?d hr%¸²¹ @  øuÅ?d ¨r%ê©V\ @  øvÆ?d èr%h8A‚ @  øwÇ?d (s%ªPßÈ @  øxÈ?d hs%(ÁÈ @  øyÉ?d ¨s%zÚ'O @  øzÊ?d ès%øK0‘ @  ø{Ë?d (t%`ΖŒ @  ø|Ì?d ht%â_R @  ø}Í?d ¨t%°Dn  @  ø~Î?d èt%2ÕyÕ @  øÏ?d (u%dª€ @  ø€Ð?d hu%抽^ @  øÑ?d ¨u%´‘R @  ø‚Ò?d èu%6EÙ @  øƒÓ?d (v%*°  @  ø„Ô?d hv%¨§Ô @  ø…Õ?d ¨v%úH @  ø†Ö?d èv%x”_S @  ø‡×?d (w%ºüÁ @  øˆØ?d hw%8mÖÇ @  ø‰Ù?d ¨w%jv9ž @  øŠÚ?d èw%èç.@ @  ø‹Û?d (x%]Ó÷O @  øŒÜ?d hx%ßBà‘ @  øÝ?d ¨x%YÈ @  øŽÞ?d èx%È @  øß?d (y%˜æãŒ @  øà?d hy%wôR @  ø‘á?d ¨y%Hl  @  ø’â?d èy%Êý Õ @  ø“ã?d (z%Örù @  ø”ä?d hz%TãîØ @  ø•å?d ¨z%ø @  ø–æ?d èz%„i_ @  ø—ç?d ({%Fˆ @  ø˜è?d h{%ÄŸË @  ø™é?d ¨{%–‹p’ @  øšê?d è{%gL @  ø›ë?d (|%ŒŸÁQ @  øœì?d h|%Ö @  øí?d ¨|%\9Ö @  øžî?d è|%Þ„. @  øŸï?d (}%ÅËþ @  ø ð?d h}%GŠÜ  @  ø¡ñ?d ¨}%‘3y @  ø¢ò?d è}%—$§ @  ø£ó?d (~%‹Ñt @  ø¤ô?d h~% ƪ @  ø¥õ?d ¨~%[)ó @  ø¦ö?d è~%Ù”>- @  ø§÷?d (%ü g @  ø¨ø?d h%™m·¹ @  ø©ù?d ¨%uЀ%'ËvXà @  øªú?d è%IçO> @  ø«û?d @€%¦’øX @  ø¬ü?d €€%†gú¦ @  ø­ý?d À€%vß @  ø®þ?d %¦PŒ7 @  ø¯ÿ?d @%ñVø @  ø°?d €%Ñ£úê @  ø±?d À%!Ü“ @  ø²?d ‚%¼˜ R @  ø³?d @‚%¿Ââž @  ø´?d €‚%Ÿ7à` @  øµ?d À‚%oH @  ø¶?d ƒ%¿–ñ @  ø·?d @ƒ%/±“ @  ø¸?d €ƒ%D‘s @  ø¹ ?d Àƒ%ÿ;k  @  øº ?d „%æu˜ @  ø» ?d @„%å/ÚÉ @  ø¼ ?d €„%ÅÚØ7 @  ø½ ?d À„%5¥"N @  ø¾?d …%åí®¦ @  ø¿?d @…%¬Öô @  øÀ?d €…%"YÔ  @  øÁ?d À…%Ò&.s @  øÂ?d †%Ob޲ @  øÃ?d @†%L8Ì~ @  øÄ?d €†%lÍ΀ @  øÅ?d À†%œ²4ù @  øÆ?d ‡%Lú¸ @  øÇ?d @‡%ÜK½m @  øÈ?d €‡%ü¾¿“ @  øÉ?d À‡% ÁEê @  øÊ?d ˆ%8>É÷ @  øË?d @ˆ%;d‹; @  øÌ?d €ˆ%‘‰Å @  øÍ?d Àˆ%ëîs¼ @  øÎ?d ‰%;¦ÿT @  øÏ?d @‰%þQŸø @  øÐ ?d €‰%Þ¤ @  øÑ!?d À‰%.Ûg @  øÒ"?d Š%³ŸÇ¾ @  øÓ#?d @Š%°Å…r @  øÔ$?d €Š%0‡Œ @  øÕ%?d ÀŠ%`O}õ @  øÖ&?d ‹%°ñ @  ø×'?d @‹% ¶ôa @  øØ(?d €‹%CöŸ @  øÙ)?d À‹%ð< æ @  øÚ*?d Œ%érÿé @  øÛ+?d @Œ%ê(½% @  øÜ,?d €Œ%ÊÝ¿Û @  øÝ-?d ÀŒ%:¢E¢ @  øÞ.?d %êêÉJ @  øß/?d @%£¬·Š @  øà0?d €%ƒYµt @  øá1?d À%s&O  @  øâ2?d€ Ž%š¡ój @  ù3?d @Ž%xºù @  ù4?d €Ž%XOûq @  ù5?d ÀŽ%myúå @  ù6?d %½1v  @  ù7?d @%ã2,  @  ù8?d €%ÃÇ.õ @  ù9?d À%ý ‹ö @  ù:?d %CÔ7D @  ù ;?d @%…ÇŽe @  ù <?d €%¥2Œ› @  ù =?d À% @  ù >?d ‘%@Lç @  ù ??d @‘%øÀ @  ù@?d €‘%6 > @  ùA?d À‘%¥aŒÝ @  ùB?d ’%8%, @  ùC?d @’%þ6•= @  ùD?d €’%Þ×à @  ùE?d À’%ëõ–W @  ùF?d “%;½¿ @  ùG?d @“%e¾@¹ @  ùH?d €“%EKBG @  ùI?d À“%{†çD @  ùJ?d ”%bÈK @  ùK?d @”%¤Û­j @  ùL?d €”%„.¯” @  ùM?d À”%±® @  ùN?d •%aP"è @  ùO?d @•%Z @  ùP?d €•%zöü @  ùQ?d À•%øœ¤¯ @  ù R?d –%eØn @  ù!S?d @–%£Ë½O @  ù"T?d €–%ƒ>¿± @  ù#U?d À–%¶¾% @  ù$V?d —%f@2Í @  ù%W?d @—%8ChË @  ù&X?d €—%¶j5 @  ù'Y?d À—%&{Ï6 @  ù(Z?d ˜%„C+ @  ù)[?d @˜%Ô—ú  @  ù*\?d €˜%ôbøô @  ù+]?d À˜%ÁTù` @  ù,^?d ™%uˆ @  ù-_?d @™%·øt¾ @  ù.`?d €™%— v@ @  ù/a?d À™%aí£ @  ù0b?d š%™%Mb @  ù1c?d @š%_6ôC @  ù2d?d €š%Ãö½ @  ù3e?d Àš%Jõ÷) @  ù4f?d ›%š½{Á @  ù5g?d @›%ľ!Ç @  ù6h?d €›%äK#9 @  ù7i?d À›%Ú††: @  ù8j?d œ%ÃÈu5 @  ù9k?d @œ%ÛÌ @  ù:l?d €œ%%.Îê @  ù;m?d Àœ%Ï~ @  ù<n?d %ÀPC– @  ù=o?d @%û{| @  ù>p?d €%Ûöy‚ @  ù?q?d À%÷›ÃC @  ù@r?d ž%jßc‚ @  ùAs?d @ž%¬ÌÚ£ @  ùBt?d €ž%Œ9Ø] @  ùCu?d Àž%¹ÙÉ @  ùDv?d Ÿ%iGU! @  ùEw?d @Ÿ%7D' @  ùFx?d €Ÿ%± Ù @  ùGyuР%?d ÀŸ%)|¨Ú @  ùHz?d  %Xwv¼ @  ùI{?d X %ždÏ @  ùJ|?d ˜ %¾‘Íc @  ùK}?d Ø %‹§Ì÷ @  ùL~?d ¡%[ï@ @  ùM?d X¡%ª @  ùN€?d ˜¡%0hT @  ùO?d Ø¡%£™· @  ùP‚?d ¢%>@9v @  ùQƒ?d X¢%øS€W @  ùR„?d ˜¢%ئ‚© @  ùS…?d Ø¢%íƒ= @  ùT†?d £%=ØÕ @  ùU‡?d X£%cÛUÓ @  ùVˆ?d ˜£%C.W- @  ùW‰?d Ø£%}ãò. @  ùXŠ?d ¤%d­! @  ùY‹?d X¤%¢¾¸ @  ùZŒ?d ˜¤%‚Kºþ @  ù[?d ؤ%·}»j @  ù\Ž?d ¥%g57‚ @  ù]?d X¥%\fh @  ù^?d ˜¥%|“ – @  ù_‘?d Ø¥%þù±Å @  ù`’?d ¦%c½ @  ùa“?d X¦%¥®¨% @  ùb”?d ˜¦%…[ªÛ @  ùc•?d ئ%°m«O @  ùd–?d §%`%'§ @  ùe—?d X§%>&}¡ @  ùf˜?d ˜§%Ó_ @  ùg™?d ا% Ú\ @  ùhš?d ¨%áVA @  ùi›?d X¨%Òòï` @  ùjœ?d ˜¨%òíž @  ùk?d ب%Ç1ì  @  ùlž?d ©%y`â @  ùmŸ?d X©%±aÔ @  ùn ?d ˜©%‘hc* @  ùo¡?d Ø©%øÉ @  ùp¢?d ª%Ÿ@X @  ùq£?d Xª%YSá) @  ùr¤?d ˜ª%y¦ã× @  ùs¥?d ت%LâC @  ùt¦?d «%œØn« @  ùu§?d X«%ÂÛ4­ @  ùv¨?d ˜«%â.6S @  ùw©?d Ø«%Üã“P @  ùxª?d ¬%Å­`_ @  ùy«?d X¬%¾Ù~ @  ùz¬?d ˜¬%#KÛ€ @  ù{­?d ج%}Ú @  ù|®?d ­%Æ5Vü @  ù}¯?d X­%ýfn @  ù~°?d ˜­%Ý“lè @  ù±?d Ø­%¨æ @  ù€²?d ®%ìFÙ @  ù³?d X®%Iÿÿø @  ù‚´?d ˜®%i ý @  ùƒµ?d Ø®%\<ü’ @  ù„¶?d ¯%Œtpz @  ù…·?d X¯%Òw*| @  ù†¸?d ˜¯%ò‚(‚ @  ù‡¹?d د%ÌO @  ùˆº?d °%r‘13 @  ù‰»?d X°%´‚ˆ @  ùм?d ˜°%”wŠì @  ù‹½?d ذ%¡A‹x @  ùŒ¾?d ±%q  @  ù¿?d X±%'½· @  ùŽÀ?d ˜±%HI @  ùÁ?d ر%”$Šª @  ùÂ?d ²% `*k @  ù‘Ã?d X²%Ïs“J @  ù’Ä?d ˜²%´ @  ù“Å?d ز%Ú°  @  ù”Æ?d ³% øÈ @  ù•Ç?d X³%TûFÎ @  ù–È?d ˜³%tD0 @  ù—É?d س%JÃá3 @  ù˜Ê?d ´%S< @  ù™Ë?d X´%•ž« @  ùšÌ?d ˜´%µk©ã @  ù›Í?d Ø´%€]¨w @  ùœÎ?d µ%P$Ÿ @  ùÏ?d Xµ%kFu @  ùžÐ?d ˜µ%K³‹ @  ùŸÑ?d ص%ÉÙ¢Ø @  ù Ò?d ¶%T @  ù¡Ó?d X¶%’Ž»8 @  ù¢Ô?d ˜¶%²{¹Æ @  ù£Õ?d ض%‡M¸R @  ù¤Ö?d ·%W4º @  ù¥×?d X·% n¼ @  ù¦Ø?d ˜·%)ólB @  ù§Ù?d Ø·%>ÉA @  ù¨Ú?d ¸%#ÁE\ @  ù©Û?d X¸%åÒü} @  ùªÜ?d ˜¸%Å'þƒ @  ù«Ý?d ظ%ðÿ @  ù¬Þ?d ¹% Ysÿ @  ù­ß?d X¹%†½rÉ @  ù®à?d ˜¹%¦Hp7 @  ù¯á?d ع%5$ëÔ @  ù°â?d º%¨`K @  ù±ã?d Xº%nsò4 @  ù²ä?d ˜º%N†ðÊ @  ù³å?d غ%{°ñ^ @  ù´æ?d »%«ø}¶ @  ùµç?d X»%õû'° @  ù¶è?d ˜»%Õ%N @  ù·é?d Ø»%ëÀM @  ù¸ê?d ¼%òsB @  ù¹ë?d X¼%4žÊc @  ùºì?d ˜¼%kÈ @  ù»í?d ؼ%!]É  @  ù¼î?d ½%ñEá @  ù½ï?d X½%ÊF}  @  ù¾ð?d ˜½%ê³õ @  ù¿ñ?d ؽ%ÆÞÅ4 @  ùÀò?d ¾%[šeõ @  ùÁó?d X¾%‰ÜÔ @  ùÂô?d ˜¾%½|Þ* @  ùÃõ?d ؾ%ˆJß¾ @  ùÄö?d ¿%XSV @  ùÅ÷?d X¿% P @  ùÆø?d ˜¿%&ô ® @uÐÀ%  ùÇù?d Ø¿%e¹ÝÑ @  ùÈ€ú?d 0À%IŒƒ @  ùÉ€û?d pÀ%ÇZ5¢ @  ùÊ€ü?d °À%ç¯7\ @  ùË€ý?d ðÀ%Ò™6È @  ùÌ€þ?d 0Á%Ѻ  @  ùÍ€ÿ?d pÁ%„æš¼ @  ù΀?d °Á%¤˜B @  ùÏ€?d ðÁ%7¡ @  ùЀ?d 0Â%ª;£` @  ùÑ€?d pÂ%l(A @  ùÒ€?d °Â%LÝ¿ @  ùÓ€?d ðÂ%yë+ @  ùÔ€?d 0Ã%©£•à @  ùÕ€?d pÃ%÷ ÏÅ @  ùÖ€?d °Ã%×UÍ; @  ù×€ ?d ðÃ%é˜h8 @  ùØ€ ?d 0Ä%ðÖ›7 @  ùÙ€ ?d pÄ%6Å" @  ùÚ€ ?d °Ä%0 è @  ùÛ€ ?d ðÄ%#!| @  ùÜ€?d 0Å%óN­” @  ùÝ€?d pÅ%È•~ @  ùÞ€?d °Å%èè—€ @  ù߀?d ðÅ%j‚+Ó @  ùà€?d 0Æ%÷Æ‹ @  ùá€?d pÆ%1Õ23 @  ùâ€?d€ °Æ%ÐgÇÍ @  ú€?d ðÆ%Žp @  ú€?d 0Ç%ÔX˜ @  ú€?d pÇ%O£s @  ú€?d °Ç%oç¡ @  ú€?d ðÇ%Ÿ˜[ô @  ú€?d 0È%«g×é @  ú€?d pÈ%£Æ1² @  ú€?d °È%ƒ33L @  ú €?d ðÈ%sLÉ5 @  ú €?d 0É%£EÝ @  ú €?d pÉ%À©¿ @  ú € ?d °É%à\½ø @  ú €!?d ðÉ%#G @  ú€"?d 0Ê%gç@ @  ú€#?d pÊ%(g?û @  ú€$?d °Ê%’= @  ú€%?d ðÊ%øíÇ| @  ú€&?d 0Ë%(¥K” @  ú€'?d pË%³ïê @  ú€(?d °Ë%“è @  ú€)?d ðË%ceø @  ú€*?d 0Ì%z+á÷ @  ú€+?d pÌ%rЬ @  ú€,?d °Ì%RR @  ú€-?d ðÌ%¢ÿ+ @  ú€.?d 0Í%rHsà @  ú€/?d pÍ%ŒR°Ä @  ú€0?d °Í%¬§²: @  ú€1?d ðÍ%\ØHC @  ú€2?d 0Î%Áœè‚ @  ú€3?d pÎ%uš‰ @  ú €4?d °Î%Uow @  ú!€5?d ðÎ%¥ï @  ú"€6?d 0Ï%uXcæ @  ú#€7?d pÏ%î  @  ú$€8?d °Ï%ÎçÀó @  ú%€9?d ðÏ%>˜:Š @  ú&€:?d 0Ð%€F†8 @  ú'€;?d pÐ%ˆç`c @  ú(€<?d °Ð%¨b @  ú)€=?d ðÐ%Xm˜ä @  ú*€>?d 0Ñ%ˆ%  @  ú+€??d pÑ%ØûÆ @  ú,€@?d °Ñ%;-ù8 @  ú-€A?d ðÑ%ËRA @  ú.€B?d 0Ò%V£€ @  ú/€C?d pÒ%ó{; @  ú0€D?d °Ò%ÓãyÅ @  ú1€E?d ðÒ%#œƒ¼ @  ú2€F?d 0Ó%óÔT @  ú3€G?d pÓ%hž®¿ @  ú4€H?d °Ó%Hk¬A @  ú5€I?d ðÓ%¸V8 @  ú6€J?d 0Ô%¡Z¥7 @  ú7€K?d pÔ%©ûCl @  ú8€L?d °Ô%‰A’ @  ú9€M?d ðÔ%yq»ë @  ú:€N?d 0Õ%©97 @  ú;€O?d pÕ%W#ô @  ú<€P?d °Õ%wÖöú @  ú=€Q?d ðÕ%‡© ƒ @  ú>€R?d 0Ö%í¬B @  ú?€S?d pÖ%ìUÛ @  ú@€T?d °Ö% W% @  úA€U?d ðÖ%Ðf­\ @  úB€V?d 0×%.!´ @  úC€W?d p×%›d€_ @  úD€X?d °×%»‘‚¡ @  úE€Y?d ð×%KîxØ @  úF€Z?d 0Ø%ôÅ @  úG€[?d pØ%w°ž @  úH€\?d °Ø%WE` @  úI€]?d ðØ%§:ê @  úJ€^?d 0Ù%wrfñ @  úK€_?d pÙ%ßœ* @  úL€`?d °Ù%4*žÔ @  úM€a?d ðÙ%ÄUd­ @  úN€b?d 0Ú%YÄl @  úO€c?d pÚ%ü× @  úP€d?d °Ú%Üä) @  úQ€e?d ðÚ%,›äP @  úR€f?d 0Û%üÓh¸ @  úS€g?d pÛ%g™ÉS @  úT€h?d °Û%GlË­ @  úU€i?d ðÛ%·1Ô @  úV€j?d 0Ü%®]ÂÛ @  úW€k?d pÜ%¦ü$€ @  úX€l?d °Ü%† &~ @  úY€m?d ðÜ%vvÜ @  úZ€n?d 0Ý%¦>Pï @  ú[€o?d pÝ%X$“è @  ú\€p?d °Ý%xÑ‘ @  ú]€q?d ðÝ%ˆ®ko @  ú^€r?d 0Þ%êË® @  ú_€s?d pÞ%¡ì4¥ @  ú`€t?d °Þ%6[ @  úa€u?d ðÞ%qfÌ" @  úb€v?d 0ß%¡.@Ê @  úc€w?d pß%:dá! @  úd€x?d uÐà%/°ß%‘ãß @  úe€y?d ðß%—njÚ @  úfz?d Hà%ŽÊ4, @  úg{?d ˆà%$ÇW @  úh|?d Èà%¦žÐ‰ @  úi}?d á%8±Æ @  új~?d Há%†©¦ @  úk?d ˆá%ªö` @  úl€?d Èá%(g¾ @  úm?d â%ÇÍRØ @  ún‚?d Hâ%E\E @  úoƒ?d ˆâ%B8ˆ @  úp„?d Èâ%À©ŸC @  úq…?d ã%bþ  @  úr†?d Hã%àžéÒ @  ús‡?d ˆã%Ù°] @  útˆ?d Èã%[!JÇ @  úu‰?d ä%0To @  úvŠ?d Hä%²C± @  úw‹?d ˆä%Õ°Ê @  úxŒ?d Èä%šD§ @  úy?d å%8âÆ[ @  úzŽ?d Hå%ºsÑ… @  ú{?d ˆå%æ ¢ @  ú|?d Èå%dœ| @  ú}‘?d æ%‹6] @  ú~’?d Hæ% §JÄ @  ú“?d ˆæ%R”–L @  ú€”?d Èæ%Ð’ @  ú•?d ç%r£àÝ @  ú‚–?d Hç%ð2÷ @  úƒ—?d ˆç%ÉCÈ @  ú„˜?d Èç%KT @  ú…™?d è% œ5¬ @  ú†š?d Hè% "r @  ú‡›?d ˆè%%ÈÑ  @  úˆœ?d Èè%§YÆ× @  ú‰?d é%ÿ§˜ @  úŠž?d Hé%‡n°F @  ú‹Ÿ?d ˆé%F§_½ @  úŒ ?d Èé%Ä6Hc @  ú¡?d ê%+œ @  úŽ¢?d Hê%© Û @  ú£?d ˆê%®iß@ @  ú¤?d Èê%,øÈž @  ú‘¥?d ë%Ž^©Ñ @  ú’¦?d Hë% Ͼ @  ú“§?d ˆë%5á Ä @  ú”¨?d Èë%·p @  ú•©?d ì%Üв @  ú–ª?d Hì%^Al @  ú—«?d ˆì%ô„ç @  ú˜¬?d Èì%vðÉ @  ú™­?d í%Ô³‘† @  úš®?d Hí%V"†X @  ú›¯?d ˆí% \P @  úœ°?d Èí%ˆÍG¡ @  ú±?d î%gg Ç @  úž²?d Hî%åö @  úŸ³?d ˆî%ó”÷2 @  ú ´?d Èî%qàì @  ú¡µ?d ï%Ó££ @  ú¢¶?d Hï%Q2–} @  ú£·?d ˆï%h"¶ @  ú¤¸?d Èï%ê5h @  ú¥¹?d ð%&½d} @  ú¦º?d Hð%¤,s£ @  ú§»?d ˆð%逨 @  ú¨¼?d Èð%Œx— @  ú©½?d ñ%.ÞöI @  úª¾?d Hñ%¬Oá— @  ú«¿?d ˆñ%Ö} @  ú¬À?d Èñ%G £ @  ú­Á?d ò%ðíAÅ @  ú®Â?d Hò%r|V @  ú¯Ã?d ˆò%u›€ @  ú°Ä?d Èò%÷‰Œ^ @  ú±Å?d ó%U/í @  ú²Æ?d Hó%×¾úÏ @  ú³Ç?d ˆó%îN @  ú´È?d Èó%lYÚ @  úµÉ?d ô%¡Gr @  ú¶Ê?d Hô%…0P¬ @  ú·Ë?d ˆô%/õ£× @  ú¸Ì?d Èô%­d´  @  ú¹Í?d õ%ÂÕF @  úºÎ?d Hõ%S˜ @  ú»Ï?d ˆõ%Ñ-¿ @  ú¼Ð?d Èõ%S¼a @  ú½Ñ?d ö%¼N @  ú¾Ò?d Hö%>‡YÙ @  ú¿Ó?d ˆö%†âµ` @  úÀÔ?d Èö%s¢¾ @  úÁÕ?d ÷%¦ÕÃñ @  úÂÖ?d H÷%$DÔ/ @  úÃ×?d ˆ÷%j`ä @  úÄØ?d È÷%Ÿûw: @  úÅÙ?d ø%Ùê€ @  úÆÚ?d Hø%[{^ @  úÇÛ?d ˆø%ñ¾ò% @  úÈÜ?d Èø%s/åû @  úÉÝ?d ù%щ„´ @  úÊÞ?d Hù%S“j @  úËß?d ˆù%’Ñ|‘ @  úÌà?d Èù%@kO @  úÍá?d ú%ÿê&) @  úÎâ?d Hú%}{1÷ @  úÏã?d ˆú%zül @  úÐä?d Èú%øŽë² @  úÑå?d û%Z(Šý @  úÒæ?d Hû%ع# @  úÓç?d ˆû%á—)è @  úÔè?d Èû%c>6 @  úÕé?d ü%¦ ž @  úÖê?d Hü%Š77@ @  ú×ë?d ˆü% òÄ; @  úØì?d Èü%¢cÓå @  úÙí?d ý%Ųª @  úÚî?d Hý%‚T¥t @  úÛï?d ˆý%Þ*sS @  úÜð?d Èý%\»d @  úÝñ?d þ%³)ë @  úÞò?d Hþ%1€>5 @  úßó?d ˆþ%'âÔ @  úàô?d Èþ%¥sÃÀ @  úáõ?d ÿ%Õ¢ @  úâö?d€ Hÿ%ñ‡©÷ @  û÷?d ˆÿ%)èU @  ûuÐ&ø?d Èÿ%«yBË @  ûù?d &/– @  ûú?d `&š¾ H @  ûû?d  &þɧI @  ûü?d à&|X°— @  ûý?d &LŽ¢ @  ûþ?d `&’Ý™| @  û ÿ?d  &¬™å @  û ?d à&†=Ž; @  û ?d &¬Þ8° @  û ?d `&.O/n @  û ?d  &J8ƒo @  û?d à&È©”± @  û?d & ”d @  û?d `&‹ƒº @  û?d  &wêÌœ @  û?d à&õ{ÛB @  û ?d &[’> @  û ?d `&Ù)Ù @  û ?d  &½t…Ø @  û ?d à&?å’ @  û ?d &Sñ¬3 @  û?d `&Ñ`»í @  û?d  &HW–' @  û?d à&ÊÆù @  û?d &à%7r @  û?d `&b´ ¬ @  û?d  &ÃŒ­ @  û?d à&„R›s @  û?d &Tá¼ @  û ?d `&Öp«È @  û!?d  &*äî @  û"?d à&¨†ó0 @  û#?d &+Þig @  û$?d `&©O~¹ @  û%?d  &Í8Ò¸ @  û&?d à&O©Åf @  û'?d &#½ûS @  û(?d ` &¡,ì @  û)?d   &¥¬ø› @  û* ?d à &'=ïE @  û+!?d & ÞYÎ @  û,"?d ` &ON @  û-#?d   &ë8â @  û.$?d à &i©õÏ @  û/%?d &¨õ @  û0&?d ` &*âÄ @  û1'?d   &Öê­â @  û2(?d à &T{º< @  û3)?d &ú’_y @  û4*?d ` &xH§ @  û5+?d   &tä¦ @  û6,?d à &žåóx @  û7-?d &òñÍM @  û8.?d ` &p`Ú“ @  û9/?d   &éW÷Y @  û:0?d à &kÆà‡ @  û;1?d &A%V  @  û<2?d `&ôAÒ @  û=3?d  &§ÃíÓ @  û>4?d à&%Rú  @  û?5?d &[æÛú @  û@6?d `&ÙwÌ$ @  ûA7?d  &%ƒ @  ûB8?d à&§”Ü @  ûC9?d &®ø>$ @  ûD:?d `&,i)ú @  ûE;?d  &H…û @  ûF<?d à&Ê’% @  ûG=?d &¦›¬ @  ûH>?d `&$ »Î @  ûI??d  &ÐÚºÉ @  ûJ@?d à&RK­ @  ûKA?d &x¨œ @  ûLB?d `&ú9 B @  ûMC?d  &žN C @  ûND?d à&ß· @  ûOE?d &Ýj·H @  ûPF?d `&_û – @  ûQG?d  &£œï° @  ûRH?d à&! øn @  ûSI?d &ä+ @  ûTJ?d `& u õ @  ûUK?d  &i¦ô @  ûVL?d à&등* @  ûWM?d &‡‡ @  ûXN?d `&˜Á @  ûYO?d  &œ!µ  @  ûZP?d à&°¢Õ @  û[Q?d &4S^ @  û\R?d `&¶Â€ @  û]S?d  &Òµ¯ @  û^T?d à&P$¸_ @  û_U?d &€—Ÿ: @  û`V?d `&ˆä @  ûaW?d  &þaÇ @  ûbX?d à&|ðÐ @  ûcY?d &ÿ¨JK @  ûdZ?d `&}9]• @  ûe[?d  &Nñ” @  ûf\?d à&›ßæJ @  ûg]?d &÷ËØ @  ûh^?d `&uZÏ¡ @  ûi_?d  &qÚÛ· @  ûj`?d à&óKÌi @  ûka?d &Ù¨zâ @  ûlb?d `&[9m< @  ûmc?d  &?NÁ= @  ûnd?d à&½ßÖã @  ûoe?d &|jÖ6 @  ûpf?d `&þûÁè @  ûqg?d  &œŽÎ @  ûrh?d à&€ ™ @  ûsi?d &.ä|U @  ûtj?d `&¬uk‹ @  ûuk?d  &ÈÇŠ @  ûvl?d à&J“ÐT @  ûwm?d &&‡îa @  ûxn?d `&¤ù¿ @  ûyo?d  &=!Ôu @  ûzp?d à&¿°Ã« @  û{q?d &•Su  @  û|r?d `&Âbþ @  û}s?d  &sµÎÿ @  û~t?d à&ñ$Ù! @  ûu?d &lÆÈç @  û€v?d `&îWß9 @  ûw?d  &0uÐ & @  û‚x?d à&©f[ @  ûƒ y?d 8 &oÊ“8 @  û„ z?d x &í[„æ @  û… {?d ¸ &‰,(ç @  û† |?d ø & ½?9 @  û‡ }?d 8!&g©  @  ûˆ ~?d x!&å8Ò @  û‰ ?d ¸!& .CG @  ûŠ €?d ø!&Ž¿T™ @  û‹ ?d 8"&¤\â @  ûŒ ‚?d x"&&ÍõÌ @  û ƒ?d ¸"&BºYÍ @  ûŽ „?d ø"&À+N @  û …?d 8#&žNÆ @  û †?d x#&ƒY @  û‘ ‡?d ¸#&h> @  û’ ˆ?d ø#&ýùà @  û“ ‰?d 8$&Sä¥ @  û” Š?d x$&Ñó{ @  û• ‹?d ¸$&µö_z @  û– Œ?d ø$&7gH¤ @  û— ?d 8%&[sv‘ @  û˜ Ž?d x%&ÙâaO @  û™ ?d ¸%&@ÕL… @  ûš ?d ø%&ÂD[[ @  û› ‘?d 8&&è§íÐ @  ûœ ’?d x&&j6ú @  û “?d ¸&&AV @  ûž ”?d ø&&ŒÐAÑ @  ûŸ •?d 8'&\cf´ @  û  –?d x'&Þòqj @  û¡ —?d ¸'&"•>L @  û¢ ˜?d ø'& )’ @  û£ ™?d 8(&#\³Å @  û¤ š?d x(&¡Í¤ @  û¥ ›?d ¸(&ź @  û¦ œ?d ø(&G+Ä @  û§ ?d 8)&+?!ñ @  û¨ ž?d x)&©®6/ @  û© Ÿ?d ¸)&­."9 @  ûª  ?d ø)&/¿5ç @  û« ¡?d 8*&\ƒl @  û¬ ¢?d x*&‡Í”² @  û­ £?d ¸*&ãº8³ @  û® ¤?d ø*&a+/m @  û¯ ¥?d 8+& ž/¸ @  û° ¦?d x+&"8f @  û± §?d ¸+&Þhw@ @  û² ¨?d ø+&\ù`ž @  û³ ©?d 8,&ò…Û @  û´ ª?d x,&p’ @  ûµ «?d ¸,&ö> @  û¶ ¬?d ø,&–g)Ú @  û· ­?d 8-&úsï @  û¸ ®?d x-&xâ1 @  û¹ ¯?d ¸-&áÕ-û @  ûº °?d ø-&cD:% @  û» ±?d 8.&I§Œ® @  û¼ ²?d x.&Ë6›p @  û½ ³?d ¸.&¯A7q @  û¾ ´?d ø.&-Ð ¯ @  û¿ µ?d 8/&SdX @  ûÀ ¶?d x/&Ñõ† @  ûÁ ·?d ¸/&-’Y  @  û ¸?d ø/&¯N~ @  ûà ¹?d 80&¦zä† @  ûÄ º?d x0&$ëóX @  ûÅ »?d ¸0&@œ_Y @  ûÆ ¼?d ø0& H‡ @  ûÇ ½?d 81&®v² @  ûÈ ¾?d x1&,ˆal @  ûÉ ¿?d ¸1&ØX`k @  ûÊ À?d ø1&ZÉwµ @  ûË Á?d 82&p*Á> @  ûÌ Â?d x2&ò»Öà @  ûÍ Ã?d ¸2&–Ìzá @  ûÎ Ä?d ø2&]m? @  ûÏ Å?d 83&Õèmê @  ûÐ Æ?d x3&Wyz4 @  ûÑ Ç?d ¸3&«5 @  ûÒ È?d ø3&)"Ì @  ûÓ É?d 84&‡flj @  ûÔ Ê?d x4&÷ÐW @  ûÕ Ë?d ¸4&a€|V @  ûÖ Ì?d ø4&ãkˆ @  û× Í?d 85&U½ @  ûØ Î?d x5& ”Bc @  ûÙ Ï?d ¸5&”£o© @  ûÚ Ð?d ø5&2xw @  ûÛ Ñ?d 86&<ÑÎü @  ûÜ Ò?d x6&¾@Ù" @  ûÝ Ó?d ¸6&Ú7u# @  ûÞ Ô?d ø6&X¦bý @  ûß Õ?d 87&ˆE˜ @  ûà Ö?d x7& „RF @  ûá ×?d ¸7&öã` @  ûâ Ø?d€ ø7&ò$¢ @  ü Ù?d 88&=py @  ü Ú?d x8&¬g§ @  ü Û?d ¸8&³’0K @  ü Ü?d ø8&1'• @  ü Ý?d 89&“¥FÚ @  ü Þ?d x9&4Q @  ü ß?d ¸9&Ûh @  ü à?d ø9&Y— ¶ @  ü á?d 8:&¶=@Ð @  ü â?d x:&4¬W @  ü ã?d ¸:&•’â @  ü ä?d ø:&< @  ü å?d 8;&µ¥vs @  ü æ?d x;&74a­ @  ü ç?d ¸;&¨@O @  ü è?d ø;&*ÑXÏ @  ü é?d 8<&AqFg @  ü ê?d x<&ÃàQ¹ @  ü ë?d ¸<&bÞU @  ü ì?d ø<&àO‹ @  ü í?d 8=&BépÄ @  ü î?d x=&Àxg @  ü ï?d ¸=&—ýª @  ü ð?d ø=&lt @  ü ñ?d 8>&úÆO @  ü ò?d x>&xWXÌ @  ü ó?d ¸>&Ùi  @  ü ô?d ø>&[øþ @  ü õ?d 8?&ù^y± @  ü ö?d x?&{Ïno @  ü ÷?duÐ@&7 ¸?&õ½gc @  ü ø?d ø?&Në¬h @  ü!ù?d P@&ÿ©ûó @  ü"ú?d @&ß\ù  @  ü#û?d Ð@&Ü»Á @  ü$ü?d A& N7) @  ü%ý?d PA&ü1ÍP @  ü&þ?d A&ÜÄÏ® @  ü'ÿ?d ÐA&jºû @  ü(?d B&‡.: @  ü)?d PB&wQàC @  ü*?d B&W¤â½ @  ü+?d ÐB&Tþ q @  ü,?d C&„¶,™ @  ü-?d PC&tÉÖà @  ü.?d C&T<Ô @  ü/?d ÐC&i,ï‚ @  ü0?d D&pb @  ü1 ?d PD&€æô @  ü2 ?d D& èä  @  ü3 ?d ÐD&£²¦Æ @  ü4 ?d E&sú*. @  ü5 ?d PE&ƒ…ÐW @  ü6?d E&£pÒ© @  ü7?d ÐE&V‘µ9 @  ü8?d F&ËÕø @  ü9?d PF&;ªï @  ü:?d F&_í @  ü;?d ÐF&¯³ @  ü<?d G&ÈM#[ @  ü=?d PG&82Ù" @  ü>?d G&ÇÛÜ @  ü??d ÐG&šÖÁb @  ü@?d H&®)M @  üA?d PH&^V· @  üB?d H&~£µø @  üC?d ÐH&}ù÷4 @  üD?d I&­±{Ü @  üE?d PI&]Î¥ @  üF?d I&};ƒ[ @  üG?d ÐI&mÝ @  üH ?d J&ˆ)}Ö @  üI!?d PJ&xV‡¯ @  üJ"?d J&X£…Q @  üK#?d ÐJ&[ùÇ @  üL$?d K&‹±Ku @  üM%?d PK&{α  @  üN&?d K&[;³ò @  üO'?d ÐK&f+ˆn @  üP(?d L&e{a @  üQ)?d PL& @  üR*?d L&¯ïƒæ @  üS+?d ÐL&¬µÁ* @  üT,?d M&|ýM @  üU-?d PM&Œ‚·» @  üV.?d M&¬wµE @  üW/?d ÐM&Y–ÒÕ @  üX0?d N&ÄÒr @  üY1?d PN&4­ˆm @  üZ2?d N&XŠ“ @  ü[3?d ÐN&È_ @  ü\4?d O&ÇJD· @  ü]5?d PO&75¾Î @  ü^6?d O&À¼0 @  ü_7?d ÐO&;Ö  @  ü`8?d P&…® @  üa9?d PP&uwæ× @  üb:?d P&U‚ä) @  üc;?d ÐP&Vئå @  üd<?d Q&†*  @  üe=?d PQ&vïÐt @  üf>?d Q&VÒŠ @  üg??d ÐQ&Î™× @  üh@?d R&SX9 @  üiA?d PR&£'Ão @  üjB?d R&ƒÒÁ‘ @  ükC?d ÐR&€ˆƒ] @  ülD?d S&PÀµ @  ümE?d PS& ¿õÌ @  ünF?d S&€J÷2 @  üoG?d ÐS&½ZÌ® @  üpH?d T&¤?¡ @  üqI?d PT&TkÅØ @  ürJ?d T&tžÇ& @  üsK?d ÐT&wÄ…ê @  ütL?d U&§Œ  @  üuM?d PU&Wóó{ @  üvN?d U&wñ… @  üwO?d ÐU&‚ç– @  üxP?d V&£6Ô @  üyQ?d PV&ïÜÌ­ @  üzR?d V&Ï)ÎS @  ü{S?d ÐV&ÌsŒŸ @  ü|T?d W&;w @  ü}U?d PW&ìDú @  ü~V?d W&̱øð @  üW?d ÐW&­öÒ @  ü€X?d X&™ ^b @  üY?d PX&iv¤ @  ü‚Z?d X&Iƒ¦å @  üƒ[?d ÐX&JÙä) @  ü„\?d Y&š‘hÁ @  ü…]?d PY&jî’¸ @  ü†^?d Y&JF @  ü‡_?d ÐY&"MÎ  @  üˆ`?d Z&¿ nË @  ü‰a?d PZ&Ov”² @  üŠb?d Z&oƒ–L @  ü‹c?d ÐZ&lÙÔ€ @  üŒd?d [&¼‘Xh @  üe?d P[&Lî¢ @  üŽf?d [&l ï @  üg?d Ð[&Q ›s @  üh?d \&HEh| @  ü‘i?d P\&¸:’ @  ü’j?d \&˜Ïû @  ü“k?d Ð\&›•Ò7 @  ü”l?d ]&KÝ^ß @  ü•m?d P]&»¢¤¦ @  ü–n?d ]&›W¦X @  ü—o?d Ð]&n¶ÁÈ @  ü˜p?d ^&óòa  @  ü™q?d P^&›p @  üšr?d ^&#x™Ž @  ü›s?d Ð^& "ÛB @  üœt?d _&ðjWª @  üu?d P_&­Ó @  üžv?d _& à¯- @  üuÐ`&Ÿw?d Ð_& ö³ @  ü x?d (`&²™ @  ü¡y?d h`&Bqüà @  ü¢z?d ¨`&b„þ @  ü£{?d è`&aÞ¼Ò @  ü¤|?d (a&±–0: @  ü¥}?d ha&AéÊC @  ü¦~?d ¨a&aȽ @  ü§?d èa&äÜ×r @  ü¨€?d (b&y˜w³ @  ü©?d hb&‰çÊ @  üª‚?d ¨b&©4 @  ü«ƒ?d èb&ªHÍø @  ü¬„?d (c&zA @  ü­…?d hc&Š»i @  ü®†?d ¨c&ªŠ¹— @  ü¯‡?d èc&—š‚  @  ü°ˆ?d (d&ŽÔq @  ü±‰?d hd&~«‹} @  ü²Š?d ¨d&^^‰ƒ @  ü³‹?d èd&]ËO @  ü´Œ?d (e&LG§ @  üµ?d he&}3½Þ @  ü¶Ž?d ¨e&]Æ¿  @  ü·?d èe&¨'ذ @  ü¸?d (f&5cxq @  ü¹‘?d hf&Å‚ @  üº’?d ¨f&åé€ö @  ü»“?d èf&æ³Â: @  ü¼”?d (g&6ûNÒ @  ü½•?d hg&Æ„´« @  ü¾–?d ¨g&æq¶U @  ü¿—?d èg&d`¬ë @  üÀ˜?d (h&PŸ ö @  üÁ™?d hh& àÚ @  üš?d ¨h&€Øq @  üÛ?d èh&ƒOš½ @  üÄœ?d (i&SU @  üÅ?d hi&£xì, @  üÆž?d ¨i&ƒîÒ @  üÇŸ?d èi&ëÛ°ž @  üÈ ?d (j&vŸ_ @  üÉ¡?d hj&†àê& @  üÊ¢?d ¨j&¦èØ @  üË£?d èj&¥Oª @  ṳ̈?d (k&u&ü @  üÍ¥?d hk&…xÜ… @  üΦ?d ¨k&¥Þ{ @  üϧ?d èk&˜åç @  üШ?d (l&Óè @  üÑ©?d hl&q¬ì‘ @  üÒª?d ¨l&QYîo @  üÓ«?d èl&R¬£ @  üÔ¬?d (m&‚K K @  üÕ­?d hm&r4Ú2 @  üÖ®?d ¨m&RÁØÌ @  üׯ?d èm&§ ¿\ @  üذ?d (n&:d @  üÙ±?d hn&Êåä @  üÚ²?d ¨n&êîç @  üÛ³?d èn&é´¥Ö @  üÜ´?d (o&9ü)> @  üݵ?d ho&ɃÓG @  üÞ¶?d ¨o&évѹ @  üß·?d èo&Å`Í• @  üà¸?d (p&{¾q' @  üá¹?d hp&‹Á‹^ @  üâº?d€ ¨p&ß÷• @  ý»?d èp&=ìŸã @  ý¼?d (q&í¤  @  ý½?d hq&Ø’Ÿ @  ý¾?d ¨q&øga @  ý¿?d èq&®ÓF @  ýÀ?d (r&3—¤‡ @  ýÁ?d hr& Z„ @  ýÂ?d ¨r&-¯z @  ý Ã?d èr&뼺[ @  ý Ä?d (s&;ô6³ @  ý Å?d hs&Â7' @  ý Æ?d ¨s&.75Ù @  ý Ç?d ès&p4oß @  ýÈ?d (t&izœÐ @  ýÉ?d ht&ú3 @  ýÊ?d ¨t&ÚãÍ @  ýË?d èt&ð¼ì @  ýÌ?d (u&̸0 @  ýÍ?d hu&ùŽ1 @  ýÎ?d ¨u&Ù{3n @  ýÏ?d èu&â( „ @  ýÐ?d (v&l«E @  ýÑ?d hv&A¡F @  ýÒ?d ¨v&aT ¸ @  ýÓ?d èv&§Gµ™ @  ýÔ?d (w&w9q @  ýÕ?d hw&B98å @  ýÖ?d ¨w&bÌ: @  ý×?d èw&<Ï` @  ýØ?d (x&0ì @  ýÙ?d hx&ŠZPS @  ý Ú?d ¨x&ª¯R­ @  ý!Û?d èx&l¼ëŒ @  ý"Ü?d (y&¼ôgd @  ý#Ý?d hy&‰Âfð @  ý$Þ?d ¨y&©7d @  ý%ß?d èy&Óe8 @  ý&à?d (z&’—Åù @  ý'á?d hz&¬Z`ú @  ý(â?d ¨z&Œ¯b @  ý)ã?d èz&J¼Û% @  ý*ä?d ({&šôWÍ @  ý+å?d h{&¯ÂVY @  ý,æ?d ¨{&7T§ @  ý-ç?d è{&Ñ4¡ @  ý.è?d (|&Èzý® @  ý/é?d h|&[fM @  ý0ê?d ¨|&{ãd³ @  ý1ë?d è|&½ðÝ’ @  ý2ì?d (}&m¸Qz @  ý3í?d h}&XŽPî @  ý4î?d ¨}&x{R @  ý5ï?d è}&C(jú @  ý6ð?d (~&ÞlÊ; @  ý7ñ?d h~&à¡o8 @  ý8ò?d ¨~&ÀTmÆ @  ý9ó?d è~&GÔç @  ý:ô?d (&ÖX @  ý;õ?d h&ã9Y› @  ý<ö?d ¨&uЀ&'ÃÌ[e @  ý=÷?d è&àOr @  ý>€ø?d @€&Žñk @  ý?€ù?d €€&ø?Š @  ý@€ú?d À€&‚i(T @  ýA€û?d &£ C @  ýB€ü?d @&”2 @  ýC€ý?d €&` ) @  ýD€þ?d À&ñ÷ @  ýE€ÿ?d ‚&ª1¼Q @  ýF€?d @‚&( « @  ýG€?d €‚&´ ¬ @  ýH€?d À‚&6˜ r @  ýI€?d ƒ&¢R.e @  ýJ€?d @ƒ& Ã9» @  ýK€?d €ƒ&·‘- @  ýL€?d Àƒ&5:Ñ @  ýM€?d „&ðÜ„ @  ýN€?d @„&rM“Ø @  ýO€ ?d €„&CE @  ýP€ ?d À„&ÁÔ Å @  ýQ€ ?d …&U(Ò @  ýR€ ?d @…&×?  @  ýS€ ?d €…&@Ý+¸ @  ýT€?d À…&ÂL?d À‘&Ôp t @  ý…€??d ’&¯L @  ý†€@?d @’&€¸’ @  ý‡€A?d €’&ƒ)± @  ýˆ€B?d À’&¸o @  ý‰€C?d “&•r=x @  ýŠ€D?d @“&ã*¦ @  ý‹€E?d €“&€±> @  ýŒ€F?d À“& )Ì @  ý€G?d ”&Çü— @  ýŽ€H?d @”&Em€Å @  ý€I?d €”&te @  ý€J?d À”&öôØ @  ý‘€K?d •&b>;Ï @  ý’€L?d @•&à¯, @  ý“€M?d €•&wý8¥ @  ý”€N?d À•&õl/{ @  ý•€O?d –&Ñê Ž @  ý–€P?d @–&S{·P @  ý—€Q?d €–&ÏÒs @  ý˜€R?d À–&MC­ @  ý™€S?d —&Ù‰2º @  ýš€T?d @—&[%d @  ý›€U?d €—&ÌJ1Ð @  ýœ€V?d À—&NÛ& @  ý€W?d ˜&¦¶çË @  ýž€X?d @˜&$'ð @  ýŸ€Y?d €˜&)Yf @  ý €Z?d À˜&†¸N¸ @  ý¡€[?d ™&rl¯ @  ý¢€\?d @™&ã{q @  ý£€]?d €™&±oÅ @  ý¤€^?d À™&… x @  ý¥€_?d š&<Î2 @  ý¦€`?d @š&¾€Ùì @  ý§€a?d €š&")iÏ @  ý¨€b?d Àš& ¸~ @  ý©€c?d ›&4r\ @  ýª€d?d @›&¶ãKØ @  ý«€e?d €›&!±_l @  ý¬€f?d À›&£ H² @  ý­€g?d œ&füöe @  ý®€h?d @œ&ämá» @  ý¯€i?d €œ&Õeox @  ý°€j?d Àœ&Wôx¦ @  ý±€k?d &Ã>Z± @  ý²€l?d @&A¯Mo @  ý³€m?d €&ÖýYÛ @  ý´€n?d À&TlN @  ýµ€o?d ž&pêÁð @  ý¶€p?d @ž&ò{Ö. @  ý·€q?d €ž&nÒf  @  ý¸€r?d Àž&ìCqÓ @  ý¹€s?d Ÿ&x‰SÄ @  ýº€t?d @Ÿ&úD @  ý»€u?d €Ÿ&mJP® @  ý¼€vuР&?d ÀŸ&ïÛGp @  ý½€w?d  &?§² @  ý¾x?d X &½S°l @  ý¿y?d ˜ &3Z @  ýÀz?d Ø &±ËS @  ýÁ{?d ¡&%*D @  ýÂ|?d X¡&§=š @  ýÃ}?d ˜¡&0Â). @  ýÄ~?d Ø¡&²S>ð @  ýÅ?d ¢&æôÉZ @  ýÆ€?d X¢&deÞ„ @  ýÇ?d ˜¢&øÌn§ @  ýÈ‚?d Ø¢&z]yy @  ýɃ?d £&î—[n @  ýÊ„?d X£&lL° @  ýË…?d ˜£&ûTX @  ý̆?d Ø£&yÅOÚ @  ý͇?d ¤&¼ñ  @  ýΈ?d X¤&>ˆæÓ @  ýω?d ˜¤&€h @  ýЊ?d ؤ&Î @  ýÑ‹?d ¥&Û]Ù @  ýÒŒ?d X¥&›JJ @  ýÓ?d ˜¥& ^³ @  ýÔŽ?d Ø¥&މIm @  ýÕ?d ¦&ªƘ @  ýÖ?d X¦&(žÑF @  ýב?d ˜¦&´7ae @  ýØ’?d ئ&6¦v» @  ýÙ“?d §&¢lT¬ @  ýÚ”?d X§& ýCr @  ýÛ•?d ˜§&·¯WÆ @  ýÜ–?d ا&5>@ @  ýÝ—?d ¨&ÝSÝ @  ýÞ˜?d X¨&_– @  ýß™?d ˜¨&Ì?p @  ýàš?d ب&ý](® @  ýá›?d ©&i— ¹ @  ýâœ?d€ X©&*Aêg @  þ?d ˜©&\R¶ú @  þž?d Ø©&Þá$ @  þŸ?d ª&¢»ìà @  þ ?d Xª& *û> @  þ¡?d ˜ª&r1g @  þ¢?d ت&ð ¹ @  þ£?d «&ªØ~Ô @  þ¤?d X«&(Ii  @  þ ¥?d ˜«&zR†S @  þ ¦?d Ø«&øÃ‘ @  þ §?d ¬&øVÔ· @  þ ¨?d X¬&zÇÃi @  þ ©?d ˜¬&(Ü,0 @  þª?d ج&ªM;î @  þ«?d ­&]”xc @  þ¬?d X­&ßo½ @  þ­?d ˜­&€ä @  þ®?d Ø­&—: @  þ¯?d ®&î@ã" @  þ°?d X®&lÑôü @  þ±?d ˜®&>Ê¥ @  þ²?d Ø®&¼[ { @  þ³?d ¯&æ#q @  þ´?d X¯&d²fÈ @  þµ?d ˜¯&6©‰‘ @  þ¶?d د&´8žO @  þ·?d °&=”È @  þ¸?d X°&‘¬ƒ @  þ¹?d ˜°&÷lO @  þº?d ذ&A&{‘ @  þ»?d ±&§ù¬ @  þ ¼?d X±&%hr @  þ!½?d ˜±&wsç+ @  þ"¾?d ر&õâðõ @  þ#¿?d ²&yʨ  @  þ$À?d X²&û[¿þ @  þ%Á?d ˜²&©@P§ @  þ&Â?d ز&+ÑGy @  þ'Ã?d ³&q©: @  þ(Ä?d X³&ó8-Ê @  þ)Å?d ˜³&¡#“ @  þ*Æ?d س&#²ÕM @  þ+Ç?d ´&#'w @  þ,È?d X´&¡¶‡© @  þ-É?d ˜´&ó­hð @  þ.Ê?d Ø´&q<. @  þ/Ë?d µ&†å<£ @  þ0Ì?d Xµ&t+} @  þ1Í?d ˜µ&VoÄ$ @  þ2Î?d ص&ÔþÓú @  þ3Ï?d ¶&51§â @  þ4Ð?d X¶&· °< @  þ5Ñ?d ˜¶&å»_e @  þ6Ò?d ض&g*H» @  þ7Ó?d ·&=R5Ö @  þ8Ô?d X·&¿Ã" @  þ9Õ?d ˜·&íØÍQ @  þ:Ö?d Ø·&oIÚ @  þ;×?d ¸&Bmà§ @  þ<Ø?d X¸&Àü÷y @  þ=Ù?d ˜¸&’ç  @  þ>Ú?d ظ&vþ @  þ?Û?d ¹&X®mQ @  þ@Ü?d X¹&Ú?z @  þAÝ?d ˜¹&ˆ$•Ö @  þBÞ?d ع& µ‚ @  þCß?d º&vÍÏÌ @  þDà?d Xº&ô\Ø @  þEá?d ˜º&¦G7K @  þFâ?d غ&$Ö • @  þGã?d »&~®]ø @  þHä?d X»&ü?J& @  þIå?d ˜»&®$¥ @  þJæ?d Ø»&,µ²¡ @  þKç?d ¼&, ÷› @  þLè?d X¼&®±àE @  þMé?d ˜¼&üª @  þNê?d ؼ&~; @  þOë?d ½&‰â[O @  þPì?d X½& sL‘ @  þQí?d ˜½&Yh£È @  þRî?d ؽ&Ûù´ @  þSï?d ¾&:6À @  þTð?d X¾&¸§×Ð @  þUñ?d ˜¾&ê¼8‰ @  þVò?d ؾ&h-/W @  þWó?d ¿&2UR: @  þXô?d X¿&°ÄEä @  þYõ?d ˜¿&âߪ½ @uÐÀ&  þZö?d Ø¿&ÎÎ @  þ[€÷?d 0À&`å)x @  þ\€ø?d pÀ&ât>¦ @  þ]€ù?d °À&°oÑÿ @  þ^€ú?d ðÀ&2þÆ! @  þ_€û?d 0Á&Ô!¢ @  þ`€ü?d pÁ&V°µÂ @  þa€ý?d °Á&«Z› @  þb€þ?d ðÁ&†:ME @  þc€ÿ?d 0Â&Ú‘!+ @  þd€?d pÂ&X6õ @  þe€?d °Â& Ù¬ @  þf€?d ðÂ&ˆŠÎr @  þg€?d 0Ã&Òò³ @  þh€?d pÃ&Pc¤Á @  þi€?d °Ã&xK˜ @  þj€?d ðÃ&€é\F @  þk€?d 0Ä&€|| @  þl€?d pÄ&í¢ @  þm€ ?d °Ä&Pöáû @  þn€ ?d ðÄ&Ògö% @  þo€ ?d 0Å&%¾µ¨ @  þp€ ?d pÅ&§/¢v @  þq€ ?d °Å&õ4M/ @  þr€?d ðÅ&w¥Zñ @  þs€?d 0Æ&–j.é @  þt€?d pÆ&û97 @  þu€?d °Æ&FàÖn @  þv€?d ðÆ&ÄqÁ° @  þw€?d 0Ç&ž ¼Ý @  þx€?d pÇ&˜« @  þy€?d °Ç&NƒDZ @  þz€?d ðÇ&ÌS„ @  þ{€?d 0È&á6i¬ @  þ|€?d pÈ&c§~r @  þ}€?d °È&1¼‘+ @  þ~€?d ðÈ&³-†õ @  þ€?d 0É&£Ôk @  þ€€?d pÉ&š2õ @  þ€?d °É&È),ì @  þ‚€?d ðÉ&J¸;2 @  þƒ€?d 0Ê&6Àvö @  þ„€ ?d pÊ&´Qa( @  þ…€!?d °Ê&æJŽq @  þ†€"?d ðÊ&dÛ™¯ @  þ‡€#?d 0Ë&>£ä @  þˆ€$?d pË&¼2ó @  þ‰€%?d °Ë&î)E @  þŠ€&?d ðË&l¸ › @  þ‹€'?d 0Ì&l-N¡ @  þŒ€(?d pÌ&î¼Y @  þ€)?d °Ì&¼§¶& @  þŽ€*?d ðÌ&>6¡ø @  þ€+?d 0Í&Éïâu @  þ€,?d pÍ&K~õ« @  þ‘€-?d °Í&eò @  þ’€.?d ðÍ&›ô , @  þ“€/?d 0Î&z;y4 @  þ”€0?d pÎ&øªnê @  þ•€1?d °Î&ª±³ @  þ–€2?d ðÎ&( –m @  þ—€3?d 0Ï&rXë @  þ˜€4?d pÏ&ðÉüÞ @  þ™€5?d °Ï&¢Ò‡ @  þš€6?d ðÏ& CY @  þ›€7?d 0Ð&‡FÞ @  þœ€8?d pÐ&× @  þ€9?d °Ð&WÌöY @  þž€:?d ðÐ&Õ]ᇠ@  þŸ€;?d 0Ñ&3‚…º @  þ €<?d pÑ&±’d @  þ¡€=?d °Ñ&ã}= @  þ¢€>?d ðÑ&a™jã @  þ£€??d 0Ò&í±26 @  þ¤€@?d pÒ&o %è @  þ¥€A?d °Ò&=;ʱ @  þ¦€B?d ðÒ&¿ªÝo @  þ§€C?d 0Ó&åÒ  @  þ¨€D?d pÓ&gC·Ü @  þ©€E?d °Ó&5XX… @  þª€F?d ðÓ&·ÉO[ @  þ«€G?d 0Ô&·\ a @  þ¬€H?d pÔ&5Í¿ @  þ­€I?d °Ô&gÖòæ @  þ®€J?d ðÔ&åGå8 @  þ¯€K?d 0Õ&ž¦µ @  þ°€L?d pÕ&±k @  þ±€M?d °Õ&Â^2 @  þ²€N?d ðÕ&@…Iì @  þ³€O?d 0Ö&¡J=ô @  þ´€P?d pÖ&#Û** @  þµ€Q?d °Ö&qÀÅs @  þ¶€R?d ðÖ&óQÒ­ @  þ·€S?d 0×&©)¯À @  þ¸€T?d p×&+¸¸ @  þ¹€U?d °×&y£WG @  þº€V?d ð×&û2@™ @  þ»€W?d 0Ø&Öz± @  þ¼€X?d pØ&T‡mo @  þ½€Y?d °Ø&œ‚6 @  þ¾€Z?d ðØ&„ •è @  þ¿€[?d 0Ù&ÌÕ÷G @  þÀ€\?d pÙ&NDà™ @  þÁ€]?d °Ù&_À @  þ€^?d ðÙ&žÎ @  þÀ_?d 0Ú&â¶UÚ @  þÄ€`?d pÚ&`'B @  þÅ€a?d °Ú&2<­] @  þÆ€b?d ðÚ&°­ºƒ @  þÇ€c?d 0Û&êÕÇî @  þÈ€d?d pÛ&hDÐ0 @  þÉ€e?d °Û&:_?i @  þÊ€f?d ðÛ&¸Î(· @  þË€g?d 0Ü&¸[m @  þÌ€h?d pÜ&:ÊzS @  þÍ€i?d °Ü&hÑ•  @  þ΀j?d ðÜ&ê@‚Ô @  þÏ€k?d 0Ý&™ÁY @  þЀl?d pÝ&ŸÖ‡ @  þÑ€m?d °Ý&Í9Þ @  þÒ€n?d ðÝ&O‚. @  þÓ€o?d 0Þ&®MZ @  þÔ€p?d pÞ&,ÜMÆ @  þÕ€q?d °Þ&~Ç¢Ÿ @  þÖ€r?d ðÞ&üVµA @  þ×€s?d 0ß&¦.È, @  þØ€t?d pß&$¿ßò @  þÙ€u?d uÐà&/°ß&v¤0« @  þÚ€v?d ðß&ô5'u @  þÛ€w?d Hà&ôJ϶ @  þÜ€x?d ˆà&Ô¿ÍH @  þÝ€y?d Èà&$À71 @  þÞ€z?d á&ôˆ»Ù @  þ߀{?d Há&@ŽDÒ @  þà€|?d ˆá&`{F, @  þá€}?d Èá&¼U @  þâ€~?d€ â&yƒ2 @  ÿ€?d Hâ&ùóC @  ÿ€€?d ˆâ&6 ñ½ @  ÿ€?d Èâ&:ð) @  ÿ€‚?d ã&Ór|Á @  ÿ€ƒ?d Hã&aÅà @  ÿ€„?d ˆã&5”Ç @  ÿ€…?d Èã& Yb @  ÿ€†?d ä&‘ @  ÿ €‡?d Hä&LË @  ÿ €ˆ?d ˆä&láÉê @  ÿ €‰?d Èä&Y×È~ @  ÿ €Š?d å&‰ŸD– @  ÿ €‹?d Hå&OŒý· @  ÿ€Œ?d ˆå&oyÿI @  ÿ€?d Èå&üdª @  ÿ€Ž?d æ&aQÄk @  ÿ€?d Hæ&Zü @  ÿ€?d ˆæ&z÷þ @  ÿ€‘?d Èæ&OÁÿë @  ÿ€’?d ç&Ÿ‰s @  ÿ€“?d Hç&YšÊ" @  ÿ€”?d ˆç&yoÈÜ @  ÿ€•?d Èç&G¢mß @  ÿ€–?d è&s]á @  ÿ€—?d Hè&-^»Ä @  ÿ€˜?d ˆè& «¹: @  ÿ€™?d Èè&8¸® @  ÿ€š?d é&èÕ4F @  ÿ€›?d Hé&.Æg @  ÿ€œ?d ˆé&3™ @  ÿ€?d Èé&ŒY3Ê @  ÿ €ž?d ê&“  @  ÿ!€Ÿ?d Hê&·ù’= @  ÿ"€ ?d ˆê&— à @  ÿ#€¡?d Èê&¢:‘W @  ÿ$€¢?d ë&rr¿ @  ÿ%€£?d Hë&´a¤ž @  ÿ&€¤?d ˆë&””¦` @  ÿ'€¥?d Èë&ªYc @  ÿ(€¦?d ì&³ðl @  ÿ)€§?d Hì&íªj @  ÿ*€¨?d ˆì&Íᨔ @  ÿ+€©?d Èì&ø×© @  ÿ,€ª?d í&(Ÿ%è @  ÿ-€«?d Hí&É @  ÿ.€¬?d ˆí&Îyž7 @  ÿ/€­?d Èí&]Ô @  ÿ0€®?d î&ÀQ¥ @  ÿ1€¯?d Hî&ûÿ @  ÿ2€°?d ˆî&Û÷Ÿ @  ÿ3€±?d Èî&îÁž• @  ÿ4€²?d ï&>‰} @  ÿ5€³?d Hï&øš«\ @  ÿ6€´?d ˆï&Øo©¢ @  ÿ7€µ?d Èï&æ¢ ¡ @  ÿ8€¶?d ð&X|° @  ÿ9€·?d Hð&ê @  ÿ:€¸?d ˆð&&Šèë @  ÿ;€¹?d Èð&¼é @  ÿ<€º?d ñ&Ãôe— @  ÿ=€»?d Hñ&çܶ @  ÿ>€¼?d ˆñ&%ÞH @  ÿ?€½?d Èñ& d‰ @  ÿ@€¾?d ò&”;ÄH @  ÿA€¿?d Hò&ÂÐo @  ÿB€À?d ˆò&âzÒ‘ @  ÿC€Á?d Èò&×LÓ @  ÿD€Â?d ó&_í @  ÿE€Ã?d Hó&ÁæÌ @  ÿF€Ä?d ˆó&áâä2 @  ÿG€Å?d Èó&ß/A1 @  ÿH€Æ?d ô&Æa²> @  ÿI€Ç?d Hô&˜bè8 @  ÿJ€È?d ˆô&¸—êÆ @  ÿK€É?d Èô&¡ëR @  ÿL€Ê?d õ&]égº @  ÿM€Ë?d Hõ&›úÞ› @  ÿN€Ì?d ˆõ&»Üe @  ÿO€Í?d Èõ&(cG† @  ÿP€Î?d ö&µ'çG @  ÿQ€Ï?d Hö&Žtß­ @  ÿR€Ð?d ˆö&®ÝS @  ÿS€Ñ?d Èö&›·ÜÇ @  ÿT€Ò?d ÷&KÿP/ @  ÿU€Ó?d H÷&ìé @  ÿV€Ô?d ˆ÷&­ëð @  ÿW€Õ?d È÷&“ÔNó @  ÿX€Ö?d ø&§+Âî @  ÿY€×?d Hø&ù(˜è @  ÿZ€Ø?d ˆø&ÙÝš @  ÿ[€Ù?d Èø&ì뛂 @  ÿ\€Ú?d ù&<£j @  ÿ]€Û?d Hù&ú°®K @  ÿ^€Ü?d ˆù&ÚE¬µ @  ÿ_€Ý?d Èù&X/æ @  ÿ`€Þ?d ú&Åk°' @  ÿa€ß?d Hú&c± @  ÿb€à?d ˆú&Cz³ï @  ÿc€á?d Èú&vL²{ @  ÿd€â?d û&¦>“ @  ÿe€ã?d Hû&`‡² @  ÿf€ä?d ˆû&@â…L @  ÿg€å?d Èû&~/ O @  ÿh€æ?d ü&gaÓ@ @  ÿi€ç?d Hü&9b‰F @  ÿj€è?d ˆü&—‹¸ @  ÿk€é?d Èü&,¡Š, @  ÿl€ê?d ý&üéÄ @  ÿm€ë?d Hý&:ú¿å @  ÿn€ì?d ˆý&½ @  ÿo€í?d Èý&‰c&ø @  ÿp€î?d þ&'†9 @  ÿq€ï?d Hþ&/t¾Ó @  ÿr€ð?d ˆþ&¼- @  ÿs€ñ?d Èþ&:·½¹ @  ÿt€ò?d ÿ&êÿ1Q @  ÿu€ó?d Hÿ&,ìˆp @  ÿv€ô?d ˆÿ& ŠŽ @  ÿw€uÐ'õ?d Èÿ&2Ô/ @  ÿx€ö?d '}`| @  ÿy€÷?d `'#c]z @  ÿz€ø?d  '–_„ @  ÿ{€ù?d à'6 ^ @  ÿ|€ú?d 'æèÒø @  ÿ}€û?d `' ûkÙ @  ÿ~€ü?d  'i' @  ÿ€ý?d à'Ï5ã× @  ÿ€€þ?d 'RqC @  ÿ€ÿ?d `'fdV¯ @  ÿ‚€?d  'F‘TQ @  ÿƒ€?d à's§UÅ @  ÿ„€?d '£ïÙ- @  ÿ…€?d `'eü`  @  ÿ†€?d  'E bò @  ÿ‡€?d à'{ÄÇñ @  ÿˆ€?d 'bŠ4þ @  ÿ‰€?d `'<‰nø @  ÿŠ€?d  '|l @  ÿ‹€ ?d à')Jm’ @  ÿŒ€ ?d 'ùáz @  ÿ€ ?d `'?X[ @  ÿŽ€ ?d  'äZ¥ @  ÿ€ ?d à'ŒˆÁF @  ÿ€?d 'Ìa‡ @  ÿ‘€?d `'*ŸYm @  ÿ’€?d  ' j[“ @  ÿ“€?d à'?\Z @  ÿ”€?d 'ïÖï @  ÿ•€?d `')oÎ @  ÿ–€?d  ' òm0 @  ÿ—€?d à'7?È3 @  ÿ˜€?d 'ÀD. @  ÿ™€?d `']Ã( @  ÿš€?d  '}6Ö @  ÿ›€?d à'HB @  ÿœ€?d '˜H‘ª @  ÿ€?d ` '^[(‹ @  ÿž€?d   '~®*u @  ÿŸ€?d à 'üÄ–& @  ÿ €?d 'a€6ç @  ÿ¡€?d ` 'Çd7Ñ @  ÿ¢€ ?d   'ç‘5/ @  ÿ£€!?d à 'Ò§4» @  ÿ¤€"?d 'ï¸S @  ÿ¥€#?d ` 'Äür @  ÿ¦€$?d   'ä Œ @  ÿ§€%?d à 'ÚĦ @  ÿ¨€&?d 'ÊU€ @  ÿ©€'?d ` '‰† @  ÿª€(?d   '½| x @  ÿ«€)?d à 'ˆJ ì @  ÿ¬€*?d 'X€ @  ÿ­€+?d ` 'ž9% @  ÿ®€,?d   '¾ä;Û @  ÿ¯€-?d à '-ˆ 8 @  ÿ°€.?d '°Ìù @  ÿ±€/?d `'‹Ÿ8 @  ÿ²€0?d  '«j:í @  ÿ³€1?d à'ž\;y @  ÿ´€2?d 'N·‘ @  ÿµ€3?d `'ˆ° @  ÿ¶€4?d  '¨ò N @  ÿ·€5?d à'–?©M @  ÿ¸€6?d '(áÿ @  ÿ¹€7?d `'vâOù @  ÿº€8?d  'VM @  ÿ»€9?d à'c!L“ @  ÿ¼€:?d '³iÀ{ @  ÿ½€;?d `'uzyZ @  ÿ¾€<?d  'U{¤ @  ÿ¿€=?d à'yâÁe @  ÿÀ€>?d 'ä¦a¤ @  ÿÁ€??d `'²uƒ @  ÿ€@?d  '’çw} @  ÿÀA?d à'§Ñvé @  ÿÄ€B?d 'w™ú @  ÿÅ€C?d `'±ŠC  @  ÿÆ€D?d  '‘AÞ @  ÿÇ€E?d à'¯²äÝ @  ÿÈ€F?d '¶üÒ @  ÿÉ€G?d `'èÿMÔ @  ÿÊ€H?d  'È O* @  ÿË€I?d à'ýn @  ÿÜ€Z?d 'L>²† @  ÿÝ€[?d `'Š- § @  ÿÞ€\?d  'ªØ Y @  ÿ߀]?d à'(²µ  @  ÿà€^?d 'µöË @  ÿá€_?d `'ý @  ÿâ€`?d€  'À¢À @  €a?d à'Õ‰½ @  €b?d 'ÄU @  €c?d `'ÇÇG™ @  €d?d  'ç2Eg @  €e?d à'M¿ @  €f?d 'L @  €g?d `'ž²Im @  €h?d  '¾GK“ @   €i?d à'N8±ê @   €j?d 'žp= @   €k?d `'*Î @   €l?d  '½ß}0 @   €m?d à'M ‡I @  €n?d 'Ðä'ˆ @  €o?d `'ˆ¤~ø @  €p?d  '¨Q| @  €q?d à'X.† @  €r?d 'ˆf — @  €s?d `'‹— @  '€‡?d x$'—Ð;ë @  (€ˆ?d ¸$'·%9 @  )€‰?d ø$'GZÃl @  *€Š?d 8%'—O„ @  +€‹?d x%'”H H @  ,€Œ?d ¸%'´½¶ @  -€?d ø%'DÂõÏ @  .€Ž?d 8&'Ù†U @  /€?d x&'Æ ~ @  0€?d ¸&'¡3€ @  1€‘?d ø&'QLôù @  2€’?d 8''x @  3€“?d x''‚^:Ý @  4€”?d ¸''¢«8# @  5€•?d ø''RÔÂZ @  6€–?d 8('f+NG @  7€—?d x('öšK; @  8€˜?d ¸('ÖoIÅ @  9€™?d ø('&³¼ @  :€š?d 8)'öX?T @  ;€›?d x)'õ}˜ @  <€œ?d ¸)'Õ÷f @  =€?d ø)'%ˆ… @  >€ž?d 8*'¸Ì%Þ @  ?€Ÿ?d x*'Â:dP @  @€ ?d ¸*'âÏf® @  A€¡?d ø*'°œ× @  B€¢?d 8+'Âø? @  C€£?d x+'Á¢Ró @  D€¤?d ¸+'áWP  @  E€¥?d ø+'(ªt @  F€¦?d 8,'fY{ @  G€§?d x,'˜×\ @  H€¨?d ¸,'¸"^ù @  I€©?d ø,'H]¤€ @  J€ª?d 8-'˜(h @  K€«?d x-'›Oj¤ @  L€¬?d ¸-'»ºhZ @  M€­?d ø-'KÅ’# @  N€®?d 8.'Ö2â @  O€¯?d x.'ŽÁk’ @  P€°?d ¸.'®4il @  Q€±?d ø.'^K“ @  R€²?d 8/'Žý @  S€³?d x/'Y]1 @  T€´?d ¸/'­¬_Ï @  U€µ?d ø/']Ó¥¶ @  V€¶?d 80'ã  @  W€·?d x0's¼x @  X€¸?d ¸0'SI† @  Y€¹?d ø0'£6äÿ @  Z€º?d 81's~h @  [€»?d x1'p$*Û @  \€¼?d ¸1'PÑ(% @  ]€½?d ø1' ®Ò\ @  ^€¾?d 82'=êr @  _€¿?d x2'K  @  `€À?d ¸2'9¾"n @  a€Á?d ø2'ÉÁØ @  b€Â?d 83'‰Tÿ @  c€Ã?d x3'Ó3 @  d€Ä?d ¸3':&Í @  e€Å?d ø3'ÊYî´ @  f€Æ?d 84'Ó» @  g€Ç?d x4'C¦Ç @  h€È?d ¸4'cS9 @  i€É?d ø4'“,à@ @  j€Ê?d 85'Cdl¨ @  k€Ë?d x5'@>.d @  l€Ì?d ¸5'`Ë,š @  m€Í?d ø5'´Öã @  n€Î?d 86' ðv" @  o€Ï?d x6'U°/R @  p€Ð?d ¸6'uE-¬ @  q€Ñ?d ø6'…:×Õ @  r€Ò?d 87'Ur[= @  s€Ó?d x7'V(ñ @  t€Ô?d ¸7'vÝ @  u€Õ?d ø7'†¢áv @  v€Ö?d 88'²]mk @  w€×?d x8'"ìh @  x€Ø?d ¸8'jé @  y€Ù?d ø8'òf @  z€Ú?d 89'".x @  {€Û?d x9'!t^´ @  |€Ü?d ¸9'\J @  }€Ý?d ø9'ñþ¦3 @  ~€Þ?d 8:'lºò @  €ß?d x:'õwM @  €€à?d ¸:'Õïu³ @  €á?d ø:'%Ê @  ‚€â?d 8;'õØ" @  ƒ€ã?d x;'ö‚Aî @  „€ä?d ¸;'ÖwC @  …€å?d ø;'&¹i @  †€æ?d 8<'?FJf @  ‡€ç?d x<'¯÷O @  ˆ€è?d ¸<'Mä @  ‰€é?d ø<'}· @  Š€ê?d 8='¯5;u @  ‹€ë?d x='¬oy¹ @  Œ€ì?d ¸='Œš{G @  €í?d ø='|å> @  Ž€î?d 8>'á¡!ÿ @  €ï?d x>'¹áx @  €ð?d ¸>'™zq @  ‘€ñ?d ø>'ik€ @  ’€ò?d 8?'¹# à @  “€ó?d x?'ºyN, @  ”€ô?duÐ@'7 ¸?'šŒLÒ @  •€õ?d ø?'sÅ× @  –ö?d P@'í£> @  — ÷?d @'ßͳb @  ˜ ø?d Ð@']\¤¼ @  ™ ù?d A'ÿúÅó @  š ú?d PA'}kÒ- @  › û?d A'ÜU…Á @  œ ü?d ÐA'^Ä’ @   ý?d B'±nßy @  ž þ?d PB'3ÿȧ @  Ÿ ÿ?d B'f.ç) @     ?d ÐB'ä¿ð÷ @  ¡  ?d C'F‘¸ @  ¢  ?d PC'Ĉ†f @  £  ?d C'e¶ÑŠ @  ¤  ?d ÐC'ç'ÆT @  ¥  ?d D'Œ‡Øü @  ¦  ?d PD'Ï" @  §  ?d D'<Ãß~ @  ¨  ?d ÐD'¾RÈ  @  ©  ?d E'ô©ï @  ª  ?d PE'že¾1 @  «  ?d E'?[éÝ @  ¬  ?d ÐE'½Êþ @  ­  ?d F'R`³e @  ®  ?d PF'Ðñ¤» @  ¯  ?d F'*Õèë @  °  ?d ÐF'¨Dÿ5 @  ±  ?d G' âžz @  ²  ?d PG'ˆs‰¤ @  ³  ?d G')MÞH @  ´  ?d ÐG'«ÜÉ– @  µ  ?d H'íͨ, @  ¶  ?d PH'o\¿ò @  ·  ?d H']‰¯® @  ¸  ?d ÐH'߸p @  ¹  ?d I'}¾Ù? @  º  ?d PI'ÿ/Îá @  »  ?d I'^™  @  ¼  ?d ÐI'Ü€ŽÓ @  ½  ?d J'3*õ @  ¾  ?d PJ'±»Ôk @  ¿  ?d J'i)€Å @  À  ?d ÐJ'븗 @  Á ! ?d K'IöT @   " ?d PK'Ëአ@  à # ?d K'j±¶f @  Ä $ ?d ÐK'è ¡¸ @  Å % ?d L'ƒ€¿ @  Æ & ?d PL'¨Î @  Ç ' ?d L'3ĸ’ @  È ( ?d ÐL'±U¯L @  É ) ?d M'óÎ @  Ê * ?d PM'‘bÙÝ @  Ë + ?d M'0\Ž1 @  Ì , ?d ÐM'²Í™ï @  Í - ?d N']gÔ‰ @  Î . ?d PN'ßöÃW @  Ï / ?d N'%Ò @  Ð 0 ?d ÐN'§C˜Ù @  Ñ 1 ?d O'åù– @  Ò 2 ?d PO'‡tîH @  Ó 3 ?d O'&J¹¤ @  Ô 4 ?d ÐO'¤Û®z @  Õ 5 ?d P'hëÿo @  Ö 6 ?d PP'êzè± @  × 7 ?d P'دøí @  Ø 8 ?d ÐP'Z>ï3 @  Ù 9 ?d Q'ø˜Ž| @  Ú : ?d PQ'z ™¢ @  Û ; ?d Q'Û7ÎN @  Ü < ?d ÐQ'Y¦Ù @  Ý = ?d R'¶ ”ö @  Þ > ?d PR'4ƒ( @  ß ? ?d R'²XÄ @  à @ ?d ÐR'0ÉÓÛ @  á A ?d S'’o²” @  â B ?d€ PS'd=¹ì @   C ?d S'$B¦) @   D ?d ÐS'¦Ó±÷ @   E ?d T':T² @   F ?d PT'Š«Cl @   G ?d T'vÌ J @   H ?d ÐT'ô]” @   I ?d U'˜I%¡ @   J ?d PU'Ø2 @   K ?d U'~¯ž~ @   L ?d ÐU'ü>‰  @   M ?d V'ÖÝ?+ @   N ?d PV'TL(õ @   O ?d V'Í{? @   P ?d ÐV'Oêá @   Q ?d W'Ž_4 @   R ?d PW' Îê @   S ?d W'h¹©ë @   T ?d ÐW'ê(¾5 @   U ?d X'ip$b @   V ?d PX'ëá3¼ @   W ?d X'†|š @   X ?d ÐX'•kD @   Y ?d Y'ùUq @   Z ?d PY'{’B¯ @   [ ?d Y'åî® @   \ ?d ÐY'tùp @   ] ?d Z'·—Oû @   ^ ?d PZ'5X% @   _ ?d Z'1†L3 @   ` ?d ÐZ'³[í @   a ?d ['c¤|ˆ @   b ?d P['á5kV @  ! c ?d ['…BÇW @  " d ?d Ð['ÓЉ @  # e ?d \'©:5Ì @  $ f ?d P\'+«" @  % g ?d \'×Ìm4 @  & h ?d Ð\'U]zê @  ' i ?d ]'9IDß @  ( j ?d P]'»ØS @  ) k ?d ]'߯ÿ @  * l ?d Ð]']>èÞ @  + m ?d ^'wÝ^U @  , n ?d P^'õLI‹ @  - o ?d ^'l{dA @  . p ?d Ð^'îêsŸ @  / q ?d _'/_sJ @  0 r ?d P_'­Îd” @  1 s ?d _'ɹȕ @  uÐ`'2 t ?d Ð_'K(ßK @  3 u ?d (`'Bw|™ @  4 v ?d h`'ÀækG @  5 w ?d ¨`'<$a @  6 x ?d è`'¾3¿ @  7 y ?d (a'Ò Š @  8 z ?d ha'P•T @  9 { ?d ¨a'4â¶U @  : | ?d èa'¶s¡‹ @  ; } ?d (b'œ @  < ~ ?d hb'Þ @  =  ?d ¨b'÷UK @  > € ?d èb'u†B• @  ?  ?d (c' 2cb @  @ ‚ ?d hc'‰£t¼ @  A ƒ ?d ¨c'íÔØ½ @  B „ ?d èc'oEÏc @  C … ?d (d'Á¬*& @  D † ?d hd'C==ø @  E ‡ ?d ¨d'¿ZrÞ @  F ˆ ?d èd'=Ëe @  G ‰ ?d (e'Qß[5 @  H Š ?d he'ÓNLë @  I ‹ ?d ¨e'·9àê @  J Œ ?d èe'5¨÷4 @  K  ?d (f'KA¿ @  L Ž ?d hf'ÚVa @  M  ?d ¨f'í{« @  N  ?d èf'†|lu @  O ‘ ?d (g'GÉl  @  P ’ ?d hg'ÅX{~ @  Q “ ?d ¨g'¡/× @  R ” ?d èg'#¾À¡ @  S • ?d (h' æZö @  T – ?d hh'"wM( @  U — ?d ¨h'Þ @  V ˜ ?d èh'\Ð @  W ™ ?d (i'0•+å @  X š ?d hi'²<; @  Y › ?d ¨i'Ös: @  Z œ ?d èi'Tâ‡ä @  [  ?d (j'~1o @  \ ž ?d hj'ü&± @  ] Ÿ ?d ¨j'ø2§ @  ^   ?d èj'z%y @  _ ¡ ?d (k'ª2 @  ` ¢ ?d hk'(£Â @  a £ ?d ¨k'LԹà @  b ¤ ?d èk'ÎE® @  c ¥ ?d (l'`¬KX @  d ¦ ?d hl'â=\† @  e § ?d ¨l'Z  @  f ¨ ?d èl'œË~ @  g © ?d (m'ðß:K @  h ª ?d hm'rN-• @  i « ?d ¨m'9” @  j ¬ ?d èm'”¨–J @  k ­ ?d (n'¾K Á @  l ® ?d hn'<Ú7 @  m ¯ ?d ¨n'¥íÕ @  n ° ?d èn''|  @  o ± ?d (o'æÉ Þ @  p ² ?d ho'dX @  q ³ ?d ¨o'/¶ @  r ´ ?d èo'‚¾¡ß @  s µ ?d (p'‹Ç ' @  t ¶ ?d hp' Vù @  u · ?d ¨p'õ1Sß @  v ¸ ?d èp'w D @  w ¹ ?d (q'´z4 @  x º ?d hq'™%mê @  y » ?d ¨q'ýRÁë @  z ¼ ?d èq'ÃÖ5 @  { ½ ?d (r'U `¾ @  | ¾ ?d hr'×±w` @  } ¿ ?d ¨r'#avg @  ~ À ?d èr'¡ða¹ @   Á ?d (s'<p @  €  ?d hs'¾ƒg¡ @   à ?d ¨s'ÚôË  @  ‚ Ä ?d ès'XeÜ~ @  ƒ Å ?d (t'öŒ9; @  „ Æ ?d ht't.å @  … Ç ?d ¨t'ˆzaà @  † È ?d èt' ëv @  ‡ É ?d (u'fÿH( @  ˆ Ê ?d hu'än_ö @  ‰ Ë ?d ¨u'€ó÷ @  Š Ì ?d èu'ˆä) @  ‹ Í ?d (v'(kR¢ @  Œ Î ?d hv'ªúE| @   Ï ?d ¨v'3Íh¶ @  Ž Ð ?d èv'±\h @   Ñ ?d (w'pé½ @   Ò ?d hw'òxhc @  ‘ Ó ?d ¨w'–Äb @  ’ Ô ?d èw'žÓ¼ @  “ Õ ?d (x'—ÆIë @  ” Ö ?d hx'W^5 @  • × ?d ¨x'é0 @  – Ø ?d èx'k¡Í @  — Ù ?d (y'µ8ø @  ˜ Ú ?d hy'…$/& @  ™ Û ?d ¨y'áSƒ' @  š Ü ?d èy'c”ù @  › Ý ?d (z'I!"r @  œ Þ ?d hz'˰5¬ @   ß ?d ¨z'Ï0!º @  ž à ?d èz'M¡6d @  Ÿ á ?d ({' @    â ?d h{'ƒß @  ¡ ã ?d ¨{'{ôªÞ @  ¢ ä ?d è{'ùe½ @  £ å ?d (|'WŒXE @  ¤ æ ?d h|'ÕO› @  ¥ ç ?d ¨|')z½ @  ¦ è ?d è|'«ëc @  § é ?d (}'Çÿ)V @  ¨ ê ?d h}'En>ˆ @  © ë ?d ¨}'!’‰ @  ª ì ?d è}'£ˆ…W @  « í ?d (~'‰k3Ü @  ¬ î ?d h~' ú$ @  ­ ï ?d ¨~'’Í È @  ® ð ?d è~'\ @  ¯ ñ ?d ('Ñéà @  ° ò ?d h'Sx  @  ± ó ?d ¨'uЀ''7¥ @  ² ô ?d è'ŒYn @  ³õ ?d @€'U@š) @  ´ö ?d €€'uµ˜× @  µ÷ ?d À€'+¶ÂÑ @  ¶ø ?d 'ûþN9 @  ·ù ?d @'Å3ë: @  ¸ú ?d €'åÆéÄ @  ¹û ?d À'#ÕPå @  ºü ?d ‚'¾‘ð$ @  »ý ?d @‚'‹§ñ° @  ¼þ ?d €‚'«RóN @  ½ÿ ?d À‚'ŸGæ÷ @  ¾!?d ƒ'Oj @  ¿!?d @ƒ'cbÐÞ @  À!?d €ƒ'C—Ò  @  Á!?d Àƒ'…„k @  Â!?d „'œÊ˜ @  Ã!?d @„'©ü™š @  Ä!?d €„'‰ ›d @  Å!?d À„'× Áb @  Æ!?d …'BMŠ @  Ç !?d @…'9è‰ @  È !?d €…'zêw @  É !?d À…'ßiSV @  Ê !?d †'B-ó— @  Ë !?d @†'wò @  Ì!?d €†'Wîðý @  Í!?d À†'l½È @  Î!?d ‡'¼õDÿ @  Ï!?d @‡'/™ß @  Ð!?d €‡'lÝâ @  Ñ!?d À‡'Édà @  Ò!?d ˆ'ý€èÞ @  Ó!?d @ˆ'ȶéJ @  Ô!?d €ˆ'èCë´ @  Õ!?d Àˆ'¶@±² @  Ö!?d ‰'f=Z @  ×!?d @‰'XŘY @  Ø!?d €‰'x0š§ @  Ù!?d À‰'¾##† @  Ú!?d Š'#gƒG @  Û!?d @Š'Q‚Ó @  Ü!?d €Š'6¤€- @  Ý!?d ÀŠ'@ @  Þ !?d ‹'@ ó @  ß!!?d @‹'Âb±  @  à"!?d €‹'â—³^ @  á#!?d À‹'$„  @  â$!?d€ Œ'üp @  %!?d @Œ'(úGÍ @  &!?d €Œ'E3 @  '!?d ÀŒ'“EäØ @  (!?d 'C h0 @  )!?d @'³r’I @  *!?d €'“‡· @  +!?d À'›&vì @  ,!?d Ž'bÖ- @   -!?d @Ž'ö,T @   .!?d €Ž'Öè.ª @   /!?d ÀŽ'(òí­ @   0!?d 'øºaE @   1!?d @'Å›< @  2!?d €'(0™Â @  3!?d À'0Ay @  4!?d '3îýË @  5!?d @'Ѳ @  6!?d €'ãdL @  7!?d À'x.¤§ @  8!?d ‘'¨f(O @  9!?d @‘'XÒ6 @  :!?d €‘'xìÐÈ @  ;!?d À‘'pM6“ @  !?d €’'=ƒnÕ @  ?!?d À’'®~ @  @!?d “'~6 ÷ @  A!?d @“'ŽI÷Ž @  B!?d €“'®¼õp @  C!?d À“'º { @   D!?d ”'ôùt @  !E!?d @”'ó‹  @  "F!?d €”'Ó~ó @  #G!?d À”'H4  @  $H!?d •'˜|,ð @  %I!?d @•'hÖ‰ @  &J!?d €•'HöÔw @  'K!?d À•'@W2, @  (L!?d –'Ý’í @  )M!?d @–'-lh” @  *N!?d €–' ™jj @  +O!?d À–'óƒ©m @  ,P!?d —'#Ë%… @  -Q!?d @—'Ó´ßü @  .R!?d €—'óAÝ @  /S!?d À—'VA¹ @  0T!?d ˜'b¾‰¤ @  1U!?d @˜'’ÁsÝ @  2V!?d €˜'²4q# @  3W!?d À˜')~ÐÈ @  4X!?d ™'ù6\  @  5Y!?d @™' I¦Y @  6Z!?d €™')¼¤§ @  7[!?d À™'!Bü @  8\!?d š'¼Yâ= @  9]!?d @š'L&D @  :^!?d €š'lÓº @  ;_!?d Àš'~àa @  <`!?d ›'ß6l‰ @  =a!?d @›'/I–ð @  >b!?d €›'¼” @  ?c!?d À›'½m— @  @d!?d œ' óž˜ @  Ae!?d @œ'üŒdá @  Bf!?d €œ'Üyf @  Cg!?d Àœ'G3Çô @  Dh!?d '—{K @  Ei!?d @'g±e @  Fj!?d €'Gñ³› @  Gk!?d À'OPUÀ @  Hl!?d ž'Òõ @  Im!?d @ž'"kx @  Jn!?d €ž'ž † @  Ko!?d Àž'ü„Î @  Lp!?d Ÿ',ÌBi @  Mq!?d @Ÿ'ܳ¸ @  Nr!?d €Ÿ'üFºî @  Os!uР'?d ÀŸ'YFbU @  Pt!?d  '(M¼3 @  Qu!?d X 'Ø2FJ @  Rv!?d ˜ 'øÇD´ @  Sw!?d Ø 'cå_ @  Tx!?d ¡'³Åi· @  Uy!?d X¡'Cº“Î @  Vz!?d ˜¡'cO‘0 @  W{!?d Ø¡'kîwk @  X|!?d ¢'öª×ª @  Y}!?d X¢'Õ-Ó @  Z~!?d ˜¢'& /- @  [!?d Ø¢'¨”u @  \€!?d £'xS @  ]!?d X£'ˆ,âä @  ^‚!?d ˜£'¨Ùà @  _ƒ!?d Ø£'ß @  `„!?d ¤'‘ì @  a…!?d X¤'õîg @  b†!?d ˜¤'Õ™ @  c‡!?d ؤ'NQµr @  dˆ!?d ¥'ž9š @  e‰!?d X¥'nfÃã @  fŠ!?d ˜¥'N“Á @  g‹!?d Ø¥'F2'F @  hŒ!?d ¦'Ûv‡‡ @  i!?d X¦'+ }þ @  jŽ!?d ˜¦' ü @  k!?d ئ'õæ¼ @  l!?d §'%®0ï @  m‘!?d X§'ÕÑÊ– @  n’!?d ˜§'õ$Èh @  o“!?d ا'P$Ó @  p”!?d ¨'dۜΠ@  q•!?d X¨'”¤f· @  r–!?d ˜¨'´QdI @  s—!?d ب'/Å¢ @  t˜!?d ©'ÿSIJ @  u™!?d X©',³3 @  vš!?d ˜©'/Ù±Í @  w›!?d Ø©''xW– @  xœ!?d ª'º<÷W @  y!?d Xª'JC . @  zž!?d ˜ª'j¶Ð @  {Ÿ!?d ت' õ  @  | !?d «'ÙSyã @  }¡!?d X«'),ƒš @  ~¢!?d ˜«' Ùd @  £!?d Ø«'ðŽHÌ @  €¤!?d ¬'éÀ»Ã @  ¥!?d X¬'¿Aº @  ‚¦!?d ˜¬'9JCD @  ƒ§!?d ج'¢â¯ @  „¨!?d ­'rHnG @  …©!?d X­'‚7”> @  †ª!?d ˜­'¢Â–À @  ‡«!?d Ø­'ªcp› @  ˆ¬!?d ®'7'ÐZ @  ‰­!?d X®'ÇX*# @  Š®!?d ˜®'ç­(Ý @  ‹¯!?d Ø®'·ëÚ @  Œ°!?d ¯'Éÿg2 @  ±!?d X¯'9€K @  Ž²!?d ˜¯'uŸµ @  ³!?d د'¼uG @  ´!?d °'«û¼ @  ‘µ!?d X°'òÔÅ @  ’¶!?d ˜°'Ò!; @  “·!?d ذ'Ik¢Ð @  ”¸!?d ±'™#.8 @  •¹!?d X±'i\ÔA @  –º!?d ˜±'I©Ö¿ @  —»!?d ر'A0ä @  ˜¼!?d ²'ÜL% @  ™½!?d X²',3j\ @  š¾!?d ˜²' Æh¢ @  ›¿!?d ز'Ÿ;‡h @  œÀ!?d ³'Os € @  Á!?d X³'¿ ñù @  žÂ!?d ˜³'Ÿùó @  ŸÃ!?d س'+ÿ  @   Ä!?d ´'2±ÿ @  ¡Å!?d X´'ÂÎz @  ¢Æ!?d ˜´'â;„ @  £Ç!?d Ø´'yq¦o @  ¤È!?d µ'©9*‡ @  ¥É!?d Xµ'YFÐþ @  ¦Ê!?d ˜µ'y³Ò @  §Ë!?d ص'q4[ @  ¨Ì!?d ¶'ìV”š @  ©Í!?d X¶')nã @  ªÎ!?d ˜¶'<Ül @  «Ï!?d ض'ÂÆ¯ @  ¬Ð!?d ·'Ž#ò @  ­Ñ!?d X·'âñÙ‹ @  ®Ò!?d ˜·'ÂÛu @  ¯Ó!?d Ø·'gÎ @  °Ô!?d ¸'SûÓ @  ±Õ!?d X¸'£„uª @  ²Ö!?d ˜¸'ƒqwT @  ³×!?d ظ';Ö¿ @  ´Ø!?d ¹'ÈsZW @  µÙ!?d X¹'8  . @  ¶Ú!?d ˜¹'ù¢Ð @  ·Û!?d ع'XD‹ @  ¸Ü!?d º'äJ @  ¹Ý!?d Xº'}c3 @  ºÞ!?d ˜º']–Í @  »ß!?d غ'>;æ @  ¼à!?d »'îsjþ @  ½á!?d X»' ‡ @  ¾â!?d ˜»'>ù’y @  ¿ã!?d Ø»'$økà @  Àä!?d ¼'=¶˜ï @  Áå!?d X¼'ÍÉb– @  Âæ!?d ˜¼'í<`h @  Ãç!?d ؼ'vvÁƒ @  Äè!?d ½'¦>Mk @  Åé!?d X½'VA· @  Æê!?d ˜½'v´µì @  Çë!?d ؽ'~S· @  Èì!?d ¾'ãQóv @  Éí!?d X¾'.  @  Êî!?d ˜¾'3Û ñ @  Ëï!?d ؾ'ÍÁÈö @  Ìð!?d ¿'‰D @  Íñ!?d X¿'íö¾g @  Îò!?d ˜¿'ͼ™ @uÐÀ'  Ïó!?d Ø¿'ƒ^ @  Ѐô!?d 0À'qsF  @  Ñ€õ!?d pÀ' ¼u @  Ò€ö!?d °À'¡ù¾‹ @  Ó€÷!?d ðÀ':³` @  Ô€ø!?d 0Á'êû“ˆ @  Õ€ù!?d pÁ'„iñ @  Ö€ú!?d °Á':qk @  ×€û!?d ðÁ'2ÐT @  Ø€ü!?d 0Â'¯”-• @  Ù€ý!?d pÂ'_ë×ì @  Ú€þ!?d °Â'Õ @  Û€ÿ!?d ðÂ'<`c @  Ü€"?d 0Ã'ì(‚‹ @  Ý€"?d pÃ'Wxò @  Þ€"?d °Ã'<¢z  @  ߀"?d ðÃ'ˆ¤… @  à€"?d 0Ä'‘êv @  á€"?d pÄ'a•Œq @  â€"?d€ °Ä'5£’) @  €"?d ðÄ'O¨{ë @  €"?d 0Å'Ÿà÷ @  € "?d pÅ'ªÖö— @  € "?d °Å'Š#ôi @  € "?d ðÅ'L0MH @  € "?d 0Æ'Ñtí‰ @  € "?d pÆ'ï¹HŠ @  €"?d °Æ'ÏLJt @   €"?d ðÆ'ôrž @   €"?d 0Ç'$Wþv @   €"?d pÇ'aÿâ @   €"?d °Ç'1”ý @   €"?d ðÇ'÷‡D= @  €"?d 0È'ÃxÈ  @  €"?d pÈ'PSà @  €"?d °È'páQ= @  €"?d ðÈ'.â ; @  €"?d 0É'þª‡Ó @  €"?d pÉ'Ëœ†G @  €"?d °É'ëi„¹ @  €"?d ðÉ'-z=˜ @  €"?d 0Ê'°>Y @  €"?d pÊ'Žó8Z @  €"?d °Ê'®:¤ @  €"?d ðÊ'â;’ @  € "?d 0Ë'ت·z @  €!"?d pË'휶î @  €""?d °Ë'Íi´ @  €#"?d ðË' z 1 @  €$"?d 0Ì'4þ> @  €%"?d pÌ'^Bm @   €&"?d °Ì'°«@“ @  !€'"?d ðÌ' @  "€("?d 0Í'>à–} @  #€)"?d pÍ' Ö—é @  $€*"?d °Í'+#• @  %€+"?d ðÍ'í0,6 @  &€,"?d 0Î'ptŒ÷ @  '€-"?d pÎ'N¹)ô @  (€."?d °Î'nL+  @  )€/"?d ðÎ'Uà @  *€0"?d 0Ï'…WŸ @  +€1"?d pÏ'°ažœ @  ,€2"?d °Ï'”œb @  -€3"?d ðÏ'V‡%C @  .€4"?d 0Ð'èY™ñ @  /€5"?d pÐ'{5 @  0€6"?d °Ð'[Àì @  1€7"?d ðÐ'ÃZê @  2€8"?d 0Ñ'Õ‹Ö @  3€9"?d pÑ'à½×– @  4€:"?d °Ñ'ÀHÕh @  5€;"?d ðÑ'[lI @  6€<"?d 0Ò'›̈ @  7€="?d pÒ'¥Òi‹ @  8€>"?d °Ò'…'ku @  9€?"?d ðÒ'Ó“R @  :€@"?d 0Ó'Ûóº @  ;€A"?d pÓ'6íò. @  <€B"?d °Ó'ðÐ @  =€C"?d ðÓ'Ð Iñ @  >€D"?d 0Ô'ÉEºþ @  ?€E"?d pÔ'å(? @  @€F"?d °Ô'ÅÝÁ @  A€G"?d ðÔ'›ÞXÇ @  B€H"?d 0Õ'K–Ô/ @  C€I"?d pÕ'~ Õ» @  D€J"?d °Õ'^U×E @  E€K"?d ðÕ'˜Fnd @  F€L"?d 0Ö'Î¥ @  G€M"?d pÖ';Ïk¦ @  H€N"?d °Ö':iX @  I€O"?d ðÖ' iQ² @  J€P"?d 0×'ð!ÝZ @  K€Q"?d p×'ÅÜÎ @  L€R"?d °×'åâÞ0 @  M€S"?d ð×'#ñg @  N€T"?d 0Ø'ë  @  O€U"?d pØ'„bpï @  P€V"?d °Ø'¤—r @  Q€W"?d ðØ'ú”( @  R€X"?d 0Ù'*ܤÿ @  S€Y"?d pÙ'ê¥k @  T€Z"?d °Ù'?§• @  U€["?d ðÙ'ù ´ @  V€\"?d 0Ú'dH¾u @  W€]"?d pÚ'Z…v @  X€^"?d °Ú'zpˆ @  Y€_"?d ðÚ'Ü”¾ @  Z€`"?d 0Û' Ü”V @  [€a"?d pÛ'9ê• @  \€b"?d °Û'—< @  ]€c"?d ðÛ'ß . @  ^€d"?d 0Ü'ÆBÝ @  _€e"?d pÜ'D(aA @  `€f"?d °Ü'dÝc¿ @  a€g"?d ðÜ':Þ9¹ @  b€h"?d 0Ý'ê–µQ @  c€i"?d pÝ'ß ´Å @  d€j"?d °Ý'ÿU¶; @  e€k"?d ðÝ'9F @  f€l"?d 0Þ'¤¯Û @  g€m"?d pÞ'šÏ Ø @  h€n"?d °Þ'º:& @  i€o"?d ðÞ'i0Ì @  j€p"?d 0ß'Q!¼$ @  k€q"?d pß'd½° @  l€r"?d uÐà'/°ß'Dâ¿N @  m€s"?d ðß'‚ño @  n€t"?d Hà'›UX™ @  o€u"?d ˆà'ª]ÖZ @  p€v"?d Èà'(ÌÁ„ @  q€w"?d á'$´ @  r€x"?d Há'¦‡j @  s€y"?d ˆá'1ÕÞ @  t€z"?d Èá'³D @  u€{"?d â'j‚> @  v€|"?d Hâ'è à @  w€}"?d ˆâ'tº½Ã @  x€~"?d Èâ'ö+ª @  y€"?d ã'ï€qž @  z€€"?d Hã'mf@ @  {€"?d ˆã'úCrô @  |€‚"?d Èã'xÒe* @  }€ƒ"?d ä'%8Ú @  ~€„"?d Hä'§/ @  €…"?d ˆä'ÊаÔ @  €€†"?d Èä'HA§  @  €‡"?d å'D›f: @  ‚€ˆ"?d Hå'Æ qä @  ƒ€‰"?d ˆå'QXeP @  „€Š"?d Èå'ÓÉrŽ @  …€‹"?d æ' |° @  †€Œ"?d Hæ'ˆžkn @  ‡€"?d ˆæ'7ÛM @  ˆ€Ž"?d Èæ'–¦Ì“ @  ‰€"?d ç'ÿ,oO @  Š€"?d Hç'}½x‘ @  ‹€‘"?d ˆç'êïl% @  Œ€’"?d Èç'h~{û @  €“"?d è'Y @  Ž€”"?d Hè'š’NÇ @  €•"?d ˆè'«šÀ @  €–"?d Èè') ×Ú @  ‘€—"?d é'%Ñê @  ’€˜"?d Hé'§@4 @  “€™"?d ˆé'0€ @  ”€š"?d Èé'²ƒ^ @  •€›"?d ê'kE ` @  –€œ"?d Hê'éÔ¾ @  —€"?d ˆê'u}« @  ˜€ž"?d Èê'÷ì¼C @  ™€Ÿ"?d ë'Ñ&C @  š€ "?d Hë'@1 @  ›€¡"?d ˆë'%) @  œ€¢"?d Èë'”ƒ2÷ @  €£"?d ì'ÉOo @  ž€¤"?d Hì'KÞxÙ @  Ÿ€¥"?d ˆì'kÐѪ @   €¦"?d Èì'éAÆt @  ¡€§"?d í'å›D @  ¢€¨"?d Hí'g š @  £€©"?d ˆí'ðX. @  ¤€ª"?d Èí'rÉð @  ¥€«"?d î'«Î @  ¦€¬"?d Hî')ž  @  §€­"?d ˆî'µ7º3 @  ¨€®"?d Èî'7¦­í @  ©€¯"?d ï'^,1 @  ª€°"?d Hï'ܽï @  «€±"?d ˆï'Kï [ @  ¬€²"?d Èï'É~… @  ­€³"?d ð'3"È @  ®€´"?d Hð'±³ @  ¯€µ"?d ˆð'€»‘Õ @  °€¶"?d Èð'*†  @  ±€·"?d ñ'ðG; @  ²€¸"?d Hñ'ŒaPå @  ³€¹"?d ˆñ'3DQ @  ´€º"?d Èñ'™¢S @  µ€»"?d ò'@d]± @  ¶€¼"?d Hò'ÂõJo @  ·€½"?d ˆò'^\úL @  ¸€¾"?d Èò'ÜÍí’ @  ¹€¿"?d ó'Ø bƒ @  º€À"?d Hó'Z1u] @  »€Á"?d ˆó'Ícaé @  ¼€Â"?d Èó'Oòv7 @  ½€Ã"?d ô'>+Ç @  ¾€Ä"?d Hô'¯< @  ¿€Å"?d ˆô'¦“ø @  À€Æ"?d Èô'œ7„& @  Á€Ç"?d õ'íE @  €È"?d Hõ'|RÈ @  ÀÉ"?d ˆõ'….F| @  Ä€Ê"?d Èõ'¿Q¢ @  Å€Ë"?d ö'Þy_œ @  Æ€Ì"?d Hö'\èHB @  Ç€Í"?d ˆö'ÀAøa @  È€Î"?d Èö'BÐï¿ @  É€Ï"?d ÷'+ZLc @  Ê€Ð"?d H÷'©Ë[½ @  Ë€Ñ"?d ˆ÷'>™O  @  Ì€Ò"?d È÷'¼X× @  Í€Ó"?d ø'Ìuz5 @  ΀Ô"?d Hø'Nämë @  Ï€Õ"?d ˆø'ìã( @  ЀÖ"?d Èø'ý}ôö @  Ñ€×"?d ù'ñ§5Æ @  Ò€Ø"?d Hù's6" @  Ó€Ù"?d ˆù'äd6¬ @  Ô€Ú"?d Èù'fõ!r @  Õ€Û"?d ú'¿3/L @  Ö€Ü"?d Hú'=¢8’ @  ×€Ý"?d ˆú'¡ ˆ± @  Ø€Þ"?d Èú'#šŸo @  Ù€ß"?d û'×§o @  Ú€à"?d Hû'U6± @  Û€á"?d ˆû'Âd @  Ü€â"?d Èû'@õÛ @  Ý€ã"?d ü'9L+ @  Þ€ä"?d Hü'Ÿ¨[õ @  ߀å"?d ˆü'¿¦ò† @  à€æ"?d Èü'=7åX @  á€ç"?d ý'1í$h @  â€è"?d€ Hý'5*› @  €é"?d ˆý'C9Ç’ @  €ê"?d Èý'Á¨ÐL @  €ë"?d þ'Ý'%Ÿ @  €ì"?d Hþ'_¶2A @  €í"?d ˆþ' ­Ý @  €î"?d Èþ'<ÊÆ @  €ï"?d ÿ'(6` @  €ð"?d Hÿ'ª•!¾ @   €ñ"?d ˆÿ'øŽÎç @   €uÐ(ò"?d Èÿ'>Xv @   ó"?d (G+Q @   ô"?d `(„Ö< @   õ"?d  (ÖÍÓÖ @   ö"?d à(T\Ä @   ÷"?d (;•d¢ @   ø"?d `(¹s| @   ù"?d  (ëœ% @   ú"?d à(iŽ‹û @   û"?d (u~( @   ü"?d `(÷iö @   ý"?d  (¥‹†¯ @   þ"?d à('‘q @   ÿ"?d (d@„ @   #?d `( õWZ @   #?d  (_î¸ @   #?d à(Ý¯Ý @   #?d (Eú À @   #?d `(Çk @   #?d  (•pñG @   #?d à(áæ™ @   #?d (i.aƒ @   #?d `(ë¿v] @  !  #?d  (¹¤™ @  "  #?d à(;5ŽÚ @  #  #?d ('º{  @  $  #?d `(¥+l× @  %  #?d  (÷0ƒŽ @  & #?d à(u¡”P @  ' #?d (Ò™hö @  ( #?d `(P( @  ) #?d  (q @  * #?d à(€‚‡¯ @  + #?d (5¶^  @  , #?d `(·'I~ @  - #?d  (å<¦' @  . #?d à(g­±ù @  / #?d (dS @  0 #?d ` (Šõ @  1 #?d   (ØîéÔ @  2 #?d à (Zþ  @  3 #?d (Fð Ù @  4 #?d ` (Äa @  5 #?d   (–zó^ @  6 #?d à (ëä€ @  7 #?d (.d!ú @  8  #?d ` (¬õ6$ @  9 !#?d   (þîÙ} @  : "#?d à (|Σ @  ; ##?d (äúh¾ @  < $#?d ` (fk` @  = %#?d   (4p9 @  > &#?d à (¶á‡ç @  ? '#?d (f)o @  @ (#?d ` (丱 @  A )#?d   (¶£þè @  B *#?d à (42é6 @  C +#?d ((½å @  D ,#?d `(ª, ; @  E -#?d  (ø7äb @  F .#?d à(z¦ó¼ @  G /#?d (Ýž @  H 0#?d `(_Ä @  I 1#?d  ( ÷ @  J 2#?d à(…àC @  K 3#?d (° ã @  L 4#?d `(2= @  M 5#?d  (`ñd @  N 6#?d à(â‹æº @  O 7#?d (BF @  P 8#?d `(ÓQÎ @  Q 9#?d  (]Ⱦ— @  R :#?d à(ßY©I @  S ;#?d (ÃÖ\š @  T <#?d `(AGKD @  U =#?d  (\¤ @  V >#?d à(‘ͳà @  W ?#?d ([c¨ @  X @#?d `(Ùƒtv @  Y A#?d  (‹˜›/ @  Z B#?d à( Œñ @  [ C#?d (‘Œ*ì @  \ D#?d `(=2 @  ] E#?d  (AÒk @  ^ F#?d à(×ŵ @  _ G#?d (½XB¯ @  ` H#?d `(?ÉUq @  a I#?d  (mÒº( @  b J#?d à(ïC­ö @  c K#?d (óÌX% @  d L#?d `(q]Oû @  e M#?d  (#F ¢ @  f N#?d à(¡×·| @  g O#?d (ïKÚ @  h P#?d `(„~\ @  i Q#?d  (Öe³] @  j R#?d à(Tô¤ƒ @  k S#?d (áÀ}Œ @  l T#?d `(cQjR @  m U#?d  (1J…  @  n V#?d à(³Û’Õ @  o W#?d (Ü2 @  p X#?d `(^ƒ%¡ @  q Y#?d  ( ˜Êø @  r Z#?d à(Ž Ý& @  s [#?d (’†(õ @  t \#?d `(?+ @  u ]#?d  (B Ðr @  v ^#?d à(ÀǬ @  w _#?d (úÖ @  x `#?d `(xƒ @  y a#?d  (*˜úQ @  z b#?d à(¨ í @  { c#?d (0ŒK’ @  | d#?d `(²\L @  } e#?d  (à³ @  ~ f#?d à(b—¤Ë @   g#?d (Q r @  € h#?d `(Ó˜¬ @   i#?d  (ƒíõ @  ‚ j#?d à(ú+ @  ƒ k#?d (ø @  „ l#?d `( & @  … m#?d  (Ï÷ @  † n#?d à(M†à¡ @  ‡ o#?d (ê¾ @  ˆ p#?d `(h/ Ù @  ‰ q#?d  (:4ä€uÐ ( @  Š r#?d à(b/‹ @  ‹s#?d 8 (q¢¤ÿ @  Œt#?d x (ó3³! @  u#?d ¸ (¡(\x @  Žv#?d ø (#¹K¦ @  w#?d 8!(Lpë  @  x#?d x!(ÎáüÒ @  ‘y#?d ¸!(œú‹ @  ’z#?d ø!(kU @  “{#?d 8"(äñ† @  ”|#?d x"(€uæX @  •}#?d ¸"(Òn  @  –~#?d ø"(Pÿß @  —#?d 8#(‡æš& @  ˜€#?d x#(wø @  ™#?d ¸#(Wlb¡ @  š‚#?d ø#(Õýu @  ›ƒ#?d 8$(MxÓb @  œ„#?d x$(Ïéļ @  …#?d ¸$(ò+å @  ž†#?d ø$(c<; @  Ÿ‡#?d 8%(a¬»! @   ˆ#?d x%(ã=¬ÿ @  ¡‰#?d ¸%(±&C¦ @  ¢Š#?d ø%(3·Tx @  £‹#?d 8&(/8¡« @  ¤Œ#?d x&(­©¶u @  ¥#?d ¸&(ÿ²Y, @  ¦Ž#?d ø&(}#Nò @  §#?d 8'(Ú²T @  ¨#?d x'(XХР@  ©‘#?d ¸'( ‘JÓ @  ª’#?d ø'(ˆ]  @  «“#?d 8((=4„ @  ¬”#?d x((¿¥“Ü @  ­•#?d ¸((í¾|… @  ®–#?d ø((o/k[ @  ¯—#?d 8)(æËñ @  °˜#?d x)(‚wÜ/ @  ±™#?d ¸)(Ðl3v @  ²š#?d ø)(Rý$¨ @  ³›#?d 8*(NrÑ{ @  ´œ#?d x*(ÌãÆ¥ @  µ#?d ¸*(žø)ü @  ¶ž#?d ø*(i>" @  ·Ÿ#?d 8+(&æûX @  ¸ #?d x+(¤wì† @  ¹¡#?d ¸+(ölß @  º¢#?d ø+(tý @  »£#?d 8,(ìx² @  ¼¤#?d x,(né¥Â @  ½¥#?d ¸,(<òJ› @  ¾¦#?d ø,(¾c]E @  ¿§#?d 8-(n«ÜÍ @  À¨#?d x-(ì:Ë @  Á©#?d ¸-(¾!$J @  Âª#?d ø-(<°3” @  Ã«#?d 8.( ?ÆG @  Ä¬#?d x.(¢®Ñ™ @  Å­#?d ¸.(ðµ>À @  Æ®#?d ø.(r$) @  Ç¯#?d 8/(ÕÕ¸ @  È°#?d x/(WÂf @  É±#?d ¸/(–-? @  Ê²#?d ø/(‡:á @  Ë³#?d 80(¸ÓA @  Ì´#?d x0(:ƒÄŸ @  Íµ#?d ¸0(h˜+Æ @  Î¶#?d ø0(ê < @  Ï·#?d 81(…Àœ² @  Ð¸#?d x1(Q‹l @  Ñ¹#?d ¸1(UJd5 @  Òº#?d ø1(×Ûsë @  Ó»#?d 82(ËT†8 @  Ô¼#?d x2(IÅ‘æ @  Õ½#?d ¸2(Þ~¿ @  Ö¾#?d ø2(™Oia @  ×¿#?d 83(S¹  @  ØÀ#?d x3(Ñ®Ô @  ÙÁ#?d ¸3(ƒA @  ÚÂ#?d ø3(‹VS @  ÛÃ#?d 84(™ðN @  ÜÄ#?d x4(Ÿç @  ÝÅ#?d ¸4(I„É @  ÞÆ#?d ø4(Ë @  ßÇ#?d 85(µÚ˜  @  àÈ#?d x5(7KÓ @  áÉ#?d ¸5(eP`Š @  âÊ#?d€ ø5(“kò @  Ë#?d 86(nÌÖ @  Ì#?d x6(ì]ÁÖ @  Í#?d ¸6({Õb @  Î#?d ø6(ùžÂ¼ @  Ï#?d 87(a` @  Ð#?d x7(…v¾ @  Ñ#?d ¸7(Ž,Æ @  Ò#?d ø7( ½ÑC @   Ó#?d 88(|Àó¡ @   Ô#?d x8(þQä @   Õ#?d ¸8(iðË @   Ö#?d ø8(ë’ç @   ×#?d 89(çH&% @  Ø#?d x9(eÙ1û @  Ù#?d ¸9(TÑ¿8 @  Ú#?d ø9(Ö@¨æ @  Û#?d 8:(†¦Ø @  Ü#?d x:(± @  Ý#?d ¸:(E¥² @  Þ#?d ø:(˜Ô²l @  ß#?d 8;(lé(l @  à#?d x;(îx?² @  á#?d ¸;(rÑ‘ @  â#?d ø;(ð@˜O @  ã#?d 8<(­ŒÅ¿ @  ä#?d x<(/Òa @  å#?d ¸<(¸OÆÕ @  æ#?d ø<(:ÞÑ  @  ç#?d 8=(6; @  è#?d x=(´•å @  é#?d ¸=(”›®– @   ê#?d ø=( ¹H @  !ë#?d 8>(ÏÌ·v @  "ì#?d x>(M] ¨ @  #í#?d ¸>(Ú´ @  $î#?d ø>(Xž£Â @  %ï#?d 8?(1 @  &ð#?d x?(³…À @  'ñ#?duÐ@(7 ¸?(/,§ã @  (ò#?d ø?(­½°= @  )ó#?d P@(*“¤þ @  *ô#?d @( f¦ @  +õ#?d Ð@(?P§” @  ,ö#?d A(ï+| @  -÷#?d PA(±qz @  .ø#?d A(‘îs„ @  /ù#?d ÐA(‚èg @  0ú#?d B(ŸÆH¦ @  1û#?d PB(YÕñ‡ @  2ü#?d B(y óy @  3ý#?d ÐB(Lòí @  4þ#?d C(œ^~ @  5ÿ#?d PC(”BT* @  6$?d C(´·VÔ @  7$?d ÐC(Šzó× @  8$?d D(“4Ø @  9$?d PD(U'¹ù @  :$?d D(uÒ» @  ;$?d ÐD(@亓 @  <$?d E(¬6{ @  =$?d PE(ίl} @  >$?d E(îZnƒ @  ? $?d ÐE(Â7ÔB @  @ $?d F(_stƒ @  A $?d PF(™`Í¢ @  B $?d F(¹•Ï\ @  C $?d ÐF(Œ£ÎÈ @  D$?d G(\ëB  @  E$?d PG(g¸zÊ @  F$?d G(GMx4 @  G$?d ÐG(y€Ý7 @  H$?d H(MQ* @  I$?d PH(‹lè  @  J$?d H(«™êõ @  K$?d ÐH(ž¯ëa @  L$?d I(Nçg‰ @  M$?d PI(ä= @  N$?d I(0?q @  O$?d ÐI(£}¤’ @  P$?d J(>9S @  Q$?d PJ(ø*½r @  R$?d J(Øß¿Œ @  S$?d ÐJ(íé¾ @  T$?d K(=¡2ð @  U$?d PK(›E3Æ @  V $?d K(»°18 @  W!$?d ÐK(…}”; @  X"$?d L(œ3g4 @  Y#$?d PL(Z Þ @  Z$$?d L(zÕÜë @  [%$?d ÐL(OãÝ @  \&$?d M(¦lB @  ] '$?d PM(øo×D @  ^ ($?d M(ØšÕº @  _ )$?d ÐM(Zðié @  ` *$?d N(Ç´É( @  a +$?d PN(§p  @  b ,$?d N(!Rr÷ @  c -$?d ÐN(dsc @  d .$?d O(Ä,ÿ‹ @  e /$?d PO(ÿÇa @  f 0$?d O(ߊş @  g 1$?d ÐO(áG`œ @  h 2$?d P(_™Ü. @  i 3$?d PP(™Še @  j 4$?d P(¹gñ @  k 5$?d ÐP(ŒIfe @  l 6$?d Q(\ê @  m 7$?d PQ(°‹ @  n 8$?d Q("÷²u @  o 9$?d ÐQ(±›)– @  p :$?d R(,߉W @  q ;$?d PR(êÌ0v @  r <$?d R(Ê92ˆ @  s =$?d ÐR(ÿ3 @  t >$?d S(/G¿ô @  u ?$?d PS(yó«Ó @  v @$?d S(Y©- @  w A$?d ÐS(gË . @  x B$?d T(~…ÿ! @  y C$?d PT(¸–F @  z D$?d T(˜cDþ @  { E$?d ÐT(­UEj @  | F$?d U(}É‚ @  } G$?d PU(#“„ @  ~ H$?d U(ë‘z @   I$?d ÐU(ÌЊ @  € J$?d V(Q”»K @   K$?d PV(—‡j @  ‚ L$?d V(·r” @  ƒ M$?d ÐV(‚D @  „ N$?d W(R è @  … O$?d PW(i_µ @  † P$?d W(Iª·ü @  ‡ Q$?d ÐW(wgÿ @  ˆ R$?d X(C˜žâ @  ‰ S$?d PX(…‹'à @  Š T$?d X(¥~%= @  ‹ U$?d ÐX(H$© @  Œ V$?d Y(@¨A @   W$?d PY(òG @  Ž X$?d Y(>öð¹ @   Y$?d ÐY(­škZ @   Z$?d Z(0ÞË› @  ‘ [$?d PZ(öÍrº @  ’ \$?d Z(Ö8pD @  “ ]$?d ÐZ(ãqÐ @  ” ^$?d [(3Fý8 @  • _$?d P[(•¢ü @  – `$?d [(µWþð @  — a$?d Ð[(‹š[ó @  ˜ b$?d \(’Ô¨ü @  ™ c$?d P\(TÇÝ @  š d$?d \(t2# @  › e$?d Ð\(A· @  œ f$?d ](‘Lž_ @   g$?d P](ÏOÄY @  ž h$?d ](ïºÆ§ @  Ÿ i$?d Ð](mÐzô @    j$?d ^(ð”Ú5 @  ¡ k$?d P^(6‡c @  ¢ l$?d ^(raê @  £ m$?d Ð^(#D`~ @  ¤ n$?d _(ó ì– @  ¥ o$?d P_(È_Ô| @  ¦ p$?d _(èªÖ‚ @  uÐ`(§ q$?d Ð_(Ögs @  ¨ r$?d (`(hŸÆ @  © s$?d h`(®Œ8 @  ª t$?d ¨`(Žy}Æ @  « u$?d è`(»O|R @  ¬ v$?d (a(kðº @  ­ w$?d ha(5ª¼ @  ® x$?d ¨a(ñ¨B @  ¯ y$?d èa(†3¡ @  ° z$?d (b(Ù“` @  ± {$?d hb(ÝÊ*A @  ² |$?d ¨b(ý?(¿ @  ³ }$?d èb(È )+ @  ´ ~$?d (c(A¥Ã @  µ $?d hc(S3åv @  ¶ €$?d ¨c(sÆçˆ @  · $?d èc(M B‹ @  ¸ ‚$?d (d(TE±„ @  ¹ ƒ$?d hd(’V¥ @  º „$?d ¨d(²£ [ @  » …$?d èd(‡• Ï @  ¼ †$?d (e(W݇' @  ½ ‡$?d he( ÞÝ! @  ¾ ˆ$?d ¨e()+ßß @  ¿ ‰$?d èe(Fe @  À Š$?d (f(˜Åß @  Á ‹$?d hf(^|þ @   Œ$?d ¨f(~ä~ @  à $?d èf(KÒ” @  Ä Ž$?d (g(›šó| @  Å $?d hg( ÉË– @  Æ $?d ¨g(€<Éh @  Ç ‘$?d èg(¾ñlk @  È ’$?d (h(Šàv @  É “$?d hh(LYW @  Ê ”$?d ¨h(lè[© @  Ë •$?d èh(YÞZ= @  Ì –$?d (i(‰–ÖÕ @  Í —$?d hi(וŒÓ @  Î ˜$?d ¨i(÷`Ž- @  Ï ™$?d èi(d Î @  Ð š$?d (j(ùHµ @  Ñ ›$?d hj(?[ . @  Ò œ$?d ¨j(®Ð @  Ó $?d èj(*˜D @  Ô ž$?d (k(úЃ¬ @  Õ Ÿ$?d hk(\4‚š @  Ö  $?d ¨k(|Á€d @  × ¡$?d èk(B %g @  Ø ¢$?d (l([BÖh @  Ù £$?d hl(QoI @  Ú ¤$?d ¨l(½¤m· @  Û ¥$?d èl(ˆ’l# @  Ü ¦$?d (m(XÚàË @  Ý §$?d hm(ÙºÍ @  Þ ¨$?d ¨m(&,¸3 @  ß ©$?d èm(¤F` @  à ª$?d (n(9¤¡ @  á «$?d hn(ÿ€ @  â ¬$?d€ ¨n(£è~ @   ­$?d èn(ÊÔ¡Ã @   ®$?d (o(œ-+ @   ¯$?d ho(ä†î, @   °$?d ¨o(ÄsìÒ @   ±$?d èo(4 « @   ²$?d (p(ŠÒª @   ³$?d hp(‚sLB @   ´$?d ¨p(¢†N¼ @   µ$?d èp(Rù´Å @   ¶$?d (q(‚±8- @   ·$?d hq(û™Æ @   ¸$?d ¨q(9›8 @   ¹$?d èq(ÉqaA @   º$?d (r(T5Á€ @   »$?d hr(ñ5; @   ¼$?d ¨r(ÑÀÅ @   ½$?d èr(!¿á¼ @   ¾$?d (s(ñ÷mT @   ¿$?d hs(b ‚ž @   À$?d ¨s(Bÿ€` @   Á$?d ès(²€z @   Â$?d (t(«Î‰ @   Ã$?d ht(£ooM @   Ä$?d ¨t(ƒšm³ @   Å$?d èt(så—Ê @   Æ$?d (u(£­" @   Ç$?d hu(8çºÉ @   È$?d ¨u(¸7 @   É$?d èu(èmBN @   Ê$?d (v(u)â @   Ë$?d hv(Á/„ @   Ì$?d ¨v(áÚz @  ! Í$?d èv(¥å @  " Î$?d (w(Áíië @  # Ï$?d hw(?÷ªì @  $ Ð$?d ¨w(¨ @  % Ñ$?d èw(ï}Rk @  & Ò$?d (x(Û‚Þv @  ' Ó$?d hx(Ó#8- @  ( Ô$?d ¨x(óÖ:Ó @  ) Õ$?d èx(©Àª @  * Ö$?d (y(ÓáLB @  + ×$?d hy(H«í© @  , Ø$?d ¨y(h^ïW @  - Ù$?d èy(˜!. @  . Ú$?d (z(eµï @  / Û$?d hz( emT @  0 Ü$?d ¨z(€oª @  1 Ý$?d èz(pï•Ó @  2 Þ$?d ({( §; @  3 ß$?d h{(à ãà @  4 à$?d ¨{(ãÿá @  5 á$?d è{(€g @  6 â$?d (|( Îèh @  7 ã$?d h|(o3 @  8 ä$?d ¨|("š Í @  9 å$?d è|(Òåö´ @  : æ$?d (}(­z\ @  ; ç$?d h}(™çÛ· @  < è$?d ¨}(¹ÙI @  = é$?d è}(Im#0 @  > ê$?d (~(Ô)ƒñ @  ? ë$?d h~(Î(zh @  @ ì$?d ¨~(îÝx– @  A í$?d è~(¢‚ï @  B î$?d ((Îê @  C ï$?d h(0ðÍ @  D ð$?d ¨(uЀ('Ïþ @  E ñ$?d è(Ù½éR @  Fò$?d @€(· & @  Gó$?d €€(Æø] @  Hô$?d À€(ŸWïƒ @  Iõ$?d (=ñŽÌ @  Jö$?d @(¿`™ @  K÷$?d €(†N-Ù @  Lø$?d À(ß: @  Mù$?d ‚(ëuwa @  Nú$?d @‚(iä`¿ @  Oû$?d €‚(n€­$ @  Pü$?d À‚(ìºú @  Qý$?d ƒ(N·Ûµ @  Rþ$?d @ƒ(Ì&Ìk @  Sÿ$?d €ƒ(Ÿ7 @  T%?d Àƒ( Á @  U%?d „(v/>i @  V%?d @„(ô¾)· @  W%?d €„(^{ÚÌ @  X%?d À„(ÜêÍ @  Y%?d …(~L¬] @  Z%?d @…(üÝ»ƒ @  [%?d €…(ÅóH @  \%?d À…(Gb– @  ] %?d †(¨ÈUð @  ^ %?d @†(*YB. @  _ %?d €†(<;¨ @  ` %?d À†(¾ª¿Û @  a %?d ‡( Þ” @  b%?d @‡(žÉJ @  c%?d €‡(Âãm @  d%?d À‡(@r³ @  e%?d ˆ(ci  @  f%?d @ˆ(„ò~× @  g%?d €ˆ(.7¬ @  h%?d Àˆ(¬¦šr @  i%?d ‰(û= @  j%?d @‰(Œ‘ìã @  k%?d €‰(µ¿X( @  l%?d À‰(7.Oö @  m%?d Š(Ø„ @  n%?d @Š(ZN @  o%?d €Š(]qØÕ @  p%?d ÀŠ(ßàÏ  @  q%?d ‹(}F®D @  r%?d @‹(ÿ×¹š @  s%?d €‹(>Va @  t %?d À‹(¼A¿ @  u!%?d Œ(×/_ @  v"%?d @Œ(U¾HÉ @  w#%?d €Œ(ÿ{»² @  x$%?d ÀŒ(}ê¬l @  y%%?d (ßLÍ# @  z&%?d @(]ÝÚý @  {'%?d €(dón6 @  |(%?d À(æbyè @  })%?d Ž( È4Ž @  ~*%?d @Ž(‹Y#P @  +%?d €Ž(ÐjÿØ @  €,%?d ÀŽ(Rûè @  -%?d (ð]‰I @  ‚.%?d @(rÌž— @  ƒ/%?d €(.²H° @  „0%?d À(¬#_n @  …1%?d (`{ @  †2%?d @(â‚¥ @  ‡3%?d €(HGêÞ @  ˆ4%?d À(ÊÖý @  ‰5%?d ‘(hpœO @  Š6%?d @‘(êá‹‘ @  ‹7%?d €‘(ÓÏ?Z @  Œ8%?d À‘(Q^(„ @  9%?d ’(¾ôeâ @  Ž:%?d @’(%?d @“(™§Þè @  “?%?d €“(¨>$ @  ”@%?d À“(*¯3Ü @  •A%?d ”(A-t @  –B%?d @”(Þ:ª @  —C%?d €”(i[ÉÑ @  ˜D%?d À”(ëÊÞ @  ™E%?d •(Il¿@ @  šF%?d @•(Ëý¨ž @  ›G%?d €•(òÓU @  œH%?d À•(pB ‹ @  I%?d –(ŸèFí @  žJ%?d @–(yQ3 @  ŸK%?d €–( » @   L%?d À–(‰Š¬Æ @  ¡M%?d —(+,͉ @  ¢N%?d @—(©½ÚW @  £O%?d €—(õà p @  ¤P%?d À—(wR® @  ¥Q%?d ˜(1Cz @  ¦R%?d @˜(³ÒmÊ @  §S%?d €˜(ž± @  ¨T%?d À˜(›†‰o @  ©U%?d ™(9 è  @  ªV%?d @™(»±ÿþ @  «W%?d €™(‚ŸK5 @  ¬X%?d À™(\ë @  ­Y%?d š(ï¤ @  ®Z%?d @š(m5S @  ¯[%?d €š(jQËÈ @  °\%?d Àš(èÀÜ @  ±]%?d ›(Jf½Y @  ²^%?d @›(È÷ª‡ @  ³_%?d €›( >E| @  ´`%?d À›(‹¯R¢ @  µa%?d œ(àL  @  ¶b%?d @œ(bž[Ô @  ·c%?d €œ(È[¨¯ @  ¸d%?d Àœ(JÊ¿q @  ¹e%?d (èlÞ> @  ºf%?d @(jýÉà @  »g%?d €(SÓ}+ @  ¼h%?d À(ÑBjõ @  ½i%?d ž(>è'“ @  ¾j%?d @ž(¼y0M @  ¿k%?d €ž(Üô @  Àl%?d Àž(†Ë* @  Ám%?d Ÿ($+ªe @  Ân%?d @Ÿ(¦º½» @  Ão%?d €Ÿ(úÄkœ @  Äp%uР(?d ÀŸ(xU|B @  Åq%?d  ({°Oƒ @  Ær%?d X (ù!X] @  Çs%?d ˜ (Sä«& @  Èt%?d Ø (Ñu¼ø @  Éu%?d ¡(sÓÝ· @  Êv%?d X¡(ñBÊi @  Ëw%?d ˜¡(Èl~¢ @  Ìx%?d Ø¡(Jýi| @  Íy%?d ¢(¥W$ @  Îz%?d X¢('Æ3Ä @  Ï{%?d ˜¢( ¢þ_ @  Ð|%?d Ø¢(¢3é @  Ñ}%?d £(•ˆÎ @  Ò~%?d X£(‚Ÿ @  Ó%?d ˜£(®[1h @  Ô€%?d Ø£(,Ê&¶ @  Õ%?d ¤(Gj8 @  Ö‚%?d X¤(Åû/À @  ×ƒ%?d ˜¤(o>Ü» @  Ø„%?d ؤ(í¯Ëe @  Ù…%?d ¥(O ª* @  Ú†%?d X¥(͘½ô @  Û‡%?d ˜¥(ô¶ ? @  Üˆ%?d Ø¥(v'á @  Ý‰%?d ¦(™S‡ @  ÞŠ%?d X¦(DY @  ß‹%?d ˜¦( ~®r @  àŒ%?d ئ(﹬ @  á%?d §(-IØã @  âŽ%?d€ X§(ÛÓ› @  %?d ˜§(f$M• @  %?d ا(äµZK @  ‘%?d ¨(gíÀ @  ’%?d X¨(å|× @  “%?d ˜¨( {à @  ”%?d ب(šl @  •%?d ©(oŽR( @  –%?d X©(íEö @   —%?d ˜©(x Ð @   ˜%?d Ø©(“é @   ™%?d ª(¹ «… @   š%?d Xª(;›¼[ @   ›%?d ˜ª(_ìZ @  œ%?d ت(Ý}„ @  %?d «(ÈQ @  ž%?d X«(žY @  Ÿ%?d ˜«(šÙ™ @   %?d Ø«(HG @  ¡%?d ¬(¶¡ö @  ¢%?d X¬(40áÜ @  £%?d ˜¬(PGMÝ @  ¤%?d ج(ÒÖZ @  ¥%?d ­(¾Âd6 @  ¦%?d X­(' @  )·%?d ˜±(:Y[ @  *¸%?d ر(¸ÈLß @  +¹%?d ²(’+úT @  ,º%?d X²(ºíŠ @  -»%?d ˜²(tÍA‹ @  .¼%?d ز(ö\VU @  /½%?d ³(7éV€ @  0¾%?d X³(µxA^ @  1¿%?d ˜³(A¨@Y @  2À%?d س(Ã9W‡ @  3Á%?d ´(mв @  4Â%?d X´(ïA¥ @  5Ã%?d ˜´(‹6  @  6Ä%?d Ø´( §Ã @  7Å%?d µ(e³ ö @  8Æ%?d Xµ(ç"7( @  9Ç%?d ˜µ(Ex @  :È%?d ص(™ÔoÐ @  ;É%?d ¶(³7Ù[ @  <Ê%?d X¶(1¦Î… @  =Ë%?d ˜¶(UÑb„ @  >Ì%?d ض(×@uZ @  ?Í%?d ·(©ôT­ @  @Î%?d X·(+eCs @  AÏ%?d ˜·(²Rn¹ @  BÐ%?d Ø·(0Ãyg @  CÑ%?d ¸(³›ã0 @  DÒ%?d X¸(1 ôî @  EÓ%?d ˜¸(U}Xï @  FÔ%?d ظ(×ìO1 @  GÕ%?d ¹(»øq @  HÖ%?d X¹(9ifÚ @  I×%?d ˜¹(Å)ü @  JØ%?d ع(GŸ>" @  KÙ%?d º(m|ˆ© @  LÚ%?d Xº(ïíŸw @  MÛ%?d ˜º(‹š3v @  NÜ%?d غ( $¨ @  OÝ%?d »(Ⱦ$} @  PÞ%?d X»(J/3£ @  Qß%?d ˜»(N¯'µ @  Rà%?d Ø»(Ì>0k @  Sá%?d ¼(b×Õ. @  Tâ%?d X¼(àFÂð @  Uã%?d ˜¼(„1nñ @  Vä%?d ؼ( y/ @  Wå%?d ½(j´G @  Xæ%?d X½(è%PÄ @  Yç%?d ˜½(Bâ @  Zè%?d ؽ(–Ó< @  [é%?d ¾(¼0¾· @  \ê%?d X¾(>¡©i @  ]ë%?d ˜¾(ZÖh @  ^ì%?d ؾ(ØG¶ @  _í%?d ¿(ô5Ó @  `î%?d X¿(Še"  @  aï%?d ˜¿(RÇ @uÐÀ(  bð%?d Ø¿(ìCke @  c€ñ%?d 0À(?,} @  d€ò%?d pÀ(½…;£ @  e€ó%?d °À(Ùò—¢ @  f€ô%?d ðÀ([c€| @  g€õ%?d 0Á(7w¾I @  h€ö%?d pÁ(µæ©— @  i€÷%?d °Á(Iæ± @  j€ø%?d ðÁ(Ëño @  k€ù%?d 0Â(áóGä @  l€ú%?d pÂ(cbP: @  m€û%?d °Â(ü; @  n€ü%?d ðÂ(…„ëå @  o€ý%?d 0Ã(D1ë0 @  p€þ%?d pÃ(Æ üî @  q€ÿ%?d °Ã(âóÉR @  r€&?d ðÃ(`bÞŒ @  s€&?d 0Ä(΋;É @  t€&?d pÄ(L, @  u€&?d °Ä((m€ @  v€&?d ðÄ(ªü—È @  w€&?d 0Å(Æè©ý @  x€&?d pÅ(Dy¾# @  y€&?d °Å(¸ñ @  z€&?d ðÅ(:æÛ @  {€ &?d 0Æ(lPP @  |€ &?d pÆ(’ýGŽ @  }€ &?d °Æ(öŠë @  ~€ &?d ðÆ(tüQ @  € &?d 0Ç(éùí— @  €€&?d pÇ(khúI @  €&?d °Ç(ò_׃ @  ‚€&?d ðÇ(pÎÀ] @  ƒ€&?d 0È(ó–Z  @  „€&?d pÈ(qMÔ @  …€&?d °È(páÕ @  †€&?d ðÈ(—áö  @  ‡€&?d 0É(ûõÈ> @  ˆ€&?d pÉ(ydßà @  ‰€&?d °É(…Æ @  Š€&?d ðÉ(’‡ @  ‹€&?d 0Ê(-q1“ @  Œ€&?d pÊ(¯à&M @  €&?d °Ê(Ë—ŠL @  Ž€&?d ðÊ(I’ @  €&?d 0Ë(ˆ³G @  €&?d pË( "Š™ @  ‘€&?d °Ë(¢ž @  ’€ &?d ðË(Œ3‰Q @  “€!&?d 0Ì("Úl @  ”€"&?d pÌ( K{Ê @  •€#&?d °Ì(Ä<×Ë @  –€$&?d ðÌ(F­À @  —€%&?d 0Í(*¹þ  @  ˜€&&?d pÍ(¨(éþ @  ™€'&?d °Í(TO¦Ø @  š€(&?d ðÍ(ÖÞ± @  ›€)&?d 0Î(ü= @  œ€*&?d pÎ(~¬S @  €+&?d °Î(Û¼R @  ž€,&?d ðÎ(˜J«Œ @  Ÿ€-&?d 0Ï(HùŒé @   €.&?d pÏ(Êh›7 @  ¡€/&?d °Ï(S_¶ý @  ¢€0&?d ðÏ(ÑΡ# @  £€1&?d 0Ð(Ø· Û @  ¤€2&?d pÐ(Z& @  ¥€3&?d °Ð(>Q° @  ¦€4&?d ðÐ(¼À§Ú @  §€5&?d 0Ñ(ÐÔ™ï @  ¨€6&?d pÑ(REŽ1 @  ©€7&?d °Ñ(®"Á @  ª€8&?d ðÑ(,³ÖÉ @  «€9&?d 0Ò(P`B @  ¬€:&?d pÒ(„Áwœ @  ­€;&?d °Ò(à¶Û @  ®€<&?d ðÒ(b'ÌC @  ¯€=&?d 0Ó(£’Ì– @  °€>&?d pÓ(!ÛH @  ±€?&?d °Ó(ÕÓÚO @  ²€@&?d ðÓ(WBÍ‘ @  ³€A&?d 0Ô(ù«(Ô @  ´€B&?d pÔ({:?  @  µ€C&?d °Ô(M“  @  ¶€D&?d ðÔ(Ü„Õ @  ·€E&?d 0Õ(ñȺà @  ¸€F&?d pÕ(sY­> @  ¹€G&?d °Õ(>â @  º€H&?d ðÕ( ¯õÆ @  »€I&?d 0Ö('LCM @  ¼€J&?d pÖ(¥ÝT“ @  ½€K&?d °Ö(Áªø’ @  ¾€L&?d ðÖ(C;ïL @  ¿€M&?d 0×(=λ @  À€N&?d p×(¿Ùe @  Á€O&?d °×(&)ô¯ @  €P&?d ð×(¤¸ãq @  ÀQ&?d 0Ø('ày& @  Ä€R&?d pØ(¥qnø @  Å€S&?d °Ø(ÁÂù @  Æ€T&?d ðØ(C—Õ' @  Ç€U&?d 0Ù(/ƒë @  È€V&?d pÙ(­üÌ @  É€W&?d °Ù(Qu³ê @  Ê€X&?d ðÙ(Óä¤4 @  Ë€Y&?d 0Ú(ù¿ @  Ì€Z&?d pÚ({–a @  Í€[&?d °Ú(á©` @  ΀\&?d ðÚ(p¾¾ @  Ï€]&?d 0Û(\žk @  Ѐ^&?d pÛ(ÞT©µ @  Ñ€_&?d °Û(ÚÔ½£ @  Ò€`&?d ðÛ(XEª} @  Ó€a&?d 0Ü(ö¬O8 @  Ô€b&?d pÜ(t=Xæ @  Õ€c&?d °Ü(Jôç @  Ö€d&?d ðÜ(’Ûã9 @  ×€e&?d 0Ý(þÏÝ  @  Ø€f&?d pÝ(|^ÊÒ @  Ù€g&?d °Ý(€9…ô @  Ú€h&?d ðÝ(¨’* @  Û€i&?d 0Þ((K$¡ @  Ü€j&?d pÞ(ªÚ3 @  Ý€k&?d °Þ(έŸ~ @  Þ€l&?d ðÞ(L<ˆ  @  ߀m&?d 0ß(œ¯Å @  à€n&?d pß(¸ @  á€o&?d uÐà(/°ß(‡)•Ñ @  â€p&?d€ ðß(-"–] @  €q&?d Hà(b`–È @  €r&?d ˆà(B•”6 @  €s&?d Èà(AÏÖú @  €t&?d á(‘‡Z @  €u&?d Há(aø k @  €v&?d ˆá(A ¢• @  €w&?d Èá(Ѽ§é @  €x&?d â(Lø( @   €y&?d Hâ(¼‡ýQ @   €z&?d ˆâ(œrÿ¯ @   €{&?d Èâ(Ÿ(½c @   €|&?d ã(O`1‹ @   €}&?d Hã(¿Ëò @  €~&?d ˆã(ŸêÉ  @  €&?d Èã(·‹è# @  €€&?d ä(®Å, @  €&?d Hä(^ºáU @  €‚&?d ˆä(~Oã« @  €ƒ&?d Èä(}¡g @  €„&?d å(­]- @  €…&?d Hå(]"×ö @  €†&?d ˆå(}×Õ @  €‡&?d Èå(ífÐt @  €ˆ&?d æ(p"pµ @  €‰&?d Hæ(€]ŠÌ @  €Š&?d ˆæ( ¨ˆ2 @  €‹&?d Èæ(£òÊþ @  €Œ&?d ç(sºF @  €&?d Hç(ƒÅ¼o @  €Ž&?d ˆç(£0¾‘ @  €&?d Èç(êvÀQ @   €&?d è(Þ‰LL @  !€‘&?d Hè(.ö¶5 @  "€’&?d ˆè(´Ë @  #€“&?d Èè( Yö @  $€”&?d é(Ýzï @  %€•&?d Hé(-n€– @  &€–&?d ˆé( ›‚h @  '€—&?d Èé(*‡ @  (€˜&?d ê(n'Õ @  )€™&?d Hê(ðݬ @  *€š&?d ˆê(ÐäßR @  +€›&?d Èê(Ó¾ž @  ,€œ&?d ë(öv @  -€&?d Hë(ó‰ë @  .€ž&?d ˆë(Ó|éñ @  /€Ÿ&?d Èë(‹‰] @  0€ &?d ì(ÅzR @  1€¡&?d Hì(ÿº€+ @  2€¢&?d ˆì(ßO‚Õ @  3€£&?d Èì(ÜÀ @  4€¤&?d í( ]Lñ @  5€¥&?d Hí(ü"¶ˆ @  6€¦&?d ˆí(Ü×´v @  7€§&?d Èí(Lf±  @  8€¨&?d î(Ñ"Ë @  9€©&?d Hî(!]ë² @  :€ª&?d ˆî(¨éL @  ;€«&?d Èî(ò«€ @  <€¬&?d ï(Òº'h @  =€­&?d Hï("ÅÝ @  >€®&?d ˆï(0ßï @  ?€¯&?d Èï(åq§½ @  @€°&?d ð([¯ @  A€±&?d Hð(«Ðáv @  B€²&?d ˆð(‹%㈠@  C€³&?d Èð(ˆ¡D @  D€´&?d ñ(X7-¬ @  E€µ&?d Hñ(¨H×Õ @  F€¶&?d ˆñ(ˆ½Õ+ @  G€·&?d Èñ( ÐW @  H€¸&?d ò(…Hp– @  I€¹&?d Hò(u7Šï @  J€º&?d ˆò(Uˆ @  K€»&?d Èò(V˜ÊÝ @  L€¼&?d ó(†ÐF5 @  M€½&?d Hó(v¯¼L @  N€¾&?d ˆó(VZ¾² @  O€¿&?d Èó(cýË @  P€À&?d ô(z³8 @  Q€Á&?d Hô(ŠÌÂy @  R€Â&?d ˆô(ª9À‡ @  S€Ã&?d Èô(©c‚K @  T€Ä&?d õ(y+£ @  U€Å&?d Hõ(‰TôÚ @  V€Æ&?d ˆõ(©¡ö$ @  W€Ç&?d Èõ(9óX @  X€È&?d ö(¤TS™ @  Y€É&?d Hö(T+©à @  Z€Ê&?d ˆö(tÞ« @  [€Ë&?d Èö(w„éÒ @  \€Ì&?d ÷(§Ìe: @  ]€Í&?d H÷(W³ŸC @  ^€Î&?d ˆ÷(wF½ @  _€Ï&?d È÷(>ã} @  `€Ð&?d ø( ÿo` @  a€Ñ&?d Hø(ú€• @  b€Ò&?d ˆø(Úu—ç @  c€Ó&?d Èø(Ù/Õ+ @  d€Ô&?d ù( gYà @  e€Õ&?d Hù(ù£º @  f€Ö&?d ˆù(Ùí¡D @  g€×&?d Èù(I\¤8 @  h€Ø&?d ú(Ôù @  i€Ù&?d Hú($gþ€ @  j€Ú&?d ˆú(’ü~ @  k€Û&?d Èú(Ⱦ² @  l€Ü&?d û(×€2Z @  m€Ý&?d Hû('ÿÈ# @  n€Þ&?d ˆû( ÊÝ @  o€ß&?d Èû(Âýªq @  p€à&?d ü(Û³Y~ @  q€á&?d Hü(+Ì£ @  r€â&?d ˆü( 9¡ù @  s€ã&?d Èü(cã5 @  t€ä&?d ý(Ø+oÝ @  u€å&?d Hý((T•¤ @  v€æ&?d ˆý(¡—Z @  w€ç&?d Èý(˜’& @  x€è&?d þ(T2ç @  y€é&?d Hþ(õ+Èž @  z€ê&?d ˆþ(ÕÞÊ` @  {€ë&?d Èþ(Ö„ˆ¬ @  |€ì&?d ÿ(ÌD @  }€í&?d Hÿ(ö³þ= @  ~€î&?d ˆÿ(ÖFüà @  €uÐ)ï&?d Èÿ(¯ÑÇÜ @  €ð&?d )àeï- @  ñ&?d `)T @  ‚ò&?d  )0ïª @  ƒó&?d à)3µUf @  „ô&?d )ãýÙŽ @  …õ&?d `)‚#÷ @  †ö&?d  )3w!  @  ‡÷&?d à)£Æ$u @  ˆø&?d )>‚„´ @  ‰ù&?d `)Îý~Í @  Šú&?d  )î|3 @  ‹û&?d à)íR>ÿ @  Œü&?d )=² @  ý&?d `)ÍeHn @  Žþ&?d  )íJ @  ÿ&?d à)º–>³ @  '?d )£ØÍ¼ @  ‘'?d `)S§7Å @  ’'?d  )sR5; @  “'?d à)pw÷ @  ”'?d ) @û @  •'?d `)P?f @  –'?d  )pʘ @  —'?d à)à{ä @  ˜'?d )}?¦% @  ™ '?d `)@\\ @  š '?d  )­µ^¢ @  › '?d à)®ïn @  œ '?d )~§† @   '?d `)ŽØjÿ @  ž'?d  )®-h @  Ÿ'?d à)çkÁ @   '?d )Ó”šÜ @  ¡'?d `)#ë`¥ @  ¢'?d  )b[ @  £'?d à)D — @  ¤'?d )Ð ¬ @  ¥'?d ` ) sV @  ¦'?d   )†Tø @  §'?d à )7Q„ @  ¨'?d ) sñE @  ©'?d ` )ý < @  ª'?d   )Ýù  @  «'?d à )Þ£K @  ¬'?d )ëÇæ @  ­'?d ` )þ”=Ÿ @  ®'?d   )Þa?a @  ¯'?d à )–_Í @  ° '?d )ج @  ±!'?d ` )ò§V» @  ²"'?d   )ÒRTE @  ³#'?d à )щ @  ´$'?d )@ša @  µ%'?d ` )ñ?` @  ¶&'?d   )ÑÊbæ @  ·''?d à )A{gš @  ¸('?d )Ü?Ç[ @  ¹)'?d `),@=" @  º*'?d  ) µ?Ü @  »+'?d à)ï} @  ¼,'?d )ß§ñø @  ½-'?d `)/Ø  @  ¾.'?d  )-  @  ¿/'?d à)èlq- @  À0'?d )V²ÍŸ @  Á1'?d `)¦Í7æ @  Â2'?d  )†85 @  Ã3'?d à)…bwÔ @  Ä4'?d )U*û< @  Å5'?d `)¥UE @  Æ6'?d  )… » @  Ç7'?d à)Ç @  È8'?d )ˆU¦ @  É9'?d `)x*\ @  Ê:'?d  )Xß^ @  Ë;'?d à)[…M @  Ì<'?d )‹Í¥ @  Í='?d `){²jÜ @  Î>'?d  )[Gh" @  Ï?'?d à)nàŸ @  Ð@'?d )w®î @  ÑA'?d `)‡Ñé @  ÒB'?d  )§$ @  ÓC'?d à)¤~TÛ @  ÔD'?d )t6Ø3 @  ÕE'?d `)„I"J @  ÖF'?d  )¤¼ ´ @  ×G'?d à)4 %È @  ØH'?d )©I…  @  ÙI'?d `)Y6p @  ÚJ'?d  )yÃ}Ž @  ÛK'?d à)z™?B @  ÜL'?d )ªÑ³ª @  ÝM'?d `)Z®IÓ @  ÞN'?d  )z[K- @  ßO'?d à)35í @  àP'?d )â¹ð @  áQ'?d `)÷C‰ @  âR'?d€  )£«]Ñ @   S'?d à)A°W4 @   T'?d )‘øÛÜ @   U'?d `)¤ÎÚH @   V'?d  )„;ض @   W'?d à)Ú8‚° @   X'?d )G|"q @   Y'?d `)y±‡r @   Z'?d  )YD…Œ @    ['?d à)ŸW<­ @    \'?d )O°E @    ]'?d `)z)±Ñ @    ^'?d  )Zܳ/ @    _'?d à)ü8² @   `'?d )åvA @   a'?d `)vÚõ @   b'?d  )VïØ  @   c'?d à)üa* @   d'?d )@´í @   e'?d `)u‚ìV @   f'?d  )Uwî¨ @   g'?d à) t´® @   h'?d )–0o @   i'?d `)¨ý±l @   j'?d  )ˆ³’ @   k'?d à)N ³ @   l'?d )žS†[ @   m'?d `)«e‡Ï @   n'?d  )‹…1uÐ ) @   o'?d à)°Ã½Û @   p'?d 8 )ÁÈc½ @   q'?d x )C¢ßî @    r'?d ¸ )cWÝ @   !s'?d ø )¥Dd1 @   "t'?d 8!)u èÙ @   #u'?d x!)@:éM @   $v'?d ¸!)`Ïë³ @   %w'?d ø!)>̱µ @   &x'?d 8")£ˆt @   'y'?d x")E´w @   (z'?d ¸")½°¶‰ @   ){'?d ø"){£¨ @   *|'?d 8#)«ëƒ@ @   +}'?d x#)žÝ‚Ô @   ,~'?d ¸#)¾(€* @   -'?d ø#)õZÀŸ @   .€'?d 8$)ì3 @   /'?d x$)x¨s @   0‚'?d ¸$)_ª @   1ƒ'?d ø$)™ž¬ @   2„'?d 8%)IÖŸD @   3…'?d x%)|àžÐ @   4†'?d ¸%)\œ. @   5‡'?d ø%)Æ( @   6ˆ'?d 8&)ŸRfé @   7‰'?d x&)¡ŸÃê @   8Š'?d ¸&)jÁ @   9‹'?d ø&)Gyx5 @   :Œ'?d 8')—1ôÝ @   ;'?d x')¢õI @   <Ž'?d ¸')‚ò÷· @   ='?d ø')¹¡Ï] @   >'?d 8()^C@ @   ?‘'?d x()¡3ù @   @’'?d ¸()Æû @   A“'?d ø()GÕB^ @   B”'?d 8))—ζ @   C•'?d x))¢«Ï" @   D–'?d ¸))‚^ÍÜ @   E—'?d ø))Ü]—Ú @   F˜'?d 8*)A7 @   G™'?d x*)Ô’ @   Hš'?d ¸*)_!æ @   I›'?d ø*)™2)Ç @   Jœ'?d 8+)Iz¥/ @   K'?d x+)|L¤» @   Lž'?d ¸+)\¹¦E @   MŸ'?d ø+)ú]§s @   N '?d 8,)ãT| @   O¡'?d x,)pÏŸ @   P¢'?d ¸,)PŠÍa @   Q£'?d ø,)–™t@ @   R¤'?d 8-)FÑø¨ @   S¥'?d x-)sçù< @   T¦'?d ¸-)Sû @   U§'?d ø-) ¡Ä @   V¨'?d 8.)U @   W©'?d x.)®˜¤ @   Xª'?d ¸.)Žm¦ø @   Y«'?d ø.)H~Ù @   Z¬'?d 8/)˜6“1 @   [­'?d x/)­’¥ @   \®'?d ¸/)õ[ @   ]¯'?d ø/)¶¦¨± @   ^°'?d 80)x @   _±'?d x0)ЍP @   `²'?d ¸0)ªçª® @   a³'?d ø0)lô @   b´'?d 81)¼¼Ÿg @   cµ'?d x1)‰Šžó @   d¶'?d ¸1)©œ  @   e·'?d ø1)÷|Æ  @   f¸'?d 82)j8fÊ @   g¹'?d x2)TõÃÉ @   hº'?d ¸2)tÁ7 @   i»'?d ø2)²x @   j¼'?d 83)b[ôþ @   k½'?d x3)Wmõj @   l¾'?d ¸3)w˜÷” @   m¿'?d ø3)!,ã³ @   nÀ'?d 84)8b¼ @   oÁ'?d x4)«‹_ @   pÂ'?d ¸4)‹û‰¡ @   qÃ'?d ø4)Mè0€ @   rÄ'?d 85) ¼h @   sÅ'?d x5)¨–½ü @   tÆ'?d ¸5)ˆc¿ @   uÇ'?d ø5)Ö`å @   vÈ'?d 86)K$EÅ @   wÉ'?d x6)uéàÆ @   xÊ'?d ¸6)Uâ8 @   yË'?d ø6)“[ @   zÌ'?d 87)CG×ñ @   {Í'?d x7)vqÖe @   |Î'?d ¸7)V„Ô› @   }Ï'?d ø7)m×ìq @   ~Ð'?d 88)Y(`l @   Ñ'?d x8)–êœ @   €Ò'?d ¸8)¶æèb @   Ó'?d ø8)põQC @   ‚Ô'?d 89) ½Ý« @   ƒÕ'?d x9)•‹Ü? @   „Ö'?d ¸9)µ~ÞÁ @   …×'?d ø9)ë}„Ç @   †Ø'?d 8:)v9$ @   ‡Ù'?d x:)Hô @   ˆÚ'?d ¸:)hƒû @   ‰Û'?d ø:)®:Ú @   ŠÜ'?d 8;)~Z¶2 @   ‹Ý'?d x;)Kl·¦ @   ŒÞ'?d ¸;)k™µX @   ß'?d ø;)Í}´n @   Žà'?d 8<)Ô3Ga @   á'?d x<)G_Ü‚ @   â'?d ¸<)gªÞ| @   ‘ã'?d ø<)¡¹g] @   ’ä'?d 8=)qñëµ @   “å'?d x=)DÇê! @   ”æ'?d ¸=)d2èß @   •ç'?d ø=):1²Ù @   –è'?d 8>)§u @   —é'?d x>)™¸· @   ˜ê'?d ¸>)¹Mµå @   ™ë'?d ø>)^ Ä @   šì'?d 8?)¯€, @   ›í'?d x?)š ¸ @   œî'?duÐ@)7 ¸?)ºÕƒF @   ï'?d ø?)†»¬ @   žð'?d P@)B* @   Ÿñ'?d @)b$¨ã @    ò'?d Ð@)ൿ= @   ¡ó'?d A)t* @   ¢ô'?d PA)öîŠô @   £õ'?d A)a¼ž@ @   ¤ö'?d ÐA)ã-‰ž @   ¥÷'?d B)¢ûd‡ @   ¦ø'?d PB) jsY @   §ù'?d B)¼ÃÃz @   ¨ú'?d ÐB)>RÔ¤ @   ©û'?d C)ª˜ö³ @   ªü'?d PC)( ám @   «ý'?d C)¿[õÙ @   ¬þ'?d ÐC)=Êâ @   ­ÿ'?d D)w3"€ @   ®(?d PD)õ¢5^ @   ¯(?d D)Ī» @   °(?d ÐD)F;¬C @   ±(?d E)ÒñŽT @   ²(?d PE)P`™Š @   ³(?d E)Ç2> @   ´(?d ÐE)E£šà @   µ(?d F)uwù @   ¶(?d PF)†ä`' @   · (?d F)MÐ @   ¸ (?d ÐF)˜ÜÇÚ @   ¹ (?d G) åÍ @   º (?d PG)އò @   » (?d G)Õæ§ @   ¼(?d ÐG)›Dñy @   ½(?d H)yRP @   ¾(?d PH)”èEŽ @   ¿(?d H)áêo @   À(?d ÐH)˜pý± @   Á(?d I) ºß¦ @   Â(?d PI)Ž+Èx @   Ã(?d I)yÜÌ @   Ä(?d ÐI)›èË @   Å(?d J)Ú>&  @   Æ(?d PJ)X¯1Õ @   Ç(?d J)Äö @   È(?d ÐJ)F—–( @   É(?d K)Ò]´? @   Ê(?d PK)PÌ£á @   Ë(?d K)Çž·U @   Ì(?d ÐK)E ‹ @   Í(?d L)x4El @   Î (?d PL)ú¥R² @   Ï!(?d L)Ë­Üq @   Ð"(?d ÐL)I<˯ @   Ñ#(?d M)Ýöé¸ @   Ò$(?d PM)_gþf @   Ó%(?d M)È5êÒ @   Ô&(?d ÐM)J¤ý  @   Õ'(?d N) r @   Ö((?d PN)‰ãË @   ×)(?d N)J·è @   Ø*(?d ÐN)—Û 6 @   Ù+(?d O)‚! @   Ú,(?d PO)€•ÿ @   Û-(?d O)ÒK @   Ü.(?d ÐO)”C–• @   Ý/(?d P)“_ @   Þ0(?d PP)ÎÍ @   ß1(?d P)1À»¾ @   à2(?d ÐP)³Q¬` @   á3(?d Q)'›Žw @   â4(?d€ PQ)dMn© @   5(?d Q)^24 @   6(?d ÐQ)Ï%ê @   7(?d R)P3 @   8(?d PR)–Á$À @   9(?d R)ÄÚË™ @   :(?d ÐR)FKÜG @   ;(?d S)3¡* @   <(?d PS)ž¢¶ô @    =(?d S)̹Y­ @    >(?d ÐS)N(Ns @    ?(?d T)F Eh @    @(?d PT)Ä›R¶ @    A(?d T)–€½ï @   B(?d ÐT)ª1 @   C(?d U)ãÈé¼ @   D(?d PU)aYþb @   E(?d U)3B; @   F(?d ÐU)±Óå @   G(?d V)5L @   H(?d PV)·ÝÏ @   I(?d V)åÆè– @   J(?d ÐV)gWÿH @   K(?d W)=/‚% @   L(?d PW)¿¾•û @   M(?d W)í¥z¢ @   N(?d ÐW)o4m| @   O(?d X)'@5¸ @   P(?d PX)¥Ñ"f @   Q(?d X)÷ÊÍ? @   R(?d ÐX)u[Úá @   S(?d Y)“„¾Ü @    T(?d PY)© @   !U(?d Y)CF[ @   "V(?d ÐY)ÁŸQ… @   #W(?d Z)EGq @   $X(?d PZ)Ç‘P¯ @   %Y(?d Z)•Š¿ö @   &Z(?d ÐZ)¨( @   '[(?d [)McÕE @   (\(?d P[)Ïò› @   )](?d [)é- @   *^(?d Ð[)x: @   +_(?d \)ç $ @   ,`(?d P\)e›3È @   -a(?d \)7€Ü‘ @   .b(?d Ð\)µËO @   /c(?d ])BȈ @   0d(?d P])ÀYŸ @   1e(?d ])’BpE @   2f(?d Ð])Óg› @   3g(?d ^)”Lqo @   4h(?d P^)Ýf± @   5i(?d ^)DƉè @   6j(?d Ð^)ÆWž6 @   7k(?d _)œ/ã[ @   8l(?d P_)¾ô… @   9m(?d _)L¥Ü @   uÐ`):n(?d Ð_)Î4  @   ;o(?d (`) GmC @   <p(?d h`)ŽÖz @   =q(?d ¨`)Üꥀ @   >r(?d è`)^\‚ @   ?s(?d (a)„ൠ@   @t(?d ha)”÷k @   Au(?d ¨a)Æ2 @   Bv(?d èa)DŸì @   Cw(?d (b)À @   Dx(?d hb)B‘Æ @   Ey(?d ¨b)ŠáŸ @   Fz(?d èb)’öA @   G{(?d (c)Èc‹, @   H|(?d hc)Jòœò @   I}(?d ¨c)és« @   J~(?d èc)šxdu @   K(?d (d)œ;ü @   L€(?d hd) ," @   M(?d ¨d)_Ã{ @   N‚(?d èd)݇ԥ @   Oƒ(?d (e)*^—( @   P„(?d he)¨Ï€ö @   Q…(?d ¨e)úÔo¯ @   R†(?d èe)xExq @   S‡(?d (f)üÚn… @   Tˆ(?d hf)~Ky[ @   U‰(?d ¨f),P– @   VŠ(?d èf)®ÁÜ @   W‹(?d (g)ô¹ü± @   XŒ(?d hg)v(ëo @   Y(?d ¨g)$36 @   ZŽ(?d èg)¦¢è @   [(?d (h)îÖK, @   \(?d hh)lG\ò @   ]‘(?d ¨h)>\³« @   ^’(?d èh)¼Í¤u @   _“(?d (i)ZÀH @   `”(?d hi)؃ז @   a•(?d ¨i)Š˜8Ï @   b–(?d èi) / @   c—(?d (j)Œ–9å @   d˜(?d hj).; @   e™(?d ¨j)\Áb @   fš(?d èj)ÞÖ¼ @   g›(?d (k)„õ«Ñ @   hœ(?d hk)d¼ @   i(?d ¨k)TSV @   jž(?d èk)ÖîDˆ @   kŸ(?d (l).œZ‚ @   l (?d hl)¬ M\ @   m¡(?d ¨l)þ¢ @   n¢(?d èl)|‡µÛ @   o£(?d (m)‹^öV @   p¤(?d hm) Ïሠ@   q¥(?d ¨m)[ÔÑ @   r¦(?d èm)ÙE @   s§(?d (n)]Úû @   t¨(?d hn)ßK% @   u©(?d ¨n)´—+© @   v ª(?d èn)6e®C @   { ¯(?d (p)ü0Æ( @   | °(?d hp)~¡Ñö @   } ±(?d ¨p),º>¯ @   ~ ²(?d èp)®+)q @    ³(?d (q)¥{ï @   € ´(?d hq)‡4l1 @    µ(?d ¨q)Õ/ƒh @   ‚ ¶(?d èq)W¾”¶ @   ƒ ·(?d (r)Ó!‚B @   „ ¸(?d hr)Q°•œ @   … ¹(?d ¨r)«zÅ @   † º(?d èr):m @   ‡ »(?d (s)ÛBv @   ˆ ¼(?d hs)YÓ¨ @   ‰ ½(?d ¨s) Èèñ @   Š ¾(?d ès)‰Yÿ/ @   ‹ ¿(?d (t){ô4 @   Œ À(?d ht)êãê @    Á(?d ¨t)Qñ ³ @   Ž Â(?d èt)Ó`m @    Ã(?d (u)$¹Xà @    Ä(?d hu)¦(O> @   ‘ Å(?d ¨u)ô3 g @   ’ Æ(?d èu)v¢·¹ @   “ Ç(?d (v)ò=¡M @   ” È(?d hv)p¬¶“ @   • É(?d ¨v)"·YÊ @   – Ê(?d èv) &N @   — Ë(?d (w)ú^3y @   ˜ Ì(?d hw)xÏ$§ @   ™ Í(?d ¨w)*ÔËþ @   š Î(?d èw)¨EÜ  @   › Ï(?d (x)à1„ä @   œ Ð(?d hx)b “: @    Ñ(?d ¨x)0»|c @   ž Ò(?d èx)²*k½ @   Ÿ Ó(?d (y)Tõ€ @     Ô(?d hy)Öd^ @   ¡ Õ(?d ¨y)„÷ @   ¢ Ö(?d èy)îàÙ @   £ ×(?d (z)‚qö- @   ¤ Ø(?d hz)àáó @   ¥ Ù(?d ¨z)Rûª @   ¦ Ú(?d èz)Ðjt @   § Û(?d ({)Šd @   ¨ Ü(?d h{)ƒsÇ @   © Ý(?d ¨{)Z˜œž @   ª Þ(?d è{)Ø ‹@ @   « ß(?d (|) {•J @   ¬ à(?d h|)¢ê‚” @   ­ á(?d ¨|)ðñmÍ @   ® â(?d è|)r`z @   ¯ ã(?d (})…¹9ž @   ° ä(?d h})(.@ @   ± å(?d ¨})U3Á @   ² æ(?d è})×¢ÖÇ @   ³ ç(?d (~)S=À3 @   ´ è(?d h~)Ѭ×í @   µ é(?d ¨~)ƒ·8´ @   ¶ ê(?d è~)&/j @   · ë(?d ()[^R @   ¸ ì(?d h)ÙÏEÙ @   ¹ í(?d ¨)uЀ)'‹Ôª€ @   º î(?d è)0‚a‹ @   »ï(?d @€)"·W& @   ¼ð(?d €€)BUØ @   ½ñ(?d À€)ò=¯¡ @   ¾ò(?d )"u#I @   ¿ó(?d @)8tÚÐ @   Àô(?d €)Ø. @   Áõ(?d À)èþ"W @   Âö(?d ‚)uº‚– @   Ã÷(?d @‚)îð#} @   Äø(?d €‚)Î!ƒ @   Åù(?d À‚)>zÛú @   Æú(?d ƒ)î2W @   Çû(?d @ƒ)擱I @   Èü(?d €ƒ)Æf³· @   Éý(?d Àƒ)6IÎ @   Êþ(?d „)/WºÁ @   Ëÿ(?d @„)Þ T• @   Ì)?d €„)þþVk @   Í)?d À„)¬ @   Î)?d …)ÞÉ ú @   Ï)?d @…){ÉøA @   Ð)?d €…)[<ú¿ @   Ñ)?d À…)«CÆ @   Ò)?d †)6  @   Ó)?d @†)­Mì @   Ô)?d €†)¸ @   Õ )?d À†)}Çùk @   Ö )?d ‡)­uƒ @   × )?d @‡)¥.“Ø @   Ø )?d €‡)…Û‘& @   Ù )?d À‡)u¤k_ @   Ú)?d ˆ)A[çB @   Û)?d @ˆ)¿A$E @   Ü)?d €ˆ)Ÿ´&» @   Ý)?d Àˆ)oËÜ @   Þ)?d ‰)¿ƒP* @   ß)?d @‰) …¯! @   à)?d €‰)+p­ß @   á)?d À‰)ÛW¦ @   â)?d€ Š)2ˆëÁ @   )?d @Š)Hƒ @   )?d €Š)hvý @   )?d ÀŠ)]@i @   )?d ‹) @   )?d @‹)K4  @   )?d €‹)kî6^ @   )?d À‹)U#“] @   )?d Œ)Lm`R @    )?d @Œ)ê‰ad @     )?d €Œ)Ê|cš @    !)?d ÀŒ)ÿJb @    ")?d )/îæ @    #)?d @)éWÇ @   $)?d €)ÉäU9 @   %)?d À)ZˆÎÚ @   &)?d Ž)ÇÌn @   ')?d @Ž)™Ï4 @   ()?d €Ž)¹:6ã @   ))?d ÀŽ)Œ 7w @   *)?d )\D»Ÿ @   +)?d @)šW¾ @   ,)?d €)º¢@ @   -)?d À)„o¥C @   .)?d ):±ñ @   /)?d @)â! @   0)?d €)!#å @   1)?d À)!"q @   2)?d ‘)Äi®™ @   3)?d @‘)z¸ @   4)?d €‘)"F @   5)?d À‘) å© @    6)?d ’)=¡ Ô @   !7)?d @’)c¢SÒ @   "8)?d €’)CWQ, @   #9)?d À’)vaP¸ @   $:)?d “)¦)ÜP @   %;)?d @“)`:eq @   &<)?d €“)@Ïg @   '=)?d À“)~ÂŒ @   (>)?d ”)gL1ƒ @   )?)?d @”)1ø%¤ @   *@)?d €”) 'Z @   +A)?d À”)$;&Î @   ,B)?d •)ôsª& @   -C)?d @•)2` @   .D)?d €•)•ù @   /E)?d À•)ùŠ @   0F)?d –)½*Û @   1G)?d @–)B¾pÝ @   2H)?d €–)bKr# @   3I)?d À–)W}s· @   4J)?d —)‡5ÿ_ @   5K)?d @—)A&F~ @   6L)?d €—)aÓD€ @   7M)?d À—)_რ@   8N)?d ˜)kámž @   9O)?d @˜)P²Ut @   :P)?d €˜)pGWŠ @   ;Q)?d À˜)EqV @   <R)?d ™)•9Úö @   =S)?d @™)S*c× @   >T)?d €™)sßa) @   ?U)?d À™)_²Ûè @   @V)?d š)Âö{) @   AW)?d @š)œõ!/ @   BX)?d €š)¼#Ñ @   CY)?d Àš)‰6"E @   DZ)?d ›)Y~®­ @   E[)?d @›)ŸmŒ @   F\)?d €›)¿˜r @   G])?d À›)U°q @   H^)?d œ)˜C~ @   I_)?d @œ)>ÿBH @   J`)?d €œ) @¶ @   Ka)?d Àœ)+ @   ' *?d pÌ)äÿr @   (  *?d °Ì)Ä }Œ @   ) !*?d ðÌ)4u‡õ @   * "*?d 0Í)ä=  @   + #*?d pÍ)çgIÑ @   , $*?d °Í)Ç’K/ @   - %*?d ðÍ)7í±V @   . &*?d 0Î)ª©— @   / '*?d pÎ)—¹*  @   0 (*?d °Î)·L(õ @   1 )*?d ðÎ)G3ÒŒ @   2 **?d 0Ï)—{^d @   3 +*?d pÏ)”!¨ @   4 ,*?d °Ï)´ÔV @   5 -*?d ðÏ)D«ä/ @   6 .*?d 0Ð)úuX @   7 /*?d pÐ)”?  @   8 0*?d °Ð)/a=ó @   9 1*?d ðÐ)ßÇŠ @   : 2*?d 0Ñ)VKb @   ; 3*?d pÑ) ® @   < 4*?d °Ñ),ù P @   = 5*?d ðÑ)܆ñ) @   > 6*?d 0Ò)AÂQè @   ? 7*?d pÒ)ÃÓKV @   @ 8*?d °Ò)ã&I¨ @   A 9*?d ðÒ)Y³Ñ @   B :*?d 0Ó)Ã?9 @   C ;*?d pÓ)ÀK}õ @   D <*?d °Ó)ྠ @   E =*?d ðÓ)Á…r @   F >*?d 0Ô) v} @   G ?*?d pÔ)‘‰=  @   H @*?d °Ô)±|?Þ @   I A*?d ðÔ)Aŧ @   J B*?d 0Õ)‘KIO @   K C*?d pÕ)’ ƒ @   L D*?d °Õ)²ä } @   M E*?d ðÕ)B›ó @   N F*?d 0Ö)ßßSÅ @   O G*?d pÖ)âÏhY @   P H*?d °Ö)Â:j§ @   Q I*?d ðÖ)2EÞ @   R J*?d 0×)â 6 @   S K*?d p×)áW^ú @   T L*?d °×)Á¢\ @   U M*?d ð×)1ݦ} @   V N*?d 0Ø)"*` @   W O*?d pØ)ðÃMð @   X P*?d °Ø)Ð6O @   Y Q*?d ðØ) Iµw @   Z R*?d 0Ù)ð9Ÿ @   [ S*?d pÙ)ó[{S @   \ T*?d °Ù)Ó®y­ @   ] U*?d ðÙ)#уÔ @   ^ V*?d 0Ú)¾•# @   _ W*?d pÚ)’ƒ?9 @   ` X*?d °Ú)²v=Ç @   a Y*?d ðÚ)B Ǿ @   b Z*?d 0Û)’AKV @   c [*?d pÛ)‘ š @   d \*?d °Û)±î d @   e ]*?d ðÛ)A‘ñ @   f ^*?d 0Ü)Xß @   g _*?d pÜ)0‰\^ @   h `*?d °Ü)|^  @   i a*?d ðÜ)à¤Ù @   j b*?d 0Ý)0K(1 @   k c*?d pÝ)3jý @   l d*?d °Ý)äh @   m e*?d ðÝ)ã›’z @   n f*?d 0Þ)~ß2» @   o g*?d pÞ)CÏ ' @   p h*?d °Þ)c: Ù @   q i*?d ðÞ)“Eñ  @   r j*?d 0ß)C }H @   s k*?d pß)@W?„ @   t l*?d uÐà)/°ß)`¢=z @   u m*?d ðß)Ôšhª @   v€n*?d Hà)Í>6\ @   w€o*?d ˆà)š»Dì @   x€p*?d Èà)*S2 @   y€q*?d á)ºŒ2} @   z€r*?d Há)8%£ @   {€s*?d ˆá)™#rO @   |€t*?d Èá)²e‘ @   }€u*?d â)ô(÷ @   ~€v*?d Hâ)v‰?) @   €w*?d ˆâ)µª† @   €€x*?d Èâ)7;X @   €y*?d ã)•v @   ‚€z*?d Hã) aÉ @   ƒ€{*?d ˆã)¶26% @   „€|*?d Èã)4£!û @   …€}*?d ä)_?S @   †€~*?d Hä)Ý’( @   ‡€*?d ˆä)ú6"b @   ˆ€€*?d Èä)x§5¼ @   ‰€*?d å)ÚTó @   Š€‚*?d Hå)XC- @   ‹€ƒ*?d ˆå)ù®Á @   Œ€„*?d Èå){? @   €…*?d æ)”•Ny @   Ž€†*?d Hæ)Y§ @   €‡*?d ˆæ)‰pw @   €ˆ*?d Èæ) á`Å @   ‘€‰*?d ç)©GŠ @   ’€Š*?d Hç)+ÖT @   “€‹*?d ˆç)ŠèA¸ @   ”€Œ*?d Èç)yVf @   •€*?d è)Nh7Ü @   –€Ž*?d Hè)Ìù  @   —€*?d ˆè)›|R² @   ˜€*?d Èè)íEl @   ™€‘*?d é)»K$# @   š€’*?d Hé)9Ú3ý @   ›€“*?d ˆé)˜äd @   œ€”*?d Èé)usÏ @   €•*?d ê)õß>© @   ž€–*?d Hê)wN)w @   Ÿ€—*?d ˆê)ù< { @    €˜*?d Èê){­7¥ @   ¡€™*?d ë)Ù Vê @   ¢€š*?d Hë)[šA4 @   £€›*?d ˆë)ú¤Ø @   ¤€œ*?d Èë)x5 @   ¥€*?d ì)•® @   ¦€ž*?d Hì)‘p @   §€Ÿ*?d ˆì)[6C @   ¨€ *?d Èì)Ù§T @   ©€¡*?d í){5 @   ª€¢*?d Hí)ù"S @   «€£*?d ˆí)X®u¿ @   ¬€¤*?d Èí)Ú?ba @   ­€¥*?d î)5•/ @   ®€¦*?d Hî)·8Ù @   ¯€§*?d ˆî)(pe @   °€¨*?d Èî)ªá» @   ±€©*?d ï)G`ô @   ²€ª*?d Hï)ŠÖw* @   ³€«*?d ˆï)+è Æ @   ´€¬*?d Èï)©y7 @   µ€­*?d ð)eIf  @   ¶€®*?d Hð)çØqÓ @   ·€¯*?d ˆð)°]c @   ¸€°*?d Èð)2̽ @   ¹€±*?d ñ)juò @   º€²*?d Hñ)ûb, @   »€³*?d ˆñ)³Å5À @   ¼€´*?d Èñ)1T" @   ½€µ*?d ò)Þþox @   ¾€¶*?d Hò)\ox¦ @   ¿€·*?d ˆò)|w8 @   À€¸*?d Èò)þ‹`æ @   Á€¹*?d ó)\-© @   €º*?d Hó)Þ¼w @   À»*?d ˆó)‚A› @   Ä€¼*?d Èó)ýVE @   Å€½*?d ô)–³Hí @   Æ€¾*?d Hô)"_3 @   Ç€¿*?d ˆô).@N @   È€À*?d Èô)¬Ñ @   É€Á*?d õ)wwß @   Ê€Â*?d Hõ)Œæ` @   Ë€Ã*?d ˆõ)-Ø7í @   Ì€Ä*?d Èõ)¯I 3 @   Í€Å*?d ö)@ãmU @   ΀Æ*?d Hö)Ârz‹ @   Ï€Ç*?d ˆö)]T7 @   ЀÈ*?d Èö)ß—Cé @   Ñ€É*?d ÷)}1"¦ @   Ò€Ê*?d H÷)ÿ 5x @   Ó€Ë*?d ˆ÷)^žb” @   Ô€Ì*?d È÷)ÜuJ @   Õ€Í*?d ø)šð @   Ö€Î*?d Hø). @   ×€Ï*?d ˆø)O qž @   Ø€Ð*?d Èø)Í›f@ @   Ù€Ñ*?d ù)o= @   Ú€Ò*?d Hù)í¬Ñ @   Û€Ó*?d ˆù)L’G= @   Ü€Ô*?d Èù)ÎPã @   Ý€Õ*?d ú)!©… @   Þ€Ö*?d Hú)£8 [ @   ߀×*?d ˆú)-JW @   à€Ø*?d Èú)¯Û‰ @   á€Ù*?d û) }uÆ @   â€Ú*?d€ Hû)û/~¾ @   €Û*?d ˆû)»Pa{ @   €Ü*?d Èû)9Áv¥ @   €Ý*?d ü)—(“à @   €Þ*?d Hü)¹„> @   €ß*?d ˆü)9( @   €à*?d Èü)“¨‡ö @   €á*?d ý)ÿ¼¹Ã @   €â*?d Hý)}-® @    €ã*?d ˆý)Z @    €ä*?d Èý)›Ë @    €å*?d þ)±(£I @    €æ*?d Hþ)3¹´— @    €ç*?d ˆþ)ÏÞû± @   €è*?d Èþ)MOìo @   €é*?d ÿ)Œúìº @   €ê*?d Hÿ)kûd @   €ë*?d ˆÿ)jWe @   €uÐ*ì*?d Èÿ)• 3Ç @   í*?d *&[mš @   î*?d `*¤ÊzD @   ï*?d  *=ýWŽ @   ð*?d à*¿l@P @   ñ*?d *Óx~e @   ò*?d `*Qéi» @   ó*?d  *5žÅº @   ô*?d à*·Òd @   õ*?d *ìdï @   ö*?d `*}s1 @   ÷*?d  *ã< @   ø*?d à*a‹+É @   ù*?d *±8 ¬ @    ú*?d `*3©r @   !û*?d  *WÞ·s @   "ü*?d à*ÕO ­ @   #ý*?d *{¦Eè @   $þ*?d `*ù7R6 @   %ÿ*?d  *oFR¯ @   &+?d à*í×Eq @   '+?d *Ã{D @   (+?d `*Rlš @   )+?d  *g%À› @   *+?d à*å´×E @   ++?d *ÏWaÎ @   ,+?d `*MÆv @   -+?d  *±¡96 @   .+?d à*30.è @   / +?d *ò….= @   0 +?d `*p9ã @   1 +?d  *c•â @   2 +?d à*–ò‚< @   3 +?d *ªk @   4+?d `*—;µ @   5+?d  * " @   6+?d à*Œ5¡ @   7+?d *à‰ ” @   8+?d ` *bJ @   9+?d   *o°K @   :+?d à *„þ§• @   ;+?d *® @   <+?d ` *,ŒÀ @   =+?d   *ÐëIæ @   >+?d à *Rz^8 @   ?+?d *,ÎÏ @   @+?d ` *®_h @   A+?d   *Ê(Ä @   B+?d à *H¹ÓÎ @   C+?d *æP6‹ @   D+?d ` *dÁ!U @   E+?d   *`A5C @   F +?d à *âÐ" @   G!+?d *ŽÄ¨ @   H"+?d ` * U v @   I#+?d   *h"§w @   J$+?d à *ê³°© @   K%+?d *ÀP" @   L&+?d `*BÁü @   M'+?d  *¾¦^Ú @   N(+?d à*<7I @   O)+?d *ý‚IÑ @   P*+?d `*^ @   Q++?d  *dò @   R,+?d à*™õåÐ @   S-+?d *ŒO( @   T.+?d `*Xö @   U/+?d  *‹*u< @   V0+?d à* »bâ @   W1+?d *e¯\× @   X2+?d `*ç>K  @   Y3+?d  *ƒIç @   Z4+?d à*ØðÖ @   [5+?d *+;F] @   \6+?d `*©ªQƒ @   ]7+?d  *UÍ¥ @   ^8+?d à*×\ { @   _9+?d *ï. @   `:+?d `*…~9À @   a;+?d  *á •Á @   b<+?d à*c˜‚ @   c=+?d *ÍqgZ @   d>+?d `*Oàp„ @   e?+?d  *»0qƒ @   f@+?d à*9¡f] @   gA+?d *UµXh @   hB+?d `*×$O¶ @   iC+?d  *³Sã· @   jD+?d à*1Âôi @   kE+?d *!Bâ @   lF+?d `*™°U< @   mG+?d  *e× @   nH+?d à*çF Ä @   oI+?d *&ó  @   pJ+?d `*¤bÏ @   qK+?d  *À¶Î @   rL+?d à*B„¡ @   sM+?d *ÁÜ;G @   tN+?d `*CM,™ @   uO+?d  *ÚzS @   vP+?d à*Xë @   wQ+?d *4ÿ(¸ @   xR+?d `*¶n?f @   yS+?d  *Ò“g @   zT+?d à*Pˆ„¹ @   {U+?d *zk22 @   |V+?d `*øú%ì @   }W+?d  *jÊ @   ~X+?d à*† } @   Y+?d *îlÒ @   €Z+?d `*™{  @   [+?d  *ý×  @   ‚\+?d à*™ÀÓ @   ƒ]+?d *Ñp%– @   „^+?d `*Sá2H @   …_+?d  *Wa&^ @   †`+?d à*Õð1€ @   ‡a+?d *¹äµ @   ˆb+?d `*;uk @   ‰c+?d  *_´j @   Šd+?d à*Ý“£´ @   ‹e+?d *÷p? @   Œf+?d `*uáá @   g+?d  *‰†MÇ @   Žh+?d à* Z @   i+?d *Ê¢ZÌ @   j+?d `*H3M @   ‘k+?d  *,DáuÐ * @   ’l+?d à*®ÕöÍ @   “m+?d 8 *hy>á @   ”n+?d x *êè)? @   •o+?d ¸ *sßõ @   –p+?d ø *ñN+ @   —q+?d 8!*Z- @   ˜r+?d x!*Ë:À @   ™s+?d ¸!*{¼–Á @   št+?d ø!*ù- @   ›u+?d 8"*ÓÎ7” @   œv+?d x"*Q_ J @   w+?d ¸"*­8ol @   žx+?d ø"*/©x² @   Ÿy+?d 8#*ÿ_× @    z+?d x#*}‹H  @   ¡{+?d ¸#*üä @   ¢|+?d ø#*›móÖ @   £}+?d 8$*5„“ @   ¤~+?d x$*·M @   ¥+?d ¸$*^TØ @   ¦€+?d ø$*Ü’C @   §+?d 8%*°†}3 @   ¨‚+?d x%*2jí @   ©ƒ+?d ¸%*V`Æì @   ª„+?d ø%*ÔñÑ2 @   «…+?d 8&*þg¹ @   ¬†+?d x&*|ƒpg @   ­‡+?d ¸&*€ä?A @   ®ˆ+?d ø&*u(Ÿ @   ¯‰+?d 8'*ÃÀ(J @   °Š+?d x'*AQ?” @   ±‹+?d ¸'*%&“• @   ²Œ+?d ø'*§·„K @   ³+?d 8(*$ï @   ´Ž+?d x(*¦~  @   µ+?d ¸(*?I$ @   ¶+?d ø(*½Ø3Ö @   ·‘+?d 8)*ÑÌ ã @   ¸’+?d x)*S]= @   ¹“+?d ¸)*7*¶< @   º”+?d ø)*µ»¡â @   »•+?d 8**ŸXi @   ¼–+?d x**É· @   ½—+?d ¸**á®O‘ @   ¾˜+?d ø**c?XO @   ¿™+?d 8+*‹y¸ @   Àš+?d x+*Ÿnf @   Á›+?d ¸+*ûmÂg @   œ+?d ø+*yüÕ¹ @   Ã+?d 8,*×0ü @   Äž+?d x,*U„'" @   ÅŸ+?d ¸,*Q34 @   Æ +?d ø,*Ó•$ê @   Ç¡+?d 8-*¿ß @   È¢+?d x-*=  @   É£+?d ¸-*Yg¡ @   ʤ+?d ø-*Ûö¶Þ @   Ë¥+?d 8.*ñU @   ̦+?d x.*s„‹ @   ͧ+?d ¸.*ãX­ @   Ψ+?d ø.* rOs @   Ï©+?d 8/*ÌÇO¦ @   Ъ+?d x/*NVXx @   Ñ«+?d ¸/**!ôy @   Ò¬+?d ø/*¨°ã§ @   Ó­+?d 80*¡ÉI_ @   Ô®+?d x0*#X^ @   Õ¯+?d ¸0*ºosK @   Ö°+?d ø0*8þd• @   ×±+?d 81*TêZ  @   ز+?d x1*Ö{M~ @   Ù³+?d ¸1*² á @   Ú´+?d ø1*0ö¡ @   Ûµ+?d 82*~@* @   ܶ+?d x2*˜ïWô @   Ý·+?d ¸2*dˆÒ @   Þ¸+?d ø2*æ  @   ß¹+?d 83*6ª(i @   àº+?d x3*´;?· @   á»+?d ¸3*ÐL“¶ @   â¼+?d€ ø3*“šsh @  ½+?d 84*Ü2Þ @  ¾+?d x4*^£ÉÚ @  ¿+?d ¸4*o:30 @  À+?d ø4*í«$î @  Á+?d 85*O E¡ @  Â+?d x5*ÍœR @  Ã+?d ¸5*gY¡ @  Ä+?d ø5*åȶÚ @   Å+?d 86* bû¼ @   Æ+?d x6*ˆóìb @   Ç+?d ¸6*±ÝX© @   È+?d ø6*3LOw @   É+?d 87*‘ê.8 @  Ê+?d x7*{9æ @  Ë+?d ¸7*ô} @  Ì+?d ø7*–Žã£ @  Í+?d 88*П‚ @  Î+?d x8*R•Ç @  Ï+?d ¸8*pCà @  Ð+?d ø8*ŒáT> @  Ñ+?d 89*.G5q @  Ò+?d x9*¬Ö"¯ @  Ó+?d ¸9*ÑÔ @  Ô+?d ø9*„‚Æ  @  Õ+?d 8:*k(‹l @  Ö+?d x:*鹜² @  ×+?d ¸:*З(y @  Ø+?d ø:*R?§ @  Ù+?d 8;*ð ^è @  Ú+?d x;*r1I6 @  Û+?d ¸;*dS£ @   Ü+?d ø;*æÂ´Ã @  !Ý+?d 8<*bªk @  "Þ+?d x<*ó½µ @  #ß+?d ¸<*Î:RN @  $à+?d ø<*L«E @  %á+?d 8=*î $ß @  &â+?d x=*lœ3 @  'ã+?d ¸=*ÆYÀz @  (ä+?d ø=*DÈפ @  )å+?d 8>*«bšÂ @  *æ+?d x>*)ó @  +ç+?d ¸>*Ý9× @  ,è+?d ø>*’L.  @  -é+?d 8?*0êOF @  .ê+?d x?*²{X˜ @  /ë+?duÐ@*7 ¸?*µ• @  0ì+?d ø?*Jñ¡ @  1€í+?d P@*ûL¦: @  2€î+?d @*Û¹¤Ä @  3€ï+?d Ð@*%£gà @  4€ð+?d A*õëë+ @  5€ñ+?d PA*”R @  6€ò+?d A*%a¬ @  7€ó+?d ÐA*-Àõ÷ @  8€ô+?d B*°„U6 @  9€õ+?d PB*@û¯O @  :€ö+?d B*`­± @  ;€÷+?d ÐB*ûD Z @  <€ø+?d C*+ €² @  =€ù+?d PC*ÛszË @  >€ú+?d C*û†x5 @  ?€û+?d ÐC*ᇬ @  @€ü+?d D*øÉr£ @  A€ý+?d PD*¶ˆÚ @  B€þ+?d D*(CŠ$ @  C€ÿ+?d ÐD*å[æ @  D€,?d E*5^× @  E€,?d PE*Å!-w @  F€,?d E*åÔ/‰ @  G€,?d ÐE*íuÉÒ @  H€,?d F*p1i @  I€,?d PF*€N“j @  J€,?d F* »‘” @  K€,?d ÐF*;ñ0 @  L€,?d G*ë¹¼— @  M€ ,?d PG*ÆFî @  N€ ,?d G*;3D @  O€ ,?d ÐG*ž3œ« @  P€ ,?d H*ªÌ¶ @  Q€ ,?d PH*Z³êÏ @  R€,?d H*zFè1 @  S€,?d ÐH*„\+6 @  T€,?d I*T§Þ @  U€,?d PI*¤k]§ @  V€,?d I*„ž_Y @  W€,?d ÐI*Œ?¹ @  X€,?d J*{à @  Y€,?d PJ*á㺠@  Z€,?d J*ÁñáD @  [€,?d ÐJ*Z»@¯ @  \€,?d K*ŠóÌG @  ]€,?d PK*zŒ6> @  ^€,?d K*Zy4À @  _€,?d ÐK*îËË @  `€,?d L*÷18Ä @  a€,?d PL*N½ @  b€,?d L*'»ÀC @  c€,?d ÐL*D:˜ @  d€ ,?d M*”^¶p @  e€!,?d PM*d!L  @  f€",?d M*DÔN÷ @  g€#,?d ÐM*Lu¨¬ @  h€$,?d N*Ñ1m @  i€%,?d PN*!Nò @  j€&,?d N*»ðê @  k€',?d ÐN*šñQ @  l€(,?d O*J¹Ýé @  m€),?d PO*ºÆ' @  n€*,?d O*š3%n @  o€+,?d ÐO*?3ýÕ @  p€,,?d P*íAg @  q€-,?d PP*q’» @  r€.,?d P*Qg¹à @  s€/,?d ÐP*¯}zç @  t€0,?d Q*5ö @  u€1,?d PQ*J v @  v€2,?d Q*¯¿ˆ @  w€3,?d ÐQ*§èÓ @  x€4,?d R*:ZH @  y€5,?d PR*Ê%²k @  z€6,?d R*êа• @  {€7,?d ÐR*qš~ @  |€8,?d S*¡Ò– @  }€9,?d PS*Q­gï @  ~€:,?d S*qXe @  €;,?d ÐS*ˆ¬¹ @  €€<,?d T*‘A_¶ @  €=,?d PT*a>¥Ï @  ‚€>,?d T*A˧1 @  ƒ€?,?d ÐT*Ò6Hû @  „€@,?d U*~Ä @  …€A,?d PU*ò>j @  †€B,?d U*Òô<” @  ‡€C,?d ÐU*ÚUÚÏ @  ˆ€D,?d V*Gz @  ‰€E,?d PV*·n€w @  Š€F,?d V*—›‚‰ @  ‹€G,?d ÐV* Ñ#b @  Œ€H,?d W*Ü™¯Š @  €I,?d PW*,æUó @  Ž€J,?d W* W  @  €K,?d ÐW*©¶ @  €L,?d X*ì« @  ‘€M,?d PX*m“ùÒ @  ’€N,?d X*Mfû, @  “€O,?d ÐX*³|8+ @  ”€P,?d Y*c4´Ã @  •€Q,?d PY*“KNº @  –€R,?d Y*³¾LD @  —€S,?d ÐY*»ª @  ˜€T,?d Z*&[ Þ @  ™€U,?d PZ*Ö$ð§ @  š€V,?d Z*öÑòY @  ›€W,?d ÐZ*m›S² @  œ€X,?d [*½ÓßZ @  €Y,?d P[*M¬%# @  ž€Z,?d [*mY'Ý @  Ÿ€[,?d Ð[*Ù_ØÖ @   €\,?d \*À+Ù @  ¡€],?d P\*0nÑ  @  ¢€^,?d \*›Ó^ @  £€_,?d Ð\*s6)… @  ¤€`,?d ]*£~¥m @  ¥€a,?d P]*S_ @  ¦€b,?d ]*sô]ê @  §€c,?d Ð]*{U»± @  ¨€d,?d ^*æp @  ©€e,?d P^*ná  @  ª€f,?d ^*6›ã÷ @  «€g,?d Ð^*­ÑB @  ¬€h,?d _*}™Îô @  ­€i,?d P_*æ4 @  ®€j,?d _*­6s @  uÐ`*¯€k,?d Ð_*îÈ @  °€l,?d (`*¶ë[P @  ±€m,?d h`*F”¡) @  ²€n,?d ¨`*fa£× @  ³€o,?d è`*˜{`Ð @  ´€p,?d (a*H3ì8 @  µ€q,?d ha*¸LA @  ¶€r,?d ¨a*˜¹¿ @  ·€s,?d èa*òä @  ¸€t,?d (b* \R% @  ¹€u,?d hb*ý#¨\ @  º€v,?d ¨b*ÝÖª¢ @  »€w,?d èb*Fœ I @  ¼€x,?d (c*–Ô‡¡ @  ½€y,?d hc*f«}Ø @  ¾€z,?d ¨c*F^& @  ¿€{,?d èc*\_†¿ @  À€|,?d (d*Eu° @  Á€},?d hd*µnÉ @  €~,?d ¨d*•›7 @  À,?d èd* 6o @  Ä€€,?d (e*Ë躇 @  Å€,?d he*;—@þ @  Æ€‚,?d ¨e*bB @  Ç€ƒ,?d èe*ä[ @  È€„,?d (f*އš @  É€…,?d hf*~øþã @  Ê€†,?d ¨f*^ ü @  Ë€‡,?d èf*ÅG]ö @  Ì€ˆ,?d (g*Ñ @  Í€‰,?d hg*åp+g @  ΀Š,?d ¨g*Å…)™ @  Ï€‹,?d èg*`…ñ" @  ЀŒ,?d (h*Tz}? @  Ñ€,?d hh*¤‡F @  Ò€Ž,?d ¨h*„ð…¸ @  Ó€,?d èh*zêF¿ @  Ô€,?d (i*ª¢ÊW @  Õ€‘,?d hi*ZÝ0. @  Ö€’,?d ¨i*z(2Ð @  ×€“,?d èi*r‰Ô‹ @  Ø€”,?d (j*ïÍtJ @  Ù€•,?d hj*²Ž3 @  Ú€–,?d ¨j*?GŒÍ @  Û€—,?d èj*¤ -& @  Ü€˜,?d (k*tE¡Î @  Ý€™,?d hk*„:[· @  Þ€š,?d ¨k*¤ÏYI @  ߀›,?d èk*ɦB @  à€œ,?d (l* ‡UM @  á€,?d hl*ùø¯4 @  â€ž,?d€ ¨l*­Î±l @  €Ÿ,?d èl*/"ž @  € ,?d (m*ÿjv @  €¡,?d hm*Ê\Žâ @  €¢,?d ¨m*ꩌ @  €£,?d èm*,º5= @  €¤,?d (n*±þ•ü @  €¥,?d hn*30ÿ @  €¦,?d ¨n*¯Æ2 @   €§,?d èn*ñÅh @   €¨,?d (o*!äï @   €©,?d ho*»å{ @   €ª,?d ¨o*4Nç… @   €«,?d èo*ò]^¤ @  €¬,?d (p*Lƒâ @  €­,?d hp*ßïyõ @  €®,?d ¨p*ÿ{  @  €¯,?d èp*ÄICá @  €°,?d (q*Ï  @  €±,?d hq*!7Î @  €²,?d ¨q*ÂÌc @  €³,?d èq*ÇÑuB @  €´,?d (r*Z•Õƒ @  €µ,?d hr*dXp€ @  €¶,?d ¨r*D­r~ @  €·,?d èr*®(x @  €¸,?d (s*Êæ¤ @  €¹,?d hs*ÿÐ¥ @  €º,?d ¨s*ß%§ú @  €»,?d ès*6Û @  €¼,?d (t*xíÔ @  €½,?d ht*‚Q‡ @   €¾,?d ¨t*¢çSy @  !€¿,?d èt*ôSG^ @  "€À,?d (u*$˶ @  #€Á,?d hu*-Ê" @  $€Â,?d ¨u*1ØÈÜ @  %€Ã,?d èu*÷Ëqý @  &€Ä,?d (v*jÑ< @  '€Å,?d hv*TBt? @  (€Æ,?d ¨v*t·vÁ @  )€Ç,?d èv**´,Ç @  *€È,?d (w*úü / @  +€É,?d hw*ÏÊ¡» @  ,€Ê,?d ¨w*ï?£E @  -€Ë,?d èw*),d @  .€Ì,?d (x*Ó–y @  /€Í,?d hx*Ž¿ š @  0€Î,?d ¨x*®Jd @  1€Ï,?d èx*•7Ž @  2€Ð,?d (y*EQ»f @  3€Ñ,?d hy*pgºò @  4€Ò,?d ¨y*P’¸  @  5€Ó,?d èy*–- @  6€Ô,?d (z* Å¡ì @  7€Õ,?d hz*5ï @  8€Ö,?d ¨z*ý @  9€×,?d èz*Kþ\ @  :€Ø,?d ({*›¶Ðÿ @  ;€Ù,?d h{*®€Ñk @  <€Ú,?d ¨{*ŽuÓ• @  =€Û,?d è{*Hfj´ @  >€Ü,?d (|*Q(™» @  ?€Ý,?d h|*}E#z @  @€Þ,?d ¨|*]°!„ @  A€ß,?d è|*ûT ² @  B€à,?d (}*+¬Z @  C€á,?d h}**­Î @  D€â,?d ¨}*>߯0 @  E€ã,?d è}*øÌ @  F€ä,?d (~*eˆ¶Ð @  G€å,?d h~*[EÓ @  H€æ,?d ¨~*{°- @  I€ç,?d è~*%³K+ @  J€è,?d (*õûÇà @  K€é,?d h*ÀÍÆW @  L€ê,?d ¨*uЀ*'à8Ä© @  M€ë,?d è*&+}ˆ @  N€ì,?d @€*H•Ÿü @  O€í,?d €€*y? @  P€î,?d À€*û á @  Q€ï,?d *’†¥= @  R€ð,?d @*²ã @  S€ñ,?d €*‡E¦W @  T€ò,?d À*Ô±‰ @  U€ó,?d ‚*Ü¿· @  V€ô,?d @‚*^ƒ¨i @  W€õ,?d €‚*Â*J @  X€ö,?d À‚*@»” @  Y€÷,?d ƒ*LaΤ @  Z€ø,?d @ƒ*ÎðÙz @  [€ù,?d €ƒ*Y¢ÍÎ @  \€ú,?d Àƒ*Û3Ú @  ]€û,?d „*†ÿ‡à @  ^€ü,?d @„*n> @  _€ý,?d €„*$`9M @  `€þ,?d À„*¦ñ.“ @  a€ÿ,?d …*À=  @  b€-?d @…*B¬·Â @  c€-?d €…*Õþ£v @  d€-?d À…*Wo´¨ @  e€-?d †*Ž©º– @  f€-?d @†* 8­H @  g€-?d €†*‘k @  h€-?d À†* µ @  i€-?d ‡*ÚË… @  j€-?d @‡*œKÜ[ @  k€ -?d €‡* Èï @  l€ -?d À‡*‰ˆß1 @  m€ -?d ˆ*ùõýÓ @  n€ -?d @ˆ*{dê  @  o€ -?d €ˆ*JldÎ @  p€-?d Àˆ*Èýs @  q€-?d ‰*¡wÐÌ @  r€-?d @‰*#æÇ @  s€-?d €‰*´´Ó¦ @  t€-?d À‰*6%Äx @  u€-?d Š*ïãÊF @  v€-?d @Š*mrݘ @  w€-?d €Š*ñÛm» @  x€-?d ÀŠ*sJze @  y€-?d ‹*»U @  z€-?d @‹*ý¬‹ @  {€-?d €‹*jS¸? @  |€-?d À‹*è¯á @  }€-?d Œ*µò @  ~€-?d @Œ*7ŸåÏ @  €-?d €Œ*ZÀz @  €€-?d ÀŒ*ØQmÁ @  €-?d *,l÷Á @  ‚€ -?d @*®ýà @  ƒ€!-?d €*9¯ô« @  „€"-?d À*»>ãu @  …€#-?d Ž*bøíK @  †€$-?d @Ž*àiú• @  ‡€%-?d €Ž*|ÀJ¶ @  ˆ€&-?d ÀŽ*þQ]h @  ‰€'-?d *ò‹œX @  Š€(-?d @*p‹† @  ‹€)-?d €*çHŸ2 @  Œ€*-?d À*eÙˆì @  €+-?d *Ÿ…š¡ @  Ž€,-?d @* @  €--?d €*,¼ @  €.-?d À*®b @  ‘€/-?d ‘*Ç·¾ @  ’€0-?d @‘*E– ` @  “€1-?d €‘*ÒÄ´Ô @  ”€2-?d À‘*PU£  @  •€3-?d ’*‰“­4 @  –€4-?d @’* ºê @  —€5-?d €’*—« É @  ˜€6-?d À’*: @  ™€7-?d “*àÜ' @  š€8-?d @“*›qËù @  ›€9-?d €“* #ßM @  œ€:-?d À“*Ž²È“ @  €;-?d ”*Ó~•c @  ž€<-?d @”*Q @  Ÿ€=-?d €”*qá+Î @   €>-?d À”*óp< @  ¡€?-?d •*÷³ @  ¢€@-?d @•*uŒ¤ß @  £€A-?d €•*âÞ°k @  ¤€B-?d À•*`O§µ @  ¥€C-?d –*¹‰©‹ @  ¦€D-?d @–*;¾U @  §€E-?d €–*§±v @  ¨€F-?d À–*% ¨ @  ©€G-?d —*)úؘ @  ª€H-?d @—*«kÏF @  «€I-?d €—*<9Ûò @  ¬€J-?d À—*¾¨Ì, @  ­€K-?d ˜*ÎÕîÎ @  ®€L-?d @˜*LDù @  ¯€M-?d €˜*}LwÓ @  °€N-?d À˜*ÿÝ`  @  ±€O-?d ™*–WÃÑ @  ²€P-?d @™*ÆÔ @  ³€Q-?d €™*ƒ”À» @  ´€R-?d À™*×e @  µ€S-?d š*ØÃÙ[ @  ¶€T-?d @š*ZRÎ… @  ·€U-?d €š*Æû~¦ @  ¸€V-?d Àš*Djix @  ¹€W-?d ›*H°¨H @  º€X-?d @›*Ê!¿– @  »€Y-?d €›*]s«" @  ¼€Z-?d À›*ßâ¼ü @  ½€[-?d œ*‚.á  @  ¾€\-?d @œ*¿öÒ @  ¿€]-?d €œ*޶Y3 @  À€^-?d Àœ* 'Ní @  Á€_-?d *øÔí @  €`-?d @*z‹Ã3 @  Àa-?d €*íÙׇ @  Ä€b-?d À*oHÀY @  Å€c-?d ž*¶ŽÎg @  Æ€d-?d @ž*4Ù¹ @  Ç€e-?d €ž*¨¶iš @  È€f-?d Àž**'~D @  É€g-?d Ÿ*&ý¿t @  Ê€h-?d @Ÿ*¤l¨ª @  Ë€i-?d €Ÿ*3>¼ @  Ì€j-uР*?d ÀŸ*±¯«À @  Í€k-?d  *„&ÛY @  ΀l-?d X *·Ì‡ @  Ï€m-?d ˜ *7¿BD @  Ѐn-?d Ø *µ.Uš @  Ñ€o-?d ¡*ܤöF @  Ò€p-?d X¡*^5ᘠ@  Ó€q-?d ˜¡*Égõ, @  Ô€r-?d Ø¡*Köâò @  Õ€s-?d ¢*’0ìÌ @  Ö€t-?d X¢*¡û @  ×€u-?d ˜¢*ŒK1 @  Ø€v-?d Ø¢*™\ï @  Ù€w-?d £*Cß @  Ú€x-?d X£*€ÒŠ @  Û€y-?d ˜£*€žµ @  Ü€z-?d Ø£*•‰k @  Ý€{-?d ¤*ÈÝÔ› @  Þ€|-?d X¤*JLÃE @  ߀}-?d ˜¤*jBj6 @  à€~-?d ؤ*èÓ}è @  á€-?d ¥*ñx¦k @  â€€-?d€ X¥*µ][ @  €-?d ˜¥*n¦Æ @  €‚-?d Ø¥*ì7 @  €ƒ-?d ¦*ð¸ãË @  €„-?d X¦*r)ô @  €…-?d ˜¦* 2L @  €†-?d ئ*¢£ ’ @  €‡-?d §*`Ë’Ø @  €ˆ-?d X§*âZ… @   €‰-?d ˜§*°Aj_ @   €Š-?d ا*2Ð} @   €‹-?d ¨*‡ä¤Ž @   €Œ-?d X¨*u³P @   €-?d ˜¨*Wn\  @  €Ž-?d ب*ÕÿK× @  €-?d ©*ßf‰‘ @  €-?d X©*]÷žO @  €‘-?d ˜©*ìq @  €’-?d Ø©*}fÈ @  €“-?d ª*‘ò“ @  €”-?d Xª*c„Å @  €•-?d ˜ª*Axkœ @  €–-?d ت*Ãé|B @  €—-?d «*â @  €˜-?d X«*ƒõÖ @  €™-?d ˜«*Ñ  @  €š-?d Ø«*Sš Q @  €›-?d ¬*Ë«L @  €œ-?d X¬*I޼’ @  €-?d ˜¬*•SË @  €ž-?d ج*™D @  €Ÿ-?d ­*,˜? @   € -?d X­*½á @  !€¡-?d ˜­*Ϧ`¸ @  "€¢-?d Ø­*M7wf @  #€£-?d ®*Q¸‚µ @  $€¤-?d X®*Ó)•k @  %€¥-?d ˜®*2z2 @  &€¦-?d Ø®*£mì @  '€§-?d ¯*ÁËó¦ @  (€¨-?d X¯*CZäx @  )€©-?d ˜¯*A ! @  *€ª-?d د*“Ðÿ @  +€«-?d °*¬Åõ_ @  ,€¬-?d X°*.Tâ @  -€­-?d ˜°*|O Ø @  .€®-?d ذ*þÞ @  /€¯-?d ±*ôGØ@ @  0€°-?d X±*vÖÏž @  1€±-?d ˜±*$Í Ç @  2€²-?d ر*¦\7 @  3€³-?d ²*ºÓÂÊ @  4€´-?d X²*8BÕ @  5€µ-?d ˜²*jY:M @  6€¶-?d ز*èÈ-“ @  7€·-?d ³** ³Ù @  8€¸-?d X³*¨1¤ @  9€¹-?d ˜³*ú*K^ @  :€º-?d س*x»\€ @  ;€»-?d ´*à>ú @  <€¼-?d X´*b¯íC @  =€½-?d ˜´*0´ @  >€¾-?d Ø´*²%Ä @  ?€¿-?d µ*jZÚm @  @€À-?d Xµ*èËͳ @  A€Á-?d ˜µ*ºÐ"ê @  B€Â-?d ص*8A54 @  C€Ã-?d ¶*$ÎÀç @  D€Ä-?d X¶*¦_×9 @  E€Å-?d ˜¶*ôD8` @  F€Æ-?d ض*vÕ/¾ @  G€Ç-?d ·*´½±ô @  H€È-?d X·*6,¦* @  I€É-?d ˜·*d7Is @  J€Ê-?d Ø·*æ¦^­ @  K€Ë-?d ¸*S’‡¢ @  L€Ì-?d X¸*Ñ| @  M€Í-?d ˜¸*ƒ% @  N€Î-?d ظ*‰hû @  O€Ï-?d ¹* ª½ @  P€Ð-?d X¹*‰½c @  Q€Ñ-?d ˜¹*ÛšR: @  R€Ò-?d ع*Y Eä @  S€Ó-?d º*E„°7 @  T€Ô-?d Xº*ǧé @  U€Õ-?d ˜º*•H° @  V€Ö-?d غ*Ÿ_n @  W€×-?d »*Õ÷Á$ @  X€Ø-?d X»*WfÖú @  Y€Ù-?d ˜»*}9£ @  Z€Ú-?d Ø»*‡ì.} @  [€Û-?d ¼*iˆ` @  \€Ü-?d X¼*øŸ¾ @  ]€Ý-?d ˜¼*Ïãpç @  ^€Þ-?d ؼ*Mrg9 @  _€ß-?d ½*ËZ» @  `€à-?d X½*IˬÍ @  a€á-?d ˜½*ÐC” @  b€â-?d ؽ*™ATJ @  c€ã-?d ¾*…Ρ™ @  d€ä-?d X¾*_¶G @  e€å-?d ˜¾*UDY @  f€æ-?d ؾ*×ÕNÀ @  g€ç-?d ¿*½ÐŠ @  h€è-?d X¿*—,ÇT @  i€é-?d ˜¿*Å7(  @uÐÀ*  j€ê-?d Ø¿*G¦?Ó @  k€ë-?d 0À*¢;“ @  l€ì-?d pÀ* ,M @  m€í-?d °À*rà @  n€î-?d ðÀ*ð†ÔÊ @  o€ï-?d 0Á*úŒ @  p€ð-?d pÁ*xŽR @  q€ñ-?d °Á**•î  @  r€ò-?d ðÁ*¨ùÕ @  s€ó-?d 0Â*´‹  @  t€ô-?d pÂ*6Ø @  u€õ-?d °Â*dô @  v€ö-?d ðÂ*æã_ @  w€÷-?d 0Ã*$ø} @  x€ø-?d pÃ*¦ijË @  y€ù-?d °Ã*ôr…’ @  z€ú-?d ðÃ*vã’L @  {€û-?d 0Ä*îf4Q @  |€ü-?d pÄ*l÷# @  }€ý-?d °Ä*>ìÌÖ @  ~€þ-?d ðÄ*¼}Û @  €ÿ-?d 0Å*W×+ @  €€.?d pÅ*ÕFõ @  €.?d °Å*‡]è¬ @  ‚€.?d ðÅ*Ìÿr @  ƒ€.?d 0Æ*C ¡ @  „€.?d pÆ*›Ò @  …€.?d °Æ*ÉÉò& @  †€.?d ðÆ*KXåø @  ‡€.?d 0Ç*‰0{² @  ˆ€.?d pÇ* ¡ll @  ‰€ .?d °Ç*Yºƒ5 @  Š€ .?d ðÇ*Û+”ë @  ‹€ .?d 0È*nMä @  Œ€ .?d pÈ*ìŽZ: @  € .?d °È*¾•µc @  Ž€.?d ðÈ*<¢½ @  €.?d 0É*6`û @  €.?d pÉ*´ w% @  ‘€.?d °É*æ˜| @  ’€.?d ðÉ*d†¢ @  “€.?d 0Ê*x zq @  ”€.?d pÊ*ú˜m¯ @  •€.?d °Ê*¨ƒ‚ö @  –€.?d ðÊ**•( @  —€.?d 0Ë*èz b @  ˜€.?d pË*jë¼ @  ™€.?d °Ë*8ðóå @  š€.?d ðË*ºaä; @  ›€.?d 0Ì*"äB& @  œ€.?d pÌ* uUø @  €.?d °Ì*ònº¡ @  ž€.?d ðÌ*pÿ­ @  Ÿ€.?d 0Í*ö×qU @   € .?d pÍ*tFf‹ @  ¡€!.?d °Í*&]‰Ò @  ¢€".?d ðÍ*¤Ìž  @  £€#.?d 0Î*¸Ckß @  ¤€$.?d pÎ*:Ò| @  ¥€%.?d °Î*hÉ“X @  ¦€&.?d ðÎ*êX„† @  §€'.?d 0Ï*(0Ì @  ¨€(.?d pÏ*ª¡  @  ©€).?d °Ï*øºâK @  ª€*.?d ðÏ*z+õ• @  «€+.?d 0Ð*E>5 @  ¬€,.?d pÐ*ǯ ë @  ­€-.?d °Ð*•´ä² @  ®€..?d ðÐ*%ól @  ¯€/.?d 0Ñ*¼1* @  °€0.?d pÑ*Ÿ-&ô @  ±€1.?d °Ñ*Í6É­ @  ²€2.?d ðÑ*O§Þs @  ³€3.?d 0Ò*S(+  @  ´€4.?d pÒ*ѹ<~ @  µ€5.?d °Ò*ƒ¢Ó' @  ¶€6.?d ðÒ*3Äù @  ·€7.?d 0Ó*Ã[Z³ @  ¸€8.?d pÓ*AÊMm @  ¹€9.?d °Ó*Ñ¢4 @  º€:.?d ðÓ*‘@µê @  »€;.?d 0Ô* Å÷ @  ¼€<.?d pÔ*‹T) @  ½€=.?d °Ô*ÙOëp @  ¾€>.?d ðÔ*[Þü® @  ¿€?.?d 0Õ*ƒ¡3 @  À€@.?d pÕ*0$Ù @  Á€A.?d °Õ*S+Ë€ @  €B.?d ðÕ*ѺÜ^ @  ÀC.?d 0Ö*Í5) @  Ä€D.?d pÖ*O¤>S @  Å€E.?d °Ö*¿Ñ  @  Æ€F.?d ðÖ*Ÿ.ÆÔ @  Ç€G.?d 0×*]FXž @  È€H.?d p×*ß×O@ @  É€I.?d °×*Ì  @  Ê€J.?d ð×*]·Ç @  Ë€K.?d 0Ø*ºinÈ @  Ì€L.?d pØ*8øy @  Í€M.?d °Ø*jã–O @  ΀N.?d ðØ*èr‘ @  Ï€O.?d 0Ù*âëC× @  ЀP.?d pÙ*`zT  @  Ñ€Q.?d °Ù*2a»P @  Ò€R.?d ðÙ*°ð¬Ž @  Ó€S.?d 0Ú*¬Y] @  Ô€T.?d pÚ*.îNƒ @  Õ€U.?d °Ú*|õ¡Ú @  Ö€V.?d ðÚ*þd¶ @  ×€W.?d 0Û*< (N @  Ø€X.?d pÛ*¾? @  Ù€Y.?d °Û*ì†ÐÉ @  Ú€Z.?d ðÛ*nÇ @  Û€[.?d 0Ü*ö’a  @  Ü€\.?d pÜ*tvÔ @  Ý€].?d °Ü*&™ @  Þ€^.?d ðÜ*¤‰ŽS @  ߀_.?d 0Ý*"¡Ry @  à€`.?d pÝ* 0E§ @  á€a.?d °Ý*ò+ªþ @  â€b.?d€ ðÝ*y¡† @  €c.?d 0Þ*ù·| @  €d.?d pÞ*{& ¢ @  €e.?d °Þ*ìt @  €f.?d ðÞ*nåÈ @  €g.?d 0ß*b?Éø @  €h.?d pß*à®Þ& @  €i.?d uÐà*/°ß*|n @  €j.?d ðß*ƒ § @   k.?d Hà*Þ0ú® @   l.?d ˆà*þÅøP @   m.?d Èà*ËóùÄ @   n.?d á*»u, @   o.?d Há* èMÆ @  p.?d ˆá*O8 @  q.?d Èá*QØ3 @  r.?d â*Ìœ“Ï @  s.?d Hâ* *î @  t.?d ˆâ**z( @  u.?d Èâ*L)„ @  v.?d ã*Ï¥l @  w.?d Hã*S®¿ @  x.?d ˆã*s[A @  y.?d Èã*M–¿B @  z.?d ä*TØLM @  {.?d Hä*’Ëõl @  |.?d ˆä*²>÷’ @  }.?d Èä*‡ö @  ~.?d å*W@zî @  .?d Hå*2:[ @  €.?d ˆå*<Ç8¥ @  .?d Èå*¾­„ö @   ‚.?d æ*#é$7 @  !ƒ.?d Hæ*åú @  "„.?d ˆæ*ÅŸè @  #….?d Èæ*ð9ž| @  $†.?d ç* q” @  %‡.?d Hç*~rH’ @  &ˆ.?d ˆç*^‡Jl @  '‰.?d Èç*`Jïo @  (Š.?d è*Tµcr @  )‹.?d Hè*’¦ÚS @  *Œ.?d ˆè*²SØ­ @  +.?d Èè*‡eÙ9 @  ,Ž.?d é*W-UÑ @  -.?d Hé*l~m; @  ..?d ˆé*L‹oÅ @  /‘.?d Èé*ßçô& @  0’.?d ê*B£Tç @  1“.?d Hê*„°íÆ @  2”.?d ˆê*¤Eï8 @  3•.?d Èê*‘sî¬ @  4–.?d ë*A;bD @  5—.?d Hë*88B @  6˜.?d ˆë*?Í:¼ @  7™.?d Èë*Ÿ¿ @  8š.?d ì*Nl° @  9›.?d Hì*Þ]Õ‘ @  :œ.?d ˆì*þ¨×o @  ;.?d Èì*ËžÖû @  <ž.?d í*ÖZ @  =Ÿ.?d Hí*½2[% @  > .?d ˆí*ÇYÛ @  ?¡.?d Èí*±ªã @  @¢.?d î*,îCÛ @  A£.?d Hî*êýúú @  B¤.?d ˆî*Êø @  C¥.?d Èî*ÿ>ù @  D¦.?d ï*/vux @  E§.?d Hï*qu/~ @  F¨.?d ˆï*Q€-€ @  G©.?d Èï*oMˆƒ @  Hª.?d ð*Ñ“41 @  I«.?d Hð*€ @  J¬.?d ˆð*7uî @  K­.?d Èð*CŽz @  L®.?d ñ*Ò ’ @  M¯.?d Hñ*éX:x @  N°.?d ˆñ*É­8† @  O±.?d Èñ*ZÁ£e @  P².?d ò*Ç…¤ @  Q³.?d Hò*–º… @  R´.?d ˆò*!c¸{ @  Sµ.?d Èò*U¹ï @  T¶.?d ó*Ä5 @  U·.?d Hó*šo @  V¸.?d ˆó*ºëmÿ @  W¹.?d Èó*„&Èü @  Xº.?d ô*h;ó @  Y».?d Hô*[{‚Ò @  Z¼.?d ˆô*{Ž€, @  [½.?d Èô*N¸¸ @  \¾.?d õ*žð P @  ]¿.?d Hõ*ÈDw @  ^À.?d ˆõ*豉 @  _Á.?d Èõ*jÛ§Ú @  `Â.?d ö*÷Ÿ @  aÃ.?d Hö*1Œ¾: @  bÄ.?d ˆö*y¼Ä @  cÅ.?d Èö*$O½P @  dÆ.?d ÷*ô1¸ @  eÇ.?d H÷*ªk¾ @  fÈ.?d ˆ÷*Šñi@ @  gÉ.?d È÷*´<ÌC @  hÊ.?d ø*€Ã@^ @  iË.?d Hø*FÐù @  jÌ.?d ˆø*f%û @  kÍ.?d Èø*Sú @  lÎ.?d ù*ƒ[vý @  mÏ.?d Hù*¸N @  nÐ.?d ˆù*˜ýLé @  oÑ.?d Èù* ‘×  @  pÒ.?d ú*–ÕwË @  qÓ.?d Hú*PÆÎê @  rÔ.?d ˆú*p3Ì @  sÕ.?d Èú*EÍ€ @  tÖ.?d û*•MAh @  u×.?d Hû*ËNn @  vØ.?d ˆû*ë» @  wÙ.?d Èû*Õv¼“ @  xÚ.?d ü*Ì8Oœ @  yÛ.?d Hü* +ö½ @  zÜ.?d ˆü**ÞôC @  {Ý.?d Èü*èõ× @  |Þ.?d ý*Ï y? @  }ß.?d Hý*iDx  @  ~à.?d ˆý*I±z÷ @  á.?d Èý*†Šð @  €â.?d þ*ÎPÆ @  ã.?d Hþ*ÝÝéç @  ‚ä.?d ˆþ*ý(ë @  ƒå.?d Èþ*Èê @  „æ.?d ÿ*Vfe @  …ç.?d Hÿ*FU @  ‡uÐ+é.?d Èÿ*Xm›ž @  ˆê.?d +Ù³o @  ‰ë.?d `+ÑÊ N @  Šì.?d  +ñ?° @  ‹í.?d à+Ä $ @  Œî.?d +A…Ì @  ï.?d `+/½& @  Žð.?d  +ç¿Ø @  ñ.?d à+œ‹$; @  ò.?d +Ï„ú @  ‘ó.?d `+ÇÜ=Û @  ’ô.?d  +ç)?% @  “õ.?d à+Ò>± @  ”ö.?d +W²Y @  •÷.?d `+\Tè_ @  –ø.?d  +|¡ê¡ @  —ù.?d à+BlO¢ @  ˜ú.?d +["¼­ @  ™û.?d `+1Œ @  šü.?d  +½Är @  ›ý.?d à+ˆòæ @  œþ.?d +XºŠ @  ÿ.?d `+l¯Ÿ· @  ž/?d  +LZI @  Ÿ/?d à+Î0! @   /?d +StÛ @  ¡/?d `+•g8ú @  ¢/?d  +µ’: @  £/?d à+€¤; @  ¤/?d +Pì·x @  ¥/?d `+ïí~ @  ¦/?d  +.ï€ @  § /?d à+×Jƒ @  ¨ /?d +$(Æž @  © /?d `+â;¿ @  ª /?d  +ÂÎ}A @  « /?d à+÷ø|Õ @  ¬/?d +'°ð= @  ­/?d ` +ãÈ× @  ®/?d   +<Ê) @  ¯/?d à +¯zQÊ @  °/?d +2>ñ  @  ±/?d ` +ô-H* @  ²/?d   +ÔØJÔ @  ³/?d à +áîK@ @  ´/?d +1¦Ç¨ @  µ/?d ` +o¥® @  ¶/?d   +OPŸP @  ·/?d à +q:S @  ¸/?d +hÓÉ\ @  ¹/?d ` +®Àp} @  º/?d   +Ž5rƒ @  »/?d à +»s @  ¼/?d +kKÿÿ @  ½/?d ` +ͯþÉ @  ¾ /?d   +íZü7 @  ¿!/?d à +Á7Fö @  À"/?d +\sæ7 @  Á#/?d `+š`_ @  Â$/?d  +º•]è @  Ã%/?d à+£\| @  Ä&/?d +_ëД @  Å'/?d `+芒 @  Æ(/?d  +!ˆl @  Ç)/?d à+Ð-o @  È*/?d +¡‘Ý @  É+/?d `+g(ü @  Ê,/?d  +Gè* @  Ë-/?d à+rÞ+– @  Ì./?d +¢–§~ @  Í//?d `+™ÅŸ” @  Î0/?d  +¹0j @  Ï1/?d à+*\‰ @  Ð2/?d +·¦H @  Ñ3/?d `+q i @  Ò4/?d  +Qþ— @  Ó5/?d à+dÈ @  Ô6/?d +´€ë @  Õ7/?d `+êƒÊí @  Ö8/?d  +ÊvÈ @  ×9/?d à+ô»m @  Ø:/?d +íõž @  Ù;/?d `++æ'> @  Ú%$T @  Ü>/?d +îm¨¼ @  Ý?/?d `+¸Ù¼› @  Þ@/?d  +˜,¾e @  ßA/?d à+F6 @  àB/?d +‡¢÷ @  áC/?d `+AÖ @  âD/?d€  + £î( @  E/?d à+tÔ§• @  F/?d +¤œ+} @  G/?d `+?ÖŠ– @  H/?d  +#ˆh @  I/?d à+ï\r @  J/?d +Û£þ  @  K/?d `+ÓW @  L/?d  +ó÷© @   M/?d à+ˆàÐ @   N/?d +ÓÀl8 @   O/?d `+-Ú¯? @   P/?d  + /­Á @   Q/?d à+ýPW¸ @  R/?d +`÷y @  S/?d `+Å/ @  T/?d  +åá-< @  U/?d à+ž×E @  V/?d +ÅÖ[­ @  W/?d `+^œúF @  X/?d  +~iø¸ @  Y/?d à+ŽÁ @  Z/?d +—XñÎ @  [/?d `+Ÿù• @  \/?d  +¿ k @  ]/?d à+Osï @  ^/?d +Ÿ;cú @  _/?d `+ü–™! @  `/?d  +Üc›ß @  a/?d à+,a¦ @  b/?d +±XÁg @  c/?d `+^>l @   d/?d  +%«<’ @  !e/?d à+ÕÔÆë @  "f/?d +œJ @  #g/?d `+žÖëè @  $h/?d  +¾#éuÐ + @  %i/?d à+N\o @  &j/?d 8 +?WÍ  @  'k/?d x +7ö+R @  (l/?d ¸ +)¬ @  )m/?d ø +ç|ÓÕ @  *n/?d 8!+74_= @  +o/?d x!+É.œ: @  ,p/?d ¸!+éÛžÄ @  -q/?d ø!+¤d½ @  .r/?d 8"+„àÄ| @  /s/?d x"+!àÇ @  0t/?d ¸"+9 @  1u/?d ø"+ñjä@ @  2v/?d 8#+!"h¨ @  3w/?d x#+ºhÉC @  4x/?d ¸#+šË½ @  5y/?d ø#+jâ1Ä @  6z/?d 8$+s¬ÂË @  7{/?d x$+{ $ @  8|/?d ¸$+[ø&n @  9}/?d ø$+«‡Ü @  :~/?d 8%+{ÏPÿ @  ;/?d x%+õôë§ @  <€/?d ¸%+ÕéY @  =/?d ø%+%~  @  >‚/?d 8&+¸:³á @  ?ƒ/?d x&+¢;Jx @  @„/?d ¸&+‚ÎH† @  A…/?d ø&+r±²ÿ @  B†/?d 8'+¢ù> @  C‡/?d x'+9³Ÿü @  Dˆ/?d ¸'+F @  E‰/?d ø'+é9g{ @  FŠ/?d 8(+ÝÆëf @  G‹/?d x(+Õg = @  HŒ/?d ¸(+õ’à @  I/?d ø(+íõº @  JŽ/?d 8)+Õ¥yR @  K/?d x)++¿ºU @  L/?d ¸)+ J¸« @  M‘/?d ø)+û5BÒ @  N’/?d 8*+fqâ @  O“/?d x*+Ãq:¨ @  P”/?d ¸*+ã„8V @  Q•/?d ø*+ûÂ/ @  R–/?d 8++óNÇ @  S—/?d x++Xùï, @  T˜/?d ¸++x íÒ @  U™/?d ø++ˆs« @  Vš/?d 8,+‘=ä¤ @  W›/?d x,+™œÿ @  Xœ/?d ¸,+¹i @  Y/?d ø,+Iúx @  Zž/?d 8-+™^v @  [Ÿ/?d x-+úóŒK @  \ /?d ¸-+Ú޵ @  ]¡/?d ø-+*ytÌ @  ^¢/?d 8.+·=Ô  @  _£/?d x.+;+ @  `¤/?d ¸.+#Î)ø @  a¥/?d ø.+Ó±Ó @  b¦/?d 8/+ù_i @  c§/?d x/+˜³þ‚ @  d¨/?d ¸/+¸Fü| @  e©/?d ø/+H9 @  fª/?d 80+ö纷 @  g«/?d x0+þF\ì @  h¬/?d ¸0+Þ³^ @  i­/?d ø0+.̤k @  j®/?d 81+þ„(ƒ @  k¯/?d x1+žë„ @  l°/?d ¸1+ kéz @  m±/?d ø1+Ð @  n²/?d 82+MP³Â @  o³/?d x2+èPky @  p´/?d ¸2+È¥i‡ @  qµ/?d ø2+8Ú“þ @  r¶/?d 83+è’ @  s·/?d x3+sؾý @  t¸/?d ¸3+S-¼ @  u¹/?d ø3+£RFz @  vº/?d 84+ºµu @  w»/?d x4+²½S. @  x¼/?d ¸4+’HQÐ @  y½/?d ø4+b7«© @  z¾/?d 85+²'A @  {¿/?d x5+!‚È‹ @  |À/?d ¸5+wÊu @  }Á/?d ø5+ñ0  @  ~Â/?d 86+lLÍ @  Ã/?d x6+•Ye @  €Ä/?d ¸6+µî[› @  Å/?d ø6+E‘¡â @  ‚Æ/?d 87+•Ù-  @  ƒÇ/?d x7+“Œá @  „È/?d ¸7+.fŽ @  …É/?d ø7+Þtf @  †Ê/?d 88+êæø{ @  ‡Ë/?d x8+âG  @  ˆÌ/?d ¸8+²Þ @  ‰Í/?d ø8+2Íæ§ @  ŠÎ/?d 89+â…jO @  ‹Ï/?d x9+Ÿ©H @  ŒÐ/?d ¸9++€Ç @  Ÿã/?d x>+48 @   ä/?d ¸>+î:å @  ¡å/?d ø>+ä‘Àœ @  ¢æ/?d 8?+4ÙLt @  £ç/?d x?+¯“íŸ @  ¤è/?duÐ@+7 ¸?+fïa @  ¥é/?d ø?+FÞÉÍ @  ¦ ê/?d P@+…rsñ @  § ë/?d @+/·€Š @  ¨ ì/?d Ð@+­&—T @  © í/?d A+€ö @  ª î/?d PA+áÅ @  « ï/?d A+Ño7â @  ¬ ð/?d ÐA+Sþ < @  ­ ñ/?d B+¼TmZ @  ® ò/?d PB+>Åz„ @  ¯ ó/?d B+9¡· @  ° ô/?d ÐB+»0 Á @  ± õ/?d C+–ÁŽ @  ² ö/?d PC+›ÖP @  ³ ÷/?d C+¢)b› @  ´ ø/?d ÐC+ ¸uE @  µ ù/?d D+Kkí @  ¶ ú/?d PD+ɉ|3 @  · û/?d D+cLH @  ¸ ü/?d ÐD+áݘ– @  ¹ ý/?d E+C{ùÙ @  º þ/?d PE+Áêî @  » ÿ/?d E+kW3à @  ¼ 0?d ÐE+éÆ$ @  ½ 0?d F+li{ @  ¾ 0?d PF+„ý~¥ @  ¿ 0?d F+<˜’ @  À 0?d ÐF+¾ … @  Á 0?d G+¯ä @   0?d PG+ž>óS @  à 0?d G+§G˜ @  Ä 0?d ÐG+%PF @  Å  0?d H+c1ü @  Æ  0?d PH+á&" @  Ç  0?d H+KÄÕY @  È  0?d ÐH+ÉU‡ @  É  0?d I+kó£È @  Ê 0?d PI+éb´ @  Ë 0?d I+µb1 @  Ì 0?d ÐI+7uï @  Í 0?d J+Ø'8‰ @  Î 0?d PJ+Z¶/W @  Ï 0?d J+]ÒâÌ @  Ð 0?d ÐJ+ßCõ @  Ñ 0?d K+}å”] @  Ò 0?d PK+ÿtƒƒ @  Ó 0?d K+ÆZ7H @  Ô 0?d ÐK+DË – @  Õ 0?d L+/k>> @  Ö 0?d PL+­ú)à @  × 0?d L+?Ú› @  Ø 0?d ÐL+…®ÍE @  Ù 0?d M+'¬  @  Ú 0?d PM+¥™»Ô @  Û 0?d M+dPT/ @  Ü  0?d ÐM+æÁCñ @  Ý !0?d N+ k— @  Þ "0?d PN+‹úI @  ß #0?d N+˜ób @  à $0?d ÐN+ ä¼ @  á %0?d O+½¯…ó @  â &0?d€ PO+KýŽ‹ @   '0?d O+“’ri @   (0?d ÐO+e· @   )0?d P+zÏO @   *0?d PP+šëØ‘ @   +0?d P+þœt @   ,0?d ÐP+| cN @   -0?d Q+]{ @   .0?d PQ+’ˆJ¥ @   /0?d Q+ ¿go @   00?d ÐQ+‰.p± @   10?d R+£ÍÆ: @   20?d PR+!\Ñä @   30?d R+E+}å @   40?d ÐR+Ǻj; @   50?d S+jî @   60?d PS+„ž}0 @   70?d S+xù2 @   80?d ÐS+úh%È @   90?d T+TÀ @   :0?d PT+Ö×S @   ;0?d T+²g{R @   <0?d ÐT+0ölŒ @   =0?d U+\âR¹ @   >0?d PU+ÞsEg @   ?0?d U+*£D` @   @0?d ÐU+¨2S¾ @   A0?d V+‚Ñå5 @   B0?d PV+@òë @   C0?d V+d7^ê @   D0?d ÐV+æ¦I4 @   E0?d W+6nQ @   F0?d PW+´„y @  ! G0?d W+Hã6© @  " H0?d ÐW+Êr!w @  # I0?d X+I*»  @  $ J0?d PX+Ë»¬þ @  % K0?d X+¯Ìÿ @  & L0?d ÐX+-]! @  ' M0?d Y+AI) @  ( N0?d PY+ÃØ>Ê @  ) O0?d Y+Zï @  * P0?d ÐY+Ø~Þ @  + Q0?d Z+ò²U @  , R0?d PZ+p ¥‹ @  - S0?d Z+{ Š @  . T0?d ÐZ+–êT @  / U0?d [+W_ @  0 V0?d P[+ÕÎ _ @  1 W0?d [+)©Fy @  2 X0?d Ð[+«8Q§ @  3 Y0?d \+Ñ´â @  4 Z0?d P\+‡@£< @  5 [0?d \+ã7= @  6 \0?d Ð\+a¦ã @  7 ]0?d ]+ ²&Ö @  8 ^0?d P]+#1 @  9 _0?d ]+‹£% @  : `0?d Ð]+ 22À @  ; a0?d ^+#Ñ„K @  < b0?d P^+¡@“• @  = c0?d ^+Å7?” @  > d0?d Ð^+G¦(J @  ? e0?d _+9 ½ @  @ f0?d P_+»ƒc @  A g0?d _+GäQE @  uÐ`+B h0?d Ð_+ÅuF› @  C i0?d (`+Ì*åI @  D j0?d h`+N»ò— @  E k0?d ¨`+*Ì^– @  F l0?d è`+¨]IH @  G m0?d (a+ÄIw} @  H n0?d ha+FØ`£ @  I o0?d ¨a+ßïMi @  J p0?d èa+]~Z· @  K q0?d (b+wì< @  L r0?d hb+õ ûâ @  M s0?d ¨b+‘{Wã @  N t0?d èb+ê@= @  O u0?d (c+Ò_@è @  P v0?d hc+PÎW6 @  Q w0?d ¨c+¬© @  R x0?d èc+.8Î @  S y0?d (d+€Ñê‹ @  T z0?d hd+@ýU @  U {0?d ¨d+f7QT @  V |0?d èd+ä¦FŠ @  W }0?d (e+ˆ²x¿ @  X ~0?d he+ #oa @  Y 0?d ¨e+ã5:ô @  Z €0?d èe+a¤-* @  [ 0?d (f+KG›¡ @  \ ‚0?d hf+ÉÖŒ @  ] ƒ0?d ¨f+­¡ ~ @  ^ „0?d èf+/07  @  _ …0?d (g+ÿƒÅ @  ` †0?d hg+} @  a ‡0?d ¨g+uH= @  b ˆ0?d èg+ä_ã @  c ‰0?d (h+€¼Å´ @  d Š0?d hh+-Òj @  e ‹0?d ¨h+fZ~k @  f Œ0?d èh+äËiµ @  g 0?d (i+ˆßW€ @  h Ž0?d hi+ N@^ @  i 0?d ¨i+“ym” @  j 0?d èi+èzJ @  k ‘0?d (j+; ÌÁ @  l ’0?d hj+¹šÛ @  m “0?d ¨j+Ýíw @  n ”0?d èj+_|`À @  o •0?d (k+žÉ` @  p –0?d hk+XwË @  q —0?d ¨k+à?8í @  r ˜0?d èk+b®/3 @  s ™0?d (l+ÌGÊv @  t š0?d hl+NÖݨ @  u ›0?d ¨l+*¡q© @  v œ0?d èl+¨0fw @  w 0?d (m+Ä$XB @  x ž0?d hm+FµOœ @  y Ÿ0?d ¨m+B5[Š @  z  0?d èm+À¤LT @  { ¡0?d (n+êGúß @  | ¢0?d hn+hÖí @  } £0?d ¨n+ ¡A @  ~ ¤0?d èn+Ž0VÞ @   ¥0?d (o+ÒG @  € ¦0?d ho+‘CPÆ @   §0?d ¨o+m$à @  ‚ ¨0?d èo+ïµ> @  ƒ ©0?d (p+æÌ¢Æ @  „ ª0?d hp+d]µ @  … «0?d ¨p+* @  † ¬0?d èp+‚»Ç @  ‡ ­0?d (q+î¯0ò @  ˆ ®0?d hq+l>', @  ‰ ¯0?d ¨q+õ æ @  Š °0?d èq+w˜8 @  ‹ ±0?d (r+]{«³ @  Œ ²0?d hr+ßê¼m @   ³0?d ¨r+»l @  Ž ´0?d èr+9 ² @   µ0?d (s+ø¹g @   ¶0?d hs+z(¹ @  ‘ ·0?d ¨s+†O_Ÿ @  ’ ¸0?d ès+ÞHA @  “ ¹0?d (t+ª7­ @  ” º0?d ht+(¦ºÚ @  • »0?d ¨t+LÑÛ @  – ¼0?d èt+Î@ @  — ½0?d (u+¢T?0 @  ˜ ¾0?d hu+ Å(î @  ™ ¿0?d ¨u+Ô)é @  š À0?d èu+V„>7 @  › Á0?d (v+|gˆ¼ @  œ Â0?d hv+þöŸb @   Ã0?d ¨v+š3c @  ž Ä0?d èv+$½ @  Ÿ Å0?d (w+飯 @    Æ0?d hw+J2 @  ¡ Ç0?d ¨w+¶U[  @  ¢ È0?d èw+4ÄLþ @  £ É0?d (x+·œÖ© @  ¤ Ê0?d hx+5 Áw @  ¥ Ë0?d ¨x+Qzmv @  ¦ Ì0?d èx+Óëz¨ @  § Í0?d (y+¿ÿD @  ¨ Î0?d hy+=nSC @  © Ï0?d ¨y+¤Y~‰ @  ª Ð0?d èy+&ÈiW @  « Ñ0?d (z+ +ßÜ @  ¬ Ò0?d hz+ŽºÈ @  ­ Ó0?d ¨z+êÍd @  ® Ô0?d èz+h\sÝ @  ¯ Õ0?d ({+©és @  ° Ö0?d h{++xdÖ @  ± ×0?d ¨{+×+ð @  ² Ø0?d è{+UŽ<. @  ³ Ù0?d (|+ûgÙk @  ´ Ú0?d h|+yöε @  µ Û0?d ¨|+b´ @  ¶ Ü0?d è|+Ÿuj @  · Ý0?d (}+óK_ @  ¸ Þ0?d h}+q•\ @  ¹ ß0?d ¨}+uH— @  º à0?d è}+÷„_I @  » á0?d (~+Ýgé @  ¼ â0?d h~+_öþ @  ½ ã0?d ¨~+;R @  ¾ ä0?d è~+B~~à @  ¿å0?d (+<Ê_4 @  Àæ0?d h+¾[Hê @  Áç0?d ¨+uЀ+'B<Ì @  Âè0?d è+÷Ç @  Ãé0?d @€+Ûù @  Äê0?d €€+ûè @  Åë0?d À€+=û¸& @  Æì0?d +í³4Î @  Çí0?d @+Ó~‘Í @  Èî0?d €+ó‹“3 @  Éï0?d À+ÈØ«Ù @  Êð0?d ‚+Uœ  @  Ëñ0?d @‚+`ª Œ @  Ìò0?d €‚+@_r @  Íó0?d À‚+†L±S @  Îô0?d ƒ+V=» @  Ïõ0?d @ƒ+Åh¦X @  Ðö0?d €ƒ+夦 @  Ñ÷0?d Àƒ+»žþ  @  Òø0?d „+¢Ð ¯ @  Óù0?d @„+—æ ; @  Ôú0?d €„+·Å @  Õû0?d À„+q·ä @  Öü0?d …+¡H;  @  ×ý0?d @…+Ÿ…ž @  Øþ0?d €…+¿pœñ @  Ùÿ0?d À…+‹e‰H @  Ú1?d †+!)‰ @  Û1?d @†+#( @  Ü1?d €†+â*ã @  Ý1?d À†+Åñ“ @  Þ1?d ‡+¹* @  ß1?d @‡+—Ó£y @  à1?d €‡+·&¡‡ @  á1?d À‡+é%û @  â1?d€ ˆ+[Œß% @   1?d @ˆ+û–˜ @   1?d €ˆ+¯”f @   1?d Àˆ+¬TÖª @   1?d ‰+|ZB @   1?d @‰+Œc ; @  1?d €‰+¬–¢Å @  1?d À‰+YwÅU @  1?d Š+Ä3e” @   1?d @Š+4LŸí @   1?d €Š+¹ @   1?d ÀŠ+ãßß @   1?d ‹+Ç«S7 @   1?d @‹+7Ô©N @  1?d €‹+!«° @  1?d À‹+*1, @  1?d Œ+3c# @  1?d @Œ+ÙZ @  1?d €Œ+ãõ›¤ @  1?d ÀŒ+à¯Ùh @  1?d +0çU€ @  1?d @+À˜¯ù @  1?d €+àm­ @  1?d À+ˆ;óK @   1?d Ž+SŠ @  !1?d @Ž+å©ó @  "1?d €Ž+Åõ«  @  #1?d ÀŽ+ƯéÁ @  $1?d +çe) @  %1?d @+星P @  &1?d €+Æm® @  '1?d À+ê{‚ @   (1?d +T¥=0 @  !)1?d @+¤ÚÇI @  "*1?d €+„/Å· @  #+1?d À+‡u‡{ @  $,1?d ‘+W= “ @  %-1?d @‘+§Bñê @  &.1?d €‘+‡·ó @  '/1?d À‘+rV”„ @  (01?d ’+ï4E @  )11?d @’+mÎ< @  *21?d €’+?˜Ì @  +31?d À’+<ÂŽ @  ,41?d “+ìŠæ @  -51?d @“+õøŸ @  .61?d €“+<úa @  /71?d À“+Áý @  081?d ”+^2ò @  191?d @”+è!È‹ @  2:1?d €”+ÈÔÊu @  3;1?d À”+ËŽˆ¹ @  4<1?d •+ÆQ @  5=1?d @•+ë¹þ( @  6>1?d €•+ËLüÖ @  7?1?d À•+SJ·‹ @  8@1?d –+ÎJ @  9A1?d @–+>qí3 @  :B1?d €–+„ïÍ @  ;C1?d À–+Þ­ @  <D1?d —+Í–!é @  =E1?d @—+=éÛ @  >F1?d €—+Ùn @  ?G1?d À—+Ÿ ÃÐ @  @H1?d ˜+«òOÍ @  AI1?d @˜+[µ´ @  BJ1?d €˜+{x·J @  CK1?d À˜+x"õ† @  DL1?d ™+¨jyn @  EM1?d @™+Xƒ @  FN1?d €™+xàé @  GO1?d À™+æy @  HP1?d š+EF¸ @  IQ1?d @š+à:¼Á @  JR1?d €š+ÀϾ? @  KS1?d Àš+Õüó @  LT1?d ›+Ýp @  MU1?d @›+㢊b @  NV1?d €›+ÃWˆœ @  OW1?d À›+þG³ @  PX1?d œ+ç @ @  QY1?d @œ+vºv @  RZ1?d €œ+7ƒ¸ˆ @  S[1?d Àœ+4ÙúD @  T\1?d +ä‘v¬ @  U]1?d @+îŒÕ @  V^1?d €+4Ž+ @  W_1?d À+\MÐg @  X`1?d ž+Á p¦ @  Ya1?d @ž+1vŠß @  Zb1?d €ž+ƒˆ! @  [c1?d Àž+ÙÊí @  \d1?d Ÿ+‘F @  ]e1?d @Ÿ+2î¼| @  ^f1?d €Ÿ+¾‚ @  _g1uР+?d ÀŸ+> ¢® @  `h1?d  +O|È @  ai1?d X +¿y†± @  bj1?d ˜ +ŸŒ„O @  ck1?d Ø +œÖƃ @  dl1?d ¡+LžJk @  em1?d X¡+¼á° @  fn1?d ˜¡+œ²ì @  go1?d Ø¡+iõÕ| @  hp1?d ¢+ô±u½ @  iq1?d X¢+ÎÄ @  jr1?d ˜¢+$;: @  ks1?d Ø¢+'aÏö @  lt1?d £+÷)C @  mu1?d X£+V¹g @  nv1?d ˜£+'£»™ @  ow1?d Ø£+³€ @  px1?d ¤+ýs  @  qy1?d X¤+ó‚‰s @  rz1?d ˜¤+Ów‹ @  s{1?d ؤ+Ð-ÉA @  t|1?d ¥+eE© @  u}1?d X¥+ð¿Ð @  v~1?d ˜¥+Ðï½. @  w1?d Ø¥+U/¢á @  x€1?d ¦+Èk  @  y1?d X¦+8øY @  z‚1?d ˜¦+áú§ @  {ƒ1?d ئ+»¸k @  |„1?d §+Ëó4ƒ @  }…1?d X§+;ŒÎú @  ~†1?d ˜§+yÌ @  ‡1?d ا+z>æ‹ @  €ˆ1?d ¨+NÁj– @  ‰1?d X¨+¾¾ï @  ‚Š1?d ˜¨+žK’ @  ƒ‹1?d ب+ÐÝ @  „Œ1?d ©+MY\5 @  …1?d X©+½&¦L @  †Ž1?d ˜©+Ó¤² @  ‡1?d Ø©+h2Ã" @  ˆ1?d ª+õvcã @  ‰‘1?d Xª+ ™š @  Š’1?d ˜ª+%ü›d @  ‹“1?d ت+&¦Ù¨ @  Œ”1?d «+öîU@ @  •1?d X«+‘¯9 @  Ž–1?d ˜«+&d­Ç @  —1?d Ø«+t–[ @  ˜1?d ¬+:eT @  ‘™1?d X¬+òEŸ- @  ’š1?d ˜¬+Ò°Ó @  “›1?d ج+Ñêß @  ”œ1?d ­+¢S÷ @  •1?d X­+ñÝ©Ž @  –ž1?d ˜­+Ñ(«p @  —Ÿ1?d Ø­+¹~õ< @  ˜ 1?d ®+$:Uý @  ™¡1?d X®+ÔE¯„ @  š¢1?d ˜®+ô°­z @  ›£1?d Ø®+÷êï¶ @  œ¤1?d ¯+'¢c^ @  ¥1?d X¯+×Ý™' @  ž¦1?d ˜¯+÷(›Ù @  Ÿ§1?d د+Û>‡õ @   ¨1?d °+eà;G @  ¡©1?d X°+•ŸÁ> @  ¢ª1?d ˜°+µjÃÀ @  £«1?d ذ+¶0  @  ¤¬1?d ±+fx ä @  ¥­1?d X±+–÷ @  ¦®1?d ˜±+¶òõc @  §¯1?d ر+C’ó @  ¨°1?d ²+ÞW22 @  ©±1?d X²+.(ÈK @  ª²1?d ˜²+Ýʵ @  «³1?d ز+ ‡ˆy @  ¬´1?d ³+ÝÏ‘ @  ­µ1?d X³+-°þè @  ®¶1?d ˜³+ Eü @  ¯·1?d س+0UÇŠ @  °¸1?d ´+)4… @  ±¹1?d X´+ÙdÎü @  ²º1?d ˜´+ù‘Ì @  ³»1?d Ø´+úËŽÎ @  ´¼1?d µ+*ƒ& @  µ½1?d Xµ+Úüø_ @  ¶¾1?d ˜µ+ú ú¡ @  ·¿1?d ص+b±ü @  ¸À1?d ¶+ÿK= @  ¹Á1?d X¶+4ëD @  ºÂ1?d ˜¶+/Áéº @  »Ã1?d ض+,›«v @  ¼Ä1?d ·+üÓ'ž @  ½Å1?d X·+ ¬Ýç @  ¾Æ1?d ˜·+,Yß @  ¿Ç1?d Ø·+®Hŧ @  ÀÈ1?d ¸+š·Iº @  ÁÉ1?d X¸+jȳà @  ÂÊ1?d ˜¸+J=±= @  ÃË1?d ظ+Igóñ @  ÄÌ1?d ¹+™/ @  ÅÍ1?d X¹+iP…` @  ÆÎ1?d ˜¹+I¥‡ž @  ÇÏ1?d ع+¼Dà @  ÈÐ1?d º+!@Ï @  ÉÑ1?d Xº+Ѻ¶ @  ÊÒ1?d ˜º+ñЏH @  ËÓ1?d غ+òÐú„ @  ÌÔ1?d »+"˜vl @  ÍÕ1?d X»+ÒçŒ @  ÎÖ1?d ˜»+òŽë @  Ï×1?d Ø»+ϵw @  ÐØ1?d ¼+ÖLFx @  ÑÙ1?d X¼+&3¼ @  ÒÚ1?d ˜¼+ƾÿ @  ÓÛ1?d ؼ+œü3 @  ÔÜ1?d ½+ÕÔpÛ @  ÕÝ1?d X½+%«Š¢ @  ÖÞ1?d ˜½+^ˆ\ @  ×ß1?d ؽ+mÖ @  Øà1?d ¾+ðLvÑ @  Ùá1?d X¾+3Œ¨ @  Úâ1?d ˜¾+ ÆŽV @  Ûã1?d ؾ+#œÌš @  Üä1?d ¿+óÔ@r @  Ýå1?d X¿+«º  @  Þæ1?d ˜¿+#^¸õ @uÐÀ+  ßç1?d Ø¿+rÈ×¥ @  à€è1?d 0À+8†÷ @  á€é1?d pÀ+æG|Ž @  â€ê1?d€ °À+²qbÖ @  €ë1?d ðÀ+Pjh3 @  €ì1?d 0Á+€"äÛ @  €í1?d pÁ+µåO @  €î1?d °Á+•áç± @  €ï1?d ðÁ+®²ß[ @  €ð1?d 0Â+3öš @  €ñ1?d pÂ+ ;Ú™ @  €ò1?d °Â+-ÎØg @   €ó1?d ðÂ+ëÝaF @   €ô1?d 0Ã+;•í® @   €õ1?d pÃ+£ì: @   €ö1?d °Ã+.VîÄ @   €÷1?d ðÃ+pU´Â @  €ø1?d 0Ä+iGÍ @  €ù1?d pÄ+úwÜ. @  €ú1?d °Ä+Ú‚ÞÐ @  €û1?d ðÄ+‘gñ @  €ü1?d 0Å+ÌÙë @  €ý1?d pÅ+ùïê @  €þ1?d °Å+Ùès @  €ÿ1?d ðÅ+_-Èï @  €2?d 0Æ+Âih. @  €2?d pÆ+ü¤Í- @  €2?d °Æ+ÜQÏÓ @  €2?d ðÆ+Bvò @  €2?d 0Ç+Ê ú @  €2?d pÇ+ÿ<ûŽ @  €2?d °Ç+ßÉùp @  €2?d ðÇ+Ê£v @  €2?d 0È+µ5/k @  € 2?d pÈ+7_“8 @   € 2?d °È+ª‘Æ @  !€ 2?d ðÈ+ѹ(ç @  "€ 2?d 0É+ñ¤ @  #€ 2?d pÉ+4Ç¥› @  $€2?d °É+2§e @  %€2?d ðÉ+/aŸ @  &€2?d 0Ê+²%?N @  '€2?d pÊ+ŒèšM @  (€2?d °Ê+¬˜³ @  )€2?d ðÊ+j!’ @  *€2?d 0Ë+ºF­z @  +€2?d pË+p¬î @  ,€2?d °Ë+¯…® @  -€2?d ðË+ñ†ô @  .€2?d 0Ì+èÈ @  /€2?d pÌ+{¤œú @  0€2?d °Ì+[Qž @  1€2?d ðÌ+B'% @  2€2?d 0Í+M «Í @  3€2?d pÍ+x<ªY @  4€2?d °Í+Xɨ§ @  5€2?d ðÍ+þ-©‘ @  6€ 2?d 0Î+ci P @  7€!2?d pÎ+]¤¬S @  8€"2?d °Î+}Q®­ @  9€#2?d ðÎ+»BŒ @  :€$2?d 0Ï+k ›d @  ;€%2?d pÏ+^<šð @  <€&2?d °Ï+~ɘ @  =€'2?d ðÏ+ Ê @  >€(2?d 0Ð+ž~º @  ?€)2?d pÐ+²yÄ{ @  @€*2?d °Ð+’ŒÆ… @  A€+2?d ðÐ+TŸ¤ @  B€,2?d 0Ñ+„×óL @  C€-2?d pÑ+±áòØ @  D€.2?d °Ñ+‘ð& @  E€/2?d ðÑ+ªGÈÌ @  F€02?d 0Ò+7h  @  G€12?d pÒ+ ÎÍ @  H€22?d °Ò+);Ïð @  I€32?d ðÒ+ï(vÑ @  J€42?d 0Ó+?`ú9 @  K€52?d pÓ+ Vû­ @  L€62?d °Ó+*£ùS @  M€72?d ðÓ+t £U @  N€82?d 0Ô+mîPZ @  O€92?d pÔ+þ‚˹ @  P€:2?d °Ô+ÞwÉG @  Q€;2?d ðÔ+dpf @  R€<2?d 0Õ+È,üŽ @  S€=2?d pÕ+ýý @  T€>2?d °Õ+Ýïÿä @  U€?2?d ðÕ+‹[ëà @  V€@2?d 0Ö+K @  W€A2?d pÖ+(Òî @  X€B2?d °Ö+'ìÿ @  Y€C2?d ðÖ+Î4UÞ @  Z€D2?d 0×+|Ù6 @  [€E2?d p×++JØ¢ @  \€F2?d °×+ ¿Ú\ @  ]€G2?d ð×+U¼€Z @  ^€H2?d 0Ø+aC G @  _€I2?d pØ+ã)° @  `€J2?d °Ø+Ãܲê @  a€K2?d ðØ+Ï Ë @  b€L2?d 0Ù+Õ‡‡# @  c€M2?d pÙ+ె· @  d€N2?d °Ù+ÀD„I @  e€O2?d ðÙ+û¼£ @  f€P2?d 0Ú+fSb @  g€Q2?d pÚ+Xž¹a @  h€R2?d °Ú+xk»Ÿ @  i€S2?d ðÚ+¾x¾ @  j€T2?d 0Û+n0ŽV @  k€U2?d pÛ+[ @  l€V2?d °Û+{ó< @  m€W2?d ðÛ+%ð×: @  n€X2?d 0Ü+<¾$5 @  o€Y2?d pÜ+¯Ò¿Ö @  p€Z2?d °Ü+'½( @  q€[2?d ðÜ+I4  @  r€\2?d 0Ý+™|ˆá @  s€]2?d pÝ+¬J‰u @  t€^2?d °Ý+Œ¿‹‹ @  u€_2?d ðÝ+*[н @  v€`2?d 0Þ+·*| @  w€a2?d pÞ+‰Ò @  x€b2?d °Þ+©' @  y€c2?d ðÞ+o44  @  z€d2?d 0ß+¿|¸H @  {€e2?d pß+ŠJ¹Ü @  |€f2?d uÐà+/°ß+ª¿»" @  }€g2?d ðß+‰<’X @  ~h2?d Hà+˜Ì® @  i2?d ˆà+ýÇS~ @  €j2?d Èà+VD  @  k2?d á+ëœf· @  ‚l2?d Há+i qi @  ƒm2?d ˆá+þ_eÝ @  „n2?d Èá+|Îr @  …o2?d â+XHýö @  †p2?d Hâ+ÚÙê( @  ‡q2?d ˆâ+FpZ  @  ˆr2?d Èâ+ÄáMÕ @  ‰s2?d ã+P+o @  Št2?d Hã+Òºx @  ‹u2?d ˆã+Eèl¨ @  Œv2?d Èã+Çy{v @  w2?d ä+¥Å¡ @  Žx2?d Hä+€4Ò @  y2?d ˆä+±<\¼ @  z2?d Èä+3­Kb @  ‘{2?d å+§giu @  ’|2?d Hå+%ö~« @  “}2?d ˆå+²¤j @  ”~2?d Èå+05}Á @  •2?d æ+d’Šk @  –€2?d Hæ+æµ @  —2?d ˆæ+zª-– @  ˜‚2?d Èæ+ø;:H @  ™ƒ2?d ç+lñ_ @  š„2?d Hç+î` @  ›…2?d ˆç+y25 @  œ†2?d Èç+û£ ë @  ‡2?d è+ÎÍ. @  žˆ2?d Hè+‘_Úð @  Ÿ‰2?d ˆè+±Qsƒ @   Š2?d Èè+3Àd] @  ¡‹2?d é+§ FJ @  ¢Œ2?d Hé+%›Q” @  £2?d ˆé+²ÉE  @  ¤Ž2?d Èé+0XRþ @  ¥2?d ê+ÞÝ  @  ¦2?d Hê+–OÊÕ @  §‘2?d ˆê+ æzö @  ¨’2?d Èê+ˆwm( @  ©“2?d ë+½O? @  ª”2?d Hë+ž,Xá @  «•2?d ˆë+ ~LU @  ¬–2?d Èë+‹ï[‹ @  ­—2?d ì+N3å\ @  ®˜2?d Hì+Ì¢ò‚ @  ¯™2?d ˆì+ýª|A @  °š2?d Èì+;kŸ @  ±›2?d í+ëñIˆ @  ²œ2?d Hí+i`^V @  ³2?d ˆí+þ2Jâ @  ´ž2?d Èí+|£]< @  µŸ2?d î+Å’ë @  ¶ 2?d Hî+GüË @  ·¡2?d ˆî+ÛªLè @  ¸¢2?d Èî+Y;[6 @  ¹£2?d ï+Íñy! @  º¤2?d Hï+O`nÿ @  »¥2?d ˆï+Ø2zK @  ¼¦2?d Èï+Z£m• @  ½§2?d ð+8ïœÿ @  ¾¨2?d Hð+º~‹! @  ¿©2?d ˆð+4w$À @  Àª2?d Èð+¶æ3 @  Á«2?d ñ+",  @  Â¬2?d Hñ+ ½× @  Ã­2?d ˆñ+7ïc @  Ä®2?d Èñ+µ~½ @  Å¯2?d ò+‘øŠH @  Æ°2?d Hò+i– @  Ç±2?d ˆò+À-µ @  È²2?d Èò+ Q:k @  É³2?d ó+™›| @  Ê´2?d Hó+ ¢ @  Ëµ2?d ˆó+ŒX @  Ì¶2?d Èó+É È @  Í·2?d ô+˲ @  Î¸2?d Hô+I„¥Á @  Ï¹2?d ˆô+xŒ+ @  Ðº2?d Èô+ú<Ü @  Ñ»2?d õ+n×Ë @  Ò¼2?d Hõ+ìF  @  Ó½2?d ˆõ+{¡ @  Ô¾2?d Èõ+ù…  @  Õ¿2?d ö+°ä©G @  ÖÀ2?d Hö+2u¾™ @  ×Á2?d ˆö+®Üº @  ØÂ2?d Èö+,Md @  ÙÃ2?d ÷+¸‡;s @  ÚÄ2?d H÷+:,­ @  ÛÅ2?d ˆ÷+­D8 @  ÜÆ2?d È÷+/Õ/Ç @  ÝÇ2?d ø+Ǹî @  ÞÈ2?d Hø+E)ùÜ @  ßÉ2?d ˆø+e'P¯ @  àÊ2?d Èø+ç¶Gq @  áË2?d ù+s|ef @  âÌ2?d€ Hù+0ª…¸ @  Í2?d ˆù+F¹Ù% @  Î2?d Èù+Ä(Îû @  Ï2?d ú+%çºã @  Ð2?d Hú+§v­= @  Ñ2?d ˆú+õmBd @  Ò2?d Èú+wüUº @  Ó2?d û+-„(× @  Ô2?d Hû+¯?  @   Õ2?d ˆû+ýÐP @   Ö2?d Èû+ŸÇŽ @   ×2?d ü+ ‚´ @   Ø2?d Hü+ý›•j @   Ù2?d ˆü+¯€z3 @  Ú2?d Èü+-mí @  Û2?d ý+ÚÈ.` @  Ü2?d Hý+XY9¾ @  Ý2?d ˆý+ BÖç @  Þ2?d Èý+ˆÓÁ9 @  ß2?d þ+ô«Œý @  à2?d Hþ+v:›# @  á2?d ˆþ+$!tz @  â2?d Èþ+¦°c¤ @  ã2?d ÿ+üÈÉ @  ä2?d Hÿ+~Y  @  å2?d ˆÿ+,BæN @  uÐ,æ2?d Èÿ+®Óñ @  ç2?d ,‚ÎU; @  è2?d `,_Bå @  é2?d  ,RD­¼ @  ê2?d à,ÐÕºb @  ë2?d ,6 Þ_ @   ì2?d `,´›É @  !í2?d  ,æ€&Ø @  "î2?d à,d1 @  #ï2?d ,…ÞE @  $ð2?d `,ORÀ @  %ñ2?d  ,UT½™ @  &ò2?d à,×ŪG @  'ó2?d ,½×* @  (ô2?d `,,Àô @  )õ2?d  ,]7/­ @  *ö2?d à,ߦ8s @  +÷2?d ,ß3}I @  ,ø2?d `,]¢j— @  -ù2?d  ,¹…Î @  .ú2?d à,(’ @  /û2?d ,zñÑ @  0ü2?d `,ø`ÆC @  1ý2?d  ,ª{) @  2þ2?d à,(ê>Ä @  3ÿ2?d ,Æcg @  43?d `,DòpQ @  53?d  ,éŸ @  63?d à,”xˆÖ @  73?d ,Îõ» @  83?d `,L‘âe @  93?d  ,Š < @  :3?d à,œâ @  ;3?d ,±? Ê @  <3?d `,3®7 @  = 3?d  ,aµØM @  > 3?d à,ã$Ï“ @  ? 3?d ,«ü­< @  @ 3?d ` ,)mºâ @  A 3?d   ,{vU» @  B3?d à ,ùçBe @  C3?d ,(6} @  D3?d ` ,š¹!£ @  E3?d   ,È¢Îú @  F3?d à ,J3Ù$ @  G3?d ,K¤I @  H3?d ` ,’Ú³— @  I3?d   ,ÀÁ\Î @  J3?d à ,BPK @  K3?d ,BÅ* @  L3?d ` ,ÀTô @  M3?d   ,’Oö­ @  N3?d à ,Þás @  O3?d ,ç¢þ @  P3?d ` ,e–µ  @  Q3?d   ,7Zy @  R3?d à ,µM§ @  S3?d ,Édc @  T 3?d `,Kõ½ @  U!3?d  ,îøä @  V"3?d à,›ï: @  W#3?d ,Á’W @  X$3?d `,C–…‰ @  Y%3?d  ,jÐ @  Z&3?d à,“} @  ['3?d ,4w‰ @  \(3?d `,¶ˆ`W @  ])3?d  ,ä“ @  ^*3?d à,f˜Ð @  _+3?d ,€Ýüí @  `,3?d `,Lë3 @  a-3?d  ,PWj @  b.3?d à,ÒÆ´ @  c/3?d ,3 g¬ @  d03?d `,±˜pr @  e13?d  ,ミ+ @  f23?d à,aˆõ @  g33?d ,;jõ˜ @  h43?d `,¹ûâF @  i53?d  ,ëà  @  j63?d à,iqÁ @  k73?d ,iä_û @  l83?d `,ëuH% @  m93?d  ,¹n§| @  n:3?d à,;ÿ°¢ @  o;3?d ,Ì&ó/ @  p<3?d `,N·äñ @  q=3?d  ,¬ ¨ @  r>3?d à,ž=v @  s?3?d ,D£ @  t@3?d `,„S} @  uA3?d  ,Ÿ¼$ @  vB3?d à,@«ú @  wC3?d ,vÖ— @  xD3?d `,˜çÁI @  yE3?d  ,Êü. @  zF3?d à,Hm9Î @  {G3?d ,eIæ @  |H3?d `,çØ8 @  }I3?d  ,µÃûa @  ~J3?d à,7Rì¿ @  K3?d ,œÜ¾! @  €L3?d `,M©ÿ @  M3?d  ,LVF¦ @  ‚N3?d à,ÎÇQx @  ƒO3?d ,/%` @  „P3?d `,­™2¾ @  …Q3?d  ,ÿ‚Ýç @  †R3?d à,}Ê9 @  ‡S3?d ,'k·T @  ˆT3?d `,¥ú Š @  ‰U3?d  ,÷áOÓ @  ŠV3?d à,upX  @  ‹W3?d ,uå7 @  ŒX3?d `,÷t é @  Y3?d  ,¥oå° @  ŽZ3?d à,'þòn @  [3?d ,Ð'±ã @  \3?d `,R¶¦= @  ‘]3?d  ,­Id @  ’^3?d à,‚<^º @  “_3?d ,þD~ @  ”`3?d `,|Õ  @  •a3?d  ,.Îëù @  –b3?d à,¬_ü' @  —c3?d ,ö'J @  ˜d3?d `,t¶–” @  ™e3?d  ,&­yÍuÐ , @  šf3?d à,¤ @  È”3?d x+,£Ÿµà @  É•3?d ¸+,ñ„Z¹ @  Ê–3?d ø+,sMg @  Ë—3?d 8,,s€] @  Ì˜3?d x,,ñƒ @  Í™3?d ¸,,£ ðÚ @  Îš3?d ø,,!›ç @  Ï›3?d 8-,ÖB¤‰ @  Ðœ3?d x-,TÓ³W @  Ñ3?d ¸-,È\ @  Òž3?d ø-,„YKÐ @  ÓŸ3?d 8.,ø! @  Ô 3?d x.,z°Ê @  Õ¡3?d ¸.,(«þ“ @  Ö¢3?d ø.,ª:éM @  ×£3?d 8/,ðB”  @  Ø¤3?d x/,rÓƒþ @  Ù¥3?d ¸/, Èl§ @  Ú¦3?d ø/,¢Y{y @  Û§3?d 80,\qþ @  Ü¨3?d x0,‡Íf  @  Ý©3?d ¸0,ÕÖ‰y @  Þª3?d ø0,WGž§ @  ß«3?d 81,±˜úš @  à¬3?d x1,3 íD @  á­3?d ¸1,a @  â®3?d€ ø1,—@ e @  ¯3?d 82,—Î5T @  °3?d x2,_"Š @  ±3?d ¸2,‚ 6> @  ²3?d ø2,œ!à @  ³3?d 83,”V÷ @  ´3?d x3,Ç) @  µ3?d ¸3,Šn¤  @  ¶3?d ø3,ÿ³Ô @   ·3?d 84,Í#  @   ¸3?d x4,O²Ý @   ¹3?d ¸4,Øài @   º3?d ø4,Zq· @   »3?d 85,λ;  @  ¼3?d x5,L*,~ @  ½3?d ¸5,}"¢½ @  ¾3?d ø5,ÿ³µc @  ¿3?d 86,¶Ò[ @  À3?d x6,4C… @  Á3?d ¸6,£1 @  Â3?d ø6,!€ï @  Ã3?d 87,µJ ø @  Ä3?d x7,7Û7& @  Å3?d ¸7,«r‡ @  Æ3?d ø7,)ãÛ @  Ç3?d 88,ÁŽQ @  È3?d x8,CFÀ @  É3?d ¸8,ÔMRt @  Ê3?d ø8,VÜEª @  Ë3?d 89,Âg½ @  Ì3?d x9,@‡pc @  Í3?d ¸9,`‰Ù @   Î3?d ø9,âÎÎ @  !Ï3?d 8:,ÆžA; @  "Ð3?d x:,DVå @  #Ñ3?d ¸:,Ó]BQ @  $Ò3?d ø:,QÌU @  %Ó3?d 8;,Åw˜ @  &Ô3?d x;,G—`F @  'Õ3?d ¸;,Û>Ðe @  (Ö3?d ø;,Y¯Ç» @  )×3?d 8<,œsyl @  *Ø3?d x<,ân² @  +Ù3?d ¸<,‰°z @  ,Ú3?d ø<, !mØ @  -Û3?d 8=,ŸëOÏ @  .Ü3?d x=,zX @  /Ý3?d ¸=,,rÖÒ @  0Þ3?d ø=,®ãÁ  @  1ß3?d 8>,Òw% @  2à3?d x>,•C`û @  3á3?d ¸>,tO @  4â3?d ø>,€€c‘ @  5ã3?d 8?,JA† @  6ä3?d x?,–ÛVX @  7å3?duÐ@,7 ¸?, ræ{ @  8æ3?d ø?,ˆãñ¥ @  9ç3?d P@,—ÝA @  :è3?d @,·(¿ @  ;é3?d Ð@,‚+ @  <ê3?d A,RV‰Ã @  =ë3?d PA,”E0â @  >ì3?d A,´°2 @  ?í3?d ÐA,˜ÝˆÝ @  @î3?d B,™( @  Aï3?d PB,>Êö @  Bð3?d B,? @  Cñ3?d ÐB,+ œ @  Dò3?d C,ûAŸt @  Eó3?d PC,=R&U @  Fô3?d C,§$« @  Gõ3?d ÐC,#j¨ @  Hö3?d D,:$r§ @  I÷3?d PD,d'(¡ @  Jø3?d D,DÒ*_ @  Kù3?d ÐD,qä+Ë @  Lú3?d E,¡¬§# @  Mû3?d PE,g¿ @  Nü3?d E,GJü @  Oý3?d ÐE,Ô&‡ @  Pþ3?d F,Ib'Þ @  Qÿ3?d PF,A~ ñ @  R4?d F,a‹ @  S4?d ÐF,T½› @  T4?d G,„õ‚s @  U4?d PG,Bæ;R @  V4?d G,b9¬ @  W4?d ÐG,\Þœ¯ @  X4?d H,h!² @  Y4?d PH,6"J´ @  Z4?d H,×HJ @  [ 4?d ÐH,#áIÞ @  \ 4?d I,ó©Å6 @  ] 4?d PI,5º| @  ^ 4?d I,O~é @  _ 4?d ÐI,—%º @  `4?d J, ab{ @  a4?d PJ,12Z‘ @  b4?d J,ÇXo @  c4?d ÐJ,$ñYû @  d4?d K,ô¹Õ @  e4?d PK,2ªl2 @  f4?d K,_nÌ @  g4?d ÐK,,’ËÏ @  h4?d L,5Ü8À @  i4?d PL,kßbÆ @  j4?d L,K*`8 @  k4?d ÐL,~a¬ @  l4?d M,®TíD @  m4?d PM,hGTe @  n4?d M,H²V› @  o4?d ÐM,ÛÞÍx @  p4?d N,Fšm¹ @  q4?d PN,à~l @  r 4?d N,À‹nq @  s!4?d ÐN,õ½oå @  t"4?d O,%õã  @  u#4?d PO,ãæZ, @  v$4?d O,ÃXÒ @  w%4?d ÐO,ýÞýÑ @  x&4?d P,CAc @  y'4?d PP,e @  z(4?d P,=ö› @  {)4?d ÐP,À @  |*4?d Q,؈”ç @  }+4?d PQ,›-Æ @  ~,4?d Q,>n/8 @  -4?d ÐQ,ñU¥È @  €.4?d R,l  @  /4?d PR,WB=ã @  ‚04?d R,w·? @  ƒ14?d ÐR,B>‰ @  „24?d S,’ɲa @  …34?d PS,TÚ @ @  †44?d S,t/ ¾ @  ‡54?d ÐS,J⬽ @  ˆ64?d T,S¬_² @  ‰74?d PT, ¯´ @  Š84?d T,-ZJ @  ‹94?d ÐT,lÞ @  Œ:4?d U,È$Š6 @  ;4?d PU,73 @  Ž<4?d U,.Â1é @  =4?d ÐU,½®ª  @  >4?d V, ê Ë @  ‘?4?d PV,v^ì @  ’@4?d V,V« @  “A4?d ÐV,c† @  ”B4?d W,³Õ‘n @  •C4?d PW,uÆ(O @  –D4?d W,U3*± @  —E4?d ÐW,kþ² @  ˜F4?d X,_¯ @  ™G4?d PX,Y© @  šH4?d X,!÷[W @  ›I4?d ÐX,ÁZà @  œJ4?d Y,ĉÖ+ @  K4?d PY,šo  @  žL4?d Y,"omô @  ŸM4?d ÐY, ѧ @   N4?d Z,=Aqf @  ¡O4?d PZ,IŒ @  ¢P4?d Z,&çKr @  £Q4?d ÐZ,ÑJæ @  ¤R4?d [,ÙÆ @  ¥S4?d P[,Š/ @  ¦T4?d [,%}Ñ @  §U4?d Ð[,²ØÒ @  ¨V4?d \,ü+Ý @  ©W4?d P\,\ÿqÛ @  ªX4?d \,| s% @  «Y4?d Ð\,IÎ4?d (z,ð!Ëð @  ?Ï4?d hz,`³¢ @  @Ð4?d ¨z,7•±\ @  AÑ4?d èz,ÇêK% @  BÒ4?d ({,¢ÇÍ @  CÓ4?d h{,ø… @  DÔ4?d ¨{,4 ‡ÿ @  EÕ4?d è{,Är}† @  FÖ4?d (|,Ý<މ @  G×4?d h|,M‹õ @  HØ4?d ¨|,mx‰  @  IÙ4?d è|,sr @  JÚ4?d (},MOÿš @  KÛ4?d h},N½V @  LÜ4?d ¨},n࿨ @  MÝ4?d è},žŸEÑ @  NÞ4?d (~,Ûå @  Oß4?d h~,Æ,…¼ @  Pà4?d ¨~,æÙ‡B @  Qá4?d è~,¦}; @  Râ4?d (,ÆîñÓ @  Sã4?d h,Å´³ @  Tä4?d ¨,uЀ,'åA±á @  Uå4?d è,,ù—M @  V æ4?d @€,BGu9 @  W ç4?d €€,p’ee @  X è4?d À€,òr» @  Y é4?d ,P¥ô @  Z ê4?d @,Ò4* @  [ ë4?d €,s SÆ @  \ ì4?d À,ñ›D @  ] í4?d ‚,1 ~ @  ^ î4?d @‚,œ   @  _ ï4?d €‚,w‚u@ @  ` ð4?d À‚,õbž @  a ñ4?d ƒ,WµÑ @  b ò4?d @ƒ,Õ$ @  c ó4?d €ƒ,tCã @  d ô4?d Àƒ,ö‹T= @  e õ4?d „,+J• @  f ö4?d @„,º]K @  g ÷4?d €„,-oM @  h ø4?d À„,¯þZÉ @  i ù4?d …, X;† @  j ú4?d @…,É,X @  k û4?d €…,.÷{´ @  l ü4?d À…,¬flj @  m ý4?d †,CÌ!  @  n þ4?d @†,Á]6Ò @  o ÿ4?d €†,4?WÑ @  p 5?d À†,¶®@ @  q 5?d ‡,!@ @  r 5?d @‡,–™6ž @  s 5?d €‡,7§ar @  t 5?d À‡,µ6v¬ @  u 5?d ˆ,ó' @  v 5?d @ˆ,q¶È @  w 5?d €ˆ,Cc” @  x 5?d Àˆ,ÁòJ @  y  5?d ‰,cTf @  z  5?d @‰,áÅqÛ @  {  5?d €‰,@û&7 @  |  5?d À‰,Âj1é @  }  5?d Š,-À| @  ~ 5?d @Š,¯QkQ @   5?d €Š, "6 @  € 5?d ÀŠ,‹³!Ì @   5?d ‹,)@ƒ @  ‚ 5?d @‹,«„W] @  ƒ 5?d €‹, º± @  „ 5?d À‹,ˆ+o @  … 5?d Œ,ã‹ Ç @  † 5?d @Œ,a @  ‡ 5?d €Œ,SÏE @  ˆ 5?d ÀŒ,Ñ^› @  ‰ 5?d ,søxÔ @  Š 5?d @,ñio  @  ‹ 5?d €,PW8æ @  Œ 5?d À,ÒÆ/8 @   5?d Ž,=lb^ @  Ž 5?d @Ž,¿ýu€ @   5?d €Ž,Øn  @    5?d ÀŽ,ZÿÒ @  ‘ !5?d ,øYv @  ’ "5?d @,zÈaC @  “ #5?d €,Ûö6¯ @  ” $5?d À,Yg!q @  • %5?d ,•Wpd @  – &5?d @,Ægº @  — '5?d €,%wæ @  ˜ (5?d À,§‚`8 @  ™ )5?d ‘,$w @  š *5?d @‘,‡µ© @  › +5?d €‘,&‹AE @  œ ,5?d À‘,¤V› @   -5?d ’,K°ý @  ž .5?d @’,É! # @  Ÿ /5?d €’,"gà @    05?d À’, ’p @  ¡ 15?d “,4R @  ¢ 25?d @“,€¥Œ @  £ 35?d €“,!›Q` @  ¤ 45?d À“,£ F¾ @  ¥ 55?d ”,ȪX @  ¦ 65?d @”,J;OÈ @  § 75?d €”,xî_” @  ¨ 85?d À”,úHJ @  © 95?d •,XÙ) @  ª :5?d @•,ÚH>Û @  « ;5?d €•,{vi7 @  ¬ <5?d À•,ùç~é @  ­ =5?d –,M3 @  ® >5?d @–,”Ü$Q @  ¯ ?5?d €–,DÌ @  ° @5?d À–,ŽS @  ± A5?d —,#(2] @  ² B5?d @—,¡¹%ƒ @  ³ C5?d €—,‡ro @  ´ D5?d À—,‚e± @  µ E5?d ˜,Ä  @  ¶ F5?d @˜,F–Õ @  · G5?d €˜,tC‰ @  ¸ H5?d À˜,öÒW @  ¹ I5?d ™,Ttu @  º J5?d @™,ÖåbÆ @  » K5?d €™,wÛ5* @  ¼ L5?d À™,õJ"ô @  ½ M5?d š,ào’ @  ¾ N5?d @š,˜qxL @  ¿ O5?d €š,ÝT> @  À P5?d Àš,_Åà @  Á Q5?d ›,ýcc¯ @   R5?d @›,òtq @  à S5?d €›,ÞÌ# @  Ä T5?d À›,\]4C @  Å U5?d œ,7ý*ë @  Æ V5?d @œ,µl=5 @  Ç W5?d €œ,‡¹-i @  È X5?d Àœ,(:· @  É Y5?d ,§Ž[ø @  Ê Z5?d @,%L& @  Ë [5?d €,„!Ê @  Ì \5?d À,°  @  Í ]5?d ž,éAr @  Î ^5?d @ž,k‹V¬ @  Ï _5?d €ž, #  @  Ð `5?d Àž,މ4þ @  Ñ a5?d Ÿ,,/U± @  Ò b5?d @Ÿ,®¾Bo @  Ó c5?d €Ÿ,€ƒ @  Ô d5uР,?d ÀŸ,] @  Õ e5?d  ,Žô1œ @  Ö f5?d X , e&B @  × g5?d ˜ ,>°6 @  Ø h5?d Ø ,¼!!À @  Ù i5?d ¡,‡@ @  Ú j5?d X¡,œWQ @  Û k5?d ˜¡,=(½ @  Ü l5?d Ø¡,¿¹c @  Ý m5?d ¢,«}a @  Þn5?d X¢,ëE‘ @  ßo5?d ˜¢,gúî @  àp5?d Ø¢,‚öí0 @  áq5?d £, PŒ @  âr5?d€ X£,Ö‡ @  s5?d ˜£,–}˜Â @  t5?d Ø£,ì @  u5?d ¤,ºjY @  v5?d X¤,8”}‡ @  w5?d ˜¤,Äó2¡ @  x5?d ؤ,Fb% @  y5?d ¥,*vJ @  z5?d X¥,¨ç ” @   {5?d ˜¥,Ì • @   |5?d Ø¥,N·K @   }5?d ¦,dâÀ @   ~5?d X¦,æs @   5?d ˜¦,eC‹ @  €5?d ئ,ôTU @  5?d §,LAT€ @  ‚5?d X§,ÎÐC^ @  ƒ5?d ˜§,ª§ï_ @  „5?d ا,(6ø @  …5?d ¨,«nbÖ @  †5?d X¨,)ÿu @  ‡5?d ˜¨,Õ˜:. @  ˆ5?d ب,W -ð @  ‰5?d ©,;Å @  Š5?d X©,¹Œ @  ‹5?d ˜©,Ýû¨ @  Œ5?d Ø©,_j¿Ä @  5?d ª,u‰ O @  Ž5?d Xª,÷‘ @  5?d ˜ª,n/3[ @  5?d ت,ì¾$… @  ‘5?d «,< à @   ’5?d X«,¾œ> @  !“5?d ˜«,Úë¸? @  "”5?d Ø«,Xz¯á @  #•5?d ¬,ö“J¤ @  $–5?d X¬,t]z @  %—5?d ˜¬,ˆe\ @  &˜5?d ج, ô‚ @  '™5?d ­,fà;· @  (š5?d X­,äq,i @  )›5?d ˜­,€€h @  *œ5?d Ø­,——¶ @  +5?d ®,(t!= @  ,ž5?d X®,ªå6ã @  -Ÿ5?d ˜®,®e"õ @  . 5?d Ø®,,ô5+ @  /¡5?d ¯,íA5þ @  0¢5?d X¯,oÐ"  @  1£5?d ˜¯, §Ž! @  2¤5?d د,‰6™ÿ @  3¥5?d °,€O3 @  4¦5?d X°,Þ$Ù @  5§5?d ˜°,þ¹kÿ @  6¨5?d ذ,|(|! @  7©5?d ±,°5?d ز,ÇŸuT @  ?±5?d ³,¹+T£ @  @²5?d X³,;ºC} @  A³5?d ˜³,_Íï| @  B´5?d س,Ý\ø¢ @  Cµ5?d ´,sµç @  D¶5?d X´,ñ$ 9 @  E·5?d ˜´, CE @  F¸5?d Ø´,ÒRÁ @  G¹5?d µ,ãÆlô @  Hº5?d Xµ,aW{* @  I»5?d ˜µ, ×+ @  J¼5?d ص,‡±Àõ @  K½5?d ¶,­Rv~ @  L¾5?d X¶,/Ãa  @  M¿5?d ˜¶,Û`§ @  NÀ5?d ض,Y‚wy @  OÁ5?d ·,˜7w¬ @  PÂ5?d X·,¦`r @  QÃ5?d ˜·,~ÑÌs @  RÄ5?d Ø·,ü@Û­ @  SÅ5?d ¸,Aú @  TÆ5?d X¸,ý‰V$ @  UÇ5?d ˜¸,î @  VÈ5?d ظ,ƒÜ @  WÉ5?d ¹,ïk0é @  XÊ5?d X¹,mú'7 @  YË5?d ˜¹, ‹6 @  ZÌ5?d ع,‹œè @  [Í5?d º,¡ÿ*c @  \Î5?d Xº,#n=½ @  ]Ï5?d ˜º,ºYw @  ^Ð5?d غ,8È© @  _Ñ5?d »,è{ Ì @  `Ò5?d X»,jê7 @  aÓ5?d ˜»,› @  bÔ5?d Ø»,Œ ŒÍ @  cÕ5?d ¼,"åiˆ @  dÖ5?d X¼, t~V @  e×5?d ˜¼,\1p @  fØ5?d ؼ,Þ‚&® @  gÙ5?d ½,²–› @  hÚ5?d X½,0E @  iÛ5?d ˜½,Tp£D @  jÜ5?d ؽ,Öá´š @  kÝ5?d ¾,ü @  lÞ5?d X¾,~“Ï @  mß5?d ˜¾,zÙ @  nà5?d ؾ,ø‚ @  oá5?d ¿,97Ò @  pâ5?d X¿,»¦  @  qã5?d ˜¿,ßÑ­  @uÐÀ,  rä5?d Ø¿, Àɯ @  s€å5?d 0À,ŽýË @  tæ5?d pÀ, †ê @  uç5?d °À,ðá¥3 @  vè5?d ðÀ,rp²í @  wé5?d 0Á,dŒØ @  xê5?d pÁ,œõ› @  yë5?d °Á,ø‚7 @  zì5?d ðÁ,z Ù @  {í5?d 0Â,Pð–R @  |î5?d pÂ,ÒaŒ @  }ï5?d °Â,KV¬F @  ~ð5?d ðÂ,ÉÇ»˜ @  ñ5?d 0Ã,T%ª^ @  €ò5?d pÃ,Ö´½€ @  ó5?d °Ã,²Ã @  ‚ô5?d ðÃ,0R_ @  ƒõ5?d 0Ä,ž»ã @  „ö5?d pÄ,*ôÄ @  …÷5?d °Ä,àM»â @  †ø5?d ðÄ,bܬ< @  ‡ù5?d 0Å,È’  @  ˆú5?d pÅ,ŒY…× @  ‰û5?d °Å,è.)Ö @  Šü5?d ðÅ,j¿> @  ‹ý5?d 0Æ,@\ˆƒ @  Œþ5?d pÆ,ÂÍŸ] @  ÿ5?d °Æ,枪á @  Ž6?d ðÆ,d½? @  6?d 0Ç,¥º½ê @  6?d pÇ,'+ª4 @  ‘6?d °Ç,C\5 @  ’6?d ðÇ,ÁÍë @  “6?d 0È,B•‹¼ @  ”6?d pÈ,Àœb @  •6?d °È, @  ¿16?d 0Ó,PнÉ @  À26?d pÓ,ÒAª @  Á36?d °Ó,¶6 @  Â46?d ðÓ,4§È @  Ã56?d 0Ô,šNô @  Ä66?d pÔ,ßãS @  Å76?d °Ô,丬u @  Æ86?d ðÔ,f)»« @  Ç96?d 0Õ, =…ž @  È:6?d pÕ,ˆ¬’@ @  É;6?d °Õ,ìÛ>A @  Ê<6?d ðÕ,nJ)Ÿ @  Ë=6?d 0Ö,D©Ÿ @  Ì>6?d pÖ,Æ8ˆÊ @  Í?6?d °Ö,2è‰Í @  Î@6?d ðÖ,°yž @  ÏA6?d 0×,qÌžÆ @  ÐB6?d p×,ó]‰ @  ÑC6?d °×,—*% @  ÒD6?d ð×,»2Ç @  ÓE6?d 0Ø,–㨠@  ÔF6?d pØ,r¿N @  ÕG6?d °Ø,èðh @  ÖH6?d ðØ,j„ç¶ @  ×I6?d 0Ù,Ùƒ @  ØJ6?d pÙ,„Î] @  ÙK6?d °Ù,àvb\ @  ÚL6?d ðÙ,bçu‚ @  ÛM6?d 0Ú,Hà  @  ÜN6?d pÚ,Ê•Ô× @  ÝO6?d °Ú,S¢ù @  ÞP6?d ðÚ,Ñ3îà @  ßQ6?d 0Û,€É¦ @  àR6?d pÛ,ƒÞx @  áS6?d °Û,çfry @  âT6?d€ ðÛ,¤°’§ @  U6?d 0Ü,ë?Ë @  V6?d pÜ,i‰( @  W6?d °Ü,P§œÞ @  X6?d ðÜ,Ò6‹ @  Y6?d 0Ý,pêO @  Z6?d pÝ,òý‘ @  [6?d °Ý,XÄê @  \6?d ðÝ,ÚU4 @   ]6?d 0Þ,5ÿTR @   ^6?d pÞ,·nCŒ @   _6?d °Þ,v§¬w @   `6?d ðÞ,ô6»© @   a6?d 0ß,VÚæ @  b6?d pß,ÔÍ8 @  c6?d uÐà,/°ß,Óe£ @  d6?d ðß,Qô} @  e6?d Hà,:¾¤, @  f6?d ˆà,K¦Ò @  g6?d Èà,9 @  h6?d á,QI‹Ñ @  i6?d Há,¡6q¨ @  j6?d ˆá,ÃsV @  k6?d Èá,‰b•  @  l6?d â,&5Ì @  m6?d Hâ,äYϵ @  n6?d ˆâ,ĬÍK @  o6?d Èâ,:¶L @  p6?d ã,êþ‚¤ @  q6?d Hã,xÝ @  r6?d ˆã,:tz# @  s6?d Èã,Žr…( @   t6?d ä,—[$ @  '{6?d Èå,ÔŸ½ @  (|6?d æ,IÛ¾ @  )}6?d Hæ,¹¤çÇ @  *~6?d ˆæ,™Qå9 @  +6?d Èæ,j^a @  ,€6?d ç,Ç"Ò‰ @  -6?d Hç,7](ð @  .‚6?d ˆç,¨* @  /ƒ6?d Èç,²¨òµ @  0„6?d è,†W~¨ @  1…6?d Hè,v(„Ñ @  2†6?d ˆè,V݆/ @  3‡6?d Èè,Í—'Ä @  4ˆ6?d é,ß«, @  5‰6?d Hé,í QU @  6Š6?d ˆé,ÍUS« @  7‹6?d Èé,Åôµð @  8Œ6?d ê,X°1 @  96?d Hê,¨ÏïH @  :Ž6?d ˆê,ˆ:í¶ @  ;6?d Èê,v .± @  <6?d ë,¦h¢Y @  =‘6?d Hë,VX  @  >’6?d ˆë,vâZÞ @  ?“6?d Èë,lã£G @  @”6?d ì,u­PH @  A•6?d Hì,…Òª1 @  B–6?d ˆì,¥'¨Ï @  C—6?d Èì,>m $ @  D˜6?d í,î%…Ì @  E™6?d Hí,Zµ @  Fš6?d ˆí,>¯}K @  G›6?d Èí,6› @  Hœ6?d î,«J;Ñ @  I6?d Hî,[5Á¨ @  Jž6?d ˆî,{ÀÃV @  KŸ6?d Èî,m9 @  L 6?d ï,È%µe @  M¡6?d Hï,8ZO @  N¢6?d ˆï,¯Mâ @  O£6?d Èï,½¯•Y @  P¤6?d ð,q)ë @  Q¥6?d Hð,óÓ’ @  R¦6?d ˆð,ÓûÑl @  S§6?d Èð,H±p‡ @  T¨6?d ñ,˜ùüo @  U©6?d Hñ,h† @  Vª6?d ˆñ,Hsè @  W«6?d Èñ,@Òâ³ @  X¬6?d ò,Ý–Br @  Y­6?d Hò,-é¸  @  Z®6?d ˆò, ºõ @  [¯6?d Èò,óyò @  \°6?d ó,#Nõ @  ]±6?d Hó,Ó1c @  ^²6?d ˆó,óÄ  @  _³6?d Èó,GÂò– @  `´6?d ô,^Œ™ @  aµ6?d Hô,®óûà @  b¶6?d ˆô,Žù @  c·6?d Èô,LXõ @  d¸6?d õ,ÅÔ @  e¹6?d Hõ,5{.d @  fº6?d ˆõ,Ž,š @  g»6?d Èõ,/ÊÁ @  h¼6?d ö,€kj @  i½6?d Hö,py @  j¾6?d ˆö,Pá’‡ @  k¿6?d Èö,Ã}M @  lÀ6?d ÷,Tñ¥ @  mÁ6?d H÷,ã+ Ü @  nÂ6?d ˆ÷,ÃÞ " @  oÃ6?d È÷,fÞÑ™ @  pÄ6?d ø,R!]„ @  qÅ6?d Hø,¢^§ý @  rÆ6?d ˆø,‚«¥ @  sÇ6?d Èø,áè @  tÈ6?d ù,É©ˆ @  uÉ6?d Hù,9Öry @  vÊ6?d ˆù,#p‡ @  wË6?d Èù,‚–Ü @  xÌ6?d ú,ŒÆ6 @  yÍ6?d Hú,|¹Ìd @  zÎ6?d ˆú,\LΚ @  {Ï6?d Èú,¢V  @  |Ð6?d û,ru @  }Ñ6?d Hû,‚a{  @  ~Ò6?d ˆû,¢”yò @  Ó6?d Èû,[ðZ @  €Ô6?d ü,BCU @  Õ6?d Hü,²ò¹, @  ‚Ö6?d ˆü,’»Ò @  ƒ×6?d Èü, M9 @  „Ø6?d ý,Ù–Ñ @  …Ù6?d Hý,)zl¨ @  †Ú6?d ˆý, nV @  ‡Û6?d Èý,.ˆ  @  ˆÜ6?d þ,œj(Ì @  ‰Ý6?d Hþ,lÒµ @  ŠÞ6?d ˆþ,LàÐK @  ‹ß6?d Èþ,/M* @  Œà6?d ÿ,ÿ¦x @  á6?d Hÿ,z\ @  Žâ6?d ˆÿ,/^ÿ @  uÐ-ã6?d Èÿ,ІD @  ä6?d -Å;®µ @  ‘å6?d `-5DTÌ @  ’æ6?d  -±V2 @  “ç6?d à-Žû÷Ù @  ”è6?d -^³{1 @  •é6?d `-®ÌH @  –ê6?d  -Ž9ƒ¶ @  —ë6?d à-†˜eí @  ˜ì6?d -ÜÅ, @  ™í6?d `-ë£?U @  šî6?d  -ËV=« @  ›ï6?d à-5Lþ¬ @  œð6?d -årD @  ñ6?d `-{ˆ= @  žò6?d  -5ŽŠÃ @  Ÿó6?d à-ˆuÈ @   ô6?d -˜Æ†Ç @  ¡õ6?d `-h¹|¾ @  ¢ö6?d  -HL~@ @  £÷6?d à-Óß« @  ¤ø6?d -NSC @  ¥ù6?d `-ó1©: @  ¦ú6?d  -ÓÄ«Ä @  §û6?d à-ÛeMŸ @  ¨ü6?d -F!í^ @  ©ý6?d `-¶^' @  ªþ6?d  -–«Ù @  «ÿ6?d à-g÷û @  ¬7?d -·¿we @  ­7?d `-GÀ @  ®7?d  -g5â @  ¯7?d à-Â5WY @  °7?d -öÊÛD @  ±7?d `-µ!= @  ²7?d  -&@#à @  ³7?d à-½ ‚( @  ´7?d -mBÀ @  µ 7?d ` -=ô¹ @  ¶ 7?d   -½ÈöG @  · 7?d à -µi @  ¸ 7?d -(-°Ý @  ¹ 7?d ` -ØRJ¤ @  º7?d   -ø§HZ @  »7?d à -½‹] @  ¼7?d -Öõµ @  ½7?d ` -&ŠýÌ @  ¾7?d   -ÿ2 @  ¿7?d à -~« @  À7?d -0õ¤ @  Á7?d ` -õOÝ @  Â7?d   -Õº # @  Ã7?d à -Nð¬È @  Ä7?d -ž¸  @  Å7?d ` -nÇÚY @  Æ7?d   -N2ا @  Ç7?d à -F“>ü @  È7?d -Ûמ= @  É7?d `-+¨dD @  Ê7?d  - ]fº @  Ë7?d à-hðœa @  Ì 7?d -¸¸‰ @  Í!7?d `-HÇêð @  Î"7?d  -h2è @  Ï#7?d à-Í20µ @  Ð$7?d -sìŒ @  Ñ%7?d `-ƒ“v~ @  Ò&7?d  -£ft€ @  Ó'7?d à-8,Õk @  Ô(7?d -èdYƒ @  Õ)7?d `-£ú @  Ö*7?d  -8î¡ @  ×+7?d à-0OG_ @  Ø,7?d -­ çž @  Ù-7?d `-]tç @  Ú.7?d  -} @  Û/7?d à-ƒ›Ü @  Ü07?d -SÓPö @  Ý17?d `-£¬ª @  Þ27?d  -ƒY¨q @  ß37?d à-7_Wz @  à47?d -.¤u @  á57?d `-Þn^  @  â67?d€  -ŠX@T @  77?d à-ðS©– @  87?d - %~ @  97?d `--$ê @  :7?d  -5Ø& @  ;7?d à-óËŸ5 @  <7?d -n?ô @  =7?d `-PBš÷ @  >7?d  -p·˜  @   ?7?d à-&Œ. @   @7?d -öKÆ @   A7?d `-Ã}R @   B7?d  -㈬ @   C7?d à-%›º @  D7?d -d6 @  E7?d `-‚­s @  F7?d  -¢ý¯ @  G7?d à-üþõ‹ @  H7?d -,¶yc @  I7?d `-€x÷ @  J7?d  -9uz  @  K7?d à-ÿfÃ( @  L7?d -b"cé @  M7?d `-\ïÆê @  N7?d  -|Ä @  O7?d à-GIüþ @  P7?d -—p @  Q7?d `-¢7q‚ @  R7?d  -‚Âs| @  S7?d à-DÑÊ] @  T7?d -]Ÿ9R @  U7?d `-ßõ… @   V7?d  -ÿ‡ÿ @  !W7?d à-¡Ýù @  "X7?d -qKQ @  #Y7?d `-D}P… @  $Z7?d  -dˆR{ @  %[7?d à-¢›ëZ @  &\7?d -?ßK› @  ']7?d `-î˜ @  (^7?d  -!çìf @  )_7?d à-‡íP @  *`7?d -WKa¸ @  +a7?d `-b}`, @  ,b7?d  -BˆbÒuÐ - @  -c7?d à-„›Ûó @  .d7?d 8 -õ• @  /e7?d x -füžv @  0f7?d ¸ -F œˆ @  1g7?d ø - ÆŽ @  2h7?d 8!-ÈBJf @  3i7?d x!-ýtKò @  4j7?d ¸!-ÝI  @  5k7?d ø!-’ð- @  6l7?d 8"-†ÖPì @  7m7?d x"-¸õï @  8n7?d ¸"-˜î÷ @  9o7?d ø"-£½Ïû @  :p7?d 8#-sõC @  ;q7?d x#-FÃB‡ @  <r7?d ¸#-f6@y @  =s7?d ø#- %ùX @  >t7?d 8$-¹k W @  ?u7?d x$-•°– @  @v7?d ¸$-µó²h @  Aw7?d ø$-ëðèn @  Bx7?d 8%-;¸d† @  Cy7?d x%-Že @  Dz7?d ¸%-.{gì @  E{7?d ø%-èhÞÍ @  F|7?d 8&-u,~  @  G}7?d x&-KáÛ @  H~7?d ¸&-kÙñ @  I7?d ø&- f™D @  J€7?d 8'-ð.¬ @  K7?d x'-Å8 @  L‚7?d ¸'-åíÆ @  Mƒ7?d ø'-#þ¯ç @  N„7?d 8(-#ú @  O…7?d x(-„m¸ @  P†7?d ¸(-¤˜ºç @  Q‡7?d ø(-ú›àá @  Rˆ7?d 8)-*Ól  @  S‰7?d x)-åm @  TŠ7?d ¸)-?oc @  U‹7?d ø)-ùÖB @  VŒ7?d 8*-dGvƒ @  W7?d x*-ZŠÓ€ @  XŽ7?d ¸*-zÑ~ @  Y7?d ø*-A,é” @  Z7?d 8+-‘de| @  [‘7?d x+-¤Rdè @  \’7?d ¸+-„§f @  ]“7?d ø+-B´ß7 @  ^”7?d 8,-[ú,8 @  _•7?d x,-Ùk @  `–7?d ¸,-ùe’• @  a—7?d ø,-§fÈ“ @  b˜7?d 8--w.D{ @  c™7?d x--BEï @  dš7?d ¸--bíG @  e›7?d ø--¤þþ0 @  fœ7?d 8.-9º^ñ @  g7?d x.-wûò @  hž7?d ¸.-'‚ù  @  iŸ7?d ø.-fø: @  j 7?d 8/-Q.tÒ @  k¡7?d x/-duF @  l¢7?d ¸/-Díw¸ @  m£7?d ø/-‚þΙ @  n¤7?d 80-< r+ @  o¥7?d x0-¯LéÈ @  p¦7?d ¸0-¹ë6 @  q§7?d ø0-Ѻ±0 @  r¨7?d 81-ò=Ø @  s©7?d x1-4IJ @  u«7?d ø1-Ò"‡“ @  v¬7?d 82-Of'R @  w­7?d x2-q«‚Q @  x®7?d ¸2-Q^€¯ @  y¯7?d ø2-j ¸E @  z°7?d 83-ºE4­ @  {±7?d x3-s59 @  |²7?d ¸3-¯†7Ç @  }³7?d ø3-i•Žæ @  ~´7?d 84-pÛ}é @  µ7?d x4-¿à÷ @  €¶7?d ¸4-Ÿõç @  ·7?d ø4-Á¯á @  ‚¸7?d 85-^#  @  ƒ¹7?d x5-$h" @  „º7?d ¸5- c @  …»7?d ø5-ÂŽ™B @  †¼7?d 86-_Ê9ƒ @  ‡½7?d x6-aœ€ @  ˆ¾7?d ¸6-Aòž~ @  ‰¿7?d ø6-FŠY @  ŠÀ7?d 87-DZ @  ‹Á7?d x7-ò8% @  ŒÂ7?d ¸7-ÒÍÛ @  Ã7?d ø7-Þ¼ú @  ŽÄ7?d 88- !0ç @  Å7?d x8-³M« @  Æ7?d ¸8-“¸©ú @  ‘Ç7?d ø8-Í»óü @  ’È7?d 89-ó @  “É7?d x9-(Å~€ @  ”Ê7?d ¸9-0|~ @  •Ë7?d ø9-Î#Å_ @  –Ì7?d 8:-Sgež @  —Í7?d x:-mªÀ @  ˜Î7?d ¸:-M_Âc @  ™Ï7?d ø:-v ú‰ @  šÐ7?d 8;-¦Dva @  ›Ñ7?d x;-“rwõ @  œÒ7?d ¸;-³‡u  @  Ó7?d ø;-u”Ì* @  žÔ7?d 8<-lÚ?% @  ŸÕ7?d x<-î°ƒv @   Ö7?d ¸<-ÎEˆ @  ¡×7?d ø<-FÛŽ @  ¢Ø7?d 8=-@Wf @  £Ù7?d x=-u8Vò @  ¤Ú7?d ¸=-UÍT  @  ¥Û7?d ø=-“Þí- @  ¦Ü7?d 8>-šMì @  §Ý7?d x>-0Wèï @  ¨Þ7?d ¸>-¢ê @  ©ß7?d ø>-¶Fë' @  ªà7?d 8?-fgÏ @  «á7?d x?-S8f[ @  ¬â7?duÐ@-7 ¸?-sÍd¥ @  ­ã7?d ø?-µÞÝ„ @  ®ä7?d P@-vrg¸ @  ¯å7?d @-Gzé{ @  °æ7?d Ð@-Åëþ¥ @  ±ç7?d A-É1?• @  ²è7?d PA-K (K @  ³é7?d A-Üò<ÿ @  ´ê7?d ÐA-^c+! @  µë7?d B-‡¥% @  ¶ì7?d PB-42Á @  ·í7?d B-™‚â @  ¸î7?d ÐB- •< @  ¹ï7?d C-r†6à @  ºð7?d PC-ð!> @  »ñ7?d C-gE5Š @  ¼ò7?d ÐC-åÔ"T @  ½ó7?d D-¸¤ @  ¾ô7?d PD-:‰hz @  ¿õ7?d D-´€Ç› @  Àö7?d ÐD-6ÐE @  Á÷7?d E-:Ëu @  Âø7?d PE-¸Z« @  Ãù7?d E-/ @  Äú7?d ÐE-­™Á @  Åû7?d F-t_ ÿ @  Æü7?d PF-öÎ! @  Çý7?d F-jg¬ @  Èþ7?d ÐF-èö»Ü @  Éÿ7?d G-k ¼ @  Ê8?d PG-é˜b @  Ë8?d G-~ÊÖ @  Ì8?d ÐG-ü[ @  Í8?d H-Œ&2ê @  Î8?d PH-·%4 @  Ï8?d H-?¿«÷ @  Ð8?d ÐH-½.¼) @  Ñ8?d I-±ô} @  Ò8?d PI-3ejÇ @  Ó 8?d I-¤7~s @  Ô 8?d ÐI-&¦i­ @  Õ 8?d J-ÿ`g“ @  Ö 8?d PJ-}ñpM @  × 8?d J-áXÀn @  Ø8?d ÐJ-cÉ×° @  Ù8?d K- Ctl @  Ú8?d PK-ˆÒc² @  Û8?d K-€w @  Ü8?d ÐK-`Ø @  Ý8?d L-ÀÝ=( @  Þ8?d PL-BL*ö @  ß8?d L-bBƒ… @  à8?d ÐL-àÓ”[ @  á8?d M-ì Uk @  â8?d€ PM-èÎê  @  8?d M-žÝ¶‘ @  8?d ÐM-L¡O @  8?d N-ÃTœ @  8?d PN-‚RCB @  8?d N-ÐI¬ @  8?d ÐN-RػŠ@  8?d O-hW~¿ @   8?d PO-êÆia @   !8?d O-¸Ý†8 @   "8?d ÐO-:L‘æ @   #8?d P-YxF @   $8?d PP-‡Èo˜ @   %8?d P-ÕÓ€Á @  &8?d ÐP-WB— @  '8?d Q-8‹7µ @  (8?d PQ-º k @  )8?d Q-èÏ2 @  *8?d ÐQ-jØì @  +8?d R-v-? @  ,8?d PR-ôŽ:á @  -8?d R-¦•Õ¸ @  .8?d ÐR-$Âf @  /8?d S-ƒ<>À @  08?d PS-­) @  18?d S-S¶ÆG @  28?d ÐS-Ñ'Ñ™ @  38?d T-I¢w„ @  48?d PT-Ë3`Z @  58?d T-™( @  68?d ÐT-¹˜Ý @  78?d U-evÇ @   88?d PU-çç @  !98?d U-µüç@ @  ":8?d ÐU-7mðž @  #;8?d V-+âM @  $<8?d PV-©s“ @  %=8?d V-ûhýÊ @  &>8?d ÐV-yùê @  '?8?d W-³&: @  (@8?d PW-1·-¡ @  )A8?d W-c¬Âø @  *B8?d ÐW-á=Õ& @  +C8?d X-T ) @  ,D8?d PX-Ö˜÷ @  -E8?d X-„ƒô® @  .F8?d ÐX-ãp @  /G8?d Y-iÛCÚ @  0H8?d PY-ëJT @  1I8?d Y-¹Q»] @  2J8?d ÐY-;À¬ƒ @  3K8?d Z-'OYP @  4L8?d PZ-¥ÞNŽ @  5M8?d Z-÷Å¡× @  6N8?d ÐZ-uT¶  @  7O8?d [-ÒlJ¯ @  8P8?d P[-Pý]q @  9Q8?d [-æ²( @  :R8?d Ð[-€w¥ö @  ;S8?d \-òë @  <T8?d P\-šc5 @  =U8?d \-Èxûl @  >V8?d Ð\-Jéì² @  ?W8?d ]-š!m: @  @X8?d P]-°zä @  AY8?d ]-J«•½ @  BZ8?d Ð]-È:‚c @  C[8?d ^-Ôµw° @  D\8?d P^-V$`n @  E]8?d ^-?7 @  F^8?d Ð^-†®˜é @  G_8?d _-¼!]“ @  H`8?d P_->°JM @  Ia8?d _-l«¥ @  uÐ`-Jb8?d Ð_-î:²Ê @  Kc8?d (`-Ñ R@ @  Ld8?d h`-S˜Ež @  Me8?d ¨`-ƒªÇ @  Nf8?d è`-ƒ½ @  Og8?d (a-ìÛ³ @  Ph8?d ha-nJ m @  Qi8?d ¨a-ž @  ‘€©8?d ¨q-k7ÑÇ @  ’€ª8?d èq-馯 @  “€«8?d (r-õ)3Ê @  ”€¬8?d hr-w¸$ @  •€­8?d ¨r-%£ËM @  –€®8?d èr-§2Ü“ @  —€¯8?d (s- 5 @  ˜€°8?d hs-‚›7ë @  ™€±8?d ¨s-Ѐز @  š€²8?d ès-RÏl @  ›€³8?d (t-Ê”iq @  œ€´8?d ht-H~¯ @  €µ8?d ¨t-‘ö @  ž€¶8?d èt-˜†( @  Ÿ€·8?d (u-æ@2 @   €¸8?d hu-dÑì @  ¡€¹8?d ¨u-6Êùµ @  ¢€º8?d èu-´[îk @  £€»8?d (v-¨Ô¸ @  ¤€¼8?d hv-*E f @  ¥€½8?d ¨v-x^ã? @  ¦€¾8?d èv-úÏôá @  §€¿8?d (w-0$Š @  ¨€À8?d hw-²3T @  ©€Á8?d ¨w-àšÜ  @  ª€Â8?d èw-b ËÓ @  «€Ã8?d (x-×?Ü @  ¬€Ä8?d hx-U® @  ­€Å8?d ¨x-µê[ @  ®€Æ8?d èx-…$ý… @  ¯€Ç8?d (y-êí]/ @  °€È8?d hy-h|Jñ @  ±€É8?d ¨y-:g¥¨ @  ²€Ê8?d èy-¸ö²v @  ³€Ë8?d (z-¤yG¥ @  ´€Ì8?d hz-&èP{ @  µ€Í8?d ¨z-tó¿" @  ¶€Î8?d èz-öb¨ü @  ·€Ï8?d ({-QZTZ @  ¸€Ð8?d h{-ÓËC„ @  ¹€Ñ8?d ¨{-ЬÝ @  º€Ò8?d è{-A» @  »€Ó8?d (|-›Ä @  ¼€Ô8?d h|-U À @  ½€Õ8?d ¨|-KNå™ @  ¾€Ö8?d è|-ÉßòG @  ¿€×8?d (}-sÏ @  À€Ø8?d h}-›†d @  Á€Ù8?d ¨}-É‹H @  €Ú8?d è}-K œ– @  ÀÛ8?d (~-WƒiE @  Ä€Ü8?d h~-Õ~› @  Å€Ý8?d ¨~-‡ ‘ @  Æ€Þ8?d è~-˜† @  Ç€ß8?d (-?Cf @  È€à8?d h-½†T¸ @  É€á8?d ¨-uЀ-'ï»á @  Ê€â8?d è-m ¬? @  Ë€ã8?d @€-‚yY @  Ì€ä8?d €€-¢Œ§ @  Í€å8?d À€-RóãÞ @  ΀æ8?d -‚»o6 @  Ï€ç8?d @-¿«Tª @  Ѐè8?d €-Ÿ^VT @  Ñ€é8?d À-o!¬- @  Ò€ê8?d ‚-òe ì @  Ó€ë8?d @‚-ñ?N  @  Ô€ì8?d €‚-ÑÊLÞ @  Õ€í8?d À‚-!µ¶§ @  Ö€î8?d ƒ-ñý:O @  ×€ï8?d @ƒ-]ß @  Ø€ð8?d €ƒ-$é_! @  Ù€ñ8?d Àƒ-Ô–¥X @  Ú€ò8?d „-ÍØVW @  Û€ó8?d @„-΂› @  Ü€ô8?d €„-îwe @  Ý€õ8?d À„-ì @  Þ€ö8?d …-Î@`ô @  ߀÷8?d @…-âV|Ø @  à€ø8?d €…-£~& @  á€ù8?d À…-2Ü„_ @  â€ú8?d€ †-Û[88 @  €û8?d @†-9@2Ý @  €ü8?d €†-µ0# @  €ý8?d À†-,ƒ1· @  €þ8?d ‡-ü˽_ @  €ÿ8?d @‡-ÈÞ¨æ @  €9?d €‡-è+ª @  €9?d À‡-Öæ @  €9?d ˆ-⃠@   €9?d @ˆ-$ :' @   €9?d €ˆ-ÿ8Ù @   €9?d Àˆ-1É9M @   €9?d ‰-áµ¥ @   €9?d @‰-¿‚ï£ @  €9?d €‰-Ÿwí] @  € 9?d À‰- v¾ @  € 9?d Š-‘_Ö @  € 9?d @Š-WLo^ @  € 9?d €Š-w¹m  @  € 9?d ÀŠ-Bl4 @  €9?d ‹-’ÇàÜ @  €9?d @‹-©”Ø6 @  €9?d €‹-‰aÚÈ @  €9?d À‹-·¬Ë @  €9?d Œ-®âŒÄ @  €9?d @Œ-hñ5å @  €9?d €Œ-H7 @  €9?d ÀŒ-}26 @  €9?d -­zºg @  €9?d @-óyàa @  €9?d €-ӌ⟠@  €9?d À-Qæ^Ì @   €9?d Ž-Ì¢þ  @  !€9?d @Ž- ±G, @  "€9?d €Ž-*DEÒ @  #€9?d ÀŽ-rDF @  $€9?d -Ï:È® @  %€9?d @-iÞɘ @  &€ 9?d €-I+Ëf @  '€!9?d À-wæne @  (€"9?d -É8Ò× @  )€#9?d @-+kö @  *€$9?d €-/Þi @  +€%9?d À-èhœ @  ,€&9?d ‘-Ê ät @  -€'9?d @‘-”£¾r @  .€(9?d €‘-´V¼Œ @  /€)9?d À‘-':'o @  0€*9?d ’-º~‡® @  1€+9?d @’-|m> @  2€,9?d €’-\˜€89?d €•-ø­³N @  ?€99?d À•-ÔÀ  @  @€:9?d –-I„©N @  A€;9?d @–-—o @  B€<9?d €–-¯b‘ @  C€=9?d À–-šT @  D€>9?d —-JŸí @  E€?9?d @—-¨‹Ê @  F€@9?d €—-<]‰4 @  G€A9?d À—-,7 @  H€B9?d ˜-6o * @  I€C9?d @˜-ð|  @  J€D9?d €˜-Љõ @  K€E9?d À˜-å¿a @  L€F9?d ™-5÷–‰ @  M€G9?d @™-kôÌ @  N€H9?d €™-KÎq @  O€I9?d À™-ØmU’ @  P€J9?d š-E)õS @  Q€K9?d @š-ƒ:Lr @  R€L9?d €š-£ÏNŒ @  S€M9?d Àš-–ùO @  T€N9?d ›-F±Ãð @  U€O9?d @›-}âû @  V€P9?d €›-]ùä @  W€Q9?d À›-cÚ\ç @  X€R9?d œ-z”¯è @  Y€S9?d @œ-¼‡É @  Z€T9?d €œ-œr7 @  [€U9?d Àœ-©D£ @  \€V9?d -y ™K @  ]€W9?d @-'ÃM @  ^€X9?d €-úÁ³ @  _€Y9?d À-…}à @  `€Z9?d ž-ÔÝ! @  a€[9?d @ž-ÞÇd @  b€\9?d €ž-þ2fþ @  c€]9?d Àž-Ëgj @  d€^9?d Ÿ-Lë‚ @  e€_9?d @Ÿ-½¨ê´ @  f€`9?d €Ÿ-]èJ @  g€a9uР-?d ÀŸ-£MI @  h€b9?d  -Ò›“/ @  i€c9?d X -ˆ* @  j€d9?d ˜ -4}(ð @  k€e9?d Ø -K)d @  l€f9?d ¡-Ñ¥Œ @  m€g9?d X¡-ÿŠ @  n€h9?d ˜¡-¯õýt @  o€i9?d Ø¡-<™f— @  p€j9?d ¢-¡ÝÆV @  q€k9?d X¢-gÎw @  r€l9?d ˜¢-G;}‰ @  s€m9?d Ø¢-r | @  t€n9?d £-¢Eðõ @  u€o9?d X£-™È @  v€p9?d ˜£-¹ãÊá @  w€q9?d Ø£-‡.oâ @  x€r9?d ¤-ž`œí @  y€s9?d X¤-Xs%Ì @  z€t9?d ˜¤-x†'2 @  {€u9?d ؤ-M°&¦ @  |€v9?d ¥-øªN @  }€w9?d X¥-ÃûðH @  ~€x9?d ˜¥-ãò¶ @  €y9?d Ø¥-,5xF @  €€z9?d ¦-±q؇ @  €{9?d X¦-wba¦ @  ‚€|9?d ˜¦-W—cX @  ƒ€}9?d ئ-b¡bÌ @  „€~9?d §-²éî$ @  …€9?d X§-ù›®‘ @  †€€9?d ˜§-Ùn¬o @  ‡€9?d ا-ç£ l @  ˆ€‚9?d ¨-Ó\…q @  ‰€ƒ9?d X¨-O® @  ‹€…9?d ب-Œ?: @  Œ€†9?d ©-ÐijÒ @  €‡9?d X©-ŽÇéÔ @  Ž€ˆ9?d ˜©-®2ë* @  €‰9?d Ø©-=^pÉ @  €Š9?d ª- Ð @  ‘€‹9?d Xª-f i) @  ’€Œ9?d ˜ª-Fük× @  “€9?d ت-sÊjC @  ”€Ž9?d «-£‚æ« @  •€9?d X«-˜ÑÞA @  –€9?d ˜«-¸$Ü¿ @  —€‘9?d Ø«-†éy¼ @  ˜€’9?d ¬-Ÿ§Š³ @  ™€“9?d X¬-Y´3’ @  š€”9?d ˜¬-yA1l @  ›€•9?d ج-Lw0ø @  œ€–9?d ­-œ?¼ @  €—9?d X­-Â<æ @  ž€˜9?d ˜­-âÉäè @  Ÿ€™9?d Ø­-`£X» @   €š9?d ®-€g‹ @  ¡›9?d X®-Ft2' @  ¢œ9?d ˜®-f0Ù @  £9?d Ø®-S·1M @  ¤ž9?d ¯-ƒÿ½¥ @  ¥Ÿ9?d X¯-%¼“ @  ¦ 9?d ˜¯-î¾m @  §¡9?d د-;#n @  ¨¢9?d °-…ý§Ü @  ©£9?d X°-Cîý @  ª¤9?d ˜°-c @  «¥9?d ذ-V-— @  ¬¦9?d ±-†e‘ @  ­§9?d X±-ØfËy @  ®¨9?d ˜±-ø“ɇ @  ¯©9?d ر-kÿRd @  °ª9?d ²-ö»ò¥ @  ±«9?d X²-0¨K„ @  ²¬9?d ˜²-]Iz @  ³­9?d ز-%kHî @  ´®9?d ³-õ#Ä @  µ¯9?d X³-Îpüì @  ¶°9?d ˜³-î…þ @  ·±9?d س-ÐH[ @  ¸²9?d ´-ɨ @  ¹³9?d X´-? @  º´9?d ˜´-/àÁ @  »µ9?d Ø´-ÖU @  ¼¶9?d µ-Êžž½ @  ½·9?d Xµ-”Ä» @  ¾¸9?d ˜µ-´hÆE @  ¿¹9?d ص-˜|„ @  Àº9?d ¶-AÜE @  Á»9?d X¶-ÃRed @  Â¼9?d ˜¶-ã§gš @  Ã½9?d ض-Ö‘f @  Ä¾9?d ·-Ùêæ @  Å¿9?d X·-PmþÁ @  ÆÀ9?d ˜·-p˜ü? @  ÇÁ9?d Ø·-NUY< @  ÈÂ9?d ¸-zªÕ! @  ÉÃ9?d X¸-¼¹l @  ÊÄ9?d ˜¸-œLnþ @  ËÅ9?d ظ-©zoj @  ÌÆ9?d ¹-y2ã‚ @  ÍÇ9?d X¹-'1¹„ @  ÎÈ9?d ˜¹-Ä»z @  ÏÉ9?d ع-”¨ ™ @  ÐÊ9?d º- ì€X @  ÑË9?d Xº-Ïÿ9y @  ÒÌ9?d ˜º-ï ;‡ @  ÓÍ9?d غ-Ú<: @  ÔÎ9?d »- t¶û @  ÕÏ9?d X»-1'Ž @  ÖÐ9?d ˜»-ÒŒï @  ×Ñ9?d Ø»-/)ì @  ØÒ9?d ¼-6QÚã @  ÙÓ9?d X¼-ðBc @  ÚÔ9?d ˜¼-зa< @  ÛÕ9?d ؼ-å`¨ @  ÜÖ9?d ½-5Éì@ @  Ý×9?d X½-kʶF @  ÞØ9?d ˜½-K?´¸ @  ßÙ9?d ؽ-ÉUë @  àÚ9?d ¾-T¨* @  áÛ9?d X¾-’  @  âÜ9?d€ ˜¾-s°äõ @  Ý9?d ؾ-§Ç­H @  Þ9?d ¿-w!  @  ß9?d X¿-"Û{ @  à9?d ˜¿-4×Ù… @uÐÀ-  á9?d Ø¿-Ĩ#ü @  â9?d 0À- Xr® @  ã9?d pÀ-¨ù”õ @  ä9?d °À-ˆ –  @   å9?d ðÀ-xslr @   æ9?d 0Á-¨;àš @   ç9?d pÁ-3qAq @   è9?d °Á-„C @   é9?d ðÁ-ãû¹ö @  ê9?d 0Â-~¿7 @  ë9?d pÂ-Û¿ÁŒ @  ì9?d °Â-ûJÃr @  í9?d ðÂ- 59  @  î9?d 0Ã-Û}µã @  ï9?d pÃ-%gvä @  ð9?d °Ã-’t @  ñ9?d ðÃ-õíŽc @  ò9?d 0Ä-ì£}l @  ó9?d pÄ-ä›7 @  ô9?d °Ä-Ä÷™É @  õ9?d ðÄ-4ˆc° @  ö9?d 0Å-äÀïX @  ÷9?d pÅ-ŠN³ @  ø9?d °Å-_LM @  ù9?d ðÅ-¯¶4 @  ú9?d 0Æ-2Dõ @  û9?d pÆ-†Béþ @   ü9?d °Æ-¦·ë @  !ý9?d ðÆ-VÈy @  "þ9?d 0Ç-†€‘ @  #ÿ9?d pÇ-ÅþFà @  $:?d °Ç-å D @  %:?d ðÇ-t¾g @  &:?d 0È-!‹2z @  ':?d pÈ-)*Ô! @  (:?d °È- ßÖß @  ):?d ðÈ-ù ,¦ @  *:?d 0É-)è N @  +:?d pÉ-²¢¥ @  ,:?d °É-’W[ @  - :?d ðÉ-b(ù" @  . :?d 0Ê-ÿlYã @  / :?d pÊ-ZlX @  0 :?d °Ê-z™ƒ¦ @  1 :?d ðÊ-Šæyß @  2:?d 0Ë-Z®õ7 @  3:?d pË-¤´60 @  4:?d °Ë-„A4Î @  5:?d ðË-t>η @  6:?d 0Ì-mp=¸ @  7:?d pÌ-eÑÛã @  8:?d °Ì-E$Ù @  9:?d ðÌ-µ[#d @  ::?d 0Í-e¯Œ @  ;:?d pÍ-þYg @  <:?d °Í-Þ¬ ™ @  =:?d ðÍ-.Óöà @  >:?d 0Î-³—V! @  ?:?d pÎ-©–¯¸ @  @:?d °Î-‰c­F @  A:?d ðÎ-yW? @  B:?d 0Ï-©TÛ× @  C:?d pÏ-Êù!  @  D :?d °Ï-ê #ò @  E!:?d ðÏ-sÙ‹ @  F":?d 0Ð-¤­e9 @  G#:?d pÐ-¬ ƒb @  H$:?d °Ð-Œùœ @  I%:?d ðÐ-|†{å @  J&:?d 0Ñ-¬Î÷  @  K':?d pÑ-7„Væ @  L(:?d °Ñ-qT @  M):?d ðÑ-ç®a @  N*:?d 0Ò-zJ  @  O+:?d pÒ-ßJÖ @  P,:?d °Ò-ÿ¿Ôå @  Q-:?d ðÒ-À.œ @  R.:?d 0Ó-߈¢t @  S/:?d pÓ-!’as @  T0:?d °Ó-gc @  U1:?d ðÓ-ñ™ô @  V2:?d 0Ô-èVjû @  W3:?d pÔ-à÷Œ  @  X4:?d °Ô-ÀŽ^ @  Y5:?d ðÔ-0}t' @  Z6:?d 0Õ-à5øÏ @  [7:?d pÕ-{Y$ @  \8:?d °Õ-[Š[Ú @  ]9:?d ðÕ-«õ¡£ @  ^::?d 0Ö-6±b @  _;:?d pÖ-‚·þi @  `<:?d °Ö-¢Bü— @  a=:?d ðÖ-R=î @  b>:?d 0×-‚uŠ @  c?:?d p×-ˆeÌ @  d@:?d °×-1}g2 @  eA:?d ð×-ÁK @  fB:?d 0Ø-õýV @  gC:?d pØ-ý\÷  @  hD:?d °Ø-Ý©õó @  iE:?d ðØ--ÖŠ @  jF:?d 0Ù-ýžƒb @  kG:?d pÙ-fÔ"‰ @  lH:?d °Ù-F! w @  mI:?d ðÙ-¶^Ú @  nJ:?d 0Ú-+zÏ @  oK:?d pÚ-Ž¢t @  pL:?d °Ú-®ï Š @  qM:?d ðÚ-^Zó @  rN:?d 0Û-ŽØÖ @  sO:?d pÛ-p @  tP:?d °Û-P7â @  uQ:?d ðÛ- Hí› @  vR:?d 0Ü-¹” @  wS:?d pÜ-±§øÏ @  xT:?d °Ü-‘Rú1 @  yU:?d ðÜ-a-H @  zV:?d 0Ý-±eŒ  @  {W:?d pÝ-*/-K @  |X:?d °Ý- Ú/µ @  }Y:?d ðÝ-ú¥ÕÌ @  ~Z:?d 0Þ-gáu  @  [:?d pÞ-ž¶¼¥ @  €\:?d °Þ-¾C¾[ @  ]:?d ðÞ-NpÕ' @  ¤€:?d Èç-¼áÂù @  ¥:?d è-úð£C @  ¦‚:?d Hè-xa´ @  §ƒ:?d ˆè-Ò¤Gæ @  ¨„:?d Èè-P5P8 @  ©…:?d é-ò“1w @  ª†:?d Hé-p&© @  «‡:?d ˆé-I,’b @  ¬ˆ:?d Èé-˽…¼ @  ­‰:?d ê-$ÈÚ @  ®Š:?d Hê-¦†ß @  ¯‹:?d ˆê-¡âŸ @  °Œ:?d Èê-#sA @  ±:?d ë-Õd @  ²Ž:?d Hë-DsÐ @  ³:?d ˆë-_:¥÷ @  ´:?d Èë-Ý«²) @  µ‘:?d ì-¶ ¬ @  ¶’:?d Hì-4š»_ @  ·“:?d ˆì-ž_H$ @  ¸”:?d Èì-Î_ú @  ¹•:?d í-¾h>µ @  º–:?d Hí-<ù)k @  »—:?d ˆí-×  @  ¼˜:?d Èí-‡FŠ~ @  ½™:?d î-hìÇ @  ¾š:?d Hî-ê}ÐÆ @  ¿›:?d ˆî-R< @  Àœ:?d Èî-Љ+¡ @  Á:?d ï-r/Jî @  Âž:?d Hï-ð¾]0 @  ÃŸ:?d ˆï-1w²Ë @  Ä :?d Èï-³æ¥ @  Å¡:?d ð-Öô @  Æ¢:?d Hð-ýGãÞ @  Ç£:?d ˆð-W‚¥ @  È¤:?d Èð-Õ{ @  É¥:?d ñ-wµf4 @  Ê¦:?d Hñ-õ$qê @  Ë§:?d ˆñ-Ì Å! @  Ì¨:?d Èñ-N›Òÿ @  Í©:?d ò-¡1Ÿ™ @  Îª:?d Hò-# ˆG @  Ï«:?d ˆò-$ÄEÜ @  Ð¬:?d Èò-¦UR @  Ñ­:?d ó-ó3M @  Ò®:?d Hó-†b$“ @  Ó¯:?d ˆó-Úò´ @  Ô°:?d Èó-Xåj @  Õ±:?d ô-3-û @  Ö²:?d Hô-±¼ì @  ×³:?d ˆô-yg @  Ø´:?d Èô-™è¹ @  Ùµ:?d õ-;Niö @  Ú¶:?d Hõ-¹ß~( @  Û·:?d ˆõ-€ñÊã @  Ü¸:?d Èõ-`Ý= @  Ý¹:?d ö-íÊ[ @  Þº:?d Hö-o[‡… @  ß»:?d ˆö-y9m® @  à¼:?d Èö-û¨zp @  á½:?d ÷-Y? @  â¾:?d€ H÷-¯\G @  ¿:?d ˆ÷-„¢„ @  À:?d È÷-ýµZ @  Á:?d ø-~M/  @  Â:?d Hø-üÜ8Ó @  Ã:?d ˆø-˜«”Ò @  Ä:?d Èø-:ƒ  @  Å:?d ù-v.½9 @  Æ:?d Hù-ô¿ªç @   Ç:?d ˆù-ØåÁ @   È:?d Èù-ŠIò @   É:?d ú- ªD” @   Ê:?d Hú-";SJ @   Ë:?d ˆú-FLÿK @  Ì:?d Èú-ÄÝè• @  Í:?d û-hè@ @  Î:?d Hû-‡ùÿž @  Ï:?d ˆû-ÎÒT @  Ð:?d Èû-œ_ÅŠ @  Ñ:?d ü-2¶ Ï @  Ò:?d Hü-°'7 @  Ó:?d ˆü-ÔP› @  Ô:?d Èü-VÁŒÎ @  Õ:?d ý-:Õ²û @  Ö:?d Hý-¸D¥% @  ×:?d ˆý-D#ê @  Ø:?d Èý-ƲýÝ @  Ù:?d þ-ìQKV @  Ú:?d Hþ-nÀ\ˆ @  Û:?d ˆþ- ·ð‰ @  Ü:?d Èþ-ˆ&çW @  Ý:?d ÿ-X•À2 @   Þ:?d Hÿ-Ú×ì @  !ß:?d ˆÿ-Þ„Ãú @  "uÐ.à:?d Èÿ-eÒñ @  # á:?d .Ö„V¬ @  $ â:?d `.TAr @  % ã:?d  .0bís @  & ä:?d à.²óú­ @  ' å:?d .ÞçĘ @  ( æ:?d `.\vÓF @  ) ç:?d  . œ` @  * è:?d à."€‹¾ @  + é:?d .c=5 @  , ê:?d `.Šò*ë @  - ë:?d  .î…†ê @  . ì:?d à.l‘4 @  / í:?d .­¡‘á @  0 î:?d `./0†? @  1 ï:?d  .¶«õ @  2 ð:?d à.4–¼+ @  3 ñ:?d .šYn @  4 ò:?d `.îN° @  5 ó:?d  .|™â± @  6 ô:?d à.þõo @  7 õ:?d .’ËZ @  8 ö:?d `.Ü„ @  9 ÷:?d  .ìê“¢ @  : ø:?d à.n{„| @  ; ù:?d .D˜2÷ @  < ú:?d `.Æ %) @  = û:?d  .¢~‰( @  > ü:?d à. ïžö @  ? ý:?d .^[¿ @  @ þ:?d `.Üʨß @  A ÿ:?d  .J»¨F @  B ;?d à.È*¿˜ @  C ;?d .Kr%Ï @  D ;?d `.Éã2 @  E ;?d  .­”ž @  F ;?d à./‰Î @  G ;?d .C·û @  H ;?d ` .Á€ % @  I ;?d   .=çï @  J ;?d à .¿vøÝ @  K  ;?d .••NV @  L  ;?d ` .Yˆ @  M  ;?d   .ssõ‰ @  N  ;?d à .ñââW @  O  ;?d .0Wâ‚ @  P ;?d ` .²Æõ\ @  Q ;?d   .+ñØ– @  R ;?d à .©`ÏH @  S ;?d .‰*  @  T ;?d ` .…=Ó @  U ;?d   .áo‘Ò @  V ;?d à .cþ†  @  W ;?d .ê¸9 @  X ;?d ` .{¯ç @  Y ;?d   .qàÁ @  Z ;?d à .ó÷ @  [ ;?d .ÙnA” @  \ ;?d `.[ÿVJ @  ] ;?d  .?ˆúK @  ^ ;?d à.½í• @  _ ;?d .mªÊð @  ` ;?d `.ï;Ý. @  a ;?d  .ë»É8 @  b  ;?d à.i*Þæ @  c !;?d .`St @  d ";?d `.âÂcÀ @  e #;?d  .†µÏÁ @  f $;?d à.$Ø @  g %;?d .h0æ* @  h &;?d `.ê¡ñô @  i ';?d  .ƾÒ @  j (;?d à.”W©  @  k );?d .¾´‡ @  l *;?d `.<%Y @  m +;?d  .XR¤X @  n ,;?d à.Úó† @  o -;?d .v³S @  p .;?d `.™ç¤ @  q /;?d  .ЉG @  r 0;?d à.‚Až™ @  s 1;?d .,¨{Ü @  t 2;?d `.®9l @  u 3;?d  .ÊNÀ @  v 4;?d à.Hß×Ý @  w 5;?d .$Ëéè @  x 6;?d `.¦Zþ6 @  y 7;?d  .Z=± @  z 8;?d à.ج¦Î @  { 9;?d .òOE @  | :;?d `.pÞ› @  } ;;?d  .©«š @  ~ <;?d à.–8¼D @   =;?d . Ú­‚ @  € >;?d `.‰Kº\ @   ?;?d  .}›»[ @  ‚ @;?d à.ÿ ¬… @  ƒ A;?d .|R6Ò @  „ B;?d `.þÃ!  @  … C;?d  .š´  @  † D;?d à.%šÓ @  ‡ E;?d .t1¤æ @  ˆ F;?d `.ö ³8 @  ‰ G;?d  . Çü @  Š H;?d à.ˆVëÀ @  ‹ I;?d .¢µ]K @  Œ J;?d `. $J• @   K;?d  .DSæ” @  Ž L;?d à.ÆÂñJ @   M;?d .wñŸ @   N;?d `.…ææA @  ‘ O;?d  .ÑË‹ @  ’ P;?d à.ž@ÜU @  “ Q;?d .0©9 @  ” R;?d `.²8.Î @  • S;?d  .ÖO‚Ï @  – T;?d à.TÞ• @  — U;?d .8Ê«$ @  ˜ V;?d `.º[¼ú @  ™ W;?d  .F<óÜ @  š X;?d à.Ä­ä @  › Y;?d .îNR‰ @  œ Z;?d `.lßEW @   [;?d  .¨éV @  ž \;?d à.Š9þˆ @  Ÿ ];?d .ZŠÙí @    ^;?d `.ØÎ3 @  ¡ _;?d  .Ü›Ú%uÐ . @  ¢ `;?d à.^ Íû @  £ a;?d 8 .˜¦× @  ¤ b;?d x .7  @  ¥ c;?d ¸ .~@¾ @  ¦ d;?d ø .üÑ©Ö @  § e;?d 8!.Å—ã @  ¨ f;?d x!.T€= @  © g;?d ¸!.î3Ï @  ª h;?d ø!.l¢ØÅ @  « i;?d 8".FAnN @  ¬ j;?d x".ÄÐy @  ­ k;?d ¸". §Õ‘ @  ® l;?d ø"."6ÂO @  ¯ m;?d 8#.ãƒÂš @  ° n;?d x#.aÕD @  ± o;?d ¸#.ø%øŽ @  ² p;?d ø#.z´ïP @  ³ q;?d 8$.Ô]  @  ´ r;?d x$.VÌË @  µ s;?d ¸$.2»±Ê @  ¶ t;?d ø$.°*¦ @  · u;?d 8%.Ü>˜! @  ¸ v;?d x%.^¯ÿ @  ¹ w;?d ¸%.¢ÈÀÙ @  º x;?d ø%. Y× @  » y;?d 8&. ºaŒ @  ¼ z;?d x&.ˆ+vR @  ½ {;?d ¸&.ì\ÚS @  ¾ |;?d ø&.nÍÍ @  ¿ };?d 8'.yìz @  À ~;?d x'.’èû¤ @  Á ;?d ¸'.{þ®1 @   €;?d ø'.ùo¹ï @  à ;?d 8(.z7#¸ @  Ä ‚;?d x(.ø¦4f @  Å ƒ;?d ¸(.œÑ˜g @  Æ „;?d ø(.@¹ @  Ç …;?d 8).rT±Œ @  È †;?d x).ðŦR @  É ‡;?d ¸). ¢ét @  Ê ˆ;?d ø).Ž3þª @  Ë ‰;?d 8*.¤ÐH! @  Ì Š;?d x*.&A_ÿ @  Í ‹;?d ¸*.B6óþ @  Î Œ;?d ø*.À§ä  @  Ï ;?d 8+.äõ @  Ð Ž;?d x+.ƒƒó+ @  Ñ ;?d ¸+.´Þá @  Ò ;?d ø+.˜%É? @  Ó ‘;?d 8,.6Ì,z @  Ô ’;?d x,.´];¤ @  Õ “;?d ¸,.Ð*—¥ @  Ö ”;?d ø,.R»€{ @  × •;?d 8-.>¯¾N @  Ø –;?d x-.¼>© @  Ù —;?d ¸-.@Yæ¶ @  Ú ˜;?d ø-.ÂÈñh @  Û ™;?d 8..è+Gã @  Ü š;?d x..jºP= @  Ý ›;?d ¸..Íü< @  Þ œ;?d ø..Œ\ëâ @  ß ;?d 8/.\ï̇ @  à ž;?d x/.Þ~ÛY @  á Ÿ;?d ¸/.ÚþÏO @  â  ;?d€ ø/.`*± @    ¡;?d 80.ˆ)È` @    ¢;?d x0. ¸ß¾ @    £;?d ¸0.«†ˆR @    ¤;?d ø0.)ŸŒ @    ¥;?d 81.‹±þà @    ¦;?d x1. é @    §;?d ¸1.;õùA @    ¨;?d ø1.¹dîŸ @    ©;?d 82.VΣù @    ª;?d x2.Ô_´' @    «;?d ¸2.uaãË @    ¬;?d ø2.÷ðô @    ­;?d 83.UV•Z @    ®;?d x3.×Ç‚„ @    ¯;?d ¸3.-ãÎÔ @    °;?d ø3.¯rÙ  @    ±;?d 84.ÄÒÇ¢ @    ²;?d x4.FCÐ| @    ³;?d ¸4.ç}‡ @    ´;?d ø4.eìN @    µ;?d 85.ÇJñ @    ¶;?d x5.EÛæß @    ·;?d ¸5.wöƒ @    ¸;?d ø5.õŸá] @    ¹;?d 86.5¬; @    º;?d x6.˜¤»å @    »;?d ¸6.9šì  @    ¼;?d ø6.» û× @    ½;?d 87.­š˜ @    ¾;?d x7.›.KeØT @   : Ú;?d x>.ÉôÏŠ @   ; Û;?d ¸>.hʘf @   < Ü;?d ø>.ê[¸ @   = Ý;?d 8?.Hýî÷ @   > Þ;?d x?.Êlù) @   ? ß;?duÐ@.7 ¸?.þ­‡ @   @ à;?d ø?.oºY @   A á;?d P@.!-í @   B â;?d @.Øï< @   C ã;?d Ð@.‚­ð @   D ä;?d A.ÒÊ! @   E å;?d PA."µÛa @   F æ;?d A.@ÙŸ @   G ç;?d ÐA.’ñÜã @   H è;?d B.µ|" @   I é;?d PB.ÿʆ[ @   J ê;?d B.ß?„¥ @   K ë;?d ÐB.ÜeÆi @   L ì;?d C. -J @   M í;?d PC.üR°ø @   N î;?d C.ܧ² @   O ï;?d ÐC.„çëv @   P ð;?d D.©y @   Q ñ;?d PD.mÖâ @   R ò;?d D.M#àþ @   S ó;?d ÐD.Ny¢2 @   T ô;?d E.ž1.Ú @   U õ;?d PE.nNÔ£ @   V ö;?d E.N»Ö] @   W ÷;?d ÐE.Þ Ó! @   X ø;?d F.CNsà @   Y ù;?d PF.³1‰™ @   Z ú;?d F.“Ä‹g @   [ û;?d ÐF.žÉ« @   \ ü;?d G.@ÖEC @   ] ý;?d PG.°©¿: @   ^ þ;?d G.\½Ä @   _ ÿ;?d ÐG.êUÑÁ @   ` <?d H.Þª]Ü @   a <?d PH..Õ§¥ @   b <?d H. ¥[ @   c <?d ÐH. zç— @   d <?d I.Ý2k @   e <?d PI.-M‘ @   f <?d I. ¸“ø @   g <?d ÐI. –„ @   h <?d J.M6E @   i  <?d PJ.ð2Ì< @   j  <?d J.ÐÇΠ@   k  <?d ÐJ.ÓŒ @   l  <?d K.Õæ @   m  <?d PK.óªúŸ @   n <?d K.Ó_øa @   o <?d ÐK.‹¡ @   p <?d L.’QR @   q <?d PL.b.¨g @   r <?d L.BÛª™ @   s <?d ÐL.AèU @   t <?d M.‘Éd½ @   u <?d PM.a¶žÄ @   v <?d M.ACœ: @   w <?d ÐM.Ñò™F @   x <?d N.L¶9‡ @   y <?d PN.¼ÉÃþ @   z <?d N.œ<Á @   { <?d ÐN.ŸfƒÌ @   | <?d O.O.$ @   } <?d PO.¿Qõ] @   ~ <?d O.Ÿ¤÷£ @    <?d ÐO.† @   €  <?d P.¸Ú:® @    !<?d PP.H¥À× @   ‚ "<?d P.hPÂ) @   ƒ #<?d ÐP.k €å @   „ $<?d Q.»B  @   … %<?d PQ.K=öt @   † &<?d Q.kÈôŠ @   ‡ '<?d ÐQ.ûyñö @   ˆ (<?d R.f=Q7 @   ‰ )<?d PR.–B«N @   Š *<?d R.¶·©° @   ‹ +<?d ÐR.µíë| @   Œ ,<?d S.e¥g” @    -<?d PS.•Úí @   Ž .<?d S.µ/Ÿ @    /<?d ÐS.íoÆc @    0<?d T.ô!5l @   ‘ 1<?d PT.^Ï @   ’ 2<?d T.$«Íë @   “ 3<?d ÐT.'ñ' @   ” 4<?d U.÷¹Ï @   • 5<?d PU.Æù¶ @   – 6<?d U.'3ûH @   — 7<?d ÐU.·‚þ4 @   ˜ 8<?d V.*Æ^õ @   ™ 9<?d PV.Ú¹¤Œ @   š :<?d V.úL¦r @   › ;<?d ÐV.ùä¾ @   œ <<?d W.)^hV @    =<?d PW.Ù!’/ @   ž ><?d W.ùÔÑ @   Ÿ ?<?d ÐW.ÝuÂÜ @     @<?d X.éŠNÁ @   ¡ A<?d PX.õ´¸ @   ¢ B<?d X.9¶F @   £ C<?d ÐX.:ZôŠ @   ¤ D<?d Y.êxb @   ¥ E<?d PY.m‚ @   ¦ F<?d Y.:˜€å @   § G<?d ÐY.ª)…™ @   ¨ H<?d Z.7m%X @   © I<?d PZ.Çß! @   ª J<?d Z.ççÝß @   « K<?d ÐZ.佟 @   ¬ L<?d [.4õû @   ­ M<?d P[.ÄŠé‚ @   ® N<?d [.äë| @   ¯ O<?d Ð[.¼?²  @   ° P<?d \.¥qA @   ± Q<?d P\.U»z @   ² R<?d \.uû¹„ @   ³ S<?d Ð\.v¡ûH @   ´ T<?d ].¦éw  @   µ U<?d P].V–Ù @   ¶ V<?d ].vc' @   · W<?d Ð].æÒŠ[ @   ¸ X<?d ^.{–*š @   ¹ Y<?d P^.‹éÐã @   º Z<?d ^.«Ò @   » [<?d Ð^.¨FÑ @   ¼ \<?d _.x9 @   ½ ]<?d P_.ˆqæ@ @   ¾ ^<?d _.¨„ä¾ @   uÐ`.¿ _<?d Ð_.)ž0 @   À`<?d (`.—ä+¨ @   Áa<?d h`.g›ÑÑ @   Âb<?d ¨`.GnÓ/ @   Ãc<?d è`.D4‘ã @   Äd<?d (a.”|  @   Åe<?d ha.dçr @   Æf<?d ¨a.DöåŒ @   Çg<?d èa.ÔGàð @   Èh<?d (b.I@1 @   Éi<?d hb.¹|ºH @   Êj<?d ¨b.™‰¸¶ @   Ëk<?d èb.šÓúz @   Ìl<?d (c.J›v’ @   Ím<?d hc.ºäŒë @   În<?d ¨c.šŽ @   Ïo<?d èc.ÂQ×e @   Ðp<?d (d.Û$j @   Ñq<?d hd.+`Þ @   Òr<?d ¨d. •Üí @   Ós<?d èd.Ïž! @   Ôt<?d (e.؇É @   Õu<?d he.(øè° @   Öv<?d ¨e. êN @   ×w<?d èe.˜¼ï2 @   Øx<?d (f.øOó @   Ùy<?d hf.õ‡µŠ @   Úz<?d ¨f.Õr·t @   Û{<?d èf.Ö(õ¸ @   Ü|<?d (g.`yP @   Ý}<?d hg.öƒ) @   Þ~<?d ¨g.Öê× @   ß<?d èg.ï‡H @   à€<?d (h.Ûr U @   á<?d hh.+ ñ, @   â‚<?d€ ¨h.;ït @  !ƒ<?d èh. å‘ @  !„<?d (i.Mhiy @  !…<?d hi.x^hí @  !†<?d ¨i.X«j @  !‡<?d èi.¨0 @  !ˆ<?d (j.›ìÔ @  !‰<?d hj.¥!5× @  !Š<?d ¨j.…Ô7) @  ! ‹<?d èj.CÇŽ @  ! Œ<?d (k.“à @  ! <?d hk.¦¹t @  ! Ž<?d ¨k.†LŠ @  ! <?d èk.½9` @  !<?d (l.¤QÊo @  !‘<?d hl.7=QŒ @  !’<?d ¨l.ÈSr @  !“<?d èl.ÑÛêS @  !”<?d (m.“f» @  !•<?d hm.4¥g/ @  !–<?d ¨m.PeÑ @  !—<?d èm.JS?× @  !˜<?d (n.ן @  !™<?d hn.éÚ: @  !š<?d ¨n.É/8ë @  !›<?d èn.<Ê @  !œ<?d (o.ßt " @  !<?d ho.êB ¶ @  !ž<?d ¨o.Ê·H @  !Ÿ<?d èo.lS~ @  ! <?d (p.Ò³Ì @  !¡<?d hp.PçŸ @  ! ¢<?d ¨p.p a @  !!£<?d èp.¶´@ @  !"¤<?d (q.fI8¨ @  !#¥<?d hq.S9< @  !$¦<?d ¨q.sŠ; @  !%§<?d èq.-‰aÄ @  !&¨<?d (r.°ÍÁ @  !'©<?d hr.Žd @  !(ª<?d ¨r.®õfø @  !)«<?d èr.hæßÙ @  !*¬<?d (s.¸®S1 @  !+­<?d hs.˜R¥ @  !,®<?d ¨s.­mP[ @  !-¯<?d ès.–>h± @  !.°<?d (t.p›¾ @  !/±<?d ht.] @  !0²<?d ¨t.<é£ @  !1³<?d èt.úú»‚ @  !2´<?d (u.*²7j @  !3µ<?d hu.„6þ @  !4¶<?d ¨u.?q4 @  !5·<?d èu.arn @  !6¸<?d (v.ü6ÎÇ @  !7¹<?d hv.ÂûkÄ @  !8º<?d ¨v.âi: @  !9»<?d èv.$Ð @  !:¼<?d (w.ôU\ó @  !;½<?d hw.Ác]g @  !<¾<?d ¨w.á–_™ @  !=¿<?d èw.·"K¾ @  !>À<?d (x.ƒÝÇ£ @  !?Á<?d hx.¯°}b @  !@Â<?d ¨x.Eœ @  !AÃ<?d èx.IVƽ @  !BÄ<?d (y.™JU @  !CÅ<?d hy.¬(KÁ @  !DÆ<?d ¨y.ŒÝI? @  !EÇ<?d èy.ÒÞ9 @  !FÈ<?d (z.Oš³ø @  !GÉ<?d hz.qWû @  !HÊ<?d ¨z.Q¢ @  !IË<?d èz.—±­$ @  !JÌ<?d ({.Gù!Ì @  !KÍ<?d h{.rÏ X @  !LÎ<?d ¨{.R:"¦ @  !MÏ<?d è{.iiL @  !NÐ<?d (|.p'éC @  !OÑ<?d h|.ãKr  @  !PÒ<?d ¨|.þp^ @  !QÓ<?d è|.­É @  !RÔ<?d (}.ÕåE— @  !SÕ<?d h}.àÓD @  !TÖ<?d ¨}.À&Fý @  !U×<?d è}.ž%û @  !VØ<?d (~.a¼: @  !WÙ<?d h~.=¬9 @  !XÚ<?d ¨~.YÇ @  !YÛ<?d è~.ÛJ¢æ @  !ZÜ<?d (. . @  ![Ý<?d h.>4/š @  !\Þ<?d ¨.uЀ.'Á-d @  !]ß<?d è.CKR @  !^ à<?d @€.-õõ& @  !_ á<?d €€. û\U @  !` â<?d À€.jK‹ @  !a ã<?d . iœ @  !b ä<?d @.™1~B @  !c å<?d €.cjö @  !d æ<?d À.Œò}( @  !e ç<?d ‚.Í$1 @  !f è<?d @‚.Oµ‡ï @  !g é<?d €‚.Ó7Ì @  !h ê<?d À‚.Q  @  !i ë<?d ƒ.ÅG @  !j ì<?d @ƒ.GÖÛ @  !k í<?d €ƒ.Єo @  !l î<?d Àƒ.R± @  !m ï<?d „.ò™ÊŠ @  !n ð<?d @„.pÝT @  !o ñ<?d €„.AS— @  !p ò<?d À„.ÑDI @  !q ó<?d ….W[f^ @  !r ô<?d @….ÕÊq€ @  !s õ<?d €….B˜e4 @  !t ö<?d À….À rê @  !u ÷<?d †.ߟó @  !v ø<?d @†.Nˆ- @  !w ù<?d €†.Ÿç8 @  !x ú<?d À†.v/Ð @  !y û<?d ‡.‰¼ Ç @  !z ü<?d @‡. - @  !{ ý<?d €‡.œ­ @  !| þ<?d À‡.îs @  !} ÿ<?d ˆ.œ•—  @  !~ =?d @ˆ.€× @  ! =?d €ˆ.s[ @  !€ =?d Àˆ.ñÊÙ @  ! =?d ‰.e*Î @  !‚ =?d @‰.ç‘= @  !ƒ =?d €‰.pÃ)¤ @  !„ =?d À‰.òR>z @  !… =?d Š.³„Óc @  !† =?d @Š.1Ľ @  !‡  =?d €Š.­¼tž @  !ˆ  =?d ÀŠ./-c@ @  !‰  =?d ‹.»çAW @  !Š  =?d @‹.9vV‰ @  !‹  =?d €‹.®$B= @  !Œ =?d À‹.,µUã @  ! =?d Œ.Œ9‰Ø @  !Ž =?d @Œ.¨ž @  ! =?d €Œ.? Å @  ! =?d ÀŒ.½1 @  !‘ =?d .)û%  @  !’ =?d @.«j2Ò @  !“ =?d €.<8&f @  !” =?d À.¾©1¸ @  !• =?d Ž.ÿÜ¡ @  !– =?d @Ž.}îË @  !— =?d €Ž.áG{\ @  !˜ =?d ÀŽ.cÖl‚ @  !™ =?d .÷N• @  !š =?d @.uYK @  !› =?d €.âßMÿ @  !œ =?d À.`NZ! @  ! =?d .úåð{ @  !ž  =?d @.xtç¥ @  !Ÿ !=?d €.XzNÖ @  !  "=?d À.ÚëY @  !¡ #=?d ‘.N!{ @  !¢ $=?d @‘.̰lÁ @  !£ %=?d €‘.[âxu @  !¤ &=?d À‘.Ùso« @  !¥ '=?d ’.˜¥‚² @  !¦ (=?d @’.4•l @  !§ )=?d €’.†%O @  !¨ *=?d À’. 2‘ @  !© +=?d “.Ɔ @  !ª ,=?d @“.WX @  !« -=?d €“.…ì @  !¬ .=?d À“.”2 @  !­ /=?d ”.§Ø  @  !® 0=?d @”.%‰Ï× @  !¯ 1=?d €”.A @  !° 2=?d À”.–VÊ @  !± 3=?d •.ÚtÝ @  !² 4=?d @•.€Kc @  !³ 5=?d €•.w· @  !´ 6=?d À•.•ˆ`i @  !µ 7=?d –.Ô^p @  !¶ 8=?d @–.VÏš® @  !· 9=?d €–.Êf* @  !¸ :=?d À–.H÷=S @  !¹ ;=?d —.Ü=D @  !º <=?d @—.^¬š @  !» ==?d €—.Éþ. @  !¼ >=?d À—.Ko ð @  !½ ?=?d ˜.«µ„ @  !¾ @=?d @˜.)$“Ê @  !¿ A=?d €˜.§-<+ @  !À B=?d À˜.%¼+õ @  !Á C=?d ™.±v â @  ! D=?d @™.3ç< @  !à E=?d €™.¤µ ˆ @  !Ä F=?d À™.&$V @  !Å G=?d š.gòðO @  !Æ H=?d @š.åcç‘ @  !Ç I=?d €š.yÊW² @  !È J=?d Àš.û[@l @  !É K=?d ›.o‘b{ @  !Ê L=?d @›.íu¥ @  !Ë M=?d €›.zRa @  !Ì N=?d À›.øÃvÏ @  !Í O=?d œ.XOªô @  !Î P=?d @œ.ÚÞ½* @  !Ï Q=?d €œ.ëÖ3é @  !Ð R=?d Àœ.iG$7 @  !Ñ S=?d .ý  @  !Ò T=?d @.þ @  !Ó U=?d €.èNJ @  !Ô V=?d À.jß” @  !Õ W=?d ž.+ ÿ @  !Ö X=?d @ž.©˜èS @  !× Y=?d €ž.51Xp @  !Ø Z=?d Àž.· O® @  !Ù [=?d Ÿ.#jm¹ @  !Ú \=?d @Ÿ.¡ûzg @  !Û ]=?d €Ÿ.6©nÓ @  !Ü ^=uР.?d ÀŸ.´8y  @  !Ý _=?d  .ØmV @  !Þ`=?d X .Zzˆ @  !ßa=?d ˜ .zÓû @  !àb=?d Ø .øÄ% @  !ác=?d ¡.lEæ2 @  !âd=?d€ X¡./“ì @  "e=?d ˜¡.Y€Zq @  "f=?d Ø¡.ÛM¯ @  "g=?d ¢._Ž[[ @  "h=?d X¢.ÝL… @  "i=?d ˜¢.£Ü @  "j=?d Ø¢. •´ @  "k=?d £.WíÉo @  "l=?d X£.Õ|Þ± @  " m=?d ˜£.‡g1è @  " n=?d Ø£.ö&6 @  " o=?d ¤.`3à @  " p=?d X¤.â¢> @  " q=?d ˜¤.°¹ùg @  "r=?d ؤ.2(î¹ @  "s=?d ¥.Åñ­4 @  "t=?d X¥.G`ºê @  "u=?d ˜¥.{U³ @  "v=?d Ø¥.—êBm @  "w=?d ¦.uT™ @  "x=?d X¦.‘äCG @  "y=?d ˜¦.Ãÿ¬ @  "z=?d ئ.An»À @  "{=?d §.Æ­ @  "|=?d X§.™‡Ñs @  "}=?d ˜§.Ëœ>* @  "~=?d ا.I )ô @  "=?d ¨.qX o @  "€=?d X¨.óɱ @  "=?d ˜¨.¡Òñè @  "‚=?d ب.#Cæ6 @  "ƒ=?d ©.Åœ‚  @  " „=?d X©.G •Õ @  "!…=?d ˜©.zŒ @  ""†=?d Ø©.—‡mR @  "#‡=?d ª.{¦ @  "$ˆ=?d Xª.‘‰lx @  "%‰=?d ˜ª.Ã’ƒ! @  "&Š=?d ت.A”ÿ @  "'‹=?d «.{é’ @  "(Œ=?d X«.™êþL @  ")=?d ˜«.Ëñ @  "*Ž=?d Ø«.I`Ë @  "+=?d ¬.,¥! @  ",=?d X¬.®46à @  "-‘=?d ˜¬.ü/Ùš @  ".’=?d ج.~¾ÎD @  "/“=?d ­.‰gÉ @  "0”=?d X­. öš @  "1•=?d ˜­.YíuN @  "2–=?d Ø­.Û|b @  "3—=?d ®._ãtd @  "4˜=?d X®.Ýrcº @  "5™=?d ˜®.iŒã @  "6š=?d Ø®. ø›= @  "7›=?d ¯.W€æP @  "8œ=?d X¯.ÕñŽ @  "9=?d ˜¯.‡ × @  ":ž=?d د.›  @  ";Ÿ=?d °.ZyX¾ @  "< =?d X°.ØèO` @  "=¡=?d ˜°.Šó 9 @  ">¢=?d ذ.b·ç @  "?£=?d ±.@ºÕH @  "@¤=?d X±.Â+– @  "A¥=?d ˜±.0-Ï @  "B¦=?d ر.¡: @  "C§=?d ².–>,å @  "D¨=?d X².¯;; @  "E©=?d ˜².F´Ôb @  "Fª=?d ز.Ä%ü @  "G«=?d ³.ž]¾Ñ @  "H¬=?d X³.Ì© @  "I­=?d ˜³.N×FV @  "J®=?d س.ÌFQˆ @  "K¯=?d ´.©ƒv^ @  "L°=?d X´.+a€ @  "M±=?d ˜´.y ŽÙ @  "N²=?d Ø´.û˜™ @  "O³=?d µ. AÚŠ @  "P´=?d Xµ.ŽÐÍT @  "Qµ=?d ˜µ.ÜË"  @  "R¶=?d ص.^Z5Ó @  "S·=?d ¶.ÚÅ#' @  "T¸=?d X¶.XT4ù @  "U¹=?d ˜¶. OÛ  @  "Vº=?d ض.ˆÞÌ~ @  "W»=?d ·.Ò¦± @  "X¼=?d X·.P7¦Í @  "Y½=?d ˜·.,I” @  "Z¾=?d Ø·.€½^J @  "[¿=?d ¸.¥.*C @  "\À=?d X¸.'¿= @  "]Á=?d ˜¸.u¤ÒÄ @  "^Â=?d ظ.÷5Å @  "_Ã=?d ¹.ê¡' @  "`Ä=?d X¹.“{¶ù @  "aÅ=?d ˜¹.Á`Y  @  "bÆ=?d ع.CñN~ @  "cÇ=?d º.ÇnXŠ @  "dÈ=?d Xº.EÿOT @  "eÉ=?d ˜º.ä   @  "fÊ=?d غ.•u·Ó @  "gË=?d ».Ï Ê¾ @  "hÌ=?d X».MœÝ` @  "iÍ=?d ˜».‡29 @  "jÎ=?d Ø».%ç @  "kÏ=?d ¼.øÓ1 @  "lÐ=?d X¼.zBï @  "mÑ=?d ˜¼.(Yú¶ @  "nÒ=?d ؼ.ªÈíh @  "oÓ=?d ½.]®å @  "pÔ=?d X½.߀¹; @  "qÕ=?d ˜½.›Vb @  "rÖ=?d ؽ. A¼ @  "s×=?d ¾.‹•WH @  "tØ=?d X¾. @– @  "uÙ=?d ˜¾.[¯Ï @  "vÚ=?d ؾ.ÙŽ¸ @  "wÛ=?d ¿.ƒöÅ| @  "xÜ=?d X¿.gÒ¢ @  "yÝ=?d ˜¿.S|=û @uÐÀ.  "zÞ=?d Ø¿.Ñí*% @  "{ß=?d 0À.T!–r @  "|à=?d pÀ.Ö°¬ @  "}á=?d °À.„«nõ @  "~â=?d ðÀ.:y+ @  "ã=?d 0Á.­´+µ @  "€ä=?d pÁ./%Ó2 @  "‚æ=?d ðÁ.ÿ¯Äì @  "ƒç=?d 0Â.{0Ò @  "„è=?d pÂ.ù¡ÅÆ @  "…é=?d °Â.«º*Ÿ @  "†ê=?d ðÂ.)+=A @  "‡ë=?d 0Ã.sS@, @  "ˆì=?d pÃ.ñÂWò @  "‰í=?d °Ã.£Ù¸« @  "Šî=?d ðÃ.!H¯u @  "‹ï=?d 0Ä.Dˆ£ @  "Œð=?d pÄ.ÆŸ} @  "ñ=?d °Ä.”p$ @  "Žò=?d ðÄ.–gú @  "ó=?d 0Å.áO$w @  "ô=?d pÅ.cÞ3© @  "‘õ=?d °Å.1ÅÜð @  "’ö=?d ðÅ.³TË. @  "“÷=?d 0Æ.7ËÝÚ @  "”ø=?d pÆ.µZÊ @  "•ù=?d °Æ.çA%] @  "–ú=?d ðÆ.eÐ2ƒ @  "—û=?d 0Ç.?¨Oî @  "˜ü=?d pÇ.½9X0 @  "™ý=?d °Ç.ï"·i @  "šþ=?d ðÇ.m³ · @  "›ÿ=?d 0È.˜£à @  "œ>?d pÈ.2÷Û @  ">?d °È.H)‚ @  "ž>?d ðÈ.ʸ\ @  "Ÿ>?d 0É.,gka @  " >?d pÉ.®ö|¿ @  "¡>?d °É.üí“æ @  "¢>?d ðÉ.~|„8 @  "£>?d 0Ê.úã’Ì @  "¤>?d pÊ.xr… @  "¥ >?d °Ê.*ijK @  "¦ >?d ðÊ.¨ø}• @  "§ >?d 0Ë.ò€ø @  "¨ >?d pË.p& @  "© >?d °Ë." ø @  "ª>?d ðË. ›ï¡ @  "«>?d 0Ì.Å^Èw @  "¬>?d pÌ.GÏß© @  "­>?d °Ì.Ô0ð @  "®>?d ðÌ.—E'. @  "¯>?d 0Í.`œd£ @  "°>?d pÍ.â s} @  "±>?d °Í.°œ$ @  "²>?d ðÍ.2‡‹ú @  "³>?d 0Î.¶ @  "´>?d pÎ.4‰ŠÐ @  "µ>?d °Î.f’e‰ @  "¶>?d ðÎ.ärW @  "·>?d 0Ï.¾{: @  "¸>?d pÏ.<êä @  "¹>?d °Ï.nñ÷½ @  "º>?d ðÏ.ì`àc @  "»>?d 0Ð.³‚±Ô @  "¼ >?d pÐ.1¦  @  "½!>?d °Ð.cIS @  "¾">?d ðÐ.á™^ @  "¿#>?d 0Ñ.©A<" @  "À$>?d pÑ.+Ð+ü @  "Á%>?d °Ñ.yËÄ¥ @  "Â&>?d ðÑ.ûZÓ{ @  "Ã'>?d 0Ò.ÅÅ @  "Ä(>?d pÒ.ýTÒQ @  "Å)>?d °Ò.¯O= @  "Æ*>?d ðÒ.-Þ*Ö @  "Ç+>?d 0Ó.w¦W» @  "È,>?d pÓ.õ7@e @  "É->?d °Ó.§,¯< @  "Ê.>?d ðÓ.%½¸â @  "Ë/>?d 0Ô.@xŸ4 @  "Ì0>?d pÔ.Âéˆê @  "Í1>?d °Ô.òg³ @  "Î2>?d ðÔ.cpm @  "Ï3>?d 0Õ.åº3à @  "Ð4>?d pÕ.g+$> @  "Ñ5>?d °Õ.50Ëg @  "Ò6>?d ðÕ.·¡Ü¹ @  "Ó7>?d 0Ö.3>ÊM @  "Ô8>?d pÖ.±¯Ý“ @  "Õ9>?d °Ö.ã´2Ê @  "Ö:>?d ðÖ.a%% @  "×;>?d 0×.;]Xy @  "Ø<>?d p×.¹ÌO§ @  "Ù=>?d °×.ë× þ @  "Ú>>?d ð×.iF·  @  "Û?>?d 0Ø.LÕÃ) @  "Ü@>?d pØ.ÎDÔ÷ @  "ÝA>?d °Ø.œ_;® @  "ÞB>?d ðØ.Î,p @  "ßC>?d 0Ù.øHM @  "àD>?d pÙ.z€_“ @  "áE>?d °Ù.(›°Ê @  "âF>?d€ ðÙ.ÞÉ»² @  #G>?d 0Ú.»åo @  #H>?d pÚ.9†ò± @  #I>?d °Ú.®Ôæ @  #J>?d ðÚ.,EñÛ @  #K>?d 0Û.¸ÓÌ @  #L>?d pÛ.:Ä @  #M>?d °Û.¦·t1 @  #N>?d ðÛ.$&cï @  # O>?d 0Ü.„ª¿Ô @  # P>?d pÜ.;¨  @  # Q>?d °Ü.‘i¼¾ @  # R>?d ðÜ.ø«` @  # S>?d 0Ý.‡2‰w @  #T>?d pÝ.£ž© @  #U>?d °Ý.4«j @  #V>?d ðÝ.¶:´ @  #W>?d 0Þ.÷ìê­ @  #X>?d pÞ.u}ýs @  #Y>?d °Þ.â/éÇ @  #Z>?d ðÞ.`¾þ @  #[>?d 0ß.ôtÜ @  #\>?d pß.våËÐ @  #]>?d uÐà./°ß.êL{ó @  #^>?d ðß.hÝl- @  #_>?d Hà.U $3 @  #`>?d ˆà.uù&Í @  #a>?d Èà.@Ï'Y @  #b>?d á.‡«± @  #c>?d Há.V” @  #d>?d ˆá.van @  #e>?d Èá.ô ¬= @  # f>?d â.iO ü @  #!g>?d Hâ.7LVú @  #"h>?d ˆâ.¹T @  ##i>?d Èâ."U @  #$j>?d ã.òÇÙx @  #%k>?d Hã.4Ô`Y @  #&l>?d ˆã.!b§ @  #'m>?d Èã.*ìǤ @  #(n>?d ä.3¢4« @  #)o>?d Hä.ñ A @  #*p>?d ˆä.(¿ @  #+q>?d Èä.2+ @  #,r>?d å.ÍzƒÃ @  #-s>?d Hå. i:â @  #.t>?d ˆå.+œ8 @  #/u>?d Èå.¸ð£ÿ @  #0v>?d æ.%´> @  #1w>?d Hæ.{·Y8 @  #2x>?d ˆæ.[B[Æ @  #3y>?d Èæ.ntZR @  #4z>?d ç.¾<Öº @  #5{>?d Hç.x/o› @  #6|>?d ˆç.XÚme @  #7}>?d Èç.fÈf @  #8~>?d è.RèD{ @  #9>?d Hè.šÎ @  #:€>?d ˆè.9o0 @  #;>?d Èè. Y¤ @  #<‚>?d é.Ü‹L @  #=ƒ>?d Hé.2m @  #>„>?d ˆé.:÷0“ @  #?…>?d Èé.šŠR @  #@†>?d ê.‹Þ*“ @  #A‡>?d Hê.ÕÝp• @  #Bˆ>?d ˆê.õ(rk @  #C‰>?d Èê.Àsÿ @  #DŠ>?d ë.Vÿ @  #E‹>?d Hë.ÖEF6 @  #FŒ>?d ˆë.ö°DÈ @  #G>?d Èë.È}áË @  #HŽ>?d ì.Ñ3Ä @  #I>?d Hì.ê`*. @  #J>?d ˆì.Ê•(Ð @  #K‘>?d Èì.ÿ£)D @  #L’>?d í./륬 @  #M“>?d Hí.éø @  #N”>?d ˆí.É s @  #O•>?d Èí.Za… @  #P–>?d î.Ç%%Q @  #Q—>?d Hî.™&W @  #R˜>?d ˆî.¹Ó}© @  #S™>?d Èî.Œå|= @  #Tš>?d ï.\­ðÕ @  #U›>?d Hï.š¾Iô @  #Vœ>?d ˆï.ºKK  @  #W>?d Èï.„†î  @  #Xž>?d ð.:XR» @  #YŸ>?d Hð.œ¼S @  #Z >?d ˆð.¼IQs @  #[¡>?d Èð.‰Pç @  #\¢>?d ñ.Y7Ü @  #]£>?d Hñ.Ÿ$e. @  #^¤>?d ˆñ.¿ÑgÐ @  #_¥>?d Èñ.=»Ûƒ @  #`¦>?d ò. ÿ{B @  #a§>?d Hò.þü!D @  #b¨>?d ˆò.Þ #º @  #c©>?d Èò.ë?". @  #dª>?d ó.;w®Æ @  #e«>?d Hó.ýdç @  #f¬>?d ˆó.Ý‘ @  #g­>?d Èó.ã\° @  #h®>?d ô.úC @  #i¯>?d Hô.ÁA{ÿ @  #j°>?d ˆô.á´y @  #k±>?d Èô.Ô‚x• @  #l²>?d õ.Êô} @  #m³>?d Hõ.ÂÙM\ @  #n´>?d ˆõ.â,O¢ @  #oµ>?d Èõ.q@ÔA @  #p¶>?d ö.ìt€ @  #q·>?d Hö.².† @  #r¸>?d ˆö.’ò,x @  #s¹>?d Èö.§Ä-ì @  #tº>?d ÷.wŒ¡ @  #u»>?d H÷.±Ÿ% @  #v¼>?d ˆ÷.‘jÛ @  #w½>?d È÷.¯§¿Ø @  #x¾>?d ø.›X3Å @  #y¿>?d Hø.Íì'â @  #zÀ>?d ˆø.í% @  #{Á>?d Èø.Ø/$ˆ @  #|Â>?d ù.g¨` @  #}Ã>?d Hù.ÎtA @  #~Ä>?d ˆù.î¿ @  #Å>?d Èù.!º™O @  #€Æ>?d ú.¼þ9Ž @  #Ç>?d Hú.âýcˆ @  #‚È>?d ˆú.Âav @  #ƒÉ>?d Èú.÷>`â @  #„Ê>?d û.'vì  @  #…Ë>?d Hû.áeU+ @  #†Ì>?d ˆû.ÁWÕ @  #‡Í>?d Èû.ÿ]òÖ @  #ˆÎ>?d ü.æÙ @  #‰Ï>?d Hü.Ý@93 @  #ŠÐ>?d ˆü.ýµ;Í @  #‹Ñ>?d Èü.ȃ:Y @  #ŒÒ>?d ý.˶± @  #Ó>?d Hý.ÞØ @  #ŽÔ>?d ˆý.þ- n @  #Õ>?d Èý.mA– @  #Ö>?d þ.ð6L @  #‘×>?d Hþ.®lJ @  #’Ø>?d ˆþ.Žón´ @  #“Ù>?d Èþ.»Åo  @  #”Ú>?d ÿ.kãÈ @  #•Û>?d Hÿ.­žZé @  #–Ü>?d ˆÿ.kX @  #—uÐ/Ý>?d Èÿ.³¦ý @  #˜Þ>?d /üÕå @  #™ß>?d `/ZöÔÓ @  #šà>?d  /zÖ- @  #›á>?d à/O5×¹ @  #œâ>?d /Ÿ}[Q @  #ã>?d `/Ynâp @  #žä>?d  /y›àŽ @  #Ÿå>?d à/ûñ\Ý @  # æ>?d /fµü @  #¡ç>?d `/8¶¦ @  #¢è>?d  /C¤ä @  #£é>?d à/-u¥p @  #¤ê>?d /ý=)˜ @  #¥ë>?d `/;.¹ @  #¦ì>?d  /Û’G @  #§í>?d à/%7D @  #¨î>?d /?d `/ ü¡ @  #ªð>?d  /'þþ_ @  #«ñ>?d à/ÈÿË @  #¬ò>?d /€s# @  #­ó>?d `/“Ê @  #®ô>?d  /$fÈü @  #¯õ>?d à/· S @  #°ö>?d /*NóÞ @  #±÷>?d `/tM©Ø @  #²ø>?d  /T¸«& @  #³ù>?d à/aŽª² @  #´ú>?d /±Æ&Z @  #µû>?d `/wÕŸ{ @  #¶ü>?d  /W … @  #·ý>?d à/ií8† @  #¸þ>?d /]´› @  #¹ÿ>?d `/i¡" @  #º??d  /Iò£Ü @  #»??d à/|Ä¢H @  #¼??d /¬Œ.  @  #½??d ` /jŸ— @  #¾??d   /Jj• @  #¿??d à /f/¾ @  #À??d /ûC @  #Á??d ` /¥@Õy @  #Â??d   /…µ×‡ @  #à ??d à /°ƒÖ @  #Ä ??d /`ËZû @  #Å ??d ` /¦ØãÚ @  #Æ ??d   /†-á$ @  #Ç ??d à /¸àD' @  #È??d /¡®·( @  #É??d ` /šý @  #Ê??d   /º< @  #Ë??d à />Œ¨ @  #Ì??d /_v@ @  #Í??d ` /™e¹a @  #Î??d   /¹»Ÿ @  #Ï??d à /*ü | @  #Ð??d /·¸€½ @  #Ñ??d `/é»Ú» @  #Ò??d  /ÉNØE @  #Ó??d à/üxÙÑ @  #Ô??d /,0U9 @  #Õ??d `/ê#ì @  #Ö??d  /ÊÖîæ @  #×??d à/ôKå @  #Ø??d /JÅ÷W @  #Ù??d `/ì!öa @  #Ú ??d  /ÌÔôŸ @  #Û!??d à/ùâõ  @  #Ü"??d /)ªyã @  #Ý#??d `/ï¹À @  #Þ$??d  /ÏLÂ< @  #ß%??d à/M&~o @  #à&??d /ÐbÞ® @  #á'??d `/Ža„¨ @  #â(??d€  /(Â.ï @  $)??d à/üµgR @  $*??d /,ýëº @  $+??d `//§©v @  $,??d  /R«ˆ @  $-??d à/ÿ-Qñ @  $.??d /æc¢þ @  $/??d `/‚Ån @  $0??d  /3wÇ @  $ 1??d à/Ã=é @  $ 2??d /@± @  $ 3??d `/óÍ @  $ 4??d  /0ïñ3 @  $ 5??d à/À J @  $6??d /]Ô«‹ @  $7??d `/`Ä @  $8??d  /@1’é @  $9??d à/°Nh @  $:??d /`äx @  $;??d `/c\¦´ @  $??d /‡)Ò. @  $???d `//™s @  $@??d  /?Ú› @  $A??d à/Ï¥aô @  $B??d /íí @  $C??d `/·¯Ð @  $D??d  /f??d 8"/µÄ“ @  $?g??d x"/7œÞ- @  $@h??d ¸"/iÜÓ @  $Ai??d ø"/ç&ª @  $Bj??d 8#/7^ªB @  $Ck??d x#/4èŽ @  $Dl??d ¸#/ñêp @  $Em??d ø#/äŽ  @  $Fn??d 8$/ýÀã @  $Go??d x$/!„– @  $Hp??d ¸$/(Ô†h @  $Iq??d ø$/Ø«| @  $Jr??d 8%/ãðù @  $Ks??d x%/ ¹²5 @  $Lt??d ¸%/+L°Ë @  $Mu??d ø%/Û3J² @  $Nv??d 8&/Fwês @  $Ow??d x&/{gÑï @  $Px??d ¸&/[’Ó @  $Qy??d ø&/«í)h @  $Rz??d 8'/{¥¥€ @  $S{??d x'/xÿçL @  $T|??d ¸'/X å² @  $U}??d ø'/¨uË @  $V~??d 8(/œŠ“Ö @  $W??d x(/JŒ @  $X€??d ¸(/9¿Žç @  $Y??d ø(/ÉÀtž @  $Z‚??d 8)/ˆøv @  $[ƒ??d x)/Òºº @  $\„??d ¸)/:'¸D @  $]…??d ø)/ÊXB= @  $^†??d 8*/Wâü @  $_‡??d x*/{ þÐ @  $`ˆ??d ¸*/[ÿü. @  $a‰??d ø*/«€W @  $bŠ??d 8+/{ÈŠ¿ @  $c‹??d x+/x’Ès @  $dŒ??d ¸+/XgÊ @  $e??d ø+/¨0ô @  $fŽ??d 8,/±VÃû @  $g??d x,/D·¤k @  $h??d ¸,/dB¦• @  $i‘??d ø,/”=\ì @  $j’??d 8-/DuÐ @  $k“??d x-/G/’È @  $l”??d ¸-/gÚ6 @  $m•??d ø-/—¥jO @  $n–??d 8./ áÊŽ @  $o—??d x./7ññ @  $p˜??d ¸./óì @  $q™??d ø./ç{ • @  $rš??d 8//73…} @  $s›??d x//4iDZ @  $tœ??d ¸//œÅO @  $u??d ø//äã?6 @  $vž??d 80/Z=ƒ„ @  $wŸ??d x0/2kÝÈ @  $x ??d ¸0/žß6 @  $y¡??d ø0/âá%O @  $z¢??d 81/2©©§ @  ${£??d x1/1óëk @  $|¤??d ¸1/é• @  $}¥??d ø1/áyì @  $~¦??d 82/|=³- @  $§??d x2/z™¢ @  $€¨??d ¸2/=›\ @  $©??d ø2/Íða% @  $‚ª??d 83/¸íÍ @  $ƒ«??d x3/⯠@  $„¬??d ¸3/>­ÿ @  $…­??d ø3/ÎhW† @  $†®??d 84/×&¤‰ @  $‡¯??d x4/"Çà @  $ˆ°??d ¸4/2Áç @  $‰±??d ø4/òM;ž @  $в??d 85/"·v @  $‹³??d x5/!_õº @  $Œ´??d ¸5/ª÷D @  $µ??d ø5/ñÕ = @  $޶??d 86/l‘­ü @  $·??d x6/Q–` @  $¸??d ¸6/qt”ž @  $‘¹??d ø6/ nç @  $’º??d 87/QCâ @  $“»??d x7/R Ã @  $”¼??d ¸7/rì¢= @  $•½??d ø7/‚“XD @  $–¾??d 88/¶lÔY @  $—¿??d x8/.jŸ @  $˜À??d ¸8/Ÿú @  $™Á??d ø8/þàgƒ @  $šÂ??d 89/.¨ëk @  $›Ã??d x9/-ò©§ @  $œÄ??d ¸9/ «Y @  $Å??d ø9/ýxQ  @  $žÆ??d 8:/`<ñá @  $ŸÇ??d x:/L*íÍ @  $ È??d ¸:/lßï3 @  $¡É??d ø:/œ J @  $¢Ê??d 8;/L虢 @  $£Ë??d x;/O²Ûn @  $¤Ì??d ¸;/oGÙ @  $¥Í??d ø;/Ÿ8#é @  $¦Î??d 8/=ÁÙ“ @  $¯×??d x>/Ñâ @  $°Ø??d ¸>/ $àñ @  $±Ù??d ø>/Ð[ˆ @  $²Ú??d 8?/–` @  $³Û??d x?/IÔ¬ @  $´Ü??duÐ@/7 ¸?/#¼ÖR @  $µÝ??d ø?/ÓÃ,+ @  $¶Þ??d P@/o– @  $·ß??d @/Ú]Ý{ @  $¸à??d Ð@/XÌÊ¥ @  $¹á??d A/új«ê @  $ºâ??d PA/xû¼4 @  $»ã??d A/ÙÅëØ @  $¼ä??d ÐA/[Tü @  $½å??d B/´þ±` @  $¾æ??d PB/6o¦¾ @  $¿ç??d B/©  @  $Àè??d ÐB/”‹¾þ @  $Áé??d C/6-ß± @  $Âê??d PC/´¼Èo @  $Ãë??d C/‚Ÿƒ @  $Äì??d ÐC/—ˆ] @  $Åí??d D/ü³–õ @  $Æî??d PD/~"+ @  $Çï??d D/)§ó› @  $Èð??d ÐD/«6äE @  $Éñ??d E/ …  @  $Êò??d PE/‹’Ô @  $Ëó??d E/*?Å8 @  $Ìô??d ÐE/¨®Òæ @  $Íõ??d F/GŸ€ @  $Îö??d PF/Å•ˆ^ @  $Ï÷??d F/Zá¦â @  $Ðø??d ÐF/Øp±< @  $Ñù??d G/zÖÐs @  $Òú??d PG/øGÇ­ @  $Óû??d G/YyA @  $Ôü??d ÐG/Û臟 @  $Õý??d H/ùæ% @  $Öþ??d PH/hñû @  $×ÿ??d H/ÓáÎ @  $Ø@?d ÐH/Bö @  $Ù@?d I/½ä—_ @  $Ú@?d PI/?u€ @  $Û@?d I/žK×m @  $Ü@?d ÐI/ÚÀ³ @  $Ý@?d J/ópÕ @  $Þ@?d PJ/qáš  @  $ß@?d J/ÿ““ @  $à@?d ÐJ/}„Ù @  $á @?d K/ߤå– @  $â @?d€ PK/)öîî @  % @?d K/i‰ñ+ @  % @?d ÐK/ëæõ @  % @?d L/Eñ° @  %@?d PL/Ç`n @  %@?d L/^W9¤ @  %@?d ÐL/ÜÆ.z @  %@?d M/°ÒO @  %@?d PM/2C‘ @  % @?d M/V4« @  % @?d ÐM/Ô¥¼N @  % @?d N/þF Å @  % @?d PN/|× @  % @?d N/€°R= @  %@?d ÐN/!Eã @  %@?d O/ÔE6 @  %@?d PO/ARè @  %@?d O/%rþé @  %@?d ÐO/§ãé7 @  %@?d P/®šCÏ @  %@?d PP/, T @  %@?d P/(‹@ @  % @?d ÐP/ªWÙ @  %!@?d Q/Æiì @  %"@?d PQ/DŸ~2 @  %#@?d Q/ èÒ3 @  %$@?d ÐQ/¢yÅí @  %%@?d R/ˆšsf @  %&@?d PR/ d¸ @  %'@?d R/öl+ž @  %(@?d ÐR/tý<@ @  %)@?d S/¤N% @  % *@?d PS/&ß û @  %!+@?d S/B¨ ú @  %",@?d ÐS/À9·$ @  %#-@?d T/nÐRa @  %$.@?d PT/ìAE¿ @  %%/@?d T/uvhu @  %&0@?d ÐT/÷ç« @  %'1@?d U/›óAž @  %(2@?d PU/bV@ @  %)3@?d U/}úA @  %*4@?d ÐU/ÿ„íŸ @  %+5@?d V/Õg[ @  %,6@?d PV/WöLÊ @  %-7@?d V/«‘ì @  %.8@?d ÐV/)2 @  %/9@?d W/èµç @  %0:@?d PW/j$9 @  %1;@?d W/S¯8 @  %2<@?d ÐW/ŒÂ¸æ @  %3=@?d X/š"± @  %4>@?d PX/ 5o @  %5?@?d X/yÛ4h @  %6@@?d ÐX/ûJ#¶ @  %7A@?d Y/—^ƒ @  %8B@?d PY/Ï ] @  %9C@?d Y/q¸¦\ @  %:D@?d ÐY/ó)±‚ @  %;E@?d Z/ÙÊ  @  %<F@?d PZ/[[× @  %=G@?d Z/§<_ñ @  %>H@?d ÐZ/%­H/ @  %?I@?d [/[iØ @  %@J@?d P[/Ùˆ~ @  %AK@?d [/½ÿÒ @  %BL@?d Ð[/?nÅÙ @  %CM@?d \/‘‡ œ @  %DN@?d P\/7B @  %EO@?d \/Š!ˆ @  %FP@?d Ð\/° V @  %GQ@?d ]/d¤3c @  %HR@?d P]/æ5$½ @  %IS@?d ]/‚Bˆ¼ @  %JT@?d Ð]/ÓŸb @  %KU@?d ^/*0)é @  %LV@?d P^/¨¡>7 @  %MW@?d ^/TÆq @  %NX@?d Ð^/ÖWfÏ @  %OY@?d _/âf @  %PZ@?d P_/•sqÄ @  %Q[@?d _/ñÝÅ @  %uÐ`/R\@?d Ð_/¹g @  %S€]@?d (`/Jµ @  %T€^@?d h`/…Û k @  %U€_@?d ¨`/[} @  %V€`@?d è`/Ê£ @  %W€a@?d (a/oÞ0– @  %X€b@?d ha/íO'H @  %Y€c@?d ¨a/‰8‹I @  %Z€d@?d èa/ ©œ— @  %[€e@?d (b/!J* @  %\€f@?d hb/£Û= @  %]€g@?d ¨b/_¼rä @  %^€h@?d èb/Ý-e: @  %_€i@?d (c/ žB_ @  %`€j@?d hc/U @  %a€k@?d ¨c/ëxù€ @  %b€l@?d èc/iéî^ @  %c€m@?d (d/Ç  @  %d€n@?d hd/E‘Å @  %e€o@?d ¨d/ܦ1 @  %f€p@?d èd/^7&Ñ @  %g€q@?d (e/2#ä @  %h€r@?d he/°²: @  %i€s@?d ¨e/ÔÅ£; @  %j€t@?d èe/VT´å @  %k€u@?d (f/|·n @  %l€v@?d hf/þ&° @  %m€w@?d ¨f/AZ– @  %n€x@?d èf/€ÐMH @  %o€y@?d (g/AeM @  %p€z@?d hg/ÃôZC @  %q€{@?d ¨g/§ƒöB @  %r€|@?d èg/%ᜠ@  %s€}@?d (h/¦J{Ë @  %t€~@?d hh/$Ûl @  %u€@?d ¨h/ÍÍ9€ @  %v€€@?d èh/O\.^ @  %w€@?d (i/#Hk @  %x€‚@?d hi/¡Ùµ @  %y€ƒ@?d ¨i/Å®«´ @  %z€„@?d èi/G?¼j @  %{€…@?d (j/mÜ á @  %|€†@?d hj/ïM? @  %}€‡@?d ¨j/*R @  %~€ˆ@?d èj/‘»EÇ @  %€‰@?d (k/ YT @  %€€Š@?d hk/ŽÈCß @  %€‹@?d ¨k/ê¿ïÞ @  %‚€Œ@?d èk/h.ø @  %ƒ€@?d (l/ÆÇE @  %„€Ž@?d hl/DV › @  %…€@?d ¨l/Ýa'Q @  %†€@?d èl/_ð0 @  %‡€‘@?d (m/3äº @  %ˆ€’@?d hm/±ud @  %‰€“@?d ¨m/Õµe @  %Š€”@?d èm/W“¢» @  %‹€•@?d (n/}p0 @  %Œ€–@?d hn/ÿáî @  %€—@?d ¨n/†LÈ @  %Ž€˜@?d èn/[ @  %€™@?d (o/@¢[à @  %€š@?d ho/Â3L @  %‘€›@?d ¨o/¦Dà @  %’€œ@?d èo/$Õ÷ @  %“€@?d (p/-¬]: @  %”€ž@?d hp/¯=Jä @  %•€Ÿ@?d ¨p/«½^ò @  %–€ @?d èp/),I, @  %—€¡@?d (q/E8w @  %˜€¢@?d hq/Ç©`Ç @  %™€£@?d ¨q/£ÞÌÆ @  %š€¤@?d èq/!OÛ @  %›€¥@?d (r/ ¬m“ @  %œ€¦@?d hr/‰=zM @  %€§@?d ¨r/uZ5k @  %ž€¨@?d èr/÷Ë"µ @  %Ÿ€©@?d (s/'xÐ @  % €ª@?d hs/¥é @  %¡€«@?d ¨s/Áž¾ @  %¢€¬@?d ès/C©Ñ @  %£€­@?d (t/íæL” @  %¤€®@?d ht/ow[J @  %¥€¯@?d ¨t/ö@v€ @  %¦€°@?d èt/tÑa^ @  %§€±@?d (u/Å_k @  %¨€²@?d hu/šTHµ @  %©€³@?d ¨u/þ#ä´ @  %ª€´@?d èu/|²ój @  %«€µ@?d (v/VQEá @  %¬€¶@?d hv/ÔÀR? @  %­€·@?d ¨v/(§ @  %®€¸@?d èv/ª6 Ç @  %¯€¹@?d (w/kƒ  @  %°€º@?d hw/éÌ @  %±€»@?d ¨w/e±Í @  %²€¼@?d èw/ô¦ @  %³€½@?d (x/Œ¬ÉÌò @  %€Ì@?d è{/¼XÛ, @  %ÀÍ@?d (|/±>i @  %Ä€Î@?d h|/ )· @  %Å€Ï@?d ¨|/ } @  %Æ€Ð@?d è|/‹†£ @  %Ç€Ñ@?d (}/ç’-– @  %È€Ò@?d h}/e:H @  %É€Ó@?d ¨}/t–I @  %Ê€Ô@?d è}/ƒå— @  %Ë€Õ@?d (~/©7 @  %Ì€Ö@?d h~/+—  @  %Í€×@?d ¨~/×ðoä @  %΀Ø@?d è~/Uax: @  %Ï€Ù@?d (/”Ôxï @  %ЀÚ@?d h/Eo1 @  %Ñ€Û@?d ¨/uЀ/'r2Ã0 @  %Ò€Ü@?d è/#§’ @  %ÓÝ@?d @€/T:S¬ @  %ÔÞ@?d €€/tÏQR @  %Õß@?d À€/Ò+Pd @  %Öà@?d /cÜŒ @  %×á@?d @/<®y @  %Øâ@?d €/[{q @  %Ùã@?d À/ÚHÂP @  %Úä@?d ‚/G b‘ @  %Ûå@?d @‚/r:c @  %Üæ@?d €‚/RÏaû @  %Ýç@?d À‚/ Ì;ý @  %Þè@?d ƒ/Ü„· @  %ßé@?d @ƒ/^î F @  %àê@?d €ƒ/~ ¸ @  %áë@?d Àƒ/¸°™ @  %âì@?d€ „/`´– @  &í@?d @„/´vý+ @  &î@?d €„/”ƒÿÕ @  &ï@?d À„/j™<Ò @  &ð@?d …/ºÑ°: @  &ñ@?d @…/J®JC @  &ò@?d €…/j[H½ @  &ó@?d À…/bú®æ @  &ô@?d †/ÿ¾' @  & õ@?d @†/Áô^ @  & ö@?d €†//4ö  @  & ÷@?d À†/´~WK @  & ø@?d ‡/d6Û£ @  & ù@?d @‡/”I!Ú @  &ú@?d €‡/´¼#$ @  &û@?d À‡/¼ûŸ @  &ü@?d ˆ/%Cw‚ @  &ý@?d @ˆ/Õ<û @  &þ@?d €ˆ/õÉ @  &ÿ@?d Àˆ/•aQ @  &A?d ‰/ÔÝí¹ @  &A?d @‰/$¢À @  &A?d €‰/W> @  &A?d À‰/ öóe @  &A?d Š/‘²S¤ @  &A?d @Š/aÍ©Ý @  &A?d €Š/A8«# @  &A?d ÀŠ/Úr È @  &A?d ‹/ :†  @  & A?d @‹/úE|Y @  & A?d €‹/Ú°~§ @  & A?d À‹/n¶¬ @  &  A?d Œ/wør£ @  &! A?d @Œ/‡‡ˆÚ @  &"A?d €Œ/§rŠ$ @  &#A?d ÀŒ/YhI# @  &$A?d /‰ ÅË @  &%A?d @/y_?² @  &&A?d €/Yª=L @  &'A?d À/Q Û @  &(A?d Ž/ÌO{Ö @  &)A?d @Ž/<0¯ @  &*A?d €Ž/ŃQ @  &+A?d ÀŽ/‡"º @  &,A?d /WÇ®R @  &-A?d @/§¸T+ @  &.A?d €/‡MVÕ @  &/A?d À/"MŽn @  &0A?d /œ“2Ü @  &1A?d @/lìÈ¥ @  &2A?d €/LÊ[ @  &3A?d À//´0€ @  &4 A?d ‘/ÿü¼h @  &5!A?d @‘/ƒF @  &6"A?d €‘//vDï @  &7#A?d À‘/'×¢´ @  &8$A?d ’/º“u @  &9%A?d @’/Jìø  @  &:&A?d €’/júò @  &;'A?d À’/ñS[ @  &<(A?d “/!×ñ @  &=)A?d @“/Ñd-ˆ @  &>*A?d €“/ñ‘/v @  &?+A?d À“/ëÖï @  &@,A?d ”/òÞ%à @  &A-A?d @”/¡ß™ @  &B.A?d €”/"TÝg @  &C/A?d À”/ÜN` @  &D0A?d •/ ’ˆ @  &E1A?d @•/üyhñ @  &F2A?d €•/ÜŒj @  &G3A?d À•/Ô-ŒT @  &H4A?d –/Ii,• @  &I5A?d @–/¹Öì @  &J6A?d €–/™ãÔ @  &K7A?d À–/©uù @  &L8A?d —/Òáù @  &M9A?d @—/"žh @  &N:A?d €—/k– @  &O;A?d À—/§kÙ- @  &PA?d €˜/C­· @  &S?A?d À˜/ÐãB} @  &T@A?d ™/«Î• @  &UAA?d @™/ðÔ4ì @  &VBA?d €™/Ð!6 @  &WCA?d À™/Ø€ÐI @  &XDA?d š/EÄpˆ @  &YEA?d @š/µ»Šñ @  &ZFA?d €š/•Nˆ @  &[GA?d Àš/)ä @  &\HA?d ›/ÞL¥  @  &]IA?d @›/.3_u @  &^JA?d €›/Æ]‹ @  &_KA?d À›/ºÀ¢€ @  &`LA?d œ/£ŽQ @  &aMA?d @œ/Sñ«ö @  &bNA?d €œ/s© @  &cOA?d Àœ/j @  &dPA?d /]Væç @  &eQA?d @/­)ž @  &fRA?d €/Ü` @  &gSA?d À/…}ø; @  &hTA?d ž/9Xú @  &iUA?d @ž/èF¢ƒ @  &jVA?d €ž/ȳ } @  &kWA?d Àž/Sù– @  &lXA?d Ÿ/ƒ±~ @  &mYA?d @Ÿ/sÎw @  &nZA?d €Ÿ/S;uù @  &o[AuР/?d ÀŸ/ö;­B @  &p\A?d  /E™”ñ @  &q]A?d X /µænˆ @  &r^A?d ˜ /•lv @  &s_A?d Ø /ö¾–­ @  &t`A?d ¡/&öE @  &uaA?d X¡/Ö‰à< @  &vbA?d ˜¡/ö|â @  &wcA?d Ø¡/þÝ™ @  &xdA?d ¢/c™¤X @  &yeA?d X¢/“æ^! @  &zfA?d ˜¢/³\ß @  &{gA?d Ø¢/(Yý4 @  &|hA?d £/øqÜ @  &}iA?d X£/n‹¥ @  &~jA?d ˜£/(›‰[ @  &kA?d Ø£/ÑÌ@ó @  &€lA?d ¤/È‚³ü @  &mA?d X¤/8ýI… @  &‚nA?d ˜¤/K{ @  &ƒoA?d ؤ/æˆ| @  &„pA?d ¥/6Z” @  &…qA?d X¥/Æ%þí @  &†rA?d ˜¥/æÐü @  &‡sA?d Ø¥/îqH @  &ˆtA?d ¦/s5º‰ @  &‰uA?d X¦/ƒJ@ð @  &ŠvA?d ˜¦/£¿B @  &‹wA?d ئ/8õãå @  &ŒxA?d §/è½o  @  &yA?d X§/•t @  &ŽzA?d ˜§/87—Š @  &{A?d ا/7O1 @  &|A?d ¨/©ÈÃ, @  &‘}A?d X¨/Y·9U @  &’~A?d ˜¨/yB;« @  &“A?d ب/÷y€ó @  &”€A?d ©/'1  @  &•A?d X©/×Nöb @  &–‚A?d ˜©/÷»ôœ @  &—ƒA?d Ø©/ÿÇ @  &˜„A?d ª/b^² @  &™…A?d Xª/’!H @  &š†A?d ˜ª/²ÔJ @  &›‡A?d ت/)žëj @  &œˆA?d «/ùÖg‚ @  &‰A?d X«/ ©û @  &žŠA?d ˜«/)\Ÿ @  &Ÿ‹A?d Ø«/Z` @  & ŒA?d ¬/„“ @  &¡A?d X¬/tkix @  &¢ŽA?d ˜¬/Tžk† @  &£A?d ج/ª„¨ @  &¤A?d ­/zÌ$i @  &¥‘A?d X­/гÞ @  &¦’A?d ˜­/ªFÜî @  &§“A?d Ø­/¢ç:µ @  &¨”A?d ®/?£št @  &©•A?d X®/ÏÜ`  @  &ª–A?d ˜®/ï)bó @  &«—A?d Ø®/tcà @  &¬˜A?d ¯/¤+Oð @  &­™A?d X¯/TTµ‰ @  &®šA?d ˜¯/t¡·w @  &¯›A?d د/Ñ¡oÌ @  &°œA?d °/oÓ~ @  &±A?d X°/Ÿ) @  &²žA?d ˜°/¿õ+ù @  &³ŸA?d ذ/ÜXÑ" @  &´ A?d ±/ ]Ê @  &µ¡A?d X±/üo§³ @  &¶¢A?d ˜±/Üš¥M @  &·£A?d ر/Ô;C @  &¸¤A?d ²/Iã× @  &¹¥A?d X²/¹® @  &º¦A?d ˜²/™õP @  &»§A?d ز/¿º» @  &¼¨A?d ³/Ò÷6S @  &½©A?d X³/"ˆÌ* @  &¾ªA?d ˜³/}ÎÔ @  &¿«A?d س/|7M @  &À¬A?d ´/2ÄB @  &Á­A?d X´/ñM>; @  &®A?d ˜´/Ѹ<Å @  &ïA?d Ø´//¢ÿ @  &İA?d µ/ÿês* @  &űA?d Xµ/•‰S @  &ƲA?d ˜µ//`‹­ @  &dzA?d ص/'Ámö @  &È´A?d ¶/º…Í7 @  &ɵA?d X¶/Jú7N @  &ʶA?d ˜¶/j5° @  &Ë·A?d ض/ñE”[ @  &̸A?d ·/! ³ @  &͹A?d X·/ÑrâÊ @  &κA?d ˜·/ñ‡à4 @  &Ï»A?d Ø·/T‡8 @  &мA?d ¸/`x´’ @  &ѽA?d X¸/Në @  &Ò¾A?d ˜¸/°òL @  &Ó¿A?d ظ/#£ß @  &ÔÀA?d ¹/óG/7 @  &ÕÁA?d X¹/8ÕN @  &ÖÂA?d ˜¹/#Í×° @  &×ÃA?d ع/+l1ë @  &ØÄA?d º/¶(‘* @  &ÙÅA?d Xº/FWkS @  &ÚÆA?d ˜º/f¢i­ @  &ÛÇA?d غ/ýèÈF @  &ÜÈA?d »/- D® @  &ÝÉA?d X»/Ýß¾× @  &ÞÊA?d ˜»/ý*¼) @  &ßËA?d Ø»/I,C" @  &àÌA?d ¼/Pb°- @  &áÍA?d X¼/ JT @  &âÎA?d€ ˜¼/ô+T  @  'ÏA?d ؼ/ëpß" @  'ÐA?d ½/;8SÊ @  'ÑA?d X½/R^ @  'ÒA?d ˜½/.ûP  @  'ÓA?d ؽ/èèé @  'ÔA?d ¾/u¬I@ @  'ÕA?d X¾/KaìC @  'ÖA?d ˜¾/k”î½ @  ' ×A?d ؾ/5—´» @  ' ØA?d ¿/åß8S @  ' ÙA?d X¿/Ðé9Ç @  ' ÚA?d ˜¿/ð;9 @uÐÀ/  ' ÛA?d Ø¿/Ía¹ @  ' ÜA?d 0À/©‘èJ @  ' ÝA?d pÀ/:ýs© @  ' ÞA?d °À/qW @  ' ßA?d ðÀ/¼ìpa @  ' àA?d 0Á/l¤ü‰ @  ' áA?d pÁ/Y’ý @  ' âA?d °Á/ygÿã @  ' ãA?d ðÁ/¿tF @  ' äA?d 0Â/"0æ @  ' åA?d pÂ/ýC @  ' æA?d °Â/<Aþ @  ' çA?d ðÂ/b ø @  ' èA?d 0Ã/²C— @  ' éA?d pÃ/‡u–„ @  ' êA?d °Ã/§€”z @  ' ëA?d ðÃ/a“-[ @  ' ìA?d 0Ä/xÝÞT @  ' íA?d pÄ/ú·b @  ' îA?d °Ä/ÚB`ù @  '! ïA?d ðÄ/áX @  '" ðA?d 0Å/1YÔû @  '# ñA?d pÅ/oÕo @  '$ òA?d °Å/$š×‘ @  '% óA?d ðÅ/â‰n° @  '& ôA?d 0Æ/ÍÎq @  '' õA?d pÆ/Akr @  '( öA?d °Æ/aõiŒ @  ') ÷A?d ðÆ/?ö3Š @  '* øA?d 0Ç/﾿b @  '+ ùA?d pÇ/Úˆ¾ö @  ', úA?d °Ç/ú}¼ @  '- ûA?d ðÇ/§ @  '6 B?d 0Ê/£ã¦× @  '7 B?d pÊ/.Ô @  '8 B?d °Ê/½Û* @  '9 B?d ðÊ/ãØ[, @  ': B?d 0Ë/3×Ä @  ';  B?d pË/¦ÖP @  '<  B?d °Ë/&SÔ® @  '=  B?d ðË/à@m @  '>  B?d 0Ì/ùž€ @  '?  B?d pÌ/Õc$A @  '@ B?d °Ì/õ–&¿ @  'A B?d ðÌ/ÎÅU @  'B B?d 0Í/’½ @  'C B?d pÍ/+»“) @  'D B?d °Í/ N‘× @  'E B?d ðÍ/Í](ö @  'F B?d 0Î/Pˆ7 @  'G B?d pÎ/nÔ-4 @  'H B?d °Î/N!/Ê @  'I B?d ðÎ/"uÌ @  'J B?d 0Ï/Àjù$ @  'K B?d pÏ/õ\ø° @  'L B?d °Ï/Õ©úN @  'M B?d ðÏ/ºCo @  'N B?d 0Ð/­dÿÝ @  'O B?d pÐ/>d> @  'P B?d °Ð/ýfÀ @  'Q B?d ðÐ/¸gö @  'R  B?d 0Ñ/hQë @  'S !B?d pÑ/]gêŠ @  'T "B?d °Ñ/}’èt @  'U #B?d ðÑ/»QU @  'V $B?d 0Ò/&Åñ” @  'W %B?d pÒ/T— @  'X &B?d °Ò/8ýVi @  'Y 'B?d ðÒ/fþ o @  'Z (B?d 0Ó/¶¶€‡ @  '[ )B?d pÓ/ƒ€ @  '\ *B?d °Ó/£uƒí @  '] +B?d ðÓ/ef:Ì @  '^ ,B?d 0Ô/|(Éà @  '_ -B?d pÔ/þBu @  '` .B?d °Ô/Þ·wn @  'a /B?d ðÔ/åäO„ @  'b 0B?d 0Õ/5¬Ãl @  'c 1B?d pÕ/šÂø @  'd 2B?d °Õ/ oÀ @  'e 3B?d ðÕ/æ|y' @  'f 4B?d 0Ö/{8Ùæ @  'g 5B?d pÖ/Eõ|å @  'h 6B?d °Ö/e~ @  'i 7B?d ðÖ/;$ @  'j 8B?d 0×/ëK¨õ @  'k 9B?d p×/Þ}©a @  'l :B?d °×/þˆ«Ÿ @  'm ;B?d ð×/8›¾ @  'n B?d °Ø/¿ý¾ @  'q ?B?d ðØ/éI™ @  'r @B?d 0Ù/9Ÿq @  's AB?d pÙ/ 7žå @  't BB?d °Ù/,œ @  'u CB?d ðÙ/êÑ%: @  'v DB?d 0Ú/w•…û @  'w EB?d pÚ/IX ø @  'x FB?d °Ú/i­" @  'y GB?d ðÚ/7®x @  'z HB?d 0Û/çæôè @  '{ IB?d pÛ/ÒÐõ| @  '| JB?d °Û/ò%÷‚ @  '} KB?d ðÛ/46N£ @  '~ LB?d 0Ü/-x½¬ @  ' MB?d pÜ/âC7\ @  '€ NB?d °Ü/¶5¢ @  ' OB?d ðÜ/ùå H @  '‚ PB?d 0Ý/)­  @  'ƒ QB?d pÝ/›€4 @  '„ RB?d °Ý/) @  'ˆ VB?d °Þ/y<× @  '‰ WB?d ðÞ/'fÑ @  'Š XB?d 0ß/÷Jê9 @  '‹ YB?d pß/Â|ë­ @  'Œ ZB?d uÐà//°ß/â‰éS @  ' [B?d ðß/]Œ§ @  'Ž\B?d Hà/ùÒQ @  ']B?d ˆà/5ñ\’ @  '^B?d Èà/·`KL @  '‘_B?d á/C]ÑL @  '’`B?d Há/ÁÌÆ’ @  '“aB?d ˆá/VžÒ& @  '”bB?d Èá/ÔÅø @  '•cB?d â/ ÉËÆ @  '–dB?d Hâ/XÜ @  '—eB?d ˆâ/ñl; @  '˜fB?d Èâ/‘`{å @  '™gB?d ã/ººÕ @  'šhB?d Hã/+­  @  '›iB?d ˆã/ˆy¹¿ @  'œjB?d Èã/ è®a @  'kB?d ä/W$ó‘ @  'žlB?d Hä/ÕµäO @  'ŸmB?d ˆä/õ»M< @  ' nB?d Èä/w*Zâ @  '¡oB?d å/ ù> @  '¢pB?d Hå/œ1îà @  '£qB?d ˆå/ cúT @  '¤rB?d Èå/‰òíŠ @  '¥sB?d æ/P4ã´ @  '¦tB?d Hæ/Ò¥ôj @  '§uB?d ˆæ/N DI @  '¨vB?d Èæ/ÌS— @  '©wB?d ç/ÀG’§ @  'ªxB?d Hç/BÖ…y @  '«yB?d ˆç/Õ„‘Í @  '¬zB?d Èç/W† @  '­{B?d è/'h¤ñ @  '®|B?d Hè/¥ù³/ @  '¯}B?d ˆè/”ñ=ì @  '°~B?d Èè/`*2 @  '±B?d é/Ëñ± @  '²€B?d Hé/Zæo @  '³B?d ˆé/òÛ @  '´‚B?d Èé/˜™å @  'µƒB?d ê/A_ë; @  '¶„B?d Hê/ÃÎüå @  '·…B?d ˆê/_gLÆ @  '¸†B?d Èê/Ýö[ @  '¹‡B?d ë/Ñ,š( @  'ºˆB?d Hë/S½ö @  '»‰B?d ˆë/Äï™B @  '¼ŠB?d Èë/F~Žœ @  '½‹B?d ì/²Ól @  '¾ŒB?d Hì/™#IJ @  '¿B?d ˆì/*kS @  'ÀŽB?d Èì/•»| @  'ÁB?d í/ü1ßQ @  'ÂB?d Hí/~ È @  'ÑB?d ˆí/éòÜ; @  'Ä’B?d Èí/kcËå @  'Å“B?d î/²¥ÅÛ @  'Æ”B?d Hî/04Ò @  'Ç•B?d ˆî/¬b& @  'È–B?d Èî/. uø @  'É—B?d ï/"Ö´È @  'ʘB?d Hï/ G£ @  'Ë™B?d ˆï/7·¢ @  'ÌšB?d Èï/µ„ | @  'Í›B?d ð/Oز1 @  'ΜB?d Hð/ÍI¥ï @  'ÏB?d ˆð/üA+, @  'ОB?d Èð/~Ð<ò @  'ÑŸB?d ñ/Ší¦ò @  'Ò B?d Hñ/|±, @  'Ó¡B?d ˆñ/Ÿ.¥˜ @  'Ô¢B?d Èñ/¿²F @  'Õ£B?d ò/Äy¼x @  'Ö¤B?d Hò/F諦 @  '×¥B?d ˆò/ÚA… @  'ئB?d Èò/XÐ [ @  'Ù§B?d ó/T Ík @  'Ú¨B?d Hó/Ö›Úµ @  'Û©B?d ˆó/AÉÎ @  'ܪB?d Èó/ÃXÙß @  'Ý«B?d ô/ž”„/ @  'Þ¬B?d Hô/“ñ @  'ß­B?d ˆô/< :‚ @  'à®B?d Èô/¾š-\ @  'á¯B?d õ/׎€ @  'â°B?d€ Hõ/}  @  (±B?d ˆõ/ Ñ‘ @  (²B?d Èõ/‰™ÆO @  (³B?d ö/•3œ @  (´B?d Hö/‡$B @  (µB?d ˆö/EœË @  (¶B?d Èö/Ç ÜÅ @  (·B?d ÷/eB @  (¸B?d H÷/‡ôUQ @  ( ¹B?d ˆ÷/Õïº @  ( ºB?d È÷/W~­Ö @  ( »B?d ø/âJtÙ @  ( ¼B?d Hø/`Ûc @  ( ½B?d ˆø/2ÀŒ^ @  (¾B?d Èø/°Q›€ @  (¿B?d ù/×/u  @  (ÀB?d Hù/U¾bÕ @  (ÁB?d ˆù/¥Œ @  (ÂB?d Èù/…4šR @  (ÃB?d ú/™»o @  (ÄB?d Hú/*x_ @  (ÅB?d ˆú/I1— @  (ÆB?d Èú/Ë €Ø @  (ÇB?d û/ È’ @  (ÈB?d Hû/‹Y L @  (ÉB?d ˆû/ÙBæ @  (ÊB?d Èû/[ÓñË @  (ËB?d ü/ÃVWÖ @  (ÌB?d Hü/AÇ@ @  (ÍB?d ˆü/ܯQ @  (ÎB?d Èü/‘M¸ @  (ÏB?d ý/ŠÒ]y @  ( ÐB?d Hý/CJ§ @  (!ÑB?d ˆý/ZX¥þ @  ("ÒB?d Èý/ØÉ²  @  (#ÓB?d þ/ÄFGó @  ($ÔB?d Hþ/F×P- @  (%ÕB?d ˆþ/Ì¿t @  (&ÖB?d Èþ/–]¨ª @  ('×B?d ÿ/T56à @  ((ØB?d Hÿ/Ö¤!> @  ()ÙB?d ˆÿ/„¿Îg @  (*uÐ0ÚB?d Èÿ/.Ù¹ @  (+ÛB?d 0ݻበ@  (,ÜB?d `0_*öW @  (-ÝB?d  0 1 @  (.ÞB?d à0 Ð @  (/ßB?d 0ŽõJ @  (0àB?d `0šâ” @  (1áB?d  0È Í @  (2âB?d à0J• @  (3ãB?d 0VïÀ @  (4äB?d `0Ô‹ø @  (5åB?d  0†G @  (6æB?d à0™ @  (7çB?d 0ÆižÓ @  (8èB?d `0Dø‰  @  (9éB?d  0ãfT @  (:êB?d à0”rqŠ @  (;ëB?d 0 ÷×— @  (<ìB?d `0ŽfÀI @  (=íB?d  0Ü}/ @  (>îB?d à0^ì8Î @  (?ïB?d 0ëtÛª @  (@ðB?d `0iåÌt @  (AñB?d  0;þ#- @  (BòB?d à0¹o4ó @  (CóB?d 0¥àÁ  @  (DôB?d `0'qÖþ @  (EõB?d  0uj9§ @  (FöB?d à0÷û.y @  (G÷B?d 05“°3 @  (HøB?d `0·§í @  (IùB?d  0åH´ @  (JúB?d à0gˆ_j @  (KûB?d 0Ò¼†e @  (LüB?d `0P-‘» @  (MýB?d  06~â @  (NþB?d à0€§i< @  (OÿB?d 0…x†) @  (PC?d ` 0é‘÷ @  (QC?d   0Uò~® @  (RC?d à 0×cip @  (SC?d 0Ë윣 @  (TC?d ` 0I}‹} @  (UC?d   0fd$ @  (VC?d à 0™÷sú @  (WC?d 0[Ÿí° @  (XC?d ` 0Ùún @  (Y C?d   0‹7 @  (Z C?d à 0 „é @  ([ C?d 0‘¤ô @  (\ C?d ` 0³* @  (] C?d   0A‹\s @  (^C?d à 0ÃK­ @  (_C?d 0Ø…®[ @  (`C?d ` 0Z¹… @  (aC?d   0VÜ @  (bC?d à 0ŠžA @  (cC?d 0–´Ñ @  (dC?d `0€£ @  (eC?d  0F›LV @  (fC?d à0Ä [ˆ @  (gC?d 0bÅ @  (hC?d `0„óÒ @  (iC?d  0Öè=E @  (jC?d à0Ty*› @  (kC?d 0klÃ; @  (lC?d `0éýÔå @  (mC?d  0»æ;¼ @  (nC?d à09w,b @  (oC?d 0®Y×ø @  (p C?d `0,ÈÀ& @  (q!C?d  0~Ó/ @  (r"C?d à0üB8¡ @  (s#C?d 0àÍÍr @  (t$C?d `0b\Ú¬ @  (u%C?d  00G5õ @  (v&C?d à0²Ö"+ @  (w'C?d 0p¾¼a @  (x(C?d `0ò/«¿ @  (y)C?d  0 4Dæ @  (z*C?d à0"¥S8 @  ({+C?d 0º õ% @  (|,C?d `08±âû @  (}-C?d  0jª ¢ @  (~.C?d à0è;| @  (/C?d 0¾õÉ) @  (€0C?d `0C?d à0Õ&{¿ @  (?C?d 0²X•4 @  (@C?d `00É‚ê @  (‘AC?d  0bÒm³ @  (’BC?d à0àCzm @  (“CC?d 0ü̾ @  (”DC?d `0~]˜` @  (•EC?d  0,Fw9 @  (–FC?d à0®×`ç @  (—GC?d 0l¿þ­ @  (˜HC?d `0î.és @  (™IC?d  0¼5* @  (šJC?d à0>¤ô @  (›KC?d 0¦!·é @  (œLC?d `0$° 7 @  (MC?d  0v«On @  (žNC?d à0ô:X° @  (ŸOC?d 0諒F @  ( PC?d `0m4ª˜ @  (¡QC?d  0?/EÁ @  (¢RC?d à0½¾R @  (£SC?d 0¡1§Ì @  (¤TC?d `0# ° @  (¥UC?d  0q»_K @  (¦VC?d à0ó*H• @  (§WC?d 01BÖß @  (¨XC?d `0³ÓÁ @  (©YC?d  0áÈ.XuÐ 0 @  (ªZC?d à0cY9† @  («[C?d 8 0“™²ò @  (¬\C?d x 0¥, @  (­]C?d ¸ 0CJu @  (®^C?d ø 0Á‚]« @  (¯_C?d 8!0V¬¦1 @  (°`C?d x!0Ô=±ï @  (±aC?d ¸!0†&^¶ @  (²bC?d ø!0·Ih @  (³cC?d 8"08¼» @  (´dC?d x"0š©«e @  (µeC?d ¸"0ȲD< @  (¶fC?d ø"0J#Sâ @  (·gC?d 8#0ˆKͨ @  (¸hC?d x#0 ÚÚv @  (¹iC?d ¸#0XÁ5/ @  (ºjC?d ø#0ÚP"ñ @  (»kC?d 8$0BÕ„ì @  (¼lC?d x$0ÀD“2 @  (½mC?d ¸$0’_|k @  (¾nC?d ø$0Îkµ @  (¿oC?d 8%0¥VˆÑ @  (ÀpC?d x%0'ÇŸ @  (ÁqC?d ¸%0uÜpV @  (ÂrC?d ø%0÷Mgˆ @  (ÃsC?d 8&0ëÂ’[ @  (ÄtC?d x&0iS…… @  (ÅuC?d ¸&0;HjÜ @  (ÆvC?d ø&0¹Ù} @  (ÇwC?d 8'0{±ãH @  (ÈxC?d x'0ù ô– @  (ÉyC?d ¸'0«;Ï @  (ÊzC?d ø'0)ª  @  (Ë{C?d 8(0œžÕ @  (Ì|C?d x(0ÂÀ @  (Í}C?d ¸(0L-™ @  (Î~C?d ø(0Î…:G @  (ÏC?d 8)0´=€^ @  (ЀC?d x)06¬—€ @  (ÑC?d ¸)0d·xÙ @  (Ò‚C?d ø)0æ&o @  (ÓƒC?d 8*0ú©šÔ @  (Ô„C?d x*0x8  @  (Õ…C?d ¸*0*#bS @  (Ö†C?d ø*0¨²u @  (ׇC?d 8+0jÚëÇ @  (؈C?d x+0èKü @  (Ù‰C?d ¸+0ºP@ @  (ÚŠC?d ø+08Áž @  (Û‹C?d 8,0 D¢ƒ @  (ÜŒC?d x,0"Õµ] @  (ÝC?d ¸,0pÎZ @  (ÞŽC?d ø,0ò_MÚ @  (ßC?d 8-0éÀ¨, @  (àC?d x-0kQ¿ò @  (á‘C?d ¸-09JP« @  (â’C?d€ ø-0Ï[Ó @  )“C?d 8.02Öæ) @  )”C?d x.0°Gñ÷ @  )•C?d ¸.0'åC @  )–C?d ø.0¥„ò @  )—C?d 8/0©^3­ @  )˜C?d x/0+Ï$s @  )™C?d ¸/0·f”P @  )šC?d ø/05÷ƒŽ @  ) ›C?d 800Ï«‘à @  ) œC?d x00M:† @  ) C?d ¸00Úh’© @  ) žC?d ø00Xù…w @  ) ŸC?d 810¬Äw @  ) C?d x10.U© @  )¡C?d ¸10]†j @  )¢C?d ø10Ì‘´ @  )£C?d 820D ŸŠ @  )¤C?d x20Æ›ˆT @  )¥C?d ¸20QÉœà @  )¦C?d ø20ÓX‹> @  )§C?d 830ß‚J @  )¨C?d x30]]Ð @  )©C?d ¸30Áºíó @  )ªC?d ø30C+ú- @  )«C?d 840ç§Ý @  )¬C?d x40œv° @  )­C?d ¸40 $¤· @  )®C?d ø40‰µ³i @  )¯C?d 850à?µ @  )°C?d x50b®k @  )±C?d ¸50B ® @  ) ²C?d ø50À1¹Æ @  )!³C?d 860÷·ø @  )"´C?d x60›f & @  )#µC?d ¸60 4´’ @  )$¶C?d ø60Ž¥£L @  )%·C?d 870‚b| @  )&¸C?d x70îu¢ @  )'¹C?d ¸70œGÅ @  )(ºC?d ø70ÖÒ_ @  ))»C?d 880n«ð½ @  )*¼C?d x80ì:çc @  )+½C?d ¸80{hó× @  ),¾C?d ø80ùùä  @  )-¿C?d 890ý”k @  ).ÀC?d x90|Æ @  )/ÁC?d ¸90N ò @  )0ÂC?d ø90ÌœåÛ @  )1ÃC?d 8:0Zëå @  )2ÄC?d x:0—Ëü; @  )3ÅC?d ¸:0™è @  )4ÆC?d ø:0‚ÿQ @  )5ÇC?d 8;0ŽÒ>a @  )6ÈC?d x;0 C)¿ @  )7ÉC?d ¸;0Ꙝ @  )8ÊC?d ø;0{ŽB @  )9ËC?d 8<0O·Ó² @  ):ÌC?d x<0Í&Äl @  );ÍC?d ¸<0ZtÐØ @  )<ÎC?d ø<0ØåÇ @  )=ÏC?d 8=0±odÚ @  )>ÐC?d x=03þs @  )?ÑC?d ¸=0½÷Üå @  )@ÒC?d ø=0?fË; @  )AÓC?d 8>0æ Å @  )BÔC?d x>0d1ÒÛ @  )CÕC?d ¸>0ócÆo @  )DÖC?d ø>0qòѱ @  )E×C?d 8?0}( @  )FØC?d x?0ÿ¹_ @  )GÙC?duÐ@07 ¸?0c·| @  )HÚC?d ø?0á ¢ @  )IÛC?d P@0f¯´a @  )JÜC?d @0FZ¶Ÿ @  )KÝC?d Ð@0sl·  @  )LÞC?d A0£$;ã @  )MßC?d PA0À:Õ @  )NàC?d A0%58+ @  )OáC?d ÐA0¶Y£È @  )PâC?d B0+  @  )QãC?d PB0íº( @  )RäC?d B0Íû¸Ö @  )SåC?d ÐB0øÍ¹B @  )TæC?d C0(…5ª @  )UçC?d PC0v†o¬ @  )VèC?d C0VsmR @  )WéC?d ÐC0h¾ÈQ @  )XêC?d D0qð;^ @  )YëC?d PD0·ã‚ @  )ZìC?d D0—€ @  )[íC?d ÐD0¢  @  )\îC?d E0rh ý @  )]ïC?d PE0I;5 @  )^ðC?d E0iÎ7é @  )_ñC?d ÐE0뤋º @  )`òC?d F0và+{ @  )aóC?d PF0°ó’Z @  )bôC?d F0¤ @  )cõC?d ÐF0¥0‘0 @  )döC?d G0uxØ @  )e÷C?d PG0+{GÞ @  )føC?d G0 ŽE  @  )gùC?d ÐG05Cà# @  )húC?d H0¼l> @  )iûC?d PH0ǯÕ @  )jüC?d H0çZ×á @  )kýC?d ÐH0ÒlÖu @  )lþC?d I0$Z @  )mÿC?d PI0 8p² @  )nD?d I0*ÍrL @  )oD?d ÐI0¹¡é¯ @  )pD?d J0$åIn @  )qD?d PJ0âöðO @  )rD?d J0Âò± @  )sD?d ÐJ0÷5ó% @  )tD?d K0'}Í @  )uD?d PK0y~%Ë @  )vD?d K0Y‹'5 @  )w D?d ÐK0gF‚6 @  )x D?d L0~q9 @  )y D?d PL0¸È @  )z D?d L0˜îÊæ @  ){ D?d ÐL0­ØËr @  )|D?d M0}Gš @  )}D?d PM0FÃp @  )~D?d M0f6}Ž @  )D?d ÐM0© ÷~ @  )€D?d N04IW¿ @  )D?d PN0òZîž @  )‚D?d N0Ò¯ì` @  )ƒD?d ÐN0ç™íô @  )„D?d O07Ña @  )…D?d PO0iÒ; @  )†D?d O0I'9ä @  )‡D?d ÐO0wêœç @  )ˆD?d P0É4 U @  )‰D?d PP0'™t @  )ŠD?d P0/Ò›Š @  )‹D?d ÐP0äš @  )ŒD?d Q0ʬö @  )D?d PQ0lHÀ @  )Ž D?d Q0L½> @  )!D?d ÐQ0ßÑŽÝ @  )"D?d R0B•. @  )‘#D?d PR0„†—= @  )’$D?d R0¤s•à @  )“%D?d ÐR0‘E”W @  )”&D?d S0A ¿ @  )•'D?d PS0B¹ @  )–(D?d S0?û@G @  )—)D?d ÐS06åD @  )˜*D?d T0xK @  )™+D?d PT0Þk¯j @  )š,D?d T0þž­” @  )›-D?d ÐT0˨¬ @  )œ.D?d U0à è @  )/D?d PU0 ³ @  )ž0D?d U0Fü @  )Ÿ1D?d ÐU0‚,¦¯ @  ) 2D?d V0hn @  )¡3D?d PV0Ù{¿O @  )¢4D?d V0ù޽± @  )£5D?d ÐV0̸¼% @  )¤6D?d W0ð0Í @  )¥7D?d PW0BójË @  )¦8D?d W0bh5 @  )§9D?d ÐW0\ËÍ6 @  )¨:D?d X0h4A+ @  )©;D?d PX0®'ø  @  )ªD?d Y0k¬wˆ @  )­?D?d PY0=c¯ @  )®@D?d Y0íaQ @  )¯AD?d ÐY0Žú² @  )°BD?d Z0ÅZs @  )±CD?d PZ0ÕÖãR @  )²DD?d Z0õ#ᬠ@  )³ED?d ÐZ0Àà8 @  )´FD?d [0]lÐ @  )µGD?d P[0N^6Ö @  )¶HD?d [0n«4( @  )·ID?d Ð[0Pf‘+ @  )¸JD?d \0I(b$ @  )¹KD?d P\0;Û @  )ºLD?d \0¯ÎÙû @  )»MD?d Ð\0šøØo @  )¼ND?d ]0J°T‡ @  )½OD?d P]0qãlm @  )¾PD?d ]0Qn“ @  )¿QD?d Ð]0}{ÔR @  )ÀRD?d ^0à?t“ @  )ÁSD?d P^0&,Ͳ @  )ÂTD?d ^0ÙÏL @  )ÃUD?d Ð^03ïÎØ @  )ÄVD?d _0ã§B0 @  )ÅWD?d P_0½¤6 @  )ÆXD?d _0QÈ @  )uÐ`0ÇYD?d Ð_0£œ¿Ë @  )ÈZD?d (`0d S @  )É[D?d h`0Ûw³r @  )Ê\D?d ¨`0û‚±Œ @  )Ë]D?d è`0δ° @  )Ì^D?d (a0ü<ð @  )Í_D?d ha0¸=Æ @  )Î`D?d ¨a0˜í?8 @  )ÏaD?d èa0 ¤Û @  )ÐbD?d (b0–Å @  )ÑcD?d hb0PÖ½; @  )ÒdD?d ¨b0p#¿Å @  )ÓeD?d èb0E¾Q @  )ÔfD?d (c0•]2¹ @  )ÕgD?d hc0Ë^h¿ @  )ÖhD?d ¨c0ë«jA @  )×iD?d èc0ÕfÏB @  )ØjD?d (d0Ì(²D?d (v0;Õ_ª @  *?³D?d hv0!Ô¦3 @  *@´D?d ¨v0!¤Í @  *AµD?d èv0ñ^^´ @  *B¶D?d (w0!Ò\ @  *C·D?d hw0º\s· @  *D¸D?d ¨w0š©qI @  *E¹D?d èw0jÖ‹0 @  *FºD?d (x0^)- @  *G»D?d hx0Vˆáv @  *H¼D?d ¨x0v}㈠@  *I½D?d èx0†ñ @  *J¾D?d (y0VJ• @  *K¿D?d hy0Å·zÓ @  *LÀD?d ¨y0åBx- @  *MÁD?d èy0=‚T @  *NÂD?d (z0ˆy"• @  *OÃD?d hz0-yú. @  *PÄD?d ¨z0 ŒøÐ @  *QÅD?d èz0ýó© @  *RÆD?d ({0-»ŽA @  *SÇD?d h{0¶ñ/ª @  *TÈD?d ¨{0–-T @  *UÉD?d è{0f{×- @  *VÊD?d (|05$" @  *WËD?d h|0w”Ây @  *XÌD?d ¨|0WaÀ‡ @  *YÍD?d è|0§:þ @  *ZÎD?d (}0wV¶ @  *[ÏD?d h}0‰Lu @  *\ÐD?d ¨}0©¹wï @  *]ÑD?d è}0YÆ– @  *^ÒD?d (~0Ä‚-W @  *_ÓD?d h~0p„Ò\ @  *`ÔD?d ¨~0PqТ @  *aÕD?d è~0 *Û @  *bÖD?d (0pF¦3 @  *c×D?d h0ë Ø @  *dØD?d ¨0uЀ0'Ëù& @  *eÙD?d è0A#Š @  *f ÚD?d @€0lÿÁþ @  *g ÛD?d €€0Æ:2… @  *h ÜD?d À€0D«%[ @  *i ÝD?d 0æ D @  *j ÞD?d @0dœSÊ @  *k ßD?d €0¥U¼1 @  *l àD?d À0'Ä«ï @  *m áD?d ‚0Ènæ‰ @  *n âD?d @‚0JÿñW @  *o ãD?d €‚0M›<Ì @  *p äD?d À‚0Ï + @  *q åD?d ƒ0m¬J] @  *r æD?d @ƒ0ï=]ƒ @  *s çD?d €ƒ0ÖéH @  *t èD?d Àƒ0T‚þ– @  *u éD?d „0?"à> @  *v êD?d @„0½³÷à @  *w ëD?d €„0v› @  *x ìD?d À„0•çE @  *y íD?d …07Ar  @  *z îD?d @…0µÐeÔ @  *{ ïD?d €…0鮳ó @  *| ðD?d À…0k?¤- @  *} ñD?d †0„•éK @  *~ òD?d @†0þ• @  * óD?d €†0]7" @  *€ ôD?d À†0ߦ5à @  * õD?d ‡0}TŒ @  *‚ öD?d @‡0ÿ‘CR @  *ƒ ÷D?d €‡0Æ¿÷™ @  *„ øD?d À‡0D.àG @  *… ùD?d ˆ0?ý @  *† úD?d @ˆ0€®–# @  *‡ ûD?d €ˆ0*keX @  *ˆ üD?d Àˆ0¨úr† @  *‰ ýD?d ‰0 \É @  *Š þD?d @‰0ˆÍ @  *‹ ÿD?d €‰0Ûõÿc @  *Œ E?d À‰0Ydè½ @  * E?d Š0¶Î¥Û @  *Ž E?d @Š04_² @  * E?d €Š03;ž @  * E?d ÀŠ0±ªh@ @  *‘ E?d ‹0  @  *’ E?d @‹0‘Ñ @  *“ E?d €‹0¨³ª @  *” E?d À‹0*"½Ä @  *•  E?d Œ0A‚£l @  *–  E?d @Œ0ô² @  *—  E?d €Œ0iÖGÉ @  *˜  E?d ÀŒ0ëGP @  *™  E?d 0Iá1X @  *š E?d @0Ëp&† @  *› E?d €0—ð¡ @  *œ E?d À0Ÿç @  * E?d Ž0ú5ª @  *ž E?d @Ž0x¤½Ç @  *Ÿ E?d €Ž0nÆWì @  *  E?d ÀŽ0ìW@2 @  *¡ E?d 0Nñ!} @  *¢ E?d @0Ì`6£ @  *£ E?d €0õN‚h @  *¤ E?d À0wß•¶ @  *¥ E?d 0»ïÄ£ @  *¦ E?d @09~Ó} @  *§ E?d €0“»  @  *¨ E?d À0*7Ø @  *© E?d ‘0³ŒV— @  *ª E?d @‘01AI @  *« E?d €‘0ðÔ®² @  *¬  E?d À‘0rE¹l @  *­ !E?d ’0ïô  @  *® "E?d @’0~ãÔ @  *¯ #E?d €’0.O @  *° $E?d À’0š‹9‘ @  *± %E?d “08-XÞ @  *² &E?d @“0º¼O @  *³ 'E?d €“0ƒ’ûË @  *´ (E?d À“0ì @  *µ )E?d ”0j£ò½ @  *¶ *E?d @”0è2åc @  *· +E?d €”0B÷ @  *¸ ,E?d À”0ÀfÆ @  *¹ -E?d •0bÀ`‰ @  *º .E?d @•0àQwW @  *» /E?d €•0¼/¡p @  *¼ 0E?d À•0>¾¶® @  *½ 1E?d –0ÑûÈ @  *¾ 2E?d @–0S…ì @  *¿ 3E?d €–0ë௠@  *À 4E?d À–0iqq @  *Á 5E?d —0Ë×v> @  * 6E?d @—0IFaà @  *à 7E?d €—0phÕ+ @  *Ä 8E?d À—0òùÂõ @  *Å 9E?d ˜0´è£O @  *Æ :E?d @˜06y´‘ @  *Ç ;E?d €˜0œ¼Gê @  *È E?d @™0>&¥ @  *Ë ?E?d €™0ƒÜO @  *Ì @E?d À™0Ë‘ @  *Í AE?d š0b¸†÷ @  *Î BE?d @š0à)‘) @  *Ï CE?d €š0çM\² @  *Ð DE?d Àš0eÜKl @  *Ñ EE?d ›0Çz*# @  *Ò FE?d @›0Eë=ý @  *Ó GE?d €›0|ʼn6 @  *Ô HE?d À›0þTžè @  *Õ IE?d œ0•ô€@ @  *Ö JE?d @œ0e—ž @  *× KE?d €œ0½ då @  *Ø LE?d Àœ0?1s; @  *Ù ME?d 0—t @  *Ú NE?d @0ª @  *Û OE?d €0CxÓ @  *Ü PE?d À0ÁéÄS @  *Ý QE?d ž0.C‰5 @  *Þ RE?d @ž0¬Òžë @  *ß SE?d €ž0º°tÀ @  *à TE?d Àž08!c @  *á UE?d Ÿ0š‡Q @  *â VE?d€ @Ÿ0lÕ ) @  + WE?d €Ÿ0´ºõË @  + XEuР0?d ÀŸ06+â @  + YE?d  0É@öì @  +ZE?d X 0KÑá2 @  +[E?d ˜ 0/¦M3 @  +\E?d Ø 0­7Zí @  +]E?d ¡0Á#dØ @  +^E?d X¡0C²s @  + _E?d ˜¡0G2g @  + `E?d Ø¡0Å£pÎ @  + aE?d ¢0ï@ÆE @  + bE?d X¢0mÑÑ› @  + cE?d ˜¢0 ¦}š @  +dE?d Ø¢0‹7jD @  +eE?d £0J‚j‘ @  +fE?d X£0È}O @  +gE?d ˜£04t2i @  +hE?d Ø£0¶å%· @  +iE?d ¤0 Àò @  +jE?d X¤0š×, @  +kE?d ˜¤0þê{- @  +lE?d ؤ0|{ló @  +mE?d ¥0oRÆ @  +nE?d X¥0’þE @  +oE?d ˜¥0 ÉhÒ @  +pE?d Ø¥0‰X  @  +qE?d ¦0£»É‡ @  +rE?d X¦0!*ÞY @  +sE?d ˜¦0E]rX @  +tE?d ئ0ÇÌe† @  +uE?d §0Bã @  + vE?d X§0•îU= @  +!wE?d ˜§0i‰ @  +"xE?d ا0ë Å @  +#yE?d ¨0h@—’ @  +$zE?d X¨0êÑ€L @  +%{E?d ˜¨0ަ,M @  +&|E?d ب0 7;“ @  +'}E?d ©0`#¦ @  +(~E?d X©0â²x @  +)E?d ˜©0 ¤Gí @  +*€E?d Ø©0‰5P3 @  ++E?d ª0£Öæ¸ @  +,‚E?d Xª0!Gñf @  +-ƒE?d ˜ª0E0]g @  +.„E?d ت0Ç¡J¹ @  +/…E?d «0Jl @  +0†E?d X«0„…]² @  +1‡E?d ˜«0xâ” @  +2ˆE?d Ø«0úsJ @  +3‰E?d ¬0Tšà @  +4ŠE?d X¬0Ö ÷Ñ @  +5‹E?d ˜¬0²|[Ð @  +6ŒE?d ج00íL @  +7E?d ­0\ùr; @  +8ŽE?d X­0Þheå @  +9E?d ˜­0G_H/ @  +:E?d Ø­0ÅÎ_ñ @  +;‘E?d ®0ï-éz @  +<’E?d X®0m¼þ¤ @  +=“E?d ˜®0 ËR¥ @  +>”E?d Ø®0‹ZE{ @  +?•E?d ¯0õîdŒ @  +@–E?d X¯0wsR @  +A—E?d ˜¯0‹©8· @  +ƒÙE?d 0À0íþ¯ @  +„ÚE?d pÀ0oohq @  +…ÛE?d °À0 Äp @  +†ÜE?d ðÀ0‰‰Ó® @  +‡ÝE?d 0Á0åí› @  +ˆÞE?d pÁ0g úE @  +‰ßE?d °Á0cŒîS @  +ŠàE?d ðÁ0áù @  +‹áE?d 0Â0ËþO @  +ŒâE?d pÂ0IoXØ @  +ãE?d °Â0-ôÙ @  +ŽäE?d ðÂ0¯‰ã @  +åE?d 0Ã0n<ãÒ @  +æE?d pÃ0ì­ô  @  +‘çE?d °Ã0Ê»* @  +’èE?d ðÃ0’[¬ô @  +“éE?d 0Ä0<²I± @  +”êE?d pÄ0¾#^o @  +•ëE?d °Ä0ÚTòn @  +–ìE?d ðÄ0XÅå° @  +—íE?d 0Å04ÑÛ… @  +˜îE?d pÅ0¶@Ì[ @  +™ïE?d °Å0/wá‘ @  +šðE?d ðÅ0­æöO @  +›ñE?d 0Æ0‡@Ä @  +œòE?d pÆ0”W @  +óE?d °Æ0aãû @  +žôE?d ðÆ0ãrìÅ @  +ŸõE?d 0Ç03ÁË  @  + öE?d pÇ0±PÜ~ @  +¡÷E?d °Ç0M7“X @  +¢øE?d ðÇ0Ϧ„† @  +£ùE?d 0È0LþÑ @  +¤úE?d pÈ0Îo  @  +¥ûE?d °È0ª¥ @  +¦üE?d ðÈ0(‰²Ð @  +§ýE?d 0É0DŒå @  +¨þE?d pÉ0Æ ›; @  +©ÿE?d °É0â_®‡ @  +ªF?d ðÉ0`ιY @  +«F?d 0Ê0J-Ò @  +¬F?d pÊ0ȼ  @  +­F?d °Ê0¬Ë´  @  +®F?d ðÊ0.Z£Ó @  +¯F?d 0Ë0ïï£ @  +°F?d pË0m~´Ø @  +±F?d °Ë0‘ûþ @  +²F?d ðË0ˆì  @  +³ F?d 0Ì0½a e @  +´ F?d pÌ0?ð» @  +µ F?d °Ì0[‡²º @  +¶ F?d ðÌ0Ù¥d @  +· F?d 0Í0µ›Q @  +¸F?d pÍ07“Œ @  +¹F?d °Í0®¤¡E @  +ºF?d ðÍ0,5¶› @  +»F?d 0Î0Ö @  +¼F?d pÎ0„GÎ @  +½F?d °Î0à0»Ï @  +¾F?d ðÎ0b¡¬ @  +¿F?d 0Ï0æ @  +ÀF?d pÏ0ž„š8 @  +ÁF?d °Ï0bãÕ @  +ÂF?d ðÏ0àrÂÀ @  +ÃF?d 0Ð0é h8 @  +ÄF?d pÐ0kšæ @  +ÅF?d °Ð0íÓç @  +ÆF?d ðÐ0|Ä9 @  +ÇF?d 0Ñ0áhú  @  +ÈF?d pÑ0cùíÒ @  +ÉF?d °Ñ0gyùÄ @  +Ê F?d ðÑ0åèî @  +Ë!F?d 0Ò0Ï X‘ @  +Ì"F?d pÒ0MšOO @  +Í#F?d °Ò0)íãN @  +Î$F?d ðÒ0«|ô @  +Ï%F?d 0Ó0jÉôE @  +Ð&F?d pÓ0èXã› @  +Ñ'F?d °Ó0?¬½ @  +Ò(F?d ðÓ0–®»c @  +Ó)F?d 0Ô08G^& @  +Ô*F?d pÔ0ºÖIø @  +Õ+F?d °Ô0Þ¡åù @  +Ö,F?d ðÔ0\0ò' @  +×-F?d 0Õ00$Ì @  +Ø.F?d pÕ0²µÛÌ @  +Ù/F?d °Õ0+‚ö @  +Ú0F?d ðÕ0©áØ @  +Û1F?d 0Ö0ƒðWS @  +Ü2F?d pÖ0a@ @  +Ý3F?d °Ö0eìŒ @  +Þ4F?d ðÖ0ç‡ûR @  +ß5F?d 0×074Ü7 @  +à6F?d p×0µ¥Ëé @  +á7F?d °×0I„Ï @  +â8F?d€ ð×0M;¨ @  ,9F?d 0Ø0/éÖ @  ,:F?d pØ0­þ @  ,;F?d °Ø0 ³©ä @  ,F?d pÙ0®È« @  ,?F?d °Ù0”w–Ö @  ,@F?d ðÙ0æ @  , AF?d 0Ú0ùLÌn @  , BF?d pÚ0{ÝÛ° @  , CF?d °Ú0ÚãŒ\ @  , DF?d ðÚ0Xr›‚ @  , EF?d 0Û0úÔúÍ @  ,FF?d pÛ0xEí @  ,GF?d °Û0ç1ï @  ,HF?d ðÛ0e Ôq @  ,IF?d 0Ü0ÊÙ @  ,JF?d pÜ0Œ‘Ý @  ,KF?d °Ü0-¯Šë @  ,LF?d ðÜ0¯>5 @  ,MF?d 0Ý0 ˜üz @  ,NF?d pÝ0 ë¤ @  ,OF?d °Ý0ØŒ™ @  ,PF?d ðÝ0ZŽÊ @  ,QF?d 0Þ0µ·Ã¬ @  ,RF?d pÞ07&Ôr @  ,SF?d °Þ0–ƒž @  ,TF?d ðÞ0‰”@ @  ,UF?d 0ß0¶/õ @  ,VF?d pß04¾âÑ @  ,WF?d uÐà0/°ß0ºÌëÝ @  , XF?d ðß08]ü @  ,!YF?d Hà0SOR @  ,"ZF?d ˆà0sâM¬ @  ,#[F?d Èà0p¸` @  ,$\F?d á0 ðƒˆ @  ,%]F?d Há0Pyñ @  ,&^F?d ˆá0pz{ @  ,'_F?d Èá0,%C @  ,(`F?d â0…h…‚ @  ,)aF?d Hâ0uû @  ,*bF?d ˆâ0Uâ} @  ,+cF?d Èâ0V¸?É @  ,,dF?d ã0†ð³! @  ,-eF?d Hã0vIX @  ,.fF?d ˆã0VzK¦ @  ,/gF?d Èã0kjp: @  ,0hF?d ä0r$ƒ5 @  ,1iF?d Hä0‚[yL @  ,2jF?d ˆä0¢®{² @  ,3kF?d Èä0¡ô9~ @  ,4lF?d å0q¼µ– @  ,5mF?d Hå0ÃOï @  ,6nF?d ˆå0¡6M @  ,7oF?d Èå0T×* @  ,8pF?d æ0É“Š@ @  ,9qF?d Hæ09ìp9 @  ,:rF?d ˆæ0rÇ @  ,;sF?d Èæ0C0  @  ,<tF?d ç0Ê ¼ã @  ,=uF?d Hç0:tFš @  ,>vF?d ˆç0Dd @  ,?wF?d Èç0˜^Ú @  ,@xF?d è0¬oÒÇ @  ,AyF?d Hè0\(¾ @  ,BzF?d ˆè0|å*@ @  ,C{F?d Èè0¿hŒ @  ,D|F?d é0¯÷äd @  ,E}F?d Hé0_ˆ @  ,F~F?d ˆé0}ã @  ,GF?d Èé0ú½, @  ,H€F?d ê0gù£í @  ,IF?d Hê0—†Y” @  ,J‚F?d ˆê0·s[j @  ,KƒF?d Èê0´)¦ @  ,L„F?d ë0da•N @  ,M…F?d Hë0”o7 @  ,N†F?d ˆë0´ëmÉ @  ,O‡F?d Èë0‰ûVU @  ,PˆF?d ì0µ¥Z @  ,Q‰F?d Hì0`Ê_# @  ,RŠF?d ˆì0@?]Ý @  ,S‹F?d Èì0Ce @  ,TŒF?d í0“-“ù @  ,UF?d Hí0cRi€ @  ,VŽF?d ˆí0C§k~ @  ,WF?d Èí0¶F î @  ,XF?d î0+¬/ @  ,Y‘F?d Hî0Û}VV @  ,Z’F?d ˆî0ûˆT¨ @  ,[“F?d Èî0øÒd @  ,\”F?d ï0(ššŒ @  ,]•F?d Hï0Øå`õ @  ,^–F?d ˆï0øb  @  ,_—F?d Èï0Ô~' @  ,`˜F?d ð0jØÂ• @  ,a™F?d Hð0š§8ì @  ,bšF?d ˆð0ºR: @  ,c›F?d Èð0¹xÞ @  ,dœF?d ñ0i@ô6 @  ,eF?d Hñ0™?O @  ,fžF?d ˆñ0¹Ê ± @  ,gŸF?d Èñ0ÑœRý @  ,h F?d ò0LØò< @  ,i¡F?d Hò0¼§E @  ,j¢F?d ˆò0œR » @  ,k£F?d Èò0ŸHw @  ,l¤F?d ó0O@ÄŸ @  ,m¥F?d Hó0¿?>æ @  ,n¦F?d ˆó0ŸÊ< @  ,o§F?d Èó0¢Ú„ @  ,p¨F?d ô0»”ô‹ @  ,q©F?d Hô0Këò @  ,rªF?d ˆô0k  @  ,s«F?d Èô0hDNÀ @  ,t¬F?d õ0¸ Â( @  ,u­F?d Hõ0Hs8Q @  ,v®F?d ˆõ0h†:¯ @  ,w¯F?d Èõ0g]? @  ,x°F?d ö0#ýþ @  ,y±F?d Hö0ð\‡ @  ,z²F?d ˆö0Щy @  ,{³F?d Èö0ÓóGµ @  ,|´F?d ÷0»Ë] @  ,}µF?d H÷0óÄ1$ @  ,~¶F?d ˆ÷0Ó13Ú @  ,·F?d È÷0²vU @  ,€¸F?d ø0†‰•H @  ,¹F?d Hø0vöo1 @  ,‚ºF?d ˆø0VmÏ @  ,ƒ»F?d Èø0UY/ @  ,„¼F?d ù0…£ë @  ,…½F?d Hù0unY’ @  ,†¾F?d ˆù0U›[l @  ,‡¿F?d Èù0Í1 @  ,ˆÀF?d ú0PÙ°ð @  ,‰ÁF?d Hú0 ¦J‰ @  ,ŠÂF?d ˆú0€SHw @  ,‹ÃF?d Èú0ƒ » @  ,ŒÄF?d û0SA†S @  ,ÅF?d Hû0£>|* @  ,ŽÆF?d ˆû0ƒË~Ô @  ,ÇF?d Èû0¾ÛEH @  ,ÈF?d ü0§•¶G @  ,‘ÉF?d Hü0WêL> @  ,’ÊF?d ˆü0wNÀ @  ,“ËF?d Èü0tE  @  ,”ÌF?d ý0¤ €ä @  ,•ÍF?d Hý0Trz @  ,–ÎF?d ˆý0t‡xc @  ,—ÏF?d Èý0fó @  ,˜ÐF?d þ0"¿2 @  ,™ÑF?d Hþ0ì]EK @  ,šÒF?d ˆþ0̨Gµ @  ,›ÓF?d Èþ0Ïòy @  ,œÔF?d ÿ0º‰‘ @  ,ÕF?d Hÿ0ïÅsè @  ,žÖF?d ˆÿ0Ï0q @  ,ŸuÐ1×F?d Èÿ0ã&m: @  , ØF?d 1¬’EË @  ,¡ÙF?d `1\í¿² @  ,¢ÚF?d  1|½L @  ,£ÛF?d à1Bÿ€ @  ,¤ÜF?d 1¯ sh @  ,¥ÝF?d `1_u‰ @  ,¦ÞF?d  1€‹ï @  ,§ßF?d à1ÖÕ£ @  ,¨àF?d 1Š’ub @  ,©áF?d `1zí @  ,ªâF?d  1Zå @  ,«ãF?d à1YBÏ) @  ,¬äF?d 1‰ CÁ @  ,­åF?d `1yu¹¸ @  ,®æF?d  1Y€»F @  ,¯çF?d à1d€Ú @  ,°èF?d 1}ÞsÕ @  ,±éF?d `1¡‰¬ @  ,²êF?d  1­T‹R @  ,³ëF?d à1®Éž @  ,´ìF?d 1~FEv @  ,µíF?d `1Ž9¿ @  ,¶îF?d  1®Ì½ñ @  ,·ïF?d à1[-Úa @  ,¸ðF?d 1Æiz  @  ,¹ñF?d `16€Ù @  ,ºòF?d  1ã‚' @  ,»óF?d à1¹Àë @  ,¼ôF?d 1ÅñL @  ,½õF?d `15޶z @  ,¾öF?d  1{´„ @  ,¿÷F?d à1—j®: @  ,ÀøF?d 1£•"' @  ,ÁùF?d `1SêØ^ @  ,ÂúF?d  1sÚ  @  ,ÃûF?d à1pE˜l @  ,ÄüF?d 1  „ @  ,ÅýF?d ` 1Prîý @  ,ÆþF?d   1p‡ì @  ,ÇÿF?d à 1Š ¦À @  ,ÈG?d 1d @  ,ÉG?d ` 1çüx @  ,ÊG?d   1Çîþ† @  ,ËG?d à 1Ä´¼J @  ,ÌG?d 1ü0¢ @  ,ÍG?d ` 1äƒÊÛ @  ,ÎG?d   1ÄvÈ% @  ,ÏG?d à 1ùfó¹ @  ,ÐG?d 1à(¶ @  ,Ñ G?d ` 1WúÏ @  ,Ò G?d   10¢ø1 @  ,Ó G?d à 13øºý @  ,Ô G?d 1ã°6 @  ,Õ G?d ` 1ÏÌl @  ,ÖG?d   13:Î’ @  ,×G?d à 1ÆÛ© @  ,ØG?d 1[Ÿ à @  ,ÙG?d `1«àóº @  ,ÚG?d  1‹ñD @  ,ÛG?d à1ˆO³ˆ @  ,ÜG?d 1X?` @  ,ÝG?d `1¨xÅ @  ,ÞG?d  1ˆÇç @  ,ßG?d à1¤›ÛË @  ,àG?d 1Egy @  ,áG?d `1ê: @  ,âG?d€  1¾ ƒX @  -G?d à1\‰½ @  -G?d 1Œ_U @  -G?d `1¹iÁ @  -G?d  1™œ? @  -G?d à1?x  @  - G?d 1¢<§È @  -!G?d `1œñË @  -"G?d  1¼5 @  - #G?d à1z¹ @  - $G?d 1ª_5ü @  - %G?d `1Ÿi4h @  - &G?d  1¿œ6– @  - 'G?d à1áŸl @  -(G?d 1øÑŸŸ @  -)G?d `1k½| @  -*G?d  1KH‚ @  -+G?d à1[¿£ @  -,G?d 1]3K @  --G?d `1h%2ß @  -.G?d  1HÐ0! @  -/G?d à1sƒË @  -0G?d 1îǨ  @  -1G?d `1Ð  @  -2G?d  1ðÿ÷ @  -3G?d à16ì¶Ö @  -4G?d 1æ¤:> @  -5G?d `1Ó’;ª @  -6G?d  1óg9T @  -7G?d à1­dcR @  -8G?d 1™›ïO @  -9G?d `1ñS @  - :G?d  1;Qâ @  -!;G?d à1ýèà @  -"G?d  18œgA @  -%?G?d à1n(sf @  -&@G?d 1ólÓ§ @  -'AG?d `1Í¡v¤ @  -(BG?d  1íTtZ @  -)CG?d à1+GÍ{ @  -*DG?d 1ûA“ @  -+EG?d `1Î9@ @  -,FG?d  1îÌBù @  --GG?d à1°Ïÿ @  -.HG?d 1©ëð @  -/IG?d `1:íp @  -0JG?d  1rí @  -1KG?d à1Ü ËÌ @  -2LG?d 1 CG$ @  -3MG?d `19uF° @  -4NG?d  1€DN @  -5OG?d à1"Ó|¤ @  -6PG?d 1¿—Üe @  -7QG?d `1Zyf @  -8RG?d  1¡¯{˜ @  -9SG?d à1g¼Â¹ @  -:TG?d 1·ôNQ @  -;UG?d `1‚ÂOÅ @  -<VG?d  1¢7M;uÐ 1 @  -=WG?d à1ü4= @  ->XG?d 8 1?É[ @  -?YG?d x 1¡Rsš @  -@ZG?d ¸ 1§qd @  -A[G?d ø 1G´ÈE @  -B\G?d 8!1—üD­ @  -C]G?d x!1¢ÊE9 @  -D^G?d ¸!1‚?GÇ @  -E_G?d ø!1$ÛFñ @  -F`G?d 8"1¹Ÿæ0 @  -GaG?d x"1‡RC3 @  -HbG?d ¸"1§§AÍ @  -IcG?d ø"1a´øì @  -JdG?d 8#1±üt @  -KeG?d x#1„Êu @  -LfG?d ¸#1¤?wn @  -MgG?d ø#1ú<-h @  -NhG?d 8$1ãrÞg @  -OiG?d x$1pE„ @  -PjG?d ¸$1PëGz @  -QkG?d ø$1–øþ[ @  -RlG?d 8%1F°r³ @  -SmG?d x%1s†s' @  -TnG?d ¸%1SsqÙ @  -UoG?d ø%1h I3 @  -VpG?d 8&1õdéò @  -WqG?d x&1Ë©Lñ @  -XrG?d ¸&1ë\N @  -YsG?d ø&1-O÷. @  -ZtG?d 8'1ý{Æ @  -[uG?d x'1È1zR @  -\vG?d ¸'1èÄx¬ @  -]wG?d ø'1¶Ç"ª @  -^xG?d 8(1‚8®· @  -_yG?d x(1Rä @  -`zG?d ¸(1 § @  -a{G?d ø(1æ´©; @  -b|G?d 8)16ü%Ó @  -c}G?d x)1Ê$G @  -d~G?d ¸)1#?&¹ @  -eG?d ø)1hMf  @  -f€G?d 8*1õ ÆÍ @  -gG?d x*1ËÄcÎ @  -h‚G?d ¸*1ë1a0 @  -iƒG?d ø*1-"Ø @  -j„G?d 8+1ýjTù @  -k…G?d x+1È\Um @  -l†G?d ¸+1è©W“ @  -m‡G?d ø+1¶ª • @  -nˆG?d 8,1¯äþš @  -o‰G?d x,1<ˆey @  -pŠG?d ¸,1}g‡ @  -q‹G?d ø,1ÚnÞ¦ @  -rŒG?d 8-1 &RN @  -sG?d x-1?SÚ @  -tŽG?d ¸-1åQ$ @  -uG?d ø-1$¶iÎ @  -vG?d 8.1¹òÉ @  -w‘G?d x.1‡?l  @  -x’G?d ¸.1§Ênò @  -y“G?d ø.1aÙ×Ó @  -z”G?d 8/1±‘[; @  -{•G?d x/1„§Z¯ @  -|–G?d ¸/1¤RXQ @  -}—G?d ø/1úQW @  -~˜G?d 801D¾å @  -™G?d x01‹´4 @  -€šG?d ¸01«A6ë @  -›G?d ø01mRÊ @  -‚œG?d 811½" @  -ƒG?d x11ˆ,¶ @  -„žG?d ¸11¨ÙH @  -…ŸG?d ø11=~ @  -† G?d 821“y¡¿ @  -‡¡G?d x21­´¼ @  -ˆ¢G?d ¸21AB @  -‰£G?d ø21KR¿c @  -ФG?d 831›3‹ @  -‹¥G?d x31®,2 @  -Œ¦G?d ¸31ŽÙ0á @  -§G?d ø31ÐÚjç @  -ލG?d 841É”™è @  -©G?d x41Zø  @  -ªG?d ¸41z õ @  -‘«G?d ø41¼¹Ô @  -’¬G?d 851lV5< @  -“­G?d x51Y`4¨ @  -”®G?d ¸51y•6V @  -•¯G?d ø51BƼ @  -–°G?d 861ß‚®} @  -—±G?d x61áO ~ @  -˜²G?d ¸61Áº € @  -™³G?d ø61©°¡ @  -š´G?d 871×á1ŽÒÚ @  -·ÑG?d x>1° @  -¸ÒG?d ¸>1ê}ï @  -¹ÓG?d ø>1VùÄÎ @  -ºÔG?d 8?1†±H& @  -»ÕG?d x?1³‡I² @  -¼ÖG?duÐ@17 ¸?1“rKL @  -½×G?d ø?1ÍqJ @  -¾ØG?d P@1Ý«v @  -¿ÙG?d @1€Ô— @  -ÀÚG?d Ð@1EI @  -ÁÛG?d A1–1^ @  -ÂÜG?d PA1&€ @  -ÃÝG?d A1ƒL24 @  -ÄÞG?d ÐA1Ý%ê @  -ÅßG?d B1¸ì“à @  -ÆàG?d PB1:}„ @  -ÇáG?d B1¦Ô4> @  -ÈâG?d ÐB1$E#à @  -ÉãG?d C1°÷ @  -ÊäG?d PC12) @  -ËåG?d C1¥L @  -ÌæG?d ÐC1'ÝC @  -ÍçG?d D1â«” @  -ÎèG?d PD1`¼J @  -ÏéG?d D1Q˜2‰ @  -ÐêG?d ÐD1Ó %W @  -ÑëG?d E1GÃ@ @  -ÒìG?d PE1ÅRž @  -ÓíG?d E1R* @  -ÔîG?d ÐE1Бô @  -ÕïG?d F1ôœ @  -ÖðG?d PF1v†‹ß @  -×ñG?d F1ê/;ü @  -ØòG?d ÐF1h¾," @  -ÙóG?d G1üt5 @  -ÚôG?d PG1~åë @  -ÛõG?d G1é· _ @  -ÜöG?d ÐG1k& @  -Ý÷G?d H1ƒKÛD @  -ÞøG?d PH1ÚÌš @  -ßùG?d H1!Ôeé @  -àúG?d ÐH1£Er7 @  -áûG?d I17P  @  -âüG?d€ PI1tY°þ @  .ýG?d I1Jìc @  .þG?d ÐI1€Ûû½ @  .ÿG?d J1‹a“ @  .H?d PJ1 ð„Ç @  .H?d J1[ëkž @  .H?d ÐJ1Ùz|@ @  .H?d K1ƒ- @  .H?d PK1“ó @  . H?d K1Sˆùª @  . H?d ÐK1Ñît @  . H?d L1ÑŒ«N @  . H?d PL1S¼ @  .  H?d L1SÉ @  . H?d ÐL1ƒ—D @  . H?d M1tNš @  . H?d PM1ößD @  . H?d M1¤Äÿ @  .H?d ÐM1&Uèà @  .H?d N1ÇšœÛ @  .H?d PN1E ‹ @  .H?d N1d\ @  .H?d ÐN1•s‚ @  .H?d O1Ïùï @  .H?d PO1Mh1 @  .H?d O1söh @  .H?d ÐO1âá¶ @  .H?d P1:çë1 @  .H?d PP1¸vüï @  .H?d P1êm¶ @  .H?d ÐP1hüh @  .H?d Q1Ž#`U @  . H?d PQ1 ²w‹ @  .!H?d Q1^©˜Ò @  ."H?d ÐQ1Ü8  @  .#H?d R1 @ÂÈ @  .$ H?d PR1"ÑÕ @  .%!H?d R1pÊ:O @  .&"H?d ÐR1ò[-‘ @  .'#H?d S1¨#Pü @  .($H?d PS1*²G" @  .)%H?d S1x©¨{ @  .*&H?d ÐS1ú8¿¥ @  .+'H?d T1ú­úŸ @  .,(H?d PT1x<íA @  .-)H?d T1*' @  ..*H?d ÐT1¨¶Æ @  ./+H?d U1_oVK @  .0,H?d PU1ÝþA• @  .1-H?d U1å®Ì @  .2.H?d ÐU1 t¹ @  .3/H?d V1ì»Í  @  .40H?d PV1n*ÚÔ @  .51H?d V1<15 @  .62H?d ÐV1¾ "S @  .73H?d W1äØ_> @  .84H?d PW1fIHà @  .95H?d W14R§¹ @  .:6H?d ÐW1¶Ã°g @  .;7H?d X1›çŠO @  .<8H?d PX1v‘ @  .=9H?d X1KmrÈ @  .>:H?d ÐX1Éüe @  .?;H?d Y1$¹ @  .@ @  .B>H?d ÐY1Ó?èà @  .C?H?d Z1_°5 @  .D@H?d PZ1݆§ë @  .EAH?d Z1H² @  .FBH?d ÐZ1 _l @  .GCH?d [1Wt" @  .HDH?d P[1Õå5ß @  .IEH?d [1‡þÚ† @  .JFH?d Ð[1oÍX @  .KGH?d \1úˆb @  .LHH?d P\1‡kŸ¼ @  .MIH?d \1Õppå @  .NJH?d Ð\1Wág; @  .OKH?d ]1 8$¶ @  .PLH?d P]1"©3h @  .QMH?d ]1p²Ü1 @  .RNH?d Ð]1ò#Ëï @  .SOH?d ^1ì¿÷ @  .TPH?d P^1‘}¨) @  .UQH?d ^1ÃfGp @  .VRH?d Ð^1A÷P® @  .WSH?d _1-à @  .XTH?d P_1™: @  .YUH?d _1ËÕD @  .uÐ`1ZVH?d Ð_1pSO @  .[ WH?d (`1×pâ @  .\ XH?d h`1Uá < @  .] YH?d ¨`1úåe @  .^ ZH?d è`1…kò» @  ._ [H?d (a1c´–† @  .` \H?d ha1á%X @  .a ]H?d ¨a1³>n @  .b ^H?d èa11¯yß @  .c _H?d (b1M×4 @  .d `H?d hb1ÏF#Å @  .e aH?d ¨b1]Ìœ @  .f bH?d èb1ÌÛB @  .g cH?d (c1E´¦/ @  .h dH?d hc1Ç%±ñ @  .i eH?d ¨c1•>^¨ @  .j fH?d èc1¯Iv @  .k gH?d (d1: L @  .l hH?d hd1•«’ @  .m iH?d ¨d1ǰôË @  .n jH?d èd1E!ã @  .o kH?d (e1²ø ˜ @  .p lH?d he10i·F @  .q mH?d ¨e1brX @  .r nH?d èe1àãOÁ @  .s oH?d (f1,;Ù @  .t pH?d hf1ƒ½, @  .u qH?d ¨f1ѦÃ^ @  .v rH?d èf1S7Ô€ @  .w sH?d (g1 O©í @  .x tH?d hg1‹Þ¾3 @  .y uH?d ¨g1ÙÅQj @  .z vH?d èg1[TF´ @  .{ wH?d (h1vp|œ @  .| xH?d hh1ôákB @  .} yH?d ¨h1¦ú„ @  .~ zH?d èh1$k“Å @  . {H?d (i1åÁ[ @  .€ |H?d hi1 tÖ… @  . }H?d ¨i1_o9Ü @  .‚ ~H?d èi1Ýþ. @  .ƒ H?d (j1L"E @  .„ €H?d hj1Î5› @  .… H?d ¨j1œšÚ @  .† ‚H?d èj1 Í @  .‡ ƒH?d (k1Ds°q @  .ˆ „H?d hk1Æâ§¯ @  .‰ …H?d ¨k1”ùHö @  .Š †H?d èk1h_( @  .‹ ‡H?d (l1ý @  .Œ ˆH?d hl1”l Ì @  . ‰H?d ¨l1Æwâ• @  .Ž ŠH?d èl1DæõK @  . ‹H?d (m1³?¶Æ @  . ŒH?d hm11®¡ @  .‘ H?d ¨m1cµNA @  .’ ŽH?d èm1á$YŸ @  .“ H?d (n1ë-‡ @  .” H?d hn1‚z:Y @  .• ‘H?d ¨n1ÐaÕ @  .– ’H?d èn1RðÂÞ @  .— “H?d (o1ˆ¿³ @  .˜ ”H?d ho1Ѝm @  .™ •H?d ¨o1ØG4 @  .š –H?d èo1Z“Pê @  .› —H?d (p1ý–Zm @  .œ ˜H?d hp1M³ @  . ™H?d ¨p1-¢ê @  .ž šH?d èp1¯µ4 @  .Ÿ ›H?d (q1IRÑ  @  .  œH?d hq1ËÃÆ× @  .¡ H?d ¨q1™Ø)Ž @  .¢ žH?d èq1I>P @  .£ ŸH?d (r1g1s” @  .¤  H?d hr1å dJ @  .¥ ¡H?d ¨r1·»‹ @  .¦ ¢H?d èr15*œÍ @  .§ £H?d (s1oRá  @  .¨ ¤H?d hs1íÃö~ @  .© ¥H?d ¨s1¿Ø' @  .ª ¦H?d ès1=Iù @  .« §H?d (t1=ÜKà @  .¬ ¨H?d ht1¿M\ @  .­ ©H?d ¨t1íV³D @  .® ªH?d èt1oǤš @  .¯ «H?d (u1˜ç @  .° ¬H?d hu1ðÉ @  .± ­H?d ¨u1H” @  .² ®H?d èu1ÊN @  .³ ¯H?d (v1+Ê|V @  .´ °H?d hv1©[kˆ @  .µ ±H?d ¨v1û@„Ñ @  .¶ ²H?d èv1yÑ“ @  .· ³H?d (w1#©îb @  .¸ ´H?d hw1¡8ù¼ @  .¹ µH?d ¨w1ó#å @  .º ¶H?d èw1q²; @  .» ·H?d (x1\–; @  .¼ ¸H?d hx1Þ,Í @  .½ ¹H?d ¨x1ŒÔ @  .¾ ºH?d èx1ÔJ @  .¿ »H?d (y1FU¶å @  .À ¼H?d hy1ÄÄ¡; @  .Á ½H?d ¨y1–ßNb @  . ¾H?d èy1NY¼ @  .à ¿H?d (z1˜fi @  .Ä ÀH?d hz1÷· @  .Å ÁH?d ¨z1Hìùî @  .Æ ÂH?d èz1Ê}î0 @  .Ç ÃH?d ({1“] @  .È ÄH?d h{1”„ƒ @  .É ÅH?d ¨{1@kÚ @  .Ê ÆH?d è{1Â| @  .Ë ÇH?d (|1‹9> @  .Ì ÈH?d h|1@.à @  .Í ÉH?d ¨|1Á¹ @  .Î ÊH?d è|1Ög @  .Ï ËH?d (}1gI•ê @  .Ð ÌH?d h}1娂4 @  .Ñ ÍH?d ¨}1·Ãmm @  .Ò ÎH?d è}15Rz³ @  .Ó ÏH?d (~1Ô« @  .Ô ÐH?d h~1V u @  .Õ ÑH?d ¨~1ö, @  .Ö ÒH?d è~1††áò @  .× ÓH?d (1ÜþœŸ @  .Ø ÔH?d h1^o‹A @  .Ù ÕH?d ¨1uЀ1' td @  .Ú ÖH?d è1·"¯ @  .Û×H?d @€1ÀGûR @  .ÜØH?d €€1à²ù¬ @  .ÝÙH?d À€1ÍÕ @  .ÞÚH?d 1À…= @  .ßÛH?d @1tƒp6 @  .àÜH?d €1TvrÈ @  .áÝH?d À1¤ ˆ± @  .âÞH?d€ ‚1MŽ4Ö @  /ßH?d @‚1Ïb†$ @  /àH?d €‚1ï—„Ú @  /áH?d À‚1Ú¡…N @  /âH?d ƒ1 é ¦ @  /ãH?d @ƒ1Ìú°‡ @  /äH?d €ƒ1ì²y @  /åH?d Àƒ1ÒÂz @  /æH?d „1ËŒäu @  / çH?d @„1•¾s @  / èH?d €„1µz¼ @  / éH?d À„1€L½ @  / êH?d …1P1ñ @  / ëH?d @…1–ˆÐ @  /ìH?d €…1¶âŠ. @  /íH?d À…1%ŽÍ @  /îH?d †1¸Ê±  @  /ïH?d @†1ƒ™‰æ @  /ðH?d €†1£l‹ @  /ñH?d À†1–ZŠŒ @  /òH?d ‡1Fd @  /óH?d @‡1€¿E @  /ôH?d €‡1 ô½» @  /õH?d À‡1ž9¸ @  /öH?d ˆ1ªÆ”¥ @  /÷H?d @ˆ1ôÅΣ @  /øH?d €ˆ1Ô0Ì] @  /ùH?d Àˆ1áÍÉ @  /úH?d ‰11NA! @  /ûH?d @‰1÷]ø @  /üH?d €‰1רúþ @  /ýH?d À‰1UÂF­ @  / þH?d Š1Ȇæl @  /!ÿH?d @Š1ü“óÕ @  /"I?d €Š1Üfñ+ @  /#I?d ÀŠ1éPð¿ @  /$I?d ‹19|W @  /%I?d @‹1ÿ Åv @  /&I?d €‹1ßþLj @  /'I?d À‹1á3b‹ @  /(I?d Œ1ø}‘„ @  /)I?d @Œ1¦~Ë‚ @  /*I?d €Œ1†‹É| @  /+ I?d ÀŒ1³½Èè @  /, I?d 1cõD @  /- I?d @1¥æý! @  /. I?d €1…ÿß @  // I?d À1d< @  /0I?d Ž1‹;Äý @  /1I?d @Ž1°hü @  /2I?d €Ž1þé @  /3I?d ÀŽ1¥«ÿ} @  /4I?d 1uãs• @  /5I?d @1³ðÊ´ @  /6I?d €1“ÈJ @  /7I?d À1­ÈmI @  /8I?d 1Ñû @  /9I?d @1M‹ý @  /:I?d €1mà‰ @  /;I?d À1XÖˆ— @  /<I?d ‘1ˆž @  /=I?d @‘1N½^ @  />I?d €‘1nx¿  @  /?I?d À‘1Ba @  /@I?d ’1ßQ¥  @  /AI?d @’1yµ¤– @  /B I?d €’1Y@¦h @  /C!I?d À’1lv§ü @  /D"I?d “1¼>+ @  /E#I?d @“1z-’5 @  /F$I?d €“1ZØË @  /G%I?d À“1d5È @  /H&I?d ”1}[ÆÇ @  /I'I?d @”1#XœÁ @  /J(I?d €”1­ž? @  /K)I?d À”16›Ÿ« @  /L*I?d •1æÓC @  /M+I?d @•1 Àªb @  /N,I?d €•15¨œ @  /O-I?d À•1“Y3 @  /P.I?d –1“¾ @  /Q/I?d @–15N«T @  /R0I?d €–1»©ª @  /S1I?d À–1 ¨> @  /T2I?d —1ðÅ$Ö @  /U3I?d @—16Ö÷ @  /V4I?d €—1#Ÿ  @  /W5I?d À—1(î:  @  /X6I?d ˜1¶ @  /Y7I?d @˜1Bì @  /Z8I?d €˜1bçîï @  /[9I?d À˜1WÑï{ @  /\:I?d ™1‡™c“ @  /];I?d @™1AŠÚ² @  /^I?d š1~QÄÞ @  /a?I?d @š1(åÐù @  /b@I?d €š1Ò @  /cAI?d Àš1=&Ó“ @  /dBI?d ›1ín_{ @  /eCI?d @›1+}æZ @  /fDI?d €›1 ˆä¤ @  /gEI?d À›15EA§ @  /hFI?d œ1, ²¨ @  /iGI?d @œ1rè® @  /jHI?d €œ1RýêP @  /kII?d Àœ1gËëÄ @  /lJI?d 1·ƒg, @  /mKI?d @1qÞ  @  /nLI?d €1QeÜó @  /oMI?d À1 G @  /pNI?d ž1_MçÑ @  /qOI?d @ž1dß; @  /rPI?d €ž1DëÝÅ @  /sQI?d Àž1qÝÜQ @  /tRI?d Ÿ1¡•P¹ @  /uSI?d @Ÿ1g†é˜ @  /vTI?d €Ÿ1Gsëf @  /wUIuР1?d ÀŸ1y¾Ne @  /xVI?d  1µ @  /yWI?d X 1V¶Ê @  /zXI?d ˜ 1vCÈû @  /{YI?d Ø 1CuÉo @  /|ZI?d ¡1“=E‡ @  /}[I?d X¡1U.ü¦ @  /~\I?d ˜¡1uÛþX @  /]I?d Ø¡1ºàt¨ @  /€^I?d ¢1'¤Ôi @  /_I?d X¢1@Õ_ @  /‚`I?d ˜¢1¡µ×¡ @  /ƒaI?d Ø¢1”ƒÖ5 @  /„bI?d £1DËZÝ @  /…cI?d X£1‚Øãü @  /†dI?d ˜£1¢-á @  /‡eI?d Ø£1œàD @  /ˆfI?d ¤1…®· @  /‰gI?d X¤1Û­í @  /ŠhI?d ˜¤1ûXïö @  /‹iI?d ؤ1Înîb @  /ŒjI?d ¥1&bŠ @  /kI?d X¥1Ø5Û« @  /ŽlI?d ˜¥1øÀÙU @  /mI?d Ø¥1k¬B¶ @  /nI?d ¦1öèâw @  /‘oI?d X¦1Í»Ú @  /’pI?d ˜¦1íNØc @  /“qI?d ئ1ØxÙ÷ @  /”rI?d §10U @  /•sI?d X§1Î#ì> @  /–tI?d ˜§1îÖîÀ @  /—uI?d ا1ÐKà @  /˜vI?d ¨1ääÇÞ @  /™wI?d X¨1ºçØ @  /šxI?d ˜¨1šŸ& @  /›yI?d ب1¯$ž² @  /œzI?d ©1lZ @  /{I?d X©1¹«{ @  /ž|I?d ˜©1™Š©… @  /Ÿ}I?d Ø©1àÖ @  / ~I?d ª1†¤µ @  /¡I?d Xª1ÍÖõ¢ @  /¢€I?d ˜ª1í#÷\ @  /£I?d ت1ØöÈ @  /¤‚I?d «1]z  @  /¥ƒI?d X«1ÎNà @  /¦„I?d ˜«1î»Áÿ @  /§…I?d Ø«1Ðvdü @  /¨†I?d ¬1É8—ó @  /©‡I?d X¬1—;Íõ @  /ªˆI?d ˜¬1·ÎÏ  @  /«‰I?d ج1‚øÎŸ @  /¬ŠI?d ­1R°Bw @  /­‹I?d X­1”£ûV @  /®ŒI?d ˜­1´Vù¨ @  /¯I?d Ø­1':bK @  /°ŽI?d ®1º~Š @  /±I?d X®1-ú` @  /²I?d ˜®1¡Øøž @  /³‘I?d Ø®1”îù  @  /´’I?d ¯1D¦uâ @  /µ“I?d X¯1‚µÌà @  /¶”I?d ˜¯1¢@Î= @  /·•I?d د1œk> @  /¸–I?d °1"S׌ @  /¹—I?d X°1|PŠ @  /º˜I?d ˜°1\¥t @  /»™I?d ذ1i“Žà @  /¼šI?d ±1¹Û @  /½›I?d X±1È») @  /¾œI?d ˜±1_=¹× @  /¿I?d ر1sP @  /ÀžI?d ²1î£× @  /ÁŸI?d X²1Hð¢á @  / I?d ˜²1h  @  /áI?d ز1]3¡‹ @  /Ä¢I?d ³1{-c @  /Å£I?d X³1Kh”B @  /ƤI?d ˜³1k–¼ @  /Ç¥I?d س1UP3¿ @  /ȦI?d ´1LÀ° @  /ɧI?d X´1š¶ @  /ʨI?d ˜´12è˜H @  /Ë©I?d Ø´1Þ™Ü @  /̪I?d µ1×–4 @  /Í«I?d Xµ1…¬ @  /άI?d ˜µ11p®ë @  /Ï­I?d ص1¢5 @  /ЮI?d ¶1?X•É @  /ѯI?d X¶1 ­# @  /Ò°I?d ˜¶1$þ¯Ý @  /Ó±I?d ض1È®I @  /Ô²I?d ·1Á€"¡ @  /Õ³I?d X·1“›€ @  /Ö´I?d ˜·1'f™~ @  /×µI?d Ø·1«<} @  /ضI?d ¸1-T°` @  /Ù·I?d X¸1sWêf @  /Ú¸I?d ˜¸1S¢è˜ @  /Û¹I?d ظ1f”é  @  /ܺI?d ¹1¶Üeä @  /Ý»I?d X¹1pÏÜÅ @  /Þ¼I?d ˜¹1P:Þ; @  /ß½I?d ع1ÒPbh @  /à¾I?d º1O© @  /á¿I?d Xº1 ÖŽ @  /âÀI?d€ ˜º1R 8ž @  0ÁI?d غ1†~q# @  0ÂI?d »1V6ýË @  0ÃI?d X»1Ul¿ @  0ÄI?d ˜»1u™½ù @  0ÅI?d Ø»1…æG€ @  0ÆI?d ¼1œ¨´ @  0ÇI?d X¼1 ±ó @  0ÈI?d ˜¼1,ì³  @  0 ÉI?d ؼ1Ü“It @  0 ÊI?d ½1 ÛÅœ @  0 ËI?d X½1‡P @  0 ÌI?d ˜½1/t…® @  0 ÍI?d ؽ1ß × @  0ÎI?d ¾1BOß @  0ÏI?d X¾1†f @  0ÐI?d ˜¾1:ú„˜ @  0ÑI?d ؾ1Ê…~á @  0ÒI?d ¿1Íò  @  0ÓI?d X¿1—°Å @  0ÔI?d ˜¿19b²; @uÐÀ1  0ÕI?d Ø¿1ÉHB @  0ÖI?d 0À1­í @  0×I?d pÀ1=\l @  0ØI?d °À1©’ @  0ÙI?d ðÀ1íÖäë @  0ÚI?d 0Á1=žh @  0ÛI?d pÁ1>Ä*Ï @  0ÜI?d °Á11(1 @  0ÝI?d ðÁ1îNÒH @  0ÞI?d 0Â1s r‰ @  0ßI?d pÂ1§û5• @  0 àI?d °Â1‡7k @  0!áI?d ðÂ1wqÍ @  0"âI?d 0Ã1§9Aú @  0#ãI?d pÃ1¤c6 @  0$äI?d °Ã1„–È @  0%åI?d ðÃ1téû± @  0&æI?d 0Ä1m§¾ @  0'çI?d pÄ1ý  @  0(èI?d °Ä1Ýã< @  0)éI?d ðÄ1-œõE @  0*êI?d 0Å1ýÔy­ @  0+ëI?d pÅ1þŽ;a @  0,ìI?d °Å1Þ{9Ÿ @  0-íI?d ðÅ1.Ãæ @  0.îI?d 0Æ1³@c' @  0/ïI?d pÆ1ë:W @  00ðI?d °Æ1Ëõ8© @  01ñI?d ðÆ1;ŠÂÐ @  02òI?d 0Ç1ëÂN8 @  03óI?d pÇ1è˜ ô @  04ôI?d °Ç1Èm  @  05õI?d ðÇ18ôs @  06öI?d 0È1 íxn @  07÷I?d pÈ1œ\} @  08øI?d °È1¼©ì @  09ùI?d ðÈ1LÖ…• @  0:úI?d 0É1œž } @  0;ûI?d pÉ1ŸÄK± @  0<üI?d °É1¿1IO @  0=ýI?d ðÉ1ON³6 @  0>þI?d 0Ê1Ò ÷ @  0?ÿI?d pÊ1ˆ/sÓ @  0@J?d °Ê1¨Úq- @  0AJ?d ðÊ1X¥‹T @  0BJ?d 0Ë1ˆí¼ @  0CJ?d pË1‹·Ep @  0DJ?d °Ë1«BGŽ @  0EJ?d ðË1[=½÷ @  0FJ?d 0Ì1BsNø @  0GJ?d pÌ1ÒÂK„ @  0HJ?d °Ì1ò7Iz @  0I J?d ðÌ1H³ @  0J J?d 0Í1Ò?ë @  0K J?d pÍ1ÑZ}' @  0L J?d °Í1ñ¯Ù @  0M J?d ðÍ1Ð…  @  0NJ?d 0Î1œ”%a @  0OJ?d pÎ1ÄÔ| @  0PJ?d °Î1ä!~ï @  0QJ?d ðÎ1^„– @  0RJ?d 0Ï1Ä~ @  0SJ?d pÏ1ÇLJ² @  0TJ?d °Ï1ç¹HL @  0UJ?d ðÏ1Ʋ5 @  0VJ?d 0Ð1©‡ @  0WJ?d pÐ19© û @  0XJ?d °Ð1\  @  0YJ?d ðÐ1é#ó| @  0ZJ?d 0Ñ19k” @  0[J?d pÑ1:1=X @  0\J?d °Ñ1Ä?¦ @  0]J?d ðÑ1ê»Åß @  0^J?d 0Ò1wÿe @  0_J?d pÒ1£" @  0` J?d °Ò1ƒû ü @  0a!J?d ðÒ1s„Ú… @  0b"J?d 0Ó1£ÌVm @  0c#J?d pÓ1 –¡ @  0d$J?d °Ó1€c_ @  0e%J?d ðÓ1pì& @  0f&J?d 0Ô1iR) @  0g'J?d pÔ1ùãU @  0h(J?d °Ô1Ù« @  0i)J?d ðÔ1)iâÒ @  0j*J?d 0Õ1ù!n: @  0k+J?d pÕ1ú{,ö @  0l,J?d °Õ1ÚŽ. @  0m-J?d ðÕ1*ñÔq @  0n.J?d 0Ö1·µt° @  0o/J?d pÖ1ïõ-À @  0p0J?d °Ö1Ï/> @  0q1J?d ðÖ1?ÕG @  0r2J?d 0×1ï7Y¯ @  0s3J?d p×1ìmc @  0t4J?d °×1̘ @  0u5J?d ð×1<çãä @  0v6J?d 0Ø1où @  0w7J?d pØ1˜©j… @  0x8J?d °Ø1¸\h{ @  0y9J?d ðØ1H#’ @  0z:J?d 0Ù1˜kê @  0{;J?d pÙ1›1\& @  0|J?d 0Ú1Öÿ` @  0?J?d pÚ1¿`Î @  0€@J?d °Ú1Ÿúb0 @  0AJ?d ðÚ1o…˜I @  0‚BJ?d 0Û1¿Í¡ @  0ƒCJ?d pÛ1¼—Vm @  0„DJ?d °Û1œbT“ @  0…EJ?d ðÛ1l®ê @  0†FJ?d 0Ü1uS]å @  0‡GJ?d pÜ1åâX™ @  0ˆHJ?d °Ü1ÅZg @  0‰IJ?d ðÜ15h  @  0ŠJJ?d 0Ý1å ,ö @  0‹KJ?d pÝ1æzn: @  0ŒLJ?d °Ý1ÆlÄ @  0MJ?d ðÝ16ð–½ @  0ŽNJ?d 0Þ1«´6| @  0OJ?d pÞ1óôo  @  0PJ?d °Þ1Ómò @  0‘QJ?d ðÞ1#~—‹ @  0’RJ?d 0ß1ó6c @  0“SJ?d pß1ðlY¯ @  0”TJ?d uÐà1/°ß1Й[Q @  0•UJ?d ðß1 æ¡( @  0–VJ?d Hà19BÿÞ @  0—WJ?d ˆà1 —ï‚ @  0˜XJ?d Èà1‰ø\ @  0™YJ?d á1+ ™ @  0šZJ?d Há1©1ŽÍ @  0›[J?d ˆá1Ù! @  0œ\J?d Èá1ŠžÎÿ @  0]J?d â1e4ƒ™ @  0ž^J?d Hâ1祔G @  0Ÿ_J?d ˆâ1‘0Æ{ @  0 `J?d Èâ1¡Ñ¥ @  0¡aJ?d ã1±°ê @  0¢bJ?d Hã13–§4 @  0£cJ?d ˆã1’¨ðØ @  0¤dJ?d Èã19ç @  0¥eJ?d ä1{™ù® @  0¦fJ?d Hä1ùîp @  0§gJ?d ˆä1ËÝþ, @  0¨hJ?d Èä1ILéò @  0©iJ?d å1ëꈽ @  0ªjJ?d Hå1i{Ÿc @  0«kJ?d ˆå1ÈEÈ @  0¬lJ?d Èå1JÔßQ @  0­mJ?d æ1¥~’7 @  0®nJ?d Hæ1'ï…é @  0¯oJ?d ˆæ1ÝËɹ @  0°pJ?d Èæ1_ZÞg @  0±qJ?d ç1ýü¿( @  0²rJ?d Hç1m¨ö @  0³sJ?d ˆç1ÞSÿ @  0´tJ?d Èç1\ÂèÄ @  0µuJ?d è1Ó‰~ @  0¶vJ?d Hè1˜Bž  @  0·wJ?d ˆè1ª—Žü @  0¸xJ?d Èè1(™" @  0¹yJ?d é1Š øm @  0ºzJ?d Hé11ï³ @  0»{J?d ˆé1©¸_ @  0¼|J?d Èé1+ž¯ @  0½}J?d ê1Ä4âç @  0¾~J?d Hê1F¥õ9 @  0¿J?d ˆê1s¡à @  0À€J?d Èê1ñ0÷Ê @  0ÁJ?d ë1S––… @  0‚J?d Hë1Ñ[ @  0ÃJ?d ˆë1p9Ö· @  0Ä„J?d Èë1ò¨Ái @  0Å…J?d ì1™ßÁ @  0ƆJ?d Hì1™È @  0LJJ?d ˆì1)LØC @  0ȈJ?d Èì1«ÝÏ @  0ɉJ?d í1 {®Ò @  0ÊŠJ?d Hí1‹ê¹  @  0Ë‹J?d ˆí1*Ôîà @  0ÌŒJ?d Èí1¨Eù> @  0ÍJ?d î1Gï´X @  0ÎŽJ?d Hî1Å~£† @  0ÏJ?d ˆî1?ZïÖ @  0ÐJ?d Èî1½Ëø @  0Ñ‘J?d ï1m™G @  0Ò’J?d Hï1üŽ™ @  0Ó“J?d ˆï1<ÂÙu @  0Ô”J?d Èï1¾SΫ @  0Õ•J?d ð1rcŸ¾ @  0Ö–J?d Hð1ðòˆ` @  0×—J?d ˆð1Â'˜< @  0ؘJ?d Èð1@¶â @  0Ù™J?d ñ1âî­ @  0ÚšJ?d Hñ1`ùs @  0Û›J?d ˆñ1Á¿®Ÿ @  0ÜœJ?d Èñ1C.¹A @  0ÝJ?d ò1¬„ô' @  0ÞžJ?d Hò1.ãù @  0ߟJ?d ˆò1X€±Å @  0à J?d Èò1Ú¦ @  0á¡J?d ó1x·ÇT @  0â¢J?d€ Hó1ŽåÌ, @  1£J?d ˆó1ΚÓé @  1¤J?d Èó1L Ä7 @  1¥J?d ô1ââ!r @  1¦J?d Hô1`s6¬ @  1§J?d ˆô1œyŠ @  1¨J?d Èô1…nT @  1©J?d õ1r‘Pa @  1ªJ?d Hõ1ðG¿ @  1 «J?d ˆõ1”wë¾ @  1 ¬J?d Èõ1æü` @  1 ­J?d ö1<Jë @  1 ®J?d Hö1¾”]5 @  1 ¯J?d ˆö1'£pÿ @  1°J?d Èö1¥2g! @  1±J?d ÷1d‡gô @  1²J?d H÷1æp* @  1³J?d ˆ÷1‚aÜ+ @  1´J?d È÷1ðËõ @  1µJ?d ø1ƒ¨Q¢ @  1¶J?d Hø19F| @  1·J?d ˆø1ý^ Z @  1¸J?d Èø1Ï„ @  1¹J?d ù1Û ± @  1ºJ?d Hù1‘J7o @  1»J?d ˆù1õ=›n @  1¼J?d Èù1w¬Œ° @  1½J?d ú1]O:; @  1¾J?d Hú1ßÞ-å @  1¿J?d ˆú1+,â @  1ÀJ?d Èú1©Ÿ;< @  1ÁJ?d û1y,Y @  1 ÂJ?d Hû1û½ ‡ @  1!ÃJ?d ˆû1ŸÊ§† @  1"ÄJ?d Èû1[°X @  1#ÅJ?d ü1³²U @  1$ÆJ?d Hü11#Bà @  1%ÇJ?d ˆü1ÍD å @  1&ÈJ?d Èü1OÕ; @  1'ÉJ?d ý1#Á$ @  1(ÊJ?d Hý1¡P3Ð @  1)ËJ?d ˆý1Å'ŸÑ @  1*ÌJ?d Èý1G¶ˆ @  1+ÍJ?d þ1mU>„ @  1,ÎJ?d Hþ1ïÄ)Z @  1-ÏJ?d ˆþ1vó @  1.ÐJ?d Èþ1ôbN @  1/ÑJ?d ÿ15×› @  10ÒJ?d Hÿ1·FE @  11ÓJ?d ˆÿ1Ó1¨D @  12uÐ2ÔJ?d Èÿ1Q ¿š @  13ÕJ?d 2âöáÇ @  14ÖJ?d `2`gö @  15×J?d  2œ¹? @  16ØJ?d à2‘®á @  17ÙJ?d 2r…Ô @  18ÚJ?d `2ð‡  @  19ÛJ?d  2”c+  @  1:ÜJ?d à2ò<Õ @  1;ÝJ?d 2<Š^ @  1<ÞJ?d `2¾€€ @  1=ßJ?d  2º‰– @  1>àJ?d à28‘žH @  1?áJ?d 2F%¿¿ @  1@âJ?d `2Ä´¨a @  1AãJ?d  2 Ã` @  1BäJ?d à2"R¾ @  1CåJ?d 2Œ»öû @  1DæJ?d `2*á% @  1EçJ?d  2òM® @  1FèJ?d à2pܹÝ @  1GéJ?d 2ȇè @  1HêJ?d `2žY6 @  1IëJ?d  2ú.<7 @  1JìJ?d à2x¿+é @  1KíJ?d 2R\b @  1LîJ?d `2ÐÍŠ¼ @  1MïJ?d  2Iú§v @  1NðJ?d à2Ëk°¨ @  1OñJ?d 2 Þ°} @  1PòJ?d `2ˆO§£ @  1QóJ?d  2ì8 ¢ @  1RôJ?d à2n©| @  1SõJ?d 2íñ†+ @  1TöJ?d `2o`‘õ @  1U÷J?d  2“ÞÓ @  1VøJ?d à2–É  @  1WùJ?d 2}‚÷8 @  1XúJ?d ` 2ÿàæ @  1YûJ?d   2›dLç @  1ZüJ?d à 2õ[9 @  1[ýJ?d 23í² @  1\þJ?d ` 2±‡úl @  1]ÿJ?d   2'öúõ @  1^K?d à 2¥gí+ @  1_K?d 2uÔÊN @  1`K?d ` 2÷EÝ @  1aK?d   2“2q‘ @  1bK?d à 2£fO @  1cK?d 2¿Jƒ  @  1dK?d ` 2=Û”Ô @  1eK?d   2Á¼Ûò @  1fK?d à 2C-Ì, @  1g K?d 2/9ò @  1h K?d ` 2­¨åÇ @  1i K?d   2ÉßIÆ @  1j K?d à 2KN^ @  1k K?d 2a­è“ @  1lK?d `2ã<ÿM @  1mK?d  2z Ò‡ @  1nK?d à2øšÅY @  1oK?d 29/ÅŒ @  1pK?d `2»¾ÒR @  1qK?d  2ßÉ~S @  1rK?d à2]Xi @  1sK?d 2T!Ãu @  1tK?d `2Ö°Ô« @  1uK?d  2*×› @  1vK?d à2¨FŒS @  1wK?d 2ÄR²f @  1xK?d `2FÃ¥¸ @  1yK?d  2"´ ¹ @  1zK?d à2 %g @  1{K?d 2ŠÆ¨ì @  1|K?d `2W¿2 @  1}K?d  2 ׫$ @  1~ K?d à2ŽF¼ú @  1!K?d 2¤­< @  1€"K?d `2‘5ºâ @  1#K?d  2õBã @  1‚$K?d à2wÓ= @  1ƒ%K?d 2Ù:äx @  1„&K?d `2[«ó¦ @  1…'K?d  2§Ì¼€ @  1†(K?d à2%]«^ @  1‡)K?d 2II•k @  1ˆ*K?d `2ËØ‚µ @  1‰+K?d  2¯¯.´ @  1Š,K?d à2->9j @  1‹-K?d 2Ýá @  1Œ.K?d `2…L˜? @  1/K?d  2{µõ @  1Ž0K?d à2žê¢+ @  11K?d 2__¢þ @  12K?d `2Ýε  @  1‘3K?d  2¹¹! @  1’4K?d à2;(ÿ @  1“5K?d 2¸p”¨ @  1”6K?d `2:áƒv @  1•7K?d  2ƆÌP @  1–8K?d à2DÛŽ @  1—9K?d 2(å» @  1˜:K?d `2ª’òe @  1™;K?d  2Îå^d @  1šK?d `2äèï @  1?K?d  2Öéè @  1ž@K?d à2’Gþ6 @  1ŸAK?d 2BôÙS @  1 BK?d `2ÀeÎ @  1¡CK?d  2¤bŒ @  1¢DK?d à2&ƒuR @  1£EK?d 2ˆj @  1¤FK?d `2 û‡É @  1¥GK?d  2öœÈï @  1¦HK?d à2t ß1 @  1§IK?d 2á @  1¨JK?d `2šˆöÚ @  1©KK?d  2þÿZÛ @  1ªLK?d à2|nM @  1«MK?d 2VûŽ @  1¬NK?d `2ÔìP @  1­OK?d  2M+Áš @  1®PK?d à2ϺÖD @  1¯QK?d 2Ö‘ @  1°RK?d `2ŒžÁO @  1±SK?d  2èémNuÐ 2 @  1²TK?d à2jxz @  1³UK?d 8 2¬Ô²¼ @  1´VK?d x 2.E¥b @  1µWK?d ¸ 2Ò"êD @  1¶XK?d ø 2P³ýš @  1·YK?d 8!2<§Ã¯ @  1¸ZK?d x!2¾6Ôq @  1¹[K?d ¸!2ÚAxp @  1º\K?d ø!2XÐo® @  1»]K?d 8"2r3Ù% @  1¼^K?d x"2ð¢Îû @  1½_K?d ¸"2ô"Úí @  1¾`K?d ø"2v³Í3 @  1¿aK?d 8#2ìÄ @  1ÀbK?d x#2Š–û @  1ÁcK?d ¸#2îáW @  1ÂdK?d ø#2lp@Å @  1ÃeK?d 8$2™¥€ @  1ÄfK?d x$2@²^ @  1ÅgK?d ¸$2¼oýx @  1ÆhK?d ø$2>þê¦ @  1ÇiK?d 8%2RêÔ“ @  1ÈjK?d x%2Ð{ÃM @  1ÉkK?d ¸%2´ oL @  1ÊlK?d ø%26x’ @  1ËmK?d 8&2~Î @  1ÌnK?d x&2žïÙÇ @  1ÍoK?d ¸&2Øô  @  1ÎpK?d ø&2…IãÓ @  1ÏqK?d 8'2Düã @  1ÐrK?d x'2ÆmôØ @  1ÑsK?d ¸'2¢XÙ @  1ÒtK?d ø'2 ‹O @  1ÓuK?d 8(2£ÓÕP @  1ÔvK?d x(2!BÂŽ @  1ÕwK?d ¸(2Ý%¨ @  1ÖxK?d ø(2_´šv @  1×yK?d 8)23 ¤C @  1ØzK?d x)2±1³ @  1Ù{K?d ¸)2ÕFœ @  1Ú|K?d ø)2W×B @  1Û}K?d 8*2}4¾É @  1Ü~K?d x*2ÿ¥© @  1ÝK?d ¸*2³ü‚ @  1Þ€K?d ø*2”"ë\ @  1ßK?d 8+2D‘Ì9 @  1à‚K?d x+2ÆÛç @  1áƒK?d ¸+2¢wwæ @  1â„K?d€ ø+2á¡—8 @  2…K?d 8,2® :T @  2†K?d x,2,˜-Š @  2‡K?d ¸,2¶™A @  2ˆK?d ø,2—'ŽŸ @  2‰K?d 8-25ïÐ @  2ŠK?d x-2·ø @  2‹K?d ¸-2Õ u @  2ŒK?d ø-2ŸD« @  2 K?d 8.2pîQÍ @  2 ŽK?d x.2òF @  2 K?d ¸.2®4 @  2 K?d ø.2,‡ê @  2 ‘K?d 8/2Ž6æ¥ @  2’K?d x/2 §ñ{ @  2“K?d ¸/2 Ã<à @  2”K?d ø/2‰R+> @  2•K?d 802Ebz+ @  2–K?d x02Çómõ @  2—K?d ¸02þÝÙ> @  2˜K?d ø02|LÎà @  2™K?d 812Þ꯯ @  2šK?d x12\{¸q @  2›K?d ¸12ö¾K  @  2œK?d ø12t/\Ô @  2K?d 822›…² @  2žK?d x22l @  2ŸK?d ¸22ØÝé— @  2 K?d ø22ZLþI @  2¡K?d 832øêŸ @  2¢K?d x32z{ˆØ @  2£K?d ¸32lbó @  2 ¤K?d ø32îˆu- @  2!¥K?d 842…(k… @  2"¦K?d x42¹|[ @  2#§K?d ¸42>—È @  2$¨K?d ø42¼ßN @  2%©K?d 852 ¾ @  2&ªK?d x52œ1©ß @  2'«K?d ¸526ôZ¤ @  2(¬K?d ø52´eMz @  2)­K?d 862[Ï @  2*®K?d x62Ù^ @  2+¯K?d ¸62… Áå @  2,°K?d ø62±Ö; @  2-±K?d 872¥·t @  2.²K?d x72'† ª @  2/³K?d ¸72 âm1 @  20´K?d ø72¢szï @  21µK?d 882äbU @  22¶K?d x82fó ‹ @  23·K?d ¸82_ݸ@ @  24¸K?d ø82ÝL¯ž @  25¹K?d 892êÎÑ @  26ºK?d x92ý{Ù @  27»K?d ¸92W¾*t @  28¼K?d ø92Õ/=ª @  29½K?d 8:2:…pÌ @  2:¾K?d x:2¸g @  2;¿K?d ¸:2‰ø @  2<ÀK?d ø:2 Š& @  2=ÁK?d 8;2©ºëi @  2>ÂK?d x;2++ü· @  2?ÃK?d ¸;2“N @  2@ÄK?d ø;2ßÐ @  2AÅK?d 8<2zx @  2BÆK?d x<2øî¦ @  2CÇK?d ¸<2ÁÀºm @  2DÈK?d ø<2CQ­³ @  2EÉK?d 8=2á÷Ìü @  2FÊK?d x=2cfÛ" @  2GËK?d ¸=2É£(Y @  2HÌK?d ø=2K2?‡ @  2IÍK?d 8>2¤˜rá @  2JÎK?d x>2& e? @  2KÏK?d ¸>2zw³ @  2LÐK?d ø>2øæ¤Æ @  2MÑK?d 8?2Z@ʼn @  2NÒK?d x?2ØÑÒW @  2OÓK?duÐ@27 ¸?2ßµÌ @  2PÔK?d ø?2]$ @  2QÕK?d P@2ìf_‰ @  2RÖK?d @2Ì“]w @  2S×K?d Ð@2WÙüœ @  2TØK?d A2‡‘pt @  2UÙK?d PA2wîŠ  @  2VÚK?d A2Wˆó @  2WÛK?d ÐA2_ºn¨ @  2XÜK?d B2ÂþÎi @  2YÝK?d PB224 @  2ZÞK?d B2t6î @  2[ßK?d ÐB2qÙÌ5 @  2\àK?d C2¡‘@Ý @  2]áK?d PC2Q @  2^âK?d C2q¸Z @  2_ãK?d ÐC2ÅGQ @  2`äK?d D2ÜS´^ @  2aåK?d PD2,,N' @  2bæK?d D2 ÙLÙ @  2cçK?d ÐD2—“í2 @  2dèK?d E2GÛaÚ @  2eéK?d PE2·¤›£ @  2fêK?d E2—Q™] @  2gëK?d ÐE2Ÿð @  2hìK?d F2´ßÇ @  2iíK?d PF2òË%¾ @  2jîK?d F2Ò>'@ @  2kïK?d ÐF2,$äG @  2lðK?d G2ülh¯ @  2mñK?d PG2 ’Ö @  2nòK?d G2,æ( @  2oóK?d ÐG2‰æH“ @  2pôK?d H2½ÄŽ @  2qõK?d PH2Mf>÷ @  2röK?d H2m“<  @  2s÷K?d ÐH2öÙâ @  2tøK?d I2&‘  @  2uùK?d PI2Öîës @  2vúK?d I2öé @  2wûK?d ÐI2þºÖ @  2xüK?d J2cþ¯ @  2yýK?d PJ2“Un @  2zþK?d J2³tW @  2{ÿK?d ÐJ2~!†R @  2|L?d K2®i º @  2}L?d PK2^ðà @  2~L?d K2~ãò= @  2L?d ÐK2‡´;• @  2€L?d L2žúÈš @  2L?d PL2n…2ã @  2‚L?d L2Np0 @  2ƒL?d ÐL2Õ:‘ö @  2„L?d M2r @  2… L?d PM2õ çg @  2† L?d M2Õøå™ @  2‡ L?d ÐM2ÝY @  2ˆ L?d N2@£ @  2‰ L?d PN2°bYz @  2ŠL?d N2—[„ @  2‹L?d ÐN2n˜ƒ @  2ŒL?d O2¾Åk @  2L?d PO2Nºî @  2ŽL?d O2nOìì @  2L?d ÐO2ËO4W @  2L?d P2u‘ˆå @  2‘L?d PP2…îrœ @  2’L?d P2¥pb @  2“L?d ÐP2>Qщ @  2”L?d Q2î]a @  2•L?d PQ2f§ @  2–L?d Q2>“¥æ @  2—L?d ÐQ262C½ @  2˜L?d R2«vã| @  2™L?d PR2[  @  2šL?d R2{üû @  2›L?d ÐR2Qá  @  2œ L?d S2ÈmÈ @  2!L?d PS28f—± @  2ž"L?d S2“•O @  2Ÿ#L?d ÐS2¬•jD @  2 $L?d T2µÛ™K @  2¡%L?d PT2E¤c2 @  2¢&L?d T2eQaÌ @  2£'L?d ÐT2þÀ' @  2¤(L?d U2.SLÏ @  2¥)L?d PU2Þ,¶¶ @  2¦*L?d U2þÙ´H @  2§+L?d ÐU2öxR @  2¨,L?d V2k<òÒ @  2©-L?d PV2›C« @  2ª.L?d V2»¶ U @  2«/L?d ÐV2E¬ÉR @  2¬0L?d W2•äEº @  2­1L?d PW2e›¿Ã @  2®2L?d W2En½= @  2¯3L?d ÐW2àne† @  2°4L?d X2Ô‘é› @  2±5L?d PX2$îâ @  2²6L?d X2 @  2³7L?d ÐX2ŸQ°÷ @  2´8L?d Y2O< @  2µ9L?d PY2¿fÆf @  2¶:L?d Y2Ÿ“Ę @  2·;L?d ÐY2—2"à @  2¸L?d Z2Úüz… @  2»?L?d ÐZ2I•O @  2¼@L?d [2™I§ @  2½AL?d P[2i6ãÞ @  2¾BL?d [2IÃá  @  2¿CL?d Ð[2S¹ @  2ÀDL?d \2JŒë¶ @  2ÁEL?d P\2ºóÏ @  2ÂFL?d \2š1 @  2ÃGL?d Ð\2L²Ú @  2ÄHL?d ]2Ñ>2 @  2ÅIL?d P]2!{ÄK @  2ÆJL?d ]2ŽÆµ @  2ÇKL?d Ð]2 / î @  2ÈLL?d ^2”k€/ @  2ÉML?d P^2dzV @  2ÊNL?d ^2Dáx¨ @  2ËOL?d Ð^2ºû»¯ @  2ÌPL?d _2j³7G @  2ÍQL?d P_2šÌÍ> @  2ÎRL?d _2º9ÏÀ @  2uÐ`2ÏSL?d Ð_29{ @  2ÐTL?d (`2¡Á¢ã @  2ÑUL?d h`2Q¾Xš @  2ÒVL?d ¨`2qKZd @  2ÓWL?d è`2êû @  2ÔXL?d (a2:Iwg @  2ÕYL?d ha2Ê6 @  2ÖZL?d ¨a2êÃà @  2×[L?d èa2âbi» @  2Ø\L?d (b2&Éz @  2Ù]L?d hb2Y3 @  2Ú^L?d ¨b2¯¬1ý @  2Û_L?d èb2ÌË& @  2Ü`L?d (c2IGÎ @  2ÝaL?d hc2ì6½· @  2ÞbL?d ¨c2ÌÿI @  2ßcL?d èc2xÅ@B @  2àdL?d (d2a‹³M @  2áeL?d hd2‘ôI4 @  2âfL?d€ ¨d2ÅÂWl @  3gL?d èd2¿É¾® @  3hL?d (e2o2F @  3iL?d he2Z·3Ò @  3jL?d ¨e2zB1, @  3kL?d èe2¼Qˆ  @  3lL?d (f2!(Ì @  3mL?d hf2ØÏ @  3nL?d ¨f2?-1 @  3 oL?d èf2~·Û @  3 pL?d (g2Ô6;3 @  3 qL?d hg2á:§ @  3 rL?d ¨g2Áõ8Y @  3 sL?d èg2æx @  3tL?d (h23 e @  3uL?d hh2 u–† @  3vL?d ¨h2€€”x @  3wL?d èh2ÞƒÎ~ @  3xL?d (i2ËB– @  3yL?d hi2;ýC @  3zL?d ¨i2Aü @  3{L?d èi2ÝøÝ @  3|L?d (j2@_X @  3}L?d hj2~’ý @  3~L?d ¨j2^gÿá @  3L?d èj2¿T @  3€L?d (k2Å]3¼ @  3L?d hk2ðk2( @  3‚L?d ¨k2О0Ö @  3ƒL?d èk2‰÷ @  3„L?d (l2Ãzø @  3…L?d hl2©Æ« @  3 †L?d ¨l2­\ÄU @  3!‡L?d èl2ó_žS @  3"ˆL?d (m2#» @  3#‰L?d hm2!/ @  3$ŠL?d ¨m26ÔÑ @  3%‹L?d èm2ðǨð @  3&ŒL?d (n2mƒ1 @  3'L?d hn2SN­2 @  3(ŽL?d ¨n2s»¯Ì @  3)L?d èn2Hè—& @  3*L?d (o2˜ Î @  3+‘L?d ho2­–Z @  3,’L?d ¨o2c¤ @  3-“L?d èo2Kp¡… @  3.”L?d (p2õ®7 @  3/•L?d hp2f†Ô @  30–L?d ¨p2F7„* @  31—L?d èp24Þ, @  32˜L?d (q2È|RÄ @  33™L?d hq2ýJSP @  34šL?d ¨q2Ý¿Q® @  35›L?d èq2¬è @  36œL?d (r2†èHN @  37L?d hr2¸%íM @  38žL?d ¨r2˜Ðï³ @  39ŸL?d èr2>4î… @  3: L?d (s2î|bm @  3;¡L?d hs2ÛJcù @  3<¢L?d ¨s2û¿a @  3=£L?d ès2=¬Ø& @  3>¤L?d (t2$â+) @  3?¥L?d ht2‘è @  3@¦L?d ¨t2(z“ @  3A§L?d èt2vyÉ @  3B¨L?d (u2¦1Eø @  3C©L?d hu2“Dl @  3DªL?d ¨u2³òF’ @  3E«L?d èu2uáÿ³ @  3F¬L?d (v2è¥_r @  3G­L?d hv2Öhúq @  3H®L?d ¨v2öø @  3I¯L?d èv2ÍÎÀe @  3J°L?d (w2†L @  3K±L?d hw2(°M @  3L²L?d ¨w2EOç @  3M³L?d èw2ÎVöÆ @  3N´L?d (x2ú©zÛ @  3OµL?d hx2iÅá8 @  3P¶L?d ¨x2I0ãÆ @  3Q·L?d èx23¹À @  3R¸L?d (y2Ç{5( @  3S¹L?d hy2òM4¼ @  3TºL?d ¨y2Ò¸6B @  3U»L?d èy2«c @  3V¼L?d (z2‰ï/¢ @  3W½L?d hz2·"Š¡ @  3X¾L?d ¨z2—׈_ @  3Y¿L?d èz2Ácœx @  3ZÀL?d ({2+ @  3[ÁL?d h{2$ @  3\ÂL?d ¨{2èú @  3]ÃL?d è{2ÂûªÛ @  3^ÄL?d (|2ÛµYÔ @  3_ÅL?d h|2Yßå‡ @  3`ÆL?d ¨|2y*çy @  3aÇL?d è|2')½ @  3bÈL?d (}2÷a1— @  3cÉL?d h}2ÂW0 @  3dÊL?d ¨}2â¢2ý @  3eËL?d è}2$±‹Ü @  3fÌL?d (~2¹õ+ @  3gÍL?d h~2‡8Ž @  3hÎL?d ¨~2§ÍŒà @  3iÏL?d è~2œž´  @  3jÐL?d (2LÖ8â @  3kÑL?d h2yà9v @  3lÒL?d ¨2uЀ2'Y;ˆ @  3mÓL?d è2Ÿ‚© @  3nÔL?d @€2ñ¸`Ý @  3oÕL?d €€2À°î @  3pÖL?d À€2B!ùÀ @  3q×L?d 2Nû8ð @  3rØL?d @2Ìj/. @  3sÙL?d €2[8;š @  3tÚL?d À2Ù©,D @  3uÛL?d ‚2o"z @  3vÜL?d @‚2‚þ5¤ @  3wÝL?d €‚2W…‡ @  3xÞL?d À‚2œÆ’Y @  3yßL?d ƒ2hûY @  3zàL?d @ƒ2êj‡ @  3{áL?d €ƒ2}8 3 @  3|âL?d Àƒ2ÿ©í @  3}ãL?d „2¢eA @  3~äL?d @„2 ôVà @  3åL?d €„2M«É @  3€æL?d À„2Ï:ÞÍ @  3çL?d …2Ãàý @  3‚èL?d @…2Aq# @  3ƒéL?d €…2Ö#— @  3„êL?d À…2T² I @  3…ëL?d †2tw @  3†ìL?d @†2å© @  3‡íL?d €†2“L¢Š @  3ˆîL?d À†2ݵT @  3‰ïL?d ‡2xWˆ @  3ŠðL?d @‡2úÆV @  3‹ñL?d €‡2m”â @  3ŒòL?d À‡2ï< @  3óL?d ˆ2Ÿx Þ @  3ŽôL?d @ˆ2é7 @  3õL?d €ˆ2,á¹Ã @  3öL?d Àˆ2®p® @  3‘÷L?d ‰2¢ªo- @  3’øL?d @‰2 ;xó @  3“ùL?d €‰2·ilG @  3”úL?d À‰25ø{™ @  3•ûL?d Š2ì>u§ @  3–üL?d @Š2n¯by @  3—ýL?d €Š2òÒZ @  3˜þL?d ÀŠ2p—Å„ @  3™ÿL?d ‹2[K  @  3šM?d @‹2”Ê\Õ @  3›M?d €‹2˜Ha @  3œM?d À‹2 _¿ @  3M?d Œ2ÜÅO @  3žM?d @Œ2^T‘ @  3ŸM?d €Œ2~Z¼â @  3 M?d ÀŒ2üË«< @  3¡M?d 2ðj  @  3¢M?d @2r€}Ò @  3£ M?d €2åÒif @  3¤ M?d À2gC~¸ @  3¥ M?d Ž2¾…p† @  3¦ M?d @Ž2<gX @  3§ M?d €Ž2 ½×{ @  3¨M?d ÀŽ2",À¥ @  3©M?d 2K¦cy @  3ªM?d @2É7t§ @  3«M?d €2^e` @  3¬M?d À2ÜôwÍ @  3­M?d 2&¨e€ @  3®M?d @2¤9r^ @  3¯M?d €2•1ü @  3°M?d À2 ëC @  3±M?d ‘2z*s @  3²M?d @‘2™ë=­ @  3³M?d €‘2¹) @  3´M?d À‘2Œ(>Ç @  3µM?d ’2Uî0ù @  3¶M?d @’2×'' @  3·M?d €’2KÖ— @  3¸M?d À’2ÉG€Ú @  3¹M?d “2=zÚ @  3º M?d @“2¿ë  @  3»!M?d €“2(¹° @  3¼"M?d À“2ª(n @  3½#M?d ”2÷äSž @  3¾$M?d @”2uuD@ @  3¿%M?d €”2û|ë¡ @  3À&M?d À”2yíü @  3Á'M?d •2u7=O @  3Â(M?d @•2÷¦*‘ @  3Ã)M?d €•2`ô>% @  3Ä*M?d À•2âe)û @  3Å+M?d –2;£'Å @  3Æ,M?d @–2¹20 @  3Ç-M?d €–2%›€8 @  3È.M?d À–2§ —æ @  3É/M?d —2΀4: @  3Ê0M?d @—2L#ä @  3Ë1M?d €—2ÛC7P @  3Ì2M?d À—2YÒ Ž @  3Í3M?d ˜2)¯l @  3Î4M?d @˜2«>² @  3Ï5M?d €˜2š6›q @  3Ð6M?d À˜2§Œ¯ @  3Ñ7M?d ™2}MŸ @  3Ò8M?d @™2–ìZA @  3Ó9M?d €™2¾Nõ @  3Ô:M?d À™2ƒ/Y+ @  3Õ;M?d š2ZéW @  3ÖM?d Àš2Æ@ç6 @  3Ù?M?d ›2Â-h' @  3Ú@M?d @›2@¼ù @  3ÛAM?d €›2×îkM @  3ÜBM?d À›2U|“ @  3ÝCM?d œ2³!c @  3ÞDM?d @œ2Š"6½ @  3ßEM?d €œ2ª,ŸÎ @  3àFM?d Àœ2(½ˆ @  3áGM?d 2$gI  @  3âHM?d€ @2  öG @  4IM?d €2V³ªÚ @  4JM?d À2Ô"½ @  4KM?d ž2È­H× @  4LM?d @ž2J<_  @  4MM?d €ž2'°P @  4NM?d Àž2š¶§Ž @  4OM?d Ÿ2=Ž[( @  4PM?d @Ÿ2¿Lö @  4 QM?d €Ÿ2í£¯ @  4 RMuР2?d ÀŸ2o•´q @  4 SM?d  2ŸU? @  4 TM?d X 2Ä(Û @  4 UM?d ˜ 2OßÇ‚ @  4VM?d Ø 2ÍNÐ\ @  4WM?d ¡2¢‡pö @  4XM?d X¡2 g( @  4YM?d ˜¡2r ˆq @  4ZM?d Ø¡2𜟯 @  4[M?d ¢2ìj| @  4\M?d X¢2n‚}¢ @  4]M?d ˜¢2<™’û @  4^M?d Ø¢2¾…% @  4_M?d £2„‡@_ @  4`M?d X£2W @  4aM?d ˜£2T ¸Ø @  4bM?d Ø£2Öœ¯ @  4cM?d ¤2N  @  4dM?d X¤2̈Å @  4eM?d ˜¤2ž“ñœ @  4fM?d ؤ2æB @  4gM?d ¥2bÍaX @  4 hM?d X¥2à\v† @  4!iM?d ˜¥2²G™ß @  4"jM?d Ø¥20ÖŽ @  4#kM?d ¦2,Y{Ò @  4$lM?d X¦2®Èl  @  4%mM?d ˜¦2üÓƒU @  4&nM?d ئ2~B”‹ @  4'oM?d §2Ùzh- @  4(pM?d X§2[ëó @  4)qM?d ˜§2 ðª @  4*rM?d ا2‹a‡t @  4+sM?d ¨2>U^{ @  4,tM?d X¨2¼ÄI¥ @  4-uM?d ˜¨2îߦü @  4.vM?d ب2lN±" @  4/wM?d ©2‡ˆ @  40xM?d X©2V @  41yM?d ˜©2Ó é @  42zM?d Ø©2QœþÑ @  43{M?d ª2M  @  44|M?d Xª2Ï‚Ü @  45}M?d ˜ª2™ó… @  46~M?d ت2ä[ @  47M?d «2È`¢ @  48€M?d X«2J€w| @  49M?d ˜«2›˜% @  4:‚M?d Ø«2š û @  4;ƒM?d ¬2)æ @  4<„M?d X¬2€>8 @  4=…M?d ˜¬2ÒÑa @  4>†M?d ج2P”Æ¿ @  4?‡M?d ­2€\G7 @  4@ˆM?d X­2ÍPé @  4A‰M?d ˜­2PÖ¿° @  4BŠM?d Ø­2ÒG¨n @  4C‹M?d ®2ÎÈ]½ @  4DŒM?d X®2LYJc @  4EM?d ˜®2B¥: @  4FŽM?d Ø®2œÓ²ä @  4GM?d ¯2;ëNB @  4HM?d X¯2¹zYœ @  4I‘M?d ˜¯2ëa¶Å @  4J’M?d د2ið¡ @  4K“M?d °2VåH» @  4L”M?d X°2Ôt_e @  4M•M?d ˜°2†o°< @  4N–M?d ذ2þ§â @  4O—M?d ±2k7H @  4P˜M?d X±2首 @  4Q™M?d ˜±2»½ÿÏ @  4RšM?d ر29,è @  4S›M?d ²2%£Â @  4TœM?d X²2§2  @  4UM?d ˜²2õ)åE @  4VžM?d ز2w¸ò› @  4WŸM?d ³2M77á @  4X M?d X³2Ϧ ? @  4Y¡M?d ˜³2½Ïf @  4Z¢M?d س2,ظ @  4[£M?d ´2‡©~¥ @  4\¤M?d X´28i{ @  4]¥M?d ˜´2W#†" @  4^¦M?d Ø´2Õ²‘ü @  4_§M?d µ2«}æ @  4`¨M?d Xµ2)ì8 @  4a©M?d ˜µ2{÷îa @  4bªM?d ص2ùfù¿ @  4c«M?d ¶2åé l @  4d¬M?d X¶2gx² @  4e­M?d ˜¶25côë @  4f®M?d ض2·òã5 @  4g¯M?d ·2Ê“ @  4h°M?d X·2’[M @  4i±M?d ˜·2À@ç @  4j²M?d Ø·2BÑðÊ @  4k³M?d ¸2÷å)Å @  4l´M?d X¸2ut> @  4mµM?d ˜¸2'oÑB @  4n¶M?d ظ2¥þÆœ @  4o·M?d ¹2Ê7f6 @  4p¸M?d X¹2H¦qè @  4q¹M?d ˜¹2½ž± @  4rºM?d ع2˜,‰o @  4s»M?d º2„£|¼ @  4t¼M?d Xº22kb @  4u½M?d ˜º2T)„; @  4v¾M?d غ2Ö¸“å @  4w¿M?d »2gCŽ @  4xÀM?d X»2žöTP @  4yÁM?d ˜»2Ìí»  @  4zÂM?d Ø»2N|¬× @  4{ÃM?d ¼2Öù Ê @  4|ÄM?d X¼2Th @  4}ÅM?d ˜¼2sòM @  4~ÆM?d ؼ2„âå“ @  4ÇM?d ½2·|T* @  4€ÈM?d X½25íCô @  4ÉM?d ˜½2gö¬­ @  4‚ÊM?d ؽ2åg»s @  4ƒËM?d ¾2ùèN  @  4„ÌM?d X¾2{yY~ @  4…ÍM?d ˜¾2)b¶' @  4†ÎM?d ؾ2«ó¡ù @  4‡ÏM?d ¿2 Ë]_ @  4ˆÐM?d X¿2ŽZJ @  4‰ÑM?d ˜¿2ÜA¥Ø @uÐÀ2  4ŠÒM?d Ø¿2#PÁz @  4‹€ÓM?d 0À2ÆkÅ: @  4Œ€ÔM?d pÀ2DúÒä @  4€ÕM?d °À2á=½ @  4Ž€ÖM?d ðÀ2”p*c @  4€×M?d 0Á2û¹ŠÉ @  4€ØM?d pÁ2y( @  4‘€ÙM?d °Á2+3rN @  4’€ÚM?d ðÁ2©¢e @  4“€ÛM?d 0Â2µ-C @  4”€ÜM?d pÂ27¼‡ @  4•€ÝM?d °Â2e§hÄ @  4–€ÞM?d ðÂ2ç6 @  4—€ßM?d 0Ã2ݹº` @  4˜€àM?d pÃ2_(­¾ @  4™€áM?d °Ã2 3Bç @  4š€âM?d ðÃ2¢U9 @  4›€ãM?d 0Ä2'ó$ @  4œ€äM?d pÄ2•¶äú @  4€åM?d °Ä2Ç­ £ @  4ž€æM?d ðÄ2E<} @  4Ÿ€çM?d 0Å2;ó›g @  4 €èM?d pÅ2¹bŒ¹ @  4¡€éM?d °Å2ëycà @  4¢€êM?d ðÅ2ièt> @  4£€ëM?d 0Æ2ugí @  4¤€ìM?d pÆ2÷ö–3 @  4¥€íM?d °Æ2¥íyj @  4¦€îM?d ðÆ2'|n´ @  4§€ïM?d 0Ç2€D’ @  4¨€ðM?d pÇ2Õ…Ì @  4©€ñM?d °Ç2PÎj• @  4ª€òM?d ðÇ2Ò_}K @  4«€óM?d 0È2gk¤D @  4¬€ôM?d pÈ2åú³š @  4­€õM?d °È2·á\à @  4®€öM?d ðÈ25pK @  4¯€÷M?d 0É2Z¹ë· @  4°€øM?d pÉ2Ø(üi @  4±€ùM?d °É2Š30 @  4²€úM?d ðÉ2¢î @  4³€ûM?d 0Ê2-ñ= @  4´€üM?d pÊ2–¼æã @  4µ€ýM?d °Ê2ħ º @  4¶€þM?d ðÊ2F6d @  4·€ÿM?d 0Ë2\jú´ @  4¸€N?d pË2Þûíj @  4¹€N?d °Ë2Œà3 @  4º€N?d ðË2qí @  4»€N?d 0Ì2–ô³ð @  4¼€N?d pÌ2e¤. @  4½€N?d °Ì2F~Kw @  4¾€N?d ðÌ2Äï\© @  4¿€N?d 0Í2'Ý! @  4À€N?d pÍ2–¶Êÿ @  4Á€ N?d °Í2Ä­%¦ @  4€ N?d ðÍ2F<2x @  4À N?d 0Î2Z³Ç« @  4Ä€ N?d pÎ2Ø"Ðu @  4Å€ N?d °Î2Š9?, @  4Æ€N?d ðÎ2¨(ò @  4Ç€N?d 0Ï2¯ÔT @  4È€N?d pÏ2-Ê @  4É€N?d °Ï2,Ó @  4Ê€N?d ðÏ2ý‹;  @  4Ë€N?d 0Ð2žҭ @  4Ì€N?d pÐ2@Ås @  4Í€N?d °Ð2** @  4΀N?d ðÐ2…=ô @  4Ï€N?d 0Ñ2ÿL^ @  4ЀN?d pÑ2}ÝŠ€ @  4Ñ€N?d °Ñ2/ÆeÙ @  4Ò€N?d ðÑ2­Wr @  4Ó€N?d 0Ò2±Ø‡Ô @  4Ô€N?d pÒ23I  @  4Õ€N?d °Ò2aRS @  4Ö€N?d ðÒ2ãÃh @  4×€N?d 0Ó2ÙL­÷ @  4Ø€ N?d pÓ2[ݺ) @  4Ù€!N?d °Ó2 ÆUp @  4Ú€"N?d ðÓ2‹WB® @  4Û€#N?d 0Ô2Òä³ @  4Ü€$N?d pÔ2‘Cóm @  4Ý€%N?d °Ô2ÃX4 @  4Þ€&N?d ðÔ2AÉ ê @  4߀'N?d 0Õ2?Œð @  4à€(N?d pÕ2½—›. @  4á€)N?d °Õ2ïŒtw @  4â€*N?d€ ðÕ2Þ @  5€+N?d 0Ö2äÂõ @  5€,N?d pÖ2fÕ+ @  5€-N?d °Ö2ñÓÁŸ @  5€.N?d ðÖ2sBÖA @  5€/N?d 0×2Èu @  5€0N?d p×2˜YbC @  5€1N?d °×2ðÒ` @  5€2N?d ð×2†až @  5 €3N?d 0Ø2öç\ @  5 €4N?d pØ2tð‚ @  5 €5N?d °Ø2ãßä6 @  5 €6N?d ðØ2aNóè @  5 €7N?d 0Ù2m”2Ø @  5€8N?d pÙ2ï% @  5€9N?d °Ù2Þ «Å @  5€:N?d ðÙ2\œ¼ @  5€;N?d 0Ú2…Z²% @  5€N?d ðÚ2¦‘ @  5€?N?d 0Û2e)€ @  5€@N?d pÛ2”ô>^ @  5€AN?d °Û2]Ž} @  5€BN?d ðÛ2ŠÌ™£ @  5€CN?d 0Ü2×ÄS @  5€DN?d pÜ2U‘Ó @  5€EN?d °Ü2ÂÃÇ9 @  5€FN?d ðÜ2@RÐç @  5€GN?d 0Ý2Lˆ× @  5€HN?d pÝ2Î  @  5€IN?d °Ý2î¯z @  5 €JN?d ðÝ2l†¸¤ @  5!€KN?d 0Þ2µ@¶š @  5"€LN?d pÞ27Ñ¡D @  5#€MN?d °Þ2 ƒµð @  5$€NN?d ðÞ2"¢. @  5%€ON?d 0ß2K˜ò @  5&€PN?d pß2É , @  5'€QN?d uÐà2/°ß2U ¦ @  5(€RN?d ðß2ª±Â­ @  5)SN?d Hà2÷—2¤ @  5*TN?d ˆà2×b0Z @  5+UN?d Èà2âT1Î @  5,VN?d á22½& @  5-WN?d Há2lç  @  5.XN?d ˆá2LêåÞ @  5/YN?d Èá2߆~= @  50ZN?d â2BÂÞü @  51[N?d Hâ2„ÑgÝ @  52\N?d ˆâ2¤$e# @  53]N?d Èâ2‘d· @  54^N?d ã2AZè_ @  55_N?d Hã2ç¾éi @  56`N?d ˆã2ÇKë— @  57aN?d Èã2ù†N” @  58bN?d ä2àȽ› @  59cN?d Hä2&Ûº @  5:dN?d ˆä2.D @  5;eN?d Èä23Ð @  5<fN?d å2ãP‹8 @  5=gN?d Hå2½SÑ> @  5>hN?d ˆå2¦ÓÀ @  5?iN?d Èå2±Ëi @  5@jN?d æ2,ÉÀ @  5AkN?d Hæ2êœpá @  5BlN?d ˆæ2Êir @  5CmN?d Èæ2ÿ_s‹ @  5DnN?d ç2/ÿc @  5EoN?d Hç2Dlj @  5FpN?d ˆç24±Åw @  5GqN?d Èç2 |`t @  5HrN?d è2>ƒìi @  5IsN?d Hè2øUH @  5JtN?d ˆè2ØeW¶ @  5KuN?d Èè2íSV" @  5LvN?d é2=ÚÊ @  5MwN?d Hé2c€Ì @  5NxN?d ˆé2Cí‚2 @  5OyN?d Èé2ÐÑ @  5PzN?d ê2MŹ @  5Q{N?d Hê2‹Ö1 @  5R|N?d ˆê2«#Ï @  5S}N?d Èê2ž[ @  5T~N?d ë2N]³ @  5UN?d Hë2/Ï @  5V€N?d ˆë2%ÚÍø @  5WN?d Èë2hû @  5X‚N?d ì2Y›ô @  5YƒN?d Hì2ÄJ"Õ @  5Z„N?d ˆì2ä¿ + @  5[…N?d Èì2щ!¿ @  5\†N?d í2Á­W @  5]‡N?d Hí2_Â÷Q @  5^ˆN?d ˆí27õ¯ @  5_‰N?d Èí2ý]Iü @  5`ŠN?d î2`é= @  5a‹N?d Hî2¦ P @  5bŒN?d ˆî2†ÿRâ @  5cN?d Èî2³ÉSv @  5dŽN?d ï2cßž @  5eN?d Hï2XÒçt @  5fN?d ˆï2x'åŠ @  5g‘N?d Èï2Fê@‰ @  5h’N?d ð2ø4ü; @  5i“N?d Hð2>'E @  5j”N?d ˆð2ÒGä @  5k•N?d Èð2+äFp @  5l–N?d ñ2û¬Ê˜ @  5m—N?d Hñ2¥¯ž @  5n˜N?d ˆñ2…Z’` @  5o™N?d Èñ26 ƒ @  5pšN?d ò2‹r©B @  5q›N?d Hò2Mac @  5rœN?d ˆò2m” @  5sN?d Èò2X¢  @  5tžN?d ó2ˆêŸá @  5uŸN?d Hó2.ž× @  5v N?d ˆó2ûœ) @  5w¡N?d Èó2069* @  5x¢N?d ô2)xÊ% @  5y£N?d Hô2ïks @  5z¤N?d ˆô2Ïžqú @  5{¥N?d Èô2ú¨pn @  5|¦N?d õ2*àü† @  5}§N?d Hõ2t㦀 @  5~¨N?d ˆõ2T¤~ @  5©N?d Èõ2›-.Ž @  5€ªN?d ö2iŽO @  5«N?d Hö2Àz7n @  5‚¬N?d ˆö2à5 @  5ƒ­N?d Èö2Õ¹4 @  5„®N?d ÷2ñ¸ì @  5…¯N?d H÷2>¢€ @  5†°N?d ˆ÷2W‚ø @  5‡±N?d È÷2 š'û @  5ˆ²N?d ø2e«æ @  5‰³N?d Hø2ÒvÇ @  5Š´N?d ˆø2òƒ9 @  5‹µN?d Èø2ǵ­ @  5Œ¶N?d ù2ýE @  5·N?d Hù2IþÇC @  5ޏN?d ˆù2i Ž @  5¹N?d Èù2úg^^ @  5ºN?d ú2g#þŸ @  5‘»N?d Hú2¡0G¾ @  5’¼N?d ˆú2ÅE@ @  5“½N?d Èú2´óDÔ @  5”¾N?d û2d»È< @  5•¿N?d Hû22Ü @  5–ÀN?d ˆû2úÞå @  5—ÁN?d Èû2,7{æ @  5˜ÂN?d ü25yˆé @  5™ÃN?d Hü2ój1È @  5šÄN?d ˆü2ÓŸ36 @  5›ÅN?d Èü2æ©2¢ @  5œÆN?d ý26á¾J @  5ÇN?d Hý2hâäL @  5žÈN?d ˆý2Hæ² @  5ŸÉN?d Èý2Ê}Zá @  5 ÊN?d þ2W9ú  @  5¡ËN?d Hþ2‘*C @  5¢ÌN?d ˆþ2±ßAÿ @  5£ÍN?d Èþ2„é@k @  5¤ÎN?d ÿ2T¡Ìƒ @  5¥ÏN?d Hÿ2oòôi @  5¦ÐN?d ˆÿ2Oö— @  5§uÐ3ÑN?d Èÿ2qÊS” @  5¨ÒN?d 3>~{e @  5©ÓN?d `3ømÂD @  5ªÔN?d  3ؘÀº @  5«ÕN?d à3í®Á. @  5¬ÖN?d 3=æMÆ @  5­×N?d `3cåÀ @  5®ØN?d  3C> @  5¯ÙN?d à3Ð|ŽÝ @  5°ÚN?d 3M8. @  5±ÛN?d `3‹+—= @  5²ÜN?d  3«Þ•à @  5³ÝN?d à3žè”W @  5´ÞN?d 3N ¿ @  5µßN?d `3èD‰ @  5¶àN?d  3ȱw @  5·áN?d à3ö|¾t @  5¸âN?d 3ï2M{ @  5¹ãN?d `3)!ôZ @  5ºäN?d  3 Ôö¤ @  5»åN?d à3<â÷0 @  5¼æN?d 3ìª{Ø @  5½çN?d `3²©!Þ @  5¾èN?d  3’\#  @  5¿éN?d à3¾1™á @  5ÀêN?d 3#u9  @  5ÁëN?d `3åf€ @  5ÂìN?d  3Å“‚ÿ @  5ÃíN?d à3ð¥ƒk @  5ÄîN?d 3 íƒ @  5ÅïN?d `3¾7i @  5ÆðN?d  3;K5— @  5ÇñN?d à3†” @  5ÈòN?d 31y‰ @  5ÉóN?d `3÷j¥¨ @  5ÊôN?d  3ן§V @  5ËõN?d à3⩦ @  5ÌöN?d 32á** @  5Í÷N?d ` 3lâp, @  5ÎøN?d   3LrÒ @  5ÏùN?d à 3ß{é1 @  5ÐúN?d 3B?Ið @  5ÑûN?d ` 3„,ðÑ @  5ÒüN?d   3¤Ùò/ @  5ÓýN?d à 3‘ïó» @  5ÔþN?d 3A§S @  5ÕÿN?d ` 3u²jê @  5ÖO?d   3UGh @  5×O?d à 3kŠÍ @  5ØO?d 3rÄ> @  5ÙO?d ` 3´×‡9 @  5ÚO?d   3”"…Ç @  5ÛO?d à 3¡„S @  5ÜO?d 3q\» @  5ÝO?d ` 3/_R½ @  5ÞO?d   3ªPC @  5ß O?d à 3Àì @  5à O?d 3„LÑ @  5á O?d `3Ö—õð @  5â O?d€  37% @  6 O?d à3ãRI³ @  6O?d 33Å[ @  6O?d `3Í\ @  6O?d  3íõ¢ @  6O?d à3ŠþÛ @  6O?d 3£TBi @  6O?d `3«õ¤2 @  6O?d  3‹¦Ì @  6 O?d à3{\µ @  6 O?d 3«7Ð] @  6 O?d `30}q¶ @  6 O?d  3ˆsH @  6 O?d à3à÷‰1 @  6O?d 3}³)ð @  6O?d `3سñK @  6O?d  3øFóµ @  6O?d à39 Ì @  6O?d 3Øq…$ @  6O?d `3»Üÿ @  6 O?d  3›)} @  6!O?d à3kV‡x @  6"O?d 3rtw @  6#O?d `3z¹’, @  6$O?d  3ZLÒ @  6%O?d à3ª3j« @  6&O?d 3z{æC @  6'O?d `3á1G¨ @  6(O?d  3ÁÄEV @  6)O?d à31»¿/ @  6*O?d 3¬ÿî @  6+O?d `3ùàå @  6 ,O?d  38 â @  6!-O?d à3Èsb @  6".O?d 3;”Š @  6#/O?d `3æ!W @  6$0O?d  3ÆÔUs @  6%1O?d à36«¯  @  6&2O?d 3T# @  6'3O?d `332™ @  6( 4O?d  3Çg @  6) 5O?d à3ã¸á @  6* 6O?d 33ðmö @  6+ 7O?d `3¨ºÌ @  6, 8O?d  3ˆOÎã @  6- 9O?d à3x04š @  6. :O?d 3åt”[ @  6/ ;O?d `3@tLà @  60 O?d 3ñ—& @  63€?O?d `3— xì @  64€@O?d  3·ùz @  65€AO?d à3G†€k @  66€BO?d 3^Èsd @  67€CO?d `3Vi•? @  68€DO?d  3vœ—Á @  69€EO?d à3†ãm¸ @  6:€FO?d 3V«áP @  6;€GO?d `3Íá@» @  6<€HO?d  3íBE @  6=€IO?d à3k¸< @  6>€JO?d 3€/ý @  6?€KO?d `3š.ád @  6@€LO?d  3ºÛãš @  6A€MO?d à3J¤ã @  6B€NO?d 3šì•  @  6C€OO?d `3döV  @  6D€PO?d  3DTòuÐ 3 @  6E€QO?d à3´|®‹ @  6F€RO?d 8 3Åwpí @  6G€SO?d x 3ÍÖ–¶ @  6H€TO?d ¸ 3í#”H @  6I€UO?d ø 3\n1 @  6J€VO?d 8!3ÍâÙ @  6K€WO?d x!3V^C2 @  6L€XO?d ¸!3v«AÌ @  6M€YO?d ø!3†Ô»µ @  6N€ZO?d 8"3t @  6O€[O?d x"3¾ÃÏ @  6P€\O?d ¸"3žeÁ1 @  6Q€]O?d ø"3n;H @  6R€^O?d 8#3¾R·  @  6S€_O?d x#3ÝÿM{ @  6T€`O?d ¸#3ý O… @  6U€aO?d ø#3 uµü @  6V€bO?d 8$3;Fó @  6W€cO?d x$3š ¨ @  6X€dO?d ¸$3Ý| @  6—€£O?d x436|ç' @  6˜€¤O?d ¸43‰åÙ @  6™€¥O?d ø43æö  @  6š€¦O?d 8536¾“H @  6›€§O?d x53­ô2£ @  6œ€¨O?d ¸530] @  6€©O?d ø53}~Ê$ @  6ž€ªO?d 863à:jå @  6Ÿ€«O?d x63T<•î @  6 €¬O?d ¸63tÉ— @  6¡€­O?d ø63„¶mi @  6¢€®O?d 873Tþá @  6£€¯O?d x73ªä"† @  6¤€°O?d ¸73Š x @  6¥€±O?d ø73znÚ @  6¦€²O?d 883N‘V @  6§€³O?d x83F0°G @  6¨€´O?d ¸83fŲ¹ @  6©€µO?d ø83–ºHÀ @  6ª€¶O?d 893FòÄ( @  6«€·O?d x93ݸeà @  6¬€¸O?d ¸93ýMg= @  6­€¹O?d ø93 2D @  6®€ºO?d 8:3v=… @  6¯€»O?d x:35vå> @  6°€¼O?d ¸:3ƒçÀ @  6±€½O?d ø:3åü¹ @  6²€¾O?d 8;35´‘Q @  6³€¿O?d x;3¦I~› @  6´€ÀO?d ¸;3†¼|e @  6µ€ÁO?d ø;3vÆ @  6¶€ÂO?d 8<3ou @  6·€ÃO?d x<3g,“H @  6¸€ÄO?d ¸<3GÙ‘¶ @  6¹€ÅO?d ø<3·¦kÏ @  6º€ÆO?d 8=3gîç' @  6»€ÇO?d x=3ü¤FÌ @  6¼€ÈO?d ¸=3ÜQD2 @  6½€ÉO?d ø=3,.¾K @  6¾€ÊO?d 8>3±jŠ @  6¿€ËO?d x>3«kç @  6À€ÌO?d ¸>3‹žåí @  6Á€ÍO?d ø>3{á” @  6€ÎO?d 8?3«©“| @  6ÀÏO?d x?3U³P{ @  6Ä€ÐO?duÐ@37 ¸?3uFR… @  6Å€ÑO?d ø?3ø¹Û€ @  6ÆÒO?d P@3;a¼ @  6ÇÓO?d @3‘Ð’Ç @  6ÈÔO?d Ð@3A… @  6ÉÕO?d A3±çäV @  6ÊÖO?d PA33vóˆ @  6Ë×O?d A3 XGC @  6ÌØO?d ÐA3ˆÉP @  6ÍÙO?d B3gcû @  6ÎÚO?d PB3åò % @  6ÏÛO?d B3â–Ǿ @  6ÐÜO?d ÐB3`Ð` @  6ÑÝO?d C3¡±/ @  6ÒÞO?d PC3@0¦ñ @  6ÓßO?d C3ùI  @  6ÔàO?d ÐC3h^Ô @  6ÕáO?d D3hÈ@| @  6ÖâO?d PD3êYW¢ @  6×ãO?d D3@œ¤Ù @  6ØäO?d ÐD3 ³ @  6ÙåO?d E3`«ÒH @  6ÚæO?d PE3â:Å– @  6ÛçO?d E3Ûq] @  6ÜèO?d ÐE3Y…fƒ @  6ÝéO?d F3¶/+å @  6ÞêO?d PF34¾<; @  6ßëO?d F3"ÜÖ @  6àìO?d ÐF3 MÁÎ @  6áíO?d G3ë  @  6âîO?d€ PG3ô¹«ù @  7ïO?d G3I†5÷ @  7ðO?d ÐG3Ë") @  7ñO?d H3HO¸~ @  7òO?d PH3ÊÞ¯  @  7óO?d H3®©¡ @  7ôO?d ÐH3,8 @  7õO?d I3@,*J @  7öO?d PI3½=” @  7 ÷O?d I3>Úr² @  7 øO?d ÐI3¼Kel @  7 ùO?d J3–¨Óç @  7 úO?d PJ39Ä9 @  7 ûO?d J3pNh8 @  7üO?d ÐJ3òßæ @  7ýO?d K33j3 @  7þO?d PK3±ûhí @  7ÿO?d K3ÞNÄ @  7P?d ÐK3\žY @  7P?d L3òw¼_ @  7P?d PL3pæ« @  7P?d L3‘€ @  7P?d ÐL3–^ @  7P?d M3ú.k @  7P?d PM3x…9µ @  7P?d M3„âv“ @  7P?d ÐM3saM @  7 P?d N3,ׯ @  7 P?d PN3®À @  7 P?d N3Êvl @  7 P?d ÐN3Hç{Ç @  7 P?d O3˜T\¢ @  7 P?d PO3ÅK| @  7!P?d O3ƒòf¶ @  7"P?d ÐO3cqh @  7#P?d P3Û @  7$P?d PP3Š‹ÌN @  7%P?d P3îü`O @  7&P?d ÐP3lmw‘ @  7'P?d Q3yI¤ @  7(P?d PQ3‚è^z @  7)P?d Q3~\ @  7*P?d ÐQ3ü‚ @  7+P?d R3Öý°  @  7,P?d PR3Tl§× @  7-P?d R30 Ö @  7.P?d ÐR3²Š @  7/P?d S3s?Ý @  70P?d PS3ñ®  @  71P?d S3õ. @  72 P?d ÐS3w¿Ë @  73!P?d T3ÙVíŽ @  74"P?d PT3[ÇúP @  75#P?d T3?°VQ @  76$P?d ÐT3½!A @  77%P?d U3Ñ5º @  78&P?d PU3S¤hd @  79'P?d U3¯Ã'B @  7:(P?d ÐU3-R0œ @  7;)P?d V3±† @  7<*P?d PV3… ‘É @  7=+P?d V3áW=È @  7>,P?d ÐV3cÆ* @  7?-P?d W3r á @  7@.P?d PW3Ÿã? @  7A/P?d W3Ô1õ @  7B0P?d ÐW3„E&+ @  7C1P?d X3¼| @  7D2P?d PX3…Œ«¢ @  7E3P?d X3áû£ @  7F4P?d ÐX3cj} @  7G5P?d Y3~.H @  7H6P?d PY3ï9– @  7I7P?d Y3qˆv° @  7J8P?d ÐY3óan @  7K9P?d Z3Ùú×å @  7L:P?d PZ3[kÀ; @  7M;P?d Z3?l: @  7NP?d P[3þ©lï @  7Q?P?d [3 ymè @  7R@P?d Ð[3ˆèz6 @  7SAP?d \3&Ÿs @  7TBP?d P\3¤ˆ­ @  7UCP?d \3Àç$¬ @  7VDP?d Ð\3Bv3r @  7WEP?d ]3.b G @  7XFP?d P]3¬ó™ @  7YGP?d ]3P”U¿ @  7ZHP?d Ð]3ÒBa @  7[IP?d ^3øæôê @  7\JP?d P^3zwã4 @  7]KP?d ^3O5 @  7^LP?d Ð^3œ‘Xë @  7_MP?d _3L"Ž @  7`NP?d P_3γhP @  7aOP?d _3W„Eš @  7uÐ`3bPP?d Ð_3ÕRD @  7cQP?d (`3ÜJñ– @  7dRP?d h`3^ÛæH @  7eSP?d ¨`3:¬JI @  7fTP?d è`3¸=]— @  7gUP?d (a3Ô)c¢ @  7hVP?d ha3V¸t| @  7iWP?d ¨a3ªß;Z @  7jXP?d èa3(N,„ @  7kYP?d (b3­š @  7lZP?d hb3€<Ñ @  7m[P?d ¨b3äK!Ð @  7n\P?d èb3fÚ6 @  7o]P?d (c3§o6Û @  7p^P?d hc3%þ! @  7q_P?d ¨c3!~5 @  7r`P?d èc3£ï"Í @  7saP?d (d3 Lj @  7tbP?d hd3—ÐV @  7ucP?d ¨d3ëà|W @  7vdP?d èd3iqk‰ @  7weP?d (e3eU¼ @  7xfP?d he3‡ôBb @  7ygP?d ¨e3{“ D @  7zhP?d èe3ùš @  7{iP?d (f3Óᬠ@  7|jP?d hf3Qp»Ï @  7}kP?d ¨f35Î @  7~lP?d èf3·– @  7mP?d (g3*tÖ @  7€nP?d hg3¨å @  7oP?d ¨g31Ò+ @  7‚pP?d èg3³C< @  7ƒqP?d (h30¦K @  7„rP?d hh3²Š±• @  7…sP?d ¨h3Öý” @  7†tP?d èh3Tl J @  7‡uP?d (i38x4 @  7ˆvP?d hi3ºé#¡ @  7‰wP?d ¨i3FŽl‡ @  7ŠxP?d èi3Ä{Y @  7‹yP?d (j3îüÍÒ @  7ŒzP?d hj3lmÚ  @  7{P?d ¨j3v  @  7Ž|P?d èj3Š‹aÓ @  7}P?d (k3K>a @  7~P?d hk3ɯvØ @  7‘P?d ¨k3 ¹#M @  7’€P?d èk3¢(4“ @  7“P?d (l3 ÁÑÖ @  7”‚P?d hl3ŽPÆ @  7•ƒP?d ¨l3ê'j  @  7–„P?d èl3h¶}× @  7—…P?d (m3¢Câ @  7˜†P?d hm3†3T< @  7™‡P?d ¨m3zT @  7šˆP?d èm3øÅ Ä @  7›‰P?d (n3Ò&ºO @  7œŠP?d hn3P·­‘ @  7‹P?d ¨n34À @  7žŒP?d èn3¶QN @  7ŸP?d (o3fâ1+ @  7 ŽP?d ho3äs&õ @  7¡P?d ¨o3}D ? @  7¢P?d èo3ÿÕá @  7£‘P?d (p3ö¬¶ @  7¤’P?d hp3t=¡Ç @  7¥“P?d ¨p3J Æ @  7¦”P?d èp3’Û @  7§•P?d (q3þÏ$- @  7¨–P?d hq3|^3ó @  7©—P?d ¨q3€9|Õ @  7ª˜P?d èq3¨k  @  7«™P?d (r3(KÝ€ @  7¬šP?d hr3ªÚÊ^ @  7­›P?d ¨r3έf_ @  7®œP?d èr3L9 @  7ʸP?d èy3 ¯ ç @  7˹P?d (z3'Lºl @  7̺P?d hz3¥Ý­² @  7Í»P?d ¨z3Áª³ @  7μP?d èz3C;m @  7ϽP?d ({3‚ޏ @  7оP?d h{3f @  7Ñ¿P?d ¨{3ôÏa @  7ÒÀP?d è{3v^¿ @  7ÓÁP?d (|3Ø·òú @  7ÔÂP?d h|3Z&å$ @  7ÕÃP?d ¨|3>QI% @  7ÖÄP?d è|3¼À^û @  7×ÅP?d (}3ÐÔ`Î @  7ØÆP?d h}3REw @  7ÙÇP?d ¨}3®"86 @  7ÚÈP?d è}3,³/è @  7ÛÉP?d (~3P™c @  7ÜÊP?d h~3„Á޽ @  7ÝËP?d ¨~3à¶"¼ @  7ÞÌP?d è~3b'5b @  7ßÍP?d (3²” @  7àÎP?d h30Ù @  7áÏP?d ¨3uЀ3'©2( @  7âÐP?d€ è39+Ÿ @  8ÑP?d @€3;a—ˆ @  8ÒP?d €€3”•v @  8ÓP?d À€3Î׺ @  8ÔP?d 3Ȇ[R @  8ÕP?d @38ù¡+ @  8ÖP?d €3 £Õ @  8×P?d À3ˆ½¦© @  8ØP?d ‚3ùh @  8 ÙP?d @‚3å†ü @  8 ÚP?d €‚3Åsþï @  8 ÛP?d À‚3Æ)¼# @  8 ÜP?d ƒ3a0Ë @  8 ÝP?d @ƒ3æʲ @  8ÞP?d €ƒ3ÆëÈL @  8ßP?d Àƒ3¨à @  8àP?d „3R[ï @  8áP?d @„3ê-¡– @  8âP?d €„3ÊØ£h @  8ãP?d À„3ɂᤠ@  8äP?d …3ÊmL @  8åP?d @…3éµ—5 @  8æP?d €…3É@•Ë @  8çP?d À…3Yñ· @  8èP?d †3ĵ0v @  8éP?d @†34ÊÊ @  8êP?d €†3?Èñ @  8ëP?d À†3eŠ= @  8ìP?d ‡3Ç-Õ @  8íP?d @‡37Rü¬ @  8îP?d €‡3§þR @  8ïP?d À‡3^ဒ @  8 ðP?d ˆ3j  @  8!ñP?d @ˆ3šaöö @  8"òP?d €ˆ3º”ô @  8#óP?d Àˆ3¹Î¶Ä @  8$ôP?d ‰3i†:, @  8%õP?d @‰3™ùÀU @  8&öP?d €‰3¹ « @  8'÷P?d À‰3)½Ç× @  8(øP?d Š3´ùg @  8)ùP?d @Š3D†o @  8*úP?d €Š3dsŸ‘ @  8+ûP?d ÀŠ3g)Ý] @  8,üP?d ‹3·aQµ @  8-ýP?d @‹3G«Ì @  8.þP?d €‹3gë©2 @  8/ÿP?d À‹30íÝ @  80Q?d Œ3)£. @  81Q?d @Œ3ÙÜÔg @  82Q?d €Œ3ù)Ö™ @  83Q?d ÀŒ3ús”U @  84Q?d 3*;½ @  85Q?d @3ÚDâÄ @  86Q?d €3ú±à: @  87Q?d À3jåF @  88Q?d Ž3÷DE‡ @  89 Q?d @Ž3;¿þ @  8: Q?d €Ž3'ν @  8; Q?d ÀŽ3$”ÿÌ @  8< Q?d 3ôÜs$ @  8= Q?d @3£‰] @  8>Q?d €3$V‹£ @  8?Q?d À3Ãóñ @  8@Q?d 3}ÉOC @  8AQ?d @3¶µ: @  8BQ?d €3­C·Ä @  8CQ?d À3®õ @  8DQ?d ‘3~Qyà @  8EQ?d @‘3Ž.ƒ™ @  8FQ?d €‘3®Ûg @  8GQ?d À‘3>j„ @  8HQ?d ’3£.$Ú @  8IQ?d @’3SQÞ£ @  8JQ?d €’3s¤Ü] @  8KQ?d À’3pþž‘ @  8LQ?d “3 ¶y @  8MQ?d @“3PÉè @  8NQ?d €“3p<êþ @  8OQ?d À“3µËŠR @  8P Q?d ”3¬…y] @  8Q!Q?d @”3\úƒ$ @  8R"Q?d €”3|Ú @  8S#Q?d À”3Uà @  8T$Q?d •3¯Oþ @  8U%Q?d @•3_bµ‡ @  8V&Q?d €•3—·y @  8W'Q?d À•3ï&² @  8X(Q?d –3rbÄ @  8Y)Q?d @–3‚è½ @  8Z*Q?d €–3¢èêC @  8[+Q?d À–3¡²¨ @  8\,Q?d —3qú$g @  8]-Q?d @—3…Þ @  8^.Q?d €—3¡pÜà @  8_/Q?d À—3è6¢  @  8`0Q?d ˜3ÜÉ.= @  8a1Q?d @˜3,¶ÔD @  8b2Q?d €˜3 CÖº @  8c3Q?d À˜3”v @  8d4Q?d ™3ßQž @  8e5Q?d @™3/.âç @  8f6Q?d €™3Ûà @  8g7Q?d À™3Ÿjåe @  8h8Q?d š3.E¤ @  8i9Q?d @š3òQ¿Ý @  8j:Q?d €š3Ò¤½# @  8k;Q?d Àš3Ñþÿï @  8lQ?d €›3Ñ<‹€ @  8o?Q?d À›3ä›þ= @  8p@Q?d œ3ýÕ 2 @  8qAQ?d @œ3 ª÷K @  8rBQ?d €œ3-_õµ @  8sCQ?d Àœ3.·y @  8tDQ?d 3þM;‘ @  8uEQ?d @32Áè @  8vFQ?d €3.Çà @  8wGQ?d À3¾vÆj @  8xHQ?d ž3#2f« @  8yIQ?d @ž3ÓMœÒ @  8zJQ?d €ž3ó¸ž, @  8{KQ?d Àž3ðâÜà @  8|LQ?d Ÿ3 ªP @  8}MQ?d @Ÿ3ÐÕªq @  8~NQ?d €Ÿ3ð ¨ @  8OQuР3?d ÀŸ3ô7àì @  8€PQ?d  3…<>Š @  8QQ?d X 3uCÄó @  8‚RQ?d ˜ 3U¶Æ  @  8ƒSQ?d Ø 3Vì„Á @  8„TQ?d ¡3†¤) @  8…UQ?d X¡3vÛòP @  8†VQ?d ˜¡3V.ð® @  8‡WQ?d Ø¡3ÆŸõÒ @  8ˆXQ?d ¢3[ÛU @  8‰YQ?d X¢3«¤¯j @  8ŠZQ?d ˜¢3‹Q­” @  8‹[Q?d Ø¢3ˆ ïX @  8Œ\Q?d £3XCc° @  8]Q?d X£3¨<™É @  8Ž^Q?d ˜£3ˆÉ›7 @  8_Q?d Ø£3M>û› @  8`Q?d ¤3Tp” @  8‘aQ?d X¤3¤òí @  8’bQ?d ˜¤3„úð @  8“cQ?d ؤ3‡ ²ß @  8”dQ?d ¥3Wè>7 @  8•eQ?d X¥3§—ÄN @  8–fQ?d ˜¥3‡bư @  8—gQ?d Ø¥3ÓÃÌ @  8˜hQ?d ¦3Š—c  @  8™iQ?d X¦3zè™t @  8šjQ?d ˜¦3Z›Š @  8›kQ?d ئ3YGÙF @  8œlQ?d §3‰U® @  8mQ?d X§3yp¯× @  8žnQ?d ˜§3Y…­) @  8ŸoQ?d ا3ÃÓé @  8 pQ?d ¨3$<_ô @  8¡qQ?d X¨3ÔC¥ @  8¢rQ?d ˜¨3ô¶§s @  8£sQ?d ب3÷ìå¿ @  8¤tQ?d ©3'¤iW @  8¥uQ?d X©3×Û“. @  8¦vQ?d ˜©3÷.‘Ð @  8§wQ?d Ø©3gŸ”¬ @  8¨xQ?d ª3úÛ4m @  8©yQ?d Xª3 ¤Î @  8ªzQ?d ˜ª3*QÌê @  8«{Q?d ت3) Ž& @  8¬|Q?d «3ùCÎ @  8­}Q?d X«3 <ø· @  8®~Q?d ˜«3)ÉúI @  8¯Q?d Ø«3¨Ûf @  8°€Q?d ¬3æ(i @  8±Q?d X¬3è™Ò @  8²‚Q?d ˜¬3ÈlÐî @  8³ƒQ?d ج3Ë6’" @  8´„Q?d ­3~Ê @  8µ…Q?d X­3ëä³ @  8¶†Q?d ˜­3ËôæM @  8·‡Q?d Ø­3[Eã1 @  8¸ˆQ?d ®3ÆCð @  8¹‰Q?d X®36~¹‰ @  8ºŠQ?d ˜®3‹»w @  8»‹Q?d Ø®3Ñù» @  8¼ŒQ?d ¯3Å™uS @  8½Q?d X¯35æ* @  8¾ŽQ?d ˜¯3Ô @  8¿Q?d د3òRõ† @  8ÀQ?d °3LŒI4 @  8Á‘Q?d X°3¼ó³M @  8Â’Q?d ˜°3œ±³ @  8ÓQ?d ذ3Ÿ\ó @  8Ä”Q?d ±3O— @  8Å•Q?d X±3¿k…î @  8Æ–Q?d ˜±3Ÿž‡ @  8Ç—Q?d ر3/‚l @  8ȘQ?d ²3’k"­ @  8É™Q?d X²3bØÔ @  8ÊšQ?d ˜²3BáÚ* @  8Ë›Q?d ز3A»˜æ @  8ÌœQ?d ³3‘ó @  8ÍQ?d X³3aŒîw @  8ΞQ?d ˜³3Ayì‰ @  8ÏŸQ?d س3„ŽŒ% @  8РQ?d ´3À* @  8Ñ¡Q?d X´3m¿…S @  8Ò¢Q?d ˜´3MJ‡­ @  8Ó£Q?d Ø´3NÅa @  8Ô¤Q?d µ3žXI‰ @  8Õ¥Q?d Xµ3n'³ð @  8Ö¦Q?d ˜µ3NÒ± @  8×§Q?d ص3Þc´r @  8بQ?d ¶3C'³ @  8Ù©Q?d X¶3³XîÊ @  8ÚªQ?d ˜¶3“­ì4 @  8Û«Q?d ض3÷®ø @  8ܬQ?d ·3@¿" @  8Ý­Q?d X·3°ÀØi @  8Þ®Q?d ˜·35Ú— @  8߯Q?d Ø·3Ùs¤W @  8à°Q?d ¸3íŒ(J @  8á±Q?d X¸3óÒ3 @  8â²Q?d€ ˜¸3IÅÌk @  9³Q?d ظ3«ÞÆŽ @  9´Q?d ¹3{–Jf @  9µQ?d X¹3N Kò @  9¶Q?d ˜¹3nUI  @  9·Q?d ع30V  @  9¸Q?d º3­³Ë @  9¹Q?d Xº3“ßÈ @  9ºQ?d ˜º3³*6 @  9 »Q?d غ3u9­ @  9 ¼Q?d »3¥q!ÿ @  9 ½Q?d X»3G k @  9 ¾Q?d ˜»3°²"• @  9 ¿Q?d Ø»3æ6² @  9ÀQ?d ¼3ÿHŽ @  9ÁQ?d X¼3l$^^ @  9ÂQ?d ˜¼3LÑ\  @  9ÃQ?d ؼ3ŠÂå @  9ÄQ?d ½3ZŠii @  9ÅQ?d X½3o¼hý @  9ÆQ?d ˜½3OIj @  9ÇQ?d ؽ3J0 @  9ÈQ?d ¾3ŒÄ @  9ÉQ?d X¾3²Ã5Ç @  9ÊQ?d ˜¾3’679 @  9ËQ?d ؾ3T%Ž @  9ÌQ?d ¿3„mð @  9ÍQ?d X¿3±[d @  9ÎQ?d ˜¿3‘®š @uÐÀ3  9ÏQ?d Ø¿3×}J  @  9€ÐQ?d 0À3³^ @  9€ÑQ?d pÀ31ç§  @  9 €ÒQ?d °À3¥ó @  9!€ÓQ?d ðÀ3×Ò @  9"€ÔQ?d 0Á3I: @  9#€ÕQ?d pÁ32‘® @  9$€ÖQ?d °Á3Š“P @  9%€×Q?d ðÁ3L‰ÉV @  9&€ØQ?d 0Â3ÑÍi— @  9'€ÙQ?d pÂ3ïÌ” @  9(€ÚQ?d °Â3ÏõÎj @  9)€ÛQ?d ðÂ3 æwK @  9*€ÜQ?d 0Ã3Ù®û£ @  9+€ÝQ?d pÃ3ì˜ú7 @  9,€ÞQ?d °Ã3ÌmøÉ @  9-€ßQ?d ðÃ3j‰ùÿ @  9.€àQ?d 0Ä3sÇ ð @  9/€áQ?d pÄ3à«‘ @  90€âQ?d °Ä3À^“í @  91€ãQ?d ðÄ3M*Ì @  92€äQ?d 0Å3Ö¦$ @  93€åQ?d pÅ3ã3§° @  94€æQ?d °Å3ÃÆ¥N @  95€çQ?d ðÅ3ÅÿH @  96€èQ?d 0Æ3_‰ @  97€éQ?d pÆ3>LúŠ @  98€êQ?d °Æ3¹øt @  99€ëQ?d ðÆ3تAU @  9:€ìQ?d 0Ç3âͽ @  9;€íQ?d pÇ3=ÔÌ) @  9<€îQ?d °Ç3!Î× @  9=€ïQ?d ðÇ3&rö= @  9>€ðQ?d 0È3z  @  9?€ñQ?d pÈ3>àÀá @  9@€òQ?d °È3 @  9A€óQ?d ðÈ3Ø{> @  9B€ôQ?d 0É3N÷Ö @  9C€õQ?d pÉ3=xöB @  9D€öQ?d °É3ô¼ @  9E€÷Q?d ðÉ3CŽ®º @  9F€øQ?d 0Ê3ÞÊ{ @  9G€ùQ?d pÊ3à«x @  9H€úQ?d °Ê3Àò©† @  9I€ûQ?d ðÊ3á§ @  9J€üQ?d 0Ë3Ö©œO @  9K€ýQ?d pË3ãŸÛ @  9L€þQ?d °Ë3ÃjŸ% @  9M€ÿQ?d ðË3E]¿¹ @  9N€R?d 0Ì3\L¶ @  9O€R?d pÌ3Ï×U @  9P€R?d °Ì3ïŠÕ« @  9Q€R?d ðÌ3)™lŠ @  9R€R?d 0Í3ùÑàb @  9S€R?d pÍ3Ìçáö @  9T€R?d °Í3ìã @  9U€R?d ðÍ3²¹ @  9V€R?d 0Î3/UÏ @  9W€ R?d pÎ3˜¼Ì @  9X€ R?d °Î31m¾2 @  9Y€ R?d ðÎ3÷~ @  9Z€ R?d 0Ï3'6‹û @  9[€ R?d pÏ3Šo @  9\€R?d °Ï32õˆ‘ @  9]€R?d ðÏ3 ¦°{ @  9^€R?d 0Ð3·x É @  9_€R?d pÐ35°š @  9`€R?d °Ð3ç²d @  9a€R?d ðÐ3Óô E @  9b€R?d 0Ñ3¼‡­ @  9c€R?d pÑ36І9 @  9d€R?d °Ñ3„Ç @  9e€R?d ðÑ3H|ÞÁ @  9f€R?d 0Ò3Õ8~ @  9g€R?d pÒ3ëõÛ @  9h€R?d °Ò3ËÙý @  9i€R?d ðÒ3 `Ü @  9j€R?d 0Ó3Ý[ì4 @  9k€R?d pÓ3èmí  @  9l€R?d °Ó3Șï^ @  9m€R?d ðÓ3n|îh @  9n€ R?d 0Ô3w2g @  9o€!R?d pÔ3ä^†„ @  9p€"R?d °Ô3Ä«„z @  9q€#R?d ðÔ3¸=[ @  9r€$R?d 0Õ3Òð±³ @  9s€%R?d pÕ3çÆ°' @  9t€&R?d °Õ3Ç3²Ù @  9u€'R?d ðÕ3™0èß @  9v€(R?d 0Ö3tH @  9w€)R?d pÖ3:¹í @  9x€*R?d °Ö3Lïã @  9y€+R?d ðÖ3Ü_V @  9z€,R?d 0×3 Ú* @  9{€-R?d p×39!Û¾ @  9|€.R?d °×3ÔÙ@ @  9}€/R?d ð×3"‡áª @  9~€0R?d 0Ø3xm· @  9€1R?d pØ3ÙCçG @  9€€2R?d °Ø3ù¶å¹ @  9€3R?d ðØ3?¥\˜ @  9‚€4R?d 0Ù3ïíÐp @  9ƒ€5R?d pÙ3ÚÛÑä @  9„€6R?d °Ù3ú.Ó @  9…€7R?d ðÙ3¤-‰ @  9†€8R?d 0Ú39i)Ý @  9‡€9R?d pÚ3¤ŒÞ @  9ˆ€:R?d °Ú3'QŽ  @  9‰€;R?d ðÚ3áB7 @  9Š€R?d °Û3$ɸƒ @  9€?R?d ðÛ3r}¬¤ @  9Ž€@R?d 0Ü3k3_« @  9€AR?d pÜ3ø_ÄH @  9€BR?d °Ü3تƶ @  9‘€CR?d ðÜ3¹— @  9’€DR?d 0Ý3Îñó @  9“€ER?d pÝ3ûÇòë @  9”€FR?d °Ý3Û2ð @  9•€GR?d ðÝ3…1ª @  9–€HR?d 0Þ3u Ò @  9—€IR?d pÞ3&¸¯Ñ @  9˜€JR?d °Þ3M­/ @  9™€KR?d ðÞ3À^ @  9š€LR?d 0ß3˜æ @  9›€MR?d pß3% ™r @  9œ€NR?d uÐà3/°ß3Õ›Œ @  9€OR?d ðß3CÐ @  9žPR?d Hà3Z¢Žì @  9ŸQR?d ˆà3z¬'Ÿ @  9 RR?d Èà3ø=0A @  9¡SR?d á3l÷V @  9¢TR?d Há3îfˆ @  9£UR?d ˆá3y4< @  9¤VR?d Èá3û¥â @  9¥WR?d â3ºsëû @  9¦XR?d Hâ38âü% @  9§YR?d ˆâ3¤KL @  9¨ZR?d Èâ3&Ú[Ø @  9©[R?d ã3²yÏ @  9ª\R?d Hã30n @  9«]R?d ˆã3§Óz¥ @  9¬^R?d Èã3%Bm{ @  9­_R?d ä3yˆœ @  9®`R?d Hä3šèŸB @  9¯aR?d ˆä3«à @  9°bR?d Èä3)q_ @  9±cR?d å3½»$H @  9²dR?d Hå3?*3– @  9³eR?d ˆå3¨x'" @  9´fR?d Èå3*é0ü @  9µgR?d æ3k?Ýå @  9¶hR?d Hæ3é®Ê; @  9·iR?d ˆæ3uz @  9¸jR?d Èæ3÷–mÆ @  9¹kR?d ç3c\OÑ @  9ºlR?d Hç3áÍX @  9»mR?d ˆç3vŸL» @  9¼nR?d Èç3ô[e @  9½oR?d è3y3øL @  9¾pR?d Hè3û¢ï’ @  9¿qR?d ˆè3u«@s @  9ÀrR?d Èè3÷:W­ @  9ÁsR?d é3cðuº @  9ÂtR?d Hé3áabd @  9ÃuR?d ˆé3v3vÐ @  9ÄvR?d Èé3ô¢a @  9ÅwR?d ê3µtŒ @  9ÆxR?d Hê37å›É @  9ÇyR?d ˆê3«L+ê @  9ÈzR?d Èê3)Ý<4 @  9É{R?d ë3½# @  9Ê|R?d Hë3?† ý @  9Ë}R?d ˆë3¨ÔI @  9Ì~R?d Èë3*E — @  9ÍR?d ì3úè®ó @  9΀R?d Hì3xy¹- @  9ÏR?d ˆì3Iq7î @  9ЂR?d Èì3Ëà 0 @  9уR?d í3_*' @  9Ò„R?d Hí3Ý»ù @  9Ó…R?d ˆí3JéM @  9Ô†R?d Èí3Èx“ @  9Õ‡R?d î3‰®ûŠ @  9ÖˆR?d Hî3 ?ìT @  9׉R?d ˆî3—–\w @  9ØŠR?d Èî3K© @  9Ù‹R?d ï3Íi¾ @  9ÚŒR?d Hï3\~` @  9ÛR?d ˆï3”jÔ @  9ÜŽR?d Èï3Ÿ}  @  9ÝR?d ð3ƒîŒ @  9ÞR?d Hð3“ùR @  9ß‘R?d ˆð3³P! @  9à’R?d Èð31Gÿ @  9á“R?d ñ3¥Geè @  9â”R?d€ Hñ3æ‘…6 @  :•R?d ˆñ3‚Ù« @  :–R?d Èñ3Îu @  :—R?d ò3–ŒØ @  :˜R?d Hò3Ï_ @  :™R?d ˆò3F  @  :šR?d Èò3Ä—7Ø @  :›R?d ó3žïJµ @  :œR?d Hó3~]k @  : R?d ˆó3Ne²2 @  : žR?d Èó3Ìô¥ì @  : ŸR?d ô34†»æ @  :  R?d Hô3¶¬8 @  : ¡R?d ˆô3ä Ca @  :¢R?d Èô3fT¿ @  :£R?d õ3‘D2 @  :¤R?d Hõ3Õì @  :¥R?d ˆõ3AÎïµ @  :¦R?d Èõ3Ã_øk @  :§R?d ö3GÀîŸ @  :¨R?d Hö3ÅQùA @  :©R?d ˆö3—J @  :ªR?d Èö3ÛÆ @  :«R?d ÷3O£|« @  :¬R?d H÷3Í2ku @  :­R?d ˆ÷3Ÿ)„, @  :®R?d È÷3¸“ò @  :¯R?d ø3UÌË6 @  :°R?d Hø3×]Üè @  :±R?d ˆø3…F3± @  :²R?d Èø3×$o @  :³R?d ù3á@R @  : ´R?d Hù3c™WŒ @  :!µR?d ˆù31‚¸Õ @  :"¶R?d Èù3³¯  @  :#·R?d ú37Œ¹ÿ @  :$¸R?d Hú3µ®! @  :%¹R?d ˆú3çAx @  :&ºR?d Èú3e—V¦ @  :'»R?d û3?ï+Ë @  :(¼R?d Hû3½~< @  :)½R?d ˆû3ïeÓL @  :*¾R?d Èû3môÄ’ @  :+¿R?d ü3eÖω @  :,ÀR?d Hü3çGØW @  :-ÁR?d ˆü3µ\7 @  :.ÂR?d Èü37Í Ð @  :/ÃR?d ý3Àc] @  :0ÄR?d Hý3B…tƒ @  :1ÅR?d ˆý3ž›Ú @  :2ÆR?d Èý3’Œ @  :3ÇR?d þ3šð @  :4ÈR?d Hþ3”. @  :5ÉR?d ˆþ3Æbw @  :6ÊR?d Èþ3D‹u© @  :7ËR?d ÿ3óÄ @  :8ÌR?d Hÿ3œb @  :9ÍR?d ˆÿ3ÎyðC @  ::uÐ4ÎR?d Èÿ3Lèç @  :;ÏR?d 4¥!Ú @  :<ÐR?d `4‡46 @  :=ÑR?d  4Õ/Ù] @  :>ÒR?d à4W¾Îƒ @  :?ÓR?d 4f¬, @  :@ÔR?d `4÷»ò @  :AÕR?d  4ÏìT« @  :BÖR?d à4M}Cu @  :C×R?d 4ÉâU @  :DØR?d `4KsB_ @  :EÙR?d  4h­ @  :FÚR?d à4›ùºØ @  :GÛR?d 4Áǵ @  :HÜR?d `4CÐk @  :IÝR?d  4 ?2 @  :JÞR?d à4“š(ì @  :KßR?d 4kè6æ @  :LàR?d `4éy!8 @  :MáR?d  4»bÎa @  :NâR?d à49óÙ¿ @  :OãR?d 4Î*š2 @  :PäR?d `4L»ì @  :QåR?d  4 bµ @  :RæR?d à4œ1uk @  :SçR?d 4®cŸ @  :TèR?d `4š?tA @  :UéR?d  4È$› @  :VêR?d à4JµŒÆ @  :WëR?d 4Íñ« @  :XìR?d `4’\æu @  :YíR?d  4ÀG , @  :ZîR?d à4BÖò @  :[ïR?d 4 ¢F6 @  :\ðR?d `4ˆ3Qè @  :]ñR?d  4Ú(¾± @  :^òR?d à4X¹©o @  :_óR?d 4¾fÍR @  :`ôR?d ` 4<÷ÚŒ @  :aõR?d   4nì5Õ @  :böR?d à 4ì}"  @  :c÷R?d 4hâ4ÿ @  :døR?d ` 4ês#! @  :eùR?d   4¸hÌx @  :fúR?d à 4:ùÛ¦ @  :gûR?d 4`¦Ë @  :hüR?d ` 4â± @  :iýR?d   4° ^L @  :jþR?d à 42šI’ @  :kÿR?d 4XC @  :lS?d ` 4ÚˆTÉ @  :mS?d   4ˆ“» @  :nS?d à 4 ¬N @  :oS?d 4ýÛïà @  :pS?d ` 4Jø @  :qS?d   4-QD @  :rS?d à 4¯Àš @  :sS?d 4+_n @  :tS?d `4©Î° @  :u S?d  4ûÕîé @  :v S?d à4yDù7 @  :w S?d 4#<„Z @  :x S?d `4¡­“„ @  :y S?d  4ó¶|Ý @  :zS?d à4q'k @  :{S?d 4³rh @  :|S?d `41ã¶ @  :}S?d  4cøûï @  :~S?d à4áiì1 @  :S?d 4J羯 @  :€S?d `4Èv©q @  :S?d  4šmF( @  :‚S?d à4üQö @  :ƒS?d 4œcG @  :„S?d `4òPÜ @  :…S?d  4Lé¿… @  :†S?d à4Îx¨[ @  :‡S?d 4”Õ6 @  :ˆS?d `4‘Âè @  :‰S?d  4DŠ-± @  :ŠS?d à4Æ:o @  :‹S?d 4>i$e @  :Œ S?d `4¼ø3» @  :!S?d  4îãÜâ @  :Ž"S?d à4lrË< @  :#S?d 4›«ˆ± @  :$S?d `4:Ÿo @  :‘%S?d  4K!p6 @  :’&S?d à4ɰgè @  :“'S?d 4M/q @  :”(S?d `4Ͼf @  :•)S?d  4¥‰› @  :–*S?d à44žE @  :—+S?d 4ELã( @  :˜,S?d `4ÇÝôö @  :™-S?d  4•Ư @  :š.S?d à4W q @  :›/S?d 4_#Tµ @  :œ0S?d `4ݲCk @  :1S?d  4©¬2 @  :ž2S?d à4 8»ì @  :Ÿ3S?d 4ëçßÑ @  : 4S?d `4ivÈ @  :¡5S?d  4;m'V @  :¢6S?d à4¹ü0ˆ @  :£7S?d 4=c&| @  :¤8S?d `4¿ò1¢ @  :¥9S?d  4íéÞû @  :¦:S?d à4oxÉ% @  :§;S?d 45´H @  :¨S?d à4g[ @  :«?S?d 4o9P  @  :¬@S?d `4í¨GÔ @  :­AS?d  4¿³¨ @  :®BS?d à4="¿S @  :¯CS?d 4ÊûüÞ @  :°DS?d `4Hjë @  :±ES?d  4qY @  :²FS?d à4˜à‡ @  :³GS?d 4s @  :´HS?d `4žî­ @  :µIS?d  4Ìõýô @  :¶JS?d à4Ndê* @  :·KS?d 4—G @  :¸LS?d `4–€™ @  :¹MS?d  4Ä–oÀuÐ 4 @  :ºNS?d à4Fx @  :»OS?d 8 4K‡r¡ @  :¼PS?d x 4Ée @  :½QS?d ¸ 4› Š& @  :¾RS?d ø 4œø @  :¿SS?d 8!4QDÿW @  :ÀTS?d x!4ÓÕè‰ @  :ÁUS?d ¸!4ÎÐ @  :ÂVS?d ø!4_ @  :ÃWS?d 8"4‡Àú @  :ÄXS?d x"4Q$ @  :ÅYS?d ¸"4WJþ} @  :ÆZS?d ø"4ÕÛé£ @  :Ç[S?d 8#4£”Î @  :È\S?d x#4 2ƒ @  :É]S?d ¸#4_)lI @  :Ê^S?d ø#4ݸ{— @  :Ë_S?d 8$4%Êe @  :Ì`S?d x$4§[rC @  :ÍaS?d ¸$4õ@ @  :ÎbS?d ø$4wÑŠÄ @  :ÏcS?d 8%4€ÉI @  :ÐdS?d x%4™Þ— @  :ÑeS?d ¸%4P‚1Î @  :ÒfS?d ø%4Ò& @  :ÓgS?d 8&4VŒ0ä @  :ÔhS?d x&4Ô': @  :ÕiS?d ¸&4†Èc @  :ÖjS?d ø&4—ß½ @  :×kS?d 8'4^ï¢Ð @  :ØlS?d x'4Ü~µ @  :ÙmS?d ¸'4ŽeZW @  :ÚnS?d ø'4 ôM‰ @  :ÛoS?d 8(4D€M @  :ÜpS?d x(4Æ“ @  :ÝqS?d ¸(4” íÊ @  :ÞrS?d ø(4›ú @  :ßsS?d 8)4ðDž) @  :àtS?d x)4rÕ‰÷ @  :áuS?d ¸)4 Îf® @  :âvS?d€ ø)4ÖœmÖ @  ;wS?d 8*4³B3  @  ;xS?d x*41Ó$Õ @  ;yS?d ¸*4¦0a @  ;zS?d ø*4$'¿ @  ;{S?d 8+4°Ú¨ @  ;|S?d x+42Kv @  ;}S?d ¸+4®â¢U @  ;~S?d ø+4,sµ‹ @  ; S?d 8,4üÞï @  ; €S?d x,4~O1 @  ; S?d ¸,4é… @  ; ‚S?d ø,4kŒ[ @  ; ƒS?d 8-4ÿF'L @  ;„S?d x-4}×0’ @  ;…S?d ¸-4Lß¾Q @  ;†S?d ø-4ÎN© @  ;‡S?d 8.4˜D– @  ;ˆS?d x.4 SH @  ;‰S?d ¸.4š[Gü @  ;ŠS?d ø.4ÊP" @  ;‹S?d 8/4Œr5 @  ;ŒS?d x/4‘eë @  ;S?d ¸/4’8ÕÈ @  ;ŽS?d ø/4©Â @  ;S?d 804µQ @  ;S?d x04•$FN @  ;‘S?d ¸04vRú @  ;’S?d ø04€çE$ @  ;“S?d 814-g3 @  ;”S?d x14–¼pí @  ;•S?d ¸14¶²Ùž @  ; –S?d ø144#Î@ @  ;!—S?d 824uõ#Y @  ;"˜S?d x24÷d4‡ @  ;#™S?d ¸24`6 3 @  ;$šS?d ø24â§7í @  ;%›S?d 834vmú @  ;&œS?d x34ôü$ @  ;'S?d ¸34hU² @  ;(žS?d ø34êÄ¥Ù @  ;)ŸS?d 844×ÿ@> @  ;* S?d x44UnWà @  ;+¡S?d ¸44´S?d x947¼“ @  ;?µS?d ¸94¹µ¾r @  ;@¶S?d ø94;$©¬ @  ;A·S?d 8:4zòDµ @  ;B¸S?d x:4øcSk @  ;C¹S?d ¸:4o1Gß @  ;DºS?d ø:4í P @  ;E»S?d 8;4yjr @  ;F¼S?d x;4ûûeÈ @  ;G½S?d ¸;4gRÕë @  ;H¾S?d ø;4åÃÂ5 @  ;I¿S?d 8<4(¨2à @  ;JÀS?d x<4ª9% @  ;KÁS?d ¸<4=k1© @  ;LÂS?d ø<4¿ú&w @  ;MÃS?d 8=4+0` @  ;NÄS?d x=4©¡¾ @  ;OÅS?d ¸=4˜©} @  ;PÆS?d ø=48Š£ @  ;QÇS?d 8>4[îgº @  ;RÈS?d x>4Ùpd @  ;SÉS?d ¸>4N-dÐ @  ;TÊS?d ø>4̼s @  ;UËS?d 8?4XvQ @  ;VÌS?d x?4ÚçFÇ @  ;WÍS?duÐ@47 ¸?4FNöä @  ;XÎS?d ø?4¹_’F @  ;Y€ÏS?d P@4Ã1N @  ;Z€ÐS?d @4ãİ @  ;[€ÑS?d Ð@4Öò$ @  ;\€ÒS?d A4ºˆÌ @  ;]€ÓS?d PA4À©1í @  ;^€ÔS?d A4à\3 @  ;_€ÕS?d ÐA4b6@ @  ;`€ÖS?d B4ÿr/ @  ;a€×S?d PB4¡qu‡ @  ;b€ØS?d B4„wy @  ;c€ÙS?d ÐB4´²ví @  ;d€ÚS?d C4dúú @  ;e€ÛS?d PC4¢éC$ @  ;f€ÜS?d C4‚AÚ @  ;g€ÝS?d ÐC4¼ÑäÙ @  ;h€ÞS?d D4¥ŸÖ @  ;i€ßS?d PD4{à @  ;j€àS?d D4#Ž @  ;k€áS?d ÐD4¸Š @  ;l€âS?d E4Æð™b @  ;m€ãS?d PE4ã C @  ;n€äS?d E4 "½ @  ;o€åS?d ÐE4³z¹^ @  ;p€æS?d F4.>Ÿ @  ;q€çS?d PF4p=C™ @  ;r€èS?d F4PÈAg @  ;s€éS?d ÐF4eþ@ó @  ;t€êS?d G4µ¶Ì @  ;u€ëS?d PG4s¥u: @  ;v€ìS?d G4SPwÄ @  ;w€íS?d ÐG4mÒÇ @  ;x€îS?d H4Yb^Ú @  ;y€ïS?d PH4b1f0 @  ;z€ðS?d H4BÄdÎ @  ;{€ñS?d ÐH4wòeZ @  ;|€òS?d I4§ºé² @  ;}€óS?d PI4a©P“ @  ;~€ôS?d I4A\Rm @  ;€õS?d ÐI4ŽgØ @  ;€€öS?d J4#x\ @  ;€÷S?d PJ4M "Z @  ;‚€øS?d J4mÕ ¤ @  ;ƒ€ùS?d ÐJ4Xã!0 @  ;„€úS?d K4ˆ«­Ø @  ;…€ûS?d PK4N¸ù @  ;†€üS?d K4nM @  ;‡€ýS?d ÐK4P€³ @  ;ˆ€þS?d L4IÎ@  @  ;‰€ÿS?d PL4AÒj$ @  ;Š€T?d L4a'hÚ @  ;‹€T?d ÐL4TiN @  ;Œ€T?d M4„Yå¦ @  ;€T?d PM4BJ\‡ @  ;Ž€T?d M4b¿^y @  ;€T?d ÐM4ñÓÅš @  ;€T?d N4l—e[ @  ;‘€T?d PN42”?] @  ;’€T?d N4a=£ @  ;“€ T?d ÐN4'W<7 @  ;”€ T?d O4÷°ß @  ;•€ T?d PO41 þ @  ;–€ T?d O4ù  @  ;—€ T?d ÐO4/4® @  ;˜€T?d P4‘ê± @  ;™€T?d PP4ª¹*[ @  ;š€T?d P4ŠL(¥ @  ;›€T?d ÐP4¿z)1 @  ;œ€T?d Q4o2¥Ù @  ;€T?d PQ4©!ø @  ;ž€T?d Q4‰Ô @  ;Ÿ€T?d ÐQ4 ¾¢U @  ; €T?d R4–ú” @  ;¡€T?d PR4ÈùX’ @  ;¢€T?d R4è Zl @  ;£€T?d ÐR4Ý:[ø @  ;¤€T?d S4 r× @  ;¥€T?d PS4Ëan1 @  ;¦€T?d S4ë”lÏ @  ;§€T?d ÐS4ÕYÉÌ @  ;¨€T?d T4Ì:à @  ;©€T?d PT4jó;õ @  ;ª€ T?d T4J9  @  ;«€!T?d ÐT408Ÿ @  ;¬€"T?d U4¯x´w @  ;­€#T?d PU4ik V @  ;®€$T?d U4Iž¨ @  ;¯€%T?d ÐU4Úò”K @  ;°€&T?d V4G¶4Š @  ;±€'T?d PV4µnŒ @  ;²€(T?d V49@lr @  ;³€)T?d ÐV4 vmæ @  ;´€*T?d W4Ü>á @  ;µ€+T?d PW4-X/ @  ;¶€,T?d W4:ØZÑ @  ;·€-T?d ÐW4ÿÒ @  ;¸€.T?d X40êsÏ @  ;¹€/T?d PX4 ¹K% @  ;º€0T?d X4+LIÛ @  ;»€1T?d ÐX4zHO @  ;¼€2T?d Y4Î2ħ @  ;½€3T?d PY4!}† @  ;¾€4T?d Y4(Ôx @  ;¿€5T?d ÐY4¹Å¹ @  ;À€6T?d Z4™ýex @  ;Á€7T?d PZ4Çþ?~ @  ;€8T?d Z4ç =€ @  ;À9T?d ÐZ4Ò=< @  ;Ä€:T?d [4u°ü @  ;Å€;T?d P[4Äf Ý @  ;Æ€T?d \4Ã]/ @  ;É€?T?d P\4•¤I @  ;Ê€@T?d \4µQKö @  ;Ë€AT?d Ð\4€gJb @  ;Ì€BT?d ]4P/ÆŠ @  ;Í€CT?d P]4–<« @  ;΀DT?d ]4¶É}U @  ;Ï€ET?d Ð]4%¥æ¶ @  ;ЀFT?d ^4¸áFw @  ;Ñ€GT?d P^4æâq @  ;Ò€HT?d ^4Æ @  ;Ó€IT?d Ð^4ó! @  ;Ô€JT?d _4#i“ó @  ;Õ€KT?d P_4åz*Ò @  ;Ö€LT?d _4Å(, @  ;uÐ`4×€MT?d Ð_4ûB/ @  ;Ø€NT?d (`4Eº8· @  ;Ù€OT?d h`4~é] @  ;Ú€PT?d ¨`4^£ @  ;Û€QT?d è`4k*7 @  ;Ü€RT?d (a4»bß @  ;Ý€ST?d ha4}q6þ @  ;Þ€TT?d ¨a4]„4 @  ;߀UT?d èa4ßîˆS @  ;à€VT?d (b4Bª(’ @  ;á€WT?d hb4©r” @  ;â€XT?d€ ¨b4º ØÓ @  <€YT?d èb4n}‘n @  <€ZT?d (c4¾5† @  <€[T?d hc4½o_J @  <€\T?d ¨c4š]´ @  <€]T?d èc4må§Í @  <€^T?d (d4t«T @  <€_T?d hd4ý Ž @  <€`T?d ¨d4<p @  < €aT?d èd4Ìwò  @  < €bT?d (e4?~á @  < €cT?d he4e<- @  < €dT?d ¨e4?>Ó @  < €eT?d èe4ÏïĪ @  <€fT?d (f4R«dk @  <€gT?d hf4o»_÷ @  <€hT?d ¨f4ON]  @  <€iT?d èf4¿1§p @  <€jT?d (g4oy+˜ @  <€kT?d hg4l#iT @  <€lT?d ¨g4LÖkª @  <€mT?d èg4¼©‘Ó @  <€nT?d (h4ˆVÎ @  <€oT?d hh4}·z^ @  <€pT?d ¨h4]Bx  @  <€qT?d èh4­=‚Ù @  <€rT?d (i4}u1 @  <€sT?d hi4~/Lý @  <€tT?d ¨i4^ÚN @  <€uT?d èi4®¥´z @  <€vT?d (j43á» @  <€wT?d hj4÷— @  < €xT?d ¨j4? i @  <!€yT?d èj4Ï}ð @  <"€zT?d (k45|ø @  <#€{T?d hk4o>4 @  <$€|T?d ¨k4<š<Ê @  <%€}T?d èk4Ì寳 @  <&€~T?d (l4Õ«5¼ @  <'€T?d hl4Pk*s @  <(€€T?d ¨l4pž( @  <)€T?d èl4€áÒô @  <*€‚T?d (m4P©^ @  <+€ƒT?d hm4SóÐ @  <,€„T?d ¨m4s. @  <-€…T?d èm4ƒyäW @  <.€†T?d (n4=D– @  </€‡T?d hn4#-  @  <0€ˆT?d ¨n4Ø}ô @  <1€‰T?d èn4ó§‡ @  <2€ŠT?d (o4#ï e @  <3€‹T?d ho4 µI© @  <4€ŒT?d ¨o4@KW @  <5€T?d èo4ð?±. @  <6€ŽT?d (p4Ná œ @  <7€T?d hp4»j  @  <8€T?d ¨p4›õhò @  <9€‘T?d èp4kŠ’‹ @  <:€’T?d (q4»Âc @  <;€“T?d hq4¸˜\¯ @  <<€”T?d ¨q4˜m^Q @  <=€•T?d èq4h¤( @  <>€–T?d (r4õVé @  <?€—T?d hr4wGW @  <@€˜T?d ¨r4W²© @  <A€™T?d èr4§ÍæÐ @  <B€šT?d (s4w…j8 @  <C€›T?d hs4tß(ô @  <D€œT?d ¨s4T**  @  <E€T?d ès4¤UÐs @  <F€žT?d (t4½#| @  <G€ŸT?d ht4ÕM}0 @  <H€ T?d ¨t4õ¸Î @  <I€¡T?d èt4Ç…· @  <J€¢T?d (u4Õ _ @  <K€£T?d hu4ÖÕK“ @  <L€¤T?d ¨u4ö Im @  <M€¥T?d èu4_³ @  <N€¦T?d (v4›Õ @  <O€§T?d hv4¦ (I @  <P€¨T?d ¨v4†þ*· @  <Q€©T?d èv4vÐÎ @  <R€ªT?d (w4¦É\& @  <S€«T?d hw4¥“ê @  <T€¬T?d ¨w4…f @  <U€­T?d èw4uæm @  <V€®T?d (x4Aæjp @  <W€¯T?d hx4´ à @  <X€°T?d ¨x4”ò @  <Y€±T?d èx4dõg @  <Z€²T?d (y4´Åy @  <[€³T?d hy4·Ÿ;C @  <\€´T?d ¨y4—j9½ @  <]€µT?d èy4gÃÄ @  <^€¶T?d (z4úQc @  <_€·T?d hz4ÖG) @  <`€¸T?d ¨z4ö²}× @  <a€¹T?d èz4͇® @  <b€ºT?d ({4Ö… F @  <c€»T?d h{4ÕßIŠ @  <d€¼T?d ¨{4õ*Kt @  <e€½T?d è{4U±  @  <f€¾T?d (|4B @  <g€¿T?d h|4„ _ @  <h€ÀT?d ¨|4¤è ¡ @  <i€ÁT?d è|4T—ñØ @  <j€ÂT?d (}4„ß}0 @  <k€ÃT?d h}4‡…?ü @  <l€ÄT?d ¨}4§p= @  <m€ÅT?d è}4WÇ{ @  <n€ÆT?d (~4ÊKgº @  <o€ÇT?d h~4÷[\& @  <p€ÈT?d ¨~4×®^Ø @  <q€ÉT?d è~4'Ѥ¡ @  <r€ÊT?d (4÷™(I @  <s€ËT?d h4ôÃj… @  <t€ÌT?d ¨4uЀ4'Ô6h{ @  <u€ÍT?d è4$I’ @  <v€ÎT?d @€4J÷pv @  <w€ÏT?d €€4rÆ @  <x€ÐT?d À€4Ÿã @  <y€ÑT?d 4=EtW @  <z€ÒT?d @4¿Ôc‰ @  <{€ÓT?d €4ê4e @  <|€ÔT?d À4œ{#» @  <}€ÕT?d ‚4sÑnÝ @  <~€ÖT?d @‚4ñ@y @  <€×T?d €‚42cF¬ @  <€€ØT?d À‚4°òQr @  <€ÙT?d ƒ4T0= @  <‚€ÚT?d @ƒ4Å'ã @  <ƒ€ÛT?d €ƒ41ûp @  <„€ÜT?d Àƒ4³jgÑ @  <…€ÝT?d „4ØÊyy @  <†€ÞT?d @„4Z[n§ @  <‡€ßT?d €„4i%Ë @  <ˆ€àT?d À„4ø2 @  <‰€áT?d …4°^SZ @  <Š€âT?d @…42ÏD„ @  <‹€ãT?d €…4“ñh @  <Œ€äT?d À…4`¶ @  <€åT?d †4þÊIÐ @  <Ž€æT?d @†4|[^ @  <€çT?d €†4ã/p² @  <€èT?d À†4a¾gl @  <‘€éT?d ‡4Ã# @  <’€êT?d @‡4A‰ý @  <“€ëT?d €‡4à·F @  <”€ìT?d À‡4b&QÏ @  <•€íT?d ˆ4$70u @  <–€îT?d @ˆ4¦¦'« @  <—€ïT?d €ˆ4ñ#U @  <˜€ðT?d Àˆ4s²BÅ @  <™€ñT?d ‰4Ñ#Š @  <š€òT?d @‰4S…4T @  <›€óT?d €‰4ò»c¸ @  <œ€ôT?d À‰4p*tf @  <€õT?d Š4Ÿ€9 @  <ž€öT?d @Š4.Þ @  <Ÿ€÷T?d €Š4“c'Ò @  < €øT?d ÀŠ4ò0  @  <¡€ùT?d ‹4³TQC @  <¢€úT?d @‹41ÅF @  <£€ûT?d €‹4ûq @  <¤€üT?d À‹4j¯ @  <¥€ýT?d Œ4yÊ @  <¦€þT?d @Œ4û[Ù @  <§€ÿT?d €Œ4£˜P: @  <¨€U?d ÀŒ4! Gä @  <©€U?d 4ƒ¯&« @  <ª€U?d @4>1u @  <«€U?d €4 f™ @  <¬€U?d À4"‘qG @  <­€U?d Ž4Í; @  <µ€ U?d 4çu+ @  <¶€U?d @4vbõ @  <·€U?d €4HóE @  <¸€U?d À4Êb› @  <¹€U?d ‘4hÄfÔ @  <º€U?d @‘4êUq  @  <»€U?d €‘4Kk&æ @  <¼€U?d À‘4Éú18 @  <½€U?d ’4&P|^ @  <¾€U?d @’4¤Ák€ @  <¿€U?d €’4„´d @  <À€U?d À’4%sÀ @  <Á€U?d “4¤ƒ @  <€U?d @“4&Q @  <ÀU?d €“4‡,R½ @  <Ä€U?d À“4½Ec @  <Å€U?d ”4n[Ë @  <Æ€U?d @”4ìŒL @  <Ç€U?d €”4&¾y @  <È€ U?d À”4¤/§ @  <É€!U?d •4‰qè @  <Ê€"U?d @•4„f6 @  <Ë€#U?d €•4%&1Ú @  <Ì€$U?d À•4§·& @  <Í€%U?d –4Hkb @  <΀&U?d @–4ÊŒ|¼ @  <Ï€'U?d €–4UøR @  <Ѐ(U?d À–4×iEÞ @  <Ñ€)U?d —4uÏ$‘ @  <Ò€*U?d @—4÷^3O @  <Ó€+U?d €—4V`d£ @  <Ô€,U?d À—4Ôñs} @  <Õ€-U?d ˜4’àÇ @  <Ö€.U?d @˜4q @  <×€/U?d €˜4Gôw© @  <Ø€0U?d À˜4Åe`w @  <Ù€1U?d ™4gÃ8 @  <Ú€2U?d @™4åRæ @  <Û€3U?d €™4DlA  @  <Ü€4U?d À™4ÆýVÔ @  <Ý€5U?d š4)W² @  <Þ€6U?d @š4«Æ l @  <߀7U?d €š4%´` @  <à€8U?d Àš4§%¾ @  <á€9U?d ›4ƒsñ @  <â€:U?d€ @›4óÑx‰ @  =€;U?d €›4³®gL @  =€U?d @œ4G‚  @  =€?U?d €œ4é—ƒ @  =€@U?d Àœ4k”Ð @  =€AU?d 4ªå @  =€BU?d @4…ƒ½; @  = €CU?d €4áô: @  = €DU?d À4ceä @  = €EU?d ž4I†°o @  = €FU?d @ž4˧± @  = €GU?d €ž47pè— @  =€HU?d Àž4µáÿI @  =€IU?d Ÿ4tTÿœ @  =€JU?d @Ÿ4öÅèB @  =€KU?d €Ÿ4’²DC @  =€LUuР4?d ÀŸ4#S @  =€MU?d  4Ö›± @  =€NU?d X 4TŒo @  =€OU?d ˜ 4Í)¡¥ @  =€PU?d Ø 4O¸¶{ @  =€QU?d ¡4#¬ˆN @  =€RU?d X¡4¡=Ÿ @  =€SU?d ˜¡4ÅJ3‘ @  =€TU?d Ø¡4GÛ$O @  =€UU?d ¢4m8’Ä @  =€VU?d X¢4ï©… @  =€WU?d ˜¢4ÎÊ< @  =€XU?d Ø¢4‘_Ýâ @  =€YU?d £4Aìú‡ @  = €ZU?d X£4Ã}íY @  =!€[U?d ˜£4§ AX @  ="€\U?d Ø£4%›V† @  =#€]U?d ¤4‹r³Ã @  =$€^U?d X¤4 㤠@  =%€_U?d ˜¤4 c°  @  =&€`U?d ؤ4ò§Õ @  ='€aU?d ¥4ãæ™à @  =(€bU?d X¥4awŽ> @  =)€cU?d ˜¥4"? @  =*€dU?d Ø¥4‡‘5á @  =+€eU?d ¦4­rƒj @  =,€fU?d X¦4/ã”´ @  =-€gU?d ˜¦4Ó„Û’ @  =.€hU?d ئ4QÌL @  =/€iU?d §4 Ì™ @  =0€jU?d X§41ÛG @  =1€kU?d ˜§4vFwF @  =2€lU?d ا4ô×`˜ @  =3€mU?d ¨4wúÏ @  =4€nU?d X¨4õí @  =5€oU?d ˜¨4l)ÀÛ @  =6€pU?d ب4î¸× @  =7€qU?d ©4‚¬é0 @  =8€rU?d X©4=þî @  =9€sU?d ˜©4dJRï @  =:€tU?d Ø©4æÛE1 @  =;€uU?d ª4Ì8óº @  =<€vU?d Xª4N©äd @  ==€wU?d ˜ª4²Î«B @  =>€xU?d ت40_¼œ @  =?€yU?d «4Nëk @  =@€zU?d X«4Ìzе @  =A€{U?d ˜«4¨ &´ @  =B€|U?d Ø«4*œ1j @  =C€}U?d ¬4„uÔ/ @  =D€~U?d X¬4äÃñ @  =E€U?d ˜¬4ïò–d @  =F€€U?d ج4mcº @  =G€U?d ­4w¿ @  =H€‚U?d X­4ƒæ¨Q @  =I€ƒU?d ˜­4ç‘P @  =J€„U?d Ø­4eŽ @  =K€…U?d ®4O㥠@  =L€†U?d X®4Ír²Û @  =M€‡U?d ˜®41ýý @  =N€ˆU?d Ø®4³„ê# @  =O€‰U?d ¯4r1êö @  =P€ŠU?d X¯4ð ý( @  =Q€‹U?d ˜¯4”×Q) @  =R€ŒU?d د4FF÷ @  =S€U?d °4?ì @  =T€ŽU?d X°4®ûÑ @  =U€U?d ˜°4™Ö @  =V€U?d ذ4†ÁÅ @  =W€‘U?d ±4êÿð @  =X€’U?d X±4hè. @  =Y€“U?d ˜±4 úD/ @  =Z€”U?d ر4ŽkSñ @  =[€•U?d ²4¤ˆåz @  =\€–U?d X²4&ò¤ @  =]€—U?d ˜²4Ú~½‚ @  =^€˜U?d ز4Xïª\ @  =_€™U?d ³4ˆ\9 @  =`€šU?d X³4 Íšç @  =a€›U?d ˜³4nº6æ @  =b€œU?d س4ì+!8 @  =c€U?d ´4BÂÄ} @  =d€žU?d X´4ÀSÓ£ @  =e€ŸU?d ˜´4ÄÓǵ @  =f€ U?d Ø´4FBÐk @  =g€¡U?d µ4*Vî^ @  =h€¢U?d Xµ4¨Çù€ @  =i€£U?d ˜µ4̰U @  =j€¤U?d ص4N!B_ @  =k€¥U?d ¶4dÂôÔ @  =l€¦U?d X¶4æSã  @  =m€§U?d ˜¶44¬, @  =n€¨U?d ض4˜¥»ò @  =o€©U?d ·4Y»' @  =p€ªU?d X·4Û¬ù @  =q€«U?d ˜·4¿öø @  =r€¬U?d Ø·4=g& @  =s€­U?d ¸4¾?q @  =t€®U?d X¸4<®š¯ @  =u€¯U?d ˜¸4¥™·e @  =v€°U?d ظ4' » @  =w€±U?d ¹4KžŽ @  =x€²U?d X¹4ɉP @  =y€³U?d ˜¹4­ú%Q @  =z€´U?d ع4/k2 @  ={€µU?d º4ˆ„ @  =|€¶U?d Xº4‡“Ú @  =}€·U?d ˜º4{~Üü @  =~€¸U?d غ4ùïË" @  =€¹U?d »4d Úä @  =€€ºU?d X»4æœÍ: @  =€»U?d ˜»4‚ëa; @  =‚€¼U?d Ø»4zvå @  =ƒ€½U?d ¼4®““  @  =„€¾U?d X¼4,„~ @  =…€¿U?d ˜¼4ØÒ…y @  =†€ÀU?d ؼ4ZC’§ @  =‡€ÁU?d ½46W¬’ @  =ˆ€ÂU?d X½4´Æ»L @  =‰€ÃU?d ˜½4бM @  =Š€ÄU?d ؽ4R “ @  =‹€ÅU?d ¾4xö @  =Œ€ÆU?d X¾4úR¡Æ @  =€ÇU?d ˜¾45îà @  =Ž€ÈU?d ؾ4„¤ù> @  =€ÉU?d ¿4Eùë @  =€ÊU?d X¿4Ç€î5 @  =‘€ËU?d ˜¿4£÷B4 @uÐÀ4  =’€ÌU?d Ø¿4e!úC @  =“ ÍU?d 0À4¶v½[ @  =” ÎU?d pÀ44窅 @  =• ÏU?d °À4­Ð‡O @  =– ÐU?d ðÀ4/A‘ @  =— ÑU?d 0Á4CU®¤ @  =˜ ÒU?d pÁ4ÁĹz @  =™ ÓU?d °Á4¥³{ @  =š ÔU?d ðÁ4'"¥ @  =› ÕU?d 0Â4 Á´. @  =œ ÖU?d pÂ4P£ð @  = ×U?d °Â4s7ìÖ @  =ž ØU?d ðÂ4ñ¦û @  =Ÿ ÙU?d 0Ã4!Üm @  =  ÚU?d pÃ4£„˳ @  =¡ ÛU?d °Ã4Çóg² @  =¢ ÜU?d ðÃ4Ebpl @  =£ ÝU?d 0Ä4ë‹•) @  =¤ ÞU?d pÄ4i‚÷ @  =¥ ßU?d °Ä4mš–á @  =¦ àU?d ðÄ4ï ? @  =§ áU?d 0Å4ƒ¿  @  =¨ âU?d pÅ4ލÔ @  =© ãU?d °Å4eùÕ @  =ª äU?d ðÅ4çh  @  =« åU?d 0Æ4Í‹¥€ @  =¬ æU?d pÆ4O²^ @  =­ çU?d °Æ4³}ýx @  =® èU?d ðÆ41ìê¦ @  =¯ éU?d 0Ç4ðYês @  =° êU?d pÇ4rÈý­ @  =± ëU?d °Ç4¿Q¬ @  =² ìU?d ðÇ4”.Fr @  =³ íU?d 0È4vÜ% @  =´ îU?d pÈ4•çËû @  =µ ïU?d °È4 Ðæ1 @  =¶ ðU?d ðÈ4ŽAñï @  =· ñU?d 0É4âUÏÚ @  =¸ òU?d pÉ4`ÄØ @  =¹ óU?d °É4³t @  =º ôU?d ðÉ4†"cÛ @  =» õU?d 0Ê4¬ÁÕP @  =¼ öU?d pÊ4.PÂŽ @  =½ ÷U?d °Ê4Ò7¨ @  =¾ øU?d ðÊ4P¦šv @  =¿ ùU?d 0Ë4.» @  =À úU?d pË4¬ƒ¬_ @  =Á ûU?d °Ë4Èô^ @  = üU?d ðË4Je€ @  =à ýU?d 0Ì4äŒòÅ @  =Ä þU?d pÌ4få @  =Å ÿU?d °Ì4BNЧ @  =Æ V?d ðÌ4ÀßÇy @  =Ç V?d 0Í4¬ËùL @  =È V?d pÍ4.Zî’ @  =É V?d °Í4J-B“ @  =Ê V?d ðÍ4ȼUM @  =Ë V?d 0Î4â_ãÆ @  =Ì V?d pÎ4`Îô @  =Í V?d °Î4œ©»> @  =Î V?d ðÎ48¬à @  =Ï  V?d 0Ï4߬5 @  =Ð  V?d pÏ4]»ë @  =Ñ  V?d °Ï49kê @  =Ò  V?d ðÏ4»ú4 @  =Ó  V?d 0Ð4²ƒªÌ @  =Ô V?d pÐ40½ @  =Õ V?d °Ð4©%Ø @  =Ö V?d ðÐ4+´‡ @  =× V?d 0Ñ4G ¹3 @  =Ø V?d pÑ4Å1®í @  =Ù V?d °Ñ4¡Fì @  =Ú V?d ðÑ4#×2 @  =Û V?d 0Ò4 4£¹ @  =Ü V?d pÒ4‹¥´g @  =Ý V?d °Ò4wÂûA @  =Þ V?d ðÒ4õSìŸ @  =ß V?d 0Ó4%àËú @  =à V?d pÓ4§qÜ$ @  =á V?d °Ó4Ãp% @  =â V?d€ ðÓ4€Ðû @  > V?d 0Ô4Ïx=— @  > V?d pÔ4Mé*I @  > V?d °Ô4Œ Ų @  >  V?d ðÔ4±Òl @  > !V?d 0Õ4¬³# @  > "V?d pÕ4.†¤ý @  > #V?d °Õ4„CW† @  > $V?d ðÕ4Ò@X @  > %V?d 0Ö4éx > @  > &V?d pÖ4kéà @  > 'V?d °Ö4RÇ®+ @  > (V?d ðÖ4ÐV¹õ @  > )V?d 0×4rðغ @  > *V?d p×4ðaÏd @  > +V?d °×4÷ÿ @  > ,V?d ð×4u”! @  > -V?d 0Ø43…t› @  > .V?d pØ4±cE @  > /V?d °Ø4íjµb @  > 0V?d ðØ4oû¢¼ @  > 1V?d 0Ù4Í]Ãó @  > 2V?d pÙ4OÌÔ- @  > 3V?d °Ù4å 'V @  > 4V?d ðÙ4g˜0ˆ @  > 5V?d 0Ú4ˆ2}î @  > 6V?d pÚ4 £j0 @  > 7V?d °Ú43Þû @  > 8V?d ðÚ4±É% @  > 9V?d 0Û4º¨j @  > :V?d pÛ4‘+¿´ @  > ;V?d °Û4‡IUŸ @  > ! =V?d 0Ü4nx\é @  >" >V?d pÜ4ìéK7 @  ># ?V?d °Ü4Ýp±Ý @  >$ @V?d ðÜ4_ᦠ@  >% AV?d 0Ý4ýGÇL @  >& BV?d pÝ4ÖÐ’ @  >' CV?d °Ý4Õ#é @  >( DV?d ðÝ4W‚47 @  >) EV?d 0Þ4¸(yQ @  >* FV?d pÞ4:¹n @  >+ GV?d °Þ4—ÚD @  >, HV?d ðÞ4Íš @  >- IV?d 0ß4# ¬Õ @  >. JV?d pß4¡1»  @  >/ KV?d uÐà4/°ß4¦Uv @  >0 LV?d ðß4$ÄaN @  >1 MV?d Hà4OŽÒ @  >2 NV?d ˆà4o{Ðá @  >3 OV?d Èà4‘aæ @  >4 PV?d á4A)Ÿ @  >5 QV?d Há4±Vew @  >6 RV?d ˆá4‘£g‰ @  >7 SV?d Èá4™Ò @  >8 TV?d â4F! @  >9 UV?d Hâ4ô9Ûj @  >: VV?d ˆâ4ÔÌÙ” @  >; WV?d Èâ4O†x @  >< XV?d ã4ŸÎô— @  >= YV?d Hã4o±î @  >> ZV?d ˆã4OD  @  >? [V?d Èã4UEõ‰ @  >@ \V?d ä4L † @  >A ]V?d Hä4¼tüÿ @  >B ^V?d ˆä4œþ @  >C _V?d Èä4ÿ,Ú @  >D `V?d å4/dˆ2 @  >E aV?d Hå4ßrK @  >F bV?d ˆå4ÿîpµ @  >G cV?d Èå4÷O–î @  >H dV?d æ4j 6/ @  >I eV?d Hæ4štÌV @  >J fV?d ˆæ4ºÎ¨ @  >K gV?d Èæ4!ËoC @  >L hV?d ç4ñƒã« @  >M iV?d Hç4üÒ @  >N jV?d ˆç4! , @  >O kV?d Èç4„ × @  >P lV?d è4°öOŠ @  >Q mV?d Hè4@‰µó @  >R nV?d ˆè4`|·  @  >S oV?d Èè4žft  @  >T pV?d é4N.øâ @  >U qV?d Hé4¾Q› @  >V rV?d ˆé4ž¤e @  >W sV?d Èé4–æ> @  >X tV?d ê4 AFÿ @  >Y uV?d Hê4û>¼† @  >Z vV?d ˆê4Û˾x @  >[ wV?d Èê4@“ @  >\ xV?d ë4É“{ @  >] yV?d Hë4`¶i @  >^ zV?d ˆë4@Ckü @  >_ {V?d Èë4ôE”÷ @  >` |V?d ì4í gø @  >a }V?d Hì4t @  >b ~V?d ˆì4=Ÿ @  >c V?d Èì4³º$' @  >d €V?d í4cò¨Ï @  >e V?d Hí4“R¶ @  >f ‚V?d ˆí4³xPH @  >g ƒV?d Èí4»Ù¶ @  >h „V?d î4&Ò @  >i …V?d Hî4Öâì« @  >j †V?d ˆî4öîU @  >k ‡V?d Èî4m]O¾ @  >l ˆV?d ï4½ÃV @  >m ‰V?d Hï4Mj9/ @  >n ŠV?d ˆï4mŸ;Ñ @  >o ‹V?d Èï4ÈŸãj @  >p ŒV?d ð4vA_Ø @  >q V?d Hð4†>¥¡ @  >r ŽV?d ˆð4¦Ë§_ @  >s V?d Èð4XÑdX @  >t V?d ñ4ˆ™è° @  >u ‘V?d Hñ4xæÉ @  >v ’V?d ˆñ4X7 @  >w “V?d Èñ4P²öl @  >x ”V?d ò4ÍöV­ @  >y •V?d Hò4=‰¬Ô @  >z –V?d ˆò4|®* @  >{ —V?d Èò4†6Á @  >| ˜V?d ó4V~ƒ) @  >} ™V?d Hó4¦yP @  >~ šV?d ˆó4†ô{® @  > ›V?d Èó4£² @  >€ œV?d ô4fíA  @  > V?d Hô4–’»p @  >‚ žV?d ˆô4¶g¹Ž @  >ƒ ŸV?d Èô4ÕÊCU @  >„  V?d õ4‚Ͻ @  >… ¡V?d Hõ4õý5Ä @  >† ¢V?d ˆõ4Õ7: @  >‡ £V?d Èõ4Ý©Ña @  >ˆ ¤V?d ö4@íq  @  >‰ ¥V?d Hö4°’‹Ù @  >Š ¦V?d ˆö4g‰' @  >‹ §V?d Èö4 -(Ì @  >Œ ¨V?d ÷4Ûe¤$ @  > ©V?d H÷4+^] @  >Ž ªV?d ˆ÷4 ï\£ @  > «V?d È÷4®ï„ @  > ¬V?d ø4š @  >‘ ­V?d Hø4joò| @  >’ ®V?d ˆø4Jšð‚ @  >“ ¯V?d Èø4´€3… @  >” °V?d ù4dÈ¿m @  >• ±V?d Hù4”·E @  >– ²V?d ˆù4´BGê @  >— ³V?d Èù4¼ã¡± @  >˜ ´V?d ú4!§p @  >™ µV?d Hú4ÑØû  @  >š ¶V?d ˆú4ñ-ù÷ @  >› ·V?d Èú4jgX @  >œ ¸V?d û4º/Ôô @  > ¹V?d Hû4JP. @  >ž ºV?d ˆû4j¥,s @  >Ÿ »V?d Èû4Þ£Óx @  >  ¼V?d ü4Çí w @  >¡ ½V?d Hü47’Ú @  >¢ ¾V?d ˆü4gØð @  >£ ¿V?d Èü4„š7: @  >¤ ÀV?d ý4TÒ»Ò @  >¥ ÁV?d Hý4¤­A« @  >¦ ÂV?d ˆý4„XCU @  >§ ÃV?d Èý4Œù¥ @  >¨ ÄV?d þ4½Ï @  >© ÅV?d Hþ4áÂÿ¶ @  >ª ÆV?d ˆþ4Á7ýH @  >« ÇV?d Èþ4Z}\£ @  >¬ ÈV?d ÿ4Š5ÐK @  >­ ÉV?d Hÿ4zJ*2 @  >® ÊV?d ˆÿ4Z¿(Ì @  >¯ uÐ5ËV?d Èÿ4ÿ¿ðw @  >° ÌV?d 5° ؆ @  >± ÍV?d `5@t"ÿ @  >² ÎV?d  5`  @  >³ ÏV?d à5ž›ã @  >´ ÐV?d 5NÓoî @  >µ ÑV?d `5¾¬•— @  >¶ ÒV?d  5žY—i @  >· ÓV?d à5–øq2 @  >¸ ÔV?d 5 ¼Ñó @  >¹ ÕV?d `5ûÃ+Š @  >º ÖV?d  5Û6)t @  >» ×V?d à5@|ˆŸ @  >¼ ØV?d 54w @  >½ ÙV?d `5`Kþ @  >¾ ÚV?d  5@¾üð @  >¿ ÛV?d à5Z¿i @  >À ÜV?d 5Cñöf @  >Á ÝV?d `5³Ž  @  > ÞV?d  5“{á @  >à ßV?d à5ðÖô: @  >Ä àV?d 5 žxÒ @  >Å áV?d `5Ðá‚« @  >Æ âV?d  5ð€U @  >Ç ãV?d à5øµf @  >È äV?d 5eñÆÏ @  >É åV?d `5•Ž<¶ @  >Ê æV?d  5µ{>H @  >Ë çV?d à5.1Ÿ£ @  >Ì èV?d 5þyK @  >Í éV?d `5é2 @  >Î êV?d  5.óëÌ @  >Ï ëV?d à5‹ó3w @  >Ð ìV?d 5¿ ¿j @  >Ñ íV?d `5OsE @  >Ò îV?d  5o†Gí @  >Ó ïV?d à5‘œ„ê @  >Ô ðV?d 5AÔ @  >Õ ñV?d ` 5±«ò{ @  >Ö òV?d   5‘^ð… @  >× óV?d à 5™ÿÞ @  >Ø ôV?d 5»¶ @  >Ù õV?d ` 5ôÄLf @  >Ú öV?d   5Ô1N˜ @  >Û ÷V?d à 5O{ïs @  >Ü øV?d 5Ÿ3c› @  >Ý ùV?d ` 5oL™â @  >Þ úV?d   5O¹› @  >ß ûV?d à 5û¿d @  >à üV?d 5âñ— @  >á ýV?d ` 5Žma @  >â þV?d€   5F¸s9 @  ? ÿV?d à 5V¥ÕD @  ? W?d 5†íY¬ @  ? W?d ` 5³ÛX8 @  ? W?d   5“.ZÆ @  ? W?d à 5U=ãç @  ? W?d 5ÈyC& @  ? W?d `5ö´æ% @  ? W?d  5ÖAäÛ @  ? W?d à5ˆB¾Ý @  ? W?d 5X 25 @  ?  W?d `5m<3¡ @  ?  W?d  5MÉ1_ @  ?  W?d à5‹Úˆ~ @  ?  W?d 554Ì @  ?  W?d `5¦h¯/ @  ? W?d  5†­Ñ @  ? W?d à5½Î•; @  ? W?d 5m†Ó @  ? W?d `5X°G @  ? W?d  5xE¹ @  ? W?d à5¾V£˜ @  ? W?d 5#Y @  ? W?d `5ߦZ @  ? W?d  5=*¤¤ @  ? W?d à5c)þ¢ @  ? W?d 5³arJ @  ? W?d `5†WsÞ @  ? W?d  5¦¢q  @  ? W?d à5`±È @  ? W?d 5yÿ; @  ? W?d `5û•‡] @  ? W?d  5Û`…£ @  ?! W?d à5}„„• @  ?"  W?d 5­Ì} @  ?# !W?d `5˜ú é @  ?$ "W?d  5¸  @  ?% #W?d à5~²6 @  ?& $W?d 5ãX÷ @  ?' %W?d `5Ý•·ô @  ?( &W?d  5ý`µ  @  ?) 'W?d à5£cï  @  ?* (W?d 5s+cä @  ?+ )W?d `5Fbp @  ?, *W?d  5fè`Ž @  ?- +W?d à5 ûÙ¯ @  ?. ,W?d 5”U² @  ?/ -W?d `5hÎQ @  ?0 .W?d  5'̯ @  ?1 /W?d à5ÎôE @  ?2 0W?d 5̆x­ @  ?3 1W?d `5ù°y9 @  ?4 2W?d  5ÙE{Ç @  ?5 3W?d à5VÂæ @  ?6 4W?d 5‚b' @  ?7 5W?d `5¼ßÇ$ @  ?8 6W?d  5œ*ÅÚ @  ?9 7W?d à5Â)ŸÜ @  ?: 8W?d 5a4 @  ?; 9W?d `5'W  @  ?< :W?d  5¢^ @  ?= ;W?d à5Á±© @  ?> W?d  5ÔgâO @  ?A ?W?d à5‚Óöh @  ?B @W?d 5R›z€ @  ?C AW?d `5g­{ @  ?D BW?d  5GXyê @  ?E CW?d à5KÀË @  ?F DW?d 5`  @  ?G EW?d `5"ÂÅ  @  ?H FW?d  57Ç÷ @  ?I GW?d à5\4ñ @  ?J HW?d 5Œ| @  ?K IW?d `5¹J @  ?L JW?d  5™¿suÐ 5 @  ?M KW?d à5_¬«R @  ?N LW?d 8 5.§u4 @  ?O MW?d x 5½Ëî× @  ?P NW?d ¸ 5>ì) @  ?Q OW?d ø 5¦mÔà @  ?R PW?d 8!5v%X+ @  ?S QW?d x!5CY¿ @  ?T RW?d ¸!5cæ[A @  ?U SW?d ø!5¥õâ` @  ?V TW?d 8"58±B¡ @  ?W UW?d x"5|ç¢ @  ?X VW?d ¸"5&‰å\ @  ?Y WW?d ø"5xŠ¿Z @  ?Z XW?d 8#5¨Â3² @  ?[ YW?d x#5ô2& @  ?\ ZW?d ¸#5½0Ø @  ?] [W?d ø#5{‰ù @  ?^ \W?d 8$5b\zö @  ?_ ]W?d x$5à6Æ¥ @  ?` ^W?d ¸$5ÀÃÄ[ @  ?a _W?d ø$5f'Åm @  ?b `W?d 8%5¶oI… @  ?c aW?d x%5ƒYH @  ?d bW?d ¸%5£¬Jï @  ?e cW?d ø%5e¿óÎ @  ?f dW?d 8&5øûS @  ?g eW?d x&5Æ6ö  @  ?h fW?d ¸&5æÃôò @  ?i gW?d ø&5¸À®ô @  ?j hW?d 8'5hˆ" @  ?k iW?d x'5]¾#ˆ @  ?l jW?d ¸'5}K!v @  ?m kW?d ø'5»X˜W @  ?n lW?d 8(5§J @  ?o mW?d x(5Ë© @  ?p nW?d ¸(5<>W @  ?q oW?d ø(5mµ½ @  ?r pW?d 8)5×%9U @  ?s qW?d x)5â8Á @  ?t rW?d ¸)5Âæ:? @  ?u sW?d ø)5õƒ @  ?v tW?d 8*5™±#ß @  ?w uW?d x*5§|†Ü @  ?x vW?d ¸*5‡‰„" @  ?y wW?d ø*5ÙŠÞ$ @  ?z xW?d 8+5 ÂRÌ @  ?{ yW?d x+5<ôSX @  ?| zW?d ¸+5Q¦ @  ?} {W?d ø+5Úè‡ @  ?~ |W?d 8,5Ã\ˆ @  ? }W?d x,5 g‘x @  ?€ ~W?d ¸,5,’“† @  ? W?d ø,5gàÓ3 @  ?‚ €W?d 8-5·¨_Û @  ?ƒ W?d x-5‚ž^O @  ?„ ‚W?d ¸-5¢k\± @  ?… ƒW?d ø-5dxå @  ?† „W?d 8.5ù5-Jf} @  ?Ç ÅW?d x>5‡Ã~ @  ?È ÆW?d ¸>53rÁ€ @  ?É ÇW?d ø>5mq›† @  ?Ê ÈW?d 8?5½9n @  ?Ë ÉW?d x?5ˆú @  ?Ì ÊW?duÐ@57 ¸?5¨ú @  ?Í ËW?d ø?5né­% @  ?Î ÌW?d P@5­E @  ?Ï ÍW?d @5œM™Ú @  ?Ð ÎW?d Ð@5ÜŽ @  ?Ñ ÏW?d A5wV-Ø @  ?Ò ÐW?d PA5õÇ: @  ?Ó ÑW?d A5b•.² @  ?Ô ÒW?d ÐA5à9l @  ?Õ ÓW?d B59Â7R @  ?Ö ÔW?d PB5»S Œ @  ?× ÕW?d B5'ú¯ @  ?Ø ÖW?d ÐB5¥k‡q @  ?Ù ×W?d C5©±FA @  ?Ú ØW?d PC5+ QŸ @  ?Û ÙW?d C5¼rE+ @  ?Ü ÚW?d ÐC5>ãRõ @  ?Ý ÛW?d D5c/ @  ?Þ ÜW?d PD5á¾Û @  ?ß ÝW?d D5Á°±¨ @  ?à ÞW?d ÐD5C!¦v @  ?á ßW?d E5·X?d ÐT5}?¿b @  @?X?d U5UeÚ @  @@ X?d PU5×r @  @A!X?d U5…š] @  @B"X?d ÐU5 Šƒ @  @C#X?d V5„P @  @D$X?d PV5™hŽ @  @E%X?d V5Ë‡× @  @F&X?d ÐV5IŸ  @  @G'X?d W5‹÷C @  @H(X?d PW5 f @  @I)X?d W5[}öÄ @  @J*X?d ÐW5Ùìá @  @K+X?d X5lØ8 @  @L,X?d PX5îI/Ë @  @M-X?d X5¼RÀ’ @  @N.X?d ÐX5>Ã×L @  @O/X?d Y54Z  @  @P0X?d PY5¶ËÔ @  @Q1X?d Y5äÐí @  @R2X?d ÐY5fAúS @  @S3X?d Z5z΀ @  @T4X?d PZ5ø_^ @  @U5X?d Z5ªD÷ @  @V6X?d ÐZ5(ÕàÙ @  @W7X?d [5ê½~“ @  @X8X?d P[5h,iM @  @Y9X?d [5:7† @  @Z:X?d Ð[5¸¦‘Ê @  @[;X?d \5 #7× @  @\X?d Ð\5r8ØŽ @  @_?X?d ]5@µ @  @`@X?d P]5†Ñk @  @aAX?d ]5ÔÊé2 @  @bBX?d Ð]5V[þì @  @cCX?d ^5JÔ ? @  @dDX?d P^5ÈEá @  @eEX?d ^5š^ó¸ @  @fFX?d Ð^5Ïäf @  @gGX?d _5Ú§z, @  @hHX?d P_5X6mò @  @iIX?d _5 -‚« @  @uÐ`5jJX?d Ð_5Jr  @  @kKX?d (`5u&’* @  @lLX?d h`5÷·…ô @  @mMX?d ¨`5¥¬j­ @  @nNX?d è`5'=}s @  @oOX?d (a5-¤¿5 @  @pPX?d ha5¯5¨ë @  @qQX?d ¨a5ý.G² @  @rRX?d èa5¿Pl @  @sSX?d (b5c0¥¿ @  @tTX?d hb5ᡲa @  @uUX?d ¨b5³º]8 @  @vVX?d èb51+Jæ @  @wWX?d (c5óCÔ¬ @  @xXX?d hc5qÒÃr @  @yYX?d ¨c5#É,+ @  @zZX?d èc5¡X;õ @  @{[X?d (d59Ýè @  @|\X?d hd5»LŠ6 @  @}]X?d ¨d5éWeo @  @~^X?d èd5kÆr± @  @_X?d (e5 ¿˜8 @  @€`X?d he5".æ @  @aX?d ¨e5p5`¿ @  @‚bX?d èe5ò¤wa @  @ƒcX?d (f5î+‚² @  @„dX?d hf5lº•l @  @…eX?d ¨f5>¡z5 @  @†fX?d èf5¼0më @  @‡gX?d (g5~Xó¡ @  @ˆhX?d hg5üÉä @  @‰iX?d ¨g5®Ò & @  @ŠjX?d èg5,Cø @  @‹kX?d (h5™wÅ÷ @  @ŒlX?d hh5æÒ) @  @mX?d ¨h5Iý=p @  @ŽnX?d èh5Ël*® @  @oX?d (i5Áõèè @  @pX?d hi5Cdÿ6 @  @‘qX?d ¨i5o @  @’rX?d èi5“î± @  @“sX?d (j5aòb @  @”tX?d hj5 ðå¼ @  @•uX?d ¨j5_ë å @  @–vX?d èj5Ýz; @  @—wX?d (k5ƒq @  @˜xX?d hk5ƒ”¯ @  @™yX?d ¨k5Ϙ{ö @  @šzX?d èk5M l( @  @›{X?d (l5ÕŒÊ5 @  @œ|X?d hl5WÝë @  @}X?d ¨l52² @  @ž~X?d èl5‡—%l @  @ŸX?d (m5ì)¸Å @  @ €X?d hm5n¸¯ @  @¡X?d ¨m5<£@B @  @¢‚X?d èm5¾2Wœ @  @£ƒX?d (n5¢½¢O @  @¤„X?d hn5 ,µ‘ @  @¥…X?d ¨n5r7ZÈ @  @¦†X?d èn5ð¦M @  @§‡X?d (o52ÎÓ\ @  @¨ˆX?d ho5°_Ä‚ @  @©‰X?d ¨o5âD+Û @  @ªŠX?d èo5`Õ< @  @«‹X?d (p5_ÀÕ¥ @  @¬ŒX?d hp5ÝQÂ{ @  @­X?d ¨p5J-" @  @®ŽX?d èp5 Û:ü @  @¯X?d (q5Bøº @  @°X?d hq5…Óïd @  @±‘X?d ¨q5×È= @  @²’X?d èq5UYã @  @³“X?d (r5IÖâ0 @  @´”X?d hr5ËGõî @  @µ•X?d ¨r5™\· @  @¶–X?d èr5Í i @  @·—X?d (s5Ù¥“# @  @¸˜X?d hs5[4„ý @  @¹™X?d ¨s5 /k¤ @  @ºšX?d ès5‹¾|z @  @»›X?d (t5;Úg @  @¼œX?d ht5‘ªÍ¹ @  @½X?d ¨t5ñ"à @  @¾žX?d èt5A 5> @  @¿ŸX?d (u5iï† @  @À X?d hu5ëžøX @  @Á¡X?d ¨u5¹… @  @¢X?d èu5;ß @  @ãX?d (v5'›õ  @  @ĤX?d hv5¥ âÒ @  @Å¥X?d ¨v5÷ ‹ @  @ƦX?d èv5u€U @  @ǧX?d (w5·è„ @  @ȨX?d hw55y“Á @  @É©X?d ¨w5gb|˜ @  @ʪX?d èw5åókF @  @Ë«X?d (x5PDzI @  @̬X?d hx5ÒV¥— @  @Í­X?d ¨x5€MJÎ @  @ήX?d èx5Ü] @  @ϯX?d (y5EŸV @  @аX?d hy5ŠÔˆˆ @  @ѱX?d ¨y5ØÏgÑ @  @Ò²X?d èy5Z^p @  @Ó³X?d (z5FÑ…Ü @  @Ô´X?d hz5Ä@’ @  @ÕµX?d ¨z5–[}[ @  @Ö¶X?d èz5Êj… @  @×·X?d ({5Ö¢ôÏ @  @ظX?d h{5T3ã @  @Ù¹X?d ¨{5( H @  @ÚºX?d è{5„¹– @  @Û»X?d (|5<½‹ @  @ܼX?d h|5ž­ªU @  @ݽX?d ¨|5̶E  @  @Þ¾X?d è|5N'RÒ @  @ß¿X?d (}58_›é @  @àÀX?d h}5ºÎŒ7 @  @áÁX?d ¨}5èÕcn @  @âÂX?d€ è}5‡h @  AÃX?d (~5ãIÕì @  AÄX?d h~5aØÂ2 @  AÅX?d ¨~5öŠÖ† @  AÆX?d è~5tÁX @  AÇX?d (5xÁh @  AÈX?d h5úP¶ @  AÉX?d ¨5uЀ5'fù§• @  AÊX?d è5™èÃ7 @  A €ËX?d @€5³Ô¼ @  A €ÌX?d €€5“!B @  A €ÍX?d À€5¦ŒÖ @  A €ÎX?d 5v_> @  A €ÏX?d @5M 8Ô @  A€ÐX?d €5mù:* @  A€ÑX?d À5þ•¡É @  A€ÒX?d ‚5cÑ @  A€ÓX?d @‚5¥Â¸) @  A€ÔX?d €‚5…7º× @  A€ÕX?d À‚5°»C @  A€ÖX?d ƒ5`I7« @  A€×X?d @ƒ5>Jm­ @  A€ØX?d €ƒ5¿oS @  A€ÙX?d Àƒ5 rÊP @  A€ÚX?d „59<9_ @  A€ÛX?d @„5ÿ/€~ @  A€ÜX?d €„5ßÚ‚€ @  A€ÝX?d À„5êìƒ @  A€ÞX?d …5:¤ü @  A€ßX?d @…5œ@Ê @  A€àX?d €…5¼µ 4 @  A€áX?d À…5>ß°g @  A €âX?d †5£›¦ @  A!€ãX?d @†5eˆ©‡ @  A"€äX?d €†5E}«y @  A#€åX?d À†5pKªí @  A$€æX?d ‡5 & @  A%€çX?d @‡5þ| @  A&€èX?d €‡5Þõ~ý @  A'€éX?d À‡5à8Ûþ @  A(€êX?d ˆ5ÔÇWã @  A)€ëX?d @ˆ5Ôî @  A*€ìX?d €ˆ52!ì< @  A+€íX?d Àˆ5í¨ @  A,€îX?d ‰5×_a@ @  A-€ïX?d @‰5ì Yª @  A.€ðX?d €‰5Ìù[T @  A/€ñX?d À‰5_•À· @  A0€òX?d Š5ÂÑ`v @  A1€óX?d @Š5ÂÙW @  A2€ôX?d €Š5$7Û© @  A3€õX?d ÀŠ5Ú= @  A4€öX?d ‹5ÁIVÕ @  A5€÷X?d @‹5ŸJ Ó @  A6€øX?d €‹5¿¿- @  A7€ùX?d À‹5r«. @  A8€úX?d Œ5˜€Y?d €5DyÅ @  A?€Y?d À5£)à @  A@€Y?d Ž5>mcÅ @  AA€Y?d @Ž5ø~Úä @  AB€Y?d €Ž5Ø‹Ø @  AC€Y?d ÀŽ5í½ÙŽ @  AD€Y?d 5=õUf @  AE€Y?d @5cö` @  AF€Y?d €5C ž @  AG€ Y?d À5}Ψ @  AH€ Y?d 5Ã/ @  AI€ Y?d @5­ @  AJ€ Y?d €5%ö¯ð @  AK€ Y?d À5À®d @  AL€Y?d ‘5Àˆ"Œ @  AM€Y?d @‘5ûÛf @  AN€Y?d €‘5Û.˜ @  AO€Y?d À‘5HBƒ{ @  AP€Y?d ’5Õ#º @  AQ€Y?d @’5š› @  AR€Y?d €’53à˜e @  AS€Y?d À’5Ö™ñ @  AT€Y?d “5Öž @  AU€Y?d @“5ˆO @  AV€Y?d €“5¨hMá @  AW€Y?d À“5–¥èâ @  AX€Y?d ”5ëí @  AY€Y?d @”5Iø¢Ì @  AZ€Y?d €”5i  2 @  A[€Y?d À”5\;¡¦ @  A\€Y?d •5Œs-N @  A]€Y?d @•5*—,x @  A^€ Y?d €•5 b.† @  A_€!Y?d À•5ˆ’Õ @  A`€"Y?d –5L2 @  Aa€#Y?d @–5Ó_‹5 @  Ab€$Y?d €–5óª‰Ë @  Ac€%Y?d À–5Æœˆ_ @  Ad€&Y?d —5Ô· @  Ae€'Y?d @—5H×^± @  Af€(Y?d €—5h"\O @  Ag€)Y?d À—5VïùL @  Ah€*Y?d ˜5buQ @  Ai€+Y?d @˜5¤Ìp @  Aj€,Y?d €˜5„öÎŽ @  Ak€-Y?d À˜5±ÀÏ @  Al€.Y?d ™5aˆCò @  Am€/Y?d @™5ZÛ{ @  An€0Y?d €™5z.yæ @  Ao€1Y?d À™5éBâ @  Ap€2Y?d š5tBÄ @  Aq€3Y?d @š5²ûå @  Ar€4Y?d €š5’àù @  As€5Y?d Àš5§Öø @  At€6Y?d ›5wžtg @  Au€7Y?d @›5).a @  Av€8Y?d €›5 h,Ÿ @  Aw€9Y?d À›57¥‰œ @  Ax€:Y?d œ5.ëz“ @  Ay€;Y?d @œ5èøÃ² @  Az€Y?d 5-sL0 @  A}€?Y?d @5{ÇX @  A~€@Y?d €5[2Zé @  A€AY?d À5” Ð @  A€€BY?d ž5 MpØ @  A€CY?d @ž5Ï^Éù @  A‚€DY?d €ž5ï«Ë @  Aƒ€EY?d Àž5ÚÊ“ @  A„€FY?d Ÿ5 ÕF{ @  A…€GY?d @Ÿ5TÖ} @  A†€HY?d €Ÿ5t#ƒ @  A‡€IYuР5?d ÀŸ5J @  Aˆ€JY?d  5;åeæ @  A‰€KY?d X 5ýöÜÇ @  AŠ€LY?d ˜ 5ÝÞ9 @  A‹€MY?d Ø 5è5ß­ @  AŒ€NY?d ¡58}SE @  A€OY?d X¡5.k¯ @  AŽ€PY?d ˜¡5#ÛiQ @  A€QY?d Ø¡5°·ò² @  A€RY?d ¢5-óRs @  A‘€SY?d X¢5ëàëR @  A’€TY?d ˜¢5Ëé¬ @  A“€UY?d Ø¢5þ#è8 @  A”€VY?d £5.kdÐ @  A•€WY?d X£5ph>Ö @  A–€XY?d ˜£5P<( @  A—€YY?d Ø£5nP™+ @  A˜€ZY?d ¤5wj$ @  A™€[Y?d X¤5± Ó @  Aš€\Y?d ˜¤5‘øÑû @  A›€]Y?d ؤ5¤ÎÐo @  Aœ€^Y?d ¥5t†\‡ @  A€_Y?d X¥5Òb]± @  Až€`Y?d ˜¥5ò—_O @  AŸ€aY?d Ø¥5pýã @  A €bY?d ¦5í¹CÝ @  A¡€cY?d X¦5+ªúü @  A¢€dY?d ˜¦5 _ø @  A£€eY?d ئ5>iù– @  A¤€fY?d §5î!u~ @  A¥€gY?d X§5°"/x @  A¦€hY?d ˜§5×-† @  A§€iY?d ا5®ˆ… @  A¨€jY?d ¨5šå˜ @  A©€kY?d X¨5\ö½¹ @  Aª€lY?d ˜¨5|¿G @  A«€mY?d ب5I5¾Ó @  A¬€nY?d ©5™}2; @  A­€oY?d X©5¢. Ñ @  A®€pY?d ˜©5‚Û/ @  A¯€qY?d Ø©5·“Ì @  A°€rY?d ª5Œó3  @  A±€sY?d Xª5JàŠ, @  A²€tY?d ˜ª5jˆÒ @  A³€uY?d ت5_#‰F @  A´€vY?d «5k® @  Aµ€wY?d X«5Ñh_¨ @  A¶€xY?d ˜«5ñ]V @  A·€yY?d Ø«5ÏPøU @  A¸€zY?d ¬5Ö Z @  A¹€{Y?d X¬5 ²{ @  Aº€|Y?d ˜¬50ø°… @  A»€}Y?d ج5α @  A¼€~Y?d ­5Õ†=ù @  A½€Y?d X­5žô}L @  A¾€€Y?d ˜­5¾² @  A¿€Y?d Ø­5’lÅs @  AÀ€‚Y?d ®5(e² @  AÁ€ƒY?d X®5É;Ü“ @  A€„Y?d ˜®5éÎÞm @  AÀ…Y?d Ø®5Üøßù @  AÄ€†Y?d ¯5 °S @  AÅ€‡Y?d X¯5R³  @  AÆ€ˆY?d ˜¯5rF é @  AÇ€‰Y?d د5L‹®ê @  AÈ€ŠY?d °5òUX @  AÉ€‹Y?d X°54F«y @  AÊ€ŒY?d ˜°5³©‡ @  AË€Y?d ذ5!…¨ @  AÌ€ŽY?d ±5ñÍ$û @  AÍ€Y?d X±5Êž @  A΀Y?d ˜±5êkï @  AÏ€‘Y?d ر5y…  @  AЀ’Y?d ²5äC%Í @  AÑ€“Y?d X²5"Pœì @  AÒ€”Y?d ˜²5¥ž @  AÓ€•Y?d ز57“Ÿ† @  AÔ€–Y?d ³5çÛn @  AÕ€—Y?d X³5¹ØIh @  AÖ€˜Y?d ˜³5™-K– @  A×€™Y?d س5§àî• @  AØ€šY?d ´5¾®š @  AÙ€›Y?d X´5x½¤» @  AÚ€œY?d ˜´5XH¦E @  AÛ€Y?d Ø´5m~§Ñ @  AÜ€žY?d µ5½6+9 @  AÝ€ŸY?d Xµ5Ò* @  AÞ€ Y?d ˜µ5;'(ñ @  A߀¡Y?d ص5¹M”¢ @  Aà€¢Y?d ¶5$ 4c @  AဣY?d X¶5âB @  A․Y?d€ ˜¶5¨x¼ @  B€¥Y?d ض5×ß1 @  B€¦Y?d ·5—½é @  B€§Y?d X·5œÝ @  B€¨Y?d ˜·5¼(ü @  B€©Y?d Ø·5LWä… @  B€ªY?d ¸5x¨h˜ @  B€«Y?d X¸5p ŽÃ @  B€¬Y?d ˜¸5PüŒ= @  B €­Y?d ظ5 ƒvD @  B €®Y?d ¹5pËú¬ @  B €¯Y?d X¹5ŽÑ9« @  B €°Y?d ˜¹5®$;U @  B €±Y?d ع5^[Á, @  B€²Y?d º5Ãaí @  B€³Y?d Xº5f¹V @  B€´Y?d ˜º5F껨 @  B€µY?d غ5¶•AÑ @  B€¶Y?d »5fÝÍ9 @  B€·Y?d X»5ý—lÒ @  B€¸Y?d ˜»5Ýbn, @  B€¹Y?d Ø»5-”U @  B€ºY?d ¼54SgZ @  B€»Y?d X¼5<ò @  B€¼Y?d ˜¼5ƒÿ @  B€½Y?d ؼ5ìxy† @  B€¾Y?d ½5<0õn @  B€¿Y?d X½5¯Í¤ @  B€ÀY?d ˜½58Z @  B€ÁY?d ؽ5Gâ# @  B€ÂY?d ¾5âBâ @  B€ÃY?d X¾5V½é @  B €ÄY?d ˜¾5vð¿ @  B!€ÅY?d ؾ5†En @  B"€ÆY?d ¿5VÇɆ @  B#€ÇY?d X¿5Íhm @  B$€ÈY?d ˜¿5íxj“ @uÐÀ5  B%€ÉY?d Ø¿5ê @  B&€ÊY?d 0À5y÷Á¸ @  B'€ËY?d pÀ5qV'ã @  B(€ÌY?d °À5Q£% @  B)€ÍY?d ðÀ5¡Üßd @  B*€ÎY?d 0Á5q”SŒ @  B+€ÏY?d pÁ5Ž‹ @  B,€ÐY?d °Á5¯{’u @  B-€ÑY?d ðÁ5_h  @  B.€ÒY?d 0Â5Â@ÈÍ @  B/€ÓY?d pÂ5g@v @  B0€ÔY?d °Â5Gµˆ @  B1€ÕY?d ðÂ5·Êèñ @  B2€ÖY?d 0Ã5g‚d @  B3€×Y?d pÃ5üÈÅò @  B4€ØY?d °Ã5Ü=Ç  @  B5€ÙY?d ðÃ5,B=u @  B6€ÚY?d 0Ä55 Îz @  B7€ÛY?d pÄ5=­(! @  B8€ÜY?d °Ä5X*ß @  B9€ÝY?d ðÄ5í'Ц @  B:€ÞY?d 0Å5=o\N @  B;€ßY?d pÅ5^¦• @  B<€àY?d °Å5~7¤k @  B=€áY?d ðÅ5ŽH^ @  B>€âY?d 0Æ5 þÓ @  B?€ãY?d pÆ5 J @  B@€äY?d °Æ5)ø´ @  BA€åY?d ðÆ5Ù‡ÿÍ @  BB€æY?d 0Ç5 Ïs% @  BC€çY?d pÇ5’…ÒÎ @  BD€èY?d °Ç5²pÐ0 @  BE€éY?d ðÇ5B*I @  BF€êY?d 0È5vð¦T @  BG€ëY?d pÈ5~Q@ @  BH€ìY?d °È5^¤Bñ @  BI€íY?d ðÈ5®Û¸ˆ @  BJ€îY?d 0É5~“4` @  BK€ïY?d pÉ5€‰÷g @  BL€ðY?d °É5 |õ™ @  BM€ñY?d ðÉ5Pà @  BN€òY?d 0Ê5ÍG¯! @  BO€óY?d pÊ5hGwš @  BP€ôY?d °Ê5H²ud @  BQ€õY?d ðÊ5¸Í @  BR€öY?d 0Ë5h…õ @  BS€÷Y?d pË5óÏ¢ @  BT€øY?d °Ë5Ó: à @  BU€ùY?d ðË5#EZ™ @  BV€úY?d 0Ì5: ©– @  BW€ûY?d pÌ52ªOÍ @  BX€üY?d °Ì5_M3 @  BY€ýY?d ðÌ5â ·J @  BZ€þY?d 0Í52h;¢ @  B[€ÿY?d pÍ5qàÓ @  B\€Z?d °Í5Qãâ- @  B]€Z?d ðÍ5¡œT @  B^€Z?d 0Î5<ظ• @  B_€Z?d pÎ5ˆÞGž @  B`€Z?d °Î5¨+E` @  Ba€Z?d ðÎ5XT¿ @  Bb€Z?d 0Ï5ˆ3ñ @  Bc€Z?d pÏ5V’ @  Bd€Z?d °Ï53£ä @  Be€ Z?d ðÏ5ÃÜj @  Bf€ Z?d 0Ð5}Ö/ @  Bg€ Z?d pÐ5u£0t @  Bh€ Z?d °Ð5UV2Š @  Bi€ Z?d ðÐ5¥)Èó @  Bj€Z?d 0Ñ5uaD @  Bk€Z?d pÑ5‹{‡ @  Bl€Z?d °Ñ5«Ž…â @  Bm€Z?d ðÑ5[ñ› @  Bn€Z?d 0Ò5ƵßZ @  Bo€Z?d pÒ5cµá @  Bp€Z?d °Ò5C@ @  Bq€Z?d ðÒ5³?ÿf @  Br€Z?d 0Ó5cwsŽ @  Bs€Z?d pÓ5ø=Òe @  Bt€Z?d °Ó5ØÈЛ @  Bu€Z?d ðÓ5(·*â @  Bv€Z?d 0Ô51ùÙí @  Bw€Z?d pÔ59X?¶ @  Bx€Z?d °Ô5­=H @  By€Z?d ðÔ5éÒÇ1 @  Bz€Z?d 0Õ59šKÙ @  B{€Z?d pÕ5Z7± @  B|€ Z?d °Õ5z³ü @  B}€!Z?d ðÕ5нI… @  B~€"Z?d 0Ö5ùéD @  B€#Z?d pÖ5î® ì @  B€€$Z?d °Ö5Î[" @  B€%Z?d ðÖ5>$Øk @  B‚€&Z?d 0×5îlTƒ @  Bƒ€'Z?d p×5u&õh @  B„€(Z?d °×5UÓ÷– @  B…€)Z?d ð×5¥¬ ï @  B†€*Z?d 0Ø5‘Sò @  B‡€+Z?d pØ5™òg© @  Bˆ€,Z?d °Ø5¹eW @  B‰€-Z?d ðØ5IxŸ. @  BŠ€.Z?d 0Ù5™0Æ @  B‹€/Z?d pÙ5g*ÐÁ @  BŒ€0Z?d °Ù5GßÒ? @  B€1Z?d ðÙ5· (F @  BŽ€2Z?d 0Ú5*䈇 @  B€3Z?d pÚ5äP< @  B€4Z?d °Ú5¯R @  B‘€5Z?d ðÚ5_n¨» @  B’€6Z?d 0Û5&$S @  B“€7Z?d pÛ5l…¸ @  B”€8Z?d °Û54™‡F @  B•€9Z?d ðÛ5Äæ}? @  B–€:Z?d 0Ü5ݨŽ0 @  B—€;Z?d pÜ5Õ hk @  B˜€Z?d 0Ý5ÕË @  B›€?Z?d pÝ5F6óÎ @  Bœ€@Z?d °Ý5fÃñ0 @  B€AZ?d ðÝ5–¼ I @  Bž€BZ?d 0Þ5 ø«ˆ @  BŸ€CZ?d pÞ5¿þTƒ @  B €DZ?d °Þ5Ÿ V} @  B¡€EZ?d ðÞ5ot¬ @  B¢€FZ?d 0ß5¿< ì @  B£€GZ?d pß5$v @  B¤€HZ?d uÐà5/°ß5ƒƒù @  B¥€IZ?d ðß5‰| ü @  B¦JZ?d Hà5ØT  @  B§KZ?d ˆà5:§q @  B¨LZ?d Èà5¸Œ°¯ @  B©MZ?d á5*Ñà @  BªNZ?d Há5˜»Æ> @  B«OZ?d ˆá5ÄÅ @  B¬PZ?d Èá5FTÇ @  B­QZ?d â5©þJ¡ @  B®RZ?d Hâ5+o] @  B¯SZ?d ˆâ5, ä @  B°TZ?d Èâ5®š‡: @  B±UZ?d ã5 <æu @  B²VZ?d Hã5Ž­ñ« @  B³WZ?d ˆã5·ƒE` @  B´XZ?d Èã55R¾ @  BµYZ?d ä5^²L @  B¶ZZ?d Hä5Ü#[È @  B·[Z?d ˆä5O!tf @  B¸ \Z?d Èä5Ͱc¸ @  B¹ ]Z?d å5o÷ @  Bº ^Z?d Hå5©Àº€ @  B»€_Z?d ˆå5,NúÒ @  B¼ `Z?d Èå5®ßí  @  B½ aZ?d æ5Au j @  B¾ bZ?d Hæ5Ãä·´ @  B¿ cZ?d ˆæ5{[  @  BÀ dZ?d Èæ5ùLÓ @  BÁ eZ?d ç5[¶-œ @  B fZ?d Hç5Ù':B @  Bà gZ?d ˆç5à Ž‰ @  BÄ hZ?d Èç5b˜™W @  BÅ iZ?d è5$‰øí @  BÆ jZ?d Hè5¦ï3 @  BÇ kZ?d ˆè5 ÝH @  BÈ lZ?d Èè5ŽL – @  BÉ mZ?d é5,êjÙ @  BÊ nZ?d Hé5®{} @  BË oZ?d ˆé5ò«  @  BÌ pZ?d Èé5p”¼þ @  BÍ qZ?d ê5Ÿ>ñ˜ @  BÎ rZ?d Hê5¯æF @  BÏ sZ?d ˆê5Ë+Ý @  BÐ tZ?d Èê5˜Z< @  BÑ uZ?d ë5:ü]L @  BÒ vZ?d Hë5¸mJ’ @  BÓ wZ?d ˆë5CþY @  BÔ xZ?d Èë5Òé‡ @  BÕ yZ?d ì5hr÷/ @  BÖ zZ?d Hì5êãàñ @  B× {Z?d ˆì5@&Š @  BØ |Z?d Èì5·T @  BÙ }Z?d í5`e @  BÚ ~Z?d Hí5â€rÅ @  BÛ Z?d ˆí5Îßܽ @  BÜ €Z?d Èí5LNËc @  BÝ Z?d î5£ä† @  BÞ ‚Z?d Hî5!u‘Û @  Bß ƒZ?d ˆî57{ð @  Bà „Z?d Èî5µ†l. @  Bá …Z?d ï5 a @  Bâ †Z?d€ Hï5ár @  C ‡Z?d ˆï59úû @  C ˆZ?d Èï5»Œí% @  C ‰Z?d ð5²õGÝ @  C ŠZ?d Hð50dP @  C ‹Z?d ˆð5Tü @  C ŒZ?d Èð5Ö‚ëÜ @  C Z?d ñ5º–Õé @  C ŽZ?d Hñ58Â7 @  C Z?d ˆñ5¡0ïý @  C Z?d Èñ5#¡ø# @  C ‘Z?d ò5 BN¨ @  C ’Z?d Hò5‹ÓYv @  C “Z?d ˆò5ï¤õw @  C ”Z?d Èò5m5â© @  C •Z?d ó5¬€â| @  C –Z?d Hó5.õ¢ @  C —Z?d ˆó5Òvº„ @  C ˜Z?d Èó5Pç­Z @  C ™Z?d ô5þH @  C šZ?d Hô5|Ÿ_Á @  C ›Z?d ˆô5èóÀ @  C œZ?d Èô5šyä @  C Z?d õ5ömÚ+ @  C žZ?d Hõ5tüÍõ @  C ŸZ?d ˆõ5p|Ùã @  C  Z?d Èõ5òíÎ= @  C ¡Z?d ö5Øx¶ @  C ¢Z?d Hö5ZŸoh @  C £Z?d ˆö5>èÃi @  C ¤Z?d Èö5¼yÔ· @  C ¥Z?d ÷5lÊóÒ @  C ¦Z?d H÷5î[ä  @  C! §Z?d ˆ÷5<«* @  C" ¨Z?d È÷5­¼ô @  C# ©Z?d ø5õ&£ @  C$ ªZ?d Hø5‘d1} @  C% «Z?d ˆø5õ| @  C& ¬Z?d Èø5w‚Š¢ @  C' ­Z?d ù5–´— @  C( ®Z?d Hù5™£I @  C) ¯Z?d ˆù50Žƒ @  C* °Z?d Èù5‚¡™] @  C+ ±Z?d ú5¨B/Ö @  C, ²Z?d Hú5*Ó8 @  C- ³Z?d ˆú5N¤”  @  C. ´Z?d Èú5Ì5ƒ× @  C/ µZ?d û5 €ƒ @  C0 ¶Z?d Hû5”Ü @  C1 ·Z?d ˆû5svÛú @  C2 ¸Z?d Èû5ñçÌ$ @  C3 ¹Z?d ü5_)a @  C4 ºZ?d Hü5ÝŸ>¿ @  C5 »Z?d ˆü5¹è’¾ @  C6 ¼Z?d Èü5;y…` @  C7 ½Z?d ý5Wm»U @  C8 ¾Z?d Hý5Õü¬‹ @  C9 ¿Z?d ˆý5!,­Œ @  C: ÀZ?d Èý5£½ºR @  C; ÁZ?d þ5‰^ Ù @  C< ÂZ?d Hþ5Oˆ´® @  C=€ÃZ?d ˆþ5+ÿ¯ @  C>€ÄZ?d Èþ5©nq @  C?€ÅZ?d ÿ5ªZ]ú @  C@ÆZ?d Hÿ5 –ñ @  CA ÇZ?d ˆÿ5íkÙ× @  CB uÐ6ÈZ?d Èÿ5V=Ü @  CCÉZ?d 6åkL @  CDÊZ?d `6gú[_ @  CEËZ?d  6÷^ @  CFÌZ?d à6à€ @  CGÍZ?d 6/¡9` @  CHÎZ?d `6V^¾ @  CI ÏZ?d  6Ïi8t @  CJ ÐZ?d à6Mø/ª @  CK ÑZ?d 6g™! @  CL ÒZ?d `6劎ÿ @  CM ÓZ?d  6ý"þ @  CN ÔZ?d à6l5  @  CO ÕZ?d 6ÂÙ5õ @  CP ÖZ?d `6@H"+ @  CQ ×Z?d  6¼/m  @  CR ØZ?d à6>¾zÓ @  CS ÙZ?d 6WŸ– @  CT ÚZ?d `6ƈH @  CU ÛZ?d  6v±$I @  CV ÜZ?d à6ô 3— @  CW ÝZ?d 6˜4 ¢ @  CX ÞZ?d `6¥| @  CY ßZ?d  6%j @  CZ àZ?d à6œ´´ @  C[ áZ?d 6¶W¯? @  C\ âZ?d `64Ƹá @  C] ãZ?d  6P±à @  C^ äZ?d à6Ò > @  C_ åZ?d 6“$[ @  C` æZ?d `6€3… @  Ca çZ?d  6|e|£ @  Cb èZ?d à6þôk} @  Cc éZ?d 6}¬ñ* @  Cd êZ?d `6ÿ=æô @  Ce ëZ?d  6›JJõ @  Cf ìZ?d à6Û]+ @  Cg íZ?d 6uÏc @  Ch îZ?d ` 6÷^tÀ @  Ci ïZ?d   6niY  @  Cj ðZ?d à 6ìøNÔ @  Ck ñZ?d 6Æø_ @  Cl òZ?d ` 6DŠï @  Cm óZ?d   6 ýC€ @  Cn ôZ?d à 6¢lT^ @  Co õZ?d 6cÙT‹ @  Cp öZ?d ` 6áHCU @  Cq ÷Z?d   6/ s @  Cr øZ?d à 6Ÿ¾­ @  Cs ùZ?d 61Wþè @  Ct úZ?d ` 6³Æé6 @  Cu ûZ?d   6×±E7 @  Cv üZ?d à 6U Ré @  Cw ýZ?d 694lÜ @  Cx þZ?d ` 6»¥{ @  Cy ÿZ?d   6-Ô{› @  Cz [?d à 6¯ElE @  C{ [?d 6…¦ÚÎ @  C| [?d `67Í @  C} [?d  6c@a @  C~ [?d à6áÑvÏ @  C [?d 6|3g  @  C€ [?d `6þ¢p× @  C [?d  6Å?ñ @  C‚ [?d à6€T(/ @  Cƒ  [?d 6‰-‚× @  C„  [?d `6 ¼•  @  C…  [?d  6oË9 @  C†  [?d à6íZ.Ö @  C‡  [?d 6Nã @  Cˆ [?d `6ß= @  C‰ [?d  6šè*÷ @  CŠ [?d à6y=) @  C‹ [?d 62š‹¢ @  CŒ [?d `6° œ| @  C [?d  6Ô|0} @  CŽ [?d à6Ví'£ @  C [?d 6—X'v @  C [?d `6É0¨ @  C‘ [?d  6鮎 @  C’ [?d à6k?hP @  C“ [?d 6ÅÖ @  C” [?d `6GGšË @  C• [?d  6#06Ê @  C– [?d à6¡¡! @  C— [?d 6͵! @  C˜ [?d `6O$ÿ @  C™ [?d  6K¤é @  Cš  [?d à6É5 7 @  C› ![?d 6ãÖ½¼ @  Cœ "[?d `6aGªb @  C #[?d  60c @  Cž $[?d à6‡¡½ @  CŸ %[?d 6W6Ø @  C  &[?d `6Õƒ! @  C¡ '[?d  6)än  @  C¢ ([?d à6«uyþ @  C£ )[?d 6(-ã© @  C¤ *[?d `6ª¼ôw @  C¥ +[?d  6ÎËXv @  C¦ ,[?d à6LZO¨ @  C§ -[?d 6 Nq @  C¨ .[?d `6¢ßfC @  C© /[?d  6;èK‰ @  Cª 0[?d à6¹y\W @  C« 1[?d 6“šêÜ @  C¬ 2[?d `6 ý @  C­ 3[?d  6u|Q @  C® 4[?d à6÷íFÝ @  C¯ 5[?d 66XF @  C° 6[?d `6´ÉQÖ @  C± 7[?d  6H®ð @  C² 8[?d à6Ê? . @  C³ 9[?d 6dÖìk @  C´ :[?d `6æGûµ @  Cµ ;[?d  6‚0W´ @  C¶ <[?d à6¡@j @  C· =[?d 6lµ~_ @  C¸ >[?d `6î$i @  C¹ ?[?d  6ôh† @  Cº @[?d à6˜eX @  C» A[?d 6²†ÉÓ @  C¼ B[?d `60Þ  @  C½ C[?d  6T`r  @  C¾ D[?d à6ÖñeÒ @  C¿ E[?d 6¨ED% @  CÀ F[?d `6*ÔSû @  CÁ G[?d  6Ö³ÝuÐ 6 @  C H[?d à6må×Ö @  CÃI[?d 8 6«Iú @  CÄJ[?d x 6)Ø$ @  CÅK[?d ¸ 6M¯¤% @  CÆL[?d ø 6Ï>³û @  CÇM[?d 8!6£*Î @  CÈN[?d x!6!»š @  CÉO[?d ¸!6¸Œ·Ú @  CÊP[?d ø!6:  @  CËQ[?d 8"6þ @  CÌR[?d x"6’oQ @  CÍS[?d ¸"6ö­P @  CÎT[?d ø"6t‰ºŽ @  CÏU[?d 8#6µ<º[ @  CÐV[?d x#67­­… @  CÑW[?d ¸#6ËÊ⣠@  CÒX[?d ø#6I[õ} @  CÓY[?d 8$6ç²8 @  CÔZ[?d x$6e#æ @  CÕ[[?d ¸$6T«ç @  CÖ\[?d ø$6ƒÅ¼9 @  C×][?d 8%6ïÑ‚  @  CØ^[?d x%6m@•Ò @  CÙ_[?d ¸%6iÀÄ @  CÚ`[?d ø%6ëQ– @  CÛa[?d 8&6Á² ‘ @  CÜb[?d x&6C#7O @  CÝc[?d ¸&6'T›N @  CÞd[?d ø&6¥ÅŒ @  Cße[?d 8'6uv«õ @  Càf[?d x'6÷ç¼+ @  Cág[?d ¸'6 €ó  @  Câh[?d€ ø'6GLj @  Di[?d 8(6m^ž @  Dj[?d x(6ïωÊ @  Dk[?d ¸(6NñÞ& @  Dl[?d ø(6Ì`Éø @  Dm[?d 8)6nƨ· @  Dn[?d x)6ìW¿i @  Do[?d ¸)6»ÒÍÙ @  Dp[?d ø)69CÚ @  D q[?d 8*6Öé—a @  D r[?d x*6Tx€¿ @  D s[?d ¸*6õF×S @  D t[?d ø*6w×À @  D u[?d 8+6Õq¡Â @  Dv[?d x+6Wà¶ @  Dw[?d ¸+6È”˜  @  Dx[?d ø+6J~ @  Dy[?d 8,6!¥‘Ö @  Dz[?d x,6£4† @  D{[?d ¸,6 Ñä @  D|[?d ø,6€›Æ: @  D}[?d 8-6"=§u @  D~[?d x-6 ¬°« @  D[?d ¸-6‡ºD @  D€[?d ø-6™­š @  D[?d 8.6ê3àü @  D‚[?d x.6h¢÷" @  Dƒ[?d ¸.6Éœ Î @  D„[?d ø.6K · @  D…[?d 8/6é«Ö_ @  D†[?d x/6k:Á @  D‡[?d ¸/6åHÈ @  D ˆ[?d ø/6gÙßS @  D!‰[?d 806«éŽF @  D"Š[?d x06)x™˜ @  D#‹[?d ¸06ˆFÎt @  D$Œ[?d ø06 ×Ùª @  D%[?d 816¨q¸å @  D&Ž[?d x16*à¯; @  D'[?d ¸16}eÝ‹ @  D([?d ø16ÿôÊU @  D)‘[?d 826^‡3 @  D*’[?d x26’Ïí @  D+“[?d ¸263ñÇ @  D,”[?d ø26±`Ðß @  D-•[?d 836Ʊ @  D.–[?d x36‘W¦N @  D/—[?d ¸36#ˆò @  D0˜[?d ø36Œ²Ÿ, @  D1™[?d 846ç„ @  D2š[?d x46eƒ–Z @  D3›[?d ¸46ĽÁ¶ @  D4œ[?d ø46F,Öh @  D5[?d 856䊷' @  D6ž[?d x56f ù @  D7Ÿ[?d ¸56¬)ë• @  D8 [?d ø56.¸üK @  D9¡[?d 866Á±- @  D:¢[?d x66Cƒ¦ó @  D;£[?d ¸66â½ñ @  D<¤[?d ø66`,æÁ @  D=¥[?d 876ЇŽ @  D>¦[?d x76@P @  D?§[?d ¸76`nŸÎ @  D@¨[?d ø76âÿˆ @  DA©[?d 886¤îéª @  DBª[?d x86&þt @  DC«[?d ¸86‡A©˜ @  DD¬[?d ø86оF @  DE­[?d 896§vß  @  DF®[?d x96%çÈ× @  DG¯[?d ¸96rbºg @  DH°[?d ø96ðó­¹ @  DI±[?d 8:6Yàß @  DJ²[?d x:6È÷ @  DK³[?d ¸:6<ö í @  DL´[?d ø:6¾g·3 @  DMµ[?d 8;6ÁÖ| @  DN¶[?d x;6žPÁ¢ @  DO·[?d ¸;6$ï @  DP¸[?d ø;6ƒµøÀ @  DQ¹[?d 8<6èæh @  DRº[?d x<6j„ñ¶ @  DS»[?d ¸<6˺¦Z @  DT¼[?d ø<6I+±„ @  DU½[?d 8=6ëÐË @  DV¾[?d x=6iÇ @  DW¿[?d ¸=6S~™h @  DXÀ[?d ø=6Ñ @  DYÁ[?d 8>6>EÃÐ @  DZÂ[?d x>6¼ÔÔ @  D[Ã[?d ¸>6êƒâ @  D\Ä[?d ø>6Ÿ{”< @  D]Å[?d 8?6=Ýõs @  D^Æ[?d x?6¿Lâ­ @  D_Ç[?duÐ@67 ¸?61>ë¡ @  D`È[?d ø?6³¯ü @  DaÉ[?d P@6í«ä @  DbÊ[?d @6ßuÏ @  Dc Ë[?d Ð@6…7 @  Dd Ì[?d A6ÈÍ»ë @  De Í[?d PA68²A’ @  Df Î[?d A6GCl @  Dg Ï[?d ÐA6í¦$ü @  Dh Ð[?d B6pâ„= @  Di Ñ[?d PB6€~D @  Dj Ò[?d B6 h|º @  Dk Ó[?d ÐB6£2>v @  Dl Ô[?d C6sz²ž @  Dm Õ[?d PC6ƒHç @  Dn Ö[?d C6£ðJ @  Do ×[?d ÐC6žàq… @  Dp Ø[?d D6‡®‚Š @  Dq Ù[?d PD6wÑxó @  Dr Ú[?d D6W$z  @  Ds Û[?d ÐD6T~8Á @  Dt Ü[?d E6„6´) @  Du Ý[?d PE6tINP @  Dv Þ[?d E6T¼L® @  Dw ß[?d ÐE6<êâ @  Dx à[?d F6¡®²# @  Dy á[?d PF6QÑHZ @  Dz â[?d F6q$J¤ @  D{ ã[?d ÐF6r~h @  D| ä[?d G6¢6„€ @  D} å[?d PG6RI~ù @  D~ æ[?d G6r¼| @  D ç[?d ÐG6ûVˆ @  D€ è[?d H6'Ú• @  D é[?d PH6×{ ì @  D‚ ê[?d H6÷Ž" @  Dƒ ë[?d ÐH6ôÔ`Þ @  D„ ì[?d I6$œì6 @  D… í[?d PI6ÔãO @  D† î[?d I6ô± @  D‡ ï[?d ÐI6÷s! @  Dˆ ð[?d J6œ³Óà @  D‰ ñ[?d PJ6lÌ)™ @  DŠ ò[?d J6L9+g @  D‹ ó[?d ÐJ6Oci« @  DŒ ô[?d K6Ÿ+åC @  D õ[?d PK6oT: @  DŽ ö[?d K6O¡Ä @  D ÷[?d ÐK6r±&X @  D ø[?d L6kÿÕW @  D‘ ù[?d PL6›€/. @  D’ ú[?d L6»u-Ð @  D“ û[?d ÐL6¸/o @  D” ü[?d M6hgãô @  D• ý[?d PM6˜ @  D– þ[?d M6¸ís @  D— ÿ[?d ÐM6~Cn& @  D˜ \?d N6ãÎç @  D™ \?d PN6x4ž @  Dš \?d N636` @  D› \?d ÐN60×t¬ @  Dœ \?d O6àŸøD @  D \?d PO6à= @  Dž \?d O60à @  DŸ \?d ÐO6ï @  D  \?d P6¢Ý ] @  D¡  \?d PP6R¢Z$ @  D¢  \?d P6rWXÚ @  D£  \?d ÐP6q  @  D¤  \?d Q6¡E–þ @  D¥  \?d PQ6Q:l‡ @  D¦ \?d Q6qÏny @  D§ \?d ÐQ6„. é @  D¨ \?d R6j©( @  D© \?d PR6éSQ @  Dª \?d R6ÉàQ¯ @  D« \?d ÐR6ʺc @  D¬ \?d S6òŸ‹ @  D­ \?d PS6êeò @  D® \?d S6Êxg  @  D¯ \?d ÐS6÷h\ @  D° \?d T6î&¯Ÿ @  D± \?d PT6YUæ @  D² \?d T6>¬W @  D³ \?d ÐT6=öÔ @  D´ \?d U6í¾™< @  Dµ \?d PU6ÁcE @  D¶ \?d U6=4a» @  D· \?d ÐU6Ub?÷ @  D¸  \?d V6È&Ÿ6 @  D¹ !\?d PV68YeO @  Dº "\?d V6¬g± @  D» #\?d ÐV6ö%} @  D¼ $\?d W6˾©• @  D½ %\?d PW6;ÁSì @  D¾ &\?d W64Q @  D¿ '\?d ÐW6™%K¬ @  DÀ (\?d X6­ÚDZ @  DÁ )\?d PX6]¥=È @  D *\?d X6}P?6 @  Dà +\?d ÐX6~ }ú @  DÄ ,\?d Y6®Bñ @  DÅ -\?d PY6^= k @  DÆ .\?d Y6~È • @  DÇ /\?d ÐY6‹)n @  DÈ 0\?d Z6mÎÄ @  DÉ 1\?d PZ6æ4½ @  DÊ 2\?d Z6Æç6C @  DË 3\?d ÐZ6Žt @  DÌ 4\?d [6õøg @  DÍ 5\?d P[6åŠ @  DÎ 6\?d [6Åà @  DÏ 7\?d Ð[6øo;| @  DÐ 8\?d \6á!Ès @  DÑ 9\?d P\6^2  @  DÒ :\?d \61«0ô @  DÓ ;\?d Ð\62ñr8 @  DÔ <\?d ]6â¹þÐ @  DÕ =\?d P]6Æ© @  DÖ >\?d ]623W @  D× ?\?d Ð]6ª5M  @  DØ @\?d ^67qíË @  DÙ A\?d P^6Dz @  DÚ B\?d ^6çûL @  DÛ C\?d Ð^6ä¡W€ @  DÜ D\?d _64éÛh @  DÝ E\?d P_6Ä–! @  DÞ F\?d _6äc#ï @  DuÐ`6ß G\?d Ð_6ñ²ã @  DàH\?d (`6OJVŽ @  DáI\?d h`6¿5¬÷ @  DâJ\?d€ ¨`6벯 @  EK\?d è`6 ¸J @  EL\?d (a6ÙP4¢ @  EM\?d ha6ìf56 @  EN\?d ¨a6Ì“7È @  EO\?d èa6÷À" @  EP\?d (b6j„¯ã @  EQ\?d hb6TI à @  ER\?d ¨b6t¼ @  E S\?d èb6²¯±? @  E T\?d (c6bç=× @  E U\?d hc6Wѽ @  E W\?d èc6)'d» @  EX\?d (d60i—´ @  EY\?d hd6£ W @  EZ\?d ¨d6ƒð© @  E[\?d èd6Eã·ˆ @  E\\?d (e6•«;` @  E]\?d he6 :ô @  E^\?d ¨e6€h8  @  E_\?d èe6&Œ9< @  E`\?d (f6»È™ý @  Ea\?d hf6…<þ @  Eb\?d ¨f6¥ð> @  Ec\?d èf6cã‡! @  Ed\?d (g6³« É @  Ee\?d hg6† ] @  Ef\?d ¨g6¦h£ @  Eg\?d èg6økR¥ @  Eh\?d (h6̔޸ @  Ei\?d hh6Nþbë @  E j\?d ¨h6n ` @  E!k\?d èh6¨Ù4 @  E"l\?d (i6xPUÜ @  E#m\?d hi6MfTH @  E$n\?d ¨i6m“V¶ @  E%o\?d èi6VÀn\ @  E&p\?d (j6˄Π@  E'q\?d hj6õIkž @  E(r\?d ¨j6Õ¼i` @  E)s\?d èj6¯ÐA @  E*t\?d (k6Ãç\© @  E+u\?d hk6öÑ]= @  E,v\?d ¨k6Ö$_à @  E-w\?d èk6ˆ'Å @  E.x\?d (l6‘iöÊ @  E/y\?d hl6m) @  E0z\?d ¨l6"ðo× @  E1{\?d èl6äãÖö @  E2|\?d (m64«Z @  E3}\?d hm6[Š @  E4~\?d ¨m6!hYt @  E5\?d èm6jÁ @  E6€\?d (n6÷^¹ @  E7\?d hn6É“ @  E8‚\?d ¨n6éfý @  E9ƒ\?d èn6/u§Ü @  E:„\?d (o6ÿ=+4 @  E;…\?d ho6Ê *  @  E<†\?d ¨o6êþ(^ @  E=‡\?d èo6´ýrX @  E>ˆ\?d (p6 #Îê @  E?‰\?d hp6&Nt+ @  E@Š\?d ¨p6»vÕ @  EA‹\?d èp6À¨Ïô @  EBŒ\?d (q6àC @  EC\?d hq6%ÖBˆ @  EDŽ\?d ¨q6#@v @  EE\?d èq6>pxœ @  EF\?d (r6£4Ø] @  EG‘\?d hr6ù}^ @  EH’\?d ¨r6½   @  EI“\?d èr6{Æ @  EJ”\?d (s6«WJi @  EK•\?d hs6žaKý @  EL–\?d ¨s6¾”I @  EM—\?d ès6à— @  EN˜\?d (t6ùÙà  @  EO™\?d ht6jµ{é @  EPš\?d ¨t6J@y @  EQ›\?d èt6ŒSÀ6 @  ERœ\?d (u6\LÞ @  ES\?d hu6i-MJ @  ETž\?d ¨u6IØO´ @  EUŸ\?d èu6ïˆ r @  E}Ç\?d è6`‹Qt @  E~È\?d @€65³ @  EÉ\?d €€6cj,Ð @  E€Ê\?d À€6áû; @  EË\?d 6u1 @  E‚Ì\?d @6÷ Ç @  EƒÍ\?d €6`òs @  E„Î\?d À6âc ­ @  E…Ï\?d ‚6Æå‚X @  E†Ð\?d @‚6Dt•† @  E‡Ñ\?d €‚6ØÝ%¥ @  EˆÒ\?d À‚6ZL2{ @  E‰Ó\?d ƒ6Άl @  EŠÔ\?d @ƒ6L² @  E‹Õ\?d €ƒ6ÛE @  EŒÖ\?d Àƒ6YÔØ @  E×\?d „6œº @  EŽØ\?d @„6™­Ñ @  EÙ\?d €„6/‘# @  EÚ\?d À„6­4Ì @  E‘Û\?d …69ÊÛ @  E’Ü\?d @…6»[ @  E“Ý\?d €…6, ± @  E”Þ\?d À…6®˜o @  E•ß\?d †6©´F @  E–à\?d @†6•8£˜ @  E—á\?d €†6 ‘» @  E˜â\?d À†6‹e @  E™ã\?d ‡6Ê&r @  Ešä\?d @‡6[1¬ @  E›å\?d €‡6 % @  Eœæ\?d À‡6ˆ˜2Æ @  Eç\?d ˆ6`õó @  Ežè\?d @ˆ6âdäÝ @  EŸé\?d €ˆ6ÂjM® @  E ê\?d Àˆ6@ûZp @  E¡ë\?d ‰6Ô1xg @  E¢ì\?d @‰6V o¹ @  E£í\?d €‰6Áò{  @  E¤î\?d À‰6CclÓ @  E¥ï\?d Š6gåã& @  E¦ð\?d @Š6åtôø @  E§ñ\?d €Š6yÝDÛ @  E¨ò\?d ÀŠ6ûLS @  E©ó\?d ‹6o†q @  Eªô\?d @‹6ífÌ @  E«õ\?d €‹6zErx @  E¬ö\?d À‹6øÔe¦ @  E­÷\?d Œ6=Ûq @  E®ø\?d @Œ6¿™Ì¯ @  E¯ù\?d €Œ6Ž‘Bl @  E°ú\?d ÀŒ6 U² @  E±û\?d 6˜Êw¥ @  E²ü\?d @6[`{ @  E³ý\?d €6 tÏ @  E´þ\?d À6˜c @  Eµÿ\?d Ž6$XÁ· @  E¶]?d @Ž6¦ÉÖi @  E·]?d €Ž6:`fJ @  E¸]?d ÀŽ6¸ñq” @  E¹]?d 6,;Sƒ @  Eº]?d @6®ªD] @  E»]?d €69øPé @  E¼]?d À6»iG7 @  E½]?d 6Ù%¶] @  E¾]?d @6[´¡ƒ @  E¿ ]?d €6Õ½b @  EÀ ]?d À6W,¼ @  EÁ ]?d ‘6Ãæ;« @  E ]?d @‘6Aw,u @  Eà ]?d €‘6Ö%8Á @  EÄ]?d À‘6T´/ @  EÅ]?d ’6p2 ê @  EÆ]?d @’6ò£·4 @  EÇ]?d €’6n  @  EÈ]?d À’6ì›É @  EÉ]?d “6xQ2Þ @  EÊ]?d @“6úÀ% @  EË]?d €“6m’1´ @  EÌ]?d À“6ï&j @  EÍ]?d ”6*ߘ½ @  EÎ]?d @”6¨Nc @  EÏ]?d €”6™F  @  EÐ]?d À”6×~ @  EÑ]?d •64i @  EÒ]?d @•6 Œ#· @  EÓ]?d €•6šÞ7 @  EÔ]?d À•6O Ý @  EÕ]?d –6¡~–ô @  EÖ ]?d @–6#ï* @  E×!]?d €–6¿F1  @  EØ"]?d À–6=×&× @  EÙ#]?d —6©À @  EÚ$]?d @—6+Œ @  EÛ%]?d €—6¼Þª @  EÜ&]?d À—6>Ot @  EÝ']?d ˜6Ö"ѱ @  EÞ(]?d @˜6T³Æo @  Eß)]?d €˜6t½o @  Eà*]?d À˜6ö,x @  Eá+]?d ™6bæZÕ @  Eâ,]?d€ @™6!0º  @  F-]?d €™6W#æ– @  F.]?d À™6Õ²ñH @  F/]?d š64}…P @  F0]?d @š6¶ì’Ž @  F1]?d €š6ä÷}× @  F2]?d Àš6ffj  @  F3]?d ›6<d @  F4]?d @›6¾º @  F 5]?d €›6ì”ïã @  F 6]?d À›6nø= @  F 7]?d œ6n½ @  F 8]?d @œ6ìªÙ @  F 9]?d €œ6¾E€ @  F:]?d Àœ6<‹R^ @  F;]?d 6ËRÓ @  F<]?d @6Ià  @  F=]?d €6ØéT @  F>]?d À6™IþŠ @  F?]?d ž6a¦_ @  F@]?d @ž6—ð± @  FA]?d €ž6Åë^Ø @  FB]?d Àž6GzI @  FC]?d Ÿ64k @  FD]?d @Ÿ6Ÿ“#µ @  FE]?d €Ÿ6͈Ìì @  FF]uР6?d ÀŸ6OÛ2 @  FG]?d  6o´ @  F H]?d X 6œŸxj @  F I]?d ˜ 6΄—3 @  F J]?d Ø 6L€í @  F K]?d ¡6ªÊäÐ @  F L]?d X¡6([ó @  F! M]?d ˜¡6z@W @  F" N]?d Ø¡6øÑ ‰ @  F# O]?d ¢6‘ @  F$ P]?d X¢6›hO @  F% Q]?d ˜¢6É”‡ @  F& R]?d Ø¢6KÈ @  F' S]?d £6}í¥ @  F( T]?d X£6“ìú{ @  F) U]?d ˜£6Á÷" @  F* V]?d Ø£6Cfü @  F+ W]?d ¤6CóGÆ @  F, X]?d X¤6ÁbP @  F- Y]?d ˜¤6“y¿A @  F. Z]?d ؤ6訟 @  F/ []?d ¥6æ1ë @  F0 \]?d X¥6d üÌ @  F1 ]]?d ˜¥66»• @  F2 ^]?d Ø¥6´*K @  F3 _]?d ¦6ÈRI @  F4 `]?d X¦6JÃ^Q @  F5 a]?d ˜¦6ر @  F6 b]?d ئ6šI¦Ö @  F7 c]?d §6À1Û» @  F8 d]?d X§6B Ìe @  F9 e]?d ˜§6»#< @  F: f]?d ا6’*4â @  F; g]?d ¨6¿Ê @  F< h]?d X¨6=Ÿ @  F= i]?d ˜¨6o„öM @  F> j]?d ب6íá“ @  F? k]?d ©6¥Íƒ< @  F@ l]?d X©6'\”â @  FA m]?d ˜©6uG{» @  FB n]?d Ø©6÷Öle @  FC o]?d ª6} @  FD p]?d Xª6”ˆ£ @  FE q]?d ˜ª6Æ“àú @  FF r]?d ت6D÷$ @  FG s]?d «6zŠI @  FH t]?d X«6œë— @  FI u]?d ˜«6ÎðrÎ @  FJ v]?d Ø«6Lae @  FK w]?d ¬6Lô * @  FL x]?d X¬6Îe7ô @  FM y]?d ˜¬6œ~Ø­ @  FN z]?d ج6ïÏs @  FO {]?d ­6é6Œþ @  FP |]?d X­6k§›  @  FQ }]?d ˜­69¼ty @  FR ~]?d Ø­6»-c§ @  FS ]?d ®6*Ãoà @  FT €]?d X®6¨Rx> @  FU ]?d ˜®6úI—g @  FV ‚]?d Ø®6xØ€¹ @  FW ƒ]?d ¯6" ýÔ @  FX „]?d X¯6 1ê  @  FY …]?d ˜¯6ò*S @  FZ †]?d د6p» @  F[ ‡]?d °6×¾  @  F\ ˆ]?d X°6U/Ô @  F] ‰]?d ˜°64à @  F^ Š]?d ذ6…¥÷S @  F_ ‹]?d ±6cz“n @  F` Œ]?d X±6áë„° @  Fa ]?d ˜±6³ðké @  Fb Ž]?d ر61a|7 @  Fc ]?d ²6Ю/ @  Fd ]?d X²6R?ñ @  Fe ‘]?d ˜²6$ð¨ @  Ff ’]?d ز6‚µçv @  Fg “]?d ³6ØÍš @  Fh ”]?d X³6Z\Å @  Fi •]?d ˜³6Gbœ @  Fj –]?d س6ŠÖuB @  Fk —]?d ´6ŠC0x @  Fl ˜]?d X´6Ò'¦ @  Fm ™]?d ˜´6ZÉÈÿ @  Fn š]?d Ø´6ØXß! @  Fo ›]?d µ6/œ¬ @  Fp œ]?d Xµ6­‹r @  Fq ]?d ˜µ6ÿ d+ @  Fr ž]?d ص6}šsõ @  Fs Ÿ]?d ¶6â>1 @  Ft  ]?d X¶6ƒs)ï @  Fu ¡]?d ˜¶6Ñhƶ @  Fv ¢]?d ض6SùÑh @  Fw £]?d ·6 ¬ @  Fx ¤]?d X·6‹»Û @  Fy ¥]?d ˜·6Ù T‚ @  Fz ¦]?d Ø·6[šC\ @  F{ §]?d ¸6v¾yt @  F| ¨]?d X¸6ô/nª @  F} ©]?d ˜¸6¦4ó @  F~ ª]?d ظ6$¥–- @  F «]?d ¹6+ij @  F€ ¬]?d X¹6 ºÓm @  F ­]?d ˜¹6_¡<4 @  F‚ ®]?d ع6Ý0+ê @  Fƒ ¯]?d º6<ÿ_ò @  F„ °]?d Xº6¾nH, @  F… ±]?d ˜º6ìu§u @  F† ²]?d غ6nä°« @  F‡ ³]?d »64œÍÆ @  Fˆ ´]?d X»6¶ Ú @  F‰ µ]?d ˜»6ä5A @  FŠ ¶]?d Ø»6f‡"Ÿ @  F‹ ·]?d ¼6fg¥ @  FŒ ¸]?d X¼6äƒp{ @  F ¹]?d ˜¼6¶˜Ÿ" @  FŽ º]?d ؼ64 ˆü @  F »]?d ½6ÃÐËq @  F ¼]?d X½6AAܯ @  F‘ ½]?d ˜½6Z3ö @  F’ ¾]?d ؽ6‘Ë$( @  F“ ¿]?d ¾6ã|ý @  F” À]?d X¾6Ÿrk# @  F• Á]?d ˜¾6Íi„z @  F– Â]?d ؾ6Oø“¤ @  F— Ã]?d ¿6€îÉ @  F˜ Ä]?d X¿6—ù @  F™ Å]?d ˜¿6Å N @uÐÀ6  Fš Æ]?d Ø¿6~\ÝE @  F›Ç]?d 0À6w:" @  FœÈ]?d pÀ6æ-ü @  FÉ]?d °À6ÓýÂ¥ @  FžÊ]?d ðÀ6QlÕ{ @  FŸË]?d 0Á6·³±F @  F Ì]?d pÁ65"¦˜ @  F¡Í]?d °Á6g9IÁ @  F¢Î]?d ðÁ6å¨^ @  F£Ï]?d 0Â6g* @  F¤Ð]?d pÂ6†ö=Ù @  F¥Ñ]?d °Â6ÔíÒ€ @  F¦Ò]?d ðÂ6V|Å^ @  F§Ó]?d 0Ã6 ¸3 @  F¨Ô]?d pÃ6Ž•¯í @  F©Õ]?d °Ã6ÜŽ@´ @  FªÖ]?d ðÃ6^Wj @  F«×]?d 0Ä6^ŠP @  F¬Ø]?d pÄ6ÜŽ @  F­Ù]?d °Ä6Žê× @  F®Ú]?d ðÄ6 ‘ý  @  F¯Û]?d 0Å6ûH¾„ @  F°Ü]?d pÅ6yÙ©Z @  F±Ý]?d °Å6+ÂF @  F²Þ]?d ðÅ6©SQÝ @  F³ß]?d 0Æ6Õ+ @  F´à]?d pÆ6Wº Ç @  Fµá]?d °Æ6¡äž @  F¶â]?d ðÆ6‡0ó@ @  F·ã]?d 0Ç6ÝHŽ- @  F¸ä]?d pÇ6_Ù™ó @  F¹å]?d °Ç6 Âvª @  Fºæ]?d ðÇ6Sat @  F»ç]?d 0È6¢w[\ @  F¼è]?d pÈ6 æL‚ @  F½é]?d °È6rý£Û @  F¾ê]?d ðÈ6ðl´ @  F¿ë]?d 0É6¸´Öª @  FÀì]?d pÉ6:%Át @  FÁí]?d °É6h>.- @  FÂî]?d ðÉ6ê¯9ó @  FÃï]?d 0Ê6 `Më @  FÄð]?d pÊ6‰ñZ5 @  FÅñ]?d °Ê6Ûêµl @  FÆò]?d ðÊ6Y{¢² @  FÇó]?d 0Ë6ßß @  FÈô]?d pË6’È @  FÉõ]?d °Ë6Ó‰'X @  FÊö]?d ðË6Q0† @  FË÷]?d 0Ì6Qu¼ @  FÌø]?d pÌ6Óbb @  FÍù]?d °Ì6; @  FÎú]?d ðÌ6–šå @  FÏû]?d 0Í6ôOÙh @  FÐü]?d pÍ6vÞζ @  FÑý]?d °Í6$Å!ï @  FÒþ]?d ðÍ6¦T61 @  FÓÿ]?d 0Î6úÿZ_ @  FÔ^?d pÎ6xnM @  FÕ^?d °Î6*u¢Ø @  FÖ^?d ðÎ6¨äµ @  F×^?d 0Ï6òœÈk @  FØ^?d pÏ6p ßµ @  FÙ^?d °Ï6"0ì @  FÚ^?d ðÏ6 ‡'2 @  FÛ^?d 0Ð6‚-µ @  FÜ^?d pÐ6…:k @  FÝ ^?d °Ð6×Õ2 @  FÞ ^?d ðÐ6U™Âì @  Fß ^?d 0Ñ6³F¦Ñ @  Fà ^?d pÑ61×± @  Fá ^?d °Ñ6cÌ^V @  Fâ^?d€ ðÑ6•žU. @  G^?d 0Ò6•i @  G^?d pÒ6~Á @  G^?d °Ò6€Óju @  G^?d ðÒ6B}« @  G^?d 0Ó6–ˆ_¼ @  G^?d pÓ6Hb @  G^?d °Ó6ˆ°øA @  G^?d ðÓ6 !ïŸ @  G ^?d 0Ô6ÏýQH @  G ^?d pÔ6MlF– @  G ^?d °Ô6Ú>R" @  G ^?d ðÔ6X¯Eü @  G ^?d 0Õ6Ìegë @  G^?d pÕ6Nôp5 @  G^?d °Õ6üþö @  G^?d ðÕ6ýmé( @  G^?d 0Ö6D\_ @  G ^?d pÖ6ÆÍHß @  G!^?d °Ö6QŸ\k @  G"^?d ðÖ6ÓKµ @  G#^?d 0×6GÄi¢ @  G$^?d p×6ÅU~| @  G%^?d °×6YüÎ_ @  G&^?d ð×6ÛmÙ @  G'^?d 0Ø63D @  G(^?d pØ6±‘š @  G)^?d °Ø6&Ã. @  G*^?d ðØ6¤R ð @  G+^?d 0Ù60˜.ç @  G,^?d pÙ6² 99 @  G-^?d °Ù6’J @  G .^?d ðÙ6–‡” @  G!/^?d 0Ú64a @  G"0^?d pÚ6¶¿ @  G#1^?d °Ú6!Ó  @  G$2^?d ðÚ6£BÕ @  G%3^?d 0Û67ˆ> @  G&4^?d pÛ6µ) @  G'5^?d °Û6)°™? @  G(6^?d ðÛ6«!Žá @  G)7^?d 0Ü6ný06 @  G*8^?d pÜ6ìl'è @  G+9^?d °Ü6{>3\ @  G,:^?d ðÜ6ù¯$‚ @  G-;^?d 0Ý6me• @  G.<^?d pÝ6ïôK @  G/=^?d °Ý6ÞüŸˆ @  G0>^?d ðÝ6\mˆV @  G1?^?d 0Þ6 +n @  G2@^?d pÞ6—<° @  G3A^?d °Þ6Ï( @  G4B^?d ðÞ6‚^?Ú @  G5C^?d 0ß6”Í @  G6D^?d pß6”  @  G7E^?d uÐà6/°ß6¬º0 @  G8F^?d ðß6Š=­î @  G9G^?d Hà6O ¾À @  G:H^?d ˆà6oþ¼> @  G;I^?d Èà6ZȽª @  G<J^?d á6Š€1B @  G=K^?d Há6L“ˆc @  G>L^?d ˆá6lfŠ @  G?M^?d Èá6@ 0\ @  G@N^?d â6ÝO @  GAO^?d Hâ6æ¨w @  GBP^?d ˆâ6Æéª‰ @  GCQ^?d Èâ6óß« @  GDR^?d ã6#—'õ @  GES^?d Hã6儞Ô @  GFT^?d ˆã6Åqœ* @  GGU^?d Èã6û¼9) @  GHV^?d ä6âòÊ& @  GIW^?d Hä6¼ñ  @  GJX^?d ˆä6œ’Þ @  GKY^?d Èä6©2“J @  GLZ^?d å6yz¢ @  GM[^?d Hå6¿i¦ƒ @  GN\^?d ˆå6Ÿœ¤} @  GO]^?d Èå6 ð?ž @  GP^^?d æ6‘´Ÿ_ @  GQ_^?d Hæ67Pži @  GR`^?d ˆæ6¥œ— @  GSa^?d Èæ6"“ @  GTb^?d ç6òÛë @  GUc^?d Hç64ȨÊ @  GVd^?d ˆç6=ª4 @  GWe^?d Èç6*ð7 @  GXf^?d è6ƒ* @  GYg^?d Hè6@ Ù, @  GZh^?d ˆè6`ùÛÒ @  G[i^?d Èè6UÏÚF @  G\j^?d é6…‡V® @  G]k^?d Hé6C”ï @  G^l^?d ˆé6caíq @  G_m^?d Èé6á Q" @  G`n^?d ê6|Oñã @  Gao^?d Hê6GÉ  @  Gbp^?d ˆê6géË÷ @  Gcq^?d Èê6RßÊc @  Gdr^?d ë6‚—F‹ @  Ges^?d Hë6D„ÿª @  Gft^?d ˆë6dqýT @  Ggu^?d Èë6Z¼XW @  Ghv^?d ì6Cò«X @  Giw^?d Hì6ññ^ @  Gjx^?d ˆì6=ó  @  Gky^?d Èì62ò4 @  Glz^?d í6Øz~Ü @  Gm{^?d Hí6iÇý @  Gn|^?d ˆí6>œÅ @  Go}^?d Èí6­ð^à @  Gp~^?d î60´þ! @  Gq^?d Hî6{ƾ” @  Gr€^?d ˆî6[3¼j @  Gs^?d Èî6n½þ @  Gt‚^?d ï6¾M1 @  Guƒ^?d Hï6x^ˆ7 @  Gv„^?d ˆï6X«ŠÉ @  Gw…^?d Èï6ff/Ê @  Gx†^?d ð6ظ“x @  Gy‡^?d Hð6†»É~ @  Gzˆ^?d ˆð6¦NË€ @  G{‰^?d Èð6“xÊ @  G|Š^?d ñ6C0Fü @  G}‹^?d Hñ6…#ÿÝ @  G~Œ^?d ˆñ6¥Öý# @  G^?d Èñ6jíwÓ @  G€Ž^?d ò6÷©× @  G^?d Hò6Ìúïø @  G‚^?d ˆò6ìí @  Gƒ‘^?d Èò6Ù9ì’ @  G„’^?d ó6 q`z @  G…“^?d Hó6ÏbÙ[ @  G†”^?d ˆó6ï—Û¥ @  G‡•^?d Èó6ÑZ~¦ @  Gˆ–^?d ô6È© @  G‰—^?d Hô6–ׯ @  GŠ˜^?d ˆô6¶âÕQ @  G‹™^?d Èô6ƒÔÔÅ @  GŒš^?d õ6SœX- @  G›^?d Hõ6•á  @  GŽœ^?d ˆõ6µzãò @  G^?d Èõ6&x @  Gž^?d ö6»RØÐ @  G‘Ÿ^?d Hö6¶Ùæ @  G’ ^?d ˆö6=CÛ @  G“¡^?d Èö6uÚŒ @  G”¢^?d ÷6Ø=Vd @  G•£^?d H÷6.ïE @  G–¤^?d ˆ÷6>Ûí» @  G—¥^?d È÷6H¸ @  G˜¦^?d ø64éÄ¥ @  G™§^?d Hø6jꞣ @  Gš¨^?d ˆø6Jœ] @  G›©^?d Èø6)É @  Gœª^?d ù6¯a! @  G«^?d Hù6ir¨ @  Gž¬^?d ˆù6I‡ªþ @  GŸ­^?d Èù6Ëí­ @  G ®^?d ú6V©¶l @  G¡¯^?d Hú6múކ @  G¢°^?d ˆú6MŒx @  G£±^?d Èú6x9ì @  G¤²^?d û6¨q @  G¥³^?d Hû6nb¸% @  G¦´^?d ˆû6N—ºÛ @  G§µ^?d Èû6pZØ @  G¨¶^?d ü6iì× @  G©·^?d Hü67¶Ñ @  Gª¸^?d ˆü6â´/ @  G«¹^?d Èü6"Ôµ» @  G¬º^?d ý6òœ9S @  G­»^?d Hý64€r @  G®¼^?d ˆý6z‚Œ @  G¯½^?d Èý6‡o @  G°¾^?d þ6R¹® @  G±¿^?d Hþ6Læ­‰ @  G²À^?d ˆþ6l¯w @  G³Á^?d Èþ6Y%®ã @  G´Â^?d ÿ6‰m"  @  GµÃ^?d Hÿ6O~›* @  G¶Ä^?d ˆÿ6o‹™Ô @  G·uÐ7Å^?d Èÿ6hà @  G¸ Æ^?d 7ò& @  G¹Ç^?d `7@ñN  @  GºÈ^?d  7`LÞ @  G»É^?d à7U2MJ @  G¼Ê^?d 7…zÁ¢ @  G½Ë^?d `7Cixƒ @  G¾Ì^?d  7cœz} @  G¿Í^?d à7OñÀ¼ @  GÀÎ^?d 7Òµ`} @  GÁÏ^?d `7éæX— @  GÂÐ^?d  7ÉZi @  GÃÑ^?d à7ü%[ý @  GÄÒ^?d 7,m× @  GÅÓ^?d `7ê~n4 @  GÆÔ^?d  7Ê‹lÊ @  GÇÕ^?d à7ôFÉÉ @  GÈÖ^?d 7í:Æ @  GÉ×^?d `7³ `À @  GÊØ^?d  7“þb> @  GËÙ^?d à7¦Ècª @  GÌÚ^?d 7v€ïB @  GÍÛ^?d `7°“Vc @  GÎÜ^?d  7fT @  GÏÝ^?d à7 Ï~ @  GÐÞ^?d 7žNo¿ @  GÑß^?d `78ªn‰ @  GÒà^?d  7_lw @  GÓá^?d à7-imã @  GÔâ^?d 7ý!á  @  GÕã^?d `7;2X* @  GÖä^?d  7ÇZÔ @  G×å^?d à7% ÿ× @  GØæ^?d 7õsÊ @  GÙç^?d `7Oö)Ì @  GÚè^?d  7o+2 @  GÛé^?d à7Z5*¦ @  GÜê^?d 7Š}¦N @  GÝë^?d ` 7Lno @  GÞì^?d   7l›‘ @  Gßí^?d à 7îñ¡Â @  Gàî^?d 7sµ @  Gáï^?d ` 7Hæ9é @  Gâð^?d€   7@‰/E @  Hñ^?d à 7”þfø @  Hò^?d 7D¶ê @  Hó^?d ` 7Gì¨Ü @  Hô^?d   7gª" @  Hõ^?d à 7—fP[ @  Hö^?d 7Ž(£T @  H÷^?d ` 7™¦( @  Hø^?d   7>l¤Ö @  H ù^?d à 7Î^¯ @  H ú^?d 7[ÒG @  H û^?d ` 7‹ @  H ü^?d   7=ô’u @  H ý^?d à 7Í‹h  @  Hþ^?d 7PÏÈÍ @  Hÿ^?d `7ɼî @  H_?d  7'<¾ @  H_?d à7×CDi @  H_?d 7 È @  H_?d `7QŠM @  H_?d  7$¤ˆ³ @  H_?d à7ÔÛrÊ @  H_?d 7jÎx @  H_?d `7ú´Ë @  H_?d  7ÚAÉú @  H _?d à7*>3ƒ @  H _?d 7úv¿k @  H _?d `7ù,ý§ @  H _?d  7ÙÙÿY @  H _?d à7)¦  @  H_?d 7´â¥á @  H_?d `7ý¤Û! @  H _?d  7ÝQÙß @  H!_?d à7-.#¦ @  H"_?d 7ýf¯N @  H#_?d `7þ<í‚ @  H$_?d  7ÞÉï| @  H%_?d à7.¶ @  H&_?d 77øæ  @  H'_?d `7§Iãv @  H(_?d  7‡¼áˆ @  H)_?d à7wÃñ @  H*_?d 7§‹— @  H+_?d `7¤ÑÕÕ @  H,_?d  7„$×+ @  H-_?d à7t[-R @  H._?d 7é“ @  H/_?d `7,èí? @  H0 _?d  7 ïÁ @  H1!_?d à7üb¸ @  H2"_?d 7,*™P @  H3#_?d `7/pÛœ @  H4$_?d  7…Ùb @  H5%_?d à7ÿú# @  H6&_?d 7˯ @  H7'_?d `7[´ªz @  H8(_?d  7{A¨„ @  H9)_?d à7‹>Rý @  H:*_?d 7[vÞ @  H;+_?d `7X,œÙ @  H<,_?d  7xÙž' @  H=-_?d à7ˆ¦d^ @  H>._?d 7âÄŸ @  H?/_?d `7ò£¼Í @  H@0_?d  7ÒV¾3 @  HA1_?d à7")DJ @  HB2_?d 7òaÈ¢ @  HC3_?d `7ñ;Šn @  HD4_?d  7ÑΈ @  HE5_?d à7!±ré @  HF6_?d 78ÿæ @  HG7_?d `7¨N„š @  HH8_?d  7ˆ»†d @  HI9_?d à7xÄ| @  HJ:_?d 7¨Œðõ @  HK;_?d `7«Ö²9 @  HL<_?d  7‹#°Ç @  HM=_?d à7{\J¾ @  HN>_?d 7æê @  HO?_?d `7Ó¿ŸÂ @  HP@_?d  7óJ< @  HQA_?d à75gE @  HRB_?d 7Ó}ë­ @  HSC_?d `7Ð'©a @  HTD_?d  7ðÒ«ŸuÐ 7 @  HUE_?d à7­Qæ @  HVF_?d 8 7q¦€ @  HWG_?d x 7áŠü @  HXH_?d ¸ 7Á∠@  HYI_?d ø 71r{ @  HZJ_?d 8!7áÕþ“ @  H[K_?d x!7â¼_ @  H\L_?d ¸!7Âz¾¡ @  H]M_?d ø!72DØ @  H^N_?d 8"7¯Aä @  H_O_?d x"7æšÙ @  H`P_?d ¸"7Æò˜' @  HaQ_?d ø"76b^ @  HbR_?d 8#7æÅî¶ @  HcS_?d x#7埬z @  HdT_?d ¸#7Åj®„ @  HeU_?d ø#75Tý @  HfV_?d 8$7,[§ò @  HgW_?d x$7¼ê¢Ž @  HhX_?d ¸$7œ p @  HiY_?d ø$7l`Z  @  HjZ_?d 8%7¼(Öá @  Hk[_?d x%7¿r”- @  Hl\_?d ¸%7Ÿ‡–Ó @  Hm]_?d ø%7oølª @  Hn^_?d 8&7ò¼Ìk @  Ho__?d x&77K¬Ç @  Hp`_?d ¸&7¾®9 @  Hqa_?d ø&7çÁT@ @  Hrb_?d 8'77‰Ø¨ @  Hsc_?d x'74Óšd @  Htd_?d ¸'7&˜š @  Hue_?d ø'7äYbã @  Hvf_?d 8(7Цîþ @  Hwg_?d x(7@ë‚ @  Hxh_?d ¸(7`âé| @  Hyi_?d ø(7 @  Hzj_?d 8)7@ÕŸí @  H{k_?d x)7CÝ! @  H|l_?d ¸)7czßß @  H}m_?d ø)7“%¦ @  H~n_?d 8*7A…g @  Ho_?d x*7 VÍ @  H€p_?d ¸*7*£Ïú @  Hq_?d ø*7ÚÜ5ƒ @  H‚r_?d 8+7 ”¹k @  Hƒs_?d x+7 Îû§ @  H„t_?d ¸+7);ùY @  H…u_?d ø+7ÙD  @  H†v_?d 8,7À ð/ @  H‡w_?d x,7P»õS @  Hˆx_?d ¸,7pN÷­ @  H‰y_?d ø,7€1 Ô @  HŠz_?d 8-7Py< @  H‹{_?d x-7S#Ãð @  HŒ|_?d ¸-7sÖÁ @  H}_?d ø-7ƒ©;w @  HŽ~_?d 8.7í›¶ @  H_?d x.76Œº™ @  H€_?d ¸.7y¸g @  H‘_?d ø.7æB @  H’‚_?d 8/76NÎö @  H“ƒ_?d x/75Œ: @  H”„_?d ¸/7áŽÄ @  H•…_?d ø/7åžt½ @  H–†_?d 807[@È @  H—‡_?d x07ËñÍs @  H˜ˆ_?d ¸07ëÏ @  H™‰_?d ø07{5ô @  HšŠ_?d 817Ë3¹ @  H›‹_?d x17ÈiûÐ @  HœŒ_?d ¸17èœù. @  H_?d ø17ãW @  HžŽ_?d 827…§£– @  HŸ_?d x27ÌáÝV @  H _?d ¸27ìߨ @  H¡‘_?d ø27k%Ñ @  H¢’_?d 837Ì#©9 @  H£“_?d x37Ïyëõ @  H¤”_?d ¸37ïŒé  @  H¥•_?d ø37ór @  H¦–_?d 847½à} @  H§—_?d x47– å @  H¨˜_?d ¸47¶ùçÿ @  H©™_?d ø47F†† @  Hªš_?d 857–Αn @  H«›_?d x57•”Ó¢ @  H¬œ_?d ¸57µaÑ\ @  H­_?d ø57E+% @  H®ž_?d 867ØZ‹ä @  H¯Ÿ_?d x67­ëH @  H° _?d ¸67=Xé¶ @  H±¡_?d ø67Í'Ï @  H²¢_?d 877oŸ' @  H³£_?d x775Ýë @  H´¤_?d ¸77>Àß @  Hµ¥_?d ø77ο%l @  H¶¦_?d 887ú@©q @  H·§_?d x87jñ¬  @  H¸¨_?d ¸87J®ó @  H¹©_?d ø87º{TŠ @  Hºª_?d 897j3Øb @  H»«_?d x97iiš® @  H¼¬_?d ¸97Iœ˜P @  H½­_?d ø97¹ãb) @  H¾®_?d 8:7$§Âè @  H¿¯_?d x:7Ãæºº @  HÀ°_?d ¸:7ã¸D @  HÁ±_?d ø:7lB= @  H²_?d 8;7Ã$ÎÕ @  Hó_?d x;7À~Œ @  HÄ´_?d ¸;7à‹Žç @  Hŵ_?d ø;7ôtž @  Hƶ_?d 8<7 º‡‘ @  HÇ·_?d x<7™ ‚í @  Hȸ_?d ¸<7¹þ€ @  Hɹ_?d ø<7Izj @  Hʺ_?d 8=7™Éö‚ @  HË»_?d x=7š“´N @  H̼_?d ¸=7ºf¶° @  Hͽ_?d ø=7JLÉ @  Hξ_?d 8>7×]ì @  HÏ¿_?d x>7âú™µ @  HÐÀ_?d ¸>7›K @  HÑÁ_?d ø>72pa2 @  HÒÂ_?d 8?7â8íÚ @  HÓÃ_?d x?7áb¯ @  HÔÄ_?duÐ@77 ¸?7Á—­è @  HÕÅ_?d ø?71èW‘ @  HÖÆ_?d P@7òDí­ @  H×Ç_?d @7À‘ýñ @  HØÈ_?d Ð@7Bê/ @  HÙÉ_?d A7ঋ` @  HÚÊ_?d PA7b7œ¾ @  HÛË_?d A7à ËR @  HÜÌ_?d ÐA7A˜ÜŒ @  HÝÍ_?d B7®2‘ê @  HÞÎ_?d PB7,£†4 @  HßÏ_?d B7ÇíÔ @  HàÐ_?d ÐB7Eú  @  HáÑ_?d C7ç¶›E @  HâÒ_?d€ PC7ä= @  IÓ_?d C7Q›ø @  IÔ_?d ÐC7Ó ˜& @  IÕ_?d D7}ã}c @  IÖ_?d PD7ÿrj½ @  I×_?d D7%› @  IØ_?d ÐD7„2E @  IÙ_?d E7í p @  IÚ_?d PE7o® @  I Û_?d E7 v·¯ @  I Ü_?d ÐE7‰ç q @  I Ý_?d F7£ú @  I Þ_?d PF7!•$ @  I ß_?d F7%2 @  Ià_?d ÐF7§„ì @  Iá_?d G7f19 @  Iâ_?d PG7ä ç @  Iã_?d G7€×¹æ @  Iä_?d ÐG7F®8 @  Iå_?d H74o @  Iæ_?d PH7#± @  Iç_?d H7ÿèl— @  Iè_?d ÐH7}y{I @  Ié_?d I7mE| @  Iê_?d PI7“üR¢ @  Ië_?d I7÷‹þ£ @  Iì_?d ÐI7ué} @  Ií_?d J7_ù_ö @  Iî_?d PJ7ÝhH( @  Iï_?d J7D_eâ @  Ið_?d ÐJ7ÆÎr< @  Iñ_?d K7}UY @  I ò_?d PK7”ìB‡ @  I!ó_?d K7ð›î† @  I"ô_?d ÐK7r ùX @  I#õ_?d L7Üã @  I$ö_?d PL7^r à @  I%÷_?d L7¢Då @  I&ø_?d ÐL7 „S; @  I'ù_?d M7Lm @  I(ú_?d PM7ÎzÐ @  I)û_?d M7ªvÖÑ @  I*ü_?d ÐM7(çÁ @  I+ý_?d N7w„ @  I,þ_?d PN7€•`Z @  I-ÿ_?d N7§Q þ @  I.`?d ÐN7%À  @  I/`?d O7äuõ @  I0`?d PO7fä + @  I1`?d O7“¥* @  I2`?d ÐO7€²ô @  I3`?d P7‰{  @  I4`?d PP7 êÒ @  I5`?d P7÷@ô @  I6`?d ÐP7uW* @  I7 `?d Q7i @  I8 `?d PQ7›™~Á @  I9 `?d Q7ÿîÒÀ @  I: `?d ÐQ7}Å @  I; `?d R7Wœs• @  I<`?d PR7Õ dK @  I=`?d R7L:I @  I>`?d ÐR7Ϋ^_ @  I?`?d S7°¨ @  I@`?d PS72Žhv @  IA`?d S7VùÄw @  IB`?d ÐS7ÔhÓ© @  IC`?d T7z6ì @  ID`?d PT7ø!2 @  IE`?d T7wn @  IF`?d ÐT7†æyÊ @  IG`?d U7êòGÿ @  IH`?d PU7hcP! @  II`?d U7 ü  @  IJ`?d ÐU7Ž…ëþ @  IK`?d V7¤f]u @  IL`?d PV7&÷J« @  IM`?d V7"w^½ @  IN `?d ÐV7 æIc @  IO!`?d W7aSI¶ @  IP"`?d PW7ãÂ^h @  IQ#`?d W7‡µòi @  IR$`?d ÐW7$å· @  IS%`?d X7†|à @  IT&`?d PX7íh> @  IU'`?d X7øŠ' @  IV(`?d ÐX7z0Æ @  IW)`?d Y7ó @  IX*`?d PY7”ž- @  IY+`?d Y7ðéµ, @  IZ,`?d ÐY7rx¢ò @  I[-`?d Z7X›y @  I\.`?d PZ7Ú § @  I]/`?d Z7C=.m @  I^0`?d ÐZ7Á¬9³ @  I_1`?d [7Ö @  I`2`?d P[7“Ž  @  Ia3`?d [7÷ù¥  @  Ib4`?d Ð[7uh²× @  Ic5`?d \7ÛW’ @  Id6`?d P\7Y@L @  Ie7`?d \7¥wj @  If8`?d Ð\7'æ´ @  Ig9`?d ]7Kò& @  Ih:`?d P]7Éc1_ @  Ii;`?d ]7­^ @  Ij<`?d Ð]7/…Š€ @  Ik=`?d ^7f<  @  Il>`?d P^7‡÷+Õ @  Im?`?d ^7s'*Ò @  In@`?d Ð^7ñ¶=  @  IoA`?d _70=Ù @  IpB`?d P_7²’* @  IqC`?d _7Öå† @  IuÐ`7rD`?d Ð_7)ô⤠@  Is€E`?d (`7 «Av @  It€F`?d h`7¢:V¨ @  Iu€G`?d ¨`7^]Ž @  Iv€H`?d è`7ÜÌP @  Iw€I`?d (a7°Ø0e @  Ix€J`?d ha72I'» @  Iy€K`?d ¨a7V>‹º @  Iz€L`?d èa7Ô¯œd @  I{€M`?d (b7þL*ï @  I|€N`?d hb7|Ý=1 @  I}€O`?d ¨b7åêû @  I~€P`?d èb7g{% @  I€Q`?d (c7ú™ã @  I€€R`?d hc7x= @  I€S`?d ¨c7­< @  I‚€T`?d èc7žîºâ @  Iƒ€U`?d (d70_§ @  I„€V`?d hd7²–Hy @  I…€W`?d ¨d7Nñ_ @  I†€X`?d èd7Ì` @  I‡€Y`?d (e7 t.´ @  Iˆ€Z`?d he7"å9j @  I‰€[`?d ¨e7F’•k @  IŠ€\`?d èe7Ä‚µ @  I‹€]`?d (f7îà4> @  IŒ€^`?d hf7lq#à @  I€_`?d ¨f7hñ7ö @  IŽ€``?d èf7ê` ( @  I€a`?d (g7+Õ ý @  I€b`?d hg7©D7# @  I‘€c`?d ¨g7Í3›" @  I’€d`?d èg7O¢Œü @  I“€e`?d (h7Ìú« @  I”€f`?d hh7Nku @  I•€g`?d ¨h7² NS @  I–€h`?d èh70Y @  I—€i`?d (i7\‰g¸ @  I˜€j`?d hi7Þpf @  I™€k`?d ¨i7ºoÜg @  Iš€l`?d èi78þ˹ @  I›€m`?d (j7}2 @  Iœ€n`?d hj7Œjì @  I€o`?d ¨j7 »G& @  Iž€p`?d èj7‹*Pø @  IŸ€q`?d (k7[™w @  I €r`?d hk7Ù`C @  I¡€s`?d ¨k7½ÌB @  I¢€t`?d èk7?îÛœ @  I£€u`?d (l7‘>Ù @  I¤€v`?d hl7–) @  I¥€w`?d ¨l7ïñf! @  I¦€x`?d èl7m`qÿ @  I§€y`?d (m7tOÊ @  I¨€z`?d hm7ƒåX @  I©€{`?d ¨m7ç’ô @  Iª€|`?d èm7eãË @  I«€}`?d (n7OàU@ @  I¬€~`?d hn7ÍqBž @  I­€`?d ¨n7$g  @  I®€€`?d èn7¦öÕ @  I¯€`?d (o7gC @  I°€‚`?d ho7åÒÞ @  I±€ƒ`?d ¨o7¥»ß @  I²€„`?d èo74¬ @  I³€…`?d (p7 Mù @  I´€†`?d hp7ˆÜ' @  Iµ€‡`?d ¨p7t»^ @  I¶€ˆ`?d èp7ö*Iß @  I·€‰`?d (q7š>wê @  I¸€Š`?d hq7¯`4 @  I¹€‹`?d ¨q7|ØÌ5 @  Iº€Œ`?d èq7þIÛë @  I»€`?d (r7Ôªm` @  I¼€Ž`?d hr7V;z¾ @  I½€`?d ¨r7Ï Wt @  I¾€`?d èr7M@ª @  I¿€‘`?d (s73)a] @  IÀ€’`?d hs7±¸vƒ @  IÁ€“`?d ¨s7ÕÏÚ‚ @  I€”`?d ès7W^Í\ @  IÀ•`?d (t7ù·( @  IÄ€–`?d ht7{&?Ç @  IÅ€—`?d ¨t7‡Apá @  IÆ€˜`?d èt7Ðg? @  IÇ€™`?d (u7iÄY  @  IÈ€š`?d hu7ëUNÔ @  IÉ€›`?d ¨u7"âÕ @  IÊ€œ`?d èu7 ³õ  @  IË€`?d (v7'PC€ @  IÌ€ž`?d hv7¥ÁT^ @  IÍ€Ÿ`?d ¨v7¡A@H @  I΀ `?d èv7#ÐW– @  IÏ€¡`?d (w7âeWC @  IЀ¢`?d hw7`ô@ @  IÑ€£`?d ¨w7ƒìœ @  IÒ€¤`?d èw7†ûB @  IÓ€¥`?d (x7Ja @  IÔ€¦`?d hx7‡ÛvË @  IÕ€§`?d ¨x7{¼9í @  IÖ€¨`?d èx7ù-.3 @  I×€©`?d (y7•9 @  IØ€ª`?d hy7¨Ø @  IÙ€«`?d ¨y7s߫٠@  IÚ€¬`?d èy7ñN¼ @  IÛ€­`?d (z7Û­ Œ @  IÜ€®`?d hz7Y<R @  IÝ€¯`?d ¨z7À 0˜ @  IÞ€°`?d èz7Bš'F @  I߀±`?d ({7’)# @  Ià€²`?d h{7¸ý @  Iဳ`?d ¨{7tÏ»ü @  I‴`?d€ è{77[" @  J€µ`?d (|7x±öN @  J€¶`?d h|7ú á @  J€·`?d ¨|7ÃU[ @  J€¸`?d è|7AŸB… @  J€¹`?d (}7ã9#Ê @  J€º`?d h}7a¨4 @  J€»`?d ¨}7ËmÇo @  J€¼`?d è}7Iüб @  J €½`?d (~7¦V× @  J €¾`?d h~7$ÇŠ  @  J €¿`?d ¨~7^pã @  J €À`?d è~7—Ïg= @  J €Á`?d (75ir @  J€Â`?d h7·ø¬ @  J€Ã`?d ¨7uЀ7'°œÜ7 @  J€Ä`?d è72 Ëé @  J€Å`?d @€7.]Ä: @  J€Æ`?d €€7¨ÆÄ @  J€Ç`?d À€7•âg/ @  J€È`?d 7EªëÇ @  J€É`?d @7µÕ¾ @  J€Ê`?d €7• @ @  J€Ë`?d À7õ @  J€Ì`?d ‚7ÅUÚ @  J€Í`?d @‚7𺯣 @  J€Î`?d €‚7ÐO­] @  J€Ï`?d À‚7.UnZ @  J€Ð`?d ƒ7þâ² @  J€Ñ`?d @ƒ7bË @  J€Ò`?d €ƒ7.—5 @  J€Ó`?d Àƒ7š‘å> @  J €Ô`?d „7ƒß1 @  J!€Õ`?d @„7s ìH @  J"€Ö`?d €„7SUî¶ @  J#€×`?d À„7ÈO] @  J$€Ø`?d …7Wõ @  J%€Ù`?d @…7è(9Ì @  J&€Ú`?d €…7ÈÝ;2 @  J'€Û`?d À…7À|Ýi @  J(€Ü`?d †7]8}¨ @  J)€Ý`?d @†7­G‡Ñ @  J*€Þ`?d €†7²…/ @  J+€ß`?d À†7îô @  J,€à`?d ‡7>Wó @  J-€á`?d @‡7Î( e @  J.€â`?d €‡7îÝ › @  J/€ã`?d À‡7KÝÓ  @  J0€ä`?d ˆ7"_= @  J1€å`?d @ˆ7]¥D @  J2€æ`?d €ˆ7¯¨§º @  J3€ç`?d Àˆ74âQ @  J4€è`?d ‰7䪊¹ @  J5€é`?d @‰7ÕpÀ @  J6€ê`?d €‰74 r> @  J7€ë`?d À‰7<”e @  J8€ì`?d Š7¡Å4¤ @  J9€í`?d @Š7QºÎÝ @  J:€î`?d €Š7qOÌ# @  J;€ï`?d ÀŠ7U$ @  J<€ð`?d ‹7_ƒÌ @  J=€ñ`?d @‹7¯byµ @  J>€ò`?d €‹7—{K @  J?€ó`?d À‹7•–‚Ò @  J@€ô`?d Œ7ŒØqÝ @  JA€õ`?d @Œ7|§‹¤ @  JB€ö`?d €Œ7\R‰Z @  JC€÷`?d ÀŒ7Ç(± @  JD€ø`?d 7P¤Y @  JE€ù`?d @7ç/^  @  JF€ú`?d €7ÇÚ\Þ @  JG€û`?d À7Ï{º… @  JH€ü`?d Ž7R?D @  JI€ý`?d @Ž7¢@à= @  JJ€þ`?d €Ž7‚µâà @  JK€ÿ`?d ÀŽ7sé — @  JL€a?d 7£¡€ @  JM€a?d @7SÞz @  JN€a?d €7s+xø @  JO€a?d À7Ö+ C @  JP€a?d 7hõñ @  JQ€a?d @7˜Šæˆ @  JR€a?d €7¸äv @  JS€a?d À7#5E @  JT€a?d ‘7ó}Éu @  JU€ a?d @‘73  @  JV€ a?d €‘7#÷1ò @  JW€ a?d À‘7+Vש @  JX€ a?d ’7¶wh @  JY€ a?d @’7Fm @  JZ€a?d €’7f˜ï @  J[€a?d À’7˜‚Lè @  J\€a?d “7HÊÀ @  J]€a?d @“7¸µ:y @  J^€a?d €“7˜@8‡ @  J_€a?d À“7,FÇŒ @  J`€a?d ”754ƒ @  Ja€a?d @”7ÅwÎú @  Jb€a?d €”7å‚Ì @  Jc€a?d À”7~Èmï @  Jd€a?d •7®€á @  Je€a?d @•7^ÿ~ @  Jf€a?d €•7~ € @  Jg€a?d À•7v«ÿÛ @  Jh€a?d –7ëï_ @  Ji€a?d @–7¥c @  Jj€a?d €–7;e§ @  Jk€a?d À–7XÈ]F @  Jl€ a?d —7ˆ€Ñ® @  Jm€!a?d @—7xÿ+× @  Jn€"a?d €—7X )) @  Jo€#a?d À—7ý ñ’ @  Jp€$a?d ˜7Éõ} @  Jq€%a?d @˜79Їö @  Jr€&a?d €˜7… @  Js€'a?d À˜7‚5$ã @  Jt€(a?d ™7R}¨  @  Ju€)a?d @™7¢Rr @  Jv€*a?d €™7‚÷PŒ @  Jw€+a?d À™7ŠV¶× @  Jx€,a?d š7 @  Jy€-a?d @š7çmìo @  Jz€.a?d €š7ǘî‘ @  J{€/a?d Àš79‚-– @  J|€0a?d ›7éÊ¡~ @  J}€1a?d @›7µ[ @  J~€2a?d €›79@Yù @  J€3a?d À›7ÀQ @  J€€4a?d œ7ÙYc^ @  J€5a?d @œ7)&™' @  J‚€6a?d €œ7 Ó›Ù @  Jƒ€7a?d Àœ7’™:2 @  J„€8a?d 7BѶÚ @  J…€9a?d @7²®L£ @  J†€:a?d €7’[N] @  J‡€;a?d À7šú¨ @  Jˆ€a?d €ž7×4ð@ @  J‹€?a?d Àž7DÉŠ @  JŒ€@a?d Ÿ7”“b @  J€Aa?d @Ÿ7dþi @  JŽ€Ba?d €Ÿ7D kå @  J€CauР7?d ÀŸ7á ³^ @  J€Da?d  7í€D @  J‘Ea?d X 7ÿä= @  J’Fa?d ˜ 7= æÃ @  J“Ga?d Ø 7¦@G( @  J”Ha?d ¡7vËÀ @  J•Ia?d X¡7†w1¹ @  J–Ja?d ˜¡7¦‚3G @  J—Ka?d Ø¡7®#Õ @  J˜La?d ¢73guÝ @  J™Ma?d X¢7ä @  JšNa?d ˜¢7ãíZ @  J›Oa?d Ø¢7÷N] @  JœPa?d £7Ϳµ @  JQa?d X£7=À8Ì @  JžRa?d ˜£75:2 @  JŸSa?d Ø£7©3Å9 @  J Ta?d ¤7°}66 @  J¡Ua?d X¤7@ÌO @  J¢Va?d ˜¤7`÷α @  J£Wa?d ؤ7û½oZ @  J¤Xa?d ¥7+õã² @  J¥Ya?d X¥7ÛŠË @  J¦Za?d ˜¥7û5 @  J§[a?d Ø¥7óÞýn @  J¨\a?d ¦7nš]¯ @  J©]a?d X¦7žå§Ö @  Jª^a?d ˜¦7¾¥( @  J«_a?d ئ7ݽ_ó @  J¬`a?d §7 õÓ @  J­aa?d X§7ýŠ)b @  J®ba?d ˜§7Ý+œ @  J¯ca?d ا7xó' @  J°da?d ¨7L€: @  J±ea?d X¨7¼ÿ…C @  J²fa?d ˜¨7œ ‡½ @  J³ga?d ب7@&V @  J´ha?d ©7ת¾ @  Jµia?d X©7'wPÇ @  J¶ja?d ˜©7‚R9 @  J·ka?d Ø©7#´b @  J¸la?d ª7’g£ @  J¹ma?d Xª7bîÚ @  Jºna?d ˜ª7Bíì$ @  J»oa?d ت7¼÷/# @  J¼pa?d «7l¿£Ë @  J½qa?d X«7œÀY² @  J¾ra?d ˜«7¼5[L @  J¿sa?d Ø«7¦4¢Õ @  JÀta?d ¬7¿zQÚ @  JÁua?d X¬7O«£ @  JÂva?d ˜¬7oð©] @  JÃwa?d ج7ôº¶ @  JÄxa?d ­7$ò„^ @  JÅya?d X­7Ô~' @  JÆza?d ˜­7ôx|Ù @  JÇ{a?d Ø­7üÙš‚ @  JÈ|a?d ®7a:C @  JÉ}a?d X®7‘âÀ: @  JÊ~a?d ˜®7±ÂÄ @  JËa?d Ø®7?,yœ @  JÌ€a?d ¯7ïdõt @  JÍa?d X¯7  @  J΂a?d ˜¯7?î ó @  Jσa?d د7šîÕH @  JЄa?d °7$0iú @  JÑ…a?d X°7ÔO“ƒ @  JÒ†a?d ˜°7ôº‘} @  JÓ‡a?d ذ7oð0– @  JÔˆa?d ±7¿¸¼~ @  JÕ‰a?d X±7OÇF @  JÖŠa?d ˜±7o2Dù @  J׋a?d ر7g“¢¢ @  JØŒa?d ²7ú×c @  JÙa?d X²7 ¨ø @  JÚŽa?d ˜²7*]úä @  JÛa?d ز7ÔG9ã @  JÜa?d ³7µ  @  JÝ‘a?d X³7ôpOr @  JÞ’a?d ˜³7Ô…MŒ @  Jß“a?d س7`ƒ²‡ @  Jà”a?d ´7yÍAˆ @  Já•a?d X´7‰²»ñ @  Jâ–a?d€ ˜´7Ý„¥© @  K—a?d Ø´7§Lk @  K˜a?d µ7wÇÀƒ @  K™a?d Xµ7BñÁ @  Kša?d ˜µ7bÃé @  K›a?d ص7¤zÈ @  Kœa?d ¶79SÚ  @  Ka?d X¶7ž  @  Kža?d ˜¶7'k}ô @  K Ÿa?d ض7| @  K  a?d ·7QÇð* @  K ¡a?d X·7dññ¾ @  K ¢a?d ˜·7Dó@ @  K £a?d Ø·7‚Ja @  K¤a?d ¸7¶èÆ| @  K¥a?d X¸7%„]Ÿ @  K¦a?d ˜¸7q_a @  K§a?d ظ7[rg @  K¨a?d ¹7‹:‰ @  K©a?d X¹7¾ ˆ @  Kªa?d ˜¹7žùŠå @  K«a?d ع7Xê3Ä @  K¬a?d º7Å®“ @  K­a?d Xº7ûc6 @  K®a?d ˜º7Û–4ø @  K¯a?d غ7àÅ  @  K°a?d »70€ú @  K±a?d X»7»n @  K²a?d ˜»7%Nƒ @  K³a?d Ø»7ã]:± @  K´a?d ¼7úɾ @  Kµa?d X¼7xyuí @  K ¶a?d ˜¼7XŒw @  K!·a?d ؼ7- @  K"¸a?d ½7ÖÇ¡ý @  K#¹a?d X½7ãñ i @  K$ºa?d ˜½7â— @  K%»a?d ؽ7¶ @  K&¼a?d ¾7˜S»w @  K'½a?d X¾7¦žt @  K(¾a?d ˜¾7†kŠ @  K)¿a?d ؾ7Ðß­ @  K*Àa?d ¿7—„E @  K+Áa?d X¿75¡…Ñ @  K,Âa?d ˜¿7T‡/ @uÐÀ7  K-Ãa?d Ø¿7ÓG> @  K.Äa?d 0À7··o\ @  K/Åa?d pÀ7$Ûô¿ @  K0Æa?d °À7.öA @  K1Ça?d ðÀ7Z-¬G @  K2Èa?d 0Á7Še ¯ @  K3Éa?d pÁ7¿S!; @  K4Êa?d °Á7Ÿ¦#Å @  K5Ëa?d ðÁ7Yµšä @  K6Ìa?d 0Â7Äñ:% @  K7Ía?d pÂ7ú<Ÿ& @  K8Îa?d °Â7ÚÉØ @  K9Ïa?d ðÂ7ᚥ2 @  K:Ða?d 0Ã71Ò)Ú @  K;Ña?d pÃ7ä(N @  K<Òa?d °Ã7$*° @  K=Óa?d ðÃ7â“‘ @  K>Ôa?d 0Ä7ûL`ž @  K?Õa?d pÄ7×!Ú_ @  K@Öa?d °Ä7÷ÔØ¡ @  KA×a?d ðÄ7©×‚§ @  KBØa?d 0Å7yŸO @  KCÙa?d pÅ7L©Û @  KDÚa?d °Å7l\ % @  KEÛa?d ðÅ7ªO´ @  KFÜa?d 0Æ77 Å @  KGÝa?d pÆ7 ƱÆ @  KHÞa?d °Æ7)3³8 @  KIßa?d ðÆ7ײ @  KJàa?d 0Ç7_Ÿ>æ @  KKáa?d pÇ7j©?r @  KLâa?d °Ç7J\=Œ @  KMãa?d ðÇ7ŒO„­ @  KNäa?d 0È7¸°° @  KOåa?d pÈ7+Ü“S @  KPæa?d °È7 )‘­ @  KQça?d ðÈ7U*Ë« @  KRèa?d 0É7…bGC @  KSéa?d pÉ7°TF× @  KTêa?d °É7¡D) @  KUëa?d ðÉ7V²ý @  KVìa?d 0Ê7Ëö]É @  KWía?d pÊ7õ;øÊ @  KXîa?d °Ê7ÕÎú4 @  KYïa?d ðÊ7îÂÞ @  KZða?d 0Ë7>ÕN6 @  K[ña?d pË7 ãO¢ @  K\òa?d °Ë7+M\ @  K]óa?d ðË7íô} @  K^ôa?d 0Ì7ôKr @  K_õa?d pÌ7v!»! @  K`öa?d °Ì7VÔ¹ß @  Ka÷a?d ðÌ7×ãÙ @  Kbøa?d 0Í7ØŸo1 @  Kcùa?d pÍ7í©n¥ @  Kdúa?d °Í7Í\l[ @  Keûa?d ðÍ7 OÕz @  Kfüa?d 0Î7– u» @  Kgýa?d pÎ7¨ÆÐ¸ @  Khþa?d °Î7ˆ3ÒF @  Kiÿa?d ðÎ7òÚ @  Kjb?d 0Ï7ÞL~2 @  Kkb?d pÏ7ëz¦ @  Klb?d °Ï7Ë}X @  Kmb?d ðÏ7 œÄy @  Knb?d 0Ð7³BxË @  Kob?d pÐ7 .ã( @  Kpb?d °Ð7ÛáÖ @  Kqb?d ðÐ7^ػР@  Krb?d 0Ñ7Ž78 @  Ks b?d pÑ7»¦6¬ @  Kt b?d °Ñ7›S4R @  Ku b?d ðÑ7]@s @  Kv b?d 0Ò7À-² @  Kw b?d pÒ7þɈ± @  Kxb?d °Ò7Þ<ŠO @  Kyb?d ðÒ7åo²¥ @  Kzb?d 0Ó75'>M @  K{b?d pÓ7?Ù @  K|b?d °Ó7 ä=' @  K}b?d ðÓ7æ÷„ @  K~b?d 0Ô7ÿ¹w  @  Kb?d pÔ70‚ýù @  K€b?d °Ô7wÿ @  Kb?d ðÔ7Nt¥ @  K‚b?d 0Õ7ž<)é @  Kƒb?d pÕ7« (} @  K„b?d °Õ7‹ÿ*ƒ @  K…b?d ðÕ7Mì“¢ @  K†b?d 0Ö7Ш3c @  K‡b?d pÖ7îe–` @  Kˆb?d °Ö7Δž @  K‰b?d ðÖ7ht•¨ @  KŠ b?d 0×7¸<@ @  K‹!b?d p×7 Ô @  KŒ"b?d °×7­ÿ* @  K#b?d ð×7kì£  @  KŽ$b?d 0Ø7_/ @  K%b?d pØ7Ì´õ @  K&b?d °Ø7슶  @  K‘'b?d ðØ7²‰ì  @  K’(b?d 0Ù7bÁ`å @  K“)b?d pÙ7W÷aq @  K”*b?d °Ù7wc @  K•+b?d ðÙ7±Ú® @  K–,b?d 0Ú7,Uzo @  K—-b?d pÚ7˜ßl @  K˜.b?d °Ú72mÝ’ @  K™/b?d ðÚ7 >åx @  Kš0b?d 0Û7Ùvi @  K›1b?d pÛ7ì@h @  Kœ2b?d °Û7̵jú @  K3b?d ðÛ7 ¦ÓÛ @  Kž4b?d 0Ü7è Ô @  KŸ5b?d pÜ7‘‚œ‡ @  K 6b?d °Ü7±wžy @  K¡7b?d ðÜ7ïtÄ @  K¢8b?d 0Ý7?b?d °Þ7oõà @  K©?b?d ðÞ79$áÇ @  Kª@b?d 0ß7élm/ @  K«Ab?d pß7ÜZl» @  K¬Bb?d uÐà7/°ß7ü¯nE @  K­Cb?d ðß7:¼×d @  K®Db?d Hà7#‰’ @  K¯Eb?d ˆà7Q @  K°Fb?d Èà7 @  K±Gb?d á7œ[Ñ¿ @  K²Hb?d Há7ÊÆa @  K³Ib?d ˆá7‰˜ÒÕ @  K´Jb?d Èá7 Å  @  KµKb?d â7ÒÏË5 @  K¶Lb?d Hâ7P^Üë @  K·Mb?d ˆâ7Ì÷lÈ @  K¸Nb?d Èâ7Nf{ @  K¹Ob?d ã7'ìØÊ @  KºPb?d Hã7¥}Ï @  K»Qb?d ˆã72/Û  @  K¼Rb?d Èã7°¾Ì~ @  K½Sb?d ä7ír‘Ž @  K¾Tb?d Hä7oã†P @  K¿Ub?d ˆä7áê)± @  KÀVb?d Èä7c{>o @  KÁWb?d å7o¡ÿ_ @  KÂXb?d Hå7í0è @  KÃYb?d ˆå7zbü5 @  KÄZb?d Èå7øóëë @  KÅ[b?d æ7!5åÕ @  KÆ\b?d Hæ7£¤ò  @  KÇ]b?d ˆæ7? B( @  KÈ^b?d Èæ7½œUö @  KÉ_b?d ç7I¡Ïö @  KÊ`b?d Hç7Ë0Ø( @  KËab?d ˆç7\bÌœ @  KÌbb?d Èç7ÞóÛB @  KÍcb?d è7®Žù  @  KÎdb?d Hè7,î~ @  KÏeb?d ˆè7`½ @  KÐfb?d Èè7Ÿ†wc @  KÑgb?d é7“\¶S @  KÒhb?d Hé7Í¡ @  KÓib?d ˆé7†Ÿµ9 @  KÔjb?d Èé7¢ç @  KÕkb?d ê7ÝȬÙ @  KÖlb?d Hê7_Y» @  K×mb?d ˆê7Ãð $ @  KØnb?d Èê7Aaú @  KÙob?d ë7(ë¿& @  KÚpb?d Hë7ªz¨ø @  KÛqb?d ˆë7=(¼L @  KÜrb?d Èë7¿¹«’ @  KÝsb?d ì7âuöb @  KÞtb?d Hì7`äá¼ @  Kßub?d ˆì7@êHÏ @  Kàvb?d Èì7Â{_ @  Káwb?d í7Ρž! @  Kâxb?d€ Hí7Êf!F @  Lyb?d ˆí7¼u}Û @  Lzb?d Èí7>äj @  L{b?d î7"kŸÖ @  L|b?d Hî7 úˆ @  L}b?d ˆî7òágQ @  L~b?d Èî7ppp @  Lb?d ï7§iôv @  L€b?d Hï7%øã¨ @  L b?d ˆï7wã ñ @  L ‚b?d Èï7õr/ @  L ƒb?d ð7Êgò @  L „b?d Hð7HöåQ @  L …b?d ˆð7í  @  L†b?d Èð7˜|Ö @  L‡b?d ñ7÷µ½| @  Lˆb?d Hñ7u$ª¢ @  L‰b?d ˆñ7'?Eû @  LŠb?d Èñ7¥®R% @  L‹b?d ò7¹!§ö @  LŒb?d Hò7;°°( @  Lb?d ˆò7i«_q @  LŽb?d Èò7ë:H¯ @  Lb?d ó7L´  @  Lb?d Hó7Γ£× @  L‘b?d ˆó7œˆLŽ @  L’b?d Èó7[P @  L“b?d ô7†œýM @  L”b?d Hô7 ê“ @  L•b?d ˆô7VÊ @  L–b?d Èô7Ô‡ @  L—b?d õ7ªH• @  L ˜b?d Hõ7(Ù‚Ð @  L!™b?d ˆõ7zÂm‰ @  L"šb?d Èõ7øSzW @  L#›b?d ö7äÜ„ @  L$œb?d Hö7fM˜Z @  L%b?d ˆö74Vw @  L&žb?d Èö7¶Ç`Ý @  L'Ÿb?d ÷7ŒH¥§ @  L( b?d H÷7Ù²y @  L)¡b?d ˆ÷7\Â]  @  L*¢b?d È÷7ÞSJþ @  L+£b?d ø7kg“ñ @  L,¤b?d Hø7éö„/ @  L-¥b?d ˆø7»íkv @  L.¦b?d Èø79||¨ @  L/§b?d ù7VµÜ @  L0¨b?d Hù7Ô$ËÜ @  L1©b?d ˆù7†?$… @  L2ªb?d Èù7®3[ @  L3«b?d ú7!ƈ @  L4¬b?d Hú7š°ÑV @  L5­b?d ˆú7È«> @  L6®b?d Èú7J:)Ñ @  L7¯b?d û7íÕw @  L8°b?d Hû7o“© @  L9±b?d ˆû7=ˆ-ð @  L:²b?d Èû7¿:. @  L;³b?d ü7'œœ3 @  L<´b?d Hü7¥ ‹í @  L=µb?d ˆü7÷d´ @  L>¶b?d Èü7u‡sj @  L?·b?d ý7¥Oòâ @  L@¸b?d Hý7'Þå< @  LA¹b?d ˆý7uÅ e @  LBºb?d Èý7÷T» @  LC»b?d þ7ëÛèh @  LD¼b?d Hþ7iJÿ¶ @  LE½b?d ˆþ7;Qï @  LF¾b?d Èþ7¹À1 @  LG¿b?d ÿ7s×Z @  LHÀb?d Hÿ7ñŽÀ„ @  LIÁb?d ˆÿ7£•/Ý @  LJuÐ8Âb?d Èÿ7!8 @  LKÃb?d 8e @  LLÄb?d `8›Šr @  LMÅb?d  8É‘E @  LNÆb?d à8KŠ› @  LOÇb?d 8$É*1 @  LPÈb?d `8¦X=ï @  LQÉb?d  8ôCÒ¶ @  LRÊb?d à8vÒÅh @  LSËb?d 8j]0» @  LTÌb?d `8èÌ'e @  LUÍb?d  8º×È< @  LVÎb?d à88Fßâ @  LWÏb?d 8Ÿ~#D @  LXÐb?d `8ï4š @  LYÑb?d  8OôÛà @  LZÒb?d à8ÍeÌ @  L[Ób?d 8Uàj @  L\Ôb?d `8×q}Þ @  L]Õb?d  8…j’‡ @  L^Öb?d à8û…Y @  L_×b?d 8y4C @  L`Øb?d `8û¥ @  LaÙb?d  8©¾úÄ @  LbÚb?d à8+/í @  LcÛb?d 87 É @  LdÜb?d `8µ1 @  LeÝb?d  8ç*àN @  LfÞb?d à8e»÷ @  Lgßb?d 8_42ê @  Lhàb?d `8Ý¥%4 @  Liáb?d  8¾Êm @  Ljâb?d à8 /ݳ @  Lkãb?d 8¸¼ @  Lläb?d `8:Šb @  Lmåb?d  8h‘ü; @  Lnæb?d à8êëå @  Loçb?d 8…ÉKO @  Lpèb?d ` 8X\‘ @  Lqéb?d   8UC³È @  Lrêb?d à 8×Ò¤ @  Lsëb?d 8Ë]QÅ @  Ltìb?d ` 8IÌF @  Luíb?d   8שB @  Lvîb?d à 8™F¾œ @  Lwïb?d 8>~B: @  Lxðb?d ` 8¼ïUä @  Lyñb?d   8îôº½ @  Lzòb?d à 8le­c @  L{ób?d 8ôà ~ @  L|ôb?d ` 8vq  @  L}õb?d   8$jóù @  L~öb?d à 8¦ûä' @  L÷b?d 8•eUž @  L€øb?d ` 8ôB@ @  Lùb?d   8Eï­ @  L‚úb?d à 8Ç~ºÇ @  Lƒûb?d 8ÛñO @  L„üb?d `8Y`XÊ @  L…ýb?d  8 {·“ @  L†þb?d à8‰ê M @  L‡ÿb?d 8!”q¸ @  Lˆc?d `8£ff @  L‰c?d  8ñ‰? @  LŠc?d à8sžá @  L‹c?d 8LšwA @  LŒc?d `8Î `Ÿ @  Lc?d  8œÆ @  LŽc?d à8˜ @  Lc?d 8qH8² @  Lc?d `8óÙ/l @  L‘ c?d  8¡ÂÀ5 @  L’ c?d à8#S×ë @  L“ c?d 8?Ü"8 @  L” c?d `8½M5æ @  L• c?d  8ïVÚ¿ @  L–c?d à8mÇÍa @  L—c?d 8Êÿ1Ç @  L˜c?d `8Hn& @  L™c?d  8uÉ@ @  Lšc?d à8˜äÞž @  L›c?d 8axƒ @  Lœc?d `8‚ðo] @  Lc?d  8Ðë€ @  Lžc?d à8Rz—Ú @  LŸc?d 8,µÀ @  L c?d `8®$ @  L¡c?d  8ü?èG @  L¢c?d à8~®ÿ™ @  L£c?d 8b! J @  L¤c?d `8à°” @  L¥c?d  8²«òÍ @  L¦c?d à80:å @  L§c?d 8 µ i @  L¨ c?d `8ˆ$7· @  L©!c?d  8Ú?Øî @  Lª"c?d à8X®Ï0 @  L«#c?d 8íš? @  L¬$c?d `8o á @  L­%c?d  8=î¸ @  L®&c?d à8¿ùf @  L¯'c?d 8ÐHYÌ @  L°(c?d `8RÙN @  L±)c?d  8¡K @  L²*c?d à8‚S¶• @  L³+c?d 8žÜCF @  L´,c?d `8MT˜ @  Lµ-c?d  8NV»Á @  L¶.c?d à8ÌǬ @  L·/c?d 8kÿP¹ @  L¸0c?d `8énGg @  L¹1c?d  8»u¨> @  Lº2c?d à89ä¿à @  L»3c?d 8¡aý @  L¼4c?d `8#ð# @  L½5c?d  8qëáz @  L¾6c?d à8ózö¤ @  L¿7c?d 8#²w, @  LÀ8c?d `8¡#`ò @  LÁ9c?d  8ó8« @  LÂ:c?d à8q©˜u @  LÃ;c?d 8m&m¦ @  LÄc?d à8?=‚ÿ @  LÇ?c?d 8õâR” @  LÈ@c?d `8wsEJ @  LÉAc?d  8%hªuÐ 8 @  LÊBc?d à8§ù½Í @  LËCc?d 8 8W96¹ @  LÌDc?d x 8Õ¨!g @  LÍEc?d ¸ 8‡³Î> @  LÎFc?d ø 8"Ùà @  LÏGc?d 8!8jëyJ @  LÐHc?d x!8èzn” @  LÑIc?d ¸!8ºaÍ @  LÒJc?d ø!88ð– @  LÓKc?d 8"8$cÀ @  LÔLc?d x"8¦ît @  LÕMc?d ¸"8ôõ›G @  LÖNc?d ø"8vdŒ™ @  L×Oc?d 8#8Ñ\p? @  LØPc?d x#8SÍgá @  LÙQc?d ¸#8Öˆ¸ @  LÚRc?d ø#8ƒGŸf @  LÛSc?d 8$8Â9{ @  LÜTc?d x$8™S.¥ @  LÝUc?d ¸$8ËHÁü @  LÞVc?d ø$8IÙÖ" @  LßWc?d 8%87Q8 @  LàXc?d x%8µ‡Fæ @  LáYc?d ¸%8眩¿ @  LâZc?d€ ø%8΢Ç @  M[c?d 8&8ì= @  M\c?d x&8n‘ã @  M]c?d ¸&8ùÃW @  M^c?d ø&8{R ‰ @  M_c?d 8'8o‘‰ @  M`c?d x'8 þ†W @  Mac?d ¸'8‘W6t @  Mbc?d ø'8Æ!ª @  M cc?d 8(8c»H @  M dc?d x(8á*– @  M ec?d ¸(8vx" @  M fc?d ø(8ôéü @  M gc?d 8)8ø3ÖÌ @  Mhc?d x)8z¢Á @  Mic?d ¸)8KªOÑ @  Mjc?d ø)8É;X @  Mkc?d 8*8ýV1 @  Mlc?d x*8’lAï @  Mmc?d ¸*8>U[ @  Mnc?d ø*8‡¯B… @  Moc?d 8+8î%áY @  Mpc?d x+8l´ö‡ @  Mqc?d ¸+8ðF¤ @  Mrc?d ø+8rŒQz @  Msc?d 8,8/@ Š @  Mtc?d x,8­ÑT @  Muc?d ¸,8:ƒà @  Mvc?d ø,8¸> @  Mwc?d 8-8´ÈÙ @  Mxc?d x-86YÎÐ @  Myc?d ¸-8Wg£ @  M zc?d ø-8”Æp} @  M!{c?d 8.8M~C @  M"|c?d x.8Ï‘i @  M#}c?d ¸.8XÃ}) @  M$~c?d ø.8ÚRj÷ @  M%c?d 8/8Ãù±t @  M&€c?d x/8Ah¦ª @  M'c?d ¸/8ÝÁ‰ @  M(‚c?d ø/8_PW @  M)ƒc?d 808¥  @  M*„c?d x08'Ä @  M+…c?d ¸08°Ïp @  M,†c?d ø082^® @  M-‡c?d 818>„Æž @  M.ˆc?d x18¼Ñ@ @  M/‰c?d ¸18_ƒ @  M0Šc?d ø18ŒH] @  M1‹c?d 828ÖJFc @  M2Œc?d x28TÛQ½ @  M3c?d ¸28ÉE  @  M4Žc?d ø28AR× @  M5c?d 838(’ñ  @  M6c?d x38ªæÕ @  M7‘c?d ¸386ªVö @  M8’c?d ø38´;A( @  M9“c?d 848é÷Ø @  M:”c?d x48kf  @  M;•c?d ¸48ü4² @  M<–c?d ø48~¥l @  M=—c?d 858rÉ\ @  M>˜c?d x58ðîÞ‚ @  M?™c?d ¸58~çqc @  M@šc?d ø58üvf½ @  MA›c?d 868%°hƒ @  MBœc?d x68§!] @  MCc?d ¸680ské @  MDžc?d ø68²â|7 @  MEŸc?d 878Fßæ7 @  MF c?d x78ÄNñé @  MG¡c?d ¸78XçAÊ @  MH¢c?d ø78ÚvV @  MI£c?d 888ª tö @  MJ¤c?d x88(šc( @  MK¥c?d ¸88¿Èwœ @  ML¦c?d ø88=Y`B @  MM§c?d 8981ƒ¡r @  MN¨c?d x98³¶¬ @  MO©c?d ¸98‚8o @  MPªc?d ø98‹/± @  MQ«c?d 8:8ÙM! @  MR¬c?d x:8[Ü6Q @  MS­c?d ¸:8ÌŽ"å @  MT®c?d ø:8N5; @  MU¯c?d 8;8'•–ç @  MV°c?d x;8¥9 @  MW±c?d ¸;89­1 @  MX²c?d ø;8»<&Ä @  MY³c?d 8<8æð{4 @  MZ´c?d x<8dalê @  M[µc?d ¸<8ó3x^ @  M\¶c?d ø<8q¢o€ @  M]·c?d 8=8}x®° @  M^¸c?d x=8ÿé¹n @  M_¹c?d ¸=8ßç @  M`ºc?d ø=8]và @  Ma»c?d 8>8„° ý @  Mb¼c?d x>8!# @  Mc½c?d ¸>8‘s — @  Md¾c?d ø>8âI @  Me¿c?d 8?8’X @  MfÀc?d x?8•…† @  MgÁc?duÐ@87 ¸?8 ·5¥ @  MhÂc?d ø?8‹&"{ @  MiÃc?d P@8 6¸ @  MjÄc?d @8,ý4F @  MkÅc?d Ð@8Ë5Ò @  MlÆc?d A8Ƀ¹: @  MmÇc?d PA8—€ã< @  MnÈc?d A8·uá @  MoÉc?d ÐA8$z! @  MpÊc?d B8¹]Úà @  MqËc?d PB8NcÁ @  MrÌc?d B8_»a? @  MsÍc?d ÐB8j`« @  MtÎc?d C8ºÅìC @  MuÏc?d PC8–Ô© @  MvÐc?d C8¡cÖW @  MwÑc?d ÐC8Ÿ®sT @  MxÒc?d D8†à€[ @  MyÓc?d PD8@ó9z @  MzÔc?d D8`;„ @  M{Õc?d ÐD8U0: @  M|Öc?d E8…x¶ø @  M}×c?d PE8Û{ìþ @  M~Øc?d E8ûŽî @  MÙc?d ÐE84µdð @  M€Úc?d F8©ñÄ1 @  MÛc?d PF8oâ} @  M‚Üc?d F8Oî @  MƒÝc?d ÐF8z!~z @  M„Þc?d G8ªiò’ @  M…ßc?d PG8 ó¤ @  M†àc?d G8,xñZ @  M‡ác?d ÐG8µTY @  Mˆâc?d H8&JØD @  M‰ãc?d PH8àYae @  MŠäc?d H8À¬c› @  M‹åc?d ÐH8õšb @  MŒæc?d I8%Òîç @  Mçc?d PI8{Ñ´á @  MŽèc?d I8[$¶ @  Méc?d ÐI8ÈH-ü @  Mêc?d J8U = @  M‘ëc?d PJ8“4 @  M’ìc?d J8³ê6â @  M“íc?d ÐJ8†Ü7v @  M”îc?d K8V”»ž @  M•ïc?d PK8mǃt @  M–ðc?d K8M2Š @  M—ñc?d ÐK8sÿ$‰ @  M˜òc?d L8j±×† @  M™óc?d PL8¬¢n§ @  Mšôc?d L8ŒWlY @  M›õc?d ÐL8¹amÍ @  Mœöc?d M8i)á% @  M÷c?d PM87*»# @  Mžøc?d M8ß¹Ý @  MŸùc?d ÐM8•µŽ @  M úc?d N8ñ¥O @  M¡ûc?d PN8Îân @  M¢üc?d N8î @  M£ýc?d ÐN8Û! @  M¤þc?d O8 i“ì @  M¥ÿc?d PO8u¹Ã @  M¦d?d O8#€»= @  M§d?d ÐO8M> @  M¨d?d P8£“¢Œ @  M©d?d PP8e€­ @  Mªd?d P8EuS @  M«d?d ÐP8pCÇ @  M¬d?d Q8  ”/ @  M­d?d PQ8þÎ) @  M®d?d Q8ÞýÌ× @  M¯ d?d ÐQ8M‘W4 @  M° d?d R8ÐÕ÷õ @  M± d?d PR8ÆNÔ @  M² d?d R863L* @  M³ d?d ÐR8M¾ @  M´d?d S8ÓMÁV @  Mµd?d PS8èù¼ @  M¶d?d S8ÈëûB @  M·d?d ÐS8ö&^A @  M¸d?d T8ïh­N @  M¹d?d PT8){o @  Mºd?d T8 Ž‘ @  M»d?d ÐT8<¸ @  M¼d?d U8ìð›í @  M½d?d PU8²óÁë @  M¾d?d U8’à @  M¿d?d ÐU8¾kyÔ @  MÀd?d V8#/Ù @  MÁd?d PV8å<`4 @  MÂd?d V8ÅÉbÊ @  MÃd?d ÐV8ðÿc^ @  MÄd?d W8 ·ï¶ @  MÅd?d PW8†Sî€ @  MÆ d?d W8¦¦ì~ @  MÇ!d?d ÐW8˜kI} @  MÈ"d?d X8¬”Å` @  MÉ#d?d PX8j‡|A @  MÊ$d?d X8Jr~¿ @  MË%d?d ÐX8D+ @  MÌ&d?d Y8¯ óà @  MÍ'd?d PY8ñ©Å @  MÎ(d?d Y8Ñú«; @  MÏ)d?d ÐY8B–0Ø @  MÐ*d?d Z8ßÒ @  MÑ+d?d PZ8Á)8 @  MÒ,d?d Z894+Æ @  MÓ-d?d ÐZ8 *R @  MÔ.d?d [8ÜJ¦º @  MÕ/d?d P[8çžP @  MÖ0d?d [8Ç윮 @  M×1d?d Ð[8ù!9­ @  MØ2d?d \8àoÊ¢ @  MÙ3d?d P\8&|sƒ @  MÚ4d?d \8‰q} @  MÛ5d?d Ð\83¿pé @  MÜ6d?d ]8ã÷ü @  MÝ7d?d P]8½ô¦ @  MÞ8d?d ]8¤ù @  Mß9d?d Ð]8kª @  Mà:d?d ^8‚/¸k @  Má;d?d P^8D<J @  Mâd?d _8¡±1á @  N?d?d P_82LÞ+ @  N@d?d _8¹ÜÕ @  NuÐ`8Ad?d Ð_8âÆ&¬ @  NBd?d (`8\>“4 @  NCd?d h`8TŸuo @  NDd?d ¨`8tjw‘ @  N Ed?d è`8„è @  N Fd?d (a8T] @  N Gd?d ha8Ï ë @  N Hd?d ¨a8ï⢠@  N Id?d èa8Xl @  NJd?d (b8‚Ùø­ @  NKd?d hb8'Ù  @  NLd?d ¨b8,"è @  NMd?d èb8÷SØ‘ @  NNd?d (c8'Ty @  NOd?d hc8Ù—~ @  NPd?d ¨c8ùô•€ @  NQd?d èc8 ‹où @  NRd?d (d8Åœö @  NSd?d hd8dz­ @  NTd?d ¨d88‘xS @  NUd?d èd8Èî‚* @  NVd?d (e8¦Â @  NWd?d he8ƒì¯) @  NXd?d ¨e8£­× @  NYd?d èe8SfW® @  NZd?d (f8Î"÷o @  N[d?d hf8z$d @  N \d?d ¨f8ZÑ š @  N!]d?d èf8ª®ðã @  N"^d?d (g8zæ|  @  N#_d?d hg8K†Ð @  N$`d?d ¨g89¾„. @  N%ad?d èg8ÉÁ~W @  N&bd?d (h8ý>òJ @  N'cd?d hh8õŸ @  N(dd?d ¨h8Õjï @  N)ed?d èh8%ì– @  N*fd?d (i8õ]`~ @  N+gd?d hi8nÁ• @  N,hd?d ¨i8NâÃk @  N-id?d èi8¾9 @  N.jd?d (j8#Ù™Ó @  N/kd?d hj8†ÙAh @  N0ld?d ¨j8¦,C– @  N1md?d èj8VS¹ï @  N2nd?d (k8†5 @  N3od?d hk8xö @  N4pd?d ¨k8Xôôþ @  N5qd?d èk8¨‹‡ @  N6rd?d (l8±Åýˆ @  N7sd?d hl8¹dÓ @  N8td?d ¨l8™‘- @  N9ud?d èl8iîãT @  N:vd?d (m8¹¦o¼ @  N;wd?d hm8"ìÎW @  N<xd?d ¨m8Ì© @  N=yd?d èm8òf6Ð @  N>zd?d (n8o"– @  N?{d?d hn8u#oˆ @  N@|d?d ¨n8UÖmv @  NA}d?d èn8¥©— @  NB~d?d (o8uáç @  NCd?d ho8ûÚ ¿ @  ND€d?d ¨o8Û/¢A @  NEd?d èo8+PX8 @  NF‚d?d (p8•ŽäŠ @  NGƒd?d hp8/Ñ @  NH„d?d ¨p8½Ú/ @  NI…d?d èp8M¥úV @  NJ†d?d (q8ív¾ @  NK‡d?d hq8§×U @  NLˆd?d ¨q8&RÕ« @  NM‰d?d èq8Ö-/Ò @  NNŠd?d (r8Ki @  NO‹d?d hr8îiW¨ @  NPŒd?d ¨r8ΜUV @  NQd?d èr8>ã¯/ @  NRŽd?d (s8î«#Ç @  NSd?d hs8±àÀ @  NTd?d ¨s80Dâ> @  NU‘d?d ès8À;G @  NV’d?d (t8ÙuëH @  NW“d?d ht8ÑÔ  @  NX”d?d ¨t8ñ!í @  NY•d?d èt8^õ” @  NZ–d?d (u8Ñy| @  N[—d?d hu8J\Ø— @  N\˜d?d ¨u8¨=¼ @  N]™d?d èu8XÇÅ @  N^šd?d (v8Å;g @  N_›d?d hv8q=˜ @  N`œd?d ¨v8QÈšñ @  Nad?d èv8¡·`ˆ @  Nbžd?d (w8qÿì` @  NcŸd?d hw8R» @  Nd d?d ¨w82§E @  Ne¡d?d èw8ÂØî< @  Nf¢d?d (x8ö'b! @  Ng£d?d hx8þ†„z @  Nh¤d?d ¨x8Þs†„ @  Ni¥d?d èx8. |ý @  Nj¦d?d (y8þDð @  Nk§d?d hy8eQþ @  Nl¨d?d ¨y8EûS @  Nm©d?d èy8µ„©y @  Nnªd?d (z8(À ¸ @  No«d?d hz8ÀÑ @  Np¬d?d ¨z8­5Óý @  Nq­d?d èz8]J)„ @  Nr®d?d ({8¥l @  Ns¯d?d h{8sfk @  Nt°d?d ¨{8Síd• @  Nu±d?d è{8£’žì @  Nv²d?d (|8ºÜmã @  Nw³d?d h|8²}‹¸ @  Nx´d?d ¨|8’ˆ‰F @  Nyµd?d è|8b÷s? @  Nz¶d?d (}8²¿ÿ× @  N{·d?d h}8)õ^< @  N|¸d?d ¨}8 \ @  N}¹d?d è}8ù¦» @  N~ºd?d (~8d;z @  N»d?d h~8lÏÒ @  N€¼d?d ¨~8½™Í, @  N½d?d è~8Mæ7U @  N‚¾d?d (8®»½ @  Nƒ¿d?d h8STw @  N„Àd?d ¨8uЀ8'.¦V‰ @  N…Ád?d è8pK% @  N†Âd?d @€8rΩQ @  N‡Ãd?d €€8Ø Z* @  NˆÄd?d À€8ZšMô @  N‰Åd?d 8ø<,» @  NŠÆd?d @8z­;e @  N‹Çd?d €8Cƒ® @  NŒÈd?d À8Á˜p @  NÉd?d ‚8.¸Õ @  NŽÊd?d @‚8¬)ÂÈ @  NËd?d €‚8«MS @  NÌd?d À‚8)Ü @  N‘Íd?d ƒ8‹zy @  N’Îd?d @ƒ8 ën @  N“Ïd?d €ƒ8U•¸; @  N”Ðd?d Àƒ8ׯå @  N•Ñd?d „8¼¤±M @  N–Òd?d @„8>5¦“ @  N—Ód?d €„8”ðUè @  N˜Ôd?d À„8aB6 @  N™Õd?d …8´Ç#y @  NšÖd?d @…86V4§ @  N›×d?d €…8x€l @  NœØd?d À…8é—² @  NÙd?d †8bCÚÔ @  NžÚd?d @†8àÒÍ  @  NŸÛd?d €†8ö°'! @  N Üd?d À†8t!0ÿ @  N¡Ýd?d ‡8Ö‡Q° @  N¢Þd?d @‡8TFn @  N£ßd?d €‡8•ß©• @  N¤àd?d À‡8N¾K @  N¥ád?d ˆ8Q_ßñ @  N¦âd?d @ˆ8ÓÎÈ/ @  N§ãd?d €ˆ8y ;T @  N¨äd?d Àˆ8ûš,Š @  N©åd?d ‰8Yµ @  NÝe?d –8Ô”øf @  NÞe?d @–8Vï¸ @  Nße?d €–8@g“ @  Nàe?d À–8ÂöM @  Náe?d —8`Ps @  Nâe?d€ @—8–xz @  Oe?d €—8¶Šß¨ @  O e?d À—84Èv @  O!e?d ˜8·CR! @  O"e?d @˜85ÒEÿ @  O#e?d €˜8Q¥éþ @  O$e?d À˜8Ó4þ  @  O%e?d ™8¿ À @  O&e?d @™8=±×Ë @  O 'e?d €™8ÁÖ˜í @  O (e?d À™8CG3 @  O )e?d š8i¤9¸ @  O *e?d @š8ë5.f @  O +e?d €š8B‚g @  O,e?d Àš8 Ó•¹ @  O-e?d ›8Ìf•l @  O.e?d @›8N÷‚² @  O/e?d €›8×À¯x @  O0e?d À›8UQ¸¦ @  O1e?d œ8û¸]ã @  O2e?d @œ8y)J= @  O3e?d €œ8^æ< @  O4e?d Àœ8ŸÏñâ @  O5e?d 8óÛÏ× @  O6e?d @8qJØ  @  O7e?d €8-—/ @  O8e?d À8¼€ñ @  O9e?d ž8%_6z @  O:e?d @ž8§Î!¤ @  O;e?d €ž8ù¥ @  Oe?d @Ÿ8 ªÀ @  O!?e?d €Ÿ8çÚ«Ç @  O"@euР8?d ÀŸ8eK¼ @  O#Ae?d  8£çt5 @  O$Be?d X 8!vcë @  O%Ce?d ˜ 8EÏê @  O&De?d Ø 8ÇØ4 @  O'Ee?d ¡8«„æ @  O(Fe?d X¡8)ñß @  O)Ge?d ˜¡8Õr¾ù @  O*He?d Ø¡8Wã©' @  O+Ie?d ¢8}¬ @  O,Je?d X¢8ÿ‘r @  O-Ke?d ˜¢8›æ¤s @  O.Le?d Ø¢8w³­ @  O/Me?d £8ØÂ³x @  O0Ne?d X£8ZS¤¦ @  O1Oe?d ˜£8Ãd‰l @  O2Pe?d Ø£8Aõž² @  O3Qe?d ¤8ï{÷ @  O4Re?d X¤8ml) @  O5Se?d ˜¤8 úÀ( @  O6Te?d ؤ8‹k×ö @  O7Ue?d ¥8çéà @  O8Ve?d X¥8eîþ @  O9We?d ˜¥8™‰±; @  O:Xe?d Ø¥8¦å @  O;Ye?d ¦81ûn @  O<Ze?d X¦8³j° @  O=[e?d ˜¦8׫± @  O>\e?d ئ8UŒ¼o @  O?]e?d §8+8˜ @  O@^e?d X§8©©ŠF @  OA_e?d ˜§8­)žP @  OB`e?d ا8/¸‰Ž @  OCae?d ¨8¬àÙ @  ODbe?d X¨8.q @  OEce?d ˜¨8J¨ @  OFde?d ب8È—¿Ø @  OGee?d ©8¤ƒí @  OHfe?d X©8&–3 @  OIge?d ˜©8ÚuÙ @  OJhe?d Ø©8XäÎË @  OKie?d ª8rx@ @  OLje?d Xª8ð–ož @  OMke?d ˜ª8”áß @  ONle?d ت8pÔA @  OOme?d «8×ÅÔ” @  OPne?d X«8UTÃJ @  OQoe?d ˜«8Ìcî€ @  ORpe?d Ø«8Nòù^ @  OSqe?d ¬8à @  OTre?d X¬8bŠ Å @  OUse?d ˜¬8ý§Ä @  OVte?d ج8„l° @  OWue?d ­8èxŽ/ @  OXve?d X­8jé™ñ @  OYwe?d ˜­8–ŽÖ× @  OZxe?d Ø­8Á  @  O[ye?d ®8>üw‚ @  O\ze?d X®8¼m`\ @  O]{e?d ˜®8ØÌ] @  O^|e?d Ø®8Z‹Ûƒ @  O_}e?d ¯8Š8üæ @  O`~e?d X¯8©ë8 @  Oae?d ˜¯8῾­ @  Ob€e?d د8c.©s @  Oce?d °8jW‹ @  Od‚e?d X°8èÆU @  Oeƒe?d ˜°8Œ±¸T @  Of„e?d ذ8 ¯Š @  Og…e?d ±8b4‘¿ @  Oh†e?d X±8ॆa @  Oi‡e?d ˜±8ÂÉG @  Ojˆe?d ر8žSÞ™ @  Ok‰e?d ²8´°h @  OlŠe?d X²86!Ì @  Om‹e?d ˜²8RVÓÍ @  OnŒe?d ز8ÐÇÄ @  Ooe?d ³8rÄÆ @  OpŽe?d X³8“ãÓ @  Oqe?d ˜³8 ÔþÒ @  Ore?d س8ˆEé  @  Os‘e?d ´8&¬ I @  Ot’e?d X´8¤=— @  Ou“e?d ˜´8ÀJ·– @  Ov”e?d Ø´8BÛ H @  Ow•e?d µ8.Ïž} @  Ox–e?d Xµ8¬^‰£ @  Oy—e?d ˜µ8P9Æ… @  Oz˜e?d ص8Ò¨Ñ[ @  O{™e?d ¶8øKgÐ @  O|še?d X¶8zÚp @  O}›e?d ˜¶8­Ü @  O~œe?d ض8œ<ËÑ @  Oe?d ·8ÞÚ @  O€že?d X·8ƒOÍÉ @  OŸe?d ˜·8‡ÏÙß @  O‚ e?d Ø·8^Î @  Oƒ¡e?d ¸8†TV @  O„¢e?d X¸8—Cˆ @  O…£e?d ˜¸8`àï‰ @  O†¤e?d ظ8âqøW @  O‡¥e?d ¹8ŽeÆb @  Oˆ¦e?d X¹8 ôѼ @  O‰§e?d ˜¹8𓞚 @  OЍe?d ع8r‰D @  O‹©e?d º8Xá?Ï @  OŒªe?d Xº8Úp( @  O«e?d ˜º8¾„ @  Oެe?d غ8<–“Î @  O­e?d »8ý#“ @  O®e?d X»8²„Å @  O‘¯e?d ˜»8æ…© @  O’°e?d Ø»8d¾Ñ @  O“±e?d ¼8Êý[” @  O”²e?d X¼8HlLJ @  O•³e?d ˜¼8,àK @  O–´e?d ؼ8®Š÷• @  O—µe?d ½8žɠ @  O˜¶e?d X½8@Þ~ @  O™·e?d ˜½8¼h‘X @  Oš¸e?d ؽ8>ù†† @  O›¹e?d ¾80  @  Oœºe?d X¾8–‹'Ó @  O»e?d ˜¾8òü‹Ò @  Ož¼e?d ؾ8pmœ  @  OŸ½e?d ¿8 Þ»i @  O ¾e?d X¿8"O¬· @  O¡¿e?d ˜¿8ÖŸ­° @uÐÀ8  O¢Àe?d Ø¿8Tºn @  O£Áe?d 0À8‡Yýv @  O¤Âe?d pÀ8Èê¨ @  O¥Ãe?d °À8a¿F© @  O¦Äe?d ðÀ8ã.Qw @  O§Åe?d 0Á8:oB @  O¨Æe?d pÁ8 «xœ @  O©Çe?d °Á8ñÌ7º @  OªÈe?d ðÁ8s] d @  O«Ée?d 0Â8Y¾–ï @  O¬Êe?d pÂ8Û/1 @  O­Ëe?d °Â8¿X-0 @  O®Ìe?d ðÂ8=É:î @  O¯Íe?d 0Ã8ü|:; @  O°Îe?d pÃ8~í-å @  O±Ïe?d °Ã8çÚ/ @  O²Ðe?d ðÃ8eKñ @  O³Ñe?d 0Ä8Ë¢ò´ @  O´Òe?d pÄ8I3åj @  OµÓe?d °Ä8-DIk @  O¶Ôe?d ðÄ8¯Õ^µ @  O·Õe?d 0Å8ÃÁ`€ @  O¸Öe?d pÅ8APw^ @  O¹×e?d °Å8½78x @  OºØe?d ðÅ8?¦/¦ @  O»Ùe?d 0Æ8E™- @  O¼Úe?d pÆ8—ÔŽó @  O½Ûe?d °Æ8ó£"ò @  O¾Üe?d ðÆ8q25, @  O¿Ýe?d 0Ç8†Û @  OÀÞe?d pÇ8 @  OÁße?d °Ç8‰— @  OÂàe?d ðÇ8 Í @  OÃáe?d 0È8ˆ^šš @  OÄâe?d pÈ8 ÏD @  OÅãe?d °È8n¸!E @  OÆäe?d ðÈ8ì)6› @  OÇåe?d 0É8€=® @  OÈæe?d pÉ8¬p @  OÉçe?d °É8þËPV @  OÊèe?d ðÉ8|ZGˆ @  OËée?d 0Ê8V¹ñ @  OÌêe?d pÊ8Ô(æÝ @  OÍëe?d °Ê8°_JÜ @  OÎìe?d ðÊ82Î] @  OÏíe?d 0Ë8ó{]× @  OÐîe?d pË8qêJ  @  OÑïe?d °Ë8èÝgà @  OÒðe?d ðË8jLp @  OÓñe?d 0Ì8Ä¥•X @  OÔòe?d pÌ8F4‚† @  OÕóe?d °Ì8"C.‡ @  OÖôe?d ðÌ8 Ò9Y @  O×õe?d 0Í8ÌÆl @  OØöe?d pÍ8NW² @  OÙ÷e?d °Í8²0_” @  OÚøe?d ðÍ80¡HJ @  OÛùe?d 0Î8BþÁ @  OÜúe?d pÎ8˜Óé @  OÝûe?d °Î8ü¤E @  OÞüe?d ðÎ8~5RÀ @  Oßýe?d 0Ï8®†u¥ @  Oàþe?d pÏ8,b{ @  Oáÿe?d °Ï8DWÇ @  Oâf?d€ ðÏ8ቬ÷ @  Pf?d 0Ð8 ±N& @  Pf?d pÐ8‹ Yø @  Pf?d °Ð8* @  Pf?d ðÐ8¨Ê @  Pf?d 0Ñ8 )x… @  Pf?d pÑ8ˆ¸o[ @  Pf?d °Ñ8ºm @  Pf?d ðÑ88ühÙ @  P  f?d 0Ò8×V%¿ @  P  f?d pÒ8UÇ2a @  P  f?d °Ò8ôùe @  P  f?d ðÒ8vhrS @  P  f?d 0Ó8ÔÎ @  Pf?d pÓ8V_ @  Pf?d °Ó8¬{H’ @  Pf?d ðÓ8.ê_L @  Pf?d 0Ô8EJAä @  Pf?d pÔ8ÇÛV: @  Pf?d °Ô8fåÖ @  Pf?d ðÔ8ät @  Pf?d 0Õ8FÒwG @  Pf?d pÕ8ÄC`™ @  Pf?d °Õ8ö–pÅ @  Pf?d ðÕ8tg @  Pf?d 0Ö8›­*} @  Pf?d pÖ8<=£ @  Pf?d °Ö8¸jO @  Pf?d ðÖ8:“}‘ @  Pf?d 0×8˜5Þ @  Pf?d p×8¤  @  Pf?d °×8l1Y< @  P  f?d ð×8î Nâ @  P!!f?d 0Ø8¨±/X @  P""f?d pØ8* 8† @  P##f?d °Ø8‹oj @  P$$f?d ðØ8 x´ @  P%%f?d 0Ù8«)û @  P&&f?d pÙ8)¸% @  P''f?d °Ù8my @  P((f?d ðÙ8™ü § @  P))f?d 0Ú8vVDÁ @  P**f?d pÚ8ôÇS @  P++f?d °Ú8Uùó @  P,,f?d ðÚ8×h- @  P--f?d 0Û8uÎrb @  P..f?d pÛ8÷_e¼ @  P//f?d °Û8 {)ì @  P00f?d ðÛ8ê>2 @  P11f?d 0Ü8äJ š @  P22f?d pÜ8fÛ7D @  P33f?d °Ü8Çå`¨ @  P44f?d ðÜ8Etwv @  P55f?d 0Ý8çÒ9 @  P66f?d pÝ8eCç @  P77f?d °Ý8W–» @  P88f?d ðÝ8Õe @  P99f?d 0Þ8:­K @  P::f?d pÞ8¸<\Ý @  P;;f?d °Þ8 1 @  P<>f?d pß8»¤j~ @  P??f?d uÐà8/°ß8“f+Á @  P@@f?d ðß8÷< @  PAAf?d Hà8z½N @  PBBf?d ˆà8ZH° @  PCCf?d Èà8YÏ| @  PDDf?d á8‰ZC” @  PEEf?d Há8y%¹í @  PFFf?d ˆá8`gÆ @  PG Gf?d Èá8ð¦bº @  PH Hf?d â8mâÂ{ @  PI If?d Hâ88 @  PJ Jf?d ˆâ8½h:ü @  PK Kf?d Èâ8¾2x0 @  PL Lf?d ã8nzôØ @  PM Mf?d Hã8ž¡ @  PN Nf?d ˆã8¾ð _ @  PO Of?d Èã8æ°U/ @  PP Pf?d ä8ÿþ¦  @  PQ Qf?d Hä8\Y @  PR Rf?d ˆä8/t^§ @  PS Sf?d Èä8,.k @  PT Tf?d å8üfƒ @  PU Uf?d Hå8 jú @  PV Vf?d ˆå8,ìh @  PW Wf?d Èå8¼]mx @  PX Xf?d æ8!͹ @  PY Yf?d Hæ8Ñf7À @  PZ Zf?d ˆæ8ñ“5> @  P[ [f?d Èæ8òÉwò @  P\ \f?d ç8"û @  P] ]f?d Hç8Òþc @  P^ ^f?d ˆç8ò  @  P_ _f?d Èç8&úD @  P` `f?d è8Èœ @  Pa af?d Hè8âz2å @  Pb bf?d ˆè8Â0 @  Pc cf?d Èè8ÁÕr× @  Pd df?d é8þ? @  Pe ef?d Hé8áâF @  Pf ff?d ˆé8Á¸ @  Pg gf?d Èé8Q¦Ä @  Ph hf?d ê8Ì⣠@  Pi if?d Hê8  @  Q ýf?d `9,Ï?Ÿ @  Q þf?d  9 :=a @  Q ÿf?d à98/(Ø @  Q g?d 9†ñ”j @  Q g?d `9›(9 @  Q g?d  9$n*Ç @  Q! g?d à9â}“æ @  Q" g?d 925 @  Q# g?d `9š @  Q$ g?d  9'öd @  Q% g?d à9yõFb @  Q& g?d 9䱿£ @  Q'  g?d `9Ú|C  @  Q(  g?d  9ú‰A^ @  Q)  g?d à9<šø @  Q*  g?d 9ìÒt— @  Q+  g?d `9Ùäu @  Q, g?d  9ùwý @  Q- g?d à9ÂBO @  Q. g?d 9Û ¼ @  Q/ g?d `9H`'û @  Q0 g?d  9h•% @  Q1 g?d à9®†œ$ @  Q2 g?d 9~ÎÌ @  Q3 g?d `9KøX @  Q4 g?d  9k ¦ @  Q5 g?d à95I  @  Q6 g?d 9¨Jéa @  Q7 g?d `9–‡Lb @  Q8 g?d  9¶rNœ @  Q9 g?d à9pa÷½ @  Q: g?d 9 ){U @  Q; g?d `9•zÁ @  Q< g?d  9µêx? @  Q= g?d à9y  @  Q>  g?d 9'ñõ @  Q? !g?d `9 œOÕ @  Q@ "g?d  9+iM+ @  QA #g?d à9ízô  @  QB $g?d 9=2xâ @  QC %g?d `9yv @  QD &g?d  9(ñ{ˆ @  QE 'g?d à9vò!Ž @  QF (g?d 9ë¶O @  QG )g?d `9Õ{$L @  QH *g?d  9õŽ&² @  QI +g?d à93Ÿ“ @  QJ ,g?d 9ãÕ{ @  QK -g?d `9Öãï @  QL .g?d  9ö @  QM /g?d à9ÍE(û @  QN 0g?d 9Ô Ûô @  QO 1g?d `9Gg@ @  QP 2g?d  9g’Bé @  QQ 3g?d à9¡ûÈ @  QR 4g?d 9qÉw  @  QS 5g?d `9Dÿv´ @  QT 6g?d  9d tJ @  QU 7g?d à9: .L @  QV 8g?d 9§MŽ @  QW 9g?d `9™€+Ž @  QX :g?d  9¹u)p @  QY ;g?d à9fQ @  QZ g?d  9ºíÓuÐ 9 @  Q] ?g?d à9ìY ô @  Q^ @g?d 8 9RÕ’ @  Q_ Ag?d x 98iÁ @  Q` Bg?d ¸ 9?Ík? @  Qa Cg?d ø 9ùÞÒ @  Qb Dg?d 8!9)–^ö @  Qc Eg?d x!9 _b @  Qd Fg?d ¸!9©2+ @  Qƒeg?d x)9 Ÿ3¿ @  Q„fg?d ¸)9+j1A @  Q…gg?d ø)9uikG @  Q†hg?d 8*9è-ˆ @  Q‡ig?d x*9Öàn… @  Qˆjg?d ¸*9öl{ @  Q‰kg?d ø*90ÕZ @  QŠlg?d 8+9àNY² @  Q‹mg?d x+9ÕxX& @  QŒng?d ¸+9õZØ @  Qog?d ø+9ÎÞb2 @  QŽpg?d 8,9ב= @  Qqg?d x,9Dü Þ @  Qrg?d ¸,9d   @  Q‘sg?d ø,9¢± @  Q’tg?d 8-9rR=é @  Q“ug?d x-9Gd<} @  Q”vg?d ¸-9g‘>ƒ @  Q•wg?d ø-99’d… @  Q–xg?d 8.9¤ÖÄD @  Q—yg?d x.9šaG @  Q˜zg?d ¸.9ºîc¹ @  Q™{g?d ø.9|ýÚ˜ @  Qš|g?d 8/9¬µVp @  Q›}g?d x/9™ƒWä @  Qœ~g?d ¸/9¹vU @  Qg?d ø/9ò¯ @  Qž€g?d 809LÚ© @  QŸg?d x09ΰN @  Q ‚g?d ¸09îE° @  Q¡ƒg?d ø09(V®‘ @  Q¢„g?d 819ø"y @  Q£…g?d x19Í(#í @  Q¤†g?d ¸19íÝ! @  Q¥‡g?d ø19³Þ{ @  Q¦ˆg?d 829.šÛÔ @  Q§‰g?d x29W~× @  Q¨Šg?d ¸290¢|) @  Q©‹g?d ø29ö±Å @  QªŒg?d 839&ùIà @  Q«g?d x39ÏHt @  Q¬Žg?d ¸393:JŠ @  Q­g?d ø39ir` @  Q®g?d 849'o @  Q¯‘g?d x49‚KŒ @  Q°’g?d ¸49¢¾r @  Q±“g?d ø49d­¡S @  Q²”g?d 859´å-» @  Q³•g?d x59Ó,/ @  Q´–g?d ¸59¡&.Ñ @  Qµ—g?d ø59ÿ%t× @  Q¶˜g?d 869baÔ @  Q·™g?d x69\¬q @  Q¸šg?d ¸69|Ysë @  Q¹›g?d ø69ºJÊÊ @  Qºœg?d 879jF" @  Q»g?d x79_4G¶ @  Q¼žg?d ¸79ÁEH @  Q½Ÿg?d ø79Ù%D~ @  Q¾ g?d 889íÚÈc @  Q¿¡g?d x89Á·r¢ @  QÀ¢g?d ¸89áBp\ @  QÁ£g?d ø89'QÉ} @  Q¤g?d 899÷E• @  QÃ¥g?d x99Â/D @  QĦg?d ¸99âÚFÿ @  Qŧg?d ø99¼Ùù @  Qƨg?d 8:9!¼8 @  QÇ©g?d x:9P; @  QȪg?d ¸:9?¥Å @  QÉ«g?d ø:9ù¶¢ä @  Qʬg?d 8;9)þ.  @  QË­g?d x;9È/˜ @  QÌ®g?d ¸;9<=-f @  Qͯg?d ø;9nŒ @  Qΰg?d 8<9 æƒ @  Qϱg?d x<9L}` @  Qвg?d ¸<9­¹ž @  Qѳg?d ø<9kªÆ¿ @  QÒ´g?d 8=9»âJW @  QÓµg?d x=9ŽÔKà @  QÔ¶g?d ¸=9®!I= @  QÕ·g?d ø=9ð"; @  QÖ¸g?d 8>9mf³ú @  Q×¹g?d x>9S«ù @  Qغg?d ¸>9s^ @  QÙ»g?d ø>9µM­& @  QÚ¼g?d 8?9e!Î @  QÛ½g?d x?9P3 Z @  Qܾg?duÐ@97 ¸?9pÆ"¤ @  QÝ¿g?d ø?9äÛÑV @  QÞÀg?d P@9'wkj @  QßÁg?d @9y @  QàÂg?d Ð@9…èÕÇ @  QáÃg?d A9"÷Ð @  QâÄg?d€ PA9Rô @  RÅg?d A9$çK“ @  RÆg?d ÐA9¦v\M @  RÇg?d B9"éJ¹ @  RÈg?d PB9 x]g @  RÉg?d B9òc²> @  RÊg?d ÐB9pò¥à @  RËg?d C9*ŠØ @  RÌg?d PC9¨ÏS @  R Íg?d C9ú  @  R Îg?d ÐC9x‘7Ô @  R Ïg?d D9T @  R Ðg?d PD9ŸÅÜ @  R Ñg?d D9ÍÞè… @  RÒg?d ÐD9OOÿ[ @  RÓg?d E9¸–¼Ö @  RÔg?d PE9:« @  RÕg?d E9hDQ @  RÖg?d ÐE9êS @  R×g?d F9nE{ @  RØg?d PF9ìƒR¥ @  RÙg?d F9¾˜½ü @  RÚg?d ÐF9< ª" @  RÛg?d G9fq×O @  RÜg?d PG9äàÀ‘ @  RÝg?d G9¶û/È @  RÞg?d ÐG94j8 @  Rßg?d H9á©Y @  Ràg?d PH9c8NÐ @  Rág?d H91#¡‰ @  Râg?d ÐH9³²¶W @  Rãg?d I9UmÒj @  R äg?d PI9×üÅ´ @  R!åg?d I9GNÍ8 @  R"æg?d ÐI9ÅßÚæ @  R#çg?d J9A@Ì @  R$èg?d PJ9ÃÑÛÌ @  R%ég?d J9‘Ê4• @  R&êg?d ÐJ9[#K @  R'ëg?d K9I#^& @  R(ìg?d PK9˲Iø @  R)íg?d K9™©¦¡ @  R*îg?d ÐK98± @  R+ïg?d L9~ý–© @  R,ðg?d PL9ülw @  R-ñg?d L9®wn. @  R.òg?d ÐL9,æyð @  R/óg?d M9Û?:} @  R0ôg?d PM9Y®-£ @  R1õg?d M9 µÂú @  R2ög?d ÐM9‰$Õ$ @  R3÷g?d N9 »ÃÐ @  R4øg?d PN9*Ô @  R5ùg?d N9Ý1;W @  R6úg?d ÐN9_ ,‰ @  R7ûg?d O9ØQä @  R8üg?d PO9‡IF: @  R9ýg?d O9ÕR©c @  R:þg?d ÐO9Wþ½ @  R;ÿg?d P9ãÊj @  R<h?d PP9ýrÝ´ @  R=h?d P9¯i2í @  R>h?d ÐP9-ø%3 @  R?h?d Q9e Gœ @  R@h?d PQ9ç±PB @  RAh?d Q9µª¿ @  RBh?d ÐQ97;¨Å @  RCh?d R9³¤¾1 @  RDh?d PR915©ï @  RE h?d R9c.F¶ @  RF h?d ÐR9á¿Qh @  RG h?d S9»Ç, @  RH h?d PS99V;Û @  RI h?d S9kMÔ‚ @  RJh?d ÐS9éÜÃ\ @  RKh?d T9ŒäŠ @  RLh?d PT9ˆóT @  RMh?d T9\“  @  RNh?d ÐT9Þ Ó @  ROh?d U9)ÛH^ @  RPh?d PU9«J_€ @  RQh?d U9ùQ°Ù @  RRh?d ÐU9{À§ @  RSh?d V9ÿ_±ó @  RTh?d PV9}Φ- @  RUh?d V9/ÕIt @  RVh?d ÐV9­D^ª @  RWh?d W9÷<#Ç @  RXh?d PW9u­4 @  RYh?d W9'¶Û@ @  RZh?d ÐW9¥'Ìž @  R[h?d X9pä­† @  R\ h?d PX9òuºX @  R]!h?d X9 nU @  R^"h?d ÐX9"ÿBß @  R_#h?d Y9Ä &â @  R`$h?d PY9F±1< @  Ra%h?d Y9ªÞe @  Rb&h?d ÐY9–;É» @  Rc'h?d Z9¤ßO @  Rd(h?d PZ95È‘ @  Re)h?d Z9Â.'È @  Rf*h?d ÐZ9@¿0 @  Rg+h?d [9ÇM{ @  Rh,h?d P[9˜VZ¥ @  Ri-h?d [9ÊMµü @  Rj.h?d Ð[9HÜ¢" @  Rk/h?d \9-…ô @  Rl0h?d P\9¯ˆ’* @  Rm1h?d \9ý“}s @  Rn2h?d Ð\9j­ @  Ro3h?d ]9ˆÛ)  @  Rp4h?d P]9 J>þ @  Rq5h?d ]9XQѧ @  Rr6h?d Ð]9ÚÀÆy @  Rs7h?d ^9^_Ð @  Rt8h?d P^9ÜÎÇS @  Ru9h?d ^9ŽÕ(  @  Rv:h?d Ð^9 D?Ô @  Rw;h?d _9V @  RuÐ`9z>h?d Ð_9ÆŽJ5 @  R{?h?d (`9i¹ @  R|@h?d h`9ë‹g @  R}Ah?d ¨`9¹ÿ> @  R~Bh?d è`9;èà @  RCh?d (a9º~ @  R€Dh?d ha9­  @  REh?d ¨a9@Bù @  R‚Fh?d èa9”U' @  RƒGh?d (b9F CÓ @  R„Hh?d hb9ÄšT  @  R…Ih?d ¨b9–»T @  R†Jh?d èb9¬Š @  R‡Kh?d (c9NhÑç @  RˆLh?d hc9ÌùÆ9 @  R‰Mh?d ¨c9žâ)` @  RŠNh?d èc9s>¾ @  R‹Oh?d (d9y¶h @  RŒPh?d hd9û'¶ @  RQh?d ¨d9©<áï @  RŽRh?d èd9+­ö1 @  RSh?d (e9Ütµ¼ @  RTh?d he9^å¢b @  R‘Uh?d ¨e9 þM; @  R’Vh?d èe9ŽoZå @  R“Wh?d (f9 ðL @  R”Xh?d hf9ˆa[Ï @  R•Yh?d ¨f9Úz´– @  R–Zh?d èf9Xë£H @  R—[h?d (g9“Þ% @  R˜\h?d hg9€Éû @  R™]h?d ¨g9Ò&¢ @  Rš^h?d èg9Pˆ1| @  R›_h?d (h9…KPd @  Rœ`h?d hh9ÚGº @  Rah?d ¨h9UÁ¨ã @  Ržbh?d èh9×P¿= @  RŸch?d (i91Û @  R dh?d hi9³ÌÞ @  R¡eh?d ¨i9á#‡ @  R¢fh?d èi9c”4Y @  R£gh?d (j9ç "­ @  R¤hh?d hj9eš5s @  R¥ih?d ¨j97Ú* @  R¦jh?d èj9µÍô @  R§kh?d (k9ïh°™ @  R¨lh?d hk9mù§G @  R©mh?d ¨k9?âH @  Rªnh?d èk9„´ƒ @  R« oh?d (l9áq¤Ã @  R¬ ph?d hl9cà³ @  R­ qh?d ¨l91û\D @  R® rh?d èl9³jKš @  R¯ sh?d (m9D³ @  R° th?d hm9Æ"É @  R± uh?d ¨m9”9ð @  R² vh?d èm9¨çN @  R³ wh?d (n9’7ñº @  R´ xh?d hn9¦æd @  Rµ yh?d ¨n9B½ = @  R¶ zh?d èn9À,ã @  R· {h?d (o9šTcŽ @  R¸ |h?d ho9ÅtP @  R¹ }h?d ¨o9JÞ›  @  Rº ~h?d èo9ÈOŒ× @  R» h?d (p9z;œã @  R¼ €h?d hp9øª‹= @  R½ h?d ¨p9ª±dd @  R¾ ‚h?d èp9( sº @  R¿ ƒh?d (q9`ø @  RÀ „h?d hq9âiË @  RÁ …h?d ¨q9°ré’ @  R †h?d èq92ãþL @  Rà ‡h?d (r9¶|è¸ @  RÄ ˆh?d hr94íÿf @  RÅ ‰h?d ¨r9fö? @  RÆ Šh?d èr9ägá @  RÇ ‹h?d (s9¾zŒ @  RÈ Œh?d hs9<ŽmR @  RÉ h?d ¨s9n•‚  @  RÊ Žh?d ès9ì•Õ @  RË h?d (t9‰Á² @  RÌ h?d ht9 P¥Ý @  RÍ ‘h?d ¨t9YKJ„ @  RÎ ’h?d èt9ÛÚ]Z @  RÏ “h?d (u9,× @  RÐ ”h?d hu9®’  @  RÑ •h?d ¨u9ü‰æP @  RÒ –h?d èu9~ñŽ @  RÓ —h?d (v9ú‡çz @  RÔ ˜h?d hv9xð¤ @  RÕ ™h?d ¨v9* ý @  RÖ šh?d èv9¨œ# @  R× ›h?d (w9òäuN @  RØ œh?d hw9pub @  RÙ h?d ¨w9"nÉ @  RÚ žh?d èw9 ÿš @  RÛ Ÿh?d (x9u<û @  RÜ  h?d hx9÷­ìÑ @  RÝ ¡h?d ¨x9¥¶ˆ @  RÞ ¢h?d èx9''V @  Rß £h?d (y9Áøpk @  Rà ¤h?d hy9Cigµ @  Rá ¥h?d ¨y9rˆì @  Râ ¦h?d€ èy9ç ƒ” @  S §h?d (z9‚þÝI @  S ¨h?d hz9oÊ— @  S ©h?d ¨z9—=Þ# @  S ªh?d èz9¬Éý @  S «h?d ({9fëê @  S ¬h?d h{9÷ü4 @  S ­h?d ¨{9Ÿ^L @  S ®h?d è{9Ï[É @  S ¯h?d (|9½C‡ò @  S °h?d h|9?Ò, @  S ±h?d ¨|9¨€„˜ @  S ²h?d è|9*“F @  S ³h?d (}9¾Û±Q @  S ´h?d h}9zó @  S2Øh?d €†9ñs @  S3Ùh?d À†9+¹ðç @  S4Úh?d ‡9ûñ| @  S5Ûh?d @‡9=âÅ. @  S6Üh?d €‡9ÇÐ @  S7Ýh?d À‡9#ÚbÓ @  S8Þh?d ˆ9%îÎ @  S9ßh?d @ˆ9±Áïø @  S:àh?d €ˆ9‘4í @  S;áh?d Àˆ9¤ì’ @  S<âh?d ‰9tJ`z @  S=ãh?d @‰9²YÙ[ @  S>äh?d €‰9’¬Û¥ @  S?åh?d À‰9¾Áad @  S@æh?d Š9#…Á¥ @  SAçh?d @Š9}†›£ @  SBèh?d €Š9]s™] @  SCéh?d ÀŠ9hE˜É @  SDêh?d ‹9¸ ! @  SEëh?d @‹9~­ @  SFìh?d €‹9^ë¯þ @  SGíh?d À‹9`& ý @  SHîh?d Œ9yhùò @  SIïh?d @Œ9B;Á @  SJðh?d €Œ9bÎÃæ @  SKñh?d ÀŒ9WøÂr @  SLòh?d 9‡°Nš @  SMóh?d @9A£÷» @  SNôh?d €9aVõE @  SOõh?d À9ò:n¦ @  SPöh?d Ž9o~Îg @  SQ÷h?d @Ž91}”a @  SRøh?d €Ž9ˆ–Ÿ @  SSùh?d ÀŽ9$¾—  @  STúh?d 9ôöã @  SUûh?d @92å¢Â @  SVüh?d €9 < @  SWýh?d À9,Ý? @  SXþh?d 9’¹ @  SYÿh?d @9¦¬4 @  SZi?d €9†ã®Ê @  S[i?d À9³Õ¯^ @  S\i?d ‘9c#¶ @  S]i?d @‘9¥Žš— @  S^i?d €‘9…{˜i @  S_i?d À‘9$: @  S`i?d ’9šU„û @  Sai?d @’9ÄVÞý @  Sbi?d €’9ä£Ü @  Sc i?d À’9ѕݗ @  Sd i?d “9ÝQ @  Se i?d @“9ÇÎè^ @  Sf i?d €“9ç;ê  @  Sg i?d À“9ÙöO£ @  Shi?d ”9À¸¼¬ @  Sii?d @”9ûë„F @  Sji?d €”9Û†¸ @  Ski?d À”9î(‡, @  Sli?d •9>` Ä @  Smi?d @•9øs²å @  Sni?d €•9؆° @  Soi?d À•9Kê+ø @  Spi?d –9Ö®‹9 @  Sqi?d @–9ˆ­Ñ? @  Sri?d €–9¨XÓÁ @  Ssi?d À–9nÒU @  Sti?d —9M&^½ @  Sui?d @—9‹5çœ @  Svi?d €—9«Àåb @  Swi?d À—9• @a @  Sxi?d ˜9¡òÌ| @  Syi?d @˜9ÍJ @  Sz i?d €˜9'ãÏ´ @  S{!i?d À˜9ÕÎ  @  S|"i?d ™9ÂBÈ @  S}#i?d @™9Žûé @  S~$i?d €™9${ù @  S%i?d À™9ë@sç @  S€&i?d š9vÓ& @  S'i?d @š9(‰  @  S‚(i?d €š9ò‹Þ @  Sƒ)i?d Àš9=ÄŠJ @  S„*i?d ›9팢 @  S…+i?d @›9+Ÿ¿ƒ @  S†,i?d €›9 j½} @  S‡-i?d À›95§~ @  Sˆ.i?d œ9,éëq @  S‰/i?d @œ9ºÓ› @  SŠ0i?d €œ97OÑe @  S‹1i?d Àœ9yÐñ @  SŒ2i?d 9Ò1\ @  S3i?d @9"å8 @  SŽ4i?d €94×çÆ @  S5i?d À9§»|% @  S6i?d ž9:ÿÜä @  S‘7i?d @ž9dü†â @  S’8i?d €ž9D „ @  S“9i?d Àž9q?…ˆ @  S”:i?d Ÿ9¡w ` @  S•;i?d @Ÿ9gd°A @  S–i?d  9Êþ. @  S™?i?d X 9œJ:( @  Sš@i?d ˜ 9¼¿8Ö @  S›Ai?d Ø 9‰‰9B @  SœBi?d ¡9YÁµª @  SCi?d X¡9ŸÒ ‹ @  SžDi?d ˜¡9¿'u @  SŸEi?d Ø¡9=M²& @  S Fi?d ¢9  ç @  S¡Gi?d X¢9þ Há @  S¢Hi?d ˜¢9ÞÿJ @  S£Ii?d Ø¢9ëÉK‹ @  S¤Ji?d £9;Çc @  S¥Ki?d X£9ý’~B @  S¦Li?d ˜£9Ýg|¼ @  S§Mi?d Ø£9ãªÙ¿ @  S¨Ni?d ¤9úä*° @  S©Oi?d X¤9Á·Z @  SªPi?d ˜¤9áB¤ @  S«Qi?d ؤ9Ôt0 @  S¬Ri?d ¥9<Ø @  S­Si?d X¥9Â/$ù @  S®Ti?d ˜¥9âÚ& @  S¯Ui?d Ø¥9q¶½ä @  S°Vi?d ¦9ìò% @  S±Wi?d X¦9²ñG# @  S²Xi?d ˜¦9’EÝ @  S³Yi?d ئ9§2DI @  S´Zi?d §9wzÈ¡ @  Sµ[i?d X§9±iq€ @  S¶\i?d ˜§9‘œs~ @  S·]i?d ا9¯QÖ} @  S¸^i?d ¨9›®Z` @  S¹_i?d X¨9=J[V @  Sº`i?d ˜¨9¿Y¨ @  S»ai?d ب9(‰X< @  S¼bi?d ©9øÁÔÔ @  S½ci?d X©9>Òmõ @  S¾di?d ˜©9'o  @  S¿ei?d Ø©92JÕÊ @  SÀfi?d ª9¯u  @  SÁgi?d Xª9ñ /  @  SÂhi?d ˜ª9Ñø-ó @  SÃii?d ت9äÎ,g @  SÄji?d «94†  @  SÅki?d X«9ò•® @  SÆli?d ˜«9Ò`P @  SÇmi?d Ø«9ì­¾S @  SÈni?d ¬9õãM\ @  SÉoi?d X¬9ΰu¶ @  SÊpi?d ˜¬9îEwH @  SËqi?d ج9ÛsvÜ @  SÌri?d ­9 ;ú4 @  SÍsi?d X­9Í(C @  SÎti?d ˜­9íÝAë @  SÏui?d Ø­9~±Ú @  SÐvi?d ®9ãõzÉ @  SÑwi?d X®9½ö Ï @  SÒxi?d ˜®9"1 @  SÓyi?d Ø®9¨5#¥ @  SÔzi?d ¯9x}¯M @  SÕ{i?d X¯9¾nl @  SÖ|i?d ˜¯9ž›’ @  S×}i?d د9 V±‘ @  SØ~i?d °9ˆ # @  SÙi?d X°9UúM– @  SÚ€i?d ˜°9uOh @  SÛi?d ذ9@9Nü @  SÜ‚i?d ±9q @  S݃i?d X±9Vb{5 @  SÞ„i?d ˜±9v—yË @  Sß…i?d ر9ôýŘ @  Sà†i?d ²9i¹eY @  Sá‡i?d X²97º?_ @  Sâˆi?d€ ˜²9‘• @  T‰i?d ز9EnÜ¥ @  TŠi?d ³9•&PM @  T‹i?d X³9–| @  TŒi?d ˜³9¶‰ @  Ti?d س9Föê @  TŽi?d ´9_¸  @  Ti?d X´9ªY~™ @  Ti?d ˜´9Ь|g @  T ‘i?d Ø´9zÓ† @  T ’i?d µ9ª› ö @  T “i?d Xµ9©ÁH: @  T ”i?d ˜µ9‰4JÄ @  T •i?d ص9yK°½ @  T–i?d ¶9ä| @  T—i?d X¶9Ù+à @  T˜i?d ˜¶9ùê) @  T™i?d ض9 •Óg @  Tši?d ·9ÙÝ_ @  T›i?d X·9Ú‡C @  Tœi?d ˜·9úr½ @  Ti?d Ø·9 åÄ @  Tži?d ¸9>òiÙ @  TŸi?d X¸9V¤7• @  T i?d ˜¸9vQ5k @  T¡i?d ظ9†.Ï @  T¢i?d ¹9VfCú @  T£i?d X¹9U<6 @  T¤i?d ˜¹9uÉÈ @  T¥i?d ع9…¶ù± @  T¦i?d º9òYp @  T§i?d Xº94äE\ @  T ¨i?d ˜º9G¢ @  T!©i?d غ9än½Û @  T"ªi?d »94&13 @  T#«i?d X»97|sÿ @  T$¬i?d ˜»9‰q @  T%­i?d Ø»9çö‹x @  T&®i?d ¼9þ¸xw @  T'¯i?d X¼9 Yç @  T(°i?d ˜¼9+¬ @  T)±i?d ؼ9ÛÓç` @  T*²i?d ½9 ›kˆ @  T+³i?d X½9Á)D @  T,´i?d ˜½9(4+º @  T-µi?d ؽ9ØKÑà @  T.¶i?d ¾9Eq @  T/·i?d X¾9xJž @  T0¸i?d ˜¾9XêH` @  T1¹i?d ؾ9¨•² @  T2ºi?d ¿9xÝ>ñ @  T3»i?d X¿9{‡|= @  T4¼i?d ˜¿9[r~à @uÐÀ9  T5½i?d Ø¿9’ÊXo @  T6 ¾i?d 0À9ö: = @  T7 ¿i?d pÀ9n Æi?d 0Â9 j,… @  T? Çi?d pÂ9¢{6; @  T@ Èi?d °Â9‚Ž4Å @  TA Éi?d ðÂ9rñμ @  TB Êi?d 0Ã9¢¹BT @  TC Ëi?d pÃ9¡ã˜ @  TD Ìi?d °Ã9f @  TE Íi?d ðÃ9qiø @  TF Îi?d 0Ä9h'  @  TG Ïi?d pÄ9Æl€ @  TH Ði?d °Ä9½3n~ @  TI Ñi?d ðÄ9ML” @  TJ Òi?d 0Å9ï @  TK Ói?d pÅ9ž^Z# @  TL Ôi?d °Å9¾«XÝ @  TM Õi?d ðÅ9NÔ¢¤ @  TN Öi?d 0Æ9Óe @  TO ×i?d pÆ9î€9ù @  TP Øi?d °Æ9Îu; @  TQ Ùi?d ðÆ9> Á~ @  TR Úi?d 0Ç9îBM– @  TS Ûi?d pÇ9íZ @  TT Üi?d °Ç9Íí ¤ @  TU Ýi?d ðÇ9=’÷Ý @  TV Þi?d 0È9 m{À @  TW ßi?d pÈ9a;%Œ @  TX ài?d °È9AÎ'r @  TY ái?d ðÈ9±±Ý  @  TZ âi?d 0É9aùQã @  T[ ãi?d pÉ9b£/ @  T\ äi?d °É9BVÑ @  T] åi?d ðÉ9²)ë¨ @  T^ æi?d 0Ê9/mKi @  T_ çi?d pÊ9{WE @  T` èi?d °Ê9#ŽU» @  Ta éi?d ðÊ9Óñ¯Â @  Tb êi?d 0Ë9¹#* @  Tc ëi?d pË9ãaæ @  Td ìi?d °Ë9 c @  Te íi?d ðË9Ði™a @  Tf îi?d 0Ì9É'jn @  Tg ïi?d pÌ9<Æ þ @  Th ði?d °Ì93 @  Ti ñi?d ðÌ9ìLõy @  Tj òi?d 0Í9<y‘ @  Tk ói?d pÍ9?^;] @  Tl ôi?d °Í9«9£ @  Tm õi?d ðÍ9ïÔÃÚ @  Tn öi?d 0Î9rc @  To ÷i?d pÎ9O€X‡ @  Tp øi?d °Î9ouZy @  Tq ùi?d ðÎ9Ÿ   @  Tr úi?d 0Ï9OB,è @  Ts ûi?d pÏ9Ln$ @  Tt üi?d °Ï9lílÚ @  Tu ýi?d ðÏ9œ’–£ @  Tv þi?d 0Ð9"L* @  Tw ÿi?d pÐ9jÉU÷ @  Tx j?d °Ð9J @  T„  j?d °Ó9fµ%À @  T…  j?d ðÓ9–Êß¹ @  T† j?d 0Ô9„,¶ @  T‡ j?d pÔ9zeK& @  Tˆ j?d °Ô9ZIØ @  T‰ j?d ðÔ9ªï³¡ @  TŠ j?d 0Õ9z§?I @  T‹ j?d pÕ9yý}… @  TŒ j?d °Õ9Y{ @  T j?d ðÕ9©w… @  TŽ j?d 0Ö943%à @  T j?d pÖ9 #_ @  T j?d °Ö9)Ö¡ @  T‘ j?d ðÖ9Ù©æØ @  T’ j?d 0×9 áj0 @  T“ j?d p×9 »(ü @  T” j?d °×9*N* @  T• j?d ð×9Ú1Ð{ @  T– j?d 0Ø9îÎ\f @  T— j?d pØ9†˜* @  T˜  j?d °Ø9¦mÔ @  T™ !j?d ðØ9Vú­ @  Tš "j?d 0Ù9†ZvE @  T› #j?d pÙ9…4‰ @  Tœ $j?d °Ù9¥õ6w @  T %j?d ðÙ9UŠÌ @  Tž &j?d 0Ú9ÈÎlÏ @  TŸ 'j?d pÚ9äØpã @  T  (j?d °Ú9Ä-r @  T¡ )j?d ðÚ94Rˆd @  T¢ *j?d 0Û9äŒ @  T£ +j?d pÛ9ç@F@ @  T¤ ,j?d °Û9ǵD¾ @  T¥ -j?d ðÛ97ʾÇ @  T¦ .j?d 0Ü9.„MÈ @  T§ /j?d pÜ9Ûe*X @  T¨ 0j?d °Ü9û(¦ @  T© 1j?d ðÜ9 ïÒß @  Tª 2j?d 0Ý9Û§^7 @  T« 3j?d pÝ9Øýû @  T¬ 4j?d °Ý9ø @  T­ 5j?d ðÝ9wä| @  T® 6j?d 0Þ9•3D½ @  T¯ 7j?d pÞ9¨#! @  T° 8j?d °Þ9ˆÖ}ß @  T± 9j?d ðÞ9x©‡¦ @  T² :j?d 0ß9¨á N @  T³ ;j?d pß9«»I‚ @  T´ j?d Hà9[R3& @  T·?j?d ˆà9a0m[ @  T¸@j?d Èà9ã¡z… @  T¹Aj?d á9AÊ @  TºBj?d Há9Ö  @  T»Cj?d ˆá9b¨[ø @  T¼Dj?d Èá9à9L& @  T½Ej?d â9“@ @  T¾Fj?d Hâ9ž @  T¿Gj?d ˆâ9­w @  TÀHj?d Èâ9/æÞ @  TÁIj?d ã9@o‘ @  TÂJj?d Hã9ÑxO @  TÃKj?d ˆã9®ï/£ @  TÄLj?d Èã9,~8} @  TÅMj?d ä9GÞ&Õ @  TÆNj?d Hä9ÅO1  @  TÇOj?d ˆä9’ÊC» @  TÈPj?d Èä9[Te @  TÉQj?d å9²ý5* @  TÊRj?d Hå90l"ô @  TËSj?d ˆå9‘Ru @  TÌTj?d Èå9ÃbÆ @  TÍUj?d æ9üi/  @  TÎVj?d Hæ9~ø8~ @  TÏWj?d ˆæ9áŒÂ @  TÐXj?d Èæ9c @  TÑYj?d ç9Á»`S @  TÒZj?d Hç9C*w @  TÓ[j?d ˆç9â a @  TÔ\j?d Èç9`…7¿ @  TÕ]j?d è9&”V @  TÖ^j?d Hè9¤AÛ @  T×_j?d ˆè9n7 · @  TØ`j?d Èè9ì¦i @  TÙaj?d é9N|& @  TÚbj?d Hé9Ì‘kø @  TÛcj?d ˆé9m¯< @  TÜdj?d Èé9ï>+Ê @  TÝej?d ê9”f¬ @  TÞfj?d Hê9‚qr @  Tßgj?d ˆê9 wx~ @  Tàhj?d Èê9Žæo  @  Táij?d ë9,@ï @  Tâjj?d€ Hë9Ú— @  Ukj?d ˆë9šmR @  Ulj?d Èë9ü Œ @  Umj?d ì9¶èÉ @  Unj?d Hì94„ÿ @  Uoj?d ˆì9­³ÒÝ @  Upj?d Èì9/"Å @  Uqj?d í9C6û6 @  Urj?d Hí9Á§ìè @  U sj?d ˆí9¥Ð@é @  U tj?d Èí9'AW7 @  U uj?d î9 ¢á¼ @  U vj?d Hî93öb @  U wj?d ˆî9sT¹D @  Uxj?d Èî9ñÅ®š @  Uyj?d ï90p®O @  Uzj?d Hï9²á¹‘ @  U{j?d ˆï9Ö– @  U|j?d Èï9TN @  U}j?d ð9]~¨¶ @  U~j?d Hð9ßï¿h @  Uj?d ˆð96ùêý @  U€j?d Èð9´hý# @  Uj?d ñ9Ø|à @  U‚j?d Hñ9ZíÔÈ @  Uƒj?d ˆñ9>šxÉ @  U„j?d Èñ9¼ o @  U…j?d ò9–èÙœ @  U†j?d Hò9yÎB @  U‡j?d ˆò9èd @  Uˆj?d Èò9j–º @  U‰j?d ó9º<±ß @  U Šj?d Hó98­¦ @  U!‹j?d ˆó9\Ú  @  U"Œj?d Èó9ÞKÞ @  U#j?d ô9p¢ø› @  U$Žj?d Hô9ò3ïE @  U%j?d ˆô9k @  U&j?d Èô9é•ÕQ @  U'‘j?d õ9…ëd @  U(’j?d Hõ9üº @  U)“j?d ˆõ9cgP» @  U*”j?d Èõ9áöGe @  U+•j?d ö9Ëñî @  U,–j?d Hö9I„æ0 @  U-—j?d ˆö9µã© @  U.˜j?d Èö97r¾È @  U/™j?d ÷9öǾ @  U0šj?d H÷9tV©Ã @  U1›j?d ˆ÷9! @  U2œj?d È÷9’° @  U3j?d ø9èˆK @  U4žj?d Hø9“yŸ• @  U5Ÿj?d ˆø9—ù‹ƒ @  U6 j?d Èø9hœ] @  U7¡j?d ù9y|¢h @  U8¢j?d Hù9ûíµ¶ @  U9£j?d ˆù9Ÿš· @  U:¤j?d Èù9 i @  U;¥j?d ú97è¸â @  U<¦j?d Hú9µy¯< @  U=§j?d ˆú9Ià @  U>¨j?d Èú9Ë÷Ä @  U?©j?d û9µ;Ö3 @  U@ªj?d Hû97ªÁí @  UA«j?d ˆû9SÝmì @  UB¬j?d Èû9ÑLz2 @  UC­j?d ü9¥Ÿw @  UD®j?d Hü9ý4ˆ© @  UE¯j?d ˆü9d¥c @  UF°j?d Èü9æ’²½ @  UG±j?d ý9ІŒˆ @  UH²j?d Hý9›V @  UI³j?d ˆý9l`7W @  UJ´j?d Èý9îñ ‰ @  UKµj?d þ9Ä– @  UL¶j?d Hþ9FƒÜ @  UM·j?d ˆþ9ºäÎú @  UN¸j?d Èþ98uÙ$ @  UO¹j?d ÿ9ùÀÙñ @  UPºj?d Hÿ9{QÎ/ @  UQ»j?d ˆÿ9&b. @  URuÐ:¼j?d Èÿ9à7Œ @  US€½j?d :SaXÑ @  UT€¾j?d `:ÑðO @  UU€¿j?d  :% N @  UV€Àj?d à:§±YÖ @  UW€Áj?d :Ë¥gã @  UX€Âj?d `:I4p= @  UY€Ãj?d  :-CÜ< @  UZ€Äj?d à:¯ÒËâ @  U[€Åj?d :…1}i @  U\€Æj?d `: j· @  U]€Çj?d  :ûÇ%‘ @  U^€Èj?d à:yV2O @  U_€Éj?d :©å* @  U`€Êj?d `:+tô @  Ua€Ëj?d  :O®õ @  Ub€Ìj?d à:Í’¹+ @  Uc€Íj?d :c{\n @  Ud€Îj?d `:áêK° @  Ue€Ïj?d  :xÝfz @  Uf€Ðj?d à:úLq¤ @  Ug€Ñj?d :–XO‘ @  Uh€Òj?d `:ÉXO @  Ui€Ój?d  :p¾ôN @  Uj€Ôj?d à:ò/ã @  Uk€Õj?d :ØÌU @  Ul€Öj?d `:Z]BÅ @  Um€×j?d  :¦: ã @  Un€Øj?d à:$«= @  Uo€Ùj?d :åè @  Up€Új?d `:g 6 @  Uq€Ûj?d  :ø¡7 @  Ur€Üj?d à:i¶é @  Us€Ýj?d :1,¾ @  Ut€Þj?d `:€ ;` @  Uu€ßj?d  :„ /v @  Uv€àj?d à:±8¨ @  Uw€áj?d :j¥ @  Ux€âj?d ` :è4C @  Uy€ãj?d   :ŒC½B @  Uz€äj?d à :Òªœ @  U{€åj?d :$1 @  U|€æj?d ` :¦  É @  U}€çj?d   :ZÇDï @  U~€èj?d à :ØVS1 @  U€éj?d :E´B÷ @  U€€êj?d ` :Ç%U) @  U€ëj?d   :£Rù( @  U‚€ìj?d à :!Ãîö @  Uƒ€íj?d :* ³ @  U„€îj?d ` : »m @  U…€ïj?d   :”Œ1§ @  U†€ðj?d à :&y @  U‡€ñj?d :z L @  Uˆ€òj?d ` :ø˜’ @  U‰€ój?d   :œï£“ @  UŠ€ôj?d à :~´M @  U‹€õj?d :4Æ @  UŒ€öj?d `:¶  @  U€÷j?d  :JkZ> @  UŽ€øj?d à:ÈúMà @  U€ùj?d : OM5 @  U€új?d `:‹ÞZë @  U‘€ûj?d  :ï©öê @  U’€üj?d à:m8á4 @  U“€ýj?d :dAKÌ @  U”€þj?d `:æÐ\ @  U•€ÿj?d  :p¡\‹ @  U–€k?d à:ò0KU @  U—€k?d :ž$u` @  U˜€k?d `:µb¾ @  U™€k?d  :xÂο @  Uš€k?d à:úSÙa @  U›€k?d :аoê @  Uœ€k?d `:R!x4 @  U€k?d  :®F7 @  Už€k?d à:,× Ì @  UŸ€ k?d :üd© @  U € k?d `:~õw @  U¡€ k?d  :‚¼v @  U¢€ k?d à:˜«¨ @  U£€ k?d :6úNí @  U¤€k?d `:´kY3 @  U¥€k?d  :-\tù @  U¦€k?d à:¯Íc' @  U§€k?d :ÃÙ] @  U¨€k?d `:AHJÌ @  U©€k?d  :%?æÍ @  Uª€k?d à:§®ñ @  U«€k?d :MG˜ @  U¬€k?d `:ÜPF @  U­€k?d  :ó»` @  U®€k?d à:q*¾ @  U¯€k?d :°Ÿk @  U°€k?d `:2µ @  U±€k?d  :Vy³´ @  U²€k?d à:Ôè¤j @  U³€k?d :W°>= @  U´€k?d `:Õ!)ã @  Uµ€k?d  :Ñ¡=õ @  U¶€ k?d à:S0*+ @  U·€!k?d :?$ @  U¸€"k?d `:½µÀ @  U¹€#k?d  :Ù¯Á @  Uº€$k?d à:[S¸ @  U»€%k?d :q°” @  U¼€&k?d `:ó!J @  U½€'k?d  :FVl @  U¾€(k?d à:×A² @  U¿€)k?d :óc`E @  UÀ€*k?d `:qòw› @  UÁ€+k?d  :…Ûš @  U€,k?d à:—ÌD @  UÀ-k?d :9ý) @  UÄ€.k?d `:»l>ß @  UÅ€/k?d  :"[ @  UÆ€0k?d à: ÊË @  UÇ€1k?d :ÌÞ:þ @  UÈ€2k?d `:NO-  @  UÉ€3k?d  :*8! @  UÊ€4k?d à:¨©–ÿ @  UË€5k?d :‚J t @  UÌ€6k?d `:Û7ª @  UÍ€7k?d  :ü¼xŒ @  U΀8k?d à:~-oR @  UÏ€9k?d :¿˜o‡ @  UЀ:k?d `:= xY @  UÑ€;k?d  :Y~ÔXuÐ : @  UÒ€k?d x :ŸÒt @  UÕ€?k?d ¸ :ks @  UÖ€@k?d ø :é“ ­ @  U×€Ak?d 8!:…‡4˜ @  UØ€Bk?d x!:#F @  UÙ€Ck?d ¸!:caG @  UÚ€Dk?d ø!:á𘙠@  UÛ€Ek?d 8":Ë. @  UÜ€Fk?d x":I‚9Ì @  UÝ€Gk?d ¸":µåvê @  UÞ€Hk?d ø":7ta4 @  U߀Ik?d 8#:çÇFQ @  Uà€Jk?d x#:eVQ @  Uá€Kk?d ¸#:!ýŽ @  Uâ€Lk?d€ ø#:B÷P @  V€Mk?d 8$: _°< @  V€Nk?d x$:Χâ @  V€Ok?d ¸$:Ó°qÅ @  V€Pk?d ø$:Q!f @  V€Qk?d 8%:ó‡T @  V€Rk?d x%:qŠ @  V€Sk?d ¸%:ÛÓãñ @  V€Tk?d ø%:YBô/ @  V €Uk?d 8&:¶è¹I @  V €Vk?d x&:4y®— @  V €Wk?d ¸&: W\ @  V €Xk?d ø&:Æ ‚ @  V €Yk?d 8':-`lÍ @  V€Zk?d x':¯ñ{ @  V€[k?d ¸':¨•¶ˆ @  V€\k?d ø':*¡V @  V€]k?d 8(:lÀì @  V€^k?d x(:î„×2 @  V€_k?d ¸(:/M8É @  V€`k?d ø(:­Ü/ @  V€ak?d 8):zNX @  V€bk?d x):ëY† @  V€ck?d ¸):'.ªý @  V€dk?d ø):¥¿½# @  V€ek?d 8*:JðE @  V€fk?d x*:È„ç› @  V€gk?d ¸*:ñªSP @  V€hk?d ø*:s;DŽ @  V€ik?d 8+:Ñ%Á @  V€jk?d x+:S 2 @  V€kk?d ¸+:EnØ4 @  V €lk?d ø+:ÇÿÏê @  V!€mk?d 8,:¬_ÑB @  V"€nk?d x,:.ÎÆœ @  V#€ok?d ¸,:r°» @  V$€pk?d ø,:ð!e @  V%€qk?d 8-:R‡f* @  V&€rk?d x-:Ðqô @  V'€sk?d ¸-:zÓ‚ @  V(€tk?d ø-:øB•Q @  V)€uk?d 8.:èØ7 @  V*€vk?d x.:•yÏé @  V+€wk?d ¸.:¬W{" @  V,€xk?d ø.:.Ælü @  V-€yk?d 8/:Œ` ³ @  V.€zk?d x/:ñm @  V/€{k?d ¸/: •×ö @  V0€|k?d ø/:‹À( @  V1€}k?d 80:G4‘= @  V2€~k?d x0:Å¥†ã @  V3€k?d ¸0:éú(› @  V4€€k?d ø0:kk?E @  V5€k?d 81:ÉÍ^  @  V6€‚k?d x1:K\IÔ @  V7€ƒk?d ¸1:ᙺ¯ @  V8€„k?d ø1:c­q @  V9€…k?d 82:Œ¢à @  V:€†k?d x2:3÷É @  V;€‡k?d ¸2:7C @  V<€ˆk?d ø2:µŒTÜ @  V=€‰k?d 83:*5“ @  V>€Šk?d x3:•»"M @  V?€‹k?d ¸3:-ÞÎô @  V@€Œk?d ø3:¯OÙ* @  VA€k?d 84:ÄïÇ‚ @  VB€Žk?d x4:F~Ð\ @  VC€k?d ¸4:{ @  VD€k?d ø4:˜‘¥ @  VE€‘k?d 85::7pê @  VF€’k?d x5:¸¦g4 @  VG€“k?d ¸5:c”O @  VH€”k?d ø5:òƒ‘ @  VI€•k?d 86:XÎ÷ @  VJ€–k?d x6:ýÉÙ) @  VK€—k?d ¸6:Äçmâ @  VL€˜k?d ø6:Fvz< @  VM€™k?d 87:äÐs @  VN€šk?d x7:fA ­ @  VO€›k?d ¸7:a%Á6 @  VP€œk?d ø7:ã´Öè @  VQ€k?d 88:¥¥·R @  VR€žk?d x8:'4 Œ @  VS€Ÿk?d ¸8:æýOw @  VT€ k?d ø8:dlX© @  VU€¡k?d 89:ÆÊ9æ @  VV€¢k?d x9:D[.8 @  VW€£k?d ¸9:îžÝC @  VX€¤k?d ø9:lÊ @  VY€¥k?d 8::ƒ¥‡û @  VZ€¦k?d x::4% @  V[€§k?d ¸::8$î @  V\€¨k?d ø::º‹30 @  V]€©k?d 8;:-R @  V^€ªk?d x;:š¼E¡ @  V_€«k?d ¸;:ŒÞ¯Š @  V`€¬k?d ø;:O¸T @  Va€­k?d 8<:eï¦ü @  Vb€®k?d x<:ç~±" @  Vc€¯k?d ¸<:»g @  Vd€°k?d ø<:9‘pÛ @  Ve€±k?d 8=:›7” @  Vf€²k?d x=:¦J @  Vg€³k?d ¸=:³cõ1 @  Vh€´k?d ø=:1òâï @  Vi€µk?d 8>:ÞX¯‰ @  Vj€¶k?d x>:\ɸW @  Vk€·k?d ¸>:eç œ @  Vl€¸k?d ø>:çvB @  Vm€¹k?d 8?:EÐz  @  Vn€ºk?d x?:ÇAmÓ @  Vo€»k?duÐ@:7 ¸?:À% H @  Vp€¼k?d ø?:?4Äê @  Vq½k?d P@:Žv“q @  Vr¾k?d @:®ƒ‘ @  Vs¿k?d Ð@:=~~E @  VtÀk?d A:í6ò­ @  VuÁk?d PA:IÔ @  VvÂk?d A:=¼ * @  VwÃk?d ÐA:5ìq @  VxÄk?d B:¨YL° @  VyÅk?d PB:X&¶É @  VzÆk?d B:xÓ´7 @  V{Çk?d ÐB:ã™Ü @  V|Èk?d C:3Ñ™4 @  V}Ék?d PC:îcM @  V~Êk?d C:ã[a³ @  VËk?d ÐC: ¨ @  V€Ìk?d D:B[ @  VÍk?d PD:ó=¡m @  V‚Îk?d D:ÓÈ£“ @  VƒÏk?d ÐD:-Ò`” @  V„Ðk?d E:ýšì| @  V…Ñk?d PE: å @  V†Òk?d E:-û @  V‡Ók?d ÐE:%±ò  @  VˆÔk?d F:¸õRa @  V‰Õk?d PF:HЍ @  VŠÖk?d F:hªæ @  V‹×k?d ÐF:ó5  @  VŒØk?d G:#}‡å @  VÙk?d PG:Ó}œ @  VŽÚk?d G:ó÷b @  VÛk?d ÐG:V÷§Ù @  VÜk?d H:b+Ä @  V‘Ýk?d PH:’wѽ @  V’Þk?d H:²‚ÓC @  V“ßk?d ÐH:Ñ/)˜ @  V”àk?d I:g¥p @  V•ák?d PI:ñ_  @  V–âk?d I:Ñí]÷ @  V—ãk?d ÐI:ÙL»¬ @  V˜äk?d J:Dm @  V™åk?d PJ:´wá @  Všæk?d J:”‚ãê @  V›çk?d ÐJ:ÈB @  Vœèk?d K:߀Îé @  Vék?d PK:/ÿ4 @  Vžêk?d K: 6n @  VŸëk?d ÐK:» Ée @  V ìk?d L:¢B:j @  V¡ík?d PL:R=À @  V¢îk?d L:rÈÂí @  V£ïk?d ÐL:ŒÒê @  V¤ðk?d M:\š @  V¥ñk?d PM:¬åw{ @  V¦òk?d M:Œu… @  V§ók?d ÐM:„±“Þ @  V¨ôk?d N:õ3 @  V©õk?d PN:éŠÉf @  Vªök?d N:ɢ @  V«÷k?d ÐN:R5js @  V¬øk?d O:‚}æ› @  V­ùk?d PO:râ @  V®úk?d O:R÷ @  V¯ûk?d ÐO:÷÷Ƨ @  V°ük?d P:I)z @  V±ýk?d PP:¹V€l @  V²þk?d P:™£‚’ @  V³ÿk?d ÐP:TöSP @  V´l?d Q:„¾ß¸ @  Vµl?d PQ:tÁ%Á @  V¶l?d Q:T4'? @  V·l?d ÐQ:\•Ád @  V¸l?d R:ÁÑa¥ @  V¹l?d PR:1®›Ü @  Vºl?d R:[™" @  V»l?d ÐR:Š8É @  V¼l?d S:ZY´! @  V½ l?d PS:ª&NX @  V¾ l?d S:ŠÓL¦ @  V¿ l?d ÐS:Òµ? @  VÀ l?d T:‰œF0 @  VÁ l?d PT:yã¼I @  VÂl?d T:Y¾· @  VÃl?d ÐT:§ }° @  VÄl?d U:wDñX @  VÅl?d PU:‡; ! @  VÆl?d U:§Î ß @  VÇl?d ÐU:¯oï„ @  VÈl?d V:2+OE @  VÉl?d PV:ÂTµ< @  VÊl?d V:â¡·Â @  VËl?d ÐV:yë) @  VÌl?d W:©£šÁ @  VÍl?d PW:YÜ`¸ @  VÎl?d W:y)bF @  VÏl?d ÐW:Ü)ºý @  VÐl?d X:èÖ6à @  VÑl?d PX:©Ì™ @  VÒl?d X:8\Îg @  VÓl?d ÐX:[ñ4¼ @  VÔ l?d Y:‹¹¸T @  VÕ!l?d PY:{ÆB- @  VÖ"l?d Y:[3@Ó @  V×#l?d ÐY:S’¦ˆ @  VØ$l?d Z:ÎÖI @  VÙ%l?d PZ:>©ü0 @  VÚ&l?d Z:\þÎ @  VÛ'l?d ÐZ:…_% @  VÜ(l?d [:U^ÓÍ @  VÝ)l?d P[:¥!)´ @  VÞ*l?d [:…Ô+J @  Vß+l?d Ð[:1ÒÔA @  Và,l?d \:(œ'N @  Vá-l?d P\:ØãÝ7 @  Vâ.l?d€ \:ŒÕÃo @  W/l?d Ð\:“ŽHA @  W0l?d ]:CÆÄ© @  W1l?d P]:vðÅ= @  W2l?d ]:VÇà @  W3l?d Ð]:~â @  W4l?d ^: RÞ# @  W5l?d P^:3Ÿ{  @  W6l?d ^:jyÞ @  W 7l?d Ð^:Mi#Ø @  W 8l?d _:!¯0 @  W 9l?d P_:¨®¤ @  W :l?d _:ˆâ¬Z @  WuÐ`: ;l?d Ð_:w6É® @  W l?d ¨`:zWå+ @  W ?l?d è`:,ãñ  @  W @l?d (a:ü«}ä @  W Al?d ha:É|p @  W Bl?d ¨a:éh~Ž @  W Cl?d èa:/{ǯ @  W Dl?d (b:²?gn @  W El?d hb:ŒòÂm @  W Fl?d ¨b:¬À“ @  W Gl?d èb:òš• @  W Hl?d (c:"L} @  W Il?d hc:zé @  W Jl?d ¨c:7 @  W Kl?d èc:ñœ¬6 @  W Ll?d (d:èÒ_9 @  W Ml?d hd:j¸ãj @  W Nl?d ¨d:JMá” @  W! Ol?d èd:qÙ~ @  W" Pl?d (e:¡VU– @  W# Ql?d he:”`T @  W$ Rl?d ¨e:´•Vü @  W% Sl?d èe:r†ïÝ @  W& Tl?d (f:ïÂO @  W' Ul?d hf:Ñê @  W( Vl?d ¨f:ñúèá @  W) Wl?d èf:¯ù²ç @  W* Xl?d (g:±> @  W+ Yl?d hg:J‡?› @  W, Zl?d ¨g:jr=e @  W- [l?d èg:¬a„D @  W. \l?d (h:˜žY @  W/ ]l?d hh: ò“º @  W0 ^l?d ¨h:+‘D @  W1 _l?d èh:ãr @  W2 `l?d (i:]«š @  W3 al?d hi:h @  W4 bl?d ¨i:Hhð @  W5 cl?d èi:Ž{¦Ñ @  W6 dl?d (j:? @  W7 el?d hj:-ò£ @  W8 fl?d ¨j: ¡í @  W9 gl?d èj:Sûë @  W: hl?d (k:ƒLw @  W; il?d hk:¶zv— @  W< jl?d ¨k:–ti @  W= kl?d èk:PœÍH @  W> ll?d (l:IÒ>G @  W? ml?d hl:e¿„† @  W@ nl?d ¨l:EJ†x @  WA ol?d èl:~¾’ @  WB pl?d (m:®Q2z @  WC ql?d hm:›g3î @  WD rl?d ¨m:»’1 @  WE sl?d èm:}ˆ1 @  WF tl?d (n:àÅ(ð @  WG ul?d hn:Þó @  WH vl?d ¨n:þý  @  WI wl?d èn: þÕ  @  WJ xl?d (o:p¶Yã @  WK yl?d ho:E€Xw @  WL zl?d ¨o:euZ‰ @  WM {l?d èo:£f㨠@  WN |l?d (p:¸_ @  WO }l?d hp:ŽÔÄù @  WP ~l?d ¨p:®!Æ @  WQ l?d èp:åS†² @  WR €l?d (q:5 Z @  WS l?d hq:- Î @  WT ‚l?d ¨q: Ø 0 @  WU ƒl?d èq:æË° @  WV „l?d (r:{Ð @  WW …l?d hr:EBµÓ @  WX †l?d ¨r:e··- @  WY ‡l?d èr:;´í+ @  WZ ˆl?d (s:ëüaà @  W[ ‰l?d hs:ÞÊ`W @  W\ Šl?d ¨s:þ?b© @  W] ‹l?d ès:8,Ûˆ @  W^ Œl?d (t:!b(‡ @  W_ l?d ht:£”Ô @  W` Žl?d ¨t:ƒý–* @  Wa l?d èt:¸®®À @  Wb l?d (u:hæ"( @  Wc ‘l?d hu:]Ð#¼ @  Wd ’l?d ¨u:}%!B @  We “l?d èu:»6˜c @  Wf ”l?d (v:&r8¢ @  Wg •l?d hv:¿¡ @  Wh –l?d ¨v:8JŸ_ @  Wi —l?d èv:fIÅY @  Wj ˜l?d (w:¶I± @  Wk ™l?d hw:ƒ7H% @  Wl šl?d ¨w:£ÂJÛ @  Wm ›l?d èw:eÑóú @  Wn œl?d (x:Q.ç @  Wo l?d hx:ÂBä @  Wp žl?d ¨x:â·æú @  Wq Ÿl?d èx:DSçÌ @  Wr  l?d (y:”k$ @  Ws ¡l?d hy:¡-j° @  Wt ¢l?d ¨y:ØhN @  Wu £l?d èy:GËÑo @  Wv ¤l?d (z:Úq® @  Ww ¥l?d hz:äBÔ­ @  Wx ¦l?d ¨z:Ä·ÖS @  Wy §l?d èz:š´ŒU @  Wz ¨l?d ({:Jü½ @  W{ ©l?d h{:Ê) @  W| ªl?d ¨{:_?× @  W} «l?d è{:™,ºö @  W~ ¬l?d (|:€bIù @  W ­l?d h|:OYà  @  W€ ®l?d ¨|:o¬Á÷ @  W ¯l?d è|:Tÿù @  W‚ °l?d (}:„·uõ @  Wƒ ±l?d h}:±ta @  W„ ²l?d ¨}:‘tvŸ @  W… ³l?d è}:WgϾ @  W† ´l?d (~:Ê#o @  W‡ µl?d h~:ôîÊ| @  Wˆ ¶l?d ¨~:ÔÈ‚ @  W‰ ·l?d è~:Š’„ @  WŠ ¸l?d (:ZPl @  W‹ ¹l?d h:ofø @  WŒ ºl?d ¨:uЀ:'O“ @  W »l?d è:‰€¤' @  WŽ ¼l?d @€:ç>FS @  W ½l?d €€:Ö6È @  W ¾l?d À€:T§ßN @  W‘ ¿l?d :PÊP_ @  W’ Àl?d @:Ò[G @  W“ Ál?d €:E S5 @  W” Âl?d À:ǘDë @  W• Ãl?d ‚:^JÕ @  W– Äl?d @‚:œÏ]  @  W— Ål?d €‚:fí( @  W˜ Æl?d À‚:‚÷úö @  W™ Çl?d ƒ:Ž-;Æ @  Wš Èl?d @ƒ: ¼, @  W› Él?d €ƒ:›î8¬ @  Wœ Êl?d Àƒ:/r @  W Ël?d „:D³r‚ @  Wž Ìl?d @„:Æ"e\ @  WŸ Íl?d €„:æ,Ì/ @  W  Îl?d À„:d½Ûñ @  W¡ Ïl?d …: 7x- @  W¢ Ðl?d @…:¦oó @  W£ Ñl?d €…:ô{G @  W¤ Òl?d À…:šel™ @  W¥ Ól?d †:C£b§ @  W¦ Ôl?d @†:Á2uy @  W§ Õl?d €†:]›ÅZ @  W¨ Öl?d À†:ß Ò„ @  W© ×l?d ‡:Óд @  Wª Øl?d @‡:QAj @  W« Ùl?d €‡:ÆÞ @  W¬ Úl?d À‡:D‚ @  W­ Ûl?d ˆ:4ÿ%â @  W® Ül?d @ˆ:¶n2< @  W¯ Ýl?d €ˆ:‡f¼ÿ @  W° Þl?d Àˆ:÷«! @  W± ßl?d ‰:ñÊ1! @  W² àl?d @‰:s[&ÿ @  W³ ál?d €‰:ä 2K @  W´ âl?d À‰:f˜%• @  Wµ ãl?d Š:¿^+« @  W¶ äl?d @Š:=Ïm?d Ø :Ã;Gš @  X/?m?d ¡:¤E© @  X0@m?d X¡:&Ô¾Ï @  X1Am?d ˜¡:tÏQ– @  X2Bm?d Ø¡:ö^FH @  X3Cm?d ¢:êѳ› @  X4Dm?d X¢:h@¤E @  X5Em?d ˜¢::[K @  X6Fm?d Ø¢:¸Ê\ @  X7Gm?d £:z¢Âˆ @  X8Hm?d X£:ø3ÕV @  X9Im?d ˜£:ª(: @  X:Jm?d Ø£:(¹-Ñ @  X;Km?d ¤:°<‹Ì @  X<Lm?d X¤:2­œ @  X=Mm?d ˜¤:`¶sK @  X>Nm?d ؤ:â'd• @  X?Om?d ¥:W¿‡ñ @  X@Pm?d X¥:Õ./ @  XAQm?d ˜¥:‡5v @  XBRm?d Ø¥:¤h¨ @  XCSm?d ¦:+{ @  XDTm?d X¦:›ºŠ¥ @  XEUm?d ˜¦:É¡eü @  XFVm?d ئ:K0r" @  XGWm?d §:‰Xìh @  XHXm?d X§: Éû¶ @  XIYm?d ˜§:YÒï @  XJZm?d ا:ÛC1 @  XK[m?d ¨:nwÚ> @  XL\m?d X¨:ìæÍà @  XM]m?d ˜¨:¾ý"¹ @  XN^m?d ب:Ò @  X®¾m?d ðÀ:%,)  @  X¯¿m?d 0Á:BRLJ @  X°Àm?d pÁ:ÀÃÐY @  X±Ám?d °Á:’Ø? @  X²Âm?d ðÁ:I(Þ @  X³Ãm?d 0Â: ÆÝ  @  X´Äm?d pÂ:ŽWÊÓ @  XµÅm?d °Â:ÜL%Š @  X¶Æm?d ðÂ:^Ý2T @  X·Çm?d 0Ã:œµ¬ @  X¸Èm?d pÃ:$»À @  X¹Ém?d °Ã:L?T™ @  XºÊm?d ðÃ:ήCG @  X»Ëm?d 0Ä:V+åZ @  X¼Ìm?d pÄ:Ôºò„ @  X½Ím?d °Ä:†¡Ý @  X¾Îm?d ðÄ:0  @  X¿Ïm?d 0Å:±¨ég @  XÀÐm?d pÅ:39þ¹ @  XÁÑm?d °Å:a"à @  XÂÒm?d ðÅ:ã³> @  XÃÓm?d 0Æ:ÿ<óí @  XÄÔm?d pÆ:}­ä3 @  XÅÕm?d °Æ:/¶ j @  XÆÖm?d ðÆ:­'´ @  XÇ×m?d 0Ç:oO‚þ @  XÈØm?d pÇ:íÞ•  @  XÉÙm?d °Ç:¿Åzy @  XÊÚm?d ðÇ:=Tm§ @  XËÛm?d 0È:ˆ`´¨ @  XÌÜm?d pÈ: ñ£v @  XÍÝm?d °È:XêL/ @  XÎÞm?d ðÈ:Ú{[ñ @  XÏßm?d 0É:MU k @  XÐàm?d pÉ:ÏÄ·µ @  XÑám?d °É:ßXì @  XÒâm?d ðÉ:NO2 @  XÓãm?d 0Ê:Áºá @  XÔäm?d pÊ:P­? @  XÕåm?d °Ê:ÓKBf @  XÖæm?d ðÊ:QÚU¸ @  X×çm?d 0Ë:“²Ëò @  XØèm?d pË:#Ü, @  XÙém?d °Ë:C83u @  XÚêm?d ðË:Á©$« @  XÛëm?d 0Ì:Y,‚¶ @  XÜìm?d pÌ:Û½•h @  XÝím?d °Ì:‰¦z1 @  XÞîm?d ðÌ: 7mï @  Xßïm?d 0Í:¨ˆ @  Xàðm?d pÍ:’9ŸÇ @  Xáñm?d °Í:À"pž @  Xâòm?d€ ðÍ:6p{æ @  Yóm?d 0Î:˾Æ @  Yôm?d pÎ:I/Ñ @  Yõm?d °Î:Þ}Åv @  Yöm?d ðÎ:\ìÒ¨ @  Y÷m?d 0Ï:P6˜ @  Yøm?d pÏ:Ò§F @  Yùm?d °Ï:N´e @  Yúm?d ðÏ:ÌŸ£» @  Y ûm?d 0Ð:6ñö @  Y üm?d pÐ:´R¦( @  Y ým?d °Ð:#²œ @  Y þm?d ðÐ:¡‘¥B @  Y ÿm?d 0Ñ:uè @  Yn?d pÑ:÷î 6 @  Yn?d °Ñ:Ææ‡õ @  Yn?d ðÑ:Dw+ @  Yn?d 0Ò:±ž @  Yn?d pÒ: ‰Ë @  Yn?d °Ò:ˆr @  Yn?d ðÒ: ㊡ @  Yn?d 0Ó:9K‘ @  Yn?d pÓ:„¨\O @  Y n?d °Ó:ìl @  Y n?d ðÓ:šû² @  Y n?d 0Ô:Ç\¦B @  Y n?d pÔ:Eͱœ @  Y n?d °Ô:ÒŸ¥( @  Yn?d ðÔ:P²ö @  Yn?d 0Õ:9„* @  Yn?d pÕ:»ô @  Yn?d °Õ:›¯‡ @  Y n?d ðÕ:ЏY @  Y!n?d 0Ö:ÀL¶g @  Y"n?d pÖ:BÝ¡¹ @  Y#n?d °Ö:Õµ  @  Y$n?d ðÖ:W¢Ó @  Y%n?d 0×:[Äcã @  Y&n?d p×:ÙUt= @  Y'n?d °×:EüÄ @  Y(n?d ð×:ÇmÓÀ @  Y)n?d 0Ø:·ñ" @  Y*n?d pØ:5æü @  Y+n?d °Ø:¢ÓòH @  Y,n?d ðØ: Bå– @  Y-n?d 0Ù:Ô– @  Y. n?d pÙ:VîhH @  Y/!n?d °Ù:gææ‹ @  Y0"n?d ðÙ:åwñU @  Y1#n?d 0Ú:<±ÿk @  Y2$n?d pÚ:¾ èµ @  Y3%n?d °Ú:)rü @  Y4&n?d ðÚ:«ãëß @  Y5'n?d 0Û:§9*ï @  Y6(n?d pÛ:%¨=1 @  Y7)n?d °Û:¹ @  Y8*n?d ðÛ:;šÌ @  Y9+n?d 0Ü:f\Ç< @  Y:,n?d pÜ:äÍÐâ @  Y;-n?d °Ü:sŸÄV @  Y<.n?d ðÜ:ñÓˆ @  Y=/n?d 0Ý:˜„pT @  Y>0n?d pÝ:gŠ @  Y?1n?d °Ý:”Èk @  Y@2n?d ðÝ:ßµ @  YA3n?d 0Þ:ÏKÑ‹ @  YB4n?d pÞ:MÚÆU @  YC5n?d °Þ:ÚˆÒá @  YD6n?d ðÞ:XÅ? @  YE7n?d 0ß:Tà @  YF8n?d pß:ÖRÑ @  YG9n?d uÐà:/°ß:Jû£ò @  YH:n?d ðß:Èj´, @  YI;n?d Hà:•LD% @  YJn?d á:PÇ˧ @  YM?n?d Há:s߀ @  YN@n?d ˆá:&†Ý~ @  YOAn?d Èá:µêF @  YPBn?d â:(®æ\ @  YQCn?d Hâ:î½_} @  YRDn?d ˆâ:ÎH]ƒ @  YSEn?d Èâ:û~\ @  YTFn?d ã:+6Ðÿ @  YUGn?d Hã:u5Šù @  YVHn?d ˆã:UÀˆ @  YWIn?d Èã:k - @  YXJn?d ä:rCÞ  @  YYKn?d Hä:´Pg* @  YZLn?d ˆä:”¥eÔ @  Y[Mn?d Èä:¡“d@ @  Y\Nn?d å:qÛè¨ @  Y]On?d Hå:JˆÐB @  Y^Pn?d ˆå:j}Ò¼ @  Y_Qn?d Èå:ènï @  Y`Rn?d æ:uSÎ. @  YaSn?d Hæ:³@w @  YbTn?d ˆæ:“µuñ @  YcUn?d Èæ:¦ƒte @  YdVn?d ç:vËø @  YeWn?d Hç:(È¢‹ @  YfXn?d ˆç:= u @  YgYn?d Èç:6ðv @  YhZn?d è:‰k @  Yi[n?d Hè:Ä0J @  Yj\n?d ˆè:äé2´ @  Yk]n?d Èè:Ñß3  @  Yl^n?d é:—¿È @  Ym_n?d Hé:§s¾þ @  Yn`n?d ˆé:‡†¼ @  Yoan?d Èé:ê'ã @  Ypbn?d ê:‰®‡" @  Yqcn?d Hê:O½> @  Yrdn?d ˆê:oH<ý @  Ysen?d Èê:Z~=i @  Ytfn?d ë:Š6± @  Yugn?d Hë:Ô5ë‡ @  Yvhn?d ˆë:ôÀéy @  Ywin?d Èë:Ê Lz @  Yxjn?d ì:ÓC¿u @  Yykn?d Hì:PT @  Yzln?d ˆì:5¥ª @  Y{mn?d Èì:“> @  Y|nn?d í:ÐÛ‰Ö @  Y}on?d Hí:눱< @  Y~pn?d ˆí:Ë}³Â @  Yqn?d Èí:F92 @  Y€rn?d î:™™ó @  Ysn?d Hî:_ Ò @  Y‚tn?d ˆî:ä", @  Yƒun?d Èî:JÒ#¸ @  Y„vn?d ï:šš¯P @  Y…wn?d Hï:Ä™õV @  Y†xn?d ˆï:äl÷¨ @  Y‡yn?d Èï:Ú¡R« @  Yˆzn?d ð:dî @  Y‰{n?d Hð:¢lW8 @  YŠ|n?d ˆð:‚™UÆ @  Y‹}n?d Èð:·¯TR @  YŒ~n?d ñ:gçØº @  Yn?d Hñ:,•˜ @  YŽ€n?d ˆñ: `šñ @  Yn?d Èñ:Ÿ  @  Y‚n?d ò:H¡Ó @  Y‘ƒn?d Hò:Ä[ò @  Y’„n?d ˆò:ä®  @  Y“…n?d Èò:ј˜ @  Y”†n?d ó:Зp @  Y•‡n?d Hó:_ÓÍv @  Y–ˆn?d ˆó:&ψ @  Y—‰n?d Èó:Aëj‹ @  Y˜Šn?d ô:X¥™„ @  Y™‹n?d Hô:ž¶ ¥ @  YšŒn?d ˆô:¾C"[ @  Y›n?d Èô:‹u#Ï @  YœŽn?d õ:[=¯' @  Yn?d Hõ:`n—Í @  Yžn?d ˆõ:@›•3 @  YŸ‘n?d Èõ:Âñ)` @  Y ’n?d ö:_µ‰¡ @  Y¡“n?d Hö:™¦0€ @  Y¢”n?d ˆö:¹S2~ @  Y£•n?d Èö:Œe3ê @  Y¤–n?d ÷:\-¿ @  Y¥—n?d H÷:.å @  Y¦˜n?d ˆ÷:"Ûçú @  Y§™n?d È÷:Bù @  Y¨šn?d ø:(éÎä @  Y©›n?d Hø:îúwÅ @  Yªœn?d ˆø:Îu; @  Y«n?d Èø:û9t¯ @  Y¬žn?d ù:+qøG @  Y­Ÿn?d Hù:•ùq @  Y® n?d ˆù:­`û @  Y¯¡n?d Èù:> `l @  Y°¢n?d ú:£HÀ­ @  Y±£n?d Hú:e[yŒ @  Y²¤n?d ˆú:E®{r @  Y³¥n?d Èú:p˜zæ @  Y´¦n?d û: Ðö @  Yµ§n?d Hû:þÓ¬ @  Y¶¨n?d ˆû:Þ&®ö @  Y·©n?d Èû:àë õ @  Y¸ªn?d ü:ù¥øú @  Y¹«n?d Hü:?¶AÛ @  Yº¬n?d ˆü:CC% @  Y»­n?d Èü:*uB± @  Y¼®n?d ý:ú=ÎY @  Y½¯n?d Hý:Ánö³ @  Y¾°n?d ˆý:á›ôM @  Y¿±n?d Èý:ÍöNŒ @  YÀ²n?d þ:P²îM @  YÁ³n?d Hþ:–¡Wl @  Y´n?d ˆþ:¶TU’ @  Yõn?d Èþ:ƒbT @  YĶn?d ÿ:S*Øî @  YÅ·n?d Hÿ: )‚è @  YƸn?d ˆÿ:-Ü€ @  YÇuÐ;¹n?d Èÿ:*ÖùÀ @  YÈ ºn?d ;ebÑ1 @  YÉ »n?d `;£qh @  YÊ ¼n?d  ;ƒ„jî @  YË ½n?d à;¶²kz @  YÌ ¾n?d ;fúç’ @  YÍ ¿n?d `;0Nóµ @  YÎ Àn?d  ;»ñK @  YÏ Án?d à;ƒ×j¨ @  YÐ Ân?d ;“Êi @  YÑ Ãn?d `;Ø€sH @  YÒ Än?d  ;øuq¶ @  YÓ Ån?d à;ÍCp" @  YÔ Æn?d ; üÊ @  YÕ Çn?d `;C¦Ì @  YÖ Èn?d  ;cý¤2 @  Y× Én?d à;]01 @  YØ Ên?d ;D~ò> @  YÙ Ën?d `;‚mK @  YÚ Ìn?d  ;¢˜Iá @  YÛ Ín?d à;—®Hu @  YÜ În?d ;GæÄ @  YÝ Ïn?d `;|µüw @  YÞ Ðn?d  ;\@þ‰ @  Yß Ñn?d à;Þ*BÚ @  Yà Òn?d ;Cnâ @  Yá Ón?d `;…}[: @  Yâ Ôn?d€  ;d쨀 @  Z Õn?d à;°¸çy @  Z Ön?d ;`ðk‘ @  Z ×n?d `;ûºÊz @  Z Øn?d  ;ÛOÈ„ @  Z Ùn?d à;+02ý @  Z Ún?d ;Ͼà @  Z Ûn?d `;nX» @  Z Ün?d  ;7›ZE @  Z Ýn?d à;Çä < @  Z Þn?d ;¬,Ô @  Z ßn?d ` ;tÖ @  Z àn?d   ;TôÔñ @  Z án?d à ;¤‹.ˆ @  Z ân?d ;9ÏŽI @  Z ãn?d ` ;œÏVò @  Z än?d   ;¼:T  @  Z ån?d à ;LE®u @  Z æn?d ;œ " @  Z çn?d ` ;Gƒv @  Z èn?d   ;'²ˆ @  Z én?d à ;×Í{ñ @  Z ên?d ;΃ˆþ @  Z ën?d ` ;Æ"n¥ @  Z ìn?d   ;æ×l[ @  Z ín?d à ;¨–" @  Z în?d ;ÆàÊ @  Z ïn?d ` ;8úÙÍ @  Z ðn?d   ;Û3 @  Z ñn?d à ;èp!J @  Z òn?d ;u4‹ @  Z ón?d `;Á2~€ @  Z ôn?d  ;áÇ|~ @  Z! õn?d à;¸† @  Z" ön?d ;Áð ï @  Z# ÷n?d `;Zº« @  Z$ øn?d  ;zO©ú @  Z% ùn?d à;Š0Sƒ @  Z& ún?d ;4îï1 @  Z' ûn?d `;¯ @  Z6  o?d ;wSÍ  @  Z7  o?d `;ò+û @  Z8  o?d  ;_) @  Z9  o?d à;¯xÓ| @  Z: o?d ;0_” @  Z; o?d `;*œ“ @  Z< o?d  ;¡ßžm @  Z= o?d à;Q d @  Z> o?d ;ÌäÄÕ @  Z? o?d `;Öå=L @  Z@ o?d  ;ö?² @  ZA o?d à;oÅË @  ZB o?d ;Ö'I# @  ZC o?d `;MmèÈ @  ZD o?d  ;m˜ê6 @  ZE o?d à;çO @  ZF o?d ;©œR @  ZG o?d `;¡¹z  @  ZH o?d  ;Lx÷ @  ZI o?d à;q3‚Ž @  ZJ o?d ;¡{f @  ZK o?d `;ÂÖô½ @  ZL  o?d  ;â#öC @  ZM !o?d à;\ : @  ZN "o?d ;¬û @  ZO #o?d `;*t@ @  ZP $o?d  ; ív¾ @  ZQ %o?d à;ú’ŒÇ @  ZR &o?d ;*Ú/ @  ZS 'o?d `;±¡Ä @  ZT (o?d  ;‘e£: @  ZU )o?d à;aYC @  ZV *o?d ;xTªL @  ZW +o?d `;põL @  ZX ,o?d  ;PNé @  ZY -o?d à; ´ @  ZZ .o?d ;p78x @  Z[ /o?d `;Ž-û @  Z\ 0o?d  ;®Øù @  Z] 1o?d à;^§ø @  Z^ 2o?d ;Ãã£9 @  Z_ 3o?d `;wå\2 @  Z` 4o?d  ;W^Ì @  Za 5o?d à;§o¤µ @  Zb 6o?d ;w'(] @  Zc 7o?d `;ìm‰¶ @  Zd 8o?d  ;̘‹HuÐ ; @  Ze 9o?d à;<çq1 @  Zf :o?d 8 ;Mì¯W @  Zg ;o?d x ;EMI  @  Zh o?d 8!;E=c @  Zk ?o?d x!;ÖrÒ© @  Zl @o?d ¸!;ö‡ÐW @  Zm Ao?d ø!;ø*. @  Zn Bo?d 8";›¼Šï @  Zo Co?d x";>¼RT @  Zp Do?d ¸";IPª @  Zq Eo?d ø";î6ªÓ @  Zr Fo?d 8#;>~&; @  Zs Go?d x#;¥4‡Ð @  Zt Ho?d ¸#;…Á…. @  Zu Io?d ø#;u¾W @  Zv Jo?d 8$;lðŒX @  Zw Ko?d x$;dQj @  Zx Lo?d ¸$;D¤hý @  Zy Mo?d ø$;´Û’„ @  Zz No?d 8%;d“l @  Z{ Oo?d x%;š‰Ýk @  Z| Po?d ¸%;º|ß• @  Z} Qo?d ø%;J%ì @  Z~ Ro?d 8&;×G…- @  Z So?d x&;.L… @  Z€ To?d ¸&;åN{ @  Z Uo?d ø&;þš´ @  Z‚ Vo?d 8';.Ò8ê @  Zƒ Wo?d x';µ˜™ @  Z„ Xo?d ¸';•m›ÿ @  Z… Yo?d ø';ea† @  Z† Zo?d 8(;Qíí› @  Z‡ [o?d x(;YL À @  Zˆ \o?d ¸(;y¹ > @  Z‰ ]o?d ø(;‰ÆóG @  ZŠ ^o?d 8);Yޝ @  Z‹ _o?d x);:#…t @  ZŒ `o?d ¸);ևР@  Z ao?d ø);ê©}ó @  ZŽ bo?d 8*;wíÝ2 @  Z co?d x*;Òí‰ @  Z do?d ¸*;òw @  Z‘ eo?d ø*;gý @  Z’ fo?d 8+;Ò/qæ @  Z“ go?d x+;IeÐ  @  Z” ho?d ¸+;iÒó @  Z• io?d ø+;™ï(Š @  Z– jo?d 8,;€¡Û… @  Z— ko?d x,;ˆ=Þ @  Z˜ lo?d ¸,;¨õ?  @  Z™ mo?d ø,;XŠÅY @  Zš no?d 8-;ˆÂI± @  Z› oo?d x-;vØŠ¶ @  Zœ po?d ¸-;V-ˆH @  Z qo?d ø-;¦Rr1 @  Zž ro?d 8.;;Òð @  ZŸ so?d x.;-û @  Z  to?d ¸.;¯å/ @  Z¡ uo?d ø.;_šÕ| @  Z¢ vo?d 8/;ÒY” @  Z£ wo?d x/;˜ø @  Z¤ xo?d ¸/;4mú @  Z¥ yo?d ø/;Äø @  Z¦ zo?d 80;z̼J @  Z§ {o?d x0;rmZ @  Z¨ |o?d ¸0;R˜Xï @  Z© }o?d ø0;¢ç¢– @  Zª ~o?d 81;r¯.~ @  Z« o?d x1;ü”•& @  Z¬ €o?d ¸1;Üa—Ø @  Z­ o?d ø1;,m¡ @  Z® ‚o?d 82;±ZÍ` @  Z¯ ƒo?d x2;ZÛ @  Z° „o?d ¸2;4¯% @  Z± …o?d ø2;ÄÐí\ @  Z² †o?d 83;˜a´ @  Z³ ‡o?d x3;ÒÀ_ @  Z´ ˆo?d ¸3;¯'¡ @  Zµ ‰o?d ø3;_X8Ø @  Z¶ Šo?d 84;FË× @  Z· ‹o?d x4;N·-Œ @  Z¸ Œo?d ¸4;nB/r @  Z¹ o?d ø4;ž=Õ  @  Zº Žo?d 85;NuYã @  Z» o?d x5;°ošä @  Z¼ o?d ¸5;š˜ @  Z½ ‘o?d ø5;`åbc @  Z¾ ’o?d 86;ý¡Â¢ @  Z¿ “o?d x6;ç ;; @  ZÀ ”o?d ¸6;ÇU9Å @  ZÁ •o?d ø6;7*ü @  Z –o?d 87;çbOT @  Zà —o?d x7;|(î¿ @  ZÄ ˜o?d ¸7;\ÝìA @  ZÅ ™o?d ø7;¬¢8 @  ZÆ šo?d 88;˜]š% @  ZÇ ›o?d x8;ü|~ @  ZÈ œo?d ¸8;° ~€ @  ZÉ o?d ø8;@v„ù @  ZÊ žo?d 89;> @  ZË Ÿo?d x9;ó“òÊ @  ZÌ  o?d ¸9;Ófð4 @  ZÍ ¡o?d ø9;# M @  ZÎ ¢o?d 8:;¾]ªŒ @  ZÏ £o?d x:;]r7 @  ZÐ ¤o?d ¸:;;¨pÉ @  ZÑ ¥o?d ø:;Ë׊° @  ZÒ ¦o?d 8;;ŸX @  ZÓ §o?d x;;€Õ§³ @  ZÔ ¨o?d ¸;;  ¥M @  ZÕ ©o?d ø;;P__4 @  ZÖ ªo?d 8<;I¬; @  Z× «o?d x<;A°J` @  ZØ ¬o?d ¸<;aEHž @  ZÙ ­o?d ø<;‘:²ç @  ZÚ ®o?d 8=;Ar> @  ZÛ ¯o?d x=;¿hý @  ZÜ °o?d ¸=;Ÿÿö @  ZÝ ±o?d ø=;oâ @  ZÞ ²o?d 8>;ò¦¥N @  Zß ³o?d x>;F ZE @  Zà ´o?d ¸>;fUX» @  Zá µo?d ø>;–*¢Â @  Zâ ¶o?d€ 8?;2¡2Œ @  [ ·o?d x?;HªÛN @  [ ¸o?duÐ@;7 ¸?;h_Ù° @  [ ¹o?d ø?;]iØ$ @  [ ºo?d P@;žÅb @  [ »o?d @;ú²Î @  [ ¼o?d Ð@;x#ÙÇ @  [ ½o?d A;7çò @  [ ¾o?d PA;–¦ð, @  [ ¿o?d A;bvñ+ @  [ Ào?d ÐA;àçæõ @  [ Áo?d B;ÊP~ @  [ Âo?d PB;H•G  @  [ Ão?d B;,âë¡ @  [ Äo?d ÐB;®sü @  [ Åo?d C;oÆüª @  [ Æo?d PC;íWët @  [ Ço?d C;0¤R @  [ Èo?d ÐC;“¡³Œ @  [ Éo?d D;=HVÉ @  [ Êo?d PD;¿ÙA @  [ Ëo?d D;Û®í @  [ Ìo?d ÐD;Y?úÈ @  [ Ío?d E;5+Äý @  [ Îo?d PE;·ºÓ# @  [ Ïo?d E;.þé @  [ Ðo?d ÐE;¬é7 @  [ Ño?d F;†ÿ_¼ @  [ Òo?d PF;nHb @  [ Óo?d F;`äc @  [ Ôo?d ÐF;âˆó½ @  [ Õo?d G;2;ÔØ @  [ Öo?d PG;°ªÃ @  [! ×o?d G;LÍŒ  @  [" Øo?d ÐG;Î\›þ @  [# Ùo?d H;M© @  [$ Úo?d PH;Ï•w @  [% Ûo?d H;«âºv @  [& Üo?d ÐH;)s­¨ @  [' Ýo?d I;Eg“ @  [( Þo?d PI;Çö„C @  [) ßo?d I;ÃvU @  [* ào?d ÐI;A燋 @  [+ áo?d J;k1 @  [, âo?d PJ;é•&Þ @  [- ão?d J;âŠß @  [. äo?d ÐJ;s @  [/ åo?d K;ÎÆÔ @  [0 æo?d PK;LWŠ  @  [1 ço?d K;°0Å, @  [2 èo?d ÐK;2¡Òò @  [3 éo?d L;œH7· @  [4 êo?d PL;Ù i @  [5 ëo?d L;z®Œh @  [6 ìo?d ÐL;ø?›¶ @  [7 ío?d M;”+¥ƒ @  [8 îo?d PM;º²] @  [9 ïo?d M;Ÿ— @  [: ðo?d ÐM; ˆI @  [; ño?d N;'ÿ> @  [< òo?d PN;¥n) @  [= óo?d N;Á… @  [> ôo?d ÐN;Cˆ’à @  [? õo?d O;=<³4 @  [@ öo?d PO;¿­¤ê @  [A ÷o?d O;CÊëÌ @  [B øo?d ÐO;Á[ü @  [C ùo?d P;È"Vê @  [D úo?d PP;J³A4 @  [E ûo?d P;.Äí5 @  [F üo?d ÐP;¬Uúë @  [G ýo?d Q;ÀAÄÞ @  [H þo?d PQ;BÐÓ @  [I ÿo?d Q;-$õ) @  [J p?d ÐQ;¯µâ÷ @  [K p?d R;…VT| @  [L p?d PR;ÇC¢ @  [M p?d R;c°ï£ @  [N p?d ÐR;á!ø} @  [O p?d S; ”ø¨ @  [P p?d PS;¢ïv @  [Q p?d S;^b P @  [R p?d ÐS;Üó·Ž @  [S  p?d T;rRË @  [T  p?d PT;ð‹E @  [U  p?d T;”üé @  [V  p?d ÐT;mþÊ @  [W  p?d U;zyÀÿ @  [X p?d PU;øè×! @  [Y p?d U;aßúë @  [Z p?d ÐU;ãNí5 @  [[ p?d V;É­[¾ @  [\ p?d PV;Kp?d ha;îòî @  [‰ ?p?d ¨a;"ï @  [Š @p?d èa;˜³øÀ @  [‹ Ap?d (b;²PNK @  [Œ Bp?d hb;0ÁY• @  [ Cp?d ¨b;T¶õ” @  [Ž Dp?d èb;Ö'âJ @  [ Ep?d (c;’⟠@  [ Fp?d hc;•õA @  [‘ Gp?d ¨c;idºg @  [’ Hp?d èc;ëõ­¹ @  [“ Ip?d (d;EHü @  [” Jp?d hd;Ç_" @  [• Kp?d ¨d;£úó# @  [– Lp?d èd;!käý @  [— Mp?d (e;MÚÈ @  [˜ Np?d he;ÏîÍ @  [™ Op?d ¨e;VÙàÜ @  [š Pp?d èe;ÔH÷ @  [› Qp?d (f;þ«A‰ @  [œ Rp?d hf;|:VW @  [ Sp?d ¨f;MúV @  [ž Tp?d èf;šÜíˆ @  [Ÿ Up?d (g;JoÊí @  [  Vp?d hg;ÈþÝ3 @  [¡ Wp?d ¨g;4™’ @  [¢ Xp?d èg;¶…Ë @  [£ Yp?d (h;5Pœ @  [¤ Zp?d hh;·ÁB @  [¥ [p?d ¨h;Ó¶¤C @  [¦ \p?d èh;Q'³ @  [§ ]p?d (i;=3¨ @  [¨ ^p?d hi;¿¢šv @  [© _p?d ¨i;ÿe!É @  [ª€`p?d èi;tEk @  [«ap?d (j;*—óà @  [¬bp?d hj;¨ä> @  [­cp?d ¨j;õ¶”ê @  [® dp?d èj;w'ƒ4 @  [¯ ep?d (k;¶’ƒá @  [° fp?d hk;4”? @  [± gp?d ¨k;ÈdÛ @  [² hp?d èk;JõÌÇ @  [³ ip?d (l;ä)‚ @  [´ jp?d hl;f>\ @  [µ kp?d ¨l;ú’] @  [¶ lp?d èl;€k…ƒ @  [· mp?d (m;ì»¶ @  [¸ np?d hm;nî¬h @  [¹ op?d ¨m;÷Ù¢ @  [º pp?d èm;uH–| @  [» qp?d (n;_« ÷ @  [¼ rp?d hn;Ý:7) @  [½ sp?d ¨n;¹M›( @  [¾ tp?d èn;;ÜŒö @  [¿ up?d (o;Eh­ @  [À vp?d ho;Çùºß @  [Á wp?d ¨o;;žõù @  [ xp?d èo;¹â' @  [à yp?d (p;°vHß @  [Ä zp?d hp;2ç_ @  [Å {p?d ¨p;Vó @  [Æ |p?d èp;ÔäÞ @  [Ç }p?d (q;¸Úë @  [È ~p?d hq;:„Í5 @  [É p?d ¨q;Ó’˜  @  [Ê €p?d èq;Q~ @  [Ë p?d (r;{à9õ @  [Ì ‚p?d hr;ùq.+ @  [Í ƒp?d ¨r;‚* @  [Î „p?d èr;—•ô @  [Ï …p?d (s;Þ"•! @  [Ð †p?d hs;\³‚ÿ @  [Ñ ‡p?d ¨s; ÔÍÙ @  [Ò ˆp?d ès;"EÚ @  [Ó ‰p?d (t;Œ¬?B @  [Ô Šp?d ht;=(œ @  [Õ ‹p?d ¨t;jJ„ @  [Ö Œp?d èt;èÛ“C @  [× p?d (u;„Ï­v @  [Ø Žp?d hu;^º¨ @  [Ù p?d ¨u;Ÿi—b @  [Ú p?d èu;ø€¼ @  [Û ‘p?d (v;767 @  [Ü ’p?d hv;µŠ!é @  [Ý “p?d ¨v;Ñýè @  [Þ ”p?d èv;Slš6 @  [ß •p?d (w;ƒß½S @  [à –p?d hw;Nª @  [á —p?d ¨w;ý)å« @  [â ˜p?d€ èw;ùîZÌ @  \ ™p?d (x;›÷ˆ² @  \ šp?d hx;fŸl @  \ ›p?d ¨x;¸XÈ€ @  \ œp?d èx;:Éß^ @  \ p?d (y;˜o¾ @  \ žp?d hy;þ©Ï @  \ Ÿp?d ¨y;ÐÌ⣠@  \  p?d èy;R]õ} @  \ ¡p?d (z;½÷¸ @  \ ¢p?d hz;?f¯Å @  \ £p?d ¨z;žXø) @  \ ¤p?d èz;Éï÷ @  \ ¥p?d ({;¾oޏ @  \ ¦p?d h{;<þ™f @  \ §p?d ¨{;£Š·Ú @  \ ¨p?d è{;!  @  \ ©p?d (|;J»¾¬ @  \ ªp?d h|;È*©r @  \ «p?d ¨|;iþž @  \ ¬p?d è|;ë…é@ @  \ ­p?d (};I#ˆ @  \ ®p?d h};˲ŸÑ @  \ ¯p?d ¨};œ7ía @  \ °p?d è};¦ú¿ @  \ ±p?d (~;ñ ·Ù @  \ ²p?d h~;s  @  \ ³p?d ¨~;Ò£÷ë @  \ ´p?d è~;P2à5 @  \ µp?d (;ò”z @  \ ¶p?d h;p–¤ @  \ ·p?d ¨;uЀ;'þwŸ¨ @  \ ¸p?d è;|æˆv @  \! ¹p?d @€;`¶‡¥ @  \" ºp?d €€;@C…[ @  \# »p?d À€;CÇ— @  \$ ¼p?d ;“QK @  \% ½p?d @;c.± @  \& ¾p?d €;CÛ³ø @  \' ¿p?d À;ÛÝø¥ @  \( Àp?d ‚;F™Xd @  \) Áp?d @‚;¶æ¢ @  \* Âp?d €‚;– ã @  \+ Ãp?d À‚;•Iâ/ @  \, Äp?d ƒ;EnÇ @  \- Åp?d @ƒ;µ~”¾ @  \. Æp?d €ƒ;•‹–@ @  \/ Çp?d Àƒ;¨›­Ü @  \0 Èp?d „;±Õ^Ó @  \1 Ép?d @„;Aª¤ª @  \2 Êp?d €„;a_¦T @  \3 Ëp?d À„;bä˜ @  \4 Ìp?d …;²Mhp @  \5 Íp?d @…;B2’  @  \6 Îp?d €…;bÇ÷ @  \7 Ïp?d À…;—&÷g @  \8 Ðp?d †; bW¦ @  \9 Ñp?d @†;ú­ß @  \: Òp?d €†;Úè¯! @  \; Óp?d À†;Ù²íí @  \< Ôp?d ‡; úa @  \= Õp?d @‡;ù…›| @  \> Öp?d €‡;Ùp™‚ @  \? ×p?d À‡;[aƒ< @  \@ Øp?d ˆ;ož! @  \A Ùp?d @ˆ;ŸáõX @  \B Úp?d €ˆ;¿÷¦ @  \C Ûp?d Àˆ;¼Nµj @  \D Üp?d ‰;l9‚ @  \E Ýp?d @‰;œyÃû @  \F Þp?d €‰;¼ŒÁ @  \G ßp?d À‰;ÔÚŸI @  \H àp?d Š;Iž?ˆ @  \I áp?d @Š;¹áÅñ @  \J âp?d €Š;™Ç @  \K ãp?d ÀŠ;šN…à @  \L äp?d ‹;J + @  \M åp?d @‹;ºyóR @  \N æp?d €‹;šŒñ¬ @  \O çp?d À‹;§œÊ0 @  \P èp?d Œ;¾Ò9? @  \Q ép?d @Œ;N­ÃF @  \R êp?d €Œ;nXÁ¸ @  \S ëp?d ÀŒ;mƒt @  \T ìp?d ;½Jœ @  \U íp?d @;M5õå @  \V îp?d €;mÀ÷ @  \W ïp?d À;˜!‹ @  \X ðp?d Ž;e0J @  \Y ñp?d @Ž;õÊ3 @  \Z òp?d €Ž;ÕïÈÍ @  \[ óp?d ÀŽ;ֵР@  \\ ôp?d ;ýé @  \] õp?d @;ö‚ü @  \^ öp?d €;Öwþn @  \_ ÷p?d À;úaâB @  \` øp?d ;D¿^ð @  \a ùp?d @;´À¤‰ @  \b úp?d €;”5¦w @  \c ûp?d À;—oä» @  \d üp?d ‘;G'hS @  \e ýp?d @‘;·X’* @  \f þp?d €‘;—­Ô @  \g ÿp?d À‘;m Ú @  \h q?d ’;ðNzÖ @  \i q?d @’;1€¯ @  \j q?d €’; Ä‚Q @  \k q?d À’;#žÀ @  \l q?d “;óÖLu @  \m q?d @“;©¶  @  \n q?d €“;#\´ò @  \o q?d À“;Ln @  \p q?d ”;|a @  \q  q?d @”;÷}† @  \r  q?d €”;׈„æ @  \s  q?d À”;ÔÒÆ* @  \t  q?d •;šJ @  \u  q?d @•;ôå°» @  \v q?d €•;Ô²E @  \w q?d À•;!ñÕÕ @  \x q?d –;¼µu @  \y q?d @–;LÊm @  \z q?d €–;l?“ @  \{ q?d À–;oeÏ_ @  \| q?d —;¿-C· @  \} q?d @—;OR¹Î @  \~ q?d €—;o§»0 @  \ q?d À—;à‘¿ @  \€ q?d ˜;:¢ @  \ q?d @˜;Ê`çÛ @  \‚ q?d €˜;ê•å% @  \ƒ q?d À˜;éϧé @  \„ q?d ™;9‡+ @  \… q?d @™;ÉøÑx @  \† q?d €™;é Ó† @  \‡ q?d À™;[Ê @  \ˆ  q?d š;-  @  \‰ !q?d @š;ì`×r @  \Š "q?d €š;̕Ռ @  \‹ #q?d Àš;ÏÏ—@ @  \Œ $q?d ›;‡¨ @  \ %q?d @›;ïøáÑ @  \Ž &q?d €›;Ï ã/ @  \ 'q?d À›;òس @  \ (q?d œ;ëS+¼ @  \‘ )q?d @œ;,ÑÅ @  \’ *q?d €œ;;ÙÓ; @  \“ +q?d Àœ;8ƒ‘÷ @  \” ,q?d ;èË @  \• -q?d @;´çf @  \– .q?d €;8Aå˜ @  \— /q?d À;Í ‚ @  \˜ 0q?d ž;Pä"É @  \™ 1q?d @ž; ›Ø° @  \š 2q?d €ž;€nÚN @  \› 3q?d Àž;ƒ4˜‚ @  \œ 4q?d Ÿ;S|j @  \ 5q?d @Ÿ;£î @  \ž 6q?d €Ÿ;ƒöìí @  \Ÿ 7quР;?d ÀŸ;¯àðÁ @  \  8q?d  ;Þë.§ @  \¡ 9q?d X ;.”ÔÞ @  \¢ :q?d ˜ ;aÖ  @  \£ ;q?d Ø ; ;”ì @  \¤ q?d ˜¡; ùàƒ @  \§ ?q?d Ø¡;•ÿ«Þ @  \¨ @q?d ¢;»  @  \© Aq?d X¢;øÄñf @  \ª Bq?d ˜¢;Ø1ó˜ @  \« Cq?d Ø¢;Ûk±T @  \¬ Dq?d £; #=¼ @  \­ Eq?d X£;û\ÇÅ @  \® Fq?d ˜£;Û©Å; @  \¯ Gq?d Ø£;æ¹þ§ @  \° Hq?d ¤;ÿ÷ ¨ @  \± Iq?d X¤;ˆ÷Ñ @  \² Jq?d ˜¤;/}õ/ @  \³ Kq?d ؤ;,'·ã @  \´ Lq?d ¥;üo;  @  \µ Mq?d X¥; Ár @  \¶ Nq?d ˜¥;,åÃŒ @  \· Oq?d Ø¥;Ù¤ @  \¸ Pq?d ¦;D@Ý @  \¹ Qq?d X¦;´?þ¤ @  \º Rq?d ˜¦;”ÊüZ @  \» Sq?d ئ;—¾– @  \¼ Tq?d §;GØ2~ @  \½ Uq?d X§;·§È @  \¾ Vq?d ˜§;—RÊù @  \¿ Wq?d ا;CÐG @  \À Xq?d ¨;!¼\Z @  \Á Yq?d X¨;Ñæ# @  \ Zq?d ˜¨;ñ6¤Ý @  \à [q?d ب;òlæ @  \Ä \q?d ©;"$jù @  \Å ]q?d X©;Ò[€ @  \Æ ^q?d ˜©;ò®’~ @  \Ç _q?d Ø©;šøÌ2 @  \È `q?d ª;¼ló @  \É aq?d Xª;÷ÖŠ @  \Ê bq?d ˜ª;×6”t @  \Ë cq?d ت;ÔlÖ¸ @  \Ì dq?d «;$ZP @  \Í eq?d X«;ô[ ) @  \Î fq?d ˜«;Ô®¢× @  \Ï gq?d Ø«;é¾™K @  \Ð hq?d ¬;ððjD @  \Ñ iq?d X¬;= @  \Ò jq?d ˜¬; z’à @  \Ó kq?d ج;# Ð @  \Ô lq?d ­;óh\ç @  \Õ mq?d X­;¦ž @  \Ö nq?d ˜­;#â¤` @  \× oq?d Ø­;ÖÃð @  \Ø pq?d ®;KGc1 @  \Ù qq?d X®;»8™H @  \Ú rq?d ˜®;›Í›¶ @  \Û sq?d Ø®;˜—Ùz @  \Ü tq?d ¯;HßU’ @  \Ý uq?d X¯;¸ ¯ë @  \Þ vq?d ˜¯;˜U­ @  \ß wq?d د;´C±9 @  \à xq?d °; ‹ @  \á yq?d X°;úâ÷ò @  \â zq?d€ ˜°;®Ôéª @  ] {q?d ذ;LÏãO @  ] |q?d ±;œ‡o§ @  ] }q?d X±;©±n3 @  ] ~q?d ˜±;‰DlÍ @  ] q?d ر;Â6,x @  ] €q?d ²;_rŒ¹ @  ] q?d X²;a¿)º @  ] ‚q?d ˜²;AJ+D @  ] ƒq?d ز;‡Y’e @  ] „q?d ³;W @  ] …q?d X³;b' @  ] †q?d ˜³;BÒç @  ] ‡q?d س;ÑGá @  ] ˆq?d ´;Ÿ´î @  ] ‰q?d X´;–ó/  @  ] Šq?d ˜´;¶-ó @  ] ‹q?d Ø´;p”Ò @  ] Œq?d µ; ]: @  ] q?d Xµ;•k® @  ] Žq?d ˜µ;µžP @  ] q?d ص;ŽÍ#º @  ] q?d ¶;‰ƒ{ @  ] ‘q?d X¶;-D&x @  ] ’q?d ˜¶; ±$† @  ] “q?d ض;Ë¢§ @  ] ”q?d ·;êO @  ] •q?d X·;.ÜÛ @  ] –q?d ˜·;)% @  ] —q?d Ø·;P*H# @  ] ˜q?d ¸;dÕÄ> @  ] ™q?d X¸;æ¿xm @  ] šq?d ˜¸;ÆJz“ @  ]! ›q?d ظ;Yò @  ]" œq?d ¹;ÐOZ @  ]# q?d X¹;å'NÎ @  ]$ žq?d ˜¹;ÅÒL0 @  ]% Ÿq?d ع;c6M @  ]&  q?d º;þríÇ @  ]' ¡q?d Xº;À¿HÄ @  ]( ¢q?d ˜º;àJJ: @  ]) £q?d غ;&Yó @  ]* ¤q?d »;öó @  ]+ ¥q?d X»;Ã'~g @  ], ¦q?d ˜»;ãÒ|™ @  ]- §q?d Ø»;½Ñ&Ÿ @  ]. ¨q?d ¼;¤ŸÕ @  ]/ ©q?d X¼;7óNs @  ]0 ªq?d ˜¼;L @  ]1 «q?d ؼ;Ñõ¬ @  ]2 ¬q?d ½;]yD @  ]3 ­q?d X½;4kxÐ @  ]4 ®q?d ˜½;žz. @  ]5 ¯q?d ؽ;/ÍBÄ @  ]6 °q?d ¾;²‰â @  ]7 ±q?d X¾;ŒDG @  ]8 ²q?d ˜¾;¬±Eø @  ]9 ³q?d ؾ;j¢üÙ @  ]: ´q?d ¿;ºêp1 @  ]; µq?d X¿;Üq¥ @  ]< ¶q?d ˜¿;¯)s[ @uÐÀ;  ]= ·q?d Ø¿;ñ*)] @  ]> ¸q?d 0À;•Úx @  ]? ¹q?d pÀ;¹·ÂÎ @  ]@ ºq?d °À;™BÀ0 @  ]A »q?d ðÀ;_Qy @  ]B ¼q?d 0Á;õù @  ]C ½q?d pÁ;º/ôm @  ]D ¾q?d °Á;šÚö“ @  ]E ¿q?d ðÁ;Ìnâ´ @  ]F Àq?d 0Â;Q*Bu @  ]G Áq?d pÂ;oççv @  ]H Âq?d °Â;Oåˆ @  ]I Ãq?d ðÂ;‰\© @  ]J Äq?d 0Ã;YIÐA @  ]K Åq?d pÃ;lÑÕ @  ]L Æq?d °Ã;LŠÓ+ @  ]M Çq?d ðÃ;‰‰- @  ]N Èq?d 0Ä; Çz" @  ]O Éq?d pÄ;˜«áÁ @  ]P Êq?d °Ä;¸^ã? @  ]Q Ëq?d ðÄ;~MZ @  ]R Ìq?d 0Å;®Öö @  ]S Íq?d pÅ;›3×b @  ]T Îq?d °Å;»ÆÕœ @  ]U Ïq?d ðÅ;€•ív @  ]V Ðq?d 0Æ;ÑM· @  ]W Ñq?d pÆ;#è´ @  ]X Òq?d °Æ;éêJ @  ]Y Óq?d ðÆ;ÅúSk @  ]Z Ôq?d 0Ç;²ßƒ @  ][ Õq?d pÇ; „Þ @  ]\ Öq?d °Ç;qÜé @  ]] ×q?d ðÇ;^r†ï @  ]^ Øq?d 0È;j ò @  ]_ Ùq?d pÈ;èç¶¡ @  ]` Úq?d °È;È´_ @  ]a Ûq?d ðÈ; ~ @  ]b Üq?d 0É;ÞI– @  ]c Ýq?d pÉ;ë€ @  ]d Þq?d °É;ËŠ‚ü @  ]e ßq?d ðÉ;mnƒÊ @  ]f àq?d 0Ê;ð*#  @  ]g áq?d pÊ;Îç† @  ]h âq?d °Ê;î„ö @  ]i ãq?d ðÊ;(=× @  ]j äq?d 0Ë;øI±? @  ]k åq?d pË;Ͱ« @  ]l æq?d °Ë;튲U @  ]m çq?d ðË;³‰èS @  ]n èq?d 0Ì;ªÇ\ @  ]o éq?d pÌ;9«€¿ @  ]p êq?d °Ì;^‚A @  ]q ëq?d ðÌ;ßM;` @  ]r ìq?d 0Í;·ˆ @  ]s íq?d pÍ;:3¶ @  ]t îq?d °Í;Æ´â @  ]u ïq?d ðÍ;!•Œ @  ]v ðq?d 0Î;¼Ñ,É @  ]w ñq?d pÎ;‚‰Ê @  ]x òq?d °Î;¢é‹4 @  ]y óq?d ðÎ;dú2 @  ]z ôq?d 0Ï;´²¾ý @  ]{ õq?d pÏ;„¿i @  ]| öq?d °Ï;¡q½— @  ]} ÷q?d ðÏ;ÿrç‘ @  ]~ øq?d 0Ð;A¬[# @  ] ùq?d pÐ;Ž—ÑÓ @  ]€ úq?d °Ð;®bÓ- @  ] ûq?d ðÐ;hqj  @  ]‚ üq?d 0Ñ;¸9æä @  ]ƒ ýq?d pÑ;çp @  ]„ þq?d °Ñ;­úåŽ @  ]… ÿq?d ðÑ;+ÍÅ @  ]† r?d 0Ò;¶‰eÓ @  ]‡ r?d pÒ;ˆDÀÐ @  ]ˆ r?d °Ò;¨±Â. @  ]‰ r?d ðÒ;n¢{ @  ]Š r?d 0Ó;¾ê÷ç @  ]‹ r?d pÓ;‹Üös @  ]Œ r?d °Ó;«)ô @  ] r?d ðÓ;õ*®‹ @  ]Ž r?d 0Ô;ìd]„ @  ]  r?d pÔ;Æg @  ]  r?d °Ô;_ýÄ™ @  ]‘  r?d ðÔ;™î}¸ @  ]’  r?d 0Õ;I¦ñP @  ]“  r?d pÕ;|ðÄ @  ]” r?d °Õ;\eò: @  ]• r?d ðÕ;g6ÊÐ @  ]– r?d 0Ö;úrj @  ]— r?d pÖ;Ä¿Ï @  ]˜ r?d °Ö;äJÍì @  ]™ r?d ðÖ;"YtÍ @  ]š r?d 0×;òø% @  ]› r?d p×;Ç'ù± @  ]œ r?d °×;çÒûO @  ] r?d ð×;¹Ñ¡I @  ]ž r?d 0Ø;.-T @  ]Ÿ r?d pØ;D‘ @  ]  r?d °Ø;/±“ù @  ]¡ r?d ðØ;é¢*Ø @  ]¢ r?d 0Ù;9ê¦0 @  ]£ r?d pÙ; ܧ¤ @  ]¤ r?d °Ù;,)¥Z @  ]¥ r?d ðÙ;ŠÍ¤l @  ]¦  r?d 0Ú;‰­ @  ]§ !r?d pÚ;)D¡® @  ]¨ "r?d °Ú; ±£P @  ]© #r?d ðÚ;Ï¢q @  ]ª $r?d 0Û;ê–™ @  ]« %r?d pÛ;*Ü—  @  ]¬ &r?d °Û; )•ó @  ]­ 'r?d ðÛ;T*Ïõ @  ]® (r?d 0Ü;Md<ú @  ]¯ )r?d pÜ;Þ§ @  ]° *r?d °Ü;þý¥ç @  ]± +r?d ðÜ;8îÆ @  ]² ,r?d 0Ý;è¦. @  ]³ -r?d pÝ;Ý‘º @  ]´ .r?d °Ý;ýe“D @  ]µ /r?d ðÝ;Æ6«® @  ]¶ 0r?d 0Þ;[r o @  ]· 1r?d pÞ;e¿®l @  ]¸ 2r?d °Þ;EJ¬’ @  ]¹ 3r?d ðÞ;ƒY³ @  ]º 4r?d 0ß;S™[ @  ]» 5r?d pß;f'˜Ï @  ]¼ 6r?d uÐà;/°ß;FÒš1 @  ]½ 7r?d ðß;\–ož @  ]¾€8r?d Hà;E21h @  ]¿€9r?d ˆà;Ë;ž‰ @  ]À€:r?d Èà;Iª‰W @  ]Á€;r?d á;Ý`«@ @  ]€r?d Èá;J2¿ô @  ]Å€?r?d â;SÌ @  ]Æ€@r?d Hâ;  @  ]Ç€Ar?d ˆâ;k»1 @  ]È€Br?d Èâ;Ÿú¬ï @  ]É€Cr?d ã; 0Žø @  ]Ê€Dr?d Hã;‰¡™& @  ]Ë€Er?d ˆã;ó’ @  ]Ì€Fr?d Èã;œbšL @  ]Í€Gr?d ä;Y¾$› @  ]΀Hr?d Hä;Û/3E @  ]Ï€Ir?d ˆä;ê'½† @  ]ЀJr?d Èä;h¶ªX @  ]Ñ€Kr?d å;ü|ˆO @  ]Ò€Lr?d Hå;~ퟑ @  ]Ó€Mr?d ˆå;é¿‹% @  ]Ô€Nr?d Èå;k.œû @  ]Õ€Or?d æ;O¨ @  ]Ö€Pr?d Hæ;Í9Ð @  ]×€Qr?d ˆæ;Q´ó @  ]Ø€Rr?d Èæ;Ó£- @  ]Ù€Sr?d ç;GË: @  ]Ú€Tr?d Hç;ÅZ–ä @  ]Û€Ur?d ˆç;R‚P @  ]Ü€Vr?d Èç;Й•Ž @  ]Ý€Wr?d è;8ôTK @  ]Þ€Xr?d Hè;ºeC• @  ]߀Yr?d ˆè;škêæ @  ]à€Zr?d Èè;úý8 @  ]á€[r?d é;Œ0ß/ @  ]â€\r?d€ Hé;Ïæ?ñ @  ^€]r?d ˆé;¹õcl @  ^€^r?d Èé;;dt² @  ^€_r?d ê;G9v @  ^€`r?d Hê;Å.¨ @  ^€ar?d ˆê;—–Áñ @  ^€br?d Èê;Ö/ @  ^€cr?d ë;O«B @  ^€dr?d Hë;Í @  ^ €er?d ˆë;ŸõSÅ @  ^ €fr?d Èë;dD @  ^ €gr?d ì;ñ! @  ^ €hr?d Hì;Ÿ`ÿ @  ^ €ir?d ˆì;Í{ù¦ @  ^€jr?d Èì;Oêîx @  ^€kr?d í;¸3­õ @  ^€lr?d Hí;:¢º+ @  ^€mr?d ˆí;h¹Ur @  ^€nr?d Èí;ê(B¬ @  ^€or?d î; ç6´ @  ^€pr?d Hî;‰v!j @  ^€qr?d ˆî;ÛmÎ3 @  ^€rr?d Èî;YüÙí @  ^€sr?d ï;„¤€ @  ^€tr?d Hï;³^ @  ^€ur?d ˆï;Ó\ @  ^€vr?d Èï;QŸKÙ @  ^€wr?d ð;öšA^ @  ^€xr?d Hð;t V€ @  ^€yr?d ˆð;&¹Ù @  ^€zr?d Èð;¤® @  ^€{r?d ñ;B^Ê: @  ^ €|r?d Hñ;ÀÏÝä @  ^!€}r?d ˆñ;’Ô2½ @  ^"€~r?d Èñ;E%c @  ^#€r?d ò;«)$ @  ^$€€r?d Hò;:>ú @  ^%€r?d ˆò;Q!Ñ£ @  ^&€‚r?d Èò;Ó°Æ} @  ^'€ƒr?d ó;‰È» @  ^(€„r?d Hó; Y¬Î @  ^)€…r?d ˆó;YBC— @  ^*€†r?d Èó;ÛÓTI @  ^+€‡r?d ô;ÛFs @  ^,€ˆr?d Hô;Y×­ @  ^-€‰r?d ˆô; Ìéô @  ^.€Šr?d Èô;‰]þ* @  ^/€‹r?d õ;~„½§ @  ^0€Œr?d Hõ;üªy @  ^1€r?d ˆõ;®E  @  ^2€Žr?d Èõ;,ŸRþ @  ^3€r?d ö;ÍP&æ @  ^4€r?d Hö;OÁ18 @  ^5€‘r?d ˆö;ÚÞa @  ^6€’r?d Èö;ŸKÉ¿ @  ^7€“r?d ÷;Å3´Ò @  ^8€”r?d H÷;G¢£  @  ^9€•r?d ˆ÷;¹LU @  ^:€–r?d È÷;—([‹ @  ^;€—r?d ø;º a£ @  ^<€˜r?d Hø;8v} @  ^=€™r?d ˆø;j†™$ @  ^>€šr?d Èø;èŽú @  ^?€›r?d ù; ÏìU @  ^@€œr?d Hù;"^û‹ @  ^A€r?d ˆù;pEÒ @  ^B€žr?d Èù;òÔ  @  ^C€Ÿr?d ú;ެNÈ @  ^D€ r?d Hú; =Y @  ^E€¡r?d ˆú;^&¶O @  ^F€¢r?d Èú;Ü·¡‘ @  ^G€£r?d û;†ÏÜü @  ^H€¤r?d Hû;^Ë" @  ^I€¥r?d ˆû;VE${ @  ^J€¦r?d Èû;ÔÔ3¥ @  ^K€§r?d ü;ÔAvŸ @  ^L€¨r?d Hü;VÐaA @  ^M€©r?d ˆü;ËŽ @  ^N€ªr?d Èü;†Z™Æ @  ^O€«r?d ý;qƒÚK @  ^P€¬r?d Hý;óÍ• @  ^Q€­r?d ˆý;¡ "Ì @  ^R€®r?d Èý;#˜5 @  ^S€¯r?d þ;ÂWA  @  ^T€°r?d Hþ;@ÆVÔ @  ^U€±r?d ˆþ;ݹ @  ^V€²r?d Èþ;L®S @  ^W€³r?d ÿ;Ê4Ó> @  ^X€´r?d Hÿ;H¥Äà @  ^Y€µr?d ˆÿ;¾+¹ @  ^Z€uÐ<¶r?d Èÿ;'¨Î @  ^[·r?d <  e @  ^\¸r?d `<‰Š» @  ^]¹r?d  <Û‘ôâ @  ^^ºr?d à<Yã< @  ^_»r?d <¿ß‡ @  ^`¼r?d `<=Nß @  ^a½r?d  <oU† @  ^b¾r?d à<íÄhX @  ^c¿r?d <aì0 @  ^dÀr?d `<ã}'S @  ^eÁr?d  <±fÈ  @  ^fÂr?d à<3÷ßÔ @  ^gÃr?d <i¢¹ @  ^hÄr?d `<ëµg @  ^iÅr?d  <¹Z> @  ^jÆr?d à<;”Mà @  ^kÇr?d <;Ú @  ^lÈr?d `<¹ @  ^mÉr?d  <ë‹ð] @  ^nÊr?d à<içƒ @  ^oËr?d <žÃ¤ @  ^pÌr?d `<R³Ð @  ^qÍr?d  <NI\‰ @  ^rÎr?d à<ÌØKW @  ^sÏr?d <-?O @  ^tÐr?d `<¯†(‘ @  ^uÑr?d  <ýÇÈ @  ^vÒr?d à< Ð @  ^wÓr?d <%t­{ @  ^xÔr?d `<§åº¥ @  ^yÕr?d  <õþUü @  ^zÖr?d à<woB" @  ^{×r?d <ZKx  @  ^|Ør?d `<ØÚoÔ @  ^}Ùr?d  <ŠÁ€ @  ^~Úr?d à<P—S @  ^Ûr?d <£ÞÅÍ @  ^€Ür?d ` <!OÒ @  ^Ýr?d   <sT=J @  ^‚Þr?d à <ñÅ*” @  ^ƒßr?d <½gP @  ^„àr?d ` <,pŽ @  ^…ár?d   <]7Ÿ× @  ^†âr?d à <ߦˆ  @  ^‡ãr?d <…Þõd @  ^ˆär?d ` <O⺠@  ^‰år?d   <UT ã @  ^Šær?d à <×Å= @  ^‹çr?d <×P_ @  ^Œèr?d ` <UÁHÙ @  ^ér?d   <Ú§€ @  ^Žêr?d à <…K°^ @  ^ër?d <r’óÓ @  ^ìr?d ` <ðä  @  ^‘ír?d   <¢ T @  ^’îr?d à < ‰Š @  ^“ïr?d <ÁFh’ @  ^”ðr?d `<C×L @  ^•ñr?d  <Ì @  ^–òr?d à<“]‡Ë @  ^—ór?d <É%ú¦ @  ^˜ôr?d `<K´íx @  ^™õr?d  <¯! @  ^šör?d à<›>ÿ @  ^›÷r?d <<;x @  ^œør?d `<¾ª¦ @  ^ùr?d  <ì±çÿ @  ^žúr?d à<n ð! @  ^Ÿûr?d <ˆÿ” @  ^ ür?d `< nƒÂ @  ^¡ýr?d  <Xul› @  ^¢þr?d à<Úä{E @  ^£ÿr?d <4m" @  ^¤s?d `<¶ü5Ð @  ^¥s?d  <äçÚ‰ @  ^¦s?d à<fvÍW @  ^§s?d <<°: @  ^¨s?d `<¾Ÿ§ä @  ^©s?d  <ì„H½ @  ^ªs?d à<n_c @  ^«s?d <n€Y @  ^¬s?d `<ì ‡ @  ^­ s?d  <¾ âÞ @  ^® s?d à<<›õ @  ^¯ s?d <ËB¶ @  ^° s?d `<IÓ¡S @  ^± s?d  <ÈN  @  ^²s?d à<™YYÔ @  ^³s?d <x–-Ì @  ^´s?d `<ú: @  ^µs?d  <¨ÕK @  ^¶s?d à<*• @  ^·s?d <põ¿ø @  ^¸s?d `<òd¨& @  ^¹s?d  < G @  ^ºs?d à<"îP¡ @  ^»s?d <Êj‰ @  ^¼s?d `<[}W @  ^½s?d  <ß@’ @  ^¾s?d à<]Ñ…Ð @  ^¿s?d < ç @  ^Às?d `<—˜ð¡ @  ^Ás?d  <Ńø @  ^Âs?d à<G& @  ^Ãs?d <;jEâ @  ^Ä s?d `<¹ûR< @  ^Å!s?d  <ëà½e @  ^Æ"s?d à<iqª» @  ^Ç#s?d <3 ×Ö @  ^È$s?d `<±˜À @  ^É%s?d  <ãƒ/Q @  ^Ê&s?d à<a8 @  ^Ë's?d <a‡}µ @  ^Ì(s?d `<ãjk @  ^Í)s?d  <± …2 @  ^Î*s?d à<3œ’ì @  ^Ï+s?d <ÄEÑa @  ^Ð,s?d `<FÔÆ¿ @  ^Ñ-s?d  <Ï)æ @  ^Ò.s?d à<–^>8 @  ^Ó/s?d <w‘J  @  ^Ô0s?d `<õ]þ @  ^Õ1s?d  <§²§ @  ^Ö2s?d à<%Š¥y @  ^×3s?d <òØ @  ^Ø4s?d `<ýcÏÊ @  ^Ù5s?d  <¯x “uÐ < @  ^Ú6s?d à<ï@И @  ^Û7s?d 8 <‡¸Ë @  ^Ü8s?d x <¯ @  ^Ý9s?d ¸ <W@L @  ^Þ:s?d ø <Õ‹W’ @  ^ß;s?d 8!<3T3¯ @  ^às?d€ ø!<ŒÀP @  _?s?d 8"<xåЬ @  _@s?d x"<útÇr @  _As?d ¸"<m&ÓÆ @  _Bs?d ø"<ï·Ä @  _Cs?d 8#<{}æ @  _Ds?d x#<ùìñÑ @  _Es?d ¸#<eEAò @  _Fs?d ø#<çÔV, @  _ Gs?d 8$<"èû @  _ Hs?d x$< ™ÿ% @  _ Is?d ¸$<7Ëë‘ @  _ Js?d ø$<µZüO @  _ Ks?d 8%<!ÞX @  _Ls?d x%<£Ɇ @  _Ms?d ¸%<’ GE @  _Ns?d ø%<˜P› @  _Os?d 8&<4ßn @  _Ps?d x&<¶È° @  _Qs?d ¸&<!ÝÜ @  _Rs?d ø&<£LËÚ @  _Ss?d 8'<7†éÍ @  _Ts?d x'<µþ @  _Us?d ¸'<)¾N0 @  _Vs?d ø'<«/Yî @  _Ws?d 8(<CB˜+ @  _Xs?d x(<ÁÓõ @  _Ys?d ¸(<V›A @  _Zs?d ø(<ÔŒŸ @  _[s?d 8)<@Ú®ˆ @  _\s?d x)<ÂK¹V @  _]s?d ¸)<âE% @  _ ^s?d ø)<`Ôû @  _!_s?d 8*<Ùå±Ò @  _"`s?d x*<[t¦  @  _#as?d ¸*<Ì&²¸ @  _$bs?d ø*<N·¥f @  _%cs?d 8+<Ú}‡q @  _&ds?d x+<Xì¯ @  _'es?d ¸+<ÄE Œ @  _(fs?d ø+<FÔ7R @  _)gs?d 8,<ƒ‰… @  _*hs?d x,<™ž[ @  _+is?d ¸,<–ËŠï @  _,js?d ø,<Z1 @  _-ks?d 8-<€¿& @  _.ls?d x-<¨ø @  _/ms?d ¸-<3 &; @  _0ns?d ø-<±˜1å @  _1os?d 8.<•¾ @  _2ps?d x.<©Î @  _3qs?d ¸.<€Ý½z @  _4rs?d ø.<Lª¤ @  _5ss?d 8/<–†ˆ³ @  _6ts?d x/<Ÿm @  _7us?d ¸/<ˆ¾/N @  _8vs?d ø/< /8 @  _9ws?d 80<hcÉú @  _:xs?d x0<êòÞ$ @  _;ys?d ¸0<} Ê @  _<zs?d ø0<ÿ1ÝN @  _={s?d 81<kûÿY @  _>|s?d x1<éjè‡ @  _?}s?d ¸1<gcGf @  _@~s?d ø1<åòP¸ @  _As?d 82<±U§ @  _B€s?d x2<3İÌ @  _Cs?d ¸2<¤–¤x @  _D‚s?d ø2<&³¦ @  _Eƒs?d 83<²Í‘± @  _F„s?d x3<0\†o @  _G…s?d ¸3<¬õ6L @  _H†s?d ø3<.d!’ @  _I‡s?d 84<븟E @  _Jˆs?d x4<i)ˆ› @  _K‰s?d ¸4<þ{œ/ @  _LŠs?d ø4<|ê‹ñ @  _M‹s?d 85<è ©æ @  _NŒs?d x5<j±¾8 @  _Os?d ¸5<[¹0û @  _PŽs?d ø5<Ù('% @  _Qs?d 86<ý®¨Ð @  _Rs?d x6<?¿ @  _S‘s?d ¸6<èm«º @  _T’s?d ø6<jü¼d @  _U“s?d 87<þ6žs @  _V”s?d x7<|§‰­ @  _W•s?d ¸7<à9Ž @  _X–s?d ø7<bŸ.P @  _Y—s?d 88<Šòï• @  _Z˜s?d x8<cøK @  _[™s?d ¸8<Ÿ1ìÿ @  _\šs?d ø8< û! @  _]›s?d 89<‰jÙ6 @  _^œs?d x9< ûÎè @  __s?d ¸9<+õg› @  _`žs?d ø9<©dpE @  _aŸs?d 8:<UÆl @  _b s?d x:<’ÄѲ @  _c¡s?d ¸:<–Å @  _d¢s?d ø:<‡ÒØ @  _e£s?d 8;<ÍðÏ @  _f¤s?d x;<‘\ç @  _g¥s?d ¸;< õW2 @  _h¦s?d ø;<d@ì @  _i§s?d 8<<J¸þ; @  _j¨s?d x<<È)éå @  _k©s?d ¸<<_{ýQ @  _lªs?d ø<<Ýêê @  _m«s?d 8=<I Ș @  _n¬s?d x=<˱ßF @  _o­s?d ¸=<ú¹Q… @  _p®s?d ø=<x(F[ @  _q¯s?d 8><\®É® @  _r°s?d x><Þ?Þp @  _s±s?d ¸><ImÊÄ @  _t²s?d ø><ËüÝ @  _u³s?d 8?<_6ÿ  @  _v´s?d x?<ݧèÓ @  _wµs?duÐ@<7 ¸?<AXð @  _x¶s?d ø?<ßO. @  _y·s?d P@<Ü¡¸Ê @  _z¸s?d @<üTº4 @  _{¹s?d Ð@<Éb»  @  _|ºs?d A<*7H @  _}»s?d PA<ß9Ži @  _~¼s?d A<ÿÌŒ— @  _½s?d ÐA<0÷g @  _€¾s?d B<­³¦¦ @  _¿s?d PB<û² @  _‚Às?d B<Ûò° @  _ƒÁs?d ÐB<îıë @  _„Âs?d C<>Œ= @  _…Ãs?d PC<øŸ„" @  _†Äs?d C<Øj†Ü @  _‡Ås?d ÐC<æ§#ß @  _ˆÆs?d D<ÿéÐÐ @  _‰Çs?d PD<¡êŠÖ @  _ŠÈs?d D<ˆ( @  _‹És?d ÐD<´)‰¼ @  _ŒÊs?d E<daT @  _Ës?d PE<¢r¼u @  _ŽÌs?d E<‚‡¾‹ @  _Ís?d ÐE<ë%h @  _Îs?d F<Œ¯…© @  _‘Ïs?d PF<·ü½C @  _’Ðs?d F<— ¿½ @  _“Ñs?d ÐF<¢?¾) @  _”Òs?d G<rw2Á @  _•Ós?d PG<´d‹à @  _–Ôs?d G<”‘‰ @  _—Õs?d ÐG<ª\, @  _˜Ös?d H<ž£  @  _™×s?d PH<À ú @  _šØs?d H<àUøø @  _›Ùs?d ÐH<Õcùl @  _œÚs?d I<+u„ @  _Ûs?d PI<Ã8Ì¥ @  _žÜs?d I<ãÍÎ[ @  _ŸÝs?d ÐI<a§r @  _ Þs?d J<üãÒÉ @  _¡ßs?d PJ<ZÓÿ @  _¢às?d J<zòÑ @  _£ás?d ÐJ<OÄЕ @  _¤âs?d K<ŸŒ\} @  _¥ãs?d PK<YŸå\ @  _¦äs?d K<yjç¢ @  _§ås?d ÐK<G§B¡ @  _¨æs?d L<^é±® @  _©çs?d PL<êë¨ @  _ªès?d L< éV @  _«és?d ÐL<)è @  _¬ês?d M<Åad* @  _­ës?d PM<rÝ  @  _®ìs?d M<#‡ßõ @  _¯ís?d ÐM<°ëD @  _°îs?d N<-¯ä× @  _±ïs?d PN<üÜ= @  _²ðs?d N<6 Þà @  _³ñs?d ÐN<?ßW @  _´òs?d O<ÓwS¿ @  _µós?d PO<dêž @  _¶ôs?d O<5‘è` @  _·õs?d ÐO< \Mc @  _¸ös?d P<µ‚ñÑ @  _¹÷s?d PP<ë«× @  _ºøs?d P<Ët©) @  _»ùs?d ÐP<þB¨½ @  _¼ús?d Q<. $U @  _½ûs?d PQ<èt @  _¾üs?d Q<È쟊 @  _¿ýs?d ÐQ<ä%K @  _Àþs?d R<yÅ…Š @  _Áÿs?d PR<qÙ¯¥ @  _Ât?d R<Q,­[ @  _Ãt?d ÐR<d¬Ï @  _Ät?d S<´R ' @  _Åt?d PS<rA™ @  _Æt?d S<R´›ø @  _Çt?d ÐS<ly>û @  _Èt?d T<u7Íô @  _Ét?d PT<+4—ò @  _Êt?d T< Á•  @  _Ë t?d ÐT<>÷”˜ @  _Ì t?d U<î¿p @  _Í t?d PU<(¬¡Q @  _Î t?d U<Y£¯ @  _Ï t?d ÐU<›58L @  _Ðt?d V<q˜ @  _Ñt?d PV<=" g @  _Òt?d V<×¢™ @  _Ót?d ÐV<(ᣠ @  _Ôt?d W<ø©/å @  _Õt?d PW<>º–Ä @  _Öt?d W<O”: @  _×t?d ÐW< ‚19 @  _Øt?d X<}½$ @  _Ùt?d PX<J~ç" @  _Út?d X<j‹åÜ @  _Ût?d ÐX<_½äH @  _Üt?d Y<õh  @  _Ýt?d PY<IæÑ @  _Þt?d Y<iÓ @  _ßt?d ÐY<ëyo, @  _àt?d Z<v=Ïí @  _át?d PZ<ÐÙÎÛ @  _â t?d€ Z<ÈR> @  `!t?d ÐZ<%w¸ @  `"t?d [<ÌmûP @  `#t?d P[<Ï7¹œ @  `$t?d [<ï»b @  `%t?d Ð[<½A @  `&t?d \<ó² @  `'t?d P\<–B·h @  `(t?d \<¶·µ– @  ` )t?d Ð\<FÈOï @  ` *t?d ]<–€Ã @  ` +t?d P]<•ÚË @  ` ,t?d ]<µ/ƒ5 @  ` -t?d Ð]<EPyL @  `.t?d ^<ØÙ @  `/t?d P^<€T€ý @  `0t?d ^< ¡‚ @  `1t?d Ð^<PÞxz @  `2t?d _<€–ô’ @  `3t?d P_<ƒÌ¶^ @  `4t?d _<£9´  @  `uÐ`<5t?d Ð_<.Æ=¥ @  `€6t?d (`<>ˆ= @  `€7t?d h`<A @  `€8t?d ¨`< z¿ @  `€9t?d è`<ÐuÆ @  `€:t?d (a<Mù. @  `€;t?d ha<»â @  `€t?d (b<NÙ㤠@  `€?t?d hb<jx±© @  ` €@t?d ¨b<J³W @  `!€At?d èb<ºòI. @  `"€Bt?d (c<jºÅÆ @  `#€Ct?d hc<ià‡  @  `$€Dt?d ¨c<I…ô @  `%€Et?d èc<¹j @  `&€Ft?d (d< $Œ‚ @  `'€Gt?d hd<0•‰þ @  `(€Ht?d ¨d<`‹ @  `)€It?d èd<àqy @  `*€Jt?d (e<0Wý‘ @  `+€Kt?d he<3 ¿] @  `,€Lt?d ¨e<ø½£ @  `-€Mt?d èe<ã‡GÚ @  `.€Nt?d (f<~Ãç @  `/€Ot?d hf<&ƒ¾k @  `0€Pt?d ¨f<v¼• @  `1€Qt?d èf<ö Fì @  `2€Rt?d (g<&AÊ @  `3€St?d hg<%ˆÈ @  `4€Tt?d ¨g<îŠ6 @  `5€Ut?d èg<õ‘pO @  `6€Vt?d (h<ÁnüR @  `7€Wt?d hh<Qßù. @  `8€Xt?d ¨h<q*ûÐ @  `9€Yt?d èh<U© @  `:€Zt?d (i<QA @  `;€[t?d hi<RGÏ @  `<€\t?d ¨i<r²Ís @  `=€]t?d èi<‚Í7  @  `>€^t?d (j<‰—Ë @  `?€_t?d hj<eÖE @  `@€`t?d ¨j<EŠÔ» @  `A€at?d èj<µõ. @  `B€bt?d (k<e½¢* @  `C€ct?d hk<fçàæ @  `D€dt?d ¨k<Fâ @  `E€et?d èk<¶ma @  `F€ft?d (l<¯#ën @  `G€gt?d hl<?’î @  `H€ht?d ¨l<gìì @  `I€it?d èl<ï• @  `J€jt?d (m<?Pš} @  `K€kt?d hm<< ر @  `L€lt?d ¨m<ÿÚO @  `M€mt?d èm<ì€ 6 @  `N€nt?d (n<qÄ€÷ @  `O€ot?d hn<)„Ù‡ @  `P€pt?d ¨n< qÛy @  `Q€qt?d èn<ù! @  `R€rt?d (o<)F­è @  `S€st?d ho<*ï$ @  `T€tt?d ¨o< éíÚ @  `U€ut?d èo<ú–£ @  `V€vt?d (p<DH« @  `W€wt?d hp<Ôù®m @  `X€xt?d ¨p<ô ¬“ @  `Y€yt?d èp<sVê @  `Z€zt?d (q<Ô;Ú @  `[€{t?d hq<×a˜Î @  `\€|t?d ¨q<÷”š0 @  `]€}t?d èq<ë`I @  `^€~t?d (r<š¯Àˆ @  `_€t?d hr<£ÈÆ @  ``€€t?d ¨r<ƒ=Äé @  `a€t?d èr<sB> @  `b€‚t?d (s<£ ²x @  `c€ƒt?d hs< Pð´ @  `d€„t?d ¨s<€¥òJ @  `e€…t?d ès<pÚ3 @  `f€†t?d (t<i”û< @  `g€‡t?d ht<ù%þ@ @  `h€ˆt?d ¨t<ÙÐü¾ @  `i€‰t?d èt<)¯Ç @  `j€Št?d (u<ùçŠ/ @  `k€‹t?d hu<ú½Èã @  `l€Œt?d ¨u<ÚHÊ @  `m€t?d èu<*70d @  `n€Žt?d (v<·s¥ @  `o€t?d hv<ï3ÉÕ @  `p€t?d ¨v<ÏÆË+ @  `q€‘t?d èv<?¹1R @  `r€’t?d (w<ïñ½º @  `s€“t?d hw<ì«ÿv @  `t€”t?d ¨w<Ì^ýˆ @  `u€•t?d èw< @  `Œ€¬t?d ¨}<6À @  `€­t?d è}<Æfg¹ @  `Ž€®t?d (~<["Çx @  `€¯t?d h~<bž @  `€°t?d ¨~<#—œö @  `‘€±t?d è~<Óèf @  `’€²t?d (< êg @  `“€³t?d h<ú¨« @  `”€´t?d ¨<uЀ<' ªU @  `•€µt?d è<­ð#P @  `–¶t?d @€<ÃNÁ$ @  `—·t?d €€<ñ›Ñx @  `˜¸t?d À€<s Ʀ @  `™¹t?d <Ѭ§é @  `šºt?d @<S=°7 @  `›»t?d €<òçÛ @  `œ¼t?d À<p’ð @  `½t?d ‚<Ÿ8½c @  `ž¾t?d @‚<©ª½ @  `Ÿ¿t?d €‚<›lí @  ` Àt?d À‚<ýúN @  `¡Át?d ƒ<»[› @  `¢Ât?d @ƒ<9ÊŒß @  `£Ãt?d €ƒ<˜ôÛ3 @  `¤Ät?d Àƒ<eÌí @  `¥Åt?d „<qÅÒE @  `¦Æt?d @„<óTÅ› @  `§Çt?d €„<ÁÕÇ @  `¨Èt?d À„<C @  `©Ét?d …<á¶£V @  `ªÊt?d @…<c'´ˆ @  `«Ët?d €…<Âãd @  `¬Ìt?d À…<@ˆôº @  `­Ít?d †<¯"¹Ü @  `®Ît?d @†<-³® @  `¯Ït?d €†<×—âR @  `°Ðt?d À†<UõŒ @  `±Ñt?d ‡<÷ ”à @  `²Òt?d @‡<u1ƒ @  `³Ót?d €‡<ÔÔñ @  `´Ôt?d À‡<VžÃ/ @  `µÕt?d ˆ<¢• @  `¶Öt?d @ˆ<’µK @  `·×t?d €ˆ< Ë¥ @  `¸Øt?d Àˆ<"Z²É @  `¹Ùt?d ‰<€üÓ† @  `ºÚt?d @‰<mÄX @  `»Ût?d €‰<£S“´ @  `¼Üt?d À‰<!„j @  `½Ýt?d Š<ÎhÉ  @  `¾Þt?d @Š<LùÞÒ @  `¿ßt?d €Š<”kŠ| @  `Ààt?d ÀŠ<ú¢ @  `Áát?d ‹<´\üí @  `Âât?d @‹<6Íë3 @  `Ããt?d €‹<—ó¼ß @  `Äät?d À‹<b« @  `Ååt?d Œ<~µ© @  `Ææt?d @Œ<üS¢w @  `Ççt?d €Œ<Ά²+ @  `Èèt?d ÀŒ<L¥õ @  `Éét?d <î±Äº @  `Êêt?d @<l Ód @  `Ëët?d €<Í„ˆ @  `Ììt?d À<O“V @  `Íít?d Ž< %Þ0 @  `Îît?d @Ž<"´Éî @  `Ïït?d €Ž<Ø…¾ @  `Ððt?d ÀŽ<Z’` @  `Ññt?d <ø§ó/ @  `Òòt?d @<z6äñ @  `Óót?d €<Û³ @  `Ôôt?d À<Y™¤Ã @  `Õõt?d <•©õÖ @  `Ööt?d @<8â @  `×÷t?d €<%íòT @  `Øøt?d À<§|åŠ @  `Ùùt?d ‘<Ú„Å @  `Úút?d @‘<‡K“ @  `Ûût?d €‘<&uÄ÷ @  `Üüt?d À‘<¤äÓ) @  `Ýýt?d ’<KNžO @  `Þþt?d @’<É߉‘ @  `ßÿt?d €’<-»Ï" @  `àu?d À’<¯*Øü @  `áu?d “< Œ¹³ @  `âu?d€ @“<ûÞ²Ë @  au?d €“<»¡­ @  au?d À“<90ºÐ @  au?d ”<—Ù_• @  au?d @”<HHK @  au?d €”<é/m @  au?d À”<k¾³ @  a u?d •<ª.† @  a u?d @•<…;9X @  a  u?d €•<áL•Y @  a  u?d À•<cÝ‚‡ @  a  u?d –<I>4  @  a u?d @–<˯#Ò @  a u?d €–<R˜ @  au?d À–<Ð Æ @  au?d —<¼ @  au?d @—<“-Í @  au?d €—<÷Z¢Ì @  au?d À—<u˵ @  au?d ˜<ö“/E @  au?d @˜<t8› @  au?d €˜<ˆew½ @  au?d À˜< ô`c @  au?d ™<fà^V @  au?d @™<äqIˆ @  au?d €™<€å‰ @  au?d À™<—òW @  au?d š<(tDÜ @  au?d @š<ªåS @  au?d €š<®eG @  a u?d Àš<,ôPÊ @  a!u?d ›<üGw¯ @  a "u?d @›<~Ö`q @  a!#u?d €›<¡Ìp @  a"$u?d À›<˜0Û® @  a#%u?d œ<6Ù>ë @  a$&u?d @œ<´H)5 @  a%'u?d €œ<H/f @  a&(u?d Àœ<ʾqÍ @  a')u?d <¦ªOø @  a(*u?d @<$;X& @  a)+u?d €<@Lô' @  a*,u?d À<ÂÝãù @  a+-u?d ž<è>Ur @  a,.u?d @ž<j¯B¬ @  a-/u?d €ž<ó˜of @  a.0u?d Àž<q x¸ @  a/1u?d Ÿ<°¼xm @  a02u?d @Ÿ<2-o³ @  a13u?d €Ÿ<VZò @  a24uuР<?d ÀŸ<ÔËÔl @  a35u?d  <g@ @  a46u?d X <ö ž @  a57u?d ˜ <l‘D¸ @  a68u?d Ø <îSf @  a79u?d ¡<‚mS @  a8:u?d X¡<…z @  a9;u?d ˜¡<dòÖŒ @  a:u?d X¢<N` @  a=?u?d ˜¢<ºÁa @  a>@u?d Ø¢<8PvÞ @  a?Au?d £<FäW) @  a@Bu?d X£<Äu@÷ @  aACu?d ˜£< ìö @  aBDu?d Ø£<"“û( @  aCEu?d ¤<Œzm @  aDFu?d X¤<ë ³ @  aEGu?d ˜¤<òŒF• @  aFHu?d ؤ<pQK @  aGIu?d ¥< o~ @  aHJu?d X¥<ž˜x  @  aIKu?d ˜¥<úïÔ¡ @  aJLu?d Ø¥<x~à @  aKMu?d ¦<Ruô @  aLNu?d X¦<Ð b* @  aMOu?d ˜¦<I;Oà @  aNPu?d ئ<˪X> @  aOQu?d §< Xë @  aPRu?d X§<ˆŽO5 @  aQSu?d ˜§<ìùã4 @  aRTu?d ا<nhôê @  aSUu?d ¨<í0n½ @  aTVu?d X¨<o¡yc @  aUWu?d ˜¨<“Æ6E @  aVXu?d ب<W!› @  aWYu?d ©<}C® @  aXZu?d X©<ÿÒp @  aY[u?d ˜©<›¥¤q @  aZ\u?d Ø©<4³¯ @  a[]u?d ª<3×$ @  a\^u?d Xª<±Fú @  a]_u?d ˜ª<µÆì @  a^`u?d ت<7W2 @  a_au?d «<çä6W @  a`bu?d X«<eu!‰ @  aacu?d ˜«<ˆ @  abdu?d Ø«<ƒ“šV @  aceu?d ¬<-z @  adfu?d X¬<¯ëhÍ @  aegu?d ˜¬<SŒ'ë @  afhu?d ج<Ñ05 @  agiu?d ­<½  @  ahju?d X­<?˜Þ @  aiku?d ˜­<[ïµß @  ajlu?d Ø­<Ù~¢ @  akmu?d ®<óŠ @  alnu?d X®<q T @  amou?d ˜®<è;.ž @  anpu?d Ø®<jª9@ @  aoqu?d ¯<«9• @  apru?d X¯<)Ž.K @  aqsu?d ˜¯<Mù‚J @  artu?d د<Ïh•” @  asuu?d °<Æ?l @  atvu?d X°<D€(² @  auwu?d ˜°<¸çg” @  avxu?d ذ<:vpJ @  awyu?d ±<VbN @  axzu?d X±<ÔóY¡ @  ay{u?d ˜±<°„õ  @  az|u?d ر<2â~ @  a{}u?d ²<öTõ @  a|~u?d X²<šgC+ @  a}u?d ˜²<sq¾ @  a~€u?d ز<ñà` @  au?d ³<l¦ @  a€‚u?d X³<î“x @  aƒu?d ˜³<Šä«y @  a‚„u?d س<u¼§ @  aƒ…u?d ´<¦œYâ @  a„†u?d X´<$ N< @  a…‡u?d ˜´<Øj @  a†ˆu?d Ø´<ZûÄ @  a‡‰u?d µ<6ï(ñ @  aˆŠu?d Xµ<´~?/ @  a‰‹u?d ˜µ<Ð “. @  aŠŒu?d ص<R˜„ð @  a‹u?d ¶<x{2{ @  aŒŽu?d X¶<úê%¥ @  au?d ˜¶<cÝo @  aŽu?d ض<áL± @  a‘u?d ·< ùd @  a’u?d X·<¢hº @  a‘“u?d ˜·<Ƥ» @  a’”u?d Ø·<D޳e @  a“•u?d ¸<ÇÖ)2 @  a”–u?d X¸<EG>ì @  a•—u?d ˜¸<¹ qÊ @  a–˜u?d ظ<;±f @  a—™u?d ¹<W¥X! @  a˜šu?d X¹<Õ4Oÿ @  a™›u?d ˜¹<±Cãþ @  ašœu?d ع<3Òô  @  a›u?d º<1B« @  aœžu?d Xº<› Uu @  aŸu?d ˜º<Ÿ Ac @  až u?d غ<±V½ @  aŸ¡u?d »<ÍqØ @  a ¢u?d X»<O“f @  a¡£u?d ˜»<+äÊ @  a¢¤u?d Ø»<©uÝÙ @  a£¥u?d ¼<œ8œ @  a¤¦u?d X¼<… /B @  a¥§u?d ˜¼<yj`d @  a¦¨u?d ؼ<ûûwº @  a§©u?d ½<—ïI @  a¨ªu?d X½<~^Q @  a©«u?d ˜½<q òP @  aª¬u?d ؽ<ó˜åŽ @  a«­u?d ¾<Ù{S @  a¬®u?d X¾<[êDÛ @  a­¯u?d ˜¾<ÂÝi @  a®°u?d ؾ<@L~Ï @  a¯±u?d ¿<ù~ @  a°²u?d X¿<hiÄ @  a±³u?d ˜¿<gÅÅ @uÐÀ<  a²´u?d Ø¿<˜¡g @  a³€µu?d 0À<KYæ @  a´€¶u?d pÀ<ÉÈñ¡ @  aµ€·u?d °À<5¯¾‡ @  a¶€¸u?d ðÀ<·>©Y @  a·€¹u?d 0Á<Û*—l @  a¸€ºu?d pÁ<Y»€² @  a¹€»u?d °Á<=Ì,³ @  aº€¼u?d ðÁ<¿];m @  a»€½u?d 0Â<•¾æ @  a¼€¾u?d pÂ</š8 @  a½€¿u?d °Â<ãÿ›? @  a¾€Àu?d ðÂ<anŒá @  a¿€Áu?d 0Ã<Ú­ @  aÀ€Âu?d pÃ<KºÈ @  aÁ€Ãu?d °Ã<ù<É @  a€Äu?d ðÃ<{­ @  aÀÅu?d 0Ä<ÕDäR @  aÄ€Æu?d pÄ<WÕóŒ @  aÅ€Çu?d °Ä<«²¼ª @  aÆ€Èu?d ðÄ<)#«t @  aÇ€Éu?d 0Å<E7•A @  aÈ€Êu?d pÅ<Ǧ‚Ÿ @  aÉ€Ëu?d °Å<£Ñ.ž @  aÊ€Ìu?d ðÅ<!@9@ @  aË€Íu?d 0Æ< £Ë @  aÌ€Îu?d pÆ<‰2˜ @  aÍ€Ïu?d °Æ<µß @  a΀Ðu?d ðÆ<’”¢ @  aÏ€Ñu?d 0Ç<S!¢Ô @  aЀÒu?d pÇ<Ѱµ  @  aÑ€Óu?d °Ç<µÇ  @  aÒ€Ôu?d ðÇ<7VÕ @  aÓ€Õu?d 0È<´”‚ @  aÔ€Öu?d pÈ<6Ÿƒ\ @  aÕ€×u?d °È<ÊøÌz @  aÖ€Øu?d ðÈ<HiÛ¤ @  a×€Ùu?d 0É<$}å‘ @  aØ€Úu?d pÉ<¦ìòO @  aÙ€Ûu?d °É<›^N @  aÚ€Üu?d ðÉ<@ I @  aÛ€Ýu?d 0Ê<jéÿ @  aÜ€Þu?d pÊ<èxèÅ @  aÝ€ßu?d °Ê<ìøüÓ @  aÞ€àu?d ðÊ<nië  @  a߀áu?d 0Ë<¾ÚÌh @  aà€âu?d pË<ú:® @  b2€v?d pØ<¼k-p @  b3€v?d °Ø<…E™» @  b4€v?d ðØ<ÔŽe @  b5€v?d 0Ù<¥rï* @  b6€v?d pÙ<'ãøô @  b7€v?d °Ù<&  @  b8€v?d ðÙ<·Q @  b9€v?d 0Ú<àQ7 @  b:€v?d pÚ<bŒFé @  b;€v?d °Ú<£E© @  b<€ v?d ðÚ<!Ô¾Ì @  b=€!v?d 0Û<ƒr߃ @  b>€"v?d pÛ<ãÈ] @  b?€#v?d °Û<¹†$ä @  b@€$v?d ðÛ<;3: @  bA€%v?d 0Ü<P·-’ @  bB€&v?d pÜ<Ò&:L @  bC€'v?d °Ü<ëއ @  bD€(v?d ðÜ<i™™Y @  bE€)v?d 0Ý<Ë?ø @  bF€*v?d pÝ<I®ïÈ @  bG€+v?d °Ý<ãk³ @  bH€,v?d ðÝ<aú m @  bI€-v?d 0Þ<ŽPF  @  bJ€.v?d pÞ< ÁQÕ @  bK€/v?d °Þ<P¿‡ò @  bL€0v?d ðÞ<Ò., @  bM€1v?d 0ß<pˆñc @  bN€2v?d pß<òæ½ @  bO€3v?d uÐà</°ß<õ}+& @  bP€4v?d ðß<wì<ø @  bQ€5v?d Hà<¦© @  bR€6v?d ˆà<I @  bY€=v?d Hâ<ÂAä0 @  bZ€>v?d ˆâ<â´æÎ @  b[€?v?d Èâ<qI  @  b\€@v?d ã<¡…ì @  b]€Av?d Hã<Q~• @  b^€Bv?d ˆã<q‹}k @  b_€Cv?d Èã<Å‚` @  b`€Dv?d ä<ÜÃqo @  ba€Ev?d Hä<,¼‹ @  bb€Fv?d ˆä< I‰è @  bc€Gv?d Èä<—( @  bd€Hv?d å<GK¤ë @  be€Iv?d Hå<·4^’ @  bf€Jv?d ˆå<—Á\l @  bg€Kv?d Èå<Ÿ`º7 @  bh€Lv?d æ<$ö @  bi€Mv?d Hæ<ò[à @  bj€Nv?d ˆæ<Ò®âq @  bk€Ov?d Èæ<,´!v @  bl€Pv?d ç<üü­ž @  bm€Qv?d Hç< ƒWç @  bn€Rv?d ˆç<,vU @  bo€Sv?d Èç<‰v¢ @  bp€Tv?d è<½‰¿ @  bq€Uv?d Hè<MöûÆ @  br€Vv?d ˆè<mù8 @  bs€Wv?d Èè<öIXÓ @  bt€Xv?d é<&Ô; @  bu€Yv?d Hé<Ö~.B @  bv€Zv?d ˆé<ö‹,¼ @  bw€[v?d Èé<þ*Êç @  bx€\v?d ê<cnj& @  by€]v?d Hê<“_ @  bz€^v?d ˆê<³ä’¡ @  b{€_v?d Èê<ÐIhz @  b|€`v?d ë<ä’ @  b}€av?d Hë<ð~ë @  b~€bv?d ˆë<Ћ @  b€cv?d Èë<)ÜÕ½ @  b€€dv?d ì<0’&² @  b€ev?d Hì<ÀíÜË @  b‚€fv?d ˆì<àÞ5 @  bƒ€gv?d Èì<{RÞ @  b„€hv?d í<«ó6 @  b…€iv?d Hí<[e O @  b†€jv?d ˆí<{ ± @  b‡€kv?d Èí<s1íê @  bˆ€lv?d î<îuM+ @  b‰€mv?d Hî< ·R @  bŠ€nv?d ˆî<>ÿµ¬ @  b‹€ov?d Èî<Àåv« @  bŒ€pv?d ï<­úC @  b€qv?d Hï<àÒ: @  bŽ€rv?d ˆï<À'Ä @  b€sv?d Èï<e'Ú @  b€tv?d ð<ÛùfÍ @  b‘€uv?d Hð<+†œ´ @  b’€vv?d ˆð< sžJ @  b“€wv?d Èð<9?¡ @  b”€xv?d ñ<@q³I @  b•€yv?d Hñ<°I0 @  b–€zv?d ˆñ<ûKÎ @  b—€{v?d Èñ<˜Z­• @  b˜€|v?d ò< T @  b™€}v?d Hò<õa÷- @  bš€~v?d ˆò<Õ”õÓ @  b›€v?d Èò<[¯N‹ @  bœ€€v?d ó<‹çÂc @  b€v?d Hó<{˜8 @  bž€‚v?d ˆó<[m:ä @  bŸ€ƒv?d Èó<ïkÅï @  b €„v?d ô<ö%6à @  b¡€…v?d Hô<ZÌ™ @  b¢€†v?d ˆô<&¯Îg @  b£€‡v?d Èô<½åoŒ @  b¤€ˆv?d õ<m­ãd @  b¥€‰v?d Hõ<Ò @  b¦€Šv?d ˆõ<½'ã @  b§€‹v?d Èõ<µ†ý¸ @  b¨€Œv?d ö<(Â]y @  b©€v?d Hö<ؽ§ @  bª€Žv?d ˆö<øH¥þ @  b«€v?d Èö<Rfù @  b¬€v?d ÷<Öê @  b­€‘v?d H÷<&eh @  b®€’v?d ˆ÷<– @  b¯€“v?d È÷<£Ê- @  b°€”v?d ø<—oF0 @  b±€•v?d Hø<g¼I @  b²€–v?d ˆø<Gå¾· @  b³€—v?d Èø<ܯ\ @  b´€˜v?d ù< ç“´ @  bµ€™v?d Hù<ü˜iÍ @  b¶€šv?d ˆù<Ümk3 @  b·€›v?d Èù<ÔÌh @  b¸€œv?d ú<Iˆ-© @  b¹€v?d Hú<¹÷×Ð @  bº€žv?d ˆú<™Õ. @  b»€Ÿv?d Èú<ú¯/õ @  b¼€ v?d û<*ç£ @  b½€¡v?d Hû<Ú˜Yd @  b¾€¢v?d ˆû<úm[š @  b¿€£v?d Èû<àl¢ @  bÀ€¤v?d ü<ù"Q  @  bÁ€¥v?d Hü< ]«u @  b€¦v?d ˆü<)¨©‹ @  bÀ§v?d Èü<²â` @  bÄ€¨v?d ý<bª„ˆ @  bÅ€©v?d Hý<’Õ~ñ @  bÆ€ªv?d ˆý<² | @  bÇ€«v?d Èý<ºšT @  bÈ€¬v?d þ<'Å:• @  bÉ€­v?d Hþ<׺Àì @  bÊ€®v?d ˆþ<÷O @  bË€¯v?d Èþ< U @  bÌ€°v?d ÿ<Ùý @  bÍ€±v?d Hÿ<)bw„ @  b΀²v?d ˆÿ< —uz @  bÏ€uÐ=³v?d Èÿ<ÑÞ½ @  bдv?d =ž£öL @  bѵv?d `=nÜ 5 @  bÒ¶v?d  =N)Ë @  bÓ·v?d à=Õc¯  @  bÔ¸v?d =+#È @  bÕ¹v?d `=õTÙ± @  bÖºv?d  =Õ¡ÛO @  b×»v?d à=Ý= @  bؼv?d =@DÕ @  bÙ½v?d `=°;g¬ @  bÚ¾v?d  =ÎeR @  bÛ¿v?d à=3Š˜ @  bÜÀv?d =Ó{p @  bÝÁv?d `=#ü  @  bÞÂv?d  =ñþ÷ @  bßÃv?d à=·÷ü @  bàÄv?d =®¹òó @  báÅv?d `=^ÆŠ @  bâÆv?d€  = ðÒ @  cÇv?d à=pûÿ @  cÈv?d = ³sø @  cÉv?d `=•…rl @  cÊv?d  =µpp’ @  cËv?d à=scɳ @  cÌv?d =î'ir @  cÍv?d `=ÐêÌq @  cÎv?d  =ðÎ @  c Ïv?d à=ËLöe @  c Ðv?d =z @  c Ñv?d `=.2{ @  c Òv?d  =Çyç @  c Óv?d à=ÈÔÀÆ @  cÔv?d =ü+LÛ @  cÕv?d `=oG×8 @  cÖv?d  =O²ÕÆ @  c×v?d à=±À @  cØv?d =Áù( @  cÙv?d ` =ôϼ @  cÚv?d   =Ô:B @  cÛv?d à =)¹c @  cÜv?d =m¢ @  cÝv?d ` =± ¼¡ @  cÞv?d   =‘U¾_ @  cßv?d à =7±¿i @  càv?d =çù3 @  cáv?d ` =ÒÏ2 @  câv?d   =ò:0ë @  cãv?d à =4)‰Ê @  cäv?d =-gzÅ @  cåv?d ` =¯ Æ– @  c æv?d   =øÄh @  c!çv?d à =Ñûžn @  c"èv?d =³† @  c#év?d ` =4… @  c$êv?d   =pì @  c%ëv?d à =Òc¨Í @  c&ìv?d =O'  @  c'ív?d `=qê­ @  c(îv?d  =Q¯ñ @  c)ïv?d à=jL— @  c*ðv?d =ºó @  c+ñv?d `=2g @  c,òv?d  =¯Ç™ @  c-óv?d à=iÔ¡¸ @  c.ôv?d =×   @  c/õv?d `=Df†é @  c0öv?d  =d“„ @  c1÷v?d à=:Þ @  c2øv?d =êØRù @  c3ùv?d `=ßîSm @  c4úv?d  =ÿQ“ @  c5ûv?d à=9è² @  c6üv?d =¤LHs @  c7ýv?d `=šíp @  c8þv?d  =ºtïŽ @  c9ÿv?d à=Žaú7 @  c:w?d =^)vß @  c;w?d `=kwK @  c<w?d  =Kêuµ @  c=w?d à=ùÌ” @  c>w?d =”·?› @  c?w?d `=¸Ú…Z @  c@w?d  =˜/‡¤ @  cAw?d à=Æ,Ý¢ @  cBw?d =dQJ @  cC w?d `=#RPÞ @  cD w?d  =§R  @  cE w?d à=Å´ë @  cF w?d =XðKÀ @  cG w?d `=f=îà @  cHw?d  =FÈì= @  cIw?d à=}›Ô× @  cJw?d =­ÓX? @  cKw?d `=˜åY« @  cLw?d  =¸[U @  cMw?d à=~ât @  cNw?d =Jüni @  cOw?d `=ÙõŠ @  cPw?d  =ùe÷t @  cQw?d à=§f­r @  cRw?d =w.!š @  cSw?d `=B  @  cTw?d  =bí"ð @  cUw?d à=¤þ›Ñ @  cVw?d =9º; @  cWw?d `=wž @  cXw?d  ='‚œí @  cYw?d à=fÛ @  cZ w?d =Q.3 @  c[!w?d `=d§ @  c\"w?d  =DíY @  c]#w?d à=‚þ«x @  c^$w?d =›°Xw @  c_%w?d `=Úä$ @  c`&w?d  =9/æÚ @  ca'w?d à=g,¼Ü @  cb(w?d =·d04 @  cc)w?d `=‚R1  @  cd*w?d  =¢§3^ @  ce+w?d à=d´Š @  cf,w?d =ùð*¾ @  cg-w?d `=Ç=½ @  ch.w?d  =çÈC @  ci/w?d à=Ü›µ© @  cj0w?d = Ó9A @  ck1w?d `=9å8Õ @  cl2w?d  =:+uÐ = @  cm3w?d à=¢ƒðv @  cn€4w?d 8 =Óˆ. @  co€5w?d x =@äµó @  cp€6w?d ¸ =`·  @  cq€7w?d ø =>í  @  cr€8w?d 8!=îZaã @  cs€9w?d x!=Ûl`w @  ct€:w?d ¸!=û™b‰ @  cu€;w?d ø!==ŠÛ¨ @  cv€w?d ¸"=¾öÜ” @  cy€?w?d ø"=èBȳ @  cz€@w?d 8#=8 D[ @  c{€Aw?d x#= Ë @  cÇ€w?d x6=*ø›È @  cÈ€Žw?d ¸6= ™6 @  cÉ€w?d ø6=1^¡Ü @  cÊ€w?d 87=á-4 @  cË€‘w?d x7=Ô ,  @  cÌ€’w?d ¸7=ôÕ.^ @  cÍ€“w?d ø7=2Æ— @  c΀”w?d 88=9b @  cÏ€•w?d x8=•U€ @  cЀ–w?d ¸8=µ ‚ @  cÑ€—w?d ø8=ë£Øy @  cÒ€˜w?d 89=;ëT‘ @  cÓ€™w?d x9=ÝU @  cÔ€šw?d ¸9=.(Wû @  cÕ€›w?d ø9=è;îÚ @  cÖ€œw?d 8:=uN @  c×€w?d x:=K²ë @  cØ€žw?d ¸:=kGéæ @  cÙ€Ÿw?d ø:=Í£èÐ @  cÚ€ w?d 8;=ëd8 @  cÛ€¡w?d x;=(Ýe¬ @  cÜ€¢w?d ¸;=(gR @  cÝ€£w?d ø;=Î;Þs @  cÞ€¤w?d 8<=×u-| @  c߀¥w?d x<=U‘/ @  cà€¦w?d ¸<=uê“Ñ @  cဧw?d ø<=+éÉ× @  c
w?d€ 8==}÷í† @  d€©w?d x==©€¤; @  d€ªw?d ¸==‰u¦Å @  d€«w?d ø==Š/ä  @  d€¬w?d 8>=kDÈ @  d€­w?d x>=ç¾± @  d€®w?d ¸>=Çá¼O @  d€¯w?d ø>=2Ûß @  d€°w?d 8?=âHW7 @  d €±w?d x?=7­N @  d €²w?duÐ@=7 ¸?=2¯° @  d €³w?d ø?=Lž @  d ´w?d P@=´$< @  d µw?d @=ݯËe @  d¶w?d Ð@=_>Ü» @  d·w?d A=0÷| @  d¸w?d PA=²fkÏ @  d¹w?d A=à}„– @  dºw?d ÐA=bì“H @  d»w?d B=~cf› @  d¼w?d PB=üòqE @  d½w?d B=®éž @  d¾w?d ÐB=,x‰Â @  d¿w?d C=æ§Y© @  dÀw?d PC=d6Nw @  dÁw?d C=6-¡. @  dÂw?d ÐC=´¼¶ð @  dÃw?d D=,9í @  dÄw?d PD=®¨3 @  dÅw?d D=ü³èj @  dÆw?d ÐD=~"ÿ´ @  dÇw?d E=íx® @  d Èw?d PE=‚|op @  d!Éw?d E=Ðg€) @  d"Êw?d ÐE=Rö—÷ @  d#Ëw?d F=Nyb$ @  d$Ìw?d PF=Ìèuú @  d%Íw?d F=žóš£ @  d&Îw?d ÐF=b} @  d'Ïw?d G=»ZqÛ @  d(Ðw?d PG=9Ëf @  d)Ñw?d G=kЉ\ @  d*Òw?d ÐG=éAž‚ @  d+Ów?d H=\uG @  d,Ôw?d PH=ÞäPS @  d-Õw?d H=Œÿ¿  @  d.Öw?d ÐH=n¨Ô @  d/×w?d I=a§~ @  d0Øw?d PI=ã6  @  d1Ùw?d I=±-ðù @  d2Úw?d ÐI=3¼ç' @  d3Ûw?d J=/3ô @  d4Üw?d PJ=­¢* @  d5Ýw?d J=ÿ¹ês @  d6Þw?d ÐJ=}(ý­ @  d7ßw?d K=G§8× @  d8àw?d PK=Å6/  @  d9áw?d K=—-ÀP @  d:âw?d ÐK=¼×Ž @  d;ãw?d L=9q“ @  d<äw?d PL=¨fM @  d=åw?d L=]³‰ @  d>æw?d ÐL=ß"žÊ @  d?çw?d M=êB @  d@èw?d PM={œ @  dAéw?d M=ß`çÅ @  dBêw?d ÐM=]ñð @  dCëw?d N=A~È @  dDìw?d PN=Ãï @  dEíw?d N=‘ôýO @  dFîw?d ÐN=eê‘ @  dGïw?d O=´]7 @  dHðw?d PO=6Ìé @  dIñw?d O=d×î° @  dJòw?d ÐO=æFùn @  dKów?d P=ÙSÎ @  dLôw?d PP=[ @  dMõw?d P= ÙèI @  dNöw?d ÐP=‹Hÿ— @  dO÷w?d Q=ä_= @  dPøw?d PQ=fHã @  dQùw?d Q=4 §º @  dRúw?d ÐQ=¶š°d @  dSûw?d R=ªE· @  dTüw?d PR=(„Ri @  dUýw?d R=zŸ½0 @  dVþw?d ÐR=øªî @  dWÿw?d S=µCJô @  dXx?d PS=7Ò]* @  dYx?d S=eɲs @  dZx?d ÐS=çX¥­ @  d[x?d T=ݰ @  d\x?d PT=ýLn @  d]x?d T=¯Wû7 @  d^x?d ÐT=-Æìé @  d_x?d U=S kó @  d`x?d PU=ј|- @  da x?d U=ƒƒ“t @  db x?d ÐU=„ª @  dc x?d V=qy @  dd x?d PV=Ÿ f§ @  de x?d V=͉þ @  dfx?d ÐV=O†ž  @  dgx?d W=è¾b† @  dhx?d PW=j/uX @  dix?d W=84š @  djx?d ÐW=º¥ß @  dkx?d X=‘TÐ @  dlx?d PX=C @  dmx?d X=߬W @  dnx?d ÐX=]Š»‰ @  dox?d Y=2C# @  dpx?d PY=°Ò ý @  dqx?d Y=âÉ㤠@  drx?d ÐY=`Xôz @  dsx?d Z=|ש @  dtx?d PZ=þFw @  dux?d Z=¬]ù. @  dvx?d ÐZ=.Ìîð @  dwx?d [=C+Š @  dx x?d P[=–Òx?d èb=Hš€¨ @  d—?x?d (c=‚EPà @  d˜@x?d hc=ÔG @  d™Ax?d ¨c=RϨD @  dšBx?d èc=Ð^¿š @  d›Cx?d (d=HÛ‡ @  dœDx?d hd=ÊJY @  dEx?d ¨d=˜Qá @  džFx?d èd=ÀöÞ @  dŸGx?d (e=dqÄ @  d Hx?d he=æžf @  d¡Ix?d ¨e=´…‰C @  d¢Jx?d èe=6ž @  d£Kx?d (f=*›kN @  d¤Lx?d hf=¨ | @  d¥Mx?d ¨f=ú“É @  d¦Nx?d èf=x€„ @  d§Ox?d (g=߸x± @  d¨Px?d hg=])oo @  d©Qx?d ¨g=2€6 @  dªRx?d èg=£—è @  d«Sx?d (h=8—Nç @  d¬Tx?d hh=ºY9 @  d­Ux?d ¨h=è¶` @  d®Vx?d èh=jŒ¡¾ @  d¯Wx?d (i=E @  d°Xx?d hi=‡ÔÊ @  d±Yx?d ¨i=ÕÏù“ @  d²Zx?d èi=W^îM @  d³[x?d (j=KÑž @  d´\x?d hj=É@ @ @  dµ]x?d ¨j=›[ã @  d¶^x?d èj=ÊôÇ @  d·_x?d (k=#E1½ @  d¸`x?d hk=¡Ô&c @  d¹ax?d ¨k=óÏÉ: @  dºbx?d èk=q^Þä @  d»cx?d (l=éÛxù @  d¼dx?d hl=kJo' @  d½ex?d ¨l=9Q€~ @  d¾fx?d èl=»À—  @  d¿gx?d (m=k( @  dÀhx?d hm=é™ö @  dÁix?d ¨m=»‚î¯ @  dÂjx?d èm=9ùq @  dÃkx?d (n=%œ ¢ @  dÄlx?d hn=§ | @  dÅmx?d ¨n=õô% @  dÆnx?d èn=w‡ãû @  dÇox?d (o=п] @  dÈpx?d ho=R.ƒ @  dÉqx?d ¨o=5çÚ @  dÊrx?d èo=‚¤ð @  dËsx?d (p=½±¤ @  dÌtx?d hp=? z @  dÍux?d ¨p=m;á# @  dÎvx?d èp=ïªöý @  dÏwx?d (q=€cVW @  dÐxx?d hq=òA‰ @  dÑyx?d ¨q=Pé®Ð @  dÒzx?d èq=Òx¹ @  dÓ{x?d (r=Î÷LÝ @  dÔ|x?d hr=Lf[ @  dÕ}x?d ¨r=}´Z @  dÖ~x?d èr=œì£„ @  d×x?d (s=Kõ'} @  dØ€x?d hs=Éd0£ @  dÙx?d ¨s=›ßú @  dÚ‚x?d ès=îÈ$ @  dÛƒx?d (t=kn9 @  dÜ„x?d ht=úyç @  dÝ…x?d ¨t=Qá–¾ @  dÞ†x?d èt=Óp` @  d߇x?d (u=­¿z @  dàˆx?d hu=/.¤ @  dá‰x?d ¨u=}5þý @  dâŠx?d€ èu=‹gõ… @  e‹x?d (v=v©H @  eŒx?d hv=ô8_¡ @  ex?d ¨v=cjK @  eŽx?d èv=áû\Ë @  ex?d (w=ˆqÿ @  ex?d hw= àèÉ @  e‘x?d ¨w=–IXê @  e’x?d èw=ØO4 @  e “x?d (x=d¥mÖ @  e ”x?d hx=æ4z @  e •x?d ¨x=qfn¼ @  e –x?d èx=ó÷yb @  e —x?d (y=ÿ-¸R @  e˜x?d hy=}¼¯Œ @  e™x?d ¨y=L´!O @  ešx?d èy=Î%6‘ @  e›x?d (z=ã8¯ @  eœx?d hz=•r/q @  ex?d ¨z= ;Å @  ežx?d èz=€±, @  eŸx?d ({=tŒ¶ @  e x?d h{=ö¡Å @  e¡x?d ¨{=j´æ @  e¢x?d è{=è%8 @  e£x?d (|=µé[È @  e¤x?d h|=7xL @  e¥x?d ¨|= *X¢ @  e¦x?d è|="»O| @  e§x?d (}=.aŽL @  e¨x?d h}=¬ð™’ @  e©x?d ¨}=Œþ0á @  e ªx?d è}=o'? @  e!«x?d (~=ש) @  e"¬x?d h~=U8>ß @  e#­x?d ¨~=Âj*k @  e$®x?d è~=@û=µ @  e%¯x?d (=)qži @  e&°x?d h=«à‰· @  e'±x?d ¨=uЀ='7I9” @  e(²x?d è=µØ.J @  e)³x?d @€=ŸäbÁ @  e*´x?d €€=¿`? @  e+µx?d À€=Š'a« @  e,¶x?d =ZoíC @  e-·x?d @=l·E @  e.¸x?d €=$™µ» @  e/¹x?d À=·õ.X @  e0ºx?d ‚=*±Ž™ @  e1»x?d @‚=ì¢7¸ @  e2¼x?d €‚=ÌW5F @  e3½x?d À‚=ùa4Ò @  e4¾x?d ƒ=))¸: @  e5¿x?d @ƒ=¬ @  e6Àx?d €ƒ=_h®ã @  e7Áx?d Àƒ=a¥ à @  e8Âx?d „=xëøï @  e9Ãx?d @„=¾øAÎ @  e:Äx?d €„=ž C0 @  e;Åx?d À„=«;B¤ @  e<Æx?d …={sÎL @  e=Çx?d @…=%p”J @  e>Èx?d €…=…–´ @  e?Éx?d À…=)è,u @  e@Êx?d †=´¬Œ´ @  eAËx?d @†=r¿5• @  eBÌx?d €†=RJ7k @  eCÍx?d À†=g|6ÿ @  eDÎx?d ‡=·4º @  eEÏx?d @‡=Œg‚ý @  eFÐx?d €‡=¬’€ @  eGÑx?d À‡=’_% @  eHÒx?d ˆ=¦ © @  eIÓx?d @ˆ=`³< @  eJÔx?d €ˆ=@F @  eKÕx?d Àˆ=upV @  eLÖx?d ‰=¥8Ÿ¾ @  eM×x?d @‰=û;Ÿ @  eNØx?d €‰=ÛÎÇF @  eOÙx?d À‰=H¢\¥ @  ePÚx?d Š=Õæüd @  eQÛx?d @Š=õEE @  eRÜx?d €Š=3G» @  eSÝx?d ÀŠ=6F/ @  eTÞx?d ‹=Ö~ÊÇ @  eUßx?d @‹=pšËñ @  eVàx?d €‹=PoÉ @  eWáx?d À‹=n¢l  @  eXâx?d Œ=wìŸ @  eYãx?d @Œ=±ÿ&" @  eZäx?d €Œ=‘ $Ü @  e[åx?d ÀŒ=¤<%H @  e\æx?d =tt©  @  e]çx?d @=*wó¦ @  e^èx?d €= ‚ñX @  e_éx?d À=ˆèM  @  e`êx?d Ž=¬íÊ @  eaëx?d @Ž=Ó¿Të @  ebìx?d €Ž=óJV @  ecíx?d ÀŽ=Æ|W @  edîx?d =4Ûi @  eeïx?d @=-gム@  efðx?d €= ’á} @  egñx?d À=3_D~ @  ehòx?d =øÌ @  eióx?d @=K’Aí @  ejôx?d €=kgC @  ekõx?d À=^QB‡ @  elöx?d ‘=·Þº @  em ÷x?d @‘=Дi @  enøx?d €‘=ðï–— @  eoùx?d À‘=cƒ t @  epúx?d ’=þÇ­µ @  eqûx?d @’=8Ô” @  erüx?d €’=!j @  esýx?d À’=-þ @  etþx?d “=ý_› @  euÿx?d @“=ÉJޝ @  evy?d €“=鿌Q @  ewy?d À“=×r)R @  exy?d ”=Î<Ú] @  eyy?d @”=/c| @  ezy?d €”=½W @  e{ y?d À”=$+¼Ã @  e| y?d •=ôc0+ @  e} y?d @•=ª`j- @  e~ y?d €•=qûSÓ @  e y?d À•=¾ÀÙ# @  e€ y?d –=#„yâ @  e y?d @–=å—Àà @  e‚ y?d €–=ÅbÂ= @  eƒ y?d À–=ðTé @  e„y?d —= OA @  e…y?d @—=Ow« @  e†y?d €—=;ºuU @  e‡y?d À—=wÐV @  eˆy?d ˜=1ˆ\K @  e‰y?d @˜=÷›åj @  eŠy?d €˜=×nç” @  e‹y?d À˜=âXæ @  eŒy?d ™=2jè @  ey?d @™=l0î @  eŽy?d €™=Læ2 @  ey?d À™=ߊ©ó @  ey?d š=BÎ 2 @  e‘y?d @š=„ݰ @  e’y?d €š=¤(²í @  e“y?d Àš=‘³y @  e”y?d ›=AV?‘ @  e•y?d @›=ç²>§ @  e– y?d €›=ÇG @  e®8y?d ˜¡=j»æÀ @  e¯9y?d Ø¡=ù×}# @  e°:y?d ¢=d“Ýâ @  e±;y?d X¢=¢€dà @  e²y?d £=^Ì7” @  eµ ?y?d X£=x#³ @  e¶ @y?d ˜£=(!M @  e· Ay?d Ø£=@„N @  e¸ By?d ¤=wA @  e¹ Cy?d X¤=ÉÎ` @  eº Dy?d ˜¤=éèÌž @  e» Ey?d ؤ=ÜÞÍ  @  e¼ Fy?d ¥= –Aâ @  e½ Gy?d X¥=R•ä @  e¾ Hy?d ˜¥=r` @  e¿ Iy?d Ø¥=^ £Û @  eÀ Jy?d ¦=ÃI @  eÁ Ky?d X¦=Zº; @  e Ly?d ˜¦=%¯¸Å @  eà My?d ئ=™¹Q @  eÄ Ny?d §=ÀÑ5¹ @  eÅ Oy?d X§=û‚ S @  eÆ Py?d ˜§=Ûw­ @  eÇ Qy?d ا=庪® @  eÈ Ry?d ¨=ÑE&³ @  eÉ Sy?d X¨=VŸ’ @  eÊ Ty?d ˜¨=7£l @  eË Uy?d ب=•œø @  eÌ Vy?d ©=ÒÝ @  eÍ Wy?d X©=ŒÞJ @  eÎ Xy?d ˜©=¬+Hè @  eÏ Yy?d Ø©=?GÓ  @  eÐ Zy?d ª=¢sÊ @  eÑ [y?d Xª=dÊë @  eÒ \y?d ˜ª=DåÈ @  eÓ ]y?d ت=qÓÉ @  eÔ ^y?d «=¡›Ei @  eÕ _y?d X«=D_ @  eÖ `y?d ˜«='ŠF¡ @  e× ay?d Ø«=G㢠@  eØ by?d ¬= ­ @  eÙ cy?d X¬=Æ©Œ @  eÚ dy?d ˜¬=æï«r @  eÛ ey?d ج=ÓÙªæ @  eÜ fy?d ­=‘& @  eÝ gy?d X­=]’| @  eÞ hy?d ˜­=}g~ö @  eß iy?d Ø­=ÿ Â¥ @  eà jy?d ®=bIbd @  eá ky?d X®=¤ZÛE @  eâ ly?d€ ˜®=Eè.» @  f my?d Ø®=‘Ÿg @  f ny?d ¯=A×ëî @  f oy?d X¯=¿Í(é @  f py?d ˜¯=Ÿ8* @  f qy?d د=oGÐn @  f ry?d °=Ñ™lÜ @  f sy?d X°=Ù8Ї @  f ty?d ˜°=ù͈y @  f uy?d ذ= ²r @  f vy?d ±=Ùúþè @  f wy?d X±=B°_ @  f xy?d ˜±=bE]ý @  f yy?d ر=’:§„ @  f zy?d ²=~E @  f {y?d X²=ª~ßþ @  f |y?d ˜²=Š‹Ý @  f }y?d ز=zô'y @  f ~y?d ³=ª¼«‘ @  f y?d X³=$‡É @  f €y?d ˜³=r7 @  f y?d س=ô èN @  f ‚y?d ´=íCA @  f ƒy?d X´=åâý @  f „y?d ˜´=Åÿä @  f …y?d Ø´=5h @  f †y?d µ=å ‰u @  f ‡y?d Xµ=~j(ž @  f ˆy?d ˜µ=^Ÿ*` @  f ‰y?d ص=®àÐ @  f Šy?d ¶=3¤pØ @  f ‹y?d X¶=‡¢Ó @  f Œy?d ˜¶=§W- @  f! y?d ض=W(wT @  f" Žy?d ·=‡`û¼ @  f# y?d X·=yz8» @  f$ y?d ˜·=Y:E @  f% ‘y?d Ø·=©ðÀ< @  f& ’y?d ¸=L! @  f' “y?d X¸=•®ªz @  f( ”y?d ˜¸=µ[¨„ @  f) •y?d ظ=E$Rý @  f* –y?d ¹=•lÞ @  f+ —y?d X¹=&þ @  f, ˜y?d ˜¹=.Ó} @  f- ™y?d ع=Þ¬‡y @  f. šy?d º=Cè'¸ @  f/ ›y?d Xº=æèÿ @  f0 œy?d ˜º=Æýý @  f1 y?d غ=6b„ @  f2 žy?d »=æ*‹l @  f3 Ÿy?d X»=…‡q· @  f4  y?d ˜»=¥rsI @  f5 ¡y?d Ø»=U ‰0 @  f6 ¢y?d ¼=LCz? @  f7 £y?d X¼=Dâœd @  f8 ¤y?d ˜¼=džš @  f9 ¥y?d ؼ=”hdã @  f: ¦y?d ½=D è  @  f; §y?d X½=ßjIà @  f< ¨y?d ˜½=ÿŸK @  f= ©y?d ؽ=à±g @  f> ªy?d ¾=’¤¦ @  f? «y?d X¾=ˆ¥è? @  f@ ¬y?d ˜¾=¨PêÁ @  fA ­y?d ؾ=X/¸ @  fB ®y?d ¿=ˆgœP @  fC ¯y?d X¿=v}_W @  fD °y?d ˜¿=Vˆ]© @uÐÀ=  fE ±y?d Ø¿=Ÿ0{ @  fF²y?d 0À=ûÀ*W @  fG³y?d pÀ=óaÌ  @  fH´y?d °À=Ó”Îò @  fIµy?d ðÀ=#ë4‹ @  fJ¶y?d 0Á=ó£¸c @  fK·y?d pÁ=héˆ @  fL¸y?d °Á=Hv @  fM¹y?d ðÁ=¸cá @  fNºy?d 0Â=%'AÎ @  fO»y?d pÂ=€'™u @  fP¼y?d °Â= Ò›‹ @  fQ½y?d ðÂ=P­aò @  fR¾y?d 0Ã=€åí @  fS¿y?d pÃ=Ð @  fTÀy?d °Ã=3í. @  fUÁy?d ðÃ=Ã’úW @  fVÂy?d 0Ä=ÚÜ X @  fWÃy?d pÄ=Ò}ï @  fXÄy?d °Ä=òˆíý @  fYÅy?d ðÄ=÷„ @  fZÆy?d 0Å=Ò¿›l @  f[Çy?d pÅ=Iõ:‡ @  f\Èy?d °Å=i8y @  f]Éy?d ðÅ=™Â @  f^Êy?d 0Æ=;bÁ @  f_Ëy?d pÆ=°=Ê @  f`Ìy?d °Æ=ÈŸ4 @  faÍy?d ðÆ=`·eM @  fbÎy?d 0Ç=°ÿé¥ @  fcÏy?d pÇ=Nå*¢ @  fdÐy?d °Ç=n(\ @  feÑy?d ðÇ=žoÒ% @  ffÒy?d 0È=ª^8 @  fgÓy?d pÈ=¢1¸c @  fhÔy?d °È=‚ĺ @  fiÕy?d ðÈ=r»@ä @  fjÖy?d 0É=¢óÌ  @  fk×y?d pÉ=9¹mç @  flØy?d °É=Lo @  fmÙy?d ðÉ=é3•` @  fnÚy?d 0Ê=tw5¡ @  foÛy?d pÊ=Ñwí @  fpÜy?d °Ê=ñ‚ïä @  fqÝy?d ðÊ=ý @  frÞy?d 0Ë=ѵ™u @  fsßy?d pË=²c® @  ftày?d °Ë=’íaP @  fuáy?d ðË=b’›) @  fvây?d 0Ì={Üh& @  fwãy?d pÌ=s}Ž} @  fxäy?d °Ì=SˆŒƒ @  fyåy?d ðÌ=£÷vú @  fzæy?d 0Í=s¿ú @  f{çy?d pÍ=èõ[ù @  f|èy?d °Í=ÈY @  f}éy?d ðÍ=8£~ @  f~êy?d 0Î=¥;¿ @  fëy?d pÎ=\lÊ @  f€ìy?d °Î=|™Èé @  fíy?d ðÎ=Œæ2 @  f‚îy?d 0Ï=\®¾x @  fƒïy?d pÏ=¢´} @  f„ðy?d °Ï=‚A @  f…ñy?d ðÏ=r>…ø @  f†òy?d 0Ð=Ìà9J @  f‡óy?d pÐ=ÄAß @  fˆôy?d °Ð=ä´Ýï @  f‰õy?d ðÐ=Ë'– @  fŠöy?d 0Ñ=ă«~ @  f‹÷y?d pÑ=_É • @  fŒøy?d °Ñ=<k @  fùy?d ðÑ=Cò @  fŽúy?d 0Ò=RÓ @  fûy?d pÒ=·Šh @  füy?d °Ò=—òˆ– @  f‘ýy?d ðÒ=grï @  f’þy?d 0Ó=·Åþ @  f“ÿy?d pÓ=ô»%v @  f”z?d °Ó=ÔN'ˆ @  f•z?d ðÓ=$1Ýñ @  f–z?d 0Ô==.þ @  f—z?d pÔ=5ÞÈ¥ @  f˜z?d °Ô=+Ê[ @  f™z?d ðÔ=åT0" @  fšz?d 0Õ=5¼Ê @  f›z?d pÕ=®V! @  fœz?d °Õ=Ž£ß @  f z?d ðÕ=~Üå¦ @  fž z?d 0Ö=ã˜Eg @  fŸ z?d pÖ=Wžºl @  f  z?d °Ö=wk¸’ @  f¡ z?d ðÖ=‡Bë @  f¢z?d 0×=W\Î @  f£z?d p×=©F  @  f¤z?d °×=‰³ú @  f¥z?d ð×=yÌõƒ @  f¦z?d 0Ø=M3yž @  f§z?d pØ=E’ŸÅ @  f¨z?d °Ø=eg; @  f©z?d ðØ=•gB @  fªz?d 0Ù=EPëª @  f«z?d pÙ=ÞJA @  f¬z?d °Ù=þïH¿ @  f­z?d ðÙ=²Æ @  f®z?d 0Ú=“Ô @  f¯z?d pÚ=6Ôʼ @  f°z?d °Ú=!ÈB @  f±z?d ðÚ=æ^2; @  f²z?d 0Û=6¾Ó @  f³z?d pÛ=U»D @  f´ z?d °Û=uNFö @  fµ!z?d ðÛ=…1¼ @  f¶"z?d 0Ü=œO€ @  f·#z?d pÜ=”Þ©Û @  f¸$z?d °Ü=´+«% @  f¹%z?d ðÜ=DTQ\ @  fº&z?d 0Ý=”Ý´ @  f»'z?d pÝ=V|_ @  f¼(z?d °Ý=/£~¡ @  f½)z?d ðÝ=ßÜ„Ø @  f¾*z?d 0Þ=B˜$ @  f¿+z?d pÞ=X™Ý€ @  fÀ,z?d °Þ=xlß~ @  fÁ-z?d ðÞ=ˆ% @  fÂ.z?d 0ß=X[©ï @  fÃ/z?d pß=¦Ajè @  fÄ0z?d uÐà=/°ß=†´h @  fÅ1z?d ðß= Ká @  fÆ€2z?d Hà=ï¿å @  fÇ€3z?d ˆà=¸*Lž @  fÈ€4z?d Èà=:»[@ @  fÉ€5z?d á=˜: @  fÊ€6z?d Há=Œ-Ñ @  fË€7z?d ˆá=#¢™ @  fÌ€8z?d Èá=¡3ŽÄ @  fÍ€9z?d â=N™Ã¢ @  f΀:z?d Hâ=ÌÔ| @  fÏ€;z?d ˆâ=Ëlç @  fЀz?d Hã=iÊx¨ @  fÓ€?z?d ˆã=XS‚B @  fÔ€@z?d Èã=Ú•œ @  fÕ€Az?d ä=±b‹4 @  fÖ€Bz?d Hä=3óœê @  f×€Cz?d ˆä=™6o‘ @  fØ€Dz?d Èä=§xO @  fÙ€Ez?d å=¹ @  fÚ€Fz?d Hå=;Þ @  fÛ€Gz?d ˆå=¾º @  fÜ€Hz?d Èå=€/­Ë @  fÝ€Iz?d æ=o…à­ @  fÞ€Jz?d Hæ=í÷s @  f߀Kz?d ˆæ=ûvX @  fà€Lz?d Èæ=yç † @  fá€Mz?d ç=ÛAkÉ @  fâ€Nz?d€ Hç=-`± @  g€Oz?d ˆç=,þ¿ @  g€Pz?d Èç=½éa @  g€Qz?d è=‘ås6 @  g€Rz?d Hè=tdè @  g€Sz?d ˆè=wÈé @  g€Tz?d Èè=õ’ß7 @  g€Uz?d é=™†á @  g€Vz?d Hé=öÜ @  g €Wz?d ˆé=çp¹ú @  g €Xz?d Èé=eá®$ @  g €Yz?d ê=O¯ @  g €Zz?d Hê=Í“q @  g €[z?d ˆê=©ä£p @  g€\z?d Èê=+u´® @  g€]z?d ë=êÀ´{ @  g€^z?d Hë=hQ£¥ @  g€_z?d ˆë=lÑ·³ @  g€`z?d Èë=î@ m @  g€az?d ì=@©E( @  g€bz?d Hì=Â8Rö @  g€cz?d ˆì=¦Oþ÷ @  g€dz?d Èì=$Þé) @  g€ez?d í=HÊ× @  g€fz?d Hí=Ê[À @  g€gz?d ˆí=6<ä @  g€hz?d Èí=´­˜: @  g€iz?d î=žN.± @  g€jz?d Hî=ß9o @  g€kz?d ˆî=x¨•n @  g€lz?d Èî=ú9‚° @  g€mz?d ï=*Š¥Õ @  g €nz?d Hï=¨²  @  g!€oz?d ˆï=1,ŸÁ @  g"€pz?d Èï=³½ˆ @  g#€qz?d ð=ºÄ"ç @  g$€rz?d Hð=8U59 @  g%€sz?d ˆð=\"™8 @  g&€tz?d Èð=Þ³Žæ @  g'€uz?d ñ=²§°Ó @  g(€vz?d Hñ=06§  @  g)€wz?d ˆñ=ÌQè+ @  g*€xz?d Èñ=NÀÿõ @  g+€yz?d ò=d#I~ @  g,€zz?d Hò=æ²^  @  g-€{z?d ˆò=‚Åò¡ @  g.€|z?d Èò=Tå @  g/€}z?d ó=Ááåª @  g0€~z?d Hó=Cpòt @  g1€z?d ˆó=ªf§á @  g2€€z?d Èó=(÷°? @  g3€z?d ô=†Uz @  g4€‚z?d Hô=B¤ @  g5€ƒz?d ˆô=`øî¥ @  g6€„z?d Èô=âiù{ @  g7€…z?d õ=Ž}ÇN @  g8€†z?d Hõ= ìÐ @  g9€‡z?d ˆõ=ð‹Ÿ¶ @  g:€ˆz?d Èõ=rˆh @  g;€‰z?d ö=Xù>ã @  g<€Šz?d Hö=Úh)= @  g=€‹z?d ˆö=¾…< @  g>€Œz?d Èö=<Ž’â @  g?€z?d ÷=B:³ @  g@€Žz?d H÷=À«¤Ë @  gA€z?d ˆ÷=Yœ‰ @  gB€z?d È÷=Û žß @  gC€‘z?d ø=XUˆ @  gD€’z?d Hø=ÚÄV @  gE€“z?d ˆø=¾³¿W @  gF€”z?d Èø=<"¨‰ @  gG€•z?d ù=P6–¼ @  gH€–z?d Hù=Ò§b @  gI€—z?d ˆù=.ÀÎD @  gJ€˜z?d Èù=¬QÙš @  gK€™z?d ú=†²o @  gL€šz?d Hú=#xÏ @  gM€›z?d ˆú=`TÔÎ @  gN€œz?d Èú=âÅà @  gO€z?d û=#pÃÅ @  gP€žz?d Hû=¡áÔ @  gQ€Ÿz?d ˆû=¥aÀ  @  gR€ z?d Èû='ð×Ó @  gS€¡z?d ü=‰2– @  gT€¢z?d Hü= ˆ%H @  gU€£z?d ˆü=oÿ‰I @  gV€¤z?d Èü=ínž— @  gW€¥z?d ý=z ¢ @  gX€¦z?d Hý=ë·| @  gY€§z?d ˆý=ÿŒøZ @  gZ€¨z?d Èý=}ï„ @  g[€©z?d þ=WþY @  g\€ªz?d Hþ=ÕoNÑ @  g]€«z?d ˆþ=±âÐ @  g^€¬z?d Èþ=3‰õ @  g_€­z?d ÿ=ã:Òk @  g`€®z?d Hÿ=a«Åµ @  ga€¯z?d ˆÿ=øœè @  gb€uÐ>°z?d Èÿ=>JP @  gc ±z?d >U @  gd ²z?d `>‹ @  ge ³z?d  >kúµŠ @  gf ´z?d à>ék¢T @  gg µz?d >…œa @  gh ¶z?d `>î‹¿ @  gi ·z?d  >û‰Ä™ @  gj ¸z?d à>yÓG @  gk ¹z?d >SûeÌ @  gl ºz?d `>Ñjr @  gm »z?d  >Nså @  gn¼z?d à>ÌâòÍ @  go½z?d > Wò @  gp¾z?d `>ÆåÆ @  gq¿z?d  >{äÁ @  grÀz?d à>ù‡ó @  gsÁz?d >WnZ @  gtÂz?d `>Õÿ„ @  guÃz?d  >±ˆ­… @  gvÄz?d à>3º[ @  gwÅz?d >_ „n @  gxÆz?d `>Ýœ“° @  gyÇz?d  >!ûÜ– @  gzÈz?d à>£jËH @  g{Éz?d >‰‰}à @  g|Êz?d `> j @  g}Ëz?d  >ooÆ @  g~Ìz?d à>íþÑ @  gÍz?d >pÀ @  g€Îz?d `>ò×Ú @  gÏz?d  >kºú @  g‚Ðz?d à>é+íÎ @  gƒÑz?d >jsw™ @  g„Òz?d `>èâ`G @  g…Óz?d  >Œ•ÌF @  g†Ôz?d à>Û˜ @  g‡Õz?d >bå­ @  gˆÖz?d ` >àòs @  g‰×z?d   >æ½U @  gŠØz?d à >žwª‹ @  g‹Ùz?d >´” @  gŒÚz?d ` >6 Þ @  gÛz?d   >Rr§ß @  gŽÜz?d à >Ðã° @  gÝz?d >V°Ô @  gÞz?d ` >“ǧ  @  g‘ßz?d   >—G³ @  g’àz?d à >֤ @  g“áz?d >»?A‡ @  g”âz?d ` >9®VY @  g•ãz?d   >]ÙúX @  g–äz?d à >ßHí† @  g—åz?d >³\Ó³ @  g˜æz?d ` >1ÍÄm @  g™çz?d   >ͪ‹K @  gšèz?d à >O;œ• @  g›éz?d >eØ* @  gœêz?d `>çI=À @  gëz?d  >ƒ>‘Á @  gžìz?d à>¯† @  gŸíz?d >Ñ¡z @  g îz?d `>S¶¤ @  g¡ïz?d  >ʺ›n @  g¢ðz?d à>H+Œ° @  g£ñz?d >AR&H @  g¤òz?d `>ÃÃ1– @  g¥óz?d  >§´— @  g¦ôz?d à>%%ŠI @  g§õz?d >I1´| @  g¨öz?d `>Ë £¢ @  g©÷z?d  >7Çì„ @  gªøz?d à>µVûZ @  g«ùz?d >ŸµMÑ @  g¬úz?d `>$Z @  g­ûz?d  >ySö @  g®üz?d à>ûÂáÐ @  g¯ýz?d >:wá @  g°þz?d `>¸æöÛ @  g±ÿz?d  >.—öB @  g²{?d à>¬áœ @  g³{?d >ïÙ @  g´{?d `>€~ @  gµ{?d  >ä ¿ @  g¶{?d à>f˜¨Ø @  g·{?d > Œ–í @  g¸{?d `>ˆ3 @  g¹{?d  >tzÎ @  gº{?d à>öëÙË @  g» {?d >Üo@ @  g¼ {?d `>^™xž @  g½ {?d  >:îÔŸ @  g¾ {?d à>¸ÃA @  g¿ {?d >ÆËâ¶ @  gÀ{?d `>DZõh @  gÁ{?d  >ÝmØ¢ @  gÂ{?d à>_üÏ| @  gÃ{?d >ܤU+ @  gÄ{?d `>^5Bõ @  gÅ{?d  >:Bîô @  gÆ{?d à>¸Óù* @  gÇ{?d >ÔÇÇ @  gÈ{?d `>VVÐÁ @  gÉ{?d  >ª1Ÿç @  gÊ{?d à>( ˆ9 @  gË{?d >C>² @  gÌ{?d `>€Ò)l @  gÍ{?d  >䥅m @  gÎ{?d à>f4’³ @  gÏ{?d >§’f @  gÐ{?d `>%…¸ @  gÑ{?d  >!‘® @  gÒ {?d à>£†p @  gÓ!{?d > èc5 @  gÔ"{?d `>ytë @  gÕ#{?d  >ëØê @  gÖ${?d à>iŸÏ4 @  g×%{?d >‹ñ @  gØ&{?d `>‡æß @  gÙ'{?d  >{}©ù @  gÚ({?d à>ùì¾' @  gÛ){?d >Ó¬ @  gÜ*{?d `>Qžr @  gÝ+{?d  >5é³s @  gÞ,{?d à>·x¤­ @  gß-{?d >g˃È @  gà.{?d `>åZ” @  gá/{?d  >|m¹ÜuÐ > @  gâ0{?d€ à>ÖfºP @  h1{?d 8 >ñ‹:U @  h2{?d x >s-‹ @  h3{?d ¸ >Ò$zg @  h4{?d ø >Pµm¹ @  h5{?d 8!>ò ö @  h6{?d x!>p‚( @  h7{?d ¸!>BW t @  h8{?d ø!>Àƪ @  h 9{?d 8">/lQÌ @  h :{?d x">­ýF @  h ;{?d ¸"> Ãþ @  h <{?d ø">ŽR  @  h ={?d 8#>,ôgo @  h>{?d x#>®ep± @  h?{?d ¸#>9¦, @  h@{?d ø#>»7ò @  hA{?d 8$>ЗZ @  hB{?d x$>R„ @  hC{?d ¸$>ó8Yh @  hD{?d ø$>q©N¶ @  hE{?d 8%>Ó/ù @  hF{?d x%>Qž8' @  hG{?d ¸%>cK({ @  hH{?d ø%>áÚ?¥ @  hI{?d 8&>prà @  hJ{?d x&>Œáe @  hK{?d ¸&>-ß2ñ @  hL{?d ø&>¯N%/ @  hM{?d 8'> èD` @  hN{?d x'>yS¾ @  hO{?d ¸'>d[8^ @  h P{?d ø'>æÊ/€ @  h!Q{?d 8(> ÛN: @  h"R{?d x(>"JYä @  h#S{?d ¸(>ƒt @  h$T{?d ø(>åÖ @  h%U{?d 8)>£Cx™ @  h&V{?d x)>!ÒoG @  h'W{?d ¸)> @  h(X{?d ø)>‘–hÅ @  h)Y{?d 8*>~<%£ @  h*Z{?d x*>ü­2} @  h+[{?d ¸*>]“e‘ @  h,\{?d ø*>ßrO @  h-]{?d 8+>}¤ @  h.^{?d x+>ÿ5Þ @  h/_{?d ¸+>˜¦qR @  h0`{?d ø+>7fŒ @  h1a{?d 8,>q—x$ @  h2b{?d x,>óoú @  h3c{?d ¸,>R88 @  h4d{?d ø,>Щ/È @  h5e{?d 8->rN‡ @  h6f{?d x->ðžYY @  h7g{?d ¸->ÂKI @  h8h{?d ø->@Ú^Û @  h9i{?d 8.>¯p½ @  h:j{?d x.>-ác @  h;k{?d ¸.>ŒßS @  h<l{?d ø.>NDQ @  h=m{?d 8/>¬è% @  h>n{?d x/>.y2À @  h?o{?d ¸/>k\_² @  h@p{?d ø/>éÍHl @  hAq{?d 80>%ýy @  hBr{?d x0>§l§ @  hCs{?d ¸0>RYK @  hDt{?d ø0>„ÃN• @  hEu{?d 81>&e/Ú @  hFv{?d x1>¤ô8 @  hGw{?d ¸1>–!(X @  hHx{?d ø1>°?† @  hIy{?d 82>ûrà @  hJz{?d x2>y‹e> @  hK{{?d ¸2>ص2Ò @  hL|{?d ø2>Z$%  @  hM}{?d 83>ø‚DC @  hN~{?d x3>zS @  hO{?d ¸3>ðg’ @  hP€{?d ø3>r‡pL @  hQ{?d 84>'nä @  hR‚{?d x4>›¶y: @  hSƒ{?d ¸4>:ˆ.Ö @  hT„{?d ø4>¸9 @  hU…{?d 85>¿XG @  hV†{?d x5>˜.O™ @  hW‡{?d ¸5>ªû_Å @  hXˆ{?d ø5>(jH @  hY‰{?d 86>ÇÀ} @  hZŠ{?d x6>EQ£ @  h[‹{?d ¸6>äoEO @  h\Œ{?d ø6>fþR‘ @  h]{?d 87>ÄX3Þ @  h^Ž{?d x7>FÉ$ @  h_{?d ¸7>­ëOà @  h`{?d ø7>/zX> @  ha‘{?d 88>ik9„ @  hb’{?d x8>ëú.Z @  hc“{?d ¸8>JÄy¶ @  hd”{?d ø8>ÈUnh @  he•{?d 89>jó' @  hf–{?d x9>èbù @  hg—{?d ¸9>Ú·¥ @  hh˜{?d ø9>X&{ @  hi™{?d 8:>·ŒR @  hjš{?d x:>5Eà @  hk›{?d ¸:>”#/ @  hlœ{?d ø:>²ñ @  hm{?d 8;>´d¾ @  hnž{?d x;>6…s` @  hoŸ{?d ¸;>Qì @  hp {?d ø;>Ó‡2 @  hq¡{?d 8<>¸'š @  hr¢{?d x<>:¶D @  hs£{?d ¸<>›ˆO¨ @  ht¤{?d ø<>Xv @  hu¥{?d 8=>»¿99 @  hv¦{?d x=>9..ç @  hw§{?d ¸=> û>» @  hx¨{?d ø=>‰j)e @  hy©{?d 8>>fÀd @  hzª{?d x>>äQsÝ @  h{«{?d ¸>>Eo$1 @  h|¬{?d ø>>Çþ3ï @  h}­{?d 8?>eXR  @  h~®{?d x?>çÉE~ @  h¯{?duÐ@>7 ¸?>Aº= @  h€°{?d ø?>‚è6 @  h±{?d P@>°À¿­ @  h‚²{?d @>5½S @  hƒ³{?d Ð@>“oÿŸ @  h„´{?d A>C'sw @  h…µ{?d PA>³X‰ @  h†¶{?d A>“­‹ð @  h‡·{?d ÐA>ŽŒ @  hˆ¸{?d B>žX.M @  h‰¹{?d PB>n'Ô4 @  hŠº{?d B>NÒÖÊ @  h‹»{?d ÐB>Mˆ” @  hŒ¼{?d C>Àî @  h½{?d PC>m¿â— @  h޾{?d C>MJài @  h¿{?d ÐC>xí•Ô @  hÀ{?d D>a£fÛ @  h‘Á{?d PD>‘Üœ¢ @  h’Â{?d D>±)ž\ @  h“Ã{?d ÐD>²sÜ @  h”Ä{?d E>b;Px @  h•Å{?d PE>’Dª @  h–Æ{?d E>²±¨ÿ @  h—Ç{?d ÐE>"­ƒ @  h˜È{?d F>¿D B @  h™É{?d PF>O;÷; @  hšÊ{?d F>oÎõÅ @  h›Ë{?d ÐF>l”·  @  hœÌ{?d G>¼Ü;á @  hÍ{?d PG>L£Á˜ @  hžÎ{?d G>lVÃf @  hŸÏ{?d ÐG>%½¦ @  h Ð{?d H>ï1» @  h¡Ñ{?d PH>áË @  h¢Ò{?d H>ÁeÉ< @  h£Ó{?d ÐH>Â?‹ð @  h¤Ô{?d I>w @  h¥Õ{?d PI>âýa @  h¦Ö{?d I>ÂýÿŸ @  h§×{?d ÐI>RLúã @  h¨Ø{?d J>ÏZ" @  h©Ù{?d PJ>?w [ @  hªÚ{?d J>‚¢¥ @  h«Û{?d ÐJ>Øài @  h¬Ü{?d K>Ìl @  h­Ý{?d PK><ï–ø @  h®Þ{?d K>” @  h¯ß{?d ÐK>Ùíôª @  h°à{?d L>À£¥ @  h±á{?d PL>0ÜýÜ @  h²â{?d L>)ÿ" @  h³ã{?d ÐL>s½î @  h´ä{?d M>Ã;1 @  hµå{?d PM>3DË @  h¶æ{?d M>±É @  h·ç{?d ÐM>ƒÌý @  h¸è{?d N>Dl< @  h¹é{?d PN>î;–E @  hºê{?d N>ÎΔ» @  h»ë{?d ÐN>Í”Öw @  h¼ì{?d O>ÜZŸ @  h½í{?d PO>í£ æ @  h¾î{?d O>ÍV¢ @  h¿ï{?d ÐO>*ÚJ @  hÀð{?d P>”Éfø @  hÁñ{?d PP>d¶œ @  hÂò{?d P>DCž @  hÃó{?d ÐP>Gܳ @  hÄô{?d Q>—QP[ @  hÅõ{?d PQ>g.ª" @  hÆö{?d Q>GÛ¨Ü @  hÇ÷{?d ÐQ>×j­  @  hÈø{?d R>J. a @  hÉù{?d PR>ºQ÷ @  hÊú{?d R>š¤õæ @  hËû{?d ÐR>™þ·* @  hÌü{?d S>I¶; @  hÍý{?d PS>¹ÉÁ» @  hÎþ{?d S>™<ÃE @  hÏÿ{?d ÐS>ò3ˆð @  hÐ|?d T>ë}{ÿ @  hÑ|?d PT>† @  hÒ|?d T>;÷ƒx @  hÓ|?d ÐT>8­Á´ @  hÔ|?d U>èåM\ @  hÕ|?d PU>š·% @  hÖ|?d U>8oµÛ @  h×|?d ÐU>¨Þ°§ @  hØ|?d V>5šf @  hÙ |?d PV>Ååê @  hÚ |?d V>åèá @  hÛ |?d ÐV>æJª- @  hÜ |?d W>6&Å @  hÝ |?d PW>Æ}ܼ @  hÞ|?d W>æˆÞB @  hß|?d ÐW>¯Î ‚ @  hà|?d X>›1,Ÿ @  há|?d PX>kNÖæ @  hâ|?d€ X>?xȾ @  i|?d ÐX>ÝcÂ[ @  i|?d Y> +N³ @  i|?d PY>8O' @  i|?d Y>èMÙ @  i|?d ÐY>Fëß @  i|?d Z>Û¯· @  i|?d PZ>åb @  i|?d Z>Å—ã @  i |?d ÐZ>„©Â @  i |?d [>ÓÌ%* @  i |?d P[>æú$¾ @  i |?d [>Æ&@ @  i |?d Ð[>`ë'v @  i |?d \>y¥Ôy @  i!|?d P\>êÉOš @  i"|?d \>Ê /ôE @  i$|?d ]>Ügx­ @  i%|?d P]>éQy9 @  i&|?d ]>ɤ{Ç @  i'|?d Ð]>—§!Á @  i(|?d ^> ã @  i)|?d P^>4.$ @  i*|?d ^>Û&ý @  i+|?d Ð^>ÒÈŸÜ @  i,|?d _>€4 @  i-|?d P_>7¶  @  i.|?d _>C^ @  iuÐ`>/|?d Ð_>×ôa @  i 0|?d (`>«/Aù @  i 1|?d h`>)Eýª @  i 2|?d ¨`> °ÿT @  i! 3|?d è`>Ï£Fu @  i" 4|?d (a>ëÊ @  i# 5|?d ha>*ÝË  @  i$ 6|?d ¨a> (É÷ @  i% 7|?d èa>T+“ñ @  i& 8|?d (b>Éo30 @  i' 9|?d hb>÷¢–3 @  i( :|?d ¨b>×W”Í @  i) ;|?d èb>D-ì @  i* <|?d (c>Á ¡ @  i+ =|?d hc>ô:  @  i, >|?d ¨c>ÔÏ¢n @  i- ?|?d èc>‚{¶I @  i. @|?d (d>›5EF @  i/ A|?d hd>YÞ¥ @  i0 B|?d ¨d>(¬Ü[ @  i1 C|?d èd>î¿ez @  i2 D|?d (e>>÷é’ @  i3 E|?d he> Áè @  i4 F|?d ¨e>+4êø @  i5 G|?d èe>u7°þ @  i6 H|?d (f>ès? @  i7 I|?d hf>Ö¾µ< @  i8 J|?d ¨f>öK·Â @  i9 K|?d èf>0Xã @  i: L|?d (g>à‚  @  i; M|?d hg>Õ&ƒŸ @  i< N|?d ¨g>õÓa @  i= O|?d èg>΀¹‹ @  i> P|?d (h>ú5– @  i? Q|?d hh>ÖW @  i@ R|?d ¨h>öç© @  iA S|?d èh>0ô4ˆ @  iB T|?d (i>༸` @  iC U|?d hi>ÕŠ¹ô @  iD V|?d ¨i>õ»  @  iE W|?d èi>«|á  @  iF X|?d (j>68AÍ @  iG Y|?d hj>õäÎ @  iH Z|?d ¨j>(æ0 @  iI [|?d èj>î_ @  iJ \|?d (k>>[Óù @  iK ]|?d hk> mÒm @  iL ^|?d ¨k>+˜Ð“ @  iM _|?d èk>|Ñ¥ @  iN `|?d (l>”2"ª @  iO a|?d hl>^¹I @  iP b|?d ¨l>'«»· @  iQ c|?d èl>Ḗ @  iR d|?d (m>1ðŽ~ @  iS e|?d hm>Æê @  iT f|?d ¨m>$3 @  iU g|?d èm>z0× @  iV h|?d (n>çtwÓ @  iW i|?d hn>Ù¹ÒÐ @  iX j|?d ¨n>ùLÐ. @  iY k|?d èn>?_i @  iZ l|?d (o>ïåç @  i[ m|?d ho>Ú!äs @  i\ n|?d ¨o>úÔæ @  i] o|?d èo>Á‡Þg @  i^ p|?d (p>YbÕ @  i_ q|?d hp>ý3Þ† @  i` r|?d ¨p>ÝÆÜx @  ia s|?d èp>ÕeY @  ib t|?d (q>Ëé± @  ic u|?d hq>þ«è% @  id v|?d ¨q>Þ^êÛ @  ie w|?d èq>€]°Ý @  if x|?d (r> @  ig y|?d hr>#Ôµ @  ih z|?d ¨r>!·á @  ii {|?d èr>Å2À @  ij ||?d (s>z‚( @  ik }|?d hs> Lƒ¼ @  il ~|?d ¨s>¹B @  im |?d ès>KËÁ÷ @  in €|?d (t>R…2ø @  io |?d ht>Áé© @  ip ‚|?d ¨t>á«å @  iq ƒ|?d èt>'Ä @  ir „|?d (u>÷Gž, @  is …|?d hu>ÂqŸ¸ @  it †|?d ¨u>â„F @  iu ‡|?d èu>¼‡Ç@ @  iv ˆ|?d (v>!Ãg @  iw ‰|?d hv>‚ @  ix Š|?d ¨v>?ûÀ| @  iy ‹|?d èv>ùèy] @  iz Œ|?d (w>) õµ @  i{ |?d hw>–ô! @  i| Ž|?d ¨w>0Î5 @  i~ |?d (x>3ÏB( @  i ‘|?d hx>üôÈØ @  i€ ’|?d ¨x>ÜÊ& @  i “|?d èx>s @  i‚ ”|?d (y>ÊZÿï @  iƒ •|?d hy>ÿlþ{ @  i„ –|?d ¨y>ß™ü… @  i… —|?d èy>š¦ƒ @  i† ˜|?d (z>ÞB @  i‡ ™|?d hz>"£A @  iˆ š|?d ¨z>æ¡¿ @  i‰ ›|?d èz>Äõž @  iŠ œ|?d ({>½”v @  i‹ |?d h{>!‹•â @  iŒ ž|?d ¨{>~— @  i Ÿ|?d è{>§š–* @  iŽ  |?d (|>¾Ôe% @  i ¡|?d h|>-¸þÆ @  i ¢|?d ¨|> Mü8 @  i‘ £|?d è|>Ë^E @  i’ ¤|?d (}>Éñ @  i“ ¥|?d h}>. Èe @  i” ¦|?d ¨}>ÕÊ› @  i• §|?d è}>PÖ @  i– ¨|?d (~>Í’0\ @  i— ©|?d h~>ó_•_ @  i˜ ª|?d ¨~>Óª—¡ @  i™ «|?d è~>¹.€ @  iš ¬|?d (>Åñ¢h @  i› ­|?d h>ðÇ£ü @  iœ ®|?d ¨>uЀ>'Ð2¡ @  i ¯|?d è>ëa™è @  iž °|?d @€>…ß{œ @  iŸ ±|?d €€>¥ÑÒï @  i  ²|?d À€>'@Å1 @  i¡ ³|?d >³Šç& @  i¢ ´|?d @>1ðø @  i£ µ|?d €>¦IäL @  i¤ ¶|?d À>$Øó’ @  i¥ ·|?d ‚>e‹ @  i¦ ¸|?d @‚>çŸ U @  i§ ¹|?d €‚>{6¹v @  i¨ º|?d À‚>ù§®¨ @  i© »|?d ƒ>mmŒ¿ @  iª ¼|?d @ƒ>ïü›a @  i« ½|?d €ƒ>x®Õ @  i¬ ¾|?d Àƒ>ú?˜  @  i­ ¿|?d „>7Thý @  i® À|?d @„>µÅ# @  i¯ Á|?d €„>„Íñà @  i° Â|?d À„>\æ> @  i± Ã|?d …>’–Ä) @  i² Ä|?d @…>Ó÷ @  i³ Å|?d €…>‡UÇC @  i´ Æ|?d À…>ÄÐ @  iµ Ç|?d †>D=„ @  i¶ È|?d @†>ƃ*Z @  i· É|?d €†>Z*šy @  i¸ Ê|?d À†>Ø»§ @  i¹ Ë|?d ‡>Lq¯° @  iº Ì|?d @‡>Îà¸n @  i» Í|?d €‡>Y²¬Ú @  i¼ Î|?d À‡>Û#» @  i½ Ï|?d ˆ>V- @  i¾ Ð|?d @ˆ>Ôó @  i¿ Ñ|?d €ˆ>Z†  @  iÀ Ò|?d Àˆ>Ø·Ì @  iÁ Ó|?d ‰>LÝ•Û @  i Ô|?d @‰>ÎL‚ @  ià Õ|?d €‰>Y–± @  iÄ Ö|?d À‰>Ûo @  iÅ ×|?d Š>šYlv @  iÆ Ø|?d @Š>È{¨ @  iÇ Ù|?d €Š>„aË‹ @  iÈ Ú|?d ÀŠ>ðÜU @  iÉ Û|?d ‹>’:þB @  iÊ Ü|?d @‹>«éœ @  iË Ý|?d €‹>‡ùý( @  iÌ Þ|?d À‹>hêö @  iÍ ß|?d Œ>8S @  iÎ à|?d @Œ>ºÂÏ @  iÏ á|?d €Œ>‹Ê–  @  iÐ â|?d ÀŒ> [Ò @  iÑ ã|?d >‘£Å @  iÒ ä|?d @>´ @  iÓ å|?d €>ˆR ¯ @  iÔ æ|?d À> ÷q @  iÕ ç|?d Ž>KZh @  iÖ è|?d @Ž>É„M¶ @  i× é|?d €Ž>U-ý• @  iØ ê|?d ÀŽ>×¼êK @  iÙ ë|?d >CvÈ\ @  iÚ ì|?d @>Áçß‚ @  iÛ í|?d €>VµË6 @  iÜ î|?d À>Ô$Üè @  iÝ ï|?d >Ó8On @  iÞ ð|?d @>Q©X° @  iß ñ|?d €>q§ñà @  ià ò|?d À>ó6æ @  iá ó|?d ‘>güÄ  @  iâ ô|?d€ @‘>$*$Ô @  j õ|?d €‘>R9xI @  j ö|?d À‘>Шo— @  j ÷|?d ’>T7yc @  j ø|?d @’>Ö¦n½ @  j ù|?d €’>„½ä @  j ú|?d À’>,–: @  j û|?d “>\TëW @  j ü|?d @“>ÞÅü‰ @  j ý|?d €“>ŒÞÐ @  j þ|?d À“>O @  j ÿ|?d ”>dÌ‹ @  j }?d @”>æ]U @  j }?d €”>´Fö  @  j }?d À”>6×áÒ @  j }?d •>Á¢_ @  j }?d @•>CŸµ @  j }?d €•>„ZØ @  j }?d À•>“M @  j }?d –>Š[ò @  j }?d @–>•L, @  j  }?d €–>Ç£u @  j  }?d À–>E‘´« @  j  }?d —>éÉÆ @  j  }?d @—>xÞ @  j  }?d €—>Ïc1A @  j }?d À—>Mò&Ÿ @  j }?d ˜>†~[ @  j }?d @˜>‡i… @  j }?d €˜>Õ †Ü @  j }?d À˜>W‘ @  j }?d ™>±Bõ? @  j }?d @™>3Óâá @  j! }?d €™>aÈ ¸ @  j" }?d À™>ãYf @  j# }?d š>gÆ ’ @  j$ }?d @š>åWL @  j% }?d €š>·Lô @  j& }?d Àš>5ÝãË @  j' }?d ›>o¥ž¦ @  j( }?d @›>í4‰x @  j) }?d €›>¿/f! @  j* }?d À›>=¾qÿ @  j+ }?d œ>ÅÌoõ @  j,  }?d @œ>G]x+ @  j- !}?d €œ>F—r @  j. "}?d Àœ>—×€¬ @  j/ #}?d >`Ã! @  j0 $}?d @>âŸÔÿ @  j1 %}?d €>°„;¦ @  j2 &}?d À>2,x @  j3 '}?d ž>¶Š:Œ @  j4 (}?d @ž>4-R @  j5 )}?d €ž>f  @  j6 *}?d Àž>ä‘ÕÕ @  j7 +}?d Ÿ>¾é¨¸ @  j8 ,}?d @Ÿ>ncP? @  j: .}uР>?d ÀŸ>ìòGá @  j; /}?d  >ص‘‹ @  j<0}?d X >Z$†U @  j=1}?d ˜ >?i  @  j>2}?d Ø >Š®~Ò @  j?3}?d ¡>Âv} @  j@4}?d X¡>@ç £ @  jA5}?d ˜¡>üäú @  jB6}?d Ø¡>mó$ @  jC7}?d ¢>òåÐ @  jD8}?d X¢>–cò @  jE9}?d ˜¢>ÄxW @  jF:}?d Ø¢>Fé ‰ @  jG;}?d £>‘wä @  jH<}?d X£>ž`: @  jI=}?d ˜£>Ìc @  jJ>}?d Ø£>NŠ˜½ @  jK?}?d ¤>F¨“¦ @  jL@}?d X¤>Ä9„x @  jMA}?d ˜¤>–"k! @  jNB}?d ؤ>³|ÿ @  jOC}?d ¥>ãj?r @  jPD}?d X¥>aû(¬ @  jQE}?d ˜¥>3àÇõ @  jRF}?d Ø¥>±qÐ+ @  jSG}?d ¦>5îÆß @  jTH}?d X¦>·Ñ @  jUI}?d ˜¦>åd>X @  jVJ}?d ئ>gõ)† @  jWK}?d §>=Të @  jXL}?d X§>¿C5 @  jYM}?d ˜§>í¬l @  jZN}?d ا>o–»² @  j[O}?d ¨>'âãv @  j\P}?d X¨>¥sô¨ @  j]Q}?d ˜¨>÷hñ @  j^R}?d ب>uù / @  j_S}?d ©>“&h @  j`T}?d X©>·Ì @  jaU}?d ˜©>C¬• @  jbV}?d Ø©>Á=‡K @  jcW}?d ª>E¢‘¿ @  jdX}?d Xª>Ç3†a @  jeY}?d ˜ª>•(i8 @  jfZ}?d ت>¹~æ @  jg[}?d «>MÁ‹ @  jh\}?d X«>ÏPU @  ji]}?d ˜«>Kû  @  jj^}?d Ø«>ÚìÒ @  jk_}?d ¬>ç¨òØ @  jl`}?d X¬>e9å @  jma}?d ˜¬>7" _ @  jnb}?d ج>µ³ @  joc}?d ­>Bj^  @  jpd}?d X­>ÀûIÒ @  jqe}?d ˜­>’ঋ @  jrf}?d Ø­>q±U @  jsg}?d ®>”î§¡ @  jth}?d X®>° @  jui}?d ˜®>Dd_& @  jvj}?d Ø®>ÆõHø @  jwk}?d ¯>œ5• @  jxl}?d X¯>"K @  jym}?d ˜¯>LÍ @  jzn}?d د>ΖÚÌ @  j{o}?d °> ò§ @  j|p}?d X°>ŽR¥y @  j}q}?d ˜°>ÜIJ  @  j~r}?d ذ>^Ø]þ @  js}?d ±>õV` @  j€t}?d X±>wǾ @  ju}?d ˜±>%Ü÷ç @  j‚v}?d ر>§Mà9 @  jƒw}?d ²>#ÒöÍ @  j„x}?d X²>¡Cá @  j…y}?d ˜²>óXJ @  j†z}?d ز>qÉ” @  j‡{}?d ³>+±dù @  jˆ|}?d X³>© s' @  j‰}}?d ˜³>û;œ~ @  jŠ~}?d س>yª‹  @  j‹}?d ´>lNÔ) @  jŒ€}?d X´>îßÃ÷ @  j}?d ˜´>¼Ä,® @  jŽ‚}?d Ø´>>U;p @  jƒ}?d µ>ÉŒxý @  j„}?d Xµ>Ko# @  j‘…}?d ˜µ>€z @  j’†}?d ص>›——¤ @  j“‡}?d ¶>P @  j”ˆ}?d X¶>™–Ž @  j•‰}?d ˜¶>Ï‚y× @  j–Š}?d ض>0“u @  j—€‹}?d ·>jë` @  j˜€Œ}?d X·>èzwÆ @  j™€}?d ˜·>ºa˜Ÿ @  jš€Ž}?d Ø·>8ðA @  j›€}?d ¸>p„×… @  jœ€}?d X¸>òÀ[ @  j€‘}?d ˜¸> / @  jž€’}?d ظ>"Ÿ8Ü @  jŸ€“}?d ¹>Ä@\á @  j €”}?d X¹>FÑK? @  j¡€•}?d ˜¹>ʤf @  j¢€–}?d ع>–[³¸ @  j£€—}?d º>Ä¥L @  j¤€˜}?d Xº>U²’ @  j¥€™}?d ˜º>ÂN]Ë @  j¦€š}?d غ>@ßJ @  j§€›}?d »>§7x @  j¨€œ}?d X»>˜6 ¦ @  j©€}?d ˜»>Ê-Ïÿ @  jª€ž}?d Ø»>H¼Ø! @  j«€Ÿ}?d ¼>°ÎÆ+ @  j¬€ }?d X¼>2_Ñõ @  j­€¡}?d ˜¼>`D>¬ @  j®€¢}?d ؼ>âÕ)r @  j¯€£}?d ½> jÿ @  j°€¤}?d X½>—}! @  j±€¥}?d ˜½>ņ’x @  j²€¦}?d ؽ>G…¦ @  j³€§}?d ¾>È“R @  j´€¨}?d X¾>A„Œ @  jµ€©}?d ˜¾>kÕ @  j¶€ª}?d ؾ>‘“|  @  j·€«}?d ¿>Ëëf @  j¸€¬}?d X¿>Iz¸ @  j¹€­}?d ˜¿>aùá @uÐÀ>  jº€®}?d Ø¿>äpC @  j»¯}?d 0À>ü È @  j¼°}?d pÀ>~š @  j½±}?d °À>,àO @  j¾²}?d ðÀ>®÷‘ @  j¿³}?d 0Á>æÈ•> @  jÀ´}?d pÁ>dY‚à @  jÁµ}?d °Á>6Bm¹ @  j¶}?d ðÁ>´Ózg @  j÷}?d 0Â>0Ll“ @  jĸ}?d pÂ>²Ý{M @  jŹ}?d °Â>àÆ” @  jƺ}?d ðÂ>bWƒÊ @  jÇ»}?d 0Ã>8/þ§ @  jȼ}?d pÃ>º¾éy @  jɽ}?d °Ã>è¥  @  jʾ}?d ðÃ>j4þ @  jË¿}?d 0Ä>bå @  jÌÀ}?d pÄ>à‡ ; @  jÍÁ}?d °Ä>²œâb @  jÎÂ}?d ðÄ>0 õ¼ @  jÏÃ}?d 0Å>ÇÔ¶1 @  jÐÄ}?d pÅ>EE¡ï @  jÑÅ}?d °Å>^N¶ @  jÒÆ}?d ðÅ>•ÏYh @  jÓÇ}?d 0Æ>POœ @  jÔÈ}?d pÆ>“ÁXB @  jÕÉ}?d °Æ>ÁÚ· @  jÖÊ}?d ðÆ>CK Å @  j×Ë}?d 0Ç>3ݨ @  jØÌ}?d pÇ>›¢Êv @  jÙÍ}?d °Ç>ɹ%/ @  jÚÎ}?d ðÇ>K(2ñ @  jÛÏ}?d 0È>\j5 @  jÜÐ}?d pÈ>Í}ë @  jÝÑ}?d °È>ÓÖ’² @  jÞÒ}?d ðÈ>QG…l @  jßÓ}?d 0É>·˜áQ @  jàÔ}?d pÉ>5 ö @  jáÕ}?d °É>gÖ @  jâÖ}?d€ ðÉ>‘@® @  k×}?d 0Ê>ôžLs @  kØ}?d pÊ>v[­ @  kÙ}?d °Ê>á]O @  kÚ}?d ðÊ>cÌXÇ @  kÛ}?d 0Ë>÷zÐ @  kÜ}?d pË>u—m @  kÝ}?d °Ë>é>Ý- @  kÞ}?d ðË>k¯Êó @  k ß}?d 0Ì>V”/ @  k à}?d pÌ>Ô8Ê @  k á}?d °Ì>CW,~ @  k â}?d ðÌ>ÁÆ;  @  k ã}?d 0Í>U · @  kä}?d pÍ>×i @  kå}?d °Í>æ•€ª @  kæ}?d ðÍ>d—t @  kç}?d 0Î>%Òzm @  kè}?d pÎ>§Cm³ @  ké}?d °Î>0y @  kê}?d ðÎ>²€nÙ @  kë}?d 0Ï>&JLÎ @  kì}?d pÏ>¤Û[ @  kí}?d °Ï>8rë3 @  kî}?d ðÏ>ºãüí @  kï}?d 0Ð>½ÿok @  kð}?d pÐ>?nxµ @  kñ}?d °Ð>¨*­{ß @  kó}?d 0Ñ>¾gYÈ @  kô}?d pÑ><öN @  kõ}?d °Ñ>øçe @  k ö}?d ðÑ>žið» @  k!÷}?d 0Ò>ß¿¢ @  k"ø}?d pÒ>]. | @  k#ù}?d °Ò>Ê|È @  k$ú}?d ðÒ>Hí  @  k%û}?d 0Ó>Ü'+ @  k&ü}?d pÓ>^¶<ß @  k'ý}?d °Ó>ÂŒü @  k(þ}?d ðÓ>@Ž›" @  k)ÿ}?d 0Ô>]f_o @  k*~?d pÔ>ß÷H± @  k+~?d °Ô>H¥\ @  k,~?d ðÔ>Ê4KÛ @  k-~?d 0Õ>^þiÌ @  k.~?d pÕ>Üo~ @  k/~?d °Õ>ígðÑ @  k0~?d ðÕ>oöç @  k1~?d 0Ö>.  @  k2~?d pÖ>¬±È @  k3 ~?d °Ö>;ã | @  k4 ~?d ðÖ>¹r¢ @  k5 ~?d 0×>-¸<µ @  k6 ~?d p×>¯)+k @  k7 ~?d °×>3€›H @  k8~?d ð×>±Œ– @  k9~?d 0Ø><,/¿ @  k:~?d pØ>¾½8a @  k;~?d °Ø>)ï,Õ @  k<~?d ðØ>«~;  @  k=~?d 0Ù>?´ @  k>~?d pÙ>½% @  k?~?d °Ù>3,¡# @  k@~?d ðÙ>±½¶ý @  kA~?d 0Ú>ðk[ä @  kB~?d pÚ>rúL: @  kC~?d °Ú>å¨XŽ @  kD~?d ðÚ>g9OP @  kE~?d 0Û>óómG @  kF~?d pÛ>qbz™ @  kG~?d °Û>íËʺ @  kH~?d ðÛ>oZÝd @  kI~?d 0Ü>Ra8ƒ @  kJ ~?d pÜ>Ðð/] @  kK!~?d °Ü>G¢;é @  kL"~?d ðÜ>Å3,7 @  kM#~?d 0Ý>Qù  @  kN$~?d pÝ>Óhþ @  kO%~?d °Ý>â`—= @  kP&~?d ðÝ>`ñ€ã @  kQ'~?d 0Þ>!'mú @  kR(~?d pÞ>£¶z$ @  kS)~?d °Þ>4än @  kT*~?d ðÞ>¶uyN @  kU+~?d 0ß>"¿[Y @  kV,~?d pß> .L‡ @  kW-~?d uÐà>/°ß><‡ü¤ @  kX.~?d ðß>¾ëz @  kY/~?d Hà>pš¸ @  kZ0~?d ˆà>>…˜F @  k[1~?d Èà> ³™Ò @  k\2~?d á>Ûû: @  k]3~?d Há>è¬ @  k^4~?d ˆá>=®å @  k_5~?d Èá>¿w¶ @  k`6~?d â>"3²w @  ka7~?d Hâ>|0èq @  kb8~?d ˆâ>\Åê @  kc9~?d Èâ>ióë @  kd:~?d ã>¹»gó @  ke;~?d Hã>¨ÞÒ @  kf<~?d ˆã>_]Ü, @  kg=~?d Èã>ay/ @  kh>~?d ä>xÞŠ  @  ki?~?d Hä>.jž @  kj@~?d ˆä>Ÿœù @  kkA~?d Èä>;©m @  klB~?d å>ëá… @  kmC~?d Hå>-ò¨¤ @  knD~?d ˆå> ªZ @  koE~?d Èå>žk1¹ @  kpF~?d æ>/‘x @  kqG~?d Hæ>],Ë~ @  krH~?d ˆæ>}ÙÉ€ @  ksI~?d Èæ>HïÈ @  ktJ~?d ç>˜§Dü @  kuK~?d Hç>^´ýÝ @  kvL~?d ˆç>~Aÿ# @  kwM~?d Èç>@ŒZ  @  kxN~?d è>tsÖ= @  kyO~?d Hè>O î× @  kzP~?d ˆè>oÕì) @  k{Q~?d Èè>Zãí½ @  k|R~?d é>Š«aU @  k}S~?d Hé>L¸Øt @  k~T~?d ˆé>lMÚŠ @  kU~?d Èé>£vPz @  k€V~?d ê>>2ð» @  kW~?d Hê>`1ª½ @  k‚X~?d ˆê>@ĨC @  kƒY~?d Èê>uò©× @  k„Z~?d ë>¥º%? @  k…[~?d Hë>c©œ @  k†\~?d ˆë>C\žà @  k‡]~?d Èë>}‘;ã @  kˆ^~?d ì>dßÈì @  k‰_~?d Hì>Â;ÉÚ @  kŠ`~?d ˆì>âÎË$ @  k‹a~?d Èì>×øÊ° @  kŒb~?d í>°FX @  kc~?d Hí>Á£ÿy @  kŽd~?d ˆí>áVý‡ @  ke~?d Èí>r:fd @  kf~?d î>ï~Æ¥ @  k‘g~?d Hî>±}œ£ @  k’h~?d ˆî>‘ˆž] @  k“i~?d Èî>¤¾ŸÉ @  k”j~?d ï>tö! @  k•k~?d Hï>²åª @  k–l~?d ˆï>’¨þ @  k—m~?d Èï>¬Ý ý @  k˜n~?d ð>±O @  k™o~?d Hð>)P‰¥ @  kšp~?d ˆð> ¥‹[ @  k›q~?d Èð><“ŠÏ @  kœr~?d ñ>ìÛ' @  ks~?d Hñ>*È¿ @  kžt~?d ˆñ> =½ø @  kŸu~?d Èñ>ˆW« @  k v~?d ò>¡j @  k¡w~?d Hò>Kûl @  k¢x~?d ˆò>kåù’ @  k£y~?d Èò>^Óø @  k¤z~?d ó>Ž›tî @  k¥{~?d Hó>HˆÍÏ @  k¦|~?d ˆó>h}Ï1 @  k§}~?d Èó>V°j2 @  k¨~~?d ô>Oþ™= @  k©~?d Hô>ŒÙˆ @  kª€~?d ˆô>$yÛv @  k«~?d Èô>OÚâ @  k¬‚~?d õ>ÁV  @  k­ƒ~?d Hõ>ï+ @  k®„~?d ˆõ>'áíÕ @  k¯…~?d Èõ>´v6 @  k°†~?d ö>)ÉÖ÷ @  k±‡~?d Hö>wÊŒñ @  k²ˆ~?d ˆö>W?Ž @  k³‰~?d Èö>b › @  k´Š~?d ÷>²As @  kµ‹~?d H÷>tRºR @  k¶Œ~?d ˆ÷>T§¸¬ @  k·~?d È÷>jj¯ @  k¸Ž~?d ø>^•‘² @  k¹~?d Hø>eÆ©X @  kº~?d ˆø>E3«¦ @  k»‘~?d Èø>pª2 @  k¼’~?d ù> M&Ú @  k½“~?d Hù>f^Ÿû @  k¾”~?d ˆù>F« @  k¿•~?d Èù>jÆ'Ä @  kÀ–~?d ú>÷‚‡ @  kÁ—~?d Hú>©Ý @  k˜~?d ˆú>‰tßý @  kÙ~?d Èú>¼BÞi @  kÄš~?d û>l R @  kÅ›~?d Hû>ªë  @  kÆœ~?d ˆû>Šìé^ @  kÇ~?d Èû>´!L] @  kÈž~?d ü>­o¿R @  kÉŸ~?d Hü> ‹¾d @  kÊ ~?d ˆü>+~¼š @  kË¡~?d Èü>H½ @  kÌ¢~?d ý>Î1æ @  kÍ£~?d Hý>ˆÇ @  kΤ~?d ˆý>(æŠ9 @  kÏ¥~?d Èý>»ŠÚ @  kЦ~?d þ>&α @  kѧ~?d Hþ>xÍë @  kÒ¨~?d ˆþ>X8éã @  kÓ©~?d Èþ>mèw @  kÔª~?d ÿ>½FdŸ @  kÕ«~?d Hÿ>{Uݾ @  kÖ¬~?d ˆÿ>[ ß@ @  k×uÐ?­~?d Èÿ>í ? @  kØ€®~?d ?WY!Î @  kÙ€¯~?d `?l $ @  kÚ€°~?d  ?LÿÚ @  kÛ€±~?d à?yÉN @  kÜ€²~?d ?©–¦ @  kÝ€³~?d `?o’/‡ @  kÞ€´~?d  ?Og-y @  k߀µ~?d à?Í ‘* @  kà€¶~?d ?PI1ë @  k့~?d `?Jkí @  k‸~?d€  ?¨éÁª @  l€¹~?d à?|žˆ @  l€º~?d ?¬Öÿ @  l€»~?d `?¯ŒF3 @  l€¼~?d  ?yDÍ @  l€½~?d à?¾´ @  l€¾~?d ?fHM» @  l€¿~?d `?þNæ @  l€À~?d  ?Þ» @  l €Á~?d à?.Äþa @  l €Â~?d ?þŒr‰ @  l €Ã~?d `?ýÖ0E @  l €Ä~?d  ?Ý#2» @  l €Å~?d à?-\È @  l€Æ~?d ?°h @  l€Ç~?d `?SŸ @  l€È~?d  ?­ýQa @  l€É~?d à?]‚« @  l€Ê~?d ?Ê'ð @  l€Ë~?d `?Že< @  l€Ì~?d  ?®eg @  l€Í~?d à?^» @  l€Î~?d ?jå¦ @  l€Ï~?d `?Ÿv6 @  l€Ð~?d  ?¿ñtÈ @  l€Ñ~?d à?OŽŽ± @  l€Ò~?d ?ŸÆY @  l€Ó~?d ` ?œœ@• @  l€Ô~?d   ?¼iBk @  l€Õ~?d à ?L¸ @  l€Ö~?d ?ÑRÓ @  l€×~?d ` ?ýDÿ @  l €Ø~?d   ?ݱ @  l!€Ù~?d à ?-Îüx @  l"€Ú~?d ?ý†p @  l#€Û~?d ` ?þÜ2\ @  l$€Ü~?d   ?Þ)0¢ @  l%€Ý~?d à ?.VÊÛ @  l&€Þ~?d ?79Ô @  l'€ß~?d ` ?_Ng˜ @  l(€à~?d   ?»ef @  l)€á~?d à ?ÄŸ @  l*€â~?d ?_Œ÷ @  l+€ã~?d ` ?\ÖQ; @  l,€ä~?d   ?|#SÅ @  l-€å~?d à ?Œ\©¼ @  l.€æ~?d ? } @  l/€ç~?d `?,2á @  l0€è~?d  ? ý0 @  l1€é~?d à?ü‚Êf @  l2€ê~?d ?,ÊFŽ @  l3€ë~?d `?/B @  l4€ì~?d  ?e¼ @  l5€í~?d à?ÿüÅ @  l6€î~?d ?AÄ@w @  l7€ï~?d `?´%'ç @  l8€ð~?d  ?”Ð% @  l9€ñ~?d à?d¯ß` @  l:€ò~?d ?´çSˆ @  l;€ó~?d `?·½D @  l<€ô~?d  ?—Hº @  l=€õ~?d à?g7éà @  l>€ö~?d ?úsI @  l?€÷~?d `?xbS¼ @  l@€ø~?d  ?X—QB @  lA€ù~?d à?¨è«; @  lB€ú~?d ?x 'Ó @  lC€û~?d `?{úe @  lD€ü~?d  ?[gá @  lE€ý~?d à?«p˜ @  lF€þ~?d ?²>n— @  lG€ÿ~?d `?H™$T @  lH€?d  ?hl&ª @  lI€?d à?˜ÜÓ @  lJ€?d ?H[P; @  lK€?d `?K÷ @  lL€?d  ?kô  @  lM€?d à?›‹êp @  lN€?d ?ÏJ± @  lO€?d `?;ßq- @  lP€?d  ?*sÓ @  lQ€ ?d à?ëU‰ª @  lR€ ?d ?;B @  lS€ ?d `?8GGŽ @  lT€ ?d  ?²Ep @  lU€ ?d à?èÍ¿  @  lV€?d ?Ü23 @  lW€?d `?)ÓT„ @  lX€?d  ? &Vz @  lY€?d à?ùY¬ @  lZ€?d ?) ë @  l[€?d `?*Kb' @  l\€?d  ? ¾`Ù @  l]€?d à?úÁš  @  l^€?d ?g…:a @  l_€?d `?K“&M @  l`€?d  ?kf$³ @  la€?d à?›ÞÊ @  lb€?d ?KQR" @  lc€?d `?H î @  ld€?d  ?hþ @  le€?d à?˜èi @  lf€?d ?Ïf @  lg€?d `?é™E* @  lh€ ?d  ?ÉlGÔ @  li€!?d à?9½­ @  lj€"?d ?é[1E @  lk€#?d `?ês‰ @  ll€$?d  ?Êôqw @  lm€%?d à?:‹‹ @  ln€&?d ?§Ï+Ï @  lo€'?d `?šßS @  lp€(?d  ?º*­ @  lq€)?d à?JUèÔ @  lr€*?d ?šd< @  ls€+?d `?™G&ð @  lt€,?d  ?¹²$uÐ ? @  lu€-?d à? ŠqÞ @  lv .?d 8 ?|¯¸ @  lw /?d x ?‰`È( @  lx 0?d ¸ ?©•ÊÖ @  ly 1?d ø ?Yê0¯ @  lz 2?d 8!?‰¢¼G @  l{ 3?d x!?οQ" @  l|€4?d ¸!?îJSÜ @  l}€5?d ø!?5©¥ @  l~€6?d 8"?ƒq d @  l€7?d x"?â6#ë @  l€€8?d ¸"?ÂÃ! @  l€9?d ø"?2¼Ûl @  l‚€:?d 8#?âôW„ @  lƒ€;?d x#?á®H @  l„€<?d ¸#?Á[¶ @  l…€=?d ø#?1$íÏ @  l†€>?d 8$?(jÀ @  l‡€??d x$?°lU @  lˆ€@?d ¸$?™Wc @  l‰€A?d ø$?`æ­ @  lŠ€B?d 8%?°®!ò @  l‹€C?d x%?³ôc> @  lŒ€D?d ¸%?“aÀ @  l€E?d ø%?c~›¹ @  lŽ€F?d 8&?þ:;x @  l€G?d x&?Ã*ä @  l€H?d ¸&?ãß @  l‘€I?d ø&? øc @  l’€J?d 8'?Ãèt‹ @  l“€K?d x'?À²6G @  l”€L?d ¸'?àG4¹ @  l•€M?d ø'?8ÎÀ @  l–€N?d 8(?$ÇBÝ @  l—€O?d x(?Ñ&%M @  l˜€P?d ¸(?ñÓ'³ @  l™€Q?d ø(?¬ÝÊ @  lš€R?d 8)?ÑäQ" @  l›€S?d x)?Ò¾î @  lœ€T?d ¸)?òK @  l€U?d ø)?4ëi @  lž€V?d 8*?ŸpK¨ @  lŸ€W?d x*?³fW„ @  l €X?d ¸*?““Uz @  l¡€Y?d ø*?cì¯ @  l¢€Z?d 8+?³¤#ë @  l£€[?d x+?°þa' @  l¤€\?d ¸+? cÙ @  l¥€]?d ø+?`t™  @  l¦€^?d 8,?y:j¯ @  l§€_?d x,?l4ã @  l¨€`?d ¸,?1™6 @  l©€a?d ø,?ÁæÌd @  lª€b?d 8-?®@Œ @  l«€c?d x-?ô@ @  l¬€d?d ¸-?2¾ @  l­€e?d ø-?Â~úÇ @  l®€f?d 8.?_:Z @  l¯€g?d x.?b*aš @  l°€h?d ¸.?Bßcd @  l±€i?d ø.?² ™ @  l²€j?d 8/?bèõ @  l³€k?d x/?a²W9 @  l´€l?d ¸/?AGUÇ @  lµ€m?d ø/?±8¯¾ @  l¶€n?d 80?æ  @  l·€o?d x0?útœ @  l¸€p?d ¸0?Úòvb @  l¹€q?d ø0?*Œ @  lº€r?d 81?úÅó @  l»€s?d x1?ùŸB? @  l¼€t?d ¸1?Ùj@Á @  l½€u?d ø1?)º¸ @  l¾€v?d 82?´Qy @  l¿€w?d x2?6@Ç @  lÀ€x?d ¸2?µ9 @  lÁ€y?d ø2?æÊø@ @  l€z?d 83?6‚t¨ @  lÀ{?d x3?5Ø6d @  lÄ€|?d ¸3?-4š @  lÅ€}?d ø3?åRÎã @  lÆ€~?d 84?ü=ì @  lÇ€?d x4?yÜ"# @  lÈ€€?d ¸4?Y) Ý @  lÉ€?d ø4?©VÚ¤ @  lÊ€‚?d 85?yVL @  lË€ƒ?d x5?zD€ @  lÌ€„?d ¸5?Z±~ @  lÍ€…?d ø5?ªÎì @  l΀†?d 86?7ŠLÆ @  lÏ€‡?d x6? šwZ @  lЀˆ?d ¸6?*ou¤ @  lÑ€‰?d ø6?ÚÝ @  lÒ€Š?d 87? X5 @  lÓ€‹?d x7? Aù @  lÔ€Œ?d ¸7?)÷C @  lÕ€?d ø7?Ùˆ¹~ @  lÖ€Ž?d 88?íw5c @  l×€?d x8?–Ró @  lØ€?d ¸8?8cP  @  lÙ€‘?d ø8?Ȫt @  lÚ€’?d 89?T&œ @  lÛ€“?d x9?dP @  lÜ€”?d ¸9?;ûf® @  lÝ€•?d ø9?Ë„œ× @  lÞ€–?d 8:?VÀ< @  l߀—?d x:?zÖ : @  là€˜?d ¸:?Z#"Ä @  lမ?d ø:?ª\ؽ @  l‚?d€ 8;?×Hó @  m€›?d x;?ìÌB @  m€œ?d ¸;?Ì9@è @  m€?d ø;?ùA| @  m€ž?d 8?ÆA‚Ú @  m €§?d x>?˜BØÜ @  m€¨?d ¸>?¸·Ú" @  m€©?d ø>?+ÛAÁ @  m€ª?d 8??û“Í) @  m€«?d x??=€t @  m€¬?duÐ@?7 ¸??uvö @  m€­?d ø??—jãË @  m®?d P@?¯¨b÷ @  m ¯?d @?6ŸO= @  m °?d Ð@?´Xã @  m ±?d A?ØfÖ @  m ²?d PA?Z‹q @  m ³?d A?>üÝ  @  m ´?d ÐA?¼mÊ× @  m µ?d B?–Ž|\ @  m ¶?d PB?k‚ @  m ·?d B?èx$¤ @  m ¸?d ÐB?.®œÓ @  m€¹?d C?þ»¶ @  m €º?d PC?|Œ¬h @  m!€»?d C?ûi @  m"€¼?d ÐC?šj· @  m#€½?d D?4ƒòò @  m$€¾?d PD?¶å, @  m%€¿?d D?BÂä+ @  m&€À?d ÐD?ÀSóõ @  m'€Á?d E?¬GÍÀ @  m(€Â?d PE?.ÖÚ @  m)€Ã?d E?J¡v @  m*€Ä?d ÐE?È0aÁ @  m+€Å?d F?âÓ×J @  m,€Æ?d PF?`BÀ” @  m-€Ç?d F?œ%² @  m.€È?d ÐF?´˜l @  m/€É?d G?ߘ¹ @  m0€Ê?d PG?]g @  m1€Ë?d G?9ç#f @  m2€Ì?d ÐG?»v4¸ @  m3€Í?d H?8.®ï @  m4€Î?d PH?º¿¹1 @  m5€Ï?d H?#ˆ”û @  m6€Ð?d ÐH?¡ƒ% @  m7€Ñ?d I?Í ½ @  m8€Ò?d PI?OœªÎ @  m9€Ó?d I?+ëÏ @  m:€Ô?d ÐI?©z @  m;€Õ?d J?ƒ™§š @  m<€Ö?d PJ?°D @  m=€×?d J?ýoÿb @  m>€Ø?d ÐJ?þè¼ @  m?€Ù?d K?JÉK @  m@€Ú?d PK?ƒÛÞ• @  mA€Û?d K?ç¬r” @  mB€Ü?d ÐK?e=eJ @  mC€Ý?d L?ËÔ€ @  mD€Þ?d PL?IE—Ñ @  mE€ß?d L?MŃÇ @  mF€à?d ÐL?ÏT” @  mG€á?d M?£@ª, @  mH€â?d PM?!ѽò @  mI€ã?d M?E¦ó @  mJ€ä?d ÐM?Ç7- @  mK€å?d N?íÔ°¦ @  mL€æ?d PN?oE§x @  mM€ç?d N?“"è^ @  mN€è?d ÐN?³ÿ€ @  mO€é?d O?ÐÿU @  mP€ê?d PO?R—è‹ @  mQ€ë?d O?6àDŠ @  mR€ì?d ÐO?´qST @  mS€í?d P?½ù¬ @  mT€î?d PP??™îr @  mU€ï?d P?¦®Ã¸ @  mV€ð?d ÐP?$?Ôf @  mW€ñ?d Q?H+êS @  mX€ò?d PQ?ʺý @  mY€ó?d Q?®ÍQŒ @  mZ€ô?d ÐQ?,\FR @  m[€õ?d R?¿ðÙ @  m\€ö?d PR?„.ç @  m]€÷?d R?xI¨! @  m^€ø?d ÐR?úØ¿ÿ @  m_€ù?d S?*k˜š @  m`€ú?d PS?¨úD @  ma€û?d S?Ì#E @  mb€ü?d ÐS?N4› @  mc€ý?d T?àõÑÞ @  md€þ?d PT?bdÆ @  me€ÿ?d T?Fç@ð @  mf€€?d ÐT?ÄvW. @  mg€€?d U?¨bi @  mh€€?d PU?*ó~Å @  mi€€?d U?N„ÒÄ @  mj€€?d ÐU?ÌÅ @  mk€€?d V?æös‘ @  ml€€?d PV?dgdO @  mm€€?d V?˜+i @  mn€€?d ÐV?‘<· @  mo€ €?d W?Û$Æ @  mˆ€"€?d P]?Æ¢) @  m‰€#€?d ]?¢Õ… @  mŠ€$€?d Ð]? D’Ç @  m‹€%€?d ^? §$L @  mŒ€&€?d P^?ˆ63’ @  m€'€?d ^?tQ|´ @  mŽ€(€?d Ð^?öÀkj @  m€)€?d _?7uk¿ @  m€*€?d P_?µä|a @  m‘€+€?d _?Ñ“Ð` @  muÐ`?’€,€?d Ð_?.‚´Â @  m“-€?d (`?'Ý @  m”.€?d h`?¥LÎ @  m•/€?d ¨`?<{- @  m–0€?d è`?¾ê:Ú @  m—1€?d (a?Òþï @  m˜2€?d ha?Po1 @  m™3€?d ¨a?4¿0 @  mš4€?d èa?¶‰¨î @  m›5€?d (b?œje @  mœ6€?d hb?û » @  m7€?d ¨b?âœF @  mž8€?d èb?` QC @  mŸ9€?d (c?°¾v& @  m :€?d hc?2/aø @  m¡;€?d ¨c?VXÍù @  m¢<€?d èc?ÔÉÚ' @  m£=€?d (d?z ?b @  m¤>€?d hd?ø±(¼ @  m¥?€?d ¨d? a)» @  m¦@€?d èd?Žð>e @  m§A€?d (e?âäP @  m¨B€?d he?`uŽ @  m©C€?d ¨e?» @  mªD€?d èe?†“¬Q @  m«E€?d (f?¬pÚ @  m¬F€?d hf?.á  @  m­G€?d ¨f?Ò†B" @  m®H€?d èf?PUü @  m¯I€?d (g?‘¢U) @  m°J€?d hg?3B÷ @  m±K€?d ¨g?wDîö @  m²L€?d èg?õÕù( @  m³M€?d (h?vc @  m´N€?d hh?ôt¡ @  mµO€?d ¨h?m+Yk @  m¶P€?d èh?ïºNµ @  m·Q€?d (i?ƒ®p€ @  m¸R€?d hi??g^ @  m¹S€?d ¨i?eHË_ @  mºT€?d èi?çÙÜ @  m»U€?d (j?Í:j  @  m¼V€?d hj?O«}Ô @  m½W€?d ¨j?³Ì2ò @  m¾X€?d èj?1]%, @  m¿Y€?d (k?OéÛ @  mÀZ€?d hk?Íx @  mÁ[€?d ¨k?©¿ @  mÂ\€?d èk?+ž¨Ú @  mÃ]€?d (l?…wMŸ @  mÄ^€?d hl?æZA @  mÅ_€?d ¨l?fNW @  mÆ`€?d èl?÷Y‰ @  mÇa€?d (m?íãg¼ @  mÈb€?d hm?orpb @  mÉc€?d ¨m? Üc @  mÊd€?d èm?‰”˽ @  mËe€?d (n?£w}6 @  mÌf€?d hn?!æjè @  mÍg€?d ¨n?Ý%Î @  mÎh€?d èn?_2 @  mÏi€?d (o?ž¥2Å @  mÐj€?d ho?4% @  mÑk€?d ¨o?xC‰ @  mÒl€?d èo?úÒžÄ @  mÓm€?d (p?ó«4< @  mÔn€?d hp?q:#â @  mÕo€?d ¨p?è ( @  mÖp€?d èp?jœö @  m×q€?d (q?ˆ'à @  mØr€?d hq?„0 @  mÙs€?d ¨q?ànœ @  mÚt€?d èq?bÿ‹Â @  mÛu€?d (r?H=I @  mÜv€?d hr?Ê*— @  mÝw€?d ¨r?6êe± @  mÞx€?d èr?´{ro @  mßy€?d (s?dÈU  @  màz€?d hs?æYBÔ @  má{€?d ¨s?‚.îÕ @  mâ|€?d€ ès?Áø  @  n}€?d (t?ŽP£g @  n~€?d ht? Á´¹ @  n€?d ¨t? žÁ @  n€€?d èt?¢  @  n€?d (u?©lP @  n‚€?d hu?‚8{Ž @  nƒ€?d ¨u?(ýˆõ @  n„€?d èu?ªlŸ+ @  n …€?d (v?EÆÒM @  n †€?d hv?ÇWÅ“ @  n ‡€?d ¨v?þyqX @  n ˆ€?d èv?|èf† @  n ‰€?d (w?ÞNÉ @  nŠ€?d hw?\ß @  n‹€?d ¨w?[»ÝŒ @  nŒ€?d èw?Ù*ÊR @  n€?d (x?Ÿ;«è @  nŽ€?d hx?ª¼6 @  n€?d ¨x?AÔj @  n€?d èx?ÃE}Ï @  n‘€?d (y?a〠@  n’€?d hy?ãr ^ @  n“€?d ¨y?I·ø% @  n”€?d èy?Ë&ïû @  n•€?d (z?$Œ¢ @  n–€?d hz?¦µC @  n—€?d ¨z?Ÿ3ˆ @  n˜€?d èz?¢V @  n™€?d ({?¿w @  nš€?d h{?=•`Ç @  n›€?d ¨{?+÷Šì @  n œ€?d è{?©f2 @  n!€?d (|?ÂÆƒš @  n"ž€?d h|?@W”D @  n#Ÿ€?d ¨|?ž{¿ @  n$ €?d è|?la @  n%¡€?d (}?¡© . @  n&¢€?d h}?#8ð @  n'£€?d ¨}?‰ýé‹ @  n(¤€?d è}? lþU @  n)¥€?d (~?䯳3 @  n*¦€?d h~?fW¤í @  n+§€?d ¨~?_y& @  n,¨€?d è~?Ýèø @  n-©€?d (?Nf· @  n.ª€?d h?ýßqi @  n/«€?d ¨?uЀ?'ú»¼ò @  n0¬€?d è?x*«, @  n1­€?d @€?dz¤ÿ @  n2®€?d €€?D¦ @  n3¯€?d À€?º•e @  n4°€?d ?jÝéî @  n5±€?d @?𢗠@  n6²€?d €?ºWi @  n7³€?d À?²ö÷2 @  n8´€?d ‚?/²Wó @  n9µ€?d @‚?ßÍ­Š @  n:¶€?d €‚?ÿ8¯t @  n;·€?d À‚?drŸ @  n<¸€?d ƒ?´:‚w @  n=¹€?d @ƒ?DEx @  n>º€?d €ƒ?d°zð @  n?»€?d Àƒ?~±ƒi @  n@¼€?d „?gÿpf @  nA½€?d @„?—€Š @  nB¾€?d €„?·uˆá @  nC¿€?d À„?$ˆg+ @  nDÀ€?d …?ôÀëà @  nEÁ€?d @…?¿º @  nF€?d €…?$JD @  nGÀ?d À…?,ëõ @  nHÄ€?d †?±¯UÞ @  nIÅ€?d @†?AЯ§ @  nJÆ€?d €†?a%­Y @  nKÇ€?d À†?úo ² @  nLÈ€?d ‡?*'€Z @  nMÉ€?d @‡?ÚXz# @  nNÊ€?d €‡?ú­xÝ @  nOË€?d À‡?_­ f @  nPÌ€?d ˆ?kR,{ @  nQÍ€?d @ˆ?›-Ö @  nR΀?d €ˆ?»ØÔü @  nSÏ€?d Àˆ?EÂû @  nTЀ?d ‰?•Š› @  nUÑ€?d @‰?eõaj @  nVÒ€?d €‰?Ec” @  nWÓ€?d À‰?M¡…Ï @  nXÔ€?d Š?Ðå% @  nYÕ€?d @Š? šßw @  nZÖ€?d €Š?o݉ @  n[×€?d ÀŠ?›%|b @  n\Ø€?d ‹?KmðŠ @  n]Ù€?d @‹?» ó @  n^Ú€?d €‹?›ç  @  n_Û€?d À‹?/á÷ @  n`Ü€?d Œ?6¯  @  naÝ€?d @Œ?ÆÐþp @  nbÞ€?d €Œ?æ%üŽ @  nc߀?d ÀŒ?…ˆU @  ndà€?d ?UÀн @  neá€?d @?¥¿pÄ @  nfâ€?d €?…Jr: @  ngã€?d À?ë”a @  nhä€?d Ž?¯4  @  niå€?d @Ž?àÐÎÙ @  njæ€?d €Ž?À%Ì' @  nkç€?d ÀŽ?[omÌ @  nlè€?d ?‹'á$ @  nmé€?d @?{X] @  nnê€?d €?[­£ @  noë€?d À?þ­Á @  npì€?d ?@s}ª @  nqí€?d @?° ‡Ó @  nrî€?d €?ù…- @  nsï€?d À?nãF* @  ntð€?d ‘?¾«Ê @  nuñ€?d @‘?NÔ0» @  nvò€?d €‘?n!2E @  nwó€?d À‘?f€Ô @  nxô€?d ’?ûÄtß @  nyõ€?d @’? »Ž¦ @  nzö€?d €’?+NŒX @  n{÷€?d À’?°-³ @  n|ø€?d “?`L¡[ @  n}ù€?d @“?3[" @  n~ú€?d €“?°ÆYÜ @  nû€?d À“?I‘t @  n€ü€?d ”?Pßc{ @  ný€?d @”?  ™ @  n‚þ€?d €”?€U›ü @  nƒÿ€?d À”?q u¨ @  n„?d •?¡Aù@ @  n…?d @•?Q>9 @  n†?d €•?qËÇ @  n‡?d À•?yjçœ @  nˆ?d –?ä.G] @  n‰?d @–?Q½$ @  nŠ?d €–?4¤¿Ú @  n‹?d À–?¯î1 @  nŒ?d —?¦’Ù @  n ?d @—?Ùh  @  nŽ ?d €—?¯,j^ @  n ?d À—? ,²å @  n ?d ˜?>Ó>ø @  n‘ ?d @˜?άÄ @  n’?d €˜?îYÆ @  n“?d À˜?Cx @  n”?d ™?À ‰ @  n•?d @™?0tsé @  n–?d €™?q @  n—?d À™? —L @  n˜?d š?…d7 @  n™?d @š?uÍô @  nš?d €š?UîÏ  @  n›?d Àš?Τná @  nœ?d ›?ìâ  @  n?d @›?î“p @  nž?d €›?ÎfŽ @  nŸ?d À›?z`å… @  n ?d œ?c.Š @  n¡?d @œ?“Qìó @  n¢?d €œ?³¤î  @  n£?d Àœ?Ð Ö @  n¤ ?d ?A˜> @  n¥!?d @?ð>bG @  n¦"?d €?ÐË`¹ @  n§#?d À?Øj†â @  n¨$?d ž?E.&# @  n©%?d @ž?µQÜZ @  nª&?d €ž?•¤Þ¤ @  n«'?d Àž?îO @  n¬(?d Ÿ?Þ¦ó§ @  n­)?d @Ÿ?.Ù Þ @  n®*?d €Ÿ?,  @  n¯+uР??d ÀŸ?«,Ó› @  n°,?d  ?§§~ @  n±€-?d X ?WØ„ø @  n²€.?d ˜ ?w-† @  n³€/?d Ø ?‰7E @  n´€0?d ¡?YÉé @  nµ€1?d X¡?©3 @  n¶€2?d ˜¡?‰õ1n @  n·€3?d Ø¡?T×5 @  n¸€4?d ¢?wô @  n¹€5?d X¢?ìo @  nº€6?d ˜¢?Ìšs @  n»€7?d Ø¢?WÐ.˜ @  n¼€8?d £?‡˜¢p @  n½€9?d X£?wçX  @  n¾€:?d ˜£?WZ÷ @  n¿€;?d Ø£?M£n @  nÀ€<?d ¤?T]Pa @  nÁ€=?d X¤?¤"ª @  n€>?d ˜¤?„רæ @  nÀ??d ؤ?*G, @  nÄ€@?d ¥?ÇbËÄ @  nÅ€A?d X¥?71½ @  nÆ€B?d ˜¥?è3C @  nÇ€C?d Ø¥?IÕ @  nÈ€D?d ¦?‚ uÙ @  nÉ€E?d X¦?rr  @  nÊ€F?d ˜¦?R‡^ @  nË€G?d ئ?ÉÍ,µ @  nÌ€H?d §?… ] @  nÍ€I?d X§?éúZ$ @  n΀J?d ˜§?ÉXÚ @  nÏ€K?d ا?l€a @  nЀL?d ¨?Xð | @  nÑ€M?d X¨?¨ö @  nÒ€N?d ˜¨?ˆzôû @  nÓ€O?d ب?v`7ü @  nÔ€P?d ©?¦(» @  nÕ€Q?d X©?VWAm @  nÖ€R?d ˜©?v¢C“ @  n×€S?d Ø©?~¥È @  nØ€T?d ª?ãG  @  nÙ€U?d Xª?8ÿp @  nÚ€V?d ˜ª?3ÍýŽ @  nÛ€W?d ت?¨‡\e @  nÜ€X?d «?xÏÐ @  nÝ€Y?d X«?ˆ°*ô @  nÞ€Z?d ˜«?¨E(  @  n߀[?d Ø«?C× @  nà€\?d ¬? $ @  ná€]?d X¬?õrÞw @  nâ€^?d€ ˜¬?¡DÀ/ @  o€_?d ج?#¨rÝ @  o€`?d ­?óàþ5 @  o€a?d X­?ÆÖÿ¡ @  o€b?d ˜­?æ#ý_ @  o€c?d Ø­? 0D~ @  o€d?d ®?½tä¿ @  o€e?d X®?ƒ¹A¼ @  o€f?d ˜®?£LCB @  o €g?d Ø®?ýOD @  o €h?d ¯?-•¬ @  o €i?d X¯?1”8 @  o €j?d ˜¯?8Ä–Æ @  o €k?d د?þ×/ç @  o€l?d °?@ “U @  o€m?d X°?Óe¶ @  o€n?d ˜°?ó H @  o€o?d ذ?ÈÃ2¢ @  o€p?d ±?‹¾J @  o€q?d X±?-½¿Þ @  o€r?d ˜±? H½  @  o€s?d ر?Ë[ @  o€t?d ²?V¤À @  o€u?d X²?hÒà @  o€v?d ˜²?H'= @  o€w?d ز?$Y; @  o€x?d ³?ÆlÕÓ @  o€y?d X³?óZÔG @  o€z?d ˜³?Ó¯Ö¹ @  o€{?d س?¼o˜ @  o€|?d ´? òœ— @  o€}?d X´?Ž˜ Ä @  o €~?d ˜´?®m": @  o!€?d Ø´?åb @  o"€€?d µ?5Wîg @  o#€?d Xµ?aïó @  o$€‚?d ˜µ? ”í  @  o%€ƒ?d ص?æ‡T, @  o&€„?d ¶?{Ãôí @  o'€…?d X¶?EQî @  o(€†?d ˜¶?eûS @  o)€‡?d ض?;ø  @  o*€ˆ?d ·?ë°…þ @  o+€‰?d X·?Þ†„j @  o,€Š?d ˜·?þs†” @  o-€‹?d Ø·?8`?µ @  o.€Œ?d ¸? Ÿ³¨ @  o/€?d X¸?Ÿó(K @  o0€Ž?d ˜¸?¿*µ @  o1€?d ظ?„U_ @  o2€?d ¹?Tž· @  o3€‘?d X¹?a+Ÿ# @  o4€’?d ˜¹?AÞÝ @  o5€“?d ع?‡Í$ü @  o6€”?d º?‰„= @  o7€•?d Xº?$D!> @  o8€–?d ˜º?±#À @  o9€—?d غ?Z²yÆ @  o:€˜?d »?Šúõ. @  o;€™?d X»?¿Ìôº @  o<€š?d ˜»?Ÿ9öD @  o=€›?d Ø»?Y*Oe @  o>€œ?d ¼?@d¼j @  o?€?d X¼?l « @  o@€ž?d ˜¼?LüU @  oA€Ÿ?d ؼ?êc @  oB€ ?d ½?:P‰‹ @  oC€¡?d X½?fˆ @  oD€¢?d ˜½?/“Šá @  oE€£?d ؽ?é€3À @  oF€¤?d ¾?tÄ“ @  oG€¥?d X¾?J 6 @  oH€¦?d ˜¾?jü4ü @  oI€§?d ؾ?4ÿnú @  oJ€¨?d ¿?ä·â @  oK€©?d X¿?Ñㆠ@  oL€ª?d ˜¿?ñtáx @uÐÀ?  oM€«?d Ø¿?Jç+% @  oN¬?d 0À?.zw @  oO­?d pÀ?½{á” @  oP®?d °À?Žãj @  oQ¯?d ðÀ?¦ÝÛ€ @  oR°?d 0Á?v•Wh @  oS±?d pÁ?C£Vü @  oT²?d °Á?cVT @  oU³?d ðÁ?¥Eí# @  oV´?d 0Â?8Mâ @  oWµ?d pÂ?Ìèá @  oX¶?d °Â?&9ê @  oY·?d ðÂ?x:° @  oZ¸?d 0Ã?¨r<ñ @  o[¹?d pÃ?D=e @  o\º?d °Ã?½±?› @  o]»?d ðÃ?{¢†º @  o^¼?d 0Ä?bìuµ @  o_½?d pÄ?à†Éæ @  o`¾?d °Ä?ÀsË @  oa¿?d ðÄ?–Çß? @  obÀ?d 0Å?FS× @  ocÁ?d pÅ?s¹RC @  odÂ?d °Å?SLP½ @  oeÃ?d ðÅ?•_éœ @  ofÄ?d 0Æ?I] @  ogÅ?d pÆ?6Öì^ @  ohÆ?d °Æ?#î  @  oiÇ?d ðÆ?H ´¦ @  ojÈ?d 0Ç?˜h8N @  okÉ?d pÇ?­^9Ú @  olÊ?d °Ç?«;$ @  omË?d ðÇ?K¸‚ @  onÌ?d 0È?G @  ooÍ?d pÈ?ì+•û @  opÎ?d °È?ÌÞ— @  oqÏ?d ðÈ?÷¯ï @  orÐ?d 0É?ÿÒ @  os Ñ?d pÉ?+4þF @  ot Ò?d °É? Áü¸ @  ou Ó?d ðÉ?ÍÒE™ @  ov Ô?d 0Ê?P–åX @  ow Õ?d pÊ?n[@[ @  ox Ö?d °Ê?N®B¥ @  oy ×?d ðÊ?­£ @  oz Ø?d 0Ë?Àå”K @  o{ Ù?d pË?õÓ•ß @  o| Ú?d °Ë?Õ&—! @  o} Û?d ðË?5. @  o~ Ü?d 0Ì? {Ý @  o Ý?d pÌ?Å@Wÿ @  o€ Þ?d °Ì?åµU @  o ß?d ðÌ?CQT7 @  o‚ à?d 0Í?“Øß @  oƒ á?d pÍ?¦/ÙK @  o„ â?d °Í?†ÚÛµ @  o… ã?d ðÍ?@Éb” @  o† ä?d 0Î?ÝÂU @  o‡ å?d pÎ?ã@gV @  oˆ æ?d °Î?õe¨ @  o‰ ç?d ðÎ?¶?® @  oŠ è?d 0Ï?Mþ³F @  o‹ é?d pÏ?xȲÒ @  oŒ ê?d °Ï?X=°, @  o ë?d ðÏ?ž.  @  oŽ ì?d 0Ð? 𵿠@  o í?d pÐ?³œ.\ @  o î?d °Ð?“i,¢ @  o‘ ï?d ðÐ?¨:H @  o’ ð?d 0Ñ?xr˜  @  o“ ñ?d pÑ?MD™4 @  o” ò?d °Ñ?m±›Ê @  o• ó?d ðÑ?«¢"ë @  o– ô?d 0Ò?6æ‚* @  o— õ?d pÒ?+') @  o˜ ö?d °Ò?(Þ%× @  o™ ÷?d ðÒ?vÝÑ @  oš ø?d 0Ó?¦•ó9 @  o› ù?d pÓ?“£ò­ @  oœ ú?d °Ó?³VðS @  o û?d ðÓ?uEIr @  ož ü?d 0Ô?l º} @  oŸ ý?d pÔ?îa. @  o  þ?d °Ô?ΔÐ @  o¡ ÿ?d ðÔ?H£$L @  o¢ ‚?d 0Õ?˜ë¨¤ @  o£ ‚?d pÕ?­Ý©0 @  o¤ ‚?d °Õ?(«Î @  o¥ ‚?d ðÕ?K;ï @  o¦ ‚?d 0Ö?Ö². @  o§ ‚?d pÖ?è²- @  o¨ ‚?d °Ö?ÈGÓ @  o© ‚?d ðÖ?–DOÕ @  oª ‚?d 0×?F Ã= @  o«  ‚?d p×?s:© @  o¬  ‚?d °×?SÏÀW @  o­  ‚?d ð×?•Üyv @  o®  ‚?d 0Ø?¡#õk @  o¯  ‚?d pØ?2Onˆ @  o° ‚?d °Ø?ºlv @  o± ‚?d ðØ?)éTœ @  o² ‚?d 0Ù?ù¡Øt @  o³ ‚?d pÙ?Ì—Ùà @  o´ ‚?d °Ù?ìbÛ @  oµ ‚?d ðÙ?*qb? @  o¶ ‚?d 0Ú?·5Âþ @  o· ‚?d pÚ?‰øgý @  o¸ ‚?d °Ú?© e @  o¹ ‚?d ðÚ?÷? @  oº ‚?d 0Û?'F³í @  o» ‚?d pÛ?p²y @  o¼ ‚?d °Û?2…°‡ @  o½ ‚?d ðÛ?ô– ¦ @  o¾ ‚?d 0Ü?íØú© @  o¿ ‚?d pÜ?Áµ@h @  oÀ ‚?d °Ü?á@B– @  oÁ ‚?d ðÜ?G¤C  @  o  ‚?d 0Ý?—ìÏH @  oà !‚?d pÝ?¢ÚÎÜ @  oÄ "‚?d °Ý?‚/Ì" @  oÅ #‚?d ðÝ?D€ @  oÝ;‚?d ä?¶{cp @  oÞ<‚?d Hä?4êt® @  oß=‚?d ˆä?äÝÝ @  oà>‚?d Èä?–uÊ @  oá?‚?d å?’E @  oâ@‚?d€ Hå?{Õ¾" @  pA‚?d ˆå? Æâ¿ @  pB‚?d Èå?Wõa @  pC‚?d æ?“ز @  pD‚?d Hæ?Il @  pE‚?d ˆæ?CRø5 @  pF‚?d Èæ?ÁÃïë @  pG‚?d ç?«q¡ @  pH‚?d Hç?:f @  p I‚?d ˆç?Ó!‰& @  p J‚?d Èç?Q°žø @  p K‚?d è?ä„G÷ @  p L‚?d Hè?fP) @  p M‚?d ˆè?4¿p @  pN‚?d Èè?¶Ÿ¨® @  pO‚?d é?¼jè @  pP‚?d Hé?>—}6 @  pQ‚?d ˆé?lŒ’o @  pR‚?d Èé?î…± @  pS‚?d ê?ò’pb @  pT‚?d Hê?pg¼ @  pU‚?d ˆê?"ˆå @  pV‚?d Èê? ‰Ÿ; @  pW‚?d ë?báq @  pX‚?d Hë?àp¯ @  pY‚?d ˆë?²kùö @  pZ‚?d Èë?0úî( @  p[‚?d ì?¨H5 @  p\‚?d Hì?*î_ë @  p]‚?d ˆì?xõ°² @  p^‚?d Èì?úd§l @  p_‚?d í?|L{F @  p `‚?d Hí?þÝl˜ @  p!a‚?d ˆí?¬ÆƒÁ @  p"b‚?d Èí?.W” @  p#c‚?d î?2ØaÌ @  p$d‚?d Hî?°Iv @  p%e‚?d ˆî?âR™K @  p&f‚?d Èî?`ÃŽ• @  p'g‚?d ï?¢«ß @  p(h‚?d Hï? : @  p)i‚?d ˆï?r!èX @  p*j‚?d Èï?ð°ÿ† @  p+k‚?d ð?Ï¥& @  p,l‚?d Hð?M4ø @  p-m‚?d ˆð?/î¡ @  p.n‚?d Èð?¾ù @  p/o‚?d ñ?—';9 @  p0p‚?d Hñ?¶,ç @  p1q‚?d ˆñ?G­Ã¾ @  p2r‚?d Èñ?Å<Ô` @  p3s‚?d ò?Ù³!³ @  p4t‚?d Hò?["6m @  p5u‚?d ˆò? 9Ù4 @  p6v‚?d Èò?‹¨Îê @  p7w‚?d ó?IÀP  @  p8x‚?d Hó?ËQG~ @  p9y‚?d ˆó?™J¨' @  p:z‚?d Èó?Û¿ù @  p;{‚?d ô?ƒ^ä @  p<|‚?d Hô?Ï: @  p=}‚?d ˆô?SÔác @  p>~‚?d Èô?ÑEö½ @  p?‚?d õ?üm† @  p@€‚?d Hõ?–mzX @  pA‚?d ˆõ?Äv• @  pB‚‚?d Èõ?Fç‚ß @  pCƒ‚?d ö?Zhw  @  pD„‚?d Hö?Øù`Ò @  pE…‚?d ˆö?Šâ‹ @  pF†‚?d Èö?s˜U @  pG‡‚?d ÷?Ê @  pHˆ‚?d H÷?HŠÁ @  pI‰‚?d ˆ÷?‘þ˜ @  pJŠ‚?d È÷?˜éF @  pK‹‚?d ø?-40I @  pLŒ‚?d Hø?¯¥'— @  pM‚?d ˆø?ý¾ÈÎ @  pNŽ‚?d Èø?/ß @  pO‚?d ù?u¶V @  pP‚?d Hù?÷' ˆ @  pQ‘‚?d ˆù?¥<åÑ @  pR’‚?d Èù?'­ò @  pS“‚?d ú?;"Ü @  pT”‚?d Hú?¹³ @  pU•‚?d ˆú?ë¨ÿ[ @  pV–‚?d Èú?i9è… @  pW—‚?d û?«QvÏ @  pX˜‚?d Hû?)Àa @  pY™‚?d ˆû?{ÛŽH @  pZš‚?d Èû?ùJ™– @  p[›‚?d ü?aÏ?‹ @  p\œ‚?d Hü?ã^(U @  p]‚?d ˆü?±EÇ  @  p^ž‚?d Èü?3ÔÐÒ @  p_Ÿ‚?d ý?µü ø @  p` ‚?d Hý?7m& @  pa¡‚?d ˆý?evô @  pb¢‚?d Èý?ççã¡ @  pc£‚?d þ?ûhr @  pd¤‚?d Hþ?yù¬ @  pe¥‚?d ˆþ?+âîõ @  pf¦‚?d Èþ?©sù+ @  pg§‚?d ÿ?kga @  ph¨‚?d Hÿ?éŠp¿ @  pi©‚?d ˆÿ?»‘Ÿæ @  pjuÐ@ª‚?d Èÿ?9ˆ8 @  pk«‚?d @4yÕœ @  pl¬‚?d `@¶èÂB @  pm­‚?d  @äó- @  pn®‚?d à@fb:Å @  po¯‚?d @lûøƒ @  pp°‚?d `@îjï] @  pq±‚?d  @¼q @  pr²‚?d à@>àÚ @  ps³‚?d @"oâ  @  pt´‚?d `@ þõ× @  puµ‚?d  @òåŽ @  pv¶‚?d à@pt P @  pw·‚?d @²“ @  px¸‚?d `@0„Ä @  py¹‚?d  @b–k @  pzº‚?d à@à|C @  p{»‚?d @x‚Ú^ @  p|¼‚?d `@úÍ€ @  p}½‚?d  @¨"Ù @  p~¾‚?d à@*™5 @  p¿‚?d @°ÊŸ @  p€À‚?d `@“!ÝA @  pÁ‚?d  @Á:2 @  p‚‚?d à@C«%Æ @  pƒÂ?d @_$Ð @  p„Ä‚?d `@ݵÇË @  p…Å‚?d  @®(’ @  p†Æ‚?d à@ ??L @  p‡Ç‚?d @ÏW¡ @  pˆÈ‚?d `@MƶØ @  p‰É‚?d  @ÝY @  pŠÊ‚?d à@LN_ @  p‹Ë‚?d @(x—P @  pŒÌ‚?d `@ªé€Ž @  pÍ‚?d  @øòo× @  pŽ΂?d à@zcx  @  pÏ‚?d @púºO @  pЂ?d ` @òk­‘ @  p‘Ñ‚?d   @ pBÈ @  p’Ò‚?d à @"áU @  p“Ó‚?d @>n Å @  p”Ô‚?d ` @¼ÿ· @  p•Õ‚?d   @îäXB @  p–Ö‚?d à @luOœ @  p—ׂ?d @®ÑÖ @  p˜Ø‚?d ` @,ŒÆ @  p™Ù‚?d   @~—)Q @  pšÚ‚?d à @ü> @  p›Û‚?d @dƒ˜’ @  pœÜ‚?d ` @æL @  pÝ‚?d   @´ ` @  pžÞ‚?d à @6˜wË @  pŸß‚?d @°°«á @  p à‚?d ` @2!¼? @  p¡á‚?d   @`:Sf @  p¢â‚?d à @â«D¸ @  p£ã‚?d @þ$±k @  p¤ä‚?d `@|µ¦µ @  p¥å‚?d  @.®Iì @  p¦æ‚?d à@¬?^2 @  p§ç‚?d @nWÀx @  p¨è‚?d `@ìÆ×¦ @  p©é‚?d  @¾Ý8ÿ @  pªê‚?d à@ @  p®î‚?d à@QB)Ø @  p¯ï‚?d @[Ûëž @  p°ð‚?d `@ÙJü@ @  p±ñ‚?d  @‹Q @  p²ò‚?d à@ ÀÇ @  p³ó‚?d @Oñ @  p´ô‚?d `@—ÞæÊ @  pµõ‚?d  @ÅÅ “ @  p¶ö‚?d à@GTM @  p·÷‚?d @…<€ @  p¸ø‚?d `@­—Ù @  p¹ù‚?d  @U¶x€ @  pºú‚?d à@×'o^ @  p»û‚?d @O¢ÉC @  p¼ü‚?d `@Í3Þ @  p½ý‚?d  @Ÿ(1Ä @  p¾þ‚?d à@¹& @  p¿ÿ‚?d @§gè- @  pÀƒ?d `@%öÿó @  pÁƒ?d  @wíª @  pƒ?d à@õ|t @  pÃ?d @éóò§ @  pă?d `@kbåy @  pŃ?d  @9y  @  pƃ?d à@»èþ @  pǃ?d @y€ƒ´ @  pȃ?d `@û”j @  pÉ ƒ?d  @© {3 @  pÊ ƒ?d à@+›lí @  pË ƒ?d @ž¯µâ @  pÌ ƒ?d `@>¢< @  pÍ ƒ?d  @N%Me @  p΃?d à@Ì´Z» @  pσ?d @Æ-˜ý @  pЃ?d `@D¼# @  pу?d  @§`z @  pÒƒ?d à@”6w¤ @  pÓƒ?d @ˆ¹‚w @  pÔƒ?d `@ (•© @  pÕƒ?d  @X3zð @  pÖƒ?d à@Ú¢m. @  p׃?d @Êód @  p؃?d `@š[äº @  pÙƒ?d  @È@ ã @  pÚƒ?d à@JÑ= @  pÛƒ?d @ÒTº  @  p܃?d `@PÅ­þ @  p݃?d  @ÞB§ @  pÞƒ?d à@€OUy @  p߃?d @g‰S @  pà ƒ?d `@„öž @  pá!ƒ?d  @ÖíqÔ @  pâ"ƒ?d€ à@ ¿z¬ @  q#ƒ?d @ÝqÇV @  q$ƒ?d `@_àЈ @  q%ƒ?d  @ȲÄ< @  q&ƒ?d à@J#Óâ @  q'ƒ?d @FùÒ @  q(ƒ?d `@Äh  @  q)ƒ?d  @XÁµ/uÐ @ @  q*ƒ?d à@ÚP¢ñ @  q +ƒ?d 8 @ïÙÒh @  q ,ƒ?d x @mHŶ @  q -ƒ?d ¸ @úÑ @  q .ƒ?d ø @x‹ÆÜ @  q /ƒ?d 8!@e @  q0ƒ?d x!@“rÞ @  q1ƒ?d ¸!@¢˜ü @  q2ƒ?d ø!@ ëà @  q3ƒ?d 8"@ùÏåý @  q4ƒ?d x"@{^ò# @  q5ƒ?d ¸"@ì æ— @  q6ƒ?d ø"@nñI @  q7ƒ?d 8#@bG0y @  q8ƒ?d x#@àÖ'§ @  q9ƒ?d ¸#@|—„ @  q:ƒ?d ø#@þî€Z @  q;ƒ?d 8$@£"ݪ @  q<ƒ?d x$@!³Êt @  q=ƒ?d ¸$@¶áÞÀ @  q>ƒ?d ø$@4pÉ @  q?ƒ?d 8%@0F @  q@ƒ?d x%@²ŒQÑ @  qAƒ?d ¸%@’‚ø¢ @  q Bƒ?d ø%@ï| @  q!Cƒ?d 8&@ÉÕáB @  q"Dƒ?d x&@KDöœ @  q#Eƒ?d ¸&@Üâ( @  q$Fƒ?d ø&@^‡õö @  q%Gƒ?d 8'@R]4Æ @  q&Hƒ?d x'@ÐÌ# @  q'Iƒ?d ¸'@Le“; @  q(Jƒ?d ø'@Îô„å @  q)Kƒ?d 8(@¾‰¦ @  q*Lƒ?d x(@<±Ù @  q+Mƒ?d ¸(@«J¥m @  q,Nƒ?d ø(@)Û²³ @  q-Oƒ?d 8)@@Qo @  q.Pƒ?d x)@ÂÀ± @  q/Qƒ?d ¸)@óȈr @  q0Rƒ?d ø)@qYŸ¬ @  q1Sƒ?d 8*@¨Ÿ‘’ @  q2Tƒ?d x*@*†L @  q3Uƒ?d ¸*@½\’ø @  q4Vƒ?d ø*@?Í…& @  q5Wƒ?d 8+@3D @  q6Xƒ?d x+@±†SÈ @  q7Yƒ?d ¸+@-/ãë @  q8Zƒ?d ø+@¯¾ô5 @  q9[ƒ?d 8,@òr©Å @  q:\ƒ?d x,@pã¾ @  q;]ƒ?d ¸,@籪¯ @  q<^ƒ?d ø,@e ½q @  q=_ƒ?d 8-@‘'q @  q>`ƒ?d x-@Œ0¯ @  q?aƒ?d ¸-@…ŸN @  q@bƒ?d ø-@ˆ @  qAcƒ?d 8.@ÆÒ†® @  qBdƒ?d x.@DC‘p @  qCeƒ?d ¸.@Ó…Ä @  qDfƒ?d ø.@Q€’ @  qEgƒ?d 8/@]ZS* @  qFhƒ?d x/@ßËDô @  qGiƒ?d ¸/@Cbô× @  qHjƒ?d ø/@Áóã  @  qIkƒ?d 80@;¯ñD @  qJlƒ?d x0@¹>æš @  qKmƒ?d ¸0@.lò. @  qLnƒ?d ø0@¬ýåð @  qMoƒ?d 81@ÅwF, @  qNpƒ?d x1@GæQò @  qOqƒ?d ¸1@vîß1 @  qPrƒ?d ø1@ôÈï @  qQsƒ?d 82@-¹ÆÑ @  qRtƒ?d x2@¯(Ñ @  qSuƒ?d ¸2@8zÅ» @  qTvƒ?d ø2@ºëÒe @  qUwƒ?d 83@¶1U @  qVxƒ?d x3@4 ‹ @  qWyƒ?d ¸3@¨ ´¨ @  qXzƒ?d ø3@*˜£v @  qY{ƒ?d 84@wTþ† @  qZ|ƒ?d x4@õÅéX @  q[}ƒ?d ¸4@b—ýì @  q\~ƒ?d ø4@àê2 @  q]ƒ?d 85@ù­1± @  q^€ƒ?d x5@{<&o @  q_ƒ?d ¸5@[2 @  q`‚ƒ?d ø5@Ù£˜Â @  qaƒƒ?d 86@e–ü @  qb„ƒ?d x6@‚ô" @  qc…ƒ?d ¸6@¦•– @  qd†ƒ?d ø6@—7‚H @  qe‡ƒ?d 87@›íCx @  qfˆƒ?d x7@|T¦ @  qg‰ƒ?d ¸7@…Õä… @  qhŠƒ?d ø7@Dó[ @  qi‹ƒ?d 88@w9ѹ @  qjŒƒ?d x8@õ¨Æg @  qkƒ?d ¸8@búÒÓ @  qlŽƒ?d ø8@àkÅ  @  qmƒ?d 89@‰áfÑ @  qnƒ?d x9@ pq @  qo‘ƒ?d ¸9@:xÿÌ @  qp’ƒ?d ø9@¸éè @  qq“ƒ?d 8:@a/æ, @  qr”ƒ?d x:@ã¾ñò @  qs•ƒ?d ¸:@tìåF @  qt–ƒ?d ø:@ö}ò˜ @  qu—ƒ?d 8;@ú§3¨ @  qv˜ƒ?d x;@x6$v @  qw™ƒ?d ¸;@䟔U @  qxšƒ?d ø;@fƒ‹ @  qy›ƒ?d 8<@;ÂÞ{ @  qzœƒ?d x<@¹SÉ¥ @  q{ƒ?d ¸<@.Ý @  q|žƒ?d ø<@¬ÊÏ @  q}Ÿƒ?d 8=@X­PÏ @  q~ ƒ?d x=@Ú@ì4Á! @  q‚¤ƒ?d x>@n¥Öÿ @  qƒ¥ƒ?d ¸>@ù÷ÂK @  q„¦ƒ?d ø>@{fÕ• @  q…§ƒ?d 8?@w¼¥ @  q†¨ƒ?d x?@õ-{ @  q‡©ƒ?duÐ@@7 ¸?@i„³X @  qˆªƒ?d ø?@)¼CS @  q‰«ƒ?d P@@®’W @  qЬƒ?d @@ŽgUn @  q‹­ƒ?d Ð@@»QTú @  qŒ®ƒ?d A@kØ @  q¯ƒ?d PA@PJàø @  qްƒ?d A@p¿â @  q±ƒ?d ÐA@ãÓyå @  q²ƒ?d B@~—Ù$ @  q‘³ƒ?d PB@¸„` @  q’´ƒ?d B@˜qbû @  q“µƒ?d ÐB@­Gco @  q”¶ƒ?d C@}ï‡ @  q•·ƒ?d PC@# µ @  q–¸ƒ?d C@ù· @  q—¹ƒ?d ÐC@=4| @  q˜ºƒ?d D@$zás @  q™»ƒ?d PD@âiXR @  qš¼ƒ?d D@œZ¬ @  q›½ƒ?d ÐD@÷ª[8 @  qœ¾ƒ?d E@'â×Ð @  q¿ƒ?d PE@qVÃ÷ @  qžÀƒ?d E@Q£Á  @  qŸÁƒ?d ÐE@ÓÉ}Z @  q ƒ?d F@NÝ› @  q¡Ã?d PF@ˆždº @  q¢ă?d F@¨kfD @  q£Ń?d ÐF@]gÐ @  q¤ƃ?d G@Më8 @  q¥ǃ?d PG@±> @  q¦ȃ?d G@3ã³À @  q§Ƀ?d ÐG@ .à @  q¨ʃ?d H@9ÑšÞ @  q©˃?d PH@ÿÂ#ÿ @  qª̃?d H@ß7! @  q«̓?d ÐH@ê • @  q¬΃?d I@:I¬} @  q­σ?d PI@”— @  q®Ѓ?d I@!ï–i @  q¯у?d ÐI@²ƒ Š @  q°Òƒ?d J@/Ç­K @  q±Óƒ?d PJ@éÔj @  q²Ôƒ?d J@É!” @  q³Õƒ?d ÐJ@ü @  q´Öƒ?d K@,_›è @  qµ׃?d PK@r\Áî @  q¶؃?d K@R©Ã @  q·Ùƒ?d ÐK@ldf @  q¸Úƒ?d L@u*• @  q¹Ûƒ?d PL@³9,= @  qº܃?d L@“Ì.à @  q»݃?d ÐL@¦ú/W @  q¼Þƒ?d M@v²£¿ @  q½߃?d PM@ÐV¢‰ @  q¾àƒ?d M@ð£ w @  q¿áƒ?d ÐM@Üζ @  qÀâƒ?d N@AŠºw @  qÁãƒ?d PN@‡™V @  qÂäƒ?d N@§l¨ @  qÃåƒ?d ÐN@’Z< @  qÄæƒ?d O@BŒÔ @  qÅçƒ?d PO@ÖÒ @  qÆèƒ?d O@<äÔ, @  qÇéƒ?d ÐO@)q/ @  qÈêƒ?d P@¼÷Í @  qÉëƒ?d PP@zät¼ @  qÊìƒ?d P@ZvB @  qËíƒ?d ÐP@o'wÖ @  qÌîƒ?d Q@¿oû> @  qÍïƒ?d PQ@„<ÃÔ @  qÎðƒ?d Q@¤ÉÁ* @  qÏñƒ?d ÐQ@7¥ZÉ @  qÐòƒ?d R@ªáú @  qÑóƒ?d PR@lòC) @  qÒôƒ?d R@LA× @  qÓõƒ?d ÐR@y1@C @  qÔöƒ?d S@©yÌ« @  qÕ÷ƒ?d PS@÷z–­ @  qÖøƒ?d S@×”S @  q×ùƒ?d ÐS@éB1P @  qØúƒ?d T@ð Â_ @  qÙûƒ?d PT@6{~ @  qÚüƒ?d T@êy€ @  qÛýƒ?d ÐT@#Üx @  qÜþƒ?d U@ó”ôü @  qÝÿƒ?d PU@ûˆÞÓ @  qÞ„?d U@Û}Ü- @  qß„?d ÐU@Y`~ @  qà„?d V@ÄSÀ¿ @  qá„?d PV@@yž @  qâ„?d€ V@ãòŒ` @  r„?d ÐV@7…ÅÝ @  r„?d W@çÍI5 @  r„?d PW@|‡èÞ @  r„?d W@\rê  @  r „?d ÐW@¬ Y @  r „?d X@˜òœD @  r „?d PX@Sz @  r „?d X@°¦xá @  r  „?d ÐX@@Ù‚˜ @  r „?d Y@‘p @  r „?d PY@n‹Íw @  r „?d Y@N~ω @  r „?d ÐY@¾5ð @  r„?d Z@#E•1 @  r„?d PZ@†EMŠ @  r„?d Z@¦°Ot @  r„?d ÐZ@Vϵ  @  r„?d [@†‡9å @  r„?d P[@͘ @  r„?d [@=8šð @  r„?d Ð[@ÍG`‰ @  r„?d \@Ô “† @  r„?d P\@ܨuÝ @  r„?d \@ü]w# @  r„?d Ð\@ "Z @  r„?d ]@Üj² @  r„?d P]@¿Çûi @  r „?d ]@Ÿ2ù— @  r!„?d Ð]@oMî @  r"„?d ^@ò £/ @  r#„?d P^@F\$ @  r $„?d ^@fú^Ú @  r!%„?d Ð^@–…¤£ @  r"&„?d _@FÍ(K @  r#'„?d P_@݇‰  @  r$(„?d _@ýr‹^ @  ruÐ`@%)„?d Ð_@4Ê­ò @  r& *„?d (`@Š2j @  r' +„?d h`@‚“þ1 @  r( ,„?d ¨`@¢füÏ @  r) -„?d è`@R¶ @  r* .„?d (a@‚QŠ^ @  r+ /„?d ha@|KIY @  r, 0„?d ¨a@\¾K§ @  r- 1„?d èa@¬Á±Þ @  r. 2„?d (b@1… @  r/ 3„?d hb@”…ɤ @  r0 4„?d ¨b@´pËZ @  r1 5„?d èb@D1# @  r2 6„?d (c@”G½Ë @  r3 7„?d hc@   @  r4 8„?d ¨c@/øÞ @  r5 9„?d èc@߇ä§ @  r6 :„?d (d@ÆÉ¨ @  r7 ;„?d hd@Îhñó @  r8 <„?d ¨d@îó  @  r9 =„?d èd@â t @  r: >„?d (e@Ϊ…œ @  r; ?„?d he@]WjV @  r< @„?d ¨e@}¢h¨ @  r= A„?d èe@Ý’Ñ @  r> B„?d (f@™2 @  r? C„?d hf@ ˜Ë‰ @  r@ D„?d ¨f@*mÉw @  rA E„?d èf@Ú3 @  rB F„?d (g@ Z¿æ @  rC G„?d hg@‘  @  rD H„?d ¨g@±åó @  rE I„?d èg@AšæŠ @  rF J„?d (h@uej— @  rG K„?d hh@}ÄŒÌ @  rH L„?d ¨h@]1Ž2 @  rI M„?d èh@­NtK @  rJ N„?d (i@}ø£ @  rK O„?d hi@ƒ;¤ @  rL P„?d ¨i@£é9Z @  rM Q„?d èi@S–Ã# @  rN R„?d (j@ÎÒcâ @  rO S„?d hj@kÒ»Y @  rP T„?d ¨j@K'¹§ @  rQ U„?d èj@»XCÞ @  rR V„?d (k@kÏ6 @  rS W„?d hk@ðZnÝ @  rT X„?d ¨k@Яl# @  rU Y„?d èk@ ЖZ @  rV Z„?d (l@9žeU @  rW [„?d hl@1?ƒ @  rX \„?d ¨l@Êð @  rY ]„?d èl@áµ{‰ @  rZ ^„?d (m@1ý÷a @  r[ _„?d hm@RP º @  r\ `„?d ¨m@r¥D @  r] a„?d èm@‚Úõ= @  r^ b„?d (n@žUü @  r_ c„?d hn@«˜ª÷ @  r` d„?d ¨n@‹m¨  @  ra e„?d èn@{Rp @  rb f„?d (o@«ZÞ˜ @  rc g„?d ho@0s @  rd h„?d ¨o@å} @  re i„?d èo@àš‡ô @  rf j„?d (p@^D;F @  rg k„?d hp@VåÝ @  rh l„?d ¨p@vßã @  ri m„?d èp@†o%š @  rj n„?d (q@V'©r @  rk o„?d hq@¨=ju @  rl p„?d ¨q@ˆÈh‹ @  rm q„?d èq@x·’ò @  rn r„?d (r@åó23 @  ro s„?d hr@@óêˆ @  rp t„?d ¨r@`èv @  rq u„?d èr@y @  rr v„?d (s@@1žç @  rs w„?d hs@Û{?  @  rt x„?d ¨s@ûŽ=ò @  ru y„?d ès@ ñÇ‹ @  rv z„?d (t@¿4„ @  rw {„?d ht@Òß @  rx |„?d ¨t@:ëÐ! @  ry }„?d èt@Ê”*X @  rz ~„?d (u@á²° @  r{„?d hu@o‰&è @  r|€„?d ¨u@O|$ @  r}„?d èu@¿Þo @  r~‚„?d (v@"G~® @  rƒ„?d hv@Û· @  r€„„?d ¨v@ûåµø @  r…„?d èv@ šO @  r‚†„?d (w@ÛÒÃi @  rƒ‡„?d hw@@˜b‚ @  r„ˆ„?d ¨w@`m`| @  r…‰„?d èw@š @  r†Š„?d (x@¤í @  r‡‹„?d hx@¬LðC @  rˆŒ„?d ¨x@Œ¹ò½ @  r‰„?d èx@|ÆÄ @  rŠŽ„?d (y@¬Ž„, @  r‹„?d hy@R”G+ @  rŒ„?d ¨y@raEÕ @  r‘„?d èy@‚¿¬ @  rŽ’„?d (z@Zm @  r“„?d hz@ºZÇÖ @  r”„?d ¨z@š¯Å( @  r‘•„?d èz@jÐ?Q @  r’–„?d ({@º˜³¹ @  r“—„?d h{@!ÒR @  r”˜„?d ¨{@'¬ @  r•™„?d è{@ñXêÕ @  r–š„?d (|@èÚ @  r—›„?d h|@à·ÿ @  r˜œ„?d ¨|@ÀBý @  r™„?d è|@0= @  ršž„?d (}@àu‹î @  r›Ÿ„?d h}@ƒØq5 @  rœ „?d ¨}@£-sË @  r¡„?d è}@SR‰² @  rž¢„?d (~@Î)s @  rŸ£„?d h~@zÖx @  r ¤„?d ¨~@ZåÔ† @  r¡¥„?d è~@ªš.ÿ @  r¢¦„?d (@zÒ¢ @  r£§„?d h@á˜ü @  r¤¨„?d ¨@uЀ@'Ám @  r¥©„?d è@Ê|À{ @  r¦ ª„?d @€@¤Â" @  r§ «„?d €€@Ñt @  r¨ ¬„?d À€@Œ–ƪ @  r© ­„?d @.0§å @  rª ®„?d @@¬¡°; @  r« ¯„?d €@ðßf @  r¬ °„?d À@rNq @  r­ ±„?d ‚@ä<¤ @  r® ²„?d @‚@u+z @  r¯ ³„?d €‚@æá @  r° ´„?d À‚@š€ñ? @  r± µ„?d ƒ@8&p @  r² ¶„?d @ƒ@º·‡® @  r³ ·„?d €ƒ@ƒ™3e @  r´ ¸„?d Àƒ@$» @  rµ ¹„?d „@j¨: @  r¶ º„?d @„@è9-Í @  r· »„?d €„@BüÞ¶ @  r¸ ¼„?d À„@ÀmÉh @  r¹ ½„?d …@b˨' @  rº ¾„?d @…@àZ¿ù @  r» ¿„?d €…@ÑÃE @  r¼ À„?d À…@SRRÍ @  r½ Á„?d †@¼ø« @  r¾ „?d @†@>iu @  r¿ Ä?d €†@† äÌ @  rÀ Ä„?d À†@ó @  rÁ Å„?d ‡@¦;’] @  r Æ„?d @‡@$ª…ƒ @  rà Ç„?d €‡@„1H @  rÄ È„?d À‡@Ÿ&– @  rÅ É„?d ˆ@ÙG, @  rÆ Ê„?d @ˆ@[•Pò @  rÇ Ë„?d €ˆ@ñP£‰ @  rÈ Ì„?d Àˆ@sÁ´W @  rÉ Í„?d ‰@ÑgÕ @  rÊ ΄?d @‰@SöÂÆ @  rË Ï„?d €‰@ˆá @  rÌ Є?d À‰@? @  rÍ Ñ„?d Š@b³NY @  rÎ Ò„?d @Š@à"Y‡ @  rÏ Ó„?d €Š@çF” @  rÐ Ô„?d ÀŠ@e׃ @  rÑ Õ„?d ‹@Çqâ @  rÒ Ö„?d @‹@EàõS @  rÓ ׄ?d €‹@|ÎA˜ @  rÔ Ø„?d À‹@þ_VF @  rÕ Ù„?d Œ@•ÿHî @  rÖ Ú„?d @Œ@n_0 @  r× Û„?d €Œ@½«¬K @  rØ Ü„?d ÀŒ@?:»• @  rÙ Ý„?d @œÚÚ @  rÚ Þ„?d @@ Í @  rÛ ß„?d €@ÞÄ"ÿ @  rÜ à„?d À@\U5! @  rÝ á„?d Ž@³ÿxG @  rÞ â„?d @Ž@1no™ @  rß ã„?d €Ž@' …² @  rà ä„?d ÀŽ@¥’l @  rá å„?d @;ó# @  râ æ„?d€ @@ñiø[ @  s ç„?d €@)¹ @  s è„?d À@«—g @  s é„?d @¢î¹Ÿ @  s ê„?d @@ ®A @  s ë„?d €@D@ @  s ì„?d À@Æ™ž @  s í„?d ‘@ª+« @  s î„?d @‘@( @  s ö„?d @“@> à @  s ÷„?d €“@ÂmDÆ @  s ø„?d À“@@üS @  s ù„?d ”@î¶] @  s ú„?d @”@UC}V @  sû„?d €”@14ÑW @  sü„?d À”@³¥Æ‰ @  sý„?d •@ß±ø¼ @  sþ„?d @•@] ïb @  sÿ„?d €•@ËQïû @  s…?d À•@IÀø% @  s…?d –@c#N® @  s…?d @–@á²Yp @  s…?d €–@…Åõq @  s…?d À–@T⯠@  s…?d —@×çÅÊ @  s …?d @—@UvÒ @  s!…?d €—@©2 @  s"…?d À—@+€Šì @  s# …?d ˜@¨Ø» @  s$ …?d @˜@*Ie @  s% …?d €˜@N>«d @  s& …?d À˜@̯¼º @  s' …?d ™@ »‚ @  s(…?d @™@"*•Q @  s)…?d €™@»¸› @  s*…?d À™@9Œ¯E @  s+…?d š@oÎ @  s,…?d @š@‘þ @  s-…?d €š@õ‰¢ @  s.…?d Àš@wµÏ @  s/…?d ›@¶­µ @  s0…?d @›@4<¢Ä @  s1…?d €›@È[íâ @  s2…?d À›@JÊú< @  s3…?d œ@ä#y @  s4…?d @œ@f²§ @  s5…?d €œ@Ť¦ @  s6…?d Àœ@€T³x @  s7…?d @ì@M @  s8…?d @@nÑš“ @  s9…?d €@jQŽ… @  s: …?d À@èÀ™[ @  s;!…?d ž@Â#/Ð @  s<"…?d @ž@@²8 @  s=#…?d €ž@$Å” @  s>$…?d Àž@¦TƒÑ @  s?%…?d Ÿ@Øà¢& @  s@&…?d @Ÿ@Zqµø @  sA'…?d €Ÿ@¦úÞ @  sB(…uР@?d ÀŸ@$‡í @  sC)…?d  @â+%, @  sD*…?d X @`º2ò @  sE+…?d ˜ @Ížó @  sF,…?d Ø @†\‰- @  sG-…?d ¡@êH· @  sH.…?d X¡@hÙ Æ @  sI/…?d ˜¡@ñî  @  sJ0…?d Ø¡@sšÒ @  sK1…?d ¢@Yœ,Y @  sL2…?d X¢@Û ;‡ @  sM3…?d ˜¢@¿z—† @  sN4…?d Ø¢@=ë€X @  sO5…?d £@ü^€ @  sP6…?d X£@~Ï—S @  sQ7…?d ˜£@‚¨Øu @  sR8…?d Ø£@9Ï« @  sS9…?d ¤@®Ð*î @  sT:…?d X¤@,A=0 @  sU;…?d ˜¤@H6‘1 @  sV<…?d ؤ@ʧ†ï @  sW=…?d ¥@¦³¸Ú @  sX>…?d X¥@$"¯ @  sY?…?d ˜¥@Ðò® @  sZ@…?d Ø¥@Rc¹Ý @  s[A…?d ¦@x€V @  s\B…?d X¦@úˆ @  s]C…?d ˜¦@žf´‰ @  s^D…?d ئ@÷£W @  s_E…?d §@ÌD„2 @  s`F…?d X§@NÕ“ì @  saG…?d ˜§@²²ÜÊ @  sbH…?d ا@0#Ë @  scI…?d ¨@³{QC @  sdJ…?d X¨@1êF @  seK…?d ˜¨@Uêœ @  sfL…?d ب@× ýB @  sgM…?d ©@»Ãw @  shN…?d X©@9‰Ô© @  siO…?d ˜©@ ¾ùc @  sjP…?d Ø©@"/î½ @  skQ…?d ª@ÌX6 @  slR…?d Xª@Š]Oè @  smS…?d ˜ª@î*ãé @  snT…?d ت@l»ô7 @  soU…?d «@­ôâ @  spV…?d X«@/Ÿã< @  sqW…?d ˜«@Óø¬ @  srX…?d Ø«@Qi»Ä @  ssY…?d ¬@ÿ€^ @  stZ…?d X¬@}I_ @  su[…?d ˜¬@få^ @  sv\…?d ج@›÷ò€ @  sw]…?d ­@÷ã̵ @  sx^…?d X­@urÛk @  sy_…?d ˜­@qòÏ} @  sz`…?d Ø­@ócØ£ @  s{a…?d ®@Ù€n( @  s|b…?d X®@[yö @  s}c…?d ˜®@?fÕ÷ @  s~d…?d Ø®@½÷Â) @  se…?d ¯@ Óï @  s€f…?d X¯@¢„Ä1 @  sg…?d ˜¯@^ã‹ @  s‚h…?d د@ÜrœÉ @  sƒi…?d °@Õ 61 @  s„j…?d X°@Wš!ï @  s…k…?d ˜°@3íî @  s†l…?d ذ@±|š0 @  s‡m…?d ±@Ýh¤ @  sˆn…?d X±@_ù³Û @  s‰o…?d ˜±@ÆÎž @  sŠp…?d ر@D_‰Ï @  s‹q…?d ²@n¼?D @  sŒr…?d X²@ì-(š @  ss…?d ˜²@ˆZ„› @  sŽt…?d ز@ Ë“E @  su…?d ³@Ë~“ @  sv…?d X³@Iï„N @  s‘w…?d ˜³@µˆËh @  s’x…?d س@7ܶ @  s“y…?d ´@™ð9ó @  s”z…?d X´@a.- @  s•{…?d ˜´@‚, @  s–|…?d Ø´@ý‡•ò @  s—}…?d µ@‘“«Ç @  s˜~…?d Xµ@¼ @  s™…?d ˜µ@úéŒ @  sš€…?d ص@x…þR @  s›…?d ¶@RfHÙ @  sœ‚…?d X¶@Ð÷_ @  sƒ…?d ˜¶@´€ó @  sž„…?d ض@6äØ @  sŸ……?d ·@æ¢Ã½ @  s †…?d X·@d3Ôc @  s¡‡…?d ˜·@˜T›E @  s¢ˆ…?d Ø·@ÅŒ› @  s£‰…?d ¸@™Ì @  s¤Š…?d X¸@  @  s¥‹…?d ˜¸@{­ @  s¦Œ…?d ظ@ýêºÍ @  s§…?d ¹@‘þ„ø @  s¨Ž…?d X¹@o“& @  s©…?d ˜¹@ŠX¾ì @  sª…?d ع@É©2 @  s«‘…?d º@"*¹ @  s¬’…?d Xº@ »g @  s­“…?d ˜º@Ä̤f @  s®”…?d غ@F]³¸ @  s¯•…?d »@‡è³m @  s°–…?d X»@y¤³ @  s±—…?d ˜»@ùë• @  s²˜…?d Ø»@{üK @  s³™…?d ¼@Õf @  s´š…?d X¼@W÷Ð @  sµ›…?d ˜¼@3€¢Ñ @  s¶œ…?d ؼ@±µ @  s·…?d ½@Ý‹: @  s¸ž…?d X½@_”œä @  s¹Ÿ…?d ˜½@[ˆò @  sº …?d ؽ@Ù…Ÿ, @  s»¡…?d ¾@óf)§ @  s¼¢…?d X¾@q÷>y @  s½£…?d ˜¾@€’x @  s¾¤…?d ؾ@—…¦ @  s¿¥…?d ¿@饤Q @  sÀ¦…?d X¿@k4³ @  sÁ§…?d ˜¿@—Sü© @uÐÀ@  s¨…?d Ø¿@Âëw @  sé…?d 0À@Æ•¬o @  sĪ…?d pÀ@D»± @  sÅ«…?d °À@ s° @  sƬ…?d ðÀ@¢ân @  sÇ­…?d 0Á@Îö>[ @  sÈ®…?d pÁ@Lg)… @  sɯ…?d °Á@ÕPO @  sʰ…?d ðÁ@WÁ‘ @  s˱…?d 0Â@}"¥ @  s̲…?d pÂ@ÿ³²Ä @  sͳ…?d °Â@›ÄÅ @  sδ…?d ðÂ@U  @  sϵ…?d 0Ã@Øà Î @  sж…?d pÃ@Zq @  sÑ·…?d °Ã@¦Q6 @  sÒ¸…?d ðÃ@$‡Fè @  sÓ¹…?d 0Ä@Šn£­ @  sÔº…?d pÄ@ÿ´s @  sÕ»…?d °Ä@lˆr @  sÖ¼…?d ðÄ@î¬ @  s×½…?d 0Å@‚ 1™ @  sؾ…?d pÅ@œ&G @  sÙ¿…?d °Å@ôL'@ @  sÚÀ…?d ðÅ@vÝ0ž @  sÛÁ…?d 0Æ@\>† @  sÜÂ…?d pÆ@Þ¯‘Ë @  sÝÃ…?d °Æ@ºØ=Ê @  sÞÄ…?d ðÆ@8I* @  sßÅ…?d 0Ç@èú q @  sàÆ…?d pÇ@jk¯ @  sáÇ…?d °Ç@– U‰ @  sâÈ…?d€ ðÇ@’Ëêî @  tÉ…?d 0È@ðÒ8 @  tÊ…?d pÈ@rC/N @  tË…?d °È@Ó}x¢ @  tÌ…?d ðÈ@Qìo| @  tÍ…?d 0É@óJ3 @  tÎ…?d pÉ@qÛí @  tÏ…?d °É@&^k] @  tÐ…?d ðÉ@¤Ï|ƒ @  t Ñ…?d 0Ê@Ke1å @  t Ò…?d pÊ@Éô&; @  t Ó…?d °Ê@hÊq× @  t Ô…?d ðÊ@ê[f  @  t Õ…?d 0Ë@HýF @  tÖ…?d pË@Êl˜ @  t×…?d °Ë@U>$ @  tØ…?d ðË@׉)ú @  tÙ…?d 0Ì@¼)7R @  tÚ…?d pÌ@>¸ Œ @  tÛ…?d °Ì@Ÿ†w` @  tÜ…?d ðÌ@`¾ @  tÝ…?d 0Í@¿±ñ @  tÞ…?d pÍ@= / @  tß…?d °Í@÷]C @  tà…?d ðÍ@uƒJ @  tá…?d 0Î@š)û @  tâ…?d pÎ@¸% @  tã…?d °Î@¹†GÉ @  tä…?d ðÎ@;P @  tå…?d 0Ï@™±1X @  tæ…?d pÏ@ &† @  tç…?d °Ï@•R/Š @  t è…?d ðÏ@Ã8T @  t!é…?d 0Ð@ÛóiA @  t"ê…?d pÐ@Yb~Ÿ @  t#ë…?d °Ð@ø\)s @  t$ì…?d ðÐ@zÍ>­ @  t%í…?d 0Ñ@Øk_â @  t&î…?d pÑ@ZúH< @  t'ï…?d °Ñ@ :Œ @  t(ð…?d ðÑ@î-R @  t)ñ…?d 0Ò@`D`4 @  t*ò…?d pÒ@âÕwê @  t+ó…?d °Ò@Cë  @  t,ô…?d ðÒ@Áz7Ø @  t-õ…?d 0Ó@cÜV— @  t.ö…?d pÓ@áMAI @  t/÷…?d °Ó@~9oõ @  t0ø…?d ðÓ@ü¨x+ @  t1ù…?d 0Ô@—fƒ @  t2ú…?d pÔ@™q] @  t3û…?d °Ô@´§&± @  t4ü…?d ðÔ@661o @  t5ý…?d 0Õ@”P  @  t6þ…?d pÕ@Gþ @  t7ÿ…?d °Õ@üà-8 @  t8†?d ðÕ@~q:æ @  t9†?d 0Ö@‘Ûw€ @  t:†?d pÖ@J`^ @  t;†?d °Ö@²t7² @  t<†?d ðÖ@0å l @  t=†?d 0×@’CA# @  t>†?d p×@ÒVý @  t?†?d °×@0§Yc @  t@†?d ð×@²6N½ @  tA †?d 0Ø@ô'/ @  tB †?d pØ@v¶8Ù @  tC †?d °Ø@׈o5 @  tD †?d ðØ@Uxë @  tE †?d 0Ù@÷¿¤ @  tF†?d pÙ@u.z @  tG†?d °Ù@"«|Ê @  tH†?d ðÙ@ :k @  tI†?d 0Ú@O&r @  tJ†?d pÚ@Í1¬ @  tK†?d °Ú@l?f@ @  tL†?d ðÚ@î®qž @  tM†?d 0Û@LÑ @  tN†?d pÛ@Ι @  tO†?d °Û@Qí)³ @  tP†?d ðÛ@Ó|>m @  tQ†?d 0Ü@¸Ü Å @  tR†?d pÜ@:M7 @  tS†?d °Ü@›s`÷ @  tT†?d ðÜ@âw) @  tU†?d 0Ý@»Df @  tV†?d pÝ@9Õ¸ @  tW†?d °Ý@óçJÔ @  tX †?d ðÝ@qv]  @  tY!†?d 0Þ@žÜl @  tZ"†?d pÞ@M² @  t[#†?d °Þ@½sP^ @  t\$†?d ðÞ@?âG€ @  t]%†?d 0ß@D&Ï @  t^&†?d pß@Õ1 @  t_'†?d uÐà@/°ß@‘§8 @  t`(†?d ðß@6/à @  ta)†?d Hà@x|œ’ @  tb*†?d ˆà@X‰žl @  tc+†?d Èà@[ÓÜ  @  td,†?d á@‹›PH @  te-†?d Há@{äª1 @  tf.†?d ˆá@[¨Ï @  tg/†?d Èá@®ðÏ_ @  th0†?d â@3´ož @  ti1†?d Hâ@ÃË•ç @  tj2†?d ˆâ@ã>— @  tk3†?d Èâ@àdÕÕ @  tl4†?d ã@0,Y= @  tm5†?d Hã@ÀS£D @  tn6†?d ˆã@ডº @  to7†?d Èã@ݶš& @  tp8†?d ä@Äøi) @  tq9†?d Hä@4‡“P @  tr:†?d ˆä@r‘® @  ts;†?d Èä@(Ób @  tt<†?d å@Ç`_Š @  tu=†?d Hå@7¥ó @  tv>†?d ˆå@ê§  @  tw?†?d Èå@ììP @  tx@†?d æ@¨L‘ @  tyA†?d Hæ@â×¶è @  tzB†?d ˆæ@Â"´ @  t{C†?d Èæ@ÁxöÚ @  t|D†?d ç@0z2 @  t}E†?d Hç@áO€K @  t~F†?d ˆç@Áº‚µ @  tG†?d Èç@ ý¨: @  t€H†?d è@”$' @  tI†?d Hè@d}Þ^ @  t‚J†?d ˆè@DˆÜ  @  tƒK†?d Èè@GÒžl @  t„L†?d é@—š„ @  t…M†?d Hé@gåèý @  t†N†?d ˆé@Gê @  t‡O†?d Èé@²ñ“ @  tˆP†?d ê@/µ-R @  t‰Q†?d Hê@ßÊ×+ @  tŠR†?d ˆê@ÿ?ÕÕ @  t‹S†?d Èê@üe— @  tŒT†?d ë@,-ñ @  tU†?d Hë@ÜRሠ@  tŽV†?d ˆë@ü§ãv @  tW†?d Èë@Á·Øê @  tX†?d ì@Øù+å @  t‘Y†?d Hì@(†Ñœ @  t’Z†?d ˆì@sÓb @  t“[†?d Èì@ )‘® @  t”\†?d í@ÛaF @  t•]†?d Hí@+ç? @  t–^†?d ˆí@ ëåÁ @  t—_†?d Èí@c½» @  t˜`†?d î@þùL @  t™a†?d Hî@†á5 @  tšb†?d ˆî@.sãË @  t›c†?d Èî@-)¡ @  tœd†?d ï@ýa-ï @  te†?d Hï@ ×– @  tžf†?d ˆï@-ëÕh @  tŸg†?d Èï@ýÉD @  t h†?d ð@¿#uö @  t¡i†?d Hð@O\ @  t¢j†?d ˆð@o©q @  t£k†?d Èð@lóϽ @  t¤l†?d ñ@¼»CU @  t¥m†?d Hñ@LĹ, @  t¦n†?d ˆñ@l1»Ò @  t§o†?d Èñ@™ÐÜB @  t¨p†?d ò@”|ƒ @  t©q†?d Hò@ôë†ú @  tªr†?d ˆò@Ô„ @  t«s†?d Èò@×DÆÈ @  t¬t†?d ó@ J  @  t­u†?d Hó@÷s°Y @  t®v†?d ˆó@׆²§ @  t¯w†?d Èó@ê–‰; @  t°x†?d ô@óØz4 @  t±y†?d Hô@§€M @  t²z†?d ˆô@#R‚³ @  t³{†?d Èô@ À @  t´|†?d õ@ð@L— @  tµ}†?d Hõ@?¶î @  t¶~†?d ˆõ@ Ê´ @  t·†?d Èõ@¥ «ß @  t¸€†?d ö@8N  @  t¹†?d Hö@È1ñg @  tº‚†?d ˆö@èÄó™ @  t»ƒ†?d Èö@ëž±U @  t¼„†?d ÷@;Ö=½ @  t½…†?d H÷@Ë©ÇÄ @  t¾††?d ˆ÷@ë\Å: @  t¿‡†?d È÷@iMß„ @  tÀˆ†?d ø@]²S™ @  tÁ‰†?d Hø@­Í©à @  tÂІ?d ˆø@8« @  tˆ?d Èø@ŽbéÒ @  tÄŒ†?d ù@^*e: @  tņ?d Hù@®UŸC @  tÆކ?d ˆù@Ž ½ @  tdž?d Èù@{Aú- @  tȆ?d ú@æZì @  tÉ‘†?d Hú@z • @  tÊ’†?d ˆú@6¢k @  tË“†?d Èú@5Õà§ @  tÌ”†?d û@ålO @  tÍ•†?d Hû@â–6 @  tΖ†?d ˆû@5”È @  tÏ—†?d Èû@¯T @  tИ†?d ü@I\[ @  tÑ™†?d Hü@á6¦" @  tÒš†?d ˆü@ÁäÜ @  tÓ›†?d Èü@™æ @  tÔœ†?d ý@Ñjø @  tÕ†?d Hý@â® @  tÖž†?d ˆý@Â[’ @  tן†?d Èý@ª Ì3 @  tØ †?d þ@7Ilò @  tÙ¡†?d Hþ@Ç6–‹ @  tÚ¢†?d ˆþ@çÔu @  tÛ£†?d Èþ@ä™Ö¹ @  tܤ†?d ÿ@4ÑZQ @  tÝ¥†?d Hÿ@Ä® ( @  tÞ¦†?d ˆÿ@ä[¢Ö @  tßuÐA§†?d Èÿ@ÈM¾ú @  tਆ?d A‡ù–  @  tᩆ?d `Aw†lr @  t⪆?d€  A#°r* @  u«†?d àAÁ«xÏ @  u¬†?d Aãô' @  u­†?d `A$Õõ³ @  u®†?d  A ÷M @  u¯†?d àA?sϧ @  u°†?d A¢7of @  u±†?d `AœúÊe @  u²†?d  A¼È› @  u ³†?d àAzqº @  u ´†?d AªTýR @  u µ†?d `AŸbüÆ @  u ¶†?d  A¿—þ8 @  u ·†?d àAᔤ> @  u¸†?d AøÚW1 @  u¹†?d `Ak¶ÌÒ @  uº†?d  AKCÎ, @  u»†?d àAPw  @  u¼†?d A]ûå @  u½†?d `Ah.úq @  u¾†?d  AHÛø @  u¿†?d àAoì¨ @  uÀ†?d Aƒ+Li @  uÁ†?d `A½æéj @  u†?d  Aë” @  uÆ?d àA[Rµ @  uĆ?d A‹HÞ] @  uņ?d `A¾~ßÉ @  uƆ?d  Až‹Ý7 @  udž?d àAÀˆ‡1 @  uȆ?d Aôw , @  uɆ?d `Av· @  u ʆ?d  AVèµ @  u!ˆ?d àAû   @  u"̆?d A@³€H @  u#͆?d ` Au…Ü @  u$Ά?d   AUpƒ" @  u%φ?d à An#»È @  u&І?d Aóg  @  u'ц?d ` Aͪ¾  @  u(Ò†?d   Aí_¼ô @  u)Ó†?d à A+LÕ @  u*Ô†?d Aû‰= @  u+Õ†?d ` AÎ2ˆ© @  u,Ö†?d   AîÇŠW @  u-׆?d à A°ÄÐQ @  u.؆?d A©Š#^ @  u/Ù†?d ` A:渽 @  u0Ú†?d   AºC @  u1Û†?d à AÜb @  u2܆?d A HŠ @  u3݆?d ` A9~Ž @  u4Þ†?d   A‹Œà @  u5߆?d à A¿oÖ @  u6à†?d A"+- @  u7á†?d `Aæˆ @  u8â†?d  A<Šê @  u9ã†?d àAú3Ë @  u:ä†?d A*H¿# @  u;å†?d `A~¾· @  u<æ†?d  A?‹¼I @  u=ç†?d àAaˆæO @  u>è†?d AßVZý @  u?é†?d `Aó;à< @  u@ê†?d  AÓÎâ @  uAë†?d àAÝ[ã @  uBì†?d AÅ•×  @  uCí†?d `Að£ÖŸ @  uDî†?d  AÐVÔa @  uEï†?d àAëì‹ @  uFð†?d AvALJ @  uGñ†?d `AHŒéI @  uHò†?d  Ahyë· @  uIó†?d àA®jR– @  uJô†?d A~"Þ~ @  uKõ†?d `AKßê @  uLö†?d  AkáÝ @  uM÷†?d àA5⇠@  uNø†?d A,¬t @  uOù†?d `A¿Àïþ @  uPú†?d  AŸ5í @  uQû†?d àAY&T! @  uRü†?d A‰nØÉ @  uSý†?d `A¼XÙ] @  uTþ†?d  Aœ­Û£ @  uUÿ†?d àA¨¸Î @  uV‡?d A5ünÛ @  uW‡?d `A 1ËØ @  uX‡?d  A+ÄÉ& @  uY‡?d àAí×p @  uZ‡?d A=Ÿüï @  u[‡?d `A©ý{ @  u\‡?d  A(\ÿ… @  u]‡?d àAv_¥ƒ @  u^‡?d AB )ž @  u_ ‡?d `AÀÊ•Í @  u` ‡?d  Aà?—3 @  ua ‡?d àA&,. @  ub ‡?d Aöd¢ú @  uc ‡?d `AÃR£n @  ud‡?d  Aã§¡ @  ue‡?d àAØô™z @  uf‡?d AE°9» @  ug‡?d `A{}œ¸ @  uh‡?d  A[ˆžF @  ui‡?d àA›'g @  uj‡?d AMÓ« @  uk‡?d `Axåª @  ul‡?d  AX¨å @  um‡?d àAòã @  un‡?d A]ì @  uo‡?d `AŒ1š @  up‡?d  A¬Ä˜ñ @  uq‡?d àAj×!Ð @  ur‡?d AºŸ­8 @  us‡?d `A©¬¬ @  ut‡?d  A¯\®R @  uu‡?d àA ¸¯d @  uv ‡?d A”ü¥ @  uw!‡?d `Aª1ª¦ @  ux"‡?d  AŠÄ¨X @  uy#‡?d àAL×y @  uz$‡?d AœŸ‘ @  u{%‡?d `A©©œ @  u|&‡?d  A‰\žûuÐ A @  u}'‡?d àA×_Äý @  u~(‡?d 8 A¦T› @  u)‡?d x Aiok @  u€*‡?d ¸ AIš’• @  u+‡?d ø A‰+´ @  u‚,‡?d 8!A_Á§\ @  uƒ-‡?d x!Aj÷¦È @  u„.‡?d ¸!AJ¤6 @  u…/‡?d ø!AqQœÜ @  u†0‡?d 8"Aì< @  u‡1‡?d x"AÒØ™ @  uˆ2‡?d ¸"Aò-›à @  u‰3‡?d ø"A4>"Á @  uŠ4‡?d 8#Aäv®) @  u‹5‡?d x#AÑ@¯½ @  uŒ6‡?d ¸#Añµ­C @  u7‡?d ø#A¯¶÷E @  uŽ8‡?d 8$A¶øJ @  u9‡?d x$A%”Ÿ© @  u:‡?d ¸$AaW @  u‘;‡?d ø$AÃr$v @  u’<‡?d 8%A:¨ž @  u“=‡?d x%A& ©  @  u”>‡?d ¸%Aù«ô @  u•?‡?d ø%APM¿Ó @  u–@‡?d 8&AÍ  @  u—A‡?d x&Aóĺ @  u˜B‡?d ¸&AÓ1¸ï @  u™C‡?d ø&A"Î @  ušD‡?d 8'AÅj& @  u›E‡?d x'Að\Œ² @  uœF‡?d ¸'AЩŽL @  uG‡?d ø'AŽªÔJ @  užH‡?d 8(AºUXW @  uŸI‡?d x(A8?ä @  u J‡?d ¸(AÊæú @  u¡K‡?d ø(AÞÙ_Û @  u¢L‡?d 8)A‘Ó3 @  u£M‡?d x)A;§Ò§ @  u¤N‡?d ¸)ARÐY @  u¥O‡?d ø)A è³ @  u¦P‡?d 8*A½EHr @  u§Q‡?d x*Aƒˆíq @  u¨R‡?d ¸*A£}ï @  u©S‡?d ø*AenV® @  uªT‡?d 8+Aµ&ÚF @  u«U‡?d x+A€ÛÒ @  u¬V‡?d ¸+A åÙ, @  u­W‡?d ø+Aþæƒ* @  u®X‡?d 8,Aç¨p% @  u¯Y‡?d x,AtÄëÆ @  u°Z‡?d ¸,AT1é8 @  u±[‡?d ø,A’"P @  u²\‡?d 8-ABjÜñ @  u³]‡?d x-Aw\Ýe @  u´^‡?d ¸-AW©ß› @  uµ_‡?d ø-AñMÞ­ @  u¶`‡?d 8.Al ~l @  u·a‡?d x.ARÄÛo @  u¸b‡?d ¸.Ar1Ù‘ @  u¹c‡?d ø.A´"`° @  uºd‡?d 8/AdjìX @  u»e‡?d x/AQ\íÌ @  u¼f‡?d ¸/Aq©ï2 @  u½g‡?d ø/A/ªµ4 @  u¾h‡?d 80A‘t † @  u¿i‡?d x0A½³G @  uÀj‡?d ¸0Aì±¹ @  uÁk‡?d ø0A[ÿ˜ @  uÂl‡?d 81A‹·„p @  uÃm‡?d x1A¾…ä @  uÄn‡?d ¸1Ažt‡ @  uÅo‡?d ø1A¥'¿ð @  uÆp‡?d 82A8c1 @  uÇq‡?d x2A®º2 @  uÈr‡?d ¸2A&[¸Ì @  uÉs‡?d ø2AàHí @  uÊt‡?d 83A0 @  uËu‡?d x3A6Œ‘ @  uÌv‡?d ¸3A%ÃŽo @  uÍw‡?d ø3A{ÀÔi @  uÎx‡?d 84AbŽ'f @  uÏy‡?d x4Añâ¼… @  uÐz‡?d ¸4AѾ{ @  uÑ{‡?d ø4AZ @  uÒ|‡?d 85AÇL‹² @  uÓ}‡?d x5AòzŠ& @  uÔ~‡?d ¸5AÒˆØ @  uÕ‡?d ø5A™ýÈm @  uÖ€‡?d 86A¹h¬ @  uׇ?d x6A:tͯ @  uØ‚‡?d ¸6AÏQ @  uÙƒ‡?d ø6AÜ’vp @  uÚ„‡?d 87A Úú˜ @  uÛ…‡?d x7A9ìû  @  u܆‡?d ¸7Aùò @  u݇‡?d ø7AG£ô @  uÞˆ‡?d 88Aså/é @  u߉‡?d x8Añ“º @  uàЇ?d ¸8AÑz‘D @  u዇?d ø8Ai(e @  u⌇?d€ 89AfS @  v‡?d x9AÒ0 @  vއ?d ¸9AòäÎ @  v‡?d ø9A þÛÉ @  v‡?d 8:A‘º{ @  v‘‡?d x:AaÅq @  v’‡?d ¸:AA0ƒ @  v“‡?d ø:AI‘eÔ @  v”‡?d 8;A™Ùé< @  v •‡?d x;Ai¦E @  v –‡?d ¸;AIS» @  v —‡?d ø;AÒ°P @  v ˜‡?d 8A@öM @  v¡‡?d x>A°‰·o @  v¢‡?d ¸>A|µ‘ @  v£‡?d ø>A˜ÝSÊ @  v¤‡?d 8?AH•ß" @  v¥‡?d x?A¸ê%[ @  v¦‡?duÐ@A7 ¸?A˜'¥ @  v§‡?d ø?AU†N @  v¨‡?d P@AÀùeë @  v;LJ?d HA8_à @  v<ȇ?d PHA‘©H @  v=ɇ?d HAò§D @  v>ʇ?d ÐHAA#°š @  v?ˇ?d IA ûÒ5 @  v@̇?d PIA‹jÅë @  vA͇?d IAÙq*² @  vB·?d ÐIA[à=l @  vCχ?d JAº/It @  vDЇ?d PJA8¾^ª @  vEч?d JAj¥±ó @  vFÒ‡?d ÐJAè4¦- @  vGÓ‡?d KA²LÛ@ @  vHÔ‡?d PKA0ÝÌž @  vIÕ‡?d KAbÆ#Ç @  vJÖ‡?d ÐKAàW4 @  vKׇ?d LAàÂq# @  vL؇?d PLAbSfý @  vMÙ‡?d LA0H‰¤ @  vNÚ‡?d ÐLA²Ùžz @  vOÛ‡?d MAEÝ÷ @  vP܇?d PMAÇ‘Ê) @  vQ݇?d MA•Š%p @  vRÞ‡?d ÐMA2® @  vS߇?d NAkcj @  vTà‡?d PNAéòh´ @  vUá‡?d NA»é‡í @  vVâ‡?d ÐNA9x3 @  vWã‡?d OAcí^ @  vXä‡?d POAá‘ú€ @  vYå‡?d OA³ŠÙ @  vZæ‡?d ÐOA1 @  v[ç‡?d PA–€ @  v\è‡?d PPA^ @  v]é‡?d PAF”ð @  v^ê‡?d ÐPAÄçÙ @  v_ë‡?d QA"Úƒä @  v`ì‡?d PQA K”: @  vaí‡?d QAòP{c @  vbî‡?d ÐQApÁl½ @  vcï‡?d RA‘¥ @  vdð‡?d PRAŸ{ @  veñ‡?d RAA„à" @  vfò‡?d ÐRAÃ÷ü @  vgó‡?d SA™mŠ‘ @  vhô‡?d PSAüO @  viõ‡?d SAIçr @  vjö‡?d ÐSAËveÈ @  vk÷‡?d TAËã ò @  vlø‡?d PTAIr7, @  vmù‡?d TAiØu @  vnú‡?d ÐTA™øÏ« @  voû‡?d UAn!Œ& @  vpü‡?d PUAì°›ø @  vqý‡?d UA¾«t¡ @  vrþ‡?d ÐUA<:c @  vsÿ‡?d VA7€ Û @  vtˆ?d PVAµ @  vuˆ?d VAç ó\ @  vvˆ?d ÐVAe›ä‚ @  vwˆ?d WA?ã™ï @  vxˆ?d PWA½rŽ1 @  vyˆ?d WAïiah @  vzˆ?d ÐWAmøv¶ @  v{ˆ?d XA@ÜLž @  v|ˆ?d PXAÂM[@ @  v} ˆ?d XAV´ @  v~ ˆ?d ÐXAÇ£Ç @  v ˆ?d YA¹IñY @  v€ ˆ?d PYA;Øæ‡ @  v ˆ?d YAià Þ @  v‚ˆ?d ÐYAëR @  vƒˆ?d ZA j @  v„ˆ?d PZAˆ }Æ @  v…ˆ?d ZAÚ’Ÿ @  v†ˆ?d ÐZAX†…A @  v‡ˆ?d [Aþø, @  vˆˆ?d P[A€oïò @  v‰ˆ?d [AÒt« @  vŠˆ?d Ð[APåu @  v‹ˆ?d \APpRO @  vŒˆ?d P\AÒáE‘ @  vˆ?d \A€úªÈ @  vŽˆ?d Ð\Ak½ @  vˆ?d ]Aõ²þ› @  vˆ?d P]Aw#éE @  v‘ˆ?d ]A%8 @  v’ˆ?d Ð]A§©Â @  v“ˆ?d ^AÛÑ\ @  v” ˆ?d P^AY@KØ @  v•!ˆ?d ^A [¤ @  v–"ˆ?d Ð^A‰Ê³_ @  v—#ˆ?d _AÓ²Î2 @  v˜$ˆ?d P_AQ#Ùì @  v™%ˆ?d _A86µ @  vuÐ`Aš&ˆ?d Ð_A©!k @  v›'ˆ?d (`A&Š"Æ @  vœ(ˆ?d h`A¤5 @  v)ˆ?d ¨`AöÚA @  vž*ˆ?d è`At‘ÍŸ @  vŸ+ˆ?d (aA’N©¢ @  v ,ˆ?d haAß¾| @  v¡-ˆ?d ¨aABÄQ% @  v¢.ˆ?d èaAÀUFû @  v£/ˆ?d (bA!š2ã @  v¤0ˆ?d hbA£ %= @  v¥1ˆ?d ¨bAñÊd @  v¦2ˆ?d èbAsݺ @  v§3ˆ?d (cA)ù × @  v¨4ˆ?d hcA«h·  @  v©5ˆ?d ¨cAùsXP @  vª6ˆ?d ècA{âOŽ @  v«7ˆ?d (dA{w ´ @  v¬8ˆ?d hdAùæj @  v­9ˆ?d ¨dA«ýò3 @  v®:ˆ?d èdA)låí @  v¯;ˆ?d (eAÞµ¦` @  v°<ˆ?d heA\$±¾ @  v±=ˆ?d ¨eA?^ç @  v²>ˆ?d èeAŒ®I9 @  v³?ˆ?d (fA†ì @  v´@ˆ?d hfA‚2 @  vµAˆ?d ¨fAÐ ék @  v¶Bˆ?d èfARþµ @  v·Cˆ?d (gAåƒØ @  v¸Dˆ?d hgAŠt” @  v¹Eˆ?d ¨gAØo{_ @  vºFˆ?d ègAZþl @  v»Gˆ?d (hAwÚV© @  v¼Hˆ?d hhAõKAw @  v½Iˆ?d ¨hA§P®. @  v¾Jˆ?d èhA%Á¹ð @  v¿Kˆ?d (iAmÛ_ @  vÀLˆ?d hiAïˆÌ @  vÁMˆ?d ¨iA½“#Ø @  vÂNˆ?d èiA?4 @  vÃOˆ?d (jAÞÍ@ @  vÄPˆ?d hjA\\WÀ @  vÅQˆ?d ¨jAG¸™ @  vÆRˆ?d èjAŒÖ¯G @  vÇSˆ?d (kAÖ®Ò* @  vÈTˆ?d hkAT?Åô @  vÉUˆ?d ¨kA$*­ @  vÊVˆ?d èkA„µ=s @  vËWˆ?d (lA„ xI @  vÌXˆ?d hlA±o— @  vÍYˆ?d ¨lATª€Î @  vÎZˆ?d èlAÖ;— @  vÏ[ˆ?d (mA!âÔ @  vÐ\ˆ?d hmA£sÃC @  vÑ]ˆ?d ¨mAñh, @  vÒ^ˆ?d èmAsù;Ä @  vÓ_ˆ?d (nAv @  vÔ`ˆ?d hnAaÞ @  vÕaˆ?d ¨nAß Ž‡ @  vÖbˆ?d ènA]š™Y @  v×cˆ?d (oAâä4 @  vØdˆ?d hoA…sóê @  vÙeˆ?d ¨oA×h³ @  vÚfˆ?d èoAUù m @  vÛgˆ?d (pAòüê @  vÜhˆ?d hpApm4 @  vÝiˆ?d ¨pA"vùm @  vÞjˆ?d èpA çî³ @  vßkˆ?d (qAF8ŠŽ @  vàlˆ?d hqAÄ©P @  vámˆ?d ¨qA–²r  @  vânˆ?d€ èqA`àyq @  woˆ?d (rA`nE@ @  wpˆ?d hrAâÿRž @  wqˆ?d ¨rAu­F* @  wrˆ?d èrA÷+vò @  wŠˆ?d èxA¼ºa, @  w‹ˆ?d (yA(pC; @  wŒˆ?d hyAªáTå @  wˆ?d ¨yAŠïý– @  w Žˆ?d èyA~êH @  w!ˆ?d (zA,øe½ @  w"ˆ?d hzA®irc @  w#‘ˆ?d ¨zA9;f× @  w$’ˆ?d èzA»ªq  @  w%“ˆ?d ({A/`S @  w&”ˆ?d h{A­ñDÀ @  w'•ˆ?d ¨{A1Xôã @  w(–ˆ?d è{A³Éã= @  w)—ˆ?d (|Av]ê @  w*˜ˆ?d h|Aô„J4 @  w+™ˆ?d ¨|AcÖ^€ @  w,šˆ?d è|AáGI^ @  w-›ˆ?d (}AukI @  w.œˆ?d h}A÷|— @  w/ˆ?d ¨}AÆòT @  w0žˆ?d è}AD…åŠ @  w1Ÿˆ?d (~Aý´S£ @  w2 ˆ?d h~A%D} @  w3¡ˆ?d ¨~AèwPÉ @  w4¢ˆ?d è~AjæG @  w5£ˆ?d (Aþ,e @  w6¤ˆ?d hA|½rÞ @  w7¥ˆ?d ¨AuЀA'àÂý @  w8¦ˆ?d èAb…Õ# @  w9§ˆ?d @€AЩz @  w:¨ˆ?d €€Að\xq @  w;©ˆ?d À€AÅjyå @  w<ªˆ?d A"õ  @  w=«ˆ?d @AÓ1L, @  w>¬ˆ?d €AóÄNÒ @  w?­ˆ?d ÀAß©ô @  w@®ˆ?d ‚ABíTÒ @  wA¯ˆ?d @‚Ay¾l8 @  wB°ˆ?d €‚AYKnÆ @  wC±ˆ?d À‚Al}oR @  wD²ˆ?d ƒA¼5㺠@  wE³ˆ?d @ƒAz&Z› @  wF´ˆ?d €ƒAZÓXe @  wGµˆ?d ÀƒAdýf @  wH¶ˆ?d „A}Pi @  wI·ˆ?d @„A#STo @  wJ¸ˆ?d €„A¦V‘ @  wK¹ˆ?d À„A6W @  wLºˆ?d …AæØÛí @  wM»ˆ?d @…A ËbÌ @  wN¼ˆ?d €…A>`2 @  wO½ˆ?d À…A“RûÑ @  wP¾ˆ?d †A[ @  wQ¿ˆ?d @†AX¢O7 @  wRÀˆ?d €†AxWMÉ @  wSÁˆ?d À†AMaL] @  wTˆ?d ‡A)Àµ @  wUÈ?d @‡A[:y” @  wVĈ?d €‡A{Ï{j @  wWň?d À‡AEÞi @  wXƈ?d ˆAqýRt @  wYLj?d @ˆA/þr @  wZȈ?d €ˆA Œ @  w[Ɉ?d ÀˆA:=  @  w\ʈ?d ‰Aêu‡ð @  w]ˈ?d @‰A,f>Ñ @  w^̈?d €‰A “î{ @  wˆöˆ?d ”AJpt @  w‰÷ˆ?d @”AsGr @  wŠøˆ?d €”A4†EŒ @  w‹ùˆ?d À”A°D @  wŒúˆ?d •AÑøÈð @  wûˆ?d @•AëqÑ @  wŽüˆ?d €•A7s/ @  wýˆ?d À•A¤rèÌ @  wþˆ?d –A96H  @  w‘ÿˆ?d @–A #]´ @  w’‰?d €–A-Ö_J @  w“‰?d À–Aà^Þ @  w”‰?d —AȨÒ6 @  w•‰?d @—A»k @  w–‰?d €—A.Nié @  w—‰?d À—AƒÌê @  w˜‰?d ˜A$|@÷ @  w™‰?d @˜Azñ @  wš‰?d €˜AZŠ @  w› ‰?d À˜Ao¼› @  wœ ‰?d ™A¿ô•s @  w ‰?d @™Ayç,R @  wž ‰?d €™AY.¬ @  wŸ ‰?d À™AÛx’ÿ @  w ‰?d šAF<2> @  w¡‰?d @šA}o Ô @  w¢‰?d €šA]š* @  w£‰?d ÀšAh¬ ¾ @  w¤‰?d ›A¸ä…V @  w¥‰?d @›A~÷‰ @  w§‰?d À›A`Ï›Š @  w¨‰?d œAyh… @  w©‰?d @œA'‚2ƒ @  wª‰?d €œAw0} @  w«‰?d ÀœA2A1é @  w¬‰?d Aâ ½ @  w­‰?d @A$  @  w®‰?d €AïÞ @  w¯‰?d ÀA—ƒ= @  w°‰?d žA Ç=ü @  w±‰?d @žA¬#<Ê @  w² ‰?d €žAŒÖ>4 @  w³!‰?d ÀžA¹à?  @  w´"‰?d ŸAi¨³H @  wµ#‰?d @ŸA¯» i @  w¶$‰?d €ŸAN— @  w·%‰uРA?d ÀŸA±ƒ­” @  w¸&‰?d  AÀˆsò @  w¹'‰?d X Až‹)ô @  wº(‰?d ˜ A¾~+  @  w»)‰?d Ø A‹H*ž @  w¼*‰?d ¡A[¦v @  w½+‰?d X¡AW @  w¾,‰?d ˜¡A½æ© @  w¿-‰?d Ø¡A‘‹§h @  wÀ.‰?d ¢A Ï© @  wÁ/‰?d X¢A7œ?C @  wÂ0‰?d ˜¢Ai=½ @  wÃ1‰?d Ø¢A"_<) @  wÄ2‰?d £Aò°Á @  wÅ3‰?d X£A4 à @  wÆ4‰?d ˜£Añ  @  wÇ5‰?d Ø£A*<® @  wÈ6‰?d ¤A3r] @  wÉ7‰?d X¤Amq @  wÊ8‰?d ˜¤AM„ê @  wË9‰?d ؤAx²~ @  wÌ:‰?d ¥A¨úˆ– @  wÍ;‰?d X¥Ané1· @  wÎ<‰?d ˜¥AN3I @  wÏ=‰?d Ø¥AÝp¨ª @  wÐ>‰?d ¦A@4k @  wÑ?‰?d X¦A€L @  wÒ@‰?d ˜¦A6u² @  wÓA‰?d ئAC& @  wÔB‰?d §AÓ “Î @  wÕC‰?d X§A*ï @  wÖD‰?d ˜§A5í( @  w×E‰?d اA  @  wØF‰?d ¨A?ß @  wÙG‰?d X¨AaÜ[  @  wÚH‰?d ˜¨AA)Y÷ @  wÛI‰?d بAtXc @  wÜJ‰?d ©A¤WÔ‹ @  wÝK‰?d X©AbDmª @  wÞL‰?d ˜©AB±oT @  wßM‰?d Ø©AÀÛÓ @  wàN‰?d ªA]ŸsÆ @  wáO‰?d XªAfÌK, @  wâP‰?d€ ˜ªAn£]€ @  xQ‰?d تAºÔ= @  xR‰?d «Ajœ˜Õ @  xS‰?d X«AiÆÚ @  xT‰?d ˜«AI3Øç @  xU‰?d Ø«A¹L"ž @  xV‰?d ¬A Ñ‘ @  xW‰?d X¬A0³Ôí @  xX‰?d ˜¬AFÖ @  x Y‰?d جAà9,j @  x Z‰?d ­A0q ‚ @  x [‰?d X­A3+âN @  x \‰?d ˜­AÞà° @  x ]‰?d Ø­Aã¡É @  x^‰?d ®A~åº @  x_‰?d X®A»Ú¤ @  x`‰?d ˜®A›çØZ @  xa‰?d Ø®Ak˜"# @  xb‰?d ¯A»Ð®Ë @  xc‰?d X¯A¸Šì @  xd‰?d ˜¯A˜îù @  xe‰?d دAh€ @  xf‰?d °AÖÞ¨2 @  xg‰?d X°AFo­N @  xh‰?d ˜°Af𝰠@  xi‰?d ذA–åUÉ @  xj‰?d ±AF­Ù! @  xk‰?d X±AE÷›í @  xl‰?d ˜±Ae™ @  xm‰?d رA•}cj @  xn‰?d ²A9ë @  xo‰?d X²AA½k @  x p‰?d ˜²AaŠ¿• @  x!q‰?d زA‘õEì @  x"r‰?d ³AA½É @  x#s‰?d X³ABç‹È @  x$t‰?d ˜³Ab‰6 @  x%u‰?d سA’msO @  x&v‰?d ´A‹#€@ @  x'w‰?d X´A’…< @  x(x‰?d ˜´A;g‡Â @  x)y‰?d Ø´AË}» @  x*z‰?d µAPñS @  x+{‰?d XµA!ÍoJ @  x, |‰?d ˜µA8m´ @  x- }‰?d صAñG—Í @  x. ~‰?d ¶Al7  @  x/ ‰?d X¶ADb# @  x0 €‰?d ˜¶Ad—Ý @  x1 ‰?d ضA”èî¤ @  x2 ‚‰?d ·AD bL @  x3 ƒ‰?d X·AGú € @  x4 „‰?d ˜·Ag"~ @  x5 …‰?d Ø·A—pØ @  x6 †‰?d ¸A£T @  x7 ‡‰?d X¸A3>Qf @  x8 ˆ‰?d ˜¸AËS˜ @  x9 ‰‰?d ظAã´©á @  x: Љ?d ¹A3ü%  @  x; ‹‰?d X¹A0¦gÅ @  x< Œ‰?d ˜¹ASe; @  x= ‰?d عAà,ŸB @  x> މ?d ºA}h?ƒ @  x? ‰?d XºAš)GÑ @  x@ ‰?d ˜ºAºÜE/ @  xA ‘‰?d غAJ£¿V @  xB ’‰?d »Ašë3¾ @  xC “‰?d X»A™±qr @  xD ”‰?d ˜»A¹DsŒ @  xE •‰?d Ø»AI;‰õ @  xF –‰?d ¼APuzú @  xG —‰?d X¼AÀĆ @  xH ˜‰?d ˜¼Aà1}x @  xI ™‰?d ؼAN‡ @  xJ š‰?d ½AÀ é @  xK ›‰?d X½AÃ\I% @  xL œ‰?d ˜½Aã©KÛ @  xM ‰?d ؽAÖ±¢ @  xN ž‰?d ¾AŽ’c @  xO Ÿ‰?d X¾AKeqÏ @  xP  ‰?d ˜¾Aks1 @  xQ ¡‰?d ؾA›ï‰H @  xR ¢‰?d ¿AK§  @  xS £‰?d X¿AHýGl @  xT ¤‰?d ˜¿AhE’ @uÐÀA  xU ¥‰?d Ø¿A¡°c> @  xV¦‰?d 0ÀAÅ@2l @  xW§‰?d pÀAUñ7 @  xX¨‰?d °ÀAu5î @  xY©‰?d ðÀA…{Ï— @  xZª‰?d 0ÁAU3C @  x[«‰?d pÁAVi³ @  x\¬‰?d °ÁAvœM @  x]­‰?d ðÁA†ãù4 @  x^®‰?d 0ÂA§Yõ @  x_¯‰?d pÂARá'5 @  x`°‰?d °ÂAr%Ë @  xa±‰?d ðÂA‚kß² @  xb²‰?d 0ÃAR#SZ @  xc³‰?d pÃAQy– @  xd´‰?d °ÃAqŒh @  xeµ‰?d ðÃAóé @  xf¶‰?d 0ÄA˜½ @  xg·‰?d pÄA b @  xh¸‰?d °ÄA(ùœ @  xi¹‰?d ðÄA؆çå @  xjº‰?d 0ÅAÎk  @  xk»‰?d pÅA ”)Á @  xl¼‰?d °ÅA+a+? @  xm½‰?d ðÅAÛÑF @  xn¾‰?d 0ÆAFZq‡ @  xo¿‰?d pÆAsý: @  xpÀ‰?d °ÆASÄ @  xqÁ‰?d ðÆA£wü½ @  xr‰?d 0ÇAs?pU @  xsÉ?d pÇApe2™ @  xtĉ?d °ÇAP0g @  xuʼn?d ðÇA ïÊ @  xvƉ?d 0ÈA”F @  xwlj?d pÈA¡C @  xxȉ?d °ÈA$TA @  xyɉ?d ðÈAÔ+»ø @  xzʉ?d 0ÉAc7 @  x{ˉ?d pÉA9uÜ @  x|̉?d °ÉA'Ìw" @  x}͉?d ðÉA׳[ @  x~Ή?d 0ÊAJ÷-š @  xω?d pÊANàeù @  x€Љ?d °ÊAng @  xщ?d ðÊAžj~ @  x‚Ò‰?d 0ËAN"– @  xƒÓ‰?d pËAMxSZ @  x„Ô‰?d °ËAmQ¤ @  x…Õ‰?d ðËAò«Ý @  x†Ö‰?d 0ÌA„¼XÒ @  x‡׉?d pÌA ]® @  xˆ؉?d °ÌA4ø_P @  x‰Ù‰?d ðÌAć¥) @  xŠÚ‰?d 0ÍAÏ)Á @  x‹Û‰?d pÍA•k  @  xŒ܉?d °ÍA7`ió @  x݉?d ðÍAÇ“Š @  xŽÞ‰?d 0ÎAZ[3K @  x߉?d pÎAŸ¬Sç @  xà‰?d °ÎA¿YQ @  x‘á‰?d ðÎAO&«` @  x’â‰?d 0ÏAŸn'ˆ @  x“ã‰?d pÏAœ4eD @  x”ä‰?d °ÏA¼Ágº @  x•å‰?d ðÏAL¾Ã @  x–æ‰?d 0ÐAò`!q @  x—ç‰?d pÐAbÑ$  @  x˜è‰?d °ÐAB$&ó @  x™é‰?d ðÐA²[ÜŠ @  xšê‰?d 0ÑAbPb @  x›ë‰?d pÑAaI® @  xœì‰?d °ÑAA¼P @  xí‰?d ðÑA±Ãê) @  xžî‰?d 0ÒA,‡Jè @  xŸï‰?d pÒAeÁ4( @  x ð‰?d °ÒAE46Ö @  x¡ñ‰?d ðÒAµK̯ @  x¢ò‰?d 0ÓAe@G @  x£ó‰?d pÓAfY‹ @  x¤ô‰?d °ÓAF¬u @  x¥õ‰?d ðÓA¶Óú  @  x¦ö‰?d 0ÔA¯  @  x§÷‰?d pÔA?,  @  x¨ø‰?d °ÔAÙ @  x©ù‰?d ðÔAï¦ôø @  xªú‰?d 0ÕA?îx @  x«û‰?d pÕA<´:Ü @  x¬ü‰?d °ÕAA8" @  x­ý‰?d ðÕAì>Â[ @  x®þ‰?d 0ÖAqzbš @  x¯ÿ‰?d pÖA”^#œ @  x°Š?d °ÖA´«!b @  x±Š?d ðÖADÔÛ @  x²Š?d 0×A”œWó @  x³Š?d p×A—Æ? @  x´Š?d °×A·3Á @  xµŠ?d ð×AGLí¸ @  x¶Š?d 0ØAs³a¥ @  x·Š?d pØAãdÙ @  x¸Š?d °ØAÃ÷f' @  x¹ Š?d ðØA3ˆœ^ @  xº Š?d 0ÙAãÀ¶ @  x» Š?d pÙAàšRz @  x¼ Š?d °ÙAÀoP„ @  x½ Š?d ðÙA0ªý @  x¾Š?d 0ÚA­T < @  x¿Š?d pÚAJrn @  xÀŠ?d °ÚAjàp @  xÁŠ?d ðÚAšŸŠé @  xŠ?d 0ÛAJ× @  xÊ?d pÛAIDÍ @  xÄŠ?d °ÛAixF3 @  xÅŠ?d ðÛA™¼J @  xÆŠ?d 0ÜA€IOE @  xÇŠ?d pÜAøJ9 @  xÈŠ?d °ÜA0 HÇ @  xÉŠ?d ðÜAÀr²¾ @  xÊŠ?d 0ÝA:>V @  xËŠ?d pÝA`|š @  xÌŠ?d °ÝA3•~d @  xÍŠ?d ðÝAÃê„ @  xΊ?d 0ÞA^®$Ü @  xÏŠ?d pÞA›YDp @  xÐ Š?d °ÞA»¬FŽ @  xÑ!Š?d ðÞAKÓ¼÷ @  xÒ"Š?d 0ßA››0 @  xÓ#Š?d pßA˜ÁrÓ @  xÔ$Š?d uÐàA/°ßA¸4p- @  xÕ%Š?d ðßAqŒV @  xÖ &Š?d HàAh(w @  x× 'Š?d ˆàAZý+ @  xØ (Š?d ÈàAØlõ @  xÙ )Š?d áAzÊnº @  xÚ *Š?d HáAø[yd @  xÛ +Š?d ˆáAYe.ˆ @  xÜ ,Š?d ÈáAÛô9V @  xÝ -Š?d âA4^t0 @  xÞ .Š?d HâA¶Ïcî @  xß /Š?d ˆâA]í @  xà 0Š?d ÈâAß|Ð @  xá 1Š?d ãA}Ú~Ÿ @  xâ 2Š?d€ HãA‹ˆuç @  y 3Š?d ˆãAË÷j" @  y 4Š?d ÈãAIf}ü @  y 5Š?d äA瘹 @  y 6Š?d HäAeg @  y 7Š?d ˆäA™yÀA @  y 8Š?d ÈäAèן @  y 9Š?d åAwüéª @  y :Š?d HåAõmþt @  y ;Š?d ˆåA‘Ru @  y <Š?d ÈåA‹E« @  y =Š?d æA9hó  @  y >Š?d HæA»ùäþ @  y ?Š?d ˆæAO)åù @  y @Š?d ÈæA͸ò' @  y AŠ?d çA òò @  y BŠ?d HçAŽœå, @  y CŠ?d ˆçAêëI- @  y DŠ?d ÈçAhz^ó @  y EŠ?d èAë"Ĥ @  y FŠ?d HèAi³Óz @  y GŠ?d ˆèA•Ôœ\ @  y HŠ?d ÈèAE‹‚ @  y IŠ?d éA{Qµ· @  y JŠ?d HéAùÀ¢i @  y KŠ?d ˆéA·h @  y LŠ?d ÈéA&¶ @  y MŠ?d êA5ů= @  y NŠ?d HêA·T¸ã @  y OŠ?d ˆêA.c•) @  y PŠ?d ÈêA¬ò‚÷ @  y QŠ?d ëA|A¥’ @  y RŠ?d HëAþвL @  y! SŠ?d ˆëAš§M @  y" TŠ?d ÈëA6 “ @  y# UŠ?d ìA¶ßìÖ @  y$ VŠ?d HìA4Nû @  y% WŠ?d ˆìAÈ)´. @  y& XŠ?d ÈìAJ¸£ð @  y' YŠ?d íA&¬Å @  y( ZŠ?d HíA¤=Š @  y) [Š?d ˆíAÀJ& @  y* \Š?d ÈíABÛ1Ä @  y+ ]Š?d îAh8‡O @  y, ^Š?d HîAê©‘ @  y- _Š?d ˆîAî)„‡ @  y. `Š?d ÈîAl¸“Y @  y/ aŠ?d ïA­ “Œ @  y0 bŠ?d HïA/œ„R @  y1 cŠ?d ˆïAKë(S @  y2 dŠ?d ÈïAÉz? @  y3 eŠ?d ðAÀ•u @  y4 fŠ?d HðAB’‚« @  y5 gŠ?d ˆðA¾õÍ @  y6 hŠ?d ÈðA pŠ?d ÈòA‡ÓÓ& @  y? qŠ?d óAùgòÑ @  y@ rŠ?d HóA{öå @  yA sŠ?d ˆóAI @  yB tŠ?d ÈóA^Ð @  yC uŠ?d ôA3ù»• @  yD vŠ?d HôA±h¬K @  yE wŠ?d ˆôAMãm @  yF xŠ?d ÈôAÏžô³ @  yG yŠ?d õA£ŠÊ† @  yH zŠ?d HõA!ÝX @  yI {Š?d ˆõAElqY @  yJ |Š?d ÈõAÇýf‡ @  yK }Š?d öAíÐ  @  yL ~Š?d HöAoÇÒ @  yM Š?d ˆöA†™’G @  yN €Š?d ÈöA…™ @  yO Š?d ÷AŽ…L @  yP ‚Š?d H÷AG,’’ @  yQ ƒŠ?d ˆ÷A#[>“ @  yR „Š?d È÷A¡Ê)M @  yS …Š?d øA"’³ @  yT †Š?d HøA ¤Ä @  yU ‡Š?d ˆøA\dëâ @  yV ˆŠ?d ÈøAÞõü< @  yW ‰Š?d ùA²á  @  yX ŠŠ?d HùA0pÕ× @  yY ‹Š?d ˆùATyÖ @  yZ ŒŠ?d ÈùAÖ–n @  y[ Š?d úAüu؃ @  y\ ŽŠ?d HúA~äÏ] @  y] Š?d ˆúAçÓâ— @  y^ Š?d ÈúAeBõI @  y_ ‘Š?d ûAµñÒ, @  y` ’Š?d HûA7`Åò @  ya “Š?d ˆûASió @  yb ”Š?d ÈûAц~- @  yc •Š?d üAo›h @  yd –Š?d HüAýþŒ¶ @  ye —Š?d ˆüA™Ã @  yf ˜Š?d ÈüAƒÔN @  yg ™Š?d ýAïê{ @  yh šŠ?d HýAmý¥ @  yi ›Š?d ˆýA úQ¤ @  yj œŠ?d ÈýA‹kFz @  yk Š?d þA¡ˆðñ @  yl žŠ?d HþA#ç/ @  ym ŸŠ?d ˆþA'™ó9 @  yn  Š?d ÈþA¥äç @  yo ¡Š?d ÿAd½ä2 @  yp ¢Š?d HÿAæ,óì @  yq £Š?d ˆÿA‚[_í @  yr uÐB¤Š?d ÈÿA9 ”æ @  ys¥Š?d BŠ[Ê» @  yt¦Š?d `BÊÝe @  yu§Š?d  Bô­’C @  yv¨Š?d àBv<… @  yw©Š?d B(»¨ @  yxªŠ?d `B˜¹¬v @  yy«Š?d  BüÎw @  yz¬Š?d àB~_© @  y{­Š?d BT¼¡" @  y|®Š?d `BÖ-¶ü @  y}¯Š?d  BO›6 @  y~°Š?d àBÍ‹Œè @  y±Š?d BPi. @  y€²Š?d `BÒøŠð @  y³Š?d  B¶&ñ @  y‚´Š?d àB41/ @  yƒµŠ?d Bš÷Ôj @  y„¶Š?d `Bfô @  y…·Š?d  B䌒 @  y†¸Š?d àBf›L @  y‡¹Š?d B „¥y @  yˆºŠ?d `Bˆ²§ @  y‰»Š?d  Bìb¦ @  yмŠ?d àBnó x @  y‹½Š?d BD¿ó @  yŒ¾Š?d `Bƨ- @  y¿Š?d  B2Q©* @  yŽÀŠ?d àB°À¾ô @  yÁŠ?d Bqu¾! @  yŠ?d `Bóä©ÿ @  y‘Ê?d  B—“þ @  y’ÄŠ?d àB  @  y“ÅŠ?d B–Zˆw @  y”ÆŠ?d `BËŸ© @  y•ÇŠ?d  Bè¬Ð @  y–ÈŠ?d àBj=ÇQ @  y—ÉŠ?d B)ùd @  y˜ÊŠ?d ` B„¸îº @  y™ËŠ?d   BàÏB» @  yšÌŠ?d à Bb^Ue @  y›ÍŠ?d BH½ãî @  yœΊ?d ` BÊ,ô0 @  yÏŠ?d   BSÙú @  yžЊ?d à BÑŠÎ$ @  yŸÑŠ?d B9éA @  y ÒŠ?d ` Bƒ¨þŸ @  y¡ÓŠ?d   BçßRž @  y¢ÔŠ?d à BeNE@ @  y£ÕŠ?d B˧  @  y¤ÖŠ?d ` BI6·Û @  y¥׊?d   BµQøý @  y¦ØŠ?d à B7Àï# @  y§ÙŠ?d B[ÔÑ @  y¨ÚŠ?d ` BÙEÆÈ @  y©ÛŠ?d   B½2jÉ @  yªÜŠ?d à B?£} @  y«ÝŠ?d B@Ëœ @  y¬ÞŠ?d `B—ÑÜB @  y­ߊ?d  B“QÈT @  y®àŠ?d àBÀߊ @  y¯áŠ?d BÐuß_ @  y°âŠ?d `BRäÈ @  y±ãŠ?d  B6“d€ @  y²äŠ?d àB´s^ @  y³åŠ?d B½{Ù¦ @  y´æŠ?d `B?êÎx @  yµçŠ?d  BÃ^ @  y¶èŠ?d àBA–€ @  y·éŠ?d B-¨µ @  y¸êŠ?d `B¯™¿k @  y¹ëŠ?d  BËîj @  yºìŠ?d àBI´ @  y»íŠ?d Bcœ²? @  y¼îŠ?d `Bá ¥á @  y½ïŠ?d  Bx:ˆ+ @  y¾ðŠ?d àBú«Ÿõ @  y¿ñŠ?d B„¾ @  yÀòŠ?d `BŽ©Ü @  yÁóŠ?d  BbùÝ @  yÂôŠ?d àBàh @  yÃõŠ?d BN÷F @  yÄöŠ?d `BÌà˜ @  yÅ÷Š?d  B0w¯¾ @  yÆøŠ?d àB²æ¸` @  yÇùŠ?d BÞò†U @  yÈúŠ?d `B\c‘‹ @  yÉûŠ?d  B8=Š @  yÊüŠ?d àBº…*T @  yËýŠ?d Bfœß @  yÌþŠ?d `B÷‹ @  yÍÿŠ?d  B„†‹˜ @  y΋?d àBœF @  yÏ‹?d BÇ¢œ“ @  yЋ?d `BE3‹M @  yÑ‹?d  B!D'L @  yÒ‹?d àB£Õ0’ @  yÓ‹?d B ªÅ @  yÔ‹?d `B¢½ @  yÕ‹?d  B^{ò= @  yÖ‹?d àBÜêåã @  y× ‹?d B°þÛÖ @  yØ ‹?d `B2oÌ @  yÙ ‹?d  BV`  @  yÚ ‹?d àBÔ‰w× @  yÛ ‹?d BþjÁ\ @  yÜ‹?d `B|ûÖ‚ @  yÝ‹?d  BåÌûH @  yÞ‹?d àBg]ì– @  yß‹?d B·îËó @  yà‹?d `B5Ü- @  yá‹?d  BQp, @  yâ‹?d€ àBÞò @  z‹?d B]v=ž @  z‹?d `Bßç*@ @  z‹?d  BæÉž‹ @  z‹?d àBdX‰U @  z‹?d BÆþè @  z‹?d `BDoÿÄ @  z‹?d  Bîª ¿ @  z‹?d àBl;a @  z ‹?d Bƒ‘V @  z ‹?d `BAÙ @  z ‹?d  BÀÉ®" @  z  ‹?d àBBX¹ü @  z !‹?d Bàþس @  z"‹?d `BboÏm @  z#‹?d  Be öuÐ B @  z$‹?d àBçš( @  z%‹?d 8 Bä&é @  z&‹?d x Bfî17 @  z'‹?d ¸ B_À…ü @  z(‹?d ø BÝQ’" @  z)‹?d 8!B÷óm @  z*‹?d x!Býfä³ @  z+‹?d ¸!BW£È @  z,‹?d ø!BÕ2 @  z-‹?d 8"B:˜Mp @  z.‹?d x"B¸ Z® @  z/‹?d ¸"BäwŒ‰ @  z0‹?d ø"Bfæ›W @  z1‹?d 8#BÄ@ú @  z2‹?d x#BFÑíÆ @  z3‹?d ¸#BP³í @  z 4‹?d ø#BÒ"3 @  z!5‹?d 8$B¹‚› @  z"6‹?d x$B;E @  z#7‹?d ¸$B½Þò @  z$€8‹?d ø$Bý,É, @  z%€9‹?d 8%B_Ѝc @  z&€:‹?d x%BÝ¿½ @  z'€;‹?d ¸%BwÞLÆ @  z(€<‹?d ø%BõO[ @  z)€=‹?d 8&Bå~ @  z*€>‹?d x&B˜t  @  z+€?‹?d ¸&B©íûJ @  z,€@‹?d ø&B+|ì” @  z-€A‹?d 8'B‰ÚÛ @  z.€B‹?d x'B Kš @  z/€C‹?d ¸'B /Wž @  z0€D‹?d ø'B޾@@ @  z1€E‹?d 8(Bȯ!ú @  z2€F‹?d x(BJ>6$ @  z3€G‹?d ¸(Bs‚ï @  z4€H‹?d ø(Bñ•1 @  z5€I‹?d 8)BS'ô~ @  z6€J‹?d x)BѶã  @  z7€K‹?d ¸)B{sÛ @  z8€L‹?d ø)Bùâ @  z9€M‹?d 8*BHJc @  z:€N‹?d x*B”Ù]½ @  z;€O‹?d ¸*Bȧ‹š @  z<€P‹?d ø*BJ6œD @  z=€Q‹?d 8+Bèý  @  z>€R‹?d x+BjêÕ @  z?€S‹?d ¸+BÒdl @  z@€T‹?d ø+BPõ² @  zA€U‹?d 8,B;U @  zB€V‹?d x,B¹ÄÄ @  zC€W‹?d ¸,B€ê¬ @  zD€X‹?d ø,B{»Ñ @  zE€Y‹?d 8-B ÝÚž @  zF€Z‹?d x-B"LÍ@ @  zG€[‹?d ¸-Bˆ‰>; @  zH€\‹?d ø-B )å @  zI€]‹?d 8.Bå²dƒ @  zJ€^‹?d x.Bg#s] @  zK€_‹?d ¸.B¦êœ¦ @  zL€`‹?d ø.B${‹x @  zM€a‹?d 8/B†Ýê7 @  zN€b‹?d x/BLýé @  zO€c‹?d ¸/B(0r @  zP€d‹?d ø/B¹'¬ @  zQ€e‹?d 80BM‰v¹ @  zR€f‹?d x0BÏag @  zS€g‹?d ¸0Bö6Õ¬ @  zT€h‹?d ø0Bt§Âr @  zU€i‹?d 81BÖ£= @  zV€j‹?d x1BT´ã @  zW€k‹?d ¸1BþUG˜ @  zX€l‹?d ø1B|ÄPF @  zY€m‹?d 82B“n  @  zZ€n‹?d x2Bÿ þ @  z[€o‹?d ¸2BMÜÙ @  z\€p‹?d ø2BÏË @  z]€q‹?d 83Bm¶ªH @  z^€r‹?d x3Bï'½– @  z_€s‹?d ¸3BùEW½ @  z`€t‹?d ø3B{Ô@c @  za€u‹?d 84Bt^Ë @  zb€v‹?d x4B’åI @  zc€w‹?d ¸4B«ËýÞ @  zd€x‹?d ø4B)Zê @  ze€y‹?d 85B‹ü‹O @  zf€z‹?d x5B mœ‘ @  zg€{‹?d ¸5B£¨oê @  zh€|‹?d ø5B!9x4 @  zi€}‹?d 86BΓ5R @  zj€~‹?d x6BL"Œ @  zk€‹?d ¸6B`]Œô @  zl€€‹?d ø6BâÌ›* @  zm€‹?d 87B@júe @  zn€‚‹?d x7BÂûí» @  zo€ƒ‹?d ¸7BÅŸ  @  zp€„‹?d ø7BG7þ @  zq€…‹?d 88BVD @  zr€†‹?d x8BƒŽAš @  zs€‡‹?d ¸8Bº õQ @  zt€ˆ‹?d ø8B81â @  zu€‰‹?d 89Bš—ƒÀ @  zv€Š‹?d x9B” @  zw€‹‹?d ¸9B²Ãge @  zx€Œ‹?d ø9B0Rp» @  zy€‹?d 8:Bßø=Ý @  zz€Ž‹?d x:B]i* @  z{€‹?d ¸:Bü$ @  z|€‹?d ø:Bƒ†ëú @  z}€‘‹?d 8;B! е @  z~€’‹?d x;B£±k @  z€“‹?d ¸;Bø‚Aã @  z€€”‹?d ø;BzV= @  z€•‹?d 8BÏT#  @  zŠ€ž‹?d x>BMÅ4Ò @  z‹€Ÿ‹?d ¸>BŒ Û) @  zŒ€ ‹?d ø>BÌ÷ @  z€¡‹?d 8?B¬;­¸ @  zŽ€¢‹?d x?B.ªºf @  z€£‹?duÐ@B7 ¸?B)Îwý @  z€¤‹?d ø?BÖß_ @  z‘¥‹?d P@BgDÄ @  z’¦‹?d @BGhF: @  z“§‹?d Ð@BÜ"çÑ @  z”¨‹?d AB jk9 @  z•©‹?d PABü‘@ @  z–ª‹?d ABÜà“¾ @  z—«‹?d ÐABÔAuå @  z˜¬‹?d BBIÕ$ @  z™­‹?d PBB¹z/] @  zš®‹?d BB™-£ @  z›¯‹?d ÐBBg•î¤ @  zœ°‹?d CB·ÝbL @  z±‹?d PCBG¢˜5 @  zž²‹?d CBgWšË @  zŸ³‹?d ÐCBÓQeÀ @  z ´‹?d DBÊ–Ï @  z¡µ‹?d PDB:`l¶ @  z¢¶‹?d DB•nH @  z£·‹?d ÐDBßÏ£ @  z¤¸‹?d EBQ—CK @  z¥¹‹?d PEB¡è¹2 @  z¦º‹?d EB»Ì @  z§»‹?d ÐEB‰¼]— @  z¨¼‹?d FBixŽ* @  z©€½‹?d PFB™tS @  zª€¾‹?d FB¹òv­ @  z«€¿‹?d ÐFB*™g @  z¬€À‹?d GBúG @  z­€Á‹?d PGB 8ïö @  z®€‹?d GB*Íí @  z¯€Ë?d ÐGBÍ5³ @  z°€Ä‹?d HB»2¹® @  z±€Å‹?d PHBKMC× @  z²€Æ‹?d HBk¸A) @  z³€Ç‹?d ÐHBðòà @  z´€È‹?d IB ºl* @  zµ€É‹?d PIBÐÅ–S @  z¶€Ê‹?d IBð0”­ @  z·€Ë‹?d ÐIBø‘rö @  z¸€Ì‹?d JBeÕÒ7 @  z¹€Í‹?d PJB•ª(N @  zº€΋?d JBµ_*° @  z»€Ï‹?d ÐJBKEé· @  z¼€Ћ?d KB› e_ @  z½€Ñ‹?d PKBkrŸ& @  z¾€Ò‹?d KBK‡Ø @  z¿€Ó‹?d ÐKBQ†dA @  zÀ€Ô‹?d LBHÈ—N @  zÁ€Õ‹?d PLB¸·m7 @  z€Ö‹?d LB˜BoÉ @  zÀ׋?d ÐLBÎ" @  zĀ؋?d MBÓ@BÊ @  zÅ€Ù‹?d PMB#?¸³ @  zÆ€Ú‹?d MBʺM @  zÇ€Û‹?d ÐMB k\ @  zȀ܋?d NB–/ü× @  zɀ݋?d PNBfP® @  zÊ€Þ‹?d NBF¥P @  zˀߋ?d ÐNB%þ‹ @  zÌ€à‹?d OBõ@rc @  zÍ€á‹?d POB?ˆ @  z΀â‹?d OB%ÊŠä @  zÏ€ã‹?d ÐOB€ÊR_ @  zЀä‹?d PB>îí @  zÑ€å‹?d PPBÎk” @  zÒ€æ‹?d PBîžj @  zÓ€ç‹?d ÐPBuÔ· @  zÔ€è‹?d QB¥œ;i @  zÕ€é‹?d PQBUãÁ @  zÖ€ê‹?d QBuÃî @  z×€ë‹?d ÐQB}·%µ @  zØ€ì‹?d RBàó…t @  zÙ€í‹?d PRBŒ  @  zÚ€î‹?d RB0y}ó @  zÛ€ï‹?d ÐRBÎc¾ô @  zÜ€ð‹?d SB+2 @  zÝ€ñ‹?d PSBîTÈe @  zÞ€ò‹?d SBΡʛ @  z߀ó‹?d ÐSBz§5 @  zà€ô‹?d TBcéÆŸ @  zá€õ‹?d PTB“–<æ @  zâ€ö‹?d€ TBÇ "¾ @  {€÷‹?d ÐTB½«Ë| @  {€ø‹?d UBmãG” @  {€ù‹?d PUBXÕF @  {€ú‹?d UBx Dþ @  {€û‹?d ÐUB¾3ýß @  {€ü‹?d VB#w] @  {€ý‹?d PVBºø @  {€þ‹?d VB=Oúã @  { €ÿ‹?d ÐVB5SÐÌ @  { €Œ?d WBå\$ @  { €Œ?d PWBÐ-]° @  { €Œ?d WBðØ_N @  { €Œ?d ÐWB6Ëæo @  {€Œ?d XB4jr @  {€Œ?d PXB‘Xñ‘ @  {€Œ?d XB±­óo @  {€Œ?d ÐXBﮩi @  {€Œ?d YB?æ% @  {€ Œ?d PYB Ð$ @  {€ Œ?d YB*%&ë @  {€ Œ?d ÐYBì6ŸÊ @  {€ Œ?d ZBqr?  @  {€ Œ?d PZBO¿š @  {€Œ?d ZBoJ˜ö @  {€Œ?d ÐZBT  @  {€Œ?d [B„Q,ô @  {€Œ?d P[B±g-` @  {€Œ?d [B‘’/ž @  {€Œ?d Ð[BW–¿ @  {€Œ?d \BNÏe° @  {€Œ?d P\BÌ¥Ùã @  { €Œ?d \BìPÛ @  {!€Œ?d Ð\B²S @  {"€Œ?d ]Bb ó @  {#€Œ?d P]BW- g @  {$€Œ?d ]BwØ™ @  {%€Œ?d Ð]B±Ë·¸ @  {&€Œ?d ^B,y @  {'€Œ?d P^BB²z @  {(€Œ?d ^B2·°„ @  {)€Œ?d Ð^B”S±² @  {*€ Œ?d _BD=Z @  {+€!Œ?d P_Bq-<Î @  {,€"Œ?d _BQØ>0 @  {uÐ`B-€#Œ?d Ð_BêKôm @  {.$Œ?d (`BT³Aõ @  {/%Œ?d h`BÇßÚ @  {0&Œ?d ¨`Bç*Øè @  {1'Œ?d è`B¹)‚î @  {2(Œ?d (aBia @  {3)Œ?d haB\W’ @  {4*Œ?d ¨aB|¢ l @  {5+Œ?d èaBº±´M @  {6,Œ?d (bB'õŒ @  {7-Œ?d hbB8± @  {8.Œ?d ¨bB9ͳq @  {9/Œ?d èbBž‹› @  {:0Œ?d (cBÒÖs @  {;1Œ?d hcBçàç @  {<2Œ?d ¨cBÇ @  {=3Œ?d ècB½8 @  {>4Œ?d (dBHN7 @  {?5Œ?d hdB4%ôö @  {@6Œ?d ¨dBÐö @  {A7Œ?d èdBJÓ¬ @  {B8Œ?d (eBš› æ @  {C9Œ?d heB¯­!r @  {D:Œ?d ¨eBX#Œ @  {E;Œ?d èeBIKš­ @  {F<Œ?d (fBÔ:l @  {G=Œ?d hfBêŸo @  {H>Œ?d ¨fBÊ7‘ @  {I?Œ?d èfBœƒ‰¶ @  {J@Œ?d (gBLË^ @  {KAŒ?d hgByýÊ @  {LBŒ?d ¨gBY4 @  {MCŒ?d ègBŸ¿ @  {NDŒ?d (hB«ä3 @  {OEŒ?d hhB8ˆ¨ë @  {PFŒ?d ¨hB}ª @  {QGŒ?d èhBF~ð @  {RHŒ?d (iB–6|û @  {SIŒ?d hiB£}o @  {TJŒ?d ¨iBƒõ‘ @  {UKŒ?d èiBEæÆ° @  {VLŒ?d (jBØ¢fq @  {WMŒ?d hjBæoÃr @  {XNŒ?d ¨jBÆšÁŒ @  {YOŒ?d èjBýÉùf @  {ZPŒ?d (kB-uŽ @  {[QŒ?d hkB·t @  {\RŒ?d ¨kB8Bvä @  {]SŒ?d èkBþQÏÅ @  {^TŒ?d (lBç<Ê @  {_UŒ?d hlBeu€™ @  {`VŒ?d ¨lBE€‚g @  {aWŒ?d èlBƒØa @  {bXŒ?d (mBËËT‰ @  {cYŒ?d hmBþýU @  {dZŒ?d ¨mBÞWã @  {e[Œ?d èmBî @  {f\Œ?d (nB…_N @  {g]Œ?d hnB»’ë @  {h^Œ?d ¨nB›géþ @  {i_Œ?d ènB=ƒèÈ @  {j`Œ?d (oBK\ @  {k€aŒ?d hoB¥}È @  {l€bŒ?d ¨oB…ˆ6 @  {m€cŒ?d èoBC›­ @  {n€dŒ?d (pBýE¥ @  {o€eŒ?d hpBn)ŠF @  {p€fŒ?d ¨pBN܈¸ @  {q€gŒ?d èpBßÒ¾ @  {r€hŒ?d (qBÀ—^V @  {s€iŒ?d hqBõ¡_ @  {t€jŒ?d ¨qBÕT]< @  {u€kŒ?d èqBGä @  {v€lŒ?d (rBŽDÜ @  {w€mŒ?d hrB°Îáß @  {x€nŒ?d ¨rB;ã! @  {y€oŒ?d èrB«hÛË @  {z€pŒ?d (sB{ W# @  {{€qŒ?d hsBNV· @  {|€rŒ?d ¨sBnãTI @  {}€sŒ?d èsB¨ðíh @  {~€tŒ?d (tB±¾g @  {€uŒ?d htB~…”— @  {€€vŒ?d ¨tB^p–i @  {€wŒ?d ètBsÌo @  {‚€xŒ?d (uBÐ;@‡ @  {ƒ€yŒ?d huBå A @  {„€zŒ?d ¨uBÅøCí @  {…€{Œ?d èuBëúÌ @  {†€|Œ?d (vBž¯Z  @  {‡€}Œ?d hvB bÿ @  {ˆ€~Œ?d ¨vB€—ýð @  {‰€Œ?d èvBËå½E @  {Š€€Œ?d (wB­1­ @  {‹€Œ?d hwB.›09 @  {Œ€‚Œ?d ¨wBn2Ç @  {€ƒŒ?d èwBÈ}‹æ @  {Ž€„Œ?d (xBü‚û @  {€…Œ?d hxBoîœ @  {€†Œ?d ¨xBOžæ @  {‘€‡Œ?d èxBÄà @  {’€ˆŒ?d (yBÁPH @  {“€‰Œ?d hyBôfIœ @  {”€ŠŒ?d ¨yBÔ“Kb @  {•€‹Œ?d èyB€òC @  {–€ŒŒ?d (zBÄR‚ @  {—€Œ?d hzB± ÷ @  {˜€ŽŒ?d ¨zB‘üõ @  {™€Œ?d èzBª¯Í• @  {š€Œ?d ({BzçA} @  {›€‘Œ?d h{BOÑ@é @  {œ€’Œ?d ¨{Bo$B @  {€“Œ?d è{B©7û6 @  {ž€”Œ?d (|B°y9 @  {Ÿ€•Œ?d h|B2´j @  { €–Œ?d ¨|Bæ¶” @  {¡€—Œ?d è|BLåì’ @  {¢€˜Œ?d (}Bœ­`z @  {£€™Œ?d h}B©›aî @  {¤€šŒ?d ¨}B‰nc @  {¥€›Œ?d è}BO}Ú1 @  {¦€œŒ?d (~BÒ9zð @  {§€Œ?d h~Bìôßó @  {¨€žŒ?d ¨~BÌÝ  @  {©€ŸŒ?d è~BjåÜ; @  {ª€ Œ?d (Bº­PÓ @  {«€¡Œ?d hB›QG @  {¬€¢Œ?d ¨BuЀB'¯nS¹ @  {­€£Œ?d èBÖT~1 @  {®¤Œ?d @€B¸êœE @  {¯¥Œ?d €€BKKõS @  {°¦Œ?d À€BÉÚâ @  {±§Œ?d BÅ#½ @  {²¨Œ?d @BG‘4c @  {³©Œ?d €BÐà × @  {´ªŒ?d ÀBRR7  @  {µ«Œ?d ‚B‹”97 @  {¶¬Œ?d @‚B .é @  {·­Œ?d €‚B•¬žÊ @  {¸®Œ?d À‚B=‰ @  {¹¯Œ?d ƒB~·*È @  {º°Œ?d @ƒBü&= @  {»±Œ?d €ƒBkt)¢ @  {¼²Œ?d ÀƒBéå>| @  {½³Œ?d „B´)cŒ @  {¾´Œ?d @„B6¸tR @  {¿µŒ?d €„B¸±Û³ @  {À¶Œ?d À„B: Ìm @  {Á·Œ?d …B6ú ] @  {¸Œ?d @…B´kƒ @  {ùŒ?d €…B#97 @  {ĺŒ?d À…B¡¨é @  {Å»Œ?d †Bxn× @  {ƼŒ?d @†Búÿ  @  {ǽŒ?d €†BfV°* @  {ȾŒ?d À†Bäǧô @  {É¿Œ?d ‡Bàª(å @  {ÊÀŒ?d @‡Bb;?; @  {ËÁŒ?d €‡Bõi+ @  {ÌÂŒ?d À‡Bwø€?d ÀœBÞk²  @  |?€?d B£3 @  |@€?d @BŒ2$_ @  |A€?d €BÞ)Ë @  |B€?d ÀB\¸ÜØ @  |C€?d žB@7)  @  |D€?d @žB¦>Õ @  |E€?d €žB½ÑŒ @  |F€?d ÀžB,ÆR @  |G€?d ŸB(£( @  |H€ ?d @ŸBª2ö @  |I€!?d €ŸBø)û¯ @  |J€"uРB?d ÀŸBz¸ìq @  |K€#?d  B÷øy @  |L$?d X Bui§ @  |M%?d ˜ B'rìþ @  |N&?d Ø B¥ãû  @  |O'?d ¡BÊ*[Š @  |P(?d X¡BH»LT @  |Q)?d ˜¡B £  @  |R*?d Ø¡B˜1´Ó @  |S+?d ¢B„¾A @  |T,?d X¢B/VÞ @  |U-?d ˜¢BT4¹‡ @  |V.?d Ø¢BÖ¥®Y @  |W/?d £BqRÿ @  |X0?d X£Bó E! @  |Y1?d ˜£B¡ªx @  |Z2?d Ø£B#†½¦ @  |[3?d ¤B»» @  |\4?d X¤B9’ e @  |]5?d ˜¤Bk‰ã< @  |^6?d ؤBéôâ @  |_7?d ¥B—×sø @  |`8?d X¥BFd& @  |a9?d ˜¥BG]‹ @  |b:?d Ø¥BÅÌœ¡ @  |c;?d ¦BÙCir @  |d<?d X¦B[Ò~¬ @  |e=?d ˜¦B É‘õ @  |f>?d ئB‹X†+ @  |g??d §BA‡V@ @  |h@?d X§BÃAž @  |iA?d ˜§B‘ ®Ç @  |jB?d اBœ¹ @  |kC?d ¨B¦¨` @  |lD?d X¨B$9wÈ @  |mE?d ˜¨Bv"˜‘ @  |nF?d بBô³O @  |oG?d ©B›z/å @  |pH?d X©Bë8; @  |qI?d ˜©BKð×b @  |rJ?d Ø©BÉaÀ¼ @  |sK?d ªBÕî5o @  |tL?d XªBW"± @  |uM?d ˜ªBdÍè @  |vN?d تBúu©J @  |w€O?d «B]MUì @  |x€P?d X«BßÜB2 @  |y€Q?d ˜«BðGÞ @  |zR?d Ø«BrÖÉÉ @  |{S?d ¬BêSoÔ @  ||T?d X¬BhÂx  @  |}U?d ˜¬B:Ù—S @  |~V?d جB¸H€ @  |W?d ­B‹Ö14 @  |€X?d X­B G&ê @  |Y?d ˜­B[\ɳ @  |‚Z?d Ø­BÙÍÞm @  |ƒ[?d ®B¸ÂX @  |„€\?d X®B:SO @  |…€]?d ˜®BhH E @  |†€^?d Ø®BêÙ·› @  |‡€_?d ¯BÐVrá @  |ˆ€`?d X¯BRÇe? @  |‰€a?d ˜¯BÜŠf @  |Š€b?d دB‚M¸ @  |‹€c?d °B½Xt @  |Œ€d?d X°B?ÉcÆ @  |€e?d ˜°BmÒŒŸ @  |Ž€f?d ذBïC›A @  |€g?d ±B€Š;ë @  |€h?d X±B,5 @  |‘€i?d ˜±BPÃl @  |’€j?d رBÒ‘Ô² @  |“€k?d ²BÎ!a @  |”€l?d X²BL6¿ @  |•€m?d ˜²B”Ùæ @  |–€n?d زBœÎ8 @  |—€o?d ³B;=2ž @  |˜€p?d X³B¹¬%@ @  |™€q?d ˜³Bë·Ê @  |š€r?d سBi&ÝÇ @  |›€s?d ´Bñ£{Ú @  |œ€t?d X´Bs2l @  |€u?d ˜´B!)ƒ] @  |ž€v?d Ø´B£¸”ƒ @  |Ÿ€w?d µBÝw™ @  | €x?d XµB_æG @  |¡€y?d ˜µB ýë @  |¢€z?d صBlüÀ @  |£€{?d ¶B“ã  @  |¤€|?d X¶BrÍ @  |¥€}?d ˜¶BCiñ” @  |¦€~?d ضBÁøæJ @  |§€?d ·Báb³ @  |¨€€?d X·B”pum @  |©€?d ˜·BÆkš4 @  |ª€‚?d Ø·BDúê @  |«€ƒ?d ¸BñÎTå @  |¬€„?d X¸Bs_C; @  |­€…?d ˜¸B!D¬b @  |®€†?d ظB£Õ»¼ @  |¯€‡?d ¹BÌ @  |°€ˆ?d X¹BN È @  |±€‰?d ˜¹B–ã‘ @  |²€Š?d عBžôO @  |³€‹?d ºB‚ˆœ @  |´€Œ?d XºBB @  |µ€?d ˜ºBRù @  |¶€Ž?d غBГîÅ @  |·€?d »Bw«c @  |¸€?d X»Bõ:½ @  |¹€‘?d ˜»B§!êä @  |º€’?d Ø»B%°ý: @  |»€“?d ¼B½5[' @  |¼€”?d X¼B?¤Lù @  |½€•?d ˜¼Bm¿£  @  |¾€–?d ؼBï.´~ @  |¿€—?d ½B?æ5ö @  |À€˜?d X½B½w"( @  |Á€™?d ˜½BïlÍq @  |€š?d ؽBmýÚ¯ @  |À›?d ¾Bqr/| @  |Ä€œ?d X¾Bóã8¢ @  |Å€?d ˜¾B¡ø×û @  |Æ€ž?d ؾB#iÀ% @  |Ç€Ÿ?d ¿Bæ_ @  |È€ ?d X¿B›w @  |É€¡?d ˜¿BÉlýØ @uÐÀB  |Ê€¢?d Ø¿BôÔ~¯ @  |Ë£?d 0ÀB®ÆîF @  |Ì€¤?d pÀBQ׊ä @  |Í¥?d °ÀBÌe½ @  |Φ?d ðÀB]rc @  |ϧ?d 0ÁBî”ÒÉ @  |Ш?d pÁBlÅ @  |Ñ©?d °ÁB>*N @  |Òª?d ðÁB¼= @  |Ó«?d 0ÂB ÈC @  |Ô¬?d pÂB"‘ß @  |Õ­?d °ÂBpŠ0Ä @  |Ö®?d ðÂBò' @  |ׯ?d 0ÃBU#Û¼ @  |ذ?d pÃBײÌb @  |Ù±?d °ÃB…©#; @  |Ú²?d ðÃB84å @  |Û³?d 0ÄBŸ½’ø @  |Ü´?d pÄB,…& @  |ݵ?d °ÄBO7j @  |Þ¶?d ðÄBͦ}¡ @  |ß·?d 0ÅB³iú» @  |à¸?d pÅB1øíe @  |á¹?d °ÅBcã< @  |âº?d€ ðÅB•± D @  }»?d 0ÆBh´¾ @  }¼?d pÆBêî£` @  }½?d °ÆB}¼·Ô @  }¾?d ðÆBÿ-   @  }¿?d 0ÇBû@/ @  }À?d pÇByÑ8Å @  }Á?d °ÇBåxˆæ @  }Â?d ðÇBgéŸ8 @  } Ã?d 0ÈB”½Ú @  } Ä?d pÈB•ª @  } Å?d °ÈBW¾° @  } Æ?d ðÈB€Æ©n @  } Ç?d 0ÉBŒh^ @  }È?d pÉB€ @  }É?d °ÉB?…ñC @  }Ê?d ðÉB½æ @  }Ë?d 0ÊBdÒè£ @  }Ì?d pÊBæCÿ} @  }Í?d °ÊBqëÉ @  }Î?d ðÊBó€ü @  }Ï?d 0ËBš _Ë @  }Ð?d pËB›H @  }Ñ?d °ËB„2ø6 @  }Ò?d ðËB£ïè @  }Ó?d 0ÌB[o² @  }Ô?d pÌBÙþ¥Æ @  }Õ?d °ÌBN¬±r @  }Ö?d ðÌBÌ=¦¬ @  }×?d 0ÍB½gà @  }€Ø?d pÍB?ö> @  }€Ù?d °ÍBøªM @  } €Ú?d ðÍBi½“ @  }!€Û?d 0ÎBD¯³­ @  }"€Ü?d pÎBÆ>¤s @  }#€Ý?d °ÎBQl°Ç @  }$€Þ?d ðÎBÓý§ @  }%€ß?d 0ÏB'À= @  }&€à?d pÏB¥Q*Ç @  }'€á?d °ÏB9øšä @  }(€â?d ðÏB»i: @  })€ã?d 0ÐBA5Ÿw @  }*€ä?d pÐB䈩 @  }+€å?d °ÐBTöœ @  },€æ?d ðÐBÖg‹Ã @  }-€ç?d 0ÑBÚ½Jó @  }.€è?d pÑBX,]- @  }/€é?d °ÑBi$Óî @  }0€ê?d ðÑBëµÄ0 @  }1€ë?d 0ÒB2sÊ @  }2€ì?d pÒB°âÝÐ @  }3€í?d °ÒB'°Éd @  }4€î?d ðÒB¥!Þº @  }5€ï?d 0ÓBÌ«}f @  }6€ð?d pÓBN:j¸ @  }7€ñ?d °ÓBÒ“Ú› @  }8€ò?d ðÓBPÍE @  }9€ó?d 0ÔB ε @  }:€ô?d pÔB_‡k @  };€õ?d °ÔB “ß @  }<€ö?d ðÔBšœ„ @  }=€÷?d 0ÕB–FE1 @  }>€ø?d pÕB×Rï @  }?€ù?d °ÕBšÞý @  }@€ú?d ðÕBOêÐ @  }A€û?d 0ÖBÁ‰äî @  }B€ü?d pÖBCó0 @  }C€ý?d °ÖBÔJç„ @  }D€þ?d ðÖBVÛðZ @  }E€ÿ?d 0×B‚5Kð @  }F€Ž?d p×B¤\. @  }G€Ž?d °×Bœ ì  @  }H€Ž?d ð×BœûÓ @  }I€Ž?d 0ØBnáÙ1 @  }J€Ž?d pØBìpÎï @  }K€Ž?d °ØB{"Ú[ @  }L€Ž?d ðØBù³Í… @  }M€Ž?d 0ÙBõi µ @  }N€Ž?d pÙBwøk @  }O€ Ž?d °ÙBF𕨠@  }P€ Ž?d ðÙBÄa‚v @  }Q€ Ž?d 0ÚB§ŒH @  }R€ Ž?d pÚBŸ6›– @  }S€ Ž?d °ÚBd" @  }T€Ž?d ðÚBŠõ˜ü @  }U€Ž?d 0ÛBã;  @  }V€Ž?d pÛBaî,þ @  }W€Ž?d °ÛBýGœÝ @  }X€Ž?d ðÛBÖ‹ @  }Y€Ž?d 0ÜB"Öó @  }Z€Ž?d pÜB ‹Á- @  }[€Ž?d °ÜB7ÙÕ™ @  }\€Ž?d ðÜBµHÂG @  }]€Ž?d 0ÝB¹’w @  }^€Ž?d pÝB;© @  }_€Ž?d °ÝB ½Ú @  }`€Ž?d ðÝB™œª @  }a€Ž?d 0ÞB@Z¤: @  }b€Ž?d pÞBÂ˳ä @  }c€Ž?d °ÞBU™§P @  }d€Ž?d ðÞB×°Ž @  }e€Ž?d 0ßB#5*Ž @  }f€ Ž?d pßB¡¤=P @  }g€!Ž?d uÐàB/°ßB= s @  }h€"Ž?d ðßB¿œš­ @  }i€#Ž?d HàBâºj¤ @  }j€$Ž?d ˆàBÂOhZ @  }k€%Ž?d ÈàB÷yiÎ @  }l€&Ž?d áB'1å& @  }m€'Ž?d HáBy2¿  @  }n€(Ž?d ˆáBYǽÞ @  }o€)Ž?d ÈáBÊ«&= @  }p€*Ž?d âBWï†ü @  }q€+Ž?d HâB‘ü?Ý @  }r€,Ž?d ˆâB± =# @  }s€-Ž?d ÈâB„?<· @  }t€.Ž?d ãBTw°_ @  }u€/Ž?d HãBo$ˆµ @  }v€0Ž?d ˆãBOÑŠK @  }w€1Ž?d ÈãBq/H @  }x€2Ž?d äBhRÜG @  }y€3Ž?d HäB®Aef @  }z€4Ž?d ˆäBŽ´g˜ @  }{€5Ž?d ÈäB»‚f  @  }|€6Ž?d åBkÊêä @  }}€7Ž?d HåB5ɰâ @  }~€8Ž?d ˆåB<² @  }€9Ž?d ÈåBÚ8ì @  }€€:Ž?d æBGC˜- @  }€;Ž?d HæBP!  @  }‚€<Ž?d ˆæB¡¥#ò @  }ƒ€=Ž?d ÈæB”“"f @  }„€>Ž?d çBDÛ®Ž @  }…€?Ž?d HçBoº© @  }†€@Ž?d ˆçB2š¸W @  }‡€AŽ?d ÈçB WT @  }ˆ€BŽ?d èB8¨‘I @  }‰€CŽ?d HèBþ»(h @  }Š€DŽ?d ˆèBÞN*– @  }‹€EŽ?d ÈèBëx+ @  }Œ€FŽ?d éB;0§ê @  }€GŽ?d HéBe3ýì @  }Ž€HŽ?d ˆéBEÆÿ @  }€IŽ?d ÈéBÖªdñ @  }€JŽ?d êBKîÄ0 @  }‘€KŽ?d HêBý} @  }’€LŽ?d ˆêB­ï @  }“€MŽ?d ÈêB˜>~{ @  }”€NŽ?d ëBHvò“ @  }•€OŽ?d HëBs%Êy @  }–€PŽ?d ˆëBSÐȇ @  }—€QŽ?d ÈëBmm„ @  }˜€RŽ?d ìBtSž‹ @  }™€SŽ?d HìB²@'ª @  }š€TŽ?d ˆìB’µ%T @  }›€UŽ?d ÈìB§ƒ$À @  }œ€VŽ?d íBw˨( @  }€WŽ?d HíB)Èò. @  }ž€XŽ?d ˆíB =ðÐ @  }Ÿ€YŽ?d ÈíB‹WLƒ @  } €ZŽ?d îBìB @  }¡€[Ž?d HîBÐUc @  }¢€\Ž?d ˆîBðõW @  }£€]Ž?d ÈîBÅÃV  @  }¤€^Ž?d ïB‹Úá @  }¥€_Ž?d HïB³oÛ× @  }¦€`Ž?d ˆïB“šÙ) @  }§€aŽ?d ÈïB­W|* @  }¨€bŽ?d ðB‰À˜ @  }©€cŽ?d HðBÕšy¹ @  }ª€dŽ?d ˆðBõo{G @  }«€eŽ?d ÈðBÀYzÓ @  }¬€fŽ?d ñBö; @  }­€gŽ?d HñBN¬= @  }®€hŽ?d ˆñBnç®Ã @  }¯€iŽ?d ÈñBý‹5  @  }°€jŽ?d òB`Ï•á @  }±€kŽ?d HòB¦Ü,À @  }²€lŽ?d ˆòB†).> @  }³€mŽ?d ÈòB³/ª @  }´€nŽ?d óBcW£B @  }µ€oŽ?d HóBX›¨ @  }¶€pŽ?d ˆóBxñ™V @  }·€qŽ?d ÈóBF<€ÿ @  ~ªŽ?d C£É > @  ~«Ž?d `CÉø… @  ~¬Ž?d  C&<ú{ @  ~­Ž?d àCÖC @  ~®Ž?d C Œê @  ~¯Ž?d `CøOí @  ~°Ž?d  CØäM @  ~±Ž?d àC(›·j @  ~²Ž?d C1ÕDe @  ~³Ž?d `C9t¢> @  ~´Ž?d  C À @  ~µŽ?d àCéþZ¹ @  ~¶Ž?d C9¶ÖQ @  ~·Ž?d `C¢üwº @  ~¸Ž?d  C‚ uD @  ~¹Ž?d àCrv= @  ~ºŽ?d Cï2/ü @  ~»Ž?d `C[4Ð÷ @  ~ ¼Ž?d  C{ÁÒ  @  ~!½Ž?d àC‹¾(p @  ~"¾Ž?d C[ö¤˜ @  ~#¿Ž?d `CÈ KR @  ~$ÀŽ?d  CèþI¬ @  ~%ÁŽ?d àC³Õ @  ~&ÂŽ?d C,~?È @  ~'ÃŽ?d `C$ßÙ“ @  ~(ÄŽ?d  C*Ûm @  ~)ÅŽ?d àCôU! @  ~*ÆŽ?d C$­ü @  ~+ÇŽ?d ` C¿W  @  ~,ÈŽ?d   CŸ¢é @  ~-ÉŽ?d à CoÝô @  ~.ÊŽ?d Cò™TQ @  ~/ËŽ?d ` CW™Œê @  ~0ÌŽ?d   CwlŽ @  ~1ÍŽ?d à C‡tm @  ~2ÎŽ?d CW[ø… @  ~3ÏŽ?d ` C©A;‚ @  ~4ÐŽ?d   C‰´9| @  ~5ÑŽ?d à CyËà @  ~6ÒŽ?d C`…0  @  ~7ÓŽ?d ` Ch$ÖQ @  ~8ÔŽ?d   CHÑÔ¯ @  ~9ÕŽ?d à C¸®.Ö @  ~:ÖŽ?d Chæ¢> @  ~;׎?d ` Có¬Õ @  ~<ØŽ?d   CÓY+ @  ~=ÙŽ?d à C#&ûR @  ~>ÚŽ?d C¾b[“ @  ~?ÛŽ?d `C¤c¢  @  ~@ÜŽ?d  C„– ô @  ~AÝŽ?d àCtéZ @  ~BÞŽ?d C¤¡Öe @  ~Cߎ?d `CÇ ,¾ @  ~DàŽ?d  Cçù.@ @  ~EáŽ?d àC†Ô9 @  ~FâŽ?d C©Xh‹ @  ~GãŽ?d `C¡ùŽÐ @  ~HäŽ?d  C Œ. @  ~IåŽ?d àCqsvW @  ~JæŽ?d C¡;ú¿ @  ~KçŽ?d `C:q[T @  ~LèŽ?d  C„Yª @  ~MéŽ?d àCêû£Ó @  ~NêŽ?d Cw¿ @  ~OëŽ?d `CÒ¿Û© @  ~PìŽ?d  CòJÙW @  ~QíŽ?d àC5#. @  ~RîŽ?d CÒ}¯Æ @  ~SïŽ?d `C,glÁ @  ~TðŽ?d  C ’n? @  ~UñŽ?d àCüí”F @  ~VòŽ?d Cå£gI @  ~WóŽ?d `Cí @  ~XôŽ?d  CÍ÷ƒì @  ~YõŽ?d àC=ˆy• @  ~ZöŽ?d CíÀõ} @  ~[÷Ž?d `CvŠT– @  ~\øŽ?d  CVVh @  ~]ùŽ?d àC¦¬ @  ~^úŽ?d C;D Ð @  ~_ûŽ?d `CBóÛ @  ~`üŽ?d  C¯·ñ% @  ~aýŽ?d àC_È \ @  ~bþŽ?d C€‡´ @  ~cÿŽ?d `C~Üià @  ~d?d  C^)k @  ~e?d àC®V‘g @  ~f?d Cš©z @  ~g?d `C’û! @  ~h?d  C²ýùß @  ~i?d àCB‚¦ @  ~j?d C’ÊN @  ~k?d `C €.¥ @  ~l?d  C)u,[ @  ~m ?d àCÙ Ö" @  ~n ?d CDNvã @  ~o ?d `CáN®X @  ~p ?d  CÁ»¬¦ @  ~q ?d àC1ÄVß @  ~r?d CáŒÚ7 @  ~s?d `C–0 @  ~t?d  C?cÎ @  ~u?d àCÏá· @  ~v?d CÖR¸ @  ~w?d `CÞóôã @  ~x?d  Cþö @  ~y?d àCy d @  ~z?d CÞ1€Œ @  ~{?d `CE{!g @  ~|?d  CeŽ#™ @  ~}?d àC•ñÙà @  ~~?d Cµy! @  ~?d `Cñâ°‰ @  ~€?d  CѲw @  ~?d àC!hH @  ~‚?d Cñ Äæ @  ~ƒ?d `C’>= @  ~„ ?d  C²x<ÃuÐ C @  ~…!?d àCBƺ @  ~†"?d 8 C3 Ü @  ~‡#?d x C;­þ‡ @  ~ˆ$?d ¸ CXüy @  ~‰%?d ø Cë' @  ~Š&?d 8!C;oŠè @  ~‹'?d x!C %+ @  ~Œ(?d ¸!C€Ð)ý @  ~)?d ø!Cp¯Ó„ @  ~Ž*?d 8"CíësE @  ~+?d x"CHë«þ @  ~,?d ¸"Ch© @  ~‘-?d ø"C˜aSy @  ~’.?d 8#CH)ß‘ @  ~“/?d x#C¶3– @  ~”0?d ¸#C–Æh @  ~•1?d ø#Cf¹ä @  ~–2?d 8$C÷ @  ~—3?d x$CwVñE @  ~˜4?d ¸$CW£ó» @  ~™5?d ø$C§Ü  @  ~š6?d 8%Cw”…* @  ~›7?d x%CìÞ$Á @  ~œ8?d ¸%CÌ+&? @  ~9?d ø%C?d 8'CÔ÷ã @  ~£??d x'C†)) @  ~¤@?d ¸'C¦Ü× @  ~¥A?d ø'CV£à® @  ~¦B?d 8(Cb\l³ @  ~§C?d x(CjýŠè @  ~¨D?d ¸(CJˆ @  ~©E?d ø(Cºwro @  ~ªF?d 8)Cj?þ‡ @  ~«G?d x)Cñu_l @  ~¬H?d ¸)CÑ€]’ @  ~­I?d ø)C!ÿ§ë @  ~®J?d 8*C¼»* @  ~¯K?d x*C»ß‘ @  ~°L?d ¸*C9NÝo @  ~±M?d ø*CÉ1' @  ~²N?d 8+Cy«þ @  ~³O?d x+Cçchù @  ~´P?d ¸+CÇ–j @  ~µQ?d ø+C7é~ @  ~¶R?d 8,C.§cq @  ~·S?d x,C&…* @  ~¸T?d ¸,Có‡Ô @  ~¹U?d ø,CöŒ}­ @  ~ºV?d 8-C&ÄñE @  ~»W?d x-C½ŽP® @  ~¼X?d ¸-C{RP @  ~½Y?d ø-Cm¨) @  ~¾Z?d 8.Cð@è @  ~¿[?d x.CêAñq @  ~À\?d ¸.CÊ´ó @  ~Á]?d ø.C:Ë ö @  ~Â^?d 8/Cꃅ @  ~Ã_?d x/C‰.Å @  ~Ä`?d ¸/C©Û}; @  ~Åa?d ø/CY¤‡B @  ~Æb?d 80Cçz;ð @  ~Çc?d x0CïÛÝ« @  ~Èd?d ¸0CÏ.ßU @  ~Ée?d ø0C?Q%, @  ~Êf?d 81Cï©Ä @  ~Ëg?d x1CtS/ @  ~Ìh?d ¸1CT¦ Ñ @  ~Íi?d ø1C¤Ùð¨ @  ~Îj?d 82C9Pi @  ~Ïk?d x2CœˆÒ @  ~Ðl?d ¸2C¼hŠ, @  ~Ñm?d ø2CLpU @  ~Òn?d 83Cœ_ü½ @  ~Óo?d x3CbE?º @  ~Ôp?d ¸3CB°=D @  ~Õq?d ø3C²ÏÇ= @  ~Ör?d 84C«42 @  ~×s?d x4C£ Òi @  ~Øt?d ¸4CƒÕЗ @  ~Ùu?d ø4Csª*î @  ~Úv?d 85C£â¦ @  ~Ûw?d x5C8¨í @  ~Üx?d ¸5C] @  ~Ýy?d ø5Cè"ÿj @  ~Þz?d 86Cuf_« @  ~ß{?d x6CÁ`   @  ~à|?d ¸6Cá•¢^ @  ~á}?d ø6CêX' @  ~â~?d€ 87CµaÈi @  ?d x7CÚ; @  €?d ¸7Cúî9æ @  ?d ø7CÏØ8r @  ‚?d 88Cû'´o @  ƒ?d x8C=4 N @  „?d ¸8CÁ° @  …?d ø8C# ª³ @  †?d 89CóD&[ @   ‡?d x9C­G|] @   ˆ?d ¸9C²~£ @   ‰?d ø9C¸„7 @   Š?d 8:C%Àßö @   ‹?d x:CãÓf× @  Œ?d ¸:CÃ&d) @  ?d ø:CPJÿÊ @  Ž?d 8;C€s" @  ?d x;C»QKÈ @  ?d ¸;C›¤I6 @  ‘?d ø;C®’H¢ @  ’?d 8Ci;Ð4 @  ›?d x>C¯(i @  œ?d ¸>CÝkë @  ?d ø>C ·×¸ @   ž?d 8?CÝÿ[P @  !Ÿ?d x?C{Zf @  " ?duÐ@C7 ¸?C[îX˜ @  #¡?d ø?CnØY  @  $¢?d P@C­tã0 @  %£?d @CÉO1 @  &¤?d Ð@CK’Xï @  '¥?d AC'†fÚ @  (¦?d PAC¥q @  )§?d ACYp>" @  *¨?d ÐACÛá)ü @  +©?d BCñŸw @  ,ª?d PBCs“ˆ© @  -«?d BCä$¨ @  .¬?d ÐBC•u3v @  /­?d CCTÀ3£ @  0®?d PCCÖQ$} @  1¯?d CCOf · @  2°?d ÐCCÍ÷i @  3±?d DCcû, @  4²?d PDCáìò @  5³?d DC…ø@ó @  6´?d ÐDCiW- @  7µ?d ECk}i @  8¶?d PECéì~Æ @  9·?d EC‹1à @  :¸?d ÐEC—&> @  ;¹?d FC½ùµ @  <º?d PFC?h‡k @  =»?d FC[+j @  >¼?d ÐFCÙŽ<´ @  ?½?d GC§:C @  @¾?d PGC%«  @  A¿?d GCÑ{ š @  BÀ?d ÐGCSêD @  CÁ?d HCв† @  DÂ?d PHCR#‘Í @  EÃ?d HC6T=Ì @  FÄ?d ÐHC´Å* @  GÅ?d ICØÑ' @  HÆ?d PICZ@ù @  IÇ?d IC¦'Lß @  JÈ?d ÐIC$¶[ @  KÉ?d JCUíŠ @  LÊ?d PJCŒÄúT @  MË?d JCè³VU @  NÌ?d ÐJCj"A‹ @  OÍ?d KC«—A^ @  PÎ?d PKC)V€ @  QÏ?d KC°1{J @  RÐ?d ÐKC2 l” @  SÑ?d LCœI‰Ñ @  TÒ?d PLCØž @  UÓ?d LCz¯2 @  VÔ?d ÐLCø>%Ð @  WÕ?d MC”*å @  XÖ?d PMC» ; @  Y×?d MCêÜC @  ZØ?d ÐMChMTà @  [Ù?d NCB®âH @  \Ú?d PNCÀ?õ– @  ]Û?d NC¤HY— @  ^Ü?d ÐNC&ÙNI @  _Ý?d OCöji, @  `Þ?d POCtû~ò @  aß?d OCp{jä @  bà?d ÐOCòê}: @  cá?d PCû“× @  dâ?d PPCyÀ @  eã?d PCul @  fä?d ÐPCŸä{à @  gå?d QCóðEö @  hæ?d PQCqaR( @  iç?d QC @  jè?d ÐQC— Ð @  ké?d RC%t¼[ @  lê?d PRC§å«… @  më?d RCÃ’„ @  nì?d ÐRCAZ @  oí?d SC€¶ @  pî?d PSC'Q @  qï?d SC›*› @  rð?d ÐSC=E @  sñ?d TC·hØ @  tò?d PTC5ùÏÞ @  uó?d TCQŽcß @  vô?d ÐTCÓt @  wõ?d UC¿ J4 @  xö?d PUC=š]ê @  y÷?d UCÁýÌ @  zø?d ÐUCCl @  {ù?d VCi³™ @  |ú?d PVCë¤G @  }û?d VCiF @  ~ü?d ÐVC ø˜ @  ý?d WC^ @  €þ?d PWC‹€ @  ÿ?d WC}?© @  ‚?d ÐWCÿî(w @  ƒ?d XC|¶²  @  „?d PXCþ'¥þ @  …?d XCšP ÿ @  †?d ÐXCÁ! @  ‡?d YCtÕ  @  ˆ?d PYCöD7Ê @  ‰?d YC #xì @  Š?d ÐYCˆ²o2 @  ‹ ?d ZC¢QÙ¹ @  Œ ?d PZC ÀÎg @   ?d ZCD·bf @  Ž ?d ÐZCÆ&u¸ @   ?d [C“um @  ?d P[C…b³ @  ‘?d [C5Oy @  ’?d Ð[Cž¤X§ @  “?d \C0M½â @  ”?d P\C²Üª< @  •?d \CÖ«= @  –?d Ð\CT:ã @  —?d ]C8./Ö @  ˜?d P]Cº¿8 @  ™?d ]CFØw. @  š?d Ð]CÄI`ð @  ›?d ^CîªÖ{ @  œ?d P^Cl;Á¥ @  ?d ^CLm¤ @  ž?d Ð^CŠÝzz @  Ÿ?d _CZn] @   ?d P_CØÿJÁ @  ¡?d _CÜ^× @  uÐ`C¢ ?d Ð_Cg)•Ü @  £ !?d (`Cnv6 @  ¤ "?d h`Cìç!Ð @  ¥ #?d ¨`CˆÑ @  ¦ $?d è`C š @  § %?d (aCf¤: @  ¨ &?d haC䄳ä @  © '?d ¨aCãü @  ª (?d èaCšrë @  « )?d (bC°‘]— @  ¬ *?d hbC2JI @  ­ +?d ¨bCVwæH @  ® ,?d èbCÔæñ– @  ¯ -?d (cCSñC @  ° .?d hcC—Âæ @  ± /?d ¨cCõËW @  ² 0?d ècCŒd܉ @  ³ 1?d (dC"9Ì @  ´ 2?d hdC . @  µ 3?d ¨dCÄk‚ @  ¶ 4?d èdCFú•Í @  · 5?d (eC*î«ø @  ¸ 6?d heC¨¼& @  ¹ 7?d ¨eCTó @  º 8?d èeCÖ‰äÞ @  » 9?d (fCüjRU @  ¼ :?d hfC~ûE‹ @  ½ ;?d ¨fCŒéŠ @  ¾ <?d èfC˜þT @  ¿ =?d (gCæ©ß£ @  À >?d hgCd8È} @  Á ??d ¨gCèÉz @   @?d ègCyÞ¤ @  à A?d (hC‘!Dó @  Ä B?d hhC°S- @  Å C?d ¨hCwÇÿ, @  Æ D?d èhCõVèò @  Ç E?d (iC™BÖÇ @  È F?d hiCÓÁ @  É G?d ¨iCç´Ž? @  Ê H?d èiCe%™á @  Ë I?d (jCOÆ/j @  Ì J?d hjCÍW8´ @  Í K?d ¨jC© ”µ @  Î L?d èjC+±ƒk @  Ï M?d (kCꃾ @  Ð N?d hkCh•”` @  Ñ O?d ¨kCñ¢¹ª @  Ò P?d èkCs3®t @  Ó Q?d (lCÝÚK1 @  Ô R?d hlC_K\ï @  Õ S?d ¨lC;<ðî @  Ö T?d èlC¹­ç0 @  × U?d (mCÕ¹Ù @  Ø V?d hmCW(ÎÛ @  Ù W?d ¨mC«Oý @  Ú X?d èmC)Þ–# @  Û Y?d (nC= ¨ @  Ü Z?d hnC¬7v @  Ý [?d ¨nCåÛ›w @  Þ \?d ènCgJŒ© @  ß ]?d (oC·ù«Ì @  à ^?d hoC5h¼ @  á _?d ¨oC1è¨ @  â `?d€ èoCœ+] @  € a?d (pCû¤ÉŒ @  € b?d hpCy5ÞR @  € c?d ¨pCØ ‰¾ @  € d?d èpCZšž` @  € e?d (qCø<ÿ/ @  € f?d hqCz­èñ @  € g?d ¨qCHxø­ @  € h?d èqCÊéïs @  € i?d (rC%C¢ @  € j?d hrC§ÒµË @  € k?d ¨rCìâ' @  € l?d èrC„}õù @  € m?d (sC&Û”¶ @  € n?d hsC¤Jƒh @  € o?d ¨sC^nÏ8 @  € p?d èsCÜÿØæ @  € q?d (tC·_ÆN @  € r?d htC5ÎÑ @  € s?d ¨tC”ð†| @  € t?d ètCa‘¢ @  € u?d (uC´Çðí @  € v?d huC6Vç3 @  € w?d ¨uCƒ÷o @  € x?d èuC†à± @  € y?d (vCi¸­× @  € z?d hvCë)º  @  € {?d ¨vCJíå @  € |?d èvCȆú; @  € }?d (wCj ›t @  € ~?d hwC豌ª @  € ?d ¨wCs²Ÿ @  € €?d èwCñ#ˆË @  €! ?d (xC·2éq @  €" ‚?d hxC5£þ¯ @  €# ƒ?d ¨xC”©C @  €$ „?d èxC ¾ @  €% …?d (yC´ªßÒ @  €& †?d hyC6;È  @  €' ‡?d ¨yCîØP @  €( ˆ?d èyC†ÏŽ @  €) ‰?d (zCiÕ‚è @  €* Š?d hzCëD•6 @  €+ ‹?d ¨zCJzÂÚ @  €, Œ?d èzCÈëÕ @  €- ?d ({CjM´K @  €. Ž?d h{CèÜ£• @  €/ ?d ¨{CøïÅ @  €0 ?d è{Ciø @  €1 ‘?d (|CûÉæ³ @  €2 ’?d h|CyXñm @  €3 “?d ¨|CØf¦ @  €4 ”?d è|CZ÷±_ @  €5 •?d (}CøQÐ @  €6 –?d h}CzÀÇÎ @  €7 —?d ¨}CH×’ @  €8 ˜?d è}CÊ„ÀL @  €9 ™?d (~C%.* @  €: š?d h~C§¿šô @  €; ›?d ¨~CÍ @  €< œ?d è~C„ÚÆ @  €= ?d (C&¶»‰ @  €> ž?d hC¤'¬W @  €? Ÿ?d ¨CuЀC'|µøù @  €@  ?d èCÇã3ò @  €A¡?d @€CÛ³ß @  €C£?d À€Cø| @  €D¤?d C(Tðû @  €E¥?d @CØ+ ‚ @  €F¦?d €CøÞ| @  €G§?d ÀCho  @  €H¨?d ‚Cõ+­Á @  €I©?d @‚CTW¸ @  €Jª?d €‚C%¡UF @  €K«?d À‚C&ûŠ @  €L¬?d ƒCö³›b @  €M­?d @ƒCÌa @  €N®?d €ƒC&9cå @  €O¯?d ÀƒC~y:• @  €P°?d „Cg7Éš @  €Q±?d @„C—H3ã @  €R²?d €„C·½1 @  €S³?d À„C´çsÑ @  €T´?d …Cd¯ÿ9 @  €Uµ?d @…C”Ð@ @  €V¶?d €…C´%¾ @  €W·?d À…C$” @  €X¸?d †C¹Ð¢ @  €Y¹?d @†CI¯Xz @  €Zº?d €†CiZZ„ @  €[»?d À†CjH @  €\¼?d ‡CºH”  @  €]½?d @‡CJ7nÙ @  €^¾?d €‡CjÂl' @  €_¿?d À‡CNc>* @  €`À?d ˆCzœ²7 @  €aÁ?d @ˆCŠãHN @  €bÂ?d €ˆCªJ° @  €cÃ?d ÀˆC©L| @  €dÄ?d ‰Cy„” @  €eÅ?d @‰C‰{~í @  €fÆ?d €‰C©Ž| @  €gÇ?d À‰C9?yo @  €hÈ?d ŠC¤{Ù® @  €iÉ?d @ŠCT#× @  €jÊ?d €ŠCtñ!) @  €kË?d ÀŠCw«cå @  €lÌ?d ‹C§ãï  @  €mÍ?d @‹CWœt @  €nÎ?d €‹CwiŠ @  €oÏ?d À‹C/)Nú @  €pÐ?d ŒC6g½õ @  €qÑ?d @ŒCÆGŒ @  €rÒ?d €ŒCæíEr @  €sÓ?d ÀŒCå·¾ @  €tÔ?d C5ÿ‹V @  €uÕ?d @CÅ€q/ @  €vÖ?d €CåusÑ @  €w×?d ÀCuÄv­ @  €xØ?d ŽCè€Öl @  €yÙ?d @ŽCÿ, @  €zÚ?d €ŽC8 .ë @  €{Û?d ÀŽC;Pl' @  €|Ü?d CëàÏ @  €}Ý?d @Cg¶ @  €~Þ?d €C;’H @  €ß?d ÀC¢2i÷ @  €€à?d CìÕE @  €á?d @Cì“/< @  €‚â?d €CÌf- @  €ƒã?d ÀCÏ– @  €º‘?d €žCm‹‘?d ˜§CæI؉ @  €ß?‘?d اCÂ芄 @  €à@‘?d ¨Cö™ @  €áA‘?d X¨Chüà @  €âB‘?d€ ˜¨CR^⸠@  C‘?d بC°Eè] @  D‘?d ©C` dµ @  E‘?d X©CU;e! @  F‘?d ˜©CuÎgß @  G‘?d Ø©C+Í=Ù @  H‘?d ªC¶‰ @  I‘?d XªCˆD8 @  J‘?d ˜ªC¨±:å @   K‘?d تCn¢ƒÄ @   L‘?d «C¾ê, @   M‘?d X«C‹Ü¸ @   N‘?d ˜«C«) F @   O‘?d Ø«Cz4¬ @  P‘?d ¬C‰4Ç£ @  Q‘?d X¬CX\@ @  R‘?d ˜¬C:­^¾ @  S‘?d جCü¾çŸ @  T‘?d ­C,ökw @  U‘?d X­CÀjã @  V‘?d ˜­C95h @  W‘?d Ø­Cg62 @  X‘?d ®Cúr’Ú @  Y‘?d X®CÄ¿7Ù @  Z‘?d ˜®CäJ5' @  [‘?d Ø®C"YŒ @  \‘?d ¯Còî @  ]‘?d X¯CÇ'z @  ^‘?d ˜¯CçÒ„ @  _‘?d دCA6² @  `‘?d °Cÿè¾ @  a‘?d X°C}‚S @   b‘?d ˜°C]w­ @  !c‘?d ذC›d¹Œ @  "d‘?d ±CK,5d @  #e‘?d X±C~4ð @  $f‘?d ˜±C^ï6 @  %g‘?d رCìl @  &h‘?d ²C¨ÌÉ @  'i‘?d X²C£eiÊ @  (j‘?d ˜²Cƒk4 @  )k‘?d زCEƒÒ @  *l‘?d ³C•Ë^ý @  +m‘?d X³C ý_i @  ,n‘?d ˜³C€]— @  -o‘?d سC»[e} @  .p‘?d ´C¢–r @  /q‘?d X´C1y ‘ @  0r‘?d ˜´CŒo @  1s‘?d Ø´Cן¶N @  2t‘?d µC×:¦ @  3u‘?d XµC2á;2 @  4v‘?d ˜µC9Ì @  5w‘?d صCLcÊ @  6x‘?d ¶CÑSà  @  7y‘?d X¶Cïžf @  8z‘?d ˜¶CÏkdö @  9{‘?d ضC xÝ× @  :|‘?d ·CÙ0Q? @  ;}‘?d X·CìP« @  <~‘?d ˜·CÌóRU @  =‘?d Ø·C‡à @  >€‘?d ¸C³~žý @  ?‘?d X¸CŸ$< @  @‚‘?d ˜¸C¿æ& @  Aƒ‘?d ظCyõŸã @  B„‘?d ¹C©½  @  C…‘?d X¹Cœ‹Ÿ @  D†‘?d ˜¹C¼~a @  E‡‘?d عCâ}Jg @  Fˆ‘?d ºC9ê¦ @  G‰‘?d XºCAôO¥ @  HŠ‘?d ˜ºCaM[ @  I‹‘?d غC§ôz @  JŒ‘?d »CwZx’ @  K‘?d X»CBly @  LŽ‘?d ˜»Cb™{ø @  M‘?d Ø»CYÊC @  N‘?d ¼C@„° @  O‘‘?d X¼CÓè+þ @  P’‘?d ˜¼Có) @  Q“‘?d ؼC5! @  R”‘?d ½CåFÉ @  S•‘?d X½CÐp] @  T–‘?d ˜½Cð…£ @  U—‘?d ؽC®†E¥ @  V˜‘?d ¾C3Âåd @  W™‘?d X¾C @g @  Xš‘?d ˜¾C-úB™ @  Y›‘?d ؾCëéû¸ @  Zœ‘?d ¿C;¡wP @  [‘?d X¿C—vÄ @  \ž‘?d ˜¿C.bt: @uÐÀC  ]Ÿ‘?d Ø¿CJ/’Ù @  ^ ‘?d 0ÀC.ßË @  _¡‘?d pÀC¬µØ @  `¢‘?d °ÀCŒ@}& @  a£‘?d ðÀCJSÄ @  b¤‘?d 0ÁCšHï @  c¥‘?d pÁC¯-I{ @  d¦‘?d °ÁCØK… @  e§‘?d ðÁCÑÛƒ @  f¨‘?d 0ÂCLŸ±B @  g©‘?d pÂCrRA @  hª‘?d °ÂCR§¿ @  i«‘?d ðÂC”´¯ž @  j¬‘?d 0ÃCDü#v @  k­‘?d pÃCqÊ"â @  l®‘?d °ÃCQ?  @  m¯‘?d ðÃCjlö @  n°‘?d 0ÄCs"ëù @  o±‘?d pÄCàNp @  p²‘?d °ÄCÀ»rä @  q³‘?d ðÄC¨ËÅ @  r´‘?d 0ÅCÖàG- @  sµ‘?d pÅCãÖF¹ @  t¶‘?d °ÅCÃ#DG @  u·‘?d ðÅC A @  v¸‘?d 0ÆCd¾€ @  w¹‘?d pÆC>©ƒ @  xº‘?d °ÆC\} @  y»‘?d ðÆCØO \ @  z¼‘?d 0ÇC,´ @  {½‘?d pÇC=1-  @  |¾‘?d °ÇC$ó  @  } ¿‘?d ðÇCr·ç, @  ~ À‘?d 0ÈCFHk1 @   Á‘?d pÈC‰sáÁ @  € ‘?d °ÈC©†ã? @   Ñ?d ðÈCo•Z @  ‚ Ä‘?d 0ÉC¿ÝÖö @  ƒ Å‘?d pÉCŠë×b @  „ Æ‘?d °ÉCªÕœ @  … Ç‘?d ðÉCôš @  † È‘?d 0ÊCiY/[ @  ‡ É‘?d pÊCW”ŠX @  ˆ Ê‘?d °ÊCwaˆ¦ @  ‰ Ë‘?d ðÊC±r1‡ @  Š Ì‘?d 0ËCa:½o @  ‹ Í‘?d pËCT ¼û @  Œ Α?d °ËCtù¾ @   Ï‘?d ðËCOª†ï @  Ž Б?d 0ÌCVäuà @   Ñ‘?d pÌCňî @   Ò‘?d °ÌCå}ìý @  ‘ Ó‘?d ðÌC#nUÜ @  ’ Ô‘?d 0ÍCó&Ù4 @  “ Õ‘?d pÍCÆØ  @  ” Ö‘?d °ÍCæåÚ^ @  • ב?d ðÍC¸æ€X @  – Ø‘?d 0ÎC%¢ ™ @  — Ù‘?d pÎCo…š @  ˜ Ú‘?d °ÎC;š‡d @  ™ Û‘?d ðÎCý‰>E @  š Ü‘?d 0ÏC-Á²­ @  › Ý‘?d pÏC÷³9 @  œ Þ‘?d °ÏC8±Ç @   ß‘?d ðÏCžæ°ñ @  ž à‘?d 0ÐC 8 C @  Ÿ á‘?d pÐC¢R° @    â‘?d °ÐC‚§²î @  ¡ ã‘?d ðÐCD´ Ï @  ¢ ä‘?d 0ÑC”ü‡' @  £ å‘?d pÑC¡Ê†³ @  ¤ æ‘?d °ÑC?„M @  ¥ ç‘?d ðÑCß<ÞK @  ¦ è‘?d 0ÒCBx~Š @  § é‘?d pÒC|µÛ‰ @  ¨ ê‘?d °ÒC\@Ùw @  © ë‘?d ðÒCšS`V @  ª ì‘?d 0ÓCJì¾ @  « í‘?d pÓC-í* @  ¬ î‘?d °ÓC_ØïÔ @  ­ ï‘?d ðÓCd‹×> @  ® ð‘?d 0ÔC}Å$1 @  ¯ ñ‘?d pÔCî©¿Ò @  ° ò‘?d °ÔCÎ\½, @  ± ó‘?d ðÔCO  @  ² ô‘?d 0ÕC؈å @  ³ õ‘?d pÕCí1‰q @  ´ ö‘?d °ÕCÍÄ‹ @  µ ÷‘?d ðÕC“Çщ @  ¶ ø‘?d 0ÖCƒqH @  · ù‘?d pÖC0NÔK @  ¸ ú‘?d °ÖC»Öµ @  ¹ û‘?d ðÖCÖ¨o” @  º ü‘?d 0×Càã| @  » ý‘?d p×C3Öâè @  ¼ þ‘?d °×C#à @  ½ ÿ‘?d ð×C•ÀŠ @  ¾ ’?d 0ØC¡ëL— @  ¿ ’?d pØC†öV @  À ’?d °ØC­sô¨ @  Á ’?d ðØCk`M‰ @   ’?d 0ÙC»(Áa @  à ’?d pÙCŽÀõ @  Ä ’?d °ÙC®ë  @  Å ’?d ðÙCðè˜  @  Æ ’?d 0ÚCm¬8Ì @  Ç  ’?d pÚCSaÏ @  È  ’?d °ÚCs”Ÿ1 @  É  ’?d ðÚCµ‡& @  Ê  ’?d 0ÛCeϪø @  Ë  ’?d pÛCPù«l @  Ì ’?d °ÛCp ©’ @  Í ’?d ðÛCK_‘x @  Î ’?d 0ÜCRbw @  Ï ’?d pÜCÁ}ù” @  Ð ’?d °ÜCáˆûj @  Ñ ’?d ðÜC'›BK @  Ò ’?d 0ÝC÷ÓΣ @  Ó ’?d pÝCÂåÏ7 @  Ô ’?d °ÝCâÍÉ @  Õ ’?d ðÝC¼—Ï @  Ö ’?d 0ÞC!W7 @  × ’?d pÞCš’  @  Ø ’?d °ÞC?oó @  Ù ’?d ðÞCù|)Ò @  Ú ’?d 0ßC)4¥: @  Û ’?d pßC¤® @  Ü ’?d uÐàC/°ßC<÷¦P @  Ý ’?d ðßC£Ô{³ @  Þ ’?d HàCºp%E @  ß!’?d ˆàCš~Œ6 @  à"’?d ÈàCï›è @  á#’?d áCŒ%¹ÿ @  â$’?d€ HáCÏóY! @  ‚%’?d ˆáC¹à¼ @  ‚&’?d ÈáC;qb @  ‚'’?d âC¿î– @  ‚(’?d HâC=H @  ‚)’?d ˆâCodü @  ‚*’?d ÈâCíõëÏ @  ‚+’?d ãC·–¢ @  ‚,’?d HãC5| @  ‚ -’?d ˆãCgn% @  ‚ .’?d ÈãCå–yû @  ‚ /’?d äC€S^- @  ‚ 0’?d HäCÂIó @  ‚ 1’?d ˆäCPÙ¦ª @  ‚2’?d ÈäCÒH±t @  ‚3’?d åC%‘òù @  ‚4’?d HåC§å' @  ‚5’?d ˆåCõ ~ @  ‚6’?d ÈåCwŠ  @  ‚7’?d æCó T @  ‚8’?d HæCq„Š @  ‚9’?d ˆæC#ŸóÓ @  ‚:’?d ÈæC¡ä  @  ‚;’?d çCûv™` @  ‚<’?d HçCy玾 @  ‚=’?d ˆçC+üaç @  ‚>’?d ÈçC©mv9 @  ‚?’?d èCŒþ0 @  ‚@’?d HèCoî @  ‚A’?d ˆèC\tú· @  ‚B’?d ÈèCÞåíi @  ‚C’?d éC8:‰T @  ‚ D’?d HéCº«žŠ @  ‚!E’?d ˆéCè°qÓ @  ‚"F’?d ÈéCj!f  @  ‚#G’?d êCî¾pù @  ‚$H’?d HêCl/g' @  ‚%I’?d ˆêC>4ˆ~ @  ‚&J’?d ÈêC¼¥Ÿ  @  ‚'K’?d ëCæÝâÍ @  ‚(L’?d HëCdLõ @  ‚)M’?d ˆëC6WJ @  ‚*N’?d ÈëC´Æ ” @  ‚+O’?d ìCÑ*B @  ‚,P’?d HìCS’=œ @  ‚-Q’?d ˆìC‰ÒÅ @  ‚.R’?d ÈìCƒÅ @  ‚/S’?d íCtÁ†– @  ‚0T’?d HíCöP‘H @  ‚1U’?d ˆíC¤K~ @  ‚2V’?d ÈíC&ÚiÏ @  ‚3W’?d îC¢E; @  ‚4X’?d HîC Ôhå @  ‚5Y’?d ˆîCrχ¼ @  ‚6Z’?d ÈîCð^b @  ‚7[’?d ïCª&í @  ‚8\’?d HïC(·úÑ @  ‚9]’?d ˆïCz¬ˆ @  ‚:^’?d ÈïCø=V @  ‚;_’?d ðC§ßSá @  ‚<`’?d HðC%ND? @  ‚=a’?d ˆðCwU«f @  ‚>b’?d ÈðCõļ¸ @  ‚?c’?d ñC½Þ @  ‚@d’?d HñC?ÉÉ @  ‚Ae’?d ˆñCm–& @  ‚Bf’?d ÈñCï1N @  ‚Cg’?d òCk˜'º @  ‚Dh’?d HòCé 0d @  ‚Ei’?d ˆòC»ß= @  ‚Fj’?d ÈòC9ƒÈã @  ‚Gk’?d óCcûµŽ @  ‚Hl’?d HóCáj¢P @  ‚Im’?d ˆóC³qM  @  ‚Jn’?d ÈóC1àZ× @  ‚Ko’?d ôCT%} @  ‚Lp’?d HôCÖ´jß @  ‚Mq’?d ˆôC„¯…† @  ‚Nr’?d ÈôC>’X @  ‚Os’?d õCñçÑÕ @  ‚Pt’?d HõCsvÆ  @  ‚Qu’?d ˆõC!m)R @  ‚Rv’?d ÈõC£ü>Œ @  ‚Sw’?d öC'c(x @  ‚Tx’?d HöC¥ò?¦ @  ‚Uy’?d ˆöC÷éÐÿ @  ‚Vz’?d ÈöCuxÇ! @  ‚W{’?d ÷C/ºL @  ‚X|’?d H÷C­‘­’ @  ‚Y}’?d ˆ÷CÿŠBË @  ‚Z~’?d È÷C}U @  ‚[’?d øCENuŽ @  ‚\€’?d HøCÇßbP @  ‚]’?d ˆøC•Ä  @  ‚^‚’?d ÈøCUš× @  ‚_ƒ’?d ùCñŠþê @  ‚`„’?d HùCsé4 @  ‚a…’?d ˆùC!m @  ‚b†’?d ÈùC£‘³ @  ‚c‡’?d úC'G @  ‚dˆ’?d HúC¥Ÿ™ @  ‚e‰’?d ˆúC÷„ÿÀ @  ‚fŠ’?d ÈúCuè @  ‚g‹’?d ûC/m•s @  ‚hŒ’?d HûC­ü‚­ @  ‚i’?d ˆûCÿçmô @  ‚jŽ’?d ÈûC}vz* @  ‚k’?d üC³]ü @  ‚l’?d HüCš"J" @  ‚m‘’?d ˆüCÈ9¥{ @  ‚n’’?d ÈüCJ¨²¥ @  ‚o“’?d ýC½qñ( @  ‚p”’?d HýC?àæö @  ‚q•’?d ˆýCmû ¯ @  ‚r–’?d ÈýCïjq @  ‚s—’?d þCkõ… @  ‚t˜’?d HþCéd[ @  ‚u™’?d ˆþC»ð @  ‚vš’?d ÈþC9îçÜ @  ‚w›’?d ÿCc–š± @  ‚xœ’?d HÿCáo @  ‚y’?d ˆÿC³b6 @  ‚zuÐDž’?d ÈÿC1uè @  ‚{Ÿ’?d DåwŠs @  ‚| ’?d `Dgæ­ @  ‚}¡’?d  D5ýrô @  ‚~¢’?d àD·le* @  ‚£’?d Dâ7´ @  ‚€¤’?d `Džs j @  ‚¥’?d  DÌhÏ3 @  ‚‚¦’?d àDNùØí @  ‚ƒ§’?d DÊfÎ @  ‚„¨’?d `DH÷ÙÇ @  ‚…©’?d  Dì6ž @  ‚†ª’?d àD˜}!@ @  ‚‡«’?d DÂ\- @  ‚ˆ¬’?d `D@”Kó @  ‚‰­’?d  D¤ª @  ‚Š®’?d àD³t @  ‚‹¯’?d DõÛ”¢ @  ‚Œ°’?d `DwJƒ| @  ‚±’?d  D%Ql% @  ‚޲’?d àD§À{û @  ‚³’?d DP8v @  ‚´’?d `DÒˆ/¨ @  ‚‘µ’?d  D€“Àñ @  ‚’¶’?d àD×/ @  ‚“·’?d D†ÁÛ @  ‚”¸’?d `D Ö @  ‚•¹’?d  DV9\ @  ‚–º’?d àDÔ†.‚ @  ‚—»’?d DŽþSï @  ‚˜¼’?d `D oD1 @  ‚™½’?d  D^t«h @  ‚š¾’?d àDÜå¼¶ @  ‚›¿’?d DùvÈ¿ @  ‚œÀ’?d `D{çßa @  ‚Á’?d  D)ü08 @  ‚žÂ’?d àD«m'æ @  ‚ŸÃ’?d DM²CÛ @  ‚ Ä’?d ` DÏ#T @  ‚¡Å’?d   D8»\ @  ‚¢Æ’?d à D©¬‚ @  ‚£Ç’?d D›6ºv @  ‚¤È’?d ` D§­¨ @  ‚¥É’?d   DK¼Bñ @  ‚¦Ê’?d à DÉ-U/ @  ‚§Ë’?d D“U(B @  ‚¨Ì’?d ` DÄ?œ @  ‚©Í’?d   DCßÐÅ @  ‚ªÎ’?d à DÁNÇ @  ‚«Ï’?d D¤‹àÍ @  ‚¬Ð’?d ` D&÷ @  ‚­Ñ’?d   DtJ @  ‚®Ò’?d à Dö” @  ‚¯Ó’?d DIL @  ‚°Ô’?d ` DƒØ[Ç @  ‚±Õ’?d   DÑôž @  ‚²Ö’?d à DSR£@ @  ‚³×’?d D×͵´ @  ‚´Ø’?d `DU\¢j @  ‚µÙ’?d  DGM3 @  ‚¶Ú’?d àD…ÖZí @  ‚·Û’?d Dß®'€ @  ‚¸Ü’?d `D]?0^ @  ‚¹Ý’?d  D$ß @  ‚ºÞ’?d àDµÈÙ @  ‚»ß’?d DÒW™n @  ‚¼à’?d `DPÆŽ° @  ‚½á’?d  DÝaé @  ‚¾â’?d àD€Lv7 @  ‚¿ã’?d DÈ”˜ @  ‚Àä’?d `DJF @  ‚Áå’?d  Dì @  ‚Âæ’?d àDšûÁ @  ‚Ãç’?d Dí5 @  ‚Äè’?d `Dœúë @  ‚Åé’?d  DΚ² @  ‚Æê’?d àDL l @  ‚Çë’?d Ds @  ‚Èì’?d `D”âhß @  ‚Éí’?d  DÆù‡† @  ‚Êî’?d àDDhX @  ‚Ëï’?d D!­·Ž @  ‚Ìð’?d `D£< P @  ‚Íñ’?d  Dñ'O  @  ‚Îò’?d àDs¶X× @  ‚Ïó’?d D„oZ @  ‚Ðô’?d `Dþ „ @  ‚Ñõ’?d  DTåãÝ @  ‚Òö’?d àDÖtô @  ‚Ó÷’?d DRëâ÷ @  ‚Ôø’?d `DÐzõ) @  ‚Õù’?d  D‚ap @  ‚Öú’?d àDð ® @  ‚×û’?d DZˆpà @  ‚Øü’?d `DØg @  ‚Ùý’?d  DŠˆD @  ‚Úþ’?d àD“Ÿš @  ‚Ûÿ’?d DO¡ê  @  ‚Ü“?d `DÍ0ýÓ @  ‚Ý“?d  DŸ+Š @  ‚Þ“?d àDºT @  ‚ß“?d Dûeai @  ‚à“?d `Dyôv· @  ‚á“?d  D+ï™î @  ‚â“?d€ àDݽ’– @  ƒ“?d D¸cÌK @  ƒ“?d `D:òÛ• @  ƒ “?d  D­ Ï! @  ƒ “?d àD/1Øÿ @  ƒ “?d D»ûúè @  ƒ “?d `D9jí6 @  ƒ “?d  D¥Ã] @  ƒ“?d àD'RJË @  ƒ “?d D‡Þ–ð @  ƒ “?d `DO. @  ƒ “?d  D’•š @  ƒ “?d àDŒ‚D @  ƒ “?d D„F S @  ƒ“?d `D×· @  ƒ“?d  D7ß9N @  ƒ“?d àDµN. @  ƒ“?d Dô˜Ã‰ @  ƒ“?d `Dv ÔW @  ƒ“?d  Dá[Àã @  ƒ“?d àDcÊ×= @  ƒ“?d D÷õ* @  ƒ“?d `Du‘âô @  ƒ“?d  Dé8R×uÐ D @  ƒ“?d àDk©E  @  ƒ“?d 8 D>ׇ @  ƒ “?d x D¼FšY @  ƒ!“?d ¸ D+Ží @  ƒ"“?d ø D©…™3 @  ƒ#“?d 8!D=O»$ @  ƒ$“?d x!D¿Þ¬ú @  ƒ%“?d ¸!DŸÐ‰ @  ƒ &“?d ø!DAW @  ƒ!'“?d 8"D\—ÿN @  ƒ"(“?d x"DÞè @  ƒ#)“?d ¸"DITü$ @  ƒ$*“?d ø"DËÅëú @  ƒ%+“?d 8#D_Éí @  ƒ&,“?d x#DÝžÞ3 @  ƒ'-“?d ¸#DA7n @  ƒ(.“?d ø#DæyÎ @  ƒ)/“?d 8$Dc*¥õ @  ƒ*0“?d x$DỲ+ @  ƒ+1“?d ¸$Dv馟 @  ƒ,2“?d ø$Dôx±A @  ƒ-3“?d 8%D`²“V @  ƒ.4“?d x%Dâ#„ˆ @  ƒ/5“?d ¸%DÓ+ K @  ƒ06“?d ø%DQº• @  ƒ17“?d 8&DlðŒ @  ƒ28“?d x&D’ýçR @  ƒ39“?d ¸&D¯óæ @  ƒ4:“?d ø&D‡>ä8 @  ƒ5;“?d 8'DôÆ/ @  ƒ6<“?d x'D‘eÑñ @  ƒ7=“?d ¸'D ÌaÒ @  ƒ8>“?d ø'D]v  @  ƒ9?“?d 8(Do‡ùè @  ƒ:@“?d x(Díî6 @  ƒ;A“?d ¸(DzDú‚ @  ƒ<B“?d ø(DøÕí\ @  ƒ=C“?d 8)DlÏK @  ƒ>D“?d x)DîŽØ• @  ƒ?E“?d ¸)D`‡wt @  ƒ@F“?d ø)Dâ`ª @  ƒAG“?d 8*D£À³ @  ƒBH“?d x*D!Qšm @  ƒCI“?d ¸*D¶ŽÙ @  ƒDJ“?d ø*D4’™ @  ƒEK“?d 8+D X» @  ƒFL“?d x+D"ɬÎ @  ƒGM“?d ¸+D¾`í @  ƒHN“?d ø+D<ñ 3 @  ƒIO“?d 8,Dœ}× @  ƒJP“?d x,DìÀÖ @  ƒKQ“?d ¸,D‰¾Ôb @  ƒLR“?d ø,D /ü @  ƒMS“?d 8-DŸåá« @  ƒNT“?d x-Dtöu @  ƒOU“?d ¸-D,|x¶ @  ƒPV“?d ø-D®íoh @  ƒQW“?d 8.Dï;‚q @  ƒRX“?d x.Dmª•¯ @  ƒSY“?d ¸.Dúø @  ƒTZ“?d ø.Dxi–Å @  ƒU[“?d 8/D죴Ò @  ƒV\“?d x/Dn2£  @  ƒW]“?d ¸/Dò›/ @  ƒX^“?d ø/Dp ñ @  ƒY_“?d 80Dê¡®« @  ƒZ`“?d x0Dh0¹u @  ƒ[a“?d ¸0Dÿb­Á @  ƒ\b“?d ø0D}óº @  ƒ]c“?d 81Dé9˜ @  ƒ^d“?d x1Dk¨Ö @  ƒ_e“?d ¸1DK¦&¥ @  ƒ`f“?d ø1DÉ71{ @  ƒag“?d 82DˆáÜb @  ƒbh“?d x2D p˼ @  ƒci“?d ¸2D"ß @  ƒdj“?d ø2D³ÈÖ @  ƒek“?d 83D‹yêÁ @  ƒfl“?d x3D èý @  ƒgm“?d ¸3D•AM< @  ƒhn“?d ø3DÐZâ @  ƒio“?d 84D·\†Ù @  ƒjp“?d x4D5Í‘ @  ƒkq“?d ¸4D¢Ÿ…³ @  ƒlr“?d ø4D ’m @  ƒms“?d 85D´Ä°z @  ƒnt“?d x5D6U§¤ @  ƒou“?d ¸5D])g @  ƒpv“?d ø5D…Ì>¹ @  ƒqw“?d 86DÄÓ  @  ƒrx“?d x6DF‹Ä~ @  ƒsy“?d ¸6DÑÙÐÊ @  ƒtz“?d ø6DSHÇ @  ƒu{“?d 87DÇ‚å @  ƒv|“?d x7DEòÝ @  ƒw}“?d ¸7DÙºBþ @  ƒx~“?d ø7D[+U  @  ƒy“?d 88D¦7ŽV @  ƒz€“?d x8D$¦™ˆ @  ƒ{“?d ¸8D³ô< @  ƒ|‚“?d ø8D1ešâ @  ƒ}ƒ“?d 89D¥¯¸õ @  ƒ~„“?d x9D'>¯+ @  ƒ…“?d ¸9DJa0û @  ƒ€†“?d ø9DÈð'% @  ƒ‡“?d 8:D‰&Ê< @  ƒ‚ˆ“?d x:D ·Ýâ @  ƒƒ‰“?d ¸:DœåÉV @  ƒ„Š“?d ø:DtÞˆ @  ƒ…‹“?d 8;DоüŸ @  ƒ†Œ“?d x;D/ëA @  ƒ‡“?d ¸;D”†[b @  ƒˆŽ“?d ø;DL¼ @  ƒ‰“?d 8DÅÝÅþ @  ƒ’˜“?d x>DGLÒ  @  ƒ“™“?d ¸>DÐÆ” @  ƒ”š“?d ø>DRÑJ @  ƒ•›“?d 8?DÆEó] @  ƒ–œ“?d x?DDÔäƒ @  ƒ—“?duÐ@D7 ¸?DØ}T  @  ƒ˜ž“?d ø?Dc+Ÿ« @  ƒ™ Ÿ“?d P@D„ò3 @  ƒš  “?d @D¤1 @  ƒ› ¡“?d Ð@D‘10 @  ƒœ ¢“?d ADAy¼ý @  ƒ £“?d PAD‡jÜ @  ƒž ¤“?d AD§Ÿ" @  ƒŸ ¥“?d ÐAD%õ»q @  ƒ  ¦“?d BD¸±° @  ƒ¡ §“?d PBDæ²A¶ @  ƒ¢ ¨“?d BDÆGCH @  ƒ£ ©“?d ÐBDóqBÜ @  ƒ¤ ª“?d CD#9Î4 @  ƒ¥ «“?d PCDå*w @  ƒ¦ ¬“?d CDÅßuë @  ƒ§ ­“?d ÐCDûÐè @  ƒ¨ ®“?d DDâ\#ç @  ƒ© ¯“?d PDDÙ  @  ƒª °“?d DDùúó @  ƒ« ±“?d ÐDDÌÌg @  ƒ¬ ²“?d ED„” @  ƒ­ ³“?d PEDÚ—-® @  ƒ® ´“?d EDúb/P @  ƒ¯ µ“?d ÐEDi´³ @  ƒ° ¶“?d FDôJr @  ƒ± ·“?d PFDªINt @  ƒ² ¸“?d FDмLŠ @  ƒ³ ¹“?d ÐFD¿ŠM @  ƒ´ º“?d GDoÂÁö @  ƒµ »“?d PGD©Ñx× @  ƒ¶ ¼“?d GD‰$z) @  ƒ· ½“?d ÐGD·éß* @  ƒ¸ ¾“?d HDƒS7 @  ƒ¹ ¿“?d PHDÕ¢G @  ƒº À“?d HDõWEî @  ƒ» Á“?d ÐHDÀaDz @  ƒ¼ “?d ID)È’ @  ƒ½ Ó?d PIDÖ:q³ @  ƒ¾ Ä“?d IDöÏsM @  ƒ¿ Å“?d ÐIDڢɌ @  ƒÀ Æ“?d JDGæiM @  ƒÁ Ç“?d PJDå3K @  ƒ È“?d JD91µ @  ƒà É“?d ÐJD &0! @  ƒÄ Ê“?d KDÜn¼É @  ƒÅ Ë“?d PKD}è @  ƒÆ Ì“?d KD:ˆ @  ƒÇ Í“?d ÐKDE¢ @  ƒÈ Γ?d LD Q @  ƒÉ Ï“?d PLD&Xið @  ƒÊ Г?d LD­k @  ƒË Ñ“?d ÐLD3›jš @  ƒÌ Ò“?d MDãÓær @  ƒÍ Ó“?d PMD%À_S @  ƒÎ Ô“?d MD5]­ @  ƒÏ Õ“?d ÐMD–YÆN @  ƒÐ Ö“?d ND f @  ƒÑ ד?d PNDU<‰ @  ƒÒ Ø“?d NDuë>w @  ƒÓ Ù“?d ÐND@Ý?ã @  ƒÔ Ú“?d OD•³  @  ƒÕ Û“?d PODV† * @  ƒÖ Ü“?d ODvsÔ @  ƒ× Ý“?d ÐODH¾­× @  ƒØ Þ“?d PDö`e @  ƒÙ ß“?d PPDP„S @  ƒÚ à“?d PDpq­ @  ƒÛ á“?d ÐPDEG9 @  ƒÜ â“?d QD•ŸÑ @  ƒÝ ã“?d PQDS&ð @  ƒÞ ä“?d QDsé$ @  ƒß å“?d ÐQDñƒ˜] @  ƒà æ“?d RDlÇ8œ @  ƒá ç“?d PRD2Äbš @  ƒâ è“?d€ RD”gÈÝ @  „ é“?d ÐRD@` @  „ ê“?d SDX ˆ @  „ ë“?d PSD“OD @  „ ì“?d SD³÷Mº @  „ í“?d ÐSDCˆ·Ã @  „ î“?d TDZÆDÌ @  „ ï“?d PTD¯'#\ @  „ ð“?d TDÒ!¢ @  „ ñ“?d ÐTD­ÛÛ @  „ ò“?d UD¯åW3 @  „ ó“?d PUD¬¿ÿ @  „ ô“?d UDŒJ @  „ õ“?d ÐUD|5íx @  „ ö“?d VDáqM¹ @  „ ÷“?d PVDÜav% @  „ ø“?d VDü”tÛ @  „ ù“?d ÐVD 뎢 @  „ ú“?d WDÜ£J @  „ û“?d PWDßù@† @  „ ü“?d WDÿ Bx @  „ ý“?d ÐWDs¸ @  „ þ“?d XD;Œ4 @  „ ÿ“?d PXDý"AI @  „ ”?d XDÝ×C· @  „ ”?d ÐXD-¨¹Î @  „ ”?d YDýà5& @  „ ”?d PYDþºwê @  „ ”?d YDÞOu @  „ ”?d ÐYD.0m @  „ ”?d ZD³t/¬ @  „ ”?d PZDŸb3€ @  „ ”?d ZD¿—1~ @  „!  ”?d ÐZDOèË @  „"  ”?d [DŸ Gï @  „#  ”?d P[Dœú# @  „$  ”?d [D¼Ý @  „%  ”?d Ð[DLpý¤ @  „& ”?d \DU>« @  „' ”?d P\D ßi; @  „( ”?d \D€*kÅ @  „) ”?d Ð\DpU‘¼ @  „* ”?d ]D T @  „+ ”?d P]D£G_˜ @  „, ”?d ]Dƒ²]f @  „- ”?d Ð]Dsͧ @  „. ”?d ^Dî‰Þ @  „/ ”?d P^DÓ™¼ @  „1 ”?d Ð^DÄÅ @  „2 ”?d _DÓ[H- @  „3 ”?d P_DÐ á @  „4 ”?d _Dðô @  „uÐ`D5 ”?d Ð_D‹òf @  „6 ”?d (`D¾sGþ @  „7 ”?d h`DÖ%² @  „8  ”?d ¨`DöÐL @  „9 !”?d è`D¯á5 @  „: "”?d (aDÖçmÝ @  „; #”?d haDÕ½/ @  „< $”?d ¨aDõH-ï @  „= %”?d èaD7×– @  „> &”?d (bD˜swW @  „? '”?d hbDbmé @  „@ (”?d ¨bD:—o @  „A )”?d èbDÊè•n @  „B *”?d (cD † @  „C +”?d hcDú[J @  „D ,”?d ¨cD9Y´ @  „E -”?d ècDÉp£Í @  „F .”?d (dDÐ>P @  „G /”?d hdD%ß7R @  „H 0”?d ¨dD*5¬ @  „I 1”?d èdDõUÏÕ @  „J 2”?d (eD%C= @  „K 3”?d heD&Gñ @  „L 4”?d ¨eD² @  „M 5”?d èeDöÍùv @  „N 6”?d (fDk‰Y· @  „O 7”?d hfDV™b+ @  „P 8”?d ¨fDvl`Õ @  „Q 9”?d èfD†š¬ @  „R :”?d (gDV[D @  „S ;”?d hgDUTˆ @  „T <”?d ¨gDuôVv @  „U =”?d ègD…‹¬ @  „V >”?d (hD±t  @  „W ?”?d hhD)rkO @  „X @”?d ¨hD ‡i± @  „Y A”?d èhDùø“È @  „Z B”?d (iD)°  @  „[ C”?d hiD*ê]ì @  „\ D”?d ¨iD _ @  „] E”?d èiDú`¥k @  „^ F”?d (jDg$ª @  „_ G”?d hjDK2† @  „` H”?d ¨jDkÇx @  „a I”?d èjD›¸á @  „b J”?d (kDKðmé @  „c K”?d hkDHª/% @  „d L”?d ¨kDh_-Û @  „e M”?d èkD˜ ×¢ @  „f N”?d (lDn$­ @  „g O”?d hlDtC= @  „h P”?d ¨lDTzAà @  „i Q”?d èlD¤»º @  „j R”?d (mDtM7R @  „k S”?d hmDwuž @  „l T”?d ¨mDWâw` @  „m U”?d èmD§ @  „n V”?d (nD:Ù-Ø @  „o W”?d hnDÉD @  „p X”?d ¨nD'<º @  „q Y”?d ènD×Cîà @  „r Z”?d (oD b+ @  „s [”?d hoDQ ç @  „t \”?d ¨oD$¤" @  „u ]”?d èoDÔÛØ` @  „v ^”?d (pDjdÒ @  „w _”?d hpDS:ž @  „x `”?d ¨pD"¦8` @  „y a”?d èpDÒÙ @  „z b”?d (qD‘Nñ @  „{ c”?d hqDË = @  „| d”?d ¨qD!>à @  „} e”?d èqDÑAôº @  „~ f”?d (rDLT{ @  „ g”?d hrD-B~ô @  „€ h”?d ¨rD ·|  @  „ i”?d èrDýȆs @  „‚ j”?d (sD-€ › @  „ƒ k”?d hsD.ÚHW @  „„ l”?d ¨sD/J© @  „… m”?d èsDþP°Ð @  „† n”?d (tDçCß @  „‡ o”?d htDÿ$O @  „ˆ p”?d ¨tD2 &± @  „‰ q”?d ètDÂuÜÈ @  „Š r”?d (uD=P  @  „‹ s”?d huDgì @  „Œ t”?d ¨uD1’ @  „ u”?d èuDÁíêk @  „Ž v”?d (vD\©Jª @  „ w”?d hvDa¹q6 @  „ x”?d ¨vDALsÈ @  „‘ y”?d èvD±3‰± @  „’ z”?d (wDa{Y @  „“ {”?d hwDb!G• @  „” |”?d ¨wDBÔEk @  „• }”?d èwD²«¿ @  „– ~”?d (xD†T3 @  „— ”?d hxD”,À @  „˜ €”?d ¨xD#a.> @  „™ ”?d èxDÓÔG @  „š ‚”?d (yDVX¯ @  „› ƒ”?d hyD c @  „œ „”?d ¨yD ù @  „ …”?d èyDІâä @  „ž †”?d (zDMÂB% @  „Ÿ ‡”?d hzDaÔ^  @  „  ˆ”?d ¨zDA!\÷ @  „¡ ‰”?d èzD±^¦Ž @  „¢ Š”?d ({Da*f @  „£ ‹”?d h{DbLhª @  „¤ Œ”?d ¨{DB¹jT @  „¥ ”?d è{D²Æ- @  „¦ Ž”?d (|D«ˆc" @  „§ ”?d h|D^i² @  „¨ ”?d ¨|D~œL @  „© ‘”?d è|DŽãü5 @  „ª ’”?d (}D^«pÝ @  „« “”?d h}D]ñ2 @  „¬ ””?d ¨}D}0ï @  „­ •”?d è}D{Ê– @  „® –”?d (~D?jW @  „¯ —”?d h~D-/QË @  „° ˜”?d ¨~D ÚS5 @  „± ™”?d è~Dý¥©L @  „² š”?d (D-í%¤ @  „³ ›”?d hD.·gh @  „´ œ”?d ¨DuЀD'Be– @  „µ ”?d èDþ=Ÿï @  „¶ ž”?d @€Dƒ}› @  „· Ÿ”?d €€DZ±6÷ @  „¸  ”?d À€DØ !) @  „¹ ¡”?d Dz†@f @  „º ¢”?d @DøW¸ @  „» £”?d €DY)T @  „¼ ¤”?d ÀDÛ¸Š @  „½ ¥”?d ‚D4Zì @  „¾ ¦”?d @‚D¶ƒM2 @  „¿ §”?d €‚D–öB¬ @  „À ¨”?d À‚DgUr @  „Á ©”?d ƒD¶Á4= @  „ ª”?d @ƒD4P#ã @  „à «”?d €ƒD•nt @  „Ä ¬”?d ÀƒDÿcÑ @  „Å ­”?d „D|_}y @  „Æ ®”?d @„DþÎj§ @  „Ç ¯”?d €„D©K @  „È °”?d À„D+ÚÉ @  „É ±”?d …D‰|n† @  „Ê ²”?d @…D íyX @  „Ë ³”?d €…DªÓ.´ @  „Ì ´”?d À…D(B9j @  „Í µ”?d †DÇèt  @  „Î ¶”?d @†DEycÒ @  „Ï ·”?d €†DÚ Mn @  „Ð ¸”?d À†DXœZ° @  „Ñ ¹”?d ‡Dú:;ÿ @  „Ò º”?d @‡Dx«,! @  „Ó »”?d €‡DÙ•{Í @  „Ô ¼”?d À‡D[l @  „Õ ½”?d ˆD © @  „Ö ¾”?d @ˆDŸ„w @  „× ¿”?d €ˆD¥æD  @  „Ø À”?d ÀˆD'wSÔ @  „Ù Á”?d ‰D…Ñ2› @  „Ú ”?d @‰D@%E @  „Û Ô?d €‰D¦~r© @  „Ü Ä”?d À‰D$ïew @  „Ý Å”?d ŠDËE( @  „Þ Æ”?d @ŠDIÔ?Ï @  „ß Ç”?d €ŠDǦ6à @  „à È”?d ÀŠDE7! @  „á É”?d ‹Dç‘@R @  „â Ê”?d€ @‹DÃK* @  … Ë”?d €‹DQ¼Tï @  … Ì”?d À‹DÓ-C1 @  … Í”?d ŒD}Ħt @  … Δ?d @ŒDÿU±ª @  … Ï”?d €ŒDfbœ` @  … Д?d ÀŒDäó‹¾ @  … Ñ”?d Dˆçµ‹ @  … Ò”?d @D v¢U @  … Ó”?d €DnT @  … Ô”?d ÀDìŠ @  … Õ”?d ŽDÆs¯ @  … Ö”?d @ŽDDâ¸ß @  … ×”?d €ŽD¸…÷ù @  … Ø”?d ÀŽD:à' @  … Ù”?d Dû¡àò @  … Ú”?d @Dy0÷, @  … Û”?d €DG[- @  … Ü”?d ÀDŸÖLó @  … Ý”?d D–¯æ  @  … Þ”?d @D>ñÕ @  … ß”?d €D¾åà @  … à”?d ÀD’/ò @  … á”?d ‘Dþ;Ì( @  … â”?d @‘D|ªÛö @  … ã”?d €‘DÝw÷ @  … ä”?d À‘DšL`) @  … å”?d ’D°¯Ö¢ @  … æ”?d @’D2>Á| @  … ç”?d €’DÎYŽZ @  … è”?d À’DLÈ™„ @  … é”?d “Dœ{¾á @  … ê”?d @“Dê©? @  …! ë”?d €“Dz> @  …" ì”?d À“Dø à @  …# í”?d ”DVå÷¥ @  …$ î”?d @”DÔtà{ @  …% ï”?d €”DMCͱ @  …& ð”?d À”DÏÒÚo @  …' ñ”?d •D£ÆäZ @  …( ò”?d @•D!Wó„ @  …) ó”?d €•DE _… @  …* ô”?d À•DDZH[ @  …+ õ”?d –DíRþÐ @  …, ö”?d @–DoÃé @  …- ÷”?d €–D“¤¦( @  …. ø”?d À–D5±ö @  …/ ù”?d —DЀ±# @  …0 ú”?d @—DR¦ý @  …1 û”?d €—D6f ü @  …2 ü”?d À—D´÷" @  …3 ý”?d ˜D7¯‡u @  …4 þ”?d @˜Dµ>« @  …5 ÿ”?d €˜D#O2 @  …6 •?d À˜D¡Þ‡ì @  …7 •?d ™DÍʹÙ @  …8 •?d @™DO[® @  …9 •?d €™D+, @  …: •?d À™D©½Ø @  …; •?d šDƒ^£S @  …< •?d @šDÏ´ @  …= •?d €šDý¨û« @  …> •?d ÀšD9ìu @  …?  •?d ›DÍ‚ @  …@  •?d @›DƒÚ\ @  …A  •?d €›Dçkv] @  …B  •?d À›Deúaƒ @  …C  •?d œDË„Æ @  …D •?d @œDI‚“ @  …E •?d €œDе¾Ò @  …F •?d ÀœDR$©  @  …G •?d D>0—9 @  …H •?d @D¼¡€ç @  …I •?d €DØÖ,æ @  …J •?d ÀDZG;8 @  …K •?d žDp¤³ @  …L •?d @žDò5šm @  …M •?d €žDRÕK @  …N •?d ÀžDŒÃ• @  …O •?d ŸDMvÂ@ @  …P •?d @ŸDÏçÕž @  …Q •?d €ŸD«yŸ @  …R •uРD?d ÀŸD)nA @  …S •?d  DÖjz¸ @  …T•?d X DTûmf @  …U•?d ˜ DP{yp @  …V •?d Ø DÒên® @  …W!•?d ¡D¾þP› @  …X"•?d X¡D•?d X¨Dõû  @  …u?•?d ˜¨D+  @  …v@•?d بDƒºÁ @  …wA•?d ©Dï®$ô @  …xB•?d X©Dm?3* @  …yC•?d ˜©D HŸ+ @  …zD•?d Ø©D‹Ùˆõ @  …{E•?d ªD¡:>~ @  …|F•?d XªD#«)  @  …}G•?d ˜ªDßÌf† @  …~H•?d تD]]qX @  …I•?d «DÀ¿`ž @  …€J•?d X«DB.w@ @  …K•?d ˜«D&YÛA @  …‚L•?d Ø«D¤ÈÌŸ @  …ƒM•?d ¬D !)Ú @  …„N•?d X¬Dˆ°> @  ……O•?d ˜¬D‡Î @  …†P•?d جD“ @  …‡Q•?d ­Dÿ:% @  …ˆR•?d X­D}“-û @  …‰S•?d ˜­Däú @  …ŠT•?d Ø­D›u–$ @  …‹U•?d ®D±– ¯ @  …ŒV•?d X®D37q @  …W•?d ˜®DÏ`xW @  …ŽX•?d Ø®DMño‰ @  …Y•?d ¯DŒDo\ @  …Z•?d X¯DÕx‚ @  …‘[•?d ˜¯Dj¢Ôƒ @  …’\•?d دDè3Ã] @  …“]•?d °DáJi¥ @  …”^•?d X°DcÛ~{ @  …•_•?d ˜°Dg[jm @  …–`•?d ذDåÊ}³ @  …—a•?d ±D‰ÞC† @  …˜b•?d X±D OTX @  …™c•?d ˜±Do8øY @  …šd•?d رDí©ï‡ @  …›e•?d ²DÇJY  @  …œf•?d X²DEÛNÒ @  …g•?d ˜²D¹¼ô @  …žh•?d زD;-* @  …Ÿi•?d ³Dëž1O @  … j•?d X³Di&‘ @  …¡k•?d ˜³D xŠ @  …¢l•?d سDéN @  …£m•?d ´D!x  @  …¤n•?d X´D£‘oÕ @  …¥o•?d ˜´D:¦B @  …¦p•?d Ø´D¸7UÁ @  …§q•?d µDÔ#kô @  …¨r•?d XµDV²|* @  …©s•?d ˜µD2ÅÐ+ @  …ªt•?d صD°TÇõ @  …«u•?d ¶Dš·q~ @  …¬v•?d X¶D&f  @  …­w•?d ˜¶DäA)† @  …®x•?d ضDfÐ>X @  …¯y•?d ·D§e> @  …°z•?d X·D%ô)S @  …±{•?d ˜·DAƒ…R @  …²|•?d Ø·DÃ’Œ @  …³}•?d ¸D@JÛ @  …´~•?d X¸DÂÛ @  …µ•?d ˜¸D+ÍJ @  …¶€•?d ظD©\]N @  …·•?d ¹DÅHc{ @  …¸‚•?d X¹DGÙt¥ @  …¹ƒ•?d ˜¹D#®Ø¤ @  …º„•?d عD¡?Ïz @  …»…•?d ºD‹Üyñ @  …¼†•?d XºD Mn/ @  …½‡•?d ˜ºDõ*!  @  …¾ˆ•?d غDw»6× @  …¿‰•?d »D   @  …ÀŠ•?d X»D‹žþ @  …Á‹•?d ˜»Dïé¬ÿ @  …ÂŒ•?d Ø»Dmx»! @  …Õ?d ¼DÑ^d @  …ÄŽ•?d X¼DAIº @  …Å•?d ˜¼DØ7dp @  …Æ•?d ؼDZ¦s® @  …Ç‘•?d ½D6²M› @  …È’•?d X½D´#ZE @  …É“•?d ˜½DÐTöD @  …Ê”•?d ؽDRÅáš @  …Ë••?d ¾Dx&W @  …Ì–•?d X¾Dú·@Ï @  …Í—•?d ˜¾DÐé @  …Θ•?d ؾD„A7 @  …Ï™•?d ¿DEôâ @  …К•?d X¿DÇe< @  …Ñ›•?d ˜¿D££= @uÐÀD  …Òœ•?d Ø¿D\ÇŸ @  …Ó€•?d 0ÀDT€‡ @  …Ô€ž•?d pÀD Å—Y @  …Õ€Ÿ•?d °ÀD EƒO @  …Ö€ •?d ðÀD‹Ô”‘ @  …×€¡•?d 0ÁDçÀª¤ @  …Ø€¢•?d pÁDeQ½z @  …Ù€£•?d °ÁD&{ @  …Ú€¤•?d ðÁDƒ·¥ @  …Û€¥•?d 0ÂD©T°. @  …Ü€¦•?d pÂD+ŧð @  …Ý€§•?d °ÂD×¢èÖ @  …Þ€¨•?d ðÂDU3ÿ @  …߀©•?d 0ÃD…€Øm @  …à€ª•?d pÃDϳ @  …ါ•?d °ÃDcfc² @  …‬•?d€ ðÃD °ƒl @  †€­•?d 0ÄDo. @  †€®•?d pÄDí‰9Þ @  †€¯•?d °ÄD±÷ïù @  †€°•?d ðÄD3fø' @  †€±•?d 0ÅD‘À™h @  †€²•?d pÅDQ޶ @  †€³•?d °ÅD¹”}Í @  †€´•?d ðÅD;j @  † €µ•?d 0ÆDÔ¯'u @  † €¶•?d pÆDV>0« @  † €·•?d °ÆDo„` @  † €¸•?d ðÆD퓾 @  † €¹•?d 0ÇDO'òñ @  †€º•?d pÇDͶå/ @  †€»•?d °ÇDÊÒ(´ @  †€¼•?d ðÇDHC?j @  †€½•?d 0ÈDR^Ð @  †€¾•?d pÈD3êݧ @  †¿•?d °ÈDs'M @  †À•?d ðÈD€â0“ @  †Á•?d 0ÉD"DQÜ @  †•?d pÉD ÕF @  †Õ?d °ÉD µy @  †Ä•?d ðÉDˆ¢§ @  †Å•?d 0ÊDg+ïÁ @  †Æ•?d pÊDÔà @  † Ç•?d °ÊDc½Ø} @  †€È•?d ðÊDá,Ï£ @  †€É•?d 0ËDCŠ®ì @  †€Ê•?d pËDÁ¹2 @  †€Ë•?d °ËD×yS @  † €Ì•?d ðËDUèDÇ @  †!€Í•?d 0ÌD>HZo @  †"€Ε?d pÌD¼ÙM± @  †#€Ï•?d °ÌDà§›– @  †$€Е?d ðÌDb6ŒH @  †%€Ñ•?d 0ÍDÀí @  †&€Ò•?d pÍDBúÙ @  †'€Ó•?d °ÍDèÄ ¢ @  †(€Ô•?d ðÍDjU| @  †)€Õ•?d 0ÎD…ÿS @  †*€Ö•?d pÎDnDÄ @  †+€ו?d °ÎD>@ð @  †,€Ø•?d ðÎD¼ÑçÑ @  †-€Ù•?d 0ÏDw†ž @  †.€Ú•?d pÏDœæ‘@ @  †/€Û•?d °ÏD›‚\Û @  †0€Ü•?d ðÏDK @  †1€Ý•?d 0ÐDÕ# @  †2€Þ•?d pÐDW² Î @  †3€ß•?d °ÐD–{â5 @  †4€à•?d ðÐDêõë @  †5€á•?d 0ÑD¶L”¤ @  †6€â•?d pÑD4݃z @  †7€ã•?d °ÑDžp @  †8€ä•?d ðÑD‰gß @  †9€å•?d 0ÒDó#*¹ @  †:€æ•?d pÒDq²=g @  †;€ç•?d °ÒDHœ‰¬ @  †<€è•?d ðÒDÊ žr @  †=€é•?d 0ÓDh«ÿ= @  †>€ê•?d pÓDê:èã @  †?€ë•?d °ÓDR_Z @  †@€ì•?d ðÓDÐ΄ @  †A€í•?d 0ÔD»n , @  †B€î•?d pÔD9ÿò @  †C€ï•?d °ÔDeÌÕ @  †D€ð•?d ðÔDçÛ  @  †E€ñ•?d 0ÕDE¶ºD @  †F€ò•?d pÕDÇ'­š @  †G€ó•?d °ÕDmâ^á @  †H€ô•?d ðÕDïsI? @  †I€õ•?d 0ÖDÙY @  †J€ö•?d pÖD‚H‡ @  †K€÷•?d °ÖD»f§L @  †L€ø•?d ðÖD9÷°’ @  †M€ù•?d 0×D›QÑÝ @  †N€ú•?d p×DÀÆ @  †O€û•?d °×D¤ ˜ @  †P€ü•?d ð×Dœ5F @  †Q€ý•?d 0ØDÚ$}ü @  †R€þ•?d pØDXµj" @  †S€ÿ•?d °ØD¹¯¤s @  †T€–?d ðØD;>³­ @  †U€–?d 0ÙD™˜Òâ @  †V€–?d pÙD Å< @  †W€–?d °ÙD±Ì6G @  †X€–?d ðÙD3]!™ @  †Y€–?d 0ÚDÜ÷lÿ @  †Z€–?d pÚD^f{! @  †[€–?d °ÚDgHÏê @  †\€–?d ðÚDåÙØ4 @  †]€ –?d 0ÛDG¹{ @  †^€ –?d pÛDÅ @  †_€ –?d °ÛDÓŒDŽ @  †`€ –?d ðÛDQSP @  †a€ –?d 0ÜD:½Mø @  †b€–?d pÜD¸,Z& @  †c€–?d °ÜDäRŒ @  †d€–?d ðÜDfÛß @  †e€–?d 0ÝDÄeú @  †f€–?d pÝDFôíN @  †g€–?d °ÝDì15 @  †h€–?d ðÝDn  ë @  †i€–?d 0ÞD D @  †j€–?d pÞD›SS @  †k€–?d °ÞD:µç˜ @  †l€–?d ðÞD¸$ðF @  †m€–?d 0ßD‚‘  @  †n€–?d pßD˜†× @  †o€–?d uÐàD/°ßDŸwKL @  †p€–?d ðßD`f/î @  †q–?d HàD ,œ¿ @  †r–?d ˆàD+ÙžA @  †s–?d ÈàDHtdš @  †t –?d áD˜<èr @  †u!–?d HáDhC  @  †v"–?d ˆáDH¶õ @  †w#–?d ÈáD@ö® @  †x$–?d âDÝSVo @  †y%–?d HâD-,¬ @  †z&–?d ˆâD Ù®è @  †{'–?d ÈâD–“ @  †|(–?d ãDFÛƒë @  †})–?d HãD¶¤y’ @  †~*–?d ˆãD–Q{l @  †+–?d ÈãDo²Ä @  †€,–?d äDvHAË @  †-–?d HäD†7»² @  †‚.–?d ˆäD¦Â¹L @  †ƒ/–?d ÈäDXØzK @  †„0–?d åDˆö£ @  †…1–?d HåDxï Ú @  ††2–?d ˆåDX$ @  †‡3–?d ÈåDP»è @  †ˆ4–?d æDÍÿH¾ @  †‰5–?d HæD=€²Ç @  †Š6–?d ˆæDu°9 @  †‹7–?d ÈæD†?Ò @  †Œ8–?d çDVw: @  †9–?d HçD¦gC @  †Ž:–?d ˆçD†ýe½ @  †;–?d ÈçD#ý½ @  †<–?d èD1 @  †‘=–?d HèDç}Ëb @  †’>–?d ˆèDLjɜ @  †“?–?d ÈèDTu&V @  †”@–?d éD„=ª¾ @  †•A–?d HéDtBPÇ @  †–B–?d ˆéDT·R9 @  †—C–?d ÈéD\´b @  †˜D–?d êDÁR£ @  †™E–?d HêD1-îÚ @  †šF–?d ˆêDØì$ @  †›G–?d ÈêDŠ’MÏ @  †œH–?d ëDZÚÁ' @  †I–?d HëDª¥;^ @  †žJ–?d ˆëDŠP9  @  †ŸK–?d ÈëD>VÆ« @  † L–?d ìD'5¤ @  †¡M–?d HìD×gÏÝ @  †¢N–?d ˆìD÷’Í# @  †£O–?d ÈìD ˆ$ @  †¤P–?d íDÙÀ‚Ì @  †¥Q–?d HíD)¿xµ @  †¦R–?d ˆíD JzK @  †§S–?d ÈíDëœ @  †¨T–?d îDœ¯<Ñ @  †©U–?d HîDlÐÆ¨ @  †ªV–?d ˆîDL%ÄV @  †«W–?d ÈîD×oe½ @  †¬X–?d ïD'éU @  †­Y–?d HïD÷X, @  †®Z–?d ˆïD×­Ò @  †¯[–?d ÈïDr­Éi @  †°\–?d ðDÌsuÛ @  †±]–?d HðD< ¢ @  †²^–?d ˆðDù\ @  †³_–?d ÈðDTw‡ @  †´`–?d ñD¯ûo @  †µa–?d HñD_c @  †¶b–?d ˆñD–è @  †·c–?d ÈñDw7å³ @  †¸d–?d òDêsEr @  †¹e–?d HòD ¿  @  †ºf–?d ˆòD:ù½õ @  †»g–?d ÈòD¡³ @  †¼h–?d óDqûö @  †½i–?d HóD„j @  †¾j–?d ˆóD¡qhq @  †¿k–?d ÈóD»p‘è @  †Àl–?d ôD¢>bç @  †Ám–?d HôDRA˜ž @  †Ân–?d ˆôDr´š` @  †Ão–?d ÈôDŒ®Yg @  †Äp–?d õD\æÕ @  †Åq–?d HõD¬™/ö @  †Ær–?d ˆõDŒl- @  †Çs–?d ÈõD„ÍËS @  †Èt–?d öD‰k’ @  †Éu–?d HöDéö‘ë @  †Êv–?d ˆöDÉ“ @  †Ëw–?d ÈöDRI2þ @  †Ìx–?d ÷D‚¾ @  †Íy–?d H÷Dr~Do @  †Îz–?d ˆ÷DR‹F‘ @  †Ï{–?d È÷D÷‹ž* @  †Ð|–?d øDÃt7 @  †Ñ}–?d HøD3 èN @  †Ò~–?d ˆøDþê° @  †Ó–?d ÈøDÅQè @  †Ô€–?d ùDMÝ @  †Õ–?d HùD½ò'y @  †Ö‚–?d ˆùD%‡ @  †×ƒ–?d ÈùD•¦ÃÜ @  †Ø„–?d úDâc @  †Ù…–?d HúDø™d @  †Ú†–?d ˆúDØh›š @  †Û‡–?d ÈúDC":q @  †Üˆ–?d ûD“j¶™ @  †Ý‰–?d HûDcLà @  †ÞŠ–?d ˆûDCàN @  †ß‹–?d ÈûD÷æ± @  †àŒ–?d üDî¨B @  †á–?d HüD׸c @  †âŽ–?d€ ˆüDJá¦; @  ‡–?d ÈüDUº- @  ‡–?d ýD…ò¡ý @  ‡‘–?d HýD°Ä i @  ‡’–?d ˆýD1¢— @  ‡“–?d ÈýDV"¶ @  ‡”–?d þDËf»w @  ‡•–?d HþDõ«t @  ‡––?d ˆþDÕ^Š @  ‡ —–?d ÈþD‹]FŒ @  ‡ ˜–?d ÿD[Êd @  ‡ ™–?d HÿDn#Ëð @  ‡ š–?d ˆÿDNÖÉ @  ‡ uÐE›–?d ÈÿDˆÅp/ @  ‡œ–?d EÇqXÞ @  ‡–?d `ETÃ= @  ‡ž–?d  EtèÁà @  ‡Ÿ–?d àEÒ Àõ @  ‡ –?d EDL @  ‡¡–?d `E7rM‰ @  ‡¢–?d  E‡Ow @  ‡£–?d àEÑ”öV @  ‡¤–?d ELÐV— @  ‡¥–?d `Eró” @  ‡¦–?d  ERèñj @  ‡§–?d àE ë«l @  ‡¨–?d EÜ£'„ @  ‡©–?d `Eé•& @  ‡ª–?d  EÉ`$î @  ‡«–?d àEsÏ @  ‡¬–?d E=nÀ @  ‡­–?d `E”WÒ“ @  ‡ ®–?d  E´¢Ðm @  ‡!¯–?d àEñè‡ @  ‡"°–?d E_¹do @  ‡#±–?d `Ejeû @  ‡$²–?d  EJzg @  ‡%³–?d àEŒiÞ$ @  ‡&´–?d E-~å @  ‡'µ–?d `E/àÛæ @  ‡(¶–?d  EÙ @  ‡)·–?d àEQƒ @  ‡*¸–?d E^ö @  ‡+¹–?d `E´hb @  ‡,º–?d  E” œ @  ‡-»–?d àER޵½ @  ‡.¼–?d Efq9  @  ‡/½–?d `Eõ¢C @  ‡0¾–?d  EÕè ½ @  ‡1¿–?d àEƒ\´š @  ‡2À–?d ES8r @  ‡3Á–?d ` Ef"9æ @  ‡4–?d   EF×; @  ‡5Ö?d à E€Ä‚9 @  ‡6Ä–?d E€"ø @  ‡7Å–?d ` E#M‡û @  ‡8Æ–?d   E¸… @  ‡9Ç–?d à E]»ß @  ‡:È–?d EóSë @  ‡;É–?d ` E¸ÅR @  ‡<Ê–?d   E˜0P @  ‡=Ë–?d à E^#é  @  ‡>Ì–?d EGm¯ @  ‡?Í–?d ` Ek n @  ‡@Ζ?d   EKõ¢ @  ‡AÏ–?d à Ep¦šz @  ‡BЖ?d E î’ @  ‡CÑ–?d ` E•Ø @  ‡DÒ–?d   Eµ-ø @  ‡EÓ–?d à Es>¬Ù @  ‡FÔ–?d Eîz  @  ‡GÕ–?d `Eз© @  ‡HÖ–?d  EðB«å @  ‡I×–?d àE®Añã @  ‡JØ–?d E~ }  @  ‡KÙ–?d `EK?|Ÿ @  ‡LÚ–?d  EkÊ~a @  ‡MÛ–?d àE­ÙÇ@ @  ‡NÜ–?d E{ò @  ‡OÝ–?d `E€kà @  ‡PÞ–?d  E žâï @  ‡Qß–?d àEzãÙ @  ‡Rà–?d EÖ2o1 @  ‡Sá–?d `Eãn¥ @  ‡Tâ–?d  EÃñl[ @  ‡Uã–?d àEâÕz @  ‡Vä–?d E˜¦u» @  ‡Wå–?d `E¦kи @  ‡Xæ–?d  E†žÒF @  ‡Yç–?d àE؈@ @  ‡Zè–?d EÕ¨ @  ‡[é–?d `E=ã< @  ‡\ê–?d  E @  ‡]ë–?d àEÛ¾ã @  ‡^ì–?d EÂKMì @  ‡_í–?d `E@!ñ¿ @  ‡`î–?d  E`ÔóA @  ‡aï–?d àE[‡Ë« @  ‡bð–?d E‹ÏGC @  ‡cñ–?d `E¾ùF× @  ‡dò–?d  Ež D) @  ‡eó–?d àEXý @  ‡fô–?d EÅ[]É @  ‡gõ–?d `Eû–øÊ @  ‡hö–?d  EÛcú4 @  ‡i÷–?d àE…` 2 @  ‡jø–?d EU(,Ú @  ‡kù–?d `E`-N @  ‡lú–?d  E@ë/° @  ‡mû–?d àE†ø–‘ @  ‡nü–?d E²Œ @  ‡oý–?d `E!ko @  ‡pþ–?d  Ežƒ‘ @  ‡qÿ–?d àE5‹–( @  ‡r—?d EåÃÀ @  ‡s—?d `EÐõT @  ‡t—?d  Eðª @  ‡u—?d àE6 ‹ @  ‡v—?d E«WJ @  ‡w—?d `E•š¥I @  ‡x—?d  Eµo§· @  ‡y—?d àEëlý± @  ‡z—?d E;$qY @  ‡{ —?d `EpÍ @  ‡| —?d  E.çr3 @  ‡} —?d àEèôË @  ‡~ —?d Eñº8 @  ‡ —?d `E>²í @  ‡€—?d  Et° @  ‡—?d àE%'ˆù @  ‡‚—?d Eõo @  ‡ƒ—?d `EÀY… @  ‡„—?d  Eà¬{ @  ‡…—?d àE&¿¾Z @  ‡†—?d E»û› @  ‡‡—?d `E…6»˜ @  ‡ˆ—?d  E¥Ã¹f @  ‡‰—?d àEûÀã` @  ‡Š—?d E+ˆoˆ @  ‡‹—?d `E¾n @  ‡Œ—?d  E>KlâuÐ E @  ‡—?d àE…ئ¿ @  ‡Ž€—?d 8 EôÓxÙ @  ‡€—?d x Eg¿ã: @  ‡€—?d ¸ EGJáÄ @  ‡‘€—?d ø Eá®àò @  ‡’€ —?d 8!E1æl @  ‡“€!—?d x!EÐmŽ @  ‡”€"—?d ¸!E$%op @  ‡•€#—?d ø!Eâ6ÖQ @  ‡–€$—?d 8"Erv @  ‡—€%—?d x"EA¿Ó“ @  ‡˜€&—?d ¸"EaJÑm @  ‡™€'—?d ø"E?I‹k @  ‡š€(—?d 8#Eïƒ @  ‡›€)—?d x#EÚ7 @  ‡œ€*—?d ¸#EúÂé @  ‡€+—?d ø#E<ѽÈ @  ‡ž€,—?d 8$E%ŸNÇ @  ‡Ÿ€-—?d x$E§õò” @  ‡ €.—?d ¸$E‡ðj @  ‡¡€/—?d ø$E¼SÈ€ @  ‡¢€0—?d 8%ElDh @  ‡£€1—?d x%EY-Eü @  ‡¤€2—?d ¸%EyØG @  ‡¥€3—?d ø%E¿Ëþ# @  ‡¦€4—?d 8&E"^â @  ‡§€5—?d x&EBûá @  ‡¨€6—?d ¸&E<·ù @  ‡©€7—?d ø&Eb´£ @  ‡ª€8—?d 8'E²ü/ñ @  ‡«€9—?d x'E‡Ê.e @  ‡¬€:—?d ¸'E§?,› @  ‡­€;—?d ø'Ea,•º @  ‡®€<—?d 8(EUÓ§ @  ‡¯€=—?d x(EÆ¿‚D @  ‡°€>—?d ¸(EæJ€º @  ‡±€?—?d ø(E°þ” @  ‡²€@—?d 8)E`¶u @  ‡³€A—?d x)EU€á @  ‡´€B—?d ¸)Euu @  ‡µ€C—?d ø)E³f¢> @  ‡¶€D—?d 8*E."ÿ @  ‡·€E—?d x*Eï§ü @  ‡¸€F—?d ¸*E0¥ @  ‡¹€G—?d ø*Enÿ @  ‡º€H—?d 8+E¾Qsì @  ‡»€I—?d x+E‹grx @  ‡¼€J—?d ¸+E«’p† @  ‡½€K—?d ø+Emɧ @  ‡¾€L—?d 8,EtÏ:¨ @  ‡¿€M—?d x,EX¢€i @  ‡À€N—?d ¸,ExW‚— @  ‡Á€O—?d ø,ECº} @  ‡€P—?d 8-E“L6• @  ‡ÀQ—?d x-E¦z7 @  ‡Ä€R—?d ¸-E†5ÿ @  ‡Å€S—?d ø-E@œŒÞ @  ‡Æ€T—?d 8.EÝØ, @  ‡Ç€U—?d x.E㉠@  ‡È€V—?d ¸.EÃà‹â @  ‡É€W—?d ø.EãÑä @  ‡Ê€X—?d 8/EM«]  @  ‡Ë€Y—?d x/Ex\˜ @  ‡Ì€Z—?d ¸/EXh^f @  ‡Í€[—?d ø/Ež{çG @  ‡΀\—?d 80E ¥[õ @  ‡Ï€]—?d x0E³ÉÀ @  ‡Ѐ^—?d ¸0E“<Âè @  ‡Ñ€_—?d ø0E5ØÃÞ @  ‡Ò€`—?d 81EåO6 @  ‡Ó€a—?d x1EЦN¢ @  ‡Ô€b—?d ¸1EðSL\ @  ‡Õ€c—?d ø1E6@õ} @  ‡Ö€d—?d 82E«U¼ @  ‡×€e—?d x2E•Éð¿ @  ‡Ø€f—?d ¸2Eµ<òA @  ‡Ù€g—?d ø2Eë?¨G @  ‡Ú€h—?d 83E;w$¯ @  ‡Û€i—?d x3EA%; @  ‡Ü€j—?d ¸3E.´'Å @  ‡Ý€k—?d ø3Eè§žä @  ‡Þ€l—?d 84Eñémë @  ‡߀m—?d x4EsƒÑ¸ @  ‡à€n—?d ¸4ESvÓF @  ‡á€o—?d ø4Eh%ë¬ @  ‡â€p—?d€ 85E÷s @  ˆ€q—?d x5ED€:« @  ˆ€r—?d ¸5Edu8U @  ˆ€s—?d ø5Eg/z™ @  ˆ€t—?d 86EúkÚX @  ˆ€u—?d x6E  ! @  ˆ€v—?d ¸6E*á"ß @  ˆ€w—?d ø6EºP'£ @  ˆ€x—?d 87Ej«K @  ˆ €y—?d x7EšgQ2 @  ˆ €z—?d ¸7Eº’SÌ @  ˆ €{—?d ø7E¹È @  ˆ €|—?d 88E7 @  ˆ €}—?d x8E}Hgd @  ˆ€~—?d ¸8E]½eš @  ˆ€—?d ø8EuÜDµ @  ˆ€€—?d 89E¥”È] @  ˆ€—?d x9EUë2$ @  ˆ€‚—?d ¸9Eu0Ú @  ˆ€ƒ—?d ø9EvDr @  ˆ€„—?d 8:EëÒ× @  ˆ€…—?d x:E(® @  ˆ€†—?d ¸:E;Š*P @  ˆ€‡—?d ø:E«;/, @  ˆ€ˆ—?d 8;E{s£Ä @  ˆ€‰—?d x;E‹ Y½ @  ˆ€Š—?d ¸;E«ù[C @  ˆ€‹—?d ø;E¨£ @  ˆ€Œ—?d 8E¶ýú¥ @  ˆ%€•—?d x>EF‚Ü @  ˆ&€–—?d ¸>Efw" @  ˆ'€——?d ø>EöÆ^ @  ˆ(€˜—?d 8?E&Ž‹¶ @  ˆ)€™—?d x?EÖñqÏ @  ˆ*€š—?duÐ@E7 ¸?Eös1 @  ˆ+€›—?d ø?EˆÞB @  ˆ,œ—?d P@EKrø½ @  ˆ-—?d @Eiä @  ˆ.ž—?d Ð@E›ø: @  ˆ/Ÿ—?d AE Öû  @  ˆ0 —?d PAEŽGì~ @  ˆ1¡—?d AEÜ\' @  ˆ2¢—?d ÐAE^Íù @  ˆ3£—?d BEBBá* @  ˆ4¤—?d PBEÀÓöô @  ˆ5¥—?d BE’È­ @  ˆ6¦—?d ÐBEYs @  ˆ7§—?d CEÒ19 @  ˆ8¨—?d PCEP ‡ç @  ˆ9©—?d CE»h¾ @  ˆ:ª—?d ÐCE€*` @  ˆ;«—?d DE¯Ù} @  ˆ<¬—?d PDEš>Σ @  ˆ=­—?d DEÈ%!ú @  ˆ>®—?d ÐDEJ´6$ @  ˆ?¯—?d EEÿ,Õ@ @  ˆ@°—?d PEE}½Âž @  ˆA±—?d EE/¦-Ç @  ˆB²—?d ÐEE­7: @  ˆC³—?d FE±¸ÏÊ @  ˆD´—?d PFE3)Ø @  ˆEµ—?d FEa27M @  ˆF¶—?d ÐFE㣠“ @  ˆG·—?d GE!˾Ù @  ˆH¸—?d PGE£Z© @  ˆI¹—?d GEñAF^ @  ˆJº—?d ÐGEsÐQ€ @  ˆK»—?d HEÆäˆ @  ˆL¼—?d PHEDuŸQ @  ˆM½—?d HEnp @  ˆN¾—?d ÐHE”ÿgÖ @  ˆO¿—?d IEó‰] @  ˆPÀ—?d PIEqžƒ @  ˆQÁ—?d IE# qÚ @  ˆR—?d ÐIE¡šf @  ˆS×?d JE½“× @  ˆTÄ—?d PJE?„„  @  ˆUÅ—?d JEmŸkP @  ˆVÆ—?d ÐJEï|Ž @  ˆWÇ—?d KE-fâÄ @  ˆXÈ—?d PKE¯÷õ @  ˆYÉ—?d KEýìC @  ˆZÊ—?d ÐKE}  @  ˆ[Ë—?d LEçø«€ @  ˆ\Ì—?d PLEei¼^ @  ˆ]Í—?d LE7rS @  ˆ^Η?d ÐLEµãDÙ @  ˆ_Ï—?d ME®|¡/ @  ˆ`З?d PME,í¶ñ @  ˆaÑ—?d ME~öY¨ @  ˆbÒ—?d ÐMEügNv @  ˆcÓ—?d NEà軥 @  ˆdÔ—?d PNEby¬{ @  ˆeÕ—?d NE0bC" @  ˆfÖ—?d ÐNE²óTü @  ˆg×—?d OEp›Ê¶ @  ˆhØ—?d POEò Ýh @  ˆiÙ—?d OE 21 @  ˆjÚ—?d ÐOE"€%ï @  ˆkÛ—?d PE•ÌO @  ˆlÜ—?d PPEŸÛ‘ @  ˆmÝ—?d PEÍ4È @  ˆnÞ—?d ÐPEOŽ# @  ˆoß—?d QEØ ØŒ @  ˆpà—?d PQEZ1ÏR @  ˆqá—?d QE*  @  ˆrâ—?d ÐQEŠ»7Õ @  ˆsã—?d RE–4 @  ˆtä—?d PRE¥ÕØ @  ˆuå—?d REF¾: @  ˆvæ—?d ÐREÄ/-_ @  ˆwç—?d SEG³ @  ˆxè—?d PSE„Ö¤Ë @  ˆyé—?d SEÖÍK’ @  ˆzê—?d ÐSET\\L @  ˆ{ë—?d TEÌÙúQ @  ˆ|ì—?d PTENHí @  ˆ}í—?d TESÖ @  ˆ~î—?d ÐTEžÂ @  ˆï—?d UEÈ Æ] @  ˆ€ð—?d PUEJу @  ˆñ—?d UE†>Ú @  ˆ‚ò—?d ÐUEš) @  ˆƒó—?d VE†˜Ü× @  ˆ„ô—?d PVE Ë  @  ˆ…õ—?d VEV$P @  ˆ†ö—?d ÐVEÔƒ3Ž @  ˆ‡÷—?d WEë­Ä @  ˆˆø—?d PWE”zº @  ˆ‰ù—?d WEÆaUC @  ˆŠú—?d ÐWEDðB @  ˆ‹û—?d XEñÄ›’ @  ˆŒü—?d PXEsUŒL @  ˆý—?d XE!Nc @  ˆŽþ—?d ÐXE£ßtË @  ˆÿ—?d YEC3ª1 @  ˆ˜?d PYEÁ¢½ï @  ˆ‘˜?d YE“¹R¶ @  ˆ’˜?d ÐYE(Eh @  ˆ“˜?d ZE §°» @  ˆ”˜?d PZE6§e @  ˆ•˜?d ZEÝ-H< @  ˆ–˜?d ÐZE_¼_â @  ˆ—˜?d [EÔÁ¨ @  ˆ˜˜?d P[EEÖv @  ˆ™ ˜?d [EM^9/ @  ˆš ˜?d Ð[EÏÏ.ñ @  ˆ› ˜?d \EWJˆì @  ˆœ ˜?d P\EÕÛŸ2 @  ˆ ˜?d \E‡Àpk @  ˆž˜?d Ð\EQgµ @  ˆŸ˜?d ]E΂C @  ˆ ˜?d P]Eœ_• @  ˆ¡˜?d ]EÎDzÄ @  ˆ¢˜?d Ð]ELÕm @  ˆ£˜?d ^EPZ˜É @  ˆ¤˜?d P^EÒË @  ˆ¥˜?d ^E€Ð`N @  ˆ¦˜?d Ð^EAw @  ˆ§˜?d _EÀ)éÚ @  ˆ¨˜?d P_EB¸þ @  ˆ©˜?d _E£] @  ˆuÐ`Eª˜?d Ð_E’2ƒ @  ˆ«˜?d (`E­æ  @  ˆ¬˜?d h`E/ñ× @  ˆ­˜?d ¨`E}‹Ž @  ˆ®˜?d è`Eÿ P @  ˆ¯˜?d (aEh4òÊ @  ˆ° ˜?d haEê¥å @  ˆ±!˜?d ¨aE¸¾ M @  ˆ²"˜?d èaE:/“ @  ˆ³#˜?d (bE& è@ @  ˆ´$˜?d hbE¤1ÿž @  ˆµ%˜?d ¨bEö*Ç @  ˆ¶&˜?d èbEt» @  ˆ·'˜?d (cE¶Ó™S @  ˆ¸(˜?d hcE4BŽ @  ˆ¹)˜?d ¨cEfYaÔ @  ˆº*˜?d ècEäÈv  @  ˆ»+˜?d (dE|MÐ @  ˆ¼,˜?d hdEþÜÇÉ @  ˆ½-˜?d ¨dE¬Ç( @  ˆ¾.˜?d èdE.V?N @  ˆ¿/˜?d (eE›ÎÜ* @  ˆÀ0˜?d heE_Ëô @  ˆÁ1˜?d ¨eEKD$­ @  ˆÂ2˜?d èeEÉÕ3s @  ˆÃ3˜?d (fEÕZÆ  @  ˆÄ4˜?d hfEWËÑ~ @  ˆÅ5˜?d ¨fEÐ>' @  ˆÆ6˜?d èfE‡A)ù @  ˆÇ7˜?d (gEE)·³ @  ˆÈ8˜?d hgEǸ m @  ˆÉ9˜?d ¨gE•£O4 @  ˆÊ:˜?d ègE2Xê @  ˆË;˜?d (hE¢å @  ˆÌ<˜?d hhE —–; @  ˆÍ=˜?d ¨hErŒyb @  ˆÎ>˜?d èhEðn¼ @  ˆÏ?˜?d (iE—c€7 @  ˆÐ@˜?d hiEò—é @  ˆÑA˜?d ¨iEGéx° @  ˆÒB˜?d èiEÅxon @  ˆÓC˜?d (jEÙ÷š½ @  ˆÔD˜?d hjE[fc @  ˆÕE˜?d ¨jE }b: @  ˆÖF˜?d èjE‹ìuä @  ˆ×G˜?d (kEI„ë® @  ˆØH˜?d hkEËüp @  ˆÙI˜?d ¨kE™) @  ˆÚJ˜?d èkEŸ÷ @  ˆÛK˜?d (lEƒ¢ê @  ˆÜL˜?d hlE‹µ4 @  ˆÝM˜?d ¨lESZm @  ˆÞN˜?d èlEÑM³ @  ˆßO˜?d (mEÊž¨E @  ˆàP˜?d hmEH¿› @  ˆáQ˜?d ¨mEP @  ˆâR˜?d€ èmEìF[º @  ‰S˜?d (nEˆæ@ @  ‰T˜?d hnE“ñž @  ‰U˜?d ¨nEKå* @  ‰V˜?d ènE†Úòô @  ‰W˜?d (oEŠ3Ä @  ‰X˜?d hoE‘$ @  ‰Y˜?d ¨oE”8”9 @  ‰Z˜?d èoE©ƒç @  ‰ [˜?d (pEìõ‘ª @  ‰ \˜?d hpEnd†t @  ‰ ]˜?d ¨pEù6’À @  ‰ ^˜?d èpE{§… @  ‰ _˜?d (qEš @  ‰`˜?d hqE À @  ‰a˜?d ¨qE<† @  ‰b˜?d èqE¾’‘Ý @  ‰c˜?d (rEgTŸã @  ‰d˜?d hrEåň= @  ‰e˜?d ¨rEr—œ‰ @  ‰f˜?d èrEð‹W @  ‰g˜?d (sEüÜJg @  ‰h˜?d hsE~M]¹ @  ‰i˜?d ¨sEâäíš @  ‰j˜?d èsE`uúD @  ‰k˜?d (tE=¹§´ @  ‰l˜?d htE¿(°j @  ‰m˜?d ¨tE(z¤Þ @  ‰n˜?d ètEªë³ @  ‰o˜?d (uEÃaÜ @  ‰p˜?d huEAð @  ‰q˜?d ¨uEaþ®q @  ‰ r˜?d èuEão¹¯ @  ‰!s˜?d (vE:©·‘ @  ‰"t˜?d hvE¸8 O @  ‰#u˜?d ¨vE/j´û @  ‰$v˜?d èvE­û£% @  ‰%w˜?d (wE¡!b @  ‰&x˜?d hwE#°uË @  ‰'y˜?d ¨wE¿Åè @  ‰(z˜?d èwE=ˆÒ6 @  ‰){˜?d (xEMõðÔ @  ‰*|˜?d hxEÏdç  @  ‰+}˜?d ¨xEX6ó¾ @  ‰,~˜?d èxEÚ§ä` @  ‰-˜?d (yEà ?ã @  ‰.€˜?d hyEA(= @  ‰/˜?d ¨yEp•¦þ @  ‰0‚˜?d èyEò±  @  ‰1ƒ˜?d (zE+¿ @  ‰2„˜?d hzE©S¨À @  ‰3…˜?d ¨zE>¼t @  ‰4†˜?d èzE¼«ª @  ‰5‡˜?d ({E°Jjš @  ‰6ˆ˜?d h{E2Û}D @  ‰7‰˜?d ¨{E®rÍg @  ‰8Š˜?d è{E,ãÚ¹ @  ‰9‹˜?d (|Eq/‡I @  ‰:Œ˜?d h|Eó¾— @  ‰;˜?d ¨|Edì„# @  ‰<Ž˜?d è|Eæ}“ý @  ‰=˜?d (}E÷0! @  ‰>˜?d h}E f'ÿ @  ‰?‘˜?d ¨}Eƒoˆ @  ‰@’˜?d è}EþŸÀ @  ‰A“˜?d (~EØ8‘þ @  ‰B”˜?d h~EZ©†  @  ‰C•˜?d ¨~EÍû’” @  ‰D–˜?d è~EOj…J @  ‰E—˜?d (EC°Dz @  ‰F˜˜?d hEÁ!S¤ @  ‰G™˜?d ¨EuЀE']ˆã‡ @  ‰Hš˜?d èEßôY @  ‰I›˜?d @€Eõ%¸Ò @  ‰Jœ˜?d €€EÕк, @  ‰K˜?d À€Eàæ»¸ @  ‰Lž˜?d E0®7P @  ‰MŸ˜?d @E–J6f @  ‰N ˜?d €E¶¿4˜ @  ‰O¡˜?d ÀE%Ó¯{ @  ‰P¢˜?d ‚E¸—º @  ‰Q£˜?d @‚E~„¶› @  ‰R¤˜?d €‚E^q´e @  ‰S¥˜?d À‚EkGµñ @  ‰T¦˜?d ƒE»9 @  ‰U§˜?d @ƒEå c @  ‰V¨˜?d €ƒEÅùaá @  ‰W©˜?d ÀƒEû4Äâ @  ‰Xª˜?d „Eâz7í @  ‰Y«˜?d @„E$iŽÌ @  ‰Z¬˜?d €„EœŒ2 @  ‰[­˜?d À„E1ª¦ @  ‰\®˜?d …EáâN @  ‰]¯˜?d @…EÚ±9¤ @  ‰^°˜?d €…EúD;Z @  ‰_±˜?d À…Ex.‡  @  ‰`²˜?d †Eåj'È @  ‰a³˜?d @†E#yžé @  ‰b´˜?d €†EŒœ @  ‰cµ˜?d À†E6ºƒ @  ‰d¶˜?d ‡Eæòk @  ‰e·˜?d @‡E¸ñKm @  ‰f¸˜?d €‡E˜I“ @  ‰g¹˜?d À‡E¦Éì @  ‰hº˜?d ˆE’6` @  ‰i»˜?d @ˆET%Ù¬ @  ‰j¼˜?d €ˆEtÐÛR @  ‰k½˜?d ÀˆEAæÚÆ @  ‰l¾˜?d ‰E‘®V. @  ‰m¿˜?d @‰EÇB  @  ‰nÀ˜?d €‰Eçï@÷ @  ‰oÁ˜?d À‰EtƒÛ @  ‰p˜?d ŠEéÇ{Õ @  ‰qØ?d @ŠE/ÔÂô @  ‰rĘ?d €ŠE!À  @  ‰sŘ?d ÀŠE:Áž @  ‰tƘ?d ‹Eê_Mv @  ‰uǘ?d @‹E´\p @  ‰vȘ?d €‹E”©Ž @  ‰wɘ?d À‹Eªd° @  ‰xʘ?d ŒE³*C‚ @  ‰y˘?d @ŒEu9ú£ @  ‰z̘?d €ŒEUÌø] @  ‰{͘?d ÀŒE`úùÉ @  ‰|Θ?d E°²u! @  ‰}Ϙ?d @E‹áMË @  ‰~И?d €E«O5 @  ‰ј?d ÀEd/ÅÅ @  ‰€Ò˜?d ŽEùke @  ‰Ó˜?d @ŽE?xÜ% @  ‰‚Ô˜?d €ŽEÞÛ @  ‰ƒÕ˜?d ÀŽE*»ßO @  ‰„Ö˜?d EúóS§ @  ‰…ט?d @E¤ð ¡ @  ‰†ؘ?d €E„ _ @  ‰‡Ù˜?d ÀEºÈ®\ @  ‰ˆÚ˜?d Eî @  ‰‰Û˜?d @EÂ«Ï @  ‰Šܘ?d €Eâð©1 @  ‰‹ݘ?d ÀEׯ¨¥ @  ‰ŒÞ˜?d ‘EŽ$M @  ‰ߘ?d @‘E¡j%{ @  ‰Žà˜?d €‘EŸ'… @  ‰á˜?d À‘Eó¼f @  ‰â˜?d ’E·§ @  ‰‘ã˜?d @’EI¤¥† @  ‰’ä˜?d €’EiQ§x @  ‰“å˜?d À’E\g¦ì @  ‰”æ˜?d “EŒ/* @  ‰•ç˜?d @“EÒ,p @  ‰–è˜?d €“EòÙrü @  ‰—é˜?d À“EÌ×ÿ @  ‰˜ê˜?d ”EÕZ$ð @  ‰™ë˜?d @”EIÑ @  ‰šì˜?d €”E3¼Ÿ/ @  ‰›í˜?d À”EŠž» @  ‰œî˜?d •EÖÂS @  ‰ï˜?d @•Eí‘*¹ @  ‰žð˜?d €•EÍd(G @  ‰Ÿñ˜?d À•EO” @  ‰ ò˜?d –EÒJ4Õ @  ‰¡ó˜?d @–EYô @  ‰¢ô˜?d €–E4¬  @  ‰£õ˜?d À–EšŽž @  ‰¤ö˜?d —EÑÒv @  ‰¥÷˜?d @—EÑXp @  ‰¦ø˜?d €—E¯$ZŽ @  ‰§ù˜?d À—E‘éÿ @  ‰¨ú˜?d ˜E¥s @  ‰©û˜?d @˜Ecʱ @  ‰ªü˜?d €˜ECðÈO @  ‰«ý˜?d À˜EvÆÉÛ @  ‰¬þ˜?d ™E¦ŽE3 @  ‰­ÿ˜?d @™E’›PŠ @  ‰®™?d €™E²nRt @  ‰¯™?d À™E!É— @  ‰°™?d šE¼FiV @  ‰±™?d @šEzUÐw @  ‰²™?d €šEZ Ò‰ @  ‰³™?d ÀšEo–Ó @  ‰´™?d ›E¿Þ_õ @  ‰µ™?d @›EáÝó @  ‰¶™?d €›EÁ(  @  ‰· ™?d À›Eÿå¢ @  ‰¸ ™?d œEæ«Q @  ‰¹ ™?d @œE ¸è  @  ‰º ™?d €œEMêÞ @  ‰» ™?d ÀœE5{ëJ @  ‰¼™?d Eå3g¢ @  ‰½™?d @EÞ`_H @  ‰¾™?d €Eþ•]¶ @  ‰¿™?d ÀEÒøçw @  ‰À™?d žEO¼G¶ @  ‰Á™?d @žE‰¯þ— @  ‰Â™?d €žE©Züi @  ‰Ã™?d ÀžEœlýý @  ‰Ä™?d ŸEL$q @  ‰Å™?d @ŸE'+ @  ‰Æ™?d €ŸE2Ò)í @  ‰Ç™uРE?d ÀŸE Œî @  ‰È™?d  EDÓŽ] @  ‰É ™?d X E‚À7| @  ‰Ê ™?d ˜ E¢55‚ @  ‰Ë ™?d Ø E—4 @  ‰Ì ™?d ¡EGK¸þ @  ‰Í ™?d X¡E᯹È @  ‰Î  ™?d ˜¡EÁZ»6 @  ‰Ï !™?d Ø¡ER6 Õ @  ‰Ð "™?d ¢EÏr€ @  ‰Ñ #™?d X¢E a95 @  ‰Ò $™?d ˜¢E)”;Ë @  ‰Ó %™?d Ø¢E¢:_ @  ‰Ô &™?d £EÌê¶· @  ‰Õ '™?d X£E’éì± @  ‰Ö (™?d ˜£E²îO @  ‰× )™?d Ø£EŒÑKL @  ‰Ø *™?d ¤E•Ÿ¸C @  ‰Ù +™?d X¤ESŒb @  ‰Ú ,™?d ˜¤Esyœ @  ‰Û -™?d ؤEFO @  ‰Ü .™?d ¥E–Žà @  ‰Ý /™?d X¥E­T¶  @  ‰Þ 0™?d ˜¥E¡´ô @  ‰ß 1™?d Ø¥E˧ @  ‰à 2™?d ¦E’¨f @  ‰á 3™?d X¦ETœG @  ‰â 4™?d€ ˜¦Eµ.ä¹ @  Š 5™?d ئEaY­ @  Š 6™?d §E±!ì @  Š 7™?d X§E*[€ @  Š 8™?d ˜§E ®‚ù @  Š 9™?d اEúÑx€ @  Š :™?d ¨EÎ.ô @  Š ;™?d X¨EÆÆ @  Š <™?d ˜¨Eæz8 @  Š =™?d بEêA @  Š >™?d ©EÆMf© @  Š ?™?d X©EU°‰c @  Š @™?d ˜©EuE‹ @  Š A™?d Ø©E…:qä @  Š B™?d ªE~Ñ% @  Š C™?d XªE½~ ž @  Š D™?d ˜ªE‹ ` @  Š E™?d تEmôñ @  Š F™?d «E½¼}ñ @  Š G™?d X«E&öÜ @  Š H™?d ˜«EÞä @  Š I™?d Ø«Eö|$ @  Š J™?d ¬Eï2×’ @  Š K™?d X¬Eç“1É @  Š L™?d ˜¬EÇf37 @  Š M™?d جE7ÉN @  Š N™?d ­EçQE¦ @  Š O™?d X­EK†¡ @  Š P™?d ˜­E9¾„_ @  Š Q™?d Ø­EÉÁ~& @  Š R™?d ®ET…Þç @  Š S™?d X®Eàƒ!ì @  Š T™?d ˜®EÀv# @  Š! U™?d Ø®E0 Ùk @  Š" V™?d ¯EàAUƒ @  Š# W™?d X¯E{ ôh @  Š$ X™?d ˜¯E[þö– @  Š% Y™?d دE« ï @  Š& Z™?d °E_°] @  Š' [™?d X°EþV @  Š( \™?d ˜°E= Tø @  Š) ]™?d ذEÍt® @  Š* ^™?d ±E<"i @  Š+ _™?d X±E~‘ز @  Š, `™?d ˜±E^dÚL @  Š- a™?d رE® 5 @  Š. b™?d ²E3_€ô @  Š/ c™?d X²E–_XO @  Š0 d™?d ˜²E¶ªZ± @  Š1 e™?d زEFÕ È @  Š2 f™?d ³E–,  @  Š3 g™?d X³E ×Ë @  Š4 h™?d ˜³E-"5 @  Š5 i™?d سEÝ]uL @  Š6 j™?d ´EĆC @  Š7 k™?d X´E̲` @  Š8 l™?d ˜´EìGbæ @  Š9 m™?d Ø´E8˜Ÿ @  Š: n™?d µEÌpw @  Š; o™?d XµE2j×p @  Š< p™?d ˜µEŸÕŽ @  Š= q™?d صEâà/÷ @  Š> r™?d ¶E¤6 @  Š? s™?d X¶Ee¥v¯ @  Š@ t™?d ˜¶EEPtQ @  ŠA u™?d ضEµ/Ž( @  ŠB v™?d ·EegÀ @  ŠC w™?d X·Eþ-£+ @  ŠD x™?d ˜·EÞØ¡Õ @  ŠE y™?d Ø·E.§[¬ @  ŠF z™?d ¸EX×± @  ŠG {™?d X¸Eù1ê @  ŠH |™?d ˜¸E2 3 @  ŠI }™?d ظEÂsÉm @  ŠJ ~™?d ¹E;E… @  ŠK ™?d X¹EœþÝ @  ŠL €™?d ˜¹E¼õü# @  ŠM ™?d عELŠZ @  ŠN ‚™?d ºEÑΦ› @  ŠO ƒ™?d XºEtÎ~  @  ŠP „™?d ˜ºET;|Þ @  ŠQ …™?d غE¤D†§ @  ŠR †™?d »Et O @  ŠS ‡™?d X»EïF«¤ @  ŠT ˆ™?d ˜»Eϳ©Z @  ŠU ‰™?d Ø»E?ÌS# @  ŠV Š™?d ¼E&‚ , @  ŠW ‹™?d X¼E.#Fw @  ŠX Œ™?d ˜¼EÖD‰ @  ŠY ™?d ؼEþ©¾ð @  ŠZ Ž™?d ½E.á2 @  Š[ ™?d X½EÐûñ @  Š\ ™?d ˜½Eðóá @  Š] ‘™?d ؽEq ˜ @  Š^ ’™?d ¾E5©Y @  Š_ “™?d X¾E)3VR @  Š` ”™?d ˜¾E ÆT¬ @  Ša •™?d ؾEù¹®Õ @  Šb –™?d ¿E)ñ"= @  Šc —™?d X¿E²»ƒÖ @  Šd ˜™?d ˜¿E’N( @uÐÀE  Še ™™?d Ø¿E[ö§„ @  Šfš™?d 0ÀE?öÖ @  Šg›™?d pÀE7§ @  Šhœ™?d °ÀERs @  Ši™?d ðÀEç-è  @  Šjž™?d 0ÁE7edâ @  ŠkŸ™?d pÁETÈž9 @  Šl ™?d °ÁEt=œÇ @  Šm¡™?d ðÁE„Bf¾ @  Šn¢™?d 0ÂEÆ @  Šo£™?d pÂE¼Ä @  Šp¤™?d °ÂEœó: @  Šq¥™?d ðÂElŒæC @  Šr¦™?d 0ÃE¼Äj« @  Šs§™?d pÃE'ŽË@ @  Št¨™?d °ÃE{ɾ @  Šu©™?d ðÃE÷3Ç @  Švª™?d 0ÄEîJÀÈ @  Šw«™?d pÄEæë&“ @  Šx¬™?d °ÄEÆ$m @  Šy­™?d ðÄE6aÞ @  Šz®™?d 0ÅEæ)Rü @  Š{¯™?d pÅE3‘û @  Š|°™?d °ÅE8Æ“ @  Š}±™?d ðÅEȹi| @  Š~²™?d 0ÆEUýɽ @  Š³™?d pÆE¬ª @  Š€´™?d °ÆEŒ_ë @  Šµ™?d ðÆE| ø’ @  Š‚¶™?d 0ÇE¬htz @  Šƒ·™?d pÇE7"Õ‘ @  Š„¸™?d °ÇE××o @  Š…¹™?d ðÇEç¨- @  Š†º™?d 0ÈEÓW¡  @  Š‡»™?d pÈEÛöGP @  Šˆ¼™?d °ÈEûE® @  Š‰½™?d ðÈE |¿× @  ŠŠ¾™?d 0ÉEÛ43? @  Š‹¿™?d pÉEHÉÜõ @  ŠŒÀ™?d °ÉEh<Þ  @  ŠÁ™?d ðÉE˜C$r @  ŠŽ™?d 0ÊE„³ @  ŠÙ?d pÊE \ @  ŠÄ™?d °ÊE€ò^ö @  Š‘Å™?d ðÊEp¤ @  Š’Æ™?d 0ËE Å(g @  Š“Ç™?d pËE;‰Œ @  Š”È™?d °ËEz‹r @  Š•É™?d ðËEëq  @  Š–Ê™?d 0ÌEòK‚ @  Š—Ë™?d pÌEúêd_ @  Š˜Ì™?d °ÌEÚf¡ @  Š™Í™?d ðÌE*`œØ @  ŠšΙ?d 0ÍEú(0 @  Š›Ï™?d pÍE2Ó7 @  ŠœЙ?d °ÍE$ÇÑÉ @  ŠÑ™?d ðÍEÔ¸+° @  ŠžÒ™?d 0ÎEIü‹q @  ŠŸÓ™?d pÎEýútz @  Š Ô™?d °ÎEÝv„ @  Š¡Õ™?d ðÎE-pŒý @  Š¢Ö™?d 0ÏEý8 @  Š£×™?d pÏEfr¡þ @  Š¤Ø™?d °ÏEF‡£ @  Š¥Ù™?d ðÏE¶øYy @  Š¦Ú™?d 0ÐE&åË @  Š§Û™?d pÐE‡ @  Š¨Ü™?d °ÐE rn @  Š©Ý™?d ðÐEÐ û @  ŠªÞ™?d 0ÑEEwÿ @  Š«ß™?d pÑEcè$ @  Š¬à™?d °ÑECÚ @  Š­á™?d ðÑE³bu£ @  Š®â™?d 0ÒE.&Õb @  Š¯ã™?d pÒE‹& Ù @  Š°ä™?d °ÒE«Ó' @  Š±å™?d ðÒE[¬õ^ @  Š²æ™?d 0ÓE‹äy¶ @  Š³ç™?d pÓE®Ø] @  Š´è™?d °ÓE0[Ú£ @  Šµé™?d ðÓEÀ$ Ú @  Š¶ê™?d 0ÔEÙjÓÕ @  Š·ë™?d pÔEÑË5Ž @  Š¸ì™?d °ÔEñ>7p @  Š¹í™?d ðÔEAÍ  @  Šºî™?d 0ÕEÑ Aá @  Š»ï™?d pÕE/‚æ @  Š¼ð™?d °ÕEæ€ @  Š½ñ™?d ðÕEÿ™za @  Š¾ò™?d 0ÖEbÝÚ  @  Š¿ó™?d pÖExÜ#9 @  ŠÀô™?d °ÖEX)!Ç @  ŠÁõ™?d ðÖE¨VÛ¾ @  ŠÂö™?d 0×ExWV @  ŠÃ÷™?d p×EãTö½ @  ŠÄø™?d °×EáôC @  ŠÅù™?d ð×E3Þ: @  ŠÆú™?d 0ØE!‚' @  ŠÇû™?d pØE€d| @  ŠÈü™?d °ØE/uf‚ @  ŠÉý™?d ðØEß œû @  ŠÊþ™?d 0ÙEB @  ŠËÿ™?d pÙEL<Ëb @  ŠÌš?d °ÙElÉÉœ @  ŠÍš?d ðÙEœ¶3å @  ŠÎš?d 0ÚEò“$ @  ŠÏš?d pÚE¤òKŸ @  ŠÐš?d °ÚE„Ia @  ŠÑš?d ðÚEtx³ @  ŠÒš?d 0ÛE¤0?ð @  ŠÓš?d pÛE?zž @  ŠÔš?d °ÛEœå @  ŠÕ š?d ðÛEïðfœ @  ŠÖ š?d 0ÜEö¾•“ @  Š× š?d pÜEþsÈ @  ŠØ š?d °ÜEÞêq6 @  ŠÙ š?d ðÜE.•‹O @  ŠÚš?d 0ÝEþݧ @  ŠÛš?d pÝEÇÄ  @  ŠÜš?d °ÝE 2Æ^ @  ŠÝš?d ðÝEÐM<' @  ŠÞš?d 0ÞEM œæ @  Šßš?d pÞEùcí @  Šàš?d °ÞEÙúa @  Šáš?d ðÞE)…›j @  Šâš?d€ 0ßE $ @  ‹š?d pßE÷âæ @  ‹š?d uÐàE/°ßE×ðà @  ‹š?d ðßEâÆáŒ @  ‹š?d HàEûb¿z @  ‹š?d ˆàEŸ{ @  ‹š?d ÈàE„¥ @  ‹š?d áEq: @  ‹š?d HáEó-N @  ‹ š?d ˆáE÷9X @  ‹  š?d ÈáEu.† @  ‹ !š?d âE_ó˜  @  ‹ "š?d HâEÝbÓ @  ‹ #š?d ˆâE¹#Ò @  ‹$š?d ÈâE;„4  @  ‹%š?d ãEú14Ù @  ‹&š?d HãEx # @  ‹'š?d ˆãE„Çl! @  ‹(š?d ÈãEV{ÿ @  ‹)š?d äE¨¿žº @  ‹*š?d HäE*.‰d @  ‹+š?d ˆäENY%e @  ‹,š?d ÈäEÌÈ2» @  ‹-š?d åE Ü Ž @  ‹.š?d HåE"MP @  ‹/š?d ˆåE»z6š @  ‹0š?d ÈåE9ë!D @  ‹1š?d æE—Ï @  ‹2š?d HæE‘™€ @  ‹3š?d ˆæEõî, @  ‹4š?d ÈæEw;Î @  ‹5š?d çE§Ì« @  ‹ 6š?d HçE%] u @  ‹!7š?d ˆçEÙ:DS @  ‹"8š?d ÈçE[«S @  ‹#9š?d èEØóÉÚ @  ‹$:š?d HèEZbÞ @  ‹%;š?d ˆèE>r @  ‹&<š?d ÈèE¼„eÛ @  ‹'=š?d éEÐ[î @  ‹(>š?d HéERL0 @  ‹)?š?d ˆéE¦ÑM7 @  ‹*@š?d ÈéE$@Zé @  ‹+Aš?d êE£ìb @  ‹,Bš?d HêEŒ2û¼ @  ‹-Cš?d ˆêEèEW½ @  ‹.Dš?d ÈêEjÔ@c @  ‹/Eš?d ëE«a@¶ @  ‹0Fš?d HëE)ðWh @  ‹1Gš?d ˆëEÕ—N @  ‹2Hš?d ÈëEW @  ‹3Iš?d ìEùïêÕ @  ‹4Jš?d HìE{~ý  @  ‹5Kš?d ˆìE Q  @  ‹6Lš?d ÈìE˜FÔ @  ‹7Mš?d íEñŒxá @  ‹8Nš?d HíEso? @  ‹9Oš?d ˆíEê*Bõ @  ‹:Pš?d ÈíEh»U+ @  ‹;Qš?d îEBXã  @  ‹<Rš?d HîEÀÉô~ @  ‹=Sš?d ˆîE¤¾X @  ‹>Tš?d ÈîE&/O¡ @  ‹?Uš?d ïEX›nV @  ‹@Vš?d HïEÚ yˆ @  ‹AWš?d ˆïE&m6® @  ‹BXš?d ÈïE¤ü!p @  ‹CYš?d ðE­…‹ˆ @  ‹DZš?d HðE/œV @  ‹E[š?d ˆðEKc0W @  ‹F\š?d ÈðEÉò'‰ @  ‹G]š?d ñE¥æ¼ @  ‹H^š?d HñE'wb @  ‹I_š?d ˆñE#÷t @  ‹J`š?d ÈñE¡f ª @  ‹Kaš?d òE‹…»! @  ‹Lbš?d HòE ¬ÿ @  ‹Mcš?d ˆòEmcþ @  ‹Ndš?d ÈòEïò  @  ‹Oeš?d óE.Gõ @  ‹Pfš?d HóE¬Ö+ @  ‹Qgš?d ˆóEP±O  @  ‹Rhš?d ÈóEÒ XÓ @  ‹Siš?d ôE|ɽ– @  ‹Tjš?d HôEþXªH @  ‹Ukš?d ˆôEš/I @  ‹Vlš?d ÈôE¾— @  ‹Wmš?d õEtª/¢ @  ‹Xnš?d HõEö;8| @  ‹Yoš?d ˆõEo ¶ @  ‹Zpš?d ÈõEíh @  ‹[qš?d öEÇ~´ã @  ‹\rš?d HöEEï£= @  ‹]sš?d ˆöE!˜< @  ‹^tš?d ÈöE£ â @  ‹_uš?d ÷Esº?‡ @  ‹`vš?d H÷Eñ+(Y @  ‹awš?d ˆ÷E Lg @  ‹bxš?d È÷EÝp¡ @  ‹cyš?d øE …êö @  ‹dzš?d HøEŽý( @  ‹e{š?d ˆøEêcQ) @  ‹f|š?d ÈøEhòF÷ @  ‹g}š?d ùEæx @  ‹h~š?d HùE†wo @  ‹iš?d ˆùEoa:‰ @  ‹j€š?d ÈùEíð-W @  ‹kš?d úEÇ›Ü @  ‹l‚š?d HúEE‚Œ @  ‹mƒš?d ˆúE!õ  @  ‹n„š?d ÈúE£d7Ý @  ‹o…š?d ûEbÑ7 @  ‹p†š?d HûEà@ Ö @  ‹q‡š?d ˆûE'oð @  ‹rˆš?d ÈûEž¶x. @  ‹s‰š?d üE0_k @  ‹tŠš?d HüE²Îе @  ‹u‹š?d ˆüEÖ¹&´ @  ‹vŒš?d ÈüET(1j @  ‹wš?d ýE8<_ @  ‹xŽš?d HýEº­ @  ‹yš?d ˆýE#š5K @  ‹zš?d ÈýE¡ "• @  ‹{‘š?d þE‹è” @  ‹|’š?d HþE yƒÀ @  ‹}“š?d ˆþEm/Á @  ‹~”š?d ÈþEïŸ8 @  ‹•š?d ÿEr})Ù @  ‹€–š?d HÿEðì> @  ‹—š?d ˆÿE ‹q! @  ‹‚uÐF˜š?d ÈÿEŽfÿ @  ‹ƒ™š?d F=L8¢ @  ‹„šš?d `F¿Ý/| @  ‹…›š?d  FÛªƒ} @  ‹†œš?d àFY;”£ @  ‹‡š?d F5/ª– @  ‹ˆžš?d `F·¾½H @  ‹‰Ÿš?d  F³>©^ @  ‹Š š?d àF1¯¾€ @  ‹‹¡š?d FL  @  ‹Œ¢š?d `F™ÝÕ @  ‹£š?d  Fýª³Ô @  ‹Ž¤š?d àF;¤  @  ‹¥š?d F¾Ž¤ß @  ‹¦š?d `F<³ @  ‹‘§š?d  FÀxü' @  ‹’¨š?d àFBéëù @  ‹“©š?d Fì¼ @  ‹”ªš?d `Fn‘b @  ‹•«š?d  F æµc @  ‹–¬š?d àFˆw¢½ @  ‹—­š?d Fäcœˆ @  ‹˜®š?d `Ffò‹V @  ‹™¯š?d  FÿŦœ @  ‹š°š?d àF}T±B @  ‹›±š?d FW·É @  ‹œ²š?d `FÕ& @  ‹³š?d  F±Q¼ @  ‹ž´š?d àF3À«È @  ‹Ÿµš?d FãsŒ­ @  ‹ ¶š?d `Faâ›s @  ‹¡·š?d  F…ÔU @  ‹¢¸š?d àFË @  ‹£¹š?d FœLYÜ @  ‹¤ºš?d `FÝN @  ‹¥»š?d  Fzªâ @  ‹¦¼š?d àFø;õÝ @  ‹§½š?d F”/Ëè @  ‹¨¾š?d ` F¾Ü6 @  ‹©¿š?d   FânÝ1 @  ‹ªÀš?d à F`ÿÊï @  ‹«Áš?d FJ|d @  ‹¬š?d ` FÈkº @  ‹­Ú?d   F¬úÇ» @  ‹®Äš?d à F.kÐe @  ‹¯Åš?d FïÞа @  ‹°Æš?d ` FmOÇn @  ‹±Çš?d   F‘(ˆH @  ‹²Èš?d à F¹Ÿ– @  ‹³Éš?d F½PzÓ @  ‹´Êš?d ` F?Ám  @  ‹µËš?d   F[¶Á  @  ‹¶Ìš?d à FÙ'ÖÒ @  ‹·Íš?d Fµ3èç @  ‹¸Κ?d ` F7¢ÿ9 @  ‹¹Ïš?d   F®•Òó @  ‹ºК?d à F,Å- @  ‹»Ñš?d Fçs¦ @  ‹¼Òš?d `F„vdx @  ‹½Óš?d  FàÈy @  ‹¾Ôš?d àFbß§ @  ‹¿Õš?d F$þP @  ‹ÀÖš?d `FžµéŽ @  ‹Áך?d  FbÒ¦¨ @  ‹ÂØš?d àFàC±v @  ‹ÃÙš?d Fé:Ž @  ‹ÄÚš?d `Fk« P @  ‹ÅÛš?d  FÜ Q @  ‹ÆÜš?d àFM· @  ‹ÇÝš?d FáY‰º @  ‹ÈÞš?d `FcÈžd @  ‹Éßš?d  FgHŠr @  ‹Êàš?d àFåÙ¬ @  ‹Ëáš?d FÏ:+' @  ‹Ìâš?d `FM«<ù @  ‹Íãš?d  F)Üø @  ‹Îäš?d àF«M‡& @  ‹Ïåš?d Fjø‡ó @  ‹Ðæš?d `Fèi- @  ‹Ñçš?d  Fß  @  ‹Òèš?d àF–ŸÈÕ @  ‹Óéš?d F8v- @  ‹Ôêš?d `Fºç:N @  ‹Õëš?d  FÞ–O @  ‹Öìš?d àF\‘ @  ‹×íš?d F0¿¤ @  ‹Øîš?d `F²„¨z @  ‹Ùïš?d  F+³…° @  ‹Úðš?d àF©"’n @  ‹Ûñš?d FƒÁ$å @  ‹Üòš?d `FP3; @  ‹Ýóš?d  Fe'Ÿ: @  ‹Þôš?d àF綈ä @  ‹ßõš?d F7¯ @  ‹àöš?d `Fµ”¸_ @  ‹á÷š?d  FIó÷y @  ‹âøš?d€ àFM4H @  Œùš?d F/-š` @  Œúš?d `F­¼¾ @  Œûš?d  F ‚ÚR @  Œüš?d àFŽÍŒ @  Œýš?d F,µ¬Ã @  Œþš?d `F®$» @  Œÿš?d  Föçäþ @  Œ›?d àFtvó  @  Œ ›?d F›Ü¾F @  Œ ›?d `FM©˜ @  Œ ›?d  F¸sþt @  Œ ›?d àF:âéª @  Œ ›?d F˜Dˆå @  Œ›?d `FÕŸ; @  Œ›?d  F…¡±‡ @  Œ›?d àF0¦Y @  Œ ›?d Fl¸ñ @  Œ ›?d `Fî¯/ @  Œ ›?d  FO?øÃ @  Œ ›?d àFÍ®ï @  Œ ›?d FoŽR @  Œ›?d `Fí™™Œ @  Œ›?d  Fºë< @  Œ›?d àF8üâ @  Œ›?d F×'±„ @  Œ›?d `FU¶¦Z @  Œ›?d  Fôˆñ¶ @  Œ›?d àFvæh @  Œ›?d FÔ¿‡' @  Œ›?d `FV.ù @  Œ›?d  FØ\™õuÐ F @  Œ ›?d àFZÍŽ+ @  Œ!›?d 8 FY(½ê @  Œ"›?d x FÛ¹ª4 @  Œ#›?d ¸ Fz‡ýØ @  Œ$›?d ø Føê @  Œ%›?d 8!FZ°‹I @  Œ&›?d x!FØ!œ— @  Œ'›?d ¸!F×û @  Œ( ›?d ø!F‚À% @  Œ)!›?d 8"F(C @  Œ*"›?d x"Fý¹š @  Œ+#›?d ¸"F\‡Íq @  Œ,$›?d ø"FÞÚ¯ @  Œ-%›?d 8#F|°»à @  Œ.&›?d x#Fþ!¬> @  Œ/'›?d ¸#FaU‚‚ @  Œ0(›?d ø#FãÄ•\ @  Œ1)›?d 8$Fˆd‹ô @  Œ2*›?d x$F õœ* @  Œ3+›?d ¸$F«ËËÆ @  Œ4,›?d ø$F)ZÜ @  Œ5-›?d 8%F‹ü½W @  Œ6.›?d x%F mª‰ @  Œ7/›?d ¸%F^èØ9 @  Œ80›?d ø%FÜyÏç @  Œ91›?d 8&F3Ó‚ @  Œ:2›?d x&F±B•_ @  Œ;3›?d ¸&F|³ @  Œ<4›?d ø&F’íÕm @  Œ=5›?d 8'F0K´" @  Œ>6›?d x'F²Ú£ü @  Œ?7›?d ¸'F’¯¬b @  Œ@8›?d ø'F>»¼ @  ŒA9›?d 8(FV/Ú @  ŒB:›?d x(FÔ¾ÍØ @  ŒC;›?d ¸(Fu€š4 @  ŒD<›?d ø(F÷ê @  ŒE=›?d 8)FU·ì¥ @  ŒF>›?d x)F×&û{ @  ŒG?›?d ¸)FíD¥ @  ŒH@›?d ø)FoÕ²Ø @  ŒIA›?d 8*F€ÿ¾ @  ŒJB›?d x*Fîè` @  ŒKC›?d ¸*F£Ð¿Œ @  ŒLD›?d ø*F!A¨R @  ŒME›?d 8+FƒçÉ @  ŒNF›?d x+FvÞà @  ŒOG›?d ¸+Fžð @  ŒPH›?d ø+F“ç¡ @  ŒQI›?d 8,Fw3ù  @  ŒRJ›?d x,Fõ¢î× @  ŒSK›?d ¸,FTœ¹; @  ŒTL›?d ø,FÖ ®å @  ŒUM›?d 8-Ft«Ïª @  ŒVN›?d x-Fö:Øt @  ŒWO›?d ¸-F¡¿ªÄ @  ŒXP›?d ø-F#.½ @  ŒYQ›?d 8.FÌ„ð| @  ŒZR›?d x.FNç¢ @  Œ[S›?d ¸.Fï+°N @  Œ\T›?d ø.Fmº§ @  Œ]U›?d 8/FÏÆß @  Œ^V›?d x/FMÑ @  Œ_W›?d ¸/FÃÿØ  @  Œ`X›?d ø/FAnÏÓ @  ŒaY›?d 80F^žÆ @  ŒbZ›?d x0Fω @  Œc[›?d ¸0F®ñÞô @  Œd\›?d ø0F,`É* @  Œe]›?d 81FŽÆ¨e @  Œf^›?d x1F W¿» @  Œg_›?d ¸1FÆeô× @  Œh`›?d ø1FDôã  @  Œia›?d 82F«^®o @  Œjb›?d x2F)Ϲ± @  Œkc›?d ¸2Fˆñî] @  Œld›?d ø2F `ùƒ @  Œme›?d 83F¨Æ˜Ì @  Œnf›?d x3F*W @  Œog›?d ¸3Fµ#¡® @  Œph›?d ø3F7²¶p @  Œqi›?d 84F\¨Ø @  Œrj›?d x4FÞƒ¿ @  Œsk›?d ¸4F½èê @  Œtl›?d ø4Fý,ÿ4 @  Œum›?d 85F_Šž{ @  Œvn›?d x5F݉¥ @  Œwo›?d ¸5FŠžû @  Œxp›?d ø5FìË @  Œyq›?d 86F祡­ @  Œzr›?d x6Fe4¶s @  Œ{s›?d ¸6FÄ áŸ @  Œ|t›?d ø6FF›öA @  Œ}u›?d 87Fä=— @  Œ~v›?d x7Ff¬€Ð @  Œw›?d ¸7F¥¿ @  Œ€x›?d ø7F'¨¡ @  Œy›?d 88FaÉ @  Œ‚z›?d x8FãžÞÅ @  Œƒ{›?d ¸8FB ‰) @  Œ„|›?d ø8FÀ1ž÷ @  Œ…}›?d 89Fb—ÿ¸ @  Œ†~›?d x9Fàèf @  Œ‡›?d ¸9FǢ≠@  Œˆ€›?d ø9FE3õW @  Œ‰›?d 8:Fª™¸1 @  ŒŠ‚›?d x:F(¯ï @  Œ‹ƒ›?d ¸:F‰6ø @  ŒŒ„›?d ø:F §ïÝ @  Œ…›?d 8;F©Ž’ @  ŒŽ†›?d x;F+™L @  Œ‡›?d ¸;F´ä·ð @  Œˆ›?d ø;F6u . @  Œ‘‰›?d 8Fæb·ó @  Œš’›?d x>Fdó - @  Œ›“›?d ¸>FÅÍ÷Á @  Œœ”›?d ø>FG\à @  Œ•›?d 8?FåúP @  Œž–›?d x?Fgk–Ž @  ŒŸ—›?duÐ@F7 ¸?F韂 @  Œ ˜›?d ø?Fkˆˆ\ @  Œ¡™›?d P@FÚÊßÇ @  Œ¢š›?d @Fú?Ý9 @  Œ£››?d Ð@FùeŸõ @  Œ¤œ›?d AF)- @  Œ¥›?d PAFÙRéd @  Œ¦ž›?d AFù§ëš @  Œ§Ÿ›?d ÐAF‘ñµÖ @  Œ¨ ›?d BF µ @  Œ©¡›?d PBFüÊïn @  Œª¢›?d BFÜ?í @  Œ«£›?d ÐBFße¯\ @  Œ¬¤›?d CF-#´ @  Œ­¥›?d PCFÿRÙÍ @  Œ®¦›?d CFß§Û3 @  Œ¯§›?d ÐCFâ·à¯ @  Œ°¨›?d DFûù  @  Œ±©›?d PDF †éÙ @  Œ²ª›?d DF+së' @  Œ³«›?d ÐDF()©ë @  Œ´¬›?d EFøa% @  Œµ­›?d PEFßz @  Œ¶®›?d EF(ëÝ„ @  Œ·¯›?d ÐEFÝ º @  Œ¸°›?d FF@NÕ @  Œ¹±›?d PFF°1ଠ@  Œº²›?d FFÄâR @  Œ»³›?d ÐFF“ž ž @  Œ¼´›?d GFCÖ,v @  Œ½µ›?d PGF³©Ö @  Œ¾¶›?d GF“\Ôñ @  Œ¿·›?d ÐGFMÎO @  ŒÀ¸›?d HF%²BR @  ŒÁ¹›?d PHFÕ͸+ @  ŒÂº›?d HFõ8ºÕ @  ŒÃ»›?d ÐHFöbø @  ŒÄ¼›?d IF&*tñ @  ŒÅ½›?d PIFÖUŽˆ @  ŒÆ¾›?d IFö Œv @  ŒÇ¿›?d ÐIFn¦Ç+ @  ŒÈÀ›?d JFóâgê @  ŒÉÁ›?d PJF“ @  ŒÊ›?d JF#hŸm @  ŒËÛ?d ÐJF 2Ý¡ @  ŒÌÄ›?d KFðzQI @  ŒÍÅ›?d PKF«0 @  ŒÎÆ›?d KF ð©Î @  ŒÏÇ›?d ÐKFà’R @  ŒÐÈ›?d LF®a] @  ŒÑÉ›?d PLFôÑ›$ @  ŒÒÊ›?d LFÔ$™Ú @  ŒÓË›?d ÐLF×~Û @  ŒÔÌ›?d MF6Wþ @  ŒÕÍ›?d PMF÷I­‡ @  ŒÖΛ?d MF×¼¯y @  Œ×Ï›?d ÐMF"]Èé @  ŒØЛ?d NF¿h( @  ŒÙÑ›?d PNFOf’Q @  ŒÚÒ›?d NFo“¯ @  ŒÛÓ›?d ÐNFlÉÒc @  ŒÜÔ›?d OF¼^‹ @  ŒÝÕ›?d POFLþ¤ò @  ŒÞÖ›?d OFl ¦  @  Œß×›?d ÐOF@º  @  ŒàØ›?d PFþÃ’ @  ŒáÙ›?d PPF¼üë @  ŒâÚ›?d€ PFZŠâ³ @  Û›?d ÐPF¸‘èV @  Ü›?d QFhÙd¾ @  Ý›?d PQF]ïe* @  Þ›?d QF}gÔ @  ß›?d ÐQFÛþfâ @  à›?d RFFºÆ# @  á›?d PRFxwc  @  â›?d RFX‚aÞ @   ã›?d ÐRFž‘Øÿ @   ä›?d SFNÙT @   å›?d PSF{ïUƒ @   æ›?d SF[W} @   ç›?d ÐSF { @  è›?d TFWþt @  é›?d PTF;e— @  ê›?d TF¯Îgi @  ë›?d ÐTFiÝÞH @  ì›?d UF¹•R  @  í›?d PUFŒ£S4 @  î›?d UF¬VQÊ @  ï›?d ÐUF—i  @  ð›?d VF AÉá @  ñ›?d PVF4Œlâ @  ò›?d VFyn @  ó›?d ÐVFÒj×= @  ô›?d WF"[Õ @  õ›?d PWF7ZA @  ö›?d WFáX¿ @  ÷›?d ÐWFIâ¹ @  ø›?d XF}ޤ @  ù›?d PXFÿw2÷ @   ú›?d XFß‚0  @  !û›?d ÐXF‘‰( @  "ü›?d YFÉÙÀ @  #ý›?d PYFüïT @  $þ›?d YFܪ @  %ÿ›?d ÐYFÔ,… @  &œ?d ZFIBŒD @  'œ?d PZFw)G @  (œ?d ZFWz+¹ @  )œ?d ÐZF‘i’˜ @  *œ?d [FA!p @  +œ?d P[Ftä @  ,œ?d [FTâ @  -œ?d Ð[F áG @  .œ?d \F¯´ @  / œ?d P\F€Ã/ð @  0 œ?d \F 6- @  1 œ?d Ð\Ff%”/ @  2 œ?d ]F¶mÇ @  3 œ?d P]Fƒ[S @  4œ?d ]F£®­ @  5œ?d Ð]F˜ý#G @  6œ?d ^F¹ƒ† @  7œ?d P^F;t&… @  8œ?d ^F${ @  9œ?d Ð^FÝ’Z @  :œ?d _F Ú² @  ;œ?d P_F8ì& @  <œ?d _FØ @  uÐ`F=œ?d Ð_F;š;¢ @  >€œ?d (`F…bŽ: @  ?€œ?d h`F©4û @  @€œ?d ¨`F‰ú6 @  A€œ?d è`FOé$ @  B€œ?d (aFŸ¡Ì @  C€œ?d haFª—X @  D€œ?d ¨aFŠb¦ @  E€œ?d èaF,† @  F€ œ?d (bF±Â¡Q @  G€!œ?d hbFR @  H€"œ?d ¨bF¯ú¬ @  I€#œ?d èbFié¿ @  J€$œ?d (cF¹¡3e @  K€%œ?d hcFŒ—2ñ @  L€&œ?d ¨cF¬b0 @  M€'œ?d ècFòaj  @  N€(œ?d (dFë/™ @  O€)œ?d hdFxCå @  P€*œ?d ¨dFX¶ @  Q€+œ?d èdFž¥¹: @  R€,œ?d (eFNí5Ò @  S€-œ?d heF{Û4F @  T€.œ?d ¨eF[.6¸ @  U€/œ?d èeF`}R @  V€0œ?d (fFý9®“ @  W€1œ?d hfFÃô  @  X€2œ?d ¨fFã n @  Y€3œ?d èfF%°O @  Z€4œ?d (gFõZ<§ @  [€5œ?d hgFÀl=3 @  \€6œ?d ¨gFà™?Í @  ]€7œ?d ègF¾šeË @  ^€8œ?d (hFŠeéÖ @  _€9œ?d hhFU… @  `€:œ?d ¨hF(úW{ @  a€;œ?d èhFîéîZ @  b€<œ?d (iF>¡b² @  c€=œ?d hiF —c& @  d€>œ?d ¨iF+baØ @  e€?œ?d èiF}Öuÿ @  f€@œ?d (jFà’Õ> @  g€Aœ?d hjFÞ_p= @  h€Bœ?d ¨jFþªrà @  i€Cœ?d èjF8¹Ëâ @  j€Dœ?d (kFèñG  @  k€Eœ?d hkFÝÇFž @  l€Fœ?d ¨kFý2D` @  m€Gœ?d èkF£1f @  n€Hœ?d (lFºíi @  o€Iœ?d hlF)vŠ @  p€Jœ?d ¨lF ætt @  q€Kœ?d èlFÏõÍU @  r€Lœ?d (mF½A½ @  s€Mœ?d hmF*‹@) @  t€Nœ?d ¨mF ~B× @  u€Oœ?d èmF1-z= @  v€Pœ?d (nF¬iÚü @  w€Qœ?d hnF’¤ÿ @  x€Rœ?d ¨nF²Q} @  y€Sœ?d ènFtBÄ  @  z€Tœ?d (oF¤ HÈ @  {€Uœ?d hoF‘úœ?d À˜F–¡92 @  Ž?ûœ?d ™FÞy[ @  Ž@üœ?d @™F\èLC @  ŽAýœ?d €™Fó£ @  ŽBþœ?d À™FŒb´Ä @  ŽCÿœ?d šFbëí @  ŽD?d @šFàzúQ @  ŽE?d €šF²a @  ŽF?d ÀšF0ðÖ @  ŽG?d ›Fjˆ» @  ŽH?d @›Fèhe @  ŽI?d €›Fº‡< @  ŽJ?d À›F8“â @  ŽK?d œF8ÕØ @  ŽL?d @œFº— @  ŽM ?d €œFèŒ-_ @  ŽN ?d ÀœFj: @  ŽO ?d FÄy  @  ŽP ?d @FUnÒ @  ŽQ ?d €FMN‹ @  ŽR?d ÀFÏß–U @  ŽS?d žF.âM @  ŽT?d @žF¬õ“ @  ŽU?d €žFþšÊ @  ŽV?d ÀžF|  @  ŽW?d ŸF&spy @  ŽX?d @ŸF¤âg§ @  ŽY?d €ŸFöùˆþ @  ŽZuРF?d ÀŸFthŸ  @  Ž[?d  F¸÷s @  Ž\?d X Fž)à­ @  Ž]?d ˜ FÌ2ô @  Ž^?d Ø FN£* @  Ž_?d ¡F¨|| @  Ž`?d X¡F*íkÉ @  Ža?d ˜¡Fxö„ @  Žb?d Ø¡Fúg“N @  Žc?d ¢F†ÞŠ @  Žd ?d X¢FŽÉT @  Že!?d ˜¢FV•&  @  Žf"?d Ø¢FÔ1Ó @  Žg#?d £FŽ|L¾ @  Žh$?d X£F í[` @  Ži%?d ˜£F^ö´9 @  Žj&?d Ø£FÜg£ç @  Žk'?d ¤FÜòæÝ @  Žl(?d X¤F^cñ @  Žm)?d ˜¤F xZ @  Žn*?d ؤFŽé „ @  Žo+?d ¥Fy0J  @  Žp,?d X¥Fû¡]× @  Žq-?d ˜¥F©º²Ž @  Žr.?d Ø¥F++¥P @  Žs/?d ¦FÊäÑH @  Žt0?d X¦FHuÆ– @  Žu1?d ˜¦Fn)Ï @  Žv2?d ئF˜ÿ> @  Žw3?d §F‡C| @  Žx4?d X§F@T¢ @  Žy5?d ˜§F »û @  Žz6?d اFœ¬% @  Ž{7?d ¨F½¸–  @  Ž|8?d X¨F?)Ó @  Ž}9?d ˜¨Fm2nŠ @  Ž~:?d بFï£yT @  Ž;?d ©FD-+Ê @  Ž€<?d X©FƼ< @  Ž=?d ˜©F”§ÓM @  Ž‚>?d Ø©F6Ä“ @  Žƒ??d ªFšœF @  Ž„@?d XªF‹˜ @  Ž…A?d ˜ªFJ”dÁ @  Ž†B?d تFÈs @  Ž‡C?d «F’}r @  ŽˆD?d X«Fì¬ @  Ž‰E?d ˜«FB÷öõ @  ŽŠF?d Ø«FÀfá+ @  Ž‹G?d ¬FÀó¤ @  ŽŒH?d X¬FBb³Ï @  ŽI?d ˜¬Fy\– @  ŽŽJ?d جF’èKH @  ŽK?d ­Fe1Å @  ŽL?d X­Fç  @  Ž‘M?d ˜­Fµ»ðB @  Ž’N?d Ø­F7*çœ @  Ž“O?d ®FÖå“„ @  Ž”P?d X®FTt„Z @  Ž•Q?d ˜®Fok @  Ž–R?d Ø®F„þ|Ý @  Ž—S?d ¯FÞ†° @  Ž˜T?d X¯F\n @  Ž™U?d ˜¯F ù7 @  ŽšV?d دFŒîé @  Ž›W?d °F+˜än @  ŽœX?d X°F© ó° @  ŽY?d ˜°Fûé @  ŽžZ?d ذFyƒ 7 @  ŽŸ[?d ±FŸ\o  @  Ž \?d X±FÍxÔ @  Ž¡]?d ˜±FOÖ— @  Ž¢^?d رFÍG€S @  Ž£_?d ²F±?Í— @  Ž¤`?d X²F3®ÚI @  Ž¥a?d ˜²Faµ5 @  Ž¦b?d زFã$"Î @  Ž§c?d ³F¹\_£ @  Ž¨d?d X³F;ÍH} @  Ž©e?d ˜³FiÖ§$ @  Žªf?d سFëG°ú @  Ž«g?d ´FëÒõÀ @  Ž¬h?d X´FiCâ @  Ž­i?d ˜´F;X G @  Ž®j?d Ø´F¹É™ @  Ž¯k?d µFNY @  Ž°l?d XµFÌNÊ @  Ž±m?d ˜µFžš¡“ @  Ž²n?d صF ¶M @  Ž³o?d ¶FýÄÂU @  Ž´p?d X¶FUÕ‹ @  Žµq?d ˜¶F-N:Ò @  Ž¶r?d ضF¯ß-  @  Ž·s?d ·Fõ§Pa @  Ž¸t?d X·Fw6G¿ @  Ž¹u?d ˜·F%-¨æ @  Žºv?d Ø·F§¼¿8 @  Ž»w?d ¸FŠ˜… @  Ž¼x?d X¸F ’Î @  Ž½y?d ˜¸FZ}— @  Ž¾z?d ظF؃jI @  Ž¿{?d ¹F[æ @  ŽÀ|?d X¹FÊ8 @  ŽÁ}?d ˜¹F@Ñða @  ŽÂ~?d عFÂ@ç¿ @  ŽÃ?d ºFS®ëø @  ŽÄ€?d XºFÑ?ü& @  ŽÅ?d ˜ºFƒ$ @  ŽÆ‚?d غFµ¡ @  ŽÇƒ?d »F[ÍyÌ @  ŽÈ„?d X»FÙ\n @  ŽÉ…?d ˜»F‹GK @  ŽÊ†?d Ø»F Ö–• @  ŽË‡?d ¼F CÓ¯ @  ŽÌˆ?d X¼F‹ÒÄq @  ŽÍ‰?d ˜¼FÙÉ+( @  ŽÎŠ?d ؼF[X<ö @  ŽÏ‹?d ½F¬{ @  ŽÐŒ?d X½F.h¥ @  ŽÑ?d ˜½F| ‡ü @  ŽÒŽ?d ؽFþš" @  ŽÓ?d ¾FUä: @  ŽÔ?d X¾FÄóä @  ŽÕ‘?d ˜¾FÏß½ @  ŽÖ’?d ؾFMN c @  Ž×“?d ¿F6v @  ŽØ”?d X¿F•§aÐ @  ŽÙ•?d ˜¿FÇ¼Ž‰ @uÐÀF  ŽÚ–?d Ø¿F‡„~‚ @  ŽÛ—?d 0ÀFú¯™å @  ŽÜ˜?d pÀFx>Ž; @  ŽÝ™?d °ÀF茆· @  ŽÞš?d ðÀFj‘i @  Žß›?d 0ÁFŒÂõT @  Žàœ?d pÁFS⊠@  Žá?d °ÁF\H Ó @  Žâž?d€ ðÁFª« @  Ÿ?d 0ÂF7#F @   ?d pÂFµ²˜ @  ¡?d °ÂF"à, @  ¢?d ðÂF qò @  £?d 0ÃF4»5å @  ¤?d pÃF¶*"; @  ¥?d °ÃF*ƒ’ @  ¦?d ðÃF¨…Æ @   §?d 0ÄFmÎ; @   ¨?d pÄFï_,Ï @   ©?d °ÄFx 8{ @   ª?d ðÄFúœ/¥ @   «?d 0ÅFnV ² @  ¬?d pÅFìÇl @  ­?d °ÅFÝÏ”¯ @  ®?d ðÅF_^ƒq @  ¯?d 0ÆF{Ø „ @  °?d pÆFùIZ @  ±?d °ÆFnî @  ²?d ðÆFìŠ0 @  ³?d 0ÇFx@:' @  ´?d pÇFúÑ-ù @  µ?d °ÇFfxÚ @  ¶?d ðÇFäéŠ @  ·?d 0ÈF „KÁ @  ¸?d pÈFŽ\ @  ¹?d °ÈFGH« @  º?d ðÈF›Ö_u @  »?d 0ÉF}b @  ¼?d pÉFj¼ @  ½?d °ÉF­ƒÃÏ @   ¾?d ðÉF/Ô @  !¿?d 0ÊFfsw) @  "À?d pÊFäâ`÷ @  #Á?d °ÊFs°tC @  $Â?d ðÊFñ!c @  %Ã?d 0ËFeëAŠ @  &Ä?d pËFçzVT @  'Å?d °ËF{Óæw @  (Æ?d ðËFùBñ© @  )Ç?d 0ÌF<žO~ @  *È?d pÌF¾X  @  +É?d °ÌF)]L @  ,Ê?d ðÌF«Ì[Ê @  -Ë?d 0ÍF?yÝ @  .Ì?d pÍF½—n @  /Í?d °ÍFŒŸàÀ @  0Î?d ðÍF÷ @  1Ï?d 0ÎF*ˆxë @  2Ð?d pÎF¨o5 @  3Ñ?d °ÎF?K{ @  4Ò?d ðÎF½Úl_ @  5Ó?d 0ÏF)NH @  6Ô?d pÏF«Y– @  7Õ?d °ÏF7(éµ @  8Ö?d ðÏFµ¹þk @  9×?d 0ÐF×õ @  :Ø?d pÐFUdß @  ;Ù?d °ÐFÂ6 k @  <Ú?d ðÐF@§µ @  =Û?d 0ÑFÔm9¢ @  >Ü?d pÑFVü.| @  ?Ý?d °ÑFØõ @  @Þ?d ðÑFZd–C @  Aß?d 0ÒFãU j @  Bà?d pÒFaÄ7´ @  Cá?d °ÒFö–# @  Dâ?d ðÒFt4Þ @  Eã?d 0ÓFàÍÉ @  Fä?d pÓFb\ @  Gå?d °ÓFþõ±4 @  Hæ?d ðÓF|d¦ê @  Iç?d 0ÔF¹¸= @  Jè?d pÔF;)ã @  Ké?d °ÔF¬{W @  Lê?d ðÔF.ê ‰ @  Më?d 0ÕFº .ž @  Nì?d pÕF8±9@ @  Oí?d °ÕF ¹·ƒ @  Pî?d ðÕF‹( ] @  Qï?d 0ÖF¯®/¨ @  Rð?d pÖF-?8v @  Sñ?d °ÖFºm, @  Tò?d ðÖF8ü; @  Uó?d 0×F¬6  @  Vô?d p×F.§Õ @  Wõ?d °×F‹Éb# @  X ö?d ð×F Xuý @  Y ÷?d 0ØFá5´8 @  Z ø?d pØFc¤£æ @  [ ù?d °ØFôö·R @  \ ú?d ðØFvg Œ @  ] û?d 0ÙFâ­‚› @  ^ ü?d pÙF`<•E @  _ ý?d °ÙF@2<6 @  ` þ?d ðÙF£+è @  a ÿ?d 0ÚF[A¼k @  b ž?d pÚFÙЫµ @  c ž?d °ÚFN‚¿ @  d ž?d ðÚFÌ¨ß @  e ž?d 0ÛFXÙŠÈ @  f ž?d pÛFÚH @  g ž?d °ÛFFá-5 @  h ž?d ðÛFÄp:ë @  i ž?d 0ÜF¬„< @  j ž?d pÜFƒ=“â @  k  ž?d °ÜFo‡V @  l  ž?d ðÜF–þˆ @  m  ž?d 0ÝF4²Ÿ @  n  ž?d pÝF€¥¥A @  o  ž?d °ÝF±­+‚ @  p ž?d ðÝF3<<\ @  q ž?d 0ÞFº³© @  r ž?d pÞF•+¤w @  s ž?d °ÞFy°Ã @  t ž?d ðÞF€è§ @  u ž?d 0ßF"…  @  v ž?d pßF–³’Ô @  w ž?d uÐàF/°ßF "÷ @  x ž?d ðßF±Léü @  yž?d HàFtzúÒ @  zž?d ˆàFTø, @  {ž?d ÈàFa¹ù¸ @  |ž?d áF±ñuP @  }ž?d HáFwâÌq @  ~ž?d ˆáFWÎ @  ž?d ÈáF˜,D @  €ž?d âFhä¾ @  ž?d HâF£Œåˆ @  ‚ ž?d ˆâFƒyçv @  ƒ!ž?d ÈâF¶Oæâ @  „"ž?d ãFfj  @  …#ž?d HãF Ó+ @  †$ž?d ˆãF€áÑÕ @  ‡%ž?d ÈãF¾,tÖ @  ˆ&ž?d äF§b‡Ù @  ‰'ž?d HäFùaÝß @  Š(ž?d ˆäFÙ”ß! @  ‹)ž?d ÈäFì¢Þµ @  Œ*ž?d åF<êR] @  +ž?d HåFúùë| @  Ž,ž?d ˆåFÚ é‚ @  -ž?d ÈåFI`ra @  .ž?d æFÔ$Ò  @  ‘/ž?d HæFïwêJ @  ’0ž?d ˆæFÏ‚è´ @  “1ž?d ÈæFú´é  @  ”2ž?d çF*üeÈ @  •3ž?d HçFìïÜé @  –4ž?d ˆçFÌÞ @  —5ž?d ÈçFò×{ @  ˜6ž?d èFÆ(÷  @  ™7ž?d HèF˜+­ @  š8ž?d ˆèF¸Þ¯ñ @  ›9ž?d ÈèFè®e @  œ:ž?d éF] " @  ;ž?d HéF›³›¬ @  ž<ž?d ˆéF»F™R @  Ÿ=ž?d ÈéF9,% @   >ž?d êF¤h…À @  ¡?ž?d HêFòÜ‘ç @  ¢@ž?d ˆêFÒ)“ @  £Až?d ÈêFç’ @  ¤Bž?d ëF7We @  ¥Cž?d HëFñD§D @  ¦Dž?d ˆëFѱ¥º @  §Ež?d ÈëFï|¹ @  ¨Fž?d ìFö2ó¶ @  ©Gž?d HìF¨1©° @  ªHž?d ˆìFˆÄ«N @  «Iž?d ÈìF½òªÚ @  ¬Jž?d íFmº&2 @  ­Kž?d HíF«©Ÿ @  ®Lž?d ˆíF‹\í @  ¯Mž?d ÈíF0 @  °Nž?d îF…t¦Ï @  ±Ož?d HîF¾'ž% @  ²Pž?d ˆîFžÒœÛ @  ³Qž?d ÈîF«äO @  ´Rž?d ïF{¬§ @  µSž?d HïF½¿¨† @  ¶Tž?d ˆïFJªx @  ·Už?d ÈïF£‡{ @  ¸Vž?d ðFY³É @  ¹Wž?d HðFCZéÏ @  ºXž?d ˆðFc¯ë1 @  »Yž?d ÈðFV™ê¥ @  ¼Zž?d ñF†ÑfM @  ½[ž?d HñF@Âßl @  ¾\ž?d ˆñF`7Ý’ @  ¿]ž?d ÈñFLZgS @  À^ž?d òFÑÇ’ @  Á_ž?d HòFwúƤ @  Â`ž?d ˆòFWÄZ @  Ãaž?d ÈòFb9ÅÎ @  Äbž?d óF²qI& @  Åcž?d HóFtbð @  Ædž?d ˆóFT—òù @  Çež?d ÈóFjZWú @  Èfž?d ôFs¤õ @  Égž?d HôF-þó @  Êhž?d ˆôF âü  @  Ëiž?d ÈôF8Ôý™ @  Ìjž?d õFèœqq @  Íkž?d HõF.ÈP @  Îlž?d ˆõFzÊ® @  Ïmž?d ÈõFQM @  Ðnž?d öFRñŒ @  Ñož?d HöF;Éf @  Òpž?d ˆöFô˘ @  Óqž?d ÈöF.ÂÊ  @  Ôrž?d ÷FþŠFä @  Õsž?d H÷F8™ÿÅ @  Ötž?d ˆ÷Flý; @  ×už?d È÷F&¡X8 @  Øvž?d øF^Ô% @  Ùwž?d HøFL]Ž# @  Úxž?d ˆøFl¨ŒÝ @  Ûyž?d ÈøFYžI @  Üzž?d ùF‰Ö¡ @  Ý{ž?d HùFOŸ€ @  Þ|ž?d ˆùFo0º~ @  ß}ž?d ÈùFíZ- @  à~ž?d úFp¦ì @  áž?d HúF;læY @  â€ž?d€ ˆúFpÅI @  ž?d ÈúF¤²Aô @  ‚ž?d ûFtúÍ @  ƒž?d HûFw Ð @  „ž?d ˆûFWU. @  …ž?d ÈûF§*wW @  †ž?d üF¾d„X @  ‡ž?d HüF.Õ$ @  ˆž?d ˆüF ƒÚ @   ‰ž?d ÈüFþ_y£ @   Šž?d ýF.õK @   ‹ž?d HýF-M·‡ @   Œž?d ˆýF ¸µy @   ž?d ÈýFýÇO @  Žž?d þF`ƒïÁ @  ž?d HþF8ö± @  ž?d ˆþF6´O @  ‘ž?d ÈþFèIN6 @  ’ž?d ÿF8ÂÞ @  “ž?d HÿF;[€ @  ”ž?d ˆÿF®‚ì @  uÐG•ž?d ÈÿFëÑx• @  –ž?d G¤ePd @  —ž?d `G4ÔU @  ˜ž?d  G!Wæ @  ™ž?d àGä^­Ÿ @  šž?d G4!w @  ›ž?d `G7Lc» @  œž?d  G¹aE @  ž?d àGçÆ›< @  žž?d Gz‚;ý @  Ÿž?d `G®s|á @    ž?d  Gކ~ @  !¡ž?d àG~ù„f @  "¢ž?d G®±Ž @  #£ž?d `G­ëJB @  $¤ž?d  GH¼ @  %¥ž?d àG}a²Å @  &¦ž?d Gd/AÊ @  '§ž?d `GôžD¶ @  (¨ž?d  GÔkFH @  )©ž?d àG$¼1 @  *ªž?d Gô\0Ù @  +«ž?d `G÷r @  ,¬ž?d  G×ópë @  -­ž?d àG'ŒŠ’ @  .®ž?d GºÈ*S @  /¯ž?d `Gâˆs# @  0°ž?d  GÂ}qÝ @  1±ž?d àG2‹¤ @  2²ž?d GâJL @  3³ž?d `GáE€ @  4´ž?d  GÁåG~ @  5µž?d àG1š½ @  6¶ž?d Ge1 @  7·ž?d `G•Ô4f @  8¸ž?d  Gµ!6˜ @  9¹ž?d àGE^Ìá @  :ºž?d G•@  @  ;»ž?d ` G–LÅ @  <¼ž?d   G¶¹; @  =½ž?d à GFÆúB @  >¾ž?d GÛ‚Zƒ @  ?¿ž?d ` GQ$ @  @Àž?d   GqÑ â @  AÁž?d à G®ö› @  Bž?d GQæzs @  CÞ?d ` GR¼8¿ @  DÄž?d   GrI:A @  EÅž?d à G‚6À8 @  FÆž?d G›x37 @  GÇž?d ` G É6K @  HÈž?d   G+<4µ @  IÉž?d à GÛCÎÌ @  JÊž?d G B$ @  KËž?d ` GQè @  LÌž?d   G(¤ @  MÍž?d à GØÛøo @  NΞ?d GEŸX® @  OÏž?d `GßÞ @  PО?d  G=*  @  QÑž?d àGÍUùY @  RÒž?d Gu± @  SÓž?d `GG7} @  TÔž?d  G>²5ƒ @  UÕž?d àGÎÍÏú @  VÖž?d GpsH @  Wמ?d `Gà¢v4 @  XØž?d  GÀWtÊ @  YÙž?d àG0(޳ @  ZÚž?d Gà`[ @  [Ûž?d `GÚýœB @  \ Üž?d  Gúž¼ @  ] Ýž?d àG wdÅ @  ^ Þž?d G—3Ä @  _ ßž?d `GCƒ @  ` àž?d  Gc7æ @  a áž?d àG“H{Ÿ @  b âž?d GC÷w @  c ãž?d `G@Zµ» @  d äž?d  G`¯·E @  e åž?d àGÐM< @  f æž?d G‰ž¾3 @  g çž?d `G/»O @  h èž?d  G9Ú¹± @  i éž?d àGÉ¥CÈ @  j êž?d GíÏ  @  k ëž?d `G·ì @  l ìž?d  G:B @  m íž?d àGÊ=uk @  n îž?d GWyÕª @  o ïž?d `G9ŒÚ @  p ðž?d  G/ÌŽ$ @  q ñž?d àGß³t] @  r òž?d Gûøµ @  s óž?d `G ¡ºy @  t ôž?d  G,T¸‡ @  u õž?d àGÜ+Bþ @  v öž?d GèÔÎã @  w ÷ž?d `GxeËŸ @  x øž?d  GXÉa @  y ùž?d àG¨ï3 @  z úž?d Gx§¿ð @  { ûž?d `G{ýý< @  | üž?d  G[ÿ @  } ýž?d àG«w» @  ~ þž?d G63¥z @   ÿž?d `G=bÀJ @  € Ÿ?d  G—´ @   Ÿ?d àGíè8Í @  ‚ Ÿ?d G= ´% @  ƒ Ÿ?d `G>úöé @  „ Ÿ?d  Gô @  … Ÿ?d àGîpn @  † Ÿ?d G÷>ýa @  ‡ Ÿ?d `Ggø @  ˆ Ÿ?d  GGzúã @  ‰  Ÿ?d àG·š @  Š  Ÿ?d GgMŒr @  ‹  Ÿ?d `Gdξ @  Œ  Ÿ?d  GDâÌ@ @    Ÿ?d àG´69 @  Ž Ÿ?d G)Ù–ø @   Ÿ?d `Gq™Ïˆ @   Ÿ?d  GQlÍv @  ‘ Ÿ?d àG¡7 @  ’ Ÿ?d Gq[»ç @  “ Ÿ?d `Grù+ @  ” Ÿ?d  GRôûÕuÐ G @  • Ÿ?d àGYå:¬ @  –Ÿ?d 8 G(îäÊ @  —Ÿ?d x G¸_á¶ @  ˜Ÿ?d ¸ G˜ªãH @  ™Ÿ?d ø GhÕ1 @  šŸ?d 8!G¸•Ù @  ›Ÿ?d x!G»Ç× @  œŸ?d ¸!G›2Õë @  Ÿ?d ø!GkM/’ @  žŸ?d 8"Gö S @  ŸŸ?d x"G"øÈO @    Ÿ?d ¸"G ʱ @  ¡!Ÿ?d ø"Gòr0È @  ¢"Ÿ?d 8#G":¼  @  £#Ÿ?d x#G!`þì @  ¤$Ÿ?d ¸#G•ü @  ¥%Ÿ?d ø#Gñêk @  ¦&Ÿ?d 8$Gè¤õd @  §'Ÿ?d x$Gxð @  ¨(Ÿ?d ¸$GXàòæ @  ©)Ÿ?d ø$G¨ŸŸ @  ª*Ÿ?d 8%Gxׄw @  «+Ÿ?d x%G{Æ» @  ¬,Ÿ?d ¸%G[xÄE @  ­-Ÿ?d ø%G«>< @  ®.Ÿ?d 8&G6Cžý @  ¯/Ÿ?d x&GnÇ @  °0Ÿ?d ¸&GNöÅs @  ±1Ÿ?d ø&G¾‰?  @  ²2Ÿ?d 8'GnÁ³â @  ³3Ÿ?d x'Gm›ñ. @  ´4Ÿ?d ¸'GMnóÐ @  µ5Ÿ?d ø'G½ © @  ¶6Ÿ?d 8(G‰î…´ @  ·7Ÿ?d x(G_€È @  ¸8Ÿ?d ¸(G9ª‚6 @  ¹9Ÿ?d ø(GÉÕxO @  º:Ÿ?d 8)Gô§ @  »;Ÿ?d x)GǶk @  ¼<Ÿ?d ¸)G:2´• @  ½=Ÿ?d ø)GÊMNì @  ¾>Ÿ?d 8*GW î- @  ¿?Ÿ?d x*Gݯº² @  À@Ÿ?d ¸*GýZ¸L @  ÁAŸ?d ø*G %B5 @  ÂBŸ?d 8+GÝmÎÝ @  ÃCŸ?d x+GÞ7Œ @  ÄDŸ?d ¸+GþÂŽï @  ÅEŸ?d ø+G½t– @  ÆFŸ?d 8,Gó‡™ @  ÇGŸ?d x,G‡B‚å @  ÈHŸ?d ¸,G§·€ @  ÉIŸ?d ø,GWÈzb @  ÊJŸ?d 8-G‡€öŠ @  ËKŸ?d x-G„Ú´F @  ÌLŸ?d ¸-G¤/¶¸ @  ÍMŸ?d ø-GTPLÁ @  ÎNŸ?d 8.GÉì @  ÏOŸ?d x.G‘Tµp @  ÐPŸ?d ¸.G±¡·Ž @  ÑQŸ?d ø.GAÞM÷ @  ÒRŸ?d 8/G‘–Á @  ÓSŸ?d x/G’̃Ó @  ÔTŸ?d ¸/G²9- @  ÕUŸ?d ø/GBF{T @  ÖVŸ?d 80Gü˜Çæ @  ×WŸ?d x0Gl)š @  ØXŸ?d ¸0GLÜÀd @  ÙYŸ?d ø0G¼£: @  ÚZŸ?d 81Glë¶õ @  Û[Ÿ?d x1Go±ô9 @  Ü\Ÿ?d ¸1GODöÇ @  Ý]Ÿ?d ø1G¿; ¾ @  Þ^Ÿ?d 82G"¬ @  ß_Ÿ?d x2GöŽëc @  à`Ÿ?d ¸2GÖ{é @  áaŸ?d ø2G&ä @  âbŸ?d€ 83G‚ƒª @  ‘cŸ?d x3G`”‰O @  ‘dŸ?d ¸3G@a‹± @  ‘eŸ?d ø3GuWŠ% @  ‘fŸ?d 84Gly* @  ‘gŸ?d x4G2#, @  ‘hŸ?d ¸4Gï!Ò @  ‘iŸ?d ø4G,"„Ñ @  ‘jŸ?d 85Güj9 @  ‘ kŸ?d x5G:y± @  ‘ lŸ?d ¸5GŒ³æ @  ‘ mŸ?d ø5G/º²r @  ‘ nŸ?d 86G²þ³ @  ‘ oŸ?d x6G‰­*Y @  ‘pŸ?d ¸6G©X(§ @  ‘qŸ?d ø6G:4³D @  ‘rŸ?d 87Gê|?¬ @  ‘sŸ?d x7G,o† @  ‘tŸ?d ¸7G š„s @  ‘uŸ?d ø7G9¬…ç @  ‘vŸ?d 88G S ú @  ‘wŸ?d x8GSPSü @  ‘xŸ?d ¸8Gs¥Q @  ‘yŸ?d ø8GMhô @  ‘zŸ?d 89G xé @  ‘{Ÿ?d x9G[3ÁÈ @  ‘|Ÿ?d ¸9G{ÆÃ6 @  ‘}Ÿ?d ø9GNð¢ @  ‘~Ÿ?d 8:GÓ´bc @  ‘Ÿ?d x:G˜Æ"Ö @  ‘€Ÿ?d ¸:G¸3 ( @  ‘Ÿ?d ø:G:Yœ{ @  ‘ ‚Ÿ?d 8;Gê“ @  ‘!ƒŸ?d x;G,©² @  ‘"„Ÿ?d ¸;G ÷«L @  ‘#…Ÿ?d ø;G9ÁªØ @  ‘$†Ÿ?d 8Gþh2N @  ‘-Ÿ?d x>GÅ; ¤ @  ‘.Ÿ?d ¸>GåÎZ @  ‘/‘Ÿ?d ø>Gv¢“¹ @  ‘0’Ÿ?d 8?G¦êQ @  ‘1“Ÿ?d x?G`ù¦p @  ‘2”Ÿ?duÐ@G7 ¸?G@ ¤Ž @  ‘3•Ÿ?d ø?G·“BÏ @  ‘4–Ÿ?d P@Gt?øó @  ‘5—Ÿ?d @GˆX·Õ @  ‘6˜Ÿ?d Ð@G É   @  ‘7™Ÿ?d AGfÝž> @  ‘8šŸ?d PAGäL‰à @  ‘9›Ÿ?d AG€;%á @  ‘:œŸ?d ÐAGª2? @  ‘;Ÿ?d BG(I„´ @  ‘<žŸ?d PBGªØ“j @  ‘=ŸŸ?d BG®X‡| @  ‘> Ÿ?d ÐBG,É¢ @  ‘?¡Ÿ?d CGR}±U @  ‘@¢Ÿ?d PCGÐ즋 @  ‘A£Ÿ?d CG´› Š @  ‘B¤Ÿ?d ÐCG6 T @  ‘C¥Ÿ?d DG˜ãø @  ‘D¦Ÿ?d PDGrïÏ @  ‘E§Ÿ?d DGæ é @  ‘F¨Ÿ?d ÐDGd„·7 @  ‘G©Ÿ?d EG‰ @  ‘HªŸ?d PEGŠžÜ @  ‘I«Ÿ?d EGîv2Ý @  ‘J¬Ÿ?d ÐEGlç% @  ‘K­Ÿ?d FGF“ˆ @  ‘L®Ÿ?d PFGÄ•„V @  ‘M¯Ÿ?d FG]¢©œ @  ‘N°Ÿ?d ÐFGß3¾B @  ‘O±Ÿ?d GG†¾— @  ‘P²Ÿ?d PGGœ©I @  ‘Q³Ÿ?d GGø`H @  ‘R´Ÿ?d ÐGGzñ– @  ‘SµŸ?d HGù©ˆÁ @  ‘T¶Ÿ?d PHG{8Ÿ @  ‘U·Ÿ?d HG‡_Ð9 @  ‘V¸Ÿ?d ÐHGÎÇç @  ‘W¹Ÿ?d IGiÚùÒ @  ‘XºŸ?d PIGëKî  @  ‘Y»Ÿ?d IG ?d hjG•»¥> @  ‘Ý? ?d ¨jGak¤9 @  ‘Þ@ ?d èjGãú³ç @  ‘ßA ?d (kG3I”‚ @  ‘àB ?d hkG±Øƒ\ @  ‘áC ?d ¨kGÕ¯/] @  ‘âD ?d€ èkG–yσ @  ’E ?d (lGÙÑbï @  ’F ?d hlG[@u1 @  ’G ?d ¨lGbnÁú @  ’H ?d èlGàÿÖ$ @  ’I ?d (mGBY·k @  ’J ?d hmGÀÈ µ @  ’K ?d ¨mGj SÎ @  ’L ?d èmGèœD @  ’ M ?d (nG6 v @  ’ N ?d hnG…§¨ @  ’ O ?d ¨nGÙÙÈ @  ’ P ?d ènG[HßQ @  ’ Q ?d (oGùî¾ @  ’R ?d hoG{©À @  ’S ?d ¨oG|d[ @  ’T ?d èoGþŠs… @  ’U ?d (pG2º" @  ’V ?d hpG°+5N @  ’W ?d ¨pG‰… @  ’X ?d èpG ”–[ @  ’Y ?d (qG©2÷ @  ’Z ?d hqG+£àÊ @  ’[ ?d ¨qGf± @  ’\ ?d èqG÷o @  ’] ?d (rGì]I  @  ’^ ?d hrGnÌ^× @  ’_ ?d ¨rG¯±, @  ’` ?d èrG-”¦ò @  ’a ?d (sG2ǽ @  ’b ?d hsG £Ðc @  ’c ?d ¨sGÁ:H @  ’ d ?d èsG™P-– @  ’!e ?d (tGòð3> @  ’"f ?d htGpa$à @  ’#g ?d ¨tGIO+ @  ’$h ?d ètGËÞ‡õ @  ’%i ?d (uGixæº @  ’&j ?d huGëéñd @  ’'k ?d ¨uGA, @  ’(l ?d èuGýÁ @  ’)m ?d (vG,X§ @  ’*n ?d hvG®†Oy @  ’+o ?d ¨vGòø™^ @  ’,p ?d èvGpiŽ€ @  ’-q ?d (wGÒÏïÏ @  ’.r ?d hwGP^ø @  ’/s ?d ¨wGW:5Š @  ’0t ?d èwGÕ«"T @  ’1u ?d (xG“ºCî @  ’2v ?d hxG+T0 @  ’3w ?d ¨xG(àû @  ’4x ?d èxGª”÷% @  ’5y ?d (yG2–j @  ’6z ?d hyGŠ£´ @  ’7{ ?d ¨yG frÏ @  ’8| ?d èyG¢÷e @  ’9} ?d (zGM](w @  ’:~ ?d hzGÏÌ?© @  ’; ?d ¨zGã“‘Ñ @  ’<€ ?d èzGa† @  ’= ?d ({Gäç@ @  ’>‚ ?d h{GA5ðž @  ’?ƒ ?d ¨{GùP' @  ’@„ ?d è{G{Á ù @  ’A… ?d (|GaQ @  ’B† ?d h|G’ð @  ’C‡ ?d ¨|G«Þ¶D @  ’Dˆ ?d è|G)O¡š @  ’E‰ ?d (}G‹éÀÕ @  ’FŠ ?d h}G x×  @  ’G‹ ?d ¨}G£½$p @  ’HŒ ?d è}G!,3® @  ’I ?d (~GΆ~È @  ’JŽ ?d h~GLi @  ’K ?d ¨~Gi¿1 @  ’L ?d è~G’ø¨ï @  ’M‘ ?d (G0^É  @  ’N’ ?d hG²ÏÞ~ @  ’O“ ?d ¨GuЀG'µ«å @  ’P” ?d èG7:; @  ’Q• ?d @€G+j è @  ’R– ?d €€G Ÿ  @  ’S— ?d À€GÕ¨ý @  ’T˜ ?d G@$ @  ’U™ ?d @G°âÞl @  ’Vš ?d €GÜ’ @  ’W› ?d ÀG˜¶:É @  ’Xœ ?d ‚Gòš @  ’Y ?d @‚Gõ`q @  ’Zž ?d €‚GÕxb @  ’[Ÿ ?d À‚G¶Õ˜T @  ’\  ?d ƒGf¼ @  ’]¡ ?d @ƒG–âîÅ @  ’^¢ ?d €ƒG¶ì; @  ’_£ ?d ÀƒG0 @  ’`¤ ?d „G_à? @  ’a¥ ?d @„Gë F @  ’b¦ ?d €„GËÕ¸ @  ’c§ ?d À„GPŸ¹S @  ’d¨ ?d …G€×5» @  ’e© ?d @…Gp¨Ï @  ’fª ?d €…GP]Í< @  ’g« ?d À…GXü+g @  ’h¬ ?d †GŸ‹¦ @  ’i­ ?d @†G5Çqß @  ’j® ?d €†G2s! @  ’k¯ ?d À†Gë(°& @  ’l° ?d ‡G;`<Î @  ’m± ?d @‡GËÆ· @  ’n² ?d €‡GëêÄI @  ’o³ ?d À‡GNêò @  ’p´ ?d ˆGzï @  ’qµ ?d @ˆGŠjj– @  ’r¶ ?d €ˆGªŸhh @  ’s· ?d ÀˆG1ÕɃ @  ’t¸ ?d ‰GáEk @  ’u¹ ?d @‰Gâ¿ @  ’vº ?d €‰G1½ì @  ’w» ?d À‰G9¶[· @  ’x¼ ?d ŠG¤òûv @  ’y½ ?d @ŠGT @  ’z¾ ?d €ŠGtxñ @  ’{¿ ?d ÀŠGç…ì; @  ’|À ?d ‹G7Í`Ó @  ’}Á ?d @‹GDzšª @  ’~ ?d €‹GçG˜T @  ’à?d À‹GQü @  ’€Ä ?d ŒG^¢ó @  ’Å ?d @ŒG÷!XŠ @  ’‚Æ ?d €ŒG×ÔZt @  ’ƒÇ ?d ÀŒGLžûŸ @  ’„È ?d GœÖww @  ’…É ?d @Gl© @  ’†Ê ?d €GL\ð @  ’‡Ë ?d ÀGDýi« @  ’ˆÌ ?d ŽGÙ¹Éj @  ’‰Í ?d @ŽG)Æ3 @  ’ŠΠ?d €ŽG 31í @  ’‹Ï ?d ÀŽG÷)òê @  ’ŒР?d G'a~ @  ’Ñ ?d @Gׄ{ @  ’ŽÒ ?d €G÷놅 @  ’Ó ?d ÀGRë^> @  ’Ô ?d Gì5⌠@  ’‘Õ ?d @GJõ @  ’’Ö ?d €G<¿  @  ’“× ?d ÀG§õ»à @  ’”Ø ?d ‘Gw½7 @  ’•Ù ?d @‘G‡ÂÍq @  ’–Ú ?d €‘G§7Ï @  ’—Û ?d À‘G¯–)Ô @  ’˜Ü ?d ’G2Ò‰ @  ’™Ý ?d @’G­sl @  ’šÞ ?d €’GâXq’ @  ’›ß ?d À’Gõ‹I @  ’œà ?d “GQ½¡ @  ’á ?d @“G¡ÂýØ @  ’žâ ?d €“G7ÿ& @  ’Ÿã ?d À“G51- @  ’ ä ?d ”G,ó" @  ’¡å ?d @”GÜ [ @  ’¢æ ?d €”Güõ ¥ @  ’£ç ?d À”Gg¿ªN @  ’¤è ?d •G·÷&¦ @  ’¥é ?d @•GGˆÜß @  ’¦ê ?d €•Gg}Þ! @  ’§ë ?d À•GoÜ8z @  ’¨ì ?d –Gò˜˜» @  ’©í ?d @–Gçb @  ’ªî ?d €–G"`< @  ’«ï ?d À–GÜ£; @  ’¬ð ?d —G @/Ó @  ’­ñ ?d @—Gü?Õª @  ’®ò ?d €—GÜÊ×T @  ’¯ó ?d À—GyÊï @  ’°ô ?d ˜GM5ƒò @  ’±õ ?d @˜G½Jy‹ @  ’²ö ?d €˜G¿{u @  ’³÷ ?d À˜GõÚž @  ’´ø ?d ™GÖ½Vv @  ’µù ?d @™G&¬ @  ’¶ú ?d €™G7®ñ @  ’·û ?d À™G–Hª @  ’¸ü ?d šG“Òèk @  ’¹ý ?d @šGc­ @  ’ºþ ?d €šGCXì @  ’»ÿ ?d ÀšG²þ¸ @  ’¼¡?d ›GbLrP @  ’½¡?d @›G’3ˆ) @  ’¾¡?d €›G²ÆŠ× @  ’¿¡?d À›G¨ÇsN @  ’À¡?d œG±‰€A @  ’Á¡?d @œGAöz8 @  ’¡?d €œGaxÆ @  ’á?d ÀœGúIÙ- @  ’Ä¡?d G*UÅ @  ’Å ¡?d @GÚ~¯¼ @  ’Æ ¡?d €Gú‹­B @  ’Ç ¡?d ÀGò*K @  ’È ¡?d žGonëØ @  ’É ¡?d @žGŸ¡ @  ’Ê¡?d €žG¿ä_ @  ’Ë¡?d ÀžGAþÐX @  ’Ì¡?d ŸG‘¶\° @  ’Í¡?d @ŸGaɦÉ @  ’Ρ?d €ŸGA<¤7 @  ’Ï¡uРG?d ÀŸGä<|Œ @  ’С?d  Gè·Ñ– @  ’Ñ€¡?d X GÈ+ï @  ’Ò€¡?d ˜ G8=) @  ’Ó€¡?d Ø G£wˆú @  ’Ô€¡?d ¡Gs? @  ’Õ€¡?d X¡Gƒ@þk @  ’Ö€¡?d ˜¡G£µü• @  ’×€¡?d Ø¡G«Î @  ’Ø€¡?d ¢G6Pº @  ’Ù€¡?d X¢GÆ/@v @  ’Ú€¡?d ˜¢GæÚBˆ @  ’Û€¡?d Ø¢G…w¸S @  ’Ü€ ¡?d £GU?4» @  ’Ý€!¡?d X£G¥@Π@  ’Þ€"¡?d ˜£G…µÌ< @  ’߀#¡?d Ø£G1³37 @  ’à€$¡?d ¤G(ýÀ8 @  ’á€%¡?d X¤GØ‚:A @  ’â€&¡?d€ ˜¤GŒ´$ @  “€'¡?d ؤGö¿ÍÛ @  “€(¡?d ¥G&÷A3 @  “€)¡?d X¥GÁ@§ @  “€*¡?d ˜¥G34BY @  “€+¡?d Ø¥Gõ'ûx @  “€,¡?d ¦Ghc[¹ @  “€-¡?d X¦GV®þº @  “€.¡?d ˜¦Gv[üD @  “ €/¡?d ئGMÄ® @  “ €0¡?d §G@HF @  “ €1¡?d X§G¨vIÒ @  “ €2¡?d ˜§GˆƒK, @  “ €3¡?d اGNò  @  “€4¡?d ¨Gzo~ @  “€5¡?d X¨Géåó @  “€6¡?d ˜¨GÉöç  @  “€7¡?d بG—õ½  @  “€8¡?d ©GG½1ã @  “€9¡?d X©Gr‹0w @  “€:¡?d ˜©GR~2‰ @  “€;¡?d Ø©G”m‹¨ @  “€<¡?d ªG )+i @  “€=¡?d XªG7äŽj @  “€>¡?d ˜ªGŒ” @  “€?¡?d تGA¥˜³ @  “€@¡?d «G‘í[ @  “€A¡?d X«G¤ÛÏ @  “€B¡?d ˜«G„.1 @  “€C¡?d Ø«GB=® @  “€D¡?d ¬G[s] @  “€E¡?d X¬GÙáL @  “ €F¡?d ˜¬Gùìã² @  “!€G¡?d جG§ï¹´ @  “"€H¡?d ­Gw§5\ @  “#€I¡?d X­GB‘4È @  “$€J¡?d ˜­Gbd66 @  “%€K¡?d Ø­G¤w @  “&€L¡?d ®G93/Ö @  “'€M¡?d X®GþŠÕ @  “(€N¡?d ˜®G' ˆ+ @  “)€O¡?d Ø®GX°Á @  “*€P¡?d ¯GÌ<) @  “+€Q¡?d X¯Gù&=½ @  “,€R¡?d ˜¯GÙÓ?C @  “-€S¡?d دGÀ†b @  “.€T¡?d °G¡:Ð @  “/€U¡?d X°G2r¡3 @  “0€V¡?d ˜°G‡£Í @  “1€W¡?d ذGL„ùË @  “2€X¡?d ±GœÌu# @  “3€Y¡?d X±G©út· @  “4€Z¡?d ˜±G‰vI @  “5€[¡?d رGOÏh @  “6€\¡?d ²GÒXo© @  “7€]¡?d X²Gì•ʪ @  “8€^¡?d ˜²GÌ`ÈT @  “9€_¡?d زGj„Éb @  “:€`¡?d ³GºÌEŠ @  “;€a¡?d X³GúD @  “<€b¡?d ˜³G¯Fà @  “=€c¡?d سGiÿÁ @  “>€d¡?d ´GpR Î @  “?€e¡?d X´G\?¶ @  “@€f¡?d ˜´G|Ê´ñ @  “A€g¡?d Ø´G"Éî÷ @  “B€h¡?d µGòb @  “C€i¡?d XµGÇ·c‹ @  “D€j¡?d ˜µGçBau @  “E€k¡?d صG!QØT @  “F€l¡?d ¶G¼x• @  “G€m¡?d X¶G‚ØÝ– @  “H€n¡?d ˜¶G¢-ßh @  “I€o¡?d ضG™~ç‚ @  “J€p¡?d ·GI6kj @  “K€q¡?d X·G|jþ @  “L€r¡?d ˜·G\õh @  “M€s¡?d Ø·GšæÑ! @  “N€t¡?d ¸G®]< @  “O€u¡?d X¸G=uÆß @  “P€v¡?d ˜¸G€Ä! @  “Q€w¡?d ظGCƒž' @  “R€x¡?d ¹G“ËÏ @  “S€y¡?d X¹G¦ý[ @  “T€z¡?d ˜¹G†¥ @  “U€{¡?d عG@¨„ @  “V€|¡?d ºGÝ_E @  “W€}¡?d XºGã’­F @  “X€~¡?d ˜ºGÃg¯¸ @  “Y€¡?d غGˆï  @  “Z€€¡?d »GX]cå @  “[€¡?d X»Gmkbq @  “\€‚¡?d ˜»GMž` @  “]€ƒ¡?d Ø»G‹Ù® @  “^€„¡?d ¼G’Ã*¡ @  “_€…¡?d X¼G©–ò @  “`€†¡?d ˜¼G0\”  @  “a€‡¡?d ؼGn_Î  @  “b€ˆ¡?d ½G¾Bâ @  “c€‰¡?d X½G‹!Cv @  “d€Š¡?d ˜½G«ÔAˆ @  “e€‹¡?d ؽGmÇø© @  “f€Œ¡?d ¾GðƒXh @  “g€¡?d X¾GÎNýk @  “h€Ž¡?d ˜¾Gî»ÿ• @  “i€¡?d ؾGÕèÇ @  “j€¡?d ¿G K— @  “k€‘¡?d X¿G0–J @  “l€’¡?d ˜¿GcHý @uÐÀG  “m€“¡?d Ø¿G«ð‚  @  “n”¡?d 0ÀGÏÓò @  “o•¡?d pÀG\lH @  “p–¡?d °ÀG|™Jï @  “q—¡?d ðÀG"šé @  “r˜¡?d 0ÁGòÒœ @  “s™¡?d pÁGÇä• @  “tš¡?d °ÁGçŸk @  “u›¡?d ðÁG!&J @  “vœ¡?d 0ÂG¼F†‹ @  “w¡?d pÂG‚‹#ˆ @  “xž¡?d °ÂG¢~!v @  “yŸ¡?d ðÂGš @ @  “z ¡?d 0ÃGÔÒ¬¨ @  “{¡¡?d pÃGáä­< @  “|¢¡?d °ÃGÁ¯Â @  “}£¡?d ðÃGã @  “~¤¡?d 0ÄGLåì @  “¥¡?d pÄGÑwo @  “€¦¡?d °ÄGñ‚mâ @  “§¡?d ðÄG¯7ä @  “‚¨¡?d 0ÅGÉ»  @  “ƒ©¡?d pÅG7Éä @  “„€ª¡?d °ÅGŠË @  “…€«¡?d ðÅGÑ™r; @  “†€¬¡?d 0ÆGLÝÒú @  “‡€­¡?d pÆGrwù @  “ˆ€®¡?d °ÆGRåu @  “‰€¯¡?d ðÆGi¶Mí @  “Š€°¡?d 0ÇG¹þÁ @  “‹€±¡?d pÇGŒÈÀ‘ @  “Œ€²¡?d °ÇG¬=Âo @  “€³¡?d ðÇGj.{N @  “Ž€´¡?d 0ÈG^Ñ÷S @  “€µ¡?d pÈGͽl° @  “€¶¡?d °ÈGíHnN @  “‘€·¡?d ðÈG³K4H @  “’€¸¡?d 0ÉGc¸  @  ““€¹¡?d pÉGV5¹4 @  “”€º¡?d °ÉGvÀ»Ê @  “•€»¡?d ðÉG°Óë @  “–€¼¡?d 0ÊG-—¢* @  “—€½¡?d pÊGZ) @  “˜€¾¡?d °ÊG3¯× @  “™€¿¡?d ðÊGeð @  “š€À¡?d 0ËGµS @  “›€Á¡?d pËG€eœŒ @  “œ€¡?d °ËG žr @  “€á?d ðËGfƒ'S @  “ž€Ä¡?d 0ÌGÍÔ\ @  “Ÿ€Å¡?d pÌGý§h @  “ €Æ¡?d °ÌGÝRjñ @  “¡€Ç¡?d ðÌGƒQ0÷ @  “¢€È¡?d 0ÍGS¼ @  “£€É¡?d pÍGf/½‹ @  “¤€Ê¡?d °ÍGFÚ¿u @  “¥€Ë¡?d ðÍG€ÉT @  “¦€Ì¡?d 0ÎG¦• @  “§€Í¡?d pÎG#@– @  “¨€Ρ?d °ÎGµh @  “©€Ï¡?d ðÎG8æ9‚ @  “ª€С?d 0ÏG讵j @  “«€Ñ¡?d pÏGݘ´þ @  “¬€Ò¡?d °ÏGým¶ @  “­€Ó¡?d ðÏG;~! @  “®€Ô¡?d 0ÐG… ³“ @  “¯€Õ¡?d pÐGÌ(p @  “°€Ö¡?d °ÐG69*Ž @  “±€ס?d ðÐGh:pˆ @  “²€Ø¡?d 0ÑG¸rü` @  “³€Ù¡?d pÑGDýô @  “´€Ú¡?d °ÑG­±ÿ  @  “µ€Û¡?d ðÑGk¢F+ @  “¶€Ü¡?d 0ÒGöææê @  “·€Ý¡?d pÒGÈ+Cé @  “¸€Þ¡?d °ÒGèÞA @  “¹€ß¡?d ðÒGN:@! @  “º€à¡?d 0ÓGžrÌÉ @  “»€á¡?d pÓG«DÍ] @  “¼€â¡?d °ÓG‹±Ï£ @  “½€ã¡?d ðÓGM¢v‚ @  “¾€ä¡?d 0ÔGTì… @  “¿€å¡?d pÔGx?L @  “À€æ¡?d °ÔGXt=² @  “Á€ç¡?d ðÔGwg´ @  “€è¡?d 0ÕGÖ?ë\ @  “Àé¡?d pÕGã êÈ @  “Ä€ê¡?d °ÕGÃüè6 @  “Å€ë¡?d ðÕGïQ @  “Æ€ì¡?d 0ÖG˜«ñÖ @  “Ç€í¡?d pÖG¦fTÕ @  “È€î¡?d °ÖG†“V+ @  “É€ï¡?d ðÖG½ÀnÁ @  “Ê€ð¡?d 0×Gmˆâ) @  “Ë€ñ¡?d p×GX¾ã½ @  “Ì€ò¡?d °×GxKáC @  “Í€ó¡?d ð×G¾XXb @  “΀ô¡?d 0ØGЧÔ @  “Ï€õ¡?d pØGËOœ @  “Ѐö¡?d °ØG9>Mb @  “Ñ€÷¡?d ðØGg=d @  “Ò€ø¡?d 0ÙG·u›Œ @  “Ó€ù¡?d pÙG‚Cš @  “Ô€ú¡?d °ÙG¢¶˜æ @  “Õ€û¡?d ðÙGd¥!Ç @  “Ö€ü¡?d 0ÚGùá @  “×€ý¡?d pÚGÇ,$ @  “Ø€þ¡?d °ÚGçÙ&û @  “Ù€ÿ¡?d ðÚGaîg @  “Ú€¢?d 0ÛG±¦Š @  “Û€¢?d pÛG„‹ @  “Ü€¢?d °ÛG¤e‰å @  “Ý€¢?d ðÛGbv0Ä @  “Þ€¢?d 0ÜG{8ÃË @  “߀¢?d pÜGùR˜ @  “à€¢?d °ÜGÙ§}f @  “ဢ?d ðÜG‡¤'` @  “•?d€ 0ÝGѺ1 @  ”€ ¢?d pÝGÍJŒ @  ”€ ¢?d °ÝG%8Hr @  ”€ ¢?d ðÝG&b ¾ @  ”€ ¢?d 0ÞG»&ª @  ”€ ¢?d pÞGKYP @  ”€¢?d °ÞGk¬Rø @  ”€¢?d ðÞGžM5h @  ”€¢?d 0ßGN¹€ @  ” €¢?d pßG¾zCù @  ” €¢?d uÐàG/°ßGžA @  ” €¢?d ðßG"ü—b @  ” ¢?d HàGÀ6ò” @  ” ¢?d ˆàG’-Í @  ” ¢?d ÈàG){ÖÆ @  ”¢?d áGF²vl @  ”¢?d HáGÄ#a² @  ”¢?d ˆáG–8Žë @  ”¢?d ÈáG©™5 @  ”¢?d âG&læ @  ”¢?d HâGŠ·{8 @  ”¢?d ˆâGج”a @  ”¢?d ÈâGZ=ƒ¿ @  ”¢?d ãG¢¡ @  ” ¢?d HãG жÎ @  ”!¢?d ˆãGr‘Y— @  ”"¢?d ÈãGðNI @  ”#¢?d äGh…èT @  ”$¢?d HäGêÿŠ @  ”%¢?d ˆäG¸Ó @  ”&¢?d ÈäG:ž  @  ”'¢?d åGDQ€ @  ” (¢?d HåGÆÀ—É @  ”!)¢?d ˆåG”Ûx @  ”"*¢?d ÈåGJoN @  ”#+¢?d æG Åš @  ”$,¢?d HæGˆTC @  ”%-¢?d ˆæGÚOb @  ”&.¢?d ÈæGXÞuÄ @  ”'/¢?d çGÿæ‰b @  ”(0¢?d HçG}wž¼ @  ”)1¢?d ˆçG/lqå @  ”*2¢?d ÈçG­ýf; @  ”+3¢?d èGÉ¿4 @  ”,4¢?d HèGšX¨ê @  ”-5¢?d ˆèGÈCG³ @  ”.6¢?d ÈèGJÒPm @  ”/7¢?d éG%ðÇ @  ”08¢?d HéG§Šç @  ”19¢?d ˆéGõ‘@ @  ”2:¢?d ÈéGwž @  ”3;¢?d êGkêM @  ”4<¢?d HêGéý“ @  ”5=¢?d ˆêG»Ê @  ”6>¢?d ÈêG9” @  ”7?¢?d ëGóKÕ @  ”8@¢?d HëGqÚ¡ @  ”9A¢?d ˆëG#Á-ø @  ”:B¢?d ÈëG¡P:& @  ”;C¢?d ìG9Õœ; @  ”<D¢?d HìG»D‹å @  ”=E¢?d ˆìGé_d¼ @  ”>F¢?d ÈìGkÎsb @  ”?G¢?d íG»òê @  ”@H¢?d HíG9—å4 @  ”AI¢?d ˆíGkŒ m @  ”BJ¢?d ÈíGé³ @  ”CK¢?d îGõ’è` @  ”DL¢?d HîGwÿ¾ @  ”EM¢?d ˆîG%ç @  ”FN¢?d ÈîG§‰9 @  ”GO¢?d ïG±ûŸ @  ”HP¢?d HïG‚ ìA @  ”IQ¢?d ˆïGÐ; @  ”JR¢?d ÈïGRªÆ @  ”KS¢?d ðGm¿ýf @  ”LT¢?d HðGï.ê¸ @  ”MU¢?d ˆðG½5á @  ”NV¢?d ÈðG?¤? @  ”OW¢?d ñGPm²• @  ”PX¢?d HñGÒü¥K @  ”QY¢?d ˆñG€çJ @  ”RZ¢?d ÈñGv]Ì @  ”S[¢?d òGù¨ @  ”T\¢?d HòGœh¿Á @  ”U]¢?d ˆòGÎsP˜ @  ”V^¢?d ÈòGLâGF @  ”W_¢?d óGvm‚< @  ”X`¢?d HóGôü•â @  ”Ya¢?d ˆóG¦çz» @  ”Zb¢?d ÈóG$vme @  ”[c¢?d ôG¼óËx @  ”\d¢?d HôG>bܦ @  ”]e¢?d ˆôGly3ÿ @  ”^f¢?d ÈôGîè$! @  ”_g¢?d õG'£; @  ”`h¢?d HõG¶´å @  ”ai¢?d ˆõG@­[¼ @  ”bj¢?d ÈõGÂÂý @  ”Ï×¢?d H©÷bW @  ”ÐØ¢?d `H+fu‰ @  ”ÑÙ¢?d  Hy}šÐ @  ”ÒÚ¢?d àHûì @  ”ÓÛ¢?d HçcxÝ @  ”ÔÜ¢?d `Heòo @  ”ÕÝ¢?d  H7é€Z @  ”ÖÞ¢?d àHµx—„ @  ”×ߢ?d H÷Rþ @  ”Øà¢?d `H fE  @  ”Ùá¢?d  H_}ªy @  ”Úâ¢?d àHÝì½§ @  ”Ûã¢?d HEiº @  ”Üä¢?d `HÇø d @  ”Ýå¢?d  H•ãã= @  ”Þæ¢?d àHrôã @  ”ßç¢?d Hi½sù @  ”àè¢?d `Hë,d' @  ”áé¢?d  H¹7‹~ @  ”âê¢?d€ àHOe€ @  •ë¢?d H²«=ü @  •ì¢?d `H0:*" @  •í¢?d  H§h>– @  •î¢?d àH%ù)H @  •ï¢?d HLsŠ” @  •ð¢?d `HÎâJ @  •ñ¢?d  HRK-i @  •ò¢?d àHÐÚ:· @  • ó¢?d H §U @  • ô¢?d `H"6‹ @  • õ¢?d  Hµd? @  • ö¢?d àH7õ á @  • ÷¢?d H;/ÍÑ @  •ø¢?d `H¹¾Ú @  •ù¢?d  Hˆ¶TÌ @  •ú¢?d àH 'C @  •û¢?d HÓáM, @  •ü¢?d `HQpZò @  •ý¢?d  HÆ"NF @  •þ¢?d àHD³Y˜ @  •ÿ¢?d H"× @  •£?d `H îÀÉ @  •£?d  H(£?d x%H÷Ë› @  •?)£?d ¸%Hþdz @  •@*£?d ø%Hos¤ @  •A+£?d 8&HË©}š @  •B,£?d x&HI8jD @  •C-£?d ¸&HÞj~ð @  •D.£?d ø&H\ûi. @  •E/£?d 8'H5qÊò @  •F0£?d x'H·àÝ, @  •G1£?d ¸'H+Im @  •H2£?d ø'H©ØzÑ @  •I3£?d 8(HÙ¥X3 @  •J4£?d x(H[4Oí @  •K5£?d ¸(HÌf[Y @  •L6£?d ø(HN÷L‡ @  •M7£?d 8)HB-· @  •N8£?d x)HÀ¼ši @  •O9£?d ¸)Hñ´ª @  •P:£?d ø)Hs%t @  •Q;£?d 8*Hªã J @  •R<£?d x*H(r” @  •S=£?d ¸*H¿   @  •T>£?d ø*H=±þ @  •U?£?d 8+H9Ü–ï @  •V@£?d x+H»M1 @  •WA£?d ¸+H'ä1 @  •XB£?d ø+H¥u&Ì @  •YC£?d 8,Hø¹{< @  •ZD£?d x,Hz(lâ @  •[E£?d ¸,HízxV @  •\F£?d ø,Hoëoˆ @  •]G£?d 8-Hc1®¸ @  •^H£?d x-Há ¹f @  •_I£?d ¸-HÁ® @  •`J£?d ø-HC?Ë @  •aK£?d 8.Hšù õ @  •bL£?d x.Hh+ @  •cM£?d ¸.H: Ÿ @  •dN£?d ø.H «A @  •eO£?d 8/Hd!¾ @  •fP£?d x/Hæ°©C @  •gQ£?d ¸/Hz` @  •hR£?d ø/Høˆ¾ @  •iS£?d 80HÔó @  •jT£?d x0H€E - @  •kU£?d ¸0H™ @  •lV£?d ø0H•†G @  •mW£?d 81H™\Éw @  •nX£?d x1HÍÞ© @  •oY£?d ¸1H*ÅPj @  •pZ£?d ø1H¨TG´ @  •q[£?d 82Hq’IŠ @  •r\£?d x2Hó^T @  •s]£?d ¸2HdQJà @  •t^£?d ø2HæÀ]> @  •u_£?d 83HýÇ> @  •v`£?d x3HlÐà @  •wa£?d ¸3H Å`à @  •xb£?d ø3HŽTw @  •yc£?d 84HÓ˜*í @  •zd£?d x4HQ =3 @  •{e£?d ¸4HÆ[)‡ @  •|f£?d ø4HDÊ>Y @  •}g£?d 85HHÿi @  •~h£?d x5HÊè· @  •i£?d ¸5H§Þwg @  •€j£?d ø5H%O`¹ @  •k£?d 86Hü‰n‡ @  •‚l£?d x6H~yY @  •ƒm£?d ¸6HéJmí @  •„n£?d ø6HkÛz3 @  •…o£?d 87HQÙï @  •†p£?d x7H€ÀÎ1 @  •‡q£?d ¸7Hi~ @  •ˆr£?d ø7HžøiÌ @  •‰s£?d 88Hî…K. @  •Št£?d x8Hl\ð @  •‹u£?d ¸8HûFHD @  •Œv£?d ø8Hy×_š @  •w£?d 89Hu žª @  •Žx£?d x9H÷œ‰t @  •y£?d ¸9HÆ”· @  •z£?d ø9HDi @  •‘{£?d 8:HÃW @  •’|£?d x:HR ‰ @  •“}£?d ¸:Hˆ= @  •”~£?d ø:H ‘ ã @  ••£?d 8;H:Ñ` @  •–€£?d x;H‘«Æ¾ @  •—£?d ¸;H v @  •˜‚£?d ø;H“aC @  •™ƒ£?d 8H°Nz @  •¢Œ£?d x>H2ŽY¤ @  •££?d ¸>H¥ÜM @  •¤Ž£?d ø>H'MZÎ @  •¥£?d 8?HNÇù @  •¦£?d x?HÌVîÌ @  •§‘£?duÐ@H7 ¸?HPÿ^ï @  •¨’£?d ø?HÇ®ä @  •©“£?d P@H—éº' @  •ª”£?d @H·¸Ù @  •«•£?d Ð@H‚*¹M @  •¬–£?d AHRb5¥ @  •­—£?d PAH ao£ @  •®˜£?d AH,”m] @  •¯™£?d ÐAH¿øö¾ @  •°š£?d BH"¼V @  •±›£?d PBHä¯ï^ @  •²œ£?d BHÄZí  @  •³£?d ÐBHñlì4 @  •´ž£?d CH!$`Ü @  •µŸ£?d PCH‡Àaê @  •¶ £?d CH§5c @  •·¡£?d ÐCH™øÆ @  •¸¢£?d DH€¶5 @  •¹££?d PDHF¥Œ9 @  •º¤£?d DHfPŽÇ @  •»¥£?d ÐDHSfS @  •¼¦£?d EHƒ.» @  •½§£?d PEHÝ-Y½ @  •¾¨£?d EHýØ[C @  •¿©£?d ÐEHѵá‚ @  •Àª£?d FHLñAC @  •Á«£?d PFHŠâøb @  •¬£?d FHªúœ @  •í£?d ÐFHŸ!û @  •Ä®£?d GHOiwà @  •ů£?d PGHt:O  @  •ư£?d GHTÏMô @  •DZ£?d ÐGHjè÷ @  •Ȳ£?d HH^ýdê @  •ɳ£?d PHH˜îÝË @  •Ê´£?d HH¸ß5 @  •˵£?d ÐHH-Þ¡ @  •̶£?d IH]eRI @  •Í·£?d PIHfO @  •θ£?d IH#“ ± @  •Ϲ£?d ÐIH°ÿ‘R @  •к£?d JH-»1“ @  •Ñ»£?d PJH먈² @  •Ò¼£?d JHË]ŠL @  •Ó½£?d ÐJHþk‹Ø @  •Ô¾£?d KH.#0 @  •Õ¿£?d PKHx— @  •ÖÀ£?d KHXbé @  •×Á£?d ÐKHf¯´ê @  •Ø£?d LHáGå @  •Ùã?d PLH¹òþÄ @  •ÚÄ£?d LH™ü: @  •ÛÅ£?d ÐLH¬1ý® @  •ÜÆ£?d MH|yqF @  •ÝÇ£?d PMH"z+@ @  •ÞÈ£?d MH)¾ @  •ßÉ£?d ÐMH€å•í @  •àÊ£?d NH¡5, @  •áË£?d PNHÛ²Œ  @  •âÌ£?d€ NH:yó @  –Í£?d ÐNHîw0N @  –Σ?d OH>?¼¦ @  –Ï£?d POHÀ%¡ @  –У?d OHàÐ}_ @  –Ñ£?d ÐOH¯‡& @  –Ò£?d PH®q;” @  –Ó£?d PPH¦ÐÝÏ @  –Ô£?d PH†%ß1 @  – Õ£?d ÐPHvZ%H @  – Ö£?d QH¦©  @  – ×£?d PQH=XK @  – Ø£?d QH­ µ @  – Ù£?d ÐQHíÒðÌ @  –Ú£?d RHp–P  @  –Û£?d PRHÕ–ˆ¶ @  –Ü£?d RHõcŠH @  –Ý£?d ÐRHp1 @  –Þ£?d SHÕTüÙ @  –ߣ?d PSH¶ù @  –à£?d SH– ü @  –á£?d ÐSHfsþ… @  –â£?d TH= Š @  –ã£?d PTHwœëÑ @  –ä£?d THWié/ @  –å£?d ÐTH§V @  –æ£?d UHw^Ÿ¾ @  –ç£?d PUHì>U @  –è£?d UHÌá<« @  –é£?d ÐUH<žÆÒ @  –ê£?d VH¡Úf @  –ë£?d PVHÜ™ @  – ì£?d VH5)›æ @  –!í£?d ÐVHÅVaŸ @  –"î£?d WHíw @  –#ï£?d PWHë.p @  –$ð£?d WHËñ,Ž @  –%ñ£?d ÐWH;ŽÖ÷ @  –&ò£?d XHqZê @  –'ó£?d PXHм± @  –(ô£?d XH'%¾O @  –)õ£?d ÐXH×ZD6 @  –*ö£?d YHÈÞ @  –+÷£?d PYHœXi5 @  –,ø£?d YH¼­kË @  –-ù£?d ÐYHLÒ‘² @  –.ú£?d ZHÑ–1s @  –/û£?d PZHMQ5 @  –0 ü£?d ZHm¤7ã @  –1 ý£?d ÐZHÛÍš @  –2 þ£?d [HM“Ar @  –3 ÿ£?d P[H€Æ° @  –4 ¤?d [H 3’N @  –5 ¤?d Ð[HPLh7 @  –6 ¤?d \HI›8 @  –7 ¤?d P\HA£}c @  –8 ¤?d \HaV @  –9 ¤?d Ð\H‘)…ä @  –: ¤?d ]HAa  @  –; ¤?d P]HÚ+¨ç @  –< ¤?d ]HúÞª @  –=  ¤?d Ð]H ¡P` @  –>  ¤?d ^H—åð¡ @  –?  ¤?d P^Hä 8 @  –@  ¤?d ^H­ Æ @  –A  ¤?d Ð^H]nñ¿ @  –B ¤?d _H&}W @  –C ¤?d P_Hs<¾P @  –D ¤?d _HSɼ® @  –uÐ`HE ¤?d Ð_Hšqš @  –F¤?d (`H$‰/š @  –G¤?d h`H,(ÉÁ @  –H¤?d ¨`H ÝË? @  –I¤?d è`Hü¢1F @  –J¤?d (aH,ê½® @  –K¤?d haH· E @  –L¤?d ¨aH—U» @  –M¤?d èaHg*ä @  –N¤?d (bHúnD @  –O¤?d hbH_nœ¸ @  –P¤?d ¨bH›žF @  –Q¤?d èbHäd? @  –R¤?d (cH_¬è× @  –S¤?d hcH<  @  –T ¤?d ¨cHôò @  –U!¤?d ècHì‹ê‹ @  –V"¤?d (dHõÅ„ @  –W#¤?d hdHýdÿß @  –X$¤?d ¨dHÝ‘ý! @  –Y%¤?d èdH-îX @  –Z&¤?d (eHý¦‹° @  –['¤?d heHfì*[ @  –\(¤?d ¨eHF(¥ @  –])¤?d èeH¶fÒÜ @  –^*¤?d (fH+"r @  –_+¤?d hfHŸ$ @  –`,¤?d ¨fH¿Ñè @  –a-¤?d èfHO®u‘ @  –b.¤?d (gHŸæùy @  –c/¤?d hgHaü:~ @  –d0¤?d ¨gHA 8€ @  –e1¤?d ègH±vÂù @  –f2¤?d (hH…‰Nä @  –g3¤?d hhH(¨¿ @  –h4¤?d ¨hH­ÝªA @  –i5¤?d èhH]¢P8 @  –j6¤?d (iHêÜÐ @  –k7¤?d hiH }; @  –l8¤?d ¨iH6UÅ @  –m9¤?d èiHÆ*…¼ @  –n:¤?d (jH[n%} @  –o;¤?d hjHþnýÆ @  –p<¤?d ¨jHÞ›ÿ8 @  –q=¤?d èjH.äA @  –r>¤?d (kHþ¬‰© @  –s?¤?d hkHmQfc @  –t@¤?d ¨kHM¤d @  –uA¤?d èkH½Ûžä @  –vB¤?d (lH¤•më @  –wC¤?d hlH¬4‹° @  –xD¤?d ¨lHŒÁ‰N @  –yE¤?d èlH|¾s7 @  –zF¤?d (mH¬öÿß @  –{G¤?d hmH7¼^4 @  –|H¤?d ¨mHI\Ê @  –}I¤?d èmHç6¦³ @  –~J¤?d (nHzrr @  –K¤?d hnHƒ%ÏÚ @  –€L¤?d ¨nH£ÐÍ$ @  –M¤?d ènHS¯7] @  –‚N¤?d (oHƒç»µ @  –ƒO¤?d hoH}ýx² @  –„P¤?d ¨oH]zL @  –…Q¤?d èoH­w€5 @  –†R¤?d (pH©<‡ @  –‡S¤?d hpHÚÜ @  –ˆT¤?d ¨pH;ýØ" @  –‰U¤?d èpHË‚"[ @  –ŠV¤?d (qHÊ®³ @  –‹W¤?d hqH€€X @  –ŒX¤?d ¨qH u ¦ @  –Y¤?d èqHP ÷ß @  –ŽZ¤?d (rHÍNW @  –[¤?d hrHhN¥ @  –\¤?d ¨rHH»[ @  –‘]¤?d èrH¸Äw" @  –’^¤?d (sHhŒûÊ @  –“_¤?d hsH ! @  –”`¤?d ¨sH+Ôï @  –•a¤?d èsHÛ«ù– @  ––b¤?d (tHÂå ™ @  –—c¤?d htHÊDì @  –˜d¤?d ¨tHê±î< @  –™e¤?d ètHÎE @  –šf¤?d (uHʆ˜­ @  –›g¤?d huHQÌ9F @  –œh¤?d ¨uHq9;¸ @  –i¤?d èuHFÁÁ @  –žj¤?d (vHa @  –Ÿk¤?d hvH¨ž  @  – l¤?d ¨vHˆñœõ @  –¡m¤?d èvHxŽfŒ @  –¢n¤?d (wH¨Æêd @  –£o¤?d hwHVÜ)c @  –¤p¤?d ¨wHv)+ @  –¥q¤?d èwH†VÑä @  –¦r¤?d (xH²©]ù @  –§s¤?d hxHº»¢ @  –¨t¤?d ¨xHšý¹\ @  –©u¤?d èxHj‚C% @  –ªv¤?d (yHºÊÏÍ @  –«w¤?d hyH!€n& @  –¬x¤?d ¨yHulØ @  –­y¤?d èyHñ –¡ @  –®z¤?d (zHlN6` @  –¯{¤?d hzHÉNîÛ @  –°|¤?d ¨zHé»ì% @  –±}¤?d èzHÄ\ @  –²~¤?d ({HÉŒš´ @  –³¤?d h{HG·!ì @  –´€¤?d ¨{HgB# @  –µ¤?d è{H—=Ùk @  –¶‚¤?d (|HŽs*d @  –·ƒ¤?d h|H†ÒÌ? @  –¸„¤?d ¨|H¦'ÎÁ @  –¹…¤?d è|HVX4¸ @  –º†¤?d (}H†¸P @  –»‡¤?d h}HZ» @  –¼ˆ¤?d ¨}H=¯E @  –½‰¤?d è}HÍÐá< @  –¾Ф?d (~HP”Aý @  –¿‹¤?d h~HJ•¸d @  –ÀŒ¤?d ¨~Hj`ºš @  –Á¤?d è~Hš@ã @  –Âޤ?d (HJWÌ  @  –ä?d hH´M  @  –Ĥ?d ¨HuЀH'”¸ ò @  –Å‘¤?d èH]+^ @  –Æ ’¤?d @€H3¾É* @  –Ç “¤?d €€H™{:Q @  –È ”¤?d À€Hê- @  –É •¤?d H¹LLÀ @  –Ê –¤?d @H;Ý[ @  –Ë —¤?d €HóïÕ @  –Ì ˜¤?d ÀH€bø  @  –Í ™¤?d ‚Hoȵm @  –Î š¤?d @‚HíY¢³ @  –Ï ›¤?d €‚Hê=o( @  –Ð œ¤?d À‚Hh¬xö @  –Ñ ¤?d ƒHÊ ¹ @  –Ò ž¤?d @ƒHH›g @  –Ó Ÿ¤?d €ƒH‰Rᜠ@  –Ô  ¤?d ÀƒH ÃöB @  –Õ ¡¤?d „H`cèê @  –Ö ¢¤?d @„Hâòÿ4 @  –× £¤?d €„HH7 O @  –Ø ¤¤?d À„Hʦ‘ @  –Ù ¥¤?d …HhzÞ @  –Ú ¦¤?d @…Hê‘m @  –Û §¤?d €…HÓ¿ÙË @  –Ü ¨¤?d À…HQ.Î @  –Ý ©¤?d †H¾„ƒs @  –Þ ª¤?d @†H<”­ @  –ß «¤?d €†H*w~† @  –à ¬¤?d À†H¨æiX @  –á ­¤?d ‡H @ @  –â ®¤?d€ @‡Hüo @  — ¯¤?d €‡HA-a @  — °¤?d À‡HÃ¼Š¿ @  — ±¤?d ˆH@äè @  — ²¤?d @ˆHÂu6 @  — ³¤?d €ˆH¦«7 @  — ´¤?d ÀˆH$“¼é @  — µ¤?d ‰HH‡‚Ü @  — ¶¤?d @‰HÊ• @  — ·¤?d €‰H6qÚ$ @  — ¸¤?d À‰H´àÍú @  — ¹¤?d ŠHž{q @  — º¤?d @ŠH’l¯ @  — »¤?d €ŠHxåÀ® @  — ¼¤?d ÀŠHút×p @  — ½¤?d ‹H;Á×¥ @  — ¾¤?d @‹H¹PÀ{ @  — ¿¤?d €‹HM€Á| @  — À¤?d À‹HÏÖ¢ @  — Á¤?d ŒHaø3ç @  — ¤?d @ŒHãi$9 @  — ä?d €ŒH‡ˆ8 @  — Ĥ?d ÀŒHŸæ @  — Ť?d Hi›¡Ó @  — Ƥ?d @Hë ¶  @  — Ǥ?d €Hmù+ @  — Ȥ?d ÀH•üîõ @  — ɤ?d ŽH¿X~ @  — ʤ?d @ŽH=ŽO  @  — ˤ?d €ŽHYùã¡ @  — ̤?d ÀŽHÛhô @  — ͤ?d H ÛÓ @  — Τ?d @H‰JÄÄ @  —! Ϥ?d €H}é @  —" Ф?d ÀH’ìþÐ @  —# Ѥ?d H›•T( @  —$ Ò¤?d @HCö @  —% Ó¤?d €H}sï÷ @  —& Ô¤?d ÀHÿâø) @  —' Õ¤?d ‘H“öÆ @  —( Ö¤?d @‘HgÑ @  —) פ?d €‘Hížä @  —* ؤ?d À‘Ho‘‰: @  —+ Ù¤?d ’HEr?± @  —, Ú¤?d @’HÇã(o @  —- Û¤?d €’H£”„n @  —. ܤ?d À’H!“° @  —/ ݤ?d “Hà°“e @  —0 Þ¤?d @“Hb!„» @  —1 ߤ?d €“Hf¡­ @  —2 à¤?d À“Hä0‡s @  —3 á¤?d ”HJÙb6 @  —4 â¤?d @”HÈHuè @  —5 ã¤?d €”H¬?Ùé @  —6 ä¤?d À”H.®Î7 @  —7 å¤?d •HBºð @  —8 æ¤?d @•HÀ+çÜ @  —9 ç¤?d €•H ¯ @  —< ê¤?d @–H¯q @  —= ë¤?d €–Hrزp @  —> ì¤?d À–HðI¥® @  —? í¤?d —HŽý„Y @  —@ î¤?d @—H l“‡ @  —A ï¤?d €—H•[¾M @  —B ð¤?d À—HÊ©“ @  —C ñ¤?d ˜H”’3Ä @  —D ò¤?d @˜H$ @  —E ó¤?d €˜Hrtˆ @  —F ô¤?d À˜HðåŸÅ @  —G õ¤?d ™Hœñ¡ð @  —H ö¤?d @™H`¶. @  —I ÷¤?d €™Hâù @  —J ø¤?d À™H`–îÖ @  —K ù¤?d šHJuX] @  —L ú¤?d @šHÈäOƒ @  —M û¤?d €šH¬“ã‚ @  —N ü¤?d ÀšH.ô\ @  —O ý¤?d ›Hï·ô‰ @  —P þ¤?d @›Hm&ãW @  —Q ÿ¤?d €›HûWãÎ @  —R ¥?d À›HyÆô @  —S ¥?d œH×/U @  —T ¥?d @œHU¾‹ @  —U ¥?d €œH1ɪŠ @  —V ¥?d ÀœH³X½T @  —W ¥?d HßLƒa @  —X ¥?d @H]Ý”¿ @  —Y ¥?d €H¡ºÛ™ @  —Z ¥?d ÀH#+ÌG @  —[  ¥?d žH ÈzÌ @  —\  ¥?d @žH‹Ym @  —]  ¥?d €žHï.Á @  —^  ¥?d ÀžHm¿ÖÍ @  —_  ¥?d ŸH½ ñ¨ @  —` ¥?d @ŸH?æv @  —a ¥?d €ŸH¦ªË¼ @  —b ¥uРH?d ÀŸH$;Üb @  —c ¥?d  Hâ—N @  —d ¥?d X H` @  —e ¥?d ˜ Hq¯‘ @  —f ¥?d Ø H†à¸O @  —g ¥?d ¡Hêô†z @  —h ¥?d X¡Hhe‘¤ @  —i ¥?d ˜¡H”Þ‚ @  —j ¥?d Ø¡H“É\ @  —k ¥?d ¢H¥?d X«H÷r“ @  —‘ ?¥?d ˜«H¢’ @  —’ @¥?d Ø«H3…Ù @  —“ A¥?d ¬H/Ú`œ @  —” B¥?d X¬H­KwB @  —• C¥?d ˜¬HÉ<ÛC @  —– D¥?d جHK­Ì @  —— E¥?d ­H'¹ò¨ @  —˜ F¥?d X­H¥(åv @  —™ G¥?d ˜­HYOªP @  —š H¥?d Ø­HÛÞ½Ž @  —› I¥?d ®Hñ=  @  —œ J¥?d X®Hs¬Û @  — K¥?d ˜®HÛ°Ú @  —ž L¥?d Ø®H•J§ @  —Ÿ M¥?d ¯HEù€a @  —  N¥?d X¯HÇh—¿ @  —¡ O¥?d ˜¯H^_ºu @  —¢ P¥?d دHÜέ« @  —£ Q¥?d °HÕ·S @  —¤ R¥?d X°HW& @  —¥ S¥?d ˜°H3Q¼Œ @  —¦ T¥?d ذH±À«R @  —§ U¥?d ±HÝÔ•g @  —¨ V¥?d X±H_E‚¹ @  —© W¥?d ˜±H£"ÍŸ @  —ª X¥?d رH!³ÚA @  —« Y¥?d ²H PlÊ @  —¬ Z¥?d X²H‰Á{ @  —­ [¥?d ˜²Hí¶× @  —® \¥?d زHo'ÀË @  —¯ ]¥?d ³H®’À @  —° ^¥?d X³H,×À @  —± _¥?d ˜³H(ƒÃÖ @  —² `¥?d سHªÔ @  —³ a¥?d ´Hû1M @  —´ b¥?d X´H†j&“ @  —µ c¥?d ˜´H⊒ @  —¶ d¥?d Ø´H`ŒL @  —· e¥?d µH ˜£y @  —¸ f¥?d XµHŽ ´§ @  —¹ g¥?d ˜µHrnû @  —º h¥?d صHðÿì_ @  —» i¥?d ¶HÚZÔ @  —¼ j¥?d X¶HXM  @  —½ k¥?d ˜¶H<úá  @  —¾ l¥?d ضH¾köÕ @  —¿ m¥?d ·HÀß×" @  —À n¥?d X·HBNÀü @  —Á o¥?d ˜·HÛyí6 @  — p¥?d Ø·HYèúè @  —à q¥?d ¸HÚ°`¿ @  —Ä r¥?d X¸HX!wa @  —Å s¥?d ˜¸H @  ˜5Å¥?d 0ÍHµ±iq @  ˜6Æ¥?d pÍH7 ~¯ @  ˜7Ç¥?d °ÍHõnó @  ˜8È¥?d ðÍH‡dy- @  ˜9É¥?d 0ÎHhÎ4K @  ˜:Ê¥?d pÎHê_#• @  ˜;Ë¥?d °ÎHKaty @  ˜<Ì¥?d ðÎHÉðc§ @  ˜=Í¥?d 0ÏHkVè @  ˜>Î¥?d pÏHéÇ6 @  ˜?Ï¥?d °ÏH¬âxD @  ˜@Ð¥?d ðÏH.soš @  ˜AÑ¥?d 0ÐHâC> @  ˜BÒ¥?d pÐH`Ò)Q @  ˜CÓ¥?d °ÐHÁì~½ @  ˜DÔ¥?d ðÐHC}ic @  ˜EÕ¥?d 0ÑHáÛ, @  ˜FÖ¥?d pÑHcJò @  ˜G×¥?d °ÑHQŸ® @  ˜HØ¥?d ðÑHÓp @  ˜IÙ¥?d 0ÒH<¤U @  ˜JÚ¥?d pÒH¾5BÈ @  ˜KÛ¥?d °ÒH $ @  ˜LÜ¥?d ðÒHšú @  ˜MÝ¥?d 0ÓH?ç @  ˜Pà¥?d ðÓHX¯9 @  ˜Qá¥?d 0ÔH3‘ @  ˜Râ¥?d pÔH±žO @  ˜Sã¥?d °ÔH H£ @  ˜Tä¥?d ðÔH’1_} @  ˜Uå¥?d 0ÕH0—>2 @  ˜Væ¥?d pÕH²)ì @  ˜Wç¥?d °ÕH€Ó9° @  ˜Xè¥?d ðÕHB.n @  ˜Yé¥?d 0ÖHíèc @  ˜Zê¥?d pÖHoytÖ @  ˜[ë¥?d °ÖHÎG#: @  ˜\ì¥?d ðÖHLÖ4ä @  ˜]í¥?d 0×HîpU« @  ˜^î¥?d p×HláBu @  ˜_ï¥?d °×H‡Ã)• @  ˜`ð¥?d ð×HR>K @  ˜añ¥?d 0ØHCC_ñ @  ˜bò¥?d pØHÁÒH/ @  ˜có¥?d °ØH`ìà @  ˜dô¥?d ðØHâ} @  ˜eõ¥?d 0ÙH@ÛiR @  ˜fö¥?d pÙHÂJ~Œ @  ˜g÷¥?d °ÙHðŸnÐ @  ˜hø¥?d ðÙHry @  ˜iù¥?d 0ÚH¤4h @  ˜jú¥?d pÚH5#¶ @  ˜kû¥?d °ÚH¾ tZ @  ˜lü¥?d ðÚH<šc„ @  ˜mý¥?d 0ÛHž<Ë @  ˜nþ¥?d pÛH­ @  ˜oÿ¥?d °ÛH[íA3 @  ˜p¦?d ðÛHÙ|Ví @  ˜q¦?d 0ÜH²ÜHE @  ˜r¦?d pÜH0M_› @  ˜s¦?d °ÜH‘sw @  ˜t¦?d ðÜHâ© @  ˜u¦?d 0ÝH±D~æ @  ˜v¦?d pÝH3Õi8 @  ˜w¦?d °ÝHyd @  ˜x¦?d ðÝHƒ‘nº @  ˜y ¦?d 0ÞHl;#Ü @  ˜z ¦?d pÞHîª4 @  ˜{ ¦?d °ÞHO”cî @  ˜| ¦?d ðÞHÍt0 @  ˜} ¦?d 0ßHo£ @  ˜~¦?d pßHí2¡ @  ˜¦?d uÐàH/°ßHKA_â @  ˜€¦?d ðßHÉÐH< @  ˜¦?d HàH¢šûm @  ˜‚¦?d ˆàH‚où“ @  ˜ƒ¦?d ÈàH5»_ @  ˜„¦?d áHQ}7· @  ˜…¦?d HáH¡ÍÎ @  ˜†¦?d ˆáH÷Ï0 @  ˜‡¦?d ÈáHFÊL @  ˜ˆ¦?d âHŒj @  ˜‰¦?d HâH|}ô @  ˜Š¦?d ˆâH\ˆ’  @  ˜‹¦?d ÈâH_ÒÐÆ @  ˜Œ¦?d ãHš\. @  ˜¦?d HãHå¦W @  ˜Ž¦?d ˆãH_¤© @  ˜¦?d ÈãHšçÄ @  ˜ ¦?d äHƒ©7  @  ˜‘!¦?d HäHsÖÍs @  ˜’"¦?d ˆäHS#Ï @  ˜“#¦?d ÈäHPyA @  ˜”$¦?d åH€1© @  ˜•%¦?d HåHpNûÐ @  ˜–&¦?d ˆåHP»ù. @  ˜—'¦?d ÈåHÀ üR @  ˜˜(¦?d æH]N\“ @  ˜™)¦?d HæH­1¦ê @  ˜š*¦?d ˆæHĤ @  ˜›+¦?d ÈæHŽžæØ @  ˜œ,¦?d çH^Öj0 @  ˜-¦?d HçH®©I @  ˜ž.¦?d ˆçHŽ\’· @  ˜Ÿ/¦?d ÈçHÇìw @  ˜ 0¦?d èHóå`j @  ˜¡1¦?d HèHšš @  ˜¢2¦?d ˆèH#o˜í @  ˜£3¦?d ÈèH 5Ú! @  ˜¤4¦?d éHð}VÉ @  ˜¥5¦?d HéH¬° @  ˜¦6¦?d ˆéH ÷®N @  ˜§7¦?d ÈéH°F«2 @  ˜¨8¦?d êH- ó @  ˜©9¦?d HêHÝ}ñŠ @  ˜ª:¦?d ˆêHýˆót @  ˜«;¦?d ÈêHþÒ±¸ @  ˜¬<¦?d ëH.š=P @  ˜­=¦?d HëHÞåÇ) @  ˜®>¦?d ˆëHþÅ× @  ˜¯?¦?d ÈëHË·°j @  ˜°@¦?d ìHÒùCe @  ˜±A¦?d HìH"†¹ @  ˜²B¦?d ˆìHs»â @  ˜³C¦?d ÈìH)ù. @  ˜´D¦?d íHÑauÆ @  ˜µE¦?d HíH!¿ @  ˜¶F¦?d ˆíHëA @  ˜·G¦?d ÈíH‘Zˆ= @  ˜¸H¦?d îH (ü @  ˜¹I¦?d HîHüaÒ… @  ˜ºJ¦?d ˆîHÜ”Ð{ @  ˜»K¦?d ÈîHßÎ’· @  ˜¼L¦?d ïH†_ @  ˜½M¦?d HïHÿùä& @  ˜¾N¦?d ˆïHß æØ @  ˜¿O¦?d ÈïH8MžŠ @  ˜ÀP¦?d ðH†“"8 @  ˜ÁQ¦?d HðHvìØA @  ˜ÂR¦?d ˆðHVÚ¿ @  ˜ÃS¦?d ÈðHUC˜s @  ˜ÄT¦?d ñH… › @  ˜ÅU¦?d HñHutîâ @  ˜ÆV¦?d ˆñHUì @  ˜ÇW¦?d ÈñHÅ0é` @  ˜ÈX¦?d òHXtI¡ @  ˜ÉY¦?d HòH¨ ³Ø @  ˜ÊZ¦?d ˆòHˆþ±& @  ˜Ë[¦?d ÈòH‹¤óê @  ˜Ì\¦?d óH[ì @  ˜Í]¦?d HóH«“…{ @  ˜Î^¦?d ˆóH‹f‡… @  ˜Ï_¦?d ÈóHN‘ç) @  ˜Ð`¦?d ôHWß& @  ˜Ña¦?d HôH§ î_ @  ˜Òb¦?d ˆôH‡Uì¡ @  ˜Óc¦?d ÈôH„®m @  ˜Ôd¦?d õHTG"… @  ˜Õe¦?d HõH¤8Øü @  ˜Öf¦?d ˆõH„ÍÚ @  ˜×g¦?d ÈõH|ß~ @  ˜Øh¦?d öH‰8¿ @  ˜Ùi¦?d HöHyG…Æ @  ˜Új¦?d ˆöHY²‡8 @  ˜Ûk¦?d ÈöHZèÅô @  ˜Ül¦?d ÷HŠ I @  ˜Ým¦?d H÷Hzß³e @  ˜Þn¦?d ˆ÷HZ*±› @  ˜ßo¦?d È÷HlÏ[ @  ˜àp¦?d øH'“CF @  ˜áq¦?d HøH×ì¹? @  ˜âr¦?d€ ˆøHƒÚ§g @  ™s¦?d ÈøHaÁ­‚ @  ™t¦?d ùH±‰!j @  ™u¦?d HùH„¿ þ @  ™v¦?d ˆùH¤J" @  ™w¦?d ÈùHúIx @  ™x¦?d úHg ØÇ @  ™y¦?d HúHYÀ}Ä @  ™z¦?d ˆúHy5: @  ™ {¦?d ÈúH¿&Æ @  ™ |¦?d ûHonJó @  ™ }¦?d HûHZXKg @  ™ ~¦?d ˆûHz­I™ @  ™ ¦?d ÈûH1ß , @  ™€¦?d üH(‘ú# @  ™¦?d HüH»ýaÀ @  ™‚¦?d ˆüH›c> @  ™ƒ¦?d ÈüH]Ú @  ™„¦?d ýHSV÷ @  ™…¦?d HýH¸eWc @  ™†¦?d ˆýH˜U @  ™‡¦?d ÈýHÆ“› @  ™ˆ¦?d þH[ׯZ @  ™‰¦?d HþHe Y @  ™Ц?d ˆþHEï§ @  ™‹¦?d ÈþHƒü±† @  ™Œ¦?d ÿHS´=n @  ™¦?d HÿHf‚<ú @  ™ަ?d ˆÿHFw> @  ™uÐI¦?d ÈÿH}$î @  ™¦?d I2. @  ™‘¦?d `I°ú’L @  ™ ’¦?d  I² @  ™!“¦?d àIV)“ @  ™"”¦?d I†T¥{ @  ™#•¦?d `I³b¤ï @  ™$–¦?d  I“—¦ @  ™%—¦?d àIÍ”ü @  ™&˜¦?d IPÐ\Ö @  ™'™¦?d `InùÕ @  ™(š¦?d  INèû+ @  ™)›¦?d àIˆûB  @  ™*œ¦?d IX³Îâ @  ™+¦?d `Im…Ïv @  ™,ž¦?d  IMp͈ @  ™-Ÿ¦?d àIë”̾ @  ™. ¦?d IòÚ?± @  ™/¡¦?d `Ia¶¤R @  ™0¢¦?d  IAC¦¬ @  ™1£¦?d àI‡P @  ™2¤¦?d IW“e @  ™3¥¦?d `Ib.’ñ @  ™4¦¦?d  IBÛ @  ™5§¦?d àIØÊ  @  ™6¨¦?d IœjÈ @  ™7©¦?d `I¿QÏË @  ™8ª¦?d  IŸ¤Í5 @  ™9«¦?d àIY·t @  ™:¬¦?d I‰ÿøü @  ™;­¦?d `I¼Éùh @  ™<®¦?d  Iœ<û– @  ™=¯¦?d àI§oÃ| @  ™>°¦?d I“Oa @  ™?±¦?d `I¿ýõ  @  ™@²¦?d  IŸ÷^ @  ™A³¦?d àIYN @  ™B´¦?d I‰S— @  ™Cµ¦?d ` I¼eà @  ™D¶¦?d   IœÁý @  ™E·¦?d à I“›û @  ™F¸¦?d I_×;: @  ™G¹¦?d ` Iaž9 @  ™Hº¦?d   IAïœÇ @  ™I»¦?d à I‡ü%æ @  ™J¼¦?d IW´© @  ™K½¦?d ` Ib‚¨š @  ™L¾¦?d   IBwªd @  ™M¿¦?d à IþC @  ™NÀ¦?d I ML @  ™OÁ¦?d ` IžáÖ¯ @  ™P¦?d   I¾ÔQ @  ™Qæ?d à Ixmp @  ™RĦ?d I¨Oᘠ@  ™SŦ?d ` Iyà  @  ™TƦ?d   I½Œâò @  ™UǦ?d à Iã¸ô @  ™VȦ?d I~Ë5 @  ™Wɦ?d `I@½6 @  ™Xʦ?d  I`ó¿È @  ™Y˦?d àI¦àé @  ™Z̦?d Iv¨Š @  ™[ͦ?d `ICž‹• @  ™\Φ?d  Ick‰k @  ™]Ϧ?d àIX8± @  ™^Ц?d Iææ 3 @  ™_Ѧ?d `IdŒ±` @  ™`Ò¦?d  IDy³ž @  ™aÓ¦?d àI‚j ¿ @  ™bÔ¦?d IR"†W @  ™cÕ¦?d `Ig‡Ã @  ™dÖ¦?d  IGá…= @  ™eצ?d àIâß; @  ™fئ?d I„¦ú @  ™gÙ¦?d `IºkÚù @  ™hÚ¦?d  IšžØ @  ™iÛ¦?d àI\a& @  ™jܦ?d IŒÅíÎ @  ™kݦ?d `I¹óìZ @  ™lÞ¦?d  I™î¤ @  ™mߦ?d àI?âï’ @  ™nà¦?d I&¬ @  ™oá¦?d `IµÀ‡~ @  ™pâ¦?d  I•5…€ @  ™qã¦?d àIS&<¡ @  ™rä¦?d Iƒn°I @  ™så¦?d `I¶X±Ý @  ™tæ¦?d  I–­³# @  ™uç¦?d àIÈ®é% @  ™vè¦?d IUêIä @  ™wé¦?d `Ik'ìç @  ™xê¦?d  IKÒî @  ™yë¦?d àIÁW8 @  ™zì¦?d I]‰ÛÐ @  ™{í¦?d `Ih¿ÚD @  ™|î¦?d  IHJغ @  ™}ï¦?d àIsàP @  ™~ð¦?d IGælM @  ™ñ¦?d `IˆÝæ½ @  ™€ò¦?d  I¨(äC @  ™ó¦?d àIn;]b @  ™‚ô¦?d I¾sÑŠ @  ™ƒõ¦?d `I‹EÐ @  ™„ö¦?d  I«°Òà @  ™…÷¦?d àIõ³ˆæ @  ™†ø¦?d Ih÷(' @  ™‡ù¦?d `IV:$ @  ™ˆú¦?d  IvÏÚ @  ™‰û¦?d àI°Ü6û @  ™Šü¦?d I`”º @  ™‹ý¦?d `IU¢»‡ @  ™Œþ¦?d  IuW¹y @  ™ÿ¦?d àIAB¬À @  ™Ž§?d IX _Ï @  ™§?d `IË`Ä, @  ™§?d  Ië•ÆÒ @  ™‘§?d àI-†ó @  ™’§?d IýÎó @  ™“§?d `IÈøò @  ™”§?d  Iè ðq @  ™•§?d àI¶ªw @  ™–§?d I+J ¶ @  ™— §?d `I‡¯µ @  ™˜ §?d  I5r­K @  ™™ §?d àIóaj @  ™š §?d I#)˜‚ @  ™› §?d `I™ @  ™œ§?d  I6ê›èuÐ I @  ™§?d àI ¹£ @  ™ž§?d 8 I|²}d @  ™Ÿ§?d x IþØÁ7 @  ™ §?d ¸ IÞ-ÃÉ @  ™¡§?d ø I>zè @  ™¢§?d 8!IÈvö @  ™£§?d x!Iý@÷” @  ™¤§?d ¸!Iݵõj @  ™¥§?d ø!Iƒ¶¯l @  ™¦§?d 8"Iò­ @  ™§§?d x"I ?ª® @  ™¨§?d ¸"IʨP @  ™©§?d ø"IÆÙq @  ™ª§?d 8#I‘™ @  ™«§?d x#I#§œ  @  ™¬§?d ¸#IRžó @  ™­§?d ø#I¥¶ŸÅ @  ™® §?d 8$I¼ølÊ @  ™¯!§?d x$I/”÷) @  ™°"§?d ¸$Iaõ× @  ™±#§?d ø$IÉrLö @  ™²$§?d 8%I:À @  ™³%§?d x%I, ÁŠ @  ™´&§?d ¸%I ùÃt @  ™µ'§?d ø%IRú™r @  ™¶(§?d 8&IϾ9³ @  ™·)§?d x&Iñsœ° @  ™¸*§?d ¸&IцžN @  ™¹+§?d ø&I•'o @  ™º,§?d 8'IÇÝ«‡ @  ™»-§?d x'Iòëª @  ™¼.§?d ¸'IÒ¨í @  ™½/§?d ø'IéM @  ™¾0§?d 8(Iݲ @  ™¿1§?d x(IñߦÛ @  ™À2§?d ¸(IÑ*¤% @  ™Á3§?d ø(I9 @  ™Â4§?d 8)IÇq‘ì @  ™Ã5§?d x)IòGx @  ™Ä6§?d ¸)IÒ²’† @  ™Å7§?d ø)IŒ±È€ @  ™Æ8§?d 8*IõhA @  ™Ç9§?d x*I/8ÍB @  ™È:§?d ¸*IÍϼ @  ™É;§?d ø*IÉÞv @  ™Ê<§?d 8+I–úu @  ™Ë=§?d x+I, ûá @  ™Ì>§?d ¸+I Uù @  ™Í?§?d ø+IZáí8 @  ™Î@§?d 8,IC¯7 @  ™ÏA§?d x,IÐÃ…Ô @  ™ÐB§?d ¸,Ið6‡* @  ™ÑC§?d ø,I6%>  @  ™ÒD§?d 8-Iæm²ã @  ™ÓE§?d x-IÓ[³w @  ™ÔF§?d ¸-I󮱉 @  ™ÕG§?d ø-I­­ë @  ™ÖH§?d 8.I0éKN @  ™×I§?d x.I$îM @  ™ØJ§?d ¸.I.Ñì³ @  ™ÙK§?d ø.IèÂU’ @  ™ÚL§?d 8/I8ŠÙz @  ™ÛM§?d x/I ¼Øî @  ™ÜN§?d ¸/I-IÚ @  ™ÝO§?d ø/Iâú @  ™ÞP§?d 80I¨Ä^H @  ™ßQ§?d x0I*®â @  ™àR§?d ¸0I [àå @  ™áS§?d ø0IÌHYÄ @  ™âT§?d€ 81IÝG", @  šU§?d x1I0÷·D @  š V§?d ¸1Iµº @  š W§?d ø1I‹HQ @  š X§?d 82I ´ @  š Y§?d x2IæsNé @  š Z§?d ¸2IƆL @  š [§?d ø2IÎ'ªL @  š \§?d 83Io&¤ @  š ]§?d x3IîÜÝ @  š ^§?d ¸3IÎåÞ# @  š _§?d ø3I­H$ø @  š `§?d 84I´×÷ @  š a§?d x4IDy-Ž @  š b§?d ¸4IdŒ/p @  š c§?d ø4IÁŒ÷Ë @  š d§?d 85IÄ{# @  š e§?d x5Iá»Z @  š f§?d ¸5IÁNƒ¤ @  š g§?d ø5IZ"O @  š h§?d 86IÇ@‚Ž @  š i§?d x6I7?x÷ @  š j§?d ¸6IÊz  @  š k§?d ø6IkœR @  š l§?d 87IÏ#º @  š m§?d x7I?\êà @  š n§?d ¸7I©è= @  š o§?d ø7Iá³+: @  š p§?d 88IÕL§' @  š q§?d x8I%3]^ @  š r§?d ¸8IÆ_  @  š s§?d ø8I±À « @  š t§?d 89Iaˆ,C @  š! u§?d x9I‘÷Ö: @  š" v§?d ¸9I±ÔÄ @  š# w§?d ø9I*Hu/ @  š$ x§?d 8:I· Õî @  š% y§?d x:IGs/— @  š& z§?d ¸:Ig†-i @  š' {§?d ø:Io'Ë2 @  š( |§?d 8;I¿oGÚ @  š) }§?d x;IO½£ @  š* ~§?d ¸;Ioå¿] @  š+ §?d ø;IáÞ @  š, €§?d 8I‹Ö¢s @  š5 ‰§?d x>I{©X  @  š6 Ч?d ¸>I[\Zô @  š7 ‹§?d ø>ISý¼¯ @  š8 Œ§?d 8?Iƒµ0G @  š9 §?d x?IsÊÊ> @  š: ާ?duÐ@I7 ¸?IS?ÈÀ @  š; §?d ø?I”â× @  š<§?d P@IWNm. @  š=‘§?d @IU‚w @  š>’§?d Ð@I‡Ä•© @  š?“§?d AIÏ÷ @  š@”§?d PAIMàØ @  šA•§?d AI– @  šB–§?d ÐAI_ @  šC—§?d BI˜« @  šD˜§?d PBI› u @  šE™§?d BIÉö, @  šFš§?d ÐBIKƒáò @  šG›§?d CIûœŸ @  šHœ§?d PCI“j‹A @  šI§?d CIÁqd @  šJž§?d ÐCICàsÆ @  šKŸ§?d DI»’mÌ @  šL §?d PDI9z @  šM¡§?d DIk•K @  šN¢§?d ÐDI鉂• @  šO£§?d EIPÁ @  šP¤§?d PEIœÁÖÆ @  šQ¥§?d EIÎÚ9Ÿ @  šR¦§?d ÐEILK.A @  šS§§?d FIÈÔ8µ @  šT¨§?d PFIJE/k @  šU©§?d FI^À2 @  šVª§?d ÐFIšÏ×ì @  šW«§?d GIÀ·ª @  šX¬§?d PGIB&½_ @  šY­§?d GI=R @  šZ®§?d ÐGI’¬EØ @  š[¯§?d HIÚØ @  š\°§?d PHIXI  @  š]±§?d HI Rå› @  š^²§?d ÐHIˆÃòE @  š_³§?d IIn–x @  š`´§?d PIIì¦ @  šaµ§?d II¾–nÿ @  šb¶§?d ÐII<y! @  šc·§?d JI¸˜oÕ @  šd¸§?d PJI: x  @  še¹§?d JIh—R @  šfº§?d ÐJIꃀŒ @  šg»§?d KI°ûýá @  šh¼§?d PKI2jê? @  ši½§?d KI`qf @  šj¾§?d ÐKIâภ@  šk¿§?d LIê£ @  šlÀ§?d PLIhS} @  šmÁ§?d LI:Há$ @  šn§?d ÐLI¸Ùöú @  šoç?d MIOµw @  špħ?d PMIÍ‘¢© @  šqŧ?d MIŸŠMð @  šrƧ?d ÐMIZ. @  šsǧ?d NI™„LÚ @  štȧ?d PNI[ @  šuɧ?d NII´] @  švʧ?d ÐNIËŸ£ƒ @  šw˧?d OI‘çÞî @  šx̧?d POIvÉ0 @  šyͧ?d OIAm&i @  šzΧ?d ÐOIÃü1· @  š{ϧ?d PI©YÜ @  š|Ч?d PPIƒ8N @  š}ѧ?d PIÑ#¡[ @  š~Ò§?d ÐPIS²¶… @  šÓ§?d QIø<ä @  š€Ô§?d PQIz­óÅ @  šÕ§?d QI(¶œ @  š‚Ö§?d ÐQIª' B @  šƒ×§?d RI.¸¶ @  š„ا?d PRI¬) h @  š…Ù§?d RIþ2å1 @  š†Ú§?d ÐRI|£òï @  š‡Û§?d SI&Û‚ @  šˆܧ?d PSI¤J˜\ @  š‰ݧ?d SIöQw @  šŠÞ§?d ÐSItÀ`Û @  š‹ß§?d TIŒ²~Ñ @  šŒà§?d PTI#i @  šá§?d TI\8†V @  šŽâ§?d ÐTIÞ©‘ˆ @  šã§?d UI)pÒ @  šä§?d PUI«áÅÛ @  š‘å§?d UIùú*‚ @  š’æ§?d ÐUI{k=\ @  š“ç§?d VIÿô+¨ @  š”è§?d PVI}e¨?d èkIÖÉ´° @  › ?¨?d (lI¢DF @  › @¨?d hlI™3S˜ @  › A¨?d ¨lIaG, @  › B¨?d èlIŒðPò @  › C¨?d (mI:rå @  ›D¨?d hmIš«e; @  ›E¨?d ¨mI«£ëø @  ›F¨?d èmI)2ü& @  ›G¨?d (nIhä? @  ›H¨?d hnIêuá @  ›I¨?d ¨nI}'U @  ›J¨?d ènIÿ¶‹ @  ›K¨?d (oIk|'œ @  ›L¨?d hoIéí0B @  ›M¨?d ¨oIuD€a @  ›N¨?d èoI÷Õ—¿ @  ›O¨?d (pIðÉ9 @  ›P¨?d hpIrXç @  ›Q¨?d ¨pIå S @  ›R¨?d èpIg› @  ›S¨?d (qIóQ2š @  ›T¨?d hqIqÀ%D @  ›U¨?d ¨qIQÎŒ7 @  › V¨?d èqIÓ_›é @  ›!W¨?d (rI’‰vð @  ›"X¨?d hrIa. @  ›#Y¨?d ¨rI‡Juš @  ›$Z¨?d èrIÛbD @  ›%[¨?d (sI‘@S @  ›&\¨?d hsI€W @  ›']¨?d ¨sI)ç® @  ›(^¨?d èsI ¸ðp @  ›)_¨?d (tI0ƒ— @  ›*`¨?d htI²I @  ›+a¨?d ¨tI%@ý @  ›,b¨?d ètI§Ñ# @  ›-c¨?d (uI3#4 @  ›.d¨?d huI±Š4ê @  ›/e¨?d ¨uI€‚º) @  ›0f¨?d èuI­÷ @  ›1g¨?d (vICÅ@î @  ›2h¨?d hvIÁTW0 @  ›3i¨?d ¨vIVC„ @  ›4j¨?d èvIÔ—TZ @  ›5k¨?d (wI@]vM @  ›6l¨?d hwIÂÌa“ @  ›7m¨?d ¨wI^eѰ @  ›8n¨?d èwIÜôÆn @  ›9o¨?d (xIQÉeG @  ›:p¨?d hxIÓXr™ @  ›;q¨?d ¨xID f- @  ›<r¨?d èxIÆ›qó @  ›=s¨?d (yIRQSä @  ›>t¨?d hyIÐÀD: @  ›?u¨?d ¨yI^ÉëÛ @  ›@v¨?d èyIÜXü @  ›Aw¨?d (zIŽ @  ›Bx¨?d hzI @  ›Cy¨?d ¨zIˆMv @  ›Dz¨?d èzI ܨ @  ›E{¨?d ({Iž'¿ @  ›F|¨?d h{I‡0a @  ›G}¨?d ¨{I€.€B @  ›H~¨?d è{I¿—œ @  ›I¨?d (|IÒ3ø @  ›J€¨?d h|IPƒ$& @  ›K¨?d ¨|IÇÑ0’ @  ›L‚¨?d è|IE@'L @  ›Mƒ¨?d (}IÑŠ[ @  ›N„¨?d h}IS… @  ›O…¨?d ¨}IbœF @  ›P†¨?d è}Ià‚‹˜ @  ›Q‡¨?d (~I¡Tf @  ›Rˆ¨?d h~I#Åq_ @  ›S‰¨?d ¨~I´—eë @  ›TЍ?d è~I6r5 @  ›U‹¨?d (I¢ÌP" @  ›VŒ¨?d hI ]Gü @  ›W¨?d ¨IuЀI'¼ô÷ß @  ›Xލ?d èI>eà @  ›Y¨?d @€Ié-A @  ›Z¨?d €€IÉì/¿ @  ›[‘¨?d À€IüÚ.+ @  ›\’¨?d I,’¢Ã @  ›]“¨?d @Iêâ @  ›^”¨?d €IÊt @  ›_•¨?d ÀIH¥O @  ›`–¨?d ‚IÕZŽ @  ›a—¨?d @‚I‹Y_ˆ @  ›b˜¨?d €‚I«¬]v @  ›c™¨?d À‚Ižš\â @  ›dš¨?d ƒINÒÐ  @  ›e›¨?d @ƒIˆÁi+ @  ›fœ¨?d €ƒI¨4kÕ @  ›g¨?d ÀƒI–ùÎÖ @  ›hž¨?d „I·=Ù @  ›iŸ¨?d @„I)S<ï @  ›j ¨?d €„I ¦> @  ›k¡¨?d À„I² @  ›o¥¨?d À…I™R“Q @  ›p¦¨?d †I3 @  ›q§¨?d @†IZi– @  ›r¨¨?d €†Izàkh @  ›s©¨?d À†IOÖjü @  ›tª¨?d ‡IŸžæ @  ›u«¨?d @‡IY_5 @  ›v¬¨?d €‡Iyx]Ë @  ›w­¨?d À‡IGµøÈ @  ›x®¨?d ˆIsJtÕ @  ›y¯¨?d @ˆIHL? @  ›z°¨?d €ˆIhìNÁ @  ›{±¨?d ÀˆI]ÚOU @  ›|²¨?d ‰I’ý @  ›}³¨?d @‰IKzœ @  ›~´¨?d €‰Iktxb @  ›µ¨?d À‰I¤Oò’ @  ›€¶¨?d ŠI9 RS @  ›·¨?d @ŠIgU @  ›‚¸¨?d €ŠIGý « @  ›ƒ¹¨?d ÀŠIrË ? @  ›„º¨?d ‹I¢ƒ‡× @  ›…»¨?d @‹Id>ö @  ›†¼¨?d €‹IDe< @  ›‡½¨?d À‹Iz¨™  @  ›ˆ¾¨?d ŒIcæj @  ›‰¿¨?d @ŒI5R~# @  ›ŠÀ¨?d €ŒI§|Ý @  ›‹Á¨?d ÀŒI ‘}I @  ›Œ¨?d IðÙñ¡ @  ›è?d @I6ÊH€ @  ›ŽĨ?d €I?J~ @  ›Ũ?d ÀI…SÑ @  ›ƨ?d ŽIq\ @  ›‘Ǩ?d @ŽIF+Z @  ›’Ȩ?d €ŽIfá)¤ @  ›“ɨ?d ÀŽIS×(0 @  ›”ʨ?d IƒŸ¤Ø @  ›•˨?d @IEŒù @  ›–̨?d €Iey @  ›—ͨ?d ÀI[´º @  ›˜Ψ?d Iåj¶ @  ›™Ϩ?d @IÞ9>\ @  ›šШ?d €IþÌ<¢ @  ››Ѩ?d ÀIËú=6 @  ›œÒ¨?d ‘I²±Þ @  ›Ó¨?d @‘IÝ¡ÿ @  ›žÔ¨?d €‘IýT  @  ›ŸÕ¨?d À‘I>¶R @  › Ö¨?d ’Iâz“ @  ›¡ר?d @’I¼yL• @  ›¢ب?d €’IœŒNk @  ›£Ù¨?d À’I©ºOÿ @  ›¤Ú¨?d “Iyòà @  ›¥Û¨?d @“I¿áz6 @  ›¦ܨ?d €“IŸxÈ @  ›§ݨ?d À“I¡ÙÝË @  ›¨Þ¨?d ”I¸—.Ä @  ›©ߨ?d @”Is/ò @  ›ªà¨?d €”I>†-  @  ›«á¨?d À”I °,˜ @  ›¬â¨?d •IÛø p @  ›­ã¨?d @•IëQ @  ›®ä¨?d €•I=¯ @  ›¯å¨?d À•I®r€L @  ›°æ¨?d –I36  @  ›±ç¨?d @–Im5z‹ @  ›²è¨?d €–IMÀxu @  ›³é¨?d À–Ixöyá @  ›´ê¨?d —I¨¾õ  @  ›µë¨?d @—In­L( @  ›¶ì¨?d €—INXNÖ @  ›·í¨?d À—Ip•ëÕ @  ›¸î¨?d ˜IDjgÈ @  ›¹ï¨?d @˜I9_" @  ›ºð¨?d €˜I_Ì]Ü @  ›»ñ¨?d À˜Ijú\H @  ›¼ò¨?d ™Iº²Ð  @  ›½ó¨?d @™I|¡i @  ›¾ô¨?d €™I\Tk @  ›¿õ¨?d À™Ip9Ѿ @  ›Àö¨?d šIí}q @  ›Á÷¨?d @šI³~+y @  ›Âø¨?d €šI“‹)‡ @  ›Ãù¨?d ÀšI¦½( @  ›Äú¨?d ›Ivõ¤û @  ›Åû¨?d @›I°æÚ @  ›Æü¨?d €›I$ @  ›Çý¨?d À›I®Þº' @  ›Èþ¨?d œI·I( @  ›Éÿ¨?d @œIƒ…\‘ @  ›Ê©?d €œI£p^o @  ›Ë©?d ÀœI–F_û @  ›Ì©?d IFÓ @  ›Í©?d @I€j2 @  ›Î©?d €I èhÌ @  ›Ï©?d ÀI3„ó/ @  ›Ð©?d žI®ÀSî @  ›Ñ©?d @žIðà è @  ›Ò©?d €žIÐ6  @  ›Ó ©?d ÀžIå ‚ @  ›Ô ©?d ŸI5H†j @  ›Õ ©?d @ŸIó[?K @  ›Ö ©?d €ŸIÓ®=µ @  ›× ©uРI?d ÀŸIíc˜¶ @  ›Ø©?d  IœhFÐ @  ›Ù©?d X I§;~: @  ›Ú©?d ˜ I‡Î|Ä @  ›Û©?d Ø I²ø}P @  ›Ü©?d ¡Ib°ñ¸ @  ›Ý©?d X¡I¤£H™ @  ›Þ©?d ˜¡I„VJg @  ›ß©?d Ø¡I<ö4 @  ›à©?d ¢I›xVõ @  ›á©?d X¢IÅ{ ó @  ›â©?d€ ˜¢Icئ´ @  œ©?d Ø¢I·¯ï  @  œ©?d £Igçcá @  œ©?d X£Id½!- @  œ©?d ˜£IDH#Ó @  œ©?d Ø£I´7Ùª @  œ©?d ¤I­y*¥ @  œ©?d X¤IÅ/té @  œ ©?d ˜¤IåÚv @  œ !©?d ؤI¥Œn @  œ "©?d ¥IÅí† @  œ #©?d X¥IÆ·BJ @  œ $©?d ˜¥IæB@´ @  œ %©?d Ø¥I=ºÍ @  œ&©?d ¦I‹y  @  œ'©?d X¦I¶i! @  œ(©?d ˜¦I–œ#n @  œ)©?d ئIfãÙ @  œ*©?d §I¶«Uÿ @  œ+©?d X§Iµñ3 @  œ,©?d ˜§I•Í @  œ-©?d اIe{ï´ @  œ.©?d ¨IQ„c© @  œ/©?d X¨I¤e9 @  œ0©?d ˜¨I„Ç @  œ1©?d بItïü¾ @  œ2©?d ©I¤§pV @  œ3©?d X©I§ý2š @  œ4©?d ˜©I‡0d @  œ5©?d Ø©IwwÊ @  œ6©?d ªIê3jÜ @  œ7©?d XªIÆ%vð @  œ 8©?d ˜ªIæÐt @  œ!9©?d تI¯Žw @  œ":©?d «IÆçŸ @  œ#;©?d X«IŽ@S @  œ$<©?d ˜«IåHB­ @  œ%=©?d Ø«I7¸Ô @  œ&>©?d ¬I yKÛ @  œ'?©?d X¬I”† @  œ(@©?d ˜¬I´Šx @  œ)A©?d جIDõø @  œ*B©?d ­I”½té @  œ+C©?d X­I—ç6% @  œ,D©?d ˜­I·4Û @  œ-E©?d Ø­IGm΢ @  œ.F©?d ®IÚ)nc @  œ/G©?d X®Iç9Uÿ @  œ0H©?d ˜®IÇÌW @  œ1I©?d Ø®I7³­x @  œ2J©?d ¯Içû! @  œ3K©?d X¯Iä¡c\ @  œ4L©?d ˜¯IÄTa¢ @  œ5M©?d دI4+›Û @  œ6N©?d °IŠõ'i @  œ7O©?d X°I@ù @  œ8P©?d ˜°I_áB @  œ9Q©?d ذI¯ž¸~ @  œ:R©?d ±IÖ4– @  œ;S©?d X±I|ŒvZ @  œ<T©?d ˜±I\yt¤ @  œ=U©?d رI¬ŽÝ @  œ>V©?d ²I1B. @  œ?W©?d X²I³S4¢ @  œ@X©?d ˜²I“¦6\ @  œAY©?d زIcÙÌ% @  œBZ©?d ³I³‘@Í @  œC[©?d X³I°Ë @  œD\©?d ˜³I>ÿ @  œE]©?d سI`Aú† @  œF^©?d ´Iy ‰ @  œG_©?d X´IYWÅ @  œH`©?d ˜´I1¬U; @  œIa©?d Ø´IÁÓ¯B @  œJb©?d µI›#ª @  œKc©?d XµIÁaf @  œLd©?d ˜µI24c˜ @  œMe©?d صIÂK™á @  œNf©?d ¶I_9  @  œOg©?d X¶Ib¼ @  œPh©?d ˜¶IBêB @  œQi©?d ضI²•ú; @  œRj©?d ·IbÝvÓ @  œSk©?d X·Ia‡4 @  œTl©?d ˜·IAr6á @  œUm©?d Ø·I± ̘ @  œVn©?d ¸I…ò@… @  œWo©?d X¸Ip' @  œXp©?d ˜¸IPæ%ë @  œYq©?d ظI ™ß’ @  œZr©?d ¹IpÑSz @  œ[s©?d X¹Is‹¶ @  œ\t©?d ˜¹IS~H @  œ]u©?d عI£é1 @  œ^v©?d ºI>EIð @  œ_w©?d XºISUÜ @  œ`x©?d ˜ºI2¦W" @  œay©?d غIÂÙ­[ @  œbz©?d »I‘!³ @  œc{©?d X»IËc @  œd|©?d ˜»I1>a @  œe}©?d Ø»IÁA›ø @  œf~©?d ¼IØh÷ @  œg©?d X¼I]Ïw8 @  œh€©?d ˜¼I}:uÆ @  œi©?d ؼIE¿ @  œj‚©?d ½I] W @  œkƒ©?d X½I^WA› @  œl„©?d ˜½I~¢Ce @  œm…©?d ؽIŽÝ¹ @  œn†©?d ¾I™Ý @  œo‡©?d X¾I.‰"A @  œpˆ©?d ˜¾I| ¿ @  œq‰©?d ؾIþÚÆ @  œrŠ©?d ¿I.KV. @  œs‹©?d X¿I-â @  œtŒ©?d ˜¿I ä @uÐÀI  œu©?d Ø¿Iý›ìe @  œvŽ©?d 0ÀI™k½7 @  œw©?d pÀIlŠÚ§ @  œx©?d °ÀILØY @  œy‘©?d ðÀI¼"  @  œz’©?d 0ÁIlH®È @  œ{“©?d pÁIoì @  œ|”©?d °ÁIOçîú @  œ}•©?d ðÁI¿˜ƒ @  œ~–©?d 0ÂI"Ü´B @  œ—©?d pÂIC›žÍ @  œ€˜©?d °ÂIcnœ3 @  œ™©?d ðÂI“fJ @  œ‚š©?d 0ÃICYê¢ @  œƒ›©?d pÃI@¨n @  œ„œ©?d °ÃI`öª @  œ…©?d ðÃI‰Pé @  œ†ž©?d 0ÄI‰Ç£æ @  œ‡Ÿ©?d pÄIá‘ýª @  œˆ ©?d °ÄIÁdÿT @  œ‰¡©?d ðÄI1- @  œŠ¢©?d 0ÅIáS‰Å @  œ‹£©?d pÅIâ Ë  @  œŒ¤©?d °ÅIÂüÉ÷ @  œ¥©?d ðÅI2ƒ3Ž @  œŽ¦©?d 0ÆI¯Ç“O @  œ§©?d pÆI’רÓ @  œ¨©?d °ÆI²"ª- @  œ‘©©?d ðÆIB]PT @  œ’ª©?d 0ÇI’ܼ @  œ“«©?d pÇI‘Ožp @  œ”¬©?d °ÇI±ºœŽ @  œ•­©?d ðÇIAÅf÷ @  œ–®©?d 0ÈIu:êê @  œ—¯©?d pÈI€Ûz @  œ˜°©?d °ÈI .„ @  œ™±©?d ðÈIPQuý @  œš²©?d 0ÉI€ù @  œ›³©?d pÉIƒC»Ù @  œœ´©?d °ÉI£¶¹' @  œµ©?d ðÉISÉC^ @  œž¶©?d 0ÊIÎ㟠@  œŸ·©?d pÊIâ›ÿ³ @  œ ¸©?d °ÊIÂnýM @  œ¡¹©?d ðÊI24 @  œ¢º©?d 0ËIâY‹Ü @  œ£»©?d pËIáÉ @  œ¤¼©?d °ËIÁöËî @  œ¥½©?d ðËI1‰1— @  œ¦¾©?d 0ÌI(ǘ @  œ§¿©?d pÌI°Á‰Å @  œ¨À©?d °ÌI4‹; @  œ©Á©?d ðÌI`KqB @  œª©?d 0ÍI°ýª @  œ«é?d pÍI³Y¿f @  œ¬Ä©?d °ÍI“¬½˜ @  œ­Å©?d ðÍIcÓGá @  œ®Æ©?d 0ÎIþ—ç  @  œ¯Ç©?d pÎIÇܼ @  œ°È©?d °ÎIãrÞB @  œ±É©?d ðÎI $; @  œ²Ê©?d 0ÏIÃE¨Ó @  œ³Ë©?d pÏIÀê @  œ´Ì©?d °ÏIàêèá @  œµÍ©?d ðÏI•˜ @  œ¶Ω?d 0ÐI®K®* @  œ·Ï©?d pÐI[ªÉº @  œ¸Щ?d °ÐI{_ËD @  œ¹Ñ©?d ðÐI‹ 1= @  œºÒ©?d 0ÑI[h½Õ @  œ»Ó©?d pÑIX2ÿ @  œ¼Ô©?d °ÑIxÇýç @  œ½Õ©?d ðÑIˆ¸ž @  œ¾Ö©?d 0ÒIü§_ @  œ¿ש?d pÒI—í½á @  œÀØ©?d °ÒI·¿ @  œÁÙ©?d ðÒIGgEf @  œÂÚ©?d 0ÓI—/ÉŽ @  œÃÛ©?d pÓI”u‹B @  œÄÜ©?d °ÓI´€‰¼ @  œÅÝ©?d ðÓIDÿsÅ @  œÆÞ©?d 0ÔI]±€Ê @  œÇß©?d pÔI5çÞ† @  œÈà©?d °ÔIÜx @  œÉá©?d ðÔIåm& @  œÊâ©?d 0ÕI5%ªé @  œËã©?d pÕI6è% @  œÌä©?d °ÕIŠêÛ @  œÍå©?d ðÕIæõ¢ @  œÎæ©?d 0ÖI{±°c @  œÏç©?d pÖIF¡‹ÿ @  œÐè©?d °ÖIfT‰ @  œÑé©?d ðÖI–+sx @  œÒê©?d 0×IFcÿ @  œÓë©?d p×IE9½\ @  œÔì©?d °×IeÌ¿¢ @  œÕí©?d ð×I•³EÛ @  œÖî©?d 0ØI¡LÉÆ @  œ×ï©?d pØIT­®V @  œØð©?d °ØItX¬¨ @  œÙñ©?d ðØI„'VÑ @  œÚò©?d 0ÙIToÚ9 @  œÛó©?d pÙIW5˜õ @  œÜô©?d °ÙIwÀš  @  œÝõ©?d ðÙI‡¿`r @  œÞö©?d 0ÚIûÀ³ @  œß÷©?d pÚI6íÜŸ @  œàø©?d °ÚIÞa @  œáù©?d ðÚIæg$ @  œâú©?d€ 0ÛIBì´V @  û©?d pÛI ÷¾³ @  ü©?d °ÛI€¼M @  ý©?d ðÛIµ4½Ù @  þ©?d 0ÜI¬zNÖ @  ÿ©?d pÜI*MnJ @  ª?d °ÜI ¸l´ @  ª?d ðÜI4uÉ· @  ª?d 0ÝIä=E_ @   ª?d pÝI".ü~ @   ª?d °ÝIÛþ€ @   ª?d ðÝI7íÿ @   ª?d 0ÞIª©_Õ @   ª?d pÞIôªÓ @  ª?d °ÞIÔ_- @   ª?d ðÞIG3œÎ @   ª?d 0ßI—{& @   ª?d pßIQh© @   ª?d uÐàI/°ßIq«ù @   ª?d ðßID«ªm @  ª?d HàI]ô› @  ª?d ˆàIÄ8ÙQ @  ª?d ÈàIF©Î @  ª?d áI*½ðº @  ª?d HáI¨,çd @  ª?d ˆáIÌ[Ke @  ª?d ÈáINÊ\» @  ª?d âId)ê0 @  ª?d HâIæ¸ýî @  ª?d ˆâIß²È @  ª?d ÈâI˜N¥ @  ª?d ãIHý‚s @   ª?d HãIÊl•­ @  !ª?d ˆãI®9¬ @  "ª?d ÈãI,Š.r @  #ª?d äI‚cË7 @  $ª?d HäIòÜé @  %ª?d ˆäIrÈÿ @  & ª?d ÈäI†ãß! @  '!ª?d åIê÷á @  ("ª?d HåIhföÊ @  )#ª?d ˆåI5Ö† @  * $ª?d ÈåI·G‘À @  + %ª?d æI¤'K @  , &ª?d HæI50• @  - 'ª?d ˆæIãR³ @  . (ª?d ÈæIaÃhm @  / )ª?d çI vh¸ @  0 *ª?d HçI"çf @  1 +ª?d ˆçIFÓg @  2 ,ª?d ÈçIÄĹ @  3 -ª?d èIGY^î @  4 .ª?d HèIÅÈI0 @  5 /ª?d ˆèI\ÿdú @  6 0ª?d ÈèIÞns$ @  7 1ª?d éI²zM @  8 2ª?d HéI0ëZÏ @  9 3ª?d ˆéITœöÎ @  : 4ª?d ÈéIÖ á @  ; 5ª?d êIüîW› @  < 6ª?d HêI~@E @  = 7ª?d ˆêI‚c @  > 8ª?d ÈêI‰½ @  ? 9ª?d ëI~=9J @  @ :ª?d HëIü¬.” @  A ;ª?d ˆëI˜Û‚• @  B <ª?d ÈëIJ•K @  C =ª?d ìI´£p @  D >ª?d HìI62gÐ @  E ?ª?d ˆìIÂâf× @  F @ª?d ÈìI@sq  @  G Aª?d íI “é @  HBª?d HíI—1„7 @  ICª?d ˆíIóF(6 @  JDª?d ÈíI WL” @  K€Eª?d îI&´ú @  L€Fª?d HîI¤%íÁ @  M€Gª?d ˆîIXB¢ç @  N€Hª?d ÈîIÚÓµ9 @  O€Iª?d ïIfµì @  P€Jª?d HïI™÷¢2 @  Q€Kª?d ˆïIý€3 @  R€Lª?d ÈïIí @  S€Mª?d ðIvh³ @  T€Nª?d HðIôù¤Ë @  U€Oª?d ˆðImΉ @  V€Pª?d ÈðIï_žß @  W€Qª?d ñIƒK ê @  X€Rª?d HñIÚ·4 @  Y€Sª?d ˆñIe­5 @  Z€Tª?d ÈñIç< ë @  [€Uª?d òIÍߺ` @  \€Vª?d HòION­¾ @  ]€Wª?d ˆòI³)☠@  ^€Xª?d ÈòI1¸õF @  _€Yª?d óIá Ò# @  `€Zª?d HóIcšÅý @  a€[ª?d ˆóIíiü @  b€\ª?d ÈóI…|~" @  c€]ª?d ôI+•›g @  d€^ª?d HôI©Œ¹ @  e€_ª?d ˆôI­„˜¯ @  f€`ª?d ÈôI/q @  g€aª?d õIC±D @  h€bª?d HõIÁ¦š @  i€cª?d ˆõI¥ç › @  j€dª?d ÈõI'vE @  k€eª?d öI •«Î @  l€fª?d HöI¼ @  m€gª?d ˆöIscó6 @  n€hª?d ÈöIñòäè @  o€iª?d ÷I0Gä= @  p€jª?d H÷I²Öóã @  q€kª?d ˆ÷IÖ¡_â @  r€lª?d È÷IT0H< @  s€mª?d øI×hÒk @  t€nª?d HøIUùŵ @  u€oª?d ˆøIÌÎè @  v€pª?d ÈøIN_ÿ¡ @  w€qª?d ùI"KÁ” @  x€rª?d HùI ÚÖJ @  y€sª?d ˆùIÄ­zK @  z€tª?d ÈùIF! @  ‚€|ª?d ÈûIi-)ÿ @  ƒ€}ª?d üIÇÄ̺ @  „€~ª?d HüIEUÛd @  …€ª?d ˆüI¬CŽñ @  †€€ª?d ÈüI.Ò™/ @  ‡€ª?d ýIBƧ @  ˆ€‚ª?d HýIÀW°Ä @  ‰€ƒª?d ˆýI¤ Å @  Š€„ª?d ÈýI&±  @  ‹€…ª?d þI R½ @  Œ€†ª?d HþIŽÃªN @  €‡ª?d ˆþIr¤åh @  Ž€ˆª?d ÈþIð5ò¶ @  €‰ª?d ÿI1€òc @  €Šª?d HÿI³å½ @  ‘€‹ª?d ˆÿI×fI¼ @  ’€uÐJŒª?d ÈÿI°ñË @  “ ª?d J¢æ¯– @  ” Žª?d `J w¸H @  • ª?d  J¹@•‚ @  – ª?d àJ;Ñ‚\ @  — ‘ª?d JWżi @  ˜ ’ª?d `JÕT«· @  ™ “ª?d  J±#¶ @  š ”ª?d àJ3²h @  › •ª?d JQ¦ã @  œ –ª?d `J›À±= @   —ª?d  Jg§þ @  ž ˜ª?d àJå6éÅ @  Ÿ ™ª?d J5…Π @    šª?d `J·Ù~ @  ¡ ›ª?d  JÓcu @  ¢ œª?d àJQòb¡ @  £ ª?d Jÿ‡ä @  ¤ žª?d `J}Š: @  ¥ Ÿª?d  Jy „, @  ¦  ª?d àJû›“ò @  § ¡ª?d J®Hq @  ¨¢ª?d `J,ÙfÌ @  ©£ª?d  JH®ÊÍ @  ª¤ª?d àJÊ?Ý @  «¥ª?d JàÜk˜ @  ¬¦ª?d `JbM|F @  ­§ª?d  Jž*3` @  ®¨ª?d àJ»$¾ @  ¯©ª?d JÝ$k @  °ªª?d `J_Ÿ3µ @  ±«ª?d  J;蟴 @  ²¬ª?d àJ¹yˆj @  ³­ª?d J:!= @  ´®ª?d `J¸°ã @  µ¯ª?d  J!‡() @  ¶°ª?d àJ£?÷ @  ·±ª?d JÏ @  ¸²ª?d ` JM“ @  ¹³ª?d   J)äº @  º´ª?d à J«u­Ã @  »µª?d J–H @  ¼¶ª?d ` J – @  ½·ª?d   Jÿ`C° @  ¾¸ª?d à J}ñTn @  ¿¹ª?d JEu™ @  Àºª?d ` JÔbG @  Á»ª?d   Jå£ÎF @  Â¼ª?d à Jg2Ù˜ @  Ã½ª?d JÉÛ<Ý @  Ä¾ª?d ` JKJ+ @  Å¿ª?d   J¿š* @  ÆÀª?d à J= =Ú @  ÇÁª?d JQï @  Èª?d ` JÓŽ1 @  Éê?d   J·ù¸0 @  ÊĪ?d à J5h¯î @  ËŪ?d J‹e @  Ìƪ?d `J» @  ÍǪ?d  Ja}A @  ÎȪ?d àJãìVC @  Ïɪ?d J"YV– @  Ðʪ?d `J ÈAH @  Ñ˪?d  JÄ¿íI @  Ò̪?d àJF.ú— @  Óͪ?d JOWPo @  ÔΪ?d `JÍÆG± @  ÕϪ?d  JTñj{ @  ÖЪ?d àJÖ`}¥ @  ×Ѫ?d JºtC @  ØÒª?d `J8åTN @  ÙÓª?d  J\’øO @  ÚÔª?d àJÞï‘ @  ÛÕª?d JôàY @  ÜÖª?d `JvqNÄ @  Ýת?d  JŠâ @  Þت?d àJ‡< @  ßÙª?d JØ41Y @  àÚª?d `JZ¥&‡ @  áÛª?d  J>ÒŠ† @  âܪ?d€ àJ}jX @  žݪ?d J2¬Ç4 @  žÞª?d `J°=Ðê @  žߪ?d  Jqô? @  žàª?d àJóe(Ï @  žáª?d JQÃI€ @  žâª?d `JÓR^^ @  žãª?d  Jy—­% @  žäª?d àJûºû @  ž åª?d J¬÷ @  ž æª?d `J–=àC @  ž çª?d  J¯Tˆ @  ž èª?d àJ-‚CV @  ž éª?d J$" @  žêª?d `J µ5Ç @  žëª?d  J Ñø\ @  žìª?d àJˆ@ï‚ @  žíª?d JÎQŽ8 @  žîª?d `JLÀ™æ @  žïª?d  J¾OÁ @  žðª?d àJ’/X @  žñª?d J0‰9P @  žòª?d `J².Ž @  žóª?d  JÝÝõ @  žôª?d àJšLÊ+ @  žõª?d Juæ‡M @  žöª?d `J÷w“ @  ž÷ª?d  JÎY$X @  žøª?d àJLÈ3† @  žùª?d JînRÉ @  žúª?d `JlÿE @  žûª?d  Jz¯< @  ž üª?d àJø ¸â @  ž!ýª?d J“¬¦J @  ž"þª?d `J=±” @  ž#ÿª?d  JBJà @  ž$«?d àJÀ”]> @  ž%«?d Jb2D@6 @  ž/ «?d  J9 ­uÐ J @  ž0 «?d àJ‚vF¦ @  ž1  «?d 8 J“ug @  ž2 «?d x Jb¹ @  ž3 «?d ¸ J_|´ž @  ž4 «?d ø JÝí£@ @  ž5 «?d 8!JK @  ž6 «?d x!JýÚÕÑ @  ž7 «?d ¸!JW&ª @  ž8 «?d ø!JÕŽ1t @  ž9 «?d 8"J:$| @  ž: «?d x"J¸µkÌ @  ž; «?d ¸"J›ß @  ž< «?d ø"J ÈÙ @  ž= «?d 8#J¡¬©– @  ž> «?d x#J#=¾H @  ž? «?d ¸#J›XRñ @  ž@ «?d ø#JÉE/ @  žA «?d 8$Jri[‡ @  žB «?d x$JðøLY @  žC «?d ¸$J11£¢ @  žD  «?d ø$J³ ´| @  žE !«?d 8%JÕ3 @  žF "«?d x%J“—Âí @  žG #«?d ¸%J9R1– @  žH $«?d ø%J»Ã&H @  žI %«?d 8&JTik. @  žJ &«?d x&JÖø|ð @  žK '«?d ¸&JïÖÈ; @  žL («?d ø&JmGßå @  žM )«?d 8'JÏᾪ @  žN *«?d x'JMp©t @  žO +«?d ¸'JJdï @  žP ,«?d ø'JÈ…s1 @  žQ -«?d 8(JŽ”‹ @  žR .«?d x(J U @  žS /«?d ¸(JP{Ór @  žT 0«?d ø(JÒêĬ @  žU 1«?d 8)JpL¥ã @  žV 2«?d x)Jòݲ= @  žW 3«?d ¸)JXAF @  žX 4«?d ø)JÚ‰V˜ @  žY 5«?d 8*J5#þ @  žZ 6«?d x*J·²  @  ž[ 7«?d ¸*JŽœ¸ë @  ž\ 8«?d ø*J ¯5 @  ž] 9«?d 8+J®«Îz @  ž^ :«?d x+J,:Ù¤ @  ž_ ;«?d ¸+J:X3 @  ž` <«?d ø+J¸É$Q @  ža =«?d 8,JÓi:ù @  žb >«?d x,JQø-' @  žc ?«?d ¸,J`a×Í @  žd @«?d ø,JâðÀ @  že A«?d 8-J@V¡\ @  žf B«?d x-JÂǶ‚ @  žg C«?d ¸-JhEù @  žh D«?d ø-Jê“R' @  ži E«?d 8.J9A @  žj F«?d x.J‡¨Ÿ @  žk G«?d ¸.J¾†¼T @  žl H«?d ø.J<«Š @  žm I«?d 8/Jž±ÊÅ @  žn J«?d x/J Ý @  žo K«?d ¸/JD€ @  žp L«?d ø/J™Õ^ @  žq M«?d 80JUåVK @  žr N«?d x0J×tA• @  žs O«?d ¸0J‹ —² @  žt P«?d ø0J ›€l @  žu Q«?d 81J«=á# @  žv R«?d x1J)¬öý @  žw S«?d ¸1Jƒi† @  žx T«?d ø1JøX @  žy U«?d 82JîR_> @  žz V«?d x2JlÃHà @  ž{ W«?d ¸2JUíü+ @  ž| X«?d ø2J×|ëõ @  ž} Y«?d 83JuÚŠº @  ž~ Z«?d x3J÷Kd @  ž [«?d ¸3J¬xAì @  ž€ \«?d ø3J.éV2 @  ž ]«?d 84JEIHš @  ž‚ ^«?d x4JÇØ_D @  žƒ _«?d ¸4J°¿ @  ž„ `«?d ø4J„€§a @  ž… a«?d 85J&&Æ. @  ž† b«?d x5J¤·Ñð @  ž‡ c«?d ¸5Jr"‹ @  žˆ d«?d ø5JŒã5U @  ž‰ e«?d 86JcIx3 @  žŠ f«?d x6JáØoí @  ž‹ g«?d ¸6JØöÛ& @  žŒ h«?d ø6JZgÌø @  ž i«?d 87JøÁ­· @  žŽ j«?d x7JzPºi @  ž k«?d ¸7J}4wò @  ž l«?d ø7Jÿ¥`, @  ž‘ m«?d 88J¹´– @  ž’ n«?d x8J;%H @  ž“ o«?d ¸8Jg[Ào @  ž” p«?d ø8JåÊ×± @  ž• q«?d 89JGl¶þ @  ž– r«?d x9JÅý¡  @  ž— s«?d ¸9Jo8R[ @  ž˜ t«?d ø9Jí©E… @  ž™ u«?d 8:Jã @  žš v«?d x:J€’= @  ž› w«?d ¸:J¹¼«ö @  žœ x«?d ø:J;-¼( @  ž y«?d 8;J™‹Ýg @  žž z«?d x;Jʹ @  žŸ {«?d ¸;J x ’ @  ž  |«?d ø;Jé7L @  ž¡ }«?d 8: @  ž£ «?d ¸J/ßXÎ @  žª †«?d x>J­NO @  ž« ‡«?d ¸>J”`ûÛ @  ž¬ ˆ«?d ø>Jñì @  ž­ ‰«?d 8?J´WJ @  ž® Š«?d x?J6Æš” @  ž¯ ‹«?duÐ@J7 ¸?J1¢W @  ž° Œ«?d ø?J³3@Ñ @  ž± «?d P@JqJ @  ž² Ž«?d @J"„´ @  ž³ «?d Ð@JÜžÖ³ @  ž´ «?d AJ ÖZ[ @  žµ ‘«?d PAJü© " @  ž¶ ’«?d AJÜ\¢Ü @  ž· “«?d ÐAJÔýD‡ @  ž¸ ”«?d BJI¹äF @  ž¹ •«?d PBJ¹Æ? @  žº –«?d BJ™3Á @  ž» —«?d ÐBJy½* @  ž¼ ˜«?d CJÒ11 @  ž½ ™«?d PCJ"NË» @  ž¾ š«?d CJ»ÉE @  ž¿ ›«?d ÐCJº0Ü @  žÀ œ«?d DJôÃÓ @  žÁ «?d PDJñ‹9ª @  ž ž«?d DJÑ~;T @  žà Ÿ«?d ÐDJ²ÓÁ @  žÄ  «?d EJb›Mg @  žÅ ¡«?d PEJ’ä· @  žÆ ¢«?d EJ²µà @  žÇ £«?d ÐEJº°S» @  žÈ ¤«?d FJ'ôóz @  žÉ ¥«?d PFJ׋  @  žÊ ¦«?d FJ÷~ ý @  žË §«?d ÐFJl4ª @  žÌ ¨«?d GJ¼|&þ @  žÍ ©«?d PGJL܇ @  žÎ ª«?d GJlöÞy @  žÏ ««?d ÐGJÉö @  žÐ ¬«?d HJý Šß @  žÑ ­«?d PHJ vp¦ @  žÒ ®«?d HJ-ƒrX @  žÓ ¯«?d ÐHJÓ™±_ @  žÔ °«?d IJÑ=· @  žÕ ±«?d PIJó®ÇÎ @  žÖ ²«?d IJÓ[Å0 @  ž× ³«?d ÐIJÛú#k @  žØ ´«?d JJF¾ƒª @  žÙ µ«?d PJJ¶ÁyÓ @  žÚ ¶«?d JJ–4{- @  žÛ ·«?d ÐJJ ~ÚÆ @  žÜ ¸«?d KJÝ6V. @  žÝ ¹«?d PKJ-I¬W @  žÞ º«?d KJ ¼®© @  žß »«?d ÐKJ¹ºQ¢ @  žà ¼«?d LJ ô¢­ @  žá ½«?d PLJP‹XÔ @  žâ ¾«?d€ LJ½FŒ @  Ÿ ¿«?d ÐLJváo @  Ÿ À«?d MJ¦Im‡ @  Ÿ Á«?d PMJ“l @  Ÿ «?d MJ³Šní @  Ÿ ë?d ÐMJu™×Ì @  Ÿ Ä«?d NJèÝw  @  Ÿ Å«?d PNJÖÒ @  Ÿ Æ«?d NJöåÐð @  Ÿ Ç«?d ÐNJ¨æŠö @  Ÿ È«?d OJx® @  Ÿ É«?d POJM˜Š @  Ÿ Ê«?d OJmmt @  Ÿ Ë«?d ÐOJ«~¼U @  Ÿ Ì«?d PJ ç @  Ÿ Í«?d PPJ†Ì› @  Ÿ Ϋ?d PJ¦9™ú @  Ÿ Ï«?d ÐPJj¡ @  Ÿ Ы?d QJM"-ø @  Ÿ Ñ«?d PQJx,l @  Ÿ Ò«?d QJXá.’ @  Ÿ Ó«?d ÐQJžò—³ @  Ÿ Ô«?d RJ¶7r @  Ÿ Õ«?d PRJ={’q @  Ÿ Ö«?d RJŽ @  Ÿ ׫?d ÐRJCʉ @  Ÿ Ø«?d SJ“ÅFa @  Ÿ Ù«?d PSJ¦óGõ @  Ÿ Ú«?d SJ†E  @  Ÿ Û«?d ÐSJ@ü* @  Ÿ Ü«?d TJY[% @  Ÿ Ý«?d PTJÛ1³v @  Ÿ Þ«?d TJûıˆ @  Ÿ! ß«?d ÐTJ] °¾ @  Ÿ" à«?d UJh ü«?d \Jø[n[ @  Ÿ? ý«?d P\JÔ6Ôš @  Ÿ@ þ«?d \JôÃÖd @  ŸA ÿ«?d Ð\JüßüK @  ŸB ¬?d ]J,—p£ @  ŸC ¬?d P]J¡q7 @  ŸD ¬?d ]J9TsÉ @  ŸE ¬?d Ð]JÿGÊè @  ŸF ¬?d ^Jbj) @  ŸG ¬?d P^J\ÎÏ* @  ŸH ¬?d ^J|;ÍÔ @  ŸI ¬?d Ð^J"8—Ò @  ŸJ ¬?d _Jòp: @  ŸK  ¬?d P_JÇF® @  ŸL  ¬?d _Jç³P @  ŸuÐ`JM  ¬?d Ð_J! ¡q @  ŸN  ¬?d (`JŸXé @  ŸO  ¬?d h`J 4  @  ŸP ¬?d ¨`J,Áô @  ŸQ ¬?d è`J’µ @  ŸR ¬?d (aJÇÚ9ö @  ŸS ¬?d haJòì8b @  ŸT ¬?d ¨aJÒ:œ @  ŸU ¬?d èaJ ƒ½ @  ŸV ¬?d (bJ‰N#| @  ŸW ¬?d hbJ·ƒ† @  ŸX ¬?d ¨bJ—v„ @  ŸY ¬?d èbJÉuÞ‡ @  ŸZ ¬?d (cJ=Ro @  Ÿ[ ¬?d hcJ, Sû @  Ÿ\ ¬?d ¨cJ þQ @  Ÿ] ¬?d ècJÊíè$ @  Ÿ^ ¬?d (dJÓ£+ @  Ÿ_ ¬?d hdJQɧx @  Ÿ` ¬?d ¨dJq<¥† @  Ÿa ¬?d èdJר¤° @  Ÿb  ¬?d (eJ(X @  Ÿc !¬?d heJ2¦)Ì @  Ÿd "¬?d ¨eJS+2 @  Ÿe #¬?d èeJÔ@’ @  Ÿf $¬?d (fJI2Ò @  Ÿg %¬?d hfJwÉ—Ñ @  Ÿh &¬?d ¨fJW<•/ @  Ÿi '¬?d èfJ ?Ï) @  Ÿj (¬?d (gJÙwCÁ @  Ÿk )¬?d hgJìABU @  Ÿl *¬?d ¨gJÌ´@« @  Ÿm +¬?d ègJ §ùŠ @  Ÿn ,¬?d (hJ>Xu— @  Ÿo -¬?d hhJ­4ît @  Ÿp .¬?d ¨hJÁìŠ @  Ÿq /¬?d èhJ¶’Ô` @  Ÿr 0¬?d (iJfÚXˆ @  Ÿs 1¬?d hiJSìY @  Ÿt 2¬?d ¨iJs[â @  Ÿu 3¬?d èiJµ âà @  Ÿv 4¬?d (jJ(NB @  Ÿw 5¬?d hjJƒç @  Ÿx 6¬?d ¨jJ6våÿ @  Ÿy 7¬?d èjJhu¿ù @  Ÿz 8¬?d (kJ¸=3 @  Ÿ{ 9¬?d hkJ 2… @  Ÿ| :¬?d ¨kJ­þ0{ @  Ÿ} ;¬?d èkJkí‰Z @  Ÿ~ <¬?d (lJr£zU @  Ÿ =¬?d hlJ½˜ð¥ @  Ÿ€ >¬?d ¨lJmò[ @  Ÿ ?¬?d èlJËÙæ| @  Ÿ‚ @¬?d (mJ‘j” @  Ÿƒ A¬?d hmJ.§k @  Ÿ„ B¬?d ¨mJRiþ @  Ÿ… C¬?d èmJÈAÐß @  Ÿ† D¬?d (nJUp @  Ÿ‡ E¬?d hnJkÈÕ @  Ÿˆ F¬?d ¨nJK=×ã @  Ÿ‰ G¬?d ènJ>å @  ŸŠ H¬?d (oJÅv  @  Ÿ‹ I¬?d hoJð@™ @  ŸŒ J¬?d ¨oJеg @  Ÿ K¬?d èoJ¦»F @  ŸŽ L¬?d (pJ¨xô @  Ÿ M¬?d hpJ;œ @  Ÿ N¬?d ¨pJážé @  Ÿ‘ O¬?d èpJ ²¦ @  Ÿ’ P¬?d (qJðú*ë @  Ÿ“ Q¬?d hqJÅÌ+ @  Ÿ” R¬?d ¨qJå9) @  Ÿ• S¬?d èqJ#*  @  Ÿ– T¬?d (rJ¾n0a @  Ÿ— U¬?d hrJ€£•b @  Ÿ˜ V¬?d ¨rJ V—œ @  Ÿ™ W¬?d èrJþUÍš @  Ÿš X¬?d (sJ.Ar @  Ÿ› Y¬?d hsJ+@æ @  Ÿœ Z¬?d ¨sJ;ÞB @  Ÿ [¬?d èsJýÍû9 @  Ÿž \¬?d (tJäƒ6 @  ŸŸ ]¬?d htJfé´e @  Ÿ  ^¬?d ¨tJF¶› @  Ÿ¡ _¬?d ètJàø·­ @  Ÿ¢ `¬?d (uJ0°;E @  Ÿ£ a¬?d huJ†:Ñ @  Ÿ¤ b¬?d ¨uJ%s8/ @  Ÿ¥ c¬?d èuJã` @  Ÿ¦ d¬?d (vJ~$!Ï @  Ÿ§ e¬?d hvJ@é„Ì @  Ÿ¨ f¬?d ¨vJ`†2 @  Ÿ© g¬?d èvJ>Ü4 @  Ÿª h¬?d (wJîWPÜ @  Ÿ« i¬?d hwJÛaQH @  Ÿ¬ j¬?d ¨wJû”S¶ @  Ÿ­ k¬?d èwJ=‡ê— @  Ÿ® l¬?d (xJ xfŠ @  Ÿ¯ m¬?d hxJšýi @  Ÿ° n¬?d ¨xJºáÿ— @  Ÿ± o¬?d èxJ²Ç} @  Ÿ² p¬?d (yJQúK• @  Ÿ³ q¬?d hyJdÌJ @  Ÿ´ r¬?d ¨yJD9Hÿ @  Ÿµ s¬?d èyJ»í-  @  Ÿ¶t¬?d (zJ&©Ê @  Ÿ·u¬?d hzJd(É @  Ÿ¸v¬?d ¨zJ8‘*7 @  Ÿ¹w¬?d èzJf’p1 @  Ÿºx¬?d ({J¶ÚüÙ @  Ÿ»y¬?d h{JƒìýM @  Ÿ¼z¬?d ¨{J£ÿ³ @  Ÿ½{¬?d è{Je F’ @  Ÿ¾|¬?d (|J|Dµ @  Ÿ¿}¬?d h|JP)\ @  ŸÀ~¬?d ¨|JpÜ ¢ @  ŸÁ¬?d è|J;®M @  ŸÂ€¬?d (}JëæÁÿ @  ŸÃ¬?d h}JÞÐÀk @  ŸÄ‚¬?d ¨}Jþ%• @  ŸÅƒ¬?d è}J86{´ @  ŸÆ„¬?d (~J¥rÛu @  ŸÇ…¬?d h~J›¿~v @  ŸÈ†¬?d ¨~J»J|ˆ @  ŸÉ‡¬?d è~JåI&Ž @  ŸÊˆ¬?d (J5ªf @  ŸË‰¬?d hJ9ðw' @  ŸÌ Ь?d ¨JuЀJ'uÙ @  ŸÍ ‹¬?d èJßÌø @  ŸÎ Œ¬?d @€J±¨.Œ @  ŸÏ ¬?d €€J€  O @  ŸÐ ެ?d À€J1·‘ @  ŸÑ ¬?d Jk»M @  ŸÒ ¬?d @Jé*“ @  ŸÓ ‘¬?d €J~x' @  ŸÔ ’¬?d ÀJüéù @  ŸÕ “¬?d ‚J%/Ç @  ŸÖ ”¬?d @‚J§¾ @  Ÿ× •¬?d €‚J;©: @  ŸØ –¬?d À‚J¹†¾ä @  ŸÙ —¬?d ƒJµ\Ô @  ŸÚ ˜¬?d @ƒJ7Íh  @  ŸÛ ™¬?d €ƒJ Ÿ|¾ @  ŸÜ š¬?d ÀƒJ"k` @  ŸÝ ›¬?d „JÂ6 @  ŸÞ œ¬?d @„JýS!N @  Ÿß ¬?d €„JÝ]ˆ= @  Ÿà ž¬?d À„J_ÌŸã @  Ÿá Ÿ¬?d …J«ñã @  Ÿâ  ¬?d€ @…Jà @    ¡¬?d €…Jg ¼€ @    ¢¬?d À…J圫^ @    £¬?d †Jù^ @    ¤¬?d @†J{‚IS @    ¥¬?d €†J)™¦  @    ¦¬?d À†J«±Ô @    §¬?d ‡Ji`/ž @    ¨¬?d @‡Jëñ8@ @    ©¬?d €‡J¹ê× @    ª¬?d À‡J;{ÀÇ @    «¬?d ˆJŽOÈ @    ¬¬?d @ˆJ Þ @    ­¬?d €ˆJ^ÅáO @    ®¬?d ÀˆJÜTö‘ @    ¯¬?d ‰JÖÍ4× @    °¬?d @‰JT\#  @    ±¬?d €‰JGÌP @    ²¬?d À‰J„ÖÛŽ @    ³¬?d ŠJ˜Y.] @    ´¬?d @ŠJÈ9ƒ @    µ¬?d €ŠJHÓÖÚ @    ¶¬?d ÀŠJÊBÁ @    ·¬?d ‹J*_N @    ¸¬?d @‹JŠ»H @    ¹¬?d €‹JØ §É @    º¬?d À‹JZ1° @    »¬?d ŒJ´  @    ¼¬?d @ŒJ@%Ô @    ½¬?d €ŒJ>î @    ¾¬?d ÀŒJ¯ùS @    ¿¬?d Jæ×0h @    À¬?d @JdF'¶ @   ! Á¬?d €J6]Èï @   " ¬?d ÀJ´Ìß1 @   # ì?d ŽJ¨C*â @   $ Ĭ?d @ŽJ*Ò=< @   % Ŭ?d €ŽJxÉÒe @   & Ƭ?d ÀŽJúXÅ» @   ' Ǭ?d J80[ñ @   ( Ȭ?d @Jº¡L/ @   ) ɬ?d €J躣v @   * ʬ?d ÀJj+´¨ @   + ˬ?d JU>] @   , ̬?d @JׯJÖ @   - ͬ?d €J…´¥ @   . ά?d ÀJ%²Q @   / Ϭ?d ‘J ¼p @   0 Ь?d @‘J-gÉ @   1 Ѭ?d €‘JÝ6ˆ @   2 Ò¬?d À‘J_§ŸN @   3 Ó¬?d ’JC(j @   4 Ô¬?d @’JÁ¹}C @   5 Õ¬?d €’J“¢’ @   6 Ö¬?d À’J3…Ä @   7 ׬?d “JÓ[Ž @   8 ج?d @“JQÊ P @   9 Ù¬?d €“JÑã  @   : Ú¬?d À“J@ô× @   ; Û¬?d ”JÅRÊ @   < ܬ?d @”J›TE @   = ݬ?d €”JÉOªM @   > Þ¬?d À”JKÞ½“ @   ? ߬?d •Jcñg+ @   @ à¬?d @•Já`põ @   A á¬?d €•J³{Ÿ¬ @   B â¬?d À•J1êˆr @   C ã¬?d –J-e}¡ @   D ä¬?d @–J¯ôj @   E å¬?d €–Jýï…& @   F æ¬?d À–J~’ø @   G ç¬?d —J½ ² @   H è¬?d @—J?‡l @   I é¬?d €—Jmœô5 @   J ê¬?d À—Jï ãë @   K ë¬?d ˜JZ9:ä @   L ì¬?d @˜Jب-: @   M í¬?d €˜JгÂc @   N î¬?d À˜J"Õ½ @   O ï¬?d ™J»û @   P ð¬?d @™J€*% @   Q ñ¬?d €™JÒ1ï| @   R ò¬?d À™JP ø¢ @   S ó¬?d šJL/ q @   T ô¬?d @šJξ¯ @   U õ¬?d €šJœ¥õö @   V ö¬?d ÀšJ4â( @   W ÷¬?d ›JÜ\|b @   X ø¬?d @›J^Ík¼ @   Y ù¬?d €›J Ö„å @   Z ú¬?d À›JŽG“; @   [ û¬?d œJÂ5& @   \ ü¬?d @œJ”S"ø @   ] ý¬?d €œJÆHÍ¡ @   ^ þ¬?d ÀœJDÙÚ @   _ ÿ¬?d JPÚ @   ` ­?d @JÒ‘ @   a ­?d €J€Šê] @   b ­?d ÀJýƒ @   c ­?d žJ”P @   d ­?d @žJœŽ @   e ­?d €žJÎð× @   f ­?d ÀžJLç  @   g ­?d ŸJŽçyC @   h ­?d @ŸJ vn @   i  ­?d €ŸJ^mÄ @   j  ­uРJ?d ÀŸJÜü– @   k  ­?d  JûÁ» @   l ­?d X J—jÖe @   m ­?d ˜ JÅq9< @   n­?d Ø JGà.â @   o­?d ¡JMyì¤ @   p­?d X¡JÏèûz @   q­?d ˜¡Jó# @   r­?d Ø¡Jbý @   s­?d ¢Jíö. @   t­?d X¢J|áð @   u­?d ˜¢JÓg© @   v­?d Ø¢JQöw @   w­?d £J“ž‡= @   x­?d X£Jã @   y­?d ˜£JCº @   z­?d Ø£JÁ…hd @   {­?d ¤JYÎy @   |­?d X¤JÛ‘Ù§ @   }­?d ˜¤J‰Š6þ @   ~­?d ؤJ !  @   ­?d ¥JÀbË© @   € ­?d X¥JBóÜw @   !­?d ˜¥Jè3. @   ‚"­?d Ø¥J’y$ð @   ƒ#­?d ¦JŽöÑ# @   „$­?d X¦J gÆý @   …%­?d ˜¦J^|)¤ @   †&­?d ئJÜí>z @   ‡'­?d §J… 0 @   ˆ(­?d X§Jœ·î @   ‰)­?d ˜§JÎX· @   Š*­?d اJLžOi @   ‹+­?d ¨Jùª–f @   Œ,­?d X¨J{;¸ @   -­?d ˜¨J) ná @   Ž.­?d بJ«±y? @   /­?d ©J¡(»y @   0­?d X©J#¹¬§ @   ‘1­?d ˜©Jq¢Cþ @   ’2­?d Ø©Jó3T  @   “3­?d ªJAó @   ”4­?d XªJm-¶- @   •5­?d ˜ªJ?6Yt @   –6­?d تJ½§Nª @   —7­?d «JÏÐà @   ˜8­?d X«Jý^Ç> @   ™9­?d ˜«J¯E(g @   š:­?d Ø«J-Ô?¹ @   ›;­?d ¬JµQ™¤ @   œ<­?d X¬J7ÀŽz @   =­?d ˜¬JeÛa# @   ž>­?d جJçJvý @   Ÿ?­?d ­J‘2¿Æ @    @­?d X­J£¨ @   ¡A­?d ˜­JA¸GA @   ¢B­?d Ø­JÃ)PŸ @   £C­?d ®Jߦ¥L @   ¤D­?d X®J]7²’ @   ¥E­?d ˜®J,]Ë @   ¦F­?d Ø®J½J @   §G­?d ¯JOÕÔ_ @   ¨H­?d X¯JÍDà @   ©I­?d ˜¯JŸ_,Ø @   ªJ­?d دJÎ; @   «K­?d °J"ÛÒ¦ @   ¬L­?d X°J JÅx @   ­M­?d ˜°JòQ*! @   ®N­?d ذJpÀ=ÿ @   ¯O­?d ±JzYÿ¹ @   °P­?d X±JøÈèg @   ±Q­?d ˜±JªÓ> @   ²R­?d رJ(Bà @   ³S­?d ²J4Íå3 @   ´T­?d X²J¶\òí @   µU­?d ˜²JäG´ @   ¶V­?d زJfÖ j @   ·W­?d ³J¤¾”  @   ¸X­?d X³J&/ƒþ @   ¹Y­?d ˜³Jt4l§ @   ºZ­?d سJö¥{y @   »[­?d ´Jn Ýd @   ¼\­?d X´Jì±Êº @   ½]­?d ˜´J¾ª%ã @   ¾^­?d Ø´J<;2= @   ¿_­?d µJè… @   À`­?d XµJ–…ÿ[ @   Áa­?d ˜µJÄž @   Âb­?d صJFÜ @   Ãc­?d ¶JZ€ò @   Äd­?d X¶JØåÑ @   Åe­?d ˜¶JŠ ˆ @   Æf­?d ضJ›V @   Çg­?d ·JÊóƒ @   Èh­?d X·JHb” @   Éi­?d ˜·Jy{› @   Êj­?d Ø·J˜èlE @   Ëk­?d ¸J-ܵJ @   Ìl­?d X¸J¯M¢” @   Ím­?d ˜¸JýVMÍ @   În­?d ظJÇZ @   Ïo­?d ¹Ju^˜U @   Ðp­?d X¹J÷Ï‹ @   Ñq­?d ˜¹J¥Ô`Ò @   Òr­?d عJ'Ew  @   Ós­?d ºJ;Ê‚ß @   Ôt­?d XºJ¹[• @   Õu­?d ˜ºJë@zX @   Öv­?d غJiÑm† @   ×w­?d »J«¹óÌ @   Øx­?d X»J)(ä @   Ùy­?d ˜»J{3 K @   Úz­?d Ø»Jù¢• @   Û{­?d ¼Ja'ºˆ @   Ü|­?d X¼Jã¶­V @   Ý}­?d ˜¼J±­B @   Þ~­?d ؼJ3 @  ¡3€µ­?d °ÊJ{’:Š @  ¡4€¶­?d ðÊJù-T @  ¡5€·­?d 0ËJõÙìd @  ¡6€¸­?d pËJwHûº @  ¡7€¹­?d °ËJëáK™ @  ¡8€º­?d ðËJip\G @  ¡9€»­?d 0ÌJ4¼· @  ¡:€¼­?d pÌJ¶-i @  ¡;€½­?d °ÌJ!Ý @  ¡<€¾­?d ðÌJ£î @  ¡=€¿­?d 0ÍJ§ƒš @  ¡>€À­?d pÍJ%Ì @  ¡?€Á­?d °ÍJ«"- @  ¡@€­?d ðÍJ)Š5ó @  ¡A€í?d 0ÎJðL;Í @  ¡B€Ä­?d pÎJrÝ, @  ¡C€Å­?d °ÎJå8§ @  ¡D€Æ­?d ðÎJg/y @  ¡E€Ç­?d 0ÏJkÄîI @  ¡F€È­?d pÏJéUù— @  ¡G€É­?d °ÏJuüI´ @  ¡H€Ê­?d ðÏJ÷m^j @  ¡I€Ë­?d 0ÐJ 1L' @  ¡J€Ì­?d pÐJ [ù @  ¡K€Í­?d °ÐJòOM @  ¡L€έ?d ðÐJšcX“ @  ¡M€Ï­?d 0ÑJóéûO @  ¡N€Э?d pÑJqxì‘ @  ¡O€Ñ­?d °ÑJ@pbR @  ¡P€Ò­?d ðÑJÂáuŒ @  ¡Q€Ó­?d 0ÒJ'{² @  ¡R€Ô­?d pÒJ™¶ll @  ¡S€Õ­?d °ÒJäxØ @  ¡T€Ö­?d ðÒJŒuo @  ¡U€×­?d 0ÓJ€¯®6 @  ¡V€Ø­?d pÓJ>¹è @  ¡W€Ù­?d °ÓJž— Ë @  ¡X€Ú­?d ðÓJ @  ¡Y€Û­?d 0ÔJAÊCå @  ¡Z€Ü­?d pÔJÃ[T; @  ¡[€Ý­?d °ÔJT @ @  ¡\€Þ­?d ðÔJÖ˜WQ @  ¡]€ß­?d 0ÕJ"¥ÍQ @  ¡^€à­?d pÕJ 4Ú @  ¡_€á­?d °ÕJ€:sü @  ¡`€â­?d ðÕJ«d" @  ¡a€ã­?d 0ÖJÛmj @  ¡b€ä­?d pÖJYü} @  ¡c€å­?d °ÖJήiv @  ¡d€æ­?d ðÖJL?~¨ @  ¡e€ç­?d 0×J@忘 @  ¡f€è­?d p×JÂt¨F @  ¡g€é­?d °×J^Ýe @  ¡h€ê­?d ð×JÜL» @  ¡i€ë­?d 0ØJ¬1-Y @  ¡j€ì­?d pØJ. :‡ @  ¡k€í­?d °ØJ¹ò.3 @  ¡l€î­?d ðØJ;c9í @  ¡m€ï­?d 0ÙJRéš1 @  ¡n€ð­?d pÙJÐxï @  ¡o€ñ­?d °ÙJáp, @  ¡p€ò­?d ðÙJcáò @  ¡q€ó­?d 0ÚJº'Ì @  ¡r€ô­?d pÚJ8¶  @  ¡s€õ­?d °ÚJ¯ä¦ @  ¡t€ö­?d ðÚJ-ux @  ¡u€÷­?d 0ÛJ!¯ÏH @  ¡v€ø­?d pÛJ£>Ø– @  ¡w€ù­?d °ÛJ?—hµ @  ¡x€ú­?d ðÛJ½k @  ¡y€û­?d 0ÜJàÊ"› @  ¡z€ü­?d pÜJb[5E @  ¡{€ý­?d °ÜJõ !ñ @  ¡|€þ­?d ðÜJw˜6/ @  ¡}€ÿ­?d 0ÝJ£v… @  ¡~€®?d pÝJ!çš[ @  ¡€®?d °ÝJL¸‹ @  ¡€€®?d ðÝJÎ)U @  ¡€®?d 0ÞJïk @  ¡‚€®?d pÞJ•~ µ @  ¡ƒ€®?d °ÞJ, @  ¡„€®?d ðÞJ€½ß @  ¡…€®?d 0ßJŒgÉï @  ¡†€®?d pßJöÞ1 @  ¡‡€ ®?d uÐàJ/°ßJ’_n @  ¡ˆ€ ®?d ðßJmN ° @  ¡‰ ®?d HàJ0hú¹ @  ¡Š ®?d ˆàJøG @  ¡‹ ®?d ÈàJ%«ùÓ @  ¡Œ®?d áJõãu; @  ¡®?d HáJΰMÑ @  ¡Ž®?d ˆáJîEO/ @  ¡®?d ÈáJ})ÔÌ @  ¡®?d âJàmt  @  ¡‘®?d HâJ&~Í, @  ¡’®?d ˆâJ‹ÏÒ @  ¡“®?d ÈâJ3½ÎF @  ¡”®?d ãJãõB® @  ¡•®?d HãJ½ö¨ @  ¡–®?d ˆãJV @  ¡—®?d ÈãJ£Î¿U @  ¡˜®?d äJº€LZ @  ¡™®?d HäJ|“õ{ @  ¡š®?d ˆäJ\f÷… @  ¡›®?d ÈäJiPö @  ¡œ®?d åJ¹zù @  ¡®?d HåJü{Ï @  ¡ž ®?d ˆåJ? y1 @  ¡Ÿ!®?d ÈåJ½cÅb @  ¡ "®?d æJ 'e£ @  ¡¡#®?d HæJæ4Ü‚ @  ¡¢$®?d ˆæJÆÁÞ| @  ¡£%®?d ÈæJó÷ßè @  ¡¤&®?d çJ#¿S @  ¡¥'®?d HçJ}¼  @  ¡¦(®?d ˆçJ]I ø @  ¡§)®?d ÈçJc„®û @  ¡¨*®?d èJW{"æ @  ¡©+®?d HèJ‘h›Ç @  ¡ª,®?d ˆèJ±™9 @  ¡«-®?d ÈèJ„«˜­ @  ¡¬.®?d éJTãE @  ¡­/®?d HéJo°,¯ @  ¡®0®?d ˆéJOE.Q @  ¡¯1®?d ÈéJÜ)µ² @  ¡°2®?d êJAms @  ¡±3®?d HêJ‡~¬R @  ¡²4®?d ˆêJ§‹®¬ @  ¡³5®?d ÈêJ’½¯8 @  ¡´6®?d ëJBõ#Ð @  ¡µ7®?d HëJöyÖ @  ¡¶8®?d ˆëJ<{( @  ¡·9®?d ÈëJÎÞ+ @  ¡¸:®?d ìJ€-$ @  ¡¹;®?d HìJÝ“” @  ¡º<®?d ˆìJýf–û @  ¡»=®?d ÈìJÈP—o @  ¡¼>®?d íJ‡ @  ¡½?®?d HíJN¬  @  ¡¾@®?d ˆíJnY ^ @  ¡¿A®?d ÈíJB4·Ÿ @  ¡ÀB®?d îJßp^ @  ¡ÁC®?d HîJc® @  ¡ÂD®?d ˆîJ9–¬ @  ¡ÃE®?d ÈîJ  ­ @  ¡ÄF®?d ïJÜè!ý @  ¡ÅG®?d HïJ‚ë{û @  ¡ÆH®?d ˆïJ¢y @  ¡ÇI®?d ÈïJœÓÜ @  ¡ÈJ®?d ðJ" `´ @  ¡ÉK®?d HðJäÙ• @  ¡ÊL®?d ˆðJÄëÛk @  ¡ËM®?d ÈðJñÝÚÿ @  ¡ÌN®?d ñJ!•V @  ¡ÍO®?d HñJÆný @  ¡ÎP®?d ˆñJ:3l @  ¡ÏQ®?d ÈñJ©_÷à @  ¡ÐR®?d òJ4W! @  ¡ÑS®?d HòJòî @  ¡ÒT®?d ˆòJÒýìþ @  ¡ÓU®?d ÈòJçËíj @  ¡ÔV®?d óJ7ƒa‚ @  ¡ÕW®?d HóJi€;„ @  ¡ÖX®?d ˆóJIu9z @  ¡×Y®?d ÈóJw¸œy @  ¡ØZ®?d ôJnöov @  ¡Ù[®?d HôJ¨åÖW @  ¡Ú\®?d ˆôJˆÔ© @  ¡Û]®?d ÈôJ½&Õ= @  ¡Ü^®?d õJmnYÕ @  ¡Ý_®?d HõJËŠXã @  ¡Þ`®?d ˆõJëZ @  ¡ßa®?d ÈõJiæN @  ¡àb®?d öJôQF @  ¡ác®?d HöJ2Bÿ® @  ¡âd®?d€ ˆöJÓð P @  ¢e®?d ÈöJ‡Cí @  ¢f®?d ÷J×ÏÏ @  ¢g®?d H÷JL…nî @  ¢h®?d ˆ÷Jlpl @  ¢i®?d È÷Jœ–i @  ¢j®?d øJ¨ðt @  ¢k®?d HøJ Qü/ @  ¢l®?d ˆøJ€¤þÑ @  ¢ m®?d ÈøJpÛ¨ @  ¢ n®?d ùJ “ˆ@ @  ¢ o®?d HùJ^‰KG @  ¢ p®?d ˆùJ~|I¹ @  ¢ q®?d ÈùJ޳À @  ¢r®?d úJG @  ¢s®?d HúJ¶G˺ @  ¢t®?d ˆúJ–²ÉD @  ¢u®?d ÈúJfÍ3= @  ¢v®?d ûJ¶…¿Õ @  ¢w®?d HûJ-Ï> @  ¢x®?d ˆûJ :À @  ¢y®?d ÈûJýEæ¹ @  ¢z®?d üJä ¶ @  ¢{®?d HüJìªóí @  ¢|®?d ˆüJÌ_ñ @  ¢}®?d ÈüJ< j @  ¢~®?d ýJìh‡‚ @  ¢®?d HýJbS<Ú @  ¢€®?d ˆýJB¦>$ @  ¢®?d ÈýJ²ÙÄ] @  ¢‚®?d þJ/dœ @  ¢ƒ®?d HþJ›››— @  ¢ „®?d ˆþJ»n™i @  ¢!…®?d ÈþJKc @  ¢"†®?d ÿJ›Yïø @  ¢#‡®?d HÿJN @  ¢$ˆ®?d ˆÿJ æLí @  ¢%uÐK‰®?d ÈÿJЙ¶” @  ¢&Š®?d KŸ-že @  ¢'‹®?d `K—Œx> @  ¢(Œ®?d  K·yzÀ @  ¢)®?d àKG€¹ @  ¢*Ž®?d K—N Q @  ¢+®?d `KiTÏV @  ¢,®?d  KI¡Í¨ @  ¢-‘®?d àK¹Þ7Ñ @  ¢.’®?d K$š— @  ¢/“®?d `KšO« @  ¢0”®?d  K¡oMU @  ¢1•®?d àKQ·, @  ¢2–®?d KX;Ä @  ¢3—®?d `Kš/ @  ¢4˜®?d  K:ç˜Ñ @  ¢5™®?d àKʘb¨ @  ¢6š®?d KÓÖ‘§ @  ¢7›®?d `KÛwwü @  ¢8œ®?d  Kû‚u @  ¢9®?d àK ý{ @  ¢:ž®?d KÛµ“ @  ¢;Ÿ®?d `K¸ùH @  ¢< ®?d  K˜íû¶ @  ¢=¡®?d àKh’Ï @  ¢>¢®?d KõÖ¡ @  ¢?£®?d `Kï×X— @  ¢@¤®?d  KÏ"Zi @  ¢A¥®?d àK?]  @  ¢B¦®?d Kï,ø @  ¢C§®?d `Kt_ @  ¢D¨®?d  KTªí @  ¢E©®?d àK¤Õu” @  ¢Fª®?d K*ù‰ @  ¢G«®?d `K˜‹Ò @  ¢H¬®?d  K¸~, @  ¢I­®?d àKHçU @  ¢J®®?d K˜Ik½ @  ¢K¯®?d ` KfS¨º @  ¢L°®?d   KF¦ªD @  ¢M±®?d à K¶ÙP= @  ¢N²®?d K+ðü @  ¢O³®?d ` KŽ(G @  ¢P´®?d   K®h*¹ @  ¢Qµ®?d à K^ÐÀ @  ¢R¶®?d Kóß/T @  ¢S€·®?d ` Kh•Ž¿ @  ¢T€¸®?d   KH`ŒA @  ¢U€¹®?d à K¸v8 @  ¢V€º®?d K¡Q…7 @  ¢W€»®?d ` K©ðcl @  ¢X€¼®?d   K‰a’ @  ¢Y€½®?d à Kyz›ë @  ¢Z€¾®?d K©2 @  ¢[€¿®?d ` K:ÏøÉ @  ¢\€À®?d   K:ú7 @  ¢]€Á®?d à KêEN @  ¢^€®?d Kw  @  ¢_€î?d `KÃ_„ @  ¢`€Ä®?d  Kãò]z @  ¢a€Å®?d àK§ @  ¢b€Æ®?d KÃÅ+ë @  ¢c€Ç®?d `KXŠ @  ¢d€È®?d  Kxzˆþ @  ¢e€É®?d àKˆr‡ @  ¢f€Ê®?d K6ÛÎ5 @  ¢g€Ë®?d `K>z(n @  ¢h€Ì®?d  K* @  ¢i€Í®?d àKîðÐé @  ¢j€ή?d K>¸\ @  ¢k€Ï®?d `KÀ¢Ÿ @  ¢l€Ю?d  KàWø @  ¢m€Ñ®?d àK(g @  ¢n€Ò®?d KlÇ@ @  ¢o€Ó®?d `K(lû @  ¢p€Ô®?d  K™ @  ¢q€Õ®?d àKøæç| @  ¢r€Ö®?d K(®k” @  ¢s€×®?d `K³äÊ @  ¢t€Ø®?d  K“È @  ¢u€Ù®?d àKcn2ø @  ¢v€Ú®?d Kz Á÷ @  ¢w€Û®?d `Kr'¬ @  ¢x€Ü®?d  KRt%R @  ¢y€Ý®?d àK¢ ß+ @  ¢z€Þ®?d KrCSà @  ¢{€ß®?d `Kî© @  ¢|€à®?d  K1«æ @  ¢}€á®?d àKÁdQŸ @  ¢~€â®?d K\ ñ^ @  ¢€ã®?d `K¥w8ö @  ¢€€ä®?d  K…‚: @  ¢€å®?d àKuýÀq @  ¢‚€æ®?d K¥µL™ @  ¢ƒ€ç®?d `K>ÿír @  ¢„€è®?d  K ïŒ @  ¢…€é®?d àKîuõ @  ¢†€ê®?d KÚŠ™è @  ¢‡€ë®?d `KÒ+³ @  ¢ˆ€ì®?d  KòÞ}M @  ¢‰€í®?d àK¡‡4 @  ¢Š€î®?d KÒé Ü @  ¢‹€ï®?d `K,óÈÛ @  ¢Œ€ð®?d  K Ê% @  ¢€ñ®?d àKüy0\ @  ¢Ž€ò®?d Ka= @  ¢€ó®?d `KÄ=H& @  ¢€ô®?d  KäÈJØ @  ¢‘€õ®?d àK·°¡ @  ¢’€ö®?d KÄÿDB @  ¢­ ¯?d ø!KÎ;¸ @  ¢® ¯?d 8"KS¾ @  ¢¯ ¯?d x"KöÀ @  ¢° ¯?d ¸"KÖŠÂû @  ¢± ¯?d ø"K&õ8‚ @  ¢² ¯?d 8#Kö½´j @  ¢³ ¯?d x#Km÷ @  ¢´ ¯?d ¸#KM @  ¢µ ¯?d ø#K½}í @  ¢¶ ¯?d 8$K¤3  @  ¢· ¯?d x$K¬’øR @  ¢¸ ¯?d ¸$KŒgú¬ @  ¢¹ ¯?d ø$K|Õ @  ¢º ¯?d 8%K¬PŒ= @  ¢» ¯?d x%KÏývæ @  ¢¼  ¯?d ¸%Kït @  ¢½ !¯?d ø%KwŽa @  ¢¾ "¯?d 8&K‚3.  @  ¢¿ #¯?d x&K˜2×9 @  ¢À $¯?d ¸&K¸ÇÕÇ @  ¢Á %¯?d ø&KH¸/¾ @  ¢ &¯?d 8'K˜ð£V @  ¢à '¯?d x'Kº½ @  ¢Ä (¯?d ¸'K#OC @  ¢Å )¯?d ø'KÓ0ú: @  ¢Æ *¯?d 8(KçÏv' @  ¢Ç +¯?d x(Kïn| @  ¢È ,¯?d ¸(KÏ›’‚ @  ¢É -¯?d ø(K?ähû @  ¢Ê .¯?d 8)Kï¬ä @  ¢Ë /¯?d x)K¶' @  ¢Ì 0¯?d ¸)K1C%ê @  ¢Í 1¯?d ø)KÁ<ß“ @  ¢Î 2¯?d 8*K\xR @  ¢Ï 3¯?d x*Kùx§é @  ¢Ð 4¯?d ¸*KÙ¥ @  ¢Ñ 5¯?d ø*K)ò_n @  ¢Ò 6¯?d 8+KùºÓ† @  ¢Ó 7¯?d x+Kbðrm @  ¢Ô 8¯?d ¸+KBp“ @  ¢Õ 9¯?d ø+K²zŠê @  ¢Ö :¯?d 8,K«4yå @  ¢× ;¯?d x,K£•Ÿ¾ @  ¢Ø <¯?d ¸,Kƒ`@ @  ¢Ù =¯?d ø,Ksg9 @  ¢Ú >¯?d 8-K£WëÑ @  ¢Û ?¯?d x-K0ª @  ¢Ü @¯?d ¸-K_å @  ¢Ý A¯?d ø-Kà üœ @  ¢Þ B¯?d 8.K}d\] @  ¢ß C¯?d x.KÉb£V @  ¢à D¯?d ¸.Ké—¡¨ @  ¢á E¯?d ø.Kè[Ñ @  ¢â F¯?d€ 8/K½cËŸ @  £ G¯?d x/KÇh"] @  £ H¯?d ¸/Kç £ @  £ I¯?d ø/KÒ«!7 @  £ J¯?d 80Klu… @  £ K¯?d x0Kªf$¤ @  £ L¯?d ¸0KŠ“&Z @  £ M¯?d ø0K´^ƒY @  £ N¯?d 81Kd± @  £ O¯?d x1K_E7[ @  £ P¯?d ¸1K°5¥ @  £ Q¯?d ø1KJ†41 @  £ R¯?d 82K×”ð @  £ S¯?d x2KÑ-Ñ @  £ T¯?d ¸2K1$// @  £ U¯?d ø2K¢H´Ì @  £ V¯?d 83Kr8$ @  £ W¯?d x3K,b" @  £ X¯?d ¸3K ö`Ü @  £ Y¯?d ø3K9ÀaH @  £ Z¯?d 84K Ž’G @  £ [¯?d x4Kæ+f @  £ \¯?d ¸4KÆh)˜ @  £ ]¯?d ø4Kø¥Œ› @  £ ^¯?d 85K(ís @  £ _¯?d x5KŽ E @  £ `¯?d ¸5K®ü» @  £ a¯?d ø5K›Ê/ @  £ b¯?d 86KŽ¢î @  £ c¯?d x6KÀÏ @  £ d¯?d ¸6Kàh1 @  £ e¯?d ø6Kb¥b @  £ f¯?d 87K²J)Š @  £! g¯?d x7KìIsŒ @  £" h¯?d ¸7K̼qr @  £# i¯?d ø7KùŠpæ @  £$ j¯?d 88KÍuüû @  £% k¯?d x8K fEÚ @  £& l¯?d ¸8K+“G$ @  £' m¯?d ø8K^â' @  £( n¯?d 89KÅnÏ @  £) o¯?d x9KþEV% @  £* p¯?d ¸9KÞ°TÛ @  £+ q¯?d ø9Kë†UO @  £, r¯?d 8:KvÂõŽ @  £- s¯?d x:K°ÑL¯ @  £. t¯?d ¸:K$NQ @  £/ u¯?d ø:KHÕ² @  £0 v¯?d 8;KÓYZ @  £1 w¯?d x;K\ @  £2 x¯?d ¸;K­ö¢ @  £3 y¯?d ø;K˜À6 @  £4 z¯?d 8KJ‚ @  £= ƒ¯?d x>KŒ ;2 @  £> „¯?d ¸>K¬þ9Ì @  £? …¯?d ø>K€“ƒ  @  £@ †¯?d 8?KPÛå @  £A ‡¯?d x?KØUã @  £B ˆ¯?duÐ@K7 ¸?K.-W @  £C ‰¯?d ø?K"ÜŠ\ @  £DН?d P@Káp0` @  £E‹¯?d @K…œa @  £FŒ¯?d Ð@K–‹¿ @  £G¯?d AKk‚µŠ @  £Hޝ?d PAKé¢T @  £I¯?d AKp$ž @  £J¯?d ÐAKòµ˜@ @  £K‘¯?d BKØV.Ë @  £L’¯?d PBKZÇ9 @  £M“¯?d BK>°• @  £N”¯?d ÐBK¼!‚Ê @  £O•¯?d CK}”‚ @  £P–¯?d PCKÿ•Á @  £Q—¯?d CKbÚç @  £R˜¯?d ÐCKóÍ9 @  £S™¯?d DK/(| @  £Tš¯?d PDK­‹?¢ @  £U›¯?d DKÉü“£ @  £Vœ¯?d ÐDKKm„} @  £W¯?d EK'yºH @  £Xž¯?d PEK¥è­– @  £YŸ¯?d EK¡h¹€ @  £Z ¯?d ÐEK#ù®^ @  £[¡¯?d FK Õ @  £\¢¯?d PFK‹‹  @  £]£¯?d FKïü£  @  £^¤¯?d ÐFKmm´Ô @  £_¥¯?d GK½Þ“± @  £`¦¯?d PGK?O„o @  £a§¯?d GKÃ(ËI @  £b¨¯?d ÐGKA¹Ü— @  £c©¯?d HKÂáFÀ @  £dª¯?d PHK@pQ @  £e«¯?d HK$ý @  £f¬¯?d ÐHK¦–êÁ @  £g­¯?d IKÊ‚Ôô @  £h®¯?d PIKHÃ* @  £i¯¯?d IKÑ$îà @  £j°¯?d ÐIKSµù> @  £k±¯?d JKyVOµ @  £l²¯?d PJKûÇXk @  £m³¯?d JKŸ°ôj @  £n´¯?d ÐJK!ã´ @  £oµ¯?d KKÜ”ãa @  £p¶¯?d PKK^ô¿ @  £q·¯?d KK¢b»™ @  £r¸¯?d ÐKK ó¬G @  £s¹¯?d LKŽI @  £tº¯?d PLK ‹^Ü @  £u»¯?d LKhüòÝ @  £v¼¯?d ÐLKêmå @  £w½¯?d MK†yÛ6 @  £x¾¯?d PMKèÌè @  £y¿¯?d MKð8Íï @  £zÀ¯?d ÐMKr©Ú1 @  £{Á¯?d NKXJlº @  £|¯?d PNKÚÛ{d @  £}ï?d NK¾¬×e @  £~į?d ÐNK<=À» @  £ů?d OK¡ßÑ} @  £€Ư?d POK#NÆ£ @  £ǯ?d OKß)‰… @  £‚ȯ?d ÐOK]¸ž[ @  £ƒɯ?d PKTÁ4£ @  £„ʯ?d PPKÖP#} @  £…˯?d PK²'| @  £†̯?d ÐPK0¶˜¢ @  £‡ͯ?d QK\¢¦— @  £ˆί?d PQKÞ3±I @  £‰ϯ?d QKGœƒ @  £ŠЯ?d ÐQKÅ•‹] @  £‹ѯ?d RKïv=Ö @  £ŒÒ¯?d PRKmç* @  £Ó¯?d RK †  @  £ŽÔ¯?d ÐRK‹‘× @  £Õ¯?d SKJ´‘ @  £Ö¯?d PSKÈ%†Ü @  £‘ׯ?d SK4BÉú @  £’د?d ÐSK¶ÓÞ$ @  £“Ù¯?d TK:;a @  £”Ú¯?d PTKš«,¿ @  £•Û¯?d TKþÜ€¾ @  £–ܯ?d ÐTK|M—` @  £—ݯ?d UKY©U @  £˜Þ¯?d PUK’Ⱦ‹ @  £™߯?d UK–Hª @  £šà¯?d ÐUKÙ½C @  £›á¯?d VK>: È @  £œâ¯?d PVK¼« @  £ã¯?d VKØÜ° @  £žä¯?d ÐVKZM§É @  £Ÿå¯?d WKŠþ€¬ @  £ æ¯?d PWKo—r @  £¡ç¯?d WKôØT @  £¢è¯?d ÐWKv™ÏŠ @  ££é¯?d XKõÁUÝ @  £¤ê¯?d PXKwPB @  £¥ë¯?d XK'î @  £¦ì¯?d ÐXK‘¶ùÜ @  £§í¯?d YKý¢Çé @  £¨î¯?d PYK3Ð7 @  £©ï¯?d YKæýý @  £ªð¯?d ÐYKd•ê# @  £«ñ¯?d ZKNv\¨ @  £¬ò¯?d PZKÌçKv @  £­ó¯?d ZK¨çw @  £®ô¯?d ÐZK*ð© @  £¯õ¯?d [Kë´ð| @  £°ö¯?d P[Ki%ç¢ @  £±÷¯?d [K•B¨„ @  £²ø¯?d Ð[KÓ¿Z @  £³ù¯?d \K¹:Z @  £´ú¯?d P\K;«MÁ @  £µû¯?d \K_ÜáÀ @  £¶ü¯?d Ð\KÝMö @  £·ý¯?d ]K±YÈ+ @  £¸þ¯?d P]K3Èßõ @  £¹ÿ¯?d ]K\<ùÜ @  £º°?d Ð]KÞ­î @  £»°?d ^KôNX‰ @  £¼°?d P^KvßOW @  £½°?d ^K¨ãV @  £¾°?d Ð^K9ôˆ @  £¿°?d _KîÕ @  £À°?d P_Kl¡ @  £Á°?d _K{‡ @  £uÐ`K°?d Ð_KêšY @  £Ã °?d (`Kµ9‹ @  £Ä °?d h`K™$.U @  £Å °?d ¨`KýS‚T @  £Æ °?d è`K•Š @  £Ç °?d (aKÖ«¿ @  £È°?d haK‘G¼a @  £É°?d ¨aKp‘« @  £Ê°?d èaKŠá†u @  £Ë°?d (bK 0þ @  £Ì°?d hbK"“'  @  £Í°?d ¨bKFä‹! @  £Î°?d èbKÄuœÿ @  £Ï°?d (cKÀœ* @  £Ð°?d hcK‡Q‹ô @  £Ñ°?d ¨cK{6ÄÒ @  £Ò°?d ècKù§Ó  @  £Ó°?d (dKWN6I @  £Ô°?d hdKÕß!— @  £Õ°?d ¨dK±¨– @  £Ö°?d èdK39šH @  £×°?d (eK_-¤} @  £Ø°?d heKݼ³£ @  £Ù°?d ¨eKÙ<§µ @  £Ú °?d èeK[­°k @  £Û!°?d (fKqNà @  £Ü"°?d hfKóß> @  £Ý#°?d ¨fK—¨½? @  £Þ$°?d èfK9ªá @  £ß%°?d (gKÅŠ„ @  £à&°?d hgKGšZ @  £á'°?d ¨gK»|Õ| @  £â(°?d€ ègK¿»j @  ¤)°?d (hKÝ¢¸e @  ¤*°?d hhK_3¯» @  ¤+°?d ¨hKþ øW @  ¤,°?d èhK|œï‰ @  ¤-°?d (iKÞ:ŽÆ @  ¤.°?d hiK\«™ @  ¤/°?d ¨iK .ë¨ @  ¤0°?d èiK‰¿üv @  ¤ 1°?d (jKf± @  ¤ 2°?d hjK䄦Î @  ¤ 3°?d ¨jKEºñ" @  ¤ 4°?d èjKÇ+æü @  ¤ 5°?d (kKe‡³ @  ¤6°?d hkKçm @  ¤7°?d ¨kKxh¾Ñ @  ¤8°?d èkKúù© @  ¤9°?d (lK‘Y·§ @  ¤:°?d hlKÈ y @  ¤;°?d ¨lK²ö÷• @  ¤<°?d èlK0gàK @  ¤=°?d (mK’Á @  ¤>°?d hmKP–Ú @  ¤?°?d ¨mK*2ȧ @  ¤@°?d èmK¨£ßy @  ¤A°?d (nKG ’ @  ¤B°?d hnKŘ…Á @  ¤C°?d ¨nKd¦Ò- @  ¤D°?d ènKæ7Åó @  ¤E°?d (oKD‘¤¼ @  ¤F°?d hoKƳb @  ¤G°?d ¨oKHrºn @  ¤ H°?d èoKÊã­° @  ¤!I°?d (pKÓü¥ @  ¤"J°?d hpK„Bë{ @  ¤#K°?d ¨pK%|¼— @  ¤$L°?d èpK§í«I @  ¤%M°?d (qKKÊ @  ¤&N°?d hqK‡ÚÝØ @  ¤'O°?d ¨qKÐ_¯h @  ¤(P°?d èqKRθ¶ @  ¤)Q°?d (rK½dõÐ @  ¤*R°?d hrK?õâ @  ¤+S°?d ¨rKžËµâ @  ¤,T°?d èrKZ¢< @  ¤-U°?d (sK¾üÃs @  ¤.V°?d hsKf°?d hwKí!â³ @  ¤?g°?d ¨wKÍTí- @  ¤@h°?d èwKOÅúó @  ¤Ai°?d (xK Ô›I @  ¤Bj°?d hxK‹EŒ— @  ¤Ck°?d ¨xK*{Û{ @  ¤Dl°?d èxK¨êÌ¥ @  ¤Em°?d (yK L­ê @  ¤Fn°?d hyKˆÝº4 @  ¤Go°?d ¨yKßXÈ„ @  ¤Hp°?d èyK]ÉßZ @  ¤Iq°?d (zK²c’< @  ¤Jr°?d hzK0ò…â @  ¤Ks°?d ¨zK‘ÌÒ @  ¤Lt°?d èzK]ÅÐ @  ¤Mu°?d ({K±û¤Ÿ @  ¤Nv°?d h{K3j³A @  ¤Ow°?d ¨{K¬ý @  ¤Px°?d è{K.Š# @  ¤Qy°?d (|KE/”‹ @  ¤Rz°?d h|KǾƒU @  ¤S{°?d ¨|Kf€Ô¹ @  ¤T|°?d è|KäÃg @  ¤U}°?d (}KF·¢( @  ¤V~°?d h}KÄ&µö @  ¤W°?d ¨}Kã‚¿ @  ¤X€°?d è}Ka¨Ç @  ¤Y°?d (~K޹å¡ @  ¤Z‚°?d h~K (ò @  ¤[ƒ°?d ¨~K­¥“ @  ¤\„°?d è~K/‡²M @  ¤]…°?d (K!Ó @  ¤^†°?d hK°ÄÜ @  ¤_‡°?d ¨KuЀK'ÂÍÐ @  ¤`ˆ°?d èKSÚ @  ¤a‰°?d @€KÕÝ @  ¤bа?d €€K?ö×# @  ¤c‹°?d À€K<¬•ï @  ¤dŒ°?d Kìä @  ¤e°?d @K›ã~ @  ¤fް?d €K @  ¤£˰?d ÀK Œ†ò @  ¤¤̰?d ‘KÛÄ  @  ¤¥Ͱ?d @‘K+»ðc @  ¤¦ΰ?d €‘K Nò @  ¤§ϰ?d À‘Kþ¯•  @  ¤¨а?d ’Kcë5Ì @  ¤©Ѱ?d @’K“”ϵ @  ¤ªÒ°?d €’K³aÍK @  ¤«Ó°?d À’K°;‡ @  ¤¬Ô°?d “K`so @  ¤­Õ°?d @“K ù @  ¤®Ö°?d €“K°ùûè @  ¤¯×°?d À“KéÀt @  ¤°ذ?d ”K”§3{ @  ¤±Ù°?d @”KdØÉ @  ¤²Ú°?d €”KD-Ëü @  ¤³Û°?d À”KGw‰0 @  ¤´ܰ?d •K—?Ø @  ¤µݰ?d @•Kg@ÿ¡ @  ¤¶Þ°?d €•KGµý_ @  ¤·ß°?d À•K/㣠@  ¤¸à°?d –K²§Ò @  ¤¹á°?d @–KBØù« @  ¤ºâ°?d €–Kb-ûU @  ¤»ã°?d À–Kaw¹™ @  ¤¼ä°?d —K±?5q @  ¤½å°?d @—KA@Ï @  ¤¾æ°?d €—KaµÍö @  ¤¿ç°?d À—Kã¤×H @  ¤Àè°?d ˜K×[[U @  ¤Áé°?d @˜K'$¡, @  ¤Âê°?d €˜KÑ£Ò @  ¤Ãë°?d À˜K‹á @  ¤Äì°?d ™KÔÃmö @  ¤Åí°?d @™K$¼— @  ¤Æî°?d €™KI•q @  ¤Çï°?d À™Kñ¨òá @  ¤Èð°?d šKlìR  @  ¤Éñ°?d @šKœ“¨Y @  ¤Êò°?d €šK¼fª§ @  ¤Ëó°?d ÀšK¿<èk @  ¤Ìô°?d ›Kotdƒ @  ¤Íõ°?d @›KŸ žú @  ¤Îö°?d €›K¿þœ @  ¤Ï÷°?d À›K‚ @  ¤Ðø°?d œK› T— @  ¤Ñù°?d @œKkß®î @  ¤Òú°?d €œKK*¬ @  ¤Óû°?d ÀœKHpîÜ @  ¤Ôü°?d K˜8b4 @  ¤Õý°?d @KhG˜M @  ¤Öþ°?d €KH²š³ @  ¤×ÿ°?d ÀK²Ðp @  ¤Ø±?d žK/Qp± @  ¤Ù±?d @žKß.ŠÈ @  ¤Ú±?d €žKÿÛˆ6 @  ¤Û±?d ÀžKüÊú @  ¤Ü±?d ŸK,ÉF @  ¤Ý±?d @ŸKܶ¼k @  ¤Þ±?d €ŸKüC¾• @  ¤ß±uРK?d ÀŸKÐU¢¹ @  ¤à±?d  K¡^|ß @  ¤á ±?d X KQ!†¦ @  ¤â ±?d€ ˜ K˜þ @  ¥ ±?d Ø Kç ’ @  ¥ ±?d ¡K7Dó @  ¥ ±?d X¡Krg @  ¥±?d ˜¡K"‡™ @  ¥±?d Ø¡KÔ%s @  ¥±?d ¢K„…² @  ¥±?d X¢Kº] ± @  ¥±?d ˜¢Kš¨"O @  ¥ ±?d Ø¢K\»›n @  ¥ ±?d £KŒó† @  ¥ ±?d X£K¹Å @  ¥ ±?d ˜£K™0ì @  ¥ ±?d Ø£KÇ3Nê @  ¥±?d ¤KÞ}½å @  ¥±?d X¤KM& @  ¥±?d ˜¤Kmä$ø @  ¥±?d ؤK«÷Ù @  ¥±?d ¥K{¿1 @  ¥±?d X¥KN‰¥ @  ¥±?d ˜¥Kn|[ @  ¥±?d Ø¥KȘm @  ¥ ±?d ¦KUܳ¬ @  ¥!±?d X¦Kk¯ @  ¥"±?d ˜¦KKäQ @  ¥#±?d ئK÷­p @  ¥$±?d §K]¿!˜ @  ¥%±?d X§Kh‰  @  ¥&±?d ˜§KH|"ò @  ¥'±?d اKxô @  ¥(±?d ¨K"€ôé @  ¥)±?d X¨K êHº @  ¥ *±?d ˜¨K€JD @  ¥!+±?d بKF óe @  ¥",±?d ©K–D @  ¥#-±?d X©K£r~ @  ¥$.±?d ˜©Kƒ‡|ç @  ¥%/±?d Ø©K¸ÔD  @  ¥&0±?d ªK%äÌ @  ¥'1±?d XªK]AÏ @  ¥(2±?d ˜ªK;¨C1 @  ¥)3±?d تKý»ú @  ¥*4±?d «K-óvø @  ¥+5±?d X«KÅwl @  ¥,6±?d ˜«K80u’ @  ¥-7±?d Ø«Kf3/” @  ¥.8±?d ¬K}Ü› @  ¥/9±?d X¬KìGx @  ¥0:±?d ˜¬KÌäE† @  ¥1;±?d جK ÷ü§ @  ¥2<±?d ­KÚ¿pO @  ¥3=±?d X­Kï‰qÛ @  ¥4>±?d ˜­KÏ|s% @  ¥5?±?d Ø­K™Èg @  ¥6@±?d ®KŒÇà @  ¥7A±?d X®K:AbÀ @  ¥8B±?d ˜®K´`> @  ¥9C±?d Ø®KܧÙ @  ¥:D±?d ¯K ïU÷ @  ¥;E±?d X¯K9ÙTc @  ¥<F±?d ˜¯K,V @  ¥=G±?d دKG/ › @  ¥>H±?d °Kùñ°) @  ¥?I±?d X°KÕœ è @  ¥@J±?d ˜°Kõi @  ¥AK±?d ذK3z±7 @  ¥BL±?d ±Kã2=ß @  ¥CM±?d X±KÖµ @  ¥EO±?d رKÍ¢_ @  ¥FP±?d ²KP榞 @  ¥GQ±?d X²Kn+ @  ¥HR±?d ˜²KNÞc @  ¥IS±?d زKˆÍ¸B @  ¥JT±?d ³KX…4ª @  ¥KU±?d X³Km³5> @  ¥LV±?d ˜³KMF7À @  ¥MW±?d سKEmÆ @  ¥NX±?d ´K žÉ @  ¥OY±?d X´K™g* @  ¥PZ±?d ˜´K¹’Ô @  ¥Q[±?d Ø´K¾õ @  ¥R\±?d µK¯É2 @  ¥S]±?d XµKšÿ3‰ @  ¥T^±?d ˜µKº 1w @  ¥U_±?d صKî0A @  ¥V`±?d ¶Kª€ @  ¥Wa±?d X¶K¿g5ƒ @  ¥Xb±?d ˜¶KŸ’7} @  ¥Yc±?d ضKYŽ\ @  ¥Zd±?d ·K‰É´ @  ¥[e±?d X·K¼ÿ  @  ¥\f±?d ˜·Kœ Þ @  ¥]g±?d Ø·K [Ø @  ¥^h±?d ¸Köö×Å @  ¥_i±?d X¸Ktœk– @  ¥`j±?d ˜¸KTiih @  ¥ak±?d ظK’zÐI @  ¥bl±?d ¹KB2\¡ @  ¥cm±?d X¹Kw]5 @  ¥dn±?d ˜¹KWñ_Ë @  ¥eo±?d عKl¢g! @  ¥fp±?d ºKñæÇà @  ¥gq±?d XºKÏ+bã @  ¥hr±?d ˜ºKïÞ` @  ¥is±?d غK)ÍÙ< @  ¥jt±?d »Kù…UÔ @  ¥ku±?d X»K̳T@ @  ¥lv±?d ˜»KìFV¾ @  ¥mw±?d Ø»K²E ¸ @  ¥nx±?d ¼K« ÿ· @  ¥oy±?d X¼K8gdT @  ¥pz±?d ˜¼K’fª @  ¥q{±?d ؼKÞß‹ @  ¥r|±?d ½KÉSc @  ¥s}±?d X½K;ÿR÷ @  ¥t~±?d ˜½K P  @  ¥u±?d ؽKPx¼ @  ¥v€±?d ¾KÍ<°} @  ¥w±?d X¾Kóñ~ @  ¥x‚±?d ˜¾KÓ€ @  ¥yƒ±?d ؾK®¡ @  ¥z„±?d ¿KÅ_"I @  ¥{…±?d X¿Kði#Ý @  ¥|†±?d ˜¿KМ!# @uÐÀK  ¥}‡±?d Ø¿KŽŸ{% @  ¥~ˆ±?d 0ÀKêo*w @  ¥‰±?d pÀK%T ‡ @  ¥€б?d °ÀK¡¢y @  ¥‹±?d ðÀKòX @  ¥‚Œ±?d 0ÁKú—° @  ¥ƒ±?d pÁK&Ì–$ @  ¥„ޱ?d °ÁK9”Ú @  ¥…±?d ðÁK=j¬0 @  ¥†±?d 0ÂK . ñ @  ¥‡‘±?d pÂKžã©ò @  ¥ˆ’±?d °ÂK¾«  @  ¥‰“±?d ðÂKx- @  ¥Š”±?d 0ÃK¨MžÅ @  ¥‹•±?d pÃK{ŸQ @  ¥Œ–±?d °ÃK½Ž¯ @  ¥—±?d ðÃKãÇ© @  ¥Ž˜±?d 0ÄKúÃ4¦ @  ¥™±?d pÄKi¯¯E @  ¥š±?d °ÄKIZ­» @  ¥‘›±?d ðÄKIš @  ¥’œ±?d 0ÅK_˜r @  ¥“±?d pÅKj7™æ @  ¥”ž±?d °ÅKJ› @  ¥•Ÿ±?d ðÅKì&š. @  ¥– ±?d 0ÆKqb:ï @  ¥—¡±?d pÆKO¯Ÿì @  ¥˜¢±?d °ÆKoZ @  ¥™£±?d ðÆK©I$3 @  ¥š¤±?d 0ÇKy¨Û @  ¥›¥±?d pÇKL7©O @  ¥œ¦±?d °ÇKl«± @  ¥§±?d ðÇK2Áñ· @  ¥ž¨±?d 0ÈK>}ª @  ¥Ÿ©±?d pÈK„TÁù @  ¥ ª±?d °ÈK¤¡Ã @  ¥¡«±?d ðÈKb²z& @  ¥¢¬±?d 0ÉK²úöÎ @  ¥£­±?d pÉK‡Ì÷Z @  ¥¤®±?d °ÉK§9õ¤ @  ¥¥¯±?d ðÉKœjÍN @  ¥¦°±?d 0ÊK.m @  ¥§±±?d pÊK?ãÈŒ @  ¥¨²±?d °ÊKÊr @  ¥©³±?d ðÊKÙsS @  ¥ª´±?d 0ËK Mÿ» @  ¥«µ±?d pËK<{þ/ @  ¥¬¶±?d °ËKŽüÑ @  ¥­·±?d ðËKB¦× @  ¥®¸±?d 0ÌK[ÃUØ @  ¥¯¹±?d pÌKȯÎ; @  ¥°º±?d °ÌKèZÌÅ @  ¥±»±?d ðÌK.Iuä @  ¥²¼±?d 0ÍKþù  @  ¥³½±?d pÍKË7ø˜ @  ¥´¾±?d °ÍKëÂúf @  ¥µ¿±?d ðÍK½vîA @  ¥¶À±?d 0ÎK 2N€ @  ¥·Á±?d pÎKÿëƒ @  ¥¸±?d °ÎK> é} @  ¥¹ñ?d ðÎKøP\ @  ¥ºı?d 0ÏK(QÜ´ @  ¥»ű?d pÏKgÝ  @  ¥¼Ʊ?d °ÏK=’ßÞ @  ¥½DZ?d ðÏKc‘…Ø @  ¥¾ȱ?d 0ÐKÝO9j @  ¥¿ɱ?d pÐKñ"ƒ« @  ¥Àʱ?d °ÐKÑ×U @  ¥Á˱?d ðÐKÄ8t @  ¥Â̱?d 0ÑKÇŒ´œ @  ¥Ãͱ?d pÑKòºµ @  ¥Äα?d °ÑKÒO·ö @  ¥Åϱ?d ðÑKé @  ¥Æб?d 0ÒKtX/Ý @  ¥Çѱ?d pÒKJ•ŠÞ @  ¥ÈÒ±?d °ÒKj`ˆ  @  ¥ÉÓ±?d ðÒK¬s1 @  ¥ÊÔ±?d 0ÓK|;½é @  ¥ËÕ±?d pÓKI ¼} @  ¥ÌÖ±?d °ÓKiø¾ƒ @  ¥Í×±?d ðÓK7ûä… @  ¥Îر?d 0ÔK.µŠ @  ¥ÏÙ±?d pÔK½ÙŒi @  ¥ÐÚ±?d °ÔK,Ž— @  ¥ÑÛ±?d ðÔK[?7¶ @  ¥Òܱ?d 0ÕK‹w»^ @  ¥Óݱ?d pÕK¾AºÊ @  ¥ÔÞ±?d °ÕKž´¸4 @  ¥Õß±?d ðÕK8P¹ @  ¥Öà±?d 0ÖK¥Ã @  ¥×á±?d pÖK›Ù¼À @  ¥Øâ±?d °ÖK»,¾> @  ¥Ùã±?d ðÖK}? @  ¥Úä±?d 0×K­w‹÷ @  ¥Ûå±?d p×K˜AŠc @  ¥Üæ±?d °×K¸´ˆ @  ¥Ýç±?d ð×Kæ·Ò› @  ¥Þè±?d 0ØKÒH^† @  ¥ßé±?d pØKP"âÕ @  ¥àê±?d °ØKp×à+ @  ¥áë±?d ðØK¶ÄY  @  ¥âì±?d€ 0ÙK§Ë"â @  ¦í±?d pÙKs¼k_ @  ¦î±?d °ÙKSIi¡ @  ¦ï±?d ðÙK­Sª¦ @  ¦ð±?d 0ÚK0 g @  ¦ñ±?d pÚKÀhð @  ¦ò±?d °ÚKàòà @  ¦ó±?d ðÚKè<» @  ¦ô±?d 0ÛK8t˜S @  ¦ õ±?d pÛKÈ b* @  ¦ ö±?d °ÛKèþ`Ô @  ¦ ÷±?d ðÛKs´Á? @  ¦ ø±?d 0ÜKjú20 @  ¦ ù±?d pÜKš…ÈI @  ¦ú±?d °ÜKºpÊ· @  ¦û±?d ðÜKp  @  ¦ü±?d 0ÝKÏ8žä @  ¦ý±?d pÝK?Gd @  ¦þ±?d °ÝK²fc @  ¦ÿ±?d ðÝK\̽ @  ¦²?d 0ÞKÁˆÓ @  ¦²?d pÞK1÷çª @  ¦²?d °ÞKåT @  ¦²?d ðÞK£ @  ¦²?d 0ßKÉëç @  ¦²?d pßK9”už @  ¦²?d uÐàK/°ßKaw` @  ¦²?d ðßK‚+Ö‹ @  ¦²?d HàK›ˆ} @  ¦ ²?d ˆàKÉ”g$ @  ¦ ²?d ÈàKKpú @  ¦ ²?d áK­ÚÇ @  ¦  ²?d HáK/K @  ¦! ²?d ˆáK}Pì@ @  ¦"²?d ÈáKÿÁûž @  ¦#²?d âK† @  ¦$²?d HâKœŸ˜X @  ¦%²?d ˆâK΄w @  ¦&²?d ÈâKL`ß @  ¦'²?d ãKm² @  ¦(²?d HãK”ü l @  ¦)²?d ˆãKÆçå5 @  ¦*²?d ÈãKDvòë @  ¦+²?d äKDã·Ñ @  ¦,²?d HäKÆr  @  ¦-²?d ˆäK”iOV @  ¦.²?d ÈäKøXˆ @  ¦/²?d åKá! @  ¦0²?d HåKc° Û @  ¦1²?d ˆåK1«ã‚ @  ¦2²?d ÈåK³:ô\ @  ¦3²?d æKÏB¹˜ @  ¦4 ²?d HæKMÓ®F @  ¦5!²?d ˆæKÈA @  ¦6"²?d ÈæKYVÁ @  ¦7#²?d çKÇ!+¬ @  ¦8$²?d HçKE°*²?d ÈèKê„ @  ¦?+²?d éK¢Ýs+ @  ¦@,²?d HéK Ldõ @  ¦A-²?d ˆéKrW‹¬ @  ¦B.²?d ÈéKðÆœr @  ¦C/²?d êK èj @  ¦D0²?d HêK“˜ÿ´ @  ¦E1²?d ˆêKÁƒí @  ¦F2²?d ÈêKC3 @  ¦G3²?d ëKjz^ @  ¦H4²?d HëK›ûm€ @  ¦I5²?d ˆëKÉà‚Ù @  ¦J6²?d ÈëKKq• @  ¦K7²?d ìKKäÐ= @  ¦L8²?d HìKÉuÇã @  ¦M9²?d ˆìK›n(º @  ¦N:²?d ÈìKÿ?d @  ¦O;²?d íKî&|é @  ¦P<²?d HíKl·k7 @  ¦Q=²?d ˆíK>¬„n @  ¦R>²?d ÈíK¼=“° @  ¦S?²?d îK0Ëe @  ¦T@²?d HîK²„Ü» @  ¦UA²?d ˆîKàŸ3â @  ¦VB²?d ÈîKb$< @  ¦WC²?d ïK8vYQ @  ¦XD²?d HïKºçN @  ¦YE²?d ˆïKèü¡Ö @  ¦ZF²?d ÈïKjm¶ @  ¦[G²?d ðKÍh¼ @  ¦\H²?d HðKOù«Q @  ¦]I²?d ˆðKâD @  ¦^J²?d ÈðKŸsSÖ @  ¦_K²?d ñKy¬7ë @  ¦`L²?d HñKû= 5 @  ¦aM²?d ˆñK©&Ïl @  ¦bN²?d ÈñK+·Ø² @  ¦cO²?d òKÊx¬ª @  ¦dP²?d HòKHé»t @  ¦eQ²?d ˆòKòT- @  ¦fR²?d ÈòK˜cCó @  ¦gS²?d óKÂ>ž @  ¦hT²?d HóK@Š)@ @  ¦iU²?d ˆóK‘Æ @  ¦jV²?d ÈóKÑÇ @  ¦kW²?d ôK•”ý @  ¦lX²?d HôKƒ# @  ¦mY²?d ˆôK@lz @  ¦nZ²?d ÈôKÂŽ{¤ @  ¦o[²?d õK5W8) @  ¦p\²?d HõK·Æ/÷ @  ¦q]²?d ˆõKåÝÀ® @  ¦r^²?d ÈõKgL×p @  ¦s_²?d öK4š´ @  ¦t`²?d HöK™¥j @  ¦ua²?d ˆöK˾b3 @  ¦vb²?d ÈöKI/uí @  ¦wc²?d ÷KW€ @  ¦xd²?d H÷K‘Æ^ @  ¦ye²?d ˆ÷KÃÝð @  ¦zf²?d È÷KALçÙ @  ¦{g²?d øKlhÝñ @  ¦|h²?d HøKîùÊ/ @  ¦}i²?d ˆøK¼â%v @  ¦~j²?d ÈøK>s2¨ @  ¦k²?d ùK•ý`6 @  ¦€l²?d HùKlwè @  ¦m²?d ˆùKEw˜± @  ¦‚n²?d ÈùKÇæo @  ¦ƒo²?d úK&)ûw @  ¦„p²?d HúK¤¸ì© @  ¦…q²?d ˆúKö£ð @  ¦†r²?d ÈúKt2. @  ¦‡s²?d ûK.JiC @  ¦ˆt²?d HûK¬Û~ @  ¦‰u²?d ˆûKþÀ‘Ä @  ¦Šv²?d ÈûK|Q† @  ¦‹w²?d üK|Äà  @  ¦Œx²?d HüKþUÔþ @  ¦y²?d ˆüK¬N;§ @  ¦Žz²?d ÈüK.ß,y @  ¦{²?d ýKÙoô @  ¦|²?d HýK[—x* @  ¦‘}²?d ˆýK Œ—s @  ¦’~²?d ÈýK‹€­ @  ¦“²?d þKóŒê @  ¦”€²?d HþK˜b›4 @  ¦•²?d ˆþKÊytm @  ¦–‚²?d ÈþKHèc³ @  ¦—ƒ²?d ÿKÞ @  ¦˜„²?d HÿK  @  ¦™…²?d ˆÿKÂæY @  ¦šuÐL†²?d ÈÿK= ‚û @  ¦›€‡²?d L&P @  ¦œ€ˆ²?d `L“‡1Ž @  ¦€‰²?d  LÁœÞ× @  ¦ž€в?d àLC É  @  ¦Ÿ€‹²?d L¥Ò­4 @  ¦ €Œ²?d `L'Cºê @  ¦¡€²?d  LuXU³ @  ¦¢€޲?d àL÷ÉBm @  ¦£€²?d L6u @  ¦¤€²?d `L”—!« @  ¦¥€‘²?d  LÆŒÎò @  ¦¦€’²?d àLDÙ, @  ¦§€“²?d Le¤A @  ¦¨€”²?d `Lœô³Ÿ @  ¦©€•²?d  LÎï\Æ @  ¦ª€–²?d àLL~K @  ¦«€—²?d LLë" @  ¦¬€˜²?d `LÎzü @  ¦­€™²?d  Lœaö¥ @  ¦®€š²?d àLðá{ @  ¦¯€›²?d Lé)¢ö @  ¦°€œ²?d `Lk¸µ( @  ¦±€²?d  L9£Zq @  ¦²€ž²?d àL»2M¯ @  ¦³€Ÿ²?d LÇJk @  ¦´€ ²?d `LEÛµ @  ¦µ€¡²?d  LÀøì @  ¦¶€¢²?d àL•Qï2 @  ¦·€£²?d LÏ)’_ @  ¦¸€¤²?d `LM¸… @  ¦¹€¥²?d  L£jØ @  ¦º€¦²?d àL2} @  ¦»€§²?d L°G. @  ¦¼€¨²?d `L2‡Pð @  ¦½€©²?d  L`œ¿© @  ¦¾€ª²?d àLâ ¨w @  ¦¿€«²?d LªÕÊØ @  ¦À€¬²?d ` L(DÝ @  ¦Á€­²?d   Lz_2_ @  ¦€®²?d à LøÎ% @  ¦À¯²?d LQ™ @  ¦Ä€°²?d ` L›FG @  ¦Å€±²?d   LÉ‹© @  ¦Æ€²²?d à LK¾À @  ¦Ç€³²?d Lbí @  ¦È€´²?d ` L“óÔs @  ¦É€µ²?d   LÁè;* @  ¦Ê€¶²?d à LCy,ô @  ¦Ë€·²?d LCìiÎ @  ¦Ì€¸²?d ` LÁ}~ @  ¦Í€¹²?d   L“f‘I @  ¦΀º²?d à L÷†— @  ¦Ï€»²?d Læ.Å @  ¦Ѐ¼²?d ` Ld¿ÒÄ @  ¦Ñ€½²?d   L6¤= @  ¦Ò€¾²?d à L´5*C @  ¦Ó€¿²?d L8r– @  ¦Ô€À²?d `LºŒeH @  ¦Õ€Á²?d  Lè—Š @  ¦Ö€²?d àLjÏ @  ¦×€ò?d L0~ࢠ@  ¦Ø€IJ?d `L²ï÷| @  ¦Ù€Ų?d  Làô% @  ¦Ú€Ʋ?d àLbeû @  ¦Û€Dz?d LÅ`| @  ¦Ü€Ȳ?d `LGñ¢ @  ¦Ý€ɲ?d  Lêýû @  ¦Þ€ʲ?d àL—{ê% @  ¦߀˲?d Lq¤Ž @  ¦à€̲?d `Ló5™Æ @  ¦á€Ͳ?d  L¡.vŸ @  ¦â€β?d€ àLW|}ç @  §€ϲ?d LWòAÖ @  §€в?d `LÕcV @  §€Ѳ?d  LB1B¼ @  §€Ò²?d àLÀ Ub @  §€Ó²?d LTjwu @  §€Ô²?d `LÖû`« @  §€Õ²?d  LJRЈ @  §€Ö²?d àLÈÃÇV @  § €ײ?d L y @  § €ز?d `LŽn_ @  § €Ù²?d  LÜzë @  § €Ú²?d àLšMm5 @  § €Û²?d L‡O" @  §€ܲ?d `LŒXü @  §€ݲ?d  L½Ö? @  §€Þ²?d àL?Áá @  §€ß²?d L†¾wÈ @  §€à²?d `L/` @  §€á²?d  L“}t¢ @  §€â²?d àLìc| @  §€ã²?d L…&Ak @  §€ä²?d `L·Vµ @  §€å²?d  L›æ– @  §€æ²?d àLñH @  §€ç²?d Lñâ0 @  §€è²?d `Lss'S @  §€é²?d  Lä!3ç @  §€ê²?d àLf°$9 @  §€ë²?d Lòz. @  §€ì²?d `Lpëð @  §€í²?d  LP布 @  § €î²?d àLÒt¯] @  §!€ï²?d Löò ¨ @  §"€ð²?d `Ltc7v @  §#€ñ²?d  Lã1# @  §$€ò²?d àLa 4 @  §%€ó²?d Lõj  @  §&€ô²?d `LwûÕ @  §'€õ²?d  LëR±ö @  §(€ö²?d àLiæ( @  §)€÷²?d L¬ÿ @  §*€ø²?d `L.Ž! @  §+€ù²?d  L¹Ü• @  §,€ú²?d àL;M K @  §-€û²?d L¯‡.\ @  §.€ü²?d `L-9‚ @  §/€ý²?d  L·A @  §0€þ²?d àLž Ÿ @  §1€ÿ²?d LµO9 @  §2€³?d `L7Þç @  §3€³?d  L ŒS @  §4€³?d àL" @  §5€³?d L¶×4š @  §6€³?d `L4F#D @  §7€³?d  L¨ï“guÐ L @  §8€³?d àLWþ÷Å @  §9³?d 8 Lúgd{ @  §:³?d x Lxös¥ @  §; ³?d ¸ Lï¤g @  §< ³?d ø Lm5pÏ @  §= ³?d 8!LùÿRØ @  §> ³?d x!L{nE @  §? ³?d ¸!Lõgêç @  §@³?d ø!Lwöý9 @  §A³?d 8"LSprÌ @  §B³?d x"LÑáe @  §C³?d ¸"LF³q¦ @  §D³?d ø"LÄ"fx @  §E³?d 8#LPèDo @  §F³?d x#LÒyS± @  §G³?d ¸#LNÐã’ @  §H³?d ø#LÌAôL @  §I³?d 8$L J› @  §J³?d x$L‹ ]E @  §K³?d ¸$L^Iñ @  §L³?d ø$LžÏ^/ @  §M³?d 8%L |8 @  §N³?d x%Lˆ”kæ @  §O³?d ¸%L¹œå% @  §P³?d ø%L; òû @  §Q³?d 8&L‚³?d ø-Lš “… @  §q?³?d 8.LÓl0½ @  §r@³?d x.LQý'c @  §sA³?d ¸.LƯ3× @  §tB³?d ø.LD>$  @  §uC³?d 8/LÐô @  §vD³?d x/LReÀ @  §wE³?d ¸/LÎÌ¡ã @  §xF³?d ø/LL]¶= @  §yG³?d 80L.GW @  §zH³?d x0L¬€P‰ @  §{I³?d ¸0L;ÒD= @  §|J³?d ø0L¹CSã @  §}K³?d 81L-‰qô @  §~L³?d x1L¯f* @  §M³?d ¸1LÂGùú @  §€N³?d ø1L@Öî$ @  §O³?d 82LdPaÑ @  §‚P³?d x2LæÁv @  §ƒQ³?d ¸2Lq“b» @  §„R³?d ø2Lóue @  §…S³?d 83LgÈWr @  §†T³?d x3LåY@¬ @  §‡U³?d ¸3Lyðð @  §ˆV³?d ø3LûaçQ @  §‰W³?d 84L>½Y† @  §ŠX³?d x4L¼,NX @  §‹Y³?d ¸4L+~Zì @  §ŒZ³?d ø4L©ïM2 @  §[³?d 85L=%o% @  §Ž\³?d x5L¿´xû @  §]³?d ¸5L޼ö8 @  §^³?d ø5L -áæ @  §‘_³?d 86LµWÏ @  §’`³?d x6L7@ @  §“a³?d ¸6L ßT¥ @  §”b³?d ø6L"NC{ @  §•c³?d 87L¶„al @  §–d³?d x7L4v² @  §—e³?d ¸7L¨¼Æ‘ @  §˜f³?d ø7L*-ÑO @  §™g³?d 88LÂ@Š @  §šh³?d x8L@ÑT @  §›i³?d ¸8L׃à @  §œj³?d ø8LU> @  §k³?d 89LÁØ&) @  §žl³?d x9LCI1÷ @  §Ÿm³?d ¸9LcG˜„ @  § n³?d ø9LáÖZ @  §¡o³?d 8:LÅP¯ @  §¢p³?d x:LGÁq @  §£q³?d ¸:LГÅ @  §¤r³?d ø:LR @  §¥s³?d 8;LÆÈ6  @  §¦t³?d x;LDY!Ò @  §§u³?d ¸;LØð‘ñ @  §¨v³?d ø;LZa†/ @  §©w³?d 8LùŠw2 @  §²€³?d x>L{`ì @  §³³?d ¸>LìItX @  §´‚³?d ø>LnØc† @  §µƒ³?d 8?LúA‘ @  §¶„³?d x?LxƒVO @  §·…³?duÐ@L7 ¸?Lä*æl @  §¸†³?d ø?L;‚Î @  §¹€‡³?d P@Lu* @  §º€ˆ³?d @L$ðwÔ @  §»€‰³?d Ð@LÆv@ @  §¼€г?d ALÁŽú¨ @  §½€‹³?d PALC‰ @  §¾€Œ³?d AL'hAw @  §¿€³?d ÐAL û¶ @  §À€޳?d BL–A[w @  §Á€³?d PBL­c @  §€³?d BLçac @  §À‘³?d ÐBL¸Ñ`÷ @  §Ä€’³?d CLh™ì @  §Å€“³?d PCL®ŠU> @  §Æ€”³?d CLŽWÀ @  §Ç€•³?d ÐCL°²òà @  §È€–³?d DL©üÌ @  §É€—³?d PDL÷ÿ[Ê @  §Ê€˜³?d DL× Y4 @  §Ë€™³?d ÐDLâ€î³?d ZL3·þ  @  ¨?€ï³?d PZLÔö†Y @  ¨@€ð³?d ZLô„§ @  ¨A€ñ³?d ÐZL|~Þ @  ¨B€ò³?d [LÔ4ò6 @  ¨C€ó³?d P[L×n°ú @  ¨D€ô³?d [L÷›² @  ¨E€õ³?d Ð[LäH} @  ¨F€ö³?d \Lª»r @  ¨G€÷³?d P\L޾ @  ¨H€ø³?d \L®î¼ð @  ¨I€ù³?d Ð\L^‘F‰ @  ¨J€ú³?d ]LŽÙÊa @  ¨K€û³?d P]Lƒˆ­ @  ¨L€ü³?d ]L­vŠS @  ¨M€ý³?d Ð]L] p* @  ¨N€þ³?d ^LÀMÐë @  ¨O€ÿ³?d P^L«B›^ @  ¨P€´?d ^L‹·™  @  ¨Q€´?d Ð^L{ÈcÙ @  ¨R€´?d _L«€ï1 @  ¨S€´?d P_L¨Ú­ý @  ¨T€´?d _Lˆ/¯ @  ¨uÐ`LU€´?d Ð_LÐ& @  ¨V´?d (`L»(“ž @  ¨W´?d h`L+™–â @  ¨X´?d ¨`L l” @  ¨Y ´?d è`Lûne @  ¨Z ´?d (aL+[â @  ¨[ ´?d haL( A @  ¨\ ´?d ¨aLô¢¿ @  ¨] ´?d èaLø‹XÆ @  ¨^´?d (bLeÏø @  ¨_´?d hbL,‰†Ç @  ¨`´?d ¨bL |„9 @  ¨a´?d èbLü~@ @  ¨b´?d (cL,Kò¨ @  ¨c´?d hcL/°d @  ¨d´?d ¨cL䲚 @  ¨e´?d ècLÿ›Hã @  ¨f´?d (dLæÕ»ì @  ¨g´?d hdLvd¾ @  ¨h´?d ¨dLV‘¼n @  ¨i´?d èdL¦îF @  ¨j´?d (eLv¦Êÿ @  ¨k´?d heLuüˆ3 @  ¨l´?d ¨eLU ŠÍ @  ¨m´?d èeL¥vp´ @  ¨n´?d (fL82Ðu @  ¨o´?d hfLýŰÙ @  ¨p ´?d ¨fLÝ0²' @  ¨q!´?d èfL-OH^ @  ¨r"´?d (gLýĶ @  ¨s#´?d hgLþ]†z @  ¨t$´?d ¨gLÞ¨„„ @  ¨u%´?d ègL.×~ý @  ¨v&´?d (hL(òà @  ¨w'´?d hhLŠ™÷œ @  ¨x(´?d ¨hLªlõb @  ¨y)´?d èhLZ @  ¨z*´?d (iLŠ[ƒó @  ¨{+´?d hiL‰Á? @  ¨|,´?d ¨iL©ôÃÁ @  ¨}-´?d èiLY‹9¸ @  ¨~.´?d (jLÄÏ™y @  ¨/´?d hjLÀØÑ @  ¨€0´?d ¨jLà-Óä @  ¨1´?d èjLR) @  ¨‚2´?d (kLÀ¥u @  ¨ƒ3´?d hkLÃ@ç¹ @  ¨„4´?d ¨kLãµåG @  ¨…5´?d èkLÊ> @  ¨†6´?d (lL „ì1 @  ¨‡7´?d hlLš5éM @  ¨ˆ8´?d ¨lLºÀë³ @  ¨‰9´?d èlLJ¿Ê @  ¨Š:´?d (mLš÷" @  ¨‹;´?d hmL™­ßî @  ¨Œ<´?d ¨mL¹XÝ @  ¨=´?d èmLI''i @  ¨Ž>´?d (nLÔc‡¨ @  ¨?´?d hnLáÄò @  ¨@´?d ¨nLÁ1ðë @  ¨‘A´?d ènL1N ’ @  ¨’B´?d (oLá†z @  ¨“C´?d hoLâ\Ķ @  ¨”D´?d ¨oL©ÆH @  ¨•E´?d èoL2Ö<1 @  ¨–F´?d (pLŒ€ƒ @  ¨—G´?d hpL¹…ÿ @  ¨˜H´?d ¨pL† @  ©)»´?d €LÍê’‡ @  ©*¼´?d ÀLO{…Y @  ©+½´?d ŽLe˜3Ò @  ©,¾´?d @ŽLç $  @  ©-¿´?d €ŽLÙ%  @  ©.À´?d ÀŽL‘H2Õ @  ©/Á´?d LPý2 @  ©0´?d @LÒl%Þ @  ©1ô?d €L¶‰ß @  ©2Ä´?d ÀL4Šž @  ©3Å´?d L=ó4ù @  ©4Æ´?d @L¿b#' @  ©5Ç´?d €LCl @  ©6È´?d ÀLÁ”{ß @  ©7É´?d ‘L­€Eê @  ©8Ê´?d @‘L/R4 @  ©9Ë´?d €‘LKfþ5 @  ©:Ì´?d À‘LÉ÷éë @  ©;Í´?d ’Lã_` @  ©<δ?d @’La…H¾ @  ©=Ï´?d €’Lø²et @  ©>д?d À’Lz#rª @  ©?Ñ´?d “L—S] @  ©@Ò´?d @“L†Dƒ @  ©AÓ´?d €“Lâqè‚ @  ©BÔ´?d À“L`àÿ\ @  ©CÕ´?d ”LÎ  @  ©DÖ´?d @”LL˜ Ç @  ©E×´?d €”L°ÿBá @  ©FØ´?d À”L2nU? @  ©GÙ´?d •L^zk  @  ©HÚ´?d @•LÜë|Ô @  ©IÛ´?d €•L¸œÐÕ @  ©JÜ´?d À•L: Ç  @  ©KÝ´?d –Lîq€ @  ©LÞ´?d @–L’f^ @  ©Mß´?d €–L–ÿrH @  ©Nà´?d À–Lne– @  ©Oá´?d —LÕÛeC @  ©Pâ´?d @—LWJr @  ©Qã´?d €—L3=Þœ @  ©Rä´?d À—L±¬ÉB @  ©Så´?d ˜L2ôS @  ©Tæ´?d @˜L°eDË @  ©Uç´?d €˜LL í @  ©Vè´?d À˜LΓ3 @  ©Wé´?d ™L¢‡" @  ©Xê´?d @™L 5Ø @  ©Yë´?d €™LDa™Ù @  ©Zì´?d À™LÆðŽ @  ©[í´?d šLì8Œ @  ©\î´?d @šLn‚/R @  ©]ï´?d €šL÷µ˜ @  ©^ð´?d ÀšLu$F @  ©_ñ´?d ›L¥—2# @  ©`ò´?d @›L'%ý @  ©aó´?d €›LCq‰ü @  ©bô´?d À›LÁàž" @  ©cõ´?d œLo {g @  ©dö´?d @œLí˜l¹ @  ©e÷´?d €œLÿ#Ÿ @  ©fø´?d ÀœL“n4A @  ©gù´?d Lÿz t @  ©hú´?d @L}ëª @  ©iû´?d €Lœ±« @  ©jü´?d ÀL› ¦u @  ©ký´?d žL±îþ @  ©lþ´?d @žL3  @  ©mÿ´?d €žL¥¹ @  ©nµ?d ÀžL'Ÿg @  ©oµ?d ŸLæ*² @  ©pµ?d @ŸLd»l @  ©qµ?d €ŸLÌ«m @  ©rµuРL?d ÀŸL‚]¼³ @  ©sµ?d  LDñtŸ @  ©tµ?d X LÆ`cA @  ©uµ?d ˜ L:,g @  ©vµ?d Ø L¸–;¹ @  ©w µ?d ¡LÔ‚Œ @  ©x µ?d X¡LVR @  ©y µ?d ˜¡L2d¾S @  ©z µ?d Ø¡L°õ© @  ©{ µ?d ¢Lš @  ©|µ?d X¢L‡Ø @  ©}µ?d ˜¢L°% @  ©~µ?d Ø¢L!2Ì @  ©µ?d £LžÃ#  @  ©€µ?d X£LR4Ô @  ©µ?d ˜£Lx%˜Õ @  ©‚µ?d Ø£Lú´  @  ©ƒµ?d ¤LT]jN @  ©„µ?d X¤LÖÌ} @  ©…µ?d ˜¤L*«2¶ @  ©†µ?d ؤL¨:%h @  ©‡µ?d ¥LÄ.] @  ©ˆµ?d X¥LF¿ ƒ @  ©‰µ?d ˜¥L"È ‚ @  ©Šµ?d Ø¥L Y·\ @  ©‹µ?d ¦LŠº× @  ©Œµ?d X¦L+  @  ©µ?d ˜¦L « @  ©Ž µ?d ئLŽ:Á @  ©!µ?d §LO @  ©"µ?d X§LÍÊ @  ©‘#µ?d ˜§L©i®Ë @  ©’$µ?d اL+ø¹ @  ©“%µ?d ¨L¨ #B @  ©”&µ?d X¨L*14œ @  ©•'µ?d ˜¨LÖV{º @  ©–(µ?d بLTÇld @  ©—)µ?d ©L8ÓRQ @  ©˜*µ?d X©LºBE @  ©™+µ?d ˜©LÞ5éŽ @  ©š,µ?d Ø©L\¤þP @  ©›-µ?d ªLvGHÛ @  ©œ.µ?d XªLôÖ_ @  ©/µ?d ˜ªLmárÏ @  ©ž0µ?d تLïpe @  ©Ÿ1µ?d «L?ÃBt @  © 2µ?d X«L½RUª @  ©¡3µ?d ˜«LÙ%ù« @  ©¢4µ?d Ø«L[´îu @  ©£5µ?d ¬Lõ] 0 @  ©¤6µ?d X¬LwÌî @  ©¥7µ?d ˜¬L‹«SÈ @  ©¦8µ?d جL :D @  ©§9µ?d ­Le.z# @  ©¨:µ?d X­Lç¿mý @  ©©;µ?d ˜­LƒÈÁü @  ©ª<µ?d Ø­LYÖ" @  ©«=µ?d ®L+º`© @  ©¬>µ?d X®L©+ww @  ©­?µ?d ˜®L]ûvp @  ©®@µ?d Ø®Lßja® @  ©¯Aµ?d ¯Lßa{ @  ©°Bµ?d X¯LœNv¥ @  ©±Cµ?d ˜¯Lø9Ú¤ @  ©²Dµ?d دLz¨Íz @  ©³Eµ?d °LsÑg‚ @  ©´Fµ?d X°Lñ@p\ @  ©µGµ?d ˜°L '?z @  ©¶Hµ?d ذL¶(¤ @  ©·Iµ?d ±L㢑 @  ©¸Jµ?d X±La3O @  ©¹Kµ?d ˜±LD­N @  ©ºLµ?d رL‡Õº @  ©»Mµ?d ²L­6  @  ©¼Nµ?d X²L/§Å @  ©½Oµ?d ˜²L¶6 @  ©¾Pµ?d زL4!Ñ @  ©¿Qµ?d ³LJµ& @  ©ÀRµ?d X³LÈ$ø @  ©ÁSµ?d ˜³L¬S»ù @  ©ÂTµ?d سL.¬' @  ©ÃUµ?d ´L€+Ib @  ©ÄVµ?d X´Lº^¼ @  ©ÅWµ?d ˜´LþÝš @  ©ÆXµ?d Ø´L|LD @  ©ÇYµ?d µLX8q @  ©ÈZµ?d XµL’É/¯ @  ©É[µ?d ˜µLö¾ƒ® @  ©Ê\µ?d صLt/”p @  ©Ë]µ?d ¶L^Ì"û @  ©Ì^µ?d X¶LÜ]5% @  ©Í_µ?d ˜¶LØÝ!3 @  ©Î`µ?d ضLZL6í @  ©Ïaµ?d ·L›ù68 @  ©Ðbµ?d X·Lh!æ @  ©Ñcµ?d ˜·L}ç @  ©Òdµ?d Ø·LÿŽš9 @  ©Óeµ?d ¸L|Ön @  ©Ôfµ?d X¸LþG° @  ©Õgµ?d ˜¸L X– @  ©Öhµ?d ظL€±OH @  ©×iµ?d ¹Lì¥q} @  ©Øjµ?d X¹Ln4f£ @  ©Ùkµ?d ˜¹L CÊ¢ @  ©Úlµ?d عLˆÒÝ| @  ©Ûmµ?d ºL¢1k÷ @  ©Ünµ?d XºL  |) @  ©Ýoµ?d ˜ºL¹—Qã @  ©Þpµ?d غL;F= @  ©ßqµ?d »LëµaX @  ©àrµ?d X»Li$v† @  ©ásµ?d ˜»L SÚ‡ @  ©âtµ?d€ Ø»LN…:Y @  ªuµ?d ¼L-—5 @  ªvµ?d X¼Lƒ¼€ë @  ªwµ?d ˜¼Lº’4  @  ªxµ?d ؼL8#þ @  ªyµ?d ½Lš¥B± @  ªzµ?d X½L4Uo @  ª{µ?d ˜½L²ñ¦ @  ª|µ?d ؽL0`±Ê @  ª }µ?d ¾LßÊü¬ @  ª ~µ?d X¾L][ër @  ª µ?d ˜¾LqE  @  ª €µ?d ؾLó•RÔ @  ª µ?d ¿LQ33› @  ª‚µ?d X¿LÓ¢$E @  ªƒµ?d ˜¿LÔÆéÞ @uÐÀL  ª„µ?d Ø¿LVWþ @  ª…µ?d 0ÀL@IBõ @  ª†µ?d pÀLÂØU+ @  ª‡µ?d °ÀLûöáà @  ªˆµ?d ðÀLygö> @  ª‰µ?d 0ÁLÛÁ—q @  ªе?d pÁLYP€¯ @  ª‹µ?d °ÁLó•sÔ @  ªŒµ?d ðÁLqd  @  ªµ?d 0ÂLž®)l @  ª޵?d pÂL?>² @  ªµ?d °ÂL@Aè• @  ªµ?d ðÂLÂÐÿK @  ª‘µ?d 0ÃL`vž @  ª’µ?d pÃLâç‰Ú @  ª“µ?d °ÃLô…cñ @  ª ”µ?d ðÃLvt/ @  ª!•µ?d 0ÄL´j‡ @  ª"–µ?d pÄLŸ%}Y @  ª#—µ?d °ÄL¦ É’ @  ª$˜µ?d ðÄL$šÞL @  ª%™µ?d 0ÅL†<¿ @  ª&šµ?d pÅL­¨Ý @  ª'›µ?d °ÅL®h[¦ @  ª(œµ?d ðÅL,ùLx @  ª)µ?d 0ÆLÃS @  ª*žµ?d pÆLAÂÀ @  ª+Ÿµ?d °ÆL€ ù; @  ª, µ?d ðÆLšîå @  ª-¡µ?d 0ÇL <ª @  ª.¢µ?d pÇL"­˜t @  ª/£µ?d °ÇL%ÉUï @  ª0¤µ?d ðÇL§XB1 @  ª1¥µ?d 0ÈLáI#‹ @  ª2¦µ?d pÈLcØ4U @  ª3§µ?d °ÈLZö€ž @  ª4¨µ?d ðÈLØg—@ @  ª5©µ?d 0ÉLzÁö @  ª6ªµ?d pÉLøPáÑ @  ª7«µ?d °ÉLR•ª @  ª8¬µ?d ðÉLÐt @  ª9­µ?d 0ÊL?®H @  ª:®µ?d pÊL½?_Ì @  ª;¯µ?d °ÊLáA‰ë @  ª<°µ?d ðÊLcО5 @  ª=±µ?d 0ËLÁvÿz @  ª>²µ?d pËLCçè¤ @  ª?³µ?d °ËLû‚ @  ª@´µ?d ðËLyà @  ªAµµ?d 0ÌL³ k @  ªB¶µ?d pÌL"µ @  ªC·µ?d °ÌL© ®~ @  ªD¸µ?d ðÌL+¹  @  ªE¹µ?d 0ÍL‰;Øï @  ªFºµ?d pÍL ªÏ1 @  ªG»µ?d °ÍL¡o¶?d ˆîLº§e @  ªË?¶?d ÈîL)ZŠÝ @  ªÌ@¶?d ïLù5 @  ªÍA¶?d HïL müL @  ªÎB¶?d ˆïL)˜þ² @  ªÏC¶?d ÈïLŒ˜&  @  ªÐD¶?d ðL2Fš» @  ªÑE¶?d HðLÂ9` @  ªÒF¶?d ˆðLâÌb< @  ªÓG¶?d ÈðLy†Ã× @  ªÔH¶?d ñL©ÎO? @  ªÕI¶?d HñLY±µF @  ªÖJ¶?d ˆñLyD·¸ @  ª×K¶?d ÈñLqåQã @  ªØL¶?d òLì¡ñ" @  ªÙM¶?d HòLÞ [ @  ªÚN¶?d ˆòL<+ ¥ @  ªÛO¶?d ÈòLÂ1Ê¢ @  ªÜP¶?d óLyFJ @  ªÝQ¶?d HóLâ¼3 @  ªÞR¶?d ˆóLÂó¾Í @  ªßS¶?d ÈóLvõAÆ @  ªàT¶?d ôLo»²É @  ªáU¶?d HôLŸÄH° @  ªâV¶?d€ ˆôLËòVè @  «W¶?d ÈôL±ù¿* @  «X¶?d õLa±3 @  «Y¶?d HõLT‡2V @  «Z¶?d ˆõLtr0¨ @  «[¶?d ÈõL²a‰‰ @  «\¶?d öL/%)H @  «]¶?d HöLèŒK @  «^¶?d ˆöL1޵ @  « _¶?d ÈöL—ùƒ @  « `¶?d ÷LG±k @  « a¶?d H÷Lr‡ÿ @  « b¶?d ˆ÷LRr @  « c¶?d È÷L”a¹  @  «d¶?d øL ž5= @  «e¶?d HøL3ò®Þ @  «f¶?d ˆøL¬  @  «g¶?d ÈøLMö& @  «h¶?d ùLLzÎ @  «i¶?d HùL¨z{Z @  «j¶?d ˆùLˆy¤ @  «k¶?d ÈùLNœÀ… @  «l¶?d úLÓØ`D @  «m¶?d HúLíÅG @  «n¶?d ˆúLÍàǹ @  «o¶?d ÈúLö³ÿS @  «p¶?d ûL&ûs» @  «q¶?d HûLÍr/ @  «r¶?d ˆûL38pÑ @  «s¶?d ÈûLõ+Éð @  «t¶?d üLìe:ÿ @  «u¶?d HüLn†¬ @  « v¶?d ˆüLNú„R @  «!w¶?d ÈüLùÞT @  «"x¶?d ýLÀ±R¼ @  «#y¶?d HýLõ‡S( @  «$z¶?d ˆýLÕrQÖ @  «%{¶?d ÈýLaè÷ @  «&|¶?d þLŽ%H6 @  «'}¶?d HþL°èí5 @  «(~¶?d ˆþLïË @  «)¶?d ÈþLÛo¯~ @  «*€¶?d ÿL '#– @  «+¶?d HÿL>" @  «,‚¶?d ˆÿLä ü @  «-uÐMƒ¶?d ÈÿL^~ @  «.„¶?d MUêVù @  «/…¶?d `MƆÍ @  «0†¶?d  MæsÏä @  «1‡¶?d àM¸p•â @  «2ˆ¶?d Mh8  @  «3‰¶?d `M]ž @  «4ж?d  M}û` @  «5‹¶?d àM»è£A @  «6Œ¶?d M&¬€ @  «7¶?d `Ma¦ƒ @  «8޶?d  M8”¤} @  «9¶?d àMÇœ— @  «:¶?d MÓ @  «;‘¶?d `Mæ¹ë @  «<’¶?d  MÆL @  «=“¶?d àM_ª4 @  «>”¶?d MY; @  «?•¶?d `M5|ãú @  «@–¶?d  M‰á @  «A—¶?d àMKŠ» @  «B˜¶?d M›Â7ê @  «C™¶?d `M®ô6~ @  «Dš¶?d  MŽ4€ @  «E›¶?d àMH¡ @  «Fœ¶?d MÕV-` @  «G¶?d `M뛈c @  «Hž¶?d  MËnŠ @  «IŸ¶?d àMmŠ‹« @  «J ¶?d M½ÂC @  «K¡¶?d `Mˆô× @  «L¢¶?d  M¨) @  «M£¶?d àMn½ @  «N¤¶?d MZí1 @  «O¥¶?d `Mɪö @  «P¦¶?d  Mét¨ @  «Q§¶?d àM·wò @  «R¨¶?d Mg?~æ @  «S©¶?d ` MR r @  «Tª¶?d   Mrü}Œ @  «U«¶?d à M´ïÄ­ @  «V¬¶?d M)«dl @  «W­¶?d ` MfÁo @  «X®¶?d   M7“Ñ @  «Y¯¶?d à M Àû{ @  «Z°¶?d M܈w“ @  «[±¶?d ` Mé¾v @  «\²¶?d   MÉKtù @  «]³¶?d à MXÍØ @  «^´¶?d M>× @  «_µ¶?d ` M”|‚„ @  «`¶¶?d   M´‰€z @  «a·¶?d à MêŠÚ| @  «b¸¶?d M:ÂV” @  «c¹¶?d ` MôW @  «dº¶?d   M/Uþ @  «e»¶?d à Méìß @  «f¼¶?d MtVL @  «g½¶?d `MJ›é @  «h¾¶?d  Mjnëã @  «i¿¶?d àM<ÚÿÄ @  «jÀ¶?d Mì’s, @  «kÁ¶?d `MÙ¤r¸ @  «l¶?d  MùQpF @  «mö?d àM?BÉg @  «nĶ?d MœuÕ @  «oŶ?d `Mðî6 @  «pƶ?d  M2ìÈ @  «qǶ?d àMl¶Î @  «rȶ?d M¼N:& @  «sɶ?d `M‰x;² @  «tʶ?d  M©9L @  «u˶?d àMož€m @  «v̶?d MòÚ ¬ @  «wͶ?d `MÌ…¯ @  «xζ?d  Mìâ‡Q @  «y϶?d àM×±¿» @  «zж?d Mù3S @  «{Ѷ?d `M2Ï2Ç @  «|Ò¶?d  M:09 @  «}Ó¶?d àMÔ)‰ @  «~Ô¶?d MÍgz @  «Õ¶?d `M\ðç @  «€Ö¶?d  M"©ò @  «×¶?d àM|ª¨ @  «‚ض?d M¬â$÷ @  «ƒÙ¶?d `M™Ô%c @  «„Ú¶?d  M¹!' @  «…Û¶?d àM2ž¼ @  «†ܶ?d Mâv>} @  «‡ݶ?d `MÜ»›~ @  «ˆÞ¶?d  MüN™€ @  «‰ß¶?d àMZª˜¶ @  «Šà¶?d MŠâ^ @  «‹á¶?d `M¿ÔÊ @  «Œâ¶?d  MŸ!4 @  «ã¶?d àMY2® @  «Žä¶?d MmÍ" @  «å¶?d `Mþ¡¹ë @  «æ¶?d  MÞT» @  «‘ç¶?d àM€Wá @  «’è¶?d MPmû @  «“é¶?d `Me)lo @  «”ê¶?d  MEÜn‘ @  «•ë¶?d àMƒÏ×° @  «–ì¶?d M‹wq @  «—í¶?d `M FÒr @  «˜î¶?d  M³ÐŒ @  «™ï¶?d àM;àèf @  «šð¶?d Më¨dŽ @  «›ñ¶?d `MÞže @  «œò¶?d  Mþkgä @  «ó¶?d àM8xÞÅ @  «žô¶?d M!6-Ê @  «Ÿõ¶?d `M£\‘™ @  « ö¶?d  Mƒ©“g @  «¡÷¶?d àMݪÉa @  «¢ø¶?d M âE‰ @  «£ù¶?d `M8ÔD @  «¤ú¶?d  M!Fã @  «¥û¶?d àMÞ2ÿ @  «¦ü¶?d MCv_ @  «§ý¶?d `M}»ú @  «¨þ¶?d  M]Nøþ @  «©ÿ¶?d àMi[íG @  «ª·?d M¹a¯ @  ««·?d `MŒ%`; @  «¬·?d  M¬ÐbÅuÐ M @  «­·?d àMjÃÛä @  «®·?d 8 MÈ‚ @  «¯·?d x Mˆ¤ža @  «°·?d ¸ M¨QœŸ @  «±·?d ø MöRÆ™ @  «²·?d 8!M&Jq @  «³ ·?d x!M,Kå @  «´ ·?d ¸!M3ÙI @  «µ ·?d ø!MõÊð: @  «¶ ·?d 8"MhŽPû @  «· ·?d x"MVCõø @  «¸·?d ¸"Mv¶÷ @  «¹·?d ø"MMåÏì @  «º·?d 8#M­C @  «»·?d x#M¨›B @  «¼·?d ¸#Mˆn@n @  «½·?d ø#MN}ùO @  «¾·?d 8$MW3 @ @  «¿·?d x$M{^° @  «À·?d ¸$M[«² @  «Á·?d ø$M¨èy @  «Â·?d 8%MÕàd‘ @  «Ã·?d x%MàÖe @  «Ä·?d ¸%MÀ#gû @  «Å·?d ø%M0ÞÚ @  «Æ·?d 8&M›t~ @  «Ç·?d x&M¥¹Û @  «È·?d ¸&M…LÙæ @  «É·?d ø&M#¨ØÐ @  «Ê ·?d 8'MóàT8 @  «Ë!·?d x'MÆÖU¬ @  «Ì"·?d ¸'Mæ#WR @  «Í#·?d ø'M 0îs @  «Î$·?d 8(MÏbn @  «Ï%·?d x(M‡£ù @  «Ð&·?d ¸(M§Vûs @  «Ñ'·?d ø(MùU¡u @  «Ò(·?d 8)M)- @  «Ó)·?d x)M+,  @  «Ô*·?d ¸)M<Þ.÷ @  «Õ+·?d ø)MúÍ—Ö @  «Ö,·?d 8*Mg‰7 @  «×-·?d x*MYD’ @  «Ø.·?d ¸*My±ê @  «Ù/·?d ø*MB⨠@  «Ú0·?d 8+M’ª$è @  «Û1·?d x+M§œ%| @  «Ü2·?d ¸+M‡i'‚ @  «Ý3·?d ø+MAzž£ @  «Þ4·?d 8,MX4m¬ @  «ß5·?d x,MÚ^Ñÿ @  «à6·?d ¸,Mú«Ó @  «á7·?d ø,M¤¨‰ @  «â8·?d€ 8-Mò¶­V @  ¬9·?d x-M&Áäë @  ¬:·?d ¸-M4æ @  ¬;·?d ø-Mn¤Ù @  ¬<·?d 8.M˜* @  ¬=·?d x.MhUþa @  ¬>·?d ¸.MH üŸ @  ¬?·?d ø.MЦ·Â @  ¬@·?d 8/Mî;* @  ¬ A·?d x/Mð‘ÁS @  ¬ B·?d ¸/MÐdí @  ¬ C·?d ø/MÓ>a @  ¬ D·?d 80Mmà=Ó @  ¬ E·?d x0MŸÇª @  ¬F·?d ¸0M½jÅT @  ¬G·?d ø0M€zþÈ @  ¬H·?d 81MP2r  @  ¬I·?d x1M MˆY @  ¬J·?d ¸1M€¸Š§ @  ¬K·?d ø1MƒâÈk @  ¬L·?d 82M¦hª @  ¬M·?d x2MîÙ’Ó @  ¬N·?d ¸2MÎ,- @  ¬O·?d ø2M;Í÷½ @  ¬P·?d 83Më…{U @  ¬Q·?d x3Mú, @  ¬R·?d ¸3M;ƒÒ @  ¬S·?d ø3M8UÁ @  ¬T·?d 84M!2 @  ¬U·?d x4MÑdÈh @  ¬V·?d ¸4Mñ‘Ê– @  ¬W·?d ø4Mֺ݇ @  ¬ X·?d 85M ÏZR @  ¬!Y·?d x5Mý° + @  ¬"Z·?d ¸5MÝE¢Õ @  ¬#[·?d ø5MÞà @  ¬$\·?d 86MC[@Ø @  ¬%]·?d x6M³$º¡ @  ¬&^·?d ¸6M“Ѹ_ @  ¬'_·?d ø6Mû‡æ @  ¬(`·?d 87M+Ïjû @  ¬)a·?d x7MÛ°‚ @  ¬*b·?d ¸7MûE’| @  ¬+c·?d ø7Møа @  ¬,d·?d 88MÌà\­ @  ¬-e·?d x8M<Ÿ¦Ô @  ¬.f·?d ¸8Mj¤* @  ¬/g·?d ø8M!zŸ¶ @  ¬0h·?d 89Mñ2^ @  ¬1i·?d x9MMé' @  ¬2j·?d ¸9M!¸ëÙ @  ¬3k·?d ø9M"â© @  ¬4l·?d 8:M¿¦ Ô @  ¬5m·?d x:MOÙó­ @  ¬6n·?d ¸:Mo,ñS @  ¬7o·?d ø:MšÍ–à @  ¬8p·?d 8;MJ…+ @  ¬9q·?d x;MºúàR @  ¬:r·?d ¸;Mšâ¬ @  ¬;s·?d ø;M™U ` @  ¬<t·?d 8v·?d ¸ML\'4 @  ¬E}·?d x>M¼#ÝM @  ¬F~·?d ¸>MœÖß³ @  ¬G·?d ø>MÀ| @  ¬H€·?d 8?MÉ^L” @  ¬I·?d x?M9!¶í @  ¬J‚·?duÐ@M7 ¸?MÔ´ @  ¬Kƒ·?d ø?MØ'  @  ¬L„·?d P@M‹«6 @  ¬M…·?d @MIDo @  ¬N†·?d Ð@MËS± @  ¬O‡·?d AM¤Èó @  ¬Pˆ·?d PAM&YäÅ @  ¬Q‰·?d AMtB œ @  ¬RŠ·?d ÐAMöÓB @  ¬S‹·?d BMê\é‘ @  ¬TŒ·?d PBMhÍþO @  ¬U·?d BM:Ö @  ¬VŽ·?d ÐBM¸GÈ @  ¬W·?d CMún @  ¬X·?d PCMîí° @  ¬Y‘·?d CMÏõé @  ¬Z’·?d ÐCMMd7 @  ¬[“·?d DMÕá³* @  ¬\”·?d PDMWp¤ô @  ¬]•·?d DMkK­ @  ¬^–·?d ÐDM‡ú\s @  ¬_—·?d EMù5Ûi @  ¬`˜·?d PEM{¤Ì· @  ¬a™·?d EM)¿#î @  ¬bš·?d ÐEM«.40 @  ¬c›·?d FM·¡Áã @  ¬dœ·?d PFM50Ö= @  ¬e·?d FMg+9d @  ¬fž·?d ÐFMåº.º @  ¬gŸ·?d GMß5ëÀ @  ¬h ·?d PGM]¤ü @  ¬i¡·?d GM¿G @  ¬j¢·?d ÐGM.™ @  ¬k£·?d HM8Ý– @  ¬l¤·?d PHMº‹ÊH @  ¬m¥·?d HMè% @  ¬n¦·?d ÐHMj2Ï @  ¬o§·?d IMÈ’e @  ¬p¨·?d PIM‡Y…» @  ¬q©·?d IMÕBjâ @  ¬rª·?d ÐIMWÓ}< @  ¬s«·?d JMK\ˆï @  ¬t¬·?d PJMÉÍŸ1 @  ¬u­·?d JM›Öph @  ¬v®·?d ÐJMGg¶ @  ¬w¯·?d KM¾› @  ¬x°·?d PKM<îŒÎ @  ¬y±·?d KMnõc— @  ¬z²·?d ÐKMìdtI @  ¬{³·?d LMtáÒT @  ¬|´·?d PLMöpÅŠ @  ¬}µ·?d LM¤k*Ó @  ¬~¶·?d ÐLM&ú=  @  ¬··?d MMdŒ´ @  ¬€¸·?d PMM—õ›j @  ¬¹·?d MMÅît3 @  ¬‚º·?d ÐMMGcí @  ¬ƒ»·?d NM[ð–> @  ¬„¼·?d PNMÙaà @  ¬…½·?d NM‹zn¹ @  ¬†¾·?d ÐNM ëyg @  ¬‡¿·?d OMÃ4©  @  ¬ˆÀ·?d POMA¥¾Ò @  ¬‰Á·?d OM¾Q‹ @  ¬Š·?d ÐOM‘/FU @  ¬‹÷?d PM®:¯õ @  ¬ŒÄ·?d PPM,«¸+ @  ¬Å·?d PM~°Wr @  ¬ŽÆ·?d ÐPMü!@¬ @  ¬Ç·?d QM“èà @  ¬È·?d PQMy÷Ø @  ¬‘É·?d QMCb @  ¬’Ê·?d ÐQMÁó_ @  ¬“Ë·?d RMÝ|úŒ @  ¬”Ì·?d PRM_ííR @  ¬•Í·?d RM ö  @  ¬–η?d ÐRMgÕ @  ¬—Ï·?d SM(_és @  ¬˜з?d PSMªÎþ­ @  ¬™Ñ·?d SMøÕô @  ¬šÒ·?d ÐSMzD* @  ¬›Ó·?d TMâÁ 7 @  ¬œÔ·?d PTM`P·é @  ¬Õ·?d TM2KX° @  ¬žÖ·?d ÐTM°ÚOn @  ¬Ÿ×·?d UMÎÈt @  ¬ Ø·?d PUML„ߪ @  ¬¡Ù·?d UMŸ0ó @  ¬¢Ú·?d ÐUMœ'- @  ¬£Û·?d VM€Òþ @  ¬¤Ü·?d PVMÅ  @  ¬¥Ý·?d VMP *y @  ¬¦Þ·?d ÐVMÒš=§ @  ¬§ß·?d WMèøÝ @  ¬¨à·?d PWMj„ï @  ¬©á·?d WM8ŸZ @  ¬ªâ·?d ÐWMº„ @  ¬«ã·?d XM:΋ @  ¬¬ä·?d PXM«ÙU @  ¬­å·?d XMß°6  @  ¬®æ·?d ÐXM]!!Ò @  ¬¯ç·?d YM2èx @  ¬°è·?d PYM°y–¦ @  ¬±é·?d YMâbyÿ @  ¬²ê·?d ÐYM`ón! @  ¬³ë·?d ZM||›ò @  ¬´ì·?d PZMþíŒ, @  ¬µí·?d ZM¬öcu @  ¬¶î·?d ÐZM.gt« @  ¬·ï·?d [M‰_ˆ  @  ¬¸ð·?d P[M ΟÓ @  ¬¹ñ·?d [MYÕpŠ @  ¬ºò·?d Ð[MÛDgT @  ¬»ó·?d \MCÁÁI @  ¬¼ô·?d P\MÁPÖ— @  ¬½õ·?d \M“K9Î @  ¬¾ö·?d Ð\MÚ. @  ¬¿÷·?d ]MÁ¯˜ @  ¬Àø·?d P]MCƒ¸F @  ¬Áù·?d ]M˜W @  ¬Âú·?d Ð]M“ @Á @  ¬Ãû·?d ^M†µ @  ¬Äü·?d P^M ¢Ì @  ¬Åý·?d ^M_ M• @  ¬Æþ·?d Ð^MÝZK @  ¬Çÿ·?d _MкQ @  ¬È¸?d P_MA­ @  ¬É¸?d _M@ZBÖ @  ¬uÐ`Mʸ?d Ð_Mb²Ý @  ¬Ë¸?d (`M?QRW @  ¬Ì¸?d h`M½ÀE‰ @  ¬Í¸?d ¨`Mï۪Р@  ¬Î¸?d è`MmJ½ @  ¬Ï¸?d (aMƒ¤ @  ¬Ð¸?d haM€ z @  ¬Ñ ¸?d ¨aMÒ å# @  ¬Ò ¸?d èaMP˜òý @  ¬Ó ¸?d (bML. @  ¬Ô ¸?d hbMΆð @  ¬Õ ¸?d ¨bMœÿ© @  ¬Ö¸?d èbM èw @  ¬×¸?d (cM¹4Ñ @  ¬Ø¸?d hcM;¥ @  ¬Ù¸?d ¨cMi¾ìV @  ¬Ú¸?d ècMë/ûˆ @  ¬Û¸?d (dMsª]• @  ¬Ü¸?d hdMñ;JK @  ¬Ý¸?d ¨dM£ ¥ @  ¬Þ¸?d èdM!±²Ì @  ¬ß¸?d (eM_~5Ö @  ¬à¸?d heMÝï" @  ¬á¸?d ¨eMôÍQ @  ¬â¸?d€ èeMy¦Æ) @  ­¸?d (fM„h{Ó @  ­¸?d hfMùl  @  ­¸?d ¨fM‘«x¹ @  ­¸?d èfM:og @  ­¸?d (gMçõg @  ­ ¸?d hgMe–â¹ @  ­!¸?d ¨gMù?Rš @  ­"¸?d ègM{®ED @  ­ #¸?d (hM Óg¦ @  ­ $¸?d hhM‰Bpx @  ­ %¸?d ¨hMdÌ @  ­ &¸?d èhMœs @  ­ '¸?d (iM[²" @  ­(¸?d hiMÊ¥ü @  ­)¸?d ¨iM#Â+? @  ­*¸?d èiM¡S<á @  ­+¸?d (jMx•2ß @  ­,¸?d hjMú% @  ­-¸?d ¨jMmV1µ @  ­.¸?d èjMïÇ&k @  ­/¸?d (kM†M…· @  ­0¸?d hkMÜ’i @  ­1¸?d ¨kM˜u"J @  ­2¸?d èkMä5” @  ­3¸?d (lMG(hd @  ­4¸?d hlMŹº @  ­5¸?d ¨lMRëk @  ­6¸?d èlMÐz|Ð @  ­7¸?d (mMÜ ½à @  ­8¸?d hmM^1ª> @  ­9¸?d ¨mM~?M @  ­ :¸?d èmMü®“ @  ­!;¸?d (nM%h­ @  ­"<¸?d hnM§ù s @  ­#=¸?d ¨nM0«Ç @  ­$>¸?d ènM²: @  ­%?¸?d (oM¶W @  ­&@¸?d hoM4Æ–Ö @  ­'A¸?d ¨oM¨o&õ @  ­(B¸?d èoM*þ1+ @  ­)C¸?d (pMТ#f @  ­*D¸?d hpMR34¸ @  ­+E¸?d ¨pMÅa  @  ­,F¸?d èpMGð7Ò @  ­-G¸?d (qMK*öâ @  ­.H¸?d hqMÉ»á< @  ­/I¸?d ¨qMø³oÿ @  ­0J¸?d èqMz"x! @  ­1K¸?d (rM£äv @  ­2L¸?d hrM!uaÁ @  ­3M¸?d ¨rM¶'uu @  ­4N¸?d èrM4¶b« @  ­5O¸?d (sM]<Áw @  ­6P¸?d hsMß­Ö© @  ­7Q¸?d ¨sMCfŠ @  ­8R¸?d èsMÁ•qT @  ­9S¸?d (tMœY,¤ @  ­:T¸?d htMcHH @  ­;€U¸?d ¨tMô\² @  ­<€V¸?d ètMv‹Kl @  ­=€W¸?d (uMzQŠ\ @  ­>€X¸?d huMøÀ‚ @  ­?€Y¸?d ¨uMvÉ2c @  ­@€Z¸?d èuMôX%½ @  ­A€[¸?d (vM-ž+ƒ @  ­B€\¸?d hvM¯<] @  ­C€]¸?d ¨vM8](é @  ­D€^¸?d èvMºÌ?7 @  ­E€_¸?d (wMNñ¥7 @  ­F€`¸?d hwMÌ`²é @  ­G€a¸?d ¨wMPÉÊ @  ­H€b¸?d èwMÒX @  ­I€c¸?d (xM¢%7ö @  ­J€d¸?d hxM ´ ( @  ­K€e¸?d ¨xM·æ4œ @  ­L€f¸?d èxM5w#B @  ­M€g¸?d (yM9­âr @  ­N€h¸?d hyM»<õ¬ @  ­O€i¸?d ¨yMŠ4{o @  ­P€j¸?d èyM¥l± @  ­Q€k¸?d (zMÑcb @  ­R€l¸?d hzMSòuQ @  ­S€m¸?d ¨zMÄ aå @  ­T€n¸?d èzMF1v; @  ­U€o¸?d ({M/»Õç @  ­V€p¸?d h{M­*Â9 @  ­W€q¸?d ¨{M1ƒr @  ­X€r¸?d è{M³eÄ @  ­Y€s¸?d (|MîÞ84 @  ­Z€t¸?d h|MlO/ê @  ­[€u¸?d ¨|Mû;^ @  ­\€v¸?d è|MyŒ,€ @  ­]€w¸?d (}MuVí° @  ­^€x¸?d h}M÷Çún @  ­_€y¸?d ¨}M×ÉS @  ­`€z¸?d è}MUXDà @  ­a€{¸?d (~MŒžJý @  ­b€|¸?d h~M]# @  ­c€}¸?d ¨~M™]I— @  ­d€~¸?d è~MÌ^I @  ­e€¸?d (Mg…Ê @  ­f€€¸?d hM€ö’ @  ­g€¸?d ¨MuЀM'_"7 @  ­h€‚¸?d èMãNF• @  ­iƒ¸?d @€MÉr  @  ­j„¸?d €€Mé‡à @  ­k…¸?d À€Mܱ t @  ­l†¸?d M ù…œ @  ­m‡¸?d @MRúßš @  ­nˆ¸?d €MrÝd @  ­o‰¸?d ÀMácF‡ @  ­pЏ?d ‚M|'æF @  ­q‹¸?d @‚Mº4_g @  ­rŒ¸?d €‚MšÁ]™ @  ­s¸?d À‚M¯÷\  @  ­tޏ?d ƒM¿Ðå @  ­u¸?d @ƒMDìè @  ­v¸?d €ƒMdêñ @  ­w‘¸?d ÀƒMZÔOò @  ­x’¸?d „MCš¼ý @  ­y“¸?d @„M…‰Ü @  ­z”¸?d €„M¥|" @  ­{•¸?d À„MJ¶ @  ­|–¸?d …M@Š^ @  ­}—¸?d @…MÐX @  ­~˜¸?d €…M>ôÒ¦ @  ­™¸?d À…MñÏXV @  ­€š¸?d †Ml‹ø— @  ­›¸?d @†Mª˜A¶ @  ­‚œ¸?d €†MŠmCH @  ­ƒ¸?d À†M¿[BÜ @  ­„ž¸?d ‡MoÎ4 @  ­…Ÿ¸?d @‡MÉ÷Ï @  ­† ¸?d €‡MéÍü @  ­‡¡¸?d À‡M×Ïhÿ @  ­ˆ¢¸?d ˆMã0äâ @  ­‰£¸?d @ˆM%#]à @  ­Š¤¸?d €ˆMÖ_= @  ­‹¥¸?d ÀˆM0à^© @  ­Œ¦¸?d ‰Mà¨ÒA @  ­§¸?d @‰M¾«ˆG @  ­Ž¨¸?d €‰Mž^й @  ­©¸?d À‰M 2Z @  ­ª¸?d ŠMv±› @  ­‘«¸?d @ŠMVeº @  ­’¬¸?d €ŠMv D @  ­“­¸?d ÀŠMC¦ Ð @  ­”®¸?d ‹M“î‡8 @  ­•¯¸?d @‹M¨½¿Ò @  ­–°¸?d €‹MˆH½, @  ­—±¸?d À‹M¶…/ @  ­˜²¸?d ŒM¯Ëë  @  ­™³¸?d @ŒMiØR @  ­š´¸?d €ŒMI-Pÿ @  ­›µ¸?d ÀŒM|Qk @  ­œ¶¸?d M¬S݃ @  ­·¸?d @MòP‡… @  ­ž¸¸?d €MÒ¥…{ @  ­Ÿ¹¸?d ÀMPÏ9( @  ­ º¸?d ŽMÍ‹™é @  ­¡»¸?d @ŽM ˜ È @  ­¢¼¸?d €ŽM+m"6 @  ­£½¸?d ÀŽM[#¢ @  ­¤¾¸?d MίJ @  ­¥¿¸?d @M˜§»m @  ­¦À¸?d €M¸R¹“ @  ­§Á¸?d ÀM†Ÿ @  ­¨¸?d M8A " @  ­©ø?d @MþR @  ­ªĸ?d €MÞ§ý @  ­«Ÿ?d ÀMë‘i @  ­¬Ƹ?d ‘M;Ù– @  ­­Ǹ?d @‘MeÚ̇ @  ­®ȸ?d €‘ME/Îy @  ­¯ɸ?d À‘MÖCUš @  ­°ʸ?d ’MKõ[ @  ­±˸?d @’MLz @  ­²̸?d €’M­áN„ @  ­³͸?d À’M˜×O @  ­´θ?d “MHŸÃø @  ­µϸ?d @“MsÌû @  ­¶и?d €“MS9ùì @  ­·Ѹ?d À“Mmô\ï @  ­¸Ò¸?d ”Mtº¯à @  ­¹Ó¸?d @”M²©Á @  ­ºÔ¸?d €”M’\? @  ­»Õ¸?d À”M§j« @  ­¼Ö¸?d •Mw"™C @  ­½׸?d @•M)!ÃE @  ­¾ظ?d €•M ÔÁ» @  ­¿Ù¸?d À•M%¹{z @  ­ÀÚ¸?d –M¸ýÛ» @  ­ÁÛ¸?d @–M~îbš @  ­Âܸ?d €–M^`d @  ­Ãݸ?d À–Mk-að @  ­ÄÞ¸?d —M»eí @  ­Å߸?d @—Mì. @  ­Æà¸?d €—M=tîÐ @  ­Çá¸?d À—M¹KÓ @  ­Èâ¸?d ˜M7FÇÎ @  ­Éã¸?d @˜MñU~ï @  ­Êä¸?d €˜MÑ | @  ­Ëå¸?d À˜Mä–}… @  ­Ìæ¸?d ™M4Þñm @  ­Íç¸?d @™MjÝ«k @  ­Îè¸?d €™MJ(©• @  ­Ïé¸?d À™MÙD2v @  ­Ðê¸?d šMD’· @  ­Ñë¸?d @šM‚+– @  ­Òì¸?d €šM¢æ)h @  ­Óí¸?d ÀšM—Ð(ü @  ­Ôî¸?d ›MG˜¤ @  ­Õï¸?d @›M|Ëœþ @  ­Öð¸?d €›M\>ž @  ­×ñ¸?d À›Mbó; @  ­Øò¸?d œM{½È  @  ­Ùó¸?d @œM½®q- @  ­Úô¸?d €œM[sÓ @  ­Ûõ¸?d ÀœM¨mrG @  ­Üö¸?d Mx%þ¯ @  ­Ý÷¸?d @M&&¤© @  ­Þø¸?d €MÓ¦W @  ­ßù¸?d ÀM„¹ @  ­àú¸?d žMýºÅ @  ­áû¸?d @žMßîä @  ­âü¸?d€ €žM>\ö @  ®ý¸?d ÀžMê+¿§ @  ®þ¸?d ŸM:c3O @  ®ÿ¸?d @ŸMË?Ý @  ®¹?d €ŸMëÊßå @  ®¹uРM?d ÀŸMµ%œ @  ®¹?d  Mj¾ûú @  ®¹?d X Mb¡ @  ®¹?d ˜ MBê_ @  ® ¹?d Ø M²•å& @  ® ¹?d ¡MbÝiÎ @  ® ¹?d X¡Mù—È% @  ® ¹?d ˜¡MÙbÊÛ @  ®  ¹?d Ø¡M)0¢ @  ® ¹?d ¢M´Yc @  ® ¹?d X¢MYHØ @  ® ¹?d ˜¢M1¬J& @  ® ¹?d Ø¢MÁÓ°_ @  ®¹?d £M›<· @  ®¹?d X£Mïÿ° @  ®¹?d ˜£MÏtýN @  ®¹?d Ø£M? 7 @  ®¹?d ¤M&Eô8 @  ®¹?d X¤M.äc @  ®¹?d ˜¤M @  ®¹?d ؤMþnêä @  ®¹?d ¥M.&f  @  ®¹?d X¥MµlÇç @  ®¹?d ˜¥M•™Å @  ®¹?d Ø¥Meæ?` @  ®¹?d ¦Mø¢Ÿ¡ @  ®¹?d X¦ML¤`ª @  ® ¹?d ˜¦MlQbT @  ®!¹?d ئMœ.˜- @  ®"¹?d §MLfÅ @  ®#¹?d X§M/Ëî @  ®$ ¹?d ˜§M>ìà @  ®%!¹?d اMÿA™ @  ®&"¹?d ¨M˾š„ @  ®'#¹?d X¨MÃ|ß @  ®($¹?d ˜¨Mãê~! @  ®)%¹?d بM•„X @  ®*&¹?d ©MÃݰ @  ®+'¹?d X©MX—©[ @  ®,(¹?d ˜©Mxb«¥ @  ®-)¹?d Ø©MˆQÜ @  ®.*¹?d ªMYñ @  ®/+¹?d XªM°Y)¦ @  ®0,¹?d ˜ªM¬+X @  ®1-¹?d تM`ÓÑ! @  ®2.¹?d «M°›]É @  ®3/¹?d X«MNžÎ @  ®40¹?d ˜«Mntœ0 @  ®51¹?d Ø«Mž fI @  ®62¹?d ¬M‡E•F @  ®73¹?d X¬Mäs @  ®84¹?d ˜¬M¯qã @  ®95¹?d جM_n‹š @  ®:6¹?d ­M&r @  ®;7¹?d X­Ml¦™ @  ®<8¹?d ˜­M4™¤g @  ®=9¹?d Ø­MÄæ^ @  ®>:¹?d ®MY¢þß @  ®?;¹?d X®MC£F @  ®@<¹?d ˜®McV¸ @  ®A=¹?d Ø®M“)ÿÁ @  ®B>¹?d ¯MCas) @  ®C?¹?d X¯MМœã @  ®D@¹?d ˜¯Mðiž @  ®EA¹?d دMdd @  ®FB¹?d °M¾ÈØÖ @  ®GC¹?d X°M¶i> @  ®HD¹?d ˜°M–œ @  ®â€Þ¹?d€ 0×MµíÑp @  ¯€ß¹?d p×M7c‚ @  ¯€à¹?d °×Môa| @  ¯€á¹?d ð×M"Â`è @  ¯€â¹?d 0ØM=ìõ @  ¯€ã¹?d pØMÐ.UÔ @  ¯€ä¹?d °ØMðÛW* @  ¯€å¹?d ðØMÎò) @  ¯€æ¹?d 0ÙM^~Á @  ¯ €ç¹?d pÙM@]$Ç @  ¯ €è¹?d °ÙM`¨&9 @  ¯ €é¹?d ðÙMUž'­ @  ¯ €ê¹?d 0ÚMÈÚ‡l @  ¯ €ë¹?d pÚMÉ>M @  ¯€ì¹?d °ÚM.<<³ @  ¯€í¹?d ðÚM½P§P @  ¯€î¹?d 0ÛMm+¸ @  ¯€ï¹?d pÛMVKR @  ¯€ð¹?d °ÛMv¾¬ @  ¯€ñ¹?d ðÛMCˆ8 @  ¯€ò¹?d 0ÜMZÆã7 @  ¯€ó¹?d pÜMœÕZ @  ¯€ô¹?d °ÜM¼ Xè @  ¯€õ¹?d ðÜM‚íýë @  ¯€ö¹?d 0ÝMR¥q @  ¯€÷¹?d pÝM ¦+ @  ¯€ø¹?d °ÝM,S)û @  ¯€ù¹?d ðÝMe(o @  ¯€ú¹?d 0ÞM„!ˆ® @  ¯€û¹?d pÞMB21 @  ¯€ü¹?d °ÞMbÇ3q @  ¯€ý¹?d ðÞMà­" @  ¯ €þ¹?d 0ßM0åÊ @  ¯!€ÿ¹?d pßM¶Ò#V @  ¯"€º?d uÐàM/°ßM–'!¨ @  ¯#€º?d ðßMÞ‘S@ @  ¯$º?d HàMÇ5 ¶ @  ¯%º?d ˆàM£B¡· @  ¯&º?d ÈàM!Ó¶i @  ¯'º?d áMMLj\ @  ¯(º?d HáMÏVŸ‚ @  ¯)º?d ˆáM31Ф @  ¯*º?d ÈáM± Çz @  ¯+ º?d âM›Cqñ @  ¯, º?d HâMÒf/ @  ¯- º?d ˆâM}¥Ê. @  ¯. º?d ÈâMÿ4Ýð @  ¯/ º?d ãM>Ý% @  ¯0º?d HãM¼Êû @  ¯1º?d ˆãM%'ç1 @  ¯2º?d ÈãM§¶ðï @  ¯3º?d äM _ª @  ¯4º?d HäM‹Ît @  ¯5º?d ˆäMï¹®u @  ¯6º?d ÈäMm(¹« @  ¯7º?d åM<‡ž @  ¯8º?d HåMƒ­@ @  ¯9º?d ˆåMÊßf @  ¯:º?d ÈåMý[ȸ @  ¯;º?d æM׸~3 @  ¯<º?d HæMU)ií @  ¯=º?d ˆæM1^Åì @  ¯>º?d ÈæM³ÏÒ2 @  ¯?º?d çMÍ{óÅ @  ¯@º?d HçMOêä @  ¯Aº?d ˆçMKjð  @  ¯B º?d ÈçMÉûçÓ @  ¯C!º?d èMJ£}„ @  ¯D"º?d HèMÈ2jZ @  ¯E#º?d ˆèM¬EÆ[ @  ¯F$º?d ÈèM.ÔÑ… @  ¯G%º?d éMBÀï° @  ¯H&º?d HéMÀQøn @  ¯I'º?d ˆéM<6·H @  ¯J(º?d ÈéM¾§ – @  ¯K)º?d êM”D @  ¯L*º?d HêMÕà @  ¯M+º?d ˆêMr¢­Â @  ¯N,º?d ÈêMð3º @  ¯O-º?d ëM1†ºÉ @  ¯P.º?d HëM³­ @  ¯Q/º?d ˆëM* €Ý @  ¯R0º?d ÈëM¨±— @  ¯S1º?d ìMXrF @  ¯T2º?d HìM„Ée˜ @  ¯U3º?d ˆìMà¾É™ @  ¯V4º?d ÈìMb/ÞG @  ¯W5º?d íM;àr @  ¯X6º?d HíMŒª÷¬ @  ¯Y7º?d ˆíMp͸Š @  ¯Z8º?d ÈíMò\¯T @  ¯[9º?d îMØ¿ß @  ¯\:º?d HîMZ. @  ¯];º?d ˆîM>Y¢ @  ¯^<º?d ÈîM¼ÈµÞ @  ¯_=º?d ïMl{’» @  ¯`>º?d HïMîê…e @  ¯a?º?d ˆïM:„b @  ¯b@º?d ÈïM˜«“¼ @  ¯cAº?d ðM‘Ò9D @  ¯dBº?d HðMC.š @  ¯eCº?d ˆðMw4‚› @  ¯fDº?d ÈðMõ¥•E @  ¯gEº?d ñM™±«p @  ¯hFº?d HñM ¼® @  ¯iGº?d ˆñMçGóˆ @  ¯jHº?d ÈñMeÖäV @  ¯kIº?d òMO5RÝ @  ¯lJº?d HòMͤE @  ¯mKº?d ˆòM©Óé @  ¯nLº?d ÈòM+BþÜ @  ¯oMº?d óMê÷þ  @  ¯pNº?d HóMhfé× @  ¯qOº?d ˆóMñQÄ @  ¯rPº?d ÈóMsÀÓà @  ¯sQº?d ôMÝ)6† @  ¯tRº?d HôM_¸!X @  ¯uSº?d ˆôM;ÏY @  ¯vTº?d ÈôM¹^š‡ @  ¯wUº?d õMÕJ¤² @  ¯xVº?d HõMWÛ³l @  ¯yWº?d ˆõM«¼üJ @  ¯zXº?d ÈõM)-ë” @  ¯{Yº?d öMÎ] @  ¯|Zº?d HöM_JÁ @  ¯}[º?d ˆöMå(æÀ @  ¯~\º?d ÈöMg¹ñ @  ¯]º?d ÷Mú[àØ @  ¯€^º?d H÷MxÊ÷ @  ¯_º?d ˆ÷M|Jã @  ¯‚`º?d È÷MþÛôÎ @  ¯ƒaº?d øM}ƒn™ @  ¯„bº?d HøMÿyG @  ¯…cº?d ˆøM›eÕF @  ¯†dº?d ÈøMô˜ @  ¯‡eº?d ùMuàü­ @  ¯ˆfº?d HùM÷qës @  ¯‰gº?d ˆùM ¤U @  ¯Šhº?d ÈùM‰‡³‹ @  ¯‹iº?d úM£d @  ¯Œjº?d HúM!õÞ @  ¯kº?d ˆúME‚¾ß @  ¯Žlº?d ÈúMÇ© @  ¯mº?d ûM¦©Ô @  ¯nº?d HûM„7¾  @  ¯‘oº?d ˆûM“À @  ¯’pº?d ÈûMŸ‘„ @  ¯“qº?d üM1xa[ @  ¯”rº?d HüM³év… @  ¯•sº?d ˆüMמڄ @  ¯–tº?d ÈüMUÍZ @  ¯—uº?d ýM9óo @  ¯˜vº?d HýM»Šä± @  ¯™wº?d ˆýMGí«— @  ¯šxº?d ÈýMÅ|¼I @  ¯›yº?d þMïŸ Â @  ¯œzº?d HþMm @  ¯{º?d ˆþM y± @  ¯ž|º?d ÈþM‹è¦Ã @  ¯Ÿ}º?d ÿM[[¦ @  ¯ ~º?d HÿMÙÊ–x @  ¯¡º?d ˆÿM0ÜÃí @  ¯¢uÐN€º?d ÈÿM‹Šæ @  ¯£ º?d N8ÜV» @  ¯¤ ‚º?d `NºMAe @  ¯¥ ƒº?d  NÞ:íd @  ¯¦ „º?d àN\«úº @  ¯§ …º?d N0¿Ä @  ¯¨ †º?d `N².ÓQ @  ¯© ‡º?d  NNIœw @  ¯ª ˆº?d àNÌØ‹© @  ¯« ‰º?d Næ;=" @  ¯¬ Šº?d `Ndª*ü @  ¯­ ‹º?d  N݆ý @  ¯® Œº?d àN‚L‘# @  ¯¯ º?d NCù‘ö @  ¯° Žº?d `NÁh†( @  ¯± º?d  NX_«â @  ¯² º?d àNÚμ< @  ¯³ ‘º?d Nt'Yy @  ¯´ ’º?d `Nö¶N§ @  ¯µ “º?d  N’Á⦠@  ¯¶ ”º?d àNPõx @  ¯· •º?d N|DËM @  ¯¸ –º?d `NþÕÜ“ @  ¯¹ —º?d  N²“µ @  ¯º ˜º?d àN€#„k @  ¯» ™º?d NªÀ2à @  ¯¼ šº?d `N(Q%> @  ¯½ ›º?d  NL&‰? @  ¯¾ œº?d àNηžá @  ¯¿ º?d N°¿ @  ¯À žº?d `N2’¨È @  ¯Á Ÿº?d  N6¼Þ @  ¯  º?d àN´ƒ« @  ¯à ¡º?d N7Û1W @  ¯Ä ¢º?d `NµJ&‰ @  ¯Å £º?d  NÑ=Šˆ @  ¯Æ ¤º?d àNS¬V @  ¯Ç ¥º?d N?¸£c @  ¯È ¦º?d ` N½)´½ @  ¯É §º?d   NANû› @  ¯Ê ¨º?d à NÃßìE @  ¯Ë ©º?d Né• @  ¯Ô ²º?d ` Nù±)K @  ¯Õ ³º?d   NÆ…J @  ¯Ö ´º?d à NW’” @  ¯× µº?d NsC¬¡ @  ¯Ø ¶º?d ` NñÒ» @  ¯Ù ·º?d   N µôY @  ¯Ú ¸º?d à N$㇠@  ¯Û ¹º?d N¥ÇU  @  ¯Ü ºº?d `N'VBÒ @  ¯Ý »º?d  NC!îÓ @  ¯Þ ¼º?d àNÁ°ù  @  ¯ß ½º?d NÞh @  ¯à ¾º?d `N“’ɶ @  ¯á ¿º?d  NgBȱ @  ¯â Àº?d€ àNŽ3 @  ° Áº?d Nf·ÑP @  ° º?d `Nä&ÆŽ @  ° ú?d  NE‘b @  ° ĺ?d àNlj†¼ @  ° ź?d Ne/çó @  ° ƺ?d `Nç¾ð- @  ° Ǻ?d  NÕkàq @  ° Ⱥ?d àNWú÷¯ @  ° ɺ?d N¸PºÉ @  ° ʺ?d `N:Á­ @  ° ˺?d  N›ÿúû @  ° ̺?d àNní% @  ° ͺ?d N»ÈŒj @  ° κ?d `N9Y›´ @  ° Ϻ?d  NÃ}×ä @  ° к?d àNAìÀ: @  ° Ѻ?d N*LÞ’ @  ° Òº?d `N¨ÝÉL @  ° Óº?d  N ãž  @  ° Ôº?d àN‹r‰~ @  ° Õº?d N)Ôè1 @  ° Öº?d `N«Eÿï @  ° ׺?d  N™ï³ @  ° غ?d àNøm @  ° Ùº?d Nô«µ  @  ° Úº?d `Nv:¢Õ @  ° Ûº?d  N×õ9 @  ° ܺ?d àNU•âç @  ° ݺ?d N÷3ƒ¨ @  ° Þº?d `Nu¢”v @  ° ߺ?d  N7ÆJ @  ° àº?d àN¦Ñ” @  °! áº?d NÇ·°. @  °" âº?d `NE&§ð @  °# ãº?d  Näð @  °$ äº?d àNf‰ç @  °% åº?d NÄ/† @  °& æº?d `NF¾‘S @  °' çº?d  Ntk @  °( èº?d àNöú–Ñ @  °) éº?d NPÛ· @  °* êº?d `N›ÁÌi @  °+ ëº?d  N:ÿ›… @  °, ìº?d àN¸nŒ[ @  °- íº?d NÈí @  °. îº?d `N˜YúÊ @  °/ ïº?d  Nb}¶š @  °0 ðº?d àNàì¡D @  °1 ñº?d N‹L¿ì @  °2 òº?d `N ݨ2 @  °3 óº?d  N¨ãÿÞ @  °4 ôº?d àN*rè @  °5 õº?d NˆÔ‰O @  °6 öº?d `N Ež‘ @  °7 ÷º?d  N8ŽÍ @  °8 øº?d àNº™ @  °9 ùº?d NU«Ôu @  °: úº?d `N×:ë @  °; ûº?d  Nv”G @  °< üº?d àNô•ƒ™ @  °= ýº?d NV3âÖ @  °> þº?d `NÔ¢õ @  °? ÿº?d  NžÁµ)uÐ N @  °@ »?d àN%—~" @  °A»?d 8 N&rMã @  °B»?d x N¤ãZ= @  °C»?d ¸ NÝ Ñ @  °D»?d ø N‡L @  °E»?d 8!N%ê{@ @  °F»?d x!N§{lž @  °G»?d ¸!N•®| @  °H»?d ø!N?k @  °I »?d 8"Nø•&z @  °J »?d x"Nz1¤ @  °K »?d ¸"NÛ:fH @  °L »?d ø"NY«q– @  °M »?d 8#Nû Ù @  °N»?d x#Nyœ @  °O»?d ¸#Nƒ¸KW @  °P»?d ø#N)\‰ @  °Q»?d 8$Nj‰B! @  °R»?d x$NèUÿ @  °S»?d ¸$NI& @  °T»?d ø$NË·Í @  °U»?d 8%Nit‚ @  °V»?d x%Në€c\ @  °W»?d ¸%NÙUs @  °X»?d ø%N[ÄdÞ @  °Y»?d 8&N´n)¸ @  °Z»?d x&N6ÿ>f @  °[»?d ¸&N—ÁiŠ @  °\»?d ø&NP~T @  °]»?d 8'N·ö @  °^»?d x'N5gÅ @  °_»?d ¸'NCòZù @  °` »?d ø'NÁcM' @  °a!»?d 8(N‡r, @  °b"»?d x(Nã;C @  °c#»?d ¸(N¤Ýl¯ @  °d$»?d ø(N&L{q @  °e%»?d 8)N„ê> @  °f&»?d x)N{ à @  °g'»?d ¸)N4®¼ @  °h(»?d ø)N¶? b @  °i)»?d 8*NY•G @  °j*»?d x*NÛPÚ @  °k+»?d ¸*Nz:6 @  °l,»?d ø*Nø«è @  °m-»?d 8+NZ q§ @  °n.»?d x+NØœfy @  °o/»?d ¸+N"¸*) @  °p0»?d ø+N )=÷ @  °q1»?d 8,Nˉ#_ @  °r2»?d x,NI4 @  °s3»?d ¸,Nè&cm @  °t4»?d ø,Nj·t³ @  °u5»?d 8-NÈü @  °v6»?d x-NJ€" @  °w7»?d ¸-NxU~ @  °x8»?d ø-NúÄ  @  °y9»?d 8.NnHÆ @  °z:»?d x.N—ÿ_ @  °{;»?d ¸.N6Áô @  °|<»?d ø.N´P* @  °}=»?d 8/Nö~e @  °~>»?d x/N”gi» @  °?»?d ¸/N_ó5 @  °€@»?d ø/NÝbë @  °A»?d 80NR^þ @  °‚B»?d x0N“ÃI  @  °ƒC»?d ¸0N2ýÌ @  °„D»?d ø0N°l  @  °…E»?d 81NÊh] @  °†F»?d x1N[ƒ @  °‡G»?d ¸1N¢Žoß @  °ˆH»?d ø1N x @  °‰I»?d 82Nϵ5g @  °ŠJ»?d x2NM$"¹ @  °‹K»?d ¸2NìuU @  °ŒL»?d ø2Nn‹b‹ @  °M»?d 83NÌ-Ä @  °ŽN»?d x3NN¼ @  °O»?d ¸3N´˜XJ @  °P»?d ø3N6 O” @  °‘Q»?d 84N]©Q< @  °’R»?d x4Nß8Fâ @  °“S»?d ¸4N~ @  °”T»?d ø4Nü—Ð @  °•U»?d 85N^1gŸ @  °–V»?d x5NÜ pA @  °—W»?d ¸5Nîu` @  °˜X»?d ø5Nläwà @  °™Y»?d 86NƒN:¥ @  °šZ»?d x6Nß-{ @  °›[»?d ¸6N áz— @  °œ\»?d ø6N"pmI @  °]»?d 87N€Ö  @  °ž^»?d x7NGØ @  °Ÿ_»?d ¸7NtÒIä @  ° `»?d ø7NöC^: @  °¡a»?d 88N°R?€ @  °¢b»?d x8N2Ã(^ @  °£c»?d ¸8N“ý² @  °¤d»?d ø8Nlhl @  °¥e»?d 89N³Ê # @  °¦f»?d x9N1[ý @  °§g»?d ¸9NŽ¡ @  °¨h»?d ø9N @  °©i»?d 8:NnµT @  °ªj»?d x:Nì$CÇ @  °«k»?d ¸:NM+ @  °¬l»?d ø:NÏ‹õ @  °­m»?d 8;Nm-bº @  °®n»?d x;Nï¼ud @  °¯o»?d ¸;N˜94 @  °°p»?d ø;N— .ê @  °±q»?d 8N"N[Û @  °ºz»?d x>N ßL @  °»{»?d ¸>Náé @  °¼|»?d ø>Nƒp 7 @  °½}»?d 8?N!Ömx @  °¾~»?d x?N£Gz¦ @  °¿»?duÐ@N7 ¸?N–Co‹ @  °À€»?d ø?NÒxU @  °Á»?d P@N¥/Î @  °Â‚»?d @N…e-0 @  °Ãƒ»?d Ð@N†?oü @  °Ä„»?d ANVwã @  °Å…»?d PAN¦m @  °Æ†»?d AN†ý“ @  °Ç‡»?d ÐANLï @  °Èˆ»?d BN‹¾. @  °É‰»?d PBN{wDW @  °ÊŠ»?d BN[‚F© @  °Ë‹»?d ÐBNXØe @  °ÌŒ»?d CNˆˆ @  °Í»?d PCNxïrô @  °ÎŽ»?d CNXp  @  °Ï»?d ÐCNZ)z @  °Ð»?d DNÚu @  °Ñ‘»?d PDNék  @  °Ò’»?d DNÉž"ò @  °Ó“»?d ÐDNÊÄ`> @  °Ô”»?d ENŒìÖ @  °Õ•»?d PENêó¯ @  °Ö–»?d ENÊQ @  °×—»?d ÐENZ·- @  °Ø˜»?d FNÇó±ì @  °Ù™»?d PFN7ŒK• @  °Úš»?d FNyIk @  °Û›»?d ÐFN# § @  °Üœ»?d GNÄk‡O @  °Ý»?d PGN4}6 @  °Þž»?d GNáÈ @  °ßŸ»?d ÐGNÀ8Ô @  °à »?d HNôï´É @  °á¡»?d PHNN° @  °â¢»?d€ HNP¦Pè @  ±£»?d ÐHN²½Z  @  ±¤»?d INbõÖå @  ±¥»?d PINWÃ×q @  ±¦»?d INw6Õ @  ±§»?d ÐIN)5‰ @  ±¨»?d JN´q/H @  ±©»?d PJNмŠK @  ±ª»?d JNªIˆµ @  ± «»?d ÐJNlZ1” @  ± ¬»?d KN¼½| @  ± ­»?d PKN‰$¼è @  ± ®»?d KN©Ñ¾ @  ± ¯»?d ÐKN’‚†ü @  ±°»?d LN‹Ìuó @  ±±»?d PLN î @  ±²»?d LN8Uìî @  ±³»?d ÐLNþFUÏ @  ±´»?d MN.Ù' @  ±µ»?d PMN8س @  ±¶»?d MN;ÍÚM @  ±·»?d ÐMNe΀K @  ±¸»?d NNøŠ Š @  ±¹»?d PNNÆG…‰ @  ±º»?d NN沇w @  ±»»?d ÐNN ¡>V @  ±¼»?d ONðé²¾ @  ±½»?d PONÅß³* @  ±¾»?d ONå*±Ô @  ±¿»?d ÐON³ž¥ó @  ±À»?d PN @A @  ±Á»?d PPN*¥ @  ± »?d PN¯ß§ì @  ±!û?d ÐPNiÌÍ @  ±"Ä»?d QN¹„’% @  ±#Å»?d PQNŒ²“± @  ±$Æ»?d QN¬G‘O @  ±%Ç»?d ÐQNòDËI @  ±&È»?d RNokˆ @  ±'É»?d PRNQÍ΋ @  ±(Ê»?d RNq8Ìu @  ±)Ë»?d ÐRN·+uT @  ±*Ì»?d SNgcù¼ @  ±+Í»?d PSNRUø( @  ±,λ?d SNr úÖ @  ±-Ï»?d ÐSNIóÂ< @  ±.л?d TNP½13 @  ±/Ñ»?d PTNÃѪÐ @  ±0Ò»?d TNã$¨. @  ±1Ó»?d ÐTN%7 @  ±2Ô»?d UNõç @  ±3Õ»?d PUNÀIœs @  ±4Ö»?d UN༞ @  ±5×»?d ÐUN¾¿Ä‹ @  ±6Ø»?d VN#ûdJ @  ±7Ù»?d PVN6ÁI @  ±8Ú»?d VN=Ã÷ @  ±9Û»?d ÐVNûÐz– @  ±:Ü»?d WN+˜ö~ @  ±;Ý»?d PWN®÷ê @  ±<Þ»?d WN>[õ @  ±=ß»?d ÐWN˜¿ô" @  ±>à»?d XN¬@x? @  ±?á»?d PXN€-Âþ @  ±@â»?d XN ØÀ @  ±Aã»?d ÐXNfËy! @  ±Bä»?d YN¶ƒõÉ @  ±Cå»?d PYNƒµô] @  ±Dæ»?d YN£@ö£ @  ±Eç»?d ÐYNýC¬¥ @  ±Fè»?d ZN` d @  ±Gé»?d PZN^Ê©g @  ±Hê»?d ZN~?«™ @  ±Ië»?d ÐZN¸,¸ @  ±Jì»?d [NhdžP @  ±Kí»?d P[N]RŸÄ @  ±Lî»?d [N}§: @  ±Mï»?d Ð[NFô¥Ð @  ±Nð»?d \N_ºVß @  ±Oñ»?d P\NÌÖÍ< @  ±Pò»?d \Nì#Ï @  ±Qó»?d Ð\N*0vã @  ±Rô»?d ]Núxú  @  ±Sõ»?d P]NÏNûŸ @  ±Tö»?d ]Nï»ùa @  ±U÷»?d Ð]N±¸£g @  ±Vø»?d ^N,ü¦ @  ±Wù»?d P^N1¦¥ @  ±Xú»?d ^N2Ĥ[ @  ±Yû»?d Ð^Nô×z @  ±Zü»?d _N$Ÿ‘’ @  ±[ý»?d P_N© @  ±\þ»?d _N1\’ø @  ±uÐ`N]ÿ»?d Ð_N9@¸× @  ±^¼?d (`N‡¸ O @  ±_¼?d h`NÒ± @  ±`¼?d ¨`N%'³â @  ±a¼?d è`Nã4 à @  ±b¼?d (aN3|†+ @  ±c¼?d haNJ‡¿ @  ±d¼?d ¨aN&¿…A @  ±e¼?d èaNx¼ßG @  ±f¼?d (bNåø† @  ±g ¼?d hbNÛ5Ú… @  ±h ¼?d ¨bNûÀØ{ @  ±i ¼?d èbN=ÓaZ @  ±j ¼?d (cNí›í² @  ±k ¼?d hcNØ­ì& @  ±l¼?d ¨cNøXîØ @  ±m¼?d ècNà Ö2 @  ±n¼?d (dNÚE%= @  ±o¼?d hdNI)¾Þ @  ±p¼?d ¨dNiܼ  @  ±q¼?d èdN¯Ï @  ±r¼?d (eN‡‰é @  ±s¼?d heNJ±ˆ} @  ±t¼?d ¨eNjDŠƒ @  ±u¼?d èeN4GÐ… @  ±v¼?d (fN©pD @  ±w¼?d hfN—ÎÕG @  ±x¼?d ¨fN·;×¹ @  ±y¼?d èfNq(n˜ @  ±z¼?d (gN¡`âp @  ±{¼?d hgN”Vãä @  ±|¼?d ¨gN´£á @  ±}¼?d ègNGà, @  ±~ ¼?d (hN&¸l1 @  ±!¼?d hhNéƒæÁ @  ±€"¼?d ¨hNÉvä? @  ±#¼?d èhNe] @  ±‚$¼?d (iNß-Ñö @  ±ƒ%¼?d hiNêÐb @  ±„&¼?d ¨iNÊîÒœ @  ±…'¼?d èiN”툚 @  ±†(¼?d (jN ©([ @  ±‡)¼?d hjN7dX @  ±ˆ*¼?d ¨jN‘¦ @  ±‰+¼?d èjNÑ‚6‡ @  ±Š,¼?d (kNʺo @  ±‹-¼?d hkN4ü»û @  ±Œ.¼?d ¨kN ¹ @  ±/¼?d èkN/Zï @  ±Ž0¼?d (lN6rà @  ±1¼?d hlN¥xé @  ±2¼?d ¨lN…ëý @  ±‘3¼?d èlNCžRÜ @  ±’4¼?d (mN“ÖÞ4 @  ±“5¼?d hmN¦àß  @  ±”6¼?d ¨mN†Ý^ @  ±•7¼?d èmN؇X @  ±–8¼?d (nNER'™ @  ±—9¼?d hnN{Ÿ‚š @  ±˜:¼?d ¨nN[j€d @  ±™;¼?d ènNy9E @  ±š<¼?d (oNM1µ­ @  ±›=¼?d hoNx´9 @  ±œ>¼?d ¨oNXò¶Ç @  ±?¼?d èoNF¢à @  ±ž@¼?d (pN°˜R @  ±ŸA¼?d hpN2ò¢ @  ± B¼?d ¨pN ÿ @  ±¡C¼?d èpNÔÞ @  ±¢D¼?d (qN\•6 @  ±£E¼?d hqN1j”¢ @  ±¤F¼?d ¨qNŸ–\ @  ±¥G¼?d èqNOœÌZ @  ±¦H¼?d (rNÒØl› @  ±§I¼?d hrNìɘ @  ±¨J¼?d ¨rNÌàËf @  ±©K¼?d èrN órG @  ±ªL¼?d (sNÚ»þ¯ @  ±«M¼?d hsNïÿ; @  ±¬N¼?d ¨sNÏxýÅ @  ±­O¼?d èsNô+Å/ @  ±®P¼?d (tNíe6  @  ±¯Q¼?d htN~ ­Ã @  ±°R¼?d ¨tN^ü¯= @  ±±S¼?d ètN˜ï @  ±²T¼?d (uNH§šô @  ±³U¼?d huN}‘›` @  ±´V¼?d ¨uN]d™ž @  ±µW¼?d èuNgØ @  ±¶X¼?d (vNž#cY @  ±·Y¼?d hvN îÆZ @  ±¸Z¼?d ¨vN€Ĥ @  ±¹[¼?d èvNF}… @  ±º\¼?d (wN–@ñm @  ±»]¼?d hwN£vðù @  ±¼^¼?d ¨wNƒƒò @  ±½_¼?d èwN%gó1 @  ±¾`¼?d (xN˜, @  ±¿a¼?d hxN=õÅí @  ±Àb¼?d ¨xNÇ @  ±Ác¼?d èxNÛ~2 @  ±Âd¼?d (yN [òÚ @  ±Ãe¼?d hyN>móN @  ±Äf¼?d ¨yN˜ñ° @  ±Åg¼?d èyN@›«¶ @  ±Æh¼?d (zNÝß w @  ±Çi¼?d hzNã®t @  ±Èj¼?d ¨zNÃ笊 @  ±Ék¼?d èzNô« @  ±Êl¼?d ({NÕ¼™C @  ±Ëm¼?d h{NàŠ˜× @  ±Ìn¼?d ¨{NÀš) @  ±Ío¼?d è{Nû,¢Ã @  ±Îp¼?d (|NâbQÌ @  ±Ïq¼?d h|NqÊ/ @  ±Ðr¼?d ¨|NQûÈÑ @  ±Ñs¼?d è|N—èqð @  ±Òt¼?d (}NG ý @  ±Óu¼?d h}Nr–üŒ @  ±Ôv¼?d ¨}NRcþr @  ±Õw¼?d è}N `¤t @  ±Öx¼?d (~N‘$µ @  ±×y¼?d h~N¯é¡¶ @  ±Øz¼?d ¨~N£H @  ±Ù{¼?d è~NIi @  ±Ú|¼?d (N™G– @  ±Û}¼?d hN¬q— @  ±Ü~¼?d ¨NuЀN'Œ„•ë @  ±Ý¼?d èN_2‹ @  ±Þ€¼?d @€NkáÐÿ @  ±ß¼?d €€NKïyŒ @  ±à‚¼?d À€NÉ~nR @  ±áƒ¼?d N]´LE @  ±â„¼?d€ @Nb¬› @  ²…¼?d €Nhqð @  ²†¼?d ÀNêàçØ @  ²‡¼?d ‚Nnñ, @  ²ˆ¼?d @‚Nìîæò @  ²‰¼?d €‚N¾õ « @  ²м?d À‚N¼?d ÀN$UI @  ²?ü?d ‘Nl+­ @  ²@ļ?d @‘Nî–Äô @  ²CǼ?d ’Nº Ò @  ²Dȼ?d @’N8˜ÅÞ @  ²Eɼ?d €’Njƒ*‡ @  ²Fʼ?d À’Nè=Y @  ²G˼?d “N²j@4 @  ²H̼?d @“N0ûWê @  ²Iͼ?d €“Nbำ @  ²Jμ?d À“Nàq¯m @  ²Kϼ?d ”N…´ˆ» @  ²Lм?d @”N%Ÿe @  ²MѼ?d €”NU>p< @  ²NÒ¼?d À”Nׯgâ @  ²OÓ¼?d •N v$o @  ²PÔ¼?d @•N¢ç3± @  ²QÕ¼?d €•NðüÜè @  ²RÖ¼?d À•NrmË6 @  ²S×¼?d –NöòÝ @  ²Tؼ?d @–NtcÊ @  ²UÙ¼?d €–N&x%E @  ²VÚ¼?d À–N¤é2› @  ²WÛ¼?d —Nþ‘Oö @  ²Xܼ?d @—N|X( @  ²Yݼ?d €—N.·q @  ²ZÞ¼?d À—N¬Š ¯ @  ²[ß¼?d ˜NyIÁ· @  ²\à¼?d @˜NûØÖi @  ²]á¼?d €˜N©Ã90 @  ²^â¼?d À˜N+R.î @  ²_ã¼?d ™NÍJÓ @  ²`ä¼?d @™NO]  @  ²aå¼?d €™N²T @  ²bæ¼?d À™NŸ–¥Š @  ²cç¼?d šN ³~ @  ²dè¼?d @šN™˜¤  @  ²eé¼?d €šN˃Kù @  ²fê¼?d ÀšNI\' @  ²gë¼?d ›Nj!J @  ²hì¼?d @›N‘û6” @  ²ií¼?d €›NÃàÙÍ @  ²jî¼?d À›NAqÎ @  ²kï¼?d œN$´éÅ @  ²lð¼?d @œN¦%þ @  ²mñ¼?d €œNô>B @  ²nò¼?d ÀœNv¯œ @  ²oó¼?d NvE @  ²pô¼?d @NçRÏ @  ²qõ¼?d €NQü½– @  ²rö¼?d ÀNÓmªH @  ²s÷¼?d žNWò¼¼ @  ²tø¼?d @žNÕc«b @  ²uù¼?d €žN‡xD; @  ²vú¼?d ÀžNéSå @  ²wû¼?d ŸN_‘.ˆ @  ²xü¼?d @ŸNÝ9V @  ²yý¼?d €ŸNÖ @  ²zþ¼uРN?d ÀŸN ŠÁÑ @  ²{ÿ¼?d  NLæ= @  ²|½?d X NÝñã @  ²}½?d ˜ N߯º @  ²~½?d Ø N]W d @  ²½?d ¡NöÙ[ú @  ²€½?d X¡NtHL$ @  ²½?d ˜¡N&S£} @  ²‚½?d Ø¡N¤Â´£ @  ²ƒ½?d ¢N ]¢W @  ²„½?d X¢N¢Ìµ‰ @  ²… ½?d ˜¢Nð×ZÐ @  ²† ½?d Ø¢NrFM @  ²‡ ½?d £N(>0c @  ²ˆ ½?d X£Nª¯'½ @  ²‰ ½?d ˜£Nø´Èä @  ²Š½?d Ø£Nz%ß: @  ²‹½?d ¤Nàøì @  ²Œ½?d X¤Nqï2 @  ²½?d ˜¤NÏjk @  ²Ž½?d ؤNMûµ @  ²½?d ¥Nº"T8 @  ²½?d X¥N8³Cæ @  ²‘½?d ˜¥Nj¨¬¿ @  ²’½?d Ø¥Nè9»a @  ²“½?d ¦Nl¦­• @  ²”½?d X¦Nî7ºK @  ²•½?d ˜¦N¼,U @  ²–½?d ئN>½BÌ @  ²—½?d §NdÅ?¡ @  ²˜½?d X§NæT( @  ²™½?d ˜§N´OÇ& @  ²š½?d اN6ÞÐø @  ²›½?d ¨Nã±à @  ²œ ½?d X¨NaŒ¦> @  ²!½?d ˜¨N3—Ig @  ²ž"½?d بN±^¹ @  ²Ÿ#½?d ©NWÙ:„ @  ² $½?d X©NÕH-Z @  ²¡%½?d ˜©N‡S @  ²¢&½?d Ø©NÂÕÝ @  ²£'½?d ªN]Ã) @  ²¤(½?d XªNÌÔ÷ @  ²¥)½?d ˜ªNQ×;® @  ²¦*½?d تNÓF,p @  ²§+½?d «N‰>Q @  ²¨,½?d X«N ¯Fà @  ²©-½?d ˜«NY´©š @  ²ª.½?d Ø«NÛ%¾D @  ²«/½?d ¬N¾à™’ @  ²¬0½?d X¬N½?d دN—Þ±† @  ²»?½?d °N8lõ  @  ²¼@½?d X°Nºýâþ @  ²½A½?d ˜°Nèæ § @  ²¾B½?d ذNjwy @  ²¿C½?d ±N"¯xÖ @  ²ÀD½?d X±N >o @  ²ÁE½?d ˜±Nò%€Q @  ²ÂF½?d رNp´— @  ²ÃG½?d ²Nô+{ @  ²ÄH½?d X²Nvº–¥ @  ²ÅI½?d ˜²N$¡yü @  ²ÆJ½?d زN¦0n" @  ²ÇK½?d ³NüHO @  ²ÈL½?d X³N~Ù‘ @  ²ÉM½?d ˜³N,ÂëÈ @  ²ÊN½?d سN®Sü @  ²ËO½?d ´NË–ÛÀ @  ²ÌP½?d X´NIÌ @  ²ÍQ½?d ˜´N#G @  ²ÎR½?d Ø´N™4™ @  ²ÏS½?d µNnTw @  ²ÐT½?d XµNìÅ`Ê @  ²ÑU½?d ˜µN¾Þ“ @  ²ÒV½?d صN @  ²ÖZ½?d ضNêËaà @  ²×[½?d ·N°³ @  ²Ø\½?d X·N2" S @  ²Ù]½?d ˜·N`9ä  @  ²Ú^½?d Ø·Nâ¨óÔ @  ²Û_½?d ¸N7k’Ì @  ²Ü`½?d X¸Nµú… @  ²Ýa½?d ˜¸NçájK @  ²Þb½?d ظNep}• @  ²ßc½?d ¹Nƒ¯¨ @  ²àd½?d X¹N>v @  ²áe½?d ˜¹NS%á/ @  ²âf½?d€ عN¥wêW @  ³g½?d ºNÀ©´Š @  ³h½?d XºNB8£T @  ³i½?d ˜ºNÕj·à @  ³j½?d غNWû > @  ³k½?d »NÃ1‚) @  ³l½?d X»NA •÷ @  ³m½?d ˜»NÝ %Ô @  ³n½?d Ø»N_˜2  @  ³ o½?d ¼Nÿî1 @  ³ p½?d X¼N}…ùï @  ³ q½?d ˜¼Nê×í[ @  ³ r½?d ؼNhFú… @  ³ s½?d ½NüŒØ’ @  ³t½?d X½N~ÏL @  ³u½?d ˜½NOA @  ³v½?d ؽNÍ„VQ @  ³w½?d ¾NŒR»H @  ³x½?d X¾Nì– @  ³y½?d ˜¾N™‘¸" @  ³z½?d ؾN¯ü @  ³{½?d ¿NÊë @  ³|½?d X¿N [š5 @  ³}½?d ˜¿N‘ò* @uÐÀN  ³~½?d Ø¿Nc=È @  ³½?d 0ÀN¾p;ñ @  ³€½?d pÀN<á,/ @  ³½?d °ÀN«³8› @  ³‚½?d ðÀN)"/E @  ³ƒ½?d 0ÁN½è R @  ³„½?d pÁN?yŒ @  ³…½?d °ÁNw³ÿ @  ³ †½?d ðÁNæ¤! @  ³!‡½?d 0ÂNÜ0I8 @  ³"ˆ½?d pÂN^¡^æ @  ³#‰½?d °ÂNÉóJR @  ³$н?d ðÂNKb]Œ @  ³%‹½?d 0ÃNߨ› @  ³&Œ½?d pÃN]9hE @  ³'½?d °ÃNÁØf @  ³(޽?d ðÃNCϸ @  ³)½?d 0ÄNム@  ³*½?d pÄNa] @  ³+‘½?d °ÄNöNé @  ³,’½?d ðÄNtß7 @  ³-“½?d 0ÅNà%  @  ³.”½?d pÅNb„2þ @  ³/•½?d °ÅNSŒ¼= @  ³0–½?d ðÅNÑ«ã @  ³1—½?d 0ÆNËFú @  ³2˜½?d pÆNZQ$ @  ³3™½?d °ÆN…E @  ³4š½?d ðÆN™RN @  ³5›½?d 0ÇN“SpY @  ³6œ½?d pÇNÂg‡ @  ³7½?d °ÇNkפ @  ³8ž½?d ðÇNúÀz @  ³9Ÿ½?d 0ÈNpZ @  ³: ½?d pÈNáMQ @  ³;¡½?d °ÈN ³Yå @  ³<¢½?d ðÈNˆ"N; @  ³=£½?d 0ÉNèl, @  ³>¤½?d pÉNžy{ò @  ³?¥½?d °ÉNpÔ @  ³@¦½?d ðÉN’áÃÍ @  ³A§½?d 0ÊNÓ7.Ô @  ³B¨½?d pÊNQ¦9  @  ³C©½?d °ÊNÆô-¾ @  ³Dª½?d ðÊNDe:` @  ³E«½?d 0ËNЯw @  ³F¬½?d pËNR>© @  ³G­½?d °ËNΗ¿Š @  ³H®½?d ðËNL¨T @  ³I¯½?d 0ÌNìŠto @  ³J°½?d pÌNnc± @  ³K±½?d °ÌNùIw @  ³L²½?d ðÌN{Ø`Û @  ³M³½?d 0ÍNïBÌ @  ³N´½?d pÍNmƒU @  ³Oµ½?d °ÍN\‹ÛÑ @  ³P¶½?d ðÍNÞÌ @  ³Q·½?d 0ÎNŸÌ! @  ³R¸½?d pÎN]6È @  ³S¹½?d °ÎNŠ"| @  ³Tº½?d ðÎNž5¢ @  ³U»½?d 0ÏNœTµ @  ³V¼½?d pÏNÅk @  ³W½½?d °ÏN‚l°H @  ³X¾½?d ðÏNý§– @  ³Y¿½?d 0ÐNjÝ @  ³ZÀ½?d pÐNè— @  ³[Á½?d °ÐNÅ· @  ³\½?d ðÐNýT i @  ³]ý?d 0ÑNiž.~ @  ³^Ľ?d pÑNë9  @  ³_Ž?d °ÑNËÓ @  ³`ƽ?d ðÑNI‡  @  ³aǽ?d 0ÒNFj @  ³bȽ?d pÒNŠ×}Ê @  ³cɽ?d °ÒN…i~ @  ³dʽ?d ðÒNŸ~  @  ³e˽?d 0ÓN Þ\· @  ³f̽?d pÓN‰OKi @  ³gͽ?d °ÓNæûJ @  ³hν?d ðÓN—wì” @  ³iϽ?d 0ÔN7û0¯ @  ³jн?d pÔNµj'q @  ³kѽ?d °ÔN"83Å @  ³lÒ½?d ðÔN ©$ @  ³mÓ½?d 0ÕN4c  @  ³nÔ½?d pÕN¶òÒ @  ³oÕ½?d °ÕN‡úŸ @  ³pÖ½?d ðÕNkˆÏ @  ³q×½?d 0ÖND½eÖ @  ³rؽ?d pÖNÆ,r @  ³sÙ½?d °ÖNQ~f¼ @  ³tÚ½?d ðÖNÓïqb @  ³uÛ½?d 0×NG%Su @  ³vܽ?d p×NÅ´D« @  ³wݽ?d °×NYôˆ @  ³xÞ½?d ð×NÛŒãV @  ³yß½?d 0ØNËy£ @  ³zà½?d pØNI—n} @  ³{á½?d °ØNÞÅzÉ @  ³|â½?d ðØN\Tm @  ³}ã½?d 0ÙNÈžO @  ³~ä½?d pÙNJXÞ @  ³å½?d °ÙN'PÇ @  ³€æ½?d ðÙN¥ÁÐÐ @  ³ç½?d 0ÚNä=É @  ³‚è½?d pÚNf†* @  ³ƒé½?d °ÚNñÔ>£ @  ³„ê½?d ðÚNsE)} @  ³…ë½?d 0ÛNç j @  ³†ì½?d pÛNe´ @  ³‡í½?d °ÛNù·¬— @  ³ˆî½?d ðÛN{&»I @  ³‰ï½?d 0ÜNÛªgr @  ³Šð½?d pÜNY;p¬ @  ³‹ñ½?d °ÜNÎid @  ³Œò½?d ðÜNLøsÆ @  ³ó½?d 0ÝNØ2QÑ @  ³Žô½?d pÝNZ£F @  ³õ½?d °ÝNk«ÈÌ @  ³ö½?d ðÝNé:ß @  ³‘÷½?d 0ÞN¨ì2  @  ³’ø½?d pÞN*}%Õ @  ³“ù½?d °ÞN½/1a @  ³”ú½?d ðÞN?¾&¿ @  ³•û½?d 0ßN«t¨ @  ³–ü½?d pßN)åv @  ³—ý½?d uÐàN/°ßNµL£U @  ³˜þ½?d ðßN7Ý´‹ @  ³™ÿ½?d HàN*ßÝ? @  ³š¾?d ˆàN *ßÁ @  ³›¾?d ÈàN?ÞU @  ³œ¾?d áNïTR½ @  ³¾?d HáN)Gëœ @  ³ž¾?d ˆáN ²éb @  ³Ÿ¾?d ÈáN‹ØU1 @  ³ ¾?d âNœõð @  ³¡¾?d HâNHŸ¯ö @  ³¢¾?d ˆâNhj­ @  ³£ ¾?d ÈâN]\¬œ @  ³¤ ¾?d ãN t @  ³¥ ¾?d HãNK™U @  ³¦ ¾?d ˆãNkò›« @  ³§ ¾?d ÈãNU?>¨ @  ³¨¾?d äNLqͧ @  ³©¾?d HäNw"õM @  ³ª¾?d ˆäNW×÷³ @  ³«¾?d ÈäNbáö' @  ³¬¾?d åN²©zÏ @  ³­¾?d HåNtºÃî @  ³®¾?d ˆåNTOÁ @  ³¯¾?d ÈåNÇ#Zó @  ³°¾?d æNZgú2 @  ³±¾?d HæNd 4 @  ³²¾?d ˆæN$‘¢Ê @  ³³¾?d ÈæN§£^ @  ³´¾?d çNÁï/¶ @  ³µ¾?d HçNü–— @  ³¶¾?d ˆçN' ”i @  ³·¾?d ÈçNÄ1j @  ³¸¾?d èN-;½w @  ³¹¾?d HèN‹ß¼A @  ³º ¾?d ˆèN«*¾¿ @  ³»!¾?d ÈèNž¿+ @  ³¼"¾?d éNNT3à @  ³½#¾?d HéNˆGŠâ @  ³¾$¾?d ˆéN¨²ˆ @  ³¿%¾?d ÈéN„ß2Ý @  ³À&¾?d êN›’ @  ³Á'¾?d HêNG˜È @  ³Â(¾?d ˆêNgmÊä @  ³Ã)¾?d ÈêNR[Ëp @  ³Ä*¾?d ëN‚G˜ @  ³Å+¾?d HëNDþ¹ @  ³Æ,¾?d ˆëNdõüG @  ³Ç-¾?d ÈëNZ8YD @  ³È.¾?d ìNCvªK @  ³É/¾?d HìNx%’¡ @  ³Ê0¾?d ˆìNXÐ_ @  ³Ë1¾?d ÈìNmæ‘Ë @  ³Ì2¾?d íN½®# @  ³Í3¾?d HíN{½¤ @  ³Î4¾?d ˆíN[H¦ü @  ³Ï5¾?d ÈíNÈ$= @  ³Ð6¾?d îNU`Þ @  ³Ñ7¾?d HîN cÇØ @  ³Ò8¾?d ˆîN+–Å& @  ³Ó9¾?d ÈîN Ä² @  ³Ô:¾?d ïNÎèHZ @  ³Õ;¾?d HïNûñ{ @  ³Ö<¾?d ˆïN(ó… @  ³×=¾?d ÈïNÃV† @  ³Ø>¾?d ðN¨ê4 @  ³Ù?¾?d HðNþ©þ @  ³Ú@¾?d ˆðNÞ\üí @  ³ÛA¾?d ÈðNëjýy @  ³ÜB¾?d ñN;"q‘ @  ³ÝC¾?d HñNý1Ȱ @  ³ÞD¾?d ˆñNÝÄÊN @  ³ßE¾?d ÈñN_®v @  ³àF¾?d òNÂêÖÜ @  ³áG¾?d HòNœéŒÚ @  ³âH¾?d€ ˆòN:J& @  ´I¾?d ÈòNî=o  @  ´J¾?d óN>uãÈ @  ´K¾?d HóN=/¡ @  ´L¾?d ˆóNÚ£ú @  ´M¾?d ÈóNí¥Yƒ @  ´N¾?d ôNô몌 @  ´O¾?d HôN Í @  ´P¾?d ˆôN!ÿÏâ @  ´ Q¾?d ÈôNÑ€5› @  ´ R¾?d õNȹs @  ´ S¾?d HõN’û¿ @  ´ T¾?d ˆõN"gùA @  ´ U¾?d ÈõNÒ8 @  ´V¾?d öNO\£ù @  ´W¾?d HöNrL˜e @  ´X¾?d ˆöNR¹š› @  ´Y¾?d ÈöN¢Æ`â @  ´Z¾?d ÷NrŽì  @  ´[¾?d H÷Nq郞 @  ´\¾?d ˆ÷NQ!¬8 @  ´]¾?d È÷N¡^VA @  ´^¾?d øN•¡Ú\ @  ´_¾?d HøNý÷„ @  ´`¾?d ˆøN݆î @  ´a¾?d ÈøN-}|— @  ´b¾?d ùNý5ð @  ´c¾?d HùNþo²³ @  ´d¾?d ˆùNÞš°M @  ´e¾?d ÈùN.åJ4 @  ´f¾?d úN³¡êõ @  ´g¾?d HúNŸ·öÙ @  ´ h¾?d ˆúN¿Bô' @  ´!i¾?d ÈúNO=^ @  ´"j¾?d ûNŸu‚¶ @  ´#k¾?d HûNœ/Àz @  ´$l¾?d ˆûN¼Ú„ @  ´%m¾?d ÈûNL¥8ý @  ´&n¾?d üNUëËò @  ´'o¾?d HüN  ¬b @  ´(p¾?d ˆüN€ÿ®œ @  ´)q¾?d ÈüNp€Tå @  ´*r¾?d ýN ÈØ  @  ´+s¾?d HýN£’šÁ @  ´,t¾?d ˆýNƒg˜? @  ´-u¾?d ÈýNsbF @  ´.v¾?d þNî\‡ @  ´/w¾?d HþNÓLù @  ´0x¾?d ˆþNó¹ûå @  ´1y¾?d ÈþNÆœ @  ´2z¾?d ÿNÓŽt @  ´3{¾?d HÿNÐÔϸ @  ´4|¾?d ˆÿNð!ÍF @  ´5uÐO}¾?d ÈÿN^7? @  ´6~¾?d OOêÎ @  ´7¾?d `OÊ* @  ´8€¾?d  Oêßÿ @  ´9¾?d àO ø† @  ´:‚¾?d OÊètn @  ´;ƒ¾?d `Oɲ6¢ @  ´<„¾?d  OéG4\ @  ´=…¾?d àO8Î% @  ´>†¾?d O„|nä @  ´?‡¾?d `OmtZ @  ´@ˆ¾?d  O&˜v¤ @  ´A‰¾?d àOÖçŒÝ @  ´Bо?d O¯5 @  ´C‹¾?d `OõBù @  ´DŒ¾?d  O%@ @  ´E¾?d àOÕº~ @  ´F޾?d OÌ1Iq @  ´G¾?d `O9Ð.á @  ´H¾?d  O%, @  ´I‘¾?d àOéZÖf @  ´J’¾?d O9ZŽ @  ´K“¾?d `O:HB @  ´L”¾?d  O½¼ @  ´M•¾?d àOêÂàÅ @  ´N–¾?d Ow†@ @  ´O—¾?d `OJ–{˜ @  ´P˜¾?d  Ojcyf @  ´Q™¾?d àOšƒ @  ´Rš¾?d OJT÷ @  ´S›¾?d `OIM; @  ´Tœ¾?d  OiûOÅ @  ´U¾?d àO™„µ¼ @  ´Vž¾?d O­{9¡ @  ´WŸ¾?d `OÅ-gí @  ´X ¾?d  OåØe @  ´Y¡¾?d àO§Ÿj @  ´Z¢¾?d OÅï‚ @  ´[£¾?d ` OƵQN @  ´\¤¾?d   Oæ@S° @  ´]¥¾?d à O?©É @  ´^¦¾?d O‹{  @  ´_§¾?d ` O§m$ @  ´`¨¾?d   O‡˜Ú @  ´a©¾?d à Owçí£ @  ´bª¾?d O§¯aK @  ´c«¾?d ` O¤õ#‡ @  ´d¬¾?d   O„!y @  ´e­¾?d à OtÛ @  ´f®¾?d Om1( @  ´g¯¾?d ` O˜ÐOŸ @  ´h°¾?d   O¸%Ma @  ´i±¾?d à OHZ· @  ´j²¾?d O˜;ð @  ´k³¾?d ` O›Hy< @  ´l´¾?d   O»½{ @  ´mµ¾?d à OK» @  ´n¶¾?d OÖ†!z @  ´o·¾?d `Oë–æ @  ´p¸¾?d  OËc @  ´q¹¾?d àO;âa @  ´rº¾?d OëTn‰ @  ´s»¾?d `Oè,E @  ´t¼¾?d  OÈû.» @  ´u½¾?d àO8„Ô @  ´v¾¾?d O†Zhp @  ´w¿¾?d `O\#- @  ´xÀ¾?d  O>©!Ó @  ´yÁ¾?d àOÎÖÛª @  ´z¾?d OžWB @  ´{þ?d `OÄŽ @  ´|ľ?d  O=1p @  ´}ž?d àOÍNí  @  ´~ƾ?d OP MÈ @  ´Ǿ?d `O1MgG @  ´€Ⱦ?d  O¸e¹ @  ´ɾ?d àOáÇŸÀ @  ´‚ʾ?d O1( @  ´ƒ˾?d `O2ÕQä @  ´„̾?d  O S @  ´…;?d àOâ_©c @  ´†ξ?d OûZl @  ´‡Ͼ?d `Oð=ü @  ´ˆо?d  O.? @  ´‰Ѿ?d àOÞzÅ{ @  ´ŠÒ¾?d O2I“ @  ´‹Ó¾?d `O h _ @  ´ŒÔ¾?d  O- ¡ @  ´Õ¾?d àOÝâóØ @  ´ŽÖ¾?d O@¦S @  ´×¾?d `O}¶h… @  ´ؾ?d  O]Cj{ @  ´‘Ù¾?d àO­< @  ´’Ú¾?d O}tê @  ´“Û¾?d `O~.^& @  ´”ܾ?d  O^Û\Ø @  ´•ݾ?d àO®¤¦¡ @  ´–Þ¾?d Oš[*¼ @  ´—ß¾?d `Oò tð @  ´˜à¾?d  OÒøv @  ´™á¾?d àO"‡Œw @  ´šâ¾?d OòÏŸ @  ´›ã¾?d `Oñ•BS @  ´œä¾?d  OÑ`@­ @  ´å¾?d àO!ºÔ @  ´žæ¾?d O¼[ @  ´Ÿç¾?d `OM9 @  ´ è¾?d  O°¸Ç @  ´¡é¾?d àO@Çþ¾ @  ´¢ê¾?d OrV @  ´£ë¾?d `O“Õ0š @  ´¤ì¾?d  O³ 2d @  ´¥í¾?d àOC_È @  ´¦î¾?d OZ; @  ´§ï¾?d `O¯ð\‚ @  ´¨ð¾?d  O^| @  ´©ñ¾?d àOz¤ @  ´ªò¾?d O¯2(í @  ´«ó¾?d `O¬hj! @  ´¬ô¾?d  OŒhß @  ´­õ¾?d àO|â’¦ @  ´®ö¾?d Oá¦2g @  ´¯÷¾?d `Oܶ û @  ´°ø¾?d  OüC  @  ´±ù¾?d àO <ñ| @  ´²ú¾?d OÜt}” @  ´³û¾?d `Oß.?X @  ´´ü¾?d  OÿÛ=¦uÐ O @  ´µý¾?d àO°Sv @  ´¶€þ¾?d 8 OÁ† @  ´·€ÿ¾?d x O;!ÇÓ @  ´¸€¿?d ¸ OÔÅ- @  ´¹€¿?d ø Oë«?T @  ´º€¿?d 8!O;ã³¼ @  ´»€¿?d x!O8¹ñp @  ´¼€¿?d ¸!OLóŽ @  ´½€¿?d ø!Oè3 ÷ @  ´¾€¿?d 8"Ouw©6 @  ´¿€¿?d x"O÷f³ˆ @  ´À€¿?d ¸"Oד±v @  ´Á€ ¿?d ø"O'ìK @  ´€ ¿?d 8#O÷¤Çç @  ´À ¿?d x#Oôþ…+ @  ´Ä€ ¿?d ¸#OÔ ‡Õ @  ´Å€ ¿?d ø#O$t}¬ @  ´Æ€¿?d 8$O=:Ž£ @  ´Ç€¿?d x$OÈÛé3 @  ´È€¿?d ¸$Oè.ëÍ @  ´É€¿?d ø$OQ´ @  ´Ê€¿?d 8%OÈ\ @  ´Ë€¿?d x%OËCß @  ´Ì€¿?d ¸%Oë¶Ýn @  ´Í€¿?d ø%OÉ' @  ´΀¿?d 8&O†‡Ö @  ´Ï€¿?d x&O»¼J @  ´Ѐ¿?d ¸&O›h¾´ @  ´Ñ€¿?d ø&OkDÍ @  ´Ò€¿?d 8'O»_È% @  ´Ó€¿?d x'O¸Šé @  ´Ô€¿?d ¸'O˜ðˆ @  ´Õ€¿?d ø'Ohrn @  ´Ö€¿?d 8(O\pþs @  ´×€¿?d x(O4& ? @  ´Ø€ ¿?d ¸(OÓ¢Á @  ´Ù€!¿?d ø(Oä¬X¸ @  ´Ú€"¿?d 8)O4äÔP @  ´Û€#¿?d x)O7¾–œ @  ´Ü€$¿?d ¸)OK”b @  ´Ý€%¿?d ø)Oç4n @  ´Þ€&¿?d 8*OzpÎÚ @  ´߀'¿?d x*OVfÒö @  ´à€(¿?d ¸*Ov“Ð @  ´á€)¿?d ø*O†ì*q @  ´â€*¿?d€ 8+O"gº? @  µ€+¿?d x+OÀ|°Ú @  µ€,¿?d ¸+Oà‰²$ @  µ€-¿?d ø+OÕ¿³° @  µ€.¿?d 8,OÌñ@¿ @  µ€/¿?d x,O÷¢xU @  µ€0¿?d ¸,O×Wz« @  µ€1¿?d ø,Oéšß¨ @  µ€2¿?d 8-O9ÒS@ @  µ €3¿?d x-OÿÁêa @  µ €4¿?d ¸-Oß4èŸ @  µ €5¿?d ø-Oêé  @  µ €6¿?d 8.OwFIÊ @  µ €7¿?d x.O)EÌ @  µ€8¿?d ¸.O °2 @  µ€9¿?d ø.OšÜŠÑ @  µ€:¿?d 8/OJ”9 @  µ€;¿?d x/OŒ‡¿ @  µ€<¿?d ¸/O¬r½æ @  µ€=¿?d ø/O™D¼r @  µ€>¿?d 80O'šÀ @  µ€?¿?d x0Oq.ç @  µ€@¿?d ¸0OQÛ @  µ€A¿?d ø0Oo³ @  µ€B¿?d 81O¿^?ò @  µ€C¿?d x1OyM†Ó @  µ€D¿?d ¸1OY¸„- @  µ€E¿?d ø1OlŽ…¹ @  µ€F¿?d 82OñÊ%x @  µ€G¿?d x2O¯É~ @  µ€H¿?d ¸2O<}€ @  µ€I¿?d ø2O VÁÓ @  µ €J¿?d 83OÝM; @  µ!€K¿?d x3O ô @  µ"€L¿?d ¸3O;øöä @  µ#€M¿?d ø3OÎ÷p @  µ$€N¿?d 84O€ @  µ%€O¿?d x4O,Ó<• @  µ&€P¿?d ¸4O &>k @  µ'€Q¿?d ø4O2ë›h @  µ(€R¿?d 85O⣀ @  µ)€S¿?d x5O$°®¡ @  µ*€T¿?d ¸5OE¬_ @  µ+€U¿?d ø5O1s­Ë @  µ,€V¿?d 86O¬7  @  µ-€W¿?d x6Oò4W  @  µ.€X¿?d ¸6OÒÁUò @  µ/€Y¿?d ø6OA­Î @  µ0€Z¿?d 87O‘åBù @  µ1€[¿?d x7OWöûØ @  µ2€\¿?d ¸7Owù& @  µ3€]¿?d ø7OB5ø² @  µ4€^¿?d 88OvÊt¯ @  µ5€_¿?d x8OÐ.u™ @  µ6€`¿?d ¸8OðÛwg @  µ7€a¿?d ø8OÎÒd @  µ8€b¿?d 89O^^Œ @  µ9€c¿?d x9OØMç­ @  µ:€d¿?d ¸9Oø¸åS @  µ;€e¿?d ø9OÍŽäÇ @  µ<€f¿?d 8:OPÊD @  µ=€g¿?d x:OÉ @  µ>€h¿?d ¸:O.<þ @  µ?€i¿?d ø:OQ¦? @  µ@€j¿?d 8;OÒ*× @  µA€k¿?d x;O “ö @  µB€l¿?d ¸;O4ÿ‘ @  µC€m¿?d ø;OÉœ @  µD€n¿?d 8tÊ' @  µL€v¿?d 8>O£0jæ @  µM€w¿?d x>Oý30à @  µN€x¿?d ¸>OÝÆ2 @  µO€y¿?d ø>ONª©ý @  µP€z¿?d 8?Ožâ% @  µQ€{¿?d x?OXñœ4 @  µR€|¿?duÐ@O7 ¸?OxžÊ @  µS€}¿?d ø?O0²ì" @  µT~¿?d P@OóV @  µU¿?d @O‹ @  µV€¿?d Ð@O˜™U @  µW¿?d AOô*` @  µX‚¿?d PAOv=¾ @  µYƒ¿?d AOk‘¿ @  µZ„¿?d ÐAOú†a @  µ[…¿?d BOº0ê @  µ\†¿?d PBO8ˆ'4 @  µ]‡¿?d BOÄïh @  µ^ˆ¿?d ÐBOF~Ì @  µ_‰¿?d CO–ÍX© @  µ`Š¿?d PCO\Ow @  µa‹¿?d COp+ãv @  µbŒ¿?d ÐCOòºô¨ @  µc¿?d DO\Sí @  µdŽ¿?d PDOÞÂ3 @  µe¿?d DOGõ+ù @  µf¿?d ÐDOÅd<' @  µg‘¿?d EO©p @  µh’¿?d PEO+áÌ @  µi“¿?d EOO–¹Í @  µj”¿?d ÐEOÍ® @  µk•¿?d FOçä˜ @  µl–¿?d PFOeuF @  µm—¿?d FO™@` @  µn˜¿?d ÐFOƒW¾ @  µo™¿?d GOÚ6Wk @  µpš¿?d PGOX§@µ @  µq›¿?d GO<Ðì´ @  µrœ¿?d ÐGO¾Aûj @  µs¿?d HO=a= @  µtž¿?d PHO¿ˆvã @  µuŸ¿?d HO»bõ @  µv ¿?d ÐHO9™u+ @  µw¡¿?d IOUK @  µx¢¿?d PIO×\À @  µy£¿?d IO³kðÁ @  µz¤¿?d ÐIO1úç @  µ{¥¿?d JOQ” @  µ|¦¿?d PJO™ˆFJ @  µ}§¿?d JOeï l @  µ~¨¿?d ÐJOç~² @  µ©¿?d KOzœt @  µ€ª¿?d PKOø ª @  µ«¿?d KOœz´« @  µ‚¬¿?d ÐKOë£u @  µƒ­¿?d LO°F0 @  µ„®¿?d PLO2“Qî @  µ…¯¿?d LO«¤|$ @  µ†°¿?d ÐLO)5kú @  µ‡±¿?d MOE!UÏ @  µˆ²¿?d PMOǰB @  µ‰³¿?d MO£Çî @  µŠ´¿?d ÐMO!VùÎ @  µ‹µ¿?d NO µOE @  µŒ¶¿?d PNO‰$X› @  µ·¿?d NOuC½ @  µŽ¸¿?d ÐNO÷Òc @  µ¹¿?d OO6g¶ @  µº¿?d POO´öh @  µ‘»¿?d OOлi @  µ’¼¿?d ÐOOR¬· @  µ“½¿?d PO[iO @  µ”¾¿?d PPOÙø‘ @  µ•¿¿?d PO-(– @  µ–À¿?d ÐPO¯¹H @  µ—Á¿?d QOí9} @  µ˜¿?d PQOA<.£ @  µ™ÿ?d QO%K‚¢ @  µšÄ¿?d ÐQO§Ú•| @  µ›Å¿?d RO9#÷ @  µœÆ¿?d PRO¨4) @  µÇ¿?d ROóÏ{ @  µžÈ¿?d ÐROq^lÑ @  µŸÉ¿?d SO¡íK´ @  µ Ê¿?d PSO#|\j @  µ¡Ë¿?d SOG ðk @  µ¢Ì¿?d ÐSOÅšçµ @  µ£Í¿?d TOksð @  µ¤ο?d PTOéâ. @  µ¥Ï¿?d TOpÕ8ä @  µ¦п?d ÐTOòD/: @  µ§Ñ¿?d UOžP @  µ¨Ò¿?d PUOÁÑ @  µ©Ó¿?d UOx¶ªÐ @  µªÔ¿?d ÐUOú'½ @  µ«Õ¿?d VOÐÄ … @  µ¬Ö¿?d PVORU[ @  µ­׿?d VO®2S} @  µ®Ø¿?d ÐVO,£D£ @  µ¯Ù¿?d WOíDv @  µ°Ú¿?d PWOo‡S¨ @  µ±Û¿?d WO ðÿ© @  µ²Ü¿?d ÐWO‰aèw @  µ³Ý¿?d XO 9r  @  µ´Þ¿?d PXOˆ¨eþ @  µµß¿?d XOŒ(qè @  µ¶à¿?d ÐXO¹f6 @  µ·á¿?d YOb­X @  µ¸â¿?d PYOà @  ¶+€7À?d ¨nOûtaõ @  ¶,€8À?d ènOyåv+ @  ¶-€9À?d (oOÛCd @  ¶.€:À?d hoOYÒº @  ¶/€;À?d ¨oO^¶Í! @  ¶0€<À?d èoOÜ'Úÿ @  ¶1€=À?d (pO‹ê @  ¶2€>À?d hpO’†œ4 @  ¶3€?À?d ¨pO£fÞ @  ¶4€@À?d èpO!Žq @  ¶5€AÀ?d (qOƒ(O @  ¶6€BÀ?d hqO¹‘ @  ¶7€CÀ?d ¨qO«|ôê @  ¶8€DÀ?d èqO)íã4 @  ¶9€EÀ?d (rOÆG®R @  ¶:€FÀ?d hrODÖ¹Œ @  ¶;€GÀ?d ¨rO}ø G @  ¶<€HÀ?d èrOÿi™ @  ¶=€IÀ?d (sO]Ï{Ö @  ¶>€JÀ?d hsOß^l @  ¶?€KÀ?d ¨sOg;€± @  ¶@€LÀ?d èsO媗o @  ¶A€MÀ?d (tOŽ ‰Ç @  ¶B€NÀ?d htO ›ž @  ¶C€OÀ?d ¨tOPåH> @  ¶D€PÀ?d ètOÒt_à @  ¶E€QÀ?d (uOpÒ>¯ @  ¶F€RÀ?d huOòC)q @  ¶G€SÀ?d ¨uOX†Ú  @  ¶H€TÀ?d èuOÚÍÔ @  ¶I€UÀ?d (vO5½€² @  ¶J€VÀ?d hvO·,—l @  ¶K€WÀ?d ¨vOŽ#§ @  ¶L€XÀ?d èvO “4y @  ¶M€YÀ?d (wO®5U6 @  ¶N€ZÀ?d hwO,¤Bè @  ¶O€[À?d ¨wO+Às @  ¶P€\À?d èwO©Q˜­ @  ¶Q€]À?d (xOï@ù @  ¶R€^À?d hxOmÑîÉ @  ¶S€_À?d ¨xO¬2 @  ¶T€`À?d èxO.‰ì @  ¶U€aÀ?d (yOŒ/w£ @  ¶V€bÀ?d hyO¾`} @  ¶W€cÀ?d ¨yO¤{“ @  ¶X€dÀ?d èyO&ê„Ø @  ¶Y€eÀ?d (zOÉ@ɾ @  ¶Z€fÀ?d hzOKÑÞ` @  ¶[€gÀ?d ¨zOrÿj« @  ¶\€hÀ?d èzOðn}u @  ¶]€iÀ?d ({ORÈ: @  ¶^€jÀ?d h{OÐY ä @  ¶_€kÀ?d ¨{OÆ;áÏ @  ¶`€lÀ?d è{ODªö @  ¶a€mÀ?d (|O/ è¹ @  ¶b€nÀ?d h|O­›ÿg @  ¶c€oÀ?d ¨|Oñå)@ @  ¶d€pÀ?d è|Ost>ž @  ¶e€qÀ?d (}OÑÒ_Ñ @  ¶f€rÀ?d h}OSCH @  ¶g€sÀ?d ¨}Où†»t @  ¶h€tÀ?d è}O{¬ª @  ¶i€uÀ?d (~O”½áÌ @  ¶j€vÀ?d h~O,ö @  ¶k€wÀ?d ¨~O/BÙ @  ¶l€xÀ?d è~O­“U @  ¶m€yÀ?d (O54H @  ¶n€zÀ?d hO¤#– @  ¶o€{À?d ¨OuЀO'ŠÀî  @  ¶p€|À?d èOQùÓ @  ¶q€}À?d @€Oö @  ¶r€~À?d €€O4ôôþ @  ¶s€À?d À€OºÏO¦ @  ¶t€€À?d Oj‡ÃN @  ¶u€À?d @Ošø97 @  ¶v€‚À?d €Oº ;É @  ¶w€ƒÀ?d ÀO²¬Ý’ @  ¶x€„À?d ‚O/è}S @  ¶y€…À?d @‚Oß—‡* @  ¶z€†À?d €‚Oÿb…Ô @  ¶{€‡À?d À‚Od($? @  ¶|€ˆÀ?d ƒO´`¨× @  ¶}€‰À?d @ƒODR® @  ¶~€ŠÀ?d €ƒOdêPP @  ¶€‹À?d ÀƒO½™ø @  ¶€€ŒÀ?d „O„ój÷ @  ¶€À?d @„OtŒŽ @  ¶‚€ŽÀ?d €„OTy’p @  ¶ƒ€À?d À„OªcQw @  ¶„€À?d …Oz+ÝŸ @  ¶…€‘À?d @…OŠT'æ @  ¶†€’À?d €…Oª¡% @  ¶‡€“À?d À…O¢ÃC @  ¶ˆ€”À?d †O?Dc‚ @  ¶‰€•À?d @†OÏ;™û @  ¶Š€–À?d €†OïΛ @  ¶‹€—À?d À†Ot„:î @  ¶Œ€˜À?d ‡O¤Ì¶ @  ¶€™À?d @‡OT³L @  ¶Ž€šÀ?d €‡OtFN @  ¶€›À?d À‡OÑF–: @  ¶€œÀ?d ˆOå¹' @  ¶‘€À?d @ˆOÆà^ @  ¶’€žÀ?d €ˆO53â  @  ¶“€ŸÀ?d ÀˆOVž{ @  ¶”€ À?d ‰O†Ö”“ @  ¶•€¡À?d @‰Ov©nê @  ¶–€¢À?d €‰OV\l @  ¶—€£À?d À‰O^ýŠO @  ¶˜€¤À?d ŠOù*Ž @  ¶™€¥À?d @ŠO3ÆÐ÷ @  ¶š€¦À?d €ŠO3Ò  @  ¶›€§À?d ÀŠOˆysâ @  ¶œ€¨À?d ‹OX1ÿ  @  ¶€©À?d @‹O¨Ns @  ¶ž€ªÀ?d €‹Oˆ» @  ¶Ÿ€«À?d À‹O<½ø† @  ¶ €¬À?d ŒO%ó ‰ @  ¶¡€­À?d @ŒOÕŒñð @  ¶¢€®À?d €ŒOõyó @  ¶£€¯À?d ÀŒO c0  @  ¶¤€°À?d OÛ+¼á @  ¶¥€±À?d @O+TF˜ @  ¶¦€²À?d €O ¡Df @  ¶§€³À?d ÀO¢= @  ¶¨€´À?d ŽOžDü @  ¶©€µÀ?d @ŽOn;ø… @  ¶ª€¶À?d €ŽONÎú{ @  ¶«€·À?d ÀŽOÕ„[ @  ¶¬€¸À?d OÌ×x @  ¶­€¹À?d @Oõ³- @  ¶®€ºÀ?d €OÕF/ÿ @  ¶¯€»À?d ÀOpF÷D @  ¶°€¼À?d OΘKö @  ¶±€½À?d @O>ç± @  ¶²€¾À?d €O³q @  ¶³€¿À?d ÀOï\» @  ¶´€ÀÀ?d ‘O]§ÐS @  ¶µ€ÁÀ?d @‘O­Ø** @  ¶¶€ÂÀ?d €‘O-(Ô @  ¶·€ÃÀ?d À‘O…ŒÎ @  ¶¸€ÄÀ?d ’OÈnN @  ¶¹€ÅÀ?d @’Oè·”7 @  ¶º€ÆÀ?d €’OÈB–É @  ¶»€ÇÀ?d À’OS7" @  ¶¼€ÈÀ?d “Oƒ@»Ê @  ¶½€ÉÀ?d @“Os?A³ @  ¶¾€ÊÀ?d €“OSÊCM @  ¶¿€ËÀ?d À“OI˺Ô @  ¶À€ÌÀ?d ”OP…IÛ @  ¶Á€ÍÀ?d @”O ú³¢ @  ¶€ÎÀ?d €”O€±\ @  ¶ÀÏÀ?d À”O~r[ @  ¶Ä€ÐÀ?d •O®]þ³ @  ¶Å€ÑÀ?d @•O^"Ê @  ¶Æ€ÒÀ?d €•O~×4 @  ¶Ç€ÓÀ?d À•Ovvào @  ¶È€ÔÀ?d –Oë2@® @  ¶É€ÕÀ?d @–OMº× @  ¶Ê€ÖÀ?d €–O;¸¸) @  ¶Ë€×À?d À–O ò @  ¶Ì€ØÀ?d —Opº•* @  ¶Í€ÙÀ?d @—O€ÅoS @  ¶΀ÚÀ?d €—O 0m­ @  ¶Ï€ÛÀ?d À—O0µ @  ¶ЀÜÀ?d ˜O1Ï9  @  ¶Ñ€ÝÀ?d @˜OÁ°Ãr @  ¶Ò€ÞÀ?d €˜OáEÁŒ @  ¶Ó€ßÀ?d À˜O‚è;W @  ¶Ô€àÀ?d ™OR ·¿ @  ¶Õ€áÀ?d @™O¢ßMÆ @  ¶Ö€âÀ?d €™O‚*O8 @  ¶×€ãÀ?d À™OŠ‹©c @  ¶Ø€äÀ?d šOÏ ¢ @  ¶Ù€åÀ?d @šOç°óÛ @  ¶Ú€æÀ?d €šOÇEñ% @  ¶Û€çÀ?d ÀšO\PÎ @  ¶Ü€èÀ?d ›OŒGÜ& @  ¶Ý€éÀ?d @›O|8&_ @  ¶Þ€êÀ?d €›O\Í$¡ @  ¶߀ëÀ?d À›OèËÛª @  ¶à€ìÀ?d œOñ…(¥ @  ¶á€íÀ?d @œOE½}u @  ¶â îÀ?d€ €œO‹c- @  · ïÀ?d ÀœOÐè @  · ðÀ?d OÞ˜dë @  · ñÀ?d @Oë®e @  · òÀ?d €OË[g @  · óÀ?d ÀO HÞ  @  · ôÀ?d žO ~a @  · õÀ?d @žO®ÁÛb @  · öÀ?d €žOŽ4Ùœ @  · ÷À?d ÀžOÐ7ƒš @  · øÀ?d ŸOr @  · ùÀ?d @ŸO5Iæ @  · úÀ?d €ŸO¼  @  · ûÀuРO?d ÀŸOÓ¯µ9 @  · üÀ?d  O›c·Š @  ·ýÀ?d X O,i @  ·þÀ?d ˜ O(ú.— @  ·ÿÀ?d Ø Oï;. @  ·Á?d ¡O̧·Æ @  ·Á?d X¡Où‘¶R @  ·Á?d ˜¡OÙd´¬ @  ·Á?d Ø¡Ow  @  ·Á?d ¢O‚3­L @  ·Á?d X¢O¼þO @  ·Á?d ˜¢Oœ ± @  ·Á?d Ø¢OÂP· @  ·Á?d £O@Ü_ @  · Á?d X£O'vÝË @  · Á?d ˜£Oƒß5 @  · Á?d Ø£OÁf @  · Á?d ¤OØÞ• @  · Á?d X¤OZ´)H @  · Á?d ˜¤OzA+¶ @  ·!Á?d ؤOA\ @  ·"Á?d ¥O‘ZŸ´ @  ·#Á?d X¥O¤lž  @  ·$Á?d ˜¥O„™œÞ @  ·%Á?d Ø¥OBŠ%ÿ @  ·&Á?d ¦OßÎ…> @  ·'Á?d X¦Oá = @  ·(Á?d ˜¦OÁö"à @  ·)Á?d ئOŸõxÅ @  ·*Á?d §OO½ô- @  ·+Á?d X§Oz‹õ¹ @  ·,Á?d ˜§OZ~÷G @  ·-Á?d اOœmNf @  ·.Á?d ¨O¨’Â{ @  ·/Á?d X¨O;þY˜ @  ·0Á?d ˜¨O [f @  ·1Á?d بO½ïZP @  ·2 Á?d ©Om§Ö¸ @  ·3!Á?d X©OX‘×, @  ·4"Á?d ˜©OxdÕÒ @  ·5#Á?d Ø©O¾wló @  ·6$Á?d ªO#3Ì2 @  ·7%Á?d XªOþi1 @  ·8&Á?d ˜ªO= kÏ @  ·9'Á?d تOc1É @  ·:(Á?d «O³@½! @  ·;)Á?d X«O†v¼µ @  ·<*Á?d ˜«O¦ƒ¾K @  ·=+Á?d Ø«O`j @  ·>,Á?d ¬OyÞôe @  ·?-Á?d X¬OU³N¤ @  ·@.Á?d ˜¬OuFLZ @  ·A/Á?d جONt° @  ·B0Á?d ­Ož]øX @  ·C1Á?d X­O«kùÌ @  ·D2Á?d ˜­O‹žû2 @  ·E3Á?d Ø­OMB @  ·F4Á?d ®OÐÉâÒ @  ·G5Á?d X®OîGÑ @  ·H6Á?d ˜®OÎñE/ @  ·I7Á?d Ø®Oò) @  ·J8Á?d ¯O@º“Á @  ·K9Á?d X¯OuŒ’U @  ·L:Á?d ˜¯OUy« @  ·M;Á?d دO“j)Š @  ·N<Á?d °O-´•8 @  ·O=Á?d X°O¾ØÛ @  ·P>Á?d ˜°Ož- % @  ·Q?Á?d ذOñ^Ä× @  ·R @Á?d ±O!H? @  ·S AÁ?d X±O I« @  ·T BÁ?d ˜±O4ÕKU @  ·U CÁ?d رOòÆòt @  ·V DÁ?d ²Oo‚Rµ @  ·W EÁ?d X²OQO÷¶ @  ·X FÁ?d ˜²OqºõH @  ·Y GÁ?d زO/¹¯N @  ·Z HÁ?d ³Oÿñ#¦ @  ·[ IÁ?d X³OÊÇ"2 @  ·\ JÁ?d ˜³Oê2 Ì @  ·] KÁ?d سO,!™í @  ·^ LÁ?d ´O5ojâ @  ·_ MÁ?d X´O·Ö± @  ·` NÁ?d ˜´O—ðÔO @  ·a OÁ?d Ø´O¬£ì¥ @  ·b PÁ?d µO|ë`M @  ·c QÁ?d XµOIÝaÙ @  ·d RÁ?d ˜µOi(c' @  ·e SÁ?d صO¯;Ú @  ·f TÁ?d ¶O2zÇ @  ·g UÁ?d X¶O ²ßÄ @  ·h VÁ?d ˜¶O,GÝ: @  ·i WÁ?d ضOrD‡< @  ·j XÁ?d ·O¢ Ô @  ·k YÁ?d X·O—: @ @  ·l ZÁ?d ˜·O·Ï¾ @  ·m [Á?d Ø·OqܱŸ @  ·n \Á?d ¸OE#=‚ @  ·o ]Á?d X¸OÖO¦a @  ·p ^Á?d ˜¸Oöº¤Ÿ @  ·q _Á?d ظOP^¥© @  ·r `Á?d ¹O€)A @  ·s aÁ?d X¹Oµ (Õ @  ·t bÁ?d ˜¹O•Õ*+ @  ·u cÁ?d عOSÆ“  @  ·v dÁ?d ºO΂3Ë @  ·w eÁ?d XºOðO–È @  ·x fÁ?d ˜ºOк”6 @  ·y gÁ?d غO޹Î0 @  ·z hÁ?d »O^ñBØ @  ·{ iÁ?d X»OkÇCL @  ·| jÁ?d ˜»OK2A² @  ·} kÁ?d Ø»O!ø“ @  ·~ lÁ?d ¼O”o œ @  · mÁ?d X¼O[Tl @  ·€ nÁ?d ˜¼O{¡ƒ’ @  · oÁ?d ؼO@ò»x @  ·‚ pÁ?d ½Oº7 @  ·ƒ qÁ?d X½O¥Œ6 @  ·„ rÁ?d ˜½O…y4ú @  ·… sÁ?d ؽOCjÛ @  ·† tÁ?d ¾OÞ.- @  ·‡ uÁ?d X¾Oà㈠@  ·ˆ vÁ?d ˜¾OÀŠç @  ·‰ wÁ?d ؾOžÐá @  ·Š xÁ?d ¿ON]\  @  ·‹ yÁ?d X¿O{k] @  ·Œ zÁ?d ˜¿O[ž_c @uÐÀO  · {Á?d Ø¿OfãÝB @  ·Ž|Á?d 0ÀOŒ @  ·}Á?d pÀO‘ó @  ·~Á?d °ÀO±Š  @  ·‘Á?d ðÀOúøU¸ @  ·’€Á?d 0ÁO*°ÙP @  ·“Á?d pÁO†ØÄ @  ·”‚Á?d °ÁO?sÚ: @  ·•ƒÁ?d ðÁOù`c @  ·–„Á?d 0ÂOd$ÃÚ @  ·—…Á?d pÂOZéfÙ @  ·˜†Á?d °ÂOzd' @  ·™‡Á?d ðÂO$>! @  ·šˆÁ?d 0ÃOôW²É @  ·›‰Á?d pÃOÁa³] @  ·œŠÁ?d °ÃOá”±£ @  ·‹Á?d ðÃO'‡‚ @  ·žŒÁ?d 0ÄO>Éû @  ·ŸÁ?d pÄO¼£GÞ @  · ŽÁ?d °ÄOœVE  @  ·¡Á?d ðÄO§}Ê @  ·¢Á?d 0ÅOwMñ" @  ·£‘Á?d pÅOB{ð¶ @  ·¤’Á?d °ÅObŽòH @  ·¥“Á?d ðÅO¤Ki @  ·¦”Á?d 0ÆO9Ùë¨ @  ·§•Á?d pÆON« @  ·¨–Á?d °ÆO'áLU @  ·©—Á?d ðÆOyâS @  ·ª˜Á?d 0ÇO©ªš» @  ·«™Á?d pÇOœœ›/ @  ·¬šÁ?d °ÇO¼i™Ñ @  ·­›Á?d ðÇOzz ð @  ·®œÁ?d 0ÈON…¬í @  ·¯Á?d pÈOÝé7 @  ·°žÁ?d °ÈOý5ð @  ·±ŸÁ?d ðÈO[ø4Æ @  ·² Á?d 0ÉO‹°¸. @  ·³¡Á?d pÉO¾†¹º @  ·´¢Á?d °ÉOžs»D @  ·µ£Á?d ðÉOX`e @  ·¶¤Á?d 0ÊOÅ$¢¤ @  ··¥Á?d pÊOûé§ @  ·¸¦Á?d °ÊOÛY @  ·¹§Á?d ðÊO…__ @  ·º¨Á?d 0ËOUWÓ· @  ·»©Á?d pËO`aÒ# @  ·¼ªÁ?d °ËO@”ÐÝ @  ·½«Á?d ðËO†‡iü @  ·¾¬Á?d 0ÌOŸÉšó @  ·¿­Á?d pÌO³¤ 2 @  ·À®Á?d °ÌO“Q"Ì @  ·Á¯Á?d ðÌO¨& @  ·Â°Á?d 0ÍOxJ–Î @  ·Ã±Á?d pÍOM|—Z @  ·Ä²Á?d °ÍOm‰•¤ @  ·Å³Á?d ðÍO«š,… @  ·Æ´Á?d 0ÎO6ÞŒD @  ·ÇµÁ?d pÎO)G @  ·È¶Á?d °ÎO(æ+¹ @  ·É·Á?d ðÎOvåq¿ @  ·Ê¸Á?d 0ÏO¦­ýW @  ·Ë¹Á?d pÏO“›üà @  ·ÌºÁ?d °ÏO³nþ= @  ·Í»Á?d ðÏOu}G @  ·Î¼Á?d 0ÐOË£û® @  ·Ï½Á?d pÐOXÏ`M @  ·Ð¾Á?d °ÐOx:b³ @  ·Ñ¿Á?d ðÐO.Žv” @  ·ÒÀÁ?d 0ÑOþÆú| @  ·ÓÁÁ?d pÑOËðûè @  ·ÔÂÁ?d °ÑOëù @  ·ÕÃÁ?d ðÑO-@7 @  ·ÖÄÁ?d 0ÒO°Ràö @  ·×ÅÁ?d pÒOŽŸEõ @  ·ØÆÁ?d °ÒO®jG  @  ·ÙÇÁ?d ðÒOði  @  ·ÚÈÁ?d 0ÓO !‘å @  ·ÛÉÁ?d pÓOq @  ·ÜÊÁ?d °ÓO5â’ @  ·ÝËÁ?d ðÓOóñ+® @  ·ÞÌÁ?d 0ÔOê¿Ø¡ @  ·ßÍÁ?d pÔOhÕdò @  ·àÎÁ?d °ÔOH f  @  ·áÏÁ?d ðÔOss^æ @  ·âÐÁ?d€ 0ÕO‹¡Æ\ @  ¸ÑÁ?d pÕO_Öá @  ¸ÒÁ?d °ÕO# @  ¸ÓÁ?d ðÕO|yÏÓ @  ¸ÔÁ?d 0ÖOá=o @  ¸ÕÁ?d pÖOB•k @  ¸ÖÁ?d °ÖO1·—• @  ¸×Á?d ðÖO¡’é @  ¸ØÁ?d 0×OqN @  ¸ ÙÁ?d p×O1äx @  ¸ ÚÁ?d °×O¡Äæ† @  ¸ ÛÁ?d ð×O¢ž¤J @  ¸ ÜÁ?d 0ØO–a(W @  ¸ ÝÁ?d pØOfÒ. @  ¸ÞÁ?d °ØOFëÐÐ @  ¸ßÁ?d ðØOƒ°| @  ¸àÁ?d 0ÙOST<” @  ¸áÁ?d pÙO£+Æí @  ¸âÁ?d °ÙOƒÞÄ @  ¸ãÁ?d ðÙO€„†ß @  ¸äÁ?d 0ÚOÀ& @  ¸åÁ?d pÚOí¿Üg @  ¸æÁ?d °ÚOÍJÞ™ @  ¸çÁ?d ðÚO]ûÛå @  ¸èÁ?d 0ÛO³W  @  ¸éÁ?d pÛO}Ì­t @  ¸êÁ?d °ÛO]9¯Š @  ¸ëÁ?d ðÛO^cíF @  ¸ìÁ?d 0ÜOG-I @  ¸íÁ?d pÜO·Rä0 @  ¸îÁ?d °ÜO—§æÎ @  ¸ïÁ?d ðÜOÞᘠ@  ¸ ðÁ?d 0ÝO©æ @  ¸!ñÁ?d pÝOþÖîŸ @  ¸"òÁ?d °ÝOÞ#ìa @  ¸#óÁ?d ðÝOÝy®­ @  ¸$ôÁ?d 0ÞO@=l @  ¸%õÁ?d pÞO°Bô @  ¸&öÁ?d °ÞO·öë @  ¸'÷Á?d ðÞOó— @  ¸(øÁ?d 0ßOÐN @  ¸)ùÁ?d pßO 1… @  ¸*úÁ?d uÐàO/°ßOćø @  ¸+ûÁ?d ðßOøðþ4 @  ¸, üÁ?d HàOáT Â @  ¸- ýÁ?d ˆàO³OO› @  ¸. þÁ?d ÈàO1ÞXE @  ¸/ ÿÁ?d áO†#‚u @  ¸0 Â?d HáO²•« @  ¸1 Â?d ˆáOV©zò @  ¸2 Â?d ÈáOÔ8m, @  ¸3 Â?d âOÈ·˜ÿ @  ¸4 Â?d HâOJ&! @  ¸5 Â?d ˆâO=`x @  ¸6 Â?d ÈâOš¬w¦ @  ¸7 Â?d ãOXÄéì @  ¸8 Â?d HãOÚUþ2 @  ¸9  Â?d ˆãOˆNk @  ¸:  Â?d ÈãO ßµ @  ¸;  Â?d äO’Z ¨ @  ¸<  Â?d HäOË·v @  ¸=  Â?d ˆäOBÐX/ @  ¸> Â?d ÈäOÀAOñ @  ¸? Â?d åOuÙ¬• @  ¸@ Â?d HåO÷H»K @  ¸A Â?d ˆåO¥ST @  ¸B Â?d ÈåO'ÂCÌ @  ¸C Â?d æO;M¶ @  ¸D Â?d HæO¹Ü¡Á @  ¸E Â?d ˆæOëÇN˜ @  ¸F Â?d ÈæOiVYF @  ¸G Â?d çO«>Ç  @  ¸H Â?d HçO)¯ÐÒ @  ¸I Â?d ˆçO{´?‹ @  ¸J Â?d ÈçOù%(U @  ¸K Â?d èOLñZ @  ¸L Â?d HèO΀æ„ @  ¸M Â?d ˆèOœ› Ý @  ¸N Â?d ÈèO  @  ¸O Â?d éO‰$å™ @  ¸P  Â?d HéO µòG @  ¸Q !Â?d ˆéO¢À& @  ¸R"Â?d ÈéO Q1À @  ¸S#Â?d êO<ÞÄ @  ¸T$Â?d HêO¾OÓÍ @  ¸U%Â?d ˆêOìT<” @  ¸V&Â?d ÈêOnÅ+J @  ¸W'Â?d ëO¬­µ @  ¸X(Â?d HëO.<¢Þ @  ¸Y)Â?d ˆëO|'M‡ @  ¸Z*Â?d ÈëOþ¶ZY @  ¸[+Â?d ìOf3üD @  ¸\,Â?d HìOä¢ëš @  ¸]-Â?d ˆìO¶¹Ã @  ¸^.Â?d ÈìO4( @  ¸_/Â?d íO/·öë @  ¸`0Â?d HíO­&á5 @  ¸a1Â?d ˆíOÿ=l @  ¸b2Â?d ÈíO}¬² @  ¸c3Â?d îOa#ìa @  ¸d4Â?d HîOã²û¿ @  ¸e5Â?d ˆîO±©æ @  ¸f6Â?d ÈîO388 @  ¸g7Â?d ïOñPr @  ¸h8Â?d HïOsÁЬ @  ¸i9Â?d ˆïO!Úeõ @  ¸j:Â?d ÈïO£Kr+ @  ¸k;Â?d ðOœ^›‹ @  ¸l<Â?d HðOÏŒU @  ¸m=Â?d ˆðOLÔc  @  ¸n>Â?d ÈðOÎEtÒ @  ¸o?Â?d ñO©;šY @  ¸p@Â?d HñO+ª‡ @  ¸qAÂ?d ˆñOy±bÞ @  ¸rBÂ?d ÈñOû u @  ¸sCÂ?d òO節Ó @  ¸tDÂ?d HòOe>—  @  ¸uEÂ?d ˆòO7%xT @  ¸vFÂ?d ÈòOµ´oŠ @  ¸wGÂ?d óOwÜñÀ @  ¸xHÂ?d HóOõMæ @  ¸yIÂ?d ˆóO§V G @  ¸zJÂ?d ÈóO%Ç™ @  ¸{KÂ?d ôO½B¸„ @  ¸|LÂ?d HôO?Ó¯Z @  ¸}MÂ?d ˆôOmÈ@ @  ¸~NÂ?d ÈôOïYWÝ @  ¸OÂ?d õO¹—„ˆ @  ¸€PÂ?d HõO;“V @  ¸QÂ?d ˆõOi| @  ¸‚RÂ?d ÈõOëŒkÑ @  ¸ƒSÂ?d öO÷ž @  ¸„TÂ?d HöOu’‰Ü @  ¸…UÂ?d ˆöO'‰f… @  ¸†VÂ?d ÈöO¥q[ @  ¸‡WÂ?d ÷Ogpï @  ¸ˆXÂ?d H÷OåáøÏ @  ¸‰YÂ?d ˆ÷O·ú– @  ¸ŠZÂ?d È÷O5kH @  ¸‹[Â?d øO€_ÙG @  ¸Œ\Â?d HøOÎΙ @  ¸]Â?d ˆøOPÕ!À @  ¸Ž^Â?d ÈøOÒD6 @  ¸_Â?d ùOEjÍ„ @  ¸`Â?d HùOÇûÚZ @  ¸‘aÂ?d ˆùO•à5 @  ¸’bÂ?d ÈùOq"Ý @  ¸“cÂ?d úO þ× @  ¸”dÂ?d HúO‰oÀÐ @  ¸•eÂ?d ˆúOÛt/‰ @  ¸–fÂ?d ÈúOYå8W @  ¸—gÂ?d ûO›¦ @  ¸˜hÂ?d HûO±Ã @  ¸™iÂ?d ˆûOK^š @  ¸šjÂ?d ÈûOÉ–ID @  ¸›kÂ?d üOQïY @  ¸œlÂ?d HüOÓ‚ø‡ @  ¸mÂ?d ˆüO™Þ @  ¸žnÂ?d ÈüO @  ¸ŸoÂ?d ýO—åö @  ¸ pÂ?d HýOahÉ( @  ¸¡ qÂ?d ˆýO3s&q @  ¸¢ rÂ?d ÈýO±â1¯ @  ¸£ sÂ?d þO­mÄ| @  ¸¤ tÂ?d HþO/üÓ¢ @  ¸¥ uÂ?d ˆþO}ç<û @  ¸¦ vÂ?d ÈþOÿv+% @  ¸§ wÂ?d ÿO=µo @  ¸¨ xÂ?d HÿO¿¢± @  ¸© yÂ?d ˆÿOí”Mè @  ¸ª uÐPzÂ?d ÈÿO”ka6 @  ¸«{Â?d POþY @  ¸¬|Â?d `PÍoNØ @  ¸­}Â?d  PŸt¡ @  ¸®~Â?d àPå¶_ @  ¸¯Â?d Pg] F @  ¸°€Â?d `På̘ @  ¸±Â?d  P·×ôÁ @  ¸²‚Â?d àP5Fã @  ¸³ƒÂ?d P)ÉÌ @  ¸´„Â?d `P«X @  ¸µ…Â?d  PùCîK @  ¸¶†Â?d àP{Òù• @  ¸·‡Â?d P¹ºgß @  ¸¸ˆÂ?d `P;+p @  ¸¹‰Â?d  Pi0ŸX @  ¸ºŠÂ?d àP롈† @  ¸»‹Â?d Ps$.› @  ¸¼ŒÂ?d `Pñµ9E @  ¸½Â?d  P£®Ö @  ¸¾ŽÂ?d àP!?Á @  ¸¿Â?d P”§"¦ @  ¸ÀÂ?d `P65x @  ¸Á‘Â?d  PD-Ú! @  ¸Â’Â?d àPƼÍÿ @  ¸Ã“Â?d PÚ38, @  ¸Ä”Â?d `PX¢/ò @  ¸Å•Â?d  P ¹À« @  ¸Æ–Â?d àPˆ(×u @  ¸Ç—Â?d PJ@I? @  ¸È˜Â?d `PÈÑ^á @  ¸É™Â?d  PšÊ±¸ @  ¸ÊšÂ?d àP[¦f @  ¸Ë›Â?d P­oi @  ¸ÌœÂ?d `P/þh· @  ¸ÍÂ?d  P}å‡î @  ¸ÎžÂ?d àPÿt0 @  ¸ÏŸÂ?d PhZkª @  ¸Ð Â?d ` PêË|t @  ¸Ñ¡Â?d   P¸Ð“- @  ¸Ò¢Â?d à P:A„ó @  ¸Ó£Â?d P&Îq  @  ¸Ô¤Â?d ` P¤_fþ @  ¸Õ¥Â?d   PöD‰§ @  ¸Ö¦Â?d à PtÕžy @  ¸×§Â?d P¶½3 @  ¸Ø¨Â?d ` P4,í @  ¸Ù©Â?d   Pf7ø´ @  ¸ÚªÂ?d à Pä¦ïj @  ¸Û«Â?d P|#Iw @  ¸Ü¬Â?d ` Pþ²^© @  ¸Ý­Â?d   P¬©±ð @  ¸Þ®Â?d à P.8¦. @  ¸ß¯Â?d P5§CØ @  ¸à°Â?d ` P·6T @  ¸á±Â?d   På-»_ @  ¸â²Â?d€ à P°' @  ¹³Â?d Pî± Ý @  ¹´Â?d `Pl  @  ¹µÂ?d  Pûr· @  ¹¶Â?d àPyãi @  ¹·Â?d Pu9ØY @  ¹¸Â?d `P÷¨Ï‡ @  ¹¹Â?d  Pk¤ @  ¹ºÂ?d àPéhz @  ¹ »Â?d PÌz7 @  ¹ ¼Â?d `P‘]mé @  ¹ ½Â?d  Py] @  ¹ ¾Â?d àP„žnƒ @  ¹ ¿Â?d P€óá’ @  ¹ÀÂ?d `PböL @  ¹ÁÂ?d  P3jx @  ¹ÂÂ?d àP±ûoQ @  ¹ÃÂ?d Ph=ao @  ¹ÄÂ?d `Pê¬v± @  ¹ÅÂ?d  P}þb @  ¹ÆÂ?d àPÿouÛ @  ¹ÇÂ?d Póµ´ë @  ¹ÈÂ?d `Pq$£5 @  ¹ÉÂ?d  Pí @  ¹ÊÂ?d àPoÈ @  ¹ËÂ?d P2ÐY8 @  ¹ÌÂ?d `P°ANæ @  ¹ÍÂ?d  P'ZR @  ¹ÎÂ?d àP¥‚MŒ @  ¹ÏÂ?d PÌîP @  ¹ÐÂ?d `PN™ùŽ @  ¹ÑÂ?d  Pn—Pý @  ¹ ÒÂ?d àPìG# @  ¹!ÓÂ?d P5ÀI @  ¹"ÔÂ?d `P·Q^à @  ¹#ÕÂ?d  P Jw @  ¹$ÖÂ?d àP¢’]© @  ¹%×Â?d P®Hœ™ @  ¹&ØÂ?d `P,Ù‹G @  ¹'ÙÂ?d  P°p;d @  ¹(ÚÂ?d àP2á,º @  ¹)ÛÂ?d PBœX @  ¹*ÜÂ?d `PÀ † @  ¹+ÝÂ?d  PW_ 2 @  ¹,ÞÂ?d àPÕÎì @  ¹-ßÂ?d P!ó€ì @  ¹.àÂ?d `P£b—2 @  ¹/áÂ?d  P’jñ @  ¹0âÂ?d àPû/ @  ¹1ãÂ?d PÉ= @  ¹2äÂ?d `PK¬Ï @  ¹3åÂ?d  PÜþ{ @  ¹4æÂ?d àP^o¥ @  ¹5çÂ?d PRµÕ• @  ¹6èÂ?d `PÐ$ÂK @  ¹7éÂ?d  PLrh @  ¹8êÂ?d àPÎe¶ @  ¹9ëÂ?d P“Ð8F @  ¹:ìÂ?d `PA/˜ @  ¹;íÂ?d  P†;, @  ¹<îÂ?d àP‚,ò @  ¹=ïÂ?d Pm. @  ¹>ðÂ?d `Pð @  ¹?ñÂ?d  Pa7 @  ¹@òÂ?d àPã Ï @  ¹AóÂ?d P:Ç.ñ @  ¹BôÂ?d `P¸V9/ @  ¹CõÂ?d  P/-› @  ¹DöÂ?d àP­•:E @  ¹E÷Â?d P¡Oûu @  ¹FøÂ?d `P#Þì« @  ¹GùÂ?d  P¿w\ˆuÐ P @  ¹HúÂ?d àP=æKV @  ¹IûÂ?d 8 Po;Ï @  ¹JüÂ?d x PŠþ, @  ¹KýÂ?d ¸ P¬8¥ @  ¹LþÂ?d ø PŸ=/{ @  ¹MÿÂ?d 8!Pùñ¡ô @  ¹NÃ?d x!P{`¶* @  ¹OÃ?d ¸!PJh8é @  ¹PÃ?d ø!PÈù/7 @  ¹QÃ?d 8"P?!  @  ¹RÃ?d x"P“®6× @  ¹SÃ?d ¸"Pü"c @  ¹TÃ?d ø"P†m5½ @  ¹UÃ?d 8#PŠ·ô @  ¹VÃ?d x#P&ãS @  ¹W Ã?d ¸#P”Sp @  ¹X Ã?d ø#PD® @  ¹Y Ã?d 8$PKÒ^ @  ¹Z Ã?d x$PÉC€ @  ¹[ Ã?d ¸$P^4 @  ¹\Ã?d ø$PÜ€ ê @  ¹]Ã?d 8%Pµ ®6 @  ¹^Ã?d x%P7›¹è @  ¹_Ã?d ¸%P•› @  ¹`Ã?d ø%P•E @  ¹aÃ?d 8&PL { @  ¹bÃ?d x&PÎS¥ @  ¹cÃ?d ¸&PY  @  ¹dÃ?d ø&PÛÏ @  ¹eÃ?d 8'P×JÜÿ @  ¹fÃ?d x'PUÛË! @  ¹gÃ?d ¸'PÉr{ @  ¹hÃ?d ø'PKãlÜ @  ¹iÃ?d 8(P;žN> @  ¹jÃ?d x(P¹Yà @  ¹kÃ?d ¸(P.]MT @  ¹lÃ?d ø(P¬ÌZŠ @  ¹mÃ?d 8)PXñÀŠ @  ¹n Ã?d x)PÚ`×T @  ¹o!Ã?d ¸)PëhY— @  ¹p"Ã?d ø)PiùNI @  ¹q#Ã?d 8*P°?@w @  ¹r$Ã?d x*P2®W© @  ¹s%Ã?d ¸*P¥üC @  ¹t&Ã?d ø*P'mTà @  ¹u'Ã?d 8+P+·•ó @  ¹v(Ã?d x+P©&‚- @  ¹w)Ã?d ¸+P52 @  ¹x*Ã?d ø+P·%Ð @  ¹y+Ã?d 8,PêÒx  @  ¹z,Ã?d x,PhCoþ @  ¹{-Ã?d ¸,Pÿ{J @  ¹|.Ã?d ø,P}€l” @  ¹}/Ã?d 8-P ÏH @  ¹~0Ã?d x-P–›Ø– @  ¹1Ã?d ¸-PûÄGF @  ¹€2Ã?d ø-PyUP˜ @  ¹3Ã?d 8.P “^¦ @  ¹‚4Ã?d x.P"Ix @  ¹ƒ5Ã?d ¸.PµP]Ì @  ¹„6Ã?d ø.P7ÁJ @  ¹…7Ã?d 8/P;‹" @  ¹†8Ã?d x/P¹Šœü @  ¹‡9Ã?d ¸/P%#,ß @  ¹ˆ:Ã?d ø/P§²; @  ¹‰;Ã?d 80P]î)L @  ¹Š<Ã?d x0Pß>’ @  ¹‹=Ã?d ¸0PH-*& @  ¹Œ>Ã?d ø0Pʼ=ø @  ¹?Ã?d 81PÎѲé @  ¹Ž@Ã?d x1PL@¥7 @  ¹AÃ?d ¸1P}H+ô @  ¹BÃ?d ø1PÿÙ<* @  ¹‘CÃ?d 82P&2 @  ¹’DÃ?d x2P¤Ž%Ê @  ¹“EÃ?d ¸2P3Ü1~ @  ¹”FÃ?d ø2P±M&  @  ¹•GÃ?d 83P½—ç @  ¹–HÃ?d x3P?ðN @  ¹—IÃ?d ¸3P£¯@m @  ¹˜JÃ?d ø3P!>W³ @  ¹™KÃ?d 84P|ò C @  ¹šLÃ?d x4Pþc @  ¹›MÃ?d ¸4Pi1 ) @  ¹œNÃ?d ø4Pë ÷ @  ¹OÃ?d 85P‚*½+ @  ¹žPÃ?d x5P»ªõ @  ¹ŸQÃ?d ¸5P µ† @  ¹ RÃ?d ø5P¢$X @  ¹¡SÃ?d 86P{âf @  ¹¢TÃ?d x6Pùs ¸ @  ¹£UÃ?d ¸6Pn!  @  ¹¤VÃ?d ø6Pì°Ò @  ¹¥WÃ?d 87PàjÏâ @  ¹¦XÃ?d x7PbûØ< @  ¹§YÃ?d ¸7PþRh @  ¹¨ZÃ?d ø7P|ÃÁ @  ¹©[Ã?d 88P ¾]# @  ¹ª\Ã?d x8PŽ/Jý @  ¹«]Ã?d ¸8P}^I @  ¹¬^Ã?d ø8P›ìI— @  ¹­_Ã?d 89PoÑÓ— @  ¹®`Ã?d x9Pí@ÄI @  ¹¯aÃ?d ¸9PÜHJŠ @  ¹°bÃ?d ø9P^Ù]T @  ¹±cÃ?d 8:P‡Sj @  ¹²dÃ?d x:PŽD´ @  ¹³eÃ?d ¸:P’ÜP @  ¹´fÃ?d ø:PMGÞ @  ¹µgÃ?d 8;P—†î @  ¹¶hÃ?d x;Pž‘0 @  ¹·iÃ?d ¸;P¯! @  ¹¸jÃ?d ø;P€>6Í @  ¹¹kÃ?d 8Ptå}Š @  ¹ÂtÃ?d x>PötjT @  ¹ÃuÃ?d ¸>Pa&~à @  ¹ÄvÃ?d ø>Pã·i> @  ¹ÅwÃ?d 8?Pïm¨ @  ¹ÆxÃ?d x?Pmü¿Ð @  ¹ÇyÃ?duÐ@P7 ¸?PñUó @  ¹ÈzÃ?d ø?PsÄ- @  ¹É{Ã?d P@Pôê î @  ¹Ê|Ã?d @PÔ @  ¹Ë}Ã?d Ð@Pá)„ @  ¹Ì~Ã?d AP1aƒl @  ¹ÍÃ?d PAPzÃÙ @  ¹Î€Ã?d APZæÁ' @  ¹ÏÃ?d ÐAPÉŠZÄ @  ¹Ð‚Ã?d BPTÎú @  ¹ÑƒÃ?d PBP’ÝC$ @  ¹Ò„Ã?d BP²(AÚ @  ¹Ó…Ã?d ÐBP‡@N @  ¹Ô†Ã?d CPWV̦ @  ¹Õ‡Ã?d PCP U–  @  ¹ÖˆÃ?d CP) ”^ @  ¹×‰Ã?d ÐCPm1] @  ¹ØŠÃ?d DP#ÂR @  ¹Ù‹Ã?d PDPÈ0{s @  ¹ÚŒÃ?d DPèÅy @  ¹ÛÃ?d ÐDPÝóx @  ¹ÜŽÃ?d EP »ôñ @  ¹ÝÃ?d PEP6èÌ @  ¹ÞÃ?d EPÎå @  ¹ß‘Ã?d ÐEP”wr¶ @  ¹à’Ã?d FP 3Òw @  ¹á“Ã?d PFPÏ kV @  ¹â”Ã?d€ FP.’ž¨ @  º•Ã?d ÐFPúå× @  º–Ã?d GP*­[ý @  º—Ã?d PGP±çú @  º˜Ã?d GP‘øè @  º™Ã?d ÐGPam‘ @  ºšÃ?d HPU’ŽŒ @  º›Ã?d PHP]3h× @  ºœÃ?d HP}Æj) @  º Ã?d ÐHP¹P @  º žÃ?d IP]ñ¸ @  º ŸÃ?d PIP>\æc @  º  Ã?d IP©ä @  º ¡Ã?d ÐIPîÖä @  º¢Ã?d JPs’¾% @  º£Ã?d PJPÖ’fž @  º¤Ã?d JPögd` @  º¥Ã?d ÐJPž @  º¦Ã?d KPÖPñ @  º§Ã?d PKPM³ @  º¨Ã?d KPmï±ä @  º©Ã?d ÐKPK @  ºªÃ?d LP„Þ¸’ @  º«Ã?d PLPŒ^É @  º¬Ã?d LP¬Š\7 @  º­Ã?d ÐLP\õ¦N @  º®Ã?d MPŒ½*¦ @  º¯Ã?d PMPr§é¡ @  º°Ã?d MPRRë_ @  º±Ã?d ÐMP¢-& @  º²Ã?d NP?i±ç @  º³Ã?d PNP‹oNì @  º ´Ã?d NP«šL @  º!µÃ?d ÐNP[å¶k @  º"¶Ã?d OP‹­:ƒ @  º#·Ã?d POPç›h @  º$¸Ã?d OP0™– @  º%¹Ã?d ÐOPÀmcï @  º&ºÃ?d PP~³ß] @  º'»Ã?d PPPv9 @  º(¼Ã?d PPVç;ø @  º)½Ã?d ÐPP¦˜Á @  º*¾Ã?d QPvÐMi @  º+¿Ã?d PQPå-¢£ @  º,ÀÃ?d QPÅØ ] @  º-ÁÃ?d ÐQP5§Z$ @  º.ÂÃ?d RP¨ãúå @  º/ÃÃ?d PRP ã"^ @  º0ÄÃ?d RP-   @  º1ÅÃ?d ÐRPÝiÚÙ @  º2ÆÃ?d SP !V1 @  º3ÇÃ?d PSP–k÷Ú @  º4ÈÃ?d SP¶žõ$ @  º5ÉÃ?d ÐSPFá] @  º6ÊÃ?d TP_¯üR @  º7ËÃ?d PTPW  @  º8ÌÃ?d TPwû÷ @  º9ÍÃ?d ÐTP‡„⎠@  º:ÎÃ?d UPWÌnf @  º;ÏÃ?d PUP©Ö­a @  º<ÐÃ?d UP‰#¯Ÿ @  º=ÑÃ?d ÐUPy\Uæ @  º>ÒÃ?d VPäõ' @  º?ÓÃ?d PVPþ ¾ @  º@ÔÃ?d VPÞì@ @  ºAÕÃ?d ÐVP.“ô9 @  ºBÖÃ?d WPþÛxÑ @  ºC×Ã?d PWPe‘Ù: @  ºDØÃ?d WPEdÛÄ @  ºEÙÃ?d ÐWPµ!½ @  ºFÚÃ?d XPä­  @  ºGÛÃ?d PXP‰EKû @  ºHÜÃ?d XP©°I @  ºIÝÃ?d ÐXPYϳ| @  ºJÞÃ?d YP‰‡?” @  ºKßÃ?d PYPê*ÅO @  ºLàÃ?d YPÊßDZ @  ºMáÃ?d ÐYP: =È @  ºNâÃ?d ZP§ä  @  ºOãÃ?d PZPäE² @  ºPäÃ?d ZP"GL @  ºQåÃ?d ÐZPÒn½5 @  ºRæÃ?d [P&1Ý @  ºSçÃ?d P[P™l6 @  ºTèÃ?d [P¹™’È @  ºUéÃ?d Ð[PIæh± @  ºVêÃ?d \PP¨›¾ @  ºWëÃ?d P\PX }å @  ºXìÃ?d \Pxü @  ºYíÃ?d Ð\Pˆƒ…b @  ºZîÃ?d ]PXË Š @  º[ïÃ?d P]P¦ÑÊ @  º\ðÃ?d ]P†$Ès @  º]ñÃ?d Ð]Pv[2  @  º^òÃ?d ^Pë’Ë @  º_óÃ?d P^P_mÀ @  º`ôÃ?d ^Pìo> @  ºaõÃ?d Ð^P“•G @  ºböÃ?d _P_Û¯ @  ºc÷Ã?d P_PÄ‘¸D @  ºdøÃ?d _Pädºº @  ºuÐ`PeùÃ?d Ð_Pïu{à @  ºf úÃ?d (`PQÎ[ @  ºg ûÃ?d h`PY,( @  ºh üÃ?d ¨`PyÙ*þ @  ºi ýÃ?d è`P‰¦Ð‡ @  ºj þÃ?d (aPYî\o @  ºk ÿÃ?d haP”»­ @  ºl Ä?d ¨aP´NS @  ºm Ä?d èaPD1u* @  ºn Ä?d (bPÙuÕë @  ºo Ä?d hbP|u P @  ºp Ä?d ¨bP\€® @  ºq Ä?d èbP¬ÿõ× @  ºr Ä?d (cP|·y? @  ºs Ä?d hcPçýØÔ @  ºt Ä?d ¨cPÇÚ* @  ºu  Ä?d ècP7w S @  ºv  Ä?d (dP.9Ó\ @  ºw  Ä?d hdP&˜5 @  ºx  Ä?d ¨dPm7ù @  ºy  Ä?d èdPöÍ€ @  ºz Ä?d (eP&ZAh @  º{ Ä?d hePØ@‚o @  º| Ä?d ¨ePøµ€‘ @  º} Ä?d èePÊzè @  º~ Ä?d (fP•ŽÚ) @  º Ä?d hfPlÙ @  º€ Ä?d ¨fPL, @  º Ä?d èfP¼Së @  º‚ Ä?d (gPlgî @  ºƒ Ä?d hgP÷QÆ @  º„ Ä?d ¨gPפÄû @  º… Ä?d ègP'Û>‚ @  º† Ä?d (hP$²Ÿ @  º‡ Ä?d hhP…TÄ @  ºˆ Ä?d ¨hP;pV: @  º‰ Ä?d èhPˬC @  ºŠ Ä?d (iPG « @  º‹ Ä?d hiPxêÚp @  ºŒ  Ä?d ¨iPXØŽ @  º !Ä?d èiP¨`"÷ @  ºŽ "Ä?d (jP5$‚6 @  º #Ä?d hjP$Z @  º $Ä?d ¨jP°ÑXs @  º‘ %Ä?d èjP@®¢  @  º’ &Ä?d (kPæ.â @  º“ 'Ä?d hkP ¬  @  º” (Ä?d ¨kP+Y÷ @  º• )Ä?d èkPÛ&wŽ @  º– *Ä?d (lPÂh„ @  º— +Ä?d hlPÊÉbÚ @  º˜ ,Ä?d ¨lPê<`$ @  º™ -Ä?d èlPCš] @  ºš .Ä?d (mPÊ µ @  º› /Ä?d hmP4Õ² @  ºœ 0Ä?d ¨mPä×L @  º 1Ä?d èmPä›-5 @  ºž 2Ä?d (nPyßô @  ºŸ 3Ä?d hnPÍÙrÿ @  º  4Ä?d ¨nPí,p @  º¡ 5Ä?d ènPSŠx @  º¢ 6Ä?d (oPÍ @  º£ 7Ä?d hoPVQ§{ @  º¤ 8Ä?d ¨oPv¤¥… @  º¥ 9Ä?d èoP†Û_ü @  º¦ :Ä?d (pP8ãN @  º§ ;Ä?d hpP0¤ @  º¨ <Ä?d ¨pPQë @  º© =Ä?d èpPà.ý’ @  ºª >Ä?d (qP0fqz @  º« ?Ä?d hqP£›ž° @  º¬ @Ä?d ¨qPƒnœN @  º­ AÄ?d èqPsf7 @  º® BÄ?d (rPîUÆö @  º¯ CÄ?d hrPKUM @  º° DÄ?d ¨rPk ³ @  º± EÄ?d èrP›ßæÊ @  º² FÄ?d (sPK—j" @  º³ GÄ?d hsPÐÝËÉ @  º´ HÄ?d ¨sPð(É7 @  ºµ IÄ?d èsPW3N @  º¶ JÄ?d (tPÀA @  º· KÄ?d htP¸& @  º¸ LÄ?d ¨tP1M$ä @  º¹ MÄ?d ètPÁ2Þ @  ºº NÄ?d (uPzRu @  º» OÄ?d huPï`‘r @  º¼ PÄ?d ¨uPÏ•“Œ @  º½ QÄ?d èuP?êiõ @  º¾ RÄ?d (vP¢®É4 @  º¿ SÄ?d hvP¸¯0­ @  ºÀ TÄ?d ¨vP˜Z2S @  ºÁ UÄ?d èvPh%È* @  º VÄ?d (wP¸mD @  ºà WÄ?d hwP#'å) @  ºÄ XÄ?d ¨wPÒç× @  ºÅ YÄ?d èwPó­® @  ºÆ ZÄ?d (xPÇR‘³ @  ºÇ [Ä?d hxPÏówè @  ºÈ \Ä?d ¨xPïu @  ºÉ ]Ä?d èxPyo @  ºÊ ^Ä?d (yPÏ1‡ @  ºË _Ä?d hyP¬œù\ @  ºÌ `Ä?d ¨yPŒiû¢ @  ºÍ aÄ?d èyP|Û @  ºÎ bÄ?d (zPáR¡ @  ºÏ cÄ?d hzPDRy¡ @  ºÐ dÄ?d ¨zPd§{_ @  ºÑ eÄ?d èzP”Ø& @  ºÒ fÄ?d ({PD Î @  ºÓ gÄ?d h{PßÚ¬% @  ºÔ hÄ?d ¨{Pÿ/®Û @  ºÕ iÄ?d è{PPT¢ @  ºÖ jÄ?d (|P§­ @  º× kÄ?d h|P¿Aö @  ºØ lÄ?d ¨|P>JC @  ºÙ mÄ?d è|PÎ5¹q @  ºÚ nÄ?d (}P}5™ @  ºÛ oÄ?d h}Pàgöž @  ºÜ pÄ?d ¨}PÀ’ô` @  ºÝ qÄ?d è}P0í @  ºÞ rÄ?d (~P­©®Ø @  ºß sÄ?d h~P¯QÓ @  ºà tÄ?d ¨~P9ZS- @  ºá uÄ?d è~PÉ%©T @  ºâ vÄ?d€ (Pm®9 @  » wÄ?d hP¥ÐØ @  » xÄ?d ¨PuЀP'7PÒ& @  » yÄ?d èPF!| @  »€zÄ?d @€P(Ÿžo @  »€{Ä?d €€PLè2n @  »€|Ä?d À€PÎy%° @  »€}Ä?d P¢m… @  »€~Ä?d @P ü [ @  » €Ä?d €PÉêYÎ @  » €€Ä?d ÀPK{N @  » €Ä?d ‚Pa˜ø› @  » €‚Ä?d @‚Pã ïE @  » €ƒÄ?d €‚P‡~CD @  »€„Ä?d À‚PïTš @  »€…Ä?d ƒPÄZTO @  »€†Ä?d @ƒPFËC‘ @  »€‡Ä?d €ƒPº¬ · @  »€ˆÄ?d ÀƒP8=i @  »€‰Ä?d „P–Ôþ, @  »€ŠÄ?d @„PEéò @  »€‹Ä?d €„Pp2Eó @  »€ŒÄ?d À„Pò£R- @  »€Ä?d …Pž·l @  »€ŽÄ?d @…P&{Æ @  »€Ä?d €…P…V  @  »€Ä?d À…P€AÒ @  »€‘Ä?d †P-c÷Y @  »€’Ä?d @†P¯òà‡ @  »€“Ä?d €†PË…L† @  »€”Ä?d À†PI[X @  »€•Ä?d ‡P™§|= @  » €–Ä?d @‡P6kã @  »!€—Ä?d €‡PçQ$Å @  »"€˜Ä?d À‡PeÀ3 @  »#€™Ä?d ˆP昩L @  »$€šÄ?d @ˆPd ¾’ @  »%€›Ä?d €ˆP~“ @  »&€œÄ?d ÀˆP‚ïM @  »'€Ä?d ‰Pîû;x @  »(€žÄ?d @‰Plj,¦ @  »)€ŸÄ?d €‰Phê8° @  »*€ Ä?d À‰Pê{/n @  »+€¡Ä?d ŠPÀ˜™å @  »,€¢Ä?d @ŠPB Ž; @  »-€£Ä?d €ŠP&~": @  ».€¤Ä?d ÀŠP¤ï5ä @  »/€¥Ä?d ‹PeZ51 @  »0€¦Ä?d @‹PçË"ï @  »1€§Ä?d €‹P¬mÉ @  »2€¨Ä?d À‹P™=z @  »3€©Ä?d ŒP7ÔŸR @  »4€ªÄ?d @ŒPµEˆŒ @  »5€«Ä?d €ŒPÑ2$ @  »6€¬Ä?d ÀŒPS£3S @  »7€­Ä?d P?· f @  »8€®Ä?d @P½&¸ @  »9€¯Ä?d €P$7r @  »:€°Ä?d ÀP¦€ ¬ @  »;€±Ä?d ŽPŒc–' @  »<€²Ä?d @ŽPòù @  »=€³Ä?d €ŽPj…-ø @  »>€´Ä?d ÀŽPè:& @  »?€µÄ?d P– Ñ @  »@€¶Ä?d @P1  @  »A€·Ä?d €PèVC) @  »B€¸Ä?d ÀPjÇT÷ @  »C€¹Ä?d Pc¾þ @  »D€ºÄ?d @Pá/éÑ @  »E€»Ä?d €P…XEÐ @  »F€¼Ä?d ÀPÉR @  »G€½Ä?d ‘PkÝl; @  »H€¾Ä?d @‘PéL{å @  »I€¿Ä?d €‘Pœzâ @  »J€ÀÄ?d À‘PŸ m< @  »K€ÁÄ?d ’PµîÛ· @  »L€ÂÄ?d @’P7Ìi @  »M€ÃÄ?d €’PS`h @  »N€ÄÄ?d À’PÑ™w¶ @  »O€ÅÄ?d “P,wc @  »P€ÆÄ?d @“P’½`½ @  »Q€ÇÄ?d €“PnÚ/› @  »R€ÈÄ?d À“PìK8E @  »S€ÉÄ?d ”PB¢Ý @  »T€ÊÄ?d @”PÀ3ÊÞ @  »U€ËÄ?d €”P¤Dfß @  »V€ÌÄ?d À”P&Õq @  »W€ÍÄ?d •PJÁO4 @  »X€ÎÄ?d @•PÈPXê @  »Y€ÏÄ?d €•PQgu  @  »Z€ÐÄ?d À•PÓöbþ @  »[€ÑÄ?d –PùÔu @  »\€ÒÄ?d @–P{„ë @  »]€ÓÄ?d €–Póoª @  »^€ÔÄ?d À–Pbxt @  »_€ÕÄ?d —PMÑ_ @  »`€ÖÄ?d @—PÏ@HÏ @  »a€×Ä?d €—P3'é @  »b€ØÄ?d À—P±¶7 @  »c€ÙÄ?d ˜P2îŠ` @  »d€ÚÄ?d @˜P°¾ @  »e€ÛÄ?d €˜PÔ1¿ @  »f€ÜÄ?d À˜PV™&a @  »g€ÝÄ?d ™P:T @  »h€ÞÄ?d @™P¸Š @  »i€ßÄ?d €™P¼œœ @  »j€àÄ?d À™P> B @  »k€áÄ?d šPîºÉ @  »l€âÄ?d @šP–­ @  »m€ãÄ?d €šPò @  »n€äÄ?d ÀšPp™È @  »o€åÄ?d ›P±, @  »p€æÄ?d @›P3½Ã @  »q€çÄ?d €›PÏÚNå @  »r€èÄ?d À›PMKY; @  »s€éÄ?d œP㢼~ @  »t€êÄ?d @œPa3«  @  »u€ëÄ?d €œPD¡ @  »v€ìÄ?d ÀœP‡Õ @  »w€íÄ?d PëÁ.J @  »x€îÄ?d @PiP9” @  »y€ïÄ?d €Pðg^ @  »z€ðÄ?d ÀPrö€ @  »{€ñÄ?d žPXµ  @  »|€òÄ?d @žPÚ„¢Õ @  »}€óÄ?d €žP¾óÔ @  »~€ôÄ?d ÀžPÅ?d X±PÚî[â @  »É?Å?d ˜±P.>Zå @  »Ê@Å?d رP¬¯M; @  »ËAÅ?d ²P†Lû° @  »ÌBÅ?d X²PÝìn @  »ÍCÅ?d ˜²P`ª@o @  »ÎDÅ?d زPâ;W± @  »ÏEÅ?d ³P#ŽWd @  »ÐFÅ?d X³P¡@º @  »ÑGÅ?d ˜³P]xœ @  »ÒHÅ?d سPßéB @  »ÓIÅ?d ´Pqý @  »ÔJÅ?d X´Pó‘êÙ @  »ÕKÅ?d ˜´P—æFØ @  »ÖLÅ?d Ø´PwQ @  »×MÅ?d µPyco3 @  »ØNÅ?d XµPûòxí @  »ÙOÅ?d ˜µPbÅU' @  »ÚPÅ?d صPàTBù @  »ÛQÅ?d ¶PÊ·ôr @  »ÜRÅ?d X¶PH&㬠@  »ÝSÅ?d ˜¶P,QO­ @  »ÞTÅ?d ضP®ÀXs @  »ßUÅ?d ·P~s @  »àVÅ?d X·PüâhÈ @  »áWÅ?d ˜·P…'î @  »âXÅ?d€ Ø·PB˜‰ @  ¼YÅ?d ¸Pf[J÷ @  ¼ZÅ?d X¸PäÊ]) @  ¼[Å?d ˜¸PEô Å @  ¼\Å?d ظPÇe @  ¼]Å?d ¹PeÃ|T @  ¼^Å?d X¹PçRkŠ @  ¼_Å?d ˜¹P-` æ @  ¼`Å?d عP¯ñ78 @  ¼ aÅ?d ºP@[z^ @  ¼ bÅ?d XºPÂÊm€ @  ¼ cÅ?d ˜ºPcô:l @  ¼ dÅ?d غPáe-² @  ¼ eÅ?d »PCÃLý @  ¼fÅ?d X»PÁR[# @  ¼gÅ?d ˜»P^&uŸ @  ¼hÅ?d Ø»PÜ·bA @  ¼iÅ?d ¼P·|é @  ¼jÅ?d X¼P5†k7 @  ¼kÅ?d ˜¼P”¸<Û @  ¼lÅ?d ؼP)+ @  ¼mÅ?d ½P´JJ @  ¼nÅ?d X½P6]” @  ¼oÅ?d ˜½Pa›/$ @  ¼pÅ?d ؽPã 8ú @  ¼qÅ?d ¾P  uœ @  ¼rÅ?d X¾PŽ1bB @  ¼sÅ?d ˜¾P/5® @  ¼tÅ?d ؾP­ž"p @  ¼uÅ?d ¿P8C? @  ¼vÅ?d X¿P©Tá @  ¼wÅ?d ˜¿PÛ]í @uÐÀP  ¼ xÅ?d Ø¿PJJ3 @  ¼!yÅ?d 0ÀP—TöÆ @  ¼"zÅ?d pÀPÅá @  ¼#{Å?d °ÀP´û¶ô @  ¼$|Å?d ðÀP6j¡* @  ¼%}Å?d 0ÁP”ÌÀe @  ¼&~Å?d pÁP]×» @  ¼'Å?d °ÁP1ùÝT @  ¼(€Å?d ðÁP³hÊŠ @  ¼)Å?d 0ÂP\‡ì @  ¼*‚Å?d pÂPÞS2 @  ¼+ƒÅ?d °ÂPmÇÞ @  ¼,„Å?d ðÂPýüÐ @  ¼-…Å?d 0ÃP_Z±O @  ¼.†Å?d pÃPÝ˦‘ @  ¼/‡Å?d °ÃPB¿ˆ- @  ¼0ˆÅ?d ðÃPÀ.Ÿó @  ¼1‰Å?d 0ÄP«Ž[ @  ¼2ŠÅ?d pÄP)–… @  ¼3‹Å?d °ÄPˆ!Ái @  ¼4ŒÅ?d ðÄP °Ö· @  ¼5Å?d 0ÅP¨·ø @  ¼6ŽÅ?d pÅP*‡ & @  ¼7Å?d °ÅP}Ò– @  ¼8Å?d ðÅPÿ“ÅH @  ¼9‘Å?d 0ÆP9ˆ. @  ¼:’Å?d pÆP’¨Ÿð @  ¼;“Å?d °ÆP3–È @  ¼<”Å?d ðÆP±ß @  ¼=•Å?d 0ÇP¡¾ @  ¼>–Å?d pÇP‘0©S @  ¼?—Å?d °ÇP±E¦Í @  ¼@˜Å?d ðÇP3Ô± @  ¼A™Å?d 0ÈPuÅЩ @  ¼BšÅ?d pÈP÷TÇw @  ¼C›Å?d °ÈPVj› @  ¼DœÅ?d ðÈPÔû‡E @  ¼EÅ?d 0ÉPv]æ  @  ¼FžÅ?d pÉPôÌñÔ @  ¼GŸÅ?d °ÉP>þº¸ @  ¼H Å?d ðÉP¼o­f @  ¼I¡Å?d 0ÊPSÅà @  ¼J¢Å?d pÊPÑT÷Þ @  ¼K£Å?d °ÊPpj 2 @  ¼L¤Å?d ðÊPòû·ì @  ¼M¥Å?d 0ËPP]Ö£ @  ¼N¦Å?d pËPÒÌÁ} @  ¼O§Å?d °ËPM¸ïÁ @  ¼P¨Å?d ðËPÏ)ø @  ¼Q©Å?d 0ÌP¤‰æ· @  ¼RªÅ?d pÌP&ñi @  ¼S«Å?d °ÌP‡&¦… @  ¼T¬Å?d ðÌP·±[ @  ¼U­Å?d 0ÍP§Ð @  ¼V®Å?d pÍP%€ÇÊ @  ¼W¯Å?d °ÍPrµz @  ¼X°Å?d ðÍP𔢤 @  ¼Y±Å?d 0ÎP>ï @  ¼Z²Å?d pÎP¯ø @  ¼[³Å?d °ÎP<‘¯ð @  ¼\´Å?d ðÎP¾¸. @  ¼]µÅ?d 0ÏP¦Ùa @  ¼^¶Å?d pÏPž7ο @  ¼_·Å?d °ÏPEdz @  ¼`¸Å?d ðÏP’ÔÐm @  ¼a¹Å?d 0ÐP^äx @  ¼bºÅ?d pÐPÜu–¦ @  ¼c»Å?d °ÐP}KÁJ @  ¼d¼Å?d ðÐPÿÚÖ” @  ¼e½Å?d 0ÑP]|·Û @  ¼f¾Å?d pÑPßí  @  ¼g¿Å?d °ÑPåþx @  ¼hÀÅ?d ðÑPgé¦ @  ¼iÁÅ?d 0ÒPˆ´¤À @  ¼jÂÅ?d pÒP %³ @  ¼kÃÅ?d °ÒP«äò @  ¼lÄÅ?d ðÒP)Šó, @  ¼mÅÅ?d 0ÓP‹,’c @  ¼nÆÅ?d pÓP ½…½ @  ¼oÇÅ?d °ÓP–É« @  ¼pÈÅ?d ðÓPX¼ß @  ¼qÉÅ?d 0ÔPø¢w @  ¼rÊÅ?d pÔPýiµ© @  ¼sËÅ?d °ÔP\WâE @  ¼tÌÅ?d ðÔPÞÆõ› @  ¼uÍÅ?d 0ÕP|`”Ô @  ¼vÎÅ?d pÕPþñƒ  @  ¼wÏÅ?d °ÕP©tñº @  ¼xÐÅ?d ðÕP+åæd @  ¼yÑÅ?d 0ÖPÄO« @  ¼zÒÅ?d pÖPFÞ¼Ü @  ¼{ÓÅ?d °ÖPçàë0 @  ¼|ÔÅ?d ðÖPeqüî @  ¼}ÕÅ?d 0×PÇס @  ¼~ÖÅ?d p×PEFŠ @  ¼×Å?d °×P†eµÐ @  ¼€ØÅ?d ð×Pô¢ @  ¼ÙÅ?d 0ØPBåô @  ¼‚ÚÅ?d pØPÀtÔj @  ¼ƒÛÅ?d °ØPaJƒ† @  ¼„ÜÅ?d ðØPãÛ”X @  ¼…ÝÅ?d 0ÙPA}õ @  ¼†ÞÅ?d pÙPÃìâÉ @  ¼‡ßÅ?d °ÙP Þ©¥ @  ¼ˆàÅ?d ðÙP‹O¾{ @  ¼‰áÅ?d 0ÚPdåó @  ¼ŠâÅ?d pÚPætäà @  ¼‹ãÅ?d °ÚPGJ³/ @  ¼ŒäÅ?d ðÚPÅÛ¤ñ @  ¼åÅ?d 0ÛPg}ž @  ¼ŽæÅ?d pÛPåìÒ` @  ¼çÅ?d °ÛPz˜üÜ @  ¼èÅ?d ðÛPø ë @  ¼‘éÅ?d 0ÜP“©õª @  ¼’êÅ?d pÜP8ât @  ¼“ëÅ?d °ÜP°µ˜ @  ¼”ìÅ?d ðÜP2—¢F @  ¼•íÅ?d 0ÝP1à  @  ¼–îÅ?d pÝP Ô× @  ¼—ïÅ?d °ÝPE%¦g @  ¼˜ðÅ?d ðÝPÇ´±¹ @  ¼™ñÅ?d 0ÞP(üß @  ¼šòÅ?d pÞPªë @  ¼›óÅ?d °ÞP ±¼í @  ¼œôÅ?d ðÞP‰ «3 @  ¼õÅ?d 0ßP+†Ê| @  ¼žöÅ?d pßP©Ý¢ @  ¼Ÿ÷Å?d uÐàP/°ßP'eÔ® @  ¼ øÅ?d ðßPœ3¥ @  ¼¡ ùÅ?d HàP÷y¬ô @  ¼¢ úÅ?d ˆàP׌®  @  ¼£ ûÅ?d ÈàPÔÖìÆ @  ¼¤ üÅ?d áPž`. @  ¼¥ ýÅ?d HáPôášW @  ¼¦ þÅ?d ˆáPÔ˜© @  ¼§ ÿÅ?d ÈáPœ‘çO @  ¼¨ Æ?d âPÕGŽ @  ¼© Æ?d HâPñª½÷ @  ¼ª Æ?d ˆâPÑ_¿  @  ¼« Æ?d ÈâPÒýÅ @  ¼¬ Æ?d ãPMq- @  ¼­ Æ?d HãPò2‹T @  ¼® Æ?d ˆãPÒljª @  ¼¯ Æ?d ÈãPïײ6 @  ¼° Æ?d äPö™A9 @  ¼±  Æ?d HäPæ»@ @  ¼²  Æ?d ˆäP&¹¾ @  ¼³  Æ?d ÈäP%Iûr @  ¼´  Æ?d åPõwš @  ¼µ  Æ?d HåP~ã @  ¼¶ Æ?d ˆåP%‹ @  ¼· Æ?d ÈåPÐjè @  ¼¸ Æ?d æPM.HL @  ¼¹ Æ?d HæP½Q²5 @  ¼º Æ?d ˆæP¤°Ë @  ¼» Æ?d ÈæPžþò @  ¼¼ Æ?d çPN¶~ï @  ¼½ Æ?d HçP¾É„– @  ¼¾ Æ?d ˆçPž<†h @  ¼¿ Æ?d ÈçP-œÖ @  ¼À Æ?d èP(ÒË @  ¼Á Æ?d HèPØ­ê² @  ¼ Æ?d ˆèPøXèL @  ¼à Æ?d ÈèPûª€ @  ¼Ä Æ?d éP+J&h @  ¼Å Æ?d HéPÛ5Ü @  ¼Æ Æ?d ˆéPûÀÞï @  ¼Ç Æ?d ÈéP“–€£ @  ¼È  Æ?d êPÒ b @  ¼É !Æ?d HêPþ­Ú @  ¼Ê "Æ?d ˆêPÞXØå @  ¼Ë #Æ?d ÈêPÝš) @  ¼Ì $Æ?d ëP JÁ @  ¼Í %Æ?d HëPý5ì¸ @  ¼Î &Æ?d ˆëPÝÀîF @  ¼Ï 'Æ?d ÈëPàÐÕÚ @  ¼Ð (Æ?d ìPùž&Õ @  ¼Ñ )Æ?d HìP áܬ @  ¼Ò *Æ?d ˆìP)ÞR @  ¼Ó +Æ?d ÈìP*Nœž @  ¼Ô ,Æ?d íPúv @  ¼Õ -Æ?d HíP yê @  ¼Ö .Æ?d ˆíP*Œèñ @  ¼× /Æ?d ÈíPßma @  ¼Ø 0Æ?d îPB)/  @  ¼Ù 1Æ?d HîP²VÕÙ @  ¼Ú 2Æ?d ˆîP’£×' @  ¼Û 3Æ?d ÈîP‘ù•ë @  ¼Ü 4Æ?d ïPA± @  ¼Ý 5Æ?d HïP±Îãz @  ¼Þ 6Æ?d ˆïP‘;á„ @  ¼ß 7Æ?d ÈïP½-ý¨ @  ¼à 8Æ?d ðPóA @  ¼á 9Æ?d HðPóŒ»c @  ¼â :Æ?d€ ˆðP§º¥; @  ½ ;Æ?d ÈðPE¡¯Þ @  ½ <Æ?d ñP•é#6 @  ½ =Æ?d HñP ß"¢ @  ½ >Æ?d ˆñP€* \ @  ½ ?Æ?d ÈñPÖž4{ @  ½ @Æ?d òPKÚ”º @  ½ AÆ?d HòPu1¹ @  ½ BÆ?d ˆòPUâ3G @  ½ CÆ?d ÈòP“ñŠf @  ½ DÆ?d óPC¹Ž @  ½ EÆ?d HóPv @  ½ FÆ?d ˆóPVzä @  ½ GÆ?d ÈóPy_â @  ½ HÆ?d ôP7¬í @  ½ IÆ?d HôP‚[7 @  ½ JÆ?d ˆôP¢®5ð @  ½ KÆ?d ÈôPd½ŒÑ @  ½ LÆ?d õP´õ9 @  ½ MÆ?d HõPí @  ½ NÆ?d ˆõP¡6S @  ½ OÆ?d ÈõPše;¹ @  ½ PÆ?d öP!›x @  ½ QÆ?d HöP9ì>{ @  ½ RÆ?d ˆöP<… @  ½ SÆ?d ÈöPß …¤ @  ½ TÆ?d ÷PB L @  ½ UÆ?d H÷P:tØ @  ½ VÆ?d ˆ÷P & @  ½ WÆ?d È÷PD‚P  @  ½ XÆ?d øPp}Ü= @  ½ YÆ?d HøPò`n @  ½ ZÆ?d ˆøPÒâb @  ½! [Æ?d ÈøPñÛ± @  ½" \Æ?d ùPĹWY @  ½# ]Æ?d HùPñVÍ @  ½$ ^Æ?d ˆùPÑzT3 @  ½% _Æ?d ÈùPwžU @  ½& `Æ?d úPêÚõÄ @  ½' aÆ?d HúPÔPÇ @  ½( bÆ?d ˆúPôâR9 @  ½) cÆ?d ÈúP2ñë @  ½* dÆ?d ûPâ¹gð @  ½+ eÆ?d HûP×fd @  ½, fÆ?d ˆûP÷zdš @  ½- gÆ?d ÈûP©y>œ @  ½. hÆ?d üP°7Í“ @  ½/ iÆ?d HüP#[Vp @  ½0 jÆ?d ˆüP®TŽ @  ½1 kÆ?d ÈüPŽí¯ @  ½2 lÆ?d ýPõaG @  ½3 mÆ?d HýP Ã`Ó @  ½4 nÆ?d ˆýP6b- @  ½5 oÆ?d ÈýP;eZÇ @  ½6 pÆ?d þP¦!ú @  ½7 qÆ?d HþP˜ì_ @  ½8 rÆ?d ˆþP¸]û @  ½9 sÆ?d ÈþP~ äÚ @  ½: tÆ?d ÿP®Bh2 @  ½; uÆ?d HÿP›ti¦ @  ½< vÆ?d ˆÿP»kX @  ½= uÐQwÆ?d ÈÿPÜEí‹ @  ½>xÆ?d Q“ñÅz @  ½?yÆ?d `Q¿œ» @  ½@zÆ?d  QŸi}E @  ½A{Æ?d àQYzÄd @  ½B|Æ?d Q‰2HŒ @  ½C}Æ?d `Q¼I @  ½D~Æ?d  QœñKæ @  ½EÆ?d àQ׃ S @  ½F€Æ?d QJÇ«’ @  ½GÆ?d `Qt ‘ @  ½H‚Æ?d  QTÿ o @  ½IƒÆ?d àQ’ìµN @  ½J„Æ?d QB¤9¦ @  ½K…Æ?d `Qw’82 @  ½L†Æ?d  QWg:Ì @  ½M‡Æ?d àQ d`Ê @  ½NˆÆ?d Q*“Å @  ½O‰Æ?d `QƒF& @  ½PŠÆ?d  Q£³ Ø @  ½Q‹Æ?d àQe ³ù @  ½RŒÆ?d Qµè? @  ½SÆ?d `Q€Þ>… @  ½TŽÆ?d  Q +<{ @  ½UÆ?d àQ›x‘ @  ½VÆ?d Q<¤P @  ½W‘Æ?d `Q8ñS @  ½X’Æ?d  Q­ @  ½Y“Æ?d àQÞºŒ @  ½Z”Æ?d Q_6d @  ½[•Æ?d `Q;i7ð @  ½\–Æ?d  Qœ5 @  ½]—Æ?d àQEŸo @  ½^˜Æ?d Qq`ã @  ½_™Æ?d `Qó _F @  ½`šÆ?d  QÓÿ]¸ @  ½a›Æ?d àQìä™ @  ½bœÆ?d QŤhq @  ½cÆ?d ` Qð’iå @  ½džÆ?d   QÐgk @  ½eŸÆ?d à Qvƒj- @  ½f Æ?d QëÇÊì @  ½g¡Æ?d ` QÕ oï @  ½h¢Æ?d   Qõÿm @  ½i£Æ?d à Q3ìÔ0 @  ½j¤Æ?d Qã¤XØ @  ½k¥Æ?d ` QÖ’YL @  ½l¦Æ?d   Qög[² @  ½m§Æ?d à Q¨d´ @  ½n¨Æ?d Q±*ò» @  ½o©Æ?d ` Q"FiX @  ½pªÆ?d   Q³k¦ @  ½q«Æ?d à QÄ Ò‡ @  ½r¬Æ?d Qè^o @  ½s­Æ?d ` Q!Þ_û @  ½t®Æ?d   Q+] @  ½u¯Æ?d à Q:xeï @  ½v°Æ?d Q§<Å. @  ½w±Æ?d `Q™ñ`- @  ½x²Æ?d  Q¹bÓ @  ½y³Æ?d àQÛò @  ½z´Æ?d Q¯_W @  ½{µÆ?d `QšiVŽ @  ½|¶Æ?d  QºœTp @  ½}·Æ?d àQäŸv @  ½~¸Æ?d QZA²Ä @  ½¹Æ?d `Q•z84 @  ½€ºÆ?d  Qµ:Ê @  ½»Æ?d àQsœƒë @  ½‚¼Æ?d Q£Ô @  ½ƒ½Æ?d `Q–â— @  ½„¾Æ?d  Q¶ i @  ½…¿Æ?d àQà£N @  ½†ÀÆ?d Q}ç¸ @  ½‡ÁÆ?d `QC*Œ @  ½ˆÂÆ?d  Qcßr @  ½‰ÃÆ?d àQ¥Ì¦S @  ½ŠÄÆ?d Qu„*» @  ½‹ÅÆ?d `Q@²+/ @  ½ŒÆÆ?d  Q`G)Ñ @  ½ÇÆ?d àQ>Ds× @  ½ŽÈÆ?d Q' €Ø @  ½ÉÆ?d `Q´f; @  ½ÊÆ?d  Q”“Å @  ½‘ËÆ?d àQR€ ä @  ½’ÌÆ?d Q‚È,  @  ½“ÍÆ?d `Q·þ-˜ @  ½”ÎÆ?d  Q— /f @  ½•ÏÆ?d àQ¬XŒ @  ½–ÐÆ?d Q1·M @  ½—ÑÆ?d `QÑN @  ½˜ÒÆ?d  Q/$° @  ½™ÓÆ?d àQé7©‘ @  ½šÔÆ?d Q9%y @  ½›ÕÆ?d `Q I$í @  ½œÖÆ?d  Q,¼& @  ½ׯ?d àQr¿| @  ½žØÆ?d QF@ð @  ½ŸÙÆ?d `QÄ*L[ @  ½ ÚÆ?d  QäßN¥ @  ½¡ÛÆ?d àQ"Ì÷„ @  ½¢ÜÆ?d Qò„{l @  ½£ÝÆ?d `QDzzø @  ½¤ÞÆ?d  QçGx @  ½¥߯?d àQA£y0 @  ½¦àÆ?d QÜçÙñ @  ½§áÆ?d `Qâ*|ò @  ½¨âÆ?d  QÂß~  @  ½©ãÆ?d àQÌÇ- @  ½ªäÆ?d QÔ„KÅ @  ½«åÆ?d `Qá²JQ @  ½¬æÆ?d  QÁGH¯ @  ½­çÆ?d àQŸD© @  ½®èÆ?d Q† ᦠ@  ½¯éÆ?d `QfzE @  ½°êÆ?d  Q5“x» @  ½±ëÆ?d àQó€Áš @  ½²ìÆ?d Q#ÈMr @  ½³íÆ?d `QþLæ @  ½´îÆ?d  Q6 N @  ½µïÆ?d àQ Xvò @  ½¶ðÆ?d QÖ3 @  ½·ñÆ?d `Q®Ñs0 @  ½¸òÆ?d  QŽ$qÎ @  ½¹óÆ?d àQH7Èï @  ½ºôÆ?d Q˜D @  ½»õÆ?d `Q­IE“ @  ½¼öÆ?d  Q¼GmuÐ Q @  ½½÷Æ?d àQÓ¿k @  ½¾øÆ?d 8 Q¢´Ã  @  ½¿ùÆ?d x QŽÙyÌ @  ½ÀúÆ?d ¸ Q®,{2 @  ½ÁûÆ?d ø Qh? @  ½ÂüÆ?d 8!Q¸wNû @  ½ÃýÆ?d x!QAOo @  ½ÄþÆ?d ¸!Q­´M‘ @  ½ÅÿÆ?d ø!Q™¡X( @  ½ÆÇ?d 8"Qåøé @  ½ÇÇ?d x"Q:(]ê @  ½ÈÇ?d ¸"QÝ_ @  ½ÉÇ?d ø"QÜÎæ5 @  ½ÊÇ?d 8#Q †jÝ @  ½ËÇ?d x#Q9°kI @  ½ÌÇ?d ¸#QEi· @  ½ÍÇ?d ø#QGF3± @  ½ÎÇ?d 8$Q^À¾ @  ½Ï Ç?d x$QÍd[] @  ½Ð Ç?d ¸$Qí‘Y£ @  ½Ñ Ç?d ø$Q+‚à‚ @  ½Ò Ç?d 8%QûÊlj @  ½Ó Ç?d x%QÎümþ @  ½ÔÇ?d ¸%Qî o @  ½ÕÇ?d ø%QÕZWê @  ½ÖÇ?d 8&QH÷+ @  ½×Ç?d x&QvÓR( @  ½ØÇ?d ¸&QV&PÖ @  ½ÙÇ?d ø&Q5é÷ @  ½ÚÇ?d 8'Q@}e @  ½ÛÇ?d x'QuKd‹ @  ½ÜÇ?d ¸'QU¾fu @  ½ÝÇ?d ø'Q ½Ç?d ¸1Q¬¥ M @  ¾# ?Ç?d ø1Q?Xå‡ @  ¾$ @Ç?d 82Q¢EF @  ¾% AÇ?d x2QRc¿? @  ¾& BÇ?d ¸2Qr–½Á @  ¾' CÇ?d ø2Qz7[š @  ¾( DÇ?d 83Qª×r @  ¾) EÇ?d x3QZ-  @  ¾* FÇ?d ¸3Qzõ/õ @  ¾+ GÇ?d ø3Q῎ @  ¾, HÇ?d 84Qøñ} @  ¾- IÇ?d x4Qއh @  ¾. JÇ?d ¸4Q({…– @  ¾/ KÇ?d ø4Q{]- @  ¾0 LÇ?d 85Q]3ÑÅ @  ¾1 MÇ?d x5Q­L+¼ @  ¾2 NÇ?d ¸5Q¹)B @  ¾3 OÇ?d ø5Qs£êE @  ¾4 PÇ?d 86QîçJ„ @  ¾5 QÇ?d x6Q˜°ý @  ¾6 RÇ?d ¸6Q>m² @  ¾7 SÇ?d ø6Q6ÌTX @  ¾8 TÇ?d 87Qæ„Ø° @  ¾9 UÇ?d x7Qû"É @  ¾: VÇ?d ¸7Q6 7 @  ¾; WÇ?d ø7Q­DÜ @  ¾< XÇ?d 88Q™» Á @  ¾= YÇ?d x8QiÄ÷¸ @  ¾> ZÇ?d ¸8QI1õF @  ¾? [Ç?d ø8QS0 ß @  ¾@ \Ç?d 89Qƒx€7 @  ¾A ]Ç?d x9QszN @  ¾B ^Ç?d ¸9QSòx° @  ¾C _Ç?d ø9Q0_‚k @  ¾D `Ç?d 8:Q­"ª @  ¾E aÇ?d x:Q]dØÓ @  ¾F bÇ?d ¸:Q}‘Ú- @  ¾G cÇ?d ø:Qu0Qáà-h @  ¾U qÇ?d x>QŸ× @  ¾V rÇ?d ¸>Q1jÕï @  ¾W sÇ?d ø>Q9Ë3´ @  ¾X tÇ?d 8?Q郿\ @  ¾Y uÇ?d x?QüE% @  ¾Z vÇ?duÐ@Q7 ¸?Q9 GÛ @  ¾[ wÇ?d ø?Q›„:å @  ¾\xÇ?d P@QX(€Ù @  ¾]yÇ?d @Q 3o€ @  ¾^zÇ?d Ð@Qˆ¢x^ @  ¾_{Ç?d AQn}c @  ¾`|Ç?d PAQìì ½ @  ¾a}Ç?d AQ¾÷ää @  ¾b~Ç?d ÐAQ<È?d hqQÍgš³ @  ¿?=È?d ¨qQCn5R @  ¿@>È?d èqQÁÿ"Œ @  ¿A?È?d (rQˆž´ @  ¿B@È?d hrQ –j @  ¿CAÈ?d ¨rQ]‚Þ @  ¿DBÈ?d èrQÌ• @  ¿ECÈ?d (sQ‹· @  ¿FDÈ?d hsQ — É @  ¿GEÈ?d ¨sQ•>ê @  ¿HFÈ?d èsQ¯4 @  ¿IGÈ?d (tQÒs¹ã @  ¿JHÈ?d htQPâ®= @  ¿KIÈ?d ¨tQǰº‰ @  ¿LJÈ?d ètQE!­W @  ¿MKÈ?d (uQÑë@ @  ¿NLÈ?d huQSz˜ž @  ¿OMÈ?d ¨uQbr] @  ¿PNÈ?d èuQàム@  ¿QOÈ?d (vQÄeŽv @  ¿RPÈ?d hvQFô™¨ @  ¿SQÈ?d ¨vQѦ @  ¿TRÈ?d èvQS7šÂ @  ¿USÈ?d (wQÇý¸Õ @  ¿VTÈ?d hwQEl¯  @  ¿WUÈ?d ¨wQÙÅ( @  ¿XVÈ?d èwQ[Tö @  ¿YWÈ?d (xQ³9É3 @  ¿ZXÈ?d hxQ1¨Þí @  ¿[YÈ?d ¨xQ¦úÊY @  ¿\ZÈ?d èxQ$k݇ @  ¿][È?d (yQ°¡ÿ @  ¿^\È?d hyQ20èN @  ¿_]È?d ¨yQ>A= @  ¿`^È?d èyQ¯Vã @  ¿a_È?d (zQ)žàÊ @  ¿b`È?d hzQ«÷ @  ¿caÈ?d ¨zQ<]ã  @  ¿dbÈ?d èzQ¾Ìô~ @  ¿ecÈ?d ({Q*Öi @  ¿fdÈ?d h{Q¨—Á· @  ¿geÈ?d ¨{Q4>q” @  ¿hfÈ?d è{Q¶¯fJ @  ¿igÈ?d (|QssØ @  ¿jhÈ?d h|QñâÏC @  ¿kiÈ?d ¨|Qf°Û÷ @  ¿ljÈ?d è|Qä!Ì) @  ¿mkÈ?d (}Qpëî> @  ¿nlÈ?d h}Qòzùà @  ¿omÈ?d ¨}QÃrw# @  ¿pnÈ?d è}QAã`ý @  ¿qoÈ?d (~Qeeï @  ¿rpÈ?d h~QçôøÖ @  ¿sqÈ?d ¨~Qp¦ìb @  ¿trÈ?d è~Qò7û¼ @  ¿usÈ?d (QfýÙ« @  ¿vtÈ?d hQälÎu @  ¿wuÈ?d ¨QuЀQ'xÅ~V @  ¿xvÈ?d èQúTiˆ @  ¿ywÈ?d @€QHxÆ$ @  ¿zxÈ?d €€QhÄÚ @  ¿{yÈ?d À€Q]»ÅN @  ¿|zÈ?d QóI¦ @  ¿}{È?d @QKàð‡ @  ¿~|È?d €Qkòy @  ¿}È?d ÀQ¤.x‰ @  ¿€~È?d ‚Q9jØH @  ¿È?d @‚Qr˜ý @  ¿‚€È?d €‚QRíš @  ¿ƒÈ?d À‚QgÛ›— @  ¿„‚È?d ƒQ·“ @  ¿…ƒÈ?d @ƒQq€®^ @  ¿†„È?d €ƒQQu¬  @  ¿‡…È?d ÀƒQo¸ £ @  ¿ˆ†È?d „Qvöú¬ @  ¿‰‡È?d @„Q(õ ª @  ¿ŠˆÈ?d €„Q¢T @  ¿‹‰È?d À„Q=6£À @  ¿ŒŠÈ?d …Qí~/( @  ¿‹È?d @…Q+m–  @  ¿ŽŒÈ?d €…Q ˜”÷ @  ¿È?d À…Q˜ô @  ¿ŽÈ?d †Q°¯Õ @  ¿‘È?d @†Q>ã—? @  ¿’È?d €†Q•Á @  ¿“‘È?d À†Q+ ”U @  ¿”’È?d ‡Qûh½ @  ¿•“È?d @‡Q={¡œ @  ¿–”È?d €‡QŽ£b @  ¿—•È?d À‡Q#Ca @  ¿˜–È?d ˆQ¼Š| @  ¿™—È?d @ˆQI¿Ðz @  ¿š˜È?d €ˆQiJÒ„ @  ¿›™È?d ÀˆQ\|Ó @  ¿œšÈ?d ‰QŒ4_ø @  ¿›È?d @‰QJ'æÙ @  ¿žœÈ?d €‰QjÒä' @  ¿ŸÈ?d À‰Qè¸Xt @  ¿ žÈ?d ŠQuüøµ @  ¿¡ŸÈ?d @ŠQÓùƒ @  ¿¢ È?d €ŠQóíû} @  ¿£¡È?d ÀŠQÆÛúé @  ¿¤¢È?d ‹Q“v @  ¿¥£È?d @‹QÐ€Ï  @  ¿¦¤È?d €‹QðuÍÞ @  ¿§¥È?d À‹QθhÝ @  ¿¨¦È?d ŒQ×ö›Ò @  ¿©§È?d @ŒQ‰õÁÔ @  ¿ª¨È?d €ŒQ©Ã* @  ¿«©È?d ÀŒQœ6¾ @  ¿¬ªÈ?d QL~NV @  ¿­«È?d @QŠm÷w @  ¿®¬È?d €Qª˜õ‰ @  ¿¯­È?d ÀQ9ônj @  ¿°®È?d ŽQ¤°Î« @  ¿±¯È?d @ŽQŸãöA @  ¿²°È?d €ŽQ¿ô¿ @  ¿³±È?d ÀŽQŠ õ+ @  ¿´²È?d QZhyà @  ¿µ³È?d @Qœ{Àâ @  ¿¶´È?d €Q¼ŽÂ @  ¿·µÈ?d ÀQ‚Cg @  ¿¸¶È?d Q<Û­ @  ¿¹·È?d @Qbž« @  ¿º¸È?d €QBkƒU @  ¿»¹È?d ÀQw]‚Á @  ¿¼ºÈ?d ‘Q§) @  ¿½»È?d @‘Qa· @  ¿¾¼È?d €‘QAóµö @  ¿¿½È?d À‘Qmž7 @  ¿À¾È?d ’QðÚ¯ö @  ¿Á¿È?d @’Q¦n»Ñ @  ¿ÂÀÈ?d €’Q†›¹/ @  ¿ÃÁÈ?d À’Q³­¸» @  ¿ÄÂÈ?d “Qcå4S @  ¿ÅÃÈ?d @“Q¥ör @  ¿ÆÄÈ?d €“Q…Œ @  ¿ÇÅÈ?d À“Q»Î* @  ¿ÈÆÈ?d ”Q¢€Ù€ @  ¿ÉÇÈ?d @”Qüƒƒ† @  ¿ÊÈÈ?d €”QÜvx @  ¿ËÉÈ?d À”Qé@€ì @  ¿ÌÊÈ?d •Q9  @  ¿ÍËÈ?d @•Qÿµ% @  ¿ÎÌÈ?d €•Qßî·Û @  ¿ÏÍÈ?d À•QL‚,8 @  ¿ÐÎÈ?d –QÑÆŒù @  ¿ÑÏÈ?d @–Qê•´ @  ¿ÒÐÈ?d €–QÊ`¶í @  ¿ÓÑÈ?d À–QÿV·y @  ¿ÔÒÈ?d —Q/;‘ @  ¿ÕÓÈ?d @—Qé ‚° @  ¿ÖÔÈ?d €—QÉø€N @  ¿×ÕÈ?d À—Q÷5%M @  ¿ØÖÈ?d ˜QÃÊ©P @  ¿Ù×È?d @˜QÉóV @  ¿ÚØÈ?d €˜Q½<ñ¨ @  ¿ÛÙÈ?d À˜Qˆ ð< @  ¿ÜÚÈ?d ™QXB|Ô @  ¿ÝÛÈ?d @™QžQÅõ @  ¿ÞÜÈ?d €™Q¾¤Ç  @  ¿ßÝÈ?d À™Q<Î{X @  ¿àÞÈ?d šQ¡ŠÛ™ @  ¿áßÈ?d @šQnÚ¯ @  ¿âàÈ?d€ €šQId @  ÀáÈ?d ÀšQbSÙ @  ÀâÈ?d ›QM*ß1 @  ÀãÈ?d @›QNpý @  ÀäÈ?d €›Qn…Ÿ @  ÀåÈ?d À›Qžúez @  ÀæÈ?d œQ‡´–u @  ÀçÈ?d @œQ“  @  ÀèÈ?d €œQ7ð‘÷ @  À éÈ?d ÀœQÇkŽ @  À êÈ?d QÇçf @  À ëÈ?d @Q¥ª @  À ìÈ?d €Q4h§T @  À íÈ?d ÀQÄ]- @  ÀîÈ?d žQYSýì @  ÀïÈ?d @žQ¤œ @  ÀðÈ?d €žQ!æ¦b @  ÀñÈ?d ÀžQÑ™\ @  ÀòÈ?d ŸQÑÐó @  ÀóÈ?d @ŸQ‹’? @  ÀôÈ?d €ŸQ"~Á @  ÀõÈuРQ?d ÀŸQÒj¸ @  ÀöÈ?d  Q£ ´Þ @  À÷È?d X Q3»±¢ @  ÀøÈ?d ˜ QN³\ @  ÀùÈ?d Ø Qã1I% @  ÀúÈ?d ¡Q3yÅÍ @  ÀûÈ?d X¡Q0#‡ @  ÀüÈ?d ˜¡QÖ…ÿ @  ÀýÈ?d Ø¡Q੆ @  ÀþÈ?d ¢Q}íßG @  ÀÿÈ?d X¢Q;íŒÔ @  À É?d ˜¢QŽ* @  À!É?d Ø¢QëgtS @  À"É?d £Q;/ø» @  À#É?d X£Q8uºw @  À$É?d ˜£Q€¸‰ @  À%É?d Ø£QèÿBð @  À&É?d ¤Qñ±±ÿ @  À'É?d X¤Qa´ƒ @  À(É?d ˜¤QAõ¶} @  À) É?d ؤQ±ŠL @  À* É?d ¥QaÂÀì @  À+ É?d X¥Qb˜‚  @  À, É?d ˜¥QBm€Þ @  À- É?d Ø¥Q²z§ @  À.É?d ¦Q/VÚf @  À/É?d X¦Qwƒ @  À0É?d ˜¦QWãè @  À1É?d ئQ§œ{‘ @  À2É?d §QwÔ÷y @  À3É?d X§Qt޵µ @  À4É?d ˜§QT{·K @  À5É?d اQ¤M2 @  À6É?d ¨QûÁ/ @  À7É?d X¨QJÄS @  À8É?d ˜¨Q ¿Æ­ @  À9É?d بQÐÀ<Ô @  À:É?d ©Qˆ°< @  À;É?d X©QÒòð @  À<É?d ˜©Q#'ð @  À=É?d Ø©QÓX w @  À>É?d ªQNª¶ @  À?É?d XªQ4êë8 @  À@ É?d ˜ªQéÆ @  ÀA!É?d تQä`¿ @  ÀB"É?d «Q4(ŸW @  ÀC#É?d X«Q7rÝ› @  ÀD$É?d ˜«Q‡ße @  ÀE%É?d Ø«Qçø% @  ÀF&É?d ¬Qþ¶Ö @  ÀG'É?d X¬QnÓo @  ÀH(É?d ˜¬QNòÑ‘ @  ÀI)É?d جQ¾+è @  ÀJ*É?d ­Qnŧ @  ÀK+É?d X­QmŸåÌ @  ÀL,É?d ˜­QMjç2 @  ÀM-É?d Ø­Q½K @  ÀN.É?d ®Q Q½Š @  ÀO/É?d X®Qxäú @  ÀP0É?d ˜®QXäæ @  ÀQ1É?d Ø®Q¨›} @  ÀR2É?d ¯QxÓ• @  ÀS3É?d X¯Q{‰ÒY @  ÀT4É?d ˜¯Q[|Ч @  ÀU5É?d دQ«*Þ @  ÀV6É?d °QÝ–l @  ÀW7É?d X°Q…l“ @  ÀX8É?d ˜°Q¥™‘î @  ÀY9É?d ذQUæk— @  ÀZ:É?d ±Q…®ç @  À[;É?d X±Q†ô¥³ @  À\<É?d ˜±Q¦§M @  À]=É?d رQV~]4 @  À^>É?d ²QË:ýõ @  À_?É?d X²Qø @  À`@É?d ˜²QÏn­ @  ÀaAÉ?d زQ?W @  ÀbBÉ?d ³QïYÛ— @  ÀcCÉ?d X³Qì™[ @  ÀdDÉ?d ˜³QÌö›¥ @  ÀeEÉ?d سQ<‰aÜ @  ÀfFÉ?d ´Q%Ç’Ó @  ÀgGÉ?d X´Qµv—¯ @  ÀhHÉ?d ˜´Q•ƒ•Q @  ÀiIÉ?d Ø´Qeüo( @  ÀjJÉ?d µQµ´ãÀ @  ÀkKÉ?d XµQ¶î¡  @  ÀlLÉ?d ˜µQ–£ò @  ÀmMÉ?d صQfdY‹ @  ÀnNÉ?d ¶Qû ùJ @  ÀoOÉ?d X¶Q£` : @  ÀpPÉ?d ˜¶Qƒ•¢Ä @  ÀqQÉ?d ضQsêX½ @  ÀrRÉ?d ·Q£¢ÔU @  ÀsSÉ?d X·Q ø–™ @  ÀtTÉ?d ˜·Q€ ”g @  ÀuUÉ?d Ø·Qprn @  ÀvVÉ?d ¸QDâ @  ÀwWÉ?d X¸QÔ<ç @  ÀxXÉ?d ˜¸QôÉå @  ÀyYÉ?d ظQ¶ø @  ÀzZÉ?d ¹QÔþ“ @  À{[É?d X¹QפÑÜ @  À|\É?d ˜¹Q÷QÓ" @  À}]É?d عQ.)[ @  À~^É?d ºQšj‰š @  À_É?d XºQÊø% @  À€`É?d ˜ºQ#?úÛ @  ÀaÉ?d غQÓ@¢ @  À‚bÉ?d »QŒJ @  ÀƒcÉ?d X»QRΆ @  À„dÉ?d ˜»Q §Ìx @  À…eÉ?d Ø»QÐØ6 @  À†fÉ?d ¼QÉ–Å @  À‡gÉ?d X¼QY'Àr @  ÀˆhÉ?d ˜¼QyÒÂŒ @  À‰iÉ?d ؼQ‰­8õ @  ÀŠjÉ?d ½QYå´ @  À‹kÉ?d X½QZ¿öÑ @  ÀŒlÉ?d ˜½QzJô/ @  ÀmÉ?d ؽQŠ5V @  ÀŽnÉ?d ¾Qq®— @  ÀoÉ?d X¾QO1÷ç @  ÀpÉ?d ˜¾QoÄõ @  À‘qÉ?d ؾQŸ»` @  À’rÉ?d ¿QOóƒˆ @  À“sÉ?d X¿QL©ÁD @  À”tÉ?d ˜¿Ql\ú @uÐÀQ  À•uÉ?d Ø¿Q¥äå @  À– vÉ?d 0ÀQÁ´D @  À— wÉ?d pÀQQ¥±8 @  À˜ xÉ?d °ÀQqP³Æ @  À™ yÉ?d ðÀQ/I¿ @  Àš zÉ?d 0ÁQQgÅW @  À› {É?d pÁQR=‡› @  Àœ |É?d °ÁQrÈ…e @  À }É?d ðÁQ‚· @  Àž ~É?d 0ÂQóßÝ @  ÀŸ É?d pÂQ&”ÙB @  À  €É?d °ÂQaÛ¼ @  À¡ É?d ðÂQö!Å @  À¢ ‚É?d 0ÃQ&V­- @  À£ ƒÉ?d pÃQ% ïá @  À¤ „É?d °ÃQùí @  À¥ …É?d ðÃQõ†f @  À¦ †É?d 0ÄQìÈäi @  À§ ‡É?d pÄQ|yá @  À¨ ˆÉ?d °ÄQ\Œãë @  À© ‰É?d ðÄQ¬ó’ @  Àª ŠÉ?d 0ÅQ|»•z @  À« ‹É?d pÅQá×¶ @  À¬ ŒÉ?d °ÅQ_ÕH @  À­ É?d ðÅQ¯k/1 @  À® ŽÉ?d 0ÆQ2/ð @  À¯ É?d pÆQjoÖ€ @  À° É?d °ÆQJšÔ~ @  À± ‘É?d ðÆQºå. @  À² ’É?d 0ÇQj­¢ï @  À³ “É?d pÇQi÷à# @  À´ ”É?d °ÇQIâÝ @  Àµ •É?d ðÇQ¹}¤ @  À¶ –É?d 0ÈQ‚”¹ @  À· —É?d pÈQ3‘Å @  À¸ ˜É?d °ÈQ=Æ“; @  À¹ ™É?d ðÈQ͹iB @  Àº šÉ?d 0ÉQñåª @  À» ›É?d pÉQ«§f @  À¼ œÉ?d °ÉQ>^¥˜ @  À½ É?d ðÉQÎ!_á @  À¾ žÉ?d 0ÊQSeÿ  @  À¿ ŸÉ?d pÊQ)“¾® @  ÀÀ  É?d °ÊQ f¼P @  ÀÁ ¡É?d ðÊQùF) @  À ¢É?d 0ËQ)QÊÁ @  Àà £É?d pËQ* ˆ  @  ÀÄ ¤É?d °ËQ þŠó @  ÀÅ ¥É?d ðËQúpŠ @  ÀÆ ¦É?d 0ÌQãσ… @  ÀÇ §É?d pÌQs~†ù @  ÀÈ ¨É?d °ÌQS‹„ @  ÀÉ ©É?d ðÌQ£ô~~ @  ÀÊ ªÉ?d 0ÍQs¼ò– @  ÀË «É?d pÍQpæ°Z @  ÀÌ ¬É?d °ÍQP²¤ @  ÀÍ ­É?d ðÍQ lHÝ @  ÀÎ ®É?d 0ÎQ=(è @  ÀÏ ¯É?d pÎQeh±l @  ÀÐ °É?d °ÎQE³’ @  ÀÑ ±É?d ðÎQµâIë @  ÀÒ ²É?d 0ÏQeªÅ @  ÀÓ ³É?d pÏQfð‡Ï @  ÀÔ ´É?d °ÏQF…1 @  ÀÕ µÉ?d ðÏQ¶zH @  ÀÖ ¶É?d 0ÐQ¤Ãú @  À× ·É?d pÐQ˜Ɔ @  ÀØ ¸É?d °ÐQ¸àÄx @  ÀÙ ¹É?d ðÐQHŸ> @  ÀÚ ºÉ?d 0ÑQ˜×²é @  ÀÛ »É?d pÑQ›ð% @  ÀÜ ¼É?d °ÑQ»xòÛ @  ÀÝ ½É?d ðÑQK¢ @  ÀÞ ¾É?d 0ÒQÖC¨c @  Àß ¿É?d pÒQòâún @  Àà ÀÉ?d °ÒQÒø @  Àá ÁÉ?d ðÒQ"hé @  Àâ ÂÉ?d€ 0ÓQ†ã’§ @  Á ÃÉ?d pÓQdø˜B @  Á ÄÉ?d °ÓQD š¼ @  Á ÅÉ?d ðÓQq;›( @  Á ÆÉ?d 0ÔQhuh' @  Á ÇÉ?d pÔQ6v2! @  Á ÈÉ?d °ÔQƒ0ß @  Á ÉÉ?d ðÔQ(N•Ü @  Á ÊÉ?d 0ÕQø4 @  Á ËÉ?d pÕQ>  @  Á ÌÉ?d °ÕQà¢ë @  Á ÍÉ?d ðÕQ+Ö£ @  Á ÎÉ?d 0ÖQ¶’¾ @  Á ÏÉ?d pÖQÁ;T @  Á ÐÉ?d °ÖQ­49ª @  Á ÑÉ?d ðÖQ>X¢I @  Á ÒÉ?d 0×Qî.¡ @  Á ÓÉ?d p×Q(—€ @  Á ÔÉ?d °×Qö•~ @  Á ÕÉ?d ð×Q=À”ê @  Á ÖÉ?d 0ØQ ?÷ @  Á ×É?d pØQWÊ?d ÈâQĆ>L @  Á?Ê?d ãQº2» @  Á@Ê?d HãQ8£e @  ÁAÊ?d ˆãQ\Ô¤d @  ÁBÊ?d ÈãQÞE³º @  ÁCÊ?d äQp¬Vÿ @  ÁDÊ?d HäQò=A! @  ÁEÊ?d ˆäQZ @  ÁFÊ?d ÈäQŒËÙ @  ÁG Ê?d åQàß'ì @  ÁH Ê?d HåQbN02 @  ÁI Ê?d ˆåQ9œ3 @  ÁJ Ê?d ÈåQ„¨‹í @  ÁK Ê?d æQ®K=f @  ÁLÊ?d HæQ,Ú*¸ @  ÁMÊ?d ˆæQµír @  ÁNÊ?d ÈæQ7|¬ @  ÁOÊ?d çQöÉy @  ÁPÊ?d HçQtX§ @  ÁQÊ?d ˆçQ/«¦ @  ÁRÊ?d ÈçQ’¾¼x @  ÁSÊ?d èQæ&/ @  ÁTÊ?d HèQ“w1ñ @  ÁUÊ?d ˆèQo~× @  ÁVÊ?d ÈèQíi  @  ÁWÊ?d éQ•W< @  ÁXÊ?d HéQ@â @  ÁYÊ?d ˆéQgsìã @  ÁZÊ?d ÈéQåâû= @  Á[Ê?d êQÏM¶ @  Á\Ê?d HêQMZh @  Á]Ê?d ˆêQIN~ @  Á^ Ê?d ÈêQËY  @  Á_!Ê?d ëQ2~Å @  Á`"Ê?d HëQ™£i @  Áa#Ê?d ˆëQýÔÅ @  Áb$Ê?d ÈëQEÒÄ @  Ác%Ê?d ìQѬ7 @  Ád&Ê?d HìQS= _ @  Áe'Ê?d ˆìQ¯Zoy @  Áf(Ê?d ÈìQ-Ëx§ @  Ág)Ê?d íQAßF’ @  Áh*Ê?d HíQÃNQL @  Ái+Ê?d ˆíQ§9ýM @  Áj,Ê?d ÈíQ%¨ê“ @  Ák-Ê?d îQK\ @  Ál.Ê?d HîQÚKÆ @  Ám/Ê?d ˆîQíf  @  Án0Ê?d ÈîQ–|qÒ @  Áo1Ê?d ïQWÉq @  Áp2Ê?d HïQÕXfÙ @  Áq3Ê?d ˆïQ±/ÊØ @  Ár4Ê?d ÈïQ3¾Ý @  Ás5Ê?d ðQ:Çwþ @  Át6Ê?d HðQ¸V`  @  Áu7Ê?d ˆðQD1/ @  Áv8Ê?d ÈðQÆ 8Ø @  Áw9Ê?d ñQª´í @  Áx:Ê?d HñQ(%3 @  Áy;Ê?d ˆñQLR½2 @  Áz<Ê?d ÈñQÎêì @  Á{=Ê?d òQä g @  Á|>Ê?d HòQf± ¹ @  Á}?Ê?d ˆòQ’a ¾ @  Á~@Ê?d ÈòQð` @  ÁAÊ?d óQ ¦ @  Á€BÊ?d HóQƒx @  ÁCÊ?d ˆóQkô·y @  Á‚DÊ?d ÈóQée § @  ÁƒEÊ?d ôQGŒEâ @  Á„FÊ?d HôQÅR< @  Á…GÊ?d ˆôQ9z @  Á†HÊ?d ÈôQ»ë Ä @  Á‡IÊ?d õQ×ÿ4ñ @  ÁˆJÊ?d HõQUn#/ @  Á‰KÊ?d ˆõQ1. @  ÁŠLÊ?d ÈõQ³ˆ˜ð @  Á‹MÊ?d öQ™k.{ @  ÁŒNÊ?d HöQú9¥ @  ÁOÊ?d ˆöQ‚Ío @  ÁŽPÊ?d ÈöQ\± @  ÁQÊ?d ÷QÁéd @  ÁRÊ?d H÷QCxº @  Á‘SÊ?d ˆ÷Q'¸» @  Á’TÊ?d È÷Q¥ž¯e @  Á“UÊ?d øQ&Æ52 @  Á”VÊ?d HøQ¤W"ì @  Á•WÊ?d ˆøQX0mÊ @  Á–XÊ?d ÈøQÚ¡z @  Á—YÊ?d ùQ¶µD! @  Á˜ZÊ?d HùQ4$Sÿ @  Á™[Ê?d ˆùQPSÿþ @  Áš\Ê?d ÈùQÒÂè  @  Á›]Ê?d úQø!^« @  Áœ^Ê?d HúQz°Iu @  Á_Ê?d ˆúQ~0]c @  Áž`Ê?d ÈúQü¡J½ @  ÁŸaÊ?d ûQ,mØ @  Á bÊ?d HûQ®ƒz @  Á¡cÊ?d ˆûQÊôÖ @  Á¢dÊ?d ÈûQHeÁÙ @  Á£eÊ?d üQæŒ$œ @  Á¤fÊ?d HüQd3B @  Á¥gÊ?d ˆüQ˜z|d @  Á¦hÊ?d ÈüQëkº @  Á§iÊ?d ýQvÿU @  Á¨jÊ?d HýQônBQ @  Á©kÊ?d ˆýQîP @  ÁªlÊ?d ÈýQˆùŽ @  Á«mÊ?d þQ8kO @  Á¬nÊ?d HþQºúXÛ @  Á­oÊ?d ˆþQ#Íu @  Á®pÊ?d ÈþQ¡\bÏ @  Á¯qÊ?d ÿQ`éb @  Á°rÊ?d HÿQâxuÄ @  Á±sÊ?d ˆÿQ†ÙÅ @  Á²uÐRtÊ?d ÈÿQžÎ @  Á³uÊ?d R·ÈF @  Á´vÊ?d `R5Y‡˜ @  ÁµwÊ?d  RÉ>Ⱦ @  Á¶xÊ?d àRK¯ß` @  Á·yÊ?d R'»áU @  Á¸zÊ?d `R¥*ö‹ @  Á¹{Ê?d  RÁ]ZŠ @  Áº|Ê?d àRCÌMT @  Á»}Ê?d Ri/ûß @  Á¼~Ê?d `Rë¾ì @  Á½Ê?d  R¨¹” @  Á¾€Ê?d àR€9®J @  Á¿Ê?d Rþ½ @  ÁÀ‚Ê?d `R|˜c @  ÁÁƒÊ?d  Rk4b @  Á„Ê?d àRšú#¼ @  ÁÃ…Ê?d R4Æù @  ÁĆÊ?d `R¶‚Ñ' @  ÁŇÊ?d  RJåž @  ÁƈÊ?d àRÈt‰ß @  ÁljÊ?d R¤`·ê @  ÁÈŠÊ?d `R&ñ 4 @  ÁÉ‹Ê?d  RB† 5 @  ÁÊŒÊ?d àRÀë @  ÁËÊ?d Rêô­` @  ÁÌŽÊ?d `Rheº¾ @  ÁÍÊ?d  RñR—t @  ÁÎÊ?d àRsÀª @  ÁÏ‘Ê?d R²v€ @  ÁÐ’Ê?d `R0ç—¡ @  ÁÑ“Ê?d  RT;  @  ÁÒ”Ê?d àRÖ,~ @  ÁÓ•Ê?d RUY¶) @  ÁÔ–Ê?d `R×È¡÷ @  ÁÕ—Ê?d  R+¯îÑ @  ÁÖ˜Ê?d àR©>ù @  Á×™Ê?d RÅ*Ç: @  ÁØšÊ?d ` RG»Ðä @  ÁÙ›Ê?d   R#Ì|å @  ÁÚœÊ?d à R¡]k; @  ÁÛÊ?d R‹¾Ý° @  ÁÜžÊ?d ` R /Ên @  ÁÝŸÊ?d   R ¯Þx @  ÁÞ Ê?d à R>ɦ @  Áß¡Ê?d R_îà @  Áà¢Ê?d ` RÝù @  Áá£Ê?d   R¹kU @  Áâ¤Ê?d€ à Rú½µÂ @  Â¥Ê?d Rµ® @  Â¦Ê?d ` R7„p @  Â§Ê?d   Rª»» @  Â¨Ê?d à RŒ;¬e @  Â©Ê?d R.Í* @  ÂªÊ?d ` R¬ Úô @  Â«Ê?d   RÉ) @  Â¬Ê?d à R„X>Q @  Â ­Ê?d Rkòs7 @  Â ®Ê?d `Récdé @  Â ¯Ê?d  Rµ²Î @  Â °Ê?d àR7Œ¥ @  Â ±Ê?d R•*Ä_ @  Â²Ê?d `R»Ó @  Â³Ê?d  Rß @  Â´Ê?d àR’N Ä @  ÂµÊ?d R^~XÑ @  Â¶Ê?d `RÜïO @  Â·Ê?d  RåÁûÄ @  Â¸Ê?d àRgPì @  Â¹Ê?d RÅöU @  ÂºÊ?d `RGgš‹ @  Â»Ê?d  Rí¢ið @  Â¼Ê?d àRo3~. @  Â½Ê?d R€™3H @  Â¾Ê?d `R$– @  Â¿Ê?d  R3‘Þ| @  ÂÀÊ?d àR±É¢ @  ÂÁÊ?d R¦¨í @  ÂÂÊ?d `R‘7¿3 @  ÂÃÊ?d  R‡UU @  Â ÄÊ?d àRÄBÆ @  Â!ÅÊ?d Rnd\n @  Â"ÆÊ?d `RìõK° @  Â#ÇÊ?d  RÕÛÿ{ @  Â$ÈÊ?d àRWJè¥ @  Â%ÉÊ?d Rõì‰ê @  Â&ÊÊ?d `Rw}ž4 @  Â'ËÊ?d  RݸmO @  Â(ÌÊ?d àR_)z‘ @  Â)ÍÊ?d R°ƒ7÷ @  Â*ÎÊ?d `R2 ) @  Â+ÏÊ?d  Rnlö @  Â,ÐÊ?d àRìýáÐ @  Â-ÑÊ?d RN[€Ÿ @  Â.ÒÊ?d `RÌÊ—A @  Â/ÓÊ?d  RË®ZÚ @  Â0ÔÊ?d àRI?M @  Â1ÕÊ?d R.,¾ @  Â2ÖÊ?d `R¿;` @  Â3×Ê?d  R´‘« @  Â4ØÊ?d àR6˜u @  Â5ÙÊ?d R”¦ù: @  Â6ÚÊ?d `R7îä @  Â7ÛÊ?d  R¼òŸ @  Â8ÜÊ?d àR¤Ö” @  Â9 ÝÊ?d Rè›ò @  Â: ÞÊ?d `RjŸŒ, @  Â; ßÊ?d  R«Vc× @  Â< àÊ?d àR)Çt  @  Â= áÊ?d R‹aF @  Â> âÊ?d `R ð˜ @  Â? ãÊ?d  R±•î! @  Â@ äÊ?d àR3ùÿ @  ÂA åÊ?d RX¤çW @  ÂB æÊ?d `RÚ5ð‰ @  ÂC çÊ?d  RãDB @  ÂD èÊ?d àRaŠSœ @  ÂE éÊ?d RÃ,2Ó @  ÂF êÊ?d `RA½%  @  ÂG ëÊ?d  RëxÖv @  ÂH ìÊ?d àRiéÁ¨ @  ÂI íÊ?d R†CŒÎ @  ÂJ îÊ?d `RÒ› @  ÂK ïÊ?d  RX¬M7 @  ÂL ðÊ?d àRÚ=Zé @  ÂM ñÊ?d Rx›;¦ @  ÂN òÊ?d `Rú ,x @  ÂO óÊ?d  RýnáãuÐ R @  ÂP ôÊ?d àRF8*è @  ÂQõÊ?d 8 REÝ) @  ÂRöÊ?d x RÇL÷ @  ÂS÷Ê?d ¸ Rþbº< @  ÂTøÊ?d ø R|ó­â @  ÂUùÊ?d 8!RÞUÌ­ @  ÂVúÊ?d x!R\ÄÛs @  ÂWûÊ?d ¸!Rö( @  ÂXüÊ?d ø!Rt?Ö @  ÂYýÊ?d 8"R›:r° @  ÂZþÊ?d x"R«en @  Â[ÿÊ?d ¸"RJ“ž @  Â\Ë?d ø"RÈ‰Ä @  Â]Ë?d 8#Rj¤è‹ @  Â^Ë?d x#Rè5ÿU @  Â_Ë?d ¸#RþW~ @  Â`Ë?d ø#R|Æ  @  ÂaË?d 8$Rf @  ÂbË?d x$R•÷ Ö @  ÂcË?d ¸$R¬Ù¿ @  ÂdË?d ø$R.H¨Ã @  Âe Ë?d 8%RŒîÉŒ @  Âf Ë?d x%RÞR @  Âg Ë?d ¸%R¤º-) @  Âh Ë?d ø%R&+:÷ @  Âi Ë?d 8&RÉw‘ @  ÂjË?d x&RK`O @  ÂkË?d ¸&Rn¶h @  ÂlË?d ø&R•ÿ¡¶ @  ÂmË?d 8'R7YÀù @  ÂnË?d x'RµÈ×' @  ÂoË?d ¸'R²¬¼ @  ÂpË?d ø'R0= b @  ÂqË?d 8(ROë°  @  Âr Ë?d x(Rô½{ @  ÂsË?d ¸(RÍ“ÏÍ @  ÂtË?d ø(ROØ @  ÂuË?d 8)Rí¤¹\ @  ÂvË?d x)Ro5®‚ @  ÂwË?d ¸)RÅð]ù @  ÂxË?d ø)RGaJ' @  ÂyË?d 8*R¨ËA @  ÂzË?d x*R*ZŸ @  Â{Ë?d ¸*Rë“ÿd @  Â| Ë?d ø*RPÅ4o @  Â} !Ë?d 8+RòcU  @  Â~ "Ë?d x+RpòBþ @  Â #Ë?d ¸+R+Ážv @  Â€ $Ë?d ø+R©P‰¨ @  Â %Ë?d 8,RÂð— @  Â‚ &Ë?d x,R@a€Þ @  Âƒ 'Ë?d ¸,RyO4 @  Â„ (Ë?d ø,RûÞ#Ë @  Â… )Ë?d 8-RYxB„ @  Â† *Ë?d x-RÛéUZ @  Â‡ +Ë?d ¸-Rq,¦! @  Âˆ ,Ë?d ø-Ró½±ÿ @  Â‰ -Ë?d 8.Rü™ @  ÂŠ .Ë?d x.Rž†ëG @  Â‹ /Ë?d ¸.RÂø=` @  ÂŒ 0Ë?d ø.R@i*¾ @  Â 1Ë?d 8/RâÏKñ @  ÂŽ 2Ë?d x/R`^\/ @  Â 3Ë?d ¸/Rg:‘´ @  Â 4Ë?d ø/R嫆j @  Â‘ 5Ë?d 80R)›× @  Â’ 6Ë?d x0R« À¡ @  Â“ 7Ë?d ¸0R’$tj @  Â” 8Ë?d ø0Rµc´ @  Â• 9Ë?d 81R²û @  Â– :Ë?d x1R0‚% @  Â— ;Ë?d ¸1RšGæ^ @  Â˜ <Ë?d ø1RÖñ€ @  Â™ =Ë?d 82R÷|¼æ @  Âš >Ë?d x2Ruí«8 @  Â› ?Ë?d ¸2RDtQÒ @  Âœ @Ë?d ø2RÆåF  @  Â AË?d 83RdC'C @  Âž BË?d x3RæÒ0 @  ÂŸ CË?d ¸3Rð°Ú¶ @  Â  DË?d ø3Rr!Íh @  Â¡ EË?d 84RÓÀ @  Â¢ FË?d x4R›Ä @  Â£ GË?d ¸4R¢>pÕ @  Â¤ HË?d ø4R ¯g  @  Â¥ IË?d 85R‚ D @  Â¦ JË?d x5R˜š @  Â§ KË?d ¸5Rª]âá @  Â¨ LË?d ø5R(Ìõ? @  Â© MË?d 86RÇf¸Y @  Âª NË?d x6RE÷¯‡ @  Â« OË?d ¸6R‰y  @  Â¬ PË?d ø6R›n~ @  Â­ QË?d 87R9¾1 @  Â® RË?d x7R»/ï @  Â¯ SË?d ¸7R¼KÕt @  Â° TË?d ø7R>Úª @  Â± UË?d 88RxË£ @  Â² VË?d x8RúZ´Î @  Â³ WË?d ¸8RÃt @  Â´ XË?d ø8RAåÛ @  Âµ YË?d 89RãCv” @  Â¶ ZË?d x9RaÒaJ @  Â· [Ë?d ¸9RË’1 @  Â¸ \Ë?d ø9RI†…ï @  Â¹ ]Ë?d 8:R¦,ȉ @  Âº ^Ë?d x:R$½ßW @  Â» _Ë?d ¸:Råt0¬ @  Â¼ `Ë?d ø:Rgå'r @  Â½ aË?d 8;RÅCF= @  Â¾ bË?d x;RGÒQã @  Â¿ cË?d ¸;Rÿ·½Z @  ÂÀ dË?d ø;R}&ª„ @  ÂÁ eË?d 8RÈaßµ @  ÂÊ nË?d x>RJðÈk @  ÂË oË?d ¸>RŽL @  ÂÌ pË?d ø>R” ’ @  ÂÍ qË?d 8?R6¹hÝ @  ÂÎ rË?d x?R´( @  ÂÏ sË?duÐ@R7 ¸?R³L²˜ @  ÂÐ tË?d ø?Ry“ @  ÂÑuË?d P@R¹X. @  ÂÒvË?d @R™­,ö @  ÂÓwË?d Ð@Rç @  ÂÔxË?d ARÒ¯õ @  ÂÕyË?d PAR"ÐûŒ @  ÂÖzË?d AR%ùr @  Â×{Ë?d ÐAR „) @  ÂØ|Ë?d BR—À¿è @  ÂÙ}Ë?d PBRg¿E‘ @  ÂÚ~Ë?d BRGJGo @  ÂÛË?d ÐBRÉqü7 @  ÂÜ€Ë?d CR9pß @  ÂÝË?d PCRéFЦ @  ÂÞ‚Ë?d CRɳˆX @  Â߃Ë?d ÐCR}µwS @  Âà„Ë?d DRdû„\ @  Âá…Ë?d PDR”„~% @  Ââ†Ë?d€ DRÀ²`} @  Ã‡Ë?d ÐDRº¹‰¿ @  ÃˆË?d ERjñW @  Ã‰Ë?d PER_Çà @  ÃŠË?d ER2= @  Ã‹Ë?d ÐER¹!¿ @  ÃŒË?d FR$eÝ @  ÃË?d PFR¨ºÞ @  ÃŽË?d FR:]¸  @  Ã Ë?d ÐFR€Ê @  Ã Ë?d GRÑF " @  Ã ‘Ë?d PGRäp ¶ @  Ã ’Ë?d GRÄ…H @  Ã “Ë?d ÐGR–¶i @  Ã”Ë?d HR6i:t @  Ã•Ë?d PHR¥¡— @  Ã–Ë?d HR…ð£i @  Ã—Ë?d ÐHRÛóùo @  Ã˜Ë?d IR »u‡ @  Ã™Ë?d PIR>t @  ÃšË?d IRxví @  Ã›Ë?d ÐIRØkÏÌ @  ÃœË?d JRE/o  @  ÃË?d PJR{âÊ @  ÃžË?d JR[Èð @  ÃŸË?d ÐJRýóÉÆ @  Ã Ë?d KR-»E. @  Ã¡Ë?d PKRDº @  Ã¢Ë?d KR8xFD @  Ã£Ë?d ÐKRþkÿe @  Ã¤Ë?d LRç% j @  Ã¥Ë?d PLReO°9 @  Ã ¦Ë?d LREº²Ç @  Ã!§Ë?d ÐLR¹èÁ @  Ã"¨Ë?d MRËñd) @  Ã#©Ë?d PMRþÇe½ @  Ã$ªË?d MRÞ2gC @  Ã%«Ë?d ÐMR!Þb @  Ã&¬Ë?d NR…e~£ @  Ã'­Ë?d PNR»¨Û  @  Ã(®Ë?d NR›]Ù^ @  Ã)¯Ë?d ÐNR á´ @  Ã*°Ë?d ORpFm\ @  Ã+±Ë?d POREplÈ @  Ã,²Ë?d ORe…n6 @  Ã-³Ë?d ÐOR£–× @  Ã.´Ë?d PRHk¥ @  Ã/µË?d PPRŽ$ðF @  Ã0¶Ë?d PR®Ñò¸ @  Ã1·Ë?d ÐPRðÒ¨¾ @  Ã2¸Ë?d QR š$V @  Ã3¹Ë?d PQR¬% @  Ã4ºË?d QR5Y'< @  Ã5»Ë?d ÐQRóJž @  Ã6¼Ë?d RRn>Ü @  Ã7½Ë?d PRRPÛß @  Ã8¾Ë?d RRp6™! @  Ã9¿Ë?d ÐRR&‚ @  Ã:ÀË?d SRöÊî @  Ã;ÁË?d PSRÃüz @  Ã<ÂË?d SRã „ @  Ã=ÃË?d ÐSR%»¥ @  Ã>ÄË?d TRÌ?d ¨rRÍîž2 @  Ã¹?Ì?d èrR›ZŠ @  Ãº@Ì?d (sRKý @  Ã»AÌ?d hsR~$i @  Ã¼BÌ?d ¨sR^Ñ— @  Ã½CÌ?d èsR˜Â¼¶ @  Ã¾DÌ?d (tRŒO¹ @  Ã¿EÌ?d htR­áõx @  ÃÀFÌ?d ¨tR÷† @  ÃÁGÌ?d ètRÓ­€ @  ÃÂHÌ?d (uR_!h @  ÃÃIÌ?d huR6i ü @  ÃÄJÌ?d ¨uRœ" @  ÃÅKÌ?d èuRЛ# @  ÃÆLÌ?d (vRMË;â @  ÃÇMÌ?d hvRsžá @  ÃÈNÌ?d ¨vRSóœ @  ÃÉOÌ?d èvRh ¤õ @  ÃÊPÌ?d (wR¸è( @  ÃËQÌ?d hwRÞ)‰ @  ÃÌRÌ?d ¨wR­++w @  ÃÍSÌ?d èwRk8’V @  ÃÎTÌ?d (xR_ÇK @  ÃÏUÌ?d hxRÌ«…¨ @  ÃÐVÌ?d ¨xRì^‡V @  ÃÑWÌ?d èxR²]ÝP @  ÃÒXÌ?d (yRbQ¸ @  ÃÓYÌ?d hyRW#P, @  ÃÔZÌ?d ¨yRwÖRÒ @  ÃÕ[Ì?d èyR±Åëó @  ÃÖ\Ì?d (zR,K2 @  Ã×]Ì?d hzRLî1 @  ÃØ^Ì?d ¨zR2¹ìÏ @  ÃÙ_Ì?d èzR”]íù @  ÃÚ`Ì?d ({RDa @  ÃÛaÌ?d h{Rq#`… @  ÃÜbÌ?d ¨{RQÖb{ @  ÃÝcÌ?d è{R—ÅÛZ @  ÃÞdÌ?d (|RŽ‹(U @  ÃßeÌ?d h|R á” @  ÃàfÌ?d ¨|R,–ø @  ÃágÌ?d è|RrÌþ @  ÃâhÌ?d€ (}R$ è¯ @  ÄiÌ?d h}Rð~¡ @  ÄjÌ?d ¨}RЋ£ì @  ÄkÌ?d è}RÓÑá  @  ÄlÌ?d (~RN•Aá @  ÄmÌ?d h~R¾ê»˜ @  ÄnÌ?d ¨~Rž¹f @  ÄoÌ?d è~RkþÞö @  ÄpÌ?d (R»¶R @  Ä qÌ?d hRKɨg @  Ä rÌ?d ¨RuЀR'k<ª™ @  Ä sÌ?d èRhfèU @  Ä tÌ?d @€RØ ! @  Ä uÌ?d €€RTÃåx @  ÄvÌ?d À€RÖRò¦ @  ÄwÌ?d R¹›R  @  ÄxÌ?d @R; EÒ @  ÄyÌ?d €Riª‹ @  ÄzÌ?d ÀR뀽U @  Ä{Ì?d ‚R÷H† @  Ä|Ì?d @‚Ruž_X @  Ä}Ì?d €‚R'…° @  Ä~Ì?d À‚R¥§ß @  ÄÌ?d ƒRr #& @  Ä€Ì?d @ƒRðœ4ø @  ÄÌ?d €ƒR¢‡Û¡ @  Ä‚Ì?d ÀƒR Ì @  ÄƒÌ?d „R¸“jb @  Ä„Ì?d @„R:}¼ @  Ä…Ì?d €„Rh’å @  Ä†Ì?d À„Rꈅ; @  Ä‡Ì?d …R”G! @  Ä ˆÌ?d @…RÖÿ @  Ä!‰Ì?d €…RDÍú¦ @  Ä"ŠÌ?d À…RÆ\íx @  Ä#‹Ì?d †RÚÓ« @  Ä$ŒÌ?d @†RXBu @  Ä%Ì?d €†R Yà, @  Ä&ŽÌ?d À†RˆÈ÷ò @  Ä'Ì?d ‡R/ð T @  Ä(Ì?d @‡R­aŠ @  Ä)‘Ì?d €‡RÿzóÓ @  Ä*’Ì?d À‡R}ëä  @  Ä+“Ì?d ˆRÈß= @  Ä,”Ì?d @ˆRJN*Ü @  Ä-•Ì?d €ˆRUÅ… @  Ä.–Ì?d ÀˆRšÄÒ[ @  Ä/—Ì?d ‰Rõ rñ @  Ä0˜Ì?d @‰Rwœe/ @  Ä1™Ì?d €‰R%‡Šv @  Ä2šÌ?d À‰R§¨ @  Ä3›Ì?d ŠR»™h{ @  Ä4œÌ?d @ŠR9¥ @  Ä5Ì?d €ŠRkü @  Ä6žÌ?d ÀŠR邇" @  Ä7ŸÌ?d ‹RÓ BX @  Ä8 Ì?d @‹RQœU† @  Ä9¡Ì?d €‹R‡ºß @  Ä:¢Ì?d À‹R­ @  Ä;£Ì?d ŒR“  @  Ä<¤Ì?d @ŒR›Â @  Ä=¥Ì?d €ŒRÉó› @  Ä>¦Ì?d ÀŒRKˆäE @  Ä?§Ì?d R›@eÍ @  Ä@¨Ì?d @RÑr @  ÄA©Ì?d €RKÊJ @  ÄBªÌ?d ÀRÉ[Š” @  ÄC«Ì?d ŽRÕÔG @  ÄD¬Ì?d @ŽRWEh™ @  ÄE­Ì?d €ŽR^‡À @  ÄF®Ì?d ÀŽR‡Ï @  ÄG¯Ì?d R ÷l¸ @  ÄH°Ì?d @R¢f{f @  ÄI±Ì?d €Rð}”? @  ÄJ²Ì?d ÀRrìƒá @  ÄK³Ì?d RMùjA @  ÄL´Ì?d @RÏh}Ÿ @  ÄMµÌ?d €Rs’Æ @  ÄN¶Ì?d ÀRâ… @  ÄO·Ì?d ‘Rp+%² @  ÄP¸Ì?d @‘Ròº2l @  ÄQ¹Ì?d €‘R ¡Ý5 @  ÄRºÌ?d À‘R"0Êë @  ÄS»Ì?d ’R>¿?8 @  ÄT¼Ì?d @’R¼.(æ @  ÄU½Ì?d €’Rî5Ç¿ @  ÄV¾Ì?d À’Rl¤Ða @  ÄW¿Ì?d “R¦{  @  ÄXÀÌ?d @“R$êÔ @  ÄYÁÌ?d €“Rvñø @  ÄZÂÌ?d À“Rô`ïS @  Ä[ÃÌ?d ”RlåIN @  Ä\ÄÌ?d @”Rît^ @  Ä]ÅÌ?d €”R¼o±É @  Ä^ÆÌ?d À”R>þ¦ @  Ä_ÇÌ?d •R@1!  @  Ä`ÈÌ?d @•R 6Ó @  ÄaÉÌ?d €•R»ÙŠ @  ÄbÊÌ?d À•R*ÎT @  ÄcËÌ?d –R¥;‡ @  ÄdÌÌ?d @–RŒ4,Y @  ÄeÍÌ?d €–RÞ/à @  ÄfÎÌ?d À–R\¾ÔÞ @  ÄgÏÌ?d —Rû†(x @  ÄhÐÌ?d @—Ry?¦ @  ÄiÑÌ?d €—R+ Ðÿ @  ÄjÒÌ?d À—R©Ç! @  ÄkÓÌ?d ˜R©. @  ÄlÔÌ?d @˜Rž8 ð @  ÄmÕÌ?d €˜RÌ#æ© @  ÄnÖÌ?d À˜RN²ñw @  Äo×Ì?d ™R!{QÝ @  ÄpØÌ?d @™R£êF @  ÄqÙÌ?d €™Rññ©Z @  ÄrÚÌ?d À™Rs`¾„ @  ÄsÛÌ?d šRoïKW @  ÄtÜÌ?d @šRí~\‰ @  ÄuÝÌ?d €šR¿e³Ð @  ÄvÞÌ?d ÀšR=ô¤ @  ÄwßÌ?d ›R{at @  ÄxàÌ?d @›R…êvª @  ÄyáÌ?d €›R×ñ™ó @  ÄzâÌ?d À›RU`Ž- @  Ä{ãÌ?d œRÍå(0 @  Ä|äÌ?d @œROt?î @  Ä}åÌ?d €œRoз @  Ä~æÌ?d ÀœRŸþÇi @  ÄçÌ?d R¬`vÐ @  Ä€èÌ?d @R.ña @  ÄéÌ?d €R|êŽW @  Ä‚êÌ?d ÀRþ{™‰ @  ÄƒëÌ?d žRâôlZ @  Ä„ìÌ?d @žR`e{„ @  Ä…íÌ?d €žR2~”Ý @  Ä†îÌ?d ÀžR°ïƒ @  Ä‡ïÌ?d ŸR×¥ @  ÄˆðÌ?d @ŸR•Fh{ @  Ä‰ñÌ?d €ŸRÇ]‡" @  ÄŠòÌuРR?d ÀŸREÌü @  Ä‹óÌ?d  Rµ ˆ @  ÄŒôÌ?d X R7 V @  ÄõÌ?d ˜ Re†ã @  ÄŽöÌ?d Ø RçôÑ @  Ä÷Ì?d ¡RˆÞT{ @  ÄøÌ?d X¡R OC¥ @  Ä‘ùÌ?d ˜¡RXT¬ü @  Ä’úÌ?d Ø¡RÚÅ»" @  Ä“ûÌ?d ¢RÆJNñ @  Ä”üÌ?d X¢RDÛY/ @  Ä•ýÌ?d ˜¢RÀ¶v @  Ä–þÌ?d Ø¢R”Q¡¨ @  Ä—ÿÌ?d £R @  Ä¿'Í?d ­RÕb6¶ @  ÄÀ(Í?d X­RWó!h @  ÄÁ)Í?d ˜­RèÎ1 @  ÄÂ*Í?d Ø­R‡yÙï @  ÄÃ+Í?d ®R›ö,< @  ÄÄ,Í?d X®Rg;â @  ÄÅ-Í?d ˜®RK|Ô» @  ÄÆ.Í?d Ø®RÉíÃe @  ÄÇ/Í?d ¯RnÕ?à @  ÄÈ0Í?d X¯RìD( @  ÄÉ1Í?d ˜¯R¾_ÇD @  ÄÊ2Í?d دR<ÎК @  ÄË3Í?d °RÛ9: @  ÄÌ4Í?d X°RJ.ä @  ÄÍ5Í?d ˜°RÓQÁ½ @  ÄÎ6Í?d ذRQÀÖc @  ÄÏ7Í?d ±R> vÉ @  ÄÐ8Í?d X±R¼˜a @  ÄÑ9Í?d ˜±RN @  ÄÒ:Í?d رRl™ @  ÄÓ;Í?d ²RplC @  ÄÔ<Í?d X²Rò { @  ÄÕ=Í?d ˜²R ”Ä @  ÄÖ>Í?d زR"†ƒ @  Ä×?Í?d ³RèYSq @  ÄØ@Í?d X³RjÈD¯ @  ÄÙAÍ?d ˜³R8Ó«ö @  ÄÚBÍ?d سRºB¼( @  ÄÛCÍ?d ´R"Ç5 @  ÄÜDÍ?d X´R V ë @  ÄÝEÍ?d ˜´RòMâ² @  ÄÞFÍ?d Ø´RpÜõl @  ÄßGÍ?d µRrv @  ÄàHÍ?d XµRŒ‚e¨ @  ÄáIÍ?d ˜µRÞ™Šñ @  ÄâJÍ?d€ صR(ˉ @  ÅKÍ?d ¶RÕˆÍ?d pÅRÅ, @  Å?‰Í?d °ÅRÌ¿Í @  Å@ŠÍ?d ðÅR]¨ @  ÅA‹Í?d 0ÆRÆ›¦- @  ÅBŒÍ?d pÆRD ±ó @  ÅCÍ?d °ÆRÓX¥G @  ÅDŽÍ?d ðÆRQɲ™ @  ÅEÍ?d 0ÇR8CE @  ÅFÍ?d pÇRºÒ› @  ÅG‘Í?d °ÇR&{¶¸ @  ÅH’Í?d ðÇR¤ê¡f @  ÅI“Í?d 0ÈRÔ—ƒ„ @  ÅJ”Í?d pÈRV”Z @  ÅK•Í?d °ÈRÁT€î @  ÅL–Í?d ðÈRCÅ—0 @  ÅM—Í?d 0ÉROV @  ÅN˜Í?d pÉRÍŽAÞ @  ÅO™Í?d °ÉRü†Ï @  ÅPšÍ?d ðÉR~ØÃ @  ÅQ›Í?d 0ÊR§ÑÖý @  ÅRœÍ?d pÊR%@Á# @  ÅSÍ?d °ÊR²Õ— @  ÅTžÍ?d ðÊR0ƒÂI @  ÅUŸÍ?d 0ËRľXI @  ÅV Í?d pËRF/O— @  ÅW¡Í?d °ËRÚ†ÿ´ @  ÅX¢Í?d ðËRXèj @  ÅY£Í?d 0ÌRÛµš @  ÅZ¤Í?d pÌR‡J¢D @  Å[¥Í?d °ÌR¶ð @  Å\¦Í?d ðÌR’‰¡. @  Å]§Í?d 0ÍRžS` @  Å^¨Í?d pÍRÂwÀ @  Å_©Í?d °ÍR<ÌÞ³ @  Å`ªÍ?d ðÍR¾]Ém @  Åa«Í?d 0ÎRg›ÇS @  Åb¬Í?d pÎRå Ð @  Åc­Í?d °ÎRrXÄ9 @  Åd®Í?d ðÎRðÉÓç @  Åe¯Í?d 0ÏR™Cp; @  Åf°Í?d pÏRÒgå @  Åg±Í?d °ÏR‡{ׯ @  Åh²Í?d ðÏRêÀ @  Åi³Í?d 0ÐRÿ¶ÒU @  Åj´Í?d pÐR}'Å‹ @  ÅkµÍ?d °ÐRêuÑ? @  Ål¶Í?d ðÐRhäÆá @  Åm·Í?d 0ÑRd>Ñ @  Ån¸Í?d pÑRæ¯ @  Åo¹Í?d °ÑR×§žÌ @  ÅpºÍ?d ðÑRU6‰ @  Åq»Í?d 0ÒRŒð‡, @  År¼Í?d pÒRaò @  Ås½Í?d °ÒR™3„F @  Åt¾Í?d ðÒR¢“˜ @  Åu¿Í?d 0ÓRω @  ÅvÀÍ?d pÓR^ W @  ÅwÁÍ?d °ÓR÷»t @  ÅxÂÍ?d ðÓRƒf¬ª @  ÅyÃÍ?d 0ÔRÞªñZ @  ÅzÄÍ?d pÔR\;æ„ @  Å{ÅÍ?d °ÔRËiò0 @  Å|ÆÍ?d ðÔRIøåî @  Å}ÇÍ?d 0ÕRE"$Þ @  Å~ÈÍ?d pÕRdz3 @  ÅÉÍ?d °ÕRªì¬Ð @  Å€ÊÍ?d ðÕR(}» @  ÅËÍ?d 0ÖRñ»µ0 @  Å‚ÌÍ?d pÖRs*¢î @  ÅƒÍÍ?d °ÖRäx¶Z @  Å„ÎÍ?d ðÖRfé¡„ @  Å…ÏÍ?d 0×RcX @  Å†ÐÍ?d p×Rò† @  Å‡ÑÍ?d °×R[¥¥ @  ÅˆÒÍ?d ð×R“ʲ{ @  Å‰ÓÍ?d 0ØRã·™ @  ÅŠÔÍ?d pØRa&‡G @  Å‹ÕÍ?d °ØRöt“ó @  ÅŒÖÍ?d ðØRtå„- @  Å×Í?d 0ÙRx?E @  ÅŽØÍ?d pÙRú®Rà @  ÅÙÍ?d °ÙR˦Ü @  ÅÚÍ?d ðÙRI7ËÞ @  Å‘ÛÍ?d 0ÚRñÅà @  Å’ÜÍ?d pÚR`Ò> @  Å“ÝÍ?d °ÚR…2ÆŠ @  Å”ÞÍ?d ðÚR£ÑT @  Å•ßÍ?d 0ÛRóžKT @  Å–àÍ?d pÛRq\Š @  Å—áÍ?d °ÛRí¦ì© @  Å˜âÍ?d ðÛRo7ûw @  Å™ãÍ?d 0ÜR2û¦‡ @  ÅšäÍ?d pÜR°j±Y @  Å›åÍ?d °ÜR'8¥í @  ÅœæÍ?d ðÜR¥©²3 @  ÅçÍ?d 0ÝR©ss @  ÅžèÍ?d pÝR+âdÝ @  ÅŸéÍ?d °ÝR ìÍ® @  Å êÍ?d ðÝR‰}Úp @  Å¡ëÍ?d 0ÞRP»ÔN @  Å¢ìÍ?d pÞRÒ*à @  Å£íÍ?d °ÞREx×$ @  Å¤îÍ?d ðÞRÇéÀú @  Å¥ïÍ?d 0ßR®cc& @  Å¦ðÍ?d pßR,òtø @  Å§ñÍ?d uÐàR/°ßR°[ÄÛ @  Å¨òÍ?d ðßR2ÊÓ @  Å©óÍ?d HàRoì#  @  ÅªôÍ?d ˆàRO!ò @  Å«õÍ?d ÈàRz/ f @  Å¬öÍ?d áRªg¬Ž @  Å­÷Í?d HáRôdöˆ @  Å®øÍ?d ˆáRÔ‘ôv @  Å¯ùÍ?d ÈáRGýo• @  Å°úÍ?d âRÚ¹ÏT @  Å±ûÍ?d HâRªvu @  Å²üÍ?d ˆâR<_t‹ @  Å³ýÍ?d ÈâR iu @  Å´þÍ?d ãRÙ!ù÷ @  ÅµÿÍ?d HãR_Ùk @  Å¶Î?d ˆãRãÛ• @  Å·Î?d ÈãRA.~– @  Å¸Î?d äRX`™ @  Å¹Î?d HäRžs4¸ @  ÅºÎ?d ˆäR¾†6F @  Å»Î?d ÈäR‹°7Ò @  Å¼Î?d åR[ø»: @  Å½Î?d HåRûá< @  Å¾Î?d ˆåR%ã @  Å¿ Î?d ÈåR cY @  ÅÀ Î?d æR”'ù @  ÅÁ Î?d HæRR4@ã @  Å Î?d ˆæRrÁB @  Åà Î?d ÈæRG÷C‰ @  ÅÄÎ?d çR—¿Ïa @  ÅÅÎ?d HçR¬ì÷‹ @  ÅÆÎ?d ˆçRŒõu @  ÅÇÎ?d ÈçR²ÔPv @  ÅÈÎ?d èR†+Ük @  ÅÉÎ?d HèR@8eJ @  ÅÊÎ?d ˆèR`Íg´ @  ÅËÎ?d ÈèRUûf  @  ÅÌÎ?d éR…³êÈ @  ÅÍÎ?d HéRÛ°°Î @  ÅÎÎ?d ˆéRûE²0 @  ÅÏÎ?d ÈéRh))Ó @  ÅÐÎ?d êRõm‰ @  ÅÑÎ?d HêR3~03 @  ÅÒÎ?d ˆêR‹2Í @  ÅÓÎ?d ÈêR&½3Y @  ÅÔÎ?d ëRöõ¿± @  ÅÕÎ?d HëRP¾‡ @  ÅÖ Î?d ˆëRpä¼y @  Å×!Î?d ÈëRN)z @  ÅØ"Î?d ìRWgêu @  ÅÙ#Î?d HìR‘tST @  ÅÚ$Î?d ˆìR±Qª @  ÅÛ%Î?d ÈìR„·P> @  ÅÜ&Î?d íRTÿÜÖ @  ÅÝ'Î?d HíR ü†Ð @  ÅÞ(Î?d ˆíR* „. @  Åß)Î?d ÈíR¨c8} @  Åà*Î?d îR5'˜¼ @  Åá+Î?d HîRó4! @  Åâ,Î?d€ ˆîR†Ôc @  Æ-Î?d ÈîRÆñÞ @  Æ.Î?d ïR¹6 @  Æ/Î?d HïRè£Ò1 @  Æ0Î?d ˆïRÈVÐÏ @  Æ1Î?d ÈïR8)*¶ @  Æ2Î?d ðR†÷– @  Æ3Î?d HðRŽVp_ @  Æ4Î?d ˆðR®£r¡ @  Æ 5Î?d ÈðR^܈Ø @  Æ 6Î?d ñRŽ”0 @  Æ 7Î?d HñRÞ¥Û @  Æ 8Î?d ˆñR5+§% @  Æ 9Î?d ÈñRÅT]\ @  Æ:Î?d òRXý @  Æ;Î?d HòRý%& @  Æ<Î?d ˆòRÝå'Ø @  Æ=Î?d ÈòR-šÝ¡ @  Æ>Î?d óRýÒQI @  Æ?Î?d HóRn/¾ƒ @  Æ@Î?d ˆóRNÚ¼} @  ÆAÎ?d ÈóR¾¥F @  ÆBÎ?d ôR§ëµ  @  ÆCÎ?d HôR¯JSP @  ÆDÎ?d ˆôR¿Q® @  ÆEÎ?d ÈôRÀ«× @  ÆFÎ?d õR¯ˆ'? @  ÆGÎ?d HõR4†Ô @  ÆHÎ?d ˆõR7„* @  ÆIÎ?d ÈõRäH~S @  ÆJÎ?d öRy Þ’ @  ÆKÎ?d HöRÍ !™ @  Æ LÎ?d ˆöRíÿ#g @  Æ!MÎ?d ÈöR€Ù @  Æ"NÎ?d ÷RÍÈUö @  Æ#OÎ?d H÷R3Ò–ñ @  Æ$PÎ?d ˆ÷R'” @  Æ%QÎ?d È÷RãXnv @  Æ&RÎ?d øR×§âk @  Æ'SÎ?d HøRß0 @  Æ(TÎ?d ˆøRÿóÎ @  Æ)UÎ?d ÈøRŒü· @  Æ*VÎ?d ùRßÄp_ @  Æ+WÎ?d HùRDŽÑ´ @  Æ,XÎ?d ˆùRd{ÓJ @  Æ-YÎ?d ÈùR”)3 @  Æ.ZÎ?d úR @‰ò @  Æ/[Î?d HúR¬@QI @  Æ0\Î?d ˆúRŒµS· @  Æ1]Î?d ÈúR|ʩΠ@  Æ2^Î?d ûR¬‚%& @  Æ3_Î?d HûRÏ/ßý @  Æ4`Î?d ˆûRïÚÝ @  Æ5aÎ?d ÈûR¥'z @  Æ6bÎ?d üRëÔu @  Æ7cÎ?d HüRJ2. @  Æ8dÎ?d ˆüR.¿0Ð @  Æ9eÎ?d ÈüRÞÀÊ© @  Æ:fÎ?d ýRˆFA @  Æ;gÎ?d HýR•Âçª @  Æ<hÎ?d ˆýRµ7åT @  Æ=iÎ?d ÈýREH- @  Æ>jÎ?d þRØ ¿ì @  Æ?kÎ?d HþR Fu @  Æ@lÎ?d ˆþRâøD‹ @  ÆAmÎ?d ÈþR‡¾ò @  ÆBnÎ?d ÿRÂÏ2 @  ÆCoÎ?d HÿR<Õñ @  ÆDpÎ?d ˆÿR óã @  ÆEuÐSqÎ?d ÈÿRì_ š @  ÆFrÎ?d S£ë!k @  ÆGsÎ?d `S«JÇ0 @  ÆHtÎ?d  S‹¿ÅÎ @  ÆIuÎ?d àS{À?· @  ÆJvÎ?d S«ˆ³_ @  ÆKwÎ?d `S0´ @  ÆLxÎ?d  S7J @  ÆMyÎ?d àSàHê3 @  ÆNzÎ?d S} Jò @  ÆO{Î?d `SØ ’I @  ÆP|Î?d  Søù· @  ÆQ}Î?d àS†jÎ @  ÆR~Î?d SØÎæ& @  ÆSÎ?d `SVõ]~ @  ÆT€Î?d  Sv_€ @  ÆUÎ?d àS†¥ù @  ÆV‚Î?d SŸ1Vö @  ÆWƒÎ?d `S—°­ @  ÆX„Î?d  S·e²S @  ÆY…Î?d àSGH* @  ÆZ†Î?d S—RÄ @  Æ[‡Î?d `S e) @  Æ\ˆÎ?d  S,íg× @  Æ]‰Î?d àSÜ’® @  Æ^ŠÎ?d SAÖ=o @  Æ_‹Î?d `SõÐÂd @  Æ`ŒÎ?d  SÕ%Àš @  ÆaÎ?d àS%Z:ã @  ÆbŽÎ?d Sõ¶  @  ÆcÎ?d `S u  @  ÆdÎ?d  S+ýwò @  Æe‘Î?d àSÛ‚‹ @  Æf’Î?d Sï}– @  Æg“Î?d `SçÜçÍ @  Æh”Î?d  SÇ)å3 @  Æi•Î?d àS7VJ @  Æj–Î?d Sç“¢ @  Æk—Î?d ` S|T2I @  Æl˜Î?d   S\¡0· @  Æm™Î?d à S¬ÞÊÎ @  ÆnšÎ?d S1šj @  Æo›Î?d ` S”š²´ @  ÆpœÎ?d   S´o°J @  ÆqÎ?d à SDJ3 @  ÆržÎ?d S”XÆÛ @  ÆsŸÎ?d ` S÷õ< @  Æt Î?d   S×>þ @  Æu¡Î?d à S'ć @  Æv¢Î?d S>17ˆ @  Æw£Î?d ` S6ÑÓ @  Æx¤Î?d   SeÓ- @  Æy¥Î?d à Sæ)T @  Æz¦Î?d S6R¥¼ @  Æ{§Î?d ` S­W @  Æ|¨Î?d   Sí© @  Æ}©Î?d à S}’üÐ @  Æ~ªÎ?d SàÖ\ @  Æ«Î?d `S•¹ @  Æ€¬Î?d  S9t—G @  Æ­Î?d àSÉ m> @  Æ‚®Î?d SCáÖ @  Æƒ¯Î?d `SçY"Ñ @  Æ„°Î?d  SǬ / @  Æ…±Î?d àS7ÓÚV @  Æ†²Î?d S‰ fä @  Æ‡³Î?d `S¬€¿ @  Æˆ´Î?d  S¡Y‚A @  Æ‰µÎ?d àSQ&x8 @  ÆŠ¶Î?d SnôÐ @  Æ‹·Î?d `S$U; @  ÆŒ¸Î?d  S:ÑWÅ @  Æ¹Î?d àSÊ®­¼ @  ÆŽºÎ?d SWê } @  Æ»Î?d `SòêÕÆ @  Æ¼Î?d  SÒ×8 @  Æ‘½Î?d àS"`-A @  Æ’¾Î?d Sò(¡© @  Æ“¿Î?d `SaÕNc @  Æ”ÀÎ?d  SA L @  Æ•ÁÎ?d àS±_¶ä @  Æ–ÂÎ?d S¨Eë @  Æ—ÃÎ?d `S °£° @  Æ˜ÄÎ?d  S€E¡N @  Æ™ÅÎ?d àSp:[7 @  ÆšÆÎ?d S r×ß @  Æ›ÇÎ?d `S;8v4 @  ÆœÈÎ?d  SÍtÊ @  ÆÉÎ?d àS벎³ @  ÆžÊÎ?d Svö.r @  ÆŸËÎ?d `SÂðÑy @  Æ ÌÎ?d  SâÓ‡ @  Æ¡ÍÎ?d àSz)þ @  Æ¢ÎÎ?d SÂ2¥ @  Æ£ÏÎ?d `S<(f @  Æ¤ÐÎ?d  SÝdï @  Æ¥ÑÎ?d àS좞– @  Æ¦ÒÎ?d SØ]‹ @  Æ§ÓÎ?d `SÐüôÐ @  Æ¨ÔÎ?d  Sð ö. @  Æ©ÕÎ?d àSv W @  ÆªÖÎ?d SÐ>€¿ @  Æ«×Î?d `SKt!T @  Æ¬ØÎ?d  Sk#ª @  Æ­ÙÎ?d àS›þÙÓ @  Æ®ÚÎ?d Sºy @  Æ¯ÛÎ?d `S£º¡© @  Æ°ÜÎ?d  SƒO£W @  Æ±ÝÎ?d àSs0Y. @  Æ²ÞÎ?d S£xÕÆ @  Æ³ßÎ?d `SÀÕ/ @  Æ´àÎ?d  Sà -ã @  ÆµáÎ?d àS_ך @  Æ¶âÎ?d S $• @  Æ·ãÎ?d `S°ÂÎ @  Æ¸äÎ?d  S!EÀ0 @  Æ¹åÎ?d àSÑ::I @  ÆºæÎ?d Sr¶¡ @  Æ»çÎ?d `Sš8J @  Æ¼èÎ?d  SºÍ´ @  Æ½éÎ?d àSJ²ïÍ @  Æ¾êÎ?d S×öO  @  Æ¿ëÎ?d `SÍ÷¶• @  ÆÀìÎ?d  Sí´k @  ÆÁíÎ?d àS}N @  ÆÂîÎ?d SÍ5Âú @  ÆÃïÎ?d `S3/ý @  ÆÄðÎ?d  SÚuÐ S @  ÆÅñÎ?d àSã¥ùz @  ÆÆòÎ?d 8 S’®' @  ÆÇóÎ?d x SšÁG @  ÆÈôÎ?d ¸ Sºúù @  ÆÉõÎ?d ø SJ…9À @  ÆÊöÎ?d 8!SšÍµ( @  ÆË÷Î?d x!S‡Ã @  ÆÌøÎ?d ¸!S!r= @  ÆÍùÎ?d ø!SÑ ìD @  ÆÎúÎ?d 8"SLIL… @  ÆÏûÎ?d x"SéI”> @  ÆÐüÎ?d ¸"Sɼ–À @  ÆÑýÎ?d ø"S9Ãl¹ @  ÆÒþÎ?d 8#Sé‹àQ @  ÆÓÿÎ?d x#S× @  ÆÔÏ?d ¸#S8" û @  ÆÕÏ?d ø#SÈ]ö‚ @  ÆÖÏ?d 8$SÑ @  Æ×Ï?d x$SÙ²ãÖ @  ÆØÏ?d ¸$SùGá( @  ÆÙÏ?d ø$S 8Q @  ÆÚÏ?d 8%SÙp—¹ @  ÆÛÏ?d x%SB:6R @  ÆÜÏ?d ¸%SbÏ4¬ @  ÆÝ Ï?d ø%S’°ÎÕ @  ÆÞ Ï?d 8&Sôn @  Æß Ï?d x&S»ò‘ @  Æà Ï?d ¸&S›“á @  Æá Ï?d ø&Skxi˜ @  ÆâÏ?d€ 8'SÏóùÖ @  ÇÏ?d x'SШrø @  ÇÏ?d ¸'Sð]p @  ÇÏ?d ø'SÅkq’ @  ÇÏ?d 8(Sñ”ý @  ÇÏ?d x(S7‡D® @  ÇÏ?d ¸(SrFP @  ÇÏ?d ø(S)¿ãS @  ÇÏ?d 8)Sù÷o» @  Ç Ï?d x)S§ô5½ @  Ç Ï?d ¸)S‡7C @  Ç Ï?d ø)S²76× @  Ç Ï?d 8*S/s– @  Ç Ï?d x*Sé`/7 @  ÇÏ?d ¸*SÉ•-É @  ÇÏ?d ø*SZù¶* @  ÇÏ?d 8+Sб: @  ÇÏ?d x+S,U;ô @  Ç Ï?d ¸+S  9  @  Ç!Ï?d ø+S9–8ž @  Ç"Ï?d 8,S ØË‘ @  Ç#Ï?d x,SæËr° @  Ç$Ï?d ¸,SÆ>pN @  Ç%Ï?d ø,SøóÕM @  Ç&Ï?d 8-S(»Y¥ @  Ç'Ï?d x-Sv¸£ @  Ç(Ï?d ¸-SVM] @  Ç)Ï?d ø-Sc{É @  Ç*Ï?d 8.Sþ?  @  Ç+Ï?d x.S8,) @  Ç,Ï?d ¸.SÙ× @  Ç-Ï?d ø.Sš³§„ @  Ç .Ï?d 8/SJû+l @  Ç!/Ï?d x/Sq¨† @  Ç"0Ï?d ¸/SQ]x @  Ç#1Ï?d ø/Sdkì @  Ç$2Ï?d 80SÚµ¬^ @  Ç%3Ï?d x0S¦ @  Ç&4Ï?d ¸0Sj @  Ç)7Ï?d x1SŒÕdl @  Ç*8Ï?d ¸1S¬ f’ @  Ç+9Ï?d ø1S™g @  Ç,:Ï?d 82SRÇÇ @  Ç-;Ï?d x2SÂA~æ @  Ç.<Ï?d ¸2Sâ´| @  Ç/=Ï?d ø2SqØçû @  Ç0>Ï?d 83S¡k @  Ç1?Ï?d x3S÷$4 @  Ç2@Ï?d ¸3S×Ñ}Ê @  Ç3AÏ?d ø3Sâç|^ @  Ç4BÏ?d 84Sû©Q @  Ç5CÏ?d x4S=º6p @  Ç6DÏ?d ¸4SO4Ž @  Ç7EÏ?d ø4S#‚‘ @  Ç8FÏ?d 85SóÊe @  Ç9GÏ?d x5S­ÉGc @  Ç:HÏ?d ¸5SLÏ?d ¸6Sè_ @  Ç?MÏ?d ø6SïÅåÖ @  Ç@NÏ?d 87S?i> @  ÇAOÏ?d x7SÞQÔ @  ÇBPÏ?d ¸7S$+S* @  ÇCQÏ?d ø7SR¾ @  ÇDRÏ?d 88S%âÞ£ @  ÇESÏ?d x8Sãñg‚ @  ÇFTÏ?d ¸8SÃe| @  ÇGUÏ?d ø8SýÉÀ @  ÇHVÏ?d 89S-L— @  ÇIWÏ?d x9Ss‚‘ @  ÇJXÏ?d ¸9SSwo @  ÇKYÏ?d ø9SfAû @  ÇLZÏ?d 8:Sûµ: @  ÇM[Ï?d x:S=  @  ÇN\Ï?d ¸:Sãå @  ÇO]Ï?d ø:SŽ• @  ÇP^Ï?d 8;S^Çî @  ÇQ_Ï?d x;Sø#Ø @  ÇR`Ï?d ¸;SØÖ& @  ÇSaÏ?d ø;Síಠ@  ÇTbÏ?d 8S*Iƒ$ @  Ç]kÏ?d x>SìZ: @  Ç^lÏ?d ¸>S̯8û @  Ç_mÏ?d ø>SNÅ„¨ @  Ç`nÏ?d 8?Sž@ @  ÇaoÏ?d x?S¥Þ0ª @  ÇbpÏ?duÐ@S7 ¸?S…+2T @  ÇcqÏ?d ø?S°3À @  ÇdrÏ?d P@Ss±‰ü @  ÇesÏ?d @SÆ%ý @  ÇftÏ?d Ð@S•W2# @  ÇguÏ?d ASùC  @  ÇhvÏ?d PAS{ÒÈ @  ÇiwÏ?d AS‡µTî @  ÇjxÏ?d ÐAS$C0 @  ÇkyÏ?d BS/Çõ» @  ÇlzÏ?d PBS­Vâe @  Çm{Ï?d BSÉ!Nd @  Çn|Ï?d ÐBSK°Yº @  Ço}Ï?d CSŠYo @  Çp~Ï?d PCS”N± @  ÇqÏ?d CSá‚$ @  Çr€Ï?d ÐCSc ú @  ÇsÏ?d DSÍúé¿ @  Çt‚Ï?d PDSOkþa @  ÇuƒÏ?d DS+R` @  Çv„Ï?d ÐDS©E¾ @  Çw…Ï?d ESÅ™{‹ @  Çx†Ï?d PESGlU @  Çy‡Ï?d ES»o#s @  ÇzˆÏ?d ÐES9þ4­ @  Ç{‰Ï?d FS‚& @  Ç|ŠÏ?d PFS‘Œ•ø @  Ç}‹Ï?d FSõû9ù @  Ç~ŒÏ?d ÐFSwj.' @  ÇÏ?d GSêˆ?á @  Ç€ŽÏ?d PGSh(? @  ÇÏ?d GSñ.õ @  Ç‚Ï?d ÐGSs¿+ @  Çƒ‘Ï?d HSðçˆ| @  Ç„’Ï?d PHSrvŸ¢ @  Ç…“Ï?d HS3£ @  Ç†”Ï?d ÐHS”$} @  Ç‡•Ï?d ISø„H @  Çˆ–Ï?d PISz – @  Ç‰—Ï?d IS†rB° @  ÇŠ˜Ï?d ÐISãUn @  Ç‹™Ï?d JS.ãå @  ÇŒšÏ?d PJS¬‘ô; @  Ç›Ï?d JSÈæX: @  ÇŽœÏ?d ÐJSJwOä @  ÇÏ?d KS‹ÂO1 @  ÇžÏ?d PKS SXï @  Ç‘ŸÏ?d KS ÓLù @  Ç’ Ï?d ÐKSB[' @  Ç“¡Ï?d LS!«¾b @  Ç”¢Ï?d PLS£:©¼ @  Ç•£Ï?d LSÇM½ @  Ç–¤Ï?d ÐLSEÜc @  Ç—¥Ï?d MS)È,V @  Ç˜¦Ï?d PMS«Y;ˆ @  Ç™§Ï?d MSW>t® @  Çš¨Ï?d ÐMSÕ¯cp @  Ç›©Ï?d NSÿLÕû @  ÇœªÏ?d PNS}ÝÂ% @  Ç«Ï?d NSªn$ @  Çž¬Ï?d ÐNS›;yú @  ÇŸ­Ï?d OSKˆ^Ÿ @  Ç ®Ï?d POSÉIA @  Ç¡¯Ï?d OSP.d‹ @  Ç¢°Ï?d ÐOSÒ¿sU @  Ç£±Ï?d PSÛÆÙ­ @  Ç¤²Ï?d PPSYWÎs @  Ç¥³Ï?d PS= br @  Ç¦´Ï?d ÐPS¿±u¬ @  Ç§µÏ?d QSÓ¥K™ @  Ç¨¶Ï?d PQSQ4\G @  Ç©·Ï?d QS­Sa @  Çª¸Ï?d ÐQS/¿ @  Ç«¹Ï?d RS!²4 @  Ç¬ºÏ?d PRS‡°¥ê @  Ç­»Ï?d RSãÇ ë @  Ç®¼Ï?d ÐRSaV5 @  Ç¯½Ï?d SS ãà @  Ç°¾Ï?d PSS"r > @  Ç±¿Ï?d SSÖ¢9 @  Ç²ÀÏ?d ÐSST3ç @  Ç³ÁÏ?d TSúÚú¢ @  Ç´ÂÏ?d PTSxKí| @  ÇµÃÏ?d TSþÍ @  ÇÀÎÏ?d PWS¼o  @  ÇÁÏÏ?d WS%X&Ù @  ÇÂÐÏ?d ÐWS§É1 @  ÇÃÑÏ?d XS$‘«P @  ÇÄÒÏ?d PXS¦¼Ž @  ÇÅÓÏ?d XSÂw @  ÇÆÔÏ?d ÐXS@æQ @  ÇÇÕÏ?d YS,ò9d @  ÇÈÖÏ?d PYS®c.º @  ÇÉ×Ï?d YSRaœ @  ÇÊØÏ?d ÐYSЕvB @  ÇËÙÏ?d ZSúvÀÉ @  ÇÌÚÏ?d PZSxç× @  ÇÍÛÏ?d ZS{ @  ÇÎÜÏ?d ÐZSžlÈ @  ÇÏÝÏ?d [S_´l @  ÇÐÞÏ?d P[SÝ%{à @  ÇÑßÏ?d [SÙ¥oÕ @  ÇÒàÏ?d Ð[S[4x  @  ÇÓáÏ?d \SõÝN @  ÇÔâÏ?d P\SwLŠ @  ÇÕãÏ?d \S;&‘ @  ÇÖäÏ?d Ð\S‘ª1O @  Ç×åÏ?d ]Sý¾z @  ÇØæÏ?d P]S/¤ @  ÇÙçÏ?d ]SƒHW‚ @  ÇÚèÏ?d Ð]SÙ@\ @  ÇÛéÏ?d ^S+:ö× @  ÇÜêÏ?d P^S©«á  @  ÇÝëÏ?d ^SÍÜM @  ÇÞìÏ?d Ð^SOMZÖ @  ÇßíÏ?d _SŸþ}³ @  ÇàîÏ?d P_Sojm @  ÇáïÏ?d _S„XG§ @  ÇuÐ`SâðÏ?d€ Ð_S.SD+ @  ÈñÏ?d (`SÆM¯Ð @  ÈòÏ?d h`SDܸ @  ÈóÏ?d ¨`Såâïâ @  ÈôÏ?d è`Sgsø< @  ÈõÏ?d (aSÅÕ™s @  ÈöÏ?d haSGDŽ­ @  È÷Ï?d ¨aSu‘žñ @  ÈøÏ?d èaS÷‰/ @  È ùÏ?d (bSªÄI @  È úÏ?d hbSš;Ó— @  È ûÏ?d ¨bS;„{ @  È üÏ?d èbS¹”“¥ @  È ýÏ?d (cS2òê @  ÈþÏ?d hcS™£å4 @  ÈÿÏ?d ¨cS•D¢‡ @  ÈÐ?d ècSÕµY @  ÈÐ?d (dS|u«ñ @  ÈÐ?d hdSþä¼/ @  ÈÐ?d ¨dS_Úëà @  ÈÐ?d èdSÝKü @  ÈÐ?d (eSíR @  ÈÐ?d heSý|ŠŒ @  ÈÐ?d ¨eSÏ©šÐ @  ÈÐ?d èeSM8 @  È Ð?d (fS¢’Àh @  È Ð?d hfS ×¶ @  È Ð?d ¨fS=€Z @  È Ð?d èfS¬—„ @  È Ð?d (gS¡ öË @  ÈÐ?d hgS#›á @  ÈÐ?d ¨gSȹŠõ @  È Ð?d ègSJ(+ @  È!Ð?d (hS 9ü‘ @  È"Ð?d hhSލëO @  È#Ð?d ¨hS/–¼£ @  È$Ð?d èhS­«} @  È%Ð?d (iS¡Ê2 @  È&Ð?d hiS0Ýì @  È'Ð?d ¨iS¿åͰ @  È(Ð?d èiS=tÚn @  È)Ð?d (jSÒÞ— @  È*Ð?d hjSPO€Ö @  È+Ð?d ¨jSñq×: @  È,Ð?d èjSsàÀä @  È-Ð?d (kSÑF¡« @  È.Ð?d hkSS×¶u @  È/Ð?d ¨kS4DÃù @  È0 Ð?d èkS¶ÕÔ' @  È1!Ð?d (lSÝuÊ @  È2"Ð?d hlS_äÝQ @  È3#Ð?d ¨lSþÚŠ½ @  È4$Ð?d èlS|Kc @  È5%Ð?d (mSÞíü, @  È6&Ð?d hmS\|ëò @  È7'Ð?d ¨mSn©û® @  È8(Ð?d èmSì8ìp @  È9)Ð?d (nS’¡ @  È:*Ð?d hnS¶È @  È;+Ð?d ¨nS =á$ @  È<,Ð?d ènS¢¬öú @  È=-Ð?d (oS —µ @  È>.Ð?d hoS‚›€k @  È?/Ð?d ¨oSǾí @  È@0Ð?d èoSE/úÇ @  ÈA1Ð?d (pS‰«Ò @  ÈB2Ð?d hpS ޼  @  ÈC3Ð?d ¨pSª°ëà @  ÈD4Ð?d èpS(!ü> @  ÈE5Ð?d (qSЇq @  ÈF6Ð?d hqSН @  ÈG7Ð?d ¨qS:Úó @  ÈH8Ð?d èqS¸R- @  ÈI9Ð?d (rSWøÀK @  ÈJ:Ð?d hrSÕiו @  ÈK;Ð?d ¨rStW€y @  ÈL<Ð?d èrSöÆ—§ @  ÈM=Ð?d (sST`öè @  ÈN>Ð?d hsSÖñá6 @  ÈO?Ð?d ¨sSA2« @  ÈP@Ð?d èsSã–u @  ÈQAÐ?d (tS¨ˆÝ @  ÈRBÐ?d htS*’Ÿ @  ÈSCÐ?d ¨tS‹¬Èï @  ÈTDÐ?d ètS =ß1 @  ÈUEÐ?d (uS«›¾~ @  ÈVFÐ?d huS) ©  @  ÈWGÐ?d ¨uSß¹ü @  ÈXHÐ?d èuS™N®" @  ÈYIÐ?d (vSväãD @  ÈZJÐ?d hvSôuôš @  È[KÐ?d ¨vSUK£v @  È\LÐ?d èvS×Ú´¨ @  È]MÐ?d (wSu|Õç @  È^NÐ?d hwS÷íÂ9 @  È_OÐ?d ¨wSϩ٠@  È`PÐ?d èwSž^¾ @  ÈaQÐ?d (xSØOß½ @  ÈbRÐ?d hxSZÞÈc @  ÈcSÐ?d ¨xSûàŸ @  ÈdTÐ?d èxSyqˆQ @  ÈeUÐ?d (ySÛ×é @  ÈfVÐ?d hySYFþÀ @  ÈgWÐ?d ¨ySk“îœ @  ÈhXÐ?d èySéùB @  ÈiYÐ?d (zS¨´$ @  ÈjZÐ?d hzS„9£ú @  Èk[Ð?d ¨zS%ô @  Èl\Ð?d èzS§–ãÈ @  Èm]Ð?d ({S0‚‡ @  Èn^Ð?d h{S‡¡•Y @  Èo_Ð?d ¨{Sà2àÕ @  Èp`Ð?d è{Sb£÷  @  ÈqaÐ?d (|S é£ @  ÈrbÐ?d h|S‹’þ} @  ÈscÐ?d ¨|S*¬©‘ @  ÈtdÐ?d è|S¨=¾O @  ÈueÐ?d (}S ›ß @  ÈvfÐ?d h}Sˆ ÈÞ @  ÈwgÐ?d ¨}SºßØ‚ @  ÈxhÐ?d è}S8NÏ\ @  ÈyiÐ?d (~S×ä‚: @  ÈzjÐ?d h~SUu•ä @  È{kÐ?d ¨~SôK @  È|lÐ?d è~SvÚÕÖ @  È}mÐ?d (SÔ|´™ @  È~nÐ?d hSVí£G @  ÈoÐ?d ¨SuЀS'ðžþ @  È€pÐ?d èSréÚ @  ÈqÐ?d @€Sn_æ  @  È‚rÐ?d €€SNªä÷ @  ÈƒsÐ?d À€SMð¦; @  È„tÐ?d S¸*Ó @  È…uÐ?d @SmÇЪ @  È†vÐ?d €SM2ÒT @  È‡wÐ?d ÀS݃×( @  ÈˆxÐ?d ‚S@Çwé @  È‰yÐ?d @‚S°¸ @  ÈŠzÐ?d €‚SMn @  È‹{Ð?d À‚S“Í¢ @  ÈŒ|Ð?d ƒSC_AJ @  È}Ð?d @ƒS³ »3 @  ÈŽ~Ð?d €ƒS“Õ¹Í @  ÈÐ?d ÀƒS»´˜â @  È€Ð?d „S¢úkí @  È‘Ð?d @„SR…‘” @  È’‚Ð?d €„Srp“j @  È“ƒÐ?d À„Sq*Ѧ @  È”„Ð?d …S¡b]N @  È•…Ð?d @…SQ§7 @  È–†Ð?d €…Sqè¥É @  È—‡Ð?d À…SáY µ @  È˜ˆÐ?d †S|t @  È™‰Ð?d @†SŒbú  @  ÈšŠÐ?d €†S¬—øó @  È›‹Ð?d À†S¯Íº? @  ÈœŒÐ?d ‡S…6× @  ÈÐ?d @‡SúÌ® @  ÈžŽÐ?d €‡S¯ÎP @  ÈŸÐ?d À‡SæI° @  È Ð?d ˆSÒ¶< @  È¡‘Ð?d @ˆS"ÉÆô @  È¢’Ð?d €ˆS<Ä  @  È£“Ð?d ÀˆSf†Æ @  È¤”Ð?d ‰SÑ. . @  È¥•Ð?d @‰S!QðW @  È¦–Ð?d €‰S¤ò© @  È§—Ð?d À‰S‘÷Õ @  È¨˜Ð?d ŠS QW @  È©™Ð?d @ŠSü.­m @  ÈªšÐ?d €ŠSÜÛ¯“ @  È«›Ð?d ÀŠSßí_ @  È¬œÐ?d ‹SÉa· @  È­Ð?d @‹Sÿ¶›Î @  È®žÐ?d €‹SßC™0 @  È¯ŸÐ?d À‹S´ùœ @  È° Ð?d ŒSú “ @  È±¡Ð?d @ŒSó…ðê @  È²¢Ð?d €ŒSÓpò @  È³£Ð?d ÀŒSÐ*°Ø @  È´¤Ð?d Sb<0 @  Èµ¥Ð?d @SðÆI @  È¶¦Ð?d €SÐèÄ· @  È·§Ð?d ÀS@YÁË @  È¸¨Ð?d ŽSÝa  @  È¹©Ð?d @ŽS-b›s @  ÈºªÐ?d €ŽS —™ @  È»«Ð?d ÀŽSÍÛA @  È¼¬Ð?d SÞ…W© @  È½­Ð?d @S.ú­Ð @  È¾®Ð?d €S¯. @  È¿¯Ð?d ÀSéN×| @  ÈÀ°Ð?d SWkÎ @  ÈÁ±Ð?d @S§ï‘· @  È²Ð?d €S‡“I @  ÈóÐ?d ÀS„@Ñ… @  ÈÄ´Ð?d ‘ST]m @  ÈŵÐ?d @‘S¤w§ @  ÈƶÐ?d €‘S„‚¥ê @  ÈÇ·Ð?d À‘S3 – @  ÈȸÐ?d ’S‰wW @  ÈɹÐ?d @’Syú. @  ÈʺÐ?d €’SYýøÐ @  ÈË»Ð?d À’SZ§º @  È̼Ð?d “SŠï6ô @  ÈͽÐ?d @“SzÌ @  ÈξÐ?d €“SZeÎs @  ÈÏ¿Ð?d À“So»Î @  ÈÐÀÐ?d ”SvŒHÁ @  ÈÑÁÐ?d @”S†ó²¸ @  ÈÒÂÐ?d €”S¦°F @  ÈÓÃÐ?d À”S¥\òŠ @  ÈÔÄÐ?d •Su~b @  ÈÕÅÐ?d @•S…k„ @  ÈÖÆÐ?d €•S¥ž†å @  È×ÇÐ?d À•S5/ƒ™ @  ÈØÈÐ?d –S¨k#X @  ÈÙÉÐ?d @–SXÙ! @  ÈÚÊÐ?d €–SxáÛß @  ÈÛËÐ?d À–S{»™ @  ÈÜÌÐ?d —S«óû @  ÈÝÍÐ?d @—S[Œï‚ @  ÈÞÎÐ?d €—S{yí| @  ÈßÏÐ?d À—S2?“¼ @  ÈàÐÐ?d ˜SÀ¡ @  ÈáÑÐ?d @˜Sö¿åØ @  ÈâÒÐ?d€ €˜S¢‰û€ @  ÉÓÐ?d À˜S@’ñe @  ÉÔÐ?d ™SÚ} @  ÉÕÐ?d @™S¥ì| @  ÉÖÐ?d €™S…~ç @  É×Ð?d À™SÛ$á @  ÉØÐ?d šSF^„  @  ÉÙÐ?d @šSx“!# @  ÉÚÐ?d €šSXf#Ý @  É ÛÐ?d ÀšSžušü @  É ÜÐ?d ›SN= @  É ÝÐ?d @›S{ € @  É ÞÐ?d €›S[þ~ @  É ßÐ?d À›SýH @  ÉàÐ?d œSäTçG @  ÉáÐ?d @œSw8|¤ @  ÉâÐ?d €œSWÍ~Z @  ÉãÐ?d ÀœS‘ÞÇ{ @  ÉäÐ?d SA–K“ @  ÉåÐ?d @St J @  ÉæÐ?d €STUHù @  ÉçÐ?d ÀS Vÿ @  ÉèÐ?d žS—²> @  ÉéÐ?d @žS©ß= @  ÉêÐ?d €žS‰*à @  ÉëÐ?d ÀžSO9¬â @  ÉìÐ?d ŸSŸq  @  ÉíÐ?d @ŸSªG!ž @  ÉîÐ?d €ŸSв#` @  ÉïÐuРS?d ÀŸS±áŠ @  ÉðÐ?d  SÀêÅì @  ÉñÐ?d X SB€y¿ @  É òÐ?d ˜ Sbu{A @  É!óÐ?d Ø S¤fÂ` @  É"ôÐ?d ¡St.Nˆ @  É#õÐ?d X¡SAO @  É$öÐ?d ˜¡SaíMâ @  É%÷Ð?d Ø¡S?îä @  É&øÐ?d ¢S¢ª·% @  É'ùÐ?d X¢Sœg& @  É(úÐ?d ˜¢S¼’Ø @  É)ûÐ?d Ø¢Sz©ù @  É*üÐ?d £SªÉ% @  É+ýÐ?d X£SŸÿ$… @  É,þÐ?d ˜£S¿ &{ @  É-ÿÐ?d Ø£S‹3 @  É.Ñ?d ¤S’QÀÍ @  É/Ñ?d X¤S=[. @  É0Ñ?d ˜¤S!ÈYÐ @  É1Ñ?d ؤSçÛàñ @  É2Ñ?d ¥S7“l @  É3Ñ?d X¥S¥m @  É4Ñ?d ˜¥S"Pos @  É5Ñ?d Ø¥S|S5u @  É6Ñ?d ¦Sá•´ @  É7 Ñ?d X¦SßÚ0· @  É8 Ñ?d ˜¦Sÿ/2I @  É9 Ñ?d ئS9<‹h @  É: Ñ?d §Sét€ @  É; Ñ?d X§SÜB @  É<Ñ?d ˜§Sü·ê @  É=Ñ?d اSÇä< @  É>Ñ?d ¨Só° @  É?Ñ?d X¨Sßv Ü @  É@Ñ?d ˜¨Sÿƒ" @  ÉAÑ?d بS9± @  ÉBÑ?d ©SéØ=ë @  ÉCÑ?d X©SÜî< @  ÉDÑ?d ˜©Sü> @  ÉEÑ?d Ø©S¢d‡ @  ÉFÑ?d ªS?\ÄF @  ÉGÑ?d XªS‘aE @  ÉHÑ?d ˜ªS!dc» @  ÉIÑ?d تSçwÚš @  ÉJÑ?d «S7?Vr @  ÉKÑ?d X«S Wæ @  ÉLÑ?d ˜«S"üU @  ÉMÑ?d Ø«S„T. @  ÉN Ñ?d ¬SV§! @  ÉO!Ñ?d X¬S:< @  ÉP"Ñ?d ˜¬S.Ï>< @  ÉQ#Ñ?d جSè܇ @  ÉR$Ñ?d ­S8” õ @  ÉS%Ñ?d X­S ¢ a @  ÉT&Ñ?d ˜­S-WŸ @  ÉU'Ñ?d Ø­SsTR™ @  ÉV(Ñ?d ®SîòX @  ÉW)Ñ?d X®SÐÝW[ @  ÉX*Ñ?d ˜®Sð(U¥ @  ÉY+Ñ?d Ø®S6;ì„ @  ÉZ,Ñ?d ¯Sæs`l @  É[-Ñ?d X¯SÓEaø @  É\.Ñ?d ˜¯Só°c @  É]/Ñ?d دSÈã[ì @  É^0Ñ?d °Sv=ç^ @  É_1Ñ?d X°SôW[  @  É`2Ñ?d ˜°SÔ¢Yó @  Éa3Ñ?d ذS±àÒ @  Éb4Ñ?d ±SÂùl: @  Éc5Ñ?d X±S÷Ïm® @  Éd6Ñ?d ˜±S×:oP @  Ée7Ñ?d رS‰95V @  Éf8Ñ?d ²S}•— @  Ég9Ñ?d X²S*°0” @  Éh:Ñ?d ˜²S E2j @  Éi;Ñ?d زSÌV‹K @  Éj<Ñ?d ³S£ @  Ék=Ñ?d X³S)(7 @  Él>Ñ?d ˜³S ÝÉ @  Ém?Ñ?d سS_iî @  Én@Ñ?d ´SF'ãá @  ÉoAÑ?d X´SÕKx @  ÉpBÑ?d ˜´Sõ¾zü @  ÉqCÑ?d Ø´S3­ÃÝ @  ÉrDÑ?d µSãåO5 @  ÉsEÑ?d XµSÖÓN¡ @  ÉtFÑ?d ˜µSö&L_ @  ÉuGÑ?d صS¨%Y @  ÉvHÑ?d ¶S5a¶˜ @  ÉwIÑ?d X¶S ¬› @  ÉxJÑ?d ˜¶S+Ye @  ÉyKÑ?d ضSíJ¨D @  ÉzLÑ?d ·S=$¬ @  É{MÑ?d X·S4%8 @  É|NÑ?d ˜·S(Á'Æ @  É}OÑ?d Ø·S’, @  É~PÑ?d ¸S'm“1 @  ÉQÑ?d X¸SèVÁ @  É€RÑ?d ˜¸SÈ£? @  ÉSÑ?d ظS°¢ @  É‚TÑ?d ¹SÞø.ö @  ÉƒUÑ?d X¹SëÎ/b @  É„VÑ?d ˜¹SË;-œ @  É…WÑ?d عS•8wš @  É†XÑ?d ºS|×[ @  É‡YÑ?d XºS6±rX @  ÉˆZÑ?d ˜ºSDp¦ @  É‰[Ñ?d غSÐWɇ @  ÉŠ\Ñ?d »SEo @  É‹]Ñ?d X»S5)Dû @  ÉŒ^Ñ?d ˜»SÜF @  É_Ñ?d Ø»S³8G3 @  ÉŽ`Ñ?d ¼Sªv´< @  ÉaÑ?d X¼S9/ß @  ÉbÑ?d ˜¼Sï-! @  É‘cÑ?d ؼSßü” @  É’dÑ?d ½S´è @  É“eÑ?d X½S:‚| @  É”fÑ?d ˜½Sw‚ @  É•gÑ?d ؽSDtA„ @  É–hÑ?d ¾SÙ0áE @  É—iÑ?d X¾SçýDF @  É˜jÑ?d ˜¾SÇF¸ @  É™kÑ?d ؾSÿ™ @  ÉšlÑ?d ¿SÑSsq @  É›mÑ?d X¿Säerå @  ÉœnÑ?d ˜¿SÄp @uÐÀS  ÉoÑ?d Ø¿SÆ”$ @  Éž pÑ?d 0ÀSYšþv @  ÉŸqÑ?d pÀSÛðB% @  É rÑ?d °ÀSû@Û @  É¡sÑ?d ðÀS=ùú @  É¢tÑ?d 0ÁSí^u @  É£uÑ?d pÁSØht† @  É¤vÑ?d °ÁSøvx @  É¥wÑ?d ðÁS¦ž,~ @  É¦xÑ?d 0ÂS;ÚŒ¿ @  É§yÑ?d pÂS)¼ @  É¨zÑ?d °ÂS%â+B @  É©{Ñ?d ðÂSãñ’c @  Éª|Ñ?d 0ÃS3¹‹ @  É«}Ñ?d pÃS @  É¬~Ñ?d °ÃS&zá @  É­Ñ?d ðÃSm]T @  É®€Ñ?d 0ÄStF®[ @  É¯Ñ?d pÄSç*5¸ @  É°‚Ñ?d °ÄSÇß7F @  É±ƒÑ?d ðÄSÌŽg @  É²„Ñ?d 0ÅSÑ„ @  É³…Ñ?d pÅSä² @  É´†Ñ?d °ÅSÄGå @  Éµ‡Ñ?d ðÅSšD[ã @  É¶ˆÑ?d 0ÆSû" @  É·‰Ñ?d pÆS9Í^! @  É¸ŠÑ?d °ÆS8\ß @  É¹‹Ñ?d ðÆSß+åþ @  ÉºŒÑ?d 0ÇSci @  É»Ñ?d pÇS:Uh‚ @  É¼ŽÑ?d °ÇS j| @  É½Ñ?d ðÇS!óR– @  É¾Ñ?d 0ÈS Þ‹ @  É¿‘Ñ?d pÈS9adJ @  ÉÀ’Ñ?d °ÈS”f´ @  ÉÁ“Ñ?d ðÈS߇ߕ @  É”Ñ?d 0ÉSÏS} @  ÉÕÑ?d pÉS:ùRé @  ÉÄ–Ñ?d °ÉS P @  ÉÅ—Ñ?d ðÉSD  @  ÉƘÑ?d 0ÊSÙKªÐ @  ÉÇ™Ñ?d pÊSç†Ó @  ÉÈšÑ?d °ÊSÇs - @  ÉÉ›Ñ?d ðÊS`´  @  ÉÊœÑ?d 0ËSÑ(8ä @  ÉËÑ?d pËSä9p @  ÉÌžÑ?d °ËSÄë;Ž @  ÉÍŸÑ?d ðËSb:¸ @  ÉΠÑ?d 0ÌS{AÉ· @  ÉÏ¡Ñ?d pÌSè-RT @  ÉТÑ?d °ÌSÈØPª @  ÉÑ£Ñ?d ðÌSËé‹ @  ÉÒ¤Ñ?d 0ÍSÞƒec @  ÉÓ¥Ñ?d pÍSëµd÷ @  ÉÔ¦Ñ?d °ÍSË@f  @  ÉÕ§Ñ?d ðÍS•C< @  ÉÖ¨Ñ?d 0ÎSœÎ @  ÉשÑ?d pÎS6Ê9Í @  ÉتÑ?d °ÎS?;3 @  ÉÙ«Ñ?d ðÎSÐ,‚ @  ÉÚ¬Ñ?d 0ÏSdú @  ÉÛ­Ñ?d pÏS5Rn @  ÉÜ®Ñ?d °ÏS§  @  ÉݯÑ?d ðÏS.ô5z @  ÉÞ°Ñ?d 0ÐS*‰È @  Éß±Ñ?d pÐS@5› @  Éà²Ñ?d °ÐS2µ7e @  Éá³Ñ?d ðÐSô¦ŽD @  Éâ´Ñ?d€ 0ÑSå©õ¬ @  ÊµÑ?d pÑS1Þ¼ @  Ê¶Ñ?d °ÑS+¾ï @  Ê·Ñ?d ðÑSŠa @  Ê¸Ñ?d 0ÒS%¿Å @  Ê¹Ñ?d pÒSçZE¼ @  ÊºÑ?d °ÒSǯGB @  Ê»Ñ?d ðÒSÏ¡ @  Ê¼Ñ?d 0ÓSF-ñ @  Ê ½Ñ?d pÓSï9׈ @  Ê ¾Ñ?d °ÓSÏÌÕv @  Ê ¿Ñ?d ðÓS\1:¼ @  Ê ÀÑ?d 0ÔSEɳ @  Ê ÁÑ?d pÔSµ3Ê @  ÊÂÑ?d °ÔS•õ14 @  ÊÃÑ?d ðÔS0õé @  ÊÄÑ?d 0ÕSà½eg @  ÊÅÑ?d pÕSŸ @  ÊÆÑ?d °ÕS07à @  ÊÇÑ?d ðÕS«}<  @  ÊÈÑ?d 0ÖS69œÊ @  ÊÉÑ?d pÖSÆFf³ @  ÊÊÑ?d °ÖSæ³dM @  ÊËÑ?d ðÖSî‚ @  ÊÌÑ?d 0×S>Zþ @  ÊÍÑ?d p×SÎ%ô‡ @  ÊÎÑ?d °×SîÐöy @  ÊÏÑ?d ð×SÊ5~ @  ÊÐÑ?d 0ØS$5¹c @  ÊÑÑ?d pØSÔJC @  ÊÒÑ?d °ØSô¿Aä @  ÊÓÑ?d ðØS@¹¾ï @  Ê ÔÑ?d 0ÙSñ2 @  Ê!ÕÑ?d pÙS`ŽÈ~ @  Ê"ÖÑ?d °ÙS@{Ê€ @  Ê#×Ñ?d ðÙSÛ1kk @  Ê$ØÑ?d 0ÚSFu˪ @  Ê%ÙÑ?d pÚS¶ 1Ó @  Ê&ÚÑ?d °ÚS–ÿ3- @  Ê'ÛÑ?d ðÚSž^Õv @  Ê(ÜÑ?d 0ÛSNYž @  Ê)ÝÑ?d pÛS¾i£ç @  Ê*ÞÑ?d °ÛSžœ¡ @  Ê+ßÑ?d ðÛSý1[ @  Ê,àÑ?d 0ÜSä¨Í @  Ê-áÑ?d pÜSR´ @  Ê.âÑ?d °ÜS4õPJ @  Ê/ãÑ?d ðÜS‘õˆñ @  Ê0äÑ?d 0ÝSA½ @  Ê1åÑ?d pÝS±Âþ` @  Ê2æÑ?d °ÝS‘7üž @  Ê3çÑ?d ðÝS }]u @  Ê4èÑ?d 0ÞS—9ý´ @  Ê5éÑ?d pÞSgFÍ @  Ê6êÑ?d °ÞSG³3 @  Ê7ëÑ?d ðÞSOãh @  Ê8ìÑ?d 0ßSŸZo€ @  Ê9íÑ?d pßSo%•ù @  Ê:îÑ?d uÐàS/°ßSOЗ @  Ê;ïÑ?d ðßS±ÊT @  Ê<ðÑ?d HàS¨n ö @  Ê=ñÑ?d ˆàSúuå¯ @  Ê>òÑ?d ÈàSxäòq @  Ê?óÑ?d áS0<Þ @  Ê@ôÑ?d HáS²­‡ @  ÊAõÑ?d ˆáSØSY @  ÊB öÑ?d ÈáS™ID‡ @  ÊC ÷Ñ?d âSæ¸is @  ÊDøÑ?d HâSd)~­ @  ÊEùÑ?d ˆâS62‘ô @  ÊFúÑ?d ÈâS´£†* @  ÊGûÑ?d ãSµÀG @  ÊH üÑ?d HãSlJì™ @  ÊIýÑ?d ˆãS>QÀ @  ÊJþÑ?d ÈãS¼À @  ÊKÿÑ?d äSda+¾ @  ÊLÒ?d HäSæð<` @  ÊMÒ?d ˆäS´ëÓ9 @  ÊNÒ?d ÈäS6zÄç @  ÊOÒ?d åSÁ£‡j @  ÊPÒ?d HåSC2´ @  ÊQÒ?d ˆåS)í @  ÊRÒ?d ÈåS“¸h3 @  ÊSÒ?d æS'~Ç @  ÊTÒ?d HæS•¶i @  ÊU Ò?d ˆæSÇ­†@ @  ÊV Ò?d ÈæSE<‘ž @  ÊW Ò?d çSDìó @  ÊX Ò?d HçSÕû- @  ÊY Ò?d ˆçSÏÎt @  ÊZÒ?d ÈçSòv— @  Ê[€Ò?d èSºÏÇ @  Ê\€Ò?d HèS8“Ø @  Ê]€Ò?d ˆèSjˆ7@ @  Ê^€Ò?d ÈèSè ž @  Ê_€Ò?d éSÆD£ @  Ê`€Ò?d HéSŒWS} @  Êa€Ò?d ˆéSÞL¼$ @  Êb€Ò?d ÈéS\Ý«ú @  Êc€Ò?d êSØB½ @  Êd€Ò?d HêSZӪР@  Êe€Ò?d ˆêSÈE‰ @  Êf€Ò?d ÈêSŠYRW @  Êg€Ò?d ëSÐ!/: @  Êh€Ò?d HëSR°8ä @  Êi€Ò?d ˆëS«×½ @  Êj€Ò?d ÈëS‚:Àc @  Êk€Ò?d ìSzHÞi @  Êl€ Ò?d HìSøÙÉ· @  Êm€!Ò?d ˆìSªÂ&î @  Ên€"Ò?d ÈìS(S10 @  Êo€#Ò?d íSߊr½ @  Êp€$Ò?d HíS]ec @  Êq€%Ò?d ˆíSŠ: @  Êr€&Ò?d ÈíS‘ä @  Ês€'Ò?d îS ‹ @  Êt€(Ò?d HîS‹ŸœÎ @  Êu€)Ò?d ˆîSÙ„s— @  Êv€*Ò?d ÈîS[dI @  Êw€+Ò?d ïSm$ @  Êx€,Ò?d HïSƒüú @  Êy€-Ò?d ˆïSÑçᣠ@  Êz€.Ò?d ÈïSSvö} @  Ê{€/Ò?d ðS‘#ž @  Ê|€0Ò?d HðS²‰È @  Ê}€1Ò?d ˆðSA©f‘ @  Ê~€2Ò?d ÈðSÃ8qO @  Ê€3Ò?d ñSh¶#Ñ @  Ê€€4Ò?d HñSê'4 @  Ê€5Ò?d ˆñS¸<ÛV @  Ê‚€6Ò?d ÈñS:­Ìˆ @  Êƒ€7Ò?d òS¾2Ú| @  Ê„€8Ò?d HòS<£Í¢ @  Ê…€9Ò?d ˆòSn¸"û @  Ê†€:Ò?d ÈòSì)5% @  Ê‡€;Ò?d óS¶QHH @  Êˆ€<Ò?d HóS4À_– @  Ê‰€=Ò?d ˆóSfÛ°Ï @  ÊŠ€>Ò?d ÈóSäJ§ @  Ê‹€?Ò?d ôSìh¬  @  ÊŒ€@Ò?d HôSnù»Ô @  Ê€AÒ?d ˆôS<âT @  ÊŽ€BÒ?d ÈôS¾sCS @  Ê€CÒ?d õSIªÞ @  Ê€DÒ?d HõSË; @  Ê‘€EÒ?d ˆõS™ øY @  Ê’€FÒ?d ÈõS±ï‡ @  Ê“€GÒ?d öSŸ.ùs @  Ê”€HÒ?d HöS¿î­ @  Ê•€IÒ?d ˆöSO¤ô @  Ê–€JÒ?d ÈöSÍ5* @  Ê—€KÒ?d ÷S—MkG @  Ê˜€LÒ?d H÷SÜ|™ @  Ê™€MÒ?d ˆ÷SGÇ“À @  Êš€NÒ?d È÷SÅV„ @  Ê›€OÒ?d øS"ÜÚ @  Êœ€PÒ?d HøS³Ë @  Ê€QÒ?d ˆøS]¨$] @  Êž€RÒ?d ÈøSß93ƒ @  ÊŸ€SÒ?d ùS9æW¾ @  Ê €TÒ?d HùS»w@` @  Ê¡€UÒ?d ˆùSél¯9 @  Ê¢€VÒ?d ÈùSký¸ç @  Ê£€WÒ?d úSïb® @  Ê¤€XÒ?d HúSmó¹Í @  Ê¥€YÒ?d ˆúS?èV” @  Ê¦€ZÒ?d ÈúS½yAJ @  Ê§€[Ò?d ûSç<' @  Ê¨€\Ò?d HûSe+ù @  Ê©€]Ò?d ˆûS7‹Ä  @  Êª€^Ò?d ÈûSµÓ~ @  Ê«€_Ò?d üSMhÍt @  Ê¬€`Ò?d HüSÏùÚª @  Ê­€aÒ?d ˆüSâ5ó @  Ê®€bÒ?d ÈüSs"- @  Ê¯€cÒ?d ýSèªa  @  Ê°€dÒ?d HýSj;v~ @  Ê±€eÒ?d ˆýS8 ™' @  Ê²€fÒ?d ÈýSº±Žù @  Ê³€gÒ?d þS>.˜  @  Ê´€hÒ?d HþS¼¿Ó @  Êµ€iÒ?d ˆþSî¤`Š @  Ê¶€jÒ?d ÈþSl5wT @  Ê·€kÒ?d ÿS6M 9 @  Ê¸€lÒ?d HÿS´Üç @  Ê¹€mÒ?d ˆÿSæÇò¾ @  Êº€uÐTnÒ?d ÈÿSdVå` @  Ê»€oÒ?d T-#' @  Ê¼€pÒ?d `T¯Š4ù @  Ê½€qÒ?d  Tý‘Û  @  Ê¾€rÒ?d àTÌ~ @  Ê¿€sÒ?d T7Ø®Ñ @  ÊÀ€tÒ?d `TµI¹ @  ÊÁ€uÒ?d  TçRVV @  Ê€vÒ?d àTeÃAˆ @  ÊÀwÒ?d Tá\W| @  ÊÄ€xÒ?d `TcÍ@¢ @  ÊÅ€yÒ?d  T1Ö¯û @  ÊÆ€zÒ?d àT³G¸% @  ÊÇ€{Ò?d Té?ÅH @  ÊÈ€|Ò?d `Tk®Ò– @  ÊÉ€}Ò?d  T9µ=Ï @  ÊÊ€~Ò?d àT»$* @  ÊË€Ò?d T®Àu˜ @  ÊÌ€€Ò?d `T,QbF @  ÊÍ€Ò?d  T~J @  Ê΀‚Ò?d àTüÛšÁ @  ÊÏ€ƒÒ?d T ÙL @  ÊЀ„Ò?d `T‰“Î’ @  ÊÑ€…Ò?d  TÛˆ!Ë @  ÊÒ€†Ò?d àTY6 @  ÊÓ€‡Ò?d T݆ á @  ÊÔ€ˆÒ?d `T_7? @  ÊÕ€‰Ò?d  T Øf @  ÊÖ€ŠÒ?d àTϸ @  Ê×€‹Ò?d TÕå²Õ @  ÊØ€ŒÒ?d `TWt¥  @  ÊÙ€Ò?d  ToJR @  ÊÚ€ŽÒ?d àT‡þ]Œ @  ÊÛ€Ò?d TÏŠH @  ÊÜ€Ò?d `TM– @  ÊÝ€‘Ò?d  TýÏ @  ÊÞ€’Ò?d àT‘ê @  Ê߀“Ò?d T{NŽ, @  Êà€”Ò?d ` Tùß™ò @  ÊပÒ?d   T«Äv« @  Ê‖Ò?d€ à T]–}Ó @  Ë€—Ò?d T8H# @  Ë€˜Ò?d ` TºÙ4Ð @  Ë€™Ò?d   T-‹ d @  Ë€šÒ?d à T¯7º @  Ë€›Ò?d T;Э @  Ë€œÒ?d ` T¹As @  Ë€Ò?d   T%è²P @  Ë€žÒ?d à T§y¥Ž @  Ë €ŸÒ?d TšB@i @  Ë € Ò?d ` TÓW· @  Ë €¡Ò?d   TC @  Ë €¢Ò?d à T TÝ @  Ë €£Ò?d T™ÚvÊ @  Ë€¤Ò?d ` TKa @  Ë€¥Ò?d   T*Cï× @  Ë€¦Ò?d à T¨Òø  @  Ë€§Ò?d Té @  Ë€¨Ò?d `Tk•Î @  Ë€©Ò?d  TüÇz @  Ë€ªÒ?d àT~V¤ @  Ë€«Ò?d Têœ#³ @  Ë€¬Ò?d `Th 4m @  Ë€­Ò?d  Tô¤„N @  Ë€®Ò?d àTv5“ @  Ë€¯Ò?d Tq) @  Ë€°Ò?d `Tó¸È @  Ë€±Ò?d  Tdê| @  Ë€²Ò?d àTæ{¢ @  Ë€³Ò?d Tr±6µ @  Ë€´Ò?d `Tð !k @  Ë€µÒ?d  TÐ.ˆ @  Ë €¶Ò?d àTR¿ŸÆ @  Ë!€·Ò?d Tirß @  Ë"€¸Ò?d `T‘øe @  Ë#€¹Ò?d  Tªqµ @  Ë$€ºÒ?d àT„;fk @  Ë%€»Ò?d TñD| @  Ë&€¼Ò?d `T’`S¢ @  Ë'€½Ò?d  TÉã @  Ë(€¾Ò?d àTŒXô_ @  Ë)€¿Ò?d TA3© @  Ë*€ÀÒ?d `Tâw @  Ë+€ÁÒ?d  TTðà @  Ë,€ÂÒ?d àTÖa @  Ë-€ÃÒ?d TB«2  @  Ë.€ÄÒ?d `TÀ:%Ô @  Ë/€ÅÒ?d  Tñ2« @  Ë0€ÆÒ?d àTs£¼É @  Ë1€ÇÒ?d T2uQÐ @  Ë2€ÈÒ?d `T°äF @  Ë3€ÉÒ?d  T'¶Rº @  Ë4€ÊÒ?d àT¥'Ed @  Ë5€ËÒ?d T1ígs @  Ë6€ÌÒ?d `T³|p­ @  Ë7€ÍÒ?d  T/ÕÀŽ @  Ë8€ÎÒ?d àT­D×P @  Ë9€ÏÒ?d T yty @  Ë:€ÐÒ?d `T¢èc§ @  Ë;€ÑÒ?d  T5ºw @  Ë<€ÒÒ?d àT·+`Í @  Ë=€ÓÒ?d T#áBÚ @  Ë>€ÔÒ?d `T¡pU @  Ë?€ÕÒ?d  T/yúå @  Ë@€ÖÒ?d àT­èí; @  ËA€×Ò?d Tì>" @  ËB€ØÒ?d `Tn¯ü @  ËC€ÙÒ?d  TùýH @  ËD€ÚÒ?d àT{l– @  ËE€ÛÒ?d Tï¦6 @  ËF€ÜÒ?d `Tm7!_ @  ËG€ÝÒ?d  Tñž‘| @  ËH€ÞÒ?d àTs†¢ @  ËI€ßÒ?d TN4cE @  ËJ€àÒ?d `TÌ¥t› @  ËK€áÒ?d  T[÷`/ @  ËL€âÒ?d àTÙfwñ @  ËM€ãÒ?d TM¬Uæ @  ËN€äÒ?d `TÏ=B8 @  ËO€åÒ?d  Tþ5Ìû @  ËP€æÒ?d àT|¤Û% @  ËQ€çÒ?d T=r6< @  ËR€èÒ?d `T¿ã!â @  ËS€éÒ?d  T(±5V @  ËT€êÒ?d àTª "ˆ @  ËU€ëÒ?d T>êŸ @  ËV€ìÒ?d `T¼{A @  ËW€íÒ?d  T Ò§buÐ T @  ËX€îÒ?d àT¢C°¼ @  ËY€ïÒ?d 8 TjŠAî @  ËZ€ðÒ?d x TèV0 @  Ë[€ñÒ?d ¸ TIB„ @  Ë\€òÒ?d ø TýØUZ @  Ë]€óÒ?d 8!TiwM @  Ë^€ôÒ?d x!Tëƒ`“ @  Ë_€õÒ?d ¸!TËÉà @  Ë`€öÒ?d ø!TIÞ> @  Ëa€÷Ò?d 8"TÊ3' @  Ëb€øÒ?d x"TŠ[$ù @  Ëc€ùÒ?d ¸"T 0M @  Ëd€úÒ?d ø"TŸ˜'“ @  Ëe€ûÒ?d 8#T R„ @  Ëf€üÒ?d x#T‰ÃZ @  Ëg€ýÒ?d ¸#Tj¢y @  Ëh€þÒ?d ø#T—ûµ§ @  Ëi€ÿÒ?d 8$T81DÏ @  Ëj€Ó?d x$Tº S @  Ëk€Ó?d ¸$T-òG¥ @  Ël€Ó?d ø$T¯cP{ @  Ëm€Ó?d 8%T;©rl @  Ën€Ó?d x%T¹8e² @  Ëo€Ó?d ¸%Tˆ0ëq @  Ëp€Ó?d ø%T ¡ü¯ @  Ëq€Ó?d 8&TKw¶ @  Ër€Ó?d x&TÉæh @  Ës€ Ó?d ¸&T^´Ü @  Ët€ Ó?d ø&TÜ% @  Ëu€ Ó?d 8'THï' @  Ëv€ Ó?d x'TÊ~0Ë @  Ëw€ Ó?d ¸'TV×€è @  Ëx€Ó?d ø'TÔF—6 @  Ëy€Ó?d 8(TY{4 @  Ëz€Ó?d x(TÛê#Á @  Ë{€Ó?d ¸(TL¸7u @  Ë|€Ó?d ø(TÎ) « @  Ë}€Ó?d 8)TZã¼ @  Ë~€Ó?d x)TØrb @  Ë€Ó?d ¸)Tµ-в @  Ë€€Ó?d ø)T7¼l @  Ë€Ó?d 8*Tvjpu @  Ë‚€Ó?d x*Tôûg« @  Ëƒ€Ó?d ¸*Tc©s @  Ë„€Ó?d ø*Tá8dÁ @  Ë…€Ó?d 8+TuòFÖ @  Ë†€Ó?d x+T÷cQ @  Ë‡€Ó?d ¸+TkÊá+ @  Ëˆ€Ó?d ø+Té[öõ @  Ë‰€Ó?d 8,TÔ` @  ËŠ€ Ó?d x,TVñÌ @  Ë‹€!Ó?d ¸,TÁ£x @  ËŒ€"Ó?d ø,TC2¦ @  Ë€#Ó?d 8-T×ø%± @  ËŽ€$Ó?d x-TUi2o @  Ë€%Ó?d ¸-Tda¼¬ @  Ë€&Ó?d ø-Tæð«r @  Ë‘€'Ó?d 8.T§&Fk @  Ë’€(Ó?d x.T%·Qµ @  Ë“€)Ó?d ¸.T²åE @  Ë”€*Ó?d ø.T0tRß @  Ë•€+Ó?d 8/T¤¾pÈ @  Ë–€,Ó?d x/T&/g @  Ë—€-Ó?d ¸/Tº†×5 @  Ë˜€.Ó?d ø/T8Àë @  Ë™€/Ó?d 80T? Sm @  Ëš€0Ó?d x0T½šD³ @  Ë›€1Ó?d ¸0T*ÈP @  Ëœ€2Ó?d ø0T¨YGÙ @  Ë€3Ó?d 81T<“eÎ @  Ëž€4Ó?d x1T¾r @  ËŸ€5Ó?d ¸1Tž Ûc @  Ë €6Ó?d ø1T̽ @  Ë¡€7Ó?d 82T]K!¤ @  Ë¢€8Ó?d x2TßÚ6z @  Ë£€9Ó?d ¸2THˆ"Î @  Ë¤€:Ó?d ø2TÊ5 @  Ë¥€;Ó?d 83T^Ó @  Ë¦€<Ó?d x3TÜBÙ @  Ë§€=Ó?d ¸3T@ë°ú @  Ë¨€>Ó?d ø3TÂz§$ @  Ë©€?Ó?d 84TWÒ @  Ëª€@Ó?d x4T€@  @  Ë«€AÓ?d ¸4TÒT¸ @  Ë¬€BÓ?d ø4T˜CCf @  Ë­€CÓ?d 85T ‰aq @  Ë®€DÓ?d x5TŽv¯ @  Ë¯€EÓ?d ¸5T¿øl @  Ë°€FÓ?d ø5T=ï² @  Ë±€GÓ?d 86T|W« @  Ë²€HÓ?d x6TþÆu @  Ë³€IÓ?d ¸6Ti”Á @  Ë´€JÓ?d ø6Të @  Ëµ€KÓ?d 87TÏ4 @  Ë¶€LÓ?d x7Tý^#Ö @  Ë·€MÓ?d ¸7Ta÷“õ @  Ë¸€NÓ?d ø7Tãf„+ @  Ë¹€OÓ?d 88Tn[' @  Ëº€PÓ?d x8TìÊ0Ü @  Ë»€QÓ?d ¸8T{˜$h @  Ë¼€RÓ?d ø8Tù 3¶ @  Ë½€SÓ?d 89Tmá @  Ë¾€TÓ?d x9TïR @  Ë¿€UÓ?d ¸9Ta[©ž @  ËÀ€VÓ?d ø9Tãʾ@ @  ËÁ€WÓ?d 8:T¢SY @  Ë€XÓ?d x:T D‡ @  ËÀYÓ?d ¸:T·ßP3 @  ËÄ€ZÓ?d ø:T5NGí @  ËÅ€[Ó?d 8;T¡„eú @  ËÆ€\Ó?d x;T#r$ @  ËÇ€]Ó?d ¸;T¿¼Â @  ËÈ€^Ó?d ø;T=-ÕÙ @  ËÉ€_Ó?d 8 @  ËÊ€`Ó?d xTsPeG @  ËÒ€hÓ?d x>TñÁr™ @  ËÓ€iÓ?d ¸>Tf“f- @  ËÔ€jÓ?d ø>Täqó @  ËÕ€kÓ?d 8?TpÈSä @  ËÖ€lÓ?d x?TòYD: @  Ë×€mÓ?duÐ@T7 ¸?Tnðô @  ËØ€nÓ?d ø?TìaãÇ @  ËÙ€oÓ?d P@T–vÏ @  ËÚ€pÓ?d @T¶út1 @  ËÛ€qÓ?d Ð@TƒÌu¥ @  ËÜ€rÓ?d ATS„ùM @  ËÝ€sÓ?d PAT•—@l @  ËÞ€tÓ?d ATµbB’ @  Ë߀uÓ?d ÐAT7þÁ @  Ëà€vÓ?d BTªL^ @  Ëá€wÓ?d PBTôO @  Ëâ€xÓ?d€ BTRì®A @  Ì€yÓ?d ÐBT†›çü @  Ì€zÓ?d CTVÓk @  Ì€{Ó?d PCTU‰)Ø @  Ì€|Ó?d CTu|+& @  Ì€}Ó?d ÐCT…Ñ_ @  Ì€~Ó?d DTœM"P @  Ì€Ó?d PDT=Ÿ @  Ì€€Ó?d DT9x?a @  Ì €Ó?d ÐDTÉÅ @  Ì €‚Ó?d ETOIð @  Ì €ƒÓ?d PET < @  Ì €„Ó?d ET:à  @  Ì €…Ó?d ÐETÊŸó» @  Ì€†Ó?d FTWÛSz @  Ì€‡Ó?d PFTjËhæ @  Ì€ˆÓ?d FTJ>j @  Ì€‰Ó?d ÐFTºAa @  Ì€ŠÓ?d GTj ‰ @  Ì€‹Ó?d PGTiS^E @  Ì€ŒÓ?d GTI¦\» @  Ì€Ó?d ÐGT¹Ù¦Â @  Ì€ŽÓ?d HT&*ß @  Ì€Ó?d PHTxÇMO @  Ì€Ó?d HTX2O± @  Ì€‘Ó?d ÐHT¨MµÈ @  Ì€’Ó?d ITx9  @  Ì€“Ó?d PIT{_{ì @  Ì€”Ó?d IT[ªy @  Ì€•Ó?d ÐIT«Õƒk @  Ì€–Ó?d JT6‘#ª @  Ì€—Ó?d PJT‡?† @  Ì €˜Ó?d JT:r=x @  Ì!€™Ó?d ÐJTÊ Ç @  Ì"€šÓ?d KTEKé @  Ì#€›Ó?d PKT % @  Ì$€œÓ?d KT9ê Û @  Ì%€Ó?d ÐKTÉ•ñ¢ @  Ì&€žÓ?d LTÐÛ­ @  Ì'€ŸÓ?d PLT¸\á @  Ì(€ Ó?d LT˜x^ @  Ì)€¡Ó?d ÐLTh¤f @  Ì*€¢Ó?d MT¸O(Ž @  Ì+€£Ó?d PMT»jB @  Ì,€¤Ó?d MT›àh¼ @  Ì-€¥Ó?d ÐMTkŸ’Å @  Ì.€¦Ó?d NTöÛ2 @  Ì/€§Ó?d PNTËË ˜ @  Ì0€¨Ó?d NTë> f @  Ì1€©Ó?d ÐNTAñ @  Ì2€ªÓ?d OTË }÷ @  Ì3€«Ó?d POTÈS?; @  Ì4€¬Ó?d OTè¦=Å @  Ì5€­Ó?d ÐOTÙǼ @  Ì6€®Ó?d PT¦{ @  Ì7€¯Ó?d PPTSæž @  Ì8€°Ó?d PTs` @  Ì9€±Ó?d ÐPTƒlä @  Ì:€²Ó?d QTS$hñ @  Ì;€³Ó?d PQTP~*= @  Ì<€´Ó?d QTp‹(à @  Ì=€µÓ?d ÐQT€ôÒº @  Ì>€¶Ó?d RT°r{ @  Ì?€·Ó?d PRTŸ¡hÅ @  Ì@€¸Ó?d RT¿Tj; @  ÌA€¹Ó?d ÐRTO+B @  ÌB€ºÓ?d STŸcª @  ÌC€»Ó?d PSTœ9^f @  ÌD€¼Ó?d ST¼Ì\˜ @  ÌE€½Ó?d ÐSTL³¦á @  ÌF€¾Ó?d TTUýUî @  ÌG€¿Ó?d PTTÍû³ @  ÌH€ÀÓ?d TTíM @  ÌI€ÁÓ?d ÐTTqæ4 @  ÌJ€ÂÓ?d UTÍ9jÜ @  ÌK€ÃÓ?d PUTÎc( @  ÌL€ÄÓ?d UTî–*î @  ÌM€ÅÓ?d ÐUTéЗ @  ÌN€ÆÓ?d VTƒ­pV @  ÌO€ÇÓ?d PVT¾½KÊ @  ÌP€ÈÓ?d VTžHI4 @  ÌQ€ÉÓ?d ÐVTn7³M @  ÌR€ÊÓ?d WT¾?¥ @  ÌS€ËÓ?d PWT½%}i @  ÌT€ÌÓ?d WTЗ @  ÌU€ÍÓ?d ÐWTm¯…î @  ÌV€ÎÓ?d XTYP ó @  ÌW€ÏÓ?d PXT¬±nc @  ÌX€ÐÓ?d XTŒDl @  ÌY€ÑÓ?d ÐXT|;–ä @  ÌZ€ÒÓ?d YT¬s  @  Ì[€ÓÓ?d PYT¯)XÀ @  Ì\€ÔÓ?d YTÜZ> @  Ì]€ÕÓ?d ÐYT£ G @  Ì^€ÖÓ?d ZTâç† @  Ì_€×Ó?d PZTÎñª @  Ì`€ØÓ?d ZTîT @  Ìa€ÙÓ?d ÐZT{ä- @  Ìb€ÚÓ?d [TÎ3hÅ @  Ìc€ÛÓ?d P[TÍi*  @  Ìd€ÜÓ?d [Tíœ(÷ @  Ìe€ÝÓ?d Ð[TãÒŽ @  Ìf€ÞÓ?d \T­! @  Ìg€ßÓ?d P\TlûÍ @  Ìh€àÓ?d \TL}3 @  Ìi€áÓ?d Ð\T¼q‡J @  Ìj€âÓ?d ]Tl9 ¢ @  Ìk€ãÓ?d P]TocIn @  Ìl€äÓ?d ]TO–K @  Ìm€åÓ?d Ð]T¿é±é @  Ìn€æÓ?d ^T"­( @  Ìo€çÓ?d P^T½*´ @  Ìp€èÓ?d ^T?H(J @  Ìq€éÓ?d Ð^TÏ7Ò3 @  Ìr€êÓ?d _T^Û @  Ìs€ëÓ?d P_T% @  Ìt€ìÓ?d _T<Ðé @  ÌuÐ`Tu€íÓ?d Ð_T̯ä @  Ìv€îÓ?d (`TrWQ @  Ìw€ïÓ?d h`T‡¶6˜ @  Ìx€ðÓ?d ¨`T§C4f @  Ìy€ñÓ?d è`TW<Î @  Ìz€òÓ?d (aT‡tB÷ @  Ì{€óÓ?d haT„.; @  Ì|€ôÓ?d ¨aT¤ÛÅ @  Ì}€õÓ?d èaTT¤ø¼ @  Ì~€öÓ?d (bTÉàX} @  Ì€÷Ó?d hbT¨§rò @  Ì€€øÓ?d ¨bTˆRp  @  Ì€ùÓ?d èbTx-Šu @  Ì‚€úÓ?d (cT¨e @  Ìƒ€ûÓ?d hcT«?DQ @  Ì„€üÓ?d ¨cT‹ÊF¯ @  Ì…€ýÓ?d ècT{µ¼Ö @  Ì†€þÓ?d (dTbûOÙ @  Ì‡€ÿÓ?d hdT¤U:Œ @  Ìˆ€Ô?d ¨dT„ 8r @  Ì‰€Ô?d èdTtß  @  ÌŠ€Ô?d (eT¤—Nã @  Ì‹€Ô?d heT§Í / @  ÌŒ€Ô?d ¨eT‡8Ñ @  Ì€Ô?d èeTwGô¨ @  ÌŽ€Ô?d (fTêTi @  Ì€Ô?d hfT×oõ @  Ì€Ô?d ¨fT÷æm  @  Ì‘€ Ô?d èfT™—r @  Ì’€ Ô?d (gT×Ñš @  Ì“€ Ô?d hgTÔ‹YV @  Ì”€ Ô?d ¨gTô~[¨ @  Ì•€ Ô?d ègT¡Ñ @  Ì–€Ô?d (hT0þ-Ì @  Ì—€Ô?d hhTÅJ\ @  Ì˜€Ô?d ¨hTåêH¢ @  Ì™€Ô?d èhT•²Û @  Ìš€Ô?d (iTÅÝ>3 @  Ì›€Ô?d hiTƇ|ÿ @  Ìœ€Ô?d ¨iTær~ @  Ì€Ô?d èiT „x @  Ìž€Ô?d (jT‹I$¹ @  ÌŸ€Ô?d hjT§_8• @  Ì €Ô?d ¨jT‡ª:k @  Ì¡€Ô?d èjTwÕÀ @  Ì¢€Ô?d (kT§Lú @  Ì£€Ô?d hkT¤Ç6 @  Ì¤€Ô?d ¨kT„2 È @  Ì¥€Ô?d èkTtMö± @  Ì¦€Ô?d (lTm¾ @  Ì§€Ô?d hlTU[ò @  Ì¨€ Ô?d ¨lT% Y  @  Ì©€!Ô?d èlTÕߣu @  Ìª€"Ô?d (mT—/ @  Ì«€#Ô?d hmTÍmQ @  Ì¬€$Ô?d ¨mT&8o¯ @  Ì­€%Ô?d èmTÖG•Ö @  Ì®€&Ô?d (nTK5 @  Ì¯€'Ô?d hnTv‹ @  Ì°€(Ô?d ¨nTVæ u @  Ì±€)Ô?d ènT¦™ö  @  Ì²€*Ô?d (oTvÑzä @  Ì³€+Ô?d hoTu‹8( @  Ì´€,Ô?d ¨oTU~:Ö @  Ìµ€-Ô?d èoT¥À¯ @  Ì¶€.Ô?d (pTß| @  Ì·€/Ô?d hpTî> @  Ì¸€0Ô?d ¨pTÎËs @  Ì¹€1Ô?d èpT>´ã  @  Ìº€2Ô?d (qTîüoâ @  Ì»€3Ô?d hqTí¦-. @  Ì¼€4Ô?d ¨qTÍS/Ð @  Ì½€5Ô?d èqT=,Õ© @  Ì¾€6Ô?d (rT huh @  Ì¿€7Ô?d hrT"yoÖ @  ÌÀ€8Ô?d ¨rTŒm( @  ÌÁ€9Ô?d èrTòó—Q @  Ì€:Ô?d (sT"»¹ @  ÌÀ;Ô?d hsT!áYu @  ÌÄ€<Ô?d ¨sT[‹ @  ÌÅ€=Ô?d èsTñk¡ò @  ÌÆ€>Ô?d (tTè%Rý @  ÌÇ€?Ô?d htTp#  @  ÌÈ€@Ô?d ¨tTPÖ^ @  ÌÉ€AÔ?d ètT ©á' @  ÌÊ€BÔ?d (uTpámÏ @  ÌË€CÔ?d huTs»/ @  ÌÌ€DÔ?d ¨uTSN-ý @  ÌÍ€EÔ?d èuT£1ׄ @  Ì΀FÔ?d (vT>uwE @  ÌÏ€GÔ?d hvTeLÙ @  ÌЀHÔ?d ¨vT#N' @  ÌÑ€IÔ?d èvTÓï´^ @  ÌÒ€JÔ?d (wT§8¶ @  ÌÓ€KÔ?d hwTýzz @  ÌÔ€LÔ?d ¨wT x„ @  ÌÕ€MÔ?d èwTÐw‚ý @  ÌÖ€NÔ?d (xTäˆà @  Ì×€OÔ?d hxTiip @  ÌØ€PÔ?d ¨xT1œkŽ @  ÌÙ€QÔ?d èxTÁã‘÷ @  ÌÚ€RÔ?d (yT« @  ÌÛ€SÔ?d hyTñ_Ó @  ÌÜ€TÔ?d ¨yT2]- @  ÌÝ€UÔ?d èyTÂ{§T @  ÌÞ€VÔ?d (zT_?• @  Ì߀WÔ?d hzTs)¹ @  Ìà€XÔ?d ¨zTSÜG @  Ìá€YÔ?d èzT££ã> @  Ìâ€ZÔ?d€ ({T(sp @  Í€[Ô?d h{Tå3y• @  Í€\Ô?d ¨{TÅÆ{k @  Í€]Ô?d è{Tððzÿ @  Í€^Ô?d (|T龉ð @  Í€_Ô?d h|TOZˆÆ @  Í€`Ô?d ¨|To¯Š8 @  Í€aÔ?d è|TQb/; @  Í€bÔ?d (}T*£Ó @  Í €cÔ?d h}TG9ò @  Í €dÔ?d ¨}TgÌ  @  Í €eÔ?d è}TRú˜ @  Í €fÔ?d (~TϾ¹Y @  Í €gÔ?d h~T‘½ã_ @  Í€hÔ?d ¨~T±Há¡ @  Í€iÔ?d è~T"$zB @  Í€jÔ?d (Tòlöª @  Í€kÔ?d hT4O‹ @  Í€lÔ?d ¨TuЀT'ŠMu @  Í€mÔ?d èT!¼Lá @  Í€nÔ?d @€TO®• @  Í€oÔ?d €€TÖ5ƒ_ @  Í€pÔ?d À€TT¤” @  Í€qÔ?d T8°ª´ @  Í€rÔ?d @Tº!½j @  Í€sÔ?d €TÞVk @  Í€tÔ?d ÀT\ǵ @  Í€uÔ?d ‚Tv$°> @  Í€vÔ?d @‚Tôµ§à @  Í€wÔ?d €‚TÒèÆ @  Í€xÔ?d À‚TŠCÿ @  Í€yÔ?d ƒTZðØ} @  Í €zÔ?d @ƒTØaÏ£ @  Í!€{Ô?d €ƒT¼c¢ @  Í"€|Ô?d ÀƒT>‡t| @  Í#€}Ô?d „Tn‘9 @  Í$€~Ô?d @„Tÿ†ç @  Í%€Ô?d €„TûéÓr @  Í&€€Ô?d À„TyxĬ @  Í'€Ô?d …Tlú™ @  Í(€‚Ô?d @…T—ýíG @  Í)€ƒÔ?d €…TóŠAF @  Í*€„Ô?d À…TqV˜ @  Í+€…Ô?d †T[øà @  Í,€†Ô?d @†TÙi÷Í @  Í-€‡Ô?d €†T%¸ë @  Í.€ˆÔ?d À†T§Ÿ¯5 @  Í/€‰Ô?d ‡Tf*¯à @  Í0€ŠÔ?d @‡T仸> @  Í1€‹Ô?d €‡T€Ì? @  Í2€ŒÔ?d À‡T]á @  Í3€Ô?d ˆT™¶ @  Í4€ŽÔ?d @ˆT”Žh @  Í5€Ô?d €ˆT𣣢 @  Í6€Ô?d ÀˆT2´| @  Í7€‘Ô?d ‰Tt&ŠI @  Í8€’Ô?d @‰Tö·— @  Í9€“Ô?d €‰T’À1– @  Í:€”Ô?d À‰TQ&H @  Í;€•Ô?d ŠT:²Ã @  Í<€–Ô?d @ŠT¸#‡ @  Í=€—Ô?d €ŠTDDÈ; @  Í>€˜Ô?d ÀŠTÆÕßå @  Í?€™Ô?d ‹T¸aþ @  Í@€šÔ?d @‹T:ðéÌ @  ÍA€›Ô?d €‹T^‡EÍ @  ÍB€œÔ?d À‹TÜR @  ÍC€Ô?d ŒTrÿ·V @  ÍD€žÔ?d @ŒTðn ˆ @  ÍE€ŸÔ?d €ŒTôî´ž @  ÍF€ Ô?d ÀŒTv£@ @  ÍG€¡Ô?d Tku @  ÍH€¢Ô?d @T˜úŠ« @  ÍI€£Ô?d €Tü&ª @  ÍJ€¤Ô?d ÀT~1t @  ÍK€¥Ô?d ŽTTÿ‡ÿ @  ÍL€¦Ô?d @ŽTÖn! @  ÍM€§Ô?d €ŽT* ß @  ÍN€¨Ô?d ÀŽT¨˜ÈÙ @  ÍO€©Ô?d Ti-È  @  ÍP€ªÔ?d @Të¼ßÒ @  ÍQ€«Ô?d €TËsÓ @  ÍR€¬Ô?d ÀT Zd  @  ÍS€­Ô?d T#Îõ @  ÍT€®Ô?d @T†²Ù+ @  ÍU€¯Ô?d €T…ôá @  ÍV€°Ô?d ÀTã? @  ÍW€±Ô?d ‘TñÝ  @  ÍX€²Ô?d @‘Ts‘ÊÔ @  ÍY€³Ô?d €‘TæfÕ @  ÍZ€´Ô?d À‘T•wq  @  Í[€µÔ?d ’T¿”Ç€ @  Í\€¶Ô?d @’T=Ð^ @  Í]€·Ô?d €’TÁbŸx @  Í^€¸Ô?d À’TCóˆ¦ @  Í_€¹Ô?d “T“@¯Ã @  Í`€ºÔ?d @“TѸ @  Ía€»Ô?d €“Tu¦ @  Íb€¼Ô?d À“T÷7 @  Íc€½Ô?d ”TYÞæ‡ @  Íd€¾Ô?d @”TÛOñY @  Íe€¿Ô?d €”T/Ÿð^ @  Íf€ÀÔ?d À”T­ç€ @  Íg€ÁÔ?d •TÁÙµ @  Íh€ÂÔ?d @•TC‹Îk @  Íi€ÃÔ?d €•T'übj @  Íj€ÄÔ?d À•T¥mu´ @  Ík€ÅÔ?d –TŽÃ? @  Íl€ÆÔ?d @–T Ôá @  Ím€ÇÔ?d €–Tñx›Ç @  Ín€ÈÔ?d À–TséŒ @  Ío€ÉÔ?d —T²\ŒÌ @  Íp€ÊÔ?d @—T0Í› @  Íq€ËÔ?d €—TTº7 @  Ír€ÌÔ?d À—TÖ+ Í @  Ís€ÍÔ?d ˜TUsºš @  Ít€ÎÔ?d @˜T×â­D @  Íu€ÏÔ?d €˜TNÕ€Ž @  Ív€ÐÔ?d À˜TÌD—P @  Íw€ÑÔ?d ™T P©e @  Íx€ÒÔ?d @™T"Á¾» @  Íy€ÓÔ?d €™TF¶º @  Íz€ÔÔ?d À™TÄ'd @  Í{€ÕÔ?d šTîijï @  Í|€ÖÔ?d @šTlU¤1 @  Í}€×Ô?d €šT2ë @  Í~€ØÔ?d ÀšT£üÉ @  Í€ÙÔ?d ›TAí @  Í€€ÚÔ?d @›T ÐúÑ @  Í€ÛÔ?d €›Ti§VÐ @  Í‚€ÜÔ?d À›Të6A @  Íƒ€ÝÔ?d œTEߤK @  Í„€ÞÔ?d @œTÇN³• @  Í…€ßÔ?d €œTÃΧƒ @  Í†€àÔ?d ÀœTA_°] @  Í‡€áÔ?d T-KŽh @  Íˆ€âÔ?d @T¯Ú™¶ @  Í‰€ãÔ?d €TË­5· @  ÍŠ€äÔ?d ÀTI<"i @  Í‹€åÔ?d žTcß”â @  ÍŒ€æÔ?d @žTáNƒ< @  Í€çÔ?d €žT)Ì @  ÍŽ€èÔ?d ÀžTŸ¸ÛÄ @  Í€éÔ?d ŸT^ Û @  Í€êÔ?d @ŸTÜœÌÏ @  Í‘€ëÔ?d €ŸT¸ë`Î @  Í’€ìÔuРT?d ÀŸT:zw @  Í“€íÔ?d  TüÖ¿< @  Í”€îÔ?d X T~G¨â @  Í•€ïÔ?d ˜ Tçp…( @  Í–€ðÔ?d Ø Teá’ö @  Í—€ñÔ?d ¡T õ¬Ã @  Í˜€òÔ?d X¡T‹d» @  Í™€óÔ?d ˜¡Tï @  Íš€ôÔ?d Ø¡Tm‚ @  Í›€õÔ?d ¢TGa¶I @  Íœ€öÔ?d X¢TÅð¡— @  Í€÷Ô?d ˜¢T9—î± @  Íž€øÔ?d Ø¢T»ùo @  ÍŸ€ùÔ?d £TkµÞ  @  Í €úÔ?d X£Té$ÉÔ @  Í¡€ûÔ?d ˜£TSeÕ @  Í¢€üÔ?d Ø£TÂr  @  Í£€ýÔ?d ¤T¡+—N @  Í¤€þÔ?d X¤T#º€ @  Í¥€ÿÔ?d ˜¤TµË€  @  Í¦€Õ?d ؤT7Z—× @  Í§€Õ?d ¥T[N©â @  Í¨€Õ?d X¥TÙß¾< @  Í©€Õ?d ˜¥T½¨= @  Íª€Õ?d Ø¥T?9ã @  Í«€Õ?d ¦TÚ³h @  Í¬€Õ?d X¦T—K¤¶ @  Í­€Õ?d ˜¦Tk,ë @  Í®€Õ?d ئTé½üN @  Í¯€ Õ?d §T(ü› @  Í°€ Õ?d X§Tª™ëE @  Í±€ Õ?d ˜§TÎîGD @  Í²€ Õ?d اTLPš @  Í³€ Õ?d ¨TÏ'ÊÍ @  Í´€Õ?d X¨TM¶Ý @  Íµ€Õ?d ˜¨TÔðÙ @  Í¶€Õ?d بTVç @  Í·€Õ?d ©T:Ù2 @  Í¸€Õ?d X©T¸•Îì @  Í¹€Õ?d ˜©TÜâbí @  Íº€Õ?d Ø©T^su3 @  Í»€Õ?d ªTtø @  Í¼€Õ?d XªTöÔf @  Í½€Õ?d ˜ªT f›@ @  Í¾€Õ?d تTˆ÷Œž @  Í¿€Õ?d «TöC­i @  ÍÀ€Õ?d X«TtÒº· @  ÍÁ€Õ?d ˜«T¥¶ @  Í€Õ?d Ø«T’4h @  ÍÀÕ?d ¬T<Ýä- @  ÍÄ€Õ?d X¬T¾Lóó @  ÍÅ€Õ?d ˜¬TºÌçå @  ÍÆ€ Õ?d جT8]ð; @  ÍÇ€!Õ?d ­TTIÎ @  ÍÈ€"Õ?d X­TÖØÙÐ @  ÍÉ€#Õ?d ˜­T²¯uÑ @  ÍÊ€$Õ?d Ø­T0>b @  ÍË€%Õ?d ®TÝÔ„ @  ÍÌ€&Õ?d X®T˜LÃZ @  ÍÍ€'Õ?d ˜®Td+Œ| @  Í΀(Õ?d Ø®T溛¢ @  ÍÏ€)Õ?d ¯T'›w @  ÍЀ*Õ?d X¯T¥žŒ© @  ÍÑ€+Õ?d ˜¯TÁé ¨ @  ÍÒ€,Õ?d دTCx7v @  ÍÓ€-Õ?d °TJŽ @  ÍÔ€.Õ?d X°TÈŠP @  ÍÕ€/Õ?d ˜°TQ§§š @  ÍÖ€0Õ?d ذTÓ6°D @  Í×€1Õ?d ±T¿"Žq @  ÍØ€2Õ?d X±T=³™¯ @  ÍÙ€3Õ?d ˜±TYÄ5® @  ÍÚ€4Õ?d رTÛU"p @  ÍÛ€5Õ?d ²Tñ¶”û @  ÍÜ€6Õ?d X²Ts'ƒ% @  ÍÝ€7Õ?d ˜²T@Ì @  ÍÞ€8Õ?d زT ÑÛÝ @  Í߀9Õ?d ³TÝbü¸ @  Íà€:Õ?d X³T_óëf @  Íá€;Õ?d ˜³T;„Gg @  Íâ€<Õ?d€ سTxR§¹ @  Î€=Õ?d ´T7ú Õ @  Î€>Õ?d X´Tµk  @  Î€?Õ?d ˜´T„òçá @  Î€@Õ?d Ø´Tcð? @  Î€AÕ?d µT¤Å‘p @  Î€BÕ?d XµT&T†® @  Î€CÕ?d ˜µTŒ‘uÕ @  Î€DÕ?d صTb  @  Î €EÕ?d ¶Táª/m @  Î €FÕ?d X¶Tc;8³ @  Î €GÕ?d ˜¶TZŒx @  Î €HÕ?d ضTØ„›¦ @  Î €IÕ?d ·Tz"úé @  Î€JÕ?d X·Tø³í7 @  Î€KÕ?d ˜·Tÿ× ¬ @  Î€LÕ?d Ø·T}F7r @  Î€MÕ?d ¸T;WVÈ @  Î€NÕ?d X¸T¹ÆA @  Î€OÕ?d ˜¸T帗1 @  Î€PÕ?d ظTg)€ï @  Î€QÕ?d ¹TÅá  @  Î€RÕ?d X¹TGö~ @  Î€SÕ?d ˜¹TíÛ @  Î€TÕ?d عToJÛ @  Î€UÕ?d ºT€à_½ @  Î€VÕ?d XºTqHc @  Î€WÕ?d ˜ºT;_ü¨ @  Î€XÕ?d غT¹Îëv @  Î€YÕ?d »ThŠ9 @  Î€ZÕ?d X»T™ùç @  Î€[Õ?d ˜»T›wÌ @  Î €\Õ?d Ø»T ` @  Î!€]Õ?d ¼Tfª~º @  Î"€^Õ?d X¼Tä;id @  Î#€_Õ?d ˜¼T%ò†Ÿ @  Î$€`Õ?d ؼT§c‘A @  Î%€aÕ?d ½TÅð @  Î&€bÕ?d X½T‡TçÐ @  Î'€cÕ?d ˜½T-‘« @  Î(€dÕ?d ؽT¯u @  Î)€eÕ?d ¾T@ªN @  Î*€fÕ?d X¾TÂ;YÍ @  Î+€gÕ?d ˜¾Tûí @  Î,€hÕ?d ؾTy„úØ @  Î-€iÕ?d ¿TÛ"›— @  Î.€jÕ?d X¿TY³ŒI @  Î/€kÕ?d ˜¿T^×AÒ @uÐÀT  Î0€lÕ?d Ø¿TÜFV  @  Î1€mÕ?d 0ÀTÊXêù @  Î2€nÕ?d pÀTHÉý' @  Î3€oÕ?d °ÀT·+ @  Î4€pÕ?d ðÀT–&<Þ @  Î5€qÕ?d 0ÁT4€]‘ @  Î6€rÕ?d pÁT¶JO @  Î7€sÕ?d °ÁTÔ¹4 @  Î8€tÕ?d ðÁTžE®ê @  Î9€uÕ?d 0ÂTqï㌠@  Î:€vÕ?d pÂTó~ôR @  Î;€wÕ?d °ÂTÊP@™ @  Î<€xÕ?d ðÂTHÁWG @  Î=€yÕ?d 0ÃTêg6 @  Î>€zÕ?d pÃThö!Ö @  Î?€{Õ?d °ÃTГÍo @  Î@€|Õ?d ðÃTRÚ± @  ÎA€}Õ?d 0ÄT9¢Ä @  ÎB€~Õ?d pÄT»3ÓÇ @  ÎC€Õ?d °ÄT—l}¿ @  ÎD€€Õ?d ðÄTýja @  ÎE€Õ?d 0ÅT·[ . @  ÎF€‚Õ?d pÅT5Êð @  ÎG€ƒÕ?d °ÅTŸï‹ @  ÎH€„Õ?d ðÅTžøU @  ÎI€…Õ?d 0ÆTò4µ3 @  ÎJ€†Õ?d pÆTp¥¢í @  ÎK€‡Õ?d °ÆTI‹& @  ÎL€ˆÕ?d ðÆTËø @  ÎM€‰Õ?d 0ÇTi¼`· @  ÎN€ŠÕ?d pÇTë-wi @  ÎO€‹Õ?d °ÇTìIºò @  ÎP€ŒÕ?d ðÇTnØ­, @  ÎQ€Õ?d 0ÈT(ÉÌ– @  ÎR€ŽÕ?d pÈTªXÛH @  ÎS€Õ?d °ÈTö& o @  ÎT€Õ?d ðÈTt·± @  ÎU€‘Õ?d 0ÉTÖ{þ @  ÎV€’Õ?d pÉTT€l  @  ÎW€“Õ?d °ÉTþEŸ[ @  ÎX€”Õ?d ðÉT|Ôˆ… @  ÎY€•Õ?d 0ÊT“~Åã @  ÎZ€–Õ?d pÊTïÒ= @  Î[€—Õ?d °ÊT(Áfö @  Î\€˜Õ?d ðÊTªPq( @  Î]€™Õ?d 0ËTög @  Î^€šÕ?d pËTŠg¹ @  Î_€›Õ?d °ËTœí’ @  Î`€œÕ?d ðËT”úL @  Îa€Õ?d 0ÌTu4ää @  Îb€žÕ?d pÌT÷¥ó: @  Îc€ŸÕ?d °ÌT6lÁ @  Îd€ Õ?d ðÌT´ý  @  Îe€¡Õ?d 0ÍT[jP @  Îf€¢Õ?d pÍT”Ê}Ž @  Îg€£Õ?d °ÍT>Žõ @  Îh€¤Õ?d ðÍT¼ž™+ @  Îi€¥Õ?d 0ÎTS4ÔM @  Îj€¦Õ?d pÎTѥÓ @  Îk€§Õ?d °ÎTè‹wX @  Îl€¨Õ?d ðÎTj`† @  Îm€©Õ?d 0ÏTȼÉ @  În€ªÕ?d pÏTJ- @  Îo€«Õ?d °ÏTMIÛŒ @  Îp€¬Õ?d ðÏTÏØÌR @  Îq€­Õ?d 0ÐTèG @  Îr€®Õ?d pÐTyŠ™ @  Îs€¯Õ?d °ÐTÝ\¾ @  Ît€°Õ?d ðÐT_–K` @  Îu€±Õ?d 0ÑTý0*/ @  Îv€²Õ?d pÑT¡=ñ @  Îw€³Õ?d °ÑTÕdΊ @  Îx€´Õ?d ðÑTWõÙT @  Îy€µÕ?d 0ÒT¸_”2 @  Îz€¶Õ?d pÒT:΃ì @  Î{€·Õ?d °ÒTà7' @  Î|€¸Õ?d ðÒTq ù @  Î}€¹Õ?d 0ÓT#×A¶ @  Î~€ºÕ?d pÓT¡FVh @  Î€»Õ?d °ÓTúuŠà @  Î€€¼Õ?d ðÓTxä> @  Î€½Õ?d 0ÔTDƒ– @  Î‚€¾Õ?d pÔT‘Õ”H @  Îƒ€¿Õ?d °ÔT Ln¢ @  Î„€ÀÕ?d ðÔT"Ýy| @  Î…€ÁÕ?d 0ÕT€{3 @  Î†€ÂÕ?d pÕTêí @  Î‡€ÃÕ?d °ÕT¨/ü– @  Îˆ€ÄÕ?d ðÕT*¾ëH @  Î‰€ÅÕ?d 0ÖTŦ. @  ÎŠ€ÆÕ?d pÖTG…±ð @  Î‹€ÇÕ?d °ÖT~«; @  ÎŒ€ÈÕ?d ðÖTü:å @  Î€ÉÕ?d 0×T^œsª @  ÎŽ€ÊÕ?d p×TÜ dt @  Î€ËÕ?d °×TÛi©ï @  Î€ÌÕ?d ð×TYø¾1 @  Î‘€ÍÕ?d 0ØTéß‹ @  Î’€ÎÕ?d pØTxÈU @  Î“€ÏÕ?d °ØTÁr @  Î”€ÐÕ?d ðØTC— ¬ @  Î•€ÑÕ?d 0ÙTá1hã @  Î–€ÒÕ?d pÙTc = @  Î—€ÓÕ?d °ÙTÉeŒF @  Î˜€ÔÕ?d ðÙTKô›˜ @  Î™€ÕÕ?d 0ÚT¤^Öþ @  Îš€ÖÕ?d pÚT&ÏÁ  @  Î›€×Õ?d °ÚTáuë @  Îœ€ØÕ?d ðÚTpb5 @  Î€ÙÕ?d 0ÛT?Öz @  Îž€ÚÕ?d pÛT½G¤ @  ÎŸ€ÛÕ?d °ÛT«%þ @  Î €ÜÕ?d ðÛT)´éQ @  Î¡€ÝÕ?d 0ÜTB÷ù @  Î¢€ÞÕ?d pÜTÀ…à' @  Î£€ßÕ?d °ÜTLÜ @  Î¤€àÕ?d ðÜTƒÝ @  Î¥€áÕ?d 0ÝT!{yM @  Î¦€âÕ?d pÝT£ên“ @  Î§€ãÕ?d °ÝT /è @  Î¨€äÕ?d ðÝT‹¾Š6 @  Î©€åÕ?d 0ÞTdÇP @  Îª€æÕ?d pÞTæ…ÐŽ @  Î«€çÕ?d °ÞTß«dE @  Î¬€èÕ?d ðÞT]:s› @  Î­€éÕ?d 0ßTÿœÔ @  Î®€êÕ?d pßT}   @  Î¯€ëÕ?d uÐàT/°ßTziÈ‘ @  Î°€ìÕ?d ðßTøøßO @  Î±€íÕ?d HàT“²l @  Î²€îÕ?d ˆàT³Gnà @  Î³€ïÕ?d ÈàTM]­ç @  Î´€ðÕ?d áT! @  Îµ€ñÕ?d HáTmjÛv @  Î¶€òÕ?d ˆáTMŸÙˆ @  Î·€óÕ?d ÈáTE>?Ó @  Î¸€ôÕ?d âTØzŸ @  Î¹€õÕ?d HâT(ek @  Îº€öÕ?d ˆâTðg• @  Î»€÷Õ?d ÈâT“ºÆ~ @  Î¼€øÕ?d ãTCòJ– @  Î½€ùÕ?d HãT³°ï @  Î¾€úÕ?d ˆãT“x² @  Î¿€ûÕ?d ÈãT‰yKˆ @  ÎÀ€üÕ?d äT7¸‡ @  ÎÁ€ýÕ?d HäT`HBþ @  Î€þÕ?d ˆäT@½@ @  ÎÀÿÕ?d ÈäTÛq @  ÎÄ€Ö?d åTÓ‹™ @  ÎÅ€Ö?d HåT#ôíà @  ÎÆ€Ö?d ˆåTï @  ÎÇ€Ö?d ÈåT   E @  ÎÈ€Ö?d æT–ä©„ @  ÎÉ€Ö?d HæTf›Sý @  ÎÊ€Ö?d ˆæTFnQ @  ÎË€Ö?d ÈæTÝ$ðè @  ÎÌ€Ö?d çT l| @  ÎÍ€ Ö?d HçTý†y @  Î΀ Ö?d ˆçTÝæ„‡ @  ÎÏ€ Ö?d ÈçTxæ\< @  ÎЀ Ö?d èTLÐ! @  ÎÑ€ Ö?d HèT¼f*X @  ÎÒ€Ö?d ˆèTœ“(¦ @  ÎÓ€Ö?d ÈèTb‰ë¡ @  ÎÔ€Ö?d éT²ÁgI @  ÎÕ€Ö?d HéTB¾0 @  ÎÖ€Ö?d ˆéTbKŸÎ @  Î×€Ö?d ÈéTjêy• @  ÎØ€Ö?d êT÷®ÙT @  ÎÙ€Ö?d HêTÑ#- @  ÎÚ€Ö?d ˆêT'$!Ó @  ÎÛ€Ö?d ÈêT¼n€8 @  ÎÜ€Ö?d ëTl& Ð @  ÎÝ€Ö?d HëTœYö© @  ÎÞ€Ö?d ˆëT¼¬ôW @  Î߀Ö?d ÈëTª \ @  Îà€Ö?d ìTäøS @  Îá€Ö?d HìTá›* @  Îâ€Ö?d€ ˆìTµ­r @  Ï€Ö?d ÈìT7A®€ @  Ï€ Ö?d íTç "h @  Ï€!Ö?d HíTÒ?#ü @  Ï€"Ö?d ˆíTòÊ! @  Ï€#Ö?d ÈíT4Ù˜# @  Ï€$Ö?d îT©8â @  Ï€%Ö?d HîT—Pá @  Ï€&Ö?d ˆîT·¥Ÿ @  Ï €'Ö?d ÈîTé¦Å @  Ï €(Ö?d ïT9îIñ @  Ï €)Ö?d HïT ØHe @  Ï €*Ö?d ˆïT,-J› @  Ï €+Ö?d ÈïTê>óº @  Ï€,Ö?d ðTTàO @  Ï€-Ö?d HðTÇŒÔë @  Ï€.Ö?d ˆðTçyÖ @  Ï€/Ö?d ÈðTÜ*îÿ @  Ï€0Ö?d ñT bb @  Ï€1Ö?d HñT9Tcƒ @  Ï€2Ö?d ˆñT¡a} @  Ï€3Ö?d ÈñTß²Ø\ @  Ï€4Ö?d òTBöx @  Ï€5Ö?d HòT|;Ýž @  Ï€6Ö?d ˆòT\Îß` @  Ï€7Ö?d ÈòTÍ…f @  Ï€8Ö?d óTÒ… Ž @  Ï€9Ö?d HóTç³ @  Ï€:Ö?d ˆóTÇF ä @  Ï€;Ö?d ÈóTU³Å @  Ï€<Ö?d ôT@Ê @  Ï€=Ö?d HôTšqü™ @  Ï €>Ö?d ˆôTº„þg @  Ï!€?Ö?d ÈôTì0ê@ @  Ï"€@Ö?d õT€\Ö?d üTIK4¥ @  Ï?€]Ö?d HüTe&Žd @  Ï@€^Ö?d ˆüTEÓŒš @  ÏA€_Ö?d ÈüTã7¬ @  ÏB€`Ö?d ýT3D @  ÏC€aÖ?d HýTIÐ @  ÏD€bÖ?d ˆýT&¼. @  ÏE€cÖ?d ÈýT௻ @  ÏF€dÖ?d þT}ëÎ @  ÏG€eÖ?d HþTC&¾Í @  ÏH€fÖ?d ˆþTcÓ¼3 @  ÏI€gÖ?d ÈþT=Ðæ5 @  ÏJ€hÖ?d ÿTí˜jÝ @  ÏK€iÖ?d HÿTØ®kI @  ÏL€jÖ?d ˆÿTø[i· @  ÏM€uÐUkÖ?d ÈÿT>HЖ @  ÏN€lÖ?d U |‹ @  ÏOmÖ?d `UŸø @  ÏPnÖ?d  U¿å @  ÏQoÖ?d àU„¶*ì @  ÏRpÖ?d UTþ¦ @  ÏSqÖ?d `Uaȧ @  ÏTrÖ?d  UA=¥n @  ÏUsÖ?d àU‡.O @  ÏVtÖ?d Uj¼Ž @  ÏWuÖ?d `U$§ @  ÏXvÖ?d  URs @  ÏYwÖ?d àU˜ø¦  @  ÏZxÖ?d UH°*H @  Ï[yÖ?d `U†èÜ @  Ï\ zÖ?d  U¦" @  Ï] {Ö?d àU`« @  Ï^ |Ö?d Uy@X  @  Ï_ }Ö?d `Uû*ä_ @  Ï` ~Ö?d  Uâ:t @  ÏaÖ?d àU©jzÁ @  Ïb€Ö?d Uy"ö) @  ÏcÖ?d `UL÷½ @  Ïd‚Ö?d  UláõC @  ÏeƒÖ?d àUªòLb @  Ïf„Ö?d U7¶ì£ @  Ïg…Ö?d `U {I  @  Ïh†Ö?d  U)ŽK^ @  Ïi‡Ö?d àUwX @  ÏjˆÖ?d U§Å° @  Ïk‰Ö?d `U’óœ$ @  ÏlŠÖ?d  U²žÚ @  Ïm‹Ö?d àUt'û @  ÏnŒÖ?d U@ê«æ @  ÏoÖ?d `UÓ†0 @  ÏpŽÖ?d  Uós2û @  ÏqÖ?d àUñçÖÄ @  Ïr Ö?d UÚÁa, @  Ïs‘Ö?d ` Uï÷`¸ @  Ït’Ö?d   UÏbF @  Ïu“Ö?d à U Ûg @  Ïv”Ö?d U”U{¦ @  Ïw•Ö?d ` Uª˜Þ¥ @  Ïx–Ö?d   UŠmÜ[ @  Ïy—Ö?d à UÔn†] @  Ïz˜Ö?d U& µ @  Ï{™Ö?d ` U1 ! @  Ï|šÖ?d   Uå ß @  Ï}›Ö?d à U×ö°þ @  Ï~œÖ?d UθCñ @  ÏÖ?d ` UƒÉ @  Ï€žÖ?d   U!vËÿ @  ÏŸÖ?d à U‡’ÊÉ @  Ï‚ Ö?d UWÚF! @  Ïƒ¡Ö?d ` UbìGµ @  Ï„¢Ö?d   UBEK @  Ï…£Ö?d à U„ üj @  Ï†¤Ö?d UN\« @  Ï‡¥Ö?d `U'ƒù¨ @  Ïˆ¦Ö?d  UvûV @  Ï‰§Ö?d àUYu¡P @  ÏЍÖ?d U‰=-¸ @  Ï‹©Ö?d `U¼ ,, @  ÏŒªÖ?d  Uœþ.Ò @  Ï«Ö?d àUZí—ó @  ÏެÖ?d Uä3+A @  Ï­Ö?d `Uw_°¢ @  Ï®Ö?d  UWª²\ @  Ï‘¯Ö?d àUlùж @  Ï’°Ö?d U¼±^ @  Ï“±Ö?d `U‰‡Ê @  Ï”²Ö?d  U©r4 @  Ï•³Ö?d àUoa¼ @  Ï–´Ö?d Uò%Ô @  Ï—µÖ?d `UÌè¹× @  Ï˜¶Ö?d  Uì») @  Ï™·Ö?d àU²á/ @  Ïš¸Ö?d UbVmÇ @  Ï›¹Ö?d `UW`lS @  ÏœºÖ?d  Uw•n­ @  Ï»Ö?d àU±†×Œ @  Ïž¼Ö?d U¨È$ƒ @  ÏŸ½Ö?d `U*¢˜Ð @  Ï ¾Ö?d  U Wš. @  Ï¡¿Ö?d àU\㎠ @  Ï¢ÀÖ?d UŒ«á @  Ï£ÁÖ?d `U¹u @  Ï¤ÂÖ?d  U™h‹ @  Ï¥ÃÖ?d àU_{¸ª @  Ï¦ÄÖ?d UÂ?k @  Ï§ÅÖ?d `Uüò½h @  Ï¨ÆÖ?d  UÜ¿– @  Ï©ÇÖ?d àU‚å @  ÏªÈÖ?d URLix @  Ï«ÉÖ?d `Ugzhì @  Ï¬ÊÖ?d  UGj @  Ï­ËÖ?d àUœÓ3 @  Ï®ÌÖ?d Uµc_. @  Ï¯ÍÖ?d `U&ÄÍ @  Ï°ÎÖ?d  UúÆ3 @  Ï±ÏÖ?d àU=©þÙ @  Ï²ÐÖ?d Uíár1 @  Ï³ÑÖ?d `UØ×s¥ @  Ï´ÒÖ?d  Uø"q[ @  ÏµÓÖ?d àU>1Èz @  Ï¶ÔÖ?d U£uh» @  Ï·ÕÖ?d `U¸Í¸ @  Ï¸ÖÖ?d  U½MÏF @  Ï¹×Ö?d àUãN•@ @  ÏºØÖ?d U3¨ @  Ï»ÙÖ?d `U0< @  Ï¼ÚÖ?d  U&Å @  Ï½ÛÖ?d àUàÖ£ã @  Ï¾ÜÖ?d Uù˜Pì @  Ï¿ÝÖ?d `UÕõê- @  ÏÀÞÖ?d  UõèÓ @  ÏÁßÖ?d àUSäéå @  ÏÂàÖ?d Uƒ¬e  @  ÏÃáÖ?d `U¶šd™ @  ÏÄâÖ?d  U–ofg @  ÏÅãÖ?d àUP|ßF @  ÏÆäÖ?d UÍ8‡ @  ÏÇåÖ?d `UóõÚ„ @  ÏÈæÖ?d  UÓØz @  ÏÉçÖ?d àU‚| @  ÏÊèÖ?d U]K” @  ÏËéÖ?d `Uh} @  ÏÌêÖ?d  UHˆ þuÐ U @  ÏÍëÖ?d àUL2S  @  ÏÎìÖ?d 8 U=9l @  ÏÏíÖ?d x U®U @  ÏÐîÖ?d ¸ UŽ q @  ÏÑïÖ?d ø Uµó,› @  ÏÒðÖ?d 8!Ue» s @  ÏÓñÖ?d x!UP¡ç @  ÏÔòÖ?d ¸!Upx£ @  ÏÕóÖ?d ø!U¶k8 @  ÏÖôÖ?d 8"U+/ºù @  Ï×õÖ?d x"Uâú @  ÏØöÖ?d ¸"U5 @  ÏÙ÷Ö?d ø"UkG @  ÏÚøÖ?d 8#U»\Ëê @  ÏÛùÖ?d x#UŽjÊ~ @  ÏÜúÖ?d ¸#U®ŸÈ€ @  ÏÝûÖ?d ø#UhŒq¡ @  ÏÞüÖ?d 8$Uq‚® @  ÏßýÖ?d x$Uó¨>ý @  ÏàþÖ?d ¸$UÓ]< @  ÏáÿÖ?d ø$UçH)º @  Ïâ×?d€ 8%U\\I¼ @  Ð×?d x%Uˆ+ @  Ð×?d ¸%U¨Þÿ @  Ð×?d ø%U«„@3 @  Ð×?d 8&U6Ààò @  Ð×?d x&UÆ¿‹ @  Ð×?d ¸&UæJu @  Ð×?d ø&Uvû  @  Ð×?d 8'U¦³‘á @  Ð  ×?d x'UVÌk˜ @  Ð  ×?d ¸'Uv9if @  Ð  ×?d ø'Uuc+ª @  Ð  ×?d 8(UAœ§· @  Ð  ×?d x(U±ã]Î @  Ð×?d ¸(U‘_0 @  Ð×?d ø(UÉV@ @  Ð×?d 8)UЍ @  Ð×?d x)UéapÑ @  Ð×?d ¸)UÉ”r/ @  Ð×?d ø)UÊÎ0ã @  Ð×?d 8*UWŠ" @  Ð×?d x*U§õj[ @  Ð×?d ¸*U‡h¥ @  Ð×?d ø*U±mÙ @  Ð×?d 8+UÇùá1 @  Ð×?d x+U7†H @  Ð×?d ¸+Us¶ @  Ð×?d ø+U)[z @  Ð×?d 8,U g¨u @  Ð×?d x,UýR  @  Ð×?d ¸,UÝíPò @  Ð×?d ø,U î @  Ð  ×?d 8-UÙT› @  Ð!!×?d x-U)+a @  Ð""×?d ¸-U Þc @  Ð##×?d ø-U „!M @  Ð$$×?d 8.U—ÀŒ @  Ð%%×?d x.Ug¿{õ @  Ð&&×?d ¸.UGJy  @  Ð''×?d ø.U×û|w @  Ð((×?d 8/U³ðŸ @  Ð))×?d x/U÷Ì æ @  Ð**×?d ¸/U×9 @  Ð++×?d ø/UÔcJÔ @  Ð,,×?d 80Uj½öf @  Ð--×?d x0UšÂ  @  Ð..×?d ¸0Uº7á @  Ð//×?d ø0UâwW‘ @  Ð00×?d 81U2?Ûy @  Ð11×?d x1UÂ@! @  Ð22×?d ¸1Uâµ#þ @  Ð33×?d ø1Uáïa2 @  Ð44×?d 82U|«Áó @  Ð55×?d x2UŒÔ;Š @  Ð66×?d ¸2U¬!9t @  Ð77×?d ø2U<< @  Ð88×?d 83UìØ°à @  Ð99×?d x3U§J™ @  Ð::×?d ¸3U>×?d ¸4UöÌ# @  Ð??×?d ø4U|jU¼ @  Ð@@×?d 85U¬"ÙT @  ÐAA×?d x5U\]#- @  ÐBB×?d ¸5U|¨!Ó @  ÐCC×?d ø5Uòc @  ÐDD×?d 86Uâ¶ÃÞ @  ÐEE×?d x6UÉ9§ @  ÐFF×?d ¸6U2<;Y @  ÐGG×?d ø6U¢>% @  ÐHH×?d 87UrŲÍ @  ÐII×?d x7U‚ºH´ @  ÐJJ×?d ¸7U¢OJJ @  ÐKK×?d ø7U¡† @  ÐLL×?d 88U•ê„› @  ÐMM×?d x8Ue•~â @  ÐNN×?d ¸8UE`| @  ÐOO×?d ø8U %l @  ÐPP×?d 89UÍh©„ @  ÐQQ×?d x9U=Sý @  ÐRR×?d ¸9UâQ @  ÐSS×?d ø9U¸Ï @  ÐTT×?d 8:Uƒü³ @  ÐUU×?d x:UsƒIw @  ÐVV×?d ¸:USvK‰ @  ÐWW×?d ø:UÃÇNõ @  ÐXX×?d 8;U @  ÐYY×?d x;Uãð8d @  ÐZZ×?d ¸;UÃ:š @  Ð[[×?d ø;UÀ_xV @  Ð\\×?d 8UC¶¢  @  Ðee×?d x>U³ÉXÙ @  Ðff×?d ¸>U“U_[ @  Ðhh×?d 8?UÓÅÓ³ @  Ðii×?d x?U#º)Ê @  Ðjj×?duÐ@U7 ¸?UO+4 @  Ðkk×?d ø?Uiø @  Ðll×?d P@UùÓÄ @  Ðmm×?d @U‘¢< @  Ðnn×?d Ð@U3+C @  Ðoo×?d AUªé @  Ðpp×?d PAU›;þÛ @  Ðqq×?d AUÉ ‚ @  Ðrr×?d ÐAUK±\ @  Ðss×?d BUW>ó @  Ðtt×?d PBUÕ¯äQ @  Ðuu×?d BU‡´  @  Ðvv×?d ÐBU%Ö @  Ðww×?d CUÇM‚œ @  Ðxx×?d PCUEÜ•B @  Ðyy×?d CUÇz @  Ðzz×?d ÐCU•VmÅ @  Ð{{×?d DU ÓËØ @  Ð||×?d PDUBÜ @  Ð}}×?d DUÝY3_ @  Ð~~×?d ÐDU_È$ @  Ð×?d EUy'‹ @  Ð€€×?d PEUû¶˜U @  Ð×?d EU©­w  @  Ð‚‚×?d ÐEU+<`Ò @  Ðƒƒ×?d FU7³• @  Ð„„×?d PFUµ"‚ß @  Ð……×?d FUç9m† @  Ð††×?d ÐFUe¨zX @  Ð‡‡×?d GU§Àä @  Ðˆˆ×?d PGU%QóÌ @  Ð‰‰×?d GUwJ• @  ÐŠŠ×?d ÐGUõÛ K @  Ð‹‹×?d HU@ïÒD @  ÐŒŒ×?d PHUÂ~Åš @  Ð×?d HUe*à @  ÐŽŽ×?d ÐHUô= @  Ð×?d IUmÿ[ @  Ð×?d PIUšüè… @  Ð‘‘×?d IUÈçÜ @  Ð’’×?d ÐIUJv @  Ð““×?d JUVùåÑ @  Ð””×?d PJUÔhò @  Ð••×?d JU†sV @  Ð––×?d ÐJUâ ˆ @  Ð——×?d KUÆŠ” @  Ð˜˜×?d PKUDƒ @  Ð™™×?d KUlE @  Ðšš×?d ÐKU”‘{› @  Ð››×?d LU ݆ @  Ðœœ×?d PLUŽ…ÊX @  Ð×?d LUÜž% @  Ðžž×?d ÐLU^2ß @  ÐŸŸ×?d MUØ'îõ @  Ð  ×?d PMUZ¶ù+ @  Ð¡¡×?d MU­r @  Ð¢¢×?d ÐMUŠ<¬ @  Ð££×?d NU–³ô @  Ð¤¤×?d PNU"ã¡ @  Ð¥¥×?d NUF9 ø @  Ð¦¦×?d ÐNUĨ& @  Ð§§×?d OUÀ…l @  Ð¨¨×?d POU„Q’² @  Ð©©×?d OUÖJ}ë @  Ðªª×?d ÐOUTÛj5 @  Ð««×?d PUk΃• @  Ð¬¬×?d PPUé_”K @  Ð­­×?d PU»D{ @  Ð®®×?d ÐPU9ÕlÌ @  Ð¯¯×?d QU3L®Š @  Ð°°×?d PQU±Ý¹T @  Ð±±×?d QUãÆV  @  Ð²²×?d ÐQUaWAÓ @  Ð³³×?d RU}Ø´ @  Ð´´×?d PRUÿI£Þ @  Ðµµ×?d RU­RL‡ @  Ð¶¶×?d ÐRU/Ã[Y @  Ð··×?d SUí«Å @  Ð¸¸×?d PSUo:ÒÍ @  Ð¹¹×?d SU=!=” @  Ðºº×?d ÐSU¿°*J @  Ð»»×?d TU'5ŒW @  Ð¼¼×?d PTU¥¤›‰ @  Ð½½×?d TU÷¿tÐ @  Ð¾¾×?d ÐTUu.c @  Ð¿¿×?d UU­Q¬§ @  ÐÀÀ×?d PUU/À»y @  ÐÁÁ×?d UU}ÛT  @  ÐÂÂ×?d ÐUUÿJCþ @  ÐÃÃ×?d VUãŶ- @  ÐÄÄ×?d PVUaT¡ó @  ÐÅÅ×?d VU3ONª @  ÐÆÆ×?d ÐVU±ÞYt @  ÐÇÇ×?d WUs¶Ç> @  ÐÈÈ×?d PWUñ'Ðà @  ÐÉÉ×?d WU£z @  ÐÖÖ×?d ÐZUД)¤ @  Ð×××?d [Uü·î @  ÐØØ×?d P[Um 0 @  ÐÙÙ×?d [UÂvOi @  ÐÚÚ×?d Ð[U@çX· @  ÐÛÛ×?d \UØbþª @  ÐÜÜ×?d P\UZóét @  ÐÝÝ×?d \Uè- @  ÐÞÞ×?d Ð\UŠyó @  Ðßß×?d ]U QÍÙ @  Ðàà×?d P]UŽÀÚ @  Ðáá×?d ]UÜÛ5^ @  Ðââ×?d€ Ð]U*‰>& @  Ñã×?d ^U×GƒÜ @  Ñä×?d P^UUÖ” @  Ñå×?d ^U„€¶ @  Ñæ×?d Ð^U@—h @  Ñç×?d _ULÏVX @  Ñè×?d P_UÎ^A† @  Ñé×?d _UR÷ñ¥ @  ÑuÐ`Uê×?d Ð_UÐfæ{ @  Ñ ë×?d (`U*ý @  Ñ ì×?d h`U¨ê @  Ñ í×?d ¨`U?ßþv @  Ñ î×?d è`U½Né¨ @  Ñ ï×?d (aUÔÄJt @  Ñð×?d haUVU]ª @  Ññ×?d ¨aUg]Ói @  Ñò×?d èaUåÌÄ· @  Ñó×?d (bU< ʉ @  Ñô×?d hbU¾›ÝW @  Ñõ×?d ¨bU)ÉÉã @  Ñö×?d èbU«XÞ= @  Ñ÷×?d (cU§‚  @  Ñø×?d hcU%Ó @  Ñù×?d ¨cU¹º¸ð @  Ñú×?d ècU;+¯. @  Ñû×?d (dUfçòÞ @  Ñü×?d hdUävå @  Ñý×?d ¨dUs$ñ´ @  Ñþ×?d èdUñµæj @  Ñÿ×?d (eUrJY  @  ÑØ?d heUðÛNÔ @  ÑØ?d ¨eUÐÕç§ @  Ñ Ø?d èeURDðy @  Ñ!Ø?d (fU‹‚þG @  Ñ"Ø?d hfU é™ @  Ñ#Ø?d ¨fUžAý- @  Ñ$Ø?d èfUÐêó @  Ñ%Ø?d (gU +à @  Ñ&Ø?d hgU’›< @  Ñ' Ø?d ¨gU2Œ> @  Ñ( Ø?d ègUŒ£›à @  Ñ) Ø?d (hUüÞ¹ @  Ñ* Ø?d hhU~O®Ü @  Ñ+ Ø?d ¨hUéºh @  Ñ,Ø?d èhUkŒ­¶ @  Ñ-Ø?d (iUj @  Ñ.Ø?d hiU€—´ @  Ñ/Ø?d ¨iU±Ÿ—w @  Ñ0Ø?d èiU3€© @  Ñ1Ø?d (jUêÈŽ— @  Ñ2Ø?d hjUhY™I @  Ñ3Ø?d ¨jUÿ ý @  Ñ4Ø?d èjU}šš# @  Ñ5Ø?d (kUq@[ @  Ñ6Ø?d hkUóÑLÍ @  Ñ7Ø?d ¨kUoxüî @  Ñ8Ø?d èkUíéë0 @  Ñ9Ø?d (lU°%¶À @  Ñ:Ø?d hlU2´¡ @  Ñ;Ø?d ¨lU¥æµª @  Ñ<Ø?d èlU'w¢t @  Ñ=Ø?d (mUÓJ8t @  Ñ> Ø?d hmUQÛ/ª @  Ñ?!Ø?d ¨mUßÒ€K @  Ñ@"Ø?d èmU]C—• @  ÑA#Ø?d (nU„…™« @  ÑB$Ø?d hnUŽu @  ÑC%Ø?d ¨nU‘FšÁ @  ÑD&Ø?d ènU× @  ÑE'Ø?d (oU L/ @  ÑF(Ø?d hoUœ[ñ @  ÑG)Ø?d ¨oU5ëÒ @  ÑH*Ø?d èoUƒ¤ü  @  ÑI+Ø?d (pUyøîA @  ÑJ,Ø?d hpUûiùŸ @  ÑK-Ø?d ¨pUl;í+ @  ÑL.Ø?d èpUîªúõ @  ÑM/Ø?d (qU‡ Y) @  ÑN0Ø?d hqU±N÷ @  ÑO1Ø?d ¨qU4¹À4 @  ÑP2Ø?d èqU¶(×ê @  ÑQ3Ø?d (rUoîÙÔ @  ÑR4Ø?d hrUíÎ  @  ÑS5Ø?d ¨rUz-Ú¾ @  ÑT6Ø?d èrUø¼Í` @  ÑU7Ø?d (sUôf P @  ÑV8Ø?d hsUv÷Ž @  ÑW9Ø?d ¨sUê^«­ @  ÑX:Ø?d èsUhϼs @  ÑY;Ø?d (tU5რ@  ÑZ<Ø?d htU·’ö] @  Ñ[=Ø?d ¨tU Àâé @  Ñ\>Ø?d ètU¢Qõ7 @  Ñ]?Ø?d (uU¦¾­» @  ÑrTØ?d hzU¼/ºe @  ÑsUØ?d ¨zU+}®Ñ @  ÑtVØ?d èzU©ì¹ @  ÑuWØ?d ({U¥6x? @  ÑvXØ?d h{U'§oá @  ÑwYØ?d ¨{U»ß @  ÑxZØ?d è{U9ŸÈ @  Ñy[Ø?d (|UdS•ì @  Ñz\Ø?d h|UæÂ‚2 @  Ñ{]Ø?d ¨|Uq–† @  Ñ|^Ø?d è|UóX @  Ñ}_Ø?d (}U<X @  Ñ~`Ø?d h}U…­ † @  ÑaØ?d ¨}Uèò“V @  Ñ€bØ?d è}Ujc„ˆ @  ÑcØ?d (~U³¥Š¶ @  Ñ‚dØ?d h~U14h @  ÑƒeØ?d ¨~U¦f‰Ü @  Ñ„fØ?d è~U$÷ž @  Ñ…gØ?d (U(-_2 @  Ñ†hØ?d hUª¼Hì @  Ñ‡iØ?d ¨UuЀU'6øÏ @  ÑˆjØ?d èU´„ï @  Ñ‰kØ?d @€Už¸£š @  ÑŠlØ?d €€U¾M¡d @  Ñ‹mØ?d À€U‹{ ð @  ÑŒnØ?d U[3, @  ÑoØ?d @U``ò @  ÑŽpØ?d €U@•  @  ÑqØ?d ÀUÓùï @  ÑrØ?d ‚UN½-. @  Ñ‘sØ?d @‚Uˆ®” @  Ñ’tØ?d €‚U¨[–ñ @  Ñ“uØ?d À‚Um—e @  Ñ”vØ?d ƒUM% @  Ñ•wØ?d @ƒU&A‹ @  Ñ–xØ?d €ƒU3ÓCu @  Ñ—yØ?d ÀƒU æv @  Ñ˜zØ?d „UPy @  Ñ™{Ø?d @„UÒC¬X @  Ñš|Ø?d €„Uò¶®¦ @  Ñ›}Ø?d À„UÇ€¯2 @  Ñœ~Ø?d …UÈ#Ú @  ÑØ?d @…U\ºco @  Ñž€Ø?d €…U|Oa‘ @  ÑŸØ?d À…Uþ%Ý @  Ñ ‚Ø?d †Uca} @  Ñ¡ƒØ?d @†U¥rÄ" @  Ñ¢„Ø?d €†U…‡ÆÜ @  Ñ£…Ø?d À†U°±ÇH @  Ñ¤†Ø?d ‡U`ùK  @  Ñ¥‡Ø?d @‡U>ú¦ @  Ñ¦ˆØ?d €‡UX @  Ñ§‰Ø?d À‡U ¶[ @  Ñ¨ŠØ?d ˆU=:F @  Ñ©‹Ø?d @ˆUÒ.ƒg @  ÑªŒØ?d €ˆUòÛ™ @  Ñ«Ø?d ÀˆUÇí€  @  Ñ¬ŽØ?d ‰U¥ å @  Ñ­Ø?d @‰U,ö4 @  Ñ®Ø?d €‰U 6ñ @  Ñ¯‘Ø?d À‰UŸo­ @  Ñ°’Ø?d ŠU+ Ó @  Ñ±“Ø?d @ŠUÄ8´ò @  Ñ²”Ø?d €ŠUäͶ  @  Ñ³•Ø?d ÀŠUÑû·˜ @  Ñ´–Ø?d ‹U³;p @  Ñµ—Ø?d @‹U_°av @  Ñ¶˜Ø?d €‹UEcˆ @  Ñ·™Ø?d À‹UAˆÆ‹ @  Ñ¸šØ?d ŒUXÆ5„ @  Ñ¹›Ø?d @ŒUžÕŒ¥ @  ÑºœØ?d €ŒU¾ Ž[ @  Ñ»Ø?d ÀŒU‹Ï @  Ñ¼žØ?d U[^' @  Ñ½ŸØ?d @Uýº @  Ñ¾ Ø?d €UÝOï @  Ñ¿¡Ø?d ÀUñ"º. @  ÑÀ¢Ø?d ŽUlfï @  ÑÁ£Ø?d @ŽUªu£Î @  Ñ¤Ø?d €ŽUŠ€¡0 @  ÑÃ¥Ø?d ÀŽU¿¶ ¤ @  ÑĦØ?d Uoþ,L @  ÑŧØ?d @U1ývJ @  ÑƨØ?d €Ut´ @  ÑÇ©Ø?d ÀU/ÅÑ· @  ÑȪØ?d U‘m @  ÑÉ«Ø?d @UWÔ$ @  ÑʬØ?d €UwýÖÚ @  ÑË­Ø?d ÀUBË×N @  ÑÌ®Ø?d ‘U’ƒ[¦ @  ÑͯØ?d @‘U©ÐcL @  ÑΰØ?d €‘U‰%a² @  ÑϱØ?d À‘UIúQ @  ÑвØ?d ’U‡ Z @  ÑѳØ?d @’UAã± @  ÑÒ´Ø?d €’UaëáO @  ÑÓµØ?d À’UTÝàÛ @  ÑÔ¶Ø?d “U„•l3 @  ÑÕ·Ø?d @“UÚ–65 @  ÑÖ¸Ø?d €“Uúc4Ë @  Ñ×¹Ø?d À“UÄ®‘È @  ÑغØ?d ”UÝàbÇ @  ÑÙ»Ø?d @”UóÛæ @  ÑÚ¼Ø?d €”U;Ù @  ÑÛ½Ø?d À”U0ØŒ @  ÑܾØ?d •UÞxTd @  ÑÝ¿Ø?d @•UˆÌ@C @  ÑÞÀØ?d €•U¨9B½ @  ÑßÁØ?d À•U*Sþî @  ÑàÂØ?d –U·^/ @  ÑáÃØ?d @–Uqç @  ÑâÄØ?d€ €–U¶ð @  ÒÅØ?d À–UDÁ[M @  ÒÆØ?d —U”‰×¥ @  ÒÇØ?d @—UÃvN @  ÒÈØ?d €—U/6t° @  ÒÉØ?d À—UßIŽÉ @  ÒÊØ?d ˜Uë¶Ô @  ÒËØ?d @˜Uãä @  ÒÌØ?d €˜UÃâæq @  Ò ÍØ?d À˜U3 @  Ò ÎØ?d ™UãÕà @  Ò ÏØ?d @™UÏSç @  Ò ÐØ?d €™U=:Q @  Ò ÑØ?d À™UÍE«` @  ÒÒØ?d šUP ¡ @  ÒÓØ?d @šUõÓ @  ÒÔØ?d €šUÕôÑä @  ÒÕØ?d ÀšU%‹+ @  ÒÖØ?d ›Uõçu @  Òר?d @›Un‰ž @  ÒØØ?d €›UN|` @  ÒÙØ?d À›U¾þ @  ÒÚØ?d œU§M  @  ÒÛØ?d @œU¯ìëM @  ÒÜØ?d €œUé³ @  ÒÝØ?d ÀœUfÊ @  ÒÞØ?d U¯.Ÿ" @  Òߨ?d @Ũeù @  ÒàØ?d €Uìvg @  ÒáØ?d ÀU ~ @  ÒâØ?d žUM=¿ @  ÒãØ?d @žU5K´ @  Ò äØ?d €žU¾ÀJ @  Ò!åØ?d ÀžUåÁ:3 @  Ò"æØ?d ŸU5‰¶Û @  Ò#çØ?d @ŸU®Ã0 @  Ò$èØ?d €ŸUŽ6Î @  Ò%éØuРU?d ÀŸU~Iï· @  Ò&êØ?d  UB1Ñ @  Ò'ëØ?d X Uã׊ @  Ò(ìØ?d ˜ U'Õt @  Ò)íØ?d Ø U×i/  @  Ò*îØ?d ¡U!£å @  Ò+ïØ?d X¡Uù;`â @  Ò,ðØ?d ˜¡UÙÎb @  Ò-ñØ?d Ø¡U)±˜e @  Ò.òØ?d ¢U´õ8¤ @  Ò/óØ?d X¢Uõà @  Ò0ôØ?d ˜¢U1âá @  Ò1õØ?d Ø¢UÁ˜ @  Ò2öØ?d £U7”p @  Ò3÷Ø?d X£UŠ}5› @  Ò4øØ?d ˜£Uªˆ7e @  Ò5ùØ?d Ø£UZ÷Í @  Ò6úØ?d ¤UC¹> @  Ò7ûØ?d X¤UKØH @  Ò8üØ?d ˜¤UkíÚ¶ @  Ò9ýØ?d ؤU›’ Ï @  Ò:þØ?d ¥UKÚ¬' @  Ò;ÿØ?d X¥Uº†Bs @  Ò<Ù?d ˜¥Ušs@ @  Ò=Ù?d Ø¥Uj ºô @  Ò>Ù?d ¦U÷H5 @  Ò?Ù?d X¦UíI㬠@  Ò@Ù?d ˜¦UͼáR @  ÒAÙ?d ئU=Ã+ @  ÒBÙ?d §Uí‹—Ã @  ÒCÙ?d X§UvÁ6( @  ÒDÙ?d ˜§UV44Ö @  ÒE Ù?d اU¦Kί @  ÒF Ù?d ¨U’´B² @  ÒG Ù?d X¨Uš¤é @  ÒH Ù?d ˜¨Uºà¦ @  ÒI Ù?d بUJŸ\n @  ÒJÙ?d ©Uš×І @  ÒKÙ?d X©UdÍ @  ÒLÙ?d ˜©UD8 @  ÒMÙ?d Ø©U´Gë @  ÒNÙ?d ªU)KÇ @  ÒOÙ?d XªUŒ“| @  ÒPÙ?d ˜ªU¬ö‘‚ @  ÒQÙ?d تU\‰kû @  ÒRÙ?d «UŒÁç @  ÒSÙ?d X«U‹Fø @  ÒTÙ?d ˜«U7~D @  ÒUÙ?d Ø«UǾ @  ÒVÙ?d ¬UÞOMp @  ÒWÙ?d X¬UÖî«+ @  ÒXÙ?d ˜¬Uö©Õ @  ÒYÙ?d جUdS¬ @  ÒZÙ?d ­UÖ,ßD @  Ò[Ù?d X­Uµ%Ÿ @  Ò\ Ù?d ˜­U•t'a @  Ò]!Ù?d Ø­Ue Ý @  Ò^"Ù?d ®UøO}Ù @  Ò_#Ù?d X®ULI‚Ò @  Ò`$Ù?d ˜®Ul¼€, @  Òa%Ù?d Ø®UœÃzU @  Òb&Ù?d ¯UL‹ö½ @  Òc'Ù?d X¯U×ÁWV @  Òd(Ù?d ˜¯U÷4U¨ @  Òe)Ù?d دUK¯Ñ @  Òf*Ù?d °U¹•c @  Òg+Ù?d X°U±4õ8 @  Òh,Ù?d ˜°U‘Á÷Æ @  Òi-Ù?d ذUa¾ ¿ @  Òj.Ù?d ±U±öW @  Òk/Ù?d X±UOìBP @  Òl0Ù?d ˜±Uo@® @  Òm1Ù?d رUŸfº× @  Òn2Ù?d ²U" @  Òo3Ù?d X²U§"­ @  Òp4Ù?d ˜²U‡×ÀS @  Òq5Ù?d زUw¨:* @  Òr6Ù?d ³U§à¶Â @  Òs7Ù?d X³U<ª) @  Òt8Ù?d ˜³U_× @  Òu9Ù?d سUì ï® @  Òv:Ù?d ´Uõn¡ @  Òw;Ù?d X´UýÏúú @  Òx<Ù?d ˜´UÝ:ø @  Òy=Ù?d Ø´U-E} @  Òz>Ù?d µUý Ž• @  Ò{?Ù?d XµUnða_ @  Ò|@Ù?d ˜µUNc¡ @  Ò}AÙ?d صU¾z™Ø @  Ò~BÙ?d ¶U#>9 @  ÒCÙ?d X¶UÚið± @  Ò€DÙ?d ˜¶UúœòO @  ÒEÙ?d ضU ã6 @  Ò‚FÙ?d ·UÚ«„Þ @  ÒƒGÙ?d X·UAá%5 @  Ò„HÙ?d ˜·Ua'Ë @  Ò…IÙ?d Ø·U‘kݲ @  Ò†JÙ?d ¸U¥”Q¯ @  Ò‡KÙ?d X¸U­5·ô @  ÒˆLÙ?d ˜¸UÀµ  @  Ò‰MÙ?d ظU}¿Os @  ÒŠNÙ?d ¹U­÷Û @  Ò‹OÙ?d X¹USíœ @  ÒŒPÙ?d ˜¹Usb @  ÒQÙ?d عUƒgø @  ÒŽRÙ?d ºU#XÚ @  ÒSÙ?d XºU»#€a @  ÒTÙ?d ˜ºU›Ö‚Ÿ @  Ò‘UÙ?d غUk©xæ @  Ò’VÙ?d »U»áô @  Ò“WÙ?d X»U «Uå @  Ò”XÙ?d ˜»U^W @  Ò•YÙ?d Ø»Uð!­b @  Ò–ZÙ?d ¼Uéo^m @  Ò—[Ù?d X¼Uáθ6 @  Ò˜\Ù?d ˜¼UÁ;ºÈ @  Ò™]Ù?d ؼU1D@± @  Òš^Ù?d ½Uá ÌY @  Ò›_Ù?d X½U‚¡6‚ @  Òœ`Ù?d ˜½U¢T4| @  ÒaÙ?d ؽUR+Î @  ÒžbÙ?d ¾UÏonÄ @  ÒŸcÙ?d X¾U{i‘Ï @  Ò dÙ?d ˜¾U[œ“1 @  Ò¡eÙ?d ؾU«ãiH @  Ò¢fÙ?d ¿U{«å  @  Ò£gÙ?d X¿UàáDK @  Ò¤hÙ?d ˜¿UÀFµ @uÐÀU  Ò¥iÙ?d Ø¿U0k¼Ì @  Ò¦jÙ?d 0ÀUT›íž @  Ò§kÙ?d pÀU\: Å @  Ò¨lÙ?d °ÀU|Ï ; @  Ò©mÙ?d ðÀUŒ°óB @  ÒªnÙ?d 0ÁU\øª @  Ò«oÙ?d pÁU¢â¼­ @  Ò¬pÙ?d °ÁU‚¾S @  Ò­qÙ?d ðÁUrhD* @  Ò®rÙ?d 0ÂUï,äë @  Ò¯sÙ?d pÂUJ,® @  Ò±uÙ?d ðÂUš¦Ä× @  Ò²vÙ?d 0ÃUJîH? @  Ò³wÙ?d pÃUѤéÔ @  Ò´xÙ?d °ÃUñQë* @  ÒµyÙ?d ðÃU.S @  Ò¶zÙ?d 0ÄU`â\ @  Ò·{Ù?d pÄUÁ @  Ò¸|Ù?d °ÄU04ù @  Ò¹}Ù?d ðÄUÀKü€ @  Òº~Ù?d 0ÅUph @  Ò»Ù?d pÅUž8Ë0 @  Ò¼€Ù?d °ÅU¾ÍÉÎ @  Ò½Ù?d ðÅUN²3· @  Ò¾‚Ù?d 0ÆUÓö“v @  Ò¿ƒÙ?d pÆUÉ÷jï @  ÒÀ„Ù?d °ÆUéh @  ÒÁ…Ù?d ðÆU}’h @  Ò†Ù?d 0ÇUÉ5€ @  ÒÇÙ?d pÇUR¿k @  ÒĈÙ?d °ÇUrн• @  ÒʼnÙ?d ðÇU‚õGì @  ÒÆŠÙ?d 0ÈU¶ Ëñ @  ÒÇ‹Ù?d pÈU¾«-ª @  ÒÈŒÙ?d °ÈUž^/T @  ÒÉÙ?d ðÈUn!Õ- @  ÒÊŽÙ?d 0ÉU¾iYÅ @  ÒËÙ?d pÉU@sšÂ @  ÒÌÙ?d °ÉU`†˜< @  ÒÍ‘Ù?d ðÉUùbE @  ÒÎ’Ù?d 0ÊU ½Â„ @  ÒÏ“Ù?d pÊU¨½? @  ÒДÙ?d °ÊUˆHÁ @  ÒÑ•Ù?d ðÊUx7⸠@  ÒÒ–Ù?d 0ËU¨nP @  ÒÓ—Ù?d pËU35Ï» @  ÒÔ˜Ù?d °ËUÀÍE @  ÒÕ™Ù?d ðËUã¿7< @  ÒÖšÙ?d 0ÌUúñÄ3 @  Ò×›Ù?d pÌUòP"h @  ÒØœÙ?d °ÌUÒ¥ – @  ÒÙÙ?d ðÌU"ÚÚï @  ÒÚžÙ?d 0ÍUò’V @  ÒÛŸÙ?d pÍU‘?¬Ü @  ÒÜ Ù?d °ÍU±Ê®" @  ÒÝ¡Ù?d ðÍUAµT[ @  ÒÞ¢Ù?d 0ÎUÜñôš @  ÒߣÙ?d pÎUh÷ ‘ @  Òà¤Ù?d °ÎUH o @  Òá¥Ù?d ðÎU¸}ó @  Òâ¦Ù?d€ 0ÏUöcX @  Ó§Ù?d pÏUfýŠš @  Ó¨Ù?d °ÏUFˆd @  Ó©Ù?d ðÏUs>‰ð @  ÓªÙ?d 0ÐUÍà5B @  Ó«Ù?d pÐU óŒc @  Ó¬Ù?d °ÐU+Ž @  Ó­Ù?d ðÐUË+ž @  Ó®Ù?d 0ÑUѧv @  Ó ¯Ù?d pÑUþПœ @  Ó °Ù?d °ÑUÞ%b @  Ó ±Ù?d ðÑUëœö @  Ó ²Ù?d 0ÒUvW<7 @  Ó ³Ù?d pÒU°D… @  Ó´Ù?d °ÒU±‡è @  ÓµÙ?d ðÒUÝ  @  Ó¶Ù?d 0ÓUÓ•ã @  Ó·Ù?d pÓU–Êå @  Ó¸Ù?d °ÓU­cÈ @  Ó¹Ù?d ðÓU˜UÉ @  ÓºÙ?d 0ÔU:€ @  Ó»Ù?d pÔUGƒ¡ @  Ó¼Ù?d °ÔUgý_ @  Ó½Ù?d ðÔUY0$\ @  Ó¾Ù?d 0ÕU‰x¨´ @  Ó¿Ù?d pÕUß̼“ @  ÓÀÙ?d °ÕUÿ9¾m @  ÓÁÙ?d ðÕUÊ¿ù @  ÓÂÙ?d 0ÖUWK8 @  ÓÃÙ?d pÖU‘X¦ @  ÓÄÙ?d °ÖU±­¤ç @  ÓÅÙ?d ðÖU3Ç´ @  Ó ÆÙ?d 0×Uã”\ @  Ó!ÇÙ?d p×U½ŒÎZ @  Ó"ÈÙ?d °×Uy̤ @  Ó#ÉÙ?d ð×U¨OÍ0 @  Ó$ÊÙ?d 0ØUœ°A- @  Ó%ËÙ?d pØUZ£ø  @  Ó&ÌÙ?d °ØUzVúò @  Ó'ÍÙ?d ðØUD›_ñ @  Ó(ÎÙ?d 0ÙU”ÓÓ @  Ó)ÏÙ?d pÙU¯€ëó @  Ó*ÐÙ?d °ÙUué  @  Ó+ÑÙ?d ðÙUºCè™ @  Ó,ÒÙ?d 0ÚU'HX @  Ó-ÓÙ?d pÚUáñy @  Ó.ÔÙ?d °ÚUÁáó‡ @  Ó/ÕÙ?d ðÚURhd @  Ó0ÖÙ?d 0ÛU‚ÅäŒ @  Ó1×Ù?d pÛUÜÆ¾Š @  Ó2ØÙ?d °ÛUü3¼t @  Ó3ÙÙ?d ðÛUɽà @  Ó4ÚÙ?d 0ÜUÐKNï @  Ó5ÛÙ?d pÜUX÷Î @  Ó6ÜÙ?d °ÜU6­õ0 @  Ó7ÝÙ?d ðÜU`P3 @  Ó8ÞÙ?d 0ÝUØ(ÜÛ @  Ó9ßÙ?d pÝU~ÌÝí @  Ó:àÙ?d °ÝU^9ß @  Ó;áÙ?d ðÝUkÞ‡ @  Ó<âÙ?d 0ÞUöK~F @  Ó=ãÙ?d pÞU0XÇg @  Ó>äÙ?d °ÞU­Å™ @  Ó?åÙ?d ðÞU<ÀX @  Ó@æÙ?d 0ßUìˆó° @  ÓAçÙ?d pßU²‹©¶ @  ÓBèÙ?d uÐàU/°ßU’~«H @  ÓCéÙ?d ðßU§HªÜ @  ÓDêÙ?d HàU¾ìô* @  ÓEëÙ?d ˆàUÚ›X+ @  ÓFìÙ?d ÈàUX Oõ @  ÓGíÙ?d áU4qÀ @  ÓHîÙ?d HáU¶f @  ÓIïÙ?d ˆáU/¸KÔ @  ÓJðÙ?d ÈáU­)\  @  ÓKñÙ?d âU‡Êê @  ÓLòÙ?d HâU[ý_ @  ÓMóÙ?d ˆâUa,Q^ @  ÓNôÙ?d ÈâUã½F€ @  ÓOõÙ?d ãU"FU @  ÓPöÙ?d HãU ™Q‹ @  ÓQ÷Ù?d ˆãUe9Âx @  ÓR øÙ?d ÈãUç¨Õ¦ @  ÓS ùÙ?d äUIA0ã @  ÓT úÙ?d HäUËÐ'= @  ÓU ûÙ?d ˆäU¯§‹< @  ÓV üÙ?d ÈäU-6œâ @  ÓW ýÙ?d åUA"¢× @  ÓX þÙ?d HåUóµ  @  ÓY ÿÙ?d ˆåUçà€µ @  ÓZ Ú?d ÈåUeq—k @  Ó[ Ú?d æUO’!à @  Ó\ Ú?d HæUÍ6> @  Ó] Ú?d ˆæU©tš? @  Ó^ Ú?d ÈæU+åá @  Ó_ Ú?d çUûVª„ @  Ó` Ú?d HçUyǽZ @  Óa Ú?d ˆçU… ò| @  Ób Ú?d ÈçU1å¢ @  Óc  Ú?d èU„iõ @  Ód  Ú?d HèUøh+ @  Óe  Ú?d ˆèUbÄ* @  Óf  Ú?d ÈèUàÓô @  Óg  Ú?d éUŒ íÁ @  Óh Ú?d HéU›ú @  Ói Ú?d ˆéU—¬×Õ @  Ój Ú?d ÈéU=À  @  Ók Ú?d êU?Þv€ @  Ól Ú?d HêU½Oa^ @  Óm Ú?d ˆêUÙ8Í_ @  Ón Ú?d ÈêU[©Ú @  Óo Ú?d ëUšÚT @  Óp Ú?d HëUÍŠ @  Óq Ú?d ˆëUäꂬ @  Ór Ú?d ÈëUf{•r @  Ós Ú?d ìUÈ’p7 @  Ót Ú?d HìUJgé @  Óu Ú?d ˆìU.tËè @  Óv Ú?d ÈìU¬åÜ6 @  Ów Ú?d íUÀñâ @  Óx Ú?d HíUB`õÝ @  Óy Ú?d ˆíUFàáË @  Óz  Ú?d ÈíUÄqö @  Ó{ !Ú?d îUî’@ž @  Ó| "Ú?d HîUlW@ @  Ó} #Ú?d ˆîUtûA @  Ó~ $Ú?d ÈîUŠåìŸ @  Ó %Ú?d ïUýY @  Ó€ &Ú?d HïU•–ê‡ @  Ó 'Ú?d ˆïUiñ¥¡ @  Ó‚ (Ú?d ÈïUë`² @  Óƒ )Ú?d ðU⇠@  Ó„ *Ú?d HðU`ˆY @  Ó… +Ú?d ˆðUÿ£X @  Ó† ,Ú?d ÈðU†n´† @  Ó‡ -Ú?d ñUêzг @  Óˆ .Ú?d HñUhëm @  Ó‰ /Ú?d ˆñUñܰ§ @  ÓŠ 0Ú?d ÈñUsM§y @  Ó‹ 1Ú?d òUY®ò @  ÓŒ 2Ú?d HòUÛ?, @  Ó 3Ú?d ˆòU¿Hª- @  ÓŽ 4Ú?d ÈòU=Ù½ó @  Ó 5Ú?d óUül½& @  Ó 6Ú?d HóU~ýªø @  Ó‘ 7Ú?d ˆóU‚šåÞ @  Ó’ 8Ú?d ÈóU ò @  Ó“ 9Ú?d ôU®âE @  Ó” :Ú?d HôU,s› @  Ó• ;Ú?d ˆôUH¬š @  Ó– <Ú?d ÈôUÊ•»D @  Ó— =Ú?d õU¦…q @  Ó˜ >Ú?d HõU$’¯ @  Ó™ ?Ú?d ˆõUÐÀ“¨ @  Óš @Ú?d ÈõURQ„v @  Ó› AÚ?d öUx²2ý @  Óœ BÚ?d HöUú#%# @  Ó CÚ?d ˆöUžT‰" @  Óž DÚ?d ÈöUÅžü @  ÓŸ EÚ?d ÷UÌv¹™ @  Ó  FÚ?d H÷UNç®G @  Ó¡ GÚ?d ˆ÷U²€áa @  Ó¢ HÚ?d È÷U0ö¿ @  Ó£ IÚ?d øU³Ilè @  Ó¤ JÚ?d HøU1Ø{6 @  Ó¥ KÚ?d ˆøUU¯×7 @  Ó¦ LÚ?d ÈøU×>Àé @  Ó§ MÚ?d ùU»*þÜ @  Ó¨ NÚ?d HùU9»é @  Ó© OÚ?d ˆùU ŒÄÈ @  Óª PÚ?d ÈùU"Ó @  Ó« QÚ?d úUþe @  Ó¬ RÚ?d HúUŠorC @  Ó­ SÚ?d ˆúUîÞB @  Ó® TÚ?d ÈúUl‰Éœ @  Ó¯ UÚ?d ûU­<ÉI @  Ó° VÚ?d HûU/­Þ— @  Ó± WÚ?d ˆûUÓÊ‘± @  Ó² XÚ?d ÈûUQ[†o @  Ó³ YÚ?d üUÿ²c* @  Ó´ ZÚ?d HüU}#tô @  Óµ [Ú?d ˆüUTØõ @  Ó¶ \Ú?d ÈüU›ÅÏ+ @  Ó· ]Ú?d ýU÷Ññ @  Ó¸ ^Ú?d HýUu@æÀ @  Ó¹ _Ú?d ˆýUqÀòÖ @  Óº `Ú?d ÈýUóQå @  Ó» aÚ?d þUÙ²Sƒ @  Ó¼ bÚ?d HþU[#D] @  Ó½ cÚ?d ˆþU?Tè\ @  Ó¾ dÚ?d ÈþU½Åÿ‚ @  Ó¿ eÚ?d ÿUÃqÞu @  ÓÀ fÚ?d HÿUAàÉ« @  ÓÁ gÚ?d ˆÿU½‡† @  Ó uÐVhÚ?d ÈÿUÑM† @  ÓÃiÚ?d Vµ‡Û @  ÓÄjÚ?d `V7 @  ÓÅkÚ?d  VSa¨ @  ÓÆlÚ?d àVÑð¿Ú @  ÓÇmÚ?d V½äï @  ÓÈnÚ?d `V?u–1 @  ÓÉoÚ?d  V¦B»û @  ÓÊpÚ?d àV$Ó¬% @  ÓËqÚ?d V0® @  ÓÌrÚ?d `VŒ¡ p @  ÓÍsÚ?d  VèÖ¡q @  ÓÎtÚ?d àVjG¶¯ @  ÓÏuÚ?d V«ò¶z @  ÓÐvÚ?d `V)c¡¤ @  ÓÑwÚ?d  VÕî‚ @  ÓÒxÚ?d àVW•ù\ @  ÓÓyÚ?d Vù| @  ÓÔzÚ?d `V{í Ç @  ÓÕ{Ú?d  Vš§Æ @  ÓÖ|Ú?d àV ° @  Ó×}Ú?d VñŽ- @  ÓØ~Ú?d `VsŽ™ó @  ÓÙÚ?d  Vš˜Ìf @  ÓÚ€Ú?d àV Û¸ @  ÓÛÚ?d V2êm3 @  ÓÜ‚Ú?d `V°{zí @  Ó݃Ú?d  VÔ Öì @  ÓÞ„Ú?d àVVÁ2 @  Óß…Ú?d V†.æW @  Óà†Ú?d `V¿ñ‰ @  Óá‡Ú?d  VøØ¾¯ @  ÓâˆÚ?d€ àVüÈ @  Ô‰Ú?d VžÓ¶ @  ÔŠÚ?d `V—Äh @  Ô‹Ú?d  V½©“„ @  ÔŒÚ?d àV?8„Z @  ÔÚ?d Vžå @  ÔŽÚ?d ` VòË @  ÔÚ?d   VHŠ€{ @  ÔÚ?d à VÊ—¥ @  Ô ‘Ú?d V%±Úà @  Ô ’Ú?d ` V§ Í @  Ô “Ú?d   Všñ @  Ô ”Ú?d à V„/ @  Ô •Ú?d V&)ì` @  Ô–Ú?d ` V¤¸û¾ @  Ô—Ú?d   V;ÌÕ @  Ô˜Ú?d à V¹]ÂÜ @  Ô™Ú?d VÒýÜt @  ÔšÚ?d ` VPl˪ @  Ô›Ú?d   VñRœF @  ÔœÚ?d à Vs˘ @  ÔÚ?d VÑeê× @  ÔžÚ?d ` VSôý  @  ÔŸÚ?d   V™Æ¶e @  Ô Ú?d à VW¡» @  Ô¡Ú?d VôýìÝ @  Ô¢Ú?d `Vvlû @  Ô£Ú?d  V×R¬ï @  Ô¤Ú?d àVUû1 @  Ô¥Ú?d V÷eÚ~ @  Ô¦Ú?d `VuôÍ  @  Ô§Ú?d  Vû†Ä¬ @  Ô ¨Ú?d àVyÓr @  Ô!©Ú?d Vµ'‚g @  Ô"ªÚ?d `V7¶•¹ @  Ô#«Ú?d  V–ˆÂU @  Ô$¬Ú?d àVÕ‹ @  Ô%­Ú?d V¶¿´Ä @  Ô&®Ú?d `V4.£ @  Ô'¯Ú?d  Vc«Ñª @  Ô(°Ú?d àVá:Æt @  Ô)±Ú?d V‹ @  Ô*²Ú?d `VŒœÌ @  Ô+³Ú?d  V-?Ë  @  Ô,´Ú?d àV¯®Üþ @  Ô-µÚ?d V ½± @  Ô.¶Ú?d `V™ªo @  Ô/·Ú?d  Ví„Ó @  Ô0¸Ú?d àV’|“  @  Ô1¹Ú?d VùÜ¥ @  Ô2ºÚ?d `V{Mš{ @  Ô3»Ú?d  VÚsÍ— @  Ô4¼Ú?d àVXâÚI @  Ô5½Ú?d VúD» @  Ô6¾Ú?d `VxÕ¬Ø @  Ô7¿Ú?d  VB·ò¥ @  Ô8ÀÚ?d àVÀ&å{ @  Ô9ÁÚ?d V/Œ¨ @  Ô:ÂÚ?d `V­¿Ã @  Ô;ÃÚ?d  V #è/ @  Ô<ÄÚ?d àV޲ÿñ @  Ô=ÅÚ?d V,ž¾ @  Ô>ÆÚ?d `V®…‰` @  Ô?ÇÚ?d  VŽð†þ @  Ô@ÈÚ?d àV a‘  @  ÔAÉÚ?d VJpðš @  ÔBÊÚ?d `VÈáçD @  ÔCËÚ?d  Viß°¨ @  ÔDÌÚ?d àVëN§v @  ÔEÍÚ?d VIèÆ9 @  ÔFÎÚ?d `VËyÑç @  ÔGÏÚ?d  Vœü£W @  ÔHÐÚ?d àVm´‰ @  ÔIÑÚ?d VñÇùï @  ÔJÒÚ?d `VsVî1 @  ÔKÓÚ?d  VÒh¹Ý @  ÔLÔÚ?d àVPù® @  ÔMÕÚ?d Vò_ÏL @  ÔNÖÚ?d `VpÎØ’ @  ÔO×Ú?d  Vïºö. @  ÔPØÚ?d àVm+áð @  ÔQÙÚ?d V‹ÿX @  ÔRÚÚ?d `V„è† @  ÔSÛÚ?d  V%$¿j @  ÔTÜÚ?d àV§µ¨´ @  ÔUÝÚ?d VÉû @  ÔVÞÚ?d `V‡‚Þ% @  ÔWßÚ?d  VM°•I @  ÔXàÚ?d àVÏ!‚— @  ÔYáÚ?d V ‹Ïñ @  ÔZâÚ?d `V¢Ø/ @  Ô[ãÚ?d  V$à @  Ô\äÚ?d àVµ˜ @  Ô]åÚ?d V#ùR @  Ô^æÚ?d `V¡‚îŒ @  Ô_çÚ?d  V/ðç€uÐ V @  Ô`èÚ?d àV­að^ @  ÔaéÚ?d 8 V®„ß @  ÔbêÚ?d x V,ÔA @  ÔcëÚ?d ¸ V+ƒ­ @  ÔdìÚ?d ø Vº”s @  ÔeíÚ?d 8!V­õ< @  ÔfîÚ?d x!V/ââ @  ÔgïÚ?d ¸!VxR @  ÔhðÚ?d ø!Vú™‡Œ @  ÔiñÚ?d 8"V3Êê @  ÔjòÚ?d x"V—¢Ý4 @  ÔkóÚ?d ¸"V6œŠØ @  ÔlôÚ?d ø"V´  @  ÔmõÚ?d 8#V«üI @  ÔnöÚ?d x#V”:ë— @  Ôo÷Ú?d ¸#V NÅ+ @  ÔpøÚ?d ø#V‰ßÒõ @  ÔqùÚ?d 8$VâÌ] @  ÔrúÚ?d x$V`îÛƒ @  ÔsûÚ?d ¸$VÁÐŒo @  ÔtüÚ?d ø$VCA›± @  ÔuýÚ?d 8%Váçúþ @  ÔvþÚ?d x%Vcví  @  ÔwÿÚ?d ¸%V;µ²Ã @  ÔxÛ?d ø%V¹$¥ @  ÔyÛ?d 8&VVŽè{ @  ÔzÛ?d x&VÔÿ¥ @  Ô{Û?d ¸&Vu!¨I @  Ô|Û?d ø&V÷°¿— @  Ô}Û?d 8'VUÞØ @  Ô~Û?d x'VׇÉ @  ÔÛ?d ¸'V¤ö© @  Ô€Û?d ø'V–5áw @  Ô Û?d 8(VÐ$€Í @  Ô‚ Û?d x(VRµ— @  Ôƒ Û?d ¸(Vó‹Àÿ @  Ô„ Û?d ø(Vq×! @  Ô… Û?d 8)VÓ¼¶n @  Ô†Û?d x)VQ-¡° @  Ô‡Û?d ¸)V¨Ó @  ÔˆÛ?d ø)V„9ÄÞ @  Ô‰Û?d 8*Vk“‰¸ @  ÔŠÛ?d x*Véžf @  Ô‹Û?d ¸*VH<ÉŠ @  ÔŒÛ?d ø*VÊ­ÞT @  ÔÛ?d 8+Vh ¿ @  ÔŽÛ?d x+VꚨÅ @  ÔÛ?d ¸+Vuî†y @  ÔÛ?d ø+V÷‘§ @  Ô‘Û?d 8,Vœß @  Ô’Û?d x,VN˜Ñ @  Ô“Û?d ¸,V¿pÏ= @  Ô”Û?d ø,V=áØã @  Ô•Û?d 8-VŸG¹¬ @  Ô–Û?d x-VÖ®r @  Ô—Û?d ¸-V×äå @  Ô˜ Û?d ø-VUuòÀ @  Ô™!Û?d 8.Vºß¿¦ @  Ôš"Û?d x.V8N¨x @  Ô›#Û?d ¸.V™pÿ” @  Ôœ$Û?d ø.VáèJ @  Ô%Û?d 8/V¹G‰ @  Ôž&Û?d x/V;ÖžÛ @  ÔŸ'Û?d ¸/Vµ¤—× @  Ô (Û?d ø/V75€  @  Ô¡)Û?d 80VûÑ @  Ô¢*Û?d x0Vy”ÆÂ @  Ô£+Û?d ¸0Vت‘. @  Ô¤,Û?d ø0VZ;†ð @  Ô¥-Û?d 81Vøç¿ @  Ô¦.Û?d x1Vz ða @  Ô§/Û?d ¸1V-‰‚Ñ @  Ô¨0Û?d ø1V¯• @  Ô©1Û?d 82V@²Øi @  Ôª2Û?d x2VÂ#Ï· @  Ô«3Û?d ¸2Vc˜[ @  Ô¬4Û?d ø2Vጅ @  Ô­5Û?d 83VC*îÊ @  Ô®6Û?d x3VÁ»ù @  Ô¯7Û?d ¸3V^Ïר @  Ô°8Û?d ø3VÜ^Àv @  Ô±9Û?d 84V·þÞÞ @  Ô²:Û?d x4V5oÉ @  Ô³;Û?d ¸4V”Qžì @  Ô´<Û?d ø4VÀ‰2 @  Ôµ=Û?d 85V´fè} @  Ô¶>Û?d x5V6÷ÿ£ @  Ô·?Û?d ¸5V •¡Þ @  Ô¸@Û?d ø5V޶ @  Ô¹AÛ?d 86Va®ûf @  ÔºBÛ?d x6Vã?ì¸ @  Ô»CÛ?d ¸6VB»T @  Ô¼DÛ?d ø6VÀ¬Š @  Ô½EÛ?d 87Vb6ÍÅ @  Ô¾FÛ?d x7Và§Ú @  Ô¿GÛ?d ¸7VÀÒÕ… @  ÔÀHÛ?d ø7VBCÂ[ @  ÔÁIÛ?d 88VR£á @  ÔÂJÛ?d x8V†Ã´? @  ÔÃKÛ?d ¸8V'ýãÓ @  ÔÄLÛ?d ø8V¥lô  @  ÔÅMÛ?d 89VÊ•B @  ÔÆNÛ?d x9V…[‚œ @  ÔÇOÛ?d ¸9VÒÞð, @  ÔÈPÛ?d ø9VPOçò @  ÔÉQÛ?d 8:V¿åª” @  ÔÊRÛ?d x:V=t½J @  ÔËSÛ?d ¸:VœJê¦ @  ÔÌTÛ?d ø:VÛýx @  ÔÍUÛ?d 8;V¼}œ7 @  ÔÎVÛ?d x;V>ì‹é @  ÔÏWÛ?d ¸;V¡˜¥U @  ÔÐXÛ?d ø;V# ²‹ @  ÔÑYÛ?d 8Vn©œŠ @  ÔÚbÛ?d x>Vì8‹T @  ÔÛcÛ?d ¸>VMܸ @  ÔÜdÛ?d ø>VÏ—Ëf @  ÔÝeÛ?d 8?Vm1ª) @  ÔÞfÛ?d x?Vï ½÷ @  ÔßgÛ?duÐ@V7 ¸?VaÒ´û @  ÔàhÛ?d ø?VãC£% @  ÔáiÛ?d P@VRô¾ @  ÔâjÛ?d€ @V7êæ @  ÕkÛ?d Ð@Vä,à @  ÕlÛ?d AV4dlë @  ÕmÛ?d PAVRm @  ÕnÛ?d AV!§o @  ÕoÛ?d ÐAVôWk @  ÕpÛ?d BV‡°÷ª @  ÕqÛ?d PBV¹}R© @  ÕrÛ?d BV™ˆPW @  Õ sÛ?d ÐBV_›év @  Õ tÛ?d CVÓež @  Õ uÛ?d PCVºåd  @  Õ vÛ?d CVšfô @  Õ wÛ?d ÐCVÄ<ò @  ÕxÛ?d DVÝ]Ïý @  ÕyÛ?d PDVN1T @  ÕzÛ?d DVnÄVà @  Õ{Û?d ÐDV¨×ïÁ @  Õ|Û?d EVxŸc) @  Õ}Û?d PEVM©b½ @  Õ~Û?d EVm\`C @  ÕÛ?d ÐEV&. ö @  Õ€Û?d FV»j€7 @  ÕÛ?d PFV…§%4 @  Õ‚Û?d FV¥R'Ê @  ÕƒÛ?d ÐFVcAžë @  Õ„Û?d GV³  @  Õ…Û?d PGV†?— @  Õ†Û?d GV¦Êi @  Õ‡Û?d ÐGVøÉKo @  ÕˆÛ?d HVÌ6Çr @  Õ‰Û?d PHVN\{! @  Õ ŠÛ?d HVn©yß @  Õ!‹Û?d ÐHV¨ºÀþ @  Õ"ŒÛ?d IVxòL @  Õ#Û?d PIVMÄM‚ @  Õ$ŽÛ?d IVm1O| @  Õ%Û?d ÐIVVbw– @  Õ&Û?d JVË&×W @  Õ'‘Û?d PJVõërT @  Õ(’Û?d JVÕpª @  Õ)“Û?d ÐJV É‹ @  Õ*”Û?d KVÃEEc @  Õ+•Û?d PKVösD÷ @  Õ,–Û?d KVÖ†F  @  Õ-—Û?d ÐKVˆ… @  Õ.˜Û?d LV‘Ëï @  Õ/™Û?d PLV§tã @  Õ0šÛ?d LV"Rv @  Õ1›Û?d ÐLVäAÏ< @  Õ2œÛ?d MV4 CÔ @  Õ3Û?d PMV?B@ @  Õ4žÛ?d MV!Ê@¾ @  Õ5ŸÛ?d ÐMV‡.Aˆ @  Õ6 Û?d NVjáI @  Õ7¡Û?d PNV$§DJ @  Õ8¢Û?d NVRF´ @  Õ9£Û?d ÐNVÂAÿ• @  Õ:¤Û?d OV s} @  Õ;¥Û?d POV'?ré @  Õ<¦Û?d OVÊp @  Õ=§Û?d ÐOVYÉ* @  Õ>¨Û?d PVç–£ @  Õ?©Û?d PPVËz,b @  Õ@ªÛ?d PVë.œ @  ÕA«Û?d ÐPV-œ—½ @  ÕB¬Û?d QVýÔU @  ÕC­Û?d PQVÈâÁ @  ÕD®Û?d QVè? @  ÕE¯Û?d ÐQVÓD Õ @  ÕF°Û?d RVN€ @  ÕG±Û?d PRVpÍ% @  ÕH²Û?d RVP8'é @  ÕI³Û?d ÐRV–+žÈ @  ÕJ´Û?d SVFc  @  ÕKµÛ?d PSVsU´ @  ÕL¶Û?d SVS J @  ÕM·Û?d ÐSV £KL @  ÕN¸Û?d TVí¸C @  ÕO¹Û?d PTV‡#  @  ÕPºÛ?d TV§t!^ @  ÕQ»Û?d ÐTVag˜ @  ÕR¼Û?d UV±/— @  ÕS½Û?d PUV„ @  ÕT¾Û?d UV¤ìý @  ÕU¿Û?d ÐUVòXÚ @  ÕVÀÛ?d VVo£ @  ÕWÁÛ?d PVVQÑ @  ÕXÂÛ?d VVq$æ @  ÕYÃÛ?d ÐVV·7½Ç @  ÕZÄÛ?d WVg1/ @  Õ[ÅÛ?d PWVRI0» @  Õ\ÆÛ?d WVr¼2E @  Õ]ÇÛ?d ÐWV,¿hC @  Õ^ÈÛ?d XV@ä^ @  Õ_ÉÛ?d PXVš*X  @  Õ`ÊÛ?d XVºßZó @  ÕaËÛ?d ÐXV|ÌãÒ @  ÕbÌÛ?d YV¬„o: @  ÕcÍÛ?d PYV™²n® @  ÕdÎÛ?d YV¹GlP @  ÕeÏÛ?d ÐYV‚Tº @  ÕfÐÛ?d ZVPô{ @  ÕgÑÛ?d PZV!Qx @  ÕhÒÛ?d ZVhS† @  ÕiÓÛ?d ÐZVÒ r @  ÕjÔÛ?d [VÕšš @  ÕkÕÛ?d P[V଀ @  ÕlÖÛ?d [VÀY‚ð @  Õm×Û?d Ð[VžZØö @  ÕnØÛ?d \V‡+ù @  ÕoÙÛ?d P\Vx° @  ÕpÚÛ?d \V4²ä @  ÕqÛÛ?d Ð\Vòž Å @  ÕrÜÛ?d ]V"Ö‡- @  ÕsÝÛ?d P]Và†¹ @  ÕtÞÛ?d ]V7„G @  ÕußÛ?d Ð]V‘ñ…q @  ÕvàÛ?d ^V µ%° @  ÕwáÛ?d P^V2x€³ @  ÕxâÛ?d ^V‚M @  ÕyãÛ?d Ð^VÔž;l @  ÕzäÛ?d _VÖ·„ @  Õ{åÛ?d P_V1à¶ @  Õ|æÛ?d _V´î @  ÕuÐ`V}çÛ?d Ð_VOîè @  Õ~èÛ?d (`Vñî[p @  ÕéÛ?d h`V>ÕÑ€ @  Õ€êÛ?d ¨`V Ó~ @  ÕëÛ?d è`VØ3j_ @  Õ‚ìÛ?d (aV{æ· @  ÕƒíÛ?d haV=Mç# @  Õ„îÛ?d ¨aV¸åÝ @  Õ…ïÛ?d èaVäB:â @  Õ†ðÛ?d (bVyš# @  Õ‡ñÛ?d hbVGË?  @  ÕˆòÛ?d ¨bVg>=Þ @  Õ‰óÛ?d èbV¡-„ÿ @  ÕŠôÛ?d (cVqe @  Õ‹õÛ?d hcVDS ƒ @  ÕŒöÛ?d ¨cVd¦ } @  Õ÷Û?d ècV:¥Q{ @  ÕŽøÛ?d (dV#ë¢t @  ÕùÛ?d hdV°‡9— @  ÕúÛ?d ¨dVr;i @  Õ‘ûÛ?d èdVVa‚H @  Õ’üÛ?d (eV†)  @  Õ“ýÛ?d heV³4 @  Õ”þÛ?d ¨eV“ê Ê @  Õ•ÿÛ?d èeV›ö'å @  Õ–Ü?d (fV²‡$ @  Õ—Ü?d hfV8"' @  Õ˜Ü?d ¨fVŠ Ù @  Õ™Ü?d èfVÞ™™ø @  ÕšÜ?d (gVÑ @  Õ›Ü?d hgV;ç„ @  ÕœÜ?d ¨gVz @  ÕÜ?d ègVEL| @  ÕžÜ?d (hVqîÀa @  ÕŸ Ü?d hhVó„|2 @  Õ  Ü?d ¨hVÓq~Ì @  Õ¡ Ü?d èhVbÇí @  Õ¢ Ü?d (iVÅ*K @  Õ£ Ü?d hiVðJ‘ @  Õ¤Ü?d ¨iVÐéHo @  Õ¥Ü?d èiVëºp… @  Õ¦Ü?d (jVvþÐD @  Õ§Ü?d hjVH3uG @  Õ¨Ü?d ¨jVhÆw¹ @  Õ©Ü?d èjV®ÕΘ @  ÕªÜ?d (kV~Bp @  Õ«Ü?d hkVK«Cä @  Õ¬Ü?d ¨kVk^A @  Õ­Ü?d èkV5] @  Õ®Ü?d (lV,è @  Õ¯Ü?d hlV¿sð @  Õ°Ü?d ¨lVŸŠq @  Õ±Ü?d èlVY™È/ @  Õ²Ü?d (mV‰ÑDÇ @  Õ³Ü?d hmV¼çES @  Õ´Ü?d ¨mVœG­ @  ÕµÜ?d èmV:öF› @  Õ¶ Ü?d (nV§²æZ @  Õ·!Ü?d hnV™CY @  Õ¸"Ü?d ¨nV¹ŠA§ @  Õ¹#Ü?d ènV™ø† @  Õº$Ü?d (oV¯Ñtn @  Õ»%Ü?d hoVšçuú @  Õ¼&Ü?d ¨oVºw @  Õ½'Ü?d èoVä- @  Õ¾(Ü?d (pVZÏ‘° @  Õ¿)Ü?d hpVv¢+q @  ÕÀ*Ü?d ¨pVVW) @  ÕÁ+Ü?d èpVD® @  ÕÂ,Ü?d (qV@ F @  ÕÃ-Ü?d hqVu:Ò @  ÕÄ.Ü?d ¨qVUÏ, @  ÕÅ/Ü?d èqVnœ'Æ @  ÕÆ0Ü?d (rVó؇ @  ÕÇ1Ü?d hrVÍ" @  ÕÈ2Ü?d ¨rVíà ú @  ÕÉ3Ü?d èrV+ó™Û @  ÕÊ4Ü?d (sVû»3 @  ÕË5Ü?d hsVΧ @  ÕÌ6Ü?d ¨sVîxY @  ÕÍ7Ü?d èsV°{L_ @  ÕÎ8Ü?d (tV©5¿P @  ÕÏ9Ü?d htV:Y$³ @  ÕÐ:Ü?d ¨tV¬&M @  ÕÑ;Ü?d ètVÜ¿Ÿl @  ÕÒ<Ü?d (uV ÷„ @  ÕÓ=Ü?d huV9Á @  ÕÔ>Ü?d ¨uV4î @  ÕÕ?Ü?d èuVO€É @  ÕÖ@Ü?d (vVÒĤ @  Õ×AÜ?d hvVì   @  ÕØBÜ?d ¨vVÌüõ @  ÕÙCÜ?d èvV ïºÔ @  ÕÚDÜ?d (wVÚ§6< @  ÕÛEÜ?d hwVï‘7¨ @  ÕÜFÜ?d ¨wVÏd5V @  ÕÝGÜ?d èwV‘goP @  ÕÞHÜ?d (xV¥˜ãM @  ÕßIÜ?d hxV'ò_ @  ÕàJÜ?d ¨xV]à @  ÕáKÜ?d èxVÁäÁ @  ÕâLÜ?d€ (yVП) @  ÖMÜ?d hyVlÖ” @  ÖNÜ?d ¨yV$™Ôj @  ÖOÜ?d èyVÚƒm @  ÖPÜ?d (zVGÇ·¬ @  ÖQÜ?d hzV·¸MÕ @  ÖRÜ?d ¨zV—MO+ @  ÖSÜ?d èzVŸì©p @  ÖTÜ?d ({VO¤%˜ @  Ö UÜ?d h{V¿Ûßá @  Ö VÜ?d ¨{VŸ.Ý @  Ö WÜ?d è{Vd|ô @  Ö XÜ?d (|V*û @  Ö YÜ?d h|VíUu‚ @  ÖZÜ?d ¨|VÍ w| @  Ö[Ü?d è|Vh ¯Ç @  Ö\Ü?d (}V¸è#/ @  Ö]Ü?d h}VH—ÙV @  Ö^Ü?d ¨}VhbÛ¨ @  Ö_Ü?d è}V Ï!s @  Ö`Ü?d (~V–‹² @  ÖaÜ?d h~Vfô{Ë @  ÖbÜ?d ¨~VFy5 @  ÖcÜ?d è~VN Ÿn @  ÖdÜ?d (Vžè† @  ÖeÜ?d hVn—éÿ @  ÖfÜ?d ¨VuЀV'Nbë @  ÖgÜ?d èVÕ(Jê @  ÖhÜ?d @€V»–¨ž @  ÖiÜ?d €€VéGÇ @  ÖjÜ?d À€VkP @  ÖkÜ?d VÃ4$ @  Ö lÜ?d @VR#ú @  Ö!mÜ?d €V]IÌ£ @  Ö"nÜ?d ÀVߨÛ} @  Ö#oÜ?d ‚V>¯e @  Ö$pÜ?d @‚V¼†¸» @  Ö%qÜ?d €‚VîWâ @  Ö&rÜ?d À‚Vl @< @  Ö'sÜ?d ƒV6t=Q @  Ö(tÜ?d @ƒV´å* @  Ö)uÜ?d €ƒVæþÅÖ @  Ö*vÜ?d ÀƒVdoÒ @  Ö+wÜ?d „Vdú—2 @  Ö,xÜ?d @„Væk€ì @  Ö-yÜ?d €„V´poµ @  Ö.zÜ?d À„V6áxk @  Ö/{Ü?d …VÁ8;æ @  Ö0|Ü?d @…VC©,8 @  Ö1}Ü?d €…V²Ãa @  Ö2~Ü?d À…V“#Ô¿ @  Ö3Ü?d †VÍØø @  Ö4€Ü?d @†V€\Ï& @  Ö5Ü?d €†VÒG  @  Ö6‚Ü?d À†VPÖ7¡ @  Ö7ƒÜ?d ‡V ®JÌ @  Ö8„Ü?d @‡Vˆ?] @  Ö9…Ü?d €‡VÚ$²K @  Ö:†Ü?d À‡VXµ¥• @  Ö;‡Ü?d ˆVu‘Ÿ½ @  Ö<ˆÜ?d @ˆV÷ˆc @  Ö=‰Ü?d €ˆV¥g: @  Ö>ŠÜ?d ÀˆV'Špä @  Ö?‹Ü?d ‰VoRK @  Ö@ŒÜ?d @‰VíÕ @  ÖAÜ?d €‰V¿ØêÌ @  ÖBŽÜ?d À‰V=Iý @  ÖCÜ?d ŠV܆‰  @  ÖDÜ?d @ŠV^žÔ @  ÖE‘Ü?d €ŠV q @  ÖF’Ü?d ÀŠVŽfS @  ÖG“Ü?d ‹VÔå> @  ÖH”Ü?d @‹VVt à @  ÖI•Ü?d €‹Voã¹ @  ÖJ–Ü?d À‹V†þôg @  ÖK—Ü?d ŒV†k±] @  ÖL˜Ü?d @ŒVú¦ƒ @  ÖM™Ü?d €ŒVVáIÚ @  ÖNšÜ?d ÀŒVÔp^ @  ÖO›Ü?d V#©‰ @  ÖPœÜ?d @V¡8 W @  ÖQÜ?d €Vó#å @  ÖRžÜ?d ÀVq²òÐ @  ÖSŸÜ?d ŽV Ê¿ @  ÖT Ü?d @ŽV[¨Ê @  ÖU¡Ü?d €ŽVÝ@G“ @  ÖV¢Ü?d ÀŽV_ÑPM @  ÖW£Ü?d V©-  @  ÖX¤Ü?d @V‡8:þ @  ÖY¥Ü?d €VÕ#Õ§ @  ÖZ¦Ü?d ÀVW²Ây @  Ö[§Ü?d Vð·Èþ @  Ö\¨Ü?d @Vr&ß  @  Ö]©Ü?d €V =0y @  Ö^ªÜ?d ÀV¢¬'§ @  Ö_«Ü?d ‘VDsCš @  Ö`¬Ü?d @‘VÆâTD @  Öa­Ü?d €‘V”ù» @  Öb®Ü?d À‘Vh¬Ã @  Öc¯Ü?d ’V÷§ØÛ @  Öd°Ü?d @’Vu6Ï @  Öe±Ü?d €’V'- \ @  Öf²Ü?d À’V¥¼7‚ @  Ög³Ü?d “VÿÄJï @  Öh´Ü?d @“V}U]1 @  ÖiµÜ?d €“V/N²h @  Öj¶Ü?d À“V­ß¥¶ @  Ök·Ü?d ”V­JàŒ @  Öl¸Ü?d @”V/Û÷R @  Öm¹Ü?d €”V}À  @  ÖnºÜ?d À”VÿQÕ @  Öo»Ü?d •VˆLX @  Öp¼Ü?d @•VŠ[† @  Öq½Ü?d €•VØ´ß @  Ör¾Ü?d À•VZ“£ @  Ös¿Ü?d –VÖ»ûÔ @  ÖtÀÜ?d @–VT*ì  @  ÖuÁÜ?d €–V1S @  ÖvÂÜ?d À–V„  @  ÖwÃÜ?d —VÞØià @  ÖxÄÜ?d @—V\I~> @  ÖyÅÜ?d €—VR‘g @  ÖzÆÜ?d À—VŒÃ†¹ @  Ö{ÇÜ?d ˜V¡ç¼‘ @  Ö|ÈÜ?d @˜V#v«O @  Ö}ÉÜ?d €˜VqmD @  Ö~ÊÜ?d À˜VóüSÈ @  ÖËÜ?d ™VXrV @  Ö€ÌÜ?d @™VÚ㈠@  ÖÍÜ?d €™VˆøùÑ @  Ö‚ÎÜ?d À™V iî @  ÖƒÏÜ?d šV릚 @  Ö„ÐÜ?d @šVi7É @  Ö…ÑÜ?d €šV;,b @  Ö†ÒÜ?d ÀšV¹½uN @  Ö‡ÓÜ?d ›VãÅ# @  ÖˆÔÜ?d @›VaTý @  Ö‰ÕÜ?d €›V3Oð¤ @  ÖŠÖÜ?d À›V±Þçz @  Ö‹×Ü?d œV±K¢@ @  ÖŒØÜ?d @œV3Úµž @  ÖÙÜ?d €œVaÁZÇ @  ÖŽÚÜ?d ÀœVãPM @  ÖÛÜ?d V‰” @  ÖÜÜ?d @V–J @  Ö‘ÝÜ?d €VÄö @  Ö’ÞÜ?d ÀVF’áÍ @  Ö“ßÜ?d žV:ê¬  @  Ö”àÜ?d @žV¸{»× @  Ö•áÜ?d €žVê`TŽ @  Ö–âÜ?d ÀžVhñCP @  Ö—ãÜ?d ŸV2‰>= @  Ö˜äÜ?d @ŸV°)ã @  Ö™åÜ?d €ŸVâƺ @  ÖšæÜuРV?d ÀŸV`’Ñd @  Ö›çÜ?d  VB¹7 @  ÖœèÜ?d X VŠÓ®é @  ÖéÜ?d ˜ VØÈA° @  ÖžêÜ?d Ø VZYVn @  ÖŸëÜ?d ¡V¼†2S @  Ö ìÜ?d X¡V>% @  Ö¡íÜ?d ˜¡Vl ÊÔ @  Ö¢îÜ?d Ø¡VîÝ  @  Ö£ïÜ?d ¢VR© @  Ö¤ðÜ?d X¢VþÌ @  Ö¥ñÜ?d ˜¢VߨQ• @  Ö¦òÜ?d Ø¢V]IFK @  Ö§óÜ?d £V1;& @  Ö¨ôÜ?d X£V… ,ø @  Ö©õÜ?d ˜£V׻á @  ÖªöÜ?d Ø£VU*Ô @  Ö«÷Ü?d ¤VU¿‘E @  Ö¬øÜ?d X¤V×.†› @  Ö­ùÜ?d ˜¤V…5i @  Ö®úÜ?d ؤV¤~ @  Ö¯ûÜ?d ¥Vð}=‘ @  Ö°üÜ?d X¥Vrì*O @  Ö±ýÜ?d ˜¥V ÷Å @  Ö²þÜ?d Ø¥V¢fÒÈ @  Ö³ÿÜ?d ¦VL @  Ö´Ý?d X¦VÎ~œ] @  ÖµÝ?d ˜¦Vœes @  Ö¶Ý?d ئVôdÚ @  Ö·Ý?d §VDŒ· @  Ö¸Ý?d X§VÆi @  Ö¹Ý?d ˜§V”á0 @  ÖºÝ?d اV—öî @  Ö»Ý?d ¨V;³ÌÆ @  Ö¼Ý?d X¨V¹"Û @  Ö½ Ý?d ˜¨Vë94A @  Ö¾ Ý?d بVi¨#Ÿ @  Ö¿ Ý?d ©V!pA0 @  ÖÀ Ý?d X©V£áVî @  ÖÁ Ý?d ˜©Vñú¹· @  ÖÂÝ?d Ø©Vsk®i @  ÖÃÝ?d ªV’¤Úq @  ÖÄÝ?d XªV5ͯ @  ÖÅÝ?d ˜ªVB."ö @  ÖÆÝ?d تVÀ¿5( @  ÖÇÝ?d «VšÇHE @  ÖÈÝ?d X«VV_› @  ÖÉÝ?d ˜«VJM°Â @  ÖÊÝ?d Ø«VÈܧ @  ÖËÝ?d ¬VÈIâ& @  ÖÌÝ?d X¬VJØõø @  ÖÍÝ?d ˜¬Vá @  ÖÎÝ?d جVšR  @  ÖÏÝ?d ­Vm‹Nò @  ÖÐÝ?d X­VïY, @  ÖÑÝ?d ˜­V½¶u @  ÖÒÝ?d Ø­V?¡« @  ÖÓÝ?d ®VCèìo @  ÖÔ Ý?d X®VÁyû± @  ÖÕ!Ý?d ˜®V“bè @  ÖÖ"Ý?d Ø®Vó6 @  Ö×#Ý?d ¯VK‹~[ @  ÖØ$Ý?d X¯VÉi… @  ÖÙ%Ý?d ˜¯V›†Ü @  ÖÚ&Ý?d دV‘ @  ÖÛ'Ý?d °V¾•›… @  ÖÜ(Ý?d X°V<Œ[ @  ÖÝ)Ý?d ˜°Vnc @  ÖÞ*Ý?d ذVìŽtÜ @  Öß+Ý?d ±V Qá @  Öà,Ý?d X±VˆÀ? @  Öá-Ý?d ˜±VÚÛèf @  Öâ.Ý?d€ رV,‰ã @  ×/Ý?d ²V,ß/ @  ×0Ý?d X²V®–Èñ @  ×1Ý?d ˜²V9ÄÜE @  ×2Ý?d زV»UË› @  ×3Ý?d ³V/ŸéŒ @  ×4Ý?d X³V­þR @  ×5Ý?d ˜³V1§Nq @  ×6Ý?d سV³6Y¯ @  × 7Ý?d ´Vvêçx @  × 8Ý?d X´Vô{ð¦ @  × 9Ý?d ˜´Vc)ä @  × :Ý?d Ø´Vá¸óÌ @  × ;Ý?d µVurÑÛ @  ×<Ý?d XµV÷ãÆ @  ×=Ý?d ˜µVÆëHÆ @  ×>Ý?d صVDz_ @  ×?Ý?d ¶V ü  @  ×@Ý?d X¶VŠëþ @  ×AÝ?d ˜¶VØÿJ @  ×BÝ?d ضVšIè” @  ×CÝ?d ·VƒÊƒ @  ×DÝ?d X·VŒÝ] @  ×EÝ?d ˜·V»m~ @  ×FÝ?d Ø·V’*z  @  ×GÝ?d ¸VzG»e @  ×HÝ?d X¸VøÖ¬» @  ×IÝ?d ˜¸Vo„¸ @  ×JÝ?d ظVí¯Ñ @  ×KÝ?d ¹Vy߯ @  ×LÝ?d X¹VûNš @  ×MÝ?d ˜¹VÛ@3k @  × NÝ?d عVYÑ$µ @  ×!OÝ?d ºV}W«@ @  ×"PÝ?d XºVÿƼž @  ×#QÝ?d ˜ºVh”¨* @  ×$RÝ?d غVê¿ô @  ×%SÝ?d »V~Ïã @  ×&TÝ?d X»Vü^Š= @  ×'UÝ?d ˜»V`÷: @  ×(VÝ?d Ø»Vâf-À @  ×)WÝ?d ¼V'º“ @  ×*XÝ?d X¼V¥+„É @  ×+YÝ?d ˜¼V2y} @  ×,ZÝ?d ؼV°è‡£ @  ×-[Ý?d ½V$"¥´ @  ×.\Ý?d X½V¦³²j @  ×/]Ý?d ˜½V—»<© @  ×0^Ý?d ؽV*+w @  ×1_Ý?d ¾V¬^ @  ×2`Ý?d X¾V.ŠŠ€ @  ×3aÝ?d ˜¾V¹Øž4 @  ×4bÝ?d ؾV;I‰ê @  ×5cÝ?d ¿V¯ƒ«ý @  ×6dÝ?d X¿V-¼# @  ×7eÝ?d ˜¿V±»  @uÐÀV  ×8fÝ?d Ø¿V3*Þ @  ×9gÝ?d 0ÀV‹HT @  ×:hÝ?d pÀV ÙŠ @  ×;iÝ?d °ÀVž‹> @  ×<jÝ?d ðÀVà @  ×=kÝ?d 0ÁVˆÐ1÷ @  ×>lÝ?d pÁV A&) @  ×?mÝ?d °ÁV„H‰È @  ×@nÝ?d ðÁVÙž @  ×AoÝ?d 0ÂV"_ã @  ×BpÝ?d pÂV Î= @  ×CqÝ?d °ÂV7œ‰ @  ×DrÝ?d ðÂVµ W @  ×EsÝ?d 0ÃV!Ç'@ @  ×FtÝ?d pÃV£V0ž @  ×GuÝ?d °ÃV?ÿ€½ @  ×HvÝ?d ðÃV½n—c @  ×IwÝ?d 0ÄVx²)´ @  ×JxÝ?d pÄVú#>j @  ×KyÝ?d °ÄVmq*Þ @  ×LzÝ?d ðÄVïà= @  ×M{Ý?d 0ÅV{* @  ×N|Ý?d pÅVù»É @  ×O}Ý?d °ÅVȳ†  @  ×P~Ý?d ðÅVJ"‘Ô @  ×QÝ?d 0ÆV…f~ @  ×R€Ý?d pÆVœq  @  ×SÝ?d °ÆV Fe @  ×T‚Ý?d ðÆV‰×rÊ @  ×UƒÝ?d 0ÇVPÝ @  ×V„Ý?d pÇVŸŒG @  ×W…Ý?d °ÇV%÷  @  ×X†Ý?d ðÇV´àþ @  ×Y‡Ý?d 0ÈViÙ!; @  ×ZˆÝ?d pÈVëH6å @  ×[‰Ý?d °ÈV|"Q @  ×\ŠÝ?d ðÈVþ‹5 @  ×]‹Ý?d 0ÉVjA˜ @  ×^ŒÝ?d pÉVèÐF @  ×_Ý?d °ÉVÈÞ©5 @  ×`ŽÝ?d ðÉVJO¾ë @  ×aÝ?d 0ÊVnÉ1 @  ×bÝ?d pÊVìX&À @  ×c‘Ý?d °ÊV{ 2t @  ×d’Ý?d ðÊVù›%ª @  ×e“Ý?d 0ËVmQ½ @  ×f”Ý?d pËVïÀc @  ×g•Ý?d °ËVsi @ @  ×h–Ý?d ðËVñø·ž @  ×i—Ý?d 0ÌV4$ I @  ×j˜Ý?d pÌV¶µ— @  ×k™Ý?d °ÌV!ç # @  ×lšÝ?d ðÌV£vý @  ×m›Ý?d 0ÍV7¼?ê @  ×nœÝ?d pÍVµ-(4 @  ×oÝ?d °ÍV„%¦÷ @  ×pžÝ?d ðÍV´±) @  ×qŸÝ?d 0ÎV¿… @  ×r Ý?d pÎV=Þ @  ×s¡Ý?d °ÎVªFj @  ×t¢Ý?d ðÎV(×´ @  ×u£Ý?d 0ÏV¼1£ @  ×v¤Ý?d pÏV>Œ&} @  ×w¥Ý?d °ÏV¢%–^ @  ×x¦Ý?d ðÏV ´€ @  ×y§Ý?d 0ÐVBøpê @  ×z¨Ý?d pÐVÀig4 @  ×{©Ý?d °ÐVW;s€ @  ×|ªÝ?d ðÐVÕªd^ @  ×}«Ý?d 0ÑVA`FI @  ×~¬Ý?d pÑVÃñQ— @  ×­Ý?d °ÑV®®ÎG @  ×€®Ý?d ðÑV,?Ù™ @  ×¯Ý?d 0ÒV¹Vl @  ×‚°Ý?d pÒVŠ(A² @  ×ƒ±Ý?d °ÒVzU @  ×„²Ý?d ðÒVŸëBØ @  ×…³Ý?d 0ÓV !`Ï @  ×†´Ý?d pÓV‰°w @  ×‡µÝ?d °ÓVÇ2 @  ×ˆ¶Ý?d ðÓV—ˆÐì @  ×‰·Ý?d 0ÔVRTn; @  ×ЏÝ?d pÔVÐÅyå @  ×‹¹Ý?d °ÔVG—mQ @  ×ŒºÝ?d ðÔVÅz @  ×»Ý?d 0ÕVQÌX˜ @  ×޼Ý?d pÕVÓ]OF @  ×½Ý?d °ÕVâUÁ… @  ×¾Ý?d ðÕV`ÄÖ[ @  ×‘¿Ý?d 0ÖV)¥uc @  ×’ÀÝ?d pÖV«4b½ @  ×“ÁÝ?d °ÖVîó @  ×š ÈÝ?d pØVå¯ù- @  ×› ÉÝ?d °ØVrýí™ @  ×œ ÊÝ?d ðØVðlúG @  × ËÝ?d 0ÙVd¦ØP @  ×ž ÌÝ?d pÙVæ7ÏŽ @  ×Ÿ ÍÝ?d °ÙVÆ9fý @  ×  ÎÝ?d ðÙVD¨q# @  ×¡ ÏÝ?d 0ÚV`.þÖ @  ×¢ ÐÝ?d pÚVâ¿é @  ×£ ÑÝ?d °ÚVuíý¼ @  ×¤ ÒÝ?d ðÚV÷|êb @  ×¥ ÓÝ?d 0ÛVc¶Èu @  ×¦ ÔÝ?d pÛVá'ß« @  ×§ ÕÝ?d °ÛV}Žoˆ @  ×¨ ÖÝ?d ðÛVÿxV @  ×© ×Ý?d 0ÜV:ÃÆ @  ×ª ØÝ?d pÜV¸RÑ_ @  ×« ÙÝ?d °ÜV/Åë @  ×¬ ÚÝ?d ðÜV­‘Ò5 @  ×­ ÛÝ?d 0ÝV9[ð" @  ×® ÜÝ?d pÝV»Êçü @  ×¯ ÝÝ?d °ÝVŠÂi? @  ×° ÞÝ?d ðÝVS~á @  ×± ßÝ?d 0ÞV±bÈÈ @  ×² àÝ?d pÞV3óß @  ×³ áÝ?d °ÞV¤¡Ë¢ @  ×´ âÝ?d ðÞV&0Ü| @  ×µ ãÝ?d 0ßV²úþk @  ×¶ äÝ?d pßV0kéµ @  ×· åÝ?d uÐàV/°ßV¬ÂY– @  ×¸ æÝ?d ðßV.SNH @  ×¹ çÝ?d HàVëe]f @  ×º èÝ?d ˆàVË_˜ @  ×» éÝ?d ÈàVþ¦^  @  ×¼ êÝ?d áV.îÒä @  ×½ ëÝ?d HáVèýkÅ @  ×¾ ìÝ?d ˆáVÈi; @  ×¿ íÝ?d ÈáVäeÓú @  ×À îÝ?d âVy!s; @  ×Á ïÝ?d HâVBrKÑ @  × ðÝ?d ˆâVb‡I/ @  ×à ñÝ?d ÈâVW±H» @  ×Ä òÝ?d ãV‡ùÄS @  ×Å óÝ?d HãVAê}r @  ×Æ ôÝ?d ˆãVaŒ @  ×Ç õÝ?d ÈãV_ÒÚ @  ×È öÝ?d äVFœ)€ @  ×É ÷Ý?d HäVŸs† @  ×Ê øÝ?d ˆäV8jqx @  ×Ë ùÝ?d ÈäV \pì @  ×Ì úÝ?d åVÝü @  ×Í ûÝ?d HåVE% @  ×Î üÝ?d ˆåV;òGÛ @  ×Ï ýÝ?d ÈåV¨žÜ8 @  ×Ð þÝ?d æV5Ú|ù @  ×Ñ ÿÝ?d HæV³í\e @  ×Ò Þ?d ˆæV“^› @  ×Ó Þ?d ÈæV¦._ @  ×Ô Þ?d çVvfÓç @  ×Õ Þ?d HçV°ujÆ @  ×Ö Þ?d ˆçV€h8 @  ×× Þ?d ÈçV®MÍ; @  ×Ø Þ?d èVš²A& @  ×Ù Þ?d HèVı  @  ×Ú Þ?d ˆèVäDÞ @  ×Û  Þ?d ÈèVÑrJ @  ×Ü  Þ?d éV:”¢ @  ×Ý  Þ?d HéVÇ)-ƒ @  ×Þ  Þ?d ˆéVçÜ/} @  ×ß  Þ?d ÈéVe¶“. @  ×à Þ?d êVøò3ï @  ×á Þ?d HêVá  @  ×â Þ?d€ ˆêVËΩ @  Ø Þ?d ÈêV¹T @  Ø Þ?d ëVÏñØü @  Ø Þ?d HëVÌ«š0 @  Ø Þ?d ˆëVì^˜Î @  Ø Þ?d ÈëV!b· @  Ø Þ?d ìVo‘¸ @  Ø Þ?d HìV•Þ”Ä @  Ø Þ?d ˆìVµ+–: @  Ø Þ?d ÈìVETlC @  Ø Þ?d íV•à« @  Ø Þ?d HíV–F¢g @  Ø Þ?d ˆíV¶³ ™ @  Ø Þ?d ÈíVFÌZà @  Ø Þ?d îVÛˆú! @  Ø Þ?d HîVš @  Ø  Þ?d ˆîV>Š˜s @  Ø !Þ?d ÈîVÎõb  @  Ø "Þ?d ïV½îâ @  Ø #Þ?d HïVç¬. @  Ø $Þ?d ˆïV=®Ð @  Ø %Þ?d ÈïVÍmT© @  Ø &Þ?d ðVs³è @  Ø 'Þ?d HðVãíg @  Ø (Þ?d ˆðVÃ÷ï™ @  Ø )Þ?d ÈðV3ˆà @  Ø *Þ?d ñVãÀ™ @  Ø +Þ?d HñVàšÛÄ @  Ø ,Þ?d ˆñVÀoÙ: @  Ø -Þ?d ÈñV0#C @  Ø .Þ?d òV­Tƒ‚ @  Ø /Þ?d HòVäýB @  Ø 0Þ?d ˆòVÄçÿ¼ @  Ø! 1Þ?d ÈòV4˜Å @  Ø" 2Þ?d óVäЉ- @  Ø# 3Þ?d HóVçŠËá @  Ø$ 4Þ?d ˆóVÇÉ @  Ø% 5Þ?d ÈóV73f @  Ø& 6Þ?d ôV.NÀi @  Ø' 7Þ?d HôV¾ÿÅ @  Ø( 8Þ?d ˆôVž Çë @  Ø) 9Þ?d ÈôVnu=’ @  Ø* :Þ?d õV¾=±z @  Ø+ ;Þ?d HõV½gó¶ @  Ø, <Þ?d ˆõV’ñH @  Ø- =Þ?d ÈõVmí 1 @  Ø. >Þ?d öVð©«ð @  Ø/ ?Þ?d HöVÅÞM @  Ø0 @Þ?d ˆöVåûܳ @  Ø1 AÞ?d ÈöV„&Ê @  Ø2 BÞ?d ÷VÅ̪" @  Ø3 CÞ?d H÷VÆ–èî @  Ø4 DÞ?d ˆ÷Væcê @  Ø5 EÞ?d È÷Vi @  Ø6 FÞ?d øV"ãœt @  Ø7 GÞ?d HøV²R™ @  Ø8 HÞ?d ˆøV’§›ö @  Ø9 IÞ?d ÈøVbØa @  Ø: JÞ?d ùV²íg @  Ø; KÞ?d HùV±Ê¯« @  Ø< LÞ?d ˆùV‘?­U @  Ø= MÞ?d ÈùVa@W, @  Ø> NÞ?d úVü÷í @  Ø? OÞ?d HúVE¿ @  Ø@ PÞ?d ˆúV;°A @  ØA QÞ?d ÈúVËÏw8 @  ØB RÞ?d ûV‡ûÐ @  ØC SÞ?d HûVݹ @  ØD TÞ?d ˆûV8(»â @  ØE UÞ?d ÈûVÈWA› @  ØF VÞ?d üVѲ” @  ØG WÞ?d HüVA¨·è @  ØH XÞ?d ˆüVa]µ @  ØI YÞ?d ÈüV‘"Oo @  ØJ ZÞ?d ýVAjÇ @  ØK [Þ?d HýVB0K @  ØL \Þ?d ˆýVbѵ @  ØM ]Þ?d ÈýV’ºyÌ @  ØN ^Þ?d þVþÙ  @  ØO _Þ?d HþVÊ ¹¡ @  ØP `Þ?d ˆþVêü»_ @  ØQ aÞ?d ÈþVƒA& @  ØR bÞ?d ÿVÊËÍÎ @  ØS cÞ?d HÿVÉ‘ @  ØT dÞ?d ˆÿVédü @  ØU uÐWeÞ?d ÈÿV Ü«P @  ØVfÞ?d Wohƒ¡ @  ØWgÞ?d `WÿÙ†Ý @  ØXhÞ?d  Wß,„# @  ØYiÞ?d àW/S~Z @  ØZjÞ?d Wÿò² @  Ø[kÞ?d `WüA°~ @  Ø\lÞ?d  WÜ´²€ @  Ø]mÞ?d àW,ËHù @  Ø^nÞ?d W±è8 @  Ø_oÞ?d `WøÉ–ø @  Ø`pÞ?d  WØ<” @  ØaqÞ?d àW(Cn @  ØbrÞ?d Wø â— @  ØcsÞ?d `WûQ [ @  ØdtÞ?d  WÛ¤¢¥ @  ØeuÞ?d àW+ÛXÜ @  ØfvÞ?d W2•«Ó @  ØgwÞ?d `W¢$®¯ @  ØhxÞ?d  W‚ѬQ @  ØiyÞ?d àWr®V( @  ØjzÞ?d W¢æÚÀ @  Øk{Þ?d `W¡¼˜  @  Øl|Þ?d  WIšò @  Øm}Þ?d àWq6`‹ @  Øn~Þ?d WìrÀJ @  ØoÞ?d `WÄáe @  Øp€Þ?d  Wäæã› @  ØqÞ?d àW™â @  Ør‚Þ?d WÄÑ•  @  ØsƒÞ?d `WÇ‹×Æ @  Øt„Þ?d  Wç~Õ8 @  Øu…Þ?d àW/A @  Øv†Þ?d W#þ£\ @  Øw‡Þ?d `W³O¦  @  ØxˆÞ?d  W“º¤Þ @  Øy‰Þ?d àWcÅ^§ @  ØzŠÞ?d W³ÒO @  Ø{‹Þ?d ` W°×ƒ @  Ø|ŒÞ?d   W"’} @  Ø}Þ?d à W`]h @  Ø~ŽÞ?d WýÈÅ @  ØÞ?d ` Wù€¦ @  Ø€Þ?d   WÙû‚X @  Ø‘Þ?d à W)„x! @  Ø‚’Þ?d WùÌôÉ @  Øƒ“Þ?d ` Wú–¶ @  Ø„”Þ?d   WÚc´û @  Ø…•Þ?d à W*N‚ @  Ø†–Þ?d W3R½ @  Ø‡—Þ?d ` W£ã¸ñ @  Øˆ˜Þ?d   Wƒº @  Ø‰™Þ?d à Wsi@v @  ØŠšÞ?d W£!Ìž @  Ø‹›Þ?d ` W {ŽR @  ØŒœÞ?d   W€ŽŒ¬ @  ØÞ?d à WpñvÕ @  ØŽžÞ?d WíµÖ @  ØŸÞ?d `W(B¶¸ @  Ø Þ?d  W·´F @  Ø‘¡Þ?d àWøÈN? @  Ø’¢Þ?d W(€Â× @  Ø“£Þ?d `W+Ú€ @  Ø”¤Þ?d  W /‚å @  Ø•¥Þ?d àWûPxœ @  Ø–¦Þ?d WEŽÄ. @  Ø—§Þ?d `WÕ?ÁR @  Ø˜¨Þ?d  WõÊì @  Ø™©Þ?d àWµ9Õ @  ØšªÞ?d WÕýµ= @  Ø›«Þ?d `WÖ§÷ñ @  Øœ¬Þ?d  WöRõ @  Ø­Þ?d àW-v @  Øž®Þ?d W›i¯· @  ØŸ¯Þ?d `WÒ/Ñw @  Ø °Þ?d  WòÚÓ‰ @  Ø¡±Þ?d àW¥)ð @  Ø¢²Þ?d WÒí¥ @  Ø£³Þ?d `WÑ·çÔ @  Ø¤´Þ?d  WñBå* @  Ø¥µÞ?d àW=S @  Ø¦¶Þ?d Wsì\ @  Ø§·Þ?d `WˆÂé  @  Ø¨¸Þ?d  W¨7ëÞ @  Ø©¹Þ?d àWXH§ @  ØªºÞ?d WˆO @  Ø«»Þ?d `W‹Z߃ @  Ø¬¼Þ?d  W«¯Ý} @  Ø­½Þ?d àW[Ð' @  Ø®¾Þ?d WÆ”‡Å @  Ø¯¿Þ?d `Wó3òx @  Ø°ÀÞ?d  WÓÆð† @  Ø±ÁÞ?d àW#¹ ÿ @  Ø²ÂÞ?d Wóñ† @  Ø³ÃÞ?d `Wð«ÄÛ @  Ø´ÄÞ?d  WÐ^Æ% @  ØµÅÞ?d àW !<\ @  Ø¶ÆÞ?d WÞ°A @  Ø·ÇÞ?d `W„oµ= @  Ø¸ÈÞ?d  W¤š·Ã @  Ø¹ÉÞ?d àWTåMº @  ØºÊÞ?d W„­ÁR @  Ø»ËÞ?d `W‡÷ƒž @  Ø¼ÌÞ?d  W§` @  Ø½ÍÞ?d àWW}{ @  Ø¾ÎÞ?d WÊ9ÛØ @  Ø¿ÏÞ?d `W-x£Š @  ØÀÐÞ?d  W ¡t @  ØÁÑÞ?d àWýò[  @  ØÂÒÞ?d W-º×å @  ØÃÓÞ?d `W.à•) @  ØÄÔÞ?d  W—× @  ØÅÕÞ?d àWþjm® @  ØÆÖÞ?d Wç$ž¡ @  ØÇ×Þ?d `Ww•›Ý @  ØÈØÞ?d  WW`™# @  ØÉÙÞ?d àW§cZ @  ØÊÚÞ?d WwWï² @  ØËÛÞ?d `Wt ­~ @  ØÌÜÞ?d  WTø¯€ @  ØÍÝÞ?d àW¤‡Uù @  ØÎÞÞ?d W9Ãõ8 @  ØÏßÞ?d `Wü4•” @  ØÐàÞ?d  WÜÁ—j @  ØÑáÞ?d àW,¾m @  ØÒâÞ?d Wüöáû @  ØÓãÞ?d `Wÿ¬£7 @  ØÔäÞ?d  WßY¡ÉuÐ W @  ØÕåÞ?d àW/&[° @  ØÖæÞ?d 8 W^-…Ö @  Ø×çÞ?d x WΜ€ª @  ØØèÞ?d ¸ Wîi‚T @  ØÙéÞ?d ø Wx- @  ØÚêÞ?d 8!WÎ^ôÅ @  ØÛëÞ?d x!WͶ  @  ØÜìÞ?d ¸!Wíñ´÷ @  ØÝíÞ?d ø!WŽNŽ @  ØÞîÞ?d 8"W€ÊîO @  ØßïÞ?d x"WÉŒ @  ØàðÞ?d ¸"Wéy’q @  ØáñÞ?d ø"Wh @  ØâòÞ?d€ 8#W½øF @  ÙóÞ?d x#W_–ò£ @  ÙôÞ?d ¸#Wcð] @  ÙõÞ?d ø#WJUñÉ @  ÙöÞ?d 8$WSÆ @  Ù÷Þ?d x$W XÀ @  ÙøÞ?d ¸$W-íZ> @  ÙùÞ?d ø$W ÿ= @  ÙúÞ?d 8%WÃhsÕ @  Ù ûÞ?d x%W{Êô @  Ù üÞ?d ¸%W%ŽÈ  @  Ù ýÞ?d ø%W¸Éž @  Ù þÞ?d 8&Wüi_ @  Ù ÿÞ?d x&W¹é|æ @  Ùß?d ¸&W™~ @  Ùß?d ø&W påû @  Ùß?d 8'WÚ8i @  Ùß?d x'W+Ð2 @  Ùß?d ¸'W<ÞÒÌ @  Ùß?d ø'W èÓX @  Ùß?d 8(W=_E @  Ùß?d x(WcC @  Ùß?d ¸(WCá½ @  Ù ß?d ø(W},¢¾ @  Ù ß?d 8)W­d.V @  Ù ß?d x)Wkw—w @  Ù ß?d ¸)WK‚•‰ @  Ù ß?d ø)W~´” @  Ùß?d 8*Wãð4Ü @  Ùß?d x*WØ£ 6 @  Ùß?d ¸*WøVÈ @  Ùß?d ø*Wz<²› @  Ù ß?d 8+Wªt>s @  Ù!ß?d x+Wlg‡R @  Ù"ß?d ¸+WL’…¬ @  Ù#ß?d ø+Wy¤„8 @  Ù$ß?d 8,W`êw7 @  Ù%ß?d x,W>é-1 @  Ù&ß?d ¸,W/Ï @  Ù'ß?d ø,W ÑŠÌ @  Ù(ß?d 8-Wð™$ @  Ù)ß?d x-W6Š¿ @  Ù*ß?d ¸-W½û @  Ù+ß?d ø-W#I¼o @  Ù,ß?d 8.W¾ ® @  Ù-ß?d x.Wé˜ @  Ù. ß?d ¸.W8f @  Ù/!ß?d ø.W«p„… @  Ù0"ß?d 8/W{8m @  Ù1#ß?d x/W½+±L @  Ù2$ß?d ¸/WÞ³² @  Ù3%ß?d ø/W¨è²& @  Ù4&ß?d 80W6” @  Ù5'ß?d x0WH5T’ @  Ù6(ß?d ¸0WhÀVl @  Ù7)ß?d ø0WV óo @  Ù8*ß?d 81W†E‡ @  Ù9+ß?d x1W@VƦ @  Ù:,ß?d ¸1W`£ÄX @  Ù;-ß?d ø1WU•ÅÌ @  Ù<.ß?d 82WÈÑe  @  Ù=/ß?d x2Wó‚]ç @  Ù>0ß?d ¸2WÓw_ @  Ù?1ß?d ø2WÿåØ @  Ù@2ß?d 83W/Ri0 @  ÙA3ß?d x3WéAÐ @  ÙB4ß?d ¸3WÉ´Òï @  ÙC5ß?d ø3Wü‚Ó{ @  ÙD6ß?d 84WåÌ t @  ÙE7ß?d x4W»Ïzr @  ÙF8ß?d ¸4W›:xŒ @  ÙG9ß?d ø4W¥÷Ý @  ÙH:ß?d 85Wu¿Qg @  ÙI;ß?d x5W³¬èF @  ÙJ<ß?d ¸5W“Yê¸ @  ÙK=ß?d ø5W¦oë, @  ÙL>ß?d 86W;+Kí @  ÙM?ß?d x6WmŸ_Ê @  ÙN@ß?d ¸6WMj]4 @  ÙOAß?d ø6WÞÆ× @  ÙPBß?d 87WNJ? @  ÙQCß?d x7WÈ]ó @  ÙRDß?d ¸7Wè¨ñà @  ÙSEß?d ø7WÝžðt @  ÙTFß?d 88Wéa|i @  ÙUGß?d x8W·b&o @  ÙVHß?d ¸8W——$‘ @  ÙWIß?d ø8W©Z’ @  ÙXJß?d 89Wy z @  ÙYKß?d x9W¿´[ @  ÙZLß?d ¸9WŸô¶¥ @  Ù[Mß?d ø9WªÂ·1 @  Ù\Nß?d 8:W7†ð @  Ù]Oß?d x:W Õ/ @  Ù^Pß?d ¸:W, -ä @  Ù_Qß?d ø:W®J‘· @  Ù`Rß?d 8;W~_ @  ÙaSß?d x;W¸¤~ @  ÙbTß?d ¸;W˜ä¦€ @  ÙcUß?d ø;W­Ò§ @  ÙdVß?d 8Wj{?‚ @  Ùm_ß?d x>WÌŸ>´ @  Ùn`ß?d ¸>WìjW§© @  Ùpbß?d 8?W¯N+A @  Ùqcß?d x?Wi]’` @  Ùrdß?duÐ@W7 ¸?WI¨ž @  Ùseß?d ø?W|ž‘  @  Ùtfß?d P@W¿2+6 @  Ùugß?d @WCUd @  Ùvhß?d Ð@WÁÄsÎ @  Ùwiß?d AW­ÐMû @  Ùxjß?d PAW/AZ% @  Ùykß?d AWK6ö$ @  Ùzlß?d ÐAWɧáú @  Ù{mß?d BWãDWq @  Ù|nß?d PBWaÕ@¯ @  Ù}oß?d BWøâme @  Ù~pß?d ÐBWzsz» @  Ùqß?d CWç‘k} @  Ù€rß?d PCWe|£ @  Ùsß?d CWwТ @  Ù‚tß?d ÐCWƒæÇ| @  Ùƒuß?d DW-"9 @  Ù„vß?d PDW¯ž5ç @  Ù…wß?d DWSùzÁ @  Ù†xß?d ÐDWÑhm @  Ù‡yß?d EW½|S* @  Ùˆzß?d PEW?íDô @  Ù‰{ß?d EW[šèõ @  ÙŠ|ß?d ÐEWÙ ÿ+ @  Ù‹}ß?d FWóèI  @  ÙŒ~ß?d PFWqy^~ @  Ùß?d FW˜o ë @  ÙŽ€ß?d ÐFWþ5 @  Ùß?d GWÛKà @  Ù‚ß?d PGWYÚ > @  Ù‘ƒß?d GW=­§? @  Ù’„ß?d ÐGW¿<°á @  Ù“…ß?d HW @  Ù̾ß?d PVW¸É)À @  ÙÍ¿ß?d VWL(Ç @  ÙÎÀß?d ÐVWΈ? @  ÙÏÁß?d WW=?Ì @  ÙÐÂß?d PWW¬( @  ÙÑÃß?d WWéÛ„ @  ÙÒÄß?d ÐWWkJ“Í @  ÙÓÅß?d XWè š @  ÙÔÆß?d PXWjƒD @  ÙÕÇß?d XW–äQb @  ÙÖÈß?d ÐXWuF¼ @  Ù×Éß?d YWxax‰ @  ÙØÊß?d PYWúðoW @  ÙÙËß?d YWž‡ÃV @  ÙÚÌß?d ÐYWÔˆ @  ÙÛÍß?d ZW6õb @  ÙÜÎß?d PZW´duÝ @  ÙÝÏß?d ZW-SX @  ÙÞÐß?d ÐZW¯ÂOÉ @  ÙßÑß?d [Wqh¬ @  ÙàÒß?d P[Wýàr @  ÙáÓß?d [W™—Ós @  ÙâÔß?d€ Ð[WÚA3­ @  ÚÕß?d \W•éžÁ @  ÚÖß?d P\Wx‰ @  Ú×ß?d \W.V=Ô @  ÚØß?d Ð\W¬Ç*  @  ÚÙß?d ]WaKE @  ÚÚß?d P]WŒð\› @  ÚÛß?d ]W&5¯à @  ÚÜß?d Ð]W¤¤¸> @  Ú Ýß?d ^WKõX @  Ú Þß?d P^Wɟ↠@  Ú ßß?d ^WV } @  Ú àß?d Ð^WŠÇ£ @  Ú áß?d _W(a{ì @  Úâß?d P_Wªðl2 @  Úãß?d _W­”¡© @  ÚuÐ`Wäß?d Ð_W/¶w @  Úåß?d (`WãîH @  Úæß?d h`Wa‚ù– @  Úçß?d ¨`WX¬M] @  Úèß?d è`WÚ=Zƒ @  Úéß?d (aWx›;Ì @  Úêß?d haWú , @  Úëß?d ¨aWPÏßi @  Úìß?d èaWÒ^È· @  Úíß?d (bW=ô…Ñ @  Úîß?d hbW¿e’ @  Úïß?d ¨bWãD( @  Úðß?d èbWaŠSö @  Úñß?d (cWÃ,2¹ @  Úòß?d hcWA½%g @  Úóß?d ¨cWWßÏL @  Ú ôß?d ècWÕNØ’ @  Ú!õß?d (dW¾îÆ: @  Ú"öß?d hdW<Ñä @  Ú#÷ß?d ¨dWQe/ @  Ú$øß?d èdW‡Àrñ @  Ú%ùß?d (eW%f¾ @  Ú&úß?d heW§÷` @  Ú'ûß?d ¨eW 2÷ @  Ú(üß?d èeW£àÅ @  Ú)ýß?d (fW` ­£ @  Ú*þß?d hfW☺} @  Ú+ÿß?d ¨fW(4 @  Ú,à?d èfW‚„?ê @  Ú-à?d (gW "^¥ @  Ú.à?d hgW¢³I{ @  Ú/à?d ¨gW¥×„à @  Ú0à?d ègW'F“> @  Ú1à?d (hWaWò„ @  Ú2à?d hhWãÆåZ @  Ú3à?d ¨hWÚèQ‘ @  Ú4à?d èhWXyFO @  Ú5 à?d (iWúß' @  Ú6 à?d hiWxN0Þ @  Ú7 à?d ¨iWÒ‹Ã¥ @  Ú8 à?d èiWPÔ{ @  Ú9 à?d (jW¿°™ @  Ú:à?d hjW=!ŽÃ @  Ú;à?d ¨jWa_Xä @  Ú<à?d èjWãÎO: @  Ú=à?d (kWAh.u @  Ú>à?d hkWÃù9« @  Ú?à?d ¨kW{œÕ @  Ú@à?d èkWù ÂÌ @  ÚAà?d (lW’­Üd @  ÚBà?d hlW<˺ @  ÚCà?d ¨lW)q @  ÚDà?d èlW«ƒh¯ @  ÚEà?d (mW % à @  ÚFà?d hmW‹´> @  ÚGà?d ¨mW!qíE @  ÚHà?d èmW£àú› @  ÚIà?d (nWLJ·ý @  ÚJà?d hnWÎÛ # @  ÚKà?d ¨nWOØ @  ÚL à?d ènWƒX @  ÚM!à?d (oW/%9I @  ÚN"à?d hoW­´.— @  ÚO#à?d ¨oWªÐã  @  ÚP$à?d èoW(AôÒ @  ÚQ%à?d (pWäq¥Ç @  ÚR&à?d hpWfಠ@  ÚS'à?d ¨pW_ÎÒ @  ÚT(à?d èpWÝ_  @  ÚU)à?d (qWùpC @  ÚV*à?d hqWýhg @  ÚW+à?d ¨qWW­”æ @  ÚX,à?d èqWÕ<ƒ8 @  ÚY-à?d (rW:–Î^ @  ÚZ.à?d hrW¸Ù€ @  Ú[/à?d ¨rWäy§ @  Ú\0à?d èrWfèy @  Ú]1à?d (sWÄNy6 @  Ú^2à?d hsWFßnè @  Ú_3à?d ¨sWizX @  Ú` 4à?d èsWëëOÈ @  Úa 5à?d (tW€KQ` @  Úb 6à?d htWÚF¾ @  Úc 7à?d ¨tW;ôòu @  Úd 8à?d ètW¹eå« @  Úe 9à?d (uWÄä @  Úf :à?d huW™R“: @  Úg ;à?d ¨uW3—`A @  Úh <à?d èuW±wŸ @  Úi =à?d (vW^¬:ù @  Új >à?d hvWÜ=-' @  Úk ?à?d ¨vWÔc  @  Úl@à?d èvWVòÆ @  ÚmAà?d (wWôT}‰ @  ÚnBà?d hwWvÅjW @  ÚoCà?d ¨wWq¡§Ì @  ÚpDà?d èwWó0° @  ÚqEà?d (xWµ!Ѩ @  ÚrFà?d hxW7°Æv @  ÚsGà?d ¨xWžr½ @  ÚtHà?d èxWµÈ¹¶ @  Úu Ià?d (yWnØù @  Úv Jà?d hyW•ÿÏ' @  Úw Kà?d ¨yW?:<\ @  Úx Là?d èyW½«+‚ @  Úy Mà?d (zWRfä @  Úz Nà?d hzWÐq: @  Ú{ Oà?d ¨zWŒî§ @  Ú| Pà?d èzW7¸l @  Ú}Qà?d ({W• Y @  Ú~Rà?d h{W‡ @  ÚSà?d ¨{WL¼Æ @  Ú€Tà?d è{WÎ-ÑÑ @  ÚUà?d (|WœJ¬ @  Ú‚ Và?d h|WÛr @  Úƒ Wà?d ¨|W'õ°¹ @  Ú„ Xà?d è|W¥d§g @  Ú… Yà?d (}WÂÆ( @  Ú† Zà?d h}W…SÑö @  Ú‡ [à?d ¨}W/–" @  Úˆ \à?d è}W­5S @  Ú‰ ]à?d (~WB­x5 @  ÚŠ ^à?d h~WÀ%™Á @  ÚÄ ˜à?d Wîm) @  ÚÅ ™à?d @WïP @  ÚÆ šà?d €W>çí® @  ÚÇ ›à?d ÀW6F õ @  ÚÈ œà?d ŽW««4 @  ÚÉ à?d @ŽW[}QM @  ÚÊ žà?d €ŽW{ˆS³ @  ÚË Ÿà?d ÀŽW%©h @  ÚÌ  à?d WÈm%€ @  ÚÍ ¡à?d @W8ßù @  ÚÎ ¢à?d €WçÝ @  ÚÏ £à?d ÀW½ç¼ @  ÚÐ ¤à?d W9¹ @  ÚÑ ¥à?d @WóFCw @  ÚÒ ¦à?d €WÓ³A‰ @  ÚÓ §à?d ÀWHùàb @  ÚÔ ¨à?d ‘W˜±lŠ @  ÚÕ ©à?d @‘WhΖó @  ÚÖ ªà?d €‘WH;”  @  Ú× «à?d À‘W@šrV @  ÚØ ¬à?d ’WÝÞÒ— @  ÚÙ ­à?d @’W-¡(î @  ÚÚ ®à?d €’W T* @  ÚÛ ¯à?d À’WóNé @  ÚÜ °à?d “W#eÿ @  ÚÝ ±à?d @“WÓyŸ† @  ÚÞ ²à?d €“WóŒx @  Úß ³à?d À“WGŠbs @  Úà ´à?d ”W^Ä‘| @  Úá µà?d @”W®»k @  Úâ ¶à?d€ €”Wúu] @  Û ·à?d À”W€†œŸ @  Û ¸à?d •WPÎw @  Û ¹à?d @•Weøã @  Û ºà?d €•WE  @  Û »à?d À•Wƒª< @  Û ¼à?d –WZ ý @  Û ½à?d @–W —¯þ @  Û ¾à?d €–Wb­ @  Û ¿à?d À–WVÖ¹' @  Û Àà?d —W†ž5Ï @  Û Áà?d @—W³¨4[ @  Û Âà?d €—W“]6¥ @  Û Ãà?d À—WUN„ @  Û Äà?d ˜Wa±™ @  Û Åà?d @˜Wòݘz @  Û Æà?d €˜WÒ(š„ @  Û Çà?d À˜WŒ+À‚ @  Û Èà?d ™W\cLj @  Û Éà?d @™WiUMþ @  Û Êà?d €™WI O @  Û Ëà?d À™W³ö! @  Û Ìà?d šW÷Và @  Û Íà?d @šW,:óã @  Û Îà?d €šW Ïñ @  Û Ïà?d ÀšW7œÉ÷ @  Û Ðà?d ›WçÔE @  Û Ñà?d @›WÒâD‹ @  Û Òà?d €›WòFu @  Û Óà?d À›W4ÿT @  Û Ôà?d œW-J [ @  Û Õà?d @œW¯ ° @  Û Öà?d €œWÕ²ö @  Û! ×à?d ÀœWÑÖèð @  Û" Øà?d Wžd @  Û# Ùà?d @W4¨eŒ @  Û$ Úà?d €W]gr @  Û% Ûà?d ÀWÒNÞS @  Û& Üà?d žWO ~’ @  Û' Ýà?d @žWqÇÛ‘ @  Û( Þà?d €žWQ2Ùo @  Û) ßà?d ÀžW÷ÖØY @  Û* àà?d ŸW'žT± @  Û+ áà?d @ŸW¨U% @  Û, âà?d €ŸW2]WÛ @  Û- ãàuРW?d ÀŸWôNîú @  Û. äà?d  W…E0œ @  Û/ åà?d X W)« @  Û0 æà?d ˜ W6Ü© @  Û1 çà?d Ø Whßó‡ @  Û2 èà?d ¡W¸—o @  Û3 éà?d X¡W¡~û @  Û4 êà?d ˜¡W­T| @  Û5 ëà?d Ø¡WkGÅ$ @  Û6 ìà?d ¢Wöeå @  Û7 íà?d X¢WÈÎÀæ @  Û8 îà?d ˜¢Wè; @  Û9 ïà?d Ø¢WÓhúò @  Û: ðà?d £W v @  Û; ñà?d X£W6wŽ @  Û< òà?d ˜£Wãup @  Û= óà?d Ø£WÐðÌQ @  Û> ôà?d ¤Wɾ?^ @  Û? õà?d X¤WåÓ…Ÿ @  Û@ öà?d ˜¤WÅ&‡a @  ÛA ÷à?d ؤW›%Ýg @  ÛB øà?d ¥WKmQ @  ÛC ùà?d X¥W~[P @  ÛD úà?d ˜¥W^®Rå @  ÛE ûà?d Ø¥W˜½ëÄ @  ÛF üà?d ¦WùK @  ÛG ýà?d X¦W;4î @  ÛH þà?d ˜¦WÁìø @  ÛI ÿà?d ئW/ÔùA @  ÛJ á?d §Wÿœu© @  ÛK á?d X§Wʪt= @  ÛL á?d ˜§Wê_và @  ÛM á?d اW,LÏâ @  ÛN á?d ¨W³Cÿ @  ÛO á?d X¨W‹ßØ @  ÛP á?d ˜¨W«*Úâ @  ÛQ á?d بWõ)€ä @  ÛR á?d ©W%a  @  ÛS  á?d X©WW ˜ @  ÛT  á?d ˜©W0¢f @  ÛU  á?d Ø©Wö±¶G @  ÛV  á?d ªWkõ† @  ÛW  á?d XªWU8³… @  ÛX á?d ˜ªWuͱ{ @  ÛY á?d تWNž‰‘ @  ÛZ á?d «WžÖy @  Û[ á?d X«W«àí @  Û\ á?d ˜«W‹ @  Û] á?d Ø«WM¿2 @  Û^ á?d ¬WTHL= @  Û_ á?d X¬WÖ"ðn @  Û` á?d ˜¬Wö×ò @  Ûa á?d جW¨Ô¨– @  Ûb á?d ­Wxœ$~ @  Ûc á?d X­WMª%ê @  Ûd á?d ˜­Wm_' @  Ûe á?d Ø­W«Lž5 @  Ûf á?d ®W6>ô @  Ûg á?d X®WÅ›÷ @  Ûh á?d ˜®W(0™  @  Ûi á?d Ø®WŽÔ˜? @  Ûj  á?d ¯W^œ× @  Ûk !á?d X¯WkªC @  Ûl "á?d ˜¯WK_½ @  Ûm #á?d دWL®œ @  Ûn $á?d °W3’. @  Ûo %á?d X°W þ‰Í @  Ûp &á?d ˜°W€ ‹3 @  Ûq 'á?d ذWÞÑ5 @  Ûr (á?d ±W@]Ý @  Ûs )á?d X±W;v\I @  Ût *á?d ˜±Wƒ^· @  Ûu +á?d رWÝç– @  Ûv ,á?d ²W@ÔGW @  Ûw -á?d X²W~âT @  Ûx .á?d ˜²W^ìઠ@  Ûy /á?d زWe¿Ø@ @  Ûz 0á?d ³Wµ÷T¨ @  Û{ 1á?d X³W€ÁU< @  Û| 2á?d ˜³W 4W @  Û} 3á?d سWf'îã @  Û~ 4á?d ´Wiì @  Û 5á?d X´W°R— @  Û€ 6á?d ˜´W§•â @  Û 7á?d Ø´WΤÏä @  Û‚ 8á?d µWìC  @  Ûƒ 9á?d XµW+ÚB˜ @  Û„ :á?d ˜µW /@f @  Û… ;á?d صWÍ<ùG @  Û† <á?d ¶WPxY† @  Û‡ =á?d X¶Wnµü… @  Ûˆ >á?d ˜¶WN@þ{ @  Û‰ ?á?d ضWôê\ @  ÛŠ @á?d ·Wȼf´ @  Û‹ Aá?d X·WýŠg  @  ÛŒ Bá?d ˜·WÝeÞ @  Û Cá?d Ø·WlÜÿ @  ÛŽ Dá?d ¸W/“Pâ @  Û Eá?d X¸W¼ÿË @  Û Fá?d ˜¸Wœ Éÿ @  Û‘ Gá?d ظW “ù @  Û’ Há?d ¹WA @  Û“ Iá?d X¹W'w… @  Û” Já?d ˜¹W‚{ @  Û• Ká?d عWÁ‘¥Z @  Û– Lá?d ºW\Õ› @  Û— Má?d XºWb ˜ @  Û˜ Ná?d ˜ºWBí¢f @  Û™ Oá?d غWy¾šŒ @  Ûš Pá?d »W©öd @  Û› Qá?d X»WœÀð @  Ûœ Rá?d ˜»W¼5 @  Û Sá?d Ø»Wz&¬/ @  Ûž Tá?d ¼Wch_  @  ÛŸ Uá?d X¼Wáãs @  Û  Vá?d ˜¼WÁ÷á @  Û¡ Wá?d ؼWŸô»‹ @  Û¢ Xá?d ½WO¼7c @  Û£ Yá?d X½WzŠ6÷ @  Û¤ Zá?d ˜½WZ4  @  Û¥ [á?d ؽWœl( @  Û¦ \á?d ¾W(-é @  Û§ ]á?d X¾W?åˆê @  Û¨ ^á?d ˜¾WŠ @  Û© _á?d ؾW¹ô‹" @  Ûª `á?d ¿Wi¼Ê @  Û« aá?d X¿W\Š^ @  Û¬ bá?d ˜¿W|  @uÐÀW  Û­ cá?d Ø¿Wƒ«aT @  Û®dá?d 0ÀWç[0 @  Û¯eá?d pÀWt7«å @  Û°fá?d °ÀWT© @  Û±gá?d ðÀW Áó @  Û²há?d 0ÁWÚ‰õ @  Û³iá?d pÁWï¿~a @  Û´já?d °ÁWÏJ|Ÿ @  Ûµká?d ðÁW Yž @  Û¶lá?d 0ÂW”e @  Û·má?d pÂWªÐÀ| @  Û¸ná?d °ÂWŠ%‚ @  Û¹oá?d ðÂW±vúh @  Ûºpá?d 0ÃWa>v€ @  Û»qá?d pÃWTw @  Û¼rá?d °ÃWtýuê @  Û½sá?d ðÃW²îÌË @  Û¾tá?d 0ÄW« ?Ä @  Û¿uá?d pÄW‡Í… @  ÛÀvá?d °ÄW§8‡û @  ÛÁwá?d ðÄWù;Ýý @  ÛÂxá?d 0ÅW)sQ @  ÛÃyá?d pÅWEP @  ÛÄzá?d °ÅW<°R @  ÛÅ{á?d ðÅWú£ë^ @  ÛÆ|á?d 0ÆWgçKŸ @  ÛÇ}á?d pÆWY*îœ @  ÛÈ~á?d °ÆWyßìb @  ÛÉá?d ðÆW2­¬× @  ÛÊ€á?d 0ÇWâå ? @  ÛËá?d pÇW×Ó!« @  ÛÌ‚á?d °ÇW÷&#U @  Û̓á?d ðÇW15št @  Û΄á?d 0ÈWÊi @  ÛÏ…á?d pÈW–¦Š @  ÛІá?d °ÈW¶St @  Ûчá?d ðÈWèPÕr @  ÛÒˆá?d 0ÉW8Yš @  ÛÓ‰á?d pÉW .X @  ÛÔŠá?d °ÉW-ÛZð @  ÛÕ‹á?d ðÉWëÈãÑ @  ÛÖŒá?d 0ÊWvŒC @  Û×á?d pÊWHAæ @  ÛØŽá?d °ÊWh´äí @  ÛÙá?d ðÊWSçÜ @  ÛÚá?d 0ËWƒ¯Pï @  ÛÛ‘á?d pËW¶™Q{ @  ÛÜ’á?d °ËW–lS… @  ÛÝ“á?d ðËWPê¤ @  ÛÞ”á?d 0ÌWI1« @  Ûß•á?d pÌWË[¥ø @  Ûà–á?d °ÌWë®§ @  Ûá—á?d ðÌWµ­ý @  Ûâ˜á?d€ 0ÍWã³ÙQ @  Ü™á?d pÍW7Äì @  Üšá?d °ÍW1’ @  Ü›á?d ðÍWkÐÞ @  Üœá?d 0ÎW‰/p @  Üá?d pÎWyPŠf @  Üžá?d °ÎWY¥ˆ˜ @  ÜŸá?d ðÎW1óÖÔ @  Ü á?d 0ÏWá»Z< @  Ü ¡á?d pÏWÄ E @  Ü ¢á?d °ÏW11¢» @  Ü £á?d ðÏW2kàw @  Ü ¤á?d 0ÐWŒµ\Å @  Ü ¥á?d pÐW|ʦ¼ @  Ü¦á?d °ÐW\?¤B @  Ü§á?d ðÐWa/ŸÞ @  Ü¨á?d 0ÑW±g6 @  Ü©á?d pÑWAéO @  Üªá?d °ÑWaíë± @  Ü«á?d ðÑWb·©} @  Ü¬á?d 0ÒWÿó ¼ @  Ü­á?d pÒWŒóÅ @  Ü®á?d °ÒW/yñ; @  Ü¯á?d ðÒWÚ˜–« @  Ü°á?d 0ÓW ÐC @  Ü±á?d pÓWú¯à: @  Ü²á?d °ÓWÚZâÄ @  Ü³á?d ðÓWÙ  @  Ü´á?d 0ÔWÀNS @  Üµá?d pÔW01©~ @  Ü¶á?d °ÔWÄ«€ @  Ü·á?d ðÔWARÄÐ @  Ü €¸á?d 0ÕW‘H8 @  Ü!€¹á?d pÕWae²A @  Ü"€ºá?d °ÕWA°¿ @  Ü#€»á?d ðÕWBÊòs @  Ü$€¼á?d 0ÖWߎR² @  Ü%€½á?d pÖW/ñ¨Ë @  Ü&€¾á?d °ÖWª5 @  Ü'€¿á?d ðÖW—áh @  Ü(€Àá?d 0×WGJm€ @  Ü)€Áá?d p×W·5—ù @  Ü*€Âá?d °×W—À• @  Ü+€Ãá?d ð×W”š×Ë @  Ü,€Äá?d 0ØW e[Ö @  Ü-€Åá?d pØWP¡¯ @  Ü.€Æá?d °ØWpï£Q @  Ü/€Çá?d ðØWMÿ˜Í @  Ü0€Èá?d 0ÙW·% @  Ü1€Éá?d pÙWmÈî\ @  Ü2€Êá?d °ÙWM=ì¢ @  Ü3€Ëá?d ðÙWNg®n @  Ü4€Ìá?d 0ÚWÓ#¯ @  Ü5€Íá?d pÚW#\ôÖ @  Ü6€Îá?d °ÚW©ö( @  Ü7€Ïá?d ðÚWöH‘¸ @  Ü8€Ðá?d 0ÛW&P @  Ü9€Ñá?d pÛWÖç) @  Ü:€Òá?d °ÛWöŠå× @  Ü;€Óá?d ðÛWõЧ @  Ü<€Ôá?d 0ÜWìžT @  Ü=€Õá?d pÜWá®m @  Ü>€Öá?d °ÜW<¬“ @  Ü?€×á?d ðÜW¾¶- @  Ü@€Øá?d 0ÝWnM:Å @  ÜA€Ùá?d pÝWž2À¼ @  ÜB€Úá?d °ÝW¾ÇÂB @  ÜC€Ûá?d ðÝW½€Ž @  ÜD€Üá?d 0ÞW Ù O @  ÜE€Ýá?d pÞWЦÚ6 @  ÜF€Þá?d °ÞWðSØÈ @  ÜG€ßá?d ðÞW˜†„ @  ÜH€àá?d 0ßWHM l @  ÜI€áá?d pßW¸2ð @  ÜJ€âá?d uÐàW/°ßW˜Çòë @  ÜK€ãá?d ðßW›°' @  ÜL€äá?d HàW‚9îÑ @  ÜM€åá?d ˆàWÐ"ˆ @  ÜN€æá?d ÈàWR³V @  ÜO€çá?d áW=z¶ü @  ÜP€èá?d HáW¿ë¡" @  ÜQ€éá?d ˆáWíðN{ @  ÜR€êá?d ÈáWoaY¥ @  ÜS€ëá?d âWsî¬v @  ÜT€ìá?d HâWñ»¨ @  ÜU€íá?d ˆâW£dTñ @  ÜV€îá?d ÈâW!õC/ @  ÜW€ïá?d ãW†Í¿‰ @  ÜX€ðá?d HãW\¨W @  ÜY€ñá?d ˆãWVGG @  ÜZ€òá?d ÈãWÔÖPÐ @  Ü[€óá?d äWLSöÍ @  Ü\€ôá?d HäWÎÂá @  Ü]€õá?d ˆäWœÙJ @  Ü^€öá?d ÈäWH” @  Ü_€÷á?d åW`‡žŽ @  Ü`€øá?d HåWâ‰P @  Üa€ùá?d ˆåW° f  @  Üb€úá?d ÈåW2œq× @  Üc€ûá?d æW.„ @  Üd€üá?d HæW¬‚“Ú @  Üe€ýá?d ˆæWþ™|ƒ @  Üf€þá?d ÈæW|k] @  Üg€ÿá?d çWfT @  Üh€â?d HçWäŘS @  Üi€â?d ˆçW¶Þw  @  Üj€â?d ÈçW4O`Ô @  Ük€â?d èW{¹Û @  Ül€â?d HèWê® @  Üm€â?d ˆèWQñA\ @  Ün€â?d ÈèWÓ`V‚ @  Üo€â?d éW¼©ö( @  Üp€â?d HéW>8áö @  Üq€ â?d ˆéWl#¯ @  Ür€ â?d ÈéWî²q @  Üs€ â?d êWò=ì¢ @  Üt€ â?d HêWp¬û| @  Üu€ â?d ˆêW"·% @  Üv€â?d ÈêW &û @  Üw€â?d ëWÿ] @  Üx€â?d HëW…èƒ @  Üy€â?d ˆëW×”Ú @  Üz€â?d ÈëWU @  Ü{€â?d ìWÍ€¶ @  Ü|€â?d HìWO¡Ç @  Ü}€â?d ˆìW Nž @  Ü~€â?d ÈìWŸ›Y@ @  Ü€â?d íW¬èù @  Ü€€â?d HíW.”ÿ' @  Ü€â?d ˆíW|~ @  Ü‚€â?d ÈíWþ  @  Üƒ€â?d îWâ‘òs @  Ü„€â?d HîW`å­ @  Ü…€â?d ˆîW2 ô @  Ü†€â?d ÈîW°Š* @  Ü‡€â?d ïWŠØP @  Üˆ€ â?d HïW”ÏŽ @  Ü‰€!â?d ˆïWZ × @  ÜŠ€"â?d ÈïWØ7  @  Ü‹€#â?d ðWç Þ© @  ÜŒ€$â?d HðWešÉw @  Ü€%â?d ˆðW7&. @  ÜŽ€&â?d ÈðWµ1ð @  Ü€'â?d ñWÚÙ‘Z @  Ü€(â?d HñWXH†„ @  Ü‘€)â?d ˆñW SiÝ @  Ü’€*â?d ÈñWˆÂ~ @  Ü“€+â?d òW”M‹Ð @  Ü”€,â?d HòWÜœ @  Ü•€-â?d ˆòWDÇsW @  Ü–€.â?d ÈòWÆVd‰ @  Ü—€/â?d óWan˜/ @  Ü˜€0â?d HóWãÿñ @  Ü™€1â?d ˆóW±ä`¨ @  Üš€2â?d ÈóW3uwv @  Ü›€3â?d ôW«ðÑk @  Üœ€4â?d HôW)aƵ @  Ü€5â?d ˆôW{z)ì @  Üž€6â?d ÈôWùë>2 @  ÜŸ€7â?d õW‡$¹( @  Ü €8â?d HõWµ®ö @  Ü¡€9â?d ˆõWW®A¯ @  Ü¢€:â?d ÈõWÕ?Vq @  Ü£€;â?d öWɰ£¢ @  Ü¤€<â?d HöWK!´| @  Ü¥€=â?d ˆöW:[% @  Ü¦€>â?d ÈöW›«Lû @  Ü§€?â?d ÷WQtœ @  Ü¨€@â?d H÷WÓå‹N @  Ü©€Aâ?d ˆ÷Wþd @  Üª€Bâ?d È÷WosÉ @  Ü«€Câ?d øW¶[ªÆ @  Ü¬€Dâ?d HøW4ʽ @  Ü­€Eâ?d ˆøWfÑRA @  Ü®€Fâ?d ÈøWä@EŸ @  Ü¯€Gâ?d ùW‹‰å5 @  Ü°€Hâ?d HùW òë @  Ü±€Iâ?d ˆùW[² @  Ü²€Jâ?d ÈùWÙ’ l @  Ü³€Kâ?d úWÅÿ¿ @  Ü´€Lâ?d HúWGŒèa @  Üµ€Mâ?d ˆúW—8 @  Ü¶€Nâ?d ÈúW—æ @  Ü·€Oâ?d ûW0>ì@ @  Ü¸€Pâ?d HûW²¯ûž @  Ü¹€Qâ?d ˆûWà´Ç @  Üº€Râ?d ÈûWb% @  Ü»€Sâ?d üWú ¥ @  Ü¼€Tâ?d HüWx1²Ú @  Ü½€Uâ?d ˆüW**]ƒ @  Ü¾€Vâ?d ÈüW¨»J] @  Ü¿€Wâ?d ýWxsËÕ @  ÜÀ€Xâ?d HýWúâÜ  @  ÜÁ€Yâ?d ˆýW¨ù3R @  Ü€Zâ?d ÈýW*h$Œ @  ÜÀ[â?d þW6çÑ_ @  ÜÄ€\â?d HþW´vÆ @  ÜÅ€]â?d ˆþWæm)Ø @  ÜÆ€^â?d ÈþWdü> @  ÜÇ€_â?d ÿW^sû| @  ÜÈ€`â?d HÿWÜâì¢ @  ÜÉ€aâ?d ˆÿWŽùû @  ÜÊ€uÐXbâ?d ÈÿWH/»Œ @  ÜË câ?d Xp0æM @  ÜÌ dâ?d `Xò¡ñ“ @  ÜÍ eâ?d  X ºÊ @  ÜÎ fâ?d àX"+  @  ÜÏ gâ?d XM⩾ @  ÜÐ hâ?d `XÏs¾` @  ÜÑ iâ?d  XhQ9 @  ÜÒ jâ?d àXùFç @  ÜÓ kâ?d Xv³4 @  ÜÔ lâ?d `Xç¤ê @  ÜÕ mâ?d  XÓüK³ @  ÜÖ nâ?d àXQm\m @  Ü× oâ?d XöU Ë @  ÜØ pâ?d `XtÄ· @  ÜÙ qâ?d  X&ßXL @  ÜÚ râ?d àX¤NO’ @  ÜÛ sâ?d X<Ëé @  ÜÜ tâ?d `X¾ZþQ @  ÜÝ uâ?d  XìA @  ÜÞ vâ?d àXnÐÖ @  Üß wâ?d XÌ @  Üà xâ?d `X’Ž– @  Üá yâ?d  XÀ•yK @  Üâ zâ?d€ àX6Çr3 @  Ý {â?d XË ÏÉ @  Ý |â?d `XI˜Ø @  Ý }â?d  XÞÊÌ£ @  Ý ~â?d àX\[Û} @  Ý â?d XEðþ @  Ý €â?d `XÇa  @  Ý â?d  X[ȧ @  Ý ‚â?d àXÙY°Ý @  Ý ƒâ?d X©$’? @  Ý „â?d `X+µ…á @  Ý …â?d  X¼ç‘U @  Ý †â?d àX>v†‹ @  Ý ‡â?d X2¬G» @  Ý ˆâ?d ` X°=Pe @  Ý ‰â?d   X5Þ¦ @  Ý Šâ?d à X¤Éx @  Ý ‹â?d XÚbÇF @  Ý Œâ?d ` XXóИ @  Ý â?d   XÏ¡Ä, @  Ý Žâ?d à XM0Óò @  Ý â?d X$ºp. @  Ý â?d ` X¦+gð @  Ý ‘â?d   X:‚×Ó @  Ý ’â?d à X¸À  @  Ý “â?d Xåßý @  Ý ”â?d ` XgNŠ# @  Ý •â?d   Xðž— @  Ý –â?d à Xr‰I @  Ý —â?d X~WHy @  Ý ˜â?d ` XüÆ_§ @  Ý ™â?d   XÜÈöÔ @  Ý šâ?d à X^Yá  @  Ý! ›â?d X‡Ÿï4 @  Ý" œâ?d `Xøê @  Ý# â?d  X’\ì^ @  Ý$ žâ?d àXÍû€ @  Ý% Ÿâ?d Xäða€ @  Ý&  â?d `Xfav^ @  Ý' ¡â?d  XúÈÆ} @  Ý( ¢â?d àXxYÑ£ @  Ý) £â?d X‚Ãî @  Ý* ¤â?d `X”Ô0 @  Ý+ ¥â?d  X—ÆÀ„ @  Ý, ¦â?d àXW×Z @  Ý- §â?d Xj @  Ý. ¨â?d `X›´ @  Ý/ ©â?d  Xªw @  Ý0 ªâ?d àX(…˜© @  Ý1 «â?d XñC–— @  Ý2 ¬â?d `XsÒI @  Ý3 ­â?d  X䀕ý @  Ý4 ®â?d àXf‚# @  Ý5 ¯â?d X›!ÿ @  Ý6 °â?d `X 6! @  Ý7 ±â?d  X£† @  Ý8 ²â?d àX“2‘Ü @  Ý9 ³â?d XÎþÌ, @  Ý: ´â?d `XLoÛò @  Ý; µâ?d  XÛ=ÏF @  Ý< ¶â?d àXY¬Ø˜ @  Ý= ·â?d XUv¨ @  Ý> ¸â?d `X×çv @  Ý? ¹â?d  XYî¡— @  Ý@ ºâ?d àXÛ¶I @  ÝA »â?d X¹¸w @  ÝB ¼â?d `X€(¯© @  ÝC ½â?d  Xz» @  ÝD ¾â?d àX•ë¬Ã @  ÝE ¿â?d X‘†#Ò @  ÝF Àâ?d `X4  @  ÝG Áâ?d  X¾„/ @  ÝH Ââ?d àX /“ñ @  ÝI Ãâ?d X}R± @  ÝJ Äâ?d `XÿæÍ @  ÝK Åâ?d  Xh‘²y @  ÝL Æâ?d àXꥧ @  ÝM Çâ?d XæÚd— @  ÝN Èâ?d `XdKsI @  ÝO Éâ?d  XUCýŠ @  ÝP Êâ?d àX×ÒêT @  ÝQ Ëâ?d Xäj @  ÝR Ìâ?d `XŒ…ó´ @  ÝS Íâ?d  X×ç @  ÝT Îâ?d àX™FðÞ @  ÝU Ïâ?d XðÌS @  ÝV Ðâ?d `Xr]DÜ @  ÝW Ñâ?d  Xîôôÿ @  ÝX Òâ?d àXleã! @  ÝY Óâ?d X1©¾Ñ @  ÝZ Ôâ?d `X³8© @  Ý[ Õâ?d  X$j½» @  Ý\ Öâ?d àX¦ûªe @  Ý] ×â?d Xª!kU @  Ý^ Øâ?d `X(°|‹ @  Ý_ Ùâ?d  X¾Õø @  Ý` Úâ?d àXŠ/Â& @  Ýa Ûâ?d XSéÌ @  Ýb Üâ?d `XÑxÛÆ @  Ýc Ýâ?d  XF*Ïr @  Ýd Þâ?d àXĻج @  Ýe ßâ?d X0†B¬ @  Ýf àâ?d `X²Ur @  Ýg áâ?d  X.¾åQuÐ X @  Ýh ââ?d àX¬/ò @  Ýi ãâ?d 8 X™¦‚ @  Ýj äâ?d x X7•È @  Ýk åâ?d ¸ XŒe| @  Ýl æâ?d ø Xô–¢ @  Ým çâ?d 8!X.W’ @  Ýn èâ?d x!X€¿@L @  Ýo éâ?d ¸!X±·Î @  Ýp êâ?d ø!X3&ÙQ @  Ýq ëâ?d 8"Xêà×o @  Ýr ìâ?d x"XhqÀ± @  Ýs íâ?d ¸"Xÿ#Ô @  Ýt îâ?d ø"X}²ÃÛ @  Ýu ïâ?d 8#X8` @  Ýv ðâ?d x#X–©wÙ @  Ýw ñâ?d ¸#X Çú @  Ýx òâ?d ø#Xˆ‘Ð$ @  Ýy óâ?d 8$XÕ]Ô @  Ýz ôâ?d x$XWÌš  @  Ý{ õâ?d ¸$XÀžŽ¾ @  Ý| öâ?d ø$XB™` @  Ý} ÷â?d 8%XNÕXP @  Ý~ øâ?d x%XÌDOŽ @  Ý ùâ?d ¸%X¡Ð^ @  Ý€ úâ?d ø%X#ŠÇ€ @  Ý ûâ?d 8&XúLɾ @  Ý‚ üâ?d x&XxÝÞ` @  Ýƒ ýâ?d ¸&XïÊÔ @  Ý„ þâ?d ø&XmÝ  @  Ý… ÿâ?d 8'X ÒS… @  Ý† ã?d x'X‰CD[ @  Ý‡ ã?d ¸'Xêôx @  Ýˆ ã?d ø'X—{㦠@  Ý‰ ã?d 8(XçÁD @  ÝŠ ã?d x(Xe—Öš @  Ý‹ ã?d ¸(XòÅÂ. @  ÝŒ ã?d ø(XpTÕð @  Ý ã?d 8)X|ŽÀ @  ÝŽ ã?d x)Xþ @  Ý  ã?d ¸)XÏÝ @  Ý  ã?d ø)XM†š @  Ý‘  ã?d 8*X”@”= @  Ý’  ã?d x*Xуã @  Ý“  ã?d ¸*Xƒ—W @  Ý” ã?d ø*X€‰ @  Ý• ã?d 8+Xj˜#U @  Ý– ã?d x+Xè 4‹ @  Ý— ã?d ¸+Xt „¨ @  Ý˜ ã?d ø+Xö1“v @  Ý™ ã?d 8,X«ýΆ @  Ýš ã?d x,X)lÙX @  Ý› ã?d ¸,X¾>Íì @  Ýœ ã?d ø,X<¯Ú2 @  Ý ã?d 8-X0u @  Ýž ã?d x-X²ä Ü @  ÝŸ ã?d ¸-X’ꥯ @  Ý  ã?d ø-X{²q @  Ý¡ ã?d 8.Xɽ¼O @  Ý¢ ã?d x.XK,«‘ @  Ý£ ã?d ¸.XÜ~¿% @  Ý¤ ã?d ø.X^ï¨û @  Ý¥ ã?d 8/XªÒ2û @  Ý¦  ã?d x/X(C%% @  Ý§ !ã?d ¸/X´ê• @  Ý¨ "ã?d ø/X6{‚Ø @  Ý© #ã?d 80XÌ'• @  Ýª $ã?d x0XN¶‡K @  Ý« %ã?d ¸0XÙä“ÿ @  Ý¬ &ã?d ø0X[u„! @  Ý­ 'ã?d 81XW¯E @  Ý® (ã?d x1XÕ>RÏ @  Ý¯ )ã?d ¸1Xä6Ü  @  Ý° *ã?d ø1Xf§ËÒ @  Ý± +ã?d 82X¿aÅì @  Ý² ,ã?d x2X=ðÒ2 @  Ý³ -ã?d ¸2Xª¢Æ† @  Ý´ .ã?d ø2X(3ÑX @  Ýµ /ã?d 83XA¹r„ @  Ý¶ 0ã?d x3XÃ(eZ @  Ý· 1ã?d ¸3X_Õy @  Ý¸ 2ã?d ø3Xݧ @  Ý¹ 3ã?d 84X€ÜŸW @  Ýº 4ã?d x4XMˆ‰ @  Ý» 5ã?d ¸4X•œ= @  Ý¼ 6ã?d ø4XŽ‹ã @  Ý½ 7ã?d 85XTJÓ @  Ý¾ 8ã?d x5X™Å]  @  Ý¿ 9ã?d ¸5XÌòì @  ÝÀ :ã?d ø5X•]å2 @  ÝÁ ;ã?d 86XL›ë  @  Ý <ã?d x6XÎ üÒ @  Ýà =ã?d ¸6XYXèf @  ÝÄ >ã?d ø6XÛÉÿ¸ @  ÝÅ ?ã?d 87Xߤp© @  ÝÆ @ã?d x7X]5gw @  ÝÇ Aã?d ¸7XÁœ×T @  ÝÈ Bã?d ø7XC ÀŠ @  ÝÉ Cã?d 88X3pâh @  ÝÊ Dã?d x8X±áõ¶ @  ÝË Eã?d ¸8X&³á @  ÝÌ Fã?d ø8X¤"öÜ @  ÝÍ Gã?d 89X¨ø7ì @  ÝÎ Hã?d x9X*i 2 @  ÝÏ Iã?d ¸9Xa®ñ @  ÝÐ Jã?d ø9X™ð¹/ @  ÝÑ Kã?d 8:X@6· @  ÝÒ Lã?d x:X§ Ï @  ÝÓ Mã?d ¸:XUõ´{ @  ÝÔ Nã?d ø:X×d£¥ @  ÝÕ Oã?d 8;X¾îy @  ÝÖ Pã?d x;X<§ @  Ý× Qã?d ¸;X Ö§„ @  ÝØ Rã?d ø;X"G°Z @  ÝÙ Sã?d 8XËŸc @  Ýâ \ã?d€ x>X^½ @  Þ ]ã?d ¸>X(#  @  Þ ^ã?d ø>XªŸ4þ @  Þ _ã?d 8?X›ëU @  Þ `ã?d x?XzBÍ @  Þ aã?duÐ@X7 ¸?XKa­” @  Þ bã?d ø?XÉðºJ @  Þ cã?d P@X€lñó @  Þ dã?d @X ™ó  @  Þ eã?d Ð@XPæ t @  Þ fã?d AX€®…œ @  Þ gã?d PAXä$w @  Þ hã?d AX;&‰ @  Þ iã?d ÐAXËnÜð @  Þ jã?d BXV*|1 @  Þ kã?d PBXó*¤Š @  Þ lã?d BXÓߦt @  Þ mã?d ÐBX# \  @  Þ nã?d CXóèÐå @  Þ oã?d PCX òâ @  Þ pã?d CX- @  Þ qã?d ÐCXÝxëe @  Þ rã?d DXÄ6j @  Þ sã?d PDXÌ—þ1 @  Þ tã?d DXìbüÏ @  Þ uã?d ÐDX¶ @  Þ vã?d EXÌUŠ^ @  Þ wã?d PEXW+µ @  Þ xã?d EXwê)K @  Þ yã?d ÐEX‡•Ó2 @  Þ zã?d FXÑsó @  Þ {ã?d PFX®×Œø @  Þ |ã?d FXŽ"Ž @  Þ! }ã?d ÐFX~]t @  Þ" ~ã?d GX®ø— @  Þ# ã?d PGX .CÏ @  Þ$ €ã?d GXÛA1 @  Þ% ã?d ÐGXð¤»H @  Þ& ‚ã?d HXÄ[7U @  Þ' ƒã?d PHXÌúÑ @  Þ( „ã?d HXìÓð @  Þ) …ã?d ÐHXp)‰ @  Þ* †ã?d IXÌ8¥a @  Þ+ ‡ã?d PIXWrŠ @  Þ, ˆã?d IXw‡t @  Þ- ‰ã?d ÐIX‡øü  @  Þ. Šã?d JX¼\Ì @  Þ/ ‹ã?d PJX¿¼„w @  Þ0 Œã?d JXŸI†‰ @  Þ1 ã?d ÐJXo6|ð @  Þ2 Žã?d KX¿~ð @  Þ3 ã?d PKXAd3 @  Þ4 ã?d KXa‘1á @  Þ5 ‘ã?d ÐKX‘î˘ @  Þ6 ’ã?d LXˆ 8— @  Þ7 “ã?d PLX€ÞÌ @  Þ8 ”ã?d LX ôÜ2 @  Þ9 •ã?d ÐLXP‹&K @  Þ: –ã?d MX€Ãª£ @  Þ; —ã?d PMX‰ H @  Þ< ˜ã?d MX;| ¶ @  Þ= ™ã?d ÐMXËóÏ @  Þ> šã?d NXVGS @  Þ? ›ã?d PNXLFª— @  Þ@ œã?d NXl³¨i @  ÞA ã?d ÐNXœÌR @  ÞB žã?d OXL„Þø @  ÞC Ÿã?d POX/)$# @  ÞD  ã?d OXÜ&Ý @  ÞE ¡ã?d ÐOXÿ£Ü¤ @  ÞF ¢ã?d PXA}` @  ÞG £ã?d PPXI܆M @  ÞH ¤ã?d PXi)„³ @  ÞI ¥ã?d ÐPX™V~Ê @  ÞJ ¦ã?d QXIò" @  ÞK §ã?d PQXÒTSÉ @  ÞL ¨ã?d QXò¡Q7 @  ÞM ©ã?d ÐQXÞ«N @  ÞN ªã?d RXŸš  @  ÞO «ã?d PRX:šÓ4 @  ÞP ¬ã?d RXoÑÊ @  ÞQ ­ã?d ÐRXê+³ @  ÞR ®ã?d SX:X§[ @  ÞS ¯ã?d PSXÄBd\ @  ÞT °ã?d SXä·f¢ @  ÞU ±ã?d ÐSXÈœÛ @  ÞV ²ã?d TX †oÔ @  ÞW ³ã?d PTX'‰ @  ÞX ´ã?d TX%Ò‹q @  ÞY µã?d ÐTXÕ­q @  ÞZ ¶ã?d UXåýà @  Þ[ ·ã?d PUXž¯\  @  Þ\ ¸ã?d UX¾Z^õ @  Þ] ¹ã?d ÐUXN%¤Œ @  Þ^ ºã?d VXÓaM @  Þ_ »ã?d PVXggûF @  Þ` ¼ã?d VXG’ù¸ @  Þa ½ã?d ÐVX·íÁ @  Þb ¾ã?d WXg¥) @  Þc ¿ã?d PWXôX`ã @  Þd Àã?d WXÔ­b @  Þe Áã?d ÐWX$Ò˜d @  Þf Âã?d XX-y @  Þg Ãã?d PXXŒò" @  Þh Äã?d XX8yðÜ @  Þi Åã?d ÐXXÈ ¥ @  Þj Æã?d YXN†M @  Þk Çã?d PYXƒ'¦ @  Þl Èã?d YX£ñ%X @  Þm Éã?d ÐYXSŽß! @  Þn Êã?d ZXÎÊà @  Þo Ëã?d PZXkʧ[ @  Þp Ìã?d ZXK?¥¥ @  Þq Íã?d ÐZX»@_Ü @  Þr Îã?d [XkÓ4 @  Þs Ïã?d P[X•3 @  Þt Ðã?d [XµçÍ @  Þu Ñã?d Ð[XE˜è´ @  Þv Òã?d \X\Ö» @  Þw Óã?d P\XTwýà @  Þx Ôã?d \Xt‚ÿ @  Þy Õã?d Ð\X„ýg @  Þz Öã?d ]XTµ‰ @  Þ{ ×ã?d P]XÏÿ(d @  Þ| Øã?d ]Xï *š @  Þ} Ùã?d Ð]XuÐã @  Þ~ Úã?d ^X‚1p" @  Þ Ûã?d P^X{f¹Š @  Þ€ Üã?d ^X[“»t @  Þ Ýã?d Ð^X«ìA  @  Þ‚ Þã?d _X{¤Íå @  Þƒ ßã?d P_X 7> @  Þ„ àã?d _X8ü5À @  ÞuÐ`X… áã?d Ð_XȃϹ @  Þ† âã?d (`Xv{z! @  Þ‡ ãã?d h`X~Úœz @  Þˆ äã?d ¨`X^/ž„ @  Þ‰ åã?d è`X®Pdý @  ÞŠ æã?d (aX~è @  Þ‹ çã?d haXåRIþ @  ÞŒ èã?d ¨aXŧK @  Þ éã?d èaX5رy @  ÞŽ êã?d (bX¨œ¸ @  Þ ëã?d hbX œÉ @  Þ ìã?d ¨bX-iËý @  Þ‘ íã?d èbXÝ1„ @  Þ’ îã?d (cX ^½l @  Þ“ ïã?d hcXóD~k @  Þ” ðã?d ¨cXÓ±|• @  Þ• ñã?d ècX#Άì @  Þ– òã?d (dX:€uã @  Þ— óã?d hdX2!“¸ @  Þ˜ ôã?d ¨dXÔ‘F @  Þ™ õã?d èdXâ«k? @  Þš öã?d (eX2ãç× @  Þ› ÷ã?d heX©©F< @  Þœ øã?d ¨eX‰\D @  Þ ùã?d èeXy#¾» @  Þž úã?d (fXägz @  ÞŸ ûã?d hfXPaáq @  Þ  üã?d ¨fXp”ã @  Þ¡ ýã?d èfX€ëö @  Þ¢ þã?d (gXP£• @  Þ£ ÿã?d hgXöDÜ @  Þ¤ ä?d ¨gX½F" @  Þ¥ ä?d ègXM|¼[ @  Þ¦ ä?d (hXyƒ0F @  Þ§ ä?d hhXq"Ö @  Þ¨ ä?d ¨hXQ×Ôã @  Þ© ä?d èhX¡¨.š @  Þª ä?d (iXqà¢r @  Þ« ä?d hiXꪙ @  Þ¬ ä?d ¨iXÊ_g @  Þ­  ä?d èiX: û @  Þ®  ä?d (jX§d[ß @  Þ¯  ä?d hjXdƒd @  Þ°  ä?d ¨jX"‘š @  Þ±  ä?d èjXÒî{ã @  Þ² ä?d (kX¦÷  @  Þ³ ä?d hkXü¼4  @  Þ´ ä?d ¨kXÜI6ò @  Þµ ä?d èkX,6Ì‹ @  Þ¶ ä?d (lX5x?„ @  Þ· ä?d hlX=ÙÙß @  Þ¸ ä?d ¨lX,Û! @  Þ¹ ä?d èlXíS!X @  Þº ä?d (mX=­° @  Þ» ä?d hmX¦Q [ @  Þ¼ ä?d ¨mX†¤¥ @  Þ½ ä?d èmXvÛôÜ @  Þ¾ ä?d (nXëŸT @  Þ¿ ä?d hnXñž­„ @  ÞÀ ä?d ¨nXÑk¯z @  ÞÁ ä?d ènX!U @  Þ ä?d (oXñ\Ùë @  Þà ä?d hoX’ñ#0 @  ÞÄ  ä?d ¨oX²!Î @  ÞÅ !ä?d èoXB{Û· @  ÞÆ "ä?d (pXü¥g @  ÞÇ #ä?d hpXô^ @  ÞÈ $ä?d ¨pXÔñƒ  @  ÞÉ %ä?d èpX$ŽyÙ @  ÞÊ &ä?d (qXôÆõ1 @  ÞË 'ä?d hqXoŒTÚ @  ÞÌ (ä?d ¨qXOyV$ @  ÞÍ )ä?d èqX¿¬] @  ÞÎ *ä?d (rX"B œ @  ÞÏ +ä?d hrX‡BÔ' @  ÞÐ ,ä?d ¨rX§·ÖÙ @  ÞÑ -ä?d èrXWÈ,  @  ÞÒ .ä?d (sX‡€ H @  ÞÓ /ä?d hsXyšcO @  ÞÔ 0ä?d ¨sXYoa± @  ÞÕ 1ä?d èsX©›È @  ÞÖ 2ä?d (tX°^hÇ @  Þ× 3ä?d htX¸ÿŽœ @  ÞØ 4ä?d ¨tX˜ Œb @  ÞÙ 5ä?d ètXhuv @  ÞÚ 6ä?d (uX¸=úó @  ÞÛ 7ä?d huX#w[ @  ÞÜ 8ä?d ¨uX‚Yæ @  ÞÝ 9ä?d èuXóý£Ÿ @  ÞÞ :ä?d (vXn¹^ @  Þß ;ä?d hvXÚ¿üU @  Þà <ä?d ¨vXúJþ« @  Þá =ä?d èvX 5Ò @  Þâ >ä?d€ (wX®¾”œ @  ß ?ä?d hwXÜ3 @  ß @ä?d ¨wXü÷1 @  ß Aä?d èwXÉÁ0 @  ß Bä?d (xXý>¼ @  ß Cä?d hxX;-) @  ß Dä?d ¨xXØ× @  ß Eä?d èxX%¢Ô @  ß Fä?d (yXõ].< @  ß Gä?d hyX«^t: @  ß Hä?d ¨yX‹«vÄ @  ß Iä?d èyX¾wP @  ß Jä?d (zX#Ùב @  ß Kä?d hzXåÊn° @  ß Lä?d ¨zXÅ?lN @  ß Mä?d èzXVS÷­ @  ß Nä?d ({X†{E @  ß Oä?d h{X½HC¯ @  ß Pä?d ¨{X½AQ @  ß Qä?d è{X¨‹@Å @  ß Rä?d (|X±Å³Ê @  ß Sä?d h|XwÖ ë @  ß Tä?d ¨|XW# @  ß Uä?d è|Xiî­ @  ß Vä?d (}X¹¦!þ @  ß Wä?d h}Xç¥{ø @  ß Xä?d ¨}XÇPy @  ß Yä?d è}Xòfx’ @  ß Zä?d (~Xo"ØS @  ß [ä?d h~X©1ar @  ß \ä?d ¨~X‰ÄcŒ @  ß ]ä?d è~X ®ßß @  ß ^ä?d (XÛæS7 @  ß! _ä?d hX}R @  ß" `ä?d ¨XuЀX']÷Pÿ @  ß# aä?d èXhÁQk @  ß$ bä?d @€X³ @  ß% cä?d €€Xb @  ß& dä?d À€Xà™À @  ß' eä?d XŒ6õ @  ß( fä?d @X!+ @  ß) gä?d €Xò{n  @  ß* hä?d ÀXpêyÓ @  ß+ iä?d ‚XZ ÏX @  ß, jä?d @‚Xؘ؆ @  ß- kä?d €‚X¼ït‡ @  ß. lä?d À‚X>~cY @  ß/ mä?d ƒXÿËcŒ @  ß0 nä?d @ƒX}ZtR @  ß1 oä?d €ƒXämY˜ @  ß2 pä?d ÀƒXfüNF @  ß3 qä?d „XÈ« @  ß4 rä?d @„XJ„¼Ý @  ß5 sä?d €„X.óÜ @  ß6 tä?d À„X¬b @  ß7 uä?d …Xù±åâ @  ß8vä?d @…X{ ò< @  ß9wä?d €…X‡G½ @  ß:xä?d À…XÖªÄ @  ß;yä?d †X/5O @  ß<zä?d @†X­¤ ‘ @  ß={ä?d €†XÉÓ§ @  ß>|ä?d À†XKB°N @  ß?}ä?d ‡X5ö‘¹ @  ß@~ä?d @‡X·g†g @  ßAä?d €‡X^qÓò @  ßB€ä?d À‡XÜàÄ, @  ßCä?d ˆX_¸^{ @  ßD‚ä?d @ˆXÝ)I¥ @  ßEƒä?d €ˆX¹^å¤ @  ßF„ä?d ÀˆX;Ïòz @  ßG…ä?d ‰XWÛÌO @  ßH†ä?d @‰XÕJÛ‘ @  ßI‡ä?d €‰X)-”· @  ßJˆä?d À‰X«¼ƒi @  ßK‰ä?d ŠX_5â @  ßLŠä?d @ŠXÎ"< @  ßM‹ä?d €ŠXg¹Ž= @  ßNŒä?d ÀŠXå(™ã @  ßOä?d ‹X$™6 @  ßPŽä?d @‹X¦ Žè @  ßQä?d €‹X?;£" @  ßRä?d À‹X½ª´ü @  ßS‘ä?d ŒXCQ¹ @  ßT’ä?d @ŒX‘ÒFg @  ßU“ä?d €ŒXõ¥êf @  ßV”ä?d ÀŒXw4ý¸ @  ßW•ä?d X à @  ßX–ä?d @X™±ÔS @  ßY—ä?d €XeÖ›u @  ßZ˜ä?d ÀXçGŒ« @  ß[™ä?d ŽXͤ:  @  ß\šä?d @ŽXO5-þ @  ß]›ä?d €ŽX+Bÿ @  ß^œä?d ÀŽX©Ó–! @  ß_ä?d Xy`±D @  ß`žä?d @Xûñ¦š @  ßaŸä?d €Xÿq²Œ @  ßb ä?d ÀX}à¥R @  ßc¡ä?d Xt™ª @  ßd¢ä?d @Xöt @  ße£ä?d €X’´u @  ßf¤ä?d ÀX @  ßg¥ä?d ‘X|úž @  ßh¦ä?d @‘XþkŠ@ @  ßi§ä?d €‘X Åf @  ßj¨ä?d À‘X€Ò¸ @  ßk©ä?d ’Xª~d3 @  ßlªä?d @’X(ïsí @  ßm«ä?d €’XL˜ßì @  ßn¬ä?d À’XÎ È2 @  ßo­ä?d “X¼Èç @  ßp®ä?d @“X-ß9 @  ßq¯ä?d €“Xòó @  ßr°ä?d À“X–‹å- @  ßs±ä?d ”X8bh @  ßt²ä?d @”Xºó¶ @  ßu³ä?d €”XÞ„»· @  ßv´ä?d À”X\¬i @  ßwµä?d •X0’\ @  ßx¶ä?d @•X²…‚ @  ßy·ä?d €•XN÷ʤ @  ßz¸ä?d À•XÌfÝz @  ß{¹ä?d –Xæ…kñ @  ß|ºä?d @–Xd|/ @  ß}»ä?d €–XcÐ. @  ß~¼ä?d À–X‚òÇð @  ß½ä?d —XÖ6 @  ß€¾ä?d @—XÁè @  ß¿ä?d €—XiQÀï @  ß‚Àä?d À—XëÀ×1 @  ßƒÁä?d ˜Xh˜Mf @  ß„Âä?d @˜Xê Z¸ @  ß…Ãä?d €˜XŽ~ö¹ @  ß†Ää?d À˜X ïág @  ß‡Åä?d ™X`ûßR @  ßˆÆä?d @™XâjÈŒ @  ß‰Çä?d €™X ‡ª @  ßŠÈä?d À™Xœœt @  ß‹Éä?d šX¶&ÿ @  ßŒÊä?d @šX4î1! @  ßËä?d €šXP™  @  ßŽÌä?d ÀšXÒŠþ @  ßÍä?d ›X½Š+ @  ßÎä?d @›X‘,õ @  ß‘Ïä?d €›X°? @  ß’Ðä?d À›XŠŠ§á @  ß“Ñä?d œX$cB¤ @  ß”Òä?d @œX¦òUz @  ß•Óä?d €œXÂ…ù{ @  ß–Ôä?d ÀœX@î¥ @  ß—Õä?d X,Ð @  ß˜Öä?d @X®‘ÇN @  ß™×ä?d €XRöˆh @  ßšØä?d ÀXÐgŸ¶ @  ß›Ùä?d žXú„)= @  ßœÚä?d @žXx>ã @  ßÛä?d €žXb’â @  ßžÜä?d ÀžXžó…< @  ßŸÝä?d ŸXN@¢Y @  ß Þä?d @ŸXÌѵ‡ @  ß¡ßä?d €ŸXÈQ¡‘ @  ß¢àäuРX?d ÀŸXJÀ¶O @  ß£áä?d  Xñì  @  ß¤€âä?d X Xs}Á @  ß¥€ãä?d ˜ X ¶À @  ß¦€ää?d Ø X•›¡ @  ß§€åä?d ¡XùŸ+ @  ß¨€æä?d X¡X{ˆõ @  ß©€çä?d ˜¡X‡yÇÓ @  ßª€èä?d Ø¡XèÐ  @  ß«€éä?d ¢X/ f† @  ß¬€êä?d X¢X­šqX @  ß­€ëä?d ˜¢XÉíÝY @  ß®€ìä?d Ø¢XK|ʇ @  ß¯€íä?d £XŠÉÊR @  ß°€îä?d X£XXÝŒ @  ß±€ïä?d ˜£X‘oðF @  ß²€ðä?d Ø£Xþç˜ @  ß³€ñä?d ¤X½Ý @  ß´€òä?d X¤X?† @  ßµ€óä?d ˜¤X[ñ¹ @  ß¶€ôä?d ؤXÙ`®Ü @  ß·€õä?d ¥Xµté @  ß¸€öä?d X¥X7å‡7 @  ß¹€÷ä?d ˜¥XË‚È @  ßº€øä?d Ø¥XIßÏ @  ß»€ùä?d ¦XcðiD @  ß¼€úä?d X¦Xáa~š @  ß½€ûä?d ˜¦X…Ò› @  ß¾€üä?d ئX‡ÅE @  ß¿€ýä?d §Xy3ä² @  ßÀ€þä?d X§Xû¢ól @  ßÁ€ÿä?d ˜§XmÓóõ @  ß€å?d اXïBä+ @  ßÀå?d ¨Xl~| @  ßÄ€å?d X¨Xî‹i¢ @  ßÅ€å?d ˜¨XŠüÅ£ @  ßÆ€å?d بXmÒ} @  ßÇ€å?d ©XdyìH @  ßÈ€å?d X©Xæèû– @  ßÉ€å?d ˜©X´° @  ßÊ€å?d Ø©X˜£n @  ßË€ å?d ªX²ýå @  ßÌ€ å?d XªX0l; @  ßÍ€ å?d ˜ªXT®: @  ß΀ å?d تXÖŠ¹ä @  ßÏ€ å?d «X?¹1 @  ßЀå?d X«X•®®ï @  ßÑ€å?d ˜«X ™ƒ% @  ßÒ€å?d Ø«XŽ”û @  ßÓ€å?d ¬X áq¾ @  ßÔ€å?d X¬X¢pf` @  ßÕ€å?d ˜¬XÆÊa @  ßÖ€å?d جXD–Ý¿ @  ß×€å?d ­X(‚㊠@  ßØ€å?d X­XªôT @  ßÙ€å?d ˜­XVt»r @  ßÚ€å?d Ø­XÔ嬬 @  ßÛ€å?d ®Xþ' @  ßÜ€å?d X®X|— ù @  ßÝ€å?d ˜®Xà¡ø @  ßÞ€å?d Ø®Xšq¶& @  ß߀å?d ¯XJ‘C @  ßà€å?d X¯XÈS† @  ßá€å?d ˜¯XÌÓ’‹ @  ß†å?d€ دXvå?d X·XЂ @  à€?å?d ˜·X Ô—¯ @  à €@å?d Ø·X‰E€q @  à!€Aå?d ¸XÏTáË @  à"€Bå?d X¸XMÅö @  à#€Cå?d ˜¸Xìû¡ù @  à$€Då?d ظXnj¶' @  à%€Eå?d ¹XÌÌ×h @  à&€Få?d X¹XN]À¶ @  à'€Gå?d ˜¹X|ˆÐê @  à(€Hå?d عXþÇ4 @  à)€Iå?d ºX³ŠR @  à*€Jå?d XºX“"Œ @  à+€Kå?d ˜ºX2Ê` @  à,€Lå?d غX°Ý¾ @  à-€Må?d »X+¼ñ @  à.€Nå?d X»Xº«/ @  à/€Oå?d ˜»Xjžç @  à0€På?d Ø»Xèð¡ @  à1€Qå?d ¼Xƒ¯î  @  à2€Rå?d X¼X>ù× @  à3€Så?d ˜¼X ®; @  à4€Tå?d ؼX"‘¹å @  à5€Uå?d ½X€7ت @  à6€Vå?d X½X¦Ït @  à7€Wå?d ˜½X0sß( @  à8€Xå?d ؽX²âÈö @  à9€Yå?d ¾X]H… @  à:€Zå?d X¾XßÙ’N @  à;€[å?d ˜¾X~çÅ¢ @  à<€\å?d ؾXüvÒ| @  à=€]å?d ¿X^г3 @  à>€^å?d X¿XÜA¤í @  à?€_å?d ˜¿XÓðC @uÐÀX  à@€`å?d Ø¿Xû”á @  àAaå?d 0ÀXíÜ( @  àBbå?d pÀXoM?Ê @  àCcå?d °ÀXÎsh& @  àDdå?d ðÀXLâø @  àEeå?d 0ÁXîD· @  àFfå?d pÁXlÕ i @  àGgå?d °ÁX^5 @  àHhå?d ðÁXÜ‘ë @  àIiå?d 0ÂX3;C @  àJjå?d pÂX±ªTS @  àKkå?d °ÂX”¿ @  àLlå?d ðÂX’a @  àMmå?d 0ÃX0£u. @  àNnå?d pÃX²2bð @  àOoå?d °ÃXH.  @  àPpå?d ðÃXʇ9~ @  àQqå?d 0ÄX¡''Ö @  àRrå?d pÄX#¶0 @  àSså?d °ÄX‚ˆgä @  àTtå?d ðÄXp: @  àUuå?d 0ÅX¢¿u @  àVvå?d pÅX .« @  àWwå?d °ÅXû÷ @  àXxå?d ðÅXj) @  àYyå?d 0ÆXÀLO @  àZzå?d pÆXýQ[‘ @  à[{å?d °ÆX\o } @  à\|å?d ðÆXÞþ£ @  à]}å?d 0ÇX|Xzì @  à^~å?d pÇXþÉm2 @  à_å?d °ÇXeÊ~ @  à`€å?d ðÇXç[iS @  àaå?d 0ÈX¡Jé @  àb‚å?d pÈX#Û7 @  àcƒå?d °ÈX‚åHÛ @  àd„å?d ðÈXt_ @  àe…å?d 0ÉX¢Ò>J @  àf†å?d pÉX C)” @  àg‡å?d °ÉX–9È @  àhˆå?d ðÉX. @  ài‰å?d 0ÊX­cp @  àjŠå?d pÊXýŽ @  à¡å?d 0ÐXÇ:o› @  à‚¢å?d pÐXE«xE @  àƒ£å?d °ÐXä•/© @  à„¤å?d ðÐXf8w @  à…¥å?d 0ÑXÄ¢Y8 @  à†¦å?d pÑXF3Næ @  à‡§å?d °ÑXtæ^º @  àˆ¨å?d ðÑXöwId @  à‰©å?d 0ÒXÝ @  àŠªå?d pÒX›LÜ @  à‹«å?d °ÒX:rD0 @  àŒ¬å?d ðÒX¸ãSî @  à­å?d 0ÓXE2¡ @  àŽ®å?d pÓX˜Ô% @  à¯å?d °ÓXbði/ @  à°å?d ðÓXàa~ñ @  à‘±å?d 0ÔX‹Á`Y @  à’²å?d pÔX Pw‡ @  à“³å?d °ÔX¨n k @  à”´å?d ðÔX*ÿ7µ @  à•µå?d 0ÕXˆYVú @  à–¶å?d pÕX ÈA$ @  à—·å?d °ÕX8Qx @  à˜¸å?d ðÕXºŒF¦ @  à™¹å?d 0ÖXU& À @  àšºå?d pÖX×· @  à›»å?d °ÖXv‰Kò @  àœ¼å?d ðÖXô\, @  à½å?d 0×XV¾=c @  àž¾å?d p×XÔ/*½ @  àŸ¿å?d °×XRêm @  à Àå?d ð×XÐ{zN @  à¡Áå?d 0ØX–jô @  à¢Âå?d pØXû * @  à£Ãå?d °ØXµÅ[Æ @  à¤Äå?d ðØX7TL @  à¥Åå?d 0ÙX•ò-W @  à¦Æå?d pÙXc:‰ @  à§Çå?d °ÙX%¶*Õ @  à¨Èå?d ðÙX§'=  @  à©Éå?d 0ÚXHpm @  àªÊå?d pÚXÊg³ @  à«Ëå?d °ÚXk"0_ @  à¬Ìå?d ðÚXé³' @  à­Íå?d 0ÛXKFÎ @  à®Îå?d pÛXÉ„Q @  à¯Ïå?d °ÛX3 @ @  à°Ðå?d ðÛX±1 ž @  à±Ñå?d 0ÜXÚ‘6 @  à²Òå?d pÜXXè @  à³Óå?d °ÜXù>T @  à´Ôå?d ðÜX{¯CÚ @  àµÕå?d 0ÝXÙ "• @  à¶Öå?d pÝX[˜5K @  à·×å?d °ÝXiM% @  à¸Øå?d ðÝXëÜ2É @  à¹Ùå?d 0ÞXv¯ @  àºÚå?d pÞX†çhq @  à»Ûå?d °ÞX'Ù? @  à¼Üå?d ðÞX¥H(C @  à½Ýå?d 0ßXîI  @  à¾Þå?d pßX…^Ò @  à¿ßå?d uÐàX/°ßX]í | @  àÀàå?d ðßX¢ünÞ @  àÁ€áå?d HàXɶÝ @  à€âå?d ˆàXéCßq @  àÀãå?d ÈàXê½ @  àÄ€äå?d áX:QU @  àÅ€åå?d HáXÊ.ë, @  àÆ€æå?d ˆáXêÛéÒ @  àÇ€çå?d ÈáXzjì® @  àÈ€èå?d âXç.Lo @  àÉ€éå?d HâXQ¶ @  àÊ€êå?d ˆâX7¤´è @  àË€ëå?d ÈâX4þö$ @  àÌ€ìå?d ãXä¶zÌ @  àÍ€íå?d HãXÉ€µ @  à΀îå?d ˆãX4<‚K @  àÏ€ïå?d ÈãXl|Û; @  àЀðå?d äXu2(4 @  àÑ€ñå?d HäX…MÒM @  àÒ€òå?d ˆäX¥¸Ð³ @  àÓ€óå?d ÈäX¦â’ @  àÔ€ôå?d åXvª— @  àÕ€õå?d HåX†Õäî @  àÖ€öå?d ˆåX¦ æ @  à×€÷å?d ÈåX6‘ãl @  àØ€øå?d æX«ÕC­ @  àÙ€ùå?d HæX[ª¹Ô @  àÚ€úå?d ˆæX{_»* @  àÛ€ûå?d ÈæXxùæ @  àÜ€üå?d çX¨Mu @  àÝ€ýå?d HçXX2w @  àÞ€þå?d ˆçXxlj @  à߀ÿå?d ÈçXŒåë? @  àà€æ?d èX¸g" @  àá€æ?d HèXHe[ @  àâ€æ?d€ ˆèXSƒ @  á€æ?d ÈèXþH‰æ @  á€æ?d éX. @  á€æ?d HéX6š @  á€æ?d ˆéX;Ãd @  á€æ?d ÈéXeÀ\b @  á€æ?d êXø„ü£ @  á€ æ?d HêXÆIY  @  á€ æ?d ˆêXæ¼[^ @  á € æ?d ÈêX ¯â @  á € æ?d ëXðçn— @  á € æ?d HëXÅÑo @  á €æ?d ˆëXå$mý @  á €æ?d ÈëXÞwU @  á€æ?d ìXÇ9¦ @  á€æ?d HìXTU=û @  á€æ?d ˆìXt ? @  á€æ?d ÈìX²³†$ @  á€æ?d íXbû Ì @  á€æ?d HíXWÍ X @  á€æ?d ˆíXw8 ¦ @  á€æ?d ÈíX);S  @  á€æ?d îX´óa @  á€æ?d HîXвVb @  á€æ?d ˆîXªGTœ @  á€æ?d ÈîXlTí½ @  á€æ?d ïX¼aU @  á€æ?d HïX‰*`Á @  á€æ?d ˆïX©ßb? @  á€æ?d ÈïX;c  @  á€ æ?d ðX±åß» @  á€!æ?d HðX3cè @  á €"æ?d ˆðXza @  á!€#æ?d ÈðXÕiØ7 @  á"€$æ?d ñX!Tß @  á#€%æ?d HñX0UK @  á$€&æ?d ˆñXâWµ @  á%€'æ?d ÈñXNá ³ @  á&€(æ?d òXÓ¥­r @  á'€)æ?d HòXíhq @  á(€*æ?d ˆòXÍ  @  á)€+æ?d ÈòX ޳® @  á*€,æ?d óXÛÆ?F @  á+€-æ?d HóXîð>Ò @  á,€.æ?d ˆóXÎ<, @  á-€/æ?d ÈóXõVÆ @  á.€0æ?d ôXì÷É @  á/€1æ?d HôXtl* @  á0€2æ?d ˆôX_nÔ @  á1€3æ?d ÈôX™’×õ @  á2€4æ?d õXIÚ[ @  á3€5æ?d HõX|ìZ‰ @  á4€6æ?d ˆõX\Xw @  á5€7æ?d ÈõXq @  á6€8æ?d öXŸ^¢° @  á7€9æ?d HöX¡“³ @  á8€:æ?d ˆöXfM @  á9€;æ?d ÈöXGu¼l @  á:€<æ?d ÷X—=0„ @  á;€=æ?d H÷X¢ 1 @  á<€>æ?d ˆ÷X‚þ3î @  á=€?æ?d È÷XÔJ'É @  á>€@æ?d øX൫Ô @  á?€Aæ?d HøXÌØ @  á@€Bæ?d ˆøXì-ë @  áA€Cæ?d ÈøX*>ªÊ @  áB€Dæ?d ùXúv&" @  áC€Eæ?d HùXÏ@'¶ @  áD€Fæ?d ˆùXïµ%H @  áE€Gæ?d ÈùX±¶N @  áF€Hæ?d úX,òß @  áG€Iæ?d HúX?zŒ @  áH€Jæ?d ˆúX2Êxr @  áI€Kæ?d ÈúXôÙÁS @  áJ€Læ?d ûX$‘M» @  áK€Mæ?d HûX§L/ @  áL€Næ?d ˆûX1RNÑ @  áM€Oæ?d ÈûX v; @  áN€Pæ?d üXO…4 @  áO€Qæ?d HüX€#× @  áP€Ræ?d ˆüX Ö) @  áQ€Sæ?d ÈüXfÅ¥ @  áR€Tæ?d ýX¶)à @  áS€Uæ?d HýXƒ»(t @  áT€Væ?d ˆýX£N*Š @  áU€Wæ?d ÈýXýMpŒ @  áV€Xæ?d þX` ÐM @  áW€Yæ?d HþX^ÄuN @  áX€Zæ?d ˆþX~1w° @  áY€[æ?d ÈþX¸"Α @  áZ€\æ?d ÿXhjBy @  á[€]æ?d HÿX]\Cí @  á\€^æ?d ˆÿX}©A @  á]€uÐY_æ?d ÈÿX¦Í3Y @  á^`æ?d Yéy¨ @  á_aæ?d `Yk§û @  á`bæ?d  YKæ¥ @  áacæ?d àYõ$ @  ábdæ?d Y]½Ì @  áceæ?d `Yh‹‘X @  ádfæ?d  YH~“¦ @  áegæ?d àY}É  @  áfhæ?d Y‹9ia @  ágiæ?d `YµôÌb @  áhjæ?d  Y•Μ @  áikæ?d àYSw½ @  ájlæ?d YƒZûU @  ákmæ?d `Y¶lúÁ @  álnæ?d  Y–™ø? @  ámoæ?d àY­ÊÀÕ @  ánpæ?d Y´„3Ú @  áoqæ?d `Y'è¨9 @  ápræ?d  YªÇ @  áqsæ?d àYÁæ @  ártæ?d YFŸ @  ásuæ?d `Y$pžš @  átvæ?d  Y…œd @  áuwæ?d àYZ†Æb @  ávxæ?d YÇÂf£ @  áwyæ?d `Yùà @  áxzæ?d  YÙúÁ^ @  áy{æ?d àYéx @  áz|æ?d YÏ¡ô— @  á{}æ?d `Yú—õ @  á|~æ?d  YÚb÷ý @  á}æ?d àY‘·H @  á~€æ?d Y¥ï;U @  áæ?d `YjÔ±¥ @  á€‚æ?d  YJ!³[ @  áƒæ?d àYŒ2 z @  á‚„æ?d Y\z†’ @  áƒ…æ?d ` YiL‡ @  á„†æ?d   YI¹…ø @  á…‡æ?d à Yºßþ @  á†ˆæ?d YŠþ? @  á‡‰æ?d ` Y´3Ú< @  áˆŠæ?d   Y”ÆØÂ @  á‰‹æ?d à YRÕaã @  áŠŒæ?d Y‚í  @  á‹æ?d ` Y·«ìŸ @  áŒŽæ?d   Y—^îa @  áæ?d à Y¬ Ö‹ @  áŽæ?d YµC%„ @  á‘æ?d ` Y&/¾g @  á’æ?d   YÚ¼™ @  á‘“æ?d à YÀɸ @  á’”æ?d Y‰P @  á“•æ?d ` Y%·ˆÄ @  á”–æ?d   YBŠ: @  á•—æ?d à Y[AÐ< @  á–˜æ?d YÆpý @  á—™æ?d `YøÈÕþ @  á˜šæ?d  YØ=× @  á™›æ?d àY.n! @  ášœæ?d YÎfâÉ @  á›æ?d `YûPã] @  áœžæ?d  Yۥᣠ@  áŸæ?d àY}Aà• @  áž æ?d Yß\' @  áŸ¡æ?d `YAõàt @  á ¢æ?d  Ya⊠@  á¡£æ?d àY§[« @  á¢¤æ?d Yw[×C @  á£¥æ?d `YBmÖ× @  á¤¦æ?d  Yb˜Ô) @  á¥§æ?d àY<›Ž/ @  á¦¨æ?d Y¡ß.î @  á§©æ?d `YŸ‹í @  á¨ªæ?d  Y¿ç‰ @  á©«æ?d àYyô02 @  áª¬æ?d Y©¼¼Ú @  á«­æ?d `YœŠ½N @  á¬®æ?d  Y¼¿° @  á­¯æ?d àY‡,‡Z @  á®°æ?d YžbtU @  á¯±æ?d `Y ï¶ @  á°²æ?d  Y-ûíH @  á±³æ?d àYëèTi @  á²´æ?d Y; Ø @  á³µæ?d `Y–Ù @  á´¶æ?d  Y.cÛë @  áµ·æ?d àYp`í @  á¶¸æ?d Yí$!, @  á·¹æ?d `YÓé„/ @  á¸ºæ?d  Yó†Ñ @  á¹»æ?d àY5?ð @  áº¼æ?d YåG³ @  á»½æ?d `YÐq²Œ @  á¼¾æ?d  Yð„°r @  á½¿æ?d àY¦0¤U @  á¾Àæ?d Y’Ï(H @  á¿Áæ?d `Y¾¢’‰ @  áÀÂæ?d  YžWw @  áÁÃæ?d àYXD)V @  áÂÄæ?d Yˆ ¥¾ @  áÃÅæ?d `Y½:¤* @  áÄÆæ?d  YϦÔ @  áÅÇæ?d àYÃÌüÒ @  áÆÈæ?d Y^ˆ\ @  áÇÉæ?d `Y`Eù @  áÈÊæ?d  Y@°ûî @  áÉËæ?d àY†£BÏ @  áÊÌæ?d YVëÎ' @  áËÍæ?d `YcÝϳ @  áÌÎæ?d  YC(ÍM @  áÍÏæ?d àYx{õ§ @  áÎÐæ?d Ya5¨ @  áÏÑæ?d `YòYK @  áÐÒæ?d  YÒ¬Ÿµ @  áÑÓæ?d àY¿&” @  áÒÔæ?d YÄ÷ª| @  áÓÕæ?d `YñÁ«è @  áÔÖæ?d  YÑ4© @  áÕ׿?d àY7ó @  áÖØæ?d YsSÑ @  á×Ùæ?d `Y,¾öÒ @  áØÚæ?d  Y Kô, @  áÙÛæ?d àYÊXM  @  áÚÜæ?d YÁå @  áÛÝæ?d `Y/&Àq @  áÜÞæ?d  YÓÂuÐ Y @  áÝßæ?d àY©7ù @  áÞàæ?d 8 YØ<ß @  áßáæ?d x YZV¡Œ @  áàâæ?d ¸ Yz££r @  ááãæ?d ø Y¼°S @  áâäæ?d€ 8!Y­¿a» @  âåæ?d x!YyÈ( @  âææ?d ¸!YY=*ø @  âçæ?d ø!YÂw‹ @  âèæ?d 8"Y_3+Ò @  âéæ?d x"Y¯LÑ« @  âêæ?d ¸"Y¹ÓU @  âëæ?d ø"Y‡5 @  âìæ?d 8#YWP¹æ @  â íæ?d x#Y§/CŸ @  â îæ?d ¸#Y‡ÚAa @  â ïæ?d ø#YyÀ‚f @  â ðæ?d 8$Y`Žqi @  â ñæ?d x$Yñ‹ @  âòæ?d ¸$Y°‰î @  âóæ?d ø$YQU @  âôæ?d 8%YÅLݽ @  âõæ?d x%Y53'Ä @  âöæ?d ¸%YÆ%: @  â÷æ?d ø%YŽŒ„Ñ @  âøæ?d 8&YÈ$ @  âùæ?d x&Yã·Þi @  âúæ?d ¸&YÃBÜ— @  âûæ?d ø&YËã:Ì @  âüæ?d 8'Y«¶$ @  âýæ?d x'YëÔL] @  âþæ?d ¸'YË!N£ @  âÿæ?d ø'Y:} ÷ @  âç?d 8(Y‚,ê @  âç?d x(YþýÖ“ @  âç?d ¸(YÞÔm @  âç?d ø(Yj+f @  â ç?d 8)YºF§Ž @  â!ç?d x)YJ9]÷ @  â"ç?d ¸)YjÌ_  @  â#ç?d ø)Yñ†þâ @  â$ç?d 8*YlÂ^# @  â% ç?d x*Yœ½¤Z @  â& ç?d ¸*Y¼H¦¤ @  â' ç?d ø*Y´é@ÿ @  â( ç?d 8+Yd¡Ì @  â) ç?d x+Y”Þ6n @  â*ç?d ¸+Y´+4 @  â+ç?d ø+YJ1÷— @  â,ç?d 8,YS˜ @  â-ç?d x,Y£þá @  â.ç?d ¸,Yƒõü @  â/ç?d ø,Y&õ$¤ @  â0ç?d 8-Yö½¨L @  â1ç?d x-YÂR5 @  â2ç?d ¸-Y&7PË @  â3ç?d ø-Y½}ñ  @  â4ç?d 8.Y 9Qá @  â5ç?d x.YÐF«˜ @  â6ç?d ¸.Yð³©f @  â7ç?d ø.YøO= @  â8ç?d 8/Y(ZÃÕ @  â9ç?d x/YØ%9¬ @  â:ç?d ¸/YøÐ;R @  â;ç?d ø/Y›}Á‰ @  â< ç?d 80Y%£}; @  â=!ç?d x0YÕ܇B @  â>"ç?d ¸0Yõ)…¼ @  â?#ç?d ø0Yï(|% @  â@$ç?d 81Y?`ðÍ @  âA%ç?d x1YÏ ´ @  âB&ç?d ¸1YïêJ @  âC'ç?d ø1Yt ©¡ @  âD(ç?d 82Yéä ` @  âE)ç?d x2Y›ó @  âF*ç?d ¸2Y9nñç @  âG+ç?d ø2Y1ϼ @  âH,ç?d 83YᇛT @  âI-ç?d x3Yøa- @  âJ.ç?d ¸3Y1 cÓ @  âK/ç?d ø3YÏ Ô @  âL0ç?d 84YÖYSÛ @  âM1ç?d x4Y&&©¢ @  âN2ç?d ¸4YÓ«\ @  âO3ç?d ø4Y£Ósç @  âP4ç?d 85Ys›ÿ @  âQ5ç?d x5Yƒäv @  âR6ç?d ¸5Y£ˆ @  âS7ç?d ø5Y8[¦c @  âT8ç?d 86Y¥¢ @  âU9ç?d x6YU`üÛ @  âV:ç?d ¸6Yu•þ% @  âW;ç?d ø6Y}4~ @  âX<ç?d 87Y­|”– @  âY=ç?d x7Y]nï @  âZ>ç?d ¸7Y}öl @  â[?ç?d ø7Yî ƒÛ @  â\@ç?d 88YÚôÆ @  â]Aç?d x8Y*‹õ¿ @  â^Bç?d ¸8Y ~÷A @  â_Cç?d ø8Y¾xJ @  â`Dç?d 89Yn0„¢ @  âaEç?d x9YžO~Û @  âbFç?d ¸9Y¾º|% @  âcGç?d ø9Y%ðÝÎ @  âdHç?d 8:Y¸´} @  âeIç?d x:YHˇv @  âfJç?d ¸:Yh>…ˆ @  âgKç?d ø:Y`ŸcÓ @  âhLç?d 8;Y°×ï; @  âiMç?d x;Y@¨B @  âjNç?d ¸;Y`]¼ @  âkOç?d ø;YžGÔ» @  âlPç?d 8YôOrÍ @  âuYç?d x>Y0ˆ´ @  âvZç?d ¸>Y$ÅŠJ @  âw[ç?d ø>Y,dl @  âx\ç?d 8?Yü,àù @  ây]ç?d x?Y S€ @  âz^ç?duÐ@Y7 ¸?Y,¦~ @  â{_ç?d ø?YO ⥠@  â|`ç?d P@YŒ§X™ @  â}aç?d @YÞ¼·À @  â~bç?d Ð@Y\-  @  âcç?d AY÷£ò€ @  â€dç?d PAYu2å^ @  âeç?d AY')  @  â‚fç?d ÐAY¥¸Ù @  âƒgç?d BY!' - @  â„hç?d PBY£¶ó @  â…iç?d BYñ­óª @  â†jç?d ÐBYs<ät @  â‡kç?d CY)D™ @  âˆlç?d PCY«ÕŽÇ @  â‰mç?d CYùÎaž @  âŠnç?d ÐCY{_v@ @  â‹oç?d DYšQ– @  âŒpç?d PDYœ FH @  âqç?d DYΩ @  âŽrç?d ÐDYL¾Ï @  âsç?d EY»XýB @  âtç?d PEY9Éêœ @  â‘uç?d EYkÒÅ @  â’vç?d ÐEYéC @  â“wç?d FYmÜï @  â”xç?d PFYïM1 @  â•yç?d FY½Vüh @  â–zç?d ÐFY?Çë¶ @  â—{ç?d GYe¿–Û @  â˜|ç?d PGYç. @  â™}ç?d GYµ5n\ @  âš~ç?d ÐGY7¤y‚ @  â›ç?d HYñY @  âœ€ç?d PHY`NÇ @  âç?d HYß{¡ž @  âž‚ç?d ÐHY]ê¶@ @  âŸƒç?d IY»5Ò} @  â „ç?d PIY9¤Å£ @  â¡…ç?d IYk¿*ú @  â¢†ç?d ÐIYé.=$ @  â£‡ç?d JYm±+Ð @  â¤ˆç?d PJYï < @  â¥‰ç?d JY½;ÓW @  â¦Šç?d ÐJY?ªÄ‰ @  â§‹ç?d KYeÒ¹ä @  â¨Œç?d PKYçC®: @  â©ç?d KYµXAc @  âªŽç?d ÐKY7ÉV½ @  â«ç?d LYR qk @  â¬ç?d PLYÐfµ @  â­‘ç?d LY‚†‰ì @  â®’ç?d ÐLYž2 @  â¯“ç?d MY÷ÎÝ¿ @  â°”ç?d PMYu_Êa @  â±•ç?d MY'D%8 @  â²–ç?d ÐMY¥Õ2æ @  â³—ç?d NY!J$ @  â´˜ç?d PNY£Û3Ì @  âµ™ç?d NYñÀÜ• @  â¶šç?d ÐNYsQËK @  â·›ç?d OY))¶& @  â¸œç?d POY«¸¡ø @  â¹ç?d OYù£N¡ @  âºžç?d ÐOY{2Y @  â»Ÿç?d PY$ÐÈ @  â¼ ç?d PPY¦A @  â½¡ç?d PYôZðO @  â¾¢ç?d ÐPYvËç‘ @  â¿£ç?d QY>…> @  âÀ¤ç?d PQY¼‚’à @  âÁ¥ç?d QYî™}¹ @  â¦ç?d ÐQYljg @  âçç?d RYè—|“ @  âĨç?d PRYjkM @  âÅ©ç?d RY8„ @  âƪç?d ÐRYºŒ“Ê @  âÇ«ç?d SYàôî§ @  âȬç?d PSYbeùy @  âÉ­ç?d SY0~  @  âÊ®ç?d ÐSY²ïþ @  â˯ç?d TY×*&( @  â̰ç?d PTYU»1ö @  âͱç?d TY Þ¯ @  âβç?d ÐTY…1Éq @  âϳç?d UYrèŠü @  âдç?d PUYðy" @  âѵç?d UY¢br{ @  âÒ¶ç?d ÐUY óe¥ @  âÓ·ç?d VY¤lsQ @  âÔ¸ç?d PVY&ýd @  âÕ¹ç?d VYtæ‹Ö @  âÖºç?d ÐVYöwœ @  â×»ç?d WY¬áe @  âؼç?d PWY.žö» @  âÙ½ç?d WY|…â @  âÚ¾ç?d ÐWYþ< @  âÛ¿ç?d XYÛ‡z5 @  âÜÀç?d PXYYmë @  âÝÁç?d XY ‚² @  âÞÂç?d ÐXY‰œ•l @  âßÃç?d YYoCñQ @  âàÄç?d PYYíÒæ @  âáÅç?d YY¿É Ö @  ââÆç?d€ ÐYYI›® @  ãÇç?d ZY,E\s @  ãÈç?d PZY®ÔK­ @  ãÉç?d ZY9†_ @  ãÊç?d ÐZY»HÇ @  ãËç?d [Y/ÝjÐ @  ãÌç?d P[Y­L} @  ãÍç?d [Y1åÍ- @  ãÎç?d Ð[Y³tÚó @  ã Ïç?d \YøÈ @  ã Ðç?d P\Y‘i @  ã Ñç?d \Y;¢ @  ã Òç?d Ð\Y„ª| @  ã Óç?d ]Y`0k @  ãÔç?d P]Y’ñ'µ @  ãÕç?d ]Y£ù©v @  ãÖç?d Ð]Y!h¾¨ @  ã×ç?d ^Y`¾S± @  ãØç?d P^Yâ/Do @  ãÙç?d ^Yu}PÛ @  ãÚç?d Ð^Y÷ìG @  ãÛç?d _Yc&e @  ãÜç?d P_Yá·rÌ @  ãÝç?d _Y}Âï @  ãuÐ`YÞç?d Ð_Y‚¦M @  ã€ßç?d (`Y‚= @  ã€àç?d h`Yšã @  ã€áç?d ¨`Y AW @  ã€âç?d è`YЉ @  ã€ãç?d (aY3ž @  ã€äç?d haY™‹$@ @  ã€åç?d ¨aY¹…3 @  ã €æç?d èaY;ší @  ã!€çç?d (bYzÂwô @  ã"€èç?d hbYøS`* @  ã#€éç?d ¨bYotž @  ã$€êç?d èbYíc@ @  ã%€ëç?d (cYyZAW @  ã&€ìç?d hcYûËV‰ @  ã'€íç?d ¨cYgbæª @  ã(€îç?d ècYåóñt @  ã)€ïç?d (dYE-O @  ã*€ðç?d hdYÇî:‘ @  ã+€ñç?d ¨dYP¼.% @  ã,€òç?d èdYÒ-9û @  ã-€óç?d (eYFçì @  ã.€ôç?d heYÄv 2 @  ã/€õç?d ¨eYõ~‚ñ @  ã0€öç?d èeYwï•/ @  ã1€÷ç?d (fY69x6 @  ã2€øç?d hfY´¨oè @  ã3€ùç?d ¨fY#ú{\ @  ã4€úç?d èfY¡kl‚ @  ã5€ûç?d (gY5¡N• @  ã6€üç?d hgY·0YK @  ã7€ýç?d ¨gY+™éh @  ã8€þç?d ègY©þ¶ @  ã9€ÿç?d (hYÎ@A# @  ã:€è?d hhYLÑVý @  ã;€è?d ¨hYÛƒBI @  ã<€è?d èhYYU— @  ã=€è?d (iYÍØw€ @  ã>€è?d hiYOI`^ @  ã?€è?d ¨iYÁ@Ï¿ @  ã@€è?d èiYCÑØa @  ãA€è?d (jY5x @  ãB€è?d hjY€–"¦ @  ãC€ è?d ¨jYÄ6 @  ãD€ è?d èjY•U!Ì @  ãE€ è?d (kYŸÛ @  ãF€ è?d hkYƒ @  ãG€ è?d ¨kY§¤& @  ãH€è?d èkY6³ø @  ãI€è?d (lY=ºoà @  ãJ€è?d hlY¿+x @  ãK€è?d ¨lY(yl© @  ãL€è?d èlYªè{w @  ãM€è?d (mY>"Y` @  ãN€è?d hmY¼³N¾ @  ãO€è?d ¨mY»À} @  ãP€è?d èmY*×£ @  ãQ€è?d (nYNü:º @  ãR€è?d hnYÌm-d @  ãS€è?d ¨nY[?9Ð @  ãT€è?d ènYÙ®. @  ãU€è?d (oYMd  @  ãV€è?d hoYÏõÇ @  ãW€è?d ¨oYS\«ä @  ãX€è?d èoYÑͼ: @  ãY€è?d (pYKf` @  ãZ€ è?d hpYÉ÷¾ @  ã[€!è?d ¨pY^¥  @  ã\€"è?d èpYÜ4Ô @  ã]€#è?d (qYHþ à @  ã^€$è?d hqYÊo7 @  ã_€%è?d ¨qYêažn @  ã`€&è?d èqYhð‰° @  ãa€'è?d (rY)&d© @  ãb€(è?d hrY«·sw @  ãc€)è?d ¨rY<ågà @  ãd€*è?d èrY¾tp @  ãe€+è?d (sY*¾R  @  ãf€,è?d hsY¨/EÔ @  ãg€-è?d ¨sY4†õ÷ @  ãh€.è?d èsY¶â) @  ãi€/è?d (tY›> @  ãj€0è?d htY” )Ì @  ãk€1è?d ¨tYX=x @  ãl€2è?d ètYÉ*¦ @  ãm€3è?d (uY± @  ãn€4è?d huY—’o @  ão€5è?d ¨uY¦š‘¬ @  ãp€6è?d èuY$ †r @  ãq€7è?d (vYeÝkk @  ãr€8è?d hvYçL|µ @  ãs€9è?d ¨vYph @  ãt€:è?d èvYòß @  ãu€;è?d (wYfE]È @  ãv€<è?d hwYäÔJ @  ãw€=è?d ¨wYx}ú5 @  ãx€>è?d èwYúìíë @  ãy€?è?d (xY6b @  ãz€@è?d hxY˜§uÑ @  ã{€Aè?d ¨xYõae @  ã|€Bè?d èxYdv» @  ã}€Cè?d (yY®T¬ @  ã~€Dè?d hyY›?Cr @  ã€Eè?d ¨yYö`Ü¢ @  ã€€Fè?d èyYtñË| @  ã€Gè?d (zY5'&e @  ã‚€Hè?d hzY·¶1» @  ãƒ€Iè?d ¨zY ä% @  ã„€Jè?d èzY¢u2Ñ @  ã…€Kè?d ({Y6¿Æ @  ã†€Lè?d h{Y´. @  ã‡€Mè?d ¨{Y(‡·; @  ãˆ€Nè?d è{Yª å @  ã‰€Oè?d (|Y š|Þ @  ãŠ€Pè?d h|Yˆ k @  ã‹€Qè?d ¨|YY´ @  ãŒ€Rè?d è|YÈhj @  ã€Sè?d (}Y J} @  ãŽ€Tè?d h}Y‹“]£ @  ã€Uè?d ¨}Yº›Ó` @  ã€Vè?d è}Y8 ľ @  ã‘€Wè?d (~YyÜ)§ @  ã’€Xè?d h~YûM>y @  ã“€Yè?d ¨~Yl*Í @  ã”€Zè?d è~YîŽ= @  ã•€[è?d (YzD @  ã–€\è?d hYøÕÚ @  ã—€]è?d ¨YuЀY'd|¸ù @  ã˜€^è?d èYæí¯' @  ã™€_è?d @€Y¬&[» @  ãš€`è?d €€YŒÓYE @  ã›€aè?d À€Y¹åXÑ @  ãœ€bè?d Yi­Ô9 @  ã€cè?d @Y¯¾m @  ãž€dè?d €YKoæ @  ãŸ€eè?d ÀY !Óµ @  ã €fè?d ‚Yest @  ã¡€gè?d @‚YÎf)r @  ã¢€hè?d €‚Yî“+Œ @  ã£€iè?d À‚YÛ¥* @  ã¤€jè?d ƒY í¦ð @  ã¥€kè?d @ƒYÍþÑ @  ã¦€lè?d €ƒYí / @  ã§€mè?d ÀƒYÓÆ¸, @  ã¨€nè?d „YʈK# @  ã©€oè?d @„YñÛsÉ @  ãª€pè?d €„YÑ.q7 @  ã«€qè?d À„Yäp£ @  ã¬€rè?d …Y4PüK @  ã­€sè?d @…YòCEj @  ã®€tè?d €…YÒ¶G” @  ã¯€uè?d À…YAÚÜw @  ã°€vè?d †YÜž|¶ @  ã±€wè?d @†Y‚&° @  ã²€xè?d €†Y¢h$N @  ã³€yè?d À†Y—^%Ú @  ã´€zè?d ‡YG©2 @  ãµ€{è?d @‡Y @  ã¶€|è?d €‡Y¡ðí @  ã·€}è?d À‡YŸ=·î @  ã¸€~è?d ˆY«Â;ó @  ã¹€è?d @ˆYà°{F @  ãº€€è?d €ˆYÀEy¸ @  ã»€è?d ÀˆYõsx, @  ã¼€‚è?d ‰Y%;ôÄ @  ã½€ƒè?d @‰Yã(Må @  ã¾€„è?d €‰YÃÝO @  ã¿€…è?d À‰Yï°õÚ @  ãÀ€†è?d ŠYrôU @  ãÁ€‡è?d @ŠY,÷ @  ã€ˆè?d €ŠY  ã @  ãÀ‰è?d ÀŠY94 w @  ãÄ€Šè?d ‹Yé|€Ÿ @  ãÅ€‹è?d @‹Y/o9¾ @  ãÆ€Œè?d €‹Yš;@ @  ãÇ€è?d À‹Y1WžC @  ãÈ€Žè?d ŒY(mL @  ãÉ€è?d @ŒYJU¦ @  ãÊ€è?d €ŒY3¿WX @  ãË€‘è?d ÀŒY‰VÌ @  ãÌ€’è?d YÖÁÚ$ @  ãÍ€“è?d @YÒc @  ã΀”è?d €Y0'aû @  ãÏ€•è?d ÀY£Kú @  ãЀ–è?d ŽY>ZÙ @  ãÑ€—è?d @ŽY` ß @  ãÒ€˜è?d €ŽY@ù! @  ãÓ€™è?d ÀŽYuϵ @  ãÔ€šè?d Y¥‡] @  ãÕ€›è?d @Yc”6| @  ãÖ€œè?d €YCa4‚ @  ã×€è?d ÀY}¬‘ @  ãØ€žè?d YÃr-3 @  ãÙ€Ÿè?d @Ye–, @  ãÚ€ è?d €YEc.û @  ãÛ€¡è?d ÀYpU/o @  ãÜ€¢è?d ‘Y £‡ @  ãÝ€£è?d @‘Yf¦ @  ãÞ€¤è?d €‘YFûX @  ã߀¥è?d À‘YÄ‘¤  @  ãà€¦è?d ’YYÕÊ @  ãဧè?d @’YÖ^Ì @  ã
è?d€ €’Y¡uô‹ @  ä€©è?d À’Yu½6 @  ä€ªè?d “Y¥J1Þ @  ä€«è?d @“Y¦s @  ä€¬è?d €“Y†åqì @  ä€­è?d À“Yvš‹• @  ä€®è?d ”YoÔxš @  ä€¯è?d @”Yš5  @  ä€°è?d €”YºÀô @  ä €±è?d À”YJ¿ç @  ä €²è?d •Yš÷ke @  ä €³è?d @•Y™­)© @  ä €´è?d €•Y¹X+W @  ä €µè?d À•YI'Ñ. @  ä€¶è?d –YÔcqï @  ä€·è?d @–YésJs @  ä€¸è?d €–YɆH @  ä€¹è?d À–Y9ù²ô @  ä€ºè?d —Yé±> @  ä€»è?d @—Yêë|Ð @  ä€¼è?d €—YÊ~. @  ä€½è?d À—Y:a„W @  ä€¾è?d ˜YžJ @  ä€¿è?d @˜Y–˜C @  ä€Àè?d €˜Y¶mAé @  ä€Áè?d À˜YF» @  ä€Âè?d ™Y–Z7x @  ä€Ãè?d @™Y•u´ @  ä€Äè?d €™YµõwJ @  ä€Åè?d À™YEŠ3 @  ä€Æè?d šYØÎ-ò @  ä€Çè?d @šYôØ1Þ @  ä €Èè?d €šYÔ-3  @  ä!€Éè?d ÀšY$RÉY @  ä"€Êè?d ›YôE± @  ä#€Ëè?d @›Y÷@} @  ä$€Ìè?d €›Y×µƒ @  ä%€Íè?d À›Y'Êÿú @  ä&€Îè?d œY>„ õ @  ä'€Ïè?d @œYËeke @  ä(€Ðè?d €œYëi› @  ä)€Ñè?d ÀœYï“â @  ä*€Òè?d Y˧  @  ä+€Óè?d @YÈý]Æ @  ä,€Ôè?d €Yè_8 @  ä-€Õè?d ÀYw¥A @  ä.€Öè?d žY…3€ @  ä/€×è?d @žY¸#> @  ä0€Øè?d €žY˜Ö<â @  ä1€Ùè?d ÀžYh©Æ› @  ä2€Úè?d ŸY¸áJs @  ä3€Ûè?d @ŸY»»¿ @  ä4€Üè?d €ŸY›N A @  ä5€ÝèuРY?d ÀŸYk1ð8 @  ä6€Þè?d  Y:.^ @  ä7€ßè?d X Yrlp @  ä8€àè?d ˜ YR™rì @  ä9€áè?d Ø Y¢æˆ• @  ä:€âè?d ¡Yr®} @  ä;€ãè?d X¡YqôF± @  ä<€äè?d ˜¡YQDO @  ä=€åè?d Ø¡Y¡~¾6 @  ä>€æè?d ¢Y<:÷ @  ä?€çè?d X¢Y¾+I @  ä@€èè?d ˜¢YžÞ· @  äA€éè?d Ø¢Yn¡üÎ @  äB€êè?d £Y¾ép& @  äC€ëè?d X£Y½³2ê @  äD€ìè?d ˜£YF0 @  äE€íè?d Ø£Ym9Êm @  äF€îè?d ¤Ytw9b @  äG€ïè?d X¤Y–^ò @  äH€ðè?d ˜¤Y¡c\  @  äI€ñè?d ؤYQ¦u @  äJ€òè?d ¥YT* @  äK€óè?d X¥Y‚hQ @  äL€ôè?d ˜¥Y¢ûj¯ @  äM€õè?d Ø¥YR„Ö @  äN€öè?d ¦YÏÀ0 @  äO€÷è?d X¦YòÐ ‹ @  äP€øè?d ˜¦YÒ% u @  äQ€ùè?d ئY"Zó  @  äR€úè?d §Yòä @  äS€ûè?d X§YñH=( @  äT€üè?d ˜§Yѽ?Ö @  äU€ýè?d اY!Âů @  äV€þè?d ¨Y=I² @  äW€ÿè?d X¨Yïšq @  äX€é?d ˜¨YÏo @  äY€é?d بY?ûö @  äZ€é?d ©YïXw @  ä[€é?d X©Yì5Ò @  ä\€é?d ˜©YÌ÷7, @  ä]€é?d Ø©Y<ˆÍU @  ä^€é?d ªY¡Ìm” @  ä_€é?d XªYÚq¸ @  ä`€é?d ˜ªY­/sF @  äa€ é?d تY]P‰? @  äb€ é?d «Y× @  äc€ é?d X«YŽBG @  äd€ é?d ˜«Y®·Eå @  äe€ é?d Ø«Y^È¿œ @  äf€é?d ¬YG†L“ @  äg€é?d X¬Y²g+ @  äh€é?d ˜¬Y’’)ý @  äi€é?d جYbíÓ„ @  äj€é?d ­Y²¥_l @  äk€é?d X­Y±ÿ  @  äl€é?d ˜­Y‘ ^ @  äm€é?d Ø­Yauå' @  än€é?d ®Yü1Eæ @  äo€é?d X®YÁ!~z @  äp€é?d ˜®YáÔ|„ @  äq€é?d Ø®Y«†ý @  är€é?d ¯YÁã  @  äs€é?d X¯Y¹HÙ @  ät€é?d ˜¯YâLJ' @  äu€é?d دY3°^ @  äv€é?d °Y¬í ì @  äw€é?d X°YÄ»R  @  äx€ é?d ˜°YäNP^ @  äy€!é?d ذY1ª' @  äz€"é?d ±YÄy&Ï @  ä{€#é?d X±YÇ#d @  ä|€$é?d ˜±YçÖfý @  ä}€%é?d رY©œ„ @  ä~€&é?d ²YŠíé?d ¸Y@¼[1 @  ä—€?é?d X¸Yغl @  ä˜€@é?d ˜¸YøO’ @  ä™€Aé?d ظY0èë @  äš€Bé?d ¹YØxd @  ä›€Cé?d X¹YÛ"&Ï @  äœ€Dé?d ˜¹Yû×$1 @  ä€Eé?d عY ¨ÞH @  äž€Fé?d ºY–ì~‰ @  äŸ€Gé?d XºYºúb¥ @  ä €Hé?d ˜ºYš`[ @  ä¡€Ié?d غYjpš" @  ä¢€Jé?d »Yº8Ê @  ä£€Ké?d X»Y¹bT @  ä¤€Lé?d ˜»Y™—Vø @  ä¥€Mé?d Ø»Yiè¬ @  ä¦€Né?d ¼Yp¦_Ž @  ä§€Oé?d X¼Y…G8 @  ä¨€Pé?d ˜¼Y¥²:à @  ä©€Qé?d ؼYUÍÀ™ @  äª€Ré?d ½Y……Lq @  ä«€Sé?d X½Y†ß½ @  ä¬€Té?d ˜½Y¦* C @  ä­€Ué?d ؽYVUö: @  ä®€Vé?d ¾YËVû @  ä¯€Wé?d X¾Yömg @  ä°€Xé?d ˜¾YÖôo™ @  ä±€Yé?d ؾY&‹•à @  ä²€Zé?d ¿Yöà @  ä³€[é?d X¿Yõ™[Ä @  ä´€\é?d ˜¿YÕlY: @uÐÀY  äµ€]é?d Ø¿Y%£C @  ä¶€^é?d 0ÀYAãò @  ä·€_é?d pÀY)µ¬] @  ä¸€`é?d °ÀY @®£ @  ä¹€aé?d ðÀYù?TÚ @  äº€bé?d 0ÁY)wØ2 @  ä»€cé?d pÁY*-šþ @  ä¼€dé?d °ÁY ؘ @  ä½€eé?d ðÁYú§by @  ä¾€fé?d 0ÂYg㸠@  ä¿€gé?d pÂYåòØ @  äÀ€hé?d °ÂYÅÚø @  äÁ€ié?d ðÂY5x  @  ä€jé?d 0ÃYå0¬i @  äÀké?d pÃYæjî¥ @  äÄ€lé?d °ÃYÆŸì[ @  äÅ€mé?d ðÃY6à" @  äÆ€né?d 0ÄY/®å- @  äÇ€oé?d pÄYÚO‚½ @  äÈ€pé?d °ÄYúº€C @  äÉ€qé?d ðÄY Åz: @  äÊ€ré?d 0ÅYÚöÒ @  äË€sé?d pÅYÙ×´ @  äÌ€té?d °ÅYù"¶à @  äÍ€ué?d ðÅY ]L™ @  ä΀vé?d 0ÆY”ìX @  äÏ€wé?d pÆY© ×Ä @  äЀxé?d °ÆY‰üÕ: @  äÑ€yé?d ðÆYyƒ/C @  äÒ€zé?d 0ÇY©Ë£« @  äÓ€{é?d pÇYª‘ág @  äÔ€|é?d °ÇYŠdã™ @  äÕ€}é?d ðÇYzà @  äÖ€~é?d 0ÈYNä•ý @  ä×€é?d pÈYË$Š2 @  äØ€€é?d °ÈYëшÌ @  äÙ€é?d ðÈY®rµ @  äÚ€‚é?d 0ÉYËæþ] @  äÛ€ƒé?d pÉYȼ¼‘ @  äÜ€„é?d °ÉYèI¾o @  äÝ€…é?d ðÉY6D @  äÞ€†é?d 0ÊY…rä× @  ä߀‡é?d pÊY©døû @  äà€ˆé?d °ÊY‰‘ú @  äဉé?d ðÊYyî| @  ä é?d€ 0ËYÝe2 @  å€‹é?d pËY?~š× @  å€Œé?d °ËY‹˜) @  å€é?d ðËY*½™½ @  å€Žé?d 0ÌY3ój² @  å€é?d pÌY RX @  å€é?d °ÌY(UP¦ @  å€‘é?d ðÌY˜õ¥ @  å€’é?d 0ÍYÆÐyM @  å €“é?d pÍYÃÀl @  å €”é?d °ÍY 6Â’ @  å €•é?d ðÍYà @  å €–é?d 0ÎYˆDcÇ @  å €—é?d pÎYÖG9Á @  å€˜é?d °ÎYö²;? @  å€™é?d ðÎYeÞ Ü @  å€šé?d 0ÏYµ–,4 @  å€›é?d pÏYs…• @  å€œé?d °ÏYSp—ë @  å€é?d ðÏYfF– @  å€žé?d 0ÐYؘ*Í @  å€Ÿé?d pÐY~|+û @  å€ é?d °ÐY^‰) @  å€¡é?d ðÐY`DŒ @  å€¢é?d 0ÑY° î @  å€£é?d pÑYv¹Ï @  å€¤é?d °ÑYVê»1 @  å€¥é?d ðÑYcܺ¥ @  å€¦é?d 0ÒYþ˜d @  å€§é?d pÒY ›@b @  å€¨é?d °ÒY€nBœ @  å€©é?d ðÒYþÏ @  å €ªé?d 0ÓYÒLr' @  å!€«é?d pÓY_Ë @  å"€¬é?d °ÓY4ªÉø @  å#€­é?d ðÓYœÈl @  å$€®é?d 0ÔYÒ;c @  å%€¯é?d pÔY#‰ @  å&€°é?d °ÔYtw @  å'€±é?d ðÔY=¹¤t @  å(€²é?d 0ÕYíñ(œ @  å)€³é?d pÕY+⑽ @  å*€´é?d °ÕY “C @  å+€µé?d ðÕY>!’× @  å,€¶é?d 0ÖY£e2 @  å-€·é?d pÖYýfh @  å.€¸é?d °ÖYÝ“jî @  å/€¹é?d ðÖYNÿñ  @  å0€ºé?d 0×Yž·}å @  å1€»é?d p×YX¤ÄÄ @  å2€¼é?d °×YxQÆ: @  å3€½é?d ð×YMgÇ® @  å4€¾é?d 0ØYy˜K³ @  å5€¿é?d pØY/,_” @  å6€Àé?d °ØYÙ]j @  å7€Áé?d ðØY1øi @  å8€Âé?d 0ÙYá\t @  å9€Ãé?d pÙY'OÍ  @  å:€Äé?d °ÙYºÏ^ @  å;€Åé?d ðÙY2ŒÎÊ @  å<€Æé?d 0ÚY¯Èn  @  å=€Çé?d pÚYñË4  @  å>€Èé?d °ÚYÑ>6ó @  å?€Éé?d ðÚYýSŒ2 @  å@€Êé?d 0ÛY-Ú @  åA€Ëé?d pÛYë¹û @  åB€Ìé?d °ÛYËý» @  åC€Íé?d ðÛYþ˺‘ @  åD€Îé?d 0ÜYç…Iž @  åE€Ïé?d pÜYÜÖqt @  åF€Ðé?d °ÜYü#sŠ @  åG€Ñé?d ðÜYÂîÖ‰ @  åH€Òé?d 0ÝY¦Za @  åI€Óé?d pÝYÔµã@ @  åJ€Ôé?d °ÝYô@á¾ @  åK€Õé?d ðÝYÁvà* @  åL€Öé?d 0ÞY\2@ë @  åM€×é?d pÞY1í @  åN€Øé?d °ÞY"Ä @  åO€Ùé?d ðÞY±¨ƒð @  åP€Úé?d 0ßYaà @  åQ€Ûé?d pßY§ó¶9 @  åR€Üé?d uÐàY/°ßY‡´Ç @  åS€Ýé?d ðßY²0µS @  åT€Þé?d HàY«”ë¥ @  åU€ßé?d ˆàY¯ÿ³ @  åV€àé?d ÈàY-…èm @  åW€áé?d áYA‘ÖX @  åX€âé?d HáYÃÁ† @  åY€ãé?d ˆáY§wm‡ @  åZ€äé?d ÈáY%æzY @  å[€åé?d âYÌÒ @  å\€æé?d HâY”Û  @  å]€çé?d ˆâYqó”* @  å^€èé?d ÈâYóbƒô @  å_€éé?d ãY#Ѥ‘ @  å`€êé?d HãY¡@³O @  åa€ëé?d ˆãYÅ7N @  åb€ìé?d ÈãYG¦ @  åc€íé?d äYéOíÕ @  åd€îé?d HäYkÞú  @  åe€ïé?d ˆäYòé×Á @  åf€ðé?d ÈäYpxÀ @  åg€ñé?d åYlþ* @  åh€òé?d HåYžýéô @  åi€óé?d ˆåYúŠEõ @  åj€ôé?d ÈåYxR+ @  åk€õé?d æYRøä  @  ål€öé?d HæYÐió~ @  åm€÷é?d ˆæY,¼X @  ån€øé?d ÈæY®Ÿ«† @  åo€ùé?d çYo*«S @  åp€úé?d HçYí»¼ @  åq€ûé?d ˆçY‰ÌŒ @  år€üé?d ÈçY ]R @  ås€ýé?d èYˆ @  åt€þé?d HèY ”ŠÛ @  åu€ÿé?d ˆèY.Ç¿g @  åv€ê?d ÈèY¬V¨¹ @  åw€ê?d éYÀB–Œ @  åx€ê?d HéYBÓR @  åy€ê?d ˆéY&¤-S @  åz€ê?d ÈéY¤5: @  å{€ê?d êYŽÖŒ @  å|€ê?d HêY G›Ø @  å}€ê?d ˆêYð Ôþ @  å~€ê?d ÈêYr±Ã  @  å€ ê?d ëYïSÒæ @  å€€ ê?d HëYmÂÅ8 @  å€ ê?d ˆëY µi9 @  å‚€ ê?d ÈëY‹$~ç @  åƒ€ ê?d ìY%Í›¢ @  å„€ê?d HìY§\Œ| @  å…€ê?d ˆìY>k¡¶ @  å†€ê?d ÈìY¼ú¶h @  å‡€ê?d íYÐîˆ] @  åˆ€ê?d HíYRŸƒ @  å‰€ê?d ˆíY63‚ @  åŠ€ê?d ÈíY´™$\ @  å‹€ê?d îYžz’× @  åŒ€ê?d HîYë…  @  å€ê?d ˆîYàŒÊ/ @  åŽ€ê?d ÈîYbÝñ @  å€ê?d ïY£¨Ý$ @  å€ê?d HïY!9Êú @  å‘€ê?d ˆïYENfû @  å’€ê?d ÈïYÇßq% @  å“€ê?d ðYΦÛÝ @  å”€ê?d HðYL7Ì @  å•€ê?d ˆðYH·Ø @  å–€ ê?d ÈðYÊ&ÏË @  å—€!ê?d ñY¦2ñþ @  å˜€"ê?d HñY$£æ  @  å™€#ê?d ˆñY@ÔJ! @  åš€$ê?d ÈñYÂE]ÿ @  å›€%ê?d òYè¦ët @  åœ€&ê?d HòYj7üª @  å€'ê?d ˆòY–P³Œ @  åž€(ê?d ÈòYÁ¤R @  åŸ€)ê?d óYÄrƒ7 @  å €*ê?d HóYFã”é @  å¡€+ê?d ˆóY"”8è @  å¢€,ê?d ÈóY /6 @  å£€-ê?d ôYìÊs @  å¤€.ê?d HôYŒ}Ý­ @  å¥€/ê?d ˆôYJðg @  å¦€0ê?d ÈôY—Ûç¹ @  å§€1ê?d õYûÏÙŒ @  å¨€2ê?d HõYy^ÎR @  å©€3ê?d ˆõY)bS @  åª€4ê?d ÈõYŸ¸u @  å«€5ê?d öYµ[à @  å¬€6ê?d HöY7ÊÔØ @  å­€7ê?d ˆöYË­›þ @  å®€8ê?d ÈöYI<Œ  @  å¯€9ê?d ÷Yˆ‰Œõ @  å°€:ê?d H÷Y ›+ @  å±€;ê?d ˆ÷Yno7* @  å²€<ê?d È÷Yìþ ô @  å³€=ê?d øYo¦º£ @  å´€>ê?d HøYí7­} @  åµ€?ê?d ˆøYç¬z @  å¶€@ê?d ÈøY›v»¤ @  å·€Aê?d ùY÷b…‘ @  å¸€Bê?d HùYuó’O @  å¹€Cê?d ˆùY„>N @  åº€Dê?d ÈùY“) @  å»€Eê?d úY¹öŸ @  å¼€Fê?d HúY;gˆÅ @  å½€Gê?d ˆúYÇÇã @  å¾€Hê?d ÈúYE‘Ð= @  å¿€Iê?d ûY;%ñÊ @  åÀ€Jê?d HûY¹´æ @  åÁ€Kê?d ˆûYÝÃJ @  å€Lê?d ÈûY_R]Ë @  åÀMê?d üYñ»¸Ž @  åÄ€Nê?d HüYs*¯P @  åÅ€Oê?d ˆüYꂚ @  åÆ€Pê?d ÈüYhŒ•D @  åÇ€Qê?d ýY˜«q @  åÈ€Rê?d HýY† ¼¯ @  åÉ€Sê?d ˆýYâ~® @  åÊ€Tê?d ÈýY`ïp @  åË€Uê?d þYJ ±û @  åÌ€Vê?d HþYȦ% @  åÍ€Wê?d ˆþY4úé @  å΀Xê?d ÈþY¶kþÝ @  åÏ€Yê?d ÿYwÞþ @  åЀZê?d HÿYõOéÖ @  åÑ€[ê?d ˆÿY‘8E× @  åÒ€uÐZ\ê?d ÈÿY©R  @  åÓ€]ê?d Z ÿ T @  åÔ€^ê?d `Z"nŠ @  åÕ€_ê?d  Z&îœ @  åÖ€`ê?d àZ¤B @  å×€aê?d ZÈk&w @  åØ€bê?d `ZJú1© @  åÙ€cê?d  Z.¨ @  åÚ€dê?d àZ¬Šv @  åÛ€eê?d Z†ÿ<ý @  åÜ€fê?d `Zn+# @  åÝ€gê?d  Zø d @  åÞ€hê?d àZz˜sÛ @  å߀iê?d Zª+T¾ @  åà€jê?d `Z(ºC` @  åá€kê?d  ZLÍïa @  åâ€lê?d€ àZ¿ @  æ€mê?d Z@³¢Ó @  æ€nê?d `ZÂ"µ  @  æ€oê?d  Zž\c* @  æ€pê?d àZÍtô @  æ€qê?d Z¾k» @  æ€rê?d `Z<úe @  æ€sê?d  Z–?ñ @  æ€tê?d àZ®æÀ @  æ €uê?d Zû«¦ @  æ €vê?d `Zy•¼x @  æ €wê?d  Z@»³ @  æ €xê?d àZÂ*m @  æ €yê?d Z`Œ~" @  æ€zê?d `Zâiü @  æ€{ê?d  Zåy¤g @  æ€|ê?d àZgè³¹ @  æ€}ê?d Z!ùÒ @  æ€~ê?d `Z£hÅÝ @  æ€ê?d  Z7k¥ @  æ€€ê?d àZ ¦|{ @  æ€ê?d Z¯4 @  æ€‚ê?d ` Z-‘ ê @  æ€ƒê?d   Z‡Tù‘ @  æ€„ê?d à ZÅîO @  æ€…ê?d Zêo£) @  æ€†ê?d ` Zhþ´÷ @  æ€‡ê?d   ZQÐ< @  æ€ˆê?d à ZÓAâ @  æ€‰ê?d Zqçv­ @  æ€Šê?d ` Zóvas @  æ€‹ê?d   Zå‹X @  æ €Œê?d à Zg…œ† @  æ!€ê?d Z %‚. @  æ"€Žê?d ` ZŽ´•ð @  æ#€ê?d   ZÒÊC× @  æ$€ê?d à ZP[T  @  æ%€‘ê?d Zòý5F @  æ&€’ê?d ` Zpl"˜ @  æ'€“ê?d   ZÚ©Ñã @  æ(€”ê?d à ZX8Æ= @  æ)€•ê?d Z·’‹[ @  æ*€–ê?d `Z5œ… @  æ+€—ê?d  Z -(N @  æ,€˜ê?d àZ޼? @  æ-€™ê?d Z,^ß @  æ.€šê?d `Z®‹I @  æ/€›ê?d  Z©ï„š @  æ0€œê?d àZ+~“D @  æ1€ê?d ZçNÂQ @  æ2€žê?d `ZeßÕ @  æ3€Ÿê?d  Z¤:t @  æ4€ ê?d àZ&‡-ª @  æ5€¡ê?d Z„!Lå @  æ6€¢ê?d `Z°[; @  æ7€£ê?d  Z¬u¨@ @  æ8€¤ê?d àZ.俞 @  æ9€¥ê?d ZÁNòø @  æ:€¦ê?d `ZCßå& @  æ;€§ê?d  ZzñQí @  æ<€¨ê?d àZø`F3 @  æ=€©ê?d ZZÆ'| @  æ>€ªê?d `ZØW0¢ @  æ?€«ê?d  Z`2Ü @  æ@€¬ê?d àZâ£ËÅ @  æA€­ê?d Z‰Õm @  æB€®ê?d `Z ’³ @  æC€¯ê?d  ZWì” @  æD€°ê?d àZÕ}J @  æE€±ê?d ZwÛb @  æF€²ê?d `ZõJuÛ @  æG€³ê?d  Z_†  @  æH€´ê?d àZÝ‘~ @  æI€µê?d Z2´Ü @  æJ€¶ê?d `Z°%ËÆ @  æK€·ê?d  Z‰   @  æL€¸ê?d àZ šhÓ @  æM€¹ê?d Z©< œ @  æN€ºê?d `Z+­B @  æO€»ê?d  Z,ÉÓÙ @  æP€¼ê?d àZ®XÄ @  æQ€½ê?d ZèI¥½ @  æR€¾ê?d `Zjزc @  æS€¿ê?d  Z[AH‰ @  æT€Àê?d àZÙÐ_W @  æU€Áê?d Z{v> @  æV€Âê?d `Zùç)Æ @  æW€Ãê?d  ZS"Ú½ @  æX€Äê?d àZѳÍc @  æY€Åê?d Z>€ @  æZ€Æê?d `Z¼ˆ—Û @  æ[€Çê?d  Z…¦# @  æ\€Èê?d àZ74Î @  æ]€Éê?d Z¥‘U @  æ^€Êê?d `Z'B_ @  æ_€Ëê?d  Z1b¨t @  æ`€Ìê?d àZ³ó¿ª @  æa€Íê?d ZØS¡ @  æb€Îê?d `ZZ¶Ü @  æc€Ïê?d  Z¼`û @  æd€Ðê?d àZ„-w% @  æe€Ñê?d Z&‹j @  æf€Òê?d `Z¤´ @  æg€Óê?d  ZßòÏ @  æh€Ôê?d àZŒNå @  æi€Õê?d Zcä¨w @  æj€Öê?d `Záu¿© @  æk€×ê?d  ZØ[ b @  æl€Øê?d àZZʼ @  æm€Ùê?d Zøl}ó @  æn€Úê?d `Zzýj- @  æo€Ûê?d  Z}™§¶uÐ Z @  æp€Üê?d àZÿ°h @  æq€Ýê?d 8 Zü탩 @  ær€Þê?d x Z~|”w @  æs€ßê?d ¸ Z¿µ{Œ @  æt€àê?d ø Z=$lR @  æu€áê?d 8!ZŸ‚  @  æv€âê?d x!Zà @  æw€ãê?d ¸!Z·Öé¸ @  æx€äê?d ø!Z5Gþf @  æy€åê?d 8"ZÚí³ @  æz€æê?d x"ZX|¤Þ @  æ{€çê?d ¸"ZaR @  æ|€èê?d ø"ZãÃË @  æ}€éê?d 8#ZAef„ @  æ~€êê?d x#ZÃôqZ @  æ€ëê?d ¸#Z˜Ç­Ò @  æ€€ìê?d ø#ZVº  @  æ€íê?d 8$Zqö¤¤ @  æ‚€îê?d x$Zóg³z @  æƒ€ïê?d ¸$Z¯e] @  æ„€ðê?d ø$Z-ˆrƒ @  æ…€ñê?d 8%Z.Ì @  æ†€òê?d x%Z ¿ @  æ‡€óê?d ¸%Z§z÷i @  æˆ€ôê?d ø%Z%ëà· @  æ‰€õê?d 8&ZÊA­Ñ @  æŠ€öê?d x&ZHк @  æ‹€÷ê?d ¸&ZqþÄ @  æŒ€øê?d ø&Zóo @  æ€ùê?d 8'ZQÉxU @  æŽ€úê?d x'ZÓXo‹ @  æ€ûê?d ¸'ZÔ<¢ @  æ€üê?d ø'ZV­µÎ @  æ‘€ýê?d 8(Z¼Ôt @  æ’€þê?d x(Z’-ê @  æ“€ÿê?d ¸(ZÁ8Þ @  æ”€ë?d ø(ZC„/ @  æ•€ë?d 8)Zá"NO @  æ–€ë?d x)Zc³Y‘ @  æ—€ë?d ¸)ZÉvªê @  æ˜€ë?d ø)ZKç½4 @  æ™€ë?d 8*Z¤MðR @  æš€ë?d x*Z&ÜçŒ @  æ›€ë?d ¸*ZòSG @  æœ€ë?d ø*ZcD™ @  æ€ ë?d 8+Z?Å%Ö @  æž€ ë?d x+Z½T2 @  æŸ€ ë?d ¸+Z«6Ø# @  æ € ë?d ø+Z)§Ïý @  æ¡€ ë?d 8,ZBÑU @  æ¢€ë?d x,ZÀ–Æ‹ @  æ£€ë?d ¸,Zœè¬ @  æ¤€ë?d ø,Zyr @  æ¥€ë?d 8-Z¼ßf= @  æ¦€ë?d x-Z>Nqã @  æ§€ë?d ¸-Z”‹‚˜ @  æ¨€ë?d ø-Z•F @  æ©€ë?d 8.Zù°Ø  @  æª€ë?d x.Z{!Ïþ @  æ«€ë?d ¸.ZB{5 @  æ¬€ë?d ø.ZÀžlë @  æ­€ë?d 8/Zb8 ¤ @  æ®€ë?d x/Zà©z @  æ¯€ë?d ¸/ZçÍ×á @  æ°€ë?d ø/Ze\À? @  æ±€ë?d 80Z©l‘* @  æ²€ë?d x0Z+ý†ô @  æ³€ë?d ¸0Zê4i @  æ´€ ë?d ø0Zh¥~Ñ @  æµ€!ë?d 81ZÊž @  æ¶€"ë?d x1ZH’@ @  æ·€#ë?d ¸1ZâWû; @  æ¸€$ë?d ø1Z`Æìå @  æ¹€%ë?d 82Zl¡ƒ @  æº€&ë?d x2Z ý¶] @  æ»€'ë?d ¸2Z4Ó– @  æ¼€(ë?d ø2Z¶BH @  æ½€)ë?d 83Zät @  æ¾€*ë?d x3Z–ucÙ @  æ¿€+ë?d ¸3Z.` @  æÀ€,ë?d ø3Z¬˜¾ @  æÁ€-ë?d 84ZÇ!† @  æ€.ë?d x4ZE°‘È @  æÀ/ë?d ¸4ZÎGï @  æÄ€0ë?d ø4Z›_P1 @  æÅ€1ë?d 85Z9ù1~ @  æÆ€2ë?d x5Z»h&  @  æÇ€3ë?d ¸5Z­ÕÛ @  æÈ€4ë?d ø5Z“< @  æÉ€5ë?d 86Z|–c @  æÊ€6ë?d x6Zþ˜½ @  æË€7ë?d ¸6ZÇ),v @  æÌ€8ë?d ø6ZE¸;¨ @  æÍ€9ë?d 87ZçZç @  æ΀:ë?d x7ZeM9 @  æÏ€;ë?d ¸7Zb뀢 @  æЀ<ë?d ø7Zàz—| @  æÑ€=ë?d 88Z¦köÆ @  æÒ€>ë?d x8Z$úá @  æÓ€?ë?d ¸8Zcò @  æÔ€@ë?d ø8Z—ò , @  æÕ€Aë?d 89Z5Tmc @  æÖ€Bë?d x9Z·Åz½ @  æ×€Cë?d ¸9Z‰Æ @  æØ€Dë?d ø9ZŸ‘ž @  æÙ€Eë?d 8:Zp;Ó~ @  æÚ€Fë?d x:ZòªÄ  @  æÛ€Gë?d ¸:ZË„pk @  æÜ€Hë?d ø:ZIgµ @  æÝ€Ië?d 8;Zë³ú @  æÞ€Jë?d x;Zi"$ @  æ߀Kë?d ¸;Z@û @  æà€Lë?d ø;ZýÑìÑ @  æá€Më?d 8Z} Tn @  ç€Vë?d x>ZÿœC° @  ç €Wë?d ¸>Zû – @  ç €Xë?d ø>ZjH @  ç €Yë?d 8?Zæ…ê @  ç €Zë?d x?Zd–4 @  ç €[ë?duÐ@Z7 ¸?Zc:5 @  ç€\ë?d ø?Zÿr^— @  ç]ë?d P@Z-#h– @  ç^ë?d @Z Öjh @  ç_ë?d Ð@Z«2k^ @  ç`ë?d AZ{zç¶ @  çaë?d PAZNLæ" @  çbë?d AZn¹äÜ @  çcë?d ÐAZ¨ª]ý @  çdë?d BZ5îý< @  çeë?d PBZ #X? @  çfë?d BZ+ÖZÁ @  çgë?d ÐBZuÕÇ @  çhë?d CZ¥Œ/ @  çië?d PCZ«» @  çjë?d CZ°^E @  çkë?d ÐCZvM6d @  çlë?d DZoÅk @  çmë?d PDZíiy8 @  ç në?d DZÍœ{Æ @  ç!oë?d ÐDZöÏC, @  ç"pë?d EZ&‡ÏÄ @  ç#që?d PEZ±ÎP @  ç$rë?d EZ3DÌ® @  ç%së?d ÐEZõWu @  ç&të?d FZhÕN @  ç'uë?d PFZVÞpM @  ç(vë?d FZv+r³ @  ç)wë?d ÐFZ(((µ @  ç*xë?d GZø`¤] @  ç+yë?d PGZÍV¥É @  ç,zë?d GZí£§7 @  ç-{ë?d ÐGZ+° @  ç.|ë?d HZO’  @  ç/}ë?d PHZŒ# è @  ç0~ë?d HZ¬Ö  @  ç1ë?d ÐHZç¤K£ @  ç2€ë?d IZ7ìÇK @  ç3ë?d PIZÚÆß @  ç4‚ë?d IZ"/Ä! @  ç5ƒë?d ÐIZä<} @  ç6„ë?d JZyxÝÁ @  ç7…ë?d PJZGµx @  ç8†ë?d JZg@z< @  ç9‡ë?d ÐJZ9C : @  ç:ˆë?d KZé ¬Ò @  ç;‰ë?d PKZÜ=­F @  ç<Šë?d KZüȯ¸ @  ç=‹ë?d ÐKZ:Û™ @  ç>Œë?d LZ#•å– @  ç?ë?d PLZø_W @  ç@Žë?d LZ/ ]© @  çAë?d ÐLZ^eC @  çBë?d MZÄé« @  çC‘ë?d PMZñ è? @  çD’ë?d MZÑÕêÁ @  çE“ë?d ÐMZÆSà @  çF”ë?d NZŠ‚ó! @  çG•ë?d PNZ´OV" @  çH–ë?d NZ”ºTÜ @  çI—ë?d ÐNZʹÚ @  çJ˜ë?d OZñ‚2 @  çK™ë?d POZ/ǃ¦ @  çLšë?d OZ2X @  çM›ë?d ÐOZÉ!8y @  çNœë?d PZwÿ„Ë @  çOë?d PPZä“( @  çPžë?d PZÄfÖ @  çQŸë?d ÐPZb‚à @  çR ë?d QZ²Ê @  çS¡ë?d PQZ‡ü‘œ @  çT¢ë?d QZ§ “b @  çU£ë?d ÐQZa*C @  çV¤ë?d RZü^Š‚ @  çW¥ë?d PRZ“/ @  çX¦ë?d RZâf- @  çY§ë?d ÐRZ¼ewy @  çZ¨ë?d SZl-û‘ @  ç[©ë?d PSZYú @  ç\ªë?d SZyîøû @  ç]«ë?d ÐSZ¿ýAÚ @  ç^¬ë?d TZ¦³²Õ @  ç_­ë?d PTZ$Ù† @  ç`®ë?d TZ, x @  ça¯ë?d ÐTZ?4’ @  çb°ë?d UZï7¸z @  çc±ë?d PUZÚ¹î @  çd²ë?d UZ8]\Å @  çe³ë?d ÐUZþNåä @  çf´ë?d VZc E% @  çgµë?d PVZ]Çà& @  çh¶ë?d VZ}2âØ @  çi·ë?d ÐVZ#1¸Þ @  çj¸ë?d WZóy46 @  çk¹ë?d PWZÆO5¢ @  çlºë?d WZæº7\ @  çm»ë?d ÐWZ ©Ž} @  çn¼ë?d XZV` @  ço½ë?d PXZ‡:™ƒ @  çp¾ë?d XZ§Ï›} @  çq¿ë?d ÐXZñ{Z @  çrÀë?d YZ!3² @  çsÁë?d PYZ& @  çtÂë?d YZ4ðØ @  çuÃë?d ÐYZòã¹ù @  çvÄë?d ZZo§8 @  çwÅë?d PZZQj¼; @  çxÆë?d ZZqŸ¾Å @  çyÇë?d ÐZZ/œäà @  çzÈë?d [ZÿÔh+ @  ç{Éë?d P[ZÊâi¿ @  ç|Êë?d [ZêkA @  ç}Ëë?d Ð[Z,Ò` @  ç~Ìë?d \Z5J!o @  çÍë?d P\Zúq«Ÿ @  ç€Îë?d \ZÚ„©a @  çÏë?d Ð\Záב‹ @  ç‚Ðë?d ]Z1Ÿc @  çƒÑë?d P]Z©÷ @  ç„Òë?d ]Z$\  @  ç…Óë?d Ð]ZâO§( @  ç†Ôë?d ^Z é @  ç‡Õë?d P^ZAÆ¢ê @  çˆÖë?d ^Za3  @  ç‰×ë?d Ð^Z?0ú @  çŠØë?d _Zïxvú @  ç‹Ùë?d P_ZÚNwn @  çŒÚë?d _Zú»u @  çuÐ`ZÛë?d Ð_Zþ+d @  çŽÜë?d (`Z@ùžü @  çÝë?d h`ZÓ• @  çÞë?d ¨`Zó`á @  ç‘ßë?d è`ZU„× @  ç’àë?d (aZ…ÌŠ? @  ç“áë?d haZ°ú‹« @  ç”âë?d ¨aZR¦n€ @  ç•ãë?d èaZ+œC @  ç–€äë?d (bZ¶ØãÉ @  ç—€åë?d hbZˆFÊ @  ç˜€æë?d ¨bZÕ`7H @  ç™çë?d èbZöã2 @  çš€èë?d (cZ&«’Ú @  ç›€éë?d hcZ“N @  çœ€êë?d ¨cZ3h‘° @  ç€ëë?d ècZõ{(‘ @  çž€ìë?d (dZì5Ûž @  çŸ€íë?d hdZn_gÍ @  ç €îë?d ¨dZNªe3 @  ç¡€ïë?d èdZuù]Ù @  ç¢€ðë?d (eZ¥±Ñ1 @  ç£€ñë?d heZ‡Ð¥ @  ç¤€òë?d ¨eZ°rÒ[ @  ç¥€óë?d èeZvakz @  ç¦€ôë?d (fZë%Ë» @  ç§€õë?d hfZÕèn¸ @  ç¨€öë?d ¨fZõlF @  ç©€÷ë?d èfZ«6@ @  çª€øë?d (gZ{Vº¨ @  ç«€ùë?d hgZN`»< @  ç¬€úë?d ¨gZn•¹Â @  ç­€ûë?d ègZ¨†ã @  ç®€üë?d (hZœyŒþ @  ç¯€ýë?d hhZ @  ç°€þë?d ¨hZ/àã @  ç±€ÿë?d èhZ'ü?Ì @  ç²€ì?d (iZ÷´³$ @  ç³€ì?d hiZ‚²° @  ç´€ì?d ¨iZâw°N @  çµ€ì?d èiZ$d o @  ç¶€ì?d (jZ¹ ©® @  ç·€ì?d hjZ‡í ­ @  ç¸€ì?d ¨jZ§S @  ç¹€ì?d èjZùTU @  çº€ì?d (kZ)Sؽ @  ç»€ ì?d hkZeÙ) @  ç¼€ ì?d ¨kZ<Û× @  ç½€ ì?d èkZúƒbö @  ç¾€ ì?d (lZãÍ‘ù @  ç¿€ ì?d hlZÏ +8 @  çÀ€ì?d ¨lZïU)Æ @  çÁ€ì?d èlZÔ, @  ç€ì?d (mZNÄ @  çÀì?d hmZ1xœP @  çÄ€ì?d ¨mZž® @  çÅ€ì?d èmZמ' @  çÆ€ì?d (nZJÚ‡N @  çÇ€ì?d hnZt"M @  çÈ€ì?d ¨nZTâ ³ @  çÉ€ì?d ènZ ázµ @  çÊ€ì?d (oZÚ©ö] @  çË€ì?d hoZïŸ÷É @  çÌ€ì?d ¨oZÏjõ7 @  çÍ€ì?d èoZ yL @  ç΀ì?d (pZ·§ð¤ @  çÏ€ì?d hpZ$ËkG @  çЀì?d ¨pZ>i¹ @  çÑ€ì?d èpZ¢Úh @  çÒ€ ì?d (qZr’äg @  çÓ€!ì?d hqZG¤åó @  çÔ€"ì?d ¨qZgQç  @  çÕ€#ì?d èqZ¡B^, @  çÖ€$ì?d (rZ<þí @  ç×€%ì?d hrZË[î @  çØ€&ì?d ¨rZ">Y @  çÙ€'ì?d èrZ|= @  çÚ€(ì?d (sZ¬uþ @  çÛ€)ì?d hsZ™CŽj @  çÜ€*ì?d ¨sZ¹¶Œ” @  çÝ€+ì?d èsZ¥5µ @  çÞ€,ì?d (tZfëÆº @  ç߀-ì?d htZäzé @  çà€.ì?d ¨tZÄtx @  çá€/ì?d ètZÿ'@ý @  çâ€0ì?d€ (uZõØG @  è€1ì?d huZÓ‚‘ú @  è€2ì?d ¨uZów“ @  è€3ì?d èuZð-ÑÈ @  è€4ì?d (vZmiq  @  è€5ì?d hvZ‹p @  è€6ì?d ¨vZ½ã‰Ž @  è€7ì?d èvZ-RŒò @  è€8ì?d (wZý @  è €9ì?d hwZ eúc @  è €:ì?d ¨wZ-ø @  è €;ì?d èwZ.ʺQ @  è €<ì?d (xZ56L @  è €=ì?d hxZêJÌ5 @  è€>ì?d ¨xZÊ¿ÎË @  è€?ì?d èxZÿ»v @  è€@ì?d (yZ/P7ž @  è€Aì?d hyZß/Íç @  è€Bì?d ¨yZÿÚÏ @  è€Cì?d èyZü€Õ @  è€Dì?d (zZaÄ- @  è€Eì?d hzZ‘»×m @  è€Fì?d ¨zZ±NÕ“ @  è€Gì?d èzZ!ÿÐï @  è€Hì?d ({Zñ·\ @  è€Iì?d h{ZȦ~ @  è€Jì?d ¨{Z!=¤€ @  è€Kì?d è{Z"gæL @  è€Lì?d (|Z;)C @  è€Mì?d h|ZËVï: @  è€Nì?d ¨|Zë£íÄ @  è€Oì?d è|Z¢å“ @  è €Pì?d (}Zr­ì @  è!€Qì?d h}Z‚Òå• @  è"€Rì?d ¨}Z¢'çk @  è#€Sì?d è}Z¡}¥§ @  è$€Tì?d (~Z<9f @  è%€Uì?d h~ZÌFÿ @  è&€Vì?d ¨~Zì³ýá @  è'€Wì?d è~Z|ø @  è(€Xì?d (Z¬Jtu @  è)€Yì?d hZ\5Ž  @  è*€Zì?d ¨ZuЀZ'|ÀŒò @  è+€[ì?d èZšÎ> @  è,€\ì?d @€Z$,J @  è-€]ì?d €€ZC?à @  è.€^ì?d À€ZÁ®ÔÍ @  è/€_ì?d ZV€/W @  è0€`ì?d @ZÔ8‰ @  è1€aì?d €Z† ×Ð @  è2€bì?d ÀZ›À @  è3€cì?d ‚Z5Ý @  è4€dì?d @‚Zš…" @  è5€eì?d €‚ZÈžÍZ @  è6€fì?d À‚ZJÚ„ @  è7€gì?d ƒZˆgDÎ @  è8€hì?d @ƒZ öS @  è9€iì?d €ƒZXí¼I @  è:€jì?d ÀƒZÚ|«— @  è;€kì?d „ZBù Š @  è<€lì?d @„ZÀhT @  è=€mì?d €„Z’sõ  @  è>€nì?d À„ZââÓ @  è?€oì?d …Z¥z· @  è@€pì?d @…Z'ëi @  èA€qì?d €…Zuðù0 @  èB€rì?d À…Z÷aîî @  èC€sì?d †Zëî= @  èD€tì?d @†Zi ã @  èE€uì?d €†Z;d㺠@  èF€vì?d À†Z¹õôd @  èG€wì?d ‡Z{j. @  èH€xì?d @‡Zù }ð @  èI€yì?d €‡Z«’© @  èJ€zì?d À‡Z)†…w @  èK€{ì?d ˆZœ²\x @  èL€|ì?d @ˆZ#K¦ @  èM€}ì?d €ˆZL8¤ÿ @  èN€~ì?d ÀˆZΩ³! @  èO€ì?d ‰Z´ 8 @  èP€€ì?d @‰Z6€æ @  èQ€ì?d €‰Zd›ñ¿ @  èR€‚ì?d À‰Zæ æa @  èS€ƒì?d ŠZú…² @  èT€„ì?d @ŠZxl @  èU€…ì?d €ŠZ*ë5 @  èV€†ì?d ÀŠZ¨žüë @  èW€‡ì?d ‹Zjöb¡ @  èX€ˆì?d @‹Zègu @  èY€‰ì?d €‹Zº|š& @  èZ€Šì?d À‹Z8íø @  è[€‹ì?d ŒZ h+å @  è\€Œì?d @ŒZ"ù<; @  è]€ì?d €ŒZpâÓb @  è^€Žì?d ÀŒZòsļ @  è_€ì?d Zéì!J @  è`€ì?d @Zk}6” @  èa€‘ì?d €Z9fÙÍ @  èb€’ì?d ÀZ»÷Î @  èc€“ì?d ŽZ§x;À @  èd€”ì?d @ŽZ%é, @  èe€•ì?d €ŽZwòÃG @  èf€–ì?d ÀŽZõcÔ™ @  èg€—ì?d Z7 JÓ @  èh€˜ì?d @Zµš]  @  èi€™ì?d €Zç²T @  èj€šì?d ÀZe¥Š @  èk€›ì?d ZZL* @  èl€œì?d @ZØ”[ô @  èm€ì?d €ZŠ´­ @  èn€žì?d ÀZ£s @  èo€Ÿì?d ‘ZŸ0Xé @  èp€ ì?d @‘Z¡O7 @  èq€¡ì?d €‘ZOº n @  èr€¢ì?d À‘ZÍ+·° @  ès€£ì?d ’ZѤBc @  èt€¤ì?d @’ZS5U½ @  èu€¥ì?d €’Z.ºä @  èv€¦ì?d À’Zƒ¿­: @  èw€§ì?d “ZA×3p @  èx€¨ì?d @“ZÃF$® @  èy€©ì?d €“Z‘]Ë÷ @  èz€ªì?d À“ZÌÜ) @  è{€«ì?d ”Z‹Iz4 @  è|€¬ì?d @”Z Ømê @  è}€­ì?d €”Z[³ @  è~€®ì?d À”ZÙR•m @  è€¯ì?d •ZœF8 @  è€€°ì?d @•Z Qæ @  è€±ì?d €•Z_¾¿ @  è‚€²ì?d À•Z݇©a @  èƒ€³ì?d –ZÁ\² @  è„€´ì?d @–ZC™Kl @  è…€µì?d €–Z‚¤5 @  è†€¶ì?d À–Z“³ë @  è‡€·ì?d —ZQ{-¡ @  èˆ€¸ì?d @—ZÓê: @  è‰€¹ì?d €—ZñÕ& @  èŠ€ºì?d À—Z`Âø @  è‹€»ì?d ˜Z¶T÷ @  èŒ€¼ì?d @˜Z4Å ) @  è€½ì?d €˜ZfÞãp @  èŽ€¾ì?d À˜ZäOô® @  è€¿ì?d ™Zƒ1% @  è€Àì?d @™Z  û @  è‘€Áì?d €™ZS»â¢ @  è’€Âì?d À™ZÑ*õ| @  è“€Ãì?d šZÍ¥¯ @  è”€Äì?d @šZO4q @  è•€Åì?d €šZ/ø( @  è–€Æì?d ÀšZŸ¾ïö @  è—€Çì?d ›Z]Öq¼ @  è˜€Èì?d @›ZßGfb @  è™€Éì?d €›Z\‰; @  èš€Êì?d À›ZÍžå @  è›€Ëì?d œZ—H8ø @  èœ€Ìì?d @œZÙ/& @  è€Íì?d €œZGÂÀ @  èž€Îì?d ÀœZÅSס @  èŸ€Ïì?d ZÞÌ2W @  è €Ðì?d @Z\]%‰ @  è¡€Ñì?d €ZFÊÐ @  è¢€Òì?d ÀZŒ×Ý @  è£€Óì?d žZX(Ý @  è¤€Ôì?d @žZÉ? @  è¥€Õì?d €žZ@ÒÐZ @  è¦€Öì?d ÀžZÂCÇ„ @  è§€×ì?d ŸZ+YÎ @  è¨€Øì?d @ŸZ‚ºN @  è©€Ùì?d €ŸZС¡I @  èª€ÚìuРZ?d ÀŸZR0¶— @  è«€Ûì?d  Z¢ð=ã @  è¬€Üì?d X Z a*= @  è­€Ýì?d ˜ ZrzÅd @  è®€Þì?d Ø ZðëÒº @  è¯€ßì?d ¡ZgÅ)  @  è°€àì?d X¡ZåT>þ @  è±€áì?d ˜¡Z·Oѧ @  è²€âì?d Ø¡Z5ÞÆy @  è³€ãì?d ¢Z)Q3ª @  è´€äì?d X¢Z«À$t @  èµ€åì?d ˜¢ZùÛË- @  è¶€æì?d Ø¢Z{JÜó @  è·€çì?d £Z¹"B¹ @  è¸€èì?d X£Z;³Ug @  è¹€éì?d ˜£Zi¨º> @  èº€êì?d Ø£Zë9­à @  è»€ëì?d ¤Zs¼ ý @  è¼€ìì?d X¤Zñ-# @  è½€íì?d ˜¤Z£6óz @  è¾€îì?d ؤZ!§ä¤ @  è¿€ïì?d ¥Z”?À @  èÀ€ðì?d X¥Z® @  èÁ€ñì?d ˜¥ZDµÿG @  è€òì?d Ø¥ZÆ$è™ @  èÀóì?d ¦ZÚ«J @  èÄ€ôì?d X¦ZX: ” @  èÅ€õì?d ˜¦Z !åÍ @  èÆ€öì?d ئZˆ°ò @  èÇ€÷ì?d §ZJØlY @  èÈ€øì?d X§ZÈI{‡ @  èÉ€ùì?d ˜§ZšR”Þ @  èÊ€úì?d اZà @  èË€ûì?d ¨Z­÷Z @  èÌ€üì?d X¨Z/fMÑ @  èÍ€ýì?d ˜¨Z}}¢ˆ @  è΀þì?d بZÿìµV @  èÏ€ÿì?d ©Zú3ZC @  èЀí?d X©Zx¢M @  èÑ€í?d ˜©Z*¹¢Ä @  èÒ€í?d Ø©Z¨(µ @  èÓ€í?d ªZ´§@É @  èÔ€í?d XªZ66W @  èÕ€í?d ˜ªZd-¸N @  èÖ€í?d تZ漯 @  è×€í?d «Z$Ô1Ú @  èØ€í?d X«Z¦E& @  èÙ€ í?d ˜«Zô^É] @  èÚ€ í?d Ø«ZvÏÞƒ @  èÛ€ í?d ¬ZîJxž @  èÜ€ í?d X¬ZlÛo@ @  èÝ€ í?d ˜¬Z>À€ @  èÞ€í?d جZ¼Q—Ç @  è߀í?d ­Z§Îr1 @  èà€í?d X­Z%_eï @  èá€í?d ˜­ZwDж @  èâ€í?d€ Ø­ZÎ @  é€í?d ®Z|Ø<4 @  é€í?d X®ZþI+ê @  é€í?d ˜®Zi?^ @  é€í?d Ø®ZëŠ(€ @  é€í?d ¯ZçPé° @  é€í?d X¯ZeÁþn @  é€í?d ˜¯ZùhNM @  é€í?d دZ{ùY“ @  é €í?d °Z¥KÞ @  é €í?d X°Z4\ @  é €í?d ˜°Z”fH´ @  é €í?d ذZ÷_j @  é €í?d ±ZâÊÅj @  é€ í?d X±Z`[Ò´ @  é€!í?d ˜±ZQS\w @  é€"í?d رZÓÂK© @  é€#í?d ²Z E— @  é€$í?d X²Zˆ•RI @  é€%í?d ˜²ZÇFý @  é€&í?d زZVQ# @  é€'í?d ³Z‘Œ @  é€(í?d X³Z‡Í @  é€)í?d ˜³Z´7î @  é€*í?d سZ % 0 @  é€+í?d ´ZPé}À @  é€,í?d X´ZÒxj @  é€-í?d ˜´ZE*~ª @  é€.í?d Ø´ZÇ»it @  é€/í?d µZ®1ʨ @  é€0í?d XµZ, Ýv @  é€1í?d ˜µZ ®t @  é €2í?d صZŽ?cÛ @  é!€3í?d ¶ZWùmå @  é"€4í?d X¶ZÕhz; @  é#€5í?d ˜¶ZB:n @  é$€6í?d ضZÀ«yQ @  é%€7í?d ·ZÌq¸a @  é&€8í?d X·ZN௿ @  é'€9í?d ˜·ZÒIœ @  é(€:í?d Ø·ZPØB @  é)€;í?d ¸Z ¥*  @  é*€<í?d X¸Z¢4=~ @  é+€=í?d ˜¸Z5f)Ê @  é,€>í?d ظZ·÷> @  é-€?í?d ¹Z³š± @  é.€@í?d X¹Z1 ¦Û @  é/€Aí?d ˜¹Z( @  é0€Bí?d عZ‚’?Æ @  é1€Cí?d ºZ[T1ø @  é2€Dí?d XºZÙÅ&& @  é3€Eí?d ˜ºZN—2’ @  é4€Fí?d غZÌ%L @  é5€Gí?d »ZÀÜä| @  é6€Hí?d X»ZBMó¢ @  é7€Ií?d ˜»ZÞäC @  é8€Jí?d Ø»Z\uT_ @  é9€Kí?d ¼Z¹ ¯ @  é:€Lí?d X¼Zƒ(q @  é;€Mí?d ˜¼Zz Å @  é<€Ní?d ؼZ–ë @  é=€Oí?d ½Zÿa¾Ç @  é>€Pí?d X½Z}ð© @  é?€Qí?d ˜½Zóùø @  é@€Rí?d ؽZqh& @  éA€Sí?d ¾Z¨® @  éB€Tí?d X¾Z*?Æ @  éC€Uí?d ˜¾Z½mr @  éD€Ví?d ؾZ?ü ¬ @  éE€Wí?d ¿Z3&Êœ @  éF€Xí?d X¿Z±·ÝB @  éG€Yí?d ˜¿Z-ma @uÐÀZ  éH€Zí?d Ø¿Z¯z¿ @  éI€[í?d 0ÀZý… @  éJ€\í?d pÀZ l’Ì @  éK€]í?d °ÀZš>†x @  éL€^í?d ðÀZ¯‘¦ @  éM€_í?d 0ÁZì’ ¦ @  éN€`í?d pÁZnx @  éO€aí?d °ÁZ_ ’» @  éP€bí?d ðÁZÝš…e @  éQ€cí?d 0ÂZ\‹[ @  éR€dí?d pÂZ†Íœ… @  éS€eí?d °ÂZŸˆ1 @  éT€fí?d ðÂZ“Ÿï @  éU€gí?d 0ÃZŸÔ^ß @  éV€hí?d pÃZEI @  éW€ií?d °ÃZìù" @  éX€jí?d ðÃZ}îü @  éY€kí?d 0ÄZ^±³  @  éZ€lí?d pÄZÜ ¤Ò @  é[€mí?d °ÄZKr°f @  é\€ní?d ðÄZÉ㧸 @  é]€oí?d 0ÅZ id @  é^€pí?d pÅZ"øº @  é_€qí?d °ÅZöºÉ @  é`€rí?d ðÅZ€g­ @  éa€sí?d 0ÆZY¡£) @  éb€tí?d pÆZÛ0´÷ @  éc€uí?d °ÆZLb C @  éd€ví?d ðÆZÎó· @  ée€wí?d 0ÇZÂ)v­ @  éf€xí?d pÇZ@¸as @  ég€yí?d °ÇZÜÑP @  éh€zí?d ðÇZ^€ÆŽ @  éi€{í?d 0ÈZ.ýäl @  éj€|í?d pÈZ¬ló² @  ék€}í?d °ÈZ;>ç @  él€~í?d ðÈZ¹¯ðØ @  ém€í?d 0ÉZ +[ @  én€€í?d pÉZ"•<… @  éo€í?d °ÉZ²F @  ép€‚í?d ðÉZ‘ ¥˜ @  éq€ƒí?d 0ÊZHÊ«¦ @  ér€„í?d pÊZÊ[¼x @  és€…í?d °ÊZ] ¨Ì @  ét€†í?d ðÊZߘ¿ @  éu€‡í?d 0ËZÓB~" @  év€ˆí?d pËZQÓiü @  éw€‰í?d °ËZÍzÙß @  éx€Ší?d ðËZOëÎ @  éy€‹í?d 0ÌZ'“ñ @  éz€Œí?d pÌZ¶„/ @  é{€í?d °ÌZä› @  é|€Ží?d ðÌZ…u‡E @  é}€í?d 0ÍZìÿ$™ @  é~€í?d pÍZnn3G @  é€‘í?d °ÍZ1¬— @  é€€’í?d ðÍZ »I @  é€“í?d 0ÎZXfµw @  é‚€”í?d pÎZÚ÷¢© @  éƒ€•í?d °ÎZM¥¶ @  é„€–í?d ðÎZÏ4¡Ã @  é…€—í?d 0ÏZÃî`ó @  é†€˜í?d pÏZAw- @  é‡€™í?d °ÏZÝÖÇ @  éˆ€ší?d ðÏZ_GÐÐ @  é‰€›í?d 0ÐZ¥Â @  éŠ€œí?d pÐZ'ŠÕC @  é‹€í?d °ÐZ°ØÁ÷ @  éŒ€ží?d ðÐZ2IÖ) @  é€Ÿí?d 0ÑZÆtL) @  éŽ€ í?d pÑZDå[÷ @  é€¡í?d °ÑZuíÕ4 @  é€¢í?d ðÑZ÷|Âê @  é‘€£í?d 0ÒZ.ºÌÔ @  é’€¤í?d pÒZ¬+Û  @  é“€¥í?d °ÒZ;yϾ @  é”€¦í?d ðÒZ¹èØ` @  é•€§í?d 0ÓZµ2P @  é–€¨í?d pÓZ7£Ž @  é—€©í?d °ÓZ« ¾­ @  é˜€ªí?d ðÓZ)›©s @  é™€«í?d 0ÔZtWôƒ @  éš€¬í?d pÔZöÆã] @  é›€­í?d °ÔZa”÷é @  éœ€®í?d ðÔZãà7 @  é€¯í?d 0ÕZŠCë @  éž€°í?d pÕZT5 @  éŸ€±í?d °ÕZ(ýF @  é €²í?d ðÕZªê˜ @  é¡€³í?d 0ÖZsGä¦ @  é¢€´í?d pÖZñÖóx @  é£€µí?d °ÖZf„çÌ @  é¤€¶í?d ðÖZäð @  é¥€·í?d 0×ZèÏ1" @  é¦€¸í?d p×Zj^&ü @  é§€¹í?d °×Zö÷–ß @  é¨€ºí?d ð×Ztf @  é©€»í?d 0ØZ£ã @  éª€¼í?d pØZ†Š´= @  é«€½í?d °ØZØ ‰ @  é¬€¾í?d ðØZ“I·W @  é­€¿í?d 0ÙZ—$8F @  é®€Àí?d pÙZµ/˜ @  é¯€Áí?d °ÙZ$½¡[ @  é°€Âí?d ðÙZ¦,¶… @  é±€Ãí?d 0ÚZ긻 @  é²€Äí?d pÚZý{¯e @  é³€Åí?d °ÚZj)»Ñ @  é´€Æí?d ðÚZ踬 @  éµ€Çí?d 0ÛZäbm? @  é¶€Èí?d pÛZfózá @  é·€Éí?d °ÛZúZÊ @  é¸€Êí?d ðÛZxËÝ @  é¹€Ëí?d 0ÜZ%€ì @  éº€Ìí?d pÜZ§–—2 @  é»€Íí?d °ÜZ0ㆠ@  é¼€Îí?d ðÜZ²U”X @  é½€Ïí?d 0ÝZÛß7„ @  é¾€Ðí?d pÝZYN Z @  é¿€Ñí?d °ÝZ×G» @  éÀ€Òí?d ðÝZUÖ˜e @  éÁ€Óí?d 0ÞZŒ–[ @  é€Ôí?d pÞZ… @  éÀÕí?d °ÞZ™Ó•1 @  éÄ€Öí?d ðÞZB‚ï @  éÅ€×í?d 0ßZ˜Cß @  éÆ€Øí?d pßZ• T @  éÇ€Ùí?d uÐàZ/°ßZ  ä" @  éÈ€Úí?d ðßZö±€€ @  éÉÛí?d HàZ«—p‰ @  éÊÜí?d ˆàZ‹brw @  éËÝí?d ÈàZ¾Tsã @  éÌÞí?d áZnÿ  @  éÍßí?d HáZÈøþ= @  éÎàí?d ˆáZè üà @  éÏáí?d ÈáZ{ag  @  éÐâí?d âZæ%Çá @  éÑãí?d HâZ 6~À @  éÒäí?d ˆâZÃ|> @  éÓåí?d ÈâZ5õ}ª @  éÔæí?d ãZå½ñB @  éÕçí?d HãZ»¾«D @  éÖèí?d ˆãZ›K©º @  é×éí?d ÈãZ¥† ¹ @  éØêí?d äZ¼Èÿ¶ @  éÙëí?d HäZzÛF— @  éÚìí?d ˆäZZ.Di @  éÛíí?d ÈäZoEý @  éÜîí?d åZ¿PÉ @  éÝïí?d HåZ„ñÿ @  éÞðí?d ˆåZ¤öó @  éßñí?d ÈåZ&œOR @  éàòí?d æZ»Øï“ @  éáóí?d HæZ}ËV² @  éâôí?d€ ˆæZœy£L @  êõí?d ÈæZHêñ @  êöí?d çZ˜Ff @  ê÷í?d HçZ Çò @  êøí?d ˆçZ#ùÅ  @  êùí?d ÈçZÓ†?u @  êúí?d èZçy³h @  êûí?d HèZïØU3 @  êüí?d ˆèZÏ-WÍ @  ê ýí?d ÈèZ?R­´ @  ê þí?d éZï!\ @  ê ÿí?d HéZ¬dú- @  ê î?d ˆéZŒ‘øÓ @  ê î?d ÈéZ|îª @  êî?d êZ᪢k @  êî?d HêZDªzÐ @  êî?d ˆêZd_x. @  êî?d ÈêZ” ‚W @  êî?d ëZDh¿ @  êî?d HëZß"¯T @  êî?d ˆëZÿ×­ª @  ê î?d ÈëZ¨WÓ @  ê î?d ìZæ¤Ü @  ê î?d HìZGB‡ @  ê î?d ˆìZ>²@y @  ê î?d ÈìZÎͺ @  êî?d íZ…6è @  êî?d HíZàŸõï @  êî?d ˆíZÀj÷ @  êî?d ÈíZ0 h @  êî?d îZ­Q­© @  êî?d HîZWR¢ @  ê î?d ˆîZ9¢P\ @  ê!î?d ÈîZÉݪ% @  ê"î?d ïZ•&Í @  ê#î?d HïZ‚߇& @  ê$î?d ˆïZ¢*…Ø @  ê%î?d ÈïZRU¡ @  ê&î?d ðZì‹Ã @  ê'î?d HðZä*%H @  ê(î?d ˆðZÄß'¶ @  ê)î?d ÈðZ4 ÝÏ @  ê*î?d ñZäèQ' @  ê+î?d HñZ‡E«ü @  ê, î?d ˆñZ§°© @  ê-!î?d ÈñZWÏS{ @  ê."î?d òZÊ‹óº @  ê/#î?d HòZo‹+ @  ê0$î?d ˆòZO~)ÿ @  ê1%î?d ÈòZ¿Ó† @  ê2&î?d óZoI_n @  ê3'î?d HóZôþ… @  ê4(î?d ˆóZÔöü{ @  ê5)î?d ÈóZ$‰ @  ê6*î?d ôZ=Çõ  @  ê7+î?d HôZ5fV @  ê8,î?d ˆôZ“¨ @  ê9-î?d ÈôZåìëÑ @  ê:.î?d õZ5¤g9 @  ê;/î?d HõZ˾¤> @  ê<0î?d ˆõZëK¦À @  ê=1î?d ÈõZ4\¹ @  ê>2î?d öZ†püx @  ê?3î?d HöZœqá @  ê@4î?d ˆöZ¼„ @  êA5î?d ÈöZLûýf @  êB6î?d ÷Zœ³qŽ @  êC7î?d H÷ZùÐe @  êD8î?d ˆ÷Z' Ò› @  êE9î?d È÷Z×s(â @  êF:î?d øZ㌤ÿ @  êG;î?d HøZë-B¤ @  êH<î?d ˆøZËØ@Z @  êI=î?d ÈøZ;§º# @  êJ>î?d ùZëï6Ë @  êK?î?d HùZxÙ @  êL@î?d ˆùZXçÛÿ @  êMAî?d ÈùZ¨˜!† @  êNBî?d úZ5ÜG @  êOCî?d HúZÜYü @  êPDî?d ˆúZ°)[ @  êQEî?d ÈúZ@V¡{ @  êRFî?d ûZ-“ @  êSGî?d HûZ TŒx @  êTHî?d ˆûZ+¡Ž† @  êUIî?d ÈûZÛÞtÿ @  êVJî?d üZ‡ð @  êWKî?d HüZÊ1a« @  êXLî?d ˆüZêÄcU @  êYMî?d ÈüZ»™, @  êZNî?d ýZÊóÄ @  ê[Oî?d HýZ4éÖà @  ê\Pî?d ˆýZÔ= @  ê]Qî?d ÈýZäc.D @  ê^Rî?d þZy'Ž… @  ê_Sî?d HþZÍ!qŽ @  ê`Tî?d ˆþZíÔsp @  êaUî?d ÈþZ«‰  @  êbVî?d ÿZÍãá @  êcWî?d HÿZV©¤  @  êdXî?d ˆÿZv\¦ô @  êeuÐ[Yî?d ÈÿZ†#\ @  êfZî?d [É—t| @  êg[î?d `[Á6’' @  êh\î?d  [áÃÙ @  êi]î?d à[¼j  @  êj^î?d [ÁôæH @  êk_î?d `[¢Y“ @  êl`î?d  [‚¬m @  êmaî?d à[rÓä @  ênbî?d [ï—DÕ @  êocî?d `[J—œn @  êpdî?d  [jbž @  êqeî?d à[šdé @  êrfî?d [JUè @  êsgî?d `[ÑIê @  êthî?d  [ñêK @  êuiî?d à[•±m @  êvjî?d [ÛBb @  êwkî?d `[z¤9 @  êxlî?d  [0¦Ç @  êymî?d à[Àð\¾ @  êznî?d [¸ÐV @  ê{oî?d `[î¢Q @  ê|pî?d  [ÎW¯ @  ê}qî?d à[>(ëÖ @  ê~rî?d [£lK @  êsî?d `[Z;‚¿ @  ê€tî?d  [z΀A @  êuî?d à[бz8 @  ê‚vî?d [ZùöÐ @  êƒwî?d `[Á³W; @  ê„xî?d  [áFUÅ @  ê…yî?d à[9¯¼ @  ê†zî?d [%Æ#¡ @  ê‡{î?d `[-gÅú @  êˆ|î?d  [ ’Ç @  ê‰}î?d à[ýí=} @  êŠ~î?d [-¥±• @  ê‹î?d ` [£ž Í @  êŒ€î?d   [ƒk3 @  êî?d à [sòJ @  êŽ‚î?d [îPR‹ @  êƒî?d ` [KPŠ0 @  ê„î?d   [k¥ˆÎ @  ê‘…î?d à [›Úr· @  ê’†î?d [K’þ_ @  ê“‡î?d ` [ÐØ_´ @  ê”ˆî?d   [ð-]J @  ê•‰î?d à [R§3 @  ê–Šî?d [T< @  ê—‹î?d ` [½²g @  ê˜Œî?d   [1H°™ @  ê™î?d à [Á7Jà @  êšŽî?d [Æ @  ê›î?d ` [ïe @  êœî?d   [Ïñ @  ê‘î?d à [?ïýˆ @  êž’î?d [¢«]I @  êŸ“î?d `[­¢B @  ê ”î?d  [6X ¼ @  ê¡•î?d à[Æ'ZÅ @  ê¢–î?d [oÖ- @  ê£—î?d `[%wÆ @  ê¤˜î?d  [­Ðu8 @  ê¥™î?d à[]¯A @  ê¦šî?d [ãq3ó @  ê§›î?d `[ëÐÕ¨ @  ê¨œî?d  [Ë%×V @  ê©î?d à[;Z-/ @  êªžî?d [ë¡Ç @  ê«Ÿî?d `[ˆ¿[ @  ê¬ î?d  [¨JYâ @  ê­¡î?d à[X5£› @  ê®¢î?d [ÅqZ @  ê¯£î?d `[`qÛá @  ê°¤î?d  [@„Ù @  ê±¥î?d à[°û#f @  ê²¦î?d [`³¯Ž @  ê³§î?d `[ûùe @  ê´¨î?d  [Û › @  êµ©î?d à[+söâ @  ê¶ªî?d [2=í @  ê·«î?d `[:œã¶ @  ê¸¬î?d  [iáH @  ê¹­î?d à[ê1 @  êº®î?d [:^—Ù @  ê»¯î?d `[ÄDTÞ @  ê¼°î?d  [ä±V  @  ê½±î?d à[άY @  ê¾²î?d [‰Š ˜ @  ê¿³î?d `[“‹õ @  êÀ´î?d  [³~÷ÿ @  êÁµî?d à[C † @  ê¶î?d [“In @  ê÷î?d `[ … @  êĸî?d  [(ö"{ @  êŹî?d à[؉Ø @  êƺî?d [ìvT @  êÇ»î?d `[äײD @  êȼî?d  [Ä"°º @  êɽî?d à[4]Jà @  êʾî?d [äÆ+ @  êË¿î?d `[wè)á @  êÌÀî?d  [W+ @  êÍÁî?d à[§bÑf @  êÎÂî?d [:&q§ @  êÏÃî?d `[Ÿ&© @  êÐÄî?d  [¿Ó«â @  êÑÅî?d à[O¬Q› @  êÒÆî?d [ŸäÝs @  êÓÇî?d `[®|˜ @  êÔÈî?d  [$[~f @  êÕÉî?d à[Ô$„ @  êÖÊî?d [Íjw @  ê×Ëî?d `[ÅË‘K @  êØÌî?d  [å>“µ @  êÙÍî?d à[AiÌ @  êÚÎî?d [Å å$ @  êÛÏî?d `[;&# @  êÜÐî?d  [æ$Ý @  êÝÑî?d à[ë™Þ¤ @  êÞÒî?d [vÝ~e @  êßÓî?d `[ÂÛn @  êàÔî?d  [â.ƒ @  êáÕî?d à[Qyé @  êâÖî?d€ [¶Úé§ @  ë×î?d `[ÌÑe @  ëØî?d  [ì$›uÐ [ @  ëÙî?d à[Ù @  ëÚî?d 8 [¨Ýi @  ëÛî?d x [n dH @  ëÜî?d ¸ [Nÿf¶ @  ëÝî?d ø [p2õ @  ëÞî?d 8![ zO] @  ë ßî?d x![žNk @  ë àî?d ¸![&kL• @  ë áî?d ø![]M @  ë âî?d 8"[ŽíÀ @  ë ãî?d x"[H Tá @  ëäî?d ¸"[hÿV @  ëåî?d ø"[û“Íü @  ëæî?d 8#[+ÛA @  ëçî?d x#[uØ @  ëèî?d ¸#[U-ì @  ëéî?d ø#[`x @  ëêî?d 8$[yUëw @  ëëî?d x$[¿FRV @  ëìî?d ¸$[Ÿ³P¨ @  ëíî?d ø$[¡~õ« @  ëîî?d 8%[q6yC @  ëïî?d x%[JeA© @  ëðî?d ¸%[jCW @  ëñî?d ø%[_¦Bà @  ëòî?d 8&[Âââ @  ëóî?d x&[ñ[# @  ëôî?d ¸&[$YÝ @  ëõî?d ø&[¦nåŽ @  ë öî?d 8'[v&if @  ë!÷î?d x'[(%3` @  ë"øî?d ¸'[Ð1ž @  ë#ùî?d ø'[=æ0  @  ë$úî?d 8([ ¼ @  ë%ûî?d x([Ï 6 @  ë&üî?d ¸([ïÿÈ @  ë'ýî?d ø([Ñ2¢Ë @  ë(þî?d 8)[z.# @  ë)ÿî?d x)[5o;š @  ë*ï?d ¸)[š9d @  ë+ï?d ø)[ ¬8ð @  ë,ï?d 8*[½è˜1 @  ë-ï?d x*[{û! @  ë.ï?d ¸*[[#î @  ë/ï?d ø*[Èb¸  @  ë0ï?d 8+[*4å @  ë1ï?d x+[F)nã @  ë2ï?d ¸+[fÜl @  ë3 ï?d ø+[Sêm‰ @  ë4 ï?d 8,[J¤ž† @  ë5 ï?d x,[Œ·'§ @  ë6 ï?d ¸,[¬B%Y @  ë7 ï?d ø,[’€Z @  ë8ï?d 8-[BÇ ² @  ë9ï?d x-[y”4X @  ë:ï?d ¸-[Ya6¦ @  ë;ï?d ø-[lW72 @  ë<ï?d 8.[ñ—ó @  ë=ï?d x.[7.Ò @  ë>ï?d ¸.[õ,, @  ë?ï?d ø.[;˜–í @  ë@ï?d 8/[ëÐ @  ëAï?d x/[µÓ@ @  ëBï?d ¸/[•&Bý @  ëCï?d ø/[ Ci @  ëDï?d 80[ÎÿÛ @  ëEï?d x0[ØÝFú @  ëFï?d ¸0[ø(D @  ëGï?d ø0[Æåá @  ëHï?d 81[­mï @  ëIï?d x1[°IlÙ @  ëJ ï?d ¸1[¼n' @  ëK!ï?d ø1[¥Šo³ @  ëL"ï?d 82[8ÎÏr @  ëM#ï?d x2[þÝvS @  ëN$ï?d ¸2[Þ(t­ @  ëO%ï?d ø2[MDïN @  ëP&ï?d 83[ c¦ @  ëQ'ï?d x3[Ã9  @  ëR(ï?d ¸3[ãú;^ @  ëS)ï?d ø3[ÖÌ:Ê @  ëT*ï?d 84[Ï‚ÉÅ @  ëU+ï?d x4[ ‘pä @  ëV,ï?d ¸4[)dr @  ëW-ï?d ø4[©× @  ëX.ï?d 85[Çá[ñ @  ëY/ï?d x5[ü²c @  ëZ0ï?d ¸5[ÜGaå @  ë[1ï?d ø5[éq`q @  ë\2ï?d 86[t5À° @  ë]3ï?d x6[²&y‘ @  ë^4ï?d ¸6[’Ó{o @  ë_5ï?d ø6[¹Ç< @  ë`6ï?d 87[ÀñKÔ @  ëa7ï?d x7[žòÒ @  ëb8ï?d ¸7[¾, @  ëc9ï?d ø7[‹1¸ @  ëd:ï?d 88[¿Îž¥ @  ëe;ï?d x8[yÝ'„ @  ëf<ï?d ¸8[Y(%z @  ëg=ï?d ø8[gå€y @  ëh>ï?d 89[·­ ‘ @  ëi?ï?d x9[á¶ @  ëj@ï?d ¸9[ÁìH @  ëkAï?d ø9[ôÚÜ @  ëlBï?d 8:[iž» @  ëmCï?d x:[¯< @  ënDï?d ¸:[x @  ëoEï?d ø:[›! @  ëpFï?d 8;[Ì\É @  ëqGï?d x;[’_MÏ @  ërHï?d ¸;[²ªO1 @  ësIï?d ø;[‡œN¥ @  ëtJï?d 8<[žÒ½ª @  ëuKï?d x<[XÁ‹ @  ëvLï?d ¸<[x4u @  ëwMï?d ø<[Fù£v @  ëxNï?d 8=[–±/ž @  ëyOï?d x=[­ât @  ëzPï?d ¸=[Š @  ë{Qï?d ø=[¸! @  ë|Rï?d 8>[%e´ß @  ë}Sï?d x>[ãv þ @  ë~Tï?d ¸>[à @  ëUï?d ø>[ ¸…ð @  ë€Vï?d 8?[Üð  @  ëWï?d x?[‚óS @  ë‚Xï?duÐ@[7 ¸?[¢Qà @  ëƒYï?d ø?[—0Pt @  ë„Zï?d P@[TœêH @  ë…[ï?d @[0ëFI @  ë†\ï?d Ð@[²zQ— @  ë‡]ï?d A[Þno¢ @  ëˆ^ï?d PA[\ÿx| @  ë‰_ï?d A[Xlj @  ëŠ`ï?d ÐA[Úî{´ @  ë‹aï?d B[ð Í? @  ëŒbï?d PB[rœÚá @  ëcï?d B[ëvà @  ëŽdï?d ÐB[”za> @  ëeï?d C[UÏaë @  ëfï?d PC[×^v5 @  ë‘gï?d C[+99 @  ë’hï?d ÐC[©¨.Í @  ë“iï?d D[Aˈ @  ë”jï?d PD[…ÐÜV @  ë•kï?d D[á§pW @  ë–lï?d ÐD[c6g‰ @  ë—mï?d E["Y¼ @  ë˜nï?d PE[³Nb @  ë™oï?d E[„c¨ @  ëšpï?d ÐE[–tv @  ë›qï?d F[¼öÂý @  ëœrï?d PF[>gÕ# @  ësï?d F[Zy" @  ëžtï?d ÐF[Ønü @  ëŸuï?d G[2I™ @  ë vï?d PG[Š£^G @  ë¡wï?d G[vÄa @  ë¢xï?d ÐG[ôU¿ @  ë£yï?d H[w œè @  ë¤zï?d PH[õœ‹6 @  ë¥{ï?d H[‘ë'7 @  ë¦|ï?d ÐH[z0é @  ë§}ï?d I[nÜ @  ë¨~ï?d PI[ýÿ @  ë©ï?d I[éL— @  ëª€ï?d ÐI[–x[I @  ë«ï?d J[¼›í @  ë¬‚ï?d PJ[> ú @  ë­ƒï?d J[Z}V @  ë®„ï?d ÐJ[ØìAà @  ë¯…ï?d K[YA @  ë°†ï?d PK[›ÈVÈ @  ë±‡ï?d K[g¯î @  ë²ˆï?d ÐK[å>0 @  ë³‰ï?d L[K×ëu @  ë´Šï?d PL[ÉFü« @  ëµ‹ï?d L[­1Pª @  ë¶Œï?d ÐL[/ Gt @  ë·ï?d M[C´yA @  ë¸Žï?d PM[Á%nŸ @  ë¹ï?d M[XCU @  ëºï?d ÐM[ÚƒT‹ @  ë»‘ï?d N[ð`â @  ë¼’ï?d PN[rñõÞ @  ë½“ï?d N[†Yß @  ë¾”ï?d ÐN[”N @  ë¿•ï?d O[ê£oö @  ëÀ–ï?d PO[h2x( @  ëÁ—ï?d O[”U7 @  ë˜ï?d ÐO[Ä Ð @  ëÙï?d P[½Š( @  ëÄšï?d PP[,ö @  ëÅ›ï?d P[ù[1÷ @  ëÆœï?d ÐP[{Ê&) @  ëÇï?d Q[Þ @  ëÈžï?d PQ[•O @  ëÉŸï?d Q[‘ÏÔ @  ëÊ ï?d ÐQ[^  @  ëË¡ï?d R[9½º @  ëÌ¢ï?d PR[»,­_ @  ëÍ£ï?d R[ß[^ @  ëΤï?d ÐR[]Ê€ @  ëÏ¥ï?d S[œU @  ëЦï?d PS[î‹ @  ëѧï?d S[â‰N­ @  ëÒ¨ï?d ÐS[`Ys @  ëÓ©ï?d T[Îñ¼6 @  ëÔªï?d PT[L`«è @  ëÕ«ï?d T[(é @  ëÖ¬ï?d ÐT[ª†7 @  ë×­ï?d U[Æ’. @  ëØ®ï?d PU[D9Ü @  ëÙ¯ï?d U[Ý4 @  ëÚ°ï?d ÐU[_¥È @  ëÛ±ï?d V[uFµC @  ëܲï?d PV[÷×¢ @  ëݳï?d V[“ œ @  ëÞ´ï?d ÐV[1B @  ëßµï?d W[Á‚>' @  ëà¶ï?d PW[C)ù @  ëá·ï?d W[¿tfß @  ëâ¸ï?d€ ÐW[»³Ù¸ @  ì¹ï?d X[Ùª Æ @  ìºï?d PX[[; @  ì»ï?d X[úKô @  ì¼ï?d ÐX[x”\* @  ì½ï?d Y[Ú2=e @  ì¾ï?d PY[X£*» @  ì¿ï?d Y[bÁtÆ @  ìÀï?d ÐY[àPc @  ì Áï?d Z[ú.~ @  ì Âï?d PZ[k9  @  ì Ãï?d Z[,UnL @  ì Äï?d ÐZ[®Äy’ @  ì Åï?d [[ bÝ @  ìÆï?d P[[Žó @  ìÇï?d [[‡!¿ @  ìÈï?d Ð[[“6a @  ìÉï?d \[ø¶(É @  ìÊï?d P\[z'? @  ìËï?d \[Ûhû @  ìÌï?d Ð\[Yˆ% @  ìÍï?d ][û.j @  ìÎï?d P][y¿ ´ @  ìÏï?d ][.:{ @  ìÐï?d Ð][¬«lÚ @  ìÑï?d ^[C!¼ @  ìÒï?d P^[Á6b @  ìÓï?d ^[`®aŽ @  ìÔï?d Ð^[â?vP @  ìÕï?d _[@™ @  ìÖï?d P_[ÂÁ @  ì×ï?d _[Lz Í @  ìuÐ`[ Øï?d Ð_[Îë @  ì!Ùï?d (`[ýF, @  ì"Úï?d h`[€lQò @  ì#Ûï?d ¨`[!R @  ì$Üï?d è`[£ÃÀ @  ì%Ýï?d (a[ep @  ì&Þï?d ha[ƒôgQ @  ì'ßï?d ¨a[IÆ,= @  ì(àï?d èa[ËW;ã @  ì)áï?d (b[$ýv… @  ì*âï?d hb[¦la[ @  ì+ãï?d ¨b[R6· @  ì,äï?d èb[…Ã!i @  ì-åï?d (c['e@& @  ì.æï?d hc[¥ôWø @  ì/çï?d ¨c[:€yD @  ì0èï?d èc[¸nš @  ì1éï?d (d[Ó±p2 @  ì2êï?d hd[Q gì @  ì3ëï?d ¨d[ð0 @  ì4ìï?d èd[r'Þ @  ì5íï?d (e[Ð)F‘ @  ì6îï?d he[R¸QO @  ì7ïï?d ¨e[=#ÿ @  ì8ðï?d èe[‡¬4! @  ì9ñï?d (f[hyG @  ì:òï?d hf[ê—n™ @  ì;óï?d ¨f[K©9u @  ì<ôï?d èf[É8.« @  ì=õï?d (g[kžOä @  ì>öï?d hg[éX: @  ì?÷ï?d ¨g[ÉzW¤ @  ì@øï?d èg[Kë@z @  ìAùï?d (h[ ú!À @  ìBúï?d hh[k6 @  ìCûï?d ¨h[.Uaò @  ìDüï?d èh[¬Äv, @  ìEýï?d (i[bc @  ìFþï?d hi[Œó½ @  ìGÿï?d ¨i[-µyî @  ìHð?d èi[¯$n0 @  ìIð?d (j[@Ž#V @  ìJð?d hj[Â4ˆ @  ìKð?d ¨j[c!cd @  ìLð?d èj[á°tº @  ìMð?d (k[Cõ @  ìNð?d hk[Á‡+ @  ìOð?d ¨k[^ó,— @  ìPð?d èk[Üb;I @  ìQ ð?d (l[·Â%á @  ìR ð?d hl[5S2? @  ìS ð?d ¨l[”meÓ @  ìT ð?d èl[ür  @  ìU ð?d (m[´ZB @  ìVð?d hm[6Ëœ @  ìWð?d ¨m[aNv, @  ìXð?d èm[ãßaò @  ìYð?d (n[ u,” @  ìZð?d hn[ódH6 @  ì[€ð?d ¨n[RZÚ @  ì\€ð?d èn[ÐË @  ì]€ð?d (o[rmiK @  ì^€ð?d ho[ðü~• @  ì_€ð?d ¨o[~Žw™ @  ì`€ð?d èo[ü`G @  ìa€ð?d (p[0/1R @  ìb€ð?d hp[²¾&Œ @  ìc€ð?d ¨p[€q` @  ìd€ð?d èp[‘f¾ @  ìe€ð?d (q[3·ñ @  ìf€ð?d hq[±&/ @  ìg€ð?d ¨q[{[C @  ìh€ ð?d èq[ù…L @  ìi€!ð?d (r[/û @  ìj€"ð?d hr[”¾% @  ìk€#ð?d ¨r[5€AÉ @  ìl€$ð?d èr[·V @  ìm€%ð?d (s[·7X @  ìn€&ð?d hs[—& † @  ìo€'ð?d ¨s[R: @  ìp€(ð?d ès[ŠÃä @  ìq€)ð?d (t[ácL @  ìr€*ð?d ht[cò’ @  ìs€+ð?d ¨t[ÂÌG~ @  ìt€,ð?d èt[@]P  @  ìu€-ð?d (u[âû1ï @  ìv€.ð?d hu[`j&1 @  ìw€/ð?d ¨u[7ïT @  ìx€0ð?d èu[µ~C_ @  ìy€1ð?d (v[ZÔ9 @  ìz€2ð?d hv[ØEç @  ì{€3ð?d ¨v[y{N  @  ì|€4ð?d èv[ûêYÕ @  ì}€5ð?d (w[YL8š @  ì~€6ð?d hw[ÛÝ/D @  ì€7ð?d ¨w[þë @  ì€€8ð?d èw[šo5 @  ì€9ð?d (x[Ü~f @  ì‚€:ð?d hx[^ïqQ @  ìƒ€;ð?d ¨x[ÿÑ&½ @  ì„€<ð?d èx[}@1c @  ì…€=ð?d (y[ßæP, @  ì†€>ð?d hy[]wGò @  ì‡€?ð?d ¨y[g @  ìˆ€@ð?d èy[å„Q @  ì‰€Að?d (z[ .C7 @  ìŠ€Bð?d hz[ˆ¿Té @  ì‹€Cð?d ¨z[) @  ìŒ€Dð?d èz[«Û @  ì€Eð?d ({[ ¶u” @  ìŽ€Fð?d h{[‹'bJ @  ì€Gð?d ¨{[SLö @  ì€Hð?d è{[–Â[( @  ì‘€Ið?d (|[ýbE€ @  ì’€Jð?d h|[óR^ @  ì“€Kð?d ¨|[ÞͲ @  ì”€Lð?d è|[\\l @  ì•€Mð?d (}[þús# @  ì–€Nð?d h}[|kdý @  ì—€Oð?d ¨}[+îM @  ì˜€Pð?d è}[©“ @  ì™€Qð?d (~[FÕLõ @  ìš€Rð?d h~[ÄD[+ @  ì›€Sð?d ¨~[ez Ç @  ìœ€Tð?d è~[çë @  ì€Uð?d ([EMzV @  ìž€Vð?d h[ÇÜmˆ @  ìŸ€Wð?d ¨[uЀ['I®d„ @  ì €Xð?d è[Ë?sZ @  ì¡€Yð?d @€[×o|‰ @  ì¢€Zð?d €€[÷š~w @  ì£€[ð?d À€[ôÀ<» @  ì¤€\ð?d [$ˆ°S @  ì¥€]ð?d @[Ô÷J* @  ì¦€^ð?d €[ôHÔ @  ì§€_ð?d À[œT˜ @  ì¨€`ð?d ‚[¶Y @  ì©€að?d @‚[ñoL  @  ìª€bð?d €‚[ÑšNÞ @  ì«€cð?d À‚[ÒÀ  @  ì¬€dð?d ƒ[ˆ€ú @  ì­€eð?d @ƒ[ò÷zƒ @  ì®€fð?d €ƒ[Òx} @  ì¯€gð?d Àƒ[ïCá @  ì°€hð?d „[ö\°î @  ì±€ið?d @„[#J— @  ì²€jð?d €„[&ÖHi @  ì³€kð?d À„[%Œ ¥ @  ì´€lð?d …[õĆM @  ìµ€mð?d @…[»|4 @  ì¶€nð?d €…[%N~Ê @  ì·€oð?d À…[ЯZ @  ì¸€pð?d †[Më¹› @  ì¹€qð?d @†[½”Câ @  ìº€rð?d €†[aA @  ì»€sð?d À†[ž;Ð @  ì¼€tð?d ‡[Ns8 @  ì½€uð?d @‡[¾ uA @  ì¾€vð?d €‡[žùw¿ @  ì¿€wð?d À‡[èm @  ìÀ€xð?d ˆ[(á @  ìÁ€yð?d @ˆ[Øhe @  ì€zð?d €ˆ[ø› @  ìÀ{ð?d Àˆ[ûÇ[W @  ìÄ€|ð?d ‰[+׿ @  ìÅ€}ð?d @‰[Ûð-Æ @  ìÆ€~ð?d €‰[û/8 @  ìÇ€ð?d À‰[~Å0÷ @  ìÈ€€ð?d Š[ã6 @  ìÉ€ð?d @Š[þjO @  ìÊ€‚ð?d €Š[3 h± @  ìË€ƒð?d ÀŠ[0Q*} @  ìÌ€„ð?d ‹[ক @  ìÍ€…ð?d @‹[f\ì @  ì΀†ð?d €‹[0“^ @  ìÏ€‡ð?d À‹[ ƒeŽ @  ìЀˆð?d Œ[Í– @  ìÑ€‰ð?d @Œ[ä²lø @  ìÒ€Šð?d €Œ[ÄGn @  ìÓ€‹ð?d ÀŒ[Ç,Ê @  ìÔ€Œð?d [U " @  ìÕ€ð?d @[ç*Z[ @  ìÖ€Žð?d €[ÇßX¥ @  ì×€ð?d À[2>?5 @  ìØ€ð?d Ž[¯zŸô @  ìÙ€‘ð?d @Ž[_e @  ìÚ€’ð?d €Ž[ðgs @  ìÛ€“ð?d ÀŽ[|ª%¿ @  ìÜ€”ð?d [¬â©W @  ìÝ€•ð?d @[\S. @  ìÞ€–ð?d €[|hQÐ @  ì߀—ð?d À[P~Mü @  ìà€˜ð?d [î ñN @  ìမð?d @[ß 7 @  ì‚ð?d€ €[Jéo @  í€›ð?d À[¨òŠ @  í€œð?d ‘[xº“b @  í€ð?d @‘[MŒ’ö @  í€žð?d €‘[my @  í€Ÿð?d À‘[Ë‘> @  í€ ð?d ’[VÙ1ÿ @  í€¡ð?d @’[h”ü @  í€¢ð?d €’[Há– @  í €£ð?d À’[Žò/# @  í €¤ð?d “[^º£Ë @  í €¥ð?d @“[kŒ¢_ @  í €¦ð?d €“[Ky ¡ @  í €§ð?d À“[zú§ @  í€¨ð?d ”[ 4 ¨ @  í€©ð?d @”[ŸX’K @  í€ªð?d €”[¿­µ @  í€«ð?d À”[y¾)” @  í€¬ð?d •[©ö¥| @  í€­ð?d @•[œÀ¤è @  í€®ð?d €•[¼5¦ @  í€¯ð?d À•[‡fžü @  í€°ð?d –[">= @  í€±ð?d @–[$ï›> @  í€²ð?d €–[™À @  í€³ð?d À–[ á @  í€´ð?d —[A¬  @  í€µð?d @—['w­ @  í€¶ð?d €—[‚¯c @  í€·ð?d À—[Yõe @  í€¸ð?d ˜[m~yx @  í€¹ð?d @˜[ïÅ+ @  í €ºð?d €˜[ÏáÇÕ @  í!€»ð?d À˜[ ò~ô @  í"€¼ð?d ™[Ùºò @  í#€½ð?d @™[ìŒóˆ @  í$€¾ð?d €™[Ìyñv @  í%€¿ð?d À™[šÍåQ @  í&€Àð?d š[‰E @  í'€Áð?d @š[9Dà“ @  í(€Âð?d €š[±âm @  í)€Ãð?d Àš[ߢ[L @  í*€Äð?d ›[êפ @  í+€Åð?d @›[:ÜÖ0 @  í,€Æð?d €›[)ÔÎ @  í-€Çð?d À›[D*ŽÈ @  í.€Èð?d œ[]d}Ç @  í/€Éð?d @œ[Îæ$ @  í0€Êð?d €œ[îýäÚ @  í1€Ëð?d Àœ[(î]û @  í2€Ìð?d [ø¦Ñ @  í3€Íð?d @[ÍЇ @  í4€Îð?d €[íeÒy @  í5€Ïð?d À[Ö6ê“ @  í6€Ðð?d ž[KrJR @  í7€Ñð?d @ž[u¿ïQ @  í8€Òð?d €ž[UJí¯ @  í9€Óð?d Àž[“YTŽ @  í:€Ôð?d Ÿ[CØf @  í;€Õð?d @Ÿ[v'Ùò @  í<€Öð?d €Ÿ[VÒÛ  @  í=€×ðuР[?d ÀŸ[Ñ  @  í>€Øð?d  [yÚ_l @  í?€Ùð?d X [U·å­ @  í@€Úð?d ˜ [uBçS @  íA€Ûð?d Ø [³Q^r @  íB€Üð?d ¡[cÒš @  íC€Ýð?d X¡[V/Ó @  íD€Þð?d ˜¡[vÚÑð @  íE€ßð?d Ø¡[Ð>ÐÆ @  íF€àð?d ¢[Mzp @  íG€áð?d X¢[s·Õ @  íH€âð?d ˜¢[SB×ú @  íI€ãð?d Ø¢[•QnÛ @  íJ€äð?d £[Eâ3 @  íK€åð?d X£[p/ã§ @  íL€æð?d ˜£[PÚáY @  íM€çð?d Ø£[Ù»_ @  íN€èð?d ¤[—HP @  íO€éð?d X¤[„ûÓ³ @  íP€êð?d ˜¤[¤ÑM @  íQ€ëð?d ؤ[bhl @  íR€ìð?d ¥[²Uä„ @  íS€íð?d X¥[‡cå @  íT€îð?d ˜¥[§–çî @  íU€ïð?d Ø¥[œÅß @  íV€ðð?d ¦[Å @  íW€ñð?d X¦[?LÚÆ @  íX€òð?d ˜¦[¹Ø8 @  íY€óð?d ئ[Ùªa @  íZ€ôð?d §[ âíñ @  í[€õð?d X§[<Ôìe @  í\€öð?d ˜§[!î› @  í]€÷ð?d ا[B"´ @  í^€øð?d ¨[vÝ8€ @  í_€ùð?d X¨[ô·„Ó @  í`€úð?d ˜¨[ÔB†- @  ía€ûð?d ب[Q?  @  íb€üð?d ©[³ä @  íc€ýð?d X©[÷/²p @  íd€þð?d ˜©[×Ú°Ž @  íe€ÿð?d Ø©[ãÏ¥7 @  íf€ñ?d ª[~‹ö @  íg€ñ?d Xª[@F õ @  íh€ñ?d ˜ª[`³¢  @  íi€ñ?d ت[¦ * @  íj€ñ?d «[vè— @  ík€ñ?d X«[CÞ–V @  íl€ñ?d ˜«[c+”¨ @  ím€ñ?d Ø«[=(ή @  ín€ñ?d ¬[$f=¡ @  ío€ ñ?d X¬[· ¦B @  íp€ ñ?d ˜¬[—ÿ¤¼ @  íq€ ñ?d ج[Qì @  ír€ ñ?d ­[¤‘u @  ís€ ñ?d X­[´’á @  ít€ñ?d ˜­[”g’ @  íu€ñ?d Ø­[¯4ªõ @  ív€ñ?d ®[2p 4 @  íw€ñ?d X®[ ½¯7 @  íx€ñ?d ˜®[,H­É @  íy€ñ?d Ø®[ê[è @  íz€ñ?d ¯[:˜ @  í{€ñ?d X¯[%™” @  í|€ñ?d ˜¯[/Лj @  í}€ñ?d د[qÓÁl @  í~€ñ?d °[Ï }Þ @  í€ñ?d X°[6÷. @  í€€ñ?d ˜°[ ÃõÐ @  í€ñ?d ذ[æÐLñ @  í‚€ñ?d ±[6˜À @  íƒ€ñ?d X±[®Á @  í„€ñ?d ˜±[#[Ãs @  í…€ñ?d ر[…¿ÂE @  í†€ ñ?d ²[ûb„ @  í‡€!ñ?d X²[&6LJ @  íˆ€"ñ?d ˜²[ÃÅy @  í‰€#ñ?d ز[ÀÐ|X @  íŠ€$ñ?d ³[˜ð° @  í‹€%ñ?d X³[%®ñ$ @  íŒ€&ñ?d ˜³[[óÚ @  í€'ñ?d س[[X©Ü @  íŽ€(ñ?d ´[BZÓ @  í€)ñ?d X´[ÑzÁ0 @  í€*ñ?d ˜´[ñÃÎ @  í‘€+ñ?d Ø´[7œzï @  í’€,ñ?d µ[çÔö @  í“€-ñ?d Xµ[Òâ÷“ @  í”€.ñ?d ˜µ[òõm @  í•€/ñ?d ص[ÉD͇ @  í–€0ñ?d ¶[TmF @  í—€1ñ?d X¶[jÍÈE @  í˜€2ñ?d ˜¶[J8Ê» @  í™€3ñ?d ض[Œ+sš @  íš€4ñ?d ·[\cÿr @  í›€5ñ?d X·[iUþæ @  íœ€6ñ?d ˜·[I ü @  í€7ñ?d Ø·[£¦ @  íž€8ñ?d ¸[#\* @  íŸ€9ñ?d X¸[¡6–P @  í €:ñ?d ˜¸[Ô® @  í¡€;ñ?d ظ[GÐ- @  í¢€<ñ?d ¹[—˜¡g @  í£€=ñ?d X¹[¢® ó @  í¤€>ñ?d ˜¹[‚[¢  @  í¥€?ñ?d ع[Ôï¶* @  í¦€@ñ?d º[I«ë @  í§€Añ?d Xº[wf³è @  í¨€Bñ?d ˜º[W“± @  í©€Cñ?d غ[‘€7 @  íª€Dñ?d »[AÈ„ß @  í«€Eñ?d X»[tþ…K @  í¬€Fñ?d ˜»[T ‡µ @  í­€Gñ?d Ø»[ ݳ @  í®€Hñ?d ¼[F.¼ @  í¯€Iñ?d X¼[€*µ_ @  í°€Jñ?d ˜¼[ ß·¡ @  í±€Kñ?d ؼ[fÌ€ @  í²€Lñ?d ½[¶„‚h @  í³€Mñ?d X½[ƒ²ƒü @  í´€Nñ?d ˜½[£G @  íµ€Oñ?d ؽ[˜¹è @  í¶€Pñ?d ¾[P) @  í·€Qñ?d X¾[;¼* @  í¸€Rñ?d ˜¾[h¾Ô @  í¹€Sñ?d ؾ[Ý{õ @  íº€Tñ?d ¿[ 3‹ @  í»€Uñ?d X¿[8Љ @  í¼€Vñ?d ˜¿[ðˆw @uÐÀ[  í½€Wñ?d Ø¿[;s¡  @  í¾Xñ?d 0À[_ƒð_ @  í¿Yñ?d pÀ[sîJž @  íÀZñ?d °À[SH` @  íÁ[ñ?d ðÀ[•ñA @  íÂ\ñ?d 0Á[E@}© @  íÃ]ñ?d pÁ[pv|= @  íÄ^ñ?d °Á[Pƒ~à @  íÅ_ñ?d ðÁ[ögõ @  íÆ`ñ?d 0Â[k#ß4 @  íÇañ?d pÂ[Uîz7 @  íÈbñ?d °Â[uxÉ @  íÉcñ?d ðÂ[³Áè @  íÊdñ?d 0Ã[c@M @  íËeñ?d pÃ[VvL” @  íÌfñ?d °Ã[vƒNj @  íÍgñ?d ðÃ[(€l @  íÎhñ?d 0Ä[1Îçc @  íÏiñ?d pÄ[¢¢|€ @  íÐjñ?d °Ä[‚W~~ @  íÑkñ?d ðÄ[DDÇ_ @  íÒlñ?d 0Å[” K· @  íÓmñ?d pÅ[¡:J# @  íÔnñ?d °Å[ÏHÝ @  íÕoñ?d ðÅ[ºœp7 @  íÖpñ?d 0Æ['ØÐö @  í×qñ?d pÆ[uõ @  íØrñ?d °Æ[9àw  @  íÙsñ?d ðÆ[ÿóÎ* @  íÚtñ?d 0Ç[/»B @  íÛuñ?d pÇ[CV @  íÜvñ?d °Ç[:xA¨ @  íÝwñ?d ðÇ[d{® @  íÞxñ?d 0È[P„—³ @  íßyñ?d pÈ[Òî+à @  íàzñ?d °È[ò) @  íá{ñ?d ðÈ[4? @  íâ|ñ?d€ 0É[%ë× @  î}ñ?d pÉ[ñp¢j @  î~ñ?d °É[Ñ… ” @  îñ?d ðÉ[_¾Ì @  î€ñ?d 0Ê[Âú»  @  îñ?d pÊ[2…At @  î‚ñ?d °Ê[pCŠ @  îƒñ?d ðÊ[Ñ¥Ñ @  î„ñ?d 0Ë[Ê™)9 @  î …ñ?d pË[:æÓ@ @  î †ñ?d °Ë[Ѿ @  î ‡ñ?d ðË[YpU @  î ˆñ?d 0Ì[˜ƒZ @  î ‰ñ?d pÌ[hhy# @  îŠñ?d °Ì[H{Ý @  î‹ñ?d ðÌ[í£f @  îŒñ?d 0Í[=Õ/Ž @  îñ?d pÍ[ͪÕ÷ @  îŽñ?d °Í[í_×  @  îñ?d ðÍ[E @  îñ?d 0Î[Ž´Ï @  î‘ñ?d pÎ[~~N¶ @  î’ñ?d °Î[^‹LH @  î“ñ?d ðÎ[V*ª @  î”ñ?d 0Ï[†b&û @  î•ñ?d pÏ[vÜ‚ @  î–ñ?d °Ï[VèÞ| @  î—ñ?d ðÏ[Í¢— @  î˜ñ?d 0Ð[s|Ã% @  î™ñ?d pÐ[ƒ9\ @  îšñ?d °Ð[£ö;¢ @  î›ñ?d ðÐ[ðÄ© @  î œñ?d 0Ñ[ǸHA @  î!ñ?d pÑ[7Dz8 @  î"žñ?d °Ñ[2°Æ @  î#Ÿñ?d ðÑ[ 9a @  î$€ ñ?d 0Ò[”[™  @  î%€¡ñ?d pÒ[d$cÙ @  î&€¢ñ?d °Ò[DÑa' @  î'€£ñ?d ðÒ[Lp‡| @  î(€¤ñ?d 0Ó[œ8 ” @  î)€¥ñ?d pÓ[lGñí @  î*€¦ñ?d °Ó[L²ó @  î+€§ñ?d ðÓ[×øRø @  î,€¨ñ?d 0Ô[ζ¡÷ @  î-€©ñ?d pÔ[>É[Ž @  î.€ªñ?d °Ô[€ºñ?d °Ø[v)  @  î?€»ñ?d ðØ[ewÐ9 @  î@€¼ñ?d 0Ù[µ?\Ñ @  îA€½ñ?d pÙ[E@¦¨ @  îB€¾ñ?d °Ù[eµ¤V @  îC€¿ñ?d ðÙ[öHKœ @  îD€Àñ?d 0Ú[k ë] @  îE€Áñ?d pÚ[›s$ @  îF€Âñ?d °Ú[»†Ú @  îG€Ãñ?d ðÚ[³'õ @  îH€Äñ?d 0Û[coyi @  îI€Åñ?d pÛ[“ƒ @  îJ€Æñ?d °Û[³åî @  îK€Çñ?d ðÛ[(¯  @  îL€Èñ?d 0Ü[1áÓ  @  îM€Éñ?d pÜ[Áž)s @  îN€Êñ?d °Ü[ák+ @  îO€Ëñ?d ðÜ[Dkó6 @  îP€Ìñ?d 0Ý[”#Þ @  îQ€Íñ?d pÝ[d\…§ @  îR€Îñ?d °Ý[D©‡Y @  îS€Ïñ?d ðÝ[º³D^ @  îT€Ðñ?d 0Þ['÷äŸ @  îU€Ññ?d pÞ[׈æ @  îV€Òñ?d °Þ[÷} @  îW€Óñ?d ðÞ[ÿÜúC @  îX€Ôñ?d 0ß[/”v« @  îY€Õñ?d pß[ßëŒÒ @  îZ€Öñ?d uÐà[/°ß[ÿŽ, @  î[€×ñ?d ðß[Ô\» @  î\Øñ?d Hà[pM @  î]Ùñ?d ˆà[Rkí @  î^Úñ?d Èà[ÐúúÊ @  î_Ûñ?d á[6%ž÷ @  î`Üñ?d Há[´´‰) @  îaÝñ?d ˆá[æ¯fp @  îbÞñ?d Èá[d>q® @  îcßñ?d â[FA @  îkçñ?d ä[B«= @  îlèñ?d Hä[À:ã @  îméñ?d ˆä[’!üº @  înêñ?d Èä[°ëd @  îoëñ?d å[çi¨é @  îpìñ?d Hå[eø¿7 @  îqíñ?d ˆå[7ãPn @  îrîñ?d Èå[µrG° @  îsïñ?d æ[T½3¨ @  îtðñ?d Hæ[Ö,$v @  îuññ?d ˆæ[„7Ë/ @  îvòñ?d Èæ[¦Üñ @  îwóñ?d ç[\Þ¡œ @  îxôñ?d Hç[ÞO¶B @  îyõñ?d ˆç[ŒTY @  îzöñ?d Èç[ÅNÅ @  î{÷ñ?d è[#átí @  î|øñ?d Hè[¡pc3 @  î}ùñ?d ˆè[ókŒj @  î~úñ?d Èè[qú›´ @  îûñ?d é[ÚtÉ* @  î€üñ?d Hé[XåÞô @  îýñ?d ˆé[ þ1­ @  î‚þñ?d Èé[ˆo&s @  îƒÿñ?d ê[ÔÄJ @  î„ò?d Hê[VU]à @  î…ò?d ˆê[N²š @  î†ò?d Èê[†ß¥D @  î‡ò?d ë[ܧØ) @  îˆò?d Hë[^6Ï÷ @  î‰ò?d ˆë[ - ® @  îŠò?d Èë[޼7p @  î‹ò?d ì[Ž)rJ @  îŒò?d Hì[ ¸e” @  î ò?d ˆì[^£ŠÍ @  îŽ ò?d Èì[Ü2 @  î ò?d í[+ëÞž @  î ò?d Hí[©zÉ@ @  î‘ ò?d ˆí[ûa& @  î’ò?d Èí[pB» @  î“€ò?d î[å¿6£ @  î”€ò?d Hî[g.!} @  î•€ò?d ˆî[55Î$ @  î–€ò?d Èî[·¤Ùú @  î—€ò?d ï[íܤ— @  î˜€ò?d Hï[oM³I @  î™€ò?d ˆï[=V\ @  îš€ò?d Èï[¿ÇKÎ @  î›€ò?d ð[ÂAI @  îœ€ò?d Hð[šSV— @  î€ò?d ˆð[ÈH¹Î @  îž€ò?d Èð[JÙ® @  îŸ€ò?d ñ[¬Ê- @  î €ò?d Hñ[.—Ýó @  î¡€ò?d ˆñ[|Œ2ª @  î¢€ò?d Èñ[þ%t @  î£€ò?d ò[‚eh° @  î¤€ ò?d Hò[ôn @  î¥€!ò?d ˆò[Rï7 @  î¦€"ò?d Èò[Ð~‡é @  î§€#ò?d ó[Šú„ @  î¨€$ò?d Hó[—íZ @  î©€%ò?d ˆó[ZŒ @  îª€&ò?d Èó[ØÝ @  î«€'ò?d ô[؈Pç @  î¬€(ò?d Hô[ZG9 @  î­€)ò?d ˆô[¨` @  î®€*ò?d Èô[Š“¿¾ @  î¯€+ò?d õ[}Jü3 @  î°€,ò?d Hõ[ÿÛëí @  î±€-ò?d ˆõ[­À´ @  î²€.ò?d Èõ[/Qj @  î³€/ò?d ö[Ξgr @  î´€0ò?d Hö[Lp¬ @  îµ€1ò?d ˆö[Ÿõ @  î¶€2ò?d Èö[œ…ˆ+ @  î·€3ò?d ÷[ÆýõF @  î¸€4ò?d H÷[Dl☠@  î¹€5ò?d ˆ÷[w Á @  îº€6ò?d È÷[”æ @  î»€7ò?d ø[¹Â 7 @  î¼€8ò?d Hø[;S7é @  î½€9ò?d ˆø[iHذ @  î¾€:ò?d Èø[ëÙÏn @  î¿€;ò?d ù[£­Á @  îÀ€<ò?d Hù[!º @  îÁ€=ò?d ˆù[s‹UF @  î€>ò?d Èù[ñB˜ @  îÀ?ò?d ú[}2M @  îÄ€@ò?d Hú[ÿ£ “ @  îÅ€Aò?d ˆú[­¸âÊ @  îÆ€Bò?d Èú[/)õ @  îÇ€Cò?d û[uQˆy @  îÈ€Dò?d Hû[÷ÀŸ§ @  îÉ€Eò?d ˆû[¥Ûpþ @  îÊ€Fò?d Èû['Jg  @  îË€Gò?d ü['ß" @  îÌ€Hò?d Hü[¥N5Ä @  îÍ€Iò?d ˆü[÷UÚ @  î΀Jò?d Èü[uÄÍC @  îÏ€Kò?d ý[‚ŽÎ @  îЀLò?d Hý[Œ™ @  îÑ€Mò?d ˆý[R—vI @  îÒ€Nò?d Èý[Ða— @  îÓ€Oò?d þ[1É @  îÔ€Pò?d Hþ[³XQ @  îÕ€Qò?d ˆþ[áCí @  îÖ€Rò?d Èþ[cÒúÖ @  î×€Sò?d ÿ[9ª‡» @  îØ€Tò?d Hÿ[»;e @  îÙ€Uò?d ˆÿ[é < @  îÚ€uÐ\Vò?d Èÿ[1ž @  îÛWò?d \:,¿5 @  îÜXò?d `\¸½¨ë @  îÝYò?d  \ê¦G² @  îÞZò?d à\h7Pl @  îß[ò?d \Žè4Q @  îà\ò?d `\ y# @  îá]ò?d  \^bÌÖ @  îâ^ò?d€ à\¨0Ç® @  ï_ò?d \5 ÂC @  ï`ò?d `\·˜Õ @  ïaò?d  \ ÊÁ) @  ïbò?d à\¢[Ö÷ @  ïcò?d \6‘ôà @  ïdò?d `\´ã> @  ïeò?d  \(©S @  ïfò?d à\ª8Dà @  ï gò?d \oäú @  ï hò?d `\íuíÊ @  ï iò?d  \z'ù~ @  ï jò?d à\ø¶î  @  ï kò?d \l|Ì· @  ïlò?d `\îíÛi @  ïmò?d  \ßåUª @  ïnò?d à\]tBt @  ïoò?d \yòÍ @  ïpò?d `\ûcÚ_ @  ïqò?d  \l1Îë @  ïrò?d à\î Ù5 @  ïsò?d \zjû" @  ïtò?d `\øûìü @  ïuò?d  \dR\ß @  ïvò?d à\æÃK @  ïwò?d \®ŠÄ @  ïxò?d `\Œ? @  ïyò?d  \m‰® @  ïzò?d à\™üžp @  ï{ò?d \ 6¼g @  ï|ò?d ` \§«¹ @  ï}ò?d   \¯©Ê @  ï ~ò?d à \-8 @  ï!ò?d \yŸâ¾ @  ï"€ò?d ` \ûõ` @  ï#ò?d   \l\áÔ @  ï$‚ò?d à \îÍö  @  ï%ƒò?d \zÔ @  ï&„ò?d ` \ø–Ãà @  ï'…ò?d   \d?sà @  ï(†ò?d à \æ®d> @  ï)‡ò?d \#rÚé @  ï*ˆò?d ` \¡ãÍ7 @  ï+‰ò?d   \6±Ùƒ @  ï,Šò?d à \´ Î] @  ï-‹ò?d \ êìJ @  ï.Œò?d ` \¢{û” @  ï/ò?d   \“suW @  ï0Žò?d à \âb‰ @  ï1ò?d \5dí| @  ï2ò?d `\·õú¢ @  ï3‘ò?d  \ §î @  ï4’ò?d à\¢6ùÈ @  ï5“ò?d \6üÛß @  ï6”ò?d `\´mÌ @  ï7•ò?d  \(Ä|" @  ï8–ò?d à\ªUkü @  ï9—ò?d \Èš– @  ï:˜ò?d `\JˆH @  ï;™ò?d  \ÝÚ™ü @  ï<šò?d à\_KŽ" @  ï=›ò?d \ˬ5 @  ï>œò?d `\I»ë @  ï?ò?d  \Ç  @  ï@žò?d à\EˆÔ @  ïAŸò?d \ü¹µý @  ïB ò?d `\~(¢# @  ïC¡ò?d  \éz¶— @  ïD¢ò?d à\kë¡I @  ïE£ò?d \ÿ!ƒ^ @  ïF¤ò?d `\}°”€ @  ïG¥ò?d  \á$£ @  ïH¦ò?d à\cˆ3} @  ïI§ò?d \¦Tª @  ïJ¨ò?d `\$Åšt @  ïK©ò?d  \³—ŽÀ @  ïLªò?d à\1™ @  ïM«ò?d \¥Ì»  @  ïN¬ò?d `\']¬× @  ïO­ò?d  \U" @  ïP®ò?d à\”Ä5Ê @  ïQ¯ò?d \°Bº? @  ïR°ò?d `\2Ó­á @  ïS±ò?d  \¥¹U @  ïT²ò?d à\'®‹ @  ïU³ò?d \³ÚŒœ @  ïV´ò?d `\1K›B @  ïWµò?d  \­â+a @  ïX¶ò?d à\/s<¿ @  ïY·ò?d \Çýz @  ïZ¸ò?d `\Eê¤ @  ï[¹ò?d  \ÒÝþ @  ï\ºò?d à\PLéÎ @  ï]»ò?d \ĆËÙ @  ï^¼ò?d `\FÜ @  ï_½ò?d  \fut @  ï`¾ò?d à\äˆbª @  ïa¿ò?d \­éÁ’ @  ïbÀò?d `\/xÖL @  ïcÁò?d  \¸*Âø @  ïdÂò?d à\:»Õ& @  ïeÃò?d \®q÷1 @  ïfÄò?d `\,ààï @  ïgÅò?d  \°IPÌ @  ïhÆò?d à\2ØG @  ïiÇò?d \÷ùÅ @  ïjÈò?d `\u•î @  ïkÉò?d  \âÇú¯ @  ïlÊò?d à\`Víq @  ïmËò?d \ôœÏf @  ïnÌò?d `\v ظ @  ïoÍò?d  \GV{ @  ïpÎò?d à\Å”A¥ @  ïqÏò?d \áÎP @  ïrÐò?d `\cƒÙŽ @  ïsÑò?d  \ôÑÍ: @  ïtÒò?d à\v@Úä @  ïuÓò?d \âŠøó @  ïvÔò?d `\`ï- @  ïwÕò?d  \ü²_uÐ \ @  ïxÖò?d à\¼Š¯ @  ïy×ò?d 8 \<» @  ïzØò?d x \“‚+e @  ï{Ùò?d ¸ \Ð?Ñ @  ï|Úò?d ø \†A( @  ï}Ûò?d 8!\‹  @  ï~Üò?d x!\Æ @  ïÝò?d ¸!\ýE‚ @  ï€Þò?d ø!\Ô•È @  ïßò?d 8"\Æå#á @  ï‚àò?d x"\Dt4? @  ïƒáò?d ¸"\Ó& ‹ @  ï„âò?d ø"\Q·7U @  ï…ãò?d 8#\Å}B @  ï†äò?d x#\Gìœ @  ï‡åò?d ¸#\ÛE²¿ @  ïˆæò?d ø#\YÔ¥a @  ï‰çò?d 8$\œ¶ @  ïŠèò?d x$\™ h @  ï‹éò?d ¸$\‰ËÜ @  ïŒêò?d ø$\ Z @  ïëò?d 8%\Ÿ- @  ïŽìò?d x%\:Ë @  ïíò?d ¸%\, ´ @  ïîò?d ø%\®˜£Ö @  ï‘ïò?d 8&\Š,# @  ï’ðò?d x&\;ý @  ï“ñò?d ¸&\ŸÝ/I @  ï”òò?d ø&\L8— @  ï•óò?d 8'\‰†€ @  ï–ôò?d x'\  ^ @  ï—õò?d ¸'\—¾½} @  ï˜öò?d ø'\/ª£ @  ï™÷ò?d 8(\ýBkf @  ïšøò?d x(\Ó|¸ @  ï›ùò?d ¸(\èh  @  ïœúò?d ø(\jÒ @  ïûò?d 8)\þÚ]Å @  ïžüò?d x)\|KJ @  ïŸýò?d ¸)\\Eãh @  ï þò?d ø)\ÞÔô¶ @  ï¡ÿò?d 8*\õV @  ï¢ó?d x*\w…AÎ @  ï£ó?d ¸*\à×Uz @  ï¤ó?d ø*\bFB¤ @  ï¥ó?d 8+\öŒ`³ @  ï¦ó?d x+\twm @  ï§ó?d ¸+\è´ÇN @  ï¨ó?d ø+\j%Ð @  ï©ó?d 8,\¯ùnG @  ïªó?d x,\-hy™ @  ï« ó?d ¸,\º:m- @  ï¬ ó?d ø,\8«zó @  ï­ ó?d 8-\¬aXä @  ï® ó?d x-\.ðO: @  ï¯ ó?d ¸-\øÁù @  ï°ó?d ø-\iÖ' @  ï±ó?d 8.\¹ïYÒ @  ï²ó?d x.\;~N  @  ï³ó?d ¸.\¬,Z¸ @  ï´ó?d ø.\.½Mf @  ïµó?d 8/\ºwoq @  ï¶ó?d x/\8æx¯ @  ï·ó?d ¸/\¤OÈŒ @  ï¸ó?d ø/\&ÞßR @  ï¹ó?d 80\D’.8 @  ïºó?d x0\Æ9æ @  ï»ó?d ¸0\QQ-R @  ï¼ó?d ø0\ÓÀ:Œ @  ï½ó?d 81\G › @  ï¾ó?d x1\Å›E @  ï¿ó?d ¸1\K’ ¤ @  ïÀó?d ø1\É·z @  ïÁó?d 82\p2S @  ï ó?d x2\ò£ @  ïÃ!ó?d ¸2\eñ9 @  ïÄ"ó?d ø2\ç`ç @  ïÅ#ó?d 83\sª7ð @  ïÆ$ó?d x3\ñ; . @  ïÇ%ó?d ¸3\m’  @  ïÈ&ó?d ø3\ï‡Ó @  ïÉ'ó?d 84\*ß9 @  ïÊ(ó?d x4\¨N.Ú @  ïË)ó?d ¸4\?:n @  ïÌ*ó?d ø4\½-° @  ïÍ+ó?d 85\)G§ @  ïÎ,ó?d x5\«Öy @  ïÏ-ó?d ¸5\šÞ–º @  ïÐ.ó?d ø5\Od @  ïÑ/ó?d 86\<É‘ @  ïÒ0ó?d x6\¾XO @  ïÓ1ó?d ¸6\) û @  ïÔ2ó?d ø6\«›% @  ïÕ3ó?d 87\?Q82 @  ïÖ4ó?d x7\½À/ì @  ï×5ó?d ¸7\!iŸÏ @  ïØ6ó?d ø7\£øˆ @  ïÙ7ó?d 88\K•IÔ @  ïÚ8ó?d x8\É^  @  ïÛ9ó?d ¸8\^VJ¾ @  ïÜ:ó?d ø8\ÜÇ]` @  ïÝ;ó?d 89\H w @  ïÞ<ó?d x9\Êœh© @  ïß=ó?d ¸9\ê’ÁÚ @  ïà>ó?d ø9\hÖ @  ïá?ó?d 8:\!bu< @  ïâ@ó?d€ x:\È¯Ž  @  ðAó?d ¸:\¾¼Ò‘ @  ðBó?d ø:\<-ÅO @  ðCó?d 8;\m®µ @  ðDó?d x;\ï? k @  ðEó?d ¸;\½$ä2 @  ðFó?d ø;\?µóì @  ðGó?d 8<\4ÛA @  ðHó?d x<\¶JŸ @  ð Ió?d ¸<\äQêÆ @  ð Jó?d ø<\fÀý @  ð Kó?d 8=\7C$â @  ð Ló?d x=\µÒ3< @  ð Mó?d ¸=\çÉÜe @  ðNó?d ø=\eXË» @  ðOó?d 8>\"Í%Ô @  ðPó?d x>\ \2  @  ðQó?d ¸>\òGÝS @  ðRó?d ø>\pÖÊ @  ðSó?d 8?\!Uw @  ðTó?d x?\£Ä© @  ðUó?duÐ@\7 ¸?\ñßëð @  ðVó?d ø?\sNü. @  ðWó?d P@\¢ÂT° @  ðXó?d @\‚7VN @  ðYó?d Ð@\rH¬7 @  ðZó?d A\¢ ß @  ð[ó?d PA\¡Zb @  ð\ó?d A\¯`í @  ð]ó?d ÐA\qК” @  ð^ó?d B\ì”:U @  ð_ó?d PB\8e}I @  ð `ó?d B\· @  ð!aó?d ÐB\èï…Î @  ð"bó?d C\8§ & @  ð#có?d PC\;ýKê @  ð$dó?d C\I @  ð%eó?d ÐC\ëw³m @  ð&fó?d D\ò9@b @  ð'gó?d PD\bˆE @  ð(hó?d D\B}Gà @  ð)ió?d ÐD\²½™ @  ð*jó?d E\bJ1q @  ð+kó?d PE\as½ @  ð,ló?d E\AåqC @  ð-mó?d ÐE\±š‹: @  ð.nó?d F\,Þ+û @  ð/oó?d PF\tžr‹ @  ð0pó?d F\Tkpu @  ð1qó?d ÐF\¤Š  @  ð2ró?d G\t\ä @  ð3só?d PG\wD( @  ð4tó?d G\WóFÖ @  ð5uó?d ÐG\§Œ¼¯ @  ð6vó?d H\“s0² @  ð7wó?d PH\Â5Î @  ð8xó?d H\#770 @  ð9yó?d ÐH\ÓHÍI @  ð:zó?d I\A¡ @  ð;{ó?d PI\Zm @  ð<|ó?d I\ ¯“ @  ð=}ó?d ÐI\ÐÐûê @  ð>~ó?d J\M”[+ @  ð?ó?d PJ\Úô[& @  ð@€ó?d J\úYØ @  ðAó?d ÐJ\ ~£¡ @  ðB‚ó?d K\Ú6/I @  ðCƒó?d PK\Ùlm… @  ðD„ó?d K\ù™o{ @  ðE…ó?d ÐK\ æ• @  ðF†ó?d L\¨f  @  ðG‡ó?d PL\€cq @  ðHˆó?d L\ ìa @  ðI‰ó?d ÐL\P“›ö @  ðJŠó?d M\€Û @  ðK‹ó?d PM\ƒUÒ @  ðLŒó?d M\£tW, @  ðMó?d ÐM\S ­U @  ðNŽó?d N\ÎO ” @  ðOó?d PN\–Tä @  ðPó?d N\¶úV @  ðQ‘ó?d ÐN\F…¬c @  ðR’ó?d O\–Í ‹ @  ðS“ó?d PO\•—bG @  ðT”ó?d O\µb`¹ @  ðU•ó?d ÐO\EšÀ @  ðV–ó?d P\ûÃ&r @  ðW—ó?d PP\kr# @  ðX˜ó?d P\K‡!ð @  ðY™ó?d ÐP\»øÛ‰ @  ðZšó?d Q\k°Wa @  ð[›ó?d PQ\hê­ @  ð\œó?d Q\HS @  ð]ó?d ÐQ\¸`í* @  ð^žó?d R\%$Më @  ð_Ÿó?d PR\ñÕ ÷ @  ð` ó?d R\Ñ   @  ða¡ó?d ÐR\!_òp @  ðb¢ó?d S\ñ~˜ @  ðc£ó?d PS\òMª @  ðe¥ó?d ÐS\"ÇÄÓ @  ðf¦ó?d T\;‰7Ü @  ðg§ó?d PT\«82  @  ðh¨ó?d T\‹Í0^ @  ði©ó?d ÐT\{²Ê' @  ðjªó?d U\«úFÏ @  ðk«ó?d PU\¨  @  ðl¬ó?d U\ˆUý @  ðm­ó?d ÐU\x*ü„ @  ðn®ó?d V\ån\E @  ðo¯ó?d PV\½.5 @  ðp°ó?d V\ÛË @  ðq±ó?d ÐV\m¤ý² @  ðr²ó?d W\½ìqZ @  ðs³ó?d PW\¾¶3– @  ðt´ó?d W\žC1h @  ðuµó?d ÐW\n<Ë @  ðv¶ó?d X\ZÃG  @  ðw·ó?d PX\ÊrBp @  ðx¸ó?d X\ê‡@Ž @  ðy¹ó?d ÐX\øº÷ @  ðzºó?d Y\ʰ6 @  ð{»ó?d PY\ÉêtÓ @  ð|¼ó?d Y\év- @  ð}½ó?d ÐY\`ŒT @  ð~¾ó?d Z\„$,• @  ð¿ó?d PZ\íÔH; @  ð€Àó?d Z\Í!JÅ @  ðÁó?d ÐZ\=^°¼ @  ð‚Âó?d [\íƆ @  ð†Æó?d \\'ˆu @  ð‡Çó?d P\\·9pl @  ðˆÈó?d \\—Ìr’ @  ð‰Éó?d Ð\\g³ˆë @  ðŠÊó?d ]\·û @  ð‹Ëó?d P]\´¡FÏ @  ðŒÌó?d ]\”TD1 @  ðÍó?d Ð]\d+¾H @  ðŽÎó?d ^\ùo‰ @  ðÏó?d P^\¡/Gù @  ðÐó?d ^\ÚE @  ð‘Ñó?d Ð^\q¥¿~ @  ð’Òó?d _\¡í3– @  ð“Óó?d P_\¢·qZ @  ð”Ôó?d _\‚Bs¤ @  ðuÐ`\•Õó?d Ð_\r=‰Ý @  ð–Öó?d (`\ÌÅ @  ð¡áó?d èb\YèG @  ð¢âó?d (c\Æd¯ @  ð£ãó?d hc\ÅK&c @  ð¤äó?d ¨c\å¾$ @  ð¥åó?d èc\ÁÞä @  ð¦æó?d (d\ -ë @  ð§çó?d hd\œ>(— @  ð¨èó?d ¨d\¼Ë*i @  ð©éó?d èd\L´Ð @  ðªêó?d (e\œü\ø @  ð«ëó?d he\Ÿ¦4 @  ð¬ìó?d ¨e\¿SÊ @  ð­íó?d èe\O,æ³ @  ð®îó?d (f\ÒhFr @  ð¯ïó?d hf\Š( @  ð°ðó?d ¨f\ªÝü @  ð±ñó?d èf\Z¢ç… @  ð²òó?d (g\Šêkm @  ð³óó?d hg\‰°)¡ @  ð´ôó?d ¨g\©E+_ @  ðµõó?d èg\Y:Ñ& @  ð¶öó?d (h\mÅ]; @  ð·÷ó?d hh\ýtXG @  ð¸øó?d ¨h\ÝZ¹ @  ð¹ùó?d èh\-þ À @  ðºúó?d (i\ý¶,( @  ð»ûó?d hi\þìnä @  ð¼üó?d ¨i\Þl @  ð½ýó?d èi\.f–c @  ð¾þó?d (j\³"6¢ @  ð¿ÿó?d hj\g,\5 @  ðÀô?d ¨j\GÙ^Ë @  ðÁô?d èj\·¦¤² @  ðÂô?d (k\gî(Z @  ðÃô?d hk\d´j– @  ðÄô?d ¨k\DAhh @  ðÅô?d èk\´>’ @  ðÆô?d (l\­pa @  ðÇô?d hl\=Ádb @  ðÈô?d ¨l\4fœ @  ðÉ ô?d èl\íKœå @  ðÊ ô?d (m\=  @  ðË ô?d hm\>YRÁ @  ðÌ ô?d ¨m\¬P? @  ðÍ ô?d èm\îÓªF @  ðÎô?d (n\s— ‡ @  ðÏô?d hn\+×S÷ @  ðÐô?d ¨n\ "Q  @  ðÑô?d èn\û]«p @  ðÒô?d (o\+'˜ @  ðÓô?d ho\(OeT @  ðÔô?d ¨o\ºgª @  ðÕô?d èo\øÅÓ @  ðÖô?d (p\F!a @  ð×ô?d hp\Öª$ @  ðØô?d ¨p\ö_&ã @  ðÙô?d èp\ Üš @  ðÚô?d (q\ÖhPr @  ðÛô?d hq\Õ2¾ @  ðÜô?d ¨q\õÇ@ @  ðÝô?d èq\¸ê9 @  ðÞô?d (r\˜üJø @  ðßô?d hr\L ä @  ðà ô?d ¨r\lø @  ðá!ô?d èr\œ‡õc @  ðâ"ô?d€ (s\8 e- @  ñ#ô?d hs\ÚoÈ @  ñ$ô?d ¨s\úâm6 @  ñ%ô?d ès\ÏÔl¢ @  ñ&ô?d (t\ÖšŸ­ @  ñ'ô?d ht\ˆ™Å« @  ñ(ô?d ¨t\¨lÇU @  ñ)ô?d èt\–¡bV @  ñ*ô?d (u\Féî¾ @  ñ +ô?d hu\€úWŸ @  ñ ,ô?d ¨u\ Ua @  ñ -ô?d èu\•9Tõ @  ñ .ô?d (v\}ô4 @  ñ /ô?d hv\3.ÌÞ @  ñ0ô?d ¨v\ÛÎ  @  ñ1ô?d èv\€·Uà @  ñ2ô?d (w\PÿÙ+ @  ñ3ô?d hw\–ì`  @  ñ4ô?d ¨w\¶bô @  ñ5ô?d èw\ƒ/c` @  ñ6ô?d (x\·Ðï} @  ñ7ô?d hx\éÓµ{ @  ñ8ô?d ¨x\É&·… @  ñ9ô?d èx\÷ë† @  ñ:ô?d (y\'£žn @  ñ;ô?d hy\á°'O @  ñ<ô?d ¨y\ÁE%± @  ñ=ô?d èy\ôs$% @  ñ>ô?d (z\i7„ä @  ñ?ô?d hz\?ƒÃ @  ñ@ô?d ¨z\v’= @  ñAô?d èz\.n @  ñ Bô?d ({\MT¢† @  ñ!Cô?d h{\‹G§ @  ñ"Dô?d ¨{\«²Y @  ñ#Eô?d è{\ž„Í @  ñ$Fô?d (|\‡Êë @  ñ%Gô?d h|\ÙɱÄ @  ñ&Hô?d ¨|\ù<³: @  ñ'Iô?d è|\Çñ9 @  ñ(Jô?d (}\¹šÑ @  ñ)Kô?d h}\Ѫ#ð @  ñ*Lô?d ¨}\ñ_! @  ñ+Mô?d è}\Äi š @  ñ,Nô?d (~\Y-€[ @  ñ-Oô?d h~\b~¸± @  ñ.Pô?d ¨~\B‹ºO @  ñ/Qô?d è~\Ñç!¬ @  ñ0Rô?d (\¯­D @  ñ1Sô?d h\Ǽe @  ñ2Tô?d ¨\uЀ\'çI› @  ñ3Uô?d è\ÖðÚ @  ñ4Vô?d @€\~h® @  ñ5Wô?d €€\‚]ˆ @  ñ6Xô?d À€\žJV @  ñ7Yô?d \lŠtc @  ñ8Zô?d @\îc½ @  ñ9[ô?d €\Šlϼ @  ñ:\ô?d À\ýØb @  ñ;]ô?d ‚\"né @  ñ<^ô?d @‚\ y7 @  ñ=_ô?d €‚\¤m! @  ñ>`ô?d À‚\&žzÿ @  ñ?aô?d ƒ\X*[ @  ñ@bô?d @ƒ\Ú»LÖ @  ñAcô?d €ƒ\¾Ìà× @  ñBdô?d Àƒ\<]÷  @  ñCeô?d „\’´L @  ñDfô?d @„\%’ @  ñEgô?d €„\ìBJ´ @  ñFhô?d À„\nÓ]j @  ñGiô?d …\Çc_ @  ñHjô?d @…\€Vt @  ñIkô?d €…\ä!Ø€ @  ñJlô?d À…\f°Ï^ @  ñKmô?d †\LSyÕ @  ñLnô?d @†\ÎÂn  @  ñMoô?d €†\WõCÁ @  ñNpô?d À†\ÕdT @  ñOqô?d ‡\ÑTÊ @  ñPrô?d @‡\–@C @  ñQsô?d €‡\ò7ï @  ñRtô?d À‡\p¦øË @  ñSuô?d ˆ\óþbœ @  ñTvô?d @ˆ\qouB @  ñUwô?d €ˆ\:d @  ñVxô?d Àˆ\™-º @  ñWyô?d ‰\c @  ñXzô?d @‰\áQ @  ñY{ô?d €‰\…k¨P @  ñZ|ô?d À‰\ú¿Ž @  ñ[}ô?d Š\-  @  ñ\~ô?d @Š\¯ˆÛ @  ñ]ô?d €Š\FžKN @  ñ^€ô?d ÀŠ\Ä\ @  ñ_ô?d ‹\¼{õ @  ñ`‚ô?d @‹\–-l+ @  ñaƒô?d €‹\òZÀ* @  ñb„ô?d À‹\pË×ô @  ñc…ô?d Œ\Þ"2± @  ñd†ô?d @Œ\\³%o @  ñe‡ô?d €Œ\ ÔjI @  ñfˆô?d ÀŒ\"E}— @  ñg‰ô?d \NQC¢ @  ñhŠô?d @\ÌÀT| @  ñi‹ô?d €\¨·ø} @  ñjŒô?d À\*&ï£ @  ñkô?d Ž\ÅY( @  ñlŽô?d @Ž\‚TNö @  ñmô?d €Ž\cc< @  ñnô?d ÀŽ\™òtâ @  ño‘ô?d \XGt7 @  ñp’ô?d @\ÚÖcé @  ñq“ô?d €\¾¡Ïè @  ñr”ô?d À\<0Ø6 @  ñs•ô?d \5IrÎ @  ñt–ô?d @\·Øe @  ñu—ô?d €\K¿*6 @  ñv˜ô?d À\É.=è @  ñw™ô?d ‘\¥:Ý @  ñxšô?d @‘\'« @  ñy›ô?d €‘\Cܸ @  ñzœô?d À‘\ÁM¯Ü @  ñ{ô?d ’\ë®W @  ñ|žô?d @’\i?‰ @  ñ}Ÿô?d €’\m¿Ÿ @  ñ~ ô?d À’\ï. A @  ñ¡ô?d “\ṙ @  ñ€¢ô?d @“\ð] Y @  ñ£ô?d €“\”*§X @  ñ‚¤ô?d À“\»°† @  ñƒ¥ô?d ”\¸RUà @  ñ„¦ô?d @”\:ÃB @  ñ…§ô?d €”\Ƥ ; @  ñ†¨ô?d À”\D5å @  ñ‡©ô?d •\(!$Ð @  ñˆªô?d @•\ª°3 @  ñ‰«ô?d €•\ÎÇŸ @  ñЬô?d À•\LVˆÑ @  ñ‹­ô?d –\fµ>Z @  ñŒ®ô?d @–\ä$)„ @  ñ¯ô?d €–\}N @  ñްô?d À–\ÿ‚ @  ñ±ô?d —\>7E @  ñ²ô?d @—\¼¦› @  ñ‘³ô?d €—\ØÑ¨š @  ñ’´ô?d À—\Z@¿D @  ñ“µô?d ˜\Ù% @  ñ”¶ô?d @˜\[‰2Í @  ñ•·ô?d €˜\§î}ë @  ñ–¸ô?d À˜\%j5 @  ñ—¹ô?d ™\IkT @  ñ˜ºô?d @™\ËúCÞ @  ñ™»ô?d €™\¯ïß @  ñš¼ô?d À™\-ø @  ñ›½ô?d š\ÿNŠ @  ñœ¾ô?d @š\…nYT @  ñ¿ô?d €š\q¾XS @  ñžÀô?d Àš\ó/O @  ñŸÁô?d ›\#œhè @  ñ Âô?d @›\¡ 6 @  ñ¡Ãô?d €›\ÅzÓ7 @  ñ¢Äô?d À›\GëÄé @  ñ£Åô?d œ\é!¬ @  ñ¤Æô?d @œ\k“6r @  ñ¥Çô?d €œ\—ôyT @  ñ¦Èô?d Àœ\enŠ @  ñ§Éô?d \yqP¿ @  ñ¨Êô?d @\ûàGa @  ñ©Ëô?d €\Ÿ—ë` @  ñªÌô?d À\ü¾ @  ñ«Íô?d ž\7åJ5 @  ñ¬Îô?d @ž\µt]ë @  ñ­Ïô?d €ž\,Cp! @  ñ®Ðô?d Àž\®Ògÿ @  ñ¯Ñô?d Ÿ\ogg* @  ñ°Òô?d @Ÿ\íöpô @  ñ±Óô?d €Ÿ\‰Üõ @  ñ²ÔôuР\?d ÀŸ\ Ë+ @  ñ³Õô?d  \° @  ò€õ?d ˜°\RNõ @  ò€õ?d ذ\ÃY+ @  ò€õ?d ±\½e8d @  ò€õ?d X±\?ô/º @  ò€õ?d ˜±\•1ÜÁ @  ò€õ?d ر\ Ë @  ò€õ?d ²\ø †y @  ò€õ?d X²\z›‘§ @  ò€õ?d ˜²\»R~\ @  ò€ õ?d ز\9Ãi‚ @  ò€!õ?d ³\›eÍ @  ò€"õ?d X³\ô @  ò€#õ?d ˜³\–õ8 @  ò €$õ?d س\âæ @  ò!€%õ?d ´\æ§üN @  ò"€&õ?d X´\d6ë @  ò#€'õ?d ˜´\]_[ @  ò$€(õ?d Ø´\߉H… @  ò%€)õ?d µ\}/)Ê @  ò&€*õ?d Xµ\ÿ¾> @  ò'€+õ?d ˜µ\U{Ío @  ò(€,õ?d ص\×êÚ± @  ò)€-õ?d ¶\8@—× @  ò*€.õ?d X¶\ºÑ€  @  ò+€/õ?d ˜¶\æ¯V. @  ò,€0õ?d ض\d>Að @  ò-€1õ?d ·\Ƙ ¿ @  ò.€2õ?d X·\D 7a @  ò/€3õ?d ˜·\Cmúú @  ò0€4õ?d Ø·\Áüí$ @  ò1€5õ?d ¸\‡íŒž @  ò2€6õ?d X¸\|›@ @  ò3€7õ?d ˜¸\õ?d Xº\Û›ðÙ @  ò;€?õ?d ˜º\ê 3 @  ò<€@õ?d غ\h“í @  ò=€Aõ?d »\Ê5|¢ @  ò>€Bõ?d X»\H¤k| @  ò?€Cõ?d ˜»\ðÁ‡Å @  ò@€Dõ?d Ø»\rP @  òA€Eõ?d ¼\ð޳ @  òB€Fõ?d X¼\›a™m @  òC€Gõ?d ˜¼\¢O-¦ @  òD€Hõ?d ؼ\ Þ:x @  òE€Iõ?d ½\‚x[7 @  òF€Jõ?d X½\éLé @  òG€Kõ?d ˜½\ª,¿’ @  òH€Lõ?d ؽ\(½¨L @  òI€Mõ?d ¾\Çå* @  òJ€Nõ?d X¾\E†òô @  òK€Oõ?d ˜¾\ø$Ó @  òL€Põ?d ؾ\›i3  @  òM€Qõ?d ¿\9ÏRB @  òN€Rõ?d X¿\»^Eœ @  òO€Sõ?d ˜¿\¼:ˆ @uÐÀ\  òP€Tõ?d Ø¿\>«ŸÙ @  òQ€Uõ?d 0À\(µ#, @  òR€Võ?d pÀ\ª$4ò @  òS€Wõ?d °À\“ €9 @  òT€Xõ?d ðÀ\›—ç @  òU€Yõ?d 0Á\³=ö¨ @  òV€Zõ?d pÁ\1¬áv @  òW€[õ?d °Á\›i  @  òX€\õ?d ðÁ\øÓ @  òY€]õ?d 0Â\öRHµ @  òZ€^õ?d pÂ\tÃ_k @  ò[€_õ?d °Â\µ ° @  ò\€`õ?d ðÂ\7›§N @  ò]€aõ?d 0Ã\•=Æ @  ò^€bõ?d pÃ\¬Ñß @  ò_€cõ?d °Ã\Î;ô @  ò`€dõ?d ðÃ\ƒ_,* @  òa€eõ?d 0Ä\èÿ2‚ @  òb€fõ?d pÄ\jn%\ @  òc€gõ?d °Ä\S@‘— @  òd€hõ?d ðÄ\ÑцI @  òe€iõ?d 0Å\swç @  òf€jõ?d pÅ\ñæðØ @  òg€kõ?d °Å\[#£ @  òh€lõ?d ðÅ\Ù²} @  òi€mõ?d 0Æ\6Y @  òj€nõ?d pÆ\´‰NÅ @  òk€oõ?d °Æ\è÷˜â @  òl€põ?d ðÆ\jf< @  òm€qõ?d 0Ç\ÈÀîs @  òn€rõ?d pÇ\JQù­ @  òo€sõ?d °Ç\M546 @  òp€tõ?d ðÇ\Ϥ#è @  òq€uõ?d 0È\‰µBR @  òr€võ?d pÈ\ $UŒ @  òs€wõ?d °È\2 áG @  òt€xõ?d ðÈ\°›ö™ @  òu€yõ?d 0É\=—Ö @  òv€zõ?d pÉ\¬€ @  òw€{õ?d °É\:iss @  òx€|õ?d ðÉ\¸ød­ @  òy€}õ?d 0Ê\WR)Ë @  òz€~õ?d pÊ\ÕÃ> @  ò{€õ?d °Ê\ùœm @  ò|€€õ?d ðÊ\{ ‡³ @  ò}€õ?d 0Ë\Ù«æü @  ò~€‚õ?d pË\[:ñ" @  ò€ƒõ?d °Ë\ -ª @  ò€€„õ?d ðË\‚˜:t @  ò€…õ?d 0Ì\é8$Ü @  ò‚€†õ?d pÌ\k©3 @  òƒ€‡õ?d °Ì\R‡‡É @  ò„€ˆõ?d ðÌ\Ð @  ò…€‰õ?d 0Í\r°ñX @  ò†€Šõ?d pÍ\ð!æ† @  ò‡€‹õ?d °Í\Zäý @  òˆ€Œõ?d ðÍ\Øu# @  ò‰€õ?d 0Î\7ßOE @  òŠ€Žõ?d pÎ\µNX› @  ò‹€õ?d °Î\é0޼ @  òŒ€õ?d ðÎ\k¡™b @  ò€‘õ?d 0Ï\Éø- @  òŽ€’õ?d pÏ\K–ïó @  ò€“õ?d °Ï\Lò"h @  ò€”õ?d ðÏ\Îc5¶ @  ò‘€•õ?d 0Ð\Sd£ @  ò’€–õ?d pÐ\€Âs} @  ò“€—õ?d °Ð\¹ìǶ @  ò”€˜õ?d ðÐ\;}Ðh @  ò•€™õ?d 0Ñ\™Û±' @  ò–€šõ?d pÑ\J¦ù @  ò—€›õ?d °Ñ\±U‚ @  ò˜€œõ?d ðÑ\3B\ @  ò™€õ?d 0Ò\Ü´: @  òš€žõ?d pÒ\^%ä @  ò›€Ÿõ?d °Ò\Ÿì÷ @  òœ€ õ?d ðÒ\}àÁ @  ò€¡õ?d 0Ó\¿ÛŽ @  òž€¢õ?d pÓ\=J–P @  òŸ€£õ?d °Ó\+(|{ @  ò €¤õ?d ðÓ\©¹k¥ @  ò¡€¥õ?d 0Ô\Âu  @  ò¢€¦õ?d pÔ\@ˆbÓ @  ò£€§õ?d °Ô\y¦Ö @  ò¤€¨õ?d ðÔ\û7ÁÆ @  ò¥€©õ?d 0Õ\Y‘ ‰ @  ò¦€ªõ?d pÕ\Û·W @  ò§€«õ?d °Õ\qÅD, @  ò¨€¬õ?d ðÕ\óTSò @  ò©€­õ?d 0Ö\þ” @  òª€®õ?d pÖ\žo J @  ò«€¯õ?d °Ö\Âßm @  ò¬€°õ?d ðÖ\@€È³ @  ò­€±õ?d 0×\â&©ü @  ò®€²õ?d p×\`·¾" @  ò¯€³õ?d °×\gÓs¹ @  ò°€´õ?d ð×\åBdg @  ò±€µõ?d 0Ø\£SÝ @  ò²€¶õ?d pØ\! @  ò³€·õ?d °Ø\ì¦È @  ò´€¸õ?d ðØ\š}± @  òµ€¹õ?d 0Ù\8ÛÐY @  ò¶€ºõ?d pÙ\ºJLJ @  ò·€»õ?d °Ù\4ü @  ò¸€¼õ?d ðÙ\’#" @  ò¹€½õ?d 0Ú\}´nD @  òº€¾õ?d pÚ\ÿ%yš @  ò»€¿õ?d °Ú\μƒp @  ò¼€Àõ?d ðÚ\L-”® @  ò½€Áõ?d 0Û\î‹õá @  ò¾€Âõ?d pÛ\lâ? @  ò¿€Ãõ?d °Û\Ô† @  òÀ€Äõ?d ðÛ\VîX @  òÁ€Åõ?d 0Ü\=Nð @  ò€Æõ?d pÜ\¿ß. @  òÀÇõ?d °Ü\†ñ¤å @  òÄ€Èõ?d ðÜ\`³; @  òÅ€Éõ?d 0Ý\¦ÆÒt @  òÆ€Êõ?d pÝ\$WŪ @  òÇ€Ëõ?d °Ý\Ž’6Ñ @  òÈ€Ìõ?d ðÝ\ ! @  òÉ€Íõ?d 0Þ\ã©li @  òÊ€Îõ?d pÞ\a8{· @  òË€Ïõ?d °Þ\=F­ @  òÌ€Ðõ?d ðÞ\¿×ºN @  òÍ€Ñõ?d 0ß\qÛ @  ò΀Òõ?d pß\ŸàÌß @  òÏ€Óõ?d uÐà\/°ß\˜„D @  òЀÔõ?d ðß\š @  òÑ€Õõ?d Hà\q_¥Ë @  òÒ€Öõ?d ˆà\Qª§5 @  òÓ€×õ?d Èà\·`u¢ @  òÔØõ?d á\g(ùJ @  òÕÙõ?d Há\—W3 @  òÖÚõ?d ˆá\·¢Í @  ò×Ûõ?d Èá\¿ç– @  òØÜõ?d â\"GGW @  òÙÝõ?d Hâ\Ò8½. @  òÚÞõ?d ˆâ\òͿР@  òÛßõ?d Èâ\‘`E  @  òÜàõ?d ã\A(Éã @  òÝáõ?d Hã\±W3š @  òÞâõ?d ˆã\‘¢1d @  òßãõ?d Èã\%¤Îo @  òàäõ?d ä\<ê=` @  òáåõ?d Hä\Ì•Ç @  òâæõ?d€ ˆä\˜£ÙA @  óçõ?d Èä\â¨0ƒ @  óèõ?d å\2à¼k @  óéõ?d Hå\Ö½ÿ @  óêõ?d ˆå\'#¿ @  óëõ?d Èå\á0  @  óìõ?d æ\|t¦á @  óíõ?d Hæ\B¹â @  óîõ?d ˆæ\bL @  ó ïõ?d Èæ\Y9ö @  ó ðõ?d ç\‰Wµ @  ó ñõ?d Hç\¼a´Š @  ó òõ?d ˆç\œ”¶t @  ó óõ?d Èç\Z‡U @  óôõ?d è\nxƒH @  óõõ?d Hè\ý« @  óöõ?d ˆè\ÝáU @  ó÷õ?d Èè\ƒâ@S @  óøõ?d é\SªÌ» @  óùõ?d Hé\fœÍ/ @  óúõ?d ˆé\FiÏÑ @  óûõ?d Èé\€zvð @  óüõ?d ê\>Ö1 @  óýõ?d Hê\#ós2 @  óþõ?d ˆê\qÌ @  óÿõ?d Èê\…1QP @  óö?d ë\Uyݸ @  óö?d Hë\`OÜ, @  óö?d ˆë\@ºÞÒ @  óö?d Èë\†©gó @  óö?d ì\Ÿç”ü @  óö?d Hì\(¯ @  ó ö?d ˆì\=x*Q @  ó!ö?d Èì\c{pW @  ó"ö?d í\³3ü¿ @  ó# ö?d Hí\†ý+ @  ó$ ö?d ˆí\¦ðÿÕ @  ó% ö?d Èí\`ãFô @  ó& ö?d î\ý§æ5 @  ó' ö?d Hî\ÃjC6 @  ó(ö?d ˆî\ãŸAÈ @  ó)ö?d Èî\ØÌy" @  ó*ö?d ï\„õÊ @  ó+ö?d Hï\=²ô^ @  ó,ö?d ˆï\Gö  @  ó-ö?d Èï\ÛTO @  ó.ö?d ð\eŠó3 @  ó/ö?d Hð\öæhÐ @  ó0ö?d ˆð\Öj. @  ó1ö?d Èð\ˆ0( @  ó2ö?d ñ\XX¼À @  ó3ö?d Hñ\mn½T @  ó4ö?d ˆñ\M›¿ª @  ó5ö?d Èñ\‹ˆ‹ @  ó6ö?d ò\̦J @  ó7ö?d Hò\(I @  ó8ö?d ˆò\ô· @  ó9ö?d Èò\® @  ó: ö?d ó\~XŒi @  ó;!ö?d Hó\Kný @  ó<"ö?d ˆó\k› @  ó=#ö?d Èó\­ˆ6" @  ó>$ö?d ô\´ÆÅ- @  ó?%ö?d Hô\˜«ì @  ó@&ö?d ˆô\¸^} @  óA'ö?d Èô\æ]' @  óB(ö?d õ\6«ü @  óC)ö?d Hõ\#ªh @  óD*ö?d ˆõ\#Ö¨– @  óE+ö?d Èõ\åÅ· @  óF,ö?d ö\x±v @  óG-ö?d Hö\FLu @  óH.ö?d ˆö\f¹‹ @  óI/ö?d Èö\]ê.a @  óJ0ö?d ÷\¢¢‰ @  óK1ö?d H÷\¸”£ @  óL2ö?d ˆ÷\˜a¡ã @  óM3ö?d È÷\^r @  óN4ö?d ø\j”ß @  óO5ö?d Hø\ùá< @  óP6ö?d ˆø\Ù Â @  óQ7ö?d Èø\‡WÄ @  óR8ö?d ù\W_Û, @  óS9ö?d Hù\biÚ¸ @  óT:ö?d ˆù\BœØF @  óU;ö?d Èù\„ag @  óV<ö?d ú\ËÁ¦ @  óW=ö?d Hú\'d¥ @  óX>ö?d ˆú\óf[ @  óY?ö?d Èú\QGr| @  óZ@ö?d û\þ” @  ó[Aö?d Hû\´9ÿ @  ó\Bö?d ˆû\”Ìýþ @  ó]Cö?d Èû\RßDß @  ó^Dö?d ü\K‘·Ð @  ó_Eö?d Hü\Éû ƒ @  ó`Fö?d ˆü\é } @  óaGö?d Èü\· S{ @  óbHö?d ý\gEß“ @  ócIö?d Hý\RsÞ @  ódJö?d ˆý\r†Üù @  óeKö?d Èý\´•eØ @  ófLö?d þ\)ÑÅ @  ógMö?d Hþ\` @  óhNö?d ˆþ\7ébä @  óiOö?d Èþ\ ºZ @  ójPö?d ÿ\ÜòÖæ @  ókQö?d Hÿ\éÄ×r @  ólRö?d ˆÿ\É1ÕŒ @  ómuÐ]Sö?d Èÿ\"l­ @  ónTö?d ]@–D\ @  óoUö?d `]Óúß¿ @  ópVö?d  ]óÝA @  óqWö?d à]­ ‡G @  órXö?d ]}D ¯ @  ósYö?d `]Hr ; @  ótZö?d  ]h‡Å @  óu[ö?d à]®”±ä @  óv\ö?d ]3Ð% @  ów]ö?d `] ´& @  óx^ö?d  ]-è¶Ø @  óy_ö?d à]‹ ·î @  óz`ö?d ][D; @  ó{aö?d `]nr:’ @  ó|bö?d  ]N‡8l @  ó}cö?d à]ˆ”M @  ó~dö?d ]‘ÚrB @  óeö?d `]^áø² @  ó€fö?d  ]~úL @  ógö?d à]  J @  ó‚hö?d ]ð_,¢ @  óƒiö?d `]Åi-6 @  ó„jö?d  ]åœ/È @  ó…kö?d à]#–é @  ó†lö?d ]¾Ë6( @  ó‡mö?d `]€“+ @  óˆnö?d  ] ó‘Õ @  ó‰oö?d à]› ©? @  óŠpö?d ]Kè%× @  ó‹qö?d `]~Þ$C @  óŒrö?d  ]^+&½ @  ósö?d à]˜8Ÿœ @  óŽtö?d ]¬Ç @  óuö?d `]?«ˆb @  óvö?d  ]^Šœ @  ó‘wö?d à]A]К @  ó’xö?d ]‘\r @  ó“yö?d ` ]¤#]æ @  ó”zö?d   ]„Ö_ @  ó•{ö?d à ]BÅæ9 @  ó–|ö?d ]ßFø @  ó—}ö?d ` ]áLãû @  ó˜~ö?d   ]Á¹á @  ó™ö?d à ]ŠË¡° @  óš€ö?d ]Zƒ-X @  ó›ö?d ` ]oµ,Ì @  óœ‚ö?d   ]O@.2 @  óƒö?d à ]‰S— @  óž„ö?d ]d @  óŸ…ö?d ` ]wØO @  ó †ö?d   ]2‚Ú± @  ó¡‡ö?d à ]l€· @  ó¢ˆö?d ]¼É _ @  ó£‰ö?d ` ]‰ÿ Ë @  ó¤Šö?d   ]© 5 @  ó¥‹ö?d à ]o¶ @  ó¦Œö?d ]ò]Õ @  ó§ö?d `]̳Ö @  ó¨Žö?d  ]ìe±( @  ó©ö?d à]×6‰Â @  óªö?d ]~* @  ó«‘ö?d `]2H¾ @  ó¬’ö?d  ]½@ @  ó­“ö?d à]Ô®¿a @  ó®”ö?d ]jpÓ @  ó¯•ö?d `]ù˜0 @  ó°–ö?d  ]ÙéšÎ @  ó±—ö?d à]‡êÀÈ @  ó²˜ö?d ]W¢L  @  ó³™ö?d `]b”M´ @  ó´šö?d  ]BaOJ @  óµ›ö?d à]„rök @  ó¶œö?d ]6Vª @  ó·ö?d `]'ûó© @  ó¸žö?d  ]ñW @  ó¹Ÿö?d à]¡êða @  óº ö?d ]q¢|‰ @  ó»¡ö?d `]D”} @  ó¼¢ö?d  ]daã @  ó½£ö?d à]¢rÆÂ @  ó¾¤ö?d ]»<5Í @  ó¿¥ö?d `]—Q  @  óÀ¦ö?d  ]·¤ò @  óÁ§ö?d à]é§×ô @  ó¨ö?d ]9ï[ @  óéö?d `] ÙZˆ @  óĪö?d  ],,Xv @  óÅ«ö?d à]ê?áW @  óƬö?d ]w{A– @  óÇ­ö?d `]I¶ä• @  óÈ®ö?d  ]iCæk @  óɯö?d à]RÞ @  óʰö?d ]‚XRi @  ó˱ö?d `]·nSý @  ó̲ö?d  ]—›Q @  óͳö?d à]Qˆè" @  óδö?d ]ewd? @  óϵö?d `]öÿÜ @  óжö?d  ]Öîý" @  óÑ·ö?d à]ˆí§$ @  óÒ¸ö?d ]X¥+Ì @  óÓ¹ö?d `]m“*X @  óÔºö?d  ]Mf(¦ @  óÕ»ö?d à]‹u‘‡ @  óÖ¼ö?d ]11F @  ó×½ö?d `](ü”E @  óؾö?d  ] –» @  óÙ¿ö?d à]^½‚œ @  óÚÀö?d ]Žõt @  óÛÁö?d `]»Ãà @  óÜÂö?d  ]›6  @  óÝÃö?d à]]%´? @  óÞÄö?d ]DkG0 @  óßÅö?d `]Æûc @  óàÆö?d  ]æôù @  óáÇö?d à]¸÷£› @  óâÈö?d€ ]îé‡Ê @  ôÉö?d `]:žÎw @  ôÊö?d  ]k̉ @  ôËö?d à]1ŽE @  ôÌö?d ]„u.„ @  ôÍö?d `]t Ôý @  ôÎö?d  ]TÿÖ @  ôÏö?d à]¡±“ @  ôÐö?d ]qV={ @  ô Ñö?d `])Ç @  ô Òö?d  ]¡ÜÅüuÐ ] @  ô Óö?d à]ßôL @  ô €Ôö?d 8 ]® ** @  ô €Õö?d x ]^rÐS @  ô€Öö?d ¸ ]~‡Ò­ @  ô€×ö?d ø ]C—é1 @  ô€Øö?d 8!]“ßeÙ @  ô€Ùö?d x!]c Ÿ  @  ô€Úö?d ¸!]CU^ @  ô€Ûö?d ø!]@ß’ @  ô€Üö?d 8"]ÝKS @  ô€Ýö?d x"]-4…* @  ô€Þö?d ¸"] Á‡Ô @  ô€ßö?d ø"]e—Ù˜ @  ô€àö?d 8#]µßUp @  ô€áö?d x#]E ¯  @  ô€âö?d ¸#]eU­÷ @  ô€ãö?d ø#]fï; @  ô€äö?d 8$]A4 @  ô€åö?d x$]>æM @  ô€æö?d ¸$]¯Ëä³ @  ô€çö?d ø$]ƒÝøŸ @  ô €èö?d 8%]S•tw @  ô!€éö?d x%]£êŽ @  ô"€êö?d ¸%]ƒŒð @  ô#€ëö?d ø%]€EÎ< @  ô$€ìö?d 8&]ný @  ô%€íö?d x&]í~”„ @  ô&€îö?d ¸&]Í‹–z @  ô'€ïö?d ø&]8jñê @  ô(€ðö?d 8']è"} @  ô)€ñö?d x']]‡{ @  ô*€òö?d ¸']8¨…… @  ô+€óö?d ø'];òÇI @  ô,€ôö?d 8(] KT @  ô-€õö?d x(]ÿr±- @  ô.€öö?d ¸(]߇³Ó @  ô/€÷ö?d ø(]â—ˆO @  ô0€øö?d 8)]2ß§ @  ô1€ùö?d x)] þÞ @  ô2€úö?d ¸)]âUü  @  ô3€ûö?d ø)]á¾ì @  ô4€üö?d 8*]|K- @  ô5€ýö?d x*]Œ4äT @  ô6€þö?d ¸*]¬Áæª @  ô7€ÿö?d ø*]Vf¬i @  ô8€÷?d 8+]†.  @  ô9€÷?d x+]vQÚø @  ô:€÷?d ¸+]V¤Ø @  ô;€÷?d ø+]UþšÊ @  ô<€÷?d 8,]L°iÅ @  ô=€÷?d x,]¼Ï“¼ @  ô>€÷?d ¸,]œ:‘B @  ô?€÷?d ø,]+‹ü @  ô@€÷?d 8-]Îc @  ôA€ ÷?d x-]>ým @  ôB€ ÷?d ¸-]éÿ“ @  ôC€ ÷?d ø-]³½_ @  ôD€ ÷?d 8.]€÷ž @  ôE€ ÷?d x.]pˆçç @  ôF€÷?d ¸.]P}å @  ôG€÷?d ø.]¥œ‚‰ @  ôH€÷?d 8/]uÔa @  ôI€÷?d x/]…«ô @  ôJ€÷?d ¸/]¥^öæ @  ôK€÷?d ø/]¦´* @  ôL€÷?d 80]Ú˜ @  ôM€÷?d x0]è¥òá @  ôN€÷?d ¸0]ÈPð @  ôO€÷?d ø0]õ@˃ @  ôP€÷?d 81]%Gk @  ôQ€÷?d x1]Õw½ @  ôR€÷?d ¸1]õ‚¿ì @  ôS€÷?d ø1]öØý  @  ôT€÷?d 82]kœ]á @  ôU€÷?d x2]›ã§˜ @  ôV€÷?d ¸2]»¥f @  ôW€÷?d ø2]Ó@û* @  ôX€ ÷?d 83]w @  ôY€!÷?d x3]ów» @  ôZ€"÷?d ¸3]Ó‚E @  ô[€#÷?d ø3]ÐØÍ‰ @  ô\€$÷?d 84]É–>† @  ô]€%÷?d x4]9éÄÿ @  ô^€&÷?d ¸4]Æ @  ô_€'÷?d ø4]5 Ú- @  ô`€(÷?d 85]åBVÅ @  ôa€)÷?d x5]=¬¼ @  ôb€*÷?d ¸5]5È®B @  ôc€+÷?d ø5]6’ìŽ @  ôd€,÷?d 86]«ÖLO @  ôe€-÷?d x6][©¶6 @  ôf€.÷?d ¸6]{\´È @  ôg€/÷?d ø6]޽ÓX @  ôh€0÷?d 87]^õ_° @  ôi€1÷?d x7]®Š¥É @  ôj€2÷?d ¸7]ާ7 @  ôk€3÷?d ø7]%åû @  ôl€4÷?d 88]¹Úiæ @  ôm€5÷?d x8]I¥“Ÿ @  ôn€6÷?d ¸8]iP‘a @  ôo€7÷?d ø8]T@ªý @  ôp€8÷?d 89]„& @  ôq€9÷?d x9]twÜl @  ôr€:÷?d ¸9]T‚Þ’ @  ôs€;÷?d ø9]WØœ^ @  ôt€<÷?d 8:]Êœ<Ÿ @  ôu€=÷?d x:]:ãÆæ @  ôv€>÷?d ¸:]Ä @  ôw€?÷?d ø:]‚E @  ôx€@÷?d 8;]RX­ @  ôy€A÷?d x;]¢'ùÔ @  ôz€B÷?d ¸;]‚Òû* @  ô{€C÷?d ø;]ˆ¹æ @  ô|€D÷?d 8<]˜ÆJé @  ô}€E÷?d x<]h¹° @  ô~€F÷?d ¸<]HL²n @  ô€G÷?d ø<]) ˜á @  ô€€H÷?d 8=]ùC  @  ô€I÷?d x=] <îp @  ô‚€J÷?d ¸=])ÉìŽ @  ôƒ€K÷?d ø=]*“®B @  ô„€L÷?d 8>]·×ƒ @  ô…€M÷?d x>]G¨ôú @  ô†€N÷?d ¸>]g]ö @  ô‡€O÷?d ø>]’¼‘” @  ôˆ€P÷?d 8?]Bô| @  ô‰€Q÷?d x?]²‹ç @  ôŠ€R÷?duÐ@]7 ¸?]’~åû @  ô‹€S÷?d ø?]‘$§7 @  ôŒ€T÷?d P@]Rˆ  @  ô€U÷?d @]“òR @  ôŽ€V÷?d Ð@]‚åŒ @  ô€W÷?d A]íËE& @  ô€X÷?d PA]oZRø @  ô‘€Y÷?d A]=A½¡ @  ô’€Z÷?d ÐA]¿Ðª @  ô“€[÷?d B]£__¬ @  ô”€\÷?d PB]!ÎHr @  ô•€]÷?d B]sÕ§+ @  ô–€^÷?d ÐB]ñD°õ @  ô—€_÷?d C]ËËu @  ô˜€`÷?d PC]IZbQ @  ô™€a÷?d C]A @  ôš€b÷?d ÐC]™ÐšÖ @  ô›€c÷?d D]U<Ë @  ôœ€d÷?d PD]ƒÄ+ @  ô€e÷?d D]ÑßÄL @  ôž€f÷?d ÐD]SNÓ’ @  ôŸ€g÷?d E]-Tˆ @  ô €h÷?d PE]¯CV @  ô¡€i÷?d E]ý ¬ @  ô¢€j÷?d ÐE]š»Ñ @  ô£€k÷?d F]cN @  ô¤€l÷?d PF]á„YÜ @  ô¥€m÷?d F]³Ÿ¶… @  ô¦€n÷?d ÐF]1¡[ @  ô§€o÷?d G]–6]ý @  ô¨€p÷?d PG]§J# @  ô©€q÷?d G]F¼¥z @  ôª€r÷?d ÐG]Ä-²¤ @  ô«€s÷?d H]qk« @  ô¬€t÷?d PH]óˆ|u @  ô­€u÷?d H]¡““, @  ô®€v÷?d ÐH]#„ò @  ô¯€w÷?d I]LË$X @  ô°€x÷?d PI]ÎZ3† @  ô±€y÷?d I]œAÜß @  ô²€z÷?d ÐI]ÐË @  ô³€{÷?d J]_>Ò @  ô´€|÷?d PJ]€Î)  @  ôµ€}÷?d J]ÒÕÆU @  ô¶€~÷?d ÐJ]PDÑ‹ @  ô·€÷?d K]‡]Ur @  ô¸€€÷?d PK]ÌB¬ @  ô¹€÷?d K]W×­õ @  ôº€‚÷?d ÐK]ÕFº+ @  ô»€ƒ÷?d L]MÃ6 @  ô¼€„÷?d PL]ÏR è @  ô½€…÷?d L]Iä± @  ô¾€†÷?d ÐL]Øóo @  ô¿€‡÷?d M]Ïrç @  ôÀ€ˆ÷?d PM]Me9 @  ôÁ€‰÷?d M]šŠ` @  ô€Š÷?d ÐM] ¾ @  ôÀ‹÷?d N]„hm @  ôÄ€Œ÷?d PN]³ @  ôÅ€÷?d N]Qê @  ôÆ€Ž÷?d ÐN]ÓŸ‡4 @  ôÇ€÷?d O]t§{’ @  ôÈ€÷?d PO]ö6lL @  ôÉ€‘÷?d O]¤-ƒ @  ôÊ€’÷?d ÐO]&¼”Ë @  ôË€“÷?d P]©}k @  ôÌ€”÷?d PP]›8jµ @  ôÍ€•÷?d P]É#…ì @  ô΀–÷?d ÐP]K²’2 @  ôÏ€—÷?d Q]${2˜ @  ôЀ˜÷?d PQ]¦ê%F @  ôÑ€™÷?d Q]ôñÊ @  ôÒ€š÷?d ÐQ]v`ÝÁ @  ôÓ€›÷?d R]jï( @  ôÔ€œ÷?d PR]è~?Ì @  ôÕ€÷?d R]ºeЕ @  ôÖ€ž÷?d ÐR]8ôÇK @  ô×€Ÿ÷?d S]{1 @  ôØ€ ÷?d PS]€êï @  ôÙ€¡÷?d S]Òñú¶ @  ôÚ€¢÷?d ÐS]P`íh @  ôÛ€£÷?d T]ÈåKu @  ôÜ€¤÷?d PT]Jt\« @  ôÝ€¥÷?d T]o³ò @  ôÞ€¦÷?d ÐT]šþ¤, @  ô߀§÷?d U]ä1#6 @  ôà€¨÷?d PU]f 4è @  ôဩ÷?d U]4»Û± @  ô‪÷?d€ ÐU]ÂéÐÉ @  õ€«÷?d V]?'m3 @  õ€¬÷?d PV]½¶zí @  õ€­÷?d V]*änY @  õ€®÷?d ÐV]¨uy‡ @  õ€¯÷?d W]ÁÿÚ[ @  õ€°÷?d PW]CnÍ… @  õ€±÷?d W]ßÇ}¦ @  õ€²÷?d ÐW]]Vjx @  õ €³÷?d X]-+Hš @  õ €´÷?d PX]¯º_D @  õ €µ÷?d X]8èKð @  õ €¶÷?d ÐX]ºy\. @  õ €·÷?d Y]¶£ @  õ€¸÷?d PY]42ŠÀ @  õ€¹÷?d Y]: @  õ€º÷?d ÐY]‡«Ý @  õ€»÷?d Z]^mã @  õ€¼÷?d PZ]Üü = @  õ€½÷?d Z]K®‰ @  õ€¾÷?d ÐZ]É? W @  õ€¿÷?d []ÍR†F @  õ€À÷?d P[]Oј @  õ€Á÷?d []Ój!» @  õ€Â÷?d Ð[]Qû6e @  õ€Ã÷?d \] 7k• @  õ€Ä÷?d P\]ަ|K @  õ€Å÷?d \]ôhÿ @  õ€Æ÷?d Ð\]›e! @  õ€Ç÷?d ]]—¿¾ @  õ€È÷?d P]].©Ï @  õ€É÷?d ]]5 ¼ @  õ €Ê÷?d Ð]]·±b @  õ!€Ë÷?d ^]nw\ @  õ"€Ì÷?d P^]ìæ‚ @  õ#€Í÷?d ^]{´6 @  õ$€Î÷?d Ð^]ù% è @  õ%€Ï÷?d _]¯®4 @  õ&€Ð÷?d P_]>¹ê @  õ'€Ñ÷?d _]Ž— É @  õuÐ`](€Ò÷?d Ð_]  @  õ)€Ó÷?d (`]ö|p @  õ*€Ô÷?d h`]tí® @  õ+€Õ÷?d ¨`]ã¿ @  õ,€Ö÷?d è`]a.Ä @  õ-€×÷?d (a]môÐô @  õ.€Ø÷?d ha]ïeÇ* @  õ/€Ù÷?d ¨a]ÞmIé @  õ0€Ú÷?d èa]\ü^7 @  õ1€Û÷?d (b]…:P  @  õ2€Ü÷?d hb]«G× @  õ3€Ý÷?d ¨b]ùSc @  õ4€Þ÷?d èb]hD½ @  õ5€ß÷?d (c]æUÞ½ @  õ6€à÷?d hc]dÄÉc @  õ7€á÷?d ¨c]ømy@ @  õ8€â÷?d èc]zünž @  õ9€ã÷?d (d]'03n @  õ:€ä÷?d hd]¥¡$° @  õ;€å÷?d ¨d]2ó0 @  õ<€æ÷?d èd]°b'Ú @  õ=€ç÷?d (e]¼¸æê @  õ>€è÷?d he]>)ñ4 @  õ?€é÷?d ¨e]° ^Õ @  õ@€ê÷?d èe]2±I  @  õA€ë÷?d (f]ëwG5 @  õB€ì÷?d hf]iæPë @  õC€í÷?d ¨f]þ´D_ @  õD€î÷?d èf]|%S @  õE€ï÷?d (g]¯ð] @  õF€ð÷?d hg]—>çƒ @  õG€ñ÷?d ¨g] —W  @  õH€ò÷?d èg]‰@~ @  õI€ó÷?d (h]ù{bœ @  õJ€ô÷?d hh]{êuB @  õK€õ÷?d ¨h]ì¸aö @  õL€ö÷?d èh]n)v( @  õM€÷÷?d (i]bó· @  õN€ø÷?d hi]àb Æ @  õO€ù÷?d ¨i]Ñj. @  õP€ú÷?d èi]Sû9Û @  õQ€û÷?d (j]Š=7å @  õR€ü÷?d hj]¬ ; @  õS€ý÷?d ¨j]Ÿþ4 @  õT€þ÷?d èj]o#Q @  õU€ÿ÷?d (k]žœ1 @  õV€ø?d hk]‹ï @  õW€ø?d ¨k]€¨;Ì @  õX€ø?d èk]9, @  õY€ø?d (l]_õqâ @  õZ€ø?d hl]Ýdf< @  õ[€ø?d ¨l]J6rˆ @  õ\€ø?d èl]ȧeV @  õ]€ø?d (m]Ä}¤f @  õ^€ø?d hm]F쳸 @  õ_€ ø?d ¨m]fâË @  õ`€ ø?d èm]äs  @  õa€ ø?d (n]=µ+ @  õb€ ø?d hn]¿$õ @  õc€ ø?d ¨n](vA @  õd€ø?d èn]ªçŸ @  õe€ø?d (o]Ãm´C @  õf€ø?d ho]Aü£ @  õg€ø?d ¨o]ÝU¾ @  õh€ø?d èo]_Ä` @  õi€ø?d (p]¥˜- @  õj€ø?d hp]' ó @  õk€ø?d ¨p]°[G @  õl€ø?d èp]2Ê™ @  õm€ø?d (q]>é @  õn€ø?d hq]¼Ôw @  õo€ø?d ¨q]‰Z´ @  õp€ø?d èq]Mj @  õq€ø?d (r]ÖÞCT @  õr€ø?d hr]TOTŠ @  õs€ø?d ¨r]Ã@> @  õt€ø?d èr]AŒWà @  õu€ø?d (s]µ±Íà @  õv€ ø?d hs]7 Ú> @  õw€!ø?d ¨s]«‰j @  õx€"ø?d ès])}à @  õy€#ø?d (t]tÔ 3 @  õz€$ø?d ht]öE7í @  õ{€%ø?d ¨t]a#Y @  õ|€&ø?d èt]ã†4‡ @  õ}€'ø?d (u]ï\õ· @  õ~€(ø?d hu]mÍâi @  õ€)ø?d ¨u]’}¹ @  õ€€*ø?d èu]‚jg @  õ€+ø?d (v][ÅdY @  õ‚€,ø?d hv]ÙTs‡ @  õƒ€-ø?d ¨v]Ng3 @  õ„€.ø?d èv]Ì—pí @  õ…€/ø?d (w]¥Ó1 @  õ†€0ø?d hw]'ŒÄï @  õ‡€1ø?d ¨w]»%tÌ @  õˆ€2ø?d èw]9´c @  õ‰€3ø?d (x]IÉAð @  õŠ€4ø?d hx]ËXV. @  õ‹€5ø?d ¨x]\ Bš @  õŒ€6ø?d èx]Þ›UD @  õ€7ø?d (y]ÒA”t @  õŽ€8ø?d hy]PЃª @  õ€9ø?d ¨y]aØ i @  õ€:ø?d èy]ãI· @  õ‘€;ø?d (z]:‰ @  õ’€<ø?d hz]¸W @  õ“€=ø?d ¨z]/Lã @  õ”€>ø?d èz]­Ý= @  õ•€?ø?d ({]©°, @  õ–€@ø?d h{]+!˜ò @  õ—€Aø?d ¨{]·ˆ(Ñ @  õ˜€Bø?d è{]5? @  õ™€Cø?d (|]hÕbÿ @  õš€Dø?d h|]êDu! @  õ›€Eø?d ¨|]}a• @  õœ€Fø?d è|]ÿ‡vK @  õ€Gø?d (}]ó]·{ @  õž€Hø?d h}]qÌ ¥ @  õŸ€Iø?d ¨}]Q Ö @  õ €Jø?d è}]ÓS @  õ¡€Kø?d (~] •6 @  õ¢€Lø?d h~]ˆè @  õ£€Mø?d ¨~]V\ @  õ¤€Nø?d è~]Ç‚ @  õ¥€Oø?d (]ôM§^ @  õ¦€Pø?d h]vܰ€ @  õ§€Qø?d ¨]uЀ]'êu£ @  õ¨€Rø?d è]hä} @  õ©€Sø?d @€]BØ[ö @  õª€Tø?d €€]b-Y @  õ«€Uø?d À€]WXœ @  õ¬€Vø?d ]‡SÔt @  õ­€Wø?d @]ÙPŽr @  õ®€Xø?d €]ù¥ŒŒ @  õ¯€Yø?d À]jÉo @  õ°€Zø?d ‚]÷·® @  õ±€[ø?d @‚]1ž @  õ²€\ø?d €‚]k q @  õ³€]ø?d À‚]$] å @  õ´€^ø?d ƒ]ô  @  õµ€_ø?d @ƒ]Rñ€; @  õ¶€`ø?d €ƒ]r‚Å @  õ·€aø?d Àƒ]LÉ'Æ @  õ¸€bø?d „]U‡ÔÉ @  õ¹€cø?d @„]“”mè @  õº€dø?d €„]³ao @  õ»€eø?d À„]†Wn‚ @  õ¼€fø?d …]Vâj @  õ½€gø?d @…]¸l @  õ¾€hø?d €…](麒 @  õ¿€iø?d À…]„S @  õÀ€jø?d †]™À ’ @  õÁ€kø?d @†]_Ó³ @  õ€lø?d €†]&M @  õÀmø?d À†]JÙ @  õÄ€nø?d ‡]šX–1 @  õÅ€oø?d @‡]¡ ®Û @  õÆ€pø?d €‡]þ¬% @  õÇ€qø?d À‡]¿3 & @  õÈ€rø?d ˆ]‹Ì…; @  õÉ€sø?d @ˆ]Mß< @  õÊ€tø?d €ˆ]m*>ä @  õË€uø?d Àˆ]X?p @  õÌ€vø?d ‰]ˆT³˜ @  õÍ€wø?d @‰]ÖWéž @  õ΀xø?d €‰]ö¢ë` @  õÏ€yø?d À‰]eÎpƒ @  õЀzø?d Š]øŠÐB @  õÑ€{ø?d @Š]>™ic @  õÒ€|ø?d €Š]lk @  õÓ€}ø?d ÀŠ]+Zj  @  õÔ€~ø?d ‹]ûæá @  õÕ€ø?d @‹]°`¦T @  õÖ€€ø?d €‹]•¤ª @  õ×€ø?d À‹]®X© @  õØ€‚ø?d Œ]·ò¦ @  õÙ€ƒø?d @Œ]qK‡ @  õÚ€„ø?d €Œ]QðIy @  õÛ€…ø?d ÀŒ]dÆHí @  õÜ€†ø?d ]´ŽÄ @  õÝ€‡ø?d @]êž @  õÞ€ˆø?d €]Êxœý @  õ߀‰ø?d À]H ® @  õà€Šø?d Ž]ÕV€o @  õဋø?d @Ž]E9N @  õ‌ø?d€ €Ž]ò÷̰ @  ö€ø?d ÀŽ]&€…  @  ö€Žø?d ]öÈ å @  ö€ø?d @]ÒÊâ @  ö€ø?d €]('È @  ö€‘ø?d À]ØX2e @  ö€’ø?d ]f†Ž× @  ö€“ø?d @]n'hŒ @  ö€”ø?d €]NÒjr @  ö €•ø?d À]¾­  @  ö €–ø?d ‘]nåã @  ö €—ø?d @‘]õ¯½ @  ö €˜ø?d €‘]ÕZ¿ö @  ö €™ø?d À‘]%%E @  ö€šø?d ’]¸aåN @  ö€›ø?d @’]a=õ @  ö€œø?d €’]=”?  @  ö€ø?d À’]ÍëÅr @  ö€žø?d “]£Iš @  ö€Ÿø?d @“]~³A @  ö€ ø?d €“]^û±¿ @  ö€¡ø?d À“]®„KÆ @  ö€¢ø?d ”]·Ê¸É @  ö€£ø?d @”]¿k^’ @  ö€¤ø?d €”]Ÿž\l @  ö€¥ø?d À”]oᦠ@  ö€¦ø?d •]¿©*ý @  ö€§ø?d @•]$ã‹ @  ö€¨ø?d €•]‰è @  ö€©ø?d À•]ôis‘ @  ö€ªø?d –]i-ÓP @  ö€«ø?d @–]Ý+,[ @  ö €¬ø?d €–]ýÞ.¥ @  ö!€­ø?d À–] ¡ÔÜ @  ö"€®ø?d —]ÝéX4 @  ö#€¯ø?d @—]#ó›3 @  ö$€°ø?d €—]™Í @  ö%€±ø?d À—]óyc´ @  ö&€²ø?d ˜]džï© @  ö'€³ø?d @˜]Ï' ò @  ö(€´ø?d €˜]ïÒ  @  ö)€µø?d À˜]­ñu @  ö*€¶ø?d ™]Ïå} @  ö+€·ø?d @™]T¯Üv @  ö,€¸ø?d €™]tZÞˆ @  ö-€¹ø?d À™]„%$ñ @  ö.€ºø?d š]a„0 @  ö/€»ø?d @š]¼a\‹ @  ö0€¼ø?d €š]œ”^u @  ö1€½ø?d Àš]lë¤  @  ö2€¾ø?d ›]¼£(ä @  ö3€¿ø?d @›]/^Ç. @  ö4€Àø?d €›]«ÅÐ @  ö5€Áø?d À›]ÿÔ?© @  ö6€Âø?d œ]æšÌ¦ @  ö7€Ãø?d @œ]î;*ý @  ö8€Äø?d €œ]ÎÎ( @  ö9€Åø?d Àœ]>±Òz @  ö:€Æø?d ]îù^’ @  ö;€Çø?d @]u³ÿy @  ö<€Èø?d €]UFý‡ @  ö=€Éø?d À]¥9þ @  ö>€Êø?d ž]8}§? @  ö?€Ëø?d @ž]"|^¦ @  ö@€Ìø?d €ž]‰\X @  öA€Íø?d Àž]òö¦! @  öB€Îø?d Ÿ]"¾*É @  öC€Ïø?d @Ÿ]ܤéÎ @  öD€Ðø?d €Ÿ]üQë0 @  öE€ÑøuР]?d ÀŸ] .I @  öF€Òø?d  ]}%Ï/ @  öG€Óø?d X ]u„)t @  öH€Ôø?d ˜ ]Uq+Š @  öI€Õø?d Ø ]¥Ñó @  öJ€Öø?d ¡]uF] @  öK€×ø?d X¡]î üð @  öL€Øø?d ˜¡]Îùþ @  öM€Ùø?d Ø¡]>†w @  öN€Úø?d ¢]£Â¤¶ @  öO€Ûø?d X¢]Â|  @  öP€Üø?d ˜¢]&7~ó @  öQ€Ýø?d Ø¢]ÖH„Š @  öR€Þø?d £]b @  öS€ßø?d X£]e­ò¹ @  öT€àø?d ˜£]EXðG @  öU€áø?d Ø£]µ' > @  öV€âø?d ¤]¬iù1 @  öW€ãø?d X¤]¤Èj @  öX€äø?d ˜¤]„=” @  öY€åø?d ؤ]tBçí @  öZ€æø?d ¥]¤ k @  ö[€çø?d X¥]?@Êî @  ö\€èø?d ˜¥]µÈ @  ö]€éø?d Ø¥]ïÊ2i @  ö^€êø?d ¦]rŽ’¨ @  ö_€ëø?d X¦]ƈm£ @  ö`€ìø?d ˜¦]æ}o] @  öa€íø?d ئ]•$ @  öb€îø?d §]ÆJÌ @  öc€ïø?d X§]8PÚË @  öd€ðø?d ˜§]¥Ø5 @  öe€ñø?d ا]èÚ"L @  öf€òø?d ¨]Ü%®Q @  ög€óø?d X¨]Ô„H  @  öh€ôø?d ˜¨]ôqJô @  öi€õø?d ب]° @  öj€öø?d ©]ÔFù?d »]ò{Ÿ @  ö³€?ù?d X»]a|”U @  ö´€@ù?d ˜»]A‰–« @  öµ€Aù?d Ø»]±ölÒ @  ö¶€Bù?d ¼]¨¸ŸÝ @  ö·€Cù?d X¼] y† @  ö¸€Dù?d ˜¼]€ì{x @  ö¹€Eù?d ؼ]p“ @  öº€Fù?d ½] Û é @  ö»€Gù?d X½];‘¬ @  ö¼€Hù?d ˜½]d®ü @  ö½€Iù?d ؽ]ëT… @  ö¾€Jù?d ¾]v_ôD @  ö¿€Kù?d X¾]l^ Ý @  öÀ€Lù?d ˜¾]L«# @  öÁ€Mù?d ؾ]¼ÔõZ @  ö€Nù?d ¿]lœy² @  öÀOù?d X¿]’†ºµ @  öÄ€Pù?d ˜¿]²s¸K @uÐÀ]  öÅ€Qù?d Ø¿]B B2 @  öÆ€Rù?d 0À]&ü` @  öÇ€Sù?d pÀ].]õ; @  öÈ€Tù?d °À]¨÷Å @  öÉ€Uù?d ðÀ]þ× ¼ @  öÊ€Vù?d 0Á].ŸT @  öË€Wù?d pÁ]µÕ ¿ @  öÌ€Xù?d °Á]• "A @  öÍ€Yù?d ðÁ]e_Ø8 @  ö΀Zù?d 0Â]øxù @  öÏ€[ù?d pÂ]] B @  öЀ\ù?d °Â]} @  öÑ€]ù?d ðÂ]‘XÅ @  öÒ€^ù?d 0Ã]]ÙÔ- @  öÓ€_ù?d pÃ]>t.ö @  öÔ€`ù?d °Ã], @  öÕ€aù?d ðÃ]îþÖq @  öÖ€bù?d 0Ä]÷°%~ @  ö×€cù?d pÄ]ÿÃ% @  öØ€dù?d °Ä]ßäÁÛ @  öÙ€eù?d ðÄ]/›;¢ @  öÚ€fù?d 0Å]ÿÓ·J @  öÛ€gù?d pÅ]d™¡ @  öÜ€hù?d °Å]Dl_ @  öÝ€iù?d ðÅ]´î& @  öÞ€jù?d 0Æ])WNç @  ö߀kù?d pÆ]Q±ì @  öà€lù?d °Æ]½¤³ @  öá€mù?d ðÆ]MÛIk @  öâ€nù?d€ 0Ç]éPÙ% @  ÷€où?d pÇ]ö R  @  ÷€pù?d °Ç]ÖþPõ @  ÷€qù?d ðÇ]ãÈQa @  ÷€rù?d 0È]×7Ý| @  ÷€sù?d pÈ]$d] @  ÷€tù?d °È]1Ñf£ @  ÷€uù?d ðÈ]à @  ÷€vù?d 0É]ßTOH @  ÷ €wù?d pÉ]WN @  ÷ €xù?d °É]¡¢° @  ÷ €yù?d ðÉ]””$ @  ÷ €zù?d 0Ê] жå @  ÷ €{ù?d pÊ]ÏÃÄ @  ÷€|ù?d °Ê]ï6 : @  ÷€}ù?d ðÊ]|Z–Ù @  ÷€~ù?d 0Ë]¬1 @  ÷€ù?d pË]ç`Z„ @  ÷€€ù?d °Ë]Ç•Xz @  ÷€ù?d ðË]ò£Yî @  ÷€‚ù?d 0Ì]ëíªá @  ÷€ƒù?d pÌ]-þÀ @  ÷€„ù?d °Ì] > @  ÷€…ù?d ðÌ]3Æ´= @  ÷€†ù?d 0Í]ãŽ8Õ @  ÷€‡ù?d pÍ]½bÓ @  ÷€ˆù?d °Í]x`- @  ÷€‰ù?d ðÍ]¨Na¹ @  ÷€Šù?d 0Î]5 Áx @  ÷€‹ù?d pÎ]óxY @  ÷€Œù?d °Î]Óìz§ @  ÷€ù?d ðÎ]Q†Æô @  ÷ €Žù?d 0Ï]ÎJ @  ÷!€ù?d pÏ]ºrö @  ÷"€ù?d °Ï]šhp @  ÷#€‘ù?d ðÏ]¯^qœ @  ÷$€’ù?d 0Ð]€Í. @  ÷%€“ù?d pÐ]דt @  ÷&€”ù?d °Ð]÷fvñ @  ÷'€•ù?d ðÐ]É«Óò @  ÷(€–ù?d 0Ñ]ã_ @  ÷)€—ù?d pÑ]Gà @  ÷*€˜ù?d °Ñ]gâ @  ÷+€™ù?d ðÑ]R#v @  ÷,€šù?d 0Ò]Ïg¦· @  ÷-€›ù?d pÒ] t– @  ÷.€œù?d °Ò])h @  ÷/€ù?d ðÒ]ºí†‹ @  ÷0€žù?d 0Ó]j¥ c @  ÷1€Ÿù?d pÓ]ÌA U @  ÷2€ ù?d °Ó]ì´ « @  ÷3€¡ù?d ðÓ]Ù‚? @  ÷4€¢ù?d 0Ô]ÀÌû0 @  ÷5€£ù?d pÔ]ßB @  ÷6€¤ù?d °Ô]&*@ï @  ÷7€¥ù?d ðÔ]çåì @  ÷8€¦ù?d 0Õ]ȯi @  ÷9€§ù?d pÕ]–¬3 @  ÷:€¨ù?d °Õ]¶Y1ü @  ÷;€©ù?d ðÕ]ƒo0h @  ÷<€ªù?d 0Ö]+© @  ÷=€«ù?d pÖ]Ø8)ˆ @  ÷>€¬ù?d °Ö]øÍ+v @  ÷?€­ù?d ðÖ]Ô ‘· @  ÷@€®ù?d 0×]è_ @  ÷A€¯ù?d p×]?»%µ @  ÷B€°ù?d °×]N'K @  ÷C€±ù?d ð×]*x&ß @  ÷D€²ù?d 0Ø]‡ªÂ @  ÷E€³ù?d pØ]Ø”ã @  ÷F€´ù?d °Ø]øa @  ÷G€µù?d ðØ]Ƭ´ @  ÷H€¶ù?d 0Ù]ä8ö @  ÷I€·ù?d pÙ]Hçbð @  ÷J€¸ù?d °Ù]h` @  ÷K€¹ù?d ðÙ]]$aš @  ÷L€ºù?d 0Ú]À`Á[ @  ÷M€»ù?d pÚ]sxz @  ÷N€¼ù?d °Ú]&†z„ @  ÷O€½ù?d ðÚ]µêág @  ÷P€¾ù?d 0Û]e¢m @  ÷Q€¿ù?d pÛ]3y¨ @  ÷R€Àù?d °Û]ã{V @  ÷S€Áù?d ðÛ]&Õz @  ÷T€Âù?d 0Ü]?›‰Í @  ÷U€Ãù?d pÜ]ùˆ0ì @  ÷V€Äù?d °Ü]Ù}2 @  ÷W€Åù?d ðÜ]ç°— @  ÷X€Æù?d 0Ý]7øù @  ÷Y€Çù?d pÝ]iûAÿ @  ÷Z€Èù?d °Ý]IC @  ÷[€Éù?d ðÝ]|8B• @  ÷\€Êù?d 0Þ]á|âT @  ÷]€Ëù?d pÞ]'o[u @  ÷^€Ìù?d °Þ]šY‹ @  ÷_€Íù?d ðÞ]…ðåØ @  ÷`€Îù?d 0ß]U¸i0 @  ÷a€Ïù?d pß]nëQÚ @  ÷b€Ðù?d uÐà]/°ß]NS$ @  ÷c€Ñù?d ðß]{(R° @  ÷d€Òù?d Hà]bŒ F @  ÷e€Óù?d ˆà]û G @  ÷f€Ôù?d Èà]„j·™ @  ÷g€Õù?d á]è~‰¬ @  ÷h€Öù?d Há]jïžr @  ÷i€×ù?d ˆá]–ˆÑT @  ÷j€Øù?d Èá]ÆŠ @  ÷k€Ùù?d â]>úp @  ÷l€Úù?d Hâ]¼kgß @  ÷m€Ûù?d ˆâ]ØËÞ @  ÷n€Üù?d Èâ]ZÜ @  ÷o€Ýù?d ã]›8ÜÕ @  ÷p€Þù?d Hã]©Ë  @  ÷q€ßù?d ˆã])ß @  ÷r€àù?d Èã]Ÿ¸Èà @  ÷s€áù?d ä]1Q-† @  ÷t€âù?d Hä]³À:X @  ÷u€ãù?d ˆä]×·–Y @  ÷v€äù?d Èä]U&‡ @  ÷w€åù?d å]92¿² @  ÷x€æù?d Hå]»£¨l @  ÷y€çù?d ˆå]GÄçJ @  ÷z€èù?d Èå]ÅUð” @  ÷{€éù?d æ]ï¶F @  ÷|€êù?d Hæ]m'QÁ @  ÷}€ëù?d ˆæ] PýÀ @  ÷~€ìù?d Èæ]‹Áê @  ÷€íù?d ç]#ûØ @  ÷€€îù?d Hç]”²ì @  ÷€ïù?d ˆç] …ÁÌ @  ÷‚€ðù?d Èç]Ö @  ÷ƒ€ñù?d è] LLE @  ÷„€òù?d Hè]ŽÝ[› @  ÷…€óù?d ˆè]êª÷š @  ÷†€ôù?d Èè]h;àD @  ÷‡€õù?d é]/Þq @  ÷ˆ€öù?d Hé]†¾É¯ @  ÷‰€÷ù?d ˆé]zÙ†‰ @  ÷Š€øù?d Èé]øH‘W @  ÷‹€ùù?d ê]Ò«'Ü @  ÷Œ€úù?d Hê]P:0 @  ÷€ûù?d ˆê]4Mœ @  ÷Ž€üù?d Èê]¶Ü‹Ý @  ÷€ýù?d ë]wi‹ @  ÷€þù?d Hë]õøœÖ @  ÷‘€ÿù?d ˆë]Ñ«©j @  ÷’€ú?d Èë]S:¾´ @  ÷“€ú?d ì]ýÓ[ñ @  ÷”€ú?d Hì]BL/ @  ÷•€ú?d ˆì]5à. @  ÷–€ú?d Èì]™¤÷ð @  ÷—€ú?d í]õ°ÉÅ @  ÷˜€ú?d Hí]w!Þ @  ÷™€ú?d ˆí]‹F‘= @  ÷š€ú?d Èí] ׆ã @  ÷›€ ú?d î]#40h @  ÷œ€ ú?d Hî]¡¥'¶ @  ÷€ ú?d ˆî]ÅÒ‹· @  ÷ž€ ú?d Èî]GCœi @  ÷Ÿ€ ú?d ï]—ð»  @  ÷ €ú?d Hï]a¬Ò @  ÷¡€ú?d ˆï]ŒV @  ÷¢€ú?d Èï]Ç–Æ @  ÷£€ú?d ð]¾<> @  ÷¤€ú?d Hð]…/+à @  ÷¥€ú?d ˆð]áX‡á @  ÷¦€ú?d Èð]cÉ? @  ÷§€ú?d ñ]Ý®  @  ÷¨€ú?d Hñ]L¹Ô @  ÷©€ú?d ˆñ]q+öò @  ÷ª€ú?d Èñ]óºá, @  ÷«€ú?d ò]ÙYW§ @  ÷¬€ú?d Hò][È@y @  ÷­€ú?d ˆò]?¿ìx @  ÷®€ú?d Èò]½.û¦ @  ÷¯€ú?d ó]|›ûs @  ÷°€ú?d Hó]þ ì­ @  ÷±€ú?d ˆó]úŠø» @  ÷²€ ú?d Èó]xïe @  ÷³€!ú?d ô]Öò  @  ÷´€"ú?d Hô]Tcþ @  ÷µ€#ú?d ˆô]0±ÿ @  ÷¶€$ú?d Èô]²…¦! @  ÷·€%ú?d õ]Þ‘˜ @  ÷¸€&ú?d Hõ]\Ê @  ÷¹€'ú?d ˆõ] gÀì @  ÷º€(ú?d Èõ]"ö×2 @  ÷»€)ú?d ö]a¹ @  ÷¼€*ú?d Hö]Š„vg @  ÷½€+ú?d ˆö]îóÚf @  ÷¾€,ú?d Èö]lb͸ @  ÷¿€-ú?d ÷]ÖìO @  ÷À€.ú?d H÷]Gû‘ @  ÷Á€/ú?d ˆ÷] pÖ[ @  ÷€0ú?d È÷]‹áÁ… @  ÷À1ú?d ø]¹[Ò @  ÷Ä€2ú?d Hø]Š(L  @  ÷Å€3ú?d ˆø]î_à  @  ÷Æ€4ú?d Èø]lÎ÷Ó @  ÷Ç€5ú?d ù]ÚÉæ @  ÷È€6ú?d Hù]‚KÞ8 @  ÷É€7ú?d ˆù]~,‘ @  ÷Ê€8ú?d Èù]ü½†À @  ÷Ë€9ú?d ú]Ö^0K @  ÷Ì€:ú?d Hú]TÏ'• @  ÷Í€;ú?d ˆú]0¸‹” @  ÷΀<ú?d Èú]²)œJ @  ÷Ï€=ú?d û]sœœŸ @  ÷Ѐ>ú?d Hû]ñ ‹A @  ÷Ñ€?ú?d ˆû]ÝŠF @  ÷Ò€@ú?d Èû]‡L˜ @  ÷Ó€Aú?d ü])¥xÝ @  ÷Ô€Bú?d Hü]«4o @  ÷Õ€Cú?d ˆü]ÏCà @  ÷Ö€Dú?d Èü]MÒÔÜ @  ÷×€Eú?d ý]!Æêé @  ÷Ø€Fú?d Hý]£Wý7 @  ÷Ù€Gú?d ˆý]_0² @  ÷Ú€Hú?d Èý]Ý¡¥Ï @  ÷Û€Iú?d þ]÷BD @  ÷Ü€Jú?d Hþ]uÓš @  ÷Ý€Kú?d ˆþ]¤¨› @  ÷Þ€Lú?d Èþ]“5¿E @  ÷߀Mú?d ÿ]C†˜  @  ÷à€Nú?d Hÿ]Áþ @  ÷á€Oú?d ˆÿ]X ¢4 @  ÷â€uÐ^Pú?d€ Èÿ]«ÒÄ @  øQú?d ^ݼİ @  øRú?d `^_-Ón @  øSú?d  ^þ„‚ @  øTú?d à^|‚“\ @  øUú?d ^Þ$ò @  øVú?d `^\µåÍ @  øWú?d  ^n`õ‘ @  øXú?d à^ìñâO @  ø Yú?d ^[¯) @  ø Zú?d `^ʸ÷ @  ø [ú?d  ^ ôï @  ø \ú?d à^¢eøÅ @  ø ]ú?d ^ÙŠ @  ø^ú?d `^‚RŽT @  ø_ú?d  ^åÁûØ @  ø`ú?d à^gPì @  øaú?d ^ ðò® @  øbú?d `^Žaåp @  øcú?d  ^/_²œ @  ødú?d à^­Î¥B @  øeú?d ^hÄ  @  øfú?d `^ùÓÓ @  øgú?d  ^¿,à @  øhú?d à^=½ÔQ @  øiú?d ^Ò™7 @  øjú?d `^P†Žé @  økú?d  ^ñ¸Ù @  ølú?d à^s)ÎÛ @  ømú?d ^ѯ” @  ønú?d `^S¸J @  øoú?d  ^¸<Óª @  ø pú?d à^:­Ät @  ø!qú?d ^|¼¥Î @  ø"rú?d `^þ-² @  ø#sú?d  ^_åü @  ø$tú?d à^Ý‚ò" @  ø%uú?d ^$“m @  ø&vú?d ` ^ýµ„³ @  ø'wú?d   ^Ï`”ï @  ø(xú?d à ^Mñƒ1 @  ø)yú?d ^¢[ÎW @  ø*zú?d ` ^ ÊÙ‰ @  ø+{ú?d   ^ôŽe @  ø,|ú?d à ^e™» @  ø-}ú?d ^¡Ãøô @  ø.~ú?d ` ^#Rï* @  ø/ú?d   ^©WÛ% @  ø0€ú?d à ^+ÆÌû @  ø1ú?d ^@fÒS @  ø2‚ú?d ` ^Â÷Å @  ø3ƒú?d   ^cÉ’a @  ø4„ú?d à ^áX…¿ @  ø5…ú?d ^Cþäð @  ø6†ú?d ` ^Áoó. @  ø7‡ú?d   ^óºãr @  ø8ˆú?d à ^q+ô¬ @  ø9‰ú?d ^ž¹Ê @  ø:Šú?d `^® @  ø;‹ú?d  ^½.ùø @  ø<Œú?d à^?¿î& @  ø=ú?d ^i @  ø>Žú?d `^ˆ˜· @  ø?ú?d  ^Z­õÅ @  ø@ú?d à^Ø<â @  øA‘ú?d ^ ³ @  øB’ú?d `^–¤Ð @  øC“ú?d  ^7£ó< @  øD”ú?d à^µ2äâ @  øE•ú?d ^”…­ @  øF–ú?d `^•’s @  øG—ú?d  ^§Ð‚/ @  øH˜ú?d à^%A•ñ @  øI™ú?d ^ÊëØ— @  øJšú?d `^HzÏI @  øK›ú?d  ^éD˜¥ @  øLœú?d à^kÕ{ @  øMú?d ^Ésî4 @  øNžú?d `^Kâùê @  øOŸú?d  ^,qŒf @  øP ú?d à^®à›¸ @  øQ¡ú?d ^Å@… @  øR¢ú?d `^GÑ’Î @  øS£ú?d  ^æïÅ" @  øT¤ú?d à^d~Òü @  øU¥ú?d ^ÆØ³³ @  øV¦ú?d `^DI¤m @  øW§ú?d  ^vœ´1 @  øX¨ú?d à^ô £ï @  øY©ú?d ^§î‰ @  øZªú?d `^™6ùW @  ø[«ú?d  ^8®» @  ø\¬ú?d à^º™¹e @  ø]­ú?d ^?Ø* @  ø^®ú?d `^š®Ïô @  ø_¯ú?d  ^qŒ¤ @  ø`°ú?d à^ó³Ê @  øa±ú?d ^µ Òp @  øb²ú?d `^7Å® @  øc³ú?d  ^–£’B @  ød´ú?d à^2…œ @  øeµú?d ^¶”äÓ @  øf¶ú?d `^4ó  @  øg·ú?d  ^ÐãQ @  øh¸ú?d à^„Aô @  øi¹ú?d ^kë¹é @  øjºú?d `^éz®7 @  øk»ú?d  ^HDùÛ @  øl¼ú?d à^ÊÕî @  øm½ú?d ^hsJ @  øn¾ú?d `^ê☔ @  øo¿ú?d  ^}!ø  @  øpÀú?d à^ÿ°ï× @  øqÁú?d ^”ñ @  ørÂú?d `^æ¡ @  øsÃú?d  ^·¿±M @  øtÄú?d à^5.¦“ @  øuÅú?d ^—ˆÇÜ @  øvÆú?d `^Ð @  øwÇú?d  ^'ÌÀ^ @  øxÈú?d à^¥]×€ @  øyÉú?d ^J÷šæ @  øzÊú?d `^Èf8 @  ø{Ëú?d  ^iXÚÔ @  ø|Ìú?d à^ëÉÍ  @  ø}Íú?d ^Io¬E @  ø~Îú?d `^Ëþ»› @  øÏú?d  ^mæØuÐ ^ @  ø€Ðú?d à^ïñ @  øÑú?d 8 ^ìùÂÇ @  ø‚Òú?d x ^nhÕ @  øƒÓú?d ¸ ^ÏV‚õ @  ø„Ôú?d ø ^MÇ•+ @  ø…Õú?d 8!^ïaôd @  ø†Öú?d x!^mð㺠@  ø‡×ú?d ¸!^_%óæ @  øˆØú?d ø!^Ý´ä8 @  ø‰Ùú?d 8"^2©^ @  øŠÚú?d x"^°¾€ @  ø‹Ûú?d ¸"^±él @  øŒÜú?d ø"^“ þ² @  øÝú?d 8#^1†Ÿý @  øŽÞú?d x#^³ˆ# @  øßú?d ¸#^Ô„ý¯ @  øàú?d ø#^Vêq @  ø‘áú?d 8$^=µôÙ @  ø’âú?d x$^¿$ã @  ø“ãú?d ¸$^´ë @  ø”äú?d ø$^œ‹£5 @  ø•åú?d 8%^>-Âz @  ø–æú?d x%^¼¼Õ¤ @  ø—çú?d ¸%^ŽiÅø @  ø˜èú?d ø%^ øÒ& @  ø™éú?d 8&^ãRŸ@ @  øšêú?d x&^aÈž @  ø›ëú?d ¸&^Àýßr @  øœìú?d ø&^BlȬ @  øíú?d 8'^àÊ©ã @  øžîú?d x'^b[¾= @  øŸïú?d ¸'^‰yÕÝ @  ø ðú?d ø'^ è @  ø¡ñú?d 8(^Mù£¹ @  ø¢òú?d x(^Ïh´g @  ø£óú?d ¸(^nVã‹ @  ø¤ôú?d ø(^ìÇôU @  ø¥õú?d 8)^Na• @  ø¦öú?d x)^Ìð‚Ä @  ø§÷ú?d ¸)^þ%’˜ @  ø¨øú?d ø)^|´…F @  ø©ùú?d 8*^“È  @  øªúú?d x*^ßþ @  ø«ûú?d ¸*^°±ˆ @  ø¬üú?d ø*^2 ŸÌ @  ø­ýú?d 8+^†þƒ @  ø®þú?d x+^é] @  ø¯ÿú?d ¸+^çuˆ^ @  ø°û?d ø+^e䟀 @  ø±û?d 8,^D( @  ø²û?d x,^ŒÕ–ö @  ø³û?d ¸,^-ëÁ @  ø´û?d ø,^¯zÖÄ @  øµû?d 8-^ Ü·‹ @  ø¶û?d x-^M U @  ø·û?d ¸-^½˜°  @  ø¸û?d ø-^? §× @  ø¹ û?d 8.^Уê± @  øº û?d x.^R2ýo @  ø» û?d ¸.^ó ªƒ @  ø¼ û?d ø.^q½] @  ø½ û?d 8/^Ó;Ü @  ø¾û?d x/^QªËÌ @  ø¿û?d ¸/^¦¾ @  øÀû?d ø/^–±` @  øÁû?d 80^Z.àu @  øÂû?d x0^Ø¿÷« @  øÃû?d ¸0^y G @  øÄû?d ø0^û·™ @  øÅû?d 81^Y¶ÖÖ @  øÆû?d x1^Û'Á @  øÇû?d ¸1^éòÑT @  øÈû?d ø1^kcÆŠ @  øÉû?d 82^„É‹ì @  øÊû?d x2^Xœ2 @  øËû?d ¸2^§fËÞ @  øÌû?d ø2^%÷Ü @  øÍû?d 83^‡Q½O @  øÎû?d x3^Àª‘ @  øÏû?d ¸3^bSß @  øÐ û?d ø3^àÂÈà @  øÑ!û?d 84^‹bÖk @  øÒ"û?d x4^ óÁµ @  øÓ#û?d ¸4^¨Í–Y @  øÔ$û?d ø4^*\‡ @  øÕ%û?d 85^ˆúàÈ @  øÖ&û?d x5^ k÷ @  ø×'û?d ¸5^8¾çJ @  øØ(û?d ø5^º/ð” @  øÙ)û?d 86^U…½ò @  øÚ*û?d x6^ת, @  øÛ+û?d ¸6^v*ýÀ @  øÜ,û?d ø6^ô»ê @  øÝ-û?d 87^V‹Q @  øÞ.û?d x7^ÔŒœ @  øß/û?d ¸7^?®÷o @  øà0û?d ø7^½?à± @  øá1û?d 88^û.  @  øâ2û?d€ x8^ |Šs @  ù3û?d ¸8^M•¶ @  ù4û?d ø8^Ï’‚h @  ù5û?d 89^¨}Ê @  ù6û?d x9^*ì @  ù7û?d ¸9^Ö‹@2 @  ù8û?d ø9^TWì @  ù9û?d 8:^uEð @  ù:û?d x:^÷“R. @  ù ;û?d ¸:^“äþ/ @  ù <û?d ø:^uéñ @  ù =û?d 8;^všsS @  ù >û?d x;^ô d @  ù ?û?d ¸;^ÛeŠ @  ù@û?d ø;^‚JrT @  ùAû?d 8<^Šù f @  ùBû?d x<^h¸ @  ùCû?d ¸<^l¶¹ @  ùDû?d ø<^g @  ùEû?d 8=^‰a;Å @  ùFû?d x=^ ð, @  ùGû?d ¸=^÷—c= @  ùHû?d ø=^utã @  ùIû?d 8>^Tfÿ @  ùJû?d x>^Öq! @  ùKû?d ¸>^²øÝ  @  ùLû?d ø>^0iÊþ @  ùMû?d 8?^W†P\ @  ùNû?d x?^ÕG‚ @  ùOû?duÐ@^7 ¸?^L jH @  ùPû?d ø?^α}– @  ùQû?d P@^ æl' @  ù Rû?d @^-nÙ @  ù!Sû?d Ð@^ë×ø @  ù"Tû?d A^;H[ @  ù#Uû?d PA^~Z„ @  ù$Vû?d A^.‹Xz @  ù%Wû?d ÐA^pˆ| @  ù&Xû?d B^íÌ¢½ @  ù'Yû?d PB^Ó¾ @  ù(Zû?d B^óô@ @  ù)[û?d ÐB^5ç¼a @  ù*\û?d C^å¯0‰ @  ù+]û?d PC^Й1 @  ù,^û?d C^ðl3ã @  ù-_û?d ÐC^Vˆ2Õ @  ù.`û?d D^OÆÁÚ @  ù/aû?d PD^ܪZ9 @  ù0bû?d D^ü_XÇ @  ù1cû?d ÐD^:Láæ @  ù2dû?d E^êm @  ù3eû?d PE^ß2lš @  ù4fû?d E^ÿÇnd @  ù5gû?d ÐE^¡Ä4b @  ù6hû?d F^<€”£ @  ù7iû?d PF^M1  @  ù8jû?d F^"¸3^ @  ù9kû?d ÐF^䫊 @  ù:lû?d G^4ã— @  ù;mû?d PG^Õ @  ù<nû?d G^! ý @  ù=oû?d ÐG^s= @  ù>pû?d H^.Œ±  @  ù?qû?d PH^á Ë @  ù@rû?d H^" 5 @  ùAsû?d ÐH^ä° @  ùBtû?d I^4O<ü @  ùCuû?d PI^y=h @  ùDvû?d I^!Œ?– @  ùEwû?d ÐI^e @  ùFxû?d J^âËÅQ @  ùGyû?d PJ^Ü`R @  ùHzû?d J^üób¬ @  ùI{û?d ÐJ^:àÛ @  ùJ|û?d K^ê¨We @  ùK}û?d PK^ßžVñ @  ùL~û?d K^ÿkT @  ùMû?d ÐK^´º @  ùN€û?d L^­Wçµ @  ùOû?d PL^>;|V @  ùP‚û?d L^Î~¨ @  ùQƒû?d ÐL^ØÝlj @  ùR„û?d M^•Ka @  ùS…û?d PM^=£Jõ @  ùT†û?d M^VH  @  ùU‡û?d ÐM^CU  @  ùVˆû?d N^Þ²Ì @  ùW‰û?d PN^àÜÏ @  ùXŠû?d N^À)1 @  ùY‹û?d ÐN^:¬ @  ùZŒû?d O^Ör ø @  ù[û?d PO^ãD!l @  ù\Žû?d O^ñ#’ @  ù]û?d ÐO^øâx @  ù^û?d P^F<§Ê @  ù_‘û?d PP^ÄV™ @  ù`’û?d P^ä£g @  ùa“û?d ÐP^"° F @  ùb”û?d Q^òø,® @  ùc•û?d PQ^ÇÎ-: @  ùd–û?d Q^ç;/Ä @  ùe—û?d ÐQ^¹8u @  ùf˜û?d R^$|Õ @  ùg™û?d PR^±p @  ùhšû?d R^:Drþ @  ùi›û?d ÐR^üWËß @  ùjœû?d S^,G7 @  ùkû?d PS^)F£ @  ùlžû?d S^9ÜD] @  ùmŸû?d ÐS^Ÿ8Ek @  ùn û?d T^†v¶d @  ùo¡û?d PT^-‡ @  ùp¢û?d T^5ï/y @  ùq£û?d ÐT^óü–X @  ùr¤û?d U^#´° @  ùs¥û?d PU^‚$ @  ùt¦û?d U^6wÚ @  ùu§û?d ÐU^htCÜ @  ùv¨û?d V^õ0ã @  ùw©û?d PV^ËýF @  ùxªû?d V^ëDà @  ùy«û?d ÐV^-ýÁ @  ùz¬û?d W^ýSq) @  ù{­û?d PW^Èep½ @  ù|®û?d W^èrC @  ù}¯û?d ÐW^ÓÃJ© @  ù~°û?d X^ç<Æ´ @  ù±û?d PX^(LD @  ù€²û?d X^òNº @  ù³û?d ÐX^Îá÷› @  ù‚´û?d Y^©{s @  ùƒµû?d PY^+Ÿzç @  ù„¶û?d Y^ jx @  ù…·û?d ÐY^Ui" @  ù†¸û?d Z^È-‚Þ @  ù‡¹û?d PZ^öà'Ý @  ùˆºû?d Z^Ö%# @  ù‰»û?d ÐZ^œ @  ùмû?d [^ÀNê @  ù‹½û?d P[^õx~ @  ùŒ¾û?d [^Õ€ @  ù¿û?d Ð[^ƒ9§ @  ùŽÀû?d \^šwô¨ @  ùÁû?d P\^ oK @  ùÂû?d \^)îmµ @  ù‘Ãû?d Ð\^ïýÔ” @  ù’Äû?d ]^?µX| @  ù“Åû?d P]^ ƒYè @  ù”Æû?d ]^*v[ @  ù•Çû?d Ð]^tu @  ù–Èû?d ^^é1¡Ñ @  ù—Éû?d P^^×üÒ @  ù˜Êû?d ^^÷ , @  ù™Ëû?d Ð^^1¿  @  ùšÌû?d _^áR3å @  ù›Íû?d P_^Ôd2q @  ùœÎû?d _^ô‘0 @  ùuÐ`^Ïû?d Ð_^ÏÂe @  ùžÐû?d (`^q:½ý @  ùŸÑû?d h`^óP® @  ù Òû?d ¨`^Ó¥P @  ù¡Óû?d è`^¶ºq @  ù¢Ôû?d (a^Åþ6™ @  ù£Õû?d ha^ðÈ7  @  ù¤Öû?d ¨a^Ð=5ó @  ù¥×û?d èa^Ž>oõ @  ù¦Øû?d (b^zÏ4 @  ù§Ùû?d hb^-·j7 @  ù¨Úû?d ¨b^ BhÉ @  ù©Ûû?d èb^ËQÑè @  ùªÜû?d (c^] @  ù«Ýû?d hc^./\” @  ù¬Þû?d ¨c^Ú^j @  ù­ßû?d èc^¨>_\ @  ù®àû?d (d^±p¬S @  ù¯áû?d hd^"7° @  ù°âû?d ¨d^é5N @  ù±ãû?d èd^ÄúŒo @  ù²äû?d (e^²‡ @  ù³åû?d he^!„ @  ù´æû?d ¨e^qí @  ùµçû?d èe^_rYë @  ù¶èû?d (f^Â6ù* @  ù·éû?d hf^üû\) @  ù¸êû?d ¨f^Ü^× @  ù¹ëû?d èf^çö @  ùºìû?d (g^ÊUk @  ù»íû?d hg^ÿcjŠ @  ù¼îû?d ¨g^ß–ht @  ù½ïû?d èg^äÅPž @  ù¾ðû?d (h^Ð:܃ @  ù¿ñû?d hh^üWfB @  ùÀòû?d ¨h^Ü¢d¼ @  ùÁóû?d èh^±Ý @  ùÂôû?d (i^ÊùQu @  ùÃõû?d hi^ÿÏPá @  ùÄöû?d ¨i^ß:R @  ùÅ÷û?d èi^9 @  ùÆøû?d (j^}¨Ø @  ùÇùû?d hj^"° Û @  ùÈúû?d ¨j^E% @  ùÉûû?d èj^ÄV¶ @  ùÊüû?d (k^:ì @  ùËýû?d hk^!(;x @  ùÌþû?d ¨k^Ý9† @  ùÍÿû?d èk^ Á© @  ùÎü?d (l^ঠ@  ùÏü?d hl^ƒã{E @  ùÐü?d ¨l^£y» @  ùÑü?d èl^eÀš @  ùÒü?d (m^µMLr @  ùÓü?d hm^€{Mæ @  ùÔü?d ¨m^ ŽO @  ùÕü?d èm^þ @  ùÖü?d (n^cɵß @  ù× ü?d hn^]Ü @  ùØ ü?d ¨n^}ñ" @  ùÙ ü?d èn^»â« @  ùÚ ü?d (o^kª'ë @  ùÛ ü?d ho^^œ& @  ùÜü?d ¨o^~i$ @  ùÝü?d èo^E:k @  ùÞü?d (p^ûä Ù @  ùßü?d hp^yŽŠ @  ùàü?d ¨p^Y{t @  ùáü?d èp^Ÿh§U @  ùâü?d€ (q^Žgܽ @  úü?d hq^Z• @  úü?d ¨q^zå—þ @  úü?d èq^á¯6 @  úü?d (r^|ë–Ô @  úü?d hr^Œ”l­ @  úü?d ¨r^¬anS @  úü?d èr^¤Àˆ @  úü?d (s^tˆà @  ú ü?d hs^„÷þ™ @  ú ü?d ¨s^¤üg @  ú ü?d ès^ǯ¼ @  ú  ü?d (t^Þáõ³ @  ú !ü?d ht^.žÊ @  ú"ü?d ¨t^k 4 @  ú#ü?d èt^«kÕ @  ú$ü?d (u^{#Yg @  ú%ü?d hu^‹\£ @  ú&ü?d ¨u^«©¡à @  ú'ü?d èu^0ã  @  ú(ü?d (v^­§ Ê @  ú)ü?d hv^]ØZ³ @  ú*ü?d ¨v^}-XM @  ú+ü?d èv^uŒ¾ @  ú,ü?d (w^¥Ä2þ @  ú-ü?d hw^U»È‡ @  ú.ü?d ¨w^uNÊy @  ú/ü?d èw^‹T ~ @  ú0ü?d (x^¿«…c @  ú1ü?d hx^OÔ @  ú2ü?d ¨x^o!}ä @  ú3ü?d èx^Û'‚ï @  ú 4ü?d (y^ o @  ú!5ü?d hy^ûô~ @  ú"6ü?d ¨y^Ûåö€ @  ú#7ü?d èy^@¯Wk @  ú$8ü?d (z^Ýë÷ª @  ú%9ü?d hz^-” Ó @  ú&:ü?d ¨z^ a- @  ú';ü?d èz^Àév @  ú(<ü?d ({^Õˆež @  ú)=ü?d h{^%÷Ÿç @  ú*>ü?d ¨{^ @  ú+?ü?d è{^–ÿrÓ @  ú,@ü?d (|^±Ü @  ú-Aü?d h|^Î{¥ @  ú.Bü?d ¨|^_;y[ @  ú/Cü?d è|^ú;¡à @  ú0Dü?d (}^*s- @  ú1Eü?d h}^Ú ×q @  ú2Fü?d ¨}^úùÕ @  ú3Gü?d è}^a³td @  ú4Hü?d (~^ü÷Ô¥ @  ú5Iü?d h~^ ˆ.Ü @  ú6Jü?d ¨~^,}," @  ú7Kü?d è~^$ÜÊy @  ú8Lü?d (^ô”F‘ @  ú9Mü?d h^ë¼è @  ú:Nü?d ¨^uЀ^'$¾ @  ú;Oü?d è^§„m @  ú<€Pü?d @€^É:ì @  ú=€Qü?d €€^›!@ @  ú>€Rü?d À€^°ž @  ú?€Sü?d ^Qhv1 @  ú@€Tü?d @^Óùaï @  úA€Uü?d €^⎶ @  úB€Vü?d À^s™h @  úC€Wü?d ‚^‡ìœ @  úD€Xü?d @‚^}˜B @  úE€Yü?d €‚^Wfw @  úF€Zü?d À‚^Õ÷`Å @  úG€[ü?d ƒ^¨ @  úH€\ü?d @ƒ^  v @  úI€]ü?d €ƒ^_å/ @  úJ€^ü?d Àƒ^Ý”òñ @  úK€_ü?d „^%æìû @  úL€`ü?d @„^§wû% @  úM€aü?d €„^õl| @  úN€bü?d À„^wý¢ @  úO€cü?d …^€$@/ @  úP€dü?d @…^µWñ @  úQ€eü?d €…^P®¸¨ @  úR€fü?d À…^Ò?¯v @  úS€gü?d †^V ¹‚ @  úT€hü?d @†^Ô1®\ @  úU€iü?d €†^†*A @  úV€jü?d À†^»VÛ @  úW€kü?d ‡^^Ã+¶ @  úX€lü?d @‡^ÜRƒ` @  ú›€¯ü?d ˜^nJÛ¤ @  úœ€°ü?d @˜^ìÛÌz @  ú€±ü?d €˜^¾À## @  úž€²ü?d À˜^‡ú) @  û ý?d ˜®^©Õî @  û ý?d Ø®^+DùC @  û ý?d ¯^¿ŽÛT @  û ý?d X¯^=ÌŠ @  û ý?d ˜¯^¡¶|© @  ûý?d د^#'kw @  ûý?d °^$;øñ @  ûý?d X°^¦ªï/ @  ûý?d ˜°^1øû› @  ûý?d ذ^³iìE @  ûý?d ±^'£ÎR @  ûý?d X±^¥2ÙŒ @  ûý?d ˜±^…[ @  û7-ý?d ˜·^Š—-x @  û8.ý?d Ø·^:¦ @  û9/ý?d ¸^…;™ @  û:0ý?d X¸^ªŽQ @  û;1ý?d ˜¸^øšå @  û<2ý?d ظ^i; @  û=3ý?d ¹^†£¯, @  û>4ý?d X¹^2¸ò @  û?5ý?d ˜¹^Š; @  û@6ý?d ع^ªÍ @  ûA7ý?d º^I|íÔ @  ûB8ý?d Xº^Ëíú  @  ûC9ý?d ˜º^\¿î¾ @  ûD:ý?d غ^Þ.ù` @  ûE;ý?d »^JäÛw @  ûF<ý?d X»^ÈuÌ© @  ûG=ý?d ˜»^TÜ|Š @  ûH>ý?d Ø»^ÖMkT @  ûI?ý?d ¼^&›¢ @  ûJ@ý?d X¼^™·Œ| @  ûKAý?d ˜¼^å˜È @  ûLBý?d ؼ^Œt @  ûMCý?d ½^¾­ @  ûNDý?d X½^š/ºß @  ûOEý?d ˜½^«'4 @  ûPFý?d ؽ^)¶# @  ûQGý?d ¾^h`ÎÛ @  ûRHý?d X¾^êñÙ @  ûSIý?d ˜¾^}£Í± @  ûTJý?d ؾ^ÿ2Úo @  ûUKý?d ¿^køøx @  ûVLý?d X¿^éiï¦ @  ûWMý?d ˜¿^uÀ_… @uÐÀ^  ûXNý?d Ø¿^÷QH[ @  ûYOý?d 0À^*c6= @  ûZPý?d pÀ^¨ò!ã @  û[Qý?d °À^? 5W @  û\Rý?d ðÀ^½1"‰ @  û]Sý?d 0Á^)ûž @  û^Tý?d pÁ^«j@ @  û_Uý?d °Á^‹d¾3 @  û`Vý?d ðÁ^ õ©í @  ûaWý?d 0Â^H#Dô @  ûbXý?d pÂ^ʲS* @  ûcYý?d °Â^]àGž @  ûdZý?d ðÂ^ßqP@ @  ûe[ý?d 0Ã^K»rW @  ûf\ý?d pÃ^É*e‰ @  ûg]ý?d °Ã^UƒÕª @  ûh^ý?d ðÃ^×Ât @  ûi_ý?d 0Ä^ê)'“ @  ûj`ý?d pÄ^h¸0M @  ûkaý?d °Ä^ÿê$ù @  ûlbý?d ðÄ^}{3' @  ûmcý?d 0Å^é±0 @  ûndý?d pÅ^k î @  ûoeý?d °Å^Z(ˆ- @  ûpfý?d ðÅ^عŸó @  ûqgý?d 0Æ^™orê @  ûrhý?d pÆ^þe4 @  ûsiý?d °Æ^Œ¬q€ @  ûtjý?d ðÆ^=f^ @  ûuký?d 0Ç^š÷DI @  ûvlý?d pÇ^fS— @  ûwmý?d °Ç^„Ïã´ @  ûxný?d ðÇ^^ôj @  ûyoý?d 0È^‹cWC @  ûzpý?d pÈ^ ò@ @  û{qý?d °È^ž T) @  û|rý?d ðÈ^1C÷ @  û}sý?d 0É^ˆûaà @  û~tý?d pÉ^ jv> @  ûuý?d °É^g5éî @  û€vý?d ðÉ^å¤þ0 @  ûwý?d 0Ê^¤r) @  û‚xý?d pÊ^&ã÷ @  ûƒyý?d °Ê^±±C @  û„zý?d ðÊ^3  @  û…{ý?d 0Ë^§ê%Š @  û†|ý?d pË^%{2T @  û‡}ý?d °Ë^¹Ò‚w @  ûˆ~ý?d ðË^;C•© @  û‰ý?d 0Ì^ëî1Í @  ûŠ€ý?d pÌ^i& @  û‹ý?d °Ì^þ-2§ @  ûŒ‚ý?d ðÌ^|¼%y @  ûƒý?d 0Í^èvn @  ûŽ„ý?d pÍ^jç° @  û…ý?d °Í^[ïžs @  û†ý?d ðÍ^Ù~‰­ @  û‘‡ý?d 0Î^˜¨d´ @  û’ˆý?d pÎ^9sj @  û“‰ý?d °Î^kgÞ @  û”Šý?d ðÎ^úp @  û•‹ý?d 0Ï^›0R @  û–Œý?d pÏ^¡EÉ @  û—ý?d °Ï^…õê @  û˜Žý?d ðÏ^™â4 @  û™ý?d 0Ð^…q² @  ûšý?d pÐ^‚fl @  û›‘ý?d °Ð^FrØ @  ûœ’ý?d ðÐ^—×e @  û“ý?d 0Ñ^G @  ûž”ý?d pÑ^ŒPÏ @  ûŸ•ý?d °Ñ^¡‚ù¼ @  û –ý?d ðÑ^#îb @  û¡—ý?d 0Ò^bÅ{ @  û¢˜ý?d pÒ^àT¥ @  û£™ý?d °Ò^w @  û¤šý?d ðÒ^õ—Ï @  û¥›ý?d 0Ó^a]5Ø @  û¦œý?d pÓ^ãÌ" @  û§ý?d °Ó^e’% @  û¨žý?d ðÓ^ýô…û @  û©Ÿý?d 0Ô^ÀÏ` @  ûª ý?d pÔ^B^w @  û«¡ý?d °Ô^Õ cv @  û¬¢ý?d ðÔ^Wt¨ @  û­£ý?d 0Õ^ÃWV¿ @  û®¤ý?d pÕ^AÆAa @  û¯¥ý?d °Õ^pÎÏ¢ @  û°¦ý?d ðÕ^ò_Ø| @  û±§ý?d 0Ö^³‰5e @  û²¨ý?d pÖ^1"» @  û³©ý?d °Ö^¦J6 @  û´ªý?d ðÖ^$Û!Ñ @  ûµ«ý?d 0×^°Æ @  û¶¬ý?d p×^2€ @  û·­ý?d °×^®)¤; @  û¸®ý?d ð×^,¸³å @  û¹¯ý?d 0Ø^¡…Ì @  ûº°ý?d pØ^# @  û»±ý?d °Ø^´F¦ @  û¼²ý?d ðØ^6×x @  û½³ý?d 0Ù^¢&o @  û¾´ý?d pÙ^ Œ1± @  û¿µý?d °Ù^®…žP @  ûÀ¶ý?d ðÙ^,‰Ž @  ûÁ·ý?d 0Ú^mÂd— @  û¸ý?d pÚ^ïSsI @  ûùý?d °Ú^xgý @  ûĺý?d ðÚ^úp# @  ûÅ»ý?d 0Û^nZR4 @  ûƼý?d pÛ^ìËEê @  ûǽý?d °Û^pbõÉ @  ûȾý?d ðÛ^òóâ @  ûÉ¿ý?d 0Ü^?˜á @  ûÊÀý?d pÜ^½ ? @  ûËÁý?d °Ü^*[‹ @  ûÌÂý?d ðÜ^¨ÊU @  ûÍÃý?d 0Ý^<$B @  ûÎÄý?d pÝ^¾‘3œ @  ûÏÅý?d °Ý^™½_ @  ûÐÆý?d ðÝ^ ª @  ûÑÇý?d 0Þ^LÞG˜ @  ûÒÈý?d pÞ^ÎOPF @  ûÓÉý?d °Þ^YDò @  ûÔÊý?d ðÞ^ÛŒS, @  ûÕËý?d 0ß^OFq; @  ûÖÌý?d pß^Í×få @  û×Íý?d uÐà^/°ß^Q~ÖÆ @  ûØÎý?d ðß^ê(Í @  ûÙ Ïý?d Hà^JNl @  ûÚ Ðý?d ˆà^j»nñ @  ûÛ Ñý?d Èà^_oe @  ûÜ Òý?d á^Åã @  ûÝ Óý?d Há^IÖZ¬ @  ûÞ Ôý?d ˆá^i#XR @  ûß Õý?d Èá^ëIä @  ûà Öý?d â^v DÀ @  ûá ×ý?d Hâ^(Æ @  ûâ Øý?d€ ˆâ^Ž­´ @  ü Ùý?d Èâ^ZÚý< @  ü Úý?d ã^Š’qÔ @  ü Ûý?d Hã^‰È3 @  ü Üý?d ˆã^©=1æ @  ü Ýý?d Èã^YBËŸ @  ü Þý?d ä^@ 8 @  ü ßý?d Hä^(ZfÜ @  ü àý?d ˆä^¯d" @  ü áý?d Èä^øÐž[ @  ü âý?d å^(˜³ @  ü ãý?d Hå^+ÂP @  ü äý?d ˆå^ 7R @  ü åý?d Èå^ûH¨ø @  ü æý?d æ^f 9 @  ü çý?d Hæ^[3¥ @  ü èý?d ˆæ^{é1[ @  ü éý?d Èæ^‹–Ë" @  ü êý?d ç^[ÞGÊ @  ü ëý?d Hç^X„ @  ü ìý?d ˆç^xqø @  ü íý?d Èç^ˆý @  ü îý?d è^¼ñqœ @  ü ïý?d Hè^I  @  ü ðý?d ˆè^iåò @  ü ñý?d Èè^™šî‹ @  ü òý?d é^IÒbc @  ü óý?d Hé^Jˆ ¯ @  ü ôý?d ˆé^j}"Q @  ü õý?d Èé^šØ( @  ü öý?d ê^Fxé @  ü ÷ý?d Hê^+PdÅ @  ü øý?d ˆê^OâÉ’ @  ü!€ùý?d Èê^Â@— @  ü"úý?d ë^UÌ @  ü#ûý?d Hë^޳ @  ü$üý?d ˆë^1úŒM @  ü%ýý?d Èë^Á…v4 @  ü&þý?d ì^ØË…; @  ü'ÿý?d Hì^NúÝ @  ü(þ?d ˆì^‰|$ö @  ü) þ?d Èì^yÞ @  ü* þ?d í^©KRg @  ü+ þ?d Hí^ª« @  ü, þ?d ˆí^ŠäU @  ü- þ?d Èí^z›è, @  ü. þ?d î^çßHí @  ü/ þ?d Hî^ÚÏsq @  ü0 þ?d ˆî^ú:q @  ü1  þ?d Èî^ E‹ö @  ü2  þ?d ï^Ú  @  ü3  þ?d Hï^ÙWEÒ @  ü4  þ?d ˆï^ù¢G, @  ü5  þ?d Èï^ ݽU @  ü6 þ?d ð^·ç @  ü7 þ?d Hð^Bâfw @  ü8 þ?d ˆð^bd‰ @  ü9 þ?d Èð^’hžð @  ü: þ?d ñ^B  @  ü; þ?d Hñ^AzPÔ @  ü< þ?d ˆñ^aR* @  ü= þ?d Èñ^‘ð¨S @  ü> þ?d ò^ ´’ @  ü? þ?d Hò^Ž¥, @  ü@ þ?d ˆò^®PÒ @  üA þ?d Èò^^/ê« @  üB þ?d ó^ŽgfC @  üC þ?d Hó^=$ @  üD þ?d ˆó^­È&q @  üE þ?d Èó^]·Ü @  üF þ?d ô^Dù/ @  üG þ?d Hô^,¯qK @  üH  þ?d ˆô^ Zsµ @  üI !þ?d Èô^ü%‰Ì @  üJ "þ?d õ^,m$ @  üK #þ?d Hõ^/7Gè @  üL $þ?d ˆõ^ÂE @  üM %þ?d Èõ^ÿ½¿o @  üN &þ?d ö^bù® @  üO 'þ?d Hö^_é$2 @  üP (þ?d ˆö^&Ì @  üQ )þ?d Èö^cܵ @  üR *þ?d ÷^_+P] @  üS +þ?d H÷^\q‘ @  üT ,þ?d ˆ÷^|„o @  üU -þ?d È÷^Œûê @  üV .þ?d ø^¸f  @  üW /þ?d Hø^Må› @  üX 0þ?d ˆø^me @  üY 1þ?d Èø^où @  üZ 2þ?d ù^M'uô @  ü[ 3þ?d Hù^N}78 @  ü\ 4þ?d ˆù^nˆ5Æ @  ü] 5þ?d Èù^ž÷Ï¿ @  ü^ 6þ?d ú^³o~ @  ü_ 7þ?d Hú^/¥sR @  ü` 8þ?d ˆú^Pq¬ @  üa 9þ?d Èú^ÿ/‹Õ @  üb :þ?d û^/g= @  üc ;þ?d Hû^,=Eñ @  üd <þ?d ˆû^ ÈG @  üe =þ?d Èû^ü·½v @  üf >þ?d ü^åùNy @  üg ?þ?d Hü^}ÿ$ @  üh @þ?d ˆü^] Ú @  üi Aþ?d Èü^­uý£ @  üj Bþ?d ý^}=qK @  ük Cþ?d Hý^~g3‡ @  ül Dþ?d ˆý^^’1y @  üm Eþ?d Èý^®íË @  ün Fþ?d þ^3©kÁ @  üo Gþ?d Hþ^¹P] @  üp Hþ?d ˆþ^.LR£ @  üq Iþ?d Èþ^Þ3¨Ú @  ür Jþ?d ÿ^{$2 @  üs Kþ?d Hÿ^ !fþ @  üt Lþ?d ˆÿ^-Ôd @  üu uÐ_Mþ?d Èÿ^Ý«žy @  üv Nþ?d _’¶ˆ @  üw Oþ?d `_gþÑ @  üx Pþ?d  _G Óæ @  üy Qþ?d à_·t)Ÿ @  üz Rþ?d _g<¥w @  ü{ Sþ?d `_dfç» @  ü| Tþ?d  _D“åE @  ü} Uþ?d à_´ì< @  ü~ Vþ?d _)¨¿ý @  ü Wþ?d `_Hï•r @  ü€ Xþ?d  _h—Œ @  ü Yþ?d à_˜emõ @  ü‚ Zþ?d _H-á @  üƒ [þ?d `_Kw£Ñ @  ü„ \þ?d  _k‚¡/ @  ü… ]þ?d à_›ý[V @  ü† ^þ?d _‚³¨Y @  ü‡ _þ?d `_êåö @  üˆ `þ?d  _Êôë @  ü‰ aþ?d à_:o’ @  üŠ bþ?d _ê'‚z @  ü‹ cþ?d `_é}À¶ @  üŒ dþ?d  _ɈÂH @  ü eþ?d à_9÷81 @  üŽ fþ?d _¤³˜ð @  ü gþ?d `_™££l @  ü hþ?d  _¹V¡’ @  ü‘ iþ?d à_I)[ë @  ü’ jþ?d _™a× @  ü“ kþ?d `_š;•Ï @  ü” lþ?d  _ºÎ—1 @  ü• mþ?d à_J±mH @  ü– nþ?d _~NáU @  ü— oþ?d `_‹¯†Å @  ü˜ pþ?d  _«Z„; @  ü™ qþ?d à_[%~B @  üš rþ?d _‹mòª @  ü› sþ?d ` _ˆ7°f @  üœ tþ?d   _¨Â²˜ @  ü uþ?d à _X½Há @  üž vþ?d _Åùè  @  üŸ wþ?d ` _éïô  @  ü  xþ?d   _Éöò @  ü¡ yþ?d à _9e ‹ @  ü¢ zþ?d _é-€c @  ü£ {þ?d ` _êw¯ @  ü¤ |þ?d   _Ê‚ÀQ @  ü¥ }þ?d à _:ý:( @  ü¦ ~þ?d _#³É' @  ü§ þ?d ` _¦sÖè @  ü¨ €þ?d   _††Ô @  ü© þ?d à _vù.o @  üª ‚þ?d _¦±¢‡ @  ü« ƒþ?d ` _¥ëàK @  ü¬ „þ?d   _…âµ @  ü­ …þ?d à _uaÌ @  ü® †þ?d _è%¸  @  ü¯ ‡þ?d `_Õ5ƒ‘ @  ü° ˆþ?d  _õÀo @  ü± ‰þ?d à_¿{ @  ü² Šþ?d _Õ÷÷þ @  ü³ ‹þ?d `_Ö­µ2 @  ü´ Œþ?d  _öX·Ì @  üµ þ?d à_'Mµ @  ü¶ Žþ?d _¸ùñ @  ü· þ?d `_M–— @  ü¸ þ?d  _mí”i @  ü¹ ‘þ?d à_’n @  üº ’þ?d _MÚâø @  ü» “þ?d `_N€ 4 @  ü¼ ”þ?d  _nu¢Ê @  ü½ •þ?d à_ž X³ @  ü¾ –þ?d _Nør @  ü¿ —þ?d `__âÌ @  üÀ ˜þ?d  _¡ªà2 @  üÁ ™þ?d à_QÕK @  ü šþ?d _–£ @  üà ›þ?d `_‚ÇÔo @  üÄ œþ?d  _¢2Ö‘ @  üÅ þ?d à_RM,è @  üÆ žþ?d _Kßç @  üÇ Ÿþ?d `_#U« @  üÈ  þ?d  _ ƒU @  üÉ ¡þ?d à_óßy, @  üÊ ¢þ?d _#—õÄ @  üË £þ?d `_ Í· @  üÌ ¤þ?d  _8µö @  üÍ ¥þ?d à_ðGO @  üÎ ¦þ?d _mïN @  üÏ §þ?d `_PÔÒ @  üÐ ¨þ?d  _pæÖ, @  üÑ ©þ?d à_€™,U @  üÒ ªþ?d _PÑ ½ @  üÓ «þ?d `_S‹âq @  üÔ ¬þ?d  _s~à @  üÕ ­þ?d à_ƒö @  üÖ ®þ?d _·þ–ë @  ü× ¯þ?d `_Bñ{ @  üØ °þ?d  _bêó… @  üÙ ±þ?d à_’• ü @  üÚ ²þ?d _BÝ… @  üÛ ³þ?d `_A‡ÇØ @  üÜ ´þ?d  _arÅ& @  üÝ µþ?d à_‘ ?_ @  üÞ ¶þ?d _ IŸž @  üß ·þ?d `_ _ƒ² @  üà ¸þ?d  _ªL @  üá ¹þ?d à_ðÕ{5 @  üâ ºþ?d€ _T^ë{ @  ý »þ?d `_¶Eáž @  ý ¼þ?d  _–°ã` @  ý ½þ?d à_£†âô @  ý ¾þ?d _ºÈû @  ý ¿þ?d `_ì|Ü @  ý Àþ?d  _̉" @  ý Áþ?d à_òD¢! @  ý Âþ?d _" .É @  ý Ãþ?d `_ä—è @  ý Äþ?d  _Äê• @  ý Åþ?d à_ñÜ”‚ @  ý Æþ?d _l˜4C @  ý Çþ?d `_2›nE @  ý Èþ?d  _nl» @  ý Éþ?d à_÷X @  ý Êþ?d _QJ{° @  ý Ëþ?d `_—Y‘ @  ý Ìþ?d  _·¬ÀouÐ _ @  ý Íþ?d à_‚šÁû @  ý Îþ?d 8 _ó‘ @  ý Ïþ?d x _ÈÂ'w @  ý Ðþ?d ¸ _è7%‰ @  ý Ñþ?d ø _Öú€Š @  ý Òþ?d 8!_² b @  ý Óþ?d x!_À¡µC @  ý Ôþ?d ¸!_àT·½ @  ý Õþ?d ø!_Õb¶) @  ý Öþ?d 8"_H&è @  ý ×þ?d x"_%Lî @  ý Øþ?d ¸"_6ÐN @  ý Ùþ?d ø"_´ºòC @  ý Úþ?d 8#_dò~« @  ý! Ûþ?d x#_¢áÇŠ @  ý" Üþ?d ¸#_‚Åt @  ý# Ýþ?d ø#_·"Äà @  ý$ Þþ?d 8$_®l7ï @  ý% ßþ?d x$_ˆ6Ù @  ý& àþ?d ¸$_(}4' @  ý' áþ?d ø$_°‘$ @  ý( âþ?d 8%_ÆøÌ @  ý) ãþ?d x%_ë¤í @  ý* äþ?d ¸%_ ¦ @  ý+ åþ?d ø%_(§‡ @  ý, æþ?d 8&_ˆlF @  ý- çþ?d x&_Öo]@ @  ý. èþ?d ¸&_öš_¾ @  ý/ éþ?d ø&_eöÄ] @  ý0 êþ?d 8'_µ¾Hµ @  ý1 ëþ?d x'_s­ñ” @  ý2 ìþ?d ¸'_SXój @  ý3 íþ?d ø'_fnòþ @  ý4 îþ?d 8(_R‘~ã @  ý5 ïþ?d x(_iÂF  @  ý6 ðþ?d ¸(_I7D÷ @  ý7 ñþ?d ø(_wúáô @  ý8 òþ?d 8)_§²m @  ý9 óþ?d x)_a¡Ô= @  ý: ôþ?d ¸)_ATÖà @  ý; õþ?d ø)_tb×W @  ý< öþ?d 8*_é&w– @  ý= ÷þ?d x*_·%- @  ý> øþ?d ¸*_—Ð/n @  ý? ùþ?d ø*_»½•¯ @  ý@ úþ?d 8+_kõG @  ýA ûþ?d x+_­æ f @  ýB üþ?d ¸+_¢˜ @  ýC ýþ?d ø+_¸%£  @  ýD þþ?d 8,_¡kP @  ýE ÿþ?d x,_•~Eº @  ýF ÿ?d ¸,_µ‹GD @  ýG ÿ?d ø,_‹FâG @  ýH ÿ?d 8-_[n¯ @  ýI ÿ?d x-_׎ @  ýJ ÿ?d ¸-_½èÕp @  ýK ÿ?d ø-_ˆÞÔä @  ýL ÿ?d 8._št% @  ýM ÿ?d x._K™.# @  ýN ÿ?d ¸._kl,Ý @  ýO  ÿ?d ø._ø·> @  ýP  ÿ?d 8/_(H;Ö @  ýQ  ÿ?d x/_î[‚÷ @  ýR  ÿ?d ¸/_ή€  @  ýS  ÿ?d ø/_û˜ @  ýT ÿ?d 80_EF=/ @  ýU ÿ?d x0_~Å @  ýV ÿ?d ¸0_^à; @  ýW ÿ?d ø0_`-¢8 @  ýX ÿ?d 81_°e.Ð @  ýY ÿ?d x1_vv—ñ @  ýZ ÿ?d ¸1_Vƒ• @  ý[ ÿ?d ø1_cµ”› @  ý\ ÿ?d 82_þñ4Z @  ý] ÿ?d x2_ òn\ @  ý^ ÿ?d ¸2_€l¢ @  ý_ ÿ?d ø2_mÐñ @  ý` ÿ?d 83_Ò%\ @  ýa ÿ?d x3_6å8 @  ýb ÿ?d ¸3_4ÃçÆ @  ýc ÿ?d ø3_õæR @  ýd ÿ?d 84_»] @  ýe ÿ?d x4_¾_k @  ýf  ÿ?d ¸4_žª• @  ýg !ÿ?d ø4_ g³– @  ýh "ÿ?d 85_p/?~ @  ýi #ÿ?d x5_¶<†_ @  ýj $ÿ?d ¸5_–É„¡ @  ýk %ÿ?d ø5_£ÿ…5 @  ýl &ÿ?d 86_>»%ô @  ým 'ÿ?d x6_`¸ò @  ýn (ÿ?d ¸6_@M}  @  ýo )ÿ?d ø6_Ó!æï @  ýp *ÿ?d 87_ij @  ýq +ÿ?d x7_ÅzÓ& @  ýr ,ÿ?d ¸7_åÑØ @  ýs -ÿ?d ø7_йÐL @  ýt .ÿ?d 88_äF\Q @  ýu /ÿ?d x8_ßd» @  ýv 0ÿ?d ¸8_ÿàfE @  ýw 1ÿ?d ø8_Á-ÃF @  ýx 2ÿ?d 89_eO® @  ýy 3ÿ?d x9_×vö @  ýz 4ÿ?d ¸9_÷ƒôq @  ý{ 5ÿ?d ø9_µõå @  ý| 6ÿ?d 8:__ñU$ @  ý} 7ÿ?d x:_ò" @  ý~ 8ÿ?d ¸:_! Ü @  ý 9ÿ?d ø:_î<‡, @  ý€ :ÿ?d 8;_>t Ä @  ý ;ÿ?d x;_øg²å @  ý‚ <ÿ?d ¸;_Ø’° @  ýƒ =ÿ?d ø;_í¤± @  ý„ >ÿ?d 8<_ôêB€ @  ý… ?ÿ?d x<_¢^V§ @  ý† @ÿ?d ¸<_‚«TY @  ý‡ Aÿ?d ø<_¼fñZ @  ýˆ Bÿ?d 8=_l.}² @  ý‰ Cÿ?d x=_ª=Ä“ @  ýŠ Dÿ?d ¸=_ŠÈÆm @  ý‹ Eÿ?d ø=_¿þÇù @  ýŒ Fÿ?d 8>_"ºg8 @  ý Gÿ?d x>_|¹=> @  ýŽ Hÿ?d ¸>_\L?À @  ý Iÿ?d ø>_Ï ¤# @  ý Jÿ?d 8?_h(Ë @  ý‘ Kÿ?d x?_Ù{‘ê @  ý’ Lÿ?duÐ@_7 ¸?_ùŽ“ @  ý“ Mÿ?d ø?_̸’€ @  ý” Nÿ?d P@_(¼ @  ý• Oÿ?d @_–#v @  ý– Pÿ?d Ð@_²¨ @  ý— Qÿ?d A_x¦, @  ý˜ Rÿ?d PA_ú7;C @  ý™ Sÿ?d A_ž@—B @  ýš Tÿ?d ÐA_Ñ€œ @  ý› Uÿ?d B_626 @  ýœ Vÿ?d PB_´£!É @  ý Wÿ?d B_HÄnï @  ýž Xÿ?d ÐB_ÊUy1 @  ýŸ Yÿ?d C_æ^T @  ý  Zÿ?d PC_˜wIŠ @  ý¡ [ÿ?d C_üå‹ @  ý¢ \ÿ?d ÐC_~‘òU @  ý£ ]ÿ?d D_Ðx @  ý¤ ^ÿ?d PD_RéÎ @  ý¥ _ÿ?d D_ViØ @  ý¦ `ÿ?d ÐD_Ôø @  ý§ aÿ?d E_¸ì=3 @  ý¨ bÿ?d PE_:}*í @  ý© cÿ?d E_^ †ì @  ýª dÿ?d ÐE_Ü›‘2 @  ý« eÿ?d F_öx'¹ @  ý¬ fÿ?d PF_té0g @  ý­ gÿ?d F_ˆŽA @  ý® hÿ?d ÐF_ hŸ @  ý¯ iÿ?d G_˪hJ @  ý° jÿ?d PG_I;” @  ý± kÿ?d G_-LÓ• @  ý² lÿ?d ÐG_¯ÝÄK @  ý³ mÿ?d H_,…^ @  ý´ nÿ?d PH_®I @  ýµ oÿ?d H_7#d @  ý¶ pÿ?d ÐH_µ²sÖ @  ý· qÿ?d I_Ù¦Mã @  ý¸ rÿ?d PI_[7Z= @  ý¹ sÿ?d I_?@ö< @  ýº tÿ?d ÐI_½Ñáâ @  ý» uÿ?d J_—2Wi @  ý¼ vÿ?d PJ_£@· @  ý½ wÿ?d J_éÄ‘ @  ý¾ xÿ?d ÐJ_kUO @  ý¿ yÿ?d K_á9¸ @  ýÀ zÿ?d PK_—p.f @  ýÁ {ÿ?d K_ó‚g @  ý |ÿ?d ÐK_q–•¹ @  ýà }ÿ?d L_ßpü @  ýÄ ~ÿ?d PL_]îg" @  ýÅ ÿ?d L_´ø2· @  ýÆ €ÿ?d ÐL_6i%i @  ýÇ ÿ?d M_Z}\ @  ýÈ ‚ÿ?d PM_Øì ‚ @  ýÉ ƒÿ?d M_¼› ƒ @  ýÊ „ÿ?d ÐM_> ·] @  ýË …ÿ?d N_éÖ @  ýÌ †ÿ?d PN_–x @  ýÍ ‡ÿ?d N_jY. @  ýÎ ˆÿ?d ÐN_èŽNð @  ýÏ ‰ÿ?d O_);N% @  ýÐ Šÿ?d PO_«ªYû @  ýÑ ‹ÿ?d O_ÏÝõú @  ýÒ Œÿ?d ÐO_MLâ$ @  ýÓ ÿ?d P_D5HÜ @  ýÔ Žÿ?d PP_Ƥ_ @  ýÕ ÿ?d P__“rÈ @  ýÖ ÿ?d ÐP_Ýe @  ý× ‘ÿ?d Q_±[# @  ýØ ’ÿ?d PQ_3‡Lý @  ýÙ “ÿ?d Q_Wðàü @  ýÚ ”ÿ?d ÐQ_Õa÷" @  ýÛ •ÿ?d R_ÿ‚A© @  ýÜ –ÿ?d PR_}Vw @  ýÝ —ÿ?d R_tQ @  ýÞ ˜ÿ?d ÐR_å @  ýß ™ÿ?d S_ÓV)ê @  ýà šÿ?d PS_QÇ>4 @  ýá ›ÿ?d S_5°’5 @  ýâ œÿ?d€ ÐS_vfrë @  þ ÿ?d T_9Î߇ @  þ žÿ?d PT_»_ÈY @  þ Ÿÿ?d T_z–'¢ @  þ  ÿ?d ÐT_ø0| @  þ ¡ÿ?d U_Z¡Q3 @  þ ¢ÿ?d PU_Ø0Fí @  þ £ÿ?d U_rõµ– @  þ ¤ÿ?d ÐU_ðd¢H @  þ ¥ÿ?d V_Îï. @  þ ¦ÿ?d PV__øð @  þ §ÿ?d V_¤qL; @  þ ¨ÿ?d ÐV_&à[å @  þ ©ÿ?d W_„F:ª @  þ ªÿ?d PW_×-t @  þ «ÿ?d W_³àï @  þ ¬ÿ?d ÐW_ƒ"÷1 @  þ ­ÿ?d X_Å3–‹ @  þ ®ÿ?d PX_G¢U @  þ ¯ÿ?d X_ÜWr @  þ °ÿ?d ÐX_™M@¬ @  þ ±ÿ?d Y_;ë!ã @  þ ²ÿ?d PY_¹z6= @  þ ³ÿ?d Y_¿ÅF @  þ ´ÿ?d ÐY_‘.Ò˜ @  þ µÿ?d Z_~„Ÿþ @  þ ¶ÿ?d PZ_üˆ  @  þ ·ÿ?d Z_Å;<ë @  þ ¸ÿ?d ÐZ_Gª+5 @  þ ¹ÿ?d [_å Jz @  þ ºÿ?d P[_g]¤ @  þ »ÿ?d [_qÿ· @  þ ¼ÿ?d Ð[_ón Q @  þ! ½ÿ?d \_˜Î¾ù @  þ" ¾ÿ?d P\__©' @  þ# ¿ÿ?d \_+ÆSÍ @  þ$ Àÿ?d Ð\_©WD @  þ% Áÿ?d ]_ ñ%\ @  þ& Âÿ?d P]_‰`2‚ @  þ' Ãÿ?d ]_#¥Áù @  þ( Äÿ?d Ð]_¡4Ö' @  þ) Åÿ?d ^_Nž›A @  þ* Æÿ?d P^_ÌŒŸ @  þ+ Çÿ?d ^_õ!8T @  þ, Èÿ?d Ð^_w°/Š @  þ- Éÿ?d __ÕNÅ @  þ. Êÿ?d P__W‡Y @  þ/ Ëÿ?d __P㔀 @  þuÐ`_0 Ìÿ?d Ð__)¸^ @  þ1Íÿ?d (`_å àa @  þ2Îÿ?d h`_g›÷¿ @  þ3Ïÿ?d ¨`_;å!˜ @  þ4Ðÿ?d è`_¹t6F @  þ5Ñÿ?d (a_ÒW  @  þ6Òÿ?d ha_™C@× @  þ7Óÿ?d ¨a_3†³¬ @  þ8Ôÿ?d èa_±¤r @  þ9Õÿ?d (b_^½é @  þ:Öÿ?d hb_Ü,þÊ @  þ;×ÿ?d ¨b_åJ @  þ<Øÿ?d èb_g“]ß @  þ=Ùÿ?d (c_Å5< @  þ>Úÿ?d hc_G¤+N @  þ?Ûÿ?d ¨c_ÿÁÇ÷ @  þ@Üÿ?d èc_}PÐ) @  þAÝÿ?d (d_ðÎ @  þBÞÿ?d hd_”aÙ_ @  þCßÿ?d ¨d_U¨6¤ @  þDàÿ?d èd_×9!z @  þEáÿ?d (e_uŸ@5 @  þFâÿ?d he_÷Wë @  þGãÿ?d ¨e_]ˤ @  þHäÿ?d èe_ßZ³N @  þIåÿ?d (f_0ðþ( @  þJæÿ?d hf_²aéö @  þKçÿ?d ¨f_‹O]= @  þLèÿ?d èf_ ÞJã @  þMéÿ?d (g_«x+¬ @  þNêÿ?d hg_)é @  þo ?d ¨o_üPª¥ @  þp ?d èo_~Á½{ @  þq ?d (p_²ñìn @  þr?d hp_0`û° @  þs?d ¨p_l-— @  þt?d èp_î:I @  þu?d (q_L)[ @  þv?d hq_θLØ @  þw?d ¨q_d}¿£ @  þx?d èq_æì¨} @  þy?d (r_ Få @  þz?d hr_‹×òÅ @  þ{?d ¨r_²ùF @  þ|?d èr_0hQÐ @  þ}?d (s_’Î0Ÿ @  þ~?d hs__'A @  þ?d ¨s_KlûÉ @  þ€?d ès_Éýì @  þ?d (t_¢]ò¿ @  þ‚?d ht_ Ìåa @  þƒ?d ¨t_á š @  þ„ ?d èt_c”D @  þ…!?d (u_Á2|  @  þ†"?d hu_C£kÕ @  þ‡#?d ¨u_éf˜® @  þˆ$?d èu_k÷p @  þ‰%?d (v_„] @  þŠ&?d hv_ÌÕÈ @  þ‹'?d ¨v_?âa @  þŒ(?d èv_½svÝ @  þ)?d (w_Õ’ @  þŽ*?d hw_DL @  þ+?d ¨w_š Í× @  þ,?d èw_±Ú  @  þ‘-?d (x_^ »³ @  þ’.?d hx_Ü1¬m @  þ“/?d ¨x_€OzJ @  þ”0?d èx_Þm” @  þ•1?d (y_ x Û @  þ–2?d hy_"é @  þ—3?d ¨y_ˆ,è~ @  þ˜4?d èy_ ½ÿ  @  þ™5?d (z_岯 @  þš6?d hz_g†¥ @  þ›7?d ¨z_^¨Ó @  þœ8?d èz_Ü9  @  þ9?d ({_~ŸgB @  þž:?d h{_üpœ @  þŸ;?d ¨{_êlš· @  þ <?d è{_hýi @  þ¡=?d (|_]“Á @  þ¢>?d h|_Ì„ @  þ£??d ¨|_°U~õ @  þ¤@?d è|_2Äi+ @  þ¥A?d (}_bd @  þ¦B?d h}_óº @  þ§C?d ¨}_¸6ìÁ @  þ¨D?d è}_:§û @  þ©E?d (~_Õ ¶y @  þªF?d h~_Wœ¡§ @  þ«G?d ¨~_n²l @  þ¬H?d è~_ì#² @  þ­I?d (_N…cý @  þ®J?d h_Ìt# @  þ¯K?d ¨_uЀ_'Ëp¹¸ @  þ°L?d è_Iá®f @  þ±M?d @€_U±¡µ @  þ²N?d €€_uD£K @  þ³O?d À€_‹^`L @  þ´P?d _[ì¤ @  þµQ?d @_«iÝ @  þ¶R?d €_‹œ# @  þ·S?d À_ƒ=òx @  þ¸T?d ‚_yR¹ @  þ¹U?d @‚_î¨À @  þºV?d €‚_Îóª> @  þ»W?d À‚_U¹ Õ @  þ¼X?d ƒ_…ñ‡= @  þ½Y?d @ƒ_uŽ}D @  þ¾Z?d €ƒ_U{º @  þ¿[?d Àƒ_Oz†# @  þÀ\?d „_V4u, @  þÁ]?d @„_¦KU @  þÂ^?d €„_†¾« @  þÃ_?d À„_åwp @  þÄ`?d …_5[û˜ @  þÅa?d @…_Å$á @  þÆb?d €…_åÑ @  þÇc?d À…_ípåD @  þÈd?d †_p4E… @  þÉe?d @†_€K¿ü @  þÊf?d €†_ ¾½ @  þËg?d À†_;ôé @  þÌh?d ‡_ë¼ @  þÍi?d @‡_Ãjx @  þÎj?d €‡_;6h† @  þÏk?d À‡_ž6°= @  þÐl?d ˆ_ªÉ<  @  þÑm?d @ˆ_Z¶ÆY @  þÒn?d €ˆ_zCħ @  þÓo?d Àˆ_„Y  @  þÔp?d ‰_T‹H @  þÕq?d @‰_¤nq1 @  þÖr?d €‰_„›sÏ @  þ×s?d À‰_Œ:•” @  þØt?d Š_~5U @  þÙu?d @Š_áÏ, @  þÚv?d €Š_ÁôÍÒ @  þÛw?d ÀŠ_Z¾l9 @  þÜx?d ‹_ŠöàÑ @  þÝy?d @‹_z‰¨ @  þÞz?d €‹_Z|V @  þß{?d À‹_îzç] @  þà|?d Œ_÷4R @  þá}?d @Œ_Kî+ @  þâ~?d€ €Œ_S}ðs @  ÿ?d ÀŒ_< @  ÿ€?d _ìOê @  ÿ?d @_ÙyŽ~ @  ÿ‚?d €_ùŒŒ€ @  ÿƒ?d À_?Ÿ5¡ @  ÿ„?d Ž_¢Û•` @  ÿ…?d @Ž_œ0c @  ÿ†?d €Ž_¼ã2 @  ÿ ‡?d ÀŽ_âàh› @  ÿ ˆ?d _2¨äs @  ÿ ‰?d @_žåç @  ÿ Š?d €_'kç @  ÿ ‹?d À_áx^8 @  ÿŒ?d __¦âŠ @  ÿ?d @_ÌÊyi @  ÿŽ?d €_ì?{— @  ÿ?d À_×lC} @  ÿ?d ‘_$Ï• @  ÿ‘?d @‘_2Î @  ÿ’?d €‘_çÌÿ @  ÿ“?d À‘_ÔôuÞ @  ÿ”?d ’_I°Õ @  ÿ•?d @’_w}p @  ÿ–?d €’_Wˆrâ @  ÿ—?d À’_ ‹(ä @  ÿ˜?d “_Ùä  @  ÿ™?d @“_ìõ¥˜ @  ÿš?d €“_̧f @  ÿ›?d À“_ G @  ÿœ?d ”_]íH @  ÿ?d @”_‘7Q @  ÿ ž?d €”_±ÂSå @  ÿ!Ÿ?d À”_&RÓ @  ÿ" ?d •_ÇnÞ; @  ÿ#¡?d @•_òX߯ @  ÿ$¢?d €•_Ò­ÝQ @  ÿ%£?d À•_¾dp @  ÿ&¤?d –_‰úı @  ÿ'¥?d @–_·7a² @  ÿ(¦?d €–_—ÂcL @  ÿ)§?d À–_ÉÁ9J @  ÿ*¨?d —_‰µ¢ @  ÿ+©?d @—_,¿´6 @  ÿ,ª?d €—_ J¶È @  ÿ-«?d À—_ÊYé @  ÿ.¬?d ˜_þ¦ƒô @  ÿ/­?d @˜_mÊ @  ÿ0®?d €˜_M?é @  ÿ1¯?d À˜_vl" @  ÿ2°?d ™_¦$®ë @  ÿ3±?d @™_“¯ @  ÿ4²?d €™_³ç­ @  ÿ5³?d À™_uô  @  ÿ6´?d š_è°´a @  ÿ7µ?d @š_Ö}b @  ÿ8¶?d €š_öˆœ @  ÿ9·?d Àš_¨‹Iš @  ÿ:¸?d ›_xÃÅr @  ÿ;¹?d @›_MõÄæ @  ÿ<º?d €›_mÆ @  ÿ=»?d À›_«9 @  ÿ>¼?d œ_²]Œ6 @  ÿ?½?d @œ_ž06÷ @  ÿ@¾?d €œ_¾Å4  @  ÿA¿?d Àœ_èq . @  ÿBÀ?d _89¬Æ @  ÿCÁ?d @_ ­R @  ÿDÂ?d €_-ú¯¬ @  ÿEÃ?d À_ëé @  ÿFÄ?d ž_v­¶L @  ÿGÅ?d @ž_H`O @  ÿHÆ?d €ž_h•± @  ÿIÇ?d Àž_6–K· @  ÿJÈ?d Ÿ_æÞÇ_ @  ÿKÉ?d @Ÿ_ÓèÆË @  ÿLÊ?d €Ÿ_óÄ5 @  ÿMËuР_?d ÀŸ_5} @  ÿNÌ?d  _D£r @  ÿOÍ?d X _×i8‘ @  ÿPÎ?d ˜ _÷œ:o @  ÿQÏ?d Ø _ÌÏ… @  ÿRÐ?d ¡_‡Žm @  ÿSÑ?d X¡_)±ù @  ÿTÒ?d ˜¡_ D @  ÿUÓ?d Ø¡_ÏW4& @  ÿVÔ?d ¢_R”ç @  ÿWÕ?d X¢_lÞ1ä @  ÿXÖ?d ˜¢_L+3 @  ÿY×?d Ø¢_(i @  ÿZØ?d £_Â`åô @  ÿ[Ù?d X£_÷Vä` @  ÿ\Ú?d ˜£_×£æž @  ÿ]Û?d Ø£_°_¿ @  ÿ^Ü?d ¤_þ¬° @  ÿ_Ý?d X¤_Š”ã @  ÿ`Þ?d ˜¤_ªa @  ÿaß?d ؤ_ …+ @  ÿbà?d ¥_ÜÍŸÃ @  ÿcá?d X¥_éûžW @  ÿdâ?d ˜¥_Éœ© @  ÿeã?d Ø¥_%ˆ @  ÿfä?d ¦_’Y…I @  ÿgå?d X¦_¬” J @  ÿhæ?d ˜¦_Œa"´ @  ÿiç?d ئ_Òbx² @  ÿjè?d §_*ôZ @  ÿké?d X§_7õÎ @  ÿlê?d ˜§_é÷0 @  ÿmë?d ا_ÑúN @  ÿnì?d ¨_å  @  ÿoí?d X¨_viYï @  ÿpî?d ˜¨_Vœ[ @  ÿqï?d ب_mÏcû @  ÿrð?d ©_½‡ï @  ÿsñ?d X©_ˆ±î‡ @  ÿtò?d ˜©_¨Dìy @  ÿuó?d Ø©_nWUX @  ÿvô?d ª_óõ™ @  ÿwõ?d Xª_ÍÞPš @  ÿxö?d ˜ª_í+Rd @  ÿy÷?d ت_³(b @  ÿzø?d «_c`„Š @  ÿ{ù?d X«_VV… @  ÿ|ú?d ˜«_v£‡à @  ÿ}û?d Ø«_°°>Á @  ÿ~ü?d ¬_©þÍÎ @  ÿý?d X¬_fÅG> @  ÿ€þ?d ˜¬_F0EÀ @  ÿÿ?d ج_r%Py @  ÿ‚?d ­_¢mÜ‘ @  ÿƒ?d X­_—[Ý @  ÿ„?d ˜­_·®ßû @  ÿ…?d Ø­_q½fÚ @  ÿ†?d ®_ìùÆ @  ÿ‡?d X®_Ò4c @  ÿˆ?d ˜®_òÁaæ @  ÿ‰?d Ø®_¬Â;à @  ÿŠ?d ¯_|Š· @  ÿ‹ ?d X¯_I¼¶œ @  ÿŒ ?d ˜¯_iI´b @  ÿ ?d د_¯Z C @  ÿŽ ?d °_„±ñ @  ÿ ?d X°_‚è* @  ÿ?d ˜°_¢(ì @  ÿ‘?d ذ_™N @  ÿ’?d ±_Iœî @  ÿ“?d X±_|0z @  ÿ”?d ˜±_\ÅŸ„ @  ÿ•?d ر_šÖ&¥ @  ÿ–?d ²_’†d @  ÿ—?d X²_9_#g @  ÿ˜?d ˜²_ª!™ @  ÿ™?d ز_G©{Ÿ @  ÿš?d ³_—á÷w @  ÿ›?d X³_¢×öã @  ÿœ?d ˜³_‚"ô @  ÿ?d س_D1M< @  ÿž?d ´_]¾3 @  ÿŸ?d X´_ß` @  ÿ ?d ˜´_ÿàž @  ÿ¡?d Ø´_Y¨ @  ÿ¢ ?d µ_‰L@ @  ÿ£!?d Xµ_¼zŒÔ @  ÿ¤"?d ˜µ_œŽ* @  ÿ¥#?d ص_Zœ7  @  ÿ¦$?d ¶_ÇØ—Ê @  ÿ§%?d X¶_ù2É @  ÿ¨&?d ˜¶_Ùà07 @  ÿ©'?d ض_‡ãj1 @  ÿª(?d ·_W«æÙ @  ÿ«)?d X·_bçM @  ÿ¬*?d ˜·_Bhå³ @  ÿ­+?d Ø·_„{\’ @  ÿ®,?d ¸_°„Ð @  ÿ¯-?d X¸_#èKl @  ÿ°.?d ˜¸_I’ @  ÿ±/?d ظ_8Nqx @  ÿ²0?d ¹_èý @  ÿ³1?d X¹_Ý0ü @  ÿ´2?d ˜¹_ýÅþú @  ÿµ3?d ع_;ÖGÛ @  ÿ¶4?d º_¦’ç @  ÿ·5?d Xº_˜_B @  ÿ¸6?d ˜º_¸ª@ç @  ÿ¹7?d غ_æ©á @  ÿº8?d »_6á–  @  ÿ»9?d X»_×— @  ÿ¼:?d ˜»_#"•c @  ÿ½;?d Ø»_å1,B @  ÿ¾<?d ¼_üßM @  ÿ¿=?d X¼_ÐeŒ @  ÿÀ>?d ˜¼_ðçgr @  ÿÁ??d ؼ_¦SsU @  ÿÂ@?d ½_vÿ½ @  ÿÃA?d X½_C-þ) @  ÿÄB?d ˜½_cØü× @  ÿÅC?d ؽ_¥ËEö @  ÿÆD?d ¾_8å7 @  ÿÇE?d X¾_B@4 @  ÿÈF?d ˜¾_&·BÊ @  ÿÉG?d ؾ_x´Ì @  ÿÊH?d ¿_¨ü”$ @  ÿËI?d X¿_Ê•° @  ÿÌJ?d ˜¿_½?—N @uÐÀ_  ÿÍK?d Ø¿_€Bo @  ÿÎ L?d 0À_ä²D= @  ÿÏ M?d pÀ_wÞßÞ @  ÿÐ N?d °À_W+Ý  @  ÿÑ O?d ðÀ_lxåÊ @  ÿÒ P?d 0Á_¼0i" @  ÿÓ Q?d pÁ_‰h¶ @  ÿÔ R?d °Á_©ójH @  ÿÕ S?d ðÁ_oàÓi @  ÿÖ T?d 0Â_ò¤s¨ @  ÿ× U?d pÂ_ÌiÖ« @  ÿØ V?d °Â_ìœÔU @  ÿÙ W?d ðÂ_²ŸŽS @  ÿÚ X?d 0Ã_b×» @  ÿÛ Y?d pÃ_Wá/ @  ÿÜ Z?d °Ã_wÑ @  ÿÝ [?d ðÃ_±¸ð @  ÿÞ \?d 0Ä_¨IKÿ @  ÿß ]?d pÄ_*#÷¬ @  ÿà ^?d °Ä_ ÖõR @  ÿá _?d ðÄ_¬2ôd @  ÿâ `?d€ 0Å_:;Ûž @   a?d pÅ_îL’# @   b?d °Å_ιÝ @   c?d ðÅ_ÍãÒ @   d?d 0Æ_P§rÐ @   e?d pÆ_ Øˆ© @   f?d °Æ_€-ŠW @   g?d ðÆ_œ+ @   h?d 0Ç_ÀÔà @   i?d pÇ_0«ùº @   j?d °Ç_^ûD @   k?d ðÇ_¹ˆ @   l?d 0È_'û5• @   m?d pÈ_ׄÏì @   n?d °È_÷qÍ @   o?d ðÈ_¯1”b @   p?d 0É_yŠ @   q?d pÉ_âó @   r?d °É_¯óà  @   s?d ðÉ_¬©¢Á @   t?d 0Ê_1í @   u?d pÊ_Á’øy @   v?d °Ê_ágú‡ @   w?d ðÊ_qÖÿû @   x?d 0Ë_¡žs @   y?d pË_Qá‰j @   z?d °Ë_q‹” @   {?d ðË_rNÉX @   |?d 0Ì_k:W @   }?d pÌ_›À. @   ~?d °Ì_»ŠÂÐ @   ?d ðÌ_‚íÄO @   €?d 0Í_R¥H§ @  ! ?d pÍ_¢Ú²Þ @  " ‚?d °Í_‚/°  @  # ƒ?d ðÍ_uòì @  $ „?d 0Î_1R- @  % …?d pÎ_ìN¨T @  & †?d °Î_Ì»ªª @  ' ‡?d ðÎ_\ ¯Ö @  ( ˆ?d 0Ï_ŒB#> @  ) ‰?d pÏ_|=ÙG @  * Š?d °Ï_\ÈÛ¹ @  + ‹?d ðÏ__’™u @  , Œ?d 0Ð_áL%Ç @  - ?d pÐ_3ß¾ @  . Ž?d °Ð_1ÆÝ@ @  / ?d ðÐ_i†„0 @  0 ?d 0Ñ_¹ÎØ @  1 ‘?d pÑ_I±ò¡ @  2 ’?d °Ñ_iDð_ @  3 “?d ðÑ_j²“ @  4 ”?d 0Ò_÷ZR @  5 •?d pÒ_%è+ @  6 –?d °Ò_'ÐêÕ @  7 —?d ðÒ_·aï© @  8 ˜?d 0Ó_g)cA @  9 ™?d pÓ_—V™8 @  : š?d °Ó_·£›Æ @  ; ›?d ðÓ_´ùÙ  @  < œ?d 0Ô_­·* @  = ?d pÔ_]ÈÐ| @  > ž?d °Ô_}=Ò‚ @  ? Ÿ?d ðÔ_Ë“  @  @  ?d 0Õ_׃ä @  A ¡?d pÕ_'üå @  B ¢?d °Õ_ çc @  C £?d ðÕ_S¥¯ @  D ¤?d 0Ö_™n @  E ¥?d pÖ_ihÿ @  F ¦?d °Ö_Iýé @  G §?d ðÖ_Ù,ø• @  H ¨?d 0×_ dt} @  I ©?d p×_ùŽ @  J ª?d °×_ÙîŒú @  K «?d ð×_Ú´Î6 @  L ¬?d 0Ø_îKB+ @  M ­?d pØ_4¸R @  N ®?d °Ø_>Áº¬ @  O ¯?d ðØ_fãÜ @  P °?d 0Ù_¶Éo4 @  Q ±?d pÙ_F¶•M @  R ²?d °Ù_fC—³ @  S ³?d ðÙ_eÕ @  T ´?d 0Ú_ø]u¾ @  U µ?d pÚ_"Ç @  V ¶?d °Ú_(×9 @  W ·?d ðÚ_¸fˆE @  X ¸?d 0Û_h.­ @  Y ¹?d pÛ_˜QþÔ @  Z º?d °Û_¸¤ü* @  [ »?d ðÛ_»þ¾æ @  \ ¼?d 0Ü_¢°Mé @  ] ½?d pÜ_RÏ· @  ^ ¾?d °Ü_r:µn @  _ ¿?d ðÜ_V›çc @  ` À?d 0Ý_†Ók‹ @  a Á?d pÝ_v¬‘ò @  b Â?d °Ý_VY“  @  c Ã?d ðÝ_UÑÀ @  d Ä?d 0Þ_ÈGq @  e Å?d pÞ_88‹x @  f Æ?d °Þ_͉† @  g Ç?d ðÞ_ˆ|Œú @  h È?d 0ß_X4 @  i É?d pß_¨Kúk @  j Ê?d uÐà_/°ß_ˆ¾ø• @  k Ë?d ðß_pŠY @  lÌ?d Hà_i.߯ @  mÍ?d ˆà_;50ö @  nÎ?d Èà_¹¤'( @  oÏ?d á_³=ån @  pÐ?d Há_1¬ò° @  qÑ?d ˆá_c·é @  rÒ?d Èá_á& 7 @  sÓ?d â_ý©ÿä @  tÔ?d Hâ_8è: @  uÕ?d ˆâ_-#c @  vÖ?d Èâ_¯²½ @  w×?d ã_mÚŽ÷ @  xØ?d Hã_ïK™) @  yÙ?d ˆã_½Pvp @  zÚ?d Èã_?Áa® @  {Û?d ä_§Ddz @  |Ü?d Hä_%ÕÐm @  }Ý?d ˆä_wÎ?4 @  ~Þ?d Èä_õ_(ê @  ß?d å_>&Âc @  €à?d Hå_¼·Õ½ @  á?d ˆå_î¬:ä @  ‚â?d Èå_l=-: @  ƒã?d æ_p²Øé @  „ä?d Hæ_ò#Ï7 @  …å?d ˆæ_ 8 n @  †æ?d Èæ_"©7° @  ‡ç?d ç_àÁ©ú @  ˆè?d Hç_bP¾$ @  ‰é?d ˆç_0KQ} @  Šê?d Èç_²ÚF£ @  ‹ë?d è_ @  Œì?d Hè_…ˆr @  í?d ˆè_×dg+ @  Žî?d Èè_Uõpõ @  ï?d é__l²³ @  ð?d Hé_Ýý¥m @  ‘ñ?d ˆé_æJ4 @  ’ò?d Èé_ w]ê @  “ó?d ê_ø¨9 @  ”ô?d Hê_“i¿ç @  •õ?d ˆê_ÁrP¾ @  –ö?d Èê_CãG` @  —÷?d ë_‹Ù* @  ˜ø?d Hë_Îô @  ™ù?d ˆë_Q!­ @  šú?d Èë_Ó6s @  ›û?d ì_Kn @  œü?d Hì_É„‡° @  ý?d ˆì_›Ÿhé @  žþ?d Èì_7 @  Ÿÿ?d í_¿õ‚· @   ?d Hí_=d•i @  ¡?d ˆí_oz0 @  ¢?d Èí_íîmî @  £?d î_ña˜= @  ¤?d Hî_sðã @  ¥?d ˆî_!ë`º @  ¦?d Èî_£zwd @  §?d ï_aé. @  ¨?d Hï_ãƒþð @  © ?d ˆï_±˜© @  ª ?d Èï_3 w @  « ?d ð_ ï× @  ¬ ?d Hð_Žø  @  ­ ?d ˆð_Ü–P @  ®?d Èð_^Ž @  ¯?d ñ_TžÂÈ @  °?d Hñ_ÖÕ @  ±?d ˆñ_„:O @  ²?d Èñ_…-‘ @  ³?d ò_ ØB @  ´?d Hò_˜›Ïœ @  µ?d ˆò_Ê€ Å @  ¶?d Èò_H7 @  ·?d ó_Šy©Q @  ¸?d Hó_è¾ @  ¹?d ˆó_ZóQÖ @  º?d Èó_ØbF @  »?d ô_@çà @  ¼?d Hô_Âv÷Ë @  ½?d ˆô_m’ @  ¾?d Èô_üL @  ¿?d õ_:ÓÕô @  À ?d Hõ_¸BÂ* @  Á!?d ˆõ_êY-s @  Â"?d Èõ_hÈ:­ @  Ã#?d ö_tGÏ~ @  Ä$?d Hö_öÖØ  @  Å%?d ˆö_¤Í7ù @  Æ&?d Èö_&\ ' @  Ç'?d ÷_ä4¾m @  È(?d H÷_f¥©³ @  É)?d ˆ÷_4¾Fê @  Ê*?d È÷_¶/Q4 @  Ë+?d ø_ˆ; @  Ì,?d Hø_ŠŸå @  Í-?d ˆø_Ó‘p¼ @  Î.?d Èø_Qgb @  Ï/?d ù_[™¥$ @  Ð0?d Hù_Ù²ú @  Ñ1?d ˆù_‹]£ @  Ò2?d Èù_ ‚J} @  Ó3?d ú_ ¿® @  Ô4?d Hú_—œ¨p @  Õ5?d ˆú_ŇG) @  Ö6?d Èú_GP÷ @  ×7?d û_…~ν @  Ø8?d Hû_ïÙc @  Ù9?d ˆû_Uô6: @  Ú:?d Èû_×e!ä @  Û;?d ü_Oà‡ù @  Ü<?d Hü_Íq' @  Ý=?d ˆü_Ÿj~ @  Þ>?d Èü_ûh  @  ß??d ý_kƒ¡› @  à@?d Hý_é¶E @  áA?d ˆý_» Y @  âB?d€ Èý_M[Rd @  C?d þ_°•ïž @  D?d Hþ_2ø@ @  E?d ˆþ_¥Vìô @  F?d Èþ_'Çû* @  G?d ÿ_+: @  H?d Hÿ_©Œ-Ä @  I?d ˆÿ_5%ç @  uÐ`J?d Èÿ_LÚ±9 @   K?d `-"5w @   L?d ``¯³"© @   M?d  `8á6 @   N?d à`ºp!à @   O?d `Óú‚ @   P?d ``Qk•Á @   Q?d  ``c @   R?d à`âò Ü @   S?d `;4â @   T?d ``¹¥< @   U?d  `.÷ˆ @   V?d à`¬fV @   W?d ` ¼×f @   X?d ``"-À¸ @   Y?d  `¾„p› @   Z?d à`<gE @   [?d `aÙ:µ @   \?d ``ãH-k @   ]?d  `t9ß @   ^?d à`ö‹. @   _?d `¶´ @   `?d ``€'£ß @   a?d  ` ) ¬ @   b?d à`"¸r @  ! c?d `û~L @  " d?d ``yï’ @  # e?d  `î½& @  $ f?d à`l,ø @  % g?d ``öÆÈ @  & h?d ``âgÑ @  ' i?d  `~Îa5 @  ( j?d à`ü_vë @  ) k?d `Œ"T  @  * l?d ``³C× @  + m?d  `™áWc @  , n?d à`p@½ @  - o?d `rúãa @  . p?d ` `ðkô¿ @  / q?d   `Ácz| @  0 r?d à `Còm¢ @  1 s?d `š4cœ @  2 t?d ` `¥tB @  3 u?d   `÷`ö @  4 v?d à ` fw( @  5 w?d `¼¶ @  6 x?d ` `ƒ-¡Æ @  7 y?d   `„å @  8 z?d à `; @  9 {?d `ÀÙ[Ë @  : |?d ` `BHL @  ; }?d   `ÕX¡ @  < ~?d à `W‹O @  = ?d `N ”ü @  > €?d ` `̱ƒ" @  ? ?d   `B¸,à @  @ ‚?d à `À); @  A ƒ?d `ï5# @  B „?d ``›~"ý @  C …?d  ` ,6I @  D †?d à`޽!— @  E ‡?d `‚gà§ @  F ˆ?d ``ö÷y @  G ‰?d  `œ_GZ @  H Š?d à`ÎP„ @  I ‹?d `ä’BÉ @  J Œ?d ``fU @  K ?d  `ñQA£ @  L Ž?d à`sÀV} @  M ?d `Jõ¡ @  N ?d ``˜Ûâ @  O ‘?d  `©Ól¼ @  P ’?d à`+B{b @  Q “?d `ò„u\ @  R ”?d ``pb‚ @  S •?d  `çGv6 @  T –?d à`eÖaè @  U —?d `i  Ø @  V ˜?d ``ë· @  W ™?d  `w4% @  X š?d à`õ¥û @  Y ›?d `¨iM  @  Z œ?d ``*øZÕ @  [ ?d  `½ªNa @  \ ž?d à`?;Y¿ @  ] Ÿ?d `Ëÿ @  ^  ?d ``I—Ôa @  _ ¡?d  `i™} @  ` ¢?d à`ëjÌ @  a £?d `2Îdò @  b ¤?d ``°_s, @  c ¥?d  `' g˜ @  d ¦?d à`¥œpF @  e §?d `©F±v @  f ¨?d ``+צ¨ @  g ©?d  `·~‹ @  h ª?d à`5ïU @  i «?d `E’#· @  j ¬?d ``Ç4i @  k ­?d  `PQ Ý @  l ®?d à`ÒÀ7 @  m ¯?d `»J”ß @  n °?d ``9Ûƒ @  o ±?d  `Ó Â @  p ²?d à`ŠB @  q ³?d `S„" @  r ´?d ``Ñü @  s µ?d  `FGH @  t ¶?d à`ÄÖ– @  u ·?d `È Á¦ @  v ¸?d ``JÖx @  w ¹?d  `Ö4f[ @  x º?d à`T¥q… @  y »?d ` i,u @  z ¼?d ``‹ø;« @  { ½?d  `ª/ @  | ¾?d à`ž;8Á @  } ¿?d `šV·Ð @  ~ À?d ``Ç  @   Á?d  `u˜?Þ @  € Â?d à`÷ ( @   Ã?d `.Ï&> @  ‚ Ä?d ``¬^1à @  ƒ Å?d  `; %T @  „ Æ?d à`¹2Š @  … Ç?d `µGóº @  † È?d ``7Öäd @  ‡ É?d  `«TGuÐ ` @  ˆ Ê?d à`Ò€x™ @  ‰Ë?d 8 `ç  @  ŠÌ?d x `e˜Þ @  ‹Í?d ¸ `òÊ j @  ŒÎ?d ø `p[´ @  Ï?d 8!`Ñ¿h @  ŽÐ?d x!`›@¨¶ @  Ñ?d ¸!`ªH&u @  Ò?d ø!`(Ù1« @  ‘Ó?d 8"`ñ?• @  ’Ô?d x"`sŽ(K @  “Õ?d ¸"`äÜ<ÿ @  ”Ö?d ø"`fM+! @  •×?d 8#`j—ê @  –Ø?d x#`èýÏ @  —Ù?d ¸#`t¯Mì @  ˜Ú?d ø#`ö>Z2 @  ™Û?d 8$`«ò @  šÜ?d x$`)c @  ›Ý?d ¸$`¾1¨ @  œÞ?d ø$`< v @  ß?d 8%`ȉv @  žà?d x%`J ž¨ @  Ÿá?d ¸%`j7Û @   â?d ø%`è“  @  ¡ã?d 8&`1U.; @  ¢ä?d x&`³Ä9å @  £å?d ¸&`$–-Q @  ¤æ?d ø&`¦: @  ¥ç?d 8'`ªÝû¿ @  ¦è?d x'`(Lìa @  §é?d ¸'`´å\B @  ¨ê?d ø'`6tKœ @  ©ë?d 8(`F i~ @  ªì?d x(`Ę~  @  «í?d ¸(`SÊj @  ¬î?d ø(`Ñ[}Ê @  ­ï?d 8)`¸ÑÞ @  ®ð?d x)`:@ÉÈ @  ¯ñ?d ¸)` HG  @  °ò?d ø)`‰ÙPÕ @  ±ó?d 8*`P^ë @  ²ô?d x*`ÒŽI5 @  ³õ?d ¸*`EÜ] @  ´ö?d ø*`ÇMJ_ @  µ÷?d 8+`Ë—‹o @  ¶ø?d x+`Iœ± @  ·ù?d ¸+`Õ¯,’ @  ¸ú?d ø+`W>;L @  ¹û?d 8,` òf¼ @  ºü?d x,`ˆcqb @  »ý?d ¸,`1eÖ @  ¼þ?d ø,` r @  ½ÿ?d 8-`ûlü‡ @  ¾?d x-`yýëY @  ¿?d ¸-`÷ôD¸ @  À?d ø-`ueSf @  Á?d 8.`¬£]X @  Â?d x.`.2J† @  Ã?d ¸.`¹`^2 @  Ä?d ø.`;ñIì @  Å?d 8/`7+ˆÜ @  Æ?d x/`µºŸ @  Ç ?d ¸/`)/! @  È ?d ø/`«‚8ÿ @  É ?d 80`QÞ*² @  Ê ?d x0`ÓO=l @  Ë ?d ¸0`D)Ø @  Ì?d ø0`ÆŒ> @  Í?d 81`¯Ú @  Î?d x1`-—Š @  Ï?d ¸1`ŸÇ @  Ð?d ø1`ž @  Ñ?d 82`GÈ' @  Ò?d x2`ÅY ù @  Ó?d ¸2`R M @  Ô?d ø2`К “ @  Õ?d 83`Ü@È£ @  Ö?d x3`^Ñß} @  ×?d ¸3`Âxo^ @  Ø?d ø3`@éx€ @  Ù?d 84`%%p @  Ú?d x4`Ÿ´2® @  Û?d ¸4`æ& @  Ü?d ø4`Šw1Ä @  Ý?d 85`~J«Ä @  Þ ?d x5`üÛ¼ @  ß!?d ¸5`ÜÕi @  à"?d ø5`^D· @  á#?d 86`‡‚ ‰ @  â$?d€ x6`ÄTìW @  %?d ¸6`²G°Ê @  &?d ø6`0Ö§ @  '?d 87`ùEÉ @  (?d x7`{ÔŠ @  )?d ¸7`)ÏeN @  *?d ø7`«^r @  +?d 88`‘ @  ,?d x8`—Ö @   -?d ¸8`Å÷ @   .?d ø8`GŠàQ @   /?d 89`ëI¸` @   0?d x9`iد¾ @   1?d ¸9`;Ã@ç @  2?d ø9`¹RW9 @  3?d 8:`‡8 @  4?d x:`/C @  5?d ¸:`Ó À @  6?d ø:`Qœ×Ä @  7?d 8;`˜í @  8?d x;`žúÇ @  9?d ¸;`H…ž @  :?d ø;`Ê@ @  ;?d 8<`YjÊ @  <?d x<`Ûû @  =?d ¸<`‰àøM @  >?d ø<` qï“ @  ??d 8=`ÊU›o @  @?d x=`HÄŒ± @  A?d ¸=`ßcè @  B?d ø=`˜Nt6 @  C?d 8>`3<" @   D?d x>`± +ü @  !E?d ¸>`ãÄ¥ @  "F?d ø>`a†Ó{ @  #G?d 8?`¨é¦ @  $H?d x?`*„þx @  %I?duÐ@`7 ¸?`xŸ! @  &J?d ø?`úÿ @  'K?d P@`³’MF @  (L?d @`“gO¸ @  )M?d Ð@`cµÁ @  *N?d A`³P9) @  +O?d PA`MJú. @  ,P?d A`m¿øÐ @  -Q?d ÐA`À© @  .R?d B`„¢h @  /S?d PB`¥„zÓ @  0T?d B`…qx- @  1U?d ÐB`u‚T @  2V?d C`¥F¼ @  3W?d PC`> ¯W @  4X?d C`ù­© @  5Y?d ÐC`î†WÐ @  6Z?d D`÷Ȥß @  7[?d PD`ÿiB„ @  8\?d D`ßœ@z @  9]?d ÐD`/㺠@  :^?d E`ÿ«6ë @  ;_?d PE`œÌ0 @  <`?d E`¼óÎÎ @  =a?d ÐE`LŒ4· @  >b?d F`ÑÈ”v @  ?c?d PF`ËÉmï @  @d?d F`ëxÓa @  w›?d PT`6Ù5: @  xœ?d T`,7Ä @  y?d ÐT`æSͽ @  zž?d U`6AU @  {Ÿ?d PU`U¶»Ž @  | ?d U`uC¹p @  }¡?d ÐU`… @  ¾ â?d (f`ÔÂÿ @  ¿ ã?d hf`Î;f @  À ä?d ¨f`îä9˜ @  Á å?d èf`›Ãá @   æ?d (g`ÎÓO  @  à ç?d hg`U™îâ @  Ä è?d ¨g`ulì @  Å é?d èg`…e @  Æ ê?d (h`±ìšx @  Ç ë?d hh`¹M|# @  È ì?d ¨h`™¸~Ý @  É í?d èh`iÇ„¤ @  Ê î?d (i`Bá3L @  Ëï?d hi`¼ûðK @  Ìð?d ¨i`œòµ @  Íñ?d èi`lqÌ @  Îò?d (j`ñ5¨  @  Ïó?d hj`T5p¶ @  Ðô?d ¨j`tÀrH @  Ñõ?d èj`„¿ˆ1 @  Òö?d (k`T÷Ù @  Ó÷?d hk`Ͻ¥2 @  Ôø?d ¨k`ïH§Ì @  Õù?d èk`7]µ @  Öú?d (l`y®º @  ×û?d hl`ØHá @  Øü?d ¨l`.-J @  Ùý?d èl`ÞR°f @  Úþ?d (m`<Ž @  Ûÿ?d hm`ÃOíL @  Ü?d ¨m`ãºï² @  Ý?d èm`ÅË @  Þ?d (n`޵  @  ß?d hn`:‡J @  à?d ¨n`rHÿ @  á?d èn`ê ²† @  â?d€ (o`N†"È @  ?d ho`4Ë  @  ?d ¨o`xÉô @   ?d èo`!NÈ` @   ?d (p`ŸtÒ @   ?d hp`YƒÍó @   ?d ¨p`yvÏ  @   ?d èp`G»j @  ?d (q`—óææ @   ?d hq`¬ Þ  @   ?d ¨q`ŒUÜò @   ?d èq`¹cÝf @   ?d (r`$'}§ @   ?d hr`â4Ć @  ?d ¨r`ÂÁÆx @  ?d èr`Q­]› @  ?d (s`åÑs @  ?d hs`ßæ‹u @  ?d ¨s`ÿ‰‹ @  ?d ès`Ê%ˆ @  ?d (t`Ók{ @  ?d ht`xÂ1 @  ?d ¨t`5ÀÏ @  ?d èt` @eÌ @  ?d (u`Ûé$ @  ?d hu`}ìè @   ?d ¨u`]êì @  !?d èu`h/ëx @  "?d (v`õkK¹ @  #?d hv`3xò˜ @  $?d ¨v`ðf @  %?d èv`‘çL5 @   &?d (w`A¯ÀÝ @  !'?d hw`¬šÛ @  "(?d ¨w`?Y˜% @  #)?d èw` o™± @  $*?d (x`>¬ @  %+?d hx`øƒ¬ @  &,?d ¨x`Øv®s @  '-?d èx`æ» p @  (.?d (y`6ó‡˜ @  )/?d hy`  ¿r @  *0?d ¨y`-U½Œ @  +1?d èy`c¼ @  ,2?d (z`…'Ù @  -3?d hz`C4¥ø @  .4?d ¨z`cÁ§ @  /5?d èz`ð­<å @  06?d ({` å°  @  17?d h{`~æê  @  28?d ¨{`^èõ @  39?d è{`k%éa @  4:?d (|`rkn @  5;?d h|`´x£O @  6<?d ¨|`”¡± @  7=?d è|`ª@² @  8>?d (}`zˆZ @  9??d h}`,¼œ} @  :@?d ¨}` Ižƒ @  ;A?d è}`9Ÿ @  <B?d (~`¤;?Ö @  =C?d h~`b(†÷ @  >D?d ¨~`BÝ„  @  ?E?d è~`n°>È @  @F?d (`¾ø²  @  AG?d h`àûè& @  BH?d ¨`uЀ`'ÀêØ @  CI?d è`VÐL @  D J?d @€``è28 @  E K?d €€`Ÿž9 @  F L?d À€`†‰ç @  G M?d `ê·Ò @  H N?d @`h‹   @  I O?d €`ñ¼Æ @  J P?d À`s-š @  K Q?d ‚`YÎ,“ @  L R?d @‚`Û_;M @  M S?d €‚`¿(—L @  N T?d À‚`=¹€’ @  O U?d ƒ`ü €G @  P V?d @ƒ`~—™ @  Q W?d €ƒ`‚úØ¿ @  R X?d Àƒ`kÏa @  S Y?d „`®‚*$ @  T Z?d @„`,=ú @  U [?d €„`Hd‘û @  V \?d À„`Êõ†% @  W ]?d …`¦á¸ @  X ^?d @…`$p¯Î @  Y _?d €…` ð»Ø @  Z `?d À…`¢a¬ @  [ a?d †`ˆ‚ @  \ b?d @†`  S @  ] c?d €†`nd¡R @  ^ d?d À†`ìõ¶Œ @  _ e?d ‡`³ @  ½ Ã?d €ž`Ò’² @  ¾ Ä?d Àž`—C…l @  ¿ Å?d Ÿ`é÷¤› @  À Æ?d @Ÿ`kf³E @  Á Ç?d €Ÿ`—üc @   ÈuР`?d ÀŸ`ë½ @  à É?d  `Ó<#‘ @  Ä Ê?d X `Q­4O @  Å Ë?d ˜ `5Ú˜N @  Æ Ì?d Ø `·K @  Ç Í?d ¡`Û_±¥ @  È Î?d X¡`YΦ{ @  É Ï?d ˜¡`Àù‹± @  Ê Ð?d Ø¡`Bhœo @  Ë Ñ?d ¢`h‹*ä @  Ì Ò?d X¢`ê=: @  Í Ó?d ˜¢`Žm‘; @  Î Ô?d Ø¢` ü†å @  Ï Õ?d £`ÍI†0 @  Ð Ö?d X£`OØ‘î @  Ñ ×?d ˜£`³¿ÞÈ @  Ò Ø?d Ø£`1.É @  Ó Ù?d ¤`ŸÇ,S @  Ô Ú?d X¤`V; @  Õ Û?d ˜¤`y!—Œ @  Ö Ü?d ؤ`û°€R @  × Ý?d ¥`—¤¾g @  Ø Þ?d X¥`5©¹ @  Ù ß?d ˜¥`µ½¯ @  Ú à?d Ø¥`“$ªq @  Û á?d ¦`¹Çú @  Ü â?d X¦`;V $ @  Ý ã?d ˜¦`_!§% @  Þ ä?d ئ`ݰ°û @  ß å?d §` —ž @  à æ?d X§`’€@ @  á ç?d ˜§`sõÏf @  â è?d€ ا`w2p @   é?d ¨`+¢ @   ê?d X¨`—ºµ¡ @   ë?d ˜¨`6„âM @   ì?d ب`´õ“ @   í?d ©`³”Ü @   î?d X©`”"ƒ @   ï?d ˜©`çñ² @   ð?d Ø©`A6æl @   ñ?d ª`®œ«  @   ò?d Xª`, ¼Ô @   ó?d ˜ª`3ë8 @   ô?d ت`¢üæ @   õ?d «`­© @   ö?d X«`/•Šw @   ÷?d ˜«`°á¤Ë @   ø?d Ø«`2p³ @   ù?d ¬`YЭ½ @   ú?d X¬`ÛAºc @   û?d ˜¬`zí @   ü?d ج`øîúQ @   ý?d ­`ZH› @   þ?d X­`ØÙŒÀ @   ÿ?d ˜­`€Ó# @   ?d Ø­`‹Äý @   ?d ®`í!‰› @   ?d X®`o°žE @   ?d ˜®`ÎŽÉ© @   ?d Ø®`LÞw @   ?d ¯`8 @   ?d X¯`l(¨æ @   ?d ˜¯`âZ¡ê @   ?d د``˶4 @  !  ?d °`¬ûç! @  "  ?d X°`.jðÿ @  #  ?d ˜°`T§ @  $  ?d ذ` ŰÍ @  %  ?d ±`¯cÑ‚ @  & ?d X±`-òÆ\ @  ' ?d ˜±`zw´ì @  ( ?d ر`øæ£2 @  ) ?d ²`LîT @  * ?d X²`•ÝùŠ @  + ?d ˜²`4ã®f @  , ?d ز`¶r¹¸ @  - ?d ³`ÔØ÷ @  . ?d X³`–EÏ) @  / ?d ˜³` 1á• @  0 ?d س`‹ öK @  1 ?d ´`àèã @  2 ?d X´`b‘ÿ= @  3 ?d ˜´`ï¨Ñ @  4 ?d Ø´`A>¿ @  5 ?d µ`ã˜Þ@ @  6 ?d Xµ`a Éž @  7 ?d ˜µ`«;‚ò @  8  ?d ص`)ª•, @  9 !?d ¶`ÆØJ @  : "?d X¶`D‘Ï” @  ; #?d ˜¶`寘x @  < $?d ض`g>¦ @  = %?d ·`Řîé @  > &?d X·`G ù7 @  ? '?d ˜·`g|ö© @  @ (?d Ø·`åíáw @  A )?d ¸`X’»Í @  B*?d X¸`Ú¬ @  C+?d ˜¸`{=ûÿ @  D,?d ظ`ù¬ì! @  E-?d ¹`[ n @  F.?d X¹`Ù›š° @  G/?d ˜¹`Žè @  H0?d ع` ÿÞ @  I1?d º`ã%²¸ @  J2?d Xº`a´¥f @  K3?d ˜º`ÀŠòŠ @  L4?d غ`BåT @  M5?d »`ང @  N6?d X»`b,“Å @  O7?d ˜»`ýX½y @  P8?d Ø»`ɪ§ @  Q9?d ¼`i´ @  R:?d X¼`–ø£Ñ @  S;?d ˜¼`7Æô= @  T<?d ؼ`µWãã @  U=?d ½`ñ‚¬ @  V>?d X½`•`•r @  W??d ˜½`¯Ë @  X@?d ؽ`-“ÜÑ @  YA?d ¾`Â9‘· @  ZB?d X¾`@¨†i @  [C?d ˜¾`á–Ñ… @  \D?d ؾ`cÆ[ @  ]E?d ¿`Á¡§ @  ^F?d X¿`C0°Ê @  _G?d ˜¿`ÍB¹Æ @uÐÀ`  `H?d Ø¿`OÓ® @  aI?d 0À`YÍí @  bJ?d pÀ`Û\3 @  cK?d °À`zbRß @  dL?d ðÀ`øóE @  eM?d 0Á`ZU$N @  fN?d pÁ`ØÄ3 @  gO?d °Á`AA  @  hP?d ðÁ` ÐVþ @  iQ?d 0Â`âz˜ @  jR?d pÂ``ë F @  kS?d °Â`ÁÕ[ª @  lT?d ðÂ`CDLt @  mU?d 0Ã`áâ-; @  nV?d pÃ`cs:å @  oW?d °Ã`üY @  pX?d ðÃ`~–‡ @  qY?d 0Ä`6/ @  rZ?d pÄ`—§ ñ @  s[?d °Ä`6™] @  t\?d ðÄ`´Jà @  u]?d 0Å`®+Œ @  v^?d pÅ`”? @  x`?d ðÅ`Üœ`à @  ya?d 0Æ`36-† @  zb?d pÆ`±§:X @  {c?d °Æ`™m´ @  |d?d ðÆ`’zj @  }e?d 0Ç`0®% @  ~f?d pÇ`²? û @  g?d °Ç`q3T @  €h?d ðÇ`ó$Š @  i?d 0È`µœE0 @  ‚j?d pÈ`7 Rî @  ƒk?d °È`–3 @  „l?d ðÈ`¢Ü @  …m?d 0É`¶s“ @  †n?d pÉ`4•dM @  ‡o?d °É`cý @  ˆp?d ðÉ`á# @  ‰q?d 0Ê`+LE @  Šr?d pÊ`Œº[› @  ‹s?d °Ê`-„ w @  Œt?d ðÊ`¯© @  u?d 0Ë` ³zæ @  Žv?d pË`"m8 @  w?d °Ë`VC„ @  x?d ðË`’ÇTZ @  ‘y?d 0Ì`ùgJò @  ’z?d pÌ`{ö], @  “{?d °Ì`ÚÈ À @  ”|?d ðÌ`XY @  •}?d 0Í`úÿ|Q @  –~?d pÍ`xnk @  —?d °Í`_Êa` @  ˜€?d ðÍ`Ý[v¾ @  ™?d 0Î`2ñ;Ø @  š‚?d pÎ`°`, @  ›ƒ?d °Î`^{ê @  œ„?d ðÎ`“Ïl4 @  …?d 0Ï`1i { @  ž†?d pÏ`³ø¥ @  Ÿ‡?d °Ï`=Š© @   ˆ?d ðÏ`¿w @  ¡‰?d 0Ð`s+Ub @  ¢Š?d pÐ`ñºB¼ @  £‹?d °Ð`P„P @  ¤Œ?d ðÐ`ÒŽ @  ¥?d 0Ñ`p³cÁ @  ¦Ž?d pÑ`ò"t @  §?d °Ñ`¥§¯ @  ¨?d ðÑ`'6q @  ©‘?d 0Ò`Èœ\ @  ª’?d pÒ`J KÉ @  «“?d °Ò`ë3% @  ¬”?d ðÒ`i¢ û @  ­•?d 0Ó`Ëj´ @  ®–?d pÓ`I•}j @  ¯—?d °Ó`ÖáSÖ @  °˜?d ðÓ`TpD @  ±™?d 0Ô`?ÐZ  @  ²š?d pÔ`½AM~ @  ³›?d °Ô`’ @  ´œ?d ðÔ`žî L @  µ?d 0Õ` @  -÷?d Èë`75=8 @  .ø?d ì`.{Î7 @  /ù?d Hì`½UÔ @  0ú?d ˆì`âW* @  1û?d Èì`[ñî  @  2ü?d í`‹¹bã @  3ý?d Hí`¾cw @  4þ?d ˆí`žza‰ @  5ÿ?d Èí`MA @  6?d î`… áÔ @  7?d Hî`»ÄD× @  8?d ˆî`›1F) @  9?d Èî`]"ÿ @  :?d ï`jsà @  ;?d Hï`¸\rt @  <?d ˆï`˜©pŠ @  =?d Èï`ƪ*Œ @  >?d ð`xt–> @  ? ?d Hð`T,ÿ @  @ ?d ˆð`tì. @  A ?d Èð`²ÿ—  @  B ?d ñ`b·È @  C ?d Hñ`W\ @  D?d ˆñ`wt¢ @  E?d Èñ`L' H @  F?d ò`Ñc€‰ @  G?d Hò`ï®%Š @  H?d ˆò`Ï['t @  I?d Èò` HžU @  J?d ó`Ù½ @  K?d Hó`ì6) @  L?d ˆó`ÌÃ× @  M?d Èó`’ÀKÑ @  N?d ô`‹Ž¸Þ @  O?d Hô`â#= @  P?d ˆô`8!à @  Q?d Èô`þ˜â @  R?d õ`.L  @  S?d Hõ`zž @  T?d ˆõ`;` @  U?d Èõ`kV @  V ?d ö`/¶— @  W!?d Hö`>â” @  X"?d ˆö`j @  Y#?d Èö`بK @  Z$?d ÷`L$£ @  [%?d H÷`=z%7 @  \&?d ˆ÷`'É @  ]'?d È÷`CŒ}Ï @  ^(?d ø`wsñÒ @  _)?d Hø`õM @  `*?d ˆø`ÕìO @  a+?d Èø`ÿö^ @  b,?d ù`÷z¶ @  c-?d Hù`ö{" @  d.?d ˆù`ÖtyÜ @  e/?d Èù`í'A6 @  f0?d ú`pcá÷ @  g1?d Hú`N®Dô @  h2?d ˆú`n[F  @  i3?d Èú`¨Hÿ+ @  j4?d û`xsà @  k5?d Hû`M6rW @  l6?d ˆû`mÃp© @  m7?d Èû`3À*¯ @  n8?d ü`*ŽÙ  @  o9?d Hü`¹âBC @  p:?d ˆü`™@½ @  q;?d Èü`_ùœ @  r<?d ý`Lut @  s=?d Hý`ºztà @  t>?d ˆý`šv @  u??d Èý`Ì;b9 @  v@?d þ`QÂø @  wA?d Hþ`o²gû @  xB?d ˆþ`OGe @  yC?d Èþ`‰TÜ$ @  zD?d ÿ`YPÌ @  {E?d Hÿ`l*QX @  |F?d ˆÿ`LßS¦ @  }uÐaG?d Èÿ`Ü   @  ~H?d a]h!Q @  I?d `a’S«¡ @  €J?d  a²¦©_ @  K?d àatµ~ @  ‚L?d a¤ýœ– @  ƒM?d `a‘Ë @  „N?d  a±>Ÿü @  …O?d àaŠm§ @  †P?d a)× @  ‡Q?d `a)ä¢Ô @  ˆR?d  a  * @  ‰S?d àaÏ  @  ŠT?d aJ•ã @  ‹U?d `a*|”w @  ŒV?d  a ‰–‰ @  W?d àaTŠÌ @  ŽX?d aMÄ?€ @  Y?d `aÞ¨¤c @  Z?d  aþ]¦ @  ‘[?d àa8N¼ @  ’\?d aè“T @  “]?d `aÝ0’À @  ”^?d  aýÅ> @  •_?d àa[!‘ @  –`?d aÆe1É @  —a?d `aø¨”Ê @  ˜b?d  aØ]–4 @  ™c?d àaN/ @  šd?d aΣý @  ›e?d `aû0¢i @  œf?d  aÛÅ — @  g?d àa…Æú‘ @  žh?d a±9vŒ @  Ÿi?d `a3SÊß @   j?d  a¦È! @  ¡k?d àaÕµq @  ¢l?d aýýè @  £m?d ` a0Ëü| @  ¤n?d   a>þ‚ @  ¥o?d à a+mÆh @  ¦p?d a¶)f© @  §q?d ` aˆäê @  ¨r?d   a¨ÁT @  ©s?d à anxu @  ªt?d a¾Jô @  «u?d ` a‹|õ  @  ¬v?d   a«‰÷÷ @  ­w?d à aõŠ­ñ @  ®x?d aìÄ^þ @  ¯y?d ` a¨Å @  °z?d   a_]Çã @  ±{?d à a™N~ @  ²|?d aIò* @  ³}?d ` a|0ó¾ @  ´~?d   a\Åñ@ @  µ?d à a·±õ @  ¶€?d aŠó4 @  ·?d `a´>´7 @  ¸‚?d  a”˶É @  ¹ƒ?d àaRØè @  º„?d a‚ƒ @  »…?d `a·¦‚” @  ¼†?d  a—S€j @  ½‡?d àaÉPÚl @  ¾ˆ?d awŽfÞ @  ¿‰?d `a[ãÜ @  ÀŠ?d  a{Þá @  Á‹?d àa½gÀ @  ÂŒ?d amMë( @  Ã?d `aX{ê¼ @  ÄŽ?d  axŽèB @  Å?d àaCÝШ @  Æ?d aÞ™pi @  Ç‘?d `aàTÕj @  È’?d  aÀ¡×” @  É“?d àa²nµ @  Ê”?d aÖúâ] @  Ë•?d `aãÌãÉ @  Ì–?d  aÃ9á7 @  Í—?d àa:»1 @  Î˜?d a„tH> @  Ï™?d `aÓÝ @  Ðš?d  a7íÑ# @  Ñ›?d àañþh @  Òœ?d a!¶äê @  Ó?d `a€å~ @  Ôž?d  a4uç€ @  ÕŸ?d àa’‘æ¶ @  Ö ?d aÕFw @  ×¡?d `a1ãt @  Ø¢?d  aíአ@  Ù£?d àa×þX« @  Ú¤?d a¶ÔC @  Û¥?d `a2€Õ× @  Ü¦?d  au×) @  Ý§?d àaLv/ @  Þ¨?d ax‰2 @  ß©?d `aúã½a @  àª?d  aÚ¿Ÿ @  á«?d àa¾ @  â¬?d€ a }V @  ­?d `aÙ}4ë @  ®?d  aùˆ6 @  ¯?d àa’õ @  °?d ašÖUÓ @  ±?d `aj©¯ª @  ²?d  aJ\­T @  ³?d àaBýK @  ´?d a’µÇç @   µ?d `abÊ=ž @   ¶?d  aB??` @   ·?d àaÙuž‹ @   ¸?d aÀ;m„ @   ¹?d `a0D—ý @  º?d  a±• @  »?d àaµ±M¸ @  ¼?d aeùÁP @  ½?d `a•†;) @  ¾?d  aµs9× @  ¿?d àa&ŽÖ @  À?d a»ÊvÜ @  Á?d `aKµŒ¥ @  Â?d  ak@Ž[ @  Ã?d àacáh @  Ä?d a³©äè @  Å?d `aCÖ‘ @  Æ?d  ac#ouÐ a @  Ç?d àaøi½„ @  È?d 8 a‰bcâ @  É?d x ay™› @  Ê?d ¸ aYè›e @  Ë?d ø aíîdn @   Ì?d 8!a=¦è† @  !Í?d x!aÍÙÿ @  "Î?d ¸!aí, @  #Ï?d ø!a6Ó @  $Ð?d 8"aŽrsÇ @  %Ñ?d x"a~ ‰¾ @  &Ò?d ¸"a^ø‹@ @  'Ó?d ø"aVYm @  (Ô?d 8#a†áó @  )Õ?d x#avnŠ @  *Ö?d ¸#aV›t @  +×?d ø#aÍѸŸ @  ,Ø?d 8$aÔŸK @  -Ù?d x$a$à±é @  .Ú?d ¸$a³ @  /Û?d ø$a¡k¬ @  0Ü?d 8%aq]çD @  1Ý?d x%a"= @  2Þ?d ¸%a¡×à @  3ß?d ø%aÂzå @  4à?d 8&a_>EÙ @  5á?d x&a¯A¿  @  6â?d ¸&a´½^ @  7ã?d ø&a‡[ @  8ä?d 8'aW]×í @  9å?d x'a§"-” @  :æ?d ¸'a‡×/j @  ;ç?d ø'aŽ @  <è?d 8(a(bœ @  =é?d x(aØøå @  >ê?d ¸(aøèú @  ?ë?d ø(aâé‚ @  @ì?d 8)a2¡j @  Aí?d x)aÂÞu @  Bî?d ¸)aâ+wí @  Cï?d ø)a1´ê @  Dð?d 8*au+ @  Eñ?d x*aq îR @  Fò?d ¸*aQÿì¬ @  Gó?d ø*aY^ ÷ @  Hô?d 8+a‰† @  Iõ?d x+ayi|f @  Jö?d ¸+aYœ~˜ @  K÷?d ø+aÂÖßs @  Lø?d 8,aÛ˜,| @  Mù?d x,a+çÖ @  Nú?d ¸,a Ôû @  Oû?d ø,a® @ @  Pü?d 8-a~Z€¨ @  Qý?d x-aŽ%zÑ @  Rþ?d ¸-a®Ðx/ @  Sÿ?d ø-a_Œ–{ @  T?d 8.aÂÈ6º @  U?d x.a2·Ìà @  V?d ¸.aBÎ= @  W?d ø.aã(f @  X?d 8/aÊ«¤Ž @  Y?d x/a:Ô^÷ @  Z?d ¸/a!\  @  [?d ø/akýâ @  \?d 80a?µAP @  ] ?d x0aÏÊ») @  ^ ?d ¸0aï?¹× @  _ ?d ø0a[9FÜ @  ` ?d 81a‹qÊ4 @  a ?d x1a{0M @  b?d ¸1a[û2³ @  c?d ø1a¥áñ´ @  d?d 82a8¥Qu @  e?d x2aÈÚ«  @  f?d ¸2aè/©ò @  g?d ø2aàŽO© @  h?d 83a0ÆÃA @  i?d x3aÀ¹98 @  j?d ¸3aàL;Æ @  k?d ø3a{š- @  l?d 84abHi" @  m?d x4a’7“[ @  n?d ¸4a²Â‘¥ @  o?d ø4aÂI @  p?d 85aÇŠÅö @  q?d x5a7õ? @  r?d ¸5a=q @  s?d ø5at­Çª @  t ?d 86aéégk @  u!?d x6a– @  v"?d ¸6a9cŸì @  w#?d ø6a1Ây· @  x$?d 87aáŠõ_ @  y%?d x7aõ& @  z&?d ¸7a1 Ø @  {'?d ø7aªJ¬3 @  |(?d 88ažµ . @  })?d x8anÊÚW @  ~*?d ¸8aN?Ø© @  +?d ø8a·h @  €,?d 89ag é @  -?d x9a—_g @  ‚.?d ¸9a·ªen @  ƒ/?d ø9aI°¦i @  „0?d 8:aÔô¨ @  …1?d x:a$‹üÑ @  †2?d ¸:a~þ/ @  ‡3?d ø:a ßt @  ˆ4?d 8;aÜ—”œ @  ‰5?d x;a,ènå @  Š6?d ¸;a l @  ‹7?d ø;a—WÍð @  Œ8?d 8ÿ @  9?d x?d ¸=aûQj¬ @  “??d ø=ah¬…f @  ”@?d 8>aõè%§ @  •A?d x>a—ßÞ @  –B?d ¸>a%bÝ  @  —C?d ø>a-Ã;{ @  ˜D?d 8?aý‹·“ @  ™E?d x?a ôMê @  šF?duÐ@a7 ¸?a-O @  ›G?d ø?a¶Kîÿ @  œH?d P@auçTà @  I?d @a'ü»š @  žJ?d Ð@a¥m¬D @  ŸK?d AaC²Èy @   L?d PAaÁ#ß§ @  ¡M?d Aa“80þ @  ¢N?d ÐAa©'  @  £O?d BaðfS8 @  ¤P?d PBar÷Dæ @  ¥Q?d Ba ì«¿ @  ¦R?d ÐBa¢}¼a @  §S?d CaøÁ  @  ¨T?d PCaz”ÖÒ @  ©U?d Ca(9‹ @  ªV?d ÐCaª.U @  «W?d Daª‹ko @  ¬X?d PDa(|± @  ­Y?d Daz“è @  ®Z?d ÐDaø„6 @  ¯[?d EaIÇ» @  °\?d PEaØÐe @  ±]?d EaßÃ?< @  ²^?d ÐEa]R(â @  ³_?d Fa!*e& @  ´`?d PFa£»rø @  µa?d Fañ ¡ @  ¶b?d ÐFas1Š @  ·c?d Ga)I÷ @  ¸d?d PGa«ØàÌ @  ¹e?d GaùÕ @  ºf?d ÐGa{RK @  »g?d HaVv"c @  ¼h?d PHaÔç5½ @  ½i?d Ha†üÚä @  ¾j?d ÐHamÍ: @  ¿k?d IaLµ¯• @  Àl?d PIaÎ$¸K @  Ám?d Iaœ?W @  Ân?d ÐIa®@Ì @  Ão?d Jaÿa4Ô @  Äp?d PJa}ð#  @  Åq?d Ja/ëÌS @  Ær?d ÐJa­zÛ @  Çs?d Ka÷¦à @  Èt?d PKau“±> @  Éu?d Ka'ˆ^g @  Êv?d ÐKa¥I¹ @  Ëw?d La¥Œ ƒ @  Ìx?d PLa'] @  Íy?d Lauô @  Îz?d ÐLa÷—ãÚ @  Ï{?d MaN W @  Ð|?d PMa‚ß·‰ @  Ñ}?d MaÐÄXÐ @  Ò~?d ÐMaRUO @  Ó?d NaûCI @  Ô€?d PNaA*T— @  Õ?d Na1»Î @  Ö‚?d ÐNa‘ ¬ @  ×ƒ?d OaËØÑ} @  Ø„?d POaIIÆ£ @  Ù…?d OaR)ú @  Ú†?d ÐOa™Ã>$ @  Û‡?d Pa>Æ4£ @  Üˆ?d PPa¼W#} @  Ý‰?d PaîLÌ$ @  ÞŠ?d ÐPalÝÛú @  ß‹?d QaŠ¿Ç @  àŒ?d PQa“¨ @  á?d QaZˆG@ @  âŽ?d€ ÐQa¬ÚL8 @  ?d Ra¬Tp  @  ?d PRa.Åg× @  ‘?d Ra¹—sc @  ’?d ÐRa;d½ @  “?d Sa¯ÌFª @  ”?d PSa-]Qt @  •?d Sa±ôáW @  –?d ÐSa3eö‰ @   —?d Taö¹H^ @   ˜?d PTat(_€ @   ™?d TaãzK4 @   š?d ÐTaaë\ê @   ›?d Uaõ!~ý @  œ?d PUaw°i# @  ?d UaF¸çà @  ž?d ÐUaÄ)ð> @  Ÿ?d Va}F @   ?d PVaÿ‰QÉ @  ¡?d VahÛE} @  ¢?d ÐVaêJR£ @  £?d Wa~€p´ @  ¤?d PWaügj @  ¥?d Wa`¸×I @  ¦?d ÐWaâ)À— @  §?d Xa DR @  ¨?d PXaˆÕŒ @  ©?d Xa‡8 @  ª?d ÐXaæ @  «?d Ya Ü7ñ @  ¬?d PYa‹M / @  ­?d Ya«C‰\ @   ®?d ÐYa)Òž‚ @  !¯?d Za Tw @  "°?d PZaÅ© @  #±?d Za— @  $²?d ÐZašÃ @  %³?d [aÌ'Ô @  &´?d P[aŒ]0  @  'µ?d [aô€) @  (¶?d Ð[a’e—÷ @  )·?d \aW¹)  @  *¸?d P\aÕ(>þ @  +¹?d \aBz*J @  ,º?d Ð\aÀë=” @  -»?d ]aT!ƒ @  .¼?d P]aÖ°] @  /½?d ]a縆ž @  0¾?d Ð]ae)‘@ @  1¿?d ^a,H2x @  2À?d P^a®Ù%¦ @  3Á?d ^a9‹1 @  4Â?d Ð^a»&Ì @  5Ã?d _a/ÐÛ @  6Ä?d P_a­A @  7Å?d _a1è£& @  uÐ`a8Æ?d Ð_aqÐS- @  9Ç?d (`aº«m @  :È?d h`a‘+¼³ @  ;É?d ¨`ay¨ @  <Ê?d è`a„è¿Ù @  =Ë?d (aa"Î @  >Ì?d haa’³Š @  ?Í?d ¨aaº%ñ @  @Î?d èaaž+2/ @  AÏ?d (baº­½Ú @  BÐ?d hba8<ª @  CÑ?d ¨ba¯n¾° @  DÒ?d èba-ÿ©n @  EÓ?d (ca¹5‹y @  FÔ?d hca;¤œ§ @  GÕ?d ¨ca§ ,„ @  HÖ?d èca%œ;Z @  I×?d (daà@… @  JØ?d hdabÑ’S @  KÙ?d ¨daõƒ†ç @  LÚ?d èdaw‘9 @  MÛ?d (eaãØ³. @  NÜ?d heaaI¤ð @  OÝ?d ¨eaPA*3 @  PÞ?d èeaÒÐ=í @  Qß?d (faká‹Ä @  Rà?d hfaépœ @  Sá?d ¨fa~"ˆ® @  Tâ?d èfaü³Ÿp @  Uã?d (gahy½g @  Vä?d hgaê誹 @  Wå?d ¨gavAš @  Xæ?d ègaôÐ D @  Yç?d (ha½Ì @  Zè?d hhaž,Û_ @  [é?d ¨ha ~Ïë @  \ê?d èha‹ïØ5 @  ]ë?d (ia%ú" @  ^ì?d hia´íü @  _í?d ¨ia½ºD @  `î?d èia?+SQ @  aï?d (ja­Ü¤ @  bð?d hja™<Ëz @  cñ?d ¨janßÎ @  dò?d èjaŒÿÈ @  eó?d (ka5ê @  fô?d hkaš¤ýÙ @  gõ?d ¨ka Mú @  hö?d èka„œZ$ @  i÷?d (laA@äó @  jø?d hlaÃÑó- @  kù?d ¨laTƒç™ @  lú?d èlaÖðG @  mû?d (maBØÒP @  nü?d hmaÀIÅŽ @  oý?d ¨mañAKM @  pþ?d èmasÐ\“ @  qÿ?d (na½#ÏÚ @  r?d hna?²Ø @  s?d ¨najI+e @  t?d ènaèØ<» @  u?d (oa|¬ @  v?d hoaþƒ r @  w?d ¨oab*¹Q @  x?d èoaà»® @  y?d (pa‚÷_å @  z?d hpafH; @  { ?d ¨pa—4\ @  | ?d èpa¥KQ @  } ?d (qaoiF @  ~ ?d hqaþ~˜ @   ?d ¨qan¡áH @  €?d èqaì0ö– @  ?d (raȶyc @  ‚?d hraJ'n½ @  ƒ?d ¨raÝuz  @  „?d èra_äm× @  …?d (saË.OÀ @  †?d hsaI¿X @  ‡?d ¨saÕè= @  ˆ?d èsaW‡ÿã @  ‰?d (ta’[A4 @  Š?d htaÊVê @  ‹?d ¨ta‡˜B^ @  Œ?d èta U€ @  ?d (ua‘Ãw— @  Ž?d huaR`I @  ?d ¨ua"ZîŠ @  ?d èua ËùT @  ‘?d (vaúO} @  ’ ?d hva›kX£ @  “!?d ¨va 9L @  ”"?d èvaލ[É @  •#?d (wabyÞ @  –$?d hwa˜ón @  —%?d ¨waZÞ# @  ˜&?d èwa†ËÉý @  ™'?d (xan¦8 @  š(?d hxaì7æ @  ›)?d ¨xa{e R @  œ*?d èxaùôŒ @  +?d (yam>>› @  ž,?d hyaï¯)E @  Ÿ-?d ¨yaÏ¡€6 @   .?d èyaM0—è @  ¡/?d (zai¶ @  ¢0?d hzaë'à @  £1?d ¨za|uw @  ¤2?d èzaþä © @  ¥3?d ({aj..¾ @  ¦4?d h{aè¿9` @  §5?d ¨{at‰C @  ¨6?d è{aö‡ž @  ©7?d (|a3[ J @  ª8?d h|a±Ê7” @  «9?d ¨|a&˜#  @  ¬:?d è|a¤ 4þ @  ­;?d (}a0Ãé @  ®<?d h}a²R7 @  ¯=?d ¨}aƒZô @  °>?d è}a˘* @  ±??d (~aHª; @  ²@?d h~aÊ;,Ì @  ³A?d ¨~a]i8x @  ´B?d è~aßø/¦ @  µC?d (aK2 ± @  ¶D?d haÉ£o @  ·E?d ¨auЀa'U ªL @  ¸F?d èa,õ†’ @  ¹ G?d @€ažÙ)> @  º H?d €€a¾,+À @  » I?d À€a‹*T @  ¼ J?d a[R¦¼ @  ½ K?d @aA @  ¾ L?d €a½´c @  ¿ M?d Àa‘Ù§¢ @  À N?d ‚a c @  Á O?d @‚a7Î?‰ @   P?d €‚a;=w @  à Q?d À‚a" <ã @  Ä R?d ƒaòE°  @  Å S?d @ƒa4V * @  Æ T?d €ƒa£ Ô @  Ç U?d Àƒa*n®× @  È V?d „a3 ]Ø @  É W?d @„am#Þ @  Ê X?d €„aMÖ  @  Ë Y?d À„axà´ @  Ì Z?d …a¨¨ˆ\ @  Í [?d @…an»1} @  Î \?d €…aNN3ƒ @  Ï ]?d À…aÝ"¨` @  Ð ^?d †a@f¡ @  Ñ _?d @†aæ‚ — @  Ò `?d €†aÆw i @  Ó a?d À†aóA ý @  Ô b?d ‡a# † @  Õ c?d @‡aå?4 @  Ö d?d €‡aÅï=Ê @  × e?d À‡aû"˜É @  Ø f?d ˆaÏÝÔ @  Ù g?d @ˆa‘ÞNÒ @  Ú h?d €ˆa±+L, @  Û i?d Àˆa„M¸ @  Ü j?d ‰aTUÁP @  Ý k?d @‰a’Fxq @  Þ l?d €‰a²³z @  ß m?d À‰a0ÙÆÜ @  à n?d Ša­f @  á o?d @Ša–Î^÷ @  â p?d€ €Šaž¡H[ @   q?d ÀŠaJÖæ @   r?d ‹ašž @   s?d @‹a™ÄÏ @   t?d €‹a¹1Í< @   u?d À‹aIN7E @   v?d ŒaPÄJ @   w?d @ŒaÀ±Á6 @   x?d €ŒaàDÃÈ @   y?d ÀŒa;9± @   z?d aÀsµY @   {?d @aÃ)÷• @   |?d €aãÜõk @   }?d Àa£ @   ~?d ŽaŽç¯Ó @   ?d @Ža¦†Žü @   €?d €Ža†sŒ @   ?d ÀŽav v{ @   ‚?d a¦Dú“ @   ƒ?d @a¥¸_ @   „?d €a…뺡 @   …?d Àau”@Ø @   †?d aËJüj @   ‡?d @a[ûù @   ˆ?d €a{ûè @   ‰?d Àa‹q‘ @   Š?d ‘a[9y @   ‹?d @‘aXcϵ @   Œ?d €‘ax–ÍK @   ?d À‘aˆé72 @   Ž?d ’a­—ó @   ?d @’a\ëé3 @   ?d €’a|ëÍ @  ! ‘?d À’aŒa´ @  " ’?d “a\)\ @  # “?d @“a_sß @  $ ”?d €“a†Ýn @  % •?d À“aù' @  & –?d ”a–·Ô @  ' —?d @”aÑd @  ( ˜?d €”a&óÓš @  ) ™?d À”aÖŒ)ã @  * š?d •aÄ¥  @  + ›?d @•ažçÇ @  , œ?d €•a%kå9 @  - ?d À•aÕ@ @  . ž?d –aHP¿ @  / Ÿ?d @–a§ß- @  0  ?d €–a­RÝÓ @  1 ¡?d À–a]-'ª @  2 ¢?d —ae«B @  3 £?d @—aŽ?éŽ @  4 ¤?d €—a®Êëp @  5 ¥?d À—a^µ  @  6 ¦?d ˜ajJ @  7 §?d @˜aúû˜h @  8 ¨?d €˜aÚš– @  9 ©?d À˜a*q`ï @  : ª?d ™aú9ì @  ; «?d @™aùc®Ë @  < ¬?d €™aÙ–¬5 @  = ­?d À™a)éVL @  > ®?d ša´­ö @  ? ¯?d @šaSìŽß @  @ °?d €šasŒ! @  A ±?d ÀšaƒfvX @  B ²?d ›aS.ú° @  C ³?d @›aPt¸| @  D ´?d €›apº‚ @  E µ?d À›a€þ@û @  F ¶?d œa™°³ô @  G ·?d @œa ¶ˆ @  H ¸?d €œa)ô´v @  I ¹?d ÀœaÙ‹N @  J º?d a ÃÂç @  K »?d @a ™€+ @  L ¼?d €a*l‚Õ @  M ½?d ÀaÚx¬ @  N ¾?d žaGWØm @  O ¿?d @žarð­Ð @  P À?d €žaR¯. @  Q Á?d Àža¢zUW @  R Â?d Ÿar2Ù¿ @  S Ã?d @Ÿaqh›s @  T Ä?d €ŸaQ™ @  U ÅuРa?d ÀŸa¡âcô @  V Æ?d  aé.aG @  WÇ?d X ayŸd; @  XÈ?d ˜ aYjfÅ @  YÉ?d Ø a©œ¼ @  ZÊ?d ¡ay]T @  [Ë?d X¡azR˜ @  \Ì?d ˜¡aZòPf @  ]Í?d Ø¡aªª @  ^Î?d ¢a7É Þ @  _Ï?d X¢a~t @  `Ð?d ˜¢a^zvà @  aÑ?d Ø¢a®Œ™ @  bÒ?d £a~Mq @  cÓ?d X£a}B½ @  dÔ?d ˜£a]â@C @  eÕ?d Ø£a­º: @  fÖ?d ¤a´ÓI5 @  g×?d X¤a$bLI @  hØ?d ˜¤a—N· @  iÙ?d ؤaôè´Î @  jÚ?d ¥a$ 8& @  kÛ?d X¥a'úzê @  lÜ?d ˜¥ax @  mÝ?d Ø¥a÷p‚m @  nÞ?d ¦aj4"¬ @  oß?d X¦a¯ÃB @  pà?d ˜¦a6@þ @  qá?d ئaIº‡ @  râ?d §a¯6o @  sã?d X§a¬[t£ @  tä?d ˜§aŒ®v] @  uå?d اa|ÑŒ$ @  væ?d ¨aH.9 @  wç?d X¨aØŸE @  xè?d ˜¨aøj» @  yé?d بaý @  zê?d ©aØ]q* @  {ë?d X©aÛ3æ @  |ì?d ˜©aûò1 @  }í?d Ø©a Ëa @  ~î?d ªa–Ék  @  ï?d Xªa’Þ#à @  €ð?d ˜ªa²+!= @  ñ?d تaBTÛD @  ‚ò?d «a’W¬ @  ƒó?d X«a‘F` @  „ô?d ˜«a±³ž @  …õ?d Ø«aAÌíç @  †ö?d ¬aX‚è @  ‡÷?d X¬aÈ3” @  ˆø?d ˜¬aèÆj @  ‰ù?d جa¹ã @  Šú?d ­aÈñoû @  ‹û?d X­aË«-7 @  Œü?d ˜­aë^/É @  ý?d Ø­a!Õ° @  Žþ?d ®a†euq @  ÿ?d X®aÑcR @   ?d ˜®añ–¬ @  ‘ ?d Ø®aéùÕ @  ’ ?d ¯aÑ¡u= @  “ ?d X¯aÒû7ñ @  ” ?d ˜¯aò5 @  • ?d دaqÏv @  – ?d °a¼¯sÄ @  — ?d X°a,v¸ @  ˜ ?d ˜°a ëtF @  ™ ?d ذaü”Ž? @  š ?d ±a,Ü× @  › ?d X±a/†@ @  œ ?d ˜±asBå @   ?d رaÿ ¸œ @  ž ?d ²abH] @  Ÿ ?d X²a+f @    ?d ˜²a ûdc @  ¡ ?d زaû„ž @  ¢ ?d ³a+Ìò @  £ ?d X³a(–P> @  ¤ ?d ˜³acRÀ @  ¥ ?d سaø¨¹ @  ¦ ?d ´aáR[¶ @  § ?d X´aqã^Ê @  ¨ ?d ˜´aQ\4 @  © ?d Ø´a¡i¦M @  ª ?d µaq!*¥ @  « ?d Xµar{hi @  ¬ ?d ˜µaRŽj— @  ­ ?d صa¢ñî @  ® ?d ¶a?µ0/ @  ¯ ?d X¶aúBPƒ @  ° ?d ˜¶aÚ·R} @  ±! ?d ضa*Ȩ @  ²" ?d ·aú€$ì @  ³# ?d X·aùÚf  @  ´$ ?d ˜·aÙ/dÞ @  µ% ?d Ø·a)Pž§ @  ¶& ?d ¸a¯º @  ·' ?d X¸aÆ @  ¸( ?d ˜¸a­ë8 @  ¹) ?d ظa]”ïA @  º* ?d ¹aÜc© @  »+ ?d X¹aކ!e @  ¼, ?d ˜¹a®s#› @  ½- ?d عa^ Ùâ @  ¾. ?d ºaÃHy# @  ¿/ ?d Xºa$ q @  À0 ?d ˜ºaü @  Á1 ?d غaôƒùö @  Â2 ?d »a$Ëu @  Ã3 ?d X»a'‘7Ò @  Ä4 ?d ˜»ad5, @  Å5 ?d Ø»a÷ÏU @  Æ6 ?d ¼aîU ?d ¾a0²Wà @  Ï? ?d X¾a"~ @  Ð@ ?d ˜¾a%à € @  ÑA ?d ؾaÕŸÚù @  ÒB ?d ¿a×V @  ÓC ?d X¿aÝ @  ÔD ?d ˜¿a&x# @uÐÀa  ÕE ?d Ø¿aÖìZ @  ÖF ?d 0Àa²÷½ @  ×G ?d pÀa"F¸t @  ØH ?d °Àa³ºŠ @  ÙI ?d ðÀaòÌ@ó @  ÚJ ?d 0Áa"„Ì @  ÛK ?d pÁa!ÞŽ× @  ÜL ?d °Áa+Œ) @  ÝM ?d ðÁañTvP @  ÞN ?d 0ÂalÖ‘ @  ßO ?d pÂa%V¨Q @  àP ?d °Âa£ª¯ @  áQ ?d ðÂaõÜPÖ @  âR ?d€ 0ÃaQWÀ˜ @   S ?d pÃa³LÊ} @   T ?d °Ãa“¹Èƒ @   U ?d ðÃa¦É @   V ?d 0Äa¿Á: @   W ?d pÄaáÂ` @   X ?d °ÄaÁ7bà @   Y ?d ðÄaÿúÇã @   Z ?d 0Åa/²K  @    [ ?d pÅaé¡ò* @    \ ?d °ÅaÉTðÔ @    ] ?d ðÅaübñ@ @    ^ ?d 0Æaa&Q @    _ ?d pÆaÇÂP· @   ` ?d °Æaç7RI @   a ?d ðÆat[ɪ @   b ?d 0Ça¤EB @   c ?d pÇabüc @   d ?d °ÇaBõþ @   e ?d ðÇawÃÿ  @   f ?d 0ÈaC @   ,~ ?d 0ÎaÀ&0ÿ @   - ?d pÎa‹TpJ @   .€ ?d °Îa«¡r´ @   / ?d ðÎa8ÍéW @   0‚ ?d 0Ïaè…e¿ @   1ƒ ?d pÏa.–Üž @   2„ ?d °ÏacÞ` @   3… ?d ðÏa;Ußô @   4† ?d 0Ða…‹cF @   5‡ ?d pÐaÛˆ9@ @   6ˆ ?d °Ðaû};¾ @   7‰ ?d ðÐaŰž½ @   8Š ?d 0ÑaøU @   9‹ ?d pÑaÓë«t @   :Œ ?d °Ñaó©Š @   ; ?d ðÑaÆ(¨ @   <Ž ?d 0Òa[lß @   = ?d pÒa`?05 @   > ?d °Òa@Ê2Ë @   ?‘ ?d ðÒal§ˆ  @   @’ ?d 0Óa¼ïâ @   A“ ?d pÓazü½Ã @   B” ?d °ÓaZ ¿= @   C• ?d ðÓao?¾© @   D– ?d 0ÔavqM¦ @   E— ?d pÔa(r  @   F˜ ?d °Ôa‡^ @   G™ ?d ðÔa6J°] @   Hš ?d 0Õaæ<µ @   I› ?d pÕa …” @   Jœ ?d °Õaä‡j @   K ?d ðÕa5Ò†þ @   Lž ?d 0Öa¨–&? @   MŸ ?d pÖar'  @   N  ?d °Öa.‡%÷ @   O¡ ?d ðÖa½ë¾ @   P¢ ?d 0×am£2ü @   Q£ ?d p×a«°‹Ý @   R¤ ?d °×a‹E‰# @   S¥ ?d ð×a¾sˆ· @   T¦ ?d 0ØaŠŒª @   U§ ?d pØaÔ^¬ @   V¨ ?d °Øaôz\R @   W© ?d ðØaÊ·ùQ @   Xª ?d 0Ùaÿu¹ @   Y« ?d pÙaÜì̘ @   Z¬ ?d °ÙaüÎf @   [­ ?d ðÙaÉ/Ïò @   \® ?d 0ÚaTko3 @   ]¯ ?d pÚao8WÙ @   ^° ?d °ÚaOÍU' @   _± ?d ðÚaͧét @   `² ?d 0Ûaïeœ @   a³ ?d pÛaÛüܽ @   b´ ?d °Ûaû ÞC @   cµ ?d ðÛaÎ?ß× @   d¶ ?d 0Üa×q,Ø @   e· ?d pÜa‰rvÞ @   f¸ ?d °Üa©‡t  @   g¹ ?d ðÜa—JÑ# @   hº ?d 0ÝaG]Ë @   i» ?d pÝaäê @   j¼ ?d °Ýa¡äæ @   k½ ?d ðÝa”Òç€ @   l¾ ?d 0Þa –GA @   m¿ ?d pÞa_"Sf @   nÀ ?d °Þa×Q˜ @   oÁ ?d ðÞaì»Ê{ @   p ?d 0ßa<óF“ @   qà ?d pßaúàÿ² @   rÄ ?d uÐàa/°ßaÚýL @   sÅ ?d ðßaï#üØ @   tÆ ?d Hàaö‡¢. @   uÇ ?d ˆàa àí @   vÈ ?d ÈàaˆqúÖ @   wÉ ?d áaäeÄã @   xÊ ?d HáafôÓ= @   yË ?d ˆáaƒ< @   zÌ ?d Èáa€hâ @   {Í ?d âaªñÞi @   |Î ?d Hâa(`É· @   }Ï ?d ˆâa±Wä} @   ~Ð ?d Èâa3Æó£ @   Ñ ?d ãa®$âe @   €Ò ?d Hãa,µõ» @   Ó ?d ˆãaHÂYº @   ‚Ô ?d ÈãaÊSNd @   ƒÕ ?d äadº«! @   „Ö ?d Häaæ+¼ÿ @   …× ?d ˆäaLóÙ @   †Ø ?d Èäa˜Ýä @   ‡Ù ?d åaôÉÚ2 @   ˆÚ ?d HåavXÍì @   ‰Û ?d ˆåa/aí @   ŠÜ ?d Èåa¾v3 @   ‹Ý ?d æaº]À¸ @   ŒÞ ?d Hæa8Ì×f @   ß ?d ˆæa @   ˜ê ?d HéaŠ¥„à @   ™ë ?d ˆéaîÒ(á @   šì ?d ÈéalC?? @   ›í ?d êaF ‰´ @   œî ?d HêaÄ1žj @   ï ?d ˆêa]³  @   žð ?d Èêaß—¤~ @   Ÿñ ?d ëa$ƒ @    ò ?d Hëaµ”Å @   ¡ó ?d ˆëaéÂ8Ä @   ¢ô ?d ÈëakS/ @   £õ ?d ìaźÊ_ @   ¤ö ?d HìaG+Ý @   ¥÷ ?d ˆìa»L’§ @   ¦ø ?d Èìa9Ý…y @   §ù ?d íaUÉ»L @   ¨ú ?d Hía×X¬’ @   ©û ?d ˆía³/“ @   ªü ?d Èía1¾M @   «ý ?d îa]¡Æ @   ¬þ ?d Hîa™Ì¶ @   ­ÿ ?d ˆîa½Ÿƒ¤ @   ® ?d Èîa?”z @   ¯ ?d ïaþ»”¯ @   ° ?d Hïa|*ƒq @   ± ?d ˆïa]/p @   ² ?d ÈïašÌ8® @   ³ ?d ða“µ’V @   ´ ?d Hða$…ˆ @   µ ?d ˆðaíCÊ® @   ¶ ?d ÈðaoÒÝp @   · ?d ñaÆãE @   ¸ ?d HñaWô› @   ¹ ?d ˆñaå Xš @   º ?d Èñag±OD @   » ?d òaMRùÏ @   ¼ ?d HòaÏÃî @   ½ ?d ˆòaVôÃÛ @   ¾ ?d ÈòaÔeÔ @   ¿ ?d óaªÑõò @   À ?d Hóa(@â, @   Á ?d ˆóaL7N- @    ?d ÈóaΦYó @   à ?d ôa`O¼¶ @   Ä ?d HôaâÞ«h @   Å ?d ˆôa¹äN @   Æ ?d Èôaœ(ó @   Ç ?d õað<Í¥ @   È ?d Hõar­Ú{ @   É ?d ˆõaÚvz @   Ê ?d Èõa”Ka¤ @   Ë ?d öa¾¨×/ @   Ì ?d Höa<9Àñ @   Í ?d ˆöa8¹Ôç @   Î ?d Èöaº(Ã9 @   Ï! ?d ÷a{Ãì @   Ð" ?d H÷aù Ô2 @   Ñ# ?d ˆ÷a{x3 @   Ò$ ?d È÷aêoí @   Ó% ?d øaœ²õº @   Ô& ?d Høa#âd @   Õ' ?d ˆøaâD­B @   Ö( ?d Èøa`Õºœ @   ×) ?d ùa Á„© @   Ø* ?d HùaŽP“w @   Ù+ ?d ˆùaê'?v @   Ú, ?d Èùah¶(¨ @   Û- ?d úaBUž# @   Ü. ?d HúaÀĉý @   Ý/ ?d ˆúaYó¤7 @   Þ0 ?d ÈúaÛb³é @   ß1 ?d ûa Ñ”Œ @   à2 ?d Hûa‰@ƒR @   á3 ?d ˆûaí7/S @   â4 ?d€ Èûa®áÏ @   5 ?d üaáIbá @   6 ?d HüacØu? @   7 ?d ˆüaZöÁô @   8 ?d ÈüaØgÖ* @   9 ?d ýazÁ·e @   : ?d HýaøP » @   ; ?d ˆýaR•SÀ @   < ?d ÈýaÐD @    = ?d þa?® x @    > ?d Hþa½?¦ @    ? ?d ˆþaŒ¦äL @    @ ?d Èþa7ó’ @    A ?d ÿa¬‘’Ý @   B ?d Hÿa.… @   C ?d ˆÿa)dH˜ @   uÐbD ?d Èÿa«õ_F @   E ?d bÝêúö @   F ?d `b_{í( @   G ?d  bfUYã @   H ?d àbäÄN= @   I ?d bFb/r @   J ?d `bÄó8¬ @   K ?d  bn6Ë× @   L ?d àbì§Ü  @   M ?d b ‘o @   N ?d `bœ†± @   O ?d  bÝâP– @   P ?d àb_sGH @   Q ?d býÕ& @   R ?d `bD1Ù @   S ?d  bi&Ûò @    T ?d àbë·Ì, @   !U ?d b€Ò„ @   "V ?d `b†ÅZ @   #W ?d  b;¨q‘ @   $X ?d àb¹9fO @   %Y ?d bŸ @   &Z ?d `b™Þ @   '[ ?d  b3Ë㥠@   (\ ?d àb±Zô{ @   )] ?d b^ð¹ @   *^ ?d `bÜa®Ã @   +_ ?d  b¨A8 @   ,` ?d àbŸ9Væ @   -a ?d b=Ÿ7© @   .b ?d `b¿ w @   /c ?d  b¸jíì @   0d ?d àb:ûú2 @   1e ?d b|ꛈ @   2f ?d `bþ{ŒV @   3g ?d  bÇU8 @   4h ?d àbEÄ/C @   5i ?d bçbN  @   6j ?d ` beóYÒ @   7k ?d   bÏ6ª© @   8l ?d à bM§½w @   9m ?d b›Ê,Ä @   : n ?d ` b[; @   ; o ?d   bE%í= @   < p ?d à bÇ´úã @   = q ?d be›¬ @   > r ?d ` b烌r @   ? s ?d   b_æ`Ë @   @ t ?d à bÝww @   A u ?d b¶×i½ @   B v ?d ` b4F~c @   C w ?d   b hʨ @   D x ?d à bùÝv @   E y ?d b-_¼9 @   F z ?d ` b¯Î«ç @   G { ?d   b Xœ @   H | ?d à b‡šOB @   I } ?d bh0$ @   J ~ ?d `bê¡ú @   K  ?d  bÆþ»‚ @   L € ?d àbDo¬\ @   M  ?d bæÉÍ @   N ‚ ?d `bdXÚÍ @   O ƒ ?d  bc<V @   P „ ?d àbá­ˆ @   Q … ?d b-Q @   R † ?d `b¯ FC @   S ‡ ?d  b–"òˆ @   T ˆ ?d àb³åV @   U ‰ ?d b¶„ @   V Š ?d `b4„“Ç @   W ‹ ?d  bžA`¼ @   X Œ ?d àbÐwb @   Y  ?d bóz: @   Z Ž ?d `bqë-Ú @   [  ?d  b-•ûý @   \  ?d àb¯ì# @   ] ‘ ?d b ¢l @   ^ ’ ?d `b3š² @   _ “ ?d  b™Qp™ @   ` ” ?d àbÀgG @   a • ?d bp`yï @   b – ?d `bòñn1 @   c — ?d  bËßÚú @   d ˜ ?d àbINÍ$ @   e ™ ?d bëè¬k @   f š ?d `biy»µ @   g › ?d  büHÎ @   h œ ?d àbA-_ @   i  ?d b®‡v @   j ž ?d `b,¨ @   k Ÿ ?d  bíßêS @   l   ?d àboNý @   m ¡ ?d bÍèœÂ @   n ¢ ?d `bOy‹ @   o £ ?d  bHF‡ @   p ¤ ?d àbÊŒQY @   q ¥ ?d bŒ0ã @   r ¦ ?d `b '= @   s § ?d  b7"“ö @   t ¨ ?d àbµ³„( @   u © ?d båg @   v ª ?d `b•„ò¹ @   w « ?d  b?A @   x ¬ ?d àb½Ð @   y ­ ?d bRz[z @   z ® ?d `bÐëL¤ @   { ¯ ?d  bŒ•šƒ @   | ° ?d àb] @   } ± ?d b¬¢ì @   ~ ² ?d `b.3ûÌ @    ³ ?d  bu'D @   € ´ ?d àb÷‘0š @    µ ?d bœ1.2 @   ‚ ¶ ?d `b 9ì @   ƒ · ?d  b'Ž' @   „ ¸ ?d àb¥šù @   … ¹ ?d b¹û¶ @   † º ?d `b…(ìh @   ‡ » ?d  b/í @   ˆ ¼ ?d àb­|Í @   ‰ ½ ?d bBÖE« @   Š ¾ ?d `bÀGRu @   ‹ ¿ ?d  bñÞ¨Ÿ @   Œ À ?d àbsO¿A @    Á ?d bÑéÞ @   Ž  ?d `bSxÉÐ @    à ?d  bTKuÐ b @    Ä ?d àbÖ• @   ‘ Å ?d 8 bÕh T @   ’ Æ ?d x bWù7Š @   “ Ç ?d ¸ bn׃A @   ” È ?d ø bìF”Ÿ @   • É ?d 8!bNàõÐ @   – Ê ?d x!bÌqâ @   — Ë ?d ¸!bf´u @   ˜ Ì ?d ø!bä%« @   ™ Í ?d 8"b KÍ @   š Î ?d x"b‰\ @   › Ï ?d ¸"bÕ`Š4 @   œ Ð ?d ø"bWñê @    Ñ ?d 8#bõWü¥ @   ž Ò ?d x#bwÆë{ @   Ÿ Ó ?d ¸#ba¤P @     Ô ?d ø#bã5Ž @   ¡ Õ ?d 8$bˆ•& @   ¢ Ö ?d x$b ø @   £ × ?d ¸$b3*«3 @   ¤ Ø ?d ø$b±»¼í @   ¥ Ù ?d 8%bÝ¢ @   ¦ Ú ?d x%b‘ŒÊ| @   § Û ?d ¸%b;I9 @   ¨ Ü ?d ø%b¹Ø.Ù @   © Ý ?d 8&bVrc¿ @   ª Þ ?d x&bÔãta @   « ß ?d ¸&b*›š @   ¬ à ?d ø&b—»ŒD @   ­ á ?d 8'b5í  @   ® â ?d x'b·ŒúÕ @   ¯ ã ?d ¸'b°è7N @   ° ä ?d ø'b2y  @   ± å ?d 8(bthA* @   ² æ ?d x(böùVô @   ³ ç ?d ¸(bÏ×â? @   ´ è ?d ø(bMFõá @   µ é ?d 8)bïà”® @   ¶ ê ?d x)bmqƒp @   · ë ?d ¸)bÇ´p  @   ¸ ì ?d ø)bE%gÕ @   ¹ í ?d 8*bª*³ @   º î ?d x*b(=m @   » ï ?d ¸*bt`ëJ @   ¼ ð ?d ø*böñü” @   ½ ñ ?d 8+bTWÛ @   ¾ ò ?d x+bÖÆŠ @   ¿ ó ?d ¸+bn£f¼ @   À ô ?d ø+bì2qb @   Á õ ?d 8,b‡’oÊ @    ö ?d x,bx @   à ÷ ?d ¸,b<-Ìß @   Ä ø ?d ø,b¾¼Û @   Å ù ?d 8-bºN @   Æ ú ?d x-bž‹­ @   Ç û ?d ¸-b4N^ë @   È ü ?d ø-b¶ßI5 @   É ý ?d 8.bYuS @   Ê þ ?d x.bÛä @   Ë ÿ ?d ¸.bˆÜèù @   Ì  ?d ø.b Mÿ' @   Í  ?d 8/b¨ëžh @   Î  ?d x/b*z‰¶ @   Ï  ?d ¸/b-D- @   Ð  ?d ø/b¯Só @   Ñ  ?d 80bc¿æ @   Ò  ?d x0bá.8 @   Ó  ?d ¸0bØ¡ó @   Ô  ?d ø0bZ‘¶- @   Õ  ?d 81bø7×b @   Ö  ?d x1bz¦À¼ @   ×  ?d ¸1bÐc3Ç @   Ø  ?d ø1bRò$ @   Ù  ?d 82b½Xi @   Ú  ?d x2b?É~¡ @   Û  ?d ¸2bc·¨† @   Ü  ?d ø2bá&¿X @   Ý  ?d 83bC€Þ @   Þ  ?d x3bÁÉÉ @   ß  ?d ¸3b×s#â @   à  ?d ø3bUâ4< @   á  ?d 84b>B*” @   â  ?d€ x4bÈ!ì @     ?d ¸4bÝ @     ?d ø4b’îÊÐ @     ?d 85bõPr @     ?d x5bwG¬ @     ?d ¸5bçë­ @     ?d ø5b‘vüs @     ?d 86b°nîo @     ?d x6b2ÿù± @     ?d ¸6b6í§ @     ?d ø6b´îúy @    ! ?d 87bÓ`Û @    " ?d x7bQw @    # ?d ¸7b5çÛ @    $ ?d ø7b·vÌÚ @    % ?d 88b’tÌú @    & ?d x8båÛ$ @    ' ?d ¸8bì‚” @    ( ?d ø8bnƒÜ @    ) ?d 89b ü~ @    * ?d x9b‹m  @    + ?d ¸9b @    , ?d ø9bm‹µ @    - ?d 8:bL“§c @    . ?d x:bΰ½ @    / ?d ¸:bW5w @    0 ?d ø:bդЩ @    1 ?d 8;b²K  @    2 ?d x;b0ÚÕ @    3 ?d ¸;bT­«Ô @    4 ?d ø;bÖ<¼  @    5 ?d 8bn @   ( > ?d x>b“ÿ˜Ï @   ) ? ?d ¸>bg/™È @   * @ ?d ø>b徎 @   + A ?d 8?b‚Q´ @   , B ?d x?bÀj @   - C ?duÐ@b7 ¸?bd·¯k @   . D ?d ø?bßád` @   /E ?d P@b °Ra @   0F ?d @b-EPŸ @   1G ?d Ð@bsF ™ @   2H ?d Ab£†q @   3I ?d PAb–8‡å @   4J ?d Ab¶Í… @   5K ?d ÐAbpÞ<: @   6L ?d Bbíšœû @   7M ?d PBbÓW9ø @   8N ?d Bbó¢; @   9O ?d ÐBbÈñì @   :P ?d Cb¹ @   ;Q ?d PCb-Ž @   <R ?d Cb zŒn @   =S ?d ÐCbËi5O @   >T ?d DbÒ'Æ@ @   ?U ?d PDbþJ| @   @V ?d DbÞ¿~ @   AW ?d ÐDb€¼$y @   BX ?d EbPô¨‘ @   CY ?d PEbe© @   DZ ?d EbE7«û @   E[ ?d ÐEbƒ$Ú @   F\ ?d Fb`² @   G] ?d PFb ­ @   H^ ?d FbXæ @   I_ ?d ÐFb¦¼Ð @   J` ?d Gbvô˜8 @   Ka ?d PGbC™¬ @   Lb ?d Gbc7›R @   Mc ?d ÐGb¥$"s @   Nd ?d Hb‘Û®n @   Oe ?d PHb·5 @   Pf ?d Hb"B7s @   Qg ?d ÐHb|Amu @   Rh ?d Ib¬ á @   Si ?d PIb™?à  @   Tj ?d Ib¹Êâ÷ @   Uk ?d ÐIbÙ[Ö @   Vl ?d Jbâû @   Wm ?d PJbÜP^ @   Xn ?d Jbü¥\ê @   Yo ?d ÐJbÇöd @   Zp ?d Kb¾èè @   [q ?d PKb"ˆé| @   \r ?d Kb}ë‚ @   ]s ?d ÐKbÄnR£ @   ^t ?d LbÝ ¡¬ @   _u ?d PLb_Jÿ @   `v ?d Lb¿ @   aw ?d ÐLb!¼E @   bx ?d MbñôÉï @   cy ?d PMbÄÂÈ{ @   dz ?d Mbä7Ê… @   e{ ?d ÐMb"$s¤ @   f| ?d Nb¿`Óe @   g} ?d PNb­vf @   h~ ?d Nb¡Xt˜ @   i ?d ÐNbê*4- @   j€ ?d Ob:b¸Å @   k ?d PObT¹Q @   l‚ ?d Ob/¡»¯ @   mƒ ?d ÐOb鲎 @   n„ ?d PbWl¾< @   o… ?d PPbÄ%ß @   p† ?d Pbäõ'! @   q‡ ?d ÐPbºö}' @   rˆ ?d Qbj¾ñÏ @   s‰ ?d PQb_ˆð[ @   tŠ ?d Qb}ò¥ @   u‹ ?d ÐQb¹nK„ @   vŒ ?d Rb$*ëE @   w ?d PRbçNF @   xŽ ?d Rb:L¸ @   y ?d ÐRbAtR @   z ?d SbÑ øº @   {‘ ?d PSbä?ù. @   |’ ?d SbÄÊûÐ @   }“ ?d ÐSbÙBñ @   ~” ?d Tb—±þ @   • ?d PTbÔ¬; @   €– ?d TbôY9ð @   — ?d ÐTbªZcö @   ‚˜ ?d Ubzï @   ƒ™ ?d PUbO$îŠ @   „š ?d UboÑìt @   …› ?d ÐUb©ÂUU @   †œ ?d Vb4†õ” @   ‡ ?d PVb KP— @   ˆž ?d Vb*¾Ri @   ‰Ÿ ?d ÐVbŒZS_ @   Š  ?d Wb\ß· @   ‹¡ ?d PWbi$Þ# @   Œ¢ ?d WbIÑÜÝ @   £ ?d ÐWbÂeü @   ޤ ?d Xb»=éá @   ¥ ?d PXb(Qr @   ¦ ?d Xb¤pü @   ‘§ ?d ÐXbV§*ú @   ’¨ ?d Yb†ï¦ @   “© ?d PYb³Ù§† @   ”ª ?d Yb“,¥x @   •« ?d ÐYbU?Y @   –¬ ?d ZbÈ{¼˜ @   —­ ?d PZbö¶› @   ˜® ?d ZbÖCe @   ™¯ ?d ÐZbí# @   š° ?d [b=X¯g @   ›± ?d P[bn®ó @   œ² ?d [b(›¬  @   ³ ?d Ð[bîˆ, @   ž´ ?d \b÷Ææ# @   Ÿµ ?d P\bu¬Zp @    ¶ ?d \bUYXŽ @   ¡· ?d Ð\b Zˆ @   ¢¸ ?d ]bÛŽ` @   £¹ ?d P]bî$ô @   ¤º ?d ]bÎÑ  @   ¥» ?d Ð]bÂ4+ @   ¦¼ ?d ^b•†”ê @   §½ ?d P^b«K1é @   ¨¾ ?d ^b‹¾3 @   ©¿ ?d Ð^bÝ '0 @   ªÀ ?d _b B«Ø @   «Á ?d P_b8tªL @   ¬ ?d _b¨² @   uÐ`b­à ?d Ð_bÞ’“ @   ®Ä ?d (`b`j¤  @   ¯Å ?d h`bó?è @   °Æ ?d ¨`bÓó= @   ±Ç ?d è`bðg @   ²È ?d (ab]¸ëø @   ³É ?d habhŽêl @   ´Ê ?d ¨abH{è’ @   µË ?d èabŽhQ³ @   ¶Ì ?d (bb,ñr @   ·Í ?d hbb-áTq @   ¸Î ?d ¨bb4ÓŠZ @   ¹ Ï ?d èbb€²° @   º Ð ?d (cbßÈ>X @   » Ñ ?d hcbêþ?Ì @   ¼ Ò ?d ¨cbÊ =2 @   ½ Ó ?d ècb „ @   ¾ Ô ?d (dbVw @   ¿ Õ ?d hdb9;ÍÝ @   À Ö ?d ¨dbÎÏ# @   Á × ?d èdbGÍ•% @    Ø ?d (eb—…Í @   à Ù ?d heb¢³Y @   Ä Ú ?d ¨eb‚F§ @   Å Û ?d èebDU£† @   Æ Ü ?d (fbÙG @   Ç Ý ?d hfbçܦD @   È Þ ?d ¨fbÇ)¤º @   É ß ?d èfbaÍ¥Œ @   Ê à ?d (gb±…)d @   Ë á ?d hgb„³(ð @   Ì â ?d ¨gb¤F* @   Í ã ?d ègbbU“/ @   Î ä ?d (hbVª2 @   Ï å ?d hhbÅÆ„Ñ @   Ð æ ?d ¨hbå3†/ @   Ñ ç ?d èhb»0Ü) @   Ò è ?d (ibkxPÁ @   Ó é ?d hib^NQU @   Ô ê ?d ¨ib~»S« @   Õ ë ?d èib¸¨êŠ @   Ö ì ?d (jb%ìJK @   × í ?d hjb!ïH @   Ø î ?d ¨jb;Ôí¶ @   Ù ï ?d èjb‡Õ\ @   Ú ð ?d (kbÐÏY´ @   Û ñ ?d hkbåùX  @   Ü ò ?d ¨kbÅ ZÞ @   Ý ó ?d èkbãÿ @   Þ ô ?d (lbQð @   ß õ ?d hlb˜;¬£ @   à ö ?d ¨lb¸Î®] @   á ÷ ?d èlbæÍô[ @   â ø ?d€ (mb°ÓÐ  @    ù ?d hmbd¤™· @    ú ?d ¨mbDQ›I @    û ?d èmbG Ù… @    ü ?d (nbÚOyD @    ý ?d hnb*0ƒ= @    þ ?d ¨nb Åà @    ÿ ?d ènbÌkô– @     ?d (ob#x~ @     ?d hobì\‚ @     ?d ¨obÌ©€ù @     ?d èobÏóÂ5 @     ?d (pbq-~‡ @     ?d hpbR„þ @     ?d ¨pb¡§† @     ?d èpbœ·½œ @     ?d (qbLÿ1t @     ?d hqb¼€Ë  @     ?d ¨qbœuÉó @     ?d èqbŸ/‹? @     ?d (rbk+þ @     ?d hrbòч @     ?d ¨rbÒáÓy @     ?d èrb'´é @     ?d (sb÷H8 @     ?d hsb7Âx @     ?d ¨sb'ÂÀ† @     ?d èsb$˜‚J @     ?d (tb=ÖqE @     ?d htbÍ©‹< @     ?d ¨tbí\‰Â @     ?d ètbÁJ•î @     ?d (ub @   !  ?d hubá}ã @   "  ?d ¨ubÁˆá @   #  ?d èubÂÒ£M @   $  ?d (vb_–Œ @   %  ?d hvb¯éùõ @   &  ?d ¨vbû  @   '  ?d èvbçJ¥G @   (  ?d (wb7)¯ @   ) ! ?d hwbÇ}ÓÖ @   * " ?d ¨wbçˆÑ( @   + # ?d èwbäÒ“ä @   , $ ?d (xbÐ-ù @   - % ?d hxb Rå€ @   . & ?d ¨xb§ç~ @   / ' ?d èxb=·Üâ @   0 ( ?d (ybíÿP  @   1 ) ?d hyb€ªs @   2 * ?d ¨yb=u¨ @   3 + ?d èyb>/êA @   4 , ?d (zb£kJ€ @   5 - ?d hzbS°ù @   6 . ?d ¨zbsá² @   7 / ?d èzb†Õ— @   8 0 ?d ({bVHY @   9 1 ?d h{b¦7£ @   : 2 ?d ¨{b†Â¡ø @   ; 3 ?d è{b…˜ã4 @   < 4 ?d (|bœÖ; @   = 5 ?d h|bl©êB @   > 6 ?d ¨|bL\è¼ @   ? 7 ?d è|bÎMò @   @ 8 ?d (}b~ê @   A 9 ?d h}bîz„“ @   B : ?d ¨}bΆm @   C ; ?d è}bÍÕÄ¡ @   D < ?d (~bP‘d` @   E = ?d h~b îž @   F > ?d ¨~b€œç @   G ? ?d è~b׺ @   H @ ?d (bÈU[R @   I A ?d hb8*¡+ @   J B ?d ¨buЀb'ߣÕ @   K C ?d èb"B=Ì @   LD ?d @€bLü߸ @   ME ?d €€bç0á @   NF ?d À€bœv'? @   OG ?d b󿇕 @   PH ?d @bq.K @   QI ?d €b#5 @   RJ ?d Àb¡¤hÌ @   SK ?d ‚b½+ @   TL ?d @‚b?ºŠÁ @   UM ?d €‚bm¡e˜ @   VN ?d À‚bï0rF @   WO ?d ƒbHŽà @   XP ?d @ƒbÊ™™> @   YQ ?d €ƒb˜‚vg @   ZR ?d Àƒba¹ @   [S ?d „b‚–Ǥ @   \T ?d @„bÐz @   ]U ?d €„bR?# @   ^V ?d À„bÐ(ý @   _W ?d …b®B¯ç @   `X ?d @…b,Ó¸9 @   aY ?d €…b~ÈW` @   bZ ?d À…büY@¾ @   c[ ?d †bàÖµm @   d\ ?d @†bbG¢³ @   e] ?d €†b0\Mê @   f^ ?d À†b²ÍZ4 @   g_ ?d ‡bˆBŸN @   h` ?d @‡b Óˆ @   ia ?d €‡bXÈgÉ @   jb ?d À‡bÚYp @   kc ?d ˆbom© @   ld ?d @ˆbíü¾Æ @   me ?d €ˆb¿çQŸ @   nf ?d Àˆb=vFA @   og ?d ‰bR¿æë @   ph ?d @‰bÐ.ñ5 @   qi ?d €‰b‚5l @   rj ?d À‰b¤ ² @   sk ?d Šb+üa @   tl ?d @Šbžºë¿ @   um ?d €ŠbÌ¡æ @   vn ?d ÀŠbN08 @   wo ?d ‹béïž @   xp ?d @‹bk™ø@ @   yq ?d €‹b9‚ @   zr ?d À‹b»Ç @   {s ?d Œb#–¦Ú @   |t ?d @Œb¡± @   }u ?d €Œbó^] @   ~v ?d ÀŒbqIƒ @   w ?d bBø: @   €x ?d @bÀ‚ïä @   y ?d €b’™½ @   ‚z ?d Àbc @   ƒ{ ?d Žb ‡â° @   „| ?d @ŽbŽõn @   …} ?d €ŽbÜ 7 @   †~ ?d ÀŽb^œ é @   ‡ ?d b‰…‰ @   ˆ€ ?d @b žÎ @   ‰ ?d €bYq— @   Š‚ ?d ÀbÛžfI @   ‹ƒ ?d bä‹é @   Œ„ ?d @bf˜7 @   … ?d €b4wn @   ކ ?d Àb¶`° @   ‡ ?d ‘bÙYÀ @   ˆ ?d @‘b[È×Ä @   ‘‰ ?d €‘b Ó8 @   ’Š ?d À‘b‹B/C @   “‹ ?d ’b—ÍÚ @   ”Œ ?d @’b\ÍN @   • ?d €’bGG" @   –Ž ?d À’bÅÖ5É @   — ?d “bbîÉo @   ˜ ?d @“bàÞ± @   ™‘ ?d €“b²d1è @   š’ ?d À“b0õ&6 @   ›“ ?d ”b¨p€+ @   œ” ?d @”b*á—õ @   • ?d €”bxúx¬ @   ž– ?d À”búkor @   Ÿ— ?d •b„¤èh @    ˜ ?d @•b5ÿ¶ @   ¡™ ?d €•bT.ï @   ¢š ?d À•bÖ¿1 @   £› ?d –bÊ0òâ @   ¤œ ?d @–bH¡å< @   ¥ ?d €–bº e @   ¦ž ?d À–b˜+» @   §Ÿ ?d —b¢¤ØÁ @   ¨  ?d @—b 5Ï @   ©¡ ?d €—br. F @   ª¢ ?d À—bð¿7˜ @   «£ ?d ˜bE‹î— @   ¬¤ ?d @˜bÇùI @   ­¥ ?d €˜b• @   ®¦ ?d À˜bÎ @   ¯§ ?d ™bxY¡d @   °¨ ?d @™búȶº @   ±© ?d €™b¨ÓYã @   ²ª ?d À™b*BN= @   ³« ?d šb6Í»î @   ´¬ ?d @šb´\¬0 @   µ­ ?d €šbæGCi @   ¶® ?d ÀšbdÖT· @   ·¯ ?d ›bÃî¨ @   ¸° ?d @›bA¿Ï @   ¹± ?d €›bdP– @   º² ?d À›b‘õGH @   »³ ?d œb páU @   ¼´ ?d @œb‹áö‹ @   ½µ ?d €œbÙúÒ @   ¾¶ ?d Àœb[k  @   ¿· ?d b‹£„ @   À¸ ?d @b 2˜Z @   Á¹ ?d €b[)w @   º ?d ÀbÙ¸`Ý @   û ?d žbÅ7• @   ļ ?d @žbG¦‚Ð @   Ž ?d €žb½m‰ @   ƾ ?d Àžb—,zW @   Ç¿ ?d Ÿb]óª< @   ÈÀ ?d @Ÿbßb½â @   ÉÁ ?d €ŸbyR» @   Ê uРb?d ÀŸbèEe @   Ëà ?d  bÿ(Î @   ÌÄ ?d X b}¹ÙÏ @   ÍÅ ?d ˜ b/¢6– @   ÎÆ ?d Ø b­3!H @   ÏÇ ?d ¡bÂúâ @   ÐÈ ?d X¡b@k–< @   ÑÉ ?d ˜¡bpye @   ÒÊ ?d Ø¡bán» @   ÓË ?d ¢bŒn›h @   ÔÌ ?d X¢bÿŒ¶ @   ÕÍ ?d ˜¢b\äcï @   ÖÎ ?d Ø¢bÞut1 @   ×Ï ?d £byMˆ— @   ØÐ ?d X£bûÜŸI @   ÙÑ ?d ˜£b©Çp @   ÚÒ ?d Ø£b+VgÎ @   ÛÓ ?d ¤b³ÓÁÓ @   ÜÔ ?d X¤b1BÖ  @   ÝÕ ?d ˜¤bcY9T @   ÞÖ ?d ؤbáÈ.Š @   ß× ?d ¥bŸ© @   àØ ?d X¥b–¾N @   áÙ ?d ˜¥bOQ @   âÚ ?d€ Ø¥b¹ßZo @   Û ?d ¦bDç• @   Ü ?d X¦bÆ€ðK @   Ý ?d ˜¦bQÒäÿ @   Þ ?d ئbÓCó! @   ß ?d §b'~i! @   à ?d X§b¥ï~ÿ @   á ?d ˜§b9FÎÜ @   â ?d اb»×Ù @    ã ?d ¨b˪ûà @    ä ?d X¨bI;ì> @    å ?d ˜¨bÞiøŠ @    æ ?d بb\øïT @    ç ?d ©bP".d @   è ?d X©bÒ³9º @   é ?d ˜©bã»·y @   ê ?d Ø©ba* § @   ë ?d ªb¸ì®™ @   ì ?d Xªb:}¹G @   í ?d ˜ªb­/­ó @   î ?d تb/¾º- @   ï ?d «bF4ñ @   ð ?d X«bÄ¥/ @   ñ ?d ˜«bX ¾  @   ò ?d Ø«bÚ©Ò @   ó ?d ¬b‡Qô" @   ô ?d X¬bÀãü @   õ ?d ˜¬b’’÷H @   ö ?d جbà– @   ÷ ?d ­bÙ!¦ @   ø ?d X­bžH6x @   ù ?d ˜­b¾FŸ  @    ú ?d Ø­b<׈Õ @   !û ?d ®bå†ë @   "ü ?d X®bg€‘5 @   #ý ?d ˜®bðÒ… @   $þ ?d Ø®brC’_ @   %ÿ ?d ¯bÐ @   & ?d X¯b–  @   ' ?d ˜¯b ·»- @   ( ?d دbˆ&¬ó @   ) ?d °brz¾¾ @   * ?d X°bðë©` @   + ?d ˜°bg¹½Ô @   , ?d ذbå(ª  @   - ?d ±béòk: @   . ?d X±bkc|ä @   / ?d ˜±bZkò' @   0 ?d رbØúåù @   1 ?d ²b<ëÇ @   2 ?d X²bƒ­ü @   3 ?d ˜²bÿè­ @   4 ?d زb–nÿs @   5 ?d ³bÿä\¯ @   6 ?d X³b}uKq @   7 ?d ˜³báÜûR @   8 ?d سbcMìŒ @   9 ?d ´b>±| @   : ?d X´b¼¦¢ @   ; ?d ˜´b+B² @   < ?d Ø´b©Ó¥È @   = ?d µb¥ dø @   > ?d Xµb'˜s& @   ? ?d ˜µb©‘ÜÇ @   @ ?d صb+Ë @   A ?d ¶bòÆÅ' @   B ?d X¶bpWÒù @   C ?d ˜¶bçÆM @   D ?d ضbe”Ñ“ @   E ?d ·b‘©K“ @   F ?d X·b8\M @   G! ?d ˜·b‘ìn @   H" ?d Ø·b û° @   I# ?d ¸b}}ÙR @   J$ ?d X¸bÿìÎŒ @   K% ?d ˜¸bh¾Ú8 @   L& ?d ظbê/Íæ @   M' ?d ¹bæõ Ö @   N( ?d X¹bdd @   O) ?d ˜¹bUl•Ë @   P* ?d عb×ý‚ @   Q+ ?d ºb;Œ+ @   R, ?d XºbŒª›õ @   S- ?d ˜ºbøA @   T. ?d غb™i˜Ÿ @   U/ ?d »bðã;C @   V0 ?d X»bò_á @   W€1 ?d ˜»b“[ï @   X€2 ?d Ø»bÊø @   Y€3 ?d ¼bL¥ì @   Z€4 ?d X¼bΗ²2 @   [€5 ?d ˜¼bYŦ† @   \€6 ?d ؼbÛT±X @   ]€7 ?d ½b׎ph @   ^€8 ?d X½bUg¶ @   _€9 ?d ˜½buÎÅ @   `€: ?d ؽb÷€Ù @   a€; ?d ¾b.F×% @   b€< ?d X¾b¬×Àû @   c€= ?d ˜¾b;…ÔO @   d€> ?d ؾb¹Ñ @   e€? ?d ¿b½yL€ @   f€@ ?d X¿b?è[^ @   g€A ?d ˜¿b£Aë} @uÐÀb   h€B ?d Ø¿bžùh  @   iC ?d 0Àb¾‹—§ @   jD ?d pÀb<€y @   kE ?d °Àb«H”Í @   lF ?d ðÀb)Ùƒ @   mG ?d 0Áb%B# @   nH ?d pÁb§’Uý @   oI ?d °Áb–šÛ> @   pJ ?d ðÁb Ìà @   qK ?d 0ÂbÍÍÂÞ @   rL ?d pÂbO\Õ @   sM ?d °ÂbØÁ´ @   tN ?d ðÂbZŸÖj @   uO ?d 0Ãb3u¶ @   vP ?d pÃb±„bh @   wQ ?d °Ãb--ÒK @   xR ?d ðÃb¯¼Å• @   yS ?d 0Äbòp˜e @   zT ?d pÄbpá» @   {U ?d °Äbç³› @   |V ?d ðÄbe"ŒÑ @   }W ?d 0ÅbiøMá @   ~X ?d pÅbëiZ? @   Y ?d °Åb†6Åï @   €Z ?d ðÅb§Ò1 @   [ ?d 0ÆbÝaÜ @   ‚\ ?d pÆb_ðËÑ @   ƒ] ?d °ÆbÈ¢ße @   „^ ?d ðÆbJ3È» @   …_ ?d 0Çb¾R» @   †` ?d pÇb<ŸEe @   ‡a ?d °Çb 6õF @   ˆb ?d ðÇb"§â˜ @   ‰c ?d 0ÈbRÚÀz @   Šd ?d pÈbÐKפ @   ‹e ?d °ÈbGà @   Œf ?d ðÈbňÔÎ @   g ?d 0ÉbÉRþ @   Žh ?d pÉbKà  @   i ?d °ÉbzËŒã @   j ?d ðÉbøZ›= @   ‘k ?d 0Êb!œ• @   ’l ?d pÊb£ ‚Ý @   “m ?d °Êb4_–i @   ”n ?d ðÊb¶Î· @   •o ?d 0ËbßD"k @   –p ?d pËb]Õ5µ @   —q ?d °ËbÁ|…– @   ˜r ?d ðËbCí’H @   ™s ?d 0Ìb!ϸ @   št ?d pÌbœ°Øf @   ›u ?d °Ìb âÌÒ @   œv ?d ðÌb‰sÛ  @   w ?d 0Íb…©< @   žx ?d pÍb8 â @   Ÿy ?d °Íb'6¤‘ @    z ?d ðÍb¥§³O @   ¡{ ?d 0Îb|a½q @   ¢| ?d pÎbþ𪯠@   £} ?d °Îbi¢¾ @   ¤~ ?d ðÎbë3©Å @   ¥ ?d 0Ïbò˜rF @   ¦€ ?d pÏbp e˜ @   § ?d °Ïbì Õ» @   ¨‚ ?d ðÏbn1Âe @   ©ƒ ?d 0Ðb”mÐ( @   ª„ ?d pÐbüÇö @   «… ?d °Ðb®ÓB @   ¬† ?d ðÐb?Äœ @   ­‡ ?d 0Ñbå¬ @   ®ˆ ?d pÑbtr @   ¯‰ ?d °Ñb¼|œ± @   °Š ?d ðÑb>í‹o @   ±‹ ?d 0Òbç+…Q @   ²Œ ?d pÒbeº’ @   ³ ?d °Òbòè†; @   ´Ž ?d ðÒbpy‘å @   µ ?d 0Óbó29 @   ¶ ?d pÓb›b%ç @   ·‘ ?d °Ób襀 @   ¸’ ?d ðÓb…Z‚ @   ¹“ ?d 0ÔbØ–ßê @   º” ?d pÔbZÈ4 @   »• ?d °ÔbÍUÜ€ @   ¼– ?d ðÔbOÄË^ @   ½— ?d 0ÕbC n @   ¾˜ ?d pÕbÁ° @   ¿™ ?d °ÕbO†²Q @   Àš ?d ðÕbÍ¥ @   Á› ?d 0ÖbÑ«± @   œ ?d pÖb–@¼o @   à ?d °Öb¨Û @   Äž ?d ðÖbƒƒ¿ @   ÅŸ ?d 0×bw¾% @   Æ  ?d p×bõ/2Û @   Ç¡ ?d °×bi†‚ø @   È¢ ?d ð×bë•& @   É£ ?d 0Øb›j·Ä @   ʤ ?d pØbû  @   Ë¥ ?d °ØbŽ©´® @   ̦ ?d ðØb 8£p @   ͧ ?d 0Ùbâb@ @   Ψ ?d pÙb‚suž @   Ï© ?d °Ùb³{û] @   Ъ ?d ðÙb1êìƒ @   Ñ« ?d 0Úbè,â½ @   Ò¬ ?d pÚbj½õc @   Ó­ ?d °Úbýïá× @   Ô® ?d ðÚb~ö  @   Õ¯ ?d 0ÛbôUÕ @   Ö° ?d pÛb”eB  @   ×± ?d °ÛbÌò( @   ز ?d ðÛbŠ]åö @   Ù³ ?d 0Übב¸ @   Ú´ ?d pÜbU¯Ø @   Ûµ ?d °ÜbÂR»l @   ܶ ?d ðÜb@ì² @   Ý· ?d 0ÝbLm‚ @   Þ¸ ?d pÝbΈz\ @   ß¹ ?d °Ýbî†Ó/ @   ຠ?d ðÝblÄñ @   á» ?d 0ÞbµÑÊÏ @   â¼ ?d€ pÞbö* @  ½ ?d °Þb€vŒ @  ¾ ?d ðÞb…aR @  ¿ ?d 0ßbá® @  À ?d pßbA0p @  Á ?d uÐàb/°ßb+í) @   ?d ðßb‘ºú÷ @  à ?d Hàb.U„ @  Ä ?d ˆàb"ÛWz @   Å ?d ÈàbÒ¤­ @   Æ ?d ábì!ë @   Ç ?d Háb™¦€ @   È ?d ˆáb¹S‚þ @   É ?d ÈábI,x‡ @  Ê ?d âbÔhØF @  Ë ?d Hâbqhý @  Ì ?d ˆâbQ @  Í ?d Èâb¡âøz @  Î ?d ãbqªt’ @  Ï ?d Hãb°·• @  Ð ?d ˆãb¯Eµk @  Ñ ?d Èãb_:O @  Ò ?d äbFt¼ @  Ó ?d HäbNÕZF @  Ô ?d ˆäbn X¸ @  Õ ?d Èäbž_¢Á @  Ö ?d åbN.) @  × ?d HåbÕ] @  Ø ?d ˆåbõ¨< @  Ù ?d Èåb×wE @  Ú ?d æb˜“ׄ @  Û ?d Hæb,•( @   Ü ?d ˆæb `*q @  !Ý ?d ÈæbüÐ @  "Þ ?d çb,W\à @  #ß ?d HçbOú¦; @  $à ?d ˆçbo¤Å @  %á ?d ÈçbŸp^¼ @  &â ?d èb«Ò¡ @  'ã ?d Hèb£.4ú @  (ä ?d ˆèbƒÛ6 @  )å ?d Èèbs¤Ì} @  *æ ?d éb£ì@• @  +ç ?d Héb8¦á~ @  ,è ?d ˆébS〠@  -é ?d Èébè,ù @  .ê ?d êbuh¹8 @  /ë ?d HêbÐhaƒ @  0ì ?d ˆêbðc} @  1í ?d Èêbâ™ @  2î ?d ëbЪì @  3ï ?d Hëb.°Öë @  4ð ?d ˆëbEÔ @  5ñ ?d Èëbþ:.l @  6ò ?d ìbçtÝc @  7ó ?d HìbïÕ;8 @  8ô ?d ˆìbÏ 9Æ @  9õ ?d Èìb?_ÿ @  :ö ?d íbïOW @  ;÷ ?d Híbt]î¼ @  <ø ?d ˆíbT¨ìB @  =ù ?d Èíb¤×; @  >ú ?d îb9“¶ú @  ?û ?d Hîb#’Oc @  @ü ?d ˆîbgM @  Aý ?d Èîbó·ä @  Bþ ?d ïb#P;  @  Cÿ ?d Hïb`.à} @  D?d ˆïb@Û⃠@  E?d Èïb°¤ú @  F?d ðbz¤H @  G?d HðbÛB @  H?d ˆðb&.@í @  I?d ÈðbÖQº” @  J?d ñb6| @  K?d HñbS—— @  L?d ˆñb½¦•i @  M ?d ÈñbMÙo @  N ?d òbÐÏÑ @  O ?d Hòbuj @  P ?d ˆòbUh” @  Q ?d Èòb¥ïí @  R?d óbu_c @  S?d Hób‹E  @  T?d ˆób«°¢ü @  U?d Èób[ÏX… @  V?d ôbB«Š @  W?d HôbJ MÑ @  X?d ˆôbjÕO/ @  Y?d ÈôbšªµV @  Z?d õbJâ9¾ @  [?d HõbѨ˜U @  \?d ˆõbñ]š« @  ]?d Èõb"`Ò @  ^?d öbœfÀ @  _?d Höb(`? @  `?d ˆöb•=æ @  a?d ÈöbøêÇŸ @  b?d ÷b(¢Kw @  c?d H÷bK±¬ @  d ?d ˆ÷bkú³R @  e!?d È÷b›…I+ @  f"?d øb¯zÅ6 @  g#?d Høb§Û#m @  h$?d ˆøb‡.!“ @  i%?d ÈøbwQÛê @  j&?d ùb§W @  k'?d Hùb?d ÿbÄóª @  ƒ??d HÿbWó` @  „@?d ˆÿbwûñž @  …uÐcA?d Èÿb‡„ ç @  †B?d cÈ0# @  ‡C?d `cÀ‘ÅM @  ˆD?d  càddz @  ‰E?d àc=Ê @  ŠF?d cÀS±" @  ‹G?d `c[É @  ŒH?d  c{ì7 @  I?d àc‹“èN @  ŽJ?d c×H @  K?d `c³×4 @  L?d  c“"’Ê @  ‘M?d àcc]h³ @  ’N?d c³ä[ @  “O?d `cM'\ @  ”P?d  cmú%¢ @  •Q?d àc…ßÛ @  –R?d c„Ë,Ô @  —S?d `cŒjÊ @  ˜T?d  c¬ŸÈq @  ™U?d àc\à2 @  šV?d cŒ¨¾à @  ›W?d `câ  @  œX?d  c7õ @  Y?d àcÇhçŒ @  žZ?d cZ,GM @  Ÿ[?d `cî*¸F @   \?d  cÎߺ¸ @  ¡]?d àc> @Á @  ¢^?d cîèÌ) @  £_?d `cE6ò @  ¤`?d  c­°4  @  ¥a?d àc]ÏÎu @  ¦b?d ci0Bh @  §c?d `ca‘¤3 @  ¨d?d  cAd¦Í @  ©e?d àc±\´ @  ªf?d caSÐ\ @  «g?d ` cúq· @  ¬h?d   cÚìsI @  ­i?d à c*“‰0 @  ®j?d c·×)ñ @  ¯k?d ` c×ñJ @  °l?d   c2"ó´ @  ±m?d à cÂ] Í @  ²n?d c…% @  ³o?d ` cìF" @  ´p?d   cÌúDÜ @  µq?d à c<…¾¥ @  ¶r?d c%ËMª @  ·s?d ` c-j«ñ @  ¸t?d   c Ÿ© @  ¹u?d à cýàSv @  ºv?d c-¨ßž @  »w?d ` c¶â~u @  ¼x?d   c–|‹ @  ½y?d à cfh†ò @  ¾z?d cû,&3 @  ¿{?d `cá-ߪ @  À|?d  cÁØÝT @  Á}?d àc1§'- @  Â~?d cáï«Å @  Ã?d `coÔ @  Ä€?d  cO!c @  Å?d àc¿^è @  Æ‚?d c€T¨ @  Çƒ?d `c !²ó @  È„?d  c)Ô°  @  É…?d àcÙ«Jt @  Ê†?d c ãÆœ @  Ë‡?d `c’©gw @  Ìˆ?d  c²\e‰ @  Í‰?d àcB#Ÿð @  ÎŠ?d cßg?1 @  Ï‹?d `czgçŠ @  ÐŒ?d  cZ’åt @  Ñ?d àcªí  @  ÒŽ?d cz¥“å @  Ó?d `c„¿Pâ @  Ô?d  c¤JR @  Õ‘?d àcT5¨e @  Ö’?d cM{[j @  ×“?d `cEÚ½1 @  Ø”?d  ce/¿Ï @  Ù•?d àc•PE¶ @  Ú–?d cEÉ^ @  Û—?d `cÞRhµ @  Ü˜?d  cþ§jK @  Ý™?d àcØ2 @  Þš?d c“œ0ó @  ß›?d `c'šÏø @  àœ?d  coÍ @  á?d àc÷7 @  âž?d€ cS›§1 @  Ÿ?d `cÑwà @   ?d  cñ‚= @  ¡?d àcÄ´© @  ¢?d cðKš´ @  £?d `c6X#• @  ¤?d  c­!k @  ¥?d àc(`„h @  ¦?d cø(€ @   §?d `c¦+R† @   ¨?d  c†ÞPx @   ©?d àc³èQì @   ª?d c.¬ñ- @   «?d `cè¿H  @  ¬?d  cÈJJò @  ­?d àc[&Ñ @  ®?d c‹n]ù @  ¯?d `c°=e @  °?d  cÈgí @  ±?d àc¥þfy @  ²?d c¼°•v @  ³?d `cz£,W @  ´?d  cZV.© @  µ?d àcd›‹ª @  ¶?d c´ÓB @  ·?d `cêÐ]D @  ¸?d  cÊ%_º @  ¹?d àcÿ^. @  º?d cbWþï @  »?d `c¤DGÎ @  ¼?d  c„±E0 @  ½?d àcÛùc @   ¾?d cÖ“u‹ @  !¿?d `c€'a¬ @  "À?d  c ÒcRuÐ c @  #Á?d àc•äbÆ @  $Â?d 8 cäï¼  @  %Ã?d x c"ü @  &Ä?d ¸ c  @  'Å?d ø c<Ä¢| @  (Æ?d 8!cìŒ.” @  )Ç?d x!c²t’ @  *È?d ¸!c’zvl @  +É?d ø!c§Lwø @  ,Ê?d 8"c:×9 @  -Ë?d x"cün @  .Ì?d ¸"cÜîlæ @  /Í?d ø"cO‚÷ @  0Î?d 8#cŸÊ{í @  1Ï?d x#c¤™C @  2Ð?d ¸#c„lAù @  3Ñ?d ø#c±Z@m @  4Ò?d 8$c¨³b @  5Ó?d x$cn C @  6Ô?d ¸$cNò½ @  7Õ?d ø$cp?­¾ @  8Ö?d 8%c w!V @  9×?d x%cþt{P @  :Ø?d ¸%cÞy® @  ;Ù?d ø%cë·x: @  <Ú?d 8&cvóØû @  =Û?d x&c°àaÚ @  >Ü?d ¸&cc$ @  ?Ý?d ø&c¼xÙå @  @Þ?d 8'cl0U  @  Aß?d x'cÊÔT; @  Bà?d ¸'cê!VÅ @  Cá?d ø'cßWQ @  Dâ?d 8(cëèÛL @  Eã?d x(c-ûbm @  Fä?d ¸(c `“ @  Gå?d ø(c3ÃÅ @  Hæ?d 8)cã‹Ix @  Iç?d x)c½ˆ~ @  Jè?d ¸)c}€ @  Ké?d ø)c¨K @  Lê?d 8*c5°Õ @  Më?d x*có ô @  Nì?d ¸*cÓé  @  Oí?d ø*c@…é @  Pî?d 8+cÍ @  Qï?d x+c«ž$ë @  Rð?d ¸+c‹k& @  Sñ?d ø+c¾]' @  Tò?d 8,c§ÔŽ @  Uó?d x,cam¯ @  Vô?d ¸,cAõoQ @  Wõ?d ø,c8ÊR @  Xö?d 8-c¯pFº @  Y÷?d x-cñs¼ @  Zø?d ¸-cцB @  [ù?d ø-cä°Ö @  \ú?d 8.cyô¿ @  ]û?d x.c¿ç6 @  ^ü?d ¸.cŸÈ @  _ý?d ø.cx¸› @  `þ?d 8/cÍ04s @  aÿ?d x/cù%!Ê @  b?d ¸/cÙÐ#4 @  c?d ø/cìæ"  @  d?d 80cR8ž @  e?d x0c”+'3 @  f?d ¸0c´Þ%Í @  g?d ø0cŠ€Î @  h?d 81cZ[ & @  i?d x1cXV  @  j?d ¸1c$­TÞ @  k ?d ø1c›UJ @  l ?d 82cŒßõ‹ @  m ?d x2cJÌLª @  n ?d ¸2cj9NT @  o ?d ø2cùUÕ· @  p?d 83c)Y_ @  q?d x3cNaµ @  r?d ¸3c2»cK @  s?d ø3cbß @  t?d 84cÑÐ @  u?d x4cØÐ(ñ @  v?d ¸4cø%* @  w?d ø4cÆè  @  x?d 85c ä @  y?d x5cH£Yâ @  z?d ¸5chV[ @  {?d ø5c]`Zˆ @  |?d 86cÀ$úI @  }?d x6c7Ch @  ~?d ¸6c&ÂA– @  ?d ø6céùËf @  €?d 87c9±GŽ @  ?d x7cŸUF¸ @  ‚ ?d ¸7c¿ DF @  ƒ!?d ø7cŠ–EÒ @  „"?d 88c¾iÉÏ @  …#?d x8cxzpî @  †$?d ¸8cXr @  ‡%?d ø8cfB× @  ˆ&?d 89c¶ [û @  ‰'?d x9cè ý @  Š(?d ¸9cÈü @  ‹)?d ø9cýÊ— @  Œ*?d 8:c`Ž¢V @  +?d x:c¦w @  Ž,?d ¸:c†h‰ @  -?d ø:c‚j @  .?d 8;cÅL‚ @  ‘/?d x;cþ6h @  ’0?d ¸;cÞê4– @  “1?d ø;cëÜ5 @  ”2?d 8c,u­” @  ;?d x>cêfµ @  ž<?d ¸>cÊ“K @  Ÿ=?d ø>cHùª @   >?d 8?c˜±&ð @  ¡??d x?cÎ2× @  ¢@?duÐ@c7 ¸?cîð0) @  £A?d ø?c ¨ ½ @  ¤ B?d P@cã° @  ¥ C?d @c‡s€ @  ¦ D?d Ð@câ ^ @  § E?d Aciö5k @  ¨ F?d PAcëg"µ @  © G?d Acm“ @  ª H?d ÐAc•‘zM @  « I?d Bc¿rÌÆ @  ¬ J?d PBc=ãÛ @  ­ K?d BcY”w @  ® L?d ÐBcÛ`Ç @  ¯ M?d Cc°` @  ° N?d PCc˜!wÌ @  ± O?d CcZ @  ² P?d ÐCcƒ‡MØ @  ³ Q?d Dc-n¨ @  ´ R?d PDc¯ÿ¿C @  µ S?d DcˈB @  ¶ T?d ÐDcIœ @  · U?d Ec% :© @  ¸ V?d PEc§œ-w @  ¹ W?d Ec[ûbQ @  º X?d ÐEcÙju @  » Y?d Fcó‰Ã @  ¼ Z?d PFcqÔÚ @  ½ [?d FcoxÛ @  ¾ \?d ÐFc—þo @  ¿ ]?d GcéJNò @  À ^?d PGckÛY, @  Á _?d Gco[M: @   `?d ÐGcíÊZä @  à a?d Hcn’À³ @  Ä b?d PHcì×m @  Å c?d Hcˆt{l @  Æ d?d ÐHc ål² @  Ç e?d IcfñR‡ @  È f?d PIcä`EY @  É g?d Ic  @  Ê h?d ÐIcš–¡ @  Ë i?d Jc°u«* @  Ì j?d PJc2ä¼ô @  Í k?d JcV“õ @  Î l?d ÐJcÔ+ @  Ï m?d Kc·þ @  Ð n?d PKc—&  @  Ñ o?d Kc=ê @  Ò p?d ÐKcŒ€*4 @  Ó q?d Lc"iÏq @  Ô r?d PLc øØ¯ @  Õ s?d LcÄt® @  Ö t?d ÐLcFcp @  × u?d Mc* ]E @  Ø v?d PMc¨›J› @  Ù w?d McTü½ @  Ú x?d ÐMcÖmc @  Û y?d Ncüޤè @  Ü z?d PNc~³6 @  Ý {?d Nch7 @  Þ |?d ÐNc˜ùé @  ß }?d OcHJ/Œ @  à ~?d POcÊÛ8R @  á ?d Oc#ÍmÇ @  â €?d€ ÐOcÊ–÷ @   ?d Pc"8t& @   ‚?d PPc ©cø @   ƒ?d Pc—4 @   „?d ÐPcƒ#Ê @   …?d Qc! B… @   †?d PQc£1U[ @   ‡?d QcÕ£ê® @  €ˆ?d ÐQcW2ýp @   €‰?d Rc¸˜° @   €Š?d PRc: §È @   €‹?d Rc›7ð$ @   €Œ?d ÐRc¦çú @   €?d Sc»†µ @  €Ž?d PSc9‘‘k @  €?d ScõÝ; @  €?d ÐScA$Êå @  €‘?d Tc*„ÔM @  €’?d PTc¨Ó @  €“?d Tc +” @  €”?d ÐTc‹ºƒ¡ @  €•?d Uc)âî @  €–?d PUc«õ0 @  €—?d Uc™Xål @  €˜?d ÐUcÉò² @  €™?d Vcôc¿Ô @  €š?d PVcvò¨  @  €›?d Vc×Ìÿæ @  €œ?d ÐVcU]è8 @  €?d Wc÷û‰w @  €ž?d PWcujž© @  €Ÿ?d WcÿÌ• @   € ?d ÐWcnÛK @  !€¡?d XcǺñ @  "€¢?d PXcEî­/ @  #€£?d XcäÐúà @  $€¤?d ÐXcfAí @  %€¥?d YcÄçŒR @  &€¦?d PYcFv›Œ @  '€§?d Yct£‹Ð @  (€¨?d ÐYcö2œ @  )€©?d Zc˜Ñh @  *€ª?d PZc› ƶ @  +€«?d Zc:7‘Z @  ,€¬?d ÐZc¸¦†„ @  -€­?d [cçË @  .€®?d P[c˜‘ð @  /€¯?d [cbµ¼E @  0€°?d Ð[cà$«› @  1€±?d \c‹„µ3 @  2€²?d P\c ¢í @  3€³?d \c¨+õ @  4€´?d Ð\c*ºâß @  5€µ?d ]cˆƒ @  6€¶?d P]c ”N @  7€·?d ]c8X„ @  8€¸?d Ð]cºÉ“Ì @  9€¹?d ^cUcÞª @  :€º?d P^c×òÉt @  ;€»?d ^cvÌž˜ @  <€¼?d Ð^cô]‰F @  =€½?d _cVûè  @  >€¾?d P_cÔjÿ× @  ?€¿?d _cü¨¾h @  uÐ`c@€À?d Ð_c~9©¶ @  A€Á?d (`c²/ñ‰ @  B€Â?d h`c0¾æW @  C€Ã?d ¨`c‘€±» @  D€Ä?d è`c¦e @  E€Å?d (ac±·Ç* @  F€Æ?d hac3&Ðô @  G€Ç?d ¨acóÀ¨ @  H€È?d èacƒb×v @  I€É?d (bclÈš @  J€Ê?d hbcîYÎ @  K€Ë?d ¨bcOgÚ" @  L€Ì?d èbcÍöÍü @  M€Í?d (ccoP¬³ @  N€Î?d hccíÁ»m @  O€Ï?d ¨ccå÷= @  P€Ð?d ècc•tàã @  Q€Ñ?d (dcþÔþK @  R€Ò?d hdc|Eé• @  S€Ó?d ¨dcÝ{¾y @  T€Ô?d èdc_ê©§ @  U€Õ?d (ecýLÈè @  V€Ö?d hecÝß6 @  W€×?d ¨ecMÏj @  X€Ø?d èecϙش @  Y€Ù?d (fc 3•Ò @  Z€Ú?d hfc¢¢‚  @  [€Û?d ¨fcœÕà @  \€Ü?d èfc Â> @  ]€Ý?d (gc#«£q @  ^€Þ?d hgc¡:´¯ @  _€ß?d ¨gcׯæ“ @  `€à?d ègcU>ñM @  a€á?d (hc/÷ @  b€â?d hhc‘¾‡) @  c€ã?d ¨hc0€ÐÅ @  d€ä?d èhc²Ç @  e€å?d (ic·¦T @  f€æ?d hic’&±Š @  g€ç?d ¨ic ó¡Ö @  h€è?d èic"b¶ @  i€é?d (jcÍÈûn @  j€ê?d hjcOYì° @  k€ë?d ¨jcîg»\ @  l€ì?d èjclö¬‚ @  m€í?d (kcÎPÍÍ @  n€î?d hkcLÁÚ @  o€ï?d ¨kc¶å–C @  p€ð?d èkc4t @  q€ñ?d (lc_ÔŸ5 @  r€ò?d hlcÝEˆë @  s€ó?d ¨lc|{ß @  t€ô?d èlcþêÈÙ @  u€õ?d (mc\L©– @  v€ö?d hmcÞݾH @  w€÷?d ¨mcì® @  x€ø?d èmcn™¹Ê @  y€ù?d (nc3ô¬ @  z€ú?d hnc¢ãr @  {€û?d ¨nc¢œ´ž @  |€ü?d ènc £@ @  }€ý?d (oc‚«Â @  ~€þ?d hoc:ÕÑ @  €ÿ?d ¨ocPŠƒq @  €€?d èocÒ”¯ @  €?d (pc+ź @  ‚€?d hpcœºÒd @  ƒ€?d ¨pc=„…ˆ @  „€?d èpc¿’V @  …€?d (qc³ó @  †€?d hqcŸ"äÇ @  ‡€?d ¨qc­÷ô› @  ˆ€?d èqc/fãE @  ‰€ ?d (rcÀÌ®# @  Š€ ?d hrcB]¹ý @  ‹€ ?d ¨rcãcî @  Œ€ ?d èrcaòùÏ @  € ?d (scÃT˜€ @  Ž€?d hscAÅ^ @  €?d ¨sc»áà @  €?d èsc9pÔÐ @  ‘€?d (tcRÐÊx @  ’€?d htcÐAݦ @  “€?d ¨tcqŠJ @  ”€?d ètcóî” @  •€?d (ucQHüÛ @  –€?d hucÓÙë @  —€?d ¨ucá ûY @  ˜€?d èuccì‡ @  ™€?d (vcŒ7¡á @  š€?d hvc¦¶? @  ›€?d ¨vc¯˜áÓ @  œ€?d èvc- ö  @  €?d (wc¯—B @  ž€?d hwc >€œ @  Ÿ€?d ¨wc{«Ò  @   € ?d èwcù:Å~ @  ¡€!?d (xc¿+¤Ä @  ¢€"?d hxc=º³ @  £€#?d ¨xcœ„äö @  ¤€$?d èxcó( @  ¥€%?d (yc¼³’g @  ¦€&?d hyc>"…¹ @  §€'?d ¨yc ÷•å @  ¨€(?d èycŽf‚; @  ©€)?d (zcaÌÏ] @  ª€*?d hzcã]؃ @  «€+?d ¨zcBco @  ¬€,?d èzcÀò˜± @  ­€-?d ({cbTùþ @  ®€.?d h{càÅî  @  ¯€/?d ¨{cá¢p @  °€0?d è{c˜pµ® @  ±€1?d (|cóЫ @  ²€2?d h|cqA¼Ø @  ³€3?d ¨|cÐë4 @  ´€4?d è|cRîüê @  µ€5?d (}cðH¥ @  ¶€6?d h}crÙŠ{ @  ·€7?d ¨}c@ š' @  ¸€8?d è}cÂù @  ¹€9?d (~c-7ÀŸ @  º€:?d h~c¯¦×A @  »€;?d ¨~c˜€­ @  ¼€<?d è~cŒ —s @  ½€=?d (c.¯ö< @  ¾€>?d hc¬>áâ @  ¿€??d ¨cuЀc'„ü ] @  À€@?d ècm·ƒ @  Á€A?d @€c=¸P @  €B?d €€c:Ⱥ® @  ÀC?d À€c9’øb @  Ä€D?d céÚtŠ @  Å€E?d @c¥Žó @  Æ€F?d €c9PŒ  @  Ç€G?d Àc©á‰q @  È€H?d ‚c4¥)° @  É€I?d @‚cÄÚÓÉ @  Ê€J?d €‚cä/Ñ7 @  Ë€K?d À‚cçu“û @  Ì€L?d ƒc7= @  Í€M?d @ƒcÇBåj @  ΀N?d €ƒcç·ç” @  Ï€O?d Àƒc¿÷¾ä @  ЀP?d „c¦¹Më @  Ñ€Q?d @„cVÆ·’ @  Ò€R?d €„cv3µl @  Ó€S?d À„cui÷  @  Ô€T?d …c¥!{H @  Õ€U?d @…cU^1 @  Ö€V?d €…cu«ƒÏ @  ×€W?d À…c决 @  Ø€X?d †cx^&r @  Ù€Y?d @†cˆ!Ü  @  Ú€Z?d €†c¨ÔÞõ @  Û€[?d À†c«Žœ9 @  Ü€\?d ‡c{ÆÑ @  Ý€]?d @‡c‹¹ê¨ @  Þ€^?d €‡c«LèV @  ߀_?d À‡c½¯J @  à€`?d ˆcKB#W @  á€a?d @ˆc»=Ù. @  â€b?d€ €ˆcï Çv @  €c?d Àˆc Í“ @  €d?d ‰cÝXA{ @  €e?d @‰cèn@ï @  €f?d €‰cÈ›B @  €g?d À‰c–˜ @  €h?d Šc ܸÖ @  €i?d @Šc5Õ @  €j?d €Šcä+ @   €k?d ÀŠcÓ÷¦  @   €l?d ‹c¿*â @   €m?d @‹c6‰+v @   €n?d €‹c|)ˆ @   €o?d À‹c-/b @  €p?d Œc4aâm @  €q?d @Œc§ yŽ @  €r?d €Œc‡ø{p @  €s?d ÀŒcAëÂQ @  €t?d c‘£N¹ @  €u?d @c¤•O- @  €v?d €c„`MÓ @  €w?d ÀcÚcÕ @  €x?d ŽcG'· @  €y?d @Žcyê @  €z?d €ŽcYé @  €{?d ÀŽcŸ ©È @  €|?d cOD%  @  €}?d @czr$´ @  €~?d €cZ‡&J @  €?d Àcõfÿ @  €€?d c¯+ÚM @  €?d @c-Af @   €‚?d €c ´dà @  !€ƒ?d Àc˧ÝÁ @  "€„?d ‘cïQ) @  #€…?d @‘c.ÙP½ @  $€†?d €‘c,RC @  %€‡?d À‘cP/E @  &€ˆ?d ’cÍk¨„ @  '€‰?d @’có¦ ‡ @  (€Š?d €’cÓSy @  )€‹?d À’c@¶X @  *€Œ?d “cÅ:° @  +€?d @“cð>;$ @  ,€Ž?d €“cÐË9Ú @  -€?d À“cë˜0 @  .€?d ”còÖò? @  /€‘?d @”caºiÜ @  0€’?d €”cAOk" @  1€“?d À”c‡\Ò @  2€”?d •cW^ë @  3€•?d @•cb"_ @  4€–?d €•cB×] @  5€—?d À•cÔ‡ @  6€˜?d –c§F @  7€™?d @–c¿]E @  8€š?d €–cŸ¨» @  9€›?d À–cY»¹š @  :€œ?d —c‰ó5r @  ;€?d @—c¼Å4æ @  <€ž?d €—cœ06 @  =€Ÿ?d À—c:Ô7. @  >€ ?d ˜c+»3 @  ?€¡?d @˜c"Fò @  @€¢?d €˜c³  @  A€£?d À˜cÄ º- @  B€¤?d ™cè6Å @  C€¥?d @™c!Þ7Q @  D€¦?d €™c+5¯ @  E€§?d À™c_(o© @  F€¨?d šcÂlÏh @  G€©?d @šcü¡jk @  H€ª?d €šcÜTh• @  I€«?d ÀšcGÑ´ @  J€¬?d ›cÊ]\ @  K€­?d @›cÿ9\È @  L€®?d €›cßÌ^6 @  M€¯?d À›cäŸfÜ @  N€°?d œcýÑ•Ó @  O€±?d @œcn½0 @  P€²?d €œcNH Î @  Q€³?d Àœcˆ[µï @  R€´?d cX9 @  S€µ?d @cm%8“ @  T€¶?d €cMÐ:m @  U€·?d ÀcÓ`k @  V€¸?d žcŽ—Àª @  W€¹?d @žc°Ze© @  X€º?d €žc¯gW @  Y€»?d ÀžcV¼Þv @  Z€¼?d Ÿc†ôRž @  [€½?d @Ÿc³ÂS  @  \€¾?d €Ÿc“7Qô @  ]€¿uРc?d ÀŸcŃEÓ @  ^€À?d  cÉèÉ @  _Á?d X cKbTš @  `Â?d ˜ ck—Vd @  aÃ?d Ø c­„ïE @  bÄ?d ¡c}Ìc­ @  cÅ?d X¡cHúb9 @  dÆ?d ˜¡ch`Ç @  eÇ?d Ø¡c6 :Á @  fÈ?d ¢c«Hš @  gÉ?d X¢c•…? @  hÊ?d ˜¢cµp=ý @  iË?d Ø¢csc„Ü @  jÌ?d £c£+4 @  kÍ?d X£c–   @  lÎ?d ˜£c¶è ^ @  mÏ?d Ø£c»3´ @  nÐ?d ¤c”õÀ» @  oÑ?d X¤c™[X @  pÒ?d ˜¤c'lY¦ @  qÓ?d ؤcáà‡ @  rÔ?d ¥c17lo @  sÕ?d X¥cmû @  tÖ?d ˜¥c$ôo @  u×?d Ø¥cz÷5 @  vØ?d ¦c糕 @  wÙ?d X¦cÙ~0Á @  xÚ?d ˜¦cù‹2? @  yÛ?d ئc?˜‹ @  zÜ?d §cïÐö @  {Ý?d X§cÚæb @  |Þ?d ˜§cúœ @  }ß?d اc\÷ª @  ~à?d ¨ch‰· @  á?d X¨c§3G @  €â?d ˜¨c‡Æ¹ @  ã?d بcAÕ¸˜ @  ‚ä?d ©c‘4p @  ƒå?d X©c¤«5ä @  „æ?d ˜©c„^7 @  …ç?d Ø©cÚ]m @  †è?d ªcGÍÝ @  ‡é?d XªcyÔhÞ @  ˆê?d ˜ªcY!j  @  ‰ë?d تcŸ2Ó @  Šì?d «cOz_é @  ‹í?d X«czL^} @  Œî?d ˜«cZ¹\ƒ @  ï?d Ø«caêdi @  Žð?d ¬cx¤—f @  ñ?d X¬cëÈ … @  ò?d ˜¬cË={ @  ‘ó?d جc .·Z @  ’ô?d ­cÝf;² @  “õ?d X­cèP:& @  ”ö?d ˜­cÈ¥8Ø @  •÷?d Ø­c–¦bÞ @  –ø?d ®c â @  —ù?d X®c5/g @  ˜ú?d ˜®cÚeâ @  ™û?d Ø®cÓÉÜà @  šü?d ¯cP+ @  ›ý?d X¯c6·Q¿ @  œþ?d ˜¯cBSA @  ÿ?d دc"WFø @  ž?d °cœ‰úJ @  Ÿ?d X°cãF @   ?d ˜°c>Dç @  ¡?d ذcøýÆ @  ¢?d ±c(Mq. @  £?d X±c{pº @  ¤?d ˜±c=ŽrD @  ¥?d رcc(B @  ¦?d ²cþɈƒ @  § ?d X²cÀ-€ @  ¨ ?d ˜²càñ/~ @  © ?d زc&â–_ @  ª ?d ³cöª· @  « ?d X³cÜ# @  ¬?d ˜³cãiÝ @  ­?d سcØ:!7 @  ®?d ´cÁtÒ8 @  ¯?d X´cRIÛ @  °?d ˜´críK% @  ±?d Ø´c´þò @  ²?d µcd¶~ì @  ³?d XµcQ€x @  ´?d ˜µcqu}† @  µ?d صc/v'€ @  ¶?d ¶c²2‡A @  ·?d X¶cŒÿ"B @  ¸?d ˜¶c¬ ¼ @  ¹?d ضcj™ @  º?d ·cºQu @  »?d X·cgá @  ¼?d ˜·c¯’ @  ½?d Ø·c v) @  ¾ ?d ¸c=‰›4 @  ¿!?d X¸cä!õ @  À"?d ˜¸c1#  @  Á#?d ظc÷š* @  Â$?d ¹cZÊe¾ @  À%?d X¹coüd* @  Ä€&?d ˜¹cO fÔ @  Å€'?d عc <Ò @  Æ€(?d ºcŒNœ @  Ç€)?d Xºc²ƒ9 @  È€*?d ˜ºc’v;î @  É€+?d غcTe‚Ï @  Ê€,?d »c„-' @  Ë€-?d X»c±³ @  Ì€.?d ˜»c‘î M @  Í€/?d Ø»cª½5§ @  ΀0?d ¼c³óƨ @  Ï€1?d X¼c Ÿ]K @  Ѐ2?d ˜¼cj_µ @  Ñ€3?d ؼcÆyæ” @  Ò€4?d ½c1j| @  Ó€5?d X½c#kè @  Ô€6?d ˜½còi @  Õ€7?d ؽc]ñ3 @  Ö€8?d ¾cÀµ“Ñ @  ×€9?d X¾cþx6Ò @  Ø€:?d ˜¾cÞ4, @  Ù€;?d ؾcž  @  Ú€<?d ¿cÈÖå @  Û€=?d X¿cýàq @  Ü€>?d ˜¿cÝ @uÐÀc  Ý€??d Ø¿c‹¡¨ @  Þ€@?d 0ÀcïQGú @  ߀A?d pÀcm;û© @  à€B?d °ÀcMÎùW @  á€C?d ðÀc‹Ý@v @  â€D?d€ 0ÁcšÒ;ž @  €E?d pÁcN¥r# @  €F?d °ÁcnPpÝ @  €G?d ðÁcõÑ6 @  €H?d 0Âch^q÷ @  €I?d pÂc˜!‹Ž @  €J?d °Âc¸Ô‰p @  €K?d ðÂc°uo+ @  €L?d 0Ãc`=ãà @   €M?d pÃcBº @   €N?d °Ãc°·D @   €O?d ðÃcN­ØC @   €P?d 0ÄcWã+L @   €Q?d pÄc§œÑ5 @  €R?d °Äc‡iÓË @  €S?d ðÄc"i p @  €T?d 0Åcò!‡˜ @  €U?d pÅc^}á @  €V?d °Åc"« @  €W?d ðÅc¹áÞô @  €X?d 0Æc$¥~5 @  €Y?d pÆcÔÚ„L @  €Z?d °Æcô/†² @  €[?d ðÆcüŽ`é @  €\?d 0Çc,Æì @  €]?d pÇcܹx @  €^?d °ÇcüL† @  €_?d ðÇcŸáî] @  €`?d 0Èc«b@ @  €a?d pÈc[a˜9 @  €b?d °Èc{”šÇ @  €c?d ðÈcÏ’eÌ @   €d?d 0ÉcÚé$ @  !€e?d pÉcï¥] @  "€f?d °ÉcÏP£ @  #€g?d ðÉcT°H @  $€h?d 0ÊcÉ^‰ @  %€i?d pÊcD¡™Œ @  &j?d °ÊcdT›r @  'k?d ðÊclõ}) @  (l?d 0Ëc¼½ñÁ @  )m?d pËcL ¸ @  *n?d °Ëcl7 F @  +o?d ðËc’-ÊA @  ,p?d 0Ìc‹c9N @  -q?d pÌc{Ã7 @  .r?d °Ìc[éÁÉ @  /s?d ðÌcþér @  0t?d 0Íc.¡•š @  1u?d pÍcÞÞoã @  2v?d °Ícþ+m @  3w?d ðÍceaÌö @  4x?d 0Îcø%l7 @  5y?d pÎcZ–N @  6z?d °Îc(¯”° @  7{?d ðÎc rë @  8|?d 0ÏcðFþ @  9}?d pÏc9z @  :~?d °Ïc Ì„ @  ;?d ðÏc®÷½Ü @  <€?d 0Ðc)n @  =?d pÐcàVû @  >‚?d °ÐcÀ£ùé @  ?ƒ?d ðÐcÚ¢p @  @„?d 0Ñc ꌘ @  A…?d pÑcú•vá @  B†?d °ÑcÚ`t @  C‡?d ðÑcA*Õô @  Dˆ?d 0ÒcÜnu5 @  E‰?d pÒc,L @  FŠ?d °Òc ä² @  G‹?d ðÒcEké @  HŒ?d 0ÓcÔ ç @  I?d pÓc$rx @  JŽ?d °Óc‡† @  K?d ðÓcúÜ @  L?d 0ÔcãÓ/Ž @  M‘?d pÔc¬Õ÷ @  N’?d °Ôc3Y×  @  O“?d ðÔc–Y² @  P”?d 0ÕcFƒZ @  Q•?d pÕc¶ny# @  R–?d °Õc–›{Ý @  S—?d ðÕc ÑÚ6 @  T˜?d 0Öc•z÷ @  U™?d pÖc`ꀎ @  Vš?d °Öc@‚p @  W›?d ðÖcH¾d+ @  Xœ?d 0×c˜öèà @  Y?d p×ch‰º @  Zž?d °×cH|D @  [Ÿ?d ð×c+ÑêŸ @  \ ?d 0Øc.f‚ @  ]¡?d pØcïQœû @  ^¢?d °ØcϤž @  _£?d ðØc{¢a @  `¤?d 0Ùc«êíæ @  a¥?d pÙc[•Ÿ @  b¦?d °Ùc{`a @  c§?d ðÙcà*´Š @  d¨?d 0Úc}nK @  e©?d pÚcî2 @  fª?d °Úc­äìÌ @  g«?d ðÚc¥E — @  h¬?d 0Ûcu † @  i­?d pÛc…r| @  j®?d °Ûc¥‡~ø @  k¯?d ðÛc[½ÿ @  l°?d 0ÜcBÓNð @  m±?d pÜc²¬´‰ @  n²?d °Üc’Y¶w @  o³?d ðÜc7YnÌ @  p´?d 0Ýcçâ$ @  qµ?d pÝcn] @  r¶?d °Ýc7›£ @  s·?d ðÝc¬Ñ»H @  t¸?d 0Þc1•‰ @  u¹?d pÞcÁêáð @  vº?d °Þcáã @  w»?d ðÞcé¾U @  x¼?d 0ßc9ö‰½ @  y½?d pßcɉsÄ @  z¾?d uÐàc/°ßcé|q: @  {¿?d ðßczžð @  |À?d Hàcc%À @  }Á?d ˆàc1>/_ @  ~Â?d Èàc³¯8 @  Ã?d ác!j @  €Ä?d Hácš°}Á @  Å?d ˆácÈ«’˜ @  ‚Æ?d ÈácJ:…F @  ƒÇ?d âcÎ¥“² @  „È?d HâcL4„l @  …É?d ˆâc/k5 @  †Ê?d Èâcœ¾|ë @  ‡Ë?d ãcÆÆ† @  ˆÌ?d HãcDWX @  ‰Í?d ˆãcLù @  ŠÎ?d Èãc”Ýîß @  ‹Ï?d äcñÉ  @  ŒÐ?d Häcs‰Þ× @  Ñ?d ˆäc!’1Ž @  ŽÒ?d Èäc£&P @  Ó?d åcTÚeÝ @  Ô?d HåcÖKr @  ‘Õ?d ˆåc„PZ @  ’Ö?d ÈåcÁŠ„ @  “×?d æc‚^œp @  ”Ø?d HæcÏ‹® @  •Ù?d ˆæcRÔd÷ @  –Ú?d ÈæcÐEs) @  —Û?d çcŠ=D @  ˜Ü?d Hçc¬š @  ™Ý?d ˆçcZ·öà @  šÞ?d ÈçcØ&á @  ›ß?d èc å€ @  œà?d Hèct—Û @  á?d ˆècÝox‚ @  žâ?d Èèc_þo\ @  Ÿã?d éc¹! a @   ä?d Héc;°¿ @  ¡å?d ˆéci«óæ @  ¢æ?d Èécë:ä8 @  £ç?d êco¥òÌ @  ¤è?d Hêcí4å @  ¥é?d ˆêc¿/ K @  ¦ê?d Èêc=¾• @  §ë?d ëcgÆ`ø @  ¨ì?d HëcåWw& @  ©í?d ˆëc·L˜ @  ªî?d Èëc5Ý¡ @  «ï?d ìcP¨w @  ¬ð?d HìcÒ‰¿© @  ­ñ?d ˆìc€’Pð @  ®ò?d ÈìcG. @  ¯ó?d ícõÚ£ @  °ô?d HícwK} @  ±õ?d ˆíc%Pü$ @  ²ö?d Èíc§Áëú @  ³÷?d îc#^ý @  ´ø?d Hîc¡ÏêÐ @  µù?d ˆîcóÔ‰ @  ¶ú?d ÈîcqEW @  ·û?d ïc+=o: @  ¸ü?d Hïc©¬xä @  ¹ý?d ˆïcû·—½ @  ºþ?d Èïcy&€c @  »ÿ?d ðcð~ @  ¼?d Hðc„†ç  @  ½?d ˆðcÖù @  ¾?d ÈðcT ' @  ¿?d ñcÔ}ˆ @  À?d HñcžEjV @  Á?d ˆñcÌ^… @  Â?d ÈñcNÏ’Ñ @  Ã?d òcÊP„% @  Ä?d HòcHÁ“û @  Å ?d ˆòcÚ|¢ @  Æ ?d Èòc˜Kk| @  Ç ?d ócÂ3 @  È ?d Hóc@¢Ï @  É ?d ˆóc¹î– @  Ê?d Èóc(ùH @  Ë?d ôcõíÞž @  Ì?d Hôcw|É@ @  Í?d ˆôc%g& @  Î?d Èôc§ö1Ç @  Ï?d õcP/rJ @  Ð?d HõcÒ¾e” @  Ñ?d ˆõc€¥ŠÍ @  Ò?d Èõc4 @  Ó?d öc†«‹ç @  Ô?d Höc:œ9 @  Õ?d ˆöcV!s` @  Ö?d ÈöcÔ°d¾ @  ×?d ÷cŽÈÓ @  Ø?d H÷c Y  @  Ù?d ˆ÷c^BáT @  Ú?d È÷cÜÓöŠ @  Û?d øc —’ @  Ü ?d Høc‹€L @  Ý!?d ˆøcÙšo @  Þ"?d Èøc[ xË @  ß#?d ùc½Ôö @  à$?d Hùc?E ( @  á%?d ˆùcm^äq @  â&?d€ Èùc› ï  @  '?d úcþÒ±Ô @  (?d Húc|C¦  @  )?d ˆúcë²¾ @  *?d Èúci€¥` @  +?d ûcýJ‡w @  ,?d HûcÛ© @  -?d ˆûcãr Š @  .?d Èûcaã7T @   /?d ücÁoëo @   0?d HücCþü± @   1?d ˆücÔ¬è @   2?d ÈücV=ÿÛ @   3?d ýcÂ÷ÝÌ @  4?d Hýc@fÊ @  5?d ˆýcqnDÑ @  6?d ÈýcóÿS @  7?d þc²)¾ @  8?d Hþc0¸©È @  9?d ˆþc§ê½| @  :?d Èþc%{ª¢ @  ;?d ÿc±±ˆµ @  <?d Hÿc3 Ÿk @  =?d ˆÿc¯‰/H @  uÐd>?d ÈÿcP˜Kê @  €??d d±{Z @  €@?d `d3êMS @  €A?d  d¤¸Yç @  €B?d àd&)N9 @  €C?d d²ãl. @  €D?d `d0r{ð @  €E?d  d|Òƒ @   €F?d àd’íÅ] @  !€G?d dÓ;(D @  "€H?d `dQª?š @  #€I?d  dÆø+. @  $€J?d àdDi<ð @  %€K?d dУç @  &€L?d `dR2 9 @  '€M?d  dΛ¹ @  (€N?d àdL ®Ä @  )€O?d dì†rÿ @  *€P?d `dne! @  +€Q?d  dùEq• @  ,€R?d àd{ÔfK @  -€S?d dïD\ @  .€T?d `dmS‚ @  /€U?d  d\‡ÝA @  0€V?d àdÞÊŸ @  1€W?d dŸÀ'† @  2€X?d `dQ0X @  3€Y?d  dŠ$ì @  4€Z?d àd’32 @  5€[?d dœX% @  6€\?d `dÉû @  7€]?d  d‚`¶Ø @  8€^?d àdñ¡ @  9€_?d d{;ó @  :€`?d `d’ê,- @  ;€a?d  d¸8™ @  <€b?d àd‡)/G @  =€c?d dã P @  >€d?d ` d‘rŽ @  ?€e?d   d{µo @  @€f?d à dꢱ @  A€g?d dÜ @  €§?d döÚ' @  ‚€¨?d `dtKù @  ƒ€©?d  dã M @  „€ª?d àdaˆ“ @  …€«?d dõB>„ @  †€¬?d `dwÓ)Z @  ‡€­?d  dëz™y @  ˆ€®?d àdi뎧 @  ‰€¯?d dÉgRœ @  Š€°?d `dKöEB @  ‹€±?d  dܤQö @  Œ€²?d àd^5F( @  €³?d dÊÿd? @  Ž€´?d `dHnsá @  €µ?d  dyfý" @  €¶?d àdû÷êü @  ‘€·?d dº!å @  ’€¸?d `d8°; @  “€¹?d  d¯â @  ”€º?d àd-sQ @  •€»?d d¹¹1F @  –€¼?d `d;(&˜ @  —€½?d  d§–»uÐ d @  ˜€¾?d àdXò @  ™¿?d 8 dý¾/† @  šÀ?d x d/8X @  ›Á?d ¸ dè},ì @  œÂ?d ø djì;2 @  Ã?d 8!dþ&% @  žÄ?d x!d|·û @  ŸÅ?d ¸!d\¹§ˆ @   Æ?d ø!dÞ(°V @  ¡Ç?d 8"dŸþ]O @  ¢È?d x"doJ‘ @  £É?d ¸"dŠ=^% @  ¤Ê?d ø"d¬Iû @  ¥Ë?d 8#dœfkì @  ¦Ì?d x#d÷|2 @  §Í?d ¸#d‚^Ì @  ¨Î?d ø#dÏÛÏ @  ©Ï?d 8$d Cô @  ªÐ?d x$d"Ò* @  «Ñ?d ¸$dµ€ž @  ¬Ò?d ø$d7@ @  ­Ó?d 8%d£Û1W @  ®Ô?d x%d!J&‰ @  ¯Õ?d ¸%dB¨J @  °Ö?d ø%d’Ó¿” @  ±×?d 8&dÓR @  ²Ø?d x&dQ”ES @  ³Ù?d ¸&dÆÆQç @  ´Ú?d ø&dDWF9 @  µÛ?d 8'dÐd. @  ¶Ü?d x'dR sð @  ·Ý?d ¸'dÎ¥ÃÓ @  ¸Þ?d ø'dL4Ô  @  ¹ß?d 8(d\¾Nø @  ºà?d x(dÞ/Y& @  »á?d ¸(dI}M’ @  ¼â?d ø(dËìZL @  ½ã?d 8)d_&x[ @  ¾ä?d x)dÝ·o… @  ¿å?d ¸)dS¾Àd @  Àæ?d ø)dÑ/׺ @  Áç?d 8*dù:£ @  Âè?d x*dh-} @  Ãé?d ¸*d…:9É @  Äê?d ø*d«. @  Åë?d 8+d“a  @  Æì?d x+dðÞ @  Çí?d ¸+dY«ý @  Èî?d ø+dȼ# @  Éï?d 8,d¯D` @  Êð?d x,d-ÕwÆ @  Ëñ?d ¸,dº‡cr @  Ìò?d ø,d8t¬ @  Íó?d 8-d¬ÜV» @  Îô?d x-d.MAe @  Ïõ?d ¸-dEϦ @  Ðö?d ø-dÔØx @  Ñ÷?d 8.dÜ5a @  Òø?d x.d^“"¿ @  Óù?d ¸.dÉÁ6  @  Ôú?d ø.dKP!Õ @  Õû?d 8/dߚ @  Öü?d x/d]  @  ×ý?d ¸/dÁ¢¤? @  Øþ?d ø/dC3³á @  Ùÿ?d 80dKi 4 @  Ú?d x0dÉøê @  Û?d ¸0d^ª^ @  Ü?d ø0dÜ;€ @  Ý?d 81dHñ;— @  Þ?d x1dÊ`,I @  ß?d ¸1dên…: @  à?d ø1dhÿ’ä @  á?d 82d))ý @  â?d€ x2d-îÀš @   ?d ¸2d[ýœ @   ?d ø2dÙl‹Ù @   ?d 83dˆïR# @   ?d x3d ~Eý @   ?d ¸3dXeª¤ @  ?d ø3dÚô½z @  ?d 84d´Ê>; @  ?d x4d6[)å @   ?d ¸4dd@Ƽ @   ?d ø4dæÑÑb @   ?d 85d·R˜ @   ?d x5d5ÃF @   ?d ¸5dgØð @  ?d ø5dåIçÁ @  ?d 86dÇŒkB @  ?d x6dE|œ @  ?d ¸6d“Å @  ?d ø6d•—„ @  ?d 87dÄ]á @  ?d x7dF…J? @  ?d ¸7dž¥f @  ?d ø7d–²¸ @  ?d 88dH7w7 @   ?d x8dʦ`é @  !?d ¸8d˜½° @  "?d ø8d,˜n @  #?d 89dK¯A” @  $?d x9dÉ>VJ @  %?d ¸9d›%¹ @  &?d ø9d´®Í @  '?d 8:d*wþ @   (?d x:d¨æ  @  !)?d ¸:dúýýy @  "*?d ø:dxlê§ @  #+?d 8;d)ï3] @  $,?d x;d«~$ƒ @  %-?d ¸;dùeËÚ @  &.?d ø;d{ôÜ @  '/?d 8dfŒ < @  08?d x>däâ @  19?d ¸>d¶ò» @  2:?d ø>d4—åe @  3;?d 8?de<Ÿ @  4<?d x?dç…+A @  5=?duÐ@d7 ¸?dµžÄ @  6>?d ø?dJ º @  7€??d P@d“´F @  8€@?d @d³ADû @  9€A?d Ð@dC>¾‚ @  :€B?d Ad“v2j @  ;€C?d PAd,p¦ @  <€D?d Ad°ÙrX @  =€E?d ÐAd@¦ˆ! @  >€F?d BdÝâ(à @  ?€G?d PBd_ó2^ @  @€H?d Bd0  @  A€I?d ÐBdyÊÙ @  B€J?d Cd_1F1 @  C€K?d PCd\ký @  D€L?d Cd|ž @  E€M?d ÐCdŒáüz @  F€N?d Dd•¯u @  G€O?d PDd`Nhå @  H€P?d Dd@»j @  I€Q?d ÐDd°Äb @  J€R?d Ed`ŒŠ @  K€S?d PEdcÖ^F @  L€T?d EdC#\¸ @  M€U?d ÐEd³\¦Á @  N€V?d Fd. @  O€W?d PFd=œ @  P€X?d Fd3ý?b @  Q€Y?d ÐFdÂÅ @  R€Z?d GdÊIó @  S€[?d PGd ? @  T€\?d Gd0e Á @  U€]?d ÐGdÀó¸ @  V€^?d Hdôå¥ @  W€_?d PHdœ³!é @  X€`?d Hd¼F# @  Y€a?d ÐHdL9Ùn @  Z€b?d IdœqU† @  [€c?d PIdŸ+J @  \€d?d Id¿Þ´ @  ]€e?d ÐIdO¡ïÍ @  ^€f?d JdÒåO  @  _€g?d PJdþóS  @  `€h?d JdÞQÞ @  a€i?d ÐJd.y«§ @  b€j?d Kdþ1'O @  c€k?d PKdýkeƒ @  d€l?d KdÝžg} @  e€m?d ÐKd-á @  f€n?d Ld4¯n  @  g€o?d PLdÁN › @  h€p?d Ldá» e @  i€q?d ÐLdÄñ @  j€r?d MdÁŒ}ô @  k€s?d PMdÂÖ?8 @  l€t?d Mdâ#=Æ @  m€u?d ÐMd\Ç¿ @  n€v?d Ndg~ @  o€w?d PNd²\â @  p€x?d Nd’ý^ @  q€y?d ÐNdb‚¤e @  r€z?d Od²Ê( @  s€{?d POd±jA @  t€|?d Od‘eh¿ @  u€}?d ÐOda’Æ @  v€~?d PdßÄ.t @  w€?d PPdZ1» @  x€€?d Pdzñ3E @  y€?d ÐPdŠŽÉ< @  z€‚?d QdZÆEÔ @  {€ƒ?d PQdYœ @  |€„?d Qdyiæ @  }€…?d ÐQd‰ÿŸ @  ~€†?d RdR_^ @  €‡?d PRduuÑ @  €€ˆ?d RdUàw/ @  €‰?d ÐRd¥ŸV @  ‚€Š?d Sdu×¾ @  ƒ€‹?d PSdvCr @  „€Œ?d SdVxAŒ @  …€?d ÐSd¦»õ @  †€Ž?d Td¿IHú @  ‡€?d PTdJ¨/j @  ˆ€?d Tdj]-” @  ‰€‘?d ÐTdš"×í @  Š€’?d UdJj[ @  ‹€“?d PUdI0É @  Œ€”?d UdiÅ7 @  €•?d ÐUd™ºáN @  Ž€–?d VdþA @  €—?d PVd9îz @  €˜?d Vdxí @  ‘€™?d ÐVdéd‚” @  ’€š?d Wd9,| @  “€›?d PWd:vL° @  ”€œ?d WdƒNN @  •€?d ÐWdêü´7 @  –€ž?d XdÞ8* @  —€Ÿ?d PXd¶Uff @  ˜€ ?d Xd– d˜ @  ™€¡?d ÐXdfßžá @  š€¢?d Yd¶—  @  ›€£?d PYdµÍPÅ @  œ€¤?d Yd•8R; @  €¥?d ÐYdeG¨B @  ž€¦?d Zdøƒ @  Ÿ€§?d PZdÔ¯ @   €¨?d ZdôàQ @  ¡€©?d ÐZdŸì( @  ¢€ª?d [dÔ×`À @  £€«?d P[d×"  @  ¤€¬?d [d÷x ò @  ¥€­?d Ð[dÚ‹ @  ¦€®?d \dI)„ @  §€¯?d P\dë¨N @  ¨€°?d \dË]Lê @  ©€±?d Ð\d;"¶“ @  ª€²?d ]dëj:{ @  «€³?d P]dè0x· @  ¬€´?d ]dÈÅzI @  ­€µ?d Ð]d8º€0 @  ®€¶?d ^d¥þ ñ @  ¯€·?d P^d˜îm @  °€¸?d ^d¸“ @  ±€¹?d Ð^dHdãê @  ²€º?d _d˜,o @  ³€»?d P_d›v-Î @  ´€¼?d _d»ƒ/0 @  uÐ`dµ€½?d Ð_d»zà @  ¶ ¾?d (`d±CÏx @  · ¿?d h`d)E„% @  ¸ À?d ¨`d °†Û @  ¹ Á?d è`dùÏ|¢ @  º Â?d (ad)‡ðJ @  » Ã?d had*ݲ† @  ¼ Ä?d ¨ad (°x @  ½ Å?d èadúWJ @  ¾ Æ?d (bdgêÀ @  ¿ Ç?d hbdåð~ @  À È?d ¨bdÅ÷ò€ @  Á É?d èbd5ˆù @   Ê?d (cdåÀ„ @  à Ë?d hcdæšÆÝ @  Ä Ì?d ¨cdÆoÄ# @  Å Í?d ècd6>Z @  Æ Î?d (dd/^ÍU @  Ç Ï?d hddÚ¿ªÅ @  È Ð?d ¨ddúJ¨; @  É Ñ?d èdd 5RB @  Ê Ò?d (edÚ}Þª @  Ë Ó?d hedÙ'œf @  Ì Ô?d ¨edùÒž˜ @  Í Õ?d èed ­dá @  Î Ö?d (fd”éÄ  @  Ï ×?d hfd©ùÿ¼ @  Ð Ø?d ¨fd‰ ýB @  Ñ Ù?d èfdys; @  Ò Ú?d (gd©;‹Ó @  Ó Û?d hgdªaÉ @  Ô Ü?d ¨gdŠ”Ëá @  Õ Ý?d ègdzë1˜ @  Ö Þ?d (hdN½… @  × ß?d hhd&BãÉ @  Ø à?d ¨hd·á7 @  Ù á?d èhdöÈN @  Ú â?d (id&€—¦ @  Û ã?d hid%ÚÕj @  Ü ä?d ¨id/×” @  Ý å?d èidõP-í @  Þ æ?d (jdh, @  ß ç?d hjdD‘ @  à è?d ¨jdd÷“þ @  á é?d èjd”ˆi‡ @  â ê?d€ (kd0ùÉ @   ë?d hkdÒó, @   ì?d ¨kdòíñÒ @   í?d èkdÇÛðF @   î?d (ldÞ•I @   ï?d hldåÆ;£ @   ð?d ¨ldÅ39] @   ñ?d èldûþœ^ @   ò?d (md+¶¶ @   ó?d hmdí¥©— @   ô?d ¨mdÍP«i @   õ?d èmdøfªý @   ö?d (nde" < @   ÷?d hnd;!P: @   ø?d ¨ndÔRÄ @   ù?d èndˆ¸É' @   ú?d (odXðEÏ @   û?d hodžãüî @   ü?d ¨od¾þ @   ý?d èod‹ ÿ„ @   þ?d (pd5þC6 @   ÿ?d hpd=âi @   ?d ¨pdkç @   ?d èpd#ÚÎä @   ?d (qdó’B  @   ?d hqd5û- @   ?d ¨qdtùÓ @   ?d èqd BøG @   ?d (rd½X† @   ?d hrd〠@   ?d ¨rdÃð~ @    ?d èrdAš¼- @    ?d (sd‘Ò0Å @  !  ?d hsdWÁ‰ä @  "  ?d ¨sdw4‹ @  #  ?d èsdBŠŽ @  $ ?d (td[Ly @  % ?d htd`Ak @  & ?d ¨td@êC• @  ' ?d ètd~'æ– @  ( ?d (ud®oj~ @  ) ?d hudh|Ó_ @  * ?d ¨udH‰Ñ¡ @  + ?d èud}¿Ð5 @  , ?d (vdàûpô @  - ?d hvd¾ø*ò @  . ?d ¨vdž (  @  / ?d èvd a³ï @  0 ?d (wdÝ)? @  1 ?d hwd:†& @  2 ?d ¨wd;Ï„Ø @  3 ?d èwdù…L @  4 ?d (xd: Q @  5 ?d hxdœâg @  6  ?d ¨xd¼ ™ @  7 !?d èxd‚Ú¯š @  8 "?d (ydR’#r @  9 #?d hyd”šS @  : $?d ¨yd´t˜­ @  ; %?d èydB™9 @  < &?d (zd9ø @  = '?d hzdBcþ @  > (?d ¨zdbða @  ? )?d èzdNÛÁ @  @ *?d ({džÕW) @  A +?d h{dXÆî @  B ,?d ¨{dx3ìö @  C -?d è{dMíb @  D .?d (|dTKm @  E /?d h|do&‡ @  F 0?d ¨|dOí$y @  G 1?d è|dq z @  H 2?d (}d¡h ’ @  I 3?d h}dg{´³ @  J 4?d ¨}dG޶M @  K 5?d è}dr¸·Ù @  L 6?d (~dïü @  M 7?d h~d±ÿM @  N 8?d ¨~d‘ Oà @  O 9?d è~dfÔ @  P :?d (dÒ.Xë @  Q ;?d hd=áÊ @  R <?d ¨duЀd'4Èã4 @  S =?d èdþâ  @  T >?d @€do@Ô @  U ??d €€d›Ó @  V @?d À€d  @  W A?d du(8 @  X B?d @d÷„?æ @  Y C?d €d“ó“ç @  Z D?d Àdb„9 @  [ E?d ‚d;2² @  \ F?d @‚d¹%l @  ] G?d €‚dEwjJ @  ^ H?d À‚dÇæ}” @  _ I?d ƒdUZñ @  ` J?d @ƒd•ÄM/ @  a K?d €ƒdñ³á. @  b L?d Àƒds"öð @  c M?d „dÝ˵ @  d N?d @„d_Zk @  e O?d €„dÆm)¡ @  f P?d À„dDü> @  g Q?d …d(èJ @  h R?d @…dªy” @  i S?d €…dλ• @  j T?d À…dLŸ¬K @  k U?d †df|À @  l V?d @†däí  @  m W?d €†dŠB8 @  n X?d À†dšUæ @  o Y?d ‡d[®U3 @  p Z?d @‡dÙ?Bí @  q [?d €‡d½Hîì @  r \?d À‡d?Ùù2 @  s ]?d ˆd¼ce @  t ^?d @ˆd>t» @  u _?d €ˆd:`­ @  v `?d Àˆd¸ws @  w a?d ‰dÔIF @  x b?d @‰dV„^˜ @  y c?d €‰d2óò™ @  z d?d À‰d°båG @  { e?d ŠdšSÌ @  | f?d @ŠdD @  } g?d €Šdäw 4 @  ~ h?d ÀŠdfæê @   i?d ‹dû , @  € j?d @‹dy•ò @   k?d €‹dâ¶ó @  ‚ l?d À‹dŸs¡- @  ƒ m?d Œd1šDh @  „ n?d @Œd³ S¶ @  … o?d €Œd*<~| @  † p?d ÀŒd¨­i¢ @  ‡ q?d dĹW— @  ˆ r?d @dF(@I @  ‰ s?d €d"_ìH @  Š t?d Àd Îû– @  ‹ u?d ŽdŠ-M @  Œ v?d @Žd¼Zà @   w?d €ŽdôÛå @  Ž x?d ÀŽdvJ; @   y?d d·ÿî @   z?d @d5n0 @  ‘ {?d €dQ¹1 @  ’ |?d ÀdÓˆ®ï @  “ }?d dÚñ @  ” ~?d @dX`É @  • ?d €d±vF\ @  – €?d Àd3çQ‚ @  — ?d ‘d_óo· @  ˜ ‚?d @‘dÝbxi @  ™ ƒ?d €‘d¹Ôh @  š „?d À‘d;„ö @  › …?d ’dgu= @  œ †?d @’d“öbã @   ‡?d €’do‘-Å @  ž ˆ?d À’dí: @  Ÿ ‰?d “d=³~ @    Š?d @“d¿"   @  ¡ ‹?d €“dÛU¦¡ @  ¢ Œ?d À“dYı @  £ ?d ”d÷-T: @  ¤ Ž?d @”du¼Cä @  ¥ ?d €”dì‹n. @  ¦ ?d À”dnyð @  § ‘?d •dGÅ @  ¨ ’?d @•d€ŸP @  © “?d €•däèü @  ª ”?d À•dfyëÄ @  « •?d –dLš]O @  ¬ –?d @–dÎ J‘ @  ­ —?d €–d2l· @  ® ˜?d À–d°ýi @  ¯ ™?d —dqH¼ @  ° š?d @—dóÙb @  ± ›?d €—d—®©c @  ² œ?d À—d?¾½ @  ³ ?d ˜d–g$ê @  ´ ž?d @˜dö34 @  µ Ÿ?d €˜dv'" @  ¶  ?d À˜d’ç0ü @  · ¡?d ™dþóÉ @  ¸ ¢?d @™d|b @  ¹ £?d €™dµ @  º ¤?d À™dš„¢È @  » ¥?d šd°gC @  ¼ ¦?d @šd2ö @  ½ §?d €šdΑL» @  ¾ ¨?d ÀšdL[e @  ¿ ©?d ›d2´z’ @  À ª?d @›d°%mL @  Á «?d €›dÔRÁM @   ¬?d À›dVÃÖ“ @  à ­?d œdø*3Ö @  Ä ®?d @œdz»$ @  Å ¯?d €œd㌠ @  Æ °?d Àœda @  Ç ±?d d ) @  È ²?d @d˜7÷ @  É ³?d €dëï›ö @  Ê ´?d Àdi~Œ( @  Ë µ?d ždC:£ @  Ì ¶?d @ždÁ -} @  Í ·?d €žd=kb[ @  Î ¸?d Àžd¿úu… @  Ï ¹?d Ÿd~OuP @  Ð º?d @ŸdüÞbŽ @  Ñ »?d €Ÿd˜©Î @  Ò ¼uРd?d ÀŸd8ÙQ @  Ó ½?d  dÜ”} @  Ô ¾?d X d^£ @  Õ ¿?d ˜ dªÕ¤ @  Ö À?d Ø d(Dz @  × Á?d ¡dDP.O @  Ø Â?d X¡dÆÁ9‘ @  Ù Ã?d ˜¡d¢¶• @  Ú Ä?d Ø¡d '‚N @  Û Å?d ¢d Ä4Å @  Ü Æ?d X¢dˆU# @  Ý Ç?d ˜¢dt2l= @  Þ È?d Ø¢dö£{ã @  ß É?d £d&\† @  à Ê?d X£d¤KX @  á Ë?d ˜£dÀöçY @  â Ì?d€ Ø£dƒ ‡ @   Í?d ¤d̈ªë @   Î?d X¤dN½5 @   Ï?d ˜¤dgk @   Ð?d ؤdö|Ì @   Ñ?d ¥d2Pƒ @   Ò?d X¥d°Á ] @   Ó?d ˜¥dù& @   Ô?d Ø¥d˜•îø @   Õ?d ¦dw?£ž @   Ö?d X¦dõ®´@ @   ×?d ˜¦dÌ€‹ @   Ø?d ئdNU @   Ù?d §dì·v @   Ú?d X§dn&aÄ @   Û?d ˜§diB¬_ @   Ü?d اdëÓ» @   Ý?d ¨d­ÂÚ; @   Þ?d X¨d/SÍå @   ß?d ˜¨dîš" @   à?d بdl 5À @   á?d ©dέT @   â?d X©dL @  + ÷?d ˜®dm€aõ @  , ø?d Ø®dïv+ @  - ù?d ¯dM·d @  . ú?d X¯dÏ&º @  / û?d ˜¯dÈBÍ! @  0 ü?d دdJÓÚÿ @  1 ý?d °d†ã‹ê @  2 þ?d X°drœ4 @  3 ÿ?d ˜°dWJg@ @  4 ?d ذdÕÛpž @  5 ?d ±dw}Ñ @  6 ?d X±dõì @  7 ?d ˜±d_)õt @  8 ?d رdݸ⪠@  9 ?d ²d2¯Ì @  : ?d X²d°ƒ¸ @  ; ?d ˜²d‰­ Ù @  < ?d زd < @  =  ?d ³d©šzH @  >  ?d X³d+ m– @  ?  ?d ˜³d“n/ @  @  ?d سdÿ–ñ @  A  ?d ´dz_ˆY @  B ?d X´døÎŸ‡ @  C ?d ˜´d¤°I  @  D ?d Ø´d&!^~ @  E ?d µd„‡?1 @  F ?d Xµd(ï @  G ?d ˜µd¬ÓÛ” @  H ?d صd.BÌJ @  I ?d ¶dÁè, @  J ?d X¶dCy–ò @  K ?d ˜¶dzW"9 @  L ?d ضdøÆ5ç @  M ?d ·dZ`T¨ @  N ?d X·dØñCv @  O ?d ˜·dß•Ží @  P ?d Ø·d]™3 @  Q ?d ¸dø‰ @  R ?d X¸d™„ïW @  S ?d ˜¸dXM¬ @  T  ?d ظdÚÜr @  U !?d ¹dxzv= @  V "?d X¹dúëaã @  W #?d ˜¹dP.’˜ @  X $?d عdÒ¿…F @  Y %?d ºd=È  @  Z &?d Xºd¿„ßþ @  [ '?d ˜ºd†ªk5 @  \ (?d غd;|ë @  ] )?d »d¦¤ @  ^ *?d X»d$ z @  _ +?d ˜»d2nàQ @  ` ,?d Ø»d°ÿ÷ @  a -?d ¼dÛ_é' @  b .?d X¼dYÎþù @  c /?d ˜¼d°(Þ @  d 0?d ؼd‡!? @  e 1?d ½d%‡^O @  f 2?d X½d§I‘ @  g 3?d ˜½d Óºê @  h 4?d ؽdB­4 @  i 5?d ¾d`èàR @  j 6?d X¾dây÷Œ @  k 7?d ˜¾dÛWCG @  l 8?d ؾdYÆT™ @  m 9?d ¿dû`5Ö @  n :?d X¿dyñ" @  o ;?d ˜¿d~•ï“ @uÐÀd  p <?d Ø¿düøM @  q =?d 0ÀdêD¸ @  r >?d pÀdh‹Sf @  s ??d °ÀdY©Œ @  t @?d ðÀdÛƒ¾R @  u A?d 0Ády%ß @  v B?d pÁdû´Èà @  w C?d °ÁdQq;¸ @  x D?d ðÁdÓà,f @  y E?d 0Âd ì?d ìdðK´¯ @  ? í?d HìdÜ&n @  @ î?d ˆìdüÓ  @  A ï?d ÈìdÇ€4z @  B ð?d ídȸ’ @  C ñ?d Híd"þ¹ @  D ò?d ˆíd »ø @  E ó?d ÈídÄÙ @  F ô?d îdY\¢ @  G õ?d Hîdg‘ @  H ö?d ˆîdGdå @  I ÷?d Èîdg_ã @  J ø?d ïdÉ/Ó  @  K ù?d HïdüÒŸ @  L ú?d ˆïdÜìÐa @  M û?d Èïdÿi@ @  N ü?d ðd¤!Õò @  O ý?d Hðd7MN @  P þ?d ˆðd¸Lï @  Q ÿ?d Èðd‘ls @  R ?d ñdAÇà› @  S ?d Hñdtñá @  T ?d ˆñdTãñ @  U ?d Èñd’ZÐ @  V ?d òdSú @  W ?d Hòd1ž_ @  X ?d ˆòdk]ì @  Y ?d ÈòdOhê @  Z ?d ódŸ ‹ @  [  ?d HódªŠ– @  \  ?d ˆódŠãˆh @  ]  ?d ÈódLð1I @  ^  ?d ôdU¾ÂF @  _  ?d Hôd×Ô~ @  ` ?d ˆôd÷!|ë @  a ?d ÈôdÌrD @  b ?d õd:Èé @  c ?d Hõd) É} @  d ?d ˆõd ù˃ @  e ?d ÈõdÏêr¢ @  f ?d ödR®Òc @  g ?d Hödlcw` @  h ?d ˆödL–už @  i ?d Èöd•/˜ @  j ?d ÷dÂÝ£p @  k ?d H÷d÷ë¢ä @  l ?d ˆ÷d×  @  m ?d È÷d ; @  n ?d ød%ò•& @  o ?d Hød¶žÅ @  p ?d ˆød–k ; @  q ?d Èød0  @  r  ?d ùdàÇå @  s !?d HùdÕñ€q @  t "?d ˆùdõ‚ @  u #?d Èùd3;® @  v $?d úd®S›o @  w %?d Húdž>l @  x &?d ˆúd°k<’ @  y '?d Èúdîhf” @  z (?d ûd> ê| @  { )?d Hûd ëè @  | *?d ˆûd+ãé @  } +?d ÈûdíðP7 @  ~ ,?d üdô¾£8 @   -?d Hüd;…)È @  € .?d ˆüdp+6 @   /?d Èüd #Ü @  ‚ 0?d ýdðkŸ4 @  ƒ 1?d HýdÅ]ž  @  „ 2?d ˆýd娜^ @  … 3?d Èýd#»% @  † 4?d þd¾ÿ…¾ @  ‡ 5?d Hþd€2 ½ @  ˆ 6?d ˆþd Ç"C @  ‰ 7?d ÈþdþÄxE @  Š 8?d ÿd.Œô­ @  ‹ 9?d Hÿdºõ9 @  Œ :?d ˆÿd;O÷Ç @   uÐe;?d Èÿdý\Næ @  Ž <?d e²èf @   =?d `e!„ýô @   >?d  eqÿ  @  ‘ ??d àeWÅë- @  ’ @?d e‡gÅ @  “ A?d `e²»fQ @  ” B?d  e’Nd¯ @  • C?d àeT]ÝŽ @  – D?d eÉ}O @  — E?d `e÷ÔØL @  ˜ F?d  e×!Ú² @  ™ G?d àe‰"€´ @  š H?d eYj \ @  › I?d `el\ È @  œ J?d  eL©6 @   K?d àeŠº¶ @  ž L?d e“ôE @  Ÿ M?d `ežùK @    N?d  e1kûµ @  ¡ O?d àe 8Ã_ @  ¢ P?d eÚpO· @  £ Q?d `eïFN# @  ¤ R?d  eϳLÝ @  ¥ S?d àe  õü @  ¦ T?d e”äU= @  § U?d `eª)ð> @  ¨ V?d  eŠÜòÀ @  © W?d àeÔߨÆ @  ª X?d e—$. @  « Y?d `e1¡%º @  ¬ Z?d  eT'D @  ­ [?d àe×Gže @  ® \?d eã¸x @  ¯ ]?d `epÔ‰› @  ° ^?d  eP!‹e @  ± _?d àeöÅŠS @  ² `?d e&» @  ³ a?d ` e»/ @  ´ b?d   e3NÑ @  µ c?d à eõ]¼ð @  ¶ d?d eh1 @  · e?d ` eVÔ¹2 @  ¸ f?d   ev!»Ì @  ¹ g?d à e("áÊ @  º h?d eøjm" @  » i?d ` eÍ\l¶ @  ¼ j?d   eí©nH @  ½ k?d à e+º×i @  ¾ l?d e2ô$f @  ¿ m?d ` e™ž§ @  À n?d   e>lœY @  Á o?d à e?¤³ @   p?d eÕw([ @  à q?d ` eàA)Ï @  Ä r?d   eÀ´+1 @  Å s?d à e§’ @  Æ t?d e›ã2Ñ @  Ç u?d `e¥.—Ò @  È v?d  e…Û•, @  É w?d àeÛØÏ* @  Ê x?d e C @  Ë y?d `e>¦BV @  Ì z?d  eS@¨ @  Í {?d àeØ@ù‰ @  Î |?d efžE; @  Ï }?d `eõòÞØ @  Ð ~?d  eÕÜ& @  Ñ ?d àežuœ“ @  Ò €?d eN={ @  Ó ?d `e{ ï @  Ô ‚?d  e[þ @  Õ ƒ?d àeíª0 @  Ö „?d e© ñ @  × …?d `e>d¯ò @  Ø †?d  e‘­  @  Ù ‡?d àe@’÷  @  Ú ˆ?d eÚ{â @  Û ‰?d `e¥ìzv @  Ü Š?d  e…xˆ @  Ý ‹?d àeC Á© @  Þ Œ?d eZD2¦ @  ß ?d `eØ.Žõ @  à Ž?d  eøÛŒ  @  á ?d àeÈ´á @  â ?d€ e;Z,[ @   ‘?d `eï-eæ @   ’?d  eÏØg @   “?d àeÌ‚%Ô @   ”?d eQÆ… @   •?d `e¡¹l @   –?d  eL}’ @   —?d àeýxî @   ˜?d eÁµô @   ™?d `e1Ê @   š?d  e?  @   ›?d àeeNM @   œ?d e&šÂP @   ?d `eÖå8) @   ž?d  eö:× @   Ÿ?d àe3çZ{ @    ?d eã¯Ö“ @   ¡?d `eÐ,ê @   ¢?d  e3%. @   £?d àe0lØ @   ¤?d e­;Ì @   ¥?d `e]D6` @   ¦?d  e}±4ž @   §?d àeí1â @   ¨?d e=H½  @   ©?d `eÍ7Gs @   ª?d  eíÂE @   «?d àeî˜A @   ¬?d e÷ÖôN @   ­?d `e©7 @   ®?d  e'\ É @   ¯?d àenr  @   °?d e¾Rþá @  ! ±?d `eN-˜ @  " ²?d  enØf @  # ³?d àem‚Dª @  $ ´?d eðÆäk @  % µ?d `e¹ @  & ¶?d  e Lì @  ' ·?d àe°ý @  ( ¸?d e`µ•x @  ) ¹?d `eÊo @  * º?d  e°?mÿuÐ e @  + »?d àe³e/3 @  , ¼?d 8 eÂnñU @  - ½?d x e2 , @  . ¾?d ¸ eä Ò @  / ¿?d ø e'C|o @  0 À?d 8!e÷ ð‡ @  1 Á?d x!et þ @  2 Â?d ¸!e' @  3 Ã?d ø!e$ÛJÌ @  4 Ä?d 8"e¹Ÿê  @  5 Å?d x"e §¿Ý @  6€Æ?d ¸"e-R½# @  7€Ç?d ø"e½ã¸_ @  8€È?d 8#em«4· @  9€É?d x#eÔÎÎ @  :€Ê?d ¸#e½!Ì0 @  ;€Ë?d ø#e¾{Žü @  <€Ì?d 8$e§5}ó @  =€Í?d x$eWJ‡Š @  >€Î?d ¸$ew¿…t @  ?€Ï?d ø$eþý& @  @€Ð?d 8%e@¶qÎ @  A€Ñ?d x%e°É‹· @  B€Ò?d ¸%e<‰I @  C€Ó?d ø%e“fË… @  D€Ô?d 8&e"kD @  E€Õ?d x&eþ]‘= @  F€Ö?d ¸&eÞ¨“à @  G€×?d ø&eN–¿ @  H€Ø?d 8'ežQW @  I€Ù?d x'en.à. @  J€Ú?d ¸'eNÛâÐ @  K€Û?d ø'eM  @  L€Ü?d 8(ey~, @  M€Ý?d x(e‰Öx @  N€Þ?d ¸(e©ôÔ† @  O€ß?d ø(el´* @  P€à?d 8)e¼K8 @  Q€á?d x)eL4» @  R€â?d ¸)elÁÀE @  S€ã?d ø)eo›‚‰ @  T€ä?d 8*eòß"H @  U€å?d x*e Ø1 @  V€æ?d ¸*e"UÚÏ @  W€ç?d ø*e²äß³ @  X€è?d 8+eb¬S[ @  Y€é?d x+e’Ó©" @  Z€ê?d ¸+e²&«Ü @  [€ë?d ø+e±|é @  \€ì?d 8,e¨2 @  ]€í?d x,eXMàf @  ^€î?d ¸,ex¸â˜ @  _€ï?d ø,e1þœX @  `€ð?d 8-eá¶° @  a€ñ?d x-eÉêÉ @  b€ò?d ¸-e1<è7 @  c€ó?d ø-e2fªû @  d€ô?d 8.e¯" : @  e€õ?d x.e_]ðC @  f€ö?d ¸.e¨ò½ @  g€÷?d ø.eï÷Á @  h€ø?d 8/e?Q{) @  i€ù?d x/eÏ.P @  j€ú?d ¸/eïÛƒ® @  k€û?d ø/eìÁb @  l€ü?d 80eR_}Ð @  m€ý?d x0e¢ ‡© @  n€þ?d ¸0e‚Õ…W @  o€ÿ?d ø0eÕÓñt @  p€?d 81e›}œ @  q€?d x1eõä‡å @  r€?d ¸1eÕ… @  s€?d ø1eÖKÇ× @  t€?d 82eKg @  u€?d x2e»po @  v€?d ¸2e›…Ÿ‘ @  w€?d ø2e 4ší @  x€?d 83eÛ| @  y€ ?d x3e+ì| @  z€ ?d ¸3e öî‚ @  {€ ?d ø3e¬¬N @  |€ ?d 84eâ_A @  }€ ?d x4eá¥8 @  ~€?d ¸4eÁh§Æ @  €?d ø4eÅï¥ @  €€?d 85e7cM @  €?d x5eåH™4 @  ‚€?d ¸5eŽ›Ê @  ƒ€?d ø5eÆçÙ @  „€?d 86e[£yÇ @  …€?d x6e«Üƒ¾ @  †€?d ¸6e‹)@ @  ‡€?d ø6e˜„< @  ˆ€?d 87eËÐÔ @  ‰€?d x7e;¯ò­ @  Š€?d ¸7eZðS @  ‹€?d ø7e²Ÿ @  Œ€?d 88e,ÿ>‚ @  €?d x8eÜ€Äû @  Ž€?d ¸8eüuÆ @  €?d ø8e9‚¦© @  € ?d 89eéÊ*A @  ‘€!?d x9eµÐ8 @  ’€"?d ¸9e9@ÒÆ @  “€#?d ø9e:  @  ”€$?d 8:e§^0Ë @  •€%?d x:eW!ʲ @  –€&?d ¸:ewÔÈL @  —€'?d ø:eçeÍ0 @  ˜€(?d 8;e7-AØ @  ™€)?d x;eÇR»¡ @  š€*?d ¸;eç§¹_ @  ›€+?d ø;eäýû“ @  œ€,?d 8eú£¹ @  ¥€5?d x>e ÜâÀ @  ¦€6?d ¸>e*)à> @  §€7?d ø>eº˜åB @  ¨€8?d 8?ejÐiª @  ©€9?d x?eš¯“Ó @  ª€:?duÐ@e7 ¸?eºZ‘- @  «€;?d ø?eýG|H @  ¬ <?d P@e>ëÆt @  ­ =?d @elð)- @  ® >?d Ð@eîa>ó @  ¯ ??d Ae‰Ðx @  ° @?d PAe ŽÇ¦ @  ± A?d AeY•(ÿ @  ² B?d ÐAeÛ?! @  ³ C?d BeÇ‹Êò @  ´ D?d PBeEÝ, @  µ E?d Be2u @  ¶ F?d ÐBe•%« @  · G?d CeWø»á @  ¸ H?d PCeÕi¬? @  ¹ I?d Ce‡rCf @  º J?d ÐCeãT¸ @  » K?d Defò¥ @  ¼ L?d PDe÷å{ @  ½ M?d DeMì " @  ¾ N?d ÐDeÏ}ü @  ¿ O?d Eezåþ˜ @  À P?d PEeøtéF @  Á Q?d Eeªo @   R?d ÐEe(þÁ @  à S?d Fe4qä @  Ä T?d PFe¶àóÌ @  Å U?d Feäû• @  Æ V?d ÐFefj K @  Ç W?d Ge¤• @  È X?d PGe&“‚ß @  É Y?d Getˆm† @  Ê Z?d ÐGeözX @  Ë [?d HeC-£W @  Ì \?d PHeÁ¼´‰ @  Í ]?d He“§[Ð @  Î ^?d ÐHe6L @  Ï _?d Ie†·” @  Ð `?d PIe‰ J @  Ñ a?d IeV’O @  Ò b?d ÐIeÔXÍ @  Ó c?d JeÈŒ­ @  Ô d?d PJeJºÀ @  Õ e?d JeU™ @  Ö f?d ÐJeš—BG @  × g?d KeXÿÜ  @  Ø h?d PKeÚnËÓ @  Ù i?d Keˆu$Š @  Ú j?d ÐKe ä3T @  Û k?d Le’a•I @  Ü l?d PLeð‚— @  Ý m?d LeBëmÎ @  Þ n?d ÐLeÀzz @  ß o?d MeÛåŸæ @  à p?d PMeYtˆ8 @  á q?d Me oga @  â r?d€ ÐMeý=l @   s?d NeóÑã @   t?d PNe‚bÆ= @   u?d Ne0Ò‰ @   v?d ÐNe—¡ÅW @   w?d Oe›{g @   x?d POeê¹ @   y?d Oe…C£š @   z?d ÐOeÒ´D @   {?d Peýަ  @   |?d PPe±× @   }?d PeèM¥c @   ~?d ÐPejܲ½ @   ?d Qeswi> @   €?d PQeñæ~à @   ?d QeÀîð# @   ‚?d ÐQeBçý @   ƒ?d Re›¹éà @   „?d PRe(þ @   …?d ReŽzê© @   †?d ÐRe ëýw @   ‡?d Se1 °?d P]e\ @  ? ±?d ]e’¿½ @  @ ²?d Ð]e…¨c @  A ³?d ^eÉC¦] @  B ´?d P^eKÒ±ƒ @  C µ?d ^eÜ€¥7 @  D ¶?d Ð^e^²é @  E ·?d _eRËsÙ @  F ¸?d P_eÐZd @  G ¹?d _eLóÔ$ @  uÐ`eH º?d Ð_eÎbÃú @  I »?d (`e4Ø @  J ¼?d h`e¶‰ÏC @  K ½?d ¨`e!ÛÛ÷ @  L ¾?d è`e£JÌ) @  M ¿?d (ae§'C8 @  N À?d hae%¶Tæ @  O Á?d ¨ae¾Ú% @  P Â?d èae–/Íû @  Q Ã?d (beOéÃÅ @  R Ä?d hbeÍxÔ @  S Å?d ¨beZ*À¯ @  T Æ?d èbeØ»×q @  U Ç?d (ceÔaA @  V È?d hceVðŸ @  W É?d ¨ceÊY±¼ @  X Ê?d èceHȦb @  Y Ë?d (deû’ @  Z Ì?d hde—•ìL @  [ Í?d ¨deÇøø @  \ Î?d ède‚Vï& @  ] Ï?d (eeëÜLú @  ^ Ð?d heeiM[$ @  _ Ñ?d ¨eeICòW @  ` Ò?d èeeËÒå‰ @  a Ó?d (feë· @  b Ô?d hfe…üi @  c Õ?d ¨fe×èÝ @  d Ö?d èfe…Fÿ @  e ×?d (ge‰œ>3 @  f Ø?d hge )í @  g Ù?d ¨ge—¤™Î @  h Ú?d ège5Ž @  i Û?d (heeH¬ò @  j Ü?d hheçÙ», @  k Ý?d ¨hep‹¯˜ @  l Þ?d èheò¸F @  m ß?d (ie'"F @  n à?d hie„¶5˜ @  o á?d ¨ieµ¾»[ @  p â?d èie7/¬… @  q ã?d (jeî颻 @  r ä?d hjelxµe @  s å?d ¨jeû*¡Ñ @  t æ?d èjey»¶ @  u ç?d (keuaw? @  v è?d hke÷ð`á @  w é?d ¨kekYР@  x ê?d èkeéÈÇ @  y ë?d (le´šì @  z ì?d hle6•2 @  { í?d ¨le¡Ç™† @  | î?d èle#VŽX @  } ï?d (meJÜ-„ @  ~ ð?d hmeÈM:Z @   ñ?d ¨me¥¥Š @  € ò?d ème'ƒ²T @   ó?d (neþE¼j @  ‚ ô?d hne|Ô«´ @  ƒ õ?d ¨ne놿 @  „ ö?d ènei¨Þ @  … ÷?d (oeeÍiî @  † ø?d hoeç\~0 @  ‡ ù?d ¨oe{õÎ @  ˆ ú?d èoeùdÙÍ @  ‰ û?d (pe8Ë€ @  Š ü?d hpe©Ü^ @  ‹ ý?d ¨peûÈê @  Œ þ?d èpe”jß4 @   ÿ?d (qe•`T @  Ž ?d hqe•wŠ @   ?d ¨qe¤ ùI @   ?d èqe&î— @  ‘ ?d (reÿ[à© @  ’ ?d hre}Ê÷w @  “ ?d ¨reê˜ãà @  ” ?d èreh ô @  • ?d (sedÓ5- @  – ?d hseæB"ó @  —  ?d ¨sezë’Ð @  ˜  ?d èseøz… @  ™  ?d (te¥¶Øþ @  š  ?d hte''Ï  @  ›  ?d ¨te°uÛ” @  œ ?d ète2äÌJ @   ?d (ue[no– @  ž ?d hueÙÿxH @  Ÿ ?d ¨ueùñÑ; @    ?d èue{`Æå @  ¡ ?d (ve¢¦ÈÛ @  ¢ ?d hve 7ß @  £ ?d ¨ve·e˱ @  ¤ ?d ève5ôÜo @  ¥ ?d (we9._ @  ¦ ?d hwe»¿  @  § ?d ¨we'º¢ @  ¨ ?d èwe¥‡­| @  © ?d (xeÕúž @  ª ?d hxeWk˜@ @  « ?d ¨xeÀ9Œô @  ¬ ?d èxeB¨›* @  ­ ?d (ye¶•* @  ®  ?d hye4ô @  ¯ !?d ¨ye ˜7 @  ° "?d èye‡é @  ± #?d (ze^[× @  ² $?d hzeÜÊ–  @  ³ %?d ¨zeK˜‚½ @  ´ &?d èzeÉ •c @  µ '?d ({eÅÓTS @  ¶ (?d h{eGBC @  · )?d ¨{eÛëó® @  ¸ *?d è{eYzäp @  ¹ +?d (|e¶¹€ @  º ,?d h|e†'®^ @  » -?d ¨|euºê @  ¼ .?d è|e“ä­4 @  ½ /?d (}eúnè @  ¾ 0?d h}exÿ6 @  ¿ 1?d ¨}eöö¶× @  À 2?d è}etg¡  @  Á 3?d (~e­¡¯7 @   4?d h~e/0¸é @  à 5?d ¨~e¸b¬] @  Ä 6?d è~e:ó»ƒ @  Å 7?d (e6)z³ @  Æ 8?d he´¸mm @  Ç 9?d ¨euЀe'(ÝN @  È :?d èeª€Ê @  É ;?d @€e€¼† @  Ê <?d €€e I„å @  Ë =?d À€e•…q @  Ì >?d eE7 ™ @  Í ??d @eƒ¾ @  Î @?d €e3v@ @  Ï A?d Àe „£ @  Ð B?d ‚e=^$b @  Ñ C?d @‚eûMC @  Ò D?d €‚eÛ¸Ÿ½ @  Ó E?d À‚e) @  Ô F?d ƒe>ÆÁ @  Õ G?d @ƒe`ÅHÇ @  Ö H?d €ƒe@0J9 @  × I?d Àƒe~ýï: @  Ø J?d „eg³5 @  Ù K?d @„e¡ ¥ @  Ú L?d €„eU§ê @  Û M?d À„e´c¦~ @  Ü N?d …ed+*– @  Ý O?d @…e_x| @  Þ P?d €…e‚ @  ß Q?d À…eýç¬Ñ @  à R?d †e`£  @  á S?d @†e¦°µ1 @  â T?d€ €†eG@Ï @   U?d À†e“u r @   V?d ‡eC=…š @   W?d @‡eØw$q @   X?d €‡eø‚& @   Y?d À‡eýÜö @   Z?d ˆe<Pë @   [?d @ˆe4£¶° @   \?d €ˆeV´N @   ]?d Àˆeä)N7 @   ^?d ‰e4aÂß @   _?d @‰eWÌ8 @   `?d €‰ew9:ú @   a?d À‰e‡FÀƒ @   b?d Še`B @   c?d @Še¿¸ù @   d?d €ŠeŸ÷º @   e?d ÀŠeoˆ@~ @   f?d ‹e¿ÀÌ– @   g?d @‹e$Šm} @   h?d €‹eoƒ @   i?d À‹eô•ú @   j?d ŒeíNfõ @   k?d @Œeå @   l?d €ŒeÅ‚P @   m?d ÀŒe5ex) @   n?d eå-ôÁ @   o?d @e77Æ @   p?d €e;Â58 @   q?d Àe˽ÏA @   r?d ŽeVùo€ @   s?d @Žeâÿ‹ @   t?d €Že ’u @  ! u?d ÀŽe2uh  @  " v?d eâ=ää @  # w?d @eywE @  $ x?d €eY‚Gñ @  % y?d Àe©ý½ˆ @  & z?d e#: @  ' {?d @e‚ça @  ( |?d €e?wåŸ @  ) }?d ÀeÏæ @  * ~?d ‘e@“ @  + ?d @‘e‘{(V @  , €?d €‘e±Ž*¨ @  - ?d À‘eAñÐÑ @  . ‚?d ’eܵp @  / ƒ?d @’eyµ¨« @  0 „?d €’eY@ªU @  1 …?d À’e©?P, @  2 †?d “eywÜÄ @  3 ‡?d @“eâ=}/ @  4 ˆ?d €“eÂÈÑ @  5 ‰?d À“e2·…¨ @  6 Š?d ”e+ùv§ @  7 ‹?d @”e#Xü @  8 Œ?d €”e­’ @  9 ?d À”eóÒh{ @  : Ž?d •e#šä“ @  ; ?d @•eÝ€'” @  < ?d €•eýu%j @  = ‘?d À•e ß @  > ’?d –eNÒ @  ? “?d @–eŠO†K @  @ ”?d €–eªº„µ @  A •?d À–eZÅ~Ì @  B –?d —eŠò$ @  C —?d @—eÇSÏ @  D ˜?d €—e12Q1 @  E ™?d À—eÁM«H @  F š?d ˜eõ²'U @  G ›?d @˜eýÁ @  H œ?d €˜eÝæÃð @  I ?d À˜e-™9‰ @  J ž?d ™eýѵa @  K Ÿ?d @™ež|Oº @  L  ?d €™e¾‰MD @  M ¡?d À™eNö·= @  N ¢?d šeÓ²ü @  O £?d @šev²ÏG @  P ¤?d €šeVG͹ @  Q ¥?d Àše¦87À @  R ¦?d ›evp»( @  S §?d @›eí:à @  T ¨?d €›eÍÏ= @  U ©?d À›e=°âD @  V ª?d œe$þK @  W «?d @œe,_÷ @  X ¬?d €œe ªõî @  Y ­?d ÀœeüÕ— @  Z ®?d e,ƒ @  [ ¯?d @eÒ‡@x @  \ °?d €eòrB† @  ] ±?d Àe ¸ÿ @  ^ ²?d žeŸI> @  _ ³?d @že+Oç5 @  ` ´?d €že ºåË @  a µ?d ÀžeûŲ @  b ¶?d Ÿe+“Z @  c ·?d @Ÿe°Ç2± @  d ¸?d €Ÿe20O @  e ¹uРe?d ÀŸe`MÊ6 @  f º?d  e(È… @  g»?d X e .Þ @  h¼?d ˜ eÕ,  @  i½?d Ø eðªÖY @  j¾?d ¡e âZ± @  k¿?d X¡e³µ{ @  lÀ?d ˜¡e“ê·… @  mÁ?d Ø¡ec•Mü @  nÂ?d ¢eþÑí= @  oÃ?d X¢e[Ñ5† @  pÄ?d ˜¢e{$7x @  qÅ?d Ø¢e‹[Í @  rÆ?d £e[Aé @  sÇ?d X£eÀYà @  tÈ?d ˜£eà¬âü @  uÉ?d Ø£eÓ… @  vÊ?d ¤e ëŠ @  wË?d X¤e< Ñ @  xÌ?d ˜¤e!É/ @  yÍ?d ؤeѶõV @  zÎ?d ¥eþy¾ @  {Ï?d X¥eÿ亹 @  |Ð?d ˜¥e߸G @  }Ñ?d Ø¥e/nB> @  ~Ò?d ¦e²*âÿ @  Ó?d X¦eK}+W @  €Ô?d ˜¦ekˆ)© @  Õ?d ئe›÷ÓÐ @  ‚Ö?d §eK¿_8 @  ƒ×?d X§eÐõþÓ @  „Ø?d ˜§eðü- @  …Ù?d اeT @  †Ú?d ¨e4€ŠI @  ‡Û?d X¨eF @  £÷?d X¯eqõŸ­ @  ¤ø?d ˜¯eQS @  ¥ù?d دe¡g* @  ¦ú?d °e¡Û˜ @  §û?d X°e=à @  ¨ü?d ˜°e7õ?= @  ©ý?d ذeÇŠÅD @  ªþ?d ±eÂI¬ @  «ÿ?d X±eæž§ø @  ¬?d ˜±eÆk¥ @  ­?d رe6_ @  ®?d ²e«Pÿ¾ @  ¯?d X²eP' @  °?d ˜²e.¥%û @  ±?d زeÞÚß‚ @  ²?d ³e’Sj @  ³?d X³e•Øò @  ´?d ˜³eµ-ð @  µ ?d سeER  @  ¶ ?d ´e\ù  @  · ?d X´eT½R @  ¸ ?d ˜´etH¬ @  ¹ ?d Ø´e„7çÕ @  º?d µeTk= @  »?d Xµeªe¨: @  ¼?d ˜µeŠªÄ @  ½?d صezïP½ @  ¾?d ¶eç«ð| @  ¿?d X¶eýª å @  À?d ˜¶eÝ_  @  Á?d ضe- ñb @  Â?d ·eýh}Š @  Ã?d X·ef"Üa @  Ä?d ˜·eF×ÞŸ @  Å?d Ø·e¶¨$æ @  Æ?d ¸e‚W¨û @  Ç?d X¸eŠöN  @  È?d ˜¸eªL^ @  É?d ظeZ|¶' @  Ê?d ¹eŠ4:Ï @  Ë?d X¹eé™À @  Ì ?d ˜¹eÉlÂê @  Í!?d عe98“ @  Î"?d ºe¤W˜R @  Ï#?d XºeW@é @  Ð$?d ˜ºe!¢B @  Ñ%?d غeÑݸn @  Ò&?d »e•4† @  Ó'?d X»ešß•m @  Ô(?d ˜»eº*—“ @  Õ)?d Ø»eJUmê @  Ö*?d ¼eSžå @  ×+?d X¼e[ºx¾ @  Ø,?d ˜¼e{Oz@ @  Ù-?d ؼe‹0€9 @  Ú.?d ½e[x Ñ @  Û/?d X½e¥bÏÖ @  Ü0?d ˜½e…—Í( @  Ý1?d ؽeuè7Q @  Þ2?d ¾e謗 @  ß3?d X¾e\ªh› @  à4?d ˜¾e|_je @  á5?d ؾeŒ  @  â6?d€ ¿e(«R @  7?d X¿eR é @  8?d ˜¿erUën @uÐÀe  9?d Ø¿e~¤6/ @   :?d 0ÀeTg} @   ;?d pÀeÜGÞ\ @   <?d °Àeü²Ü¢ @   =?d ðÀeÂy¡ @   >?d 0Áe7õI @   ??d pÁeDƒán @   @?d °Áedvã @   A?d ðÁeQ@â @   B?d 0ÂeÌBÅ @   C?d pÂe ûä @   D?d °Âe*âù @   E?d ðÂe¹Žbù @   F?d 0ÃeiÆî @   G?d pÃe7Å´ @   H?d °Ãe0¶é @   I?d ðÃe"·} @   J?d 0Äe;HDr @   K?d pÄeý[ýS @   L?d °ÄeÝ®ÿ­ @   M?d ðÄeãcZ® @   N?d 0Åe3+ÖF @   O?d pÅexî¬ @   P?d °Åe(ìR @   Q?d ðÅe»íÆ @   R?d 0Æe€ÿM @   S?d pÆeFìô& @   T?d °ÆeföØ @   U?d ðÆeäsJ‹ @   V?d 0Çe4;Æc @  ! W?d pÇej8œe @  " X?d °ÇeJÍž› @  # Y?d ðÇeûŸ @  $ Z?d 0ÈeK @  % [?d pÈeª3 @  & \?d °Èe­â¨Í @  ' ]?d ðÈe“/ Î @  ( ^?d 0ÉeCg& @  ) _?d pÉe僀 @  * `?d °ÉeÅv‚î @  + a?d ðÉeð@ƒz @  , b?d 0Êem#» @  - c?d pÊe«šš @  . d?d °Êe‹â˜d @  / e?d ðÊeއ @  0 f?d 0ËeÈÆo @  1 g?d pËe–ÅÕi @  2 h?d °Ëe¶0×— @  3 i?d ðËeƒÖ @  4 j?d 0ÌešH%  @  5 k?d pÌe\[œ- @  6 l?d °Ìe|®žÓ @  7 m?d ðÌeBc;Ð @  8 n?d 0Íe’+·8 @  9 o?d pÍe©xÒ @  : p?d °Íe‰, @  ; q?d ðÍe¼»Œ¸ @  < r?d 0Îe!ÿ,y @  = s?d pÎeçì•X @  > t?d °ÎeÇ—¦ @  ? u?d ðÎeët-g @  @ v?d 0Ïe;<¡ @  A w?d pÏee?û‰ @  B x?d °ÏeEÊùw @  C y?d ðÏepüøã @  D z?d 0ÐeÎ"DQ @  E {?d pÐe1ýp @  F |?d °Ðe(ÄÿŽ @  G }?d ðÐe Z @  H ~?d 0ÑeÆAÖe @  I ?d pÑe3–Ð @  J €?d °Ñe­Æ”. @  K ?d ðÑe˜ð•º @  L ‚?d 0Òe´5{ @  M ƒ?d pÒeçŒZ @  N „?d °ÒeãRޤ @  O …?d ðÒep>G @  P †?d 0Óe v™¯ @  Q ‡?d pÓeþué @  R ˆ?d °ÓeÞ€ÁW @  S ‰?d ðÓeë¶Àà @  T Š?d 0Ôeòø3Ì @  U ‹?d pÔe4ëŠí @  V Œ?d °Ôeˆ @  W ?d ðÔe*Ó- @  X Ž?d 0Õeú›¡ø @  Y ?d pÕeÁÈ™ @  Z ?d °Õeá=›ì @  [ ‘?d ðÕeÔ šx @  \ ’?d 0ÖeIO:¹ @  ] “?d pÖe\ƒ˜ @  ^ ”?d °Öe¯©f @  _ •?d ðÖe-Ã=5 @  ` –?d 0×eý‹±Ý @  a —?d p×e£ˆëÛ @  b ˜?d °×eƒ}é% @  c ™?d ð×e¶Kè± @  d š?d 0Øe‚´d¬ @  e ›?d pØeD§Ý @  f œ?d °ØedRßs @  g ?d ðØeZŸzp @  h ž?d 0ÙeŠ×ö˜ @  i Ÿ?d pÙe,3÷® @  j  ?d °Ùe ÆõP @  k ¡?d ðÙe9ðôÄ @  l ¢?d 0Úe¤´T @  m £?d pÚeb§í$ @  n ¤?d °ÚeBRïÚ @  o ¥?d ðÚeÑ>t9 @  p ¦?d 0ÛevøÑ @  q §?d pÛe_u¢× @  r ¨?d °Ûe€ ) @  s ©?d ðÛeJ¶¡½ @  t ª?d 0ÜeSøR² @  u «?d pÜe•ëë“ @  v ¬?d °Üeµém @  w ­?d ðÜe‹ÓLn @  x ®?d 0Ýe[›À† @  y ¯?d pÝe`Èøl @  z °?d °Ýe@=ú’ @  { ±?d ðÝeu û @  | ²?d 0ÞeèO[Ç @  } ³?d pÞe.\âæ @  ~ ´?d °Þe©à @   µ?d ðÞeÁ’jè @  € ¶?d 0ßeÚæ @   ·?d pßeOÙ¼ @  ‚ ¸?d uÐàe/°ßeo,¾ø @  ƒ ¹?d ðßeZ¿l @  „ º?d HàeC¾áš @  … »?d ˆàe'ÉM› @  † ¼?d Èàe¥XZE @  ‡ ½?d áeÉLdp @  ˆ ¾?d HáeKÝs® @  ‰ ¿?d ˆáe¿ r© @  Š À?d Èáe=œew @  ‹ Á?d âeÓü @  Œ Â?d Hâe•îÄ" @   Ã?d ˆâeñ™h# @  Ž Ä?d Èâesý @   Å?d ãe²½( @   Æ?d Hãe0,hö @  ‘ Ç?d ˆãeÌK'Ð @  ’ È?d ÈãeNÚ0 @  “ É?d äeà3ÕK @  ” Ê?d Häeb¢Â• @  • Ë?d ˆäeÕn” @  – Ì?d Èäe„DyJ @  — Í?d åeèPG @  ˜ Î?d HåejÁP¡ @  ™ Ï?d ˆåeóö}k @  š Ð?d Èåeqgjµ @  › Ñ?d æe[„Ü> @  œ Ò?d HæeÙËà @   Ó?d ˆæe½bgá @  ž Ô?d Èæe?óp? @  Ÿ Õ?d çeï@WZ @    Ö?d HçemÑ@„ @  ¡ ×?d ˆçe‘¶¢ @  ¢ Ø?d Èçe'| @  £ Ù?d èe‚+ @  ¤ Ú?d Hèeî•õ @  ¥ Û?d ˆèev™9ô @  ¦ Ü?d Èèeô.* @  § Ý?d ée˜ @  ¨ Þ?d HéeÁ @  © ß?d ˆée × @  ª à?d Èéeœœ  @  « á?d êe¶²‚ @  ¬ â?d Hêe4î¥\ @  ­ ã?d ˆêeP™ ] @  ® ä?d ÈêeÒƒ @  ¯ å?d ëe½V @  ° æ?d Hëe‘, ˆ @  ± ç?d ˆëemKF® @  ² è?d ÈëeïÚQp @  ³ é?d ìeA3´5 @  ´ ê?d Hìeâ£ë @  µ ë?d ˆìe§Õê @  ¶ ì?d Èìe%D4 @  · í?d íeIP& @  ¸ î?d HíeËÁ1ß @  ¹ ï?d ˆíeRö @  º ð?d ÈíeÐg Ë @  » ñ?d îeú„½@ @  ¼ ò?d Hîexªž @  ½ ó?d ˆîebŸ @  ¾ ô?d ÈîežóA @  ¿ õ?d ïeàG0¶ @  À ö?d HïebÖ'h @  Á ÷?d ˆïež±hN @   ø?d Èïe  @  à ù?d ðeYÕh @  Ä ú?d Hðe—ȶ @  Å û?d ˆðeó¿n· @  Æ ü?d Èðeq.yi @  Ç ý?d ñe:G\ @  È þ?d HñeŸ«P‚ @  É ÿ?d ˆñe»øe> @  Ê ?d Èñe9irà @  Ë ?d òeŠÄk @  Ì ?d Hòe‘Óµ @  Í ?d ˆòeõl´ @  Î ?d Èòewýhj @  Ï ?d óe¶Hh¿ @  Ð ?d Hóe4Ùa @  Ñ ?d ˆóeȾ0G @  Ò ?d ÈóeJ/'™ @  Ó  ?d ôeäÆÂÜ @  Ô  ?d HôefWÕ @  Õ  ?d ˆôe y @  Ö  ?d Èôe€±nÝ @  ×  ?d õeì¥Pè @  Ø ?d Hõen4G6 @  Ù ?d ˆõe÷jü @  Ú ?d Èõeu’}" @  Û ?d öe_qË© @  Ü ?d HöeÝàÜw @  Ý ?d ˆöe¹—pv @  Þ ?d Èöe;g¨ @  ß ?d ÷eëµ@Í @  à ?d H÷ei$W @  á ?d ˆ÷e•C5 @  â ?d€ È÷e‘„§R @   ?d øeóu, @   ?d Høeq bò @   ?d ˆøeÐ25 @   ?d ÈøeR£"À @   ?d ùeðC @   ?d Hùer”TQ @   ?d ˆùe¸¦= @    ?d Èùe:7ã @   !?d úeÕE… @   "?d HúeW R[ @   #?d ˆúeö2· @   $?d Èúet£i @   %?d ûeÖs& @   &?d HûeT”dø @   '?d ˆûeËàJD @   (?d ÈûeIq]š @   )?d üe"ÑC2 @   *?d Hüe @Tì @   +?d ˆüe~ @   ,?d ÈüeƒïÞ @   -?d ýe!Iu‘ @   .?d Hýe£ØbO @   /?d ˆýeô]ÿ @   0?d ÈýevÌ! @   1?d þe™fJG @   2?d Hþe÷]™ @   3?d ˆþeºÉ u @   4?d Èþe8X« @   5?d ÿešþ|ä @   6?d Hÿeok: @   7?d ˆÿe–b6 @   uÐf8?d ÈÿeŒuè @  ! 9?d fb“ÐX @  " :?d `fàdž @  # ;?d  fA?d `fãšñ% @  ' ??d  fÙø¯X @  ( @?d àf[i¸† @  ) A?d f´Ãõà @  * B?d `f6Râ> @  + C?d  f—lµÒ @  , D?d àfý¢  @  - E?d f·[ÃC @  . F?d `f5ÊÔ @  / G?d  fª¾ú! @  0 H?d àf(/íÿ @  1 I?d fCóW @  2 J?d `fÁä‰ @  3 K?d  f` ³e @  4 L?d àfⱤ» @  5 M?d f@Åô @  6 N?d `f†Ò* @  7 O?d  f• š @  8 P?d àf’·D @  9 Q?d fø8ú" @  : R?d `fz©íü @  ; S?d  fÛ—º @  < T?d àfY­Î @  = U?d fû Ì @  > V?d `fy1Û_ @  ? W?d  fYDÔÁ @  @ X?d àfÛÕà @  A Y?d fÄ¢¥ @  B Z?d `fUµ{ @  C [?d  f¾kâ— @  D \?d àf<úõI @  E ]?d fž\” @  F ^?d ` f̓Ø @  G _?d   fÖÿÈ´ @  H `?d à fTnßj @  I a?d f»Ä’  @  J b?d ` f9U…Ò @  K c?d   f˜kÒ> @  L d?d à fúÅà @  M e?d f¸\¤¯ @  N f?d ` f:ͳq @  O g?d   f¥¹Í @  P h?d à f'(Š @  Q i?d fLˆ”» @  R j?d ` f΃e @  S k?d   fo'Ô‰ @  T l?d à fí¶ÃW @  U m?d fO¢ @  V n?d ` f͵Æ @  W o?d   fšÇv @  X p?d à f•Ш @  Y q?d f÷?Î @  Z r?d `fu®Š @  [ s?d  fÔÝü @  \ t?d àfVÊ" @  ] u?d fô§«m @  ^ v?d `fv6¼³ @  _ w?d  føDµ¿ @  ` x?d àfzÕ¢a @  a y?d f¶åót @  b z?d `f4täª @  c {?d  f•J³F @  d |?d àfÛ¤˜ @  e }?d fµ}Å× @  f ~?d `f7ìÒ  @  g ?d  fHØæ @  h €?d àf’ÙÏ8 @  i ?d f}s‚^ @  j ‚?d `fÿâ•€ @  k ƒ?d  f^ÜÂl @  l „?d àfÜMÕ² @  m …?d f~ë´ý @  n †?d `füz£# @  o ‡?d  fcŸ @  p ˆ?d àf៚A @  q ‰?d fŠ?„é @  r Š?d `f®“7 @  s ‹?d  f©ÄÛ @  t Œ?d àf+Ó @  u ?d f‰§²J @  v Ž?d `f 6¥” @  w ?d  f\³×$ @  x ?d àfÞ"Àú @  y ‘?d f1ˆœ @  z ’?d `f³šB @  { “?d  f'Í® @  | ”?d àf¶Úp @  } •?d f2»? @  ~ –?d `f°¬á @   —?d  fs¢“N @  € ˜?d àfñ3„ @   ™?d f·"å* @  ‚ š?d `f5³òô @  ƒ ›?d  f”¥ @  „ œ?d àf²Æ @  … ?d f´ºÓ‰ @  † ž?d `f6+ÄW @  ‡ Ÿ?d  fü; @  ˆ  ?d àf~ˆ˜å @  ‰ ¡?d f‘"Õƒ @  Š ¢?d `f³Â] @  ‹ £?d  f²•± @  Œ ¤?d àf0‚o @   ¥?d f’ºã  @  Ž ¦?d `f+ôþ @   §?d  f_ÚB @   ¨?d àf ÎÍœ @  ‘ ©?d ffnÓ4 @  ’ ª?d `fäÿÄê @  “ «?d  fEÁ“ @  ” ¬?d àfÇP„Ø @  • ­?d feöå— @  – ®?d `fçgòI @  — ¯?d  f°â€ù @  ˜ °?d àf2s—' @  ™ ±?d fÝÙÚA @  š ²?d `f_HÍŸ @  › ³?d  fþvšs @  œ ´?d àf|ç­ @   µ?d fÞAìâ @  ž ¶?d `f\Ðû< @  Ÿ ·?d  fÒ¢ò0uÐ f @    ¸?d àfP3åî @  ¡ ¹?d 8 fSÖÖ/ @  ¢ º?d x fÑGÁñ @  £ »?d ¸ fpy– @  ¤ ¼?d ø fòèà @  ¥ ½?d 8!fPNàŒ @  ¦ ¾?d x!fÒß÷R @  § ¿?d ¸!f轩/ @  ¨ À?d ø!fj,¾ñ @  © Á?d 8"f…†ó— @  ª Â?d x"fäI @  « Ã?d ¸"f¦)³¥ @  ¬ Ä?d ø"f$¸¤{ @  ­ Å?d 8#f†Å4 @  ® Æ?d x#fÒê @  ¯ Ç?d ¸#f›ûüV @  ° È?d ø#fjëˆ @  ± É?d 8$frÊõ  @  ² Ê?d x$fð[âþ @  ³ Ë?d ¸$fQeµ @  ´ Ì?d ø$fÓô¢Ì @  µ Í?d 8%fqRà @  ¶ Î?d x%fóÃÔ] @  · Ï?d ¸%f¤F¦í @  ¸ Ð?d ø%f&×±3 @  ¹ Ñ?d 8&fÉ}üU @  º Ò?d x&fKìë‹ @  » Ó?d ¸&fêÒ¼g @  ¼ Ô?d ø&fhC«¹ @  ½ Õ?d 8'fÊåÊö @  ¾ Ö?d x'fHtÝ( @  ¿ ×?d ¸'fhÒ¶ @  À Ø?d ø'fêÅh @  Á Ù?d 8(f¬¤Ò @   Ú?d x(f.³  @  à Û?d ¸(f.äà @  Ä Ü?d ø(f ¿ó> @  Å Ý?d 8)f¯’q @  Æ Þ?d x)f-ˆ…¯ @  Ç ß?d ¸)fçºÎà @  È à?d ø)fe+Ù @  É á?d 8*fŠ”{ @  Ê â?d x*fƒ¥ @  Ë ã?d ¸*f©.ÔI @  Ì ä?d ø*f+¿Ã— @  Í å?d 8+f‰¢Ø @  Î æ?d x+f ˆµ @  Ï ç?d ¸+f”ü›º @  Ð è?d ø+fmŒd @  Ñ é?d 8,f}Í’Ì @  Ò ê?d x,fÿ\… @  Ó ë?d ¸,f^bÒþ @  Ô ì?d ø,fÜóÅ  @  Õ í?d 8-f~U¤o @  Ö î?d x-füij± @  × ï?d ¸-f«AÁ @  Ø ð?d ø-f)ÐÖß @  Ù ñ?d 8.fÆz›¹ @  Ú ò?d x.fDëŒg @  Û ó?d ¸.fåÕÛ‹ @  Ü ô?d ø.fgDÌU @  Ý õ?d 8/fÅâ­ @  Þ ö?d x/fGsºÄ @  ß ÷?d ¸/fÉ³È @  à ø?d ø/fK¤ @  á ù?d 80f‡ õ @  â ú?d€ x0fqòþ{ @   û?d ¸0f1á¾ @   ü?d ø0f³ö` @   ý?d 81fÔól @   þ?d x1fVb{ @   ÿ?d ¸1fÀ{… @   ?d ø1fB‚l[ @   ?d 82fcš~G @   ?d x2fá i™ @   ?d ¸2f…|Ř @   ?d ø2fíÒF @   ?d 83f`Hä @   ?d x3fâ“_: @   ?d ¸3fô @   ?d ø3fœe @    ?d 84f”Öxð @    ?d x4fGo. @    ?d ¸4fr0Ã/ @    ?d ø4fð¡Ôñ @    ?d 85f—NNS @   ?d x5fßY @   ?d ¸5fŒètG @   ?d ø5fyc™ @   ?d 86f/aq… @   ?d x6f­ðf[ @   ?d ¸6fɇÊZ @   ?d ø6fKÝ„ @   ?d 87f,ùG& @   ?d x7f®hPø @   ?d ¸7fRÞ @   ?d ø7fО @   ?d 88fäš/ @   ?d x8ff 8N @  ! ?d ¸8f|”O @  " ?d ø8f€íƒ‘ @  # ?d 89fç3 @  $ ?d x9fe“í @  % ?d ¸9faû @  &  ?d ø9fã‚ % @  ' !?d 8:fš9 @  ( "?d x:f@ ç @  ) #?d ¸:f$|¤æ @  * $?d ø:f¦í³8 @  + %?d 8;fÁ)š @  , &?d x;fC“>D @  - '?d ¸;f¿ôqb @  . (?d ø;f=ef¼ @  / )?d 8fŽaû @  8 2?d x>f ð% @  9 3?d ¸>fh‡«$ @  : 4?d ø>fê¼ú @  ; 5?d 8?fù&X @  < 6?d x?fh1† @  = 7?duÐ@f7 ¸?fó~  @  > 8?d ø?fqži~ @  ? 9?d P@fÎ~] @  @ :?d @f<;|£ @  A ;?d Ð@fú(Å‚ @  B <?d Af*`Ij @  C =?d PAfVHþ @  D >?d Af?£J @  E ??d ÐAfi^' @  F @?d BfôSþæ @  G A?d PBfÊž[å @  H B?d BfêkY @  I C?d ÐBf,xà: @  J D?d Cfü0lÒ @  K E?d PCfÉmF @  L F?d Cféóo¸ @  M G?d ÐCf·ð5¾ @  N H?d Df®¾Æ± @  O I?d PDf=Ò]R @  P J?d Df'_¬ @  Q K?d ÐDfÛ4æ @  R L?d Ef |je @  S M?d PEf>Jkñ @  T N?d Ef¿i @  U O?d ÐEf%ìQå @  V P?d Ff¸¨ñ$ @  W Q?d PFf†eT' @  X R?d Ff¦VÙ @  Y S?d ÐFf`ƒïø @  Z T?d Gf°Ëc @  [ U?d PGf…ýb„ @  \ V?d Gf¥`z @  ] W?d ÐGfû :| @  ^ X?d HfÏô¶a @  _ Y?d PHfMž 2 @  ` Z?d HfmkÌ @  a [?d ÐHf«x±í @  b \?d If{0= @  c ]?d PIfN<‘ @  d ^?d Ifnó>o @  e _?d ÐIfÈ?Y @  f `?d JfUSŸ˜ @  g a?d PJfkž:› @  h b?d JfKk8e @  i c?d ÐJfxD @  j d?d Kf]0 ¬ @  k e?d PKfh 8 @  l f?d KfHóÆ @  m g?d ÐKfðTÀ @  n h?d Lf¾§Ï @  o i?d PLfœÒ<, @  p j?d Lf¼'>Ò @  q k?d ÐLfz4‡ó @  r l?d Mfª|  @  s m?d PMfŸJ  @  t n?d Mf¿¿q @  u o?d ÐMf„ì0› @  v p?d Nf¨Z @  w q?d PNf'e5Y @  x r?d Nf7§ @  y s?d ÐNfÁƒŽ† @  z t?d OfËn @  { u?d POf$ýú @  | v?d Of @  } w?d ÐOfZ [ @  ~ x?d PfäÕç° @   y?d PPf+îm@ @  € z?d Pf o¾ @   {?d ÐPfÍÖŸ @  ‚ |?d Qf@Zw @  ƒ }?d PQf(v[ã @  „ ~?d QfƒY @  … ?d ÐQfCñ¨ @  † €?d RfÞµ¹i @  ‡ ?d PRfàxj @  ˆ ‚?d RfÀ” @  ‰ ƒ?d ÐRfž§µ @  Š „?d SfÖÖ+] @  ‹ …?d PSfãà*É @  Œ †?d SfÃ(7 @   ‡?d ÐSfr1 @  Ž ˆ?d Tf„X> @   ‰?d PTf4Ý @   Š?d Tf7Á# @  ‘ ‹?d ÐTfñÒ¡ @  ’ Œ?d Uf!š-ê @  “ ?d PUf¬,~ @  ” Ž?d Uf4Y.€ @  • ?d ÐUf j @  – ?d Vf’N¶« @  — ‘?d PVf¬ƒ¨ @  ˜ ’?d VfŒvV @  ™ “?d ÐVfJe¨w @  š ”?d Wfš-$Ÿ @  › •?d PWf¯%  @  œ –?d Wfî'õ @   —?d ÐWfÑí}ó @  ž ˜?d Xfåñî @  Ÿ ™?d PXfgxM½ @    š?d XfGOC @  ¡ ›?d ÐXfžöb @  ¢ œ?d YfQÖzŠ @  £ ?d PYfdà{ @  ¤ ž?d YfDyà @  ¥ Ÿ?d ÐYfâñxÖ @  ¦  ?d ZfµØ @  § ¡?d PZfAx} @  ¨ ¢?d Zfaê @  © £?d ÐZf§žÆË @  ª ¤?d [fwÖJ# @  « ¥?d P[fBàK· @  ¬ ¦?d [fbII @  ­ §?d Ð[f<O @  ® ¨?d \f%Xà@ @  ¯ ©?d P\f¶4{£ @  ° ª?d \f–Áy] @  ± «?d Ð\fPÒÀ| @  ² ¬?d ]f€šL” @  ³ ­?d P]fµ¬M @  ´ ®?d ]f•YOþ @  µ ¯?d Ð]f® w @  ¶ °?d ^f3N×Õ @  · ±?d P^f ƒrÖ @  ¸ ²?d ^f-vp( @  ¹ ³?d Ð^fëeÉ  @  º ´?d _f;-Eá @  » µ?d P_fDu @  ¼ ¶?d _f.îF‹ @  uÐ`f½ ·?d Ð_fpí @  ¾ ¸?d (`fΩ @  ¿ ¹?d h`fâxÔ @  À º?d ¨`fÂ* @  Á »?d è`fž¨  @   ¼?d (afÔÖ$ã @  à ½?d hafáà%w @  Ä ¾?d ¨afÁ'‰ @  Å ¿?d èaf—¡3® @  Æ À?d (bf å“o @  Ç Á?d hbf4(6l @  È Â?d ¨bfÝ4’ @  É Ã?d èbfÒγ @  Ê Ä?d (cf†[ @  Ë Å?d hcf7°Ï @  Ì Æ?d ¨cfE1 @  Í Ç?d ècfIFX7 @  Î È?d (dfP«8 @  Ï É?d hdfÃd0Û @  Ð Ê?d ¨dfã‘2% @  Ñ Ë?d èdf%‚‹ @  Ò Ì?d (efõÊì @  Ó Í?d hefÀüx @  Ô Î?d ¨efà † @  Õ Ï?d èefÛZ ?d ¨xf ^| @  ? ?d èxf:_…„ @  @ ?d (yfê l @  A ?d hyfhó @  B ?d ¨yf:ñë @  C ?d èyfY0 0 @  D  ?d (zfÄt«ñ @  E !?d hzf4 Qˆ @  F "?d ¨zfþSv @  G #?d èzf_µ- @  H $?d ({fÌ9Å @  I %?d h{f?d ÀfÁÜþü @  c ??d ‚fMô¦) @  d @?d @‚fÏe±÷ @  e A?d €‚f~^® @  f B?d À‚fïIp @  g C?d ƒfE—4 @  h D?d @ƒfÇ#à @  i E?d €ƒf•Ìš @  j F?d ÀƒfŒÛD @  k G?d „fž~ @  l H?d @„f•ˆ‰  @  m I?d €„fÇ“fù @  n J?d À„fEq' @  o K?d …f²Û2ª @  p L?d @…f0J%t @  q M?d €…fbQÊ- @  r N?d À…fàÀÝó @  s O?d †f©ë @  t P?d @†fƒž¾5 @  u Q?d €†fÑ…Ql @  v R?d À†fSF² @  w S?d ‡f l;ß @  x T?d @‡f‹ý, @  y U?d €‡fÙæÃX @  z V?d À‡f[wÔ† @  { W?d ˆfvSî® @  | X?d @ˆfôÂùp @  } Y?d €ˆf¦Ù) @  ~ Z?d Àˆf$H÷ @   [?d ‰fÆSi @  € \?d @‰f WD· @   ]?d €‰f_L«î @  ‚ ^?d À‰fÝݼ0 @  ƒ _?d Šf¡¥ñô @  „ `?d @Šf#4æ* @  … a?d €Šfq/ s @  † b?d ÀŠfó¾­ @  ‡ c?d ‹f©ÆcÀ @  ˆ d?d @‹f+Wt @  ‰ e?d €‹fyL›G @  Š f?d À‹fûÝŒ™ @  ‹ g?d ŒfûHÉ£ @  Œ h?d @ŒfyÙÞ} @   i?d €Œf+Â1$ @  Ž j?d ÀŒf©S&ú @   k?d f^Šew @   l?d @fÜr© @  ‘ m?d €fŽð @  ’ n?d Àf ‘Š. @  “ o?d Žfí^þ6 @  ” p?d @ŽfoÏéè @  • q?d €Žf=Ô± @  – r?d ÀŽf¿Eo @  — s?d få=l @  ˜ t?d @fg¬{Ü @  ™ u?d €f5·”… @  š v?d Àf·&ƒ[ @  › w?d f#‰Ü @  œ x?d @f’²ž @   y?d €fÀ©q[ @  ž z?d ÀfB8f… @  Ÿ {?d ‘f¤ç¸ @    |?d @‘f&vf @  ¡ }?d €‘ftmú? @  ¢ ~?d À‘föüíá @  £ ?d ’fgᦠ@  ¤ €?d @’fåƒöx @  ¥ ?d €’f·˜! @  ¦ ‚?d À’f5 ÿ @  § ƒ?d “foqs’ @  ¨ „?d @“fíàdL @  © …?d €“f¿û‹ @  ª †?d À“f=jœË @  « ‡?d ”f=ÿÙñ @  ¬ ˆ?d @”f¿nÎ/ @  ­ ‰?d €”fíu!v @  ® Š?d À”foä6¨ @  ¯ ‹?d •f˜=u% @  ° Œ?d @•f¬bû @  ± ?d €•fH·¢ @  ² Ž?d À•fÊ&š| @  ³ ?d –f+éîd @  ´ ?d @–f©xùº @  µ ‘?d €–fûcã @  ¶ ’?d À–fyò= @  · “?d —f#Š|P @  ¸ ”?d @—f¡kŽ @  ¹ •?d €—fó„× @  º –?d À—fq‘“  @  » —?d ˜f\µ©! @  ¼ ˜?d @˜fÞ$¾ÿ @  ½ ™?d €˜fŒ?Q¦ @  ¾ š?d À˜f®Fx @  ¿ ›?d ™fFv$× @  À œ?d @™fÄç3  @  Á ?d €™f–üÜP @   ž?d À™fmËŽ @  à Ÿ?d šfh†J @  Ä  ?d @šfê„‘” @  Å ¡?d €šf¸Ÿ~Í @  Æ ¢?d Àšf:i @  Ç £?d ›f`v~ @  È ¤?d @›fâç  @  É ¥?d €›f°üìù @  Ê ¦?d À›f2mû' @  Ë §?d œf2ø¾ @  Ì ¨?d @œf°i©Ã @  Í ©?d €œfârFš @  Î ª?d Àœf`ãQD @  Ï «?d f—:É @  Ð ¬?d @f« @  Ñ ­?d €fG°êN @  Ò ®?d ÀfÅ!ý @  Ó ¯?d žf$ @  Ô °?d @žf¦žV @  Õ ±?d €žfôdq @  Ö ²?d ÀžfvõfÑ @  × ³?d Ÿf,¼ @  Ø ´?d @Ÿf® b @  Ù µ?d €Ÿfüã; @  Ú ¶uРf?d ÀŸf~–ôå @  Û ·?d  fFœ¶ @  Ü ¸?d X f”׋h @  Ý ¹?d ˜ fÆÌd1 @  Þ º?d Ø fD]sï @  ß »?d ¡f¢‚Ò @  à ¼?d X¡f   @  á ½?d ˜¡frïU @  â ¾?d€ Ø¡f„Zä- @   ¿?d ¢fé3ôÑ @   À?d X¢fk¢ã @   Á?d ˜¢füð÷» @   Â?d Ø¢f~aàe @   Ã?d £fê«Âr @   Ä?d X£fh:Õ¬ @   Å?d ˜£fô“e @   Æ?d Ø£fvrQ @   Ç?d ¤f³Þ̆ @   È?d X¤f1OÛX @   É?d ˜¤f¦Ïì @   Ê?d ؤf$ŒØ2 @   Ë?d ¥f°Fú% @   Ì?d X¥f2×íû @   Í?d ˜¥fßc8 @   Î?d Ø¥fNtæ @   Ï?d ¦f¥Èû @   Ð?d X¦f'YìÍ @   Ñ?d ˜¦f° øy @   Ò?d ئf2šï§ @   Ó?d §f¦PͰ @   Ô?d X§f$ÁÚn @   Õ?d ˜§f¸hjM @   Ö?d اf:ù}“ @   ×?d ¨fÒ”¼V @   Ø?d X¨fP«ˆ @   Ù?d ˜¨fÇW¿< @   Ú?d بfEƨâ @   Û?d ©fÑ Šõ @   Ü?d X©fS+ @   Ý?d ˜©fs“4X @   Þ?d Ø©fñ#† @  ! ß?d ªfH3•¯ @  " à?d XªfÊ¢‚q @  # á?d ˜ªf]ð–Å @  $ â?d تfßa @  % ã?d «fK«£  @  & ä?d X«fÉ:´Ò @  ' å?d ˜«fU“ñ @  ( æ?d Ø«f×/ @  ) ç?d ¬fÞ­ø @  * è?d X¬fOº& @  + é?d ˜¬f®’ @  , ê?d جf…Œ¹L @  - ë?d ­fF›[ @  . ì?d X­f“׌… @  / í?d ˜­f¢ßF @  0 î?d Ø­f N˜ @  1 ï?d ®fÈšm @  2 ð?d X®f†Y³ @  3 ñ?d ˜®f ™ @  4 ò?d Ø®f“šŽÙ @  5 ó?d ¯fP¬Î @  6 ô?d X¯f…Á» @  7 õ?d ˜¯fh 3 @  8 ö?d دf›ùí @  9 ÷?d °fùµí‡ @  : ø?d X°f{$úY @  ; ù?d ˜°fìvîí @  < ú?d ذfnçù3 @  = û?d ±fú-Û$ @  > ü?d X±fx¼Ìú @  ? ý?d ˜±föµc @  @ þ?d رft$tÅ @  A ÿ?d ²f_äÖc @  B ?d X²fÝuÁ½ @  C ?d ˜²fJ'Õ  @  D ?d زfȶÂ× @  E ?d ³f\|àÀ @  F ?d X³fÞí÷ @  G ?d ˜³fBDG= @  H ?d سfÀÕPã @  I ?d ´f î4 @  J ?d X´f‡˜ùê @  K  ?d ˜´fÊí^ @  L  ?d Ø´f’[ú€ @  M  ?d µf‘Ø— @  N  ?d Xµf„ÏI @  O  ?d ˜µfµAŠ @  P ?d صf7™VT @  Q ?d ¶fÙ¡ @  R ?d X¶f‘ŽÎ @  S ?d ˜¶fÜÚË @  T ?d ضf„MÍ @  U ?d ·f‡ï @  V ?d X·f’øÜ @  W ?d ˜·f¿Hÿ @  X ?d Ø·fŒ._! @  Y ?d ¸fdCžä @  Z ?d X¸fæÒ‰: @  [ ?d ˜¸fq€Ž @  \ ?d ظfóŠP @  ] ?d ¹fgÛ¨G @  ^ ?d X¹fåJ¿™ @  _ ?d ˜¹fÅDê @  ` ?d عfGÕ4 @  a ?d ºfþä· @  b  ?d Xºf|u Ã @  c !?d ˜ºfë'´w @  d "?d غfi¶£© @  e #?d »fý|¾ @  f $?d X»fí–` @  g %?d ˜»fãD&C @  h &?d Ø»faÕ1 @  i '?d ¼f¤ J @  j (?d X¼f&˜˜” @  k )?d ˜¼f±ÊŒ  @  l *?d ؼf3[›þ @  m +?d ½f§‘¹é @  n ,?d X½f%®7 @  o -?d ˜½f ô @  p .?d ؽf–™7* @  q /?d ¾f²¸ß @  r 0?d X¾f0ޝ @  s 1?d ˜¾f§Ü»µ @  t 2?d ؾf%M¬k @  u 3?d ¿f±‡Ž| @  v 4?d X¿f3™¢ @  w 5?d ˜¿f¯¿) @uÐÀf  x 6?d Ø¿fé⊠@  y7?d 0Àf¬‹þ @  z8?d pÀf.éÞ @  {9?d °Àf¹Hýj @  |:?d ðÀf;Ùê´ @  };?d 0Áf¯È£ @  ~<?d pÁf-‚ß} @  =?d °Áf@Ý@­ @  €>?d ðÁfÂLWs @  ??d 0Âf‹-ôK @  ‚@?d pÂf ¼ã• @  ƒA?d °Âfžî÷! @  „B?d ðÂfàÿ @  …C?d 0ÃfˆµÂè @  †D?d pÃf $Õ6 @  ‡E?d °Ãf–e @  ˆF?d ðÃfrË @  ‰G?d 0ÄfÑÀÌ @  ŠH?d pÄfSQÛ @  ‹I?d °ÄfÄÏv @  ŒJ?d ðÄfF’ب @  K?d 0ÅfÒXú¿ @  ŽL?d pÅfPÉía @  M?d °ÅfaÁc¢ @  N?d ðÅfãPt| @  ‘O?d 0ÆfÇÖû‰ @  ’P?d pÆfEGìW @  “Q?d °ÆfÒøã @  ”R?d ðÆfP„ï= @  •S?d 0ÇfÄNÍ* @  –T?d pÇfFßÚô @  —U?d °ÇfÚvj× @  ˜V?d ðÇfXç}  @  ™W?d 0Èf°Š¼Ì @  šX?d pÈf2« @  ›Y?d °Èf¥I¿¦ @  œZ?d ðÈf'بx @  [?d 0Éf³Šo @  ž\?d pÉf1ƒ± @  Ÿ]?d °Éf4 @   ^?d ðÉf“# @  ¡_?d 0Êf*-•5 @  ¢`?d pÊf¨¼‚ë @  £a?d °Êf?î–_ @  ¤b?d ðÊf½ @  ¥c?d 0Ëf)µ£– @  ¦d?d pËf«$´H @  §e?d °Ëf7k @  ¨f?d ðËfµµ @  ©g?d 0ÌfpÀ­b @  ªh?d pÌfòQº¼ @  «i?d °Ìfe® @  ¬j?d ðÌfç’¹Ö @  ­k?d 0ÍfsX›Á @  ®l?d pÍfñÉŒ @  ¯m?d °ÍfÀÁÜ @  °n?d ðÍfBP @  ±o?d 0ÎffÖš÷ @  ²p?d pÎfäG) @  ³q?d °Îfs™ @  ´r?d ðÎfñ„ŽC @  µs?d 0ÏfeN¬T @  ¶t?d pÏfç߻Р@  ·u?d °Ïf{v © @  ¸v?d ðÏfùçw @  ¹w?d 0Ðf›«í @  ºx?d pÐf:úà @  »y?d °ÐfŽhîw @  ¼z?d ðÐf ùù© @  ½{?d 0Ñf˜3Û¾ @  ¾|?d pÑf¢Ì` @  ¿}?d °Ñf”«c @  À~?d ðÑf:t_ @  Á?d 0ÒfBƒõ @  Â€?d pÒfÀ ”+ @  Ã?d °ÒfW^€Ÿ @  Ä‚?d ðÒfÕÏ—A @  Åƒ?d 0ÓfAµV @  Æ„?d pÓfÔ¢ˆ @  Ç…?d °Óf_=« @  È†?d ðÓfݬu @  É‡?d 0Ôfp»¢ @  Êˆ?d pÔfšá¬| @  Ë‰?d °Ôf ³¸È @  ÌŠ?d ðÔf"¯ @  Í‹?d 0Õfè @  ÎŒ?d pÕf™yšß @  Ï?d °Õf¨q @  ÐŽ?d ðÕf*à @  Ñ?d 0ÖffŒ7 @  Ò?d pÖfŒ÷›é @  Ó‘?d °Öf¥] @  Ô’?d ðÖf™4˜ƒ @  Õ“?d 0×f þº” @  Ö”?d p×fo­J @  ×•?d °×fÆi @  Ø–?d ð×f‘W · @  Ù—?d 0Øfy:Ër @  Ú˜?d pØfû«Ü¬ @  Û™?d °ØflùÈ @  Üš?d ðØfîh߯ @  Ý›?d 0Ùfz¢ýÑ @  Þœ?d pÙfø3ê @  ß?d °ÙfØ=C| @  àž?d ðÙfZ¬T¢ @  áŸ?d 0Úfãâ‹ @  â ?d€ pÚfYru @   ¡?d °Úf/a[è @   ¢?d ðÚf­ðL6 @   £?d 0Ûfüs•Ì @   ¤?d pÛf~â‚ @   ¥?d °Ûf,ùmK @   ¦?d ðÛf®hz• @   §?d 0Üf¥›8 @   ¨?d pÜf'—Œæ @    ©?d °ÜfuŒc¿ @    ª?d ðÜf÷ta @    «?d 0Ýf¦ž­› @    ¬?d pÝf$ºE @    ­?d °ÝfvU @   ®?d ðÝfô…B @   ¯?d 0Þf³¬­ @   °?d pÞf1»s @   ±?d °ÞfcšT* @   ²?d ðÞfá Cô @   ³?d 0ßf°ˆš @   ´?d pßf2Ð @   µ?d uÐàf/°ßf`b‰ @   ¶?d ðßfÛT©‚ @    ·?d HàfÐÐåÖ @    ¸?d ˆàfð%ç( @    ¹?d ÈàfZQ @    º?d áfБ¹ @    »?d HáfÓHÓu @    ¼?d ˆáfó½Ñ‹ @    ½?d ÈáfÂ+ò @    ¾?d âfž†‹3 @    ¿?d Hâfº'Ù> @    À?d ˆâfšÒÛÀ @   ! Á?d Èâfj­!¹ @   " Â?d ãfºå­Q @   # Ã?d Hãf¹¿ï @   $ Ä?d ˆãf™Jíc @   % Å?d Èãfi5 @   & Æ?d äfp{ä @   ' Ç?d HäfàÊái @   ( È?d ˆäfÀ?ã— @   ) É?d Èäf0@î @   * Ê?d åfà• @   + Ë?d HåfãR×Ê @   , Ì?d ˆåfçÕ4 @   - Í?d Èåf3Ø/M @   . Î?d æf®œŒ @   / Ï?d HæföÜÖü @   0 Ð?d ˆæfÖ)Ô @   1 Ñ?d Èæf&V.{ @   2 Ò?d çfö¢“ @   3 Ó?d HçfõDà_ @   4 Ô?d ˆçfձ⡠@   5 Õ?d Èçf%ÎØ @   6 Ö?d èf1”Å @   7 ×?d Hèf€‘¹ @   8 Ø?d ˆèf¡u“G @   9 Ù?d ÈèfQ i> @   : Ú?d éfBåÖ @   ; Û?d Héf‚§ @   < Ü?d ˆéf¢í¥ä @   = Ý?d ÈéfR’_ @   > Þ?d êfÏÖÿ\ @   ? ß?d Hêfµ ¾Ò @   @ à?d ˆêf•Õ¼, @   A á?d ÈêfeªFU @   B â?d ëfµâʽ @   C ã?d Hëf¶¸ˆq @   D ä?d ˆëf–MŠ @   E å?d Èëff2pö @   F æ?d ìf|ƒù @   G ç?d Hìfï͆… @   H è?d ˆìfÏ8„{ @   I é?d Èìf?G~ @   J ê?d ífïòê @   K ë?d HífìU°& @   L ì?d ˆífÌ ²Ø @   M í?d Èíf<ßH¡ @   N î?d îf¡›è` @   O ï?d HîfùÛ± @   P ð?d ˆîfÙ.³î @   Q ñ?d Èîf)QI— @   R ò?d ïfùÅ @   S ó?d HïfúC‡³ @   T ô?d ˆïfÚ¶…M @   U õ?d Èïf*É4 @   V ö?d ðf”Æ @   W ÷?d Hðf¦Æú @   X ø?d ˆðf$SÄ @   Y ù?d ÈðfÔ,>} @   Z ú?d ñfd²• @   [ û?d Hñf>ðY @   \ ü?d ˆñf'Ëò§ @   ] ý?d Èñf×´Þ @   ^ þ?d òfJð¨ @   _ ÿ?d Hòf¾ÒΩ @   ` ?d ˆòfž'ÌW @   a ?d ÈòfnX6. @   b ?d óf¾ºÆ @   c ?d Hóf½Jø  @   d ?d ˆóf¿úô @   e ?d ÈófmÀ @   f ?d ôftŽó‚ @   g ?d Hôfä?öþ @   h ?d ˆôfÄÊô @   i  ?d Èôf4µy @   j  ?d õfäý‚‘ @   k  ?d Hõfç§À] @   l  ?d ˆõfÇR£ @   m  ?d Èõf7-8Ú @   n ?d öfªi˜ @   o ?d Höfò)Ák @   p ?d ˆöfÒÜÕ @   q ?d Èöf"£9ì @   r ?d ÷fòëµ @   s ?d H÷fñ±÷È @   t ?d ˆ÷fÑDõ6 @   u ?d È÷f!;O @   v ?d øfăR @   w ?d Høf…u†. @   x ?d ˆøf¥€„Ð @   y ?d ÈøfUÿ~© @   z ?d ùf…·òA @   { ?d Hùf†í° @   | ?d ˆùf¦²s @   } ?d ÈùfVgH  @   ~ ?d úfË#èË @    ?d HúfRƒ™t @   €  ?d ˆúfrv›Š @    !?d Èúf‚ aó @   ‚ "?d ûfRAí @   ƒ #?d HûfQ¯× @   „ $?d ˆûfqî­) @   … %?d Èûf‘WP @   † &?d üf˜ß¤_ @   ‡ '?d Hüfn¡# @   ˆ (?d ˆüf(›£Ý @   ‰ )?d ÈüfØäY¤ @   Š *?d ýf¬ÕL @   ‹ +?d Hýf ö—€ @   Œ ,?d ˆýf+•~ @    -?d ÈýfÛ|o @   Ž .?d þfF8ÏÆ @    /?d Hþfx–¶ @    0?d ˆþf>”H @   ‘ 1?d ÈþfÎòn1 @   ’ 2?d ÿfºâÙ @   “ 3?d Hÿfà  @   ” 4?d ˆÿf=¢ë @   • uÐg5?d ÈÿfÍjX’ @   – 6?d g‚Þpc @   — 7?d `gou @   ˜ 8?d  g2šwá @   ™ 9?d àgÂå˜ @   š :?d g­p @   › ;?d `g÷C¼ @   œ <?d  g1AB @    =?d àgÁ}»; @   ž >?d g\9ú @   Ÿ ??d `gx˜I÷ @     @?d  gXmK  @   ¡ A?d àg¨±p @   ¢ B?d gxZ=˜ @   £ C?d `g{T @   ¤ D?d  g[õ}ª @   ¥ E?d àg«Š‡Ó @   ¦ F?d g²ÄtÜ @   § G?d `g"uq  @   ¨ H?d  g€s^ @   © I?d àgòÿ‰' @   ª J?d g"·Ï @   « K?d `g!íG @   ¬ L?d  gEý @   ­ M?d àgñg¿„ @   ® N?d gl#E @   ¯ O?d `g4cF5 @   ° P?d  g–DË @   ± Q?d àgäé¾² @   ² R?d g4¡2Z @   ³ S?d `g7ûp– @   ´ T?d  grh @   µ U?d àgçqˆ @   ¶ V?d gÓŽ  @   · W?d `gC?p @   ¸ X?d  gcÊŽ @   ¹ Y?d àg“µù÷ @   º Z?d gCýu @   » [?d ` g@§7Ó @   ¼ \?d   g`R5- @   ½ ]?d à g-ÏT @   ¾ ^?d g io• @   ¿ _?d ` gwŸ. @   À `?d   gWj,å @   Á a?d à g§Öœ @    b?d gw]Zt @   à c?d ` gt¸ @   Ä d?d   gTòF @   Å e?d à g¤à? @   Æ f?d g½Ã0 @   Ç g?d ` g-rL @   È h?d   g ‡² @   É i?d à gýøîË @   Ê j?d g-°b# @   Ë k?d ` g.ê ï @   Ì l?d   g" @   Í m?d à gþ`Øh @   Î n?d gc$x© @   Ï o?d `g;d!Ù @   Ð p?d  g‘#' @   Ñ q?d àgëîÙ^ @   Ò r?d g;¦U¶ @   Ó s?d `g8üz @   Ô t?d  g „ @   Õ u?d àgèvïý @   Ö v?d gV¨SO @   × w?d `gÆV3 @   Ø x?d  gæìTÍ @   Ù y?d àg“®´ @   Ú z?d gÆÛ"\ @   Û {?d `gÅ` @   Ü |?d  gåtbn @   Ý }?d àg ˜ @   Þ ~?d gˆO8Ö @   ß ?d `g±(>I @   à €?d  g‘Ý<· @   á ?d àga¢ÆÎ @   â ‚?d€ gÅ)V€ @  ! ƒ?d `g'2\e @  ! „?d  gÇ^› @  ! …?d àg2ñ_ @  ! †?d g+¿¬ @  ! ‡?d `gu¼ö @  ! ˆ?d  gUIôø @  ! ‰?d àgk„Qû @  ! Š?d g»ÌÝ @  ! ‹?d `g}ßd2 @  ! Œ?d  g]*fÌ @  ! ?d àghgX @  ! Ž?d gõXÇ™ @  ! ?d `gÎ ÿs @  ! ?d  gîþý @  ! ‘?d àg}’fn @  ! ’?d g­Úê† @  ! “?d `gkÉS§ @  ! ”?d  gKq @  !$ ¦?d gŠ¿Í~ @  !% §?d `gÔ¼—x @  !& ¨?d  gôI•† @  !' ©?d àgÊ„0… @  !( ª?d g̼m @  !) «?d `gÜßL @  !* ¬?d  gü*² @  !+ ­?d àgÉ& @  !, ®?d gTX¦ç @  !- ¯?d `go ž  @  !. °?d  gOþœó @  !/ ±?d àgÜ’ @  !0 ²?d g Ú‹ø @  !1 ³?d `gÊÉ2Ù @  !2 ´?d  gê<0'uÐ g @  !3 µ?d àgß 1³ @  !4 ¶?d 8 g®ïÕ @  !5 ·?d x gðµÓ @  !6 ¸?d ¸ gÐ÷·- @  !7 ¹?d ø gî:. @  !8 º?d 8!g>ržÆ @  !9 »?d x!gøa'ç @  !: ¼?d ¸!gØ”% @  !; ½?d ø!gí¢$ @  !< ¾?d 8"gpæ„L @  != ¿?d x"g&Rk @  !> À?d ¸"g§’• @  !? Á?d ø"g*Ê(T @  !@ Â?d 8#gú‚¤¼ @  !A Ã?d x#g<‘ @  !B Ä?d ¸#gdc @  !C Å?d ø#g)R÷ @  !D Æ?d 8$g0íø @  !E Ç?d x$gn·þ @  !F È?d ¸$gNêµ @  !G É?d ø$gp' @  !H Ê?d 8%g oœë @  !I Ë?d x%gf|%Ê @  !J Ì?d ¸%gF‰'4 @  !K Í?d ø%gs¿&  @  !L Î?d 8&gîû†a @  !M Ï?d x&gÕ¨¾‹ @  !N Ð?d ¸&gõ]¼u @  !O Ñ?d ø&g_öûC @  !PÒ?d 8'g¾w« @  !QÓ?d x'gI­ÎŠ @  !RÔ?d ¸'giXÌt @  !SÕ?d ø'g\nÍà @  !TÖ?d 8(gh‘Aý @  !U×?d x(g6’û @  !VØ?d ¸(gg @  !WÙ?d ø(g(ª¼ @  !XÚ?d 8)gøâ0î @  !YÛ?d x)g>ñ‰Ï @  !ZÜ?d ¸)g‹1 @  ![Ý?d ø)g+2Š¥ @  !\Þ?d 8*g¶v*d @  !]ß?d x*g’+R @  !^à?d ¸*g0g)¬ @  !_á?d ø*g² •ÿ @  !`â?d 8+gbE @  !aã?d x+g¤V 6 @  !bä?d ¸+g„£¢È @  !cå?d ø+g±•£\ @  !dæ?d 8,g¨ÛPS @  !eç?d x,göØ U @  !fè?d ¸,gÖ-« @  !gé?d ø,gèà­¨ @  !hê?d 8-g8¨!@ @  !ië?d x-gþ»˜a @  !jì?d ¸-gÞNšŸ @  !kí?d ø-gëx›  @  !lî?d 8.gv<;Ê @  !mï?d x.gMo  @  !nð?d ¸.gmšÞ @  !oñ?d ø.gþöš= @  !pò?d 8/g.¾Õ @  !qó?d x/gè­¯ô @  !rô?d ¸/gÈX­  @  !sõ?d ø/gýn¬ž @  !tö?d 80gC°, @  !u÷?d x0g³J* @  !vø?d ¸0g=FHÔ @  !wù?d ø0g‹í× @  !xú?d 81gÓÃa? @  !yû?d x1gÐØ @  !zü?d ¸1g5%Úà @  !{ý?d ø1gÛt @  !|þ?d 82gW{µ @  !}ÿ?d x2g©Bn  @  !~?d ¸2g‰·lò @  !?d ø2gFŒæ @  !€?d 83g–Äjê @  !?d x3gP×ÓË @  !‚?d ¸3gp"Ñ5 @  !ƒ?d ø3gEС @  !„?d 84g\Z#® @  !…?d x4gYy¨ @  !†?d ¸4g"¬{V @  !‡ ?d ø4gaÞU @  !ˆ ?d 85gÌ)R½ @  !‰ ?d x5g :ëœ @  !Š ?d ¸5g*Ïéb @  !‹ ?d ø5gùèö @  !Œ?d 86g‚½H7 @  !?d x6g¹îpÝ @  !Ž?d ¸6g™r# @  !?d ø6g wéÀ @  !?d 87gÚ?e( @  !‘?d x7g,Ü  @  !’?d ¸7g<ÙÞ÷ @  !“?d ø7g ïßc @  !”?d 88g=S~ @  !•?d x8gc x @  !–?d ¸8gCæ † @  !—?d ø8g}+®… @  !˜?d 89g­c"m @  !™?d x9gkp›L @  !š?d ¸9gK…™² @  !›?d ø9g~³˜& @  !œ?d 8:gã÷8ç @  !?d x:gE9Ñ @  !ž ?d ¸:geæ;/ @  !Ÿ!?d ø:g猇| @  ! "?d 8;g7Ä ” @  !¡#?d x;gñײµ @  !¢$?d ¸;gÑ"°K @  !£%?d ø;gä±ß @  !¤&?d 8g#½)I @  !­/?d x>gî£ @  !®0?d ¸>g8] @  !¯1?d ø>g«wˆ¾ @  !°2?d 8?g{?V @  !±3?d x?g½,½w @  !²4?duÐ@g7 ¸?gÙ¿‰ @  !³5?d ø?g‘(bÈ @  !´ 6?d P@gR„Øô @  !µ 7?d @g®ã—Ò @  !¶ 8?d Ð@g,r€  @  !· 9?d Ag@f¾9 @  !¸ :?d PAgÂ÷©ç @  !¹ ;?d Ag¦€æ @  !º <?d ÐAg$8 @  !» =?d Bgò¤³ @  !¼ >?d PBgŒc³m @  !½ ??d Bgx³²j @  !¾ @?d ÐBgú"¥´ @  !¿ A?d Cg„–„C @  !À B?d PCg“ @  !Á C?d Cgbp?œ @  ! D?d ÐCgàá(B @  !à E?d DgNÍ @  !Ä F?d PDgÌ™ÚÙ @  !Å G?d Dg0þ•ÿ @  !Æ H?d ÐDg²o‚! @  !Ç I?d EgÞ{¼ @  !È J?d PEg\ê«Ê @  !É K?d Eg8Ë @  !Ê L?d ÐEgº  @  !Ë M?d Fg咽 @  !Ì N?d PFg~±@ @  !Í O?d Fg‹IœŠ @  !Î P?d ÐFg Ø‹T @  !Ï Q?d GgÈm‹ @  !Ð R?d PGgJüœ_ @  !Ñ S?d Gg.‹0^ @  !Ò T?d ÐGg¬'€ @  !Ó U?d Hg/B½× @  !Ô V?d PHg­Óª  @  !Õ W?d HgQ´å/ @  !Ö X?d ÐHgÓ%òñ @  !× Y?d Ig¿1ÌÄ @  !Ø Z?d PIg= Û @  !Ù [?d IgY×w @  !Ú \?d ÐIgÛF`Å @  !Û ]?d Jgñ¥ÖN @  !Ü ^?d PJgs4Á @  !Ý _?d Jgw´Õ† @  !Þ `?d ÐJgõ%ÂX @  !ß a?d Kg%–å= @  !à b?d PKg§òã @  !á c?d KgÃp^â @  !â d?d€ ÐKg€¦¾< @  " e?d LgÏP @  " f?d PLgMŸŽ @  " g?d Lgt±°E @  " h?d ÐLgö §› @  " i?d MgT†ÆÔ @  " j?d PMgÖÑ  @  " k?d Mg|Ò"q @  " l?d ÐMgþC5¯ @  " m?d NgéxÉ @  " n?d PNg“xo @  " o?d NgϹ0 @  " p?d ÐNgM—®î @  " q?d Ogï1Ï¡ @  " r?d POgm Ø @  " s?d OgjÄä @  " t?d ÐOgèU: @  " u?d Pg$eS/ @  " v?d PPg¦ôDñ @  " w?d PgŸÚð: @  " x?d ÐPgKçä @  " y?d Qg¿í†« @  " z?d PQg=|‘u @  " {?d Qg—¹b @  " |?d ÐQg(uÐ @  " }?d Rgú‚8¶ @  " ~?d PRgx/h @  " ?d RgTL @  " €?d ÐRgÖÝ–Î @  " ?d Sgt{÷ @  " ‚?d PSgöêà_ @  " ƒ?d Sgàˆ t @  " „?d ÐSgbª @  "! …?d Tg ¹ @  "" †?d PTg‹(Ü @  "# ‡?d Tg²  @  "$ ˆ?d ÐTg0—·É @  "% ‰?d Ug’1Ö† @  "& Š?d PUg ÁX @  "' ‹?d Ugºe2# @  "( Œ?d ÐUg8ô%ý @  ") ?d Vg×^h› @  "* Ž?d PVgUÏE @  "+ ?d Vg ±©b @  ", ?d ÐVg‹ ¾¼ @  "- ‘?d Wg)†ßó @  ". ’?d PWg«È- @  "/ “?d Wg¬s¶ @  "0 ”?d ÐWg.âh @  "1 •?d XghósÒ @  "2 –?d PXgêbd  @  "3 —?d XgÓLÐÇ @  "4 ˜?d ÐXgQÝÇ @  "5 ™?d Ygó{¦V @  "6 š?d PYgq걈 @  "7 ›?d YgÛ/Bó @  "8 œ?d ÐYgY¾U- @  "9 ?d Zg¶K @  ": ž?d PZg4…• @  "; Ÿ?d ZgõLàn @  "<  ?d ÐZgwÝ÷° @  "= ¡?d [gÕ{–ÿ @  "> ¢?d P[gWê! @  "? £?d [gïm˜ @  "@ ¤?d Ð[gmzF @  "A ¥?d \g¾dî @  "B ¦?d P\g„/s0 @  "C §?d \g½Çû @  "D ¨?d Ð\g?Ð% @  "E ©?d ]g6±j @  "F ª?d P]g§¦´ @  "G «?d ]gµbUÏ @  "H ¬?d Ð]g7óB @  "I ­?d ^gØYw @  "J ®?d P^gZÈ© @  "K ¯?d ^g¶ÎŽ @  "L °?d Ð^g„'ÙP @  "M ±?d _g&¸ @  "N ²?d P_g¤¯Á @  "O ³?d _g£tbZ @  "uÐ`gP ´?d Ð_g!åu„ @  "Q µ?d (`gíó-» @  "R ¶?d h`gob:e @  "S ·?d ¨`gVLŽ® @  "T ¸?d è`gÔÝ™p @  "U ¹?d (agv{ø? @  "V º?d hagôêïá @  "W »?d ¨ag^/š @  "X ¼?d èagܾ D @  "Y ½?d (bg3F" @  "Z ¾?d hbg±…Qü @  "[ ¿?d ¨bg€« @  "\ À?d èbg¼È @  "] Á?d (cg +݇ @  "^ Â?d hcg"ºÊY @  "_ Ã?d ¨cg4Ø r @  "` Ä?d ècg¶I7¬ @  "a Å?d (dgÝé) @  "b Æ?d hdg_x>Ú @  "c Ç?d ¨dgfVŠ @  "d È?d èdgäÇÏ @  "e É?d (egFaü€ @  "f Ê?d hegÄðë^ @  "g Ë?d ¨egn5% @  "h Ì?d èegì¤û @  "i Í?d (fgB @  "j Î?d hfgŸUC @  "k Ï?d ¨fgÝáƒd @  "l Ð?d èfg_p”º @  "m Ñ?d (ggýÖõõ @  "n Ò?d hggGâ+ @  "o Ó?d ¨ggx#/° @  "p Ô?d èggú²8n @  "q Õ?d (hg¼£YÔ @  "r Ö?d hhg>2N  @  "s ×?d ¨hgúÁ @  "t Ø?d èhg…í @  "u Ù?d (ig'+ŒP @  "v Ú?d hig¥º›Ž @  "w Û?d ¨ighõ @  "x Ü?d èigî+ @  "y Ý?d (jgbD2M @  "z Þ?d hjgàÕ%“ @  "{ ß?d ¨jg!Êh @  "| à?d èjg£Ý¶ @  "} á?d (kg+¼ù @  "~ â?d hkgƒº«' @  " ã?d ¨kg؉w¯ @  "€ ä?d èkgZ`q @  " å?d (lg1¸~Ù @  "‚ æ?d hlg³)i @  "ƒ ç?d ¨lgŠÝÌ @  "„ è?d èlg–Ê @  "… é?d (mgª0«] @  "† ê?d hmg(¡¼ƒ @  "‡ ë?d ¨mg‚dOø @  "ˆ ì?d èmgõX& @  "‰ í?d (ngï_@ @  "Š î?d hngmΞ @  "‹ ï?d ¨ng1°Ô¹ @  "Œ ð?d èng³!Ãg @  " ñ?d (og‡¢( @  "Ž ò?d hog“µö @  " ó?d ¨og”rxm @  " ô?d èogão³ @  "‘ õ?d (pgÚÓ>¦ @  "’ ö?d hpgXB)x @  "“ ÷?d ¨pgal³ @  "” ø?d èpgãýŠm @  "• ù?d (qgA[ë" @  "– ú?d hqgÃÊüü @  "— û?d ¨qgi‡ @  "˜ ü?d èqgëžY @  "™ ý?d (rg4U? @  "š þ?d hrg†¥Bá @  "› ÿ?d ¨rgd(Ш @  "œ  ?d èrgæ¹Çv @  "  ?d (sgD¦9 @  "ž  ?d hsgÆŽ±ç @  "Ÿ  ?d ¨sgÐì[Ì @  "   ?d èsgR}L @  "¡  ?d (tg9ÝRº @  "¢  ?d htg»LEd @  "£  ?d ¨tg‚bñ¯ @  "¤  ?d ètgóæq @  "¥  ?d (ug¢U‡> @  "¦  ?d hug Äà @  "§  ?d ¨ugŠc› @  "¨  ?d èugtE @  "©  ?d (vgç:9# @  "ª  ?d hvge«.ý @  "«  ?d ¨vg9ÕøÚ @  "¬  ?d èvg»Dï @  "­  ?d (wgâŽK @  "®  ?d hwg›s™• @  "¯  ?d ¨wgœT @  "°  ?d èwg†CÐ @  "±  ?d (xgX—"j @  "²  ?d hxgÚ5´ @  "³  ?d ¨xgã( @  "´  ?d èxga¹–¡ @  "µ  ?d (ygÃ÷î @  "¶  ?d hygAŽà0 @  "·  ?d ¨ygëKK @  "¸  ?d èygiÚ• @  "¹  ?d (zg†pIó @  "º  ?d hzgá^- @  "»  ?d ¨zgÅ(±Ö @  "¼  ?d èzgG¹¦ @  "½ ! ?d ({gåÇG @  "¾ " ?d h{ggŽÐ™ @  "¿ # ?d ¨{gßë<  @  "À $ ?d è{g]z+þ @  "Á % ?d (|g6Ú5V @  " & ?d h|g´K"ˆ @  "à ' ?d ¨|ge–C @  "Ä ( ?d è|gô @  "Å ) ?d (}g­RàÒ @  "Æ * ?d h}g/Ã÷  @  "Ç + ?d ¨}g…w @  "È , ?d è}g—© @  "É - ?d (~gè=^Ï @  "Ê . ?d h~gj¬I @  "Ë / ?d ¨~g6ÒŸ6 @  "Ì 0 ?d è~g´Cˆè @  "Í 1 ?d (gåé§ @  "Î 2 ?d hg”tþy @  "Ï 3 ?d ¨guЀg'“3â @  "Ð 4 ?d èg$< @  "Ñ 5 ?d @€g Ñ+ï @  "Ò 6 ?d €€g-$) @  "Ó 7 ?d À€g¶nˆú @  "Ô 8 ?d gf& @  "Õ 9 ?d @g–Yþk @  "Ö : ?d €g¶¬ü• @  "× ; ?d Àg¾ Î @  "Ø < ?d ‚g#Iº @  "Ù = ?d @‚gÓ6@v @  "Ú > ?d €‚góÃBˆ @  "Û ? ?d À‚g`>­B @  "Ü @ ?d ƒg°v!ª @  "Ý A ?d @ƒg@ ÛÓ @  "Þ B ?d €ƒg`üÙ- @  "ß C ?d ÀƒgÔú&& @  "à D ?d „gÍ´Õ) @  "á E ?d @„g=Ë/P @  "â F ?d€ €„giý1 @  # G ?d À„göØÊ @  # H ?d …gþT" @  # I ?d @…göˆU¶ @  # J ?d €…gÖ}WH @  # K ?d À…gnîi @  # L ?d †g*N¨ @  # M ?d @†g³çë« @  # N ?d €†g“éU @  # O ?d À†g¨AÑ¿ @  # P ?d ‡gx ]W @  # Q ?d @‡gM?\à @  # R ?d €‡gmÊ^= @  # S ?d À‡g«Ùç @  # T ?d ˆgŸ&k @  # U ?d @ˆg Jðâ @  # V ?d €ˆg,¿ò @  # W ?d Àˆgr¼¨ @  # X ?d ‰g¢ô$ò @  # Y ?d @‰g—Â%f @  # Z ?d €‰g·7'˜ @  # [ ?d À‰gq$ž¹ @  # \ ?d Šgì`>x @  # ] ?d @ŠgÒ­›{ @  # ^ ?d €ŠgòX™… @  # _ ?d ÀŠgT¼˜³ @  # ` ?d ‹g„ô[ @  # a ?d @‹g±ÂÏ @  # b ?d €‹g‘71 @  # c ?d À‹gW$® @  # d ?d ŒgNj] @  # e ?d @ŒgÌáL @  # f ?d €Œgìõã² @  #! g ?d ÀŒg²ö¹´ @  #" h ?d gb¾5\ @  ## i ?d @gWˆ4È @  #$ j ?d €gw}66 @  #% k ?d Àg±n @  #& l ?d Žg,*/Ö @  #' m ?d @ŽgçŠÕ @  #( n ?d €Žg2ˆ+ @  #) o ?d ÀŽg A°Á @  #* p ?d gÙ <) @  #+ q ?d @gì?=½ @  #, r ?d €gÌÊ?C @  #- s ?d Àg Ù†b @  #. t ?d g´:Ð @  #/ u ?d @g'k¡3 @  #0 v ?d €gž£Í @  #1 w ?d ÀgYùË @  #2 x ?d ‘g‰Õu# @  #3 y ?d @‘g¼ãt· @  #4 z ?d €‘gœvI @  #5 { ?d À‘gZÏh @  #6 | ?d ’gÇAo© @  #7 } ?d @’gùŒÊª @  #8 ~ ?d €’gÙyÈT @  #9  ?d À’g’ ˆá @  #: € ?d “gBC  @  #;  ?d @“gwu @  #< ‚ ?d €“gW€c @  #= ƒ ?d À“g‘“¾B @  #> „ ?d ”gˆÝMM @  #? … ?d @”g¤°÷Œ @  #@ † ?d €”g„Eõr @  #A ‡ ?d À”gÚF¯t @  #B ˆ ?d •g #œ @  #C ‰ ?d @•g?8" @  #D Š ?d €•gÍ ö @  #E ‹ ?d À•gÙÞ™× @  #F Œ ?d –gDš9 @  #G  ?d @–gzWœ @  #H Ž ?d €–gZ¢žë @  #I  ?d À–gañ¦ @  #J  ?d —g±¹*é @  #K ‘ ?d @—g„+} @  #L ’ ?d €—g¤z)ƒ @  #M “ ?d À—gbi¢ @  #N ” ?d ˜gV–¿ @  #O • ?d @˜gÅú‡\ @  #P – ?d €˜gå…¢ @  #Q — ?d À˜g» ߤ @  #R ˜ ?d ™gkDSL @  #S ™ ?d @™g^rRØ @  #T š ?d €™g~‡P& @  #U › ?d À™g¸”é @  #V œ ?d šg%ÐIÆ @  #W  ?d @šgìÅ @  #X ž ?d €šg;èî; @  #Y Ÿ ?d Àšg ï  @  #Z   ?d ›gMDcå @  #[ ¡ ?d @›gxrbq @  #\ ¢ ?d €›gX‡` @  #] £ ?d À›gž”Ù® @  #^ ¤ ?d œg‡Ú*¡ @  #_ ¥ ?d @œg°–ò @  #` ¦ ?d €œg%E”  @  #a § ?d Àœg{FÎ  @  #b ¨ ?d g«Bâ @  #c © ?d @gž8Cv @  #d ª ?d €g¾ÍAˆ @  #e « ?d ÀgxÞø© @  #f ¬ ?d žgåšXh @  #g ­ ?d @žgÛWýk @  #h ® ?d €žgû¢ÿ• @  #i ¯ ?d ÀžgÀñÇ @  #j ° ?d Ÿg¹K— @  #k ± ?d @Ÿg%J @  #l ² ?d €ŸgzHý @  #m ³ uРg?d ÀŸgÃiñÜ @  #n ´ ?d  g²b/º @  #o µ ?d X g!´Y @  #p ¶ ?d ˜ gû¶§ @  #q · ?d Ø g_øì¡ @  #r ¸ ?d ¡g°`I @  #s ¹ ?d X¡gº†aÝ @  #t º ?d ˜¡gšsc# @  #u » ?d Ø¡g\`Ú @  #v ¼ ?d ¢gÁ$zà @  #w ½ ?d X¢gÿéßÀ @  #x ¾ ?d ˜¢gßÝ> @  #y ¿ ?d Ø¢g‰¨É @  #z À ?d £gYàEñ @  #{ Á ?d X£glÖDe @  #|  ?d ˜£gL#F› @  #} à ?d Ø£gŠ0ÿº @  #~ Ä ?d ¤g“~ µ @  # Å ?d X¤g\E†E @  #€ Æ ?d ˜¤g|°„» @  # Ç ?d ؤg"³Þ½ @  #‚ È ?d ¥gòûRU @  #ƒ É ?d X¥gÇÍSÁ @  #„ Ê ?d ˜¥gç8Q? @  #… Ë ?d Ø¥g!+è @  #† Ì ?d ¦g¼oHß @  #‡ Í ?d X¦g‚¢íÜ @  #ˆ Î ?d ˜¦g¢Wï" @  #‰ Ï ?d ئg™×È @  #Š Ð ?d §gIL[  @  #‹ Ñ ?d X§g|zZ´ @  #Œ Ò ?d ˜§g\XJ @  # Ó ?d اgšœák @  #Ž Ô ?d ¨g®cmv @  # Õ ?d X¨g=ö• @  # Ö ?d ˜¨gúôk @  #‘ × ?d بgCù®m @  #’ Ø ?d ©g“±"… @  #“ Ù ?d X©g¦‡# @  #” Ú ?d ˜©g†r!ï @  #• Û ?d Ø©g@a˜Î @  #– Ü ?d ªgÝ%8 @  #— Ý ?d Xªgãè  @  #˜ Þ ?d ˜ªgßò @  #™ ß ?d تgeùžÄ @  #š à ?d «gµ±, @  #› á ?d X«g€‡¸ @  #œ â ?d ˜«g rF @  # ã ?d Ø«gfa¨g @  #ž ä ?d ¬g/[h @  #Ÿ å ?d X¬gýEç; @  #  æ ?d ˜¬gݰåÅ @  #¡ ç ?d جgƒ³¿Ã @  #¢ è ?d ­gSû3+ @  #£ é ?d X­gfÍ2¿ @  #¤ ê ?d ˜­gF80A @  #¥ ë ?d Ø­g€+‰` @  #¦ ì ?d ®go)¡ @  #§ í ?d X®g#¢Œ¢ @  #¨ î ?d ˜®gWŽ\ @  #© ï ?d Ø®g8¶¶ @  #ª ð ?d ¯gèL:^ @  #« ñ ?d X¯gÝz;Ê @  #¬ ò ?d ˜¯gý94 @  #­ ó ?d دg;œ€ @  #® ô ?d °g…B<§ @  #¯ õ ?d X°g.§D @  #° ö ?d ˜°g6Û¥º @  #± ÷ ?d ذghØÿ¼ @  #² ø ?d ±g¸sT @  #³ ù ?d X±g¦rÀ @  #´ ú ?d ˜±g­Sp> @  #µ û ?d رgk@É @  #¶ ü ?d ²göiÞ @  #· ý ?d X²gÈÉÌÝ @  #¸ þ ?d ˜²gè<Î# @  #¹ ÿ ?d زgÜ)Ûš @  #º !?d ³g aWr @  #» !?d X³g9WVæ @  #¼ !?d ˜³g¢T @  #½ !?d سgß±í9 @  #¾ !?d ´gÆÿ6 @  #¿ !?d X´gê’¤÷ @  #À !?d ˜´gÊg¦  @  #Á !?d Ø´g”dü @  # !?d µgD,pç @  #à  !?d Xµgqqs @  #Ä  !?d ˜µgQïs @  #Å  !?d صg—üʬ @  #Æ  !?d ¶g ¸jm @  #Ç  !?d X¶g4uÏn @  #È !?d ˜¶g€Í @  #É !?d ضg/Óõz @  #Ê !?d ·gÿ›y’ @  #Ë !?d X·gÊ­x @  #Ì !?d ˜·gêXzø @  #Í !?d Ø·g,KÃÙ @  #Î !?d ¸g´OÄ @  #Ï !?d X¸g‹ØÔ' @  #Ð !?d ˜¸g«-ÖÙ @  #Ñ !?d ظgõ.Œß @  #Ò !?d ¹g%f7 @  #Ó !?d X¹gP£ @  #Ô !?d ˜¹g0¥] @  #Õ !?d عgö¶º| @  #Ö !?d ºgkò½ @  #× !?d XºgU?¿¾ @  #Ø !?d ˜ºguʽ@ @  #Ù !?d غgÓ.¼v @  #Ú  !?d »gf0ž @  #Û !!?d X»g6P1  @  #Ü "!?d ˜»g¥3ô @  #Ý #!?d Ø»gжŠÕ @  #Þ $!?d ¼gÉøyÚ @  #ß %!?d X¼gK’ʼn @  #à &!?d ˜¼gkgÇw @  #á '!?d ؼg5dq @  #â (!?d€ ½gcz¹  @  $ )!?d X½g· ð @  $ *!?d ˜½g—øòc @  $ +!?d ؽg”¢°¯ @  $ ,!?d ¾g æn @  $ -!?d X¾gù™ê @  $ .!?d ˜¾gÙlèé @  $ /!?d ؾg,y @  $ 0!?d ¿güÅ‘ @  $ 1!?d X¿g ºùè @  $ 2!?d ˜¿g,Oû @uÐÀg  $ 3!?d Ø¿g/¹Ú @  $ 4!?d 0ÀgKåèˆ @  $ 5!?d pÀg»šñ @  $ 6!?d °Àg›o @  $ 7!?d ðÀg¦+“ @  $ 8!?d 0Ágv7§{ @  $ 9!?d pÁg†H] @  $ :!?d °Ág¦½_ü @  $ ;!?d ðÁg¥ç0 @  $ !?d °Âgè)Ev @  $ ?!?d ðÂgp/+ @  $ @!?d 0Ãg g‚à @  $ A!?d pÃgPxº @  $ B!?d °ÃgpízD @  $ C!?d ðÃgs·8ˆ @  $ D!?d 0Ägjùˇ @  $ E!?d pÄgš†1þ @  $ F!?d °Ägºs3 @  $ G!?d ðÄg–e/, @  $ H!?d 0ÅgF-£Ä @  $! I!?d pÅg¶RY½ @  $" J!?d °Åg–§[C @  $# K!?d ðÅg•ý @  $$ L!?d 0Æg¹¹N @  $% M!?d pÆgøÆC7 @  $& N!?d °ÆgØ3AÉ @  $' O!?d ðÆg-Ò&Y @  $( P!?d 0Çgýšª± @  $) Q!?d pÇg åPÈ @  $* R!?d °Çg-R6 @  $+ S!?d ðÇg.Jú @  $, T!?d 0Ègµœç @  $- U!?d pÈgêÊfž @  $. V!?d °ÈgÊ?d` @  $/ W!?d ðÈg÷/_ü @  $0 X!?d 0Ég'gÓ @  $1 Y!?d pÉg×)m @  $2 Z!?d °Ég÷í+“ @  $3 [!?d ðÉgô·i_ @  $4 \!?d 0ÊgióÉž @  $5 ]!?d pÊg™Œ3ç @  $6 ^!?d °Êg¹y1 @  $7 _!?d ðÊgÑ/oU @  $8 `!?d 0Ëggã½ @  $9 a!?d pËgñÄ @  $: b!?d °ËgÑí: @  $; c!?d ðËgÒ·Yö @  $< d!?d 0ÌgËùªù @  $= e!?d pÌg;†P€ @  $> f!?d °ÌgsR~ @  $? g!?d ðÌg™bHÀ @  $@ h!?d 0ÍgI*Ä( @  $A i!?d pÍg¹U>Q @  $B j!?d °Íg™ <¯ @  $C k!?d ðÍgšú~c @  $D l!?d 0Îg¾Þ¢ @  $E m!?d pÎg÷Á$Û @  $F n!?d °Îg×4&% @  $G o!?d ðÎg"ÕAµ @  $H p!?d 0ÏgòÍ] @  $I q!?d pÏgâ7$ @  $J r!?d °Ïg"5Ú @  $K s!?d ðÏg!Mw @  $L t!?d 0ÐgŸ“ˤ @  $M u!?d pÐgoì1Ý @  $N v!?d °ÐgO3# @  $O w!?d ðÐgr ¿ @  $P x!?d 0Ñg¢A„W @  $Q y!?d pÑgR>~. @  $R z!?d °ÑgrË|Ð @  $S {!?d ðÑgq‘> @  $T |!?d 0ÒgìÕžÝ @  $U }!?d pÒgªd¤ @  $V ~!?d °Òg<_fZ @  $W !?d ðÒg¹Ÿy• @  $X €!?d 0Ógi×õ} @  $Y !?d pÓg™¨ @  $Z ‚!?d °Óg¹] ú @  $[ ƒ!?d ðÓgºO6 @  $\ „!?d 0Ôg£I¼9 @  $] …!?d pÔgS6F@ @  $^ †!?d °ÔgsÃD¾ @  $_ ‡!?d ðÔg_ÕX’ @  $` ˆ!?d 0ÕgÔz @  $a ‰!?d pÕgâ. @  $b Š!?d °Õg_,ý @  $c ‹!?d ðÕg\Mn1 @  $d Œ!?d 0ÖgÁ Îð @  $e !?d pÖg1v4‰ @  $f Ž!?d °Ögƒ6w @  $g !?d ðÖgäbQç @  $h !?d 0×g4*Ý @  $i ‘!?d p×gÄU'v @  $j ’!?d °×gä %ˆ @  $k “!?d ð×gçúgD @  $l ”!?d 0ØgÓëY @  $m •!?d pØg#z  @  $n –!?d °ØgÞ @  $o —!?d ðØg>Ÿ(B @  $p ˜!?d 0Ùgîפª @  $q ™!?d pÙg¨^Ó @  $r š!?d °Ùg>]\- @  $s ›!?d ðÙg=á @  $t œ!?d 0Úg C¾  @  $u !?d pÚgP @  $~ ¦!?d °ÜgÒÃ%À @  $ §!?d ðÜg³„O @  $€ ¨!?d 0Ýgc̃§ @  $ ©!?d pÝg“³yÞ @  $‚ ª!?d °Ýg³F{  @  $ƒ «!?d ðÝg°9ì @  $„ ¬!?d 0Þg-X™- @  $… ­!?d pÞgÝ'cT @  $† ®!?d °ÞgýÒaª @  $‡ ¯!?d ðÞg3: @  $ˆ °!?d 0ßgØ{ŠÒ @  $‰ ±!?d pßg(p« @  $Š ²!?d uÐàg/°ßgñrU @  $‹ ³!?d ðßg «0™ @  $Œ ´!?d Hàgno @  $ µ!?d ˆàg@6 @  $Ž ¶!?d ÈàgÂ…–è @  $ ·!?d ág­L6B @  $ ¸!?d Hág/Ý!œ @  $‘ ¹!?d ˆág}ÆÎÅ @  $’ º!?d ÈágÿWÙ @  $“ »!?d âgãØ,È @  $” ¼!?d HâgaI; @  $• ½!?d ˆâg3RÔO @  $– ¾!?d Èâg±ÃÑ @  $— ¿!?d ãg{ú @  $˜ À!?d Hãgù$ @  $™ Á!?d ˆãg«–ë} @  $š Â!?d Èãg)ü£ @  $› Ã!?d äg±‚Z¾ @  $œ Ä!?d Häg3M` @  $ Å!?d ˆäga¢9 @  $ž Æ!?d Èäg㙵ç @  $Ÿ Ç!?d ågV2ý @  $  È!?d HågÇ%# @  $¡ É!?d ˆågMÜÊz @  $¢ Ê!?d ÈågÏMݤ @  $£ Ë!?d ægÓÂ(w @  $¤ Ì!?d HægQS?© @  $¥ Í!?d ˆægHÐð @  $¦ Î!?d ÈægÙÇ. @  $§ Ï!?d çg&á;ˆ @  $¨ Ð!?d Hçg¤p,V @  $© Ñ!?d ˆçgökà @  $ª Ò!?d ÈçgtúÔÑ @  $« Ó!?d ègÁÎ Þ @  $¬ Ô!?d HègC_ @  $­ Õ!?d ˆègDõY @  $® Ö!?d Èèg“Õ⇠@  $¯ ×!?d égüB- @  $° Ø!?d Hég~Uó @  $± Ù!?d ˆég,–ºª @  $² Ú!?d Èég®­t @  $³ Û!?d êg²ˆX§ @  $´ Ü!?d Hêg0Oy @  $µ Ý!?d ˆêgb   @  $¶ Þ!?d Èêgà“·þ @  $· ß!?d ëgÚr„ @  $¸ à!?d HëgXeZ @  $¹ á!?d ˆëg –Š @  $º â!?d ÈëgˆÝ @  $» ã!?d ìg‚;À @  $¼ ä!?d Hìg’, @  $½ å!?d ˆìgÀÃG @  $¾ æ!?d ÈìgB™Ô™ @  $¿ ç!?d íg’QU @  $À è!?d HígÀBÏ @  $Á é!?d ˆígBÛ­– @  $ ê!?d ÈígÀJºH @  $à ë!?d îgÜÅO› @  $Ä ì!?d Hîg^TXE @  $Å í!?d ˆîg O· @  $Æ î!?d ÈîgŽÞ Â @  $Ç ï!?d ïg)æ\d @  $È ð!?d Hïg«wKº @  $É ñ!?d ˆïgùl¤ã @  $Ê ò!?d Èïg{ý³= @  $Ë ó!?d ðgDèZ @  $Ì ô!?d HðgÆyMC @  $Í õ!?d ˆðg”b¢ @  $Î ö!?d ÈðgóµÄ @  $Ï ÷!?d ñgy:n @  $Ð ø!?d Hñgû«° @  $Ñ ù!?d ˆñg©°íé @  $Ò ú!?d Èñg+!ú7 @  $Ó û!?d òg7®ä @  $Ô ü!?d Hògµ?: @  $Õ ý!?d ˆògç$÷c @  $Ö þ!?d Èògeµà½ @  $× ÿ!?d ógém @  $Ø "?d Hógýx³ @  $Ù "?d ˆóg¯cüê @  $Ú "?d Èóg-òë4 @  $Û "?d ôgµwM) @  $Ü "?d Hôg7æZ÷ @  $Ý "?d ˆôgeýµ® @  $Þ "?d Èôgçl¢p @  $ß "?d õg™£%j @  $à "?d Hõg22´ @  $á  "?d ˆõgI)Ýí @  $â  "?d€ Èõg¿{Ö• @  %  "?d ögBµko @  %  "?d HögÀ$|± @  %  "?d ˆögWvh @  % "?d ÈögÕçÛ @  % "?d ÷g¼mÜ @  % "?d H÷g>üËÙ @  % "?d ˆ÷g¢U{ú @  % "?d È÷g Äl$ @  % "?d øgP¹NÆ @  % "?d HøgÒ(Y @  % "?d ˆøgEzM¬ @  % "?d ÈøgÇëZr @  % "?d ùgË1›B @  % "?d HùgI Œœ @  % "?d ˆùgx¨_ @  % "?d Èùgú9 @  % "?d úg#ÿ¿ @  % "?d Húg¡n a @  % "?d ˆúg6<Õ @  % "?d Èúg´­  @  % "?d ûg@•  @  %  "?d HûgÂ‚Õ @  % !"?d ˆûg^¨2ö @  % ""?d ÈûgÜ9%( @  % #"?d ügõxØ @  % $"?d Hügdo @  % %"?d ˆüg”6{² @  % &"?d Èüg§ll @  % '"?d ýg}­\ @  % ("?d Hýg˜ìº‚ @  % )"?d ˆýg¸âñ @  % *"?d Èýg:s/ @  %! +"?d þgãµ  @  %" ,"?d Hþga$Ï @  %# -"?d ˆþgöv { @  %$ ."?d Èþgtç¥ @  %% /"?d ÿgm½y @  %& 0"?d HÿgŸüª§ @  %' 1"?d ˆÿgU„ @  %( uÐh2"?d Èÿg¸Ñ @  %)3"?d hEUw£ @  %*4"?d `hÇÄ`} @  %+5"?d  hP–tÉ @  %,6"?d àhÒc @  %-7"?d hÞÝ¢' @  %.8"?d `h\Lµù @  %/9"?d  hmD;: @  %0:"?d àhïÕ,ä @  %1;"?d h6"Ú @  %2<"?d `h´‚5 @  %3="?d  h#Ð!° @  %4>"?d àh¡A6n @  %5?"?d h¥,¹ @  %6@"?d `h'½®¡ @  %7A"?d  h»‚ @  %8B"?d àh9… \ @  %9C"?d hdIT¬ @  %:D"?d `hæØCr @  %;E"?d  hqŠWÆ @  %<F"?d àhó@ @  %=G"?d hÿÁ( @  %>H"?d `h}P–ö @  %?I"?d  hóY9 @  %@J"?d àhqÈ.É @  %AK"?d h¨ ÷ @  %BL"?d `h*Ÿ7) @  %CM"?d  h½Í# @  %DN"?d àh?\4C @  %EO"?d hVÖ—Ÿ @  %FP"?d `hÔG€A @  %GQ"?d  hHî0b @  %HR"?d àhÊ'¼ @  %IS"?d hº^ @  %JT"?d `h8“€ @  %KU"?d  h¯Á4 @  %LV"?d àh-Pê @  %MW"?d h!ŠÐÚ @  %NX"?d ` h£Ç @  %OY"?d   h’IÇ @  %PZ"?d à h‚^ @  %Q["?d hÉDP' @  %R\"?d ` hKÕGù @  %S]"?d   h܇SM @  %T^"?d à h^D“ @  %U_"?d hª+Þ“ @  %V`"?d ` h(ºÉM @  %Wa"?d   h´yn @  %Xb"?d à h6‚n° @  %Yc"?d hkN3@ @  %Zd"?d ` héß$ž @  %[e"?d   h~0* @  %\f"?d à hü'ô @  %]g"?d hðÆæÄ @  %^h"?d ` hrWñ @  %_i"?d   hRYXi @  %`j"?d à hÐÈO· @  %ak"?d h A‰ @  %bl"?d `h‹ŸVW @  %cm"?d  hÍBã @  %dn"?d àhž\U= @  %eo"?d h÷Ööá @  %fp"?d `huGá? @  %gq"?d  héîQ @  %hr"?d àhkF @  %is"?d h‘#T @  %jt"?d `h²CQ @  %ku"?d  h„àWå @  %lv"?d àhq@; @  %mw"?d h «  @  %nx"?d `hˆ:–Õ @  %oy"?d  h¹2 @  %pz"?d àh;£È @  %q{"?d hâeö @  %r|"?d `h`ô( @  %s}"?d  h÷¦œ @  %t~"?d àhu7B @  %u"?d hlœÎÁ @  %v€"?d `hî Ù @  %w"?d  hr¤i< @  %x‚"?d àhð5~â @  %yƒ"?d h­ù# @  %z„"?d `h/h4Ì @  %{…"?d  h¸: x @  %|†"?d àh:«7¦ @  %}‡"?d h6qö– @  %~ˆ"?d `h´àáH @  %‰"?d  hÙ¿~˜ @  %€Š"?d àh[.iF @  %‹"?d h‚ègx @  %‚Œ"?d `hyp¦ @  %ƒ"?d  h—+d @  %„Ž"?d àhºsÌ @  %…"?d h|0Ð @  %†"?d `hþ¡ÇÎ @  %‡‘"?d  hbwí @  %ˆ’"?d àhà™`3 @  %‰“"?d häBÑ @  %Š”"?d `huU @  %‹•"?d  h…'A» @  %Œ–"?d àh¶Ve @  %—"?d h l—U @  %Ž˜"?d `h‰ý€‹ @  %™"?d  h¸õH @  %š"?d àh:d– @  %‘›"?d h㢨 @  %’œ"?d `ha3v @  %“"?d  höa @  %”ž"?d àhtð @  %•Ÿ"?d h€Í™ @  %– "?d `h\ŽÂ @  %—¡"?d  hžõ>á @  %˜¢"?d àhd)? @  %™£"?d hA¨tÏ @  %š¤"?d `hÃ9c @  %›¥"?d  hTkw¥ @  %œ¦"?d àhÖú`{ @  %§"?d hÚ ¡K @  %ž¨"?d `hX±¶• @  %Ÿ©"?d  hx¿æ @  % ª"?d àhú.8 @  %¡«"?d h#è @  %¢¬"?d `h¡yØ @  %£­"?d  h6+l @  %¤®"?d àh´º² @  %¥¯"?d hÝ0±n @  %¦°"?d `h_¡¦° @  %§±"?d  hÓuÐ h @  %¨²"?d àhA™M @  %©³"?d 8 htqÔ @  %ª´"?d x höf  @  %«µ"?d ¸ haÓr¾ @  %¬¶"?d ø hãBe` @  %­·"?d 8!hP @  %®¸"?d x!hm ³Ž @  %¯¹"?d ¸!h\=M @  %°º"?d ø!hÞ*“ @  %±»"?d 8"hV$­ @  %²¼"?d x"h…Ç3s @  %³½"?d ¸"h•'Ç @  %´¾"?d ø"h0 @  %µ¿"?d 8#h”i¿ @  %¶À"?d x#hø¨Ö @  %·Á"?d ¸#hŠQõ @  %¸Â"?d ø#hÀ+ @  %¹Ã"?d 8$hU RÛ @  %ºÄ"?d x$h×E @  %»Å"?d ¸$h@ÏQ± @  %¼Æ"?d ø$hÂ^Fo @  %½Ç"?d 8%h΄‡_ @  %¾È"?d x%hL @  %¿É"?d ¸%hÂ?` @  %ÀÊ"?d ø%h@(¾ @  %ÁË"?d 8&h™K&€ @  %ÂÌ"?d x&hÚ1^ @  %ÃÍ"?d ¸&hŒˆ%ê @  %ÄÎ"?d ø&h24 @  %ÅÏ"?d 8'hg“‘è @  %ÆÐ"?d x'hå†6 @  %ÇÑ"?d ¸'hy«6 @  %ÈÒ"?d ø'hû:!Ë @  %ÉÓ"?d 8(h‹G) @  %ÊÔ"?d x(h Ö÷ @  %ËÕ"?d ¸(hž„C @  %ÌÖ"?d ø(h @  %Í×"?d 8)hÏÖ­ @  %ÎØ"?d x)h’^Ás @  %ÏÙ"?d ¸)h£VO° @  %ÐÚ"?d ø)h!ÇXn @  %ÑÛ"?d 8*høVP @  %ÒÜ"?d x*hzAŽ @  %ÓÝ"?d ¸*híÂU: @  %ÔÞ"?d ø*hoSBä @  %Õß"?d 8+h›nØä @  %Öà"?d x+hÿÏ: @  %×á"?d ¸+h…V @  %Øâ"?d ø+hÇhÇ @  %Ùã"?d 8,hZ 57 @  %Úä"?d x,hØš"é @  %Ûå"?d ¸,hOÈ6] @  %Üæ"?d ø,hÍY!ƒ @  %Ýç"?d 8-hÁƒà³ @  %Þè"?d x-hC÷m @  %ßé"?d ¸-hc^ @  %àê"?d ø-háIÀ @  %áë"?d 8.h8KGþ @  %âì"?d€ x.h{§  @  &í"?d ¸.h Žû½ @  &î"?d ø.hìc @  &ï"?d 8/h#Ü´R @  &ð"?d x/h¡M£Œ @  &ñ"?d ¸/hóVLÕ @  &ò"?d ø/hqÇ[  @  &ó"?d 80hE)< @  &ô"?d x0hǸâ @  & õ"?d ¸0h•£î» @  & ö"?d ø0h2ùe @  & ÷"?d 81hޡø @  & ø"?d x1h\0Ôf @  & ù"?d ¸1h+;? @  &ú"?d ø1hŒº,á @  &û"?d 82h6oCE @  &ü"?d x2h´þT› @  &ý"?d ¸2hæå»Â @  &þ"?d ø2hdt¬ @  &ÿ"?d 83hÇñÙ~ @  &#?d x3hE`Π @  &#?d ¸3h{!ù @  &#?d ø3h•ê6' @  &#?d 84h”4­ @  &#?d x4h„#s @  &#?d ¸4hÖÌ* @  &#?d ø4hTÛô @  &#?d 85há) @  &#?d x5hö÷ @  & #?d ¸5hM–® @  & #?d ø5hÏp @  & #?d 86hdÔFd @  &  #?d x6hæEQº @  &! #?d ¸6h´^¾ã @  &"#?d ø6h6Ï©= @  &##?d 87hš ñ  @  &$#?d x7hæÒ @  &%#?d ¸7hJ† ‹ @  &&#?d ø7hÈU @  &'#?d 88hvØcÍ @  &(#?d x8hôIt @  &)#?d ¸8h¦R›J @  &*#?d ø8h$ÃŒ” @  &+#?d 89híP¶I @  &,#?d x9hoÁ¡— @  &-#?d ¸9h=ÚNÎ @  &.#?d ø9h¿KY @  &/#?d 8:hž6´ @  &0#?d x:h‡!j @  &1#?d ¸:hÕÎ3 @  &2#?d ø:hW…Ùí @  &3#?d 8;hfñ¸ @  &4 #?d x;hä`¯Þ @  &5!#?d ¸;h¶{@‡ @  &6"#?d ø;h4êWY @  &7##?d 8*#?d ø=hno @  &?+#?d 8>hkÓ!ˆ @  &@,#?d x>héB6V @  &A-#?d ¸>h»YÙ @  &B.#?d ø>h9ÈÎÑ @  &C/#?d 8?h• –à @  &D0#?d x?hš> @  &E1#?duÐ@h7 ¸?hEng @  &F2#?d ø?hº Å @  &G€3#?d P@hó A| @  &H€4#?d @hÓùC‚ @  &I€5#?d Ð@h#†¹û @  &J€6#?d AhóÎ5 @  &K€7#?d PAhh„”ø @  &L€8#?d AhHq– @  &M€9#?d ÐAh¸l @  &N€:#?d Bh%J̾ @  &O€;#?d PBh€J @  &P€<#?d Bh ¿û @  &Q€=#?d ÐBhPÀì‚ @  &R€>#?d Ch€ˆ`j @  &S€?#?d PChu  @  &T€@#?d Ch3€^ @  &U€A#?d ÐChÃÿw' @  &V€B#?d DhÚ±„( @  &W€C#?d PDhÒbs @  &X€D#?d Dhòå` @  &Y€E#?d ÐDhššô @  &Z€F#?d EhÒÒ @  &[€G#?d PEhI˜·÷ @  &\€H#?d Ehimµ  @  &]€I#?d ÐEh™Op @  &^€J#?d FhVï± @  &_€K#?d PFh°Pº @  &`€L#?d Fh¥D @  &a€M#?d ÐFh`Úè= @  &b€N#?d Gh°’dÕ @  &c€O#?d PGhNˆ§Ò @  &d€P#?d Ghn}¥, @  &e€Q#?d ÐGhž_U @  &f€R#?d HhªýÓH @  &g€S#?d PHh¢\5 @  &h€T#?d Hh‚©7í @  &i€U#?d ÐHhrÖÍ” @  &j€V#?d Ih¢žA| @  &k€W#?d PIh9Ôà— @  &l€X#?d Ih!âi @  &m€Y#?d ÐIhé^ @  &n€Z#?d Jht¸Ñ @  &o€[#?d PJhÑ`j @  &p€\#?d Jhñïb” @  &q€]#?d ÐJh˜í @  &r€^#?d KhÑØ @  &s€_#?d PKh²uîÞ @  &t€`#?d Kh’€ì  @  &u€a#?d ÐKhbÿY @  &v€b#?d Lh{±åV @  &w€c#?d PLhs  @  &x€d#?d LhSåó @  &y€e#?d ÐLh£šûŠ @  &z€f#?d MhsÒwb @  &{€g#?d PMhè˜Ö‰ @  &|€h#?d MhÈmÔw @  &}€i#?d ÐMh8. @  &~€j#?d Nh¥VŽÏ @  &€k#?d PNh\Gg @  &€€l#?d Nh|ôE™ @  &€m#?d ÐNhŒ‹¿à @  &‚€n#?d Oh\Ã3 @  &ƒ€o#?d POh¢Ùð @  &„€p#?d Oh‚,òñ @  &…€q#?d ÐOhrSˆ @  &†€r#?d PhÌ´: @  &‡€s#?d PPhÄ,Ra @  &ˆ€t#?d PhäÙPŸ @  &‰€u#?d ÐPh¦ªæ @  &Š€v#?d QhÄî& @  &‹€w#?d PQh_¤‡å @  &Œ€x#?d QhQ… @  &€y#?d ÐQh.b @  &Ž€z#?d Rhjߣ @  &€{#?d PRh·j @  &€|#?d Rh—Ÿæ @  &‘€}#?d ÐRhgàÿŸ @  &’€~#?d Sh·¨sw @  &“€#?d PSh9“È/ @  &”€€#?d ShfÊÑ @  &•€#?d ÐShé0¨ @  &–€‚#?d ThðWç @  &—€ƒ#?d PThøö%ü @  &˜€„#?d ThØ' @  &™€…#?d ÐTh(|Ý{ @  &š€†#?d Uhø4Q“ @  &›€‡#?d PUhc~ðx @  &œ€ˆ#?d UhC‹ò† @  &€‰#?d ÐUh³ôÿ @  &ž€Š#?d Vh.°¨> @  &Ÿ€‹#?d PVhš¶W5 @  & €Œ#?d VhºCUË @  &¡€#?d ÐVhJ<¯² @  &¢€Ž#?d Whšt#Z @  &£€#?d PWhdnà] @  &¤€#?d WhD›â£ @  &¥€‘#?d ÐWh´äÚ @  &¦€’#?d Xh€”Ç @  &§€“#?d PXhˆºrœ @  &¨€”#?d Xh¨Opb @  &©€•#?d ÐXhX0Š @  &ª€–#?d Yhˆxó @  &«€—#?d PYh2§ @  &¬€˜#?d Yh3Ç¥æ @  &­€™#?d ÐYhø_Ÿ @  &®€š#?d Zh^üÿ^ @  &¯€›#?d PZhûü'å @  &°€œ#?d ZhÛ % @  &±€#?d ÐZh+vßb @  &²€ž#?d [hû>SŠ @  &³€Ÿ#?d P[h˜“©Q @  &´€ #?d [h¸f«¯ @  &µ€¡#?d Ð[hHQÖ @  &¶€¢#?d \hQW¢Ù @  &·€£#?d P\hYöD‚ @  &¸€¤#?d \hyF| @  &¹€¥#?d Ð\h‰|¼ @  &º€¦#?d ]hY40í @  &»€§#?d P]hÂ~‘ @  &¼€¨#?d ]hâ‹“ø @  &½€©#?d Ð]hôi @  &¾€ª#?d ^h°É@ @  &¿€«#?d P^h•±0Ù @  &À€¬#?d ^hµD2' @  &Á€­#?d Ð^hE;È^ @  &€®#?d _h•sD¶ @  &À¯#?d P_hki‡± @  &Ä€°#?d _hKœ…O @  &uÐ`hÅ€±#?d Ð_h»ã6 @  &Æ€²#?d (`hÊ® @  &Ç€³#?d h`h º,õ @  &È€´#?d ¨`h-O.  @  &É€µ#?d è`hÝ0Ôr @  &Ê€¶#?d (ah xXš @  &Ë€·#?d hah–2ùq @  &Ì€¸#?d ¨ah¶Çû @  &Í€¹#?d èahF¸ö @  &΀º#?d (bhÛü¡7 @  &Ï€»#?d hbh~üyŒ @  &Ѐ¼#?d ¨bh^ {r @  &Ñ€½#?d èbh®v  @  &Ò€¾#?d (ch~> ã @  &Ó€¿#?d hchíÃâ) @  &Ô€À#?d ¨chÍ6à× @  &Õ€Á#?d èch=I® @  &Ö€Â#?d (dh$é¡ @  &×€Ã#?d hdh,¦ú @  &Ø€Ä#?d ¨dh S  @  &Ù€Å#?d èdhü,÷} @  &Ú€Æ#?d (eh,d{• @  &Û€Ç#?d heh·.Ú~ @  &Ü€È#?d ¨eh—ÛØ€ @  &Ý€É#?d èehg¤"ù @  &Þ€Ê#?d (fhúà‚8 @  &߀Ë#?d hfhNæ}3 @  &à€Ì#?d ¨fhnÍ @  &á€Í#?d èfhžl…´ @  &â€Î#?d€ (gh:çú @  '€Ï#?d hgh%¼žÔ @  '€Ð#?d ¨ghIœ* @  '€Ñ#?d ègh0¾ @  '€Ò#?d (hh€£ @  '€Ó#?d hhh“¨‚ @  '€Ô#?d ¨hhâfª| @  '€Õ#?d èhhÜ« @  '€Ö#?d (ih プ @  ' €×#?d hihRàÙ‘ @  ' €Ø#?d ¨ihrÛo @  ' €Ù#?d èihG#Úû @  ' €Ú#?d (jhÚgz: @  ' €Û#?d hjhtà @  '€Ü#?d ¨jh<Áå @  '€Ý#?d èjh¯íZ @  '€Þ#?d (kh¥Öî @  '€ß#?d hkhÙAר @  '€à#?d ¨khù´Õ& @  '€á#?d èkĥԲ @  '€â#?d (lhÕÌ'½ @  '€ã#?d hlhßžœ @  '€ä#?d ¨lh3*œb @  '€å#?d èlh ç9a @  '€æ#?d (mhݯµ‰ @  '€ç#?d hmhƒ¬ï @  '€è#?d ¨mh£Yíq @  '€é#?d èmh–oìå @  '€ê#?d (nh +L$ @  '€ë#?d hnhÍ8õ @  '€ì#?d ¨nhíÍ÷û @  '€í#?d ènho§K¨ @  ' €î#?d (oh¿ïÇ@ @  '!€ï#?d hoh„¼ÿª @  '"€ð#?d ¨oh¤IýT @  '#€ñ#?d èoh‘üÀ @  '$€ò#?d (ph/¡@r @  '%€ó#?d hphé²ùS @  '&€ô#?d ¨phÉGû­ @  ''€õ#?d èph÷Š^® @  '(€ö#?d (qh'ÂÒF @  ')€÷#?d hqhyÁˆ@ @  '*€ø#?d ¨qhY4о @  '+€ù#?d èqhl‹* @  ',€ú#?d (rhñF+ë @  '-€û#?d hrh7U’Ê @  '.€ü#?d ¨rh 4 @  '/€ý#?d èrh„Ì × @  '0€þ#?d (shT„‡? @  '1€ÿ#?d hsh\˜­ @  '2€$?d ¨sh|m¯î @  '3€$?d èshI[®z @  '4€$?d (thP]u @  '5€$?d hth–äT @  '6€$?d ¨th¶óæª @  '7€$?d èthˆ>C© @  '8€$?d (uhXvÏA @  '9€$?d huhu•G @  ':€$?d ¨uh&€—¹ @  ';€ $?d èuh¶–- @  '<€ $?d (vhŽò6ì @  '=€ $?d hvhHáÍ @  '>€ $?d ¨vhh3 @  '?€ $?d èvhDy7ò @  '@€$?d (wh”1» @  'A€$?d hwh¯bƒð @  'B€$?d ¨wh— @  'C€$?d èwhº¡€š @  'D€$?d (xhŽ^ ‡ @  'E€$?d hxhHMµ¦ @  'F€$?d ¨xhh¸·X @  'G€$?d èxhVu[ @  'H€$?d (yh†=ž³ @  'I€$?d hyhØ>ĵ @  'J€$?d ¨yhøËÆK @  'K€$?d èyhÍýÇß @  'L€$?d (zhP¹g @  'M€$?d hzh–ªÞ? @  'N€$?d ¨zh¶_ÜÁ @  'O€$?d èzh%3G" @  'P€$?d ({hõ{ËÊ @  'Q€$?d h{hSŸÊü @  'R€ $?d ¨{hsjÈ @  'S€!$?d è{hF\É– @  'T€"$?d (|h_:™ @  'U€#$?d h|h™ƒ¸ @  'V€$$?d ¨|h¹ôF @  'W€%$?d è|h‡9$E @  'X€&$?d (}hWq¨­ @  'Y€'$?d h}h rò« @  'Z€($?d ¨}h)‡ðU @  '[€)$?d è}h±ñÁ @  '\€*$?d (~hõQ @  ']€+$?d h~hGæè! @  '^€,$?d ¨~hgêß @  '_€-$?d è~håyVŒ @  '`€.$?d (h51Úd @  'a€/$?d hhb⎠@  'b€0$?d ¨huЀh'.—àp @  'c€1$?d èhf!’˜ @  'd2$?d @€hŸpì @  'e3$?d €€hlèÜí @  'f4$?d À€hîyË3 @  'g5$?d h‚mõ @  'h6$?d @hüâØ @  'i7$?d €hü›­þ @  'j8$?d Àh~ º  @  'k9$?d ‚hTé « @  'l:$?d @‚hÖxu @  'm;$?d €‚h²·t @  'n<$?d À‚h0ž ª @  'o=$?d ƒhñ+  @  'p>$?d @ƒhsº·¡ @  'q?$?d €ƒh‡j¶¦ @  'r@$?d Àƒhû¡x @  'sA$?d „h«D= @  'tB$?d @„h)ƒSã @  'uC$?d €„hMôÿâ @  'vD$?d À„hÏeè< @  'wE$?d …h£qÖ  @  'xF$?d @…h!àÁ× @  'yG$?d €…h݇Žñ @  'zH$?d À…h_™/ @  '{I$?d †huõ/¤ @  '|J$?d @†h÷d8z @  '}K$?d €†h“”{ @  '~L$?d À†h‚ƒ¥ @  'M$?d ‡hŒ`’c @  '€N$?d @‡hñ…½ @  'O$?d €‡h—ƨw @  '‚P$?d À‡hW¿© @  'ƒQ$?d ˆh–%þ @  '„R$?d @ˆhž2  @  '…S$?d €ˆhpéž! @  '†T$?d Àˆhòx‰ÿ @  '‡U$?d ‰hžl·Ê @  'ˆV$?d @‰hý  @  '‰W$?d €‰hàšï2 @  'ŠX$?d À‰hb øì @  '‹Y$?d ŠhHèNg @  'ŒZ$?d @ŠhÊyY¹ @  '[$?d €Šh®õ¸ @  'Ž\$?d ÀŠh,Ÿâf @  ']$?d ‹hí*â³ @  '^$?d @‹ho»õm @  '‘_$?d €‹hk;á{ @  '’`$?d À‹héªö¥ @  '“a$?d ŒhGCà @  '”b$?d @ŒhÅÒ> @  '•c$?d €Œh¡¥¨? @  '–d$?d ÀŒh#4¿á @  '—e$?d hO Ô @  '˜f$?d @hͱ–  @  '™g$?d €h1ÖÙ, @  'šh$?d Àh³GÎò @  '›i$?d Žh™¤xy @  'œj$?d @Žh5o§ @  'k$?d €ŽhBæ @  'žl$?d ÀŽhýÓÔx @  'Ÿm$?d h-`ó @  ' n$?d @h¯ñäà @  '¡o$?d €h6ÆÉ  @  '¢p$?d Àh´WÞ× @  '£q$?d h½.t/ @  '¤r$?d @h?¿cñ @  '¥s$?d €h[ÈÏð @  '¦t$?d ÀhÙYØ. @  '§u$?d ‘hµMæ @  '¨v$?d @‘h7ÜñÅ @  '©w$?d €‘hË»¾ã @  'ªx$?d À‘hI*©= @  '«y$?d ’hcɶ @  '¬z$?d @’háXh @  '­{$?d €’h…/¤i @  '®|$?d À’h¾³· @  '¯}$?d “hÆ ³b @  '°~$?d @“hD𤼠@  '±$?d €“h­Œñ) @  '²€$?d À“h/æ÷ @  '³$?d ”hô² @  '´‚$?d @”hel @  'µƒ$?d €”hg¸m @  '¶„$?d À”h僯³ @  '·…$?d •h‰—‘† @  '¸†$?d @•h †X @  '¹‡$?d €•h÷aÉ~ @  'ºˆ$?d À•huðÞ  @  '»‰$?d –h_h+ @  '¼Š$?d @–hÝ‚õ @  '½‹$?d €–h¹õÓô @  '¾Œ$?d À–h;dÄ* @  '¿$?d —hEÐåÝ @  'ÀŽ$?d @—hÇAò @  'Á$?d €—h^vßÉ @  'Â$?d À—hÜçÈ @  'Ñ$?d ˜h_¿R@ @  'Ä’$?d @˜hÝ.Ež @  'Å“$?d €˜h¹YéŸ @  'Æ”$?d À˜h;ÈþA @  'Ç•$?d ™hWÜÀt @  'È–$?d @™hÕMת @  'É—$?d €™h)*˜Œ @  'ʘ$?d À™h«»R @  'Ë™$?d šhX9Ù @  'Ìš$?d @šhÉ. @  'Í›$?d €šhg¾‚ @  'Μ$?d Àšhå/•Ø @  'Ï$?d ›h$š•  @  'О$?d @›h¦ ‚Ó @  'ÑŸ$?d €›h¢‹–Å @  'Ò $?d À›h  @  'Ó¡$?d œhŽód^ @  'Ô¢$?d @œh bs€ @  'Õ£$?d €œhhß @  'Ö¤$?d Àœhê„È_ @  '×¥$?d h†öj @  'ئ$?d @há´ @  'Ù§$?d €høf®’ @  'Ú¨$?d Àhz÷¹L @  'Û©$?d žhPÇ @  'ܪ$?d @žhÒ… @  'Ý«$?d €žh¶ò´ @  'Þ¬$?d Àžh4c£Æ @  'ß­$?d ŸhäЄ£ @  'à®$?d @ŸhfA“} @  'á¯$?d €Ÿhÿv¾· @  'â°$uРh?d€ ÀŸhU}½; @  (±$?d  hr=> @  (²$?d X hð*à @  (³$?d ˜ hQ?}  @  (´$?d Ø hÓ®jÒ @  (µ$?d ¡hq  @  (¶$?d X¡hó™C @  (·$?d ˜¡hÁL  @  (¸$?d Ø¡hCÝÁ @  ( ¹$?d ¢h¬wV§ @  ( º$?d X¢h.æAy @  ( »$?d ˜¢hØ• @  ( ¼$?d Ø¢h IK @  ( ½$?d £h¯ï` @  (¾$?d X£h-~wÚ @  (¿$?d ˜£hº½G @  (À$?d Ø£h8,™ @  (Á$?d ¤hSŒ1 @  (Â$?d X¤hÑ ï @  (Ã$?d ˜¤hp#^ @  (Ä$?d ؤhò²IÝ @  (Å$?d ¥hP(’ @  (Æ$?d X¥hÒ…?L @  (Ç$?d ˜¥hàP/ @  (È$?d Ø¥hbÁ8Î @  (É$?d ¦hku¨ @  (Ê$?d X¦húbv @  (Ë$?d ˜¦h®Ä5š @  (Ì$?d ئh,U"D @  (Í$?d §hŽóC  @  (Î$?d X§h bTÕ @  (Ï$?d ˜§hç@?5 @  ( Ð$?d اheÑ(ë @  (!Ñ$?d ¨h#ÀIQ @  ("Ò$?d X¨h¡Q^ @  (#Ó$?d ˜¨ho c @  ($Ô$?d بh‚þ½ @  (%Õ$?d ©h Xò @  (&Ö$?d X©h¢Éh, @  ('×$?d ˜©hxp @  ((Ø$?d Ø©ho® @  ()Ù$?d ªhý'"È @  (*Ú$?d Xªh¶5 @  (+Û$?d ˜ªhÞˆbú @  (,Ü$?d تh\u$ @  (-Ý$?d «hþ¿k @  (.Þ$?d X«h|.µ @  (/ß$?d ˜«h½v9 @  (0à$?d Ø«h™,aç @  (1á$?d ¬hòŒO @  (2â$?d X¬hph‘ @  (3ã$?d ˜¬hÑ#?} @  (4ä$?d جhS²(£ @  (5å$?d ­hñIì @  (6æ$?d X­hs…^2 @  (7ç$?d ˜­hAPNn @  (8è$?d Ø­hÃÁY° @  (9é$?d ®h,kÖ @  (:ê$?d X®h®ú @  (;ë$?d ˜®hÄTä @  (<ì$?d Ø®hUC: @  (=í$?d ¯h/ó"u @  (>î$?d X¯h­b5« @  (?ï$?d ˜¯hèGXÙ @  (@ð$?d دhjÖO @  (Añ$?d °h¦æ @  (Bò$?d X°h$w Ì @  (Có$?d ˜°h…I^  @  (Dô$?d ذhØIþ @  (Eõ$?d ±h¥~(± @  (Fö$?d X±h'ï?o @  (G÷$?d ˜±h:/3 @  (Hø$?d رhê+K‘ @  (I€ù$?d ²h÷ @  (J€ú$?d X²h‡) @  (K€û$?d ˜²h&.FÅ @  (L€ü$?d زh¤¿Q @  (M€ý$?d ³h0T @  (N€þ$?d X³h„ˆ'Š @  (O€ÿ$?d ˜³hqêF‰ @  (P€%?d سhó{QW @  (Q€%?d ´h˜ÛOÿ @  (R€%?d X´hJX! @  (S€%?d ˜´h»tÍ @  (T€%?d Ø´h9å @  (U€%?d µh›Cy\ @  (V€%?d XµhÒn‚ @  (W€%?d ˜µh+~Þ @  (X€%?d صh©–i @  (Y€ %?d ¶hF<$f @  (Z€ %?d X¶hÄ­3¸ @  ([€ %?d ˜¶he“dT @  (\€ %?d ضhçsŠ @  (]€ %?d ·hE¤Å @  (^€%?d X·hÇ5 @  (_€%?d ˜·h,nû @  (`€%?d Ø·h®†y% @  (a€%?d ¸hè—Ÿ @  (b€%?d X¸hjA @  (c€%?d ˜¸hË8X­ @  (d€%?d ظhI©Os @  (e€%?d ¹hë.< @  (f€%?d X¹hiž9â @  (g€%?d ˜¹h[K)¾ @  (h€%?d عhÙÚ>` @  (i€%?d ºh6ps @  (j€%?d Xºh´ádØ @  (k€%?d ˜ºhß34 @  (l€%?d غh—N$ê @  (m€%?d »h5èE¥ @  (n€%?d X»h·yR{ @  (o€%?d ˜»hÐê'÷ @  (p€ %?d Ø»hR{0) @  (q€!%?d ¼h9Û. @  (r€"%?d X¼h»J9_ @  (s€#%?d ˜¼htn³ @  (t€$%?d ؼh˜åym @  (u€%%?d ½h:C" @  (v€&%?d X½h¸Òü @  (w€'%?d ˜½hŠ  @  (x€(%?d ؽh–~ @  (y€)%?d ¾hç%?d pÃhv§«• @  (?%?d °ÃhádË @  (@%?d ðÃhcõÜÖ @  (‘A%?d 0ÄhUÂ~ @  (’B%?d pÄhŠÄÕ  @  (“C%?d °Äh+ú‚L @  (”D%?d ðÄh©k•’ @  (•E%?d 0Åh ÍôÝ @  (–F%?d pÅh‰\ã @  (—G%?d °Åh»‰ó_ @  (˜H%?d ðÅh9ä @  (™I%?d 0ÆhÖ²©ç @  (šJ%?d pÆh)£ÍE @  (›€K%?d °Æhˆš© @  (œ€L%?d ðÆh w @  (€M%?d 0Çh¨ªì8 @  (ž€N%?d pÇh*;ûæ @  (Ÿ€O%?d °ÇhÁ @  ( €P%?d ðÇhCˆ‡Ø @  (¡€Q%?d 0Èh™æb @  (¢€R%?d pÈh‡ñ¼ @  (£€S%?d °Èh&6¦P @  (¤€T%?d ðÈh¤§±Ž @  (¥€U%?d 0ÉhÐÁ @  (¦€V%?d pÉh„Ç @  (§€W%?d °Éh¶E×C @  (¨€X%?d ðÉh4ÔÀ @  (©€Y%?d 0ÊhÛ~û @  (ª€Z%?d pÊhYïš% @  («€[%?d °ÊhøÑÍÉ @  (¬€\%?d ðÊhz@Ú @  (­€]%?d 0ËhØæ»X @  (®€^%?d pËhZw¬† @  (¯€_%?d °Ëh=äÙ  @  (°€`%?d ðËh¿uÎÔ @  (±€a%?d 0ÌhÔÕÐ| @  (²€b%?d pÌhVDÇ¢ @  (³€c%?d °Ìh÷zN @  (´€d%?d ðÌhuë‡ @  (µ€e%?d 0Íh×Mæß @  (¶€f%?d pÍhUÜñ @  (·€g%?d °Íhg á] @  (¸€h%?d ðÍhå˜öƒ @  (¹€i%?d 0Îh 2»å @  (º€j%?d pÎhˆ£¬; @  (»€k%?d °Îh)û× @  (¼€l%?d ðÎh« ì  @  (½€m%?d 0Ïh ªF @  (¾€n%?d pÏh‹;š˜ @  (¿€o%?d °ÏhÎ÷ê @  (À€p%?d ðÏhLà4 @  (Á€q%?d 0Ðh€¿±! @  (€r%?d pÐh.¦ÿ @  (Às%?d °Ðh£ñ @  (Ä€t%?d ðÐh!æÍ @  (Å€u%?d 0Ñhƒ'‡‚ @  (Æ€v%?d pÑh¶\ @  (Ç€w%?d °Ñh3c€ @  (È€x%?d ðÑh±ò—Þ @  (É€y%?d 0Òh^XÚ¸ @  (Ê€z%?d pÒhÜÉÍf @  (Ë€{%?d °Òh}÷šŠ @  (Ì€|%?d ðÒhÿfT @  (Í€}%?d 0Óh]Àì @  (΀~%?d pÓhßQûÅ @  (Ï€%?d °ÓhUTÏÊ @  (Ѐ€%?d ðÓh×ÅØ @  (Ñ€%?d 0Ôh¼eƼ @  (Ò€‚%?d pÔh>ôÑb @  (Ó€ƒ%?d °ÔhŸÊ†Ž @  (Ô€„%?d ðÔh[‘P @  (Õ€…%?d 0Õh¿ýð @  (Ö€†%?d pÕh=lçÁ @  (×€‡%?d °Õh¹÷ @  (Ø€ˆ%?d ðÕh(àC @  (Ù€‰%?d 0Öhb‚­% @  (Ú€Š%?d pÖhàºû @  (Û€‹%?d °ÖhA-í @  (Ü€Œ%?d ðÖhüúÉ @  (Ý€%?d 0×ha›† @  (Þ€Ž%?d p×h㋌X @  (߀%?d °×h©ç¸ @  (à€%?d ð×hŠ8ðf @  (ထ%?d 0ØhÌ)‘Ü @  (‒%?d€ pØh:{š¤ @  )€“%?d °Øhz…a @  )€”%?d ðØhø•’¿ @  )€•%?d 0ÙhŸz @  )€–%?d pÙhëà @  )€—%?d °ÙháŒPå @  )€˜%?d ðÙhcG; @  )€™%?d 0ÚhBU' @  )€š%?d pÚhÀ”Bù @  ) €›%?d °Úh¤ãîø @  ) €œ%?d ðÚh&rù& @  ) €%?d 0ÛhAc„ @  ) €ž%?d pÛhà tZ @  ) €Ÿ%?d °ÛhÇŒ`L @  )€ %?d ðÛhEw’ @  )€¡%?d 0ÜhM®  @  )€¢%?d pÜhÏ?~ @  )€£%?d °Üh«H³ @  )€¤%?d ðÜh)Ù¤¡ @  )€¥%?d 0ÝhN6> @  )€¦%?d pÝḩ)Ý @  )€§%?d °Ýh0Àfû @  )€¨%?d ðÝh²Qq% @  )€©%?d 0Þh“Ic9 @  )€ª%?d pÞhØtç @  )€«%?d °Þhu¯Øæ @  )€¬%?d ðÞh÷>Ï8 @  )€­%?d 0ßhÑUš @  )€®%?d pßh@BD @  )€¯%?d uÐàh/°ßh‹woŽ @  )€°%?d ðßhtf , @  )±%?d Hàhm9þW @  ) ²%?d ˆàhMÌü© @  )!³%?d Èàh‹ßEˆ @  )"´%?d áh[—É` @  )#µ%?d Háhn¡Èô @  )$¶%?d ˆáhNTÊ  @  )%·%?d ÈáhW  @  )&¸%?d âh0Í @  )'¹%?d Hâh³Þ•Î @  )(º%?d ˆâh“+—0 @  ))»%?d ÈâhU8. @  )*¼%?d ãh…p¢ù @  )+½%?d Hãh°F£m @  ),¾%?d ˆãh³¡“ @  )-¿%?d ÈãhƵ´ @  ).À%?d ähßIF» @  )/Á%?d HähL%ÝX @  )0Â%?d ˆählÐߦ @  )1Ã%?d ÈähªÃf‡ @  )2Ä%?d åhz‹êo @  )3Å%?d HåhO½ëû @  )4Æ%?d ˆåhoHé @  )5Ç%?d Èåh1K³ @  )6È%?d æh¬Â @  )7É%?d Hæh’¶Á @  )8Ê%?d ˆæh²7´? @  )9Ë%?d Èæht$  @  ):Ì%?d çh¤lö @  );Í%?d Hçh‘Z€b @  )<Î%?d ˆçh±¯‚œ @  )=Ï%?d ÈçhŠüºv @  )>Ð%?d èh¾6k @  )?Ñ%?d Hèh’nŒª @  )@Ò%?d ˆèh²›ŽT @  )AÓ%?d Èèhtˆ7u @  )BÔ%?d éh¤À» @  )CÕ%?d Héh‘öº  @  )DÖ%?d ˆéh±¸÷ @  )E×%?d Èéhïâñ @  )FØ%?d êhrDB0 @  )GÙ%?d HêhL‰ç3 @  )HÚ%?d ˆêhl|åÍ @  )IÛ%?d Èêhªo\ì @  )JÜ%?d ëhz'Ð @  )KÝ%?d HëhOÑ @  )LÞ%?d ˆëhoäÓn @  )Mß%?d ÈëhÉÒX @  )Nà%?d ìhÐN!W @  )Oá%?d Hìh>¢ÉÈ @  )P€â%?d ˆìhWË6 @  )Q€ã%?d ÈìhØDr @  )R€ä%?d íh þÿ @  )S€å%?d Híh=:ÿk @  )T€æ%?d ˆíhÏý• @  )U€ç%?d ÈíhÇ“ @  )V€è%?d îhÞˆR @  )W€é%?d HîhàE¢Q @  )X€ê%?d ˆîhÀ° ¯ @  )Y€ë%?d Èîh£Ž @  )Z€ì%?d ïhÖë•f @  )[€í%?d HïhãÝ”ò @  )\€î%?d ˆïhÃ(–  @  )]€ï%?d Èïhø{®æ @  )^€ð%?d ðhF¥T @  )_€ñ%?d HðhÄÏ® @  )`€ò%?d ˆðhä:¬ù @  )a€ó%?d Èðh")Ø @  )b€ô%?d ñhòa™0 @  )c€õ%?d HñhÇW˜¤ @  )d€ö%?d ˆñh碚Z @  )e€÷%?d Èñh¹¡À\ @  )f€ø%?d òh$å` @  )g€ù%?d Hòh(Åž @  )h€ú%?d ˆòh:ÝÇ` @  )i€û%?d ÈòhüÎ~A @  )j€ü%?d óh,†ò© @  )k€ý%?d Hóh°ó= @  )l€þ%?d ˆóh9Eñà @  )m€ÿ%?d Èóh¿rÑ_ @  )n€&?d ôh¦<"P @  )o€&?d Hôh5P¹³ @  )p€&?d ˆôh¥»M @  )q€&?d ÈôhÓ¶l @  )r€&?d õhþŽ„ @  )s€&?d Hõh6È @  )t€&?d ˆõh=î @  )u€&?d ÈõhH>×è @  )v€&?d öhÕzw) @  )w€ &?d Höhë·Ò* @  )x€ &?d ˆöhËBÐÔ @  )y€ &?d Èöh Qiõ @  )z€ &?d ÷hÝå @  ){€ &?d H÷hè/ä‰ @  )|€&?d ˆ÷hÈÚæw @  )}€&?d È÷hó‰Þ @  )~€&?d øhÇvR€ @  )€&?d HøhMØp @  )€€&?d ˆøh(¸ÚŽ @  )€&?d Èøhî«c¯ @  )‚€&?d ùh>ãïG @  )ƒ€&?d Hùh ÕîÓ @  )„€&?d ˆùh+ ì- @  )…€&?d Èùhu#¶+ @  )†€&?d úhègê @  )‡€&?d HúhÖª³é @  )ˆ€&?d ˆúhö_± @  )‰€&?d Èúh0L6 @  )Š€&?d ûhà„Þ @  )‹€&?d HûhÕ2…J @  )Œ€&?d ˆûhõLJ´ @  )€&?d ÈûhS#†‚ @  )Ž€ &?d ühJmu @  )€!&?d HühÙîn @  )€"&?d ˆühùôì @  )‘€#&?d Èüh?çU± @  )’€$&?d ýhï¯ÙY @  )“€%&?d HýhÚ™ØÍ @  )”€&&?d ˆýhúlÚ3 @  )•€'&?d Èýh¤o€5 @  )–€(&?d þh9+ ô @  )—€)&?d Hþhæ…÷ @  )˜€*&?d ˆþh'‡  @  )™€+&?d Èþhá>( @  )š€,&?d ÿh1H²À @  )›€-&?d Hÿh~³T @  )œ€.&?d ˆÿh$‹±ª @  )€uÐi/&?d ÈÿhbXú< @  )ž0&?d i-ìÒÍ @  )Ÿ1&?d `i¯†nž @  ) 2&?d  isl` @  )¡3&?d àiI`ÕA @  )¢4&?d i™(Y© @  )£5&?d `i¬X= @  )¤6&?d  iŒëZà @  )¥7&?d àiÒèÅ @  )¦8&?d iO¬  @  )§9&?d `iqa @  )¨:&?d  iQ”ù @  )©;&?d ài—‡¾Ø @  )ª<&?d iGÏ20 @  )«=&?d `irù3¤ @  )¬>&?d  iR 1Z @  )­?&?d ài¸%} @  )®@&?d iöÖr @  )¯A&?d `iŽšM‘ @  )°B&?d  i®oOo @  )±C&?d àih|öN @  )²D&?d i¸4z¦ @  )³E&?d `i{2 @  )´F&?d  i­÷yÌ @  )µG&?d àióô#Ê @  )¶H&?d in°ƒ  @  )·I&?d `iP}& @  )¸J&?d  ipˆ$ö @  )¹K&?d ài¶›× @  )ºL&?d ifÓ? @  )»M&?d `iSå« @  )¼N&?d  isU @  )½O&?d àiHC*¿ @  )¾P&?d i|¼¦¢ @  )¿Q&?d `iPÑc @  )ÀR&?d  ip$ @  )ÁS&?d ài¶7§¼ @  )ÂT&?d if+T @  )ÃU&?d ` iSI*À @  )ÄV&?d   is¼(> @  )ÅW&?d à i-¿r8 @  )ÆX&?d i°ûÒù @  )ÇY&?d ` iŽ6wú @  )ÈZ&?d   i®Ãu @  )É[&?d à ihÐÌ% @  )Ê\&?d i¸˜@Í @  )Ë]&?d ` i®AY @  )Ì^&?d   i­[C§ @  )Í_&?d à i ¿B‘ @  )Î`&?d iñ±ž @  )Ïa&?d ` i*} @  )Ðb&?d   i¡h(ƒ @  )Ñc&?d à ig{‘¢ @  )Òd&?d i·3J @  )Óe&?d ` i‚Þ @  )Ôf&?d   i¢ð  @  )Õg&?d à iüóD& @  )Öh&?d ia·äç @  )×i&?d `i_zAä @  )Øj&?d  iC @  )Ùk&?d ài¹œú; @  )Úl&?d iiÔvÓ @  )Ûm&?d `i\âwG @  )Ün&?d  i|u¹ @  )Ýo&?d àiGDMS @  )Þp&?d iùšñá @  )ßq&?d `i{ðM² @  )àr&?d  i[OL @  )ás&?d àiöm @  )ât&?d€ iŒ… @  *u&?d `iXnÄ8 @  *v&?d  ix›ÆÆ @  *w&?d àiãÑg- @  *x&?d i~•Çì @  *y&?d `iŽê=• @  *z&?d  i®?k @  *{&?d ài¦¾Ù0 @  *|&?d ivöUØ @  * }&?d `i†‰¯¡ @  * ~&?d  i¦|­_ @  * &?d ài(G @  * €&?d i1 å @  * &?d `iÁvq @  *‚&?d  iრ@  *ƒ&?d àiDƒÅ4 @  *„&?d i”ËIÜ @  *…&?d `id´³¥ @  *†&?d  iDA±[ @  *‡&?d àiß ° @  *ˆ&?d iBO°q @  *‰&?d `i²0J @  *Š&?d  i’ÅHö @  *‹&?d àišd®­ @  *Œ&?d iJ,"E @  *&?d `iºSØ< @  *Ž&?d  iš¦Ú @  *&?d àid¼Å @  *&?d iPC•Ø @  *‘&?d `i ²&?d ¸ id=^Z @  *?³&?d ø i~<§Ã @  *@´&?d 8!i®t++ @  *Aµ&?d x!i^ ÑR @  *B¶&?d ¸!i~þÓ¬ @  *C·&?d ø!iå´rG @  *D¸&?d 8"ixðÒ† @  *E¹&?d x"iˆ(ÿ @  *Fº&?d ¸"i¨z* @  *G»&?d ø"i ÛÌZ @  *H¼&?d 8#ip“@² @  *I½&?d x#i€ìºË @  *J¾&?d ¸#i ¸5 @  *K¿&?d ø#i3äWÿ @  *LÀ&?d 8$i*ª¤ð @  *MÁ&?d x$iÚÕ^‰ @  *NÂ&?d ¸$iú \w @  *OÃ&?d ø$i_ „Ì @  *PÄ&?d 8%ih$ @  *QÅ&?d x%iò] @  *RÆ&?d ¸%i_âð£ @  *SÇ&?d ø%iĨQH @  *TÈ&?d 8&iYìñ‰ @  *UÉ&?d x&i©“ ð @  *VÊ&?d ¸&i‰f  @  *WË&?d ø&iÇïU @  *XÌ&?d 8'iQc½ @  *YÍ&?d x'i¡ð™Ä @  *ZÎ&?d ¸'i›: @  *[Ï&?d ø'iX= @  *\Ð&?d 8(iKàÔ  @  *]Ñ&?d x(i»Ÿ.Y @  *^Ò&?d ¸(i›j,§ @  *_Ó&?d ø(i/lÓ¬ @  *`Ô&?d 8)iÿ$_D @  *aÕ&?d x)i[¥= @  *bÖ&?d ¸)i/®§Ã @  *c×&?d ø)i´ä( @  *dØ&?d 8*i) ¦é @  *eÙ&?d x*iÙß\ @  *fÚ&?d ¸*iù*^n @  *gÛ&?d ø*iñ‹¸5 @  *hÜ&?d 8+i!Ã4Ý @  *iÝ&?d x+iѼΤ @  *jÞ&?d ¸+iñIÌZ @  *kß&?d ø+i’ä6 @  *là&?d 8,i‹ªÅŽ @  *má&?d x,i{Õ?÷ @  *nâ&?d ¸,i[ =  @  *oã&?d ø,iþ å² @  *pä&?d 8-i.hiZ @  *qå&?d x-iÞ“# @  *ræ&?d ¸-iþâ‘Ý @  *sç&?d ø-ie¨06 @  *tè&?d 8.iøì÷ @  *ué&?d x.i“jŽ @  *vê&?d ¸.i(fhp @  *wë&?d ø.i ÇŽ+ @  *xì&?d 8/iðà @  *yí&?d x/iðøº @  *zî&?d ¸/i úD @  *{ï&?d ø/iÞ9C @  *|ð&?d 80i`Á…ñ @  *}ñ&?d x0i¾ˆ @  *~ò&?d ¸0i°K}v @  *ó&?d ø0iI´Þ @  *€ô&?d 81i™T86 @  *õ&?d x1ii+ÂO @  *‚ö&?d ¸1iIÞÀ± @  *ƒ÷&?d ø1iÒ”aZ @  *„ø&?d 82iOÐÁ› @  *…ù&?d x2i¿¯;â @  *†ú&?d ¸2iŸZ9 @  *‡û&?d ø2i—ûßG @  *ˆü&?d 83iG³S¯ @  *‰ý&?d x3i·Ì©Ö @  *Šþ&?d ¸3i—9«( @  *‹ÿ&?d ø3ifeE| @  *Œ'?d 84i+¶s @  *'?d x4iTL  @  *Ž'?d ¸4i¯¡Nô @  *'?d ø4i ¡–O @  *'?d 85iÚé§ @  *‘'?d x5i*–àÞ @  *’'?d ¸5i câ  @  *“'?d ø5i‘)CË @  *”'?d 86i mã  @  *• '?d x6iüs @  *– '?d ¸6iÜç @  *— '?d ø6iÔFýÖ @  *˜ '?d 87iq> @  *™ '?d x7iôq‹G @  *š'?d ¸7iÔ„‰¹ @  *›'?d ø7i*žJ¾ @  *œ'?d 88iaÆ£ @  *'?d x8iî<Ú @  *ž'?d ¸8iÎë>$ @  *Ÿ'?d ø8izíÁ/ @  * '?d 89iª¥MÇ @  *¡'?d x9iZÚ·¾ @  *¢'?d ¸9iz/µ@ @  *£'?d ø9iáe« @  *¤'?d 8:i|!´j @  *¥'?d x:iŒ^N @  *¦'?d ¸:i¬«Lí @  *§'?d ø:i¤ ª¶ @  *¨'?d 8;itB&^ @  *©'?d x;i„=Ü' @  *ª'?d ¸;i¤ÈÞÙ @  *«'?d ø;iÇe$ @  *¬ '?d 8i­m‚t @  *µ)'?d x>i]x  @  *¶*'?d ¸>i}çzó @  *·+'?d ø>iuFœ¨ @  *¸,'?d 8?i¥@ @  *¹-'?d x?iUqê9 @  *º.'?duÐ@i7 ¸?iu„èÇ @  *»/'?d ø?i‹ž+À @  *¼0'?d P@iH2‘ü @  *½1'?d @i)~¥ @  *¾2'?d Ð@i˜¸i{ @  *¿3'?d AiÐ` Ô @  *À4'?d PAiRñ  @  *Á5'?d AiêóS @  *Â6'?d ÐAi‚{ä @  *Ã7'?d Biäòy @  *Ä8'?d PBi„uå§ @  *Å9'?d BiÖn þ @  *Æ:'?d ÐBiTÿ  @  *Ç;'?d Ci‡`M @  *È<'?d PCiŒw“ @  *É='?d CiÞ ˜Ê @  *Ê>'?d ÐCi\œ @  *Ë?'?d DiT¾„ @  *Ì@'?d PDiÖ/“Ñ @  *ÍA'?d Di„4|ˆ @  *ÎB'?d ÐDi¥kV @  *ÏC'?d Eiñ|(Û @  *ÐD'?d PEisí? @  *ÑE'?d Ei!öÐ\ @  *ÒF'?d ÐEi£gÇ‚ @  *ÓG'?d Fi'øÑv @  *ÔH'?d PFi¥iƨ @  *ÕI'?d Fi÷r)ñ @  *ÖJ'?d ÐFiuã>/ @  *×K'?d Gi/›CB @  *ØL'?d PGi­ Tœ @  *ÙM'?d Giÿ»Å @  *ÚN'?d ÐGi}€¬ @  *ÛO'?d Hi5ôôß @  *ÜP'?d PHi·eã @  *ÝQ'?d Hiå~ X @  *ÞR'?d ÐHigï† @  *ßS'?d Ii0» @  *àT'?d PIi¡he @  *áU'?d IiQº‡< @  *âV'?d€ ÐIi§èŒD @  +W'?d JiÂ6Ò™ @  +X'?d PJi@§ÅG @  +Y'?d Ji×õÑó @  +Z'?d ÐJiUdÆ- @  +['?d KiÁ®ä: @  +\'?d PKiC?óä @  +]'?d Kiß–CÇ @  +^'?d ÐKi]T @  + _'?d Li`<±þ @  + `'?d PLiâ­¦  @  + a'?d Liuÿ²” @  + b'?d ÐLi÷n¥J @  + c'?d Mic¤‡] @  +d'?d PMiá5ƒ @  +e'?d MiÐ=@ @  +f'?d ÐMiR¬ ž @  +g'?d Nizä‡ @  +h'?d PNi‘ëóY @  +i'?d Ni¹çí @  +j'?d ÐNi„(ð3 @  +k'?d OiâÒ$ @  +l'?d POi’sÅú @  +m'?d OiÚuÙ @  +n'?d ÐOiŒKb @  +o'?d Pi‹Wñ @  +p'?d PPi Ææ_ @  +q'?d Piž”òë @  +r'?d ÐPiå5 @  +s'?d QiˆÏÇ" @  +t'?d PQi ^Ðü @  +u'?d Qi*Py @  + v'?d ÐQi¨ÁnQ @  +!w'?d RiéƒH @  +"x'?d PRik†”– @  +#y'?d RiüÔ€" @  +$z'?d ÐRi~E—ü @  +%{'?d Siêµë @  +&|'?d PSih¢5 @  +'}'?d Siô· @  +(~'?d ÐSiv&È @  +)'?d Ti¦‹¡¬ @  +*€'?d PTi$¶r @  ++'?d Ti³H¢Æ @  +,‚'?d ÐTi1Ùµ @  +-ƒ'?d Ui¥— @  +.„'?d PUi'‚€Ñ @  +/…'?d UiŠ @  +0†'?d ÐUi”Ì @  +1‡'?d ViÕÍôÕ @  +2ˆ'?d PViW\ã  @  +3‰'?d ViÀ÷¿ @  +4Š'?d ÐViBŸàa @  +5‹'?d WiÖUÂv @  +6Œ'?d PWiTÄÕ¨ @  +7'?d WiÈme‹ @  +8Ž'?d ÐWiJürU @  +9'?d XiÇÁÑ| @  +:'?d PXiEPÆ¢ @  +;‘'?d XiÒÒ @  +<’'?d ÐXiP“ÅÈ @  +=“'?d YiÄYçß @  +>”'?d PYiFÈð @  +?•'?d Yi h¸5 @  +@–'?d ÐYiˆù¯ë @  +A—'?d ZiÉ/Bò @  +B˜'?d PZiK¾U, @  +C™'?d ZiÜìA˜ @  +Dš'?d ÐZi^}VF @  +E›'?d [iÊ·tQ @  +Fœ'?d P[iH&c @  +G'?d [iÔÓ¬ @  +Hž'?d Ð[iVÄr @  +IŸ'?d \ik%!• @  +J '?d P\ié´6K @  +K¡'?d \i~æ"ÿ @  +L¢'?d Ð\iüw5! @  +M£'?d ]iªðã @  +N¤'?d P]i(…ç= @  +O¥'?d ]iiþ @  +P¦'?d Ð]i›~  @  +Q§'?d ^iÚÊ“9 @  +R¨'?d P^iX[„ç @  +S©'?d ^iÏ S @  +Tª'?d Ð^iM˜‡ @  +U«'?d _iÙR¥š @  +V¬'?d P_i[òD @  +W­'?d _iÇjg @  +uÐ`iX®'?d Ð_i8{fÅ @  +Y€¯'?d (`i{SÀ @  +Z °'?d h`iù—D @  +[ ±'?d ¨`inÅPª @  +\ ²'?d è`iìTGt @  +] ³'?d (aixžec @  +^ ´'?d haiúr½ @  +_ µ'?d ¨aiÚÛÎ @  +` ¶'?d èaiXÌ @  +a ·'?d (biF!  @  +b ¸'?d hbi›×6× @  +c ¹'?d ¨bi …"c @  +d º'?d èbiŽ5½ @  +e »'?d (ciÞª @  +f ¼'?d hci˜Ot @  +g ½'?d ¨ciæ°W @  +h ¾'?d èci†w§‰ @  +i ¿'?d (diKW @  +j À'?d hdiÉ@¡ @  +k Á'?d ¨di^ßT @  +l Â'?d èdiÜNCË @  +m Ã'?d (eiH„aÜ @  +n Ä'?d heiÊv @  +o Å'?d ¨eiûøÁ @  +p Æ'?d èeiyŒï @  +q Ç'?d (fi8Z @  +r È'?d hfiºËØ @  +s É'?d ¨fi-™l @  +t Ê'?d èfi¯² @  +u Ë'?d (gi;Â4¥ @  +v Ì'?d hgi¹S#{ @  +w Í'?d ¨gi%ú“X @  +x Î'?d ègi§k„† @  +y Ï'?d (hi*V'¯ @  +z Ð'?d hhi¨Ç0q @  +{ Ñ'?d ¨hi?•$Å @  +| Ò'?d èhi½3 @  +} Ó'?d (ii)Î  @  +~ Ô'?d hii«_Ò @  + Õ'?d ¨iiÆ™ @  +€ Ö'?d èiiD‘ŽÜ @  + ×'?d (jiGcÅ @  +‚ Ø'?d hji‡Öt @  +ƒ Ù'?d ¨ji„`¯ @  +„ Ú'?d èji’wq @  +… Û'?d (kißUf @  +† Ü'?d hki„NB¸ @  +‡ Ý'?d ¨kiçò› @  +ˆ Þ'?d èkišvåE @  +‰ ß'?d (li§M¢ @  +Š à'?d hli%Ü| @  +‹ á'?d ¨li²ŽÈ @  +Œ â'?d èli0 @  + ã'?d (mi¤Õ6 @  +Ž ä'?d hmi&D!ß @  + å'?d ¨miL¯ @  + æ'?d èmi•ݸ @  +‘ ç'?d (niÔ UÛ @  +’ è'?d hniVšB @  +“ é'?d ¨niÁÈV± @  +” ê'?d èniCYAo @  +• ë'?d (oiדcx @  +– ì'?d hoiUt¦ @  +— í'?d ¨oiɫą @  +˜ î'?d èoiK:Ó[ @  +™ ï'?d (piL&@Ý @  +š ð'?d hpiηW @  +› ñ'?d ¨piYåC· @  +œ ò'?d èpiÛtTi @  + ó'?d (qiO¾v~ @  +ž ô'?d hqiÍ/a  @  +Ÿ õ'?d ¨qií!ÈÓ @  +  ö'?d èqio°ß  @  +¡ ÷'?d (ri.f2 @  +¢ ø'?d hri¬÷%Ê @  +£ ù'?d ¨ri;¥1~ @  +¤ ú'?d èri¹4&  @  +¥ û'?d (si-þ· @  +¦ ü'?d hsi¯oi @  +§ ý'?d ¨si3Æ£J @  +¨ þ'?d èsi±W´” @  +© ÿ'?d (tiû®t @  +ª (?d htiy?cÍ @  +« (?d ¨tiîmwy @  +¬ (?d ètilü`§ @  +­ (?d (uiø6B° @  +® (?d huiz§Un @  +¯ (?d ¨uiK¯Û­ @  +° (?d èuiÉ>Ìs @  +± (?d (viˆè!j @  +² (?d hvi y6´ @  +³  (?d ¨vi+" @  +´  (?d èviº5Þ @  +µ  (?d (wi‹pÉ @  +¶  (?d hwi á @  +·  (?d ¨wi•H°4 @  +¸ (?d èwiÙ§ê @  +¹ (?d (xišäà @  +º (?d hxiu @  +» (?d ¨xi'© @  +¼ (?d èxi ¶w @  +½ (?d (yi™|2` @  +¾ (?d hyií%¾ @  +¿ (?d ¨yi•äŠ_ @  +À (?d èyiu @  +Á (?d (ziV£p˜ @  + (?d hziÔ2gF @  +à (?d ¨ziC`sò @  +Ä (?d èziÁñd, @  +Å (?d ({iU;F; @  +Æ (?d h{iתQå @  +Ç (?d ¨{iKáÆ @  +È (?d è{iÉ’ö @  +É (?d (|iô©ÿ @  +Ê  (?d h|iv8! @  +Ë !(?d ¨|iáj• @  +Ì "(?d è|icûK @  +Í #(?d (}i÷1%\ @  +Î $(?d h}iu 2‚ @  +Ï %(?d ¨}iD¨¼A @  +Ð &(?d è}iÆ9«Ÿ @  +Ñ '(?d (~i‡ïF† @  +Ò ((?d h~i~QX @  +Ó )(?d ¨~i’,Eì @  +Ô *(?d è~i½R2 @  +Õ +(?d (i„wp% @  +Ö ,(?d hiægû @  +× -(?d ¨iuЀi'šOר @  +Ø .(?d èiÞÀ @  +Ù /(?d @€iÏ¢ F @  +Ú 0(?d €€iïW¸ @  +Û 1(?d À€iÚa, @  +Ü 2(?d i )‚Ä @  +Ý 3(?d @iÌ:;å @  +Þ 4(?d €iìÏ9 @  +ß 5(?d Àin¥…H @  +à 6(?d ‚ióá%‰ @  +á 7(?d @‚i­â @  +â 8(?d€ €‚i AÕÈ @  , 9(?d À‚iß6œu @  , :(?d ƒi~ @  , ;(?d @ƒi $RQ @  , <(?d €ƒi,ÑP¯ @  , =(?d ÀƒiÜ®ªÖ @  , >(?d „iÅàYÙ @  , ?(?d @„i]æ„ @  , @(?d €„i}z @  , A(?d À„ilê @  , B(?d …i]$fë @  , C(?d @…i^~$' @  , D(?d €…i~‹&Ù @  , E(?d À…iŽôÜ  @  , F(?d †i°|a @  , G(?d @†i. Gý @  , H(?d €†iUE @  , I(?d À†iþ*¿z @  , J(?d ‡i.b3’ @  , K(?d @‡i-8q^ @  , L(?d €‡i Ís  @  , M(?d À‡iý²‰Ù @  , N(?d ˆiÉMÄ @  , O(?d @ˆi<¬bT @  , P(?d €ˆiY`ª @  , Q(?d Àˆiì&šÓ @  , R(?d ‰i @  ,$ \(?d €‹i}$À @  ,% ](?d À‹iþÞ¹ @  ,& ^(?d Œi”°-¶ @  ,' _(?d @Œiüæsú @  ,( `(?d €ŒiÜq @  ,) a(?d ÀŒi,l‹} @  ,* b(?d iü$• @  ,+ c(?d @iÿ~EY @  ,, d(?d €iß‹G§ @  ,- e(?d Ài/ô½Þ @  ,. f(?d Ži²° @  ,/ g(?d @Ži &ƒ @  ,0 h(?d €Ži¯U$} @  ,1 i(?d ÀŽi_*Þ @  ,2 j(?d ibRì @  ,3 k(?d @iŒ8  @  ,4 l(?d €i¬ÍÞ @  ,5 m(?d Ài\²è§ @  ,6 n(?d iâlT @  ,7 o(?d @i3… @  ,8 p(?d €i7x1{ @  ,9 q(?d ÀiÇË @  ,: r(?d ‘iOGê @  ,; s(?d @‘i& @  ,< t(?d €‘i4àØ @  ,= u(?d À‘iÄŸý¡ @  ,> v(?d ’iYÛ]` @  ,? w(?d @’iÛÊGÞ @  ,@ x(?d €’iû?E  @  ,A y(?d À’i @¿Y @  ,B z(?d “iÛ3± @  ,C {(?d @“iØRq} @  ,D |(?d €“iø§sƒ @  ,E }(?d À“i؉ú @  ,F ~(?d ”i–zõ @  ,G (?d @”i”Ve: @  ,H €(?d €”i´£gÄ @  ,I (?d À”iDܽ @  ,J ‚(?d •i””U @  ,K ƒ(?d @•i—ÎS™ @  ,L „(?d €•i·;Qg @  ,M …(?d À•iGD« @  ,N †(?d –iÚ ß @  ,O ‡(?d @–iç0C @  ,P ˆ(?d €–iÇå2½ @  ,Q ‰(?d À–i7šÈÄ @  ,R Š(?d —içÒD, @  ,S ‹(?d @—iäˆà @  ,T Œ(?d €—iÄ} @  ,U (?d À—i4þg @  ,V Ž(?d ˜iýrz @  ,W (?d @˜iõê @  ,X (?d €˜iÕé @  ,Y ‘(?d À˜i%–ím @  ,Z ’(?d ™iõÞa… @  ,[ “(?d @™iö„#I @  ,\ ”(?d €™iÖq!· @  ,] •(?d À™i&ÛÎ @  ,^ –(?d ši»J{ @  ,_ —(?d @ši—\g# @  ,` ˜(?d €ši·©eÝ @  ,a ™(?d ÀšiGÖŸ¤ @  ,b š(?d ›i—žL @  ,c ›(?d @›i”ÄQ€ @  ,d œ(?d €›i´1S~ @  ,e (?d À›iDN© @  ,f ž(?d œi]Z @  ,g Ÿ(?d @œi5VD @  ,h  (?d €œi£º @  ,i ¡(?d ÀœiåÜüà @  ,j ¢(?d i5”p+ @  ,k £(?d @i6Î2ç @  ,l ¤(?d €i;0 @  ,m ¥(?d ÀiæDÊ` @  ,n ¦(?d ži{j¡ @  ,o §(?d @žiFQ= @  ,p ¨(?d €žifåSà @  ,q ©(?d Àži–š©º @  ,r ª(?d ŸiFÒ%R @  ,s «(?d @ŸiEˆgž @  ,t ¬(?d €Ÿie}e` @  ,u ­(uРi?d ÀŸi•Ÿ @  ,v ®(?d  iä A @  ,w ¯(?d X iè&ï @  ,x °(?d ˜ i1$ @  ,y ±(?d Ø iÁbÞh @  ,z ²(?d ¡i*R€ @  ,{ ³(?d X¡ipL @  ,| ´(?d ˜¡i2…² @  ,} µ(?d Ø¡iÂúèË @  ,~ ¶(?d ¢i_¾H  @  , ·(?d X¢i>ùb… @  ,€ ¸(?d ˜¢i `{ @  , ¹(?d Ø¢iîsš @  ,‚ º(?d £i>;ê @  ,ƒ »(?d X£i=aT& @  ,„ ¼(?d ˜£i”VØ @  ,… ½(?d Ø£ií묡 @  ,† ¾(?d ¤iô¥_® @  ,‡ ¿(?d X¤il£ó @  ,ˆ À(?d ˜¤iLV  @  ,‰ Á(?d ؤi¼)ìt @  ,Š Â(?d ¥ila`œ @  ,‹ Ã(?d X¥io;"P @  ,Œ Ä(?d ˜¥iOÎ ® @  , Å(?d Ø¥i¿±Ú× @  ,Ž Æ(?d ¦i"õz @  , Ç(?d X¦iåAŠ @  , È(?d ˜¦i?Ct @  ,‘ É(?d ئiÏo¹  @  ,’ Ê(?d §i'5å @  ,“ Ë(?d X§i}w) @  ,” Ì(?d ˜§i<ˆu× @  ,• Í(?d اiÌ÷® @  ,– Î(?d ¨iø³ @  ,— Ï(?d X¨i éd# @  ,˜ Ð(?d ˜¨i-fÝ @  ,™ Ñ(?d بiÝcœ¤ @  ,š Ò(?d ©i +L @  ,› Ó(?d X©iqR€ @  ,œ Ô(?d ˜©i.„P~ @  , Õ(?d Ø©iÞûª @  ,ž Ö(?d ªiC¿ Æ @  ,Ÿ ×(?d Xªio©ê @  ,  Ø(?d ˜ªiO\ @  ,¡ Ù(?d تi¿#îm @  ,¢ Ú(?d «iokb… @  ,£ Û(?d X«il1 I @  ,¤ Ü(?d ˜«iLÄ"· @  ,¥ Ý(?d Ø«i¼»ØÎ @  ,¦ Þ(?d ¬i¥õ+Á @  ,§ ß(?d X¬iÍ£u @  ,¨ à(?d ˜¬iíVws @  ,© á(?d جi)  @  ,ª â(?d ­iÍaâ @  ,« ã(?d X­iÎ;C. @  ,¬ ä(?d ˜­iîÎAÐ @  ,­ å(?d Ø­i±»© @  ,® æ(?d ®iƒõh @  ,¯ ç(?d X®i¾å ô @  ,° è(?d ˜®iž"  @  ,± é(?d Ø®inoØs @  ,² ê(?d ¯i¾'T› @  ,³ ë(?d X¯i½}W @  ,´ ì(?d ˜¯iˆ© @  ,µ í(?d دim÷îÐ @  ,¶ î(?d °iÓ)Rb @  ,· ï(?d X°i&È5ò @  ,¸ ð(?d ˜°i=7  @  ,¹ ñ(?d ذiöBÍu @  ,º ò(?d ±i& A @  ,» ó(?d X±i%PQ @  ,¼ ô(?d ˜±i¥¯ @  ,½ õ(?d رiõÚûÖ @  ,¾ ö(?d ²ihž[ @  ,¿ ÷(?d X²iêA© @  ,À ø(?d ˜²iÊzCW @  ,Á ù(?d زi:¹. @  , ú(?d ³iêM5Æ @  ,à û(?d X³iéw  @  ,Ä ü(?d ˜³iÉâuô @  ,Å ý(?d سi9 @  ,Æ þ(?d ´i Ó|‚ @  ,Ç ÿ(?d X´iÚt6A @  ,È )?d ˜´iú4¿ @  ,É )?d Ø´i þÎÆ @  ,Ê )?d µiÚ¶B. @  ,Ë )?d XµiÙìâ @  ,Ì )?d ˜µiù @  ,Í )?d صi føe @  ,Î )?d ¶i”"X¤ @  ,Ï )?d X¶i©2c8 @  ,Ð )?d ˜¶i‰ÇaÆ @  ,Ñ  )?d ضiy¸›¿ @  ,Ò  )?d ·i©ðW @  ,Ó  )?d X·iªªU› @  ,Ô  )?d ˜·iŠ_We @  ,Õ  )?d Ø·iz ­ @  ,Ö )?d ¸iNß! @  ,× )?d X¸i»>F‘ @  ,Ø )?d ˜¸i›ËDo @  ,Ù )?d ظik´¾ @  ,Ú )?d ¹i»ü2þ @  ,Û )?d X¹i¸¦p2 @  ,Ü )?d ˜¹i˜SrÌ @  ,Ý )?d عih,ˆµ @  ,Þ )?d ºiõh(t @  ,ß )?d XºiÙ~4X @  ,à )?d ˜ºiù‹6¦ @  ,á )?d غi ôÌß @  ,â )?d€ »i­\‘ @  - )?d X»iOdVt @  - )?d ˜»io‘TŠ @  - )?d Ø»ic`‰Ë @  -)?d ¼iz.zÄ @  -)?d X¼iÜÊ{ò @  - )?d ˜¼iü?y  @  -!)?d ؼiÂòÜ @  -")?d ½iºPç @  - #)?d X½iÔ©éÆ @  - $)?d ˜½iô\ë8 @  - %)?d ؽiÁjê¬ @  - &)?d ¾i\.Jm @  - ')?d X¾i-k @  -()?d ˜¾i"Ø• @  -))?d ؾi±´‰v @  -*)?d ¿iaüž @  -+)?d X¿i§ï¼¿ @  -,)?d ˜¿i‡¾A @uÐÀi  --)?d Ø¿i‹ëc @  - .)?d 0Àiï2R @  - /)?d pÀiÔH ¸ @  - 0)?d °Àiô½F @  - 1)?d ðÀiÊp­E @  - 2)?d 0Ái8!­ @  - 3)?d pÁiÜ+˜Œ @  - 4)?d °ÁiüÞšr @  - 5)?d ðÁiÉè›æ @  - 6)?d 0ÂiT¬;' @  - 7)?d pÂi ¯a! @  - 8)?d °Âi*Zcß @  - 9)?d ðÂi¨0ߌ @  - :)?d 0ÃixxSd @  -! ;)?d pÃi¾kêE @  -" <)?d °Ãižžè» @  -# =)?d ðÃi«¨é/ @  -$ >)?d 0Äi²æ  @  -% ?)?d pÄiäR @  -& @)?d °Äiħ ù @  -' A)?d ðÄiúj©ú @  -( B)?d 0Åi*"% @  -) C)?d pÅiì1œ3 @  -* D)?d °ÅiÌÄžÍ @  -+ E)?d ðÅiùòŸY @  -, F)?d 0Æid¶?˜ @  -- G)?d pÆi:µež @  -. H)?d °Æi@g` @  -/ I)?d ðÆi‰,üƒ @  -0 J)?d 0ÇiYdpk @  -1 K)?d pÇiŸwÉJ @  -2 L)?d °Çi¿‚Ë´ @  -3 M)?d ðÇiŠ´Ê  @  -4 N)?d 0Èi¾KF= @  -5 O)?d pÈi…~× @  -6 P)?d °Èi¥í|) @  -7 Q)?d ðÈi› Ù* @  -8 R)?d 0ÉiKhU @  -9 S)?d pÉi{ìã @  -: T)?d °Éi­Žî @  -; U)?d ðÉi˜¸ï‰ @  -< V)?d 0ÊiüOH @  -= W)?d pÊi[ÿN @  -> X)?d °Êi{ ° @  -? Y)?d ðÊiWg­q @  -@ Z)?d 0Ëi‡/!™ @  -A [)?d pËiA<˜¸ @  -B \)?d °ËiaÉšF @  -C ])?d ðËiTÿ›Ò @  -D ^)?d 0ÌiM±hÝ @  -E _)?d pÌiëUië @  -F `)?d °ÌiË k @  -G a)?d ðÌiõmÎ @  -H b)?d 0Íi%%Bþ @  -I c)?d pÍiã6ûß @  -J d)?d °ÍiÃÃù! @  -K e)?d ðÍiöõøµ @  -L f)?d 0Îik±Xt @  -M g)?d pÎi5²r @  -N h)?d °ÎiGŒ @  -O i)?d ðÎi†+›o @  -P j)?d 0ÏiVc‡ @  -Q k)?d pÏip®¦ @  -R l)?d °Ïi°…¬X @  -S m)?d ðÏi…³­Ì @  -T n)?d 0Ði;m~ @  -U o)?d pÐi>)” @  -V p)?d °Ði Ë+j @  -W q)?d ðÐiŽi @  -X r)?d 0ÑiÎN @  -Y s)?d pÑi]»  @  -Z t)?d °Ñi(¨¹^ @  -[ u)?d ðÑiž¸Ê @  -\ v)?d 0Òi€Ú  @  -] w)?d pÒiÞÙB  @  -^ x)?d °Òiþ,@ó @  -_ y)?d ðÒi|Fü  @  -` z)?d 0Ói¬pH @  -a {)?d pÓijÉi @  -b |)?d °ÓiJèË— @  -c })?d ðÓiÞÊ @  -d ~)?d 0Ôif9  @  -e )?d pÔi-ây¹ @  -f €)?d °Ôi {G @  -g )?d ðÔi3ÚÞD @  -h ‚)?d 0Õiã’R¬ @  -i ƒ)?d pÕi%ë @  -j „)?d °Õités @  -k …)?d ðÕi0Bèç @  -l †)?d 0Öi­H& @  -m ‡)?d pÖió  @  -n ˆ)?d °ÖiÓðÞ @  -o ‰)?d ðÖi@œ‹= @  -p Š)?d 0×iÔÕ @  -q ‹)?d p×iVǾô @  -r Œ)?d °×iv2¼  @  -s )?d ð×iC½ž @  -t Ž)?d 0Øiwû1ƒ @  -u )?d pØiL¨ i @  -v )?d °Øil] — @  -w ‘)?d ðØiR®” @  -x ’)?d 0Ùi‚Ø"| @  -y “)?d pÙiDË›] @  -z ”)?d °Ùid>™£ @  -{ •)?d ðÙiQ˜7 @  -| –)?d 0ÚiÌL8ö @  -} —)?d pÚi’Obð @  -~ ˜)?d °Úi²º` @  - ™)?d ðÚi}êþ @  -€ š)?d 0Ûi­Éf @  - ›)?d pÛikÚß7 @  -‚ œ)?d °ÛiK/ÝÉ @  -ƒ )?d ðÛi~Ü] @  -„ ž)?d 0ÜigW/R @  -… Ÿ)?d pÜiÁ³.d @  -†  )?d °ÜiáF,š @  -‡ ¡)?d ðÜiß‹‰™ @  -ˆ ¢)?d 0ÝiÃq @  -‰ £)?d pÝiÉмP @  -Š ¤)?d °Ýié%¾® @  -‹ ¥)?d ðÝiÜ¿: @  -Œ ¦)?d 0ÞiAWû @  - §)?d pÞiTEý @  -Ž ¨)?d °Þi?¡G @  - ©)?d ðÞi¬ÍÜà @  - ª)?d 0ßi|…P @  -‘ «)?d pßiº–é) @  -’ ¬)?d uÐài/°ßišcë× @  -“ ­)?d ðßi¯UêC @  -” ®)?d Hài¶ñ´µ @  -• ¯)?d ˆài/Æ™ @  -– °)?d Èài­WŽ¡ @  -— ±)?d áiÁC°” @  -˜ ²)?d HáiCÒ§J @  -™ ³)?d ˆái'¥ K @  -š ´)?d Èái¥4• @  -› µ)?d âiת @  -œ ¶)?d Hâi F½À @  - ·)?d ˆâiñ!òæ @  -ž ¸)?d Èâis°å8 @  -Ÿ ¹)?d ãi£Â] @  -  º)?d Hãi!’Õƒ @  -¡ »)?d ˆãiEåy‚ @  -¢ ¼)?d ÈãiÇtn\ @  -£ ½)?d äii‹ @  -¤ ¾)?d Häië œÇ @  -¥ ¿)?d ˆäiÜÀ @  -¦ À)?d ÈäiMŠ @  -§ Á)?d åiñY´+ @  -¨ Â)?d HåisÈ£õ @  -© Ã)?d ˆåi¿ô @  -ª Ä)?d Èåi•.* @  -« Å)?d æi¿Í®¡ @  -¬ Æ)?d Hæi=\¹ @  -­ Ç)?d ˆæiÁ;öY @  -® È)?d ÈæiCªá‡ @  -¯ É)?d çi‚áR @  -° Ê)?d HçiŽöŒ @  -± Ë)?d ˆçidùZ @  -² Ì)?d ÈçiæhMS @  -³ Í)?d èie0× @  -´ Î)?d Hèiç¡ÀÚ @  -µ Ï)?d ˆèi~–í @  -¶ Ð)?d ÈèiüúÎ @  -· Ñ)?d éiÄû @  -¸ Ò)?d Héi‚Ó% @  -¹ Ó)?d ˆéivõ$ @  -º Ô)?d Èéiôdhú @  -» Õ)?d êiÞ‡Þq @  -¼ Ö)?d Hêi\ɯ @  -½ ×)?d ˆêi q†‰ @  -¾ Ø)?d Èêi"à‘W @  -¿ Ù)?d ëi\T°  @  -À Ú)?d HëiÞŧ~ @  -Á Û)?d ˆëiº²  @  - Ü)?d Èëi8#¡ @  -à Ý)?d ìi–Êùä @  -Ä Þ)?d Hìi[î: @  -Å ß)?d ˆìiÛú, @  -Æ à)?d Èìi’Jíò @  -Ç á)?d íiþ^ÓÇ @  -È â)?d Híi|ÏÄ @  -É ã)?d ˆíi¸h @  -Ê ä)?d Èíiš)Æ @  -Ë å)?d îi°ÊÉM @  -Ì æ)?d Hîi2[Þ“ @  -Í ç)?d ˆîiÎ<‘µ @  -Î è)?d ÈîiL­†k @  -Ï é)?d ïi†¾ @  -Ð ê)?d Hïi‰‘` @  -Ñ ë)?d ˆïikþ=a @  -Ò ì)?d Èïiéo*¿ @  -Ó í)?d ðià€G @  -Ô î)?d Hðib‡—™ @  -Õ ï)?d ˆðiû°ºS @  -Ö ð)?d Èðiy!­ @  -× ñ)?d ñi5“¸ @  -Ø ò)?d Hñi—¤„f @  -Ù ó)?d ˆñióÓ(g @  -Ú ô)?d ÈñiqB?¹ @  -Û õ)?d òi[¡‰2 @  -Ü ö)?d HòiÙ0žì @  -Ý ÷)?d ˆòi%WÑÊ @  -Þ ø)?d Èòi§ÆÆ @  -ß ù)?d óiwuáq @  -à ú)?d Hóiõäö¯ @  -á û)?d ˆói‘“Z® @  -â ü)?d€ ÈóiÒEºp @  . ý)?d ôií @  . þ)?d Hôi| @  . ÿ)?d ˆôiþfΓ @  . *?d Èôi|÷ÙM @  . *?d õiÞQ¸ @  . *?d Hõi\À¯Ü @  . *?d ˆõiö\§ @  . *?d Èõit”Ky @  . *?d öi›> @  . *?d Höi¯Á @  . *?d ˆöi ¥  @  . *?d Èöi¢²Ô @  .  *?d ÷i¶Ó› @  .  *?d H÷i‚'ÄE @  .  *?d ˆ÷i…C Þ @  .  *?d È÷iÒ @  .  *?d øiAú @  . *?d HøiÃRhd @  . *?d ˆøiŸ,¾C @  . *?d Èøi½© @  . *?d ùi¿ÈÒ @  . *?d Hùi=Šß  @  . *?d ˆùi—O,w @  . *?d ÈùiÞ;© @  . *?d úiútvÏ @  . *?d Húixåa @  . *?d ˆúiAËÕÚ @  . *?d ÈúiÃZ @  . *?d ûiaü£K @  . *?d Hûiãm´• @  . *?d ˆûiõ^¾ @  . *?d ÈûiwžI` @  .! *?d üi>WÈ @  ." *?d Hüiž¯@ @  .# *?d ˆüi_f¯í @  .$  *?d ÈüiÝ÷¸3 @  .% !*?d ýiQÙ| @  .& "*?d HýiýÀ΢ @  .' #*?d ˆýiW=Ù @  .( $*?d ÈýiÕ”* @  .) %*?d þi:>ga @  .* &*?d Hþi¸¯p¿ @  .+ '*?d ˆþiÄt @  ., (*?d ÈþiÓª @  .- )*?d ÿi¡¶²å @  .. **?d Hÿi#'¥; @  ./ +*?d ˆÿi$Ch  @  .0 uÐj,*?d Èÿi¦Ò~ @  .1 -*?d jÐÍÚÎ @  .2 .*?d `jR\Í @  .3 /*?d  j"7 @  .4 0*?d àjŒ³ é @  .5 1*?d j.m¦ @  .6 2*?d `j¬„zx @  .7 3*?d  jA‰ @  .8 4*?d àj„ОÝ @  .9 5*?d jkzÓ» @  .: 6*?d `jéëÄe @  .; 7*?d  jÐÅp® @  .< 8*?d àjRTgp @  .= 9*?d jðò? @  .> :*?d `jrcá @  .? ;*?d  jÊýX @  .@ <*?d àjH—ê† @  .A =*?d j#7ô. @  .B >*?d `j¡¦ãð @  .C ?*?d  j? @  .D @*?d àj®Ä @  .E A*?d j°o‹ @  .F B*?d `j2™xU @  .G C*?d  j˜\‹. @  .H D*?d àjÍœð @  .I E*?d jõgÑ– @  .J F*?d `jwöÆH @  .K G*?d  jNØrƒ @  .L H*?d àjÌIe] @  .M I*?d jnï @  .N J*?d `jì~Ì @  .O K*?d  jëÞW @  .P L*?d àji‹É‰ @  .Q M*?d j/š¨3 @  .R N*?d `j­ ¿í @  .S O*?d  jñuiÊ @  .T P*?d àjsä~ @  .U Q*?d jÑB[ @  .V R*?d ` jSÓ… @  .W S*?d   jùûþ @  .X T*?d à j{‡ì  @  .Y U*?d j”-¡F @  .Z V*?d ` j¼¶˜ @  .[ W*?d   j/’S @  .\ X*?d à j­ @  .] Y*?d j¥t @  .^ Z*?d ` j4c @  ._ [*?d   j›V‰7 @  .` \*?d à jÇžé @  .a ]*?d jrg€A @  .b ^*?d ` jðö—Ÿ @  .c _*?d   j1?xd @  .d `*?d à j³®oº @  .e a*?d jõ @  .f b*?d ` j“™+ @  .g c*?d   j9\êP @  .h d*?d à j»ÍýŽ @  .i e*?d jTg°è @  .j f*?d `jÖö§6 @  .k g*?d  jïØý @  .l h*?d àjmI# @  .m i*?d jÏïel @  .n j*?d `jM~r² @  .o k*?d  jJ¿) @  .p l*?d àjÈ‹¨÷ @  .q m*?d j»ùâ @  .r n*?d `j†*î< @  .s o*?d  jÚT8 @  .t p*?d àjXÅ/Å @  .u q*?d júcNŠ @  .v r*?d `jxòYT @  .w s*?d  jÒ7ª/ @  .x t*?d àjP¦½ñ @  .y u*?d j¿ ð— @  .z v*?d `j=çI @  .{ w*?d  j³S‚ @  .| x*?d àj†"D\ @  .} y*?d j$„% @  .~ z*?d `j¦2Í @  . {*?d  jý&îE @  .€ |*?d àj·ù› @  . }*?d jç3 @  .‚ ~*?d `j–†ðí @  .ƒ *?d  jºÙ^• @  .„ €*?d àj8HIK @  .… *?d jšî( @  .† ‚*?d `j?Ú @  .‡ ƒ*?d  j²ºÌ¡ @  .ˆ „*?d àj0+Û @  .‰ …*?d jß– @  .Š †*?d `j]Ç @  .‹ ‡*?d  jd>5  @  .Œ ˆ*?d àjæ¯"Ò @  . ‰*?d jD C @  .Ž Š*?d `jƘTC @  . ‹*?d  jÁü™Ø @  . Œ*?d àjCmŽ @  .‘ *?d j|ï¼ @  .’ Ž*?d `j‡íøb @  .“ *?d  jÛ“.E @  .” *?d àjY9› @  .• ‘*?d jû¤XÔ @  .– ’*?d `jy5O  @  .— “*?d  jÓð¼q @  .˜ ”*?d àjQa«¯ @  .™ •*?d j¾ËæÉ @  .š –*?d `jTr @  .¬ ¨*?d àjG¯C¬ @  .­ ©*?d jå "ã @  .® ª*?d `jg˜5= @  .¯ «*?d  j`üø¦uÐ j @  .° ¬*?d àjÛª3­ @  .±­*?d 8 jØOl @  .²®*?d x jZÞ² @  .³¯*?d ¸ j Á• @  .´°*?d ø j„1ÖK @  .µ±*?d 8!j&—· @  .¶²*?d x!j¤ Ú @  .·³*?d ¸!jÃS¡ @  .¸´*?d ø!jŒRD @  .¹µ*?d 8"jcø  @  .º¶*?d x"jáiÇ @  .»·*?d ¸"jØGª  @  .¼¸*?d ø"jZÖ½Ò @  .½¹*?d 8#jøpÜ @  .¾º*?d x#jzáËC @  .¿»*?d ¸#j„'ú @  .À¼*?d ø#j@0$ @  .Á½*?d 8$j+µ.Œ @  .¾*?d x$j©$9R @  .ÿ*?d ¸$j˜½Ã¸ @  .ÄÀ*?d ø$j,Ôf @  .ÅÁ*?d 8%j¸Šµ) @  .ÆÂ*?d x%j:¢÷ @  .ÇÃ*?d ¸%jÞQŒ @  .ÈÄ*?d ø%jOFR @  .ÉÅ*?d 8&jýå 4 @  .ÊÆ*?d x&jtê @  .ËÇ*?d ¸&jFZ¨! @  .ÌÈ*?d ø&jÄË¿ÿ @  .ÍÉ*?d 8'jfmÞ° @  .ÎÊ*?d x'jäüÉn @  .ÏË*?d ¸'jã˜õ @  .ÐÌ*?d ø'ja + @  .ÑÍ*?d 8(j'r‘ @  .ÒÎ*?d x(j¥‰eO @  .ÓÏ*?d ¸(jù÷³h @  .ÔÐ*?d ø(j{f¤¶ @  .ÕÑ*?d 8)jÙÀÅù @  .ÖÒ*?d x)j[QÒ' @  .×Ó*?d ¸)jñ”!\ @  .ØÔ*?d ø)js6‚ @  .ÙÕ*?d 8*jœ¯{ä @  .ÚÖ*?d x*j>l: @  .Û×*?d ¸*j'Øñ @  .ÜØ*?d ø*j¥Ï/ @  .ÝÙ*?d 8+j'®` @  .ÞÚ*?d x+j…¶¹¾ @  .ßÛ*?d ¸+j“ÔS• @  .àÜ*?d ø+jEDK @  .áÝ*?d 8,jzåZã @  .âÞ*?d€ x,jŒ·Q› @  /ß*?d ¸,j¬?öI @  /à*?d ø,j.®á— @  /á*?d 8-jIA{5 @  /â*?d x-jËÐlë @  /ã*?d ¸-j¯§Àê @  /ä*?d ø-j-6×4 @  /å*?d 8.j .Å( @  /æ*?d x.jŽ¿Òö @  / ç*?d ¸.jrØÐ @  / è*?d ø.jðIŠ @  / é*?d 8/j—¦¬ @  / ê*?d x/j7r @  / ë*?d ¸/jq@«s @  /ì*?d ø/jóѼ­ @  /í*?d 80j\òŒ" @  /î*?d x0jÞc›ü @  /ï*?d ¸0jGT¶6 @  /ð*?d ø0jÅÅ¡è @  /ñ*?d 81j¢*;J @  /ò*?d x1j »,” @  /ó*?d ¸1jDÌ€• @  /ô*?d ø1jÆ]—K @  /õ*?d 82jçE…W @  /ö*?d x2jeÔ’‰ @  /÷*?d ¸2j™³Ý¯ @  /ø*?d ø2j"Êq @  /ù*?d 83j|ÍPÓ @  /ú*?d x3jþ\G  @  /û*?d ¸3jš+ë  @  /ü*?d ø3jºüÒ @  /ý*?d 84j¤P @  / þ*?d x4jƒž³Ž @  /!ÿ*?d ¸4jï³ @  /"+?d ø4j—~¤É @  /#+?d 85jð‘>k @  /$+?d x5jr)µ @  /%+?d ¸5jw…´ @  /&+?d ø5j”æ’j @  /'+?d 86jµþ€v @  /(+?d x6j7o—¨ @  /)+?d ¸6jËØŽ @  /*+?d ø6jI™ÏP @  /+ +?d 87j.vUò @  /, +?d x7j• žù @  /-  +?d ¸7jñW2ø @  /.  +?d ø7jsÆ%& @  //  +?d 88jVÄ% @  /0 +?d x8jÔU2Ø @  /1 +?d ¸8jMb @  /2 +?d ø8jÏóÌ @  /3 +?d 89j¨’n @  /4 +?d x9j*…° @  /5 +?d ¸9jNú)± @  /6 +?d ø9jÌk>o @  /7 +?d 8:jís,s @  /8 +?d x:joâ;­ @  /9 +?d ¸:j“…t‹ @  /: +?d ø:jcU @  /; +?d 8;jvûù÷ @  /< +?d x;jôjî) @  /= +?d ¸;jB( @  /> +?d ø;jŒUö @  /? +?d 8 æ @  /@ +?d x @  /F $+?d ø=j¢&)S @  /G %+?d 8>jƒ>;O @  /H &+?d x>j¯,‘ @  /I '+?d ¸>jýÈc· @  /J (+?d ø>jYti @  /K )+?d 8?j¶îË @  /L *+?d x?jš'ù @  /M ++?duÐ@j7 ¸?jþPU @  /N ,+?d ø?jEž @  /O-+?d P@j—W¨ @  /P.+?d @j·¢ªà @  /Q/+?d Ð@jŒñ’  @  /R0+?d Aj\¹â @  /S1+?d PAjiv @  /T2+?d AjIzˆ @  /U3+?d ÐAji¤© @  /V4+?d Bj-h @  /W5+?d PBj,à¡k @  /X6+?d Bj £• @  /Y7+?d ÐBjRù“ @  /Z8+?d Cj‚^u{ @  /[9+?d PCj·htï @  /\:+?d Cj—v @  /];+?d ÐCjQŽÏ0 @  /^<+?d DjHÀ+?d Djê_‚’ @  /a?+?d ÐDj¼ë–µ @  /b@+?d Ejl£] @  /cA+?d PEjY•É @  /dB+?d Ejy`7 @  /eC+?d ÐEj¿s  @  /fD+?d Fj"7× @  /gE+?d PFjú¥Ô @  /hF+?d Fj<§* @  /iG+?d ÐFjb ý, @  /jH+?d Gj²DqÄ @  /kI+?d PGj‡rpP @  /lJ+?d Gj§‡r® @  /mK+?d ÐGja”Ë @  /nL+?d HjUkG’ @  /oM+?d PHjÆÜq @  /pN+?d HjæòÞ @  /qO+?d ÐHjÝ¡æe @  /rP+?d Ij éj @  /sQ+?d PIj8ßk @  /tR+?d Ij*iç @  /uS+?d ÐIjÞ9ÐÆ @  /vT+?d JjC}p @  /wU+?d PJj}°Õ @  /xV+?d Jj]E×ú @  /yW+?d ÐJjFü @  /zX+?d KjÓ @  /{Y+?d PKjæ8€ @  /|Z+?d KjÆÍ~ @  /}[+?d ÐKjÞ»_ @  /~\+?d LjHP @  /]+?d PLj֫  @  /€^+?d Ljö^À^ @  /_+?d ÐLjPºÁh @  /‚`+?d Mj€òM€ @  /ƒa+?d PMjµÄL @  /„b+?d Mj•1Nê @  /…c+?d ÐMjS"÷Ë @  /†d+?d NjÎfW  @  /‡e+?d PNjð«ò  @  /ˆf+?d NjÐ^ð÷ @  /‰g+?d ÐNjŽ]ªñ @  /Šh+?d Oj^& @  /‹i+?d POjk#' @  /Œj+?d OjKÖ%s @  /k+?d ÐOjÅœR @  /Žl+?d Pj3 à @  /m+?d PPj w» @  /n+?d Pj€‚¹ý @  /‘o+?d ÐPj»Ñ @  /’p+?d Qjk™ ÿ @  /“q+?d PQj^¯ k @  /”r+?d Qj~Z• @  /•s+?d ÐQj¸I·´ @  /–t+?d Rj% u @  /—u+?d PRjÀ²v @  /˜v+?d Rj;5°ˆ @  /™w+?d ÐRje6êŽ @  /šx+?d Sjµ~ff @  /›y+?d PSj€Hgò @  /œz+?d Sj ½e  @  /{+?d ÐSjf®Ü- @  /ž|+?d Tjà/" @  /Ÿ}+?d PTjýŠ“q @  / ~+?d TjÝ‘ @  /¡+?d ÐTj– Ñ: @  /¢€+?d UjFE]Ò @  /£+?d PUjss\F @  /¤‚+?d UjS†^¸ @  /¥ƒ+?d ÐUj••ç™ @  /¦„+?d VjÑGX @  /§…+?d PVj6â[ @  /¨†+?d Vjéॠ@  /©‡+?d ÐVjH꺣 @  /ªˆ+?d Wj˜¢6K @  /«‰+?d PWj­”7ß @  /¬Š+?d Wja5! @  /­‹+?d ÐWjKrŒ @  /®Œ+?d Xj @  /¯+?d PXjìá›þ @  /°Ž+?d XjÌ™ @  /±+?d ÐXj÷G¡ê @  /²+?d Yj'- @  /³‘+?d PYj9,– @  /´’+?d Yj2Ì.h @  /µ“+?d ÐYjôß—I @  /¶”+?d Zji›7ˆ @  /·•+?d PZjWV’‹ @  /¸–+?d Zjw£u @  /¹—+?d ÐZj) Ês @  /º˜+?d [jùèF› @  /»™+?d P[jÌÞG @  /¼š+?d [jì+Eñ @  /½›+?d Ð[j*8üÐ @  /¾œ+?d \j3vß @  /¿+?d P\jµ @  /Àž+?d \j?î·à @  /ÁŸ+?d Ð\j™ ¶Ö @  / +?d ]jIB:> @  /á+?d P]j|t;ª @  /Ä¢+?d ]j\9T @  /Å£+?d Ð]jš’€u @  /Ƥ+?d ^jÖ ´ @  /Ç¥+?d P^j9…· @  /Ȧ+?d ^jî‡I @  /ɧ+?d Ð^jGíÝO @  /ʨ+?d _j—¥Q§ @  /Ë©+?d P_j¢“P3 @  /̪+?d _j‚fRÍ @  /uÐ`jÍ«+?d Ð_jDuëì @  /ά+?d (`jú^t @  /Ï­+?d h`jiáÅ— @  /Ю+?d ¨`jIÇi @  /ѯ+?d è`jrGÿƒ @  /Ò°+?d (aj¢sk @  /Ó±+?d haj—9rÿ @  /Ô²+?d ¨aj·Ìp @  /Õ³+?d èajqßÉ  @  /Ö´+?d (bjì›iá @  /×µ+?d hbjÒVÌâ @  /ض+?d ¨bjò£Î @  /Ù·+?d èbj¬ ” @  /Ú¸+?d (cj|èò @  /Û¹+?d hcjIÞf @  /ܺ+?d ¨cji+˜ @  /Ý»+?d ècj¯8¢¹ @  /Þ¼+?d (dj¶vQ¶ @  /ß½+?d hdj4íå @  /à¾+?d ¨djéï @  /á¿+?d èdjB]û< @  /âÀ+?d€ (ejùI›: @  0Á+?d hej->Ò‡ @  0Â+?d ¨ej ËÐy @  0Ã+?d èej‘’µ @  0Ä+?d (fj“Õ2t @  0Å+?d hfjcªÈ  @  0Æ+?d ¨fjC_Êó @  0Ç+?d èfjÓîÏ @  0È+?d (gj¦Cg @  0 É+?d hgjóÙ¹ @  0 Ê+?d ¨gjÓ,»à @  0 Ë+?d ègjÐvù, @  0 Ì+?d (hjä‰u1 @  0 Í+?d hhjöH @  0Î+?d ¨hj4¶ @  0Ï+?d èhjlCÔÆ @  0Ð+?d (ij¼ X. @  0Ñ+?d hijLt¢W @  0Ò+?d ¨ijl © @  0Ó+?d èijoÛâe @  0Ô+?d (jjòŸB¤ @  0Õ+?d hjjà¸Ý @  0Ö+?d ¨jj"º# @  0×+?d èjj²¤¿_ @  0Ø+?d (kjbì3· @  0Ù+?d hkj’“ÉÎ @  0Ú+?d ¨kj²fË0 @  0Û+?d èkj±<‰ü @  0Ü+?d (lj¨rzó @  0Ý+?d hljX €Š @  0Þ+?d ¨ljxø‚t @  0ß+?d èlj¬ Åh @  0 à+?d (mj|AI€ @  0!á+?d hmjŒ>³ù @  0"â+?d ¨mj¬Ë± @  0#ã+?d èmj¯‘óË @  0$ä+?d (nj2ÕS  @  0%å+?d hnjª©s @  0&æ+?d ¨njâ_« @  0'ç+?d ènjrî®ñ @  0(è+?d (oj¢¦" @  0)é+?d hojRÙØ` @  0*ê+?d ¨ojr,Úž @  0+ë+?d èojqv˜R @  0,ì+?d (pjϨ$à @  0-í+?d hpj?×Þ™ @  0.î+?d ¨pj"Üg @  0/ï+?d èpjGb… @  00ð+?d (qj—* ÿ @  01ñ+?d hqjgUó† @  02ò+?d ¨qj~g-­ @  03 ó+?d èqj}=oa @  04 ô+?d (rjàyÏ  @  05 õ+?d hrj5Ù @  06 ö+?d ¨rj0ó7' @  07 ÷+?d èrj B2[ @  08 ø+?d (sjp ¾³ @  09 ù+?d hsj€uDÊ @  0: ú+?d ¨sj €F4 @  0; û+?d èsj£Úø @  0< ü+?d (tjº”÷÷ @  0= ý+?d htjJë Ž @  0> þ+?d ¨tjjp @  0? ÿ+?d ètj¾eç @  0@ ,?d (ujnXé @  0A ,?d hujž'v @  0B ,?d ¨uj¾Òˆ @  0C ,?d èuj½ˆSD @  0D ,?d (vj Ìó… @  0E ,?d hvjг ü @  0F ,?d ¨vjðF  @  0G ,?d èvj`÷~ @  0H ,?d (wj°¿‚– @  0I  ,?d hwj@Àxï @  0J  ,?d ¨wj`5z @  0K  ,?d èwjco8Ý @  0L  ,?d (xjW´À @  0M  ,?d hxj§ïN¹ @  0N ,?d ¨xj‡LG @  0O ,?d èxjßZ7 @  0P ,?d (yj™ß @  0Q ,?d hyjÿmc¦ @  0R ,?d ¨yjߘaX @  0S ,?d èyjÜÂ#” @  0T ,?d (zjA†ƒU @  0U ,?d hzj±ùy, @  0V ,?d ¨zj‘ {Ò @  0W ,?d èzj½~® @  0X ,?d ({jÑõòF @  0Y ,?d h{j!Š? @  0Z ,?d ¨{j Á @  0[ ,?d è{j%H  @  0\ ,?d (|jk» @  0] ,?d h|jëA{ @  0^ ,?d ¨|jËáC… @  0_ ,?d è|j™ @  0`  ,?d (}jÏXˆq @  0a !,?d h}j?'r @  0b ",?d ¨}jÒpö @  0c #,?d è}jˆ2: @  0d $,?d (~jÌ’û @  0e %,?d h~jq³h‚ @  0f &,?d ¨~jQFj| @  0g ',?d è~jÁ÷o @  0h (,?d (j¿ãè @  0i ),?d hjáÀ‘ @  0j *,?d ¨juЀj'Á5o @  0k +,?d èjû¨…v @  0l,,?d @€j•g @  0m-,?d €€jÇ ˆ[ @  0n.,?d À€jEœŸ… @  0o/,?d jO]à @  0p0,?d @jÍ”J @  0q1,?d €jŸ¥D @  0r2,?d Àj²š @  0s3,?d ‚j‘GI @  0t4,?d @‚jƒP— @  0u5,?d €‚jѿΠ@  0v6,?d À‚jSЍ @  0w7,?d ƒj‘â6Z @  0x8,?d @ƒjs!„ @  0y9,?d €ƒjAhÎÝ @  0z:,?d ÀƒjÃùÙ @  0{;,?d „j[| @  0|<,?d @„jÙíhÀ @  0}=,?d €„j‹ö‡™ @  0~>,?d À„j gG @  0?,?d …j2Noß @  0€@,?d @…j°ßx @  0A,?d €…jâÄ—X @  0‚B,?d À…j`U€† @  0ƒC,?d †j|ÚuU @  0„D,?d @†jþKb‹ @  0…E,?d €†j¬PÒ @  0†F,?d À†j.Áš  @  0‡G,?d ‡jì©F @  0ˆH,?d @‡jn8˜ @  0‰I,?d €‡j<#üÁ @  0ŠJ,?d À‡j¾²ë @  0‹K,?d ˆj †2 @  0ŒL,?d @ˆj‰%Î @  0M,?d €ˆjÛ Ê— @  0ŽN,?d ÀˆjYÝI @  0O,?d ‰jS @  0P,?d @‰jÑ•Ñ @  0‘Q,?d €‰jƒŽçˆ @  0’R,?d À‰jðV @  0“S,?d Šj… @  0”T,?d @ŠjŸ[ @  0•U,?d €ŠjÍý @  0–V,?d ÀŠjO‹êÜ @  0—W,?d ‹jãt– @  0˜X,?d @‹jrcH @  0™Y,?d €‹j]iŒ @  0šZ,?d À‹jßø›Ï @  0›[,?d ŒjG}=Ò @  0œ\,?d @ŒjÅì*  @  0],?d €Œj—÷ÅU @  0ž^,?d ÀŒjfÒ‹ @  0Ÿ_,?d j“N¡ @  0 `,?d @jß @  0¡a,?d €jCÄö& @  0¢b,?d ÀjÁUáø @  0£c,?d ŽjÝÚ+ @  0¤d,?d @Žj_Kõ @  0¥e,?d €Žj Pì¬ @  0¦f,?d ÀŽjÁûr @  0§g,?d jM©e8 @  0¨h,?d @jÏ8ræ @  0©i,?d €j#¿ @  0ªj,?d Àj²Ša @  0«k,?d j §cÁ @  0¬l,?d @j¢6t @  0­m,?d €jð-›F @  0®n,?d Àjr¼Œ˜ @  0¯o,?d ‘jx%NÞ @  0°p,?d @‘jú´Y @  0±q,?d €‘j¨¯¶Y @  0²r,?d À‘j*>¡‡ @  0³s,?d ’j6±TT @  0´t,?d @’j´ CŠ @  0µu,?d €’jæ;¬Ó @  0¶v,?d À’jdª»  @  0·w,?d “j¦Â%G @  0¸x,?d @“j$S2™ @  0¹y,?d €“jvHÝÀ @  0ºz,?d À“jôÙÊ @  0»{,?d ”jl\l @  0¼|,?d @”jîÍ{Ý @  0½},?d €”j¼Ö”„ @  0¾~,?d À”j>GƒZ @  0¿,?d •jûþa @  0À€,?d @•jyo¿ @  0Á,?d €•j+tàæ @  0‚,?d À•j©å÷8 @  0Ã,?d –jµjë @  0Ä„,?d @–j7û5 @  0Å…,?d €–jeàúl @  0Ɔ,?d À–jçqí² @  0LJ,?d —j%sø @  0Ȉ,?d @—j§ˆd& @  0ɉ,?d €—jõ“‹ @  0ÊŠ,?d À—jwœ¡ @  0Ë‹,?d ˜jÂ6E® @  0ÌŒ,?d @˜j@§Rp @  0Í,?d €˜j¼½) @  0ÎŽ,?d À˜j-ª÷ @  0Ï,?d ™jš´h± @  0Ð,?d @™j%o @  0Ñ‘,?d €™jJ>6 @  0Ò’,?d À™jȯ‡è @  0Ó“,?d šjÔ r; @  0Ô”,?d @šjV±eå @  0Õ•,?d €šjªŠ¼ @  0Ö–,?d Àšj†;b @  0×—,?d ›jDS( @  0ؘ,?d @›jÆÂö @  0Ù™,?d €›j”Ùû¯ @  0Úš,?d À›jHìq @  0Û›,?d œjŽÍJl @  0Üœ,?d @œj \]² @  0Ý,?d €œj^G²ë @  0Þž,?d ÀœjÜÖ¥5 @  0ߟ,?d jZþy @  0à ,?d @jØonÁ @  0á¡,?d €jŠt˜ @  0â¢,?d€ Àj|&Šà @  1£,?d žjè7 @  1¤,?d @žjy Ä @  1¥,?d €žj”+4p @  1¦,?d Àžjº#® @  1§,?d Ÿj`âž @  1¨,?d @Ÿj˜ñõ@ @  1©,?d €ŸjXEc @  1ª,uРj?d ÀŸj†ÉR½ @  1 «,?d  j³@"$ @  1 ¬,?d X j1Ñ5ú @  1 ­,?d ˜ j¦ƒ!N @  1 ®,?d Ø j$6 @  1 ¯,?d ¡jM˜•L @  1°,?d X¡jÏ ‚’ @  1±,?d ˜¡jþ Q @  1²,?d Ø¡j| @  1³,?d ¢j¥V± @  1´,?d X¢j'Ço @  1µ,?d ˜¢j°•Û @  1¶,?d Ø¢j2 @  1·,?d £j>ÞÀ5 @  1¸,?d X£j¼O×ë @  1¹,?d ˜£j ægÈ @  1º,?d Ø£j¢wp @  1»,?d ¤jÿ»-æ @  1¼,?d X¤j}*:8 @  1½,?d ˜¤jêx.Œ @  1¾,?d ؤjhé9R @  1¿,?d ¥jl„¶C @  1À,?d X¥jî¡ @  1Á,?d ˜¥jÎî @  1 Â,?d Ø¥jLŠ0 @  1!Ã,?d ¦j•L @  1"Ä,?d X¦jÝÐ @  1#Å,?d ˜¦j€d @  1$Æ,?d ئjº @  1%Ç,?d §jÄÄŠ @  1&È,?d X§jŒUÓT @  1'É,?d ˜§jücw @  1(Ê,?d اj’mt© @  1)Ë,?d ¨jâVK @  1*Ì,?d X¨j`A• @  1+Í,?d ˜¨j÷ÓU! @  1,Î,?d بjuBBÿ @  1-Ï,?d ©jÈá# @  1.Ð,?d X©jžYöý @  1/Ñ,?d ˜©j¯Qx> @  10Ò,?d Ø©j-Àoà @  11Ó,?d ªjôaÞ @  12Ô,?d Xªjv—v @  13Õ,?d ˜ªjáÅb´ @  14Ö,?d تjcTuj @  15×,?d «joŽ´Z @  16Ø,?d X«jí£„ @  17Ù,?d ˜«jq¶§ @  18Ú,?d Ø«jó'y @  19Û,?d ¬j®ëY‰ @  1:Ü,?d X¬j,zNW @  1;Ý,?d ˜¬j»(Zã @  1<Þ,?d جj9¹M= @  1=ß,?d ­jÍ„×= @  1>à,?d X­jOÀã @  1?á,?d ˜­jÁo @  1@â,?d Ø­jCxÜ @  1Aã,?d ®jXâ‘7 @  1Bä,?d X®jÚs†é @  1Cå,?d ˜®jM!’] @  1Dæ,?d Ø®jϰ…ƒ @  1Eç,?d ¯jÃjD³ @  1Fè,?d X¯jAûSm @  1Gé,?d ˜¯jÝRãN @  1Hê,?d دj_Ãô @  1Ië,?d °j¥ŸæÝ @  1Jì,?d X°j'ñ @  1Kí,?d ˜°j°\å· @  1Lî,?d ذj2Íòi @  1Mï,?d ±j[GQµ @  1Nð,?d X±jÙÖFk @  1Oñ,?d ˜±jèÞȨ @  1Pò,?d رjjOßv @  1Qó,?d ²j³‰ÑH @  1Rô,?d X²j1Æ– @  1Sõ,?d ˜²j¦JÒ" @  1Tö,?d زj$ÛÅü @  1U÷,?d ³j(Ì @  1Vø,?d X³jª @  1Wù,?d ˜³j69£1 @  1Xú,?d سj´¨´ï @  1Yû,?d ´jédé @  1Zü,?d X´jkõþÁ @  1[ý,?d ˜´jü§êu @  1\þ,?d Ø´j~6ý« @  1]ÿ,?d µjús$ @  1^-?d Xµjškdú @  1_-?d ˜µjºe͉ @  1`-?d صj8ôÚW @  1a-?d ¶já2Ôi @  1b-?d X¶jc£Ã· @  1c-?d ˜¶jôñ× @  1d-?d ضjv`ÀÝ @  1e-?d ·jzºí @  1f-?d X·jø+3 @  1g -?d ˜·jd‚¦ @  1h -?d Ø·jæ±Î @  1i -?d ¸j–n“, @  1j -?d X¸jÿ„ò @  1k -?d ˜¸jƒ­F @  1l-?d ظj<‡˜ @  1m-?d ¹jh¶$D @  1n-?d X¹jê'3š @  1o-?d ˜¹jÛ/½Y @  1p-?d عjY¾ª‡ @  1q-?d ºj€x¤¹ @  1r-?d Xºjé³g @  1s-?d ˜ºj•»§Ó @  1t-?d غj*°  @  1u-?d »jðq= @  1v-?d X»j™afã @  1w-?d ˜»jÈÖÀ @  1x-?d Ø»j‡YÁ @  1y-?d ¼jÚ•œî @  1z-?d X¼jX‹0 @  1{-?d ˜¼jÏVŸ„ @  1|-?d ؼjMLjZ @  1}-?d ½j¹úZ @  1~ -?d X½j;k„ @  1!-?d ˜½jV4šT @  1€"-?d ؽjÔ¥Š @  1#-?d ¾j cƒ´ @  1‚$-?d X¾jò”j @  1ƒ%-?d ˜¾j €Þ @  1„&-?d ؾjš1— @  1…'-?d ¿j–ëV0 @  1†(-?d X¿jzAî @  1‡)-?d ˜¿jˆÓñÍ @uÐÀj  1ˆ*-?d Ø¿jÈëÆ @  1‰+-?d 0Àj*0¾ @  1Š,-?d pÀjSÏ5` @  1‹ --?d °ÀjÄ!Ô @  1Œ .-?d ðÀjF 6  @  1 /-?d 0Áj/†•Ö @  1Ž 0-?d pÁj­‚ @  1 1-?d °Ájœ Ë @  1 2-?d ðÁjŽ @  1‘ 3-?d 0ÂjÇH+ @  1’ 4-?d pÂjEÙõ @  1“ 5-?d °ÂjÒ‹A @  1” 6-?d ðÂjPŸ @  1• 7-?d 0Ãj\ÀÀ¯ @  1– 8-?d pÃjÞQ×q @  1— 9-?d °Ãj¹–\R @  1˜:-?d ðÃj;KŒ @  1™;-?d 0ÄjfË| @  1š<-?d pÄjäZ¢ @  1›=-?d °Äjs @  1œ>-?d ðÄjñ™È @  1?-?d 0ÅjõôÙ @  1ž@-?d pÅjweš @  1ŸA-?d °ÅjWk3t @  1 B-?d ðÅjÕú$ª @  1¡C-?d 0Æj <*” @  1¢D-?d pÆjŽ­=J @  1£E-?d °Æjÿ)þ @  1¤F-?d ðÆj›n>  @  1¥G-?d 0Çj—´ÿ @  1¦H-?d pÇj%èÎ @  1§I-?d °Çj‰ŒXí @  1¨J-?d ðÇj O3 @  1©K-?d 0Èj{`mÑ @  1ªL-?d pÈjùñz @  1«M-?d °Èjn£n» @  1¬N-?d ðÈjì2ye @  1­O-?d 0Éj…¸Ú¹ @  1®P-?d pÉj)Íg @  1¯Q-?d °Éj6!C¤ @  1°R-?d ðÉj´°Tz @  1±S-?d 0ÊjmvZD @  1²T-?d pÊjïçMš @  1³U-?d °ÊjxµY. @  1´V-?d ðÊjú$Nð @  1µW-?d 0ËjöþÀ @  1¶X-?d pËjto˜ @  1·Y-?d °ËjèÆ(= @  1¸Z-?d ðËjjW?ã @  1¹[-?d 0Ìj7›b @  1º\-?d pÌjµ uÍ @  1»]-?d °Ìj"Xay @  1¼^-?d ðÌj Év§ @  1½_-?d 0ÍjTôì§ @  1¾`-?d pÍjÖeûy @  1¿a-?d °ÍjXlT˜ @  1Àb-?d ðÍjÚýCF @  1Ác-?d 0Îj;Mx @  1Âd-?d pÎjªZ¦ @  1Ãe-?d °ÎjøN @  1Äf-?d ðÎj”iYÌ @  1Åg-?d 0Ïj˜³˜ü @  1Æh-?d pÏj"" @  1Çi-?d °Ïj†‹? @  1Èj-?d ðÏj(ß @  1Ék-?d 0ÐjþF:’ @  1Êl-?d pÐj|×-L @  1Ëm-?d °Ðjë…9ø @  1Ìn-?d ðÐji.& @  1Ío-?d 0Ñjžú @  1Îp-?d pÑj‚š$ @  1Ïq-?d °Ñj³ç @  1Ðr-?d ðÑj1–9 @  1Ñs-?d 0ÒjèP  @  1Òt-?d pÒjjÁÙ @  1Óu-?d °Òjý“m @  1Ôv-?d ðÒj³ @  1Õw-?d 0ÓjsØØƒ @  1Öx-?d pÓjñIÏ] @  1×y-?d °Ójmà~ @  1Øz-?d ðÓjïqh  @  1Ù{-?d 0Ôj²½5P @  1Ú|-?d pÔj0,"Ž @  1Û}-?d °Ôj§~6: @  1Ü~-?d ðÔj%ï!ä @  1Ý-?d 0Õj @  2”-?d pÚjÃ~à @  2•-?d °Új‘‘¹ @  2–-?d ðÚj’†g @  2—-?d 0Ûj¨[o @  2˜-?d pÛjš9L± @  2™-?d °ÛjÈ"£è @  2š-?d ðÛjJ³´6 @  2›-?d 0ÜjÙͶ¼ @  2œ-?d pÜj[\¡b @  2-?d °Üj GN; @  2ž-?d ðÜj‹ÖYå @  2Ÿ-?d 0Ýjº¢8 @  2 -?d pÝj83/Ö @  2¡-?d °Ýjj(À @  2¢-?d ðÝjè¹×Q @  2£-?d 0ÞjCjŸE @  2 ¤-?d pÞjÁûˆ› @  2!¥-?d °Þj“àg @  2"¦-?d ðÞjqp @  2#§-?d 0ßjØâJÁ @  2$¨-?d pßjZs] @  2%©-?d uÐàj/°ßjh²F @  2&ª-?d ðßjŠù¥˜ @  2'«-?d Hàjm ë @  2(¬-?d ˆàj9˜ @  2)­-?d ÈàjÉçòl @  2*®-?d áj¯~„ @  2+¯-?d Hájçµ½ƒ @  2,°-?d ˆájÇ@¿} @  2-±-?d Èáj7?E @  2.²-?d âjª{åÅ @  2/³-?d Hâj{=~ @  20´-?d ˆâj/Ž?€ @  21µ-?d ÈâjßñÅù @  22¶-?d ãj¹I @  23·-?d Hãj”óèú @  24¸-?d ˆãj´ê @  25¹-?d ÈãjDy} @  26º-?d äj]7ãr @  27»-?d HäjU–) @  28¼-?d ˆäjuc× @  29½-?d Èäj…ý® @  2:¾-?d åjUTqF @  2;¿-?d HåjÆ©žŒ @  2<À-?d ˆåjæ\œr @  2=Á-?d Èåj#f  @  2>Â-?d æj‹gÆÊ @  2?Ã-?d Hæj‘f?S @  2@Ä-?d ˆæj±“=­ @  2AÅ-?d ÈæjAìÇÔ @  2BÆ-?d çj‘¤K< @  2CÇ-?d Hçj îê× @  2DÈ-?d ˆçj*è) @  2EÉ-?d ÈçjÚdP @  2FÊ-?d èjM @  2GË-?d Hèjæ:x @  2HÌ-?d ˆèjÆÏzè @  2IÍ-?d Èèj6°€‘ @  2JÎ-?d éjæø y @  2KÏ-?d HéjâÏ~ @  2LÐ-?d ˆéj8Í€ @  2MÑ-?d ÈéjÈh7ù @  2NÒ-?d êjU,—8 @  2OÓ-?d Hêjð,Oƒ @  2PÔ-?d ˆêjÐÙM} @  2QÕ-?d Èêj ¦· @  2RÖ-?d ëjðî;ì @  2S×-?d Hëjk¤š @  2TØ-?d ˆëjKQ˜ù @  2UÙ-?d Èëj».b€ @  2VÚ-?d ìj¢`‘ @  2WÛ-?d HìjªÁwÔ @  2XÜ-?d ˆìjŠ4u* @  2YÝ-?d ÈìjzKS @  2ZÞ-?d íjª» @  2[ß-?d HíjÉ®ù` @  2\à-?d ˆíjé[ûž @  2]á-?d Èíj$ç @  2^â-?d îj„`¡& @  2_ã-?d Hîj0f^- @  2`ä-?d ˆîj“\Ó @  2aå-?d Èîjà즪 @  2bæ-?d ïj0¤*B @  2cç-?d Hïj«î‹© @  2dè-?d ˆïj‹‰W @  2eé-?d Èïj{ds. @  2fê-?d ðjźϜ @  2gë-?d HðjÍ)Ç @  2hì-?d ˆðjíî+9 @  2ií-?d Èðj‘Ñ@ @  2jî-?d ñjÍÙ]¨ @  2kï-?d Hñj3Þ¯ @  2lð-?d ˆñj6œQ @  2mñ-?d ÈñjãIf( @  2nò-?d òj~ Æé @  2oó-?d HòjÛ R @  2pô-?d ˆòjûø¬ @  2qõ-?d Èòj ‡æÕ @  2rö-?d ójÛÏj= @  2s÷-?d Hój@…ËÖ @  2tø-?d ˆój`pÉ( @  2uù-?d Èój3Q @  2vú-?d ôj‰AÀ^ @  2wû-?d Hôjà& @  2xü-?d ˆôj¡$û @  2yý-?d ÈôjQjÞ‚ @  2zþ-?d õj"Rj @  2{ÿ-?d HõjÂ\‰ @  2|.?d ˆõjâ©‹å @  2}.?d ÈõjÖqœ @  2~.?d öj’Ñ] @  2.?d HöjvÅõ @  2€.?d ˆöjV0  @  2.?d Èöj¦Oàr @  2‚.?d ÷jvlš @  2ƒ.?d H÷jíMÍq @  2„.?d ˆ÷j͸Ï @  2… .?d È÷j=Ç5ö @  2† .?d øj 8¹ë @  2‡ .?d Høj™_° @  2ˆ .?d ˆøj!l]N @  2‰ .?d Èøjѧ7 @  2Š.?d ùj[+ß @  2‹.?d HùjÿAèØ @  2Œ.?d ˆùjß´ê& @  2.?d Èùj/Ë_ @  2Ž.?d új²°ž @  2.?d Hújh% @  2.?d ˆúj7zjÛ @  2‘.?d ÈújÇ¢ @  2’.?d ûjMJ @  2“.?d HûjŒ½¡ @  2”.?d ˆûj¬ò¿_ @  2•.?d Èûj\E& @  2–.?d üjEö) @  2—.?d HüjMbPr @  2˜.?d ˆüjm—RŒ @  2™.?d Èüjè¨õ @  2š.?d ýjM $ @  2›.?d Hýj. ÞÆ @  2œ .?d ˆýjøÜ8 @  2!.?d Èýjþ‡&A @  2ž".?d þjcÆ€ @  2Ÿ#.?d Hþj×Åy‹ @  2 $.?d ˆþj÷0{u @  2¡%.?d ÈþjO  @  2¢&.?d ÿj× ä @  2£'.?d HÿjLM¬ @  2¤(.?d ˆÿjl¸®ñ @  2¥uÐk).?d ÈÿjœÇTˆ @  2¦*.?d kÓs|y @  2§+.?d `kÛÒš" @  2¨,.?d  kû'˜Ü @  2©-.?d àk Xb¥ @  2ª..?d kÛîM @  2«/.?d `k% -J @  2¬0.?d  kÿ/´ @  2­1.?d àkõ€ÕÍ @  2®2.?d khÄu  @  2¯3.?d `kÍÄ­· @  2°4.?d  kí1¯I @  2±5.?d àkNU0 @  2²6.?d kÍÙØ @  2³7.?d `kVLx3 @  2´8.?d  kv¹zÍ @  2µ9.?d àk†Æ€´ @  2¶:.?d kŸˆs» @  2·;.?d `k—)•à @  2¸<.?d  k·Ü— @  2¹=.?d àkG£mg @  2º>.?d k—ëá @  2»?.?d `kE @  2¼@.?d  k$ã » @  2½A.?d àkÔœö @  2¾B.?d kIØV @  2¿C.?d `kSÙ¯š @  2ÀD.?d  ks,­d @  2ÁE.?d àkƒSW @  2ÂF.?d kSÛõ @  2ÃG.?d `kÈQz @  2ÄH.?d  kè¤xà @  2ÅI.?d àkÛ‚™ @  2ÆJ.?d k,$„ @  2ÇK.?d `k$…èß @  2ÈL.?d  kpê! @  2ÉM.?d àkôX @  2ÊN.?d k$Gœ° @  2ËO.?d ` kÚ]_· @  2ÌP.?d   kú¨]I @  2ÍQ.?d à k ×§0 @  2ÎR.?d k—“ñ @  2ÏS.?d ` k2“ßJ @  2ÐT.?d   kfÝ´ @  2ÑU.?d à kâ'Í @  2ÒV.?d k2Q«% @  2ÓW.?d ` k© Î @  2ÔX.?d   k‰î0 @  2ÕY.?d à ky‘òI @  2ÖZ.?d k`ßF @  2×[.?d ` kh~ç @  2Ø\.?d   kH‹åã @  2Ù].?d à k¸ôš @  2Ú^.?d kh¼“r @  2Û_.?d ` k i© @  2Ü`.?d   k+äkW @  2Ýa.?d à kÛ›‘. @  2Þb.?d kFß1ï @  2ßc.?d `kòÙÎä @  2àd.?d  kÒ,Ì @  2áe.?d àk"S6c @  2âf.?d€ k†Ø¦- @  3g.?d `küÓOï @  3h.?d  kÜ&M @  3i.?d àkéL… @  3j.?d kWÎð7 @  3k.?d `k‘ÝI @  3l.?d  k±(Kè @  3m.?d àkåîë @  3n.?d k_­b @  3 o.?d `kdþZé @  3 p.?d  kD X @  3 q.?d àkq=Yƒ @  3 r.?d kìyùB @  3 s.?d `k*j@c @  3t.?d  k ŸB @  3u.?d àk™óÙ~ @  3v.?d kI»U– @  3w.?d `k¸ @  3x.?d  k7M n @  3y.?d àk{ ú @  3z.?d k5ÿõ @  3{.?d `kÝ&FÔ @  3|.?d  kýÓD* @  3}.?d àkÃá) @  3~.?d kVmÁ @  3.?d `kX$-t @  3€.?d  kxÑ/Š @  3.?d àkMç. @  3‚.?d kУŽß @  3ƒ.?d `k°7þ @  3„.?d  k6E5 @  3….?d àk´/‰S @  3 †.?d kdg» @  3!‡.?d `k:d_½ @  3"ˆ.?d  k‘]C @  3#‰.?d àk/§\× @  3$Š.?d kXÐÊ @  3%‹.?d `kÝKië @  3&Œ.?d  ký¾k @  3'.?d àkÃsÎ @  3(Ž.?d k;Bþ @  3).?d `k(hz @  3*.?d  kxê @  3+‘.?d àk=«y~ @  3,’.?d k ïÙ¿ @  3-“.?d `kfü`ž @  3.”.?d  kF b` @  3/•.?d àkÕeùƒ @  30–.?d k-uk @  31—.?d `k[./m @  32˜.?d  k{Û-“ @  33™.?d àkNí, @  34š.?d kW£ß @  35›.?d `k‘°f) @  36œ.?d  k±Ed× @  37.?d àkˆÁÔ @  38ž.?d k_ÀM< @  39Ÿ.?d `kù$L  @  3: .?d  kÙÑNô @  3;¡.?d àkìçO` @  3<¢.?d kq£ï¡ @  3=£.?d `k·°V€ @  3>¤.?d  k—ET~ @  3?¥.?d àk»(î¿ @  3@¦.?d kk`bW @  3A§.?d `k5c8Q @  3B¨.?d  k–:¯uÐ k @  3C©.?d àk  ;; @  3Dª.?d 8 kQ«å] @  3E«.?d x k—¸\| @  3F¬.?d ¸ k·M^‚ @  3G­.?d ø k‰€û @  3H®.?d 8!kYÈwi @  3I¯.?d x!kb›Oƒ @  3J°.?d ¸!kBnM} @  3K±.?d ø!kwXLé @  3L².?d 8"kêì( @  3M³.?d x"k,U  @  3N´.?d ¸"k úW÷ @  3Oµ.?d ø"kŸ–Ì @  3P¶.?d 8#kOÞ@ü @  3Q·.?d x#kÝú @  3R¸.?d ¸#k1( @  3S¹.?d ø#k @  3Tº.?d 8$kPêŸ @  3U».?d x$kÛCS¾ @  3V¼.?d ¸$kû¶Q@ @  3W½.?d ø$kÅ{ôC @  3X¾.?d 8%k3x« @  3Y¿.?d x%kC‡lŒ @  3ZÀ.?d ¸%kcrnr @  3[Á.?d ø%kVDoæ @  3\Â.?d 8&kËÏ' @  3]Ã.?d x&k v @  3^Ä.?d ¸&k-ætø @  3_Å.?d ø&k¯ŒÈ« @  3`Æ.?d 8'kÄDC @  3aÇ.?d x'k!ÇE @  3bÈ.?d ¸'k2» @  3cÉ.?d ø'k4/ @  3dÊ.?d 8(kû‘2 @  3eË.?d x(kÆè( @  3fÌ.?d ¸(kæ*í @  3gÍ.?d ø(kØÐî @  3hÎ.?d 8)k˜ @  3iÏ.?d x)k3Ë;ì @  3jÐ.?d ¸)k>9 @  3kÑ.?d ø)k&8† @  3lÒ.?d 8*k»L˜G @  3mÓ.?d x*k}_!f @  3nÔ.?d ¸*k]ª#˜ @  3oÕ.?d ø*kÎÆ¸{ @  3pÖ.?d 8+kŽ4“ @  3q×.?d x+k@n• @  3rØ.?d ¸+k`xlk @  3sÙ.?d ø+kUNmÿ @  3tÚ.?d 8,kLžð @  3uÛ.?d x,kŠ'Ñ @  3vÜ.?d ¸,kªæ%/ @  3wÝ.?d ø,k”+€, @  3xÞ.?d 8-kDc Ä @  3yß.?d x-k⇠ò @  3zà.?d ¸-kÂr  @  3{á.?d ø-k÷D˜ @  3|â.?d 8.kj®Y @  3}ã.?d x.k¬x @  3~ä.?d ¸.kŒæ† @  3å.?d ø.kCÝŸv @  3€æ.?d 8/k“•ž @  3ç.?d x/kÍ–I˜ @  3‚è.?d ¸/kícKf @  3ƒé.?d ø/kØUJò @  3„ê.?d 80kf‹ö@ @  3…ë.?d x0k ˜Oa @  3†ì.?d ¸0k€mMŸ @  3‡í.?d ø0k¾ èœ @  3ˆî.?d 81knèdt @  3‰ï.?d x1kU»\ž @  3Šð.?d ¸1kuN^` @  3‹ñ.?d ø1k@x_ô @  3Œò.?d 82kÝ<ÿ5 @  3ó.?d x2k/F @  3Žô.?d ¸2k;ÚDê @  3õ.?d ø2k¨¶ß  @  3ö.?d 83kxþSá @  3‘÷.?d x3k&ý ç @  3’ø.?d ¸3k  @  3“ù.?d ø3k3>  @  3”ú.?d 84k*pù‚ @  3•û.?d x4kìc@£ @  3–ü.?d ¸4kÌ–B] @  3—ý.?d ø4kò[ç^ @  3˜þ.?d 85k"k¶ @  3™ÿ.?d x5k~ @  3š/?d ¸5k6ó|ñ @  3›/?d ø5kÅ}e @  3œ/?d 86kžÝ¤ @  3/?d x6kX’d… @  3ž/?d ¸6kxgf{ @  3Ÿ/?d ø6kú Ú( @  3 /?d 87k*EVÀ @  3¡/?d x7ktF Æ @  3¢/?d ¸7kT³8 @  3£ /?d ø7ka…¬ @  3¤ /?d 88kUzƒ± @  3¥ /?d x8k“i: @  3¦ /?d ¸8k³œ8n @  3§ /?d ø8kQm @  3¨/?d 89k]… @  3©/?d x9kfJ)o @  3ª/?d ¸9kF¿+‘ @  3«/?d ø9ks‰* @  3¬/?d 8:kîÍŠÄ @  3­/?d x:k(Þ3å @  3®/?d ¸:k+1 @  3¯/?d ø:k›Gªø @  3°/?d 8;kK& @  3±/?d x;k | @  3²/?d ¸;k5ù~è @  3³/?d ø;kÏ| @  3´/?d 8k?¼Ú @  3½#/?d x>kù’û @  3¾$/?d ¸>kÙg @  3¿%/?d ø>kõ ½Ä @  3À&/?d 8?k%B1, @  3Á'/?d x?k{Ak* @  3Â(/?duÐ@k7 ¸?k[´iÔ @  3Ã)/?d ø?kn‚h@ @  3Ä*/?d P@k­.Ò| @  3Å+/?d @kÉY~} @  3Æ,/?d Ð@kKÈi£ @  3Ç-/?d Ak'ÜW– @  3È./?d PAk¥M@H @  3É//?d Ak/?d PEké¶OŠ @  3Ù?/?d EkfN @  3Ú@/?d ÐEkŸ÷YS @  3ÛA/?d FkµïØ @  3ÜB/?d PFk7…ø @  3ÝC/?d FkSòT @  3ÞD/?d ÐFkÑcCÙ @  3ßE/?d GkÐd¼ @  3àF/?d PGkƒAsb @  3áG/?d Gk&£@7 @  4Y/?d LkU^Ÿ @  4Z/?d PLk×’IA @  4[/?d Lkv¬­ @  4\/?d ÐLkô= s @  4]/?d MkV›h< @  4^/?d PMkÔ â @  4_/?d Mk84Ž @  4`/?d ÐMkœ©#P @  4a/?d Nksn6 @  4b/?d PNkñ’yè @  4c/?d NkP¬. @  4d/?d ÐNkÒ=9Ú @  4e/?d Okp›X• @  4f/?d POkò OK @  4g/?d Ok|xFG @  4 h/?d ÐOkþéQ™ @  4!i/?d Pk2ÙŒ @  4"j/?d PPk°HR @  4#k/?d Pkv@¾ @  4$l/?d ÐPk“çW` @  4%m/?d Qk1A6/ @  4&n/?d PQk³Ð!ñ @  4'o/?d QkäUSA @  4(p/?d ÐQkfÄDŸ @  4)q/?d Rk‰n ù @  4*r/?d PRk ÿ' @  4+s/?d RkªÁIË @  4,t/?d ÐRk(P^ @  4-u/?d SkŠö?Z @  4.v/?d PSkg(„ @  4/w/?d Sk—8 @  40x/?d ÐSk‚æ @  41y/?d Tk~"N @  42z/?d PTkü³ @  43{/?d Tk]O| @  44|/?d ÐTkßX¢ @  45}/?d Uk}º9í @  46~/?d PUkÿ+.3 @  47/?d UkØ$Ü @  48€/?d ÐUkZ3 @  49/?d Vkµ´~d @  4:‚/?d PVk7%iº @  4;ƒ/?d Vk–>V @  4<„/?d ÐVkŠ)ˆ @  4=…/?d Wk¶,HÇ @  4>†/?d PWk4½_ @  4?‡/?d WkÈP‡ @  4@ˆ/?d ÐWk–YGY @  4A‰/?d XkÐH&ã @  4BŠ/?d PXkRÙ1= @  4C‹/?d XkóçfÑ @  4DŒ/?d ÐXkqvq @  4E/?d YkÓÐ@ @  4FŽ/?d PYkQAž @  4G/?d YkÄu. @  4H/?d ÐYk„Ubð @  4I‘/?d Zkkÿ/– @  4J’/?d PZkén8H @  4K“/?d ZkHPo¤ @  4L”/?d ÐZkÊÁxz @  4M•/?d [khg5 @  4N–/?d P[kêöë @  4O—/?d [ku‚ W @  4P˜/?d Ð[k÷7‰ @  4Q™/?d \kœ³)! @  4Rš/?d P\k">ÿ @  4S›/?d \k¿i @  4Tœ/?d Ð\k=~Í @  4U/?d ]kŸ+‚ @  4Vž/?d P]kº\ @  4WŸ/?d ]k׈C0 @  4X /?d Ð]kUTî @  4Y¡/?d ^kº³ˆ @  4Z¢/?d P^k8"V @  4[£/?d ^k™Yº @  4\¤/?d Ð^kNd @  4]¥/?d _k¹+/+ @  4^¦/?d P_k;º8õ @  4_§/?d _kµÈ1ù @  4uÐ`k`¨/?d Ð_k7Y&' @  4a©/?d (`kûO~ @  4bª/?d h`kyÞiÆ @  4c«/?d ¨`k¥`MV @  4d€¬/?d è`k'ñZˆ @  4e€­/?d (ak…W;Ç @  4f€®/?d hakÆ, @  4g€¯/?d ¨akPC^© @  4h€°/?d èakÒÒIw @  4i€±/?d (bk=x @  4j€²/?d hbk¿éÏ @  4k€³/?d ¨bk×D# @  4l€´/?d èbkœFSý @  4m€µ/?d (ck>à2² @  4n€¶/?d hck¼q%l @  4o€·/?d ¨ck# Ð @  4p€¸/?d èck¡” @  4q€¹/?d (dkÊ4¦ @  4r€º/?d hdkH¥x @  4s€»/?d ¨dké›B” @  4t€¼/?d èdkk UJ @  4u€½/?d (ekɬ4 @  4v€¾/?d hekK=#Û @  4w€¿/?d ¨ekq_}¦ @  4x€À/?d èekóÎjx @  4y€Á/?d (fkd' @  4z€Â/?d hfkžõ0À @  4{€Ã/?d ¨fk?Ëg, @  4|€Ä/?d èfk½Zpò @  4}€Å/?d (gkü½ @  4~€Æ/?d hgkmc @  4€Ç/?d ¨gk^N9Ì @  4€€È/?d ègkÜß. @  4€É/?d (hkšÎO¨ @  4‚€Ê/?d hhk_Xv @  4ƒ€Ë/?d ¨hk¹aš @  4„€Ì/?d èhk;ðD @  4…€Í/?d (ik™Vy  @  4†€Î/?d hikÇnÕ @  4‡€Ï/?d ¨ikLBe @  4ˆ€Ð/?d èikÎÓ » @  4‰€Ñ/?d (jk!yFÝ @  4Š€Ò/?d hjk£èQ @  4‹€Ó/?d ¨jkÖï @  4Œ€Ô/?d èjk€G1 @  4€Õ/?d (kk"áp~ @  4Ž€Ö/?d hkk pg  @  4€×/?d ¨kk?I @  4€Ø/?d èkk½•^ @  4‘€Ù/?d (lkÖ5@j @  4’€Ú/?d hlkT¤W´ @  4“€Û/?d ¨lkõšX @  4”€Ü/?d èlkw † @  4•€Ý/?d (mkÕ­vÉ @  4–€Þ/?d hmkW @  4¬€ô/?d èrk«f@à @  4­€õ/?d (sk À!¯ @  4®€ö/?d hsk‹Q6q @  4¯€÷/?d ¨sk%Í @  4°€ø/?d èsk–´ @  4±€ù/?d (tký» @  4²€ú/?d htk…e @  4³€û/?d ¨tkÞ»Q‰ @  4´€ü/?d ètk\*FW @  4µ€ý/?d (ukþŒ' @  4¶€þ/?d huk|0Æ @  4·€ÿ/?d ¨ukÝ[I• @  4¸€0?d èuk_Ê^K @  4¹€0?d (vk°`- @  4º€0?d hvk2ñó @  4»€0?d ¨vk“ÏS @  4¼€0?d èvk^DÁ @  4½€0?d (wk³ø%Ž @  4¾€0?d hwk1i2P @  4¿€0?d ¨wk=Î @  4À€0?d èwk“* @  4Á€ 0?d (xkÕœKª @  4€ 0?d hxkW \t @  4À 0?d ¨xkö3 ˜ @  4Ä€ 0?d èxkt¢F @  4Å€ 0?d (ykÖ}  @  4Æ€0?d hykT•j× @  4Ç€0?d ¨ykg @  4È€0?d èyk¹ @  4É€0?d (zkn+Bß @  4Ê€0?d hzkìºU @  4Ë€0?d ¨zkM„í @  4Ì€0?d èzkÏ3 @  4Í€0?d ({km³t| @  4΀0?d h{kï"c¢ @  4Ï€0?d ¨{kpVM @  4Ѐ0?d è{kòÇZÀ @  4Ñ€0?d (|k™gDh @  4Ò€0?d h|köS¶ @  4Ó€0?d ¨|kºÈZ @  4Ô€0?d è|k8Y„ @  4Õ€0?d (}kšÿrË @  4Ö€0?d h}kne @  4×€0?d ¨}kÒ\.y @  4Ø€ 0?d è}kPÍ9§ @  4Ù€!0?d (~k¿gtÁ @  4Ú€"0?d h~k=öc @  4Û€#0?d ¨~kœÈ4ó @  4Ü€$0?d è~kY#- @  4Ý€%0?d (k¼ÿBb @  4Þ€&0?d hk>nU¼ @  4߀'0?d ¨kuЀk'°\° @  4à€(0?d èk2Kn @  4á€)0?d @€k.ÝD½ @  4â€*0?d€ €€kzëZå @  5€+0?d À€k˜ðP @  5€,0?d kH¸Üè @  5€-0?d @k}ŽÝ| @  5€.0?d €k]{ß‚ @  5€/0?d Àkf(çh @  5€00?d ‚kûlG© @  5€10?d @‚kš⪠@  5€20?d €‚kåTàT @  5 €30?d À‚k#GYu @  5 €40?d ƒkóÕ @  5 €50?d @ƒkÆ9Ô  @  5 €60?d €ƒkæÌÖ÷ @  5 €70?d Àƒk¸ÏŒñ @  5€80?d „k¡þ @  5€90?d @„k2íä @  5€:0?d €„kæã @  5€;0?d À„kÔ _ @  5€<0?d …kCÓ* @  5€=0?d @…k1uÒ¾ @  5€>0?d €…k€Ð@ @  5€?0?d À…kG4Äg @  5€@0?d †kÚpd¦ @  5€A0?d @†kä½Á¥ @  5€B0?d €†kÄHÃ[ @  5€C0?d À†k[zz @  5€D0?d ‡kÒö’ @  5€E0?d @‡kç%÷ @  5€F0?d €‡kÇÐõø @  5€G0?d À‡k™Ó¯þ @  5€H0?d ˆk­,#ã @  5€I0?d @ˆk/FŸ° @  5 €J0?d €ˆk³N @  5!€K0?d ÀˆkÉ $o @  5"€L0?d ‰k訇 @  5#€M0?d @‰k,Þ© @  5$€N0?d €‰k +«í @  5%€O0?d À‰k7x“ @  5&€P0?d Škª<3Æ @  5'€Q0?d @Šk”ñ–Å @  5(€R0?d €Šk´”; @  5)€S0?d ÀŠkr- @  5*€T0?d ‹k¢_¡ò @  5+€U0?d @‹k—i f @  5,€V0?d €‹k·œ¢˜ @  5-€W0?d À‹kéŸøž @  5.€X0?d ŒkðÑ ‘ @  5/€Y0?d @Œkc½r @  50€Z0?d €ŒkCH’Œ @  51€[0?d ÀŒk…[+­ @  52€\0?d kU§E @  53€]0?d @k`%¦Ñ @  54€^0?d €k@Ф/ @  55€_0?d Àkæ4¥ @  56€`0?d Žk{pØ @  57€a0?d @ŽkE½ Û @  58€b0?d €ŽkeH¢% @  59€c0?d ÀŽk£[ @  5:€d0?d ks—ì @  5;€e0?d @kF%–x @  5<€f0?d €kfД† @  5=€g0?d Àk8Ó΀ @  5>€h0?d k† r2 @  5?€i0?d @kª`Èó @  5@€j0?d €kŠ•Ê  @  5A€k0?d ÀkL†s, @  5B€l0?d ‘kœÎÿÄ @  5C€m0?d @‘k©øþP @  5D€n0?d €‘k‰ ü® @  5E€o0?d À‘k²^ÄD @  5F€p0?d ’k/d… @  5G€q0?d @’k×Á† @  5H€r0?d €’k1"Ãx @  5I€s0?d À’k÷1zY @  5J€t0?d “k'yö± @  5K€u0?d @“kO÷% @  5L€v0?d €“k2ºõÛ @  5M€w0?d À“kl¹¯Ý @  5N€x0?d ”ku÷\Ò @  5O€y0?d @”kæ›Ç1 @  5P€z0?d €”kÆnÅÏ @  5Q€{0?d À”k}|î @  5R€|0?d •kÐ5ð @  5S€}0?d @•kåñ’ @  5T€~0?d €•kÅöól @  5U€0?d À•kŽ„³Ù @  5V€€0?d –kÀ @  5W€0?d @–k- ¶ @  5X€‚0?d €–k ø´å @  5Y€ƒ0?d À–kËë Ä @  5Z€„0?d —k£, @  5[€…0?d @—k.•€¸ @  5\€†0?d €—k`‚F @  5]€‡0?d À—kPcØ@ @  5^€ˆ0?d ˜kdœT] @  5_€‰0?d @˜kæöè @  5`€Š0?d €˜kÆêð @  5a€‹0?d À˜kSÑ @  5b€Œ0?d ™kÐXß9 @  5c€0?d @™kånÞ­ @  5d€Ž0?d €™kÅ›ÜS @  5e€0?d À™kþÈä¹ @  5f€0?d škcŒDx @  5g€‘0?d @šk]Aá{ @  5h€’0?d €šk}´ã… @  5i€“0?d Àšk»§Z¤ @  5j€”0?d ›kkïÖL @  5k€•0?d @›k^Ùר @  5l€–0?d €›k~,Õ& @  5m€—0?d À›k /  @  5n€˜0?d œk9a|/ @  5o€™0?d @œkª çÌ @  5p€š0?d €œkŠøå2 @  5q€›0?d ÀœkLë\ @  5r€œ0?d kœ£Ðû @  5s€0?d @k©•Ño @  5t€ž0?d €k‰`Ó‘ @  5u€Ÿ0?d Àk/„Ò§ @  5v€ 0?d žk²Àrf @  5w€¡0?d @žkŒ ×e @  5x€¢0?d €žk¬øÕ› @  5y€£0?d Àžkjëlº @  5z€¤0?d Ÿkº£àR @  5{€¥0?d @Ÿk•áÆ @  5|€¦0?d €Ÿk¯`ã8 @  5}€§0uРk?d ÀŸkñc¹> @  5~€¨0?d  k€hgX @  5€©0?d X kOSí¨ @  5€€ª0?d ˜ ko¦ïV @  5€«0?d Ø k©µVw @  5‚€¬0?d ¡kyýÚŸ @  5ƒ€­0?d X¡kLËÛ  @  5„€®0?d ˜¡kl>Ùõ @  5…€¯0?d Ø¡kWmá @  5†€°0?d ¢kÊ)AÞ @  5‡€±0?d X¢kôääÝ @  5ˆ€²0?d ˜¢kÔæ# @  5‰€³0?d Ø¢k_ @  5Š€´0?d £kÂJÓê @  5‹€µ0?d X£k÷|Ò~ @  5Œ€¶0?d ˜£k׉Ѐ @  5€·0?d Ø£k‰ŠŠ† @  5Ž€¸0?d ¤kÄy‰ @  5€¹0?d X¤k¨âj @  5€º0?d ˜¤k#]à” @  5‘€»0?d ؤkåNYµ @  5’€¼0?d ¥k5Õ] @  5“€½0?d X¥k0ÔÉ @  5”€¾0?d ˜¥k ÅÖ7 @  5•€¿0?d Ø¥kvq @  5–€À0?d ¦kë5bÑ @  5—€Á0?d X¦kÕøÇÒ @  5˜€Â0?d ˜¦kõ Å, @  5™€Ã0?d ئk3|  @  5š€Ä0?d §kãVðå @  5›€Å0?d X§kÖ`ñq @  5œ€Æ0?d ˜§kö•ó @  5€Ç0?d اk¨–©‰ @  5ž€È0?d ¨kœi%” @  5Ÿ€É0?d X¨k™Ç @  5 €Ê0?d ˜¨k>ö›9 @  5¡€Ë0?d بkøå" @  5¢€Ì0?d ©k(­®ð @  5£€Í0?d X©k›¯d @  5¤€Î0?d ˜©k=n­š @  5¥€Ï0?d Ø©k=•p @  5¦€Ð0?d ªk›y5± @  5§€Ñ0?d Xªk¥´² @  5¨€Ò0?d ˜ªk…A’L @  5©€Ó0?d تkCR+m @  5ª€Ô0?d «k“§… @  5«€Õ0?d X«k¦,¦ @  5¬€Ö0?d ˜«k†Ù¤ï @  5­€×0?d Ø«kØÚþé @  5®€Ø0?d ¬kÁ” æ @  5¯€Ù0?d X¬kRø– @  5°€Ú0?d ˜¬kr ”û @  5±€Û0?d جk´-Ú @  5²€Ü0?d ­kdV¡2 @  5³€Ý0?d X­kQ` ¦ @  5´€Þ0?d ˜­kq•¢X @  5µ€ß0?d Ø­k×q£n @  5¶€à0?d ®kJ5¯ @  5·€á0?d X®ktø¦¬ @  5¸€â0?d ˜®kT ¤R @  5¹€ã0?d Ø®k’s @  5º€ä0?d ¯kBV‘› @  5»€å0?d X¯kw` @  5¼€æ0?d ˜¯kW•’ñ @  5½€ç0?d دk –È÷ @  5¾€è0?d °k·HtE @  5¿€é0?d X°k›%΄ @  5À€ê0?d ˜°k»ÐÌz @  5Á€ë0?d ذk}Ãu[ @  5€ì0?d ±k­‹ù³ @  5Àí0?d X±k˜½ø' @  5Ä€î0?d ˜±k¸HúÙ @  5Å€ï0?d رkƒÂ3 @  5Æ€ð0?d ²k_bò @  5Ç€ñ0?d X²k ’Çñ @  5È€ò0?d ˜²kgÅ @  5É€ó0?d زkÆt|. @  5Ê€ô0?d ³k<ðÆ @  5Ë€õ0?d X³k# ñR @  5Ì€ö0?d ˜³kÿó¬ @  5Í€÷0?d سk]ü©ª @  5΀ø0?d ´kD²Z¥ @  5Ï€ù0?d X´k×ÞÁF @  5Ѐú0?d ˜´k÷+ø @  5Ñ€û0?d Ø´k18z™ @  5Ò€ü0?d µkápöq @  5Ó€ý0?d XµkÔF÷å @  5Ô€þ0?d ˜µkô³õ @  5Õ€ÿ0?d صkÀ¦à¢ @  5Ö€1?d ¶k]â@c @  5×€1?d X¶kc/å` @  5Ø€1?d ˜¶kCÚçž @  5Ù€1?d ضk…É^¿ @  5Ú€1?d ·kUÒW @  5Û€1?d X·k`·Óà @  5Ü€1?d ˜·k@BÑ= @  5Ý€1?d Ø·kA‹; @  5Þ€1?d ¸k*¾& @  5߀ 1?d X¸k¨Ô»u @  5à€ 1?d ˜¸kˆ!¹‹ @  5ဠ1?d ظkN2ª @  5†1?d€ ¹k_={B @  6€ 1?d X¹k‹J2ÿ @  6€1?d ˜¹k«¿0 @  6€1?d عkU¥ó @  6€1?d ºkÈáSÇ @  6€1?d Xºk8ž©¾ @  6€1?d ˜ºkk«@ @  6€1?d غkÊM @  6€1?d »kÀ‚Áó @  6 €1?d X»k0ý;Š @  6 €1?d ˜»k9t @  6 €1?d Ø»k‹B˜Ÿ @  6 €1?d ¼k’ k @  6 €1?d X¼kbs‘é @  6€1?d ˜¼kB†“ @  6€1?d ؼkç†K¬ @  6€1?d ½k7ÎÇD @  6€1?d X½kDZ== @  6€1?d ˜½kçD?à @  6€1?d ؽk„éÅ @  6€ 1?d ¾k­eÙ @  6€!1?d X¾kéÒŸ  @  6€"1?d ˜¾kÉ'^ @  6€#1?d ؾkÁ†{ @  6€$1?d ¿kÎ÷í @  6€%1?d X¿ká± ” @  6€&1?d ˜¿kÁDj @uÐÀk  6€'1?d Ø¿k'ŽÝý @  6(1?d 0ÀkC~Œ¯ @  6)1?d pÀk³vÖ @  6*1?d °Àk“ôt( @  6+1?d ðÀk'ò‹# @  6 ,1?d 0Ák÷ºË @  6!-1?d pÁkÅý² @  6".1?d °Ák'0ÿL @  6#/1?d ðÁkÙ*òp @  62>1?d °ÅkkËðŽ @  63?1?d ðÅkø6D @  64@1?d 0Æker¿… @  65A1?d pÆk• Eü @  66B1?d °ÆkµøG @  67C1?d ðÆk½Y¡Y @  68D1?d 0Çkm-± @  69E1?d pÇkn×È @  6:F1?d °Çk½›Õ6 @  6;G1?d ðÇk&ÑtÝ @  6<H1?d 0Èk.øÀ @  6=I1?d pÈkâQ¹ @  6>J1?d °Èk¤G @  6?K1?d ðÈkØ¥ùÞ @  6@L1?d 0Ékíu6 @  6AM1?d pÉkø’O @  6BN1?d °ÉkØg± @  6CO1?d ðÉk&}N¶ @  6DP1?d 0Êk»9îw @  6EQ1?d pÊkKF @  6FR1?d °Êkk³ð @  6GS1?d ðÊkcð« @  6HT1?d 0Ëk³Z|C @  6IU1?d pËkC%†: @  6JV1?d °ËkcЄÄ @  6KW1?d ðËkøš%/ @  6LX1?d 0ÌkáÔÖ  @  6MY1?d pÌk«,Y @  6NZ1?d °Ìk1^.§ @  6O[1?d ðÌk”^ö @  6P\1?d 0ÍkDzô @  6Q]1?d pÍk´i€ @  6R^1?d °Ík”œ‚s @  6S_1?d ðÍk÷1x¨ @  6T`1?d 0ÎkjuØi @  6Ua1?d pÎkš " @  6Vb1?d °Îkºÿ î @  6Wc1?d ðÎk²^Ƶ @  6Xd1?d 0ÏkbJ] @  6Ye1?d pÏk’i°$ @  6Zf1?d °Ïk²œ²Ú @  6[g1?d ðÏk)Ö1 @  6\h1?d 0Ðk—¯ƒ @  6]i1?d pÐkgwUú @  6^j1?d °ÐkG‚W @  6_k1?d ðÐkó„¨ @  6`l1?d 0Ñk#Ì$ç @  6am1?d pÑkÓ³Þž @  6bn1?d °ÑkóFÜ` @  6co1?d ðÑk \g @  6dp1?d 0Òk¿¦ @  6eq1?d pÒk`gEß @  6fr1?d °Òk@’G! @  6gs1?d ðÒkH3¡z @  6ht1?d 0Ók˜{-’ @  6iu1?d pÓkh×ë @  6jv1?d °ÓkHñÕ @  6kw1?d ðÓkÓ»tþ @  6lx1?d 0ÔkÊõ‡ñ @  6my1?d pÔk:Š}ˆ @  6nz1?d °Ôkv @  6o{1?d ðÔk¿§Í @  6p|1?d 0Õko7+% @  6q}1?d pÕkŸHÑ\ @  6r~1?d °Õk¿½Ó¢ @  6s1?d ðÕk1†hú @  6t€1?d 0Ök¬ÂÈ; @  6u1?d pÖk\½2B @  6v‚1?d °Ök|H0¼ @  6wƒ1?d ðÖktéÖç @  6x„1?d 0×k¤¡Z @  6y…1?d p×kTÞ v @  6z†1?d °×kt+¢ˆ @  6{‡1?d ð×kïac @  6|ˆ1?d 0ØkÛž~ @  6}‰1?d pØk+áu @  6~Š1?d °Øk wù @  6‹1?d ðØkòC¾Q @  6€Œ1?d 0Ùk" 2¹ @  61?d pÙkÒtÈÀ @  6‚Ž1?d °ÙkòÊ> @  6ƒ1?d ðÙk › 9 @  6„1?d 0Úk‘ß©ø @  6…‘1?d pÚka S @  6†’1?d °ÚkAUQ @  6‡“1?d ðÚkIô·$ @  6ˆ”1?d 0Ûk™¼;Ì @  6‰•1?d pÛkiÃÁµ @  6Š–1?d °ÛkI6ÃK @  6‹—1?d ðÛkÒ|b  @  6Œ˜1?d 0ÜkË2‘¯ @  6™1?d pÜk;MkÖ @  6Žš1?d °Ük¸i( @  6›1?d ðÜk¾¸±“ @  6œ1?d 0Ýknð={ @  6‘1?d pÝkžÇ @  6’ž1?d °Ýk¾zÅü @  6“Ÿ1?d ðÝkÝ×?' @  6” 1?d 0Þk@“Ÿæ @  6•¡1?d pÞk°ìeŸ @  6–¢1?d °Þkga @  6—£1?d ðÞk˜¸: @  6˜¤1?d 0ßkHð Ò @  6™¥1?d pßk¸÷« @  6š¦1?d uÐàk/°ßk˜zõU @  6›§1?d ðßk~°' @  6œ€¨1?d Hàkgy4 @  6€©1?d ˆàk5–m @  6ž€ª1?d Èàk·ž³ @  6Ÿ€«1?d ákQAåŽ @  6 €¬1?d HákÓÐòP @  6¡€­1?d ˆákË  @  6¢€®1?d ÈákZ × @  6£€¯1?d âkâ•~Ï @  6¤€°1?d Hâk`i @  6¥€±1?d ˆâk2†H @  6¦€²1?d Èâk°Ž‘– @  6§€³1?d ãkêöìû @  6¨€´1?d Hãkhgû% @  6©€µ1?d ˆãk:|| @  6ª€¶1?d Èãk¸í¢ @  6«€·1?d äk¸xF˜ @  6¬€¸1?d Häk:éQF @  6­€¹1?d ˆäkhò¾ @  6®€º1?d Èäkêc©Á @  6¯€»1?d åkºêL @  6°€¼1?d HåkŸ+ý’ @  6±€½1?d ˆåkÍ0Ë @  6²€¾1?d ÈåkO¡ @  6³€¿1?d ækÉ]À @  6´€À1?d HækAJ @  6µ€Á1?d ˆæk¥G @  6¶€Â1?d Èæk‘’²™ @  6·€Ã1?d çkËêÏô @  6¸€Ä1?d HçkI{Ø* @  6¹€Å1?d ˆçk`7s @  6º€Æ1?d Èçk™ñ ­ @  6»€Ç1?d èk´Õ… @  6¼€È1?d Hèk6D [ @  6½€É1?d ˆèkd_â @  6¾€Ê1?d ÈèkæÎõÜ @  6¿€Ë1?d ék®—s @  6À€Ì1?d Hék,‡€­ @  6Á€Í1?d ˆék~œoô @  6€Î1?d Èékü x* @  6ÀÏ1?d êk 2 @  6Ä€Ð1?d HêkŸSì @  6Å€Ñ1?d ˆêkÍHôµ @  6Æ€Ò1?d ÈêkOÙãk @  6Ç€Ó1?d ëk¡ž @  6È€Ô1?d Hëk—0‰Ø @  6É€Õ1?d ˆëkÅ+f @  6Ê€Ö1?d ÈëkGºq_ @  6Ë€×1?d ìkG/4e @  6Ì€Ø1?d Hìkž#» @  6Í€Ù1?d ˆìk—¥Ìâ @  6΀Ú1?d Èìk4Û< @  6Ï€Û1?d íkâ혱 @  6ЀÜ1?d Hík`|o @  6Ñ€Ý1?d ˆík2g`6 @  6Ò€Þ1?d Èík°öwè @  6Ó€ß1?d îkÌŽ:, @  6Ô€à1?d HîkN-ò @  6Õ€á1?d ˆîk« @  6Ö€â1?d Èîkž•Õu @  6×€ã1?d ïkÄí¨ @  6Ø€ä1?d HïkF|¿Æ @  6Ù€å1?d ˆïkgPŸ @  6Ú€æ1?d Èïk–öGA @  6Û€ç1?d ðk1óMÆ @  6Ü€è1?d Hðk³bZ @  6Ý€é1?d ˆðkáyµA @  6Þ€ê1?d Èðkc袟 @  6߀ë1?d ñk…7Æ¢ @  6à€ì1?d Hñk¦Ñ| @  6á€í1?d ˆñkU½>% @  6â€î1?d€ Èñk£ï5] @  7€ï1?d òk£a l @  7€ð1?d Hòk!ð² @  7€ñ1?d ˆòk¶¢  @  7€ò1?d Èòk43Ø @  7€ó1?d ók ù?Ï @  7€ô1?d Hók"h( @  7€õ1?d ˆók¾Á˜2 @  7€ö1?d Èók @  7€ 2?d Hùk¤«xà @  7€ 2?d ˆùk„¥Ñ“ @  7 €2?d Èùk4ÆM @  7!€2?d úk"²I¸ @  7"€2?d Húk #^f @  7#€2?d ˆúk7qJÒ @  7$€2?d Èúkµà]  @  7%€2?d ûk!* @  7&€2?d Hûk£»hÅ @  7'€2?d ˆûk?Øæ @  7(€2?d Èûk½ƒÏ8 @  7)€2?d ükx_qï @  7*€2?d HükúÎf1 @  7+€2?d ˆükmœr… @  7,€2?d Èükï e[ @  7-€2?d ýk{ÇGL @  7.€2?d HýkùVP’ @  7/€2?d ˆýkÈ^ÞQ @  70€2?d ÈýkJÏÉ @  71€2?d þkóþ¦ @  72€ 2?d Hþkqohx @  73€!2?d ˆþkæ=|Ì @  74€"2?d Èþkd¬k @  75€#2?d ÿkðfI @  76€$2?d Hÿkr÷^Û @  77€%2?d ˆÿkî^îø @  78€uÐl&2?d ÈÿkOŠZ @  79'2?d løÕ @  7:(2?d `lzŠÂ @  7;)2?d  líØÖv @  7<*2?d àloIÁ¨ @  7=+2?d lûƒã¿ @  7>,2?d `lyôa @  7?-2?d  l÷[€ @  7@.2?d àluŠL^ @  7A/2?d lQ ë @  7B02?d `lÓÔu @  7C12?d  lDÏÀÁ @  7D22?d àlÆ^× @  7E32?d lR”õ @  7F42?d `lÐâÖ @  7G52?d  lL¬Rõ @  7H62?d àlÎ=E+ @  7I72?d l áûü @  7J82?d `l‰pì" @  7K92?d  l"ø– @  7L:2?d àlœ³ïH @  7M;2?d lyÍ_ @  7N<2?d `lŠèÚ @  7O=2?d  l»àTB @  7P>2?d àl9qCœ @  7Q?2?d lpठ@  7R@2?d `lò÷z @  7SA2?d  leÓãÎ @  7TB2?d àlçBô @  7UC2?d lsˆÖ @  7VD2?d `lñÁÙ @  7WE2?d  lm°qú @  7XF2?d àlï!f$ @  7YG2?d lL§á @  7ZH2?d `l…ݰ? @  7[I2?d  l¤‹ @  7\J2?d àl³U @  7]K2?d lÔ‘B @  7^L2?d ` l†E†œ @  7_M2?d   l¦K/ï @  7`N2?d à l$Ú81 @  7aO2?d l\·Ä @  7bP2?d ` l‚Í  @  7cQ2?d   lŸ´® @  7dR2?d à l—£p @  7eS2?d lÄg @  7fT2?d ` lU–¹ @  7gU2?d   lü&š @  7hV2?d à lŸm1D @  7iW2?d lZ±“ @  7jX2?d ` lØ ˜M @  7kY2?d   lOrŒù @  7lZ2?d à lÍã›' @  7m[2?d lY)¹0 @  7n\2?d ` lÛ¸®î @  7o]2?d   lê° - @  7p^2?d à lh!7ó @  7q_2?d lÑÚ @  7r`2?d `lS– @  7sa2?d  lÄÓ‚° @  7tb2?d àl;Âæ @  7u€c2?d l¯Ä @  7v€d2?d `l-™ÓÛ @  7w€e2?d  l±0cø @  7x€f2?d àl3¡t& @  7y€g2?d lQí…L @  7z€h2?d `lÓ|’’ @  7{€i2?d  lD.†& @  7|€j2?d àlÆ¿‘ø @  7}€k2?d lRu³ï @  7~€l2?d `lÐä¤1 @  7€m2?d  l½»;á @  7€€n2?d àl?*,? @  7€o2?d l¬£Ê @  7‚€p2?d `l™=´ @  7ƒ€q2?d  lo   @  7„€r2?d àlŒþ·~ @  7…€s2?d l4•i @  7†€t2?d `l𥂷 @  7‡€u2?d  l 2” @  7ˆ€v2?d àl„%J @  7‰€w2?d lAA› @  7Š€x2?d `lÃÐŒC @  7‹€y2?d  lT‚˜÷ @  7Œ€z2?d àlÖ) @  7€{2?d lBÙ­> @  7Ž€|2?d `lÀHºà @  7€}2?d  lñ@4# @  7€~2?d àlsÑ#ý @  7‘€2?d l'vÔW @  7’€€2?d `l¥çÉ @  7“€2?d  l2µ×= @  7”€‚2?d àl°$Àã @  7•€ƒ2?d l$îâô @  7–€„2?d `l¦õ* @  7—€…2?d  l:ÖE  @  7˜€†2?d àl¸GR× @  7™€‡2?d lP*“ @  7š€ˆ2?d `lÒ»„Ì @  7›€‰2?d  lEéx @  7œ€Š2?d àlÇx‡¦ @  7€‹2?d lS²¥± @  7ž€Œ2?d `lÑ#²o @  7Ÿ€2?d  lñ- @  7 €Ž2?d àls¼  @  7¡€2?d lW:ƒ7 @  7¢€2?d `lÕ«”é @  7£€‘2?d  lBù€] @  7¤€’2?d àlÀh—ƒ @  7¥€“2?d lT¢µ” @  7¦€”2?d `lÖ3¢J @  7§€•2?d  lJši @  7¨€–2?d àlÈ · @  7©€—2?d l ×»` @  7ª€˜2?d `lF¬¾ @  7«€™2?d  l¸  @  7¬€š2?d àlš…¯Ô @  7­€›2?d lOà @  7®€œ2?d `lŒÞš @  7¯€2?d  l½ÖÞ @  7°€ž2?d àl?G @  7±€Ÿ2?d l†vµ) @  7²€ 2?d `lç¢÷ @  7³€¡2?d  l“µ¶C @  7´€¢2?d àl$¡ @  7µ€£2?d l… @  7¶€¤2?d `l”T @  7·€¥2?d  l›Ö$wuÐ l @  7¸€¦2?d àlG3© @  7¹€§2?d 8 l´Þ  @  7º€¨2?d x l6O·É @  7»€©2?d ¸ l¡£} @  7¼€ª2?d ø l#Œ´£ @  7½€«2?d 8!l·F–´ @  7¾€¬2?d x!l5×j @  7¿€­2?d ¸!l»Þ.‹ @  7À€®2?d ø!l9O9U @  7Á€¯2?d 8"lɶ  @  7€°2?d x"lŸX¡~ @  7À±2?d ¸"l µÊ @  7Ä€²2?d ø"lŠ›¢ @  7Å€³2?d 8#lQ€ @  7Æ€´2?d x#lœÀ—Ý @  7Ç€µ2?d ¸#li'þ @  7È€¶2?d ø#l‚ø0  @  7É€·2?d 8$lG$Ž÷ @  7Ê€¸2?d x$lŵ™) @  7Ë€¹2?d ¸$lRç @  7Ì€º2?d ø$lÐvšC @  7Í€»2?d 8%lD¼¸T @  7΀¼2?d x%lÆ-¯Š @  7Ï€½2?d ¸%l÷%!I @  7Ѐ¾2?d ø%lu´6— @  7Ñ€¿2?d 8&l<Õ•¯ @  7Ò€À2?d x&l¾D‚q @  7Ó€Á2?d ¸&l)–Å @  7Ô€Â2?d ø&l«‡ @  7Õ€Ã2?d 8'l?M£  @  7Ö€Ä2?d x'l½Ü´Ò @  7×€Å2?d ¸'l!uñ @  7Ø€Æ2?d ø'l£ä/ @  7Ù€Ç2?d 8(lK‰Òê @  7Ú€È2?d x(lÉÅ4 @  7Û€É2?d ¸(l^JÑ€ @  7Ü€Ê2?d ø(lÜÛÆ^ @  7Ý€Ë2?d 8)lHäI @  7Þ€Ì2?d x)lÊ€ó— @  7߀Í2?d ¸)lêŽZä @  7à€Î2?d ø)lhM: @  7á€Ï2?d 8*lL™ÂÏ @  7â€Ð2?d€ x*læ’ÁC @  8€Ñ2?d ¸*lÞ @  8€Ò2?d ø*lŠ @  8€Ó2?d 8+lC“Sú @  8€Ô2?d x+lÁD$ @  8€Õ2?d ¸+l“«} @  8€Ö2?d ø+lˆ¼£ @  8€×2?d 8,læ] @  8€Ø2?d x,l˜wJÐ @  8 €Ù2?d ¸,lÊl¥‰ @  8 €Ú2?d ø,lHý²W @  8 €Û2?d 8-l~k­ @  8 €Ü2?d x-l›ï|s @  8 €Ý2?d ¸-lÉô“* @  8€Þ2?d ø-lKe„ô @  8€ß2?d 8.l‘GSG @  8€à2?d x.lÖD™ @  8€á2?d ¸.lAÍ«À @  8€â2?d ø.lÃ\¼ @  8€ã2?d 8/l’ßeä @  8€ä2?d x/lNr: @  8€å2?d ¸/lBUc @  8€æ2?d ø/lÀÄŠ½ @  8€ç2?d 80ll:$­ @  8€è2?d x0lî«3s @  8€é2?d ¸0l¼°Ü* @  8€ê2?d ø0l>!Ëô @  8€ë2?d 81lo¢ @  8€ì2?d x1lí3Ð @  8€í2?d ¸1l¿(ê‰ @  8€î2?d ø1l=¹ýW @  8€ï2?d 82lk*4ˆ @  8 €ð2?d x2lé»#V @  8!€ñ2?d ¸2l» Ì @  8"€ò2?d ø2l91ÛÑ @  8#€ó2?d 83lh²+ @  8$€ô2?d x3lê#õ @  8%€õ2?d ¸3l¸8ú¬ @  8&€ö2?d ø3l:©ír @  8'€÷2?d 84l1Ç ß @  8(€ø2?d x4l³V @  8)€ù2?d ¸4láMôX @  8*€ú2?d ø4lcÜㆠ@  8+€û2?d 85l2_:| @  8,€ü2?d x5l°Î-¢ @  8-€ý2?d ¸5lâÕÂû @  8.€þ2?d ø5l`DÕ% @  8/€ÿ2?d 86l(— @  80€3?d x6lªÇ @  81€3?d ¸6løîž @  82€3?d ø6lzŒù@ @  83€3?d 87l+ º @  84€3?d x7l©ž7d @  85€3?d ¸7lû…Ø= @  86€3?d ø7lyÏã @  87€3?d 88l_ËQ\ @  88€3?d x8lÝZF‚ @  89€ 3?d ¸8lA©Û @  8:€ 3?d ø8l о @  8;€ 3?d 89l\Sgÿ @  8<€ 3?d x9lÞÂp! @  8=€ 3?d ¸9lŒÙŸx @  8>€3?d ø9lHˆ¦ @  8?€3?d 8:löÜGë @  8@€3?d x:ltMP5 @  8A€3?d ¸:l&V¿l @  8B€3?d ø:l¤Ç¨² @  8C€3?d 8;lõDqH @  8D€3?d x;lwÕf– @  8E€3?d ¸;l%ΉÏ @  8F€3?d ø;l§_ž @  8G€3?d 8l'qõ @  8P€ 3?d x>l¥f+ @  8Q€!3?d ¸>l÷‰r @  8R€"3?d ø>lu‹ž¬ @  8S€#3?d 8?l$GV @  8T€$3?d x?l¦™Pˆ @  8U€%3?duÐ@l7 ¸?lô‚¿Ñ @  8V€&3?d ø?l “Ûs @  8W'3?d P@lÚsí @  8X(3?d @lúêq @  8Y)3?d Ð@l •‹j @  8Z*3?d AlÚÝ‚ @  8[+3?d PAlÙ‡EN @  8\,3?d AlùrG° @  8]-3?d ÐAl ½É @  8^.3?d Bl”I @  8_/3?d PBlÝcÈ @  8`03?d Blýúa6 @  8a13?d ÐBl …›O @  8b23?d ClÝͧ @  8c33?d PClÞ—Uk @  8d43?d ClþbW• @  8e53?d ÐCl­ì @  8f63?d DlS^ã @  8g73?d PDl‡â[Ÿ @  8h83?d Dl§Ya @  8i93?d ÐDlWh£ @  8j:3?d El‡ /ð @  8k;3?d PEl„zm< @  8l<3?d El¤o @  8m=3?d ÐElTð•» @  8n>3?d FlÉ´5z @  8o?3?d PFlü@Ç @  8p@3?d FlÜæB9 @  8qA3?d ÐFl,™¸@ @  8rB3?d GlüÑ4¨ @  8sC3?d PGlÿ‹vd @  8tD3?d Glß~tš @  8uE3?d ÐGl/Žã @  8vF3?d Hlþþ @  8wG3?d PHl‹O‚ @  8xH3?d Hl«º| @  8yI3?d ÐHl[Åÿ @  8zJ3?d Il‹sí @  8{K3?d PIlˆ×1! @  8|L3?d Il¨"3ß @  8}M3?d ÐIlX]ɦ @  8~N3?d JlÅig @  8O3?d PJlÁ! @  8€P3?d Jláû#ú @  8Q3?d ÐJl„Ùƒ @  8‚R3?d KlÁÌUk @  8ƒS3?d PKl–§ @  8„T3?d KlâcY @  8…U3?d ÐKlï  @  8†V3?d Ll R/ @  8‡W3?d PLl›ãS @  8ˆX3?d Ll»­ @  8‰Y3?d ÐLlKiáÔ @  8ŠZ3?d Ml›!m< @  8‹[3?d PMl˜{/ð @  8Œ\3?d Ml¸Ž- @  8]3?d ÐMlHñ×w @  8Ž^3?d NlÕµw¶ @  8_3?d PNlB @  8`3?d Nl0·ä @  8‘a3?d ÐNlÀÈï @  8’b3?d Ol€cu @  8“c3?d POlÚ!¹ @  8”d3?d Ol3/#G @  8•e3?d ÐOlÃPÙ> @  8–f3?d Pl}ŽeŒ @  8—g3?d PPlí?`ð @  8˜h3?d PlÍÊb @  8™i3?d ÐPl=µ˜w @  8šj3?d QlíýŸ @  8›k3?d PQlî§VS @  8œl3?d QlÎRT­ @  8m3?d ÐQl>-®Ô @  8žn3?d Rl£i @  8Ÿo3?d PRlê/pÕ @  8 p3?d RlÊÚr+ @  8¡q3?d ÐRl:¥ˆR @  8¢r3?d Slêíº @  8£s3?d PSlé·Fv @  8¤t3?d SlÉBDˆ @  8¥u3?d ÐSl9=¾ñ @  8¦v3?d Tl sMþ @  8§w3?d PTl°ÂH‚ @  8¨x3?d Tl7J| @  8©y3?d ÐTl`H° @  8ªz3?d Ul°<í @  8«{3?d PUl³Z~! @  8¬|3?d Ul“¯|ß @  8­}3?d ÐUlcІ¦ @  8®~3?d Vlþ”&g @  8¯3?d PVlÖõH @  8°€3?d Vlö¶ @  8±3?d ÐVlÿÏ @  8²‚3?d WlÖ7s' @  8³ƒ3?d PWlÕm1ë @  8´„3?d Wlõ˜3 @  8µ…3?d ÐWlçÉl @  8¶†3?d Xl1Eq @  8·‡3?d PXl¡©@  @  8¸ˆ3?d Xl\Bó @  8¹‰3?d ÐXlq#¸Š @  8ºŠ3?d Yl¡k4b @  8»‹3?d PYl¢1v® @  8¼Œ3?d Yl‚ÄtP @  8½3?d ÐYlr»Ž) @  8¾Ž3?d Zlïÿ.è @  8¿3?d PZl¾Vº @  8À3?d Zl(KTD @  8Á‘3?d ÐZlØ4®= @  8Â’3?d [l|"Õ @  8Ó3?d P[l &` @  8Ä”3?d [l+Óbç @  8Å•3?d Ð[lÛ¬˜ž @  8Æ–3?d \lÂâk‘ @  8Ç—3?d P\l/Ó‘ @  8È€˜3?d \l&o @  8É€™3?d Ð\lÿYå @  8Ê€š3?d ]l/iþ @  8Ë€›3?d P]l,K+2 @  8Ì€œ3?d ]l ¾)Ì @  8Í€3?d Ð]lüÁÓµ @  8΀ž3?d ^la…st @  8Ï€Ÿ3?d P^l¤rØ @  8Ѐ 3?d ^l„‡& @  8Ñ€¡3?d Ð^ltøë_ @  8Ò€¢3?d _l¤°g· @  8Ó€£3?d P_l§ê%{ @  8Ô€¤3?d _l‡'… @  8uÐ`lÕ€¥3?d Ð_l ஀ @  8Ö¦3?d (`l´ @  8×§3?d h`l$©d @  8ب3?d ¨`l\š @  8Ù©3?d è`lô#æã @  8Úª3?d (al$kj  @  8Û«3?d hal'1(Ç @  8ܬ3?d ¨alÄ*9 @  8Ý­3?d èal÷»Ð@ @  8Þ®3?d (bljÿp @  8߯3?d hbl#¹A @  8à°3?d ¨blL ¿ @  8á±3?d èbló3öÆ @  8â²3?d€ (clW¸fˆ @  9³3?d hclµ£lm @  9´3?d ¨cl•Vn“ @  9µ3?d ècl `o @  9¶3?d (dl¹.œ @  9·3?d hdlç-Æ @  9¸3?d ¨dlÇØÄð @  9¹3?d èdlùaó @  9º3?d (el)]í @  9 »3?d helïNT: @  9 ¼3?d ¨elÏ»VÄ @  9 ½3?d èelúWP @  9 ¾3?d (flgÉ÷‘ @  9 ¿3?d hfl1}ã¶ @  9À3?d ¨flˆáH @  9Á3?d èfl‚äz« @  9Â3?d (glR¬öC @  9Ã3?d hgl”¿Ob @  9Ä3?d ¨gl´JMœ @  9Å3?d ègl|L @  9Æ3?d (hlµƒÀ @  9Ç3?d hhl뀚 @  9È3?d ¨hlËu˜í @  9É3?d èhlõ¸=î @  9Ê3?d (il%ð± @  9Ë3?d hilãã' @  9Ì3?d ¨ilà ٠@  9Í3?d èilö M @  9Î3?d (jlkd«Œ @  9Ï3?d hjlP7“f @  9Ð3?d ¨jlp‘˜ @  9Ñ3?d èjlò¨-Ë @  9 Ò3?d (kl"à¡# @  9!Ó3?d hkläó @  9"Ô3?d ¨klÄü @  9#Õ3?d èklñ0h @  9$Ö3?d (llè~èg @  9%×3?d hll¶}²a @  9&Ø3?d ¨ll–ˆ°Ÿ @  9'Ù3?d èll¨Eœ @  9(Ú3?d (mlx ™t @  9)Û3?d hml¾ U @  9*Ü3?d ¨mlžë"« @  9+Ý3?d èml«Ý#? @  9,Þ3?d (nl6™ƒþ @  9-ß3?d hnl}‚È @  9.à3?d ¨nl°ˆ€6 @  9/á3?d ènl#äÕ @  90â3?d (oló¬—= @  91ã3?d hol5¿. @  92ä3?d ¨olJ,â @  93å3?d èol |-v @  94æ3?d (plž¢‘Ä @  95ç3?d hplÀ¡Ë @  96è3?d ¨plàTÉ< @  97é3?d èplÞ™l? @  98ê3?d (qlÑà× @  99ë3?d hqlÈÂYö @  9:ì3?d ¨qlè7[ @  9;í3?d èqlÝZœ @  9<î3?d (rl@Eú] @  9=ï3?d hrl{· @  9>ð3?d ¨rl[ãÀI @  9?ñ3?d èrlwŽzˆ @  9@ò3?d (sl§Æö` @  9Aó3?d hslaÕOA @  9Bô3?d ¨slA M¿ @  9Cõ3?d èsltL+ @  9Dö3?d (tlmX¿$ @  9E÷3?d htl3[å" @  9Fø3?d ¨tl®çÜ @  9Gù3?d ètl-cBß @  9Hú3?d (ulý+Î7 @  9Iû3?d hul;8w @  9Jü3?d ¨ulÍuè @  9Ký3?d èulS{ @  9L€þ3?d (vlÎ?§Á @  9M€ÿ3?d hvlÆ#î @  9N€4?d ¨vlæÖ @  9O€4?d èvluºó @  9P€4?d (wl¥ò˜ @  9Q€4?d hwlcá!: @  9R€4?d ¨wlC#Ä @  9S€4?d èwlv""P @  9T€4?d (xlBÝ®M @  9U€4?d hxlÞôK @  9V€4?d ¨xl<+öµ @  9W€ 4?d èxlæS¶ @  9X€ 4?d (ylÒ®ß^ @  9Y€ 4?d hyl½f @  9Z€ 4?d ¨yl4Hd @  9[€ 4?d èyl~e @  9\€4?d (zlœ:ÅÔ @  9]€4?d hzl§iý> @  9^€4?d ¨zl‡œÿÀ @  9_€4?d èzlöC“ @  9`€4?d ({lÕ¾Ï{ @  9a€4?d h{l­vZ @  9b€4?d ¨{l3Xt¤ @  9c€4?d è{lnu0 @  9d€4?d (|l †? @  9e€4?d h|lA#Ü9 @  9f€4?d ¨|laÖÞÇ @  9g€4?d è|l_{Ä @  9h€4?d (}lS÷, @  9i€4?d h}lI@N  @  9j€4?d ¨}liµLó @  9k€4?d è}l\ƒMg @  9l€4?d (~lÁÇí¦ @  9m€4?d h~lg#ì @  9n€ 4?d ¨~lGÖîn @  9o€!4?d è~lÔºu @  9p€"4?d (lòùe @  9q€#4?d hlÂá@D @  9r€$4?d ¨luЀl'âBº @  9s€%4?d èlª¢0R @  9t&4?d @€lÄÒ& @  9u'4?d €€l8{ @  9v(4?d À€lºêŠÞ @  9w)4?d lÖþ´ë @  9x*4?d @lTo£5 @  9y+4?d €l04 @  9z,4?d Àl²‰ê @  9{-4?d ‚l˜j®a @  9|.4?d @‚lû¹¿ @  9}/4?d €‚lƒÌ”u @  9~04?d À‚l]ƒ« @  914?d ƒlœ¿’m @  9€24?d @ƒl.…³ @  934?d €ƒlzY)² @  9‚44?d ÀƒløÈ>l @  9ƒ54?d „lV!Û) @  9„64?d @„lÔ°Ì÷ @  9…74?d €„l(׃Ñ @  9†84?d À„lªF” @  9‡94?d …lÆRª: @  9ˆ:4?d @…lDýä @  9‰;4?d €…l ´å @  9Š<4?d À…l¢%; @  9‹=4?d †lˆÆ°° @  9Œ>4?d @†l W§n @  9?4?d €†lþ‡¦i @  9Ž@4?d À†l|±· @  9A4?d ‡l½£±b @  9B4?d @‡l?2¦¼ @  9‘C4?d €‡l[E ½ @  9’D4?d À‡lÙÔc @  9“E4?d ˆlZŒ‡4 @  9”F4?d @ˆlØê @  9•G4?d €ˆl$zßÌ @  9–H4?d Àˆl¦ëÈ @  9—I4?d ‰lÊÿö' @  9˜J4?d @‰lHnáù @  9™K4?d €‰l,Mø @  9šL4?d À‰l®ˆZ& @  9›M4?d Šl„kì­ @  9œN4?d @Šlúûs @  9O4?d €ŠlâM¥Å @  9ž€P4?d ÀŠl`ܲ @  9Ÿ€Q4?d ‹l°o•~ @  9 €R4?d @‹l2þ‚  @  9¡€S4?d €‹lV‰.¡ @  9¢€T4?d À‹lÔ9 @  9£€U4?d ŒlzñÜ: @  9¤€V4?d @Œlø`Ëä @  9¥€W4?d €Œl„ @  9¦€X4?d ÀŒl†–“ @  9§€Y4?d lê‚­) @  9¨€Z4?d @lhº÷ @  9©€[4?d €l dö @  9ª€\4?d ÀlŽõ( @  9«€]4?d Žl¤·£ @  9¬€^4?d @Žl&‡ } @  9­€_4?d €Žl"´k @  9®€`4?d ÀŽl –£µ @  9¯€a4?d la#£` @  9°€b4?d @lã²´¾ @  9±€c4?d €l‡Å¿ @  9²€d4?d ÀlTa @  9³€e4?d l -¥™ @  9´€f4?d @l޼²G @  9µ€g4?d €lrÛýa @  9¶€h4?d ÀlðJê¿ @  9·€i4?d ‘lœ^ÔŠ @  9¸€j4?d @‘lÏÃT @  9¹€k4?d €‘lz¸oU @  9º€l4?d À‘lø)x‹ @  9»€m4?d ’lÒÊÎ @  9¼€n4?d @’lP[ÙÞ @  9½€o4?d €’lÉlô @  9¾€p4?d À’lKýãÊ @  9¿€q4?d “l5IÂ= @  9À€r4?d @“l·ØÕã @  9Á€s4?d €“lÓ¯yâ @  9€t4?d À“lQ>n< @  9Àu4?d ”lÿ׋y @  9Ä€v4?d @”l}Fœ§ @  9Å€w4?d €”l!Ó @  9Æ€x4?d À”l°Ä_ @  9Ç€y4?d •lo¤új @  9È€z4?d @•lí5í´ @  9É€{4?d €•l‰BAµ @  9Ê€|4?d À•l ÓVk @  9Ë€}4?d –l!0àà @  9Ì€~4?d @–l£¡÷> @  9Í€4?d €–lJ·¢« @  9΀€4?d À–lÈ&µu @  9Ï€4?d —l “µ  @  9Ѐ‚4?d @—l‹¢~ @  9Ñ€ƒ4?d €—lïu @  9Ò€„4?d À—lmä¡ @  9Ó€…4?d ˜lö @  9Ô€†4?d @˜ll-”( @  9Õ€‡4?d €˜lJÛ @  9Ö€ˆ4?d À˜lÛÌÐ @  9×€‰4?d ™l~Ïòå @  9Ø€Š4?d @™lü^å; @  9Ù€‹4?d €™l˜)I: @  9Ú€Œ4?d À™l¸^ä @  9Û€4?d šl0[èo @  9Ü€Ž4?d @šl²Êÿ± @  9Ý€4?d €šl+ýÒ{ @  9Þ€4?d Àšl©lÅ¥ @  9߀‘4?d ›lyßâÀ @  9à€’4?d @›lûNõ @  9ဓ4?d €›lŸ9Y @  9—4?d€ À›lÜï¹Á @  :€•4?d œl“G­ @  :€–4?d @œlÖs @  :€—4?d €œl(ø·¸ @  :€˜4?d Àœlªi f @  :€™4?d lÏÁ) @  :€š4?d @lŠ^Ö÷ @  :€›4?d €l ›%Œ @  :€œ4?d Àl¢ 2R @  : €4?d žlM 4 @  : €ž4?d @žlÏ1hê @  : €Ÿ4?d €žlø‡ @  : € 4?d ÀžlŒiÏ @  : €¡4?d Ÿl.Ïñ€ @  :€¢4?d @Ÿl¬^æ^ @  :€£4?d €Ÿl«:+Å @  :€¤4uРl?d ÀŸl)«< @  :€¥4?d  l*NÚ @  :€¦4?d X l¨ß @  :€§4?d ˜ l‘ñ¬Ï @  :€¨4?d Ø l`» @  :€©4?d ¡l±ÆÚ^ @  :€ª4?d X¡l3WÍ€ @  :€«4?d ˜¡l™’>û @  :€¬4?d Ø¡l)% @  :€­4?d ¢lô©dC @  :€®4?d X¢lv8s @  :€¯4?d ˜¢l*F¥º @  :€°4?d Ø¢l¨×²d @  :€±4?d £l qÓ+ @  :€²4?d X£lˆàÄõ @  :€³4?d ˜£lž‚.Þ @  : €´4?d Ø£l9 @  :!€µ4?d ¤lw³'¨ @  :"€¶4?d X¤lõ"0v @  :#€·4?d ˜¤lÌ „½ @  :$€¸4?d ؤlN“c @  :%€¹4?d ¥lì;ò, @  :&€º4?d X¥lnªåò @  :'€»4?d ˜¥lÄo‰ @  :(€¼4?d Ø¥lFþW @  :)€½4?d ¦l©TL1 @  :*€¾4?d X¦l+Å[ï @  :+€¿4?d ˜¦l\¡ @  :,€À4?d ئl˜Í¶Û @  :-€Á4?d §l:k×” @  :.€Â4?d X§l¸úÀJ @  :/€Ã4?d ˜§l¿ž Ñ @  :0€Ä4?d اl= @  :1€Å4?d ¨l{{µ @  :2€Æ4?d X¨lùlk @  :3€Ç4?d ˜¨lÀ¡Ø  @  :4€È4?d بlB0Ï~ @  :5€É4?d ©là–®1 @  :6€Ê4?d X©lb¹ï @  :7€Ë4?d ˜©lÈÂJ” @  :8€Ì4?d Ø©lJS]J @  :9€Í4?d ªl¥ù, @  ::€Î4?d Xªl'hò @  :;€Ï4?d ˜ªl{ÑÕ @  :<€Ð4?d تlù‡Æ  @  :=€Ñ4?d «l[!§D @  :>€Ò4?d X«lÙ°°š @  :?€Ó4?d ˜«laÕ\# @  :@€Ô4?d Ø«lãDKý @  :A€Õ4?d ¬lˆäUU @  :B€Ö4?d X¬l uB‹ @  :C€×4?d ˜¬l3[ö@ @  :D€Ø4?d جl±Êáž @  :E€Ù4?d ­ll€Ñ @  :F€Ú4?d X­l‘ý— @  :G€Û4?d ˜­l;8dt @  :H€Ü4?d Ø­l¹©sª @  :I€Ý4?d ®lV>Ì @  :J€Þ4?d X®lÔ’) @  :K€ß4?d ˜®l[Æé @  :L€à4?d Ø®l—ÊÑ7 @  :M€á4?d ¯l5l°x @  :N€â4?d X¯l·ý§¦ @  :O€ã4?d ˜¯l°™j= @  :P€ä4?d دl2}ã @  :Q€å4?d °lþ8,ö @  :R€æ4?d X°l|©;( @  :S€ç4?d ˜°lE‡ã @  :T€è4?d ذlǘ= @  :U€é4?d ±le°ùr @  :V€ê4?d X±lç!î¬ @  :W€ë4?d ˜±lMä× @  :X€ì4?d رlÏu  @  :Y€í4?d ²l ßGo @  :Z€î4?d X²l¢NP± @  :[€ï4?d ˜²lþ0†– @  :\€ð4?d زl|¡‘H @  :]€ñ4?d ³lÞð @  :^€ò4?d X³l\–çÙ @  :_€ó4?d ˜³lJô ò @  :`€ô4?d سlÈe, @  :a€õ4?d ´l£Å„ @  :b€ö4?d X´l!TZ @  :c€÷4?d ˜´lz§‘ @  :d€ø4?d Ø´lšë°O @  :e€ù4?d µl8MÑ @  :f€ú4?d XµlºÜÆÞ @  :g€û4?d ˜µl5¥ @  :h€ü4?d صl’ˆ"{ @  :i€ý4?d ¶l}"o @  :j€þ4?d X¶lÿ³xà @  :k€ÿ4?d ˜¶l¬‹ƒ· @  :l€5?d ضl.”i @  :m€5?d ·lŒ¼õ& @  :n€5?d X·l-âø @  :o€5?d ˜·l I/c @  :p€5?d Ø·l‹Ø8½ @  :q€5?d ¸lÍÉY @  :r€5?d X¸lOXNÙ @  :s€5?d ˜¸lvvú @  :t€5?d ظlôçíÌ @  :u€ 5?d ¹lVAŒƒ @  :v€ 5?d X¹lÔЛ] @  :w€ 5?d ˜¹l~h& @  :x€ 5?d عlü„ø @  :y€ 5?d ºl.2ž @  :z€5?d Xºl‘¿%@ @  :{€5?d ˜ºlÍÁóg @  :|€5?d غlOPä¹ @  :}€5?d »líö…ö @  :~€5?d X»log’( @  :€5?d ˜»l4TN  @  :€€5?d Ø»l¶ÅY~ @  :€5?d ¼lÝeGÖ @  :‚€5?d X¼l_ôP @  :ƒ€5?d ˜¼lfÚäà @  :„€5?d ؼläKó @  :…€5?d ½lFí’R @  :†€5?d X½lÄ|…Œ @  :‡€5?d ˜½ln¹v÷ @  :ˆ€5?d ؽlì(a) @  :‰€5?d ¾l‚,O @  :Š€5?d X¾l;‘ @  :‹€5?d ˜¾l@ÚÔj @  :Œ€ 5?d ؾlÂKô @  :€!5?d ¿l`í¢û @  :Ž€"5?d X¿lâ|µ% @  :€#5?d ˜¿låx¾ @uÐÀl  :€$5?d Ø¿lg‰o` @  :‘€%5?d 0Àlq—Ó• @  :’€&5?d pÀlóÄK @  :“€'5?d °ÀlÊ(p€ @  :”€(5?d ðÀlH¹g^ @  :•€)5?d 0Álê @  :–€*5?d pÁlhŽÏ @  :—€+5?d °ÁlÂKâ´ @  :˜€,5?d ðÁl@Úõj @  :™€-5?d 0Âl¯p¸  @  :š€.5?d pÂl-á¯Ò @  :›€/5?d °ÂlqŸyõ @  :œ€05?d ðÂlón+ @  :€15?d 0ÃlQ¨d @  :ž€25?d pÃlÓ9º @  :Ÿ€35?d °ÃlÅ[ò‘ @  : €45?d ðÃlGÊåO @  :¡€55?d 0Äl,jûç @  :¢€65?d pÄl®ûì9 @  :£€75?d °Äl—ÕXò @  :¤€85?d ðÄlDO, @  :¥€95?d 0Ål·â.c @  :¦€:5?d pÅl5s9½ @  :§€;5?d °ÅlŸ¶ÊÆ @  :¨€<5?d ðÅl'Ý @  :©€=5?d 0Ælò~ @  :ª€>5?d pÆlp‡  @  :«€?5?d °ÆlA…}J @  :¬€@5?d ðÆlÃj” @  :­€A5?d 0Çla² Û @  :®€B5?d pÇlã# @  :¯€C5?d °ÇläGÑž @  :°€D5?d ðÇlfÖÆ@ @  :±€E5?d 0Èl ǧú @  :²€F5?d pÈl¢V°$ @  :³€G5?d °Èl›xï @  :´€H5?d ðÈlé1 @  :µ€I5?d 0Él»Or~ @  :¶€J5?d pÉl9Þe  @  :·€K5?d °Él“–Û @  :¸€L5?d ðÉlŠ @  :¹€M5?d 0Êlþ Ìc @  :º€N5?d pÊl|±Û½ @  :»€O5?d °Êl Ï š @  :¼€P5?d ðÊl¢^D @  :½€Q5?d 0Ëlø{  @  :¾€R5?d pËl‚ilÕ @  :¿€S5?d °Ël: €l @  :À€T5?d ðËl¸—² @  :Á€U5?d 0ÌlÓ=‰ @  :€V5?d pÌlQ¬žÄ @  :ÀW5?d °Ìlh‚* @  :Ä€X5?d ðÌlê=Ñ @  :Å€Y5?d 0ÍlHµ\ž @  :Æ€Z5?d pÍlÊ$K@ @  :Ç€[5?d °Íl`á¸; @  :È€\5?d ðÍlâp¯å @  :É€]5?d 0Îl Ú⃠@  :Ê€^5?d pÎlKõ] @  :Ë€_5?d °ÎlN‚¦ @  :Ì€`5?d ðÎlÌ x @  :Í€a5?d 0Ïlnµl7 @  :΀b5?d pÏlì${é @  :Ï€c5?d °Ïlë@¶r @  :Ѐd5?d ðÏliÑ¡¬ @  :Ñ€e5?d 0Ðl¥áð¹ @  :Ò€f5?d pÐl'pçg @  :Ó€g5?d °Ðl^S¬ @  :Ô€h5?d ðÐlœÏDr @  :Õ€i5?d 0Ñl>i%= @  :Ö€j5?d pÑl¼ø2ã @  :×€k5?d °Ñl=Á˜ @  :Ø€l5?d ðÑl”¬ÖF @  :Ù€m5?d 0Òl{›  @  :Ú€n5?d pÒlù—Œþ @  :Û€o5?d °Òl¥éZÙ @  :Ü€p5?d ðÒl'xM @  :Ý€q5?d 0Ól…Þ,H @  :Þ€r5?d pÓlO;– @  :߀s5?d °Ól-ѽ @  :à€t5?d ðÓl“¼Æc @  :á€u5?d 0ÔløØË @  :â€v5?d€ pÔlNÓ³ @  ;€w5?d °ÔlÖ!/Q @  ;€x5?d ðÔlT°8 @  ;€y5?d 0Õl3_¢- @  ;€z5?d pÕl±Îµó @  ;€{5?d °ÕlÕ¹ò @  ;€|5?d ðÕlW(, @  ;€}5?d 0Ölv00 @  ;€~5?d pÖlô¡ î @  ; €5?d °Öl·^{ @  ; €€5?d ðÖlŸ&I¥ @  ; €5?d 0×løÉÓ @  ; €‚5?d p×lzXÄÙ @  ; €ƒ5?d °×l/hØ @  ;€„5?d ð×lœ¾ @  ;€…5?d 0Øl¹¼& @  ;€†5?d pØl;-hø @  ;€‡5?d °ØlÇJ'Þ @  ;€ˆ5?d ðØlEÛ0 @  ;€‰5?d 0Ùl"4ª¢ @  ;€Š5?d pÙl ¥½| @  ;€‹5?d °ÙlÄÒ} @  ;€Œ5?d ðÙlFC£ @  ;€5?d 0Úlg[¿ @  ;€Ž5?d pÚlåÊa @  ;€5?d °Úl|ý.« @  ;€5?d ðÚlþl9u @  ;€‘5?d 0Ûl™ƒ£× @  ;€’5?d pÛl´  @  ;€“5?d °Ûle @  ;€”5?d ðÛlýôÖ @  ;€•5?d 0ÜläAWT @  ; €–5?d pÜlfÐ@Š @  ;!€—5?d °Ülš·¬ @  ;"€˜5?d ðÜl&r @  ;#€™5?d 0ÝlɂР@  ;$€š5?d pÝlýX• @  ;%€›5?d °Ýl™/9 @  ;&€œ5?d ðÝl¾.Ñ @  ;'€5?d 0Þl:¦<Í @  ;(€ž5?d pÞl¸7+ @  ;)€Ÿ5?d °Þl¼·? @  ;*€ 5?d ðÞl>&(Û @  ;+€¡5?d 0ßlYɲy @  ;,€¢5?d pßlÛX¥§ @  ;-€£5?d uÐàl/°ßl¿/ ¦ @  ;.€¤5?d ðßl=¾x @  ;/€¥5?d Hàl5ç̳ @  ;0€¦5?d ˆàlÎM @  ;1€§5?d ÈàlK”K @  ;2€¨5?d ál›Y£ @  ;3€©5?d Hál®o7 @  ;4€ª5?d ˆálŽšÉ @  ;5€«5?d ÈálH‰¢è @  ;6€¬5?d âlÕÍ) @  ;7€­5?d Hâlë§* @  ;8€®5?d ˆâlËõ¥Ô @  ;9€¯5?d Èâlð¦> @  ;:€°5?d ãl îÖ @  ;;€±5?d HãlØB @  ;<€²5?d ˆãl5-¼ @  ;=€³5?d Èãló>« @  ;>€´5?d älêpX’ @  ;?€µ5?d HälÆâS @  ;@€¶5?d ˆälæèà­ @  ;A€·5?d Èäl¸ëº« @  ;B€¸5?d ålh£6C @  ;C€¹5?d Hål]•7× @  ;D€º5?d ˆål}`5) @  ;E€»5?d Èål»sŒ @  ;F€¼5?d æl&7,É @  ;G€½5?d Hælú‰Ê @  ;H€¾5?d ˆæl8‹4 @  ;I€¿5?d Èæln»Ÿ @  ;J€À5?d çl¾óû @  ;K€Á5?d Hçl‹Åo @  ;L€Â5?d ˆçl«0‘ @  ;M€Ã5?d Èçlm#©° @  ;N€Ä5?d èlYÜ%­ @  ;O€Å5?d Hèlʰ¾N @  ;P€Æ5?d ˆèlêE¼° @  ;Q€Ç5?d Èèl´Fæ¶ @  ;R€È5?d éldj^ @  ;S€É5?d HélQ8kÊ @  ;T€Ê5?d ˆélqÍi4 @  ;U€Ë5?d Èél·ÞÐ @  ;V€Ì5?d êl*špÔ @  ;W€Í5?d HêlWÕ× @  ;X€Î5?d ˆêl4¢×) @  ;Y€Ï5?d Èêlñïà @  ;Z€Ð5?d ëlß¹c+ @  ;[€Ñ5?d Hëlêb¿ @  ;\€Ò5?d ˆëlÊz`A @  ;]€Ó5?d Èël iÙ` @  ;^€Ô5?d ìl'*o @  ;_€Õ5?d Hìl—M–< @  ;`€Ö5?d ˆìl·¸” @  ;a€×5?d Èìlé»ÎÄ @  ;b€Ø5?d íl9óB, @  ;c€Ù5?d Híl ÅC¸ @  ;d€Ú5?d ˆíl,0AF @  ;e€Û5?d Èílê#øg @  ;f€Ü5?d îlwgX¦ @  ;g€Ý5?d HîlIªý¥ @  ;h€Þ5?d ˆîli_ÿ[ @  ;i€ß5?d ÈîlÏ»þm @  ;j€à5?d ïlór… @  ;k€á5?d Hïl*Ås @  ;l€â5?d ˆïl 0qï @  ;m€ã5?d ÈïlÌ#ÈÎ @  ;n€ä5?d ðlrýt| @  ;o€å5?d Hðlá‘ïŸ @  ;p€æ5?d ˆðlÁdía @  ;q€ç5?d ÈðlŸg·g @  ;r€è5?d ñlO/; @  ;s€é5?d Hñlz: @  ;t€ê5?d ˆñlZì8å @  ;u€ë5?d ÈñlœÿÄ @  ;v€ì5?d òl»! @  ;w€í5?d Hòl?v„ @  ;x€î5?d ˆòlƒ†ø @  ;y€ï5?d Èòl$о @  ;z€ð5?d ólô˜2ú @  ;{€ñ5?d HólÁ®3n @  ;|€ò5?d ˆólá[1 @  ;}€ó5?d Èól'Hˆ± @  ;~€ô5?d ôl>{¾ @  ;€õ5?d Hôlñ=ñN @  ;€€ö5?d ˆôlÑÈó° @  ;€÷5?d ÈôlË©¶ @  ;‚€ø5?d õl_ƒ%^ @  ;ƒ€ù5?d Hõljµ$Ê @  ;„€ú5?d ˆõlJ@&4 @  ;…€û5?d ÈõlŒSŸ @  ;†€ü5?d öl?Ô @  ;‡€ý5?d Höl/Úš× @  ;ˆ€þ5?d ˆöl/˜) @  ;‰€ÿ5?d Èöl‰¸µ @  ;Š€6?d ÷lYP4] @  ;‹€6?d H÷llf5É @  ;Œ€6?d ˆ÷lL“77 @  ;€6?d È÷lŠ€Ž @  ;Ž€6?d øl¾  @  ;€6?d Høl-™è @  ;€6?d ˆøl æ› @  ;‘€6?d ÈølSåÁ @  ;’€6?d ùlƒ­Mø @  ;“€ 6?d Hùl¶›Ll @  ;”€ 6?d ˆùl–nN’ @  ;•€ 6?d ÈùlP}÷³ @  ;–€ 6?d úlÍ9Wr @  ;—€ 6?d Húlóôòq @  ;˜€6?d ˆúlÓð @  ;™€6?d ÈúlèRÈe @  ;š€6?d ûl8D @  ;›€6?d Hûl ,E @  ;œ€6?d ˆûl-ÙGç @  ;€6?d ÈûlëÊþÆ @  ;ž€6?d ülò„ É @  ;Ÿ€6?d Hülp @  ; €6?d ˆülP³d @  ;¡€6?d Èüléb @  ;¢€6?d ýlÞPeŠ @  ;£€6?d Hýlëfd @  ;¤€6?d ˆýlË“fà @  ;¥€6?d Èýl €ßÁ @  ;¦€6?d þlÄ @  ;§€6?d Hþl® Ú @  ;¨€6?d ˆþlŽüØý @  ;©€6?d Èþl(ÙË @  ;ª€ 6?d ÿløPU# @  ;«€!6?d HÿlÍfT· @  ;¬€"6?d ˆÿlí“VI @  ;­€uÐm#6?d Èÿl+€ïh @  ;®€$6?d md4Ç™ @  ;¯€%6?d `m÷X\z @  ;°€&6?d  m×­^„ @  ;±€'6?d àm‰®‚ @  ;²€(6?d mYæˆj @  ;³€)6?d `mlЉþ @  ;´€*6?d  mL%‹ @  ;µ€+6?d àmŠ62! @  ;¶€,6?d mr’à @  ;·€-6?d `m)¿7ã @  ;¸€.6?d  m J5 @  ;¹€/6?d àm2 ÷ @  ;º€06?d mâQ @  ;»€16?d `m×g€‹ @  ;¼€26?d  m÷’‚u @  ;½€36?d àm1;T @  ;¾€46?d m(ÏÈ[ @  ;¿€56?d `m¢rš @  ;À€66?d  m$Wpd @  ;Á€76?d àmzT*b @  ;€86?d mª¦Š @  ;À96?d `mŸ*§ @  ;Ä€:6?d  m¿ß¥à @  ;Å€;6?d àmyÌÁ @  ;Æ€<6?d m䈼 @  ;Ç€=6?d `mÚE @  ;È€>6?d  mú°ý @  ;É€?6?d àm¬Ú @  ;Ê€@6?d m|Lƒ2 @  ;Ë€A6?d `mIz‚¦ @  ;Ì€B6?d  mi€X @  ;Í€C6?d àm¯œ9y @  ;΀D6?d m›cµd @  ;Ï€E6?d `m.‡ @  ;ЀF6?d  m(ú,y @  ;Ñ€G6?d àmvùv @  ;Ò€H6?d m¦±ú— @  ;Ó€I6?d ` m“‡û @  ;Ô€J6?d   m³rùý @  ;Õ€K6?d à mua@Ü @  ;Ö€L6?d mè%à @  ;×€M6?d ` mÖèE @  ;Ø€N6?d   möGà @  ;Ù€O6?d à mÍN  @  ;Ú€P6?d móâ @  ;Û€Q6?d ` m(0òv @  ;Ü€R6?d   mÅðˆ @  ;Ý€S6?d à mÎÖI© @  ;Þ€T6?d mטº¦ @  ;߀U6?d ` mUòõ @  ;à€V6?d   mu  @  ;á€W6?d à m+^  @  ;â€X6?d€ m}z\ @  <€Y6?d ` m©m3á @  <€Z6?d   m‰˜1 @  <€[6?d à mŠÂsÓ @  <€\6?d m†Ó @  <€]6?d `mçù)k @  <€^6?d  mÇ +• @  <€_6?d àm¯ZuÙ @  <€`6?d mù1 @  < €a6?d `mmH @  < €b6?d  m¯˜¶ @  < €c6?d àm¬ÂCz @  < €d6?d mÿÈ @  < €e6?d `mâc± @  <€f6?d  m–O @  <€g6?d àmÿ†<Ó @  <€h6?d m/ΰ; @  <€i6?d `mß±JB @  <€j6?d  mÿDH¼ @  <€k6?d àmü p @  <€l6?d maZª± @  <€m6?d `m‘%PÈ @  <€n6?d  m±ÐR6 @  <€o6?d àmD15¦ @  <€p6?d m”y¹N @  <€q6?d `mdC7 @  <€r6?d  mDóAÉ @  <€s6?d àmG© @  <€t6?d m^çð  @  <€u6?d `m®˜ s @  <€v6?d  mŽm @  <€w6?d àm¢{¡ @  < €x6?d mr3˜I @  <!€y6?d `m‚Lb0 @  <"€z6?d  m¢¹`Î @  <#€{6?d àm¡ã" @  <$€|6?d m<§‚à @  <%€}6?d `mÌØxº @  <&€~6?d  mì-zD @  <'€6?d àmiíe‹ @  <(€€6?d m¹¥éc @  <)€6?d `mIÚ @  <*€‚6?d  mi/ä @  <+€ƒ6?d àmjuS( @  <,€„6?d m^Šß5 @  <-€…6?d `m®õ%L @  <.€†6?d  mŽ'² @  </€‡6?d àm³. @  <0€ˆ6?d mcXÆ @  <1€‰6?d `m“'j¿ @  <2€Š6?d  m³ÒhA @  <3€‹6?d àm°ˆ* @  <4€Œ6?d m-ÌŠL @  <5€6?d `mݳp5 @  <6€Ž6?d  mýFrË @  <7€6?d àm§[ @  <8€6?d mØï™³ @  <9€‘6?d `m(cÊ @  <:€’6?d  mea4 @  <;€“6?d àm ?#ø @  <<€”6?d mqÐ÷ @  <=€•6?d `mâ*Ž @  <>€–6?d  mÂû(p @  <?€—6?d àm@ê2Î @  <@€˜6?d m¢¾& @  <A€™6?d `m`ÝD_ @  <B€š6?d  m@(F¡ @  <C€›6?d àmCrm @  <D€œ6?d mÞ6¤¬ @  <E€6?d `m.I^Õ @  <F€ž6?d  m¼\+ @  <G€Ÿ6?d àmfêg @  <H€ 6?d m¶¢Ž @  <I€¡6?d `mFÝtö @  <J€¢6?d  mf(vuÐ m @  <K€£6?d àmer4Ä @  <L€¤6?d 8 myê¢ @  <M€¥6?d x mäÛ @  <N€¦6?d ¸ mÄó% @  <O€§6?d ø mùã)¹ @  <P€¨6?d 8!m)«¥Q @  <Q€©6?d x!mÙÔ_( @  <R€ª6?d ¸!mù!]Ö @  <S€«6?d ø!mú{ @  <T€¬6?d 8"mg?¿Û @  <U€­6?d x"m—@E¢ @  <V€®6?d ¸"m·µG\ @  <W€¯6?d ø"mBT Ì @  <X€°6?d 8#m’¬$ @  <Y€±6?d x#mbcV] @  <Z€²6?d ¸#mB–T£ @  <[€³6?d ø#mAÌo @  <\€´6?d 8$mX‚å` @  <]€µ6?d x$m¨ý @  <^€¶6?d ¸$mˆç @  <_€·6?d ø$m¤Ë @  <`€¸6?d 8%mtV# @  <a€¹6?d x%m„)wZ @  <b€º6?d ¸%m¤Üu¤ @  <c€»6?d ø%m§†7h @  <d€¼6?d 8&m:—© @  <e€½6?d x&mʽmÐ @  <f€¾6?d ¸&mêHo. @  <g€¿6?d ø&mrN$s @  <h€À6?d 8'm¢¨› @  <i€Á6?d x'mRyRâ @  <j€Â6?d ¸'mrŒP @  <k€Ã6?d ø'mqÖÐ @  <l€Ä6?d 8(mE)žÍ @  <m€Å6?d x(mµVd´ @  <n€Æ6?d ¸(m•£fJ @  <o€Ç6?d ø(m¨³]Ö @  <p€È6?d 8)mxûÑ> @  <q€É6?d x)mˆ„+G @  <r€Ê6?d ¸)m¨q)¹ @  <s€Ë6?d ø)m«+ku @  <t€Ì6?d 8*m6oË´ @  <u€Í6?d x*mÆ1Í @  <v€Î6?d ¸*mæå33 @  <w€Ï6?d ø*mT£ @  <x€Ð6?d 8+mÃLØK @  <y€Ñ6?d x+m33"2 @  <z€Ò6?d ¸+mÆ Ì @  <{€Ó6?d ø+mœb @  <|€Ô6?d 8,m Ò‘ @  <}€Õ6?d x,mù­kv @  <~€Ö6?d ¸,mÙXiˆ @  <€×6?d ø,m¸C @  <€€Ø6?d 8-mhWÏï @  <€Ù6?d x-m˜(5– @  <‚€Ú6?d ¸-m¸Ý7h @  <ƒ€Û6?d ø-m»‡u¤ @  <„€Ü6?d 8.m&ÃÕe @  <…€Ý6?d x.mÖ¼/ @  <†€Þ6?d ¸.möI-â @  <‡€ß6?d ø.mžs® @  <ˆ€à6?d 8/mNWÿF @  <‰€á6?d x/m¾(? @  <Š€â6?d ¸/mžÝÁ @  <‹€ã6?d ø/m‡E  @  <Œ€ä6?d 80m#Yù¿ @  <€å6?d x0mÓ&Æ @  <Ž€æ6?d ¸0móÓ8 @  <€ç6?d ø0mÎÃ:¤ @  <€è6?d 81m‹¶L @  <‘€é6?d x1mîôL5 @  <’€ê6?d ¸1mÎNË @  <“€ë6?d ø1mÍ[  @  <”€ì6?d 82mP¬Æ @  <•€í6?d x2m `V¿ @  <–€î6?d ¸2m€•TA @  <—€ï6?d ø2mut3Ñ @  <˜€ð6?d 83m¥<¿9 @  <™€ñ6?d x3mUCE@ @  <š€ò6?d ¸3mu¶G¾ @  <›€ó6?d ø3mvìr @  <œ€ô6?d 84mo¢ö} @  <€õ6?d x4mŸÝ  @  <ž€ö6?d ¸4m¿(ú @  <Ÿ€÷6?d ø4m“>Ö @  < €ø6?d 85mCvž> @  <¡€ù6?d x5m³ dG @  <¢€ú6?d ¸5m“üf¹ @  <£€û6?d ø5m¦$u @  <¤€ü6?d 86m â„´ @  <¥€ý6?d x6mý~Í @  <¦€þ6?d ¸6mÝh|3 @  <§€ÿ6?d ø6m'Ï6ð @  <¨€7?d 87m÷‡º @  <©€7?d x7mø@a @  <ª€7?d ¸7m' BŸ @  <«€7?d ø7m$WS @  <¬€7?d 88m¨ŒN @  <­€7?d x8mà×v7 @  <®€7?d ¸8mÀ"tÉ @  <¯€7?d ø8mý2OU @  <°€7?d 89m-zý @  <±€ 7?d x9mÝ9Ä @  <²€ 7?d ¸9mýð;: @  <³€ 7?d ø9mþªyö @  <´€ 7?d 8:mcîÙ7 @  <µ€ 7?d x:m“‘#N @  <¶€7?d ¸:m³d!° @  <·€7?d ø:mF…F  @  <¸€7?d 8;m–ÍÊÈ @  <¹€7?d x;mf²0± @  <º€7?d ¸;mFG2O @  <»€7?d ø;mEpƒ @  <¼€7?d 8m÷× @  <Å€7?d x>m`k ® @  <Æ€7?d ¸>m@žP @  <Ç€7?d ø>m(ÈQ @  <È€ 7?d 8?mø€Ýô @  <É€!7?d x?mÿ' @  <Ê€"7?duÐ@m7 ¸?m( %s @  <Ë€#7?d ø?m+Pg¿ @  <Ì€$7?d P@mèü݃ @  <Í€%7?d @mºç2Ú @  <΀&7?d Ð@m8v% @  <Ï€'7?d AmW¿…® @  <Ѐ(7?d PAmÕ.’p @  <Ñ€)7?d Am‡5}) @  <Ò€*7?d ÐAm¤j÷ @  <Ó€+7?d Bm+Ÿ$ @  <Ô€,7?d PBm›ºˆú @  <Õ€-7?d BmÉ¡g£ @  <Ö€.7?d ÐBmK0p} @  <×€/7?d CmìŒÛ @  <Ø€07?d PCmn™› @  <Ù€17?d Cm<‚t\ @  <Ú€27?d ÐCm¾c‚ @  <Û€37?d Dm&–ÅŸ @  <Ü€47?d PDm¤ÒA @  <Ý€57?d Dmö= @  <Þ€67?d ÐDmt*Æ @  <߀77?d Em B­Ü @  <à€87?d PEmˆÓº @  <á€97?d EmÚÈU[ @  <â€:7?d€ ÐEm,š^# @  =€;7?d FmÑTãÙ @  =€<7?d PFmSÅô @  =€=7?d FmÄ—à³ @  =€>7?d ÐFmF÷m @  =€?7?d GmBkx| @  =€@7?d PGmÀúo¢ @  =€A7?d Gm\Sß @  =€B7?d ÐGmÞÂÈ_ @  = €C7?d Hm®¿ê½ @  = €D7?d PHm,.ýc @  = €E7?d Hm»|é× @  = €F7?d ÐHm9íþ  @  = €G7?d Im57?9 @  =€H7?d PIm·¦(ç @  =€I7?d Im†®¦$ @  =€J7?d ÐIm?±ú @  =€K7?d JmÝù¿Ä @  =€L7?d PJm_h¨ @  =€M7?d JmÈ:¼® @  =€N7?d ÐJmJ««p @  =€O7?d Km#!¬ @  =€P7?d PKm¡°r @  =€Q7?d Km=¯Q @  =€R7?d ÐKm¿ˆ¸ @  =€S7?d LmâDå @  =€T7?d PLm`Õò¡ @  =€U7?d Lm÷‡æ @  =€V7?d ÐLmuñË @  =€W7?d MmyÌ0û @  =€X7?d PMmû]'% @  =€Y7?d MmÛSŽV @  = €Z7?d ÐMmY™ˆ @  =!€[7?d Nm€—¶ @  ="€\7?d PNm•€h @  =#€]7?d Nm•Ç”Ü @  =$€^7?d ÐNmVƒ @  =%€_7?d Omãk @  =&€`7?d POmaúÜ @  ='€a7?d OmýS¾ÿ @  =(€b7?d ÐOm©! @  =)€c7?d Pm…ž»l @  =*€d7?d PPm¬² @  =+€e7?d Pm]¸ @  =,€f7?d ÐPm̯Ø @  =-€g7?d Qmnè @  =.€h7?d PQmœ‡y6 @  =/€i7?d Qm­÷õ @  =0€j7?d ÐQm/à+ @  =1€k7?d RmöØî @  =2€l7?d PRmtIùË @  =3€m7?d Rmãí @  =4€n7?d ÐRmaŠú¡ @  =5€o7?d SmY} @  =6€p7?d PSmŠ‘N£ @  =7€q7?d Sm8þ€ @  =8€r7?d ÐSm”©é^ @  =9€s7?d TmÉe´® @  =:€t7?d PTmKô£p @  =;€u7?d Tmܦ·Ä @  =<€v7?d ÐTm^7  @  ==€w7?d UmRía* @  =>€x7?d PUmÐ|vô @  =?€y7?d Um^uÙ @  =@€z7?d ÐUmÜäÎË @  =A€{7?d Vm"Àõ @  =B€|7?d PVm‡³×+ @  =C€}7?d Vmáß @  =D€~7?d ÐVm’pÔA @  =E€7?d Wm‹Û @  =F€€7?d PWm J @  =G€7?d Wm•ã¨? @  =H€‚7?d ÐWmr¿á @  =I€ƒ7?d Xmg @  =J€„7?d PXm垊Ý @  =K€…7?d XmrÌži @  =L€†7?d ÐXmð]‰· @  =M€‡7?d Ymü‡H‡ @  =N€ˆ7?d PYm~_Y @  =O€‰7?d YmOÑš @  =P€Š7?d ÐYmÍÆD @  =Q€‹7?d ZmIÈz @  =R€Œ7?d PZm–Øß¤ @  =S€7?d ZmŠË @  =T€Ž7?d ÐZmƒÜÎ @  =U€7?d [mê‘ @  =V€7?d P[mhhÌ @  =W€‘7?d [mô©Øï @  =X€’7?d Ð[mv8Ï1 @  =Y€“7?d \m+ô’Á @  =Z€”7?d P\m©e… @  =[€•7?d \m>7‘« @  =\€–7?d Ð\m¼¦†u @  =]€—7?d ]m°|GE @  =^€˜7?d P]m2íP› @  =_€™7?d ]mãùè @  =`€š7?d Ð]mrî6 @  =a€›7?d ^mI´à @  =b€œ7?d P^mË%÷Ö @  =c€7?d ^m\wãb @  =d€ž7?d Ð^mÞæô¼ @  =e€Ÿ7?d _m*Ûn¼ @  =f€ 7?d P_m¨Jyb @  =g€¡7?d _m4ãÉA @  =uÐ`mh€¢7?d Ð_m¶rÞŸ @  =i€£7?d (`mLÅø @  =j€¤7?d h`mΙÒ& @  =k€¥7?d ¨`mYËÆ’ @  =l€¦7?d è`mÛZÑL @  =m€§7?d (am×€| @  =n€¨7?d hamU¢ @  =o€©7?d ¨amd‰a @  =p€ª7?d èam戞¿ @  =q€«7?d (bm?N @  =r€¬7?d hbm½ß‡_ @  =s€­7?d ¨bm*“ë @  =t€®7?d èbm¨„5 @  =u€¯7?d (cmÁ–'é @  =v€°7?d hcmC07 @  =w€±7?d ¨cmß®€ @  =x€²7?d ècm]?—Ê @  =y€³7?d (dmóÊ: @  =z€´7?d hdm‚bÝä @  ={€µ7?d ¨dm0ÉP @  =|€¶7?d èdm—¡ÞŽ @  =}€·7?d (em›{¾ @  =~€¸7?d hemê` @  =€¹7?d ¨emtµ—° @  =€€º7?d èemö$€n @  =€»7?d (fm/âŽP @  =‚€¼7?d hfm­s™Ž @  =ƒ€½7?d ¨fm:!: @  =„€¾7?d èfm¸°šä @  =…€¿7?d (gm¼Ýõ @  =†€À7?d hgm>L+ @  =‡€Á7?d ¨gm¢å² @  =ˆ€Â7?d ègm t¥Ö @  =‰€Ã7?d (hmP ‡4 @  =Š€Ä7?d hhmÒ˜ê @  =‹€Å7?d ¨hmEÊ„^ @  =Œ€Æ7?d èhmÇ[“€ @  =€Ç7?d (imËR° @  =Ž€È7?d himIEn @  =€É7?d ¨imxË­ @  =€Ê7?d èimú‰Üs @  =‘€Ë7?d (jm#OÒM @  =’€Ì7?d hjm¡ÞÅ“ @  =“€Í7?d ¨jm6ŒÑ' @  =”€Î7?d èjm´Æù @  =•€Ï7?d (kmÝ—e% @  =–€Ð7?d hkm_rû @  =—€Ñ7?d ¨kmÃ¯ÂØ @  =˜€Ò7?d èkmA>Õ @  =™€Ó7?d (lmòˆö @  =š€Ô7?d hlmžcŸ( @  =›€Õ7?d ¨lm 1‹œ @  =œ€Ö7?d èlm‹ œB @  =€×7?d (mm‡z]r @  =ž€Ø7?d hmmëJ¬ @  =Ÿ€Ù7?d ¨mm%åãß @  = €Ú7?d èmm§tô @  =¡€Û7?d (nm~²ú? @  =¢€Ü7?d hnmü#íá @  =£€Ý7?d ¨nmkqùU @  =¤€Þ7?d ènméàî‹ @  =¥€ß7?d (omÝt‹ @  =¦€à7?d homŸLcU @  =§€á7?d ¨omåÓv @  =¨€â7?d èomtĨ @  =©€ã7?d (pm{(Öå @  =ª€ä7?d hpmù¹Á; @  =«€å7?d ¨pmnëÕ @  =¬€æ7?d èpmìzÂQ @  =­€ç7?d (qmà a @  =®€è7?d hqmb1¿ @  =¯€é7?d ¨qmS9š| @  =°€ê7?d èqmѨ¢ @  =±€ë7?d (rmnƒœ @  =²€ì7?d hrmŠÿ”B @  =³€í7?d ¨rm­€ö @  =´€î7?d èrmŸ<—( @  =µ€ï7?d (smö¶4ô @  =¶€ð7?d hsmt'#* @  =·€ñ7?d ¨sm莓  @  =¸€ò7?d èsmj„× @  =¹€ó7?d (tm7ÓÙ' @  =º€ô7?d htmµBÎù @  =»€õ7?d ¨tm"ÚM @  =¼€ö7?d ètm Í“ @  =½€÷7?d (um¬[ £ @  =¾€ø7?d hum.Ê} @  =¿€ù7?d ¨um Ã´œ @  =À€ú7?d èum"R£B @  =Á€û7?d (vmû”­| @  =€ü7?d hvmyº¢ @  =Àý7?d ¨vmîW® @  =Ä€þ7?d èvmlƹÈ @  =Å€ÿ7?d (wmï9¨ @  =Æ€8?d hwmm¨v @  =Ç€8?d ¨wmñ¡U @  =È€8?d èwms¶‹ @  =É€8?d (xmí”i @  =Ê€8?d hxm|ƒ· @  =Ë€8?d ¨xm.— @  =Ì€8?d èxm”¿€Ý @  =Í€8?d (ym˜eAí @  =΀8?d hymôV3 @  =Ï€ 8?d ¨ym+üØð @  =Ѐ 8?d èym©mÏ. @  =Ñ€ 8?d (zmp«Á @  =Ò€ 8?d hzmò:ÖÎ @  =Ó€ 8?d ¨zmehÂz @  =Ô€8?d èzmçùÕ¤ @  =Õ€8?d ({mŽsvx @  =Ö€8?d h{m âa¦ @  =×€8?d ¨{mKÑ… @  =Ø€8?d è{mÚÆ[ @  =Ù€8?d (|mO›« @  =Ú€8?d h|m͇Œu @  =Û€8?d ¨|mZÕ˜Á @  =Ü€8?d è|mØD @  =Ý€8?d (}mÔžN/ @  =Þ€8?d h}mVYñ @  =߀8?d ¨}mvð‚ @  =à€8?d è}môç\ @  =á€8?d (~m-Véb @  =â€8?d€ h~mn€ ¼ @  >€8?d ¨~m“U! @  >€8?d è~mšBÿ @  >€8?d (m«v# @  >€ 8?d hm)ç4Ì @  >€!8?d ¨muЀm'{üÛ• @  >€"8?d èmùmÌK @  >€#8?d @€mãߺ @  >€$8?d €€m=ÝD @  > €%8?d À€mÍi'= @  > €&8?d m!«Õ @  > €'8?d @m†k > @  > €(8?d €m¦žÀ @  > €)8?d ÀmVáò¹ @  >€*8?d ‚mË¥Rx @  >€+8?d @‚mn¥ŠÃ @  >€,8?d €‚mNPˆ= @  >€-8?d À‚m¾/rD @  >€.8?d ƒmngþ¬ @  >€/8?d @ƒm}=« @  >€08?d €ƒm°ˆ?U @  >€18?d Àƒm@÷Å, @  >€28?d „mY¹6# @  >€38?d @„mQÐx @  >€48?d €„mqíÒ† @  >€58?d À„m’(ÿ @  >€68?d …mQÚ¤ @  >€78?d @…mÊü @  >€88?d €…mêe @  >€98?d À…mý{ @  >€:8?d †m‡^]º @  >€;8?d @†m3X¢± @  > €<8?d €†m­ O @  >!€=8?d À†mãÒZ6 @  >"€>8?d ‡m3šÖÞ @  >#€?8?d @‡m g9 @  >$€@8?d €‡m€’;ê @  >%€A8?d À‡mpíÁ“ @  >&€B8?d ˆmDMŽ @  >'€C8?d @ˆmL³«Õ @  >(€D8?d €ˆmlF©+ @  >)€E8?d Àˆmœ9SR @  >*€F8?d ‰mLqߺ @  >+€G8?d @‰m×;~Q @  >,€H8?d €‰m÷Î|¯ @  >-€I8?d À‰m±†Ö @  >.€J8?d Šmšõ& @  >/€K8?d @Šm?õþ¬ @  >0€L8?d €ŠmüR @  >1€M8?d ÀŠmï+ @  >2€N8?d ‹m?7ŠÃ @  >3€O8?d @‹mÁ-IÄ @  >4€P8?d €‹máØK: @  >5€Q8?d À‹m§±C @  >6€R8?d ŒméBL @  >7€S8?d @ŒmH¤ @  >8€T8?d €Œm ½¦é @  >9€U8?d ÀŒmÐÂ\ @  >:€V8?d mŠÐx @  >;€W8?d @m›Àq“ @  ><€X8?d €m»5sm @  >=€Y8?d ÀmKJ‰ @  >>€Z8?d ŽmÖ)Õ @  >?€[8?d @ŽmÌÐL @  >@€\8?d €ŽmìúÒ² @  >A€]8?d ÀŽm…(Ë @  >B€^8?d mÌͤ# @  >C€_8?d @m¯`^ø @  >D€`8?d €m•\ @  >E€a8?d Àmê¦ @  >F€b8?d mÁ4Í @  >G€c8?d @mÉ•ü– @  >H€d8?d €mé`þh @  >I€e8?d Àm @  >J€f8?d ‘mÉWˆù @  >K€g8?d @‘mR) @  >L€h8?d €‘mrè+ì @  >M€i8?d À‘m‚—Ñ• @  >N€j8?d ’mÓqT @  >O€k8?d @’mºÓ©ï @  >P€l8?d €’mš&« @  >Q€m8?d À’mjYQh @  >R€n8?d “mºÝ€ @  >S€o8?d @“mD ‡ @  >T€p8?d €“mdþy @  >U€q8?d À“m”æ @  >V€r8?d ”mÏ @  >W€s8?d @”m…nóT @  >X€t8?d €”m¥›ñª @  >Y€u8?d À”mUä Ó @  >Z€v8?d •m…¬‡; @  >[€w8?d @•mæ&Ð @  >\€x8?d €•m>$. @  >]€y8?d À•mÎlÞW @  >^€z8?d –mS(~– @  >_€{8?d @–mç. @  >`€|8?d €–mÇÛƒc @  >a€}8?d À–m7¤y @  >b€~8?d —mçìõò @  >c€8?d @—mi×Nª @  >d€€8?d €—mI"LT @  >e€8?d À—m¹]¶- @  >f€‚8?d ˜m¢:0 @  >g€ƒ8?d @˜m…Ük @  >h€„8?d €˜m¥öÞ• @  >i€…8?d À˜mU‰$ì @  >j€†8?d ™m…Á¨ @  >k€‡8?d @™m‹ ï @  >l€ˆ8?d €™m>~  @  >m€‰8?d À™mÎñh @  >n€Š8?d šmSEQ© @  >o€‹8?d @šmöE‰ @  >p€Œ8?d €šmÖ°‹ì @  >q€8?d Àšm&Ïq• @  >r€Ž8?d ›mö‡ý} @  >s€8?d @›m>z @  >t€8?d €›m(h<„ @  >u€‘8?d À›mØÆý @  >v€’8?d œmÁY5ò @  >w€“8?d @œmÉøÓ© @  >x€”8?d €œmé ÑW @  >y€•8?d Àœmr+. @  >z€–8?d mÉ:§Æ @  >{€—8?d @mRp- @  >|€˜8?d €mr…Ó @  >}€™8?d Àm‚úþª @  >~€š8?d žm¾^k @  >€›8?d @žmæé—à @  >€€œ8?d €žmÆ•= @  >€8?d Àžm6coD @  >‚€ž8?d Ÿmæ+㬠@  >ƒ€Ÿ8?d @Ÿm…†w @  >„€ 8?d €Ÿm¥s‰ @  >…€¡8uРm?d ÀŸmU áð @  >†€¢8?d  m$?– @  >‡€£8?d X m,¦ÙÍ @  >ˆ€¤8?d ˜ m SÛ3 @  >‰€¥8?d Ø mü,!J @  >Š€¦8?d ¡m,d­¢ @  >‹€§8?d X¡m·. I @  >Œ€¨8?d ˜¡m—Û· @  >€©8?d Ø¡mg¤ôÎ @  >Ž€ª8?d ¢múàT @  >€«8?d X¢m_àŒ´ @  >€¬8?d ˜¢mŽJ @  >‘€­8?d Ø¢mjt3 @  >’€®8?d £m_"øÛ @  >“€¯8?d X£m¡8;Ü @  >”€°8?d ˜£mÍ9" @  >•€±8?d Ø£mq²Ã[ @  >–€²8?d ¤mhü0T @  >—€³8?d X¤m`]Ö @  >˜€´8?d ˜¤m@¨Ôñ @  >™€µ8?d ؤm°×.ˆ @  >š€¶8?d ¥m`Ÿ¢` @  >›€·8?d X¥mûÕ‹ @  >œ€¸8?d ˜¥mÛ u @  >€¹8?d Ø¥m+_û  @  >ž€º8?d ¦m¶[Í @  >Ÿ€»8?d X¦m¤Æ @  > €¼8?d ˜¦m"è¦8 @  >¡€½8?d ئmÒ—\A @  >¢€¾8?d §mßЩ @  >£€¿8?d X§m‘"?c @  >¤€À8?d ˜§m±×= @  >¥€Á8?d اmA¨Çä @  >¦€Â8?d ¨muWKù @  >§€Ã8?d X¨m}ö­¢ @  >¨€Ä8?d ˜¨m]¯\ @  >©€Å8?d بm­|U% @  >ª€Æ8?d ©m}4ÙÍ @  >«€Ç8?d X©mæ~x& @  >¬€È8?d ˜©mÆ‹zØ @  >­€É8?d Ø©m6ô€¡ @  >®€Ê8?d ªm«° ` @  >¯€Ë8?d Xªm°øÛ @  >°€Ì8?d ˜ªm.Eú% @  >±€Í8?d تmÞ:\ @  >²€Î8?d «mrŒ´ @  >³€Ï8?d X«mðhO³ @  >´€Ð8?d ˜«mÐMM @  >µ€Ñ8?d Ø«m â·4 @  >¶€Ò8?d ¬m9¬D; @  >·€Ó8?d X¬m1 ¢` @  >¸€Ô8?d ˜¬mø ž @  >¹€Õ8?d جmá‡Zç @  >º€Ö8?d ­m1ÏÖ @  >»€×8?d X­mª…wä @  >¼€Ø8?d ˜­mŠpu @  >½€Ù8?d Ø­mzc @  >¾€Ú8?d ®mçK/¢ @  >¿€Û8?d X®mýJÖ; @  >À€Ü8?d ˜®mÝ¿ÔÅ @  >Á€Ý8?d Ø®m-À.¼ @  >€Þ8?d ¯mýˆ¢T @  >Àß8?d X¯mž%X @  >Ä€à8?d ˜¯m¾ÐZq @  >Å€á8?d دmN¯  @  >Æ€â8?d °mðqº @  >Ç€ã8?d X°møÐúá @  >È€ä8?d ˜°mØ%ø @  >É€å8?d ذm(Zf @  >Ê€æ8?d ±møŽŽ @  >Ë€ç8?d X±mcX/e @  >Ì€è8?d ˜±mC­-› @  >Í€é8?d رm³Ò×â @  >΀ê8?d ²m.–w# @  >Ï€ë8?d X²m‹–¯˜ @  >Ѐì8?d ˜²m«c­f @  >Ñ€í8?d زm[W @  >Ò€î8?d ³m‹TÛ÷ @  >Ó€ï8?d X³muNð @  >Ô€ð8?d ˜³mU» @  >Õ€ñ8?d سm¥Äàw @  >Ö€ò8?d ´m¼Šx @  >×€ó8?d X´m´+õ# @  >Ø€ô8?d ˜´m”Þ÷Ý @  >Ù€õ8?d Ø´md¡ ¤ @  >Ú€ö8?d µm´éL @  >Û€÷8?d Xµm/£ § @  >Ü€ø8?d ˜µmV"Y @  >Ý€ù8?d صmÿ)Ø  @  >Þ€ú8?d ¶mbmxá @  >߀û8?d X¶mÖk‡ê @  >à€ü8?d ˜¶möž… @  >á€ý8?d ضmám @  >â€þ8?d€ ·m¢jï# @  ?€ÿ8?d X·m²wI^ @  ?€9?d ˜·m’‚K  @  ?€9?d Ø·m§´J4 @  ?€9?d ¸m“KÆ) @  ?€9?d X¸mUX @  ?€9?d ˜¸mu­}ö @  ?€9?d ظmK`Øõ @  ?€9?d ¹m›(T @  ? €9?d X¹mÅ+ @  ? €9?d ˜¹måÞ å @  ? € 9?d عmÐè q @  ? € 9?d ºmM¬­° @  ? € 9?d Xºm‹¿‘ @  ?€ 9?d ˜ºm«Jo @  ?€ 9?d غm8&Œ @  ?€9?d »mènd @  ?€9?d X»mÓ=9Ž @  ?€9?d ˜»móÈ;p @  ?€9?d Ø»mÆþ:ä @  ?€9?d ¼mß°Éë @  ?€9?d X¼m£pÊ @  ?€9?d ˜¼m9Vr4 @  ?€9?d ؼm›×7 @  ?€9?d ½m×Ó[ß @  ?€9?d X½m‰ÐÙ @  ?€9?d ˜½m©%' @  ?€9?d ؽmœ³ @  ?€9?d ¾mW¢r @  ?€9?d X¾mÇDS @  ?€9?d ˜¾mç±­ @  ?€9?d ؾmeÛ¥þ @  ? €9?d ¿mµ“) @  ?!€9?d X¿mw(  @  ?"€ 9?d ˜¿m3‚*Þ @uÐÀm  ?#€!9?d Ø¿m´+J @  ?$€"9?d 0ÀmbDz @  ?%€#9?d pÀm~W @  ?&$9?d °Àm;‹Un @  ?'%9?d ðÀmFðm @  ?(&9?d 0ÁmÕ|… @  ?)'9?d pÁmI¤ÁV @  ?*(9?d °ÁmiQè @  ?+)9?d ðÁme é @  ?, *9?d 0Âmøä¾( @  ?- +9?d pÂm>÷  @  ?. ,9?d °Âm÷ @  ?/ -9?d ðÂmnž @  ?0 .9?d 0Ãm]&ü @  ?1 /9?d pÃmfu* @  ?2 09?d °ÃmF€(è @  ?3 19?d ðÃms¶)| @  ?4 29?d 0Äm‘–ás @  ?539?d pÄmW…XR @  ?649?d °ÄmwpZ¬ @  ?759?d ðÄm²Óį @  ?8 69?d 0Åmb›HG @  ?9 79?d pÅm<˜A @  ?: 89?d °Åmm¿ @  ?; 99?d ðÅm)[+ @  ?< :9?d 0Æm´±ê @  ?= ;9?d pÆmr Ë @  ?> <9?d °ÆmRù 5 @  ?? =9?d ðÆm…ú‹ô @  ?@>9?d 0ÇmU² @  ?A?9?d pÇm; @  ?B@9?d °Çm#óÅ @  ?CA9?d ðÇmÅQ @  ?DB9?d 0Èm":œL @  ?EC9?d pÈmä)%m @  ?FD9?d °ÈmÄÜ'“ @  ?GE9?d ðÈmú‚ @  ?HF9?d 0Ém*Yx @  ?IG9?d pÉmtZT~ @  ?JH9?d °ÉmT¯V€ @  ?KI9?d ðÉma™W @  ?LJ9?d 0ÊmüÝ÷Õ @  ?MK9?d pÊm:ÎNô @  ?NL9?d °Êm;L  @  ?OM9?d ðÊm‰W×é @  ?PN9?d 0ËmY[ @  ?QO9?d pËmbLcë @  ?RP9?d °ËmB¹a @  ?SQ9?d ðËmw` @  ?TR9?d 0ÌmnÁ“Ž @  ?US9?d pÌm¨Ò*¯ @  ?VT9?d °Ìmˆ'(Q @  ?WU9?d ðÌm¶êR @  ?XV9?d 0Ímf¢º @  ?YW9?d pÍm8¡[¼ @  ?ZX9?d °ÍmTYB @  ?[Y9?d ðÍm-bXÖ @  ?\Z9?d 0Îm°&ø @  ?][9?d pÎmv5A6 @  ?^\9?d °ÎmVÀCÈ @  ?_]9?d ðÎmÔªÿ› @  ?`^9?d 0Ïmâss @  ?a_9?d pÏm¢rE @  ?b`9?d °Ïm‚óp» @  ?ca9?d ðÏm·Åq/ @  ?db9?d 0Ðm Í @  ?ec9?d pÐmÏt¼ @  ?fd9?d °ÐmïývB @  ?ge9?d ðÐmÑ0ÓA @  ?hf9?d 0Ñmx_© @  ?ig9?d pÑm_{¯ @  ?jh9?d °ÑmŽQ @  ?ki9?d ðÑmJ¸Å @  ?lj9?d 0Òm×ü¦ @  ?mk9?d pÒmï% @  ?nl9?d °Òm1Û @  ?om9?d ðÒm¢v†8 @  ?pn9?d 0Ómr> Ð @  ?qo9?d pÓmIm2: @  ?rp9?d °Ómi˜0Ä @  ?sq9?d ðÓm\®1P @  ?tr9?d 0ÔmEàÂ_ @  ?us9?d pÔmƒó{~ @  ?vt9?d °Ôm£y€ @  ?wu9?d ðÔmË܃ @  ?xv9?d 0ÕmMƒPk @  ?yw9?d pÕm€ m @  ?zx9?d °Õm3u“ @  ?{y9?d ðÕmC  @  ?|z9?d 0Öm›©Æ @  ?}{9?d pÖm]ç @  ?~|9?d °Öm}á @  ?}9?d ðÖm²Ú˜é @  ?€~9?d 0×mb’ @  ?9?d p×m)àT´ @  ?‚€9?d °×m VJ @  ?ƒ9?d ð×m<#WÞ @  ?„‚9?d 0ØmÜÛà @  ?…ƒ9?d pØmÎÏbâ @  ?†„9?d °Ømî:` @  ?‡…9?d ðØmÐ÷Å @  ?ˆ†9?d 0Ùm¿I÷ @  ?‰‡9?d pÙm^¼ñ @  ?Šˆ9?d °Ùm~I @  ?‹‰9?d ðÙmK› @  ?ŒŠ9?d 0ÚmÖ;°Z @  ?‹9?d pÚm( { @  ?ŽŒ9?d °Úm0Ý … @  ?9?d ðÚm£±f @  ?Ž9?d 0ÛmsùŽ @  ?‘9?d pÛmHª$d @  ?’9?d °Ûmh_&š @  ?“‘9?d ðÛm]i' @  ?”’9?d 0ÜmD'Ô @  ?•“9?d pÜm‚4m  @  ?–”9?d °Üm¢ÁoÞ @  ?—•9?d ðÜmœ ÊÝ @  ?˜–9?d 0ÝmLDF5 @  ?™—9?d pÝmG3 @  ?š˜9?d °Ým2²Í @  ?›™9?d ðÝm„Y @  ?œš9?d 0ÞmšÀ¿˜ @  ?›9?d pÞm\Ó¹ @  ?žœ9?d °Þm|&G @  ?Ÿ9?d ðÞmþL¸ @  ? ž9?d 0ßm.4ü @  ?¡Ÿ9?d pßmˆà5Ê @  ?¢ 9?d uÐàm/°ßm¨74 @  ?£¡9?d ðßm#6  @  ?¤¢9?d Hàm„‡hV @  ?¥£9?d ˆàmàðÄW @  ?¦¤9?d ÈàmbaÓ‰ @  ?§¥9?d ámuí¼ @  ?¨¦9?d HámŒäúb @  ?©§9?d ˆámpƒµD @  ?ª¨9?d Èámò¢š @  ?«©9?d âmØñ @  ?¬ª9?d HâmZ`Ï @  ?­«9?d ˆâm>¯Î @  ?®¬9?d Èâm¼†¸ @  ?¯­9?d ãm}3¸Å @  ?°®9?d Hãmÿ¢¯ @  ?±¯9?d ˆãmf•‚Ñ @  ?²°9?d Èãmä• @  ?³±9?d ämJípJ @  ?´²9?d HämÈ|g” @  ?µ³9?d ˆäm¬ Ë• @  ?¶´9?d Èäm.šÜK @  ?·µ9?d åmBŽâ~ @  ?¸¶9?d HåmÀõ  @  ?¹·9?d ˆåmÁf @  @ã9?d ˆðm~–Š @  @ä9?d Èðmü‘T @  @å9?d ñm^7à @  @æ9?d Hñmܦ÷Å @  @ç9?d ˆñmîsç™ @  @è9?d ÈñmlâðG @  @ é9?d òmƒH½! @  @ ê9?d HòmÙªÿ @  @ ë9?d ˆòm çý @  @ ì9?d Èòm"vêÍ @  @ í9?d óm€Ð‹‚ @  @î9?d HómAœ\ @  @ï9?d ˆómøeÐ  @  @ð9?d ÈómzôÇÒ @  @ñ9?d ômTÙz @  @ò9?d Hôm“ÅΤ @  @ó9?d ˆôm2û™H @  @ô9?d Èôm°jŽ– @  @õ9?d õmÌïÙ @  @ö9?d Hõm]ø @  @÷9?d ˆõm¢ˆè[ @  @ø9?d Èõm ÿ… @  @ù9?d ömϳ²ã @  @ú9?d HömM"¥= @  @û9?d ˆömìòÑ @  @ü9?d Èömnå @  @ý9?d ÷mÌ+„@ @  @þ9?d H÷mNº“ž @  @ÿ9?d ˆ÷müà @  @ :?d È÷mšm÷Ö @  @!:?d ømÜ|–l @  @":?d Høm^í² @  @#:?d ˆømÿÓÖ^ @  @$:?d Èøm}BÁ€ @  @%:?d ùmßä Ï @  @&:?d Hùm]u· @  @':?d ˆùmo §M @  @(:?d Èùmí1°“ @  @) :?d úm›ýõ @  @* :?d Húm€ ê+ @  @+ :?d ˆúm!4½Ç @  @, :?d Èúm£¥ª @  @- :?d ûmËV @  @.:?d Hûmƒ’܈ @  @/:?d ˆûmy¶Ø @  @0:?d Èûmû'‡ @  @1:?d üm‡™® @  @2:?d HümŽp @  @3:?d ˆüm³(Ùœ @  @4:?d Èüm1¹ÎB @  @5:?d ým“¯  @  @6:?d HýmޏÓ @  @7:?d ˆým#[¨ @  @8:?d Èým¡Ê¿Q @  @9:?d þmN`ò7 @  @::?d HþmÌñåé @  @;:?d ˆþmmϲ @  @<:?d Èþmï^¥Û @  @=:?d ÿmMøÄ” @  @>:?d HÿmÏiÓJ @  @?:?d ˆÿmû‡ä @  @@uÐn :?d ÈÿmWÃwï @  @A!:?d n!ÜÒ_ @  @B":?d `n£MÅ @  @C#:?d  ns’m @  @D$:?d àn€â…³ @  @E%:?d n"Däü @  @F&:?d `n Õó" @  @G':?d  n’ã~ @  @H(:?d àn‘ô  @  @I):?d nÿ;¹Æ @  @J*:?d `n}ª® @  @K+:?d  nÜ”ùô @  @L,:?d àn^î* @  @M-:?d nü£e @  @N.:?d `n~2˜» @  @O/:?d  n„Ôë @  @P0:?d àn‡Ã5 @  @Q1:?d nm'Ý @  @R2:?d `nï¶ÊC @  @S3:?d  nNˆ¯ @  @T4:?d ànÌŠq @  @U5:?d nn¿ë> @  @V6:?d `nì.üà @  @W7:?d  nÞûì¼ @  @X8:?d àn\jûb @  @Y9:?d n³À¶ @  @Z::?d `n1Q¡Ú @  @[;:?d  noö6 @  @\<:?d ànþáè @  @]=:?d n°X€§ @  @^>:?d `n2É—y @  @_?:?d  n´ ÐT @  @`@:?d àn6ÇŠ @  @aA:?d npŒ¦0 @  @bB:?d `nò±î @  @cC:?d  nS#æ @  @dD:?d ànѲñÜ @  @eE:?d ns“ @  @fF:?d ` nñ…‡M @  @gG:?d   nÃP— @  @hH:?d à nAÁ€Ï @  @iI:?d n®kÍ© @  @jJ:?d ` n,úÚw @  @kK:?d   nÄ› @  @lL:?d à nUšE @  @mM:?d n­óû  @  @nN:?d ` n/bìÔ @  @oO:?d   nÕF „ @  @pP:?d à nW×·Z @  @qQ:?d n®O @  @´”:?d àn·¯¹‘ @  @µ•:?d n ØÞ @  @¶–:?d `n—˜Ï @  @·—:?d  n¥Mß\ @  @¸˜:?d àn'ÜÈ‚ @  @¹™:?d nÈv…ä @  @ºš:?d `nJç’: @  @»›:?d  nëÙÅÖ @  @¼œ:?d àniHÒ @  @½:?d nËî³G @  @¾ž:?d `nI¤™ @  @¿Ÿ:?d  n¨*,âuÐ n @  @À  :?d àn|çé @  @Á¡:?d 8 n™Ô( @  @¢:?d x n’Ãö @  @ã:?d ¸ n36” @  @Ĥ:?d ø n±§ƒÄ @  @Å¥:?d 8!nâ‹ @  @Ʀ:?d x!n‘õU @  @ǧ:?d ¸!n£Eå  @  @Ȩ:?d ø!n!Ôò× @  @É©:?d 8"nÎ~¿± @  @ʪ:?d x"nLï¨o @  @Ë«:?d ¸"níÑÿƒ @  @̬:?d ø"no@è] @  @Í­:?d 8#nÍæ‰ @  @ή:?d x#nOwžÌ @  @ϯ:?d ¸#nµSÒœ @  @а:?d ø#n7ÂÅB @  @ѱ:?d 8$n\bÛê @  @Ò²:?d x$nÞóÌ4 @  @Ó³:?d ¸$nÍ›Ø @  @Ô´:?d ø$ný\Œ @  @Õµ:?d 8%n_úíI @  @Ö¶:?d x%nÝkú— @  @×·:?d ¸%nï¾êË @  @ظ:?d ø%nm/ý @  @Ù¹:?d 8&n‚…°s @  @Úº:?d x&n§­ @  @Û»:?d ¸&n¡*ðA @  @ܼ:?d ø&n#»çŸ @  @ݽ:?d 8'n†Ð @  @Þ¾:?d x'nŒ‘ @  @ß¿:?d ¸'n…IÖ# @  @àÀ:?d ø'nØÁý @  @áÁ:?d 8(nAÉ G @  @âÂ:?d€ x(n·›«? @  AÃ:?d ¸(n÷ä´ú @  AÄ:?d ø(nuu£$ @  AÅ:?d 8)nš9† @  AÆ:?d x)n .X @  AÇ:?d ¸)nlla~ @  AÈ:?d ø)nîýv  @  AÉ:?d 8*nÏåd¼ @  AÊ:?d x*nMtsb @  A Ë:?d ¸*n)ßc @  A Ì:?d ø*n«’Ƚ @  A Í:?d 8+nÌ}R @  A Î:?d x+nNìEÁ @  A Ï:?d ¸+n×Ûh  @  AÐ:?d ø+nUJÕ @  AÑ:?d 8,n]ùç @  AÒ:?d x,nßh9 @  AÓ:?d ¸,n»»8 @  AÔ:?d ø,n9ެæ @  AÕ:?d 8-n^a6D @  AÖ:?d x-nÜð!š @  A×:?d ¸-n —n¼ @  AØ:?d ø-n¢yb @  AÙ:?d 8.nƒk~ @  AÚ:?d x.n|  @  AÛ:?d ¸.neøÐ¡ @  AÜ:?d ø.nçiÇ @  AÝ:?d 8/n€†]Ý @  AÞ:?d x/nJ @  Aß:?d ¸/n—^ @  Aà:?d ø/n„IË @  Aá:?d 80n:#^ô @  A â:?d x0n¸²I* @  A!ã:?d ¸0nÜÅå+ @  A"ä:?d ø0n^Tòõ @  A#å:?d 81n9»hW @  A$æ:?d x1n»*‰ @  A%ç:?d ¸1nGM0¯ @  A&è:?d ø1nÅÜ'q @  A'é:?d 82näÄ5m @  A(ê:?d x2nfU"³ @  A)ë:?d ¸2n"޲ @  A*ì:?d ø2n€³™l @  A+í:?d 83nç\Î @  A,î:?d x3neÍ @  A-ï:?d ¸3nüú9Ú @  A.ð:?d ø3n~k. @  A/ñ:?d 84nvØQ6 @  A0ò:?d x4nôIFè @  A1ó:?d ¸4n>êé @  A2ô:?d ø4n¯ý7 @  A3õ:?d 85nu@g• @  A4ö:?d x5n÷ÑpK @  A5÷:?d ¸5n ¶?m @  A6ø:?d ø5n‰'(³ @  A7ù:?d 86n¨?:¯ @  A8ú:?d x6n*®-q @  A9û:?d ¸6nNÙp @  A:ü:?d ø6nÌH–® @  A;ý:?d 87n«§  @  A<þ:?d x7n)6Ò @  A=ÿ:?d ¸7n¿GK @  A>;?d ø7n=Ö • @  A?;?d 88n§Õ-— @  A@;?d x8n%D:I @  AA;?d ¸8nA3–H @  AB;?d ø8nâ– @  AC;?d 89n¤M4 @  AD;?d x9n&Ü ê @  AE;?d ¸9nÚ»CÌ @  AF;?d ø9nX*T @  AG ;?d 8:ny2F @  AH ;?d x:nû£QÐ @  AI ;?d ¸:nŸÔýÑ @  AJ ;?d ø:nEê @  AK ;?d 8;nzªp­ @  AL;?d x;nø;gs @  AM;?d ¸;na J¹ @  AN;?d ø;nã]g @  AO;?d 8n • @  AX ;?d x>nŽŸ‚Ç @  AY ;?d ¸>nêè.Æ @  AZ ;?d ø>nhy9 @  A[ ;?d 8?n–£º @  A\ ;?d x?n´d @  A] ;?duÐ@n7 ¸?n‰‡ r @  A^  ;?d ø?n2Ñky @  A_!;?d P@nñ†zÈ @  A`";?d @nÑsx6 @  Aa#;?d Ð@n`Á @  Ab$;?d AnÇ(Mÿ @  Ac%;?d PAnòLk @  Ad&;?d AnÒëN• @  Ae';?d ÐAnŒè“ @  Af(;?d Bn¬´R @  Ag);?d PBn/aQ @  Ah*;?d Bn”¯ @  Ai+;?d ÐBnɇªŽ @  Aj,;?d CnÏ&f @  Ak-;?d PCn,ù'ò @  Al.;?d Cn %  @  Am/;?d ÐCn7_æ @  An0;?d Dn.îé @  Ao1;?d PDn½}u  @  Ap2;?d Dnˆwô @  Aq3;?d ÐDn[›ÎÕ @  Ar4;?d En‹ÓB= @  As5;?d PEn¾åC© @  At6;?d EnžAW @  Au7;?d ÐEnÀQ @  Av8;?d Fn]W» @  Aw9;?d PFncš“ @  Ax:;?d FnCom @  Ay;;?d ÐFn…|¥L @  Az<;?d GnU4)¤ @  A{=;?d PGn`(0 @  A|>;?d Gn@÷*Î @  A}?;?d ÐGnC>é @  A~@;?d Hn"¼²ô @  AA;?d PHní‡8 @  A€B;?d HnÍr:ú @  AC;?d ÐHn aƒÛ @  A‚D;?d InÛ)3 @  AƒE;?d PInî§ @  A„F;?d InÎê Y @  A…G;?d ÐInéV_ @  A†H;?d Jn ­öž @  A‡I;?d PJn3`S @  AˆJ;?d Jn•Qc @  A‰K;?d ÐJnÕ†èB @  AŠL;?d KnÎdª @  A‹M;?d PKn0øe> @  AŒN;?d Kn gÀ @  AO;?d ÐKn+^_* @  AŽP;?d Ln2¬% @  AQ;?d PLn¡|7Æ @  AR;?d Ln‰58 @  A‘S;?d ÐLnGšŒ @  A’T;?d Mn—Òñ @  A“U;?d PMn¢äe @  A”V;?d Mn‚› @  A•W;?d ÐMnÜY @  A–X;?d NnAVù\ @  A—Y;?d PNn›\_ @  A˜Z;?d Nn_n^¡ @  A™[;?d ÐNn™}ç€ @  Aš\;?d OnI5kh @  A›];?d POn|jü @  Aœ^;?d On\öh @  A_;?d ÐOnúi4 @  Až`;?d PnDÌÕ† @  AŸa;?d PPnƦiÕ @  A b;?d PnæSk+ @  A¡c;?d ÐPn @Ò  @  A¢d;?d Qnð^â @  A£e;?d PQnÅ>_v @  A¤f;?d QnåË]ˆ @  A¥g;?d ÐQn»ÈŽ @  A¦h;?d Rn&Œ§O @  A§i;?d PRnAL @  A¨j;?d Rn8´² @  A©k;?d ÐRnþ§¹“ @  Aªl;?d Sn.ï5{ @  A«m;?d PSnÙ4ï @  A¬n;?d Sn;,6 @  A­o;?d ÐSnû @  A®p;?d Tn1ýô @  A¯q;?d PTnŠ]f @  A°r;?d Tnª¨dé @  A±s;?d ÐTnl»ÝÈ @  A²t;?d Un¼óQ  @  A³u;?d PUn‰ÅP´ @  A´v;?d Un©0RJ @  Aµw;?d ÐUn÷3L @  A¶x;?d Vnjw¨ @  A·y;?d PVnTº Ž @  A¸z;?d VntOp @  A¹{;?d ÐVn²\¶Q @  Aº|;?d Wnb:¹ @  A»};?d PWnW";- @  A¼~;?d Wnw×9Ó @  A½;?d ÐWn<¥yf @  A¾€;?d XnZõ{ @  A¿;?d PXn$7Oº @  AÀ‚;?d XnÂMD @  AÁƒ;?d ÐXnÂÑôe @  A„;?d Yn™x @  AÃ…;?d PYn'¯y @  AĆ;?d YnZ{ç @  AŇ;?d ÐYnYY!á @  Aƈ;?d ZnÄ  @  Alj;?d PZnúÐ$# @  AÈŠ;?d ZnÚ%&Ý @  AÉ‹;?d ÐZn6Ÿü @  AÊŒ;?d [nÌ~ @  AË;?d P[nùH€ @  AÌŽ;?d [nÙ½~ @  AÍ;?d Ð[nâî(” @  AÎ;?d \nû Û› @  AÏ‘;?d P\nhÌ@x @  AÐ’;?d \nH9B† @  AÑ“;?d Ð\nŽ*û§ @  AÒ”;?d ]n^bwO @  AÓ•;?d P]nkTvÛ @  AÔ–;?d ]nK¡t% @  AÕ—;?d Ð]n¢.# @  AÖ˜;?d ^nˆæŽâ @  A×™;?d P^n¶++á @  AØš;?d ^n–Þ) @  AÙ›;?d Ð^nPÍ> @  AÚœ;?d _n€…Ö @  AÛ;?d P_nµ³B @  AÜž;?d _n•F¼ @  AuÐ`nÝŸ;?d Ð_n3¢Š @  AÞ ;?d (`nZ« @  Aß¡;?d h`n0A @  Aà¢;?d ¨`n/Å¿ @  Aá£;?d è`néÖ¬ž @  Aâ¤;?d€ (anøÙ×v @  B¥;?d han,®žË @  B¦;?d ¨an [œ5 @  B§;?d èan—=Þ @  B¨;?d (bn U @  B©;?d hbnú*gf @  Bª;?d ¨bnÚße˜ @  B«;?d èbnÒ~ƒÃ @  B¬;?d (cn6+ @  B ­;?d hcnòIõR @  B ®;?d ¨cnÒ¼÷¬ @  B ¯;?d ècn,¦4« @  B °;?d (dn5èǤ @  B ±;?d hdnÅ—=Ý @  B²;?d ¨dnåb?# @  B³;?d èdn@bç˜ @  B´;?d (en*kp @  Bµ;?d hen`U‘  @  B¶;?d ¨en@ “÷ @  B·;?d èenÛê2 @  B¸;?d (fnF®’Ý @  B¹;?d hfn¶Ñh¤ @  Bº;?d ¨fn–$jZ @  B»;?d èfnž…Œ @  B¼;?d (gnNÍé @  B½;?d hgn¾²ú @  B¾;?d ¨gnžGøn @  B¿;?d ègn º¤ @  BÀ;?d (hn9E›¹ @  BÁ;?d hhnÉ:aÀ @  BÂ;?d ¨hnéÏc> @  BÃ;?d èhn]Éœ5 @  B Ä;?d (inÝ @  B!Å;?d hin}þê¤ @  B"Æ;?d ¨in] èZ @  B#Ç;?d èinÆAI± @  B$È;?d (jn[ép @  B%É;?d hjn«z  @  B&Ê;?d ¨jn‹÷ @  B'Ë;?d èjnƒ.÷¬ @  B(Ì;?d (knSf{D @  B)Í;?d hkn£= @  B*Î;?d ¨knƒìƒÃ @  B+Ï;?d èkn}ö@Ä @  B,Ð;?d (lnd¸³Ë @  B-Ñ;?d hln”ÇI² @  B.Ò;?d ¨ln´2KL @  B/Ó;?d èln2“÷ @  B0Ô;?d (mnÁz @  B1Õ;?d hmn1åf @  B2Ö;?d ¨mnðç˜ @  B3×;?d èmnŠºFs @  B4Ø;?d (nnþæ² @  B5Ù;?d hnnçË @  B6Ú;?d ¨nnÇt5 @  B7Û;?d ènnÏÕøn @  B8Ü;?d (ont† @  B9Ý;?d honïâŽÿ @  B:Þ;?d ¨onÏŒ @  B;ß;?d èon¬ºvÚ @  B<à;?d (pndÊh @  B=á;?d hpnâ0 @  B>â;?d ¨pnÂî2ï @  B?ã;?d èpnØïËv @  B@ä;?d (qn§Gž @  BAå;?d hqnøØ½ç @  BBæ;?d ¨qnØ-¿ @  BCç;?d èqnCgò @  BDè;?d (rnÞ#¾3 @  BEé;?d hrn.\DJ @  BFê;?d ¨rn©F´ @  BGë;?d èrn ï @  BHì;?d (snÖ@, @  BIí;?d hsn&?Ö~ @  BJî;?d ¨snÊÔ€ @  BKï;?d èsnøÐ‡ @  BLð;?d (tnážäˆ @  BMñ;?d htnáñ @  BNò;?d ¨tn1 @  BOó;?d ètn”Ä´ @  BPô;?d (unD\H\ @  BQõ;?d hun´#²% @  BRö;?d ¨un”Ö°Û @  BS÷;?d èunœ0 @  BTø;?d (vn’رñ @  BUù;?d hvnb§Kˆ @  BVú;?d ¨vnBRIv @  BWû;?d èvnJó¯- @  BXü;?d (wnš»#Å @  BYý;?d hwnjÄÙ¼ @  BZþ;?d ¨wnJ1ÛB @  B[ÿ;?d èwn‡d € @  B\<?d (xn³›† @  B]<?d hxnCä|ä @  B^<?d ¨xnc~ @  B_<?d èxn× @  B`<?d (yn_ ù @  Ba<?d hyn÷ ÷€ @  Bb<?d ¨yn×Õõ~ @  Bc<?d èynLŸT• @  Bd<?d (znÑÛôT @  Be <?d hzn!¤- @  Bf <?d ¨znQ Ó @  Bg <?d èzn ðêˆ @  Bh <?d ({nÙ¸f` @  Bi <?d h{n)Çœ @  Bj<?d ¨{n 2žç @  Bk<?d è{n÷(]à @  Bl<?d (|nîf®ï @  Bm<?d h|nT– @  Bn<?d ¨|n>ìVh @  Bo<?d è|n›ìŽÓ @  Bp<?d (}nK¤; @  Bq<?d h}n»ÛøB @  Br<?d ¨}n›.ú¼ @  Bs<?d è}nd[W @  Bt<?d (~n û– @  Bu<?d h~nm_ï @  Bv<?d ¨~nMª @  Bw<?d è~nE åJ @  Bx<?d (n•Ci¢ @  By<?d hne<“Û @  Bz<?d ¨nuЀn'EÉ‘% @  B{<?d èn&dkþ @  B| <?d @€nHÚ‰Š @  B}!<?d €€nÁfÓ @  B~"<?d À€n˜Pq  @  B#<?d n3Þ#“ @  B€$<?d @n±O4M @  B%<?d €nãTÛ @  B‚&<?d ÀnaÅÌÊ @  Bƒ'<?d ‚nåZÚ> @  B„(<?d @‚ngËÍà @  B…)<?d €‚n5Ð"¹ @  B†*<?d À‚n·A5g @  B‡+<?d ƒní9H  @  Bˆ,<?d @ƒno¨_Ô @  B‰-<?d €ƒn=³° @  BŠ.<?d Àƒn¿"§S @  B‹/<?d „nÚ瀅 @  BŒ0<?d @„nXv—[ @  B1<?d €„n mx @  BŽ2<?d À„nˆüoÜ @  B3<?d …n%,Q @  B4<?d @…ný´; @  B‘5<?d €…n¯¯ÔÖ @  B’6<?d À…n->à @  B“7<?d †n©¡Õü @  B”8<?d @†n+0Â" @  B•9<?d €†ny+-{ @  B–:<?d À†nûº:¥ @  B—;<?d ‡n¡ÂGÈ @  B˜<<?d @‡n#SP @  B™=<?d €‡nqH¿O @  Bš><?d À‡nóÙ¨‘ @  B›?<?d ˆnÖJܘ @  Bœ@<?d @ˆnTÛËF @  BA<?d €ˆnÀ$ @  BžB<?d Àˆn„Q3Á @  BŸC<?d ‰nbŽWü @  B D<?d @‰nà@" @  B¡E<?d €‰n²¯{ @  B¢F<?d À‰n0•¸¥ @  B£G<?d Šn´ ®Q @  B¤H<?d @Šn6›¹ @  B¥I<?d €Šnd€VÖ @  B¦J<?d ÀŠnæA @  B§K<?d ‹n¼iø+» @  B©M<?d €‹nlãÄâ @  BªN<?d À‹nîrÓ< @  B«O<?d Œn‹·ôê @  B¬P<?d @Œn &ã4 @  B­Q<?d €Œn[= m @  B®R<?d ÀŒnÙ¬³ @  B¯S<?d n.uX> @  B°T<?d @n¬äOà @  B±U<?d €nþÿ ¹ @  B²V<?d Àn|n·g @  B³W<?d Žnøñ¡“ @  B´X<?d @Žnz`¶M @  BµY<?d €Žn({Y @  B¶Z<?d ÀŽnªêNÊ @  B·[<?d nð’3§ @  B¸\<?d @nr$y @  B¹]<?d €n Ë  @  Bº^<?d Àn¢‰Üþ @  B»_<?d nýkI @  B¼`<?d @núš— @  B½a<?d €n-áuÎ @  B¾b<?d Àn¯pb @  B¿c<?d ‘n稿 @  BÀd<?d @‘ne9a @  BÁe<?d €‘n7"ø8 @  BÂf<?d À‘nµ³ïæ @  BÃg<?d ’n1,ù @  BÄh<?d @’n³½îÌ @  BÅi<?d €’nᦕ @  BÆj<?d À’nc7K @  BÇk<?d “n9Ok& @  BÈl<?d @“n»Þ|ø @  BÉm<?d €“néÅ“¡ @  BÊn<?d À“nkT„ @  BËo<?d ”n‘£© @  BÌp<?d @”nŒ´w @  BÍq<?d €”nÞ[. @  BÎr<?d À”n\ŠLð @  BÏs<?d •n«S} @  BÐt<?d @•n)£ @  BÑu<?d €•n{Ù÷ú @  BÒv<?d À•nùHà$ @  BÓw<?d –n}×öÐ @  BÔx<?d @–nÿFá @  BÕy<?d €–n­]W @  BÖz<?d À–n/̉ @  B×{<?d —nu´dä @  BØ|<?d @—n÷%s: @  BÙ}<?d €—n¥>œc @  BÚ~<?d À—n'¯‹½ @  BÛ<?d ˜nú«& @  BÜ€<?d @˜nk¼ø @  BÝ<?d €˜nÏpS¡ @  BÞ‚<?d À˜nMáD @  B߃<?d ™n«> B @  Bà„<?d @™n)¯7œ @  Bá…<?d €™n{´ØÅ @  Bâ†<?d€ À™næÓ½ @  C‡<?d šnè8` @  Cˆ<?d @šnj©š¾ @  C‰<?d €šnýûŽ  @  CŠ<?d Àšnj™Ô @  C‹<?d ›n렻à @  CŒ<?d @›ni1¬ @  C<?d €›nõ˜> @  CŽ<?d À›nw à @  C <?d œn×…×Û @  C <?d @œnUÀ @  C ‘<?d €œnÂFÔ± @  C ’<?d Àœn@×Ão @  C “<?d nÔáx @  C”<?d @nVŒö¦ @  C•<?d €n^C¤° @  C –<?d ÀnÜÒ³n @  C —<?d žn^w @  C ˜<?d @žn•I© @  C ™<?d €žnˆÇ] @  C š<?d Àžn VJà @  C ›<?d ŸnžœhÔ @  C œ<?d @Ÿn   @  C <?d €Ÿn€¤Ï) @  C ž<uРn?d ÀŸn5Ø÷ @  C Ÿ<?d  nnŒÌ¬ @  C <?d X nìÛr @  C¡<?d ˜ n{OÏÆ @  C¢<?d Ø nùÞØ @  C£<?d ¡nmú @  C¤<?d X¡nï…íÑ @  C¥<?d ˜¡nÏ‹D¢ @  C ¦<?d Ø¡nMS| @  C!§<?d ¢n ̾e @  C"¨<?d X¢nŽ]©» @  C#©<?d ˜¢n½ @  C$ª<?d Ø¢n›žªÑ @  C%«<?d £nTˆÆ @  C&¬<?d X£nÅŸ @  C'­<?d ˜£nl/; @  C(®<?d Ø£n“ý8å @  C)¯<?d ¤n3qäÞ @  C*°<?d X¤n±àó @  C+±<?d ˜¤n&²ç´ @  C,²<?d ؤn¤#ðj @  C-³<?d ¥n0éÒ} @  C.´<?d X¥n²xÅ£ @  C/µ<?d ˜¥nƒpK` @  C0¶<?d Ø¥ná\¾ @  C1·<?d ¦nyðmr @  C2 ¸<?d X¦nûaz¬ @  C3 ¹<?d ˜¦nl3n @  C4 º<?d ئnî¢yÆ @  C5 »<?d §nzh[Ñ @  C6 ¼<?d X§nøùL @  C7 ½<?d ˜§ndPü, @  C8 ¾<?d اnæÁëò @  C9 ¿<?d ¨nd @  C: À<?d X¨n„ŠsÈ @  C; Á<?d ˜¨nØg| @  C< Â<?d بn‘Ip¢ @  C= Ã<?d ©nƒRµ @  C> Ä<?d X©n‡Ek @  C? Å<?d ˜©n êŠ @  C@ Æ<?d Ø©n‹ŠýT @  CA Ç<?d ªnÊ\M @  CB È<?d XªnHÍ“ @  CC É<?d ˜ªnߟ' @  CD Ê<?d تn]ù @  CE Ë<?d «nÉÄ&î @  CF Ì<?d X«nKU10 @  CG Í<?d ˜«n×ü @  CH Î<?d Ø«nUm–Í @  CI Ï<?d ¬nõáJö @  CJ Ð<?d X¬nwp]( @  CK Ñ<?d ˜¬nà"Iœ @  CL Ò<?d جnb³^B @  CM Ó<?d ­nöy|U @  CN Ô<?d X­ntèk‹ @  CO Õ<?d ˜­nEàåH @  CP Ö<?d Ø­nÇqò– @  CQ ×<?d ®n†§ @  CR Ø<?d X®n6Q @  CS Ù<?d ˜®n“då @  CT Ú<?d Ø®nõ ; @  CU Û<?d ¯n…?), @  CV Ü<?d X¯n®>ò @  CW Ý<?d ˜¯n›ŽÑ @  CX Þ<?d دn–™ @  CY ß<?d °nƒ=3U @  CZ à<?d X°n¬$‹ @  C[ á<?d ˜°n–þ0? @  C\ â<?d ذno'á @  C] ã<?d ±n€¥ö @  C^ ä<?d X±n4( @  C_ å<?d ˜±n":»[ @  C` æ<?d رn «¬… @  Ca ç<?d ²ná}Aœ @  Cb è<?d X²ncìVB @  Cc é<?d ˜²nô¾Bö @  Cd ê<?d زnv/U( @  Ce ë<?d ³nâåw? @  Cf ì<?d X³n`t`á @  Cg í<?d ˜³nüÝР@  Ch î<?d سn~LÇ @  Ci ï<?d ´nÞÀ' @  Cj ð<?d X´n\Q ù @  Ck ñ<?d ˜´nËM @  Cl ò<?d Ø´nI’“ @  Cm ó<?d µnÝX-„ @  Cn ô<?d Xµn_É:Z @  Co õ<?d ˜µnnÁ´™ @  Cp ö<?d صnìP£G @  Cq ÷<?d ¶n­†N^ @  Cr ø<?d X¶n/Y€ @  Cs ù<?d ˜¶n¸EM4 @  Ct ú<?d ضn:ÔZê @  Cu û<?d ·n®xý @  Cv ü<?d X·n,o# @  Cw ý<?d ˜·n°&ß @  Cx þ<?d Ø·n2·ÈÞ @  Cy ÿ<?d ¸n°ÌF¤ @  Cz =?d X¸n2]Qz @  C{ =?d ˜¸n¥EÎ @  C| =?d ظn'žR @  C} =?d ¹n³Tp @  C~ =?d X¹n1ÅgÙ @  C =?d ˜¹n\šø  @  C€ =?d عnÞ ï× @  C =?d ºnŸÝÎ @  C‚ =?d XºnL @  Cƒ  =?d ˜ºnФ @  C„  =?d غnz @  C…  =?d »nœE4m @  C†  =?d X»nÔ#³ @  C‡  =?d ˜»n‚}“ @  Cˆ =?d Ø»nì„N @  C‰ =?d ¼n `Xu @  CŠ =?d X¼n"ñO« @  C‹ =?d ˜¼nµ£[ @  CŒ =?d ؼn72LÁ @  C =?d ½n£ønÖ @  CŽ =?d X½n!iy @  C =?d ˜½na÷Ë @  C =?d ؽn’ðà @  C‘ =?d ¾nÓ&  @  C’ =?d X¾nQ·Ò @  C“ =?d ˜¾nÆåf @  C” =?d ؾnDt¸ @  C• =?d ¿nо;¯ @  C– =?d X¿nR/,q @  C— =?d ˜¿nΆœR @uÐÀn  C˜ =?d Ø¿nuÐWY @  C™=?d 0Àn5Uã @  Cš =?d pÀn·Ä= @  C›!=?d °Àn –‰ @  Cœ"=?d ðÀn¢W @  C#=?d 0Án6Í&@ @  Cž$=?d pÁn´\1ž @  CŸ%=?d °Án”R˜í @  C &=?d ðÁnÃ3 @  C¡'=?d 0ÂnWb* @  C¢(=?d pÂnÕ„uô @  C£)=?d °ÂnBÖa@ @  C¤*=?d ðÂnÀGvž @  C¥+=?d 0ÃnTT‰ @  C¦,=?d pÃnÖCW @  C§-=?d °ÃnJµót @  C¨.=?d ðÃnÈ$äª @  C©/=?d 0Änh¨8‘ @  Cª0=?d pÄnê9/O @  C«1=?d °Än}k;û @  C¬2=?d ðÄnÿú,% @  C­3=?d 0Ånk02 @  C®4=?d pÅné¡ì @  C¯5=?d °ÅnØ©—/ @  C°6=?d ðÅnZ8€ñ @  C±7=?d 0Ænîmè @  C²8=?d pÆn™z6 @  C³9=?d °Æn-n‚ @  C´:=?d ðÆnŒ¼y\ @  Cµ;=?d 0Çnv[K @  C¶<=?d pÇnšçL• @  C·==?d °ÇnNü¶ @  C¸>=?d ðÇn„ßëh @  C¹?=?d 0ÈnddŒ @  Cº@=?d pÈnæ”sR @  C»A=?d °ÈnqÆgæ @  C¼B=?d ðÈnóWp8 @  C½C=?d 0ÉngR/ @  C¾D=?d pÉnå Eñ @  C¿E=?d °Énkê @  CÀF=?d ðÉné”ýÎ @  CÁG=?d 0Ên¨B× @  CÂH=?d pÊn*Ó  @  CÃI=?d °Ên½½ @  CÄJ=?d ðÊn?c @  CÅK=?d 0Ën«Ú&t @  CÆL=?d pËn)K1ª @  CÇM=?d °Ënµâ‰ @  CÈN=?d ðËn7s–W @  CÉO=?d 0Ìn—ÿJl @  CÊP=?d pÌnn]² @  CËQ=?d °Ìn‚h @  C×]=?d °ÏnùŽK @  CØ^=?d ðÏn{ˆ™• @  CÙ_=?d 0Ðná#3Ï @  CÚ`=?d pÐnc²$ @  CÛa=?d °Ðnôà0¥ @  CÜb=?d ðÐnvq'{ @  CÝc=?d 0Ñnâ»l @  CÞd=?d pÑnYíÎg @  Cß e=?d °Ñnyãg @  Cà f=?d ðÑnûrpÊ @  Cá g=?d 0Ònº¤Ó @  Câ h=?d€ pÒn¾c"´ @  D i=?d °Ònñ·¢ü @  Dj=?d ðÒn±R÷ @  Dk=?d 0Ónà ‹  @  Dl=?d pÓn 4{ @  Dm=?d °Ónò/”_ @  Dn=?d ðÓnp¾ƒ @  Do=?d 0Ôn€À @  Dp=?d pÔnœ @  D q=?d °ÔnÎ øG @  D r=?d ðÔnL›ï™ @  D s=?d 0Õn6c @  D t=?d pÕnŸ‰!½ @  D u=?d °ÕnÍ’Îä @  Dv=?d ðÕnOÙ: @  Dw=?d 0ÖnmÆU¹ @  Dx=?d pÖnïWBg @  Dy=?d °Ön½L­> @  Dz=?d ðÖn?ݺà @  D{=?d 0×nn^c @  D|=?d p×nìÏtÄ @  D}=?d °×n¾Ô› @  D~=?d ð×nì @  D„=?d pÙnŽâ)2 @  D…=?d °ÙnÜùÆk @  D†=?d ðÙn^hѵ @  D‡=?d 0Únm«z† @  D ˆ=?d pÚnï:mX @  D!‰=?d °Ún½!‚ @  D"Š=?d ðÚn?°•ß @  D#‹=?d 0Ûnn3L% @  D$Œ=?d pÛnì¢[û @  D%=?d °Ûn¾¹´¢ @  D&Ž=?d ðÛn<(£| @  D'=?d 0ÜnR = @  D(=?d pÜnЇ7ã @  D)‘=?d °Ün‚œØº @  D*’=?d ðÜn Ïd @  D+“=?d 0ÝnQŽž @  D,”=?d pÝnÓ@ @  D-•=?d °Ýnî @  D.–=?d ðÝn•ùÇ @  D/—=?d 0Þn!PuD @  D0˜=?d pÞn£Ábš @  D1™=?d °ÞnñÚà @  D2š=?d ðÞnsKš @  D3›=?d 0ßn"ÈCç @  D4œ=?d pßn YT9 @  D5=?d uÐàn/°ßnòB»` @  D6ž=?d ðßnpÓ¬¾ @  D7Ÿ=?d Hànƒ°»Ú @  D8 =?d ˆàn£E¹$ @  D9¡=?d ÈànS:C] @  D:¢=?d ánƒrϵ @  D;£=?d Hán€(y @  D<¤=?d ˆán Ý‡ @  D=¥=?d ÈánP¢uþ @  D>¦=?d ânÍæÕ? @  D?§=?d HânO÷Ï @  D@¨=?d ˆânoÍ @  DA©=?d ÈânŸ}7 @  DBª=?d ãnO5»î @  DC«=?d HãnLoù" @  DD¬=?d ˆãnlšûÜ @  DE­=?d Èãnœå¥ @  DF®=?d än…«òª @  DG¯=?d HänpJ•: @  DH°=?d ˆänP¿—Ä @  DI±=?d Èän Àm½ @  DJ²=?d ånpˆáU @  DK³=?d HånsÒ£™ @  DL´=?d ˆånS'¡g @  DMµ=?d Èån£X[ @  DN¶=?d æn>ûß @  DO·=?d Hæn ÀC @  DP¸=?d ˆæn#ù½ @  DQ¹=?d ÈænÓ†8Ä @  DRº=?d çnδ, @  DS»=?d Hçn”öà @  DT¼=?d ˆçn aô @  DU½=?d ÈçnÐg @  DV¾=?d ènäá‚z @  DW¿=?d Hèn|çÉ' @  DXÀ=?d ˆèn\ËÙ @  DYÁ=?d Èèn¬m1  @  DZÂ=?d én|%½H @  D[Ã=?d Hénÿ„ @  D\Ä=?d ˆén_Šýz @  D]Å=?d Èén¯õ @  D^Æ=?d ên2±§Â @  D_Ç=?d Hên§»î @  D`È=?d ˆên>R¹ @  DaÉ=?d ÈênÎ-Ci @  DbÊ=?d ëneÏ @  DcË=?d Hën?M @  DdÌ=?d ˆën=ʳ @  DeÍ=?d Èën͵uÊ @  DfÎ=?d ìnÔû†Å @  DgÏ=?d Hìn!áU @  DhÐ=?d ˆìnïã« @  DiÑ=?d ÈìnñÒ @  DjÒ=?d ín!Ø•: @  DkÓ=?d Hín"‚×ö @  DlÔ=?d ˆínwÕ @  DmÕ=?d Èínò/q @  DnÖ=?d înoL° @  Do×=?d HînR\´, @  DpØ=?d ˆînr©¶Ò @  DqÙ=?d Èîn‚ÖL« @  DrÚ=?d ïnRžÀC @  DsÛ=?d HïnQÄ‚ @  DtÜ=?d ˆïnq1€q @  DuÝ=?d ÈïnNz @  DvÞ=?d ðn?ƺ @  Dwß=?d HðnWƘö @  Dxà=?d ˆðnw3š @  Dyá=?d Èðn‡L`q @  Dzâ=?d ñnWì™ @  D{ã=?d HñnT^®U @  D|ä=?d ˆñnt«¬« @  D}å=?d Èñn„ÔVÒ @  D~æ=?d ònö @  Dç=?d Hònx×Üœ @  D€è=?d ˆònX"Þb @  Dé=?d Èòn¨]$ @  D‚ê=?d ónx¨ó @  Dƒë=?d Hón{Oê? @  D„ì=?d ˆón[ºèÁ @  D…í=?d Èón«Å¸ @  D†î=?d ôn²‹á· @  D‡ï=?d HônGj†' @  Dˆð=?d ˆôngŸ„Ù @  D‰ñ=?d Èôn—à~  @  DŠò=?d õnG¨òH @  D‹ó=?d HõnDò°„ @  DŒô=?d ˆõnd²z @  Dõ=?d Èõn”xH @  DŽö=?d ön <è @  D÷=?d Hön4,Ó^ @  Dø=?d ˆönÙÑ  @  D‘ù=?d Èönä¦+Ù @  D’ú=?d ÷n4î§1 @  D“û=?d H÷n7´åý @  D”ü=?d ˆ÷nAç @  D•ý=?d È÷nç>z @  D–þ=?d ønÓÁ‘g @  D—ÿ=?d Høn›Dî @  D˜>?d ˆøn»±ì @  D™>?d ÈønKÎ @  Dš>?d ùn›†šî @  D›>?d Hùn˜ÜØ" @  Dœ>?d ˆùn¸)ÚÜ @  D>?d ÈùnHV ¥ @  Dž>?d únÕ€d @  DŸ>?d HúnùœH @  D >?d ˆúnÙñž¶ @  D¡ >?d Èún)ŽdÏ @  D¢ >?d ûnùÆè' @  D£ >?d Hûnúœªë @  D¤ >?d ˆûnÚi¨ @  D¥ >?d Èûn*Rl @  D¦>?d ün3X¡c @  D§>?d HünƹÆó @  D¨>?d ˆünæLÄ  @  D©>?d Èün3>t @  Dª>?d ýnÆ{²œ @  D«>?d HýnÅ!ðP @  D¬>?d ˆýnåÔò® @  D­>?d Èýn«× @  D®>?d þnˆï¨ @  D¯>?d Hþnµÿ“Š @  D°>?d ˆþn• ‘t @  D±>?d Èþneuk  @  D²>?d ÿnµ=çå @  D³>?d Hÿn¶g¥) @  D´>?d ˆÿn–’§× @  DµuÐo>?d Èÿnfí]® @  D¶>?d o)Yu_ @  D·>?d `oA+ @  D¸ >?d  oaú)í @  D¹!>?d ào‘…Ó” @  Dº">?d oAÍ_| @  D»#>?d `oB—° @  D¼$>?d  obbN @  D½%>?d ào’å7 @  D¾&>?d oYEö @  D¿'>?d `oH_H @  DÀ(>?d  o­½]¶ @  DÁ)>?d ào]§Ï @  DÂ*>?d oŠ+' @  DÃ+>?d `oŽÐië @  DÄ,>?d  o®%k @  DÅ->?d ào^Z‘l @  DÆ.>?d oGbc @  DÇ/>?d `o²õó @  DÈ0>?d  o’  @  DÉ1>?d àobýt @  DÊ2>?d o²7qœ @  DË3>?d `o±m3P @  DÌ4>?d  o‘˜1® @  DÍ5>?d àoaçË× @  DÎ6>?d oü£k @  DÏ7>?d `oÁ³PŠ @  DÐ8>?d  oáFRt @  DÑ9>?d ào9¨  @  DÒ:>?d oÁq$å @  DÓ;>?d `oÂ+f) @  DÔ<>?d  oâÞd× @  DÕ=>?d ào¡ž® @  DÖ>>?d o&^³ @  D×?>?d `o¾XYî @  DØ@>?d  ož­[ @  DÙA>?d àonÒ¡i @  DÚB>?d o¾š- @  DÛC>?d ` o½ÀoM @  DÜD>?d   o5m³ @  DÝE>?d à omJ—Ê @  DÞF>?d oð7  @  DßG>?d ` oÜ+' @  DàH>?d   oüí)Ù @  DáI>?d à o ’Ó  @  DâJ>?d€ o¨Cî @  EK>?d ` osÅ•Þ @  E L>?d   oS0—  @  E M>?d à of–´ @  E N>?d oHe» @  E O>?d ` oD]Q @  E P>?d   odî_¯ @  E Q>?d à oZ#ú¬ @  E R>?d oŠkvD @  E S>?d ` oLxÏe @  E T>?d   olÍ› @  E U>?d à oY»Ì @  E V>?d oÄÿlÎ @  E W>?d `ošü6È @  E X>?d  oº 46 @  E Y>?d ào)e¯Õ @  E Z>?d où-#= @  E [>?d `o?>š @  E \>?d  o˘â @  E ]>?d ào*ý™v @  E ^>?d o”#%Ä @  E _>?d `o2Ç$ò @  E `>?d  o2&  @  E a>?d ào,ÿƒ @  E b>?d oü·ç @  E c>?d `o:¤¶Æ @  E d>?d  oQ´8 @  E e>?d ào/gµ¬ @  E f>?d o²#m @  E g>?d `oì Ok @  E h>?d  oÌÕM• @  E i>?d àoN¿ñÆ @  E j>?d ož÷}. @  E! k>?d `oXäÄ @  E" l>?d  oxÆñ @  E# m>?d àoM'Çe @  E$ n>?d oTi4j @  E% o>?d `oo: € @  E& p>?d  oOÏ~ @  E' q>?d àoq«} @  E( r>?d o¡J'• @  E) s>?d `ogYž´ @  E* t>?d  oG¬œJ @  E+ u>?d àoršÞ @  E, v>?d oïÞ= @  E- w>?d `o±Ýg @  E. x>?d  o‘(eç @  E/ y>?d àoDþ @  E0 z>?d oÒ rì @  E1 {>?d `oËÍ @  E2 |>?d  o4êÉ3 @  E3 }>?d àoÜȧ @  E4 ~>?d o5#Dº @  E5 >?d `o~Q @  E6 €>?d  o^¤ñ @  E7 >?d ào`i£ò @  E8 ‚>?d o°!/ @  E9 ƒ>?d `ov2–; @  E: „>?d  oVǔŠ@  E; …>?d àocñ•Q @  E< †>?d oþµ5 @  E= ‡>?d `o ¶o– @  E> ˆ>?d  o€Cmh @  E? ‰>?d ào¬.ש @  E@ Š>?d o|f[A @  EA ‹>?d `oºuâ` @  EB Œ>?d  oš€àž @  EC >?d ào¯¶á  @  ED Ž>?d o¶ø @  EE >?d `o«*ï @  EF >?d  o­^( @  EG ‘>?d ào““ @  EH ’>?d oCÛú @  EI “>?d `o…ȸÛ @  EJ ”>?d  o¥=º% @  EK •>?d ào »± @  EL –>?d o Op @  EM —>?d `oSLAv @  EN ˜>?d  os¹Cˆ @  EO ™>?d àoàÕØk @  EP š>?d o0Tƒ @  EQ ›>?d `oöŽí¢ @  ER œ>?d  oÖ{ï\uÐ o @  ES >?d àoÚŠ2 @  ETž>?d 8 o«ì{ @  EUŸ>?d x o eíM @  EV >?d ¸ o-ï³ @  EW¡>?d ø o]J° @  EX¢>?d 8!oÃÆX @  EY£>?d x!oy @  EZ¤>?d ¸!o%ó}‡ @  E[¥>?d ø!oÅ| @  E\¦>?d 8"oÜÒ @  E]§>?d x"oÓ‚†Ô @  E^¨>?d ¸"oów„* @  E_©>?d ø"oq8y @  E`ª>?d 8#o¡U´‘ @  Ea«>?d x#ogF ° @  Eb¬>?d ¸#oG³N @  Ec­>?d ø#or…Ú @  Ed®>?d 8$okËýÕ @  Ee¯>?d x$oP˜Å? @  Ef°>?d ¸$opmÇÁ @  Eg±>?d ø$oN b @  Eh²>?d 8%ožèî* @  Ei³>?d x%oXûW  @  Ej´>?d ¸%oxUõ @  Ekµ>?d ø%oM8Ta @  El¶>?d 8&oÐ|ô  @  Em·>?d x&oŽ®¦ @  En¸>?d ¸&o®Š¬X @  Eo¹>?d ø&o=æ7» @  Epº>?d 8'oí®»S @  Eq»>?d x'o+½r @  Er¼>?d ¸'o HŒ @  Es½>?d ø'o>~ @  Et¾>?d 8(o  @  Eu¿>?d x(o\5™" @  EvÀ>?d ¸(o|À›Ü @  EwÁ>?d ø(oB >ß @  ExÂ>?d 8)o’E²7 @  EyÃ>?d x)oTV  @  EzÄ>?d ¸)ot£ è @  E{Å>?d ø)oA•| @  E|Æ>?d 8*oÜѨ½ @  E}Ç>?d x*o‚Òò» @  E~È>?d ¸*o¢'ðE @  EÉ>?d ø*omzµ @  E€Ê>?d 8+o½Tö] @  EË>?d x+o{GO| @  E‚Ì>?d ¸+o[²M‚ @  EƒÍ>?d ø+on„L @  E„Î>?d 8,owÊ¿ @  E…Ï>?d x,oL™‡ó @  E†Ð>?d ¸,oll…  @  E‡Ñ>?d ø,oR¡  @  EˆÒ>?d 8-o‚鬿 @  E‰Ó>?d x-oDúÇ @  EŠÔ>?d ¸-od9 @  E‹Õ>?d ø-oQ9­ @  EŒÖ>?d 8.oÌ}¶l @  E×>?d x.o’~ìj @  EŽØ>?d ¸.o²‹î” @  EÙ>?d ø.o!çuw @  EÚ>?d 8/oñ¯ùŸ @  E‘Û>?d x/o7¼@¾ @  E’Ü>?d ¸/oIB@ @  E“Ý>?d ø/o"CÔ @  E”Þ>?d 80oœ¡ÿf @  E•ß>?d x0o:EþP @  E–à>?d ¸0o°ü® @  E—á>?d ø0o$}Y­ @  E˜â>?d 81oô5ÕE @  E™ã>?d x1o2&ld @  Ešä>?d ¸1oÓnš @  E›å>?d ø1o'åo @  Eœæ>?d 82oº¡ÏÏ @  Eç>?d x2o䢕É @  Ežè>?d ¸2oÄW—7 @  EŸé>?d ø2oF=+d @  E ê>?d 83o–u§Œ @  E¡ë>?d x3oPf­ @  E¢ì>?d ¸3op“S @  E£í>?d ø3oE¥Ç @  E¤î>?d 84o\ëîÈ @  E¥ï>?d x4og¸Ö" @  E¦ð>?d ¸4oGMÔÜ @  E§ñ>?d ø4oy€qß @  E¨ò>?d 85o©Èý7 @  E©ó>?d x5ooÛD @  Eªô>?d ¸5oO.Fè @  E«õ>?d ø5ozG| @  E¬ö>?d 86oç\ç½ @  E­÷>?d x6o¹_½» @  E®ø>?d ¸6o™ª¿E @  E¯ù>?d ø6o Æ$¦ @  E°ú>?d 87oÚŽ¨N @  E±û>?d x7oo @  E²ü>?d ¸7o?d ø7o ^ @  E´þ>?d 88o=¡ž @  Eµÿ>?d x8o ´‹¡ @  E¶??d ¸8o)A‰_ @  E·??d ø8oŒ,\ @  E¸??d 89oÇÄ ´ @  E¹??d x9oו @  Eº??d ¸9o!"k @  E»??d ø9oÿ @  E¼??d 8:o‰Pº> @  E½??d x:o×Sà8 @  E¾??d ¸:o÷¦âÆ @  E¿ ??d ø:oÛËX @  EÀ ??d 8;o ƒÔï @  EÁ ??d x;oÍmÎ @  E ??d ¸;oíeo0 @  Eà ??d ø;oØSn¤ @  EÄ??d 8ŽT @  EÉ??d x=oò-7u @  EÊ??d ¸=oÒØ5‹ @  EË??d ø=oçî4 @  EÌ??d 8>ozª”Þ @  EÍ??d x>o$©ÎØ @  EÎ??d ¸>o\Ì& @  EÏ??d ø>o—0WÅ @  EÐ??d 8?oGxÛ- @  EÑ??d x?okb  @  EÒ??duÐ@o7 ¸?o¡ž`ò @  EÓ??d ø?o”¨af @  EÔ??d P@oWÛZ @  EÕ??d @oS„ÏL @  EÖ ??d Ð@oÑØ’ @  E×!??d Ao½æ§ @  EØ"??d PAo?ñy @  EÙ#??d Ao[ç]x @  EÚ$??d ÐAoÙvJ¦ @  EÛ%??d Boó•ü- @  EÜ&??d PBoqëó @  EÝ'??d Boc¤Õ @  EÞ(??d ÐBoò³  @  Eß)??d CoßA”n @  Eà*??d PCo]Ѓ° @  Eá+??d Co9§/± @  Eâ,??d€ ÐCozqÏo @  F-??d Do5Ùb @  F.??d PDo·HuÝ @  F/??d Doë6£ú @  F0??d ÐDoi§´$ @  F1??d EoËÕk @  F2??d PEoIµ @  F3??d EoãU1Î @  F4??d ÐEoaÄ& @  F 5??d FoŽnkv @  F 6??d PFo ÿ|¨ @  F 7??d Fo5ÑÈc @  F 8??d ÐFo·@ß½ @  F 9??d Goæ¾ò @  F:??d PGo—w©, @  F;??d God· @  F??d PHoÖ  @  F???d Hoç›ÿç @  F@??d ÐHoe è9 @  FA??d IoǬ‰v @  FB??d PIoE=ž¨ @  FC??d IoïømÓ @  FD??d ÐIomiz  @  FE??d Jo‚Ã7k @  FF??d PJoR µ @  FG??d Jo9|”~ @  FH??d ÐJo»íƒ  @  FI??d KoKâï @  FJ??d PKo›Úõ1 @  FK??d Ko¸ @  F L??d ÐKo)Ä @  F!M??d Lod‰l @  F"N??d PLoæ² @  F#O??d Loºfו @  F$P??d ÐLo8÷ÀK @  F%Q??d MošQ¡ @  F&R??d PMoÀ¶Ú @  F'S??d Mo²E¡ @  F(T??d ÐMo0”R @  F)U??d Noß> @  F*V??d PNo]¯Ç @  F+W??d Nod¼  @  F,X??d ÐNoæ«Ò @  F-Y??d OoD¶Ê @  F.Z??d POoÆ'ÝC @  F/[??d OoÁCØ @  F0\??d ÐOoCÒ @  F1]??d PoâV @  F2^??d PPo sAÍ @  F3_??d Po̺®6 @  F4`??d ÐPoN+¹è @  F5a??d QoìØ§ @  F6b??d PQonÏy @  F7c??d QoÄÙ< @  F8d??d ÐQoFH+Ü @  F9e??d Ro©âfº @  F:f??d PRo+sqd @  F;g??d Ro]ů @  F<h??d ÐRoÌÒq @  F=i??d So2j³> @  F>j??d PSo°û¤à @  F?k??d SožHY @  F@l??d ÐSoŠ_‡ @  FAm??d Toá¯A/ @  FBn??d PToc>Vñ @  FCo??d To?@€Ö @  FDp??d ÐTo½Ñ— @  FEq??d UowöG @  FFr??d PUoæá™ @  FGs??d Uo7#â @  FHt??d ÐUoµ²< @  FIu??d VoZHZ @  FJv??d PVo؉_„ @  FKw??d Voá§ëO @  FLx??d ÐVoc6ü‘ @  FMy??d WoÁÞ @  FNz??d PWoCŠ @  FO{??d WoDeG› @  FP|??d ÐWoÆôPE @  FQ}??d Xo€å1ÿ @  FR~??d PXot&! @  FS??d Xo.+ˆY @  FT€??d ÐXo¬ºŸ‡ @  FU??d YoþÈ @  FV‚??d PYoŒé @  FWƒ??d Yo&Hm @  FX„??d ÐYo¤Ù ³ @  FY…??d ZoKs@Õ @  FZ†??d PZoÉâW  @  F[‡??d ZoðÌãÀ @  F\ˆ??d ÐZor]ô @  F]‰??d [oÐû•Q @  F^Š??d P[oRj‚ @  F_‹??d [oDh¤ @  F`Œ??d Ð[oÆ™z @  Fa??d \o­9aÒ @  FbŽ??d P\o/¨v  @  Fc??d \osÖ + @  Fd??d Ð\oñG·õ @  Fe‘??d ]oSáÖº @  Ff’??d P]oÑpÁd @  Fg“??d ]o{µ2 @  Fh”??d Ð]où$%Á @  Fi•??d ^oŽh§ @  Fj–??d P^o”y @  Fk—??d ^o­1˲ @  Fl˜??d Ð^o/ Ül @  Fm™??d _o½# @  Fnš??d P_o—ªý @  Fo›??d _oógf @  FuÐ`opœ??d Ð_oŠbp¸ @  Fq??d (`oFt(‡ @  Frž??d h`oÄå?Y @  FsŸ??d ¨`o,Т @  Ft ??d è`o‡½Ç| @  Fu¡??d (ao%¦3 @  Fv¢??d hao§Š±í @  Fw£??d ¨ao OB– @  Fx¤??d èaoÞUH @  Fy¥??d (boY³Äû @  Fz ¦??d hboÛ"Ó% @  F{ §??d ¨boâ gî @  F| ¨??d èbo`p0 @  F} ©??d (coÂ; @  F~ ª??d hco@ª¡ @  F «??d ¨co™Ú) @  F€ ¬??d èco™Í÷ @  F ­??d (doò¨Ó_ @  F‚ ®??d hdop9Ä @  Fƒ ¯??d ¨do,G¦ @  F„ °??d èdo®Öx @  F… ±??d (eo pd7 @  F† ²??d heoŽásé @  F‡ ³??d ¨eo$$€’ @  Fˆ ´??d èeo¦µ—L @  F‰ µ??d (foIÚ* @  FŠ ¶??d hfoËŽÍô @  F‹ ·??d ¨foò y? @  FŒ ¸??d èfop1ná @  F ¹??d (goÒ—® @  FŽ º??d hgoPp @  F »??d ¨goWbÕë @  F ¼??d ègoÕóÂ5 @  F‘ ½??d (ho“⣠@  F’ ¾??d hhos´Q @  F“ ¿??d ¨ho êN» @  F” À??d èho¢{Ye @  F• Á??d (ioÝ8* @  F– Â??d hio‚L/ô @  F— Ã??d ¨io(‰Ü @  F˜ Ä??d èioªËQ @  F™ Å??d (joE²†7 @  Fš Æ??d hjoÇ#‘é @  F› Ç??d ¨joþ %" @  Fœ È??d èjo|œ2ü @  F É??d (koÞ:S³ @  Fž Ê??d hko\«Dm @  FŸ Ë??d ¨koJÉ®F @  F  Ì??d èkoÈX¹˜ @  F¡ Í??d (lo£ø§0 @  F¢ Î??d hlo!i°î @  F£ Ï??d ¨lo}fÉ @  F¤ Ð??d èloÿ†q @  F¥ Ñ??d (mo] X @  F¦ Ò??d hmoß±† @  F§ Ó??d ¨moutôý @  F¨ Ô??d èmo÷åã# @  F© Õ??d (noO®E @  Fª Ö??d hnošÞ¹› @  F« ×??d ¨no£ð P @  F¬ Ø??d èno!aŽ @  F­ Ù??d (ooƒÇ{Á @  F® Ú??d hooVl @  F¯ Û??d ¨oo2¡„ @  F° Ü??d èoo„£¶Z @  F± Ý??d (poH“çO @  F² Þ??d hpoÊð‘ @  F³ ß??d ¨po Ëj @  F´ à??d èpo‰Z´ @  Fµ á??d (qo+üiû @  F¶ â??d hqo©m~% @  F· ã??d ¨qo¨^ @  F¸ ä??d èqo9š€ @  F¹ å??d (ron“׿ @  Fº æ??d hroìÀ8 @  F» ç??d ¨roÕ,tó @  F¼ è??d èroW½c- @  F½ é??d (soõb @  F¾ ê??d hsowм @  F¿ ë??d ¨soÏïù @  FÀ ì??d èsoM~îÛ @  FÁ í??d (to&Þðs @  F î??d hto¤Oç­ @  Fà ï??d ¨toø11Š @  FÄ ð??d ètoz &T @  FÅ ñ??d (uoØG @  FÆ ò??d huoZ—PÅ @  FÇ ó??d ¨uoðR£¾ @  FÈ ô??d èuorô` @  FÉ õ??d (voiù @  FÊ ö??d hvoøîØ @  FË ÷??d ¨vo&ÖZ @  FÌ ø??d èvo¤GMÍ @  FÍ ù??d (woá,‚ @  FÎ ú??d hwo„p;\ @  FÏ û??d ¨woƒöÇ @  FÐ ü??d èwo…á @  FÑ ý??d (xoG”€£ @  FÒ þ??d hxoÅ—} @  FÓ ÿ??d ¨xoLE#ß @  FÔ @?d èxoÎÔ4 @  FÕ @?d (yolrUN @  FÖ @?d hyoîãB @  F× @?d ¨yoD&±ë @  FØ @?d èyoÆ·¦5 @  FÙ @?d (zo)ëS @  FÚ @?d hzo«Œü @  FÛ @?d ¨zo’¢HF @  FÜ @?d èzo3_˜ @  FÝ  @?d ({o²•>× @  FÞ  @?d h{o0)  @  Fß  @?d ¨{o&fÃ" @  Fà  @?d è{o¤÷Ôü @  Fá  @?d (|oÏWÊT @  Fâ @?d€ h|o9Á, @  G @?d ¨|o„:_" @  G @?d è|o«Hü @  G @?d (}oaDÒ^ @  G @?d h}oãÕÅ€ @  G @?d ¨}o‡¢i @  G @?d è}o3~_ @  G @?d (~o$+lC @  G @?d h~o¦º{ @  G @?d ¨~oZÝ4» @  G @?d è~oØL#e @  G @?d (o¿£¹Ç @  G @?d ho=2® @  G @?d ¨ouЀo'YE @  G @?d èoÛÔÆ @  G @?d @€o¤—{ @  G @?d €€o„byq @  G @?d À€o"†xG @  G  @?d oòÎô¯ @  G !@?d @oÇøõ; @  G "@?d €oç ÷Å @  G #@?d Ào!Nä @  G $@?d ‚o¼Zî% @  G %@?d @‚o‚—K& @  G &@?d €‚o¢bIØ @  G '@?d À‚oüaÞ @  G (@?d ƒo,)Ÿ6 @  G )@?d @ƒož¢ @  G *@?d €ƒo9êœ\ @  G +@?d Àƒoÿù%} @  G ,@?d „oæ·Ör @  G -@?d @„odÝj! @  G .@?d €„oD(hß @  G! /@?d À„o{P5 @  G" 0@?d …o¯3ÜÝ @  G# 1@?d @…ošÝI @  G$ 2@?d €…oºðß· @  G% 3@?d À…o|ãf– @  G& 4@?d †oá§ÆW @  G' 5@?d @†oßjcT @  G( 6@?d €†oÿŸaª @  G) 7@?d À†o¡œ;¬ @  G* 8@?d ‡oqÔ·D @  G+ 9@?d @‡oDâ¶Ð @  G, :@?d €‡od´. @  G- ;@?d À‡o¢  @  G. <@?d ˆo–û @  G/ =@?d @ˆo—ñ @  G0 >@?d €ˆo%b @  G1 ?@?d ÀˆosÖ ( @  G2 @@?d ‰o£ž€À @  G3 A@?d @‰o–¨T @  G4 B@?d €‰o¶]ƒª @  G5 C@?d À‰opN:‹ @  G6 D@?d Šoí šJ @  G7 E@?d @ŠoÓÇ?I @  G8 F@?d €Šoó2=· @  G9 G@?d ÀŠo­1g± @  G: H@?d ‹o}yëY @  G; I@?d @‹oHOêÍ @  G< J@?d €‹ohºè3 @  G= K@?d À‹o®©Q @  G> L@?d Œo·ç¢ @  G? M@?d @Œo›ŠÜ @  G@ N@?d €Œo»" @  GA O@?d ÀŒo€,"È @  GB P@?d oPd®  @  GC Q@?d @oeR¯´ @  GD R@?d €oE§­J @  GE S@?d Àoƒ´k @  GF T@?d Žoð´ª @  GG U@?d @Žo =© @  GH V@?d €ŽoÈW @  GI W@?d ÀŽo^ËIQ @  GJ X@?d oŽƒÅ¹ @  GK Y@?d @o»µÄ- @  GL Z@?d €o›@ÆÓ @  GM [@?d Ào]Sò @  GN \@?d oãÃ@ @  GO ]@?d @opáX£ @  GP ^@?d €oPZ] @  GQ _@?d Àoöð[k @  GR `@?d ‘o&¸×ƒ @  GS a@?d @‘oŽÖ @  GT b@?d €‘o3{Ôé @  GU c@?d À‘oõhmÈ @  GV d@?d ’oh,Í  @  GW e@?d @’oVáh  @  GX f@?d €’ovjô @  GY g@?d À’o(0ò @  GZ h@?d “oø_¼ @  G[ i@?d @“oÍi½Ž @  G\ j@?d €“o휿p @  G] k@?d À“o+Q @  G^ l@?d ”o2Áõ^ @  G_ m@?d @”o°«I  @  G` n@?d €”o^Kó @  Ga o@?d À”o« s @  Gb p@?d •o{Eÿñ @  Gc q@?d @•oNsþe @  Gd r@?d €•on†ü› @  Ge s@?d À•o¨•Eº @  Gf t@?d –o5Ñå{ @  Gg u@?d @–o @x @  Gh v@?d €–o+éB† @  Gi w@?d À–ouê€ @  Gj x@?d —o¥¢”h @  Gk y@?d @—o”•ü @  Gl z@?d €—o°a— @  Gm {@?d À—ovr.# @  Gn |@?d ˜oB¢> @  Go }@?d @˜oÑá9Ý @  Gp ~@?d €˜oñ;# @  Gq @?d À˜oºf{– @  Gr €@?d ™oj.÷~ @  Gs @?d @™o_öê @  Gt ‚@?d €™oíô @  Gu ƒ@?d À™o¹þM5 @  Gv „@?d šo$ºíô @  Gw …@?d @šowH÷ @  Gx †@?d €šo:‚J  @  Gy ‡@?d Àšod @  Gz ˆ@?d ›o´Éœç @  G{ ‰@?d @›oÿs @  G| Š@?d €›o¡ Ÿ @  G} ‹@?d À›og&¬ @  G~ Œ@?d œo~WÕ£ @  G @?d @œo±l_S @  G€ Ž@?d €œo‘™]­ @  G @?d ÀœoªÊeG @  G‚ @?d oz‚é¯ @  Gƒ ‘@?d @oO´è; @  G„ ’@?d €ooAêÅ @  G… “@?d Ào©RSä @  G† ”@?d žo4ó% @  G‡ •@?d @žo ÛV& @  Gˆ –@?d €žo*.TØ @  G‰ —@?d Àžot-Þ @  GŠ ˜@?d Ÿo¤e‚6 @  G‹ ™@?d @Ÿo‘Sƒ¢ @  GŒ š@?d €Ÿo±¦\ @  G ›@uРo?d ÀŸowµ8} @  GŽ œ@?d  o?y:Î @  G@?d X o¬¡- @  Gž@?d ˜ oŒà£Ó @  G‘Ÿ@?d Ø o*¢å @  G’ @?d ¡oúL.  @  G“¡@?d X¡oÏz/™ @  G”¢@?d ˜¡oï-g @  G•£@?d Ø¡o)œ”F @  G–¤@?d ¢o´Ø4‡ @  G—¥@?d X¢oŠ‘„ @  G˜¦@?d ˜¢oªà“z @  G™§@?d Ø¢oôãÉ| @  Gš¨@?d £o$«E” @  G›©@?d X£oD @  Gœª@?d ˜£o1hFþ @  G«@?d Ø£o÷{ÿß @  Gž¬@?d ¤oî5 Ð @  GŸ­@?d X¤ol_°ƒ @  G ®@?d ˜¤oLª²} @  G¡¯@?d ؤowùŠ— @  G¢°@?d ¥o§± @  G£±@?d X¥o’‡ë @  G¤²@?d ˜¥o²r @  G¥³@?d Ø¥ota¼4 @  G¦´@?d ¦oé%õ @  G§µ@?d X¦o×è¹ö @  G¨¶@?d ˜¦o÷» @  G©·@?d ئo©á @  Gª¸@?d §oyVmæ @  G«¹@?d X§oL`lr @  G¬º@?d ˜§ol•nŒ @  G­»@?d اoª†×­ @  G®¼@?d ¨ožy[° @  G¯½@?d X¨o ÀS @  G°¾@?d ˜¨o-à­ @  G±¿@?d بo{TÖŠ @  G²À@?d ©o«Zb @  G³Á@?d X©ož*[ö @  G´Â@?d ˜©o¾ßY @  GµÃ@?d Ø©oxÌà) @  G¶Ä@?d ªoåˆ@è @  G·Å@?d XªoÛEåë @  G¸Æ@?d ˜ªoû°ç @  G¹Ç@?d تo¥³½ @  GºÈ@?d «ouû1û @  G»É@?d X«o@Í0o @  G¼Ê@?d ˜«o`82‘ @  G½Ë@?d Ø«o¦+‹° @  G¾Ì@?d ¬o¿ex¿ @  G¿Í@?d X¬o“Â~ @  GÀÎ@?d ˜¬o³ýÀ€ @  GÁÏ@?d جoˆ®øj @  GÂÐ@?d ­oXæt‚ @  GÃÑ@?d X­omÐu @  GÄÒ@?d ˜­oM%wè @  GÅÓ@?d Ø­o‹6ÎÉ @  GÆÔ@?d ®orn @  GÇÕ@?d X®o(¿Ë  @  GÈÖ@?d ˜®oJÉõ @  GÉ×@?d Ø®oVI“ó @  GÊØ@?d ¯o† @  GËÙ@?d X¯o³7 @  GÌÚ@?d ˜¯o“Âq @  GÍÛ@?d دoUÑ¥P @  GÎÜ@?d °oëâ @  GÏÝ@?d X°oxc‚ @  GÐÞ@?d ˜°oX–€ÿ @  GÑß@?d ذoþrÉ @  GÒà@?d ±o.: ! @  GÓá@?d X±o µ @  GÔâ@?d ˜±o;ùK @  GÕã@?d رoýê·j @  GÖä@?d ²o`®« @  G×å@?d X²o^c²¨ @  GØæ@?d ˜²o~–°V @  GÙç@?d زo •êP @  GÚè@?d ³oðÝf¸ @  GÛé@?d X³oÅëg, @  GÜê@?d ˜³oåeÒ @  GÝë@?d سo# Üó @  GÞì@?d ´o:C/ü @  Gßí@?d X´o¸)“¯ @  Gàî@?d ˜´o˜Ü‘Q @  Gáï@?d Ø´o£©» @  Gâð@?d€ µo[]1 @  Hñ@?d Xµo*x¼ @  Hò@?d ˜µo¯ßzB @  Hó@?d صo¬…8Ž @  Hô@?d ¶o1Á˜O @  Hõ@?d X¶oÁ¾b6 @  Hö@?d ˜¶oáK`È @  H÷@?d ضoqúe´ @  Hø@?d ·o¡²é\ @  H ù@?d X·oQÍ% @  H ú@?d ˜·oq8Û @  H û@?d Ø·orbS @  H ü@?d ¸oFß  @  H ý@?d X¸o¶â%s @  Hþ@?d ˜¸o–' @  Hÿ@?d ظoÁS® @  HA?d ¹oYßF @  HA?d X¹oá&%? @  HA?d ˜¹oÁÓ'Á @  HA?d عo‰e  @  HA?d ºo_ÍÅÌ @  HA?d Xºo¯²?µ @  HA?d ˜ºoG=K @  HA?d غoö87 @  HA?d »oϾ´ß @  H A?d X»o?ÁN¦ @  H A?d ˜»o4LX @  H A?d Ø»on” @  H A?d ¼o ý› @  H A?d X¼oõ_â @  HA?d ˜¼oÕª @  HA?d ؼoœì{Ü @  H A?d ½oL¤÷4 @  H!A?d X½o¼Û M @  H"A?d ˜½oœ.³ @  H#A?d ؽoŸtM @  H$A?d ¾o0í¾ @  H%A?d X¾oòOÇ @  H&A?d ˜¾oÒº9 @  H'A?d ؾoB E @  H(A?d ¿o’Cœ­ @  H)A?d X¿ob±î @  H9)A?d pÃoÎÎò— @  H:*A?d °Ãoî;ði @  H;+A?d ðÃoía²¥ @  H<,A?d 0Äoô/Aª @  H=-A?d pÄoP»Ó @  H>.A?d °Äo$¥¹- @  H?/A?d ðÄoÃäÁ @  H@0A?d 0Åo¬M— @  HA1A?d pÅoãÓ·î @  HB2A?d °ÅoÃ&µ @  HC3A?d ðÅoÀ|÷Ü @  HD4A?d 0Æo]8W @  HE5A?d pÆo­G­d @  HF6A?d °Æo²¯š @  HG7A?d ðÆoªæ @  HH8A?d 0ÇoÍK& @  HI9A?d pÇo=4Üw @  HJ:A?d °ÇoÁÞ‰ @  HK;A?d ðÇo›œE @  HLA?d °Èoúîèß @  HO?A?d ðÈoÏIb @  HP@A?d 0ÉoŠ @  HQAA?d pÉoï~ëó @  HRBA?d °ÉoÏ‹é  @  HSCA?d ðÉoÌÑ«Á @  HTDA?d 0ÊoQ•  @  HUEA?d pÊo¡êñy @  HVFA?d °Êoó‡ @  HWGA?d ðÊo®öû @  HXHA?d 0ËoÁæz @  HYIA?d pËo1™€j @  HZJA?d °Ëol‚” @  H[KA?d ðËo6ÀX @  H\LA?d 0Ìo x3W @  H]MA?d pÌoûÉ. @  H^NA?d °ÌoÛòËÐ @  H_OA?d ðÌo’´µ @  H`PA?d 0ÍoBü9ø @  HaQA?d pÍo²ƒÃ @  HbRA?d °Ío’vÁ @  HcSA?d ðÍo‘,ƒ³ @  HdTA?d 0Îo h#r @  HeUA?d pÎoüÙ  @  HfVA?d °ÎoÜâÛõ @  HgWA?d ðÎoLSÞ‰ @  HhXA?d 0ÏoœRa @  HiYA?d pÏold¨ @  HjZA?d °ÏoL‘ªæ @  Hk[A?d ðÏoOËè* @  Hl\A?d 0ÐoñT˜ @  Hm]A?d pÐoj®á @  Hn^A?d °Ðo!Ÿ¬ @  Ho_A?d ðÐoäh̳ @  Hp`A?d 0Ño4 @[ @  HqaA?d pÑoÄ_º" @  HrbA?d °Ño䪸Ü @  HscA?d ðÑoçðú @  HtdA?d 0Òoz´ZÑ @  HueA?d pÒoŠË ¨ @  HvfA?d °Òoª>¢V @  HwgA?d ðÒo:§* @  HxhA?d 0ÓoêÇ+ @  HyiA?d pÓo¸Ñ» @  HzjA?d °Óo:MÓE @  H{kA?d ðÓo9‘‰ @  H|lA?d 0Ôo Yb† @  H}mA?d pÔoÐ&˜ÿ @  H~nA?d °ÔoðÓš @  HoA?d ðÔoôÄÒb @  H€pA?d 0Õo$Œ^Š @  HqA?d pÕoÔó¤ó @  H‚rA?d °Õoô¦  @  HƒsA?d ðÕo÷\äÁ @  H„tA?d 0ÖojD @  H…uA?d pÖošg¾y @  H†vA?d °Öoº’¼‡ @  H‡wA?d ðÖo*#¹û @  HˆxA?d 0×oúk5 @  H‰yA?d p×o Ïj @  HŠzA?d °×o*áÍ” @  H‹{A?d ð×o)»X @  HŒ|A?d 0ØoDE @  H}A?d pØoí;ù< @  HŽ~A?d °ØoÍÎû @  HA?d ðØoå¯Úí @  H€A?d 0Ùo5çV @  H‘A?d pÙoج| @  H’‚A?d °Ùoåm®‚ @  H“ƒA?d ðÙoæ7ìN @  H”„A?d 0Úo{sL @  H•…A?d pÚo‹ ¶ö @  H–†A?d °Úo«ù´ @  H—‡A?d ðÚo;H±t @  H˜ˆA?d 0Ûoë=œ @  H™‰A?d pÛoÇå @  HšŠA?d °Ûo;ŠÅ @  H›‹A?d ðÛo8Ї× @  HœŒA?d 0Üo!žtØ @  HA?d pÜoÑᎡ @  HžŽA?d °ÜoñŒ_ @  HŸA?d ðÜo¸RòŸ @  H A?d 0Ýoh~w @  H¡‘A?d pÝo˜e„ @  H¢’A?d °Ýo¸†ð @  H£“A?d ðÝo»ÊÄ< @  H¤”A?d 0Þo&Ždý @  H¥•A?d pÞoÖñž„ @  H¦–A?d °Þoöœz @  H§—A?d ðÞofµ™ @  H¨˜A?d 0ßo¶ýî @  H©™A?d pßoF‚ï— @  HªšA?d uÐào/°ßofwíi @  H«›A?d ðßoe-¯¥ @  H¬œA?d Hào|‰ñS @  H­A?d ˆào.’  @  H®žA?d Èào¬ Ô @  H¯ŸA?d áo;-òN @  H° A?d Háo¹¼å @  H±¡A?d ˆáoë§ É @  H²¢A?d Èáoi6 @  H³£A?d âou¹èÄ @  H´¤A?d Hâo÷(ÿ @  Hµ¥A?d ˆâo¥3C @  H¶¦A?d Èâo'¢ @  H·§A?d ãoåÊ™× @  H¸¨A?d Hãog[Ž  @  H¹©A?d ˆão5@aP @  HºªA?d Èão·ÑvŽ @  H»«A?d äo/TГ @  H¼¬A?d Häo­ÅÇM @  H½­A?d ˆäoÿÞ( @  H¾®A?d Èäo}O?Ê @  H¿¯A?d åoÈ×Ü® @  HÀ°A?d HåoJFËp @  HÁ±A?d ˆåo]$) @  H²A?d ÈåošÌ3÷ @  HóA?d æo†CÆ$ @  HÄ´A?d HæoÒÑú @  HŵA?d ˆæoVÉ>£ @  HƶA?d ÈæoÔX)} @  HÇ·A?d ço0·7 @  HȸA?d Hço”¡ é @  HɹA?d ˆçoƺO° @  HʺA?d ÈçoD+Xn @  HË»A?d èoña @  H̼A?d HèosŽ–¿ @  HͽA?d ˆèo!•yæ @  HξA?d Èèo£n8 @  HÏ¿A?d éoÄz€³ @  HÐÀA?d HéoFë—m @  HÑÁA?d ˆéoðx4 @  HÒÂA?d Èéo–aoê @  HÓÃA?d êoŠîš9 @  HÔÄA?d Hêoç @  HÕÅA?d ˆêoZdb¾ @  HÖÆA?d ÈêoØõu` @  H×ÇA?d ëoë* @  HØÈA?d Hëo˜ üô @  HÙÉA?d ˆëoÊ­ @  HÚÊA?d ÈëoH†s @  HÛËA?d ìoТn @  HÜÌA?d HìoR’µ° @  HÝÍA?d ˆìo‰Zé @  HÞÎA?d Èìo‚M7 @  HßÏA?d ío™‡¨Á @  HàÐA?d Hío¿ @  HáÑA?d ˆíoI PF @  HâÒA?d€ Èío¿_[> @  IÓA?d îoB‘æÄ @  IÔA?d HîoÀñ @  IÕA?d ˆîoWRå® @  IÖA?d ÈîoÕÃòp @  I×A?d ïoÙ3@ @  IØA?d Hïo[ˆ$ž @  IÙA?d ˆïoÇ!”½ @  IÚA?d ÈïoE°ƒc @  I ÛA?d ðo¿ì‘. @  I ÜA?d Hðo=}†ð @  I ÝA?d ˆðoª/’D @  I ÞA?d Èðo(¾…š @  I ßA?d ño܃š @  IàA?d Hño^D @  IáA?d ˆñoo†‡ @  IâA?d Èñoí‹‘Y @  IãA?d òo4MŸg @  IäA?d Hòo¶Üˆ¹ @  IåA?d ˆòo!Žœ  @  IæA?d Èòo£‹Ó @  IçA?d óo¯ÅJã @  IèA?d Hóo-T]= @  IéA?d ˆóo±ýí @  IêA?d Èóo3lúÀ @  IëA?d ôon §0 @  IìA?d Hôoì1°î @  IíA?d ˆôo{c¤Z @  IîA?d Èôoùò³„ @  IïA?d õoxX @  IðA?d Hõoé† @  IñA?d ˆõo2ç®õ @  I òA?d Èõo°v¹+ @  I!óA?d öoi°· @  I"ôA?d Höoë! Ë @  I#õA?d ˆöo|s´ @  I$öA?d Èöoþ⣡ @  I%÷A?d ÷oò8b‘ @  I&øA?d H÷op©uO @  I'ùA?d ˆ÷oìÅl @  I(úA?d È÷on‘Ò² @  I)ûA?d øoìðP @  I*üA?d Høoœ}çŽ @  I+ýA?d ˆøo /ó: @  I,þA?d Èøo‰¾ää @  I-ÿA?d ùo]P_N @  I.B?d HùoßÁH @  I/B?d ˆùoîÉÆS @  I0B?d ÈùolXÑ @  I1B?d úoµžß³ @  I2B?d Húo7Èm @  I3B?d ˆúo ]ÜÙ @  I4B?d Èúo"ÌË @  I5B?d ûo. 7 @  I6B?d Hûo¬‡é @  I7 B?d ˆûo0.­Ê @  I8 B?d Èûo²¿º @  I9 B?d üoïsçä @  I: B?d Hüomâð: @  I; B?d ˆüoú°äŽ @  I<B?d Èüox!óP @  I=B?d ýo«PŒ @  I>B?d Hýo“:GR @  I?B?d ˆýo3è³ @  I@B?d ÈýoŸ¢ÿm @  IAB?d þoFdñS @  IBB?d HþoÄõæ @  ICB?d ˆþoS§ò9 @  IDB?d ÈþoÑ6åç @  IEB?d ÿoÝì$× @  IFB?d Hÿo_}3  @  IGB?d ˆÿoÃÔƒ* @  IHuÐpB?d Èÿox‚H! @  II B?d pf^‹ü @  IJ B?d `päÏœ" @  IK B?d  psˆ– @  IL B?d àpñ ŸH @  IM B?d p1H @  IN  B?d `p‡ – @  IO !B?d  p¶¨œU @  IP "B?d àp49‹‹ @  IQ #B?d píÿ…µ @  IR $B?d `pon’k @  IS %B?d  pø<†ß @  IT &B?d àpz­‘ @  IU 'B?d pvwP1 @  IV (B?d `pôæGï @  IW )B?d  phO÷Ì @  IX *B?d àpêÞà @  IY +B?d p·½â @  IZ ,B?d `p5ƒª< @  I[ -B?d  p¢Ñ¾ˆ @  I\ .B?d àp @©V @  I] /B?d pIÊ Š @  I^ 0B?d `pË[T @  I_ 1B?d  pëU´' @  I` 2B?d àpiÄ£ù @  Ia 3B?d p°­Ç @  Ib 4B?d `p2“º @  Ic 5B?d  p¥Á®­ @  Id 6B?d àp'P¹s @  Ie 7B?d p+ŠxC @  If 8B?d `p©o @  Ig 9B?d  p5²ß¾ @  Ih :B?d àp·#È` @  Ii ;B?d pÇ^ê‚ @  Ij B?d àpP þ6 @  Im ?B?d pTaq' @  In @B?d ` pÖðfù @  Io AB?d   pçøè: @  Ip BB?d à peiÿä @  Iq CB?d p¼¯ñÚ @  Ir DB?d ` p>>æ @  Is EB?d   p©lò° @  It FB?d à p+ýån @  Iu GB?d p''$^ @  Iv HB?d ` p¥¶3€ @  Iw IB?d   p9ƒ£ @  Ix JB?d à p»Ž”} @  Iy KB?d pæBÉ @  Iz LB?d ` pdÓÞS @  I{ MB?d   póÊç @  I| NB?d à pqÝ9 @  I} OB?d pš~å @  I~ PB?d ` pš i; @  I QB?d   p÷Töë @  I€ RB?d à puÅá5 @  I SB?d p¬ï  @  I‚ TB?d `p.’øÕ @  Iƒ UB?d  p¹Àìa @  I„ VB?d àp;Qû¿ @  I… WB?d p7‹: @  I† XB?d `pµ-Q @  I‡ YB?d  p)³r @  Iˆ ZB?d àp«"Ь @  I‰ [B?d pQ~˜á @  IŠ \B?d `pÓï? @  I‹ ]B?d  pD½›‹ @  IŒ ^B?d àpÆ,ŒU @  I _B?d p2U @  IŽ `B?d `p°€‹ @  I aB?d  pˆH @  I bB?d àp˜– @  I‘ cB?d pÚß–¨ @  I’ dB?d `pXNv @  I“ eB?d  pϕ @  I” fB?d àpM‚ @  I• gB?d pAWC, @  I– hB?d `pÃÆTò @  I— iB?d  p_oäÑ @  I˜ jB?d àpÝþó @  I™ kB?d p€2®ÿ @  Iš lB?d `p£¹! @  I› mB?d  p•ñ­• @  Iœ nB?d àp`ºK @  I oB?d p~ê— @  Iž pB?d `pü{I @  IŸ qB?d  pÜu§: @  I  rB?d àp^ä°ä @  I¡ sB?d p‡"¾Ú @  I¢ tB?d `p³© @  I£ uB?d  p’á½° @  I¤ vB?d àppªn @  I¥ wB?d pªk^ @  I¦ xB?d `pž;|€ @  I§ yB?d  p’Ì£ @  I¨ zB?d àp€Û} @  I© {B?d pð~ùŸ @  Iª |B?d `prïîA @  I« }B?d  på½úõ @  I¬ ~B?d àpg,í+ @  I­ B?d p~‡6¨ @  I® €B?d `pü!v @  I¯ B?d  pͯµ @  I° ‚B?d àpO¸k @  I± ƒB?d p–I¶U @  I² „B?d `pØ¡‹ @  I³ …B?d  pƒŠµ? @  I´ †B?d àp¢á @  Iµ ‡B?d p ÁcÑ @  I¶ ˆB?d `pPt @  I· ‰B?d  pùÄ, @  I¸ ŠB?d àp‘hÓò @  I¹ ‹B?d p̤Ž @  Iº ŒB?d `pN5™Ü @  I» B?d  pÙgh @  I¼ ŽB?d àp[öš¶ @  I½ B?d p2|9j @  I¾ B?d `p°í.´ @  I¿ ‘B?d  p>äU @  IÀ ’B?d àp¼u–‹ @  IÁ “B?d pe³˜µ @  I ”B?d `pç"k @  Ià •B?d  ppp›ß @  IÄ –B?d àpòጠ@  IÅ —B?d pþ;M1 @  IÆ ˜B?d `p|ªZï @  IÇ ™B?d  pàêÌuÐ p @  IÈ šB?d àpb’ý @  IÉ ›B?d 8 pW‹ @  IÊ œB?d x pÕŠšU @  IË B?d ¸ pBØŽá @  IÌ žB?d ø pÀI™? @  IÍ ŸB?d 8!p4t? @  IÎ  B?d x!p¶åá @  IÏ ¡B?d ¸!p‡íš" @  IÐ ¢B?d ø!p|ü @  IÑ £B?d 8"pܺƒÂ @  IÒ ¤B?d x"p^+” @  IÓ ¥B?d ¸"pÉy€¨ @  IÔ ¦B?d ø"pKè—v @  IÕ §B?d 8#pG2VF @  IÖ ¨B?d x#pÅ£A˜ @  I× ©B?d ¸#pY ñ» @  IØ ªB?d ø#pÛ›æe @  IÙ «B?d 8$p†W»• @  IÚ ¬B?d x$pƬK @  IÛ ­B?d ¸$p“”¸ÿ @  IÜ ®B?d ø$p¯! @  IÝ ¯B?d 8%px ý @  IÞ °B?d x%pú# @  Iß ±B?d ¸%pÚ²P @  Ià ²B?d ø%pX¥Ž @  Iá ³B?d 8&p¸€we @  Iâ´B?d€ x&pûV—» @  JµB?d ¸&pEË& @  J¶B?d ø&pÔÜø @  J·B?d 8'pÆGæ% @  J¸B?d x'pDÖñû @  J¹B?d ¸'pÍ¢ @  JºB?d ø'p”\ | @  J»B?d 8(p*“tä @  J¼B?d x(p¨c: @  J ½B?d ¸(púŒc @  J ¾B?d ø(pxˆ›½ @  J ¿B?d 8)p¹¬ïA @  J ÀB?d x)p;=øŸ @  J ÁB?d ¸)pi&Æ @  JÂB?d ø)pë· @  JÃB?d 8*pQbo¼ @  JÄB?d x*pÓóxb @  JÅB?d ¸*pè—; @  JÆB?d ø*py€å @  JÇB?d 8+pÊêº8 @  JÈB?d x+pH{­æ @  JÉB?d ¸+p`B¿ @  JÊB?d ø+p˜ñUa @  JËB?d 8,p Wë @  JÌB?d x,p‰@5 @  JÍB?d ¸,pÛ¯l @  JÎB?d ø,pY”¸² @  JÏB?d 8-põWàƒ @  JÐB?d x-pwÆ÷] @  JÑB?d ¸-p%Ý @  JÒB?d ø-p§LÚ @  JÓB?d 8.p ŸGÎ @  J ÔB?d x.pŽP @  J!ÕB?d ¸.pÜ¿I @  J"ÖB?d ø.p^„¨— @  J#×B?d 8/p—’J @  J$ØB?d x/p†…” @  J%ÙB?d ¸/pGjÍ @  J&ÚB?d ø/pÅ } @  J'ÛB?d 80pñâ0$ @  J(ÜB?d x0pss'ú @  J)ÝB?d ¸0p!hÈ£ @  J*ÞB?d ø0p£ùß} @  J+ßB?d 81p’¾ @  J,àB?d x1p©N @  J-áB?d ¸1pBF @  J.âB?d ø1pÀ–QÉ @  J/ãB?d 82pzC>m @  J0äB?d x2pøÒ)³ @  J1åB?d ¸2pªÉÆê @  J2æB?d ø2p(XÑ4 @  J3çB?d 83páËëé @  J4èB?d x3pcZü7 @  J5éB?d ¸3p1An @  J6êB?d ø3p³Ð° @  J7ëB?d 84p ®: @  J8ìB?d x4p¢?ä @  J9íB?d ¸4pð$þ½ @  J:îB?d ø4prµéc @  J;ïB?d 85pÞv±R @  J<ðB?d x5p\禌 @  J=ñB?d ¸5püIÕ @  J>òB?d ø5pŒm^  @  J?óB?d 86p‰¹ @  J@ôB?d x6p (S @  JAõB?d ¸6pY3è  @  JBöB?d ø6pÛ¢ÿÔ @  JC÷B?d 87p1Å  @  JDøB?d x7p Ò× @  JEùB?d ¸7p»=Ž @  JFúB?d ø7p@**P @  JGûB?d 88pþåWÈ @  JHüB?d x8p|t@ @  JIýB?d ¸8p.o¯O @  JJþB?d ø8p¬þ¸‘ @  JKÿB?d 89p{Íó @  JLC?d x9pêÚ- @  JMC?d ¸9pßñ5t @  JNC?d ø9p]`"ª @  JOC?d 8:pçµM @  JPC?d x:pe$ZÐ @  JQC?d ¸:p7?µ‰ @  JRC?d ø:pµ®¢W @  JSC?d 8;p|=˜Š @  JTC?d x;pþ¬T @  JU C?d ¸;p¬·`  @  JV C?d ø;p.&wÓ @  JW C?d 8pºHe| @  J`C?d x>p8Ùr¢ @  JaC?d ¸>pjÂû @  JbC?d ø>pèSŠ% @  JcC?d 8?p!À°ø @  JdC?d x?p£Q§& @  JeC?duÐ@p7 ¸?pñJH @  JfC?d ø?pJƒt @  Jg C?d P@p€ÈÍ @  Jh C?d @p#uÊ3 @  Ji C?d Ð@pÓ 0J @  Jj C?d ApB¼¢ @  Jk C?d PAp`ïFy @  Jl  C?d Ap@D‡ @  Jm !C?d ÐApK …þ @  Jn"C?d BpÖO%? @  Jo#C?d PBpsOý„ @  Jp$C?d BpSºÿz @  Jq%C?d ÐBp£Å @  Jr&C?d Cps‰ë @  Js'C?d PCpèÇ( @  Jt(C?d CpÈ2*þ @  Ju)C?d ÐCp8MЇ @  Jv*C?d Dp!#ˆ @  Jw+C?d PDp)¢ÅÓ @  Jx,C?d Dp WÇ- @  Jy-C?d ÐDpù(=T @  Jz.C?d Ep)`±¼ @  J{/C?d PEp×zr» @  J|0C?d Ep÷pE @  J}1C?d ÐEpðŠ< @  J~2C?d Fpš´*ý @  J3C?d PFpcããU @  J€4C?d FpCá« @  J5C?d ÐFp³iÒ @  J‚6C?d Gpc!—: @  Jƒ7C?d PGpøk6Ñ @  J„8C?d GpØž4/ @  J…9C?d ÐGp(áÎV @  J†:C?d HpBK @  J‡;C?d PHp¿¤ @  JˆC?d Ip}Ð @  J‹?C?d PIp‡€?µ @  JŒ@C?d Ip§u=K @  JAC?d ÐIpW Ç2 @  JŽBC?d JpÊNgó @  JCC?d PJpoN¿H @  JDC?d JpO»½¶ @  J‘EC?d ÐJp¿ÄGÏ @  J’FC?d KpoŒË' @  J“GC?d PKpôÆjÌ @  J”HC?d KpÔ3h2 @  J•IC?d ÐKp$L’K @  J–JC?d Lp=aD @  J—KC?d PLp5£‡ @  J˜LC?d LpV…á @  J™MC?d ÐLpå)˜ @  JšNC?d Mp5aóp @  J›OC?d PMpË{0w @  JœPC?d MpëŽ2‰ @  JQC?d ÐMpñÈð @  JžRC?d Np†µh1 @  JŸSC?d PNp2³—: @  J TC?d NpF•Ä @  J¡UC?d ÐNpâ9o½ @  J¢VC?d Op2qãU @  J£WC?d POp©;B¾ @  J¤XC?d Op‰Î@@ @  J¥YC?d ÐOpy±º9 @  J¦ZC?d PpÇo‹ @  J§[C?d PPpÏÎàÐ @  J¨\C?d Ppï;â. @  J©]C?d ÐPpDW @  Jª^C?d QpÏ ”¿ @  J«_C?d PQp¬¡nd @  J¬`C?d QpŒTlš @  J­aC?d ÐQp|+–ã @  J®bC?d Rpáo6" @  J¯cC?d PRpDoî™ @  J°dC?d Rpdšìg @  J±eC?d ÐRp”å @  J²fC?d SpD­šö @  J³gC?d PSpßç; @  J´hC?d Spÿ9ã @  JµiC?d ÐSpmÚ @  J¶jC?d Tp#0• @  J·kC?d PTp‚ÖÎ @  J¸lC?d Tp>wÔ0 @  J¹mC?d ÐTpÎ.I @  JºnC?d Up@¢¡ @  J»oC?d PUpàZa¦ @  J¼pC?d UpÀ¯cX @  J½qC?d ÐUp0Й! @  J¾rC?d Vp­”9à @  J¿sC?d PVp·•Ày @  JÀtC?d Vp—`‡ @  JÁuC?d ÐVpg8þ @  JÂvC?d Wp·W´ @  JÃwC?d PWp,ý @  JÄxC?d Wp è @  JÅyC?d ÐWpü—íz @  JÆzC?d XpÈhag @  JÇ{C?d PXpÀɇ< @  JÈ|C?d Xpà<… @  JÉ}C?d ÐXpC» @  JÊ~C?d YpÀ óS @  JËC?d PYpN0H  @  JÌ€C?d YpnÅJõ @  JÍC?d ÐYpžº°Œ @  J΂C?d ZpþM @  JσC?d PZp¦þÈö @  JЄC?d Zp† Ê @  JÑ…C?d ÐZpvt0q @  JÒ†C?d [p¦<¼™ @  JÓ‡C?d P[p=vr @  JÔˆC?d [pƒŒ @  JÕ‰C?d Ð[píüåõ @  JÖŠC?d \pô²ú @  J׋C?d P\püð¡ @  JØŒC?d \pÜæò_ @  JÙC?d Ð\p,™& @  JÚŽC?d ]püфΠ@  JÛC?d P]pËGÉ @  JÜC?d ]p">E7 @  JÝ‘C?d Ð]pÒA¿N @  JÞ’C?d ^pO @  Jß“C?d P^pûà„ @  Jà”C?d ^pÛöâz @  Já•C?d Ð^p+‰ @  Jâ–C?d€ _pˆM @  K—C?d P_põ a @  K˜C?d _pÕücq @  KuÐ`p™C?d Ð_p"c…0 @  KšC?d (`pœ›0¨ @  K›C?d h`pZˆ‰‰ @  KœC?d ¨`pz}‹w @  KC?d è`pD°.t @  KžC?d (ap”ø¢œ @  K ŸC?d hap2£ª @  K  C?d ¨apé¡T @  K ¡C?d èap'ß À @  K ¢C?d (bpº› @  K £C?d hbp|ˆ¹  @  K¤C?d ¨bp\}»Þ @  K¥C?d èbpÏ = @  K¦C?d (cpY¬Õ @  K§C?d hcpAZöÓ @  K¨C?d ¨cpa¯ô- @  K©C?d ècpT™õ¹ @  KªC?d (dpM×¶ @  K«C?d hdp‹Ä¿— @  K¬C?d ¨dp«1½i @  K­C?d èdp•üj @  K®C?d (epE´”‚ @  K¯C?d hep~ç¬h @  K°C?d ¨ep^®– @  K±C?d èepk$¯ @  K²C?d (fpö`à @  K³C?d hfp0s¶â @  K´C?d ¨fp†´ @  KµC?d èfp’ìO @  K ¶C?d (gpB¤„§ @  K!·C?d hgp§Þ¡ @  K"¸C?d ¨gpÔC?d ¨npAÖÀs @  K?ÕC?d ènpm»z² @  K@ÖC?d (op½óöZ @  KA×C?d hopãð¬\ @  KBØC?d ¨opî¢ @  KCÙC?d èopö3¯6 @  KDÚC?d (ppHí„ @  KEÛC?d hppŽþª¥ @  KFÜC?d ¨pp® ¨[ @  KGÝC?d èppÆ X @  KHÞC?d (qp@ް @  KIßC?d hqpæj€† @  KJàC?d ¨qpÆŸ‚x @  KKáC?d èqpó©ƒì @  KLâC?d (rpní#- @  KMãC?d hrp¨þš  @  KNäC?d ¨rpˆ ˜ò @  KOåC?d èrpg @  KPæC?d (spË/ù @  KQçC?d hsp•,Õÿ @  KRèC?d ¨spµÙ× @  KSéC?d èsp€ïÖ• @  KTêC?d (tp™¡%š @  KUëC?d htp_²œ» @  KVìC?d ¨tpGžE @  KWíC?d ètpAŠ;F @  KXîC?d (up‘·® @  KYïC?d hupª‘D @  KZðC?d ¨upŠdº @  K[ñC?d èup¿RŒ. @  K\òC?d (vp",ï @  K]óC?d hvpä•Î @  K^ôC?d ¨vpÄð—0 @  K_õC?d èvpFš+c @  K`öC?d (wp–Ò§‹ @  Ka÷C?d hwpÈÑý @  KbøC?d ¨wpè$ÿs @  KcùC?d èwpÝþç @  KdúC?d (xpéírú @  KeûC?d hxp/þËÛ @  KfüC?d ¨xp É% @  KgýC?d èxp1Æl& @  KhþC?d (ypáŽàÎ @  KiÿC?d hypé’Êá @  KjD?d ¨ypÉgÈ @  KkD?d èypüQÉ‹ @  KlD?d (zpaiJ @  KmD?d hzp§Ðk @  KnD?d ¨zp‡óÒ• @  KoD?d èzpŸIv @  KpD?d ({pÄ×Åž @  KqD?d h{pšÔŸ˜ @  KrD?d ¨{pº!f @  Ks D?d è{pœò @  Kt D?d (|p–Yoý @  Ku D?d h|pPJÖÜ @  Kv D?d ¨|pp¿Ô" @  Kw D?d è|pNrq! @  KxD?d (}pž:ýÉ @  KyD?d h}p¥iÅ# @  KzD?d ¨}p…œÇÝ @  K{D?d è}p°ªÆI @  K|D?d (~p-îfˆ @  K}D?d h~pëýß© @  K~D?d ¨~pËÝW @  KD?d è~p3W§ @  K€D?d (pÔ{ÛO @  KD?d hpŠxI @  K‚D?d ¨puЀp'ªƒ· @  KƒD?d èpŸ»‚# @  K„D?d @€pŒ…+ @  K…€D?d €€pèò¿* @  K†€D?d À€pjc¨ô @  K‡€D?d pw–Á @  Kˆ€D?d @p„æ @  K‰€D?d €p€f•  @  KŠ€ D?d Àp÷‚× @  K‹€!D?d ‚p(4\ @  KŒ€"D?d @‚pª…#‚ @  K€#D?d €‚pÎòƒ @  KŽ€$D?d À‚pLc˜] @  K€%D?d ƒpÖ˜ˆ @  K€&D?d @ƒpGV @  K‘€'D?d €ƒpó Àp @  K’€(D?d Àƒpq±×® @  K“€)D?d „pßX2ë @  K”€*D?d @„p]É%5 @  K•€+D?d €„p9¾‰4 @  K–€,D?d À„p»/žê @  K—€-D?d …p×; ß @  K˜€.D?d @…pUª· @  K™€/D?d €…pÌšË @  Kš€0D?d À…pN  @  K›€1D?d †pdï;ž @  Kœ€2D?d @†pæ~,@ @  K€3D?d €†p‚ €A @  Kž€4D?d À†p˜—Ÿ @  KŸ€5D?d ‡pÐ+°ú @  K €6D?d @‡pRº§$ @  K¡€7D?d €‡p®Ýè @  K¢€8D?d À‡p,LÿÜ @  K£€9D?d ˆp¯e‹ @  K¤€:D?d @ˆp-…rU @  K¥€;D?d €ˆpIòÞT @  K¦€D?d @‰p%æàa @  K©€?D?d €‰pÑ6áf @  Kª€@D?d À‰pS§ö¸ @  K«€AD?d ŠpyD@3 @  K¬€BD?d @ŠpûÕWí @  K­€CD?d €ŠpŸ¢ûì @  K®€DD?d ÀŠp3ì2 @  K¯€ED?d ‹p܆ìç @  K°€FD?d @‹p^û9 @  K±€GD?d €‹p¢p´ @  K²€HD?d À‹p á£Á @  K³€ID?d ŒpŽF„ @  K´€JD?d @Œp ™QZ @  Kµ€KD?d €Œphîý[ @  K¶€LD?d ÀŒpêê… @  K·€MD?d p†kÔ° @  K¸€ND?d @púÃn @  K¹€OD?d €pÍî¤ @  Kº€PD?d Àp\ùz @  K»€QD?d Žp5¿Oñ @  K¼€RD?d @Žp·.X/ @  K½€SD?d €ŽpÓYô. @  K¾€TD?d ÀŽpQÈãð @  K¿€UD?d p/| @  KÀ€VD?d @p­íÕÙ @  KÁ€WD?d €pQŠšÿ @  K€XD?d ÀpÓ! @  KÀYD?d pÚb'Ù @  KÄ€ZD?d @pXó0 @  KÅ€[D?d €p<„œ @  KÆ€\D?d Àp¾‹Ø @  KÇ€]D?d ‘pÒµí @  KÈ€^D?d @‘pP¢3 @  KÉ€_D?d €‘pT¶% @  KÊ€`D?d À‘pÖ¡û @  KË€aD?d ’pübp @  KÌ€bD?d @’p~ó® @  KÍ€cD?d €’p„¬¯ @  K΀dD?d À’p˜»q @  KÏ€eD?d “pY »¤ @  KЀfD?d @“pÛ1¬z @  KÑ€gD?d €“p'Vã\ @  KÒ€hD?d À“p¥Çô‚ @  KÓ€iD?d ”p .Ç @  KÔ€jD?d @”p‰¿ @  KÕ€kD?d €”píȪ @  KÖ€lD?d À”poY½Æ @  K×€mD?d •pMƒó @  KØ€nD?d @•pÜ”- @  KÙ€oD?d €•pë¹ç @  KÚ€pD?d À•pšz®9 @  KÛ€qD?d –p°™² @  KÜ€rD?d @–p2l @  KÝ€sD?d €–pV£m @  KÞ€tD?d À–pÔî´³ @  K߀uD?d —p]“Ö @  Kà€vD?d @—p†Ì„ @  Ká€wD?d €—pz«Ë. @  Kâ€xD?d€ À—p~ltI @  L€yD?d ˜pu¦7 @  L€zD?d @˜pžä±é @  L€{D?d €˜p?Úæ @  L€|D?d À˜p½KñÛ @  L€}D?d ™pí” @  L€~D?d @™p|‡J @  L€D?d €™pºØ¥ @  L€€D?d À™p8Iš{ @  L €D?d šp×ã× @  L €‚D?d @špUrÀà @  L €ƒD?d €špôL—/ @  L €„D?d ÀšpvÝ€ñ @  L €…D?d ›pÔ{á¾ @  L€†D?d @›pVêö` @  L€‡D?d €›pÉžØÜ @  L€ˆD?d À›pKÏ @  L€‰D?d œp ¯Ñª @  L€ŠD?d @œp¢>Æt @  L€‹D?d €œp‘˜ @  L€ŒD?d Àœp‘†F @  L€D?d p#7ç  @  L€ŽD?d @p¡¦ð× @  L€D?d €pö#‚g @  L€D?d Àpt²•¹ @  L€‘D?d žp›Øß @  L€’D?d @žp‰Ï @  L€“D?d €žp¸·˜í @  L€”D?d Àžp:&3 @  L€•D?d Ÿp˜€î| @  L€–D?d @Ÿpù¢ @  L€—D?d €Ÿp”cð® @  L €˜DuРp?d ÀŸpòçp @  L!€™D?d  pÔ± @  L"€šD?d X p—†Ão @  L#€›D?d ˜ p6¸”ƒ @  L$€œD?d Ø p´)ƒ] @  L%€D?d ¡pâ @  L&€žD?d X¡p”õÌ @  L'€ŸD?d ˜¡p^,¾  @  L(€ D?d Ø¡pܽ©~ @  L)€¡D?d ¢p3ä @  L*€¢D?d X¢p±†óÆ @  L+€£D?d ˜¢p¸¤* @  L,€¤D?d Ø¢p’)³ô @  L-€¥D?d £p0Ò» @  L.€¦D?d X£p²Åe @  L/€§D?d ˜£p-jëÙ @  L0€¨D?d Ø£p¯ûü @  L1€©D?d ¤pÄ[⯠@  L2€ªD?d X¤pFÊõq @  L3€«D?d ˜¤pçô¢ @  L4€¬D?d ؤpeeµC @  L5€­D?d ¥pÇÃÔ  @  L6€®D?d X¥pERÃÒ @  L7€¯D?d ˜¥p×±b @  L8€°D?d Ø¥pF¦¼ @  L9€±D?d ¦pìëÚ @  L:€²D?d X¦pý}ü @  L;€³D?d ˜¦p\C«è @  L<€´D?d ئpÞÒ¼6 @  L=€µD?d §p|tÝy @  L>€¶D?d X§pþåʧ @  L?€·D?d ˜§pÞÅ9 @  L@€¸D?d اp\Òç @  LA€¹D?d ¨p³] @  LB€ºD?d X¨p˜¤ƒ @  LC€»D?d ˜¨p9¿óo @  LD€¼D?d بp».ä± @  LE€½D?d ©pˆ…þ @  LF€¾D?d X©p›’  @  LG€¿D?d ˜©p¡{Ì] @  LH€ÀD?d Ø©p#êÛƒ @  LI€ÁD?d ªpÌ@–å @  LJ€ÂD?d XªpNÑ; @  LK€ÃD?d ˜ªpïïÖ× @  LL€ÄD?d تpm~Á  @  LM€ÅD?d «pÏØ F @  LN€ÆD?d X«pMI·˜ @  LO€ÇD?d ˜«pÒ=™$ @  LP€ÈD?d Ø«pP¬Žú @  LQ€ÉD?d ¬p; R @  LR€ÊD?d X¬p¹‡Œ @  LS€ËD?d ˜¬p£Ð` @  LT€ÌD?d جpš2Ǿ @  LU€ÍD?d ­p8”¦ñ @  LV€ÎD?d X­pº±/ @  LW€ÏD?d ˜­pí€ÃŸ @  LX€ÐD?d Ø­poÔA @  LY€ÑD?d ®p€»™' @  LZ€ÒD?d X®p*Žù @  L[€ÓD?d ˜®p£Ù @  L\€ÔD?d Ø®p!…ÎË @  L]€ÕD?d ¯pƒ#¯„ @  L^€ÖD?d X¯p²¸Z @  L_€×D?d ˜¯pÀ±V @  L`€ØD?d دp Q¦ˆ @  La€ÙD?d °pÁa÷ @  Lb€ÚD?d X°pCðàC @  Lc€ÛD?d ˜°pâη¯ @  Ld€ÜD?d ذp`_ q @  Le€ÝD?d ±pÂùÁ> @  Lf€ÞD?d X±p@hÖà @  Lg€ßD?d ˜±pŠZŒ @  Lh€àD?d رpËŠR @  Li€áD?d ²pçaÇ4 @  Lj€âD?d X²peðÐê @  Lk€ãD?d ˜²pÄ· @  Ll€äD?d زpF_Ø @  Lm€åD?d ³päùñ— @  Ln€æD?d X³pfhæI @  Lo€çD?d ˜³pùÈõ @  Lp€èD?d سp{ß+ @  Lq€éD?d ´p-Áƒ @  Lr€êD?d X´p’¼Ö] @  Ls€ëD?d ˜´p3‚± @  Lt€ìD?d Ø´p±–o @  Lu€íD?d µpµ÷  @  Lv€îD?d Xµp‘$àþ @  Lw€ïD?d ˜µpÆ¡’N @  Lx€ðD?d صpD0… @  Ly€ñD?d ¶p«šÈö @  Lz€òD?d X¶p) ß( @  L{€óD?d ˜¶pˆ5ˆÄ @  L|€ôD?d ضp ¤Ÿ @  L}€õD?d ·p¨þU @  L~€öD?d X·p*“é‹ @  L€÷D?d ˜·pé°Ö$ @  L€€øD?d Ø·pk!Áú @  L€ùD?d ¸p-0 @ @  L‚€úD?d X¸p¯¡·ž @  Lƒ€ûD?d ˜¸pŸàr @  L„€üD?d ظpŒ÷¬ @  L…€ýD?d ¹p.¨–ã @  L†€þD?d X¹p¬9= @  L‡€ÿD?d ˜¹pôúÞÞ @  Lˆ€E?d عpvkÉ @  L‰€E?d ºp™Á„f @  LŠ€E?d XºpP“¸ @  L‹€E?d ˜ºpºnÄT @  LŒ€E?d غp8ÿÓŠ @  L€E?d »pšY²Å @  LŽ€E?d X»pÈ¥ @  L€E?d ˜»p‡¼‹§ @  L€E?d Ø»p-œy @  L‘€ E?d ¼pn‚Ñ @  L’€ E?d X¼pì• @  L“€ E?d ˜¼pM"Âã @  L”€ E?d ؼpϳÕ= @  L•€ E?d ½pm´r @  L–€E?d X½pï„£¬ @  L—€E?d ˜½p¸Ñ @  L˜€E?d ؽp:ÆÂ @  L™€E?d ¾pÕ:‹¤ @  Lš€E?d X¾pW«œz @  L›€E?d ˜¾pö•Ë– @  Lœ€E?d ؾptÜH @  L€E?d ¿pÖ¢½ @  Lž€E?d X¿pT3ªÙ @  LŸ€E?d ˜¿pÚA£Õ @uÐÀp  L €E?d Ø¿p%PÇw @  L¡E?d 0Àp3N{‚ @  L¢E?d pÀp±ßl\ @  L£E?d °Àpá;° @  L¤E?d ðÀp’p,n @  L¥E?d 0Áp0ÖM! @  L¦E?d pÁp²GZÿ @  L§E?d °Ápxu“ @  L¨ E?d ðÁpúäM @  L©!E?d 0ÂpNK+ @  Lª"E?d pÂp—ß\õ @  L«#E?d °Âp6á  @  L¬$E?d ðÂp´pÇ @  L­%E?d 0ÃpÖ}ˆ @  L®&E?d pÃp”GjV @  L¯'E?d °Ãp 3Dê @  L°(E?d ðÃp‰¢S4 @  L±)E?d 0ÄpâMœ @  L²*E?d pÄp`“ZB @  L³+E?d °ÄpÁ­ ® @  L´,E?d ðÄpC<p @  Lµ-E?d 0Åpáš{? @  L¶.E?d pÅpc lá @  L·/E?d °Åp4ŽQ @  L¸0E?d ðÅp¶  @  L¹1E?d 0ÆpYµDé @  Lº2E?d pÆpÛ$S7 @  L»3E?d °ÆpzÛ @  L¼4E?d ðÆpø‹ @  L½5E?d 0ÇpZ-rJ @  L¾6E?d pÇpؼe” @  L¿7E?d °ÇpøÉj  @  LÀ8E?d ðÇpzX}Ô @  LÁ9E?d 0ÈpE?d pÉp½@= @  LÇ?E?d °Ép‡"cn @  LÈ@E?d ðÉp³t° @  LÉAE?d 0Êpê9Ö @  LÊBE?d pÊphˆ. @  LËCE?d °Êpɶyä @  LÌDE?d ðÊpK'n: @  LÍEE?d 0Ëpéu @  LÎFE?d pËpk« @  LÏGE?d °Ëpôd6 @  LÐHE?d ðËpvõ!É @  LÑIE?d 0ÌpU?a @  LÒJE?d pÌpŸÄ(¿ @  LÓKE?d °Ìp>úS @  LÔLE?d ðÌp¼kh @  LÕME?d 0ÍpÍ Â @  LÖNE?d pÍpœ\ @  L×OE?d °ÍpËÙl¬ @  LØPE?d ðÍpIH{r @  LÙQE?d 0Îp¦â6 @  LÚRE?d pÎp$s!Ê @  LÛSE?d °Îp…Mv& @  LÜTE?d ðÎpÜaø @  LÝUE?d 0Ïp¥z· @  LÞVE?d pÏp'ëi @  LßWE?d °Ïp©™e @  LàXE?d ðÏp+ » @  LáYE?d 0Ðpç8X® @  LâZE?d€ pÐpjSÖ @  M[E?d °ÐpQL @  M\E?d ðÐpÓ„[Í @  M]E?d 0Ñp´kÁo @  M^E?d pÑp6úÖ± @  M_E?d °Ñp2z§ @  M`E?d ðÑp°ëÕy @  MaE?d 0Òp‘óÇe @  MbE?d pÒpbл @  M cE?d °Òpw|º @  M dE?d ðÒpõ„kd @  M eE?d 0Óp’kñÆ @  M fE?d pÓpúæ @  M gE?d °Ópì©> @  MhE?d ðÓpn ¾à @  MiE?d 0Ôpf¿ÁÒ @  MjE?d pÔpä.Ö  @  MkE?d °Ôp€Yz  @  MlE?d ðÔpÈmÓ @  MmE?d 0Õpe'÷q @  MnE?d pÕpç¶à¯ @  MoE?d °Õp~Íe @  MpE?d ðÕpüÚ» @  MqE?d 0ÖpÝȧ @  MrE?d pÖp_™ßy @  MsE?d °Öp;îsx @  MtE?d ðÖp¹d¦ @  MuE?d 0×pÞþ @  MvE?d p×p\éÚ @  MwE?d °×p f¦ü @  MxE?d ð×p"÷±" @  MyE?d 0Øpó–² @  M zE?d pØp”bl @  M!{E?d °Øpð-m @  M"|E?d ðØpr„:³ @  M#}E?d 0Ùpk  @  M$~E?d pÙp—ú·Ï @  M%E?d °Ùp~ìâZ @  M&€E?d ðÙpü}õ„ @  M'E?d 0ÚpÝeç˜ @  M(‚E?d pÚp_ôðF @  M)ƒE?d °Úp;ƒ\G @  M*„E?d ðÚp¹K™ @  M+…E?d 0ÛpÞýÑ; @  M,†E?d pÛp\lÆå @  M-‡E?d °Ûp  ‰Ã @  M.ˆE?d ðÛp"šž @  M/‰E?d 0Üp*)á/ @  M0ŠE?d pÜp¨¸öñ @  M1‹E?d °ÜpÌÏZð @  M2ŒE?d ðÜpN^M. @  M3E?d 0Ýp)±×Œ @  M4ŽE?d pÝp« ÀR @  M5E?d °Ýp2í˜ @  M6E?d ðÝp°†úF @  M7‘E?d 0Þp‘žèZ @  M8’E?d pÞpÿ„ @  M9“E?d °ÞpwxS… @  M:”E?d ðÞpõéD[ @  M;•E?d 0ßp’Þù @  M<–E?d pßp—É' @  M=—E?d uÐàp/°ßpìð† @  M>˜E?d ðßpá⣠@  M?€™E?d Hàp¤¹J @  M@€šE?d ˆàp„L´ @  MA€›E?d ÈàpB_ª• @  MB€œE?d áp’&} @  MC€E?d Háp§!'é @  MD€žE?d ˆáp‡Ô% @  ME€ŸE?d Èáp!0$! @  MF€ E?d âp¼t„à @  MG€¡E?d Hâp‚¹!ã @  MH€¢E?d ˆâp¢L# @  MI€£E?d Èâpd_š< @  MJ€¤E?d ãp´Ô @  MK€¥E?d Hãp!@ @  ML€¦E?d ˆãp¡Ô¾ @  MM€§E?d Èãpÿ×O¸ @  MN€¨E?d äp晼· @  MO€©E?d Häpuõ'T @  MP€ªE?d ˆäpU%ª @  MQ€«E?d Èäp“œ‹ @  MR€¬E?d åpC[c @  MS€­E?d Håpvm÷ @  MT€®E?d ˆåpV˜  @  MU€¯E?d ÈåpmË+ã @  MV€°E?d æpð‹" @  MW€±E?d HæpÎB.! @  MX€²E?d ˆæpî·,ß @  MY€³E?d Èæp(¤•þ @  MZ€´E?d çpøì @  M[€µE?d HçpÍÚ‚ @  M\€¶E?d ˆçpí/| @  M]€·E?d Èçp³,@z @  M^€¸E?d èp‡ÓÌg @  M_€¹E?d Hèp¹p4 @  M`€ºE?d ˆèp%LrÊ @  Ma€»E?d Èèpã_Ëë @  Mb€¼E?d ép3G @  Mc€½E?d Hép!F— @  Md€¾E?d ˆép&ÔDi @  Me€¿E?d Èépp`PN @  Mf€ÀE?d êpí$ð @  Mg€ÁE?d HêpÓéUŒ @  Mh€ÂE?d ˆêpóWr @  Mi€ÃE?d Èêp5îS @  Mj€ÄE?d ëpåGb» @  Mk€ÅE?d HëpÐqc/ @  Ml€ÆE?d ˆëpð„aÑ @  Mm€ÇE?d Èëp®‡;× @  Mn€ÈE?d ìp·ÉÈØ @  Mo€ÉE?d Hìp$¥S; @  Mp€ÊE?d ˆìpPQÅ @  Mq€ËE?d ÈìpÂCèä @  Mr€ÌE?d íp d  @  Ms€ÍE?d Híp'=e˜ @  Mt€ÎE?d ˆípÈgf @  Mu€ÏE?d Èíp<›_Œ @  Mv€ÐE?d îp¡ßÿM @  Mw€ÑE?d HîpŸZN @  Mx€ÒE?d ˆîp¿çX° @  My€ÓE?d Èîpyôá‘ @  Mz€ÔE?d ïp©¼my @  M{€ÕE?d HïpœŠlí @  M|€ÖE?d ˆïp¼n @  M}€×E?d Èïpâ|4 @  M~€ØE?d ðp\¢ˆ§ @  M€ÙE?d Hðp“™W @  M€€ÚE?d ˆðp³l© @  M€ÛE?d Èðpu¹ˆ @  M‚€ÜE?d ñp¥75` @  Mƒ€ÝE?d Hñp4ô @  M„€ÞE?d ˆñp°ô6  @  M…€ßE?d Èñp7< @  M†€àE?d òp‹T—ý @  M‡€áE?d Hòpµ™2þ @  Mˆ€âE?d ˆòp•l0 @  M‰€ãE?d ÈòpS‰! @  MŠ€äE?d ópƒ7É @  M‹€åE?d Hóp¶] @  MŒ€æE?d ˆóp–ô£ @  M€çE?d ÈópÈ÷\¥ @  MŽ€èE?d ôpѹ¯ª @  M€éE?d HôpBÕ4I @  M€êE?d ˆôpb 6· @  M‘€ëE?d Èôp¤3– @  M’€ìE?d õpt{~ @  M“€íE?d HõpAMê @  M”€îE?d ˆõpa¸ @  M•€ïE?d ÈõpZë8þ @  M–€ðE?d öpǯ˜? @  M—€ñE?d Höpùb=< @  M˜€òE?d ˆöpÙ—? @  M™€óE?d Èöp„†ã @  Mš€ôE?d ÷pÏÌ  @  M›€õE?d H÷púú Ÿ @  Mœ€öE?d ˆ÷pÚ a @  M€÷E?d È÷p„ Sg @  Mž€øE?d øp°óßz @  MŸ€ùE?d Høp2™c) @  M €úE?d ˆøpla× @  M¡€ûE?d ÈøpÔØö @  M¢€üE?d ùp7T @  M£€ýE?d Hùp1UŠ @  M¤€þE?d ˆùpôWt @  M¥€ÿE?d Èùp—Ãwè @  M¦€F?d úp ‡×) @  M§€F?d Húp4Jr* @  M¨€F?d ˆúp¿pÔ @  M©€F?d ÈúpÒ¬Éõ @  Mª€F?d ûpäE @  M«€F?d Hûp7ÒD‰ @  M¬€F?d ˆûp'Fw @  M­€F?d ÈûpI$q @  M®€F?d üpPjï~ @  M¯€ F?d HüpÃt @  M°€ F?d ˆüpãóvc @  M±€ F?d Èüp%àÏB @  M²€ F?d ýpõ¨Cª @  M³€ F?d HýpÀžB> @  M´€F?d ˆýpàk@À @  Mµ€F?d ÈýpÛ8x* @  M¶€F?d þpF|Øë @  M·€F?d Hþpx±}è @  M¸€F?d ˆþpXD @  M¹€F?d ÈþpžWÆ7 @  Mº€F?d ÿpNJß @  M»€F?d Hÿp{)KK @  M¼€F?d ˆÿp[ÜIµ @  M½€uÐqF?d Èÿpß³ @  M¾€F?d qJk;B @  M¿€F?d `qfƒ @  MÀ€F?d  qFóƒ} @  MÁ€F?d àq€à:\ @  M€F?d qP¨¶´ @  MÀF?d `qež·  @  MÄ€F?d  qEkµÞ @  MÅ€F?d àqã´è @  MÆ€ F?d q~Ë) @  MÇ€!F?d `q@±* @  MÈ€"F?d  q`ó³Ô @  MÉ€#F?d àq¦à õ @  MÊ€$F?d qv¨† @  MË€%F?d `qCž‡‰ @  MÌ€&F?d  qck…w @  MÍ€'F?d àq=hßq @  M΀(F?d q$&,~ @  MÏ€)F?d `q·J· @  MЀ*F?d  q—¿µc @  MÑ€+F?d àqQ¬ B @  MÒ€,F?d q䀪 @  MÓ€-F?d `q´Ò> @  MÔ€.F?d  q”'ƒÀ @  MÕ€/F?d àq¯t»* @  MÖ€0F?d q20ë @  M×€1F?d `q ý¾è @  MØ€2F?d  q,¼ @  MÙ€3F?d àqê7 @  MÚ€4F?d q:S‰ß @  MÛ€5F?d `qeˆK @  MÜ€6F?d  q/е @  MÝ€7F?d àqq“г @  MÞ€8F?d qEl\® @  M߀9F?d `qÇàý @  Mà€:F?d  qçóâ @  Má€;F?d àq!à[" @  Mâ€F?d   qÄmk‰ @  N€?F?d à qW„C @  N€@F?d qÊÔ$‚ @  N€AF?d ` q:«Þû @  N€BF?d   q^Ü @  N€CF?d à qÿ:^ @  N€DF?d q·¶¶ @  N €EF?d ` q2ÈLÏ @  N €FF?d   q=N1 @  N €GF?d à q‰wïÚ @  N €HF?d q9Õ @  N €IF?d ` q`Fæ¬ @  N€JF?d   q@³äR @  N€KF?d à qå³<é @  N€LF?d q5û° @  N€MF?d ` qÅ„Jx @  N€NF?d   qåqH† @  N€OF?d à qk‹ @  N€PF?d q†/+@ @  N€QF?d `qvPÑ9 @  N€RF?d  qV¥ÓÇ @  N€SF?d àq^5œ @  N€TF?d qŽL¹t @  N€UF?d `q~3C  @  N€VF?d  q^ÆAó @  N€WF?d àqÅŒà @  N€XF?d q{R\ª @  N€YF?d `q‹-¦Ó @  N€ZF?d  q«Ø¤- @  N€[F?d àqÞ[& @  N €\F?d qÏ–×Î @  N!€]F?d `q?é-· @  N"€^F?d  q/I @  N#€_F?d àq|±Õ’ @  N$€`F?d qáõuS @  N%€aF?d `qŠ* @  N&€bF?d  q1Ô @  N'€cF?d àq9Þk @  N(€dF?d qé–çg @  N)€eF?d `qé @  N*€fF?d  q9à @  N+€gF?d àq¢V¾  @  N,€hF?d q»M @  N-€iF?d `qKg·} @  N.€jF?d  qk’µƒ @  N/€kF?d àqÎ’m8 @  N0€lF?d qÚáÐ @  N1€mF?d `q @  N2€nF?d  qÎPW @  N3€oF?d àq0JÚP @  N4€pF?d q­z‘ @  N5€qF?d `q]q€è @  N6€rF?d  q}„‚ @  N7€sF?d àqu%dM @  N8€tF?d q¥mè¥ @  N9€uF?d `qUÜ @  N:€vF?d  quç" @  N;€wF?d àqî­±É @  N<€xF?d qÚR=Ô @  N=€yF?d `q*-Ç­ @  N>€zF?d  q ØÅS @  N?€{F?d àqÙ<Ê @  N@€|F?d qÀ‘°" @  NA€}F?d `q0îJ[ @  NB€~F?d  qH¥ @  NC€F?d àqž óý @  ND€€F?d qdS< @  NE€F?d `qó©E @  NF€‚F?d  qÓî«» @  NG€ƒF?d àqÛOMà @  NH€„F?d q Á @  NI€…F?d `qûx;q @  NJ€†F?d  qÛ9 @  NK€‡F?d àq@ǘd @  NL€ˆF?d qY‰kk @  NM€‰F?d `q©ö‘ @  NN€ŠF?d  q‰“ì @  NO€‹F?d àq,KW @  NP€ŒF?d qüKÇ¿ @  NQ€F?d `q 4=Æ @  NR€ŽF?d  q,Á?8 @  NS€F?d àqÒÛü? @  NT€F?d qOŸ\þ @  NU€‘F?d `q¿à¦‡ @  NV€’F?d  qŸ¤y @  NW€“F?d àq—´B" @  NX€”F?d qGüÎÊ @  NY€•F?d `q·ƒ4³ @  NZ€–F?d  q—v6MuÐ q @  N[€—F?d àq <—¦ @  N\€˜F?d 8 q}7IÀ @  N]€™F?d x qH³¹ @  N^€šF?d ¸ q­½±G @  N_€›F?d ø q»NL @  N`€œF?d 8!qÉó¤ @  Na€F?d x!q9Œ8Ý @  Nb€žF?d ¸!qy:# @  Nc€ŸF?d ø!qzÔÀø @  Nd€ F?d 8"qç`9 @  Ne€¡F?d x"qïš@ @  Nf€¢F?d ¸"q7˜¾ @  Ng€£F?d ø"q?»~å @  Nh€¤F?d 8#qïóò  @  Ni€¥F?d x#qŒt @  Nj€¦F?d ¸#q?y Š @  Nk€§F?d ø#q¤3«a @  Nl€¨F?d 8$q½}Xn @  Nm€©F?d x$qM¢ @  Nn€ªF?d ¸$qm÷ é @  No€«F?d ø$qÈ÷xR @  Np€¬F?d 8%q¿ôº @  Nq€­F?d x%qèÀà @  Nr€®F?d ¸%qÈ5 = @  Ns€¯F?d ø%q6/Ï: @  Nt€°F?d 8&q«koû @  Nu€±F?d x&q[•‚ @  Nv€²F?d ¸&q{á—| @  Nw€³F?d ø&qs@q' @  Nx€´F?d 8'q£ýÏ @  Ny€µF?d x'qSw¶ @  Nz€¶F?d ¸'qs‚H @  N{€·F?d ø'qèȤ£ @  N|€¸F?d 8(qÜ7(¾ @  N}€¹F?d x(q,HÒÇ @  N~€ºF?d ¸(q ½Ð9 @  N€»F?d ø(qõê‘ @  N€€¼F?d 8)q%¢•y @  N€½F?d x)qÕÝo @  N‚€¾F?d ¸)qõ(mþ @  Nƒ€¿F?d ø)qfÕ‚4 @  N„€ÀF?d 8*qû‘"õ @  N…€ÁF?d x*q îØŒ @  N†€ÂF?d ¸*q+Úr @  N‡€ÃF?d ø*q#º<) @  Nˆ€ÄF?d 8+qóò°Á @  N‰€ÅF?d x+qJ¸ @  NŠ€ÆF?d ¸+q#xHF @  N‹€ÇF?d ø+q¸2é­ @  NŒ€ÈF?d 8,q¡|¢ @  N€ÉF?d x,qQàÛ @  NŽ€ÊF?d ¸,qqöâ% @  N€ËF?d ø,qÔö:ž @  N€ÌF?d 8-q¾¶v @  N‘€ÍF?d x-qôÁL @  N’€ÎF?d ¸-qÔ4Nñ @  N“€ÏF?d ø-q*.ö @  N”€ÐF?d 8.q·j-7 @  N•€ÑF?d x.qG×N @  N–€ÒF?d ¸.qgàÕ° @  N—€ÓF?d ø.qoA3ë @  N˜€ÔF?d 8/q¿ ¿ @  N™€ÕF?d x/qOvEz @  Nš€ÖF?d ¸/qoƒG„ @  N›€×F?d ø/qôÉæo @  Nœ€ØF?d 80qJZÝ @  N€ÙF?d x0qºh ¤ @  Nž€ÚF?d ¸0qš¢Z @  NŸ€ÛF?d ø0q.›]Q @  N €ÜF?d 81qþÓѹ @  N¡€ÝF?d x1q¬+À @  N¢€ÞF?d ¸1q.Y)> @  N£€ßF?d ø1qMôÓå @  N¤€àF?d 82qаs$ @  N¥€áF?d x2q ω] @  N¦€âF?d ¸2q:‹£ @  N§€ãF?d ø2q›mø @  N¨€äF?d 83qØÓá @  N©€åF?d x3q(¬i @  Nª€æF?d ¸3qY— @  N«€çF?d ø3q“¸| @  N¬€èF?d 84qŠ]Ks @  N­€éF?d x4qz"±  @  N®€êF?d ¸4qZ׳ô @  N¯€ëF?d ø4qÿ×kO @  N°€ìF?d 85q/Ÿç§ @  N±€íF?d x5qßàÞ @  N²€îF?d ¸5qÿ  @  N³€ïF?d ø5qÜ' @  N´€ðF?d 86qœK|æ @  Nµ€ñF?d x6ql4†Ÿ @  N¶€òF?d ¸6qLÁ„a @  N·€óF?d ø6qD`b: @  N¸€ôF?d 87q”(îÒ @  N¹€õF?d x7qdW« @  Nº€öF?d ¸7qD¢U @  N»€÷F?d ø7qßè·¾ @  N¼€øF?d 88që;£ @  N½€ùF?d x8qhÁÚ @  N¾€úF?d ¸8q;Ã$ @  N¿€ûF?d ø8q!œ:½ @  NÀ€üF?d 89qñÔ¶U @  NÁ€ýF?d x9q«L, @  N€þF?d ¸9q!^NÒ @  NÀÿF?d ø9qР† @  NÄ€G?d 8:qMFG @  NÅ€G?d x:q½9ú> @  NÆ€G?d ¸:qÌøÀ @  NÇ€G?d ø:q•m› @  NÈ€G?d 8;qE%’s @  NÉ€G?d x;qµZh  @  NÊ€G?d ¸;q•¯jô @  NË€G?d ø;qåË @  NÌ€G?d 8q½… @  NÕ€G?d x>qñÂõü @  NÖ€G?d ¸>qÑ7÷ @  N×€G?d ø>qÙ–Y @  NØ€G?d 8?q Þ± @  NÙ€G?d x?qù¡gÈ @  NÚ€G?duÐ@q7 ¸?qÙTe6 @  NÛ€G?d ø?q?ž·¡ @  NÜG?d P@qü2  @  NÝG?d @q®)âÄ @  NÞG?d Ð@q,¸õ @  NßG?d AqÊg‘' @  NàG?d PAqHö†ù @  NáG?d Aqíi  @  NâG?d€ ÐAqì¿bØ @  OG?d Bqq†g5 @  O G?d PBqópë @  O!G?d BqdEd_ @  O"G?d ÐBqæÔs @  O#G?d CqrQ– @  O$G?d PCqðFH @  O%G?d Cql&ök @  O&G?d ÐCqî·áµ @  O 'G?d Dq+k_b @  O (G?d PDq©úH¼ @  O )G?d Dq>¨\ @  O *G?d ÐDq¼9KÖ @  O +G?d Eq(óiÁ @  O,G?d PEqªb~ @  O-G?d Eq›jðÜ @  O.G?d ÐEqûç @  O/G?d Fq=}h÷ @  O0G?d PFq¿ì) @  O1G?d Fq(¾k @  O2G?d ÐFqª/|C @  O3G?d Gq>å^T @  O4G?d PGq¼tIŠ @  O5G?d Gq Ýù© @  O6G?d ÐGq¢Lîw @  O7G?d HqJ!/² @  O8G?d PHqȰ8l @  O9G?d Hq_â,Ø @  O:G?d ÐHqÝs; @  O;G?d IqI¹ @  OG?d ÐIqi·°b @  O!?G?d Jq ÖZ @  O"@G?d PJq¢G„ @  O#AG?d Jq50 @  O$BG?d ÐJq·„î @  O%CG?d Kq#N%ù @  O&DG?d PKq¡ß2' @  O'EG?d Kq=v‚ @  O(FG?d ÐKq¿ç•Ú @  O)GG?d Lqz;+  @  O*HG?d PLqøª<Ó @  O+IG?d Lqoø(g @  O,JG?d ÐLqíi?¹ @  O-KG?d Mqy£® @  O.LG?d PMqû2 p @  O/MG?d MqÊ:„³ @  O0NG?d ÐMqH«“m @  O1OG?d Nql-˜ @  O2PG?d PNqî¼ F @  O3QG?d Nqyîò @  O4RG?d ÐNqû, @  O5SG?d Oqoµ*; @  O6TG?d POqí$=å @  O7UG?d OqqÆ @  O8VG?d ÐOqóš @  O9WG?d Pq‘Pkr @  O:XG?d PPqÁ|¬ @  O;YG?d Pq„“h @  O<ZG?d ÐPqÆ @  O=[G?d Qq’È]Ñ @  O>\G?d PQqYJ @  O?]G?d QqžPåî @  O@^G?d ÐQqÁò0 @  OA_G?d Rq¥ðD @  OB`G?d PRq'aSÇ @  OCaG?d Rq°3Gs @  ODbG?d ÐRq2¢P­ @  OEcG?d Sq¦hrº @  OFdG?d PSq$ùed @  OGeG?d Sq¸PÕG @  OHfG?d ÐSq:Á™ @  OIgG?d Tqÿ|N @  OJhG?d PTq}Œk @  OKiG?d TqêÞ$ @  OLjG?d ÐTqhOhú @  OMkG?d Uqü…Jí @  ONlG?d PUq~]3 @  OOmG?d UqOÓð @  OPnG?d ÐUqÍÄ. @  OQoG?d Vqé KÛ @  ORpG?d PVqkš\ @  OSqG?d VqüÈH± @  OTrG?d ÐVq~Y_o @  OUsG?d Wqê“}x @  OVtG?d PWqhj¦ @  OWuG?d Wqô«Ú… @  OXvG?d ÐWqv:Í[ @  OYwG?d XqžW ž @  OZxG?d PXqÆ@ @  O[yG?d Xq‹”ô @  O\zG?d ÐXq * @  O]{G?d YqÏ:= @  O^|G?d PYq^-ã @  O_}G?d Yq?P„ @  O`~G?d ÐYq½Á“N @  OaG?d Zqéfdä @  Ob€G?d PZqk÷s: @  OcG?d Zqü¥gŽ @  Od‚G?d ÐZq~4pP @  OeƒG?d [qêþRG @  Of„G?d P[qhoE™ @  Og…G?d [qôÆõº @  Oh†G?d Ð[qvWâd @  Oi‡G?d \q³‹\³ @  OjˆG?d P\q1Km @  Ok‰G?d \q¦H_Ù @  OlŠG?d Ð\q$ÙH @  Om‹G?d ]q°j @  OnŒG?d P]q2‚}Î @  OoG?d ]qŠó  @  OpŽG?d Ð]qäÓ @  OqG?d ^q¥k& @  OrG?d P^q' |ø @  Os‘G?d ^q°^hL @  Ot’G?d Ð^q2Ï’ @  Ou“G?d _q¦]… @  Ov”G?d P_q$”J[ @  Ow•G?d _q¸=úx @  OuÐ`qx–G?d Ð_q:¬í¦ @  Oy—G?d (`qXÆæ @  Oz˜G?d h`qÚW8 @  O{™G?d ¨`qMŒ @  O|šG?d è`qÏ”R @  O}›G?d (aq[^#E @  O~œG?d haqÙÏ4› @  OG?d ¨aq´«K @  O€žG?d èaq6¼• @  OŸG?d (bq0 ¼ @  O‚ G?d hbq ¡b @  Oƒ¡G?d ¨bqšó Ö @  O„¢G?d èbqb @  O…£G?d (cqŒ¨< @  O†¤G?d hcq9+Á @  O‡¥G?d ¨cq’›â @  Oˆ¦G?d ècqŒ< @  O‰§G?d (dqÕÝ2ë @  OЍG?d hdqWL%5 @  O‹©G?d ¨dqÀ1 @  OŒªG?d èdqB&_ @  O«G?d (eqÖEH @  OެG?d heqTÔ– @  O­G?d ¨eqeÜU @  O®G?d èeqçMŠ‹ @  O‘¯G?d (fqÃË~ @  O’°G?d hfqAZ  @  O“±G?d ¨fqÖ @  O”²G?d èfqT™Ê @  O•³G?d (gqÀS3Ý @  O–´G?d hgqBÂ$ @  O—µG?d ¨gqÞk”  @  O˜¶G?d ègq\úƒþ @  O™·G?d (hq´—B; @  Oš¸G?d hhq6Uå @  O›¹G?d ¨hq¡TAQ @  OœºG?d èhq#ÅV @  O»G?d (iq·t˜ @  Ož¼G?d hiq5žcF @  OŸ½G?d ¨iqÊ5 @  O ¾G?d èiq—Ýë @  O¡¿G?d (jqÞ`~Ó @  O¢ÀG?d hjq\ñi  @  O£ÁG?d ¨jqË£}¹ @  O¤ÂG?d èjqI2jg @  O¥ÃG?d (kqÝøHp @  O¦ÄG?d hkq_i_® @  O§ÅG?d ¨kqÃÀï @  O¨ÆG?d èkqAQøS @  O©ÇG?d (lq„F„ @  OªÈG?d hlqQZ @  O«ÉG?d ¨lq‘NEî @  O¬ÊG?d èlqßR0 @  O­ËG?d (mq‡p' @  O®ÌG?d hmq„gù @  O¯ÍG?d ¨mq4Œé: @  O°ÎG?d èmq¶þä @  O±ÏG?d (nq’›q @  O²ÐG?d hnq fÏ @  O³ÑG?d ¨nq‡Xr{ @  O´ÒG?d ènqÉe¥ @  OµÓG?d (oq‘G² @  O¶ÔG?d hoq’Pl @  O·ÕG?d ¨oq;àO @  O¸ÖG?d èoq ª÷‘ @  O¹×G?d (pqoæû @  OºØG?d hpqíw% @  O»ÙG?d ¨pqz%‘ @  O¼ÚG?d èpqø´O @  O½ÛG?d (qql~0X @  O¾ÜG?d hqqîï'† @  O¿ÝG?d ¨qq`æˆg @  OÀÞG?d èqqâwŸ¹ @  OÁßG?d (rq[F) @  OÂàG?d hrqÙ×>N @  OÃáG?d ¨rqN…*ú @  OÄâG?d èrqÌ=$ @  OÅãG?d (sqXÞ3 @  OÆäG?d hsqÚOí @  OÇåG?d ¨sqFæ¸Î @  OÈæG?d èsqÄw¯ @  OÉçG?d (tq«Ç @  OÊèG?d htqƒ: @  OËéG?d ¨tqh­ @  OÌêG?d ètq–ùs @  OÍëG?d (uq3'd @  OÎìG?d huq€¢0º @  OÏíG?d ¨uq±ª¾y @  OÐîG?d èuq3;©§ @  OÑïG?d (vq½&R @  OÒðG?d hvq•,1Œ @  OÓñG?d ¨vq~%8 @  OÔòG?d èvq€ï2æ @  OÕóG?d (wq%ñ @  OÖôG?d hwq–´/ @  O×õG?d ¨wq ·  @  OØöG?d èwqˆŒ Ò @  OÙ÷G?d (xq`áa @  OÚøG?d hxqâpvÉ @  OÛùG?d ¨xqu"b} @  OÜúG?d èxq÷³u£ @  OÝûG?d (yqcyW´ @  OÞüG?d hyqáè@j @  OßýG?d ¨yqÁæé @  OàþG?d èyqCwþÇ @  OáÿG?d (zq„mŽ @  OâH?d€ hzqdI–¾ @  PH?d ¨zqZÊ# @  PH?d èzqËÝý @  PH?d ({qÁH @  PH?d h{qCÙÙ @  PH?d ¨{qÂü€ @  PH?d è{q“Së^ @  PH?d (|q˜= ó @  PH?d h|q¬- @  P  H?d ¨|qH·òt @  P  H?d è|qÊ&åª @  P  H?d (}q›¥ >H?d Šqu§Ç @  P? ?H?d @Šqÿ“› @  P@ @H?d €Šqßô‘e @  PA AH?d ÀŠq/‹k @  PB BH?d ‹qÿÃçô @  PC CH?d @‹qü™¥8 @  PD DH?d €‹qÜl§Æ @  PE EH?d À‹q,]¿ @  PF FH?d Œq5]®° @  PG GH?d @Œq¥ì«Ì @  PH HH?d €Œq…©2 @  PI IH?d ÀŒqufSK @  PJ JH?d q¥.ߣ @  PK KH?d @q¦to @  PL LH?d €q†Ÿ‘ @  PM MH?d Àqvþeè @  PN NH?d ŽqëºÅ) @  PO OH?d @Žq³úœY @  PP PH?d €Žq“ž§ @  PQ QH?d ÀŽqcpdÞ @  PR RH?d q³8è6 @  PS SH?d @q°bªú @  PT TH?d €q—¨ @  PU UH?d Àq`èR} @  PV VH?d qÞ6îÏ @  PW WH?d @qN‡ë³ @  PX XH?d €qnréM @  PY YH?d Àqž 4 @  PZ ZH?d ‘qNEŸÜ @  P[ [H?d @‘qMÝ @  P\ \H?d €‘qmêßî @  P] ]H?d À‘q•%— @  P^ ^H?d ’qÑ…V @  P_ _H?d @’qÔ ÂJ @  P` `H?d €’qôÕÀ´ @  Pa aH?d À’qª:Í @  Pb bH?d “qÔâ¶% @  Pc cH?d @“q׸ôé @  Pd dH?d €“q÷Mö @  Pe eH?d À“q2 n @  Pf fH?d ”q|ÿa @  Pg gH?d @”qŽÍú @  Ph hH?d €”q®8øã @  Pi iH?d À”q^Gš @  Pj jH?d •qŽŽr @  Pk kH?d @•qU̾ @  Pl lH?d €•q­ Î@ @  Pm mH?d À•q]ß49 @  Pn nH?d –qÀ›”ø @  Po oH?d @–q˜Û͈ @  Pp pH?d €–q¸.Ïv @  Pq qH?d À–qHQ5 @  Pr rH?d —q˜¹ç @  Ps sH?d @—q›Cû+ @  Pt tH?d €—q»¶ùÕ @  Pu uH?d À—qKɬ @  Pv vH?d ˜q6± @  Pw wH?d @˜qÍ @  Px xH?d €˜qÏrˆ3 @  Py yH?d À˜q? rJ @  Pz zH?d ™qïEþ¢ @  P{ {H?d @™qì¼n @  P| |H?d €™qÌê¾ @  P} }H?d À™q<•Dé @  P~ ~H?d šq¡Ñä( @  P H?d @šqÕçÔ @  P€ €H?d €šqõÖê @  P H?d Àšqm,“ @  P‚ ‚H?d ›qÕ% { @  Pƒ ƒH?d @›qÖâ· @  P„ „H?d €›qöŠàI @  P… …H?d À›qõ0 @  P† †H?d œq»é? @  P‡ ‡H?d @œq ìC @  Pˆ ˆH?d €œq¯ÿî½ @  P‰ ‰H?d Àœq_€Ä @  PŠ ŠH?d qȘ, @  P‹ ‹H?d @qŒ’Úà @  PŒ ŒH?d €q¬gØ @  P H?d Àq\"g @  PŽ ŽH?d žqÁ\‚¦ @  P H?d @žq™ÛÖ @  P H?d €žq¹éÙ( @  P‘ ‘H?d ÀžqI–#Q @  P’ ’H?d Ÿq™Þ¯¹ @  P“ “H?d @Ÿqš„íu @  P” ”H?d €Ÿqºqï‹ @  P• •HuРq?d ÀŸqJò @  P– –H?d  q;Ë” @  P— —H?d X q«´Îè @  P˜ ˜H?d ˜ q‹AÌ @  P™ ™H?d Ø q{>6o @  Pš šH?d ¡q«vº‡ @  P› ›H?d X¡q¨,øK @  Pœ œH?d ˜¡qˆÙúµ @  P H?d Ø¡qx¦Ì @  Pž žH?d ¢qåâ   @  PŸ ŸH?d X¢q1ç @  P   H?d ˜¢qæåï @  P¡ ¡H?d Ø¢qá™– @  P¢ ¢H?d £q1Ñ“~ @  P£ £H?d X£q2‹Ñ² @  P¤ ¤H?d ˜£q~ÓL @  P¥ ¥H?d Ø£qâ)5 @  P¦ ¦H?d ¤qûOÚ: @  P§ §H?d X¤qkþßF @  P¨ ¨H?d ˜¤qK ݸ @  P© ©H?d ؤq»t'Á @  Pª ªH?d ¥qk<«) @  P« «H?d X¥qhféå @  P¬ ¬H?d ˜¥qH“ë @  P­ ­H?d Ø¥q¸ìb @  P® ®H?d ¦q%¨±£ @  P¯ ¯H?d X¦q}èèÓ @  P° °H?d ˜¦q]ê- @  P± ±H?d ئq­bT @  P² ²H?d §q}*œ¼ @  P³ ³H?d X§q~pÞp @  P´ ´H?d ˜§q^…ÜŽ @  Pµ µH?d اq®ú&÷ @  P¶ ¶H?d ¨qšªê @  P· ·H?d X¨q ´¯– @  P¸ ¸H?d ˜¨q*A­h @  P¹ ¹H?d بqÚ>W @  Pº ºH?d ©q vÛù @  P» »H?d X©q ,™5 @  P¼ ¼H?d ˜©q)Ù›Ë @  P½ ½H?d Ø©qÙ¦a² @  P¾ ¾H?d ªqDâÁs @  P¿ ¿H?d XªqÎD•ì @  PÀ ÀH?d ˜ªqî±— @  PÁ ÁH?d تqÎmk @  P ÂH?d «qΆáƒ @  Pà ÃH?d X«qÍÜ£O @  PÄ ÄH?d ˜«qí)¡± @  PÅ ÅH?d Ø«qV[È @  PÆ ÆH?d ¬q¨Ç @  PÇ ÇH?d X¬q”©­» @  PÈ ÈH?d ˜¬q´\¯E @  PÉ ÉH?d جqD#U< @  PÊ ÊH?d ­q”kÙÔ @  PË ËH?d X­q—1› @  PÌ ÌH?d ˜­q·Ä™æ @  PÍ ÍH?d Ø­qG»cŸ @  PÎ ÎH?d ®qÚÿÃ^ @  PÏ ÏH?d X®q‚¿š. @  PÐ ÐH?d ˜®q¢J˜Ð @  PÑ ÑH?d Ø®qR5b© @  PÒ ÒH?d ¯q‚}îA @  PÓ ÓH?d X¯q'¬ @  PÔ ÔH?d ˜¯q¡Ò®s @  PÕ ÕH?d دqQ­T  @  PÖ ÖH?d °qïsè¸ @  P× ×H?d X°qÂíÄ @  PØ ØH?d ˜°q_7ï: @  PÙ ÙH?d ذq¯HC @  PÚ ÚH?d ±q™« @  PÛ ÛH?d X±q|ZÛg @  PÜ ÜH?d ˜±q§Áâ™ @  PÝÝH?d رqè—ŒI @  PÞ€ÞH?d ²quÓ,ˆ @  P߀ßH?d X²q¡"k” @  Pà€àH?d ˜²q×ij @  Pá€áH?d زq5ï<º @  Pâ âH?d€ ³q‘d¬ô @  Q ãH?d X³qs¦ @  Q äH?d ˜³q¨äŸï @  QåH?d سqÒž{ @  QæH?d ´q„œmt @  QçH?d X´qÚŸ7r @  QèH?d ˜´qúj5Œ @  QéH?d Ø´qħ @  QêH?d µqïg @  Q ëH?d XµqÒü¥F @  Q ìH?d ˜µqò §¸ @  Q íH?d صqÇ?¦, @  Q îH?d ¶qZ{í @  Q ïH?d X¶qa(> @  QðH?d ˜¶qAÝ<ù @  QñH?d ضqÒ±§ @  QòH?d ·qù+ò @  QóH?d X·qÄê’Ó @  QôH?d ˜·qä- @  QõH?d Ø·qÑ)‘¹ @  QöH?d ¸qåÖ¤ @  Q÷H?d X¸q»ÕG¢ @  QøH?d ˜¸q› E\ @  QùH?d ظq¥íà_ @  QúH?d ¹qu¥l· @  QûH?d X¹q³¶Õ– @  QüH?d ˜¹q“C×h @  QýH?d عq¦uÖü @  QþH?d ºq;1v= @  QÿH?d Xºq$c„ @  QI?d ˜ºq/Ñaz @  QI?d غq­»Ý) @  Q I?d »q}óQÁ @  Q!I?d X»q»àèà @  Q"I?d ˜»q›ê @  Q#I?d Ø»q®#ëŠ @  Q$I?d ¼q·m… @  Q%I?d X¼qénBƒ @  Q&I?d ˜¼qÉ›@} @  Q' I?d ؼq÷Vå~ @  Q( I?d ½q'i– @  Q) I?d X½qá з @  Q* I?d ˜½qÁøÒI @  Q+ I?d ؽqôÎÓÝ @  Q,I?d ¾qiŠs @  Q-I?d X¾qRÙKö @  Q.I?d ˜¾qr,I @  Q/I?d ؾqá@Òë @  Q0I?d ¿q1^ @  Q1I?d X¿q÷ç" @  Q2I?d ˜¿q×îåÜ @uÐÀq  Q3I?d Ø¿q¶ßH @  Q4 I?d 0Àq}FŽ @  Q5 I?d pÀq#EÔ @  Q6 I?d °Àq°Öâ @  Q7 I?d ðÀq=}sá @  Q8 I?d 0Áqí5ÿ  @  Q9 I?d pÁq+&F( @  Q: I?d °Áq ÓDÖ @  Q; I?d ðÁq>åEB @  Q< I?d 0Âq£¡åƒ @  Q= I?d pÂqEäµ @  Q>  I?d °Âq%°æK @  Q? !I?d ðÂq Ý\Š @  Q@ "I?d 0ÃqÙ•Ðb @  QA #I?d pÃq†iC @  QB $I?d °Ãq?sk½ @  QC %I?d ðÃq Ej) @  QD &I?d 0Äq ™& @  QE 'I?d pÄqMà  @  QF (I?d °ÄqmýÁÞ @  QG )I?d ðÄqS0dÝ @  QH *I?d 0Åqƒxè5 @  QI +I?d pÅqEkQ @  QJ ,I?d °ÅqežSê @  QK -I?d ðÅqP¨R~ @  QL .I?d 0ÆqÍìò¿ @  QM /I?d pÆqö¿ÊU @  QN 0I?d °ÆqÖJÈ« @  QO 1I?d ðÆqE&SH @  QP 2I?d 0Çq•nß  @  QQ 3I?d pÇqS}f @  QR 4I?d °Çqsˆd @  QS 5I?d ðÇqF¾eë @  QT 6I?d 0ÈqrAéö @  QU 7I?d pÈq,B³ð @  QV 8I?d °Èq ·± @  QW 9I?d ðÈq2z  @  QX :I?d 0Éqâ2˜å @  QY ;I?d pÉq$!!Ä @  QZ I?d 0Êq¬¦‚o @  Q] ?I?d pÊqú–H @  Q^ @I?d °ÊqÚç”¶ @  Q_ AI?d ðÊqX(å @  Q` BI?d 0ËqˆÅ¤  @  Qa CI?d pËqNÖ, @  Qb DI?d °Ëqn#Ò @  Qc EI?d ðËq[F @  Qd FI?d 0ÌqB[íI @  Qe GI?d pÌqX·O @  Qf HI?d °Ìq<­µ± @  Qg II?d ðÌq`² @  Qh JI?d 0ÍqÒ(œZ @  Qi KI?d pÍq;%{ @  Qj LI?d °Íq4Î'… @  Qk MI?d ðÍqø& @  Ql NI?d 0Îqœ¼†Ð @  Qm OI?d pÎq§ï¾: @  Qn PI?d °Îq‡¼Ä @  Qo QI?d ðÎqv'' @  Qp RI?d 0ÏqÄ>«Ï @  Qq SI?d pÏq-î @  Qr TI?d °Ïq"Ø @  Qs UI?d ðÏqî„ @  Qt VI?d 0Ðq©0­6 @  Qu WI?d pÐq÷3÷0 @  Qv XI?d °ÐqׯõÎ @  Qw YI?d ðÐqé PÍ @  Qx ZI?d 0Ñq9CÜ% @  Qy [I?d pÑqÿPe @  Qz \I?d °Ñqߥgú @  Q{ ]I?d ðÑqê“fn @  Q| ^I?d 0Òqwׯ¯ @  Q} _I?d pÒqÑ3Ç™ @  Q~ `I?d °ÒqñÆÅg @  Q aI?d ðÒq>ýO— @  Q€ bI?d 0ÓqîµÃ @  Q cI?d pÓq(¦z^ @  Q‚ dI?d °ÓqSx  @  Qƒ eI?d ðÓq=ey4 @  Q„ fI?d 0Ôq$+Š; @  Q… gI?d pÔqz(Ð= @  Q† hI?d °ÔqZÝÒà @  Q‡ iI?d ðÔqdwÀ @  Qˆ jI?d 0Õq´Xû( @  Q‰ kI?d pÕqrKB  @  QŠ lI?d °ÕqR¾@÷ @  Q‹ mI?d ðÕqgˆAc @  QŒ nI?d 0ÖqúÌᢠ@  Q oI?d pÖqÁŸÙH @  QŽ pI?d °ÖqájÛ¶ @  Q qI?d ðÖqr@U @  Q rI?d 0×q¢N̽ @  Q‘ sI?d p×qd]uœ @  Q’ tI?d °×qD¨wb @  Q“ uI?d ð×qqžvö @  Q” vI?d 0ØqEaúë @  Q• wI?d pØqb í @  Q– xI?d °Øq;—¢ @  Q— yI?d ðØqZ @  Q˜ zI?d 0ÙqÕ‹ø @  Q™ {I?d pÙq2Ù @  Qš |I?d °Ùq3ô0' @  Q› }I?d ðÙqÂ1³ @  Qœ ~I?d 0Úq›†‘r @  Q I?d pÚqÐôÑÇ @  Qž €I?d °ÚqðÓ9 @  QŸ I?d ðÚqrkoj @  Q  ‚I?d 0Ûq¢#ã‚ @  Q¡ ƒI?d pÛqd0Z£ @  Q¢ „I?d °ÛqDÅX] @  Q£ …I?d ðÛqqóYÉ @  Q¤ †I?d 0Üqh½ªÆ @  Q¥ ‡I?d pÜq6¾ðÀ @  Q¦ ˆI?d °ÜqKò> @  Q§ ‰I?d ðÜq(†W= @  Q¨ ŠI?d 0ÝqøÎÛÕ @  Q© ‹I?d pÝq>Ýbô @  Qª ŒI?d °Ýq(`  @  Q« I?d ðÝq+až @  Q¬ ŽI?d 0Þq¶ZÁ_ @  Q­ I?d pÞq ùµ @  Q® I?d °Þq­üûK @  Q¯ ‘I?d ðÞq>`¨ @  Q° ’I?d 0ßqîØì@ @  Q± “I?d pßq(ËUa @  Q² ”I?d uÐàq/°ßq>WŸ @  Q³ •I?d ðßqÆfm  @  Q´–I?d HàqßÂ3ý @  Qµ—I?d ˆàq#¥|Û @  Q¶˜I?d Èàq¡4k @  Q·™I?d áqÍ U0 @  Q¸šI?d HáqO±Bî @  Q¹›I?d ˆáq+Æîï @  QºœI?d Èáq©Wù1 @  Q»I?d âqƒ´Oº @  Q¼žI?d Hâq%Xd @  Q½ŸI?d ˆâq¥Lr @  Q¾ I?d Èâq‡4[¬ @  Q¿¡I?d ãqù€z[ @  QÀ¢I?d Hãq{m… @  QÁ£I?d ˆãqfÁ„ @  Q¤I?d Èãq÷ÖZ @  QÃ¥I?d äq33 @  QĦI?d Häq±$Á @  QŧI?d ˆäqMèkç @  QƨI?d ÈäqÏy|9 @  QÇ©I?d åq£mB  @  QȪI?d Håq!üUÒ @  QÉ«I?d ˆåqE‹ùÓ @  QʬI?d ÈåqÇî  @  QË­I?d æqíùX† @  QÌ®I?d HæqohOX @  QͯI?d ˆæqö_b’ @  QΰI?d ÈæqtÎuL @  QϱI?d çqµ{u™ @  QвI?d Hçq7êbG @  QѳI?d ˆçqSÎF @  QÒ´I?d ÈçqÑ Ù˜ @  QÓµI?d èqRTCÏ @  QÔ¶I?d HèqÐÅT @  QÕ·I?d ˆèq,¢7 @  QÖ¸I?d Èèq®3 é @  Q×¹I?d éqÂ'2Ü @  QغI?d Héq@¶% @  QÙ»I?d ˆéq$Á‰ @  QÚ¼I?d Èéq¦PžÝ @  QÛ½I?d êqŒ³(V @  QܾI?d Hêq"?ˆ @  QÝ¿I?d ˆêqúò> @  QÞÀI?d Èêqxc)Q @  QßÁI?d ëq¨Ð4 @  QàÂI?d Hëq*Aê @  QáÃI?d ˆëqN6µë @  QâÄI?d€ Èëq àU5 @  RÅI?d ìqBHøY @  RÆI?d HìqÀÙï‡ @  RÇI?d ˆìqù÷[L @  RÈI?d Èìq{fL’ @  RÉI?d íqÙÀ-Ý @  RÊI?d Híq[Q: @  RËI?d ˆíqñ”Éx @  RÌI?d ÈíqsÞ¦ @  R ÍI?d îqœ¯“À @  R ÎI?d Hîq>„ @  R ÏI?d ˆîqB@R9 @  R ÐI?d ÈîqÀÑEç @  R ÑI?d ïqbw$¨ @  RÒI?d Hïqàæ3v @  RÓI?d ˆïqç‚þí @  RÔI?d Èïqeé3 @  RÕI?d ðq©#¸& @  RÖI?d Hðq+²¯ø @  R×I?d ˆðqœ3 @  RØI?d Èðq í @  RÙI?d ñq2«m¢ @  RÚI?d Hñq°:z| @  RÛI?d ˆñqÿ‰ @  RÜI?d Èñq˜nžÙ @  RÝI?d òqwÄÓ¿ @  RÞI?d HòqõUÄa @  RßI?d ˆòq4œ+š @  RàI?d Èòq¶ J?d Hûqé  @  R?J?d ˆûq¯Œæ¸ @  R@J?d Èûq-ñf @  RAJ?d üqF½ïÎ @  RBJ?d HüqÄ,ø @  RCJ?d ˆüqýLÛ @  RDJ?d Èüq“[ @  RE J?d ýqÝ5:J @  RF J?d Hýq_¤-” @  RG J?d ˆýqõaÞï @  RH J?d ÈýqwðÉ1 @  RI J?d þq˜Z„W @  RJJ?d HþqË“‰ @  RKJ?d ˆþqFµE® @  RLJ?d ÈþqÄ$Rp @  RMJ?d ÿqf‚3? @  RNJ?d Hÿqä$á @  ROJ?d ˆÿqãwéz @  RPuÐrJ?d Èÿqaæþ¤ @  RQJ?d rù[ @  RRJ?d `r•hLÊ @  RSJ?d  r¬Fø @  RTJ?d àr.×ïß @  RUJ?d rŒqŽ @  RVJ?d `rà™N @  RWJ?d  r¤%j5 @  RXJ?d àr&´}ë @  RYJ?d rÉ0 @  RZJ?d `rK'S @  R[J?d  rŠFȨ @  R\ J?d àr×ßv @  R]!J?d rªq¾9 @  R^"J?d `r(à©ç @  R_#J?d  r>‚CÌ @  R`$J?d àr¼T @  Ra%J?d r׳Jº @  Rb&J?d `rU"]d @  Rc'J?d  rl é¯ @  Rd(J?d àrîþq @  Re)J?d rL;Ÿ> @  Rf*J?d `rΪˆà @  Rg+J?d  rdo{› @  Rh,J?d àræþlE @  Ri-J?d r T!# @  Rj.J?d `r‹Å6ý @  Rk/J?d  r×»àÚ @  Rl0J?d àrU*÷ @  Rm1J?d r÷Œ–K @  Rn2J?d `ru• @  Ro3J?d  rryL @  Rp4J?d àrðè[Ð @  Rq5J?d r¶ù:j @  Rr6J?d `r4h-´ @  Rs7J?d  r F™ @  Rt8J?d àr׎¡ @  Ru9J?d r-qïî @  Rv:J?d ` r¯àø0 @  Rw;J?d   r% K @  RxJ?d ` rêF- @  R{?J?d   rÛ¼Ç @  R|@J?d à rY‡« @  R}AJ?d rû!ÊV @  R~BJ?d ` ry°Ýˆ @  RCJ?d   r"ƒ @  R€DJ?d à r Þ @  REJ?d r˲v @  R‚FJ?d ` rI#¨ @  RƒGJ?d   rp «c @  R„HJ?d à ròœ¼½ @  R…IJ?d rP:Ýò @  R†JJ?d ` rÒ«Ê, @  R‡KJ?d   rxn9W @  RˆLJ?d à rúÿ.‰ @  R‰MJ?d rUcï @  RŠNJ?d `r—Ät1 @  R‹OJ?d  r˺¢ @  RŒPJ?d àrI+µÈ @  RQJ?d rëÔ‡ @  RŽRJ?d `riÃY @  RSJ?d  rnx @  RTJ?d àrìé @  R‘UJ?d r ÙH  @  R’VJ?d `r¢H_× @  R“WJ?d  r›fë @  R”XJ?d àr÷ü @  R•YJ?d r»Q @  R–ZJ?d `r9ÀŠS @  R—[J?d  r“y( @  R˜\J?d àr”nö @  R™]J?d rþ># @  Rš^J?d `r|¯4N @  R›_J?d  r½fÛµ @  Rœ`J?d àr?÷Ìk @  RaJ?d rQ­$ @  RžbJ?d `rÀºú @  RŸcJ?d  r ¢PÑ @  R dJ?d àr‹3G @  R¡eJ?d rà“Y§ @  R¢fJ?d `rbNy @  R£gJ?d  r[,ú² @  R¤hJ?d àrÙ½íl @  R¥iJ?d r{Œ# @  R¦jJ?d `rùŠ›ý @  R§kJ?d  rSOh† @  R¨lJ?d àrÑÞX @  R©mJ?d r>t2> @  RªnJ?d `r¼å%à @  R«oJ?d  rà›óÇ @  R¬pJ?d àrb ä @  R­qJ?d rÀ¬…V @  R®rJ?d `rB=’ˆ @  R¯sJ?d  rEY_ @  R°tJ?d àrÇÈHÍ @  R±uJ?d rÙ)w @  R²vJ?d `rH>© @  R³wJ?d  r:fŠb @  R´xJ?d àr¸÷¼ @  RµyJ?d rQüó @  R¶zJ?d `r˜Àë- @  R·{J?d  r2V @  R¸|J?d àr°”ˆ @  R¹}J?d r_>Bî @  Rº~J?d `rݯU0 @  R»J?d  rñðûH @  R¼€J?d àrsaì– @  R½J?d rÑÇÙ @  R¾‚J?d `rSVš @  R¿ƒJ?d  rë3v¾ @  RÀ„J?d àri¢a` @  RÁ…J?d rÈ @  R†J?d `r€“h @  RÇJ?d  r¹½ÜÝ @  RĈJ?d àr;,Ë @  RʼnJ?d r™ŠªL @  RÆŠJ?d `r½’ @  RÇ‹J?d  r±ÞNé @  RÈŒJ?d àr3OY7 @  RÉJ?d rÜåQ @  RÊŽJ?d `r^t @  RËJ?d  r Õ¨ @  RÌJ?d àr€›Âv @  RÍ‘J?d r"=£9 @  RÎ’J?d `r ¬´ç @  RÏ“J?d  r§Èy|uÐ r @  RДJ?d àr%Yn¢ @  RÑ•J?d 8 r&¼]c @  RÒ–J?d x r¤-J½ @  RÓ—J?d ¸ rþv @  RÔ˜J?d ø r’é¨ @  RÕ™J?d 8!r½4ˆç @  RÖšJ?d x!r?¥Ÿ9 @  R×›J?d ¸!r•`lB @  RØœJ?d ø!rñ{œ @  RÙJ?d 8"rø[6ú @  RÚžJ?d x"rzÊ!$ @  RÛŸJ?d ¸"r»Îß @  RÜ J?d ø"r9’Ù @  RÝ¡J?d 8#r›4¸N @  RÞ¢J?d x#r¥¯ @  RߣJ?d ¸#rÇE» @  Rà¤J?d ø#rVRe @  Rá¥J?d 8$ræöLÍ @  Râ¦J?d€ x$r¤Gµ @  S§J?d ¸$rÈË»W @  S¨J?d ø$rJZ¬‰ @  S©J?d 8%r-µ6+ @  SªJ?d x%r¯$!õ @  S«J?d ¸%rËSô @  S¬J?d ø%rIš* @  S­J?d 8&rhÚˆ6 @  S®J?d x&rêKŸè @  S ¯J?d ¸&rs|²" @  S °J?d ø&rñí¥ü @  S ±J?d 8'r–?^ @  S ²J?d x'r“(€ @  S ³J?d ¸'rpä„ @  S´J?d ø'ròu“_ @  SµJ?d 8(r×w“ @  S¶J?d x(rUæ„¡ @  S·J?d ¸(r©Ë‡ @  S¸J?d ø(r+ÜY @  S¹J?d 8)rLÿFû @  SºJ?d x)rÎnQ% @  S»J?d ¸)rªý$ @  S¼J?d ø)r(ˆêú @  S½J?d 8*r øæ @  S¾J?d x*r‹ï8 @  S¿J?d ¸*rÑî? @  SÀJ?d ø*rý@ùá @  SÁJ?d 8+rš¯cC @  SÂJ?d x+r>t @  SÃJ?d ¸+r|IØœ @  SÄJ?d ø+rþØÏB @  SÅJ?d 8,rçm—À @  S ÆJ?d x,reü€ @  S!ÇJ?d ¸,r™›Ï8 @  S"ÈJ?d ø,r Øæ @  S#ÉJ?d 8-r|åBD @  S$ÊJ?d x-rþtUš @  S%ËJ?d ¸-ršù› @  S&ÌJ?d ø-r’îE @  S'ÍJ?d 8.r9ŠüY @  S(ÎJ?d x.r»ë‡ @  S)ÏJ?d ¸.r",ÆM @  S*ÐJ?d ø.r ½Ñ“ @  S+ÑJ?d 8/rÇRK1 @  S,ÒJ?d x/rEÃ\ï @  S-ÓJ?d ¸/r!´ðî @  S.ÔJ?d ø/r£%ç0 @  S/ÕJ?d 80r ׿ @  S0ÖJ?d x0rŽ—Àa @  S1×J?d ¸0rrðG @  S2ØJ?d ø0rða˜™ @  S3ÙJ?d 81r—Ž; @  S4ÚJ?d x1rå @  S5ÛJ?d ¸1rqh¹ä @  S6ÜJ?d ø1róù®: @  S7ÝJ?d 82rÒá¼& @  S8ÞJ?d x2rPp«ø @  S9ßJ?d ¸2rTð¿î @  S:àJ?d ø2rÖa¨0 @  S;áJ?d 83r±Ž2’ @  S<âJ?d x3r3%L @  S=ãJ?d ¸3rWh‰M @  S>äJ?d ø3rÕùž“ @  S?åJ?d 84rbKÀƒ @  S@æJ?d x4ràÚ×] @  SAçJ?d ¸4r½˜{ @  SBèJ?d ø4rž,¥ @  SCéJ?d 85rùà @  SDêJ?d x5r{RÙ @  SEëJ?d ¸5r%®Ø @  SFìJ?d ø5r´¹ @  SGíJ?d 86r¼¬« @  SHîJ?d x6r>=¼Ä @  SIïJ?d ¸6r§ ‘ @  SJðJ?d ø6r%›†Ð @  SKñJ?d 87rBtr @  SLòJ?d x7rÀå ¬ @  SMóJ?d ¸7r¤’§­ @  SNôJ?d ø7r&°s @  SOõJ?d 88r°S @  SPöJ?d x8r§ @  SQ÷J?d ¸8r}÷è« @  SRøJ?d ø8rÿfÿu @  SSùJ?d 89r˜‰e× @  STúJ?d x9rr  @  SUûJ?d ¸9r~oÞ @  SVüJ?d ø9rüþÉÖ @  SWýJ?d 8:rÝæÛÊ @  SXþJ?d x:r_wÌ @  SYÿJ?d ¸:rÉÌ @  SZK?d ø:rK—ÛS @  S[K?d 8;r,xAñ @  S\K?d x;r®éV/ @  S]K?d ¸;rÊžú. @  S^K?d ø;rHíð @  S_K?d 8r]Þë @  ShK?d x>r ÌÉ5 @  SiK?d ¸>r”ûäÿ @  SjK?d ø>rjó! @  SkK?d 8?rq…iƒ @  SlK?d x?ró~] @  SmK?duÐ@r7 ¸?r—cÒ\ @  SnK?d ø?ròÅ‚ @  SoK?d P@rÇ£óƒ @  SpK?d @rçVñ} @  SqK?d Ð@r¹U«{ @  SrK?d Ari'“ @  SsK?d PAr\+& @  StK?d Ar|Þ$ù @  SuK?d ÐArºÍØ @  SvK?d Br'‰= @  SwK?d PBrD˜ @  SxK?d Br9±šä @  SyK?d ÐBrŸU›Ò @  Sz K?d CrO: @  S{!K?d PCrz+® @  S|"K?d CrZÞP @  S}#K?d ÐCrœÍ­q @  S~$K?d Dr…ƒ^~ @  S%K?d PDrJ¸ÔŽ @  S€&K?d DrjMÖp @  S'K?d ÐDr4NŒv @  S‚(K?d Eräž @  Sƒ)K?d PErÑ0  @  S„*K?d ErñÅô @  S…+K?d ÐEr7ÖºÕ @  S†,K?d Frª’ @  S‡-K?d PFr”_¿ @  Sˆ.K?d Fr´ª½é @  S‰/K?d ÐFrù… @  SŠ0K?d Gr_± ë @  S‹1K?d PGrj‡ @  SŒ2K?d GrJr  @  S3K?d ÐGrŒa³  @  SŽ4K?d Hr¸ž?½ @  S5K?d PHr+ò¤^ @  S6K?d Hr ¦  @  S‘7K?d ÐHrUü¦ @  S’8K?d Ir…LpN @  S“9K?d PIr°zqÚ @  S”:K?d Irs$ @  S•;K?d ÐIrVœÊ @  S–K?d JrÕàÍ9 @  S™?K?d ÐJrƒTÙ @  Sš@K?d KrSUö @  S›AK?d PKrf*Tb @  SœBK?d KrFßVœ @  SCK?d ÐKr€Ìï½ @  SžDK?d Lr™‚² @  SŸEK?d PLrè á @  S FK?d Lr;¢ @  S¡GK?d ÐLreø @  S¢HK?d MrµVtñ @  S£IK?d PMr€`ue @  S¤JK?d Mr •w› @  S¥KK?d ÐMrf†Îº @  S¦LK?d NrûÂn{ @  S§MK?d PNrÅËx @  S¨NK?d NråúɆ @  S©OK?d ÐNrÞ©ñl @  SªPK?d Orá}„ @  S«QK?d POr;×| @  S¬RK?d Or"~î @  S­SK?d ÐOrÝ1ÇÏ @  S®TK?d Prcï{} @  S¯UK?d PPrðƒàž @  S°VK?d PrÐvâ` @  S±WK?d ÐPrŽu¸f @  S²XK?d Qr^=4Ž @  S³YK?d PQrk 5 @  S´ZK?d QrKþ7ä @  Sµ[K?d ÐQríŽÅ @  S¶\K?d Rr©. @  S·]K?d PRr.d‹ @  S¸^K?d Rr‘‰ù @  S¹_K?d ÐRr¨uˆÏ @  Sº`K?d Srx=' @  S»aK?d PSrM ³ @  S¼bK?d SrmþM @  S½cK?d ÐSr«í¾l @  S¾dK?d Tr²£Mc @  S¿eK?d PTržÎ÷¢ @  SÀfK?d Tr¾;õ\ @  SÁgK?d ÐTrà8¯Z @  SÂhK?d Ur0p#² @  SÃiK?d PUrF"& @  SÄjK?d Ur%³ Ø @  SÅkK?d ÐUrã ™ù @  SÆlK?d Vr~ä98 @  SÇmK?d PVr@)œ; @  SÈnK?d Vr`ܞŠ@  SÉoK?d ÐVr[¦/ @  SÊpK?d Wr‹Ç*Ç @  SËqK?d PWr¾ñ+S @  SÌrK?d Wrž)­ @  SÍsK?d ÐWrXŒ @  SÎtK?d Xrlè‘ @  SÏuK?d PXrÿ„‡r @  SÐvK?d Xrßq…Œ @  SÑwK?d ÐXrrߊ @  SÒxK?d YrQ:Sb @  SÓyK?d PYrd Rö @  SÔzK?d YrDùP @  SÕ{K?d ÐYr‚êé) @  SÖ|K?d Zr®Iè @  S×}K?d PZr!cìë @  SØ~K?d Zr–î @  SÙK?d ÐZrJä®  @  SÚ€K?d [rš¬"H @  SÛK?d P[r¯š#Ü @  SÜ‚K?d [ro!" @  S݃K?d Ð[rI|˜ @  SÞ„K?d \rP2k  @  Sß…K?d P\rÒX×_ @  Sà†K?d \rò­Õ¡ @  Sá‡K?d Ð\r¬®§ @  SâˆK?d€ ]rú°«ö @  T‰K?d P]r.ÇâK @  TŠK?d ]r2ൠ@  T‹K?d Ð]r h¢y @  TŒK?d ^r,¸ @  TK?d P^r`SøÁ @  TŽK?d ^r@¦ú? @  TK?d Ð^rµG¯ @  TK?d _reG @  T ‘K?d P_r•pë> @  T ’K?d _rµ…éÀ @  TuÐ`r “K?d Ð_r¶ß«  @  T ”K?d (`r'” @  T •K?d h`røXäí @  T–K?d ¨`rØ­æ @  T—K?d è`rå½Ý @  T˜K?d (ar5õQg @  T™K?d harÅŠ« @  TšK?d ¨arå©à @  T›K?d èaræ%ë, @  TœK?d (br{aKí @  TK?d hbr‹±” @  TžK?d ¨br«ë³j @  TŸK?d èbrýí& @  T K?d (crõaÎ @  T¡K?d hcr㊛· @  T¢K?d ¨crÙI @  T£K?d ècrÀ%Û… @  T¤K?d (drÙk(Š @  T¥K?d hdr)Òó @  T¦K?d ¨dr áÐ  @  T§K?d èdr%÷Ì! @  T ¨K?d (erõ¿@É @  T!©K?d herÀº° @  T"ªK?d ¨er%5¸N @  T#«K?d èer&oú‚ @  T$¬K?d (fr»+ZC @  T%­K?d hfrKT : @  T&®K?d ¨frk¡¢Ä @  T'¯K?d èfrž@ÅT @  T(°K?d (grNI¼ @  T)±K?d hgr¾w³Å @  T*²K?d ¨grž‚±; @  T+³K?d ègrØó÷ @  T,´K?d (hr©'ê @  T-µK?d hhrYX…“ @  T.¶K?d ¨hry­‡m @  T/·K?d èhrD½¼ñ @  T0¸K?d (ir”õ0 @  T1¹K?d hirdŠÊ` @  T2ºK?d ¨irDÈž @  T3»K?d èirG%ŠR @  T4¼K?d (jrÚa*“ @  T5½K?d hjr*Ðê @  T6¾K?d ¨jr ëÒ @  T7¿K?d èjr’í™I @  T8ÀK?d (krB¥¡ @  T9ÁK?d hkr²ÚïØ @  T:ÂK?d ¨kr’/í& @  T;ÃK?d èkr‘u¯ê @  T<ÄK?d (lrˆ;\å @  T=ÅK?d hlrxD¦œ @  T>ÆK?d ¨lrX±¤b @  T?ÇK?d èlrÚ ¾Ü @  T@ÈK?d (mr è24 @  TAÉK?d hmrú—ÈM @  TBÊK?d ¨mrÚbʳ @  TCËK?d èmrÙ8ˆ @  TDÌK?d (nrD|(¾ @  TEÍK?d hnr´ÒÇ @  TFÎK?d ¨nr”öÐ9 @  TGÏK?d ènra·© @  THÐK?d (or±_;A @  TIÑK?d horA Á8 @  TJÒK?d ¨oraÕÃÆ @  TKÓK?d èorb  @  TLÔK?d (prÜQ=¸ @  TMÕK?d hpr,.ÇÁ @  TNÖK?d ¨pr ÛÅ? @  TO×K?d èpr1Ëþ£ @  TPØK?d (qráƒrK @  TQÙK?d hqrüˆ2 @  TRÚK?d ¨qr1 ŠÌ @  TSÛK?d èqr2SÈ @  TTÜK?d (rr¯hÁ @  TUÝK?d hrr_h’¸ @  TVÞK?d ¨rrF @  TWßK?d èrrËÎ  @  TXàK?d (srǃBâ @  TYáK?d hsr7ü¸› @  TZâK?d ¨sr ºe @  T[ãK?d èsrSø© @  T\äK?d (tr  ¦ @  T]åK?d htrýbñß @  T^æK?d ¨trÝ—ó! @  T_çK?d ètrñï  @  T`èK?d (ur!Écå @  TaéK?d hurѶ™œ @  TbêK?d ¨urñC›b @  TcëK?d èuròÙ® @  TdìK?d (vro]yo @  TeíK?d hvrŸ"ƒ @  TfîK?d ¨vr¿×è @  TgïK?d èvrJ6æx @  ThðK?d (wrš~j @  TiñK?d hwrjé @  TjòK?d ¨wrJô’ @  TkóK?d èwrI®ÐÛ @  TlôK?d (xr}Q\Æ @  TmõK?d hxr.¦¿ @  TnöK?d ¨xr­Û¤A @  To÷K?d èxrËŸÝ @  TpøK?d (yr@ƒ5 @  TqùK?d hyr°üéL @  TrúK?d ¨yr ë² @  TsûK?d èyr“S©~ @  TtüK?d (zr ¿ @  TuýK?d hzrþhóÆ @  TvþK?d ¨zrÞñ8 @  TwÿK?d èzr3„m @  TxL?d ({rÈ{… @  TyL?d h{r8òü @  TzL?d ¨{rñð @  T{L?d è{r«²Î @  T|L?d (|råAÁ @  T}L?d h|rò𻏠@  T~L?d ¨|rÒo¹F @  TL?d è|r³(“É @  T€L?d (}rc`! @  T L?d h}r“åX @  T‚ L?d ¨}r³êç¦ @  Tƒ L?d è}r°°¥j @  T„ L?d (~r-ô« @  T… L?d h~rÝ‹ÿÒ @  T†L?d ¨~rý~ý, @  T‡L?d è~rŸš¼ @  TˆL?d (rØ×T @  T‰L?d hr(¨ì- @  TŠL?d ¨ruЀr']îÓ @  T‹L?d èr ¬ @  TŒL?d @€re¹Nk @  TL?d €€r7¢¡2 @  TŽL?d À€rµ3¶ì @  TL?d rÚúF @  TL?d @rXk˜ @  T‘L?d €r pîÁ @  T’L?d Àrˆáù @  T“L?d ‚r”n Ì @  T”L?d @‚rÿ @  T•L?d €‚rDäôK @  T–L?d À‚rÆuã• @  T—L?d ƒrüú&ï @  T˜ L?d @ƒr~k11 @  T™!L?d €ƒr,pÞh @  Tš"L?d Àƒr®áɶ @  T›#L?d „r6do« @  Tœ$L?d @„r´õxu @  T%L?d €„ræî—, @  Tž&L?d À„rd€ò @  TŸ'L?d …r°è @  T (L?d @…r˜!6 @  T¡)L?d €…rÊ:ÿo @  T¢*L?d À…rH«è± @  T£+L?d †rT$b @  T¤,L?d @†rÖµ ¼ @  T¥-L?d €†r„®åå @  T¦.L?d À†r?ò; @  T§/L?d ‡r¡ @  T¨0L?d @‡r#–C @  T©1L?d €‡rqö @  Tª2L?d À‡róáÄ @  T«3L?d ˆrF(8Ë @  T¬4L?d @ˆrĹ/ @  T­5L?d €ˆr–¢ÀL @  T®6L?d Àˆr3×’ @  T¯7L?d ‰r{úw8 @  T°8L?d @‰rùk`æ @  T±9L?d €‰r«p¿ @  T²:L?d À‰r)á˜a @  T³;L?d Šr5nm² @  T´L?d ÀŠrgu‚ë @  T·?L?d ‹r­ªR€ @  T¸@L?d @‹r/;E^ @  T¹AL?d €‹r} ª @  TºBL?d À‹rÿ±½Ù @  T»CL?d Œrg4Ä @  T¼DL?d @Œrå¥  @  T½EL?d €Œr·¾ãC @  T¾FL?d ÀŒr5/ô @  T¿GL?d råçu @  TÀHL?d @rgvbË @  TÁIL?d €r5m’ @  TÂJL?d Àr·üšL @  TÃKL?d Žr«soŸ @  TÄLL?d @Žr)âxA @  TÅML?d €Žr{ù— @  TÆNL?d ÀŽrùh€Æ @  TÇOL?d r^P|` @  TÈPL?d @rÜÁk¾ @  TÉQL?d €rŽÚ„ç @  TÊRL?d Àr K“9 @  TËSL?d r3^z™ @  TÌTL?d @r±ÏmG @  TÍUL?d €rãÔ‚ @  TÎVL?d ÀraE•À @  TÏWL?d ‘rŒ5j @  TÐXL?d @‘rŒ"´ @  TÑYL?d €‘rÞÍí @  TÒZL?d À‘r\—Ú3 @  TÓ[L?d ’r@/à @  TÔ\L?d @’r‰8> @  TÕ]L?d €’r’×g @  TÖ^L?d À’rÀ¹ @  T×_L?d “r(ŒÃ @  TØ`L?d @“rª @  TÙaL?d €“røýD @  TÚbL?d À“rz—êš @  TÛcL?d ”râL‡ @  TÜdL?d @”r`ƒ[Y @  TÝeL?d €”r2˜´ @  TÞfL?d À”r° £Þ @  TßgL?d •rÎÆ$Ä @  TàhL?d @•rLW3 @  TáiL?d €•rLÜC @  TâjL?d€ À•rè×; @  UkL?d –rÐjÁ @  UlL?d @–r—A} @  UmL?d €–ri« @  UnL?d À–r‚‚~u @  UoL?d —rëÝ© @  UpL?d @—ri™Êw @  UqL?d €—rõ0zT @  UrL?d À—rw¡mŠ @  U sL?d ˜rÜOh @  U tL?d @˜r…MX¶ @  U uL?d €˜rL @  U vL?d À˜rŽ[Ü @  U wL?d ™rœTšì @  UxL?d @™rÅ2 @  UyL?d €™r/Íñ @  UzL?d À™r­\/ @  U{L?d šrtš @  U|L?d @šrö Ï @  U}L?d €šraY{ @  U~L?d ÀšrãÈ¥ @  UL?d ›rúcÕ& @  U€L?d @›rxòÂø @  UL?d €›rä[rÛ @  U‚L?d À›rfÊe @  UƒL?d œr;8õ @  U„L?d @œr¹—/+ @  U…L?d €œr.Å;Ÿ @  U†L?d Àœr¬T,A @  U‡L?d r Žíq @  UˆL?d @r"ú¯ @  U‰L?d €rSÜ @  U ŠL?d Àr€€D @  U!‹L?d žrYFJ< @  U"ŒL?d @žrÛ×]â @  U#L?d €žrL…IV @  U$ŽL?d ÀžrÎ^ˆ @  U%L?d Ÿr§žýT @  U&L?d @Ÿr%êŠ @  U'‘L?d €Ÿr¹¦Z© @  U(’LuРr?d ÀŸr;7Mw @  U)“L?d  r¾=î @  U*”L?d X rŒ/*0 @  U+•L?d ˜ r}>„ @  U,–L?d Ø r™ì)Z @  U-—L?d ¡r•6èj @  U.˜L?d X¡r§ÿ´ @  U/™L?d ˜¡r&¯qw @  U0šL?d Ø¡r¤>f© @  U1›L?d ¢r}øh— @  U2œL?d X¢rÿiI @  U3L?d ˜¢rh;ký @  U4žL?d Ø¢rêª|# @  U5ŸL?d £r—æ# @  U6 L?d X£rœñý @  U7¡L?d ˜£r¯AÞ @  U8¢L?d Ø£r‚>V @  U9£L?d ¤rßò ð @  U:¤L?d X¤r]c. @  U;¥L?d ˜¤rÊ1š @  U<¦L?d ؤrH D @  U=§L?d ¥rDzÞt @  U>¨L?d X¥rÆëɪ @  U?©L?d ˜¥rHâfK @  U@ªL?d Ø¥rÊsq• @  UA«L?d ¦rµ« @  UB¬L?d X¦r‘$hu @  UC­L?d ˜¦rv|Á @  UD®L?d ئr„çk @  UE¯L?d §rímÈà @  UF°L?d X§roüß @  UG±L?d ˜§róUo> @  UH²L?d اrqÄxà @  UI³L?d ¨r¹Z @  UJ´L?d X¨rƒ(MÜ @  UKµL?d ˜¨rzYh @  UL¶L?d بr–ëN¶ @  UM·L?d ©rš1† @  UN¸L?d X©r ˜X @  UO¹L?d ˜©r)¨› @  UPºL?d Ø©r«9E @  UQ»L?d ªrrÿ{ @  UR¼L?d Xªrðn¥ @  US½L?d ˜ªrg<  @  UT¾L?d تrå­Ï @  UU¿L?d «ráÀ”Þ @  UVÀL?d X«rcQƒ @  UWÁL?d ˜«rÿø3# @  UXÂL?d Ø«r}i$ý @  UYÃL?d ¬r ¥y  @  UZÄL?d X¬r¢4nÓ @  U[ÅL?d ˜¬r5fzg @  U\ÆL?d جr·÷m¹ @  U]ÇL?d ­r»-¬‰ @  U^ÈL?d X­r9¼»W @  U_ÉL?d ˜­r²$ @  U`ÊL?d Ø­r›#ú @  UaËL?d ®rBå Ä @  UbÌL?d X®rÀt @  UcÍL?d ˜®rW&® @  UdÎL?d Ø®rÕ·p @  UeÏL?d ¯r¼=¼¬ @  UfÐL?d X¯r>¬«r @  UgÑL?d ˜¯r¢Q @  UhÒL?d دr ”  @  UiÓL?d °rÚÈ @  UjÔL?d X°rXY  @  UkÕL?d ˜°rÏ ¨ @  UlÖL?d ذrMš v @  Um×L?d ±rA@ËF @  UnØL?d X±rÃÑܘ @  UoÙL?d ˜±ròÙR[ @  UpÚL?d رrpHE… @  UqÛL?d ²r©ŽK» @  UrÜL?d X²r+\e @  UsÝL?d ˜²r¼MHÑ @  UtÞL?d زr>Ü_ @  UußL?d ³rÊáÅ @  UvàL?d X³rHpÒÑ @  UwáL?d ˜³rÔÙbò @  UxâL?d سrVHu, @  UyãL?d ´r „(Ü @  UzäL?d X´r‰? @  U{åL?d ˜´rG+¶ @  U|æL?d Ø´rœÖ·P @  UÅ/M?d 0Çr¶´Œ @  UÆ0M?d pÇr4%R @  UÇ1M?d °Çr¨Œ³q @  UÈ2M?d ðÇr*¤¯ @  UÉ3M?d 0ÈrZ`†M @  UÊ4M?d pÈrØñ‘“ @  UË5M?d °ÈrO£…' @  UÌ6M?d ðÈrÍ2’ù @  UÍ7M?d 0ÉrÁèSÉ @  UÎ8M?d pÉrCyD @  UÏ9M?d °ÉrrqÊÔ @  UÐ:M?d ðÉrðàÝ  @  UÑ;M?d 0Êr)&Ó4 @  UÒM?d ðÊr¾tÇ€ @  UÕ?M?d 0ËrºH‘ @  UÖ@M?d pËr8ˆ_O @  U×AM?d °Ër¤!ïl @  UØBM?d ðËr&°ø² @  UÙCM?d 0Ìr{|¥B @  UÚDM?d pÌrùí²œ @  UÛEM?d °Ìrn¿¦( @  UÜFM?d ðÌrì.±ö @  UÝGM?d 0ÍràôpÆ @  UÞHM?d pÍrbeg @  UßIM?d °ÍrBkÎk @  UàJM?d ðÍrÀúÙµ @  UáKM?d 0Îr<׋ @  UâLM?d€ pÎrZê7U @  VMM?d °Îr,ùkÈ @  VNM?d ðÎr®h| @  VOM?d 0Ïr«$' @  VPM?d pÏr€:3ù @  VQM?d °ÏrÒ!Ü  @  VRM?d ðÏrP°Ë~ @  VSM?d 0Ðrd^†I @  VTM?d pÐræÏ‘— @  V UM?d °Ðr´Ô~Î @  V VM?d ðÐr6Ei @  V WM?d 0ÑrÿÖSÍ @  V XM?d pÑr}GD @  V YM?d °Ñr/\«J @  VZM?d ðÑr­Í¼” @  V[M?d 0ÒrÓ0 @  V\M?d pÒr•‰Äî @  V]M?d °ÒrÇ’+· @  V^M?d ðÒrEŠM?d ðÝr0ªw @  V?‹M?d 0Þr5Ãäñ @  V@ŒM?d pÞr·Ró/ @  VAM?d °ÞråIv @  VBŽM?d ðÞrgØ ¨ @  VCM?d 0ßrËS™ @  VDM?d pßrIŠDG @  VE‘M?d uÐàr/°ßr‘« @  VF’M?d ðßr™¼À @  VG“M?d Hàr ”³ @  VH”M?d ˆàr*aM @  VI•M?d ÈàrÚë4 @  VJ–M?d ár VgÜ @  VK—M?d Hár‘Æ7 @  VL˜M?d ˆár±éÄÉ @  VM™M?d ÈárA–>° @  VNšM?d ârÜÒžq @  VO›M?d HâryÒFÊ @  VPœM?d ˆârY'D4 @  VQM?d Èâr©X¾M @  VRžM?d ãry2¥ @  VSŸM?d Hãr½È~ @  VT M?d ˆãr:HÊ€ @  VU¡M?d ÈãrÊ70ù @  VV¢M?d ärÓyÃö @  VW£M?d HärÛØ%­ @  VX¤M?d ˆärû-'S @  VY¥M?d Èär RÝ* @  VZ¦M?d årÛQ @  V[§M?d Hår@Pð) @  V\¨M?d ˆår`¥ò× @  V]©M?d ÈårÚ® @  V^ªM?d ær ž¨o @  V_«M?d Hær¹˜Wd @  V`¬M?d ˆær™mUš @  Va­M?d Èæri¯ã @  Vb®M?d çr¹Z#  @  Vc¯M?d HçrG@à  @  Vd°M?d ˆçrgµâò @  Ve±M?d Èçr—Ê‹ @  Vf²M?d èr£5”– @  Vg³M?d Hèri=• @  Vh´M?d ˆèrIÈ—æ @  ViµM?d Èèr¹·mŸ @  Vj¶M?d ériÿáw @  Vk·M?d Héròµ@œ @  Vl¸M?d ˆérÒ@Bb @  Vm¹M?d Èér"?¸ @  VnºM?d êr¿{Ú @  Vo»M?d Hêr{Àa @  Vp¼M?d ˆêr:ŽÂŸ @  Vq½M?d ÈêrÊñ8æ @  Vr¾M?d ër¹´ @  Vs¿M?d Hër‰D[Ä @  VtÀM?d ˆër©±Y: @  VuÁM?d ÈërYΣC @  VvÂM?d ìr@€PL @  VwÃM?d HìrH!¶ @  VxÄM?d ˆìrhÔ´é @  VyÅM?d Èìr˜«N @  VzÆM?d írHãÂx @  V{ÇM?d HírÓ©c“ @  V|ÈM?d ˆíró\am @  V}ÉM?d Èír#› @  V~ÊM?d îržg;Õ @  VËM?d Hîrg0ò} @  V€ÌM?d ˆîrGÅðƒ @  VÍM?d Èîr·º ú @  V‚ÎM?d ïrgò† @  VƒÏM?d Hïr™èE @  V„ÐM?d ˆïr¹Gë @  V…ÑM?d ÈïrIb½’ @  V†ÒM?d ðr÷¼  @  V‡ÓM?d Hðrÿç{ @  VˆÔM?d ˆðrßèå… @  V‰ÕM?d Èðr/—ü @  VŠÖM?d ñrÿß“ @  V‹×M?d Hñrd•2ÿ @  VŒØM?d ˆñrD`0 @  VÙM?d Èñr´Êx @  VŽÚM?d òr)[j¹ @  VÛM?d HòrŒ[² @  VÜM?d ˆòr¬®°ü @  V‘ÝM?d Èòr\ÑJ… @  V’ÞM?d órŒ™Æm @  V“ßM?d Hórï4<¶ @  V”àM?d ˆórÏÁ>H @  V•áM?d Èór?¾Ä1 @  V–âM?d ôr&ð7> @  V—ãM?d Hôr.QÑe @  V˜äM?d ˆôr¤Ó› @  V™åM?d ÈôrþÛ)â @  VšæM?d õr.“¥  @  V›çM?d HõrµÙá @  VœèM?d ˆõr•, @  VéM?d ÈõreSüf @  VžêM?d örø\§ @  VŸëM?d HörL£¬ @  V ìM?d ˆörlä¡R @  V¡íM?d Èörœ›[+ @  V¢îM?d ÷rLÓ×à @  V£ïM?d H÷r²ÉÄ @  V¤ðM?d ˆ÷r’<: @  V¥ñM?d È÷rbCìC @  V¦òM?d ørV¼`^ @  V§óM?d Hør^† @  V¨ôM?d ˆør~è„û @  V©õM?d ÈørŽ—~‚ @  VªöM?d ùr^ßòj @  V«÷M?d HùrÅ•S @  V¬øM?d ˆùrå`Q @  V­ùM?d Èùr« @  V®úM?d úrˆ[ Ç @  V¯ûM?d Húr-[Ó| @  V°üM?d ˆúr ®Ñ‚ @  V±ýM?d ÈúrýÑ+û @  V²þM?d ûr-™§ @  V³ÿM?d Hûrnç|b @  V´N?d ˆûrN~œ @  VµN?d Èûr¾m„å @  V¶N?d ür§#wê @  V·N?d Hür¯‚‘± @  V¸N?d ˆürw“O @  V¹N?d Èüri6 @  VºN?d ýr¯@åÞ @  V»N?d Hýr4 D5 @  V¼N?d ˆýrÿFË @  V½ N?d Èýr䀼² @  V¾ N?d þryÄs @  V¿ N?d HþrcÅåê @  VÀ N?d ˆþrC0ç @  VÁ N?d Èþr³Om @  VÂN?d ÿrc‘… @  VÃN?d HÿrR‚ @  VÄN?d ˆÿr½èP| @  VÅuÐsN?d ÈÿrM—ª @  VÆN?d s#‚ô @  VÇN?d `s ‚d¯ @  VÈN?d  s*wfQ @  VÉN?d àsÚœ( @  VÊN?d s @À @  VËN?d `s‘ ±+ @  VÌN?d  s±ÿ³Õ @  VÍN?d àsA€I¬ @  VÎN?d sÜÄém @  VÏN?d `syÄ1Ö @  VÐN?d  sY13( @  VÑN?d às©NÉQ @  VÒN?d syE¹ @  VÓN?d `s«¿b @  VÔ N?d  s:^½œ @  VÕ!N?d àsÊ!Gå @  VÖ"N?d sÓo´ê @  V×#N?d `sÛÎR± @  VØ$N?d  sû;PO @  VÙ%N?d às Dª6 @  VÚ&N?d sÛ &Þ @  VÛ'N?d `s@F‡5 @  VÜ(N?d  s`³…Ë @  VÝ)N?d às̲ @  VÞ*N?d s ˆßs @  Vß+N?d `s¹Ž x @  Và,N?d  s™{"† @  Vá-N?d àsiØÿ @  Vâ.N?d€ sÍH± @  W/N?d `sÒÔß @  W0N?d  sò!Áa @  W1N?d àsÇÀõ @  W2N?d sóèLè @  W3N?d `s5ûõÉ @  W4N?d  s÷7 @  W5N?d às+ÃR4 @  W6N?d sû‹ÞÜ @  W 7N?d ` s¥ˆ„Ú @  W 8N?d   s…}†$ @  W 9N?d à s°K‡° @  W :N?d s-'q @  W ;N?d ` sëžP @  WN?d sˆÍ‹¥ @  W?N?d ` sÞyŸ‚ @  W@N?d   sþŒ| @  WAN?d à s˺œè @  WBN?d sÒôoç @  WCN?d ` sçÖÆ @  WDN?d   s4Ô8 @  WEN?d à s ßq; @  WFN?d sÚ—ýÓ @  WGN?d ` s„”§Õ @  WHN?d   s¤a¥+ @  WIN?d à s‘W¤¿ @  WJN?d s ~ @  WKN?d `sʽ_ @  WLN?d  sêõ¿¡ @  WMN?d àshŸò @  W NN?d s¸× @  W!ON?d `sƒ„·ð @  W"PN?d  s£qµ @  W#QN?d às–G´š @  W$RN?d s(™( @  W%SN?d `s  @  W&TN?d  sγ÷ @  W'UN?d àsð²ô @  W(VN?d s úš @  W)WN?d `s~ùÀ @  W*XN?d  s^ Âä @  W+YN?d àsk:Ãp @  W,ZN?d sö~c± @  W-[N?d `s0mÚ @  W.\N?d  s˜Øn @  W/]N?d àsƒôC @  W0^N?d sS¼Ïe @  W1_N?d `sõXÎS @  W2`N?d  sÕ­Ì­ @  W3aN?d àsà›Í9 @  W4bN?d sùÕ>6 @  W5cN?d `s?Ƈ @  W6dN?d  s3…é @  W7eN?d às!þ ê @  W8fN?d sñ¶¬ @  W9gN?d `s¯µö @  W:hN?d  s@ôú @  W;iN?d àsºvõn @  W<jN?d s'2U¯ @  W=kN?d `sá!ìŽ @  W>lN?d  sÁÔîp @  W?mN?d àsí¹T± @  W@nN?d s=ñØY @  WAoN?d `s¢à³ @  WBpN?d  s&WâM @  WCqN?d àsaãÙ @  WDrN?d s'žoÄ @  WEsN?d `sáÖå @  WFtN?d  sÁxÔ @  WGuN?d àsÿµq @  WHvN?d s/ýýð @  WIwN?d `sqþ§ö @  WJxN?d  sQ ¥ @  WKyN?d àsd=¤œ @  WLzN?d sùy] @  WM{N?d `s?j½| @  WN|N?d  sŸ¿‚ @  WO}N?d àsŒó$a @  WP~N?d s\»¨‰ @  WQN?d `sÉè< @  WR€N?d  s7<ê @  WSN?d às ëV @  WT‚N?d sDY @  WUƒN?d `sÝW¡x @  WV„N?d  sý¢£† @  WW…N?d àsÃo… @  WX†N?d s'Šm @  WY‡N?d `sM$Ðk @  WZˆN?d  smÑÒ• @  W[‰N?d àsXçÓ @  W\ŠN?d sÅ£sÀ @  W]‹N?d `s°Êá @  W^ŒN?d  s#EÈ @  W_N?d às¡/tL @  W`ŽN?d sqgø¤ @  WaN?d `sJ4ÀN @  WbN?d  sjÁ°uÐ s @  Wc‘N?d às_÷Ã$ @  Wd’N?d 8 s.üB @  We“N?d x sèï¤c @  Wf”N?d ¸ sȦ @  Wg•N?d ø söמ @  Wh–N?d 8!s&Ÿv @  Wi—N?d x!sxœÕp @  Wj˜N?d ¸!sXi׎ @  Wk™N?d ø!sm_Ö @  WlšN?d 8"sðvÛ @  Wm›N?d x"s6Ïú @  WnœN?d ¸"sýÍ @  WoN?d ø"s…‘Vç @  WpžN?d 8#sUÙÚ @  WqŸN?d x#só=Û9 @  Wr N?d ¸#sÓÈÙÇ @  Ws¡N?d ø#sæþØS @  Wt¢N?d 8$sÿ°+\ @  Wu£N?d x$s9£’} @  Wv¤N?d ¸$sVƒ @  Ww¥N?d ø$s'›5€ @  Wx¦N?d 8%s÷Ó¹h @  Wy§N?d x%s©Ðãn @  Wz¨N?d ¸%s‰%á @  W{©N?d ø%s¼à @  W|ªN?d 8&s!W@Å @  W}«N?d x&sçDùä @  W~¬N?d ¸&sDZû @  W­N?d ø&sŠqê @  W€®N?d 8'sØÂý @  W¯N?d x'sã‘Åè @  W‚°N?d ¸'sÃdÇ @  Wƒ±N?d ø'söRÆ‚ @  W„²N?d 8(s­JŸ @  W…³N?d x(s¾ó¾ @  W†´N?d ¸(s$Kñ@ @  W‡µN?d ø(s†TC @  Wˆ¶N?d 8)sÊÎØ« @  W‰·N?d x)s”Í‚­ @  WЏN?d ¸)s´8€S @  W‹¹N?d ø)sÇ @  WŒºN?d 8*sJ! @  W»N?d x*sÚY˜' @  W޼N?d ¸*sú¬šÙ @  W½N?d ø*siÀ: @  W¾N?d 8+s¹ˆÒ @  W‘¿N?d x+sï<™õ @  W’ÀN?d ¸+sÏÉ›  @  W“ÁN?d ø+súÿšŸ @  W”ÂN?d 8,sã±i @  W•ÃN?d x,s%¢Ð± @  W–ÄN?d ¸,sWÒO @  W—ÅN?d ø,s;šwL @  W˜ÆN?d 8-sëÒû¤ @  W™ÇN?d x-sµÑ¡¢ @  WšÈN?d ¸-s•$£\ @  W›ÉN?d ø-s ¢È @  WœÊN?d 8.s=V  @  WËN?d x.sûE»( @  WžÌN?d ¸.sÛ°¹Ö @  WŸÍN?d ø.sYÚ… @  W ÎN?d 8/s‰’‰m @  W¡ÏN?d x/s²Á±‡ @  W¢ÐN?d ¸/s’4³y @  W£ÑN?d ø/s§²í @  W¤ÒN?d 80sÜ_ @  W¥ÓN?d x0sßÏ·~ @  W¦ÔN?d ¸0sÿ:µ€ @  W§ÕN?d ø0sÁ÷ƒ @  W¨ÖN?d 81s¿œk @  W©×N?d x1sO¼Æm @  WªØN?d ¸1soIÄ“ @  W«ÙN?d ø1sZÅ @  W¬ÚN?d 82sÇ;eÆ @  W­ÛN?d x2s(Üç @  W®ÜN?d ¸2s!ÝÞ @  W¯ÝN?d ø2s²±Eú @  W°ÞN?d 83sbùÉ @  W±ßN?d x3sÄÈ$ @  W²àN?d ¸3säèÊÚ @  W³áN?d ø3sÑÞËN @  W´âN?d 84sÈ8A @  WµãN?d x4sƒ` @  W¶äN?d ¸4s.vƒž @  W·åN?d ø4s»& @  W¸æN?d 85sÀóªu @  W¹çN?d x5sžððs @  WºèN?d ¸5s¾ò @  W»éN?d ø5s‹3ó @  W¼êN?d 86swSØ @  W½ëN?d x6sÐdêù @  W¾ìN?d ¸6sð‘è @  W¿íN?d ø6sÜüRÆ @  WÀîN?d 87s ´Þ. @  WÁïN?d x7s7çæÄ @  WÂðN?d ¸7sä: @  WÃñN?d ø7s"$å® @  WÄòN?d 88sÛi³ @  WÅóN?d x8sÐÈÐ’ @  WÆôN?d ¸8sð=Òl @  WÇõN?d ø8sÎðwo @  WÈöN?d 89s¸û‡ @  WÉ÷N?d x9s@»¡ @  WÊøN?d ¸9s`N£ @  WËùN?d ø9sUx¢ë @  WÌúN?d 8:sÈ<* @  WÍûN?d x:s/»  @  WÎüN?d ¸:s.Ú¹õ @  WÏýN?d ø:s½¶" @  WÐþN?d 8;smþ®þ @  WÑÿN?d x;sYë»G @  WÒO?d ¸;sy¹¹ @  WÓO?d ø;sL(¸- @  WÔO?d 8s‹ » @  WÝ O?d x>sM’™š @  WÞ O?d ¸>smg›d @  Wß O?d ø>sï '7 @  WàO?d 8?s?E«ß @  WáO?d x?s“5 @  WâO?duÐ@s7€ ¸?s y…™ @  XO?d ø?s§+ñ @  XO?d P@s¢v @  XO?d @sºœ!ô @  XO?d Ð@s8 6* @  XO?d Asš«We @  XO?d PAs:@» @  XO?d As*ïPç @  XO?d ÐAs¨~G9 @  X O?d BsGÔ _ @  X O?d PBsÅE @  X O?d Bsd{Jm @  X O?d ÐBsæê]³ @  X O?d CsDL<ü @  XO?d PCsÆÝ+" @  XO?d Cs¡N^® @  X O?d ÐCs#ßIp @  X!O?d DsHWØ @  X"O?d PDsÊî@ @  X#O?d DskÐê @  X$O?d ÐDséA4 @  X%O?d EsKça{ @  X&O?d PEsÉvv¥ @  X'O?d Esû£fù @  X(O?d ÐEsy2q' @  X)O?d Fs–˜O?d PKsgÝJ\ @  X/?O?d Ksð*Á @  X0@O?d ÐKsr= @  X1AO?d Ls/#· @  X2BO?d PLs›¾4i @  X3CO?d Ls:€c… @  X4DO?d ÐLs¸t[ @  X5EO?d Ms· @  X6FO?d PMs˜&Ê @  X7GO?d Msªó– @  X8HO?d ÐMs(bH @  X9IO?d NsÇÈH. @  X:JO?d PNsEY_ð @  X;KO?d Nsäg @  X<LO?d ÐNsfö @  X=MO?d OsÄP~ @  X>NO?d POsFÁiS @  X?OO?d Osä! @  X@PO?d ÐOsuÿ @  XAQO?d PsMEBê @  XBRO?d PPsÏÔU4 @  XCSO?d PsnêØ @  XDTO?d ÐPsì{ @  XEUO?d QsNÝtI @  XFVO?d PQsÌLc— @  XGWO?d Qsþ™sË @  XHXO?d ÐQs|d @  XIYO?d Rs“¢)s @  XJZO?d PRs3>­ @  XK[O?d Rs° iA @  XL\O?d ÐRs2œ~Ÿ @  XM]O?d Ss:Ð @  XN^O?d PSs« @  XO_O?d Ssu8}‚ @  XP`O?d ÐSs÷©j\ @  XQaO?d Tsœ tô @  XRbO?d PTs˜c* @  XScO?d Ts¿¦4Æ @  XTdO?d ÐTs=7# @  XUeO?d UsŸ‘BW @  XVfO?d PUsU‰ @  XWgO?d Us/ÕEÕ @  XXhO?d ÐUs­DR  @  XYiO?d VsBîm @  XZjO?d PVsÀ³ @  X[kO?d VsaA__ @  X\lO?d ÐVsãÐH @  X]mO?d Ws<öZ² @  X^€nO?d PWs¾gMl @  X_€oO?d Ws(ÅUð @  X`pO?d ÐWsªTB. @  XaqO?d XsìE#” @  XbrO?d PXsTG6 @  Xc€sO?d Xs²jÚ @  Xd€tO?d ÐXs0û @  Xe€uO?d Ys’]fK @  Xf€vO?d PYsÌq• @  Xg€wO?d Ys"aÉ @  Xh€xO?d ÐYs ˆv @  Xi€yO?d ZsO";q @  Xj€zO?d PZsͳ,¯ @  Xk€{O?d ZsÓ¤ïê @  Xl|O?d ÐZsQ5ø4 @  Xm}O?d [só“™{ @  Xn~O?d P[sqŽ¥ @  XoO?d [sûºª @  Xp€O?d Ð[sy–­t @  XqO?d \s6³Ü @  Xr‚O?d P\s/Ž0« @  Xs€ƒO?d \sްgG @  Xt€„O?d Ð\s !p™ @  Xu€…O?d ]s®‡Ö @  Xv€†O?d P]s, @  Xw€‡O?d ]sÃT @  Xx€ˆO?d Ð]s#{•# @  Xy‰O?d ^sÌÑØE @  XzŠO?d P^sN@Ï› @  X{‹O?d ^sï~˜w @  X|ŒO?d Ð^sÒÆ @  X}€O?d _sp`zO @  X~€ŽO?d P_sòñm‘ @  X€O?d _sT‚0Ò @  XuÐ`s€€O?d Ð_si:³¥ @  X‘O?d (`s¥,ëš @  X‚’O?d h`s'½üD @  Xƒ“O?d ¨`s†ƒ«¨ @  X„”O?d è`s¼v @  X…•O?d (as¦´Ý9 @  X†–O?d has$%Êç @  X‡—O?d ¨asðÚ» @  Xˆ˜O?d èas”aÍe @  X‰™O?d (bs{Ë€ @  XŠšO?d hbsùZ—Ý @  X‹›O?d ¨bsXdÀ1 @  XŒœO?d èbsÚõ×ï @  XO?d (csxS¶  @  XŽžO?d hcsú¡~ @  XŸO?d ¨csQÔò @  X O?d ècsÀÃ, @  X‘¡O?d (dst`Ý„ @  X’¢O?d hdsöñÊZ @  X“£O?d ¨dsW϶ @  X”¤O?d èdsÕ^Šh @  X•¥O?d (eswøë' @  X–¦O?d hesõiüù @  X—§O?d ¨esǼì¥ @  X˜¨O?d èesE-û{ @  X™©O?d (fsª‡¶ @  XšªO?d hfs(¡Ã @  X›«O?d ¨fs‰(ö/ @  Xœ¬O?d èfs ¹áñ @  X­O?d (gs©€¾ @  Xž®O?d hgs+Ž—` @  XŸ¯O?d ¨gsÀ¬ü€ @  X °O?d ègsB=ë^ @  X¡±O?d (hs,Šä @  X¢²O?d hhs†½: @  X£³O?d ¨hs'ƒÊÖ @  X¤´O?d èhs¥Ý @  X¥µO?d (is´¼G @  X¦¶O?d his…%«™ @  X§·O?d ¨is·ð»Å @  X¨¸O?d èis5a¬ @  X©¹O?d (jsÚËá} @  XªºO?d hjsXZö£ @  X«»O?d ¨jsùd¡O @  X¬¼O?d èjs{õ¶‘ @  X­½O?d (ksÙS×Þ @  X®¾O?d hks[ÂÀ @  X¯¿O?d ¨ksÌ  @  X°ÀO?d èksN·C @  X±ÁO?d (ls%0©ë @  X²ÂO?d hls§¡¾5 @  X³ÃO?d ¨lsŸéÙ @  X´ÄO?d èls„þ @  XµÅO?d (ms&¨ŸH @  X¶ÆO?d hms¤9ˆ– @  X·ÇO?d ¨ms–ì˜Ê @  X¸ÈO?d èms} @  X¹ÉO?d (nsû×Âr @  XºÊO?d hnsyFÕ¬ @  X»ËO?d ¨nsØx‚@ @  X¼ÌO?d ènsZ镞 @  X½ÍO?d (osøOôÑ @  X¾ÎO?d hoszÞã @  X¿ÏO?d ¨os?ûŽ} @  XÀÐO?d èos½j™£ @  XÁÑO?d (psqZȶ @  XÂÒO?d hpsóËßh @  XÃÓO?d ¨psRõˆ„ @  XÄÔO?d èpsÐdŸZ @  XÅÕO?d (qsrÂþ @  XÆÖO?d hqsðSéË @  XÇ×O?d ¨qs†ù— @  XÈØO?d èqs@îI @  XÉÙO?d (rs¯½£/ @  XÊÚO?d hrs-,´ñ @  XËÛO?d ¨rsŒã @  XÌÜO?d èrsƒôà @  XÍÝO?d (ss¬%•Œ @  XÎÞO?d hss.´‚R @  XÏßO?d ¨ssI'÷Þ @  XÐàO?d èss˶à @  XÑáO?d (ts þ¨ @  XÒâO?d hts"‡év @  XÓãO?d ¨tsƒ¹¾š @  XÔäO?d èts(©D @  XÕåO?d (us£ŽÈ  @  XÖæO?d hus!ßÕ @  X×çO?d ¨usÊω @  XØèO?d èus‘[ØW @  XÙéO?d (vs~ñ•1 @  XÚêO?d hvsü`‚ï @  XÛëO?d ¨vs]^Õ @  XÜìO?d èvsßÏÂÝ @  XÝíO?d (ws}i£’ @  XÞîO?d hwsÿø´L @  XßïO?d ¨wsÚ߬ @  XàðO?d èws–KÈr @  XáñO?d (xsÐZ©È @  XâòO?d€ hxs&¢° @  YóO?d ¨xsfw½u @  YôO?d èxsäæª« @  YõO?d (ysƒ 0  @  YöO?d hys˜'× @  Y÷O?d ¨ysýÿhñ @  YøO?d èysn/ @  YùO?d (zs^vm3 @  YúO?d hzsÜçzí @  Y ûO?d ¨zs¸Öì @  Y üO?d èzs:Á2 @  Y ýO?d ({s]î[ @  Y þO?d h{sßLN @  Y ÿO?d ¨{s°‹jg @  YP?d è{s2}¹ @  YP?d (|s:©‹ @  YP?d h|s¸8U @  YP?d ¨|sÜO¹T @  YP?d è|s^Þ®Š @  YP?d (}s914( @  YP?d h}s» #ö @  YP?d ¨}sGÇlÐ @  YP?d è}sÅV{ @  Y P?d (~säNi @  Y P?d h~sfß~Ì @  Y P?d ¨~s¨ÒÍ @  Y P?d è~s€9Å @  Y P?d (sçÖ_± @  YP?d hseGHo @  YP?d ¨suЀs'üpe¥ @  YP?d ès…I{ @  Y P?d @€sëÊ‚ @  Y P?d €€sË?| @  Y! P?d À€s ,»] @  Y" P?d sÝd7µ @  Y# P?d @sèR6! @  Y$ P?d €sȧ4ß @  Y% P?d Às–¤nÙ @  Y& P?d ‚s àÎ @  Y' P?d @‚s5-k @  Y( P?d €‚sØiå @  Y) P?d À‚sÓËÐÄ @  Y* P?d ƒsƒ\, @  Y+ P?d @ƒs6µ]¸ @  Y, P?d €ƒs@_F @  Y- P?d Àƒs°¤^p @  Y.  P?d „s©ê­ @  Y/ !P?d @„s:†6œ @  Y0 "P?d €„ss4b @  Y1 #P?d À„sÜ`C @  Y2 $P?d …s (« @  Y3 %P?d @…s9? @  Y4 &P?d €…sëÁ @  Y5 'P?d À…sGèXÇ @  Y6 (P?d †sÚ¬ø @  Y7 )P?d @†säa] @  Y8 *P?d €†sÄ”_û @  Y9 +P?d À†s‡æÚ @  Y: ,P?d ‡sÒÏj2 @  Y; -P?d @‡sçùk¦ @  Y< .P?d €‡sÇ iX @  Y= /P?d À‡sü_Q² @  Y> 0P?d ˆsȠݯ @  Y? 1P?d @ˆsäÍgn @  Y@ 2P?d €ˆsÄ8e @  YA 3P?d Àˆs+ܱ @  YB 4P?d ‰sÒcPY @  YC 5P?d @‰sçUQÍ @  YD 6P?d €‰sÇ S3 @  YE 7P?d À‰s™£ 5 @  YF 8P?d Šsç©ô @  YG 9P?d @Šs:* ÷ @  YH :P?d €Šsß  @  YI ;P?d ÀŠsÜÌ·( @  YJ P?d €‹sG8ª @  YM ?P?d À‹sOó, @  YN @P?d ŒsV½ß‚ @  YO AP?d @ŒsÅÑDa @  YP BP?d €Œså$FŸ @  YQ CP?d ÀŒs#7ÿ¾ @  YR DP?d sósV @  YS EP?d @sÆIr @  YT FP?d €sæ¼p< @  YU GP?d Às¸¿*: @  YV HP?d Žs%ûŠû @  YW IP?d @Žs6/ø @  YX JP?d €Žs;Ã- @  YY KP?d ÀŽsýД' @  YZ LP?d s-˜Ï @  Y[ MP?d @s®[ @  Y\ NP?d €s8[¥ @  Y] OP?d Às#O @  Y^ PP?d s½ÖŸý @  Y_ QP?d @s?¼#® @  Y` RP?d €sI!P @  Ya SP?d ÀsÙZ˜q @  Yb TP?d ‘s ™ @  Yc UP?d @‘s<$  @  Yd VP?d €‘sÑó @  Ye WP?d À‘sBÒMõ @  Yf XP?d ’sß–í4 @  Yg YP?d @’sá[H7 @  Yh ZP?d €’sÁ®JÉ @  Yi [P?d À’s½óè @  Yj \P?d “s×õ @  Yk ]P?d @“sâÃ~” @  Yl ^P?d €“sÂ6|j @  Ym _P?d À“sdÒ}\ @  Yn `P?d ”s}œŽS @  Yo aP?d @”sîð° @  Yp bP?d €”sÎN @  Yq cP?d À”s®o @  Yr dP?d •sØ^"‡ @  Ys eP?d @•síh# @  Yt fP?d €•sÍ!í @  Yu gP?d À•s“ž{ë @  Yv hP?d –sÚÛ* @  Yw iP?d @–s0~) @  Yx jP?d €–sâ|× @  Yy kP?d À–sÖñÅö @  Yz lP?d —s¹I @  Y{ mP?d @—s3HŠ @  Y| nP?d €—szJt @  Y} oP?d À—s()rž @  Y~ pP?d ˜sÖþƒ @  Y qP?d @˜sÓíts @  Y€ rP?d €˜sóv @  Y sP?d À˜sÎeô¬ @  Y‚tP?d ™s-xD @  YƒuP?d @™s+yÐ @  Y„vP?d €™s î{. @  Y…wP?d À™sUí!( @  Y†xP?d šsÈ©é @  Y‡yP?d @šsöd$ê @  YˆzP?d €šsÖ‘& @  Y‰{P?d Àšs‚Ÿ5 @  YŠ|P?d ›sÀÊÝ @  Y‹}P?d @›sõüI @  YŒ~P?d €›sÕ · @  YP?d À›sž{P @  YŽ€P?d œs‡5£  @  YP?d @œsY8î @  Y‚P?d €œs4¬: @  Y‘ƒP?d Àœsò¿ƒ1 @  Y’„P?d s"÷Ù @  Y“…P?d @sÁM @  Y”†P?d €s74 ³ @  Y•‡P?d Àsi7Vµ @  Y–ˆP?d žsôsöt @  Y—‰P?d @žsʾSw @  Y˜ŠP?d €žsêKQ‰ @  Y™‹P?d Àžs,Xè¨ @  YšŒP?d Ÿsüd@ @  Y›P?d @ŸsÉ&eÔ @  YœŽP?d €ŸséÓg* @  YPuРs?d ÀŸsÒ€_À @  YžP?d  s£‹¦ @  YŸ‘P?d X s!á=õ @  Y ’P?d ˜ s?  @  Y¡“P?d Ø sdž* @  Y¢”P?d ¡sO  @  Y£•P?d X¡s"y V @  Y¤–P?d ˜¡sŒ ¨ @  Y¥—P?d Ø¡s\S® @  Y¦˜P?d ¢sÁËóo @  Y§™P?d X¢sÿVl @  Y¨šP?d ˜¢sßóT’ @  Y©›P?d Ø¢sàí³ @  YªœP?d £sɨa[ @  Y«P?d X£süž`Ï @  Y¬žP?d ˜£sÜkb1 @  Y­ŸP?d Ø£szc @  Y® P?d ¤scÁ @  Y¯¡P?d X¤sð­ ë @  Y°¢P?d ˜¤sÐX  @  Y±£P?d ؤsK°4 @  Y²¤P?d ¥sÆ<Ü @  Y³¥P?d X¥só5=H @  Y´¦P?d ˜¥sÓÀ?¶ @  Yµ§P?d Ø¥sÃe° @  Y¶¨P?d ¦s‡Åq @  Y·©P?d X¦s.J`r @  Y¸ªP?d ˜¦s¿bŒ @  Y¹«P?d ئsȬۭ @  Yº¬P?d §säWE @  Y»­P?d X§s-ÒVÑ @  Y¼®P?d ˜§s 'T/ @  Y½¯P?d اs6tlÅ @  Y¾°P?d ¨s‹àØ @  Y¿±P?d X¨s.æZ @  YÀ²P?d ˜¨sXç @  YÁ³P?d بsÈáÆ @  Y´P?d ©sHm. @  YõP?d X©s-~lº @  YĶP?d ˜©s ‹nD @  YÅ·P?d Ø©sSˆ4B @  YƸP?d ªsÎÌ”ƒ @  YǹP?d Xªsð1€ @  YȺP?d ˜ªsÐô3~ @  YÉ»P?d تsçŠ_ @  YʼP?d «sƯ· @  Y˽P?d X«só™# @  Y̾P?d ˜«sÓlÝ @  YÍ¿P?d Ø«s…Øú @  YÎÀP?d ¬sœ–âõ @  YÏÁP?d X¬súy @  YÐÂP?d ˜¬s/{è @  YÑÃP?d جséÂÉ @  YÒÄP?d ­s9TN! @  YÓÅP?d X­s bOµ @  YÔÆP?d ˜­s,—MK @  YÕÇP?d Ø­sr”M @  YÖÈP?d ®sïзŒ @  Y×ÉP?d X®sÑ @  YØÊP?d ˜®sñèq @  YÙËP?d Ø®s7û©P @  YÚÌP?d ¯sç³%¸ @  YÛÍP?d X¯sÒ…$, @  YÜÎP?d ˜¯sòp&Ò @  YÝÏP?d دsÉ#8 @  YÞÐP?d °swý¢Š @  YßÑP?d X°sõ—Ù @  YàÒP?d ˜°sÕb' @  YáÓP?d ذsq¥ @  YâÔP?d€ ±s~Þî @  ZÕP?d X±sÖ —S @  ZÖP?d ˜±söü•­ @  Z×P?d رsm¶4F @  ZØP?d ²sðò”‡ @  ZÙP?d X²snþ @  ZÚP?d ˜²s xl @  ZÛP?d زs(ÙŠ[ @  ZÜP?d ³sø‘³ @  Z ÝP?d X³sîüÊ @  Z ÞP?d ˜³s(þ4 @  Z ßP?d سsK¶ï @  Z àP?d ´sRø÷à @  Z áP?d X´s¢‡ ™ @  ZâP?d ˜´s‚rg @  ZãP?d Ø´s'r×Ü @  ZäP?d µs÷:[4 @  ZåP?d XµsE¡M @  ZæP?d ˜µs'°£³ @  ZçP?d صs¼úX @  ZèP?d ¶s!¾¢™ @  ZéP?d X¶sÑÁXà @  ZêP?d ˜¶sñ4Z @  ZëP?d ضsù•¼E @  ZìP?d ·s)Ý0­ @  ZíP?d X·sÙ¢ÊÔ @  ZîP?d ˜·sùWÈ* @  ZïP?d Ø·sM - @  ZðP?d ¸s3²‡0 @  ZñP?d X¸sÃÍ}I @  ZòP?d ˜¸sã8· @  ZóP?d ظsW>€¼ @  Z ôP?d ¹s‡v T @  Z!õP?d X¹sw ö- @  Z"öP?d ˜¹sWüôÓ @  Z#÷P?d عs̶U8 @  Z$øP?d ºsQòõù @  Z%ùP?d Xºs¡€ @  Z&úP?d ˜ºsx ~ @  Z'ûP?d غs‰Ùë% @  Z(üP?d »sY‘gÍ @  Z)ýP?d X»s©î´ @  Z*þP?d ˜»s‰ŸJ @  Z+ÿP?d Ø»sxGq @  Z,Q?d ¼sa ‚ @  Z-Q?d X¼s‘vxh @  Z.Q?d ˜¼s±ƒz– @  Z/Q?d ؼsƒ¢- @  Z0Q?d ½sÄË.Å @  Z1Q?d X½s4´Ô¼ @  Z2Q?d ˜½sAÖB @  Z3Q?d ؽs w© @  Z4Q?d ¾sO×h @  Z5 Q?d X¾sâ0- @  Z6 Q?d ˜¾sÂÅ/ï @  Z7 Q?d ؾsÊdÉ´ @  Z8 Q?d ¿s,E\ @  Z9 Q?d X¿sêS¿% @  Z:Q?d ˜¿sʦ½Û @uÐÀs  Z;Q?d Ø¿s4¼~Ü @  Z<Q?d 0ÀsPL/Ž @  Z=Q?d pÀs 3Õ÷ @  Z>Q?d °Às€Æ×  @  Z?Q?d ðÀsšÇ. @  Z@Q?d 0ÁsJ¢x @  ZAQ?d pÁsºðX @  ZBQ?d °ÁsšZÿ @  ZCQ?d ðÁsOû @  ZDQ?d 0Âsœ [Õ @  ZEQ?d pÂslt¡¬ @  ZFQ?d °ÂsL£R @  ZGQ?d ðÂsD E  @  ZHQ?d 0Ãs”hÉá @  ZIQ?d pÃsd3˜ @  ZJQ?d °ÃsDâ1f @  ZKQ?d ðÃs'O˽ @  ZL Q?d 0Äs>8² @  ZM!Q?d pÄsÎ~ÂË @  ZN"Q?d °Äsî‹À5 @  ZO#Q?d ðÄsK‹Ž @  ZP$Q?d 0Ås›Ã”f @  ZQ%Q?d pÅsk¼n @  ZR&Q?d °ÅsKIlá @  ZS'Q?d ðÅsÐÍ  @  ZT(Q?d 0ÆsMGmË @  ZU)Q?d pÆs½8—² @  ZV*Q?d °ÆsÍ•L @  ZW+Q?d ðÆs•ls @  ZX,Q?d 0ÇsE$ÿÿ @  ZY-Q?d pÇsµ[† @  ZZ.Q?d °Çs•®x @  Z[/Q?d ðÇsk´Ä @  Z\0Q?d 0Ès_KHb @  Z]1Q?d pÈs¯4² @  Z^2Q?d °ÈsÁ°å @  Z_3Q?d ðÈs;ÇOî @  Z`4Q?d 0Ésëà @  Za5Q?d pÉsð9 @  Zb6Q?d °És;; @  Zc7Q?d ðÉs Ošj @  Zd8Q?d 0Ês= :« @  Ze9Q?d pÊsÍtÀÒ @  Zf:Q?d °ÊsíÂ, @  Zg;Q?d ðÊså $w @  ZhQ?d °ËsåâP @  Zk?Q?d ðËsv¿Ò @  Zl@Q?d 0ÌsoQLÝ @  ZmAQ?d pÌsŸ.¶¤ @  ZnBQ?d °Ìs¿Û´Z @  ZoCQ?d ðÌsÛlá @  ZpDQ?d 0ÍsÊ“à  @  ZqEQ?d pÍs:ìp @  ZrFQ?d °ÍsŽ @  ZsGQ?d ðÍsS¹e @  ZtHQ?d 0Îs¤ @  ZuIQ?d pÎsìhãÝ @  ZvJQ?d °ÎsÌá# @  ZwKQ?d ðÎsÄ<x @  ZxLQ?d 0Ïst‹ @  ZyMQ?d pÏsä qé @  ZzNQ?d °ÏsÄþs @  Z{OQ?d ðÏs:ä° @  Z|PQ?d 0Ðs„: ¢ @  Z}QQ?d pÐstEöÛ @  Z~RQ?d °ÐsT°ô% @  ZSQ?d ðÐs­ç= @  Z€TQ?d 0Ñs}¯±e @  ZUQ?d pÑsÐK @  Z‚VQ?d °Ñs­%Iâ @  ZƒWQ?d ðÑs6oè  @  Z„XQ?d 0Òs«+HÈ @  Z…YQ?d pÒs[T²± @  Z†ZQ?d °Òs{¡°O @  Z‡[Q?d ðÒssV @  Zˆ\Q?d 0Ós£HÚü @  Z‰]Q?d pÓsS7 … @  ZŠ^Q?d °ÓssÂ"{ @  Z‹_Q?d ðÓsoØ  @  ZŒ`Q?d 0Ôs !+¯ @  ZaQ?d pÔsù^ÑÖ @  ZŽbQ?d °ÔsÙ«Ó( @  ZcQ?d ðÔs|« “ @  ZdQ?d 0Õs¬ã‡{ @  Z‘eQ?d pÕs\œ} @  Z’fQ?d °Õs|iü @  Z“gQ?d ðÕsç#Þ @  Z”hQ?d 0Öszg~Ö @  Z•iQ?d pÖsŠ„¯ @  Z–jQ?d °Ösªí†Q @  Z—kQ?d ðÖs¢L`  @  Z˜lQ?d 0×srìâ @  Z™mQ?d p×s‚{› @  ZšnQ?d °×s¢Že @  Z›oQ?d ð×s\”×b @  ZœpQ?d 0Øshk[ @  ZqQ?d pØs˜¡ @  ZžrQ?d °Øs¸á£ø @  ZŸsQ?d ðØs ç\ó @  Z tQ?d 0ÙsܯÐ @  Z¡uQ?d pÙs,Ð*b @  Z¢vQ?d °Ùs %(œ @  Z£wQ?d ðÙs—o‰w @  Z¤xQ?d 0Ús +)¶ @  Z¥yQ?d pÚsúTÓÏ @  Z¦zQ?d °ÚsÚ¡Ñ1 @  Z§{Q?d ðÚsÒ7j @  Z¨|Q?d 0ÛsH»‚ @  Z©}Q?d pÛsò7Aû @  Zª~Q?d °ÛsÒÂC @  Z«Q?d ðÛs\ùø] @  Z¬€Q?d 0ÜsE· R @  Z­Q?d pÜsµÈñ+ @  Z®‚Q?d °Üs•=óÕ @  Z¯ƒQ?d ðÜs0=+n @  Z°„Q?d 0Ýsàu§† @  Z±…Q?d pÝs ]ÿ @  Z²†Q?d °Ýs0ÿ_ @  Z³‡Q?d ðÝs«µþê @  Z´ˆQ?d 0Þs6ñ^+ @  Zµ‰Q?d pÞsÆŽ¤R @  Z¶ŠQ?d °Þsæ{¦¬ @  Z·‹Q?d ðÞsîÚ@÷ @  Z¸ŒQ?d 0ßs>’Ì @  Z¹Q?d pßsÎí6f @  ZºŽQ?d uÐàs/°ßsî4˜ @  Z»Q?d ðßs÷Ÿ @  Z¼Q?d Hàs ¦©i @  Z½‘Q?d ˆàs[½F0 @  Z¾’Q?d ÈàsÙ,Qî @  Z¿“Q?d ás‘ô3A @  ZÀ”Q?d Háse$Ÿ @  ZÁ•Q?d ˆásA~ËÆ @  Z–Q?d ÈásÃïÜ @  Z×Q?d âsGpÊì @  ZĘQ?d HâsÅáÝ2 @  ZÅ™Q?d ˆâs—ú2k @  ZÆšQ?d Èâsk%µ @  ZÇ›Q?d ãsOXØ @  ZÈœQ?d HãsÍ‚O @  ZÉQ?d ˆãsŸ™ _ @  ZÊžQ?d Èãs· @  ZËŸQ?d äsåz©‹ @  ZÌ Q?d Häsgë¾U @  ZÍ¡Q?d ˆäs5ðQ  @  Z΢Q?d Èäs·aFÒ @  ZÏ£Q?d ås@¸_ @  ZФQ?d HåsÂ) @  ZÑ¥Q?d ˆås2ýØ @  ZÒ¦Q?d Èås£ê @  ZÓ§Q?d æs–<üò @  ZÔ¨Q?d Hæs­ë, @  ZÕ©Q?d ˆæsF¶u @  ZÖªQ?d ÈæsÄ'« @  Z׫Q?d çsž_nÆ @  ZجQ?d HçsÎy @  ZÙ­Q?d ˆçsNÕ–A @  ZÚ®Q?d ÈçsÌDŸ @  ZÛ¯Q?d ès„0Ù[ @  ZܰQ?d Hès¡Î… @  ZݱQ?d ˆèsTº!Ü @  ZÞ²Q?d ÈèsÖ+6 @  Zß³Q?d és0ôR? @  Zà´Q?d Hés²eEá @  ZáµQ?d ˆésà~ª¸ @  Zâ¶Q?d€ Èés,¡À @  [·Q?d êssòÿ @  [¸Q?d Hêsñcèà @  [¹Q?d ˆêsf1üw @  [ºQ?d Èêsä ë© @  [»Q?d ëspjɾ @  [¼Q?d HësòûÞ` @  [½Q?d ˆësnRnC @  [¾Q?d ÈësìÃy @  [ ¿Q?d ìs!¨‰k @  [ ÀQ?d Hìs£9žµ @  [ ÁQ?d ˆìs4kŠ @  [ ÂQ?d Èìs¶úß @  [ ÃQ?d ís"0¿È @  [ÄQ?d Hís ¡¨ @  [ÅQ?d ˆís‘©&Õ @  [ÆQ?d Èís81  @  [ÇQ?d îsRîÜ @  [ÈQ?d HîsÐËÌ @  [ÉQ?d ˆîsG-ßx @  [ÊQ?d ÈîsżȦ @  [ËQ?d ïsQvê± @  [ÌQ?d HïsÓçýo @  [ÍQ?d ˆïsONML @  [ÎQ?d ÈïsÍßZ’ @  [ÏQ?d ðsÊÃÉ @  [ÐQ?d HðsHRÞÊ @  [ÑQ?d ˆðsßÊ~ @  [ÒQ?d Èðs]‘Ý  @  [ÓQ?d ñsÉ[ÿ· @  [ÔQ?d HñsKÊèi @  [ÕQ?d ˆñskÄA @  [ ÖQ?d ÈñséUVÄ @  [!×Q?d òs¨ƒ»Ý @  ["ØQ?d Hòs*¬ @  [#ÙQ?d ˆòs½@¸· @  [$ÚQ?d Èòs?ѯi @  [%ÛQ?d ós«~ @  [&ÜQ?d Hós)Šš  @  ['ÝQ?d ˆósµ#*ƒ @  [(ÞQ?d Èós7²=] @  [)ßQ?d ôs ‰Øº @  [*àQ?d HôsˆÏd @  [+áQ?d ˆôsJÛÐ @  [,âQ?d ÈôsÛÌ @  [-ãQ?d õs î @  [.äQ?d Hõs‹€ùÇ @  [/åQ?d ˆõsºˆw @  [0æQ?d Èõs8`Ú @  [1çQ?d ösyÏà @  [2èQ?d Hösû^š @  [3éQ?d ˆösl Ž© @  [4êQ?d Èösî™w @  [5ëQ?d ÷szW»` @  [6ìQ?d H÷søÆ¬¾ @  [7íQ?d ˆ÷sdo @  [8îQ?d È÷sæþ C @  [9ïQ?d øskèj @  [:ðQ?d HøséR¿´ @  [;ñQ?d ˆøs~« @  [<òQ?d Èøsü‘¼Þ @  [=óQ?d ùsh[žÉ @  [>ôQ?d Hùsêʉ @  [?õQ?d ˆùsdÃ&ö @  [@öQ?d ÈùsæR1( @  [A÷Q?d ús§„Ü1 @  [BøQ?d Hús%Ëï @  [CùQ?d ˆús²Gß[ @  [DúQ?d Èús0ÖÈ… @  [EûQ?d ûs¤ê’ @  [FüQ?d Hûs&ýL @  [GýQ?d ˆûsº$Mo @  [HþQ?d Èûs8µZ± @  [IÿQ?d üs%]žü @  [JR?d Hüs§Ì‰" @  [KR?d ˆüs0ž– @  [LR?d Èüs²ŠH @  [MR?d ýs&Ũ_ @  [NR?d Hýs¤T¿ @  [OR?d ˆýs•\1B @  [PR?d ÈýsÍ&œ @  [QR?d þsVË… @  [RR?d HþsÔŠÜ[ @  [S R?d ˆþsCØÈï @  [T R?d ÈþsÁIß1 @  [U R?d ÿsUƒý& @  [V R?d Hÿs×êø @  [W R?d ˆÿsK»ZÛ @  [XuÐtR?d ÈÿsÉ*M @  [YR?d tE.p¯ @  [ZR?d `tÇ¿gq @  [[R?d  tPísÅ @  [\R?d àtÒ|d @  []R?d tF¶F  @  [^R?d `tÄ'QÒ @  [_R?d  tä)ø¡ @  [`R?d àtf¸ï @  [aR?d t'nf @  [bR?d `t¥ÿ¸ @  [cR?d  t2­  @  [dR?d àt°<Ò @  [eR?d t$ö4Å @  [fR?d `t¦g# @  [gR?d  t:Γ8 @  [hR?d àt¸_„æ @  [iR?d t…da @  [j R?d `tõvß @  [k!R?d  t§bk @  [l"R?d àt6uµ @  [m#R?d t†üW¢ @  [n$R?d `tm@| @  [o%R?d  t5eο @  [p&R?d àt·ôÙa @  [q'R?d tö"4x @  [r(R?d `tt³#¦ @  [s)R?d  tãá7 @  [t*R?d àtap Ì @  [u+R?d tõºÛ @  [v,R?d `tw+ @  [w-R?d  të‚¥& @  [x.R?d àti²ø @  [y/R?d tä.Ñ @  [z0R?d `tf¿ @  [{1R?d  tñí» @  [|2R?d àts|e @  [}3R?d tç¶'r @  [~4R?d ` te'0¬ @  [5R?d   tx¯| @  [€6R?d à tŠé¸¢ @  [7R?d tË?U» @  [‚8R?d ` tI®Be @  [ƒ9R?d   tÞüVÑ @  [„:R?d à t\mA @  […;R?d tȧc @  [†R?d à tTÓ; @  [‰?R?d t™e#Í @  [Š@R?d ` tô4 @  [‹AR?d   tŒ¦ § @  [ŒBR?d à t77y @  [CR?d tšýn @  [ŽDR?d ` tl° @  [ER?d   t)dŒs @  [FR?d à t«õ›­ @  [‘GR?d tê#v´ @  [’HR?d `th²aj @  [“IR?d  tÿàuÞ @  [”JR?d àt}qb @  [•KR?d té»@ @  [–LR?d `tk*WÉ @  [—MR?d  t÷ƒçê @  [˜NR?d àtuð4 @  [™OR?d trc² @  [šPR?d `tðŸtl @  [›QR?d  tgÍ`Ø @  [œRR?d àtå\w @  [SR?d tq–U @  [žTR?d `tóBÏ @  [ŸUR?d  tÓ ë¼ @  [ VR?d àtQ˜üb @  [¡WR?d tN{ @  [¢XR?d `t’ߥ @  [£YR?d  t @  [¤ZR?d àt‡Ï @  [¥[R?d tÖ'Ø @  [¦\R?d `t‘G0 @  [§]R?d  t î€% @  [¨^R?d àt—û @  [©_R?d t²Dr @  [ª`R?d `t0Õe @  [«aR?d  t§‡qv @  [¬bR?d àt%f¨ @  [­cR?d t±ÜD¿ @  [®dR?d `t3MSa @  [¯eR?d  tEÝ¢ @  [°fR?d àt€ÔÊ| @  [±gR?d tÁ'e @  [²hR?d `tC“0» @  [³iR?d  tÔÁ$ @  [´jR?d àtVP3Ñ @  [µkR?d tšÆ @  [¶lR?d `t@  @  [·mR?d  tÜ¢¶; @  [¸nR?d àt^3¡å @  [¹oR?d tÓÌ @  [ºpR?d `tQŸ @  [»qR?d  tÆÍ¦ @  [¼rR?d àtD\x @  [½sR?d tЖ4o @  [¾tR?d `tR#± @  [¿uR?d  tÜŒP @  [ÀvR?d àt^Ÿ›Ž @  [ÁwR?d tIv— @  [ÂxR?d `tØaI @  [ÃyR?d  t Šuý @  [ÄzR?d àtˆb# @  [Å{R?d tÑ@4 @  [Æ|R?d `tž@Wê @  [Ç}R?d  téçÉ @  [È~R?d àt€xð @  [ÉR?d tPÕTs @  [Ê€R?d `tÒDC­ @  [ËR?d  tEW @  [Ì‚R?d àtLJ@Ç @  [̓R?d tSMbÐ @  [΄R?d `tÑÜu @  [Ï…R?d  tàÔûÍ @  [ІR?d àtbEì @  [чR?d t#“  @  [ÒˆR?d `t¡Ô @  [Ó‰R?d  t6P` @  [ÔŠR?d àt´Á¾ @  [Õ‹R?d t 7© @  [ÖŒR?d `t¢š w @  [×R?d  t>3TuÐ t @  [ØŽR?d àt¼¢‡Š @  [ÙR?d 8 ttkvØ @  [ÚR?d x töúa @  [Û‘R?d ¸ ta¨u² @  [Ü’R?d ø tã9bl @  [Ý“R?d 8!twó@{ @  [Þ”R?d x!tõbW¥ @  [ß•R?d ¸!tÕlþÖ @  [à–R?d ø!tWýé @  [á—R?d 8"t+ @  [â˜R?d€ x"tì»v @  \™R?d ¸"tdÿçë @  \šR?d ø"tænð5 @  \›R?d 8#t·í)Ï @  \œR?d x#t5|> @  \R?d ¸#tggÑH @  \žR?d ø#tåöÆ– @  \ŸR?d 8$t|  @  \ R?d x$t”îkÕ @  \ ¡R?d ¸$tÆõ„Œ @  \ ¢R?d ø$tDd“R @  \ £R?d 8%tçJ¨ @  \ ¤R?d x%t—v]v @  \ ¥R?d ¸%tÅm²/ @  \¦R?d ø%tGü¥ñ @  \§R?d 8&te9)r @  \¨R?d x&tç¨>¬ @  \©R?d ¸&tµ³Ñõ @  \ªR?d ø&t7"Æ+ @  \«R?d 8'tf¡Ñ @  \¬R?d x'tä0 @  \­R?d ¸'t¶+çV @  \®R?d ø't4ºðˆ @  \¯R?d 8(tw5 Û @  \°R?d x(tõ¤ @  \±R?d ¸(t§¿ô\ @  \²R?d ø(t%.ã‚ @  \³R?d 8)tt­:x @  \´R?d x)tö<-¦ @  \µR?d ¸)t¤'Âÿ @  \¶R?d ø)t&¶Õ! @  \·R?d 8*tu~ @  \ ¸R?d x*t—äiÌ @  \!¹R?d ¸*tÅÿ†• @  \"ºR?d ø*tGn‘K @  \#»R?d 8+tíH± @  \$¼R?d x+t”|_o @  \%½R?d ¸+tÆg°6 @  \&¾R?d ø+tDö§è @  \'¿R?d 8,tG/d @  \(ÀR?d x,tžº @  \)ÁR?d ¸,t—¥ðã @  \*ÂR?d ø,t4ç= @  \+ÃR?d 8-tD·>Ç @  \,ÄR?d x-tÆ&) @  \-ÅR?d ¸-t”=Æ@ @  \.ÆR?d ø-t¬Ñž @  \/ÇR?d 8.t4i] @  \0ÈR?d x.t¶øJà @  \1ÉR?d ¸.tä㥚 @  \2ÊR?d ø.tfr²D @  \3ËR?d 8/t7ñk¾ @  \4ÌR?d x/tµ`|` @  \5ÍR?d ¸/tç{“9 @  \6ÎR?d ø/teê„ç @  \7ÏR?d 80t¬DH @  \8ÐR?d x0t.Õ_Å @  \9ÑR?d ¸0t|ΰœ @  \:ÒR?d ø0tþ_§B @  \;ÓR?d 81t¯Ü~¸ @  \<ÔR?d x1t-Mif @  \=ÕR?d ¸1tV†? @  \>ÖR?d ø1týÇ‘á @  \?×R?d 82t`<@ @  \@ØR?d x2tâ’+ž @  \AÙR?d ¸2t°‰ÄÇ @  \BÚR?d ø2t2Ó @  \CÛR?d 83tc› ã @  \DÜR?d x3tá = @  \EÝR?d ¸3t³òd @  \FÞR?d ø3t1€åº @  \GßR?d 84t _' @  \HàR?d x4t@˜Hù @  \IáR?d ¸4tƒ§  @  \JâR?d ø4t°~ @  \KãR?d 85tÁ‘i„ @  \LäR?d x5tC~Z @  \MåR?d ¸5t‘ @  \NæR?d ø5t“ІÝ @  \OçR?d 86t±O ^ @  \PèR?d x6t3Þ€ @  \QéR?d ¸6taÅòÙ @  \RêR?d ø6tãTå @  \SëR?d 87t²×<ý @  \TìR?d x7t0F+# @  \UíR?d ¸7tb]Äz @  \VîR?d ø7tàÌÓ¤ @  \WïR?d 88t£C/÷ @  \XðR?d x8t!Ò8) @  \YñR?d ¸8tsÉ×p @  \ZòR?d ø8tñXÀ® @  \[óR?d 89t ÛT @  \\ôR?d x9t"JŠ @  \]õR?d ¸9tpQáÓ @  \^öR?d ø9tòÀö  @  \_÷R?d 8:tÁ]> @  \`øR?d x:tC’Jà @  \aùR?d ¸:t‰¥¹ @  \búR?d ø:t“²g @  \cûR?d 8;t›k @  \düR?d x;t@ |C @  \eýR?d ¸;t“ @  \fþR?d ø;t€„Ä @  \gÿR?d 8t‚¾¯ @  \pS?d x>t/hq @  \q S?d ¸>tR4‡( @  \r S?d ø>tÐ¥ö @  \s S?d 8?t&I  @  \t S?d x?t·^Ò @  \u S?duÐ@t7 ¸?tQ¬±‹ @  \vS?d ø?tÓ=¦U @  \wS?d P@tgál' @  \xS?d @tGnÙ @  \yS?d Ð@t·k”  @  \zS?d Atg#H @  \{S?d PAtdyZ„ @  \|S?d AtDŒXz @  \}S?d ÐAt´ó¢ @  \~S?d Bt)·Â @  \S?d PBtHð(M @  \€S?d Bth*³ @  \S?d ÐBt˜zÐÊ @  \‚S?d CtH2\" @  \ƒS?d PCtKhî @  \„S?d Ctk @  \…S?d ÐCt›âæi @  \†S?d Dt‚¬f @  \‡S?d PDtêúK* @  \ˆ S?d DtÊIÔ @  \‰!S?d ÐDt:p³­ @  \Š"S?d Etê8?E @  \‹#S?d PEtéb}‰ @  \Œ$S?d EtÉ—w @  \%S?d ÐEt9è… @  \Ž&S?d Ft¤¬%Ï @  \'S?d PFt™¼S @  \(S?d Ft¹I­ @  \‘)S?d ÐFtI6æÔ @  \’*S?d Gt™~j< @  \“+S?d PGtš$(ð @  \”,S?d GtºÑ* @  \•-S?d ÐGtJ®Ðw @  \–.S?d Ht~Q\j @  \—/S?d PHt‹°;ú @  \˜0S?d Ht«E9 @  \™1S?d ÐHt[:Ã} @  \š2S?d It‹rO• @  \›3S?d PItˆ( Y @  \œ4S?d It¨Ý§ @  \5S?d ÐItX¢õÞ @  \ž6S?d JtÅæU @  \Ÿ7S?d PJtéðI3 @  \ 8S?d JtÉKÍ @  \¡9S?d ÐJt9z±´ @  \¢:S?d Kté2=\ @  \£;S?d PKtêh @  \¤S?d Lt#¬t @  \§?S?d PLt»ª?E @  \¨@S?d Lt›_=» @  \©AS?d ÐLtk Ç @  \ªBS?d Mt»hK* @  \«CS?d PMt¸2 æ @  \¬DS?d Mt˜Ç  @  \­ES?d ÐMth¸ña @  \®FS?d NtõüQ  @  \¯GS?d PNtÈìj< @  \°HS?d Ntèh @  \±IS?d ÐNtf’» @  \²JS?d OtÈ.S @  \³KS?d POtËt\Ÿ @  \´LS?d Otë^a @  \µMS?d ÐOtþ¤ @  \¶NS?d Pt¥ ª @  \·OS?d PPtPÁ: @  \¸PS?d Ptp4}Ä @  \¹QS?d ÐPt€K‡½ @  \ºRS?d QtP U @  \»SS?d PQtSYI™ @  \¼TS?d Qts¬Kg @  \½US?d ÐQtƒÓ± @  \¾VS?d Rt—ß @  \¿WS?d PRtœ† a @  \ÀXS?d Rt¼s Ÿ @  \ÁYS?d ÐRtL óæ @  \ÂZS?d StœD @  \Ã[S?d PStŸ= @  \Ä\S?d St¿ë?< @  \Å]S?d ÐStO”ÅE @  \Æ^S?d TtVÚ6J @  \Ç_S?d PTt>Œh @  \È`S?d Ttyjø @  \ÉaS?d ÐTtî @  \ÊbS?d Ut>Ni @  \ËcS?d PUt=^¥ @  \ÌdS?d Utá\[ @  \ÍeS?d ÐUt힦" @  \ÎfS?d VtpÚã @  \ÏgS?d PVtMÊ= @  \ÐhS?d Vtm?? @  \ÑiS?d ÐVt@Åø @  \ÒjS?d WtMI @  \ÓkS?d PWtNR Ü @  \ÔlS?d Wtn§ " @  \ÕmS?d ÐWtžØó[ @  \ÖnS?d Xtª'F @  \×oS?d PXt_ÆÖ @  \ØpS?d Xt3( @  \ÙqS?d ÐXtLàQ @  \ÚrS?d Yt_l¹ @  \ÛsS?d PYt\^.u @  \ÜtS?d Yt|«,‹ @  \ÝuS?d ÐYtŒÔÖò @  \ÞvS?d Ztv3 @  \ßwS?d PZt=†j @  \àxS?d Ztshá @  \áyS?d ÐZtí ’˜ @  \âzS?d€ [tI‡Ö @  ]{S?d P[t«œ3 @  ]|S?d [t‹i Í @  ]}S?d Ð[t¾_ Y @  ]~S?d \t§øV @  ]S?d P\tìc¸ã @  ]€S?d \tÌ–º @  ]S?d Ð\tò[ @  ]‚S?d ]t"“ö @  ] ƒS?d P]tä*× @  ] „S?d ]tÄõ() @  ] …S?d Ð]tñÃ)½ @  ] †S?d ^tl‡‰| @  ] ‡S?d P^t2„Óz @  ]ˆS?d ^tqÑ„ @  ]‰S?d Ð^tJg @  ]ŠS?d _tQUÆ @  ]‹S?d P_t—F® @  ]ŒS?d _t·³}P @  ]uÐ`tS?d Ð_t‚…|Ä @  ]ŽS?d (`t<}É\ @  ]S?d h`t.ñ¶ @  ]S?d ¨`t'ÛóH @  ]‘S?d è`tVK @  ]’S?d (atÉ^Ú£ @  ]“S?d hatMc‚ @  ]”S?d ¨at/¸a| @  ]•S?d èatŽ`è @  ]–S?d (bt‡ÊÀ) @  ]—S?d hbtÙÉš/ @  ]˜S?d ¨btù<˜Ñ @  ]™S?d èbt{V$‚ @  ] šS?d (ct«¨j @  ]!›S?d hctm K @  ]"œS?d ¨ctMøµ @  ]#S?d èctxÎ! @  ]$žS?d (dta€á. @  ]%ŸS?d hdtÇdà @  ]& S?d ¨dtç‘âæ @  ]'¡S?d èdtÙ\Gå @  ](¢S?d (et Ë  @  ])£S?d hetÏr, @  ]*¤S?d ¨etïòpÒ @  ]+¥S?d èetÚÄqF @  ],¦S?d (ftG€Ñ‡ @  ]-§S?d hftƒ‹ @  ].¨S?d ¨ft9v‰ @  ]/©S?d èftªœ @  ]0ªS?d (gtzRžt @  ]1«S?d hgt¼A'U @  ]2¬S?d ¨gtœ´%« @  ]3­S?d ègt©‚$? @  ]4®S?d (ht}¨" @  ]5¯S?d hht¦.È @  ]6°S?d ¨ht†Û’6 @  ]7±S?d èht¸75 @  ]8²S?d (ith^»Ý @  ]9³S?d hit®Mü @  ]:´S?d ¨itޏ @  ];µS?d èit»Ž– @  ]<¶S?d (jt&Ê¡W @  ]=·S?d hjtxÉûQ @  ]>¸S?d ¨jtX<ù¯ @  ]?¹S?d èjttQCn @  ]@ºS?d (kt¤φ @  ]A»S?d hktb v§ @  ]B¼S?d ¨ktBÿtY @  ]C½S?d èktwÉuÍ @  ]D¾S?d (ltn‡†Â @  ]E¿S?d hlt83’å @  ]FÀS?d ¨ltÆ @  ]GÁS?d èlt& 5 @  ]HÂS?d (mtöC¹ð @  ]IÃS?d hmt0PÑ @  ]JÄS?d ¨mt¥/ @  ]KÅS?d èmt%“» @  ]LÆS?d (nt¸×£z @  ]MÇS?d hntæÔù| @  ]NÈS?d ¨ntÆ!û‚ @  ]OÉS?d èntUM`a @  ]PÊS?d (ot…ì‰ @  ]QËS?d hotCU¨ @  ]RÌS?d ¨otcãWV @  ]SÍS?d èotVÕV @  ]TÎS?d (ptè êp @  ]UÏS?d hptÓXÒš @  ]VÐS?d ¨ptó­Ðd @  ]WÑS?d èptÍ`ug @  ]XÒS?d (qt(ù @  ]YÓS?d hqtÛ;@® @  ]ZÔS?d ¨qtûÎBP @  ][ÕS?d èqtÎøCÄ @  ]\ÖS?d (rtS¼ã @  ]]×S?d hrt ¿¹ @  ]^ØS?d ¨rt-J»ý @  ]_ÙS?d èrt¯ ® @  ]`ÚS?d (sth‹F @  ]aÛS?d hst¹{2g @  ]bÜS?d ¨st™Ž0™ @  ]cÝS?d èst¬¸1  @  ]dÞS?d (ttµö @  ]eßS?d httÃ4 @  ]fàS?d ¨tt3çÁÊ @  ]gáS?d ètt *dÉ @  ]hâS?d (utÝbè! @  ]iãS?d hutqQ @  ]jäS?d ¨ut;„Sþ @  ]kåS?d èut²Rj @  ]læS?d (vt“öò« @  ]mçS?d hvtÍõ¨­ @  ]nèS?d ¨vtíªS @  ]oéS?d èvt~l1° @  ]pêS?d (wt®$½X @  ]qëS?d hwth7y @  ]rìS?d ¨wtH‡ @  ]síS?d èwt}ô @  ]tîS?d (xtI ‹ @  ]uïS?d hxtrX³ä @  ]vðS?d ¨xtR­± @  ]wñS?d èxtl` @  ]xòS?d (yt¼(˜ñ @  ]yóS?d hytz;!Ð @  ]zôS?d ¨ytZÎ#. @  ]{õS?d èytoø"º @  ]|öS?d (ztò¼‚{ @  ]}÷S?d hzt¬¿Ø} @  ]~øS?d ¨ztŒJÚƒ @  ]ùS?d èztCqPs @  ]€úS?d ({t“9Ü› @  ]ûS?d h{tU*eº @  ]‚üS?d ¨{tußgD @  ]ƒýS?d è{t@éfÐ @  ]„þS?d (|tY§•ß @  ]…ÿS?d h|tQ»¿ð @  ]†T?d ¨|tqN½ @  ]‡T?d è|tOƒ  @  ]ˆT?d (}tŸË”å @  ]‰T?d h}tYØ-Ä @  ]ŠT?d ¨}ty-/: @  ]‹T?d è}tL.® @  ]ŒT?d (~tÑ_Žo @  ]T?d h~t\Ôi @  ]ŽT?d ¨~t¯©Ö— @  ] T?d è~t<ÅMt @  ] T?d (tìÁœ @  ]‘ T?d ht*žx½ @  ]’ T?d ¨tuЀt' kzC @  ]“ T?d èt?]{× @  ]”T?d @€tQ㙣 @  ]•T?d €€tÈÔ´i @  ]–T?d À€tJE£· @  ]—T?d t&Q‚ @  ]˜T?d @t¤ÀŠ\ @  ]™T?d €tÀ·&] @  ]šT?d ÀtB&1ƒ @  ]›T?d ‚thŇ @  ]œT?d @‚têTÖ @  ]T?d €‚t3ßð @  ]žT?d À‚t”¢È. @  ]ŸT?d ƒtDïK @  ] T?d @ƒtÆ€ø• @  ]¡T?d €ƒt¢÷T” @  ]¢T?d Àƒt fCJ @  ]£T?d „tަ @  ]¤T?d @„t ±Ñ @  ]¥T?d €„tž¥Ç @  ]¦ T?d À„tв @  ]§!T?d …tæŒ, @  ]¨"T?d @…tdŠ›ò @  ]©#T?d €…tý7ó @  ]ª$T?d À…t‚l - @  ]«%T?d †t¨–¦ @  ]¬&T?d @†t*x @  ]­'T?d €†tÖyÎ^ @  ]®(T?d À†tTèÙ€ @  ]¯)T?d ‡t•]ÙU @  ]°*T?d @‡tÌ΋ @  ]±+T?d €‡ts»bŠ @  ]²,T?d À‡tñ*uT @  ]³-T?d ˆtrrï @  ]´.T?d @ˆtðãøÝ @  ]µ/T?d €ˆtiÔÕ @  ]¶0T?d ÀˆtëEÂÉ @  ]·1T?d ‰t‡Qüü @  ]¸2T?d @‰tÀë" @  ]¹3T?d €‰ta·G# @  ]º4T?d À‰tã&Pý @  ]»5T?d ŠtÉÅæv @  ]¼6T?d @ŠtKTñ¨ @  ]½7T?d €Št·3¾Ž @  ]¾8T?d ÀŠt5¢©P @  ]¿9T?d ‹tKˆ§ @  ]À:T?d @‹tɇŸy @  ]Á;T?d €‹t­ð3x @  ]ÂT?d @ŒtÖ= @  ]Å?T?d €Œt÷É×: @  ]Æ@T?d ÀŒtuXÀä @  ]ÇAT?d tLþÑ @  ]ÈBT?d @t›Ýé @  ]ÉCT?d €tÿªE @  ]ÊDT?d Àt};RÐ @  ]ËET?d ŽtWØä[ @  ]ÌFT?d @ŽtÕIó… @  ]ÍGT?d €Žt).¼£ @  ]ÎHT?d ÀŽt«¿«} @  ]ÏIT?d tj «¨ @  ]ÐJT?d @t蛼v @  ]ÑKT?d €tŒìw @  ]ÒLT?d Àt}© @  ]ÓMT?d t­Q @  ]ÔNT?d @t…•º @  ]ÕOT?d €t¢—E @  ]ÖPT?d Àtž3€› @  ]×QT?d ‘tò'¾® @  ]ØRT?d @‘tp¶©p @  ]ÙST?d €‘tÁq @  ]ÚTT?d À‘t–P¯ @  ]ÛUT?d ’t¼³¤$ @  ]ÜVT?d @’t>"³ú @  ]ÝWT?d €’tÂEüÜ @  ]ÞXT?d À’t@Ôë @  ]ßYT?d “tgÌg @  ]àZT?d @“töÛ¹ @  ]á[T?d €“tvw¸ @  ]â\T?d€ À“t5W—f @  ^]T?d ”tzÿ:  @  ^^T?d @”tøn-Ô @  ^_T?d €”t9§Â/ @  ^`T?d À”t»6Õñ @  ^aT?d •t´¾ @  ^bT?d @•t›£` @  ^cT?d €•t1ÄP @  ^dT?d À•t³UGÅ @  ^ eT?d –t\ÿ £ @  ^ fT?d @–tÞn} @  ^ gT?d €–tç@©¶ @  ^ hT?d À–teѾh @  ^ iT?d —tÇwß' @  ^jT?d @—tEæÈù @  ^kT?d €—tB‚b @  ^lT?d À—tÀ¼ @  ^mT?d ˜t†s @  ^nT?d @˜t“dØ @  ^oT?d €˜tXí²ÿ @  ^pT?d À˜tÚ|¥! @  ^qT?d ™txÚÄn @  ^rT?d @™túKÓ° @  ^sT?d €™tPŽ Ë @  ^tT?d À™tÒ7 @  ^uT?d št=µzs @  ^vT?d @št¿$m­ @  ^wT?d €št† Ùf @  ^xT?d Àšt›Î¸ @  ^yT?d ›t¦=¯÷ @  ^zT?d @›t$¬¸) @  ^{T?d €›t2ÎR @  ^ |T?d À›t°_EÜ @  ^!}T?d œtÛÿ[t @  ^"~T?d @œtYnLª @  ^#T?d €œtu1âÒ @  ^$€T?d Àœt÷ õ  @  ^%T?d tU”C @  ^&‚T?d @t×—ƒ @  ^'ƒT?d €t}Rpæ @  ^(„T?d ÀtÿÃg8 @  ^)…T?d žti*^ @  ^*†T?d @žt’ø=€ @  ^+‡T?d €žt«Ö‰K @  ^,ˆT?d Àžt)Gž• @  ^-‰T?d Ÿt‹áÿÚ @  ^.ŠT?d @Ÿt pè @  ^/‹T?d €Ÿt%Ÿ @  ^0ŒTuРt?d ÀŸtŒ…2A @  ^1T?d  t`€ @  ^2ŽT?d X t ñ^ @  ^3T?d ˜ tQÀy @  ^4T?d Ø tÓ×§ @  ^5‘T?d ¡tq¸¶è @  ^6’T?d X¡tó)¡6 @  ^7“T?d ˜¡tYìRM @  ^8”T?d Ø¡tÛ}E“ @  ^9•T?d ¢t4×õ @  ^:–T?d X¢t¶F+ @  ^;—T?d ˜¢th«à @  ^<˜T?d Ø¢t ù¼> @  ^=™T?d £t¯_Ýq @  ^>šT?d X£t-Îʯ @  ^?›T?d ˜£t•«& @  ^@œT?d Ø£t:1È @  ^AT?d ¤t|š/` @  ^BžT?d X¤tþ 8¾ @  ^CŸT?d ˜¤t?Â×E @  ^D T?d ؤt½SÀ› @  ^E¡T?d ¥tõ¡Ô @  ^F¢T?d X¥td¶  @  ^G£T?d ˜¥t7¡Eq @  ^H¤T?d Ø¥tµ0R¯ @  ^I¥T?d ¦tZšÉ @  ^J¦T?d X¦tØ  @  ^K§T?d ˜¦tá%¼Ü @  ^L¨T?d ئtc´« @  ^M©T?d §tÁÊM @  ^NªT?d X§tCƒÝ“ @  ^O«T?d ˜§tDç @  ^P¬T?d اtÆvÖ @  ^Q­T?d ¨t€gfl @  ^R®T?d X¨tÀ_–g @  ^S¯T?d ˜¨tœ!@@ @  ^T°T?d بt°Wž @  ^U±T?d ©t¼6Ñ @  ^V²T?d X©t>‡! @  ^W³T?d ˜©t”BÒt @  ^X´T?d Ø©tÓŪ @  ^YµT?d ªtùyˆÌ @  ^Z¶T?d Xªt{èŸ @  ^[·T?d ˜ªtBÆ+Ù @  ^\¸T?d تtÀW< @  ^]¹T?d «tbñ]H @  ^^ºT?d X«tà`J– @  ^_»T?d ˜«tö ½ @  ^`¼T?d Ø«tt“·c @  ^a½T?d ¬t3©Ë @  ^b¾T?d X¬t¢¾ @  ^c¿T?d ˜¬t¬;Dÿ @  ^dÀT?d جt.ªS! @  ^eÁT?d ­tŒ 2n @  ^fÂT?d X­t%° @  ^gÃT?d ˜­t¤XÖË @  ^hÄT?d Ø­t&ÉÁ @  ^iÅT?d ®tÉcŒs @  ^jÆT?d X®tKò›­ @  ^kÇT?d ˜®trÜ/f @  ^lÈT?d Ø®tðM8¸ @  ^mÉT?d ¯tRëY÷ @  ^nÊT?d X¯tÐzN) @  ^oËT?d ˜¯t׃² @  ^pÌT?d دtU”l @  ^qÍT?d °t™¿Åy @  ^rÎT?d X°t.Ò§ @  ^sÏT?d ˜°tGP€ @  ^tÐT?d ذtÅÁ^ @  ^uÑT?d ±tggr @  ^vÒT?d X±tåöeÏ @  ^wÓT?d ˜±tO3–´ @  ^xÔT?d رtÍ¢j @  ^yÕT?d ²t"Ì  @  ^zÖT?d X²t ™ÛÒ @  ^{×T?d ˜²t™·o @  ^|ØT?d زt&xÇ @  ^}ÙT?d ³t¹€ˆ @  ^~ÚT?d X³t;V @  ^ÛT?d ˜³t`"ÒÞ @  ^€ÜT?d سtâ³Å @  ^ÝT?d ´t‰Û¨ @  ^‚ÞT?d X´t ‚Ìv @  ^ƒßT?d ˜´tÊK# @  ^„àT?d Ø´tHÚ4S @  ^…áT?d µtê|U @  ^†âT?d XµthíB @  ^‡ãT?d ˜µtÂ(±¹ @  ^ˆäT?d صt@¹¦g @  ^‰åT?d ¶t¯ë @  ^ŠæT?d X¶t-‚üß @  ^‹çT?d ˜¶t¬H @  ^ŒèT?d ضt–=_Ê @  ^éT?d ·t4›>… @  ^ŽêT?d X·t¶ )[ @  ^ëT?d ˜·t±näÀ @  ^ìT?d Ø·t3ÿó @  ^‘íT?d ¸tuî’¤ @  ^’îT?d X¸t÷…z @  ^“ïT?d ˜¸t«S] @  ^”ðT?d ظt)Dƒ @  ^•ñT?d ¹t‹6%Ì @  ^–òT?d X¹t §2 @  ^—óT?d ˜¹t£bÁi @  ^˜ôT?d عt!óÖ· @  ^™õT?d ºtÎY›Ñ @  ^šöT?d XºtLÈŒ @  ^›÷T?d ˜ºtuæ8Ä @  ^œøT?d غt÷w/ @  ^ùT?d »tUÑNU @  ^žúT?d X»t×@Y‹ @  ^ŸûT?d ˜»tÁ"³  @  ^ üT?d Ø»tC³¤~ @  ^¡ýT?d ¼t(ºÖ @  ^¢þT?d X¼tª‚­ @  ^£ÿT?d ˜¼tùºV| @  ^¤U?d ؼt{+A¢ @  ^¥U?d ½tÙ í @  ^¦U?d X½t[73 @  ^§U?d ˜½tñÙÄH @  ^¨U?d ؽtsHÓ– @  ^©U?d ¾tœâžð @  ^ªU?d X¾ts‰. @  ^«U?d ˜¾t']=å @  ^¬U?d ؾt¥Ì*; @  ^­ U?d ¿tjKt @  ^® U?d X¿t…û\ª @  ^¯ U?d ˜¿t‚Ÿ‘1 @uÐÀt  ^° U?d Ø¿t}Žõ“ @  ^±€ U?d 0ÀtkIf @  ^²€U?d pÀté^¸ @  ^³€U?d °ÀtµˆŸ @  ^´€U?d ðÀt7îŸA @  ^µ€U?d 0Át•Hþ @  ^¶€U?d pÁtÙéÐ @  ^·€U?d °Át½« @  ^¸€U?d ðÁt? u @  ^¹€U?d 0ÂtÐ'@ @  ^º€U?d pÂtR¶WÍ @  ^»€U?d °Âtk˜ã @  ^¼€U?d ðÂté ôØ @  ^½€U?d 0ÃtK¯•— @  ^¾€U?d pÃtÉ>‚I @  ^¿€U?d °Ãtq[nð @  ^À€U?d ðÃtóÊy. @  ^Á€U?d 0Ät˜jg† @  ^€U?d pÄtûpX @  ^ÀU?d °ÄtÛ2Ÿ£ @  ^Ä€ U?d ðÄtY£ˆ} @  ^Å€!U?d 0Åtûé2 @  ^Æ€"U?d pÅty”þì @  ^Ç€#U?d °ÅtÓQ — @  ^È€$U?d ðÅtQÀI @  ^É€%U?d 0Æt¾jW/ @  ^Ê€&U?d pÆt<û@ñ @  ^Ë€'U?d °ÆtÕô: @  ^Ì€(U?d ðÆt‡Dãä @  ^Í€)U?d 0Çt%â‚« @  ^΀*U?d pÇt§s•u @  ^Ï€+U?d °Çt Xî @  ^Ѐ,U?d ðÇt"†O0 @  ^Ñ€-U?d 0Ètd—.Š @  ^Ò€.U?d pÈtæ9T @  ^Ó€/U?d °Ètºxïs @  ^Ô€0U?d ðÈt8éø­ @  ^Õ€1U?d 0ÉtšO™â @  ^Ö€2U?d pÉtÞŽ< @  ^×€3U?d °Ét²}G @  ^Ø€4U?d ðÉt0Šj™ @  ^Ù€5U?d 0Êtß 'ÿ @  ^Ú€6U?d pÊt]±0! @  ^Û€7U?d °ÊtdŸ„ê @  ^Ü€8U?d ðÊtæ“4 @  ^Ý€9U?d 0ËtD¨ò{ @  ^Þ€:U?d pËtÆ9å¥ @  ^߀;U?d °ËtÐ[Ž @  ^à€U?d€ pÌtÏ8 € @  _€?U?d °Ìtà¿C @  _€@U?d ðÌtq¨ @  _€AU?d 0Ítúž2? @  _€BU?d pÍtx%á @  _€CU?d °Ítx‰à @  _€DU?d ðÍtžéž> @  _€EU?d 0Ît¿ñŒ" @  _€FU?d pÎt=`›ü @  _ €GU?d °ÎtÁÔÚ @  _ €HU?d ðÎtC–à @  _ €IU?d 0Ït$yY¦ @  _ €JU?d pÏt¦èNx @  _ €KU?d °ÏtŸây @  _€LU?d ðÏt@õ§ @  _€MU?d 0Ðtï-Å( @  _€NU?d pÐtm¼Òö @  _€OU?d °Ðtô‹ÿ< @  _€PU?d ðÐtvèâ @  _€QU?d 0Ñtõr@ @  _€RU?d pÑt“dež @  _€SU?d °Ñt÷ÉŸ @  _€TU?d ðÑtu‚ÞA @  _€UU?d 0ÒtTšÌ] @  _€VU?d pÒtÖ Ûƒ @  _€WU?d °Òt*l”¥ @  _€XU?d ðÒt¨ýƒ{ @  _€YU?d 0ÓtÏÙ @  _€ZU?d pÓtMƒ @  _€[U?d °Ót)ô¢ @  _€\U?d ðÓt«eµØ @  _€]U?d 0Ôt²ÐíZ @  _ €^U?d pÔt0Aú„ @  _!€_U?d °Ôt4Áî’ @  _"€`U?d ðÔt¶PùL @  _#€aU?d 0ÕtÑ¿cî @  _$€bU?d pÕtS.t0 @  _%€cU?d °Õt7YØ1 @  _&€dU?d ðÕtµÈÏï @  _'€eU?d 0Öt”ÐÝó @  _(€fU?d pÖtAÊ- @  _)€gU?d °Ötê&…  @  _*€hU?d ðÖth·’Õ @  _+€iU?d 0×tXw @  _,€jU?d p×tÉ© @  _-€kU?d °×té¾³¨ @  _.€lU?d ð×tk/¤v @  _/€mU?d 0ØtN-¤V @  _0€nU?d pØt̼³ˆ @  _1€oU?d °ØtU‹žB @  _2€pU?d ðØt׉œ @  _3€qU?d 0Ùt°õ> @  _4€rU?d pÙt2dà @  _5€sU?d °ÙtV¨á @  _6€tU?d ðÙtÔ‚¿? @  _7€uU?d 0Útõš­# @  _8€vU?d pÚtw ºý @  _9€wU?d °Út‹lõÛ @  _:€xU?d ðÚt ýâ @  _;€yU?d 0Ûtnx§ @  _<€zU?d pÛtìƒoy @  _=€{U?d °ÛtˆôÃx @  _>€|U?d ðÛt eÔ¦ @  _?€}U?d 0Üt½×ж @  _@€~U?d pÜt?Fh @  _A€U?d °ÜtÖPÈý @  _B€€U?d ðÜtTÁß# @  _C€U?d 0Ýt3.E @  _D€‚U?d pÝt±¿R_ @  _E€ƒU?d °ÝtÕÈþ^ @  _F€„U?d ðÝtWYé€ @  _G€…U?d 0ÞtvAûœ @  _H€†U?d pÞtôÐìB @  _I€‡U?d °Þt·£d @  _J€ˆU?d ðÞtŠ&´º @  _K€‰U?d 0ßtíÉ. @  _L€ŠU?d pßtoX9Æ @  _M€‹U?d uÐàt/°ßt /•Ç @  _N€ŒU?d ðßt‰¾‚ @  _O€U?d HàtçPÒ @  _P€ŽU?d ˆàt¡R, @  _Q€U?d ÈàtšAjÆ @  _R€U?d átJ æ. @  _S€‘U?d Hát?çº @  _T€’U?d ˆát_ÊåD @  _U€“U?d Èát™Ù\e @  _V€”U?d âtü¤ @  _W€•U?d Hât:PY§ @  _X€–U?d ˆât¥[Y @  _Y€—U?d ÈâtD¦_ @  _Z€˜U?d ãt”î· @  _[€™U?d Hãt¡ØŒ# @  _\€šU?d ˆãt-ŽÝ @  _]€›U?d ÈãtG>7ü @  _^€œU?d ät^pÄó @  __€U?d HätÜx  @  _`€žU?d ˆätüïz^ @  _a€ŸU?d ÈätZ {h @  _b€ U?d åtŠC÷€ @  _c€¡U?d Håt¿uö @  _d€¢U?d ˆåtŸ€ôê @  _e€£U?d ÈåtY“MË @  _f€¤U?d ætÄ×í  @  _g€¥U?d HætúH  @  _h€¦U?d ˆætÚïJ÷ @  _i€§U?d Èæt„ìñ @  _j€¨U?d çtT¤œ @  _k€©U?d Hçta’ @  _l€ªU?d ˆçtAgŸs @  _m€«U?d Èçt‡t&R @  _n€¬U?d èt³‹ªO @  _o€­U?d Hèt ç1¬ @  _p€®U?d ˆèt3R @  _q€¯U?d Èèt;A ¸ @  _r€°U?d étë ‡P @  _s€±U?d HétÞ?†Ä @  _t€²U?d ˆétþÊ„: @  _u€³U?d Èét8Ù= @  _v€´U?d êt¥Ú @  _w€µU?d Hêt›P8Ù @  _x€¶U?d ˆêt»¥:' @  _y€·U?d Èêtå¦`! @  _z€¸U?d ët5îìÉ @  _{€¹U?d HëtØí] @  _|€ºU?d ˆët -ï£ @  _}€»U?d Èëtæ>V‚ @  _~€¼U?d ìtÿp¥ @  _€½U?d Hìt0K/} @  _€€¾U?d ˆìt¾-ƒ @  _€¿U?d ÈìtF 9¤ @  _‚€ÀU?d ít–BµL @  _ƒ€ÁU?d Hít£t´Ø @  _„€ÂU?d ˆítƒ¶& @  _…€ÃU?d ÈítE’ @  _†€ÄU?d îtØÖ¯Æ @  _‡€ÅU?d Hîtæ Å @  _ˆ€ÆU?d ˆîtÆî; @  _‰€ÇU?d Èît˜íR= @  _Š€ÈU?d ïtH¥ÞÕ @  _‹€ÉU?d Hït}“ßA @  _Œ€ÊU?d ˆït]fÝ¿ @  _€ËU?d Èït›udž @  _Ž€ÌU?d ðt%«Ø, @  _€ÍU?d Hðt¶ÇCÏ @  _€ÎU?d ˆðt–2A1 @  _‘€ÏU?d Èðt­ayÛ @  _’€ÐU?d ñt})õ3 @  _“€ÑU?d HñtHô§ @  _”€ÒU?d ˆñthêöY @  _•€ÓU?d Èñt®ùOx @  _–€ÔU?d òt3½ï¹ @  _—€ÕU?d Hòt pJº @  _˜€ÖU?d ˆòt-…HD @  _™€×U?d Èòts†B @  _š€ØU?d ót£Îžª @  _›€ÙU?d Hót–øŸ> @  _œ€ÚU?d ˆót¶ À @  _€ÛU?d Èótp$á @  _ž€ÜU?d ôtiP×î @  _Ÿ€ÝU?d Hôtë:k½ @  _ €ÞU?d ˆôtËÏiC @  _¡€ßU?d Èôtm+hu @  _¢€àU?d õt½cä @  _£€áU?d HõtˆUå  @  _¤€âU?d ˆõt¨ ç÷ @  _¥€ãU?d Èõtn³^Ö @  _¦€äU?d ötó÷þ @  _§€åU?d HötÍ:[ @  _¨€æU?d ˆötíÏYê @  _©€çU?d Èöt³Ìì @  _ª€èU?d ÷tc„ @  _«€éU?d H÷tV²Ž @  _¬€êU?d ˆ÷tvGŒn @  _­€ëU?d È÷t°T5O @  _®€ìU?d øt„«¹R @  _¯€íU?d HøtÇ"± @  _°€îU?d ˆøt72 O @  _±€ïU?d Èøt a¥ @  _²€ðU?d ùtÜ)”M @  _³€ñU?d Hùté•Ù @  _´€òU?d ˆùtÉê—' @  _µ€óU?d Èùtù. @  _¶€ôU?d út’½ŽÇ @  _·€õU?d Hút¬p+Ä @  _¸€öU?d ˆútŒ…): @  _¹€÷U?d ÈútÒ†s< @  _º€øU?d ûtÎÿÔ @  _»€ùU?d Hût7øþ@ @  _¼€úU?d ˆût ü¾ @  _½€ûU?d ÈûtÑEŸ @  _¾€üU?d ütÈP¶ @  _¿€ýU?d Hütä= Q @  _À€þU?d ˆütÄȯ @  _Á€ÿU?d ÈütBÿ.3 @  _€V?d ýt’·¢Û @  _ÀV?d Hýt§£O @  _Ä€V?d ˆýt‡t¡± @  _Å€V?d ÈýtAg @  _Æ€V?d þtÜ#¸Q @  _Ç€V?d HþtâîR @  _È€V?d ˆþt¬ @  _É€V?d ÈþtœEª @  _Ê€V?d ÿtLPÉB @  _Ë€ V?d HÿtyfÈÖ @  _Ì€ V?d ˆÿtY“Ê( @  _Í€uÐu V?d ÈÿtŸ€s  @  _΀ V?d uÐ4[ø @  _Ï€ V?d `uCXÀ @  _ЀV?d  uc­Âå @  _Ñ€V?d àuXþú @  _Ò€V?d uˆ¶vç @  _Ó€V?d `u½€ws @  _Ô€V?d  uuu @  _Õ€V?d àu[f̬ @  _Ö€V?d u»¢ @  _×V?d `u…oº @  _ØV?d  u¥š¸ì @  _ÙV?d àuû™âê @  _ÚV?d u+Ñn @  _ÛV?d `uço– @  _ÜV?d  u>mh @  _ÝV?d àuøÔI @  _ÞV?d uáO'F @  _ßV?d `uc%› @  _àV?d  uCЙë @  _áV?d àuå4˜Ý @  _â V?d€ u æ @  `!V?d `uÙu¯¨ @  `"V?d  uù€­V @  `#V?d àuúÚïš @  `$V?d ugžO[ @  `%V?d `u—áµ" @  `&V?d  u··Ü @  `'V?d àu'¥²  @  `(V?d u÷í>H @  ` )V?d `u’Ä1 @  ` *V?d  u'gÆÏ @  ` +V?d àu$=„ @  ` ,V?d u @  ` -V?d `uà½òg @  `.V?d  uÀHð™ @  `/V?d àu˜©é @  `0V?d uH@% @  `1V?d ` u¸?ßx @  `2V?d   u˜Ê݆ @  `3V?d à u›ŸJ @  `4V?d uÔ?‹ @  `5V?d ` uö«Åò @  `6V?d   uÖ^Ç  @  `7V?d à uFïÂp @  `8V?d u–§N˜ @  `9V?d ` ufØ´á @  `:V?d   uF-¶ @  `;V?d à uEwôÓ @  `V?d   uŒ³ÿ[ @  `?V?d à u¨­V @  ` @V?d uxZ!¾ @  `!AV?d ` uˆ%ÛÇ @  `"BV?d   u¨ÐÙ9 @  `#CV?d à u«Š›õ @  `$DV?d u6Î;4 @  `%EV?d `uƱÁM @  `&FV?d  uæDó @  `'GV?d àuvõÆÏ @  `(HV?d u¦½J' @  `)IV?d `uV°^ @  `*JV?d  uv7²  @  `+KV?d àuumðl @  `,LV?d u˳LÞ @  `-MV?d `u;̶§ @  `.NV?d  u9´Y @  `/OV?d àuCyí) @  `0PV?d u“1aÁ @  `1QV?d `ucN›¸ @  `2RV?d  uC»™F @  `3SV?d àu@áÛŠ @  `4TV?d uÝ¥{K @  `5UV?d `u-Ú2 @  `6VV?d  u /ƒÌ @  `7WV?d àuž†° @  `8XV?d uMÖ X @  `9YV?d `u½©ð! @  `:ZV?d  u\òß @  `;[V?d àuž° @  `<\V?d u‡HC @  `=]V?d `uw7¹e @  `>^V?d  uW»› @  `?_V?d àu-4ú @  `@`V?d uý|vý @  `AaV?d `u Œ„ @  `BbV?d  u-öŽz @  `CcV?d àu.¬Ì¶ @  `DdV?d u³èlw @  `EeV?d `uC—– @  `FfV?d  ucb”ð @  `GgV?d àuóÓ‘Œ @  `HhV?d u#›d @  `IiV?d `uÓäç @  `JjV?d  uóåã @  `KkV?d àuðK§/ @  `LlV?d uÄ´+2 @  `MmV?d `u4ËÑK @  `NnV?d  u>Óµ @  `OoV?d àuL~ŠÅ @  `PpV?d uœ6- @  `QqV?d `ulIüT @  `RrV?d  uL¼þª @  `SsV?d àuOæ¼f @  `TtV?d uÒ¢§ @  `UuV?d `u"ÝæÞ @  `VvV?d  u(ä  @  `WwV?d àu’™á\ @  `XxV?d uBÑm´ @  `YyV?d `u²®—Í @  `ZzV?d  u’[•3 @  `[{V?d àu‘×ÿ @  `\|V?d uˆO$ð @  `]}V?d `ux0Þ‰ @  `^~V?d  uXÅÜw @  `_V?d àua¢Úè @  ``€V?d u±êV @  `aV?d `uA•¬y @  `b‚V?d  ua`®‡ @  `cƒV?d àub:ìK @  `d„V?d uÿ~LŠ @  `e…V?d `u¶ó @  `f†V?d  u/ô´  @  `g‡V?d àu¿E±q @  `hˆV?d uo =™ @  `i‰V?d `uŸrÇà @  `jŠV?d  u¿‡ÅuÐ u @  `k‹V?d àuÁ]ô® @  `l€ŒV?d 8 u°V*È @  `m€V?d x u@)б @  `n€ŽV?d ¸ u`ÜÒO @  `o€V?d ø u8œ‹? @  `p€V?d 8!uèÔ× @  `q€‘V?d x!u«ý® @  `r€’V?d ¸!u8^ÿP @  `s€“V?d ø!u;½œ @  `t€”V?d 8"u¦@] @  `u€•V?d x"uV?ç$ @  `v€–V?d ¸"uvÊåÚ @  `w€—V?d ø"uæ{ঠ@  `x€˜V?d 8#u63lN @  `y€™V?d x#uÆL–7 @  `z€šV?d ¸#uæ¹”É @  `{€›V?d ø#uåãÖ @  `|€œV?d 8$uü­%  @  `}€V?d x$u Òßs @  `~€žV?d ¸$u,'Ý @  `€ŸV?d ø$uµ‡¬2 @  `€€ V?d 8%ueÏ Ú @  `€¡V?d x%u•°Ú£ @  `‚€¢V?d ¸%uµEØ] @  `ƒ€£V?d ø%u¶š‘ @  `„€¤V?d 8&u+[:P @  `…€¥V?d x&uÛ$À) @  `†€¦V?d ¸&uûÑÂ× @  `‡€§V?d ø&uk`Ç« @  `ˆ€¨V?d 8'u»(KC @  `‰€©V?d x'uKW±: @  `Š€ªV?d ¸'uk¢³Ä @  `‹€«V?d ø'uhøñ @  `Œ€¬V?d 8(u\} @  `€­V?d x(u¬x‡l @  `Ž€®V?d ¸(uŒ…’ @  `€¯V?d ø(uÔÍÜâ @  `€°V?d 8)u…P  @  `‘€±V?d x)uôúªs @  `’€²V?d ¸)uÔ¨ @  `“€³V?d ø)u×UêA @  `”€´V?d 8*uJJ€ @  `•€µV?d x*uºn°ù @  `–€¶V?d ¸*u𛲠@  `—€·V?d ø*u *·{ @  `˜€¸V?d 8+uÚb;“ @  `™€¹V?d x+u*Áê @  `š€ºV?d ¸+u èà @  `›€»V?d ø+u ²Ø @  `œ€¼V?d 8,uür× @  `€½V?d x,uàƒˆ® @  `ž€¾V?d ¸,uÀvŠP @  `Ÿ€¿V?d ø,uäר] @  ` €ÀV?d 8-u4ŸTµ @  `¡€ÁV?d x-uÄà®Ì @  `¢€ÂV?d ¸-uä¬2 @  `£€ÃV?d ø-uçOîþ @  `¤€ÄV?d 8.uz N? @  `¥€ÅV?d x.uŠt´F @  `¦€ÆV?d ¸.uª¶¸ @  `§€ÇV?d ø.u:0³Ä @  `¨€ÈV?d 8/uêx?, @  `©€ÉV?d x/uÅU @  `ª€ÊV?d ¸/u:òÇ« @  `«€ËV?d ø/u9¨…g @  `¬€ÌV?d 80u‡v9Õ @  `­€ÍV?d x0uw ì @  `®€ÎV?d ¸0uWüÁR @  `¯€ÏV?d ø0u¼˜" @  `°€ÐV?d 81ußôÊ @  `±€ÑV?d x1u/‹î³ @  `²€ÒV?d ¸1u~ìM @  `³€ÓV?d ø1u $® @  `´€ÔV?d 82u‘`@ @  `µ€ÕV?d x2uaô9 @  `¶€ÖV?d ¸2uAêöÇ @  `·€×V?d ø2uÑ[ó» @  `¸€ØV?d 83uS @  `¹€ÙV?d x3uñl…* @  `º€ÚV?d ¸3uÑ™‡Ô @  `»€ÛV?d ø3uÒÃÅ @  `¼€ÜV?d 84uË6 @  `½€ÝV?d x4u;òÌn @  `¾€ÞV?d ¸4uÎ @  `¿€ßV?d ø4uañ @  `À€àV?d 85u±¹ö @  `Á€áV?d x5uAÆù @  `€âV?d ¸5ua3ûq @  `ÀãV?d ø5ubi¹½ @  `Ä€äV?d 86uÿ-| @  `Å€åV?d x6uRã @  `Æ€æV?d ¸6u/§áû @  `Ç€çV?d ø6u¿ä‡ @  `È€èV?d 87uo^ho @  `É€éV?d x7uŸ!’ @  `Ê€êV?d ¸7u¿Ôè @  `Ë€ëV?d ø7u¼ŽÒ$ @  `Ì€ìV?d 88uˆq^9 @  `Í€íV?d x8ux¤@ @  `΀îV?d ¸8uXû¦¾ @  `Ï€ïV?d ø8u»ÿÎ @  `ЀðV?d 89uÐós& @  `Ñ€ñV?d x9u Œ‰_ @  `Ò€òV?d ¸9uy‹¡ @  `Ó€óV?d ø9u#Ém @  `Ô€ôV?d 8:užgi¬ @  `Õ€õV?d x:un“Õ @  `Ö€öV?d ¸:uNí‘+ @  `×€÷V?d ø:uÞ\”W @  `Ø€øV?d 8;u¿ @  `Ù€ùV?d x;uþkâÆ @  `Ú€úV?d ¸;uÞžà8 @  `Û€ûV?d ø;uÝÄ¢ô @  `Ü€üV?d 8uY^8 @  a€W?d x>ulh9– @  a€W?d ¸>uL;h @  a€W?d ø>užan @  a€W?d 8?uÂÖí† @  a€ W?d x?uüH… @  a€ W?duÐ@u7 ¸?uÜîJ{ @  a € W?d ø?uýóZ @  a € W?d P@uÙQIf @  a € W?d @uN]Ò @  a €W?d Ð@uÌ’J  @  a €W?d Au¥éÐ @  a€W?d PAu'‰þ @  a€W?d AupÍ @  a€W?d ÐAu”g @  a€W?d BuMÖi- @  a€W?d PBuÏG~ó @  a€W?d BuXjG @  a€W?d ÐBuÚ„}™ @  a€W?d CuÖ^¼© @  a€W?d PCuTÏ«w @  a€W?d CuÈfT @  a€W?d ÐCuJ÷ Š @  a€W?d Du;Qz @  a€W?d PDu•ªF¤ @  a€W?d DuøR @  a€W?d ÐDu€iEÎ @  a€W?d EutTßÎ @  a€ W?d PEuöÅÈ @  a€!W?d EuÖËac @  a €"W?d ÐEuTZv½ @  a!€#W?d Fuœxƒ @  a"€$W?d PFu o] @  a#€%W?d Fu˜_{é @  a$€&W?d ÐFuÎl7 @  a%€'W?d Gu­ @  a&€(W?d PGu”…ºÙ @  a'€)W?d Gu, ú @  a(€*W?d ÐGuн$ @  a)€+W?d HuúÀ?Æ @  a*€,W?d PHuxQ( @  a+€-W?d Huï<¬ @  a,€.W?d ÐHum’+r @  a-€/W?d Iuˆ® @  a.€0W?d PIu†‰Ÿp @  a/€1W?d Iu·³ @  a0€2W?d ÐIu5m @  a1€3W?d JuìÖS @  a2€4W?d PJunG @  a3€5W?d Juù 9 @  a4€6W?d ÐJu{„ç @  a5€7W?d Kuw^Ý× @  a6€8W?d PKuõÏÊ  @  a7€9W?d Kuifz* @  a8€:W?d ÐKuë÷mô @  a9€;W?d Lu¶;0 @  a:€W?d ÐLu!i$° @  a=€?W?d Mu%«¡ @  a>€@W?d PMu§•¼ @  a?€AW?d Mu)œž @  a@€BW?d ÐMu« @ @  aA€CW?d NurË ~ @  aB€DW?d PNuðZ  @  aC€EW?d Nug  @  aD€FW?d ÐNuå™Ê @  aE€GW?d OuéCßú @  aF€HW?d POukÒÈ$ @  aG€IW?d Ou÷{x @  aH€JW?d ÐOuuêoÙ @  aI€KW?d Pu¶}” @  aJ€LW?d PPu 'jJ @  aK€MW?d Pušu~þ @  aL€NW?d ÐPuäi  @  aM€OW?d QuqnÊü @  aN€PW?d PQuóÿÝ" @  aO€QW?d QuÂ÷Sá @  aP€RW?d ÐQu@fD? @  aQ€SW?d Ru™ J @  aR€TW?d PRu1]ß @  aS€UW?d RuŒcIk @  aT€VW?d ÐRuò^µ @  aU€WW?d Su(Ÿ… @  aV€XW?d PSu€¹ˆ[ @  aW€YW?d Su8x @  aX€ZW?d ÐSuž/¦ @  aY€[W?d TuÃMrV @  aZ€\W?d PTuAÜeˆ @  a[€]W?d TuÖŽq< @  a\€^W?d ÐTuTfâ @  a]€_W?d Uu "üâ @  a^€`W?d PUu"³ë< @  a_€aW?d Uu½BO @  a`€bW?d ÐUu€,U‘ @  aa€cW?d VuYê[¯ @  ab€dW?d PVuÛ{Lq @  ac€eW?d VuL)XÅ @  ad€fW?d ÐVuθO @  ae€gW?d WuÂbŽ+ @  af€hW?d PWu@ó™õ @  ag€iW?d WuÜZ)Ö @  ah€jW?d ÐWu^Ë> @  ai€kW?d Xu.¶ê @  aj€lW?d PXu¬' 4 @  ak€mW?d Xu;u€ @  al€nW?d ÐXu¹ä^ @  am€oW?d YuÐn«‚ @  an€pW?d PYuRÿ¼\ @  ao€qW?d Yuc÷2Ÿ @  ap€rW?d ÐYuáf%A @  aq€sW?d Zu8 + @  ar€tW?d PZuº1<¡ @  as€uW?d Zu-c( @  at€vW?d ÐZu¯ò?Ë @  au€wW?d [u£(þû @  av€xW?d P[u!¹é% @  aw€yW?d [u½Y @  ax€zW?d Ð[u?NØ @  ay€{W?d \ubM( @  az€|W?d P\uàÜö @  a{€}W?d \uwŽB @  a|€~W?d Ð\uõœ @  a}€W?d ]uì´Ü @  a~€€W?d P]un%ËÁ @  a€W?d ]uzT @  a€€‚W?d Ð]uëCÏ @  a€ƒW?d ^uX-Mñ @  a‚€„W?d P^uÚ¼Z/ @  aƒ€…W?d ^uMîN› @  a„€†W?d Ð^uÏYE @  a…€‡W?d _uÃ¥˜u @  a†€ˆW?d P_uA4« @  a‡€‰W?d _uÝ?ˆ @  auÐ`uˆ€ŠW?d Ð_u"Œ[* @  a‰‹W?d (`uØö@M @  aŠŒW?d h`uZgW“ @  a‹W?d ¨`uÍ5C' @  aŒŽW?d è`uO¤Tù @  aW?d (au&.÷% @  aŽW?d hau¤¿àû @  a‘W?d ¨au•·n8 @  a’W?d èau&yæ @  a‘“W?d (buÎàwØ @  a’”W?d hbuLq` @  a“•W?d ¨buÛ#t² @  a”–W?d èbuY²cl @  a•—W?d (cuUh¢\ @  a–˜W?d hcu×ùµ‚ @  a—™W?d ¨cuKP¡ @  a˜šW?d ècuÉÁ @  a™›W?d (du” O @  ašœW?d hduœXQ @  a›W?d ¨duÎLå @  aœžW?d èdu_[; @  aŸW?d (eu÷bÁ; @  až W?d heuuóÖå @  aŸ¡W?d ¨euUý– @  a ¢W?d èeu×lhH @  a¡£W?d (fuªfv @  a¢¤W?d hfuŒ;q¨ @  a£¥W?d ¨fuie @  a¤¦W?d èfu™ør @  a¥§W?d (gu•"³ò @  a¦¨W?d hgu³¤, @  a§©W?d ¨gu‹ @  a¨ªW?d ègu ‹Ñ @  a©«W?d (huyö!3 @  aª¬W?d hhuûg6í @  a«­W?d ¨hul5"Y @  a¬®W?d èhuî¤5‡ @  a­¯W?d (iu‡.–[ @  a®°W?d hiu¿… @  a¯±W?d ¨iu4·F @  a°²W?d èiu¶&˜ @  a±³W?d (juoঠ@  a²´W?d hjuíqx @  a³µW?d ¨juz#Ì @  a´¶W?d èjuø² @  aµ·W?d (kuôhÃ" @  a¶¸W?d hkuvùÔü @  a·¹W?d ¨kuêPdß @  a¸ºW?d èkuhÁs @  a¹»W?d (lu5 .ñ @  aº¼W?d hlu·œ9/ @  a»½W?d ¨lu Î-› @  a¼¾W?d èlu¢_:E @  a½¿W?d (mu¦2µT @  a¾ÀW?d hmu$£¢Š @  a¿ÁW?d ¨muªª k @  aÀÂW?d èmu(;µ @  aÁÃW?d (nuñý‹ @  aÂÄW?d hnuslU @  aÃÅW?d ¨nuä>á @  aÄÆW?d ènuf¯? @  aÅÇW?d (oujuÁ @  aÆÈW?d houèäÖÑ @  aÇÉW?d ¨outMfò @  aÈÊW?d èouöÜq, @  aÉËW?d (pu €ca @  aÊÌW?d hpuŽt¿ @  aËÍW?d ¨puC`  @  aÌÎW?d èpu›ÒwÕ @  aÍÏW?d (quòXÔ  @  aÎÐW?d hqupÉÃ× @  aÏÑW?d ¨quAÁM @  aÐÒW?d èquÃPZÊ @  aÑÓW?d (ru–Tô @  aÒÔW?d hru˜C* @  aÓÕW?d ¨ruUWž @  aÔÖW?d èruÄ@@ @  aÕ×W?d (sup @  aÖØW?d hsu–® @  a×ÙW?d ¨suŸ&& @  aØÚW?d èsu·1S @  aÙÛW?d (tu@{l£ @  aÚÜW?d htuÂê{} @  aÛÝW?d ¨tuU¸oÉ @  aÜÞW?d ètu×)x @  aÝßW?d (uu#â @  aÞàW?d huu¡…õÉ @  aßáW?d ¨uu‹\º @  aàâW?d èuuKd @  aáãW?d (vuÚÜEZ @  aâäW?d€ hvu™ ¥„ @  båW?d ¨vuïù @  bæW?d èvumˆîÇ @  bçW?d (wu¤Ô @  bèW?d hwu&ŠÃÄ @  béW?d ¨wut‘, @  bêW?d èwuö;C @  bëW?d (xuHÏFÛ @  bìW?d hxuÊ^Q @  b íW?d ¨xu˜E¾\ @  b îW?d èxuÔ©‚ @  b ïW?d (yu¶ñ³ @  b ðW?d hyu4†æm @  b ñW?d ¨yuf 4 @  bòW?d èyuä ê @  bóW?d (zu^ÙqN @  bôW?d hzuÜHf @  bõW?d ¨zuŽS‰É @  böW?d èzu ž @  b÷W?d ({uÅQ¤Ê @  bøW?d h{uGÀ³ @  bùW?d ¨{uÛ\M @  búW?d è{u—JK“ @  bûW?d (|u4I @  büW?d h|uû%-» @  b€ýW?d ¨|u©>Ââ @  b€þW?d è|u+¯Õ< @  b€ÿW?d (}um‘± @  b€X?d h}uo @  b€X?d ¨}u½“i6 @  b€X?d è}u?~è @  b€X?d (~u”Ñ6ü @  b €X?d h~u@!" @  b!€X?d ¨~uD[Î{ @  b"€X?d è~uÆÊÙ¥ @  b#€X?d (uYãx @  b$€X?d huÈô¦ @  b%€ X?d ¨uuЀu'ßÓÿ @  b&€ X?d èu£ˆ @  b'  X?d @€uý‹°y @  b(  X?d €€u™9. @  b)€ X?d À€uiFçW @  b*€X?d u¹k¿ @  b+€X?d @uG¨¸ @  b,€X?d €ugáªF @  b-€X?d Àu—žP? @  b.€X?d ‚u Úðþ @  b/€X?d @‚u¯Ú(E @  b0€X?d €‚u/*» @  b1€X?d À‚u;k @  b2 X?d ƒuë_óƒ @  b3 X?d @ƒupRh @  b4 X?d €ƒuPàP– @  b5 X?d Àƒu Ÿªï @  b6 X?d „u¹ÑYà @  b7 X?d @„u±p¿» @  b8 X?d €„u‘…½E @  b9 X?d À„uaúG< @  b: X?d …u±²ËÔ @  b; X?d @…uÒ1 @  b<  X?d €…uòê3ñ @  b= !X?d À…u•Ɉ @  b> "X?d †uŸÑiI @  b? #X?d @†u…ÐÐ @  b@ $X?d €†u¥%’. @  bA %X?d À†uUZhW @  bB &X?d ‡u…ä¿ @  bC 'X?d @‡uXET @  bD (X?d €‡u>­Gª @  bE )X?d À‡uÎÒ½Ó @  bF *X?d ˆuú-1Î @  bG +X?d @ˆuòŒ×• @  bH ,X?d €ˆuÒyÕk @  bI -X?d Àˆu"/ @  bJ .X?d ‰uòN£ú @  bK /X?d @‰u T`ý @  bL 0X?d €‰u,¡b @  bM 1X?d À‰uÜÞ˜z @  bN 2X?d ŠuAš8» @  bO 3X?d @Šuäšà @  bP 4X?d €ŠuÄoâþ @  bQ 5X?d ÀŠu4‡ @  bR 6X?d ‹uäX”o @  bS 7X?d @‹u5„ @  bT 8X?d €‹u_ç7z @  bU 9X?d À‹u¯˜Í @  bV :X?d Œu¶Ö>  @  bW ;X?d @Œu¾wØW @  bX X?d u¾µ¬8 @  b[ ?X?d @u-HCò @  b\ @X?d €u ½A  @  b] AX?d Àuý»u @  b^ BX?d Žu`†´ @  b_ CX?d @ŽuÔ€ä¿ @  b` DX?d €ŽuôuæA @  ba EX?d ÀŽu 8 @  bb FX?d uÔBÐ @  bc GX?d @uO1; @  bd HX?d €uoý3Å @  be IX?d ÀuŸ‚ɼ @  bf JX?d u!\u @  bg KX?d @u)ý“U @  bh LX?d €u ‘« @  bi MX?d ÀuùwkÒ @  bj NX?d ‘u)?ç: @  bk OX?d @‘u×%$= @  bl PX?d €‘u÷Ð&à @  bm QX?d À‘u¯Üº @  bn RX?d ’ušë|{ @  bo SX?d @’u?ë¤À @  bp TX?d €’u¦> @  bq UX?d À’uïa\G @  br VX?d “u?)Я @  bs WX?d @“u¤cqD @  bt XX?d €“u„–sº @  bu YX?d À“uté‰Ã @  bv ZX?d ”um§zÌ @  bw [X?d @”ueœ— @  bx \X?d €”uEóži @  by ]X?d À”uµŒd @  bz ^X?d •ueÄèø @  b{ _X?d @•ui# @  b| `X?d €•u&œÝ @  b} aX?d À•uÖãê¤ @  b~ bX?d –uK§Je @  b cX?d @–u²ðƒÍ @  b€ dX?d €–u’3 @  b eX?d À–ubz{J @  b‚ fX?d —u²2÷¢ @  bƒ gX?d @—u)xVI @  b„ hX?d €—u T· @  b… iX?d À—uùò®Î @  b† jX?d ˜uÍ "Ó @  b‡ kX?d @˜uŬĈ @  bˆ lX?d €˜uåYÆv @  b‰ mX?d À˜u&< @  bŠ nX?d ™uÅn°ç @  b‹ oX?d @™u;tsà @  bŒ pX?d €™uq @  b qX?d À™uëþ‹g @  bŽ rX?d šuvº+¦ @  b sX?d @šuÓºó @  b tX?d €šuóOñã @  b‘ uX?d Àšu0 š @  b’ vX?d ›uÓx‡r @  b“ wX?d @›uH2&™ @  b” xX?d €›uhÇ$g @  b• yX?d À›u˜¸Þ @  b– zX?d œuö- @  b— {X?d @œu‰WËJ @  b˜ |X?d €œu©¢É´ @  b™ }X?d ÀœuYÝ3Í @  bš ~X?d u‰•¿% @  b› X?d @u®} @  bœ €X?d €u'[ƒ @  b X?d Àu×$üú @  bž ‚X?d žuJ`\; @  bŸ ƒX?d @žuþf£0 @  b  „X?d €žuÞ“¡Î @  b¡ …X?d Àžu.ì[· @  b¢ †X?d Ÿuþ¤×_ @  b£ ‡X?d @Ÿueîv´ @  b¤ ˆX?d €ŸuEtJ @  b¥ ‰XuРu?d ÀŸuµdŽ3 @  b¦ ŠX?d  u?kU @  b§‹X?d X u7  @  b¨ŒX?d ˜ uUð @  b©X?d Ø uç*u‰ @  bªŽX?d ¡u7bùa @  b«X?d X¡uÉx:f @  b¬X?d ˜¡ué8˜ @  b­‘X?d Ø¡uòÂá @  b®’X?d ¢u„¶b  @  b¯“X?d X¢u!¶º› @  b°”X?d ˜¢uC¸e @  b±•X?d Ø¢uño @  b´˜X?d ˜£ušËmá @  bµ™X?d Ø£uj´—˜ @  b¶šX?d ¤usúd— @  b·›X?d X¤u{[‚Ì @  b¸œX?d ˜¤u[®€2 @  b¹X?d ؤu«ÑzK @  bºžX?d ¥u{™ö£ @  b»ŸX?d X¥u4 x @  b¼ X?d ˜¥u8Á† @  b½¡X?d Ø¥uȾôÿ @  b¾¢X?d ¦uUúT> @  b¿£X?d X¦uOû­§ @  bÀ¤X?d ˜¦uo¯Y @  bÁ¥X?d ئuŸqU  @  b¦X?d §uO9ÙÈ @  bçX?d X§uÔsx# @  bĨX?d ˜§uô†zÝ @  bÅ©X?d اuù€¤ @  bƪX?d ¨u0 ¹ @  bÇ«X?d X¨u8§êâ @  bȬX?d ˜¨uRè @  bÉ­X?d بuè-e @  bÊ®X?d ©u8ež @  b˯X?d X©uÆ]Š @  b̰X?d ˜©uæŠ_t @  bͱX?d Ø©uõ¥  @  bβX?d ªu‹±Ì @  bϳX?d Xªu.±Ýw @  bдX?d ˜ªuD߉ @  bѵX?d تuþ;%ð @  bÒ¶X?d «u.s© @  bÓ·X?d X«uµ9ó @  bÔ¸X?d ˜«u•Ì  @  bÕ¹X?d Ø«ue³ðt @  bÖºX?d ¬u|ý{ @  b×»X?d X¬ut\å  @  bؼX?d ˜¬uT©çÞ @  bÙ½X?d جu¤Ö§ @  bÚ¾X?d ­utž‘O @  bÛ¿X?d X­uçc~… @  bÜÀX?d ˜­uÇ–|{ @  bÝÁX?d Ø­u7é† @  bÞÂX?d ®uª­&à @  bßÃX?d X®u«ÙÈ @  bàÄX?d ˜®u>^Û6 @  báÅX?d Ø®uÎ!!O @  bâÆX?d€ ¯ujª± @  cÇX?d X¯u¡Xà @  cÈX?d ˜¯u0TZ= @  cÉX?d دub[© @  cÊX?d °u»¼ç @  cËX?d X°u}¯^: @  cÌX?d ˜°u]Z\Ä @  cÍX?d ذuc—ùÇ @  cÎX?d ±u³ßu/ @  c ÏX?d X±uˆŒMÅ @  c ÐX?d ˜±u¨yO; @  c ÑX?d رuON¯ @  c ÒX?d ²u în @  c ÓX?d X²uÆWO @  cÔX?d ˜²uæíU± @  cÕX?d زuuÎR @  cÖX?d ³u¥ÉBº @  c×X?d X³uûʼ @  cØX?d ˜³uÛ?B @  cÙX?d سuî Ö @  cÚX?d ´u÷GèÙ @  cÛX?d X´u1TQø @  cÜX?d ˜´u¡S @  cÝX?d Ø´u/lö @  cÞX?d µuÿ$zí @  cßX?d XµuYÀ{Û @  càX?d ˜µuy5y% @  cáX?d صuLx± @  câX?d ¶uÑGØp @  cãX?d X¶uTaQ @  cäX?d ˜¶u7¡c¯ @  cåX?d ضuµËßü @  c æX?d ·ueƒS @  c!çX?d X·u;€  @  c"èX?d ˜·uu ì @  c#éX?d Ø·u.C x @  c$êX?d ¸u¼†e @  c%ëX?d X¸uܯ?D @  c&ìX?d ˜¸uüZ=º @  c'íX?d ظu—˜¹ @  c(îX?d ¹ußQ @  c)ïX?d X¹u)Œ,» @  c*ðX?d ˜¹u y.E @  c+ñX?d عuY?d ˜¾uP^ @  c?Y?d ؾu(=¬Ÿ @  c@Y?d ¿uøu w @  cAY?d X¿u¦vzq @  cBY?d ˜¿u†ƒx @uÐÀu  cC Y?d Ø¿uHÛB @  cD  Y?d 0Àu,+I @  cE  Y?d pÀuê8ªh @  cF  Y?d °ÀuÊͨ– @  cG  Y?d ðÀuô • @  cH Y?d 0Áu$H} @  cI Y?d pÁu¹— @  cJ Y?d °Áu?î»i @  cK Y?d ðÁu غý @  cL Y?d 0Âu—œ< @  cM Y?d pÂuQ£ @  cN Y?d °Âuqz¡ã @  cO Y?d ðÂuâ: @  cP Y?d 0Ãu2^¶è @  cQ Y?d pÃul]ìî @  cR Y?d °ÃuL¨î @  cS Y?d ðÃuyžï„ @  cT Y?d 0Äu`Ћ @  cU Y?d pÄu¦Ã¥ª @  cV Y?d °Äu†6§T @  cW Y?d ðÄu¸ûW @  cX Y?d 0Åuh³Ž¿ @  cY Y?d pÅuÎW‰ @  cZ  Y?d °Åuî¢w @  c[ !Y?d ðÅuÛ”Œã @  c\ "Y?d 0Æuð÷ @  c]#Y?d pÆu¹IÖ @  c^$Y?d °Æu™ñK( @  c_%Y?d ðÆu›÷{ @  c`&Y?d 0ÇuËÓ{“ @  ca'Y?d pÇu•Ð!• @  cb(Y?d °Çuµ%#k @  cc)Y?d ðÇu€"ÿ @  cd*Y?d 0Èu´ì®â @  ce+Y?d pÈurÿà @  cf,Y?d °ÈuR = @  cg-Y?d ðÈulǰ> @  ch.Y?d 0Éu¼<Ö @  ci/Y?d pÉu‡Ü< @  cj0Y?d °Éu§) @  ck1Y?d ðÉu’V @  cl2Y?d 0Êu[§— @  cm3Y?d pÊuÉH¶ @  cn4Y?d °Êué½H @  co5Y?d ðÊuzч« @  cp6Y?d 0Ëuª™ C @  cq7Y?d pËuôšQE @  cr8Y?d °ËuÔoS» @  cs9Y?d ðËuáYR/ @  ct:Y?d 0Ìuø¡  @  cu;Y?d pÌu> @  cvY?d 0Íuðt3 @  cy?Y?d pÍu¦À'3 @  cz@Y?d °Íu†5%Í @  c{AY?d ðÍu³$Y @  c|BY?d 0Îu.G„˜ @  c}CY?d pÎuèT=¹ @  c~DY?d °ÎuÈ¡?G @  cEY?d ðÎušµ· @  c€FY?d 0Ïu×Ò9_ @  cGY?d pÏu‰ÑcY @  c‚HY?d °Ïu©$a§ @  cƒIY?d ðÏuœ`3 @  c„JY?d 0Ðu"ÌÜ @  c…KY?d pÐuäße  @  c†LY?d °ÐuÄ*g^ @  c‡MY?d ðÐuúçÂ] @  cˆNY?d 0Ñu*¯Nµ @  c‰OY?d pÑuüv_ @  cŠPY?d °Ñu1 t¡ @  c‹QY?d ðÑu?u5 @  cŒRY?d 0Òu™{Õô @  cSY?d pÒu_hlÕ @  cŽTY?d °Òun+ @  cUY?d ðÒuìñõÈ @  cVY?d 0Óu<¹y  @  c‘WY?d pÓubº#& @  c’XY?d °ÓuBO!Ø @  c“YY?d ðÓuwy L @  c”ZY?d 0Ôun7ÓC @  c•[Y?d pÔu¨$jb @  c–\Y?d °ÔuˆÑhœ @  c—]Y?d ðÔu¶ÍŸ @  c˜^Y?d 0ÕufTAw @  c™_Y?d pÕuÀ°@A @  cš`Y?d °ÕuàEB¿ @  c›aY?d ðÕuÕsC+ @  cœbY?d 0ÖuH7ãê @  ccY?d pÖuŽ$ZË @  cždY?d °Öu®ÑX5 @  cŸeY?d ðÖu,»äf @  c fY?d 0×uüóhŽ @  c¡gY?d p×u¢ð2ˆ @  c¢hY?d °×u‚0v @  c£iY?d ð×u·31â @  c¤jY?d 0ØuƒÌ½ÿ @  c¥kY?d pØuEßÞ @  c¦lY?d °Øue*  @  c§mY?d ðØu[ç£# @  c¨nY?d 0Ùu‹¯/Ë @  c©oY?d pÙu°ü! @  cªpY?d °Ùu ß @  c«qY?d ðÙu¥?K @  c¬rY?d 0Úu8{´Š @  c­sY?d pÚuþh « @  c®tY?d °ÚuÞU @  c¯uY?d ðÚuMñ”¶ @  c°vY?d 0Ûu¹^ @  c±wY?d pÛuúBX @  c²xY?d °ÛuãO@¦ @  c³yY?d ðÛuÖyA2 @  c´zY?d 0ÜuÏ7²= @  cµ{Y?d pÜu $  @  c¶|Y?d °Üu)Ñ â @  c·}Y?d ðÜu¬á @  c¸~Y?d 0ÝuýÇÜ @  c¹Y?d pÝuN‡i @  cº€Y?d °Ýunz…— @  c»Y?d ðÝu™åcÖ @  c¼‚Y?d 0Þu¡Ã @  c½ƒY?d pÞu²z6 @  c¾„Y?d °ÞuâGxÈ @  c¿…Y?d ðÞuÎ*  @  cÀ†Y?d 0ßubNá @  cÁ‡Y?d pßu@aç @  cˆY?d uÐàu/°ßu`” @  cÉY?d ðßuU¢ @  cÄŠY?d HàuLI{ @  cÅ‹Y?d ˆàu(qåz @  cÆŒY?d Èàuªàò¤ @  cÇY?d áuÆôÌ‘ @  cÈŽY?d HáuDeÛO @  cÉY?d ˆáuÝRö… @  cÊY?d Èáu_Ãá[ @  cË‘Y?d âuu WÐ @  cÌ’Y?d Hâu÷±@ @  cÍ“Y?d ˆâu“Æì @  cΔY?d ÈâuWûÑ @  cÏ•Y?d ãuÐâû @  cЖY?d HãuRsìÚ @  cÑ—Y?d ˆãu®£ü @  cÒ˜Y?d Èãu,…´" @  cÓ™Y?d äu‚lQg @  cÔšY?d HäuýF¹ @  cÕ›Y?d ˆäudŠê¸ @  cÖœY?d Èäuæýf @  c×Y?d åuŠÃS @  cØžY?d HåužÔ @  cÙŸY?d ˆåu À› @  cÚ Y?d ÈåuŽ×E @  cÛ¡Y?d æu¤laÎ @  cÜ¢Y?d Hæu&ýv @  cÝ£Y?d ˆæuBŠÚ @  cÞ¤Y?d ÈæuÀÍÏ @  cߥY?d çu¨êª @  cà¦Y?d Hçu’9ýt @  cá§Y?d ˆçun^²R @  câ¨Y?d€ Èçuj™ 5 @  d©Y?d èu€ßK @  dªY?d HèuŠÈ• @  d«Y?d ˆèu+/Ÿy @  d¬Y?d Èèu©¾ˆ§ @  d­Y?d éu éè @  d®Y?d Héu‰‰þ6 @  d¯Y?d ˆéuÞ Œ† @  d°Y?d Èéu\›X @  d ±Y?d êu³7Ö> @  d ²Y?d Hêu1¦Áà @  d ³Y?d ˆêu˜–  @  d ´Y?d Èêu Ò @  d µY?d ëu°¯à @  d¶Y?d Hëu2>÷C @  d·Y?d ˆëu­JÙÿ @  d¸Y?d Èëu/ÛÎ! @  d¹Y?d ìuD{Љ @  dºY?d HìuÆêÇW @  d»Y?d ˆìugÔ» @  d¼Y?d ÈìuåE‡e @  d½Y?d íuGãæ* @  d¾Y?d HíuÅrñô @  d¿Y?d ˆíuÿ¯‰ @  dÀY?d Èíu}¸W @  dÁY?d îu’+õ1 @  dÂY?d Hîuºâï @  dÃY?d ˆîu±„µ @  dÄY?d Èîu3¢Ý @  dÅY?d ïu‘³Ã’ @  dÆY?d Hïu"ÔL @  dÇY?d ˆïuPÝ@ @  d ÈY?d ÈïuÁÊž @  d!ÉY?d ðuÓñ›‹ @  d"ÊY?d HðuQ`ŒU @  d#ËY?d ˆðuð^Û¹ @  d$ÌY?d ÈðurÏÌg @  d%ÍY?d ñuÐi­( @  d&ÎY?d HñuRøºö @  d'ÏY?d ˆñu}ÈF @  d(ÐY?d Èñu‡ìߘ @  d)ÑY?d òuhF’þ @  d*ÒY?d Hòuê×…  @  d+ÓY?d ˆòuKéÒÌ @  d,ÔY?d ÈòuÉxÅ @  d-ÕY?d óukÞ¤] @  d.ÖY?d HóuéO³ƒ @  d/×Y?d ˆóuv;? @  d0ØY?d ÈóuôªŠá @  d1ÙY?d ôuŸ ”I @  d2ÚY?d Hôu›ƒ— @  d3ÛY?d ˆôu¼¥Ô{ @  d4ÜY?d Èôu>4Ã¥ @  d5ÝY?d õuœ’¢ê @  d6ÞY?d Hõuµ4 @  d7ßY?d ˆõuÔ1þX @  d8àY?d ÈõuV é† @  d9áY?d öu¹ ¤à @  d:âY?d Höu;›³> @  d;ãY?d ˆöuš¥äÒ @  d<äY?d Èöu4ó  @  d=åY?d ÷uº’’C @  d>æY?d H÷u8… @  d?çY?d ˆ÷uvŠ @  d@èY?d È÷ušçÝ @  dAéY?d øuÜöüg @  dBêY?d Høu^gë¹ @  dCëY?d ˆøuÿY¼U @  dDìY?d Èøu}È«‹ @  dEíY?d ùußnÊÄ @  dFîY?d Hùu]ÿÝ @  dGïY?d ˆùu z¯ª @  dHðY?d Èùuˆë¸t @  dIñY?d úugAõ @  dJòY?d HúuåÐâÌ @  dKóY?d ˆúuDîµ  @  dLôY?d ÈúuÆ¢þ @  dMõY?d ûudÙñ @  dNöY?d HûuæHÔo @  dO÷Y?d ˆûuy<úÓ @  dPøY?d Èûuû­í  @  dQùY?d üu ó¥ @  dRúY?d Hüuœä{ @  dSûY?d ˆüu³¢³— @  dTüY?d Èüu13¤I @  dUýY?d ýu“•Å @  dVþY?d HýuÒØ @  dWÿY?d ˆýuûå¸ @  dXZ?d Èýuyt¯À @  dYZ?d þu–Þ⦠@  dZZ?d HþuOõx @  d[Z?d ˆþuµq¢” @  d\Z?d Èþu7àµJ @  d]Z?d ÿu•FÔ @  d^Z?d Hÿu×ÃÛ @  d_Z?d ˆÿu™¥Ê× @  d`uÐvZ?d Èÿu4Ý  @  da Z?d vm+x¹ @  db Z?d `vïºog @  dc Z?d  vN„8‹ @  dd Z?d àvÌ/U @  de Z?d vn³N @  dfZ?d `vì"YÄ @  dgZ?d  v»§+t @  dhZ?d àv96<ª @  diZ?d vÖœqÌ @  djZ?d `vT f @  dkZ?d  võ31þ @  dlZ?d àvw¢&  @  dmZ?d vÕGo @  dnZ?d `vW•P± @  doZ?d  vÈá~  @  dpZ?d àvJpiÓ @  dqZ?d v!Ðw{ @  drZ?d `v£A`¥ @  dsZ?d  v7I @  dtZ?d àv€î — @  duZ?d v"HAØ @  dvZ?d `v ÙV @  dwZ?d  vjëj @  dx Z?d àvèz ´ @  dy!Z?d vÐGÒ @  dz"Z?d `v…AP  @  d{#Z?d  v$à @  d|$Z?d àv¦î> @  d}%Z?d vHqq @  d~&Z?d `v†Ùf¯ @  d'Z?d  vEúY @  d€(Z?d àvÇkNÞ @  d)Z?d vz/d @  d‚*Z?d `vë8º @  dƒ+Z?d  v¢ÕoV @  d„,Z?d àv Dxˆ @  d…-Z?d v‚âÇ @  d†.Z?d ` vs @  d‡/Z?d   vWö|© @  dˆ0Z?d à vÕgkw @  d‰1Z?d v:Í& @  dŠ2Z?d ` v¸\1Ï @  d‹3Z?d   vbf# @  dŒ4Z?d à v›óqý @  d5Z?d v9U² @  dŽ6Z?d ` v»Äl @  d7Z?d   v$°)Ð @  d8Z?d à v¦!> @  d‘9Z?d vÍ ¦ @  d’:Z?d ` vO7x @  d“;Z?d   vî.`” @  d”Z?d ` vLˆÛ @  d—?Z?d   vvê_¦ @  d˜@Z?d à vô{Hx @  d™AZ?d vÑ @  dšBZ?d `v™@À @  d›CZ?d  v8~E, @  dœDZ?d àvºïRò @  dEZ?d vÚàÔh @  džFZ?d `v£ø¶ @  dŸ GZ?d  v-mñº @  d  HZ?d àv¯üæd @  d¡ IZ?d vcÌ·q @  d¢ JZ?d `vá] ¯ @  d£ KZ?d  v@c÷C @  d¤ LZ?d àv9œÛ @  d¥MZ?d vY“] @  d¦NZ?d `vÛJÙ @  d§OZ?d  vŒ‡8i @  d¨PZ?d àv/· @  d©QZ?d vá¼bÑ @  dªRZ?d `vc-u @  d«SZ?d  vÂ"ã @  d¬TZ?d àv@‚5= @  d­UZ?d vâ$Tr @  d®VZ?d `v¢¤y @  d¯WZ?d  v=hŠÅ @  d°XZ?d àv¿ù @  d±YZ?d vÔYƒ³ @  d²ZZ?d `vVÈ”m @  d³[Z?d  v÷öà @  d´\Z?d àv·Î3Š @  dµ]Z?d vhRÅ @  d¶^Z?d `v—ùE @  d·_Z?d  v]Ëw @  d¸`Z?d àvßZ© @  d¹aZ?d v0ðTÏ @  dºbZ?d `v²aC @  d»cZ?d  v_ý @  d¼dZ?d àv‘Î# @  d½eZ?d v3hbl @  d¾fZ?d `v±ùu² @  d¿gZ?d  v‘Œz, @  dÀhZ?d àvmò @  dÁiZ?d v—¥ë @  dÂjZ?d `v4üC @  dÃkZ?d  v´ «¯ @  dÄlZ?d àv6›¼q @  dÅmZ?d v”=Ý> @  dÆnZ?d `v¬Êà @  dÇoZ?d  vA)¸P @  dÈpZ?d àvø¯Ž @  dÉqZ?d v×|Ùè @  dÊ rZ?d `vUíÎ6 @  dË sZ?d  vÍE @  dÌtZ?d àv,µ @  dÍuZ?d v/ŠÔK @  dÎvZ?d `v­Õ @  dÏwZ?d  v2oí) @  dÐxZ?d àv°þú÷ @  dÑyZ?d v÷Š @  dÒzZ?d `v›fT @  dÓ{Z?d  v:XC¸ @  dÔ|Z?d àv¸ÉTf @  dÕ}Z?d vo5) @  dÖ~Z?d `v˜þ"÷ @  d×Z?d  v¿Z( @  dØ€Z?d àv=Ë?Æ @  dÙZ?d vÒar  @  dÚ‚Z?d `vPðe~ @  dÛƒZ?d  vñÎ2’ @  dÜ„Z?d àvs_%L @  dÝ…Z?d vÑùD @  dÞ†Z?d `vShSÝ @  d߇Z?d  vÝZÑuÐ v @  dàˆZ?d àv_‹M @  dá‰Z?d 8 v\n~Î @  dâŠZ?d€ x vªÈZ?d ø/v Xø @  e?ÉZ?d 80vzU @  e@ÊZ?d x0v˜ë‹ @  eAËZ?d ¸0vüœ®Š @  eBÌZ?d ø0v~ ¹T @  eCÍZ?d 81vâ#ö @  eDÎZ?d x1v›s4( @  eEÏZ?d ¸1vDâ @  eFÐZ?d ø1v€Õ< @  eGÑZ?d 82v¡Í  @  eHÒZ?d x2v#\ þ @  eIÓZ?d ¸2vG+§ÿ @  eJÔZ?d ø2vź°! @  eKÕZ?d 83v¢U*ƒ @  eLÖZ?d x3v Ä=] @  eM×Z?d ¸3vÜ£r{ @  eNØZ?d ø3v^2e¥ @  eOÙZ?d 84vV— @  ePÚZ?d x4vÔ I @  eQÛZ?d ¸4v°g¡H @  eRÜZ?d ø4v2ö¶– @  eSÝZ?d 85vU,4 @  eTÞZ?d x5v׈;ê @  eUßZ?d ¸5vÓ/ü @  eVàZ?d ø5vQ™8" @  eWáZ?d 86vp*> @  eXâZ?d x6vò=à @  eYãZ?d ¸6v–g‘á @  eZäZ?d ø6vö†? @  e[åZ?d 87vs @  e\æZ?d x7vñˆ C @  e]çZ?d ¸7v ïDe @  e^èZ?d ø7v~S» @  e_éZ?d 88v»zt+ @  e`êZ?d x8v9ëcõ @  eaëZ?d ¸8v]œÏô @  ebìZ?d ø8vß Ø* @  ecíZ?d 89v¸âBˆ @  edîZ?d x9v:sUV @  eeïZ?d ¸9v£Dxœ @  efðZ?d ø9v!ÕoB @  egñZ?d 8:vÍ}^ @  ehòZ?d x:v‚\j€ @  eióZ?d ¸:væ+Æ @  ejôZ?d ø:vdºÑ_ @  ekõZ?d 8;vUKý @  elöZ?d x;vÄ\# @  em÷Z?d ¸;v}£ @  enøZ?d ø;vÿ2Û @  eoùZ?d 8vCp_Ï @  ex[?d x>vÁáH @  ey[?d ¸>v¥–ä @  ez[?d ø>v'óÎ @  e{[?d 8?v@èil @  e|[?d x?vÂy~² @  e}[?duÐ@v7 ¸?v>1” @  e~[?d ø?v¼&J @  e [?d P@v2‰X @  e€ [?d @v|¦ @  e [?d Ð@vÔoº‡ @  e‚ [?d Av'6o @  eƒ [?d PAv17û @  e„[?d Avä5 @  e…[?d ÐAv*· ï @  e†[?d Bv·ó­. @  e‡[?d PBv‰>- @  eˆ[?d Bv©Ë Ó @  e‰[?d ÐBvoسò @  eŠ[?d Cv¿? @  e‹[?d PCvЦ>Ž @  eŒ[?d CvªS3 @  e˜"[?d Fvx‡<Í @  e™#[?d ÐFv¾”…ì @  eš$[?d GvnÜ  @  e›%[?d PGv[ê @  eœ&[?d Gv{ n @  e'[?d ÐGv%Ph @  ež([?d HvãÜu @  eŸ)[?d PHv“‰`& @  e *[?d Hv³|bØ @  e¡+[?d ÐHvuoÛù @  e¢,[?d Iv¥'W @  e£-[?d PIvV… @  e¤.[?d Iv°äT{ @  e¥/[?d ÐIv‹·l‘ @  e¦0[?d JvóÌP @  e§1[?d PJv(>iS @  e¨2[?d JvËk­ @  e©3[?d ÐJvÎØÒŒ @  eª4[?d Kv^d @  e«5[?d PKv+¦_ð @  e¬6[?d Kv S] @  e­7[?d ÐKvUP @  e®8[?d LvLô @  e¯9[?d PLvßroä @  e°:[?d Lvÿ‡m @  e±;[?d ÐLv9”Ô; @  e²<[?d MvéÜXÓ @  e³=[?d PMvÜêYG @  e´>[?d Mvü[¹ @  eµ?[?d ÐMvª«Ož @  e¶@[?d Nv7ïï_ @  e·A[?d PNv "J\ @  e¸B[?d Nv)×H¢ @  e¹C[?d ÐNvïÄñƒ @  eºD[?d Ov?Œ}k @  e»E[?d POv º|ÿ @  e¼F[?d Ov*O~ @  e½G[?d ÐOvtL$ @  e¾H[?d PvÊ’˜µ @  e¿I[?d PPvæÿ"t @  eÀJ[?d PvÆ Š @  eÁK[?d ÐPv™« @  eÂL[?d QvÐQC @  eÃM[?d PQvåg× @  eÄN[?d QvÅ’) @  eÅO[?d ÐQvþÁ.à @  eÆP[?d Rvc…Ž @  eÇQ[?d PRv]H+ @  eÈR[?d Rv}½)ÿ @  eÉS[?d ÐRv»®Þ @  eÊT[?d Svkæ6 @  eËU[?d PSv^Т @  eÌV[?d Sv~%\ @  eÍW[?d ÐSv &EZ @  eÎX[?d Tv9h¶U @  eÏY[?d PTvª-¶ @  eÐZ[?d TvŠñ/H @  eÑ[[?d ÐTvLâ–i @  eÒ\[?d Uvœª @  eÓ][?d PUv©œ @  eÔ^[?d Uv‰ië @  eÕ_[?d ÐUv/Ý @  eÖ`[?d Vv²É¸ @  e×a[?d PVvŒ @  eØb[?d Vv¬ñá @  eÙc[?d ÐVvjâ¦À @  eÚd[?d Wvºª*( @  eÛe[?d PWvœ+¼ @  eÜf[?d Wv¯i)B @  eÝg[?d ÐWvñjsD @  eÞh[?d XvÅ•ÿY @  eßi[?d PXvGÿC  @  eàj[?d Xvg Aô @  eák[?d ÐXv¡øÕ @  eâl[?d€ Yv°ƒ= @  fm[?d PYvdaÊ€ @  fn[?d YvD”È~ @  fo[?d ÐYvºŽ y @  fp[?d Zv'Ê«¸ @  fq[?d PZv×µQÁ @  fr[?d Zv÷@S? @  fs[?d ÐZvÿáµd @  ft[?d [v/©9Œ @  f u[?d P[vßÖÃõ @  f v[?d [vÿ#Á  @  f w[?d Ð[vdi`à @  f x[?d \v}'“ï @  f y[?d P\vXi– @  fz[?d \v­­kh @  f{[?d Ð\v­³Ó @  f|[?d ]vØå?; @  f}[?d P]v(šÅB @  f~[?d ]voǼ @  f[?d Ð]v†T|ä @  f€[?d ^vÜ% @  f[?d P^vëo&\ @  f‚[?d ^vËš$¢ @  fƒ[?d Ð^vÃ;Âù @  f„[?d _vsN @  f…[?d P_vã ´h @  f†[?d _vÃù¶– @  fuÐ`v‡[?d Ð_všð¨ @  fˆ[?d (`v$âE0 @  f‰[?d h`vÔ¿I @  fŠ[?d ¨`vôh½· @  f‹[?d è`v@nB¼ @  f Œ[?d (av&ÎT @  f![?d hav`Y4- @  f"Ž[?d ¨av@¬6Ó @  f#[?d èav¾¶õÔ @  f$[?d (bv#òU @  f%‘[?d hbvÓ¯l @  f&’[?d ¨bvóx­’ @  f'“[?d èbvûÙKÉ @  f(”[?d (cv+‘Ç! @  f)•[?d hcvÛî=X @  f*–[?d ¨cvû?¦ @  f+—[?d ècv`QžM @  f,˜[?d (dvymB @  f-™[?d hdv‰`—; @  f.š[?d ¨dv©••Å @  f/›[?d èdv •M~ @  f0œ[?d (evÜÝÁ– @  f1[?d hev,¢;ï @  f2ž[?d ¨ev W9 @  f3Ÿ[?d èevoúÃÊ @  f4 [?d (fvò¾c  @  f5¡[?d hfvÁ™r @  f6¢[?d ¨fv"4›Œ @  f7£[?d èfv*•}× @  f8¤[?d (gvúÝñ? @  f9¥[?d hgv ¢ F @  f:¦[?d ¨gv*W ¸ @  f;§[?d ègv±¨S @  f<¨[?d (hv…â$N @  f=©[?d hhvuÞ7 @  f>ª[?d ¨hvUhÜÉ @  f?«[?d èhvOi%P @  f@¬[?d (ivŸ!©¸ @  fA­[?d hivo^SÁ @  fB®[?d ¨ivO«Q? @  fC¯[?d èivˆvNí @  fD °[?d (jv2î, @  fE ±[?d hjvåMU @  fF ²[?d ¨jvŸ« @  fG ³[?d èjvÍðð @  fH ´[?d (kvQ| @  fI µ[?d hkví.†a @  fJ ¶[?d ¨kvÍÛ„Ÿ @  fK ·[?d èkvV‘%t @  fL ¸[?d (lvOßÖ{ @  fM ¹[?d hlv¿ , @  fN º[?d ¨lvŸU.ü @  fO »[?d èlv:UöG @  fP ¼[?d (mvêz¯ @  fQ ½[?d hmvb€Ö @  fR ¾[?d ¨mv:—‚( @  fS ¿[?d èmv©jmâ @  fT À[?d (nv4.Í# @  fU Á[?d hnvÄQ7Z @  fV Â[?d ¨nvä¤5¤ @  fW Ã[?d ènvìÓÿ @  fX Ä[?d (ovo @  fq Ý[?d huvÁÄ @  fr Þ[?d ¨uváæÆè @  fs ß[?d èuv‚K<3 @  ft à[?d (vvœò @  fu á[?d hvvïpf‹ @  fv â[?d ¨vvÏ…du @  fw ã[?d èvvÇ$‚. @  fx ä[?d (wvlÆ @  fy å[?d hwvçô¿ @  fz æ[?d ¨wvÇæöA @  f{ ç[?d èwv\¬Wª @  f| è[?d (xvhSÛ· @  f} é[?d hxv˜,!Î @  f~ ê[?d ¨xv¸Ù#0 @  f ë[?d èxvAŽê˜ @  f€ ì[?d (yv‘Æfp @  f í[?d hyva¹œ  @  f‚ î[?d ¨yvALž÷ @  fƒ ï[?d èyv¿V]ð @  f„ ð[?d (zv"ý1 @  f… ñ[?d hzvÒmH @  f† ò[?d ¨zvò˜¶ @  f‡ ó[?d èzvú9ãí @  fˆ ô[?d ({v*qo @  f‰ õ[?d h{vÚ•| @  fŠ ö[?d ¨{vúû—‚ @  f‹ ÷[?d è{va±6i @  fŒ ø[?d (|vxÿÅf @  f ù[?d h|vˆ€? @  fŽ ú[?d ¨|v¨u=á @  f û[?d è|v uåZ @  f ü[?d (}vÝ=i² @  f‘ ý[?d h}v-B“Ë @  f’ þ[?d ¨}v ·‘5 @  f“ ÿ[?d è}vÀâ@÷ @  f” \?d (~v]¦à6 @  f• \?d h~v­ÙO @  f– \?d ¨~v,± @  f— \?d è~v…þê @  f˜ \?d (vUÅr @  f™ \?d hv¥ºˆ{ @  fš \?d ¨vuЀv'…OŠ… @  f› \?d èvåkn @  fœ\?d @€v‹Õò @  f \?d €€vÙÎC @  fž \?d À€v[_  @  fŸ \?d v½€n  @  f  \?d @v?y~ @  f¡ \?d €vm –' @  f¢\?d Àvï›ù @  f£\?d ‚vTõá @  f¤\?d @‚vŒÅâ? @  f¥\?d €‚vÞÞ f @  f¦\?d À‚v\O¸ @  f§\?d ƒv7gÕ @  f¨\?d @ƒv„¦p  @  f©\?d €ƒvÖ½ŸR @  fª\?d ÀƒvT,ˆŒ @  f«\?d „vT¹Í¶ @  f¬\?d @„vÖ(Úh @  f­\?d €„v„351 @  f®\?d À„v¢"ï @  f¯\?d …vñ{ab @  f°\?d @…vsêv¼ @  f±\?d €…v!ñ™å @  f²\?d À…v£`Ž; @  f³\?d †vßÃÿ @  f´ \?d @†v]‰Ô! @  fµ!\?d €†v’;x @  f¶"\?d À†v,¦ @  f·#\?d ‡v×{QË @  f¸$\?d @‡vUêF @  f¹%\?d €‡vñ©L @  fº&\?d À‡v…`¾’ @  f»'\?d ˆv¨D„º @  f¼(\?d @ˆv*Õ“d @  f½)\?d €ˆvxÎ|= @  f¾*\?d Àˆvú_kã @  f¿+\?d ‰v²‡ L @  fÀ,\?d @‰v0’ @  fÁ-\?d €‰vb ñË @  fÂ.\?d À‰vàœæ @  fÃ/\?d ŠvS’  @  fÄ0\?d @ŠvƒÂ…Ó @  fÅ1\?d €ŠvÑÙjŠ @  fÆ2\?d ÀŠvSH}T @  fÇ3\?d ‹v 09 @  fÈ4\?d @‹v‹¡ç @  fÉ5\?d €‹vÙºø¾ @  fÊ6\?d À‹v[+ï` @  fË7\?d Œv[¾ªZ @  fÌ8\?d @ŒvÙ/½„ @  fÍ9\?d €Œv‹4RÝ @  fÎ:\?d ÀŒv ¥E @  fÏ;\?d vþ|Ž @  fÐ<\?d @v|íP @  fÑ=\?d €v.öþ  @  fÒ>\?d Àv¬gé× @  fÓ?\?d Žv O± @  fÔ@\?d @Žv¢Þ¦Ü @  fÕA\?d €ŽvðÅI… @  fÖB\?d ÀŽvrT^[ @  f×C\?d v(,#6 @  fØD\?d @vª½4è @  fÙE\?d €vø¦Û± @  fÚF\?d Àvz7Ìo @  fÛG\?d vÝ2Æè @  fÜH\?d @v_£Ñ6 @  fÝI\?d €v ¸>o @  fÞJ\?d Àv))± @  fßK\?d ‘viöMŒ @  fàL\?d @‘vëgZR @  fáM\?d €‘v¹|µ  @  fâN\?d€ À‘vO.¾s @  gO\?d ’vO ‚B @  gP\?d @’vÍ1•œ @  gQ\?d €’vZc( @  gR\?d À’vØò–ö @  gS\?d “vL8´á @  gT\?d @“vΩ£? @  gU\?d €“vR @  gV\?d À“vБ @  g W\?d ”vMº @  g X\?d @”v—Ü­Ë @  g Y\?d €”v޹ @  g Z\?d À”v‚®¡ @  g [\?d •vÕŒ¶ @  g\\?d @•v”D›h @  g]\?d €•v¥L« @  g^\?d À•v'Ýu @  g_\?d –vžì´\ @  g`\?d @–v}£‚ @  ga\?d €–v‹/·6 @  gb\?d À–v ¾ è @  gc\?d —vt‚ÿ @  gd\?d @—vå•! @  ge\?d €—vƒL% @  gf\?d À—vÝ2Ü @  gg\?d ˜vé°ó @  gh\?d @˜vk!äÇ @  gi\?d €˜vüsðs @  gj\?d À˜v~âç­ @  gk\?d ™vê(ź @  gl\?d @™vh¹Òd @  gm\?d €™vH·{ @  g n\?d À™vÊ&lÉ @  g!o\?d švî ã< @  g"p\?d @švl1ôâ @  g#q\?d €švûcàV @  g$r\?d Àšvyò÷ˆ @  g%s\?d ›ví8ÕŸ @  g&t\?d @›vo©ÂA @  g'u\?d €›vórb @  g(v\?d À›vq‘e¼ @  g)w\?d œv´MÛk @  g*x\?d @œv6Ü̵ @  g+y\?d €œv¡ŽØ @  g,z\?d Àœv#Ïß @  g-{\?d v·ÕíÈ @  g.|\?d @v5Dú @  g/}\?d €vLtÕ @  g0~\?d Àv†Ýc  @  g1\?d žvÒz”¡ @  g2€\?d @žvPëƒ @  g3\?d €žvǹ—Ë @  g4‚\?d ÀžvE(€ @  g5ƒ\?d ŸvÑ⢠@  g6„\?d @ŸvSsµÜ @  g7…\?d €ŸvÏÚÿ @  g8†\uРv?d ÀŸvMK! @  g9‡\?d  v"{fJ @  g:ˆ\?d X v êq” @  g;‰\?d ˜ v7¸e  @  g<Š\?d Ø vµ)rþ @  g=‹\?d ¡v!ãPé @  g>Œ\?d X¡v£rG7 @  g?\?d ˜¡v-{èÖ @  g@Ž\?d Ø¡v¯êÿ @  gA\?d ¢v‹lpý @  gB\?d X¢v ýg# @  gC‘\?d ˜¢vž¯s— @  gD’\?d Ø¢v>dI @  gE“\?d £vˆôF^ @  gF”\?d X£v eQ€ @  gG•\?d ˜£v–Ìᣠ@  gH–\?d Ø£v]ö} @  gI—\?d ¤vÑHª @  gJ˜\?d X¤vS_t @  gK™\?d ˜¤vÄBKÀ @  gLš\?d ؤvFÓ\ @  gM›\?d ¥vÒ~  @  gNœ\?d X¥vPˆi× @  gO\?d ˜¥va€ç @  gPž\?d Ø¥vãðÊ @  gQŸ\?d ¦vZ Fã @  gR \?d X¦vرQ= @  gS¡\?d ˜¦vOãE‰ @  gT¢\?d ئvÍrRW @  gU£\?d §vY¸p@ @  gV¤\?d X§vÛ)gž @  gW¥\?d ˜§vG€×½ @  gX¦\?d اvÅÀc @  gY§\?d ¨v-|¦ @  gZ¨\?d X¨v¯íx @  g[©\?d ˜¨v8¿Ì @  g\ª\?d بvº. @  g]«\?d ©v.ä7 @  g^¬\?d X©v¬u Û @  g_­\?d ˜©vŒ{‰¨ @  g`®\?d Ø©vêžv @  ga¯\?d ªv*lƒ @  gb°\?d Xªv¨ý] @  gc±\?d ˜ªv?¯é @  gd²\?d تv½>7 @  ge³\?d «v)ô'  @  gf´\?d X«v«e0þ @  ggµ\?d ˜«v7Ì€Ý @  gh¶\?d Ø«vµ]— @  gi·\?d ¬vp)Ô @  gj¸\?d X¬vò>  @  gk¹\?d ˜¬veB*¾ @  glº\?d جvçÓ=` @  gm»\?d ­vsw @  gn¼\?d X­vñˆ© @  go½\?d ˜­vÀ€†j @  gp¾\?d Ø­vB‘´ @  gq¿\?d ®v p2Œ @  grÀ\?d X®v‰á%R @  gsÁ\?d ˜®v³1æ @  gtÂ\?d Ø®vœ"&8 @  guÃ\?d ¯vè/ @  gvÄ\?d X¯vŠyñ @  gwÅ\?d ˜¯vУÒ @  gxÆ\?d دv”A´  @  gyÇ\?d °vö Ef @  gzÈ\?d X°vtœR¸ @  g{É\?d ˜°vãÎF  @  g|Ê\?d ذva_QÒ @  g}Ë\?d ±võ•sÅ @  g~Ì\?d X±vwd @  gÍ\?d ˜±v[ûË @  g€Î\?d رv˜Êì @  gÏ\?d ²v¼Lcà @  g‚Ð\?d X²v>Ýt> @  gƒÑ\?d ˜²v©`Š @  g„Ò\?d زv+wT @  g…Ó\?d ³v¿ÔUC @  g†Ô\?d X³v=EB @  g‡Õ\?d ˜³v¡ìò¾ @  gˆÖ\?d سv#}å` @  g‰×\?d ´væ¡[· @  gŠØ\?d X´vd0Li @  g‹Ù\?d ˜´vóbXÝ @  gŒÚ\?d Ø´vqóO @  gÛ\?d µvå9m @  gŽÜ\?d Xµvg¨zÊ @  gÝ\?d ˜µvV ô  @  gÞ\?d صvÔ1ã× @  g‘ß\?d ¶vmUþ @  g’à\?d X¶vï‘B  @  g“á\?d ˜¶vxÃV” @  g”â\?d ضvúRAJ @  g•ã\?d ·vn˜c] @  g–ä\?d X·vì tƒ @  g—å\?d ˜·vp Ä  @  g˜æ\?d Ø·vò1Ó~ @  g™ç\?d ¸v\» @  gšè\?d X¸v˜Íe @  g›é\?d ˜¸vŸÑ @  gœê\?d ظv @  gë\?d ¹vÄ$ @  gžì\?d X¹v›U3Æ @  gŸí\?d ˜¹v»[šµ @  g î\?d عv9Êk @  g¡ï\?d ºvLž @  g¢ð\?d XºvŸÝ@ @  g£ñ\?d ˜ºvô @  g¤ò\?d غvŠ* @  g¥ó\?d »vÔ4= @  g¦ô\?d X»vœE#ã @  g§õ\?d ˜»vì“À @  g¨ö\?d Ø»v‚}„ @  g©÷\?d ¼vG¡:É @  gªø\?d X¼vÅ0- @  g«ù\?d ˜¼vRb9£ @  g¬ú\?d ؼvÐó.} @  g­û\?d ½vD9 j @  g®ü\?d X½vƨ´ @  g¯ý\?d ˜½v÷ •w @  g°þ\?d ؽvu1‚© @  g±ÿ\?d ¾v^ñ  @  g²]?d X¾vÜ`7Ñ @  g³]?d ˜¾vK2#e @  g´]?d ؾvÉ£4» @  gµ]?d ¿v]i¬ @  g¶]?d X¿vßør @  g·]?d ˜¿vCQ±Q @uÐÀv  g¸]?d Ø¿vøzZ @  g¹ ]?d 0Àv@efÐ @  gº ]?d pÀvÂôq @  g»  ]?d °ÀvU¦eº @  g¼  ]?d ðÀv×7rd @  g½  ]?d 0ÁvCýPs @  g¾  ]?d pÁvÁlG­ @  g¿  ]?d °ÁvOeèL @  gÀ ]?d ðÁvÍôÿ’ @  gÁ ]?d 0Âvérpg @  g ]?d pÂvkãg¹ @  gà ]?d °Âvü±s  @  gÄ ]?d ðÂv~ dÓ @  gÅ ]?d 0ÃvêêFÄ @  gÆ ]?d pÃvh{Q @  gÇ ]?d °ÃvôÒá9 @  gÈ ]?d ðÃvvCöç @  gÉ ]?d 0Äv³ŸH0 @  gÊ ]?d pÄv1_î @  gË ]?d °Äv¦\KZ @  gÌ ]?d ðÄv$Í\„ @  gÍ ]?d 0Åv°~“ @  gÎ ]?d pÅv2–iM @  gÏ ]?d °ÅvžçŽ @  gÐ ]?d ðÅvðP @  gÑ ]?d 0Æv8>Fy @  gÒ  ]?d pÆvº¯Q§ @  gÓ !]?d °Æv-ýE @  gÔ "]?d ðÆv¯lRÍ @  gÕ #]?d 0Çv;¦pÚ @  gÖ $]?d pÇv¹7g @  g× %]?d °Çv%ž×' @  gØ &]?d ðÇv§Àù @  gÙ ']?d 0ÈvOb< @  gÚ (]?d pÈvÍóâ @  gÛ )]?d °ÈvZ¡V @  gÜ *]?d ðÈvØ0ˆ @  gÝ +]?d 0ÉvLú7Ÿ @  gÞ ,]?d pÉvÎk A @  gß -]?d °Évîe‰2 @  gà .]?d ðÉvlôžì @  gá /]?d 0ÊvHr @  gâ 0]?d€ pÊvây• @  h 1]?d °Êv”jN @  h 2]?d ðÊvûYÖ @  h 3]?d 0ËvGx€, @  h 4]?d pËvÅé—ò @  h 5]?d °Ëv—òx« @  h 6]?d ðËvcou @  h 7]?d 0Ìv ŽØ @  h 8]?d pÌvœœ™ @  h 9]?d °Ìv·v_ @  h :]?d ðÌvLa @  h ;]?d 0Ív•¸{ @  h <]?d pÍvŸ¯¥ @  h =]?d °ÍvÍ@ü @  h >]?d ðÍvOŽW" @  h ?]?d 0Îveü•€ @  h @]?d pÎvçm‚^ @  h A]?d °Îvµvm @  h B]?d ðÎv7çzÙ @  h C]?d 0Ïvfd£# @  h D]?d pÏväõ´ý @  h E]?d °Ïv¶î[¤ @  h F]?d ðÏv4Lz @  h G]?d 0Ðv˜âj @  h H]?d pÐvõ´ @  h I]?d °ÐvH í @  h J]?d ðÐvÊš 3 @  h K]?d 0Ñv›ÔÉ @  h L]?d pÑvˆÃ @  h M]?d °ÑvK“,N @  h N]?d ðÑvÉ; @  h O]?d 0ÒvŸ‘òO @  h P]?d pÒvå‘ @  h! Q]?d °ÒvO È @  h" R]?d ðÒvÍŠ @  h# S]?d 0Óvœ Äì @  h$ T]?d pÓv˜Ó2 @  h% U]?d °ÓvLƒ n]?d ðÙvhZî @  h? o]?d 0Úv–•£ @  h@ p]?d pÚv‚} @  hA q]?d °Úv@m$ @  hB r]?d ðÚvÂzú @  hC s]?d 0Ûv“£ @  hD t]?d pÛvŸ´Þ @  hE u]?d °ÛvC„[‡ @  hF v]?d ðÛvÁLY @  hG w]?d 0ÜvÊ{­ô @  hH x]?d pÜvHêº* @  hI y]?d °ÜvñUs @  hJ z]?d ðÜv˜`B­ @  hK {]?d 0ÝvÉã›W @  hL |]?d pÝvKrŒ‰ @  hM }]?d °ÝvicÐ @  hN ~]?d ðÝv›øt @  hO ]?d 0Þv¬Lâ> @  hP €]?d pÞv.Ýõà @  hQ ]?d °Þv|ƹ @  hR ‚]?d ðÞvþW g @  hS ƒ]?d 0ßv¯ÔÔ @  hT „]?d pßv-EÃC @  hU …]?d uÐàv/°ßv^, @  hV †]?d ðßv¡Ä @  hW‡]?d Hàv %L @  hXˆ]?d ˆàv-ÐNn @  hY‰]?d Èàvݯ´ @  hZŠ]?d áv ç8ÿ @  h[‹]?d Háv½z3 @  h\Œ]?d ˆáv.HxÍ @  h]]?d ÈávÞ7‚´ @  h^Ž]?d âvCs"u @  h_]?d Hâv 5\µ @  h`]?d ˆâv*À^K @  ha‘]?d ÈâvÚ¿¤2 @  hb’]?d ãv ÷(Ú @  hc“]?d Hãv ­j @  hd”]?d ˆãv)Xhè @  he•]?d ÈãvÙ'’‘ @  hf–]?d ävÀiaž @  hg—]?d HävPØdâ @  hh˜]?d ˆävp-f @  hi™]?d Èäv€Rœe @  hjš]?d åvP @  hk›]?d HåvS@RA @  hlœ]?d ˆåvsµP¿ @  hm]?d ÈåvƒÊªÆ @  hnž]?d ævŽ  @  hoŸ]?d HævÛyj« @  hp ]?d ˆævûŒhU @  hq¡]?d Èæv ó’, @  hr¢]?d çvÛ»Ä @  hs£]?d HçvØá\ @  ht¤]?d ˆçvø^ö @  hu¥]?d Èçvk¤ @  hv¦]?d èv<”(’ @  hw§]?d Hèv¬%-î @  hx¨]?d ˆèvŒÐ/ @  hy©]?d Èèv|¯Õi @  hzª]?d év¬çY @  h{«]?d Hév¯½M @  h|¬]?d ˆévH³ @  h}­]?d Èév7ãÊ @  h~®]?d êvâsC  @  h¯]?d Hêvæd h @  h€°]?d ˆêvÆ‘ – @  h±]?d Èêv6îóï @  h‚²]?d ëvæ¦ @  hƒ³]?d Hëvåü=Ë @  h„´]?d ˆëvÅ ?5 @  h…µ]?d Èëv5vÅL @  h†¶]?d ìv,86C @  h‡·]?d Hìv¼‰3? @  hˆ¸]?d ˆìvœ|1Á @  h‰¹]?d Èìvl˸ @  hŠº]?d ív¼KGP @  h‹»]?d Hív¿œ @  hŒ¼]?d ˆívŸäb @  h½]?d Èívo›ý @  h޾]?d îvòß]Ú @  h¿]?d HîvÇx(g @  hÀ]?d ˆîvç*™ @  h‘Á]?d ÈîvòÐà @  h’Â]?d ïvǺ\ @  h“Ã]?d HïvÄàÄ @  h”Ä]?d ˆïvä: @  h•Å]?d ÈïvjæC @  h–Æ]?d ðvª´Zñ @  h—Ç]?d Hðv:_ @  h˜È]?d ˆðvð]s @  h™É]?d Èðvê§  @  hšÊ]?d ñv:Ç+â @  h›Ë]?d Hñv9i. @  hœÌ]?d ˆñvhkÐ @  hÍ]?d Èñvé‘© @  hžÎ]?d òvtS1h @  hŸÏ]?d Hòv=O¨ @  h Ð]?d ˆòvàMV @  h¡Ñ]?d Èòvퟷ/ @  h¢Ò]?d óv=×;Ç @  h£Ó]?d Hóv>y  @  h¤Ô]?d ˆóvx{õ @  h¥Õ]?d ÈóvîŒ @  h¦Ö]?d ôv÷Irƒ @  h§×]?d Hôvgøwÿ @  h¨Ø]?d ˆôvG u @  h©Ù]?d Èôv·rx @  hªÚ]?d õvg: @  h«Û]?d Hõvd`A\ @  h¬Ü]?d ˆõvD•C¢ @  h­Ý]?d Èõv´ê¹Û @  h®Þ]?d öv)® @  h¯ß]?d HövìYy¶ @  h°à]?d ˆöv̬{H @  h±á]?d Èöv<Ó1 @  h²â]?d ÷vì› Ù @  h³ã]?d H÷vïÁO @  h´ä]?d ˆ÷vÏ4Më @  hµå]?d È÷v?K·’ @  h¶æ]?d øv ´; @  h·ç]?d Høv›>ó @  h¸è]?d ˆøv»ð<  @  h¹é]?d ÈøvKÆt @  hºê]?d ùv›ÇJœ @  h»ë]?d Hùv˜P @  h¼ì]?d ˆùv¸h ® @  h½í]?d ÈùvHð× @  h¾î]?d úvÕSP @  h¿ï]?d Húv2(D @  hÀð]?d ˆúvç*º @  hÁñ]?d Èúvâ˜Ðà @  hÂò]?d ûv2Ð\+ @  hÃó]?d Hûv1Šç @  hÄô]?d ˆûv @  hÅõ]?d Èûváæ` @  hÆö]?d üvøNo @  hÇ÷]?d Hüvhÿ @  hÈø]?d ˆüvH í @  hÉù]?d Èüv¸uè” @  hÊú]?d ývh=d| @  hËû]?d Hývkg&° @  hÌü]?d ˆývK’$N @  hÍý]?d Èýv»íÞ7 @  hÎþ]?d þv&©~ö @  hÏÿ]?d HþvÃ?ð @  hÐ^?d ˆþvãx= @  hÑ^?d ÈþvÇw @  hÒ^?d ÿvÃOKŸ @  hÓ^?d HÿvÀ S @  hÔ^?d ˆÿvàà ­ @  hÕuÐw^?d ÈÿvëñÊÔ @  hÖ ^?d w¤Eâ% @  h× ^?d `w4ôçY @  hØ ^?d  wå§ @  hÙ  ^?d àwä~Þ @  hÚ  ^?d w46“6 @  hÛ  ^?d `w7lÑú @  hÜ  ^?d  w™Ó @  hÝ  ^?d àwçæ)} @  hÞ ^?d wz¢‰¼ @  hß ^?d `w3ä÷| @  hà ^?d  wõ‚ @  há ^?d àwãnû @  hâ ^?d€ wG埵 @  i ^?d `w¥þ•P @  i ^?d  w¼ÌK{ @  i^?d àw‰úJï @  i^?d w´¹à @  i^?d `wηãæ @  i^?d  wîBá @  i^?d àwÐD @  i^?d wÇÈó @  i ^?d `wÆÔqÒ @  i ^?d  wæ!s, @  i ^?d àwÓr¸ @  i ^?d wNSÒy @  i ^?d `wè·ÓO @  i ^?d  wÈBѱ @  i!^?d àw[.JR @  i"^?d w‹fƺ @  i#^?d `wMu› @  i$^?d  wm€}e @  i%^?d àwX¶|ñ @  i&^?d wlIðì @  i'^?d `w2Jªê @  i(^?d  w¿¨ @  i)^?d àw,r  @  i*^?d wü:ÿ @  i+^?d ` w:)8Þ @  i,^?d   wÜ:  @  i-^?d à w/ê;´ @  i.^?d w²®›u @  i/^?d ` w‰ý£Ÿ @  i0^?d   w©¡a @  i1^?d à w+b2 @  i 2^?d wû*‘Ú @  i!3^?d ` w=9(û @  i"4^?d   wÌ* @  i#5^?d à w(ú+‘ @  i$6^?d w1´Øž @  i%7^?d ` wo·‚˜ @  i&8^?d   wOB€f @  i'9^?d à wq%e @  i(:^?d w¡Ç© @  i);^?d ` wgÔ¬ @  i*<^?d   wG!R @  i+=^?d à wrÆ @  i,>^?d wïS³ @  i-?^?d `w¹ç§  @  i.@^?d  w™¥Þ @  i/A^?d àw ~>= @  i0B^?d wÚ6²Õ @  i1C^?d `w% ô @  i2D^?d  w<Ð  @  i3E^?d àw æž @  i4F^?d w·8´, @  i5G^?d `wé;î* @  i6H^?d  wÉÎìÔ @  i7I^?d àw÷I× @  i8J^?d w'KÅ? @  i9K^?d `wœØb @  i:€L^?d  w¼- œ @  i;€M^?d àw‰  @  i<€N^?d w_¬É @  i=€O^?d `w/ ”# @  i>€P^?d  wù–Ý @  i?€Q^?d àw#”, @  i@€R^?d wóÜ ô @  iA€S^?d `w5ÏÕ @  iB€T^?d  w:+ @  iC€U^?d àw ¿ @  iD€V^?d w9Bé° @  iE€W^?d `wgA³¶ @  iF€X^?d  wG´±H @  iG€Y^?d àwyyK @  iH€Z^?d w©1˜£ @  iI€[^?d `wo"!‚ @  iJ€\^?d  wO×#| @  iK€]^?d àwzá"è @  iL€^^?d w祂) @  iM€_^?d `wAAƒ @  iN€`^?d  wa´á @  iO€a^?d àwòØ @  iP€b^?d w"–ê @  iQ€c^?d `wäƒ/Ë @  iR€d^?d  wÄv-5 @  iS€e^?d àwñ@,¡ @  iT€f^?d wÅ¿ ¼ @  iU€g^?d `w›¼úº @  iV€h^?d  w»IøD @  iW€i^?d àw…„]G @  iX€j^?d wUÌѯ @  iY€k^?d `w“ßhŽ @  iZ€l^?d  w³*jp @  i[€m^?d àw†kä @  i\€n^?d wXË% @  i]€o^?d `w óÏ @  i^€p^?d  wþñ1 @  i_€q^?d àw‚”Mb @  i`€r^?d wRÜÁŠ @  ia€s^?d `w”Ïx« @  ib€t^?d  w´:zU @  ic€u^?d àw {Á @  id€v^?d w˜BˆÎ @  ie€w^?d `wÆAÒÈ @  if€x^?d  wæ´Ð6 @  ig€y^?d àwØyu5 @  ih€z^?d w1ùÝ @  ii€{^?d `wÎ"@ü @  ij€|^?d  wî×B @  ik€}^?d àwÛáC– @  il€~^?d wF¥ãW @  im€^?d `w ×£â @  in€€^?d  w-"¡ @  io€^?d àw¾N:ÿ @  ip€‚^?d wn¶ @  iq€ƒ^?d `w¨6 @  ir€„^?d  wˆà ÈuÐ w @  is€…^?d àwÀV  @  it†^?d 8 w±]¡F @  iu‡^?d x wï^û@ @  ivˆ^?d ¸ wÏ«ù¾ @  iw‰^?d ø wñf\½ @  ixŠ^?d 8!w!.ÐU @  iy‹^?d x!wç=it @  izŒ^?d ¸!wÇÈkŠ @  i{^?d ø!wòþj @  i|Ž^?d 8"woºÊß @  i}^?d x"wTéò5 @  i~^?d ¸"wtðË @  i‘^?d ø"w»'z; @  i€’^?d 8#wkoöÓ @  i“^?d x#w­|Oò @  i‚”^?d ¸#w‰M  @  iƒ•^?d ø#w¸¿L˜ @  i„–^?d 8$w¡ñ¿— @  i…—^?d x$wÿòå‘ @  i†˜^?d ¸$wßço @  i‡™^?d ø$wáÊBl @  iˆš^?d 8%w1‚΄ @  i‰›^?d x%w÷‘w¥ @  iŠœ^?d ¸%w×du[ @  i‹^?d ø%wâRtÏ @  iŒž^?d 8&wÔ @  iŸ^?d x&wÙòÕ8 @  iŽ ^?d ¸&wùׯ @  i¡^?d ø&wjkL% @  i¢^?d 8'wº#ÀÍ @  i‘£^?d x'w|0yì @  i’¤^?d ¸'w\Å{ @  i“¥^?d ø'wióz† @  i”¦^?d 8(w] ö› @  i•§^?d x(w¬ @  i–¨^?d ¸(w#ú®c @  i—©^?d ø(w7 ` @  i˜ª^?d 8)w͇ˆ @  i™«^?d x)w l>© @  iš¬^?d ¸)w+™ @  iÓå^?d ø7w½…Yª @  iÔæ^?d 88w‰zÕ· @  iÕç^?d x8w×y± @  iÖè^?d ¸8w÷ŒO @  i×é^?d ø8wÉA(L @  iØê^?d 89w ¤¤ @  iÙë^?d x9wß… @  iÚì^?d ¸9wÿï{ @  iÛí^?d ø9wÊÙï @  iÜî^?d 8:wW¾. @  iÝï^?d x:wlΆÄ @  iÞð^?d ¸:wL;„: @  ißñ^?d ø:wÎQ8i @  iàò^?d 8;w´ @  iáó^?d x;wØ   @  iâô^?d€ ¸;w9¸ø^ @  jõ^?d ø;wíϱã @  jö^?d 8áù @  jù^?d øwWæZ  @  j €ÿ^?d x>w¦º´] @  j €_?d ¸>w†O¶£ @  j €_?d ø>wv0LÚ @  j€_?d 8?w¦xÀ2 @  j€_?d x?wx‰ @  j€_?duÐ@w7 ¸?w#w @  j€_?d ø?wÓòà @  j€_?d P@w^Z2 @  j€_?d @w)pîù @  j€_?d Ð@w«áù' @  j€ _?d Aw G˜h @  j€ _?d PAw‹Ö¶ @  j€ _?d Aw!|Í @  j€ _?d ÐAw£‚k @  j€ _?d BwL(&u @  j€_?d PBwι1« @  j€_?d Bw’ÇçŒ @  j€_?d ÐBwVðR @  j€_?d Cw²ð‘ @  j€_?d PCw0a†Ã @  j€_?d Cw&lè @  j €_?d ÐCw¤’{6 @  j!€_?d DwÏ2ež @  j"€_?d PDwM£r@ @  j#€_?d DwtÆ‹ @  j$€_?d ÐDwöÑU @  j%€_?d EwTº° @  j&€_?d PEwÖ+§Ä @  j'€_?d Ew|îT¿ @  j(€_?d ÐEwþCa @  j)€_?d FwÕ @  j*€_?d PFw“DÙ @  j+€_?d FwRö" @  j,€ _?d ÐFwÐáü @  j-€!_?d Gwrº€³ @  j.€"_?d PGwð+—m @  j/€#_?d Gw÷OZö @  j0€$_?d ÐGwuÞM( @  j1€%_?d Hw3Ï,’ @  j2€&_?d PHw±^;L @  j3€'_?d Hwˆp‡ @  j4€(_?d ÐHw á˜Y @  j5€)_?d Iw¨Gù @  j6€*_?d PIw*ÖîÈ @  j7€+_?d Iw€³ @  j8€,_?d ÐIw‚ m @  j9€-_?d Jwí(G  @  j:€._?d PJwo¹PÕ @  j;€/_?d Jw3džò @  j<€0_?d ÐJw±V‘, @  j=€1_?d Kwððc @  j>€2_?d PKw‘aç½ @  j?€3_?d Kw)  @  j@€4_?d ÐKw«•Ú @  jA€5_?d LwÀ5r @  jB€6_?d PLwB¤¬ @  jC€7_?d Lw{Š¡g @  jD€8_?d ÐLwù¶¹ @  jE€9_?d Mw[½×ö @  jF€:_?d PMwÙ,À( @  jG€;_?d Mwsé3S @  jH€<_?d ÐMwñx$ @  jI€=_?d NwÒië @  jJ€>_?d PNwœC~5 @  jK€?_?d Nw­Ú„ß @  jL€@_?d ÐNw/K“ @  jM€A_?d OwíòN @  jN€B_?d POw|å @  jO€C_?d Ow(  @  jP€D_?d ÐOwЉ?Õ @  jQ€E_?d PwF¹nÀ @  jR€F_?d PPwÄ(y @  jS€G_?d PwýÍÕ @  jT€H_?d ÐPw—Ú  @  jU€I_?d QwÝ1»D @  jV€J_?d PQw_ ¬š @  jW€K_?d Qwõe_á @  jX€L_?d ÐQwwôH? @  jY€M_?d Rw˜^Y @  jZ€N_?d PRwχ @  j[€O_?d RwF±Ä  @  j\€P_?d ÐRwÄ Ó~ @  j]€Q_?d Swf†²1 @  j^€R_?d PSwä¥ï @  j_€S_?d SwòuOÄ @  j`€T_?d ÐSwpäX @  ja€U_?d TwDF² @  jb€V_?d PTw™ÕQl @  jc€W_?d Tw ûå§ @  jd€X_?d ÐTw"jòy @  je€Y_?d Uw€Ì“6 @  jf€Z_?d PUw]„è @  jg€[_?d Uw¨˜w“ @  jh€\_?d ÐUw* `M @  ji€]_?d VwÅ£-+ @  jj€^_?d PVwG2:õ @  jk€__?d Vw†ûÕ @  jl€`_?d ÐVwjÂÐ @  jm€a_?d Ww¦Ì£Ÿ @  jn€b_?d PWw$]´A @  jo€c_?d Ww#9yÚ @  jp€d_?d ÐWw¡¨n @  jq€e_?d Xwç¹¾ @  jr€f_?d PXwe(` @  js€g_?d Xw\¬« @  jt€h_?d ÐXwÞ—»u @  ju€i_?d Yw|1Ú: @  jv€j_?d PYwþ Íä @  jw€k_?d YwTe>Ÿ @  jx€l_?d ÐYwÖô)A @  jy€m_?d Zw9^d' @  jz€n_?d PZw»Ïsù @  j{€o_?d Zwç±¥Þ @  j|€p_?d ÐZwe ² @  j}€q_?d [wdžÓO @  j~€r_?d P[wEÄ‘ @  j€s_?d [w$ @  j€€t_?d Ð[wœµÇ @  j€u_?d \w÷o @  j‚€v_?d P\wu„± @  jƒ€w_?d \wLª²z @  j„€x_?d Ð\wÎ;¥¤ @  j…€y_?d ]wlÄë @  j†€z_?d P]wî Ó5 @  j‡€{_?d ]wDÉ N @  jˆ€|_?d Ð]wÆX7 @  j‰€}_?d ^w)òzö @  jŠ€~_?d P^w«cm( @  j‹€_?d ^w‡<ÃP @  jŒ€€_?d Ð^w­ÔŽ @  j€_?d _w§ µÁ @  jŽ€‚_?d P_w%š¢ @  j€ƒ_?d _w"þo„ @  juÐ`w€„_?d Ð_w oxZ @  j‘€…_?d (`wly e @  j’€†_?d h`wîè7» @  j“€‡_?d ¨`wׯƒp @  j”€ˆ_?d è`wUW”® @  j•€‰_?d (aw÷ñõá @  j–€Š_?d hawu`â? @  j—€‹_?d ¨awߥD @  j˜€Œ_?d èaw]4š @  j™€_?d (bw²žKü @  jš€Ž_?d hbw0\" @  j›€_?d ¨bwlqŠ @  jœ€_?d èbwîàÛ @  j€‘_?d (cwLFü” @  jž€’_?d hcwÎ×ëJ @  jŸ€“_?d ¨cwصa @  j €”_?d ècwZ$¿ @  j¡€•_?d (dw1„ @  j¢€–_?d hdw³É @  j£€—_?d ¨dwŠ;« @  j¤€˜_?d èdwª¼Ü @  j¥€™_?d (ewª Ý“ @  j¦€š_?d hew(ÊM @  j§€›_?d ¨ew‚X96 @  j¨€œ_?d èewÉ.è @  j©€_?d (fwïccŽ @  jª€ž_?d hfwmòtP @  j«€Ÿ_?d ¨fw¬;›« @  j¬€ _?d èfw.ªŒu @  j­€¡_?d (gwŒ í: @  j®€¢_?d hgwúä @  j¯€£_?d ¨gw ù7 @  j°€¤_?d ègw‹h ¡ @  j±€¥_?d (hwÍyA @  j²€¦_?d hhwOèVÅ @  j³€§_?d ¨hwvÆâ @  j´€¨_?d èhwôWõÐ @  jµ€©_?d (iwVñ”Ÿ @  j¶€ª_?d hiwÔ`ƒA @  j·€«_?d ¨iw~¥p: @  j¸€¬_?d èiwü4gä @  j¹€­_?d (jwž*‚ @  jº€®_?d hjw‘=\ @  j»€¯_?d ¨jwÍqë{ @  j¼€°_?d èjwOàü¥ @  j½€±_?d (kwíFê @  j¾€²_?d hkwo׊4 @  j¿€³_?d ¨kwײf @  jÀ€´_?d èkwU#qS @  jÁ€µ_?d (lw>ƒoû @  j€¶_?d hlw¼x% @  jÀ·_?d ¨lw…<Ìî @  jÄ€¸_?d èlw­Û0 @  jÅ€¹_?d (mw¥ º @  jÆ€º_?d hmw'š­¡ @  jÇ€»_?d ¨mw_^Ú @  jÈ€¼_?d èmwÎI @  jÉ€½_?d (nwàdb @  jÊ€¾_?d hnwbõ¼ @  jË€¿_?d ¨nwSléV @  jÌ€À_?d ènwÑýþˆ @  jÍ€Á_?d (ows[ŸÇ @  j΀Â_?d howñʈ @  jÏ€Ã_?d ¨owö®E‚ @  jЀÄ_?d èowt?R\ @  jÑ€Å_?d (pw¸I @  jÒ€Æ_?d hpw:ž— @  jÓ€Ç_?d ¨pw° \ @  jÔ€È_?d èpw!·‚ @  jÕ€É_?d (qw#‡ÖÍ @  jÖ€Ê_?d hqw¡Á @  j×€Ë_?d ¨qw Ó2h @  jØ€Ì_?d èqw‰B%¶ @  jÙ€Í_?d (rwfèhÐ @  jÚ€Î_?d hrwäy @  jÛ€Ï_?d ¨rw¸©) @  jÜ€Ð_?d èrw:–¾÷ @  jÝ€Ñ_?d (sw˜0߸ @  jÞ€Ò_?d hsw¡Èf @  j߀Ó_?d ¨sw Ã"M @  jà€Ô_?d èswŽR5“ @  já€Õ_?d (twåò+; @  jâ€Ö_?d€ htw  C @  k€×_?d ¨twËÏÜ¡ @  k€Ø_?d ètwI^Ë @  k€Ù_?d (uw.±QÝ @  k€Ú_?d huw¬ F @  k€Û_?d ¨uwÈWê @  k€Ü_?d èuwJÆýÜ @  k€Ý_?d (vwkÞïÀ @  k€Þ_?d hvwéOø @  k €ß_?d ¨vwíÏì @  k €à_?d èvwo^ûÖ @  k €á_?d (ww±at @  k €â_?d hwwŠ vª @  k €ã_?d ¨wwîWÚ« @  k€ä_?d èwwlÆÍu @  k€å_?d (xwIÄÍU @  k€æ_?d hxwËUÚ‹ @  k€ç_?d ¨xw72•­ @  k€è_?d èxwµ£‚s @  k€é_?d (ywÒLÑ @  k€ê_?d hywPÝ @  k€ë_?d ¨yw4ª£ @  k€ì_?d èyw¶;´Ð @  k€í_?d (zw—#¦Ì @  k€î_?d hzw²± @  k€ï_?d ¨zwŒ…œØ @  k€ð_?d èzw‹ @  k€ñ_?d ({wiû¤ @  k€ò_?d h{wëjz @  k€ó_?d ¨{wª{ @  k€ô_?d è{w Œ½¥ @  k€õ_?d (|w9å' @  k €ö_?d h|w–¨òù @  k!€÷_?d ¨|wjϽß @  k"€ø_?d è|wè^ª @  k#€ù_?d (}w±0£ @  k$€ú_?d h}w '} @  k%€û_?d ¨}wiW‹| @  k&€ü_?d è}wëÆœ¢ @  k'€ý_?d (~wÊÞŽ¾ @  k(€þ_?d h~wHO™` @  k)€ÿ_?d ¨~wo‹ðÄ @  k*€`?d è~wíç @  k+€`?d (wŠõ}¸ @  k,€`?d hwdjf @  k-€`?d ¨wuЀw'lÆg @  k.€`?d èw“¢Å @  k/`?d @€wìAÌŒ @  k0`?d €€w)§ @  k1`?d À€wPs¡ @  k2`?d w€VÿI @  k3 `?d @wµ`þÝ @  k4 `?d €w••ü# @  k5 `?d ÀwS†E @  k6 `?d ‚wÎÂåà @  k7 `?d @‚wð@À @  k8`?d €‚wÐúB> @  k9`?d À‚wë©zÔ @  k:`?d ƒw;áö< @  k;`?d @ƒw×÷¨ @  k<`?d €ƒw."õV @  k=`?d Àƒwè1Lw @  k>`?d „wñ¿x @  k?`?d @„wݹ @  k@`?d €„wýçG @  kA`?d À„w£ä]A @  kB`?d …ws¬Ñ© @  kC`?d @…wFšÐ= @  kD`?d €…wfoÒà @  kE`?d À…w |kâ @  kF`?d †w=8Ë# @  kG`?d @†wõn  @  kH`?d €†w#lÞ @  kI`?d À†w…ämè @  kJ `?d ‡wU¬á @  kK!`?d @‡w`šà” @  kL"`?d €‡w@oâj @  kM#`?d À‡w†|[K @  kN$`?d ˆw²ƒ×V @  kO%`?d @ˆw!ïLµ @  kP&`?d €ˆwNK @  kQ'`?d Àˆw_M @  kR(`?d ‰wQ˜¥ @  kS)`?d @‰wºg™1 @  kT*`?d €‰wš’›Ï @  kU+`?d À‰w\"î @  kV,`?d ŠwÁÅ‚/ @  kW-`?d @Šwÿ', @  kX.`?d €Šwßý%Ò @  kY/`?d ÀŠwä®8 @  kZ0`?d ‹w4æ‘Ð @  k[1`?d @‹wÐD @  k\2`?d €‹w!%’º @  k]3`?d À‹wç6+› @  k^4`?d ŒwþxØ” @  k_5`?d @Œw|dÇ @  k`6`?d €Œw\çf9 @  ka7`?d ÀŒwä`?d €Žw‚   @  ki?`?d ÀŽwÔ´‡ @  kj@`?d wü•o @  kkA`?d @w1Ê”û @  klB`?d €w?– @  kmC`?d Àw×,/$ @  knD`?d wiò“– @  koE`?d @wúžu @  kpF`?d €wÚk ‹ @  kqG`?d Àw„hP @  krH`?d ‘wT Üe @  ksI`?d @‘waÝñ @  ktJ`?d €‘wAãß @  kuK`?d À‘w‡ðf. @  kvL`?d ’w´Æï @  kwM`?d @’w$ycì @  kxN`?d €’wŒa @  kyO`?d À’w?ßYø @  kzP`?d “wï—Õ @  k{Q`?d @“wÚ¡Ô„ @  k|R`?d €“wúTÖz @  k}S`?d À“w @  k‡]`?d @–w4Õ}= @  kˆ^`?d €–w à @  k‰_`?d À–w²Ä~õ @  kŠ``?d —wbŒò @  k‹a`?d @—wWºó‰ @  kŒb`?d €—wwOñw @  kc`?d À—w±\HV @  kŽd`?d ˜w…£ÄK @  ke`?d @˜wÏ_¨ @  kf`?d €˜w6:]V @  k‘g`?d À˜wh9P @  k’h`?d ™w¸q‹¸ @  k“i`?d @™wGŠ, @  k”j`?d €™w­²ˆÒ @  k•k`?d À™wk¡1ó @  k–l`?d šwöå‘2 @  k—m`?d @šwÈ(41 @  k˜n`?d €šwèÝ6Ï @  k™o`?d ÀšwÓŽ% @  kšp`?d ›wÆ‚Í @  k›q`?d @›w6ðƒY @  kœr`?d €›w§ @  ks`?d À›wÐ8† @  kžt`?d œwÉXˉ @  kŸu`?d @œwK2wÚ @  k v`?d €œwkÇu$ @  k¡w`?d Àœw5Ä/" @  k¢x`?d w匣Ê @  k£y`?d @wк¢^ @  k¤z`?d €wðO   @  k¥{`?d Àw6\ @  k¦|`?d žw«¹@ @  k§}`?d @žw•ÕC @  k¨~`?d €žwµ ½ @  k©`?d ÀžwþR^ @  kª€`?d Ÿw.Òà @  k«`?d @Ÿw,Ót @  k¬‚`?d €Ÿw;ÙÑŠ @  k­ƒ`uРw?d ÀŸwýÊh« @  k®„`?d  wNhQ @  k¯…`?d X wÝÊû @  k°†`?d ˜ wýñÈ @  k±‡`?d Ø w£ò’ @  k²ˆ`?d ¡wsºë @  k³‰`?d X¡wFŒ @  k´Š`?d ˜¡wfy @  kµ‹`?d Ø¡w j¤  @  k¶Œ`?d ¢w=.a @  k·`?d X¢wã¡b @  k¸Ž`?d ˜¢w#£œ @  k¹`?d Ø¢wE›v @  kº`?d £wÈ ž @  k»‘`?d X£wý;  @  k¼’`?d ˜£wÝÎô @  k½“`?d Ø£wÝ­Õ @  k¾”`?d ¤w“^Ú @  k¿•`?d X¤w.þä @  kÀ–`?d ˜¤w æå @  kÁ—`?d ؤwP¼ã @  k˜`?d ¥w€@0  @  kÙ`?d X¥wµv1Ÿ @  kÄš`?d ˜¥w•ƒ3a @  kÅ›`?d Ø¥wSŠ@ @  kÆœ`?d ¦wÎÔ* @  kÇ`?d X¦wð‚ @  kÈž`?d ˜¦wÐì| @  kÉŸ`?d ئwvŒJ @  kÊ `?d §w¦@¢ @  kË¡`?d X§w“v6 @  kÌ¢`?d ˜§w³ƒÈ @  kÍ£`?d اwuºé @  kΤ`?d ¨wAo6ô @  kÏ¥`?d X¨wÒ­ @  kЦ`?d ˜¨wòö¯é @  kѧ`?d بw¬õõï @  kÒ¨`?d ©w|½y @  kÓ©`?d X©wI‹x“ @  kÔª`?d ˜©wi~zm @  kÕ«`?d Ø©w¯mÃL @  kÖ¬`?d ªw2)c @  k×­`?d Xªw äÆŽ @  kØ®`?d ˜ªw,Äp @  kÙ¯`?d تwBüš @  kÚ°`?d «wÇ pr @  kÛ±`?d X«wòa @  l)á`?d X·wŽÄ @  l*â`?d ˜·w®åÆæ @  l+ã`?d Ø·w­¿„* @  l,ä`?d ¸w™@7 @  l-å`?d X¸wi?òN @  l.æ`?d ˜¸wIÊð° @  l/ç`?d ظwtÚË, @  l0è`?d ¹w¤’GÄ @  l1é`?d X¹wTí½½ @  l2ê`?d ˜¹wt¿C @  l3ë`?d عwwBý @  l4ì`?d ºwê]N @  l5í`?d Xºwy§7 @  l6î`?d ˜ºw:Œ¥É @  l7ï`?d غwÏmÂY @  l8ð`?d »w%N± @  l9ñ`?d X»wïZ´È @  l:ò`?d ˜»wϯ¶6 @  l;ó`?d Ø»wÌõôú @  l<ô`?d ¼wÕ»õ @  l=õ`?d X¼w%ÄýŒ @  l>ö`?d ˜¼w1ÿr @  l?÷`?d ؼw‡ åÌ @  l@ø`?d ½wWhi$ @  lAù`?d X½w§“] @  lBú`?d ˜½w‡â‘£ @  lCû`?d ؽw„¸Óo @  lDü`?d ¾wüs® @  lEý`?d X¾w郉× @  lFþ`?d ˜¾wÉv‹) @  lGÿ`?d ؾw3ÑÁê @  lHa?d ¿wã™M @  lIa?d X¿wæ·{ @  lJa?d ˜¿w3µ… @uÐÀw  lKa?d Ø¿w0I÷I @  lLa?d 0ÀwT¹¦ @  lMa?d pÀw¤Æ\b @  lNa?d °Àw„3^œ @  lOa?d ðÀw¹#e @  lPa?d 0Áwikéè @  lQ a?d pÁw™‘ @  lR a?d °Áw¹áo @  lS a?d ðÁwº»S£ @  lT a?d 0Âw'ÿób @  lU a?d pÂw×€  @  lVa?d °Âw÷u å @  lWa?d ðÂw”lu @  lXa?d 0ÃwÒÜà @  lYa?d pÃw"£ä @  lZa?d °ÃwV @  l[a?d ðÃw ZÖ @  l\a?d 0ÄwB©Ù @  l]a?d pÄwè=S  @  l^a?d °ÄwÈÈQ^ @  l_a?d ðÄwäÞMr @  l`a?d 0Åw4–Áš @  laa?d pÅwÄé;ã @  lba?d °Åwä9 @  lca?d ðÅwçF{Ñ @  lda?d 0ÆwzÛ @  lea?d pÆwŠ}!i @  lfa?d °Æwªˆ#— @  lga?d ðÆwÂÞ}Û @  lh a?d 0Çw–ñ3 @  li!a?d pÇwâé J @  lj"a?d °Çw ´ @  lk#a?d ðÇwÁFKx @  ll$a?d 0Èwõ¹Çe @  lm%a?d pÈwÆ= @  ln&a?d °Èw%3?â @  lo'a?d ðÈw#~ @  lp(a?d 0ÉwÈkˆ– @  lq)a?d pÉw8rï @  lr*a?d °Éwáp @  ls+a?d ðÉw»2Ý @  lt,a?d 0Êw†ÿ’ @  lu-a?d pÊwv€he @  lv.a?d °ÊwVuj› @  lw/a?d ðÊw£”  @  lx0a?d 0ËwsÜã @  ly1a?d pËwƒ£{š @  lz2a?d °Ëw£Vyd @  l{3a?d ðËw  ;¨ @  l|4a?d 0Ìw¹Bȧ @  l}5a?d pÌwI=2Þ @  l~6a?d °ÌwiÈ0  @  l7a?d ðÌw¯ @  l€8a?d 0ÍwØÇ–G @  l9a?d pÍw(¸l> @  l‚:a?d °ÍwMnÀ @  lƒ;a?d ðÍw ,  @  l„a?d °ÎwFÙtJ @  l‡?a?d ðÎwÞß? @  lˆ@a?d 0Ïw—³ÿ @  l‰Aa?d pÏwþèI† @  lŠBa?d °ÏwÞKx @  l‹Ca?d ðÏwÝG ´ @  lŒDa?d 0Ðwc™µ @  lEa?d pÐw“æO @  lŽFa?d °Ðw³M @  lGa?d ðÐwŽv @  lHa?d 0Ñw^Kúõ @  l‘Ia?d pÑw®4Œ @  l’Ja?d °ÑwŽÁr @  l“Ka?d ðÑw›@¾ @  l”La?d 0Òwßà @  l•Ma?d pÒwà  @  l–Na?d °ÒwÀUø @  l—Oa?d ðÒw5´h @  l˜Pa?d 0Ówåüó€ @  l™Qa?d pÓwƒ ù @  lšRa?d °Ów5v  @  l›Sa?d ðÓw6,IË @  lœTa?d 0Ôw/bºÄ @  lUa?d pÔwß@½ @  lžVa?d °ÔwÿèBC @  lŸWa?d ðÔwÓþ^o @  l Xa?d 0Õw¶Ò‡ @  l¡Ya?d pÕwóÉ(þ @  l¢Za?d °ÕwÓ<* @  l£[a?d ðÕwÐfhÌ @  l¤\a?d 0ÖwM"È  @  l¥]a?d pÖw½]2t @  l¦^a?d °Öw¨0Š @  l§_a?d ðÖwõþnÆ @  l¨`a?d 0×w%¶â. @  l©aa?d p×wÕÉW @  lªba?d °×wõ<© @  l«ca?d ð×wöfXe @  l¬da?d 0Øw™Ôx @  l­ea?d pØw2æ. @  l®fa?d °Øw,ÿ @  l¯ga?d ðØw/c @  l°ha?d 0ÙwÿK›‹ @  l±ia?d pÙw4aò @  l²ja?d °Ùw/Ác  @  l³ka?d ðÙw,›!À @  l´la?d 0Úw±ß @  lµma?d pÚwA {x @  l¶na?d °ÚwaUy† @  l·oa?d ðÚw”´ @  l¸pa?d 0ÛwDü’þ @  l¹qa?d pÛw´ƒh‡ @  lºra?d °Ûw”vjy @  l»sa?d ðÛw—,(µ @  l¼ta?d 0ÜwŽbÛº @  l½ua?d pÜw~!à @  l¾va?d °Üw^è#= @  l¿wa?d ðÜwÜù9ƒ @  lÀxa?d 0Ýw ±µk @  lÁya?d pÝwüÎO @  lÂza?d °ÝwÜ;Mì @  lÃ{a?d ðÝwßa  @  lÄ|a?d 0ÞwB%¯á @  lÅ}a?d pÞw²ZU˜ @  lÆ~a?d °Þw’¯Wf @  lÇa?d ðÞwoH© @  lÈ€a?d 0ßwÇ'ÄA @  lÉa?d pßw7X>8 @  lÊ‚a?d uÐàw/°ßw­<Æ @  l˃a?d ðßw÷~  @  lÌ„a?d Hàw S ü @  lÍ…a?d ˆàw_HÏ¥ @  lΆa?d ÈàwÝÙØ{ @  lχa?d áw²xÑ @  lЈa?d Háw0o @  lщa?d ˆáwbš€V @  lÒŠa?d Èáwà —ˆ @  lÓ‹a?d âwü„b[ @  lÔŒa?d Hâw~u… @  lÕa?d ˆâw,šÜ @  lÖŽa?d Èâw®Ÿ @  l×a?d ãw §q¤ @  lØa?d Hãw‹6fz @  lÙ‘a?d ˆãwÙ-‰# @  lÚ’a?d Èãw[¼žý @  lÛ“a?d äwÃ98à @  lÜ”a?d HäwA¨/> @  lÝ•a?d ˆäw³Àg @  lÞ–a?d Èäw‘"×¹ @  lß—a?d åwïíP£ @  là˜a?d Håwm|G} @  lá™a?d ˆåw?g¨$ @  lâša?d€ ÈåwÉ5£\ @  m›a?d æw4û¦ @  mœa?d Hæw¶j x @  ma?d ˆæw!8Ì @  mža?d Èæw£©  @  mŸa?d çwW” @  m a?d HçwÕ‡Ì @  m¡a?d ˆçwI¬7ï @  m¢a?d ÈçwË= 1 @  m £a?d èw»@Ó @  m ¤a?d Hèw9Ñ  @  m ¥a?d ˆèw®ƒ¹ @  m ¦a?d Èèw,g @  m §a?d éw È×W @  m¨a?d Héw¢YÀ‰ @  m©a?d ˆéw“QNJ @  mªa?d ÈéwÀY” @  m«a?d êwÈWª @  m¬a?d HêwJ—@t @  m­a?d ˆêwÝÅTÀ @  m®a?d Èêw_TC @  m¯a?d ëw6Þà @  m°a?d Hëw´O÷ @  m±a?d ˆëw(æG? @  m²a?d ÈëwªwPá @  m³a?d ìw÷»  @  m´a?d Hìwu*Ï @  mµa?d ˆìwâx{ @  m¶a?d Èìw`é¥ @  m·a?d íwl3Ø• @  m¸a?d Híwî¢ÏK @  m¹a?d ˆíwάf8 @  m ºa?d ÈíwL=qæ @  m!»a?d îw•ûØ @  m"¼a?d Hîwjh @  m#½a?d ˆîw€8|² @  m$¾a?d Èîw©kl @  m%¿a?d ïwÄä} @  m&Àa?d Hïw„Uó£ @  m'Áa?d ˆïwüC€ @  m(Âa?d ÈïwšmT^ @  m)Ãa?d ðw`1F @  m*Äa?d Hðwâ QÍ @  m+Åa?d ˆðwuòEy @  m,Æa?d Èðw÷cR§ @  m-Ça?d ñwû¹“— @  m.Èa?d Hñwy(„I @  m/Éa?d ˆñwH Š @  m0Êa?d ÈñwʱT @  m1Ëa?d òwwj @  m2Ìa?d Hòw‘æ´ @  m3Ía?d ˆòw´ @  m4Îa?d Èòw„%Þ @  m5Ïa?d ówí¯¤ @  m6Ða?d Hówo>³Ü @  m7Ña?d ˆówó—ÿ @  m8Òa?d Èówq! @  m9Óa?d ôw,ÊIÑ @  m:Ôa?d Hôw®[^ @  m;Õa?d ˆôw9 J» @  m<Öa?d Èôw»˜]e @  m=×a?d õw·BœU @  m>Øa?d Hõw5Ó‹‹ @  m?Ùa?d ˆõw»Ú$j @  m@Úa?d Èõw9K3´ @  mAÛa?d öwà=Š @  mBÜa?d Höwb*T @  mCÝa?d ˆöwõN>à @  mDÞa?d Èöwwß)> @  mEßa?d ÷wƒâ³> @  mFàa?d H÷ws¤à @  mGáa?d ˆ÷wÚà @  mHâa?d È÷wK @  mIãa?d øwo6!ÿ @  mJäa?d Høwí§6! @  mKåa?d ˆøwzõ"• @  mLæa?d Èøwød5K @  mMça?d ùwô¾ô{ @  mNèa?d Hùwv/㥠@  mOéa?d ˆùwG'mf @  mPêa?d ÈùwŶz¸ @  mQëa?d úwpt† @  mRìa?d HúwžácX @  mSía?d ˆúw ³wì @  mTîa?d Èúw‹"`2 @  mUïa?d ûwâ¨Ãî @  mVða?d Hûw`9Ô0 @  mWña?d ˆûwüd @  mXòa?d Èûw~sÍ @  mYóa?d üw#Í.= @  mZôa?d Hüw¡\9ã @  m[õa?d ˆüw6-W @  m\öa?d Èüw´Ÿ:‰ @  m]÷a?d ýw¸Eû¹ @  m^øa?d Hýw:Ôìg @  m_ùa?d ˆýwÚE @  m`úa?d Èýw˜KRÊ @  maûa?d þwA\ô @  mbüa?d HþwÃK* @  mcýa?d ˆþwTN_ž @  mdþa?d ÈþwÖßH@ @  meÿa?d ÿw1óê @  mfb?d Hÿw€ ä4 @  mgb?d ˆÿw T @  mhuÐxb?d Èÿwž˜CÉ @  mib?d xcÎåå @  mjb?d `xá_ò; @  mkb?d  xv æ @  mlb?d àxôœñQ @  mmb?d xøF0a @  mnb?d `xz×'¿ @  mo b?d  xKß©| @  mp b?d àxÉN¾¢ @  mq b?d xˆ°œ @  mr b?d `x’§B @  ms b?d  xK³ö @  mtb?d àx‡Ú¤( @  mub?d xîPô @  mvb?d `xlÁ* @  mwb?d  xðh   @  mxb?d àxrù·× @  myb?d x/5ê' @  mzb?d `x­¤ýù @  m{b?d  x:öéM @  m|b?d àx¸gþ“ @  m}b?d x´½?£ @  m~b?d `x6,(} @  mb?d  x[s·­ @  m€b?d àxÙâ s @  mb?d x$®M @  m‚b?d `x‚µ¹“ @  mƒb?d  xç­' @  m„b?d àx—vºù @  m…b?d xcK ù @  m† b?d `xáÚ7' @  m‡!b?d  x}s‡ @  mˆ"b?d àxÿâÚ @  m‰#b?d xŸ²8 @  mŠ$b?d `x ¥æ @  m‹%b?d  xš\±R @  mŒ&b?d àxͦŒ @  m'b?d xg¼ @  mŽ(b?d ` x–†pb @  m)b?d   x§Žþ¡ @  m*b?d à x%é @  m‘+b?d xüÙçA @  m’,b?d ` x~HðŸ @  m“-b?d   xéä+ @  m”.b?d à xk‹óõ @  m•/b?d xP) @  m–0b?d ` x€G÷ @  m—1b?d   x9÷Ô @  m˜2b?d à xž¨à  @  m™3b?d xÃd½ú @  mš4b?d ` xAõª$ @  m›5b?d   xÖ§¾ @  mœ6b?d à xT6©N @  m7b?d xXìh~ @  mž8b?d ` xÚ}  @  mŸ9b?d   xúsÖÓ @  m :b?d à xxâÁ  @  m¡;b?d x¡$Ï3 @  m¢b?d àx6vÛ‡ @  m¥?b?d x2T– @  m¦@b?d `x°ŠCH @  m§Ab?d  x,#ók @  m¨Bb?d àx®²äµ @  m©Cb?d xTîöø @  mªDb?d `xÖá& @  m«Eb?d  xA-õ’ @  m¬Fb?d àxüâL @  m­Gb?d xÏf#| @  m®Hb?d `xM÷4¢ @  m¯Ib?d  x|ÿºa @  m°Jb?d àxþn­¿ @  m±Kb?d x'¨£ @  m²Lb?d `x¥9´_ @  m³Mb?d  x2k ë @  m´Nb?d àx°ú·5 @  mµOb?d xÙpé @  m¶Pb?d `x[á7 @  m·Qb?d  xÇH³ @  m¸Rb?d àxEÙ¤Ê @  m¹Sb?d xù: @  mºTb?d `xš„îä @  m»Ub?d  x ÖúP @  m¼Vb?d àxGíŽ @  m½Wb?d xƒ,¾ @  m¾Xb?d `x ;` @  m¿Yb?d  x” @  mÀZb?d àx ”ƒ_ @  mÁ[b?d xÔRa @  mÂ\b?d `xVÚ¿ @  mÃ]b?d  xÁ‘Ž  @  mÄ^b?d àxC™Õ @  mÅ_b?d x·=Õ @  mÆ`b?d `x5¬  @  mÇab?d  x©¤( @  mÈbb?d àx+”³ö @  mÉcb?d x[é‘ @  mÊdb?d `xÙx†Ê @  mËeb?d  xN*’~ @  mÌfb?d àxÌ»…  @  mÍgb?d xÀaD @  mÎhb?d `xBðSN @  mÏib?d  xsøÝ @  mÐjb?d àxñiÊS @  mÑkb?d x(¯Äm @  mÒlb?d `xª>Ó³ @  mÓmb?d  x=lÇ @  mÔnb?d àx¿ýÐÙ @  mÕob?d xÖws @  mÖpb?d `xTædÛ @  m×qb?d  xÈOÔø @  mØrb?d àxJÞÃ& @  mÙsb?d xžÖ @  mÚtb?d `x•ƒ‰ @  mÛub?d  xѼ @  mÜvb?d àx€@Šb @  mÝwb?d xŒšKR @  mÞxb?d `x \Œ @  mßyb?d  x.õÿ @  màzb?d àx¬”â! @  má{b?d xuRì @  mâ|b?d€ `x6„ Á @  n}b?d  x@—P\ @  n~b?d àxÂG‚ @  nb?d xägì @  n€b?d `xœup2 @  nb?d  xÎnŸkuÐ x @  n‚b?d àxLÿˆµ @  nƒb?d 8 x·Ä§V @  n„b?d x x5U°ˆ @  n …b?d ¸ xgN_Ñ @  n †b?d ø xåßH @  n ‡b?d 8!x,LrÒ @  n ˆb?d x!x®Ýe  @  n ‰b?d ¸!xüÆŠU @  nŠb?d ø!x~W‹ @  n‹b?d 8"xÄ‚ò/ @  nŒb?d x"xFåñ @  nb?d ¸"x ¨ @  nŽb?d ø"x–™v @  nb?d 8#x:ZEG @  nb?d x#x¸ËR™ @  n‘b?d ¸#xêнÀ @  n’b?d ø#xhAª @  n“b?d 8$xû?¨” @  n”b?d x$xy®¿J @  n•b?d ¸$x+µP @  n–b?d ø$x©$GÍ @  n—b?d 8%x`·} @  n˜b?d x%xâ&jÎ @  n™b?d ¸%x°=…— @  nšb?d ø%x2¬’I @  n›b?d 8&x™Ú] @  n œb?d x&xî̓ @  n!b?d ¸&xIõ"Ú @  n"žb?d ø&xËd5 @  n#Ÿb?d 8'xúTé @  n$ b?d x'xxC7 @  n%¡b?d ¸'x*š¬n @  n&¢b?d ø'x¨ »° @  n'£b?d 8(xÄÆ( @  n(¤b?d x(x”UÑö @  n)¥b?d ¸(xÆN>¯ @  n*¦b?d ø(xDß)q @  n+§b?d 8)xL¬ @  n,¨b?d x)xÝr @  n-©b?d ¸)x]Æë+ @  n.ªb?d ø)xßWüõ @  n/«b?d 8*xe‚“Q @  n0¬b?d x*xç„ @  n1­b?d ¸*xµkÖ @  n2®b?d ø*x7™| @  n3¯b?d 8+x›Z$9 @  n4°b?d x+xË3ç @  n5±b?d ¸+xKÐܾ @  n6²b?d ø+xÉAË` @  n7³b?d 8,xZ?Éê @  n8´b?d x,xØ®Þ4 @  n9µb?d ¸,xе1m @  n:¶b?d ø,x$&³ @  n;·b?d 8-xÁ·n @  n<¸b?d x-xC& ° @  n=¹b?d ¸-x=äé @  n>ºb?d ø-x“¬ó7 @  n?»b?d 8.x–x½± @  n@¼b?d x.xéªo @  nA½b?d ¸.xFòE6 @  nB¾b?d ø.xÄcRè @  nC¿b?d 8/xG& @  nDÀb?d x/x‡Ö1Ê @  nEÁb?d ¸/xÕÍÞ“ @  nFÂb?d ø/xW\ÉM @  nGÃb?d 80xc²„z @  nHÄb?d x0xá#“¤ @  nIÅb?d ¸0x³8|ý @  nJÆb?d ø0x1©k# @  nKÇb?d 81xø:Qþ @  nLÈb?d x1xz«F  @  nMÉb?d ¸1x(°©y @  nNÊb?d ø1xª!¾§ @  nOËb?d 82xôÑ @  nPÌb?d x2x’eÆÝ @  nQÍb?d ¸2xÀ~)„ @  nRÎb?d ø2xBï>Z @  nSÏb?d 83xî,fk @  nTÐb?d x3xl½qµ @  nUÑb?d ¸3x>¦žì @  nVÒb?d ø3x¼7‰2 @  nWÓb?d 84x/I‹¸ @  nXÔb?d x4x­Øœf @  nYÕb?d ¸4xÿÃs? @  nZÖb?d ø4x}Rdá @  n[×b?d 85x´Á^< @  n\Øb?d x5x6PIâ @  n]Ùb?d ¸5xdK¦» @  n^Úb?d ø5xæÚ±e @  n_Ûb?d 86xM ùq @  n`Üb?d x6xϘî¯ @  naÝb?d ¸6xƒö @  nbÞb?d ø6x( @  ncßb?d 87x.fwÅ @  ndàb?d x7x¬÷` @  neáb?d ¸7xþìB @  nfâb?d ø7x|}˜œ @  ngãb?d 88x²å @  nhäb?d x8x@#òÚ @  niåb?d ¸8x8ƒ @  njæb?d ø8x© ] @  nkçb?d 89xY:0€ @  nlèb?d x9xÛ«'^ @  nméb?d ¸9x‰°È @  nnêb?d ø9x !ßÙ @  noëb?d 8:x±ô°} @  npìb?d x:x3e§£ @  nqíb?d ¸:xa~Hú @  nrîb?d ø:xãï_$ @  nsïb?d 8;xO, @  ntðb?d x;xͽË @  nuñb?d ¸;xŸ¦ÿ’ @  nvòb?d ø;x7èL @  nwób?d 8x¡X®¬ @  n€üb?d x>x#ɹr @  nýb?d ¸>xqÒV+ @  n‚þb?d ø>xóCAõ @  nƒÿb?d 8?xPÆ4— @  n„c?d x?xÒW#I @  n…c?duÐ@x7 ¸?x€LÌ @  n†c?d ø?xÝÛÎ @  n‡c?d P@xKAw @  nˆc?d @xk´’‰ @  n‰c?d Ð@x›Ëhð @  nŠc?d AxKƒä @  n‹c?d PAxÐÉEó @  nŒc?d Axðc?d OxSø"* @  nà ?c?d POxÀÍà @  nÄ @c?d OxàðÏ @  nÅ Ac?d ÐOx5g @  nÆ Bc?d Px®Q‰Õ @  nÇ Cc?d PPx¦ðoŽ @  nÈ Dc?d Px†mp @  nÉ Ec?d ÐPxvz—  @  nÊ Fc?d Qx¦2á @  nË Gc?d PQx=xº  @  nÌ Hc?d Qx¸ô @  nÍ Ic?d ÐQxíòB @  nÎ Jc?d Rxp¶âL @  nÏ Kc?d PRxÕ¶:÷ @  nÐ Lc?d RxõC8  @  nÑ Mc?d ÐRx<Âp @  nÒ Nc?d SxÕtN˜ @  nÓ Oc?d PSx+nŸ @  nÔ Pc?d Sx ›a @  nÕ Qc?d ÐSxûäu @  nÖ Rc?d Tx⪆ @  n× Sc?d PTxê `L @  nØ Tc?d TxÊþb² @  nÙ Uc?d ÐTx:˜Ë @  nÚ Vc?d UxêÉ# @  nÛ Wc?d PUxqƒµÈ @  nÜ Xc?d UxQv·6 @  nÝ Yc?d ÐUx¡ MO @  nÞ Zc?d Vx œc?d ¨fxíñ5 @  o? c?d èfxÁœ;ô @  o@ žc?d (gxÔ· @  oA Ÿc?d hgx·0¶* @  oB  c?d ¨gx—Å´Ô @  oC ¡c?d ègx¢óµ@ @  oD ¢c?d (hx– 9] @  oE £c?d hhxP€| @  oF ¤c?d ¨hxpê‚‚ @  oG ¥c?d èhxN'' @  oH ¦c?d (ixžo«i @  oI §c?d hixÀlño @  oJ ¨c?d ¨ixà™ó‘ @  oK ©c?d èixÕ¯ò @  oL ªc?d (jxHëRÄ @  oM «c?d hjxŽøëå @  oN ¬c?d ¨jx® é @  oO ­c?d èjx=arø @  oP ®c?d (kxí)þ @  oQ ¯c?d hkxÖzÆú @  oR °c?d ¨kxöÄ @  oS ±c?d èkxùÅ @  oT ²c?d (lxÚ÷6Ÿ @  oU ³c?d hlxä¾ @  oV ´c?d ¨lxǶ@ @  oWµc?d èlxù²C @  oX¶c?d (mx)úŸ« @  oY·c?d hmxwùÅ­ @  oZ¸c?d ¨mxW ÇS @  o[¹c?d èmxb:ÆÇ @  o\ºc?d (nxÿ~f @  o]»c?d hnx9mß' @  o^¼c?d ¨nx˜ÝÙ @  o_½c?d ènx›òaŠ @  o`¾c?d (oxKºíb @  oa¿c?d hoxùE @  obÀc?d ¨ox=ûû» @  ocÁc?d èoxÍú/ @  odÂc?d (px¶F @  oeÃc?d hpxpÿ¼ @  ofÄc?d ¨pxPõýB @  ogÅc?d èpxn8XA @  ohÆc?d (qx¾pÔ© @  oiÇc?d hqxàsޝ @  ojÈc?d ¨qxÀ†ŒQ @  okÉc?d èqxõ°Å @  olÊc?d (rxhô- @  omËc?d hrx®ç”% @  onÌc?d ¨rxŽ–Û @  ooÍc?d èrx~ 8 @  opÎc?d (sxÍ6Ð @  oqÏc?d hsxöe¹: @  orÐc?d ¨sxÖ»Ä @  osÑc?d èsx㦺P @  otÒc?d (txúèI_ @  ouÓc?d htx<ûð~ @  ovÔc?d ¨txò€ @  owÕc?d ètx"ÃWƒ @  oxÖc?d (uxò‹Ûk @  oy×c?d hux¬ˆm @  ozØc?d ¨uxŒ}ƒ“ @  o{Ùc?d èux¹K‚ @  o|Úc?d (vx$"Æ @  o}Ûc?d hvxâ›ç @  o~Üc?d ¨vxÂé™ @  oÝc?d èvx Òé @  o€Þc?d (wxÝšŸ @  oßc?d hwx{~ž7 @  o‚àc?d ¨wx[‹œÉ @  oƒác?d èwxn½] @  o„âc?d (xxZB@ @  o…ãc?d hxxœQ¨a @  o†äc?d ¨xx¼¤ªŸ @  o‡åc?d èxx‚iœ @  oˆæc?d (yxR!ƒt @  o‰çc?d hyx "Ùr @  oŠèc?d ¨yx,×ÛŒ @  o‹éc?d èyxáÚ @  oŒêc?d (zx„¥zÙ @  oëc?d hzxB¶Ãø @  oŽìc?d ¨zxbCÁ @  oíc?d èzxñ/Zå @  oîc?d ({x!gÖ  @  o‘ïc?d h{x4îç @  o’ðc?d ¨{x:Áì @  o“ñc?d è{x÷í @  o”òc?d (|x¹‚ @  o•óc?d h|xЪ§£ @  o–ôc?d ¨|xð_¥] @  o—õc?d è|xÎ’^ @  o˜öc?d (}xÚŒ¶ @  o™÷c?d h}x@ÙÖ° @  ošøc?d ¨}x`,ÔN @  o›ùc?d è}xUÕÚ @  oœúc?d (~xÈ^u @  oûc?d h~xMÌ: @  ožüc?d ¨~x.¸ÎÄ @  oŸýc?d è~x¬Òr— @  o þc?d (x|šþ @  o¡ÿc?d hxt†ÔP @  o¢d?d ¨xuЀx'TsÖ® @  o£d?d èxaE×: @  o¤d?d @€xû5N @  o¥d?d €€xkŒ™O @  o¦d?d À€x鎑 @  o§d?d x… °¤ @  o¨d?d @x˜§z @  o©d?d €xûÿè\ @  oªd?d Àxynÿ‚ @  o« d?d ‚xSI  @  o¬ d?d @‚xÑ^× @  o­ d?d €‚xµkòÖ @  o® d?d À‚x7úå @  o¯ d?d ƒxöOåÝ @  o°d?d @ƒxtÞò @  o±d?d €ƒxíéßÉ @  o²d?d ÀƒxoxÈ @  o³d?d „xÁ‘-R @  o´d?d @„xC:Œ @  oµd?d €„x'w– @  o¶d?d À„x¥æS @  o·d?d …xÉò¿f @  o¸d?d @…xKc¨¸ @  o¹d?d €…x·çž @  oºd?d À…x5•ð@ @  o»d?d †xvFË @  o¼d?d @†xçQ @  o½d?d €†xùý @  o¾d?d À†x{êÊ @  o¿d?d ‡xµË= @  oÀd?d @‡x‡$Üã @  oÁd?d €‡xƒ¤Èõ @  o d?d À‡x5ß+ @  oÃ!d?d ˆx‚mE| @  oÄ"d?d @ˆxüR¢ @  oÅ#d?d €ˆxd‹þ£ @  oÆ$d?d Àˆxæé} @  oÇ%d?d ‰xŠ×H @  oÈ&d?d @‰xŸÀ– @  oÉ'd?d €‰xôø° @  oÊ(d?d À‰xvi˜n @  oË)d?d Šx\Š.å @  oÌ*d?d @ŠxÞ9; @  oÍ+d?d €Šxºl•: @  oÎ,d?d ÀŠx8ý‚ä @  oÏ-d?d ‹xùH‚1 @  oÐ.d?d @‹x{Ù•ï @  oÑ/d?d €‹xâî¸% @  oÒ0d?d À‹x`¯û @  oÓ1d?d ŒxΖJ¾ @  oÔ2d?d @ŒxL]` @  oÕ3d?d €Œx(pña @  oÖ4d?d ÀŒxªáæ¿ @  o×5d?d xÆõØŠ @  oØ6d?d @xDdÏT @  oÙ7d?d €x¸€r @  oÚ8d?d Àx:’—¬ @  oÛ9d?d Žxq!' @  oÜ:d?d @Žx’à6ù @  oÝ;d?d €Žxö—šø @  oÞd?d @x&$½ @  oá?d?d €xÒô¼š @  oâ@d?d€ Àx;9Gª @  pAd?d xÓ¥{ @  pBd?d @xQ²¥ @  pCd?d €xð®åI @  pDd?d Àxr?ò— @  pEd?d ‘xЙ“Ø @  pFd?d @‘xR„ @  pGd?d €‘x`Ý”Z @  pHd?d À‘xâLƒ„ @  p Id?d ’x æÎâ @  p Jd?d @’xwÙ< @  p Kd?d €’x.IŽÐ @  p Ld?d À’x¬Ø™ @  p Md?d “x~øA @  pNd?d @“xŒïïŸ @  pOd?d €“xvË£Ï @  pPd?d À“xôZ´ @  pQd?d ”xŸúª¹ @  pRd?d @”xk½g @  pSd?d €”x¼Uê‹ @  pTd?d À”x>ÄýU @  pUd?d •xœbœ @  pVd?d @•xó‹Ä @  pWd?d €•x,&›˜ @  pXd?d À•x®·ŒF @  pYd?d –xAÁ  @  pZd?d @–xÃŒÖþ @  p[d?d €–xb² @  p\d?d À–xà#–Ì @  p]d?d —xB…÷ƒ @  p^d?d @—xÀà] @  p_d?d €—x¶²a @  p `d?d À—x4¥¿ @  p!ad?d ˜xrÄ @  p"bd?d @˜xðÓÛ @  p#cd?d €˜xQ®„7 @  p$dd?d À˜xÓ?“é @  p%ed?d ™xq™ò¦ @  p&fd?d @™xóåx @  p'gd?d €™xÁÝõ$ @  p(hd?d À™xCLâú @  p)id?d šx¬æ¯œ @  p*jd?d @šx.w¸B @  p+kd?d €šxIï® @  p,ld?d Àšx Øøp @  p-md?d ›x¯~™? @  p.nd?d @›x-ïŽá @  p/od?d €›x×˱ @  p0pd?d À›xUZÕo @  p1qd?d œx>úËÇ @  p2rd?d @œx¼kÜ @  p3sd?d €œxU‹õ @  p4td?d ÀœxŸÄœ+ @  p5ud?d x=býd @  p6vd?d @x¿óêº @  p7wd?d €x&úæ @  p8xd?d Àx·í8 @  p9yd?d žxà ^ @  p:zd?d @žxbŒ·€ @  p;{d?d €žxòàl @  p<|d?d ÀžxA#÷² @  p=}d?d Ÿxã…–ý @  p>~d?d @Ÿxa# @  p?d?d €ŸxT” @  p@€duРx?d ÀŸxփР@  pAd?d  xÍWÄ @  pB‚d?d X x•\@ @  pCƒd?d ˜ x4bö @  pD„d?d Ø x¶ó( @  pE…d?d ¡xUag @  pF†d?d X¡x–Äv¹ @  pG‡d?d ˜¡x¤få @  pHˆd?d Ø¡x&€q; @  pI‰d?d ¢xÉ*<] @  pJŠd?d X¢xK»+ƒ @  pK‹d?d ˜¢xê…|o @  pLŒd?d Ø¢xhk± @  pMd?d £xʲ þ @  pNŽd?d X£xH#  @  pOd?d ˜£x²Qp @  pPd?d Ø£x0–F® @  pQ‘d?d ¤x[6X @  pR’d?d X¤xÙ§OØ @  pS“d?d ˜¤xx™4 @  pT”d?d ؤxúê @  pU•d?d ¥xX®n¥ @  pV–d?d X¥xÚ?y{ @  pW—d?d ˜¥xèêi' @  pX˜d?d Ø¥xj{~ù @  pY™d?d ¦x…Ñ3Ÿ @  pZšd?d X¦x@$A @  p[›d?d ˜¦x¦~s­ @  p\œd?d ئx$ïds @  p]d?d §x†I< @  p^žd?d X§xØâ @  p_Ÿd?d ˜§xrM@Þ @  p` d?d اxðÜW @  pa¡d?d ¨x¶Í6º @  pb¢d?d X¨x4\!d @  pc£d?d ˜¨x•bvˆ @  pd¤d?d بxóaV @  pe¥d?d ©xµU @  pf¦d?d X©x7ÄÇ @  pg§d?d ˜©x› @  ph¨d?d Ø©x‡€E @  pi©d?d ªxh*]# @  pjªd?d Xªxê»Jý @  pk«d?d ˜ªxK… @  pl¬d?d تxÉ Ï @  pm­d?d «xk²k€ @  pn®d?d X«xé#|^ @  po¯d?d ˜«x0 @  pp°d?d Ø«x‘–'Ð @  pq±d?d ¬xú69x @  pr²d?d X¬xx§.¦ @  ps³d?d ˜¬xÙ™yJ @  pt´d?d جx[n” @  puµd?d ­xù®Û @  pv¶d?d X­x{? @  pw·d?d ˜­xIêY @  px¸d?d Ø­xË{‡ @  py¹d?d ®x$ÑRá @  pzºd?d X®x¦@E? @  p{»d?d ˜®x~Ó @  p|¼d?d Ø®x…ï  @  p}½d?d ¯x'IdB @  p~¾d?d X¯x¥Øsœ @  p¿d?d ˜¯xnL @  p€Àd?d دxìÝÌ @  pÁd?d °x íDÙ @  p‚Âd?d X°x¢|S @  pƒÃd?d ˜°xBë @  p„Äd?d ذxÓ5 @  p…Åd?d ±x#urz @  p†Æd?d X±x¡äe¤ @  p‡Çd?d ˜±x“1uø @  pˆÈd?d رx b& @  p‰Éd?d ²xþ /@ @  pŠÊd?d X²x|›8ž @  p‹Ëd?d ˜²xÝ¥or @  pŒÌd?d زx_4x¬ @  pÍd?d ³xý’ã @  pŽÎd?d X³x= @  pÏd?d ˜³x…'Bm @  pÐd?d سx¶U³ @  p‘Ñd?d ´xlK @  p’Òd?d X´xî‡\Å @  p“Ód?d ˜´xO¹ ) @  p”Ôd?d Ø´xÍ(÷ @  p•Õd?d µxoŽ}¸ @  p–Öd?d Xµxíjf @  p—×d?d ˜µxßÊz: @  p˜Ød?d صx][mä @  p™Ùd?d ¶x²ñ ‚ @  pšÚd?d X¶x0`7\ @  p›Ûd?d ˜¶x‘^`° @  pœÜd?d ضxÏwn @  pÝd?d ·x±i! @  pžÞd?d X·x3øÿ @  pŸßd?d ˜·xEmSà @  p àd?d Ø·xÇüD @  p¡ád?d ¸xí%§ @  p¢âd?d X¸x|2y @  p£ãd?d ˜¸x¢Be• @  p¤äd?d ظx ÓrK @  p¥åd?d ¹x‚u @  p¦æd?d X¹xäÚ @  p§çd?d ˜¹x21† @  p¨èd?d عx° X @  p©éd?d ºx_ N> @  pªêd?d XºxÝ›Yà @  p«ëd?d ˜ºx|¥  @  p¬ìd?d غxþ4Ò @  p­íd?d »x\’x @  p®îd?d X»xÞoC @  p¯ïd?d ˜»x$'# @  p°ðd?d Ø»x¦¶4Í @  p±ñd?d ¼xÍ*e @  p²òd?d X¼xO‡=» @  p³ód?d ˜¼xî¹jW @  p´ôd?d ؼxl(}‰ @  pµõd?d ½xÎŽÆ @  p¶öd?d X½xL  @  p·÷d?d ˜½x~ÊD @  p¸ød?d ؽxü[ š @  p¹ùd?d ¾xñAü @  pºúd?d X¾x‘`V" @  p»ûd?d ˜¾x0^Î @  p¼üd?d ؾx²Ï @  p½ýd?d ¿xiw_ @  p¾þd?d X¿x’ø` @  p¿ÿd?d ˜¿xØ›   @uÐÀx  pÀe?d Ø¿xZ 7~ @  pÁe?d 0ÀxL‹‹ @  pÂe?d pÀxÎ…œU @  pÃe?d °Àxo»Ë¹ @  pÄe?d ðÀxí*Üg @  pÅe?d 0ÁxOŒ½( @  pÆe?d pÁxͪö @  pÇe?d °ÁxÿȺª @  pÈe?d ðÁx}Y­t @  pÉ e?d 0Âx’óà @  pÊ e?d pÂxb÷Ì @  pË e?d °Âx±\   @  pÌ e?d ðÂx3Í·þ @  pÍ e?d 0Ãx‘kÖ± @  pÎe?d pÃxúÁo @  pÏe?d °ÃxéÞ? @  pÐe?d ðÃxkOšá @  pÑe?d 0Äxï„I @  pÒe?d pÄx‚~“— @  pÓe?d °Äx#@Ä{ @  pÔe?d ðÄx¡ÑÓ¥ @  pÕe?d 0Åxw²ê @  pÖe?d pÅxæ¥4 @  p×e?d °Åx³3µh @  pØe?d ðÅx1¢¢¶ @  pÙe?d 0ÆxÞïÐ @  pÚe?d pÆx\™ø @  pÛe?d °Æxý§¯â @  pÜe?d ðÆx6¸< @  pÝe?d 0ÇxÝÙs @  pÞe?d pÇx_έ @  pße?d °Çx)”œ‘ @  pà e?d ðÇx«‹O @  pá!e?d 0Èxíêõ @  pâ"e?d€ pÈxFá @  q#e?d °Èx[9þH @  q$e?d ðÈxÙ¨é– @  q%e?d 0Éx¾Gs4 @  q&e?d pÉx<Ödê @  q'e?d °ÉxÀ±+Ì @  q(e?d ðÉxB < @  q)e?d 0Êxc8. @  q*e?d pÊxá©9Ð @  q +e?d °Êx…Þ•Ñ @  q ,e?d ðÊxO‚ @  q -e?d 0Ëx` ­ @  q .e?d pËxâ1s @  q /e?d °Ëx{"¹ @  q0e?d ðËxù—5g @  q1e?d 0Ìxñ$JU @  q2e?d pÌxsµ]‹ @  q3e?d °ÌxÂñŠ @  q4e?d ðÌx•SæT @  q5e?d 0Íxò¼|ö @  q6e?d pÍxp-k( @  q7e?d °ÍxŒJ$ @  q8e?d ðÍxÛ3Ð @  q9e?d 0Îx/Ã!Ì @  q:e?d pÎx­R6 @  q;e?d °ÎxÉ%š @  qe?d pÏx®Ê± @  q?e?d °ÏxZ¶ @  q@e?d ðÏxØ‹h @  qAe?d 0Ðxf®W @  q Be?d pÐxä?‰ @  q!Ce?d °Ðx€Hºˆ @  q"De?d ðÐxÙ­V @  q#Ee?d 0Ñxe67ô @  q$Fe?d pÑxç§ * @  q%Ge?d °ÑxÀo  @  q&He?d ðÑx™QxÒ @  q'Ie?d 0Òx¸IjÎ @  q(Je?d pÒx:Ø} @  q)Ke?d °Òx^¯Ñ @  q*Le?d ðÒxÜ>ÆÏ @  q+Me?d 0Óx»Ñ\m @  q,Ne?d pÓx9@K³ @  q-Oe?d °Óx wfy @  q.Pe?d ðÓx"æq§ @  q/Qe?d 0Ôx*U• @  q0Re?d pÔx¨ÄK @  q1Se?d °Ôx̳µJ @  q2Te?d ðÔxN"¢” @  q3Ue?d 0Õx)Í86 @  q4Ve?d pÕx«\/è @  q5We?d °ÕxW;`Î @  q6Xe?d ðÕxÕªw @  q7Ye?d 0Öxô²e  @  q8Ze?d pÖxv#rÒ @  q9[e?d °ÖxTÞÓ @  q:\e?d ðÖxÅÉ  @  q;]e?d 0×x÷*S¯ @  q<^e?d p×xu»Dq @  q=_e?d °×xq;Pg @  q>`e?d ð×xóªG¹ @  q?ae?d 0Øxi©f» @  q@be?d pØxë8qe @  qAce?d °ØxOÝd @  qBde?d ðØx Þʺ @  qCee?d 0Ùxj1P @  qDfe?d pÙxè GÆ @  qEge?d °ÙxÇà @  qFhe?d ðÙx–V> @  qGie?d 0Úx·N " @  qHje?d pÚx5ßü @  qIke?d °ÚxQ¨¶ý @  qJle?d ðÚxÓ9¡# @  qKme?d 0Ûx´Ö; @  qLne?d pÛx6G,_ @  qMoe?d °Ûx¯p• @  qNpe?d ðÛx-áK @  qOqe?d 0Üx%Riy @  qPre?d pÜx§Ã~§ @  qQse?d °ÜxôҦ @  qRte?d ðÜxA%Åx @  qSue?d 0Ýx&Ê_Ú @  qTve?d pÝx¤[H @  qUwe?d °ÝxX<" @  qVxe?d ðÝxÚ­ü @  qWye?d 0Þxûµà @  qXze?d pÞxy$> @  qY{e?d °ÞxS¹? @  qZ|e?d ðÞxŸÂ®á @  q[}e?d 0ßxø-4C @  q\~e?d pßxz¼# @  q]e?d uÐàx/°ßx“ªv @  q^€e?d ðßx;aÖ @  q_e?d Hàxd”­ @  q`‚e?d ˆàx(‘–S @  qaƒe?d Èàxî‚/r @  qb„e?d áx>Ê£š @  qc…e?d Háx ü¢ @  qd†e?d ˆáx+  ð @  qe‡e?d Èáxu úö @  qfˆe?d âxèNZ7 @  qg‰e?d HâxÖƒÿ4 @  qhŠe?d ˆâxövýÊ @  qi‹e?d Èâx0eDë @  qjŒe?d ãxà-È @  qke?d HãxÕÉ— @  qlŽe?d ˆãxõîËi @  qme?d Èãxνóƒ @  qne?d äx×óŒ @  qo‘e?d HäxDŸ›o @  qp’e?d ˆäxdj™‘ @  qq“e?d Èäx¢y ° @  qr”e?d åxr1¬X @  qs•e?d HåxG­Ì @  qt–e?d ˆåxgò¯2 @  qu—e?d Èåx9ñõ4 @  qv˜e?d æx¤µUõ @  qw™e?d Hæxšxðö @  qxše?d ˆæxºò @  qy›e?d Èæx|žK) @  qzœe?d çx¬ÖÇÁ @  q{e?d Hçx™àÆU @  q|že?d ˆçx¹Ä« @  q}Ÿe?d ÈçxñÅ @  q~ e?d èx+I€ @  q¡e?d Hèxä5Ãp @  q€¢e?d ˆèxÄÀÁŽ @  q£e?d ÈèxÓx¯ @  q‚¤e?d éxÒ›ôG @  qƒ¥e?d Héxç­õÓ @  q„¦e?d ˆéxÇX÷- @  q…§e?d Èéx™[­+ @  q†¨e?d êx ê @  q‡©e?d Hêx:Ò¨é @  qˆªe?d ˆêx'ª @  q‰«e?d ÈêxÜ46 @  qЬe?d ëx |ŸÞ @  q‹­e?d Hëx9JžJ @  qŒ®e?d ˆëx¿œ´ @  q¯e?d Èëx"ì¤^ @  qްe?d ìx;¢WQ @  q±e?d Hìx¨Î̲ @  q²e?d ˆìxˆ;ÎL @  q‘³e?d ÈìxN(wm @  q’´e?d íxž`û… @  q“µe?d Híx«Vú @  q”¶e?d ˆíx‹£øï @  q•·e?d ÈíxÕ ¢é @  q–¸e?d îxHä( @  q—¹e?d Hîxv)§+ @  q˜ºe?d ˆîxVÜ¥Õ @  q™»e?d ÈîxÏô @  qš¼e?d ïx@‡ @  q›½e?d Hïxu±‘ˆ @  qœ¾e?d ˆïxUD“v @  q¿e?d Èïxð‡Q @  qžÀe?d ðx½.;ã @  qŸÁe?d Hðx?D‡° @  q Âe?d ˆðx±…N @  q¡Ãe?d Èðxàeຠ@  q¢ Äe?d ñx0-lR @  q£ Åe?d HñxmÆ @  q¤ Æe?d ˆñx%îo8 @  q¥ Çe?d Èñx{í5> @  q¦ Èe?d òxæ©•ÿ @  q§ Ée?d HòxØd0ü @  q¨ Êe?d ˆòxÿ  @  q©Ëe?d ÈòxÅì°# @  qªÌe?d óx¤<Ë @  q«Íe?d Hóx ’=_ @  q¬Îe?d ˆóxg?¡ @  q­Ïe?d Èóx;4K @  q®Ðe?d ôx"zôD @  q¯Ñe?d Hôx±o§ @  q°Òe?d ˆôx‘ãmY @  q±Óe?d ÈôxWðÔx @  q²Ôe?d õx‡¸X @  q³Õe?d Hõx²ŽY @  q´Öe?d ˆõx’{[ú @  qµ×e?d ÈõxÌxü @  q¶Øe?d öxQ<¡= @  q·Ùe?d Höxoñ> @  q¸Úe?d ˆöxOÀ @  q¹Ûe?d Èöx‰¿á @  qºÜe?d ÷xY_3  @  q»Ýe?d H÷xli2 @  q¼Þe?d ˆ÷xLœ0c @  q½ße?d È÷xêx1U @  q¾àe?d øxÞ‡½H @  q¿áe?d Høxòê‰ @  qÀâe?d ˆøxÒw @  qÁãe?d Èøx ¼V @  qÂäe?d ùxÄD0¾ @  qÃåe?d Hùxñr1* @  qÄæe?d ˆùxч3Ô @  qÅçe?d Èùx„iÒ @  qÆèe?d úxÀÉ @  qÇée?d Húx, l @  qÈêe?d ˆúx ønî @  qÉëe?d ÈúxÊë×Ï @  qÊìe?d ûx£[' @  qËíe?d Hûx/•Z³ @  qÌîe?d ˆûx`XM @  qÍïe?d Èûx43`§ @  qÎðe?d üx-}“¨ @  qÏñe?d Hüx¾K @  qÐòe?d ˆüxžä µ @  qÑóe?d ÈüxX÷³” @  qÒôe?d ýxˆ¿?| @  qÓõe?d Hýx½‰>è @  qÔöe?d ˆýx|< @  qÕ÷e?d ÈýxÃf @  qÖøe?d þx^;ÆÑ @  q×ùe?d Hþx`öcÒ @  qØúe?d ˆþx@a, @  qÙûe?d Èþx†Ø  @  qÚüe?d ÿxVXTå @  qÛýe?d HÿxcnUq @  qÜþe?d ˆÿxC›W @  qÝuÐyÿe?d ÈÿxŬw @  qÞf?d yŠ_â @  qßf?d `yrã± @  qàf?d  y(‡áO @  qáf?d àyî”Xn @  qâf?d€ yÿ›#† @  rf?d `y+ìj; @  rf?d  y hÅ @  rf?d àySÉ. @  rf?d y iï @  r f?d `yýh“– @  r f?d  yÝ‘h @  r f?d àyÕ(€! @  r"f?d  yÝ‚ß @  r#f?d àyªÛ}Ô @  r $f?d yz“ñ< @  r!%f?d ` yŠì E @  r"&f?d   yª » @  r#'f?d à y1S¨P @  r$(f?d y¬‘ @  r%)f?d ` y\hòè @  r&*f?d   y|ð @  r'+f?d à yt<M @  r(,f?d y¤tš¥ @  r)-f?d ` yT `Ü @  r*.f?d   ytþb" @  r+/f?d à yŠä¡% @  r,0f?d y“ªR* @  r-1f?d ` ycÕ¨S @  r.2f?d   yC ª­ @  r/3f?d à yæ r @  r04f?d y6hþþ @  r15f?d ` yƇ @  r26f?d   yæây @  r37f?d à y}¨§’ @  r48f?d yàìS @  r59f?d `y“ý* @  r6:f?d  y0fÿÔ @  r7;f?d ày8Ç @  r8f?d  y8mà @  r;?f?d ày«ø‚* @  r<@f?d y&>˜ @  r=Af?d `yåYÄá @  r>Bf?d  yŬÆ @  r?Cf?d àyß­?† @  r@Df?d yå³n @  rAEf?d `yÿšI @  rBFf?d  yßoKé @  rCGf?d àyD%ê @  rDHf?d yÙaJà @  rEIf?d `y)°º @  rFJf?d  y ë²D @  rGKf?d àyJT @  rHLf?d yÑØ÷ @  rIMf?d `y!}"Ž @  rJNf?d  yˆ p @  rKOf?d àyÿ’ãw @  rLPf?d yæÜx @  rMQf?d `y£ê @  rNRf?d  y6Vèÿ @  rOSf?d ày“V0D @  rPTf?d yC¼¬ @  rQUf?d `y³aFÕ @  rRVf?d  y“”D+ @  rSWf?d àyÞåÀ @  rTXf?d y•šE @  rUYf?d `yeå¿x @  rVZf?d  yE½† @  rW[f?d àyM±[Ý @  rX\f?d yù×5 @  rY]f?d `ym†-L @  rZ^f?d  yMs/² @  r[_f?d ày.ÞÕi @  r\`f?d y!Yt @  r]af?d `yê^£  @  r^bf?d  yÊ«¡ó @  r_cf?d ày~­^ø @  r`df?d y®åÒ @  raef?d `y^š(i @  rbff?d  y~o*— @  rcgf?d àyå%‹| @  rdhf?d yxa+½ @  reif?d `yˆÑÄ @  rfjf?d  y¨ëÓ: @  rgkf?d ày J5a @  rhlf?d yp¹‰ @  rimf?d `y€}Cð @  rjnf?d  y ˆA @  rkof?d ày^’‚  @  rlpf?d yGÜq @  rmqf?d `y·£‹ @  rnrf?d  y—V‰ @  rosf?d ày2VQ: @  rptf?d yâÝÒ @  rquf?d `ya'« @  rrvf?d  y2”%U @  rswf?d ày©Þ„¾ @  rtxf?d y4š$ @  ruyf?d `yÄåÞ @  rvzf?d  yäÜø @  rw{f?d àyì±:£ @  rx|f?d y<ù¶K @  ry}f?d `y̆L2 @  rz~f?d  yìsNÌuÐ y @  r{f?d ày áA @  r|€f?d 8 yÑêÌ' @  r}f?d x y!•6^ @  r~‚f?d ¸ y`4  @  rƒf?d ø yø7ý @  r€„f?d 8!y(qà @  r…f?d x!yØ‹™ @  r‚†f?d ¸!yøõ‰g @  rƒ‡f?d ø!yc¿(Œ @  r„ˆf?d 8"yþûˆM @  r…‰f?d x"y„r4 @  r†Šf?d ¸"y.qpÊ @  r‡‹f?d ø"y&Ж‘ @  rˆŒf?d 8#yö˜y @  r‰f?d x#yçà @  rŠŽf?d ¸#y&âþ @  r‹f?d ø#yØ!ù @  rŒf?d 8$yÁFÒö @  r‘f?d x$y19( @  rŽ’f?d ¸$yÌ*q @  r“f?d ø$y´ÌòÊ @  r”f?d 8%yd„~" @  r‘•f?d x%y”û„[ @  r’–f?d ¸%y´†¥ @  r“—f?d ø%y/D'N @  r”˜f?d 8&y²‡ @  r•™f?d x&yB}ö @  r–šf?d ¸&ybŠ @  r—›f?d ø&yj+™S @  r˜œf?d 8'yºc» @  r™f?d x'yJï @  ršžf?d ¸'yjéí< @  r›Ÿf?d ø'y Dç @  rœ f?d 8(y=»›ú @  r¡f?d x(yÍÄaƒ @  rž¢f?d ¸(yí1c} @  rŸ£f?d ø(yY7œv @  r ¤f?d 8)y‰ž @  r¡¥f?d x)yyêç @  r¢¦f?d ¸)yYõè @  r£§f?d ø)y¿Iò @  r¤¨f?d 8*y_ûé3 @  r¥©f?d x*y¯„J @  r¦ªf?d ¸*yq´ @  r§«f?d ø*y‡Ð÷ï @  r¨¬f?d 8+yW˜{ @  r©­f?d x+y§ç~ @  rª®f?d ¸+y‡ƒ€ @  r«¯f?d ø+yy@‡ @  r¬°f?d 8,y`F³ˆ @  r­±f?d x,y9Iñ @  r®²f?d ¸,y°ÌK @  r¯³f?d ø,yÌ“´ @  r°´f?d 8-yÅ„\ @  r±µf?d x-y5ûå% @  r²¶f?d ¸-yçÛ @  r³·f?d ø-yŽDF0 @  r´¸f?d 8.yæñ @  rµ¹f?d x.y㈠@  r¶ºf?d ¸.yÊv @  r·»f?d ø.yË+ø- @  r¸¼f?d 8/yctÅ @  r¹½f?d x/yë޼ @  rº¾f?d ¸/yËéŒB @  r»¿f?d ø/yXcˆ @  r¼Àf?d 80yæÊß: @  r½Áf?d x0yµ%C @  r¾Âf?d ¸0y6@'½ @  r¿Ãf?d ø0y,AÞ$ @  rÀÄf?d 81yü RÌ @  rÁÅf?d x1y v¨µ @  rÂÆf?d ¸1y,ƒªK @  rÃÇf?d ø1y·É   @  rÄÈf?d 82y*«a @  rÅÉf?d x2yÚòQ @  rÆÊf?d ¸2yúSæ @  rÇËf?d ø2yò¦µ½ @  rÈÌf?d 83y"î9U @  rÉÍf?d x3yÒ‘Ã, @  rÊÎf?d ¸3yòdÁÒ @  rËÏf?d ø3y ~Õ @  rÌÐf?d 84y0ñÚ @  rÍÑf?d x4yåO £ @  rÎÒf?d ¸4yź ] @  rÏÓf?d ø4y`ºÑæ @  rÐÔf?d 85y°ò] @  rÑÕf?d x5y@§w @  rÒÖf?d ¸5y`x¥‰ @  rÓ×f?d ø5yû2b @  rÔØf?d 86yfv¤£ @  rÕÙf?d x6y– ^Ú @  rÖÚf?d ¸6y¶ü\$ @  r×Ûf?d ø6y¾]º @  rØÜf?d 87yn6— @  rÙÝf?d x7yžjÌî @  rÚÞf?d ¸7y¾ŸÎ @  rÛßf?d ø7yÝ24Ë @  rÜàf?d 88yé͸Ö @  rÝáf?d x8y²B¯ @  rÞâf?d ¸8y€œ„ @  rß ãf?d ø8y´†c @  rà äf?d 89ydÎïg @  rá åf?d x9y”± @  râ æf?d€ ¸9yÀ‡ F @  s çf?d ø9yºŒâ„ @  s èf?d 8:y'ÈBE @  s éf?d x:yþCÑ @  s êf?d ¸:y2 A/ @  s ëf?d ø:yôø @  s ìf?d 8;y$Ptæ @  s íf?d x;yÑå @  s îf?d ¸;y:hÓ @  s ïf?d ø;y;ëñ @  s ðf?d 8yk3M‡ @  s ùf?d x>y^L @  s úf?d ¸>y~ðNí @  s ûf?d ø>y¸ã÷Ì @  s üf?d 8?yh«{$ @  s ýf?d x?yVfÞ' @  s þf?duÐ@y7 ¸?yv“ÜÙ @  s ÿf?d ø?y{Aµ @  sg?d P@y¸í¯‰ @  sg?d @y/¿»= @  sg?d Ð@y­.¬ã @  sg?d Ay9äŽô @  sg?d PAy»u™* @  sg?d Ay›{0Y @  s g?d ÐAyê'‡ @  s!g?d ByX<Êž @  s"g?d PByÚ­Ý@ @  s# g?d ByMÿÉô @  s$ g?d ÐByÏnÞ* @  s% g?d Cy[¤ü= @  s& g?d PCyÙ5ëã @  s' g?d CyEœ[À @  s(g?d ÐCyÇ L @  s)g?d Dyg% @  s*g?d PDyå‡û @  s+g?d DyrB“O @  s,g?d ÐDyðÓ„‘ @  s-g?d Eyd¦† @  s.g?d PEy戱X @  s/g?d Ey×€?› @  s0g?d ÐEyU(E @  s1g?d FyÇÅ\ @  s2g?d PFy–VÒ‚ @  s3g?d FyÆ6 @  s4g?d ÐFyƒ•Ñè @  s5g?d Gy_óÿ @  s6g?d PGy•Îä! @  s7g?d Gy gT @  s8g?d ÐGy‹öCÜ @  s9g?d Hy›|Ù) @  s: g?d PHyíÎ÷ @  s;!g?d HyŽ¿ÚC @  s<"g?d ÐHy .Í @  s=#g?d Iy˜äïŠ @  s>$g?d PIyuøT @  s?%g?d Iy”|Wµ @  s@&g?d ÐIyí@k @  sA'g?d JyW;­r @  sB(g?d PJyÕªº¬ @  sC)g?d JyBø® @  sD*g?d ÐJyÀi¹Æ @  sE+g?d KyT£›Ñ @  sF,g?d PKyÖ2Œ @  sG-g?d KyJ›<, @  sH.g?d ÐKyÈ +ò @  sI/g?d Lyh†÷É @  sJ0g?d PLyêà @  sK1g?d Ly}Eô£ @  sL2g?d ÐLyÿÔã} @  sM3g?d MykÁj @  sN4g?d PMyéÖ´ @  sO5g?d My؇Xw @  sP6g?d ÐMyZO© @  sQ7g?d NyÀ¢° @  sR8g?d PNy™Qµn @  sS9g?d Ny¡Ú @  sT:g?d ÐNyŒ’¶ @  sU;g?d OyX” @  sVg?d ÐOy„ñ$0 @  sY?g?d Pyî ›{ @  sZ@g?d PPyl›Œ¥ @  s[Ag?d Pyûɘ @  s\Bg?d ÐPyyXÏ @  s]Cg?d Qyí’­Ø @  s^Dg?d PQyoº @  s_Eg?d QyO u @  s`Fg?d ÐQyÍœ« @  saGg?d RyŒJé² @  sbHg?d PRyÛþl @  scIg?d Ry™‰êØ @  sdJg?d ÐRyý @  seKg?d SyÒß @  sfLg?d PSy CÈÏ @  sgMg?d Sy‘êxì @  shNg?d ÐSy{o2 @  siOg?d Ty³÷³  @  sjPg?d PTy1f¤× @  skQg?d Ty¦4°c @  slRg?d ÐTy$¥§½ @  smSg?d Uy°o…ª @  snTg?d PUy2þ’t @  soUg?d Uyö· @  spVg?d ÐUyg i @  sqWg?d VyÀ±æp @  srXg?d PVyB ñ® @  ssYg?d VyÕrå @  stZg?d ÐVyWãòÄ @  su[g?d WyÃ)ÐÓ @  sv\g?d PWyA¸Ç  @  sw]g?d WyÝw. @  sx^g?d ÐWy_€`ð @  sy_g?d XyO ú @  sz`g?d PXyÍ›íÛ @  s{ag?d XyZÉùo @  s|bg?d ÐXyØXî± @  s}cg?d YyL’̦ @  s~dg?d PYyÎÛx @  seg?d Yy£\D¨ @  s€fg?d ÐYy!ÍSv @  sgg?d Zy`¾o @  s‚hg?d PZy⊩± @  sƒig?d Zyuؽ @  s„jg?d ÐZy÷IªÛ @  s…kg?d [ycƒˆÌ @  s†lg?d P[y០@  s‡mg?d [y}»/1 @  sˆng?d Ð[yÿ*8ï @  s‰og?d \y_¦äÔ @  sŠpg?d P\yÝ7ó  @  s‹qg?d \yJeç¾ @  sŒrg?d Ð\yÈôð` @  ssg?d ]y\>Òw @  sŽtg?d P]yޯũ @  sug?d ]yï§Kj @  svg?d Ð]ym6\´ @  s‘wg?d ^y,à±­ @  s’xg?d P^y®q¦s @  s“yg?d ^y9#²Ç @  s”zg?d Ð^y»²¥ @  s•{g?d _y/x‡ @  s–|g?d P_y­éÐ @  s—}g?d _y1@ ó @  suÐ`y˜~g?d Ð_yŠëø @  s™ g?d (`yý  @  sš €g?d h`yœÕ @  s› g?d ¨`yèÎ a @  sœ ‚g?d è`yj_¿ @  s ƒg?d (ayþ•?¨ @  sž „g?d hay|(v @  sŸ …g?d ¨ay\  @  s  †g?d èayÞ›–Û @  s¡ ‡g?d (byŸM{ @  s¢ ˆg?d hbyÜl @  s£ ‰g?d ¨byŠŽx¨ @  s¤ Šg?d èbyov @  s¥ ‹g?d (cyœÕMa @  s¦ Œg?d hcyDZ¿ @  s§ g?d ¨cy‚íêœ @  s¨ Žg?d ècy|ýB @  s© g?d (dy ð!y @  sª g?d hdy"a6§ @  s« ‘g?d ¨dyµ3" @  s¬ ’g?d èdy7¢5Í @  s­ “g?d (ey£hÚ @  s® ”g?d hey!ù @  s¯ •g?d ¨eyñŽÇ @  s° –g?d èey’`™ @  s± —g?d (fyÓ¶t @  s² ˜g?d hfyQ'cÞ @  s³ ™g?d ¨fyÆuwj @  s´ šg?d èfyDä`´ @  sµ ›g?d (gyÐ.B£ @  s¶ œg?d hgyR¿U} @  s· g?d ¨gyÎå^ @  s¸ žg?d ègyL‡ò€ @  s¹ Ÿg?d (hy\ hu @  sº  g?d hhyÞœ« @  s» ¡g?d ¨hyIÎk @  s¼ ¢g?d èhyË_|Á @  s½ £g?d (iy_•^Ö @  s¾ ¤g?d hiyÝI @  s¿ ¥g?d ¨iyS æé @  sÀ ¦g?d èiyÑœñ7 @  sÁ §g?d (jyJ. @  s ¨g?d hjyÛ ð @  sà ©g?d ¨jy…‰D @  sÄ ªg?d èjyš @  sÅ «g?d (ky“Ò* @  sÆ ¬g?d hkyC=S @  sÇ ­g?d ¨kyêp @  sÈ ®g?d èky{š® @  sÉ ¯g?d (ly¯÷F• @  sÊ °g?d hly-fQK @  sË ±g?d ¨lyº4Eÿ @  sÌ ²g?d èly8¥R! @  sÍ ³g?d (my¬op6 @  sÎ ´g?d hmy.þgè @  sÏ µg?d ¨myöé+ @  sÐ ¶g?d èmygþõ @  sÑ ·g?d (nyܱì @  sÒ ¸g?d hny^ 2 @  sÓ ¹g?d ¨nyÉr† @  sÔ ºg?d ènyKãX @  sÕ »g?d (oyß)%O @  sÖ ¼g?d hoy]¸2‘ @  s× ½g?d ¨oyÁ‚² @  sØ ¾g?d èoyC€•l @  sÙ ¿g?d (py){*' @  sÚ Àg?d hpy«ê=ù @  sÛ Ág?d ¨py<¸)M @  sÜ Âg?d èpy¾)>“ @  sÝ Ãg?d (qy*ã„ @  sÞ Äg?d hqy¨r Z @  sß Åg?d ¨qyˆ|¢) @  sà Æg?d èqy íµ÷ @  sá Çg?d (ryK;Xî @  sâ Èg?d€ hryOüç‰ @  t Ég?d ¨ry9ï» @  t Êg?d èry»~¬Ê @  t Ëg?d (syêýu0 @  t Ìg?d hsyhlbî @  t Íg?d ¨sy:w· @  t Îg?d èsy¸æši @  t Ïg?d (tyÖØ( @  t Ðg?d htyTIö @  t Ñg?d ¨tyRᯠ@  t Òg?d èty„Ãöq @  t Óg?d (uyÕ@/‹ @  t Ôg?d huyWÑ8U @  t Õg?d ¨uyÊ×  @  t Ög?d èuy‡[ÀÒ @  t ×g?d (vy¥žLQ @  t Øg?d hvy'[ @  t Ùg?d ¨vyu´Ö @  t Úg?d èvy÷…£ @  t Ûg?d (wy¦zò @  t Üg?d hwy$—m, @  t Ýg?d ¨wyvŒ‚u @  t Þg?d èwyô•« @  t ßg?d (xy*%P$ @  t àg?d hxy¨´Gú @  t ág?d ¨xyú¯¨£ @  t âg?d èxyx>¿} @  t ãg?d (yy)½f‡ @  t äg?d hyy«,qY @  t åg?d ¨yyù7ž @  t æg?d èyy{¦‰Þ @  t çg?d (zyHe"í @  t èg?d hzyÊô53 @  t! ég?d ¨zy˜ïÚj @  t" êg?d èzy~Í´ @  t# ëg?d ({yKýN @  t$ ìg?d h{yÉl @  t% íg?d ¨{y›wìÉ @  t& îg?d è{yæû @  t' ïg?d (|ywØxV @  t( ðg?d h|yõIoˆ @  t) ñg?d ¨|y§R€Ñ @  t* òg?d è|y%× @  t+ óg?d (}yt@Nõ @  t, ôg?d h}yöÑY+ @  t- õg?d ¨}y¤Ê¶r @  t. ög?d è}y&[¡¬ @  t/ ÷g?d (~yž-/ @  t0 øg?d h~y†:ñ @  t1 ùg?d ¨~yÔÕ¨ @  t2 úg?d è~yV…Âv @  t3 ûg?d (yŒ @  t4 üg?d hy…— R @  t5 ýg?d ¨yuЀy'׌ã  @  t6 þg?d èyUôÕ @  t7 ÿg?d @€y¦¦zS @  t8 h?d €€y†Sx­ @  t9 h?d À€yv,‚Ô @  t: h?d y¦d< @  t; h?d @y¥>Lð @  t< h?d €y…ËN @  t= h?d Àyu´´w @  t> h?d ‚yèð¶ @  t? h?d @‚yjá @  t@ h?d €‚yJ ö @  tA  h?d À‚yºkö @  tB  h?d ƒyj#zg @  tC  h?d @ƒyiy8« @  tD  h?d €ƒyIŒ:U @  tE  h?d Àƒy¹óÀ, @  tF h?d „y ½3# @  tG h?d @„yU\T³ @  tH h?d €„yu©VM @  tI h?d À„y…Ö¬4 @  tJ h?d …yUž Ü @  tK h?d @…yVÄb @  tL h?d €…yv1`î @  tM h?d À…y†Nš— @  tN h?d †y :V @  tO h?d @†y&Ê @  tP h?d €†yï4 @  tQ h?d À†yöùM @  tR h?d ‡y&Øu¥ @  tS h?d @‡y%‚7i @  tT h?d €‡yw5— @  tU h?d À‡yõÏî @  tV h?d ˆyÁ÷Có @  tW h?d @ˆy©¡¿ @  tX  h?d €ˆy‰TA @  tY !h?d Àˆyy+å8 @  tZ "h?d ‰y©ciÐ @  t[ #h?d @‰yª9+ @  t\ $h?d €‰yŠÌ)â @  t] %h?d À‰yz³Ó› @  t^ &h?d Šyç÷sZ @  t_ 'h?d @ŠyËáov @  t` (h?d €Šyëmˆ @  ta )h?d ÀŠyk—ñ @  tb *h?d ‹yË# @  tc +h?d @‹yÈyYÕ @  td ,h?d €‹yèŒ[+ @  te -h?d À‹yó¡R @  tf .h?d Œy½R] @  tg /h?d @Œyô\5Í @  th 0h?d €ŒyÔ©73 @  ti 1h?d ÀŒy$ÖÍJ @  tj 2h?d yôžA¢ @  tk 3h?d @y÷Än @  tl 4h?d €y×1 @  tm 5h?d Ày'Nûé @  tn 6h?d Žyº [( @  to 7h?d @Žy‡`´ @  tp 8h?d €Žy§ïbJ @  tq 9h?d ÀŽyW˜3 @  tr :h?d y‡ØÛ @  ts ;h?d @y„‚V @  tt h?d yêÖ" @  tw ?h?d @yrÐY @  tx @h?d €yR%[ @  ty Ah?d Ày¢Z¡ø @  tz Bh?d ‘yr- @  t{ Ch?d @‘yqHoÜ @  t| Dh?d €‘yQ½m" @  t} Eh?d À‘y¡Â—[ @  t~ Fh?d ’y<†7š @  t Gh?d @’y]Á @  t€ Hh?d €’y}4ë @  t Ih?d À’yKå’ @  t‚ Jh?d “y]iz @  tƒ Kh?d @“y^Y+¶ @  t„ Lh?d €“y~¬)H @  t… Mh?d À“yŽÓÓ1 @  t† Nh?d ”y— > @  t‡ Oh?d @”yb|G® @  tˆ Ph?d €”yB‰EP @  t‰ Qh?d À”y²ö¿) @  tŠ Rh?d •yb¾3Á @  t‹ Sh?d @•yaäq  @  tŒ Th?d €•yAsó @  t Uh?d À•y±n‰Š @  tŽ Vh?d –y,*)K @  t Wh?d @–y:× @  t Xh?d €–y1Ï) @  t‘ Yh?d À–yÁ°êP @  t’ Zh?d —yøf¸ @  t“ [h?d @—y¢$t @  t” \h?d €—y2W&Š @  t• ]h?d À—yÂ(Üó @  t– ^h?d ˜yö×Pî @  t— _h?d @˜yž¢ @  t˜ `h?d €˜y¾t \ @  t™ ah?d À˜yN ö% @  tš bh?d ™yžCzÍ @  t› ch?d @™y8 @  tœ dh?d €™y½ì:ÿ @  t eh?d À™yM“À† @  tž fh?d šyÐ×`G @  tŸ gh?d @šyüÁ|k @  t  hh?d €šyÜ4~• @  t¡ ih?d Àšy,K„ì @  t¢ jh?d ›yü @  t£ kh?d @›yÿYJÈ @  t¤ lh?d €›y߬H6 @  t¥ mh?d À›y/Ó²O @  t¦ nh?d œy6A@ @  t§ oh?d @œyÃ|&Ð @  t¨ ph?d €œyã‰$. @  t© qh?d ÀœyöÞW @  tª rh?d yþR¿ @  t« sh?d @yÀäs @  t¬ th?d €yà @  t­ uh?d Àynèô @  t® vh?d žy*H5 @  t¯ wh?d @žy°:s© @  t° xh?d €žyÏqW @  t± yh?d Àžy`°‹. @  t² zh?d Ÿy°øÆ @  t³ {h?d @Ÿy³¢E  @  t´ |h?d €Ÿy“WGô @  tµ }huРy?d ÀŸyc(½ @  t¶ ~h?d  y#cë @  t· h?d X y—ã|$ @  t¸ €h?d ˜ y·~Ú @  t¹ h?d Ø yGi„£ @  tº ‚h?d ¡y®æÔž @  t»ƒh?d X¡y­¼–R @  t¼„h?d ˜¡yI”¬ @  t½…h?d Ø¡y}6nÕ @  t¾†h?d ¢yàrÎ @  t¿‡h?d X¢ybcÔª @  tÀˆh?d ˜¢yB–ÖT @  tÁ‰h?d Ø¢y²é,- @  tŠh?d £yb¡ Å @  tËh?d X£yaûâ  @  tÄŒh?d ˜£yAà÷ @  tÅh?d Ø£y±qŽ @  tÆŽh?d ¤y¨?é @  tÇh?d X¤y]ÞŽ @  tÈh?d ˜¤y}+Œï @  tÉ‘h?d ؤyTv– @  tÊ’h?d ¥y]ú~ @  tË“h?d X¥y^F¸² @  tÌ”h?d ˜¥y~³ºL @  tÍ•h?d Ø¥yŽÌ@5 @  tΖh?d ¦yˆàô @  tÏ—h?d X¦y.˜Ûh @  tИh?d ˜¦ymÙ– @  tÑ™h?d ئyþ#ï @  tÒšh?d §y.Z¯ @  tÓ›h?d X§y-íË @  tÔœh?d ˜§y õï5 @  tÕh?d اyýŠL @  tÖžh?d ¨yÉu™Q @  tןh?d X¨y¡#Ç @  tØ h?d ˜¨yÖÅã @  tÙ¡h?d بyq©?š @  tÚ¢h?d ©y¡á³r @  tÛ£h?d X©y¢»ñ¾ @  tܤh?d ˜©y‚Nó@ @  tÝ¥h?d Ø©yr1 9 @  tÞ¦h?d ªyïu©ø @  tß§h?d XªyÃcµÔ @  tà¨h?d ˜ªyã–·* @  tá©h?d تyéMS @  tâªh?d€ «y·bÝ @  u«h?d X«yUy×ø @  u¬h?d ˜«yuŒÕ @  u­h?d Ø«y@ºÔ’ @  u®h?d ¬yYô' @  u¯h?d X¬yb§w @  u°h?d ˜¬yBR‰ @  u±h?d جy|Ÿ¸Š @  u²h?d ­y¬×4b @  u ³h?d X­yjÄC @  u ´h?d ˜­yJ1½ @  u µh?d Ø­yŽ) @  u ¶h?d ®yâC.è @  u ·h?d X®y¼@tî @  u¸h?d ˜®yœµv @  u¹h?d Ø®yÙíó @  uºh?d ¯yß‘a @  u»h?d X¯y‚Ø: @  u¼h?d ˜¯y9wÚÄ @  u½h?d دy AÛP @  u¾h?d °y²Ÿgâ @  u¿h?d X°yä+sÅ @  uÀh?d ˜°yÄÞq; @  uÁh?d ذyúÔ8 @  uÂh?d ±y*[XÐ @  uÃh?d X±yìHáñ @  uÄh?d ˜±y̽ã @  uÅh?d رyù‹â› @  uÆh?d ²ydÏBZ @  uÇh?d X²y:Ì\ @  uÈh?d ˜²y9¢ @  uÉh?d زy˜S¦ñ @  u Êh?d ³yH* @  u!Ëh?d X³yŽ“8 @  u"Ìh?d ˜³y®ý‘Æ @  u#Íh?d سy›ËR @  u$Îh?d ´y‚…c] @  u%Ïh?d X´y¹Ö[· @  u&Ðh?d ˜´y™#YI @  u'Ñh?d Ø´y§îüJ @  u(Òh?d µyw¦p¢ @  u)Óh?d Xµy±µÉƒ @  u*Ôh?d ˜µy‘@Ë} @  u+Õh?d صy¤vÊé @  u,Öh?d ¶y92j( @  u-×h?d X¶yg10. @  u.Øh?d ˜¶yGÄ2Ð @  u/Ùh?d ضyÔ¨©3 @  u0Úh?d ·yà%Û @  u1Ûh?d X·yÂóœú @  u2Üh?d ˜·yâž @  u3Ýh?d Ø·y×0Ÿ @  u4Þh?d ¸yãÏ @  u5ßh?d X¸yE+» @  u6àh?d ˜¸yeÞE @  u7áh?d ظy[µF @  u8âh?d ¹y‹[9® @  u9ãh?d X¹yMH€ @  u:äh?d ˜¹ym½‚q @  u;åh?d عyX‹ƒå @  u<æh?d ºyÅÏ#$ @  u=çh?d Xºy›Ìy" @  u>èh?d ˜ºy»9{Ü @  u?éh?d غy—TÁ @  u@êh?d »yGMõ @  uAëh?d X»yôÔ @  uBìh?d ˜»y¡úö* @  uCíh?d Ø»y”Ì÷¾ @  uDîh?d ¼y‚± @  uEïh?d X¼y¶Ñ<[ @  uFðh?d ˜¼y–$>¥ @  uGñh?d ؼy¨é›¦ @  uHòh?d ½yx¡N @  uIóh?d X½y¾²®o @  uJôh?d ˜½yžG¬‘ @  uKõh?d ؽy«q­ @  uLöh?d ¾y65 Ä @  uM÷h?d X¾yh6W @  uNøh?d ˜¾yHÃU< @  uOùh?d ؾyÛ¯Îß @  uPúh?d ¿y çB7 @  uQûh?d X¿yÍôû @  uRüh?d ˜¿yíùè @uÐÀy  uSýh?d Ø¿yž© @  uTþh?d 0Ày~nNû @  uUÿh?d pÀyJ{[B @  uVi?d °ÀyjŽY¼ @  uWi?d ðÀyTCü¿ @  uXi?d 0Áy„ pW @  uYi?d pÁyBÉv @  uZi?d °Áybíˈ @  u[i?d ðÁyWÛÊ @  u\i?d 0ÂyÊŸjÝ @  u]i?d pÂy”œ0Û @  u^i?d °Ây´i2% @  u_ i?d ðÂy6Žv @  u` i?d 0ÃyæKž @  ua i?d pÃy X»¿ @  ub i?d °Ãy­¹A @  uc i?d ðÃy5›¸Õ @  udi?d 0Äy,ÕKÚ @  uei?d pÄy†s0 @  ufi?d °Äy7sqÎ @  ugi?d ðÄy ¾ÔÍ @  uhi?d 0ÅyÙöX% @  uii?d pÅyåá @  uji?d °Åy?ãú @  uki?d ðÅy &ân @  uli?d 0Æy—bB¯ @  umi?d pÆyÉa© @  uni?d °Æyé”W @  uoi?d ðÆyzø´ @  upi?d 0Çyª° \ @  uqi?d pÇyl£´} @  uri?d °ÇyLV¶ƒ @  usi?d ðÇyy`· @  uti?d 0ÈyMŸ;  @  uui?d pÈyë{:< @  uv i?d °ÈyËŽ8 @  uw!i?d ðÈyõCÁ @  ux"i?d 0Éy% ) @  uy#i?d pÉy㨠@  uz$i?d °ÉyÃíªö @  u{%i?d ðÉyöÛ«b @  u|&i?d 0ÊykŸ £ @  u}'i?d pÊy5œQ¥ @  u~(i?d °ÊyiS[ @  u)i?d ðÊyÚRÙ« @  u€*i?d 0Ëy UC @  u+i?d pËyÌ ìb @  u‚,i?d °Ëyìüîœ @  uƒ-i?d ðËyÙÊï @  u„.i?d 0ÌyÀ„ @  u…/i?d pÌyû×$í @  u†0i?d °ÌyÛ"& @  u‡1i?d ðÌyåïƒ @  uˆ2i?d 0Íy5§ø @  u‰3i?d pÍyó´¶Ù @  uŠ4i?d °ÍyÓA´' @  u‹5i?d ðÍyæwµ³ @  uŒ6i?d 0Îy{3r @  u7i?d pÎy%0Ot @  uŽ8i?d °ÎyÅMŠ @  u9i?d ðÎy–©Öi @  u:i?d 0ÏyFáZ @  u‘;i?d pÏy€òã  @  u’i?d 0Ðy+ï\x @  u•?i?d pÐy}[H_ @  u–@i?d °Ðy]®J¡ @  u—Ai?d ðÐyccï¢ @  u˜Bi?d 0Ñy³+cJ @  u™Ci?d pÑyu8Úk @  ušDi?d °ÑyUÍØ• @  u›Ei?d ðÑy`ûÙ @  uœFi?d 0Òyý¿yÀ @  uGi?d pÒy£¼#Æ @  užHi?d °ÒyƒI!8 @  uŸIi?d ðÒy#k @  u Ji?d 0ÓyÑkƒ @  u¡Ki?d pÓyx¨¢ @  u¢Li?d °Óy7ª\ @  u£Mi?d ðÓy»«È @  u¤Ni?d 0ÔyõXÇ @  u¥Oi?d pÔy ¦`- @  u¦Pi?d °ÔySbÓ @  u§Qi?d ðÔy>žÇÐ @  u¨Ri?d 0ÕyîÖK8 @  u©Si?d pÕy(Åò @  uªTi?d °Õy0ðç @  u«Ui?d ðÕy=ñs @  u¬Vi?d 0Öy BQ² @  u­Wi?d pÖyþA ´ @  u®Xi?d °ÖyÞ´ J @  u¯Yi?d ðÖyMØ’© @  u°Zi?d 0×yA @  u±[i?d p×y[ƒ§` @  u²\i?d °×y{v¥ž @  u³]i?d ð×yN@¤  @  u´^i?d 0Øyz¿( @  uµ_i?d pØyÜ[)! @  u¶`i?d °Øyü®+ß @  u·ai?d ðØyÂcŽÜ @  u¸bi?d 0Ùy+4 @  u¹ci?d pÙyÔ8» @  uºdi?d °Ùyô͹ë @  u»ei?d ðÙyÁû¸ @  u¼fi?d 0Úy\¿¾ @  u½gi?d pÚy¼B¸ @  u¾hi?d °Úy"I@F @  u¿ii?d ðÚy$ú‡ @  uÀji?d 0ÛyÞlvo @  uÁki?d pÛyÏN @  uÂli?d °Ûy8ŠÍ° @  uÃmi?d ðÛy ¼Ì$ @  uÄni?d 0Üyò?+ @  uÅoi?d pÜy/¡Á @  uÆpi?d °ÜyT? @  uÇqi?d ðÜy1™ < @  uÈri?d 0ÝyáÑ,Ô @  uÉsi?d pÝy'•õ @  uÊti?d °Ýy7—  @  uËui?d ðÝy2–Ÿ @  uÌvi?d 0Þy¯E6^ @  uÍwi?d pÞyñFlX @  uÎxi?d °Þyѳn¦ @  uÏyi?d ðÞyBßõE @  uÐzi?d 0ßy’—y­ @  uÑ{i?d pßyT„ÀŒ @  uÒ|i?d uÐày/°ßytqÂr @  uÓ}i?d ðßyAGÃæ @  uÔ~i?d HàyXã @  uÕi?d ˆày±õÈ… @  uÖ€i?d Èày3dß[ @  u×i?d áy_pán @  uØ‚i?d HáyÝáö° @  uÙƒi?d ˆáy¹–Z± @  uÚ„i?d Èáy;Mo @  uÛ…i?d âyäûä @  u܆i?d Hây“uì: @  u݇i?d ˆâyo£ @  uÞˆi?d Èây탴 @  u߉i?d ãy=0“§ @  uàŠi?d Hãy¿¡„y @  uá‹i?d ˆãyÛÖ(x @  uâŒi?d€ Èãy˜È¦ @  vi?d äyרeÊ @  vŽi?d HäyU9r @  vi?d ˆäy G¤3 @  vi?d Èäy‹Ö³í @  v‘i?d åy)pÒ¢ @  v’i?d Håy«áÅ| @  v“i?d ˆåy$6 @  v”i?d Èåyƒµ!Ù @  v •i?d æyll¿ @  v –i?d HæyîŽ{a @  v —i?d ˆæyנϪ @  v ˜i?d ÈæyU1Øt @  v ™i?d çy÷—¹; @  vši?d Hçyu®å @  v›i?d ˆçyrbc~ @  vœi?d Èçyðót  @  vi?d èy¶â @  vži?d Hèy4sÄ @  vŸi?d ˆèyõºí? @  v i?d Èèyw+úá @  v¡i?d éyÕ›® @  v¢i?d HéyWŒp @  v£i?d ˆéyýÙ  @  v¤i?d ÈéyHhÕ @  v¥i?d êyâ%³ @  v¦i?d Hêys2m @  v§i?d ˆêy+]†¦ @  v¨i?d Èêy©Ì‘x @  v©i?d ëy jð7 @  vªi?d Hëy‰ûçé @  v«i?d ˆëyŸ™  @  v ¬i?d Èëy @  v!­i?d ìyv¨´ @  v"®i?d Hìyô9j @  v#¯i?d ˆìy¨GÅM @  v$°i?d Èìy*ÖÒ“ @  v%±i?d íyˆp³Ü @  v&²i?d Híy ᤠ@  v'³i?d ˆíy $Wy @  v(´i?d Èíy"µ@§ @  v)µi?d îyÍ Á @  v*¶i?d HîyOŽ @  v+·i?d ˆîyv ®Ô @  v,¸i?d Èîyô1¹  @  v-¹i?d ïyV—ØE @  v.ºi?d HïyÔÏ› @  v/»i?d ˆïyÓb @  v0¼i?d ÈïyQóÞ @  v1½i?d ðyÃDË @  v2¾i?d HðyRS @  v3¿i?d ˆðy.Ë©ÿ @  v4Ài?d Èðy¬Z¾! @  v5Ái?d ñyüßn @  v6Âi?d HñyŒmȰ @  v7Ãi?d ˆñy&¨;Ë @  v8Äi?d Èñy¤9, @  v9Åi?d òyK“as @  v:Æi?d HòyÉv­ @  v;Çi?d ˆòyð,Âf @  v<Èi?d Èòyr½Õ¸ @  v=Éi?d óyд÷ @  v>Êi?d HóyRŠ£) @  v?Ëi?d ˆóyêïO @  v@Ìi?d Èóyh~XN @  vAÍi?d ôyÞFæ @  vBÎi?d HôyOQ8 @  vCÏi?d ˆôyÝ1‡ @  vDÐi?d Èôy_ Á @  vEÑi?d õyýñŽ @  vFÒi?d Hõy—æP @  vGÓi?d ˆõyÕR+ @  vHÔi?d ÈõyWÃõ @  vIÕi?d öy¸iO“ @  vJÖi?d Höy:øXM @  vK×i?d ˆöyÖì† @  vLØi?d ÈöyGûX @  vMÙi?d ÷y#áš @  vNÚi?d H÷y¡pÉ @  vOÛi?d ˆ÷y¦@R @  vPÜi?d È÷y$…WŒ @  vQÝi?d øyb”66 @  vRÞi?d Høyà!è @  vSßi?d ˆøy!ÌÎ @  vTài?d Èøy£]ÙÍ @  vUái?d ùyû¸‚ @  vVâi?d Hùyƒj¯\ @  vWãi?d ˆùy)¯\' @  vXäi?d Èùy«>Kù @  vYåi?d úyD”Ÿ @  vZæi?d HúyÆA @  v[çi?d ˆúyÿ+¥Š @  v\èi?d Èúy}º²T @  v]éi?d ûyßÓ @  v^êi?d Hûy]ÄÅ @  v_ëi?d ˆûyKï.î @  v`ìi?d ÈûyÉ~90 @  vaíi?d üy¢Þ'˜ @  vbîi?d Hüy O0F @  vcïi?d ˆüy|1æa @  vdði?d Èüyþ ñ¿ @  veñi?d ýy\ð @  vfòi?d HýyÞ—‡. @  vgói?d ˆýytRtU @  vhôi?d ÈýyöÃc‹ @  viõi?d þyi.í @  vjöi?d Hþy›ø93 @  vk÷i?d ˆþy¢Öø @  vløi?d Èþy Gš& @  vmùi?d ÿy‚áûi @  vnúi?d Hÿypì· @  voûi?d ˆÿy!, @  vpuÐzüi?d Èÿy……6ò @  vqýi?d zóš“B @  vrþi?d `zq „œ @  vsÿi?d  zJÍ @  vtj?d àz€] @  vuj?d z°&<\ @  vvj?d `z2·+‚ @  vwj?d  z˜rØù @  vxj?d àzãÏ' @  vyj?d zõI‚A @  vzj?d `zwØ•Ÿ @  v{j?d  zNö!T @  v|j?d àzÌg6Š @  v} j?d znÁWÅ @  v~ j?d `zìP@ @  v j?d  z·cœ“ @  v€ j?d àz5ò‹M @  v j?d z^R•å @  v‚j?d `zÜÂ; @  vƒj?d  z€½T @  v„j?d àz,C @  v…j?d z Š" @  v†j?d `z"5S @  v‡j?d  zˆÞÆ( @  vˆj?d àz OÑö @  v‰j?d zååœ @  vŠj?d `zgt‹N @  v‹j?d  z^Z?… @  vŒj?d àzÜË([ @  vj?d z~mI @  vŽj?d `züü^Ê @  vj?d  zû˜“Q @  vj?d àzy „ @  v‘j?d z?å5 @  v’j?d `z½‰òë @  v“j?d  z|@ @  v” j?d àzþÑ Î @  v•!j?d z\wk @  v–"j?d ` zÞæ|_ @  v—#j?d   zt#$ @  v˜$j?d à zö²˜ú @  v™%j?d zÕœ @  vš&j?d ` z›‰ÂB @  v›'j?d   z¢§v‰ @  vœ(j?d à z 6aW @  v)j?d z‚ @  vž*j?d ` zÆ @  vŸ+j?d   zcýí @  v ,j?d à z”òê3 @  v¡-j?d zÿRô› @  v¢.j?d ` z}ÃãE @  v£/j?d   z!½5b @  v¤0j?d à z£,"¼ @  v¥1j?d zŠCó @  v¦2j?d ` zƒT- @  v§3j?d   z)Þ§V @  v¨4j?d à z«O°ˆ @  v©5j?d zDåýî @  vª6j?d `zÆtê0 @  v«7j?d  zÿZ^û @  v¬8j?d àz}ËI% @  v­9j?d zßm(j @  v®:j?d `z]ü?´ @  v¯;j?d  zZ˜ò/ @  v°j?d `z–¨£: @  v³?j?d  z§1YÐ @  v´@j?d àz% N @  vµAj?d z‡/A @  v¶Bj?d `z—8Ÿ @  v·Cj?d  z¯RËä @  v¸Dj?d àz-ÃÜ: @  v¹Ej?d zÂi‘\ @  vºFj?d `z@ø†‚ @  v»Gj?d  zyÖ2I @  v¼Hj?d àzûG%— @  v½Ij?d zYáDØ @  v¾Jj?d `zÛpS @  v¿Kj?d  zc¿¿ @  vÀLj?d àzᄨa @  vÁMj?d zŠ$¶É @  vÂNj?d `zµ¡ @  vÃOj?d  zTËw0 @  vÄPj?d àzÖZ`î @  vÅQj?d ztü¡ @  vÆRj?d `zöm @  vÇSj?d  z\¨å @  vÈTj?d àzÞ9òÚ @  vÉUj?d z1“¿¼ @  vÊVj?d `z³¨b @  vËWj?d  zŠ,© @  vÌXj?d àz½ w @  vÍYj?d zªj8 @  vÎZj?d `z(Š}æ @  vÏ[j?d  z/î°} @  vÐ\j?d àz­§£ @  vÑ]j?d zënÆ @  vÒ^j?d `ziÿÑÇ @  vÓ_j?d  z¨6>< @  vÔ`j?d àz*§)â @  vÕaj?d zˆH­ @  vÖbj?d `z _s @  v×cj?d  z U¬ @  vØdj?d àz"Ä»Ö @  vÙej?d zÍnö° @  vÚfj?d `zOÿán @  vÛgj?d  zvÑU¥ @  vÜhj?d àzô@B{ @  vÝij?d zVæ#4 @  vÞjj?d `zÔw4ê @  vßkj?d  zÂÞÁ @  vàlj?d àz@„É @  vámj?d z+$×· @  vânj?d€ `zÝvÜÏ @  woj?d  z`IBÁ @  wpj?d àzâØU @  wqj?d z…7Ͻ @  wrj?d `z¦Øc @  wsj?d  zcÑtb @  wtj?d àzá@c¼ @  wuj?d zÀXq  @  wvj?d `zBÉf~ @  w wj?d  z¾®)X @  w xj?d àz† @  w yj?d z[Ф$ @  w zj?d `zÙA³ú @  w {j?d  z½6ûuÐ z @  w|j?d àz?§% @  w}j?d 8 z_QZ~ @  w~j?d x zÝÀM  @  wj?d ¸ z4Ö5 @  w€j?d ø z¶Gë @  wj?d 8!zѨ•I @  w‚j?d x!zS9‚— @  wƒj?d ¸!z7N.– @  w„j?d ø!zµß9H @  w…j?d 8"z”Ç+T @  w†j?d x"zV<Š @  w‡j?d ¸"zê1s¬ @  wˆj?d ø"zh dr @  w‰j?d 8#zOþÐ @  wŠj?d x#zÞé @  w‹j?d ¸#zé©E @  wŒj?d ø#zk8RÑ @  wj?d 8$zr S @  w Žj?d x$zð @  w!j?d ¸$zi+0G @  w"j?d ø$zëº'™ @  w#‘j?d 8%zŒU½; @  w$’j?d x%zĪå @  w%“j?d ¸%zj³ä @  w&”j?d ø%zè": @  w'•j?d 8&zÉ:& @  w(–j?d x&zK«ø @  w)—j?d ¸&z·Ì[Þ @  w*˜j?d ø&z5]L @  w+™j?d 8'zR²Ö¢ @  w,šj?d x'zÐ#Á| @  w-›j?d ¸'z´Tm} @  w.œj?d ø'z6Åz£ @  w/j?d 8(zÇzƒ @  w0žj?d x(z‘Vm] @  w1Ÿj?d ¸(z•ÖyK @  w2 j?d ø(zGn• @  w3¡j?d 8)zp¨ô7 @  w4¢j?d x)zò9ãé @  w5£j?d ¸)z–NOè @  w6¤j?d ø)zßX6 @  w7¥j?d 8*z5ÇJ* @  w8¦j?d x*z·V]ô @  w9§j?d ¸*zK1Ò @  w:¨j?d ø*zÉ   @  w;©j?d 8+z®OŸ® @  w<ªj?d x+z,Þˆp @  w=«j?d ¸+zH©$q @  w>¬j?d ø+zÊ83¯ @  w?­j?d 8,z}Šm¿ @  w@®j?d x,zÿza @  wA¯j?d ¸,zf,W« @  wB°j?d ø,zä½@u @  wC±j?d 8-zƒRÚ× @  wD²j?d x-zÃÍ  @  wE³j?d ¸-ze´a @  wF´j?d ø-zç%vÖ @  wGµj?d 8.zÆ=dÊ @  wH¶j?d x.zD¬s @  wI·j?d ¸.z¸Ë<2 @  wJ¸j?d ø.z:Z+ì @  wK¹j?d 8/z]µ±N @  wLºj?d x/zß$¦ @  wM»j?d ¸/z»S ‘ @  wN¼j?d ø/z9ÂO @  wO½j?d 80z–á-À @  wP¾j?d x0zp: @  wQ¿j?d ¸0zà ; @  wRÀj?d ø0zb1,Ç @  wSÁj?d 81zÞ¶e @  wTÂj?d x1z‡O¡» @  wUÃj?d ¸1zã8 º @  wVÄj?d ø1za©d @  wWÅj?d 82z@±x @  wXÆj?d x2z ¦ @  wYÇj?d ¸2z>GP€ @  wZÈj?d ø2z¼ÖG^ @  w[Éj?d 83zÛ9Ýü @  w\Êj?d x3zY¨Ê" @  w]Ëj?d ¸3z=ßf# @  w^Ìj?d ø3z¿Nqý @  w_Íj?d 84z¦û) @  w`Îj?d x4z$j>¡ @  waÏj?d ¸4z½]k @  wbÐj?d ø4z?̵ @  wcÑj?d 85zX#ž @  wdÒj?d x5zÚ²‰É @  weÓj?d ¸5z¾Å%È @  wfÔj?d ø5zzñw× @  wˆöj?d x>zsŒ`  @  w‰÷j?d ¸>zë// @  wŠøj?d ø>z z8ñ @  w‹ùj?d 8?zj•¢S @  wŒúj?d x?zèµ @  wûj?duÐ@z7 ¸?zŒsŒ @  wŽüj?d ø?zâR @  wýj?d P@zܳ8S @  wþj?d @züF:­ @  w‘ÿj?d Ð@zÈS/ @  w’k?d Az£ü @  w“k?d PAz--¢h @  w”k?d Az Ø – @  w•k?d ÐAzËË· @  w–k?d BzV¹v @  w—k?d PBzhBu @  w˜k?d BzH·‹ @  w™k?d ÐBz´D @  wšk?d CzÆüÈe @  w› k?d PCzóÊÉñ @  wœ k?d CzÓ?Ë @  w k?d ÐCz,r. @  wž k?d Dz b! @  wŸ k?d PDzŽ=r @  w k?d Dz®ý?Œ @  w¡k?d ÐDz•®f @  w¢k?d EzE拎 @  w£k?d PEzpЊ @  w¤k?d EzP%ˆä @  w¥k?d ÐEz–61Å @  w¦k?d Fz r‘ @  w§k?d PFz5¿4 @  w¨k?d FzJ6ù @  w©k?d ÐFzKIlÿ @  wªk?d Gz›à @  w«k?d PGz®7რ@  w¬k?d GzŽÂã} @  w­k?d ÐGzHÑZ\ @  w®k?d Hz|.ÖA @  w¯k?d PHzïBM¢ @  w°k?d HzÏ·O\ @  w±k?d ÐHziSNj @  w² k?d Iz¹‚ @  w³!k?d PIzŒ-à @  w´"k?d Iz¬ØÁè @  wµ#k?d ÐIzjËxÉ @  w¶$k?d Jz÷Ø @  w·%k?d PJzÉB}  @  w¸&k?d Jzé·õ @  w¹'k?d ÐJz·´%ó @  wº(k?d Kzgü© @  w»)k?d PKzRʨ @  w¼*k?d Kzr?ªq @  w½+k?d ÐKz´,P @  w¾,k?d Lz­bà_ @  w¿-k?d PLzZž @  wÀ.k?d Lz¡úX` @  wÁ/k?d ÐLzš©`Š @  wÂ0k?d MzJáìb @  wÃ1k?d PMz×íö @  wÄ2k?d Mz_"ï @  wÅ3k?d ÐMz™1V) @  wÆ4k?d Nzuöè @  wÇ5k?d PNz:¸Së @  wÈ6k?d NzMQ @  wÉ7k?d ÐNzDN  @  wÊ8k?d Oz”‡û @  wË9k?d POz¡0†o @  wÌ:k?d OzÅ„‘ @  wÍ;k?d ÐOzGÖ=° @  wÎk?d PzJ‘ @  wÑ?k?d ÐPz% 8 @  wÒ@k?d QzÌm€Ð @  wÓAk?d PQzù[D @  wÔBk?d QzÙ®ƒº @  wÕCk?d ÐQz½:› @  wÖDk?d Rz‚ùšZ @  w×Ek?d PRz¼4?Y @  wØFk?d RzœÁ=§ @  wÙGk?d ÐRzÂÂg¡ @  wÚHk?d SzŠëI @  wÛIk?d PSz'¼êÝ @  wÜJk?d SzIè# @  wÝKk?d ÐSzÁZQ @  wÞLk?d TzØ¢  @  wßMk?d PTzZ~^ @  wàNk?d Tzz‹  @  wáOk?d ÐTzAØ$J @  wâPk?d€ Uz¹ ¼ð @  xQk?d PUzm}õM @  xRk?d UzMˆ÷³ @  xSk?d ÐUzNÒµ @  xTk?d VzÓ–¾ @  xUk?d PVz#éïÇ @  xVk?d Vzí9 @  xWk?d ÐVz“­èE @  xXk?d WzCåd­ @  x Yk?d PWz³šžÔ @  x Zk?d Wz“oœ* @  x [k?d ÐWz5Þæ @  x \k?d Xz¤ÊRû @  x ]k?d PXzTµ¨‚ @  x^k?d Xzt@ª| @  x_k?d ÐXz±·ÊÐ @  x`k?d YzaÿF8 @  xak?d PYz‘€¼A @  xbk?d Yz±u¾¿ @  xck?d ÐYz²/üs @  xdk?d Zz/k\² @  xek?d PZzß¦Ë @  xfk?d Zzÿá¤5 @  xgk?d ÐZzoP¡I @  xhk?d [z¿-¡ @  xik?d P[zOgר @  xjk?d [zo’Õ& @  xkk?d Ð[zlÈ—ê @  xlk?d \zu†då @  xmk?d P\z…ùžœ @  xnk?d \z¥ œb @  xok?d Ð\zìJ⢠@  x pk?d ]z<nJ @  x!qk?d P]zÌ}”3 @  x"rk?d ]z숖Í @  x#sk?d Ð]zïÒÔ @  x$tk?d ^zr–tÀ @  x%uk?d P^z‚鎹 @  x&vk?d ^z¢ŒG @  x'wk?d Ð^z2­‰; @  x(xk?d _zâåÓ @  x)yk?d P_zšÿª @  x*zk?d _z2oýT @  xuÐ`z+{k?d Ð_z15¿˜ @  x,|k?d (`zÍ  @  x-}k?d h`z²ðy @  x.~k?d ¨`z_Gò‡ @  x/k?d è`zw&Ó¨ @  x0€k?d (az§n_@ @  x1k?d hazW¥9 @  x2‚k?d ¨azwä§Ç @  x3ƒk?d èazt¾å  @  x4„k?d (bzéúEÊ @  x5…k?d hbz…¿³ @  x6†k?d ¨bz9p½M @  x7‡k?d èbz©Á¸1 @  x8ˆk?d (czy‰4Ù @  x9‰k?d hcz‰öΠ @  x:Šk?d ¨cz©Ì^ @  x;‹k?d èczªYŽ’ @  x<Œk?d (dz³} @  x=k?d hdzCh‡ä @  x>Žk?d ¨dzc… @  x?k?d èdz„ÜýH @  x@k?d (ezT”q  @  xA‘k?d hez¤ë‹Ù @  xB’k?d ¨ez„‰' @  xC“k?d èez‡DËë @  xD”k?d (fzk* @  xE•k?d hfzê‘S @  xF–k?d ¨fzÊŠ“­ @  xG—k?d èfzZ;–Ñ @  xH˜k?d (gzŠs9 @  xI™k?d hgzz à@ @  xJšk?d ¨gzZùâ¾ @  xK›k?d ègzY£ r @  xLœk?d (hzm\,o @  xMk?d hhz#Ö @  xNžk?d ¨hz½ÖÔè @  xOŸk?d èhzx!´D @  xP k?d (iz¨i8¬ @  xQ¡k?d hizXÂÕ @  xR¢k?d ¨izxãÀ+ @  xS£k?d èiz{¹‚ç @  xT¤k?d (jzæý"& @  xU¥k?d hjz‚Ø_ @  xV¦k?d ¨jz6wÚ¡ @  xW§k?d èjz¦ÆßÝ @  xX¨k?d (kzvŽS5 @  xY©k?d hkz†ñ©L @  xZªk?d ¨kz¦«² @  x[«k?d èkz¥^é~ @  x\¬k?d (lz¼q @  x]­k?d hlzLoà @  x^®k?d ¨lzlšâö @  x_¯k?d èlz%Üœ6 @  x`°k?d (mzõ”Þ @  xa±k?d hmzëê§ @  xb²k?d ¨mz%èY @  xc³k?d èmz&Dª• @  xd´k?d (nz» T @  xeµk?d hnzKð- @  xf¶k?d ¨nzkŠòÓ @  xg·k?d ènzû;÷¯ @  xh¸k?d (oz+s{G @  xi¹k?d hozÛ > @  xjºk?d ¨ozûùƒÀ @  xk»k?d èozø£Á  @  xl¼k?d (pzF}}¾ @  xm½k?d hpz¶‡Ç @  xn¾k?d ¨pz–÷…9 @  xo¿k?d èpz£Pð„ @  xpÀk?d (qzs|l @  xqÁk?d hqzƒg† @  xrÂk?d ¨qz£’„ë @  xsÃk?d èqz ÈÆ' @  xtÄk?d (rz=Œfæ @  xuÅk?d hrzÍóœŸ @  xvÆk?d ¨rzíža @  xwÇk?d èrz}·› @  xxÈk?d (sz­ÿõ @  xyÉk?d hsz]€íŒ @  xzÊk?d ¨sz}uïr @  x{Ëk?d èsz~/­¾ @  x|Ìk?d (tzga^± @  x}Ík?d htz—¤È @  x~Îk?d ¨tz·ë¦6 @  xÏk?d ètz³üîU @  x€Ðk?d (uzc´b½ @  xÑk?d huz“˘Ä @  x‚Òk?d ¨uz³>š: @  xƒÓk?d èuz°dØö @  x„Ôk?d (vz- x7 @  x…Õk?d hvzÝ_‚N @  x†Ök?d ¨vzýª€° @  x‡×k?d èvzm…Ì @  xˆØk?d (wz½S $ @  x‰Ùk?d hwzM,ó] @  xŠÚk?d ¨wzmÙñ£ @  x‹Ûk?d èwznƒ³o @  xŒÜk?d (xzZ|?r @  xÝk?d hxzªÅ  @  xŽÞk?d ¨xzŠöÇõ @  xßk?d èxzO§Y @  xàk?d (yzŸI+± @  x‘ák?d hyzo6ÑÈ @  x’âk?d ¨yzOÃÓ6 @  x“ãk?d èyzL™‘ú @  x”äk?d (zzÑÝ1; @  x•åk?d hzz!¢ËB @  x–æk?d ¨zzWɼ @  x—çk?d èzz‘æÌÀ @  x˜èk?d ({zA®@( @  x™ék?d h{z±ÑºQ @  xšêk?d ¨{z‘$¸¯ @  x›ëk?d è{z’~úc @  xœìk?d (|z‹0 l @  xík?d h|z{Oó @  xžîk?d ¨|z[ºñë @  xŸïk?d è|zü+ @  x ðk?d (}z´Ã @  x¡ñk?d h}z2Ëùº @  x¢òk?d ¨}z>ûD @  x£ók?d è}zd¹ˆ @  x¤ôk?d (~zŒ I @  x¥õk?d h~z|_ã0 @  x¦ök?d ¨~z\ªáÎ @  x§÷k?d è~zÌä² @  x¨øk?d (zShZ @  x©ùk?d hzì,’# @  xªúk?d ¨zuЀz'ÌÙÝ @  x«ûk?d èzσÒ @  x¬ük?d @€z¡=0e @  x­ýk?d €€zó&ß< @  x®þk?d À€zq·Èâ @  x¯ÿk?d zHaa @  x°l?d @zÊð¿ @  x±l?d €z˜ëàæ @  x²l?d Àzz÷8 @  x³l?d ‚zõë @  x´l?d @‚z„d5 @  xµl?d €‚zÖúl @  x¶l?d À‚zTîí² @  x·l?d ƒz–†sø @  x¸l?d @ƒzd& @  x¹ l?d €ƒzF ‹ @  xº l?d ÀƒzÄœ¡ @  x» l?d „z\:¼ @  x¼ l?d @„zÞ‰-b @  x½ l?d €„zŒ’Â; @  x¾l?d À„zÕå @  x¿l?d …z»›6 @  xÀl?d @…z9 !_ @  xÁl?d €…zkÎ @  xÂl?d À…zé€ÙØ @  xÃl?d †zõ,  @  xÄl?d @†zwž;Õ @  xÅl?d €†z%…ÔŒ @  xÆl?d À†z§ÃR @  xÇl?d ‡ze|] @  xÈl?d @‡zçíJÆ @  xÉl?d €‡zµö¥Ÿ @  xÊl?d À‡z7g²A @  xËl?d ˆz‚SkN @  xÌl?d @ˆzÂ| @  xÍl?d €ˆzRÙ“É @  xÎl?d ÀˆzÐH„ @  xÏl?d ‰zGf @  xÐ l?d @‰zÅ÷hS @  xÑ!l?d €‰z—ì‡  @  xÒ"l?d À‰z}Ô @  xÓ#l?d Šz òe @  xÔ$l?d @Šz‹crÙ @  xÕ%l?d €ŠzÙx€ @  xÖ&l?d ÀŠz[éŠ^ @  x×'l?d ‹z™ @  xØ(l?d @‹zÊ @  xÙ)l?d €‹zI ì“ @  xÚ*l?d À‹zËšûM @  xÛ+l?d ŒzS]P @  xÜ,l?d @ŒzÑŽJŽ @  xÝ-l?d €Œzƒ•¥× @  xÞ.l?d ÀŒz²  @  xß/l?d z›Wÿ @  xà0l?d @z˜ @! @  xá1l?d €zʯx @  xâ2l?d€ Àzl?d Àz«¢z¤ @  y ?l?d ‘z¯Ïõµ @  y@l?d @‘z-^âk @  yAl?d €‘zVl¨ @  yBl?d À‘zžÇ{v @  yCl?d ’zGuH @  yDl?d @’zÅb– @  yEl?d €’zRÂv" @  yFl?d À’zÐSaü @  yGl?d “z܉ Ì @  yHl?d @“z^· @  yIl?d €“z±1 @  yJl?d À“z@ ï @  yKl?d ”zìM @  yLl?d @”zŸ}ZÁ @  yMl?d €”z/Nu @  yNl?d À”zоY« @  yOl?d •zã4úw @  yPl?d @•za¥í© @  yQl?d €•zA«DÚ @  y Rl?d À•zÃ:S @  y!Sl?d –zü]: @  y"Tl?d @–z˜mJä @  y#Ul?d €–z?^P @  y$Vl?d À–z®IŽ @  y%Wl?d —ztˆ¾ @  y&Xl?d @—zåŸ` @  y'Yl?d €—zŸL/C @  y(Zl?d À—zÝ8 @  y)[l?d ˜zm  @  y*\l?d @˜zï1 ¡ @  y+]l?d €˜zxc @  y,^l?d À˜zúòË @  y-_l?d ™zÏ”Ë @  y.`l?d @™zŒ^ƒ @  y/al?d €™z½V Ö @  y0bl?d À™z?Ç @  y1cl?d šzæ6 @  y2dl?d @šzdè @  y3el?d €šzóÂ\ @  y4fl?d ÀšzqS‚ @  y5gl?d ›z}‰Á² @  y6hl?d @›zÿÖl @  y7il?d €›zc±fO @  y8jl?d À›zá q‘ @  y9kl?d œz¼ì,a @  y:ll?d @œz>};¿ @  y;ml?d €œz©//  @  y<nl?d Àœz+¾8Õ @  y=ol?d zB4›  @  y>pl?d @zÀ¥Œ× @  y?ql?d €zN¬#6 @  y@rl?d ÀzÌ=4è @  yAsl?d žzû:Ö @  yBtl?d @žz—j- @  yCul?d €žz89¼ @  yDvl?d Àžz‚©.b @  yEwl?d ŸzŽsïR @  yFxl?d @Ÿz âøŒ @  yGyl?d €ŸzKH¯ @  yHzluРz?d ÀŸzÚ_q @  yI{l?d  zåúÈ= @  yJ|l?d X zgkßã @  yK}l?d ˜ zð9ËW @  yL~l?d Ø zr¨Ü‰ @  yMl?d ¡zk  @  yN€l?d X¡zé’Ô @  yOl?d ˜¡zØšž @  yP‚l?d Ø¡zZ ‰É @  yQƒl?d ¢zƒÍ‡÷ @  yR„l?d X¢z\) @  yS…l?d ˜¢z–„ @  yT†l?d Ø¢zŸ“C @  yU‡l?d £zERs @  yVˆl?d X£zšÔE­ @  yW‰l?d ˜£z?º)[ @  yX Šl?d Ø£z½+>… @  yY ‹l?d ¤zàçcu @  yZ Œl?d X¤zbvt« @  y[ l?d ˜¤zõ$` @  y\ Žl?d ؤzwµwÁ @  y] l?d ¥z?Ô @  y^ l?d X¥zœ®Ãà @  y_ ‘l?d ˜¥z¼ j° @  y` ’l?d Ø¥z>1}n @  ya “l?d ¦zç÷sP @  yb ”l?d X¦zefdŽ @  yc •l?d ˜¦zò4p: @  yd –l?d ئzp¥gä @  ye —l?d §z|¦Ô @  yf ˜l?d X§zþî±  @  yg ™l?d ˜§zbG) @  yh šl?d اzàÖ÷ @  yi ›l?d ¨z«4 @  yj œl?d X¨z:#Ë @  yk l?d ˜¨z…h7 @  yl žl?d بzù ¡ @  ym Ÿl?d ©zóĺ¡ @  yn  l?d X©zqU­ @  yo ¡l?d ˜©z@]#¼ @  yp ¢l?d Ø©zÂÌ4b @  yq £l?d ªz :\ @  yr ¤l?d Xªz™›-‚ @  ys ¥l?d ˜ªzÉ96 @  yt ¦l?d تzŒX.è @  yu §l?d «z€‚ïØ @  yv ¨l?d X«zø @  yw ©l?d ˜«zžºH% @  yx ªl?d Ø«z+_û @  yy «l?d ¬zAç  @  yz ¬l?d X¬zÃvÕ @  y{ ­l?d ˜¬zT$a @  y| ®l?d جzÖµ¿ @  y} ¯l?d ­z¿?µc @  y~ °l?d X­z=®¢½ @  y ±l?d ˜­zPñ=m @  y€ ²l?d Ø­zÒ`*³ @  y ³l?d ®z ¦$ @  y‚ ´l?d X®z‰73S @  yƒ µl?d ˜®ze'ç @  y„ ¶l?d Ø®zœô09 @  y… ·l?d ¯z.ñ  @  y† ¸l?d X¯z¿æ× @  y‡ ¹l?d ˜¯zŽVô @  yˆ ºl?d دz ‡A* @  y‰ »l?d °zöÛSg @  yŠ ¼l?d X°ztJD¹ @  y‹ ½l?d ˜°zãP  @  yŒ ¾l?d ذza‰GÓ @  y ¿l?d ±zeäÈ @  yŽ Àl?d X±zçuß @  y Ál?d ˜±zÖ}Qß @  y Âl?d رzTìF @  y‘ Ãl?d ²z*H? @  y’ Äl?d X²z»_á @  y“ Ål?d ˜²z˜éKU @  y” Æl?d زzx\‹ @  y• Çl?d ³z¢» @  y– Èl?d X³z”3Še @  y— Él?d ˜³zš:F @  y˜ Êl?d سzŠ -˜ @  y™ Ël?d ´z×Çph @  yš Ìl?d X´zUVg¶ @  y› Íl?d ˜´zÂs @  yœ Îl?d Ø´z@•dÜ @  y Ïl?d µz)Ç @  yž Ðl?d Xµz«ŽÐÞ @  yŸ Ñl?d ˜µz‹€y­ @  y  Òl?d صz ns @  y¡ Ól?d ¶zÐ×`M @  y¢ Ôl?d X¶zRFw“ @  y£ Õl?d ˜¶zÅc' @  y¤ Öl?d ضzG…tù @  y¥ ×l?d ·zK_µÉ @  y¦ Øl?d X·zÉ΢ @  y§ Ùl?d ˜·zUg4 @  y¨ Úl?d Ø·z×öê @  y© Ûl?d ¸z§‹' @  yª Ül?d X¸z%0Ö @  y« Ýl?d ˜¸z²H$b @  y¬ Þl?d ظz0Ù3¼ @  y­ ßl?d ¹zÄ䩼 @  y® àl?d X¹zFu¾b @  y¯ ál?d ˜¹zw}0¡ @  y° âl?d عzõì' @  y± ãl?d ºz,*)A @  y² äl?d Xºz®»>Ÿ @  y³ ål?d ˜ºz9é*+ @  y´ æl?d غz»x=õ @  yµ çl?d »z·¢üÅ @  y¶ èl?d X»z53ë @  y· él?d ˜»z©š[8 @  y¸ êl?d Ø»z+ Læ @  y¹ ël?d ¼zvÇ @  yº ìl?d X¼zôVÈ @  y» íl?d ˜¼zc| @  y¼ îl?d ؼzá•¢ @  y½ ïl?d ½zˆ¦~ @  y¾ ðl?d X½z ޱ  @  y¿ ñl?d ˜½z„‡A @  yÀ òl?d ؽz Ÿ @  yÁ ól?d ¾zßС @  y ôl?d X¾z]A @  yà õl?d ˜¾zÊË @  yÄ öl?d ؾzH‚ @  yÅ ÷l?d ¿zDXÒ% @  yÆ øl?d X¿zÆÉÅû @  yÇ ùl?d ˜¿zZ`uØ @uÐÀz  yÈ úl?d Ø¿zá6¾Ó @  yÉûl?d 0ÀzÁDA~ @  yÊül?d pÀzCÕV  @  yËýl?d °ÀzÔ‡B @  yÌþl?d ðÀzVUÊ @  yÍÿl?d 0Áz0ÚÛE @  yÎm?d pÁz²KÌ› @  yÏm?d °ÁzƒCBX @  yÐm?d ðÁzÒU† @  yÑm?d 0ÂzØ[¸ @  yÒm?d pÂzZ…Lf @  yÓm?d °ÂzÍ×XÒ @  yÔm?d ðÂzOFO  @  yÕm?d 0ÃzCœŽ< @  yÖm?d pÃzÁ ™â @  y× m?d °Ãz]¤)Á @  yØ m?d ðÃzß5> @  yÙ m?d 0Äz‚ùcï @  yÚ m?d pÄzht1 @  yÛ m?d °Äz—:`… @  yÜm?d ðÄz«w[ @  yÝm?d 0Åz|!Ô‡ @  yÞm?d pÅzþ°ÃY @  yßm?d °ÅzÞ¾j* @  yàm?d ðÅz\/}ô @  yám?d 0Æz…ésÊ @  yâm?d€ pÆzÆ?“ @  zm?d °Æz°,ω @  zm?d ðÆz2½ØW @  zm?d 0Çzû.⊠@  zm?d pÇzy¿õT @  zm?d °Çz+¤  @  zm?d ðÇz©5 Ó @  zm?d 0ÈzúpK @  zm?d pÈz•kg• @  z m?d °ÈzÇpˆÌ @  z m?d ðÈzE០@  z m?d 0Ézt•þÿ @  z  m?d pÉzöé! @  z !m?d °Éz¤x @  z"m?d ðÉz&ަ @  z#m?d 0Êzœ[~ @  z$m?d pÊzÊiÜ @  z%m?d °ÊzLц… @  z&m?d ðÊzÎ@‘[ @  z'm?d 0ËzÓ«† @  z(m?d pËz…B¼X @  z)m?d °Ëz×YS @  z*m?d ðËzUÈDß @  z+m?d 0ÌzƶFU @  z,m?d pÌzD'Q‹ @  z-m?d °Ìz<¾Ò @  z.m?d ðÌz”­©  @  z/m?d 0Íz8nñ= @  z0m?d pÍzºÿæã @  z1m?d °Ízèä º @  z2m?d ðÍzjud @  z3m?d 0ÎzÁ¦Vp @  z 4m?d pÎzC7A® @  z!5m?d °Îz,®÷ @  z"6m?d ðÎz“½¹) @  z#7m?d 0ÏzZ.ƒô @  z$8m?d pÏzØ¿”* @  z%9m?d °ÏzФ{s @  z&:m?d ðÏz5l­ @  z';m?d 0Ðz<Û!š @  z(m?d ðÐznÀÎà @  z+?m?d 0Ñz¯äº? @  z,@m?d pÑz-u­á @  z-Am?d °ÑznB¸ @  z.Bm?d ðÑzýÿUf @  z/Cm?d 0ÒzG*: @  z0Dm?d pÒzÅ»- @  z1Em?d °Òz— ÂE @  z2Fm?d ðÒz1Õ› @  z3Gm?d 0ÓzÜ¢ïF @  z4Hm?d pÓz^3ø˜ @  z5Im?d °Óz (Á @  z6Jm?d ðÓz޹ @  z7Km?d 0ÔzÇ• @  z8Lm?d pÔzŸVK @  z9Mm?d °ÔzÍMú @  z:Nm?d ðÔzOÜíÌ @  z;Om?d 0Õzãµý @  z<Pm?d pÕzaŽ¢# @  z=Qm?d °Õz3•Mz @  z>Rm?d ðÕz±Z¤ @  z?Sm?d 0Öz´Ð" @  z@Tm?d pÖz6Aü @  zAUm?d °ÖzdZì¥ @  zBVm?d ðÖzæËû{ @  zCWm?d 0×z/XÁ¦ @  zDXm?d p×z­ÉÖx @  zEYm?d °×zÿÒ9! @  zFZm?d ð×z}C.ÿ @  zG[m?d 0ØzÃŒSg @  zH\m?d pØzAD¹ @  zI]m?d °Øz«à @  zJ^m?d ðØz‘—¼> @  zK_m?d 0Ùz ãÝÓ @  zL`m?d pÙz"rÊ  @  zMam?d °Ùzpi%T @  zNbm?d ðÙzòø2Š @  zOcm?d 0ÚzH-]. @  zPdm?d pÚzʼJð @  zQem?d °Úz˜§¥© @  zRfm?d ðÚz6²w @  zSgm?d 0ÛzÓ¥ˆª @  zThm?d pÛzQ4Ÿt @  zUim?d °Ûz/p- @  zVjm?d ðÛz¾gó @  zWkm?d 0ÜzÀey @  zXlm?d pÜzQr§ @  zYmm?d °ÜzÂJþ @  zZnm?d ðÜz@ÛŠ  @  z[om?d 0ÝzìÒ @  z\pm?d pÝzn‰ÅÏ @  z]qm?d °Ýz<’*– @  z^rm?d ðÝz¾=H @  z_sm?d 0ÞzÐu\ @  z`tm?d pÞz—Ab‚ @  zaum?d °ÞzÅZÛ @  zbvm?d ðÞzGËš @  zcwm?d 0ßzŽX Ø @  zdxm?d pßz É· @  zeym?d uÐàz/°ßz^ÒX_ @  zfzm?d ðßzÜCO @  zg{m?d HàzO×àò @  zh|m?d ˆàzo"â  @  zi}m?d ÈàzŸ]u @  zj~m?d ázO” @  zkm?d HázÁ./Å @  zl€m?d ˆázáÛ-; @  zmm?d Èáz¤×B @  zn‚m?d âzŒàwƒ @  zoƒm?d Hâz)à¯8 @  zp„m?d ˆâz ­Æ @  zq…m?d ÈâzùjW¿ @  zr†m?d ãz)"ÛW @  zs‡m?d Hãz²hz¼ @  ztˆm?d ˆãz’xB @  zu‰m?d Èãzbâ‚; @  zvŠm?d äz{¬q4 @  zw‹m?d Häzs —o @  zxŒm?d ˆäzSø•‘ @  zym?d Èäz£‡oè @  zzŽm?d åzsÏã @  z{m?d HåzÕ  @  z|m?d ˆåz­ "ù @  z}‘m?d Èåz]_Ø€ @  z~’m?d æzÀxA @  z“m?d Hæz9L±é @  z€”m?d ˆæz¹³ @  z•m?d ÈæzéÆIn @  z‚–m?d çz9ŽÅ† @  zƒ—m?d Hçz¢Ädm @  z„˜m?d ˆçz‚1f“ @  z…™m?d ÈçzrNœê @  z†šm?d èzF±÷ @  z‡›m?d HèzNö¬ @  zˆœm?d ˆèznåôR @  z‰m?d Èèzžš+ @  zŠžm?d ézNÒ‚Ã @  z‹Ÿm?d Héz-x @  zŒ m?d ˆéz Šzæ @  z¡m?d Èézýõ€Ÿ @  zŽ¢m?d êz`± ^ @  z£m?d Hêzűøå @  z¤m?d ˆêzåDú @  z‘¥m?d Èêz;b @  z’¦m?d ëzÅsŒŠ @  z“§m?d Hëz^9-a @  z”¨m?d ˆëz~Ì/Ÿ @  z•©m?d Èëz޳տ @  z–ªm?d ìz—ý&é @  z—«m?d HìzŸ\À² @  z˜¬m?d ˆìz¿©ÂL @  z™­m?d ÈìzOÖ85 @  zš®m?d ízŸž´Ý @  z›¯m?d Híza„wÚ @  zœ°m?d ˆízAqu$ @  z±m?d Èíz±] @  zž²m?d îz,J/œ @  zŸ³m?d Hîz˜LЗ @  z ´m?d ˆîz¸¹Òi @  z¡µm?d ÈîzHÆ( @  z¢¶m?d ïz˜Ž¤ø @  z£·m?d HïzÄ @  z¤¸m?d ˆïz#1í @  z¥¹m?d ÈïzÓNý” @  z¦ºm?d ðzmA& @  z§»m?d Hðze1§} @  z¨¼m?d ˆðzEÄ¥ƒ @  z©½m?d Èðzµ»_ú @  zª¾m?d ñzeóÓ @  z«¿m?d Hñzö<Ø @  z¬Àm?d ˆñzÖû>& @  z­Ám?d Èñz&„Ä_ @  z®Âm?d òz»Àdž @  z¯Ãm?d HòzÀ¼% @  z°Äm?d ˆòz>5¾Û @  z±Åm?d ÈòzÎJD¢ @  z²Æm?d ózÈJ @  z³Çm?d Hóz…Hi¡ @  z´Èm?d ˆóz¥½k_ @  zµÉm?d ÈózU‘& @  z¶Êm?d ôzLŒb) @  z·Ëm?d HôzD-„r @  z¸Ìm?d ˆôzd؆Œ @  z¹Ím?d Èôz”§|õ @  zºÎm?d õzDïð @  z»Ïm?d Hõzºõ3 @  z¼Ðm?d ˆõzš1ä @  z½Ñm?d ÈõzjË @  z¾Òm?d öz÷;k\ @  z¿Óm?d Hözí:’Å @  zÀÔm?d ˆözÍÏ; @  zÁÕm?d Èöz=°jB @  zÂÖm?d ÷zíøæª @  zÃ×m?d H÷zv²GA @  zÄØm?d ˆ÷zVGE¿ @  zÅÙm?d È÷z¦8¿Æ @  zÆÚm?d øz’Ç3Û @  zÇÛm?d HøzšfÕ€ @  zÈÜm?d ˆøzº“×~ @  zÉÝm?d ÈøzJì- @  zÊÞm?d ùzš¤¡ï @  zËßm?d Hùzù [4 @  zÌàm?d ˆùzÙüYÊ @  zÍám?d Èùz)ƒ£³ @  zÎâm?d úz´Çr @  zÏãm?d HúzÇÛÉ @  zÐäm?d ˆúz12Ù7 @  zÑåm?d ÈúzÁM#N @  zÒæm?d ûz¯¦ @  zÓçm?d HûzŠOM @  zÔèm?d ˆûzªº ³ @  zÕém?d ÈûzZÅöÊ @  zÖêm?d üzC‹Å @  z×ëm?d HüzK*ãž @  zØìm?d ˆüzkßá` @  zÙím?d Èüz›  @  zÚîm?d ýzKè—ñ @  zÛïm?d HýzµòTö @  zÜðm?d ˆýz•V @  zÝñm?d Èýzex¬q @  zÞòm?d þzø< ° @  zßóm?d HþzL:ó» @  zàôm?d ˆþzlÏñE @  záõm?d Èþzœ° < @  zâöm?d€ ÿz8;›r @  {÷m?d HÿzB0r° @  {øm?d ˆÿzbÅpN @  {uÐ{ùm?d ÈÿzWóqÚ @  {úm?d {GY+ @  {ûm?d `{ÞTà  @  {üm?d  {þ¡âô @  {ým?d à{ÀlG÷ @  {þm?d {$Ë @  { ÿm?d `{–ëƒ @  { n?d  {¶æé} @  { n?d à{ƒÐèé @  { n?d {”H( @  { n?d `{؇ñ  @  {n?d  {øró÷ @  {n?d à{kh @  {n?d {»Väü @  {n?d `{åU¾ú @  {n?d  {Å ¼ @  { n?d à{ð–½ @  { n?d {éØNŸ @  { n?d `{/Ë÷¾ @  { n?d  {>õ@ @  { n?d à{1óPC @  {n?d {á»Ü« @  {n?d `{ÚèäA @  {n?d  {úæ¿ @  {n?d à{Ï+ç+ @  {n?d {RoGê @  {n?d `{”|þË @  {n?d  {´‰ü5 @  {n?d à{6ã@f @  { n?d {æ«ÌŽ @  {!n?d `{¸¨–ˆ @  {"n?d  {˜]”v @  {#n?d à{­k•â @  {$n?d {™”ÿ @  {%n?d `{_‡ Þ @  {&n?d  {r¢  @  {'n?d à{A¿# @  {(n?d {‘÷‹Ë @  {)n?d ` {7Šý @  {* n?d   {æˆ @  {+!n?d à {"Љ— @  {,"n?d {¿”)V @  {-#n?d ` {y‡w @  {.$n?d   {Yr’‰ @  {/%n?d à {Ê j @  {0&n?d {V…‚ @  {1'n?d ` {DUß„ @  {2(n?d   {d Ýz @  {3)n?d à {Q–Üî @  {4*n?d {HØ/á @  {5+n?d ` {ŽË–À @  {6,n?d   {®>”> @  {7-n?d à {ó1= @  {8.n?d {@»½Õ @  {9/n?d ` {{è…? @  {:0n?d   {[‡Á @  {;1n?d à {n+†U @  {<2n?d {óo&” @  {=3n?d `{5|Ÿµ @  {>4n?d  {‰K @  {?5n?d à{9ä'Š @  {@6n?d {鬫b @  {A7n?d `{·¯ñd @  {B8n?d  {—Zóš @  {C9n?d à{¢lò @  {D:n?d {²N¼ @  {E;n?d `{Ú¡÷ @  {Fn?d {Ñ܈ @  {I?n?d `{Beȯ @  {J@n?d  {bÊQ @  {KAn?d à{W¦ËÅ @  {LBn?d {Êâk @  {MCn?d `{ ñÒ% @  {NDn?d  {,ÐÛ @  {OEn?d à{¿hK8 @  {PFn?d {o ÇÐ @  {QGn?d `{1#Ö @  {RHn?d  {ÖŸ( @  {SIn?d à{$àž¼ @  {TJn?d {=®m³ @  {UKn?d `{û½Ô’ @  {VLn?d  {ÛHÖl @  {WMn?d à{å…so @  {XNn?d {5Íÿ‡ @  {YOn?d `{žÇm @  {ZPn?d  {.kÅ“ @  {[Qn?d à{]Ä @  {\Rn?d {†dÆ @  {]Sn?d `{@ Ýç @  {^Tn?d  {`ÿß @  {_Un?d à{â•cJ @  {`Vn?d {2Ýï¢ @  {aWn?d `{lÞµ¤ @  {bXn?d  {L+·Z @  {cYn?d à{Ų @  {d€Zn?d {0bI¯ @  {e€[n?d `{öqðŽ @  {f€\n?d  {Ö„òp @  {g€]n?d à{èIWs @  {h€^n?d {8Û› @  {i€_n?d `{žåÚ­ @  {j€`n?d  {¾ØS @  {k€an?d à{‹&ÙÇ @  {l€bn?d {by @  {m€cn?d `{ÐqÀ' @  {n€dn?d  {ð„ÂÙ @  {o€en?d à{cèY: @  {p€fn?d {³ ÕÒ @  {q€gn?d `{í£Ô @  {r€hn?d  {ÍV* @  {s€in?d à{ø`Œ¾ @  {t€jn?d {á.± @  {u€kn?d `{'=Æ @  {v€ln?d  {ÈÄn @  {w€mn?d à{9am @  {x€nn?d {éMí… @  {y€on?d `{ÒÕo @  {z€pn?d  {òëב @  {{€qn?d à{ÇÝÖ @  {|€rn?d {Z™vÄ @  {}€sn?d `{œŠÏå @  {~€tn?d  {¼Í @  {€un?d à{sDGë @  {€€vn?d {£ Ë @  {€wn?d `{ý‘ @  {‚€xn?d  {Ýú“ûuÐ { @  {ƒ€yn?d à{•Lá @  {„zn?d 8 {äG?u @  {…{n?d x {"T†T @  {†|n?d ¸ {¡„ª @  {‡}n?d ø {{ó7 @  {—n?d ø${¶V4 @  {˜Žn?d 8%{ÐþÚÜ @  {™n?d x%{ë­â6 @  {šn?d ¸%{ËXàÈ @  {›‘n?d ø%{þná\ @  {œ’n?d 8&{c*A @  {“n?d x&{¥9ø¼ @  {ž”n?d ¸&{…ÌúB @  {Ÿ•n?d ø&{¦F @  { –n?d 8'{×îÊù @  {¡—n?d x'{‰íÿ @  {¢˜n?d ¸'{©’ @  {£™n?d ø'{œ.“• @  {¤šn?d 8({¨Ñˆ @  {¥›n?d x({n¦© @  {¦œn?d ¸({N7¤W @  {§n?d ø({púT @  {¨žn?d 8){ ²¼ @  {©Ÿn?d x){VŒŠ @  {ª n?d ¸){&£Žt @  {«¡n?d ø){•à @  {¬¢n?d 8*{ŽÑ/! @  {­£n?d x*{H– @  {®¤n?d ¸*{h7”þ @  {¯¥n?d ø*{û[ @  {°¦n?d 8+{+ƒõ @  {±§n?d x+{uÙó @  {²¨n?d ¸+{UåÛ  @  {³©n?d ø+{`ÓÚ™ @  {´ªn?d 8,{y)– @  {µ«n?d x,{¿Ž· @  {¶¬n?d ¸,{Ÿ{’I @  {·­n?d ø,{¡¶7J @  {¸®n?d 8-{qþ»¢ @  {¹¯n?d x-{J­ƒH @  {º°n?d ¸-{jX¶ @  {»±n?d ø-{_n€" @  {¼²n?d 8.{Â* ã @  {½³n?d x.{9™Â @  {¾´n?d ¸.{$Ì›< @  {¿µn?d ø.{¡!ý @  {À¶n?d 8/{Øé­ @  {Á·n?d x/{†ê÷ @  {¸n?d ¸/{¦õí @  {ùn?d ø/{“)ôy @  {ĺn?d 80{-÷HË @  {Å»n?d x0{ëäñê @  {Ƽn?d ¸0{Ëó @  {ǽn?d ø0{õÜV @  {Ⱦn?d 81{%”Úÿ @  {É¿n?d x1{s ÎØ @  {ÊÀn?d ¸1{SÕÌ& @  {ËÁn?d ø1{fãͲ @  {ÌÂn?d 82{û§ms @  {ÍÃn?d x2{=´ÔR @  {ÎÄn?d ¸2{AÖ¬ @  {ÏÅn?d ø2{Ž-MO @  {ÐÆn?d 83{^eÁ§ @  {ÑÇn?d x3{f›¡ @  {ÒÈn?d ¸3{ “™_ @  {ÓÉn?d ø3{¥˜Ë @  {ÔÊn?d 84{ ëkÄ @  {ÕËn?d x4{ÊøÒå @  {ÖÌn?d ¸4{ê Ð @  {×Ín?d ø4{ÔÀu @  {ØÎn?d 85{ˆùð @  {ÙÏn?d x5{?ÛÁ @  {ÚÐn?d ¸5{.Ãä @  {ÛÑn?d ø5{*Âp @  {ÜÒn?d 86{·\b± @  {ÝÓn?d x6{qOÛ @  {ÞÔn?d ¸6{QºÙn @  {ßÕn?d ø6{ÓÐe= @  {àÖn?d 87{˜éÕ @  {á×n?d x7{]›³Ó @  {âØn?d€ ¸7{û8” @  |Ùn?d ø7{/OP) @  |Ún?d 88{°Ü4 @  |Ûn?d x8{êžø @  |Ün?d ¸8{8œ @  |Ýn?d ø8{È`f @  |Þn?d 89{(ê— @  |ßn?d x9{p~´Û @  |àn?d ¸9{P‹¶% @  | án?d ø9{ ôL\ @  | ân?d 8:{=°ì @  | ãn?d x:{>ê®Q @  | än?d ¸:{¬¯ @  | ån?d ø:{î`VÖ @  |æn?d 8;{>(Ú> @  |çn?d x;{8ᢠ@  |èn?d ¸;{#Íã\ @  |én?d ø;{Ó²% @  |ên?d 8<{Êüê* @  |ën?d x<{ɦ¨æ @  |ìn?d ¸<{éSª @  |ín?d ø<{,Pa @  |în?d 8={Éd܉ @  |ïn?d x={<…» @  |ðn?d ¸={p¹ç @  |ñn?d ø={ìCž @  |òn?d 8>{qKã_ @  |ón?d x>{r¡“ @  |ôn?d ¸>{Rä£m @  |õn?d ø>{¢›Y @  |ön?d 8?{rÓÕü @  |÷n?d x?{^ÅÉÐ @  | øn?duÐ@{7 ¸?{~0Ë. @  |!ùn?d ø?{ŽO1W @  |"ún?d P@{Mã‹k @  |#ûn?d @{ìÝ܇ @  |$ün?d Ð@{nLËY @  |%ýn?d A{Ìêª @  |&þn?d PA{N{½È @  |'ÿn?d A{¸â+ @  |(o?d ÐA{”)õõ @  |)o?d B{{ƒ¸“ @  |*o?d PB{ù¯M @  |+o?d B{X,ø¡ @  |,o?d ÐB{Ú½ï @  |-o?d C{xŽ0 @  |.o?d PC{úŠ™î @  |/o?d C{eþ·R @  |0o?d ÐC{ço Œ @  |1 o?d D{ŒÏ¾$ @  |2 o?d PD{^©ú @  |3 o?d D{¯`þ @  |4 o?d ÐD{-ñéÈ @  |5 o?d E{Wˆ‡ @  |6o?d PE{ ÆŸY @  |7o?d E{ZCíé @  |8o?d ÐE{ØÒú7 @  |9o?d F{7x·Q @  |:o?d PF{µé  @  |;o?d F{×÷c @  |<o?d ÐF{–Fའ@  |=o?d G{4àò @  |>o?d PG{¶q–, @  |?o?d G{–™² @  |@o?d ÐG{•Žl @  |Ao?d H{R„ïÖ @  |Bo?d PH{Ðø @  |Co?d H{q+¯ä @  |Do?d ÐH{óº¸: @  |Eo?d I{QÙu @  |Fo?d PI{ÓΫ @  |Go?d I{¿…Ç @  |H o?d ÐI{›.’ @  |I!o?d J{t„ß @  |J"o?d PJ{öÈ¡ @  |K#o?d J{W+ŸM @  |L$o?d ÐJ{Õºˆ“ @  |M%o?d K{wéÜ @  |N&o?d PK{õþ @  |O'o?d K{jùо @  |P(o?d ÐK{èhÇ` @  |Q)o?d L{ƒÈÙÈ @  |R*o?d PL{YÎ @  |S+o?d L{ g™ú @  |T,o?d ÐL{"öŽ$ @  |U-o?d M{€Pïk @  |V.o?d PM{Áøµ @  |W/o?d M{UDŠ @  |X0o?d ÐM{×ÕÛ @  |Y1o?d N{8н @  |Z2o?d PN{ºîÇc @  |[3o?d N{Ð @  |\4o?d ÐN{™A‡Q @  |]5o?d O{;çæ @  |^6o?d PO{¹vñÀ @  |_7o?d O{7øÌ @  |`8o?d ÐO{µ•ï @  |a9o?d P{y¥¾ @  |b:o?d PP{û4©Ù @  |c;o?d P{Z þ5 @  |do?d PQ{ø¬Ÿz @  |g?o?d Q{ÂÎÁ @  |h@o?d ÐQ{@_ÖÙ @  |iAo?d R{¯õ›¿ @  |jBo?d PR{-dŒa @  |kCo?d R{ŒZÛ @  |lDo?d ÐR{ËÌS @  |mEo?d S{¬m­ @  |nFo?d PS{.üºÂ @  |oGo?d S{±ˆ”~ @  |pHo?d ÐS{3ƒ  @  |qIo?d T{X¹ @  |rJo?d PT{Ú(ŠÖ @  |sKo?d T{{Ý: @  |tLo?d ÐT{ù‡Êä @  |uMo?d U{[!«« @  |vNo?d PU{Ù°¼u @  |wOo?d U{Ž5ÎÅ @  |xPo?d ÐU{ ¤Ù @  |yQo?d V{ã”} @  |zRo?d PV{aŸƒ£ @  |{So?d V{À¡ÔO @  ||To?d ÐV{B0Ñ @  |}Uo?d W{à–¢Þ @  |~Vo?d PW{bµ @  |Wo?d W{¡$Н @  |€Xo?d ÐW{#µq @  |Yo?d X{e¤üË @  |‚Zo?d PX{ç5ë @  |ƒ[o?d X{F ¼ù @  |„\o?d ÐX{Äš«' @  |…]o?d Y{f<Êh @  |†^o?d PY{ä­Ý¶ @  |‡_o?d Y{.Ÿ–Ú @  |ˆ`o?d ÐY{¬ @  |‰ao?d Z{C¤Ìb @  |Šbo?d PZ{Á5Û¼ @  |‹co?d Z{` ŒP @  |Œdo?d ÐZ{âš›Ž @  |eo?d [{@<úÁ @  |Žfo?d P[{­í @  |go?d [{]Ùã @  |ho?d Ð[{ßHÔ} @  |‘io?d \{´èÊÕ @  |’jo?d P\{6yÝ  @  |“ko?d \{—GŠç @  |”lo?d Ð\{Ö9 @  |•mo?d ]{·püv @  |–no?d P]{5áë¨ @  |—oo?d ]{bd™ @  |˜po?d Ð]{àõŽÆ @  |™qo?d ^{_à @  |šro?d P^{ÎÔ~ @  |›so?d ^{,ðƒ’ @  |œto?d Ð^{®a”L @  |uo?d _{ Çõ @  |žvo?d P_{ŽVâÝ @  |Ÿwo?d _{$ëÑ @  |uÐ`{ xo?d Ð_{ÿ5s @  |¡€yo?d (`{3#×L @  |¢€zo?d h`{±²À’ @  |£€{o?d ¨`{Œ—~ @  |¤€|o?d è`{’€  @  |¥€}o?d (a{0»áï @  |¦€~o?d ha{²*ö1 @  |§€o?d ¨a{•ŽüÞ @  |¨€€o?d èa{ë @  |©€o?d (b{øµ¦f @  |ª€‚o?d hb{z$±¸ @  |«€ƒo?d ¨b{ÛæT @  |¬€„o?d èb{Y‹ñŠ @  |­€…o?d (c{û-Å @  |®€†o?d hc{y¼‡ @  |¯€‡o?d ¨c{æÈ©§ @  |°€ˆo?d èc{dY¾y @  |±€‰o?d (d{ù Ñ @  |²€Šo?d hd{h· @  |³€‹o?d ¨d{,Vàã @  |´€Œo?d èd{®Ç÷= @  |µ€o?d (e{ a–r @  |¶€Žo?d he{Žð¬ @  |·€o?d ¨e{Ùuó @  |¸€o?d èe{[ää @  |¹€‘o?d (f{´N©¤ @  |º€’o?d hf{6ß¾z @  |»€“o?d ¨f{—áé– @  |¼€”o?d èf{pþH @  |½€•o?d (g{·ÖŸ @  |¾€–o?d hg{5GˆÙ @  |¿€—o?d ¨g{2‡G @  |À€˜o?d èg{—£™ @  |Á€™o?d (h{Ѳñ# @  |€šo?d hh{S#æý @  |À›o?d ¨h{ò± @  |Ä€œo?d èh{pŒ¦Ï @  |Å€o?d (i{Ò*Ç€ @  |Æ€žo?d hi{P»Ð^ @  |Ç€Ÿo?d ¨i{š‰›2 @  |È€ o?d èi{Œì @  |É€¡o?d (j{÷²ÁŠ @  |Ê€¢o?d hj{u#ÖT @  |Ë€£o?d ¨j{Ô¸ @  |Ì€¤o?d èj{VŒ–f @  |Í€¥o?d (k{ô*÷) @  |΀¦o?d hk{v»à÷ @  |Ï€§o?d ¨k{éÏÎK @  |Ѐ¨o?d èk{k^Ù• @  |Ñ€©o?d (l{þÇ= @  |Ò€ªo?d hl{‚oÐã @  |Ó€«o?d ¨l{#Q‡ @  |Ô€¬o?d èl{¡ÀÑ @  |Õ€­o?d (m{fñž @  |Ö€®o?d hm{÷æ@ @  |×€¯o?d ¨m{Ör”ð @  |Ø€°o?d èm{Tãƒ. @  |Ù€±o?d (n{»IÎH @  |Ú€²o?d hn{9ØÙ– @  |Û€³o?d ¨n{˜æŽz @  |Ü€´o?d èn{w™¤ @  |Ý€µo?d (o{¸Ñøë @  |Þ€¶o?d ho{:@ï5 @  |߀·o?d ¨o{´2æ9 @  |à€¸o?d èo{6£ñç @  |္o?d (p{ú“ ò @  |›o?d€ hp{ Á«Š @  }€»o?d ¨p{L¾´O @  }€¼o?d èp{Î/£‘ @  }€½o?d (q{©À93 @  }€¾o?d hq{+Q.í @  }€¿o?d ¨q{ß/ê @  }€Ào?d èq{]84 @  }€Áo?d (r{|*( @  }€Âo?d hr{þ™=ö @  } €Ão?d ¨r{šî‘÷ @  } €Äo?d èr{†) @  } €Åo?d (s{‹ @  } €Æo?d hs{ý U @  } €Ço?d ¨s{fDs @  }€Èo?d ès{ƒ÷S­ @  }€Éo?d (t{‹D,Ÿ @  }€Êo?d ht{ Õ;A @  }€Ëo?d ¨t{m¢—@ @  }€Ìo?d èt{ï3€ž @  }€Ío?d (u{ˆÜ< @  }€Îo?d hu{ M â @  }€Ïo?d ¨u{“z ( @  }€Ðo?d èu{ë7ö @  }€Ño?d (v{0ó%ê @  }€Òo?d hv{²b24 @  }€Óo?d ¨v{Öž5 @  }€Ôo?d èv{T„‰ë @  }€Õo?d (w{3kI @  }€Öo?d hw{±ú— @  }€×o?d ¨w{MK± @  }€Øo?d èw{Ï \o @  }€Ùo?d (x{û{ÿ @  } €Úo?d hx{y™l! @  }!€Ûo?d ¨x{îÀ  @  }"€Üo?d èx{Ÿ×þ @  }#€Ýo?d (y{øM\ @  }$€Þo?d hy{zZ‚ @  }%€ßo?d ¨y{~N” @  }&€ào?d èy{üYJ @  }'€áo?d (z{ÝKV @  }(€âo?d hz{_™\ˆ @  })€ão?d ¨z{;îð‰ @  }*€äo?d èz{¹çW @  }+€åo?d ({{Þ}õ @  },€æo?d h{{\j+ @  }-€ço?d ¨{{ f%  @  }.€èo?d è{{"÷2Ó @  }/€éo?d (|{*DMá @  }0€êo?d h|{¨ÕZ? @  }1€ëo?d ¨|{Ì¢ö> @  }2€ìo?d è|{N3áà @  }3€ío?d (}{)Ü{B @  }4€îo?d h}{«Mlœ @  }5€ïo?d ¨}{2zAV @  }6€ðo?d è}{°ëVˆ @  }7€ño?d (~{‘óD” @  }8€òo?d h~{bSJ @  }9€óo?d ¨~{wÿK @  }:€ôo?d è~{õ„è• @  };€õo?d ({’kr7 @  }<€öo?d h{úeé @  }=€÷o?d ¨{uЀ{'ì*Ï @  }>€øo?d è{ŒNm @  }?ùo?d @€{ÓÎ @  }@úo?d €€{ó;ø @  }Aûo?d À€{5(ºÙ @  }Büo?d {å`61 @  }Cýo?d @{ÐV7¥ @  }Dþo?d €{ð£5[ @  }Eÿo?d À{=3R @  }Fp?d ‚{ w¦“ @  }Gp?d @‚{žº @  }Hp?d €‚{¾On @  }Ip?d À‚{x\¸O @  }Jp?d ƒ{¨4§ @  }Kp?d @ƒ{"53 @  }Lp?d €ƒ{½×7Í @  }Mp?d Àƒ{ãÔmË @  }Np?d „{úšžÄ @  }O p?d @„{iö' @  }P p?d €„{IÙ @  }Q p?d À„{¾ø @  }R p?d …{_X2 @  }S p?d @…{jn3„ @  }Tp?d €…{J›1z @  }Up?d À…{qÈ  @  }Vp?d †{쌩Q @  }Wp?d @†{ÒA R @  }Xp?d €†{ò´¬ @  }Yp?d À†{4§· @  }Zp?d ‡{äï;e @  }[p?d @‡{ÑÙ:ñ @  }\p?d €‡{ñ,8 @  }]p?d À‡{¯/b  @  }^p?d ˆ{›Ðî @  }_p?d @ˆ{ºRG @  }`p?d €ˆ{9OP¹ @  }ap?d Àˆ{ÿ\é˜ @  }bp?d ‰{/ep @  }cp?d @‰{"dä @  }dp?d €‰{:×f @  }ep?d À‰{œ3g, @  }f p?d Š{wÇí @  }g!p?d @Š{?ºbî @  }h"p?d €Š{O` @  }i#p?d ÀŠ{Ù\Ù1 @  }j$p?d ‹{ UÙ @  }k%p?d @‹{<"TM @  }l&p?d €‹{×V³ @  }m'p?d À‹{BÔ µ @  }n(p?d Œ{[šÿº @  }o)p?d @Œ{ÈödY @  }p*p?d €Œ{èf§ @  }q+p?d ÀŒ{.߆ @  }r,p?d {þXSn @  }s-p?d @{ËnRú @  }t.p?d €{ë›P @  }u/p?d À{ÐÈhî @  }v0p?d Ž{MŒÈ/ @  }w1p?d @Ž{sAm, @  }x2p?d €Ž{S´oÒ @  }y3p?d ÀŽ{•§Öó @  }z4p?d {EïZ @  }{5p?d @{pÙ[ @  }|6p?d €{P,Yq @  }}7p?d À{/w @  }~8p?d {°ñ¿Å @  }9p?d @{Ê55 @  }€:p?d €{_?7Ë @  };p?d À{™,Žê @  }‚p?d €‘{\§h @  }…?p?d À‘{ O @  }†@p?d ’{—WµŽ @  }‡Ap?d @’{©š @  }ˆBp?d €’{‰os @  }‰Cp?d À’{O|«R @  }ŠDp?d “{Ÿ4'º @  }‹Ep?d @“{ª&. @  }ŒFp?d €“{Š÷$Ð @  }Gp?d À“{Ôô~Ö @  }ŽHp?d ”{ͺÙ @  }Ip?d @”{^Ö: @  }Jp?d €”{~#Ä @  }‘Kp?d À”{¸0­å @  }’Lp?d •{hx!  @  }“Mp?d @•{]N ™ @  }”Np?d €•{}»"g @  }•Op?d À•{Fè @  }–Pp?d –{Û¬ºL @  }—Qp?d @–{åaO @  }˜Rp?d €–{Å”± @  }™Sp?d À–{‡¤ @  }šTp?d —{ÓÏ(x @  }›Up?d @—{æù)ì @  }œVp?d €—{Æ + @  }Wp?d À—{˜q @  }žXp?d ˜{¬ðý  @  }ŸYp?d @˜{.šAZ @  } Zp?d €˜{oC¤ @  }¡[p?d À˜{È|ú… @  }¢\p?d ™{4vm @  }£]p?d @™{-wù @  }¤^p?d €™{ ÷u @  }¥_p?d À™{«t1 @  }¦`p?d š{6WÔð @  }§ap?d @š{šqó @  }¨bp?d €š{(os  @  }©cp?d Àš{î|Ê, @  }ªdp?d ›{>4FÄ @  }«ep?d @›{ GP @  }¬fp?d €›{+÷E® @  }­gp?d À›{uô¨ @  }®hp?d œ{lºì§ @  }¯ip?d @œ{ÿÖwD @  }°jp?d €œ{ß#uº @  }±kp?d Àœ{0Ì› @  }²lp?d {Éx@s @  }³mp?d @{üNAç @  }´np?d €{Ü»C @  }µop?d À{çè{ó @  }¶pp?d ž{z¬Û2 @  }·qp?d @ž{Da~1 @  }¸rp?d €ž{d”|Ï @  }¹sp?d Àž{¢‡Åî @  }ºtp?d Ÿ{rÏI @  }»up?d @Ÿ{GùH’ @  }¼vp?d €Ÿ{g Jl @  }½wpuР{?d ÀŸ{9j @  }¾xp?d  {HÎ  @  }¿yp?d X {ditÍ @  }Àzp?d ˜ {Dœv3 @  }Á{p?d Ø {‚Ï @  }Â|p?d ¡{RÇCú @  }Ã}p?d X¡{gñBn @  }Ä~p?d ˜¡{G@ @  }Åp?d Ø¡{ v% @  }Æ€p?d ¢{‘2 ä @  }Çp?d X¢{¯ÿç @  }È‚p?d ˜¢{  @  }Ƀp?d Ø¢{I¾8 @  }Ê„p?d £{™Q2Ð @  }Ë…p?d X£{¬g3D @  }̆p?d ˜£{Œ’1º @  }͇p?d Ø£{Ò‘k¼ @  }Έp?d ¤{Ëߘ³ @  }ωp?d X¤{X³P @  }Њp?d ˜¤{xF® @  }Ñ‹p?d ؤ{¾U¸ @  }ÒŒp?d ¥{n4g @  }Óp?d X¥{[+5ó @  }ÔŽp?d ˜¥{{Þ7  @  }Õp?d Ø¥{@ç @  }Öp?d ¦{Ýɯ& @  }בp?d X¦{ã % @  }Ø’p?d ˜¦{ÃñÛ @  }Ù“p?d ئ{â±ú @  }Ú”p?d §{Õª= @  }Û•p?d X§{àœ<† @  }Ü–p?d ˜§{Ài>x @  }Ý—p?d ا{žjd~ @  }Þ˜p?d ¨{ª•èc @  }ß™p?d X¨{(ÿT0 @  }àšp?d ˜¨{ VÎ @  }á›p?d ب{Îïï @  }âœp?d€ ©{ß” @  ~p?d X©{ aݺ @  ~žp?d ˜©{+”ßD @  ~Ÿp?d Ø©{H9%Ÿ @  ~ p?d ª{Õ}…^ @  ~¡p?d Xª{%' @  ~¢p?d ˜ª{÷}Ù @  ~£p?d ت{ V›‚ @  ~¤p?d «{Ýj @  ~ ¥p?d X«{-aí @  ~ ¦p?d ˜«{ ”ïí @  ~ §p?d Ø«{–ÞN @  ~ ¨p?d ¬{½  @  ~ ©p?d X¬{ïGp @  ~ªp?d ˜¬{_EŽ @  ~«p?d ج{ú5 @  ~¬p?d ­{*RÝ @  ~­p?d X­{Ú-ë¤ @  ~®p?d ˜­{úØéZ @  ~¯p?d Ø­{Â*] @  ~°p?d ®{™†Šœ @  ~±p?d X®{iùpå @  ~²p?d ˜®{I r @  ~³p?d Ø®{A­”@ @  ~´p?d ¯{‘å¨ @  ~µp?d X¯{ašâÑ @  ~¶p?d ˜¯{Aoà/ @  ~·p?d د{Ú%AÄ @  ~¸p?d °{dûýv @  ~¹p?d X°{”„ @  ~ºp?d ˜°{´qñ @  ~»p?d ذ{wúú @  ~ ¼p?d ±{Ð?v @  ~!½p?d X±{ @Œk @  ~"¾p?d ˜±{µŽ• @  ~#¿p?d ر{“Ha_ @  ~$Àp?d ²{ Áž @  ~%Áp?d X²{þs;ç @  ~&Âp?d ˜²{Þ†9 @  ~'Ãp?d ز{Ö'ßB @  ~(Äp?d ³{oSª @  ~)Åp?d X³{ö©Ó @  ~*Æp?d ˜³{Öå«- @  ~+Çp?d س{M¯ Æ @  ~,Èp?d ´{TáùÉ @  ~-Ép?d X´{¤ž° @  ~.Êp?d ˜´{„kN @  ~/Ëp?d Ø´{!kÙõ @  ~0Ìp?d µ{ñ#U @  ~1Íp?d Xµ{\¯d @  ~2Îp?d ˜µ{!©­š @  ~3Ïp?d ص{ß³n @  ~4Ðp?d ¶{B÷Î\ @  ~5Ñp?d X¶{²ˆ4% @  ~6Òp?d ˜¶{’}6Û @  ~7Óp?d ض{šÜЀ @  ~8Ôp?d ·{J”\h @  ~9Õp?d X·{ºë¦ @  ~:Öp?d ˜·{š¤ï @  ~;×p?d Ø·{T @  ~<Øp?d ¸{5«‰ @  ~=Ùp?d X¸{ÅÔs` @  ~>Úp?d ˜¸{å!qž @  ~?Ûp?d ظ{ÿ ˆ @  ~@Üp?d ¹{/hï @  ~AÝp?d X¹{ßþ– @  ~BÞp?d ˜¹{ÿâüh @  ~Cßp?d ع{œO³ @  ~Dàp?d º{ ¦r @  ~Eáp?d Xº{ñt\  @  ~Fâp?d ˜º{Ñ^õ @  ~Gãp?d غ{Ù ¸® @  ~Häp?d »{ h4F @  ~Iåp?d X»{ùÎ? @  ~Jæp?d ˜»{ÙâÌÁ @  ~Kçp?d Ø»{B¨m* @  ~Lèp?d ¼{[æž% @  ~Mép?d X¼{«™d\ @  ~Nêp?d ˜¼{‹lf¢ @  ~Oëp?d ؼ{.l¾ @  ~Pìp?d ½{þ$2ñ @  ~Qíp?d X½{[Ȉ @  ~Rîp?d ˜½{.®Êv @  ~Sïp?d ؽ{д q @  ~Tðp?d ¾{Mð©° @  ~Uñp?d X¾{½SÉ @  ~Vòp?d ˜¾{zQ7 @  ~Wóp?d ؾ{•Û·l @  ~Xôp?d ¿{E“;„ @  ~Yõp?d X¿{µìÁý @  ~Zöp?d ˜¿{•à @uÐÀ{  ~[÷p?d Ø¿{Sbè @  ~\øp?d 0À{j£3º @  ~]ùp?d pÀ{šÜÉà @  ~^úp?d °À{º)Ë= @  ~_ûp?d ðÀ{/46 @  ~`üp?d 0Á{Þg¸Þ @  ~aýp?d pÁ{.B§ @  ~bþp?d °Á{í@Y @  ~cÿp?d ðÁ{ÿ±®  @  ~dq?d 0Â{bõÌ @  ~eq?d pÂ{’Šôµ @  ~fq?d °Â{²öK @  ~gq?d ðÂ{ºÞ @  ~hq?d 0Ã{j–œø @  ~iq?d pÃ{šéf @  ~jq?d °Ã{ºd @  ~kq?d ðÃ{!VÅ” @  ~lq?d 0Ä{86› @  ~m q?d pÄ{ÈgÌâ @  ~n q?d °Ä{è’Î @  ~o q?d ðÄ{M’§ @  ~p q?d 0Å{ÚšO @  ~q q?d pÅ{m¥`6 @  ~rq?d °Å{MPbÈ @  ~sq?d ðÅ{³J¡Ï @  ~tq?d 0Æ{. @  ~uq?d pÆ{Þqûw @  ~vq?d °Æ{þ„ù‰ @  ~wq?d ðÆ{ö%Ò @  ~xq?d 0Ç{&m“: @  ~yq?d pÇ{ÖiC @  ~zq?d °Ç{öçk½ @  ~{q?d ðÇ{m­ÊV @  ~|q?d 0È{YRFK @  ~}q?d pÈ{©-¼2 @  ~~q?d °È{‰Ø¾Ì @  ~q?d ðÈ{pwd @  ~€q?d 0É{ ÇûŒ @  ~q?d pÉ{P¸õ @  ~‚q?d °É{pM  @  ~ƒq?d ðÉ{àùÐ @  ~„ q?d 0Ê{ޤY @  ~…!q?d pÊ{~Û£h @  ~†"q?d °Ê{^.¡– @  ~‡#q?d ðÊ{VGÍ @  ~ˆ$q?d 0Ë{†ÇË% @  ~‰%q?d pË{v¸1\ @  ~Š&q?d °Ë{VM3¢ @  ~‹'q?d ðË{Í’I @  ~Œ(q?d 0Ì{ÔIaF @  ~)q?d pÌ{$6›? @  ~Ž*q?d °Ì{ÙÁ @  ~+q?d ðÌ{¡ÃAz @  ~,q?d 0Í{q‹Í’ @  ~‘-q?d pÍ{ô7ë @  ~’.q?d °Í{¡5 @  ~“/q?d ðÍ{_ö @  ~”0q?d 0Î{Â_VÓ @  ~•1q?d pÎ{2 ¬ª @  ~–2q?d °Î{Õ®T @  ~—3q?d ðÎ{tH @  ~˜4q?d 0Ï{Ê<Äç @  ~™5q?d pÏ{:C>ž @  ~š6q?d °Ï{¶<` @  ~›7q?d ðÏ{ü‹ @  ~œ8q?d 0Ð{?"!9 @  ~9q?d pÐ{Ï]Û@ @  ~ž:q?d °Ð{ï¨Ù¾ @  ~Ÿ;q?d ðÐ{[®&µ @  ~ q?d °Ñ{[lRÚ @  ~£?q?d ðÑ{È‘½ @  ~¤@q?d 0Ò{UÕÑ @  ~¥Aq?d pÒ{¥ªç¨ @  ~¦Bq?d °Ò{…_åV @  ~§Cq?d ðÒ{þ  @  ~¨Dq?d 0Ó{]¶å @  ~©Eq?d pÓ{­Éuœ @  ~ªFq?d °Ó{ @  ~Ôpq?d 0Þ{)uÿ @  ~Õqq?d pÞ{æV† @  ~Örq?d °Þ{Æ£x @  ~×sq?d ðÞ{Îk# @  ~Øtq?d 0ß{JçË @  ~Ùuq?d pß{î5² @  ~Úvq?d uÐà{/°ß{ÎÀL @  ~Ûwq?d ðß{Uо§ @  ~Üxq?d Hà{L.àQ @  ~Ýyq?d ˆà{5 @  ~Þzq?d Èà{œ¤Ö @  ~ß{q?d á{z{|ë @  ~à|q?d Há{øêk5 @  ~á}q?d ˆá{ªñ„l @  ~â~q?d€ Èá{\£ @  q?d â{, Ëz @  €q?d Hâ{®Ü¤ @  q?d ˆâ{9ÏÈ @  ‚q?d Èâ{»^ßÎ @  ƒq?d ã{/”ýÙ @  „q?d Hã{­ê @  …q?d ˆã{1¬Z$ @  †q?d Èã{³=Mú @   ‡q?d ä{váó- @   ˆq?d Hä{ôpäó @   ‰q?d ˆä{c"ðG @   Šq?d Èä{á³ç™ @   ‹q?d å{uyÅŽ @  Œq?d Hå{÷èÒP @  q?d ˆå{Æà\“ @  Žq?d Èå{DqKM @  q?d æ{`÷ĸ @  q?d Hæ{âfÓf @  ‘q?d ˆæ{u4ÇÒ @  ’q?d Èæ{÷¥Ð  @  “q?d ç{coò @  ”q?d Hç{áþåÅ @  •q?d ˆç{}WUæ @  –q?d Èç{ÿÆB8 @  —q?d è{«ƒý @  ˜q?d Hè{•:”# @  ™q?d ˆè{h€— @  šq?d Èè{€ù—I @  ›q?d é{-ôi‹ @   œq?d Hé{¯e~U @   q?d ˆé{k×& @   žq?d Èé{ö”ûø @  !Ÿq?d ê{O¥MÑ @  " q?d Hê{Í4Z @  #¡q?d ˆê{ZfN» @  $¢q?d Èê{Ø÷Ye @  %£q?d ë{L={r @  &¤q?d Hë{άl¬ @  '¥q?d ˆë{RÜ @  (¦q?d Èë{ДËQ @  )§q?d ì{Hu† @  *¨q?d Hì{—ÙbX @  +©q?d ˆì{‹vì @  ,ªq?d Èì{‚a2 @  -«q?d í{ÐC% @  .¬q?d Hí{”ATû @  /­q?d ˆí{¥IÚ8 @  0®q?d Èí{'ØÍæ @  1¯q?d î{^B @  2°q?d Hî{ÏUÍ @  3±q?d ˆî{Ay @  4²q?d Èî{” V§ @  5³q?d ï{Æt° @  6´q?d Hï{‚Wcn @  7µq?d ˆï{þÓM @  8¶q?d Èï{œoÄ“ @  9·q?d ð{þ#5ù @  :¸q?d Hð{|²"' @  ;¹q?d ˆð{ëà6“ @  <ºq?d Èð{iq!M @  =»q?d ñ{ý»Z @  >¼q?d Hñ{*„ @  ?½q?d ˆñ{ñ#»e @  @¾q?d Èñ{s²¬» @  A¿q?d ò{:Óƒ @  BÀq?d Hò{¸B] @  CÁq?d ˆò{/ é @  DÂq?d Èò{­7 @  EÃq?d ó{9K9  @  FÄq?d Hó{»Ú.þ @  GÅq?d ˆó{'sžÝ @  HÆq?d Èó{¥â‰ @  IÇq?d ô{`>7Ô @  JÈq?d Hô{⯠ @  KÉq?d ˆô{uý4¾ @  LÊq?d Èô{÷l#` @  MËq?d õ{c¦w @  NÌq?d Hõ{á7© @  OÍq?d ˆõ{Ð?˜j @  PÎq?d Èõ{R®´ @  QÏq?d ö{v(A @  RÐq?d Hö{ô¹Ÿ @  SÑq?d ˆö{cë+ @  TÒq?d Èö{ázõ @  UÓq?d ÷{u°6â @  VÔq?d H÷{÷!!< @  WÕq?d ˆ÷{kˆ‘ @  XÖq?d È÷{é†Á @  Y×q?d ø{tG @  ZØq?d Hø{ƒåPÚ @  [Ùq?d ˆø{·Dn @  \Úq?d Èø{–&S° @  ]Ûq?d ù{ìq§ @  ^Üq?d Hù{€}fy @  _Ýq?d ˆù{ sÏ  @  `Þq?d Èù{"âØÔ @  aßq?d ú{›Óný @  bàq?d Hú{By# @  cáq?d ˆú{Žm— @  dâq?d Èú{ zI @  eãq?d û{˜KX^ @  fäq?d Hû{ÚO€ @  gåq?d ˆû{†sÿ£ @  hæq?d Èû{âè} @  içq?d ü{Á>Vª @  jèq?d Hü{C¯At @  kéq?d ˆü{ÔýUÀ @  lêq?d Èü{VlB @  mëq?d ý{¦`  @  nìq?d Hý{@7w× @  oíq?d ˆý{q?ù @  pîq?d Èý{ó®îÊ @  qïq?d þ{×(a? @  rðq?d Hþ{U¹vá @  sñq?d ˆþ{ÂëbU @  tòq?d Èþ{@zu‹ @  uóq?d ÿ{Ô°Wœ @  vôq?d Hÿ{V!@B @  wõq?d ˆÿ{ʈða @  xuÐ|öq?d Èÿ{аj @  y÷q?d |cä_, @  zøq?d `|áuHò @  {ùq?d  |v'\F @  |úq?d à|ô¶K˜ @  }ûq?d |`|i @  ~üq?d `|âí~Q @  ýq?d  |²á @  €þq?d à| #ö_ @  ÿq?d |”ÁaÜ @  ‚r?d `|Pv @  ƒr?d  |b¶ @  „r?d à|“uh @  …r?d |—YW @  †r?d `|È@¡ @  ‡r?d  |‰að‚ @  ˆr?d à| ðç\ @  ‰r?d |Î,Y‹ @  Šr?d `|L½NU @  ‹ r?d  |ÛïZá @  Œ r?d à|Y~M? @   r?d |Í´o( @  Ž r?d `|O%xö @   r?d  |~-ö5 @  r?d à|ü¼áë @  ‘r?d |Ø:n @  ’r?d `|Z«yÀ @  “r?d  |Íùmt @  ”r?d à|Ohzª @  •r?d |Û¢X½ @  –r?d `|Y3Oc @  —r?d  |Åšÿ@ @  ˜r?d à|G èž @  ™r?d |¯f)[ @  šr?d `|-÷>… @  ›r?d  |º¥*1 @  œr?d à|84=ï @  r?d |¬þø @  žr?d ` |.o& @  Ÿr?d   |a¡U @   r?d à |Œð¶‹ @  ¡r?d |5Á¢ @  ¢ r?d ` |·P| @  £!r?d   | È @  ¤"r?d à |¢“ @  ¥#r?d |6Y6 @  ¦$r?d ` |´È!ß @  §%r?d   |(a‘ü @  ¨&r?d à |ªð†" @  ©'r?d |o,8õ @  ª(r?d ` |í½/+ @  «)r?d   |zï;Ÿ @  ¬*r?d à |ø~,A @  ­+r?d |l´V @  ®,r?d ` |î%ˆ @  ¯-r?d   |ß-—K @  °.r?d à |]¼€• @  ±/r?d |y:` @  ²0r?d `|û«¾ @  ³1r?d  |lù  @  ´2r?d à|îhÔ @  µ3r?d |z¢9à @  ¶4r?d `|ø3. @  ·5r?d  |dšž> @  ¸6r?d à|æ ‰à @  ¹7r?d |„GxŠ @  º8r?d `|ÖoT @  »9r?d  |‘„{à @  ¼:r?d à|l> @  ½;r?d |‡ßN) @  ¾r?d à| ÖáÈ @  Á?r?d |@·Bð @  Â@r?d `|Â&U. @  ÃAr?d  |UtAš @  ÄBr?d à|×åVD @  ÅCr?d |C/tS @  ÆDr?d `|Á¾c @  ÇEr?d  |]Ó® @  ÈFr?d à|߆Äp @  ÉGr?d |Zz§ @  ÊHr?d `|˜Ëmy @  ËIr?d  |™yÍ @  ÌJr?d à|n @  ÍKr?d |ÂL @  ÎLr?d `|›S[Ú @  ÏMr?d  |ª[Õ @  ÐNr?d à|(ÊÂÇ @  ÑOr?d | LM2 @  ÒPr?d `|ŽÝZì @  ÓQr?d  |NX @  ÔRr?d à|›Y† @  ÕSr?d |Ô{‘ @  ÖTr?d `|ElO @  ×Ur?d  |ìÜl @  ØVr?d à|“}˲ @  ÙWr?d |{ w @  ÚXr?d `|ù© @  ÛYr?d  |nÓ  @  ÜZr?d à|ìBà @  Ý[r?d |xˆ<Ô @  Þ\r?d `|ú+  @  ß]r?d  |Ú‚y @  à^r?d à|X†•§ @  á_r?d |á·#Ž @  â`r?d€ `|Ãà× @  €ar?d  |Œ Ÿ @  € br?d à|†7A @  € cr?d |_î» @  € dr?d `|Ý”ùe @  € er?d  |< @  € fr?d à| â @  € gr?d |pàO @  € hr?d `|„á÷‘ @  € ir?d  |ÖúÈ @  € jr?d à|Tk @  € kr?d |èÖì @  € lr?d `|‡yÁ2 @  € mr?d  |Õb.k @  € nr?d à|Wó9µ @  € or?d |f×Ú @  € pr?d `|’÷À @  € qr?d  |Àì/] @  € rr?d à|B}8ƒ @  € sr?d |þáy @  € tr?d `|‘oö§ @  € ur?d  |ÃtþuÐ | @  € vr?d à|º‹5  @  €wr?d 8 |Ù ùä @  €xr?d x |[1î: @  €yr?d ¸ |òD:c @  € zr?d ø |pÕ-½ @  € {r?d 8!|!VôG @  € |r?d x!|X©Ø™ @  €}r?d ¸!| ²7À @  €~r?d ø!|ˆ#  @  €r?d 8"|Uÿªž @  € €r?d x"|×n½@ @  €! r?d ¸"|…uR @  €" ‚r?d ø"|äEÇ @  €# ƒr?d 8#|Vgœ= @  €$ „r?d x#|/˜°ã @  €%…r?d ¸#|}ƒ_º @  €&†r?d ø#|=»¯± @  €'‡r?d 8$|6ÕN @  €(ˆr?d x$|´DY @  €)‰r?d ¸$|æ_¶› @  €*Šr?d ø$|dΡE @  €+‹r?d 8%|5Mx¿ @  €,Œr?d x%|·Üoa @  €-r?d ¸%|åÇ€8 @  €.Žr?d ø%|gV—æ @  €/r?d 8&| Ãy‰ @  €0r?d x&|¢RnW @  €1‘r?d ¸&|ðI @  €2’r?d ø&|rØ–Ð @  €3“r?d 8'|#[O* @  €4”r?d x'|¡ÊXô @  €5•r?d ¸'|óÑ·­ @  €6–r?d ø'|q@ s @  €7—r?d 8(|WŸ>Ì @  €8˜r?d x(|Õ) @  €9™r?d ¸(|‡ÆK @  €:šr?d ø(|„Ñ• @  €;›r?d 8)|To @  €<œr?d x)|Ö–± @  €=r?d ¸)|„ðè @  €>žr?d ø)|ç6 @  €?Ÿr?d 8*|c?§ @  €@ r?d x*|á®y @  €A¡r?d ¸*|³µé  @  €B¢r?d ø*|1$þþ @  €C£r?d 8+|`§' @  €D¤r?d x+|â60Ú @  €E¥r?d ¸+|°-߃ @  €F¦r?d ø+|2¼È] @  €G§r?d 8,|9Ò)ð @  €H¨r?d x,|»C>. @  €I©r?d ¸,|éXÑw @  €Jªr?d ø,|kÉÆ© @  €K«r?d 8-|:JS @  €L¬r?d x-|¸Û @  €M­r?d ¸-|êÀçÔ @  €N®r?d ø-|hQð  @  €O¯r?d 8.|/Äe @  €P°r?d x.|­U » @  €Q±r?d ¸.|ÿNæâ @  €R²r?d ø.|}ßñ< @  €S³r?d 8/|,\(Æ @  €T´r?d x/|®Í? @  €Uµr?d ¸/|üÖÐA @  €V¶r?d ø/|~GÇŸ @  €W·r?d 80|Ò¹i @  €X¸r?d x0|P(~Q @  €Y¹r?d ¸0|3‘ @  €Zºr?d ø0|€¢†Ö @  €[»r?d 81|Ñ!_, @  €\¼r?d x1|S°Hò @  €]½r?d ¸1|«§« @  €^¾r?d ø1|ƒ:°u @  €_¿r?d 82|¸NUg @  €`Àr?d x2|:ßB¹ @  €aÁr?d ¸2|hÄ­à @  €bÂr?d ø2|êUº> @  €cÃr?d 83|»ÖcÄ @  €dÄr?d x3|9Gt @  €eÅr?d ¸3|k\›C @  €fÆr?d ø3|éÍŒ @  €gÇr?d 84|â£m0 @  €hÈr?d x4|`2zî @  €iÉr?d ¸4|2)•· @  €jÊr?d ø4|°¸‚i @  €kËr?d 85|á;[“ @  €lÌr?d x5|cªLM @  €mÍr?d ¸5|1±£ @  €nÎr?d ø5|³ ´Ê @  €oÏr?d 86|ôµZ¥ @  €pÐr?d x6|v$M{ @  €qÑr?d ¸6|$?¢" @  €rÒr?d ø6|¦®µü @  €sÓr?d 87|÷-l @  €tÔr?d x7|u¼{Ø @  €uÕr?d ¸7|'§” @  €vÖr?d ø7|¥6ƒ_ @  €w×r?d 88|ƒéà @  €xØr?d x8|x > @  €yÙr?d ¸8|Scåg @  €zÚr?d ø8|Ñòò¹ @  €{Ûr?d 89|€q+C @  €|Ür?d x9|à< @  €}Ýr?d ¸9|PûÓÄ @  €~Þr?d ø9|ÒjÄ @  €ßr?d 8:|Tº @  €€àr?d x:|ÖŽd @  €ár?d ¸:|„•ú= @  €‚âr?d ø:|íã @  €ƒãr?d 8;|W‡4 @  €„är?d x;|Õ#Ç @  €…år?d ¸;|‡ Ìž @  €†ær?d ø;|œÛ@ @  €‡çr?d 8<|ò:í @  €ˆèr?d x<|Œc-3 @  €‰ér?d ¸<|ÞxÂj @  €Šêr?d ø<|\éÕ´ @  €‹ër?d 8=| j N @  €Œìr?d x=|û @  €ír?d ¸=|ÝàôÉ @  €Žîr?d ø=|_qã @  €ïr?d 8>|ä x @  €ðr?d x>|šu¦ @  €‘ñr?d ¸>|Ènõÿ @  €’òr?d ø>|Jÿâ! @  €“ór?d 8?||;Û @  €”ôr?d x?|™í, @  €•õr?duÐ@|7 ¸?|ËöÃ\ @  €–ör?d ø?|IgÔ‚ @  €—÷r?d P@|˜ë| @  €˜ør?d @|¸~â @  €™ùr?d Ð@|Ha„› @  €šúr?d A|˜)s @  €›ûr?d PA|›sJ¿ @  €œür?d A|»†HA @  €ýr?d ÐA|Kù²8 @  €žþr?d B|Ö½ù @  €Ÿÿr?d PB|½Aj @  € s?d B|°HC” @  €¡s?d ÐB|@7¹í @  €¢s?d C|5 @  €£s?d PC|“%wÉ @  €¤s?d C|³Ðu7 @  €¥s?d ÐC|C¯N @  €¦s?d D|Zá|A @  €§s?d PD|ÊPy= @  €¨s?d D|ê¥{à @  €© s?d ÐD|Úº @  €ª s?d E|Ê’ R @  €« s?d PE|ÉÈOž @  €¬ s?d E|é=M` @  €­ s?d ÐE|B· @  €®s?d F|„Ø @  €¯s?d PF|ÜFN¨ @  €°s?d F|ü³LV @  €±s?d ÐF| ̶/ @  €²s?d G|Ü„:Ç @  €³s?d PG|ßÞx  @  €´s?d G|ÿ+zõ @  €µs?d ÐG|T€Œ @  €¶s?d H|;« ‘ @  €·s?d PH|« í @  €¸s?d H|‹ï  @  €¹s?d ÐH|{ñj @  €ºs?d I|«Ø}‚ @  €»s?d PI|¨‚?N @  €¼s?d I|ˆw=° @  €½s?d ÐI|xÇÉ @  €¾s?d J|åLg @  €¿s?d PJ|Ÿº&† @  €À s?d J|¿O$x @  €Á!s?d ÐJ|O0Þ @  €Â"s?d K|ŸxRé @  €Ã#s?d PK|œ"% @  €Ä$s?d K|¼×Û @  €Å%s?d ÐK|L¨è¢ @  €Æ&s?d L|Uæ­ @  €Ç's?d PL|ÅWÑ @  €È(s?d L|å¢/ @  €É)s?d ÐL|ÝæV @  €Ê*s?d M|Å•j¾ @  €Ë+s?d PM|ÆÏ(r @  €Ì,s?d M|æ:*Œ @  €Í-s?d ÐM|EÐõ @  €Î.s?d N|‹p4 @  €Ï/s?d PN|ÓA)D @  €Ð0s?d N|ó´+º @  €Ñ1s?d ÐN|ËÑà @  €Ò2s?d O|Óƒ]+ @  €Ó3s?d PO|ÐÙç @  €Ô4s?d O|ð, @  €Õ5s?d ÐO|Sç` @  €Ö6s?d P|¾[Ò @  €×7s?d PP|.<^® @  €Ø8s?d P|É\P @  €Ù9s?d ÐP|þ¶¦) @  €Ú:s?d Q|.þ*Á @  €Û;s?d PQ|-¤h  @  €Üs?d R|`j0K @  €ß?s?d PR|DËbF @  €à@s?d R|d>`¸ @  €áAs?d ÐR|”AšÁ @  €âBs?d€ S|0Ê  @  Cs?d PS|ÒÑj @  Ds?d S|ò$” @  Es?d ÐS|Ç @  Fs?d T|Þ\ð @  Gs?d PT|€_ª  @  Hs?d T| ª¨÷ @  Is?d ÐT|žg ô @  Js?d U|N/ @   Ks?d PU|ˆ<8= @   Ls?d U|¨É:à @   Ms?d ÐU|ÿ;W @   Ns?d V|»›– @   Os?d PV|;è£| @  Ps?d V|¡‚ @  Qs?d ÐV|ˆq:a @  Rs?d W|X9¶‰ @  Ss?d PW|ž*¨ @  Ts?d W|¾ß V @  Us?d ÐW|‹é  @  Vs?d X|¿€ß @  Ws?d PX|áÚÙ @  Xs?d X|ÁàØ' @  Ys?d ÐX|ÿ-}$ @  Zs?d Y|/eñÌ @  [s?d PY|évHí @  \s?d Y|ɃJ @  ]s?d ÐY|üµK‡ @  ^s?d Z|añëF @  _s?d PZ|Çêp @  `s?d Z|çàèŽ @  as?d ÐZ|eŠTÝ @   bs?d [|µÂØ5 @  !cs?d P[|sÑa @  "ds?d [|S$cê @  #es?d Ð[|fb~ @  $fs?d \|\‘q @  %gs?d P\|!_Ëw @  &hs?d \|ªÉ‰ @  'is?d Ð\|?glŠ @  (js?d ]|ï/àb @  )ks?d P]|)€s?d ¨b|!qñö @  ?s?d èb| K7 @  @‚s?d (c|ÝTÇß @  Aƒs?d hc|G~þ @  B„s?d ¨c|;²| @  C…s?d èc|„}” @  D†s?d (d|ÊŽ› @  E‡s?d hd|IÉÔ @  Fˆs?d ¨d|i<Öc @  G‰s?d èd|Wñs` @  HŠs?d (e|‡¹ÿˆ @  I‹s?d he|AªF© @  JŒs?d ¨e|a_DW @  Ks?d èe|TiEà @  LŽs?d (f|É-å @  Ms?d hf|ò~Ýè @  Ns?d ¨f|Ò‹ß @  O‘s?d èf|AçDõ @  P’s?d (g|‘¯È @  Q“s?d hg|W¼q< @  R”s?d ¨g|wIs @  S•s?d èg|BrV @  T–s?d (h|v€þK @  U—s?d hh|(ƒ¤M @  V˜s?d ¨h|v¦³ @  W™s?d èh|6»° @  Xšs?d (i|æóX @  Y›s?d hi| à6y @  Zœs?d ¨i|4‡ @  [s?d èi|5#5 @  \žs?d (j|¨g•Ò @  ]Ÿs?d hj|ƒ”ä @  ^ s?d ¨j|.v– @  _¡s?d èj|¬*I @  `¢s?d (k||T¦¡ @  a£s?d hk|ºG€ @  b¤s?d ¨k|š²~ @  c¥s?d èk|¯„ê @  d¦s?d (l|¶Êïå @  e§s?d hl|èɵã @  f¨s?d ¨l|È<· @  g©s?d èl|öñ @  hªs?d (m|&¹žö @  i«s?d hm|àª'× @  j¬s?d ¨m|À_%) @  k­s?d èm|õi$½ @  l®s?d (n|h-„| @  m¯s?d hn|S~¼– @  n°s?d ¨n|s‹¾h @  o±s?d èn|àç%‹ @  p²s?d (o|0¯©c @  q³s?d ho|ö¼B @  r´s?d ¨o|ÖI¼ @  sµs?d èo|ã( @  t¶s?d (p|]¡¯š @  u·s?d hp|¢õœ @  v¸s?d ¨p|#W÷b @  w¹s?d èp|šRa @  xºs?d (q|ÍÒÞ‰ @  y»s?d hq| Ág¨ @  z¼s?d ¨q|+4eV @  {½s?d èq|d @  |¾s?d (r|ƒFÄ @  }¿s?d hr|ÕòÐ$ @  ~Às?d ¨r|õÒÚ @  Ás?d èr|:t?d @’|ÎÞ+Õ @  ‚?t?d €’|ÿGÑ? @  ‚@t?d À’|}ÖÆá @  ‚At?d “|ßp§® @  ‚Bt?d @“|]á°p @  ‚Ct?d €“|KƒZ[ @  ‚ Dt?d À“|ÉM… @  ‚!Et?d ”|¢²S- @  ‚"Ft?d @”| #Dó @  ‚#Gt?d €”| ð8 @  ‚$Ht?d À”|›œçæ @  ‚%It?d •|9:†© @  ‚&Jt?d @•|»«‘w @  ‚'Kt?d €•|nb  @  ‚(Lt?d À•|“ÿuÒ @  ‚)Mt?d –||U8´ @  ‚*Nt?d @–|þÄ/j @  ‚+Ot?d €–|¢ºùM @  ‚,Pt?d À–| +î“ @  ‚-Qt?d —|‚Ü @  ‚.Rt?d @—|˜ @  ‚/St?d €—|xU™ @  ‚0Tt?d À—|…éBG @  ‚1Ut?d ˜|Ãø#ý @  ‚2Vt?d @˜|Ai4# @  ‚3Wt?d €˜|xG€è @  ‚4Xt?d À˜|úÖ—6 @  ‚5Yt?d ™|Xpöy @  ‚6Zt?d @™|Úáá§ @  ‚7[t?d €™|p$Ü @  ‚8\t?d À™|òµ @  ‚9]t?d š|Hd @  ‚:^t?d @š|ŸŽ_º @  ‚;_t?d €š|^G°A @  ‚<`t?d Àš|ÜÖ§Ÿ @  ‚=at?d ›|~pÆÐ @  ‚>bt?d @›|üáÑ @  ‚?ct?d €›|D„=· @  ‚@dt?d À›|Æ*i @  ‚Aet?d œ|­µ4Á @  ‚Bft?d @œ|/$# @  ‚Cgt?d €œ| —Ô @  ‚Dht?d Àœ|”›€  @  ‚Eit?d |6=áE @  ‚Fjt?d @|´¬ö› @  ‚Gkt?d €|ià @  ‚Hlt?d À|œø> @  ‚Imt?d ž|sR_X @  ‚Jnt?d @ž|ñÃH† @  ‚Kot?d €ž|­½ž¡ @  ‚Lpt?d Àž|/,‰ @  ‚Mqt?d Ÿ|Šè0 @  ‚Nrt?d @Ÿ|ÿî @  ‚Ost?d €Ÿ|2u @  ‚PttuР|?d ÀŸ|Šî%« @  ‚Qut?d  |‰ j @  ‚Rvt?d X | š´ @  ‚Swt?d ˜ |2´µ @  ‚Txt?d Ø |°%¢¡ @  ‚Uyt?d ¡|ƒÃî @  ‚Vzt?d X¡|Ô0 @  ‚W{t?d ˜¡|:×'K @  ‚X|t?d Ø¡|¸F0• @  ‚Y}t?d ¢|Wì}ó @  ‚Z~t?d X¢|Õ}j- @  ‚[t?d ˜¢|ù"ÄU @  ‚\€t?d Ø¢|{³Ó‹ @  ‚]t?d £|Ù²Ä @  ‚^‚t?d X£|[„¥ @  ‚_ƒt?d ˜£|MæO1 @  ‚`„t?d Ø£|ÏwXï @  ‚a…t?d ¤|¤×FG @  ‚b†t?d X¤|&FQ™ @  ‚c‡t?d ˜¤|håR @  ‚dˆt?d ؤ|ùòŒ @  ‚e‰t?d ¥|?_“à @  ‚fŠt?d X¥|½Î„ @  ‚g‹t?d ˜¥| wf @  ‚hŒt?d Ø¥|•š`¸ @  ‚it?d ¦|z0-Þ @  ‚jŽt?d X¦|ø¡: @  ‚kt?d ˜¦|¤ßì' @  ‚lt?d ئ|&Nûù @  ‚m‘t?d §|„èš¶ @  ‚n’t?d X§|yh @  ‚o“t?d ˜§|@ó @  ‚p”t?d ا|ƒŒW- @  ‚q•t?d ¨|Å6— @  ‚r–t?d X¨|G !I @  ‚s—t?d ˜¨|~"•‚ @  ‚t˜t?d ب|ü³‚\ @  ‚u™t?d ©|^ã @  ‚všt?d X©|Ü„ôÍ @  ‚w›t?d ˜©|vA¶ @  ‚xœt?d Ø©|ôÐh @  ‚yt?d ª|z] @  ‚zžt?d Xª|™ëJÐ @  ‚{Ÿt?d ˜ª|X"¥+ @  ‚| t?d ت|Ú³²õ @  ‚}¡t?d «|xÓº @  ‚~¢t?d X«|ú„Äd @  ‚£t?d ˜«|¡·ì @  ‚€¤t?d Ø«|#&2 @  ‚¥t?d ¬|H†š @  ‚‚¦t?d X¬|ÊD @  ‚ƒ§t?d ˜¬|ó9² @  ‚„¨t?d ج|q¨¥Q @  ‚…©t?d ­|ÓÄ @  ‚†ªt?d X­|QŸÓÀ @  ‚‡«t?d ˜­|ûZ » @  ‚ˆ¬t?d Ø­|yË7e @  ‚‰­t?d ®|–az @  ‚Š®t?d X®|ðmÝ @  ‚‹¯t?d ˜®|HŽ»ú @  ‚Œ°t?d Ø®|ʬ$ @  ‚±t?d ¯|h¹Ík @  ‚޲t?d X¯|ê(Úµ @  ‚³t?d ˜¯|íL. @  ‚´t?d د|oÝð @  ‚‘µt?d °|£íQå @  ‚’¶t?d X°|!|F; @  ‚“·t?d ˜°|Ròð @  ‚”¸t?d ذ|šÃå. @  ‚•¹t?d ±|8e„a @  ‚–ºt?d X±|ºô“¿ @  ‚—»t?d ˜±|1`Ä @  ‚˜¼t?d ر|’ w @  ‚™½t?d ²|} :| @  ‚š¾t?d X²|ÿ›-¢ @  ‚›¿t?d ˜²|³‚¤4 @  ‚œ€Àt?d ز|1³ê @  ‚€Át?d ³|“µÒ¥ @  ‚ž€Ât?d X³|$Å{ @  ‚Ÿ€Ãt?d ˜³|F/P @  ‚ €Ät?d س|…×8Ž @  ‚¡€Åt?d ´|îw&& @  ‚¢€Æt?d X´|læ1ø @  ‚£€Çt?d ˜´|UÈ…3 @  ‚¤€Èt?d Ø´|×Y’í @  ‚¥€Ét?d µ|uÿó¢ @  ‚¦€Êt?d Xµ|÷nä| @  ‚§€Ët?d ˜µ|]« @  ‚¨€Ìt?d ص|ß:Ù @  ‚©€Ít?d ¶|0M¿ @  ‚ª€Ît?d X¶|²Za @  ‚«€Ït?d ˜¶|îŒF @  ‚¬€Ðt?d ض|l @  ‚­€Ñt?d ·|ÎHú× @  ‚®€Òt?d X·|LÙí  @  ‚¯€Ót?d ˜·|K½ ’ @  ‚°€Ôt?d Ø·|É,7L @  ‚±€Õt?d ¸|=Vö @  ‚²€Öt?d X¸| ¬A( @  ‚³€×t?d ˜¸|4‚õã @  ‚´€Øt?d ظ|¶â= @  ‚µ€Ùt?d ¹|µƒr @  ‚¶€Út?d X¹|–$”¬ @  ‚·€Ût?d ˜¹|<ág× @  ‚¸€Üt?d ع|¾pp  @  ‚¹€Ýt?d º|QÚ=o @  ‚º€Þt?d Xº|ÓK*± @  ‚»€ßt?d ˜º|‚ÅJ @  ‚¼€àt?d غ|Ò” @  ‚½€át?d »|2µ³Û @  ‚¾€ât?d X»|°$¤ @  ‚¿€ãt?d ˜»|AH¼ @  ‚À€ät?d Ø»|ŠÐ_b @  ‚Á€åt?d ¼|ápAÊ @  ‚€æt?d X¼|cáV @  ‚Àçt?d ˜¼|ZÏâß @  ‚Ä€èt?d ؼ|Ø^õ @  ‚Å€ét?d ½|zø”N @  ‚Æ€êt?d X½|øiƒ @  ‚Ç€ët?d ˜½|R¬pë @  ‚È€ìt?d ؽ|Ð=g5 @  ‚É€ít?d ¾|?—*S @  ‚Ê€ît?d X¾|½= @  ‚Ë€ït?d ˜¾|áxëª @  ‚Ì€ðt?d ؾ|céüt @  ‚Í€ñt?d ¿|ÁO; @  ‚΀òt?d X¿|CÞŠå @  ‚Ï€ót?d ˜¿|DºG~ @uÐÀ|  ‚Ѐôt?d Ø¿|»«#Ü @  ‚Ñõt?d 0À|­µŸ) @  ‚Òöt?d pÀ|/$ˆ÷ @  ‚Ó÷t?d °À| << @  ‚Ôøt?d ðÀ|”›+â @  ‚Õùt?d 0Á|6=J­ @  ‚Öút?d pÁ|´¬]s @  ‚×ût?d °Á|i® @  ‚Øüt?d ðÁ|œø¹Ö @  ‚Ùýt?d 0Â|sRô° @  ‚Úþt?d pÂ|ñÃãn @  ‚Ûÿt?d °Â|¢û @  ‚Üu?d ðÂ| jÄ @  ‚Ýu?d 0Ã|‚Ìn‹ @  ‚Þu?d pÃ|]yU @  ‚ßu?d °Ã|?“~ @  ‚àu?d ðÃ|”®„  @  ‚áu?d 0Ä|ÿš @  ‚âu?d€ pÄ| \‘p @  ƒu?d °Ä|Ñ3m’ @  ƒu?d ðÄ|S¢zL @  ƒ u?d 0Å|4Màî @  ƒ u?d pÅ|¶Ü÷0 @  ƒ u?d °Å|Ò«[1 @  ƒ u?d ðÅ|P:Lï @  ƒ u?d 0Æ|q"^ó @  ƒu?d pÆ|ó³I- @  ƒ u?d °Æ|j„dç @  ƒ u?d ðÆ|ès9 @  ƒ u?d 0Ç|úé› @  ƒ u?d pÇ| kþE @  ƒ u?d °Ç|iRD @  ƒu?d ðÇ|ëEš @  ƒu?d 0È|ÎEº @  ƒu?d pÈ|LRd @  ƒu?d °È|°yB @  ƒu?d ðÈ|2è œ @  ƒu?d 0É|U> @  ƒu?d pÉ|×–‡à @  ƒu?d °É|³á+á @  ƒu?d ðÉ|1pu?d pÒ|¹Øh, @  ƒ9?u?d °Ò|Mi+ @  ƒ:@u?d ðÒ|Ï™~õ @  ƒ;Au?d 0Ó|¨väW @  ƒ<Bu?d pÓ|*çó‰ @  ƒ=Cu?d °Ó|N_ˆ @  ƒ>Du?d ðÓ|ÌHV @  ƒ?Eu?d 0Ô|{³F @  ƒ@Fu?d pÔ|ù"˜ @  ƒAGu?d °Ô|EN¾ @  ƒBHu?d ðÔ|‡ÔY` @  ƒCIu?d 0Õ|à;à@  ƒDJu?d pÕ|bªÔ @  ƒEKu?d °Õ|Ýx @  ƒFLu?d ðÕ|„Loà @  ƒGMu?d 0Ö|¥T}ß @  ƒHNu?d pÖ|'Åj @  ƒIOu?d °Ö|¾òGË @  ƒJPu?d ðÖ|n @  ƒRXu?d ðØ|æž)° @  ƒSYu?d 0Ù|q³ @  ƒTZu?d pÙ|à¤Ì @  ƒU[u?d °Ù|g—Í @  ƒV\u?d ðÙ|å @  ƒW]u?d 0Ú|Ä  @  ƒX^u?d pÚ|FÑ @  ƒY_u?d °Ú|BÇ @  ƒZ`u?d ðÚ|Àž @  ƒ[au?d 0Û|§qƒ» @  ƒ\bu?d pÛ|%à”e @  ƒ]cu?d °Û|A—8d @  ƒ^du?d ðÛ|Ã/º @  ƒ_eu?d 0Ü|Ú³w8 @  ƒ`fu?d pÜ|X"`æ @  ƒagu?d °Ü|¤E/À @  ƒbhu?d ðÜ|&Ô8 @  ƒciu?d 0Ý|A;¢¼ @  ƒdju?d pÝ|êµb @  ƒeku?d °Ý|§Ýc @  ƒflu?d ðÝ|%L½ @  ƒgmu?d 0Þ|T¡ @  ƒhnu?d pÞ|†Å  @  ƒiou?d °Þ|ò&µ @  ƒjpu?d ðÞ|c1k @  ƒkqu?d 0ß|úŒ«É @  ƒlru?d pß|x¼ @  ƒmsu?d uÐà|/°ß|j @  ƒntu?d ðß|žûÈ @  ƒouu?d Hà|–¢Õ @  ƒpvu?d ˆà|¶W×ý @  ƒqwu?d Èà|èTû @  ƒrxu?d á|8 @  ƒsyu?d Há| *‡ @  ƒtzu?d ˆá|-ßy @  ƒu{u?d Èá|ëÌ»X @  ƒv|u?d â|vˆ™ @  ƒw}u?d Hâ|HE¾š @  ƒx~u?d ˆâ|h°¼d @  ƒyu?d Èâ|#ÂüÑ @  ƒz€u?d ã|óŠp9 @  ƒ{u?d Hã|Ƽq­ @  ƒ|‚u?d ˆã|æIsS @  ƒ}ƒu?d Èã| ZÊr @  ƒ~„u?d ä|99} @  ƒ…u?d Hä|ö/³ @  ƒ€†u?d ˆä|ÖÚ±s @  ƒ‡u?d Èä|ˆÙëu @  ƒ‚ˆu?d å|X‘g @  ƒƒ‰u?d Hå|m§f  @  ƒ„Šu?d ˆå|MRd÷ @  ƒ…‹u?d Èå|‹AÝÖ @  ƒ†Œu?d æ|} @  ƒ‡u?d Hæ|(ÈØ @  ƒˆŽu?d ˆæ|=Úê @  ƒ‰u?d Èæ|3nâ @  ƒŠu?d ç|ã&nè @  ƒ‹‘u?d Hç|Öo| @  ƒŒ’u?d ˆç|öåm‚ @  ƒ“u?d Èç|0öÔ£ @  ƒŽ”u?d è| X¾ @  ƒ•u?d Hè|—eÃ] @  ƒ–u?d ˆè|·Á£ @  ƒ‘—u?d Èè|é“›¥ @  ƒ’˜u?d é|9ÛM @  ƒ“™u?d Hé| íÙ @  ƒ”šu?d ˆé|,' @  ƒ•›u?d Èé|ê ­ @  ƒ–œu?d ê|wO Ç @  ƒ—u?d Hê|I‚¨Ä @  ƒ˜žu?d ˆê|iwª: @  ƒ™Ÿu?d Èê|Ï“«  @  ƒš u?d ë|Û'ä @  ƒ›¡u?d Hë|*í&p @  ƒœ¢u?d ˆë| $Ž @  ƒ£u?d Èë|Ì ¯ @  ƒž¤u?d ì|ÕEn  @  ƒŸ¥u?d Hì|W/Òó @  ƒ ¦u?d ˆì|wÚÐ  @  ƒ¡§u?d Èì|)ÙŠ  @  ƒ¢¨u?d í|ù‘ã @  ƒ£©u?d Hí|̧w @  ƒ¤ªu?d ˆí|ìR‰ @  ƒ¥«u?d Èí|*A¼¨ @  ƒ¦¬u?d î|·i @  ƒ§­u?d Hî|‰È¹j @  ƒ¨®u?d ˆî|©=»” @  ƒ©¯u?d Èî|’nƒ~ @  ƒª°u?d ï|B&– @  ƒ«±u?d Hï|w @  ƒ¬²u?d ˆï|Wå ü @  ƒ­³u?d Èï|‘öµÝ @  ƒ®´u?d ð|/( o @  ƒ¯µu?d Hð|¼D’Œ @  ƒ°¶u?d ˆð|œ±r @  ƒ±·u?d Èð|²Êt @  ƒ²¸u?d ñ|úFœ @  ƒ³¹u?d Hñ|'ÌG @  ƒ´ºu?d ˆñ|9Eö @  ƒµ»u?d Èñ|Á*ü× @  ƒ¶¼u?d ò|\n\ @  ƒ·½u?d Hò|b£ù @  ƒ¸¾u?d ˆò|BVûë @  ƒ¹¿u?d Èò|âïÌ @  ƒºÀu?d ó|Īc$ @  ƒ»Áu?d Hó|ñœb° @  ƒ¼Âu?d ˆó|Ñi`N @  ƒ½Ãu?d Èó|zÙo @  ƒ¾Äu?d ô|4*` @  ƒ¿Åu?d Hô|"Y¡ @  ƒÀÆu?d ˆô|¬’_ @  ƒÁÇu?d Èô|\¯ÈY @  ƒÂÈu?d õ|ŒçD± @  ƒÃÉu?d Hõ|¹ÑE% @  ƒÄÊu?d ˆõ|™$GÛ @  ƒÅËu?d Èõ|_7þú @  ƒÆÌu?d ö|Âs^; @  ƒÇÍu?d Hö|ü¾û8 @  ƒÈÎu?d ˆö|ÜKùÆ @  ƒÉÏu?d Èö|çÁ, @  ƒÊÐu?d ÷|7PMÄ @  ƒËÑu?d H÷|fLP @  ƒÌÒu?d ˆ÷|"“N® @  ƒÍÓu?d È÷|ä€÷ @  ƒÎÔu?d ø|Ð{’ @  ƒÏÕu?d Hø|Càq @  ƒÐÖu?d ˆø|cæâ @  ƒÑ×u?d Èø|=帉 @  ƒÒØu?d ù|í­4a @  ƒÓÙu?d Hù|Ø›5õ @  ƒÔÚu?d ˆù|øn7  @  ƒÕÛu?d Èù|>}Ž* @  ƒÖÜu?d ú|£9.ë @  ƒ×Ýu?d Hú|ô‹è @  ƒØÞu?d ˆú|½‰ @  ƒÙßu?d Èú|åˆ  @  ƒÚàu?d û|Ë­È @  ƒÛáu?d Hû|þ›\ @  ƒÜâu?d ˆû|Þn¢ @  ƒÝãu?d Èû|}¾ƒ @  ƒÞäu?d ü|3MŒ @  ƒßåu?d Hü|ƒYñß @  ƒàæu?d ˆü|£¬ó! @  ƒáçu?d Èü|ý¯©' @  ƒâèu?d€ ý|«±v @  „éu?d Hý|ÆÄË @  „êu?d ˆý|_3Æ5 @  „ëu?d Èý|\i„ù @  „ìu?d þ|Á-$8 @  „íu?d Hþ|1RÞA @  „îu?d ˆþ|§Ü¿ @  „ïu?d Èþ|äF»/ @  „ðu?d ÿ|47Ç @  „ ñu?d Hÿ|Äq; @  „ òu?d ˆÿ|ä„Ï@ @  „ uÐ}óu?d Èÿ|çÞŒ @  „ ôu?d }¨j¥} @  „ õu?d `}X_ @  „öu?d  }xà]ú @  „÷u?d à}Eðff @  „øu?d }•¸êŽ @  „ùu?d `}eÇ÷ @  „úu?d  }E2  @  „ûu?d à}FhPÅ @  „üu?d }Û,ð @  „ýu?d `}+S } @  „þu?d  } ¦ƒ @  „ÿu?d à}C#we @  „v?d }“kû @  „v?d `}cô @  „v?d  }Cá  @  „v?d à}@»AÆ @  „v?d }Yõ²É @  „v?d `}©ŠH° @  „v?d  }‰JN @  „v?d à}¥iVb @  „ v?d }u!ÚŠ @  „! v?d `}…^ ó @  „" v?d  }¥«"  @  „# v?d à}¦ñ`Á @  „$ v?d };µÀ @  „% v?d `}ËÊ:y @  „&v?d  }ë?8‡ @  „'v?d à}Þ_ @  „(v?d }ΖÓÿ @  „)v?d `}>é)† @  „*v?d  }+x @  „+v?d à}Fi´ @  „,v?d })¹å© @  „-v?d `}ÙÆÐ @  „.v?d  }ù3. @  „/v?d à}Ä#&² @  „0v?d }kªZ @  „1v?d ` }äP# @  „2v?d   }ÄáRÝ @  „3v?d à }Ç» @  „4v?d }Zÿ°Ð @  „5v?d ` }ª€J© @  „6v?d   }ŠuHW @  „7v?d à }â# @  „8 v?d }2kšó @  „9!v?d ` }Â`Š @  „:"v?d   }âábt @  „;#v?d à }á» ¸ @  „<$v?d }øõÓ· @  „=%v?d ` }Š)Î @  „>&v?d   }(+0 @  „?'v?d à }ªn1Ž @  „@(v?d }z&½f @  „A)v?d ` }ŠYG @  „B*v?d   }ª¬Eá @  „C+v?d à }©ö- @  „D,v?d }4²§ì @  „E-v?d `}ÄÍ]• @  „F.v?d  }ä8_k @  „G/v?d à}Ù8û @  „H0v?d }Á‘´ @  „I1v?d `}1îNj @  „J2v?d  }L” @  „K3v?d à}AX @  „L4v?d }¬Ÿ²ê @  „M5v?d `}\àH“ @  „N6v?d  }|Jm @  „O7v?d à}Aqñ @  „P8v?d }‘Mý @  „Q9v?d `}a2` @  „R:v?d  }AÇž @  „S;v?d à}BGR @  „Tv?d  }S @  „W?v?d à}—UTI @  „X@v?d }GØ¡ @  „YAv?d `}·b"Ø @  „ZBv?d  }—— & @  „[Cv?d à}”Íbê @  „\Dv?d }ƒ‘å @  „]Ev?d `}}ükœ @  „^Fv?d  }] ib @  „_Gv?d à}quN @  „`Hv?d }¡Wù¦ @  „aIv?d `}Q(ß @  „bJv?d  }qÝ! @  „cKv?d à}r‡Cí @  „dLv?d }ïÃã, @  „eMv?d `}¼U @  „fNv?d  }?I« @  „gOv?d à}ʨ|; @  „hPv?d }àðÓ @  „iQv?d `}êŸ ª @  „jRv?d  }ÊjT @  „kSv?d à}É0J˜ @  „lTv?d }ýÏÆ… @  „mUv?d `} °<ü @  „nVv?d  }-E> @  „oWv?d à}Už @  „pXv?d }À‰v @  „qYv?d `}0bs @  „rZv?d  }—qñ @  „s[v?d à}Í3= @  „t\v?d }މ“ü @  „u]v?d `}~öi… @  „v^v?d  }^k{ @  „w_v?d à}6U57 @  „x`v?d }æ¹ß @  „yav?d `}bC¦ @  „zbv?d  }6—AX @  „{cv?d à}5Í” @  „|dv?d },ƒð› @  „}ev?d `}Üü â @  „~fv?d  }ü  @  „gv?d à}N"“ @  „€hv?d }M®{ @  „iv?d `}½yT @  „‚jv?d  }ŒVü @  „ƒkv?d à}žÖ0 @  „„lv?d }’´ñ @  „…mv?d `}óíNˆ @  „†nv?d  }ÓLv @  „‡ov?d à}&ù+æ @  „ˆpv?d }ö±§ @  „‰qv?d `}Î]w @  „Šrv?d  }&;_‰uÐ } @  „‹sv?d à}%aE @  „Œtv?d 8 }TjÃ# @  „uv?d x }¤9Z @  „Žvv?d ¸ }„à;¤ @  „wv?d ø }¹ð8 @  „xv?d 8!}i¸ŒÐ @  „‘yv?d x!}™Çv© @  „’zv?d ¸!}¹2tW @  „“{v?d ø!}ºh6› @  „”|v?d 8"}',–Z @  „•}v?d x"}×Sl# @  „–~v?d ¸"}÷¦nÝ @  „—v?d ø"}rfq @  „˜€v?d 8#}¢.ýú @  „™v?d x#}RQƒ @  „š‚v?d ¸#}r¤} @  „›ƒv?d ø#}qþG± @  „œ„v?d 8$}h°´¾ @  „…v?d x$}˜ÏNÇ @  „ž†v?d ¸$}¸:L9 @  „Ÿ‡v?d ø$}”,P @  „ ˆv?d 8%}DdÜý @  „¡‰v?d x%}´&„ @  „¢Šv?d ¸%}”î$z @  „£‹v?d ø%}—´f¶ @  „¤Œv?d 8&} ðÆw @  „¥v?d x&}ú< @  „¦Žv?d ¸&}Úz>ð @  „§v?d ø&}/›Y` @  „¨v?d 8'}ÿÓÕˆ @  „©‘v?d x'}¬/ñ @  „ª’v?d ¸'}/Y- @  „«“v?d ø'},oà @  „¬”v?d 8(}üãÞ @  „­•v?d x(}胧 @  „®–v?d ¸(}ÈvY @  „¯—v?d ø(}õf Å @  „°˜v?d 8)}%.¬- @  „±™v?d x)}ÕQVT @  „²šv?d ¸)}õ¤Tª @  „³›v?d ø)}öþf @  „´œv?d 8*}kº¶§ @  „µv?d x*}›ÅLÞ @  „¶žv?d ¸*}»0N  @  „·Ÿv?d ø*}Ófl @  „¸ v?d 8+}.œ„ @  „¹¡v?d x+}óQfý @  „º¢v?d ¸+}Ó¤d @  „»£v?d ø+}Ðþ&Ï @  „¼¤v?d 8,}ɰÕÀ @  „½¥v?d x,}9Ï/¹ @  „¾¦v?d ¸,}:-G @  „¿§v?d ø,}›+7ù @  „À¨v?d 8-}Kc» @  „Á©v?d x-}»Ah @  „ªv?d ¸-}›éC– @  „ëv?d ø-}˜³Z @  „Ĭv?d 8.}÷¡› @  „Å­v?d x.}õˆ[â @  „Æ®v?d ¸.}Õ}Y @  „ǯv?d ø.} œ>Œ @  „Ȱv?d 8/}ðÔ²d @  „ɱv?d x/}«H @  „ʲv?d ¸/} ^Jã @  „˳v?d ø/}#/ @  „Ì´v?d 80}Ú´ @  „͵v?d x0}m¥Nä @  „ζv?d ¸0}MPL @  „Ï·v?d ø0}p@w† @  „иv?d 81} ûn @  „ѹv?d x1}Pw @  „Òºv?d ¸1}p‚é @  „Ó»v?d ø1}sØA% @  „Ô¼v?d 82}îœáä @  „Õ½v?d x2}ã @  „Ö¾v?d ¸2}>c @  „׿v?d ø2}¦R> @  „ØÀv?d 83}vXÞÖ @  „ÙÁv?d x3}†'$¯ @  „ÚÂv?d ¸3}¦Ò&Q @  „ÛÃv?d ø3}¥ˆd @  „ÜÄv?d 84}¼Æ—’ @  „ÝÅv?d x4}L¹më @  „ÞÆv?d ¸4}lLo @  „ßÇv?d ø4}@Zs9 @  „àÈv?d 85}ÿÑ @  „áÉv?d x5}`m¨ @  „âÊv?d€ ¸5}4[ð @  …Ëv?d ø5}Ö@ @  …Ìv?d 86}K±Ô @  …Ív?d x6}~2°@ @  …Îv?d ¸6}^Dz¾ @  …Ïv?d ø6}e”ŠT @  …Ðv?d 87}µÜ¼ @  …Ñv?d x7}‹£¿ @  …Òv?d ¸7}«ä¡A @  … Óv?d ø7}m÷` @  … Ôv?d 88}Y”} @  … Õv?d x8}l>•é @  … Öv?d ¸8}LË— @  … ×v?d ø8}ÈÍ @  …Øv?d 89}€Aù @  …Ùv?d x9}QìÚ @  …Úv?d ¸9}qØä @  …Ûv?d ø9}· aÅ @  …Üv?d 8:}*NÁ @  …Ýv?d x:}xÀ @  …Þv?d ¸:}?Ân @  …ßv?d ø:}™iÃX @  …àv?d 8;}I!O° @  …áv?d x;}wìê³ @  …âv?d ¸;}WèM @  …ãv?d ø;}‘ Ql @  …äv?d 8<}ˆD¢c @  …åv?d x<}½r£÷ @  …æv?d ¸<}‡¡  @  …çv?d ø<}Äû @  …èv?d 8=}Ìwç @  …év?d x=}‘¦Ë´ @  … êv?d ¸=}±SÉJ @  …!ëv?d ø=}w@pk @  …"ìv?d 8>}êЪ @  …#ív?d x>}ß2Ñ> @  …$îv?d ¸>}ÿÇÓÀ @  …%ïv?d ø>}Ä”ë* @  …&ðv?d 8?}Üg @  …'ñv?d x?}*ÂÁ @  …(òv?duÐ@}7 ¸?} äÀ? @  …)óv?d ø?}Ì÷y @  …*ôv?d P@}[Ã" @  …+õv?d @}˜ ×– @  …,öv?d Ð@}˜ÀH @  …-÷v?d A}Bx @  ….øv?d PA}”Ó¦ @  …/ùv?d A}¥Û˜e @  …0úv?d ÐA}'J» @  …1ûv?d B}þŒ… @  …2üv?d PB}|–[ @  …3ýv?d B}ëO‚ï @  …4þv?d ÐB}iÞ•1 @  …5ÿv?d C}¾ @  …6w?d PC}ƒ ` @  …7w?d C}*¼C @  …8w?d ÐC}“»« @  …9w?d D}Îwöm @  …:w?d PD}Læá³ @  …;w?d D}Û´õ @  …<w?d ÐD}Y%âÙ @  …=w?d E}Uÿ#é @  …>w?d PE}×n47 @  …? w?d E}Yg›Ö @  …@ w?d ÐE}ÛöŒ @  …A w?d F}0‚6 @  …B w?d PF}€¡•è @  …C w?d F}ó\ @  …Dw?d ÐF}•b–‚ @  …Ew?d G}üè5^ @  …Fw?d PG}~y"€ @  …Gw?d G}âÐ’£ @  …Hw?d ÐG}`A…} @  …Iw?d H}<§Ÿ @  …Jw?d PH}’­°A @  …Kw?d H}ÿ¤õ @  …Lw?d ÐH}‡n³+ @  …Mw?d I}‹´r @  …Nw?d PI} %eÅ @  …Ow?d I}8-ë @  …Pw?d ÐI}º¼üØ @  …Qw?d J}czòæ @  …Rw?d PJ}áëå8 @  …Sw?d J}v¹ñŒ @  …Tw?d ÐJ}ô(æR @  …Uw?d K}|R @  …V w?d PK}‚„kŒ @  …W!w?d K}-Û¯ @  …X"w?d ÐK}œ¼Ìq @  …Y#w?d L}Áp‘ @  …Z$w?d PL}Cá†_ @  …[%w?d L}Ô³’ë @  …\&w?d ÐL}V"…5 @  …]'w?d M}ZøD @  …^(w?d PM}ØiSÛ @  …_)w?d M}øgú¨ @  …`*w?d ÐM}zöív @  …a+w?d N}£0ãH @  …b,w?d PN}!¡ô– @  …c-w?d N}¶óà" @  …d.w?d ÐN}4b÷ü @  …e/w?d O}]èT  @  …f0w?d PO}ßyCþ @  …g1w?d O}CÐóÝ @  …h2w?d ÐO}ÁAä @  …i3w?d P};öN @  …j4w?d PP}¹Œá @  …k5w?d P}.Þõ$ @  …l6w?d ÐP}¬Oâú @  …m7w?d Q} •#Ê @  …n8w?d PQ}"4 @  …o9w?d Q} º× @  …p:w?d ÐQ}‘­  @  …q;w?d R}H[£7 @  …rw?d ÐR}ß ·ƒ @  …u?w?d S}Ûd8’ @  …v@w?d PS}Yõ/L @  …wAw?d S}Å\Ÿo @  …xBw?d ÐS}G͈± @  …yCw?d T}ÕA @  …zDw?d PT}˜ÂŸ @  …{Ew?d T}ÂÖ+ @  …|Fw?d ÐT}SÁõ @  …}Gw?d U}‰Å @  …~Hw?d PU} @  …Iw?d U}nGˆË @  …€Jw?d ÐU}ìÖŸ @  …Kw?d V}5‘+ @  …‚Lw?d PV}·†õ @  …ƒMw?d V} Ó’A @  …„Nw?d ÐV}¢B…Ÿ @  ……Ow?d W}ËÈ&C @  …†Pw?d PW}IY1 @  …‡Qw?d W}Õð¾ @  …ˆRw?d ÐW}Wa–` @  …‰Sw?d X}'´‚ @  …ŠTw?d PX}¥£\ @  …‹Uw?d X}2ß·è @  …ŒVw?d ÐX}°N 6 @  …Ww?d Y}¼”a @  …ŽXw?d PY}>vØ @  …Yw?d Y} ø @  …Zw?d ÐY}œïÅ @  …‘[w?d Z}TZáû @  …’\w?d PZ}ÖËö% @  …“]w?d Z}A™â‘ @  …”^w?d ÐZ}ÃõO @  …•_w?d [}75oO @  …–`w?d P[}µ¤x‘ @  …—aw?d [}) Ȳ @  …˜bw?d Ð[}«œßl @  …™cw?d \}öP‚œ @  …šdw?d P\}tÁ•B @  …›ew?d \}ã“ö @  …œfw?d Ð\}a–( @  …gw?d ]}mØW @  …žhw?d P]}ïI@Æ @  …Ÿiw?d ]}ÏGéµ @  … jw?d Ð]}MÖþk @  …¡kw?d ^}”ðU @  …¢lw?d P^}ç‹ @  …£mw?d ^}Óó? @  …¤nw?d Ð^}Bäá @  …¥ow?d _}jÈG= @  …¦pw?d P_}èYPã @  …§qw?d _}tðàÀ @  …uÐ`}¨rw?d Ð_}öa÷ @  …©sw?d (`} ìy @  …ªtw?d h`}ŽŠû§ @  …«uw?d ¨`}Øï @  …¬vw?d è`}›IøÍ @  …­ww?d (a}—“9ý @  …®xw?d ha}.# @  …¯yw?d ¨a}$  à @  …°zw?d èa}¦›·> @  …±{w?d (b}]¹ @  …²|w?d hb}ýÌ®Þ @  …³}w?d ¨b}jžºj @  …´~w?d èb}è­´ @  …µw?d (c}ñ¤v7 @  …¶€w?d hc}s5aé @  …·w?d ¨c}ïœÑÊ @  …¸‚w?d èc}m Æ @  …¹ƒw?d (d}0Á›ä @  …º„w?d hd}²PŒ: @  …»…w?d ¨d}%˜Ž @  …¼†w?d èd}§“P @  …½‡w?d (e}«IN` @  …¾ˆw?d he})ØY¾ @  …¿‰w?d ¨e}§Ñö_ @  …ÀŠw?d èe}%@á @  …Á‹w?d (f}ü†ï¿ @  …ÂŒw?d hf}~øa @  …Ãw?d ¨f}éEìÕ @  …ÄŽw?d èf}kÔû  @  …Åw?d (g}^X× @  …Æw?d hg}€ÏO  @  …Ç‘w?d ¨g}fÿ* @  …È’w?d èg}ž÷èô @  …É“w?d (h}îŠÊ @  …Ê”w?d hh}lÝÈ @  …Ë•w?d ¨h}ûIÉ| @  …Ì–w?d èh}yØÞ¢ @  …Í—w?d (i}u’ @  …Θw?d hi}÷“L @  …Ï™w?d ¨i}Æ›† @  …Кw?d èi}D ‘Q @  …Ñ›w?d (j}ÌŸo @  …Òœw?d hj}]ˆ± @  …Ów?d ¨j}ˆœ @  …Ôžw?d èj} ž‹Û @  …ÕŸw?d (k}þ£Û @  …Ö w?d hk}|2 @  …סw?d ¨k}à›¶& @  …Ø¢w?d èk}b ¡ø @  …Ù£w?d (l}?Æü @  …Ú¤w?d hl}½WëÖ @  …Û¥w?d ¨l}*ÿb @  …ܦw?d èl}¨”è¼ @  …ݧw?d (m}¤N)Œ @  …Þ¨w?d hm}&ß>R @  …ß©w?d ¨m}Ñ—! @  …àªw?d èm}„@€ÿ @  …á«w?d (n}]†ŽÁ @  …â¬w?d€ hn}Pn @  †­w?d ¨n}hC2‚ @  †®w?d èn}êÒ%\ @  †¯w?d (o}F}m @  †°w?d ho}Ä€j³ @  †±w?d ¨o}–›…ê @  †²w?d èo} ’4 @  †³w?d (p} äß @  †´w?d hp}¢uÈÝ @  † µw?d ¨p}ðn'„ @  † ¶w?d èp}rÿ0Z @  † ·w?d (q}»l ‡ @  † ¸w?d hq}9ýY @  † ¹w?d ¨q}kæò @  †ºw?d èq}éwåÞ @  †»w?d (r}S¢Šz @  †¼w?d hr}Ñ3¤ @  †½w?d ¨r}ƒ(rý @  †¾w?d èr}¹e# @  †¿w?d (s}Àß @  †Àw?d hs}B  @  †Áw?d ¨s}éX @  †Âw?d ès}’†þ† @  †Ãw?d (t}øü  @  †Äw?d ht}ƒiëÒ @  †Åw?d ¨t}Ñr‹ @  †Æw?d èt}SãU @  †Çw?d (u}šp)ˆ @  †Èw?d hu}á>V @  †Éw?d ¨u}JúÑ @  †Êw?d èu}ÈkÆÑ @  †Ëw?d (v}c¸ŽÅ @  † Ìw?d hv}á)™ @  †!Íw?d ¨v}³2vB @  †"Îw?d èv}1£aœ @  †#Ïw?d (w}`9­ @  †$Ðw?d hw}ñ.s @  †%Ñw?d ¨w}MêÁ* @  †&Òw?d èw}Ï{Öô @  †'Ów?d (x}q´«l @  †(Ôw?d hx}ó%¼² @  †)Õw?d ¨x}¡>Së @  †*Öw?d èx}#¯D5 @  †+×w?d (y}ê<~è @  †,Øw?d hy}h­i6 @  †-Ùw?d ¨y}:¶†o @  †.Úw?d èy}¸'‘± @  †/Ûw?d (z}òþ @  †0Üw?d hz}€céË @  †1Ýw?d ¨z}Òx’ @  †2Þw?d èz}PéL @  †3ßw?d ({}ap¡ @  †4àw?d h{}ã g @  †5áw?d ¨{}±ˆ& @  †6âw?d è{}3†Ÿø @  †7ãw?d (|} ør @  †8äw?d h|}"iЬ @  †9åw?d ¨|}preõ @  †:æw?d è|}òãr+ @  †;çw?d (}};pHö @  †<èw?d h}}¹á_( @  †=éw?d ¨}}ëú°q @  †>êw?d è}}ik§¯ @  †?ëw?d (~}l¿é) @  †@ìw?d h~}î.þ÷ @  †Aíw?d ¨~}¼5® @  †Bîw?d è~}>¤p @  †Cïw?d (}’g^A @  †Dðw?d h}öIŸ @  †Eñw?d ¨}uЀ}'Bí¦Æ @  †Fòw?d è}À|± @  †Gów?d @€}$ò¢é @  †Hôw?d €€}  @  †Iõw?d À€}ôxZn @  †Jöw?d }$0Ö† @  †K÷w?d @}¿zwm @  †Løw?d €}Ÿu“ @  †Mùw?d À}oðê @  †Núw?d ‚}ò´/+ @  †Oûw?d @‚}W´÷ @  †Püw?d €‚}wAõn @  †Qýw?d À‚}‡> @  †Rþw?d ƒ}Wvƒÿ @  †Sÿw?d @ƒ}C\D @  †Tx?d €ƒ}cì^º @  †Ux?d Àƒ}““¤Ã @  †Vx?d „}ŠÝWÌ @  †Wx?d @„}‚|±— @  †Xx?d €„}¢‰³i @  †Yx?d À„}RöI @  †Zx?d …}‚¾Åø @  †[x?d @…}ôd @  †\x?d €…}9fí @  †] x?d À…}É~œ” @  †^ x?d †}T:vÈ @  †ex?d À‡}ÎnŒ± @  †fx?d ˆ}ú‘¬ @  †gx?d @ˆ}ò0æ÷ @  †hx?d €ˆ}ÒÅä  @  †ix?d Àˆ}"ºp @  †jx?d ‰}òò’˜ @  †kx?d @‰}i¸3s @  †lx?d €‰}IM1 @  †mx?d À‰}¹2Ëô @  †nx?d Š}$vk5 @  †ox?d @Š}v³Ž @  †px?d €Š}¡ƒ±p @  †qx?d ÀŠ}QüK  @  †rx?d ‹}´Çá @  †sx?d @‹}â=: @  †t x?d €‹}Âì?Ä @  †u!x?d À‹}2“Ž @  †v"x?d Œ}+Ý6² @  †w#x?d @Œ}#|Ðé @  †x$x?d €Œ}‰Ò @  †y%x?d ÀŒ}óö(n @  †z&x?d }#¾¤† @  †{'x?d @}¸ôm @  †|(x?d €}˜“ @  †})x?d À}h~ýê @  †~*x?d Ž}õ:]+ @  †+x?d @Ž} m”ƒ @  †€,x?d €Ž},˜–} @  †-x?d ÀŽ}Üçl @  †‚.x?d } ¯àì @  †ƒ/x?d @}òµ#ë @  †„0x?d €}Ò@! @  †…1x?d À}"?Ûl @  ††2x?d }œágÞ @  †‡3x?d @}”@… @  †ˆ4x?d €}´µƒ{ @  †‰5x?d À}DÊy @  †Š6x?d ‘}”‚õê @  †‹7x?d @‘}ÈT @  †Œ8x?d €‘}/=Vÿ @  †9x?d À‘}ßB¬† @  †Ž:x?d ’}B G @  †;x?d @’}çÔü @  †x?d “}çÄ “ @  †“?x?d @“}t9OY @  †”@x?d €“}TÌM§ @  †•Ax?d À“}¤³·Þ @  †–Bx?d ”}½ýDÑ @  †—Cx?d @”}µ\¢Š @  †˜Dx?d €”}•© t @  †™Ex?d À”}eÖZ  @  †šFx?d •}µžÖå @  †›Gx?d @•}.Ôw @  †œHx?d €•}!uð @  †Ix?d À•}þ^‰ @  †žJx?d –}c/H @  †ŸKx?d @–}×ÐC @  † Lx?d €–}÷éÒ½ @  †¡Mx?d À–}–(Ä @  †¢Nx?d —}×Þ¤, @  †£Ox?d @—})Äg+ @  †¤Px?d €—} 1eÕ @  †¥Qx?d À—}ùNŸ¬ @  †¦Rx?d ˜}ͱ± @  †§Sx?d @˜}Åõê @  †¨Tx?d €˜}åå÷ @  †©Ux?d À˜}š m @  †ªVx?d ™}ÅÒ… @  †«Wx?d @™}^˜ n @  †¬Xx?d €™}~m" @  †­Yx?d À™}ŽØé @  †®Zx?d š}Vx( @  †¯[x?d @š}¶V “ @  †°\x?d €š}–£¢m @  †±]x?d Àš}fÜX @  †²^x?d ›}¶”Ôü @  †³_x?d @›}Õ9.' @  †´`x?d €›}õÌ,Ù @  †µax?d À›}³Ö  @  †¶bx?d œ}ý%¯ @  †·cx?d @œ}\Ãô @  †¸dx?d €œ}4©Á  @  †¹ex?d Àœ}ÄÖ;s @  †ºfx?d }ž·› @  †»gx?d @}Ôp @  †¼hx?d €}¯!Ž @  †½ix?d À}_^î÷ @  †¾jx?d ž}ÂN6 @  †¿kx?d @ž}Ø·¯ @  †Àlx?d €ž}øîµQ @  †Ámx?d Àž}‘O( @  †Ânx?d Ÿ}ØÙÃÀ @  †Ãox?d @Ÿ}&ÃÇ @  †Äpx?d €Ÿ}69 @  †ÅqxuР}?d ÀŸ}öIø@ @  †Ærx?d  }‡B&& @  †Çsx?d X }ãÀ} @  †Ètx?d ˜ }¯ƒ @  †Éux?d Ø }_i8ú @  †Êvx?d ¡}!´ @  †Ëwx?d X¡}kù @  †Ìxx?d ˜¡}4ž @  †Íyx?d Ø¡}Äáí~ @  †Îzx?d ¢}Y¥M¿ @  †Ï{x?d X¢}ü¥• @  †Ð|x?d ˜¢}ÜP—ú @  †Ñ}x?d Ø¢},/mƒ @  †Ò~x?d £}ügák @  †Óx?d X£}r\Z3 @  †Ô€x?d ˜£}R©XÍ @  †Õx?d Ø£}¢Ö¢´ @  †Ö‚x?d ¤}»˜Q» @  †×ƒx?d X¤}³9·à @  †Ø„x?d ˜¤}“̵ @  †Ù…x?d ؤ}c³Og @  †Ú†x?d ¥}³ûà @  †Û‡x?d X¥}(±bd @  †Üˆx?d ˜¥}D`š @  †Ý‰x?d Ø¥}ø;šã @  †ÞŠx?d ¦}e:" @  †ß‹x?d X¦}ÑyÅ) @  †àŒx?d ˜¦}ñŒÇ× @  †áx?d ئ}ó=® @  †âŽx?d€ §}¥x­à @  ‡x?d X§}º#&Î @  ‡x?d ˜§}šÖ$0 @  ‡‘x?d ا}¯à%¤ @  ‡’x?d ¨}›©¹ @  ‡“x?d X¨}] ˜ @  ‡”x?d ˜¨}}ùf @  ‡•x?d ب}C4·e @  ‡–x?d ©}“|; @  ‡ —x?d X©}Ía‹ @  ‡ ˜x?d ˜©}íŠcu @  ‡ ™x?d Ø©}ؼbá @  ‡ šx?d ª}EøÂ  @  ‡ ›x?d Xª}ƒë{ @  ‡œx?d ˜ª}£yÿ @  ‡x?d ت}0râ @  ‡žx?d «}à:nô @  ‡Ÿx?d X«}FÞo @  ‡ x?d ˜«}f+m< @  ‡¡x?d Ø«}Sl¨ @  ‡¢x?d ¬}JSŸ§ @  ‡£x?d X¬}Œ@&† @  ‡¤x?d ˜¬}¬µ$x @  ‡¥x?d ج}’x{ @  ‡¦x?d ­}B0 “ @  ‡§x?d X­}3W• @  ‡¨x?d ˜­}<ÆUk @  ‡©x?d Ø­} ðTÿ @  ‡ªx?d ®}”´ô> @  ‡«x?d X®}R§M @  ‡¬x?d ˜®}rROá @  ‡­x?d Ø®}ð8ó² @  ‡ ®x?d ¯} pZ @  ‡!¯x?d X¯}#G° @  ‡"°x?d ˜¯};ÖEN @  ‡#±x?d د}àDÚ @  ‡$²x?d °}°>øh @  ‡%³x?d X°}v-AI @  ‡&´x?d ˜°}VØC· @  ‡'µx?d ذ}hæ´ @  ‡(¶x?d ±}¸]j\ @  ‡)·x?d X±}æ^0Z @  ‡*¸x?d ˜±}Æ«2¤ @  ‡+¹x?d ر}ó30 @  ‡,ºx?d ²}nÙ“ñ @  ‡-»x?d X²}¨Ê*Ð @  ‡.¼x?d ˜²}ˆ?(. @  ‡/½x?d ز}S³Í @  ‡0¾x?d ³}Ë?% @  ‡1¿x?d X³}¯+ @  ‡2Àx?d ˜³}½Z)ü @  ‡3Áx?d س}ˆl(h @  ‡4Âx?d ´}‘"Ûg @  ‡5Ãx?d X´}W1bF @  ‡6Äx?d ˜´}wÄ`¸ @  ‡7Åx?d Ø´}I Å» @  ‡8Æx?d µ}™AIS @  ‡9Çx?d Xµ}ÇBU @  ‡:Èx?d ˜µ}ç·« @  ‡;Éx?d ص}Ò? @  ‡<Êx?d ¶}OŰþ @  ‡=Ëx?d X¶}‰Ö ß @  ‡>Ìx?d ˜¶}©# ! @  ‡?Íx?d ض}…N±à @  ‡@Îx?d ·}U= @  ‡AÏx?d X·}nUâ @  ‡BÐx?d ˜·}N  @  ‡CÑx?d Ø·}{–ˆ @  ‡DÒx?d ¸}OiŠ• @  ‡EÓx?d X¸}‰z3´ @  ‡FÔx?d ˜¸}©1J @  ‡GÕx?d ظ}—B”I @  ‡HÖx?d ¹}G ¡ @  ‡I×x?d X¹} B§ @  ‡JØx?d ˜¹}9ü@Y @  ‡KÙx?d ع} ÊAÍ @  ‡LÚx?d º}‘Žá  @  ‡MÛx?d Xº}WX- @  ‡NÜx?d ˜º}whZÓ @  ‡OÝx?d غ}äÁ0 @  ‡PÞx?d »}4LMØ @  ‡Qßx?d X»}’¨Lî @  ‡Ràx?d ˜»}²]N @  ‡Sáx?d Ø»}‡kO„ @  ‡Tâx?d ¼}ž%¼‹ @  ‡Uãx?d X¼}X6ª @  ‡Väx?d ˜¼}xÃT @  ‡Wåx?d ؼ}F¢W @  ‡Xæx?d ½}–F.¿ @  ‡Yçx?d X½}ÈEt¹ @  ‡Zèx?d ˜½}è°vG @  ‡[éx?d ؽ}݆wÓ @  ‡\êx?d ¾}@Â× @  ‡]ëx?d X¾}†Ñn3 @  ‡^ìx?d ˜¾}¦$lÍ @  ‡_íx?d ؾ}$NО @  ‡`îx?d ¿}ô\v @  ‡aïx?d X¿}ÏUdœ @  ‡bðx?d ˜¿}ï fb @uÐÀ}  ‡cñx?d Ø¿}Ú–gö @  ‡dòx?d 0À}¾f6¤ @  ‡eóx?d pÀ}xu… @  ‡fôx?d °À}X€{ @  ‡gõx?d ðÀ}fM(x @  ‡höx?d 0Á}¶¤ @  ‡i÷x?d pÁ}èþ– @  ‡jøx?d °Á}Èóüh @  ‡kùx?d ðÁ}ýÅýü @  ‡lúx?d 0Â}`]= @  ‡mûx?d pÂ}¦’ä @  ‡nüx?d °Â}†gæâ @  ‡oýx?d ðÂ} } @  ‡pþx?d 0Ã}ÅCñé @  ‡qÿx?d pÃ}ñVäP @  ‡ry?d °Ã}Ñ£æ® @  ‡sy?d ðÃ}ä•ç: @  ‡ty?d 0Ä}ýÛ5 @  ‡uy?d pÄ};È­ @  ‡vy?d °Ä}=¯ê @  ‡wy?d ðÄ}%ð é @  ‡xy?d 0Å}õ¸† @  ‡yy?d pÅ}«»Ü @  ‡zy?d °Å}‹NÞù @  ‡{ y?d ðÅ}¾xßm @  ‡| y?d 0Æ}#<¬ @  ‡} y?d pÆ}å/Æ @  ‡~ y?d °Æ}ÅÚÄs @  ‡ y?d ðÆ} áNƒ @  ‡€y?d 0Ç}Ú©Âk @  ‡y?d pÇ}áúú @  ‡‚y?d °Ç}Áø @  ‡ƒy?d ðÇ}ô9ùë @  ‡„y?d 0È}ÀÆuö @  ‡…y?d pÈ}ÕÌ× @  ‡†y?d °È}& Î) @  ‡‡y?d ðÈ}ík* @  ‡ˆy?d 0É}È¥ç @  ‡‰y?d pÉ}–¦½Ä @  ‡Šy?d °É}¶S¿: @  ‡‹y?d ðÉ}ƒe¾® @  ‡Œy?d 0Ê}!o @  ‡y?d pÊ}Ø2§N @  ‡Žy?d °Ê}øÇ¥° @  ‡y?d ðÊ}k«>S @  ‡y?d 0Ë}»ã²» @  ‡‘y?d pË}³ @  ‡’ y?d °Ë}=ò±s @  ‡“!y?d ðË}İç @  ‡”"y?d 0Ì}ŠCè @  ‡•#y?d pÌ}ª‰µ @  ‡–€$y?d °Ì}Šì‹K @  ‡—€%y?d ðÌ}´!.H @  ‡˜€&y?d 0Í}di¢  @  ‡™€'y?d pÍ}:jø¦ @  ‡š€(y?d °Í}ŸúX @  ‡›€)y?d ðÍ}/©ûÌ @  ‡œ€*y?d 0Î}²í[  @  ‡€+y?d pÎ} ~‘P @  ‡ž,y?d °Î})‹“® @  ‡Ÿ-y?d ðÎ}«á/ý @  ‡ .y?d 0Ï}{©£ @  ‡¡/y?d pÏ}y=G* @  ‡¢ 0y?d °Ï}YÈEÔ @  ‡£ 1y?d ðÏ}lþD@ @  ‡¤ 2y?d 0Ð}Ò øò @  ‡¥ 3y?d pÐ}3AÓ @  ‡¦ 4y?d °Ð}4ÆC- @  ‡§ 5y?d ðÐ} æ. @  ‡¨ 6y?d 0Ñ}ÚCjÆ @  ‡© 7y?d pÑ}„@0À @  ‡ª 8y?d °Ñ}¤µ2> @  ‡« 9y?d ðÑ}‘ƒ3ª @  ‡¬ :y?d 0Ò} Ç“k @  ‡­ ;y?d pÒ}ÊÔ*J @  ‡® y?d 0Ó}©?¿ @  ‡± ?y?d pÓ}ÿ±+˜ @  ‡² @y?d °Ó}ßD)f @  ‡³ Ay?d ðÓ}êr(ò @  ‡´ By?d 0Ô}ó<Ûý @  ‡µ Cy?d pÔ}5/bÜ @  ‡¶ Dy?d °Ô}Ú`" @  ‡· Ey?d ðÔ}+Å! @  ‡¸ Fy?d 0Õ}û_IÉ @  ‡¹ Gy?d pÕ}¥\Ï @  ‡º Hy?d °Õ}…©1 @  ‡» Iy?d ðÕ}°Ÿ¥ @  ‡¼ Jy?d 0Ö}-Û°d @  ‡½ Ky?d pÖ}ëÈ E @  ‡¾ Ly?d °Ö}Ë= » @  ‡¿ My?d ðÖ}çP±z @  ‡À Ny?d 0×}7=’ @  ‡Á Oy?d p×} Kx @  ‡ Py?d °×},¾† @  ‡à Qy?d ð×}ˆ @  ‡Ä Ry?d 0Ø}-wŠ @  ‡Å Sy?d pØ}ëd3. @  ‡Æ Ty?d °Ø}Ë‘1Ð @  ‡Ç Uy?d ðØ}õ\”Ó @  ‡È Vy?d 0Ù}%; @  ‡É Wy?d pÙ}{B= @  ‡Ê Xy?d °Ù}[â@à @  ‡Ë Yy?d ðÙ}nÔAW @  ‡Ì Zy?d 0Ú}óá– @  ‡Í [y?d pÚ}5ƒX· @  ‡Î \y?d °Ú}vZI @  ‡Ï ]y?d ðÚ}†Áª @  ‡Ð ^y?d 0Û}VRMB @  ‡Ñ _y?d pÛ}ð¶Lt @  ‡Ò `y?d °Û}ÐCNŠ @  ‡Ó ay?d ðÛ}åuO @  ‡Ô by?d 0Ü}ü;¼ @  ‡Õ cy?d pÜ}:(0 @  ‡Ö dy?d °Ü}ÝÎ @  ‡× ey?d ðÜ}$¢Í @  ‡Ø fy?d 0Ý}ôX.% @  ‡Ù gy?d pÝ}ª[t# @  ‡Ú hy?d °Ý}Š®vÝ @  ‡Û iy?d ðÝ}¿˜wI @  ‡Ü jy?d 0Þ}"Ü׈ @  ‡Ý ky?d pÞ}äÏn© @  ‡Þ ly?d °Þ}Ä:lW @  ‡ß my?d ðÞ}FPÐ @  ‡à ny?d 0ß}–\ì @  ‡á oy?d pß}­Kd @  ‡â py?d€ uÐà}/°ß}¥$rª @  ˆ qy?d ðß}H”ç @  ˆry?d Hà}Q0¹4 @  ˆsy?d ˆà}ðîØ @  ˆty?d Èà}rŸù @  ˆuy?d á}Ð9˜I @  ˆvy?d Há}R¨— @  ˆwy?d ˆá}`}ŸË @  ˆxy?d Èá}âìˆ @  ˆ yy?d â} FÅs @  ˆ zy?d Hâ}×Ò­ @  ˆ {y?d ˆâ}.é…A @  ˆ |y?d Èâ}¬x’Ÿ @  ˆ }y?d ã}ÞóÐ @  ˆ~y?d Hã}ŒOä @  ˆy?d ˆã}JÐ @  ˆ€y?d Èã}„ÛÇß @  ˆy?d ä}ï{Ùw @  ˆ‚y?d Hä}mêΩ @  ˆƒy?d ˆä}ÌÔ™E @  ˆ„y?d Èä}NEŽ› @  ˆ…y?d å}ìãïÔ @  ˆ†y?d Hå}nrø  @  ˆ‡y?d ˆå}\§èV @  ˆˆy?d Èå}Þ6ÿˆ @  ˆ‰y?d æ}1œ²î @  ˆŠy?d Hæ}³ ¥0 @  ˆ‹y?d ˆæ}3òÜ @  ˆŒy?d Èæ}¢å @  ˆy?d ç}2„M @  ˆŽy?d Hç}°•““ @  ˆy?d ˆç}[·øs @  ˆ y?d Èç}Ù&ï­ @  ˆ!‘y?d è}Ÿ7Ž @  ˆ"’y?d Hè}¦™É @  ˆ#“y?d ˆè}¼˜Î% @  ˆ$”y?d Èè}> Ùû @  ˆ%•y?d é}œ¯¸´ @  ˆ&–y?d Hé}>¯j @  ˆ'—y?d ˆé},ë¿6 @  ˆ(˜y?d Èé}®z¨è @  ˆ)™y?d ê}AÐåŽ @  ˆ*šy?d Hê}ÃAòP @  ˆ+›y?d ˆê}b¥¼ @  ˆ,œy?d Èê}àî²b @  ˆ-y?d ë}BHÓ- @  ˆ.žy?d Hë}ÀÙÄó @  ˆ/Ÿy?d ˆë}§J± @  ˆ0 y?d Èë}%Û¦¡ @  ˆ1¡y?d ì}N{¸  @  ˆ2¢y?d Hì}Ìê¯× @  ˆ3£y?d ˆì}mÔø; @  ˆ4¤y?d Èì}ïEïå @  ˆ5¥y?d í}M㎪ @  ˆ6¦y?d Hí}Ïr™t @  ˆ7§y?d ˆí}ý§‰( @  ˆ8¨y?d Èí}6žö @  ˆ9©y?d î}œÓ @  ˆ:ªy?d Hî} ÄN @  ˆ;«y?d ˆî}³3“¢ @  ˆ<¬y?d Èî}1¢„| @  ˆ=­y?d ï}“å3 @  ˆ>®y?d Hï}•òí @  ˆ?¯y?d ˆï}T°ŸŸ @  ˆ@°y?d Èï}Ö!ˆA @  ˆA±y?d ð}ÙT @  ˆB²y?d Hð}˜€ÎŠ @  ˆC³y?d ˆð}9¾™f @  ˆD´y?d Èð}»/ޏ @  ˆEµy?d ñ}‰ï÷ @  ˆF¶y?d Hñ}›ø) @  ˆG·y?d ˆñ}©Íèu @  ˆH¸y?d Èñ}+\ÿ« @  ˆI¹y?d ò}Äö²Í @  ˆJºy?d Hò}Fg¥ @  ˆK»y?d ˆò}çYòÿ @  ˆL¼y?d Èò}eÈå! @  ˆM½y?d ó}Çn„n @  ˆN¾y?d Hó}Eÿ“° @  ˆO¿y?d ˆó}Ò<ó- @  ˆPÀy?d Èó}P­äó @  ˆQÁy?d ô}; ú[ @  ˆRÂy?d Hô}¹œí… @  ˆSÃy?d ˆô}¢ºi @  ˆTÄy?d Èô}š3­· @  ˆUÅy?d õ}8•Ìø @  ˆVÆy?d Hõ}ºÛ& @  ˆWÇy?d ˆõ}ˆÑËz @  ˆXÈy?d Èõ} @ܤ @  ˆYÉy?d ö}åê‘ @  ˆZÊy?d Hö}g{† @  ˆ[Ëy?d ˆö}ÆEÑð @  ˆ\Ìy?d Èö}DÔÆ. @  ˆ]Íy?d ÷}ær§a @  ˆ^Îy?d H÷}dã°¿ @  ˆ_Ïy?d ˆ÷}ÁÛ_ @  ˆ`Ðy?d È÷} PÌ @  ˆaÑy?d ø}KA­; @  ˆbÒy?d Hø}Éкå @  ˆcÓy?d ˆø}hîí  @  ˆdÔy?d Èø}êú× @  ˆeÕy?d ù}HÙ›˜ @  ˆfÖy?d Hù}ÊHŒF @  ˆg×y?d ˆù}øœ @  ˆhØy?d Èù}z ‹Ä @  ˆiÙy?d ú}•¦Æ¢ @  ˆjÚy?d Hú}7Ñ| @  ˆkÛy?d ˆú}¶ † @  ˆlÜy?d Èú}4˜‘N @  ˆmÝy?d û}–>ð @  ˆnÞy?d Hû}¯çß @  ˆoßy?d ˆû}s<’S @  ˆpày?d Èû}ñ­… @  ˆqáy?d ü}š ›% @  ˆrây?d Hü}œŒû @  ˆsãy?d ˆü}¹¢Û @  ˆtäy?d Èü};3ÌÉ @  ˆuåy?d ý}™•­† @  ˆvæy?d Hý}ºX @  ˆwçy?d ˆý})Ѫ @  ˆxèy?d Èý}«@½Ú @  ˆyéy?d þ}Dêð¼ @  ˆzêy?d Hþ}Æ{çb @  ˆ{ëy?d ˆþ}gE°Ž @  ˆ|ìy?d Èþ}åÔ§P @  ˆ}íy?d ÿ}GrÆ @  ˆ~îy?d Hÿ}ÅãÑÁ @  ˆïy?d ˆÿ}cŒ‚ @  ˆ€uÐ~ðy?d Èÿ}á›\ @  ˆñy?d ~—>ì @  ˆ‚òy?d `~)2 @  ˆƒóy?d  ~´±~Þ @  ˆ„ôy?d à~6 i @  ˆ…õy?d ~”†O @  ˆ†öy?d `~‘ @  ˆ‡÷y?d  ~$ÂÍ @  ˆˆøy?d à~¦S @  ˆ‰ùy?d ~IùUu @  ˆŠúy?d `~ËhB« @  ˆ‹ûy?d  ~jVG @  ˆŒüy?d à~èÇ™ @  ˆýy?d ~JacÖ @  ˆŽþy?d `~Èðt @  ˆÿy?d  ~° . @  ˆz?d à~ !7ð @  ˆ‘z?d ~f)X @  ˆ’z?d `~ä>† @  ˆ“z?d  ~E.ij @  ˆ”z?d à~Ç¿~´ @  ˆ•z?d ~eû @  ˆ–z?d `~çˆ% @  ˆ—z?d  ~Õ]y @  ˆ˜z?d à~W̧ @  ˆ™ z?d ~¸fBÁ @  ˆš z?d `~:÷U @  ˆ› z?d  ~›Éó @  ˆœ z?d à~X- @  ˆ z?d ~»þtb @  ˆžz?d `~9oc¼ @  ˆŸz?d  ~ÒM\ @  ˆ z?d à~PÜ‚ @  ˆ¡z?d ~Í~8 @  ˆ¢z?d `~”\iæ @  ˆ£z?d  ~5b>  @  ˆ¤z?d à~·ó)Ô @  ˆ¥z?d ~UH› @  ˆ¦z?d ` ~—Ä_E @  ˆ§z?d   ~¥O @  ˆ¨z?d à ~'€XÇ @  ˆ©z?d ~È*¡ @  ˆªz?d ` ~J» @  ˆ«z?d   ~ë…U“ @  ˆ¬z?d à ~iBM @  ˆ­z?d ~˲# @  ˆ®z?d ` ~I#4Ü @  ˆ¯z?d   ~.°AP @  ˆ° z?d à ~¬!VŽ @  ˆ±!z?d ~ÇH& @  ˆ²"z?d ` ~E_ø @  ˆ³#z?d   ~ä. @  ˆ´$z?d à ~f¿Ê @  ˆµ%z?d ~Ä~… @  ˆ¶&z?d ` ~Fˆi[ @  ˆ·'z?d   ~t]y @  ˆ¸(z?d à ~öÌnÙ @  ˆ¹)z?d ~f#¿ @  ˆº*z?d `~›÷4a @  ˆ»+z?d  ~:Éc @  ˆ¼,z?d à~¸XtS @  ˆ½-z?d ~þ @  ˆ¾.z?d `~˜o @  ˆ¿/z?d  ~ÝJo° @  ˆÀ0z?d à~_Ûxn @  ˆÁ1z?d ~“ë){ @  ˆÂ2z?d `~z>¥ @  ˆÃ3z?d  ~°DiI @  ˆÄ4z?d à~2Õ~— @  ˆÅ5z?d ~sØ @  ˆÆ6z?d `~â @  ˆÇ7z?d  ~ 7Z @  ˆÈ8z?d à~¢¦„ @  ˆÉ9z?d ~M Bâ @  ˆÊ:z?d `~ÏU< @  ˆË;z?d  ~n£Ð @  ˆÌz?d `~ÌcŸ @  ˆÏ?z?d  ~[Æ @  ˆÐ@z?d à~ÙWÜ @  ˆÑAz?d ~²÷ t @  ˆÒBz?d `~0fª @  ˆÓCz?d  ~‘XJF @  ˆÔDz?d à~É]˜ @  ˆÕEz?d ~±o<× @  ˆÖFz?d `~3þ+  @  ˆ×Gz?d  ~+;U @  ˆØHz?d à~ƒº,‹ @  ˆÙIz?d ~laí @  ˆÚJz?d `~îv3 @  ˆÛKz?d  ~O¿!ß @  ˆÜLz?d à~Í.6 @  ˆÝMz?d ~oˆWN @  ˆÞNz?d `~í@ @  ˆßOz?d  ~;+p @  ˆàPz?d à~„ª<® @  ˆáQz?d ~»] @  ˆâRz?d€ `~4éVl @  ‰Sz?d  ~t–I© @  ‰Tz?d à~ö^w @  ‰Uz?d ~‘èÄÕ @  ‰Vz?d `~yÓ  @  ‰Wz?d  ~ïœ- @  ‰Xz?d à~m‹ó @  ‰Yz?d ~L—™ï @  ‰Zz?d `~ÎŽ1 @  ‰ [z?d  ~ªq"0 @  ‰ \z?d à~(à5î @  ‰ ]z?d ~O¯L @  ‰ ^z?d `~Íž¸’ @  ‰ _z?d  ~ɬ„ @  ‰`z?d à~K»Z @  ‰az?d ~C<Äh @  ‰bz?d `~Á­Ó¶ @  ‰cz?d  ~¥Ú· @  ‰dz?d à~'Khi @  ‰ez?d ~@¤òË @  ‰fz?d `~Â5å @  ‰gz?d  ~>Rª3 @  ‰hz?d à~¼Ã½í @  ‰iz?d ~Û¯ñ @  ‰jz?d `~J¸/ @  ‰kz?d  ~{=. @  ‰lz?d à~ù¬ð @  ‰mz?d ~žC™R @  ‰nz?d `~ÒŽŒ @  ‰oz?d  ~…å£FuÐ ~ @  ‰pz?d à~zôÇä @  ‰€qz?d 8 ~ ² @  ‰ €rz?d x ~‰•¥Ñ @  ‰!€sz?d ¸ ~íâ Ð @  ‰"€tz?d ø ~os @  ‰#€uz?d 8!~œ„¬ @  ‰$€vz?d x!~Š “r @  ‰%€wz?d ¸!~vjÜT @  ‰&€xz?d ø!~ôûËŠ @  ‰'€yz?d 8"~ÕãÙ– @  ‰(€zz?d x"~WrÎH @  ‰)€{z?d ¸"~3bI @  ‰*€|z?d ø"~±”u— @  ‰+€}z?d 8#~Ö{ï5 @  ‰,€~z?d x#~Têøë @  ‰-€z?d ¸#~½ü­~ @  ‰.€€z?d ø#~?mº  @  ‰/€z?d 8$~7ÞÅ’ @  ‰0€‚z?d x$~µOÒL @  ‰1€ƒz?d ¸$~Ñ8~M @  ‰2€„z?d ø$~S©i“ @  ‰3€…z?d 8%~4Fó1 @  ‰4€†z?d x%~¶×äï @  ‰5€‡z?d ¸%~J°«É @  ‰6€ˆz?d ø%~È!¼ @  ‰7€‰z?d 8&~é9®  @  ‰8€Šz?d x&~k¨¹Õ @  ‰9€‹z?d ¸&~ßÔ @  ‰:€Œz?d ø&~N  @  ‰;€z?d 8'~ꡘ¨ @  ‰<€Žz?d x'~h0v @  ‰=€z?d ¸'~ñ¢¼ @  ‰>€z?d ø'~s–µb @  ‰?€‘z?d 8(~é•”` @  ‰@€’z?d x(~kƒ¾ @  ‰A€“z?d ¸(~s/¿ @  ‰B€”z?d ø(~â8a @  ‰C€•z?d 8)~ê ¢Ã @  ‰D€–z?d x)~hœµ @  ‰E€—z?d ¸)~”ûú; @  ‰F€˜z?d ø)~jíå @  ‰G€™z?d 8*~7rÿù @  ‰H€šz?d x*~µãè' @  ‰I€›z?d ¸*~Ñ”D& @  ‰J€œz?d ø*~SSø @  ‰K€z?d 8+~4êÉZ @  ‰L€žz?d x+~¶{Þ„ @  ‰M€Ÿz?d ¸+~²ûÊ’ @  ‰N€ z?d ø+~0jÝL @  ‰O€¡z?d 8,~8Ù¢~ @  ‰P€¢z?d x,~ºHµ  @  ‰Q€£z?d ¸,~Þ?¡ @  ‰R€¤z?d ø,~\® @  ‰S€¥z?d 8-~;A”Ý @  ‰T€¦z?d x-~¹Ðƒ @  ‰U€§z?d ¸-~E·Ì% @  ‰V€¨z?d ø-~Ç&Ûû @  ‰W€©z?d 8.~æ>Éç @  ‰X€ªz?d x.~d¯Þ9 @  ‰Y€«z?d ¸.~Ør8 @  ‰Z€¬z?d ø.~‚Ieæ @  ‰[€­z?d 8/~å¦ÿD @  ‰\€®z?d x/~g7èš @  ‰]€¯z?d ¸/~þÅP @  ‰^€°z?d ø/~|‘ÒŽ @  ‰_€±z?d 80~´ű @  ‰`€²z?d x0~@%Òo @  ‰a€³z?d ¸0~$R~n @  ‰b€´z?d ø0~¦Ãi° @  ‰c€µz?d 81~Á,ó @  ‰d€¶z?d x1~C½äÌ @  ‰e€·z?d ¸1~¿Ú«ê @  ‰f€¸z?d ø1~=K¼4 @  ‰g€¹z?d 82~S®( @  ‰h€ºz?d x2~žÂ¹ö @  ‰i€»z?d ¸2~úµ÷ @  ‰j€¼z?d ø2~x$) @  ‰k€½z?d 83~˘‹ @  ‰l€¾z?d x3~ZU @  ‰m€¿z?d ¸3~iŠŽR @  ‰n€Àz?d ø3~뙌 @  ‰o€Áz?d 84~ã¨æ¾ @  ‰p€Âz?d x4~a9ñ` @  ‰q€Ãz?d ¸4~N]a @  ‰r€Äz?d ø4~‡ßJ¿ @  ‰s€Åz?d 85~à0Ð @  ‰t€Æz?d x5~b¡Çà @  ‰u€Çz?d ¸5~žÆˆå @  ‰v€Èz?d ø5~WŸ; @  ‰w€Éz?d 86~=O' @  ‰x€Êz?d x6~¿Þšù @  ‰y€Ëz?d ¸6~Û©6ø @  ‰z€Ìz?d ø6~Y8!& @  ‰{€Íz?d 87~>×»„ @  ‰|€Îz?d x7~¼F¬Z @  ‰}€Ïz?d ¸7~%q @  ‰~€Ðz?d ø7~§à–N @  ‰€Ñz?d 88~Þµ‡} @  ‰€€Òz?d x8~\$£ @  ‰€Óz?d ¸8~8S<¢ @  ‰‚€Ôz?d ø8~ºÂ+| @  ‰ƒ€Õz?d 89~Ý-±Þ @  ‰„€Öz?d x9~_¼¦ @  ‰…€×z?d ¸9~£Ûé& @  ‰†€Øz?d ø9~!Jþø @  ‰‡€Ùz?d 8:~Rìä @  ‰ˆ€Úz?d x:~‚Ãû: @  ‰‰€Ûz?d ¸:~æ´W; @  ‰Š€Üz?d ø:~d%@å @  ‰‹€Ýz?d 8;~ÊÚG @  ‰Œ€Þz?d x;~[Í™ @  ‰€ßz?d ¸;~…ÛÙ @  ‰Ž€àz?d ø;~JÎQ @  ‰€áz?d 8<~ù±c @  ‰€âz?d x<~h¦½ @  ‰‘€ãz?d ¸<~é ¼ @  ‰’€äz?d ø<~kŽb @  ‰“€åz?d 8=~ a‡À @  ‰”€æz?d x=~Žð @  ‰•€çz?d ¸=~r—ß8 @  ‰–€èz?d ø=~ðÈæ @  ‰—€éz?d 8>~ÑÚú @  ‰˜€êz?d x>~SÍ$ @  ‰™€ëz?d ¸>~7øa% @  ‰š€ìz?d ø>~µivû @  ‰›€íz?d 8?~Ò†ìY @  ‰œ€îz?d x?~Pû‡ @  ‰€ïz?duÐ@~7 ¸?~É ÖM @  ‰ž€ðz?d ø?~61²ï @  ‰Ÿñz?d P@~õf£^ @  ‰ òz?d @~Õ“¡  @  ‰¡óz?d Ð@~€ @  ‰¢ôz?d A~ÃÈ”i @  ‰£õz?d PA~öþ•ý @  ‰¤öz?d A~Ö — @  ‰¥÷z?d ÐA~ˆÍ @  ‰¦øz?d B~LmÄ @  ‰§ùz?d PB~+ÈÇ @  ‰¨úz?d B~ tÊ9 @  ‰©ûz?d ÐB~Ígs @  ‰ªüz?d C~/ÿð @  ‰«ýz?d PC~(þd @  ‰¬þz?d C~ìüš @  ‰­ÿz?d ÐC~<ùé# @  ‰®{?d D~%·, @  ‰¯{?d PD~¶ÛÏ @  ‰°{?d D~–.ƒ1 @  ‰±{?d ÐD~P=: @  ‰²{?d E~€u¶ø @  ‰³{?d PE~µC·l @  ‰´{?d E~•¶µ’ @  ‰µ{?d ÐE~˵ï” @  ‰¶{?d F~VñOU @  ‰· {?d PF~h<êV @  ‰¸ {?d F~HÉè¨ @  ‰¹ {?d ÐF~ŽÚQ‰ @  ‰º {?d G~^’Ýa @  ‰» {?d PG~k¤Üõ @  ‰¼{?d G~KQÞ  @  ‰½{?d ÐG~pæá @  ‰¾{?d H~Dýjü @  ‰¿{?d PH~hÐ= @  ‰À{?d H~HeÒà @  ‰Á{?d ÐH~Žvkâ @  ‰Â{?d I~^>ç  @  ‰Ã{?d PI~kæž @  ‰Ä{?d I~Kýä` @  ‰Å{?d ÐI~þ¾f @  ‰Æ{?d J~ˆº§ @  ‰Ç{?d PJ~¶w»¤ @  ‰È{?d J~–‚¹Z @  ‰É{?d ÐJ~P‘{ @  ‰Ê{?d K~€ÙŒ“ @  ‰Ë{?d PK~µï @  ‰Ì{?d K~•ù @  ‰Í{?d ÐK~3þŽÏ @  ‰Î {?d L~*°}À @  ‰Ï!{?d PL~¹Üæ# @  ‰Ð"{?d L~™)äÝ @  ‰Ñ#{?d ÐL~_:]ü @  ‰Ò${?d M~rÑ @  ‰Ó%{?d PM~ºDЀ @  ‰Ô&{?d M~š±Ò~ @  ‰Õ'{?d ÐM~IJˆx @  ‰Ö({?d N~Yö(¹ @  ‰×){?d PN~g;º @  ‰Ø*{?d N~GÎD @  ‰Ù+{?d ÐN~Ý6e @  ‰Ú,{?d O~Q•º @  ‰Û-{?d PO~d£» @  ‰Ü.{?d O~DV¹ç @  ‰Ý/{?d ÐO~  @  ‰Þ0{?d P~ÁÛ=¿ @  ‰ß1{?d PP~C±ì @  ‰à2{?d P~cDƒ @  ‰á3{?d ÐP~¥W:3 @  ‰â4{?d€ Q~´XAÛ @  Š5{?d PQ~`/f @  Š6{?d Q~@Ú ˜ @  Š7{?d ÐQ~Û«s @  Š8{?d R~FÔ ² @  Š9{?d PR~¶«ñË @  Š:{?d R~–^ó5 @  Š;{?d ÐR~žÿn @  Š<{?d S~N·™† @  Š ={?d PS~¾Ècÿ @  Š >{?d S~ž=a @  Š ?{?d ÐS~ ÀŽË @  Š @{?d T~Ž}Ä @  Š A{?d PT~äñ‡½ @  ŠB{?d T~Ä…C @  ŠC{?d ÐT~a]ø @  ŠD{?d U~±LÑ @  ŠE{?d PU~A3+i @  ŠF{?d U~aÆ)— @  ŠG{?d ÐU~úŒˆ| @  ŠH{?d V~gÈ(½ @  ŠI{?d PV~—·ÒÄ @  ŠJ{?d V~·BÐ: @  ŠK{?d ÐV~¿ã6a @  ŠL{?d W~o«º‰ @  ŠM{?d PW~ŸÔ@ð @  ŠN{?d W~¿!B @  ŠO{?d ÐW~A;  @  ŠP{?d X~uÄ  @  ŠQ{?d PX~…»÷m @  ŠR{?d X~¥Nõ“ @  ŠS{?d ÐX~H ˜ @  Š T{?d Y~Á†p @  Š!U{?d PY~1|  @  Š"V{?d Y~Š~÷ @  Š#W{?d ÐY~ŠÀß @  Š$X{?d Z~„Ý @  Š%Y{?d PZ~çû…¤ @  Š&Z{?d Z~LJZ @  Š'[{?d ÐZ~ϯa @  Š(\{?d [~çíé @  Š)]{?d P[~ï˜ @  Š*^{?d [~Ïmn @  Š+_{?d Ð[~¬Àïµ @  Š,`{?d \~µŽº @  Š-a{?d P\~EñæÃ @  Š.b{?d \~eä= @  Š/c{?d Ð\~À<† @  Š0d{?d ]~L°n @  Š1e{?d P]~à3J @  Š2f{?d ]~ÀÆHé @  Š3g{?d Ð]~[Œé @  Š4h{?d ^~ÆÈIà @  Š5i{?d P^~6·³º @  Š6j{?d ^~B±D @  Š7k{?d Ð^~ãW @  Š8l{?d _~ΫÛ÷ @  Š9m{?d P_~>Ô!Ž @  Š:n{?d _~!#p @  ŠuÐ`~;o{?d Ð_~à;àw @  Š<p{?d (`~^ÃUï @  Š=q{?d h`~®¼¯– @  Š>r{?d ¨`~ŽI­h @  Š?s{?d è`~”HTñ @  Š@t{?d (a~DØ @  ŠAu{?d ha~´"` @  ŠBv{?d ¨a~”Š ž @  ŠCw{?d èa~Àu @  ŠDx{?d (b~’„!´ @  ŠEy{?d hb~bûÛÍ @  ŠFz{?d ¨b~BÙ3 @  ŠG{{?d èb~J¯?h @  ŠH|{?d (c~šç³€ @  ŠI}{?d hc~j˜Iù @  ŠJ~{?d ¨c~JmK @  ŠK{?d èc~ÄVð_ @  ŠL€{?d (d~ÝP @  ŠM{?d hd~-gù) @  ŠN‚{?d ¨d~ ’û× @  ŠOƒ{?d èd~¨’#l @  ŠP„{?d (e~xÚ¯„ @  ŠQ…{?d he~ˆ¥Uý @  ŠR†{?d ¨e~¨PW @  ŠS‡{?d èe~3öè @  ŠTˆ{?d (f~®^V) @  ŠU‰{?d hf~^!¬P @  ŠVŠ{?d ¨f~~Ô®® @  ŠW‹{?d èf~vuHõ @  ŠXŒ{?d (g~¦=Ä @  ŠY{?d hg~VB>d @  ŠZŽ{?d ¨g~v·<š @  Š[{?d èg~ˆ­ÿ @  Š\{?d (h~¼Rs€ @  Š]‘{?d hh~L-‰ù @  Š^’{?d ¨h~lØ‹ @  Š_“{?d èh~ØÞt  @  Š`”{?d (i~–øä @  Ša•{?d hi~øé @  Šb–{?d ¨i~Øc @  Šc—{?d èi~CV¡ˆ @  Šd˜{?d (j~ÞI @  Še™{?d hj~.mû0 @  Šfš{?d ¨j~˜ùÎ @  Šg›{?d èj~9• @  Šhœ{?d (k~Öq“} @  Ši{?d hk~&i @  Šjž{?d ¨k~ûkú @  ŠkŸ{?d èk~eV‘! @  Šl {?d (l~|b. @  Šm¡{?d hl~Œg˜W @  Šn¢{?d ¨l~¬’š© @  Šo£{?d èl~ ’B @  Šp¤{?d (m~ÙÚÎú @  Šq¥{?d hm~)¥4ƒ @  Šr¦{?d ¨m~ P6} @  Šs§{?d èm~’—– @  Št¨{?d (n~^7W @  Šu©{?d hn~ÿ!Í. @  Švª{?d ¨n~ßÔÏÐ @  Šw«{?d èn~×u)‹ @  Šx¬{?d (o~=¥c @  Šy­{?d ho~÷B_ @  Šz®{?d ¨o~×·]ä @  Š{¯{?d èo~)­žã @  Š|°{?d (p~—s"Q @  Š}±{?d hp~g Ø( @  Š~²{?d ¨p~GùÚÖ @  Š³{?d èp~¾®~ @  Š€´{?d (q~n柖 @  Šµ{?d hq~ž™eï @  Š‚¶{?d ¨q~¾lg @  Šƒ·{?d èq~%&Æú @  Š„¸{?d (r~¸bf; @  Š…¹{?d hr~HœB @  Š†º{?d ¨r~hèž¼ @  Š‡»{?d èr~`Ixç @  Šˆ¼{?d (s~°ô @  Š‰½{?d hs~@~v @  ŠŠ¾{?d ¨s~`‹ ˆ @  Š‹¿{?d ès~óvãB @  ŠŒÀ{?d (t~ê8M @  ŠÁ{?d ht~Gê4 @  ŠŽÂ{?d ¨t~:²èÊ @  ŠÃ{?d èt~Ÿ²0q @  ŠÄ{?d (u~Oú¼™ @  Š‘Å{?d hu~¿…Fà @  Š’Æ{?d ¨u~ŸpD @  Š“Ç{?d èu~:åõ @  Š”È{?d (v~™~E4 @  Š•É{?d hv~i¿M @  Š–Ê{?d ¨v~Iô½³ @  Š—Ë{?d èv~AU[è @  Š˜Ì{?d (w~‘× @  Š™Í{?d hw~ab-y @  ŠšÎ{?d ¨w~A—/‡ @  Š›Ï{?d èw~¿ì€ @  ŠœÐ{?d (x~‹r` @  ŠÑ{?d hx~{ šä @  ŠžÒ{?d ¨x~[ø˜ @  ŠŸÓ{?d èx~ïþg @  Š Ô{?d (y~?¶ëù @  Š¡Õ{?d hy~ÏÉ€ @  Š¢Ö{?d ¨y~ï<~ @  Š£×{?d èy~tv²• @  Š¤Ø{?d (z~é2T @  Š¥Ù{?d hz~Mè- @  Š¦Ú{?d ¨z~9¸êÓ @  Š§Û{?d èz~1 ˆ @  Š¨Ü{?d ({~áQ€` @  Š©Ý{?d h{~.z @  ŠªÞ{?d ¨{~1Ûxç @  Š«ß{?d è{~Rv‚< @  Š¬à{?d (|~K8q3 @  Š­á{?d h|~»G‹J @  Š®â{?d ¨|~›²‰´ @  Š¯ã{?d è|~>²Q @  Š°ä{?d (}~îúÝç @  Š±å{?d h}~…'ž @  Š²æ{?d ¨}~>p%` @  Š³ç{?d è}~¥:„‹ @  Š´è{?d (~~8~$J @  Šµé{?d h~~ÈÞ3 @  Š¶ê{?d ¨~~èôÜÍ @  Š·ë{?d è~~àU:– @  Š¸ì{?d (~0¶~ @  Š¹í{?d h~ÀbL @  Šºî{?d ¨~uЀ~'à—Nù @  Š»ï{?d è~c þ‚ @  Š¼€ð{?d @€~ ³ö @  Š½€ñ{?d €€~_¨ó¯ @  Š¾€ò{?d À€~Ý9äq @  Š¿€ó{?d ~•á†Þ @  ŠÀ€ô{?d @~p‘ @  ŠÁ€õ{?d €~Ek~Y @  Š€ö{?d À~Çúi‡ @  ŠÀ÷{?d ‚~Ces @  ŠÄ€ø{?d @‚~Áôh­ @  ŠÅ€ù{?d €‚~“ï‡ô @  ŠÆ€ú{?d À‚~~* @  ŠÇ€û{?d ƒ~KíG @  ŠÈ€ü{?d @ƒ~É—ú™ @  ŠÉ€ý{?d €ƒ~›ŒÀ @  ŠÊ€þ{?d Àƒ~ @  ŠË€ÿ{?d „~O—7  @  ŠÌ€|?d @„~Í Ó @  ŠÍ€|?d €„~ŸÏŠ @  Š΀|?d À„~ŒØT @  ŠÏ€|?d …~êU›Ù @  ŠЀ|?d @…~hÄŒ @  ŠÑ€|?d €…~:ßc^ @  ŠÒ€|?d À…~¸Nt€ @  ŠÓ€|?d †~<Ñbt @  ŠÔ€|?d @†~¾@uª @  ŠÕ€ |?d €†~ì[šó @  ŠÖ€ |?d À†~nÊ- @  Š×€ |?d ‡~4²ð@ @  ŠØ€ |?d @‡~¶#çž @  ŠÙ€ |?d €‡~ä8Ç @  ŠÚ€|?d À‡~f© @  ŠÛ€|?d ˆ~.ÝGÝ @  ŠÜ€|?d @ˆ~¬LP @  ŠÝ€|?d €ˆ~þW¿Z @  ŠÞ€|?d Àˆ~|ƨ„ @  Š߀|?d ‰~š̹ @  Šà€|?d @‰~ˆÛg @  Šá€|?d €‰~J“4> @  Šâ€|?d€ À‰~¼Á?F @  ‹€|?d Š~Ùa› @  ‹€|?d @Š~[ŽvE @  ‹€|?d €Š~ÌÜbñ @  ‹€|?d ÀŠ~NMu/ @  ‹€|?d ‹~Ú‡W8 @  ‹€|?d @‹~X@æ @  ‹€|?d €‹~Ä¿ðÅ @  ‹€|?d À‹~F.ç @  ‹ €|?d Œ~{ü @  ‹ € |?d @Œ~ù„" @  ‹ €!|?d €Œ~nÖ– @  ‹ €"|?d ÀŒ~ìGH @  ‹ €#|?d ~x4_ @  ‹€$|?d @~ú# @  ‹€%|?d €~Ë­B @  ‹€&|?d À~I…ºœ @  ‹€'|?d Ž~SW… @  ‹€(|?d @Ž~ŠÂ@[ @  ‹€)|?d €Ž~Tï @  ‹€*|?d ÀŽ~ŸC1 @  ‹€+|?d ~ Ëa& @  ‹€,|?d @~‰Zvø @  ‹€-|?d €~óÆÛ @  ‹€.|?d À~—bÑ @  ‹€/|?d ~~Bƒ @  ‹€0|?d @~ïU] @  ‹€1|?d €~…½Aé @  ‹€2|?d À~,V7 @  ‹€3|?d ‘~“æt  @  ‹€4|?d @‘~wcþ @  ‹€5|?d €‘~1yÊ @  ‹ €6|?d À‘~³èÝS @  ‹!€7|?d ’~ò>0J @  ‹"€8|?d @’~p¯'” @  ‹#€9|?d €’~çý3  @  ‹$€:|?d À’~el$þ @  ‹%€;|?d “~ñ¦é @  ‹&€<|?d @“~s77 @  ‹'€=|?d €“~ïž¡ @  ‹(€>|?d À“~m¶Ê @  ‹)€?|?d ”~ dF< @  ‹*€@|?d @”~"õQâ @  ‹+€A|?d €”~µ§EV @  ‹,€B|?d À”~76Rˆ @  ‹-€C|?d •~£üpŸ @  ‹.€D|?d @•~!mgA @  ‹/€E|?d €•~eé‚ @  ‹0€F|?d À•~’ôþ\ @  ‹1€G|?d –~Ó"E @  ‹2€H|?d @–~Q³› @  ‹3€I|?d €–~Æá/ @  ‹4€J|?d À–~Dpñ @  ‹5€K|?d —~к%æ @  ‹6€L|?d @—~R+28 @  ‹7€M|?d €—~΂‚ @  ‹8€N|?d À—~L•Å @  ‹9€O|?d ˜~Á.6ì @  ‹:€P|?d @˜~C¿!2 @  ‹;€Q|?d €˜~Ôí5† @  ‹<€R|?d À˜~V|"X @  ‹=€S|?d ™~¶O @  ‹>€T|?d @™~@'‘ @  ‹?€U|?d €™~Î.¸p @  ‹@€V|?d À™~L¿¯® @  ‹A€W|?d š~ iB· @  ‹B€X|?d @š~øUi @  ‹C€Y|?d €š~ªAÝ @  ‹D€Z|?d Àš~š;V @  ‹E€[|?d ›~ñt @  ‹F€\|?d @›~Œ`cÊ @  ‹G€]|?d €›~ÉÓé @  ‹H€^|?d À›~’XÄ7 @  ‹I€_|?d œ~¯c!Ð @  ‹J€`|?d @œ~-ò6 @  ‹K€a|?d €œ~º "º @  ‹L€b|?d Àœ~815d @  ‹M€c|?d ~¬ûs @  ‹N€d|?d @~.j­ @  ‹O€e|?d €~bŽn @  ‹P€f|?d À~ó™° @  ‹Q€g|?d ž~Ü%t© @  ‹R€h|?d @ž~^´cw @  ‹S€i|?d €ž~Éæwà @  ‹T€j|?d Àž~Kw` @  ‹U€k|?d Ÿ~ß½B  @  ‹V€l|?d @Ÿ~],UÔ @  ‹W€m|?d €Ÿ~Á…å÷ @  ‹X€n|uР~?d ÀŸ~Cò) @  ‹Y€o|?d  ~ö]p @  ‹Zp|?d X ~tÌgÙ @  ‹[q|?d ˜ ~ãžsm @  ‹\r|?d Ø ~ad³ @  ‹]s|?d ¡~õÅF¤ @  ‹^t|?d X¡~wTQz @  ‹_u|?d ˜¡~WZø  @  ‹`v|?d Ø¡~ÕËï× @  ‹aw|?d ¢~”Î @  ‹bx|?d X¢~Œ @  ‹cy|?d ˜¢~Þ¤ @  ‹dz|?d Ø¢~Oz @  ‹e{|?d £~—…4m @  ‹f||?d X£~#³ @  ‹g}|?d ˜£~‰½“ @  ‹h~|?d Ø£~ ,„N @  ‹i|?d ¤~Û * @  ‹j€|?d X¤~Y7ô @  ‹k|?d ˜¤~ÎB#@ @  ‹l‚|?d ؤ~LÓ4ž @  ‹mƒ|?d ¥~؉ @  ‹n„|?d X¥~ZˆW @  ‹o…|?d ˜¥~k€” @  ‹p†|?d Ø¥~é˜J @  ‹q‡|?d ¦~¨ÇuS @  ‹rˆ|?d X¦~*Vb @  ‹s‰|?d ˜¦~½v9 @  ‹tŠ|?d ئ~?•aç @  ‹u‹|?d §~«_Cð @  ‹vŒ|?d X§~)ÎT. @  ‹w|?d ˜§~µgä  @  ‹xŽ|?d ا~7öóÓ @  ‹y|?d ¨~ºËPú @  ‹z|?d X¨~8ZG$ @  ‹{‘|?d ˜¨~¯S @  ‹|’|?d ب~-™DN @  ‹}“|?d ©~¹SfY @  ‹~”|?d X©~;Âq‡ @  ‹•|?d ˜©~VîW @  ‹€–|?d Ø©~Ô ù‰ @  ‹—|?d ª~•Ú @  ‹‚˜|?d Xª~KN @  ‹ƒ™|?d ˜ª~€ú @  ‹„š|?d ت~ˆ$ @  ‹…›|?d «~–B"3 @  ‹†œ|?d X«~Ó5í @  ‹‡|?d ˜«~ˆz…Î @  ‹ˆž|?d Ø«~ ë’ @  ‹‰Ÿ|?d ¬~7Ðw÷ @  ‹Š |?d X¬~µA`) @  ‹‹¡|?d ˜¬~"t @  ‹Œ¢|?d ج~ ‚cC @  ‹£|?d ­~4HAT @  ‹Ž¤|?d X­~¶ÙVŠ @  ‹¥|?d ˜­~‡ÑØI @  ‹¦|?d Ø­~@Ï— @  ‹‘§|?d ®~D–"Ž @  ‹’¨|?d X®~Æ5P @  ‹“©|?d ˜®~QU!ä @  ‹”ª|?d Ø®~ÓÄ6: @  ‹•«|?d ¯~G- @  ‹–¬|?d X¯~ÅŸó @  ‹—­|?d ˜¯~Y6³Ð @  ‹˜®|?d د~Û§¤ @  ‹™¯|?d °~Ü»7ˆ @  ‹š°|?d X°~^* V @  ‹›±|?d ˜°~Éx4â @  ‹œ²|?d ذ~Ké#< @  ‹³|?d ±~ß#+ @  ‹ž´|?d X±~]²õ @  ‹Ÿµ|?d ˜±~}¼¿† @  ‹ ¶|?d ر~ÿ-¨X @  ‹¡·|?d ²~¾ûEA @  ‹¢¸|?d X²~bx @  ‹Îä|?d X½~b¯u¦ @  ‹Ïå|?d ˜½~S§ûe @  ‹Ðæ|?d ؽ~Ñ6ì» @  ‹Ñç|?d ¾~ࢠ@  ‹Òè|?d X¾~q| @  ‹Óé|?d ˜¾~…#È @  ‹Ôê|?d ؾ~² @  ‹Õë|?d ¿~“x7 @  ‹Öì|?d X¿~é ß @  ‹×í|?d ˜¿~@ü @uÐÀ~  ‹Øî|?d Ø¿~ч" @  ‹Ùï|?d 0À~ÒãùD @  ‹Úð|?d pÀ~Prîš @  ‹Ûñ|?d °À~Ç ú. @  ‹Üò|?d ðÀ~E±íð @  ‹Ýó|?d 0Á~Ñ{Ïç @  ‹Þô|?d pÁ~SêØ9 @  ‹ßõ|?d °Á~säqJ @  ‹àö|?d ðÁ~ñuf” @  ‹á÷|?d 0Â~°£‹ @  ‹âø|?d€ pÂ~´d4ê @  Œù|?d °Â~Âwhw @  Œú|?d ðÂ~@æ© @  Œû|?d 0Ã~e¦S @  Œü|?d pÃ~“ô± @  Œý|?d °Ã~Áï^Ô @  Œþ|?d ðÃ~C~I  @  Œÿ|?d 0Ä~"ç @  Œ}?d pÄ~ —ðÆ @  Œ }?d °Ä~òŒŸ @  Œ }?d ðÄ~pA @  Œ }?d 0Å~!žÑ» @  Œ }?d pÅ~£Æe @  Œ }?d °Å~ñ)< @  Œ}?d ðÅ~s…>â @  Œ}?d 0Æ~Q@²a @  Œ}?d pÆ~ÓÑ¥¿ @  Œ }?d °Æ~ÊJæ @  Œ }?d ðÆ~[]8 @  Œ }?d 0Ç~R؄ @  Œ }?d pÇ~ÐI“ @  Œ }?d °Ç~‚R|E @  Œ}?d ðÇ~Ãk› @  Œ}?d 0È~CL—È @  Œ}?d pÈ~ÁÝ€ @  Œ}?d °È~“ÆoO @  Œ}?d ðÈ~Wx‘ @  Œ}?d 0É~@Ô¡k @  Œ}?d pÉ~ÂE¶µ @  Œ}?d °É~^Yì @  Œ}?d ðÉ~ÏN2 @  Œ}?d 0Ê~! å @  Œ }?d pÊ~£òß @  Œ!}?d °Ê~ñ†† @  Œ"}?d ðÊ~s X @  Œ#}?d 0Ë~"”Ó¢ @  Œ$}?d pË~ Ä| @  Œ%}?d °Ë~ò+% @  Œ&}?d ðË~p<û @  Œ'}?d 0Ì~ƒ†f @  Œ( }?d pÌ~—‘¸ @  Œ)!}?d °Ì~SŒ~á @  Œ*"}?d ðÌ~Ñi? @  Œ+#}?d 0Í~€ž°Å @  Œ,$}?d pÍ~§ @  Œ-%}?d °Í~PHB @  Œ.&}?d ðÍ~Ò…_œ @  Œ/'}?d 0Î~ð@Ó @  Œ0(}?d pÎ~rÑÄÁ @  Œ1)}?d °Î~ Ê+˜ @  Œ2*}?d ðÎ~¢[ž @  Œ:2}?d ðÐ~:v)@ @  Œ;3}?d 0Ñ~kõðº @  Œ<4}?d pÑ~édçd @  Œ=5}?d °Ñ~»= @  Œ>6}?d ðÑ~9îã @  Œ?7}?d 0Ò~¤*²B @  Œ@8}?d pÒ~&»¥œ @  ŒA9}?d °Ò~t JÅ @  ŒB:}?d ðÒ~ö1] @  ŒC;}?d 0Ó~§²„á @  ŒD<}?d pÓ~%#“? @  ŒE=}?d °Ó~w8|f @  ŒF>}?d ðÓ~õ©k¸ @  ŒG?}?d 0Ô~öpÄ4 @  ŒH@}?d pÔ~táÓê @  ŒIA}?d °Ô~&ú<³ @  ŒJB}?d ðÔ~¤k+m @  ŒKC}?d 0Õ~õèò— @  ŒLD}?d pÕ~wyåI @  ŒME}?d °Õ~%b  @  ŒNF}?d ðÕ~§óÎ @  ŒOG}?d 0Ö~…6‘M @  ŒPH}?d pÖ~§†“ @  ŒQI}?d °Ö~U¼iÊ @  ŒRJ}?d ðÖ~×-~ @  ŒSK}?d 0×~†®§î @  ŒTL}?d p×~?°0 @  ŒUM}?d °×~V$_i @  ŒVN}?d ð×~ÔµH· @  ŒWO}?d 0Ø~—:´ä @  ŒXP}?d pØ~«£: @  ŒYQ}?d °Ø~G°Lc @  ŒZR}?d ðØ~Å![½ @  Œ[S}?d 0Ù~”¢‚G @  Œ\T}?d pÙ~3•™ @  Œ]U}?d °Ù~D(zÀ @  Œ^V}?d ðÙ~ƹm @  Œ_W}?d 0Ú~õzÆ- @  Œ`X}?d pÚ~wëÑó @  ŒaY}?d °Ú~%ð>ª @  ŒbZ}?d ðÚ~§a)t @  Œc[}?d 0Û~öâðŽ @  Œd\}?d pÛ~tsçP @  Œe]}?d °Û~&h  @  Œf^}?d ðÛ~¤ù× @  Œg_}?d 0Ü~Wp¥J @  Œh`}?d pÜ~Õá²” @  Œia}?d °Ü~‡ú]Í @  Œjb}?d ðÜ~kJ @  Œkc}?d 0Ý~Tè“é @  Œld}?d pÝ~Öy„7 @  Œme}?d °Ý~„bkn @  Œnf}?d ðÝ~ó|° @  Œog}?d 0Þ~$6ð3 @  Œph}?d pÞ~¦§çí @  Œqi}?d °Þ~ô¼´ @  Œrj}?d ðÞ~v-j @  Œsk}?d 0ß~'®Æ @  Œtl}?d pß~¥?ÑN @  Œum}?d uÐà~/°ß~÷$> @  Œvn}?d ðß~uµ)É @  Œwo}?d Hà~aq @  Œxp}?d ˆà~;” @  Œyq}?d Èà~Ëëÿö @  Œzr}?d á~£s @  Œ{s}?d Há~ù1Ò @  Œ|t}?d ˆá~8 3, @  Œ}u}?d Èá~ÈsÉU @  Œ~v}?d â~U7i” @  Œw}?d Hâ~4pC @  Œ€x}?d ˆâ~…Aå @  Œy}?d Èâ~äú»œ @  Œ‚z}?d ã~4²7t @  Œƒ{}?d Hã~7èu¸ @  Œ„|}?d ˆã~wF @  Œ…}}?d Èã~çb? @  Œ†~}?d ä~þ,~0 @  Œ‡}?d Hä~{ìaÿ @  Œˆ€}?d ˆä~[c @  Œ‰}?d Èä~«f™x @  ŒŠ‚}?d å~{. @  Œ‹ƒ}?d Hå~xtW\ @  ŒŒ„}?d ˆå~XU¢ @  Œ…}?d Èå~¨þ¯Û @  ŒŽ†}?d æ~5º @  Œ‡}?d Hæ~ª4† @  Œˆ}?d ˆæ~(_6x @  Œ‘‰}?d Èæ~Ø Ì @  Œ’Š}?d ç~h@é @  Œ“‹}?d Hç~ 2% @  Œ”Œ}?d ˆç~+ÇÛ @  Œ•}?d Èç~Û¸ú¢ @  Œ–Ž}?d è~ïGv¿ @  Œ—}?d Hè~¦/ @  Œ˜}?d ˆè~:SÑ @  Œ™‘}?d Èè~Ê,é¨ @  Œš’}?d é~de@ @  Œ›“}?d Hé~>'Œ @  Œœ”}?d ˆé~9Ë%r @  Œ•}?d Èé~É´ß  @  Œž–}?d ê~TðÊ @  ŒŸ—}?d Hê~xæcæ @  Œ ˜}?d ˆê~Xa @  Œ¡™}?d Èê~¨l›a @  Œ¢š}?d ë~x$‰ @  Œ£›}?d Hë~{~UE @  Œ¤œ}?d ˆë~[‹W» @  Œ¥}?d Èë~«ô­Â @  Œ¦ž}?d ì~²º^Í @  Œ§Ÿ}?d Hì~Úì @  Œ¨ }?d ˆì~ú @  Œ©¡}?d Èì~ fø @  Œª¢}?d í~Ú.tî @  Œ«£}?d Hí~Ùt6" @  Œ¬¤}?d ˆí~ù4Ü @  Œ­¥}?d Èí~ þÎ¥ @  Œ®¦}?d î~”ºnd @  Œ¯§}?d Hî~©ªUø @  Œ°¨}?d ˆî~‰_W @  Œ±©}?d Èî~y ­ @  Œ²ª}?d ï~©h!— @  Œ³«}?d Hï~ª2c[ @  Œ´¬}?d ˆï~ŠÇa¥ @  Œµ­}?d Èï~z¸›Ü @  Œ¶®}?d ð~Äf'n @  Œ·¯}?d Hð~@œ+ @  Œ¸ °}?d ˆð~(µžÕ @  Œ¹ ±}?d Èð~ØÊd¬ @  Œº ²}?d ñ~‚èD @  Œ» ³}?d Hñ~ تˆ @  Œ¼ ´}?d ˆñ~+-¨v @  Œ½ µ}?d Èñ~ÛRR @  Œ¾ ¶}?d ò~FòÎ @  Œ¿ ·}?d Hò~Äèp @  ŒÀ ¸}?d ˆò~äòêŽ @  ŒÁ ¹}?d Èò~÷ @  Œ º}?d ó~ÄÅœ @  Œà »}?d Hó~ÇŸÞÓ @  ŒÄ ¼}?d ˆó~çjÜ- @  ŒÅ ½}?d Èó~&T @  ŒÆ ¾}?d ô~[Õ[ @  ŒÇ ¿}?d Hô~–]ž @  ŒÈ À}?d ˆô~¶¨œø @  ŒÉ Á}?d Èô~F×f @  ŒÊ Â}?d õ~–Ÿêi @  ŒË Ã}?d Hõ~•Ũ¥ @  ŒÌ Ä}?d ˆõ~µ0ª[ @  ŒÍ Å}?d Èõ~EOP" @  ŒÎ Æ}?d ö~Ø ðã @  ŒÏ Ç}?d Hö~åË @  ŒÐ È}?d ˆö~ÅîÉ @  ŒÑ É}?d Èö~5‘3ø @  ŒÒ Ê}?d ÷~åÙ¿ @  ŒÓ Ë}?d H÷~æƒýÜ @  ŒÔ Ì}?d ˆ÷~Ævÿ" @  ŒÕ Í}?d È÷~6 [ @  ŒÖ Î}?d ø~ö‰F @  Œ× Ï}?d Hø~÷îÖ @  ŒØ Ð}?d ˆø~×âì( @  ŒÙ Ñ}?d Èø~'Q @  ŒÚ Ò}?d ù~÷Õš¹ @  ŒÛ Ó}?d Hù~ôØu @  ŒÜ Ô}?d ˆù~ÔzÚ‹ @  ŒÝ Õ}?d Èù~$ ò @  ŒÞ Ö}?d ú~¹A€3 @  Œß ×}?d Hú~•Wœ @  Œà Ø}?d ˆú~µ¢žá @  Œá Ù}?d Èú~EÝd˜ @  Œâ Ú}?d€ û~áVôÖ @   Û}?d Hû~Mþ3 @   Ü}?d ˆû~#¸üÍ @   Ý}?d Èû~ŽýY @   Þ}?d ü~ÀV @   ß}?d Hü~©$` @   à}?d ˆü~‰Ñ ž @   á}?d Èü~·¨ @   â}?d ý~gT$u @   ã}?d Hý~¡GT @   ä}?d ˆý~²Ÿª @   å}?d Èý~´„ž> @   æ}?d þ~)À>ÿ @   ç}?d Hþ~wÃdù @   è}?d ˆþ~W6f @   é}?d Èþ~ÄZýä @   ê}?d ÿ~q  @   ë}?d Hÿ~ÒÈ- @   ì}?d ˆÿ~òôÊÓ @   uÐí}?d Èÿ~þ’ @  î}?d ±±?c @  ï}?d `Šâ‰ @  ð}?d  ªw @  ñ}?d à”Ú t @  ò}?d D’,œ @  ó}?d `‚•½ @  ô}?d  ¢t—C @  õ}?d à—B–× @  ö}?d  6 @  ÷}?d `Tl @  ø}?d  tðnî @  ù}?d àöšÒ½ @   ú}?d &Ò^U @  !û}?d `àÁçt @  "ü}?d  À4åŠ @  #ý}?d àõä @  $þ}?d ìL @  %ÿ}?d `j{7 @  &~?d  JŽ5s @  '~?d àtCp @  (~?d ¤ ˜ @  )~?d `b¥¹ @  *~?d  Bí§G @  +~?d àwÛ¦Ó @  ,~?d êŸ @  -~?d `´œ\ @  .~?d  ”i^ê @  / ~?d àÅ  @  0 ~?d ×MIá @  1 ~?d `^ðÀ @  2 ~?d  1«ò> @  3 ~?d àóª @  4~?d 0b· @  5~?d ` 1G] @  6~?d  +ÄE£ @  7~?d à à  @  8~?d ÅAlH @  9~?d ` RÕi @  :~?d   #§×— @  ;~?d à ‘Ö @  <~?d ‹Õv @  =~?d ` ÕÖ,Ä @  >~?d   õ#.: @  ?~?d à ÙN”û @  @~?d   @  A~?d ` Ï¡2 @  B~?d   ïà£Ì @  C~?d à ÚÖ¢X @  D~?d ØQW @  E~?d ` e|Pa @  F ~?d   E‰RŸ @  G!~?d à {D÷œ @  H"~?d « {t @  I#~?d ` mÂU @  J$~?d   MêÀ« @  K%~?d à xÜÁ? @  L&~?d å˜aþ @  M'~?d `»›;ø @  N(~?d  ›n9 @  O)~?d à¢å @  P*~?d ØJ.  @  Q+~?d `Y—, @  R,~?d  >¬•Ò @  S-~?d à š”F @  T.~?d µD(ô @  U/~?d `Ž @  V0~?d  ®âà @  W1~?d à/·ã @  X2~?d @g;  @  Y3~?d `†t‚* @  Z4~?d  ¦€Ô @  [5~?d à“·@ @  \6~?d ó! @  ]7~?d `Pð{‡ @  ^8~?d  pyy @  _9~?d àòoÅ* @  `:~?d "'I @  a;~?d `ä4ðã @  b<~?d  ÄÁò @  c=~?d àñ÷ó‰ @  d>~?d 蹆 @  e?~?d `¾ ¡ @  f@~?d  žø_ @  gA~?d à 5³\ @  hB~?d p}?´ @  iC~?d `¶n†• @  jD~?d  –›„k @  kE~?d ࣭…ÿ @  lF~?d >é%> @  mG~?d ``ê8 @  nH~?d  @}Æ @  oI~?d àÓsæ% @  pJ~?d ;jÍ @  qK~?d `Å(Óì @  rL~?d  åÝÑ @  sM~?d àÐëІ @  tN~?d ä\› @  uO~?d `ßGdq @  vP~?d  ÿ²f @  wQ~?d àÁÃŒ @  xR~?d 7Od @  yS~?d `×$öE @  zT~?d  ÷Ñô» @  {U~?d àÂçõ/ @  |V~?d _£Uî @  }W~?d ` è @  ~X~?d  !U  @  Y~?d àîn‡æ @  €Z~?d >&  @  [~?d `ø5²/ @  ‚\~?d  ØÀ°Ñ @  ƒ]~?d àíö±E @  „^~?d ô¸BJ @  …_~?d `R\C| @  †`~?d  r©A‚ @  ‡a~?d àLdä @  ˆb~?d œ,hi @  ‰c~?d `Z?ÑH @  Šd~?d  zÊÓ¶ @  ‹e~?d àOüÒ" @  Œf~?d Ò¸rã @  g~?d `Œ»(å @  Žh~?d  ¬N* @  i~?d à?"±ø @  j~?d ïj= @  ‘k~?d `)y„1 @  ’l~?d   Œ†ÏuÐ  @  “m~?d à<º‡[ @  ”n~?d 8 M±Y= @  •o~?d x vâa× @  –p~?d ¸ Vc) @  —q~?d ø hÚÆ* @  ˜r~?d 8!¸’J @  ™s~?d x!~óã @  št~?d ¸!^tñ @  ›u~?d ø!kBð‰ @  œv~?d 8"öPH @  w~?d x"¨ N @  žx~?d ¸"ˆð° @  Ÿy~?d ø" š´ã @   z~?d 8#ÚÒ8  @  ¡{~?d x#Á* @  ¢|~?d ¸#<4ƒÔ @  £}~?d ø# ‚@ @  ¤~~?d 8$LqO @  ¥~?d x$[>1ú @  ¦€~?d ¸${Ë3 @  §~?d ø$E– @  ¨‚~?d 8%•Nï @  ©ƒ~?d x%S]£Î @  ª„~?d ¸%s¨¡0 @  «…~?d ø%Fž ¤ @  ¬†~?d 8&ÛÚe @  ­‡~?d x&…ÙZc @  ®ˆ~?d ¸&¥,X @  ¯‰~?d ø&6@Ã~ @  °Š~?d 8'æO– @  ±‹~?d x' ö· @  ²Œ~?d ¸'îôI @  ³~?d ø'5ØõÝ @  ´Ž~?d 8('yÀ @  µ~?d x(:tA* @  ¶~?d ¸(CÔ @  ·‘~?d ø($Læ× @  ¸’~?d 8)ôj? @  ¹“~?d x)2Ó @  º”~?d ¸)âÑà @  »•~?d ø)'ÔÐt @  ¼–~?d 8*ºpµ @  ½—~?d x*ä“*³ @  ¾˜~?d ¸*Äf(M @  ¿™~?d ø*è ’Œ @  Àš~?d 8+8Cd @  Á›~?d x+þP§E @  Âœ~?d ¸+Þ¥¥» @  Ã~?d ø+들/ @  Äž~?d 8,òÝW  @  ÅŸ~?d x,T9V @  Æ ~?d ¸,tÌTè @  Ç¡~?d ø,Jñë @  È¢~?d 8-šI} @  É£~?d x-\ZÄ" @  Ê¤~?d ¸-|¯ÆÜ @  Ë¥~?d ø-I™ÇH @  Ì¦~?d 8.ÔÝg‰ @  Í§~?d x.ŠÞ= @  Î¨~?d ¸.ª+?q @  Ï©~?d ø.9G¤’ @  Ðª~?d 8/é(z @  Ñ«~?d x//‘[ @  Ò¬~?d ¸/é“¥ @  Ó­~?d ø/:ß’1 @  Ô®~?d 80„.ƒ @  Õ¯~?d x0¿Ri @  Ö°~?d ¸0Ÿ§— @  ×±~?d ø0¡j±” @  Ø²~?d 81q"=| @  Ù³~?d x1·1„] @  Ú´~?d ¸1—Ć£ @  Ûµ~?d ø1¢ò‡7 @  Ü¶~?d 82?¶'ö @  Ý·~?d x2aµ}ð @  Þ¸~?d ¸2A@ @  ß¹~?d ø2Ã*Ã] @  àº~?d 83bOµ @  á»~?d x3Õqö” @  â¼~?d€ ¸34Ãj @  Ž½~?d ø3à´J× @  Ž¾~?d 84ùú¹Ø @  Ž¿~?d x4jV @  ŽÀ~?d ¸4JòTì @  ŽÁ~?d ø4º®• @  ŽÂ~?d 85jÅ"} @  ŽÃ~?d x5bdÄ& @  ŽÄ~?d ¸5B‘ÆØ @  Ž Å~?d ø5²î<¡ @  Ž Æ~?d 86/ªœ` @  Ž Ç~?d x6´à=‹ @  Ž È~?d ¸6”?u @  Ž É~?d ø6djÅ  @  ŽÊ~?d 87´"Iä @  ŽË~?d x7"‘_ @  ŽÌ~?d ¸71ד¡ @  ŽÍ~?d ø7Á¨iØ @  ŽÎ~?d 88õWåÅ @  ŽÏ~?d x8 M& @  ŽÐ~?d ¸8+¸$< @  ŽÑ~?d ø8ÛÇÞE @  ŽÒ~?d 89 R­ @  ŽÓ~?d x9.´ö @  ŽÔ~?d ¸9#Û¶ @  ŽÕ~?d ø9Ó¤Lq @  ŽÖ~?d 8:Nàì° @  Ž×~?d x:ÕªM[ @  ŽØ~?d ¸:õ_O¥ @  ŽÙ~?d ø: µÜ @  ŽÚ~?d 8;Õh94 @  ŽÛ~?d x;anÆ? @  Ž Ü~?d ¸;A›ÄÁ @  Ž!Ý~?d ø;±ä>¸ @  Ž"Þ~?d 8<¨ªÍ· @  Ž#ß~?d x<Ë7l @  Ž$à~?d ¸<ëò5’ @  Ž%á~?d ø<Ïë @  Ž&â~?d 8=ËÅC @  Ž'ã~?d x=Ãd¥X @  Ž(ä~?d ¸=ã‘§¦ @  Ž)å~?d ø=î]ß @  Ž*æ~?d 8>Žªý @  Ž+ç~?d x>à\õ @  Ž,è~?d ¸>5^  @  Ž-é~?d ø>Åj¤r @  Ž.ê~?d 8?"(š @  Ž/ë~?d x?°"ð! @  Ž0ì~?duÐ@7 ¸?×òß @  Ž1í~?d ø?`¨¦ @  Ž2î~?d P@£²š @  Ž3ï~?d @ÿzd½ @  Ž4ð~?d Ð@}ësc @  Ž5ñ~?d AßM, @  Ž6ò~?d PA]Üò @  Ž7ó~?d A÷ö‰ @  Ž8ô~?d ÐAuˆáW @  Ž9õ~?d Bš"¬1 @  Ž:ö~?d PB³»ï @  Ž;÷~?d B!$ @  Ž<ø~?d ÐB£ ú @  Ž=ù~?d Cªyµ @  Ž>ú~?d PCƒ;nk @  Ž?û~?d C;^‚Ò @  Ž@ü~?d ÐC¹Ï•  @  ŽAý~?d Dë¨Wq @  ŽB þ~?d PDi9@¯ @  ŽC ÿ~?d D:»Û @  ŽD ?d ÐD¸¬ @  ŽE ?d E6ÍJ @  ŽF ?d PE˜§Ú” @  ŽG ?d E2b)ï @  ŽH ?d ÐE°ó>1 @  ŽI ?d F_YsW @  ŽJ ?d PFÝÈd‰ @  ŽK ?d FäæÐB @  ŽL ?d ÐFfwÇœ @  ŽM  ?d GÄѦÓ @  ŽN  ?d PGF@±  @  ŽO  ?d GA$|– @  ŽP  ?d ÐGõkH @  ŽQ  ?d H…¤ ò @  ŽR ?d PH5, @  ŽS ?d H[KË  @  ŽT ?d ÐHÙÚÜÕ @  ŽU ?d I{|½š @  ŽV ?d PIùíªD @  ŽW ?d IS(Y? @  ŽX ?d ÐIѹNá @  ŽY ?d J>‡ @  ŽZ ?d PJ¼‚Y @  Ž[ ?d J…¬ ’ @  Ž\ ?d ÐJ=·L @  Ž] ?d K¥›Ö @  Ž^ ?d PK' ÁÝ @  Ž_ ?d K1h+ö @  Ž` ?d ÐK³ù<( @  Ža ?d LØY"€ @  Žb ?d PLZÈ5^ @  Žc ?d L›Ú¥ @  Žd  ?d ÐLÍ{ @  Že !?d M»6¬4 @  Žf "?d PM9§»ê @  Žg #?d M“bH‘ @  Žh $?d ÐMó_O @  Ži %?d NþY) @  Žj &?d PN|È÷ @  Žk '?d NEæ±< @  Žl (?d ÐNÇw¦â @  Žm )?d OeÑÇ­ @  Žn *?d POç@Ðs @  Žo +?d Oà$è @  Žp ,?d ÐObµ 6 @  Žq -?d P®…[# @  Žr .?d PP,Lý @  Žs /?d PpjšÚ @  Žt 0?d ÐPòû @  Žu 1?d QP]ìK @  Žv 2?d PQÒÌû• @  Žw 3?d Qx î @  Žx 4?d ÐQú˜0 @  Žy 5?d R2RV @  Žz 6?d PR—£Eˆ @  Ž{ 7?d R®ñC @  Ž| 8?d ÐR,æ @  Ž} 9?d SŽº‡Ò @  Ž~ :?d PS +  @  Ž ;?d SWL„ @  Ž€ <?d ÐSÕ‰[Z @  Ž =?d T¾)Eò @  Ž‚ >?d PT<¸R, @  Žƒ ??d T !¨Æ @  Ž„ @?d ÐT°¿ @  Ž… A?d U-ÞW @  Ž† B?d PU¯‡É‰ @  Ž‡ C?d UB:ò @  Žˆ D?d ÐU‡Ó-, @  Ž‰ E?d Vhy`J @  ŽŠ F?d PVêèw” @  Ž‹ G?d VÓÆÃ_ @  ŽŒ H?d ÐVQWÔ @  Ž I?d WóñµÎ @  ŽŽ J?d PWq`¢ @  Ž K?d Wvo‹ @  Ž L?d ÐWô•xU @  Ž‘ M?d X²„ï @  Ž’ N?d PX01 @  Ž“ O?d XlkØ @  Ž” P?d ÐXîúÏÈ @  Ž• Q?d YL\®‡ @  Ž– R?d PYÎ͹Y @  Ž— S?d YdJ" @  Ž˜ T?d ÐYæ™]ü @  Ž™ U?d Z 3š @  Žš V?d PZ‹¢D @  Ž› W?d Z²Œ³ @  Žœ X?d ÐZ0¤Q @  Ž Y?d [’»Å @  Žž Z?d P[*ÒÀ @  ŽŸ [?d [H8ë @  Ž  \?d Ð[„Ù/5 @  Ž¡ ]?d \ïy1 @  Ž¢ ^?d P\mè&C @  Ž£ _?d \¬!ɸ @  Ž¤ `?d Ð\.°Þf @  Ž¥ a?d ]Œ¿) @  Ž¦ b?d P]‡¨÷ @  Ž§ c?d ]¤B[Œ @  Ž¨ d?d Ð]&ÓLR @  Ž© e?d ^2:4 @  Žªf?d P^°†-ê @  Ž«g?d ^‰¨™! @  Ž¬h?d Ð^ 9Žÿ @  Ž­i?d _©Ÿï° @  Ž®j?d P_+øn @  Ž¯k?d _,j5õ @  ŽuÐ`°l?d Ð_U•+ @  Ž± m?d (`™ƒA @  Ž² n?d h`VÊ @  Ž³ o?d ¨`Gl€í @  Ž´ p?d è`Åý—3 @  Žµ q?d (ag[ö| @  Ž¶ r?d haåÊᢠ@  Ž· s?d ¨aOÙ @  Ž¸ t?d èaÍž @  Ž¹ u?d (b"4Ha @  Žº v?d hb ¥_¿ @  Ž» w?d ¨b™‹ët @  Ž¼ x?d èbüª @  Ž½ y?d (c¹¼å @  Ž¾ z?d hc;-Š; @  Ž¿ {?d ¨cƒHf‚ @  ŽÀ |?d ècÙq\ @  ŽÁ }?d (djyoô @  Ž ~?d hdèèx* @  Žà ?d ¨dÄ·ÖR @  ŽÄ €?d èdF&ÁŒ @  ŽÅ ?d (e䀠à @  ŽÆ ‚?d hef· @  ŽÇ ƒ?d ¨eÌÔDf @  ŽÈ „?d èeNES¸ @  ŽÉ …?d (f¡ïÞ @  ŽÊ †?d hf#~  @  ŽË ‡?d ¨fP½Ë @  ŽÌ ˆ?d èf˜Áª @  ŽÍ ‰?d (g:gËZ @  ŽÎ Š?d hg¸öÜ„ @  ŽÏ ‹?d ¨g¿’ @  ŽÐ Œ?d èg=Á @  ŽÑ ?d (h{g{ @  ŽÒ Ž?d hhùƒp¥ @  ŽÓ ?d ¨h¥ý¦‚ @  ŽÔ ?d èh'l±\ @  ŽÕ ‘?d (i…ÊÐ @  ŽÖ ’?d hi[ÇÍ @  Ž× “?d ¨i­ž4¶ @  ŽØ ”?d èi/#h @  ŽÙ •?d (jÀ¥n @  ŽÚ –?d hjB4yÐ @  ŽÛ —?d ¨j{Í @  ŽÜ ˜?d èjù‹ÚÅ @  ŽÝ ™?d (k[-»Š @  ŽÞ š?d hkÙ¼¬T @  Žß ›?d ¨kÏÞF @  Žà œ?d èkMOQ¡ @  Žá ?d (l&ïO  @  Žâ ž?d€ hlнDq @   Ÿ?d ¨lð5㣠@    ?d èlr¤ô} @   ¡?d (mKnß @   ¢?d hm—Úy @   £?d ¨mó­Õ @   ¤?d èmq<ÂÞ @   ¥?d (nP$Р@   ¦?d hnÒµÇ @   §?d ¨n.Òˆ: @   ¨?d èn¬CŸä @   ©?d (oˬF @   ª?d hoI=˜ @   «?d ¨o-J¾™ @   ¬?d èo¯Û©G @   ­?d (pø™È @   ®?d hp‚iŽ @   ¯?d ¨p^£Ü @   °?d èp™Ï´ @   ±?d (qþ .  @   ²?d hq|±9~ @   ³?d ¨qÆ• @   ´?d èqšW‚¡ @   µ?d (r»O½ @   ¶?d hr9Þ‡c @   ·?d ¨rŹÈE @   ¸?d èrG(ß› @   ¹?d (s ÇE9 @   º?d hs¢VRç @   »?d ¨sÆ!þæ @   ¼?d èsD°é8 @   ½?d (t]±º @   ¾?d htß”¦d @  ! ¿?d ¨t+D§c @  " À?d èt©Õ°½ @  # Á?d (uÎ:* @  $ Â?d huL«=Á @  % Ã?d ¨u(Ü‘À @  & Ä?d èuªM† @  ' Å?d (v‹U” @  ( Æ?d hv ăÜ @  ) Ç?d ¨võ£Ìú @  * È?d èvw2Û$ @  + É?d (wÝA† @  , Ê?d hw’LVX @  - Ë?d ¨wö;úY @  . Ì?d èwtªí‡ @  / Í?d (xQ¨í§ @  0 Î?d hxÓ9úy @  1 Ï?d ¨xJ׳ @  2 Ð?d èxÈŸÀm @  3 Ñ?d (y¯pZÏ @  4 Ò?d hy-áM @  5 Ó?d ¨yI–á @  6 Ô?d èyËöÎ @  7 Õ?d (zêäÒ @  8 Ö?d hzhŽó  @  9 ×?d ¨z”é¼* @  : Ø?d èzx«ô @  ; Ù?d ({q—1V @  < Ú?d h{ó&ˆ @  = Û?d ¨{—qЉ @  > Ü?d è{àW @  ? Ý?d (|¢RÃG @  @ Þ?d h| ÃÔ™ @  A ß?d ¨|$CÀ @  B à?d è|¦Ò×Q @  C á?d (}Á=Mó @  D â?d h}C¬Z- @  E ã?d ¨}'Ûö, @  F ä?d è}¥Jáò @  G å?d (~„Róî @  H æ?d h~Ãä0 @  I ç?d ¨~ú¤« @  J è?d è~x5¼È @  K é?d (Ú&j @  L ê?d hK1´ @  M ë?d ¨uЀ'ù<µ @  N ì?d èBjV¾ @  Oí?d @€=)8÷ @  Pî?d €€Ü:  @  Qï?d À€&ã @  Rð?d öÇŽ  @  Sñ?d @ÃñŸ @  Tò?d €ãa @  Uó?d À%4@ @  Vô?d ‚¸S” @  Wõ?d @‚†ž1‚ @  Xö?d €‚¦k3| @  Y÷?d À‚øhiz @  Zø?d ƒ( å’ @  [ù?d @ƒä @  \ú?d €ƒ=ãæø @  ]û?d Àƒûð_Ù @  ^ü?d „⾬Ö @  _ý?d @„`Ô… @  `þ?d €„@!{ @  aÿ?d À„ÆÆ« @  b€?d …Ž C @  c€?d @…#¸ × @  d€?d €…M) @  e€?d À…Å^· @  f€?d †XÉ @  g€?d @†fײÊ @  h€?d €†F"°4 @  i€?d À†!ê2 @  j€?d ‡ÈifÚ @  k €?d @‡ý_gN @  l €?d €‡ݪe° @  m €?d À‡¹Ü‘ @  n €?d ˆ/FPŒ @  o €?d @ˆ¼*Ëo @  p€?d €ˆœßÉ‘ @  q€?d Àˆ§Œñ{ @  r€?d ‰wÄ}“ @  s€?d @‰Bò| @  t€?d €‰b~ù @  u€?d À‰¤ÇØ @  v€?d Š9Pg @  w€?d @ŠÂ @  x€?d €Š'hÀä @  y€?d ÀŠykšâ @  z€?d ‹©#  @  {€?d @‹œž @  |€?d €‹¼à` @  }€?d À‹zó¬A @  ~€?d Œc½_N @  €?d @Œ¬†Õ¾ @  €€?d €ŒŒs×@ @  €?d ÀŒ*—Öv @  ‚ €?d úßZž @  ƒ!€?d @Ïé[  @  „"€?d €ïYô @  …#€?d À)àÕ @  †$€?d Ž´K@ @  ‡%€?d @ŽІå @  ˆ&€?d €Žªsçé @  ‰'€?d ÀŽôp½ï @  Š(€?d $81 @  ‹)€?d @0“ @  Œ*€?d €1û2m @  +€?d À÷è‹L @  Ž,€?d I67þ @  -€?d @ÚZ¬ @  .€?d €ú¯®ã @  ‘/€?d ÀÁü–  @  ’0€?d ‘´á @  “1€?d @‘$‚u @  ”2€?d €‘w‹ @  •3€?d À‘Âd ª @  –4€?d ’_ k @  —5€?d @’aí¥h @  ˜6€?d €’A§– @  ™7€?d À’ý @  š8€?d “ÏSqx @  ›9€?d @“úepì @  œ:€?d €“Úr @  ;€?d À“ƒË3 @  ž<€?d ”Í8< @  Ÿ=€?d @”‡§„o @   >€?d €”§R†‘ @  ¡?€?d À”ñæ’¶ @  ¢@€?d •!®^ @  £A€?d @•˜Ê @  ¤B€?d €•4m4 @  ¥C€?d À•ò~¤ @  ¦D€?d –o:Ô @  §E€?d @–Q÷¡× @  ¨F€?d €–q£) @  ©G€?d À–/ù/ @  ªH€?d —ÿIuÇ @  «I€?d @—ÊtS @  ¬J€?d €—êŠv­ @  ­K€?d À—,™ÏŒ @  ®L€?d ˜fC‘ @  ¯M€?d @˜‹ Ør @  °N€?d €˜«ÿÚŒ @  ±O€?d À˜¬âf @  ²P€?d ™@änŽ @  ³Q€?d @™uÒo @  ´R€?d €™U'mä @  µS€?d À™“4ÔÅ @  ¶T€?d špt @  ·U€?d @š0½Ñ @  ¸V€?d €šHÓù @  ¹W€?d ÀšNK‰ÿ @  ºX€?d ›ž @  »Y€?d @›«5ƒ @  ¼Z€?d €›‹À} @  ½[€?d À›MÓ¿\ @  ¾\€?d œTLS @  ¿]€?d @œxðö’ @  À^€?d €œXôl @  Á_€?d ÀœþáõZ @  Â`€?d .©y² @  Ãa€?d @Ÿx& @  Äb€?d €;jzØ @  Åc€?d ÀýyÃù @  Æd€?d ž`=c8 @  Çe€?d @ž^ðÆ; @  Èf€?d €ž~ÄÅ @  Ég€?d Àž žÃ @  Êh€?d ŸðN+ @  Ëi€?d @ŸÅx¿ @  Ìj€?d €ŸåA @  Ík€uР?d ÀŸ#ž¨` @  Îl€?d  R•v @  Ïm€?d X Áùíå @  Ðn€?d ˜ á ï @  Ño€?d Ø Ú_×ñ @  Òp€?d ¡ [ @  Óq€?d X¡?!Z @  Ôr€?d ˜¡ÔXs @  Õs€?d Ø¡ÙÇáR @  Öt€?d ¢DƒA“ @  ×u€?d X¢zNä @  Øv€?d ˜¢Z»æn @  Ùw€?d Ø¢¸¼h @  Úx€?d £Ôð0€ @  Ûy€?d X£áÆ1 @  Üz€?d ˜£Á33ê @  Ý{€?d Ø£ ŠË @  Þ|€?d ¤nyÄ @  ß}€?d X¤œÅ— @  à~€?d ˜¤¼ñÇi @  á€?d ؤ÷ƒ‡Ü @  â€€?d€ ¥L—çÚ @  €?d X¥˜à®g @  ‚€?d ˜¥¸¬™ @  ƒ€?d Ø¥»OîU @  „€?d ¦& N” @  …€?d X¦Öt´í @  †€?d ˜¦ö¶ @  ‡€?d ئf0³o @  ˆ€?d §¶x?‡ @   ‰€?d X§FÅþ @   Š€?d ˜§fòÇ @   ‹€?d اe¨…Ì @   Œ€?d ¨QW Ñ @   €?d X¨¡(ó¨ @  Ž€?d ˜¨ÝñV @  €?d بÙ¨& @  €?d © Õ$Î @  ‘€?d X©ùªÞ· @  ’€?d ˜©Ù_ÜI @  “€?d ةڞ… @  ”€?d ªGA>D @  •€?d Xª·>Ä= @  –€?d ˜ª—ËÆÃ @  —€?d تzÿ @  ˜€?d «×2OW @  ™€?d X«'Mµ. @  š€?d ˜«¸·Ð @  ›€?d Ø«âõ @  œ€?d ¬¬ @  €?d X¬íÓüj @  ž€?d ˜¬Í&þ” @  Ÿ€?d ج×¹ˆ @    €?d ­ÉŸ5` @  !¡€?d X­9àÏ @  "¢€?d ˜­Íç @  #£€?d Ø­O+ @  $¤€?d ®‡ /ê @  %¥€?d X®wtÕ“ @  &¦€?d ˜®W×m @  '§€?d Ø®Ç0Ò @  (¨€?d ¯x^ù @  )©€?d X¯ç¤€ @  *ª€?d ˜¯Çò¦~ @  +«€?d دĨä² @  ,¬€?d °zvX @  -­€?d X°Š ¢y @  .®€?d ˜°ªü ‡ @  /¯€?d ذò¼ù÷ @  0°€?d ±"ôu @  1±€?d X±Ò‹f @  2²€?d ˜±ò~˜ @  3³€?d رñ$ÏT @  4´€?d ²l`o• @  5µ€?d X²œ•ì @  6¶€?d ˜²¼ê— @  7·€?d ز,[’n @  8¸€?d ³ü† @  9¹€?d X³ läÿ @  :º€?d ˜³,™æ @  ;»€?d س/äÍ @  <¼€?d ´6W @  =½€?d X´Æò­» @  >¾€?d ˜´æ¯E @  ?¿€?d Ø´l¡ûÚ @  @À€?d µ¼éw2 @  AÁ€?d XµL–K @  B€?d ˜µlcµ @  CÀ?d صo9Íy @  DÄ€?d ¶ò}m¸ @  EÅ€?d X¶—Á @  FÆ€?d ˜¶"÷•? @  GÇ€?d ض²FC @  HÈ€?d ·b« @  IÉ€?d X·’qæÒ @  JÊ€?d ˜·²„ä, @  KË€?d Ø·±Þ¦à @  LÌ€?d ¸…!*ý @  MÍ€?d X¸u^Є @  N΀?d ˜¸U«Òz @  OÏ€?d ظ ë‹  @  PЀ?d ¹Ý£â @  QÑ€?d X¹-Üý› @  RÒ€?d ˜¹ )ÿe @  SÓ€?d عs½© @  TÔ€?d º“7h @  UÕ€?d XºcHç @  VÖ€?d ˜ºC½åï @  W×€?d غÓ à“ @  XØ€?d »Dl{ @  YÙ€?d X»ó;– @  ZÚ€?d ˜»ÓΔü @  [Û€?d Ø»ДÖ0 @  \Ü€?d ¼ÉÚ%? @  ]Ý€?d X¼9¥ßF @  ^Þ€?d ˜¼Pݸ @  _߀?d ؼÍ¡š¤ @  `à€?d ½éL @  aá€?d X½í–ì5 @  bâ€?d ˜½ÍcîË @  cã€?d ؽÎ9¬ @  dä€?d ¾S} Æ @  eå€?d X¾£ö¿ @  fæ€?d ˜¾ƒ÷ôA @  gç€?d ؾFñ= @  hè€?d ¿Ã}Õ @  ié€?d X¿3q‡¬ @  jê€?d ˜¿„…R @uÐÀ  kë€?d Ø¿ÞÇž @  lì€?d 0Àt.–Ì @  mí€?d pÀ„Qlµ @  nî€?d °À¤¤nK @  oï€?d ðÀüä7; @  pð€?d 0Á,¬»Ó @  qñ€?d pÁÜÓAª @  rò€?d °Áü&CT @  só€?d ðÁÿ|˜ @  tô€?d 0Âb8¡Y @  uõ€?d pÂ’G[  @  vö€?d °Â²²YÞ @  w÷€?d ðÂ"\¢ @  xø€?d 0ÃòKÐJ @  yù€?d pÃ4*3 @  zú€?d °Ã"Á(Í @  {û€?d ðÃ!›j @  |ü€?d 0Ä8Õ™ @  }ý€?d pÄȪcw @  ~þ€?d °Äè_a‰ @  ÿ€?d ðÄã¹ @  €?d 0Å3FˆQ @  ?d pÅÃ9r( @  ‚?d °ÅãÌpÖ @  ƒ?d ðÅà–2 @  „?d 0Æ}Ò’Û @  …?d pÆ­h¢ @  †?d °Æ­Xj\ @  ‡?d ðÆ=éo  @  ˆ?d 0Çí¡ãÈ @  ‰ ?d pÇÞ± @  Š ?d °Ç=+O @  ‹ ?d ðÇ>qYƒ @  Œ ?d 0È ŽÕž @   ?d pÈúñ/ç @  Ž?d °ÈÚ- @  ?d ðÈ‚Dti @  ?d 0ÉR ø @  ‘?d pÉ¢sø @  ’?d °É‚† @  “?d ðÉÜBÊ @  ”?d 0Ê˜â  @  •?d pÊìçr @  –?d °ÊÌŒ @  —?d ðÊ\£ð @  ˜?d 0ËŒë“ @  ™?d pË|”ia @  š?d °Ë\akŸ @  ›?d ðË_;)S @  œ?d 0ÌFuÚ\ @  ?d p̶ % @  ž?d °Ì–ÿ"Û @  Ÿ?d ðÌBeÇ @    ?d 0Í’Fé/ @  ¡!?d pÍb9V @  ¢"?d °ÍB̨ @  £#?d ðÍA–Sd @  ¤$?d 0ÎÜÒó¥ @  ¥%?d pÎ,­ Ü @  ¦&?d °Î X " @  §'?d ðΜé^ @  ¨(?d 0ÏL¡‚¶ @  ©)?d pϼÞxÏ @  ª*?d °Ïœ+z1 @  «+?d ðÏŸq8ý @  ¬,?d 0Ð!¯„O @  ­-?d pÐÑÐ~6 @  ®.?d °Ðñ%|È @  ¯/?d ðЩe%¸ @  °0?d 0Ñy-©P @  ±1?d pщRS) @  ²2?d °Ñ©§Q× @  ³3?d ðѪý @  ´4?d 0Ò7¹³Ú @  µ5?d pÒÇÆI£ @  ¶6?d °Òç3K] @  ·7?d ðÒw‚N! @  ¸8?d 0Ó§ÊÂÉ @  ¹9?d pÓWµ8° @  º:?d °Ów@:N @  »;?d ðÓtx‚ @  ¼<?d 0ÔmT‹ @  ½=?d pÔ+qô @  ¾>?d °Ô½Þs  @  ¿??d ðÔ7x'• @  À@?d 0Õç0«} @  ÁA?d pÕOQ @  ÂB?d °Õ7ºSú @  ÃC?d ðÕ4à6 @  ÄD?d 0Ö©¤±÷ @  ÅE?d pÖYÛKŽ @  ÆF?d °Öy.Ip @  ÇG?d ðÖéŸL  @  ÈH?d 0×9×Àä @  ÉI?d p×ɨ: @  ÊJ?d °×é]8c @  ËK?d ð×êz¯ @  ÌL?d 0ØÞøö² @  ÍM?d pØ.‡ Ë @  ÎN?d °Ør5 @  ÏO?d ðØV2WE @  ÐP?d 0Ù†zÛ­ @  ÑQ?d pÙv!Ô @  ÒR?d °ÙVð#* @  ÓS?d ðÙUªaæ @  ÔT?d 0ÚÈîÁ' @  ÕU?d pÚ8‘;^ @  ÖV?d °Úd9  @  ×W?d ðÚˆÕ<Ü @  ØX?d 0ÛX°4 @  ÙY?d pÛ¨âJM @  ÚZ?d °ÛˆH³ @  Û[?d ðÛ‹M  @  Ü\?d 0Ü’ùp @  Ý]?d pÜb|  @  Þ^?d °ÜB‰÷ @  ß_?d ðÜ–xFë @  à`?d 0ÝF0Ê @  áa?d pݶO0z @  âb?d€ °Ýây." @  ‘c?d ðÝb$Ç @  ‘d?d 0Þ&„ @  ‘e?d pÞ¨…’ @  ‘f?d °Þˆå‡l @  ‘g?d ðÞÖæÝj @  ‘h?d 0ß®Q‚ @  ‘i?d pß8cô @  ‘j?d uÐà/°ß–ö @  ‘ k?d ðßÞ…O^ @  ‘ l?d HàÇ!¨ @  ‘ m?d ˆàPs @  ‘ n?d ÈàÒâ @  ‘ o?d á»h± @  ‘p?d Há9ù¦À @  ‘q?d ˆáñ( @  ‘r?d ÈáŠ`?Ý @  ‘s?d âS¦1ã @  ‘t?d HâÑ7&= @  ‘u?d ˆâFe2‰ @  ‘v?d ÈâÄô%W @  ‘w?d ãÈ.äg @  ‘x?d HãJ¿ó¹ @  ‘y?d ˆãÖCš @  ‘z?d ÈãT‡TD @  ‘{?d ä K ´ @  ‘|?d Hä‹Új @  ‘}?d ˆäˆ Þ @  ‘~?d Èäž @  ‘?d 凲ƃ @  ‘€?d Hå#Ñ] @  ‘?d ˆå%-x. @  ‘ ‚?d Èå§¼oð @  ‘!ƒ?d æ~zaÎ @  ‘"„?d Hæüëv @  ‘#…?d ˆæk¹b¤ @  ‘$†?d Èæé(uz @  ‘%‡?d çåò´J @  ‘&ˆ?d Hçgc£” @  ‘'‰?d ˆçûÊ· @  ‘(Š?d Èçy[i @  ‘)‹?d è &&‹ @  ‘*Œ?d Hè‹·1U @  ‘+?d ˆèå%á @  ‘,Ž?d Èèžt2? @  ‘-?d é÷þ‘ã @  ‘.?d Héuo†= @  ‘/‘?d ˆéDgþ @  ‘0’?d ÈéÆö  @  ‘1“?d ê0 @  ‘2”?d Hê¡À @  ‘3•?d ˆê ót @  ‘4–?d Èêˆbª @  ‘5—?d 넸Ě @  ‘6˜?d Hë)ÓD @  ‘7™?d ˆëš€cg @  ‘8š?d Èët¹ @  ‘9›?d ìEÝ)I @  ‘:œ?d HìÇL>— @  ‘;?d ˆìP*# @  ‘<ž?d ÈìÒ=ý @  ‘=Ÿ?d í&²§ý @  ‘> ?d Hí¤#°# @  ‘?¡?d ˆí** @  ‘@¢?d Èí¨» @  ‘A£?d îq}" @  ‘B¤?d Hîóìü @  ‘C¥?d ˆîd¾H @  ‘D¦?d Èîæ/– @  ‘E§?d ïêõÓ¦ @  ‘F¨?d HïhdÄx @  ‘G©?d ˆïôÍt[ @  ‘Hª?d Èïv\c… @  ‘I«?d ðŒqÈ @  ‘J¬?d Hð‘f @  ‘K­?d ˆð™Ãr¢ @  ‘L®?d ÈðRe| @  ‘M¯?d ñrØÆ  @  ‘N°?d HñðIÑ~ @  ‘O±?d ˆñÁA_½ @  ‘P²?d ÈñCÐHc @  ‘Q³?d òšF] @  ‘R´?d Hò‡Qƒ @  ‘Sµ?d ˆòÕE7 @  ‘T¶?d Èò DRé @  ‘U·?d óž“Ù @  ‘V¸?d Hóƒ„ @  ‘W¹?d ˆó¦4$ @  ‘Xº?d Èó7#ú @  ‘Y»?d ôÀû~  @  ‘Z¼?d HôBjiÔ @  ‘[½?d ˆôÕ8}` @  ‘\¾?d ÈôW©j¾ @  ‘]¿?d õSÄå¯ @  ‘^À?d HõÑUòq @  ‘_Á?d ˆõñ[[ @  ‘`Â?d ÈõsÊLÜ @  ‘aÃ?d öª Bâ @  ‘bÄ?d Hö(U< @  ‘cÅ?d ˆö¿ÏAˆ @  ‘dÆ?d Èö=^VV @  ‘eÇ?d ÷1„—f @  ‘fÈ?d H÷³€¸ @  ‘gÉ?d ˆ÷/¼0› @  ‘hÊ?d È÷­-'E @  ‘iË?d øÝP§ @  ‘jÌ?d Hø_Áy @  ‘kÍ?d ˆøÈ“Í @  ‘lÎ?d ÈøJ @  ‘mÏ?d ù#ˆ²Ï @  ‘nÐ?d Hù¡¥ @  ‘oÑ?d ˆù+Ò @  ‘pÒ?d Èù€<  @  ‘qÓ?d úËF22 @  ‘rÔ?d HúI×%ì @  ‘sÕ?d ˆúÞ…1X @  ‘tÖ?d Èú\&† @  ‘u×?d ûPÎç¶ @  ‘vØ?d HûÒ_ðh @  ‘wÙ?d ˆûNö@K @  ‘xÚ?d ÈûÌgW• @  ‘yÛ?d ü‘« e @  ‘zÜ?d Hü:» @  ‘{Ý?d ˆü„h  @  ‘|Þ?d ÈüùÑ @  ‘}ß?d ýòÄ„Ñ @  ‘~à?d HýpU“ @  ‘á?d ˆý ß @  ‘€â?d ÈýŸ› @  ‘ã?d þF]? @  ‘‚ä?d HþÄÌá @  ‘ƒå?d ˆþSžU @  ‘„æ?d ÈþÑ‹ @  ‘…ç?d ÿÝÕÀ» @  ‘†è?d Hÿ_D×e @  ‘‡é?d ˆÿÃígF @  ‘ˆuЀê?d Èÿ<üä @  ‘‰€ë?d €Š.-Ò @  ‘Š€ì?d `€¿:  @  ‘‹€í?d  €Ÿí.¸ @  ‘Œ€î?d à€|9f @  ‘€ï?d €töšº @  ‘Ž€ð?d `€ögd @  ‘€ñ?d  €Ço§ @  ‘€ò?d à€Eþy @  ‘‘€ó?d €œ8G @  ‘’€ô?d `€© ™ @  ‘“€õ?d  €‰û- @  ‘”€ö?d à€ jó @  ‘•€÷?d €°Ïà @  ‘–€ø?d `€…!Ø @  ‘—€ù?d  €ˆh> @  ‘˜€ú?d à€›à @  ‘™€û?d €ÆÕ" @  ‘š€ü?d `€DD5Î @  ‘›€ý?d  €Ó!z @  ‘œ€þ?d à€Q‡6¤ @  ‘€ÿ?d €…i @  ‘ž€‚?d `€øšÐ @  ‘Ÿ€‚?d  €'ö3£ @  ‘ €‚?d à€¥g$} @  ‘¡€‚?d €|¡*C @  ‘¢€‚?d `€þ0= @  ‘£€‚?d  €ib)) @  ‘¤€‚?d à€ëó>÷ @  ‘¥€‚?d €ç)ÿÇ @  ‘¦€‚?d `€e¸è @  ‘§€ ‚?d  €ùX: @  ‘¨€ ‚?d à€{€Oä @  ‘©€ ‚?d € ým @  ‘ª€ ‚?d `€‰lzØ @  ‘«€ ‚?d  €>nl @  ‘¬€‚?d à€œ¯y² @  ‘­€‚?d €õ%Ún @  ‘®€‚?d ` €w´Í° @  ‘¯€‚?d   €F¼Cs @  ‘°€‚?d à €Ä-T­ @  ‘±€‚?d €ëZ“ @  ‘²€‚?d ` €ŸzMM @  ‘³€‚?d   €(Yù @  ‘´€‚?d à €йN' @  ‘µ€‚?d €†c @  ‘¶€‚?d ` €ò˜É @  ‘·€‚?d   €˜[(ê @  ‘¸€‚?d à €Ê?4 @  ‘¹€‚?d €GbÄ @  ‘º€‚?d ` €Å—u @  ‘»€‚?d   €RÅa® @  ‘¼€‚?d à €ÐTvp @  ‘½€‚?d €$iìp @  ‘¾€ ‚?d ` €¦øû® @  ‘¿€!‚?d   €(ñTO @  ‘À€"‚?d à €ª`C‘ @  ‘Á€#‚?d €s¦M¯ @  ‘€$‚?d `€ñ7Zq @  ‘À%‚?d  €feNÅ @  ‘Ä€&‚?d à€äôY @  ‘Å€'‚?d €è.˜+ @  ‘Æ€(‚?d `€j¿õ @  ‘Ç€)‚?d  €ö?Ö @  ‘È€*‚?d à€t‡( @  ‘É€+‚?d €ŽÛ:E @  ‘Ê€,‚?d `€ J-› @  ‘Ë€-‚?d  €›9/ @  ‘Ì€.‚?d à€‰.ñ @  ‘Í€/‚?d €p- @  ‘΀0‚?d `€ò’šó @  ‘Ï€1‚?d  €Ú0 @  ‘Ѐ2‚?d à€A î @  ‘Ñ€3‚?d €˜Í Ð @  ‘Ò€4‚?d `€\ @  ‘Ó€5‚?d  €º @  ‘Ô€6‚?d à€Ÿd @  ‘Õ€7‚?d €EØT @  ‘Ö€8‚?d `€ÔÏŠ @  ‘×€9‚?d  €}© @  ‘Ø€:‚?d à€Ÿìhw @  ‘Ù€;‚?d € 5‡ @  ‘Ú€<‚?d `€@±"Y @  ‘Û€=‚?d  €×ã6í @  ‘Ü€>‚?d à€Ur!3 @  ‘Ý€?‚?d €Q®" @  ‘Þ€@‚?d `€Ó޹ü @  ‘߀A‚?d  €ó€ @  ‘à€B‚?d à€qQ @  ‘á€C‚?d €¨× o @  ‘â€D‚?d€ `€ëé± @  ’€E‚?d  €µ, @  ’€F‚?d à€ƒ¢ò @  ’€G‚?d €Ö˜/ @  ’€H‚?d `€Tñ @  ’€I‚?d  €š`¨ @  ’€J‚?d à€„ wv @  ’€K‚?d €:Ä î @  ’€L‚?d `€¸U0 @  ’ €M‚?d  €êNòi @  ’ €N‚?d à€hßå· @  ’ €O‚?d €Ä½† @  ’ €P‚?d `€FªX @  ’ €Q‚?d  €–E @  ’€R‚?d à€–Rß @  ’€S‚?d €,Ò={ @  ’€T‚?d `€®C*¥ @  ’€U‚?d  €üXÅü @  ’€V‚?d à€~ÉÒ" @  ’€W‚?d €·Zèÿ @  ’€X‚?d `€5Ëÿ! @  ’€Y‚?d  €gÐx @  ’€Z‚?d à€åA¦ @  ’€[‚?d €v?, @  ’€\‚?d `€ô®ò @  ’€]‚?d  €¦µý« @  ’€^‚?d à€$$êu @  ’€_‚?d €P‹˜ @  ’€`‚?d `€—ÁœF @  ’€a‚?d  €ÅÚs @  ’€b‚?d à€GKdÁ @  ’€c‚?d €ì˜,Õ @  ’ €d‚?d `€n ;  @  ’!€e‚?d  €<ÔR @  ’"€f‚?d à€¾ƒÃŒ @  ’#€g‚?d €wùQ @  ’$€h‚?d `€õî @  ’%€i‚?d  €§šÖuÐ € @  ’&€j‚?d à€X‹et @  ’'k‚?d 8 €£°J— @  ’(l‚?d x €!!]I @  ’)m‚?d ¸ €s:² @  ’*n‚?d ø €ñ«¥Î @  ’+o‚?d 8!€]hýÿ @  ’,p‚?d x!€ßùê! @  ’-q‚?d ¸!€âx @  ’.r‚?d ø!€s¦ @  ’/s‚?d 8"€µ¦} @  ’0t‚?d x"€77jÜ @  ’1u‚?d ¸"€e,…… @  ’2v‚?d ø"€ç½’[ @  ’3w‚?d 8#€..¨† @  ’4x‚?d x#€¬¿¿X @  ’5y‚?d ¸#€þ¤P @  ’6z‚?d ø#€|5Gß @  ’7{‚?d 8$€ïKEU @  ’8|‚?d x$€mÚR‹ @  ’9}‚?d ¸$€?Á½Ò @  ’:~‚?d ø$€½Pª  @  ’;‚?d 8%€a²Šb @  ’<€‚?d x%€ã#¼ @  ’=‚?d ¸%€±8rå @  ’>‚‚?d ø%€3©e; @  ’?ƒ‚?d 8&€6}+½ @  ’@„‚?d x&€´ì€ ]YÞ @  ’ ä‚?d x>€"ÌN @  ’¡å‚?d ¸>€pסY @  ’¢æ‚?d ø>€òF¶‡ @  ’£ç‚?d 8?€;ÕŒZ @  ’¤è‚?d x?€¹D›„ @  ’¥é‚?duÐ@€7 ¸?€ë_tÝ @  ’¦ê‚?d ø?€P ¿Ö @  ’§ ë‚?d P@€•ôo @  ’¨ ì‚?d @€9`ö‘ @  ’© í‚?d Ð@€É è @  ’ª î‚?d A€W€ @  ’« ï‚?d PA€çMC @  ’¬ ð‚?d A€ǸAù @  ’­ ñ‚?d ÐA€7Ç»€ @  ’® ò‚?d B€ªƒA @  ’¯ ó‚?d PB€ƒÃú @  ’° ô‚?d B€/vÁ @  ’± õ‚?d ÐB€ß ;} @  ’² ö‚?d C€A·• @  ’³ ÷‚?d PC€” ~ @  ’´ ø‚?d C€´þ€ @  ’µ ù‚?d ÐC€Dîù @  ’¶ ú‚?d D€]Ïö @  ’· û‚?d PD€Unû­ @  ’¸ ü‚?d D€u›ùS @  ’¹ ý‚?d ÐD€…ä* @  ’º þ‚?d E€U¬Â @  ’» ÿ‚?d PE€¤ða– @  ’¼ ƒ?d E€„ch @  ’½ ƒ?d ÐE€tz™ @  ’¾ ƒ?d F€é>9Ð @  ’¿ ƒ?d PF€ó?ÀI @  ’À ƒ?d F€ÓÊ· @  ’Á ƒ?d ÐF€#µ8Î @  ’ ƒ?d G€óý´& @  ’à ƒ?d PG€h·Í @  ’Ä ƒ?d G€HB3 @  ’Å  ƒ?d ÐG€¸=íJ @  ’Æ  ƒ?d H€ŒÂaW @  ’Ç  ƒ?d PH€„c‡  @  ’È  ƒ?d H€¤–…ò @  ’É  ƒ?d ÐH€Té‹ @  ’Ê ƒ?d I€„¡óc @  ’Ë ƒ?d PI€z»0d @  ’Ì ƒ?d I€ZN2š @  ’Í ƒ?d ÐI€ª1Èã @  ’Î ƒ?d J€7uh" @  ’Ï ƒ?d PJ€’u°™ @  ’Ð ƒ?d J€²€²g @  ’Ñ ƒ?d ÐJ€BÿH @  ’Ò ƒ?d K€’·Äö @  ’Ó ƒ?d PK€ ýe @  ’Ô ƒ?d K€)gã @  ’Õ ƒ?d ÐK€Ùwš @  ’Ö ƒ?d L€À9n• @  ’× ƒ?d PL€ȘˆÎ @  ’Ø ƒ?d L€èmŠ0 @  ’Ù ƒ?d ÐL€pI @  ’Ú ƒ?d M€ÈZü¡ @  ’Û ƒ?d PM€«÷z @  ’Ü  ƒ?d M€‹„ @  ’Ý !ƒ?d ÐM€{}þý @  ’Þ "ƒ?d N€æ9^< @  ’ß #ƒ?d PN€R?¡7 @  ’à $ƒ?d N€r棃 @  ’á %ƒ?d ÐN€‚µY° @  ’â &ƒ?d€ O€&>Éþ @  “ 'ƒ?d PO€\5 < @  “ (ƒ?d O€|À" @  “ )ƒ?d ÐO€Iö#V @  “ *ƒ?d P€÷(Ÿä @  “ +ƒ?d PP€1;&Å @  “ ,ƒ?d P€Î$; @  “ -ƒ?d ÐP€/8 @  “ .ƒ?d Q€ÿK Ð @  “ /ƒ?d PQ€Ä5: @  “ 0ƒ?d Q€äí7Ä @  “ 1ƒ?d ÐQ€ÑÛ6P @  “ 2ƒ?d R€LŸ–‘ @  “ 3ƒ?d PR€ŠŒ/° @  “ 4ƒ?d R€ªy-N @  “ 5ƒ?d ÐR€9¶­ @  “ 6ƒ?d S€é]:E @  “ 7ƒ?d PS€·^`C @  “ 8ƒ?d S€—«b½ @  “ 9ƒ?d ÐS€¢c) @  “ :ƒ?d T€»Ó& @  “ ;ƒ?d PT€}À) @  “ <ƒ?d T€]5+ù @  “ =ƒ?d ÐT€cøŽú @  “ >ƒ?d U€³° @  “ ?ƒ?d PU€å5 @  “ @ƒ?d U€ÅñË @  “ Aƒ?d ÐU€ðÇ_ @  “ Bƒ?d V€mƒµž @  “ Cƒ?d PV€« ¿ @  “ Dƒ?d V€‹eA @  “ Eƒ?d ÐV€ ² @  “ Fƒ?d W€ÙG>ú @  “! Gƒ?d PW€‡Ddü @  “" Hƒ?d W€§±f @  “# Iƒ?d ÐW€’‡g– @  “$ Jƒ?d X€¦xë‹ @  “% Kƒ?d PX€`kRª @  “& Lƒ?d X€@žPT @  “' Mƒ?d ÐX€~SõW @  “( Nƒ?d Y€®y¿ @  “) Oƒ?d PY€•HAU @  “* Pƒ?d Y€µ½C« @  “+ Qƒ?d ÐY€€‹B? @  “, Rƒ?d Z€Ïâþ @  “- Sƒ?d PZ€ÛÜ[ß @  “. Tƒ?d Z€û)Y! @  “/ Uƒ?d ÐZ€hE @  “0 Vƒ?d [€¸ N* @  “1 Wƒ?d P[€æ, @  “2 Xƒ?d [€ÆûÒ @  “3 Yƒ?d Ð[€óÍF @  “4 Zƒ?d \€êƒäI @  “5 [ƒ?d P\€,]h @  “6 \ƒ?d \€ e_– @  “7 ]ƒ?d Ð\€2¨ú• @  “8 ^ƒ?d ]€âàv} @  “9 _ƒ?d P]€DwK @  “: `ƒ?d ]€dñuµ @  “; aƒ?d Ð]€QÇt! @  “< bƒ?d ^€̃Ôà @  “= cƒ?d P^€ mÁ @  “> dƒ?d ^€*eo? @  “? eƒ?d Ð^€Õþ @  “@ fƒ?d _€Ö@Y @  “A gƒ?d P_€ˆC @  “B hƒ?d _€¨¶î @  “uÐ`€C iƒ?d Ð_€¤Gܯ @  “Djƒ?d (`€¿i7 @  “Ekƒ?d h`€ܬÐ @  “Flƒ?d ¨`€üYÒè @  “Gmƒ?d è`€”wë @  “Hnƒ?d (a€Üû @  “Ioƒ?d ha€)Ãé @  “Jpƒ?d ¨a€ zÁ @  “Kqƒ?d èa€„?d @•€%MÀ @  ”7 ?„?d €•€;G½ @  ”8 @„?d À•€¹Öc @  ”9 A„?d –€V|I @  ”: B„?d @–€Ôí^Û @  ”; C„?d €–€uÓ 7 @  ”< D„?d À–€÷Bé @  ”= E„?d —€Uä¦ @  ”> F„?d @—€×uhx @  ”? G„?d €—€÷gæ @  ”@ H„?d À—€u‘p8 @  ”A I„?d ˜€3€‚ @  ”B J„?d @˜€±\ @  ”C K„?d €˜€/Q° @  ”D L„?d À˜€’¾Fn @  ”E M„?d ™€0'! @  ”F N„?d @™€²‰0ÿ @  ”G O„?d €™€å BO @  ”H P„?d À™€gU‘ @  ”I Q„?d š€ˆ7÷ @  ”J R„?d @š€ ¦) @  ”K S„?d €š€«˜XÅ @  ”L T„?d Àš€) O @  ”M U„?d ›€‹¯.T @  ”N V„?d @›€ >9Š @  ”O W„?d €›€–J6 @  ”P X„?d À›€Ûè @  ”Q Y„?d œ€{@ @  ”R Z„?d @œ€ýê ž @  ”S [„?d €œ€\Ô^r @  ”T \„?d Àœ€ÞEI¬ @  ”U ]„?d €|ã(ã @  ”V ^„?d @€þr?= @  ”W _„?d €€4@tQ @  ”X `„?d À€¶Ñc @  ”Y a„?d ž€Y{.é @  ”Z b„?d @ž€Ûê97 @  ”[ c„?d €ž€zÔnÛ @  ”\ d„?d Àž€øEy @  ”] e„?d Ÿ€ZãJ @  ”^ f„?d @Ÿ€Ør” @  ”_ g„?d €Ÿ€V˜ @  ”` h„uР€?d ÀŸ€Ô‘F @  ”a i„?d  €î³þR @  ”bj„?d X €l"éŒ @  ”ck„?d ˜ €Í¾` @  ”dl„?d Ø €O©¾ @  ”em„?d ¡€í+Èñ @  ”fn„?d X¡€oºß/ @  ”go„?d ˜¡€8?­Ÿ @  ”hp„?d Ø¡€º®ºA @  ”iq„?d ¢€U÷' @  ”jr„?d X¢€וàù @  ”ks„?d ˜¢€v«· @  ”lt„?d Ø¢€ô: Ë @  ”mu„?d £€VœÁ„ @  ”nv„?d X£€Ô ÖZ @  ”ow„?d ˜£€Kyøæ @  ”px„?d Ø£€Éèï8 @  ”qy„?d ¤€¢Hñ @  ”rz„?d X¤€ ÙæN @  ”s{„?d ˜¤€ç±¢ @  ”t|„?d ؤ€v¦| @  ”u}„?d ¥€¡ÐÇ3 @  ”v~„?d X¥€#AÐí @  ”w„?d ˜¥€åÚ @  ”x€„?d Ø¥€†tÍÜ @  ”y„?d ¦€iÞ€º @  ”z‚„?d X¦€ëO—d @  ”{ƒ„?d ˜¦€JqÀˆ @  ”|„„?d ئ€Èà×V @  ”}…„?d §€jF¶ @  ”~†„?d X§€èסÇ @  ”‡„?d ˜§€+ôžh @  ”€ˆ„?d ا€©e‰¶ @  ”‰„?d ¨€ïtè  @  ”‚Š„?d X¨€måÿÒ @  ”ƒ‹„?d ˜¨€ÌÛ¨> @  ”„Œ„?d ب€NJ¿à @  ”…„?d ©€ììÞ¯ @  ”†Ž„?d X©€n}Éq @  ”‡„?d ˜©€9ø»Á @  ”ˆ„?d Ø©€»i¬ @  ”‰‘„?d ª€TÃáy @  ”Š’„?d Xª€ÖRö§ @  ”‹“„?d ˜ª€wl¡K @  ”Œ”„?d ت€õý¶• @  ”•„?d «€W[×Ú @  ”Ž–„?d X«€ÕÊÀ @  ”—„?d ˜«€J¾î¸ @  ”˜„?d Ø«€È/ùf @  ”‘™„?d ¬€£çÎ @  ”’š„?d X¬€!ð @  ”“›„?d ˜¬€€ §ü @  ””œ„?d ج€±°" @  ”•„?d ­€ Ñm @  ”–ž„?d X­€"†Æ³ @  ”—Ÿ„?d ˜­€è´ß @  ”˜ „?d Ø­€j%š @  ”™¡„?d ®€…×g @  ”š¢„?d X®€À¹ @  ”›£„?d ˜®€¦ —U @  ”œ¤„?d Ø®€$±€‹ @  ”¥„?d ¯€†áÄ @  ”ž¦„?d X¯€†ö @  ”Ÿ§„?d ˜¯€Šôÿ @  ” ¨„?d د€eèÈ @  ”¡©„?d °€ÄU¹Ý @  ”¢ª„?d X°€FÄ® @  ”£«„?d ˜°€çúùï @  ”¤¬„?d ذ€ekî1 @  ”¥­„?d ±€ÇÍ~ @  ”¦®„?d X±€E\˜  @  ”§¯„?d ˜±€Ùê @  ”¨°„?d ر€HýÎ @  ”©±„?d ²€â°¨ @  ”ª²„?d X²€ýs§v @  ”«³„?d ˜²€\Mðš @  ”¬´„?d ز€ÞÜçD @  ”­µ„?d ³€|z†  @  ”®¶„?d X³€þë‘Õ @  ”¯·„?d ˜³€aŸ¿i @  ”°¸„?d س€ã¨· @  ”±¹„?d ´€ˆ®¶ @  ”²º„?d X´€ ?¡Á @  ”³»„?d ˜´€«ö- @  ”´¼„?d Ø´€)áó @  ”µ½„?d µ€‹6€¼ @  ”¶¾„?d Xµ€ §—b @  ”·¿„?d ˜µ€3ÅÉ @  ”¸À„?d ص€±TÞÁ @  ”¹Á„?d ¶€^þ“§ @  ”º„?d X¶€Üo„y @  ”»Ä?d ˜¶€}QÓ• @  ”¼Ä„?d ض€ÿÀÄK @  ”½Å„?d ·€]f¥ @  ”¾Æ„?d X·€ß÷²Ú @  ”¿Ç„?d ˜·€ÿ‚½D @  ”ÀÈ„?d Ø·€}ªš @  ”ÁÉ„?d ¸€;Ë  @  ”ÂÊ„?d X¸€¹“Üþ @  ”ÃË„?d ˜¸€­‹ @  ”ÄÌ„?d ظ€š<œÌ @  ”ÅÍ„?d ¹€8šýƒ @  ”Æ΄?d X¹€º ê] @  ”ÇÏ„?d ˜¹€페í @  ”ÈЄ?d ع€o3 @  ”ÉÑ„?d º€€µÂU @  ”ÊÒ„?d Xº€$Õ‹ @  ”ËÓ„?d ˜º€£‚g @  ”ÌÔ„?d غ€!‹•¹ @  ”ÍÕ„?d »€ƒ-ôö @  ”ÎÖ„?d X»€¼ã( @  ”Ïׄ?d ˜»€žÈÍ” @  ”ÐØ„?d Ø»€YÚJ @  ”ÑÙ„?d ¼€wùÄâ @  ”ÒÚ„?d X¼€õhÓ< @  ”ÓÛ„?d ˜¼€TV„Ð @  ”ÔÜ„?d ؼ€ÖÇ“ @  ”ÕÝ„?d ½€taòA @  ”ÖÞ„?d X½€öðåŸ @  ”×ß„?d ˜½€<®ó @  ”Øà„?d ؽ€¾S¹- @  ”Ùá„?d ¾€QùôK @  ”Úâ„?d X¾€Óhã• @  ”Ûã„?d ˜¾€rV´y @  ”Üä„?d ؾ€ðÇ£§ @  ”Ýå„?d ¿€RaÂè @  ”Þæ„?d X¿€ÐðÕ6 @  ”ßç„?d ˜¿€^‚Ü: @uÐÀ€  ”àè„?d Ø¿€ÜËä @  ”áé„?d 0À€Ê w @  ”âê„?d€ pÀ€<_|i @  •ë„?d °À€| c¬ @  •ì„?d ðÀ€þ±tr @  •í„?d 0Á€™^îÐ @  •î„?d pÁ€Ïù @  •ï„?d °Á€‚øÔÄ @  •ð„?d ðÁ€ià @  •ñ„?d 0€!qÑ @  •ò„?d p€£àÆØ @  • ó„?d °Â€Ç—jÙ @  • ô„?d ð€E} @  • õ„?d 0À"éç¥ @  • ö„?d pÀ xð{ @  • ÷„?d °Ã€\¿] @  •ø„?d ðÀÞŽ¨ƒ @  •ù„?d 0Ä€Ö=×± @  •ú„?d pÄ€T¬Ào @  •û„?d °Ä€0Ûln @  •ü„?d ðÄ€²J{° @  •ý„?d 0Å€Õ¥á @  •þ„?d pÅ€W4öÌ @  •ÿ„?d °Å€ÁEöU @  •…?d ðÅ€CÔá‹ @  •…?d 0Æ€bÌó— @  •…?d pÆ€à]äI @  •…?d °Æ€„*HH @  •…?d ðÆ€»_– @  •…?d 0Ç€aTÅ4 @  •…?d pÇ€ãÅÒê @  •…?d °Ç€¢Ì @  •…?d ðÇ€3Š @  • …?d 0È€©7­‚ @  •  …?d pÈ€+¦º\ @  •! …?d °È€OÑ] @  •" …?d ðÈ€Í@ƒ @  •# …?d 0É€ª¯›! @  •$…?d pÉ€(>Œÿ @  •%…?d °É€± ¡5 @  •&…?d ðÉ€3˜¶ë @  •'…?d 0Ê€€¤÷ @  •(…?d pÊ€³) @  •)…?d °Ê€ôf( @  •*…?d ðÊ€v÷ö @  •+…?d 0Ë€’T @  •,…?d pË€“‰…Š @  •-…?d °Ë€oîʬ @  •.…?d ðË€íÝr @  •/…?d 0Ì€åÌ¢@ @  •0…?d pÌ€g]µž @  •1…?d °Ì€*Ÿ @  •2…?d ðÌ€»A @  •3…?d 0Í€æT”ã @  •4…?d pÍ€dŃ= @  •5…?d °Í€`E—+ @  •6 …?d ðÍ€âÔ€õ @  •7!…?d 0΀ÃÌ’é @  •8"…?d p΀A]…7 @  •9#…?d °Î€%*)6 @  •:$…?d ð΀§»>è @  •;%…?d 0Ï€ÀT¤J @  •<&…?d pÏ€Bų” @  •='…?d °Ï€¾¢ü² @  •>(…?d ðÏ€<3ël @  •?)…?d 0Ѐ,úÁ @  •@*…?d pЀ®€í @  •A+…?d °Ð€Ê÷A @  •B,…?d ðЀHfVÀ @  •C-…?d 0Ñ€/‰Ìb @  •D.…?d pÑ€­Û¼ @  •E/…?d °Ñ€4/öv @  •F0…?d ðÑ€¶¾á¨ @  •G1…?d 0Ò€—¦ó´ @  •H2…?d pÒ€7äj @  •I3…?d °Ò€q@Hk @  •J4…?d ðÒ€óÑ_µ @  •K5…?d 0Ó€”>Å @  •L6…?d pÓ€¯ÒÉ @  •M7…?d °Ó€êÈï @  •N8…?d ðÓ€hYŠ1 @  •O9…?d 0Ô€`êõ @  •P:…?d pÔ€â{âÝ @  •Q;…?d °Ô€† NÜ @  •R<…?d ðÔ€Y @  •S=…?d 0Õ€crà @  •T>…?d pÕ€áãÔ~ @  •U?…?d °Õ€3Õy @  •V@…?d ðÕ€—¢Â§ @  •WA…?d 0Ö€¶ºÐ» @  •XB…?d pÖ€4+Çe @  •YC…?d °Ö€P\kd @  •ZD…?d ðÖ€ÒÍ|º @  •[E…?d 0×€µ"æ @  •\F…?d p×€7³ñÆ @  •]G…?d °×€ËÔ¾à @  •^H…?d ð×€IE©> @  •_I…?d 0Ø€}AŽ® @  •`J…?d pØ€ÿЙp @  •aK…?d °Ø€›§5q @  •bL…?d ðØ€6"¯ @  •cM…?d 0Ù€~Ù¸  @  •dN…?d pÙ€üH¯Ó @  •eO…?d °Ù€e‚ @  •fP…?d ðÙ€çî•Ç @  •gQ…?d 0Ú€Æö‡Û @  •hR…?d pÚ€Dg @  •iS…?d °Ú€ < @  •jT…?d ðÚ€¢+Ú @  •kU…?d 0Û€Ån±x @  •lV…?d pÛ€Gÿ¦¦ @  •mW…?d °Û€»˜é€ @  •nX…?d ðÛ€9 þ^ @  •oY…?d 0Ü€1ºl @  •pZ…?d pÜ€³+–² @  •q[…?d °Ü€×\:³ @  •r\…?d ðÜ€UÍ-m @  •s]…?d 0Ý€2"·Ï @  •t^…?d pÝ€°³  @  •u_…?d °Ý€´3´ @  •v`…?d ðÝ€6¢£Ù @  •wa…?d 0Þ€º±Å @  •xb…?d pÞ€•+¦ @  •yc…?d °Þ€ñ\  @  •zd…?d ðÞ€sÍÄ @  •{e…?d 0߀"‡f @  •|f…?d p߀–³¸ @  •}g…?d uÐà€/°ß€jÔßž @  •~h…?d ð߀èEÈ@ @  •i…?d Hà€¼K ˜ @  •€j…?d ˆà€œ¾ f @  •k…?d Èà€Z­°G @  •‚l…?d ညå<¯ @  •ƒm…?d HဿÓ=; @  •„n…?d ˆá€Ÿ&?Å @  •…o…?d Èဤu/ @  •†p…?d â€91§î @  •‡q…?d Hâ€üí @  •ˆr…?d ˆâ€'  @  •‰s…?d Èâ€á¹2 @  •Št…?d ã€1R5Ú @  •‹u…?d Hã€d4N @  •Œv…?d ˆã€$‘6° @  •w…?d Èã€z’l¶ @  •Žx…?d ä€cÜŸ¹ @  •y…?d Hä€ð°Z @  •z…?d ˆä€ÐE¤ @  •‘{…?d Èä€V¿… @  •’|…?d 倯3m @  •“}…?d Hå€ó(2ù @  •”~…?d ˆå€ÓÝ0 @  ••…?d È倘¯p² @  •–€…?d æ€ëÐs @  •—…?d Hæ€;&up @  •˜‚…?d ˆæ€ÓwŽ @  •™ƒ…?d Èæ€ÝÀί @  •š„…?d ç€ ˆBG @  •›……?d Hç€8¾CÓ @  •œ†…?d ˆç€KA- @  •‡…?d Èç€FH+ @  •žˆ…?d è€r·—6 @  •Ÿ‰…?d Hè€ðÝ+e @  • Š…?d ˆè€Ð()› @  •¡‹…?d Èè€;º @  •¢Œ…?d 逯sR @  •£…?d Hé€óEÆ @  •¤Ž…?d ˆé€Ó°8 @  •¥…?d Èé€èã'Ò @  •¦…?d ê€u§‡ @  •§‘…?d Hê€Kj" @  •¨’…?d ˆê€kŸ î @  •©“…?d ÈꀭŒ™Ï @  •ª”…?d ë€}Ä' @  •«•…?d Hë€Hò³ @  •¬–…?d ˆë€hM @  •­—…?d Èë€6LK @  •®˜…?d ì€/J¿D @  •¯™…?d H쀼&$§ @  •°š…?d ˆì€œÓ&Y @  •±›…?d Èì€ZÀŸx @  •²œ…?d 퀊ˆ @  •³…?d H퀿¾ @  •´ž…?d ˆí€ŸKú @  •µŸ…?d Èí€9¯Ì @  •¶ …?d î€¤ë±  @  •·¡…?d H& @  •¸¢…?d ˆî€ºÓð @  •¹£…?d Èî€|À¯Ñ @  •º¤…?d ˆ#9 @  •»¥…?d H¾"­ @  •¼¦…?d ˆï€¹K S @  •½§…?d Èï€çHzU @  •¾¨…?d ð€Y–Æç @  •¿©…?d Hð€uû|& @  •Àª…?d ˆð€U~Ø @  •Á«…?d Èð€“Çù @  •¬…?d ñ€CUK @  •í…?d Hñ€vcJ… @  •Ä®…?d ˆñ€V–H{ @  •ů…?d Èñ€mÅp‘ @  •ư…?d ò€ðÐP @  •DZ…?d Hò€ÎLuS @  •Ȳ…?d ˆò€î¹w­ @  •ɳ…?d Èò€(ªÎŒ @  •Ê´…?d ó€øâBd @  •˵…?d Hó€ÍÔCð @  •̶…?d ˆó€í!A @  •Í·…?d Èó€³" @  •θ…?d ô€ªlè @  •Ϲ…?d Hô€9sä @  •к…?d ˆô€õq @  •Ñ»…?d Èô€ßæÈ; @  •Ò¼…?d õ€®DÓ @  •Ó½…?d Hõ€:˜EG @  •Ô¾…?d ˆõ€mG¹ @  •Õ¿…?d Èõ€LÙSž @  •ÖÀ…?d ö€Ñó_ @  •×Á…?d Hö€ïPV\ @  •ØÂ…?d ˆö€Ï¥T¢ @  •ÙÃ…?d Èö€ ¶íƒ @  •ÚÄ…?d ÷€Ùþak @  •ÛÅ…?d H÷€ìÈ`ÿ @  •ÜÆ…?d ˆ÷€Ì=b @  •ÝÇ…?d È÷€’>8 @  •ÞÈ…?d ø€¦Á´ @  •ßÉ…?d Hø€$«I @  •àÊ…?d ˆø€^ · @  •áË…?d Èø€ÂM³– @  •âÌ…?d€ ù€ÓBÈ~ @  –Í…?d Hù€5à @  –Î…?d ˆù€'Àƒ= @  –Ï…?d Èù€ÙÚ@: @  –Ð…?d ú€Džàû @  –Ñ…?d Hú€´á‚ @  –Ò…?d ˆú€”| @  –Ó…?d Èú€œµþ' @  –Ô…?d û€LýrÏ @  – Õ…?d Hû€¼‚ˆ¶ @  – Ö…?d ˆû€œwŠH @  – ×…?d Èû€=+£ @  – Ø…?d ü€sج @  – Ù…?d Hü€î "Õ @  –Ú…?d ˆü€Îù + @  –Û…?d Èü€kùø @  –Ü…?d ý€»±tx @  –Ý…?d Hý€KÎŽ @  –Þ…?d ˆý€k;Œÿ @  –ß…?d Èý€–v$ @  –à…?d þ€•ÒÖå @  –á…?d Hþ€e­,œ @  –â…?d ˆþ€EX.b @  –ã…?d Èþ€MùÈ9 @  –ä…?d ÿ€±DÑ @  –å…?d Hÿ€mξ¨ @  –æ…?d ˆÿ€M;¼V @  –uÐç…?d Èÿ€«ñnÁ @  –€è…?d äEF0 @  –€é…?d `:¼I @  –€ê…?d  4Ͼ· @  –€ë…?d à€ÉA¼ @  – €ì…?d PÍT @  –!€í…?d ` þ7- @  –"€î…?d  € 5Ó @  –#€ï…?d à~öÔ @  –$€ð…?d ãUV @  –%€ñ…?d `*¬l @  –&€ò…?d  3ß®’ @  –'€ó…?d à;~HÉ @  –(€ô…?d ë6Ä! @  –)€õ…?d `I>X @  –*€ö…?d  ;¼<¦ @  –+€÷…?d à öM @  –,€ø…?d ¹¸nB @  –-€ù…?d `IÇ”; @  –.€ú…?d  i2–Å @  –/€û…?d àÌ2N~ @  –0€ü…?d z– @  –1€ý…?d `ì8ï @  –2€þ…?d  Ìð: @  –3€ÿ…?d àŽá` @  –4€†?d ÊA¡ @  –5€†?d `âµ»Ø @  –6€†?d  Â@¹& @  –7€†?d àÊá_} @  –8€†?d ©Ó• @  –9€†?d `êÖ)ì @  –:€†?d  Ê#+ @  –;€†?d àQiŠù @  –<€†?d e–ä @  –=€ †?d `•éü @  –>€ †?d  µþc @  –?€ †?d à¯ú @  –@€ †?d U‹ @  –A€ †?d ` *qk @  –B€†?d   ¯ßs• @  –C€†?d à QŰ’ @  –D€†?d ÌS @  –E€†?d ` <þê* @  –F€†?d    èÔ @  –G€†?d à ª @  –H€†?d Äâ‚g @  –I€†?d ` 4x @  –J€†?d   hzà @  –K€†?d à "Û  @  –L€†?d –l( @  –M€†?d ` fÒ} @  –N€†?d   FæÐƒ @  –O€†?d à ãæ8 @  –P€†?d 3®„Ð @  –Q€†?d ` ÃÑ~© @  –R€†?d   ã$|W @  –S€†?d à €‰†Œ @  –T€ †?d Í&M @  –U€!†?d `í²Ü4 @  –V€"†?d  ÍGÞÊ @  –W€#†?d àÅæ8‘ @  –X€$†?d ®´y @  –Y€%†?d `åÑN @  –Z€&†?d  Å$Lþ @  –[€'†?d à^ní @  –\€(†?d à°Q§ @  –]€)†?d `Ï«Þ @  –^€*†?d  0:©  @  –_€+†?d à„†?d  È-† @  –s€?†?d à[øÂL @  –t€@†?d Ƽb @  –u€A†?d `6Øô @  –v€B†?d  6š  @  –w€C†?d à—|Q @  –x€D†?d Îßð¹ @  –y€E†?d `>  À @  –z€F†?d  U> @  –{€G†?d à…©Õ @  –|€H†?d ±à%È @  –}€I†?d `AŸß± @  –~€J†?d  ajÝO @  –€K†?d à˜=ç @  –€€L†?d Hu˜ @  –€M†?d `¸ bv @  –‚€N†?d  ˜ÿ`ˆ @  –ƒ€O†?d àfå£ @  –„€P†?d û¡N @  –…€Q†?d ` Þù7 @  –†€R†?d  ++ûÉ @  –‡€S†?d à#Š’ @  –ˆ€T†?d ó‘z @  –‰€U†?d `½k @  –Š€V†?d  #Hiý @  –‹€W†?d à¸È @  –Œ€X†?d ¡L; @  –€Y†?d `Q3Á` @  –Ž€Z†?d  qÆÃž @  –€[†?d àÔÆ% @  –€\†?d Ž—Í @  –‘€]†?d `ôñm´ @  –’€^†?d  ÔoJ @  –“€_†?d à·©•‘ @  –”€`†?d *í5P @  –•€a†?d `Ú’Ï) @  ––€b†?d  úgÍ× @  –—€c†?d àòÆ+Œ @  –˜€d†?d "ާd @  –™€e†?d `Òñ] @  –š€f†?d  ò_ãuÐ  @  –›€g†?d àÎt @  –œh†?d 8 eÅS @  –i†?d x •º©k @  –žj†?d ¸ µO«• @  –Ÿk†?d ø ITž @  – l†?d 8!ÑØv @  –¡m†?d x!!~" @  –¢n†?d ¸!‹ ñ @  –£o†?d ø!ÿ‘ãö @  –¤p†?d 8"bÕC7 @  –¥q†?d x"’ª¹N @  –¦r†?d ¸"²_»° @  –§s†?d ø"ºþ]ë @  –¨t†?d 8#j¶Ñ @  –©u†?d x#šÉ+z @  –ªv†?d ¸#º<)„ @  –«w†?d ø#!vˆo @  –¬x†?d 8$88{` @  –­y†?d x$ÈG @  –®z†?d ¸$貃ç @  –¯{†?d ø$M²[\ @  –°|†?d 8%ú×´ @  –±}†?d x%m…-Í @  –²~†?d ¸%Mp/3 @  –³†?d ø%ÃK”k @  –´€†?d 8&^4ª @  –µ†?d x&®pÎÓ @  –¶‚†?d ¸&Ž…Ì- @  –·ƒ†?d ø&†$*v @  –¸„†?d 8'Vl¦ž @  –¹…†?d x'¦\ç @  –º††?d ¸'†æ^ @  –»‡†?d ø'¬ÿò @  –¼ˆ†?d 8()Ssï @  –½‰†?d x(Ù,‰– @  –¾І?d ¸(ùÙ‹h @  –¿‹†?d ø(ãØrñ @  –ÀŒ†?d 8)3þ @  –Á†?d x)Ãï` @  –Âކ?d ¸)ãž @  –Æ?d ø)Å™ @  –Ć?d 8*€DeX @  –Å‘†?d x*p;Ÿ! @  –Æ’†?d ¸*PÎß @  –Ç“†?d ø*Xo{„ @  –È”†?d 8+ˆ'÷l @  –É•†?d x+xX  @  –Ê–†?d ¸+X­ë @  –Ë—†?d ø+Ãç® @  –̘†?d 8,Ú©] @  –Í™†?d x,*Ö§v @  –Κ†?d ¸, #¥ˆ @  –Ï›†?d ø,¯#}3 @  –М†?d 8-kñÛ @  –ц?d x- ¢ @  –Òž†?d ¸-¯á \ @  –ÓŸ†?d ø-ÌLó‡ @  –Ô †?d 8.QSF @  –Õ¡†?d x.¡w©? @  –Ö¢†?d ¸.‚«Á @  –×£†?d ø.‰#Mš @  –ؤ†?d 8/YkÁr @  –Ù¥†?d x/©;  @  –Ú¦†?d ¸/‰á9õ @  –Û§†?d ø/«˜ @  –ܨ†?d 80¬u$¬ @  –Ý©†?d x0\ ÞÕ @  –Þª†?d ¸0|ÿÜ+ @  –ß«†?d ø0Èù#  @  –ଆ?d 81±¯È @  –á­†?d x1èÎU± @  –⮆?d€ ¸1¼øKé @  —¯†?d ø1££ÀÇ @  —°†?d 82>ç` @  —±†?d x2 Ña’ @  —²†?d ¸2+$cl @  —³†?d ø2í7ÚM @  —´†?d 83=V¥ @  —µ†?d x3²ó¦ @  —¶†?d ¸3#GñX @  — ·†?d ø3}D«^ @  — ¸†?d 84d XQ @  — ¹†?d x4Q @  —+Ù†?d x<l-ª @  —,Ú†?d ¸< ™/T @  —-Û†?d ø<抖u @  —.܆?d 8=6 @  —/݆?d x=¥®~ @  —0Þ†?d ¸=…[ƒ€ @  —1߆?d ø=#¿‚¶ @  —2à†?d 8>¾û"w @  —3á†?d x>‹Í#ã @  —4â†?d ¸>«8! @  —5ã†?d ø>m+˜< @  —6ä†?d 8?½cÔ @  —7å†?d x?ƒ®±× @  —8æ†?duÐ@7 ¸?£[³) @  —9ç†?d ø?ýXé/ @  —:è†?d P@>ôS @  —;é†?d @©¦G§ @  —<ê†?d Ð@+7Py @  —=ë†?d A¿ýrn @  —>ì†?d PA=le° @  —?í†?d A³eÊQ @  —@î†?d ÐA1ôÝ @  —Aï†?d BrRz @  —Bð†?d PB—ãE¤ @  —Cñ†?d B±Q @  —Dò†?d ÐB‚ FÎ @  —Eó†?d CêdÙ @  —Fô†?d PC”{s @  —Gõ†?d CÒÃ$ @  —Hö†?d ÐCŠCÔú @  —I÷†?d DOŸj- @  —Jø†?d PDÍ}ó @  —Kù†?d DZ\iG @  —Lú†?d ÐDØÍ~™ @  —Mû†?d EL\Ž @  —Nü†?d PEΖKP @  —Oý†?d EÿžÅ“ @  —Pþ†?d ÐE}ÒM @  —Qÿ†?d FVÏpë @  —R‡?d PFÔ^g5 @  —S‡?d FC s @  —T‡?d ÐFÁd_ @  —U‡?d GUWFH @  —V‡?d PGׯQ– @  —W‡?d GKoáµ @  —X‡?d ÐGÉþök @  —Y‡?d H!“7® @  —Z‡?d PH£ p @  —[ ‡?d H4P4Ä @  —\ ‡?d ÐH¶Á# @  —] ‡?d I"   @  —^ ‡?d PI šÓ @  —_ ‡?d I€”¿  @  —`‡?d ÐI¨~ @  —a‡?d J&ƒ'‹ @  —b‡?d PJ¤0U @  —c‡?d J3@$á @  —d‡?d ÐJ±Ñ3? @  —e‡?d K%( @  —f‡?d PK§Šö @  —g‡?d K;#¶Õ @  —h‡?d ÐK¹²¡  @  —i‡?d L|nÜ @  —j‡?d PLþÿ @  —k‡?d Li­¶ @  —l‡?d ÐLë< h @  —m‡?d Mö) @  —n‡?d PMýg>¡ @  —o‡?d MÌo°b @  —p‡?d ÐMNþ§¼ @  —q‡?d N÷Ï• @  —r ‡?d PNu^K @  —s!‡?d Nâ ÿ @  —t"‡?d ÐN`! @  —u#‡?d OôW'6 @  —v$‡?d POvÆ0è @  —w%‡?d Oêo€Ë @  —x&‡?d ÐOhþ— @  —y'‡?d P ²f @  —z(‡?d PPˆ#q¡ @  —{)‡?d Pqe @  —|*‡?d ÐPàrË @  —}+‡?d Q *PÜ @  —~,‡?d PQ‹»G @  —-‡?d QæäØÒ @  —€.‡?d ÐQduÏ  @  —/‡?d R@ó@ù @  —‚0‡?d PRÂbW' @  —ƒ1‡?d RU0C“ @  —„2‡?d ÐRסTM @  —…3‡?d SCkvZ @  —†4‡?d PSÁúa„ @  —‡5‡?d S]Sѧ @  —ˆ6‡?d ÐSßÂÆy @  —‰7‡?d Tx® @  —Š8‡?d PT˜op @  —‹9‡?d TÝ{Ä @  —Œ:‡?d ÐTLl @  —;‡?d U†N  @  —Ž<‡?d PU›YÓ @  —=‡?d Uª× @  —>‡?d ÐU(ŽÀÎ @  —‘?‡?d Vaïcö @  —’@‡?d PVã~t( @  —“A‡?d Vt,`œ @  —”B‡?d ÐVö½wB @  —•C‡?d WbwUU @  —–D‡?d PWàæB‹ @  ——E‡?d W|Oò¨ @  —˜F‡?d ÐWþÞåv @  —™G‡?d X³$³ @  —šH‡?d PX”"3m @  —›I‡?d Xp'Ù @  —œJ‡?d ÐXá0 @  —K‡?d Y+ @  —žL‡?d PY—ºÎ @  —ŸM‡?d Y·´¬½ @  — N‡?d ÐY5%»c @  —¡O‡?d Z£4– @  —¢P‡?d PZ“2#H @  —£Q‡?d Z`7ü @  —¤R‡?d ÐZ†ñ " @  —¥S‡?d [;5 @  —¦T‡?d P[ªë @  —§U‡?d [ ¥È @  —¨V‡?d Ð[Ž’² @  —©W‡?d \KN Á @  —ªX‡?d P\Éß @  —«Y‡?d \^« @  —¬Z‡?d Ð\Üu @  —­[‡?d ]HÖ:b @  —®\‡?d P]ÊG-¼ @  —¯]‡?d ]ûO£ @  —°^‡?d Ð]yÞ´¡ @  —±_‡?d ^Àïˆ @  —²`‡?d P^B~V @  —³a‡?d ^Õ,â @  —´b‡?d Ð^W½< @  —µc‡?d _Ãw4+ @  —¶d‡?d P_Aæ#õ @  —·e‡?d _ÝO“Ö @  —uÐ`¸f‡?d Ð__Þ„ @  —¹g‡?d (`=´|H @  —ºh‡?d h`¿%k– @  —»i‡?d ¨`(w" @  —¼j‡?d è`ªæhü @  —½k‡?d (a>,Jë @  —¾l‡?d ha¼½]5 @  —¿m‡?d ¨a2´òÔ @  —Àn‡?d èa°%å  @  —Áo‡?d (b”£jÿ @  —Âp‡?d hb2}! @  —Ãq‡?d ¨b`i• @  —Är‡?d èbñ~K @  —Ås‡?d (c—;\\ @  —Æt‡?d hcªK‚ @  —Çu‡?d ¨c‰û¡ @  —Èv‡?d èc ’ì @  —Éw‡?d (dÎNR¨ @  —Êx‡?d hdLßEv @  —Ëy‡?d ¨dÛQ @  —Ìz‡?d èdYF @  —Í{‡?d (eÍÖd  @  —Î|‡?d heOGsÕ @  —Ï}‡?d ¨e~Oý @  —Ð~‡?d èeüÞêÈ @  —ч?d (f¨yb @  —Ò€‡?d hf*è ¼ @  —Ó‡?d ¨f½º @  —Ô‚‡?d èf?+ Ö @  —Õƒ‡?d (g«á+Á @  —Ö„‡?d hg)p< @  —×…‡?d ¨gµÙŒ< @  —؆‡?d èg7H›â @  —Ù‡‡?d (hß%Z' @  —Úˆ‡?d hh]´Mù @  —Û‰‡?d ¨hÊæYM @  —ÜЇ?d èhHwN“ @  —Ý‹‡?d (iܽl„ @  —ÞŒ‡?d hi^,{Z @  —߇?d ¨i~"Ò) @  —àއ?d èiü³Å÷ @  —á‡?d (jØ5J @  —â‡?d€ hjr>IŽ @  ˜‘‡?d ¨j- @  ˜’‡?d èj†¼Í @  ˜“‡?d (k×?Û7 @  ˜”‡?d hkU®Ìé @  ˜•‡?d ¨kµ#° @  ˜–‡?d èk…$4n @  ˜—‡?d (lŽJÕà @  ˜˜‡?d hl Û @  ˜ ™‡?d ¨l^À-D @  ˜ š‡?d èlÜQ:š @  ˜ ›‡?d (mÒã` @  ˜ œ‡?d hmCô¾ @  ˜ ‡?d ¨m]Xç @  ˜ž‡?d èmßÉ 9 @  ˜Ÿ‡?d (nëÛŠ @  ˜ ‡?d hn‡zÌT @  ˜¡‡?d ¨nÕa#  @  ˜¢‡?d ènWð4Ó @  ˜£‡?d (osí) @  ˜¤‡?d ho„âú÷ @  ˜¥‡?d ¨oÖù® @  ˜¦‡?d èoThp @  ˜§‡?d (pø–¬` @  ˜¨‡?d hpz»¾ @  ˜©‡?d ¨p(Tç @  ˜ª‡?d èpªC9 @  ˜«‡?d (qûšÃ @  ˜¬‡?d hqyŸ @  ˜­‡?d ¨q+„bD @  ˜®‡?d èq©uš @  ˜¯‡?d (rÿ†¼E @  ˜ °‡?d hr}«› @  ˜!±‡?d ¨r/ D @  ˜"²‡?d èr­S @  ˜#³‡?d (süŠæ @  ˜$´‡?d hs~8 @  ˜%µ‡?d ¨s,”ra @  ˜&¶‡?d ès®e¿ @  ˜'·‡?d (t¥k„ @  ˜(¸‡?d ht'ú“Ì @  ˜)¹‡?d ¨tuá|• @  ˜*º‡?d èt÷pkK @  ˜+»‡?d (u¦ó²± @  ˜,¼‡?d hu$b¥o @  ˜-½‡?d ¨uvyJ6 @  ˜.¾‡?d èuôè]è @  ˜/¿‡?d (vÞšŸJ @  ˜0À‡?d hv\ ˆ” @  ˜1Á‡?d ¨vgÍ @  ˜2‡?d èvŒp @  ˜3Ç?d (wÝ©é @  ˜4ć?d hw_“¾7 @  ˜5Ň?d ¨w ˆQn @  ˜6Ƈ?d èwF° @  ˜7LJ?d (x©ÆØ @  ˜8ȇ?d hx+WÏÑ @  ˜9ɇ?d ¨xyL ˆ @  ˜:ʇ?d èxûÝ7V @  ˜;ˇ?d (yª^î¬ @  ˜<̇?d hy(Ïùr @  ˜=͇?d ¨yzÔ+ @  ˜>·?d èyøEõ @  ˜?χ?d (zÑθ @  ˜@Ї?d hz‚@Ùf @  ˜Aч?d ¨zÐ[6? @  ˜BÒ‡?d èzRÊ!á @  ˜CÓ‡?d ({Iø @  ˜DÔ‡?d h{ØïÅ @  ˜EÕ‡?d ¨{ÓÜ @  ˜FÖ‡?d è{QRB @  ˜Gׇ?d (|Z<öï @  ˜H؇?d h|Ø­á1 @  ˜IÙ‡?d ¨|жh @  ˜JÚ‡?d è|'¶ @  ˜KÛ‡?d (}Y¤ÀL @  ˜L܇?d h}Û5×’ @  ˜M݇?d ¨}‰.8Ë @  ˜NÞ‡?d è} ¿/ @  ˜O߇?d (~Ñø¦ @  ˜Pà‡?d h~S ïx @  ˜Qá‡?d ¨~! @  ˜Râ‡?d è~ƒ†ÿ @  ˜Sã‡?d (ÒÎ @  ˜Tä‡?d hP”ÙÛ @  ˜Uå‡?d ¨uЀ'6‚ @  ˜Væ‡?d è€!\ @  ˜Wç‡?d @€ü€ÑŠ @  ˜Xè‡?d €€ÜuÓt @  ˜Yé‡?d À€, )  @  ˜Zê‡?d üB¥å @  ˜[ë‡?d @ÿç) @  ˜\ì‡?d €ßíå× @  ˜]í‡?d À/’® @  ˜^î‡?d ‚²Ö¿o @  ˜_ï‡?d @‚ûÁ¯ @  ˜`ð‡?d €‚ÛeÃQ @  ˜añ‡?d À‚+9( @  ˜bò‡?d ƒûRµÀ @  ˜có‡?d @ƒø÷  @  ˜dô‡?d €ƒØýõò @  ˜eõ‡?d Àƒ(‚‹ @  ˜fö‡?d „1Ìü„ @  ˜g÷‡?d @„¡}ùø @  ˜hø‡?d €„ˆû @  ˜iù‡?d À„q÷ @  ˜jú‡?d …¡¿— @  ˜kû‡?d @…¢åÏ[ @  ˜lü‡?d €…‚Í¥ @  ˜mý‡?d À…ro7Ü @  ˜nþ‡?d †ï+— @  ˜oÿ‡?d @†]ÒÑ @  ˜pˆ?d €†}ëÐ/ @  ˜qˆ?d À†”*V @  ˜rˆ?d ‡]ܦ¾ @  ˜sˆ?d @‡^†är @  ˜tˆ?d €‡~sæŒ @  ˜uˆ?d À‡Ž õ @  ˜vˆ?d ˆºóè @  ˜wˆ?d @ˆ*B•” @  ˜xˆ?d €ˆ ·—j @  ˜y ˆ?d ÀˆúÈm @  ˜z ˆ?d ‰*€áû @  ˜{ ˆ?d @‰)Ú£7 @  ˜| ˆ?d €‰ /¡É @  ˜} ˆ?d À‰ùP[° @  ˜~ˆ?d Šdûq @  ˜ˆ?d @Š`³ @  ˜€ˆ?d €Š@ö±ì @  ˜ˆ?d Àа‰K• @  ˜‚ˆ?d ‹`ÁÇ} @  ˜ƒˆ?d @‹c›…± @  ˜„ˆ?d €‹Cn‡O @  ˜…ˆ?d À‹³}6 @  ˜†ˆ?d Œª_Ž9 @  ˜‡ˆ?d @Œ:î‹E @  ˜ˆˆ?d €Œ‰» @  ˜‰ˆ?d ÀŒêds @  ˜Šˆ?d :,ÿ* @  ˜‹ˆ?d @9v½æ @  ˜Œˆ?d €ƒ¿ @  ˜ˆ?d ÀéüEa @  ˜Žˆ?d Žt¸å  @  ˜ˆ?d @ޱO…  @  ˜ ˆ?d €Ž‘º‡ò @  ˜‘!ˆ?d ÀŽaÅ}‹ @  ˜’"ˆ?d ±ñc @  ˜“#ˆ?d @²×³¯ @  ˜”$ˆ?d €’"±Q @  ˜•%ˆ?d Àb]K( @  ˜–&ˆ?d ܃÷š @  ˜—'ˆ?d @L2òæ @  ˜˜(ˆ?d €lÇð @  ˜™)ˆ?d Àœ¸ a @  ˜š*ˆ?d ‘Lð†‰ @  ˜›+ˆ?d @‘OªÄE @  ˜œ,ˆ?d €‘o_Æ» @  ˜-ˆ?d À‘Ÿ < @  ˜ž.ˆ?d ’dœ @  ˜Ÿ/ˆ?d @’K"âà @  ˜ 0ˆ?d €’k×à= @  ˜¡1ˆ?d À’›¨D @  ˜¢2ˆ?d “Kà–¬ @  ˜£3ˆ?d @“HºÔ` @  ˜¤4ˆ?d €“hOÖž @  ˜¥5ˆ?d À“˜0,ç @  ˜¦6ˆ?d ”~ßè @  ˜§7ˆ?d @”ÏÚ” @  ˜¨8ˆ?d €”1:Øj @  ˜©9ˆ?d À”ÁE" @  ˜ª:ˆ?d • ®û @  ˜«;ˆ?d @•Wì7 @  ˜¬<ˆ?d €•2¢îÉ @  ˜­=ˆ?d À•Âݰ @  ˜®>ˆ?d –_™´q @  ˜¯?ˆ?d @–j>ÁÌ @  ˜°@ˆ?d €–JËÃ2 @  ˜±Aˆ?d À–º´9K @  ˜²Bˆ?d —jüµ£ @  ˜³Cˆ?d @—i¦÷o @  ˜´Dˆ?d €—ISõ‘ @  ˜µEˆ?d À—¹,è @  ˜¶Fˆ?d ˜Óƒõ @  ˜·Gˆ?d @˜b†‰ @  ˜¸Hˆ?d €˜=—„w @  ˜¹Iˆ?d À˜Íè~ @  ˜ºJˆ?d ™ òæ @  ˜»Kˆ?d @™ú°* @  ˜¼Lˆ?d €™>²Ô @  ˜½Mˆ?d À™ÎpH­ @  ˜¾Nˆ?d šS4èl @  ˜¿Oˆ?d @š´u> @  ˜ÀPˆ?d €š”€’À @  ˜ÁQˆ?d Àšdÿh¹ @  ˜ÂRˆ?d ›´·äQ @  ˜ÃSˆ?d @›·í¦ @  ˜ÄTˆ?d €›—¤c @  ˜ÅUˆ?d À›gg^ @  ˜ÆVˆ?d œ~)­ @  ˜ÇWˆ?d @œi @  ˜ÈXˆ?d €œÎmª— @  ˜ÉYˆ?d Àœ>Pî @  ˜ÊZˆ?d îZÜ @  ˜Ë[ˆ?d @ížÊ @  ˜Ì\ˆ?d €Íõœ4 @  ˜Í]ˆ?d À=ŠfM @  ˜Î^ˆ?d ž ÎÆŒ @  ˜Ï_ˆ?d @že9¦  @  ˜Ð`ˆ?d €žE̤Þ @  ˜Ñaˆ?d Àžµ³^§ @  ˜Òbˆ?d ŸeûÒO @  ˜Ócˆ?d @Ÿf¡ƒ @  ˜Ôdˆ?d €ŸFT’} @  ˜ÕeˆuР?d ÀŸ¶+h @  ˜Öfˆ?d  º Å @  ˜×€gˆ?d X *Àb @  ˜Ø€hˆ?d ˜  äœ @  ˜Ù€iˆ?d Ø ú›8å @  ˜Ú€jˆ?d ¡*Ó´  @  ˜Û€kˆ?d X¡)‰öÁ @  ˜Ü€lˆ?d ˜¡ |ô? @  ˜Ý€mˆ?d Ø¡ùF @  ˜Þ€nˆ?d ¢dG®‡ @  ˜߀oˆ?d X¢-ÐG @  ˜à€pˆ?d ˜¢ ôÒ¹ @  ˜á€qˆ?d Ø¢ý‹(À @  ˜â€rˆ?d€ £Y¸Ž @  ™€sˆ?d X£»²k @  ™€tˆ?d ˜£›î°• @  ™€uˆ?d Ø£®Ø± @  ™€vˆ?d ¤·–B @  ™€wˆ?d X¤é• @  ™€xˆ?d ˜¤É`ö @  ™€yˆ?d ؤ÷­¿õ @  ™€zˆ?d ¥'å3 @  ™ €{ˆ?d X¥áöŠ< @  ™ €|ˆ?d ˜¥ÁˆÂ @  ™ €}ˆ?d Ø¥ô5‰V @  ™ €~ˆ?d ¦iq)— @  ™ €ˆ?d X¦"i" @  ™€€ˆ?d ˜¦ökÜ @  ™€ˆ?d ئ‘šð? @  ™€‚ˆ?d §AÒ|× @  ™€ƒˆ?d X§‡ÁÅö @  ™€„ˆ?d ˜§§4Ç @  ™€…ˆ?d ا’Æœ @  ™€†ˆ?d ¨¦ýJ @  ™€‡ˆ?d X¨øþ‡ @  ™€ˆˆ?d ˜¨Ø y @  ™€‰ˆ?d بæÆ·z @  ™€Šˆ?d ©6Ž;’ @  ™€‹ˆ?d X©ð‚³ @  ™€Œˆ?d ˜©Ðh€M @  ™€ˆ?d Ø©å^Ù @  ™€Žˆ?d ªx! @  ™€ˆ?d XªCIò @  ™€ˆ?d ˜ªc¼  @  ™€‘ˆ?d تáÖ§_ @  ™ €’ˆ?d «1ž+· @  ™!€“ˆ?d X«÷’– @  ™"€”ˆ?d ˜«×xh @  ™#€•ˆ?d Ø«âN‘ü @  ™$€–ˆ?d ¬ûbó @  ™%€—ˆ?d X¬¥8õ @  ™&€˜ˆ?d ˜¬…ö:  @  ™'€™ˆ?d ج»;Ÿ @  ™(€šˆ?d ­ksà @  ™)€›ˆ?d X­­`ªÁ @  ™*€œˆ?d ˜­•¨? @  ™+€ˆ?d Ø­¸£©« @  ™,€žˆ?d ®%ç j @  ™-€Ÿˆ?d X®ƒ\ @  ™.€ ˆ?d ˜®£ö ¢ @  ™/€¡ˆ?d Ø®0š‘A @  ™0€¢ˆ?d ¯àÒ© @  ™1€£ˆ?d X¯&Á¤ˆ @  ™2€¤ˆ?d ˜¯4¦v @  ™3€¥ˆ?d د3§â @  ™4€¦ˆ?d °ÜP @  ™5€§ˆ?d X°ÓßAV @  ™6€¨ˆ?d ˜°ó*C¨ @  ™7€©ˆ?d ذÍçæ« @  ™8€ªˆ?d ±¯jC @  ™9€«ˆ?d X±Û¼Ób @  ™:€¬ˆ?d ˜±ûIÑœ @  ™;€­ˆ?d رÎÐ @  ™<€®ˆ?d ²S;pÉ @  ™=€¯ˆ?d X²hhH# @  ™>€°ˆ?d ˜²HJÝ @  ™?€±ˆ?d زdðð @  ™@€²ˆ?d ³´¸|ô @  ™A€³ˆ?d X³r«ÅÕ @  ™B€´ˆ?d ˜³R^Ç+ @  ™C€µˆ?d سghÆ¿ @  ™D€¶ˆ?d ´~&5° @  ™E€·ˆ?d X´ %o¶ @  ™F€¸ˆ?d ˜´ÐmH @  ™G€¹ˆ?d Ø´>ÈK @  ™H€ºˆ?d µîUD£ @  ™I€»ˆ?d Xµ(Fý‚ @  ™J€¼ˆ?d ˜µ³ÿ| @  ™K€½ˆ?d ص=…þè @  ™L€¾ˆ?d ¶ Á^) @  ™M€¿ˆ?d X¶öuJ @  ™N€Àˆ?d ˜¶Ö€Hð @  ™O€Áˆ?d ضEìÓ @  ™P€ˆ?d ·•¤_û @  ™Q€È?d X·S·æÚ @  ™R€Ĉ?d ˜·sBä$ @  ™S€ň?d Ø·Ftå° @  ™T€ƈ?d ¸r‹i­ @  ™U€Lj?d X¸,ˆ3« @  ™V€Ȉ?d ˜¸ }1U @  ™W€Ɉ?d ظ2°”V @  ™X€ʈ?d ¹âø¾ @  ™Y€ˈ?d X¹$롟 @  ™Z€̈?d ˜¹£a @  ™[€͈?d ع1(¢õ @  ™\€Έ?d º¬l4 @  ™]€ψ?d Xº—?:Þ @  ™^€Ј?d ˜º·Ê8  @  ™_€ш?d غ5 „s @  ™`€Òˆ?d »åè› @  ™a€Óˆ?d X»#û±º @  ™b€Ôˆ?d ˜»³D @  ™c€Õˆ?d Ø»68²Ð @  ™d€Öˆ?d ¼/vAß @  ™e€׈?d X¼quÙ @  ™f€؈?d ˜¼Q€' @  ™g€Ùˆ?d ؼoM¼$ @  ™h€Úˆ?d ½¿0Ì @  ™i€Ûˆ?d X½y‰í @  ™j€܈?d ˜½Yã‹ @  ™k€݈?d ؽlÕŠ‡ @  ™l€Þˆ?d ¾ñ‘*F @  ™m€߈?d X¾Wu+p @  ™n€àˆ?d ˜¾w€)Ž @  ™o€áˆ?d ؾäì²m @  ™p€âˆ?d ¿4¤>… @  ™q€ãˆ?d X¿ò·‡¤ @  ™r€äˆ?d ˜¿ÒB…Z @uÐÀ  ™s€åˆ?d Ø¿šô÷² @  ™tæˆ?d 0Àþ¦à @  ™uçˆ?d pÀ üæ @  ™vèˆ?d °À€òþ @  ™wéˆ?d ðÀ¾?[ @  ™xêˆ?d 0Ánw×ó @  ™yëˆ?d pÁ¨dnÒ @  ™zìˆ?d °Áˆ‘l, @  ™{íˆ?d ðÁ½§m¸ @  ™|îˆ?d 0 ãÍy @  ™}ïˆ?d p°õ“ @  ™~ðˆ?d °Â;E÷m @  ™ñˆ?d ðÂô~} @  ™€òˆ?d 0Ã$6ñu @  ™óˆ?d pÃâ%HT @  ™‚ôˆ?d °ÃÂÐJª @  ™ƒõˆ?d ðÃ÷æK> @  ™„öˆ?d 0Ä1 @  ™…÷ˆ?d pİ«â7 @  ™†øˆ?d °Ä^àÉ @  ™‡ùˆ?d ðÄ®“EÊ @  ™ˆúˆ?d 0Å~ÛÉ" @  ™‰ûˆ?d pŸÈp @  ™Šüˆ?d °Å˜=rý @  ™‹ýˆ?d ðÅ­ si @  ™Œþˆ?d 0Æ0OÓ¨ @  ™ÿˆ?d pÆZÆ @  ™Ž‰?d °Æ$¯Äï @  ™‰?d ðÆ·Ã_  @  ™‰?d 0Çg‹Óä @  ™‘‰?d pÇ¡˜jÅ @  ™’‰?d °Çmh; @  ™“‰?d ðÇ´[i¯ @  ™”‰?d 0È€¤å² @  ™•‰?d pÈÞ§¿´ @  ™–‰?d °ÈþR½J @  ™— ‰?d ðÈÀŸI @  ™˜ ‰?d 0É×”¡ @  ™™ ‰?d pÉÖÄ-€ @  ™š ‰?d °Éö1/~ @  ™› ‰?d ðÉÃ.ê @  ™œ‰?d 0Ê^CŽ+ @  ™‰?d pÊe¶Á @  ™ž‰?d °ÊEå´? @  ™Ÿ‰?d ðÊÇl @  ™ ‰?d 0ËÇ„„ @  ™¡‰?d pËÑÔ=¥ @  ™¢‰?d °Ëñ!?[ @  ™£‰?d ðËÄ>Ï @  ™¤‰?d 0ÌÝYÍÀ @  ™¥‰?d p̃Z—Æ @  ™¦‰?d °Ì£¯•8 @  ™§‰?d ðÌb0; @  ™¨‰?d 0ÍM*¼Ó @  ™©‰?d pÍ‹9ò @  ™ª‰?d °Í«Ì  @  ™«‰?d ðÍžú˜ @  ™¬‰?d 0ξ¦Y @  ™­‰?d pÎ¥Z§o @  ™® ‰?d °Î…¯¥‘ @  ™¯!‰?d ðÎÃ>r @  ™°"‰?d 0ÏÆ‹²š @  ™±#‰?d pϘ » @  ™²$‰?d °Ï m E @  ™³%‰?d ðÏ[Ñ @  ™´&‰?d 0Ы…´c @  ™µ'‰?d pÐõ†îe @  ™¶(‰?d °ÐÕsì› @  ™·)‰?d ðÐë¾I˜ @  ™¸*‰?d 0Ñ;öÅp @  ™¹+‰?d pÑýå|Q @  ™º,‰?d °ÑÝ~¯ @  ™»-‰?d ðÑè&; @  ™¼.‰?d 0Òubßú @  ™½/‰?d pÒN1ç @  ™¾0‰?d °ÒnÄåî @  ™¿1‰?d ðÒB©_/ @  ™À2‰?d 0Ó’áÓÇ @  ™Á3‰?d pÓTòjæ @  ™Â4‰?d °Óth @  ™Ã5‰?d ðÓA1iŒ @  ™Ä6‰?d 0ÔXšƒ @  ™Å7‰?d pÔ|À… @  ™Æ8‰?d °Ô&‰Â{ @  ™Ç9‰?d ðÔDgx @  ™È:‰?d 0ÕÈ ë @  ™É;‰?d pÕR± @  ™Ê<‰?d °Õ.êPO @  ™Ë=‰?d ðÕÜQÛ @  ™Ì>‰?d 0Ö†˜ñ @  ™Í?‰?d pÖÐ,å= @  ™Î@‰?d °ÖðÙçà @  ™ÏA‰?d ðÖcµ|  @  ™ÐB‰?d 0׳ýðÈ @  ™ÑC‰?d p×uîIé @  ™ÒD‰?d °×UK @  ™ÓE‰?d ð×`-Jƒ @  ™ÔF‰?d 0ØTÒÆž @  ™ÕG‰?d pØ Ñœ˜ @  ™ÖH‰?d °Ø*$žf @  ™×I‰?d ðØé;e @  ™ØJ‰?d 0ÙÄ¡· @  ™ÙK‰?d pÙ²¬ @  ™ÚL‰?d °Ù"G R @  ™ÛM‰?d ðÙq Æ @  ™ÜN‰?d 0ÚŠ5­ @  ™ÝO‰?d pÚ±f•í @  ™ÞP‰?d °Ú‘“— @  ™ßQ‰?d ðÚù+@ @  ™àR‰?d 0Ûñ§¨ @  ™áS‰?d pÛ¢‰ @  ™âT‰?d€ °Ûäëw @  šU‰?d ðÛ0g¢Ê @  šV‰?d 0Ü))QÅ @  šW‰?d pܲcð. @  šX‰?d °Ü’–òÐ @  šY‰?d ðÜbé© @  šZ‰?d 0ݲ¡„A @  š[‰?d pݺb @  š\‰?d °Ýšõ`ä @  š ]‰?d ðÝjŠš @  š ^‰?d 0Þ÷Î:\ @  š _‰?d pÞ”cÀ‡ @  š `‰?d °Þ´–Ây @  š a‰?d ðÞDé8 @  šb‰?d 0ß”¡´è @  šc‰?d pß1¡lS @  šd‰?d uÐà/°ßTn­ @  še‰?d ðßá+”Ô @  šf‰?d HàøÊ" @  šg‰?d ˆàÁ¡~é @  šh‰?d ÈàC0i7 @  ši‰?d áá–x @  šj‰?d Hác¦ @  šk‰?d ˆáÉÂìÝ @  šl‰?d ÈáKSû @  šm‰?d â¤ù¶e @  šn‰?d Hâ&h¡» @  šo‰?d ˆâzwœ @  šp‰?d Èâø‡`B @  šq‰?d ãZ!  @  šr‰?d HãذÓ @  šs‰?d ˆãÎÒüø @  š t‰?d ÈãLCë& @  š!u‰?d ä'ãõŽ @  š"v‰?d Hä¥râP @  š#w‰?d ˆäœ\V› @  š$x‰?d ÈäÍAE @  š%y‰?d å¼k  @  š&z‰?d Hå>ú7Ô @  š'{‰?d ˆå”?į @  š(|‰?d Èå®Óq @  š)}‰?d æùž @  š*~‰?d Hæ{•‰É @  š+‰?d ˆæWÊ'± @  š,€‰?d ÈæÕ[0o @  š-‰?d çwýQ  @  š.‚‰?d HçõlFþ @  š/ƒ‰?d ˆçò‹e @  š0„‰?d Èçp™œ» @  š1…‰?d è6ˆý @  š2†‰?d Hè´êß @  š3‡‰?d ˆè7^ @  š4ˆ‰?d Èè¦IÊ @  š5‰‰?d é­(… @  š6Љ?d Hé/‘?[ @  š7‹‰?d ˆé…TÌ  @  š8Œ‰?d ÈéÅÛþ @  š9‰?d êèo–˜ @  š:މ?d HêjþF @  š;‰?d ˆê6€Wa @  š<‰?d Èê´@¿ @  š=‘‰?d ë·!ð @  š>’‰?d Hë”&6. @  š?“‰?d ˆë,CÚ— @  š@”‰?d Èë®ÒÍI @  šA•‰?d ìÅrÓá @  šB–‰?d HìGãÄ? @  šC—‰?d ˆì~Ípô @  šD˜‰?d Èìü\g* @  šE™‰?d í^úe @  šFš‰?d HíÜk» @  šG›‰?d ˆív®âÀ @  šHœ‰?d Èíô?õ @  šI‰?d x @  šJž‰?d H¦ @  šKŸ‰?d ˆîXÍ@] @  šL ‰?d ÈîÚ\Wƒ @  šM¡‰?d ïxú6Ì @  šN¢‰?d Hïúk! @  šO£‰?d ˆïýì‰ @  šP¤‰?d ÈïžûW @  šQ¥‰?d 𳮪B @  šR¦‰?d Hð1?½œ @  šS§‰?d ˆð W @  šT¨‰?d ÈðŠ€‰ @  šU©‰?d ñ(&Æ @  šVª‰?d Hñª·h @  šW«‰?d ˆñr›c @  šX¬‰?d Èñ‚㌽ @  šY­‰?d òmIÁÛ @  šZ®‰?d HòïØÖ @  š[¯‰?d ˆò³¦" @  š\°‰?d Èò17ü @  š]±‰?d ó“‘v³ @  š^²‰?d Hóam @  š_³‰?d ˆób‹F @  š`´‰?d Èó…óœ˜ @  šaµ‰?d ôîS‚0 @  šb¶‰?d Hôl•î @  šc·‰?d ˆôUì!% @  šd¸‰?d Èô×}6û @  še¹‰?d õuÛW´ @  šfº‰?d Hõ÷J@j @  šg»‰?d ˆõ]³ @  šh¼‰?d Èõß¤Ï @  ši½‰?d ö0´é© @  šj¾‰?d Hö²%þw @  šk¿‰?d ˆöƒ¼ @  šlÀ‰?d Èö-C @  šmÁ‰?d ÷£‹r  @  šn‰?d H÷!eÒ @  šoÉ?d ˆ÷&~¨I @  špĉ?d È÷¤ï¿— @  šqʼn?d øâþÞ- @  šrƉ?d Hø`oÉó @  šslj?d ˆøYA}8 @  štȉ?d ÈøÛÐjæ @  šuɉ?d ùyv © @  švʉ?d Hùûçw @  šwˉ?d ˆùQ"ï  @  šx̉?d ÈùÓ³øÒ @  šy͉?d ú<µ´ @  šzΉ?d Hú¾ˆ¢j @  š{ω?d ˆúâötM @  š|Љ?d Èú`gc“ @  š}щ?d ûÂÁÜ @  š~Ò‰?d Hû@P @  šÓ‰?d ˆûcÉŠ @  š€Ô‰?d Èû™òÞT @  šÕ‰?d üòRÀü @  š‚Ö‰?d HüpÃ×" @  šƒ׉?d ˆüIícé @  š„؉?d ÈüË|t7 @  š…Ù‰?d ýiÚx @  š†Ú‰?d HýëK¦ @  š‡Û‰?d ˆýAŽñÝ @  šˆ܉?d ÈýÃæ @  š‰݉?d þ,µ«e @  šŠÞ‰?d Hþ®$¼» @  š‹߉?d ˆþoíS@ @  šŒà‰?d Èþí|Dž @  šá‰?d ÿOÚ%Ñ @  šŽâ‰?d HÿÍK2 @  šã‰?d ˆÿÊ/ÿ” @  šuЂä‰?d ÈÿH¾èJ @  š‘å‰?d ‚>¡Mú @  š’æ‰?d `‚¼0Z$ @  š“ç‰?d  ‚…îï @  š”è‰?d à‚ù1 @  š•é‰?d ‚¥)˜~ @  š–ê‰?d `‚'¸  @  š—ë‰?d  ‚}|Û @  š˜ì‰?d à‚ìk @  š™í‰?d ‚àF&c @  ššî‰?d `‚b×1½ @  š›ï‰?d  ‚>©çš @  šœð‰?d à‚¼8ðD @  šñ‰?d ‚ž‘  @  šžò‰?d `‚œ†Õ @  šŸó‰?d  ‚Šmlþ @  š ô‰?d à‚ü{  @  š¡õ‰?d ‚c\eˆ @  š¢ö‰?d `‚áÍrV @  š£÷‰?d  ‚ØãÆ @  š¤ø‰?d à‚ZrÑC @  š¥ù‰?d ‚øÔ°  @  š¦ú‰?d `‚zE§Ò @  š§û‰?d  ‚ЀT© @  š¨ü‰?d à‚RCw @  š©ý‰?d ‚½» @  šªþ‰?d `‚?*Ï @  š«ÿ‰?d  ‚Þ0מ @  š¬Š?d à‚\¡À@ @  š­Š?d ‚þ¡ @  š®Š?d `‚|–¶Ñ @  š¯Š?d  ‚{ò{J @  š°Š?d à‚ùcl” @  š±Š?d ‚¿r . @  š²Š?d `‚=ãð @  š³Š?d  ‚Í®; @  š´Š?d à‚†\¹å @  šµ Š?d ‚$úت @  š¶ Š?d ` ‚¦kÏt @  š· Š?d   ‚ ®< @  š¸ Š?d à ‚Ž?+Ñ @  š¹ Š?d ‚a•f· @  šºŠ?d ` ‚ãqi @  š»Š?d   ‚¿z§N @  š¼Š?d à ‚=ë° @  š½Š?d ‚ŸMÑß @  š¾Š?d ` ‚ÜÆ @  š¿Š?d   ‚¥¹*¸ @  šÀŠ?d à ‚'(=f @  šÁŠ?d ‚Lˆ#Î @  šÂŠ?d ` ‚Î4 @  šÃŠ?d   ‚÷7€Û @  šÄŠ?d à ‚u¦— @  šÅŠ?d ‚×öJ @  šÆŠ?d ` ‚U‘á” @  šÇŠ?d   ‚ÿTï @  šÈŠ?d à ‚}Å1 @  šÉŠ?d ‚’oHW @  šÊŠ?d `‚þ_‰ @  šËŠ?d  ‚Ñ7°r @  šÌ Š?d à‚S¦§¬ @  šÍ!Š?d ‚ñÆã @  šÎ"Š?d `‚s‘Ñ= @  šÏ#Š?d  ‚tõ¦ @  šÐ$Š?d à‚öd x @  šÑ%Š?d ‚:TZm @  šÒ&Š?d `‚¸ÅM³ @  šÓ'Š?d  ‚ëùx @  šÔ(Š?d à‚zî¦ @  šÕ)Š?d ‚¡Üé @  šÖ*Š?d `‚#M˜7 @  š×+Š?d  ‚‰ˆkL @  šØ,Š?d à‚ |’ @  šÙ-Š?d ‚ä³1ô @  šÚ.Š?d `‚f"&* @  šÛ/Š?d  ‚:\ð  @  šÜ0Š?d à‚¸ÍçÓ @  šÝ1Š?d ‚k†œ @  šÞ2Š?d `‚˜ú‘B @  šß3Š?d  ‚Ž˜{i @  šà4Š?d à‚ l· @  šá5Š?d ‚g©r @  šâ6Š?d€ `‚‘ûyg @  ›7Š?d  ‚I”…… @  ›8Š?d à‚Ë’[ @  ›9Š?d ‚¬êù @  ›:Š?d `‚.{' @  ›;Š?d  ‚J ³& @  ›<Š?d à‚Ȥø @  ›=Š?d ‚é…¶ä @  ›>Š?d `‚k¡: @  › ?Š?d  ‚ŸÄ = @  › @Š?d à‚U·ã @  › AŠ?d ‚zº-A @  › BŠ?d `‚ø+:Ÿ @  › CŠ?d  ‚œ\–ž @  ›DŠ?d à‚Í@ @  ›EŠ?d ‚;Ï` @  ›FŠ?d `‚¹^–¾ @  ›GŠ?d  ‚E9Ù˜ @  ›HŠ?d à‚ǨÎF @  ›IŠ?d ‚ GTä @  ›JŠ?d `‚"ÖC: @  ›KŠ?d  ‚F¡ï; @  ›LŠ?d à‚Ä0øå @  ›MŠ?d ‚å(êù @  ›NŠ?d `‚g¹ý' @  ›OŠ?d  ‚þŽÐí @  ›PŠ?d à‚|Ç3 @  ›QŠ?d ‚ð]‘ @  ›RŠ?d `‚™aJO @  ›SŠ?d  ‚ýæN @  ›TŠ?d à‚‡ñ @  ›UŠ?d ‚f2© @  › VŠ?d `‚䣾Ì @  ›!WŠ?d  ‚Äñê @  ›"XŠ?d à‚šUæ4 @  ›#YŠ?d ‚ýº|– @  ›$ZŠ?d `‚+kH @  ›%[Š?d  ‚\ÇI @  ›&\Š?d à‚™ÍЗ @  ›']Š?d ‚¸Õ‹ @  ›(^Š?d `‚:DÕU @  ›)_Š?d  ‚>ÄÁC @  ›*`Š?d à‚¼UÖ @  ›+aŠ?d ‚ÛºL? @  ›,bŠ?d `‚Y+[á @  ›-cŠ?d  ‚=\÷àuÐ ‚ @  ›.dŠ?d à‚† <ë @  ›/ eŠ?d 8 ‚æün° @  ›0 fŠ?d x ‚dmyn @  ›1 gŠ?d ¸ ‚˜ 6H @  ›2 hŠ?d ø ‚›!– @  ›3 iŠ?d 8!‚}t»4 @  ›4 jŠ?d x!‚ÿå¬ê @  ›5 kŠ?d ¸!‚›’ë @  ›6 lŠ?d ø!‚5 @  ›7 mŠ?d 8"‚8) @  ›8 nŠ?d x"‚ºŠ÷ @  ›9 oŠ?d ¸"‚#½?= @  ›: pŠ?d ø"‚¡,(ã @  ›; qŠ?d 8#‚ÆÃ²A @  ›< rŠ?d x#‚DR¥Ÿ @  ›= sŠ?d ¸#‚ % ž @  ›> tŠ?d ø#‚¢´@ @  ›? uŠ?d 8$‚@P @  ›@ vŠ?d x$‚——WŽ @  ›A wŠ?d ¸$‚kð¨ @  ›B xŠ?d ø$‚éav @  ›C yŠ?d 8%‚ŽŽ•Ô @  ›D zŠ?d x%‚ ‚  @  ›E {Š?d ¸%‚hh.  @  ›F |Š?d ø%‚êù9Õ @  ›G }Š?d 8&‚Ëá+É @  ›H ~Š?d x&‚Ip< @  ›I Š?d ¸&‚ fi‚ @  ›J €Š?d ø&‚"÷~\ @  ›K Š?d 8'‚Eäþ @  ›L ‚Š?d x'‚ljó  @  ›M ƒŠ?d ¸'‚£þ_! @  ›N „Š?d ø'‚!oHÿ @  ›O …Š?d 8(‚mHß @  ›P †Š?d x(‚†ü_ @  ›Q ‡Š?d ¸(‚z›' @  ›R ˆŠ?d ø(‚ø ù @  ›S ‰Š?d 8)‚Ÿå[ @  ›T ŠŠ?d x)‚tŠ… @  ›U ‹Š?d ¸)‚y&„ @  ›V ŒŠ?d ø)‚û’1Z @  ›W Š?d 8*‚ÚŠ#F @  ›X ŽŠ?d x*‚X4˜ @  ›Y Š?d ¸*‚Á,R @  ›Z Š?d ø*‚C½Œ @  ›[ ‘Š?d 8+‚$R”. @  ›\ ’Š?d x+‚¦Ãƒð @  ›] “Š?d ¸+‚´/ñ @  ›^ ”Š?d ø+‚@%8/ @  ›_ •Š?d 8,‚Y`­ @  ›` –Š?d x,‚Ûws @  ›a —Š?d ¸,‚'f8U @  ›b ˜Š?d ø,‚¥÷/‹ @  ›c ™Š?d 8-‚µ) @  ›d šŠ?d x-‚@‰¢÷ @  ›e ›Š?d ¸-‚$þö @  ›f œŠ?d ø-‚¦o( @  ›g Š?d 8.‚‡w 4 @  ›h žŠ?d x.‚æê @  ›i ŸŠ?d ¸.‚fü @  ›j  Š?d ø.‚ƒ÷" @  ›k ¡Š?d 8/‚ä…€ @  ›l ¢Š?d x/‚f‰’^ @  ›m £Š?d ¸/‚þ>_ @  ›n ¤Š?d ø/‚€o) @  ›o ¥Š?d 80‚/L @  ›p ¦Š?d x0‚­ÝÐ @  ›q §Š?d ¸0‚QºAö @  ›r ¨Š?d ø0‚Ó+V( @  ›s ©Š?d 81‚´ÄÌŠ @  ›t ªŠ?d x1‚6UÛT @  ›u «Š?d ¸1‚R"wU @  ›v ¬Š?d ø1‚г`‹ @  ›w ­Š?d 82‚ñ«r— @  ›x ®Š?d x2‚s:eI @  ›y ¯Š?d ¸2‚ê Hƒ @  ›z °Š?d ø2‚hœ_] @  ›{ ±Š?d 83‚sÅÿ @  ›| ²Š?d x3‚âÒ! @  ›} ³Š?d ¸3‚é•~  @  ›~ ´Š?d ø3‚kiþ @  › µŠ?d 84‚?àß @  ›€ ¶Š?d x4‚½q @  › ·Š?d ¸4‚A_' @  ›‚ ¸Š?d ø4‚ÇHù @  ›ƒ ¹Š?d 85‚¤hÒ[ @  ›„ ºŠ?d x5‚&ùÅ… @  ›… »Š?d ¸5‚BŽi„ @  ›† ¼Š?d ø5‚À~Z @  ›‡ ½Š?d 86‚álF @  ›ˆ ¾Š?d x6‚c–{˜ @  ›‰ ¿Š?d ¸6‚—FzŸ @  ›Š ÀŠ?d ø6‚×mA @  ›‹ ÁŠ?d 87‚r8÷ã @  ›Œ Š?d x7‚ð©à= @  › Ê?d ¸7‚”ÞL< @  ›Ž ÄŠ?d ø7‚O[â @  › ÅŠ?d 88‚3M[ @  › ÆŠ?d x8‚±ÜL @  ›‘ ÇŠ?d ¸8‚M»: @  ›’ ÈŠ?d ø8‚Ï*ä @  ›“ ÉŠ?d 89‚¨ÅŽF @  ›” ÊŠ?d x9‚*T™˜ @  ›• ËŠ?d ¸9‚N#5™ @  ›– ÌŠ?d ø9‚̲"G @  ›— ÍŠ?d 8:‚íª0[ @  ›˜ Ί?d x:‚o;'… @  ›™ ÏŠ?d ¸:‚ö O @  ›š Њ?d ø:‚t‘ @  ›› ÑŠ?d 8;‚r‡3 @  ›œ ÒŠ?d x;‚‘ãí @  › ÓŠ?d ¸;‚õ”<ì @  ›ž ÔŠ?d ø;‚w+2 @  ›Ÿ ÕŠ?d 8<‚n°s° @  ›  ÖŠ?d x<‚ì!dn @  ›¡ ׊?d ¸<‚F+H @  ›¢ ØŠ?d ø<‚’×<– @  ›£ ÙŠ?d 8=‚õ8¦4 @  ›¤ ÚŠ?d x=‚w©±ê @  ›¥ ÛŠ?d ¸=‚Þë @  ›¦ ÜŠ?d ø=‚‘O 5 @  ›§ ÝŠ?d 8>‚°W) @  ›¨ ÞŠ?d x>‚2Æ÷ @  ›© ߊ?d ¸>‚6Fá @  ›ª àŠ?d ø>‚´× ? @  ›« áŠ?d 8?‚Ó8– @  ›¬ âŠ?d x?‚Q©C @  ›­ ãŠ?duÐ@‚7 ¸?‚5Þ-B @  ›® äŠ?d ø?‚ŽˆæI @  ›¯åŠ?d P@‚\ÙÐH @  ›°æŠ?d @‚|,Ò¶ @  ›±çŠ?d Ð@‚"/ˆ° @  ›²èŠ?d A‚ògX @  ›³éŠ?d PA‚ÇQÌ @  ›´êŠ?d A‚ç¤2 @  ›µëŠ?d ÐA‚!·¾ @  ›¶ìŠ?d B‚¼óÒ @  ›·íŠ?d PB‚‚>»Ñ @  ›¸îŠ?d B‚¢Ë¹/ @  ›¹ïŠ?d ÐB‚™˜Å @  ›ºðŠ?d C‚IÐ - @  ›»ñŠ?d PC‚|æ ¹ @  ›¼òŠ?d C‚\G @  ›½óŠ?d ÐC‚š·f @  ›¾ôŠ?d D‚ƒNDi @  ›¿õŠ?d PD‚¯#þ¨ @  ›ÀöŠ?d D‚ÖüV @  ›Á÷Š?d ÐD‚ÑÕ¦P @  ›ÂøŠ?d E‚*¸ @  ›ÃùŠ?d PE‚4«+, @  ›ÄúŠ?d E‚^)Ò @  ›ÅûŠ?d ÐE‚ÒMó @  ›ÆüŠ?d F‚O 02 @  ›ÇýŠ?d PF‚qÄ•1 @  ›ÈþŠ?d F‚Q1—Ï @  ›ÉÿŠ?d ÐF‚e$‚v @  ›Ê‹?d G‚µlž @  ›Ë‹?d PG‚€Z  @  ›Ì‹?d G‚ ¯ ô @  ›Í‹?d ÐG‚f¼´Õ @  ›Î‹?d H‚RC8È @  ›Ï‹?d PH‚øèþ @  ›Ð ‹?d H‚áÚ¡Õ @  ›Ñ‹?d ÐH‚¿ÙûÓ @  ›Ò‹?d I‚o‘w; @  ›Ó ‹?d PI‚Z§v¯ @  ›Ô ‹?d I‚zRtQ @  ›Õ ‹?d ÐI‚¼AÍp @  ›Ö ‹?d J‚!m± @  ›× ‹?d PJ‚ÈȲ @  ›Ø‹?d J‚?=ÊL @  ›Ù‹?d ÐJ‚nò¦ @  ›Ú‹?d K‚Ô&~N @  ›Û‹?d PK‚áÚ @  ›Ü‹?d K‚Áå}$ @  ›Ý‹?d ÐK‚öÄ @  ›Þ‹?d L‚¸7  @  ›ß‹?d PL‚œÒ‹Y @  ›à‹?d L‚¼'‰§ @  ›á‹?d ÐL‚â$Ó¡ @  ›â‹?d€ M‚´:÷ð @  œ‹?d PM‚`M¾M @  œ‹?d M‚@¸¼³ @  œ‹?d ÐM‚Câþ @  œ‹?d N‚Þ¦^¾ @  œ‹?d PN‚.Ù¤Ç @  œ‹?d N‚,¦9 @  œ‹?d ÐN‚fzøu @  œ ‹?d O‚¶2t @  œ !‹?d PO‚FMŽä @  œ "‹?d O‚f¸Œ @  œ #‹?d ÐO‚eâÎÖ @  œ $‹?d P‚Û‡Ü @  œ,‹?d R‚¨z' @  œ-‹?d PR‚XÝd @  œ.‹?d R‚xðßš @  œ/‹?d ÐR‚¸  @  œ0‹?d S‚]Y4â @  œ1‹?d PS‚­&Λ @  œ2‹?d S‚ÓÌe @  œ3‹?d ÐS‚މީ @  œ4‹?d T‚—Ç}¦ @  œ5‹?d PT‚g¸‡ß @  œ6‹?d T‚GM…! @  œ7‹?d ÐT‚k[™  @  œ 8‹?d U‚»å @  œ!9‹?d PU‚Klïœ @  œ":‹?d U‚k™íb @  œ#;‹?d ÐU‚hï® @  œ$<‹?d V‚õ‡o @  œ%=‹?d PV‚øõ @  œ&>‹?d V‚% ÷è @  œ'?‹?d ÐV‚½ ¼µ @  œ(@‹?d W‚mC0] @  œ)A‹?d PW‚<Ê$ @  œ*B‹?d W‚½ÉÈÚ @  œ+C‹?d ÐW‚¾“Š @  œ,D‹?d X‚Šl  @  œ-E‹?d PX‚zür @  œ.F‹?d X‚ZæþŒ @  œ/G‹?d ÐX‚göÅ @  œ0H‹?d Y‚·¾Iø @  œ1I‹?d PY‚GÁ³ @  œ2J‹?d Y‚g4± @  œ3K‹?d ÐY‚dnó³ @  œ4L‹?d Z‚ù*Sr @  œ5M‹?d PZ‚ U©  @  œ6N‹?d Z‚) «õ @  œ7O‹?d ÐZ‚ÜAÌe @  œ8P‹?d [‚ @ @  œ9Q‹?d P[‚üvºô @  œ:R‹?d [‚܃¸  @  œ;S‹?d Ð[‚ßÙúÆ @  œ<T‹?d \‚Æ— É @  œ=U‹?d P\‚6èó° @  œ>V‹?d \‚ñN @  œ?W‹?d Ð\‚” ëð @  œ@X‹?d ]‚DDg @  œAY‹?d P]‚´;a @  œBZ‹?d ]‚”ΟŸ @  œC[‹?d Ð]‚—”ÝS @  œD\‹?d ^‚ Ð}’ @  œE]‹?d P^‚ú¯‡ë @  œF^‹?d ^‚ÚZ… @  œG_‹?d Ð^‚² ÛY @  œH`‹?d _‚bDW± @  œIa‹?d P_‚’;­È @  œJb‹?d _‚²Î¯6 @  œuÐ`‚Kc‹?d Ð_‚s= / @  œLd‹?d (`‚ÍÅ¿· @  œMe‹?d h`‚=ºEÎ @  œNf‹?d ¨`‚OG0 @  œOg‹?d è`‚ _|¬ @  œPh‹?d (a‚ððD @  œQi‹?d ha‚h = @  œRj‹?d ¨a‚ à @  œSk‹?d èa‚#ÇJ @  œTl‹?d (b‚¾ƒêÎ @  œUm‹?d hb‚Nü· @  œVn‹?d ¨b‚n I @  œWo‹?d èb‚›èuÙ @  œXp‹?d (c‚K ù1 @  œYq‹?d hc‚»ßH @  œZr‹?d ¨c‚›*¶ @  œ[s‹?d èc‚˜pCz @  œ\t‹?d (d‚>°u @  œ]u‹?d hd‚qAJ  @  œ^v‹?d ¨d‚Q´Hò @  œ_w‹?d èd‚}¢TÞ @  œ`x‹?d (e‚­êØ6 @  œay‹?d he‚]•"O @  œbz‹?d ¨e‚}` ± @  œc{‹?d èe‚~:b} @  œd|‹?d (f‚ã~¼ @  œe}‹?d hf‚8Å @  œf~‹?d ¨f‚3ô:; @  œg‹?d èf‚¶4%ô @  œh€‹?d (g‚f|© @  œi‹?d hg‚–Se @  œj‚‹?d ¨g‚¶öQ› @  œkƒ‹?d èg‚µ¬W @  œl„‹?d (h‚SŸJ @  œm…‹?d hh‚q,e3 @  œn†‹?d ¨h‚QÙgÍ @  œo‡‹?d èh‚lÉ\Q @  œpˆ‹?d (i‚¼Ð¹ @  œq‰‹?d hi‚Lþ*À @  œrŠ‹?d ¨i‚l (> @  œs‹‹?d èi‚oQjò @  œtŒ‹?d (j‚òÊ3 @  œu‹?d hj‚j0J @  œvŽ‹?d ¨j‚"Ÿ2´ @  œw‹?d èj‚×~U$ @  œx‹?d (k‚6ÙÌ @  œy‘‹?d hk‚÷I#µ @  œz’‹?d ¨k‚×¼!K @  œ{“‹?d èk‚Ôæc‡ @  œ|”‹?d (l‚ͨˆ @  œ}•‹?d hl‚=×jñ @  œ~–‹?d ¨l‚"h @  œ—‹?d èl‚|eB€ @  œ€˜‹?d (m‚¬-Îh @  œ™‹?d hm‚\R4 @  œ‚š‹?d ¨m‚|§6ï @  œƒ›‹?d èm‚ýt# @  œ„œ‹?d (n‚â¹Ôâ @  œ…‹?d hn‚Æ.› @  œ†ž‹?d ¨n‚23,e @  œ‡Ÿ‹?d èn‚Zer) @  œˆ ‹?d (o‚Š-þÁ @  œ‰¡‹?d ho‚zR¸ @  œŠ¢‹?d ¨o‚Z§F @  œ‹£‹?d èo‚YýDŠ @  œŒ¤‹?d (p‚ç#ø8 @  œ¥‹?d hp‚\A @  œŽ¦‹?d ¨p‚7©¿ @  œ§‹?d èp‚ ¹;# @  œ¨‹?d (q‚Úñ·Ë @  œ‘©‹?d hq‚*ŽM² @  œ’ª‹?d ¨q‚ {OL @  œ“«‹?d èq‚ ! € @  œ”¬‹?d (r‚”e­A @  œ•­‹?d hr‚dW8 @  œ–®‹?d ¨r‚DïUÆ @  œ—¯‹?d èr‚±2V @  œ˜°‹?d (s‚aF¾¾ @  œ™±‹?d hs‚‘9DÇ @  œš²‹?d ¨s‚±ÌF9 @  œ›³‹?d ès‚²–õ @  œœ´‹?d (t‚«Ø÷ú @  œµ‹?d ht‚[§ ƒ @  œž¶‹?d ¨t‚{R} @  œŸ·‹?d èt‚WDQ @  œ ¸‹?d (u‚‡ Ÿ¹ @  œ¡¹‹?d hu‚wseÀ @  œ¢º‹?d ¨u‚W†g> @  œ£»‹?d èu‚TÜ%ò @  œ¤¼‹?d (v‚ɘ…3 @  œ¥½‹?d hv‚9çJ @  œ¦¾‹?d ¨v‚}´ @  œ§¿‹?d èv‚6é @  œ¨À‹?d (w‚Q\º @  œ©Á‹?d hw‚¡#@x @  œª‹?d ¨w‚ÖB† @  œ«Ë?d èw‚‚ŒJ @  œ¬Ä‹?d (x‚¶sŒW @  œ­Å‹?d hx‚F v. @  œ®Æ‹?d ¨x‚fùtÐ @  œ¯Ç‹?d èx‚[éOL @  œ°È‹?d (y‚‹¡Ã¤ @  œ±É‹?d hy‚{Þ9Ý @  œ²Ê‹?d ¨y‚[+;# @  œ³Ë‹?d èy‚Xqyï @  œ´Ì‹?d (z‚Å5Ù. @  œµÍ‹?d hz‚5J#W @  œ¶΋?d ¨z‚¿!© @  œ·Ï‹?d èz‚à^F9 @  œ¸Ћ?d ({‚0ÊÑ @  œ¹Ñ‹?d h{‚Ài0¨ @  œºÒ‹?d ¨{‚àœ2V @  œ»Ó‹?d è{‚ãÆpš @  œ¼Ô‹?d (|‚úˆƒ• @  œ½Õ‹?d h|‚ ÷yì @  œ¾Ö‹?d ¨|‚*{ @  œ¿׋?d è|‚¨a¬ @  œÀØ‹?d (}‚x[íD @  œÁÙ‹?d h}‚ˆ$= @  œÂÚ‹?d ¨}‚¨Ñà @  œÃÛ‹?d è}‚«‹W @  œÄÜ‹?d (~‚6Ï÷Î @  œÅÝ‹?d h~‚ư · @  œÆÞ‹?d ¨~‚æEI @  œÇß‹?d è~‚ŽQ @  œÈà‹?d (‚^[Ýí @  œÉá‹?d h‚®$'” @  œÊâ‹?d ¨‚uЀ‚'ŽÑ%j @  œËã‹?d è‚O"€s @  œÌä‹?d @€‚!œb @  œÍå‹?d €€‚s‡^ @  œÎæ‹?d À€‚ñš€ @  œÏç‹?d ‚žß:* @  œÐè‹?d @‚N-ô @  œÑé‹?d €‚NU­ @  œÒê‹?d À‚ÌÄÕs @  œÓë‹?d ‚‚ÐK   @  œÔì‹?d @‚‚RÚ7~ @  œÕí‹?d €‚‚ÁØ' @  œÖî‹?d À‚‚‚PÏù @  œ×ï‹?d ƒ‚%h3_ @  œØð‹?d @ƒ‚§ù$ @  œÙñ‹?d €ƒ‚õâËØ @  œÚò‹?d Àƒ‚wsÜ @  œÛó‹?d „‚ïöz @  œÜô‹?d @„‚mgmÅ @  œÝõ‹?d €„‚?|‚œ @  œÞö‹?d À„‚½í•B @  œß÷‹?d …‚Ã"X @  œàø‹?d @…‚A³† @  œáù‹?d €…‚¨êß @  œâú‹?d€ À…‚åúá§ @  û‹?d †‚4\] @  ü‹?d @†‚š¥Kƒ @  ý‹?d €†‚ ÷_7 @  þ‹?d À†‚fHé @  ÿ‹?d ‡‚Õ£ùð @  Œ?d @‡‚W2î. @  Œ?d €‡‚Ë›^  @  Œ?d À‡‚I IÓ @   Œ?d ˆ‚9wk1 @   Œ?d @ˆ‚»æ|ï @   Œ?d €ˆ‚,´h[ @   Œ?d Àˆ‚®%… @   Œ?d ‰‚¢ÿ¾µ @  Œ?d @‰‚ n©k @   Œ?d €‰‚f'¨ @   Œ?d À‰‚“÷0v @   Œ?d Š‚J1>H @   Œ?d @Š‚È )– @   Œ?d €Š‚_ò=" @  Œ?d ÀŠ‚Ýc*ü @  Œ?d ‹‚´é‰  @  Œ?d @‹‚6xžþ @  Œ?d €‹‚ªÑ.Ý @  Œ?d À‹‚(@9 @  Œ?d Œ‚uŒdó @  Œ?d @Œ‚÷s- @  Œ?d €Œ‚`Og™ @  Œ?d ÀŒ‚âÞpG @  Œ?d ‚î±w @  Œ?d @‚l•¦© @  Œ?d €‚L›Ú @   Œ?d À‚Î  @  !Œ?d Ž‚Ì: @  "Œ?d @Ž‚•]ä @  #Œ?d €Ž‚P @  $Œ?d ÀŽ‚€žŽ @  %Œ?d ‚t£˜Ž @  & Œ?d @‚ö2P @  '!Œ?d €‚j›?s @  ("Œ?d À‚è (­ @  )#Œ?d ‚V:à @  *$Œ?d @‚Ç-> @  +%Œ?d €‚•9Š @  ,&Œ?d À‚….T @  -'Œ?d ‘‚‰Þïd @  .(Œ?d @‘‚ Oøº @  /)Œ?d €‘‚:Gvy @  0*Œ?d À‘‚¸Öa§ @  1+Œ?d ’‚ao™ @  2,Œ?d @’‚ãxG @  3-Œ?d €’‚tÓló @  4.Œ?d À’‚öB{- @  5/Œ?d “‚ŸÈØñ @  60Œ?d @“‚YÏ/ @  71Œ?d €“‚ð  @  82Œ?d À“‚ahÒ @  93Œ?d ”‚^­5" @  :4Œ?d @”‚Ü<"ü @  ;5Œ?d €”‚Kn6H @  <6Œ?d À”‚Éÿ!– @  =7Œ?d •‚Å%ঠ@  >8Œ?d @•‚G´÷x @  ?9Œ?d €•‚ɽX™ @  @:Œ?d À•‚K,OG @  A;Œ?d –‚’êAy @  B<Œ?d @–‚{V§ @  C=Œ?d €–‚‡)B @  D>Œ?d À–‚¸UÍ @  E?Œ?d —‚ÕÚÜ @  F@Œ?d @—‚ƒDÍ @  GAŒ?d €—‚í}! @  HBŒ?d À—‚|jÿ @  ICŒ?d ˜‚íH @  JDŒ?d @˜‚o_à @  KEŒ?d €˜‚øÂKw @  LFŒ?d À˜‚zS\© @  MGŒ?d ™‚v‰™ @  NHŒ?d @™‚ôŠG @  OIŒ?d €™‚Å„ @  PJŒ?d À™‚GZ @  QKŒ?d š‚žGd @  RLŒ?d @š‚Ö º @  SMŒ?d €š‚‹„ @  TNŒ?d Àš‚  Ð @  UOŒ?d ›‚`Ÿª  @  VPŒ?d @›‚â½Ò @  WQŒ?d €›‚~§ ñ @  XRŒ?d À›‚ü6/ @  YSŒ?d œ‚¡úGß @  ZTŒ?d @œ‚#kP @  [UŒ?d €œ‚´9Dµ @  \VŒ?d Àœ‚6¨Sk @  ]WŒ?d ‚:r’[ @  ^XŒ?d @‚¸ã…… @  _YŒ?d €‚˜í,ö @  `ZŒ?d À‚|;( @  a[Œ?d ž‚ú5 @  b\Œ?d @ž‚A+"È @  c]Œ?d €ž‚Öy6| @  d^Œ?d Àž‚Tè!¢ @  e_Œ?d Ÿ‚ Õ»¢ @  f`Œ?d @Ÿ‚"D¬| @  gaŒ?d €Ÿ‚¾í_ @  hbŒuР‚?d ÀŸ‚<|  @  icŒ?d  ‚tud @  j€dŒ?d X ‚öäº @  k€eŒ?d ˜ ‚a¶  @  l€fŒ?d Ø ‚ã'Ð @  m€gŒ?d ¡‚ïýÝà @  n€hŒ?d X¡‚mlÊ> @  o€iŒ?d ˜¡‚\dDý @  p€jŒ?d Ø¡‚ÞõS# @  q€kŒ?d ¢‚3] @  r€lŒ?d X¢‚…¢Jà @  s€mŒ?d ˜¢‚ð^w @  t€nŒ?d Ø¢‚aI© @  u€oŒ?d £‚ùëêu @  v€pŒ?d X£‚{zý« @  w€qŒ?d ˜£‚çÓMˆ @  x€rŒ?d Ø£‚eBZV @  y€sŒ?d ¤‚8ަ @  z€tŒ?d X¤‚ºx @  {€uŒ?d ˜¤‚-MÌ @  |€vŒ?d ؤ‚¯Ü @  }€wŒ?d ¥‚£Ò" @  ~€xŒ?d X¥‚!—Åü @  €yŒ?d ˜¥‚LÈZ, @  €€zŒ?d Ø¥‚ÎYMò @  €{Œ?d ¦‚ŸCÌ @  ‚€|Œ?d X¦‚•T @  ƒ€}Œ?d ˜¦‚\@¦ @  „€~Œ?d ئ‚€ÍWx @  …€Œ?d §‚™fŒû @  †€€Œ?d X§‚÷›% @  ‡€Œ?d ˜§‚‡^+ @  ˆ€‚Œ?d ا‚Ï<Ø @  ‰€ƒŒ?d ¨‚u²: @  Š€„Œ?d X¨‚÷# ä @  ‹€…Œ?d ˜¨‚`qP @  Œ€†Œ?d ب‚âà Ž @  €‡Œ?d ©‚î:˾ @  Ž€ˆŒ?d X©‚l«Ü` @  €‰Œ?d ˜©‚]£R£ @  €ŠŒ?d Ø©‚ß2E} @  ‘€‹Œ?d ª‚ôKC @  ’€ŒŒ?d Xª‚„e\ @  “€Œ?d ˜ª‚7H) @  ”€ŽŒ?d ت‚‘¦_÷ @  •€Œ?d «‚ø,ü+ @  –€Œ?d X«‚z½ëõ @  —€‘Œ?d ˜«‚æ[Ö @  ˜€’Œ?d Ø«‚d…L @  ™€“Œ?d ¬‚9Iø @  š€”Œ?d X¬‚»Ø& @  ›€•Œ?d ˜¬‚,Š’ @  œ€–Œ?d ج‚®L @  €—Œ?d ­‚¢ÁÄ| @  ž€˜Œ?d X­‚ PÓ¢ @  Ÿ€™Œ?d ˜­‚^zÑ @   €šŒ?d Ø­‚‚Ïm @  ¡€›Œ?d ®‚[ c1 @  ¢€œŒ?d X®‚Ù˜tï @  £€Œ?d ˜®‚NÊ`[ @  ¤€žŒ?d Ø®‚Ì[w… @  ¥€ŸŒ?d ¯‚8fí… @  ¦€ Œ?d X¯‚º÷ú[ @  §€¡Œ?d ˜¯‚&^Jx @  ¨€¢Œ?d د‚¤Ï]¦ @  ©€£Œ?d °‚^“Oë @  ª€¤Œ?d X°‚ÜX5 @  «€¥Œ?d ˜°‚KPL @  ¬€¦Œ?d ذ‚ÉÁ[_ @  ­€§Œ?d ±‚Åšo @  ®€¨Œ?d X±‚Gб @  ¯€©Œ?d ˜±‚v‚r @  °€ªŒ?d ر‚ô¬ @  ±€«Œ?d ²‚-Õ’ @  ²€¬Œ?d X²‚¯D L @  ³€­Œ?d ˜²‚8ø @  ´€®Œ?d ز‚º‡& @  µ€¯Œ?d ³‚Ó ­ú @  ¶€°Œ?d X³‚Qœº$ @  ·€±Œ?d ˜³‚Í5  @  ¸€²Œ?d س‚O¤Ù @  ¹€³Œ?d ´‚h@) @  º€´Œ?d X´‚ùW÷ @  »€µŒ?d ˜´‚«CC @  ¼€¶Œ?d Ø´‚…:T @  ½€·Œ?d µ‚‰à•­ @  ¾€¸Œ?d Xµ‚ q‚s @  ¿€¹Œ?d ˜µ‚…x-’ @  À€ºŒ?d ص‚é:L @  Á€»Œ?d ¶‚Þ/4r @  €¼Œ?d X¶‚\¾#¬ @  À½Œ?d ˜¶‚Ëì7 @  Ä€¾Œ?d ض‚I} Æ @  Å€¿Œ?d ·‚M¯× @  Æ€ÀŒ?d X·‚ϸ  @  Ç€ÁŒ?d ˜·‚S(* @  È€ÂŒ?d Ø·‚ѹô @  É€ÃŒ?d ¸‚¡Ä= @  Ê€ÄŒ?d X¸‚#U*È @  Ë€ÅŒ?d ˜¸‚´>| @  Ì€ÆŒ?d ظ‚6–)¢ @  Í€ÇŒ?d ¹‚:Lè’ @  ΀ÈŒ?d X¹‚¸ÝÿL @  Ï€ÉŒ?d ˜¹‚‰Õq @  ЀÊŒ?d ع‚ DfQ @  Ñ€ËŒ?d º‚Ò‚ho @  Ò€ÌŒ?d Xº‚P± @  Ó€ÍŒ?d ˜º‚ÇAk @  Ô€ÎŒ?d غ‚EÐ|Û @  Õ€ÏŒ?d »‚,Zß @  Ö€ÐŒ?d X»‚®ËÈÙ @  ×€ÑŒ?d ˜»‚2bxú @  Ø€ÒŒ?d Ø»‚°óo$ @  Ù€ÓŒ?d ¼‚í?2Ô @  Ú€ÔŒ?d X¼‚o®%  @  Û€ÕŒ?d ˜¼‚øü1¾ @  Ü€ÖŒ?d ؼ‚zm&` @  Ý€׌?d ½‚v·çP @  Þ€ØŒ?d X½‚ô&ðŽ @  ߀ÙŒ?d ˜½‚Ô(Yý @  à€ÚŒ?d ؽ‚V¹N# @  á€ÛŒ?d ¾‚@ @  â€ÜŒ?d€ X¾‚Ì© Ã @  ž€ÝŒ?d ˜¾‚ººü^ @  ž€ÞŒ?d ؾ‚8+ë€ @  ž€ߌ?d ¿‚ _Šm @  ž€àŒ?d X¿‚‹Î³ @  ž€áŒ?d ˜¿‚ÙÕrê @uÐÀ‚  ž€âŒ?d Ø¿‚&ÄH @  žãŒ?d 0À‚ȶŸ @  žäŒ?d pÀ‚J•¡A @  ž åŒ?d °À‚ŽN @  ž æŒ?d ðÀ‚šYÆ @  ž çŒ?d 0Á‚SŒc @  ž èŒ?d pÁ‚ÑtÅ @  ž éŒ?d °Á‚ƒ›œ @  žêŒ?d ðÁ‚—ŒB @  žëŒ?d 0‚»Bãæ @  žìŒ?d p‚9Óô8 @  žíŒ?d °Â‚kÈa @  žîŒ?d ð‚éY ¿ @  žïŒ?d 0ÂEšTŽ @  žðŒ?d pÂÇ CP @  žñŒ?d °Ã‚•¬  @  žòŒ?d ðÂ»× @  žóŒ?d 0Ä‚„ÿ¹] @  žôŒ?d pÄ‚n®ƒ @  žõŒ?d °Ä‚TuAÚ @  žöŒ?d ðÄ‚ÖäV @  ž÷Œ?d 0Å‚wlÙ @  žøŒ?d pÅ‚æ{ @  žùŒ?d °Å‚Ïý”^ @  žúŒ?d ðÅ‚Mlƒ€ @  žûŒ?d 0Æ‚æ¿Ë” @  ž üŒ?d pÆ‚d.ÜJ @  ž!ýŒ?d °Æ‚653 @  ž"þŒ?d ðÆ‚´¤$Í @  ž#ÿŒ?d 0Ç‚!Q¯ @  ž$?d pÇ‚•°Fq @  ž%?d °Ç‚Ç«©( @  ž&?d ðÇ‚E:¾ö @  ž'?d 0È‚ûõÃn @  ž(?d pÈ‚ydÔ° @  ž)?d °È‚+;é @  ž*?d ðÈ‚©î,7 @  ž+?d 0É‚`}ê @  ž,?d pÉ‚âì4 @  ž- ?d °É‚°÷îm @  ž. ?d ðÉ‚2fù³ @  ž/ ?d 0Ê‚ˆ³– @  ž0 ?d pÊ‚ "É @  ž1 ?d °Ê‚X9n @  ž2?d ðʂڨyN @  ž3?d 0Ë‚vk! @  ž4?d pË‚ôú6¡ @  ž5?d °Ë‚¦áÙø @  ž6?d ðË‚$pÎ& @  ž7?d 0Ì‚·̬ @  ž8?d pÌ‚5ŸÛr @  ž9?d °Ì‚g„4+ @  ž:?d ðÌ‚å#õ @  ž;?d 0Í‚,†( @  ž<?d pÍ‚®ö @  ž=?d °Í‚ü ᯠ@  ž>?d ðÍ‚~öq @  ž??d 0΂{I¸÷ @  ž@?d p΂ùد) @  žA?d °Î‚«Ã@p @  žB?d ð΂)RW® @  žC?d 0Ï‚&6C @  žD ?d pÏ‚š·! @  žE!?d °Ï‚ȬÎÄ @  žF"?d ðÏ‚J=Ù @  žG#?d 0Ђ~Ó”- @  žH$?d pЂüBƒó @  žI%?d °Ð‚®Ylª @  žJ&?d ðЂ,È{t @  žK'?d 0Ñ‚å[A© @  žL(?d pÑ‚gÊVw @  žM)?d °Ñ‚5ѹ. @  žN*?d ðÑ‚·@®ð @  žO+?d 0Ò‚ •ÁT @  žP,?d pÒ‚ÖŠ @  žQ-?d °Ò‚Ý9Ó @  žR.?d ðÒ‚_Ž.  @  žS/?d 0Ó‚óMv< @  žT0?d pÓ‚qÜaâ @  žU1?d °Ó‚#ÇŽ» @  žV2?d ðÓ‚¡V™e @  žW3?d 0Ô‚2(›ï @  žX4?d pÔ‚°¹Œ1 @  žY5?d °Ô‚â¢ch @  žZ6?d ðÔ‚`3t¶ @  ž[7?d 0Õ‚© Nk @  ž\8?d pÕ‚+1Yµ @  ž]9?d °Õ‚y*¶ì @  ž^:?d ðÕ‚û»¡2 @  ž_;?d 0Ö‚Phé& @  ž`<?d pÖ‚Òùþø @  ža=?d °Ö‚€â¡ @  žb>?d ðÖ‚s @  žc??d 0ׂÃWrƒ @  žd@?d pׂAÆe] @  žeA?d °×‚ÝŠ @  žfB?d ðׂ‘LÚ @  žgC?d 0Ø‚/ƒàB @  žhD?d pØ‚­÷œ @  žiE?d °Ø‚ÿ Å @  žjF?d ðØ‚}˜ @  žkG?d 0Ù‚´ 5Æ @  žlH?d pÙ‚6š" @  žmI?d °Ù‚dÍA @  žnJ?d ðÙ‚æÚŸ @  žoK?d 0Ú‚\ŵ; @  žpL?d pÚ‚ÞT¢å @  žqM?d °Ú‚ŒOM¼ @  žrN?d ðÚ‚ÞZb @  žsO?d 0Û‚¢S @  žtP?d pÛ‚ Œ @  žuQ?d °Û‚r—úÔ @  žvR?d ðÛ‚ðí  @  žwS?d 0Ü‚cxï€ @  žxT?d pÜ‚áéø^ @  žyU?d °Ü‚³ò @  žzV?d ðÜ‚1cÙ @  ž{W?d 0Ý‚øð: @  ž|X?d pÝ‚za-Ú @  ž}Y?d °Ý‚(zƒ @  ž~Z?d ðÝ‚ªëÕ] @  ž[?d 0Þ‚Li«ê @  ž€\?d pÞ‚Îø¼4 @  ž]?d °Þ‚œãSm @  ž‚^?d ðÞ‚rD³ @  žƒ_?d 0ß‚/%^ @  ž„`?d pß‚­—2€ @  ž…a?d uÐà‚/°ß‚ÿŒÝÙ @  ž†b?d ðß‚}Ê @  ž‡c?d Hà‚î‰et @  žˆd?d ˆà‚Î|gŠ @  ž‰e?d Èà‚>ó @  žŠf?d á‚îK @  ž‹g?d Há‚u°ð @  žŒh?d ˆá‚Uô² @  ži?d Èá‚¥‹Hw @  žŽj?d â‚8Ïè¶ @  žk?d Hâ‚Ï0  @  žl?d ˆâ‚½:2ó @  ž‘m?d Èâ‚MEÈŠ @  ž’n?d ã‚ Db @  ž“o?d Hã‚c‡e @  ž”p?d ˆã‚Câ…› @  ž•q?d Èコâ @  ž–r?d 䂪ӌí @  ž—s?d Hä‚¢rj¶ @  ž˜t?d ˆä‚‚‡hH @  ž™u?d Èä‚rø’1 @  žšv?d å‚¢°Ù @  ž›w?d Hå‚9ú¿2 @  žœx?d ˆå‚½Ì @  žy?d Èå‚épGµ @  žžz?d æ‚t4çt @  žŸ{?d Hæ‚À2 @  ž |?d ˆæ‚àÇ @  ž¡}?d Èæ‚¸àø @  ž¢~?d ç‚Àðl @  ž£?d Hç‚NË×H @  ž¤€?d ˆç‚n>Õ¶ @  ž¥?d È炞A/Ï @  ž¦‚?d 肪¾£Ò @  ž§ƒ?d Hè‚¢E‰ @  ž¨„?d ˆè‚‚êGw @  ž©…?d Èè‚r•½ @  žª†?d é‚¢Ý1æ @  ž«‡?d Hé‚9—  @  ž¬ˆ?d ˆé‚b’ó @  ž­‰?d Èé‚éhŠ @  ž®Š?d ê‚tYÈK @  ž¯‹?d Hê‚ÑYð @  ž°Œ?d ˆê‚ñ¬ @  ž±?d Èê‚Óèw @  ž²Ž?d ë‚Ñ›dŸ @  ž³?d Hë‚/§˜ @  ž´?d ˆë‚t¥f @  žµ‘?d Èë‚ÿ _ @  ž¶’?d ì‚æE¬ @  ž·“?d Hì‚îäJK @  ž¸”?d ˆì‚ÎHµ @  ž¹•?d Èì‚>n²Ì @  žº–?d í‚î&>$ @  ž»—?d Hí‚ulŸÏ @  ž¼˜?d ˆí‚U™1 @  ž½™?d Èí‚¥ægH @  ž¾š?d î‚8¢Ç‰ @  ž¿›?d Hî‚"£> @  žÀœ?d ˆî‚V<î @  žÁ?d Èî‚ò)Æ— @  žÂž?d ï‚"aJ @  žÃŸ?d Hï‚A̰¤ @  žÄ ?d ˆï‚a9²Z @  žÅ¡?d Èï‚‘FH# @  žÆ¢?d ð‚/˜ô‘ @  žÇ£?d Hð‚'9Ê @  žÈ¤?d ˆð‚Ì4 @  žÉ¥?d Èð‚÷³êM @  žÊ¦?d ñ‚'ûf¥ @  žË§?d Hñ‚¼±ÇN @  žÌ¨?d ˆñ‚œDŰ @  žÍ©?d Èñ‚l;?É @  žÎª?d ò‚ñŸ @  žÏ«?d Hò‚TG³ @  žÐ¬?d ˆò‚tŠEM @  žÑ­?d Èò‚„õ¿4 @  žÒ®?d ó‚T½3Ü @  žÓ¯?d H󂪧ðÛ @  žÔ°?d ˆó‚ŠRò% @  žÕ±?d Èó‚z-\ @  žÖ²?d ô‚ccûS @  ž×³?d Hô‚k @  žØ´?d ˆô‚K7ö @  žÙµ?d Èô‚»Hå @  žÚ¶?d õ‚kig @  žÛ·?d Hõ‚ðJÈŒ @  žÜ¸?d ˆõ‚пÊr @  žÝ¹?d Èõ‚ À0  @  žÞº?d ö‚½„Ê @  žß»?d Hö‚ ‚oÁ @  žà¼?d ˆö‚)wm? @  žá½?d Èö‚Ù—F @  žâ¾?d€ ÷‚}ƒ @  Ÿ¿?d H÷‚? ë @  ŸÀ?d ˆ÷‚/Ê¢ @  ŸÁ?d È÷‚ü£ @  ŸÂ?d ø‚./œ @  ŸÃ?d Hø‚è–½ @  ŸÄ?d ˆø‚Èå”C @  ŸÅ?d Èø‚ö(1@ @  ŸÆ?d ù‚&`½¨ @  Ÿ Ç?d Hù‚xcç® @  Ÿ È?d ˆù‚X–åP @  Ÿ É?d Èù‚m äÄ @  Ÿ Ê?d ú‚ðäD @  Ÿ Ë?d Hú‚6÷ý$ @  ŸÌ?d ˆú‚ÿÚ @  ŸÍ?d Èú‚…nd9 @  ŸÎ?d û‚U&èÑ @  ŸÏ?d Hû‚nuÐ; @  ŸÐ?d ˆû‚N€ÒÅ @  ŸÑ?d Èû‚{¶ÓQ @  ŸÒ?d ü‚bø ^ @  ŸÓ?d Hü‚¤ë™ @  ŸÔ?d ˆü‚„› @  ŸÕ?d Èü‚ºÓ>‚ @  ŸÖ?d ý‚j›²j @  Ÿ×?d Hý‚4˜èl @  ŸØ?d ˆý‚mê’ @  ŸÙ?d Èý‚![ë @  ŸÚ?d þ‚¼KÇ @  ŸÛ?d Hþ‚z òæ @  ŸÜ?d ˆþ‚Zùð @  ŸÝ?d Èþ‚Ø“LK @  Ÿ Þ?d ÿ‚ÛÀ£ @  Ÿ!ß?d Hÿ‚®?Á• @  Ÿ"à?d ˆÿ‚ŽÊÃk @  Ÿ#uЃá?d Èÿ‚»üÂÿ @  Ÿ$â?d ƒôHê @  Ÿ%ã?d `ƒ2[S/ @  Ÿ&ä?d  ƒ®QÑ @  Ÿ'å?d àƒ,côÒ @  Ÿ(æ?d ƒü+x: @  Ÿ)ç?d `ƒ¢("< @  Ÿ*è?d  ƒ‚Ý Â @  Ÿ+é?d àƒ·ë!V @  Ÿ,ê?d ƒ*¯— @  Ÿ-ë?d `ƒì¼8¶ @  Ÿ.ì?d  ƒÌI:H @  Ÿ/í?d àƒ_%¡« @  Ÿ0î?d ƒm-C @  Ÿ1ï?d `ƒ´>© @  Ÿ2ð?d  ƒ”ËW @  Ÿ3ñ?d àƒ¡ýà @  Ÿ4ò?d ƒ¸³åÌ @  Ÿ5ó?d `ƒ~ \í @  Ÿ6ô?d  ƒ^U^ @  Ÿ7õ?d àƒ`˜û @  Ÿ8ö?d ƒ°Ðwø @  Ÿ9÷?d `ƒîÓ-þ @  Ÿ:ø?d  ƒÎ&/ @  Ÿ;ù?d àƒû.” @  Ÿ<ú?d ƒfTŽU @  Ÿ=û?d `ƒ G7t @  Ÿ>ü?d  ƒ€²5Š @  Ÿ?ý?d àƒ¬ßK @  Ÿ@þ?d ƒ|—£ @  ŸAÿ?d `ƒú #? @  ŸBŽ?d  ƒÚU!Á @  ŸCŽ?d àƒïc U @  ŸDŽ?d ƒÛœ¬H @  ŸEŽ?d `ƒi @  ŸFŽ?d  ƒ=z— @  ŸGŽ?d àƒ·²” @  ŸHŽ?d ƒÓÿ>| @  ŸIŽ?d ` ƒüdz @  ŸJŽ?d   ƒ­ f„ @  ŸK Ž?d à ƒ˜?g @  ŸL Ž?d ƒ{ÇÑ @  ŸM Ž?d ` ƒÃh~ð @  ŸN Ž?d   ƒã| @  ŸO Ž?d à ƒpñçí @  ŸPŽ?d ƒ ¹k @  ŸQŽ?d ` ƒ›êSï @  ŸRŽ?d   ƒ»Q @  ŸSŽ?d à ƒŽ)P… @  ŸTŽ?d ƒ—g£Š @  ŸUŽ?d ` ƒQt« @  ŸVŽ?d   ƒqU @  ŸWŽ?d à ƒOL½V @  ŸXŽ?d ƒŸ1¾ @  ŸYŽ?d ` ƒÁk¸ @  ŸZŽ?d   ƒáòiF @  Ÿ[Ž?d à ƒÔÄhÒ @  Ÿ\Ž?d ƒI€È @  Ÿ]Ž?d `ƒ“q2 @  Ÿ^Ž?d  ƒ¯fsÌ @  Ÿ_Ž?d àƒ- ÏŸ @  Ÿ`Ž?d ƒýDCw @  ŸaŽ?d `ƒ[ BA @  Ÿb Ž?d  ƒ{U@¿ @  Ÿc!Ž?d àƒNcA+ @  Ÿd"Ž?d ƒð½ý™ @  Ÿe#Ž?d `ƒ6®D¸ @  Ÿf$Ž?d  ƒ[FF @  Ÿg%Ž?d àƒ(–ãE @  Ÿh&Ž?d ƒøÞo­ @  Ÿi'Ž?d `ƒ¦Ý5« @  Ÿj(Ž?d  ƒ†(7U @  Ÿk)Ž?d àƒ³6Á @  Ÿl*Ž?d ƒ.Z– @  Ÿm+Ž?d `ƒèI/! @  Ÿn,Ž?d  ƒȼ-ß @  Ÿo-Ž?d àƒ[ж< @  Ÿp.Ž?d ƒ‹˜:Ô @  Ÿq/Ž?d `ƒ°Ë> @  Ÿr0Ž?d  ƒ>À @  Ÿs1Ž?d àƒ¥T @  Ÿt2Ž?d ƒ¼Fò[ @  Ÿu3Ž?d `ƒzUKz @  Ÿv4Ž?d  ƒZ I„ @  Ÿw5Ž?d àƒdmì‡ @  Ÿx6Ž?d ƒ´%`o @  Ÿy7Ž?d `ƒê&:i @  Ÿz8Ž?d  ƒÊÓ8— @  Ÿ{9Ž?d àƒÿå9 @  Ÿ|:Ž?d ƒb¡™Â @  Ÿ};Ž?d `ƒ¤² ã @  Ÿ~<Ž?d  ƒ„G" @  Ÿ=Ž?d àƒK|¨í @  Ÿ€>Ž?d ƒ›4$ @  Ÿ?Ž?d `ƒÍ€0" @  Ÿ‚@Ž?d  ƒíu2Ü @  ŸƒAŽ?d àƒØC3H @  Ÿ„BŽ?d ƒ켿U @  Ÿ…CŽ?d `ƒ*¯t @  Ÿ†DŽ?d  ƒ ZŠ @  Ÿ‡EŽ?d àƒ4—¡‰ @  ŸˆFŽ?d ƒäß-a @  Ÿ‰GŽ?d `ƒºÜwg @  ŸŠHŽ?d  ƒš)u™ @  Ÿ‹IŽ?d àƒ¯t  @  ŸŒJŽ?d ƒ2[ÔÌ @  ŸKŽ?d `ƒôHmí @  ŸŽLŽ?d  ƒÔ½o @  ŸMŽ?d àƒGÑôð @  ŸNŽ?d ƒ—™x @  Ÿ‘OŽ?d `ƒ¬Ê@ò @  Ÿ’PŽ?d  ƒŒ?B  @  Ÿ“QŽ?d àƒ¹ C˜ @  Ÿ”RŽ?d ƒ G°— @  Ÿ•SŽ?d `ƒfT ¶ @  Ÿ–TŽ?d  ƒF¡ H @  Ÿ—UŽ?d àƒxl®K @  Ÿ˜VŽ?d ƒ¨$"£ @  Ÿ™WŽ?d `ƒö'x¥ @  ŸšXŽ?d  ƒÖÒz[ @  Ÿ›YŽ?d àƒãä{Ï @  ŸœZŽ?d ƒ~ Û @  Ÿ[Ž?d `ƒ¸³b/ @  Ÿž\Ž?d  ƒ˜F`Ñ @  ŸŸ]Ž?d àƒ,Ü‚ @  Ÿ ^Ž?d ƒÊdPj @  Ÿ¡_Ž?d `ƒl€Q\ @  Ÿ¢`Ž?d  ƒLuS¢uÐ ƒ @  Ÿ£aŽ?d àƒyCR6 @  Ÿ¤bŽ?d 8 ƒHŒP @  Ÿ¥cŽ?d x ƒÎ[5q @  Ÿ¦dŽ?d ¸ ƒî®7 @  Ÿ§eŽ?d ø ƒÐc’Œ @  Ÿ¨fŽ?d 8!ƒ+d @  Ÿ©gŽ?d x!ƒ^(Db @  ŸªhŽ?d ¸!ƒ~ÝFœ @  Ÿ«iŽ?d ø!ƒKëG @  Ÿ¬jŽ?d 8"ƒÖ¯çÉ @  Ÿ­kŽ?d x"ƒ¼^è @  Ÿ®lŽ?d ¸"ƒ0I\ @  Ÿ¯mŽ?d ø"ƒ£%Çõ @  Ÿ°nŽ?d 8#ƒsmK @  Ÿ±oŽ?d x#ƒH>s÷ @  Ÿ²pŽ?d ¸#ƒhËq  @  Ÿ³qŽ?d ø#ƒ]ýp @  Ÿ´rŽ?d 8$ƒD³ƒ’ @  ŸµsŽ?d x$ƒ‚ :³ @  Ÿ¶tŽ?d ¸$ƒ¢U8M @  Ÿ·uŽ?d ø$ƒœ˜N @  Ÿ¸vŽ?d 8%ƒLЦ @  Ÿ¹wŽ?d x%ƒÓK  @  ŸºxŽ?d ¸%ƒ2&I^ @  Ÿ»yŽ?d ø%ƒHÊ @  Ÿ¼zŽ?d 8&ƒšTè  @  Ÿ½{Ž?d x&ƒ\GQ* @  Ÿ¾|Ž?d ¸&ƒ|²SÔ @  Ÿ¿}Ž?d ø&ƒPßé @  ŸÀ~Ž?d 8'ƒ€—eý @  ŸÁŽ?d x'ƒËå%H @  ŸÂ€Ž?d ¸'ƒë'¶ @  ŸÃŽ?d ø'ƒÞ&&" @  ŸÄ‚Ž?d 8(ƒêÙª? @  ŸÅƒŽ?d x(ƒ,Ê @  ŸÆ„Ž?d ¸(ƒ ?à @  ŸÇ…Ž?d ø(ƒ2ò´ã @  ŸÈ†Ž?d 8)ƒâº8  @  ŸÉ‡Ž?d x)ƒ¼¹b  @  ŸÊˆŽ?d ¸)ƒœL`ó @  ŸË‰Ž?d ø)ƒ©zag @  ŸÌŠŽ?d 8*ƒ4>Á¦ @  ŸÍ‹Ž?d x*ƒò-x‡ @  ŸÎŒŽ?d ¸*ƒÒØzy @  ŸÏŽ?d ø*ƒA´áš @  ŸÐŽŽ?d 8+ƒ‘ümr @  ŸÑŽ?d x+ƒª¯U˜ @  ŸÒŽ?d ¸+ƒŠZWf @  ŸÓ‘Ž?d ø+ƒ¿lVò @  ŸÔ’Ž?d 8,ƒ¦"¥ý @  ŸÕ“Ž?d x,ƒ`1Ü @  ŸÖ”Ž?d ¸,ƒ@Ä" @  Ÿ×•Ž?d ø,ƒ~ »! @  ŸØ–Ž?d 8-ƒ®A7É @  ŸÙ—Ž?d x-ƒðBmÏ @  ŸÚ˜Ž?d ¸-ƒзo1 @  ŸÛ™Ž?d ø-ƒån¥ @  ŸÜšŽ?d 8.ƒxÅÎd @  ŸÝ›Ž?d x.ƒ¾ÖwE @  ŸÞœŽ?d ¸.ƒž#u» @  ŸßŽ?d ø.ƒIÉè @  ŸàžŽ?d 8/ƒÌE @  ŸáŸŽ?d x/ƒjåD6 @  Ÿâ Ž?d€ ¸/ƒrn´è @   ¡Ž?d ø/ƒ¦ýU @   ¢Ž?d 80ƒÇAç @   £Ž?d x0ƒ+ @   ¤Ž?d ¸0ƒ;hÕ @   ¥Ž?d ø0ƒËû¬ @   ¦Ž?d 81ƒ_wD @   §Ž?d x1ƒ‹îr8 @   ¨Ž?d ¸1ƒ«pÆ @    ©Ž?d ø1ƒ[dŠ¿ @    ªŽ?d 82ƒÆ *~ @    «Ž?d x2ƒÅzh² @    ¬Ž?d ¸2ƒåjL @    ­Ž?d ø2ƒð5 @   ®Ž?d 83ƒŸÝ @   ¯Ž?d x3ƒøE­ @   °Ž?d ¸3ƒ½ GS @   ±Ž?d ø3ƒMr½* @   ²Ž?d 84ƒTƒÛ‹QÓ @   ;ÛŽ?d x>ƒØÑ @   <ÜŽ?d ¸>ƒø$á @   =ÝŽ?d ø>ƒ[ë˜ @   >ÞŽ?d 8?ƒØgp @   ?ߎ?d x?ƒ¢å&þ @   @àŽ?duÐ@ƒ7 ¸?ƒ‚$ @   AáŽ?d ø?ƒroÞy @   BâŽ?d P@ƒ±ÃdE @   CãŽ?d @ƒý3© @   DäŽ?d Ð@ƒ’l$w @   EåŽ?d Aƒ0ÊE8 @   FæŽ?d PAƒ²[Ræ @   GçŽ?d Aƒ€ŽBº @   HèŽ?d ÐAƒUd @   IéŽ?d Bƒíµ @   JêŽ?d PBƒo$Ü @   KëŽ?d BƒÎX0 @   LìŽ?d ÐBƒL‹Oî @   MíŽ?d Cƒî-.¡ @   NîŽ?d PCƒl¼9 @   OïŽ?d Cƒ–˜u/ @   PðŽ?d ÐCƒ bñ @   QñŽ?d Dƒ©|Y @   RòŽ?d PDƒý8k‡ @   SóŽ?d Dƒ\?d PWƒLøë @   Ÿ ??d WƒÊÄ¿Æ @     @?d ÐWƒHU¨ @   ¡ A?d XƒDÉ¢ @   ¢ B?d PXƒŒÕÞ| @   £ C?d Xƒ-ë‰ @   ¤ D?d ÐXƒ¯zžN @   ¥ E?d Yƒ Üÿ @   ¦ F?d PYƒMèß @   § G?d Yƒ½˜øƒ @   ¨ H?d ÐYƒ? ï] @   © I?d ZƒУ¢; @   ª J?d PZƒR2µå @   « K?d Zƒó â  @   ¬ L?d ÐZƒqõ× @   ­ M?d [ƒÓ;”˜ @   ® N?d P[ƒQªƒF @   ¯ O?d [ƒ«ŽÏ @   ° P?d Ð[ƒ)ØÈ @   ± Q?d \ƒB¿Æ` @   ² R?d P\ƒÀ.Ѿ @   ³ S?d \ƒa†R @   ´ T?d Ð\ƒ㑌 @   µ U?d ]ƒA'ðà @   ¶ V?d P]ƒöç @   · W?d ]ƒñc÷A @   ¸ X?d Ð]ƒsòàŸ @   ¹ Y?d ^ƒœX­ù @   º Z?d P^ƒɺ' @   » [?d ^ƒ¿÷íË @   ¼ \?d Ð^ƒ=fú @   ½ ]?d _ƒŸÀ›Z @   ¾ ^?d P_ƒQŒ„ @   ¿ _?d _ƒÅÃØ* @   uÐ`ƒÀ `?d Ð_ƒGRÏô @   Á a?d (`ƒ‹D—Ë @    b?d h`ƒ Õ€ @   à c?d ¨`ƒ¨ë×ù @   Ä d?d è`ƒ*zÀ' @   Å e?d (aƒˆÜ¡h @   Æ f?d haƒ M¶¶ @   Ç g?d ¨aƒ8˜¦ê @   È h?d èaƒº ±4 @   É i?d (bƒU£üR @   Ê j?d hbƒ×2ëŒ @   Ë k?d ¨bƒv ¼` @   Ì l?d èbƒô«¾ @   Í m?d (cƒV;Êñ @   Î n?d hcƒÔªÝ/ @   Ï o?d ¨cƒ.Ž‘ @   Ð p?d ècƒ¬†¡ @   Ñ q?d (dƒÇ¿˜  @   Ò r?d hdƒE.× @   Ó s?d ¨dƒäØ; @   Ô t?d èdƒfÏå @   Õ u?d (eƒÄ'®ª @   Ö v?d heƒF¶¹t @   × w?d ¨eƒtc©( @   Ø x?d èeƒöò¾ö @   Ù y?d (fƒXó @   Ú z?d hfƒ›ÉäN @   Û {?d ¨fƒ:÷³¢ @   Ü |?d èfƒ¸f¤| @   Ý }?d (gƒÀÅ3 @   Þ ~?d hgƒ˜QÒí @   ß ?d ¨gƒRÁR @   à €?d ègƒÃÖŒ @   á ?d (hƒÇÒ·6 @   â ‚?d€ hhƒ1€¼N @  ¡ ƒ?d ¨hƒqÿ£‹ @  ¡ „?d èhƒón´U @  ¡ …?d (iƒ”.÷ @  ¡ †?d hiƒ9) @  ¡ ‡?d ¨iƒêwv @  ¡ ˆ?d èiƒhæaÑ @  ¡ ‰?d (jƒIþsÍ @  ¡ Š?d hjƒËod @  ¡ ‹?d ¨jƒ¯È @  ¡ Œ?d èjƒ-‰ßÌ @  ¡ ?d (kƒJfEn @  ¡ Ž?d hkƒÈ÷R° @  ¡ ?d ¨kƒQÀz @  ¡ ?d èkƒÓQh¤ @  ¡ ‘?d (lƒÛâ– @  ¡ ’?d hlƒYsH @  ¡ “?d ¨lƒ=¬I @  ¡ ”?d èlƒ¿•»— @  ¡ •?d (mƒØz!5 @  ¡ –?d hmƒZë6ë @  ¡ —?d ¨mƒ¦ŒyÍ @  ¡ ˜?d èmƒ$n @  ¡ ™?d (nƒ| @  ¡ š?d hnƒ‡”kÑ @  ¡ ›?d ¨nƒããÇÐ @  ¡ œ?d ènƒarÐ @  ¡ ?d (oƒJ¬ @  ¡ ž?d hoƒ„ ]r @  ¡ Ÿ?d ¨oƒ€ŒId @  ¡  ?d èoƒ^º @  ¡ ¡?d (pƒ¼8I… @  ¡ ¢?d hpƒ>©^[ @  ¡! £?d ¨pƒZÞòZ @  ¡" ¤?d èpƒØOå„ @  ¡# ¥?d (qƒ¿ & @  ¡$ ¦?d hqƒ=1hø @  ¡% §?d ¨qƒÁV'Þ @  ¡& ¨?d èqƒCÇ0 @  ¡' ©?d (rƒbß" @  ¡( ª?d hrƒàN5 @  ¡) «?d ¨rƒ„9™Ã @  ¡* ¬?d èrƒ¨Ž @  ¡+ ­?d (sƒaG¿ @  ¡, ®?d hsƒãÖa @  ¡- ¯?d ¨sƒzá.« @  ¡. °?d èsƒøp9u @  ¡/ ±?d (tƒðÃFG @  ¡0 ²?d htƒrRQ™ @  ¡1 ³?d ¨tƒ%ý˜ @  ¡2 ´?d ètƒ”´êF @  ¡3 µ?d (uƒó[pä @  ¡4 ¶?d huƒqÊg: @  ¡5 ·?d ¨uƒ­( @  ¡6 ¸?d èuƒ À?d èwƒÙlz @  ¡? Á?d (xƒCo;x @  ¡@ Â?d hxƒÁþ,¦ @  ¡A Ã?d ¨xƒ¥‰€§ @  ¡B Ä?d èxƒ'—y @  ¡C Å?d (yƒ@÷ Û @  ¡D Æ?d hyƒÂf @  ¡E Ç?d ¨yƒ>U# @  ¡F È?d èyƒ¼Bý @  ¡G É?d (zƒˆPá @  ¡H Ê?d hzƒG? @  ¡I Ë?d ¨zƒ{në> @  ¡J Ì?d èzƒùÿüà @  ¡K Í?d ({ƒžfB @  ¡L Î?d h{ƒqœ @  ¡M Ï?d ¨{ƒ…¶\V @  ¡N Ð?d è{ƒ'Kˆ @  ¡O Ñ?d (|ƒ”4º @  ¡P Ò?d h|ƒ#d @  ¡Q Ó?d ¨|ƒére @  ¡R Ô?d è|ƒk㘻 @  ¡S Õ?d (}ƒ  @  ¡T Ö?d h}ƒŽÇ @  ¡U ×?d ¨}ƒrúZá @  ¡V Ø?d è}ƒðkM? @  ¡W Ù?d (~ƒÑs_# @  ¡X Ú?d h~ƒSâHý @  ¡Y Û?d ¨~ƒ7•äü @  ¡Z Ü?d è~ƒµó" @  ¡[ Ý?d (ƒÒëi€ @  ¡\ Þ?d hƒPz~^ @  ¡] ß?d ¨ƒuЀƒ'TújH @  ¡^ à?d èƒﬡC @  ¡_á?d @€ƒéèº @  ¡`â?d €€ƒ¡êD @  ¡aã?d À€ƒgSe @  ¡bä?d ƒ·Gß @  ¡cå?d @ƒ‚qÞ @  ¡dæ?d €ƒ¢„Üç @  ¡eç?d Àƒü‡†á @  ¡fè?d ‚ƒaÃ&  @  ¡gé?d @‚ƒ_ƒ# @  ¡hê?d €‚ƒûÝ @  ¡ië?d À‚ƒ¹è8ü @  ¡jì?d ƒƒi ´ @  ¡kí?d @ƒƒ\–µ€ @  ¡lî?d €ƒƒ|c·~ @  ¡mï?d ÀƒƒG0” @  ¡nð?d „ƒ^~|› @  ¡oñ?d @„ƒÍçx @  ¡pò?d €„ƒíçå† @  ¡qó?d À„ƒ+ô\§ @  ¡rô?d …ƒû¼ÐO @  ¡sõ?d @…ƒΊÑÛ @  ¡tö?d €…ƒîÓ% @  ¡u÷?d À…ƒ°|‰# @  ¡vø?d †ƒ-8)â @  ¡wù?d @†ƒõŒá @  ¡xú?d €†ƒ3Ž @  ¡yû?d À†ƒõ7> @  ¡zü?d ‡ƒ%[»Ö @  ¡{ý?d @‡ƒmºB @  ¡|þ?d €‡ƒ0˜¸¼ @  ¡}ÿ?d À‡ƒý‹µ @  ¡~?d ˆƒÉ÷¨ @  ¡?d @ˆƒÌX @  ¡€?d €ˆƒ&9¦ @  ¡?d Àˆƒà*6‡ @  ¡‚?d ‰ƒ0bºo @  ¡ƒ?d @‰ƒT»û @  ¡„?d €‰ƒ%¡¹ @  ¡…?d À‰ƒ{¢ã @  ¡†?d ŠƒææC @  ¡‡ ?d @ŠƒØ+æÁ @  ¡ˆ ?d €ŠƒøÞä? @  ¡‰ ?d ÀŠƒ>Í] @  ¡Š ?d ‹ƒî…Ñö @  ¡‹ ?d @‹ƒÛ³Ðb @  ¡Œ?d €‹ƒûFÒœ @  ¡?d À‹ƒÀêv @  ¡Ž?d ŒƒÙ[y @  ¡?d @ŒƒJ7‚š @  ¡?d €Œƒj€d @  ¡‘?d ÀŒƒ¬Ñ9E @  ¡’?d ƒ|™µ­ @  ¡“?d @ƒI¯´9 @  ¡”?d €ƒiZ¶Ç @  ¡•?d Àƒ7YìÁ @  ¡–?d ŽƒªL @  ¡—?d @Žƒ”Ðé @  ¡˜?d €Žƒ´%ëý @  ¡™?d ÀŽƒr6RÜ @  ¡š?d ƒ¢~Þ4 @  ¡›?d @ƒ—Hß  @  ¡œ?d €ƒ·½Ý^ @  ¡?d ÀƒYÜh @  ¡ž ?d ƒ¯‡`Ú @  ¡Ÿ!?d @ƒ-í܉ @  ¡ "?d €ƒ Þw @  ¡¡#?d ÀƒË gV @  ¡¢$?d ‘ƒCë¾ @  ¡£%?d @‘ƒ.uê* @  ¡¤&?d €‘ƒ€èÔ @  ¡¥'?d À‘ƒPƒ²Ò @  ¡¦(?d ’ƒÍÇ @  ¡§)?d @’ƒó · @  ¡¨*?d €’ƒÓÿµî @  ¡©+?d À’ƒì Ï @  ¡ª,?d “ƒŤ€' @  ¡«-?d @“ƒð’³ @  ¡¬.?d €“ƒÐgƒM @  ¡­/?d À“ƒë4»§ @  ¡®0?d ”ƒòzH¨ @  ¡¯1?d @”ƒaÓK @  ¡°2?d €”ƒAãѵ @  ¡±3?d À”ƒ‡ðh” @  ¡²4?d •ƒW¸ä| @  ¡³5?d @•ƒbŽåè @  ¡´6?d €•ƒB{ç @  ¡µ7?d À•ƒx½ @  ¡¶8?d –ƒ<Ñ @  ¡·9?d @–ƒ¿ñ¸Ò @  ¡¸:?d €–ƒŸº, @  ¡¹;?d À–ƒY  @  ¡º<?d —ƒ‰_å @  ¡»=?d @—ƒ¼iŽq @  ¡¼>?d €—ƒœœŒ @  ¡½??d À—ƒÊ(˜¨ @  ¡¾@?d ˜ƒþ×µ @  ¡¿A?d @˜ƒÒº®t @  ¡ÀB?d €˜ƒòO¬Š @  ¡ÁC?d À˜ƒ4\« @  ¡ÂD?d ™ƒä™C @  ¡ÃE?d @™ƒÑ"˜× @  ¡ÄF?d €™ƒñך) @  ¡ÅG?d À™ƒ¯ÔÀ/ @  ¡ÆH?d šƒ2`î @  ¡ÇI?d @šƒ ]Åí @  ¡ÈJ?d €šƒ,¨Ç @  ¡ÉK?d Àšƒê»~2 @  ¡ÊL?d ›ƒ:óòÚ @  ¡ËM?d @›ƒÅóN @  ¡ÌN?d €›ƒ/0ñ° @  ¡ÍO?d À›ƒcÉZ @  ¡ÎP?d œƒ -:U @  ¡ÏQ?d @œƒžA¡¶ @  ¡ÐR?d €œƒ¾´£H @  ¡ÑS?d Àœƒx§i @  ¡ÒT?d ƒ¨ï– @  ¡ÓU?d @ƒÙ— @  ¡ÔV?d €ƒ½,•ë @  ¡ÕW?d Àƒã/Ïí @  ¡ÖX?d žƒ~ko, @  ¡×Y?d @žƒ@¦Ê/ @  ¡ØZ?d €žƒ`SÈÑ @  ¡Ù[?d Àžƒ¦@qð @  ¡Ú\?d Ÿƒvý @  ¡Û]?d @ŸƒC>üŒ @  ¡Ü^?d €ŸƒcËþr @  ¡Ý_uРƒ?d ÀŸƒÅ/ÿD @  ¡Þ`?d  ƒ´$!" @  ¡ßa?d X ƒ6Nq @  ¡àb?d ˜ ƒ»Ÿ @  ¡ác?d Ø ƒШ&® @  ¡âd?d€ ¡ƒÁ§]F @  ¢e?d X¡ƒÐû @  ¢f?d ˜¡ƒ5% @  ¢g?d Ø¡ƒ®o·î @  ¢h?d ¢ƒ3+/ @  ¢i?d X¢ƒÃTíV @  ¢j?d ˜¢ƒã¡ï¨ @  ¢k?d Ø¢ƒë ó @  ¢l?d £ƒ;H… @  ¢ m?d X£ƒË7b @  ¢ n?d ˜£ƒëÂ}œ @  ¢ o?d Ø£ƒؾ› @  ¢ p?d ¤ƒ –M” @  ¢ q?d X¤ƒüé·í @  ¢r?d ˜¤ƒÜµ @  ¢s?d ؤƒym¨ @  ¢t?d ¥ƒ©Tá@ @  ¢u?d X¥ƒY+9 @  ¢v?d ˜¥ƒyÞÇ @  ¢w?d Ø¥ƒ┸, @  ¢x?d ¦ƒÐí @  ¢y?d X¦ƒ¯â” @  ¢z?d ˜¦ƒ¯Zàj @  ¢{?d ئƒ§û1 @  ¢|?d §ƒw³ŠÙ @  ¢}?d X§ƒ‡Ìp  @  ¢~?d ˜§ƒ§9r^ @  ¢?d اƒ)É @  ¢€?d ¨ƒýE @  ¢?d X¨ƒí‚¿b @  ¢‚?d ˜¨ƒÍw½œ @  ¢ƒ?d بƒyqB— @  ¢ „?d ©ƒ©9Î @  ¢!…?d X©ƒYF4 @  ¢"†?d ˜©ƒy³6ø @  ¢#‡?d Ø©ƒâù— @  ¢$ˆ?d ªƒ½7Ò @  ¢%‰?d XªƒÂÍ« @  ¢&Š?d ˜ªƒ¯7ÏU @  ¢'‹?d تƒ§–) @  ¢(Œ?d «ƒwÞ¥æ @  ¢)?d X«ƒ‡¡_Ÿ @  ¢*Ž?d ˜«ƒ§T]a @  ¢+?d Ø«ƒYNžf @  ¢,?d ¬ƒ@mi @  ¢-‘?d X¬ƒ°— @  ¢.’?d ˜¬ƒŠ•î @  ¢/“?d جƒ5ŠMU @  ¢0”?d ­ƒåÂÁ½ @  ¢1•?d X­ƒ½;Ä @  ¢2–?d ˜­ƒ5H9: @  ¢3—?d Ø­ƒ®˜Ñ @  ¢4˜?d ®ƒ3F8 @  ¢5™?d X®ƒÃ9Âi @  ¢6š?d ˜®ƒãÌÀ— @  ¢7›?d Ø®ƒëm&Ì @  ¢8œ?d ¯ƒ;%ª$ @  ¢9?d X¯ƒËZP] @  ¢:ž?d ˜¯ƒë¯R£ @  ¢;Ÿ?d دƒˆ¨x @  ¢< ?d °ƒ6ÜÊ @  ¢=¡?d X°ƒÆ£î³ @  ¢>¢?d ˜°ƒæVìM @  ¢?£?d ذƒüWÔ @  ¢@¤?d ±ƒ,™< @  ¢A¥?d X±ƒÜ`cE @  ¢B¦?d ˜±ƒü•a» @  ¢C§?d رƒgßÀP @  ¢D¨?d ²ƒú›`‘ @  ¢E©?d X²ƒ äšè @  ¢Fª?d ˜²ƒ*˜ @  ¢G«?d زƒ"°~M @  ¢H¬?d ³ƒòøò¥ @  ¢I­?d X³ƒ‡Ü @  ¢J®?d ˜³ƒ"r " @  ¢K¯?d سƒÜhÉ% @  ¢L°?d ´ƒÅ&:* @  ¢M±?d X´ƒ5YÀS @  ¢N²?d ˜´ƒ¬Â­ @  ¢O³?d Ø´ƒ°¬ @  ¢P´?d µƒ`ä–þ @  ¢Qµ?d Xµƒ›l‡ @  ¢R¶?d ˜µƒ°nny @  ¢S·?d صƒ+$Ï’ @  ¢T¸?d ¶ƒ¶`oS @  ¢U¹?d X¶ƒF•* @  ¢Vº?d ˜¶ƒfê—Ô @  ¢W»?d ضƒnKq @  ¢X¼?d ·ƒ¾ýg @  ¢Y½?d X·ƒN| @  ¢Z¾?d ˜·ƒn‰à @  ¢[¿?d Ø·ƒýtê* @  ¢\À?d ¸ƒÉ‹f7 @  ¢]Á?d X¸ƒ9ôœN @  ¢^Â?d ˜¸ƒž° @  ¢_Ã?d ظƒ­a» @  ¢`Ä?d ¹ƒ}OíS @  ¢aÅ?d X¹ƒ0* @  ¢bÆ?d ˜¹ƒ­ÅÔ @  ¢cÇ?d عƒ6´? @  ¢dÈ?d ºƒ«Ëþ @  ¢eÉ?d Xºƒ[´î‡ @  ¢fÊ?d ˜ºƒ{Aìy @  ¢gË?d غƒsà " @  ¢hÌ?d »ƒ£¨†Ê @  ¢iÍ?d X»ƒS×|³ @  ¢jÎ?d ˜»ƒs"~M @  ¢kÏ?d Ø»ƒ8½J @  ¢lÐ?d ¼ƒ”vNE @  ¢mÑ?d X¼ƒd ´< @  ¢nÒ?d ˜¼ƒDü¶Â @  ¢oÓ?d ؼƒáüny @  ¢pÔ?d ½ƒ1´â‘ @  ¢qÕ?d X½ƒÁËè @  ¢rÖ?d ˜½ƒá> @  ¢s×?d ؽƒzt»ý @  ¢tØ?d ¾ƒç0< @  ¢uÙ?d X¾ƒOáE @  ¢vÚ?d ˜¾ƒ7ºã» @  ¢wÛ?d ؾƒ?à @  ¢xÜ?d ¿ƒïS‰ @  ¢yÝ?d X¿ƒ,sq @  ¢zÞ?d ˜¿ƒ?Ùq @uÐÀƒ  ¢{ß?d Ø¿ƒ!ôø( @  ¢|€à?d 0ÀƒE©z @  ¢}€á?d pÀƒµ{S @  ¢~€â?d °Àƒ•ŽQý @  ¢€ã?d ðÀƒlÙ˜U @  ¢€€ä?d 0Áƒ¼‘½ @  ¢€å?d pÁƒLîîÄ @  ¢‚€æ?d °Áƒlì: @  ¢ƒ€ç?d ðÁƒ÷QMÑ @  ¢„€è?d 0ƒjí @  ¢…€é?d pƒšji @  ¢†€ê?d °ÂƒºŸ— @  ¢‡€ë?d ðƒ²>óÌ @  ¢ˆ€ì?d 0Ãbv$ @  ¢‰€í?d pÃ’ …] @  ¢Š€î?d °Ãƒ²ü‡£ @  ¢‹€ï?d ðÃLæD¤ @  ¢Œ€ð?d 0ăU¨·« @  ¢€ñ?d pă¥×MÒ @  ¢Ž€ò?d °Äƒ…"O, @  ¢€ó?d ðă "—— @  ¢€ô?d 0Ńðj @  ¢‘€õ?d pŃá @  ¢’€ö?d °Åƒ àãø @  ¢“€÷?d ðŃ»ªB @  ¢”€ø?d 0ƃ&îâÒ @  ¢•€ù?d pƃÖ‘« @  ¢–€ú?d °ÆƒödU @  ¢—€û?d ðƃþÅü @  ¢˜€ü?d 0ǃ.pæ @  ¢™€ý?d pǃÞòŠŸ @  ¢š€þ?d °Çƒþˆa @  ¢›€ÿ?d ðǃ[f5 @  ¢œ€‘?d 0ȃ;¤ê( @  ¢€‘?d pȃËÛQ @  ¢ž€‘?d °Èƒë.¯ @  ¢Ÿ€‘?d ðȃ_(í¤ @  ¢ €‘?d 0Ƀ`aL @  ¢¡€‘?d pɃ›5 @  ¢¢€‘?d °Éƒ_ê™Ë @  ¢£€‘?d ðɃÄ 8  @  ¢¤€‘?d 0ʃYä˜á @  ¢¥€ ‘?d pʃ©›b˜ @  ¢¦€ ‘?d °Êƒ‰n`f @  ¢§€ ‘?d ðʃφ= @  ¢¨€ ‘?d 0˃Q‡ Õ @  ¢©€ ‘?d p˃¡øð¬ @  ¢ª€‘?d °Ëƒ òR @  ¢«€‘?d ð˃1U @  ¢¬€‘?d 0̃fYÂZ @  ¢­€‘?d p̃–&8# @  ¢®€‘?d °Ìƒ¶Ó:Ý @  ¢¯€‘?d ð̃Óâf @  ¢°€‘?d 0̓ÛnŽ @  ¢±€‘?d p̓3ä”÷ @  ¢²€‘?d °Íƒ–  @  ¢³€‘?d ð̓ˆ[7â @  ¢´€‘?d 0΃—# @  ¢µ€‘?d p΃å`mZ @  ¢¶€‘?d °ÎƒÅ•o¤ @  ¢·€‘?d ð΃Í4‰ÿ @  ¢¸€‘?d 0σ| @  ¢¹€‘?d pσíÿn @  ¢º€‘?d °ÏƒÍöý @  ¢»€‘?d ðσ®[K @  ¢¼€ ‘?d 0Ѓ…»ù @  ¢½€!‘?d pЃàúA€ @  ¢¾€"‘?d °ÐƒÀC~ @  ¢¿€#‘?d ðЃÚºç @  ¢À€$‘?d 0у F6 @  ¢Á€%‘?d pуú9Ìv @  ¢€&‘?d °ÑƒÚÌΈ @  ¢À'‘?d ðуA†oc @  ¢Ä€(‘?d 0ÒƒÜÂÏ¢ @  ¢Å€)‘?d pÒƒ,½5Û @  ¢Æ€*‘?d °Òƒ H7% @  ¢Ç€+‘?d ðÒƒéÑ~ @  ¢È€,‘?d 0ÓƒÔ¡]– @  ¢É€-‘?d pÓƒ$Þ§ï @  ¢Ê€.‘?d °Óƒ+¥ @  ¢Ë€/‘?d ðÓƒú1f @  ¢Ì€0‘?d 0ԃ㕠@  ¢Í€1‘?d pÔƒo` @  ¢΀2‘?d °Ôƒ3õmž @  ¢Ï€3‘?d ðÔƒ–õµ% @  ¢Ѐ4‘?d 0ÕƒF½9Í @  ¢Ñ€5‘?d pÕƒ¶Âô @  ¢Ò€6‘?d °Õƒ–7ÁJ @  ¢Ó€7‘?d ðÕƒ }`¡ @  ¢Ô€8‘?d 0Öƒ9À` @  ¢Õ€9‘?d pÖƒ`F: @  ¢Ö€:‘?d °Öƒ@³8ç @  ¢×€;‘?d ðÖƒHÞ¼ @  ¢Ø€<‘?d 0׃˜ZRT @  ¢Ù€=‘?d p׃h%¨- @  ¢Ú€>‘?d °×ƒHЪÓ @  ¢Û€?‘?d ð׃Û-E @  ¢Ü€@‘?d 0؃ïÒÉ @  ¢Ý€A‘?d p؃­3} @  ¢Þ€B‘?d °Øƒ?X1ƒ @  ¢߀C‘?d ð؃‹^Έ @  ¢à€D‘?d 0Ùƒ[B` @  ¢á€E‘?d pÙƒ«i¸ @  ¢â€F‘?d€ °Ùƒÿ_¦A @  £€G‘?d ðÙƒ…TOƒ @  £€H‘?d 0ÚƒïB @  £€I‘?d pÚƒ-&îÖ @  £€J‘?d °Úƒ Óì( @  £€K‘?d ðÚƒËÀU  @  £€L‘?d 0ÛƒˆÙá @  £€M‘?d pÛƒ%E|â @  £€N‘?d °Ûƒ°~ @  £ €O‘?d ðÛƒ>ãFö @  £ €P‘?d 0܃'­µù @  £ €Q‘?d p܃›´m @  £ €R‘?d °Üƒ2n¶“ @  £ €S‘?d ð܃ô}² @  £€T‘?d 0݃$5ƒZ @  £€U‘?d p݃·Y¹ @  £€V‘?d °Ýƒ—¬G @  £€W‘?d ð݃ɯ@A @  £€X‘?d 0ÞƒTëà€ @  £€Y‘?d pÞƒaÝá @  £€Z‘?d °ÞƒA(ãê @  £€[‘?d ðÞƒ‡;ZË @  £€\‘?d 0߃WsÖ# @  £€]‘?d p߃i¾s  @  £€^‘?d uÐàƒ/°ßƒIKqÞ @  £€_‘?d ð߃«èßA @  £ `‘?d Hàƒ²L· @  £ a‘?d ˆàƒ%• @  £ b‘?d Èàƒ§‚Ý @  £ c‘?d áƒ3E Ê @  £ d‘?d HჱԷ @  £ e‘?d ˆáƒ‘Úg @  £ f‘?d ÈáƒK ¹ @  £! g‘?d âƒRä  @  £" h‘?d HâƒÐ ó~ @  £# i‘?d ˆâƒG^çÊ @  £$ j‘?d ÈâƒÅÏð @  £% k‘?d ãƒQÒ @  £& l‘?d HãƒÓ”ÅÝ @  £' m‘?d ˆãƒO=uþ @  £( n‘?d Èãƒͬb  @  £) o‘?d äƒm ¾ @  £* p‘?d HäƒﱩÅ @  £+ q‘?d ˆäƒxã½q @  £, r‘?d Èäƒúrª¯ @  £- s‘?d åƒn¸ˆ¸ @  £. t‘?d Håƒì)Ÿf @  £/ u‘?d ˆåƒÝ!¥ @  £0 v‘?d Èåƒ_°{ @  £1 w‘?d æƒfëb @  £2 x‘?d H惜÷ü¼ @  £3 y‘?d ˆæƒ ¥è @  £4 z‘?d Èæƒ‰4ÿÖ @  £5 {‘?d çƒþÝÁ @  £6 |‘?d H烟oÊ @  £7 }‘?d ˆçƒÆz< @  £8 ~‘?d ÈçƒWmâ @  £9 ‘?d èƒ|K¶” @  £: €‘?d HèƒþÚ¡J @  £; ‘?d ˆèƒiˆµþ @  £< ‚‘?d Èèƒë¢  @  £= ƒ‘?d éƒÓ€7 @  £> „‘?d HéƒýB—é @  £? …‘?d ˆéƒsK8 @  £@ †‘?d ÈéƒñÚ/Ö @  £A ‡‘?d ꃰ ÂÏ @  £B ˆ‘?d Hêƒ2Õ @  £C ‰‘?d ˆêƒ¥ÏÁ¥ @  £D Š‘?d Èêƒ'^Ö{ @  £E ‹‘?d 냳”ôl @  £F Œ‘?d Hëƒ1ã² @  £G ‘?d ˆëƒ­¬S‘ @  £H Ž‘?d Èëƒ/=DO @  £I ‘?d 샱˜t @  £J ‘?d Hìƒ ª @  £K ‘‘?d ˆìƒšr› @  £L ’‘?d ÈìƒãŒÀ @  £M “‘?d 탌)®× @  £N ”‘?d H탸¹  @  £O •‘?d ˆíƒ?°7Ê @  £P –‘?d È탽!  @  £Q —‘?d îƒü÷Í  @  £R ˜‘?d Hîƒ~fÚÓ @  £S ™‘?d ˆîƒé4Îg @  £T š‘?d Èîƒk¥Ù¹ @  £U ›‘?d ïƒÿoû® @  £V œ‘?d Hïƒ}þìp @  £W ‘?d ˆïƒáW\S @  £X ž‘?d ÈïƒcÆK @  £Y Ÿ‘?d ðƒùmá× @  £Z  ‘?d Hðƒ{üö  @  £[ ¡‘?d ˆðƒì®â½ @  £\ ¢‘?d Èðƒn?õc @  £] £‘?d ñƒúõ×t @  £^ ¤‘?d HñƒxdÀª @  £_ ¥‘?d ˆñƒXjiÙ @  £` ¦‘?d ÈñƒÚû~ @  £a §‘?d òƒ›-“ @  £b ¨‘?d Hòƒ¼„À @  £c ©‘?d ˆòƒŽît @  £d ª‘?d Èòƒ ‡ª @  £e «‘?d 󃘵¥½ @  £f ¬‘?d Hóƒ$²c @  £g ­‘?d ˆóƒ†@ @  £h ®‘?d Èóƒž @  £i ¯‘?d ôƒ¤É¥ @  £j °‘?d Hôƒ&Þ{ @  £k ±‘?d ˆôƒ±SÊÏ @  £l ²‘?d Èôƒ3ÂÝ @  £m ³‘?d õƒ§ÿ @  £n ´‘?d Hõƒ%™èØ @  £o µ‘?d ˆõƒ‘f @  £p ¶‘?d Èõƒ–qÅ @  £q ·‘?d öƒ×ÖœÜ @  £r ¸‘?d HöƒUG‹ @  £s ¹‘?d ˆöƒÂŸ¶ @  £t º‘?d Èöƒ@„ˆh @  £u »‘?d ÷ƒÔNª @  £v ¼‘?d H÷ƒVß½¡ @  £w ½‘?d ˆ÷ƒÊv ‚ @  £x ¾‘?d È÷ƒHç\ @  £y ¿‘?d øƒ¨=•¸ @  £z À‘?d Høƒ*¬‚f @  £{ Á‘?d ˆøƒ½þ–Ò @  £| ‘?d Èøƒ?o  @  £} Ñ?d ùƒ«¥£ @  £~ Ä‘?d Hùƒ)4´Å @  £ Å‘?d ˆùƒDk+ @  £€ Æ‘?d ÈùƒÆú<Ë @  £ Ç‘?d úƒ‡,ÑÒ @  £‚ È‘?d Húƒ½Æ  @  £ƒ É‘?d ˆúƒ’ïÒ¸ @  £„ Ê‘?d Èúƒ~Åf @  £… Ë‘?d ûƒ„´çq @  £† Ì‘?d Hûƒ%ð¯ @  £‡ Í‘?d ˆûƒšŒ@Œ @  £ˆ Α?d ÈûƒWR @  £‰ Ï‘?d üƒ¸‘‹i @  £Š Б?d Hüƒ:œ· @  £‹ Ñ‘?d ˆüƒ­Rˆ @  £Œ Ò‘?d Èüƒ/ßÝ @  £ Ó‘?d ýƒ» ½Ê @  £Ž Ô‘?d Hýƒ9˜ª @  £ Õ‘?d ˆýƒ$× @  £ Ö‘?d ÈýƒŠ3  @  £‘ ב?d þƒË×Þ @  £’ Ø‘?d HþƒIFÉÎ @  £“ Ù‘?d ˆþƒÞÝz @  £” Ú‘?d Èþƒ\…ʤ @  £• Û‘?d ÿƒÈOè³ @  £– Ü‘?d HÿƒJÞÿm @  £— Ý‘?d ˆÿƒÖwON @  £˜ uЄޑ?d Èÿƒm!„E @  £™ß‘?d „|’€3 @  £šà‘?d `„þ—í @  £›á‘?d  „iQƒY @  £œâ‘?d à„ëÀ”‡ @  £ã‘?d „ ¶ @  £žä‘?d `„ý›¡N @  £Ÿå‘?d  „Ý•= @  £ æ‘?d à„_ã @  £¡ç‘?d „Òòú @  £¢è‘?d `„œCå$ @  ££é‘?d  „ ñ @  £¤ê‘?d à„‰€æN @  £¥ë‘?d „JÄY @  £¦ì‘?d `„ŸÛÓ‡ @  £§í‘?d  „rc¤ @  £¨î‘?d à„ãtz @  £©ï‘?d „!o¨A @  £ªð‘?d `„£þ¿Ÿ @  £«ñ‘?d  „4¬«+ @  £¬ò‘?d à„¶=¼õ @  £­ó‘?d „"÷žâ @  £®ô‘?d `„ f‰< @  £¯õ‘?d  „‘nÿ @  £°ö‘?d à„ÿ! @  £±÷‘?d „R)ý8 @  £²ø‘?d `„иêæ @  £³ù‘?d  „GêþR @  £´ú‘?d à„Å{éŒ @  £µû‘?d „Q±Ë› @  £¶ü‘?d `„Ó ÜE @  £·ý‘?d  „O‰lf @  £¸þ‘?d à„Í{¸ @  £¹ÿ‘?d „ýAÀç @  £º’?d `„Ð×9 @  £»’?d  „è‚à @  £¼’?d à„jÔS @  £½’?d „þÙöD @  £¾’?d ` „|Háš @  £¿’?d   „òAN{ @  £À’?d à „pÐY¥ @  £Á’?d „1´¼ @  £Â’?d ` „³—£b @  £Ã ’?d   „$Å·Ö @  £Ä ’?d à „¦T  @  £Å ’?d „2ž‚ @  £Æ ’?d ` „°•Á @  £Ç ’?d   „,¦%â @  £È’?d à „®72< @  £É’?d „»î @  £Ê’?d ` „Œ*ùÙ @  £Ë’?d   „xím @  £Ì’?d à „™éú³ @  £Í’?d „ #ؤ @  £Î’?d ` „²Ïz @  £Ï’?d   „¾ºA¹ @  £Ð’?d à „<+Vg @  £Ñ’?d „}ý»~ @  £Ò’?d `„ÿl¬  @  £Ó’?d  „h>¸ @  £Ô’?d à„꯯Ê @  £Õ’?d „~eÝ @  £Ö’?d `„üôš @  £×’?d  „`]*  @  £Ø’?d à„âÌ=þ @  £Ù’?d „xg—¤ @  £Ú ’?d `„úö€z @  £Û!’?d  „m¤”Î @  £Ü"’?d à„ï5ƒ @  £Ý#’?d „{ÿ¡ @  £Þ$’?d `„ùn¶Ù @  £ß%’?d  „Ù`ª @  £à&’?d à„[ñt @  £á'’?d „'åm @  £â(’?d€ `„àZ  @  ¤)’?d  „hó— @  ¤*’?d à„êbI @  ¤+’?d „»áȳ @  ¤,’?d `„9pßm @  ¤-’?d  „kk04 @  ¤.’?d à„éú'ê @  ¤/’?d „‡Ä¤« @  ¤0’?d `„U³u @  ¤ 1’?d  „WN\, @  ¤ 2’?d à„ÕßKò @  ¤ 3’?d „„\’ @  ¤ 4’?d `„Í…Ö @  ¤ 5’?d  „TÖj @  ¤6’?d à„ÖG}Q @  ¤7’?d „ô‚ñÒ @  ¤8’?d `„væ  @  ¤9’?d  „$ U @  ¤:’?d à„¦™‹ @  ¤;’?d „÷Çq @  ¤<’?d `„u‹Ð¯ @  ¤=’?d  „'?ö @  ¤>’?d à„¥(( @  ¤?’?d „‹iø¶ @  ¤@’?d `„ øïh @  ¤A’?d  „[ã1 @  ¤B’?d à„Ùrï @  ¤C’?d „ˆñÎ @  ¤D’?d `„ `ÙË @  ¤E’?d  „X{6’ @  ¤F’?d à„Úê!L @  ¤G’?d „é)Š @  ¤ H’?d `„k¸¡ @  ¤!I’?d  „9£rø @  ¤"J’?d à„»2e& @  ¤#K’?d „ê±¼Ü @  ¤$L’?d `„h « @  ¤%M’?d  „:;D[ @  ¤&N’?d à„¸ªS… @  ¤'O’?d „Ö”ÐÄ @  ¤(P’?d `„TÇ @  ¤)Q’?d  „(C @  ¤*R’?d à„„? @  ¤+S’?d „Õ æg @  ¤,T’?d `„Wñ¹ @  ¤-U’?d  „†à @  ¤.V’?d à„‡ > @  ¤/W’?d „¥Ò…½ @  ¤0X’?d `„'C’c @  ¤1Y’?d  „uX}: @  ¤2Z’?d à„÷Éjä @  ¤3[’?d „¦J³ @  ¤4\’?d `„$Û¤À @  ¤5]’?d  „vÀK™uÐ „ @  ¤6^’?d à„ôQ\G @  ¤7_’?d 8 „o˳ @  ¤8`’?d x „í Üm @  ¤9a’?d ¸ „¿34 @  ¤:b’?d ø „=†$ê @  ¤;c’?d 8!„lý @  ¤<d’?d x!„î”êÎ @  ¤=e’?d ¸!„¼— @  ¤>f’?d ø!„>I @  ¤?g’?d 8"„£Ú¿è @  ¤@h’?d x"„!K¨6 @  ¤Ai’?d ¸"„sPGo @  ¤Bj’?d ø"„ñÁP± @  ¤Ck’?d 8#„ B‰K @  ¤Dl’?d x#„"Óž• @  ¤Em’?d ¸#„pÈqÌ @  ¤Fn’?d ø#„òYf @  ¤Go’?d 8$„œgåS @  ¤Hp’?d x$„öò @  ¤Iq’?d ¸$„LíÔ @  ¤Jr’?d ø$„Î|  @  ¤Ks’?d 8%„ŸÿÓð @  ¤Lt’?d x%„nÄ. @  ¤Mu’?d ¸%„Ou+w @  ¤Nv’?d ø%„Íä<© @  ¤Ow’?d 8&„ï!°* @  ¤Px’?d x&„m°§ô @  ¤Qy’?d ¸&„?«H­ @  ¤Rz’?d ø&„½:_s @  ¤S{’?d 8'„칆‰ @  ¤T|’?d x'„n(‘W @  ¤U}’?d ¸'„<3~ @  ¤V~’?d ø'„¾¢iÐ @  ¤W’?d 8(„ íÜ @  ¤X€’?d x(„ú @  ¤Y’?d ¸(„]†[ @  ¤Z‚’?d ø(„ß… @  ¤[ƒ’?d 8)„Ž”Û @  ¤\„’?d x)„ Ì¡ @  ¤]…’?d ¸)„^#ø @  ¤^†’?d ø)„Ü4& @  ¤_‡’?d 8*„ïLŸ @  ¤`ˆ’?d x*„m݈Ë @  ¤a‰’?d ¸*„?Æg’ @  ¤bŠ’?d ø*„½WpL @  ¤c‹’?d 8+„ìÔ©¶ @  ¤dŒ’?d x+„nE¾h @  ¤e’?d ¸+„<^Q1 @  ¤fŽ’?d ø+„¾ÏFï @  ¤g’?d 8,„ÐñÅ® @  ¤h’?d x,„R`Òp @  ¤i‘’?d ¸,„{=) @  ¤j’’?d ø,„‚ê*÷ @  ¤k“’?d 8-„Óió  @  ¤l”’?d x-„QøäÓ @  ¤m•’?d ¸-„ã Š @  ¤n–’?d ø-„rT @  ¤o—’?d 8.„£·× @  ¤p˜’?d x.„!&‡  @  ¤q™’?d ¸.„s=hP @  ¤rš’?d ø.„ñ¬Ž @  ¤s›’?d 8/„ /¦t @  ¤tœ’?d x/„"¾±ª @  ¤u’?d ¸/„p¥^ó @  ¤vž’?d ø/„ò4I- @  ¤wŸ’?d 80„¦-¼  @  ¤x ’?d x0„$¼«Ó @  ¤y¡’?d ¸0„v§DŠ @  ¤z¢’?d ø0„ô6ST @  ¤{£’?d 81„¥µŠ® @  ¤|¤’?d x1„'$p @  ¤}¥’?d ¸1„u?r) @  ¤~¦’?d ø1„÷®e÷ @  ¤§’?d 82„‰<øg @  ¤€¨’?d x2„ ­ï¹ @  ¤©’?d ¸2„Y¶à @  ¤‚ª’?d ø2„Û'> @  ¤ƒ«’?d 83„ФÎÄ @  ¤„¬’?d x3„5Ù @  ¤…­’?d ¸3„Z.6C @  ¤†®’?d ø3„Ø¿! @  ¤‡¯’?d 84„¶¢Ü @  ¤ˆ°’?d x4„4µ @  ¤‰±’?d ¸4„f Z[ @  ¤Š²’?d ø4„äšM… @  ¤‹³’?d 85„µ” @  ¤Œ´’?d x5„7ˆƒ¡ @  ¤µ’?d ¸5„e“lø @  ¤Ž¶’?d ø5„ç{& @  ¤·’?d 86„ÅÇ÷¥ @  ¤¸’?d x6„GVà{ @  ¤‘¹’?d ¸6„M" @  ¤’º’?d ø6„—Üü @  ¤“»’?d 87„Æ_Á @  ¤”¼’?d x7„DÎÖØ @  ¤•½’?d ¸7„Õ9 @  ¤–¾’?d ø7„”D._ @  ¤—¿’?d 88„º,þÁ @  ¤˜À’?d x8„8½é @  ¤™Á’?d ¸8„j¦F @  ¤šÂ’?d ø8„è7˜ @  ¤›Ã’?d 89„¹´Èb @  ¤œÄ’?d x9„;%ß¼ @  ¤Å’?d ¸9„i>0å @  ¤žÆ’?d ø9„ë¯'; @  ¤ŸÇ’?d 8:„ØlŒ @  ¤ È’?d x:„Zý›Ö @  ¤¡É’?d ¸:„æt @  ¤¢Ê’?d ø:„ŠwcQ @  ¤£Ë’?d 8;„Ûôº« @  ¤¤Ì’?d x;„Ye­u @  ¤¥Í’?d ¸;„ ~B, @  ¤¦Î’?d ø;„‰ïUò @  ¤§Ï’?d 8<„çÑÖ³ @  ¤¨Ð’?d x<„e@Ám @  ¤©Ñ’?d ¸<„7[.4 @  ¤ªÒ’?d ø<„µÊ9ê @  ¤«Ó’?d 8=„äIà @  ¤¬Ô’?d x=„fØ÷Î @  ¤­Õ’?d ¸=„4× @  ¤®Ö’?d ø=„¶RI @  ¤¯×’?d 8>„”—ƒÊ @  ¤°Ø’?d x>„” @  ¤±Ù’?d ¸>„D{M @  ¤²Ú’?d ø>„ÆŒl“ @  ¤³Û’?d 8?„—µi @  ¤´Ü’?d x?„ž¢· @  ¤µÝ’?duÐ@„7 ¸?„G…Mî @  ¤¶Þ’?d ø?„ÅZ0 @  ¤·ß’?d P@„쩞 @  ¤¸à’?d @„ÌŠ«` @  ¤¹á’?d Ð@„<õQ @  ¤ºâ’?d A„ì½Ýñ @  ¤»ã’?d PA„ïçŸ= @  ¤¼ä’?d A„Ïà @  ¤½å’?d ÐA„ýÄ€o @  ¤¾æ’?d B„`€ ® @  ¤¿ç’?d PB„â‘: @  ¤Àè’?d B„Âd8î @  ¤Áé’?d ÐB„2— @  ¤Âê’?d C„âSN @  ¤Ãë’?d PC„á ³ @  ¤Äì’?d C„ÁüM @  ¤Åí’?d ÐC„1ƒô4 @  ¤Æî’?d D„(Í; @  ¤Çï’?d PD„Ý,`« @  ¤Èð’?d D„ýÙbU @  ¤Éñ’?d ÐD„ ¦˜, @  ¤Êò’?d E„ÝîÄ @  ¤Ëó’?d PE„Þ´V @  ¤Ìô’?d E„þATö @  ¤Íõ’?d ÐE„>® @  ¤Îö’?d F„“zN @  ¤Ï÷’?d PF„®j5Ò @  ¤Ðø’?d F„ŽŸ7, @  ¤Ñù’?d ÐF„~àÍU @  ¤Òú’?d G„®¨A½ @  ¤Óû’?d PG„­òq @  ¤Ôü’?d G„ @  ¤Õý’?d ÐG„}xûö @  ¤Öþ’?d H„I‡wë @  ¤×ÿ’?d PH„³ =( @  ¤Ø“?d H„“Õ?Ö @  ¤Ù“?d ÐH„cªÅ¯ @  ¤Ú“?d I„³âIG @  ¤Û“?d PI„°¸ ‹ @  ¤Ü“?d I„M u @  ¤Ý“?d ÐI„`2ó  @  ¤Þ“?d J„ývSÍ @  ¤ß“?d PJ„Ñ`Oá @  ¤à“?d J„ñ•M @  ¤á “?d ÐJ„ê·f @  ¤â “?d€ K„¥a'( @  ¥ “?d PK„Gz-Í @  ¥ “?d K„g/3 @  ¥ “?d ÐK„R¹.§ @  ¥“?d L„K÷ݨ @  ¥“?d PL„p¤åB @  ¥“?d L„PQç¼ @  ¥“?d ÐL„nœB¿ @  ¥“?d M„¾ÔÎW @  ¥ “?d PM„xÇwv @  ¥ “?d M„X2uˆ @  ¥ “?d ÐM„mt @  ¥ “?d N„ð@ÔÝ @  ¥ “?d PN„®CŽÛ @  ¥“?d N„޶Œ% @  ¥“?d ÐN„ÚÆ @  ¥“?d O„Í’›. @  ¥“?d PO„ " @  ¥“?d O„+t ñ @  ¥“?d ÐO„B!e @  ¥“?d P„ œ× @  ¥“?d PP„xœá @  ¥ “?d P„&ž @  ¥!“?d ÐP„@; @  ¥"“?d Q„È·ô @  ¥#“?d PQ„Õ @  ¥$“?d Q„.î + @  ¥%“?d ÐQ„Ø ¿ @  ¥&“?d R„†œ­~ @  ¥'“?d PR„ØŸ÷x @  ¥(“?d R„øjõ† @  ¥)“?d ÐR„zIÕ @  ¥ *“?d S„ªHÅ= @  ¥!+“?d PS„l[| @  ¥",“?d S„L®~â @  ¥#-“?d ÐS„y˜v @  ¥$.“?d T„`ÖŒy @  ¥%/“?d PT„[…´“ @  ¥&0“?d T„{p¶m @  ¥'1“?d ÐT„E½n @  ¥(2“?d U„•õŸ† @  ¥)3“?d PU„Sæ&§ @  ¥*4“?d U„s$Y @  ¥+5“?d ÐU„F%%Í @  ¥,6“?d V„Ûa…  @  ¥-7“?d PV„…bß  @  ¥.8“?d V„¥—Ýô @  ¥/9“?d ÐV„6ûF @  ¥0:“?d W„æ³Êÿ @  ¥1;“?d PW„  sÞ @  ¥2<“?d W„Uq  @  ¥3=“?d ÐW„5cp´ @  ¥4>“?d X„œü© @  ¥5?“?d PX„W(èŽ @  ¥6@“?d X„wÝêp @  ¥7A“?d ÐX„IOs @  ¥8B“?d Y„™XÛ @  ¥9C“?d PY„_Kzº @  ¥:D“?d Y„¾xD @  ¥;E“?d ÐY„JˆyÐ @  ¥<F“?d Z„×ÌÙ @  ¥=G“?d PZ„‰Ïƒ @  ¥>H“?d Z„©:é @  ¥?I“?d ÐZ„…W;( @  ¥@J“?d [„U·À @  ¥AK“?d P[„“ á @  ¥BL“?d [„³ù  @  ¥CM“?d Ð[„†Ï ‹ @  ¥DN“?d \„Ÿþ„ @  ¥EO“?d P\„¤ÒÆn @  ¥FP“?d \„„'Ä @  ¥GQ“?d Ð\„ºêa“ @  ¥HR“?d ]„j¢í{ @  ¥IS“?d P]„¬±TZ @  ¥JT“?d ]„ŒDV¤ @  ¥KU“?d Ð]„¹rW0 @  ¥LV“?d ^„$6÷ñ @  ¥MW“?d P^„z5­÷ @  ¥NX“?d ^„ZÀ¯  @  ¥OY“?d Ð^„ɬ4ê @  ¥PZ“?d _„ä¸ @  ¥Q[“?d P_„ß÷# @  ¥R\“?d _„ÿÝ @  ¥uÐ`„S]“?d Ð_„åœ @  ¥T^“?d (`„¶eP @  ¥U_“?d h`„Q2 @  ¥V`“?d ¨`„0tSÌ @  ¥Wa“?d è`„¹öÏ @  ¥Xb“?d (a„Þñz' @  ¥Yc“?d ha„âà @  ¥Zd“?d ¨a„8Áø @  ¥[e“?d èa„ !Àl @  ¥\f“?d (b„e`­ @  ¥]g“?d hb„Îf:« @  ¥^h“?d ¨b„î“8U @  ¥_i“?d èb„lù„ @  ¥`j“?d (c„¼±î @  ¥ak“?d hc„z¢±Ï @  ¥bl“?d ¨c„ZW³1 @  ¥cm“?d èc„oa²¥ @  ¥dn“?d (d„v/Aª @  ¥eo“?d hd„M|y@ @  ¥fp“?d ¨d„m‰{¾ @  ¥gq“?d èd„SDÞ½ @  ¥hr“?d (e„ƒ RU @  ¥is“?d he„Eët @  ¥jt“?d ¨e„eêéŠ @  ¥ku“?d èe„PÜè @  ¥lv“?d (f„͘Hß @  ¥mw“?d hf„“›Ù @  ¥nx“?d ¨f„³n' @  ¥oy“?d èf„ ‹Ä @  ¥pz“?d (g„ðJ, @  ¥q{“?d hg„6Y¾  @  ¥r|“?d ¨g„¬¼ó @  ¥s}“?d èg„#š½g @  ¥t~“?d (h„e1z @  ¥u“?d hh„\qÏ @  ¥v€“?d ¨h„|âs1 @  ¥w“?d èh„B/Ö2 @  ¥x‚“?d (i„’gZÚ @  ¥yƒ“?d hi„Ttãû @  ¥z„“?d ¨i„tá @  ¥{…“?d èi„A·à‘ @  ¥|†“?d (j„Üó@P @  ¥}‡“?d hj„‚ðV @  ¥~ˆ“?d ¨j„¢¨ @  ¥‰“?d èj„m>’X @  ¥€Š“?d (k„½v° @  ¥‹“?d hk„{e§‘ @  ¥‚Œ“?d ¨k„[¥o @  ¥ƒ“?d èk„n¦¤û @  ¥„Ž“?d (l„wèWô @  ¥…“?d hl„L»o @  ¥†“?d ¨l„lNmà @  ¥‡‘“?d èl„RƒÈã @  ¥ˆ’“?d (m„‚ËD  @  ¥‰““?d hm„DØý* @  ¥Š”“?d ¨m„d-ÿÔ @  ¥‹•“?d èm„Qþ@ @  ¥Œ–“?d (n„Ì_^ @  ¥—“?d hn„’\‡ @  ¥Ž˜“?d ¨n„²©y @  ¥™“?d èn„!Åš @  ¥š“?d (o„ñr @  ¥‘›“?d ho„7ž¨S @  ¥’œ“?d ¨o„kª­ @  ¥““?d èo„"]«9 @  ¥”ž“?d (p„œƒ‹ @  ¥•Ÿ“?d hp„:g½ @  ¥– “?d ¨p„’C @  ¥—¡“?d èp„$_±@ @  ¥˜¢“?d (q„ô=¨ @  ¥™£“?d hq„2„‰ @  ¥š¤“?d ¨q„ñ†w @  ¥›¥“?d èq„'LJã @  ¥œ¦“?d (r„ºƒ'" @  ¥§“?d hr„ä€}$ @  ¥ž¨“?d ¨r„ÄuÚ @  ¥Ÿ©“?d èr„FÉ @  ¥ ª“?d (s„–WOa @  ¥¡«“?d hs„PDö@ @  ¥¢¬“?d ¨s„p±ô¾ @  ¥£­“?d ès„E‡õ* @  ¥¤®“?d (t„\É% @  ¥¥¯“?d ht„gš>Ï @  ¥¦°“?d ¨t„Go<1 @  ¥§±“?d èt„y¢™2 @  ¥¨²“?d (u„©êÚ @  ¥©³“?d hu„où¬û @  ¥ª´“?d ¨u„O ® @  ¥«µ“?d èu„z:¯‘ @  ¥¬¶“?d (v„ç~P @  ¥­·“?d hv„¹}UV @  ¥®¸“?d ¨v„™ˆW¨ @  ¥¯¹“?d èv„ äÌK @  ¥°º“?d (w„Ú¬@£ @  ¥±»“?d hw„¿ù‚ @  ¥²¼“?d ¨w„ @  ¦”?d Š„ú¸X @  ¦”?d @Š„‘k¯† @  ¦”?d €Š„¨EM @  ¦”?d ÀŠ„*Ô “ @  ¦ ”?d ‹„ˆrmÜ @  ¦ ”?d @‹„ ãz @  ¦ ”?d €‹„) @  ¦  ”?d À‹„ž‡÷ @  ¦! ”?d Œ„õ°™_ @  ¦"”?d @Œ„w!Ž @  ¦#”?d €Œ„+_X¦ @  ¦$”?d ÀŒ„©ÎOx @  ¦%”?d „ h.7 @  ¦&”?d @„‰ù9é @  ¦'”?d €„#<Ê’ @  ¦(”?d À„¡­ÝL @  ¦)”?d Ž„N* @  ¦*”?d @Ž„Ì–‡ô @  ¦+”?d €Ž„õ¸3? @  ¦,”?d ÀŽ„w)$á @  ¦-”?d „ÕE® @  ¦.”?d @„WRp @  ¦/”?d €„PzŸë @  ¦0”?d À„Òëˆ5 @  ¦1”?d „ÛÙ  @  ¦2”?d @„œJÎþ @  ¦3”?d €„]ƒ! @  ¦4 ”?d À„ß6Û @  ¦5!”?d ‘„}´W” @  ¦6"”?d @‘„ÿ%@J @  ¦7#”?d €‘„Uà³1 @  ¦8$”?d À‘„×q¤ï @  ¦9%”?d ’„8Ûé‰ @  ¦:&”?d @’„ºJþW @  ¦;'”?d €’„ƒdJœ @  ¦<(”?d À’„õ]B @  ¦=)”?d “„£S<  @  ¦>*”?d @“„!Â+Ó @  ¦?+”?d €“„™§Çj @  ¦@,”?d À“„6д @  ¦A-”?d ”„p–Î @  ¦B.”?d @”„òÙ @  ¦C/”?d €”„®yå @  ¦D0”?d À”„,è; @  ¦E1”?d •„ŽNyt @  ¦F2”?d @•„ ßnª @  ¦G3”?d €•„¦Ñ @  ¦H4”?d À•„$‹Š @  ¦I5”?d –„Ë!Çi @  ¦J6”?d @–„I°Ð· @  ¦K7”?d €–„pžd| @  ¦L8”?d À–„òs¢ @  ¦M9”?d —„P©í @  ¦N:”?d @—„Ò83 @  ¦O;”?d €—„Õ\Ȩ @  ¦P<”?d À—„WÍßv @  ¦Q=”?d ˜„ܾÌ @  ¦R>”?d @˜„“M© @  ¦S?”?d €˜„¢ÔSø @  ¦T@”?d À˜„ ED& @  ¦UA”?d ™„‚ã%i @  ¦VB”?d @™„r2· @  ¦WC”?d €™„ª·ÁÌ @  ¦XD”?d À™„(&Ö @  ¦YE”?d š„ÇŒ›t @  ¦ZF”?d @š„EŒª @  ¦[G”?d €š„|38a @  ¦\H”?d Àš„þ¢/¿ @  ¦]I”?d ›„\Nð @  ¦^J”?d @›„Þ•Y. @  ¦_K”?d €›„È÷³ @  ¦`L”?d À›„Jf¤Û @  ¦aM”?d œ„!ƺs @  ¦bN”?d @œ„£W­­ @  ¦cO”?d €œ„ÿ){Š @  ¦dP”?d Àœ„}¸lT @  ¦eQ”?d „ß  @  ¦fR”?d @„]Å @  ¦gS”?d €„÷Jé¾ @  ¦hT”?d À„uÛþ` @  ¦iU”?d ž„šq³ @  ¦jV”?d @ž„à¤Ø @  ¦kW”?d €ž„!Î @  ¦lX”?d Àž„£_Í @  ¦mY”?d Ÿ„ùf‚ @  ¦nZ”?d @Ÿ„ƒhq\ @  ¦o[”?d €Ÿ„„ ¼Ç @  ¦p\”uР„?d ÀŸ„« @  ¦q]”?d  „x˜Ø @  ¦r^”?d X „‡é @  ¦s_”?d ˜ „F `ý @  ¦t`”?d Ø „ıw# @  ¦ua”?d ¡„fl @  ¦vb”?d X¡„䆲 @  ¦wc”?d ˜¡„NCòÉ @  ¦xd”?d Ø¡„ÌÒå @  ¦ye”?d ¢„#x¨q @  ¦zf”?d X¢„¡é¿¯ @  ¦{g”?d ˜¢„˜Ç d @  ¦|h”?d Ø¢„Vº @  ¦}i”?d £„¸ð}õ @  ¦~j”?d X£„:aj+ @  ¦k”?d ˜£„aR¶£ @  ¦€l”?d Ø£„ãá} @  ¦m”?d ¤„ˆc¿Õ @  ¦‚n”?d X¤„ ò¨  @  ¦ƒo”?d ˜¤„VŒ~, @  ¦„p”?d ؤ„Ôiò @  ¦…q”?d ¥„v»½ @  ¦†r”?d X¥„ô*c @  ¦‡s”?d ˜¥„^ïì @  ¦ˆt”?d Ø¥„Ü~ûÆ @  ¦‰u”?d ¦„3Ô¶  @  ¦Šv”?d X¦„±E¡~ @  ¦‹w”?d ˜¦„ˆkµ @  ¦Œx”?d ئ„ úk @  ¦y”?d §„¨\c$ @  ¦Žz”?d X§„*Ítú @  ¦{”?d ˜§„-©¹a @  ¦|”?d ا„¯8®¿ @  ¦‘}”?d ¨„é)Ï @  ¦’~”?d X¨„k¸ØÛ @  ¦“”?d ˜¨„Gçv£ @  ¦”€”?d ب„Åva} @  ¦•”?d ©„gÐ2 @  ¦–‚”?d X©„åAì @  ¦—ƒ”?d ˜©„O„ä— @  ¦˜„”?d Ø©„ÍóI @  ¦™…”?d ª„"¿¾/ @  ¦š†”?d Xª„ .©ñ @  ¦›‡”?d ˜ª„™: @  ¦œˆ”?d ت„‘ ä @  ¦‰”?d «„¹7k« @  ¦žŠ”?d X«„;¦|u @  ¦Ÿ‹”?d ˜«„-Ä–^ @  ¦ Œ”?d Ø«„¯U€ @  ¦¡”?d ¬„ÄõŸ( @  ¦¢Ž”?d X¬„Fdˆö @  ¦£”?d ˜¬„^Ñ @  ¦¤”?d ج„˜‹I @  ¦¥‘”?d ­„:-(@ @  ¦¦’”?d X­„¸¼?ž @  ¦§“”?d ˜­„yÌå @  ¦¨””?d Ø­„èÛ; @  ¦©•”?d ®„B–] @  ¦ª–”?d X®„ýÓƒ @  ¦«—”?d ˜®„Äý5H @  ¦¬˜”?d Ø®„Fl"– @  ¦­™”?d ¯„äÊCÙ @  ¦®š”?d X¯„f[T @  ¦¯›”?d ˜¯„a?™œ @  ¦°œ”?d د„㮎B @  ¦±”?d °„/žßW @  ¦²ž”?d X°„­ȉ @  ¦³Ÿ”?d ˜°„lÆ'r @  ¦´ ”?d ذ„îW0¬ @  ¦µ¡”?d ±„LñQã @  ¦¶¢”?d X±„Î`F= @  ¦·£”?d ˜±„d¥µF @  ¦¸¤”?d ر„æ4¢˜ @  ¦¹¥”?d ²„ žïþ @  ¦º¦”?d X²„‹ø  @  ¦»§”?d ˜²„²!Lë @  ¦¼¨”?d ز„0°[5 @  ¦½©”?d ³„’:z @  ¦¾ª”?d X³„‡-¤ @  ¦¿«”?d ˜³„¨âÁ @  ¦À¬”?d س„*sÖà @  ¦Á­”?d ´„AÓÈk @  ¦Â®”?d X´„ÃBßµ @  ¦Ã¯”?d ˜´„Ÿ< ’ @  ¦Ä°”?d Ø´„­L @  ¦Å±”?d µ„¿  @  ¦Æ²”?d Xµ„=šhÝ @  ¦Ç³”?d ˜µ„—_›¦ @  ¦È´”?d ص„ÎŒx @  ¦Éµ”?d ¶„údÁ @  ¦Ê¶”?d X¶„xõÖÀ @  ¦Ë·”?d ˜¶„AÛb  @  ¦Ì¸”?d ض„ÃJuÕ @  ¦Í¹”?d ·„aìš @  ¦Îº”?d X·„ã}D @  ¦Ï»”?d ˜·„äÎß @  ¦Ð¼”?d Ø·„fˆÙ @  ¦Ñ½”?d ¸„ ™¸» @  ¦Ò¾”?d X¸„¢¯e @  ¦Ó¿”?d ˜¸„“‘U @  ¦ÔÀ”?d ظ„BQ @  ¦ÕÁ”?d ¹„³¦# @  ¦Ö”?d X¹„174À @  ¦×Ô?d ˜¹„›òÇ» @  ¦ØÄ”?d ع„cÐe @  ¦ÙÅ”?d º„öÉ @  ¦ÚÆ”?d Xº„tXŠÝ @  ¦ÛÇ”?d ˜º„Mv> @  ¦ÜÈ”?d غ„Ïç)È @  ¦ÝÉ”?d »„mAH‡ @  ¦ÞÊ”?d X»„ïÐ_Y @  ¦ßË”?d ˜»„ù²µr @  ¦àÌ”?d Ø»„{#¢¬ @  ¦áÍ”?d ¼„ƒ¼ @  ¦âΔ?d€ X¼„æÑ·| @  §Ï”?d ˜¼„[î)r @  §Д?d ؼ„Ù>¬ @  §Ñ”?d ½„¾¤ @  §Ò”?d X½„<³Ð @  §Ó”?d ˜½„XvÑ @  §Ô”?d ؽ„Úç @  §Õ”?d ¾„ûÿ @  §Ö”?d X¾„yn Í @  § ×”?d ˜¾„… Bë @  § Ø”?d ؾ„˜U5 @  § Ù”?d ¿„`wÏ— @  § Ú”?d X¿„âæØI @  § Û”?d ˜¿„†‘tH @uÐÀ„  §Ü”?d Ø¿„c– @  §Ý”?d 0À„q ¾ù @  §Þ”?d pÀ„óœ©' @  §ß”?d °À„÷½1 @  §à”?d ðÀ„uªï @  §á”?d 0Á„b0M @  §â”?d pÁ„ó'“ @  §ã”?d °Á„ô„‹’ @  §ä”?d ðÁ„vœL @  §å”?d 0„W ŽP @  §æ”?d p„Õœ™Ž @  §ç”?d °Â„)ûÖ¨ @  §è”?d ð„«jÁv @  §é”?d 0ÄÌ…[Ô @  §ê”?d pÄNL  @  §ë”?d °Ã„*cà  @  §ì”?d ðĨò÷Õ @  §í”?d 0Ä„±G¯W @  § î”?d pÄ„3Ö¸‰ @  §!ï”?d °Ä„ªá•C @  §"ð”?d ðÄ„(p‚ @  §#ñ”?d 0Å„OŸ? @  §$ò”?d pÅ„Íá @  §%ó”?d °Å„©y£à @  §&ô”?d ðÅ„+è´> @  §'õ”?d 0Æ„ ð¦" @  §(ö”?d pÆ„ˆa±ü @  §)÷”?d °Æ„tþÚ @  §*ø”?d ðÆ„ö—é @  §+ù”?d 0Ç„‘xs¦ @  §,ú”?d pÇ„édx @  §-û”?d °Ç„wžÈy @  §.ü”?d ðÇ„õß§ @  §/ý”?d 0È„Р߇ @  §0þ”?d pÈ„RœÈY @  §1ÿ”?d °È„ÄíÈÀ @  §2•?d ðÈ„F|ß @  §3•?d 0É„!“E¼ @  §4•?d pÉ„£Rb @  §5•?d °É„Çuþc @  §6•?d ðÉ„Eäé½ @  §7•?d 0Ê„düû¡ @  §8•?d pÊ„æmì @  §9•?d °Ê„ £Y @  §:•?d ðÊ„˜›´‡ @  §; •?d 0Ë„ÿt.% @  §< •?d pË„}å9û @  §= •?d °Ë„’•ú @  §> •?d ðË„›‚$ @  §? •?d 0Ì„,±Ü4 @  §@•?d pÌ„® Ëê @  §A•?d °Ì„7æ  @  §B•?d ðÌ„µ†ñþ @  §C•?d 0Í„Òik\ @  §D•?d pÍ„Pø|‚ @  §E•?d °Í„4Ѓ @  §F•?d ðÍ„¶Ç] @  §G•?d 0΄—ÕA @  §H•?d p΄—Ÿ @  §I•?d °Î„éð¹ @  §J•?d ð΄kašg @  §K•?d 0Ï„ ŽÅ @  §L•?d pÏ„Ž @  §M•?d °Ï„êh» @  §N•?d ðÏ„hù¬Ä @  §O•?d 0ЄÇÚœK @  §P•?d pЄEK‹• @  §Q•?d °Ð„AËŸƒ @  §R •?d ðЄÃZˆ] @  §S!•?d 0Ñ„¤µÿ @  §T"•?d pÑ„&$! @  §U#•?d °Ñ„BS©  @  §V$•?d ðÑ„À¾þ @  §W%•?d 0Ò„áÚ¬â @  §X&•?d pÒ„cK»< @  §Y'•?d °Ò„Ÿ,ô @  §Z(•?d ðÒ„½ãÄ @  §[)•?d 0Ó„zRyf @  §\*•?d pÓ„øÃn¸ @  §]+•?d °Ó„œ´Â¹ @  §^,•?d ðÓ„%Õg @  §_-•?d 0Ô„å @  §`.•?d pÔ„…š; @  §a/•?d °Ô„6·ñ @  §b0•?d ðÔ„ž§ / @  §c1•?d 0Õ„ùH: @  §d2•?d pÕ„{Ù-S @  §e3•?d °Õ„®R @  §f4•?d ðÕ„?–Œ @  §g5•?d 0Ö„¼'„ @  §h6•?d pÖ„>¶“N @  §i7•?d °Ö„ÂÑÜh @  §j8•?d ðÖ„@@˶ @  §k9•?d 0ׄ'¯Q @  §l:•?d pׄ¥>FÊ @  §m;•?d °×„ÁIêË @  §n<•?d ðׄCØý @  §o=•?d 0Ø„fÚý5 @  §p>•?d pØ„äKêë @  §q?•?d °Ø„›ëì @  §r@•?d ðØ„’ ü2 @  §sA•?d 0Ù„õåf @  §tB•?d pÙ„wtqN @  §uC•?d °Ù„ÝO @  §vD•?d ðÙ„‘’Ê‘ @  §wE•?d 0Ú„°ŠØ @  §xF•?d pÚ„2ÏS @  §yG•?d °Ú„Î|€u @  §zH•?d ðÚ„Lí—« @  §{I•?d 0Û„+  @  §|J•?d pÛ„©“× @  §}K•?d °Û„Íä¶Ö @  §~L•?d ðÛ„Ou¡ @  §M•?d 0Ü„‘Ï) @  §€N•?d pÜ„™Ø÷ @  §O•?d °Ü„7õ= @  §‚P•?d ðÜ„‚¦âã @  §ƒQ•?d 0Ý„åIxA @  §„R•?d pÝ„gØoŸ @  §…S•?d °Ý„¯Ãž @  §†T•?d ðÝ„>Ô@ @  §‡U•?d 0Þ„ &Æ\ @  §ˆV•?d pÞ„"·Ñ‚ @  §‰W•?d °Þ„ÞО¤ @  §ŠX•?d ðÞ„\A‰z @  §‹Y•?d 0ß„;®Ø @  §ŒZ•?d pß„¹? @  §[•?d uÐà„/°ß„ÝH¨ @  §Ž\•?d ðß„_Ù¿Ù @  §]•?d Hà„W€m @  §^•?d ˆà„wuoì @  §‘_•?d Èà„Ñ‘nÚ @  §’`•?d á„Ùâ2 @  §“a•?d Há„4ï㦠@  §”b•?d ˆá„áX @  §•c•?d Èá„Ò Xy @  §–d•?d â„OMø¸ @  §—e•?d Hâ„q€]» @  §˜f•?d ˆâ„Qu_E @  §™g•?d Èâ„vC @  §šh•?d ã„ß>‰« @  §›i•?d Hã„êˆ? @  §œj•?d ˆã„ÊýŠÁ @  §k•?d Èã„ î3à @  §žl•?d ä„ Àï @  §Ÿm•?d Hä„—Ê|¼ @  § n•?d ˆä„·?~B @  §¡o•?d È䄌lF¨ @  §¢p•?d å„\$Ê@ @  §£q•?d Hå„iËÔ @  §¤r•?d ˆå„IçÉ* @  §¥s•?d Èå„ôp  @  §¦t•?d æ„°ÐÊ @  §§u•?d Hæ„,}uÉ @  §¨v•?d ˆæ„ ˆw7 @  §©w•?d Èæ„R‹-1 @  §ªx•?d ç„‚áÙ @  §«y•?d Hç„·õ M @  §¬z•?d ˆç„—¢³ @  §­{•?d Èç„Q’ @  §®|•?d è„eì— @  §¯}•?d Hè„ö€ l @  §°~•?d ˆè„Öu’ @  §±•?d Èè„N' @  §²€•?d é„MOÂÏ @  §³•?d Hé„xyÃ[ @  §´‚•?d ˆé„XŒÁ¥ @  §µƒ•?d È鄞Ÿx„ @  §¶„•?d ê„ÛØE @  §·…•?d Hê„=}F @  §¸†•?d ˆê„㸠@  §¹‡•?d Èê„Cà%¾ @  §ºˆ•?d ë„“¨©V @  §»‰•?d H넦ž¨Â @  §¼Š•?d ˆë„†kª< @  §½‹•?d Èë„@x @  §¾Œ•?d ì„Y6à @  §¿•?d Hì„u[ZÓ @  §ÀŽ•?d ˆì„U®X- @  §Á•?d Èì„ný`Ç @  §Â•?d 턾µì/ @  §Ã‘•?d Hí„‹ƒí» @  §Ä’•?d ˆí„«vïE @  §Å“•?d Èí„meVd @  §Æ”•?d î„ð!ö¥ @  §Ç••?d Hî„ÎìS¦ @  §È–•?d ˆî„îQX @  §É—•?d Èî„° ^ @  §Ê˜•?d ï„`R‡¶ @  §Ë™•?d Hï„Ud†" @  §Ìš•?d ˆï„u‘„Ü @  §Í›•?d È‚=ý @  §Îœ•?d ð„ \O @  §Ï•?d Hð„ž0¬ @  §Ðž•?d ˆð„¾ÅR @  §ÑŸ•?d Èð„!d @  §Ò •?d ñ„Èi•Œ @  §Ó¡•?d Hñ„ý_” @  §Ô¢•?d ˆñ„ݪ–æ @  §Õ£•?d Èñ„¹/Ç @  §Ö¤•?d ò„†ý @  §×¥•?d Hò„¸0* @  §Ø¦•?d ˆò„˜Å(û @  §Ù§•?d Èò„ÆÆrý @  §Ú¨•?d ó„Žþ @  §Û©•?d Hó„#¸ÿ @  §Üª•?d ˆó„Mý @  §Ý«•?d Èó„Å^D^ @  §Þ¬•?d ô„Ü·Q @  §ß­•?d Hô„^z  @  §à®•?d ˆô„~ ü @  §á¯•?d Èô„EÜ1 @  §â°•?d€ õ„½©¬ @  ¨±•?d Hõ„iyà @  ¨²•?d ˆõ„IŒâï @  ¨³•?d Èõ„JÖ # @  ¨´•?d ö„×’â @  ¨µ•?d Hö„'íú› @  ¨¶•?d ˆö„øe @  ¨·•?d Èö„—©ý @  ¨¸•?d ÷„Gáqñ @  ¨ ¹•?d H÷„·ž‹ˆ @  ¨ º•?d ˆ÷„—k‰v @  ¨ »•?d È÷„”1˺ @  ¨ ¼•?d ø„ ÎG§ @  ¨ ½•?d Hø„P±½Þ @  ¨¾•?d ˆø„pD¿  @  ¨¿•?d Èø„EãÊ @  ¨À•?d ù„•«Fu @  ¨Á•?d Hù„eÔ¼  @  ¨•?d ˆù„E!¾ò @  ¨Õ?d Èù„F{ü> @  ¨Ä•?d ú„Û?\ÿ @  ¨Å•?d Hú„+@¦† @  ¨Æ•?d ˆú„ µ¤x @  ¨Ç•?d Èú„›¡ @  ¨È•?d û„KL-ì @  ¨É•?d Hû„»3ו @  ¨Ê•?d ˆû„›ÆÕk @  ¨Ë•?d Èû„˜œ—§ @  ¨Ì•?d ü„Òd¨ @  ¨Í•?d Hü„q­žÑ @  ¨Ε?d ˆü„QXœ/ @  ¨Ï•?d Èü„âï @  ¨ Е?d ý„ÈVn @  ¨!Ñ•?d Hý„8)”~ @  ¨"Ò•?d ˆý„Ü–€ @  ¨#Ó•?d Èý„†ÔL @  ¨$Ô•?d þ„†Ât @  ¨%Õ•?d Hþ„v½Žô @  ¨&Ö•?d ˆþ„VHŒ  @  ¨'ו?d Èþ„Æù‰v @  ¨(Ø•?d ÿ„±ž @  ¨)Ù•?d Hÿ„æÎÿç @  ¨*Ú•?d ˆÿ„Æ;ý @  ¨+uÐ…Û•?d Èÿ„Åa¿Õ @  ¨,Ü•?d …ŠÕ—$ @  ¨-Ý•?d `…zªm] @  ¨.Þ•?d  …Z_o£ @  ¨/ß•?d à…Ÿ¨ @  ¨0à•?d …Oàƒç @  ¨1á•?d `…¿Ÿyž @  ¨2â•?d  …Ÿj{` @  ¨3ã•?d à…œ09¬ @  ¨4ä•?d …t™m @  ¨5å•?d `…ñ c @  ¨6æ•?d  …Ñþaê @  ¨7ç•?d à…AOd– @  ¨8è•?d …‘è~ @  ¨9é•?d `…ax @  ¨:ê•?d  …Aù @  ¨;ë•?d à…B×R5 @  ¨<ì•?d …[™¡: @  ¨=í•?d `…«æ[C @  ¨>î•?d  …‹Y½ @  ¨?ï•?d à…lR!ï @  ¨@ð•?d …¼­ @  ¨Añ•?d `…LeW~ @  ¨Bò•?d  …lU€ @  ¨Có•?d à…oÊL @  ¨Dô•?d …òŽ· @  ¨Eõ•?d `…ñMô @  ¨Fö•?d  …"O  @  ¨G÷•?d à…²µJv @  ¨Hø•?d …býÆž @  ¨Iù•?d `…’‚<ç @  ¨Jú•?d  …²w> @  ¨Kû•?d à…±-|Õ @  ¨Lü•?d ……ÒðÈ @  ¨Mý•?d `…u­ ± @  ¨Nþ•?d  …UXO @  ¨Oÿ•?d à…°|II @  ¨P–?d …`4Å¡ @  ¨Q–?d ` …K?Ø @  ¨R–?d   …°¾=& @  ¨S–?d à …³äê @  ¨T–?d …. ß+ @  ¨U–?d ` …Þß%R @  ¨V–?d   …þ*'¬ @  ¨W–?d à …n›"Ð @  ¨X–?d …¾Ó®8 @  ¨Y –?d ` …N¬TA @  ¨Z –?d   …nYV¿ @  ¨[ –?d à …ms @  ¨\ –?d …tMç| @  ¨] –?d ` …„2 @  ¨^–?d   …¤Çû @  ¨_–?d à …ía; @  ¨`–?d …=ÉíÓ @  ¨a–?d ` …Ͷª @  ¨b–?d   …íCT @  ¨c–?d à …îW˜ @  ¨d–?d …s]÷Y @  ¨e–?d `…ƒ"  @  ¨f–?d  …£×Þ @  ¨g–?d à…3f ¢ @  ¨h–?d …ã.†J @  ¨i–?d `…Q|3 @  ¨j–?d  …3¤~Í @  ¨k–?d à…0þ< @  ¨l–?d …Ž €³ @  ¨m–?d `…~_zÊ @  ¨n–?d  …^ªx4 @  ¨o–?d à…›]˜ @  ¨p –?d …K”p @  ¨q!–?d `…»jn  @  ¨r"–?d  …›Ÿl÷ @  ¨s#–?d à…˜Å.; @  ¨t$–?d …Žú @  ¨u%–?d `…õþtƒ @  ¨v&–?d  …Õ v} @  ¨w'–?d à…Eºs @  ¨x(–?d …•òÿé @  ¨y)–?d `…e @  ¨z*–?d  …Exn @  ¨{+–?d à…F"E¢ @  ¨|,–?d …_l¶­ @  ¨}-–?d `…¯LÔ @  ¨~.–?d  …æN* @  ¨/–?d à…‹ñI @  ¨€0–?d …[¹Š¡ @  ¨1–?d `…«ÆpØ @  ¨‚2–?d  …‹3r& @  ¨ƒ3–?d à…ˆi0ê @  ¨„4–?d …-+ @  ¨…5–?d `…åRjR @  ¨†6–?d  …ŧh¬ @  ¨‡7–?d à…UmÐ @  ¨ˆ8–?d ……^á8 @  ¨‰9–?d `…u!A @  ¨Š:–?d  …UÔ¿ @  ¨‹;–?d à…VŽ[s @  ¨Œ<–?d …bq×n @  ¨=–?d `…’- @  ¨Ž>–?d  …²û/é @  ¨?–?d à…‡\ZT @  ¨@–?d …WÖ¼ @  ¨‘A–?d `…§k,Å @  ¨’B–?d  …‡ž.; @  ¨“C–?d à…„Äl÷ @  ¨”D–?d …€Ì6 @  ¨•E–?d `…éÿ6O @  ¨–F–?d  …É 4± @  ¨—G–?d à…Y»1Í @  ¨˜H–?d …‰ó½% @  ¨™I–?d `…yŒG\ @  ¨šJ–?d  …YyE¢ @  ¨›K–?d à…Z#n @  ¨œL–?d …Cmôa @  ¨M–?d `…³ @  ¨žN–?d  …“ç æ @  ¨ŸO–?d à…Ú¡r& @  ¨ P–?d … éþÎ @  ¨¡Q–?d `…ú–· @  ¨¢R–?d  …ÚcI @  ¨£S–?d à…Ù9D… @  ¨¤T–?d …D}äD @  ¨¥U–?d `…´= @  ¨¦V–?d  …”÷à @  ¨§W–?d à…F¿ @  ¨¨X–?d …Ô•W @  ¨©Y–?d `…$qo. @  ¨ªZ–?d  …„mÐuÐ … @  ¨«[–?d à…Þ/ @  ¨¬\–?d 8 …vÕñz @  ¨­]–?d x …†ª  @  ¨®^–?d ¸ …¦_ ý @  ¨¯_–?d ø …c¨iQ @  ¨°`–?d 8!…³àå¹ @  ¨±a–?d x!…CŸÀ @  ¨²b–?d ¸!…cj> @  ¨³c–?d ø!…`0_ò @  ¨´d–?d 8"…ýtÿ3 @  ¨µe–?d x"… J @  ¨¶f–?d ¸"…-þ´ @  ¨·g–?d ø"…½OÈ @  ¨¸h–?d 8#…mŽ  @  ¨¹i–?d x#…xtY @  ¨ºj–?d ¸#…½v§ @  ¨»k–?d ø#…¾×4k @  ¨¼l–?d 8$…§™Çd @  ¨½m–?d x$…Wæ= @  ¨¾n–?d ¸$…w?ã @  ¨¿o–?d ø$…RG± @  ¨Àp–?d 8%…@ËY @  ¨Áq–?d x%…°e1  @  ¨Âr–?d ¸%…3Þ @  ¨Ãs–?d ø%…“Êq @  ¨Ät–?d 8&…ŽÑÓ @  ¨Åu–?d x&…þñ+ª @  ¨Æv–?d ¸&…Þ)T @  ¨Çw–?d ø&…Nµ,( @  ¨Èx–?d 8'…žý À @  ¨Éy–?d x'…n‚Z¹ @  ¨Êz–?d ¸'…NwXG @  ¨Ë{–?d ø'…M-‹ @  ¨Ì|–?d 8(…yÒ–– @  ¨Í}–?d x(…‰­lï @  ¨Î~–?d ¸(…©Xn @  ¨Ï–?d ø(…9O> @  ¨Ð€–?d 8)…QqÃÖ @  ¨Ñ–?d x)…¡9¯ @  ¨Ò‚–?d ¸)…û;Q @  ¨Óƒ–?d ø)…‚¡y @  ¨Ô„–?d 8*…åÙ\ @  ¨Õ…–?d x*…ïš#% @  ¨Ö†–?d ¸*…Ïo!Û @  ¨×‡–?d ø*…_Þ$§ @  ¨Øˆ–?d 8+…–¨O @  ¨Ù‰–?d x+…éR6 @  ¨ÚŠ–?d ¸+…_PÈ @  ¨Û‹–?d ø+…\F @  ¨ÜŒ–?d 8,…Eá  @  ¨Ý–?d x,…µwr @  ¨ÞŽ–?d ¸,…•‚Œ @  ¨ß–?d ø,…ÜÄgL @  ¨à–?d 8-… Œë¤ @  ¨á‘–?d x-…üóÝ @  ¨â’–?d€ ¸-…¨Å… @  ©“–?d ø-…JÞ` @  ©”–?d 8.…ך¥¡ @  ©•–?d x.…⬤5 @  ©––?d ¸.…ÂY¦Ë @  ©—–?d ø.…œZüÍ @  ©˜–?d 8/…Lp% @  ©™–?d x/…rßÕ& @  ©š–?d ¸/…R*ר @  © ›–?d ø/…”9nù @  © œ–?d 80…*çÒK @  © –?d x0…ÑÓß @  © ž–?d ¸0…?$Ñ! @  © Ÿ–?d ø0…™ÀÐ @  © –?d 81…Iˆ\ÿ @  ©¡–?d x1…ÚäÇ @  ©¢–?d ¸1…úÅâ @  ©£–?d ø1…<|à @  ©¤–?d 82…¡FÜ @  ©¥–?d x2…”pÝ– @  ©¦–?d ¸2…´…ßh @  ©§–?d ø2…ꆅn @  ©¨–?d 83…:Î † @  ©©–?d x3…¬… @  ©ª–?d ¸3…$ö®{ @  ©«–?d ø3…âåZ @  ©¬–?d 84…û«äU @  ©­–?d x4…ÎåÁ @  ©®–?d ¸4…îhç? @  ©¯–?d ø4…Õ;ßÕ @  ©°–?d 85…sS= @  ©±–?d x5…‡ïn @  © ²–?d ¸5…§ìí @  ©!³–?d ø5…aÿT± @  ©"´–?d 86…ü»ôp @  ©#µ–?d x6…Éõä @  ©$¶–?d ¸6…éx÷ @  ©%·–?d ø6…·{­ @  ©&¸–?d 87…g3!ô @  ©'¹–?d x7…Yþ„÷ @  ©(º–?d ¸7…y †  @  ©)»–?d ø7…¿?( @  ©*¼–?d 88…‹ç³5 @  ©+½–?d x8…¾Ñ²¡ @  ©,¾–?d ¸8…ž$°_ @  ©-¿–?d ø8…Ȥx @  ©.À–?d 89…Ø( @  ©/Á–?d x9…‹´³s @  ©0–?d ¸9…«A± @  ©1Ö?d ø9…mR¬ @  ©2Ä–?d 8:…ð¨m @  ©3Å–?d x:…Å ©ù @  ©4Æ–?d ¸:…åÕ« @  ©5Ç–?d ø:…»Öñ @  ©6È–?d 8;…kž}é @  ©7É–?d x;…USØê @  ©8Ê–?d ¸;…u¦Ú @  ©9Ë–?d ø;…³µc5 @  ©:Ì–?d 8<…ªû: @  ©;Í–?d x<…ŸÍ‘® @  ©<Ζ?d ¸<…¿8“P @  ©=Ï–?d ø<…„k«º @  ©>Ж?d 8=…T#'R @  ©?Ñ–?d x=…xN“ @  ©@Ò–?d ¸=…X»Ÿm @  ©AÓ–?d ø=…ž¨&L @  ©BÔ–?d 8>…ì† @  ©CÕ–?d x>…6Ú‡ @  ©DÖ–?d ¸>…/…ç @  ©E×–?d ø>…H,ßá @  ©FØ–?d 8?…˜dS  @  ©GÙ–?d x?…¦©ö  @  ©HÚ–?duÐ@…7 ¸?…†\ôô @  ©IÛ–?d ø?…@OMÕ @  ©JÜ–?d P@…ƒã÷é @  ©KÝ–?d @…±ã] @  ©LÞ–?d Ð@…– ôƒ @  ©Mß–?d A…bnƒ @  ©Nà–?d PA…àŒy] @  ©Oá–?d A…Ñ„÷ž @  ©Pâ–?d ÐA…Sà@ @  ©Qã–?d B…ŠÓî~ @  ©Rä–?d PB…Bù  @  ©Så–?d B…Ÿí @  ©Tæ–?d ÐB…úÊ @  ©Uç–?d C…[;ú @  ©Vè–?d PC…“Ê,$ @  ©Wé–?d C…cœ @  ©Xê–?d ÐC…ò‹Ù @  ©Yë–?d D…Ð>Ö) @  ©Zì–?d PD…R¯Á÷ @  ©[í–?d D…ÅýÕC @  ©\î–?d ÐD…Gl @  ©]ï–?d E….æaA @  ©^ð–?d PE…¬wvŸ @  ©_ñ–?d E…Œyßì @  ©`ò–?d ÐE…èÈ2 @  ©aó–?d F…×.Æ  @  ©bô–?d PF…U¿ÑÒ @  ©cõ–?d F…ÂíÅf @  ©dö–?d ÐF…@|Ò¸ @  ©e÷–?d G…L¦ˆ @  ©fø–?d PG…Î7V @  ©gù–?d G…Rž´u @  ©hú–?d ÐG…У« @  ©iû–?d H… rI @  ©jü–?d PH…"ã–— @  ©ký–?d H…µ±‚# @  ©lþ–?d ÐH…7 •ý @  ©mÿ–?d I…Qìr @  ©n—?d PI…Ó} ¬ @  ©o—?d I…âu‚o @  ©p—?d ÐI…`䕱 @  ©q—?d J…¹"› @  ©r—?d PJ…;³ŒQ @  ©s—?d J…¬á˜å @  ©t—?d ÐJ….p; @  ©u—?d K…"ªN  @  ©v—?d PK… ;YÕ @  ©w —?d K…<’éö @  ©x —?d ÐK…¾þ( @  ©y —?d L…ã죯 @  ©z —?d PL…a^´ @  ©{ —?d L…ö  ² @  ©|—?d ÐL…t·l @  ©}—?d M…° @  ©~—?d PM…Ÿ†n @  ©—?d M…òÙœ¾ @  ©€—?d ÐM…pH‹` @  ©—?d N…©Ž…^ @  ©‚—?d PN…+’€ @  ©ƒ—?d N…¼M†4 @  ©„—?d ÐN…>Ü‘ê @  ©…—?d O…2PÚ @  ©†—?d PO…°—G @  ©‡—?d O…,>÷' @  ©ˆ—?d ÐO…®¯àù @  ©‰—?d P…Tóò´ @  ©Š—?d PP…Öbåj @  ©‹—?d P…A0ñÞ @  ©Œ—?d ÐP…áæ @  ©—?d Q…7œ| @  ©Ž —?d PQ…µ kÞ @  ©!—?d Q…„å @  ©"—?d ÐQ…”òà @  ©‘#—?d R…ßRüý @  ©’$—?d PR…]Ãë# @  ©“%—?d R…Ê‘ÿ— @  ©”&—?d ÐR…HèI @  ©•'—?d S…DÚ)y @  ©–(—?d PS…ÆK>§ @  ©—)—?d S…Z⎄ @  ©˜*—?d ÐS…Øs™Z @  ©™+—?d T……¿Äª @  ©š,—?d PT….Ót @  ©›-—?d T…|ÇÀ @  ©œ.—?d ÐT…íÐ @  ©/—?d U…{gs @  ©ž0—?d PU…ùöd @  ©Ÿ1—?d U…ÙøÍo @  © 2—?d ÐU…[iÚ± @  ©¡3—?d V…‚¯Ô @  ©¢4—?d PV…>ÃQ @  ©£5—?d V…—l×å @  ©¤6—?d ÐV…ýÀ; @  ©¥7—?d W…'  @  ©¦8—?d PW…›¶Õ @  ©§9—?d W…¦ö @  ©¨:—?d ÐW……ޱ( @  ©©;—?d X…õó“Ê @  ©ª<—?d PX…wb„ @  ©«=—?d X…à0  @  ©¬>—?d ÐX…b¡‡~ @  ©­?—?d Y…fÌo @  ©®@—?d PY…ä]± @  ©¯A—?d Y…ÕU‘r @  ©°B—?d ÐY…WƬ @  ©±C—?d Z…Žˆ’ @  ©²D—?d PZ… “ŸL @  ©³E—?d Z…›Á‹ø @  ©´F—?d ÐZ…Pœ& @  ©µG—?d […Š] @  ©¶H—?d P[…—JÈ @  ©·I—?d [… ²úë @  ©¸J—?d Ð[…‰#í5 @  ©¹K—?d \…Ôï°Å @  ©ºL—?d P\…V~§ @  ©»M—?d \…Á,³¯ @  ©¼N—?d Ð\…C½¤q @  ©½O—?d ]…*7­ @  ©¾P—?d P]…¨¦s @  ©¿Q—?d ]…&¯¿’ @  ©ÀR—?d Ð]…¤>¨L @  ©ÁS—?d ^…}ø¦r @  ©ÂT—?d P^…ÿi±¬ @  ©ÃU—?d ^…h;¥ @  ©ÄV—?d Ð^…ꪲÆ @  ©ÅW—?d _…æpsö @  ©ÆX—?d P_…dád( @  ©ÇY—?d _…øHÔ  @  ©uÐ`…ÈZ—?d Ð_…zÙÃÕ @  ©É[—?d (`…€£Ø² @  ©Ê\—?d h`…2Ïl @  ©Ë]—?d ¨`…•`ÛØ @  ©Ì^—?d è`…ñÌ @  ©Í_—?d (a…ãÌV @  ©Î`—?d ha…a]AØ @  ©Ïa—?d ¨a…PUÏ @  ©Ðb—?d èa…ÒÄØÅ @  ©Ñc—?d (b… Öû @  ©Òd—?d hb…‰“Á% @  ©Óe—?d ¨b…ÁÕ‘ @  ©Ôf—?d èb…œPÂO @  ©Õg—?d (c…Š @  ©Öh—?d hc…¡ @  ©×i—?d ¨c…޲¤‚ @  ©Øj—?d èc… #³\ @  ©Ùk—?d (d…Qïî¬ @  ©Úl—?d hd…Ó~ùr @  ©Ûm—?d ¨d…D,íÆ @  ©Ün—?d èd…ƽú @  ©Ýo—?d (e…¯7YÄ @  ©Þp—?d he…-¦N @  ©ßq—?d ¨e… ¨çi @  ©àr—?d èe…9ð· @  ©ás—?d (f…Vÿþ‰ @  ©ât—?d€ hf…)W @  ªu—?d ¨f…c:BÊ @  ªv—?d èf…á«U @  ªw—?d (g…(8oÉ @  ªx—?d hg…ª©x @  ªy—?d ¨g…ø²—N @  ªz—?d èg…z#€ @  ª{—?d (h…Äìý @  ª|—?d hh…F}êÖ @  ª }—?d ¨h…f @  ª ~—?d èh…–÷Q @  ª —?d (i…J2? @  ª €—?d hi…È„%á @  ª —?d ¨i…šŸÊ¸ @  ª‚—?d èi…Ýf @  ªƒ—?d (j…¢Û²Â @  ª„—?d hj… J¥ @  ª…—?d ¨j…rQJE @  ª†—?d èj…ðÀ]› @  ª‡—?d (k…9SgF @  ªˆ—?d hk…»Âp˜ @  ª‰—?d ¨k…éÙŸÁ @  ªŠ—?d èk…kHˆ @  ª‹—?d (l…ø6Š• @  ªŒ—?d hl…z§K @  ª—?d ¨l…(¼r @  ªŽ—?d èl…ª-eÌ @  ª—?d (m…î=ý @  ª—?d hm…„*# @  ª‘—?d ¨m…ÖdÅz @  ª’—?d èm…TõÒ¤ @  ª“—?d (n…ÿ&š° @  ª ”—?d hn…}·n @  ª!•—?d ¨n…/¬b7 @  ª"–—?d èn…­=ué @  ª#——?d (o…d®O4 @  ª$˜—?d ho…æ?Xê @  ª%™—?d ¨o…´$·³ @  ª&š—?d èo…6µ m @  ª'›—?d (p…[íZ @  ª(œ—?d hp…€Êú„ @  ª)—?d ¨p…ÒÑÝ @  ª*ž—?d èp…P@ @  ª+Ÿ—?d (q…a4cî @  ª, —?d hq…ã¥t0 @  ª-¡—?d ¨q…±¾›i @  ª.¢—?d èq…3/Œ· @  ª/£—?d (r…‰úã @  ª0¤—?d hr… kôÍ @  ª1¥—?d ¨r…Yp” @  ª2¦—?d èr…Ûá J @  ª3§—?d (s…r6— @  ª4¨—?d hs…ã!I @  ª5©—?d ¨s…ÂøÎ @  ª6ª—?d ès…@iÙÎ @  ª7«—?d (t…ÓÛD @  ª8¬—?d ht…Q†Ìš @  ª9­—?d ¨t…#à @  ª:®—?d èt… 4 @  ª;¯—?d (u…-Ïl, @  ª<°—?d hu…¯^{ò @  ª=±—?d ¨u…ýE”« @  ª>²—?d èu…Ôƒu @  ª?³—?d (v…zÍó @  ª@´—?d hv…ø‘Ú- @  ªAµ—?d ¨v…ªŠ5t @  ªB¶—?d èv…("ª @  ªC·—?d (w…áˆw @  ªD¸—?d hw…c© @  ªE¹—?d ¨w…1àð @  ªFº—?d èw…³“÷. @  ªG»—?d (x… \ж @  ªH¼—?d hx…Íh @  ªI½—?d ¨x…ÝÖr1 @  ªJ¾—?d èx…_Geï @  ªK¿—?d (y…žc @  ªLÀ—?d hy…òÍ @  ªMÁ—?d ¨y…Néé” @  ªN—?d èy…ÌxþJ @  ªO×?d (z…v­‘î @  ªPÄ—?d hz…ô<†0 @  ªQÅ—?d ¨z…¦'ii @  ªRÆ—?d èz…$¶~· @  ªSÇ—?d ({…í%Dj @  ªTÈ—?d h{…o´S´ @  ªUÉ—?d ¨{…=¯¼í @  ªVÊ—?d è{…¿>«3 @  ªWË—?d (|…,@©¹ @  ªXÌ—?d h|…®Ñ¾g @  ªYÍ—?d ¨|…üÊQ> @  ªZΗ?d è|…~[Fà @  ª[Ï—?d (}…Ò˜Ñ @  ª\З?d h}…P  @  ª]Ñ—?d ¨}…æV @  ª^Ò—?d è}…€ƒñˆ @  ª_Ó—?d (~…+P¹œ @  ª`Ô—?d h~…©Á®B @  ªaÕ—?d ¨~…ûÚA @  ªbÖ—?d è~…yKVÅ @  ªc×—?d (…°Øl @  ªdØ—?d h…2I{Æ @  ªeÙ—?d ¨…uЀ…'`R”Ÿ @  ªfÚ—?d è…ŸCð= @  ªg€Û—?d @€…{ÍãÌ @  ªh€Ü—?d €€…[8á2 @  ªi€Ý—?d À€…«GK @  ªj€Þ—?d …{—£ @  ªk€ß—?d @…¢mx @  ªl€à—?d €…8Wo† @  ªm€á—?d À…È(•ÿ @  ªn€â—?d ‚…Ul5> @  ªo€ã—?d @‚…ðlí… @  ªp€ä—?d €‚…Йï{ @  ªq€å—?d À‚… æ @  ªr€æ—?d ƒ…ð®™ê @  ªs€ç—?d @ƒ…kä8 @  ªt€è—?d €ƒ…K:ÿ @  ªu€é—?d Àƒ…»nÀ† @  ªv€ê—?d „…¢ 3‰ @  ªw€ë—?d @„…ªÕÒ @  ªx€ì—?d €„…Št×, @  ªy€í—?d À„…z -U @  ªz€î—?d ……ªC¡½ @  ª{€ï—?d @……TYbº @  ª|€ð—?d €……t¬`D @  ª}€ñ—?d À……„Óš= @  ª~€ò—?d †…—:ü @  ª€ó—?d @†…àÀóT @  ª€€ô—?d €†…À5ñª @  ª€õ—?d À†…0J Ó @  ª‚€ö—?d ‡…à‡; @  ªƒ€÷—?d @‡…{H&Ð @  ª„€ø—?d €‡…[½$. @  ª…€ù—?d À‡…«ÂÞW @  ª†€ú—?d ˆ…Ÿ=RJ @  ª‡€û—?d @ˆ…—œ´ @  ªˆ€ü—?d €ˆ…·i¶ï @  ª‰€ý—?d Àˆ…GL– @  ªŠ€þ—?d ‰…—^À~ @  ª‹€ÿ—?d @‰…ƒ1Å @  ªŒ€˜?d €‰…£Ä; @  ª€˜?d À‰…S»çB @  ªŽ€˜?d Š…ÎÿGƒ @  ª€˜?d @Š…kÿŸ8 @  ª€˜?d €Š…K Æ @  ª‘€˜?d ÀŠ…»ug¿ @  ª’€˜?d ‹…k=ëW @  ª“€˜?d @‹…ðwJ¼ @  ª”€˜?d €‹…ЂHB @  ª•€ ˜?d À‹… ý²; @  ª–€ ˜?d Œ…9³A4 @  ª—€ ˜?d @Œ…1§o @  ª˜€ ˜?d €Œ…祑 @  ª™€ ˜?d ÀŒ…á˜_è @  ªš€˜?d …1ÐÓ @  ª›€˜?d @…ÏÊ @  ªœ€˜?d €…ï?ù @  ª€˜?d À…@è€ @  ªž€˜?d Ž…‚HA @  ªŸ€˜?d @Ž…6·J @  ª €˜?d €Ž…÷µ´ @  ª¡€˜?d ÀŽ…æˆOÍ @  ª¢€˜?d …6ÀÃ% @  ª£€˜?d @…­ŠbÎ @  ª¤€˜?d €…`0 @  ª¥€˜?d À…}šI @  ª¦€˜?d …ÃÞ&û @  ª§€˜?d @…ËÀ  @  ª¨€˜?d €…ëŠÂ^ @  ª©€˜?d À…õ8' @  ªª€˜?d ‘…˽´Ï @  ª«€˜?d @‘…¨N @  ª¬€ ˜?d €‘…ˆåLê @  ª­€!˜?d À‘…xš¶“ @  ª®€"˜?d ’…åÞR @  ª¯€#˜?d @’…@ÞÎé @  ª°€$˜?d €’…`+Ì @  ª±€%˜?d À’…T6n @  ª²€&˜?d “…@º† @  ª³€'˜?d @“…ÛVm @  ª´€(˜?d €“…û£“ @  ªµ€)˜?d À“… Üãê @  ª¶€*˜?d ”…’å @  ª·€+˜?d @”…3ö¾ @  ª¸€,˜?d €”…:Æô@ @  ª¹€-˜?d À”…ʹ9 @  ªº€.˜?d •…ñ‚Ñ @  ª»€/˜?d @•…äëAÖ @  ª¼€0˜?d €•…ÄC( @  ª½€1˜?d À•…4a¹Q @  ª¾€2˜?d –…©% @  ª¿€3˜?d @–…³$à  @  ªÀ€4˜?d €–…“Ñâ÷ @  ªÁ€5˜?d À–…c®Ž @  ª€6˜?d —…³æ”f @  ªÀ7˜?d @—…(¬5 @  ªÄ€8˜?d €—…Y7s @  ªÅ€9˜?d À—…ø&Í  @  ªÆ€:˜?d ˜…ÌÙA @  ªÇ€;˜?d @˜…Äx§L @  ªÈ€<˜?d €˜…䥲 @  ªÉ€=˜?d À˜…ò_Ë @  ªÊ€>˜?d ™…ĺÓ# @  ªË€?˜?d @™…WG<é @  ªÌ€@˜?d €™…w²> @  ªÍ€A˜?d À™…‡ÍÄn @  ª΀B˜?d š…‰d¯ @  ªÏ€C˜?d @š…¿‰¼ @  ªЀD˜?d €š…Ÿ|¾ê @  ªÑ€E˜?d Àš…oD“ @  ªÒ€F˜?d ›…¿KÈ{ @  ªÓ€G˜?d @›…$i @  ªÔ€H˜?d €›…ôkn @  ªÕ€I˜?d À›…ô‹‘ @  ªÖ€J˜?d œ…íÅb @  ª×€K˜?d @œ…åd„C @  ªØ€L˜?d €œ…Å‘†½ @  ªÙ€M˜?d Àœ…5î|Ä @  ªÚ€N˜?d …å¦ð, @  ªÛ€O˜?d @…¼3+ @  ªÜ€P˜?d €…;I1Õ @  ªÝ€Q˜?d À…Ë6ˬ @  ªÞ€R˜?d ž…Vrkm @  ª߀S˜?d @ž…ât”f @  ªà€T˜?d €ž…–˜ @  ªá€U˜?d Àž…2þlá @  ªâ€V˜?d€ Ÿ…–uü¯ @  «€W˜?d @Ÿ…ì~m @  «€X˜?d €Ÿ…Ì‹“ @  «€Y˜uР…?d ÀŸ…ù½ @  «€Z˜?d  …ÌñgÈ @  « [˜?d X … âÞé @  « \˜?d ˜ …*Ü @  « ]˜?d Ø …Úy @  « ^˜?d ¡…Ä’õü @  « _˜?d X¡…bvôÊ @  « `˜?d ˜¡…Bƒö4 @  « a˜?d Ø¡…wµ÷  @  « b˜?d ¢…êñWa @  « c˜?d X¢…,âî@ @  « d˜?d ˜¢… ì¾ @  « e˜?d Ø¢…Ÿ{w] @  « f˜?d £…O3ûµ @  « g˜?d X£…0¡³ @  « h˜?d ˜£…1Å£M @  « i˜?d Ø£…ó¢Ù @  « j˜?d ¤…½QÖ @  « k˜?d X¤…Û®è÷ @  « l˜?d ˜¤…û[ê  @  « m˜?d ؤ…Å–O  @  « n˜?d ¥…ÞÃâ @  « o˜?d X¥….û @  « p˜?d ˜¥…xùö @  « q˜?d Ø¥…;Nøb @  « r˜?d ¦…¦ X£ @  « s˜?d X¦…`á‚ @  « t˜?d ˜¦…@ìã| @  « u˜?d ئ…†_/ @  « v˜?d §…ÎÓÇ @  «! w˜?d X§…L͉Á @  «" x˜?d ˜§…l8‹? @  «# y˜?d ا…YŠ« @  «$ z˜?d ¨…mñ¶ @  «% {˜?d X¨…«â¿— @  «& |˜?d ˜¨…‹½i @  «' }˜?d ب…µÚj @  «( ~˜?d ©…e’”‚ @  «) ˜?d X©….àÔ7 @  «* €˜?d ˜©…ÖÉ @  «+ ˜?d Ø©…;#×] @  «, ‚˜?d ª…¦gwœ @  «- ƒ˜?d Xª…`tν @  «. „˜?d ˜ª…@ÌC @  «/ …˜?d ت…ÓíW  @  «0 †˜?d «…¥ÛH @  «1 ‡˜?d X«…]¦N @  «2 ˆ˜?d ˜«…}Sƒ° @  «3 ‰˜?d Ø«…He‚$ @  «4 Š˜?d ¬…Q+q+ @  «5 ‹˜?d X¬…—8È  @  «6 Œ˜?d ˜¬…·ÍÊô @  «7 ˜?d ج…‰o÷ @  «8 Ž˜?d ­…YHã @  «9 ˜?d X­…bÛõ @  «: ˜?d ˜­…BîÙ  @  «; ‘˜?d Ø­…wØØŸ @  «< ’˜?d ®…êœx^ @  «= “˜?d X®…,Á @  «> ”˜?d ˜®… zà @  «? •˜?d Ø®… y@ @  «@ –˜?d ¯…ð_õ¨ @  «A —˜?d X¯…®\¯® @  «B ˜˜?d ˜¯…Ž©­P @  «C ™˜?d د…»Ÿ¬Ä @  «D š˜?d °…Av @  «E ›˜?d X°…ÃR©W @  «F œ˜?d ˜°…ã§«© @  «G ˜?d ذ…Ýjª @  «H ž˜?d ±… "‚B @  «I Ÿ˜?d X±…«Æƒt @  «J  ˜?d ˜±…‹3Š @  «K ¡˜?d ر…¾€ @  «L ¢˜?d ²…#A ß @  «M £˜?d X²…åR™þ @  «N ¤˜?d ˜²…ŧ› @  «O ¥˜?d ز…VËã @  «P ¦˜?d ³…†ƒŒ  @  «Q §˜?d X³…Ø€Ö  @  «R ¨˜?d ˜³…øuÔó @  «S ©˜?d س…ÍCÕg @  «T ª˜?d ´…Ô &h @  «U «˜?d X´…ŸI @  «V ¬˜?d ˜´…2ë· @  «W ­˜?d Ø´… &8´ @  «X ®˜?d µ…Ün´\ @  «Y ¯˜?d Xµ…ç=Œ¶ @  «Z °˜?d ˜µ…ÇÈŽH @  «[ ±˜?d ص…òþÜ @  «\ ²˜?d ¶…oº/ @  «] ³˜?d X¶…©©–< @  «^ ´˜?d ˜¶…‰\” @  «_ µ˜?d ض… 6(‘ @  «` ¶˜?d ·…Û~¤y @  «a ·˜?d X·……}þ @  «b ¸˜?d ˜·…¥ˆü @  «c ¹˜?d Ø·…¾ý @  «d º˜?d ¸…¤Aq @  «e »˜?d X¸…bRÈ) @  «f ¼˜?d ˜¸…B§Ê× @  «g ½˜?d ظ…|joÔ @  «h ¾˜?d ¹…¬"ã< @  «i ¿˜?d X¹…ú–÷ @  «j À˜?d ˜¹…Úcõå @  «k Á˜?d ع…ïUôq @  «l ˜?d º…rT° @  «m Ø?d Xº…´í‘ @  «n Ę?d ˜º…”÷ïo @  «o Ř?d غ…›tŒ @  «p Ƙ?d »…×Óød @  «q ǘ?d X»…‰Ð¢b @  «r Ș?d ˜»…©% œ @  «s ɘ?d Ø»…œ¡ @  «t ʘ?d ¼……]R @  «u ˘?d X¼…CNë& @  «v ̘?d ˜¼…c»éØ @  «w ͘?d ؼ…]vLÛ @  «x Θ?d ½…>À3 @  «y Ϙ?d X½…¶møÙ @  «z И?d ˜½…–˜ú' @  «{ ј?d ؽ…£®û³ @  «| Ò˜?d ¾…>ê[r @  «} Ó˜?d X¾…øùâS @  «~ Ô˜?d ˜¾…Ø à­ @  « Õ˜?d ؾ…7j] @  «€ Ö˜?d ¿…Çæµ @  « ט?d X¿…™|¼³ @  «‚ ؘ?d ˜¿…¹‰¾M @uÐÀ…  «ƒ Ù˜?d Ø¿…µxc  @  «„Ú˜?d 0À…ш2^ @  «…Û˜?d pÀ…›‹ @  «†ܘ?d °À…7n‰ @  «‡ݘ?d ðÀ… £,‚ @  «ˆÞ˜?d 0Á…Ùë j @  «‰ߘ?d pÁ…¡\ @  «Šà˜?d °Á…_ú£¢ @  «‹á˜?d ðÁ…jÌ¢6 @  «Œâ˜?d 0Â…÷ˆ÷ @  «ã˜?d pÂ…1›»Ö @  «Žä˜?d °Â…n¹( @  «å˜?d ðÂ…‚"Ë @  «æ˜?d 0Ã…RJ®# @  «‘ç˜?d pÃ… Iô% @  «’è˜?d °Ã…,¼öÛ @  «“é˜?d ðÃ…Š÷O @  «”ê˜?d 0Ä…Ä@ @  «•ë˜?d pÄ…Æ×½a @  «–ì˜?d °Ä…æ"¿Ÿ @  «—í˜?d ðÄ…Øïœ @  «˜î˜?d 0Å…§–t @  «™ï˜?d pÅ…3ô®ž @  «šð˜?d °Å…¬` @  «›ñ˜?d ðÅ…&7­ô @  «œò˜?d 0Æ…»s 5 @  «ó˜?d pÆ…}`´ @  «žô˜?d °Æ…]•¶ê @  «Ÿõ˜?d ðÆ…ßÿ ¹ @  « ö˜?d 0Ç…·†Q @  «¡÷˜?d pÇ…Q´ÜW @  «¢ø˜?d °Ç…qAÞ© @  «£ù˜?d ðÇ…Dwß= @  «¤ú˜?d 0È…pˆS  @  «¥û˜?d pÈ…¶›ê @  «¦ü˜?d °È…–nèÿ @  «§ý˜?d ðÈ…¨£Mü @  «¨þ˜?d 0É…xëÁ @  «©ÿ˜?d pÉ…LþÔ­ @  «ª™?d °É…l ÖS @  ««™?d ðÉ…Y=×Ç @  «¬™?d 0Ê…Äyw @  «­™?d pÊ…jÎ' @  «®™?d °Ê…"ŸÌÙ @  «¯™?d ðÊ…±óW: @  «°™?d 0Ë…a»ÛÒ @  «±™?d pË…?¸Ô @  «²™?d °Ë…Mƒ* @  «³ ™?d ðË…*{‚¾ @  «´ ™?d 0Ì…35q± @  «µ ™?d pÌ…õ&È @  «¶ ™?d °Ì…ÕÓÊn @  «· ™?d ðÌ…ëom @  «¸™?d 0Í…;Vã… @  «¹™?d pÍ…Ûo @  «º™?d °Í… ðÙ‘ @  «»™?d ðÍ…ÆØ @  «¼™?d 0Î…ˆ‚xÄ @  «½™?d pÎ…N‘Áå @  «¾™?d °Î…ndà @  «¿™?d ðÎ…B yÚ @  «À™?d 0Ï…’Aõ2 @  «Á™?d pÏ…ÌB¯4 @  «Â™?d °Ï…ì·­Ê @  «Ã™?d ðÏ…Ù¬^ @  «Ä™?d 0Ð…g_ì @  «Å™?d pÐ…¡L©Í @  «Æ™?d °Ð…¹«3 @  «Ç™?d ðÐ…¿t0 @  «È™?d 0Ñ…o<‚Ø @  «É™?d pÑ…ÉØƒî @  «Ê ™?d °Ñ…é- @  «Ë!™?d ðÑ…Ü€„ @  «Ì"™?d 0Ò…A_ E @  «Í#™?d pÒ…‡L™d @  «Î$™?d °Ò…§¹›š @  «Ï%™?d ðÒ…4Õy @  «Ð&™?d 0Ó…䌑 @  «Ñ'™?d pÓ…ºžÖ— @  «Ò(™?d °Ó…škÔi @  «Ó)™?d ðÓ…¯]Õý @  «Ô*™?d 0Ô…¶&ò @  «Õ+™?d pÔ…pŸÓ @  «Ö,™?d °Ô…Põ- @  «×-™?d ðÔ…n88. @  «Ø.™?d 0Õ…¾p´Æ @  «Ù/™?d pÕ……#Œ, @  «Ú0™?d °Õ…¥ÖŽÒ @  «Û1™?d ðÕ…àF @  «Ü2™?d 0Ö… ¤/‡ @  «Ý3™?d pÖ…Ë·–¦ @  «Þ4™?d °Ö…ëB”X @  «ß5™?d ðÖ…i((  @  «à6™?d 0×…¹`¤ã @  «á7™?d p×…çcþå @  «â8™?d€ °×…AÀT¢ @  ¬9™?d ð×…•· @  ¬:™?d 0Ø…¡H‘ @  ¬;™?d pØ…¢ÓÎ @  ¬<™?d °Ø…‚çÑ0 @  ¬=™?d ðØ…r˜+I @  ¬>™?d 0Ù…¢Ð§¡ @  ¬?™?d pÙ…:Öìü @  ¬@™?d °Ù…#î @  ¬ A™?d ðÙ…ê\{ @  ¬ B™?d 0Ú…w´º @  ¬ C™?d pÚ…tBöv @  ¬ D™?d °Ú…T·ôˆ @  ¬ E™?d ðÚ…¤Èñ @  ¬F™?d 0Û…t€‚ @  ¬G™?d pÛ…I¹… @  ¬H™?d °Û…ie»{ @  ¬I™?d ðÛ…™A @  ¬J™?d 0Ü…€T²  @  ¬K™?d pÜ…ƒðÁ @  ¬L™?d °Ü…£ûò? @  ¬M™?d ðÜ…S„F @  ¬N™?d 0Ý…ƒÌ„® @  ¬O™?d pÝ…v-ã> @  ¬P™?d °Ý…VØáÀ @  ¬Q™?d ðÝ…¦§¹ @  ¬R™?d 0Þ…;ã»x @  ¬S™?d pÞ…8¹ù´ @  ¬T™?d °Þ…LûJ @  ¬U™?d ðÞ…è33 @  ¬V™?d 0ß…8{Û @  ¬W™?d pß…m‘÷ @  ¬ X™?d uÐà…/°ß…4˜“  @  ¬!Y™?d ðß…Äçip @  ¬"Z™?d Hà…ÝC7† @  ¬#[™?d ˆà…|}`j @  ¬$\™?d Èà…þìw´ @  ¬%]™?d á…\Jû @  ¬&^™?d Há…ÞÛ% @  ¬'_™?d ˆá…éJI @  ¬(`™?d Èá…–x]— @  ¬)a™?d â…yÒñ @  ¬*b™?d Hâ…ûC/ @  ¬+c™?d ˆâ…Z}Pà @  ¬,d™?d Èâ…ØìG @  ¬-e™?d ã…zJ&R @  ¬.f™?d Hã…øÛ1Œ @  ¬/g™?d ˆã…g¯0 @  ¬0h™?d Èã…å>î @  ¬1i™?d ä…ŽžF @  ¬2j™?d Hä… ˜ @  ¬3k™?d ˆä…­1Vt @  ¬4l™?d Èä…/ Aª @  ¬5m™?d å… å @  ¬6n™?d Hå…—7; @  ¬7o™?d ˆå…XE‹ @  ¬8p™?d Èå…ÚƒRU @  ¬9q™?d æ…5)3 @  ¬:r™?d Hæ…·¸í @  ¬;s™?d ˆæ…†_ @  ¬<t™?d Èæ…”Hß @  ¬=u™?d ç…6±) @  ¬>v™?d Hç…´ >N @  ¬?w™?d ˆç…”U1Ð @  ¬@x™?d Èç…Ä& @  ¬Ay™?d è…PÕG´ @  ¬Bz™?d Hè…ÒDPj @  ¬C{™?d ˆè…sz† @  ¬D|™?d Èè…ñëX @  ¬E}™?d é…SMq @  ¬F~™?d Hé…ÑÜfÉ @  ¬G™?d ˆé…öxl& @  ¬H€™?d Èé…té{ø @  ¬I™?d ê…›C6ž @  ¬J‚™?d Hê…Ò!@ @  ¬Kƒ™?d ˆê…¸ìv¬ @  ¬L„™?d Èê…:}ar @  ¬M…™?d ë…˜Û= @  ¬N†™?d Hë…Jã @  ¬O‡™?d ˆë……>9_ @  ¬Pˆ™?d Èë…¯. @  ¬Q‰™?d ì…l0) @  ¬RŠ™?d Hì…îž'÷ @  ¬S‹™?d ˆì…O p @  ¬TŒ™?d Èì…Í1gÅ @  ¬U™?d í…o—Š @  ¬VŽ™?d Hí…íT @  ¬W™?d ˆí…ºƒcä @  ¬X™?d Èí…8t: @  ¬Y‘™?d î…׸9\ @  ¬Z’™?d Hî…U).‚ @  ¬[“™?d ˆî…ôyn @  ¬\”™?d Èî…v†n° @  ¬]•™?d ï…Ô ÿ @  ¬^–™?d Hï…V±! @  ¬_—™?d ˆï…ØÃ- @  ¬`˜™?d Èï…ZRó @  ¬a™™?d ð…–bWæ @  ¬bš™?d Hð…ó@8 @  ¬c›™?d ˆð…µÍÔ @  ¬dœ™?d Èð…7\  @  ¬e™?d ñ…•úaE @  ¬fž™?d Hñ…kv› @  ¬gŸ™?d ˆñ…ÝY=÷ @  ¬h ™?d Èñ…_È*) @  ¬i¡™?d ò…°bgO @  ¬j¢™?d Hò…2óp‘ @  ¬k£™?d ˆò…“Í'} @  ¬l¤™?d Èò…\0£ @  ¬m¥™?d ó…³úQì @  ¬n¦™?d Hó…1kF2 @  ¬o§™?d ˆó…®hŽ @  ¬p¨™?d Èó…,ŽP @  ¬q©™?d ô…G.aø @  ¬rª™?d Hô…Å¿v& @  ¬s«™?d ˆô…d!Ê @  ¬t¬™?d Èô…æ6 @  ¬u­™?d õ…D¶W[ @  ¬v®™?d Hõ…Æ'@… @  ¬w¯™?d ˆõ…‘¢25 @  ¬x°™?d Èõ…3%ë @  ¬y±™?d ö…ü™h @  ¬z²™?d Hö…~S @  ¬{³™?d ˆö…ß6(¿ @  ¬|´™?d Èö…]§?a @  ¬}µ™?d ÷…ÿ^. @  ¬~¶™?d H÷…}Ið @  ¬·™?d ˆ÷…¾³v_ @  ¬€¸™?d È÷…<"a @  ¬¹™?d ø…z3; @  ¬‚º™?d Hø…ø¢å @  ¬ƒ»™?d ˆø…Yœ@  @  ¬„¼™?d Èø…Û W× @  ¬…½™?d ù…y«6˜ @  ¬†¾™?d Hù…û:!F @  ¬‡¿™?d ˆù…ÁX; @  ¬ˆÀ™?d Èù…CÉhå @  ¬‰Á™?d ú…¬c%ƒ @  ¬Š™?d Hú….ò2] @  ¬‹Ù?d ˆú…Ìe± @  ¬ŒÄ™?d Èú… ]ro @  ¬Å™?d û…¯û  @  ¬ŽÆ™?d Hû…-jþ @  ¬Ç™?d ˆû…²*B @  ¬È™?d Èû…0=œ @  ¬‘É™?d ü…[/#4 @  ¬’Ê™?d Hü…Ù¾4ê @  ¬“Ë™?d ˆü…x€c @  ¬”Ì™?d Èü…útØ @  ¬•Í™?d ý…X·— @  ¬–Ι?d Hý…Ú&I @  ¬—Ï™?d ˆý…£pù @  ¬˜Й?d Èý…2g' @  ¬™Ñ™?d þ…à˜*A @  ¬šÒ™?d Hþ…b =Ÿ @  ¬›Ó™?d ˆþ…Ã7js @  ¬œÔ™?d Èþ…A¦}­ @  ¬Õ™?d ÿ…ãâ @  ¬žÖ™?d Hÿ…a‘ < @  ¬Ÿ×™?d ˆÿ…ïã0 @  ¬ uІؙ?d Èÿ…mrî @  ¬¡Ù™?d †m°^ @  ¬¢Ú™?d `†™ü§€ @  ¬£Û™?d  †8Âðl @  ¬¤Ü™?d à†ºSç² @  ¬¥Ý™?d †õ†ý @  ¬¦Þ™?d `†šd‘# @  ¬§ß™?d  †PVÚO @  ¬¨à™?d à†ÒÇÍ‘ @  ¬©á™?d †=m€÷ @  ¬ªâ™?d `†¿ü—) @  ¬«ã™?d  †ÂÀÅ @  ¬¬ä™?d à†œS× @  ¬­å™?d †>õ¶T @  ¬®æ™?d `†¼d¡Š @  ¬¯ç™?d  †#6 @  ¬°è™?d à†¡˜è @  ¬±é™?d †Ê!†@ @  ¬²ê™?d `†H°‘ž @  ¬³ë™?d  †éŽÆr @  ¬´ì™?d à†kѬ @  ¬µí™?d †ɹ°ã @  ¬¶î™?d `†K(§= @  ¬·ï™?d  †­Õ @  ¬¸ð™?d à†ž<ÂS @  ¬¹ñ™?d †q–5 @  ¬ºò™?d `†ó˜ë @  ¬»ó™?d  †R9Ï @  ¬¼ô™?d à†ШØÙ @  ¬½õ™?d †r¹– @  ¬¾ö™?d `†ðŸ®H @  ¬¿÷™?d  †Ðê¡Ö @  ¬Àø™?d à†R{¶ @  ¬Áù™?d †jײ @  ¬Âú™?d `†–ûÀl @  ¬Ãû™?d  †7Å—€ @  ¬Äü™?d à†µT€^ @  ¬Åý™?d †òá @  ¬Æþ™?d ` †•cöÏ @  ¬Çÿ™?d   †‚œ  @  ¬Èš?d à †ý‹× @  ¬Éš?d †¹Æ± @  ¬Êš?d ` †(Ño @  ¬Ëš?d   †1†ƒ @  ¬Ìš?d à †³‡‘] @  ¬Íš?d †!ð @  ¬Îš?d ` †“°çÌ @  ¬Ïš?d   † ÄÉp @  ¬Ðš?d à †ŽUÞ® @  ¬Ñ š?d †åõÀ @  ¬Ò š?d ` †gdר @  ¬Ó š?d   †ÆZ€4 @  ¬Ô š?d à †DË—ê @  ¬Õ š?d †æmö¥ @  ¬Öš?d ` †düá{ @  ¬×š?d   †3y“Ë @  ¬Øš?d à †±è„ @  ¬Ùš?d †^BÉs @  ¬Úš?d `†ÜÓÞ­ @  ¬Ûš?d  †}í‰A @  ¬Üš?d à†ÿ|žŸ @  ¬Ýš?d †]ÚÿÐ @  ¬Þš?d `†ßKè @  ¬ßš?d  †Q9á @  ¬àš?d à†Ó¨öÜ @  ¬áš?d †˜§É @  ¬âš?d€ `†éʬ± @  ­š?d  †©µ³t @  ­š?d à†+$¤ª @  ­š?d †LË> @  ­š?d `†ÎZ)Ö @  ­š?d  †ÊÚ=À @  ­ š?d à†HK* @  ­!š?d †iS8 @  ­"š?d `†ëÂ/Ü @  ­ #š?d  †µƒÝ @  ­ $š?d à† $” @  ­ %š?d †jË¡ @  ­ &š?d `†èZ @  ­ 'š?d  †=VY @  ­(š?d à†–¬A‡ @  ­)š?d †ž>µ @  ­*š?d `†Ž)k @  ­+š?d  †xù…j @  ­,š?d à†úh’´ @  ­-š?d †‡ @  ­.š?d `†È @  ­/š?d  ††!2 @  ­0š?d à†°%Ü @  ­1š?d †%¨7À @  ­2š?d `†§9  @  ­3š?d  †ÃNŒ @  ­4š?d à†Aß›Á @  ­5š?d †&0c @  ­6š?d `†¤¡½ @  ­7š?d  †XÆY› @  ­8š?d à†ÚWNE @  ­9š?d †îSiÕ @  ­ :š?d `†lÂ~  @  ­!;š?d  †µÒ  @  ­"<š?d à†Š$ÅÔ @  ­#=š?d †íË_v @  ­$>š?d `†oZH¨ @  ­%?š?d  †›ŠI¯ @  ­&@š?d à†^q @  ­'Aš?d †8Lm @  ­(Bš?d `†º’[³ @  ­)Cš?d  †Þå÷² @  ­*Dš?d à†\tàl @  ­+Eš?d †;›zÎ @  ­,Fš?d `†¹ m @  ­-Gš?d  †Em"6 @  ­.Hš?d à†Çü5è @  ­/Iš?d †ÏOJÚ @  ­0Jš?d `†MÞ] @  ­1Kš?d  †)©ñ @  ­2Lš?d à†«8æÛ @  ­3Mš?d †Ì×|y @  ­4Nš?d `†NFk§ @  ­5Oš?d  †×qFm @  ­6Pš?d à†UàQ³ @  ­7Qš?d †tøC¯ @  ­8Rš?d `†öiTq @  ­9Sš?d  †’øp @  ­:Tš?d à†ï® @  ­;Uš?d †w`u  @  ­<Vš?d `†õñbÒ @  ­=Wš?d  † –-ôuÐ † @  ­>Xš?d à†‹:* @  ­?Yš?d 8 †TðIS @  ­@Zš?d x †Öa^ @  ­A[š?d ¸ †²òŒ @  ­B\š?d ø †0‡åR @  ­C]š?d 8!†Whð @  ­D^š?d x!†Õùh. @  ­E_š?d ¸!†Ñy|8 @  ­F`š?d ø!†Sèkæ @  ­Gaš?d 8"†rðyú @  ­Hbš?d x"†ðan$ @  ­Icš?d ¸"†”Â% @  ­Jdš?d ø"†‡Õû @  ­Keš?d 8#†qhOY @  ­Lfš?d x#†óùX‡ @  ­Mgš?d ¸#†ž¡ @  ­Nhš?d ø#† @  ­Oiš?d 8$†…¼M @  ­Pjš?d x$†-h“ @  ­Qkš?d ¸$†cZÄ’ @  ­Rlš?d ø$†áËÓL @  ­Smš?d 8%††$Iî @  ­Tnš?d x%†µ^0 @  ­Uoš?d ¸%†‚sú @  ­Vpš?d ø%†d$ @  ­Wqš?d 8&†> v8 @  ­Xrš?d x&†¼šaæ @  ­Ysš?d ¸&†ØíÍç @  ­Ztš?d ø&†Z|Ú9 @  ­[uš?d 8'†=“@› @  ­\vš?d x'†¿WE @  ­]wš?d ¸'†Cec @  ­^xš?d ø'†Áô½ @  ­_yš?d 8(†õð(- @  ­`zš?d x(†wa?ó @  ­a{š?d ¸(†“ò @  ­b|š?d ø(†‘‡„, @  ­c}š?d 8)†öhŽ @  ­d~š?d x)†tù P @  ­eš?d ¸)†ï\Å @  ­f€š?d ø)†~K @  ­gš?d 8*†>fY @  ­h‚š?d x*†¼÷NÙ @  ­iƒš?d ¸*†Ø€âØ @  ­j„š?d ø*†Zõ @  ­k…š?d 8+†=þo¤ @  ­l†š?d x+†¿oxz @  ­m‡š?d ¸+†C7\ @  ­nˆš?d ø+†Á™ ‚ @  ­o‰š?d 8,†É*_° @  ­pŠš?d x,†K»Hn @  ­q‹š?d ¸,†/Ìäo @  ­rŒš?d ø,†­]ó± @  ­sš?d 8-†ʲi @  ­tŽš?d x-†H#~Í @  ­uš?d ¸-†ÑS @  ­vš?d ø-†S…DÙ @  ­w‘š?d 8.†rVÅ @  ­x’š?d x.†ð A @  ­y“š?d ¸.†”{í @  ­z”š?d ø.†êúÄ @  ­{•š?d 8/†q`f @  ­|–š?d x/†ó”w¸ @  ­}—š?d ¸/†ó8ž @  ­~˜š?d ø/†b/@ @  ­™š?d 80†~Ü @  ­€šš?d x0†ü‡ @  ­›š?d ¸0†˜ðµ @  ­‚œš?d ø0†a¢Ý @  ­ƒš?d 81†}Ž8 @  ­„žš?d x1†ÿ/¡ @  ­…Ÿš?d ¸1†ûŸ;· @  ­† š?d ø1†y,i @  ­‡¡š?d 82†X>u @  ­ˆ¢š?d x2†Ú‡)« @  ­‰£š?d ¸2†¾ð…ª @  ­Š¤š?d ø2††E½EØ @  ­¸Òš?d x>†Ç,R @  ­¹Óš?d ¸>†£[þ @  ­ºÔš?d ø>†!ÊéÙ @  ­»Õš?d 8?†F%s{ @  ­¼Öš?d x?†Ä´d¥ @  ­½ך?duÐ@†7 ¸?†8Ó+ƒ @  ­¾Øš?d ø?†ƒ…àˆ @  ­¿ Ùš?d P@†îÕ÷« @  ­À Úš?d @†Î õU @  ­Á Ûš?d Ð@†3Lt @  ­ Üš?d A†Ø{Àœ @  ­à Ýš?d PA†íMÁ @  ­Ä Þš?d A†͸Ãö @  ­Å ßš?d ÐA†k\ÂÀ @  ­Æ àš?d B†öb @  ­Ç áš?d PB†ÈÕÇ @  ­È âš?d B†è Åü @  ­É ãš?d ÐB†.3|Ý @  ­Ê äš?d C†þ{ð5 @  ­Ë åš?d PC†ËMñ¡ @  ­Ì æš?d C†ë¸ó_ @  ­Í çš?d ÐC†µ»©Y @  ­Î èš?d D†¬õZV @  ­Ï éš?d PD†?™Áµ @  ­Ð êš?d D†lÃK @  ­Ñ ëš?d ÐD†Ùzj @  ­Ò ìš?d E† 7ö‚ @  ­Ó íš?d PE†<÷ @  ­Ô îš?d E†ôõè @  ­Õ ïš?d ÐE†'§Í @  ­Ö ðš?d F†ºãmà @  ­× ñš?d PF†„.ÈÀ @  ­Ø òš?d F†¤ÛÊ> @  ­Ù óš?d ÐF†bÈs @  ­Ú ôš?d G†²€ÿ÷ @  ­Û õš?d PG†‡¶þc @  ­Ü öš?d G†§Cü @  ­Ý ÷š?d ÐG†ù@¦› @  ­Þ øš?d H†Í¿*† @  ­ß ùš?d PH†OÕ–Õ @  ­à úš?d H†o ”+ @  ­á ûš?d ÐH†©3-  @  ­â üš?d€ I†¸Î @  ® ›?d PO†”A4» @  ® ›?d O†´´6E @  ® ›?d ÐO†/þ—® @  ® ›?d P†‘ + @  ® ›?d PP†a_Ñe @  ® ›?d P†AªÓ› @  ® ›?d ÐP†õ¬, @  ® ›?d Q†%ä x @  ®! ›?d PQ†Õ›Z @  ®" ›?d Q†õnXÿ @  ®# ›?d ÐQ†–â$ @  ®$  ›?d R† ‡å @  ®% !›?d PR†ûøøœ @  ®& "›?d R†Û úb @  ®' #›?d ÐR†Ó¬9 @  ®( $›?d S†äÑ @  ®) %›?d PS†ó›j¨ @  ®* &›?d S†ÓnhV @  ®+ '›?d ÐS†H$ɽ @  ®, (›?d T†Qj:² @  ®- )›?d PT†¡ÀË @  ®. *›?d T†àÂ5 @  ®/ +›?d ÐT†$àŽ @  ®0 ,›?d U†ô¨–f @  ®1 -›?d PU†×l @  ®2 .›?d U†$"ná @  ®3 /›?d ÐU†Ú8­æ @  ®4 0›?d V†G| ' @  ®5 1›?d PV†·÷^ @  ®6 2›?d V†—öõ  @  ®7 3›?d ÐV†ŸWû @  ®8 4›?d W†OŸ @  ®9 5›?d PW†¿`ej @  ®: 6›?d W†Ÿ•g” @  ®; 7›?d ÐW†߯ @  ®< 8›?d X†0 Jb @  ®= 9›?d PX†À_° @  ®> :›?d X†લå @  ®? ;›?d ÐX†ú«K| @  ®@ <›?d Y†*ãÇ” @  ®A =›?d PY†Úœ=í @  ®B >›?d Y†úi? @  ®C ?›?d ÐY†i”ÐÙ @  ®D @›?d Z†ôÐp @  ®E A›?d PZ†¯Ša @  ®F B›?d Z†$ZˆŸ @  ®G C›?d ÐZ†,ûnÄ @  ®H D›?d [†ü³â, @  ®I E›?d P[† ÌU @  ®J F›?d [†,9« @  ®K G›?d Ð[†·s»@ @  ®L H›?d \†®=HO @  ®M I›?d P\†^B²6 @  ®N J›?d \†~·°È @  ®O K›?d Ð\†Û·hs @  ®P L›?d ]† ÿä› @  ®Q M›?d P]†û€â @  ®R N›?d ]†Ûu @  ®S O›?d Ð]†%oß @  ®T P›?d ^†¸+Ú @  ®U Q›?d P^†HT…£ @  ®V R›?d ^†h¡‡] @  ®W S›?d Ð^†`a @  ®X T›?d _†°Híî @  ®Y U›?d P_†@7— @  ®Z V›?d _†`Âi @  ®uÐ`†[ W›?d Ð_†æ‚ @  ®\X›?d (`†¾: @  ®]Y›?d h`†NaÀc @  ®^Z›?d ¨`†n” @  ®_[›?d è`†Ú’=– @  ®`\›?d (a† Ú±~ @  ®a]›?d ha†ú¥K @  ®b^›?d ¨a†ÚPIù @  ®c_›?d èa†¹ý³" @  ®d`›?d (b†$¹ã @  ®ea›?d hb†ÔÆéš @  ®fb›?d ¨b†ô3ëd @  ®gc›?d èb†ü’ ? @  ®hd›?d (c†,Ú× @  ®ie›?d hc†Ü¥{® @  ®jf›?d ¨c†üPyP @  ®kg›?d èc†gØ» @  ®lh›?d (d†~T+´ @  ®mi›?d hd†Ž+ÑÍ @  ®nj›?d ¨d†®ÞÓ3 @  ®ok›?d èd† Þ ˆ @  ®pl›?d (e†Û–‡` @  ®qm›?d he†+é} @  ®rn›?d ¨e† ç @  ®so›?d èe†õ¼à @  ®tp›?d (f†hB! @  ®uq›?d hf†˜=æX @  ®vr›?d ¨f†¸Èä¦ @  ®ws›?d èf†°iý @  ®xt›?d (g†`!Ž @  ®yu›?d hg†^tl @  ®zv›?d ¨g†°«v’ @  ®{w›?d èg†+á×y @  ®|x›?d (h†[d @  ®}y›?d hh†ïa¡ @  ®~z›?d ¨h†Ï”£ã @  ®{›?d èh†6ÃjK @  ®€|›?d (i†æ‹æ£ @  ®}›?d hi†ôÚ @  ®‚~›?d ¨i†6$ @  ®ƒ›?d èi†¸:¥| @  ®„€›?d (j†%~½ @  ®…›?d hj†ÕÿÄ @  ®†‚›?d ¨j†õôý: @  ®‡ƒ›?d èj†ýUa @  ®ˆ„›?d (k†-—‰ @  ®‰…›?d hk†Ýbmð @  ®Š†›?d ¨k†ý—o @  ®‹‡›?d èk†fÝÎå @  ®Œˆ›?d (l†“=ê @  ®‰›?d hl†ìÇ“ @  ®ŽŠ›?d ¨l†¯Åm @  ®‹›?d èl† Ö @  ®Œ›?d (m†ÚQ‘> @  ®‘›?d hm†*.kG @  ®’Ž›?d ¨m† Ûi¹ @  ®“›?d èm†ôÁª¾ @  ®”›?d (n†i…  @  ®•‘›?d hn†™úð @  ®–’›?d ¨n†¹òø @  ®—“›?d èn†±®£ @  ®˜”›?d (o†aæ˜K @  ®™•›?d ho†‘™b2 @  ®š–›?d ¨o†±l`Ì @  ®›—›?d èo†*&Á' @  ®œ˜›?d (p†”ø}• @  ®™›?d hp†d‡‡ì @  ®žš›?d ¨p†Dr… @  ®Ÿ››?d èp†ðtz @  ® œ›?d (q† <öñ @  ®¡›?d hq†ÐC ˆ @  ®¢ž›?d ¨q†ð¶v @  ®£Ÿ›?d èq†“ô­ @  ®¤ ›?d (r†_Tl @  ®¥¡›?d hr†þ ® @  ®¦¢›?d ¨r†ÞÕ¬ë @  ®§£›?d èr†ÖtJ° @  ®¨¤›?d (s†<ÆX @  ®©¥›?d hs†öCß @  ®«§›?d ès†MüŸ4 @  ®¬¨›?d (t†T²l; @  ®­©›?d ht†¤Í–B @  ®®ª›?d ¨t†„8”¼ @  ®¯«›?d èt†!8L @  ®°¬›?d (u†ñpÀï @  ®±­›?d hu†:– @  ®²®›?d ¨u†!ú8h @  ®³¯›?d èu†ßàûo @  ®´°›?d (v†B¤[® @  ®µ±›?d hv†²Û¡× @  ®¶²›?d ¨v†’.£) @  ®·³›?d èv†šEr @  ®¸´›?d (w†JÇÉš @  ®¹µ›?d hw†º¸3ã @  ®º¶›?d ¨w†šM1 @  ®»·›?d èw†ö @  ®¼¸›?d (x†5øë @  ®½¹›?d hx†Ňæ’ @  ®¾º›?d ¨x†åräl @  ®¿»›?d èx†ÿsõ @  ®À¼›?d (y†/;‘ @  ®Á½›?d hy†ßDkd @  ®Â¾›?d ¨y†ÿ±iš @  ®Ã¿›?d èy†lL†P @  ®ÄÀ›?d (z†ñ&‘ @  ®ÅÁ›?d hz†wÜè @  ®Æ›?d ¨z†!‚Þ @  ®ÇÛ?d èz†)#8M @  ®ÈÄ›?d ({†ùk´¥ @  ®ÉÅ›?d h{† NÜ @  ®ÊÆ›?d ¨{†)áL" @  ®ËÇ›?d è{†²«íÉ @  ®ÌÈ›?d (|†«åÆ @  ®ÍÉ›?d h|†[šä¿ @  ®ÎÊ›?d ¨|†{oæA @  ®ÏË›?d è|†Þo>ú @  ®ÐÌ›?d (}†'² @  ®ÑÍ›?d h}†þXHk @  ®ÒΛ?d ¨}†Þ­J• @  ®ÓÏ›?d è}† ·‰’ @  ®ÔЛ?d (~†½ó)S @  ®ÕÑ›?d h~†MŒÓ* @  ®ÖÒ›?d ¨~†myÑÔ @  ®×Ó›?d è~†eØ7 @  ®ØÔ›?d (†µ»g @  ®ÙÕ›?d h†EïA @  ®ÚÖ›?d ¨†uЀ†'eCà @  ®Û×›?d è†<ùÞ @  ®ÜØ›?d @€†RGçª @  ®ÝÙ›?d €€†\ó @  ®ÞÚ›?d À€†‚Í- @  ®ßÛ›?d †d{ @  ®àÜ›?d @†æƒlÎ @  ®áÝ›?d €†´˜ƒ— @  ®âÞ›?d€ À†Bʈï @  ¯ß›?d ‚†ßó @  ¯à›?d @‚†]bšÜ @  ¯á›?d €‚†Ê0Žh @  ¯â›?d À‚†H¡™¶ @  ¯ã›?d ƒ†Ük»¡ @  ¯ä›?d @ƒ†^ú¬ @  ¯å›?d €ƒ†ÂS\ @  ¯æ›?d Àƒ†@ ‚ @  ¯ ç›?d „†…µU @  ¯ è›?d @„†¢‹ @  ¯ é›?d €„†ݶ? @  ¯ ê›?d À„†L¡á @  ¯ ë›?d …†††ƒö @  ¯ì›?d @…†”( @  ¯í›?d €…†5ë @  ¯î›?d À…†·Ž 5 @  ¯ï›?d ††“‚À @  ¯ð›?d @††™• @  ¯ñ›?d €†††Ëª @  ¯ò›?d À††Z–t @  ¯ó›?d ‡†´c @  ¯ô›?d @‡†£½ @  ¯õ›?d €‡†ލž @  ¯ö›?d À‡† 9@ @  ¯÷›?d ˆ†äTÅ… @  ¯ø›?d @ˆ†fÅÒ[ @  ¯ù›?d €ˆ†ñ—Æï @  ¯ú›?d Àˆ†sÑ1 @  ¯û›?d ‰†çÌó& @  ¯ü›?d @‰†e]äø @  ¯ý›?d €‰†ESM‹ @  ¯ þ›?d À‰†ÇÂZU @  ¯!ÿ›?d ІÐ Çe @  ¯"œ?d @ІRšÐ» @  ¯#œ?d €Š†ÅÈÄ @  ¯$œ?d ÀІGYÓÑ @  ¯%œ?d ‹†Ó“ñÆ @  ¯&œ?d @‹†Qæ @  ¯'œ?d €‹†Í«V; @  ¯(œ?d À‹†O:Aå @  ¯)œ?d Œ†Šæÿ2 @  ¯*œ?d @Œ†wèì @  ¯+ œ?d €Œ†Ÿ%üX @  ¯, œ?d ÀŒ†´ë† @  ¯- œ?d †‰~É‘ @  ¯. œ?d @† ïÞO @  ¯/ œ?d €†:çPŒ @  ¯0œ?d À†¸vGR @  ¯1œ?d ކœðȧ @  ¯2œ?d @ކaßy @  ¯3œ?d €Ž†‰3ËÍ @  ¯4œ?d Àކ ¢Ü @  ¯5œ?d †Ÿhþ @  ¯6œ?d @†ùéÚ @  ¯7œ?d €†PYù @  ¯8œ?d À†ÁN' @  ¯9œ?d †a¿M @  ¯:œ?d @†ã¨“ @  ¯;œ?d €†tN¼' @  ¯<œ?d À†öß«ù @  ¯=œ?d ‘†b‰î @  ¯>œ?d @‘†à„ž0 @  ¯?œ?d €‘†n1Ñ @  ¯@œ?d À‘†ì& @  ¯Aœ?d ’†U-& @  ¯B œ?d @’†×¼‡ø @  ¯C!œ?d €’†@î“L @  ¯D"œ?d À’†Â„’ @  ¯E#œ?d “†Vµ¦… @  ¯F$œ?d @“†Ô$±[ @  ¯G%œ?d €“†Hx @  ¯H&œ?d À“†Ê¦ @  ¯I'œ?d ”†À¨q @  ¯J(œ?d @”†Q¿¯ @  ¯K)œ?d €”†« @  ¯L*œ?d À”†˜’¼Å @  ¯M+œ?d •† XžÒ @  ¯N,œ?d @•†ŽÉ‰  @  ¯O-œ?d €•†¿ÁÏ @  ¯P.œ?d À•†=P @  ¯Q/œ?d –†ÖŸä @  ¯R0œ?d @–†›Gˆ: @  ¯S1œ?d €–† œŽ @  ¯T2œ?d À–†Ž„‹P @  ¯U3œ?d —†N©G @  ¯V4œ?d @—†˜ß¾™ @  ¯W5œ?d €—†vº @  ¯X6œ?d À—††çd @  ¯Y7œ?d ˜†nŠØ¡ @  ¯Z8œ?d @˜†ìÏ @  ¯[9œ?d €˜†{IÛË @  ¯\:œ?d À˜†ùØÌ @  ¯];œ?d ™†mî @  ¯^<œ?d @™†ïƒùÜ @  ¯_=œ?d €™†ÏP¯ @  ¯`>œ?d À™†MGq @  ¯a?œ?d š†}äI @  ¯b@œ?d @š††ìó— @  ¯cAœ?d €š†¾ç# @  ¯dBœ?d Àš†“/ðý @  ¯eCœ?d ›†åÒê @  ¯fDœ?d @›†…tÅ4 @  ¯gEœ?d €›†Ýu @  ¯hFœ?d À›†›LbÉ @  ¯iGœ?d œ†^Ü @  ¯jHœ?d @œ†ÜËÀ @  ¯kIœ?d €œ†KSßt @  ¯lJœ?d Àœ†ÉÂȪ @  ¯mKœ?d †]ê½ @  ¯nLœ?d @†ß™ýc @  ¯oMœ?d €†î‘s  @  ¯pNœ?d À†ld~ @  ¯qOœ?d ž†H†ë‹ @  ¯rPœ?d @ž†ÊüU @  ¯sQœ?d €ž†]Eèá @  ¯tRœ?d Àž†ßÔÿ? @  ¯uSœ?d Ÿ†KÝ( @  ¯vTœ?d @Ÿ†ÉÊö @  ¯wUœ?d €Ÿ†U&zÕ @  ¯xVœuР†?d ÀŸ†×·m  @  ¯yWœ?d  †z.þµ @  ¯zXœ?d X †ø¿ék @  ¯{Yœ?d ˜ †oíýß @  ¯|Zœ?d Ø †í|ê @  ¯}[œ?d ¡†y¶È @  ¯~\œ?d X¡†û'ßÈ @  ¯]œ?d ˜¡†–x@ @  ¯€^œ?d Ø¡†éWÆ @  ¯_œ?d ¢†­Øáï @  ¯‚`œ?d X¢†/Iö1 @  ¯ƒaœ?d ˜¢†¸â… @  ¯„bœ?d Ø¢†:Šõ[ @  ¯…cœ?d £†®@×L @  ¯†dœ?d X£†,ÑÀ’ @  ¯‡eœ?d ˜£†°xp± @  ¯ˆfœ?d Ø£†2égo @  ¯‰gœ?d ¤†÷5Ù¸ @  ¯Šhœ?d X¤†u¤Îf @  ¯‹iœ?d ˜¤†âöÚÒ @  ¯Œjœ?d ؤ†`gÍ  @  ¯kœ?d ¥†ô­ï @  ¯Žlœ?d X¥†v<øÅ @  ¯mœ?d ˜¥†G4v @  ¯nœ?d Ø¥†Å¥aØ @  ¯‘oœ?d ¦†á#î- @  ¯’pœ?d X¦†c²ùó @  ¯“qœ?d ˜¦†ôàíG @  ¯”rœ?d ئ†vqú™ @  ¯•sœ?d §†â»ØŽ @  ¯–tœ?d X§†`*ÏP @  ¯—uœ?d ˜§†üƒs @  ¯˜vœ?d ا†~h­ @  ¯™wœ?d ¨†–©h @  ¯šxœ?d X¨†î¾¶ @  ¯›yœ?d ˜¨†ƒ¼ª @  ¯œzœ?d ب†-½Ü @  ¯{œ?d ©†•çŸË @  ¯ž|œ?d X©†vˆ @  ¯Ÿ}œ?d ˜©†7x!f @  ¯ ~œ?d Ø©†µé6¸ @  ¯¡œ?d ª†áNÁ @  ¯¢€œ?d Xª†cßÖÌ @  ¯£œ?d ˜ª†ôÂx @  ¯¤‚œ?d ت†vÕ¦ @  ¯¥ƒœ?d «†âÖ÷± @  ¯¦„œ?d X«†`Gào @  ¯§…œ?d ˜«†üîPL @  ¯¨†œ?d Ø«†~G’ @  ¯©‡œ?d ¬†»£ùE @  ¯ªˆœ?d X¬†92î› @  ¯«‰œ?d ˜¬†®`ú/ @  ¯¬Šœ?d ج†,ñíñ @  ¯­‹œ?d ­†¸;Ïæ @  ¯®Œœ?d X­†:ªØ8 @  ¯¯œ?d ˜­† ¢Vû @  ¯°Žœ?d Ø­†‰3A% @  ¯±œ?d ®†­µÎÐ @  ¯²œ?d X®†/$Ù @  ¯³‘œ?d ˜®†¸vͺ @  ¯´’œ?d Ø®†:çÚd @  ¯µ“œ?d ¯†®-øs @  ¯¶”œ?d X¯†,¼ï­ @  ¯·•œ?d ˜¯†°_Ž @  ¯¸–œ?d د†2„HP @  ¯¹—œ?d °†Pȹ: @  ¯º˜œ?d X°†ÒY®ä @  ¯»™œ?d ˜°†E ºP @  ¯¼šœ?d ذ†Çš­Ž @  ¯½›œ?d ±†SP™ @  ¯¾œœ?d X±†ÑÁ˜G @  ¯¿œ?d ˜±†_È7¦ @  ¯Àžœ?d ر†ÝY x @  ¯ÁŸœ?d ²†dh–Q @  ¯Â œ?d X²†æù @  ¯Ã¡œ?d ˜²†q«•; @  ¯Ä¢œ?d ز†ó:‚å @  ¯Å£œ?d ³†gð ò @  ¯Æ¤œ?d X³†åa·, @  ¯Ç¥œ?d ˜³†yÈ @  ¯È¦œ?d س†ûYÑ @  ¯É§œ?d ´†>…® @  ¯Ê¨œ?d X´†¼¹Ø @  ¯Ë©œ?d ˜´†+F­l @  ¯Ìªœ?d Ø´†©×º² @  ¯Í«œ?d µ†=˜¥ @  ¯Î¬œ?d Xµ†¿Œ{ @  ¯Ï­œ?d ˜µ†Ž„¸ @  ¯Ð®œ?d ص† f @  ¯Ñ¯œ?d ¶†(“™“ @  ¯Ò°œ?d X¶†ªŽM @  ¯Ó±œ?d ˜¶†=Pšù @  ¯Ô²œ?d ض†¿Á' @  ¯Õ³œ?d ·†+ ¯0 @  ¯Ö´œ?d X·†©š¸î @  ¯×µœ?d ˜·†53Í @  ¯Ø¶œ?d Ø·†·¢ @  ¯Ù·œ?d ¸†_ÏÞÖ @  ¯Ú¸œ?d X¸†Ý^É @  ¯Û¹œ?d ˜¸†J ݼ @  ¯Üºœ?d ظ†ÈÊb @  ¯Ý»œ?d ¹†\Wèu @  ¯Þ¼œ?d X¹†ÞÆÿ« @  ¯ß½œ?d ˜¹†þÈVØ @  ¯à¾œ?d ع†|YA @  ¯á¿œ?d º†58â> @  ¯âÀœ?d€ Xº†Üõ @  °Áœ?d ˜º†ªæE“ @  °œ?d غ†(wRM @  °Ü?d »†yô‹· @  °Äœ?d X»†ûeœi @  °Åœ?d ˜»†©~s0 @  °Æœ?d Ø»†+ïdî @  °Çœ?d ¼† …C @  °Èœ?d X¼†¢’ @  ° Éœ?d ˜¼†ð }Ä @  ° Êœ?d ؼ†ršj @  ° Ëœ?d ½†#³à @  ° Ìœ?d X½†¡ˆ¤> @  ° Íœ?d ˜½†ó“Kg @  °Μ?d ؽ†q\¹ @  °Ïœ?d ¾†6—²Ö @  °М?d X¾†´¥ @  °Ñœ?d ˜¾†æJQ @  °Òœ?d ؾ†dŒ] @  °Óœ?d ¿†5„u @  °Ôœ?d X¿†·ž“« @  °Õœ?d ˜¿†å…|ò @uÐÀ†  °Öœ?d Ø¿†gk, @  °ל?d 0À†Ä(Ü @  °Øœ?d pÀ†“U? @  °Ùœ?d °À†ÁNÐ[ @  °Úœ?d ðÀ†CßÇ… @  °Ûœ?d 0Á†\ @  °Üœ?d pÁ†Í ¡ @  °Ýœ?d °Á†ÂÖæø @  °Þœ?d ðÁ†@Gñ& @  °ßœ?d 0†‹c% @  ° àœ?d p† òû @  °!áœ?d °Â†[éù¢ @  °"âœ?d ð†Ùxî| @  °#ãœ?d 0ƈû7† @  °$äœ?d pÆ j X @  °%åœ?d °Ã†XqÏ @  °&æœ?d ðÆÚàØß @  °'çœ?d 0ĆÑŽ9r @  °(èœ?d pĆS.¬ @  °)éœ?d °Ä†Áõ @  °*êœ?d ðĆƒ•Ö+ @  °+ëœ?d 0ņÒÑ @  °,ìœ?d pņP‡ @  °-íœ?d °Å†œ÷V @  °.îœ?d ðņ€ àˆ @  °/ïœ?d 0Ɔǘç @  °0ðœ?d pƆE 9 @  °1ñœ?d °Æ†ö` @  °2òœ?d ðƆ•ƒá¾ @  °3óœ?d 0džÄ8D @  °4ôœ?d pdžF‘/š @  °5õœ?d °Ç†ŠÀà @  °6öœ?d ðdž–× @  °7÷œ?d 0Ȇ°ÄI¢ @  °8øœ?d pȆ2U^| @  °9ùœ?d °È†`N±% @  °:úœ?d ðȆâߦû @  °;ûœ?d 0Ɇ³\ @  °<üœ?d pɆ1Íhß @  °=ýœ?d °É†cÖ‡† @  °>þœ?d ðɆáGX @  °?ÿœ?d 0ʆ•rF @  °@?d pʆ”e˜ @  °A?d °Ê†ÆŠÁ @  °B?d ðʆDŽ @  °C?d 0ˆ Då @  °D?d pˆ—œS; @  °E?d °Ë†Ň¼b @  °F?d ðˆG«¼ @  °G?d 0̆LxJ @  °H?d p̆Îé]Ï @  °I ?d °Ì†œò²– @  °J ?d ð̆c¥H @  °K ?d 0͆Oà|² @  °L ?d p͆Íqkl @  °M ?d °Í†Ÿj„5 @  °N?d ð͆û“ë @  °O?d 0ΆZn}„ @  °P?d pΆØÿjZ @  °Q?d °Î†Šä… @  °R?d ðΆu’Ý @  °S?d 0φYöK' @  °T?d pφÛg\ù @  °U?d °Ï†‰|³  @  °V?d ðφ í¤~ @  °W?d 0І§ n @  °X?d pІ%‚° @  °Y?d °Ð†w™òé @  °Z?d ðІõå7 @  °[?d 0ц¤‹<Í @  °\?d pц&+ @  °]?d °Ñ†tÄJ @  °^?d ðцöÓ” @  °_?d 0Ò†=´#— @  °` ?d pÒ†¿%4I @  °a!?d °Ò†í>Û @  °b"?d ðÒ†o¯ÌÎ @  °c#?d 0Ó†>,4 @  °d$?d pÓ†¼½ê @  °e%?d °Ó†î¦í³ @  °f&?d ðÓ†l7úm @  °g'?d 0Ô†gYÀ @  °h(?d pÔ†åÈ  @  °i)?d °Ô†·ÓãG @  °j*?d ðÔ†5Bô™ @  °k+?d 0Õ†dÁ-c @  °l,?d pÕ†æP:½ @  °m-?d °Õ†´KÕä @  °n.?d ðÕ†ï @  °o /?d 0Ö†Hˆð€ @  °p 0?d pÖ†Êç^ @  °q 1?d °Ö†˜ @  °r 2?d ðÖ†“Ù @  °s 3?d 0׆KÆ# @  °t 4?d p׆ÉÑý @  °u 5?d °×†›š>¤ @  °v 6?d ð׆ )z @  °w 7?d 0؆?Ô·Å @  °x 8?d p؆½E  @  °y 9?d °Ø†ï^OB @  °z :?d ð؆mÏXœ @  °{ ;?d 0Ù†?d ðÙ†nWn? @  ° ??d 0Ú†r½Ž @  °€ @?d pÚ†šãªP @  ° A?d °Ú†ÈøE  @  °‚ B?d ðÚ†JiR× @  °ƒ C?d 0Û†ê‹- @  °„ D?d pÛ†™{œó @  °… E?d °Û†Ë`sª @  °† F?d ðÛ†Iñdt @  °‡ G?d 0܆BŸ…Ù @  °ˆ H?d p܆À’ @  °‰ I?d °Ü†’}^ @  °Š J?d ð܆„j€ @  °‹ K?d 0݆A³z @  °Œ L?d p݆Ö¤¤ @  ° M?d °Ý†‘Ký @  °Ž N?d ð݆\# @  ° O?d 0Þ†T‰²L @  ° P?d pÞ†Ö¥’ @  °‘ Q?d °Þ†„JË @  °’ R?d ðÞ†’] @  °“ S?d 0߆W„ï @  °” T?d p߆Õ€“1 @  °• U?d uÐà†/°ß†‡›|h @  °– V?d ð߆<Í·c @  °—W?d Hà†7Iû7 @  °˜X?d ˆà†¼ùÉ @  °™Y?d Èà†çð @  °šZ?d á†7‹X @  °›[?d Há†4ÑÍ” @  °œ\?d ˆá†$Ïj @  °]?d Èá†ä[5 @  °ž^?d â†y•Ò @  °Ÿ_?d H↭îÒÎ @  ° `?d ˆâ†Ð0 @  °¡a?d Èâ†}d*I @  °¢b?d ㆭ,¦¡ @  °£c?d Hㆮväm @  °¤d?d ˆã†Žƒæ“ @  °¥e?d Èã†~üê @  °¦f?d ä†g²ïå @  °§g?d Hä†÷ê™ @  °¨h?d ˆä†×öèg @  °©i?d Èä†'‰ @  °ªj?d å†÷Ážö @  °«k?d Hå†ô›Ü: @  °¬l?d ˆå†ÔnÞÄ @  °­m?d Èå†$$½ @  °®n?d 憹U„| @  °¯o?d Hæ†áÝ  @  °°p?d ˆæ†Áàßò @  °±q?d Èæ†1Ÿ%‹ @  °²r?d ç†áשc @  °³s?d Hç†âë¯ @  °´t?d ˆç†ÂxéQ @  °µu?d Èç†2( @  °¶v?d è†øŸ5 @  °·w?d H膖IšI @  °¸x?d ˆè†¶¼˜· @  °¹y?d Èè†FÃbÎ @  °ºz?d 醖‹î& @  °»{?d H醕Ѭê @  °¼|?d ˆé†µ$® @  °½}?d Èé†E[Tm @  °¾~?d ê†Øô¬ @  °¿?d Hê†Oô¡ @  °À€?d ˆê†oŠö_ @  °Á?d Èꆟõ & @  °Â‚?d ë†O½€Î @  °Ãƒ?d Hë†Lç @  °Ä„?d ˆë†lÀü @  °Å…?d È놜m:… @  °Æ†?d 솅#ÉŠ @  °Ç‡?d H솒Ìö @  °Èˆ?d ˆì†5gÎ @  °É‰?d Èì†Å4q @  °ÊŠ?d í†P¸™ @  °Ë‹?d Hí† úU @  °ÌŒ?d ˆí†6ÿø« @  °Í?d Èí†Æ€Ò @  °ÎŽ?d î†[Ä¢ @  °Ï?d Hûc @  °Ð?d ˆî†#qù @  °Ñ‘?d Èî†Óä @  °Ò’?d ï†F  @  °Ó“?d Hï†ÍÀ @  °Ô”?d ˆï† éÏ> @  °Õ•?d Èï†Ж5G @  °Ö–?d ð†nH‰õ @  °×—?d Hð†þùŒ‰ @  °Ø˜?d ˆð†Þ Žw @  °Ù™?d Èð†.st @  °Úš?d ñ†þ;øæ @  °Û›?d Hñ†ýaº* @  °Üœ?d ˆñ†Ý”¸Ô @  °Ý?d Èñ†-ëB­ @  °Þž?d ò†°¯âl @  °ßŸ?d Hò†d^¥p @  °à ?d ˆò†D«§Ž @  °á¡?d Èò†´Ô]÷ @  °â¢?d€ ó†_͹ @  ±£?d Hó†òDÇ\ @  ±¤?d ˆó†ұŢ @  ±¥?d Èó†ç‡Ä6 @  ±¦?d ô†þÉ79 @  ±§?d Hô† Êm? @  ±¨?d ˆô†€?oÁ @  ±©?d Èô†¾òÊ @  ±ª?d õ†nºF* @  ± «?d Hõ†¨©ÿ  @  ± ¬?d ˆõ†ˆ\ýõ @  ± ­?d Èõ†½jüa @  ± ®?d ö† .\  @  ± ¯?d Hö†}dJ @  ±°?d ˆö†;ˆf´ @  ±±?d Èö†¨äýW @  ±²?d ÷†x¬q¿ @  ±³?d H÷†¾¿Èž @  ±´?d ˆ÷†žJÊ` @  ±µ?d È÷†«|Ëô @  ±¶?d ø†ŸƒGé @  ±·?d Hø†Á€ï @  ±¸?d ˆø†áu @  ±¹?d Èø†߸º @  ±º?d ù†ð6ú @  ±»?d Hù†ÉãÛ @  ±¼?d ˆù†é% @  ±½?d Èù†Ü Œ± @  ±¾?d ú†Ad,p @  ±¿?d Hú†Ð8W @  ±À?d ˆú†7%:© @  ±Á?d Èú†µO†ú @  ± Â?d û†e  @  ±!Ã?d Hû†£³3 @  ±"Ä?d ˆû†ƒá±Í @  ±#Å?d Èû†¶×°Y @  ±$Æ?d ü†¯™CV @  ±%Ç?d Hü†ñšP @  ±&È?d ˆü†Ño® @  ±'É?d Èü†­ @  ±(Ê?d ý†?ê2E @  ±)Ë?d Hý†ùù‹d @  ±*Ì?d ˆý†Ù ‰š @  ±+Í?d Èý†ì:ˆ @  ±,Î?d þ†q~(Ï @  ±-Ï?d Hþ†J-% @  ±.Ð?d ˆþ†jØÛ @  ±/Ñ?d Èþ†ù´‰8 @  ±0Ò?d ÿ†)üÐ @  ±1Ó?d Hÿ†ïï¼ñ @  ±2Ô?d ˆÿ†Ï¾ @  ±3uЇÕ?d Èÿ†ú,¿› @  ±4Ö?d ‡µ˜—j @  ±5×?d `‡ë›Íl @  ±6Ø?d  ‡ËnÏ’ @  ±7Ù?d à‡õ£j‘ @  ±8Ú?d ‡%ëæy @  ±9Û?d `‡ãø_X @  ±:Ü?d  ‡à ]¦ @  ±;Ý?d à‡ö;\2 @  ±<Þ?d ‡küó @  ±=ß?d `‡Í›ýÅ @  ±>à?d  ‡ínÿ; @  ±?á?d à‡ÁEú @  ±@â?d ‡KÉ @  ±Aã?d `‡×Xp3 @  ±Bä?d  ‡÷­rÍ @  ±Cå?d à‡›sY @  ±Dæ?d ‡ÛÕ€V @  ±Eç?d `‡…ÖÚP @  ±Fè?d  ‡¥#Ø® @  ±Gé?d à‡›î}­ @  ±Hê?d ‡K¦ñE @  ±Ië?d `‡µHd @  ±Jì?d  ‡­@Jš @  ±Kí?d à‡˜vK @  ±Lî?d ‡2ëÏ @  ±Mï?d `‡>aÓ% @  ±Nð?d  ‡”ÑÛ @  ±Oñ?d à‡øJ8 @  ±Pò?d ‡]°ÆÐ @  ±Qó?d `‡›£ñ @  ±Rô?d  ‡»V} @  ±Sõ?d à‡Ž`|› @  ±Tö?d ‡ºŸð† @  ±U÷?d `‡䜪€ @  ±Vø?d  ‡Äi¨~ @  ±Wù?d à‡ú¤ } @  ±Xú?d ‡*ì• @  ±Yû?d ` ‡ìÿ8´ @  ±Zü?d   ‡Ì :J @  ±[ý?d à ‡ù<;Þ @  ±\þ?d ‡dx› @  ±]ÿ?d ` ‡âO»ƒ @  ±^ž?d   ‡º¹} @  ±_ž?d à ‡@Ð. @  ±`ž?d ‡˜‰Æ @  ±až?d ` ‡V‹0ç @  ±bž?d   ‡v~2 @  ±cž?d à ‡CH3 @  ±dž?d ‡ZÀ‚ @  ±ež?d ` ‡š„ @  ±fž?d   ‡$ð˜z @  ±g ž?d à ‡==y @  ±h ž?d ‡Êu±‘ @  ±i ž?d ` ‡ f° @  ±j ž?d   ‡,“ N @  ±k ž?d à ‡¥ Ú @  ±lž?d ‡„á« @  ±mž?d `‡¿²“ñ @  ±nž?d  ‡ŸG‘ @  ±ož?d à‡ + ì @  ±pž?d ‡Üc† @  ±qž?d `‡p?% @  ±rž?d  ‡:…=Û @  ±sž?d à‡³ž?d ‡ƒÛ¼¹ @  ±?ž?d `‡Õo¨ž @  ±ž@ž?d  ‡õšª` @  ±ŸAž?d à‡wð3 @  ± Bž?d ‡§¸šÛ @  ±¡Cž?d `‡a«#ú @  ±¢Dž?d  ‡A^! @  ±£Ež?d à‡th  @  ±¤Fž?d ‡m&ÓŸ @  ±¥Gž?d `‡3%‰™ @  ±¦Hž?d  ‡Ћg @  ±§Iž?d à‡-.d @  ±¨Jž?d ‡ýU¢Œ @  ±©Kž?d `‡;F­ @  ±ªLž?d  ‡³S @  ±«Mž?d à‡.…Ç @  ±¬Nž?d ‡³Á¸ @  ±­Ož?d `‡ˆ’€ì @  ±®Pž?d  ‡¨g‚ @  ±¯Qž?d à‡; ñ @  ±°Rž?d ‡ëC• @  ±±Sž?d `‡-P,8 @  ±²Tž?d  ‡ ¥.ÆuÐ ‡ @  ±³Už?d à‡8“/R @  ±´Vž?d 8 ‡I˜ñ4 @  ±µWž?d x ‡›«2 @  ±¶Xž?d ¸ ‡7n©Ì @  ±·Yž?d ø ‡ £ Ï @  ±¸Zž?d 8!‡Ùë€' @  ±¹[ž?d x!‡ø9 @  ±º\ž?d ¸!‡? ;ø @  ±»]ž?d ø!‡ ;:l @  ±¼^ž?d 8"‡—š­ @  ±½_ž?d x"‡1››› @  ±¾`ž?d ¸"‡n™e @  ±¿až?d ø"‡=#¤ @  ±Àbž?d 8#‡íK¯L @  ±Ácž?d x#‡+Xm @  ±Âdž?d ¸#‡ ­“ @  ±Ãež?d ø#‡>› @  ±Äfž?d 8$‡'Õæ @  ±Ågž?d x$‡yÖ¼ @  ±Æhž?d ¸$‡Y#¾ð @  ±Çiž?d ø$‡gîó @  ±Èjž?d 8%‡·¦— @  ±Ékž?d x%‡qµ.: @  ±Êlž?d ¸%‡Q@,Ä @  ±Ëmž?d ø%‡dv-P @  ±Ìnž?d 8&‡ù2‘ @  ±Íož?d x&‡Âaµ{ @  ±Îpž?d ¸&‡â”·… @  ±Ïqž?d ø&‡qø,f @  ±Ðrž?d 8'‡¡° Ž @  ±Ñsž?d x'‡g£¯ @  ±Òtž?d ¸'‡GVQ @  ±Óuž?d ø'‡r`Å @  ±Ôvž?d 8(‡FŸ–Ø @  ±Õwž?d x(‡œÌÞ @  ±Öxž?d ¸(‡8iÎ  @  ±×yž?d ø(‡¤k# @  ±Øzž?d 8)‡ÖìçË @  ±Ù{ž?d x)‡ÿ^ê @  ±Ú|ž?d ¸)‡0 \ @  ±Û}ž?d ø)‡<]€ @  ±Ü~ž?d 8*‡˜xýA @  ±Ýž?d x*‡Ó ½ô @  ±Þ€ž?d ¸*‡óÿ¿  @  ±ßž?d ø*‡q•Y @  ±à‚ž?d 8+‡¡Ý± @  ±áƒž?d x+‡gÎ6 @  ±â„ž?d€ ¸+‡†|Ãn @  ²…ž?d ø+‡R ŠÓ @  ²†ž?d 8,‡KEyÜ @  ²‡ž?d x,‡ÐØ7 @  ²ˆž?d ¸,‡ðúÚÉ @  ²‰ž?d ø,‡… ° @  ²Šž?d 8-‡ÐͬX @  ²‹ž?d x-‡ØlJ @  ²Œž?d ¸-‡ø™Hý @  ² ž?d ø-‡沄 @  ² Žž?d 8.‡•¢E @  ² ž?d x.‡k¸ÑB @  ² ž?d ¸.‡KMÓ¼ @  ² ‘ž?d ø.‡»2)Å @  ²’ž?d 8/‡kz¥- @  ²“ž?d x/‡Îz}– @  ²”ž?d ¸/‡îh @  ²•ž?d ø/‡ð… @  ²–ž?d 80‡ .9£ @  ²—ž?d x0‡;d˜H @  ²˜ž?d ¸0‡‘š¶ @  ²™ž?d ø0‡ëî`Ï @  ²šž?d 81‡;¦ì' @  ²›ž?d x1‡3 | @  ²œž?d ¸1‡ò‚ @  ²ž?d ø1‡ãòû @  ²žž?d 82‡~ÉR: @  ²Ÿž?d x2‡d¨á @  ² ž?d ¸2‡=‘ª @  ²¡ž?d ø2‡ÍîPf @  ²¢ž?d 83‡¦ÜŽ @  ²£ž?d x3‡© #… @  ² ¤ž?d ¸3‡‰U!{ @  ²!¥ž?d ø3‡y*Û @  ²"¦ž?d 84‡`d(  @  ²#§ž?d x4‡û.‰æ @  ²$¨ž?d ¸4‡ÛÛ‹ @  ²%©ž?d ø4‡+¤qa @  ²&ªž?d 85‡ûìý‰ @  ²'«ž?d x5‡óMÒ @  ²(¬ž?d ¸5‡Ó¸, @  ²)­ž?d ø5‡#ÇãU @  ²*®ž?d 86‡¾ƒC” @  ²+¯ž?d x6‡@™€“ @  ²,°ž?d ¸6‡`l‚m @  ²-±ž?d ø6‡x @  ².²ž?d 87‡@[ôü @  ²/³ž?d x7‡å[,G @  ²0´ž?d ¸7‡Å®.¹ @  ²1µž?d ø7‡5ÑÔÀ @  ²2¶ž?d 88‡.XÝ @  ²3·ž?d x8‡šdù6 @  ²4¸ž?d ¸8‡º‘ûÈ @  ²5¹ž?d ø8‡Jî± @  ²6ºž?d 89‡š¦Y @  ²7»ž?d x9‡’k @  ²8¼ž?d ¸9‡²òiü @  ²9½ž?d ø9‡B“… @  ²:¾ž?d 8:‡ßÉ3D @  ²;¿ž?d x:‡L4ÜŽ @  ²<Àž?d ¸:‡lÁÞp @  ²=Áž?d ø:‡œ¾$  @  ²>ž?d 8;‡Lö¨á @  ²?Þ?d x;‡V÷Qx @  ²@Äž?d ¸;‡vS† @  ²AÅž?d ø;‡†}©ÿ @  ²BÆž?d 8<‡Ÿ3Zð @  ²CÇž?d x<‡yû @  ²DÈž?d ¸<‡$Œùå @  ²EÉž?d ø<‡Ôóœ @  ²FÊž?d 8=‡»t @  ²GËž?d x=‡ i/ @  ²HÌž?d ¸=‡,ïkÑ @  ²IÍž?d ø=‡Ü‘¨ @  ²JΞ?d 8>‡AÔ1i @  ²KÏž?d x>‡¿Îòn @  ²LО?d ¸>‡Ÿ;ð @  ²MÑž?d ø>‡oD é @  ²NÒž?d 8?‡¿ † @  ²OÓž?d x?‡ ^º @  ²PÔž?duÐ@‡7 ¸?‡:ù\D @  ²QÕž?d ø?‡ʆ¦= @  ²RÖž?d P@‡ * @  ²Sמ?d @‡0¨Ê @  ²TØž?d Ð@‡²•¿ @  ²UÙž?d A‡3Þ[ @  ²VÚž?d PA‡’¢É… @  ²WÛž?d A‡8g:þ @  ²XÜž?d ÐA‡ºö-  @  ²YÝž?d B‡U\`F @  ²ZÞž?d PB‡×Íw˜ @  ²[ßž?d B‡˜c @  ²\àž?d ÐB‡”•½ @  ²]áž?d C‡63îò @  ²^âž?d PC‡´¢ù, @  ²_ãž?d C‡¢À @  ²`äž?d ÐC‡ QÙ @  ²aåž?d D‡Kñq @  ²bæž?d PD‡É` ¯ @  ²cçž?d D‡ðN¹d @  ²dèž?d ÐD‡rß®º @  ²eéž?d E‡ÐyÏõ @  ²fêž?d PE‡RèØ+ @  ²gëž?d E‡ø-+P @  ²hìž?d ÐE‡z¼<Ž @  ²iíž?d F‡•qè @  ²jîž?d PF‡‡f6 @  ²kïž?d F‡Kù° @  ²lðž?d ÐF‡Éh§Ï @  ²mñž?d G‡kÎÆ€ @  ²nòž?d PG‡é_Ñ^ @  ²oóž?d G‡î;Å @  ²pôž?d ÐG‡lª  @  ²qõž?d H‡*»j¡ @  ²röž?d PH‡¨*} @  ²s÷ž?d H‡‘É´ @  ²tøž?d ÐH‡•Þj @  ²uùž?d I‡±3¿% @  ²vúž?d PI‡3¢¨û @  ²wûž?d I‡äç(ü @  ²x€üž?d ÐI‡fv?" @  ²y€ýž?d J‡‰ÜrD @  ²z€þž?d PJ‡ Meš @  ²{€ÿž?d J‡Xužî @  ²|€Ÿ?d ÐJ‡Úä‰0 @  ²}€Ÿ?d K‡xBè @  ²~€Ÿ?d PK‡úÓÿ¡ @  ²€Ÿ?d K‡¡à#) @  ²€€Ÿ?d ÐK‡#q4÷ @  ²€Ÿ?d L‡HÑ*_ @  ²‚€Ÿ?d PL‡Ê@= @  ²ƒ€Ÿ?d L‡ón‰J @  ²„€Ÿ?d ÐL‡qÿž” @  ²…€ Ÿ?d M‡ÓYÿÛ @  ²†€ Ÿ?d PM‡QÈè @  ²‡€ Ÿ?d M‡û ~ @  ²ˆ€ Ÿ?d ÐM‡yœ   @  ²‰€ Ÿ?d N‡–6AÆ @  ²Š€Ÿ?d PN‡§V @  ²‹€Ÿ?d N‡HÙ€? @  ²Œ€Ÿ?d ÐN‡ÊH—á @  ²€Ÿ?d O‡hîö® @  ²Ž€Ÿ?d PO‡êáp @  ²€Ÿ?d O‡í,ë @  ²€Ÿ?d ÐO‡oŠ;5 @  ²‘€Ÿ?d P‡£ºj  @  ²’€Ÿ?d PP‡!+}þ @  ²“€Ÿ?d P‡É5 @  ²”€Ÿ?d ÐP‡š”Þë @  ²•€Ÿ?d Q‡82¿¤ @  ²–€Ÿ?d PQ‡º£¨z @  ²—€Ÿ?d Q‡f[ @  ²˜€Ÿ?d ÐQ‡’÷Lß @  ²™€Ÿ?d R‡}]¹ @  ²š€Ÿ?d PR‡ÿÌg @  ²›€Ÿ?d R‡>ùœ @  ²œ€ Ÿ?d ÐR‡¼”îB @  ²€!Ÿ?d S‡2  @  ²ž€"Ÿ?d PS‡œ£˜Ó @  ²Ÿ€#Ÿ?d S‡ŠÁrø @  ² €$Ÿ?d ÐS‡Pe& @  ²¡€%Ÿ?d T‡cð{Ž @  ²¢€&Ÿ?d PT‡áalP @  ²£€'Ÿ?d T‡ØOØ› @  ²¤€(Ÿ?d ÐT‡ZÞÏE @  ²¥€)Ÿ?d U‡øx®  @  ²¦€*Ÿ?d PU‡zé¹Ô @  ²§€+Ÿ?d U‡Ð,J¯ @  ²¨€,Ÿ?d ÐU‡R½]q @  ²©€-Ÿ?d V‡½ @  ²ª€.Ÿ?d PV‡?†É @  ²«€/Ÿ?d V‡cøÑî @  ²¬€0Ÿ?d ÐV‡áiÆ0 @  ²­€1Ÿ?d W‡Cϧ @  ²®€2Ÿ?d PW‡Á^°¡ @  ²¯€3Ÿ?d W‡Æ:}: @  ²°€4Ÿ?d ÐW‡D«jä @  ²±€5Ÿ?d X‡º ^ @  ²²€6Ÿ?d PX‡€+€ @  ²³€7Ÿ?d X‡¹¨K @  ²´€8Ÿ?d ÐX‡;”¿• @  ²µ€9Ÿ?d Y‡™2ÞÚ @  ²¶€:Ÿ?d PY‡£É @  ²·€;Ÿ?d Y‡±f: @  ²¸€<Ÿ?d ÐY‡3÷-¡ @  ²¹€=Ÿ?d Z‡Ü]`Ç @  ²º€>Ÿ?d PZ‡^Ìw @  ²»€?Ÿ?d Z‡oUó @  ²¼€@Ÿ?d ÐZ‡íÄš- @  ²½€AŸ?d [‡Obûb @  ²¾€BŸ?d P[‡Íóì¼ @  ²¿€CŸ?d [‡u– @  ²À€DŸ?d Ð[‡÷Û @  ²Á€EŸ?d \‡œ§ s @  ²€FŸ?d P\‡6­ @  ²ÀGŸ?d \‡'ªf @  ²Ä€HŸ?d Ð\‡¥‰½¸ @  ²Å€IŸ?d ]‡/Ü÷ @  ²Æ€JŸ?d P]‡…¾Ë) @  ²Ç€KŸ?d ]‡/{8R @  ²È€LŸ?d Ð]‡­ê/Œ @  ²É€MŸ?d ^‡B@bê @  ²Ê€NŸ?d P^‡ÀÑu4 @  ²Ë€OŸ?d ^‡œ¯£ @  ²Ì€PŸ?d Ð^‡>´Í @  ²Í€QŸ?d _‡¼˜Õ‚ @  ²΀RŸ?d P_‡> Â\ @  ²Ï€SŸ?d _‡9mÇ @  ²uÐ`‡ЀTŸ?d Ð_‡»ü @  ²Ñ€UŸ?d (`‡wê@& @  ²Ò€VŸ?d h`‡õ{Wø @  ²Ó€WŸ?d ¨`‡ÌUã3 @  ²Ô€XŸ?d è`‡NÄôí @  ²Õ€YŸ?d (a‡ìb•¢ @  ²Ö€ZŸ?d ha‡nó‚| @  ²×€[Ÿ?d ¨a‡Ä6q @  ²Ø€\Ÿ?d èa‡F§fÙ @  ²Ù€]Ÿ?d (b‡© +¿ @  ²Ú€^Ÿ?d hb‡+œ`Æ @  ³2€˜Ÿ?d èp‡¼ñÑN @  ³3€™Ÿ?d (q‡ÛKì @  ³4€šŸ?d hq‡Y\2 @  ³5€›Ÿ?d ¨q‡=øð3 @  ³6€œŸ?d èq‡¿içí @  ³7€Ÿ?d (r‡žqõñ @  ³8€žŸ?d hr‡àâ/ @  ³9€ŸŸ?d ¨r‡`ö9 @  ³:€ Ÿ?d èr‡šñáç @  ³;€¡Ÿ?d (s‡ý{E @  ³<€¢Ÿ?d hs‡l› @  ³=€£Ÿ?d ¨s‡øÀš @  ³>€¤Ÿ?d ès‡™i×D @  ³?€¥Ÿ?d (t‡.Û‰T @  ³@€¦Ÿ?d ht‡¬JžŠ @  ³A€§Ÿ?d ¨t‡P-Ѭ @  ³B€¨Ÿ?d èt‡Ò¼Ær @  ³C€©Ÿ?d (u‡µS\Ð @  ³D€ªŸ?d hu‡7ÂK @  ³E€«Ÿ?d ¨u‡Sµç @  ³F€¬Ÿ?d èu‡Ñ$ðÑ @  ³G€­Ÿ?d (v‡ð<âÍ @  ³H€®Ÿ?d hv‡r­õ @  ³I€¯Ÿ?d ¨v‡ëšØÙ @  ³J€°Ÿ?d èv‡i Ï @  ³K€±Ÿ?d (w‡äU¥ @  ³L€²Ÿ?d hw‡ŒuB{ @  ³M€³Ÿ?d ¨w‡èîz @  ³N€´Ÿ?d èw‡j“ù¤ @  ³O€µŸ?d (x‡O‘ù„ @  ³P€¶Ÿ?d hx‡ÍîZ @  ³Q€·Ÿ?d ¨x‡1g¡| @  ³R€¸Ÿ?d èx‡³ö¶¢ @  ³S€¹Ÿ?d (y‡Ô, @  ³T€ºŸ?d hy‡Vˆ;Þ @  ³U€»Ÿ?d ¨y‡2ÿ—ß @  ³V€¼Ÿ?d èy‡°n€ @  ³W€½Ÿ?d (z‡‘v’ @  ³X€¾Ÿ?d hz‡ç…à @  ³Y€¿Ÿ?d ¨z‡ç7„Ä @  ³Z€ÀŸ?d èz‡e¦“ @  ³[€ÁŸ?d ({‡I ¸ @  ³\€Ÿ?d h{‡€Øf @  ³]€ß?d ¨{‡䯲g @  ³^€ÄŸ?d è{‡f>¥¹ @  ³_€ÅŸ?d (|‡‹ý; @  ³`€ÆŸ?d h|‡ýêå @  ³a€ÇŸ?d ¨|‡}¥Ã @  ³b€ÈŸ?d è|‡ƒì² @  ³c€ÉŸ?d (}‡ä(¿ @  ³d€ÊŸ?d h}‡f’?a @  ³e€ËŸ?d ¨}‡å“` @  ³f€ÌŸ?d è}‡€t„¾ @  ³g€ÍŸ?d (~‡¡l–¢ @  ³h€Ο?d h~‡#ý| @  ³i€ÏŸ?d ¨~‡ºÊ¬¶ @  ³j€П?d è~‡8[»h @  ³k€ÑŸ?d (‡_´!Ê @  ³l€ÒŸ?d h‡Ý%6 @  ³m€ÓŸ?d ¨‡uЀ‡'¹Rš @  ³n€ÔŸ?d è‡FCþ· @  ³oÕŸ?d @€‡9þ @  ³pÖŸ?d €€‡õ’ @  ³qן?d À€‡GöÈ @  ³rØŸ?d ‡—¾Dî @  ³sÙŸ?d @‡¢ˆEz @  ³tÚŸ?d €‡‚}G„ @  ³uÛŸ?d À‡Dnþ¥ @  ³vÜŸ?d ‚‡Ù*^d @  ³wÝŸ?d @‚‡ççûg @  ³xÞŸ?d €‚‡Çù™ @  ³yߟ?d À‚‡aöø¯ @  ³zàŸ?d ƒ‡±¾tG @  ³{áŸ?d @ƒ‡„ˆuÓ @  ³|âŸ?d €ƒ‡¤}w- @  ³}ãŸ?d Àƒ‡bnÎ  @  ³~äŸ?d „‡{ = @  ³åŸ?d @„‡´·ó @  ³€æŸ?d €„‡”îµ  @  ³çŸ?d À„‡Êíï  @  ³‚èŸ?d …‡¥cã @  ³ƒéŸ?d @…‡/“bw @  ³„êŸ?d €…‡f`‰ @  ³…ëŸ?d À…‡ÉuÙ¨ @  ³†ìŸ?d †‡T1yi @  ³‡íŸ?d @†‡jüÜj @  ³ˆîŸ?d €†‡J Þ” @  ³‰ïŸ?d À†‡qZæ~ @  ³ŠðŸ?d ‡‡¡j– @  ³‹ñŸ?d @‡‡”$k @  ³ŒòŸ?d €‡‡´Ñiü @  ³óŸ?d À‡‡rÂÐÝ @  ³ŽôŸ?d ˆ‡F=\À @  ³õŸ?d @ˆ‡ÕQÇ# @  ³öŸ?d €ˆ‡õ¤ÅÝ @  ³‘÷Ÿ?d Àˆ‡«§ŸÛ @  ³’øŸ?d ‰‡{ï3 @  ³“ùŸ?d @‰‡NÙ§ @  ³”úŸ?d €‰‡n,Y @  ³•ûŸ?d À‰‡¨?©x @  ³–üŸ?d Ї5{ ¹ @  ³—ýŸ?d @Ї ¶¬º @  ³˜þŸ?d €Š‡+C®D @  ³™ÿŸ?d ÀЇ®ãÒÀ @  ³š ?d ‹‡~«^( @  ³› ?d @‹‡K_¼ @  ³œ ?d €‹‡kh]B @  ³ ?d À‹‡­{äc @  ³ž ?d Œ‡´5l @  ³Ÿ ?d @Œ‡6_«? @  ³  ?d €Œ‡ª©Á @  ³¡ ?d ÀŒ‡H©óÇ @  ³¢ ?d ‡˜á/ @  ³£  ?d @‡­×~» @  ³¤  ?d €‡"|E @  ³¥  ?d À‡K1Åd @  ³¦  ?d އÖue¥ @  ³§  ?d @އè¸À¦ @  ³¨ ?d €Ž‡ÈMÂX @  ³© ?d Àއóú² @  ³ª ?d ‡#VvZ @  ³« ?d @‡`wÎ @  ³¬ ?d €‡6•u0 @  ³­ ?d À‡ð†Ì @  ³® ?d ‡NXp£ @  ³¯ ?d @‡Ý4ë@ @  ³° ?d €‡ýÁé¾ @  ³± ?d À‡£Â³¸ @  ³² ?d ‘‡sŠ?P @  ³³ ?d @‘‡F¼>Ä @  ³´ ?d €‘‡fI<: @  ³µ ?d À‘‡ Z… @  ³¶ ?d ’‡=%Ú @  ³· ?d @’‡Ó€Ù @  ³¸ ?d €’‡#&‚' @  ³¹ ?d À’‡…ƒ @  ³º  ?d “‡UŠù @  ³»! ?d @“‡`¼m @  ³¼" ?d €“‡@I “ @  ³½# ?d À“‡†Zµ² @  ³¾$ ?d ”‡ŸF½ @  ³¿% ?d @”‡³yü| @  ³À& ?d €”‡“Œþ‚ @  ³Á' ?d À”‡ͤ„ @  ³Â( ?d •‡Ç(l @  ³Ã) ?d @•‡(ñ)ø @  ³Ä* ?d €•‡+ @  ³Å+ ?d À•‡Î’' @  ³Æ, ?d –‡SS2æ @  ³Ç- ?d @–‡mž—å @  ³È. ?d €–‡Mk• @  ³É/ ?d À–‡v8­ñ @  ³Ê0 ?d —‡¦p! @  ³Ë1 ?d @—‡“F  @  ³Ì2 ?d €—‡³³"s @  ³Í3 ?d À—‡u ›R @  ³Î4 ?d ˜‡A_O @  ³Ï5 ?d @˜‡Ò3Œ¬ @  ³Ð6 ?d €˜‡òÆŽR @  ³Ñ7 ?d À˜‡¬ÅÔT @  ³Ò8 ?d ™‡|X¼ @  ³Ó9 ?d @™‡I»Y( @  ³Ô: ?d €™‡iN[Ö @  ³Õ; ?d À™‡¯]â÷ @  ³Ö< ?d š‡2B6 @  ³×= ?d @š‡ Ôç5 @  ³Ø> ?d €š‡,!åË @  ³Ù? ?d Àš‡z•ñì @  ³Ú@ ?d ›‡ªÝ} @  ³ÛA ?d @›‡Ÿë| @  ³ÜB ?d €›‡¿~n @  ³ÝC ?d À›‡y ÇO @  ³ÞD ?d œ‡`C4@ @  ³ßE ?d @œ‡â)ˆ @  ³àF ?d €œ‡ÂÜŠí @  ³áG ?d Àœ‡œßÐë @  ³âH ?d€ ‡ÊÁôº @  ´I ?d @‡¶½ @  ´J ?d €‡>C¿ù @  ´K ?d À‡=ý5 @  ´L ?d ž‡ ]]ô @  ´M ?d @ž‡P"§ @  ´N ?d €ž‡p×¥s @  ´O ?d Àž‡…6Âã @  ´P ?d Ÿ‡U~N  @  ´ Q ?d @Ÿ‡¥´r @  ´ R ?d €Ÿ‡…ô¶Œ @  ´ S uР‡?d ÀŸ‡†®ô@ @  ´ T ?d  ‡÷¥*& @  ´ U ?d X ‡ÚÐ_ @  ´V ?d ˜ ‡'/Ò¡ @  ´W ?d Ø ‡?é= @  ´X ?d ¡‡ÊweÕ @  ´Y ?d X¡‡:Ÿ¬ @  ´Z ?d ˜¡‡ýR @  ´[ ?d Ø¡‡§ßž @  ´\ ?d ¢‡„ã_ @  ´] ?d X¢‡tœ…& @  ´^ ?d ˜¢‡Ti‡Ø @  ´_ ?d Ø¢‡† ?d ˜¬‡ºõÄB @  ´?‡ ?d ج‡8äÞü @  ´@ˆ ?d ­‡è¬R @  ´A‰ ?d X­‡Ó¨m @  ´BŠ ?d ˜­‡8&ª“ @  ´C‹ ?d Ø­‡;|è_ @  ´DŒ ?d ®‡¦8Hž @  ´E ?d X®‡VG²ç @  ´FŽ ?d ˜®‡v²° @  ´G ?d Ø®‡ƒS׉ @  ´H ?d ¯‡S @  ´I‘ ?d X¯‡£d¡ @  ´J’ ?d ˜¯‡ƒ‘£æ @  ´K“ ?d د‡€Ëá* @  ´L” ?d °‡>]˜ @  ´M• ?d X°‡Îj§á @  ´N– ?d ˜°‡ @  ´O— ?d ذ‡Óžƒ @  ´P˜ ?d ±‡Çk @  ´Q™ ?d X±‡ó¸è @  ´Rš ?d ˜±‡ÓMêì @  ´S› ?d ر‡Ð¨  @  ´Tœ ?d ²‡MSá @  ´U ?d X²‡½,ò˜ @  ´Vž ?d ˜²‡Ùðf @  ´WŸ ?d ز‡õ®* @  ´X  ?d ³‡%Ç" @  ´Y¡ ?d X³‡ոػ @  ´Z¢ ?d ˜³‡õMÚE @  ´[£ ?d س‡ö˜‰ @  ´\¤ ?d ´‡ïYk† @  ´]¥ ?d X´‡&‘ÿ @  ´^¦ ?d ˜´‡?Ó“ @  ´_§ ?d Ø´‡Å- @  ´`¨ ?d µ‡ÃÅ @  ´a© ?d Xµ‡3òù¼ @  ´bª ?d ˜µ‡ûB @  ´c« ?d ص‡]¹Ž @  ´d¬ ?d ¶‡O @  ´e­ ?d X¶‡}fã6 @  ´f® ?d ˜¶‡]“áÈ @  ´g¯ ?d ض‡¨r†X @  ´h° ?d ·‡x: ° @  ´i± ?d X·‡ˆEðÉ @  ´j² ?d ˜·‡¨°ò7 @  ´k³ ?d Ø·‡«ê°û @  ´l´ ?d ¸‡Ÿ<æ @  ´mµ ?d X¸‡ojÆŸ @  ´n¶ ?d ˜¸‡OŸÄa @  ´o· ?d ظ‡rÿý @  ´p¸ ?d ¹‡¢Çs @  ´q¹ ?d X¹‡R¸‰l @  ´rº ?d ˜¹‡rM‹’ @  ´s» ?d ع‡qÉ^ @  ´t¼ ?d º‡ìSiŸ @  ´u½ ?d Xº‡,“æ @  ´v¾ ?d ˜º‡<Ù‘ @  ´w¿ ?d غ‡¤ßÚE @  ´xÀ ?d »‡t—V­ @  ´yÁ ?d X»‡„è¬Ô @  ´z ?d ˜»‡¤®* @  ´{à?d Ø»‡§Gìæ @  ´|Ä ?d ¼‡¾ é @  ´}Å ?d X¼‡Nvå @  ´~Æ ?d ˜¼‡nƒçn @  ´Ç ?d ؼ‡ÄÍá @  ´€È ?d ½‡ߌA  @  ´É ?d X½‡/ó»p @  ´‚Ê ?d ˜½‡¹Ž @  ´ƒË ?d ؽ‡ \ûB @  ´„Ì ?d ¾‡‘[ƒ @  ´…Í ?d X¾‡ag¡ú @  ´†Π?d ˜¾‡A’£ @  ´‡Ï ?d ؾ‡´sÄ” @  ´ˆР?d ¿‡d;H| @  ´‰Ñ ?d X¿‡”D² @  ´ŠÒ ?d ˜¿‡´±°û @uÐÀ‡  ´‹Ó ?d Ø¿‡·ëò7 @  ´ŒÔ ?d 0À‡Ó£e @  ´Õ ?d pÀ‡#dY @  ´ŽÖ ?d °À‡‘[â @  ´× ?d ðÀ‡>`~ @  ´Ø ?d 0Á‡îÉì– @  ´‘Ù ?d pÁ‡¶ï @  ´’Ú ?d °Á‡>C @  ´“Û ?d ðÁ‡=VÝ @  ´”Ü ?d 0‡ ]ö @  ´•Ý ?d p‡P" e @  ´–Þ ?d °Â‡p×› @  ´—ß ?d ð‡P× @  ´˜à ?d 0ÇÈÉÜ? @  ´™á ?d pÇ8¶&F @  ´šâ ?d °Ã‡C$¸ @  ´›ã ?d ðÇft @  ´œä ?d 0ćW•{ @  ´å ?d pćò(o @  ´žæ ?d °Ä‡ÒÝmü @  ´Ÿç ?d ðćþËqÐ @  ´ è ?d 0Ň.ƒý8 @  ´¡é ?d pŇÞüA @  ´¢ê ?d °Å‡þ ¿ @  ´£ë ?d ðŇýSGs @  ´¤ì ?d 0Ƈ`ç² @  ´¥í ?d pƇhË @  ´¦î ?d °Æ‡°5 @  ´§ï ?d ðƇE|x¥ @  ´¨ð ?d 0LJ•4ôM @  ´©ñ ?d pLJeK4 @  ´ªò ?d °Ç‡E¾ Ê @  ´«ó ?d ðLJFäN @  ´¬ô ?d 0ȇr @  ´­õ ?d pȇ‚d8b @  ´®ö ?d °È‡¢‘:œ @  ´¯÷ ?d ðȇŸ @  ´°ø ?d 0ɇOÉè @  ´±ù ?d pɇ¿¶w‘ @  ´²ú ?d °É‡ŸCuo @  ´³û ?d ðɇœ7£ @  ´´ü ?d 0ʇ]—b @  ´µý ?d pʇñ"m @  ´¶þ ?d °Ê‡Ñ×oå @  ´·ÿ ?d ðʇ+p%& @  ´¸¡?d 0ˇû8©Î @  ´¹¡?d pˇ GS· @  ´º¡?d °Ë‡+²QI @  ´»¡?d ðˇ(è… @  ´¼¡?d 0̇1¦àŠ @  ´½¡?d ṗÁÙó @  ´¾¡?d °Ì‡á,  @  ´¿¡?d ð̇c=³ @  ´À¡?d 0͇³uŽ[ @  ´Á ¡?d p͇C t" @  ´Â ¡?d °Í‡cÿvÜ @  ´Ã ¡?d ð͇`¥4 @  ´Ä ¡?d 0·ýá”Ñ @  ´Å ¡?d p· žn¨ @  ´Æ¡?d °Î‡-klV @  ´Ç¡?d ð·ØŠ Æ @  ´È¡?d 0χ‡. @  ´É¡?d pχø½}W @  ´Ê¡?d °Ï‡ØH© @  ´Ë¡?d ðχÛ=e @  ´Ì¡?d 0ЇeÌ× @  ´Í¡?d pЇ•³{® @  ´Î¡?d °Ð‡µFyP @  ´Ï¡?d ðЇˆVBÌ @  ´Ð¡?d 0чXÎ$ @  ´Ñ¡?d pч¨a4] @  ´Ò¡?d °Ñ‡ˆ”6£ @  ´Ó¡?d ðч‹Îto @  ´Ô¡?d 0Ò‡ŠÔ® @  ´Õ¡?d pÒ‡æõ.× @  ´Ö¡?d °Ò‡Æ,) @  ´×¡?d ðÒ‡®Vre @  ´Ø ¡?d 0Ó‡~þ @  ´Ù!¡?d pÓ‡Žaô @  ´Ú"¡?d °Ó‡®”  @  ´Û#¡?d ðÓ‡­ÎDÆ @  ´Ü$¡?d 0Ô‡´€·É @  ´Ý%¡?d pÔ‡DÿM° @  ´Þ&¡?d °Ô‡d ON @  ´ß'¡?d ðÔ‡HSb @  ´à(¡?d 0Õ‡˜Tߊ @  ´á)¡?d pÕ‡h+%ó @  ´â*¡?d€ °Õ‡<;« @  µ+¡?d ðÕ‡Þ1N @  µ,¡?d 0Ö‡CB‘ @  µ-¡?d pÖ‡vt @  µ.¡?d °Ö‡V’å @  µ/¡?d ðÖ‡mÒª @  µ0¡?d 0ׇ½š&ç @  µ1¡?d pׇƒWƒä @  µ2¡?d °×‡£¢ @  µ 3¡?d ðׇe±8; @  µ 4¡?d 0؇QN´& @  µ 5¡?d p؇dxµ² @  µ 6¡?d °Ø‡D·L @  µ 7¡?d ð؇ŽíJ @  µ8¡?d 0Ù‡ÊÆa¢ @  µ9¡?d pÙ‡YªúA @  µ:¡?d °Ù‡y_ø¿ @  µ;¡?d ðÙ‡¿LAž @  µ<¡?d 0Ú‡"á_ @  µ=¡?d pÚ‡>àË @  µ>¡?d °Ú‡7Ëâ5 @  µ?¡?d ðÚ‡aö @  µ@¡?d 0Û‡±7zú @  µA¡?d pÛ‡úßù @  µB¡?d °Û‡¯Ý @  µC¡?d ðÛ‡id& @  µD¡?d 0܇pR—) @  µE¡?d p܇Ed–½ @  µF¡?d °Ü‡e‘”C @  µG¡?d ð܇;’ÎE @  µH¡?d 0݇ëÚB­ @  µI¡?d p݇i°þþ @  µ J¡?d °Ý‡IEü @  µ!K¡?d ð݇VE! @  µ"L¡?d 0Þ‡åà @  µ#M¡?d pÞ‡'$ät @  µ$N¡?d °Þ‡ÑæŠ @  µ%O¡?d ðÞ‡<‚Þ` @  µ&P¡?d 0߇ìÊRˆ @  µ'Q¡?d p߇Ò÷‹ @  µ(R¡?d uÐà‡/°ß‡òòõu @  µ)S¡?d ð߇4áLT @  µ*T¡?d Hà‡-E¢ @  µ+U¡?d ˆà‡º @  µ,V¡?d Èà‡8†È @  µ-W¡?d á‡4\Ðø @  µ.X¡?d HᇶÍÇ& @  µ/Y¡?d ˆá‡‡ÅIå @  µ0Z¡?d Èá‡T^; @  µ1[¡?d â‡Ü’P @  µ2\¡?d Hâ‡^GÛ @  µ3]¡?d ˆâ‡ÉQSo @  µ4^¡?d Èâ‡KÀD± @  µ5_¡?d ㇿýÞ± @  µ6`¡?d Hã‡=lÉo @  µ7a¡?d ˆã‡¡ÅyL @  µ8b¡?d Èã‡#Tn’ @  µ9c¡?d ä‡~˜3b @  µ:d¡?d Hä‡ü $¼ @  µ;e¡?d ˆä‡k[0 @  µ<f¡?d Èä‡éÊ'Ö @  µ=g¡?d å‡åææ @  µ>h¡?d Hå‡gñ8 @  µ?i¡?d ˆå‡éˆ^Ù @  µ@j¡?d Èå‡kI @  µAk¡?d 懲ßG9 @  µBl¡?d Hæ‡0NPç @  µCm¡?d ˆæ‡§DS @  µDn¡?d Èæ‡%S @  µEo¡?d ç‡LðQ @  µFp¡?d Hç‡Ζç @  µGq¡?d ˆç‡R?W¬ @  µHr¡?d Èç‡Ю@r @  µIs¡?d 臠Ób @  µJt¡?d Hè‡"BuN @  µKu¡?d ˆè‡µaú @  µLv¡?d Èè‡7v$ @  µMw¡?d é‡;[· @  µNx¡?d Hé‡¹Ê Ê @  µOy¡?d ˆé‡ˆÂ.  @  µPz¡?d Èé‡ S9× @  µQ{¡?d ê‡Ó•7é @  µR|¡?d Hê‡Q 7 @  µS}¡?d ˆê‡ÆV4ƒ @  µT~¡?d Èê‡DÇ#] @  µU¡?d ë‡]løÞ @  µV€¡?d Hë‡ßýï @  µW¡?d ˆë‡CT_# @  µX‚¡?d Èë‡ÁÅHý @  µYƒ¡?d 쇜   @  µZ„¡?d Hì‡˜Ó @  µ[…¡?d ˆì‡‰Êg @  µ\†¡?d Èì‡ [¹ @  µ]‡¡?d í‡À‰ @  µ^ˆ¡?d H퇅×W @  µ_‰¡?d ˆí‡¥~$ @  µ`Š¡?d Èí‡'iú @  µa‹¡?d î‡þIgÄ @  µbŒ¡?d Hî‡|Øp @  µc¡?d ˆî‡ëŠd® @  µdŽ¡?d Èî‡isp @  µe¡?d ï‡‘Ь @  µf¡?d HÇr @  µg‘¡?d ˆï‡©wQ @  µh’¡?d È8` @  µi“¡?d ð‡fdr @  µj”¡?d Hð‡äõe @  µk•¡?d ˆð‡s§q¨ @  µl–¡?d Èð‡ñ6fv @  µm—¡?d ñ‡ýì§F @  µn˜¡?d Hñ‡}°˜ @  µo™¡?d ˆñ‡Nu>[ @  µpš¡?d Èñ‡Ìä)… @  µq›¡?d ò‡"'» @  µrœ¡?d Hò‡—³0e @  µs¡?d ˆò‡á$Ñ @  µtž¡?d Èò‡‚p3 @  µuŸ¡?d ó‡vM© @  µv ¡?d Hó‡ôܾÑ @  µw¡¡?d ˆó‡huò @  µx¢¡?d Èó‡êä, @  µy£¡?d ô‡·(DÜ @  µz¤¡?d Hô‡5¹S @  µ{¥¡?d ˆô‡¢ëG¶ @  µ|¦¡?d Èô‡ zPh @  µ}§¡?d õ‡, ‘X @  µ~¨¡?d Hõ‡®1†† @  µ©¡?d ˆõ‡ÃnV @  µ€ª¡?d Èõ‡Aÿˆ @  µ«¡?d ö‡˜9¶ @  µ‚¬¡?d Hö‡¨h @  µƒ­¡?d ˆö‡úÜ @  µ„®¡?d Èö‡k @  µ…¯¡?d ÷‡fá·Þ @  µ†°¡?d H÷‡äp  @  µ‡±¡?d ˆ÷‡xÙ# @  µˆ²¡?d È÷‡úHý @  µ‰³¡?d ø‡Š5% @  µŠ´¡?d Hø‡¤2Á @  µ‹µ¡?d ˆø‡Ÿö&u @  µŒ¶¡?d Èø‡g1« @  µ·¡?d ù‡½ð› @  µŽ¸¡?d Hù‡“,çE @  µ¹¡?d ˆù‡¢$i† @  µº¡?d Èù‡ µ~X @  µ‘»¡?d ú‡ùspf @  µ’¼¡?d Hú‡{âg¸ @  µ“½¡?d ˆú‡ì°s  @  µ”¾¡?d Èú‡n!dÒ @  µ•¿¡?d û‡jLëà @  µ–À¡?d Hû‡èÝü @  µ—Á¡?d ˆû‡ttL> @  µ˜¡?d Èû‡öå[à @  µ™á?d ü‡«) @  µšÄ¡?d Hü‡)¸Î @  µ›Å¡?d ˆü‡¾êz @  µœÆ¡?d Èü‡<{¤ @  µÇ¡?d ý‡0¡Ó” @  µžÈ¡?d Hý‡²0ÄJ @  µŸÉ¡?d ˆý‡’>m9 @  µ Ê¡?d Èý‡)h¦2 @  µ¡ Ë¡?d þ‡𮨠 @  µ¢ Ì¡?d Hþ‡r?¿Ò @  µ£ Í¡?d ˆþ‡åm«f @  µ¤ Ρ?d Èþ‡gü¼¸ @  µ¥ Ï¡?d ÿ‡vd @  µ¦ С?d Hÿ‡Œçº @  µ§ Ñ¡?d ˆÿ‡N¸™ @  µ¨ uЈҡ?d Èÿ‡«s’ @  µ©Ó¡?d ˆVNÕ¾ @  µªÔ¡?d `ˆÔßÂ` @  µ«Õ¡?d  ˆCÖÔ @  µ¬Ö¡?d àˆÁÁ  @  µ­ס?d ˆÍÆ: @  µ®Ø¡?d `ˆOWä @  µ¯Ù¡?d  ˆ~_™' @  µ°Ú¡?d àˆüÎŽù @  µ±Û¡?d ˆ%€Ç @  µ²Ü¡?d `ˆ§™— @  µ³Ý¡?d  ˆ0˃­ @  µ´Þ¡?d àˆ²Z”s @  µµß¡?d ˆFgs @  µ¶à¡?d `ˆÄö­ @  µ·á¡?d  ˆX_©Ž @  µ¸â¡?d àˆÚξP @  µ¹ã¡?d ˆ‡ã  @  µºä¡?d `ˆ“ô~ @  µ»å¡?d  ˆ’ÁàÊ @  µ¼æ¡?d àˆP÷ @  µ½ç¡?d ˆŠ6$ @  µ¾è¡?d `ˆž!ú @  µ¿é¡?d  ˆŽ @  µÀê¡?d àˆ’ƒ™Å @  µÁë¡?d ˆKE—û @  µÂì¡?d `ˆÉÔ€% @  µÃí¡?d  ˆ^†”‘ @  µÄî¡?d àˆÜƒO @  µÅï¡?d ˆµ “ @  µÆð¡?d `ˆ7 7M @  µÇñ¡?d  ˆ«¥‡n @  µÈò¡?d àˆ)4° @  µÉó¡?d ˆYI²R @  µÊô¡?d `ˆÛØ¥Œ @  µËõ¡?d  ˆLб8 @  µÌö¡?d àˆÎ¦æ @  µÍ÷¡?d ˆÂÁgÖ @  µÎø¡?d ` ˆ@Pp @  µÏù¡?d   ˆqXþË @  µÐú¡?d à ˆóÉé @  µÑû¡?d ˆ*ç+ @  µÒü¡?d ` ˆ¨žðõ @  µÓý¡?d   ˆ?ÌäA @  µÔþ¡?d à ˆ½]óŸ @  µÕÿ¡?d ˆi³H5 @  µÖ¢?d ` ˆë"_ë @  µ×¢?d   ˆw‹ïÈ @  µØ¢?d à ˆõø @  µÙ¢?d ˆ¨Ö¥æ @  µÚ¢?d ` ˆ*G²8 @  µÛ¢?d   ˆ½¦Œ @  µÜ¢?d à ˆ?„±R @  µÝ¢?d ˆ3^pb @  µÞ¢?d ` ˆ±Ïg¼ @  µß ¢?d   ˆ‘ÁÎÏ @  µà ¢?d à ˆPÙ @  µá ¢?d ˆÊ–×/ @  µâ ¢?d€ `ˆ‰@7ñ @  ¶ ¢?d  ˆÿSkl @  ¶¢?d àˆ}Â|² @  ¶¢?d ˆÑ$ƒ @  ¶¢?d `ˆS3] @  ¶¢?d  ˆ‹Ü @  ¶¢?d àˆƒËÚ @  ¶¢?d ˆ·ô†í @  ¶¢?d `ˆ5e‘3 @  ¶ ¢?d  ˆg~~j @  ¶ ¢?d àˆåïi´ @  ¶ ¢?d ˆ,|Si @  ¶ ¢?d `ˆ®íD· @  ¶ ¢?d  ˆüö«î @  ¶¢?d àˆ~g¼0 @  ¶¢?d ˆIJӔ @  ¶¢?d `ˆF#ÄJ @  ¶¢?d  ˆ8+ @  ¶¢?d àˆ–©<Í @  ¶¢?d ˆ§Ý]  @  ¶ ¢?d `ˆ%LJþ @  ¶!¢?d  ˆwW¥§ @  ¶"¢?d àˆõƲy @  ¶#¢?d ˆf¸°ó @  ¶$¢?d `ˆä)§- @  ¶%¢?d  ˆ¶2Ht @  ¶&¢?d àˆ4£_ª @  ¶'¢?d ˆý0ew @  ¶(¢?d `ˆ¡r© @  ¶)¢?d  ˆ-ºð @  ¶*¢?d àˆ¯+Š. @  ¶+¢?d ˆøÂ: @  ¶ ,¢?d `ˆ†iÕä @  ¶!-¢?d  ˆÔr:½ @  ¶".¢?d àˆVã-c @  ¶#/¢?d ˆú uR @  ¶$0¢?d `ˆx±bŒ @  ¶%1¢?d  ˆ*ªÕ @  ¶&2¢?d àˆ¨;š  @  ¶'3¢?d ˆôç“ @  ¶(4¢?d `ˆ”eðM @  ¶)5¢?d  ˆÆ~ @  ¶*6¢?d àˆDïÊ @  ¶+7¢?d ˆ|2 @  ¶,8¢?d `ˆí%É @  ¶-9¢?d  ˆ]öÊ @  ¶.:¢?d àˆßgÝN @  ¶/;¢?d ˆe²²ê @  ¶0<¢?d `ˆç#¥4 @  ¶1=¢?d  ˆµ8Jm @  ¶2>¢?d àˆ7©]³ @  ¶3?¢?d ˆö)O @  ¶4@¢?d `ˆt>‘ @  ¶5A¢?d  ˆ&ÑÈ @  ¶6B¢?d àˆ¤–Æ @  ¶7C¢?d ˆ7èÄœ @  ¶8D¢?d `ˆµyÓB @  ¶9E¢?d  ˆçb< @  ¶:F¢?d àˆeó+Å @  ¶;G¢?d ˆ¬` @  ¶<H¢?d `ˆ.ñÆ @  ¶=I¢?d  ˆ|êéŸ @  ¶>J¢?d àˆþ{þA @  ¶?K¢?d ˆû¯°Ç @  ¶@L¢?d `ˆy>§ @  ¶AM¢?d  ˆ+%H@ @  ¶BN¢?d àˆ©´_ž @  ¶CO¢?d ˆw¯ @  ¶DP¢?d `ˆ‡æq @  ¶EQ¢?d  ˆÕýÿ(uÐ ˆ @  ¶FR¢?d àˆWlèö @  ¶GS¢?d 8 ˆ¬WÇ @  ¶HT¢?d x ˆ.ÆÐË @  ¶IU¢?d ¸ ˆ|Ý?’ @  ¶JV¢?d ø ˆþL(L @  ¶KW¢?d 8!ˆ7ß‘ @  ¶LX¢?d x!ˆµNO @  ¶MY¢?d ¸!ˆçUê @  ¶NZ¢?d ø!ˆeÄýÈ @  ¶O[¢?d 8"ˆß’l @  ¶P\¢?d x"ˆ]€…² @  ¶Q]¢?d ¸"ˆ›jë @  ¶R^¢?d ø"ˆ }5 @  ¶S_¢?d 8#ˆ¼~Ø @  ¶T`¢?d x#ˆ>ï  @  ¶Ua¢?d ¸#ˆlôä_ @  ¶Vb¢?d ø#ˆîeó @  ¶Wc¢?d 8$ˆ}ñ  @  ¶Xd¢?d x$ˆÿŠæÕ @  ¶Ye¢?d ¸$ˆ­‘ Œ @  ¶Zf¢?d ø$ˆ/R @  ¶[g¢?d 8%ˆæ“$ @  ¶\h¢?d x%ˆd3Q @  ¶]i¢?d ¸%ˆ6Ü @  ¶^j¢?d ø%ˆ´ˆËÖ @  ¶_k¢?d 8&ˆ[ƒÂ @  ¶`l¢?d x&ˆÊ” @  ¶am¢?d ¸&ˆÏÑ{E @  ¶bn¢?d ø&ˆM@l› @  ¶co¢?d 8'ˆáƒ4ª @  ¶dp¢?d x'ˆc#t @  ¶eq¢?d ¸'ˆ1 Ì- @  ¶fr¢?d ø'ˆ³˜Ûó @  ¶gs¢?d 8(ˆ W¦k @  ¶ht¢?d x(ˆƱµ @  ¶iu¢?d ¸(ˆÝÝ^ì @  ¶jv¢?d ø(ˆ_LI2 @  ¶kw¢?d 8)ˆ–ßsï @  ¶lx¢?d x)ˆNd1 @  ¶my¢?d ¸)ˆFU‹h @  ¶nz¢?d ø)ˆÄÄœ¶ @  ¶o{¢?d 8*ˆ~ó @  ¶p|¢?d x*ˆü€äÌ @  ¶q}¢?d ¸*ˆ®› • @  ¶r~¢?d ø*ˆ, K @  ¶s¢?d 8+ˆðè<% @  ¶t€¢?d x+ˆry+û @  ¶u¢?d ¸+ˆ bÄ¢ @  ¶v‚¢?d ø+ˆ¢óÓ| @  ¶wƒ¢?d 8,ˆ1Ñö @  ¶x„¢?d x,ˆ³Æ( @  ¶y…¢?d ¸,ˆá)q @  ¶z†¢?d ø,ˆc–>¯ @  ¶{‡¢?d 8-ˆªr @  ¶|ˆ¢?d x-ˆ(”¬ @  ¶}‰¢?d ¸-ˆzüõ @  ¶~Š¢?d ø-ˆøë+ @  ¶‹¢?d 8.ˆœ•œ @  ¶€Œ¢?d x.ˆœ ‚B @  ¶¢?d ¸.ˆÎm @  ¶‚Ž¢?d ø.ˆL‡zÅ @  ¶ƒ¢?d 8/ˆàD"ô @  ¶„¢?d x/ˆbÕ5* @  ¶…‘¢?d ¸/ˆ0ÎÚs @  ¶†’¢?d ø/ˆ²_Í­ @  ¶‡“¢?d 80ˆ†±€š @  ¶ˆ”¢?d x0ˆ —D @  ¶‰•¢?d ¸0ˆV;x @  ¶Š–¢?d ø0ˆÔªoà @  ¶‹—¢?d 81ˆ9U @  ¶Œ˜¢?d x1ˆŸ¨BÀ @  ¶™¢?d ¸1ˆͳ­™ @  ¶Žš¢?d ø1ˆO"ºG @  ¶›¢?d 82ˆõ÷Õã @  ¶œ¢?d x2ˆwfÂ= @  ¶‘¢?d ¸2ˆ%}-d @  ¶’ž¢?d ø2ˆ§ì:º @  ¶“Ÿ¢?d 83ˆ–˜[W @  ¶” ¢?d x3ˆ L‰ @  ¶•¡¢?d ¸3ˆF£Ð @  ¶–¢¢?d ø3ˆă´ @  ¶—£¢?d 84ˆWý¶„ @  ¶˜¤¢?d x4ˆÕl¡Z @  ¶™¥¢?d ¸4ˆ‡wN @  ¶š¦¢?d ø4ˆæYÝ @  ¶›§¢?d 85ˆÌuc @  ¶œ¨¢?d x5ˆNätÞ @  ¶©¢?d ¸5ˆÿ›‡ @  ¶žª¢?d ø5ˆžnŒY @  ¶Ÿ«¢?d 86ˆ5½ÄM @  ¶ ¬¢?d x6ˆ·,Ó“ @  ¶¡­¢?d ¸6ˆå7<Ê @  ¶¢®¢?d ø6ˆg¦+ @  ¶£¯¢?d 87ˆËes% @  ¶¤°¢?d x7ˆIôdû @  ¶¥±¢?d ¸7ˆï‹¢ @  ¶¦²¢?d ø7ˆ™~œ| @  ¶§³¢?d 88ˆ'±áä @  ¶¨´¢?d x8ˆ¥ ö: @  ¶©µ¢?d ¸8ˆ÷;c @  ¶ª¶¢?d ø8ˆuª½ @  ¶«·¢?d 89ˆ¼94` @  ¶¬¸¢?d x9ˆ>¨#¾ @  ¶­¹¢?d ¸9ˆl³Ìç @  ¶®º¢?d ø9ˆî"Û9 @  ¶¯»¢?d 8:ˆT÷´ @  ¶°¼¢?d x:ˆÖf£C @  ¶±½¢?d ¸:ˆ„}L @  ¶²¾¢?d ø:ˆì[Ä @  ¶³¿¢?d 8;ˆÇÈ/8 @  ¶´À¢?d x;ˆEY8æ @  ¶µÁ¢?d ¸;ˆB׿ @  ¶¶¢?d ø;ˆ•ÓÀa @  ¶·â?d 8<ˆ­Âë @  ¶¸Ä¢?d x<ˆ„<Õ5 @  ¶¹Å¢?d ¸<ˆÖ':l @  ¶ºÆ¢?d ø<ˆT¶-² @  ¶»Ç¢?d 8=ˆ%o @  ¶¼È¢?d x=ˆ´± @  ¶½É¢?d ¸=ˆM¯ïè @  ¶¾Ê¢?d ø=ˆÏ>ø6 @  ¶¿Ë¢?d 8>ˆÊê¶° @  ¶ÀÌ¢?d x>ˆH{¡n @  ¶ÁÍ¢?d ¸>ˆ`N7 @  ¶Â΢?d ø>ˆ˜ñYé @  ¶ÃÏ¢?d 8?ˆ42Ø @  ¶ÄТ?d x?ˆ¶£ @  ¶ÅÑ¢?duÐ@ˆ7 ¸?ˆä¸ù_ @  ¶ÆÒ¢?d ø?ˆf)î @  ¶ÇÓ¢?d P@ˆ/µ¥8 @  ¶ÈÔ¢?d @ˆ@§Æ @  ¶ÉÕ¢?d Ð@ˆÿ?]¿ @  ¶ÊÖ¢?d Aˆ/wÑW @  ¶Ë×¢?d PAˆ´=p¼ @  ¶ÌØ¢?d Aˆ”ÈrB @  ¶ÍÙ¢?d ÐAˆd·ˆ; @  ¶ÎÚ¢?d Bˆùó(ú @  ¶ÏÛ¢?d PBˆ\óðA @  ¶ÐÜ¢?d Bˆ|ò¿ @  ¶ÑÝ¢?d ÐBˆŒyÆ @  ¶ÒÞ¢?d Cˆ\1„. @  ¶Óߢ?d PCˆ?œ~õ @  ¶Ôà¢?d Cˆi|  @  ¶Õá¢?d ÐCˆï†r @  ¶Öâ¢?d DˆöXu} @  ¶×ã¢?d PDˆþù“& @  ¶Øä¢?d DˆÞ ‘Ø @  ¶Ùå¢?d ÐDˆ.sk¡ @  ¶Úæ¢?d Eˆþ;çI @  ¶Ûç¢?d PEˆeqF¢ @  ¶Üè¢?d EˆE„D\ @  ¶Ýé¢?d ÐEˆµû¾% @  ¶Þê¢?d Fˆ(¿ä @  ¶ßë¢?d PFˆœ¹áï @  ¶àì¢?d Fˆ¼Lã @  ¶áí¢?d ÐFˆL3h @  ¶âî¢?d€ Gˆ踉& @  ·ï¢?d PGˆ÷ã @  ·ð¢?d Gˆ×ö @  ·ñ¢?d ÐGˆâ b @  ·ò¢?d HˆÖß @  ·ó¢?d PHˆÌ4^ @  ·ô¢?d Hˆ096  @  ·õ¢?d ÐHˆô“£ @  ·ö¢?d IˆÞ¼K @  · ÷¢?d PIˆ€¿EM @  · ø¢?d Iˆ JG³ @  · ù¢?d ÐIˆ•|F' @  · ú¢?d Jˆ8ææ @  · û¢?d PJˆÎ+_Ç @  ·ü¢?d JˆîÞ]9 @  ·ý¢?d ÐJˆ}²ÆÚ @  ·þ¢?d Kˆ­úJ2 @  ·ÿ¢?d PKˆ™ï_‹ @  ·£?d Kˆ¹]u @  ·£?d ÐKˆŒ,\á @  ·£?d Lˆ•b¯î @  ·£?d PLˆSqÏ @  ·£?d Lˆs„1 @  ·£?d ÐLˆMI±2 @  ·£?d Mˆ=Ú @  ·£?d PMˆÃgÜ @  ·£?d Mˆã÷e" @  · £?d ÐMˆÖÁd¶ @  · £?d NˆK…Äw @  · £?d PNˆ–}V @  · £?d Nˆ­c¨ @  · £?d ÐNˆ/ Ãû @  · £?d OˆÿAO @  ·!£?d POˆÄwù @  ·"£?d Oˆäçu @  ·#£?d ÐOˆÑÑt“ @  ·$£?d PˆoÈ! @  ·%£?d PPˆ©q @  ·&£?d Pˆ‰ésþ @  ·'£?d ÐPˆ·$Öý @  ·(£?d QˆglZ @  ·)£?d PQˆ9o @  ·*£?d Qˆší @  ·+£?d ÐQˆ,¬y @  ·,£?d Rˆ±è£¸ @  ·-£?d PRˆwû™ @  ·.£?d RˆWg @  ·/£?d ÐRˆÄbƒ„ @  ·0£?d Sˆ*l @  ·1£?d PSˆ²ÎZ @  ·2 £?d Sˆ’; ¤ @  ·3!£?d ÐSˆ§ 0 @  ·4"£?d Tˆ¾Cþ? @  ·5#£?d PTˆxPG @  ·6$£?d TˆX¥Eà @  ·7%£?d ÐTˆfhàã @  ·8&£?d Uˆ¶ l  @  ·9'£?d PUˆè#6  @  ·:(£?d UˆÈÖ4ó @  ·;)£?d ÐUˆýà5g @  ·<*£?d Vˆ`¤•¦ @  ·=+£?d PVˆ¦·,‡ @  ·>,£?d Vˆ†B.y @  ·?-£?d ÐVˆª/”¸ @  ·@.£?d WˆzgP @  ·A/£?d PWˆA4 º @  ·B0£?d WˆaÁ"D @  ·C1£?d ÐWˆT÷#Ð @  ·D2£?d Xˆ`¯Í @  ·E3£?d PXˆ¦ì @  ·F4£?d Xˆ†î @  ·G5£?d ÐXˆ¸#± @  ·H6£?d Yˆhk=ù @  ·I7£?d PYˆ6hgÿ @  ·J8£?d Yˆe @  ·K9£?d ÐYˆ#«d• @  ·L:£?d Zˆ¾ïÄT @  ·M;£?d PZˆxü}u @  ·N<£?d ZˆX ‹ @  ·O=£?d ÐZˆËeäh @  ·P>£?d [ˆ-h€ @  ·Q?£?d P[ˆM™|§ @  ·R@£?d [ˆml~Y @  ·SA£?d Ð[ˆXZÍ @  ·TB£?d \ˆAŒÂ @  ·UC£?d P\ˆ‡5ã @  ·VD£?d \ˆ§ò7 @  ·WE£?d Ð\ˆ™?’ @  ·XF£?d ]ˆIwö @  ·YG£?d P]ˆtDð @  ·ZH£?d ]ˆ7F @  ·[I£?d Ð]ˆ·Gš @  ·\J£?d ^ˆŸóç[ @  ·]K£?d P^ˆYà^z @  ·^L£?d ^ˆy\„ @  ·_M£?d Ð^ˆûà× @  ·`N£?d _ˆ+7l? @  ·aO£?d P_ˆdTÕ @  ·bP£?d _ˆ0‘V+ @  ·uÐ`ˆcQ£?d Ð_ˆx'$à @  ·d€R£?d (`ˆÆß‘[ @  ·e€S£?d h`ˆÌ(z @  ·f€T£?d ¨`ˆ 9*„ @  ·g€U£?d è`ˆô‡ @  ·h€V£?d (aˆμo @  ·i€W£?d haˆ¿Yi @  ·j€X£?d ¨aˆ°J[— @  ·k€Y£?d èaˆ…|Z @  ·l€Z£?d (bˆ8ú @  ·m€[£?d hbˆÞ+Cã @  ·n€\£?d ¨bˆþÞA @  ·o€]£?d èbˆm²Úþ @  ·p€^£?d (cˆ½úV @  ·q€_£?d hcˆW  @  ·r€`£?d ¨cˆ;ëUÞ @  ·s€a£?d ècˆÝTJ @  ·t€b£?d (dˆ“§E @  ·u€c£?d hdˆÑ€d @  ·v€d£?d ¨dˆñuš @  ·w€e£?d èdˆϸ¹™ @  ·x€f£?d (eˆð5q @  ·y€g£?d heˆAóow @  ·z€h£?d ¨eˆam‰ @  ·{€i£?d èeˆT0l @  ·|€j£?d (fˆÉtÌÜ @  ·}€k£?d hfˆguý @  ·~€l£?d ¨fˆ/’w @  ·€m£?d èfˆà©ýó @  ·€€n£?d (gˆ0áq @  ·€o£?d hgˆ ²Iñ @  ·‚€p£?d ¨gˆ+GK @  ·ƒ€q£?d ègˆqJ› @  ·„€r£?d (hˆ*ŽÆ† @  ·…€s£?d hhˆì§ @  ·†€t£?d ¨hˆÌh}Y @  ·‡€u£?d èhˆò¥ØZ @  ·ˆ€v£?d (iˆ"íT² @  ·‰€w£?d hiˆ|î´ @  ·Š€x£?d ¨iˆ\ J @  ·‹€y£?d èiˆi- Þ @  ·Œ€z£?d (jˆôi­ @  ·€{£?d hjˆ2z> @  ·Ž€|£?d ¨jˆÀ @  ·€}£?d èjˆã# @  ·€~£?d (kˆQ«Ë @  ·‘€£?d hkˆÙA~ @  ·’€€£?d ¨kˆ:,C€ @  ·“€£?d èkˆB @  ·”€‚£?d (lˆT± @  ·•€ƒ£?d hlˆÐG: @  ·–€„£?d ¨lˆð² Ä @  ·—€…£?d èlˆÎ¯Ç @  ·˜€†£?d (mˆ7#/ @  ·™€‡£?d hmˆ@4y) @  ·š€ˆ£?d ¨mˆ`Á{× @  ·›€‰£?d èmˆU÷zC @  ·œ€Š£?d (nˆȳڂ @  ·€‹£?d hnˆ c£ @  ·ž€Œ£?d ¨nˆ.Ua] @  ·Ÿ€£?d ènˆ¬?Ý @  · €Ž£?d (oˆ|wQæ @  ·¡€£?d hoˆG$i  @  ·¢€£?d ¨oˆgÑkò @  ·£€‘£?d èoˆRçjf @  ·¤€’£?d (pˆì9ÖÔ @  ·¥€“£?d hpˆ**oõ @  ·¦€”£?d ¨pˆ ßm  @  ·§€•£?d èpˆ4È @  ·¨€–£?d (qˆäZDà @  ·©€—£?d hqˆºYæ @  ·ª€˜£?d ¨qˆš¬ @  ·«€™£?d èqˆ¯šŒ @  ·¬€š£?d (rˆ2Þ½M @  ·­€›£?d hrˆôÍl @  ·®€œ£?d ¨rˆÔ8’ @  ·¯€£?d èrˆGTq @  ·°€ž£?d (sˆ—™ @  ·±€Ÿ£?d hsˆ1ø¯ @  ·²€ £?d ¨sˆ Q @  ·³€¡£?d èsˆ$;Å @  ·´€¢£?d (tˆ=uàÊ @  ·µ€££?d htˆûfYë @  ·¶€¤£?d ¨tˆÛ“[ @  ··€¥£?d ètˆå^þ @  ·¸€¦£?d (uˆ5rþ @  ·¹€§£?d huˆk(ø @  ·º€¨£?d ¨uˆKà* @  ·»€©£?d èuˆ~Ö+’ @  ·¼€ª£?d (vˆã’‹S @  ·½€«£?d hvˆ%2r @  ·¾€¬£?d ¨vˆt0Œ @  ·¿€­£?d èvˆ)ŠM @  ·À€®£?d (wˆùQ¥ @  ·Á€¯£?d hwˆÂ>O @  ·€°£?d ¨wˆâ÷<± @  ·À±£?d èwˆ×Á=% @  ·Ä€²£?d (xˆã>±8 @  ·Å€³£?d hxˆ%- @  ·Æ€´£?d ¨xˆØ ç @  ·Ç€µ£?d èxˆ;¯ä @  ·È€¶£?d (yˆë]#  @  ·É€·£?d hyˆµ^y  @  ·Ê€¸£?d ¨yˆ•«{ô @  ·Ë€¹£?d èyˆ z` @  ·Ì€º£?d (zˆ=ÙÚ¡ @  ·Í€»£?d hzˆûÊc€ @  ·΀¼£?d ¨zˆÛ?a~ @  ·Ï€½£?d èzˆHSú @  ·Ѐ¾£?d ({ˆ˜vu @  ·Ñ€¿£?d h{ˆίbR @  ·Ò€À£?d ¨{ˆîZ`¬ @  ·Ó€Á£?d è{ˆÛla8 @  ·Ô€£?d (|ˆÂ"’7 @  ·Õ€ã?d h|ˆ1+ @  ·Ö€Ä£?d ¨|ˆ$Ä)è @  ·×€Å£?d è|ˆ Œë @  ·Ø€Æ£?d (}ˆÊA @  ·Ù€Ç£?d h}ˆ”BZ @  ·Ú€È£?d ¨}ˆ´·Xû @  ·Û€É£?d è}ˆYo @  ·Ü€Ê£?d (~ˆÅù® @  ·Ý€Ë£?d h~ˆÚÖ@ @  ·Þ€Ì£?d ¨~ˆú#Bq @  ·߀Í£?d è~ˆxIþ" @  ·à€Σ?d (ˆ¨rÊ @  ·á€Ï£?d hˆ“RJ  @  ·â€У?d€ ¨ˆuЀˆ'›=\Œ @  ¸€Ñ£?d èˆOJ1 @  ¸€Ò£?d @€ˆ!ô÷E @  ¸€Ó£?d €€ˆ€Ê © @  ¸€Ô£?d À€ˆ[·w @  ¸€Õ£?d ˆ ýÖ8 @  ¸€Ö£?d @ˆ"lÁæ @  ¸€×£?d €ˆ¹Ñº @  ¸€Ø£?d Àˆ’(Æd @  ¸ €Ù£?d ‚ˆ}‚‹ @  ¸ €Ú£?d @‚ˆÿœÜ @  ¸ €Û£?d €‚ˆ^-Ë0 @  ¸ €Ü£?d À‚ˆܼÜî @  ¸ €Ý£?d ƒˆ~½¡ @  ¸€Þ£?d @ƒˆü‹ª @  ¸€ߣ?d €ƒˆ›ßó @  ¸€à£?d Àƒˆ‰È- @  ¸€á£?d „ˆr)Ö… @  ¸€â£?d @„ˆð¸Á[ @  ¸€ã£?d €„ˆQ†–· @  ¸€ä£?d À„ˆÓi @  ¸€å£?d …ˆq±à& @  ¸€æ£?d @…ˆó ÷ø @  ¸€ç£?d €…ˆÁõç¤ @  ¸€è£?d À…ˆCdðz @  ¸€é£?d †ˆ¬Î½ @  ¸€ê£?d @†ˆ._ªÂ @  ¸€ë£?d €†ˆaý. @  ¸€ì£?d À†ˆ ðêð @  ¸€í£?d ‡ˆ¯V‹¿ @  ¸€î£?d @‡ˆ-Çœa @  ¸€ï£?d €‡ˆÆå÷ @  ¸ €ð£?d À‡ˆDtà_ @  ¸!€ñ£?d ˆˆeå @  ¸"€ò£?d @ˆˆ€ô–; @  ¸#€ó£?d €ˆˆ!ÊÁ× @  ¸$€ô£?d Àˆˆ£[Ö  @  ¸%€õ£?d ‰ˆý·F @  ¸&€ö£?d @‰ˆƒl ˜ @  ¸'€÷£?d €‰ˆ±¹°Ä @  ¸(€ø£?d À‰ˆ3(§ @  ¸)€ù£?d ŠˆÜ‚ê| @  ¸*€ú£?d @Šˆ^ý¢ @  ¸+€û£?d €Šˆÿ-ªN @  ¸,€ü£?d ÀŠˆ}¼½ @  ¸-€ý£?d ‹ˆßÜß @  ¸.€þ£?d @‹ˆ]‹Ë @  ¸/€ÿ£?d €‹ˆ”à•” @  ¸0€¤?d À‹ˆq‚J @  ¸1€¤?d Œˆ}Ñœâ @  ¸2€¤?d @Œˆÿ@‹< @  ¸3€¤?d €Œˆ^~ÜÐ @  ¸4€¤?d ÀŒˆÜïË @  ¸5€¤?d ˆ~IªA @  ¸6€¤?d @ˆüؽŸ @  ¸7€¤?d €ˆÎ ­Ã @  ¸8€¤?d ÀˆLœº @  ¸9€ ¤?d Žˆ£6÷{ @  ¸:€ ¤?d @Žˆ!§à¥ @  ¸;€ ¤?d €Žˆ€™·I @  ¸<€ ¤?d ÀŽˆ — @  ¸=€ ¤?d ˆ ®ÁØ @  ¸>€¤?d @ˆ"?Ö @  ¸?€¤?d €ˆg»t @  ¸@€¤?d Àˆ勬ª @  ¸A€¤?d ˆ)»ý¿ @  ¸B€¤?d @ˆ«*êa @  ¸C€¤?d €ˆ ½ @  ¸D€¤?d Àˆˆ…ªS @  ¸E€¤?d ‘ˆ*#Ë @  ¸F€¤?d @‘ˆ¨²Ü @  ¸G€¤?d €‘ˆšgÌž @  ¸H€¤?d À‘ˆöÛ@ @  ¸I€¤?d ’ˆ÷\–& @  ¸J€¤?d @’ˆuÍø @  ¸K€¤?d €’ˆÔóÖ @  ¸L€¤?d À’ˆVbÁÊ @  ¸M€¤?d “ˆôÄ … @  ¸N€¤?d @“ˆvU·[ @  ¸O€¤?d €“ˆÆÂ× @  ¸P€ ¤?d À“ˆ“WÕ  @  ¸Q€!¤?d ”ˆø÷Ë¡ @  ¸R€"¤?d @”ˆzfÜ @  ¸S€#¤?d €”ˆÛX‹“ @  ¸T€$¤?d À”ˆYÉœM @  ¸U€%¤?d •ˆûoý @  ¸V€&¤?d @•ˆyþêÜ @  ¸W€'¤?d €•ˆK+ú€ @  ¸X€(¤?d À•ˆɺí^ @  ¸Y€)¤?d –ˆ& 8 @  ¸Z€*¤?d @–ˆ¤·æ @  ¸[€+¤?d €–ˆ¿à  @  ¸\€,¤?d À–ˆ‡.÷Ô @  ¸]€-¤?d —ˆ%ˆ–› @  ¸^€.¤?d @—ˆ§E @  ¸_€/¤?d €—ˆL;ê¥ @  ¸`€0¤?d À—ˆΪý{ @  ¸a€1¤?d ˜ˆˆ»œÁ @  ¸b€2¤?d @˜ˆ *‹ @  ¸c€3¤?d €˜ˆ«Üó @  ¸d€4¤?d À˜ˆ)…Ë- @  ¸e€5¤?d ™ˆ‹#ªb @  ¸f€6¤?d @™ˆ ²½¼ @  ¸g€7¤?d €™ˆ;g­à @  ¸h€8¤?d À™ˆ¹öº> @  ¸i€9¤?d šˆV\÷X @  ¸j€:¤?d @šˆÔÍà† @  ¸k€;¤?d €šˆuó·j @  ¸l€<¤?d Àšˆ÷b ´ @  ¸m€=¤?d ›ˆUÄÁû @  ¸n€>¤?d @›ˆ×UÖ% @  ¸o€?¤?d €›ˆ@–¶¸ @  ¸p€@¤?d À›ˆÂ¡f @  ¸q€A¤?d œˆ©§¿Î @  ¸r€B¤?d @œˆ+6¨ @  ¸s€C¤?d €œˆŠÿü @  ¸t€D¤?d Àœˆ™è" @  ¸u€E¤?d ˆª?‰m @  ¸v€F¤?d @ˆ(®ž³ @  ¸w€G¤?d €ˆ{Žï @  ¸x€H¤?d Àˆ˜ê™1 @  ¸y€I¤?d žˆw@ÔW @  ¸z€J¤?d @žˆõÑÉ @  ¸{€K¤?d €žˆTï”e @  ¸|€L¤?d ÀžˆÖ~ƒ» @  ¸}€M¤?d ŸˆtØâô @  ¸~€N¤?d @ŸˆöIõ* @  ¸€O¤?d €ŸˆP:¨i @  ¸€€P¤uРˆ?d ÀŸˆÒ«¿· @  ¸€Q¤?d  ˆÑNŒv @  ¸‚€R¤?d X ˆSß›¨ @  ¸ƒ€S¤?d ˜ ˆòáÌD @  ¸„€T¤?d Ø ˆppÛš @  ¸…€U¤?d ¡ˆÒÖºÕ @  ¸†€V¤?d X¡ˆPG­  @  ¸‡€W¤?d ˜¡ˆb’½W @  ¸ˆ€X¤?d Ø¡ˆàª‰ @  ¸‰€Y¤?d ¢ˆ©çï @  ¸Š€Z¤?d X¢ˆ8ð1 @  ¸‹€[¤?d ˜¢ˆ,§Ý @  ¸Œ€\¤?d Ø¢ˆ®—° @  ¸€]¤?d £ˆ 1ÑL @  ¸Ž€^¤?d X£ˆŽ Æ’ @  ¸€_¤?d ˜£ˆé3³ @  ¸€`¤?d Ø£ˆk¢¤À @  ¸‘€a¤?d ¤ˆºh @  ¸’€b¤?d X¤ˆ‚“­¶ @  ¸“€c¤?d ˜¤ˆ#­úZ @  ¸”€d¤?d ؤˆ¡<í„ @  ¸•€e¤?d ¥ˆšŒË @  ¸–€f¤?d X¥ˆ › @  ¸—€g¤?d ˜¥ˆ³Þ‹I @  ¸˜€h¤?d Ø¥ˆ1Oœ— @  ¸™€i¤?d ¦ˆÞåÑñ @  ¸š€j¤?d X¦ˆ\tÆ/ @  ¸›€k¤?d ˜¦ˆýJ‘à @  ¸œ€l¤?d ئˆÛ† @  ¸€m¤?d §ˆÝ}çR @  ¸ž€n¤?d X§ˆ_ìðŒ @  ¸Ÿ€o¤?d ˜§ˆ´Î›l @  ¸ €p¤?d اˆ6_Œ² @  ¸¡€q¤?d ¨ˆpNí @  ¸¢€r¤?d X¨ˆòßúÖ @  ¸£€s¤?d ˜¨ˆSá­: @  ¸¤€t¤?d بˆÑpºä @  ¸¥€u¤?d ©ˆsÖÛ« @  ¸¦€v¤?d X©ˆñGÌu @  ¸§€w¤?d ˜©ˆÃ’Ü) @  ¸¨€x¤?d Ø©ˆAË÷ @  ¸©€y¤?d ªˆ®©†‘ @  ¸ª€z¤?d Xªˆ,8‘O @  ¸«€{¤?d ˜ªˆÆ£ @  ¸¬€|¤?d تˆ—Ñ} @  ¸­€}¤?d «ˆ­1°2 @  ¸®€~¤?d X«ˆ/ §ì @  ¸¯€¤?d ˜«ˆ¥¥“ã @  ¸°€€¤?d Ø«ˆ'4„= @  ¸±€¤?d ¬ˆL”š• @  ¸²€‚¤?d X¬ˆÎK @  ¸³€ƒ¤?d ˜¬ˆo;Ú§ @  ¸´€„¤?d جˆíªÍy @  ¸µ€…¤?d ­ˆO ¬6 @  ¸¶€†¤?d X­ˆÍ»è @  ¸·€‡¤?d ˜­ˆÿH«´ @  ¸¸€ˆ¤?d Ø­ˆ}Ù¼j @  ¸¹€‰¤?d ®ˆ’sñ  @  ¸º€Ф?d X®ˆâæÒ @  ¸»€‹¤?d ˜®ˆ±Ü±> @  ¸¼€Œ¤?d Ø®ˆ3M¦à @  ¸½€¤?d ¯ˆ‘ëǯ @  ¸¾€ޤ?d X¯ˆzÐq @  ¸¿€¤?d ˜¯ˆV_½ @  ¸À€¤?d دˆÔΪÝ @  ¸Á€‘¤?d °ˆþûÈ @  ¸€’¤?d X°ˆšoì @  ¸À“¤?d ˜°ˆ;Q»ú @  ¸Ä€”¤?d ذˆ¹À¬$ @  ¸Å€•¤?d ±ˆfÍk @  ¸Æ€–¤?d X±ˆ™÷Úµ @  ¸Ç€—¤?d ˜±ˆ«"Êé @  ¸È€˜¤?d رˆ)³Ý7 @  ¸É€™¤?d ²ˆÆQ @  ¸Ê€š¤?d X²ˆDˆ‡ @  ¸Ë€›¤?d ˜²ˆå¶Ðc @  ¸Ì€œ¤?d زˆg'ǽ @  ¸Í€¤?d ³ˆŦò @  ¸΀ž¤?d X³ˆG±, @  ¸Ï€Ÿ¤?d ˜³ˆ ƒÄ  @  ¸Ѐ ¤?d سˆ¢Ó~ @  ¸Ñ€¡¤?d ´ˆɲÍÖ @  ¸Ò€¢¤?d X´ˆK#Ú @  ¸Ó€£¤?d ˜´ˆêä @  ¸Ô€¤¤?d Ø´ˆhŒš: @  ¸Õ€¥¤?d µˆÊ*ûu @  ¸Ö€¦¤?d XµˆH»ì« @  ¸×€§¤?d ˜µˆznü÷ @  ¸Ø€¨¤?d صˆøÿë) @  ¸Ù€©¤?d ¶ˆU¦O @  ¸Ú€ª¤?d X¶ˆ•ı‘ @  ¸Û€«¤?d ˜¶ˆ4úæ} @  ¸Ü€¬¤?d ضˆ¶kñ£ @  ¸Ý€­¤?d ·ˆÍì @  ¸Þ€®¤?d X·ˆ–\‡2 @  ¸߀¯¤?d ˜·ˆ}~ìÒ @  ¸à€°¤?d Ø·ˆÿïû  @  ¸á€±¤?d ¸ˆ¹þš¶ @  ¸â€²¤?d€ X¸ˆO¬‘Î @  ¹€³¤?d ˜¸ˆÓŽ  @  ¹€´¤?d ظˆB™Õ @  ¹€µ¤?d ¹ˆê­w @  ¹€¶¤?d X¹ˆh<© @  ¹€·¤?d ˜¹ˆ”[[ @  ¹€¸¤?d عˆÊLQ @  ¹€¹¤?d ºˆ7Ò^M @  ¹€º¤?d XºˆµCI“ @  ¹ €»¤?d ˜ºˆÑ4å’ @  ¹ €¼¤?d غˆS¥òL @  ¹ €½¤?d »ˆ4Jhî @  ¹ €¾¤?d X»ˆ¶Û0 @  ¹ €¿¤?d ˜»ˆB ~7 @  ¹€À¤?d Ø»ˆÀšié @  ¹€Á¤?d ¼ˆÈ)Û @  ¹€¤?d X¼ˆJ¸ @  ¹€ä?d ˜¼ˆ.Ï­ @  ¹€Ĥ?d ؼˆ¬^ºÚ @  ¹€Ť?d ½ˆ˱ x @  ¹€Ƥ?d X½ˆI 7¦ @  ¹€Ǥ?d ˜½ˆµGx€ @  ¹€Ȥ?d ؽˆ7Öo^ @  ¹€ɤ?d ¾ˆÎ}B @  ¹€ʤ?d X¾ˆ”_jœ @  ¹€ˤ?d ˜¾ˆð(Æ @  ¹€̤?d ؾˆr¹ÑC @  ¹€ͤ?d ¿ˆVKá @  ¹€Τ?d X¿ˆ—Ç\? @  ¹€Ϥ?d ˜¿ˆðqõ @uÐÀˆ  ¹€Ф?d Ø¿ˆñáW @  ¹Ѥ?d 0Àˆ•êïˆ @  ¹ Ò¤?d pÀˆ{øV @  ¹!Ó¤?d °Àˆs TW @  ¹"Ô¤?d ðÀˆñC‰ @  ¹#Õ¤?d 0Áˆ–rÙ+ @  ¹$Ö¤?d pÁˆãÎõ @  ¹%פ?d °Áˆè„Ó @  ¹&ؤ?d ðÁˆj–  @  ¹'Ù¤?d 0ˆK „ @  ¹(Ú¤?d pˆÉœ“Ï @  ¹)Û¤?d °Âˆ­ë?Î @  ¹*ܤ?d ðˆ/z( @  ¹+ݤ?d 0ÈH•²² @  ¹,Þ¤?d pÈÊ¥l @  ¹-ߤ?d °Ãˆ΄±z @  ¹.à¤?d ðÈL¦¤ @  ¹/á¤?d 0ĈD¦Ù– @  ¹0â¤?d pĈÆ7ÎH @  ¹1ã¤?d °Äˆ¢@bI @  ¹2ä¤?d ðĈ Ñu— @  ¹3å¤?d 0ňG>ï5 @  ¹4æ¤?d pňůøë @  ¹5ç¤?d °Åˆ9È·Í @  ¹6è¤?d ðň»Y  @  ¹7é¤?d 0ƈšA² @  ¹8ê¤?d pƈÐ¥Ñ @  ¹9ë¤?d °Æˆ|§ Ð @  ¹:ì¤?d ðƈþ6 @  ¹;í¤?d 0Lj™Ù„¬ @  ¹<î¤?d pLjH“r @  ¹=ï¤?d °Çˆ‚¾¸ @  ¹>ð¤?d ðLjî©f @  ¹?ñ¤?d 0Ȉšíˆd @  ¹@ò¤?d pȈ|Ÿº @  ¹Aó¤?d °Èˆ| 3» @  ¹Bô¤?d ðȈþš$e @  ¹Cõ¤?d 0Ɉ™u¾Ç @  ¹Dö¤?d pɈä© @  ¹E÷¤?d °Éˆçƒæ? @  ¹Fø¤?d ðɈeñá @  ¹Gù¤?d 0ʈD ãý @  ¹Hú¤?d pʈÆ›ô# @  ¹Iû¤?d °Êˆ¢ìX" @  ¹Jü¤?d ðʈ }Oü @  ¹Ký¤?d 0ˈG’Õ^ @  ¹Lþ¤?d pˈÅ€ @  ¹Mÿ¤?d °ËˆSr @  ¹N¥?d ðˈÑãÕÇ @  ¹O¥?d 0̈ÙPªõ @  ¹P¥?d p̈[Á½+ @  ¹Q¥?d °Ìˆ?¶* @  ¹R¥?d ð̈½'ô @  ¹S¥?d 0͈ÚÈœV @  ¹T¥?d p͈XY‹ˆ @  ¹U¥?d °Íˆ¤>Ä® @  ¹V¥?d ð͈&¯Óp @  ¹W ¥?d 0Έ·Ál @  ¹X ¥?d pΈ…&Ö² @  ¹Y ¥?d °ÎˆáQz³ @  ¹Z ¥?d ðΈcÀmm @  ¹[ ¥?d 0ψ/÷Ï @  ¹\¥?d pψ†¾à @  ¹]¥?d °Ïˆ‰ÍÛ @  ¹^¥?d ðψÚ @  ¹_¥?d 0Ј#=Í: @  ¹`¥?d pЈ¡¬Úä @  ¹a¥?d °ÐˆÅÛvå @  ¹b¥?d ðЈGJa; @  ¹c¥?d 0ш ¥û™ @  ¹d¥?d pш¢4ìG @  ¹e¥?d °Ñˆ^S£a @  ¹f¥?d ðшÜ´¿ @  ¹g¥?d 0ÒˆýÚ¦£ @  ¹h¥?d pÒˆK±} @  ¹i¥?d °Òˆ<| @  ¹j¥?d ðÒˆ™­ ¢ @  ¹k¥?d 0ÓˆþB @  ¹l¥?d pÓˆ|Ó‡Þ @  ¹m¥?d °ÓˆxS“È @  ¹n ¥?d ðÓˆú„ @  ¹o!¥?d 0Ôˆòqû$ @  ¹p"¥?d pÔˆpàìú @  ¹q#¥?d °Ôˆ—@û @  ¹r$¥?d ðÔˆ–W% @  ¹s%¥?d 0Õˆñé͇ @  ¹t&¥?d pÕˆsxÚY @  ¹u'¥?d °Õˆ• @  ¹v(¥?d ðÕˆ Ž‚¡ @  ¹w)¥?d 0Öˆ,–½ @  ¹x*¥?d pÖˆ®‡c @  ¹y+¥?d °ÖˆÊp+b @  ¹z,¥?d ðÖˆHá<¼ @  ¹{-¥?d 0׈/¦ @  ¹|.¥?d p׈­Ÿ±À @  ¹}/¥?d °×ˆ4¨œ  @  ¹~0¥?d ð׈¶9‹Ô @  ¹1¥?d 0؈Ïlšç @  ¹€2¥?d p؈Mý9 @  ¹3¥?d °Øˆ)Š!8 @  ¹‚4¥?d ð؈«6æ @  ¹ƒ5¥?d 0ÙˆÌô¬D @  ¹„6¥?d pÙˆNe»š @  ¹…7¥?d °Ùˆ²ô¼ @  ¹†8¥?d ðÙˆ0“ãb @  ¹‡9¥?d 0Úˆ‹ñ~ @  ¹ˆ:¥?d pÚˆ“æ  @  ¹‰;¥?d °Úˆ÷mJ¡ @  ¹Š<¥?d ðÚˆuü] @  ¹‹=¥?d 0ÛˆÇÝ @  ¹Œ>¥?d pÛˆ‚Ð @  ¹?¥?d °ÛˆdRÑ @  ¹Ž@¥?d ðÛˆæÃÆÚ @  ¹A¥?d 0܈îp¹è @  ¹B¥?d p܈lá®6 @  ¹‘C¥?d °Üˆ–7 @  ¹’D¥?d ð܈Šé @  ¹“E¥?d 0݈íèK @  ¹”F¥?d p݈oy˜• @  ¹•G¥?d °Ýˆ“׳ @  ¹–H¥?d ð݈Àm @  ¹—I¥?d 0Þˆ0—Òq @  ¹˜J¥?d pÞˆ²ů @  ¹™K¥?d °ÞˆÖqi® @  ¹šL¥?d ðÞˆTà~p @  ¹›M¥?d 0߈3äÒ @  ¹œN¥?d p߈±žó  @  ¹O¥?d uÐàˆ/°ßˆ(©ÞÆ @  ¹žP¥?d ð߈ª8É @  ¹ŸQ¥?d Hàˆ³g @  ¹¡S¥?d ÈàˆU‡¼ @  ¹¢T¥?d áˆ…É T @  ¹£U¥?d Hሰÿ À @  ¹¤V¥?d ˆáˆ > @  ¹¥W¥?d ÈáˆÎ R8 @  ¹¦X¥?d âˆSMòù @  ¹§Y¥?d Hâˆm€Wú @  ¹¨Z¥?d ˆâˆMuU @  ¹©[¥?d È∋fì% @  ¹ª\¥?d ãˆ[.`Í @  ¹«]¥?d HãˆnaY @  ¹¬^¥?d ˆãˆNíc§ @  ¹­_¥?d Èãˆè b‘ @  ¹®`¥?d äˆñG‘ž @  ¹¯a¥?d Häˆb+ } @  ¹°b¥?d ˆäˆBÞƒ @  ¹±c¥?d È䈄ͱ¢ @  ¹²d¥?d åˆT…=J @  ¹³e¥?d Håˆa³<Þ @  ¹´f¥?d ˆåˆAF>  @  ¹µg¥?d ÈåˆEd& @  ¹¶h¥?d 戂Äç @  ¹·i¥?d H戼Ìaä @  ¹¸j¥?d ˆæˆœ9c @  ¹¹k¥?d ÈæˆZ*Ú; @  ¹ºl¥?d 爊bVÓ @  ¹»m¥?d H爿TWG @  ¹¼n¥?d ˆçˆŸ¡U¹ @  ¹½o¥?d È爤òmS @  ¹¾p¥?d èˆ áN @  ¹¿q¥?d H舼`[ @  ¹Àr¥?d ˆèˆœ•Yq @  ¹Ás¥?d ÈèˆZ†àP @  ¹Ât¥?d 鈊Îl¸ @  ¹Ãu¥?d H鈿øm, @  ¹Äv¥?d ˆéˆŸ oÒ @  ¹Åw¥?d ÈéˆÁ5Ô @  ¹Æx¥?d êˆ\J• @  ¹Çy¥?d Hêˆb‡0 @  ¹Èz¥?d ˆêˆBr2è @  ¹É{¥?d Èꈄa‹É @  ¹Ê|¥?d ëˆT)! @  ¹Ë}¥?d Hëˆaµ @  ¹Ì~¥?d ˆëˆAêK @  ¹Í¥?d Èëˆ ˜Dþ @  ¹Î€¥?d ìˆÖ·ñ @  ¹Ï¥?d H숀º, @  ¹Ð‚¥?d ˆìˆ O.ì @  ¹Ñƒ¥?d Èìˆf\—Í @  ¹Ò„¥?d 툶% @  ¹Ó…¥?d H툃"± @  ¹Ô†¥?d ˆíˆ£×O @  ¹Õ‡¥?d ÈíˆýÔBI @  ¹Öˆ¥?d îˆ`∠@  ¹×‰¥?d Hîˆ^]G‹ @  ¹ØŠ¥?d ˆîˆ~¨Eu @  ¹Ù‹¥?d È»üT @  ¹ÚŒ¥?d ïˆhóp¼ @  ¹Û¥?d Hïˆ]Åq( @  ¹ÜŽ¥?d ˆïˆ}0sÖ @  ¹Ý¥?d ÈïˆFcK< @  ¹Þ¥?d ðˆø½÷Ž @  ¹ß‘¥?d Hðˆz×KÝ @  ¹à’¥?d ˆðˆZ"I# @  ¹á“¥?d Èðˆœ1ð @  ¹â”¥?d€ ñˆ>‹ê @  º•¥?d HñˆYIÂW @  º–¥?d ˆñˆy¼À© @  º—¥?d ÈñˆâöaB @  º˜¥?d òˆ²Áƒ @  º™¥?d HòˆÍ;ú @  ºš¥?d ˆòˆ¯89 @  º›¥?d Èòˆ§™ß_ @  ºœ¥?d óˆwÑS· @  º ¥?d H󈇮©Î @  º ž¥?d ˆóˆ§[«0 @  º Ÿ¥?d ÈóˆÄöQë @  º  ¥?d ôˆݸ¢ä @  º ¡¥?d Hôˆ-ÇX @  º¢¥?d ˆôˆ 2Zc @  º£¥?d Èôˆ¨2‚Ø @  º¤¥?d õˆxz0 @  º¥¥?d HõˆˆôI @  º¦¥?d ˆõˆ¨ðö· @  º§¥?d Èõˆ3ºW\ @  º¨¥?d öˆ®þ÷ @  º©¥?d Höˆ^ ä @  ºª¥?d ˆöˆ~t @  º«¥?d ÈöˆvÕéA @  º¬¥?d ÷ˆ¦e© @  º­¥?d H÷ˆVâŸÐ @  º®¥?d ˆ÷ˆv. @  º¯¥?d È÷ˆˆ ^) @  º°¥?d øˆ¼òÒ4 @  º±¥?d HøˆL(M @  º²¥?d ˆøˆlx*³ @  º³¥?d ÈøˆØ~Õ¸ @  º ´¥?d ùˆ6YP @  º!µ¥?d HùˆøI£) @  º"¶¥?d ˆùˆؼ¡× @  º#·¥?d ÈùˆCö< @  º$¸¥?d úˆÞ² ý @  º%¹¥?d Húˆ.ÍZ„ @  º&º¥?d ˆúˆ8Xz @  º'»¥?d Èúˆ™¾! @  º(¼¥?d ûˆÖÑ2É @  º)½¥?d Hûˆ&®È° @  º*¾¥?d ˆûˆ[ÊN @  º+¿¥?d Èûˆ•¦%„ @  º,À¥?d üˆŒèÖ‹ @  º-Á¥?d Hüˆ|—,ò @  º.Â¥?d ˆüˆ\b.  @  º/Ã¥?d Èüˆùbö· @  º0Ä¥?d ýˆ)*z_ @  º1Å¥?d HýˆÙU€& @  º2Æ¥?d ˆýˆù ‚Ø @  º3Ç¥?d Èýˆbê#3 @  º4È¥?d þˆÿ®ƒò @  º5É¥?d HþˆÑy‹ @  º6Ê¥?d ˆþˆ/${u @  º7Ë¥?d Èþˆ'…. @  º8Ì¥?d ÿˆ÷ÍÆ @  º9Í¥?d Hÿˆ²ë¿ @  º:Î¥?d ˆÿˆ'GéA @  º;uЉϥ?d Èÿˆ¤ÝY: @  º<€Ð¥?d ‰ëiqË @  º=€Ñ¥?d `‰‹² @  º>€Ò¥?d  ‰;ã‰L @  º?€Ó¥?d à‰!âpÕ @  º@€Ô¥?d ‰ñªü= @  ºA€Õ¥?d `‰ÕD @  ºB€Ö¥?d  ‰! º @  ºC€×¥?d à‰ºj¥Q @  ºD€Ø¥?d ‰'. @  ºE€Ù¥?d `‰×Qÿé @  ºF€Ú¥?d  ‰÷¤ý @  ºG€Û¥?d à‰ÿL @  ºH€Ü¥?d ‰/M—¤ @  ºI€Ý¥?d `‰ß2mÝ @  ºJ€Þ¥?d  ‰ÿÇo# @  ºK€ߥ?d à‰œj•ø @  ºL€à¥?d ‰…$f÷ @  ºM€á¥?d `‰u[œŽ @  ºN€â¥?d  ‰U®žp @  ºO€ã¥?d à‰ð®FË @  ºP€ä¥?d ‰ æÊ# @  ºQ€å¥?d `‰Й0Z @  ºR€æ¥?d  ‰ðl2¤ @  ºS€ç¥?d à‰k&“O @  ºT€è¥?d ‰öb3Ž @  ºU€é¥?d `‰É÷ @  ºV€ê¥?d  ‰&èË  @  ºW€ë¥?d à‰.I-R @  ºX€ì¥?d ‰þ¡º @  ºY€í¥?d `‰~[à @  ºZ€î¥?d  ‰.‹Y= @  º[€ï¥?d à‰Бš: @  º\€ð¥?d ‰än' @  º]€ñ¥?d `‰ì^ @  º^€ò¥?d  ‰4äî  @  º_€ó¥?d à‰€â« @  º`€ô¥?d ‰PªC @  ºa€õ¥?d ` ‰ Õg: @  ºb€ö¥?d   ‰€ eÄ @  ºc€÷¥?d à ‰jÄ/ @  ºd€ø¥?d ‰†.dî @  ºe€ù¥?d ` ‰vQž— @  ºf€ú¥?d   ‰V¤œi @  ºg€û¥?d à ‰^z2 @  ºh€ü¥?d ‰ŽMöÚ @  ºi€ý¥?d ` ‰~2 £ @  ºj€þ¥?d   ‰^Ç] @  ºk€ÿ¥?d à ‰¹Õ, @  ºl€¦?d ‰÷&# @  ºm€¦?d ` ‰ôˆÜZ @  ºn€¦?d   ‰Ô}Þ¤ @  ºo€¦?d à ‰q} @  ºp€¦?d ‰¡5Š÷ @  ºq€¦?d ` ‰QJpŽ @  ºr€¦?d   ‰q¿rp @  ºs€¦?d à ‰êõÓ› @  ºt€¦?d ‰w±sZ @  ºu€ ¦?d `‰‡Î‰# @  ºv€ ¦?d  ‰§;‹Ý @  ºw€ ¦?d à‰¯šm† @  ºx€ ¦?d ‰Òán @  ºy€ ¦?d `‰­ @  ºz€¦?d  ‰¯Xé @  º{€¦?d à‰QBÚî @  º|€¦?d ‰ïœf\ @  º}€¦?d `‰ãœ% @  º~€¦?d  ‰?žÛ @  º€¦?d à‰ÆAWs @  º€€¦?d ‰ Û› @  º€¦?d `‰Y_µK @  º‚¦?d  ‰yª·µ @  ºƒ¦?d à‰âà^ @  º„¦?d ‰¤¶Ÿ @  º…¦?d `‰ÛLæ @  º†¦?d  ‰¯.N @  º‡¦?d à‰§¨C @  ºˆ¦?d ‰wÇ$« @  º‰¦?d `‰‡¸ÞÒ @  ºŠ¦?d  ‰§MÜ, @  º‹¦?d à‰Äà&÷ @  ºŒ ¦?d ‰Ý®Õø @  º!¦?d `‰-Ñ/ @  ºŽ"¦?d  ‰ $- @  º#¦?d à‰¨$õÄ @  º$¦?d ‰xly, @  º‘%¦?d `‰ˆƒU @  º’&¦?d  ‰¨æ« @  º“'¦?d à‰3¬ @ @  º”(¦?d ‰®è€ @  º•)¦?d `‰^—zø @  º–*¦?d  ‰~bx @  º—+¦?d à‰vÞ] @  º˜,¦?d ‰¦‹µ @  º™-¦?d `‰VôèÌ @  ºš.¦?d  ‰vê2 @  º›/¦?d à‰ˆ)5 @  ºœ0¦?d ‰¼ä¥( @  º1¦?d `‰L›_Q @  ºž2¦?d  ‰ln]¯ @  ºŸ3¦?d à‰Øh¢¤ @  º 4¦?d ‰ .L @  º¡5¦?d `‰ø_Ô5 @  º¢6¦?d  ‰تÖË @  º£7¦?d à‰Càw  @  º¤8¦?d ‰Þ¤×á @  º¥9¦?d `‰.Û-˜ @  º¦:¦?d  ‰./f @  º§;¦?d à‰É= @  º¨<¦?d ‰ÖÇEÕ @  º©=¦?d `‰&¸¿¬ @  ºª>¦?d  ‰M½R @  º«?¦?d à‰•°R˜ @  º¬@¦?d ‰Œþ¡— @  º­A¦?d `‰|[î @  º®B¦?d  ‰\tY @  º¯C¦?d à‰ùt« @  º°D¦?d ‰)< C @  º±E¦?d `‰ÙC÷: @  º²F¦?d  ‰ù¶õÄ @  º³G¦?d à‰büT/ @  º´H¦?d ‰ÿ¸ôî @  ºµI¦?d `‰Ç— @  º¶J¦?d  ‰/2 i @  º·K¦?d à‰'“ê2 @  º¸L¦?d ‰÷ÛfÚ @  º¹M¦?d `‰¤œ£ @  ººN¦?d  ‰'Qž]uÐ ‰ @  º»O¦?d à‰âº @  º¼P¦?d 8 ‰jédé @  º½Q¦?d x ‰š–ž @  º¾R¦?d ¸ ‰ºcœn @  º¿S¦?d ø ‰ be÷ @  ºÀT¦?d 8!‰p*é @  ºÁU¦?d x!‰€Uf @  ºÂV¦?d ¸!‰  ˜ @  ºÃW¦?d ø!‰;ê°s @  ºÄX¦?d 8"‰¦®² @  ºÅY¦?d x"‰VÑêË @  ºÆZ¦?d ¸"‰v$è5 @  ºÇ[¦?d ø"‰~…n @  ºÈ\¦?d 8#‰®Í‚† @  ºÉ]¦?d x#‰^²xÿ @  ºÊ^¦?d ¸#‰~Gz @  ºË_¦?d ø#‰ê€Ú @  ºÌ`¦?d 8$‰¤sÕ @  ºÍa¦?d x$‰ôÛ‰¬ @  ºÎb¦?d ¸$‰Ô.‹R @  ºÏc¦?d ø$‰q.Sé @  ºÐd¦?d 8%‰¡fß @  ºÑe¦?d x%‰Q%x @  ºÒf¦?d ¸%‰qì'† @  ºÓg¦?d ø%‰ꦆm @  ºÔh¦?d 8&‰wâ&¬ @  ºÕi¦?d x&‰‡ÜÕ @  ºÖj¦?d ¸&‰§hÞ+ @  º×k¦?d ø&‰¯É8p @  ºØl¦?d 8'‰´˜ @  ºÙm¦?d x'‰þNá @  ºÚn¦?d ¸'‰¯ L @  ºÛo¦?d ø'‰Q @  ºÜp¦?d 8(‰eî @  ºÝq¦?d x(‰•‘ù| @  ºÞr¦?d ¸(‰µdû‚ @  ºßs¦?d ø(‰b‰ @  ºàt¦?d 8)‰Ñ*ˆa @  ºáu¦?d x)‰!Ur @  ºâv¦?d€ ¸)‰ucl@ @  »w¦?d ø)‰h…‚ @  »x¦?d 8*‰’,%C @  »y¦?d x*‰§$× @  »z¦?d ¸*‰‡ï&) @  »{¦?d ø*‰AüŸ @  »|¦?d 8+‰‘´à @  »}¦?d x+‰¯y¶ã @  »~¦?d ¸+‰Œ´ @  » ¦?d ø+‰Äþô¨ @  » €¦?d 8,‰ݰ§ @  » ¦?d x,‰è†3 @  » ‚¦?d ¸,‰ÈsÍ @  » ƒ¦?d ø,‰`½ì @  »„¦?d 8-‰Þ(1 @  »…¦?d x-‰MDªç @  »†¦?d ¸-‰m±¨ @  »‡¦?d ø-‰3²ò @  »ˆ¦?d 8.‰®öRÞ @  »‰¦?d x.‰›ÀSJ @  »Ц?d ¸.‰»5Q´ @  »‹¦?d ø.‰}&è• @  »Œ¦?d 8/‰­nd} @  »¦?d x/‰“£Á~ @  »ަ?d ¸/‰³VÀ @  »¦?d ø/‰ˆûj @  »¦?d 80‰6ÛGØ @  »‘¦?d x0‰íFL @  »’¦?d ¸0‰á±£g @  »“¦?d ø0‰'¢F @  »”¦?d 81‰÷ê–® @  »•¦?d x1‰u€*ý @  » –¦?d ¸1‰Uu( @  »!—¦?d ø1‰ vr @  »"˜¦?d 82‰–2ÒÄ @  »#™¦?d x2‰£ÓP @  »$š¦?d ¸2‰ƒñÑ® @  »%›¦?d ø2‰Eâh @  »&œ¦?d 83‰•ªäg @  »'¦?d x3‰«gAd @  »(ž¦?d ¸3‰‹’Cš @  »)Ÿ¦?d ø3‰-vB¬ @  »* ¦?d 84‰48±£ @  »+¡¦?d x4‰°7 @  »,¢¦?d ¸4‰!û²É @  »-£¦?d ø4‰çè è @  ».¤¦?d 85‰7 ‡ @  »/¥¦?d x5‰¤Ìã @  »0¦¦?d ¸5‰„9 @  »1§¦?d ø5‰Ú:D @  »2¨¦?d 86‰G~äÚ @  »3©¦?d x6‰rHåN @  »4ª¦?d ¸6‰R½ç° @  »5«¦?d ø6‰”®^‘ @  »6¬¦?d 87‰DæÒy @  »7­¦?d x7‰z+wz @  »8®¦?d ¸7‰ZÞu„ @  »9¯¦?d ø7‰aMn @  »:°¦?d 88‰UrÁs @  »;±¦?d x8‰`DÀç @  »<²¦?d ¸8‰@±Â @  »=³¦?d ø8‰†¢{8 @  »>´¦?d 89‰Vê÷Ð @  »?µ¦?d x9‰z‡M @  »@¶¦?d ¸9‰ZrOï @  »A·¦?d ø9‰qé @  »B¸¦?d 8:‰™5µ( @  »C¹¦?d x:‰¬´¼ @  »Dº¦?d ¸:‰Œö¶B @  »E»¦?d ø:‰Jåc @  »F¼¦?d 8;‰š­ƒ‹ @  »G½¦?d x;‰¤`&ˆ @  »H¾¦?d ¸;‰„•$v @  »I¿¦?d ø;‰Ò!0Q @  »JÀ¦?d 8<‰ËoÃ^ @  »KÁ¦?d x<‰þYÂÊ @  »L¦?d ¸<‰Þ¬À4 @  »Mæ?d ø<‰¿y @  »NĦ?d 8=‰È÷õý @  »OŦ?d x=‰[›n @  »PƦ?d ¸=‰{nlà @  »QǦ?d ø=‰%m6æ @  »RȦ?d 8>‰¸)–' @  »Sɦ?d x>‰—³ @  »Tʦ?d ¸>‰­ê•M @  »U˦?d ø>‰kù,l @  »V̦?d 8?‰»± „ @  »Wͦ?d x?‰…|‡ @  »XΦ?duÐ@‰7 ¸?‰¥‰y @  »YϦ?d ø?‰žÚ?“ @  »ZЦ?d P@‰]v…¯ @  »[Ѧ?d @‰Ê$‘ @  »\Ò¦?d Ð@‰Hµ†Å @  »]Ó¦?d A‰Ü¤Ò @  »^Ô¦?d PA‰^î³  @  »_Õ¦?d A‰~à @  »`Ö¦?d ÐA‰üq ¡ @  »aצ?d B‰½§à¸ @  »bئ?d PB‰?6÷f @  »cÙ¦?d B‰¨dãÒ @  »dÚ¦?d ÐB‰*õô  @  »eÛ¦?d C‰¾?Ö @  »fܦ?d PC‰<®ÁÅ @  »gݦ?d C‰ qæ @  »hÞ¦?d ÐC‰"–f8 @  »iߦ?d D‰­ƒß @  »jà¦?d PD‰<” @  »ká¦?d D‰ n€µ @  »lâ¦?d ÐD‰ˆÿ—k @  »mã¦?d E‰5µ| @  »nä¦?d PE‰ž¤¢¢ @  »oå¦?d E‰¯¬,a @  »pæ¦?d ÐE‰-=;¿ @  »qç¦?d F‰lëÖ¦ @  »rè¦?d PF‰îzÁx @  »sé¦?d F‰y(ÕÌ @  »tê¦?d ÐF‰û¹Â @  »uë¦?d G‰osà @  »vì¦?d PG‰íâ÷Û @  »wí¦?d G‰qKGø @  »xî¦?d ÐG‰óÚP& @  »yï¦?d H‰~çó @  »zð¦?d PH‰üväÑ @  »{ñ¦?d H‰k$ðe @  »|ò¦?d ÐH‰éµç» @  »}ó¦?d I‰}Ŭ @  »~ô¦?d PI‰ÿîÒr @  »õ¦?d I‰’±M¢ @  »€ö¦?d ÐI‰ Z| @  »÷¦?d J‰Qö·e @  »‚ø¦?d PJ‰Óg » @  »ƒù¦?d J‰D5´ @  »„ú¦?d ÐJ‰Ƥ£Ñ @  »…û¦?d K‰RnÆ @  »†ü¦?d PK‰Ðÿ– @  »‡ý¦?d K‰LV&; @  »ˆþ¦?d ÐK‰ÎÇ1å @  »‰ÿ¦?d L‰a À @  »Š§?d PL‰ãœ×S @  »‹§?d L‰tÎÃç @  »Œ§?d ÐL‰ö_Ô9 @  »§?d M‰b•ö. @  »Ž§?d PM‰àáð @  »§?d M‰Ñ o3 @  »§?d ÐM‰Sxí @  »‘§?d N‰K•ô @  »’§?d PN‰Ú‚* @  »“ §?d N‰ˆ–ž @  »” §?d ÐN‰…@ @  »• §?d O‰Ó£W @  »– §?d PO‰“B´‰ @  »— §?d O‰ëª @  »˜§?d ÐO‰zt @  »™§?d P‰Šf€ò @  »š§?d PP‰÷—, @  »›§?d P‰Ÿ¥ƒ˜ @  »œ§?d ÐP‰4”F @  »§?d Q‰‰þ¶Q @  »ž§?d PQ‰ o¡ @  »Ÿ§?d Q‰+aü @  » §?d ÐQ‰©ð" @  »¡§?d R‰è&ò; @  »¢§?d PR‰j·åå @  »£§?d R‰ýåñQ @  »¤§?d ÐR‰tæ @  »¥§?d S‰ë¾Ä˜ @  »¦§?d PS‰i/ÓF @  »§§?d S‰õ†ce @  »¨§?d ÐS‰wt» @  »©§?d T‰J,‘\ @  »ª §?d PT‰Ƚ†‚ @  »«!§?d T‰_ï’6 @  »¬"§?d ÐT‰Ý~…è @  »­#§?d U‰I´§ÿ @  »®$§?d PU‰Ë%°! @  »¯%§?d U‰ú->â @  »°&§?d ÐU‰x¼)< @  »±'§?d V‰9jÄ% @  »²(§?d PV‰»ûÓû @  »³)§?d V‰,©ÇO @  »´*§?d ÐV‰®8Б @  »µ+§?d W‰:òò† @  »¶,§?d PW‰¸cåX @  »·-§?d W‰$ÊU{ @  »¸.§?d ÐW‰¦[B¥ @  »¹/§?d X‰+fጠ@  »º0§?d PX‰©÷öR @  »»1§?d X‰>¥âæ @  »¼2§?d ÐX‰¼4õ8 @  »½3§?d Y‰(þ×/ @  »¾4§?d PY‰ªoÀñ @  »¿5§?d Y‰$fo @  »À6§?d ÐY‰¦÷xÎ @  »Á7§?d Z‰ç!•× @  »Â8§?d PZ‰e°‚  @  »Ã9§?d Z‰òâ–½ @  »Ä:§?d ÐZ‰psc @  »Å;§?d [‰ä¹£t @  »Æ<§?d P[‰f(´ª @  »Ç=§?d [‰ú‰ @  »È>§?d Ð[‰xW @  »É?§?d \‰µ{ã¡ @  »Ê@§?d P\‰7êô @  »ËA§?d \‰ ¸àË @  »ÌB§?d Ð\‰")÷ @  »ÍC§?d ]‰¶ãÕ @  »ÎD§?d P]‰4rÂÜ @  »ÏE§?d ]‰zL @  »ÐF§?d Ð]‰‡ë[Á @  »ÑG§?d ^‰Æ=¶Ø @  »ÒH§?d P^‰D¬¡ @  »ÓI§?d ^‰Óþµ² @  »ÔJ§?d Ð^‰Qo¢l @  »ÕK§?d _‰Å¥€{ @  »ÖL§?d P_‰G4—¥ @  »×M§?d _‰Û'† @  »uÐ`‰ØN§?d Ð_‰›¥× @  »ÙO§?d (`‰œŸM! @  »ÚP§?d h`‰Zÿ @  »ÛQ§?d ¨`‰‰\NK @  »ÜR§?d è`‰ ÍY• @  »ÝS§?d (a‰Ÿ{‚ @  »ÞT§?d ha‰–l\ @  »ßU§?d ¨a‰=˜Å/ @  »àV§?d èa‰¿ Òñ @  »áW§?d (b‰þß?è @  »âX§?d€ hb‰ú€ @  ¼Y§?d ¨b‰Œ Ü @  ¼Z§?d èb‰šËÌ @  ¼[§?d (c‰_6 @  ¼\§?d hc‰݈è @  ¼]§?d ¨c‰“ê± @  ¼^§?d èc‰ ýo @  ¼_§?d (d‰þ‹Gò @  ¼`§?d hd‰|P, @  ¼ a§?d ¨d‰.¿u @  ¼ b§?d èd‰¬¨« @  ¼ c§?d (e‰ýqQ @  ¼ d§?d he‰‚f @  ¼ e§?d ¨e‰-™‰Ö @  ¼f§?d èe‰¯ž @  ¼g§?d (f‰Í‹ @  ¼h§?d hf‰\U @  ¼i§?d ¨f‰]Gê  @  ¼j§?d èf‰ßÖýÒ @  ¼k§?d (g‰ŽU$( @  ¼l§?d hg‰ Ä3ö @  ¼m§?d ¨g‰^ßܯ @  ¼n§?d èg‰ÜNËq @  ¼o§?d (h‰ŸÁ7" @  ¼p§?d hh‰P ü @  ¼q§?d ¨h‰OKÏ¥ @  ¼r§?d èh‰ÍÚØ{ @  ¼s§?d (i‰œY @  ¼t§?d hi‰È_ @  ¼u§?d ¨i‰LÓù @  ¼v§?d èi‰ÎBîØ @  ¼w§?d (j‰ýEë @  ¼ x§?d hj‰R5 @  ¼!y§?d ¨j‰- ½l @  ¼"z§?d èj‰¯šª² @  ¼#{§?d (k‰þsH @  ¼$|§?d hk‰|ˆd– @  ¼%}§?d ¨k‰.“‹Ï @  ¼&~§?d èk‰¬œ @  ¼'§?d (l‰²g @  ¼(€§?d hl‰0ŒpÑ @  ¼)§?d ¨l‰b—Ÿˆ @  ¼*‚§?d èl‰àˆV @  ¼+ƒ§?d (m‰±…Q¬ @  ¼,„§?d hm‰3Fr @  ¼-…§?d ¨m‰a©+ @  ¼.†§?d èm‰ãž¾õ @  ¼/‡§?d (n‰Á[2v @  ¼0ˆ§?d hn‰CÊ%¨ @  ¼1‰§?d ¨n‰ÑÊñ @  ¼2Ч?d èn‰“@Ý/ @  ¼3‹§?d (o‰ÂÃÕ @  ¼4Œ§?d ho‰@R  @  ¼5§?d ¨o‰IüR @  ¼6ާ?d èo‰ØëŒ @  ¼7§?d (p‰Yv'p @  ¼8§?d hp‰Ûç0® @  ¼9‘§?d ¨p‰‰üß÷ @  ¼:’§?d èp‰ mÈ) @  ¼;“§?d (q‰ZîÓ @  ¼<”§?d hq‰Ø  @  ¼=•§?d ¨q‰ŠdéT @  ¼>–§?d èq‰õþŠ @  ¼?—§?d (r‰•1S+ @  ¼@˜§?d hr‰ Dõ @  ¼A™§?d ¨r‰E»«¬ @  ¼Bš§?d èr‰Ç*¼r @  ¼C›§?d (s‰–©eˆ @  ¼Dœ§?d hs‰8rV @  ¼E§?d ¨s‰F# @  ¼Fž§?d ès‰IJŠÑ @  ¼GŸ§?d (t‰7;0L @  ¼H §?d ht‰µª'’ @  ¼I¡§?d ¨t‰ç±ÈË @  ¼J¢§?d èt‰e ß @  ¼K£§?d (u‰4£ï @  ¼L¤§?d hu‰¶21 @  ¼M¥§?d ¨u‰ä)þh @  ¼N¦§?d èu‰f¸é¶ @  ¼O§§?d (v‰D}e5 @  ¼P¨§?d hv‰Æìrë @  ¼Q©§?d ¨v‰”÷² @  ¼Rª§?d èv‰fŠl @  ¼S«§?d (w‰GåS– @  ¼T¬§?d hw‰ÅtDH @  ¼U­§?d ¨w‰—o« @  ¼V®§?d èw‰þ¼Ï @  ¼W¯§?d (x‰Vq@œ @  ¼X°§?d hx‰ÔàWB @  ¼Y±§?d ¨x‰†û¸ @  ¼Z²§?d èx‰j¯Å @  ¼[³§?d (y‰Uév? @  ¼\´§?d hy‰×xaá @  ¼]µ§?d ¨y‰…cޏ @  ¼^¶§?d èy‰ò™f @  ¼_·§?d (z‰412U @  ¼`¸§?d hz‰¶ %‹ @  ¼a¹§?d ¨z‰ä»ÊÒ @  ¼bº§?d èz‰f*Ý  @  ¼c»§?d ({‰7©ö @  ¼d¼§?d h{‰µ8( @  ¼e½§?d ¨{‰ç#üq @  ¼f¾§?d è{‰e²ë¯ @  ¼g¿§?d (|‰fkD# @  ¼hÀ§?d h|‰äúSý @  ¼iÁ§?d ¨|‰¶á¼¤ @  ¼j§?d è|‰4p«z @  ¼kç?d (}‰eór€ @  ¼lħ?d h}‰çbe^ @  ¼mŧ?d ¨}‰µyŠ @  ¼nƧ?d è}‰7èÙ @  ¼oǧ?d (~‰-Z @  ¼pȧ?d h~‰—¼„ @  ¼qɧ?d ¨~‰ŧéÝ @  ¼rʧ?d è~‰G6þ @  ¼s˧?d (‰µ'ù @  ¼ţ?d h‰”$0' @  ¼uͧ?d ¨‰uЀ‰'Æ?ß~ @  ¼vΧ?d è‰D®È  @  ¼wϧ?d @€‰]`Zš @  ¼xЧ?d €€‰}•Xd @  ¼yѧ?d À€‰ê¢ @  ¼zÒ§?d ‰]¢.õ @  ¼{Ó§?d @‰^øl9 @  ¼|Ô§?d €‰~ nÇ @  ¼}Õ§?d À‰Žr”¾ @  ¼~Ö§?d ‚‰64 @  ¼×§?d @‚‰rqð @  ¼€ا?d €‚‰R„ @  ¼Ù§?d À‚‰¢ûæw @  ¼‚Ú§?d ƒ‰r³jŸ @  ¼ƒÛ§?d @ƒ‰qé(S @  ¼„ܧ?d €ƒ‰Q*­ @  ¼…ݧ?d Àƒ‰¡cÐÔ @  ¼†Þ§?d „‰¸-#Û @  ¼‡ß§?d @„‰Ð{}— @  ¼ˆà§?d €„‰ðŽi @  ¼‰á§?d À„‰ñ… @  ¼Šâ§?d …‰й ø @  ¼‹ã§?d @…‰ÓãK4 @  ¼Œä§?d €…‰óIÊ @  ¼å§?d À…‰i³³ @  ¼Žæ§?d †‰ž-r @  ¼ç§?d @†‰£=(î @  ¼è§?d €†‰ƒÈ* @  ¼‘é§?d À†‰s·Ði @  ¼’ê§?d ‡‰£ÿ\ @  ¼“ë§?d @‡‰ ¥M @  ¼”ì§?d €‡‰€P³ @  ¼•í§?d À‡‰p/æÊ @  ¼–î§?d ˆ‰DÐj× @  ¼—ï§?d @ˆ‰±1 G @  ¼˜ð§?d €ˆ‰‘Ĺ @  ¼™ñ§?d Àˆ‰a»õÀ @  ¼šò§?d ‰‰±óy( @  ¼›ó§?d @‰‰²©;ä @  ¼œô§?d €‰‰’\9 @  ¼õ§?d À‰‰b#Ãc @  ¼žö§?d Љÿgc¢ @  ¼Ÿ÷§?d @ЉÓqŽ @  ¼ ø§?d €Š‰ó„}p @  ¼¡ù§?d ÀЉû‡  @  ¼¢ú§?d ‹‰Ó³ á @  ¼£û§?d @‹‰ÐéI- @  ¼¤ü§?d €‹‰ðKÓ @  ¼¥ý§?d À‹‰c±ª @  ¼¦þ§?d Œ‰-B¥ @  ¼§ÿ§?d @Œ‰¹9‰ @  ¼¨¨?d €Œ‰&L;w @  ¼©¨?d ÀŒ‰Ö3Á @  ¼ª¨?d ‰{Mæ @  ¼«¨?d @‰!* @  ¼¬¨?d €‰%Ô Ô @  ¼­¨?d À‰Õ«÷­ @  ¼®¨?d މHïWl @  ¼¯¨?d @މuÿlð @  ¼°¨?d €Ž‰U n @  ¼± ¨?d Àމ¥u”w @  ¼² ¨?d ‰u=Ÿ @  ¼³ ¨?d @‰vgZS @  ¼´ ¨?d €‰V’X­ @  ¼µ ¨?d À‰¦í¢Ô @  ¼¶¨?d ‰3f @  ¼·¨?d @‰íÒyö @  ¼¸¨?d €‰Í'{ @  ¼¹¨?d À‰=Xq @  ¼º¨?d ‘‰í ™ @  ¼»¨?d @‘‰îJOU @  ¼¼¨?d €‘‰οM« @  ¼½¨?d À‘‰>À·Ò @  ¼¾¨?d ’‰£„ @  ¼¿¨?d @’‰!• ­ @  ¼À¨?d €’‰`S @  ¼Á¨?d À’‰ñõ* @  ¼Â¨?d “‰!Wy @  ¼Ã¨?d @“‰" ; @  ¼Ä¨?d €“‰ø9ð @  ¼Å¨?d À“‰ò‡Ã‰ @  ¼Æ¨?d ”‰ëÉ0† @  ¼Ç¨?d @”‰ƒŸnÊ @  ¼È ¨?d €”‰£jl4 @  ¼É!¨?d À”‰S–M @  ¼Ê"¨?d •‰ƒ]¥ @  ¼Ë#¨?d @•‰€Xi @  ¼Ì$¨?d €•‰ òZ— @  ¼Í%¨?d À•‰P î @  ¼Î&¨?d –‰ÍÉ/ @  ¼Ï'¨?d @–‰ðÙ;³ @  ¼Ð(¨?d €–‰Ð,9M @  ¼Ñ)¨?d À–‰ SÃ4 @  ¼Ò*¨?d —‰ðOÜ @  ¼Ó+¨?d @—‰óA  @  ¼Ô,¨?d €—‰Ó´î @  ¼Õ-¨?d À—‰#Ëõ— @  ¼Ö.¨?d ˜‰4yŠ @  ¼×/¨?d @˜‰âÕ @  ¼Ø0¨?d €˜‰ ä @  ¼Ù1¨?d À˜‰2_æ @  ¼Ú2¨?d ™‰âju @  ¼Û3¨?d @™‰áM(¹ @  ¼Ü4¨?d €™‰Á¸*G @  ¼Ý5¨?d À™‰1ÇÐ> @  ¼Þ6¨?d š‰¬ƒpÿ @  ¼ß7¨?d @š‰€•lÓ @  ¼à8¨?d €š‰ `n- @  ¼á9¨?d Àš‰P”T @  ¼â:¨?d€ ›‰ô” @  ½;¨?d @›‰ÿ @  ½<¨?d €›‰6z  @  ½=¨?d À›‰L • @  ½>¨?d œ‰þš @  ½?¨?d @œ‰L¶ê½ @  ½@¨?d €œ‰lCèC @  ½A¨?d Àœ‰RŽM@ @  ½B¨?d ‰‚ÆÁ¨ @  ½ C¨?d @‰DÕx‰ @  ½ D¨?d €‰d zw @  ½ E¨?d À‰Q{ã @  ½ F¨?d ž‰ÌRÛ" @  ½ G¨?d @ž‰’Q$ @  ½H¨?d €ž‰²¤ƒÚ @  ½I¨?d Àž‰!È9 @  ½J¨?d Ÿ‰ñ€”Ñ @  ½K¨?d @Ÿ‰7“-ð @  ½L¨?d €Ÿ‰f/ @  ½M¨uР‰?d ÀŸ‰"P.š @  ½N¨?d  ‰S[ðü @  ½O¨?d X ‰hÈ @  ½P¨?d ˜ ‰HýÊè @  ½Q¨?d Ø ‰v0oë @  ½R¨?d ¡‰¦xã @  ½S¨?d X¡‰`kZ" @  ½T¨?d ˜¡‰@žXÜ @  ½U¨?d Ø¡‰u¨YH @  ½V¨?d ¢‰èìù‰ @  ½W¨?d X¢‰¶ï£ @  ½X¨?d ˜¢‰–¡q @  ½Y¨?d Ø¢‰p" @  ½ Z¨?d £‰Ä8‘Ê @  ½![¨?d X£‰+(ë @  ½"\¨?d ˜£‰"Þ* @  ½#]¨?d Ø£‰è+ @  ½$^¨?d ¤‰¦ØŽ @  ½%_¨?d X¤‰¨BÙ¸ @  ½&`¨?d ˜¤‰ˆ·ÛF @  ½'a¨?d ؤ‰¶z~E @  ½(b¨?d ¥‰f2ò­ @  ½)c¨?d X¥‰ !KŒ @  ½*d¨?d ˜¥‰€ÔIr @  ½+e¨?d Ø¥‰µâHæ @  ½,f¨?d ¦‰(¦è' @  ½-g¨?d X¦‰v¥²! @  ½.h¨?d ˜¦‰VP°ß @  ½/i¨?d ئ‰Å<+< @  ½0j¨?d §‰t§Ô @  ½1k¨?d X§‰Ógõ @  ½2l¨?d ˜§‰ó’  @  ½3m¨?d ا‰ƤŸ @  ½4n¨?d ¨‰ò[‘‚ @  ½5o¨?d X¨‰É©h @  ½6p¨?d ˜¨‰éý«– @  ½7q¨?d ب‰×0• @  ½8r¨?d ©‰x‚} @  ½9s¨?d X©‰Ák;\ @  ½:t¨?d ˜©‰áž9¢ @  ½;u¨?d Ø©‰Ô¨86 @  ½<v¨?d ª‰Iì˜÷ @  ½=w¨?d Xª‰ïÂñ @  ½>x¨?d ˜ª‰7À @  ½?y¨?d ت‰wzÎ @  ½@z¨?d «‰Ë?ö& @  ½A{¨?d X«‰ ,O @  ½B|¨?d ˜«‰-ÙMù @  ½C}¨?d Ø«‰ïLm @  ½D~¨?d ¬‰¡¿b @  ½E¨?d X¬‰JÓÿ× @  ½F€¨?d ˜¬‰j&ý) @  ½G¨?d ج‰TëX* @  ½H‚¨?d ­‰„£Ô @  ½Iƒ¨?d X­‰B°mã @  ½J„¨?d ˜­‰bEo @  ½K…¨?d Ø­‰Wsn‰ @  ½L†¨?d ®‰Ê7ÎH @  ½M‡¨?d X®‰”4”N @  ½Nˆ¨?d ˜®‰´Á–° @  ½O‰¨?d Ø®‰'­ S @  ½PЍ?d ¯‰÷å» @  ½Q‹¨?d X¯‰1ö8š @  ½RŒ¨?d ˜¯‰:d @  ½S¨?d د‰$5;ð @  ½Tލ?d °‰šë‡B @  ½U¨?d X°‰¡¸¿¨ @  ½V¨?d ˜°‰M½V @  ½W‘¨?d ذ‰¿€U @  ½X’¨?d ±‰oÈ”½ @  ½Y“¨?d X±‰©Û-œ @  ½Z”¨?d ˜±‰‰./b @  ½[•¨?d ر‰¼.ö @  ½\–¨?d ²‰!\Ž7 @  ½]—¨?d X²‰_Ô1 @  ½^˜¨?d ˜²‰_ªÖÏ @  ½_™¨?d ز‰ÝÀjœ @  ½`š¨?d ³‰ ˆæt @  ½a›¨?d X³‰Ë›_U @  ½bœ¨?d ˜³‰ën]« @  ½c¨?d س‰ÞX\? @  ½dž¨?d ´‰Ç¯0 @  ½eŸ¨?d X´‰aò® @  ½f ¨?d ˜´‰A¬ø @  ½g¡¨?d Ø´‰Ê û @  ½h¢¨?d µ‰¯‚… @  ½i£¨?d Xµ‰i‘<2 @  ½j¤¨?d ˜µ‰Id>Ì @  ½k¥¨?d ص‰|R?X @  ½l¦¨?d ¶‰áŸ™ @  ½m§¨?d X¶‰¿ÅŸ @  ½n¨¨?d ˜¶‰ŸàÇa @  ½o©¨?d ض‰ Œ\‚ @  ½pª¨?d ·‰ÜÄÐj @  ½q«¨?d X·‰×iK @  ½r¬¨?d ˜·‰:"kµ @  ½s­¨?d Ø·‰j! @  ½t®¨?d ¸‰;ëæ< @  ½u¯¨?d X¸‰¸ÞÖ @  ½v°¨?d ˜¸‰ MÜ( @  ½w±¨?d ظ‰€y+ @  ½x²¨?d ¹‰ÎÈõà @  ½y³¨?d X¹‰ÛLâ @  ½z´¨?d ˜¹‰(.N @  ½{µ¨?d ع‰Oˆ @  ½|¶¨?d º‰€\ïI @  ½}·¨?d Xº‰Þ_µO @  ½~¸¨?d ˜º‰þª·± @  ½¹¨?d غ‰1‘=A @  ½€º¨?d »‰áÙ±© @  ½»¨?d X»‰'ʈ @  ½‚¼¨?d ˜»‰? v @  ½ƒ½¨?d Ø»‰2 â @  ½„¾¨?d ¼‰+Gøí @  ½…¿¨?d X¼‰}óìÊ @  ½†À¨?d ˜¼‰]î4 @  ½‡Á¨?d ؼ‰cËK7 @  ½ˆ¨?d ½‰³ƒÇß @  ½‰è?d X½‰u~þ @  ½ŠĨ?d ˜½‰Ue| @  ½‹Ũ?d ؽ‰`S}” @  ½Œƨ?d ¾‰ýÝU @  ½Ǩ?d X¾‰£‡S @  ½ŽȨ?d ˜¾‰ƒá…­ @  ½ɨ?d ؾ‰N @  ½ʨ?d ¿‰ÀÅ’¦ @  ½‘˨?d X¿‰Ö+‡ @  ½’̨?d ˜¿‰&#)y @uÐÀ‰  ½“ͨ?d Ø¿‰(í @  ½”Ψ?d 0À‰wåy¿ @  ½•Ϩ?d pÀ‰L¶AU @  ½–Ш?d °À‰lCC« @  ½—Ѩ?d ðÀ‰RŽæ¨ @  ½˜Ò¨?d 0Á‰‚Æj@ @  ½™Ó¨?d pÁ‰DÕÓa @  ½šÔ¨?d °Á‰d ÑŸ @  ½›Õ¨?d ðÁ‰QÐ  @  ½œÖ¨?d 0‰ÌRpÊ @  ½ר?d p‰’Q*Ì @  ½žب?d °Â‰²¤(2 @  ½ŸÙ¨?d ð‰0Δa @  ½ Ú¨?d 0Éà†‰ @  ½¡Û¨?d pÉ&•¡¨ @  ½¢ܨ?d °Ã‰`£V @  ½£ݨ?d ðÉ3V¢Â @  ½¤Þ¨?d 0ĉ*QÍ @  ½¥ߨ?d pĉŒüPû @  ½¦à¨?d °Ä‰¬ R @  ½§á¨?d ðĉ’Ä÷ @  ½¨â¨?d 0ʼnBŒ{î @  ½©ã¨?d pʼn„ŸÂÏ @  ½ªä¨?d °Å‰¤jÀ1 @  ½«å¨?d ðʼn‘\Á¥ @  ½¬æ¨?d 0Ɖ ad @  ½­ç¨?d pƉR;b @  ½®è¨?d °Æ‰rî9œ @  ½¯é¨?d ðƉá‚¢ @  ½°ê¨?d 0lj1Ê.— @  ½±ë¨?d plj÷Ù—¶ @  ½²ì¨?d °Ç‰×,•H @  ½³í¨?d ðljâ”Ü @  ½´î¨?d 0ȉÖåÁ @  ½µï¨?d pȉí¶ + @  ½¶ð¨?d °È‰ÍC"Õ @  ½·ñ¨?d ðȉóއÖ @  ½¸ò¨?d 0ɉ#Æ > @  ½¹ó¨?d pɉåÕ² @  ½ºô¨?d °É‰Å °á @  ½»õ¨?d ðɉð±u @  ½¼ö¨?d 0ʉmR´ @  ½½÷¨?d pʉ3QK² @  ½¾ø¨?d °Ê‰¤IL @  ½¿ù¨?d ðʉ?Éó @  ½Àú¨?d 0ˉïe @  ½Áû¨?d pˉ)’ÆD @  ½Âü¨?d °Ë‰ gĺ @  ½Ãý¨?d ðˉ @  ¾ &©?d 0Ö‰šÉüÿ @  ¾ '©?d pÖ‰ƒ] @  ¾ (©?d °Ö‰!v_ê @  ¾ )©?d ðÖ‰Ñ ¥“ @  ¾*©?d 0׉A){ @  ¾+©?d p׉¤AñÀ @  ¾,©?d °×‰„´ó> @  ¾-©?d ð׉tË G @  ¾.©?d 0؉@4…Z @  ¾/©?d p؉¾.F] @  ¾0©?d °Ø‰žÛD£ @  ¾1©?d ð؉n¤¾Ú @  ¾2©?d 0Ù‰¾ì22 @  ¾3©?d pÙ‰¶MÔi @  ¾4©?d °Ù‰–¸Ö— @  ¾5©?d ðÙ‰fÇ,î @  ¾6©?d 0Ú‰ûƒŒ/ @  ¾7©?d pÚ‰`É-Ä @  ¾8©?d °Ú‰@©?d 0܉É­( @  ¾#?©?d p܉Ž4Bâ @  ¾$@©?d °Ü‰®Á@ @  ¾%A©?d ð܉^¾ºe @  ¾&B©?d 0݉Žö6 @  ¾'C©?d p݉†WÐÖ @  ¾(D©?d °Ý‰¦¢Ò( @  ¾)E©?d ð݉VÝ(Q @  ¾*F©?d 0މ˙ˆ @  ¾+G©?d pÞ‰PÓ){ @  ¾,H©?d °Þ‰p&+… @  ¾-I©?d ðÞ‰€YÑü @  ¾.J©?d 0߉P] @  ¾/K©?d p߉õ…¯ @  ¾0L©?d uÐà‰/°ß‰Õä‡Q @  ¾1M©?d ð߉XT @  ¾2€N©?d Hà‰A¿P¢ @  ¾3€O©?d ˆà‰Á†… @  ¾4€P©?d Èà‰ŸP‘[ @  ¾5€Q©?d á‰=öð @  ¾6€R©?d HቿgçÊ @  ¾7€S©?d ˆá‰¢± @  ¾8€T©?d È቗3o @  ¾9€U©?d â‰x™N  @  ¾:€V©?d Hâ‰úY× @  ¾;€W©?d ˆâ‰Ã&í @  ¾<€X©?d Èâ‰A·ú @  ¾=€Y©?d ã‰ã› @  ¾>€Z©?d Hã‰a€ŒS @  ¾?€[©?d ˆã‰Ùå`ê @  ¾@€\©?d Èã‰[tw4 @  ¾A€]©?d ä‰0Ôiœ @  ¾B€^©?d H䉲E~B @  ¾C€_©?d ˆä‰sŒ‘¹ @  ¾D€`©?d Èä‰ñ†g @  ¾E€a©?d å‰S»ç( @  ¾F€b©?d Hå‰Ñ*ðö @  ¾G€c©?d ˆå‰{ï @  ¾H€d©?d Èå‰ù~S @  ¾I€e©?d æ‰ÔY5 @  ¾J€f©?d H扔ENë @  ¾K€g©?d ˆæ‰­kú  @  ¾L€h©?d Èæ‰/úíþ @  ¾M€i©?d ç‰\Œ± @  ¾N€j©?d Hç‰Í›o @  ¾O€k©?d ˆç‰©Vô @  ¾P€l©?d È牊8A* @  ¾Q€m©?d è‰Ì)  @  ¾R€n©?d Hè‰N¸7N @  ¾S€o©?d ˆè‰Æái @  ¾T€p©?d Èè‰Wö· @  ¾U€q©?d é‰2ñ—ø @  ¾V€r©?d H鉰`€& @  ¾W€s©?d ˆé‰¥s] @  ¾X€t©?d È鉘4dƒ @  ¾Y€u©?d ê‰wž)å @  ¾Z€v©?d Hê‰õ>; @  ¾[€w©?d ˆê‰Ì!Šð @  ¾\€x©?d Èê‰N°. @  ¾]€y©?d ë‰ìüa @  ¾^€z©?d Hë‰n‡ë¿ @  ¾_€{©?d ˆë‰xå” @  ¾`€|©?d Èë‰útJ @  ¾a€}©?d 쉑Ôâ @  ¾b€~©?d Hì‰E< @  ¾c€©?d ˆì‰?±D @  ¾d€€©?d È쉽‹¦š @  ¾e€©?d í‰-ÇÕ @  ¾f€‚©?d H퉼Р @  ¾g€ƒ©?d ˆí‰7y#p @  ¾h€„©?d È퉵è4® @  ¾i€…©?d î‰ZByÈ @  ¾j€†©?d Hî‰ØÓn @  ¾k€‡©?d ˆî‰áýÚÝ @  ¾l€ˆ©?d Èî‰clÍ @  ¾m€‰©?d ï‰ÁʬL @  ¾n€Š©?d Hï‰C[»’ @  ¾o€‹©?d ˆï‰D?v  @  ¾p€Œ©?d Èï‰Æ®a× @  ¾q€©?d ð‰ ž0 @  ¾r€Ž©?d Hð‰ˆ' @  ¾s€©?d ˆð‰Ôqñ; @  ¾t€©?d Èð‰Vàæå @  ¾u€‘©?d ñ‰ôF‡ª @  ¾v€’©?d Hñ‰v×t @  ¾w€“©?d ˆñ‰Üc @  ¾x€”©?d Èñ‰^ƒtÑ @  ¾y€•©?d ò‰±)9· @  ¾z€–©?d Hò‰3¸.i @  ¾{€—©?d ˆò‰ –š¢ @  ¾|€˜©?d Èò‰ˆ| @  ¾}€™©?d ó‰*¡ì3 @  ¾~€š©?d Hó‰¨0ûí @  ¾€›©?d ˆó‰ó'e @  ¾€€œ©?d Èó‰q’0» @  ¾€©?d ô‰2. @  ¾‚€ž©?d Hô‰˜£9Í @  ¾ƒ€Ÿ©?d ˆô‰YjÖ6 @  ¾„€ ©?d Èô‰ÛûÁè @  ¾…€¡©?d õ‰y] § @  ¾†€¢©?d Hõ‰ûÌ·y @  ¾‡€£©?d ˆõ‰Q D @  ¾ˆ€¤©?d Èõ‰Ó˜SÜ @  ¾‰€¥©?d ö‰<2º @  ¾Š€¦©?d Hö‰¾£ d @  ¾‹€§©?d ˆö‰‡½¯ @  ¾Œ€¨©?d Èö‰ªq @  ¾€©©?d ÷‰§ºË> @  ¾Ž€ª©?d H÷‰%+Üà @  ¾€«©?d ˆ÷‰"O{ @  ¾€¬©?d È÷‰ Þ¥ @  ¾‘€­©?d ø‰æÏg @  ¾’€®©?d Hø‰d^pÁ @  ¾“€¯©?d ˆø‰8 ¦æ @  ¾”€°©?d Èø‰º±±8 @  ¾•€±©?d ù‰Ðw @  ¾–€²©?d Hù‰š†Ç© @  ¾—€³©?d ˆù‰0C4Ò @  ¾˜€´©?d Èù‰²Ò#  @  ¾™€µ©?d ú‰]xnj @  ¾š€¶©?d Hú‰ßéy´ @  ¾›€·©?d ˆú‰æÇÍ @  ¾œ€¸©?d Èú‰dVÚ¡ @  ¾€¹©?d û‰Æð»î @  ¾ž€º©?d Hû‰Da¬0 @  ¾Ÿ€»©?d ˆû‰RF @  ¾ €¼©?d Èû‰Ð’QÅ @  ¾¡€½©?d ü‰»2Om @  ¾¢€¾©?d Hü‰9£X³ @  ¾£€¿©?d ˆü‰:¢Y @  ¾¤€À©?d Èü‰Š«µ‡ @  ¾¥€Á©?d ý‰( ÔÈ @  ¾¦€©?d Hý‰ªœÃ @  ¾§€é?d ˆý‰Y0m @  ¾¨€Ä©?d Èý‰‚È'³ @  ¾©€Å©?d þ‰mbjÕ @  ¾ª€Æ©?d Hþ‰ïó}  @  ¾«€Ç©?d ˆþ‰ÖÝÉÀ @  ¾¬€È©?d Èþ‰TLÞ @  ¾­€É©?d ÿ‰öê¿Q @  ¾®€Ê©?d Hÿ‰t{¨ @  ¾¯€Ë©?d ˆÿ‰se @  ¾°€uЊ̩?d Èÿ‰Œ¶ @  ¾±Í©?d Šú¤ @  ¾²Ω?d `Šx€³Ø @  ¾³Ï©?d  Š$þeÿ @  ¾´Щ?d àŠ¦or! @  ¾µÑ©?d ŠÉn @  ¾¶Ò©?d `ІX° @  ¾·Ó©?d  Š,÷Ë @  ¾¸Ô©?d àŠ® à @  ¾¹Õ©?d ŠA¦­s @  ¾ºÖ©?d `ŠÃ7º­ @  ¾»ש?d  Šúf @  ¾¼Ø©?d àŠxˆ¸ @  ¾½Ù©?d ŠÚ.x÷ @  ¾¾Ú©?d `ŠX¿o) @  ¾¿Û©?d  ŠàÚƒ @  ¾ÀÜ©?d àŠbK”N @  ¾ÁÝ©?d Š ëŠæ @  ¾ÂÞ©?d `Š‹z8 @  ¾Ãß©?d  ŠJ³rà @  ¾Äà©?d àŠÈ"e @  ¾Åá©?d Šj„R @  ¾Æâ©?d `ŠèŒ @  ¾Çã©?d  ŠBÐà÷ @  ¾Èä©?d àŠÀA÷) @  ¾Éå©?d Š/ëºO @  ¾Êæ©?d `Š­z­‘ @  ¾Ëç©?d  Š”TZ @  ¾Ìè©?d àŠÅ„ @  ¾Íé©?d Š´coË @  ¾Îê©?d `Š6òx @  ¾Ïë©?d  Š1–µŽ @  ¾Ðì©?d àŠ³¢P @  ¾Ñí©?d ŠõÃê @  ¾Òî©?d `Šw‡Ô4 @  ¾Óï©?d  Š+ù @  ¾Ôð©?d àŠ©hÍ @  ¾Õñ©?d Š Ît‚ @  ¾Öò©?d ` Љ_c\ @  ¾×ó©?d   Š#š' @  ¾Øô©?d à Š¡ ‡ù @  ¾Ùõ©?d ŠN¡ÊŸ @  ¾Úö©?d ` ŠÌ0ÝA @  ¾Û÷©?d   ŠõiŠ @  ¾Üø©?d à Šw~T @  ¾Ýù©?d ŠÕ) @  ¾Þú©?d ` ŠW¸Å @  ¾ßû©?d   ŠAÚâî @  ¾àü©?d à ŠÃKõ0 @  ¾áý©?d Ѝëë˜ @  ¾âþ©?d€ ` Š^¹àà @  ¿ÿ©?d   Š^âf˜ @  ¿ª?d à ŠÜsqF @  ¿ª?d Š»œëä @  ¿ª?d ` Š9 ü: @  ¿ª?d   Š]zP; @  ¿ª?d à ŠßëGå @  ¿ª?d ŠþóUù @  ¿ª?d `Š|bB' @  ¿ ª?d  Š€  @  ¿ ª?d àŠ”ß @  ¿  ª?d Še{€} @  ¿  ª?d `Šçê—£ @  ¿  ª?d  Šƒ;¢ @  ¿ ª?d àŠ ,| @  ¿ ª?d Š®/ó @  ¿ª?d `Š,¾ - @  ¿ª?d  Šµ‰&ç @  ¿ª?d àŠ719 @  ¿ª?d ŠP÷«› @  ¿ª?d `ŠÒf¼E @  ¿ª?d  Š¶D @  ¿ª?d àŠ4€š @  ¿ª?d Š˜† @  ¿ª?d `Š— X @  ¿ª?d  ŠknM~ @  ¿ª?d àŠéÿZ  @  ¿ª?d ŠŽÀ @  ¿ª?d `Š ×Ü @  ¿ª?d  Šhö{Ý @  ¿ª?d àŠêgl @  ¿ª?d ŠóÒ4 @  ¿ ª?d `ŠqC#_ @  ¿!ª?d  ŠuÃ7I @  ¿" ª?d àŠ÷R — @  ¿#!ª?d нº5 @  ¿$"ª?d `Š,­ë @  ¿%#ª?d  Šv[ê @  ¿&$ª?d àŠôÊ4 @  ¿'%ª?d ŠÕÒ( @  ¿(&ª?d `ŠWCö @  ¿)'ª?d  Š«$\Ð @  ¿*(ª?d àŠ)µK @  ¿+)ª?d ŠNZѬ @  ¿,*ª?d `ŠÌËÆr @  ¿-+ª?d  Š¨¼js @  ¿.,ª?d àŠ*-}­ @  ¿/-ª?d Š/} @  ¿0.ª?d `оjS @  ¿1/ª?d  Š‰G™ @  ¿20ª?d àŠ–PG @  ¿31ª?d Šñ÷Êå @  ¿42ª?d `ŠsfÝ; @  ¿53ª?d  Šq: @  ¿64ª?d àŠ•€fä @  ¿75ª?d Š´˜tø @  ¿86ª?d `Š6 c& @  ¿97ª?d  ŠÊn, @  ¿:8ª?d àŠHÿ;Þ @  ¿;9ª?d Š/¡| @  ¿<:ª?d `Š­¶¢ @  ¿=;ª?d  ŠÉö£ @  ¿><ª?d àŠKg } @  ¿?=ª?d ŠüÕSm @  ¿@>ª?d `Š~DD³ @  ¿A?ª?d  ŠŠ”E´ @  ¿B@ª?d àŠRj @  ¿CAª?d ŠoêÈÈ @  ¿DBª?d `Ší{ß @  ¿ECª?d  Š‰ s @  ¿FDª?d àŠ dÉ @  ¿GEª?d Š*…vÕ @  ¿HFª?d `Ѝa  @  ¿IGª?d  ŠTs.- @  ¿JHª?d àŠÖâ9ó @  ¿KIª?d б £Q @  ¿LJª?d `Š3œ´ @  ¿MKª?d  ŠWëŽuÐ Š @  ¿NLª?d àŠÕzP @  ¿OMª?d 8 еŒ]  @  ¿PNª?d x Š7JÕ @  ¿QOª?d ¸ Š®*g @  ¿RPª?d ø Š,»pÁ @  ¿SQª?d 8!ŠKTêc @  ¿TRª?d x!ŠÉÅý½ @  ¿USª?d ¸!Š­²Q¼ @  ¿VTª?d ø!Š/#Fb @  ¿WUª?d 8"Š;T~ @  ¿XVª?d x"ŠŒªC  @  ¿YWª?d ¸"ŠpÍ † @  ¿ZXª?d ø"Šò\X @  ¿[Yª?d 8#Š•³ú @  ¿\Zª?d x#Š"–$ @  ¿][ª?d ¸#ŠsU:% @  ¿^\ª?d ø#ŠñÄ-û @  ¿_]ª?d 8$Šèquy @  ¿`^ª?d x$Šjàb§ @  ¿a_ª?d ¸$Šn`v± @  ¿b`ª?d ø$Šìñao @  ¿caª?d 8%Š‹ûÍ @  ¿dbª?d x%Š ì @  ¿ecª?d ¸%Šmø@ @  ¿fdª?d ø%ŠïiWÌ @  ¿geª?d 8&ŠÎqEÐ @  ¿hfª?d x&ŠLàR @  ¿igª?d ¸&а‡( @  ¿jhª?d ø&Š2 ö @  ¿kiª?d 8'ŠUùT @  ¿ljª?d x'Š×h‡Š @  ¿mkª?d ¸'г+‹ @  ¿nlª?d ø'Š1ކ  @  ¿ŒŠª?d x/ŠÖ¯‘Ô @  ¿‹ª?d ¸/вØ=Õ @  ¿ŽŒª?d ø/Š0I*  @  ¿ª?d 80ŠŸj„ @  ¿Žª?d x0Šû Z @  ¿‘ª?d ¸0Š„Ì  @  ¿’ª?d ø0Š]7N @  ¿“‘ª?d 81Ša²­ì @  ¿”’ª?d x1Šã#º2 @  ¿•“ª?d ¸1ЇT3 @  ¿–”ª?d ø1ŠÅí @  ¿—•ª?d 82Š$Ýñ @  ¿˜–ª?d x2ЦL/ @  ¿™—ª?d ¸2ŠZ+K  @  ¿š˜ª?d ø2Šغ\× @  ¿›™ª?d 83Š¿UÆu @  ¿œšª?d x3Š=ÄÑ« @  ¿›ª?d ¸3ŠY³}ª @  ¿žœª?d ø3ŠÛ"jt @  ¿Ÿª?d 84Š—2ö @  ¿ žª?d x4Š@%( @  ¿¡Ÿª?d ¸4ŠD†1> @  ¿¢ ª?d ø4ŠÆ&à @  ¿£¡ª?d 85Š¡ø¼B @  ¿¤¢ª?d x5Š#i«œ @  ¿¥£ª?d ¸5ŠG @  ¿¦¤ª?d ø5ŠÅC @  ¿§¥ª?d 86Šä—_ @  ¿¨¦ª?d x6Šf @  ¿©§ª?d ¸6ŠšaZ§ @  ¿ª¨ª?d ø6ŠðMy @  ¿«©ª?d 87Š×Û @  ¿¬ªª?d x7ŠÄIÐ @  ¿­ «ª?d ¸7Š >°Ñ @  ¿® ¬ª?d ø7Š"¯§ @  ¿¯ ­ª?d 88Š­§/ @  ¿° ®ª?d x8Š…<°ñ @  ¿± ¯ª?d ¸8Š ; @  ¿² °ª?d ø8ŠžšŠå @  ¿³ ±ª?d 89ŠùuG @  ¿´ ²ª?d x9Š{ä™ @  ¿µ ³ª?d ¸9Š“«˜ @  ¿¶ ´ª?d ø9мF @  ¿· µª?d 8:м®Z @  ¿¸ ¶ª?d x:Š>‹¹„ @  ¿¹ ·ª?d ¸:ŠÂìö¢ @  ¿º ¸ª?d ø:Š@}á| @  ¿» ¹ª?d 8;Š'’{Þ @  ¿¼ ºª?d x;Š¥l @  ¿½ »ª?d ¸;ŠÁtÀ @  ¿¾ ¼ª?d ø;ŠCå×ß @  ¿¿ ½ª?d 8<ŠôW‰Ï @  ¿À ¾ª?d x<ŠvÆž @  ¿Á ¿ª?d ¸<Š‚Ÿ @  ¿ Àª?d ø<ЇˆÈ @  ¿à Áª?d 8=Šghj @  ¿Ä ª?d x=Šåù´ @  ¿Å ê?d ¸=ŠŽ©µ @  ¿Æ Ī?d ø=оk @  ¿Ç Ū?d 8>Š"¬w @  ¿È ƪ?d x>Š –»© @  ¿É Ǫ?d ¸>Š\ñô @  ¿Ê Ȫ?d ø>ŠÞ`ãQ @  ¿Ë ɪ?d 8?йyó @  ¿Ì ʪ?d x?Š;n- @  ¿Í ˪?duÐ@Š7 ¸?Š_iÂ, @  ¿Î ̪?d ø?Šä? ' @  ¿Ïͪ?d P@Š6n?& @  ¿ÐΪ?d @Š›=Ø @  ¿ÑϪ?d Ð@Š-È2 @  ¿ÒЪ?d AŠý€‰Ú @  ¿ÓѪ?d PAŠȶˆN @  ¿ÔÒª?d AŠèCа @  ¿ÕÓª?d ÐAŠ.P3‘ @  ¿ÖÔª?d Bг“P @  ¿×Õª?d PBŠÙ6S @  ¿ØÖª?d BŠ­,4­ @  ¿Ùת?d ÐBŠó/n« @  ¿Úت?d CŠ#gâC @  ¿ÛÙª?d PCŠQã× @  ¿ÜÚª?d CŠ6¤á) @  ¿ÝÛª?d ÐCŠð·X @  ¿Þܪ?d DŠéù« @  ¿ßݪ?d PDŠk“T @  ¿àÞª?d DŠKfª @  ¿áߪ?d ÐDŠí‚œ @  ¿âàª?d€ EŠSDZA @  Àáª?d PEЇ3ü @  Àâª?d EŠ§Æ @  Àãª?d ÐEФœSÎ @  Àäª?d FŠ9Øó @  Àåª?d PFŠɧ v @  Àæª?d FŠéR ˆ @  Àçª?d ÐFŠyãô @  Àèª?d GŠ©«‚ @  À éª?d PGŠYÔxe @  À êª?d GŠy!z› @  À ëª?d ÐGŠz{8W @  À ìª?d HŠN„´J @  À íª?d PHоûN3 @  Àîª?d HŠžLÍ @  Àïª?d ÐHŠÆN½ @  Àðª?d IŠ™U @  Àñª?d PIŠæyc, @  Àòª?d IŠÆŒaÒ @  Àóª?d ÐIŠÅÖ# @  Àôª?d JŠX’ƒß @  Àõª?d PJЍíy¦ @  Àöª?d JŠˆ{X @  À÷ª?d ÐJŠ©~$ @  Àøª?d KŠÈáòÌ @  Àùª?d PKŠ8žµ @  Àúª?d KŠk K @  Àûª?d ÐKŠ1H‡ @  Àüª?d LŠ»ˆ @  Àýª?d PLŠòAñ @  Àþª?d LŠÒõC @  Àÿª?d ÐLŠ”õœ @  À «?d MŠD½œt @  À!«?d PMŠ´Âf  @  À"«?d MŠ”7dó @  À#«?d ÐMŠ—m&? @  À$«?d NŠ )†þ @  À%«?d PNŠúV|‡ @  À&«?d NŠÚ£~y @  À'«?d ÐNŠJ{ @  À(«?d OŠšZ÷í @  À) «?d POŠj% ” @  À* «?d OŠJÐj @  À+ «?d ÐOŠIŠM¦ @  À, «?d PŠ÷Tñ @  À- «?d PPŠ+ m @  À.«?d PŠ'Þ “ @  À/«?d ÐPŠžPã @  À0«?d QНÖÜ  @  À1«?d PQŠ_©&r @  À2«?d QŠ\$Œ @  À3«?d ÐQŠ|f@ @  À4«?d RŠáBÆ @  À5«?d PRŠ=<ø @  À6«?d RŠ1È> @  À7«?d ÐRŠ¡y;z @  À8«?d SŠq1·’ @  À9«?d PSŠNMë @  À:«?d SŠ¡»O @  À;«?d ÐSŠ¢á Ù @  À<«?d TŠ»¯þÖ @  À=«?d PTŠKЯ @  À>«?d TŠk%Q @  À?«?d ÐTŠÓGß @  À@ «?d UŠÁ›Ë7 @  ÀA!«?d PUŠ1ä1N @  ÀB"«?d UŠ3° @  ÀC#«?d ÐUŠKq| @  ÀD$«?d VŠѽ @  ÀE%«?d PVŠp+Ä @  ÀF&«?d VŠ_…): @  ÀG'«?d ÐVŠÏ4,F @  ÀH(«?d WŠ| ® @  ÀI)«?d PWŠïZ× @  ÀJ*«?d WŠÏöX) @  ÀK+«?d ÐWŠ̬å @  ÀL,«?d XŠøS–ø @  ÀM-«?d PXŠ,l @  ÀN.«?d XŠ(Ùn @  ÀO/«?d ÐXŠp™7 @  ÀP0«?d YŠ Ñ»ç @  ÀQ1«?d PYŠP®Až @  ÀR2«?d YŠp[C` @  ÀS3«?d ÐYŠs¬ @  ÀT4«?d ZŠîE¡m @  ÀU5«?d PZŠ:[ @  ÀV6«?d ZŠ>ÏYê @  ÀW7«?d ÐZŠ®~\– @  ÀX8«?d [Š~6Ð~ @  ÀY9«?d P[ŠŽI* @  ÀZ:«?d [Š®¼(ù @  À[;«?d Ð[Š­æj5 @  À\<«?d \Š´¨™: @  À]=«?d P\ŠD×cC @  À^>«?d \Šd"a½ @  À_?«?d Ð\Š@ƒ3° @  À`@«?d ]ŠË¿X @  ÀaA«?d P]Š`´E! @  ÀbB«?d ]Š@AGß @  ÀcC«?d Ð]ŠC @  ÀdD«?d ^ŠÞ_¥Ò @  ÀeE«?d P^Š. _« @  ÀfF«?d ^ŠÕ]U @  ÀgG«?d Ð^ŠždX) @  ÀhH«?d _ŠN,ÔÁ @  ÀiI«?d P_оS.¸ @  ÀjJ«?d _Šž¦,F @  ÀuÐ`ŠkK«?d Ð_ŠünŠ @  ÀlL«?d (`Š#Û @  ÀmM«?d h`ŠÓ{!k @  ÀnN«?d ¨`ŠóŽ#• @  ÀoO«?d è`Š«Îzå @  ÀpP«?d (aŠ{†ö  @  ÀqQ«?d haŠ‹ù t @  ÀrR«?d ¨aŠ« Š @  ÀsS«?d èaЍVLF @  ÀtT«?d (bŠ5ì‡ @  ÀuU«?d hbŠÅmþ @  ÀvV«?d ¨bŠå˜ @  ÀwW«?d èbŠu)| @  ÀxX«?d (cŠ¥a” @  ÀyY«?d hcŠUgí @  ÀzZ«?d ¨cŠuëe @  À{[«?d ècŠv±'ß @  À|\«?d (dŠoÿÔÐ @  À}]«?d hdŠŸ€.© @  À~^«?d ¨dŠ¿u,W @  À_«?d èdŠ&Õ]è @  À€`«?d (eŠöÑ @  Àa«?d heŠâ+y @  À‚b«?d ¨eŠ&)‡ @  Àƒc«?d èeŠ%MkK @  À„d«?d (fЏ ËŠ @  À…e«?d hfŠHv1ó @  À†f«?d ¨fŠhƒ3  @  À‡g«?d èfŠø26q @  Àˆh«?d (gŠ(zº™ @  À‰i«?d hgŠØ@à @  ÀŠj«?d ¨gŠøðB @  À‹k«?d ègŠûªÒ @  ÀŒl«?d (hŠÏUŒÏ @  Àm«?d hhŠ?*v¶ @  ÀŽn«?d ¨hŠßtH @  Ào«?d èhŠGŸ-8 @  Àp«?d (iŠ—סÐ @  À‘q«?d hiŠg¨[© @  À’r«?d ¨iŠG]YW @  À“s«?d èiŠD› @  À”t«?d (jŠÙC»Z @  À•u«?d hjŠ)¬?d @Џ~é @  Á?¬?d €Š6Ñ @  Á@¬?d ÀŠ´‚ÆÖ @  ÁA¬?d ŽŠmDÈè @  ÁB¬?d @ŽŠïÕß6 @  ÁC¬?d €ŽŠx‡Ë‚ @  ÁD¬?d ÀŽŠúÜ\ @  ÁE¬?d ŠöÌl @  ÁF¬?d @Št] ² @  ÁG ¬?d €Šèôº‘ @  ÁH ¬?d ÀŠje­O @  ÁI ¬?d Š9¿ @  ÁJ ¬?d @Ѝ¨Ü @  ÁK ¬?d €Š…ú¼h @  ÁL¬?d ÀŠk«¶ @  ÁM¬?d ‘Šnáj @  ÁN¬?d @‘Šìp´ @  ÁO¬?d €‘ŠÝx‘w @  ÁP¬?d À‘Š_醩 @  ÁQ¬?d ’І/ˆ— @  ÁR¬?d @’оŸI @  ÁS¬?d €’Š“ì‹ý @  ÁT¬?d À’Š}œ# @  ÁU¬?d “Ч] @  ÁV¬?d @“ŠŸ6JÍ @  ÁW¬?d €“ŠŸúî @  ÁX¬?d À“Ší0 @  ÁY¬?d ”ŠܰÀ @  ÁZ¬?d @”Š^S§ @  Á[¬?d €”ŠÉ³ª @  Á\¬?d À”ŠK¤t @  Á]¬?d •Š¿­>t @  Á^ ¬?d @•Š=<)ª @  Á_!¬?d €•Š2€Ù @  Á`"¬?d À•ŠŸ£— @  Áa#¬?d –ŠFe™9 @  Áb$¬?d @–ŠÄôŽç @  Ác%¬?d €–ŠS¦šS @  Ád&¬?d À–ŠÑ7 @  Áe'¬?d —ŠÝíL½ @  Áf(¬?d @—Š_|[c @  Ág)¬?d €—ŠÃÕë@ @  Áh*¬?d À—ŠADüž @  Ái+¬?d ˜Š19Þ| @  Áj,¬?d @˜Š³¨É¢ @  Ák-¬?d €˜Š$úÝ @  Ál.¬?d À˜Š¦kÊÈ @  Ám/¬?d ™ŠÏái @  Án0¬?d @™ŠMp~Ê @  Áo1¬?d €™Š|xð  @  Áp2¬?d À™Šþéç× @  Áq3¬?d šŠ'/éé @  Ár4¬?d @šŠ¥¾þ7 @  Ás5¬?d €šŠ2ìêƒ @  Át6¬?d ÀšŠ°}ý] @  Áu7¬?d ›Š¼§6+³ @  Áw9¬?d €›Š¢Ÿ› @  Áx:¬?d À›Š ŒN @  Áy;¬?d œŠ}ÂѾ @  Áz<¬?d @œŠÿSÆ` @  Á{=¬?d €œŠhÒÔ @  Á|>¬?d ÀœŠêÅ  @  Á}?¬?d ŠîýJ @  Á~@¬?d @Šll]Å @  ÁA¬?d €Š3 @  Á€B¬?d ÀŠƒ¢ÕË @  ÁC¬?d žŠZdÛõ @  Á‚D¬?d @žŠØõÌ+ @  ÁƒE¬?d €žŠO§ØŸ @  Á„F¬?d ÀžŠÍ6ÏA @  Á…G¬?d ŸŠÁìq @  Á†H¬?d @ŸŠC}¯ @  Á‡I¬?d €ŸŠßÔ©Œ @  ÁˆJ¬uРŠ?d ÀŸŠ]E¾R @  Á‰K¬?d  ŠhÌÎË @  ÁŠL¬?d X Šê]Ù @  Á‹M¬?d ˜ Š}Í¡ @  ÁŒN¬?d Ø ŠÿžÚ @  ÁO¬?d ¡Š–y£ @  ÁŽP¬?d X¡Š…n} @  ÁQ¬?d ˜¡Š%ྠ@  ÁR¬?d Ø¡Š§÷` @  Á‘S¬?d ¢Š~Úù^ @  Á’T¬?d X¢ŠüKî€ @  Á“U¬?d ˜¢Škú4 @  Á”V¬?d Ø¢Šéˆíê @  Á•W¬?d £ŠåR,Ú @  Á–X¬?d X£ŠgÃ; @  Á—Y¬?d ˜£Šûj‹' @  Á˜Z¬?d Ø£Šyûœù @  Á™[¬?d ¤Š$7Á  @  Áš\¬?d X¤Š¦¦Ö× @  Á›]¬?d ˜¤Š1ôÂc @  Áœ^¬?d ؤгeÕ½ @  Á_¬?d ¥ŠGXO½ @  Áž`¬?d X¥ŠÅÉXc @  ÁŸa¬?d ˜¥ŠåÇñ @  Á b¬?d Ø¥ŠgVæÎ @  Á¡c¬?d ¦Š¾èð @  Á¢d¬?d X¦Š<ÿ. @  Á£e¬?d ˜¦Š«Sëš @  Á¤f¬?d ئŠ)ÂüD @  Á¥g¬?d §Š%=t @  Á¦h¬?d X§Š§‰*ª @  Á§i¬?d ˜§Š; š‰ @  Á¨j¬?d اй±W @  Á©k¬?d ¨ŠÉ̯µ @  Áªl¬?d X¨ŠK]¸k @  Á«m¬?d ˜¨ŠÜ¬ß @  Á¬n¬?d بŠ^ž» @  Á­o¬?d ©Š7Ý @  Á®p¬?d X©Šµ… @  Á¯q¬?d ˜©Š„À @  Á°r¬?d Ø©Š– @  Á±s¬?d ªŠßÚ˜  @  Á²t¬?d XªŠ]Kþ @  Á³u¬?d ˜ªŠÊ›J @  Á´v¬?d تŠHˆŒ” @  Áµw¬?d «ŠDRM¤ @  Á¶x¬?d X«ŠÆÃZz @  Á·y¬?d ˜«ŠZjêY @  Á¸z¬?d Ø«ŠØûý‡ @  Á¹{¬?d ¬Š…7 w @  Áº|¬?d X¬Š¦·© @  Á»}¬?d ˜¬Šô£ @  Á¼~¬?d جŠe´Ã @  Á½¬?d ­Š Îo@ @  Á¾€¬?d X­Š‰_xž @  Á¿¬?d ˜­ŠV× @  ÁÀ‚¬?d Ø­Š…ÇÀ¡ @  ÁÁƒ¬?d ®Š\Ο @  Á„¬?d X®ŠÞÙA @  ÁÃ…¬?d ˜®ŠIÂÍõ @  ÁƬ?d Ø®ŠËSÚ+ @  ÁҬ?d ¯Šlj @  Áƈ¬?d X¯ŠE Å @  Álj¬?d ˜¯ŠÙ±¼æ @  ÁÈЬ?d دŠ[ «8 @  ÁÉ‹¬?d °Š¡|¹u @  ÁÊŒ¬?d X°Š#í®« @  Áˬ?d ˜°Š´¿º @  ÁÌެ?d ذŠ6.­Á @  Áͬ?d ±Š_¤ @  Áά?d X±ŠÝ5à @  ÁÏ‘¬?d ˜±Šì=— @  ÁÐ’¬?d رŠn¬€Þ @  ÁÑ“¬?d ²Š·jŽà @  ÁÒ”¬?d X²Š5û™> @  ÁÓ•¬?d ˜²Š¢©Š @  ÁÔ–¬?d زŠ 8šT @  ÁÕ—¬?d ³Š,â[d @  ÁÖ˜¬?d X³Š®sLº @  Á×™¬?d ˜³Š2Úü™ @  ÁØš¬?d سаKëG @  ÁÙ›¬?d ´Š퇶· @  ÁÚœ¬?d X´Šo¡i @  ÁÛ¬?d ˜´ŠøDµÝ @  ÁÜž¬?d Ø´ŠzÕ¢ @  ÁÝŸ¬?d µŠŽè8 @  ÁÞ ¬?d XµŠ y/Ý @  Áß¡¬?d ˜µŠ,w†® @  Áࢬ?d صŠ®æ‘p @  Áᣬ?d ¶Šw ŸN @  Á⤬?d€ X¶Š4ö @  Â¥¬?d ˜¶ŠBå#  @  Â¦¬?d ضŠÀt4Ó @  Â§¬?d ·Š ç @  Â¨¬?d X·Š‹vÐ @  Â©¬?d ˜·ŠÙmö‰ @  Âª¬?d Ø·Š[üáW @  Â«¬?d ¸Šå3œÏ @  Â¬¬?d X¸Šg¢‹ @  Â ­¬?d ˜¸Š5¹dH @  Â ®¬?d ظŠ·(s– @  Â ¯¬?d ¹Šë+§ @  Â °¬?d X¹Š™zD @  Â·¬?d »Šh­~Þ @  Â¸¬?d X»Šêz @  Â.Ò¬?d ðÁŠH¯mÞ @  Â/Ó¬?d 0Šòzz @  Â0Ô¬?d pŠpë¤ @  Â1Õ¬?d °ÂŠ"ðúý @  Â2Ö¬?d ðŠ aí# @  Â3׬?d 0Êiò×þ @  Â4ج?d pÊëcÀ  @  Â5Ù¬?d °Ãйx/y @  Â6Ú¬?d ðÊ;é8§ @  Â7Û¬?d 0ÄŠ¨—:- @  Â8ܬ?d pÄŠ*-ó @  Â9ݬ?d °ÄŠxª @  Â:Þ¬?d ðÄŠúŒÕt @  Â;߬?d 0ÅŠËø´™ @  Â<à¬?d pÅŠIi£G @  Â=á¬?d °ÅŠrL @  Â>â¬?d ðÅŠ™ã[À @  Â?ã¬?d 0ÆŠœ7F @  Â@ä¬?d pÆŠ¦˜ @  ÂAå¬?d °ÆŠL½íÁ @  ÂBæ¬?d ðÆŠÎ,ú @  ÂCç¬?d 0ÇŠ¿À @  ÂDè¬?d pÇŠ….× @  ÂEé¬?d °ÇŠ×58E @  ÂFê¬?d ðÇŠU¤/› @  ÂGë¬?d 0ÈŠëkR @  ÂHì¬?d pÈŠiúEÝ @  ÂIí¬?d °ÈŠ;᪄ @  ÂJî¬?d ðÈŠ¹p½Z @  ÂKï¬?d 0ÉŠ³åk @  ÂLð¬?d pÉŠ—"òµ @  ÂMñ¬?d °ÉŠÅ9ì @  ÂNò¬?d ðÉŠG¨ 2 @  ÂOó¬?d 0ÊŠý}e– @  ÂPô¬?d pÊŠìrH @  ÂQõ¬?d °ÊŠ-÷ @  ÂRö¬?d ðÊŠ¯fŠÏ @  ÂS÷¬?d 0ËŠfõ° @  ÂTø¬?d pËŠäd§Ì @  ÂUù¬?d °ËжH• @  ÂVú¬?d ðËŠ4î_K @  ÂWû¬?d 0ÌŠ§]Á @  ÂXü¬?d pÌŠ%J @  ÂYý¬?d °ÌŠw¥F @  ÂZþ¬?d ðÌŠõ‹²˜ @  Â[ÿ¬?d 0ÍŠVÇú @  Â\­?d pÍŠÔŸÐ$ @  Â]­?d °ÍІ„?} @  Â^­?d ðÍŠ(£ @  Â_­?d 0Ί¯Æ`· @  Â`­?d pΊ-Wwi @  Âa­?d °ÎŠL˜0 @  Âb­?d ðΊýÝî @  Âc­?d 0ÏŠ4Nµ3 @  Âd­?d pÏŠ¶ß¢í @  Âe ­?d °ÏŠäÄM´ @  Âf ­?d ðÏŠfUZj @  Âg ­?d 0ЊR»] @  Âh ­?d pЊÐ*ƒ @  Âi ­?d °ÐŠ‚1ïÚ @  Âj­?d ðЊ ø @  Âk­?d 0ÑŠ¬c 5 @  Âl­?d pÑŠ.ò·ë @  Âm­?d °ÑŠ|éX² @  Ân­?d ðÑŠþxOl @  Âo­?d 0ÒŠD­ È @  Âp­?d pÒŠÆ<7 @  Âq­?d °ÒŠ”'ØO @  Âr­?d ðÒŠ¶Ï‘ @  Âs­?d 0ÓŠß%õL @  Ât­?d pÓŠ]´â’ @  Âu­?d °ÓН Ë @  Âv­?d ðÓŠ> @  Âw­?d 0ÔŠ@Ÿ @  Âx­?d pÔŠœÑA @  Ây­?d °ÔŠÎÊà @  Âz­?d ðÔŠL[÷Æ @  Â{­?d 0ÕŠ}/–+ @  Â| ­?d pÕŠÿ¾õ @  Â}!­?d °ÕŠ­¥n¬ @  Â~"­?d ðÕŠ/4yr @  Â#­?d 0ÖŠɶÅ @  Â€$­?d pÖŠK' @  Â%­?d °ÖŠ<ÿB @  Â‚&­?d ðÖŠ›­èœ @  Âƒ'­?d 0׊R>ÒA @  Â„(­?d p׊Яş @  Â…)­?d °×Š‚´*Æ @  Â†*­?d ð׊%= @  Â‡+­?d 0ØŠ¾ê@€ @  Âˆ,­?d pØŠ<{W^ @  Â‰-­?d °ØŠn`¸ @  ÂŠ.­?d ðØŠìñ¯Ù @  Â‹/­?d 0ÙŠ@2÷è @  ÂŒ0­?d pÙŠ£à6 @  Â1­?d °ÙЏo @  ÂŽ2­?d ðÙŠ)± @  Â3­?d 0ÚŠ¨üw @  Â4­?d pÚŠ*m`Ë @  Â‘5­?d °ÚŠxv’ @  Â’6­?d ðÚŠúç˜L @  Â“7­?d 0ÛŠ3t¢‘ @  Â”8­?d pÛŠ±åµO @  Â•9­?d °ÛŠãþZ @  Â–:­?d ðÛŠaoMÈ @  Â—;­?d 0ÜŠòOB @  Â˜<­?d pÜŠp€Xœ @  Â™=­?d °ÜŠ"›·Å @  Âš>­?d ðÜŠ    @  Â›?­?d 0ÝŠa.Ôç @  Âœ@­?d pÝŠã¿Ã9 @  ÂA­?d °Ýб¤,` @  ÂžB­?d ðÝŠ35;¾ @  ÂŸC­?d 0ÞŠ˜æsª @  Â D­?d pÞŠwdt @  Â¡E­?d °ÞŠHl‹- @  Â¢F­?d ðÞŠÊýœó @  Â£G­?d 0ߊn¦. @  Â¤H­?d pߊÿ±ð @  Â¥I­?d uÐàŠ/°ßŠÓä^© @  Â¦J­?d ðߊ,õ:  @  Â§€K­?d HàŠ¿a•x @  Â¨€L­?d ˆàŠŸ”—† @  Â©€M­?d ÈàŠoëmÿ @  Âª€N­?d ኿£á @  Â«€O­?d HáŠA¹" @  Â¬€P­?d ˆáŠaL î @  Â­€Q­?d Èኑ3Ú— @  Â®€R­?d ⊠wzV @  Â¯€S­?d H⊩w¢í @  Â°€T­?d ˆâЉ‚  @  Â±€U­?d ÈâŠyýZj @  Â²€V­?d ㊩µÖ‚ @  Â³€W­?d HãŠ2ÿwi @  Â´€X­?d ˆãŠ u— @  Âµ€Y­?d ÈãŠâuî @  Â¶€Z­?d äŠû;|á @  Â·€[­?d HäŠ󚚺 @  Â¸€\­?d ˆäŠÓo˜D @  Â¹€]­?d ÈäŠ#b= @  Âº€^­?d åŠóXîÕ @  Â»€_­?d HåŠõ @  Â¼€`­?d ˆåаð @  Â½€a­?d ÈåŠ@ì‰ @  Â¾€b­?d æŠÝ;LH @  Â¿€c­?d HæŠÇ:µÑ @  ÂÀ€d­?d ˆæŠçÏ·/ @  ÂÁ€e­?d ÈæŠ°MV @  Â€f­?d çŠÇøÁ¾ @  ÂÀg­?d HçŠ\²`U @  ÂÄ€h­?d ˆçŠ|Gb« @  ÂÅ€i­?d È犌8˜Ò @  ÂÆ€j­?d 芸ÇÏ @  ÂÇ€k­?d H芰fò” @  ÂÈ€l­?d ˆèŠ“ðj @  ÂÉ€m­?d ÈèŠ`ì  @  ÂÊ€n­?d 銰¤†û @  ÂË€o­?d HéŠN¾Eü @  ÂÌ€p­?d ˆéŠnKG @  ÂÍ€q­?d È銞4½{ @  Â΀r­?d êŠpº @  ÂÏ€s­?d HꊦpÅ @  ÂЀt­?d ˆêІ…Çÿ @  ÂÑ€u­?d ÈêŠvú=† @  ÂÒ€v­?d 늦²±n @  ÂÓ€w­?d HëŠ=ø… @  ÂÔ€x­?d ˆëŠ { @  ÂÕ€y­?d ÈëŠírè @  ÂÖ€z­?d ìŠô<  @  Â×€{­?d HìŠüýV @  ÂØ€|­?d ˆìŠÜhÿ¨ @  ÂÙ€}­?d ÈìŠ,Ñ @  ÂÚ€~­?d íŠü_‰9 @  ÂÛ€­?d HíŠrd2a @  ÂÜ€€­?d ˆíŠR‘0Ÿ @  ÂÝ€­?d È튢îÊæ @  ÂÞ€‚­?d îŠ?ªj' @  Â߀ƒ­?d H¬•, @  Âà€„­?d ˆîŠ«Y—Ò @  Âစ­?d ÈîŠ[&m« @  Â ­?d€ ïŠÿ­ýå @  Ã€‡­?d H¦' @  Ã€ˆ­?d ˆïŠ¥SÙ @  Ã€‰­?d ÈïŠeM @  Ã€Š­?d ðŠ.»«ÿ @  Ã€‹­?d HðŠè¨Þ @  Ã€Œ­?d ˆðŠÈ]  @  Ã€­?d ÈðŠöµ# @  Ã€Ž­?d ñŠ&Ø9Ë @  Ã €­?d HñŠ‹! @  Ã €­?d ˆñŠ=~ß @  Ã €‘­?d ÈñŠHK @  Ã €’­?d òŠ• ¢Š @  Ã €“­?d HòŠS« @  Ã€”­?d ˆòŠsêU @  Ã€•­?d ÈòŠà†‚¶ @  Ã€–­?d óŠ0Î^ @  Ã€—­?d HóŠnÍTX @  Ã€˜­?d ˆóŠN8V¦ @  Ã€™­?d ÈóŠ{W2 @  Ã€š­?d ôŠb@¤= @  Ã€›­?d HôФS @  Ã€œ­?d ˆôŠ„¦â @  Ã€­?d ÈôŠºkºá @  Ã€ž­?d õŠj#6  @  Ã€Ÿ­?d HõŠÌÇ7? @  Ã€ ­?d ˆõŠì25Á @  Ã€¡­?d ÈõŠÙ4U @  Ã€¢­?d öŠD@”” @  Ã€£­?d HöŠ‚S-µ @  Ã€¤­?d ˆöŠ¢¦/K @  Ã€¥­?d ÈöŠ Ì“ @  Ã €¦­?d ÷Šð„ð @  Ã!€§­?d H÷Š®‡Eö @  Ã"€¨­?d ˆ÷ŠŽrG @  Ã#€©­?d È÷Š»DFœ @  Ã$€ª­?d øŠ»Ê @  Ã%€«­?d HøŠI¨s  @  Ã&€¬­?d ˆøŠi]q^ @  Ã'€­­?d ÈøŠWÔ] @  Ã(€®­?d ùЇØXµ @  Ã)€¯­?d Hùм‹`_ @  Ã*€°­?d ˆùŠœ~b¡ @  Ã+€±­?d ÈùŠ©Hc5 @  Ã,€²­?d úŠ4 Ãô @  Ã-€³­?d HúŠòzÕ @  Ã.€´­?d ˆúŠÒêx+ @  Ã/€µ­?d ÈúŠA†ãÈ @  Ã0€¶­?d ûŠ‘Îo  @  Ã1€·­?d HûŠÏÍ5& @  Ã2€¸­?d ˆûŠï87Ø @  Ã3€¹­?d ÈûŠÚ6L @  Ã4€º­?d üŠÃ@ÅC @  Ã5€»­?d HüŠS|b @  Ã6€¼­?d ˆüŠ%¦~œ @  Ã7€½­?d ÈüŠkÛŸ @  Ã8€¾­?d ýŠË#Ww @  Ã9€¿­?d HýŠ—CP @  Ã:€À­?d ˆýнbA® @  Ã;€Á­?d ÈýŠˆT@: @  Ã<€­?d þŠàû @  Ã=€í?d HþŠÓYÚ @  Ã>€Ä­?d ˆþŠóö[$ @  Ã?€Å­?d ÈþŠß›áå @  Ã@€Æ­?d ÿŠÓm  @  ÃA€Ç­?d HÿŠQÐ7  @  ÃB€È­?d ˆÿŠq%5õ @  ÃC€uЋɭ?d ÈÿŠ9“G @  ÃDÊ­?d ‹v'oì @  ÃEË­?d `‹°4ÖÍ @  ÃFÌ­?d  ‹ÁÔ3 @  ÃGÍ­?d à‹® q0 @  ÃHέ?d ‹~DýØ @  ÃIÏ­?d `‹EÅ2 @  ÃJЭ?d  ‹eâÇÌ @  ÃKÑ­?d à‹PÔÆX @  ÃLÒ­?d ‹Íf™ @  ÃMÓ­?d `‹ ƒß¸ @  ÃNÔ­?d  ‹+vÝF @  ÃOÕ­?d à‹¸F¥ @  ÃPÖ­?d ‹hRÊM @  ÃQ×­?d `‹6QK @  ÃRØ­?d  ‹¤’µ @  ÃSÙ­?d à‹#’“! @  ÃTÚ­?d ‹:Ü`. @  ÃUÛ­?d `‹üÏÙ @  ÃVÜ­?d  ‹Ü:Ûñ @  ÃWÝ­?d à‹â÷~ò @  ÃXÞ­?d ‹2¿ò @  ÃYß­?d `‹”[ó, @  ÃZà­?d  ‹´®ñÒ @  Ã[á­?d à‹˜ðF @  Ã\â­?d ‹ÜP‡ @  Ã]ã­?d `‹ÚÏé¦ @  Ã^ä­?d  ‹ú:ëX @  Ã_å­?d à‹xPW  @  Ã`æ­?d ‹¨Ûã @  Ãaç­?d `‹öå @  Ãbè­?d  ‹Öîƒ @  Ãcé­?d à‹ãØ‚ @  Ãdê­?d ‹×'’ @  Ãeë­?d `‹4·³ @  Ãfì­?d  ‹1ÁµM @  Ãgí­?d à‹ N @  Ãhî­?d ‹ßDœ¦ @  Ãiï­?d ` ‹ä¤L @  Ãjð­?d   ‹Ä⦲ @  Ãkñ­?d à ‹ñÔ§& @  Ãlò­?d ‹lç @  Ãmó­?d ` ‹ªƒ¾Æ @  Ãnô­?d   ‹Šv¼8 @  Ãoõ­?d à ‹'Û @  Ãpö­?d ‹ÉR«3 @  Ãq÷­?d ` ‹—Qñ5 @  Ãrø­?d   ‹·¤óË @  Ãsù­?d à ‹‚’ò_ @  Ãtú­?d ‹›ÜP @  Ãuû­?d ` ‹]ϸq @  Ãvü­?d   ‹}:º @  Ãwý­?d à ‹C÷Œ @  Ãxþ­?d ‹“¿“d @  Ãyÿ­?d ` ‹ˆ³ø @  Ãz®?d   ‹5}± @  Ã{®?d à ‹K°’ @  Ã|®?d ‹S @  Ã}®?d `‹[©r @  Ã~®?d  ‹{髌 @  Ã®?d à‹´Ò!| @  Ã€®?d ‹dš­” @  Ã®?d `‹:™÷’ @  Ã‚®?d  ‹lõl @  Ãƒ ®?d à‹/Zôø @  Ã„ ®?d ‹‘„HJ @  Ã… ®?d `‹W—ñk @  Ã† ®?d  ‹wbó• @  Ã‡ ®?d à‹I¯V– @  Ãˆ®?d ‹™çÚ~ @  Ã‰®?d `‹¢´â” @  ÃŠ®?d  ‹‚Aàj @  Ã‹®?d à‹·wáþ @  ÃŒ®?d ‹*3A? @  Ã®?d `‹ì ø @  ÃŽ®?d  ‹ÌÕúà @  Ã®?d à‹_¹a @  Ã®?d ‹ñíë @  Ã‘®?d `‹Ñò·í @  Ã’®?d  ‹ñµ @  Ã“®?d à‹Ä1´‡ @  Ã”®?d ‹ÝGˆ @  Ã•®?d `‹lþ© @  Ã–®?d  ‹;™üW @  Ã—®?d à‹TYT @  Ã˜®?d ‹ÕÕ¼ @  Ã™®?d `‹søÔŠ @  Ãš ®?d  ‹S Öt @  Ã›!®?d à‹f;×à @  Ãœ"®?d ‹ûw! @  Ã#®?d `‹=lÎ @  Ãž$®?d  ‹™Ìþ @  ÃŸ%®?d à‹Ÿóp­ @  Ã &®?d ‹O»üE @  Ã¡'®?d `‹¸¦C @  Ã¢(®?d  ‹1M¤½ @  Ã£)®?d à‹{¥) @  Ã¤*®?d ‹0„)4 @  Ã¥+®?d `‹ö— @  Ã¦,®?d  ‹Öb’ë @  Ã§-®?d à‹è¯7è @  Ã¨.®?d ‹8ç» @  Ã©/®?d `‹´ƒê @  Ãª0®?d  ‹#A @  Ã«1®?d à‹w€€ @  Ã¬2®?d ‹‹3 A @  Ã­3®?d `‹M ™` @  Ã®4®?d  ‹mÕ›ž @  Ã¯5®?d à‹þ¹} @  Ã°6®?d ‹.ñŒ• @  Ã±7®?d `‹pòÖ“ @  Ã²8®?d  ‹PÔm @  Ã³9®?d à‹e1Õù @  Ã´:®?d ‹|&ö @  Ãµ;®?d `‹ºlŸ× @  Ã¶<®?d  ‹š™) @  Ã·=®?d à‹¤T8* @  Ã¸>®?d ‹t´Â @  Ã¹?®?d `‹"¨ å @  Ãº@®?d  ‹]¢ @  Ã»A®?d à‹7k£ @  Ã¼B®?d ‹ª/N @  Ã½C®?d `‹l<ºo @  Ã¾D®?d  ‹Lɸ‘ @  Ã¿E®?d à‹`¤P @  ÃÀF®?d ‹°ìޏ @  ÃÁG®?d `‹îïÔ¾ @  ÃÂH®?d  ‹ÎÖ@uÐ ‹ @  ÃÃI®?d à‹Âë  @  ÃÄ J®?d 8 ‹³àÕg @  ÃÅ K®?d x ‹uólF @  ÃÆ L®?d ¸ ‹Un¸ @  ÃÇ M®?d ø ‹kËË» @  ÃÈ N®?d 8!‹»ƒGS @  ÃÉ O®?d x!‹€Ð¹ @  ÃÊ P®?d ¸!‹ %}G @  ÃË Q®?d ø!‹•|Ó @  ÃÌ R®?d 8"‹WÜ @  ÃÍ S®?d x"‹ÎDe3 @  ÃÎ T®?d ¸"‹î±gÍ @  ÃÏ U®?d ø"‹}Ýü. @  ÃÐ V®?d 8#‹­•pÆ @  ÃÑ W®?d x#‹ó–*À @  ÃÒ X®?d ¸#‹Óc(> @  ÃÓ Y®?d ø#‹æU)ª @  ÃÔ Z®?d 8$‹ÿÚ¥ @  ÃÕ [®?d x$‹9c„ @  ÃÖ \®?d ¸$‹ýaz @  Ã× ]®?d ø$‹'0Äy @  ÃØ ^®?d 8%‹÷xH‘ @  ÃÙ _®?d x%‹QœI§ @  ÃÚ `®?d ¸%‹qiKY @  ÃÛ a®?d ø%‹D_JÍ @  ÃÜ b®?d 8&‹Ùê  @  ÃÝ c®?d x&‹S- @  ÃÞ d®?d ¸&‹?ýQÓ @  Ãß e®?d ø&‹½—í€ @  Ãà f®?d 8'‹mßah @  Ãá g®?d x'‹3Ü;n @  Ãâ h®?d€ ¸'‹•‘) @  Ä i®?d ø'‹AØ” @  Ä j®?d 8(‹u÷T‰ @  Ä k®?d x(‹OjÊ @  Äl®?d ¸(‹oŸÈn @  Äm®?d ø(‹]IÕ @  Än®?d 8)‹Y* @  Äo®?d x)‹xà>º @  Äp®?d ¸)‹X¦®?d 87‹!Mv @  Ä?§®?d x7‹£\l­ @  Ä@¨®?d ¸7‹ƒ©nS @  ÄA©®?d ø7‹sÖ”* @  ÄBª®?d 88‹G)7 @  ÄC«®?d x8‹DsZû @  ÄD¬®?d ¸8‹d†X @  ÄE­®?d ø8‹”ù¢| @  ÄF®®?d 89‹D±.” @  ÄG¯®?d x9‹±PI @  ÄH°®?d ¸9‹‘¥Kú @  ÄI±®?d ø9‹aÚ±ƒ @  ÄJ²®?d 8:‹üžB @  ÄK³®?d x:‹ÿÄSŽ @  ÄL´®?d ¸:‹ß1Qp @  ÄMµ®?d ø:‹/N«  @  ÄN¶®?d 8;‹ÿ'á @  ÄO·®?d x;‹Â} @  ÄP¸®?d ¸;‹âム@  ÄQ¹®?d ø;‹œäú @  ÄRº®?d 8<‹ Òõ @  ÄS»®?d x<‹ˆU9 @  ÄT¼®?d ¸<‹(}WÇ @  ÄU½®?d ø<‹Ø­¾ @  ÄV¾®?d 8=‹J!V @  ÄW¿®?d x=‹Lj  @  ÄXÀ®?d ¸=‹°¹hõ @  ÄYÁ®?d ø=‹@Æ’Œ @  ÄZ®?d 8>‹Ý‚2M @  Ä[î?d x>‹ÞØp @  Ä\Ä®?d ¸>‹þ-r @  Ä]Å®?d ø>‹Rˆ @  Ä^Æ®?d 8?‹Þî @  Ä_Ç®?d x?‹ò  @  Ä`È®?duÐ@‹7 ¸?‹Òù< @  ÄaÉ®?d ø?‹à/ @  ÄbÊ®?d P@‹#ƒ½¬ @  ÄcË®?d @‹‚½ê@ @  ÄdÌ®?d Ð@‹,ýž @  ÄeÍ®?d A‹¢ŠœÑ @  Äfή?d PA‹ ‹ @  ÄgÏ®?d A‹wžù¿ @  ÄhЮ?d ÐA‹õîa @  ÄiÑ®?d B‹¥£ @  ÄjÒ®?d PB‹˜4´Ù @  ÄkÓ®?d B‹9 ã5 @  ÄlÔ®?d ÐB‹»›ôë @  ÄmÕ®?d C‹=•¤ @  ÄnÖ®?d PC‹›¬‚z @  Äo×®?d C‹جÆ @  ÄpØ®?d ÐC‹†I» @  ÄqÙ®?d D‹í饰 @  ÄrÚ®?d PD‹ox²n @  ÄsÛ®?d D‹ÎFå‚ @  ÄtÜ®?d ÐD‹L×ò\ @  ÄuÝ®?d E‹îq“ @  ÄvÞ®?d PE‹là„Í @  Äwß®?d E‹¦ÒÏ¡ @  Äxà®?d ÐE‹$CØ @  Äyá®?d F‹Ëé• @  Äzâ®?d PF‹Ix‚Ç @  Ä{ã®?d F‹èFÕ+ @  Ä|ä®?d ÐF‹j×Âõ @  Ä}å®?d G‹Èq£º @  Ä~æ®?d PG‹Jà´d @  Äç®?d G‹‰Ã‹Ë @  Ä€è®?d ÐG‹ Rœ @  Äé®?d H‹MCý¯ @  Ä‚ê®?d PH‹ÏÒêq @  Äƒë®?d H‹nì½ @  Ä„ì®?d ÐH‹ì}ªC @  Ä…í®?d I‹NÛË  @  Ä†î®?d PI‹ÌJÜÒ @  Ä‡ï®?d I‹›Ï®b @  Äˆð®?d ÐI‹^¹¼ @  Ä‰ñ®?d J‹öôôÚ @  ÄŠò®?d PJ‹teã @  Ä‹ó®?d J‹Õ[´è @  ÄŒô®?d ÐJ‹WÊ£6 @  Äõ®?d K‹õlÂy @  ÄŽö®?d PK‹wýÕ§ @  Ä÷®?d K‹è‰û @  Äø®?d ÐK‹jìÅ @  Ä‘ù®?d L‹¸òm @  Ä’ú®?d PL‹ƒ)å³ @  Ä“û®?d L‹"²_ @  Ä”ü®?d ÐL‹ †¥ @  Ä•ý®?d M‹;ç @  Ä– þ®?d PM‹¹vÅ @  Ä— ÿ®?d M‹áµP& @  Ä˜ ¯?d ÐM‹c$Gø @  Ä™ ¯?d N‹ŒŽ ž @  Äš ¯?d PN‹@ @  Ä› ¯?d N‹¯!J¬ @  Äœ ¯?d ÐN‹-°]r @  Ä ¯?d O‹<= @  Äž ¯?d PO‹ ‡+ã @  ÄŸ ¯?d O‹ƒõ"ï @  Ä  ¯?d ÐO‹d51 @  Ä¡  ¯?d P‹ÍTd$ @  Ä¢  ¯?d PP‹OÅsú @  Ä£  ¯?d P‹îû$ @  Ä¤  ¯?d ÐP‹lj3È @  Ä¥  ¯?d Q‹ÎÌR‡ @  Ä¦ ¯?d PQ‹L]EY @  Ä§ ¯?d Q‹Ø7é @  Ä¨ ¯?d ÐQ‹™I 7 @  Ä© ¯?d R‹vãmQ @  Äª ¯?d PR‹ôrz @  Ä« ¯?d R‹UL-c @  Ä¬ ¯?d ÐR‹×Ý:½ @  Ä­ ¯?d S‹u{[ò @  Ä® ¯?d PS‹÷êL, @  Ä¯ ¯?d S‹hžb @  Ä° ¯?d ÐS‹êuN @  Ä± ¯?d T‹¯kæ @  Ä² ¯?d PT‹>|8 @  Ä³ ¯?d T‹¢+Ô @  Ä´ ¯?d ÐT‹ ‘<  @  Äµ ¯?d U‹‚7]E @  Ä¶ ¯?d PU‹¦J› @  Ä· ¯?d U‹Ê”÷ @  Ä¸  ¯?d ÐU‹H) @  Ä¹ !¯?d V‹§¯[O @  Äº "¯?d PV‹%>L‘ @  Ä» #¯?d V‹„} @  Ä¼ $¯?d ÐV‹‘ £ @  Ä½ %¯?d W‹¤7mì @  Ä¾ &¯?d PW‹&¦z2 @  Ä¿ '¯?d W‹Óu¬ @  ÄÀ (¯?d ÐW‹„Bbr @  ÄÁ )¯?d X‹ÂSÈ @  Ä *¯?d PX‹@ @  Äà +¯?d X‹áüCú @  ÄÄ ,¯?d ÐX‹cmT$ @  ÄÅ -¯?d Y‹ÁË5k @  ÄÆ .¯?d PY‹CZ"µ @  ÄÇ /¯?d Y‹ßP @  ÄÈ 0¯?d ÐY‹–NGÛ @  ÄÉ 1¯?d Z‹yä ½ @  ÄÊ 2¯?d PZ‹ûuc @  ÄË 3¯?d Z‹ZKJ @  ÄÌ 4¯?d ÐZ‹ØÚ]Q @  ÄÍ 5¯?d [‹z|< @  ÄÎ 6¯?d P[‹øí+À @  ÄÏ 7¯?d [‹g™| @  ÄÐ 8¯?d Ð[‹å¢ @  ÄÑ 9¯?d \‹ލ  @  ÄÒ :¯?d P\‹ 9Ô @  ÄÓ ;¯?d \‹­L8 @  ÄÔ <¯?d Ð\‹/–[æ @  ÄÕ =¯?d ]‹0:© @  ÄÖ >¯?d P]‹¡-w @  Ä× ?¯?d ]‹5Ãs  @  ÄØ @¯?d Ð]‹·RdÔ @  ÄÙ A¯?d ^‹Xø)² @  ÄÚ B¯?d P^‹Úi>l @  ÄÛ C¯?d ^‹{Wi€ @  ÄÜ D¯?d Ð^‹ùÆ~^ @  ÄÝ E¯?d _‹[` @  ÄÞ F¯?d P_‹ÙñÏ @  Äß G¯?d _‹WƒÃ @  ÄuÐ`‹à H¯?d Ð_‹ìÕÊÈ @  ÄáI¯?d (`‹ Ã’÷ @  ÄâJ¯?d€ h`‹Ö‘™ @  ÅK¯?d ¨`‹–î†J @  ÅL¯?d è`‹‘” @  ÅM¯?d (a‹s 6 @  ÅN¯?d ha‹ñè @  ÅO¯?d ¨a‹h61" @  ÅP¯?d èa‹ê§&ü @  ÅQ¯?d (b‹Ë¿4à @  ÅR¯?d hb‹I.#> @  Å S¯?d ¨b‹-Y? @  Å T¯?d èb‹¯È˜á @  Å U¯?d (c‹È'C @  Å V¯?d hc‹J¶ @  Å W¯?d ¨c‹¶ÑZ» @  ÅX¯?d èc‹4@Me @  ÅY¯?d (d‹<ó2W @  ÅZ¯?d hd‹¾b%‰ @  Å[¯?d ¨d‹Ú‰ˆ @  Å\¯?d èd‹X„žV @  Å]¯?d (e‹?kô @  Å^¯?d he‹½ú* @  Å_¯?d ¨e‹¹z< @  Å`¯?d èe‹;ëâ @  Åa¯?d (f‹óþ @  Åb¯?d hf‹˜b  @  Åc¯?d ¨f‹ü¹! @  Åd¯?d èf‹~„®ÿ @  Åe¯?d (g‹k4] @  Åf¯?d hg‹›ú#ƒ @  Åg¯?d ¨g‹gl¥ @  Åh¯?d èg‹å {{ @  Åi¯?d (h‹Ñ\ë @  Å j¯?d hh‹S™K5 @  Å!k¯?d ¨h‹7îç4 @  Å"l¯?d èh‹µðê @  Å#m¯?d (i‹ÒjH @  Å$n¯?d hi‹P}– @  Å%o¯?d ¨i‹É6P\ @  Å&p¯?d èi‹K§G‚ @  Å'q¯?d (j‹j¿Už @  Å(r¯?d hj‹è.B@ @  Å)s¯?d ¨j‹ŒYîA @  Å*t¯?d èj‹ÈùŸ @  Å+u¯?d (k‹i'c= @  Å,v¯?d hk‹ë¶tã @  Å-w¯?d ¨k‹Ñ;Å @  Å.x¯?d èk‹•@, @  Å/y¯?d (l‹óS) @  Å0z¯?d hl‹bD÷ @  Å1{¯?d ¨l‹{èö @  Å2|¯?d èl‹ù„ÿ( @  Å3}¯?d (m‹žkeŠ @  Å4~¯?d hm‹úrT @  Å5¯?d ¨m‹õì'Á @  Å6€¯?d èm‹w}0 @  Å7¯?d (n‹Ve" @  Å8‚¯?d hn‹Ôô5Ý @  Å9ƒ¯?d ¨n‹°ƒ™Ü @  Å:„¯?d èn‹2Ž @  Å;…¯?d (o‹Uý  @  Å<†¯?d ho‹×l~ @  Å=‡¯?d ¨o‹+ LX @  Å>ˆ¯?d èo‹©š[† @  Å?‰¯?d (p‹¹¸J+ @  Å@Н?d hp‹;)]õ @  ÅA‹¯?d ¨p‹_^ñô @  ÅBŒ¯?d èp‹ÝÏæ* @  ÅC¯?d (q‹º |ˆ @  ÅDޝ?d hq‹8±kV @  ÅE¯?d ¨q‹¡†Fœ @  ÅF¯?d èq‹#QB @  ÅG‘¯?d (r‹C^ @  ÅH’¯?d hr‹€žT€ @  ÅI“¯?d ¨r‹äéø @  ÅJ”¯?d èr‹fxï_ @  ÅK•¯?d (s‹—uý @  ÅL–¯?d hs‹ƒb# @  ÅM—¯?d ¨s‹a- @  ÅN˜¯?d ès‹ýð:Û @  ÅO™¯?d (t‹õCEé @  ÅPš¯?d ht‹wÒR7 @  ÅQ›¯?d ¨t‹¥þ6 @  ÅRœ¯?d èt‹‘4éè @  ÅS¯?d (u‹öÛsJ @  ÅTž¯?d hu‹tJd” @  ÅUŸ¯?d ¨u‹pÊp‚ @  ÅV ¯?d èu‹ò[g\ @  ÅW¡¯?d (v‹ÓCu@ @  ÅX¢¯?d hv‹QÒbž @  ÅY£¯?d ¨v‹5¥ÎŸ @  ÅZ¤¯?d èv‹·4ÙA @  Å[¥¯?d (w‹ÐÛCã @  Å\¦¯?d hw‹RJT= @  Å]§¯?d ¨w‹®- @  Å^¨¯?d èw‹,¼ Å @  Å_©¯?d (x‹¸+U @  Å`ª¯?d hx‹š)<‹ @  Åa«¯?d ¨x‹þ^Š @  Åb¬¯?d èx‹|χT @  Åc­¯?d (y‹ ö @  Åd®¯?d hy‹™± ( @  Åe¯¯?d ¨y‹†'â @  Åf°¯?d èy‹‚0< @  Åg±¯?d (z‹£"  @  Åh²¯?d hz‹!ž5þ @  Åi³¯?d ¨z‹Eé™ÿ @  Åj´¯?d èz‹ÇxŽ! @  Åkµ¯?d ({‹ —ƒ @  Ål¶¯?d h{‹"] @  Åm·¯?d ¨{‹ÞaL{ @  Ån¸¯?d è{‹\ð[¥ @  Åo¹¯?d (|‹TC$— @  Åpº¯?d h|‹ÖÒ3I @  Åq»¯?d ¨|‹²¥ŸH @  År¼¯?d è|‹04ˆ– @  Ås½¯?d (}‹WÛ4 @  Åt¾¯?d h}‹ÕJê @  Åu¿¯?d ¨}‹!ší @  ÅvÀ¯?d è}‹£ 3 @  ÅwÁ¯?d (~‹‚/ @  Åx¯?d h~‹‚ñ @  Åyï?d ¨~‹dõºð @  Åzį?d è~‹æd­. @  Å{ů?d (‹‹7Œ @  Å|Ư?d h‹ R @  Å}ǯ?d ¨‹uЀ‹'ÿ}ot @  Å~ȯ?d è‹l Ö @  Å€ɯ?d @€‹#xtŒ @  Å€€ʯ?d €€‹vr @  Å€˯?d À€‹ÅžÏS @  Å‚€̯?d ‹ÖC» @  Åƒ€ͯ?d @‹ àB/ @  Å„€ί?d €‹@Ñ @  Å…€ϯ?d À‹;Fx; @  Å†€Я?d ‚‹¦Øú @  Å‡€ѯ?d @‚‹˜Ï}ù @  Åˆ€Ò¯?d €‚‹¸: @  Å‰€Ó¯?d À‚‹~)Æ& @  ÅŠ€Ô¯?d ƒ‹®aJÎ @  Å‹€Õ¯?d @ƒ‹›WKZ @  ÅŒ€Ö¯?d €ƒ‹»¢I¤ @  Å€ׯ?d Àƒ‹å¡¢ @  ÅŽ€د?d „‹üïà­ @  Å€Ù¯?d @„‹oƒ{N @  Å€Ú¯?d €„‹Ovy° @  Å‘€Û¯?d À„‹‰eÀ‘ @  Å’€ܯ?d …‹Y-Ly @  Å“€ݯ?d @…‹lMí @  Å”€Þ¯?d €…‹LîO @  Å•€߯?d À…‹ê N% @  Å–€à¯?d †‹wNîä @  Å—€á¯?d @†‹IƒKç @  Å˜€â¯?d €†‹ivI @  Å™€ã¯?d À†‹¯eð8 @  Åš€ä¯?d ‡‹-|Ð @  Å›€å¯?d @‡‹J}D @  Åœ€æ¯?d €‡‹jîº @  Å€ç¯?d À‡‹4í%¼ @  Åž€è¯?d ˆ‹©¡ @  ÅŸ€é¯?d @ˆ‹‚xò @  Å €ê¯?d €ˆ‹¢  @  Å¡€ë¯?d Àˆ‹dž®- @  Å¢€ì¯?d ‰‹´Ö"Å @  Å£€í¯?d @‰‹à#Q @  Å¤€î¯?d €‰‹¡!¯ @  Å¥€ï¯?d À‰‹šFE @  Å¦€ð¯?d Š‹¹„ @  Å§€ñ¯?d @Š‹9χ @  Å¨€ò¯?d €Š‹:y @  Å©€ó¯?d ÀŠ‹ß)§X @  Åª€ô¯?d ‹‹a+° @  Å«€õ¯?d @‹‹:W*$ @  Å¬€ö¯?d €‹‹¢(Ú @  Å­€÷¯?d À‹‹D¡rÜ @  Å®€ø¯?d Œ‹]ïÓ @  Å¯€ù¯?d @Œ‹΃0 @  Å°€ú¯?d €Œ‹îvÎ @  Å±€û¯?d ÀŒ‹(e¡ï @  Å²€ü¯?d ‹ø-- @  Å³€ý¯?d @‹Í,“ @  Å´€þ¯?d €‹íî.m @  Åµ€ÿ¯?d À‹ ~d @  Å¶€°?d Ž‹½:½¥ @  Å·€°?d @Ž‹ƒ÷¦ @  Å¸€°?d €Ž‹£X @  Å¹€°?d ÀŽ‹e£y @  Åº€°?d ‹µY/‘ @  Å»€°?d @‹€o. @  Å¼€°?d €‹ š,û @  Å½€°?d À‹þ™vý @  Å¾€°?d ‹@GÊO @  Å¿€ °?d @‹l*pŽ @  ÅÀ€ °?d €‹Lßrp @  ÅÁ€ °?d À‹ŠÌËQ @  Å€ °?d ‘‹Z„G¹ @  ÅÀ °?d @‘‹o²F- @  ÅÄ€°?d €‘‹OGDÓ @  ÅÅ€°?d À‘‹t|9 @  ÅÆ€°?d ’‹éPÜø @  ÅÇ€°?d @’‹×yû @  ÅÈ€°?d €’‹÷h{ @  ÅÉ€°?d À’‹1{Â$ @  ÅÊ€°?d “‹á3NÌ @  ÅË€°?d @“‹ÔOX @  ÅÌ€°?d €“‹ôðM¦ @  ÅÍ€°?d À“‹ªó  @  Å΀°?d ”‹³½ä¯ @  ÅÏ€°?d @”‹ ÑL @  ÅЀ°?d €”‹$}² @  ÅÑ€°?d À”‹Æ7Ä“ @  ÅÒ€°?d •‹H{ @  ÅÓ€°?d @•‹#IIï @  ÅÔ€°?d €•‹¼K @  ÅÕ€°?d À•‹¥XJ' @  ÅÖ€ °?d –‹8êæ @  Å×€!°?d @–‹ÑOå @  ÅØ€"°?d €–‹&$M @  ÅÙ€#°?d À–‹à7ô: @  ÅÚ€$°?d —‹0xÒ @  ÅÛ€%°?d @—‹IyF @  ÅÜ€&°?d €—‹%¼{¸ @  ÅÝ€'°?d À—‹{¿!¾ @  ÅÞ€(°?d ˜‹O@­£ @  Å߀)°?d @˜‹Í*ð @  Åà€*°?d €˜‹íß @  Åá€+°?d À˜‹+̪/ @  Åâ€,°?d€ ™‹:ÃÑÇ @  Æ€-°?d @™‹î´˜z @  Æ€.°?d €™‹ÎAš„ @  Æ€/°?d À™‹0[Yƒ @  Æ€0°?d š‹­ùB @  Æ€1°?d @š‹]`; @  Æ€2°?d €š‹}•Å @  Æ€3°?d Àš‹u4çž @  Æ€4°?d ›‹¥|kv @  Æ €5°?d @›‹U‘ @  Æ €6°?d €›‹uö“ñ @  Æ €7°?d À›‹î¼2 @  Æ €8°?d œ‹÷òÁ @  Æ €9°?d @œ‹;l @  Æ€:°?d €œ‹'x9’ @  Æ€;°?d Àœ‹‚xá) @  Æ€<°?d ‹R0mÁ @  Æ€=°?d @‹¢O—¸ @  Æ€>°?d €‹‚º•F @  Æ€?°?d À‹GzŒ @  Æ€@°?d ž‹ŒÚM @  Æ€A°?d @ž‹|| 4 @  Æ€B°?d €ž‹\‰"Ê @  Æ€C°?d Àž‹T(Ä‘ @  Æ€D°?d Ÿ‹„`Hy @  Æ€E°?d @Ÿ‹t² @  Æ€F°?d €Ÿ‹Tê°þ @  Æ€G°uР‹?d ÀŸ‹Ï  @  Æ€H°?d  ‹Ã+¼ @  ÆI°?d X ‹3TFv @  ÆJ°?d ˜ ‹¡Dˆ @  ÆK°?d Ø ‹§§»ƒ @  Æ L°?d ¡‹wï7k @  Æ!M°?d X¡‹‡Í @  Æ"N°?d ˜¡‹§eÏì @  Æ#O°?d Ø¡‹Y ë @  Æ$P°?d ¢‹Ä;¬* @  Æ%Q°?d X¢‹4DVS @  Æ&R°?d ˜¢‹±T­ @  Æ'S°?d Ø¢‹²ö @  Æ(T°?d £‹ÌX> @  Æ)U°?d X£‹<'Äg @  Æ*V°?d ˜£‹ÒÆ™ @  Æ+W°?d Ø£‹‡˜gr @  Æ,X°?d ¤‹žÖ”} @  Æ-Y°?d X¤‹n©n @  Æ.Z°?d ˜¤‹N\lú @  Æ/[°?d ؤ‹ë\´A @  Æ0\°?d ¥‹;8© @  Æ1]°?d X¥‹ËkÂÐ @  Æ2^°?d ˜¥‹ëžÀ. @  Æ3_°?d Ø¥‹ˆ3:õ @  Æ4`°?d ¦‹wš4 @  Æ5a°?d X¦‹å`M @  Æ6b°?d ˜¦‹Åýb³ @  Æ7c°?d ئ‹Í\„è @  Æ8d°?d §‹ @  Æ9e°?d X§‹íkòy @  Æ:f°?d ˜§‹Ížð‡ @  Æ;g°?d ا‹VÔQl @  Æ<h°?d ¨‹b+Ýq @  Æ=i°?d X¨‹’T' @  Æ>j°?d ˜¨‹²¡%ö @  Æ?k°?d ب‹¨ Üo @  Æ@l°?d ©‹xèP‡ @  ÆAm°?d X©‹ˆ—ªþ @  ÆBn°?d ˜©‹¨b¨ @  ÆCo°?d Ø©‹Vxk @  ÆDp°?d ª‹Ë<ËÆ @  ÆEq°?d Xª‹;C1¿ @  ÆFr°?d ˜ª‹¶3A @  ÆGs°?d ت‹Õ @  ÆHt°?d «‹Ã_Yò @  ÆIu°?d X«‹3 £‹ @  ÆJv°?d ˜«‹Õ¡u @  ÆKw°?d Ø«‹ˆŸž @  ÆLx°?d ¬‹‘Ñó‘ @  ÆMy°?d X¬‹a® è @  ÆNz°?d ˜¬‹A[  @  ÆO{°?d ج‹ä[Ó­ @  ÆP|°?d ­‹4_E @  ÆQ}°?d X­‹Äl¥< @  ÆR~°?d ˜­‹ä™§Â @  ÆS°?d Ø­‹j¢š @  ÆT€°?d ®‹÷æ¼[ @  ÆU°?d X®‹™F" @  ÆV‚°?d ˜®‹'lDÜ @  ÆWƒ°?d Ø®‹/Í¢‡ @  ÆX„°?d ¯‹ÿ….o @  ÆY…°?d X¯‹úÔ @  ÆZ†°?d ˜¯‹/Öè @  Æ[‡°?d د‹´Ew @  Æ\ˆ°?d °‹ ›Ë± @  Æ]‰°?d X°‹úä1È @  Æ^а?d ˜°‹Ú36 @  Æ_‹°?d ذ‹nÌ= @  Æ`Œ°?d ±‹¾_@Õ @  Æa°?d X±‹N º¬ @  Æbް?d ˜±‹nÕ¸R @  Æc°?d ر‹Ï{U @  Æd°?d ²‹ ‹Û” @  Æe‘°?d X²‹ýô!í @  Æf’°?d ˜²‹Ý# @  Æg“°?d ز‹Õ ÅH @  Æh”°?d ³‹èI  @  Æi•°?d X³‹õ—³Ù @  Æj–°?d ˜³‹Õb±' @  Æk—°?d س‹N(Ì @  Æl˜°?d ´‹Wfãà @  Æm™°?d X´‹§º @  Ænš°?d ˜´‹‡ìD @  Æo›°?d Ø´‹"ìÃÿ @  Æpœ°?d µ‹ò¤O @  Æq°?d Xµ‹Ûµn @  Ærž°?d ˜µ‹".· @  ÆsŸ°?d ص‹AƒMK @  Æt °?d ¶‹ÜÇíŠ @  Æu¡°?d X¶‹,¸ó @  Æv¢°?d ˜¶‹ M  @  Æw£°?d ض‹ìóV @  Æx¤°?d ·‹Ô¤¾ @  Æy¥°?d X·‹$Û…Ç @  Æz¦°?d ˜·‹.‡9 @  Æ{§°?d Ø·‹Ÿd&Ò @  Æ|¨°?d ¸‹«›ªÏ @  Æ}©°?d X¸‹[äP¶ @  Æ~ª°?d ˜¸‹{RH @  Æ«°?d ظ‹‚F›à @  Æ€¬°?d ¹‹R @  Æ­°?d X¹‹¢qíq @  Æ‚®°?d ˜¹‹‚„ï @  Æƒ¯°?d ع‹|ž,ˆ @  Æ„°°?d º‹áÚŒI @  Æ…±°?d Xº‹¥v0 @  Æ†²°?d ˜º‹1PtÎ @  Æ‡³°?d غ‹9ñ’• @  Æˆ´°?d »‹é¹} @  Æ‰µ°?d X»‹Æä @  ÆŠ¶°?d ˜»‹93æú @  Æ‹·°?d Ø»‹¢yG @  ÆŒ¸°?d ¼‹»7´ @  Æ¹°?d X¼‹KHNg @  ÆŽº°?d ˜¼‹k½L™ @  Æ»°?d ؼ‹ν”" @  Æ¼°?d ½‹õÊ @  Æ‘½°?d X½‹îŠâ³ @  Æ’¾°?d ˜½‹ÎàM @  Æ“¿°?d ؽ‹]‚‡ @  Æ”À°?d ¾‹ÀƯF @  Æ•Á°?d X¾‹0¹U? @  Æ–°?d ˜¾‹LWÁ @  Æ—ð?d ؾ‹í±š @  Æ˜İ?d ¿‹È¥=r @  Æ™Ű?d X¿‹8ÚÇ  @  Æšư?d ˜¿‹/Åõ @uÐÀ‹  Æ›ǰ?d Ø¿‹ƒed @  ÆœȰ?d 0À‹ç•5L @  Æɰ?d pÀ‹êÏ5 @  Æžʰ?d °À‹7ÍË @  ÆŸ˰?d ðÀ‹ƒ2À @  Æ ̰?d 0Á‹SQ¾( @  Æ¡Ͱ?d pÁ‹£.DQ @  Æ¢ΰ?d °Á‹ƒÛF¯ @  Æ£ϰ?d ðÁ‹}Á…¨ @  Æ¤а?d 0‹à…%i @  Æ¥Ѱ?d p‹úß @  Æ¦Ò°?d °Â‹0Ýî @  Æ§Ó°?d ð‹8®;µ @  Æ¨Ô°?d 0Ëèæ·] @  Æ©Õ°?d pË™M$ @  ÆªÖ°?d °Ã‹8lOÚ @  Æ«×°?d ðË£&î1 @  Æ¬ذ?d 0Ä‹ºh> @  Æ­Ù°?d pÄ‹JçG @  Æ®Ú°?d °Ä‹jâå¹ @  Æ¯Û°?d ðÄ‹Ïâ= @  Æ°ܰ?d 0Å‹ª±ê @  Æ±ݰ?d pÅ‹ïÕK“ @  Æ²Þ°?d °Å‹Ï Im @  Æ³ß°?d ðÅ‹¬³¶ @  Æ´à°?d 0Æ‹1Éw @  Æµá°?d pÆ‹Á¶é @  Æ¶â°?d °Æ‹áCëð @  Æ·ã°?d ðÆ‹éâ « @  Æ¸ä°?d 0Ç‹9ªC @  Æ¹å°?d pÇ‹ÉÕ{: @  Æºæ°?d °Ç‹é yÄ @  Æ»ç°?d ðÇ‹rjØ/ @  Æ¼è°?d 0È‹F•T2 @  Æ½é°?d pÈ‹¶ê®K @  Æ¾ê°?d °È‹–¬µ @  Æ¿ë°?d ðÈ‹ŒU, @  ÆÀì°?d 0É‹\VÙÄ @  ÆÁí°?d pÉ‹¬)#½ @  ÆÂî°?d °É‹ŒÜ!C @  ÆÃï°?d ðÉ‹rÆâD @  ÆÄð°?d 0Ê‹ï‚B… @  ÆÅñ°?d pÊ‹ý¸ü @  ÆÆò°?d °Ê‹?º @  ÆÇó°?d ðÊ‹7©\Y @  ÆÈô°?d 0Ë‹çáб @  ÆÉõ°?d pË‹ž*È @  ÆÊö°?d °Ë‹7k(6 @  ÆË÷°?d ðË‹¬!‰Ý @  ÆÌø°?d 0Ì‹µozÒ @  ÆÍù°?d pÌ‹E€« @  ÆÎú°?d °Ì‹eå‚U @  ÆÏû°?d ðÌ‹ÀåZî @  ÆÐü°?d 0Í‹­Ö @  ÆÑý°?d pÍ‹àÒ, @  ÆÒþ°?d °Í‹À'. @  ÆÓÿ°?d ðÍ‹1{ÀÕ @  ÆÔ±?d 0΋¬?` @  ÆÕ±?d p΋\@šm @  ÆÖ±?d °Î‹|µ˜“ @  Æ×±?d ð΋t~È @  ÆØ±?d 0Ï‹¤\ò  @  ÆÙ±?d pÏ‹T#Y @  ÆÚ±?d °Ï‹tÖ § @  ÆÛ±?d ðÏ‹L @  ÆÜ±?d 0ЋQBþ @  ÆÝ ±?d pЋ¡=í‡ @  ÆÞ ±?d °Ð‹Èïy @  Æß ±?d ðЋ5Îr @  Æà ±?d 0Ñ‹农š @  Æá ±?d pÑ‹ùfã @  Æâ±?d€ °Ñ‹AÏx» @  Ç±?d ðÑ‹^”ó• @  Ç±?d 0Ò‹ÃÐST @  Ç±?d pÒ‹öæRÀ @  Ç±?d °Ò‹ÖP> @  Ç±?d ðÒ‹é @  Ç±?d 0Ó‹ÀHe÷ @  Ç±?d pÓ‹þ…Àô @  Ç±?d °Ó‹Þp  @  Ç ±?d ðÓ‹€s˜  @  Ç ±?d 0Ô‹™=k @  Ç ±?d pÔ‹¬ j— @  Ç ±?d °Ô‹Œþhi @  Ç ±?d ðÔ‹JíÑH @  Ç±?d 0Õ‹š¥]  @  Ç±?d pÕ‹ ÉÆC @  Ç±?d °Õ‹)<Ľ @  Ç±?d ðÕ‹ØÅ‹ @  Ç ±?d 0Ö‹œeJ @  Ç!±?d pÖ‹'ªdÞ @  Ç"±?d °Ö‹_f  @  Ç#±?d ðÖ‹ÁLß @  Ç$±?d 0׋Sé @  Ç%±?d p׋/Éöê @  Ç&±?d °×‹<ô @  Ç'±?d ð׋Q?® @  Ç(±?d 0Ø‹eÀ" @  Ç)±?d pØ‹Pö#› @  Ç*±?d °Ø‹p!e @  Ç+±?d ðØ‹¶˜D @  Ç,±?d 0Ù‹fX¬ @  Ç-±?d pÙ‹ä2¨ÿ @  Ç .±?d °Ù‹ÄǪ @  Ç!/±?d ðÙ‹ÿ”’ë @  Ç"0±?d 0Ú‹bÐ2* @  Ç#1±?d pÚ‹Wæ3¾ @  Ç$2±?d °Ú‹w1@ @  Ç%3±?d ðÚ‹±ˆa @  Ç&4±?d 0Û‹aH‰ @  Ç'5±?d pÛ‹_…¡Š @  Ç(6±?d °Û‹p£t @  Ç)7±?d ðÛ‹!sùr @  Ç*8±?d 0Ü‹8= } @  Ç+9±?d pÜ‹ é @  Ç,:±?d °Ü‹-þ  @  Ç-;±?d ðÜ‹ëí°6 @  Ç.<±?d 0Ý‹;¥<Þ @  Ç/=±?d pÝ‹¨É§= @  Ç0>±?d °Ý‹ˆ<¥Ã @  Ç1?±?d ð݋ވ±ä @  Ç2@±?d 0Þ‹CÌ% @  Ç3A±?d pÞ‹vú± @  Ç4B±?d °Þ‹VO @  Ç5C±?d ðÞ‹«n @  Ç6D±?d 0ß‹@T'† @  Ç7E±?d pß‹~™‚… @  Ç8F±?d uÐà‹/°ß‹^l€{ @  Ç9G±?d ðß‹oÚ} @  Ç:H±?d Hà‹Ë„‹ @  Ç;I±?d ˆà‹Ž™? @  Ç<J±?d Èà‹ ‡á @  Ç=K±?d ዘ¥ö @  Ç>L±?d Há‹S²( @  Ç?M±?d ˆá‹”ZÉ @  Ç@N±?d Èá‹Ë  @  ÇAO±?d â‹2M…â @  ÇBP±?d Hâ‹°Ü’< @  ÇCQ±?d ˆâ‹'ކˆ @  ÇDR±?d Èâ‹¥‘V @  ÇES±?d ã‹1Õ³A @  ÇFT±?d H㋳D¤Ÿ @  ÇGU±?d ˆã‹/í¼ @  ÇHV±?d Èã‹­|b @  ÇIW±?d ä‹h ½µ @  ÇJX±?d Hä‹ê1ªk @  ÇKY±?d ˆä‹}c¾ß @  ÇLZ±?d Èä‹ÿò© @  ÇM[±?d å‹k8‹ @  ÇN\±?d Hå‹驜È @  ÇO]±?d ˆå‹Ø¡  @  ÇP^±?d Èå‹Z0Õ @  ÇQ_±?d æ‹ã³ü @  ÇR`±?d Hæ‹a¤" @  ÇSa±?d ˆæ‹ö°– @  ÇTb±?d Èæ‹tS§H @  ÇUc±?d ç‹à™…_ @  ÇVd±?d Hç‹b’ @  ÇWe±?d ˆç‹þ¡"¢ @  ÇXf±?d Èç‹|05| @  ÇYg±?d è‹”]ô¹ @  ÇZh±?d Hè‹Ìãg @  Ç[i±?d ˆè‹ž÷Ó @  Ç\j±?d Èè‹à  @  Ç]k±?d é‹—Å @  Ç^l±?d Hé‹TÕÄ @  Ç_m±?d ˆé‹5Z|· @  Ç`n±?d Èé‹·Ëki @  Çao±?d ê‹“Mäœ @  Çbp±?d Hê‹ÜóB @  Çcq±?d ˆê‹†Žçö @  Çdr±?d Èê‹ð( @  Çes±?d ë‹ÕÒ? @  Çft±?d Hë‹DÅá @  Çgu±?d ˆë‹Žíu @  Çhv±?d Èë‹ |b @  Çiw±?d ì‹É ÜË @  Çjx±?d Hì‹K1Ë @  Çky±?d ˆì‹Ücß¡ @  Çlz±?d Èì‹^òÈ @  Çm{±?d í‹Ê8êh @  Çn|±?d Hí‹H©ý¶ @  Ço}±?d ˆí‹y¡su @  Çp~±?d Èí‹û0d« @  Çq±?d —“ @  Çr€±?d Hî‹-„ß @  Çs±?d ˆî‹ºTk @  Çt‚±?d Èî‹8ҵ @  Çuƒ±?d ¥¢ @  Çv„±?d Hï‹.ž²| @  Çw…±?d ˆï‹²7_ @  Çx†±?d Èï‹0¦ @  Çy‡±?d ð‹Rêäë @  Çzˆ±?d Hð‹Ð{ó5 @  Ç{‰±?d ˆð‹G)ç @  Ç|б?d Èð‹Ÿð_ @  Ç}‹±?d ñ‹QrÒH @  Ç~Œ±?d Hñ‹ÓãÅ– @  Ç±?d ˆñ‹¾¼ZF @  Ç€ޱ?d Èñ‹<-M˜ @  Ç±?d ò‹«Âm @  Ç‚±?d Hò‹š:Õ³ @  Çƒ‘±?d ˆò‹ hÁ @  Ç„’±?d Èò‹ùÖÙ @  Ç…“±?d ó‹3ôÎ @  Ç†”±?d H󋙢ã @  Ç‡•±?d ˆó‹ S3 @  Çˆ–±?d È󋇚Dí @  Ç‰—±?d ô‹BFú: @  ÇŠ˜±?d Hô‹À×íä @  Ç‹™±?d ˆô‹W…ùP @  ÇŒš±?d Èô‹ÕîŽ @  Ç›±?d õ‹AÞÌ™ @  ÇŽœ±?d Hõ‹ÃOÛG @  Ç±?d ˆõ‹òGU„ @  Çž±?d Èõ‹pÖBZ @  Ç‘Ÿ±?d ö‹Éçôs @  Ç’ ±?d Hö‹Kvã­ @  Ç“¡±?d ˆö‹Ü$÷ @  Ç”¢±?d Èö‹^µàÇ @  Ç•£±?d ÷‹ÊÂÐ @  Ç–¤±?d H÷‹HîÕ @  Ç—¥±?d ˆ÷‹ÔGe- @  Ç˜¦±?d È÷‹VÖró @  Ç™§±?d ø‹¾»³6 @  Çš¨±?d Hø‹<*¤è @  Ç›©±?d ˆø‹«x°\ @  Çœª±?d Èø‹)é§‚ @  Ç«±?d ù‹½#…• @  Çž¬±?d Hù‹?²’K @  ÇŸ­±?d ˆù‹¼;8 @  Ç ®±?d Èù‹-,æ @  Ç¡¯±?d ú‹¹«£ @  Ç¢°±?d Hú‹;:´Í @  Ç£±±?d ˆú‹¬h y @  Ç¤²±?d Èú‹.ù·§ @  Ç¥³±?d û‹º3•° @  Ç¦´±?d Hû‹8¢‚n @  Ç§µ±?d ˆû‹¤ 2M @  Ç¨¶±?d Èû‹&š%“ @  Ç©·±?d ü‹ãF›D @  Çª¸±?d Hü‹a׌š @  Ç«¹±?d ˆü‹ö…˜. @  Ç¬º±?d Èü‹tð @  Ç­»±?d ý‹àÞ­ç @  Ç®¼±?d Hý‹bOº9 @  Ç¯½±?d ˆý‹SG4ú @  Ç°¾±?d Èý‹ÑÖ#$ @  Ç±¿±?d þ‹˜·€ @  Ç²À±?d Hþ‹&— @  Ç³Á±?d ˆþ‹tƒv @  Ç´±?d Èþ‹唨 @  Çµñ?d ÿ‹›/¶¿ @  Ç¶ı?d Hÿ‹¾¡a @  Ç·ű?d ˆÿ‹…B @  Ç¸uÐŒƱ?d Èÿ‹zuà @  Ç¹€DZ?d Œ“R*¦ @  Çº€ȱ?d `ŒÃ=x @  Ç»€ɱ?d  Œ†‘)Ì @  Ç¼€ʱ?d àŒ> @  Ç½€˱?d ŒÊ @  Ç¾€̱?d `Œ[ Û @  Ç¿€ͱ?d  ŒœR¤: @  ÇÀ€α?d àŒóä @  ÇÁ€ϱ?d Œ:E< @  Ç€б?d `Œ¸Ô+Ï @  ÇÀѱ?d  Œ/†?{ @  ÇÄ€Ò±?d àŒ­(¥ @  ÇÅ€Ó±?d Œ9Ý ² @  ÇÆ€Ô±?d `Œ»Ll @  ÇÇ€Õ±?d  Œ'å­O @  ÇÈ€Ö±?d àŒ¥tº‘ @  ÇÉ€×±?d Œ`¨F @  ÇÊ€ر?d `Œâ9˜ @  ÇË€Ù±?d  Œuk, @  ÇÌ€Ú±?d àŒ÷úò @  ÇÍ€Û±?d Œc02å @  Ç΀ܱ?d `Œá¡%; @  ÇÏ€ݱ?d  ŒЩ«ø @  ÇЀÞ±?d àŒR8¼& @  Çр߱?d Œë  @  ÇÒ€à±?d `Œi˜Ñ @  ÇÓ€á±?d  ŒþÊ e @  ÇÔ€â±?d àŒ|[» @  ÇÕ€ã±?d Œè‘<¬ @  ÇÖ€ä±?d `Œj+r @  Ç×€å±?d  Œö©›Q @  ÇØ€æ±?d àŒt8Œ @  ÇÙ€ç±?d ŒœUMJ @  ÇÚ€è±?d `ŒÄZ” @  ÇÛ€é±?d  Œ‰–N  @  ÇÜ€ê±?d àŒ Yþ @  ÇÝ€ë±?d ŒŸÍ{é @  ÇÞ€ì±?d ` Œ\l7 @  Ç߀í±?d   Œ=RÅD @  Çà€î±?d à Œ¿ÃÒš @  Çá€ï±?d Œ›E]o @  Çâ€ð±?d€ ` Œ1N^ã @  È€ñ±?d   ŒG]~ @  È€ò±?d à ŒÅÌ  @  È€ó±?d Œ”OÌZ @  È€ô±?d ` ŒÞÛ„ @  È€õ±?d   ŒDÅ4Ý @  È€ö±?d à ŒÆT# @  È€÷±?d ŒÍ:® @  È€ø±?d ` ŒO«Õp @  È €ù±?d   Œ°:) @  È €ú±?d à ŒŸ!-÷ @  È €û±?d Œ΢ô  @  È €ü±?d ` ŒL3ãÓ @  È €ý±?d   Œ( Š @  È€þ±?d à Œœ¹T @  È€ÿ±?d ŒfHíM @  È€²?d `ŒäÙú“ @  È€²?d  Œ¶ÂÊ @  È€²?d àŒ4S @  È€²?d ŒeÐÛî @  È€²?d `ŒçAÌ0 @  È€²?d  ŒµZ#i @  È€²?d àŒ7Ë4· @  È€²?d Œ›5š§ @  È€²?d `Œ¤y @  È€ ²?d  ŒK¿b  @  È€ ²?d àŒÉ.uþ @  È€ ²?d Œ˜­¬ @  È€ ²?d `Œ<»Ú @  È€ ²?d  ŒH'Tƒ @  È€²?d àŒʶC] @  È€²?d Œœ%Š‚ @  È €²?d `Œ´\ @  È!€²?d  ŒL¯r @  È"€²?d àŒÎ>eÛ @  È#€²?d ŒŸ½¼! @  È$€²?d `Œ,«ÿ @  È%€²?d  ŒO7D¦ @  È&€²?d àŒͦSx @  È'€²?d ŒÆÈ²Õ @  È(€²?d `ŒDY¥  @  È)€²?d  ŒBJR @  È*€²?d àŒ”Ó]Œ @  È+€²?d ŒÅP„v @  È,€²?d `ŒGÁ“¨ @  È-€²?d  ŒÚ|ñ @  È.€²?d àŒ—Kk/ @  È/€²?d ŒMi¼œ @  È0€ ²?d `ŒÏø«B @  È1€!²?d  ŒãD @  È2€"²?d àŒrSÅ @  È3€#²?d ŒNñŠ? @  È4€$²?d `ŒÌ`á @  È5€%²?d  Œž{r¸ @  È6€&²?d àŒêef @  È7€'²?d Œ:5ûÙ @  È8€(²?d `Œ¸¤ì @  È9€)²?d  Œê¿^ @  È:€*²?d àŒh.€ @  È;€+²?d Œ9­Íz @  È<€,²?d `Œ»<Ú¤ @  È=€-²?d  Œé'5ý @  È>€.²?d àŒk¶"# @  È?€/²?d Œ“"ín @  È@€0²?d `Œ³ú° @  ÈA€1²?d  ŒC¨é @  ÈB€2²?d àŒÁ97 @  ÈC€3²?d ŒºÛÍ @  ÈD€4²?d `Œ+Ì @  ÈE€5²?d  Œ@0#J @  ÈF€6²?d àŒ¡4” @  ÈG€7²?d ŒÉÏÕ9 @  ÈH€8²?d `ŒK^Âç @  ÈI€9²?d  ŒE-¾ @  ÈJ€:²?d àŒ›Ô:` @  ÈK€;²?d ŒÊWãš @  ÈL€<²?d `ŒHÆôD @  ÈM€=²?d  ŒÝ @  ÈN€>²?d àŒ˜L à @  ÈO€?²?d Œ²>Îa @  ÈP€@²?d `Œ0¯Ù¿ @  ÈQ€A²?d  Œb´6æ @  ÈR€B²?d àŒà%!8 @  ÈS€C²?d Œ±¦øÂ @  ÈT€D²?d `Œ37ï @  ÈU€E²?d  Œa,EuÐ Œ @  ÈV€F²?d àŒž=dç @  ÈWG²?d 8 Œý¨# @  ÈXH²?d x Œ‡¿ý @  ÈYI²?d ¸ Œ-œP¤ @  ÈZJ²?d ø Œ¯ Gz @  È[K²?d 8!ŒþŽž€ @  È\L²?d x!Œ|‰^ @  È]M²?d ¸!Œ.f @  È^N²?d ø!Œ¬•qÙ @  È_O²?d 8"Œú¸ @  È`P²?d x"Œx—¯Ø @  ÈaQ²?d ¸"Œ*Œ@ @  ÈbR²?d ø"Œ¨W_ @  ÈcS²?d 8#ŒùžŽ¥ @  ÈdT²?d x#Œ{™{ @  ÈeU²?d ¸#Œ)v" @  ÈfV²?d ø#Œ«…aü @  ÈgW²?d 8$Œ ë€Q @  ÈhX²?d x$Œ"z— @  ÈiY²?d ¸$ŒpaxÖ @  ÈjZ²?d ø$Œòðo @  Èk[²?d 8%Œ£s¶ò @  Èl\²?d x%Œ!â¡, @  Èm]²?d ¸%ŒsùNu @  Èn^²?d ø%ŒñhY« @  Èo_²?d 8&Œ+JŽ @  Èp`²?d x&Œ©Û™Æ @  Èqa²?d ¸&ŒûÀvŸ @  Èrb²?d ø&ŒyQaA @  Èsc²?d 8'Œ(Ò¸» @  Ètd²?d x'ŒªC¯e @  Èue²?d ¸'ŒøX@< @  Èvf²?d ø'ŒzÉWâ @  Èwg²?d 8(Œ\É] @  Èxh²?d x(ŒÞ‡Þƒ @  Èyi²?d ¸(ŒŒœ1Ú @  Èzj²?d ø(Œ & @  È{k²?d 8)Œ_Žÿþ @  È|l²?d x)ŒÝè  @  È}m²?d ¸)Œy @  È~n²?d ø)Œ •§ @  Èo²?d 8*ŒWïÛ @  È€p²?d x*Œ”Æø @  Èq²?d ¸*ŒÆÝ\ @  È‚r²?d ø*ŒDL‚ @  Èƒs²?d 8+ŒÏÙx @  È„t²?d x+Œ—^Φ @  È…u²?d ¸+ŒÅE!ÿ @  È†v²?d ø+ŒGÔ6! @  È‡w²?d 8,ŒLº×Œ @  Èˆx²?d x,ŒÎ+ÀR @  È‰y²?d ¸,Œœ0/  @  ÈŠz²?d ø,Œ¡8Õ @  È‹{²?d 8-ŒO"á/ @  ÈŒ|²?d x-Œͳöñ @  È}²?d ¸-ŒŸ¨¨ @  ÈŽ~²?d ø-Œ9v @  È²?d 8.Œ*˜F @  È€²?d x.Œ¨˜ @  È‘²?d ¸.Œú`Á @  È’‚²?d ø.Œx–w @  È“ƒ²?d 8/Œ)®å @  È”„²?d x/Œ«„¹; @  È•…²?d ¸/ŒùŸVb @  È–†²?d ø/Œ{A¼ @  È—‡²?d 80Œ×ðï¬ @  È˜ˆ²?d x0ŒUaør @  È™‰²?d ¸0Œz+ @  Èšв?d ø0Œ…ëõ @  È›‹²?d 81ŒÔhÙ @  ÈœŒ²?d x1ŒVùÎÑ @  È²?d ¸1Œâ!ˆ @  Èž޲?d ø1Œ†s6V @  ÈŸ²?d 82ŒÐàÿ‰ @  È ²?d x2ŒRqèW @  È¡‘²?d ¸2Œj @  È¢’²?d ø2Œ‚ûÐ @  È£“²?d 83ŒÓxÉ* @  È¤”²?d x3ŒQéÞô @  È¥•²?d ¸3Œò1­ @  È¦–²?d ø3Œc&s @  È§—²?d 84ŒŠ ÇÞ @  È¨˜²?d x4ŒœÐ @  È©™²?d ¸4ŒZ‡?Y @  Èªš²?d ø4ŒØ(‡ @  È«›²?d 85ŒK<¨ @  È¬œ²?d x5ŒÉ­v @  È­²?d ¸5Œ›¶î/ @  È®ž²?d ø5Œ'ùñ @  È¯Ÿ²?d 86ŒÃ.B @  È° ²?d x6ŒA”9œ @  È±¡²?d ¸6ŒÖÅ @  È²¢²?d ø6Œ‘Á @  È³£²?d 87ŒÀá @  È´¤²?d x7ŒB ? @  Èµ¥²?d ¸7Œàf @  È¶¦²?d ø7Œ’†÷¸ @  È·§²?d 88Œ´Yi @  È¸¨²?d x8Œ6È~Ù @  È¹©²?d ¸8ŒdÓ‘€ @  Èºª²?d ø8ŒæB†^ @  È»«²?d 89Œ·Á_¤ @  È¼¬²?d x9Œ5PHz @  È½­²?d ¸9ŒgK§# @  È¾®²?d ø9ŒåÚ°ý @  È¿¯²?d 8:ŒN° @  ÈÀ°²?d x:ŒŸßhn @  ÈÁ±²?d ¸:ŒÍć7 @  È²²?d ø:ŒOUé @  Èó²?d 8;ŒÖI @  ÈÄ´²?d x;ŒœG^Í @  Èŵ²?d ¸;ŒÎ\±” @  Èƶ²?d ø;ŒLͦJ @  ÈÇ·²?d 8<ŒG£Gç @  Èȸ²?d x<ŒÅ2P9 @  Èɹ²?d ¸<Œ—)¿` @  Èʺ²?d ø<Œ¸¨¾ @  ÈË»²?d 8=ŒD;qD @  È̼²?d x=Œƪfš @  Èͽ²?d ¸=Œ”±‰Ã @  Èξ²?d ø=Œ ž @  ÈÏ¿²?d 8>ŒŒ¾ÃKa @  ÈÑÁ²?d ¸>Œìؤ8 @  ÈÒ²?d ø>ŒnI³æ @  ÈÓò?d 8?Œ?Êj @  ÈÔIJ?d x?Œ½[} @  ÈÕŲ?duÐ@Œ7 ¸?Œï@’› @  ÈÖƲ?d ø?Œ¯xb @  È×Dz?d P@Œ~ôÊ @  ÈØȲ?d @Œ^Èð @  ÈÙɲ?d Ð@Œ®~2‰ @  ÈÚʲ?d AŒ~6¾a @  ÈÛ˲?d PAŒ}lü­ @  ÈÜ̲?d AŒ]™þS @  ÈÝͲ?d ÐAŒ­æ* @  ÈÞβ?d BŒ0¢¤ë @  Èßϲ?d PBŒyäÚ+ @  Èàв?d BŒYØÕ @  ÈáѲ?d ÐBŒ©n"¬ @  ÈâÒ²?d€ CŒ å²â @  ÉÓ²?d PCŒïþ¸ @  ÉÔ²?d CŒÏ ºù @  ÉÕ²?d ÐCŒú=»m @  ÉÖ²?d DŒãsHb @  Éײ?d PDŒ½pd @  Éز?d DŒ…š @  ÉÙ²?d ÐDŒ£Hµ™ @  ÉÚ²?d EŒs9q @  É Û²?d PEŒµ€P @  É ܲ?d EŒ•æ‚® @  É ݲ?d ÐEŒ Ðƒ: @  É Þ²?d FŒ=”#û @  É ß²?d PFŒ›p"Í @  Éà²?d FŒ»… 3 @  Éá²?d ÐFŒ(é»Ð @  Éâ²?d GŒø¡78 @  Éã²?d PGŒ>²Ž @  Éä²?d GŒGŒç @  Éå²?d ÐGŒ+qs @  Éæ²?d HŒŽn @  Éç²?d PHŒA[h @  Éè²?d HŒaxY– @  Éé²?d ÐHŒ_µü• @  Éê²?d IŒýp} @  Éë²?d PIŒIîÉ\ @  Éì²?d IŒiË¢ @  Éí²?d ÐIŒ\-Ê6 @  Éî²?d JŒÁij÷ @  Éï²?d PJŒú:R @  Éð²?d JŒÚÏPã @  Éñ²?d ÐJŒX¥ì° @  É ò²?d KŒˆí`X @  É!ó²?d PKŒNþÙy @  É"ô²?d KŒn Û‡ @  É#õ²?d ÐKŒ[=Ú @  É$ö²?d LŒBs) @  É%÷²?d PLŒps @  É&ø²?d LŒ<…qä @  É'ù²?d ÐLŒHÔç @  É(ú²?d MŒÒX @  É)û²?d PMŒá. @  É*ü²?d MŒ4æãÐ @  É+ý²?d ÐMŒÐâD @  É,þ²?d NŒœ”B… @  É-ÿ²?d PNŒ¨W< @  É.³?d NŒˆtU @  É/³?d ÐNŒÎ! @  É0³?d OŒËPBÉ @  É1³?d POŒ Cûè @  É2³?d OŒ-¶ù @  É3³?d ÐOŒ€ø‚ @  É4³?d PŒ¦^D0 @  É5³?d PPŒø]6 @  É6³?d PŒبÈ @  É7 ³?d ÐPŒæe¹Ë @  É8 ³?d QŒ6-5# @  É9 ³?d PQŒð>Œ @  É: ³?d QŒÐËŽü @  É; ³?d ÐQŒåýh @  É<³?d RŒx¹/© @  É=³?d PRŒCêC @  É>³?d RŒc½ @  É?³?d ÐRŒOr¯| @  É@³?d SŒŸ:#” @  ÉA³?d PSŒY)šµ @  ÉB³?d SŒyܘK @  ÉC³?d ÐSŒLê™ß @  ÉD³?d TŒU¤jÐ @  ÉE³?d PTŒ §0Ö @  ÉF³?d TŒ+R2( @  ÉG³?d ÐTŒŸ—+ @  ÉH³?d UŒÅ×à @  ÉI³?d PUŒÄ¢â @  ÉJ³?d UŒ#1  @  ÉK³?d ÐUŒ¡ˆ @  ÉL³?d VŒ‹CI @  ÉM³?d PVŒ-§ @  ÉN ³?d VŒ R @  ÉO!³?d ÐVŒž>™b @  ÉP"³?d WŒNvŠ @  ÉQ#³?d PWŒˆe¬« @  ÉR$³?d WŒ¨®U @  ÉS%³?d ÐWŒ¦¯Á @  ÉT&³?d XŒ©Y#Ü @  ÉU'³?d PXŒ÷ZyÚ @  ÉV(³?d XŒׯ{$ @  ÉW)³?d ÐXŒébÞ' @  ÉX*³?d YŒ9*RÏ @  ÉY+³?d PYŒÿ9ëî @  ÉZ,³?d YŒßÌé @  É[-³?d ÐYŒêúè„ @  É\.³?d ZŒw¾HE @  É]/³?d PZŒLíp¯ @  É^0³?d ZŒlrQ @  É_1³?d ÐZŒîrÎ @  É`2³?d [Œ>:Bê @  Éa3³?d P[Œø)ûË @  Éb4³?d [ŒØÜù5 @  Éc5³?d Ð[Œíêø¡ @  Éd6³?d \Œô¤ ® @  Ée7³?d P\Œª§Q¨ @  Éf8³?d \ŒŠRSV @  Ég9³?d Ð\Œ´ŸöU @  Éh:³?d ]Œd×z½ @  Éi;³?d P]Œ¢ÄÜ @  Éj<³?d ]Œ‚1Áb @  Ék=³?d Ð]Œ·Àö @  Él>³?d ^Œ*C`7 @  Ém?³?d P^Œ|÷t @  Én@³?d ^Œ\vî @  ÉoA³?d Ð^ŒÏní  @  ÉpB³?d _Œ&aå @  ÉqC³?d P_ŒÙ5ØÄ @  ÉrD³?d _ŒùÀÚ: @  ÉuÐ`ŒsE³?d Ð_Œõ1{ @  Ét F³?d (`ŒKɲã @  Éu G³?d h`ŒÊèå @  Év H³?d ¨`Œ5?ê @  Éw I³?d è`Œ òO @  Éx J³?d (aŒÛºÃð @  Éy K³?d haŒ©zÑ @  Éz L³?d ¨aŒ=\x/ @  É{ M³?d èaŒjy» @  É| N³?d (bŒ•.Ùz @  É} O³?d hbŒ®}á @  É~ P³?d ¨bŒŽˆãn @  É Q³?d èbŒA³iž @  É€ R³?d (cŒ‘ûåv @  É S³?d hcŒWè\W @  É‚ T³?d ¨cŒw^© @  Éƒ U³?d ècŒB+_= @  É„ V³?d (dŒ[e¬2 @  É… W³?d hdŒfö4 @  É† X³?d ¨dŒ%“ôÊ @  É‡ Y³?d èdŒ^QÉ @  Éˆ Z³?d (eŒËÝ! @  É‰ [³?d heŒ d @  ÉŠ \³?d ¨eŒ-ðfþ @  É‹ ]³?d èeŒÆgj @  ÉŒ ^³?d (fŒ…‚Ç« @  É _³?d hfŒ#fÆ @  ÉŽ `³?d ¨fŒ“Äc @  É a³?d èfŒÿ_€ @  É b³?d (gŒ@·Óh @  É‘ c³?d hgŒ†¤jI @  É’ d³?d ¨gŒ¦Qh· @  É“ e³?d ègŒ“gi# @  É” f³?d (hŒ§˜å> @  É• g³?d hhŒù›¿8 @  É– h³?d ¨hŒÙn½Æ @  É— i³?d èhŒç£Å @  É˜ j³?d (iŒ7ë”- @  É™ k³?d hiŒñø-  @  Éš l³?d ¨iŒÑ /ò @  É› m³?d èiŒä;.f @  Éœ n³?d (jŒyާ @  É o³?d hjŒB,¶M @  Éž p³?d ¨jŒbÙ´³ @  ÉŸ q³?d èjŒà³à @  É  r³?d (kŒ0û„ @  É¡ s³?d hkŒöè=) @  É¢ t³?d ¨kŒÖ?× @  É£ u³?d èkŒã+>C @  É¤ v³?d (lŒúeÍL @  É¥ w³?d hlŒ¤f—J @  É¦ x³?d ¨lŒ„“•´ @  É§ y³?d èlŒº^0· @  É¨ z³?d (mŒj¼_ @  É© {³?d hmŒ¬~ @  Éª |³?d ¨mŒŒð€ @  É« }³?d èmŒ¹Æ @  É¬ ~³?d (nŒ$‚¦Õ @  É­ ³?d hnŒoðæ` @  É® €³?d ¨nŒOäž @  É¯ ³?d ènŒÜi} @  É° ‚³?d (oŒ !ó• @  É± ƒ³?d hoŒÊ2J´ @  É² „³?d ¨oŒêÇHJ @  É³ …³?d èoŒßñIÞ @  É´ †³?d (pŒa/õl @  Éµ ‡³?d hpŒ?,¯j @  É¶ ˆ³?d ¨pŒÙ­” @  É· ‰³?d èpŒ!— @  É¸ г?d (qŒñ\„ @  É¹ ‹³?d hqŒ7O=^ @  Éº Œ³?d ¨qŒº?  @  É» ³?d èqŒ"Œ>4 @  É¼ ޳?d (rŒ¿Èžõ @  É½ ³?d hrŒ„›¦ @  É¾ ³?d ¨rŒ¤n¤á @  É¿ ‘³?d èrŒˆ  @  ÉÀ ’³?d (sŒXK’È @  ÉÁ “³?d hsŒžX+é @  É ”³?d ¨sŒ¾­) @  Éà •³?d èsŒ‹›(ƒ @  ÉÄ –³?d (tŒ’ÕÛŒ @  ÉÅ —³?d htŒÌÖŠ @  ÉÆ ˜³?d ¨tŒì#ƒt @  ÉÇ ™³?d ètŒÒî&w @  ÉÈ š³?d (uŒ¦ªŸ @  ÉÉ ›³?d huŒĵ¾ @  ÉÊ œ³?d ¨uŒä@@ @  ÉË ³?d èuŒÑvÔ @  ÉÌ ž³?d (vŒL2° @  ÉÍ Ÿ³?d hvŒêÖ±# @  ÉÎ  ³?d ¨vŒÊ#³Ý @  ÉÏ ¡³?d èvŒYO(> @  ÉÐ ¢³?d (wŒ‰¤Ö @  ÉÑ £³?d hwŒO÷ @  ÉÒ ¤³?d ¨wŒoá  @  ÉÓ ¥³?d èwŒZ× @  ÉÔ ¦³?d (xŒn(’€ @  ÉÕ §³?d hxŒ0+Ȇ @  ÉÖ ¨³?d ¨xŒÞÊx @  É× ©³?d èxŒ.o{ @  ÉØ ª³?d (yŒþ[ã“ @  ÉÙ «³?d hyŒ8HZ² @  ÉÚ ¬³?d ¨yŒ½XL @  ÉÛ ­³?d èyŒ-‹YØ @  ÉÜ ®³?d (zŒ°Ïù @  ÉÝ ¯³?d hzŒ‹œÁó @  ÉÞ °³?d ¨zŒ«ià  @  Éß ±³?d èzŒ)^ @  Éà ²³?d ({ŒùKó¶ @  Éá ³³?d h{Œ?XJ— @  Éâ ´³?d€ ¨{ŒÞê¿i @  Ê µ³?d è{Œ öÔ @  Ê ¶³?d (|ŒÓÛ @  Ê ·³?d h|Œˆ™¤0 @  Ê ¸³?d ¨|Œ¨l¦Î @  Ê ¹³?d è|ŒX\· @  Ê º³?d (}Œˆ[Ð_ @  Ê »³?d h}Œ€ú6 @  Ê ¼³?d ¨}Œ 4ú @  Ê ½³?d è}ŒPp΃ @  Ê ¾³?d (~ŒÍ4nB @  Ê ¿³?d h~Œ^Ɉ @  Ê À³?d ¨~Œ~<ƒv @  Ê Á³?d è~ŒŽCy @  Ê ³?d (Œ^ õç @  Ê ó?d hŒû -\ @  Ê ij?d ¨ŒuЀŒ'Ûþ/¢ @  Ê ų?d èŒF  @  ÊƳ?d @€Œ|øëz @  Êdz?d €€ŒEÖ_± @  Êȳ?d À€ŒÇGHo @  Êɳ?d Œeá)  @  Êʳ?d @Œçp>þ @  Ê˳?d €ŒMµÍ… @  Ê̳?d ÀŒÏ$Ú[ @  Êͳ?d ‚Œ Ž—= @  Êγ?d @‚Œ¢€ã @  Êϳ?d €‚ŒþaVÄ @  Êг?d À‚Œ|ðA @  Êѳ?d ƒŒÞV U @  ÊÒ³?d @ƒŒ\Ç7‹ @  ÊÓ³?d €ƒŒJ¥Ý  @  Ê Ô³?d ÀƒŒÈ4Ê~ @  Ê!Õ³?d „Œ£”ÔÖ @  Ê"Ö³?d @„Œ!à @  Ê#׳?d €„Œ+wà @  Ê$س?d À„Œšº` @  Ê%Ù³?d …Œ8R @  Ê&Ú³?d @…ŒºŒ @  Ê'Û³?d €…ŒHå÷ @  Ê(ܳ?d À…Œ’Ùò) @  Ê)ݳ?d †Œ}s¿O @  Ê*Þ³?d @†Œÿ⨑ @  Ê+ß³?d €†Œ>+Gj @  Ê,à³?d À†Œ¼ºP´ @  Ê-á³?d ‡Œ1û @  Ê.â³?d @‡Œœ&% @  Ê/ã³?d €‡Œ›éë¾ @  Ê0ä³?d À‡Œxü` @  Ê1å³?d ˆŒ_iÚ @  Ê2æ³?d @ˆŒÝøŠ @  Ê3ç³?d €ˆŒäÖ>Ï @  Ê4è³?d ÀˆŒfG) @  Ê5é³?d ‰ŒÄáH^ @  Ê6ê³?d @‰ŒFp_€ @  Ê7ë³?d €‰Œ쵬û @  Ê8ì³?d À‰Œn$»% @  Ê9í³?d ŠŒŽöC @  Ê:î³?d @ŠŒá @  Ê;ï³?d €ŠŒ_a7º @  Ê<ð³?d ÀŠŒÝð d @  Ê=ñ³?d ‹ŒVA+ @  Ê>ò³?d @‹ŒýÇVõ @  Ê?ó³?d €‹ŒE¢ºL @  Ê@ô³?d À‹ŒÇ3­’ @  ÊAõ³?d ŒŒ¬“³: @  ÊBö³?d @ŒŒ.¤ä @  ÊC÷³?d €ŒŒ,/ @  ÊDø³?d ÀŒŒ•½ñ @  ÊEù³?d Œ7f¾ @  ÊFú³?d @ŒµŠq` @  ÊGû³?d €ŒO‚ @  ÊHü³?d ÀŒÞ•Å @  ÊIý³?d ŽŒrtØ£ @  ÊJþ³?d @ŽŒðåÏ} @  ÊKÿ³?d €ŽŒŸÔ Ÿ @  ÊL´?d ÀŽŒEA @  ÊM´?d Œ¿ã} @  ÊN´?d @Œ=rjÐ @  ÊO´?d €Œ:§K @  ÊP´?d ÀŒ¸‡°• @  ÊQ´?d Œt·á€ @  ÊR´?d @Œö&ö^ @  ÊS´?d €ŒÏB• @  ÊT´?d ÀŒM™UK @  ÊU ´?d ‘Œï?4 @  ÊV ´?d @‘Œm®#Ú @  ÊW ´?d €‘ŒÇkС @  ÊX ´?d À‘ŒEúÇ @  ÊY ´?d ’ŒªPŠ @  ÊZ´?d @’Œ(ÁÇ @  Ê[´?d €’Œt¿Kà @  Ê\´?d À’Œö.\> @  Ê]´?d “ŒTˆ=q @  Ê^´?d @“ŒÖ*¯ @  Ê_´?d €“ŒÀ{À„ @  Ê`´?d À“ŒBê×Z @  Êa´?d ”Œ)JÉò @  Êb´?d @”Œ«ÛÞ, @  Êc´?d €”Œ’õjç @  Êd´?d À”Œd}9 @  Êe´?d •Œ²Âv @  Êf´?d @•Œ0S ¨ @  Êg´?d €•Œš–øÓ @  Êh´?d À•Œï  @  Êi´?d –Œ÷­¢k @  Êj´?d @–Œu<µµ @  Êk´?d €–Œ´õZN @  Êl ´?d À–Œ6dM @  Êm!´?d —Œ”Â,ß @  Ên"´?d @—ŒS; @  Êo#´?d €—Œ7öš @  Êp$´?d À—Œ“¦áD @  Êq%´?d ˜ŒÕ·€þ @  Êr&´?d @˜ŒW&—  @  Ês'´?d €˜Œn#ë @  Êt(´?d À˜Œì™45 @  Êu)´?d ™ŒN?Uz @  Êv*´?d @™ŒÌ®B¤ @  Êw+´?d €™Œfk±ß @  Êx,´?d À™Œäú¦ @  Êy-´?d šŒ Pëg @  Êz.´?d @šŒ‰Áü¹ @  Ê{/´?d €šŒÕ¿*ž @  Ê|0´?d ÀšŒW.=@ @  Ê}1´?d ›Œõˆ\ @  Ê~2´?d @›ŒwKÑ @  Ê3´?d €›Œ,*—Y @  Ê€4´?d À›Œ®»€‡ @  Ê5´?d œŒÅž/ @  Ê‚6´?d @œŒGЉñ @  Êƒ7´?d €œŒ~¤=: @  Ê„8´?d ÀœŒü5*ä @  Ê…9´?d Œ^“K« @  Ê†:´?d @ŒÜ\u @  Ê‡;´?d €Œvǯ @  Êˆ<´?d ÀŒôV¸Ð @  Ê‰=´?d žŒüõ¶ @  ÊŠ>´?d @žŒ™mâh @  Ê‹?´?d €žŒ¨ô‚ @  ÊŒ@´?d ÀžŒ*e\ @  ÊA´?d ŸŒˆÃn @  ÊŽB´?d @ŸŒ RyÍ @  ÊC´?d €ŸŒ 6´V @  ÊD´uРŒ?d ÀŸŒ§£ˆ @  Ê‘E´?d  ŒŒBI @  Ê’F´?d X ŒÓ‡— @  Ê“G´?d ˜ Œ7ý3\ @  Ê”H´?d Ø Œµl$‚ @  Ê•I´?d ¡ŒÊEÍ @  Ê–J´?d X¡Œ•[R @  Ê—K´?d ˜¡Œ?ž¡h @  Ê˜L´?d Ø¡Œ½¶¶ @  Ê™M´?d ¢ŒR¥ûÐ @  ÊšN´?d X¢ŒÐ4ì @  Ê›O´?d ˜¢ŒŒJ:) @  ÊœP´?d Ø¢ŒÛ-÷ @  ÊQ´?d £Œ¬}L¸ @  ÊžR´?d X£Œ.ì[f @  ÊŸS´?d ˜£Œ8ޱM @  Ê T´?d Ø£Œº¦“ @  Ê¡U´?d ¤ŒÑ¿¸; @  Ê¢V´?d X¤ŒS.¯å @  Ê£W´?d ˜¤Œj. @  Ê¤X´?d ؤŒè‘ ð @  Ê¥Y´?d ¥ŒJ7m¿ @  Ê¦Z´?d X¥ŒȦza @  Ê§[´?d ˜¥Œbc‰ @  Ê¨\´?d Ø¥ŒàòžÄ @  Ê©]´?d ¦ŒXÓ¢ @  Êª^´?d X¦ŒÉÄ| @  Ê«_´?d ˜¦ŒL+‡ @  Ê¬`´?d ئŒΑÆó @  Êà”´?d سŒs¯Ñ- @  Êá•´?d ´ŒÏ… @  Êâ–´?d€ X´Œî]Äý @  Ë—´?d ˜´Œ628 @  Ë˜´?d Ø´Œ´£/Á @  Ë™´?d µŒÓLµc @  Ëš´?d XµŒQÝ¢½ @  Ë›´?d ˜µŒ5ª¼ @  Ëœ´?d صŒ·;b @  Ë´?d ¶Œ–# ~ @  Ëž´?d X¶Œ²  @  Ë Ÿ´?d ˜¶Œ2¶ @  Ë  ´?d ضŒ’£h @  Ë ¡´?d ·ŒõL…Ê @  Ë ¢´?d X·ŒwÝ’ @  Ë £´?d ˜·Œª> @  Ë¤´?d Ø·Œ‘;)Ë @  Ë¥´?d ¸Œ´9)ë @  Ë¦´?d X¸Œ6¨>5 @  Ë§´?d ˜¸ŒÊÏq @  Ë¨´?d ظŒH^fÍ @  Ë©´?d ¹Œ/±üo @  Ëª´?d X¹Œ­ ë± @  Ë«´?d ˜¹ŒÉWG° @  Ë¬´?d عŒKÆPn @  Ë­´?d ºŒjÞBr @  Ë®´?d XºŒèOU¬ @  Ë¯´?d ˜ºŒqxxf @  Ë°´?d غŒóéo¸ @  Ë±´?d »Œ”õ @  Ë²´?d X»Œ—âÄ @  Ë³´?d ˜»ŒràNÅ @  Ë´´?d Ø»ŒðqY @  Ëµ´?d ¼ŒéÄ™ @  Ë ¶´?d X¼ŒkUG @  Ë!·´?d ˜¼Œ—2Ya @  Ë"¸´?d ؼŒ£N¿ @  Ë#¹´?d ½ŒrLÔ @  Ë$º´?d X½ŒðÝÃà @  Ë%»´?d ˜½Œ”ªo @  Ë&¼´?d ؽŒ;x @  Ë'½´?d ¾Œ7#j @  Ë(¾´?d X¾Œµ²}Þ @  Ë)¿´?d ˜¾ŒAb|Ù @  Ë*À´?d ؾŒÃók @  Ë+Á´?d ¿Œ¤ñ¥ @  Ë,´?d X¿Œ&æ{ @  Ë-ô?d ˜¿ŒBúJz @uÐÀŒ  Ë.Ä´?d Ø¿ŒÀk]¤ @  Ë/Å´?d 0ÀŒµf€Ë @  Ë0Æ´?d pÀŒ0KÀ @  Ë1 Ç´?d °ÀŒòWæ @  Ë2 È´?d ðÀŒpÆ8 @  Ë3 É´?d 0ÁŒ)‰š @  Ë4 Ê´?d pÁŒ•¸žD @  Ë5 Ë´?d °ÁŒñÏ2E @  Ë6 Ì´?d ðÁŒs^%› @  Ë7 Í´?d 0ÂŒRF7‡ @  Ë8 δ?d pÂŒÐ× Y @  Ë9 Ï´?d °ÂŒIà “ @  Ë: д?d ðÂŒËqM @  Ë; Ñ´?d 0ÃŒ¬ž€ï @  Ë< Ò´?d pÃŒ.—1 @  Ë= Ó´?d °ÃŒJx;0 @  Ë> Ô´?d ðÃŒÈé,î @  Ë? Õ´?d 0ÄŒ[rþ @  Ë@ Ö´?d pÄŒýÊe  @  ËA ×´?d °ÄŒ­* @  ËB Ø´?d ðÄŒƒ<=Ø @  ËC Ù´?d 0ÅŒäÓ§z @  ËD Ú´?d pÅŒfB°¤ @  ËE Û´?d °ÅŒ5¥ @  ËF Ü´?d ðÅŒ€¤ { @  ËG Ý´?d 0ÆŒ¡¼g @  ËH Þ´?d pÆŒ#-¹ @  ËI ß´?d °ÆŒ'­¯ @  ËJ à´?d ðÆŒ¥< q @  ËK á´?d 0ÇŒÂÓ—Ó @  ËL â´?d pÇŒ@B€  @  ËM ã´?d °ÇŒ$5,  @  ËN ä´?d ðÇŒ¦¤;Ò @  ËO å´?d 0ÈŒƒ¦;ò @  ËP æ´?d pÈŒ7,, @  ËQ ç´?d °ÈŒýPc  @  ËR è´?d ðÈŒÁtÔ @  ËS é´?d 0ÉŒ.îv @  ËT ê´?d pÉŒš¿ù¨ @  ËU ë´?d °ÉŒþÈU© @  ËV ì´?d ðÉŒ|YBw @  ËW í´?d 0ÊŒ]APk @  ËX î´?d pÊŒßÐGµ @  ËY ï´?d °ÊŒFçj @  ËZ ð´?d ðÊŒÄv}¡ @  Ë[ ñ´?d 0ËŒ£™ç @  Ë\ ò´?d pËŒ!ðÝ @  Ë] ó´?d °ËŒE\Ü @  Ë^ ô´?d ðËŒÇîK @  Ë_ õ´?d 0ÌŒÞ[€ @  Ë` ö´?d pÌŒ\Ê^ @  Ëa ÷´?d °ÌŒ ­Kx @  Ëb ø´?d ðÌŒ"<\¦ @  Ëc ù´?d 0ÍŒEÓÆ @  Ëd ú´?d pÍŒÇBÑÚ @  Ëe û´?d °ÍŒ£5}Û @  Ëf ü´?d ðÍŒ!¤j @  Ëg ý´?d 0ÎŒ¼x @  Ëh þ´?d pÎŒ‚-oÇ @  Ëi ÿ´?d °ÎŒ\o^ @  Ëj µ?d ðÎŒ–Íx€ @  Ëk µ?d 0ÏŒñ"â" @  Ël µ?d pÏŒs³õü @  Ëm µ?d °ÏŒÄYý @  Ën µ?d ðÏŒ•UN# @  Ëo µ?d 0ÐŒ:v~¬ @  Ëp µ?d pÐŒ¸çir @  Ëq µ?d °ÐŒD€&T @  Ër µ?d ðÐŒÆ1Š @  Ës  µ?d 0ÑŒ¡þ«( @  Ët  µ?d pÑŒ#o¼ö @  Ëu  µ?d °ÑŒG÷ @  Ëv  µ?d ðÑŒʼn) @  Ëw  µ?d 0ÒŒä‘5 @  Ëx µ?d pÒŒfë @  Ëy µ?d °ÒŒÿ7/! @  Ëz µ?d ðÒŒ}¦8ÿ @  Ë{ µ?d 0ÓŒI¢] @  Ë| µ?d pÓŒ˜Øµƒ @  Ë} µ?d °ÓŒü¯‚ @  Ë~ µ?d ðÓŒ~>\ @  Ë µ?d 0ÔŒ*Ú`} @  Ë€ µ?d pÔŒ¨Kw£ @  Ë µ?d °ÔŒT,8… @  Ë‚ µ?d ðԌֽ/[ @  Ëƒ µ?d 0ÕŒ±Rµù @  Ë„ µ?d pÕŒ3â' @  Ë… µ?d °ÕŒW´& @  Ë† µ?d ðÕŒÕ%ø @  Ë‡ µ?d 0ÖŒô= ä @  Ëˆ µ?d pÖŒv¬: @  Ë‰ µ?d °ÖŒr,, @  ËŠ  µ?d ðÖŒð½ò @  Ë‹ !µ?d 0׌—R…P @  ËŒ "µ?d p׌Ã’Ž @  Ë #µ?d °×Œq´> @  ËŽ $µ?d ð׌ó%)Q @  Ë %µ?d 0ØŒÖ')q @  Ë &µ?d pØŒT¶>¯ @  Ë‘ 'µ?d °ØŒ¨Ñq‰ @  Ë’ (µ?d ðØŒ*@fW @  Ë“ )µ?d 0ÙŒM¯üõ @  Ë” *µ?d pÙŒÏ>ë+ @  Ë• +µ?d °ÙŒ«IG* @  Ë– ,µ?d ðÙŒ)ØPô @  Ë— -µ?d 0ÚŒÀBè @  Ë˜ .µ?d pÚŒŠQU6 @  Ë™ /µ?d °ÚŒfxü @  Ëš 0µ?d ðÚŒ‘÷o" @  Ë› 1µ?d 0ÛŒöõ€ @  Ëœ 2µ?d pÛŒt‰â^ @  Ë 3µ?d °ÛŒþN_ @  Ëž 4µ?d ðÛŒ’oY @  ËŸ 5µ?d 0ÜŒ‹Ú @  Ë  6µ?d pÜŒ KÝ @  Ë¡ 7µ?d °ÜŒõ,Yû @  Ë¢ 8µ?d ðÜŒw½N% @  Ë£ 9µ?d 0ÝŒRÔ‡ @  Ë¤ :µ?d pÝŒ’ÃÃY @  Ë¥ ;µ?d °ÝŒö´oX @  Ë¦ <µ?d ðÝŒt%x† @  Ë§ =µ?d 0ÞŒU=jš @  Ë¨ >µ?d pÞŒ׬}D @  Ë© ?µ?d °ÞŒ#||C @  Ëª @µ?d ðÞŒ¡ík @  Ë« Aµ?d 0ߌÆñ? @  Ë¬ Bµ?d pߌD“æá @  Ë­ Cµ?d uÐàŒ/°ßŒ äJà @  Ë® Dµ?d ðߌ›²ë @  Ë¯Eµ?d HàŒ“ëS  @  Ë°Fµ?d ˆàŒ³QÞ @  Ë±Gµ?d ÈàŒí Ø @  Ë²Hµ?d áŒ=U‡0 @  Ë³Iµ?d HáŒc†¤ @  Ë´Jµ?d ˆáŒ(–„Z @  ËµKµ?d ÈáŒî…={ @  Ë¶Lµ?d âŒsÁº @  Ë·Mµ?d HâŒM 8¹ @  Ë¸Nµ?d ˆâŒmù:G @  Ë¹Oµ?d ÈâŒVª­ @  ËºPµ?d ㌆âŽE @  Ë»Qµ?d H㌳ÔÑ @  Ë¼Rµ?d ˆãŒ“!/ @  Ë½Sµ?d ÈãŒU24 @  Ë¾Tµ?d äŒL|Ç @  Ë¿Uµ?d HäŒ`}À @  ËÀVµ?d ˆäŒ@ä> @  ËÁWµ?d ÈäŒç%8 @  ËÂXµ?d åŒί©Ð @  ËÃYµ?d HåŒû™¨D @  ËÄZµ?d ˆåŒÛlªº @  ËÅ[µ?d È匛 @  ËÆ\µ?d 挀;³Z @  ËÇ]µ?d H挾öY @  ËÈ^µ?d ˆæŒž§ @  ËÉ_µ?d ÈæŒ8ç‘ @  ËÊ`µ?d çŒ诙y @  ËËaµ?d HçŒÝ™˜í @  ËÌbµ?d ˆçŒýlš @  ËÍcµ?d ÈçŒ;#2 @  ËÎdµ?d 茀¯/ @  ËÏeµ?d H茜ì4Ì @  ËÐfµ?d ˆèŒ¼62 @  ËÑgµ?d ÈèŒâl4 @  ËÒhµ?d éŒ2RàÜ @  ËÓiµ?d HéŒdáH @  ËÔjµ?d ˆéŒ'‘ã¶ @  ËÕkµ?d ÈéŒá‚Z— @  ËÖlµ?d êŒ|ÆúV @  Ë×mµ?d HêŒB _U @  ËØnµ?d ˆêŒbþ]« @  ËÙoµ?d ÈêŒY­eA @  ËÚpµ?d 댉åé© @  ËÛqµ?d H댼Óè= @  ËÜrµ?d ˆëŒœ&êà @  ËÝsµ?d ÈëŒZ5Sâ @  ËÞtµ?d ìŒC{ í @  Ëßuµ?d HìŒÁ¾ @  Ëàvµ?d ˆìŒáä@ @  Ëáwµ?d È쌿çDF @  Ëâxµ?d€ íŒéù` @  Ìyµ?d HíŒ=Ž)ª @  Ìzµ?d ˆíŒ{+T @  Ì{µ?d ÈíŒ!i˜ @  Ì|µ?d eÉY @  Ì}µ?d HîŒs3  @  Ì~µ?d ˆîŒSï1Þ @  Ìµ?d ÈîŒÖ/. @  Ì€µ?d ïŒg¢ù @  Ì µ?d HïŒöX€ @  Ì ‚µ?d ˆïŒÖíZ~ @  Ì ƒµ?d ÈïŒÕ·² @  Ì „µ?d ðŒki¤ @  Ì …µ?d HðŒ›^y @  Ì†µ?d ˆðŒ»ã\‡ @  Ì‡µ?d ÈðŒ†óg @  Ìˆµ?d ñŒV»ëó @  Ì‰µ?d HñŒ¦ÄŠ @  Ìе?d ˆñŒ†1t @  Ì‹µ?d ÈñŒ…kQ¸ @  ÌŒµ?d òŒ/ñy @  Ìµ?d HòŒèP  @  Ì޵?d ˆòŒÈ¥ þ @  Ìµ?d ÈòŒ=Dnn @  Ìµ?d óŒí ↠@  Ì‘µ?d HóŒsÿ @  Ì’µ?d ˆóŒ=† @  Ì“µ?d ÈóŒ>ÜXÍ @  Ì”µ?d ôŒ'’«Â @  Ì•µ?d HôŒ×íQ» @  Ì–µ?d ˆôŒ÷SE @  Ì—µ?d ÈôŒÛOi @  Ì ˜µ?d õŒ Fà @  Ì!™µ?d HõŒû99ø @  Ì"šµ?d ˆõŒÛÌ; @  Ì#›µ?d ÈõŒØ–yÊ @  Ì$œµ?d öŒEÒÙ  @  Ì%µ?d HöŒµ­#r @  Ì&žµ?d ˆöŒ•X!Œ @  Ì'Ÿµ?d ÈöŒýÀ @  Ì( µ?d ÷Œ-Fó( @  Ì)¡µ?d H÷ŒÝ9 Q @  Ì*¢µ?d ˆ÷ŒýÌ ¯ @  Ì+£µ?d È÷Œþ–Ic @  Ì,¤µ?d øŒÊiÅ~ @  Ì-¥µ?d HøŒ:? @  Ì.¦µ?d ˆøŒã=ù @  Ì/§µ?d ÈøŒ'óe @  Ì0¨µ?d ùŒ÷»Š @  Ì1©µ?d HùŒÄpô @  Ì2ªµ?d ˆùŒ'1r  @  Ì3«µ?d ÈùŒ$k0Æ @  Ì4¬µ?d úŒ¹/ @  Ì5­µ?d HúŒIPj~ @  Ì6®µ?d ˆúŒi¥h€ @  Ì7¯µ?d ÈúŒœD @  Ì8°µ?d ûŒL ƒø @  Ì9±µ?d HûŒ¼sy @  Ì:²µ?d ˆûŒœ†{ @  Ì;³µ?d ÈûŒŸÜ9³ @  Ì<´µ?d üŒ†’ʼ @  Ì=µµ?d HüŒví0Å @  Ì>¶µ?d ˆüŒV2; @  Ì?·µ?d ÈüŒÔ (… @  Ì@¸µ?d ýŒA¤m @  ÌA¹µ?d HýŒô>^ @  ÌBºµ?d ˆýŒÔË\ê @  ÌC»µ?d ÈýŒב& @  ÌD¼µ?d þŒJÕ¾ç @  ÌE½µ?d HþŒºªDž @  ÌF¾µ?d ˆþŒš_F` @  ÌG¿µ?d ÈþŒY = @  ÌHÀµ?d ÿŒÒÕ @  ÌIÁµ?d HÿŒ"n{¬ @  ÌJµ?d ˆÿŒ›yR @  ÌKuÐõ?d ÈÿŒÁ;ž @  ÌLĵ?d Nuo @  ÌMŵ?d `¾ é @  ÌNƵ?d  žÿëè @  ÌOǵ?d à£ïÐt @  ÌPȵ?d s§\œ @  ÌQɵ?d `ƒØ¦å @  ÌRʵ?d  £-¤ @  ÌS˵?d à wæ× @  ÌT̵?d =3F @  ÌU͵?d `ÍL¼o @  ÌVε?d  í¹¾‘ @  ÌWϵ?d àXÙ @  ÌXе?d ÈUé @  ÌYѵ?d `8o¯ @  ÌZÒµ?d  š­n @  Ì[Óµ?d àÀï¢ @  Ì\Ôµ?d Ž­ @  Ì]Õµ?d `òñæÔ @  Ì^Öµ?d  Òä* @  Ì_×µ?d àþø @  Ì`ص?d .Ztî @  ÌaÙµ?d `Þ%Ž— @  ÌbÚµ?d  þÐŒi @  ÌcÛµ?d àýŠÎ¥ @  Ìdܵ?d `Înd @  Ìeݵ?d `±” @  ÌfÞµ?d  °D–ã @  Ìgßµ?d àØȯ @  Ìhàµ?d ZDG @  Ìiáµ?d `ø%¾> @  Ìjâµ?d  ØÐ¼À @  Ìkãµ?d àÛŠþ  @  Ìläµ?d ïur @  Ìmåµ?d ` ˆh @  Ìnæµ?d  ?ÿŠ– @  Ìoçµ?d àï±  @  Ìpèµ?d Ò§=â @  Ìqéµ?d ` "ØÇ› @  Ìrêµ?d   -Åe @  Ìsëµ?d à w‡© @  Ìtìµ?d œ3'h @  Ìuíµ?d ` lLÝ @  Ìvîµ?d   L¹ßï @  Ìwïµ?d à ¹X¸ @  Ìxðµ?d i4— @  Ìyñµ?d ` ™oÎî @  Ìzòµ?d   ¹šÌ @  Ì{óµ?d à ºÀŽÜ @  Ì|ôµ?d £Ž}Ó @  Ì}õµ?d ` Sñ‡ª @  Ì~öµ?d   s…T @  Ì÷µ?d à C¯Û @  Ì€øµ?d  #3 @  Ìùµ?d ` 2tÙJ @  Ì‚úµ?d   Û´ @  Ìƒûµ?d à Û™x @  Ì„üµ?d ŒŸ9¹ @  Ì…ýµ?d `|àÃÀ @  Ì†þµ?d  \Á> @  Ì‡ÿµ?d à¾Ø @  Ìˆ¶?d ÄØ20 @  Ì‰¶?d `4§ÈI @  Ìж?d  RÊ· @  Ì‹¶?d àˆ{ @  ÌŒ¶?d ©Ö4É @  Ì¶?d `Y©Î° @  Ì޶?d  y\ÌN @  Ì¶?d àDL÷Ò @  Ì¶?d ”{: @  Ì‘ ¶?d `d{C @  Ì’ ¶?d  DŽƒ½ @  Ì“ ¶?d àGÔÁq @  Ì” ¶?d Úa° @  Ì• ¶?d `*ï›É @  Ì–¶?d   ™7 @  Ì—¶?d àÿûþ§ @  Ì˜¶?d /³rO @  Ì™¶?d `ß̈6 @  Ìš¶?d  ÿ9ŠÈ @  Ì›¶?d àücÈ @  Ìœ¶?d å-;  @  Ì¶?d `RÁr @  Ìž¶?d  5§ÃŒ @  ÌŸ¶?d à±ß  @  Ì ¶?d ÉùSH @  Ì¡¶?d `9†©1 @  Ì¢¶?d  s«Ï @  Ì£¶?d à)é @  Ì¤¶?d ‡mI @  Ì¥¶?d `w³» @  Ì¦¶?d  Wç±E @  Ì§¶?d à?±ï  @  Ì¨ ¶?d ïùcá @  Ì©!¶?d `†™˜ @  Ìª"¶?d  ?s›f @  Ì«#¶?d à<)Ùª @  Ì¬$¶?d ÖU· @  Ì­%¶?d `ø©¯Î @  Ì®&¶?d  Ø\­0 @  Ì¯'¶?d àåL–¬ @  Ì°(¶?d 5D @  Ì±)¶?d `Å{à= @  Ì²*¶?d  åŽâà @  Ì³+¶?d àæÔ  @  Ì´,¶?d {Î @  Ìµ-¶?d `‹ïú· @  Ì¶.¶?d  «øI @  Ì·/¶?d à^ûŸÙ @  Ì¸0¶?d ޳1 @  Ì¹1¶?d `~ÌéH @  Ìº2¶?d  ^9ë¶ @  Ì»3¶?d à]c©z @  Ì¼4¶?d D-Zu @  Ì½5¶?d `´R   @  Ì¾6¶?d  ”§¢ò @  Ì¿7¶?d මL @  ÌÀ8¶?d Æþ4¤ @  ÌÁ9¶?d `6ÎÝ @  ÌÂ:¶?d  tÌ# @  ÌÃ;¶?d à.Žï @  ÌÄ<¶?d ˆj.. @  ÌÅ=¶?d `xÔW @  ÌÆ>¶?d  XàÖ© @  ÌÇ?¶?d àÀæô @  ÌÈ@¶?d ® @  ÌÉA¶?d `àÑëe @  ÌÊB¶?d  À$é›uÐ  @  ÌËC¶?d à¾þØ+ @  ÌÌ€D¶?d 8 ÏõM @  ÌÍ€E¶?d x ?Šü4 @  Ì΀F¶?d ¸ þÊ @  ÌÏ€G¶?d ø "oÅV @  ÌЀH¶?d 8!ò'I¾ @  ÌÑ€I¶?d x!X³Ç @  ÌÒ€J¶?d ¸!"­±9 @  ÌÓ€K¶?d ø!!÷óõ @  ÌÔ€L¶?d 8"¼³S4 @  ÌÕ€M¶?d x"LÌ©M @  ÌÖ€N¶?d ¸"l9«³ @  Ì×€O¶?d ø"™ØÌ# @  ÌØ€P¶?d 8#I@Ë @  ÌÙ€Q¶?d x#¹ïº² @  ÌÚ€R¶?d ¸#™¸L @  ÌÛ€S¶?d ø#š@ú€ @  ÌÜ€T¶?d 8$ƒ  @  ÌÝ€U¶?d x$sqóö @  ÌÞ€V¶?d ¸$S„ñ @  Ì߀W¶?d ø$’í$ @  Ìà€X¶?d 8%¯ÚaÌ @  Ìá€Y¶?d x%_¥›µ @  Ìâ€Z¶?d€ ¸% “…í @  Í€[¶?d ø%éˆ @  Í€\¶?d 8&tÌ/É @  Í€]¶?d x&Aú.] @  Í€^¶?d ¸&a,£ @  Í€_¶?d ø&Çë-• @  Í€`¶?d 8'£¡} @  Í€a¶?d x')n~ @  Í€b¶?d ¸' ›€ @  Í €c¶?d ø'ψ¿¡ @  Í €d¶?d 8(ûw3¼ @  Í €e¶?d x(ÎA2( @  Í €f¶?d ¸(î´0Ö @  Í €g¶?d ø(°·jÐ @  Í€h¶?d 8)`ÿæ8 @  Í€i¶?d x)ó“}Û @  Í€j¶?d ¸)Óf% @  Í€k¶?d ø)uÆ @  Í€l¶?d 8*ˆ1fÅ @  Í€m¶?d x*½gQ @  Í€n¶?d ¸*òe¯ @  Í€o¶?d ø*¦¡]E @  Í€p¶?d 8+véÑ­ @  Í€q¶?d x+H$t® @  Í€r¶?d ¸+hÑvP @  Í€s¶?d ø+®ÂÏq @  Í€t¶?d 8,·Œ<~ @  Í€u¶?d x,‚º=ê @  Í€v¶?d ¸,¢O? @  Í€w¶?d ø,üLe @  Í€x¶?d 8-,éú @  Í€y¶?d x-®nU© @  Í €z¶?d ¸-Ž›WW @  Í!€{¶?d ø-Hˆîv @  Í"€|¶?d 8.ÕÌN· @  Í#€}¶?d x.àúO# @  Í$€~¶?d ¸.ÀMÝ @  Í%€¶?d ø.‹} h @  Í&€€¶?d 8/[5€ @  Í'€¶?d x/eø$ƒ @  Í(€‚¶?d ¸/E &} @  Í)€ƒ¶?d ø/ƒŸ\ @  Í*€„¶?d 80=À#î @  Í+€…¶?d x0ö"z @  Í,€†¶?d ¸0( „ @  Í-€‡¶?d ø0vz‚ @  Í.€ˆ¶?d 81¦Höj @  Í/€‰¶?d x15$m‰ @  Í0€ж?d ¸1Ñow @  Í1€‹¶?d ø1ÓÂÖV @  Í2€Œ¶?d 82N†v— @  Í3€¶?d x2{°w @  Í4€޶?d ¸2[Euý @  Í5€¶?d ø2`M @  Í6€¶?d 83°^Áÿ @  Í7€‘¶?d x3Ž“dü @  Í8€’¶?d ¸3®ff @  Í9€“¶?d ø3huß# @  Í:€”¶?d 84q;,, @  Í;€•¶?d x4D -¸ @  Í<€–¶?d ¸4dø/F @  Í=€—¶?d ø4:ûu@ @  Í>€˜¶?d 85ê³ù¨ @  Í?€™¶?d x5ÆÞCi @  Í@€š¶?d ¸5æ+A— @  ÍA€›¶?d ø5 8ø¶ @  ÍB€œ¶?d 86½|Xw @  ÍC€¶?d x6ˆJYã @  ÍD€ž¶?d ¸6¨¿[ @  ÍE€Ÿ¶?d ø6[Z+ @  ÍF€ ¶?d 87ÞÖà @  ÍG€¡¶?d x7àÞsÀ @  ÍH€¢¶?d ¸7À+q> @  ÍI€£¶?d ø78È @  ÍJ€¤¶?d 882ÇD @  ÍK€¥¶?d x8ñE– @  ÍL€¦¶?d ¸8'Gh @  ÍM€§¶?d ø8yn @  ÍN€¨¶?d 89©O‘† @  ÍO€©¶?d x9:# e @  ÍP€ª¶?d ¸9Ö› @  ÍQ€«¶?d ø9Üűº @  ÍR€¬¶?d 8:A{ @  ÍS€­¶?d x:t·ï @  ÍT€®¶?d ¸:TB @  ÍU€¯¶?d ø:o*û @  ÍV€°¶?d 8;¿Y¦ @  ÍW€±¶?d x;” @  ÍX€²¶?d ¸;¡aî @  ÍY€³¶?d ø;gr¸Ï @  ÍZ€´¶?d 8<~|9  @  Íc€½¶?d x>)J8 @  Íd€¾¶?d ¸> ¿:c @  Íe€¿¶?d ø>_ .D @  Íf€À¶?d 8?C¢¬ @  Íg€Á¶?d x?±Ž¯ @  Íh€¶?duÐ@7 ¸?‘{Q @  Íi€ö?d ø?*èÏ  @  ÍjĶ?d P@éDu0 @  ÍkŶ?d @~a„ @  Ílƶ?d Ð@ü‡vZ @  ÍmǶ?d Að]·j @  Ínȶ?d PArÌ ´ @  Íoɶ?d ACÄ.w @  Ípʶ?d ÐAÁU9© @  Íq˶?d B“7— @  Ír̶?d PBš I @  ÍsͶ?d B P4ý @  Ítζ?d ÐBÁ## @  Íu϶?d CæK€ÿ @  Ívж?d PCdÚ—! @  ÍwѶ?d Cøs' @  ÍxÒ¶?d ÐCzâ0Ü @  ÍyÓ¶?d D'.m, @  ÍzÔ¶?d PD¥¿zò @  Í{Õ¶?d D2ínF @  Í|Ö¶?d ÐD°|y˜ @  Í}×¶?d E¼¦¸¨ @  Í~ض?d PE>7¯v @  ÍÙ¶?d ESh0¦ @  Í€Ú¶?d ÐEÑù'x @  ÍÛ¶?d F?)F @  Í‚ܶ?d PFŠ®>˜ @  Íƒݶ?d Fü*, @  Í„Þ¶?d ÐFŸm=ò @  Í…ß¶?d GkP§ò @  Í†à¶?d PGéÁ°, @  Í‡á¶?d Guh @  Íˆâ¶?d ÐG÷ùÑ @  Í‰ã¶?d H‡„53 @  ÍŠä¶?d PH"í @  Í‹å¶?d H’G6Y @  ÍŒæ¶?d ÐHÖ!‡ @  Íç¶?d I à· @  ÍŽè¶?d PIž÷i @  Íé¶?d I¯•yª @  Íê¶?d ÐI-nt @  Í‘ë¶?d JôÂ`J @  Í’ì¶?d PJvSw” @  Í“í¶?d Jác  @  Í”î¶?d ÐJctþ @  Í•ï¶?d K ×" @  Í–ð¶?d PKˆ‹Àü @  Í—ñ¶?d K"pß @  Í˜ò¶?d ÐK–³g @  Í™ó¶?d LË:ñ @  Íšô¶?d PLIî-/ @  Í›õ¶?d LÞ¼9› @  Íœö¶?d ÐL\-.E @  Í÷¶?d MP÷ïu @  Ížø¶?d PMÒfø« @  ÍŸù¶?d MòhQØ @  Í ú¶?d ÐMpùF @  Í¡û¶?d N©?H8 @  Í¢ü¶?d PN+®_æ @  Í£ý¶?d N¼üKR @  Í¤þ¶?d ÐN>m\Œ @  Í¥ÿ¶?d OX¡Ò @  Í¦·?d POÚ0ÅÝ @  Í§·?d OF™uþ @  Í¨·?d ÐOÄb  @  Í©·?d P>Tpm @  Íª·?d PP¼Åg³ @  Í«·?d P+—s @  Í¬·?d ÐP©dÙ @  Í­·?d Q¥Ü¥é @  Í®·?d PQ'M²7 @  Í¯ ·?d QE<ô @  Í° ·?d ÐQ”Ô+* @  Í± ·?d RM% @  Í² ·?d PRσ2Ê @  Í³ ·?d RXÑ&~ @  Í´·?d ÐRÚ@1  @  Íµ·?d S³Ê’| @  Í¶·?d PS1[…¢ @  Í··?d S­ò5 @  Í¸·?d ÐS/c"_ @  Í¹·?d Tr¯¯ @  Íº·?d PTð>hq @  Í»·?d Tgl|Å @  Í¼·?d ÐTåýk @  Í½·?d Ué'ª+ @  Í¾·?d PUk¶½õ @  Í¿·?d Uå¿ @  ÍÀ·?d ÐUg.Ê @  ÍÁ·?d V¾è ô @  Í·?d PV\âN @  Í×1·?d [¢õRm @  ÍØ2·?d Ð[ dE³ @  ÍÙ3·?d \}¨C @  ÍÚ4·?d P\ÿ9 @  ÍÛ5·?d \hk) @  ÍÜ6·?d Ð\êú ÷ @  ÍÝ7·?d ]æ ÍÇ @  ÍÞ8·?d P]d±Ú @  Íß9·?d ]D¿sj @  Íà:·?d Ð]Æ.d´ @  Íá;·?d ^èjŠ @  Íâ<·?d€ P^\>ŠT @  Î=·?d ^*-ÖÉ @  Î>·?d Ð^¨¼Á @  Î?·?d _i˜µë @  Î@·?d P_ë ¢5 @  ÎA·?d _¹Ml @  ÎuÐ`B·?d Ð_;ƒZ² @  ÎC·?d (`K¯ @  ÎD·?d h`Ú q @  Î E·?d ¨`ßÁæ( @  Î F·?d è`]Pñö @  Î G·?d (a”ÃË+ @  Î H·?d haRÜõ @  Î I·?d ¨aDI3¬ @  ÎJ·?d èaÆØ$r @  ÎK·?d (b| KÖ @  ÎL·?d hbþœ\ @  ÎM·?d ¨b¬‡³Q @  ÎN·?d èb.¤ @  ÎO·?d (c‚Õü¾ @  ÎP·?d hcDë` @  ÎQ·?d ¨cR_9 @  ÎR·?d ècÐÎç @  ÎS·?d (dC°m @  ÎT·?d hdÁ!³ @  ÎU·?d ¨d“:éê @  ÎV·?d èd«þ4 @  ÎW·?d (eØ8Äé @  ÎX·?d heZ©Ó7 @  ÎY·?d ¨e²z·?d èm+#JÎ @  Î?{·?d (n.÷H @  Î@|·?d hn¬f– @  ÎA}·?d ¨nþ}üÏ @  ÎB~·?d èn|ìë @  ÎC·?d (o Ë @  ÎD€·?d ho"ŸÜ¡ @  ÎE·?d ¨op„3ø @  ÎF‚·?d èoò$& @  ÎGƒ·?d (pÆûi @  ÎH„·?d hpDj~Ï @  ÎI…·?d ¨pq‘– @  ÎJ†·?d èp”à†H @  ÎK‡·?d (q]s¼• @  ÎLˆ·?d hqßâ«K @  ÎM‰·?d ¨qùD @  ÎNŠ·?d èqhSÌ @  ÎO‹·?d (rµ½Æ @  ÎÌ ¸?d €‘ðå<8 @  ÎÍ  ¸?d À‘šÆA @  ÎÎ  ¸?d ’Þf€ @  ÎÏ  ¸?d @’8Þ¾; @  ÎÐ  ¸?d €’+¼Å @  ÎÑ  ¸?d À’èTF¼ @  ÎÒ ¸?d “8ÊT @  ÎÓ ¸?d @“Æ S @  ÎÔ ¸?d €“æó ­ @  ÎÕ ¸?d À“ŒñÔ @  ÎÖ ¸?d ”ÂÛ @  Î× ¸?d @”cä€ @  ÎØ ¸?d €”'–æ~ @  ÎÙ ¸?d À”×é @  ÎÚ ¸?d •¡ï @  ÎÛ ¸?d @•œë1 @  ÎÜ ¸?d €•¼3ú @  ÎÝ ¸?d À•LaɃ @  ÎÞ ¸?d –Ñ%iB @  Îß ¸?d @–e#–I @  Îà ¸?d €–EÖ”· @  Îá ¸?d À–µ©nÎ @  Îâ ¸?d€ —"þ€ @  Ï ¸?d @—“ÎLr @  Ï  ¸?d €—³;NŒ @  Ï !¸?d À—† O @  Ï "¸?d ˜²òà @  Ï #¸?d @˜táz$ @  Ï $¸?d €˜TxÚ @  Ï %¸?d À˜jÙÝÙ @  Ï &¸?d ™º‘Q1 @  Ï '¸?d @™ä’ 7 @  Ï (¸?d €™Äg É @  Ï )¸?d À™ñQ] @  Ï *¸?d šl¨œ @  Ï +¸?d @šª½ @  Ï ,¸?d €šŠóC @  Ï -¸?d ÀšŸˆ  @  Ï .¸?d ›É×H @  Ï /¸?d @›ò„<¢ @  Ï 0¸?d €›Òq>\ @  Ï 1¸?d À›çG?È @  Ï 2¸?d œþ ÌÇ @  Ï 3¸?d @œ8uæ @  Ï 4¸?d €œïw @  Ï 5¸?d Àœ&"Ò @  Ï 6¸?d öj^ó @  Ï 7¸?d @¨iõ @  Ï 8¸?d €ˆœ  @  Ï 9¸?d À½ªŸ @  Ï :¸?d ž î§^ @  Ï ;¸?d @žæý @  Ï <¸?d €žÆ @  Ï =¸?d ÀžDb Ò @  Ï >¸?d Ÿ”*,: @  Ï! ?¸?d @Ÿž8 @  Ï" @¸?d €Ÿâk:ã @  Ï# A¸uР?d ÀŸ×];w @  Ï$ B¸?d  Ÿ‘9Ä @  Ï%C¸?d X Y‚€å @  Ï&D¸?d ˜ yw‚ @  Ï'E¸?d Ø Gº' @  Ï(F¸?d ¡—ò«ð @  Ï)G¸?d X¡Éññö @  Ï*H¸?d ˜¡éó @  Ï+I¸?d Ø¡Ü2òœ @  Ï,J¸?d ¢AvR] @  Ï-K¸?d X¢‡eë| @  Ï.L¸?d ˜¢§é‚ @  Ï/M¸?d Ø¢4üra @  Ï0N¸?d £ä´þ‰ @  Ï1O¸?d X£ßçÆc @  Ï2P¸?d ˜£ÿÄ @  Ï3Q¸?d Ø£Ê$Å  @  Ï4R¸?d ¤Ój6 @  Ï5S¸?d X¤y' @  Ï6T¸?d ˜¤5ŒÙ @  Ï7U¸?d ؤ A(Ú @  Ï8V¸?d ¥Û ¤2 @  Ï9W¸?d X¥… þ4 @  Ï:X¸?d ˜¥¥ÿüÊ @  Ï;Y¸?d Ø¥Éý^ @  Ï<Z¸?d ¦ ]Ÿ @  Ï=[¸?d X¦Ëžä¾ @  Ï>\¸?d ˜¦ëkæ@ @  Ï?]¸?d ئÇ\ @  Ï@^¸?d §NÐi @  ÏA_¸?d X§±ªÑ_ @  ÏB`¸?d ˜§‘_Ó¡ @  ÏCa¸?d ا¤iÒ5 @  ÏDb¸?d ¨–^( @  ÏEc¸?d X¨V…ç  @  ÏFd¸?d ˜¨vpå÷ @  ÏGe¸?d بH½@ô @  ÏHf¸?d ©˜õÌ @  ÏIg¸?d X©Æö– @  ÏJh¸?d ˜©æ”ä @  ÏKi¸?d Ø©Ó5•p @  ÏLj¸?d ªNq5± @  ÏMk¸?d XªˆbŒ @  ÏNl¸?d ˜ª¨—Žn @  ÏOm¸?d ت;û @  ÏPn¸?d «ë³™e @  ÏQo¸?d X«Ðà¡ @  ÏRp¸?d ˜«ð£q @  ÏSq¸?d Ø«Å#¢å @  ÏTr¸?d ¬ÜmQê @  ÏUs¸?d X¬~èË @  ÏVt¸?d ˜¬:‹ê5 @  ÏWu¸?d جFO6 @  ÏXv¸?d ­ÔÃÞ @  ÏYw¸?d X­Š ™Ø @  ÏZx¸?d ˜­ªø›& @  Ï[y¸?d Ø­ŸÎš² @  Ï\z¸?d ®Š:s @  Ï]{¸?d X®Ä™ƒR @  Ï^|¸?d ˜®äl¬ @  Ï_}¸?d Ø®f=ÿ @  Ï`~¸?d ¯¶N± @  Ïa¸?d X¯ý<ñ¢ @  Ïb€¸?d ˜¯ÝÉó\ @  Ïc¸?d دèÿòÈ @  Ïd‚¸?d °V!Nz @  Ïeƒ¸?d X°2÷[ @  Ïf„¸?d ˜°°Çõ¥ @  Ïg…¸?d ذŽ P¦ @  Ïh†¸?d ±^BÜN @  Ïi‡¸?d X±A†H @  Ïjˆ¸?d ˜± ´„¶ @  Ïk‰¸?d ر‚…" @  ÏlЏ?d ²ˆÆ%ã @  Ïm‹¸?d X²N՜ @  ÏnŒ¸?d ˜²n ž< @  Ïo¸?d زýLß @  Ïpޏ?d ³-‰7 @  Ïq¸?d X³W±Ý @  Ïr¸?d ˜³6¢³# @  Ïs‘¸?d س”²· @  Ït’¸?d ´ÚA¸ @  Ïu“¸?d X´ÜÉø™ @  Ïv”¸?d ˜´ü<úg @  Ïw•¸?d Ø´Âñ_d @  Ïx–¸?d µ¹ÓŒ @  Ïy—¸?d XµLº‰Š @  Ïz˜¸?d ˜µlO‹t @  Ï{™¸?d صYyŠà @  Ï|š¸?d ¶Ä=*! @  Ï}›¸?d X¶.“ @  Ï~œ¸?d ˜¶"Û‘þ @  Ï¸?d ضíà @  Ï€ž¸?d ·=¨—æ @  ÏŸ¸?d X·›L–Ð @  Ï‚ ¸?d ˜·»¹”. @  Ïƒ¡¸?d Ø·Ž•º @  Ï„¢¸?d ¸ºp§ @  Ï…£¸?d X¸|c † @  Ï†¤¸?d ˜¸\–¢x @  Ï‡¥¸?d ظb[{ @  Ïˆ¦¸?d ¹²‹“ @  Ï‰§¸?d X¹ìÑ• @  ÏЍ¸?d ˜¹ÌåÓk @  Ï‹©¸?d عùÓÒÿ @  ÏŒª¸?d ºd—r> @  Ï«¸?d Xº¢„Ë @  Ïެ¸?d ˜º‚qÉá @  Ï­¸?d غR @  Ï®¸?d »ÁUÞê @  Ï‘¯¸?d X»úæ @  Ï’°¸?d ˜»Úóäþ @  Ï“±¸?d Ø»ïÅåj @  Ï”²¸?d ¼ö‹e @  Ï•³¸?d X¼0˜¯D @  Ï–´¸?d ˜¼m­º @  Ï—µ¸?d ؼ. ¹ @  Ï˜¶¸?d ½þè„Q @  Ï™·¸?d X½ ëÞW @  Ïš¸¸?d ˜½€Ü© @  Ï›¹¸?d ؽµ(Ý= @  Ïœº¸?d ¾(l}ü @  Ï»¸?d X¾îÄÝ @  Ïž¼¸?d ˜¾ΊÆ# @  ÏŸ½¸?d ؾLàzp @  Ï ¾¸?d ¿œ¨ö˜ @  Ï¡¿¸?d X¿Êâ¿ @  Ï¢À¸?d ˜¿êéàA @uÐÀ  Ï£Á¸?d Ø¿ßßáÕ @  Ï¤¸?d 0À»/°‡ @  Ï¥ø?d pÀ}< ¦ @  Ï¦ĸ?d °À]É X @  Ï§Ÿ?d ðÀc®[ @  Ï¨Ƹ?d 0Á³L"³ @  Ï©Ǹ?d pÁíOxµ @  Ïªȸ?d °ÁͺzK @  Ï«ɸ?d ðÁøŒ{ß @  Ï¬ʸ?d 0ÂeÈÛ @  Ï­˸?d p£Ûb? @  Ï®̸?d °Âƒ.`Á @  Ï¯͸?d ðÂBû" @  Ï°θ?d 0ÃÀ wÊ @  Ï±ϸ?d pÃûYO  @  Ï²и?d °ÃÛ¬MÞ @  Ï³Ѹ?d ðÃîšLJ @  Ï´Ò¸?d 0Ä÷Ô¿E @  ÏµÓ¸?d pÄ1Çd @  Ï¶Ô¸?d °Ä2š @  Ï·Õ¸?d ðÄ/ÿ¡™ @  Ï¸Ö¸?d 0Åÿ·-q @  Ï¹׸?d pÅ¡´ww @  Ïºظ?d °ÅAu‰ @  Ï»Ù¸?d ðÅ´wt @  Ï¼Ú¸?d 0Æ)3ÔÜ @  Ï½Û¸?d pÆï mý @  Ï¾ܸ?d °ÆÏÕo @  Ï¿ݸ?d ðÆã¸Õ @  ÏÀÞ¸?d 0Ç3ðY* @  ÏÁ߸?d pÇ•X @  ÏÂà¸?d °ÇµáZâ @  ÏÃá¸?d ðÇ€×[v @  ÏÄâ¸?d 0È´(×k @  ÏÅã¸?d pÈr;nJ @  ÏÆä¸?d °ÈRÎl´ @  ÏÇå¸?d ðÈlÉ· @  ÏÈæ¸?d 0ɼKE_ @  ÏÉç¸?d pÉâHY @  ÏÊè¸?d °É½§ @  ÏËé¸?d ðÉ÷‹3 @  ÏÌê¸?d 0Êjϼò @  ÏÍë¸?d pʬÜÓ @  ÏÎì¸?d °ÊŒ)- @  ÏÏí¸?d ðÊEœÎ @  ÏÐî¸?d 0ËÏ & @  ÏÑï¸?d pËô^(Ì @  ÏÒð¸?d °ËÔ«*2 @  ÏÓñ¸?d ðËá+¦ @  ÏÔò¸?d 0ÌøÓØ© @  ÏÕó¸?d pÌ>Àaˆ @  ÏÖô¸?d °Ì5cv @  Ï×õ¸?d ðÌ øÆu @  ÏØö¸?d 0Íð°J @  ÏÙ÷¸?d pÍ®³› @  ÏÚø¸?d °ÍŽFe @  ÏÛù¸?d ðÍ»pñ @  ÏÜú¸?d 0Î&4³0 @  ÏÝû¸?d pÎà'  @  ÏÞü¸?d °ÎÀÒï @  Ïßý¸?d ðÎB¸´¼ @  Ïàþ¸?d 0Ï’ð8T @  Ïáÿ¸?d pϦå-í @  Ïâ¹?d€ °ÏíLÃý @  Ð¹?d ðÏ9;Š@ @  Ð¹?d 0Їå6ò @  Ð¹?d pЄ¿t> @  Ð¹?d °Ð¤JvÀ @  Ð¹?d ðÐT5Œ¹ @  Ð¹?d 0Ñ„}Q @  Ð¹?d pÑÌ- @  Ð¹?d °Ñ49Ó @  Ð  ¹?d ðÑÄFýª @  Ð  ¹?d 0ÒY]k @  Ð  ¹?d pÒZX§ @  Ð  ¹?d °Òz­Y @  Ð  ¹?d ðÒŠÒç  @  Ð¹?d 0ÓZškÈ @  Ð¹?d pÓÚ2¸ @  Ð¹?d °Ó"/0F @  Ð¹?d ðÓÒPÊ? @  Ð¹?d 0ÔË90 @  Ð¹?d pÔÈD{ü @  Ð¹?d °Ôè±y @  Ð¹?d ðÔ΃{ @  Ð¹?d 0ÕȆ“ @  Ð¹?d pÕX7 ï @  Ð¹?d °Õx @  Ð¹?d ðÕˆ½òh @  Ð¹?d 0ÖùR© @  Ð¹?d pÖ£e @  Ð¹?d °Ö6V› @  Ð¹?d ðÖÆ)èâ @  Ð¹?d 0×ad  @  Ð¹?d p×Â# @  Ð  ¹?d °×âe!è @  Ð!!¹?d ð×Û‘ @  Ð""¹?d 0Ø&åWŒ @  Ð##¹?d pØ%¿@ @  Ð$$¹?d °ØJ¾ @  Ð%%¹?d ðØõ5íÇ @  Ð&&¹?d 0Ù%}a/ @  Ð''¹?d pÙµÌdS @  Ð((¹?d °Ù•9f­ @  Ð))¹?d ðÙeFœÔ @  Ð**¹?d 0Úø< @  Ð++¹?d pÚûX~Ù @  Ð,,¹?d °ÚÛ­|' @  Ð--¹?d ðÚ+Ò†^ @  Ð..¹?d 0Ûûš ¶ @  Ð//¹?d pÛ£ÚSÆ @  Ð00¹?d °Ûƒ/Q8 @  Ð11¹?d ðÛsP«A @  Ð22¹?d 0ÜjXN @  Ð33¹?d pÜiD‚ @  Ð44¹?d °ÜI±| @  Ð55¹?d ðܹÎâ @  Ð66¹?d 0Ýi†ní @  Ð77¹?d pÝù7k‘ @  Ð88¹?d °ÝÙÂio @  Ð99¹?d ðÝ)½“ @  Ð::¹?d 0Þ´ù3× @  Ð;;¹?d pÞ·£q @  Ð<<¹?d °Þ—Vså @  Ð==¹?d ðÞg)‰œ @  Ð>>¹?d 0ß·at @  Ð??¹?d pß=ÇQë @  Ð@@¹?d uÐà/°ß2S @  ÐAA¹?d ðßíM©l @  ÐBB¹?d Hàôé÷š @  ÐCC¹?d ˆàU× v @  ÐDD¹?d Èà×F·¨ @  ÐEE¹?d áuàÖç @  ÐFF¹?d Há÷qÁ9 @  ÐGG¹?d ˆáŤÑe @  ÐHH¹?d ÈáG5Æ» @  ÐII¹?d ⨟‹Ý @  ÐJJ¹?d Hâ*œ @  ÐKK¹?d ˆâ‹0Ëï @  ÐLL¹?d Èâ ¡Ü1 @  ÐMM¹?d 㫽~ @  ÐNN¹?d HãQvu @  ÐO O¹?d ˆãêu:% @  ÐP P¹?d Èãhä-û @  ÐQ Q¹?d äD3S @  ÐR R¹?d HäÕ$ @  ÐS S¹?d ˆä ësa @  ÐT T¹?d Èä¢zd¿ @  ÐU U¹?d åÜð @  ÐV V¹?d Hå‚M. @  ÐW W¹?d ˆå°˜r @  ÐX X¹?d Èå2 ¬ @  ÐY Y¹?d æÝ£XÊ @  ÐZ Z¹?d Hæ_2O @  Ð[ [¹?d ˆæþ ø @  Ð\ \¹?d Èæ|& @  Ð] ]¹?d çÞ;ni @  Ð^ ^¹?d Hç\ªy· @  Ð_ _¹?d ˆç*?+‹ @  Ð` `¹?d È種Á @  Ðuu¹?d íZ²_Ž @  Ðvv¹?d HíØ#HP @  Ðww¹?d ˆíêöX  @  Ðxx¹?d ÈíhgOÒ @  Ðyy¹?d î‡Í´ @  Ðzz¹?d Hî\j @  Ð{{¹?d ˆî¤bB† @  Ð||¹?d Èî&óUX @  Ð}}¹?d ï„U4 @  Ð~~¹?d HïÄ#É @  Ð¹?d ˆïЖÕ @  Ð€€¹?d ÈïR  @  Ð¹?d ðž7@ @  Ð‚‚¹?d Hð¦WÀ @  Ðƒƒ¹?d ˆð½˜, @  Ð„„¹?d Èð? ò @  Ð……¹?d ñ¯v½ @  Ð††¹?d Hñ>ac @  Ð‡‡¹?d ˆñ-ëq? @  Ðˆˆ¹?d Èñ¯zfá @  Ð‰‰¹?d ò@Ð+‡ @  ÐŠй?d HòÂA @  Ð§§¹?d ˆùŒëA @  Ð¨¨¹?d ÈùzŸ @  Ð©©¹?d úáÐJù @  Ðªª¹?d HúcA]' @  Ð««¹?d ˆúÂ Ë @  Ð¬¬¹?d Èú@î @  Ð­­¹?d ûâH|Z @  Ð®®¹?d Hû`Ùk„ @  Ð¯¯¹?d ˆûšý'Ô @  Ð°°¹?d Èûl0  @  Ð±±¹?d üsÌ.¢ @  Ð²²¹?d Hüñ]9| @  Ð³³¹?d ˆüPcn @  Ð´´¹?d ÈüÒòyN @  Ðµµ¹?d ýpT @  Ð¶¶¹?d HýòÅß @  Ð··¹?d ˆýÀƒ @  Ð¸¸¹?d ÈýB] @  Ð¹¹¹?d þ­+E; @  Ðºº¹?d Hþ/ºRå @  Ð»»¹?d ˆþŽ„  @  Ð¼¼¹?d Èþ × @  Ð½½¹?d ÿ®³s˜ @  Ð¾¾¹?d Hÿ,"dF @  Ð¿¿¹?d ˆÿà%ù @  ÐÀuÐŽÀ¹?d Èÿ†q2' @  ÐÁÁ¹?d Žðn—— @  Ð¹?d `Žrÿ€I @  ÐÃù?d  ŽÓÁ×¥ @  ÐÄĹ?d àŽQPÀ{ @  ÐÅŹ?d Žóö¡4 @  ÐÆƹ?d `Žqg¶ê @  ÐÇǹ?d  ŽC²¦¶ @  ÐÈȹ?d àŽÁ#±h @  ÐÉɹ?d Ž.‰ü @  ÐÊʹ?d `ެëÐ @  ÐË˹?d  Ž &¼< @  ÐÌ̹?d àŽ·«â @  ÐÍ͹?d Ž-Ê­ @  ÐÎι?d `ޝ€Ýs @  ÐÏϹ?d  ŽU¤‘# @  ÐÐй?d àŽ×5†ý @  ÐÑѹ?d ޼•˜U @  ÐÒÒ¹?d `Ž>‹ @  ÐÓÓ¹?d  ŽŸ:Øg @  ÐÔÔ¹?d àŽ«Ï¹ @  ÐÕÕ¹?d Ž¿ ®ö @  ÐÖÖ¹?d `Ž=œ¹( @  Ð××¹?d  ŽI©t @  ÐØع?d àŽؾª @  ÐÙÙ¹?d ŽbróÌ @  ÐÚÚ¹?d `Žàãä @  ÐÛÛ¹?d  ŽAݳþ @  ÐÜܹ?d àŽÃL¤  @  ÐÝݹ?d ŽaêÅo @  ÐÞÞ¹?d `Žã{Ò± @  Ðßß¹?d  Ž•î€ @  Ðàà¹?d àŽ—S @  Ðáá¹?d ŽQnöé @  Ðââ¹?d€ `ާ<ý‘ @  Ñã¹?d  ŽçCâT @  Ñä¹?d àŽeÒõŠ @  Ñå¹?d Ž=o( @  Ñæ¹?d ` Ž€¬xö @  Ñç¹?d   Ž|Ë7Ð @  Ñè¹?d à ŽþZ  @  Ñé¹?d ŽßB2 @  Ñê¹?d ` Ž]Ó%Ì @  Ñ ë¹?d   Ž9¤‰Í @  Ñ ì¹?d à Ž»5ž @  Ñ í¹?d ŽÜÚ± @  Ñ î¹?d ` Ž^Ko @  Ñ ï¹?d   ŽÇ|>¥ @  Ñð¹?d à ŽEí){ @  Ññ¹?d ŽM^VI @  Ñò¹?d ` ŽÏÏA— @  Ñó¹?d   Ž«¸í– @  Ñô¹?d à Ž))úH @  Ñõ¹?d ŽNÆ`ê @  Ñö¹?d ` ŽÌWw4 @  Ñ÷¹?d   Ž008 @  Ñø¹?d à Ž²¡/Ì @  Ñù¹?d Ž“¹=Ð @  Ñú¹?d `Ž(* @  Ñû¹?d  Žu_† @  Ñü¹?d àŽ÷ΑÑ @  Ñý¹?d Ž! s @  Ñþ¹?d `ް­ @  Ñÿ¹?d  Ž6ã) @  Ñº?d àŽ´r>Ï @  Ñº?d Ž W)ð @  Ñ º?d `ŽˆÆ>. @  Ñ!º?d  Žì±’/ @  Ñ"º?d àŽn …ñ @  Ñ#º?d Ž ÏS @  Ñ$º?d `Ž‹^ @  Ñ%º?d  Žw9G« @  Ñ&º?d àŽõ¨Pu @  Ñ' º?d ŽÔ°Bi @  Ñ( º?d `ŽV!U· @  Ñ) º?d  Ž2Vù¶ @  Ñ* º?d àŽ°Çîh @  Ñ+ º?d Ž×(tÊ @  Ñ,º?d `ŽU¹c @  Ñ-º?d  ŽÌŽNÞ @  Ñ.º?d àŽNY @  Ñ/º?d ŽF¬&2 @  Ñ0º?d `ŽÄ=1ì @  Ñ1º?d  Ž Jí @  Ñ2º?d àŽ"ÛŠ3 @  Ñ3º?d ŽE4‘ @  Ñ4º?d `ŽÇ¥O @  Ñ5º?d  Ž;ÂHi @  Ñ6º?d àŽ¹S_· @  Ñ7º?d Ž˜KM« @  Ñ8º?d `ŽÚZu @  Ñ9º?d  Ž~­öt @  Ñ:º?d àŽü<᪠@  Ñ;º?d Ž›Ó{ @  Ñ<º?d `ŽBlÖ @  Ñ=º?d  ŽÂxÀ @  Ñ> º?d àŽŸSo @  Ñ?!º?d ŽPN @  Ñ@"º?d `އÁY @  ÑA#º?d  Žã¶õà @  ÑB$º?d àŽa'â @  ÑC%º?d ŽÈx¿ @  ÑD&º?d `Ž„Yoa @  ÑE'º?d  Žx> G @  ÑF(º?d àŽú¯7™ @  ÑG)º?d ŽÛ·%… @  ÑH*º?d `ŽY&2[ @  ÑI+º?d  Ž=QžZ @  ÑJ,º?d àŽ¿À‰„ @  ÑK-º?d ŽØ/& @  ÑL.º?d `ŽZ¾ø @  ÑM/º?d  ŽÉ)2 @  ÑN0º?d àŽA>ì @  ÑO1º?d ŽI«AÞ @  ÑP2º?d `ŽË:V @  ÑQ3º?d  Ž¯Mú @  ÑR4º?d àŽ-Üíß @  ÑS5º?d ŽJ3w} @  ÑT6º?d `ŽÈ¢`£ @  ÑU7º?d  Ž4Å/… @  ÑV8º?d àŽ¶T8[ @  ÑW9º?d Ž—L*G @  ÑX:º?d `ŽÝ=™ @  ÑY;º?d  Žqª‘˜ @  ÑZ<º?d àŽó;†F @  Ñ[=º?d Ž”Ôä @  Ñ\>º?d `ŽE : @  Ñ]?º?d  Žâ• =uÐ Ž @  Ñ^@º?d àŽ`ã @  Ñ_Aº?d 8 Žôh @  Ñ`Bº?d x Ž“eÖ @  ÑaCº?d ¸ Ž÷Ó× @  ÑbDº?d ø ŽuƒÄ  @  ÑcEº?d 8!Žl^« @  ÑdFº?d x!ŽýIu @  ÑeGº?d ¸!ŽlšS @  ÑfHº?d ø!Žî  @  ÑgIº?d 8"ŽÏ‘ @  ÑhJº?d x"ŽM‚O @  ÑiKº?d ¸"Ž)õ¸N @  ÑjLº?d ø"Ž«d¯ @  ÑkMº?d 8#ŽÌ‹52 @  ÑlNº?d x#ŽN"ì @  ÑmOº?d ¸#Ž×-& @  ÑnPº?d ø#ŽU¼ø @  ÑoQº?d 8$Ž]gÊ @  ÑpRº?d x$Žßžp @  ÑqSº?d ¸$Ž»éÜ @  ÑrTº?d ø$Ž9xËË @  ÑsUº?d 8%Ž^—Qi @  ÑtVº?d x%ŽÜF· @  ÑuWº?d ¸%Ž a ‘ @  ÑvXº?d ø%Ž¢ðO @  ÑwYº?d 8&Žƒè S @  ÑxZº?d x&Žy @  Ñy[º?d ¸&Že·Œ @  Ñz\º?d ø&Ž矠R @  Ñ{]º?d 8'Ž€p:ð @  Ñ|^º?d x'Žá-. @  Ñ}_º?d ¸'Ža98 @  Ñ~`º?d ø'Ž„ð.æ @  Ñaº?d 8(Žý¥?Õ @  Ñ€bº?d x(Ž4(  @  Ñcº?d ¸(ŽC„  @  Ñ‚dº?d ø(Ž™Ò“Ô @  Ñƒeº?d 8)Žþ= v @  Ñ„fº?d x)Ž|¬¨ @  Ñ…gº?d ¸)Ž€ËQŽ @  Ñ†hº?d ø)ŽZFP @  Ñ‡iº?d 8*Ž#BTL @  Ñˆjº?d x*Ž¡ÓC’ @  Ñ‰kº?d ¸*ŽŤï“ @  ÑŠlº?d ø*ŽG5øM @  Ñ‹mº?d 8+Ž Úbï @  ÑŒnº?d x+Ž¢Ku1 @  Ñoº?d ¸+Ž;|Xû @  ÑŽpº?d ø+޹íO% @  Ñqº?d 8,ޱ^0 @  Ñrº?d x,Ž3Ï'É @  Ñ‘sº?d ¸,ŽW¸‹È @  Ñ’tº?d ø,ŽÕ)œ @  Ñ“uº?d 8-Ž²Æ´ @  Ñ”vº?d x-Ž0Wj @  Ñ•wº?d ¸-ŽÌ0^L @  Ñ–xº?d ø-ŽN¡I’ @  Ñ—yº?d 8.Žo¹[Ž @  Ñ˜zº?d x.Ží(LP @  Ñ™{º?d ¸.މ_àQ @  Ñš|º?d ø.Ž Î÷ @  Ñ›}º?d 8/Žl!m- @  Ñœ~º?d x/Žî°zó @  Ñº?d ¸/ަ/f @  Ñž€º?d ø/Ž…78¸ @  ÑŸº?d 80Ž;/‡ @  Ñ ‚º?d x0޹ƒ8Y @  Ñ¡ƒº?d ¸0ŽÝô”X @  Ñ¢„º?d ø0Ž_eƒ† @  Ñ£…º?d 81Ž8Š$ @  Ñ¤†º?d x1Žºú @  Ñ¥‡º?d ¸1ŽF|AÜ @  Ñ¦ˆº?d ø1ŽÄíV @  Ñ§‰º?d 82ŽåõD @  Ñ¨Šº?d x2ŽgdSÀ @  Ñ©‹º?d ¸2ŽÿÁ @  ÑªŒº?d ø2Ž‚è @  Ñ«º?d 83Žæmr½ @  Ñ¬Žº?d x3Ždüec @  Ñ­º?d ¸3ŽýËH© @  Ñ®º?d ø3ŽZ_w @  Ñ¯‘º?d 84Žwé E @  Ñ°’º?d x4Žõx7› @  Ñ±“º?d ¸4Ž‘›š @  Ñ²”º?d ø4ŽžŒD @  Ñ³•º?d 85Žtqæ @  Ñ´–º?d x5Žöà8 @  Ñµ—º?d ¸5Ž ‡N @  Ñ¶˜º?d ø5ŽˆYÀ @  Ñ·™º?d 86Ž©KÜ @  Ñ¸šº?d x6Ž+Ÿ\ @  Ñ¹›º?d ¸6ŽOèð @  Ñºœº?d ø6ŽÍyçÝ @  Ñ»º?d 87Žª–} @  Ñ¼žº?d x7Ž(j¡ @  Ñ½Ÿº?d ¸7Ž,‡~· @  Ñ¾ º?d ø7Ž®ii @  Ñ¿¡º?d 88Ž4Hk @  ÑÀ¢º?d x8޶„_µ @  ÑÁ£º?d ¸8ŽÒóó´ @  Ñ¤º?d ø8ŽPbäj @  ÑÃ¥º?d 89Ž7~È @  ÑĦº?d x9޵i @  Ñŧº?d ¸9ŽI{&0 @  Ñƨº?d ø9ŽËê1î @  ÑÇ©º?d 8:Žêò#ò @  ÑȪº?d x:Žhc4, @  ÑÉ«º?d ¸:Ž ˜- @  Ñʬº?d ø:ŽŽ…ó @  ÑË­º?d 8;ŽéjQ @  ÑÌ®º?d x;Žkû @  Ñͯº?d ¸;ŽòÌ/E @  Ñΰº?d ø;Žp]8› @  Ñϱº?d 8<ŽxîG© @  Ñвº?d x<ŽúPw @  Ñѳº?d ¸<Žžüv @  ÑÒ´º?d ø<Ž™ë¨ @  ÑÓµº?d 8=Ž{vq  @  ÑÔ¶º?d x=ŽùçfÔ @  ÑÕ·º?d ¸=Ž€)ò @  ÑÖ¸º?d ø=އ>, @  Ñ×¹º?d 8>ަ ,0 @  Ñغº?d x>Ž$˜;î @  ÑÙ»º?d ¸>Ž@ï—ï @  ÑÚ¼º?d ø>ŽÂ~€1 @  ÑÛ½º?d 8?Ž¥‘“ @  Ñܾº?d x?Ž' M @  ÑÝ¿º?duÐ@Ž7 ¸?ŽÓÐ J @  ÑÞÀº?d ø?Žª/ ” @  Ñß Áº?d P@Žix1% @  Ñà º?d @ŽI3Û @  Ñá ú?d Ð@ŽžŠú @  Ñâ ĺ?d€ AŽž‘ñ @  Ò ź?d PAŽJ港 @  Ò ƺ?d AŽjºQ @  Ò Ǻ?d ÐAŽñYº @  Ò Ⱥ?d BŽl»{ @  Ò ɺ?d PBŽœbA @  Ò ʺ?d B޼—Cü @  Ò ˺?d ÐBŽ´6¥§ @  Ò ̺?d CŽd~)O @  Ò ͺ?d PCŽ”Ó6 @  Ò κ?d CŽ´ôÑÈ @  Ò Ϻ?d ÐCŽJîÏ @  Ò к?d DŽS áÀ @  Ò Ѻ?d PDޣ߹ @  Ò Òº?d DŽƒ*G @  Ò Óº?d ÐDŽ&*Áü @  Ò Ôº?d EŽöbM @  Ò Õº?d PEŽ·m @  Ò Öº?d EŽ&赓 @  Ò ׺?d ÐE޽¢x @  Ò غ?d FŽ æ´¹ @  Ò Ùº?d PFŽЙNÀ @  Ò Úº?d FŽðlL> @  Ò Ûº?d ÐFŽøÍªe @  Ò ܺ?d GŽ(…& @  Ò ݺ?d PGŽØúÜô @  Ò Þº?d GŽøÞ  @  Ò ߺ?d ÐGŽ›¢$Ñ @  Ò àº?d Hޝ]¨Ì @  Ò áº?d PHŽ_"Rµ @  Ò âº?d HŽ×PK @  Ò ãº?d ÐHŽËѯ@ @  Ò äº?d IŽ™#¨ @  Ò! åº?d PIŽëæÙÑ @  Ò" æº?d IŽËÛ/ @  Ò# çº?d ÐIŽPYzÄ @  Ò$ èº?d JŽÍÚ @  Ò% éº?d PJŽ=b | @  Ò& êº?d JŽ—"‚ @  Ò' ëº?d ÐJŽ6ÄÙ @  Ò( ìº?d KŽÅ~H1 @  Ò) íº?d PKŽ5²H @  Ò* îº?d KŽô°¶ @  Ò+ ïº?d ÐKŽëîs± @  Ò, ðº?d LŽò €¾ @  Ò- ñº?d PLŽßzÇ @  Ò. òº?d LŽ"*x9 @  Ò/ óº?d ÐLއ* ‚ @  Ò0 ôº?d MŽWb,j @  Ò1 õº?d PMŽ§Ö @  Ò2 öº?d MއèÔí @  Ò3 ÷º?d ÐMŽ¢u @  Ò4 øº?d NŽæÕÇ @  Ò5 ùº?d PNŽq™/¾ @  Ò6 úº?d NŽQl-@ @  Ò7 ûº?d ÐNŽYÍË @  Ò8 üº?d Oމ…Gó @  Ò9 ýº?d POŽyú½Š @  Ò: þº?d OŽY¿t @  Ò; ÿº?d ÐOލSQ  @  Ò< »?d PŽí’ @  Ò= »?d PPŽæòë @  Ò> »?d PŽÆ @  Ò? »?d ÐPŽÜìŒ @  Ò@ »?d QŽ N`d @  ÒA »?d PQŽü1š @  ÒB »?d QŽÜĘã @  ÒC »?d ÐQŽGŽ9 @  ÒD »?d RŽÚ檃 @  ÒE  »?d PRŽ*µc° @  ÒF  »?d RŽ @aN @  ÒG  »?d ÐRŽá‡ @  ÒH  »?d SŽÒ© ý @  ÒI  »?d PSŽ"Öñ„ @  ÒJ »?d SŽ#óz @  ÒK »?d ÐSŽü90} @  ÒL »?d TŽåwÃr @  ÒM »?d PTŽ9  @  ÒN »?d TŽ5ý;õ @  ÒO »?d ÐTŽk“ØN @  ÒP»?d UŽòÀ @  ÒQ€»?d PUŽô:v @  ÒR€»?d UŽÔx8ˆ @  ÒS€»?d ÐUŽ2²ê @  ÒT»?d VޝöJÞ @  ÒU»?d PVŽ_‰°§ @  ÒV»?d VŽ|²Y @  ÒW»?d ÐVŽwÝT @  ÒX»?d Wާ•Øê @  ÒY»?d PWŽ*jQï @  ÒZ€»?d WŽ ŸS @  Ò[€»?d ÐWŽi2©Ê @  Ò\€ »?d XŽ]Í%× @  Ò]€!»?d PXŽ­²ß® @  Ò^€"»?d XŽGÝP @  Ò_€#»?d ÐXŽ9A"[ @  Ò`€$»?d YŽé ®³ @  Òa€%»?d PYŽvTÊ @  Òb€&»?d YŽ9ƒV4 @  Òc€'»?d ÐYŽ¢É÷ß @  Òd€(»?d ZŽB $b @  Òe)»?d PZ޲rÞ @  Òf*»?d ZŽ’‡Üå @  Òg+»?d ÐZŽš&:¾ @  Òh,»?d [ŽJn¶V @  Òi-»?d P[ŽºL/ @  Òj.»?d [ŽšäNÑ @  Òk/»?d Ð[ŽdþÖ @  Òl0»?d \Ž}°~Ù @  Òm1»?d P\ŽÏ„  @  Òn2»?d \Ž­:†^ @  Òo3»?d Ð\Ž:^å @  Òp4»?d ]ŽØrÒ  @  Òq5»?d P]Ž( (t @  Òr6»?d ]Žø*Š @  Òs7»?d Ð]Ž“²‹a @  Òt8»?d ^Žö+  @  Òu9»?d P^Žþ‰ÑÙ @  Òv:»?d ^ŽÞ|Ó' @  Òw;»?d Ð^ŽÖÝ5| @  Òx<»?d _Ž•¹” @  Òy=»?d P_ŽöêCí @  Òz>»?d _ŽÖA @  ÒuÐ`Ž{?»?d Ð_Ž8bÝ¥ @  Ò|€@»?d (`ކšh= @  Ò}€A»?d h`Žvå’D @  Ò~€B»?d ¨`ŽVº @  Ò€C»?d è`ޝGY @  Ò€€D»?d (aŽÕú @  Ò€E»?d haŽp/ƒ @  Ò‚€F»?d ¨aޝ…-} @  Òƒ€G»?d èaŽ4ÏŒ– @  Ò„€H»?d (bŽ©‹,W @  Ò…€I»?d hbŽYôÖ. @  Ò†€J»?d ¨bŽyÔÐ @  Ò‡€K»?d èbŽq 2‹ @  Òˆ€L»?d (cŽ¡è¾c @  Ò‰€M»?d hcŽQ—D @  ÒŠ€N»?d ¨cŽqbFä @  Ò‹€O»?d ècŽx…ã @  ÒŒ€P»?d (dŽ–6vì @  Ò€Q»?d hdŽfIŒ• @  ÒŽ€R»?d ¨dŽF¼Žk @  Ò€S»?d èdŽã¼VÐ @  Ò€T»?d (eŽ3ôÚ8 @  Ò‘€U»?d heŽË A @  Ò’€V»?d ¨eŽã~"¿ @  Ò“€W»?d èeŽx4ƒT @  Ò”€X»?d (fŽåp#• @  Ò•€Y»?d hfŽÙì @  Ò–€Z»?d ¨fŽ5úÛ @  Ò—€[»?d èfŽ=[=I @  Ò˜€\»?d (gŽí±¡ @  Ò™€]»?d hgŽlKØ @  Òš€^»?d ¨gŽ=™I& @  Ò›€_»?d ègŽ^4³ý @  Òœ€`»?d (hŽjË?à @  Ò€a»?d hhŽš´Å™ @  Òž€b»?d ¨hŽºAÇg @  ÒŸ€c»?d èhŽG8l @  Ò €d»?d (iŽÞ´„ @  Ò¡€e»?d hiŽ.pNý @  Ò¢€f»?d ¨iŽ…L @  Ò£€g»?d èiŽ•Ïíè @  Ò¤€h»?d (jŽ‹M) @  Ò¥€i»?d hjŽøô·P @  Ò¦€j»?d ¨jŽØµ® @  Ò§€k»?d èjŽРSõ @  Ò¨€l»?d (kŽèß @  Ò©€m»?d hkŽð—%d @  Òª€n»?d ¨kŽÐb'š @  Ò«€o»?d èkŽ.xä @  Ò¬€p»?d (lŽ76’ @  Ò­€q»?d hlŽÇIíë @  Ò®€r»?d ¨lŽç¼ï @  Ò¯€s»?d èlŽB¼7® @  Ò°€t»?d (mŽ’ô»F @  Ò±€u»?d hmŽb‹A? @  Ò²€v»?d ¨mŽB~CÁ @  Ò³€w»?d èmŽÙ4â* @  Ò´€x»?d (nŽDpBë @  Òµ€y»?d hnŽ´¸’ @  Ò¶€z»?d ¨nŽ”úºl @  Ò·€{»?d ènŽœ[\7 @  Ò¸€|»?d (oŽLÐß @  Ò¹€}»?d ho޼l*¦ @  Òº€~»?d ¨oŽœ™(X @  Ò»€»?d èoŽ¢“ @  Ò¼€€»?d (pެ|/² @  Ò½€»?d hpŽ\ÕË @  Ò¾€‚»?d ¨pŽ|ö×5 @  Ò¿€ƒ»?d èpŽf÷.¬ @  ÒÀ€„»?d (q޶¿¢D @  ÒÁ€…»?d hqŽFÀX= @  Ò€†»?d ¨qŽf5Zà @  ÒÀ‡»?d èqŽýû( @  ÒÄ€ˆ»?d (rŽ`;[é @  ÒÅ€‰»?d hrŽD¡ @  ÒÆ€Š»?d ¨rް±£n @  ÒÇ€‹»?d èrޏE5 @  ÒÈ€Œ»?d (sŽhXÉÝ @  ÒÉ€»?d hsŽ˜'3¤ @  ÒÊ€Ž»?d ¨sޏÒ1Z @  ÒË€»?d èsŽFÈò] @  ÒÌ€»?d (tŽ_†R @  ÒÍ€‘»?d htޝùû+ @  Ò΀’»?d ¨tŽ ùÕ @  ÒÏ€“»?d ètŽ* !n @  ÒЀ”»?d (uŽúD­† @  ÒÑ€•»?d huŽ ;Wÿ @  ÒÒ€–»?d ¨uŽ*ÎU @  ÒÓ€—»?d èuޱ„ôê @  ÒÔ€˜»?d (vŽ,ÀT+ @  ÒÕ€™»?d hvŽÜ¿®R @  ÒÖ€š»?d ¨vŽüJ¬¬ @  Ò×€›»?d èvŽôëJ÷ @  ÒØ€œ»?d (wŽ$£Æ @  ÒÙ€»?d hwŽÔܘ @  ÒÛ€Ÿ»?d èwŽ—„ÄC @  ÒÜ€ »?d (xŽ£{H^ @  ÒÝ€¡»?d hxŽS²' @  ÒÞ€¢»?d ¨xŽsñ°Ù @  Ò߀£»?d èxŽÇ÷OÒ @  Òà€¤»?d (yŽ¿Ã: @  Òဥ»?d hyŽçÀ9C @  Ò…»?d€ ¨y޳ö' @  Ó€§»?d èyŽÉýÎÙ @  Ó€¨»?d (zŽT¹n @  Ó€©»?d hzŽaoŒ @  Ó€ª»?d ¨zŽAzmr @  Ó€«»?d èzއiÔS @  Ó€¬»?d ({ŽW!X» @  Ó€­»?d h{Žiìý¸ @  Ó€®»?d ¨{ŽIÿF @  Ó €¯»?d è{ŽrJǬ @  Ó €°»?d (|Žk4£ @  Ó €±»?d h|Ž^257 @  Ó €²»?d ¨|Ž~Ç7É @  Ó €³»?d è|Ž¸ÔŽè @  Ó€´»?d (}Žhœ @  Ó€µ»?d h}Žûð™ã @  Ó€¶»?d ¨}ŽÛ› @  Ó€·»?d è}Ž…Á @  Ó€¸»?d (~ŽBaÚ @  Ó€¹»?d h~Ž-t`N @  Ó€º»?d ¨~Ž b° @  Ó€»»?d è~ŽË’Û‘ @  Ó€¼»?d (ŽÚWy @  Ó€½»?d hŽ%òz @  Ó€¾»?d ¨ŽuЀŽ'âð„ @  Ó€¿»?d èŽ.Ö—ß @  ÓÀ»?d @€Ž@hu« @  ÓÁ»?d €€Ž×:a @  Ó»?d À€ŽU«vÁ @  Óû?d ŽÁaTÖ @  ÓÄ»?d @ŽCðC @  ÓÅ»?d €Žcþê{ @  Ó Æ»?d ÀŽáoý¥ @  Ó!Ç»?d ‚Ž ¹¼ @  Ó"È»?d @‚Ž"(b @  Ó#É»?d €‚޵zÖ @  Ó$Ê»?d À‚Ž7ë @  Ó%Ë»?d ƒŽ£!& @  Ó&Ì»?d @ƒŽ!°1Á @  Ó'Í»?d €ƒŽ½â @  Ó(λ?d ÀƒŽ?ˆ–< @  Ó)Ï»?d „ŽŸJ @  Ó*л?d @„Ž•]Ù @  Ó+Ñ»?d €„ŽŠÇIm @  Ó,Ò»?d À„ŽV^³ @  Ó-Ó»?d …Žœœ|¤ @  Ó.Ô»?d @…Ž kz @  Ó/Õ»?d €…Ž/å¹ @  Ó0Ö»?d À…Ž­”òg @  Ó1×»?d †ŽìB~ @  Ó2Ø»?d @†ŽnÓ  @  Ó3Ù»?d €†Žù @  Ó4Ú»?d À†Ž{ Ê @  Ó5Û»?d ‡ŽïÚ)Ý @  Ó6Ü»?d @‡ŽmK> @  Ó7Ý»?d €‡Žñ⎠ @  Ó8Þ»?d À‡Žss™þ @  Ó9ß»?d ˆŽcù  @  Ó:à»?d @ˆŽáhÕ @  Ó;á»?d €ˆŽv:a @  Ó<â»?d ÀˆŽô«¿ @  Ó=ã»?d ‰Ž`a5¨ @  Ó>ä»?d @‰Žâð"v @  Ó?å»?d €‰Žlù— @  Ó@æ»?d À‰ŽîhšI @  ÓAç»?d ŠŽ¯¾wP @  ÓBè»?d @ŠŽ-/`Ž @  ÓCé»?d €ŠŽº}t: @  ÓDê»?d ÀŠŽ8ìcä @  ÓEë»?d ‹Ž¬&Aó @  ÓFì»?d @‹Ž.·V- @  ÓGí»?d €‹Ž²æ @  ÓHî»?d À‹Ž0ñÐ @  ÓIï»?d ŒŽ-ë @  ÓJð»?d @ŒŽ’:5 @  ÓKñ»?d €ŒŽ…À. @  ÓLò»?d ÀŒŽQ9_ @  ÓMó»?d Ž“›H @  ÓNô»?d @Ž – @  ÓOõ»?d €Ž ‚U @  ÓPö»?d ÀŽ¢“•‹ @  ÓQ÷»?d ŽŽãEx’ @  ÓRø»?d @ŽŽaÔoL @  ÓSù»?d €ŽŽö†{ø @  ÓTú»?d ÀŽŽtl& @  ÓUû»?d ŽàÝN1 @  ÓVü»?d @ŽbLYï @  ÓWý»?d €ŽþåéÌ @  ÓXþ»?d ÀŽ|tþ @  ÓYÿ»?d ŽH'Q @  ÓZ¼?d @Žʶh @  Ó[¼?d €Ž]ä|; @  Ó\¼?d ÀŽßukå @  Ó]¼?d ‘ŽK¿Iò @  Ó^¼?d @‘ŽÉ.^, @  Ó_¼?d €‘Žé ÷_ @  Ó`¼?d À‘Žk±à @  Óa¼?d ’Ž*g ˜ @  Ób¼?d @’ލöF @  Óc ¼?d €’Ž?¤ò @  Ód ¼?d À’޽5, @  Óe ¼?d “Ž)ÿ;; @  Óf ¼?d @“Ž«n,å @  Óg ¼?d €“Ž7ÇœÆ @  Óh¼?d À“޵V‹ @  Ói¼?d ”ŽÚW# @  Ój¼?d @”Ž—K@ý @  Ók¼?d €”ŽTI @  Ól¼?d À”Ž‚ˆC— @  Óm¼?d •ŽBa€ @  Ón¼?d @•Ž”Óv^ @  Óo¼?d €•Ž¥Ûø @  Óp¼?d À•Ž'JïC @  Óq¼?d –ŽfœZ @  Ór¼?d @–Žä „ @  Ós¼?d €–Žs_0 @  Ót¼?d À–ŽñÎî @  Óu¼?d —Že4ù @  Óv¼?d @—Žç•#' @  Ów¼?d €—Ž{<“ @  Óx¼?d À—Žù­„Ú @  Óy¼?d ˜Žé'/ @  Óz ¼?d @˜Žk¶ ñ @  Ó{!¼?d €˜ŽüäE @  Ó|"¼?d À˜Ž~u › @  Ó}#¼?d ™Žê¿(Œ @  Ó~$¼?d @™Žh.?R @  Ó%¼?d €™Žq ‚ @  Ó€&¼?d À™Ž‡à·\ @  Ó'¼?d šŽÆ6ZE @  Ó‚(¼?d @šŽD§M› @  Óƒ)¼?d €šŽÓõY/ @  Ó„*¼?d ÀšŽQdNñ @  Ó…+¼?d ›ŽÅ®læ @  Ó†,¼?d @›ŽG?{8 @  Ó‡-¼?d €›ŽÛ–Ë @  Óˆ.¼?d À›ŽYÜÅ @  Ó‰/¼?d œŽù‹þ @  ÓŠ0¼?d @œŽ{  @  Ó‹1¼?d €œŽìH” @  ÓŒ2¼?d ÀœŽnÙJ @  Ó3¼?d Žú6] @  ÓŽ4¼?d @Žx‚!ƒ @  Ó5¼?d €ŽIН@ @  Ó6¼?d ÀŽË¸ž @  Ó‘7¼?d žŽŠÍU‡ @  Ó’8¼?d @žŽ\BY @  Ó“9¼?d €žŽŸVí @  Ó”:¼?d ÀžŽŸA3 @  Ó•;¼?d ŸŽ‰Uc$ @  Ó–<¼?d @ŸŽ Ätú @  Ó—=¼?d €ŸŽ—mÄÙ @  Ó˜>¼uРŽ?d ÀŸŽüÓ @  Ó™?¼?d  Ž°Ò˜ @  Óš@¼?d X Ž2CF @  Ó›A¼?d ˜ Ž¥ ò @  ÓœB¼?d Ø Ž'€, @  ÓC¼?d ¡Ž³J8; @  ÓžD¼?d X¡Ž1Û/å @  ÓŸE¼?d ˜¡ŽÕ†– @  Ó F¼?d Ø¡Ž“D‘H @  Ó¡G¼?d ¢ŽÒ’|Q @  Ó¢H¼?d X¢ŽPk @  Ó£I¼?d ˜¢ŽÇQ; @  Ó¤J¼?d Ø¢ŽEÀhå @  Ó¥K¼?d £ŽÑ Jò @  Ó¦L¼?d X£ŽS›], @  Ó§M¼?d ˜£ŽÏ2í @  Ó¨N¼?d Ø£ŽM£úÑ @  Ó©O¼?d ¤Ží/&ê @  ÓªP¼?d X¤Žo¾14 @  Ó«Q¼?d ˜¤Žøì%€ @  Ó¬R¼?d ؤŽz}2^ @  Ó­S¼?d ¥Žî·I @  Ó®T¼?d X¥Žl&— @  Ó¯U¼?d ˜¥Ž].‰T @  Ó°V¼?d Ø¥Žß¿žŠ @  Ó±W¼?d ¦Žžis“ @  Ó²X¼?d X¦ŽødM @  Ó³Y¼?d ˜¦Ž‹ªpù @  Ó´Z¼?d ئŽ ;g' @  Óµ[¼?d §ŽñE0 @  Ó¶\¼?d X§Ž`Rî @  Ó·]¼?d ˜§ŽƒÉâÍ @  Ó¸^¼?d اŽXõ @  Ó¹_¼?d ¨ŽÒoæ @  Óº`¼?d X¨Ž“Cx8 @  Ó»a¼?d ˜¨ŽlŒ @  Ó¼b¼?d بކ€{R @  Ó½c¼?d ©ŽJYE @  Ó¾d¼?d X©ŽÛN› @  Ó¿e¼?d ˜©ŽÒáz @  ÓÀf¼?d Ø©ŽœCö¤ @  ÓÁg¼?d ªŽÝ•½ @  ÓÂh¼?d XªŽ_ c @  ÓÃi¼?d ˜ªŽÈV× @  ÓÄj¼?d تŽJÇ  @  ÓÅk¼?d «ŽÞ - @  ÓÆl¼?d X«Ž\œ:À @  ÓÇm¼?d ˜«ŽÀ5Šã @  ÓÈn¼?d Ø«ŽB¤= @  ÓÉo¼?d ¬Žâ(A @  ÓÊp¼?d X¬Ž`¹VØ @  ÓËq¼?d ˜¬Ž÷ëBl @  ÓÌr¼?d جŽuzU² @  ÓÍs¼?d ­Žá°w¥ @  ÓÎt¼?d X­Žc!`{ @  ÓÏu¼?d ˜­ŽR)î¸ @  ÓÐv¼?d Ø­Žиùf @  ÓÑw¼?d ®Ž‘n @  ÓÒx¼?d X®Žÿ¡ @  ÓÓy¼?d ˜®Ž„­ @  ÓÔz¼?d Ø®Ž<Ë @  ÓÕ{¼?d ¯Ž’ö"Ü @  ÓÖ|¼?d X¯Žg5 @  Ó×}¼?d ˜¯ŽŒÎ…! @  ÓØ~¼?d دŽ_’ÿ @  ÓÙ¼?d °Žyby& @  ÓÚ€¼?d X°Žûónø @  ÓÛ¼?d ˜°Žl¡zL @  ÓÜ‚¼?d ذŽî0m’ @  Ó݃¼?d ±ŽzúO… @  ÓÞ„¼?d X±ŽøkX[ @  Óß…¼?d ˜±ŽØeñ( @  Óà†¼?d رŽZôæö @  Óᇼ?d ²Ž" ï @  Ó∼?d€ X²Žå´ˆ @  Ô‰¼?d ˜²Žiöè @  Ôм?d زŽëgÿË @  Ô‹¼?d ³Žºä&1 @  ÔŒ¼?d X³Ž8u1ï @  Ô¼?d ˜³ŽjnÞ¶ @  Ô޼?d سŽèÿÉh @  Ô¼?d ´Ž†ÁJ) @  Ô¼?d X´ŽP]÷ @  Ô ‘¼?d ˜´ŽVK²® @  Ô ’¼?d Ø´ŽÔÚ¥p @  Ô “¼?d µŽ…Y|Š @  Ô ”¼?d XµŽÈkT @  Ô •¼?d ˜µŽUÓ„  @  Ô–¼?d صŽ×B“Ó @  Ô—¼?d ¶Žõ‡P @  Ô˜¼?d X¶ŽwŽ @  Ô™¼?d ˜¶Ž% ç× @  Ôš¼?d ضާœð  @  Ô›¼?d ·Žö)ó @  Ôœ¼?d X·ŽtŽ>- @  Ô¼?d ˜·Ž&•Ñt @  Ôž¼?d Ø·Ž¤ƪ @  ÔŸ¼?d ¸Žz<% @  Ô ¼?d X¸Žø­û @  Ô¡¼?d ˜¸Žª¶û¢ @  Ô¢¼?d ظŽ('ì| @  Ô£¼?d ¹Žy¤5† @  Ô¤¼?d X¹Žû5"X @  Ô¥¼?d ˜¹Ž©.Í @  Ô¦¼?d عŽ+¿Úß @  Ô§¼?d ºŽ|qì @  Ô ¨¼?d XºŽšíf2 @  Ô!©¼?d ˜ºŽÈö‰k @  Ô"ª¼?d غŽJgžµ @  Ô#«¼?d »ŽäGO @  Ô$¬¼?d X»Ž™uP‘ @  Ô%­¼?d ˜»ŽËn¿È @  Ô&®¼?d Ø»ŽIÿ¨ @  Ô'¯¼?d ¼Ž'Á+W @  Ô(°¼?d X¼Ž¥P<‰ @  Ô)±¼?d ˜¼Ž÷KÓÐ @  Ô*²¼?d ؼŽuÚÄ @  Ô+³¼?d ½Ž$Yô @  Ô,´¼?d X½Ž¦È * @  Ô-µ¼?d ˜½ŽôÓås @  Ô.¶¼?d ؽŽvBò­ @  Ô/·¼?d ¾ŽT‡~. @  Ô0¸¼?d X¾ŽÖið @  Ô1¹¼?d ˜¾Ž„ †© @  Ô2º¼?d ؾŽœ‘w @  Ô3»¼?d ¿ŽWH @  Ô4¼¼?d X¿ŽÕŽ_S @  Ô5½¼?d ˜¿Ž‡•°  @uÐÀŽ  Ô6¾¼?d Ø¿Ž§Ô @  Ô7¿¼?d 0ÀŽ{cª @  Ô8À¼?d pÀŽùò½Û @  Ô9Á¼?d °ÀŽ«éR‚ @  Ô:¼?d ðÀŽ)xE\ @  Ô;ü?d 0ÁŽxûœ¦ @  Ô<ļ?d pÁŽúj‹x @  Ô=ż?d °Áލqd! @  Ô>Ƽ?d ðÁŽ*àsÿ @  Ô?Ǽ?d 0ÂŽ·$Þ^ @  Ô@ȼ?d pÂŽ5µÉ€ @  ÔAɼ?d °ÂŽg®&Ù @  ÔBʼ?d ðÂŽå?1 @  ÔC˼?d 0ÃŽ´¼èý @  ÔD̼?d pÃŽ6-ÿ# @  ÔEͼ?d °ÃŽd6z @  ÔFμ?d ðÎ槤 @  ÔGϼ?d 0ÄŽˆ™„å @  ÔHм?d pÄŽ “; @  ÔIѼ?d °ÄŽX|b @  ÔJÒ¼?d ðÄŽÚ‚k¼ @  ÔKÓ¼?d 0ÅŽ‹²F @  ÔLÔ¼?d pÅŽ ¥˜ @  ÔMÕ¼?d °ÅŽ[‹JÁ @  ÔNÖ¼?d ðÅŽÙ] @  ÔO×¼?d 0ÆŽûßÑœ @  ÔPؼ?d pÆŽyNÆB @  ÔQÙ¼?d °ÆŽ+U) @  ÔRÚ¼?d ðÆŽ©Ä>Å @  ÔSÛ¼?d 0ÇŽøGç? @  ÔTܼ?d pÇŽzÖðá @  ÔUݼ?d °ÇŽ(͸ @  ÔVÞ¼?d ðÇŽª\f @  ÔWß¼?d 0ÈŽtdÍé @  ÔXà¼?d pÈŽöõÚ7 @  ÔYá¼?d °Èޤî5n @  ÔZâ¼?d ðÈŽ&"° @  Ô[ã¼?d 0ÉŽwüûJ @  Ô\ä¼?d pÉŽõmì” @  Ô]å¼?d °ÉާvÍ @  Ô^æ¼?d ðÉŽ%ç @  Ô_ç¼?d 0ÊŽ$¿  @  Ô`è¼?d pÊŽ”µ¨þ @  Ôaé¼?d °ÊŽÆ®G§ @  Ôbê¼?d ðÊŽD?Py @  Ôcë¼?d 0ËŽ¼‰ƒ @  Ôdì¼?d pËŽ—-ž] @  Ôeí¼?d °ËŽÅ6q @  Ôfî¼?d ðËŽG§fÚ @  Ôgï¼?d 0ÌŽ)™å› @  Ôhð¼?d pÌŽ«òE @  Ôiñ¼?d °ÌŽù @  Ôjò¼?d ðÌŽ{‚  @  Ôkó¼?d 0ÍŽ*Ó8 @  Ôlô¼?d pÍŽ¨Äæ @  Ômõ¼?d °ÍŽú‹+¿ @  Ônö¼?d ðÍŽxp0 @  Ôz½?d ðÐŽŸ¯gî @  Ô{½?d 0ÑŽÎ,¾ @  Ô|½?d pÑŽL½©Ê @  Ô}½?d °ÑަF“ @  Ô~½?d ðÑŽœ7QM @  Ô½?d 0ÒŽâ¥ÌÝ @  Ô€½?d pÒŽ`4Û @  Ô ½?d °ÒŽ2/4Z @  Ô‚ ½?d ðÒŽ°¾#„ @  Ôƒ ½?d 0ÓŽá=ú~ @  Ô„ ½?d pÓŽc¬í  @  Ô… ½?d °ÓŽ1·ù @  Ô†½?d ðÓŽ³&' @  Ô‡½?d 0ÔŽÝ–f @  Ôˆ½?d pÔŽ_‰¸ @  Ô‰½?d °ÔŽ ’ná @  Ôн?d ðÔŽy? @  Ô‹½?d 0ÕŽÞ€ Å @  ÔŒ½?d pÕŽ\· @  Ô½?d °ÕŽ XB @  Ô޽?d ðÕŽŒ›Oœ @  Ô½?d 0ÖŽ®^à @  Ô½?d pÖŽ,ÏÔÁ @  Ô‘½?d °ÖŽ~Ô;˜ @  Ô’½?d ðÖŽüE,F @  Ô“½?d 0׎­Æõ¼ @  Ô”½?d p׎/Wâb @  Ô•½?d °×Ž}L ; @  Ô–½?d ð׎ÿÝå @  Ô—½?d 0ØŽ!åßj @  Ô˜ ½?d pØŽ£tÈ´ @  Ô™!½?d °ØŽño'í @  Ôš"½?d ðØŽsþ03 @  Ô›#½?d 0ÙŽ"}éÉ @  Ôœ$½?d pÙŽ ìþ @  Ô%½?d °ÙŽò÷N @  Ôž&½?d ðÙŽpf @  ÔŸ'½?d 0ÚŽC¥­£ @  Ô (½?d pÚŽÁ4º} @  Ô¡)½?d °ÚŽ“/U$ @  Ô¢*½?d ðÚŽ¾Bú @  Ô£+½?d 0ÛŽ@=› @  Ô¤,½?d pÛŽ¬ŒÞ @  Ô¥-½?d °ÛŽ·c‡ @  Ô¦.½?d ðÛŽ&tY @  Ô§/½?d 0ÜŽ|÷ @  Ô¨0½?d pÜŽþ‰àÆ @  Ô©1½?d °Üެ’Ÿ @  Ôª2½?d ðÜŽ.A @  Ô«3½?d 0ÝŽ€Á» @  Ô¬4½?d pÝŽýÖe @  Ô­5½?d °Ýޝ 9< @  Ô®6½?d ðÝŽ-›.â @  Ô¯7½?d 0ÞŽ^¢a @  Ô°8½?d pÞŽϵ¿ @  Ô±9½?d °ÞŽßÔZæ @  Ô²:½?d ðÞŽ]EM8 @  Ô³;½?d 0ߎ Ɣ @  Ô´<½?d pߎŽWƒ @  Ôµ=½?d uÐàŽ/°ßŽÜLlE @  Ô¶>½?d ðߎ^Ý{› @  Ô·?½?d HàŽ]îyî @  Ô¸@½?d ˆàŽ}{ @  Ô¹A½?d ÈàŽdi @  ÔºB½?d áŽ],  @  Ô»C½?d HáŽ^vOM @  Ô¼D½?d ˆáŽ~ƒM³ @  Ô½E½?d Èᎎü·Ê @  Ô¾F½?d ⎸  @  Ô¿G½?d H⎑© µ @  ÔÀH½?d ˆâޱ\K @  ÔÁI½?d ÈâŽA#õ2 @  ÔÂJ½?d ㎑kyÚ @  ÔÃK½?d H㎒1; @  ÔÄL½?d ˆã޲Ä9è @  ÔÅM½?d ÈãŽB»Ã‘ @  ÔÆN½?d äŽ[õ0ž @  ÔÇO½?d H䎮W @  ÔÈP½?d ˆäŽŽáUð @  ÔÉQ½?d ÈäŽ~ž¯‰ @  ÔÊR½?d 厮Ö#a @  ÔËS½?d H厭Œa­ @  ÔÌT½?d ˆåŽycS @  ÔÍU½?d ÈåŽ}™* @  ÔÎV½?d æŽàB9ë @  ÔÏW½?d HæŽÝRw @  ÔÐX½?d ˆæŽý§‰ @  ÔÑY½?d ÈæŽ Øúð @  ÔÒZ½?d çŽÝv @  ÔÓ[½?d HçŽÞÊ4Ô @  ÔÔ\½?d ˆçŽþ?6* @  ÔÕ]½?d ÈçŽ@ÌS @  ÔÖ^½?d èŽ:¿@N @  Ô×_½?d HèŽRé @  ÔØ`½?d ˆèŽrü @  ÔÙa½?d È莂cæ… @  ÔÚb½?d éŽR+jm @  ÔÛc½?d HéŽQq(¡ @  ÔÜd½?d ˆéŽq„*_ @  ÔÝe½?d ÈéŽûÐ& @  ÔÞf½?d ꎿpç @  Ôßg½?d HêŽ0©lË @  Ôàh½?d ˆêŽ\n5 @  Ôái½?d ÈêŽà#”L @  Ôâj½?d€ ëŽD¨ @  Õk½?d H뎦³ç @  Õl½?d ˆëކF  @  Õm½?d È뎳p  @  Õn½?d 쎪>þ‚ @  Õo½?d H쎑mÆh @  Õp½?d ˆìޱ˜Ä– @  Õq½?d ÈìŽUa• @  Õr½?d íŽ_í} @  Õ s½?d H펙T\ @  Õ t½?d ˆí޹ûV¢ @  Õ u½?d È펌ÍW6 @  Õ v½?d ÷÷ @  Õ w½?d HîŽOŠ­ñ @  Õx½?d ˆîŽo¯ @  Õy½?d ÈîŽü4ì @  Õz½?d ïŽ,[¸ @  Õ{½?d HïŽêH% @  Õ|½?d ˆïŽʽÛ @  Õ}½?d ÈïŽÿ‹O @  Õ~½?d ðŽAU¾ý @  Õ½?d HðŽ 'þH @  Õ€½?d ˆðŽ*Òü¶ @  Õ½?d ÈðŽYµ @  Õ‚½?d ñŽÄWÕ] @  Õƒ½?d HñŽDl| @  Õ„½?d ˆñŽ"±n‚ @  Õ…½?d Èñއo @  Õ†½?d òŽŠÃÏ× @  Õ‡½?d HòŽÔÀ•Ñ @  Õˆ½?d ˆòŽô5—/ @  Õ‰½?d ÈòŽv_+| @  Õ н?d 󎦧” @  Õ!‹½?d HóŽ`µ @  Õ"Œ½?d ˆóŽ@ñK @  Õ#½?d ÈóŽuÇß @  Õ$޽?d ôŽl‰îÐ @  Õ%½?d HôŽWÚÖ: @  Õ&½?d ˆôŽw/ÔÄ @  Õ'‘½?d ÈôŽIâqÇ @  Õ(’½?d õŽ™ªý/ @  Õ)“½?d HõŽ_¹D @  Õ*”½?d ˆõŽLFð @  Õ+•½?d ÈõŽJzGd @  Õ,–½?d öŽ×>ç¥ @  Õ-—½?d Höމ=½£ @  Õ.˜½?d ˆöŽ©È¿] @  Õ/™½?d ÈöŽ:¤$¾ @  Õ0š½?d ÷Žêì¨V @  Õ1›½?d H÷Ž,ÿw @  Õ2œ½?d ˆ÷Ž ‰ @  Õ3½?d È÷Ž9< @  Õ4ž½?d øŽ Þ @  Õ5Ÿ½?d HøŽ«'Ÿ6 @  Õ6 ½?d ˆøŽ‹ÒÈ @  Õ7¡½?d ÈøŽµ8Ë @  Õ8¢½?d ùŽeW´# @  Õ9£½?d HùŽ£D  @  Õ:¤½?d ˆùŽƒ±ü @  Õ;¥½?d Èù޶‡h @  Õ<¦½?d úŽ+î© @  Õ=§½?d HúŽuÀô¯ @  Õ>¨½?d ˆúŽU5öQ @  Õ?©½?d ÈúŽyXL @  Õ@ª½?d ûŽ©Àx @  ÕA«½?d HûŽoyY @  ÕB¬½?d ˆûŽOö{§ @  ÕC­½?d ÈûŽzÀz3 @  ÕD®½?d üŽcމ< @  ÕE¯½?d HüŽXݱÖ @  ÕF°½?d ˆüŽx(³( @  ÕG±½?d ÈüŽFå+ @  ÕH²½?d ýŽ–­šÃ @  ÕI³½?d HýŽP¾#â @  ÕJ´½?d ˆýŽpK! @  ÕKµ½?d ÈýŽE} ˆ @  ÕL¶½?d þŽØ9€I @  ÕM·½?d Hþކ:ÚO @  ÕN¸½?d ˆþަÏر @  ÕO¹½?d ÈþŽ5£CR @  ÕPº½?d ÿŽåëϺ @  ÕQ»½?d HÿŽ#øv› @  ÕR¼½?d ˆÿŽ te @  ÕSuн½?d ÈÿŽ6;uñ @  ÕT¾½?d y] @  ÕU¿½?d `/;I' @  ÕVÀ½?d  ÎKÙ @  ÕWÁ½?d à1îÚ @  ÕX½?d áKb2 @  ÕYý?d `'XÛ @  ÕZĽ?d  ­Ùí @  Õ[Ž?d à2›Øy @  Õ\ƽ?d ¯ßx¸ @  Õ]ǽ?d `ñÜ"¾ @  Õ^Ƚ?d  Ñ) @ @  Õ_ɽ?d àSCœ @  Õ`ʽ?d ƒ û @  Õa˽?d `E©Ú @  Õb̽?d  eí«$ @  Õcͽ?d àPÛª° @  Õdν?d I•Y¿ @  ÕeϽ?d `rÆaU @  Õfн?d  R3c« @  Õgѽ?d àlþƨ @  ÕhÒ½?d ¼¶J@ @  ÕiÓ½?d `z¥óa @  ÕjÔ½?d  ZPñŸ @  ÕkÕ½?d àofð  @  ÕlÖ½?d ò"PÊ @  Õm×½?d `¬! Ì @  Õnؽ?d  ŒÔ2 @  ÕoÙ½?d à¸“Ñ @  ÕpÚ½?d Ïð9 @  ÕqÛ½?d ` 㦠@  Õrܽ?d  )¤æ @  Õsݽ?d à ¥r @  ÕtÞ½?d (ß)o @  Õuß½?d `Ž;(Y @  Õvà½?d  ®Î*§ @  Õwá½?d ठ@  Õxâ½?d @KL @  Õyã½?d ` †Xºm @  Õzä½?d   ¦­¸“ @  Õ{å½?d à “›¹ @  Õ|æ½?d ߯ @  Õ}ç½?d ` PÜCÀ @  Õ~è½?d   p)A> @  Õé½?d à ¿ËÎ @  Õ€ê½?d oZG& @  Õë½?d ` ©Iþ @  Õ‚ì½?d   ‰¼üù @  Õƒí½?d à ¼Šým @  Õ„î½?d ¥Äb @  Õ…ï½?d ` ž—6ˆ @  Õ†ð½?d   ¾b4v @  Õ‡ñ½?d à €¯‘u @  Õˆò½?d Pç @  Õ‰ó½?d ` –ô¤¼ @  ÕŠô½?d   ¶¦B @  Õ‹õ½?d à ƒ7§Ö @  ÕŒö½?d s @  Õ÷½?d `@p] @  ÕŽø½?d  `…_ï @  Õù½?d àóéÄ  @  Õú½?d #¡Hä @  Õ‘û½?d `å²ñÅ @  Õ’ü½?d  ÅGó; @  Õ“ý½?d àðqò¯ @  Õ”þ½?d N¯N @  Õ•ÿ½?d `Șn @  Õ–¾?d  èml @  Õ—¾?d àÖ É| @  Õ˜¾?d èE” @  Õ™¾?d `Àûüµ @  Õš¾?d  àþK @  Õ›¾?d àÕ8ÿß @  Õœ¾?d H|_ @  Õ¾?d ` @  Õž¾?d  6Šæ @  ÕŸ ¾?d à´à»µ @  Õ  ¾?d d¨7] @  Õ¡ ¾?d `¢»Ž| @  Õ¢ ¾?d  ‚NŒ‚ @  Õ£ ¾?d à·x @  Õ¤¾?d ®6~ @  Õ¥¾?d `•eFó @  Õ¦¾?d  µD  @  Õ§¾?d à‹]á @  Õ¨¾?d [mæ @  Õ©¾?d `ÔÇ @  Õª¾?d  ½óÖ9 @  Õ«¾?d àˆÅ×­ @  Õ¬¾?d wl @  Õ­¾?d `K‚-j @  Õ®¾?d  kw/” @  Õ¯¾?d àø´w @  Õ°¾?d (S8Ÿ @  Õ±¾?d `î@¾ @  Õ²¾?d  εƒ@ @  Õ³¾?d àûƒ‚Ô @  Õ´¾?d Ï|É @  Õµ¾?d `i˜ÿ @  Õ¶ ¾?d  Im  @  Õ·!¾?d àw ¨ @  Õ¸"¾?d §è$ê @  Õ¹#¾?d `aûË @  Õº$¾?d  AŸ5 @  Õ»%¾?d àt8ž¡ @  Õ¼&¾?d é|>` @  Õ½'¾?d `·df @  Õ¾(¾?d  —Šf˜ @  Õ¿)¾?d à»çÜY @  ÕÀ*¾?d k¯P± @  ÕÁ+¾?d `­¼é @  ÕÂ,¾?d  Iën @  ÕÃ-¾?d à¸êú @  ÕÄ.¾?d ¡1õ @  ÕÅ/¾?d `šb! @  ÕÆ0¾?d  º—#á @  ÕÇ1¾?d à„Z†â @  ÕÈ2¾?d T  @  ÕÉ3¾?d `’³+ @  ÕÊ4¾?d  ²ô±Õ @  ÕË5¾?d à‡Â°A @  ÕÌ6¾?d †€ @  ÕÍ7¾?d `D…J† @  ÕÎ8¾?d  dpHx @  ÕÏ9¾?d à÷Ó› @  ÕÐ:¾?d 'T_s @  ÕÑ;¾?d `áGæR @  ÕÒ<¾?d  Á²ä¬uÐ  @  ÕÓ=¾?d àÍC9í @  ÕÔ >¾?d 8 ¼Hç‹ @  ÕÕ ?¾?d x êüó¬ @  ÕÖ @¾?d ¸ Ê ñR @  Õ× A¾?d ø ôÄTQ @  ÕØ B¾?d 8!$ŒØ¹ @  ÕÙ C¾?d x!âŸa˜ @  ÕÚ D¾?d ¸!Âjcf @  ÕÛ E¾?d ø!÷\bò @  ÕÜ F¾?d 8"jÂ3 @  ÕÝ G¾?d x"4˜5 @  ÕÞ H¾?d ¸"îšË @  Õß I¾?d ø"–„&˜ @  Õà J¾?d 8#F̪p @  Õá K¾?d x#€ßQ @  Õâ L¾?d€ ¸#amæ¯ @  Ö M¾?d ø#µ¯ @  Ö N¾?d 8$¬T\ @  Ö O¾?d x$RNŸ @  Ö P¾?d ¸$r»ä @  Ö Q¾?d ø$‚Äg @  Ö R¾?d 8%RŒëu @  Ö S¾?d x%Z- . @  Ö T¾?d ¸%zØÐ @  Ö U¾?d ø%Чõ© @  Ö V¾?d 8&ình @  Ö W¾?d x&wÇσ @  Ö X¾?d ¸&W2Í} @  Ö Y¾?d ø&§M7 @  ÖZ¾?d 8'w»ì @  Ö[¾?d x'ÒcW @  Ö\¾?d ¸'òða© @  Ö]¾?d ø'›Ð @  Ö^¾?d 8(6pÍ @  Ö_¾?d x(UÝí @  Ö`¾?d ¸(u(ïè @  Öa¾?d ø(…W‘ @  Öb¾?d 8)U™y @  Öc¾?d x)]¾" @  Öd¾?d ¸)}K}Ü @  Öe¾?d ø)4‡¥ @  Öf¾?d 8*p'd @  Ög¾?d x*‹:† @  Öh¾?d ¸*«Ï„q @  Öi¾?d ø*[°~ @  Öj¾?d 8+‹øòà @  Ök¾?d x+?þ ë @  Ö l¾?d ¸+  @  Ö!m¾?d ø+ïtõl @  Ö"n¾?d 8,ö:c @  Ö#o¾?d x, Åd @  Ö$p¾?d ¸,(ÕÇš @  Ö%q¾?d ø,ت=ã @  Ö&r¾?d 8-â±  @  Ö's¾?d x-CWP @  Ö(t¾?d ¸- ¶U® @  Ö)u¾?d ø-Ðɯ× @  Ö*v¾?d 8.M @  Ö+w¾?d x.ÖÇ®ý @  Ö,x¾?d ¸.ö2¬ @  Ö-y¾?d ø.MVz @  Ö.z¾?d 8/ÖÚ’ @  Ö/{¾?d x/s) @  Ö0|¾?d ¸/Sð× @  Ö1}¾?d ø/£ú® @  Ö2~¾?d 80QF @  Ö3¾?d x0“jýD @  Ö4€¾?d ¸0³Ÿÿº @  Ö5¾?d ø0Càà @  Ö6‚¾?d 81“¨‰+ @  Ö7ƒ¾?d x1› op @  Ö8„¾?d ¸1»ümŽ @  Ö9…¾?d ø1Kƒ—÷ @  Ö:†¾?d 82ÖÇ76 @  Ö;‡¾?d x2M–Ý @  Ö<ˆ¾?d ¸2mx”# @  Ö=‰¾?d ø2nZ @  Ö>о?d 83MOâ² @  Ö?‹¾?d x3WN+ @  Ö@Œ¾?d ¸3w»Õ @  ÖA¾?d ø3‡Ä㬠@  ÖB޾?d 84žŠ£ @  ÖC¾?d x4`Ó¤ @  ÖD¾?d ¸4@eÑZ @  ÖE‘¾?d ø4°+# @  ÖF’¾?d 85`R§Ë @  ÖG“¾?d x5hóA @  ÖH”¾?d ¸5HCn @  ÖI•¾?d ø5¸y¹ @  ÖJ–¾?d 86%=Ö @  ÖK—¾?d x6¾w¸= @  ÖL˜¾?d ¸6ž‚ºÃ @  ÖM™¾?d ø6ný@º @  ÖNš¾?d 87¾µÌR @  ÖO›¾?d x7µé @  ÖPœ¾?d ¸7;@ @  ÖQ¾?d ø7Ë?ìn @  ÖRž¾?d 88ÿÀ`s @  ÖSŸ¾?d x8œmš¨ @  ÖT ¾?d ¸8¼˜˜V @  ÖU¡¾?d ø8Lçb/ @  ÖV¢¾?d 89œ¯îÇ @  ÖW£¾?d x9”œ @  ÖX¤¾?d ¸9´û b @  ÖY¥¾?d ø9D„ð @  ÖZ¦¾?d 8:ÙÀPÚ @  Ö[§¾?d x:BŠñ1 @  Ö\¨¾?d ¸:bóÏ @  Ö]©¾?d ø:’ ¶ @  Ö^ª¾?d 8;BH…^ @  Ö_«¾?d x;öNzU @  Ö`¬¾?d ¸;Ö»x« @  Öa­¾?d ø;&Ä‚Ò @  Öb®¾?d 8<?ŠqÝ @  Öc¯¾?d x<Á²Ú @  Öd°¾?d ¸<áe°$ @  Öe±¾?d ø<J] @  Öf²¾?d 8=ÁRƵ @  Ög³¾?d x=Éó î @  Öh´¾?d ¸=é" @  Öiµ¾?d ø=yØi @  Öj¶¾?d 8>„=x¨ @  Ök·¾?d x>wÙC @  Öl¸¾?d ¸>?‚Û½ @  Öm¹¾?d ø>Ïý!Ä @  Önº¾?d 8?µ­, @  Öo»¾?d x?ºµu— @  Öp¼¾?duÐ@7 ¸?š@wi @  Öq½¾?d ø?¨–jÅ @  Ör¾¾?d P@k:Ðù @  Ös¿¾?d @Z£* @  ÖtÀ¾?d Ð@Ø2=Í @  ÖuÁ¾?d Az”\‚ @  Öv¾?d PAøK\ @  Öwþ?d ARÀ¸' @  Öxľ?d ÐAÐQ¯ù @  Öyž?d B?û⟠@  Özƾ?d PB½jõA @  Ö{Ǿ?d B„DAŠ @  Ö|Ⱦ?d ÐBÕVT @  Ö}ɾ?d C¤s7 @  Ö~ʾ?d PC&â Å @  Ö˾?d C}ÑüM @  Ö€̾?d ÐCÿ@ë“ @  Ö;?d D”àõ; @  Ö‚ξ?d PDqâå @  ÖƒϾ?d DJ4 @  Ö„о?d ÐDÈž# @  Ö…Ѿ?d Ej8BS @  Ö†Ò¾?d PEè©U @  Ö‡Ó¾?d EBl¦ö @  ÖˆÔ¾?d ÐEÀý±( @  Ö‰Õ¾?d F/WüN @  ÖŠÖ¾?d PF­Æë @  Ö‹×¾?d F”è_[ @  ÖŒؾ?d ÐFyH… @  ÖÙ¾?d G´ß)Ê @  ÖŽÚ¾?d PG6N> @  ÖÛ¾?d G1*ó @  Öܾ?d ÐG³»äQ @  Ö‘ݾ?d Hõª…ë @  Ö’Þ¾?d PHw;’5 @  Ö“ß¾?d H¶ò}Î @  Ö”à¾?d ÐH4cj @  Ö•á¾?d I–Å _ @  Ö–â¾?d PIT @  Ö—ã¾?d I¾‘ïú @  Ö˜ä¾?d ÐI<ø$ @  Ö™å¾?d JÓªµB @  Öšæ¾?d PJQ;¢œ @  Ö›ç¾?d JhW @  Öœè¾?d ÐJꄉ @  Öé¾?d KH"`Æ @  Öžê¾?d PKʳw @  ÖŸë¾?d KÜÑ3 @  Ö ì¾?d ÐK^@Ší @  Ö¡í¾?d L5à”E @  Ö¢î¾?d PL·qƒ› @  Ö£ï¾?d LëU¼ @  Ö¤ð¾?d ÐLižBb @  Ö¥ñ¾?d MË8#- @  Ö¦ò¾?d PMI©4ó @  Ö§ó¾?d MãlLj @  Ö¨ô¾?d ÐMaýÐV @  Ö©õ¾?d NŽW0 @  Öªö¾?d PN ÆŠî @  Ö«÷¾?d N5è>% @  Ö¬ø¾?d ÐN·y)û @  Ö­ù¾?d OßH´ @  Ö®ú¾?d PO—N_j @  Ö¯û¾?d O*’ñ @  Ö°ü¾?d ÐO»…/ @  Ö±ý¾?d PÞ‹Ô: @  Ö²þ¾?d PP\Ãä @  Ö³ÿ¾?d P"8 @  Ö´¿?d ÐP³/N @  Öµ¿?d Q/N @  Ö¶¿?d PQ­„Yß @  Ö·¿?d QAª¤ @  Ö¸¿?d ÐQ…нz @  Ö¹¿?d Rjzð @  Öº¿?d PRèëç @  Ö»¿?d RÑÅS  @  Ö¼¿?d ÐRSTD× @  Ö½ ¿?d Sñò%˜ @  Ö¾ ¿?d PSsc2F @  Ö¿ ¿?d SËÞÿ @  ÖÀ ¿?d ÐSI—É! @  ÖÁ ¿?d T"7׉ @  Ö¿?d PT ¦ÀW @  Öÿ?d TüØp @  ÖÄ¿?d ÐT~I® @  ÖÅ¿?d UÜï`á @  ÖÆ¿?d PU^~w? @  ÖÇ¿?d Uô»„D @  ÖÈ¿?d ÐUv*“š @  ÖÉ¿?d V™€Þü @  ÖÊ¿?d PVÉ" @  ÖË¿?d V"?}é @  ÖÌ¿?d ÐV ®j7 @  ÖÍ¿?d W x @  Öο?d PW€™¦ @  ÖÏ¿?d W‡ýÑ= @  Öп?d ÐWlÆã @  ÖÑ¿?d XC}§Y @  ÖÒ¿?d PXÁì°‡ @  ÖÓ¿?d X%_| @  ÖÔ ¿?d ÐX‚´H¢ @  ÖÕ!¿?d Y )í @  ÖÖ"¿?d PY¢ƒ>3 @  Ö×#¿?d YFÍH @  ÖØ$¿?d ÐYŠ×Ú– @  ÖÙ%¿?d Ze}—ð @  ÖÚ&¿?d PZçì€. @  ÖÛ'¿?d ZÞÂ4å @  ÖÜ(¿?d ÐZ\S#; @  ÖÝ)¿?d [þõBt @  ÖÞ*¿?d P[|dUª @  Öß+¿?d [j¿ @  Öà,¿?d Ð[è—¨_ @  Öá-¿?d \ƒ7¶÷ @  Öâ.¿?d€ P\ue½ @  ×/¿?d \ÈZ# @  ×0¿?d Ð\JË4_ @  ×1¿?d ]-$®ý @  ×2¿?d P]¯µ¹# @  ×3¿?d ]ËÂ" @  ×4¿?d Ð]ISü @  ×5¿?d ^hKà @  ×6¿?d P^êÚ> @  × 7¿?d ^½H @  × 8¿?d Ð^”,_Æ @  × 9¿?d _óÃÅd @  × :¿?d P_qRÒº @  × ;¿?d _%~» @  ×uÐ`<¿?d Ð_—´ie @  ×=¿?d (`8±PÀ @  ×>¿?d h`º G @  ×?¿?d ¨`NðF @  ×@¿?d è`ÌaQÇ @  ×A¿?d (a«ŽËe @  ×B¿?d ha)Ü» @  ×C¿?d ¨aMhpº @  ×D¿?d èaÏùgd @  ×E¿?d (bîáux @  ×F¿?d hblpb¦ @  ×G¿?d ¨b-€ @  ×H¿?d èb†:^ @  ×I¿?d (cui ü @  ×J¿?d hc÷ø·" @  ×K¿?d ¨c“# @  ×L¿?d èc ý @  ×M¿?d (d«T @  × N¿?d hdŠ:C¡ @  ×!O¿?d ¨d nk @  ×"P¿?d èd‘œyµ @  ×#Q¿?d (eösã @  ×$R¿?d hetâôÉ @  ×%S¿?d ¨e•XÈ @  ×&T¿?d èe’O @  ×'U¿?d (f³]  @  ×(V¿?d hf1JÔ @  ×)W¿?d ¨fÍêò @  ×*X¿?d èfO{, @  ×+Y¿?d (g(”ˆŽ @  ×,Z¿?d hgªŸP @  ×-[¿?d ¨gÎr3Q @  ×.\¿?d ègLã$ @  ×/]¿?d (hiá$¯ @  ×0^¿?d hhëp3q @  ×1_¿?d ¨hïð'g @  ×2`¿?d èhma0¹ @  ×3a¿?d (i Žª @  ×4b¿?d hiˆ½Å @  ×5c¿?d ¨iìhÄ @  ×6d¿?d èinù @  ×7e¿?d (jOá @  ×8f¿?d hjÍpØ @  ×9g¿?d ¨j1Lþ @  ×:h¿?d èj³†[  @  ×;i¿?d (kÔiÁ‚ @  ×<j¿?d hkVøÖ\ @  ×=k¿?d ¨k2z] @  ×>l¿?d èk°mƒ @  ×?m¿?d (l¬3“ @  ×@n¿?d hl…=$M @  ×Ao¿?d ¨l ‡ @  ×Bp¿?d èlž›Y @  ×Cq¿?d (mùt„û @  ×Dr¿?d hm{å“% @  ×Es¿?d ¨m’?$ @  ×Ft¿?d èm(ú @  ×Gu¿?d (n¼:æ @  ×Hv¿?d hn>Š-8 @  ×Iw¿?d ¨nÂíb @  ×Jx¿?d èn@|uÀ @  ×Ky¿?d (o'“ïb @  ×Lz¿?d ho¥ø¼ @  ×M{¿?d ¨oÁuT½ @  ×N|¿?d èoCäCc @  ×O}¿?d (pìÇsì @  ×P~¿?d hpnVd2 @  ×Q¿?d ¨p‡@1§ @  ×R€¿?d èpÑ&y @  ×S¿?d (qb>¼Û @  ×T‚¿?d hq௫ @  ×Uƒ¿?d ¨q„Ø @  ×V„¿?d èqIÚ @  ×W…¿?d (r'QÆ @  ×X†¿?d hr¥À @  ×Y‡¿?d ¨rY§Z> @  ×Zˆ¿?d èrÛ6Mà @  ×[‰¿?d (s¼Ù×B @  ×\Š¿?d hs>HÀœ @  ×]‹¿?d ¨sZ?l @  ×^Œ¿?d èsØ®{C @  ×_¿?d (tÁ#Á @  ×`Ž¿?d htCŠ4 @  ×a¿?d ¨tÚ½Õ @  ×b¿?d ètX,  @  ×c‘¿?d (u?Ô© @  ×d’¿?d hu½Rƒw @  ×e“¿?d ¨uÙ%/v @  ×f”¿?d èu[´8¨ @  ×g•¿?d (vz¬*´ @  ×h–¿?d hvø==j @  ×i—¿?d ¨vZrL @  ×j˜¿?d èv†Ëe’ @  ×k™¿?d (wá$ÿ0 @  ×lš¿?d hwcµèî @  ×m›¿?d ¨wÂDï @  ×nœ¿?d èw…SS1 @  ×o¿?d (x QS @  ×pž¿?d hx"ÀDÏ @  ×qŸ¿?d ¨x&@PÙ @  ×r ¿?d èx¤ÑG @  ×s¡¿?d (yÃ>Ý¥ @  ×t¢¿?d hyA¯Ê{ @  ×u£¿?d ¨y%Øfz @  ×v¤¿?d èy§Iq¤ @  ×w¥¿?d (z†Qc¸ @  ×x¦¿?d hzÀtf @  ×y§¿?d ¨zø§;@ @  ×z¨¿?d èzz6,ž @  ×{©¿?d ({Ù¶< @  ×|ª¿?d h{ŸH¡â @  ×}«¿?d ¨{û? ã @  ×~¬¿?d è{y®= @  ×­¿?d (|-Jt @  ×€®¿?d h|¯Ûc @  ×¯¿?d ¨|6ìN @  ×‚°¿?d è|´}YÖ @  ×ƒ±¿?d (}Ó’Ãt @  ×„²¿?d h}QÔª @  ×…³¿?d ¨}5tx« @  ×†´¿?d è}·åou @  ×‡µ¿?d (~–ý}i @  ×ˆ¶¿?d h~lj· @  ×‰·¿?d ¨~è %‘ @  ×Џ¿?d è~jš2O @  ×‹¹¿?d ( u¨í @  ×Œº¿?d hä¿3 @  ×»¿?d ¨uЀ'ë“2 @  ×޼¿?d èiì @  ×½¿?d @€Aj¥ @  ×¾¿?d €€6´h[ @  ×‘¿¿?d À€`|| @  ×’À¿?d °Hð” @  ×“Á¿?d @…~ñ @  ×”¿?d €¥‹óþ @  ×•ÿ?d Àc˜Jß @  ×–Ä¿?d ‚þÜê @  ×—Å¿?d @‚ÀO @  ×˜Æ¿?d €‚àäMã @  ×™Ç¿?d À‚¾çå @  ×šÈ¿?d ƒn¯›  @  ×›É¿?d @ƒ[™š™ @  ×œÊ¿?d €ƒ{l˜g @  ×Ë¿?d Àƒ½!F @  ×žÌ¿?d „¤1ÒI @  ×ŸÍ¿?d @„&[n @  × ο?d €„®lä @  ×¡Ï¿?d À„=ýT @  ×¢п?d …íµØæ @  ×£Ñ¿?d @…؃Ùr @  ×¤Ò¿?d €…øvÛŒ @  ×¥Ó¿?d À…>eb­ @  ×¦Ô¿?d †£!Âl @  ×§Õ¿?d @†ìgo @  ×¨Ö¿?d €†½e‘ @  ×©׿?d À†ã?— @  ×ªØ¿?d ‡3R³ @  ×«Ù¿?d @‡d²ë @  ×¬Ú¿?d €‡&‘° @  ×­Û¿?d À‡à‚ 4 @  ×®Ü¿?d ˆÔ}…) @  ×¯Ý¿?d @ˆGÊ @  ×°Þ¿?d €ˆgä4 @  ×±ß¿?d ÀˆÁ @  ×²à¿?d ‰H‘ê @  ×³á¿?d @‰$~~ @  ×´â¿?d €‰‹’€ @  ×µã¿?d À‰˜+¡ @  ×¶ä¿?d Š_Ü‹` @  ×·å¿?d @Ša.c @  ×¸æ¿?d €ŠAä, @  ×¹ç¿?d ÀŠçv› @  ×ºè¿?d ‹ϯús @  ×»é¿?d @‹ú™ûç @  ×¼ê¿?d €‹Úlù @  ×½ë¿?d À‹@8 @  ×¾ì¿?d Œ1³7 @  ×¿í¿?d @Œ)\ ö @  ×Àî¿?d €Œ ©  @  ×Áï¿?d ÀŒ2ú3â @  ×Âð¿?d ⲿ  @  ×Ãñ¿?d @ׄ¾ž @  ×Äò¿?d €÷q¼` @  ×Åó¿?d À1bA @  ×Æô¿?d ެ&¥€ @  ×Çõ¿?d @Ž’ëƒ @  ×Èö¿?d €Ž²} @  ×É÷¿?d ÀŽìX{ @  ×Êø¿?d À?d ˜ €>„Y @  Ø/?À?d Ø µ™ñä @  Ø0@À?d ¡eÑ}  @  Ø1AÀ?d X¡•®‡u @  Ø2BÀ?d ˜¡µ[…‹ @  Ø3CÀ?d Ø¡¶ÇG @  Ø4DÀ?d ¢+Eg† @  Ø5EÀ?d X¢Û:ÿ @  Ø6FÀ?d ˜¢ûÏŸ @  Ø7GÀ?d Ø¢k~š} @  Ø8HÀ?d £»6• @  Ø9IÀ?d X£KIìì @  Ø:JÀ?d ˜£k¼î @  Ø;KÀ?d Ø£hæ¬Þ @  Ø<LÀ?d ¤q¨_Ñ @  Ø=MÀ?d X¤×¥¨ @  Ø>NÀ?d ˜¤¡"§V @  Ø?OÀ?d ؤFcß @  Ø@PÀ?d ¥–+Sì @  ØAQÀ?d X¥fT©• @  ØBRÀ?d ˜¥F¡«k @  ØCSÀ?d Ø¥Eûé§ @  ØDTÀ?d ¦Ø¿If @  ØEUÀ?d X¦(À³ @  ØFVÀ?d ˜¦5±á @  ØGWÀ?d ئ˜„´ @  ØHXÀ?d §HÌ8u @  ØIYÀ?d X§¸³Â  @  ØJZÀ?d ˜§˜FÀò @  ØK[À?d ا›‚> @  ØL\À?d ¨¯ã# @  ØM]À?d X¨_œôZ @  ØN^À?d ˜¨iö¤ @  ØO_À?d بºž– @  ØP`À?d ©jÖà @  ØQaÀ?d X©š©à™ @  ØRbÀ?d ˜©º\âg @  ØScÀ?d Ø©¹ « @  ØTdÀ?d ª$Bj @  ØUeÀ?d XªÔ=ú @  ØVfÀ?d ˜ªôÈøí @  ØWgÀ?d تdyý‘ @  ØXhÀ?d «´1qy @  ØYiÀ?d X«DN‹ @  ØZjÀ?d ˜«d»‰þ @  Ø[kÀ?d Ø«gáË2 @  Ø\lÀ?d ¬~¯8= @  Ø]mÀ?d X¬ŽÐÂD @  Ø^nÀ?d ˜¬®%Àº @  Ø_oÀ?d جçc¾z @  Ø`pÀ?d ­7+2’ @  ØaqÀ?d X­ÇTÈë @  ØbrÀ?d ˜­ç¡Ê @  ØcsÀ?d Ø­ÝG‡ @  Øz ŠÀ?d ˜³›ËEy @  Ø{ ‹À?d س˜‘µ @  Ø| ŒÀ?d ´ßôº @  Ø} À?d X´q Ã @  Ø~ ŽÀ?d ˜´QU = @  Ø À?d Ø´UBD^ @  Ø€ À?d µ… ȶ @  Ø ‘À?d Xµuu2Ï @  Ø‚ ’À?d ˜µU€01 @  Øƒ “À?d صVÚrý @  Ø„ ”À?d ¶ËžÒ< @  Ø… •À?d X¶;á(E @  Ø† –À?d ˜¶*» @  Ø‡ —À?d ض‹¥/Ç @  Øˆ ˜À?d ·[í£/ @  Ø‰ ™À?d X·«’YV @  ØŠ šÀ?d ˜·‹g[¨ @  Ø‹ ›À?d Ø·ˆ=d @  ØŒ œÀ?d ¸¼Â•y @  Ø À?d X¸L½o @  ØŽ žÀ?d ˜¸lHmþ @  Ø ŸÀ?d ظ©¿ R @  Ø  À?d ¹y÷º @  Ø‘ ¡À?d X¹‰ˆ{à @  Ø’ ¢À?d ˜¹©}y= @  Ø“ £À?d عª';ñ @  Ø” ¤À?d º7c›0 @  Ø• ¥À?d XºÇaI @  Ø– ¦À?d ˜ºçéc· @  Ø— §À?d غwXfË @  Ø˜ ¨À?d »§ê# @  Ø™ ©À?d X»WoZ @  Øš ªÀ?d ˜»wš¤ @  Ø› «À?d Ø»tÀPh @  Øœ ¬À?d ¼mŽ£g @  Ø ­À?d X¼ñY @  Øž ®À?d ˜¼½[à @  ØŸ ¯À?d ؼôB%  @  Ø  °À?d ½$ ©È @  Ø¡ ±À?d X½ÔuS± @  Ø¢ ²À?d ˜½ô€QO @  Ø£ ³À?d ؽ÷Úƒ @  Ø¤ ´À?d ¾jž³B @  Ø¥ µÀ?d X¾šáI; @  Ø¦ ¶À?d ˜¾ºKÅ @  Ø§ ·À?d ؾ*¥N¹ @  Ø¨ ¸À?d ¿úíÂQ @  Ø© ¹À?d X¿ ’8( @  Øª ºÀ?d ˜¿*g:Ö @uÐÀ  Ø« »À?d Ø¿ÒSC @  Ø¬¼À?d 0À¶£H @  Ø­½À?d pÀFÜè1 @  Ø®¾À?d °Àf)êÏ @  Ø¯¿À?d ðÀSŽŸr @  Ø°ÀÀ?d 0ÁƒÆš @  Ø±ÁÀ?d pÁs¹éã @  Ø²ÂÀ?d °ÁSLë @  Ø³ÃÀ?d ðÁP©Ñ @  Ø´ÄÀ?d 0ÂÍR  @  ØµÅÀ?d pÂ=-ói @  Ø¶ÆÀ?d °ÂØñ— @  Ø·ÇÀ?d ðÂiôë @  Ø¸ÈÀ?d 0Ã]!x @  Ø¹ÉÀ?d pí^‚z @  ØºÊÀ?d °Ã«€„ @  Ø»ËÀ?d ðÃŽñÂH @  Ø¼ÌÀ?d 0Ä—¿1G @  Ø½ÍÀ?d pÄgÀË> @  Ø¾ÎÀ?d °ÄG5ÉÀ @  Ø¿ÏÀ?d ðÄ t±’ @  ØÀÐÀ?d 0Åp<=z @  ØÁÑÀ?d pÅ€CÇ @  ØÂÒÀ?d °Å ¶Åý @  ØÃÓÀ?d ðÅ£ì‡1 @  ØÄÔÀ?d 0Æ>¨'ð @  ØÅÕÀ?d pÆÎ×݉ @  ØÆÖÀ?d °Æî"ßw @  ØÇ×À?d ðÆ~“Ú  @  ØÈØÀ?d 0Ç®ÛVã @  ØÉÙÀ?d pÇ^¤¬š @  ØÊÚÀ?d °Ç~Q®d @  ØËÛÀ?d ðÇ} ì¨ @  ØÌÜÀ?d 0ÈIô`µ @  ØÍÝÀ?d pȹ‹šÌ @  ØÎÞÀ?d °È™~˜2 @  ØÏßÀ?d ðÈ\‰øž @  ØÐàÀ?d 0ÉŒÁtv @  ØÑáÀ?d pÉ|¾Ž @  ØÒâÀ?d °É\KŒñ @  ØÓãÀ?d ðÉ_Î= @  ØÔäÀ?d 0ÊÂUnü @  ØÕåÀ?d pÊ2*”… @  ØÖæÀ?d °Êß–{ @  Ø×çÀ?d ðÊ‚n“ @  ØØèÀ?d 0ËR&ï @  ØÙéÀ?d pË¢Yå– @  ØÚêÀ?d °Ë‚¬çh @  ØÛëÀ?d ðËö¥¤ @  ØÜìÀ?d 0̘¸V« @  ØÝíÀ?d pÌhǬÒ @  ØÞîÀ?d °ÌH2®, @  ØßïÀ?d ðÌtÐì @  ØàðÀ?d 0ÍÑ<\ @  ØáñÀ?d pÍ!C¦} @  ØâòÀ?d€ °Íuu¸% @  ÙóÀ?d ðÍ—n²À @  ÙôÀ?d 0Î * @  ÙõÀ?d pÎ?• @  ÙöÀ?d °Îék @  Ù÷À?d ðÎAêKm @  ÙøÀ?d 0Ï‘¢Ç… @  ÙùÀ?d pϯob† @  ÙúÀ?d °Ïš`x @  Ù ûÀ?d ðÏI‰ÙY @  Ù üÀ?d 0Ð÷Weë @  Ù ýÀ?d pÐÂad @  Ù þÀ?d °Ðâ”f @  Ù ÿÀ?d ðÐÖs8 @  ÙÁ?d 0ÑÉÿÐ @  ÙÁ?d pÑ•¥d3 @  ÙÁ?d °ÑµPfÍ @  ÙÁ?d ðÑsCßì @  ÙÁ?d 0Òî- @  ÙÁ?d pÒÛ1~¹ @  ÙÁ?d °ÒûÄ|G @  ÙÁ?d ðÒ¥Ç&A @  ÙÁ?d 0Óuª© @  Ù Á?d pÓKBª @  Ù Á?d °Ók· T @  Ù Á?d ðÓ­¤´u @  Ù Á?d 0Ô´êGz @  Ù Á?d pÔÜFî @  ÙÁ?d °Ô¡)D @  ÙÁ?d ðÔšz|ú @  ÙÁ?d 0ÕJ2ð @  ÙÁ?d pÕÈXLA @  Ù Á?d °Õè­N¿ @  Ù!Á?d ðÕ.¾÷ž @  Ù"Á?d 0Ö³úW_ @  Ù#Á?d pÖ†ÌVË @  Ù$Á?d °Ö¦9T5 @  Ù%Á?d ðÖø:3 @  Ù&Á?d 0×(r‚Û @  Ù'Á?d p׿'Ø @  Ù(Á?d °×6J%& @  Ù)Á?d ð×ðYœ @  Ù*Á?d 0ØĦ @  Ù+Á?d pØñŽ @  Ù,Á?d °ØÑep @  Ù-Á?d ðØwF @  Ù. Á?d 0Ù§Éž® @  Ù/!Á?d pÙ4¥M @  Ù0"Á?d °ÙP³ @  Ù1#Á?d ðÙÒC¾’ @  Ù2$Á?d 0ÚOS @  Ù3%Á?d pÚz1Ç @  Ù4&Á?d °ÚZÄ9 @  Ù5'Á?d ðÚÇG? @  Ù6(Á?d 0ÛÔË× @  Ù7)Á?d pÛêBnÔ @  Ù8*Á?d °ÛÊ·l* @  Ù9+Á?d ðÛ ¤Õ  @  Ù:,Á?d 0Üê& @  Ù;-Á?d pÜ Ü' @  Ù<.Á?d °Ü)%n @  Ù=/Á?d ðÜ;z„ @  Ù>0Á?d 0Ýë2‘l @  Ù?1Á?d pÝÇ_+­ @  Ù@2Á?d °Ýçª)S @  ÙA3Á?d ðÝ!¹r @  ÙB4Á?d 0Þ¼ý0³ @  ÙC5Á?d pÞ‰Ë1' @  ÙD6Á?d °Þ©>3Ù @  ÙE7Á?d ðÞ÷=iß @  ÙF8Á?d 0ß'uå7 @  ÙG9Á?d p߸@4 @  ÙH:Á?d uÐà/°ß9MBÊ @  ÙI;Á?d ðß0Àë @  ÙJ <Á?d Hà”ž @  ÙK =Á?d ˆàŠÆŠ© @  ÙL >Á?d ÈàWw @  ÙM ?Á?d á :f @  ÙN @Á?d HᎫ¸ @  ÙO AÁ?d ˆá¿£‹{ @  ÙP BÁ?d Èá=2œ¥ @  ÙQ CÁ?d âäô’› @  ÙR DÁ?d Hâfe…E @  ÙS EÁ?d ˆâñ7‘ñ @  ÙT FÁ?d Èâs¦†/ @  ÙU GÁ?d ã|G @  ÙV HÁ?d HãýíPÁ @  ÙW IÁ?d ˆãaDàâ @  ÙX JÁ?d ÈããÕ÷< @  ÙY KÁ?d ä¾ªÌ @  ÙZ LÁ?d Hä<ˆ½ @  Ù[ MÁ?d ˆäP´’¦ @  Ù\NÁ?d ÈäÒ%…x @  Ù]OÁ?d 廯&¤ @  Ù^PÁ?d Hå9>1z @  Ù_QÁ?d ˆå0˜  @  Ù`RÁ?d Èå›¡× @  ÙaSÁ?d æBgé @  ÙbTÁ?d HæÀö–7 @  ÙcUÁ?d ˆæW¤‚ƒ @  ÙdVÁ?d ÈæÕ5•] @  ÙeWÁ?d çÙïTm @  ÙfXÁ?d Hç[~C³ @  ÙgYÁ?d ˆçÇ×ó @  ÙhZÁ?d ÈçEFäN @  Ùi[Á?d è5;Ƭ @  Ùj\Á?d Hè·ªÑr @  Ùk]Á?d ˆè øÅÆ @  Ùl^Á?d Èè¢iÒ @  Ùm_Á?d éVTH @  Ùn`Á?d HéÔÅ_Æ @  ÙoaÁ?d ˆéåÍÑ @  ÙpbÁ?d Èég\ÆÛ @  ÙqcÁ?d 꾚Èå @  ÙrdÁ?d Hê< ß; @  ÙseÁ?d ˆê«YË @  ÙtfÁ?d Èê)ÈÜQ @  ÙugÁ?d ë%a @  ÙvhÁ?d H맃 ¿ @  ÙwiÁ?d ˆë;*ºœ @  ÙxjÁ?d Èë¹»­B @  ÙykÁ?d ìäwð² @  ÙzlÁ?d Hìfæçl @  Ù{mÁ?d ˆìñ´óØ @  Ù|nÁ?d Èìs%ä @  Ù}oÁ?d í¯GÚ @  Ù~pÁ?d Hí˜>P @  ÙqÁ?d ˆíõaÏÔ @  Ù€rÁ?d ÈíwðØ  @  ÙsÁ?d î®6Ö4 @  Ù‚tÁ?d Hî,§Áê @  ÙƒuÁ?d ˆî»õÕ^ @  Ù„vÁ?d Èî9d€ @  Ù…wÁ?d ï5¾° @  Ù†xÁ?d Hï·/n @  Ù‡yÁ?d ˆï+†¤M @  ÙˆzÁ?d È侀“ @  Ù‰{Á?d ðSK¡Þ @  ÙŠ|Á?d HðÑÚ¶ @  Ù‹}Á?d ˆðFˆ¢´ @  ÙŒ~Á?d Èðĵj @  ÙÁ?d ñݲné @  ÙŽ€Á?d Hñ_#y7 @  ÙÁ?d ˆñn+÷ô @  Ù‚Á?d Èñìºà* @  Ù‘ƒÁ?d ò5|î @  Ù’„Á?d Hò·íùÊ @  Ù“…Á?d ˆò ¿í~ @  Ù”†Á?d Èò¢.ú  @  Ù•‡Á?d ó®ô; @  Ù–ˆÁ?d Hó,e,N @  Ù—‰Á?d ˆó°Ìœm @  Ù˜ŠÁ?d Èó2]‹³ @  Ù™‹Á?d ôo‘ÖC @  ÙšŒÁ?d HôíÁ @  Ù›Á?d ˆôzRÕ) @  ÙœŽÁ?d ÈôøÃÂ÷ @  ÙÁ?d õ‘Ia+ @  ÙžÁ?d HõØvõ @  ÙŸ‘Á?d ˆõ3Ö߆ @  Ù ’Á?d Èõ±GÈX @  Ù¡“Á?d öhÆf @  Ù¢”Á?d HöêѸ @  Ù£•Á?d ˆö}BÅ  @  Ù¤–Á?d ÈöÿÓÒÒ @  Ù¥—Á?d ÷ó â @  Ù¦˜Á?d H÷q˜< @  Ù§™Á?d ˆ÷í1´ @  Ù¨šÁ?d È÷o £Á @  Ù©›Á?d øÝ# @  ÙªœÁ?d HøL–ý @  Ù«Á?d ˆø ‚I @  Ù¬žÁ?d Èøˆ•— @  Ù­ŸÁ?d ù|²— @  Ù® Á?d Hùþ#I @  Ù¯¡Á?d ˆùÏ+–Š @  Ù°¢Á?d ÈùMºT @  Ù±£Á?d ú”|j @  Ù²¤Á?d Hú혴 @  Ù³¥Á?d ˆú¿Œ @  Ù´¦Á?d Èú.›Þ @  Ùµ§Á?d ûôZî @  Ù¶¨Á?d HûeM0 @  Ù·©Á?d ˆûÌý @  Ù¸ªÁ?d Èû“]êÍ @  Ù¹«Á?d üΑ·= @  Ùº¬Á?d HüL ã @  Ù»­Á?d ˆüÛR´W @  Ù¼®Á?d ÈüY㉠@  Ù½¯Á?d ý0IU @  Ù¾°Á?d Hý²Ø‹ @  Ù¿±Á?d ˆý<Ѹj @  ÙÀ²Á?d Èý¾@¯´ @  ÙÁ³Á?d þg†¡Š @  Ù´Á?d Hþå¶T @  ÙõÁ?d ˆþrE¢à @  ÙĶÁ?d ÈþðÔµ> @  ÙÅ·Á?d ÿüt @  ÙƸÁ?d Hÿ~ŸcÐ @  ÙǹÁ?d ˆÿâ6Óó @  ÙÈuкÁ?d Èÿ`§Ä- @  ÙÉ»Á?d ~{ð @  ÙʼÁ?d `üê. @  Ù˽Á?d  k¸š @  Ù̾Á?d àé)D @  ÙÍ¿Á?d íDœU @  ÙÎÀÁ?d `oÕ‹‹ @  ÙÏÁÁ?d  ^ÝH @  ÙÐÂÁ?d àÜL– @  ÙÑÃÁ?d Ѝ @  ÙÒÄÁ?d `‡ v @  ÙÓÅÁ?d  I @  ÙÔÆÁ?d à’Ø @  ÙÕÇÁ?d žÉ, @  ÙÖÈÁ?d `“Þò @  Ù×ÉÁ?d  €:nÑ @  ÙØÊÁ?d à«y @  ÙÙËÁ?d _g$ÿ @  ÙÚÌÁ?d `Ýö3! @  ÙÛÍÁ?d  J¤'• @  ÙÜÎÁ?d àÈ50K @  ÙÝÏÁ?d ¡¿“— @  ÙÞÐÁ?d `#.„I @  ÙßÑÁ?d   -: @  ÙàÒÁ?d à±:ä @  ÙáÓÁ?d Xw4Ú @  ÙâÔÁ?d€ `¡Ô @  ÚÕÁ?d  m²ˆ™ @  ÚÖÁ?d àï#ŸG @  Ú×Á?d &°¥š @  ÚØÁ?d `¤!²D @  ÚÙÁ?d  ö:] @  ÚÚÁ?d àt«Jà @  ÚÛÁ?d Êd7[ @  ÚÜÁ?d `Hõ … @  Ú ÝÁ?d  îÏÜ @  Ú ÞÁ?d à˜Ø @  Ú ßÁ?d © ¹ï @  Ú àÁ?d ` +š®1 @  Ú áÁ?d   yAh @  ÚâÁ?d à ûV¶ @  ÚãÁ?d AÅ9 @  ÚäÁ?d ` ÃT.Ì @  ÚåÁ?d   ‘OÁ• @  ÚæÁ?d à ÞÖK @  ÚçÁ?d ÚMì– @  ÚèÁ?d ` XÜûH @  ÚéÁ?d    Ç @  ÚêÁ?d à ˆVÏ @  ÚëÁ?d (E @  ÚìÁ?d ` ™¹› @  ÚíÁ?d   Ë¢ù @  ÚîÁ?d à I3î @  ÚïÁ?d åð¶- @  ÚðÁ?d ` ga¡ó @  ÚñÁ?d   5zNª @  ÚòÁ?d à ·ëYt @  ÚóÁ?d 8` @  Ú ôÁ?d `ž©¾ @  Ú!õÁ?d  ̲éç @  Ú"öÁ?d àN#þ9 @  Ú#÷Á?d ‡°Ää @  Ú$øÁ?d `!Ó: @  Ú%ùÁ?d  W: @  Ú8 Â?d `’Kfà @  Ú9 Â?d  ÀP‰¹ @  Ú:Â?d àBÁžg @  Ú;Â?d îÆV @  Ú<Â?d `l“ш @  Ú=Â?d  >ˆ>Ñ @  Ú>Â?d à¼) @  Ú?Â?d ¹Íg‰ @  Ú@Â?d `;\pW @  ÚAÂ?d  iGŸ @  ÚBÂ?d àëֈР@  ÚCÂ?d "E²  @  ÚDÂ?d ` Ô¥Ó @  ÚEÂ?d  òÏJŠ @  ÚFÂ?d àp^]T @  ÚGÂ?d Α Ì @  ÚHÂ?d `L7 @  ÚIÂ?d  ØK @  ÚJÂ?d àœŠÏ• @  ÚKÂ?d ­þ®x @  ÚL Â?d `/o¹¦ @  ÚM!Â?d  }tVÿ @  ÚN"Â?d àÿåA! @  ÚO#Â?d E0.… @  ÚP$Â?d `Ç¡9[ @  ÚQ%Â?d  •ºÖ @  ÚR&Â?d à+ÁÜ @  ÚS'Â?d Þ¸û @  ÚT(Â?d `\)ìß @  ÚU)Â?d  2† @  ÚV*Â?d àŒ£X @  ÚW+Â?d ÝÒ @  ÚX,Â?d `L  @  ÚY-Â?d  ÏWîU @  ÚZ.Â?d àMÆù‹ @  Ú[/Â?d ᡺ @  Ú\0Â?d `c”¶d @  Ú]1Â?d  1Y= @  Ú^2Â?d à³Nã @  Ú_3Â?d Í÷ @  Ú`4Â?d `š\) @  Úa5Â?d  ÈGþp @  Úb6Â?d àJÖé® @  Úc7Â?d ƒEÓs @  Úd8Â?d `ÔÄ­ @  Úe9Â?d  SÏ+ôuÐ  @  Úf:Â?d à÷Ûÿ @  Úg;Â?d 8 èÌô @  Úh<Â?d x j]ã @  Úi=Â?d ¸ 8F › @  Új>Â?d ø º×E @  Úk?Â?d 8!{óo¹ @  Úl@Â?d x!ùbxg @  ÚmAÂ?d ¸!«y—> @  ÚnBÂ?d ø!)è€à @  ÚoCÂ?d 8"“=ïD @  ÚpDÂ?d x"¬øš @  ÚqEÂ?d ¸"C·Ã @  ÚrFÂ?d ø"Á& @  ÚsGÂ?d 8#µ:À @  ÚtHÂ?d x#Š$- @  ÚuIÂ?d ¸#Ø?ÂG @  ÚvJÂ?d ø#Z®Õ™ @  ÚwKÂ?d 8$ÉÐ× @  ÚxLÂ?d x$KAÀÍ @  ÚyMÂ?d ¸$Z/” @  ÚzNÂ?d ø$›Ë8J @  Ú{OÂ?d 8%7`{ @  Ú|PÂ?d x%µ™w¥ @  Ú}QÂ?d ¸%炘ü @  Ú~RÂ?d ø%e" @  ÚSÂ?d 8&ƒ‘ñ• @  Ú€TÂ?d x&æK @  ÚUÂ?d ¸&S  @  Ú‚VÂ?d ø&ÑŠÌ @  ÚƒWÂ?d 8'$ @  Ú„XÂ?d x'šˆ3Ï @  Ú…YÂ?d ¸'ȓܖ @  Ú†ZÂ?d ø'JËH @  Ú‡[Â?d 8(ôͶÐ @  Úˆ\Â?d x(v\¡ @  Ú‰]Â?d ¸($GNW @  ÚŠ^Â?d ø(¦ÖY‰ @  Ú‹_Â?d 8)—¢8d @  ÚŒ`Â?d x)3/º @  ÚaÂ?d ¸)G(Àã @  ÚŽbÂ?d ø)Ź×= @  ÚcÂ?d 8*l¸™ @  ÚdÂ?d x*ýý¯G @  Ú‘eÂ?d ¸*¯æ@ @  Ú’fÂ?d ø*-wWÀ @  Ú“gÂ?d 8+ääm @  Ú”hÂ?d x+fuzà @  Ú•iÂ?d ¸+4n•š @  Ú–jÂ?d ø+¶ÿ‚D @  Ú—kÂ?d 8,%€Î @  Ú˜lÂ?d x,§— @  Ú™mÂ?d ¸,õ xI @  ÚšnÂ?d ø,wšo— @  Ú›oÂ?d 8-ÛY7¦ @  ÚœpÂ?d x-YÈ x @  ÚqÂ?d ¸- ÓÏ! @  ÚžrÂ?d ø-‰BØÿ @  ÚŸsÂ?d 8."‘ë @  Ú tÂ?d x. ‡5 @  Ú¡uÂ?d ¸.òhl @  Ú¢vÂ?d ø.pв @  Ú£wÂ?d 8/¹Eo @  Ú¤xÂ?d x/;ˆR± @  Ú¥yÂ?d ¸/i“½è @  Ú¦zÂ?d ø/ëª6 @  Ú§{Â?d 80ßìç @  Ú¨|Â?d x0]}ðß @  Ú©}Â?d ¸0f† @  Úª~Â?d ø0÷X @  Ú«Â?d 81Q(6 @  Ú¬€Â?d x1Ó„?è @  Ú­Â?d ¸1ŸÐ± @  Ú®‚Â?d ø1Ço @  Ú¯ƒÂ?d 82¹Û¨Ë @  Ú°„Â?d x2;J¿ @  Ú±…Â?d ¸2iQPL @  Ú²†Â?d ø2ëÀG’ @  Ú³‡Â?d 83"S}O @  Ú´ˆÂ?d x3 Âj‘ @  Úµ‰Â?d ¸3òÙ…È @  Ú¶ŠÂ?d ø3pH’ @  Ú·‹Â?d 84ã6œ @  Ú¸ŒÂ?d x4a§‡B @  Ú¹Â?d ¸43¼h @  ÚºŽÂ?d ø4±-Å @  Ú»Â?d 85î'ô @  Ú¼Â?d x5Ÿ0* @  Ú½‘Â?d ¸5Ídßs @  Ú¾’Â?d ø5OõÈ­ @  Ú¿“Â?d 86J!†+ @  ÚÀ”Â?d x6Ȱ‘õ @  ÚÁ•Â?d ¸6š«~¬ @  Ú–Â?d ø6:ir @  Ú×Â?d 87Ñ©S¯ @  ÚĘÂ?d x7S8Dq @  ÚÅ™Â?d ¸7#«( @  ÚÆšÂ?d ø7ƒ²¼ö @  ÚÇ›Â?d 88=}Án @  ÚÈœÂ?d x8¿ìÖ° @  ÚÉÂ?d ¸8í÷9é @  ÚÊžÂ?d ø8of.7 @  ÚËŸÂ?d 89^OÚ @  ÚÌ Â?d x9܃X @  ÚÍ¡Â?d ¸9Ž˜·] @  Ú΢Â?d ø9  ƒ @  ÚÏ£Â?d 8:¶ÜÏ' @  ÚФÂ?d x:4MØù @  ÚÑ¥Â?d ¸:fV7  @  ÚÒ¦Â?d ø:äÇ ~ @  ÚÓ§Â?d 8;-T£ @  ÚÔ¨Â?d x;¯Å } @  ÚÕ©Â?d ¸;ýÞâ$ @  ÚÖªÂ?d ø;Oõú @  Ú׫Â?d 8<ì1÷p @  ÚجÂ?d x<n à® @  ÚÙ­Â?d ¸<<»÷ @  ÚÚ®Â?d ø<¾*) @  ÚÛ¯Â?d 8=é@ @  ÚܰÂ?d x=xWÆ @  ÚݱÂ?d ¸=Âc¸Ÿ @  ÚÞ²Â?d ø=@ò¯A @  Úß³Â?d 8>ë!çU @  Úà´Â?d x>i°ð‹ @  ÚáµÂ?d ¸>;«Ò @  Úâ¶Â?d€ ø>Íùª @  Û·Â?d 8?å+f^ @  Û¸Â?d x?gºq€ @  Û¹Â?duÐ@7 ¸?ðèe4 @  ÛºÂ?d ø?ryrê @  Û»Â?d P@õWf) @  Û¼Â?d @Õ¢d× @  Û½Â?d Ð@ëoÁÔ @  Û¾Â?d A;'M< @  Û ¿Â?d PAm“Y @  Û ÀÂ?d AMf[å @  Û ÁÂ?d ÐAxPZq @  Û ÂÂ?d Båú° @  Û ÃÂ?d PB#C‘ @  ÛÄÂ?d BòAo @  ÛÅÂ?d ÐBžÚŒ @  ÛÆÂ?d C@ÖVd @  ÛÇÂ?d PCÕ b @  ÛÈÂ?d C> œ @  ÛÉÂ?d ÐC  @  ÛÊÂ?d DXü @  ÛËÂ?d PDÔKE& @  ÛÌÂ?d Dô¾GØ @  ÛÍÂ?d ÐDÊsâÛ @  ÛÎÂ?d E;n3 @  ÛÏÂ?d PE!hVÙ @  ÛÐÂ?d ET' @  ÛÑÂ?d ÐE4«U³ @  ÛÒÂ?d F©ïõr @  ÛÓÂ?d PFoüLS @  ÛÔÂ?d FO N­ @  ÛÕÂ?d ÐFÍcòþ @  Û ÖÂ?d G+~ @  Û!×Â?d PGC($ @  Û"ØÂ?d GcÝ&î @  Û#ÙÂ?d ÐGVë'z @  Û$ÚÂ?d Hb«g @  Û%ÛÂ?d PH¤F @  Û&ÜÂ?d H„ò¸ @  Û'ÝÂ?d ÐHº?µ» @  Û(ÞÂ?d Ijw9S @  Û)ßÂ?d PIÌ“8e @  Û*àÂ?d Iìf:› @  Û+áÂ?d ÐIÙP; @  Û,âÂ?d JD›Î @  Û-ãÂ?d PJ‚"ï @  Û.äÂ?d J¢ò  @  Û/åÂ?d ÐJ1ž»ò @  Û0æÂ?d KáÖ7 @  Û1çÂ?d PK¿Õm @  Û2èÂ?d KŸ oâ @  Û3éÂ?d ÐKªnv @  Û4êÂ?d L³Xy @  Û5ëÂ?d PLuK$X @  Û6ìÂ?d LU¾&¦ @  Û7íÂ?d ÐLksƒ¥ @  Û8îÂ?d M»;M @  Û9ïÂ?d PM€h7§ @  Û:ðÂ?d M 5Y @  Û;ñÂ?d ÐM•«4Í @  Û<òÂ?d Nï”  @  Û=óÂ?d PNÎü-- @  Û>ôÂ?d Nî /Ó @  Û?õÂ?d ÐNÂd• @  Û@öÂ?d O,ú @  ÛA÷Â?d POL/Cü @  ÛBøÂ?d OlÚA @  ÛCùÂ?d ÐOYì@– @  ÛDúÂ?d Pç2ü$ @  ÛEûÂ?d PP!!E @  ÛFüÂ?d PÔGû @  ÛGýÂ?d ÐP?âø @  ÛHþÂ?d QïQn @  ÛIÿÂ?d PQÛD{© @  ÛJÃ?d Qû±yW @  ÛKÃ?d ÐQ·xà @  ÛLÃ?d RSÃØ @  ÛMÃ?d PR•Ða# @  ÛNÃ?d Rµ%cÝ @  ÛOÃ?d ÐR&Iø> @  ÛPÃ?d SötÖ @  ÛQÃ?d PS¨.Ð @  ÛRÃ?d Sˆ÷,. @  ÛS Ã?d ÐS½Á-º @  ÛT Ã?d T¤Þµ @  ÛU Ã?d PTbœg” @  ÛV Ã?d TBiej @  ÛW Ã?d ÐT|¤Ài @  ÛXÃ?d U¬ìL @  ÛYÃ?d PU—¿tk @  ÛZÃ?d U·Jv• @  Û[Ã?d ÐU‚|w @  Û\Ã?d V8×À @  Û]Ã?d PVÙ+ná @  Û^Ã?d VùÞl @  Û_Ã?d ÐV{´ÐL @  Û`Ã?d W«ü\¤ @  ÛaÃ?d PWõÿ¢ @  ÛbÃ?d WÕ \ @  ÛcÃ?d ÐWà<È @  ÛdÃ?d XÔÉÕ @  ÛeÃ?d PXÐ0ô @  ÛfÃ?d X2%2  @  ÛgÃ?d ÐX è—  @  ÛhÃ?d YÜ á @  ÛiÃ?d PYzD× @  Ûj Ã?d YZ±) @  Ûk!Ã?d ÐYo‡½ @  Ûl"Ã?d Zòù| @  Ûm#Ã?d PZ4Ð] @  Ûn$Ã?d Z%£ @  Ûo%Ã?d ÐZ‡I™@ @  Ûp&Ã?d [W¨ @  Ûq'Ã?d P[ O® @  Ûr(Ã?d [)÷MP @  Ûs)Ã?d Ð[ÁLÄ @  Ût*Ã?d \¿Ë @  Ûu+Ã?d P\Üê @  Ûv,Ã?d \ãi @  Ûw-Ã?d Ð\ݤ¡ @  Ûx.Ã?d ] ì-ÿ @  Ûy/Ã?d P]6¿ @  Ûz0Ã?d ]Jë @  Û{1Ã?d Ð]#| @  Û|2Ã?d ^¾8¶¾ @  Û}3Ã?d P^x+Ÿ @  Û~4Ã?d ^XÞ a @  Û5Ã?d Ð^—凑 @  Û€6Ã?d _G­ y @  Û7Ã?d P_®Q @  Û‚8Ã?d _9[S @  ÛuÐ`ƒ9Ã?d Ð_ mR @  Û„:Ã?d (`²•ç @  Û…;Ã?d h`t†^¬ @  Û†<Ã?d ¨`Ts\R @  Û‡=Ã?d è`j¾ùQ @  Ûˆ>Ã?d (aºöu¹ @  Û‰?Ã?d haìBaž @  ÛŠ@Ã?d ¨aÌ·c` @  Û‹AÃ?d èaùbô @  ÛŒBÃ?d (bdÅÂ5 @  ÛCÃ?d hb¢Ö{ @  ÛŽDÃ?d ¨b‚#yê @  ÛEÃ?d èbOâ  @  ÛFÃ?d (cÁná @  Û‘GÃ?d hcŸ4ç @  Û’HÃ?d ¨c¿ñ6 @  Û“IÃ?d ècŠÇ7 @  Û”JÃ?d (d“‰Ä‚ @  Û•KÃ?d hdUš}£ @  Û–LÃ?d ¨duo] @  Û—MÃ?d èdK¢Ú^ @  Û˜NÃ?d (e›êV¶ @  Û™OÃ?d he ¹n\ @  ÛšPÃ?d ¨e€Ll¢ @  Û›QÃ?d èeµzm6 @  ÛœRÃ?d (f(>Í÷ @  ÛSÃ?d hfî-tÖ @  ÛžTÃ?d ¨fÎØv( @  ÛŸUÃ?d èfL²Ê{ @  Û VÃ?d (gœúF“ @  Û¡WÃ?d hgÂù• @  Û¢XÃ?d ¨gâ k @  Û£YÃ?d èg×:ÿ @  Û¤ZÃ?d (hãÅ“â @  Û¥[Ã?d hh%Ö*à @  Û¦\Ã?d ¨h#(= @  Û§]Ã?d èh;î> @  Û¨^Ã?d (ië¦Ö @  Û©_Ã?d hiMBà @  Ûª`Ã?d ¨im· @  Û«aÃ?d èiXŠ @  Û¬bÃ?d (jÅÅ£K @  Û­cÃ?d hjÖj @  Û®dÃ?d ¨j##” @  Û¯eÃ?d èj°Oƒw @  Û°fÃ?d (k`Ÿ @  Û±gÃ?d hk>U™ @  Û²hÃ?d ¨kñWg @  Û³iÃ?d èk+ÇVó @  Û´jÃ?d (l2‰¥ü @  ÛµkÃ?d hlôšÝ @  Û¶lÃ?d ¨lÔo# @  Û·mÃ?d èlꢻ  @  Û¸nÃ?d (m:ê7È @  Û¹oÃ?d hm¹" @  ÛºpÃ?d ¨m!L Ü @  Û»qÃ?d èmz H @  Û¼rÃ?d (n‰>¬‰ @  Û½sÃ?d hnO-¨ @  Û¾tÃ?d ¨noØV @  Û¿uÃ?d ènCµ­— @  ÛÀvÃ?d (o“ý! @  ÛÁwÃ?d hoÍþ{y @  ÛÂxÃ?d ¨oí y‡ @  ÛÃyÃ?d èoØ=x @  ÛÄzÃ?d (pfãÄ¡ @  ÛÅ{Ã?d hp ð}€ @  ÛÆ|Ã?d ¨p€~ @  ÛÇ}Ã?d èp¾ÈÚ} @  ÛÈ~Ã?d (qn€V• @  ÛÉÃ?d hq%ò  @  ÛÊ€Ã?d ¨qÞ @  ÛËÃ?d èq01J @  ÛÌ‚Ã?d (r­uµ‹ @  Û̓Ã?d hrkf ª @  Û΄Ã?d ¨rK“T @  ÛÏ…Ã?d èrØÿ•· @  ÛІÃ?d (s·_ @  ÛчÃ?d hsV´CY @  ÛÒˆÃ?d ¨svAA§ @  ÛÓ‰Ã?d èsCw@3 @  ÛÔŠÃ?d (tZ9³< @  ÛÕ‹Ã?d htœ*  @  ÛÖŒÃ?d ¨t¼ßã @  Û×Ã?d èt‚­à @  ÛØŽÃ?d (uRZ! @  ÛÙÃ?d hui â @  ÛÚÃ?d ¨uIü @  ÛÛ‘Ã?d èu|ʈ @  ÛÜ’Ã?d (vᎺI @  ÛÝ“Ã?d hv'h @  ÛÞ”Ã?d ¨vh– @  Ûß•Ã?d èv…½Å @  Ûà–Ã?d (wUJ1- @  Ûá—Ã?d hw Ik+ @  Ûâ˜Ã?d€ ¨w­êÁl @  Ü™Ã?d èwyˆÑ @  ÜšÃ?d (xMbÌ @  Ü›Ã?d hxN8F @  ÜœÃ?d ¨xnÍDþ @  ÜÃ?d èxž²¾‡ @  ÜžÃ?d (yNú2o @  ÜŸÃ?d hy&¬l# @  Ü Ã?d ¨yYnÝ @  Ü ¡Ã?d èyö&”¤ @  Ü ¢Ã?d (zkb4e @  Ü £Ã?d hzh8v© @  Ü ¤Ã?d ¨zHÍtW @  Ü ¥Ã?d èz¸²Ž. @  Ü¦Ã?d ({húÆ @  Ü§Ã?d h{Uê9Z @  Ü¨Ã?d ¨{u;¤ @  Ü©Ã?d è{…`ÁÝ @  ÜªÃ?d (|œ.2Ò @  Ü«Ã?d h|Ÿtp @  Ü¬Ã?d ¨|¿rà @  Ü­Ã?d è|Oþˆ™ @  Ü®Ã?d (}Ÿ¶q @  Ü¯Ã?d h}jWcá @  Ü°Ã?d ¨}J¢a @  Ü±Ã?d è}ºÝ›f @  Ü²Ã?d (~'™;§ @  Ü³Ã?d h~$Ãyk @  Ü´Ã?d ¨~6{• @  ÜµÃ?d è~ôIì @  Ü¶Ã?d ($  @  Ü·Ã?d h( @  Ü ¸Ã?d ¨uЀ'(âÖ @  Ü!¹Ã?d èØé¯ @  Ü"ºÃ?d @€¶# Û @  Ü#»Ã?d €€\7 @  Ü$¼Ã?d À€•ŒKé @  Ü%½Ã?d 7**¦ @  Ü&¾Ã?d @µ»=x @  Ü'¿Ã?d €Ùc @  Ü(ÀÃ?d À HtÛ @  Ü)ÁÃ?d ‚ââ9½ @  Ü*ÂÃ?d @‚`s.c @  Ü+ÃÃ?d €‚ÁMy @  Ü,ÄÃ?d À‚CÜnQ @  Ü-ÅÃ?d ƒáz @  Ü.ÆÃ?d @ƒcëÀ @  Ü/ÇÃ?d €ƒüŸ6| @  Ü0ÈÃ?d Àƒ~!¢ @  Ü1ÉÃ?d „®?  @  Ü2ÊÃ?d @„—?(Ô @  Ü3ËÃ?d €„68 @  Ü4ÌÃ?d À„´hæ @  Ü5ÍÃ?d …6 © @  Ü6ÎÃ?d @…”§w @  Ü7ÏÃ?d €…Ã"lÇ @  Ü8ÐÃ?d À…A³{ @  Ü9ÑÃ?d †®6 @  Ü:ÒÃ?d @†,ˆ!¡ @  Ü;ÓÃ?d €†¶vM @  Ü<ÔÃ?d À†'a“ @  Ü=ÕÃ?d ‡­Ü @  Ü>ÖÃ?d @‡/ @  Ü?×Ã?d €‡eœ @  Ü@ØÃ?d À‡ôB @  ÜAÙÃ?d ˆËånø @  ÜBÚÃ?d @ˆIty& @  ÜCÛÃ?d €ˆèJ.Ê @  ÜDÜÃ?d ÀˆjÛ9 @  ÜEÝÃ?d ‰È}X[ @  ÜFÞÃ?d @‰JìO… @  ÜGßÃ?d €‰€Þé @  ÜHàÃ?d À‰O7 @  ÜIáÃ?d Šíå^Q @  ÜJâÃ?d @ŠotI @  ÜKãÃ?d €ŠÎJc @  ÜLäÃ?d ÀŠLÛ ½ @  ÜMåÃ?d ‹î}hò @  ÜNæÃ?d @‹lì, @  ÜOçÃ?d €‹ó˜Q @  ÜPèÃ?d À‹q FN @  ÜQéÃ?d Œ©Xæ @  ÜRêÃ?d @Œ˜8O8 @  ÜSëÃ?d €Œ9Ô @  ÜTìÃ?d ÀŒ»—  @  ÜUíÃ?d 1nE @  ÜVîÃ?d @› y› @  ÜWïÃ?d €Ì% + @  ÜXðÃ?d ÀN´õ @  ÜYñÃ?d Ž¡Q“ @  ÜZòÃ?d @Ž#FM @  Ü[óÃ?d €Ž‚±¡ @  Ü\ôÃ?d ÀŽ  @  Ü]õÃ?d ¢†g0 @  Ü^öÃ?d @ pî @  Ü_÷Ã?d €®eyâ @  Ü`øÃ?d À,ôn< @  ÜaùÃ?d àÄ?) @  ÜbúÃ?d @bU(÷ @  ÜcûÃ?d €Ãk @  ÜdüÃ?d ÀAúhÅ @  ÜeýÃ?d ‘ã\ Š @  ÜfþÃ?d @‘aÍT @  ÜgÿÃ?d €‘~! @  ÜhÄ?d À‘‡–iÿ @  ÜiÄ?d ’h<$™ @  ÜjÄ?d @’ê­3G @  ÜkÄ?d €’K“d« @  ÜlÄ?d À’Ésu @  ÜmÄ?d “k¤: @  ÜnÄ?d @“é5ä @  ÜoÄ?d €“vA+X @  ÜpÄ?d À“ôÐ<† @  Üq Ä?d ”Ÿp". @  Ür Ä?d @”á5ð @  Üs Ä?d €”¼ßb @  Üt Ä?d À”>Nu @  Üu Ä?d •œè @  ÜvÄ?d @•yS @  ÜwÄ?d €•Iüqã @  ÜxÄ?d À•Ëmf= @  ÜyÄ?d –$Ç+[ @  ÜzÄ?d @–¦V<… @  Ü{Ä?d €–hki @  Ü|Ä?d À–…ù|· @  Ü}Ä?d —'_ø @  Ü~Ä?d @—¥Î & @  ÜÄ?d €—fí5‰ @  Ü€Ä?d À—ä|"W @  ÜÄ?d ˜¢mCí @  Ü‚Ä?d @˜ üT3 @  ÜƒÄ?d €˜Âß @  Ü„Ä?d À˜S @  Ü…Ä?d ™¡õuN @  Ü†Ä?d @™#db @  Ü‡Ä?d €™éV)ü @  Üˆ Ä?d À™kÇ>" @  Ü‰!Ä?d š„msD @  ÜŠ"Ä?d @šüdš @  Ü‹#Ä?d €š§Â3v @  ÜŒ$Ä?d Àš%S$¨ @  Ü%Ä?d ›‡õEç @  ÜŽ&Ä?d @›dR9 @  Ü'Ä?d €›š|… @  Ü(Ä?d À›k[ @  Ü‘)Ä?d œs!uó @  Ü’*Ä?d @œñ°b- @  Ü“+Ä?d €œPŽ5Á @  Ü”,Ä?d ÀœÒ" @  Ü•-Ä?d p¹CP @  Ü–.Ä?d @ò(TŽ @  Ü—/Ä?d €¥­&> @  Ü˜0Ä?d À'<1à @  Ü™1Ä?d žÈ–|† @  Üš2Ä?d @žJkX @  Ü›3Ä?d €žë9<´ @  Üœ4Ä?d Àži¨+j @  Ü5Ä?d ŸËJ% @  Üž6Ä?d @ŸIŸ]û @  ÜŸ7Ä?d €ŸÇíT÷ @  Ü 8ÄuР?d ÀŸE|C) @  Ü¡9Ä?d  F™pè @  Ü¢:Ä?d X Äg6 @  Ü£;Ä?d ˜ e60Ú @  Ü¤<Ä?d Ø ç§' @  Ü¥=Ä?d ¡EFK @  Ü¦>Ä?d X¡ÇQ• @  Ü§?Ä?d ˜¡ýòè @  Ü¨@Ä?d Ø¡c6 @  Ü©AÄ?d ¢ÉUP @  ÜªBÄ?d X¢XBŽ @  Ü«CÄ?d ˜¢³fb @  Ü¬DÄ?d Ø¢1÷¼ @  Ü­EÄ?d £“Qcó @  Ü®FÄ?d X£Àt- @  Ü¯GÄ?d ˜£Ž´Z‘ @  Ü°HÄ?d Ø£ %MO @  Ü±IÄ?d ¤g…Sç @  Ü²JÄ?d X¤åD9 @  Ü³KÄ?d ˜¤D*Õ @  Ü´LÄ?d ؤÆ»  @  ÜµMÄ?d ¥deD @  Ü¶NÄ?d X¥æŒrš @  Ü·OÄ?d ˜¥± * @  Ü¸PÄ?d Ø¥3˜ô @  Ü¹QÄ?d ¦Ü2Z’ @  ÜºRÄ?d X¦^£ML @  Ü»SÄ?d ˜¦ÿ  @  Ü¼TÄ?d ئ} ~ @  Ü½UÄ?d §ߪl1 @  Ü¾VÄ?d X§];{ï @  Ü¿WÄ?d ˜§}Ntq @  ÜÀXÄ?d اÿßc¯ @  ÜÁYÄ?d ¨¹Î @  ÜÂZÄ?d X¨;_Ë @  ÜÃ[Ä?d ˜¨šaB' @  ÜÄ\Ä?d بðUù @  ÜÅ]Ä?d ©ºV4¶ @  ÜÆ^Ä?d X©8Ç#h @  ÜÇ_Ä?d ˜©òõh @  ÜÈ`Ä?d Ø©pdÚ @  ÜÉaÄ?d ªŸÎ2¼ @  ÜÊbÄ?d Xª_%b @  ÜËcÄ?d ˜ª¼arŽ @  ÜÌdÄ?d ت>ðeP @  ÜÍeÄ?d «œV @  ÜÎfÄ?d X«ÇÁ @  ÜÏgÄ?d ˜«³=} @  ÜÐhÄ?d Ø«"*£ @  ÜÑiÄ?d ¬h‚4  @  ÜÒjÄ?d X¬ê#Õ @  ÜÓkÄ?d ˜¬K-t9 @  ÜÔlÄ?d جɼcç @  ÜÕmÄ?d ­k¨ @  ÜÖnÄ?d X­é‹v @  Ü×oÄ?d ˜­¾gÆ @  ÜØpÄ?d Ø­<Ÿp @  ÜÙqÄ?d ®Ó5=~ @  ÜÚrÄ?d X®Q¤*  @  ÜÛsÄ?d ˜®ðš}L @  ÜÜtÄ?d Ø®r j’ @  ÜÝuÄ?d ¯Э Ý @  ÜÞvÄ?d X¯R< @  ÜßwÄ?d ˜¯ÜN @  ÜàxÄ?d د^ßÑ @  ÜáyÄ?d °’ïSÄ @  ÜâzÄ?d€ X°d½X¼ @  Ý{Ä?d ˜°$ÂGy @  Ý|Ä?d ذ¦SP§ @  Ý}Ä?d ±Á¼Ê @  Ý~Ä?d X±C-ÝÛ @  ÝÄ?d ˜±ª;ˆN @  Ý€Ä?d ر(ªŸ @  ÝÄ?d ² ²Œ @  Ý‚Ä?d X²‹#šR @  Ý ƒÄ?d ˜²ïT6S @  Ý „Ä?d زmÅ! @  Ý …Ä?d ³ *»/ @  Ý †Ä?d X³ˆ»¬ñ @  Ý ‡Ä?d ˜³tÜã× @  ÝˆÄ?d سöMô  @  Ý‰Ä?d ´þþ‹; @  ÝŠÄ?d X´|oœå @  Ý‹Ä?d ˜´0ä @  ÝŒÄ?d Ø´š‰': @  ÝÄ?d µýf½˜ @  ÝŽÄ?d Xµ÷ªF @  ÝÄ?d ˜µæÀ‡Œ @  ÝÄ?d صdQR @  Ý‘Ä?d ¶EI‚N @  Ý’Ä?d X¶ÇØ• @  Ý“Ä?d ˜¶£¯9‘ @  Ý”Ä?d ض!>.O @  Ý•Ä?d ·FÑ´í @  Ý–Ä?d X·Ä@£3 @  Ý—Ä?d ˜·8'ì @  Ý˜Ä?d Ø·º¶ûË @  Ý™Ä?d ¸޲Ü[ @  Ý šÄ?d X¸ #Ë… @  Ý!›Ä?d ˜¸hTg„ @  Ý"œÄ?d ظêÅpZ @  Ý#Ä?d ¹*êø @  Ý$žÄ?d X¹»ý& @  Ý%ŸÄ?d ˜¹ ;é0 @  Ý& Ä?d ع‰ªþî @  Ý'¡Ä?d º¨²ìò @  Ý(¢Ä?d Xº*#û, @  Ý)£Ä?d ˜ºNTW- @  Ý*¤Ä?d غÌÅ@ó @  Ý+¥Ä?d »«*ÚQ @  Ý,¦Ä?d X»)»Í @  Ý-§Ä?d ˜»ÕÜ‚© @  Ý.¨Ä?d Ø»WM•w @  Ý/©Ä?d ¼_þêE @  Ý0ªÄ?d X¼Ýoý› @  Ý1«Ä?d ˜¼¹Qš @  Ý2¬Ä?d ؼ;‰FD @  Ý3­Ä?d ½\fÜæ @  Ý4®Ä?d X½Þ÷Ë8 @  Ý5¯Ä?d ˜½GÀæò @  Ý6°Ä?d ؽÅQñ, @  Ý7±Ä?d ¾äIã0 @  Ý8²Ä?d X¾fØôî @  Ý9³Ä?d ˜¾¯Xï @  Ý:´Ä?d ؾ€>O1 @  Ý;µÄ?d ¿çÑÕ“ @  Ý<¶Ä?d X¿e@ÂM @  Ý=·Ä?d ˜¿™'k @uÐÀ  Ý>¸Ä?d Ø¿¶šµ @  Ý?¹Ä?d 0ÀѺfø @  Ý@ºÄ?d pÀS+q& @  ÝA»Ä?d °À7\Ý' @  ÝB¼Ä?d ðÀŒ , @  ÝC ½Ä?d 0Áë匎 @  ÝD ¾Ä?d pÁit›P @  ÝE ¿Ä?d °Á¤šW @  ÝF ÀÄ?d ðÁ5‰ @  ÝG ÁÄ?d 0Â>-Ÿ• @  ÝH ÂÄ?d p¼¼ˆK @  ÝI ÃÄ?d °ÂØË$J @  ÝJ ÄÄ?d ðÂZZ3” @  ÝK ÅÄ?d 0Ã=µ©6 @  ÝL ÆÄ?d pÿ$¾è @  ÝM ÇÄ?d °ÃCCñÎ @  ÝN ÈÄ?d ðÃÁÒæ @  ÝO ÉÄ?d 0ÄÉa™" @  ÝP ÊÄ?d pÄKðŽü @  ÝQ ËÄ?d °Ä/‡"ý @  ÝR ÌÄ?d ðÄ­5# @  ÝS ÍÄ?d 0ÅÊù¯ @  ÝT ÎÄ?d pÅHh¸_ @  ÝU ÏÄ?d °ÅÑ_•• @  ÝV ÐÄ?d ðÅS΂K @  ÝW ÑÄ?d 0ÆrÖW @  ÝX ÒÄ?d pÆðG‡‰ @  ÝY ÓÄ?d °Æ”0+ˆ @  ÝZ ÔÄ?d ðÆ¡xÜ| @  Ý´ .Å?d pݼéË¢ @  Ýµ /Å?d °Ý%Þæh @  Ý¶ 0Å?d ðݧOñ¶ @  Ý· 1Å?d 0Þ†W㪠@  Ý¸ 2Å?d pÞÆôt @  Ý¹ 3Å?d °Þ`±Xu @  Ýº 4Å?d ðÞâ O« @  Ý» 5Å?d 0ß…ÏÕ  @  Ý¼ 6Å?d pß^Â× @  Ý½ 7Å?d uÐà/°ßû9ñ @  Ý¾ 8Å?d ð߂ơ/ @  Ý¿9Å?d Hà5žRÆ @  ÝÀ:Å?d ˆàkP8 @  ÝÁ;Å?d ÈàÓxé @  ÝÂ<Å?d á0eñ @  ÝÃ=Å?d Há6de @  ÝÄ>Å?d ˆáóf› @  ÝÅ?Å?d Èá@Gr¼ @  ÝÆ@Å?d âÝÒ} @  ÝÇAÅ?d HâãÎw~ @  ÝÈBÅ?d ˆâÃ;u€ @  ÝÉCÅ?d Èâ(Ì¡ @  ÝÊDÅ?d ãÕ`@I @  ÝËEÅ?d HãàVAÝ @  ÝÌFÅ?d ˆãÀ£C# @  ÝÍGÅ?d Èãž % @  ÝÎHÅ?d ä‡îê* @  ÝÏIÅ?d Hä‚qÉ @  ÝÐJÅ?d ˆä4ws7 @  ÝÑKÅ?d ÈäòdÊ @  ÝÒLÅ?d å",Fþ @  ÝÓMÅ?d HåGj @  ÝÔNÅ?d ˆå7ïE” @  ÝÕOÅ?d Èå ¼}~ @  ÝÖPÅ?d æ‘øÝ¿ @  Ý×QÅ?d Hæ¯5x¼ @  ÝØRÅ?d ˆæÀzB @  ÝÙSÅ?d ÈæIÓÃc @  ÝÚTÅ?d ç™›O‹ @  ÝÛUÅ?d H笭N @  ÝÜVÅ?d ˆçŒXLá @  ÝÝWÅ?d ÈçÒ[ç @  ÝÞXÅ?d è椚ú @  ÝßYÅ?d HèdÎ&© @  ÝàZÅ?d ˆèD;$W @  Ýá[Å?d Èè‚(v @  Ýâ\Å?d€ é“'æž @  Þ]Å?d HéGP¯# @  Þ^Å?d ˆég¥­Ý @  Þ_Å?d ÈéW @  Þ`Å?d ê™L÷Ç @  ÞaÅ?d Hêi3 ¾ @  ÞbÅ?d ˆêIÆ@ @  ÞcÅ?d ÈêAgé @  ÞdÅ?d ë‘/eó @  Þ eÅ?d HëaPŸŠ @  Þ fÅ?d ˆëA¥t @  Þ gÅ?d ÈëÚï<Ÿ @  Þ hÅ?d ìáÏ @  Þ iÅ?d Hì3Þ5é @  ÞjÅ?d ˆì+7 @  ÞkÅ?d Èì¶+ï¬ @  ÞlÅ?d ífccD @  ÞmÅ?d Hí–™= @  ÞnÅ?d ˆí¶é›Ã @  ÞoÅ?d ÈíHóXÄ @  ÞpÅ?d îÕ·ø @  ÞqÅ?d Hî%È| @  ÞrÅ?d ˆî=‚ @  ÞsÅ?d Èî œæÙ @  ÞtÅ?d ïÝÔj1 @  ÞuÅ?d Hï-«H @  ÞvÅ?d ˆï ^’¶ @  ÞwÅ?d Èï–3] @  ÞxÅ?d ð(Êï @  ÞyÅ?d Hðصu– @  ÞzÅ?d ˆðø@wh @  Þ{Å?d ÈðLFˆc @  Þ |Å?d ñœ‹ @  Þ!}Å?d Hñlqþò @  Þ"~Å?d ˆñL„ü  @  Þ#Å?d Èñ¿GT @  Þ$€Å?d ò_ûç• @  Þ%Å?d Hò¯„ì @  Þ&‚Å?d ˆòq @  Þ'ƒÅ?d Èò‡ÐùI @  Þ(„Å?d óW˜u¡ @  Þ)…Å?d Hó§çØ @  Þ*†Å?d ˆó‡& @  Þ+‡Å?d ÈóX,Í @  Þ,ˆÅ?d ôß @  Þ-‰Å?d Hôõi%» @  Þ.ŠÅ?d ˆôÕœ'E @  Þ/‹Å?d Èôpœÿþ @  Þ0ŒÅ?d õ Ôs @  Þ1Å?d HõP«‰o @  Þ2ŽÅ?d ˆõp^‹‘ @  Þ3Å?d ÈõŽDH– @  Þ4Å?d öèW @  Þ5‘Å?d Höã. @  Þ6’Å?d ˆöÊÐ @  Þ7“Å?d ÈöË+ö‹ @  Þ8”Å?d ÷czc @  Þ9•Å?d H÷ë€ @  Þ:–Å?d ˆ÷Ëé‚ä @  Þ;—Å?d È÷P£# @  Þ<˜Å?d ød\¯ @  Þ=™Å?d Hø”#Uk @  Þ>šÅ?d ˆø´ÖW• @  Þ?›Å?d Èø®×®  @  Þ@œÅ?d ù~Ÿ"ä @  ÞAÅ?d HùŽàØ @  ÞBžÅ?d ˆù®Úc @  ÞCŸÅ?d Èù͸ ¸ @  ÞD Å?d úPü€y @  ÞE¡Å?d Hú ƒz @  ÞF¢Å?d ˆú€vxþ @  ÞG£Å?d Èúˆ×ž¥ @  ÞH¤Å?d ûXŸM @  ÞI¥Å?d Hû¨àè4 @  ÞJ¦Å?d ˆûˆêÊ @  ÞK§Å?d Èû_K! @  ÞL¨Å?d ü ¸. @  ÞM©Å?d HüúnBW @  ÞNªÅ?d ˆüÚ›@© @  ÞO«Å?d Èü›˜ @  ÞP¬Å?d ý¯Óú @  ÞQ­Å?d Hý_¬îƒ @  ÞR®Å?d ˆýYì} @  ÞS¯Å?d ÈýC/z @  ÞT°Å?d þ» @  ÞU±Å?d Hþìxu @  ÞV²Å?d ˆþÌw< @  ÞW³Å?d ÈþÄ,‘g @  ÞX´Å?d ÿd @  ÞYµÅ?d Hÿäçö @  ÞZ¶Å?d ˆÿÄîå @  Þ[uБ·Å?d Èÿ £6 @  Þ\¸Å?d ‘Ò¹‹Ç @  Þ]¹Å?d `‘"Æq¾ @  Þ^ºÅ?d  ‘3s@ @  Þ_»Å?d à‘¶5ŒK @  Þ`¼Å?d ‘f}£ @  Þa½Å?d `‘–úÚ @  Þb¾Å?d  ‘¶÷ø$ @  Þc¿Å?d à‘% î @  ÞdÀÅ?d ‘¸N·/ @  ÞeÁÅ?d `‘H1MV @  ÞfÂÅ?d  ‘hÄO¨ @  ÞgÃÅ?d à‘`e©ó @  ÞhÄÅ?d ‘°-% @  ÞiÅÅ?d `‘@Rßb @  ÞjÆÅ?d  ‘`§Ýœ @  ÞkÇÅ?d à‘ûí|w @  ÞlÈÅ?d ‘â£x @  ÞmÉÅ?d `‘Üu @  ÞnÊÅ?d  ‘2)wÿ @  ÞoËÅ?d à‘—)¯D @  ÞpÌÅ?d ‘Ga#¬ @  ÞqÍÅ?d `‘·ÙÕ @  ÞrÎÅ?d  ‘—ëÛ+ @  ÞsÏÅ?d à‘iñ, @  ÞtÐÅ?d ‘ôµ¸í @  ÞuÑÅ?d `‘ÊB” @  ÞvÒÅ?d  ‘$?@j @  ÞwÓÅ?d à‘,ž¦1 @  ÞxÔÅ?d ‘üÖ*Ù @  ÞyÕÅ?d `‘ ©Ð  @  ÞzÖÅ?d  ‘,\Ò^ @  Þ{×Å?d à‘·sµ @  Þ|ØÅ?d ‘ƒéÿ¨ @  Þ}ÙÅ?d `‘s–Ñ @  Þ~ÚÅ?d  ‘Sc/ @  ÞÛÅ?d à‘ª4· @  Þ€ÜÅ?d ‘z|Bo @  ÞÝÅ?d ` ‘Џ @  Þ‚ÞÅ?d   ‘ªöºè @  ÞƒßÅ?d à ‘É[@3 @  Þ„àÅ?d ‘Tàò @  Þ…áÅ?d ` ‘¤`‹ @  Þ†âÅ?d   ‘„•u @  Þ‡ãÅ?d à ‘Œ4þ. @  ÞˆäÅ?d ‘\|rÆ @  Þ‰åÅ?d ` ‘¬ˆ¿ @  ÞŠæÅ?d   ‘ŒöŠA @  Þ‹çÅ?d à ‘¼+ª @  ÞŒèÅ?d ‘òØ¥ @  ÞéÅ?d ` ‘þ"Ü @  ÞŽêÅ?d   ‘Þx " @  ÞëÅ?d à ‘{xø™ @  ÞìÅ?d ‘«0tq @  Þ‘íÅ?d ` ‘[OŽ @  Þ’îÅ?d   ‘{ºŒö @  Þ“ïÅ?d à ‘… Oñ @  Þ”ðÅ?d ‘äï0 @  Þ•ñÅ?d `‘è›I @  Þ–òÅ?d  ‘Èn· @  Þ—óÅ?d à‘ÀÏñì @  Þ˜ôÅ?d ‘‡} @  Þ™õÅ?d `‘àø‡} @  ÞšöÅ?d  ‘À …ƒ @  Þ›÷Å?d à‘[G$h @  ÞœøÅ?d ‘噘Ú @  ÞùÅ?d `‘æb£ @  ÞžúÅ?d  ‘5`] @  ÞŸûÅ?d à‘ŸV @  Þ üÅ?d ‘Q]¾ @  Þ¡ýÅ?d `‘¡"éÇ @  Þ¢þÅ?d  ‘×ë9 @  Þ£ÿÅ?d à‘©0H @  Þ¤Æ?d ‘_í‰ @  Þ¥Æ?d `‘¯’jð @  Þ¦Æ?d  ‘gh @  Þ§Æ?d à‘‡ÆŽU @  Þ¨Æ?d ‘W޽ @  Þ©Æ?d `‘§ñøÄ @  ÞªÆ?d  ‘‡ú: @  Þ«Æ?d à‘N[Ñ @  Þ¬Æ?d ‘¨Þ @  Þ­ Æ?d `‘õR§ @  Þ® Æ?d  ‘ÕŠPY @  Þ¯ Æ?d à‘pŠˆâ @  Þ° Æ?d ‘ Â  @  Þ± Æ?d `‘P½þs @  Þ²Æ?d  ‘pHü @  Þ³Æ?d à‘ŽR?Š @  Þ´Æ?d ‘ŸK @  ÞµÆ?d `‘ãie2 @  Þ¶Æ?d  ‘ÜgÌ @  Þ·Æ?d à‘Ë=— @  Þ¸Æ?d ‘u  @  Þ¹Æ?d `‘ë ÷ @  ÞºÆ?d  ‘Ëÿõø @  Þ»Æ?d à‘PµT @  Þ¼Æ?d ‘dJØ @  Þ½Æ?d `‘”5"w @  Þ¾Æ?d  ‘´À ‰ @  Þ¿Æ?d à‘®ÁÙ @  ÞÀÆ?d ‘~‰Uø @  ÞÁÆ?d `‘Žö¯ @  ÞÂÆ?d  ‘®­ @  ÞÃÆ?d à‘Í®W¤ @  ÞÄ Æ?d ‘Pê÷e @  ÞÅ!Æ?d `‘ •  @  ÞÆ"Æ?d  ‘€`â @  ÞÇ#Æ?d à‘ˆÁé¹ @  ÞÈ$Æ?d ‘X‰eQ @  ÞÉ%Æ?d `‘¨öŸ( @  ÞÊ&Æ?d  ‘ˆÖ @  ÞË'Æ?d à‘I<= @  ÞÌ(Æ?d ‘ Ï2 @  ÞÍ)Æ?d `‘úx5K @  ÞÎ*Æ?d  ‘Ú7µ @  ÞÏ+Æ?d à‘ï @  ÞÐ,Æ?d ‘¯Åcæ @  ÞÑ-Æ?d `‘_º™Ÿ @  ÞÒ.Æ?d  ‘O›a @  ÞÓ/Æ?d à‘UXf @  ÞÔ0Æ?d ‘ø§ @  ÞÕ1Æ?d `‘ìnÞ @  ÞÖ2Æ?d  ‘Ì›  @  Þ×3Æ?d à‘Ä:æ{ @  ÞØ4Æ?d ‘rj“ @  ÞÙ5Æ?d `‘ä ê @  ÞÚ6Æ?d  ‘Äø’uÐ ‘ @  ÞÛ7Æ?d à‘fuï* @  ÞÜ 8Æ?d 8 ‘~1L @  ÞÝ 9Æ?d x ‘çË5 @  ÞÞ :Æ?d ¸ ‘ÇôÉË @  Þß ;Æ?d ø ‘sò6À @  Þà <Æ?d 8!‘£ºº( @  Þá =Æ?d x!‘SÅ@Q @  Þâ >Æ?d€ ¸!‘ó^  @  ß ?Æ?d ø!‘uOùê @  ß @Æ?d 8"‘è Y+ @  ß AÆ?d x"‘Ý=X¿ @  ß BÆ?d ¸"‘ýÈZA @  ß CÆ?d ø"‘;Ûã` @  ß DÆ?d 8#‘ë“oˆ @  ß EÆ?d x#‘Õ^Ê‹ @  ß FÆ?d ¸#‘õ«Èu @  ß GÆ?d ø#‘«¨’s @  ß HÆ?d 8$‘²æa| @  ß IÆ?d x$‘‡Ð`è @  ß JÆ?d ¸$‘§%b @  ß KÆ?d ø$‘a6Û7 @  ß LÆ?d 8%‘±~Wß @  ß MÆ?d x%‘"Ì< @  ß NÆ?d ¸%‘çΠ@  ß OÆ?d ø%‘9´ö( @  ß PÆ?d 8&‘¤ðVé @  ß QÆ?d x&‘‘ÆW} @  ß RÆ?d ¸&‘±3Uƒ @  ß SÆ?d ø&‘w ì¢ @  ß TÆ?d 8'‘§h`J @  ß UÆ?d x'‘™¥ÅI @  ß VÆ?d ¸'‘¹PÇ· @  ß WÆ?d ø'‘çS± @  ß XÆ?d 8(‘Ó¬¬ @  ß YÆ?d x(‘æš8 @  ß ZÆ?d ¸(‘ÆoÆ @  ß [Æ?d ø(‘|«ç @  ß \Æ?d 8)‘Ð4' @  ß ]Æ?d x)‘R^›\ @  ß ^Æ?d ¸)‘r«™¢ @  ß! _Æ?d ø)‘ÔO˜” @  ß" `Æ?d 8*‘I 8U @  ß# aÆ?d x*‘|=9Á @  ß$ bÆ?d ¸*‘\È;? @  ß% cÆ?d ø*‘šÛ‚ @  ß& dÆ?d 8+‘J“ö @  ß' eÆ?d x+‘t^«õ @  ß( fÆ?d ¸+‘T«©  @  ß) gÆ?d ø+‘ ¨ó  @  ß* hÆ?d 8,‘æ @  ß+ iÆ?d x,‘&Ж @  ß, jÆ?d ¸,‘%h @  ß- kÆ?d ø,‘À6ºI @  ß. lÆ?d 8-‘~6¡ @  ß/ mÆ?d x-‘ƒ­B @  ß0 nÆ?d ¸-‘£ç¯¼ @  ß1 oÆ?d ø-‘˜´—V @  ß2 pÆ?d 8.‘ð7— @  ß3 qÆ?d x.‘0Æ6 @  ß4 rÆ?d ¸.‘34ý @  ß5 sÆ?d ø.‘Ö Ü @  ß6 tÆ?d 8/‘h4 @  ß7 uÆ?d x/‘8¥¤7 @  ß8 vÆ?d ¸/‘P¦É @  ß9 wÆ?d ø/‘FSüÏ @  ß: xÆ?d 80‘ø@} @  ß; yÆ?d x0‘Í»Aé @  ß< zÆ?d ¸0‘íNC @  ß= {Æ?d ø0‘+]ú6 @  ß> |Æ?d 81‘ûvÞ @  ß? }Æ?d x1‘×xÌ @  ß@ ~Æ?d ¸1‘÷Îá @  ßA Æ?d ø1‘¼ÿŽT @  ßB €Æ?d 82‘!».• @  ßC Æ?d x2‘/ @  ßD ‚Æ?d ¸2‘4x-ÿ @  ßE ƒÆ?d ø2‘òk”Þ @  ßF „Æ?d 83‘"#6 @  ßG …Æ?d x3‘î½5 @  ßH †Æ?d ¸3‘<¿Ë @  ßI ‡Æ?d ø3‘båÍ @  ßJ ˆÆ?d 84‘{V @  ßK ‰Æ?d x4‘N`V @  ßL ŠÆ?d ¸4‘n•¨ @  ßM ‹Æ?d ø4‘¨†¬‰ @  ßN ŒÆ?d 85‘xÎ a @  ßO Æ?d x5‘뢻‚ @  ßP ŽÆ?d ¸5‘ËW¹| @  ßQ Æ?d ø5‘ð– @  ßR Æ?d 86‘m@!W @  ßS ‘Æ?d x6‘Xv à @  ßT ’Æ?d ¸6‘xƒ"= @  ßU “Æ?d ø6‘¾› @  ßV ”Æ?d 87‘nØô @  ßW •Æ?d x7‘P²÷ @  ßX –Æ?d ¸7‘pà°  @  ßY —Æ?d ø7‘.ãê @  ßZ ˜Æ?d 88‘f @  ß[ ™Æ?d x8‘/*g† @  ß\ šÆ?d ¸8‘ßex @  ß] ›Æ?d ø8‘ÉÌÜY @  ß^ œÆ?d 89‘„P± @  ß_ Æ?d x9‘›îìâ @  ß` žÆ?d ¸9‘»î @  ßa ŸÆ?d ø9‘ÿï* @  ßb  Æ?d 8:‘€»Oë @  ßc ¡Æ?d x:‘µN @  ßd ¢Æ?d ¸:‘•xL @  ße £Æ?d ø:‘Skõ  @  ßf ¤Æ?d 8;‘ƒ#yH @  ßg ¥Æ?d x;‘½îÜK @  ßh ¦Æ?d ¸;‘Þµ @  ßi §Æ?d ø;‘ij @  ßj ¨Æ?d 8<‘ÚVw¼ @  ßk ©Æ?d x<‘ï`v( @  ßl ªÆ?d ¸<‘Ï•tÖ @  ßm «Æ?d ø<‘ †Í÷ @  ßn ¬Æ?d 8=‘ÙÎA @  ßo ­Æ?d x=‘J¢Úü @  ßp ®Æ?d ¸=‘jWØ @  ßq ¯Æ?d ø=‘Qàè @  ßr °Æ?d 8>‘Ì@@) @  ßs ±Æ?d x>‘ùvA½ @  ßt ²Æ?d ¸>‘ÙƒCC @  ßu ³Æ?d ø>‘úb @  ßv ´Æ?d 8?‘ÏØvŠ @  ßw µÆ?d x?‘ñÓ‰ @  ßx ¶Æ?duÐ@‘7 ¸?‘ÑàÑw @  ßy ·Æ?d ø?‘¶$W¤ @  ßz¸Æ?d P@‘uˆí˜ @  ß{¹Æ?d @‘âÚù, @  ß|ºÆ?d Ð@‘`Kîò @  ß}»Æ?d A‘ôÌå @  ß~¼Æ?d PA‘vÛ; @  ß½Æ?d A‘ODë @  ß€¾Æ?d ÐA‘™ÞS5 @  ß¿Æ?d B‘пð  @  ß‚ÀÆ?d PB‘R.çÓ @  ßƒÁÆ?d B‘Å|óg @  ß„ÂÆ?d ÐB‘Gíä¹ @  ß…ÃÆ?d C‘Ó'Æ® @  ß†ÄÆ?d PC‘Q¶Ñp @  ß‡ÅÆ?d C‘ÍaS @  ßˆÆÆ?d ÐC‘OŽv @  ß‰ÇÆ?d D‘ŠRÈZ @  ßŠÈÆ?d PD‘Ãß„ @  ß‹ÉÆ?d D‘Ÿ‘Ë0 @  ßŒÊÆ?d ÐD‘Üî @  ßËÆ?d E‘‰Êþù @  ßŽÌÆ?d PE‘ [é' @  ßÍÆ?d E‘:Sgä @  ßÎÆ?d ÐE‘¸Âp: @  ß‘ÏÆ?d F‘œDÿÏ @  ß’ÐÆ?d PF‘Õè @  ß“ÑÆ?d F‘‰‡ü¥ @  ß”ÒÆ?d ÐF‘ ë{ @  ß•ÓÆ?d G‘ŸÜÉl @  ß–ÔÆ?d PG‘MÞ² @  ß—ÕÆ?d G‘än‘ @  ß˜ÖÆ?d ÐG‘uyO @  ß™ׯ?d H‘븊 @  ßšØÆ?d PH‘i‰¯T @  ß›ÙÆ?d H‘þÛ»à @  ßœÚÆ?d ÐH‘|J¬> @  ßÛÆ?d I‘耎) @  ßžÜÆ?d PI‘j™÷ @  ßŸÝÆ?d I‘J0„ @  ß ÞÆ?d ÐI‘ÈŽ'Z @  ß¡߯?d J‘q¿‘s @  ß¢àÆ?d PJ‘ó.†­ @  ß£áÆ?d J‘d|’ @  ß¤âÆ?d ÐJ‘æí…Ç @  ß¥ãÆ?d K‘r'§Ð @  ß¦äÆ?d PK‘ð¶° @  ß§åÆ?d K‘l- @  ß¨æÆ?d ÐK‘îŽó @  ß©çÆ?d L‘+R©$ @  ßªèÆ?d PL‘©Ã¾ú @  ß«éÆ?d L‘>‘ªN @  ß¬êÆ?d ÐL‘¼½ @  ß­ëÆ?d M‘(ÊŸ‡ @  ß®ìÆ?d PM‘ª[ˆY @  ß¯íÆ?d M‘›Sš @  ß°îÆ?d ÐM‘ÂD @  ß±ïÆ?d N‘=Dž± @  ß²ðÆ?d PN‘¿Õ‰o @  ß³ñÆ?d N‘(‡Û @  ß´òÆ?d ÐN‘ªŠ @  ßµóÆ?d O‘>ܨ @  ß¶ôÆ?d PO‘¼M¿Ì @  ß·õÆ?d O‘ äï @  ß¸öÆ?d ÐO‘¢u1 @  ß¹÷Æ?d P‘À9é[ @  ßºøÆ?d PP‘B¨þ… @  ß»ùÆ?d P‘Õúê1 @  ß¼úÆ?d ÐP‘Wkýï @  ß½ûÆ?d Q‘Ã¡ßø @  ß¾üÆ?d PQ‘A0È& @  ß¿ýÆ?d Q‘Ï9gÇ @  ßÀþÆ?d ÐQ‘M¨p @  ßÁÿÆ?d R‘fhÒ¿ @  ßÂÇ?d PR‘äùÅa @  ßÃÇ?d R‘s«ÑÕ @  ßÄÇ?d ÐR‘ñ:Æ  @  ßÅÇ?d S‘eðä @  ßÆÇ?d PS‘çaó @  ßÇÇ?d S‘{ÈCá @  ßÈÇ?d ÐS‘ùYT? @  ßÉÇ?d T‘<…êè @  ßÊÇ?d PT‘¾ý6 @  ßË Ç?d T‘)Fé‚ @  ßÌ Ç?d ÐT‘«×þ\ @  ßÍ Ç?d U‘?ÜK @  ßÎ Ç?d PU‘½ŒË• @  ßÏ Ç?d U‘Œ„EV @  ßÐÇ?d ÐU‘Rˆ @  ßÑÇ?d V‘*“Ý} @  ßÒÇ?d PV‘¨Ê£ @  ßÓÇ?d V‘?PÞ @  ßÔÇ?d ÐV‘½ÁÉÉ @  ßÕÇ?d W‘) ëÞ @  ßÖÇ?d PW‘«šü @  ß×Ç?d W‘73L# @  ßØÇ?d ÐW‘µ¢[ý @  ßÙÇ?d X‘]Ïš8 @  ßÚÇ?d PX‘ß^æ @  ßÛÇ?d X‘H ™R @  ßÜÇ?d ÐX‘ÊŽŒ @  ßÝÇ?d Y‘^W¬› @  ßÞÇ?d PY‘ÜÆ»E @  ßßÇ?d Y‘üÈ6 @  ßàÇ?d ÐY‘~Yè @  ßáÇ?d Z‘Çh³Á @  ßâ Ç?d€ PZ‘}‡V? @  à!Ç?d Z‘ ” ¢ @  à"Ç?d ÐZ‘‰| @  à#Ç?d [‘؆Ć @  à$Ç?d P[‘ZÓX @  à%Ç?d [‘ < @  à&Ç?d Ð[‘Š+ß @  à'Ç?d \‘óÊr @  à(Ç?d P\‘bݬ @  à )Ç?d \‘Qy2õ @  à *Ç?d Ð\‘Óè%+ @  à +Ç?d ]‘‚küÑ @  à ,Ç?d P]‘úë @  à -Ç?d ]‘RáV @  à.Ç?d Ð]‘Ðpˆ @  à/Ç?d ^‘—åýç @  à0Ç?d P^‘tê9 @  à1Ç?d ^‘Go` @  à2Ç?d Ð^‘Åþ¾ @  à3Ç?d _‘”}ËD @  à4Ç?d P_‘ìÜš @  à5Ç?d _‘D÷3à @  àuÐ`‘6Ç?d Ð_‘Æf$ @  à7Ç?d (`‘j¾ƒ' @  à8Ç?d h`‘è/”ù @  à9Ç?d ¨`‘º4{  @  à:Ç?d è`‘8¥l~ @  à;Ç?d (a‘i&µ„ @  à<Ç?d ha‘ë·¢Z @  à=Ç?d ¨a‘¹¬M @  à>Ç?d èa‘;=ZÝ @  à?Ç?d (b‘I¿Ï @  à @Ç?d hb‘‚ب @  à!AÇ?d ¨b‘ÐÃGH @  à"BÇ?d èb‘RRP– @  à#CÇ?d (c‘щl @  à$DÇ?d hc‘@ž² @  à%EÇ?d ¨c‘Ó[që @  à&FÇ?d èc‘QÊf5 @  à'GÇ?d (d‘Z¤‡˜ @  à(HÇ?d hd‘Ø5F @  à)IÇ?d ¨d‘Š. @  à*JÇ?d èd‘¿hÁ @  à+KÇ?d (e‘Y<±; @  à,LÇ?d he‘Û­¦å @  à-MÇ?d ¨e‘‰¶I¼ @  à.NÇ?d èe‘ '^b @  à/OÇ?d (f‘L²°  @  à0PÇ?d hf‘Î#§Ó @  à1QÇ?d ¨f‘œ8HŠ @  à2RÇ?d èf‘©_T @  à3SÇ?d (g‘O*†® @  à4TÇ?d hg‘Í»‘p @  à5UÇ?d ¨g‘Ÿ ~) @  à6VÇ?d èg‘1i÷ @  à7WÇ?d (h‘;î÷H @  à8XÇ?d hh‘¹à– @  à9YÇ?d ¨h‘ëdÏ @  à:ZÇ?d èh‘iõ @  à;[Ç?d (i‘8vÁë @  à<\Ç?d hi‘ºçÖ5 @  à=]Ç?d ¨i‘èü9l @  à>^Ç?d èi‘jm.² @  à?_Ç?d (j‘NØ# @  à@`Ç?d hj‘ßÏý @  àAaÇ?d ¨j‘ßÄ ¤ @  àBbÇ?d èj‘]U7z @  àCcÇ?d (k‘ Öî€ @  àDdÇ?d hk‘ŽGù^ @  àEeÇ?d ¨k‘Ü\ @  àFfÇ?d èk‘^ÍÙ @  àGgÇ?d (l‘U£àt @  àHhÇ?d hl‘×2÷ª @  àIiÇ?d ¨l‘…)ó @  àJjÇ?d èl‘¸- @  àKkÇ?d (m‘V;Ö× @  àLlÇ?d hm‘ÔªÁ  @  àMmÇ?d ¨m‘†±.P @  àNnÇ?d èm‘ 9Ž @  àOoÇ?d (n‘Cµ×á @  àPpÇ?d hn‘Á$À? @  àQqÇ?d ¨n‘“?/f @  àRrÇ?d èn‘®8¸ @  àSsÇ?d (o‘@-áB @  àTtÇ?d ho‘¼öœ @  àUuÇ?d ¨o‘§Å @  àVvÇ?d èo‘6 @  àWwÇ?d (p‘¾È   @  àXxÇ?d hp‘ @  ànŽÇ?d èu‘—)Ü @  àoÇ?d (v‘…dz @  àpÇ?d hv‘“Ðm @  àq‘Ç?d ¨v‘Uˆ?4 @  àr’Ç?d èv‘×(ê @  às“Ç?d (w‘†šñ @  àt”Ç?d hw‘ æÎ @  àu•Ç?d ¨w‘V — @  àv–Ç?d èw‘ÔI @  àw—Ç?d (x‘ò^€ö @  àx˜Ç?d hx‘pÏ—( @  ày™Ç?d ¨x‘"Ôxq @  àzšÇ?d èx‘ Eo¯ @  à{›Ç?d (y‘ñƶU @  à|œÇ?d hy‘sW¡‹ @  à}Ç?d ¨y‘!LNÒ @  à~žÇ?d èy‘£ÝY  @  àŸÇ?d (z‘%¨Ÿ¬ @  à€ Ç?d hz‘§9ˆr @  à¡Ç?d ¨z‘õ"g+ @  à‚¢Ç?d èz‘w³põ @  àƒ£Ç?d ({‘&0© @  à„¤Ç?d h{‘¤¡¾Ñ @  à…¥Ç?d ¨{‘öºQˆ @  à†¦Ç?d è{‘t+FV @  à‡§Ç?d (|‘E§û @  àˆ¨Ç?d h|‘ýÔ°% @  à‰©Ç?d ¨|‘¯Ï_| @  àŠªÇ?d è|‘-^H¢ @  à‹«Ç?d (}‘|Ý‘X @  àŒ¬Ç?d h}‘þL†† @  à­Ç?d ¨}‘¬Wiß @  àŽ®Ç?d è}‘.Æ~ @  à¯Ç?d (~‘iSn @  à°Ç?d h~‘뇰 @  à‘±Ç?d ¨~‘¹Ùhé @  à’²Ç?d è~‘;H7 @  à“³Ç?d (‘j˦Í @  à”´Ç?d h‘èZ± @  à•µÇ?d ¨‘uЀ‘'ºA^J @  à–¶Ç?d è‘•A @  à— ·Ç?d @€‘}‰e— @  à˜ ¸Ç?d €€‘]|gi @  à™ ¹Ç?d À€‘­ @  àš ºÇ?d ‘}Kø @  à› »Ç?d @‘~S4 @  àœ ¼Ç?d €‘^äQÊ @  à ½Ç?d À‘®›«³ @  àž ¾Ç?d ‚‘3ß r @  àŸ ¿Ç?d @‚‘~Y @  à  ÀÇ?d €‚‘7‹[ @  à¡ ÁÇ?d À‚‘Çô¡ø @  à¢ ÂÇ?d ƒ‘¼- @  à£ ÃÇ?d @ƒ‘æoÜ @  à¤ ÄÇ?d €ƒ‘4m" @  à¥ ÅÇ?d Àƒ‘Äl—[ @  à¦ ÆÇ?d „‘Ý"dT @  à§ ÇÇ?d @„‘M“a( @  à¨ ÈÇ?d €„‘mfcÖ @  à© ÉÇ?d À„‘™¯ @  àª ÊÇ?d …‘t–É’ @  à«ËÇ?d @…‘wÌ‹^ @  à¬ÌÇ?d €…‘W9‰  @  à­ÍÇ?d À…‘§FsÙ @  à®ÎÇ?d †‘:Ó @  à¯ÏÇ?d @†‘bBŠh @  à°ÐÇ?d €†‘B·ˆ– @  à±ÑÇ?d À†‘²Èrï @  à²ÒÇ?d ‡‘b€þ @  à³ÓÇ?d @‡‘aÚ¼Ë @  à´ÔÇ?d €‡‘A/¾5 @  àµÕÇ?d À‡‘±PDL @  à¶ÖÇ?d ˆ‘…¯ÈQ @  à·×Ç?d @ˆ‘Í- @  à¸ØÇ?d €ˆ‘5ëÏÓ @  à¹ÙÇ?d Àˆ‘Å”5ª @  àºÚÇ?d ‰‘ܹB @  à»ÛÇ?d @‰‘†ûŽ @  à¼ÜÇ?d €‰‘6sùp @  à½ÝÇ?d À‰‘Æ   @  à¾ÞÇ?d Š‘[H£È @  à¿ßÇ?d @Š‘!¾âF @  àÀàÇ?d €Š‘Kภ@  àÁáÇ?d ÀŠ‘ñ4Á @  àÂâÇ?d ‹‘!|–) @  àÃãÇ?d @‹‘"&Ôå @  àÄäÇ?d €‹‘ÓÖ @  àÅåÇ?d À‹‘ò¬,b @  àÆæÇ?d Œ‘ëâßm @  àÇçÇ?d @Œ‘{SÚ @  àÈèÇ?d €Œ‘[¦Øï @  àÉéÇ?d ÀŒ‘«Ù"– @  àÊêÇ?d ‘{‘®~ @  àËëÇ?d @‘xËì² @  àÌìÇ?d €‘X>îL @  àÍíÇ?d À‘¨A5 @  àÎîÇ?d Ž‘5´ô @  àÏïÇ?d @Ž‘mEí„ @  àÐðÇ?d €Ž‘M°ïz @  àÑñÇ?d ÀŽ‘½Ï @  àÒòÇ?d ‘m‡™ë @  àÓóÇ?d @‘nÝÛ' @  àÔôÇ?d €‘N(ÙÙ @  àÕõÇ?d À‘¾W#  @  àÖöÇ?d ‘‰Ÿ @  à×÷Ç?d @‘8šn @  àØøÇ?d €‘°Í˜ @  àÙùÇ?d À‘@²bé @  àÚúÇ?d ‘‘úî @  àÛûÇ?d @‘‘“ ¬Í @  àÜüÇ?d €‘‘³U®3 @  àÝýÇ?d À‘‘C*TJ @  àÞþÇ?d ’‘Þnô‹ @  àßÿÇ?d @’‘}]–÷ @  ààÈ?d €’‘]¨”  @  àáÈ?d À’‘­×np @  àâÈ?d€ “‘ \þ> @  áÈ?d @“‘ëGôÛ @  áÈ?d €“‘˲ö% @  áÈ?d À“‘þ„÷± @  áÈ?d ”‘çʾ @  áÈ?d @”‘¹É^¸ @  áÈ?d €”‘™<\F @  á È?d À”‘§ñùE @  á È?d •‘w¹u­ @  á  È?d @•‘±ªÌŒ @  á  È?d €•‘‘_Îr @  á  È?d À•‘¤iÏæ @  á È?d –‘9-o' @  á È?d @–‘~WÍ @  áÈ?d €–‘"‹U3 @  áÈ?d À–‘±çÎÐ @  áÈ?d —‘a¯B8 @  áÈ?d @—‘§¼û @  áÈ?d €—‘‡Iùç @  áÈ?d À—‘²øs @  áÈ?d ˜‘†€tn @  áÈ?d @˜‘؃.h @  áÈ?d €˜‘øv,– @  áÈ?d À˜‘Æ»‰• @  áÈ?d ™‘ó} @  áÈ?d @™‘Ðà¼\ @  áÈ?d €™‘ð¾¢ @  áÈ?d À™‘Å#¿6 @  áÈ?d š‘Xg÷ @  áÈ?d @š‘þƒÁ @  á È?d €š‘Þv? @  á!È?d Àš‘\ l @  á "È?d ›‘ŒT,„ @  á!#È?d @›‘JG•¥ @  á"$È?d €›‘j²—[ @  á#%È?d À›‘_„–Ï @  á$&È?d œ‘FÊeÀ @  á%'È?d @œ‘É?Æ @  á&(È?d €œ‘8<=8 @  á')È?d Àœ‘ñ˜; @  á(*È?d ‘Ö¹Ó @  á)+È?d @‘ª­ò @  á*,È?d €‘0_¯  @  á+-È?d À‘i®˜ @  á,.È?d ž‘˜-Y @  á-/È?d @ž‘£~6³ @  á.0È?d €ž‘ƒ‹4M @  á/1È?d Àž‘篮 @  á02È?d Ÿ‘À¯#F @  á13È?d @Ÿ‘¼šg @  á24È?d €Ÿ‘&I˜™ @  á35ÈuР‘?d ÀŸ‘™  @  á46È?d  ‘btGk @  á57È?d X ‘È?d ¢‘¼“,ò @  á=?È?d X¢‘ê'8Õ @  á>@È?d ˜¢‘ÊÒ:+ @  á?AÈ?d Ø¢‘æ¿€ê @  á@BÈ?d £‘6÷  @  áACÈ?d X£‘ðäµ# @  áBDÈ?d ˜£‘Ð·Ý @  áCEÈ?d Ø£‘å'¶I @  áDFÈ?d ¤‘üiEF @  áEGÈ?d X¤‘¢j@ @  áFHÈ?d ˜¤‘‚Ÿ¾ @  áGIÈ?d ؤ‘¼R¸½ @  áHJÈ?d ¥‘l4U @  áIKÈ?d X¥‘ª t @  áJLÈ?d ˜¥‘ŠüŠ @  áKMÈ?d Ø¥‘¿ÊŽ @  áLNÈ?d ¦‘"Ž.ß @  áMOÈ?d X¦‘Ý5 @  áNPÈ?d ˜¦‘9(Ë @  áOQÈ?d ئ‘ªD( @  áPRÈ?d §‘z À @  áQSÈ?d X§‘¼ºá @  áRTÈ?d ˜§‘œê¸ @  áSUÈ?d ا‘©Ü¹‹ @  áTVÈ?d ¨‘#5– @  áUWÈ?d X¨‘à o @  áVXÈ?d ˜¨‘ãÕmn @  áWYÈ?d ب‘ÝÈm @  áXZÈ?d ©‘ PD… @  áY[È?d X©‘ËCý¤ @  áZ\È?d ˜©‘ë¶ÿZ @  á[]È?d Ø©‘Þ€þÎ @  á\^È?d ª‘CÄ^ @  á]_È?d Xª‘å _9 @  á^`È?d ˜ª‘ÅÕ]Ç @  á_aÈ?d ت‘G¿á” @  á`bÈ?d «‘—÷m| @  áacÈ?d X«‘QäÔ] @  ábdÈ?d ˜«‘qÖ£ @  áceÈ?d Ø«‘D'×7 @  ádfÈ?d ¬‘]i$8 @  áegÈ?d X¬‘j~> @  áfhÈ?d ˜¬‘#Ÿ|À @  ágiÈ?d ج‘RÙà @  áhjÈ?d ­‘ÍU+ @  áikÈ?d X­‘ ì  @  ájlÈ?d ˜­‘+üîô @  ákmÈ?d Ø­‘Êï` @  álnÈ?d ®‘ƒŽO¡ @  ámoÈ?d X®‘¸ÝwK @  ánpÈ?d ˜®‘˜(uµ @  áoqÈ?d Ø®‘ DîV @  áprÈ?d ¯‘Û b¾ @  áqsÈ?d X¯‘ÛŸ @  ártÈ?d ˜¯‘=êÙa @  ásuÈ?d د‘ÜØõ @  átvÈ?d °‘¶dG @  áuwÈ?d X°‘è>A @  ávxÈ?d ˜°‘Èô<¿ @  áwyÈ?d ذ‘ö9™¼ @  áxzÈ?d ±‘&qT @  áy{È?d X±‘àb¬u @  áz|È?d ˜±‘À—®‹ @  á{}È?d ر‘õ¡¯ @  á|~È?d ²‘håÞ @  á}È?d X²‘#—Ok @  á~€È?d ˜²‘bM• @  áÈ?d ز‘ÌYÇe @  á€‚È?d ³‘K @  áƒÈ?d X³‘Úò¬ @  á‚„È?d ˜³‘ú÷ðR @  áƒ…È?d س‘ÏÁñÆ @  á„†È?d ´‘ÖÉ @  á…‡È?d X´‘ˆŒXÏ @  á†ˆÈ?d ˜´‘¨yZ1 @  á‡‰È?d Ø´‘–´ÿ2 @  áˆŠÈ?d µ‘FüsÚ @  á‰‹È?d Xµ‘€ïÊû @  áŠŒÈ?d ˜µ‘ È @  á‹È?d ص‘•,É‘ @  áŒŽÈ?d ¶‘hiP @  áÈ?d X¶‘3;Qº @  áŽÈ?d ˜¶‘ÎSD @  á‘È?d ض‘€¢È§ @  á’È?d ·‘PêDO @  á‘“È?d X·‘–ùýn @  á’”È?d ˜·‘¶ ÿ @  á“•È?d Ø·‘ƒ:þ @  á”–È?d ¸‘·År @  á•—È?d X¸‘éÆ( @  á–˜È?d ˜¸‘É3*á @  á—™È?d ظ‘÷þâ @  á˜šÈ?d ¹‘'¶  @  á™›È?d X¹‘᥺+ @  ášœÈ?d ˜¹‘ÁP¸Õ @  á›È?d ع‘ôf¹A @  áœžÈ?d º‘i"€ @  áŸÈ?d Xº‘ÏÆ¶ @  áž È?d ˜º‘ï3H @  áŸ¡È?d غ‘mY¦ @  á ¢È?d »‘½*ó @  á¡£È?d X»‘{“Ò @  á¢¤È?d ˜»‘[÷‘, @  á£¥È?d Ø»‘nÁ¸ @  á¤¦È?d ¼‘wc· @  á¥§È?d X¼‘)Œ9± @  á¦¨È?d ˜¼‘ y;O @  á§©È?d ؼ‘7´žL @  á¨ªÈ?d ½‘çü¤ @  á©«È?d X½‘!ï«… @  áª¬È?d ˜½‘©{ @  á«­È?d ؽ‘4,¨ï @  á¬®È?d ¾‘©h. @  á­¯È?d X¾‘’;0Ä @  á®°È?d ˜¾‘²Î2: @  á¯±È?d ؾ‘!¢©Ù @  á°²È?d ¿‘ñê%1 @  á±³È?d X¿‘7ùœ @  á²´È?d ˜¿‘ žî @uÐÀ‘  á³µÈ?d Ø¿‘ýC¯ @  á´ ¶È?d 0À‘ ý @  áµ ·È?d pÀ‘!Hû @  á¶ ¸È?d °À‘ûJ @  á· ¹È?d ðÀ‘?6ï @  á¸ ºÈ?d 0Á‘ï~cî @  á¹ »È?d pÁ‘)mÚÏ @  áº ¼È?d °Á‘ ˜Ø1 @  á» ½È?d ðÁ‘<®Ù¥ @  á¼ ¾È?d 0‘¡êyd @  á½ ¿È?d p‘÷^mC @  á¾ ÀÈ?d °Â‘׫o½ @  á¿ ÁÈ?d ð‘ûÆÕ| @  áÀ ÂÈ?d 0Ñ+ŽY” @  áÁ ÃÈ?d pÑíൠ@  á ÄÈ?d °Ã‘ÍhâK @  áà ÅÈ?d ðÑø^ãß @  áÄ ÆÈ?d 0Ä‘áÐ @  áÅ ÇÈ?d pÄ‘¿JÖ @  áÆ ÈÈ?d °Ä‘ŸæH( @  áÇ ÉÈ?d ðÄ‘¡+í+ @  áÈ ÊÈ?d 0Å‘qcaà @  áÉ ËÈ?d pÅ‘·pØâ @  áÊ ÌÈ?d °Å‘—…Ú @  áË ÍÈ?d ðÅ‘¢³Ûˆ @  áÌ ÎÈ?d 0Æ‘?÷{I @  áÍ ÏÈ?d pÆ‘¤C£ @  áÎ ÐÈ?d °Æ‘$QA] @  áÏ ÑÈ?d ðÆ‘·=Ú¾ @  áÐ ÒÈ?d 0Ç‘guVV @  áÑ ÓÈ?d pÇ‘¡fïw @  áÒ ÔÈ?d °Ç‘“í‰ @  áÓ ÕÈ?d ðÇ‘´¥ì @  áÔ ÖÈ?d 0È‘€Z` @  áÕ ×È?d pÈ‘ÞY: @  áÖ ØÈ?d °È‘þ¬8ø @  á× ÙÈ?d ðÈ‘Àaû @  áØ ÚÈ?d 0É‘) @  áÙ ÛÈ?d pÉ‘Ö:¨2 @  áÚ ÜÈ?d °É‘öϪÌ @  áÛ ÝÈ?d ðÉ‘Ãù«X @  áÜ ÞÈ?d 0Ê‘^½ ™ @  áÝ ßÈ?d pÊ‘øY ¯ @  áÞ àÈ?d °Ê‘جQ @  áß áÈ?d ðÊ‘ZÆ´ @  áà âÈ?d 0Ë‘ŠŽ8ê @  áá ãÈ?d pË‘LË @  áâ äÈ?d€ °Ë‘­/t5 @  â åÈ?d ðË‘yX=ˆ @  â æÈ?d 0Ì‘`· @  â çÈ?d pÌ‘û\ol @  â èÈ?d °Ì‘Û©m’ @  â éÈ?d ðÌ‘+Ö—ë @  â êÈ?d 0Í‘ûž @  â ëÈ?d pÍ‘ó?ýX @  â ìÈ?d °Í‘ÓÊÿ¦ @  â íÈ?d ðÍ‘#µß @  â îÈ?d 0Α¾ñ¥ @  â ïÈ?d pΑ@ëf @  â ðÈ?d °Î‘`dç @  â ñÈ?d ðΑažž @  â òÈ?d 0Ï‘@)v @  â óÈ?d pÏ‘å)ÊÍ @  â ôÈ?d °Ï‘ÅÜÈ3 @  â õÈ?d ðÏ‘5£2J @  â öÈ?d 0Б‹}Žø @  â ÷È?d pБ7/ @  â øÈ?d °Ð‘0Â-í @  â ùÈ?d ðБÀ½×” @  â úÈ?d 0Ñ‘õ[| @  â ûÈ?d pÑ‘T½' @  â üÈ?d °Ñ‘8¡¿Ù @  â ýÈ?d ðÑ‘ÈÞE  @  â þÈ?d 0Ò‘Ušåa @  â ÿÈ?d pÒ‘¤Æ 5 @  â É?d °Ò‘„3 Ë @  â É?d ðÒ‘tLó² @  â É?d 0Ó‘¤Z @  â É?d pÓ‘€Q @  â É?d °Ó‘0÷‚¯ @  â! É?d ðÓ‘ÀˆxÖ @  â" É?d 0Ô‘ÙÆ‹Ù @  â# É?d pÔ‘BŒ*2 @  â$ É?d °Ô‘by(Ì @  â%  É?d ðÔ‘’Òµ @  â&  É?d 0Õ‘BN^] @  â'  É?d pÕ‘Jï¸ @  â(  É?d °Õ‘jºø @  â)  É?d ðÕ‘še@ @  â* É?d 0Ö‘!à@ @  â+ É?d pÖ‘ù;#G @  â, É?d °Ö‘ÙÎ!¹ @  â- É?d ðÖ‘)±ÛÀ @  â. É?d 0בùùW( @  â/ É?d pב\ù“ @  â0 É?d °×‘| m @  â1 É?d ðבŒsw @  â2 É?d 0Ø‘¸Œû  @  â3 É?d pØ‘#ÆZâ @  â4 É?d °Ø‘3X @  â5 É?d ðØ‘óL¢e @  â6 É?d 0Ù‘#. @  â7 É?d pÙ‘+¥ÈÖ @  â8 É?d °Ù‘ PÊ( @  â9 É?d ðÙ‘û/0Q @  â: É?d 0Ú‘fk @  â; É?d pÚ‘ÆjK @  â<  É?d °Ú‘%3hµ @  â= !É?d ðÚ‘ÕL’Ì @  â> "É?d 0Û‘$ @  â? #É?d pÛ‘ç½ @  â@ $É?d °Û‘?ðåC @  âA %É?d ðÛ‘Ï: @  âB &É?d 0Ü‘ÖÁì5 @  âC 'É?d pÜ‘M‹MÞ @  âD (É?d °Ü‘m~O  @  âE )É?d ðÜ‘µY @  âF *É?d 0Ý‘MI9± @  âG +É?d pÝ‘Eèßê @  âH ,É?d °Ý‘eÝ @  âI -É?d ðÝ‘•b'm @  âJ .É?d 0Þ‘&‡¬ @  âK /É?d pÞ‘öÉ?d Hâ‘D7%— @  â[ ?É?d ˆâ‘u®ß} @  â\ @É?d Èâ‘÷?È£ @  â] AÉ?d ã‘U™©ì @  â^ BÉ?d Hã‘×¾2 @  â_ CÉ?d ˆã‘ÁjT @  â` DÉ?d Èã‘CûCÇ @  âa EÉ?d ä‘([]o @  âb FÉ?d H䑪ÊJ± @  âc GÉ?d ˆä‘“äþz @  âd HÉ?d Èä‘ué¤ @  âe IÉ?d 味ӈë @  âf JÉ?d Hå‘1BŸ5 @  âg KÉ?d ˆå‘›‡lN @  âh LÉ?d Èå‘{ @  âi MÉ?d æ‘ö¼6ö @  âj NÉ?d Hæ‘t-!( @  âk OÉ?d ˆæ‘(S÷ @  âl PÉ?d Èæ‘ªÂàÑ @  âm QÉ?d ç‘dž @  ân RÉ?d H瑊õ–@ @  âo SÉ?d ˆç‘‘[Û @  âp TÉ?d Èç‘L @  âq UÉ?d è‘I-¿ @  âr VÉ?d Hè‘Ë€:a @  âs WÉ?d ˆè‘ò®Žª @  ât XÉ?d Èè‘p?™t @  âu YÉ?d é‘Ò™ø; @  âv ZÉ?d Hé‘Pïå @  âw [É?d ˆé‘úÍž @  âx \É?d Èé‘x\ @ @  ây ]É?d ê‘—öF& @  âz ^É?d Hê‘gQø @  â{ _É?d ˆê‘Ô®¾ @  â| `É?d Èê‘V?©Ý @  â} aÉ?d ë‘ô™È’ @  â~ bÉ?d Hë‘vßL @  â cÉ?d ˆë‘-;Ä @  â€ dÉ?d È둯ª @  â eÉ?d ì‘Ä ² @  â‚ fÉ?d Hì‘F›l @  âƒ gÉ?d ˆì‘µ©§ @  â„ hÉ?d Èì‘ý$¾y @  â… iÉ?d í‘_‚ß6 @  â† jÉ?d Hí‘ÝÈè @  â‡ kÉ?d ˆí‘wÖ;“ @  âˆ lÉ?d Èí‘õG,M @  â‰ mÉ?d î‘ía+ @  âŠ nÉ?d H|võ @  â‹ oÉ?d ˆî‘Ä Ò @  âŒ pÉ?d Èî‘F“·  @  â qÉ?d ï‘ä5ÖC @  âŽ rÉ?d Hï‘f¤Á @  â sÉ?d ˆï‘aÀ  @  â tÉ?d Èï‘ãQØ @  â‘ uÉ?d ð‘/aJÍ @  â’ vÉ?d Hð‘­ð] @  â“ wÉ?d ˆð‘”ÞéØ @  â” xÉ?d Èð‘Oþ @  â• yÉ?d ñ‘´éŸI @  â– zÉ?d Hñ‘6xˆ— @  â— {É?d ˆñ‘œ½{ì @  â˜ |É?d Èñ‘,l2 @  â™ }É?d ò‘ñ†!T @  âš ~É?d Hò‘s6Š @  â› É?d ˆò‘_H˜ò @  âœ €É?d Èò‘ÝÙ, @  â É?d ó‘îc @  âž ‚É?d Hó‘ýîù½ @  âŸ ƒÉ?d ˆó‘댖 @  â  „É?d Èó‘iH @  â¡ …É?d ô‘½à @  â¢ †É?d Hô‘€, > @  â£ ‡É?d ˆô‘¹¹õ @  â¤ ˆÉ?d Èô‘;“®+ @  â¥ ‰É?d õ‘™5Ïd @  â¦ ŠÉ?d Hõ‘¤Øº @  â§ ‹É?d ˆõ‘±a+Á @  â¨ ŒÉ?d Èõ‘3ð< @  â© É?d ö‘ÜZqy @  âª ŽÉ?d Hö‘^Ëf§ @  â« É?d ˆö‘µ°€ @  â¬ É?d Èö‘€$§^ @  â­ ‘É?d ÷‘"‚Æ @  â® ’É?d H÷‘ ÑÏ @  â¯ “É?d ˆ÷‘§wT @  â° ”É?d È÷‘%æ Š @  â± •É?d ø‘c÷j0 @  â² –É?d Hø‘áf}î @  â³ —É?d ˆø‘ØHÉ% @  â´ ˜É?d Èø‘ZÙÞû @  âµ ™É?d ù‘ø¿´ @  â¶ šÉ?d Hù‘zî¨j @  â· ›É?d ˆù‘Ð+[ @  â¸ œÉ?d Èù‘RºLÏ @  â¹ É?d ú‘½© @  âº žÉ?d Hú‘?w @  â» ŸÉ?d ˆú‘þHùŒ @  â¼  É?d Èú‘|ÙîR @  â½ ¡É?d û‘Þ @  â¾ ¢É?d Hû‘\î˜Ã @  â¿ £É?d ˆû‘ä‹tz @  âÀ ¤É?d Èû‘fc¤ @  âÁ ¥É?d ü‘ º}  @  â ¦É?d Hü‘+jÒ @  âà §É?d ˆü‘¶Þ @  âÄ ¨É?d Èü‘4”ÉÇ @  âÅ ©É?d ý‘–2¨ˆ @  âÆ ªÉ?d Hý‘£¿V @  âÇ «É?d ˆý‘¾fL- @  âÈ ¬É?d Èý‘<÷[ó @  âÉ ­É?d þ‘Ó]• @  âÊ ®É?d Hþ‘QÌK @  âË ¯É?d ˆþ‘ ²×l @  âÌ °É?d Èþ‘#À² @  âÍ ±É?d ÿ‘-…¡ý @  âÎ ²É?d Hÿ‘¯¶# @  âÏ ³É?d ˆÿ‘¨p{¸ @  âÐ uÐ’´É?d Èÿ‘&°³ @  âѵÉ?d ’e9 @  âÒ¶É?d `’ç¨Ý @  âÓ·É?d  ’Þ†¶ @  âÔ¸É?d à’\¡È @  âÕ¹É?d ’þ±À‡ @  âÖºÉ?d `’| ×Y @  â×»É?d  ’Öå$" @  âؼÉ?d à’Tt3ü @  âÙ½É?d ’»Þ~š @  âÚ¾É?d `’9OiD @  âÛ¿É?d  ’Ö“® @  âÜÀÉ?d à’ŠG„p @  âÝÁÉ?d ’(áå? @  âÞÂÉ?d `’ªpòá @  âßÃÉ?d  ’¼Ê @  âàÄÉ?d à’>ƒ @  âáÅÉ?d ’U#¼ @  ââÆÉ?d€ `’£qÄ @  ãÇÉ?d  ’{æ& @  ãÈÉ?d à’ùñø @  ãÉÉ?d ’ž`kZ @  ãÊÉ?d `’ñ|„ @  ãËÉ?d  ’x†Ð… @  ãÌÉ?d à’úÇ[ @  ãÍÉ?d ’ÛÕG @  ãÎÉ?d `’YžÂ™ @  ã ÏÉ?d  ’À©ïS @  ã ÐÉ?d à’B8ø @  ã ÑÉ?d ’%×b/ @  ã ÒÉ?d `’§Fuñ @  ã ÓÉ?d  ’Ã1Ùð @  ãÔÉ?d à’A Î. @  ãÕÉ?d ’d¢Î @  ãÖÉ?d `’æ3ÙÐ @  ã×É?d  ’T–ö @  ãØÉ?d à’˜Å( @  ãÙÉ?d ’ÿ*Š @  ãÚÉ?d ` ’}» T @  ãÛÉ?d   ’Ì U @  ãÜÉ?d à ’›]·‹ @  ãÝÉ?d ’ºE¥— @  ãÞÉ?d ` ’8Ô²I @  ãßÉ?d   ’à‡ @  ã>Ê?d à’¶¯÷Y @  ã?Ê?d ’©I @  ã@Ê?d `’ƒŒ¾— @  ãAÊ?d  ’ëñ± @  ãBÊ?d à’ýzæo @  ãC Ê?d ’š•|Í @  ãD Ê?d `’k @  ãE Ê?d  ’|sÇ @  ãF Ê?d à’þâÐÌ @  ãG Ê?d ’ßúÂÐ @  ãHÊ?d `’]kÕ @  ãIÊ?d  ’Ä\øÄ @  ãJÊ?d à’FÍï @  ãKÊ?d ’!"u¸ @  ãLÊ?d `’£³bf @  ãMÊ?d  ’ÇÄÎg @  ãNÊ?d à’EUÙ¹ @  ãOÊ?d ’`WÙ™ @  ãPÊ?d `’âÆÎG @  ãQÊ?d  ’¡a @  ãRÊ?d à’œ0–¿ @  ãSÊ?d ’ûß  @  ãTÊ?d `’yNà @  ãUÊ?d  ’9·Â @  ãVÊ?d à’Ÿ¨  @  ãWÊ?d ’¾°² @  ãXÊ?d `’Ê?d x"’áJ @  ãy ?Ê?d ¸"’ÂK  @  ãz @Ê?d ø"’—S\× @  ã{ AÊ?d 8#’ð¼Æu @  ã| BÊ?d x#’r-Ñ« @  ã} CÊ?d ¸#’Z}ª @  ã~ DÊ?d ø#’”Ëjt @  ã EÊ?d 8$’À/U @  ã€ FÊ?d x$’B¾‹ @  ã GÊ?d ¸$’¾Ù\­ @  ã‚ HÊ?d ø$’pm @  ä ­Ê?d 8>’”=  @  ä ®Ê?d x>’˜*Õ @  ä ¯Ê?d ¸>’Ï€Xe @  ä °Ê?d ø>’MO» @  ä ±Ê?d 8?’ï·.ô @  ä ²Ê?d x?’m&9* @  ä ³Ê?duÐ@’7 ¸?’ÌnÆ @  ä ´Ê?d ø?’wN¥Í @  ä µÊ?d P@’Æ òV @  ä¶Ê?d @’æùð¨ @  ä·Ê?d Ð@’ÛéË4 @  ä¸Ê?d A’ ¡GÜ @  ä¹Ê?d PA’ûÞ½¥ @  äºÊ?d A’Û+¿[ @  ä»Ê?d ÐA’Øqý— @  ä¼Ê?d B’E5]V @  ä½Ê?d PB’µJ§/ @  ä¾Ê?d B’•¿¥Ñ @  ä¿Ê?d ÐB’ ¹îŒ @  äÀÊ?d C’Ýñbd @  äÁÊ?d PC’-Ž˜ @  äÂÊ?d C’ {šã @  äÃÊ?d ÐC’!Ø/ @  äÄÊ?d D’o+  @  äÅÊ?d PD’çÑY @  äÆÊ?d D’ÇåÓ§ @  äÇÊ?d ÐD’ëóÏ‹ @  ä ÈÊ?d E’;»Cc @  ä!ÉÊ?d PE’ËĹ @  ä"ÊÊ?d E’ë1»ä @  ä#ËÊ?d ÐE’èkù( @  ä$ÌÊ?d F’u/Yé @  ä%ÍÊ?d PF’…P£ @  ä&ÎÊ?d F’¥¥¡n @  ä'ÏÊ?d ÐF’PDÆþ @  ä(ÐÊ?d G’€ J @  ä)ÑÊ?d PG’ps°o @  ä*ÒÊ?d G’P†²‘ @  ä+ÓÊ?d ÐG’SÜð] @  ä,ÔÊ?d H’g#|@ @  ä-ÕÊ?d PH’—\†9 @  ä.ÖÊ?d H’·©„Ç @  ä/×Ê?d ÐH’й¿[ @  ä0ØÊ?d I’Zñ3³ @  ä1ÙÊ?d PI’ªŽÉÊ @  ä2ÚÊ?d I’Š{Ë4 @  ä3ÛÊ?d ÐI’‰!‰ø @  ä4ÜÊ?d J’e)9 @  ä5ÝÊ?d PJ’äÓ@ @  ä6ÞÊ?d J’ÄïѾ @  ä7ßÊ?d ÐJ’¬¹ò @  ä8àÊ?d K’|ñ @  ä9áÊ?d PK’ŒŽùc @  ä:âÊ?d K’¬{û @  ä;ãÊ?d ÐK’¯!¹Q @  ä<äÊ?d L’¶oJ^ @  ä=åÊ?d PL’F°' @  ä>æÊ?d L’få²Ù @  ä?çÊ?d ÐL’äô¨g @  ä@èÊ?d M’4¼$ @  äAéÊ?d PM’ÄÃÞö @  äBêÊ?d M’ä6Ü @  äCëÊ?d ÐM’çlžÄ @  äDìÊ?d N’z(> @  äEíÊ?d PN’ŠWÄ| @  äFîÊ?d N’ª¢Æ‚ @  äGïÊ?d ÐN’_C¡ @  äHðÊ?d O’ -ú @  äIñÊ?d PO’t׃ @  äJòÊ?d O’_Õ} @  äKóÊ?d ÐO’\Û—± @  äLôÊ?d P’â+ @  äMõÊ?d PP’zÑz @  äNöÊ?d P’2Ó„ @  äO÷Ê?d ÐP’Ÿè @  äPøÊ?d Q’ß×dð @  äQùÊ?d PQ’/¨ž‰ @  äRúÊ?d Q’]œw @  äSûÊ?d ÐQ’ Þ» @  äTüÊ?d R’‘C~z @  äUýÊ?d PR’a<„ @  äVþÊ?d R’AɆý @  äWÿÊ?d ÐR’»nÌ> @  äXË?d S’k&@Ö @  äYË?d PS’›Yº¯ @  äZË?d S’»¬¸Q @  ä[Ë?d ÐS’¸öú @  ä\Ë?d T’¡¸ ’ @  ä]Ë?d PT’QÇóë @  ä^Ë?d T’q2ñ @  ä_Ë?d ÐT’]$í9 @  ä`Ë?d U’laÑ @  äa Ë?d PU’}›¨ @  äb Ë?d U’]æ™V @  äc Ë?d ÐU’^¼Ûš @  äd Ë?d V’Ãø{[ @  äe Ë?d PV’3‡" @  äfË?d V’rƒÜ @  ägË?d ÐV’æ“äL @  ähË?d W’6Ûh¤ @  äiË?d PW’Ƥ’Ý @  äjË?d W’æQ# @  äkË?d ÐW’å Òï @  älË?d X’Ñô^ò @  ämË?d PX’!‹¤‹ @  änË?d X’~¦u @  äoË?d ÐX’Ë?d ¨b’-©A @  ä— ?Ë?d èb’µ¯ Ü @  ä˜ @Ë?d (c’eç†4 @  ä™ AË?d hc’•˜|M @  äš BË?d ¨c’µm~³ @  ä› CË?d èc’¶7< @  äœ DË?d (d’¯yÏp @  ä EË?d hd’_5  @  äž FË?d ¨d’ó7÷ @  äŸ GË?d èd’Så+Û @  ä  HË?d (e’ƒ­§3 @  ä¡ IË?d he’sÒ]J @  ä¢ JË?d ¨e’S'_´ @  ä£ KË?d èe’P}x @  ä¤ LË?d (f’Í9½¹ @  ä¥ MË?d hf’=FGÀ @  ä¦ NË?d ¨f’³E> @  ä§ OË?d èf’èR"® @  ä¨ PË?d (g’8®F @  ä© QË?d hg’ÈeT? @  äª RË?d ¨g’èVÁ @  ä« SË?d èg’ëÊ  @  ä¬ TË?d (h’ß5˜ @  ä­ UË?d hh’/Jbi @  ä® VË?d ¨h’¿`— @  ä¯ WË?d èh’2¯[  @  ä° XË?d (i’âç×ã @  ä± YË?d hi’˜-š @  ä² ZË?d ¨i’2m/d @  ä³ [Ë?d èi’17m¨ @  ä´ \Ë?d (j’¬sÍi @  äµ ]Ë?d hj’\ 7 @  ä¶ ^Ë?d ¨j’|ù5î @  ä· _Ë?d èj’¯k¢ @  ä¸ `Ë?d (k’ÄççJ @  ä¹ aË?d hk’4˜3 @  äº bË?d ¨k’mÍ @  ä» cË?d èk’7] @  ä¼ dË?d (l’y® @  ä½ eË?d hl’þTw @  ä¾ fË?d ¨l’ÞóV‰ @  ä¿ gË?d èl’\âL7 @  äÀ hË?d (m’ŒªÀß @  äÁ iË?d hm’|Õ:¦ @  ä jË?d ¨m’\ 8X @  äà kË?d èm’_zz” @  äÄ lË?d (n’Â>ÚU @  äÅ mË?d hn’2A , @  äÆ nË?d ¨n’´"Ò @  äÇ oË?d èn’çUEB @  äÈ pË?d (o’7ɪ @  äÉ qË?d ho’Çb3Ó @  äÊ rË?d ¨o’ç—1- @  äË sË?d èo’äÍsá @  äÌ tË?d (p’ZÏS @  äÍ uË?d hp’ªl5* @  äÎ vË?d ¨p’Š™7Ô @  äÏ wË?d èp’·‰ H @  äÐ xË?d (q’gÁ€  @  äÑ yË?d hq’—¾zÙ @  äÒ zË?d ¨q’·Kx' @  äÓ {Ë?d èq’´:ë @  äÔ |Ë?d (r’)Uš* @  äÕ }Ë?d hr’Ù*`S @  äÖ ~Ë?d ¨r’ùßb­ @  ä× Ë?d èr’|}b @  äØ €Ë?d (s’¬WñŠ @  äÙ Ë?d hs’\( ó @  äÚ ‚Ë?d ¨s’|Ý  @  äÛ ƒË?d ès’‡KÁ @  äÜ „Ë?d (t’fɸÎ @  äÝ …Ë?d ht’–¶B· @  äÞ †Ë?d ¨t’¶C@I @  äß ‡Ë?d èt’šU\e @  äà ˆË?d (u’JÐ @  äá ‰Ë?d hu’ºb*ô @  äâ ŠË?d€ ¨u’îT4¬ @  å ‹Ë?d èu’ O>I @  å ŒË?d (v’‘ žˆ @  å Ë?d hv’¤=Ÿ @  å ŽË?d ¨v’„Èâ @  å Ë?d èv’¿›¥ @  å Ë?d (w’oÓ)à @  å ‘Ë?d hw’QŒã @  å ’Ë?d ¨w’qëŽ @  å “Ë?d èw’·ø7< @  å ”Ë?d (x’ƒ»! @  å •Ë?d hx’¶1ºµ @  å –Ë?d ¨x’–ĸK @  å —Ë?d èx’ÈÇâM @  å ˜Ë?d (y’n¥ @  å ™Ë?d hy’‹ãõF @  å šË?d ¨y’«÷¸ @  å ›Ë?d èy’mN™ @  å œË?d (z’ðAîX @  å Ë?d hz’ÅwïÌ @  å žË?d ¨z’å‚í2 @  å ŸË?d èz’Cfì @  å  Ë?d ({’“.`ì @  å ¡Ë?d h{’­ãÅï @  å ¢Ë?d ¨{’Ç @  å £Ë?d è{’K~0 @  å ¤Ë?d (|’RK? @  å ¥Ë?d h|’g}Œ« @  å ¦Ë?d ¨|’GˆŽU @  å §Ë?d è|’‹ÔS @  å ¨Ë?d (}’ÉÃX» @  å ©Ë?d h}’K©äè @  å ªË?d ¨}’k\æ @  å! «Ë?d è}’­O_7 @  å" ¬Ë?d (~’0 ÿö @  å# ­Ë?d h~’=þb @  å$ ®Ë?d ¨~’%Èüœ @  å% ¯Ë?d è~’›Äv @  å& °Ë?d (’ÎÓHž @  å' ±Ë?d h’ðí @  å( ²Ë?d ¨’uЀ’'Ðëïc @  å) ³Ë?d è’øVB @  å* ´Ë?d @€’xF´6 @  å+ µË?d €€’ï ‚ @  å, ¶Ë?d À€’m…·\ @  å- ·Ë?d ’a_vl @  å. ¸Ë?d @’ãÎa² @  å/ ¹Ë?d €’ÒÆïq @  å0 ºË?d À’PWø¯ @  å1 »Ë?d ‚’‰‘ö‘ @  å2 ¼Ë?d @‚’ áO @  å3 ½Ë?d €‚’œRõû @  å4 ¾Ë?d À‚’Ãâ% @  å5 ¿Ë?d ƒ’®m4 @  å6 ÀË?d @ƒ’˜?zê @  å7 ÁË?d €ƒ’–ÊÉ @  å8 ÂË?d Àƒ’†Ý @  å9 ÃË?d „’ÛË€ç @  å: ÄË?d @„’YZ—9 @  å; ÅË?d €„’΃ @  å< ÆË?d À„’L™”S @  å= ÇË?d …’@CUc @  å> ÈË?d @…’ÂÒB½ @  å? ÉË?d €…’LÛí\ @  å@ ÊË?d À…’ÎJú‚ @  åA ËË?d †’Œô¼ @  åB ÌË?d @†’•ãb @  åC ÍË?d €†’O÷Ö @  åD ÎË?d À†’€Þà @  åE ÏË?d ‡’éTCÔ @  åF ÐË?d @‡’kÅT  @  åG ÑË?d €‡’÷lä) @  åH ÒË?d À‡’uýó÷ @  åI ÓË?d ˆ’€Ñ @  åJ ÔË?d @ˆ’‡ÆË @  åK ÕË?d €ˆ’CÒ @  åL ÖË?d Àˆ’’ÒÅ¡ @  åM ×Ë?d ‰’ž‘ @  åN ØË?d @‰’™O @  åO ÙË?d €‰’-‘Œ @  åP ÚË?d À‰’¯ŠR @  åQ ÛË?d Š’vÆ„l @  åR ÜË?d @Š’ôW“² @  åS ÝË?d €Š’c‡ @  åT ÞË?d ÀŠ’á”Ø @  åU ßË?d ‹’© Ø @  åV àË?d @‹’—8 @  åW áË?d €‹’ ‘­% @  åX âË?d À‹’‰ºû @  åY ãË?d Œ’ÔÌç  @  åZ äË?d @Œ’V]ðÕ @  å[ åË?d €Œ’Áäa @  å\ æË?d ÀŒ’Cžó¿ @  å] çË?d ’OD2 @  å^ èË?d @’ÍÕ%Q @  å_ éË?d €’íÛŒ" @  å` êË?d À’oJ›ü @  åa ëË?d Ž’¶Œ• @  åb ìË?d @Ž’4‚ @  åc íË?d €Ž’£O–¨ @  åd îË?d ÀŽ’!Þv @  åe ïË?d ’HT"ª @  åf ðË?d @’ÊÅ5t @  åg ñË?d €’Vl…W @  åh òË?d À’Ôý’‰ @  åi óË?d ’.¡€Ä @  åj ôË?d @’¬0— @  åk õË?d €’;bƒ® @  ål öË?d À’¹ó”p @  åm ÷Ë?d ‘’µ)U@ @  ån øË?d @‘’7¸Bž @  åo ùË?d €‘’°Ì] @  åp úË?d À‘’„!Ûƒ @  åq ûË?d ’’]çÕ½ @  år üË?d @’’ßvÂc @  ås ýË?d €’’H$Ö× @  åt þË?d À’’ʵÁ  @  åu ÿË?d “’pp @  åv Ì?d @“’ágÎ @  åw Ì?d €“’ŽH×í @  åx Ì?d À“’ ÙÀ3 @  åy Ì?d ”’Qà @  åz Ì?d @”’Ó„Š @  å{ Ì?d €”’DÖž© @  å| Ì?d À”’ÆG‰w @  å} Ì?d •’ÊHG @  å~ Ì?d @•’H _™ @  å  Ì?d €•’%SÀI @  å€  Ì?d À•’§Â×— @  å  Ì?d –’~Ù© @  å‚  Ì?d @–’ü•Îw @  åƒ  Ì?d €–’kÇÚà @  å„ Ì?d À–’éVÍ @  å… Ì?d —’€ÜnÁ @  å† Ì?d @—’My @  å‡ Ì?d €—’žäÉ< @  åˆ Ì?d À—’uÞâ @  å‰ Ì?d ˜’lü @  åŠ Ì?d @˜’î™ëÞ @  å‹ Ì?d €˜’yËÿj @  åŒ Ì?d À˜’ûZè´ @  å Ì?d ™’÷€)„ @  åŽ Ì?d @™’u>Z @  å Ì?d €™’D°™ @  å Ì?d À™’ƈ§G @  å‘ Ì?d š’N©y @  å’ Ì?d @š’ß¾§ @  å“ Ì?d €š’ ª @  å” Ì?d Àš’ˆ½Í @  å• Ì?d ›’|!'Í @  å–  Ì?d @›’þ°0 @  å— !Ì?d €›’b€0 @  å˜ "Ì?d À›’àˆ—î @  å™ #Ì?d œ’½DÊ @  åš $Ì?d @œ’?ÕÝÀ @  å› %Ì?d €œ’¨‡Ét @  åœ &Ì?d Àœ’*Þª @  å 'Ì?d ’&Ìš @  åž (Ì?d @’¤]D @  åŸ )Ì?d €’„S¡7 @  å  *Ì?d À’¶é @  å¡ +Ì?d ž’ß¸× @  å¢ ,Ì?d @ž’]•¯  @  å£ -Ì?d €ž’ÊÇ»½ @  å¤ .Ì?d Àž’HV¬c @  å¥ /Ì?d Ÿ’!Ü¿ @  å¦ 0Ì?d @Ÿ’£Ma @  å§ 1Ì?d €Ÿ’?ä¨B @  å¨ 2ÌuР’?d ÀŸ’½u¿œ @  å© 3Ì?d  ’ˆüÏ @  åª 4Ì?d X ’ mØÛ @  å« 5Ì?d ˜ ’¤øº @  å¬6Ì?d Ø ’&id @  å­7Ì?d ¡’*³ÆT @  å®8Ì?d X¡’¨"ÑŠ @  å¯9Ì?d ˜¡’™*_I @  å°:Ì?d Ø¡’»H— @  å±;Ì?d ¢’Â}F© @  å²<Ì?d X¢’@ìQw @  å³=Ì?d ˜¢’×¾Eà @  å´>Ì?d Ø¢’U/R @  åµ?Ì?d £’QBÝ  @  å¶@Ì?d X£’ÓÓÊÒ @  å·AÌ?d ˜£’Ozzñ @  å¸BÌ?d Ø£’Íëm/ @  å¹CÌ?d ¤’'0ß @  åºDÌ?d X¤’¶' @  å»EÌ?d ˜¤’…ä3µ @  å¼FÌ?d ؤ’u$k @  å½GÌ?d ¥’ ¯å[ @  å¾HÌ?d X¥’‰>ò… @  å¿IÌ?d ˜¥’7]d @  åÀJÌ?d Ø¥’…¦Jº @  åÁKÌ?d ¦’\`D„ @  åÂLÌ?d X¦’ÞñSZ @  åÃMÌ?d ˜¦’I£Gî @  åÄNÌ?d ئ’Ë2P0 @  åÅOÌ?d §’¢¸óì @  åÆPÌ?d X§’ )ä2 @  åÇQÌ?d ˜§’¼€T @  åÈRÌ?d ا’>CÏ @  åÉSÌ?d ¨’Nla- @  åÊTÌ?d X¨’Ìývó @  åËUÌ?d ˜¨’[¯bG @  åÌVÌ?d ب’Ù>u™ @  åÍWÌ?d ©’Õä´© @  åÎXÌ?d X©’Wu£w @  åÏYÌ?d ˜©’f}-´ @  åÐZÌ?d Ø©’äì:j @  åÑ[Ì?d ª’=*4T @  åÒ\Ì?d Xª’¿»#Š @  åÓ]Ì?d ˜ª’(é7> @  åÔ^Ì?d ت’ªx à @  åÕ_Ì?d «’^Eºà @  åÖ`Ì?d X«’ÜÔ­> @  å×aÌ?d ˜«’@} @  åØbÌ?d Ø«’Âì à @  åÙcÌ?d ¬’Ÿ W3 @  åÚdÌ?d X¬’±@í @  åÛeÌ?d ˜¬’ŠãTY @  åÜfÌ?d ج’rC‡ @  åÝgÌ?d ­’¨‚· @  åÞhÌ?d X­’†9•i @  åßiÌ?d ˜­’¦7< @  åàjÌ?d Ø­’$¦+Ä @  åákÌ?d ®’ý`%ú @  åâlÌ?d€ X®’¾¶Å$ @  æmÌ?d ˜®’È¥™¹ @  ænÌ?d Ø®’J4Žg @  æoÌ?d ¯’æ÷ÖV @  æpÌ?d X¯’dfÁˆ @  æqÌ?d ˜¯’6}.Ñ @  ærÌ?d د’´ì9 @  æsÌ?d °’€t8 @  ætÌ?d X°’“cæ @  æ uÌ?d ˜°’PˆŒ¿ @  æ vÌ?d ذ’Ò›a @  æ wÌ?d ±’Š¡¼ @  æ xÌ?d X±’™¶b @  æ yÌ?d ˜±’ËY; @  æzÌ?d ر’I‘Nå @  æ{Ì?d ²’óD!A @  æ|Ì?d X²’qÕ6Ÿ @  æ}Ì?d ˜²’#ÎÙÆ @  æ~Ì?d ز’¡_Î @  æÌ?d ³’}½îv @  æ€Ì?d X³’ÿ,ù¨ @  æÌ?d ˜³’­7ñ @  æ‚Ì?d س’/¦/ @  æƒÌ?d ´’¼Ø¥ @  æ„Ì?d X´’>I{ @  æ…Ì?d ˜´’lRû" @  æ†Ì?d Ø´’îÃìü @  æ‡Ì?d µ’'PÖ! @  æˆÌ?d Xµ’¥ÁÁÿ @  æ‰Ì?d ˜µ’÷Ú.¦ @  æŠÌ?d ص’uK9x @  æ‹Ì?d ¶’Þ˜ql @  æ ŒÌ?d X¶’\ f² @  æ!Ì?d ˜¶’‰ë @  æ"ŽÌ?d ض’Œƒž5 @  æ#Ì?d ·’ @Æ @  æ$Ì?d X·’¢ÑÑÚ @  æ%‘Ì?d ˜·’ðÊ>ƒ @  æ&’Ì?d Ø·’r[)] @  æ'“Ì?d ¸’Ì”TÅ @  æ(”Ì?d X¸’NC @  æ)•Ì?d ˜¸’¬B @  æ*–Ì?d ظ’ž»œ @  æ+—Ì?d ¹’WA @  æ,˜Ì?d X¹’Õ–Ÿ @  æ-™Ì?d ˜¹’‡–yÆ @  æ.šÌ?d ع’n @  æ/›Ì?d º’¿Ò¼ @  æ0œÌ?d Xº’=Cb @  æ1Ì?d ˜º’oXù; @  æ2žÌ?d غ’íÉîå @  æ3ŸÌ?d »’ܽ @  æ4 Ì?d X»’^,˜Ö @  æ5¡Ì?d ˜»’ 7w @  æ6¢Ì?d Ø»’ަ`Q @  æ7£Ì?d ¼’ØbÛ @  æ8¤Ì?d X¼’ŸIu @  æ9¥Ì?d ˜¼’ÍRš\ @  æ:¦Ì?d ؼ’O @  æ;§Ì?d ½’†P·_ @  æ<¨Ì?d X½’Á  @  æ=©Ì?d ˜½’VÚOØ @  æ>ªÌ?d ؽ’ÔKX @  æ?«Ì?d ¾’ÑŸ€ @  æ@¬Ì?d X¾’S^ @  æA­Ì?d ˜¾’î @  æB®Ì?d ؾ’ƒ„ùÙ @  æC¯Ì?d ¿’/G¡è @  æD°Ì?d X¿’­Ö¶6 @  æE±Ì?d ˜¿’ÿÍYo @uÐÀ’  æF²Ì?d Ø¿’}\N± @  æG³Ì?d 0À’“œîf @  æH´Ì?d pÀ’ ù¸ @  æIµÌ?d °À’Cá @  æJ¶Ì?d ðÀ’Á‡? @  æK·Ì?d 0Á’;â @  æL¸Ì?d pÁ’Š…,< @  æM¹Ì?d °Á’ØžÃe @  æNºÌ?d ðÁ’ZÔ» @  æO»Ì?d 0Â’àÚ» @  æP¼Ì?d pÂ’bK¬Á @  æQ½Ì?d °Â’0PC˜ @  æR¾Ì?d ðÂ’²ÁTF @  æS¿Ì?d 0Ã’så º @  æTÀÌ?d pÃ’ñt7d @  æUÁÌ?d °Ã’£oØ= @  æVÂÌ?d ðÃ’!þÏã @  æWÃÌ?d 0Ä’²€Íi @  æXÄÌ?d pÄ’0Ú· @  æYÅÌ?d °Ä’b 5î @  æZÆÌ?d ðÄ’à›"0 @  æ[ÇÌ?d 0Å’)í @  æ\ÈÌ?d pÅ’«™3 @  æ]ÉÌ?d °Å’ù‚àj @  æ^ÊÌ?d ðÅ’{÷´ @  æ_ËÌ?d 0Æ’ÐÀ¿  @  æ`ÌÌ?d pÆ’RQ¨~ @  æaÍÌ?d °Æ’JG' @  æbÎÌ?d ðÆ’‚ÛPù @  æcÏÌ?d 0Ç’.È @  ædÐÌ?d pÇ’¬‰ @  æeÑÌ?d °Ç’þ’ðO @  æfÒÌ?d ðÇ’|ç‘ @  ægÓÌ?d 0È’ÂÌš  @  æhÔÌ?d pÈ’@]× @  æiÕÌ?d °È’FbŽ @  æjÖÌ?d ðÈ’×uP @  æk×Ì?d 0É’YDO @  ælØÌ?d pÉ’ÛÕXS @  æmÙÌ?d °É’‰Î·  @  ænÚÌ?d ðÉ’ _ Ô @  æoÛÌ?d 0Ê’±ŠÏp @  æpÜÌ?d pÊ’3Ø® @  æqÝÌ?d °Ê’a7÷ @  ærÞÌ?d ðÊ’ã‘ ) @  æsßÌ?d 0Ë’ÒåAÄ @  ætàÌ?d pË’PtV @  æuáÌ?d °Ë’o¹C @  ævâÌ?d ðË’€þ® @  æwãÌ?d 0Ì’€¬ @  æxäÌ?d pÌ’‘»É @  æyåÌ?d °Ì’à T @  æzæÌ?d ðÌ’A›CN @  æ{çÌ?d 0Í’ˆy“ @  æ|èÌ?d pÍ’ ™nM @  æ}éÌ?d °Í’X‚ @  æ~êÌ?d ðÍ’Ú–Ê @  æëÌ?d 0Î’<‘è} @  æ€ìÌ?d pÎ’¾ÿ£ @  æíÌ?d °Î’ìú @  æ‚îÌ?d ðÎ’nŠ$ @  æƒïÌ?d 0Ï’ÂI_ @  æ„ðÌ?d pÏ’@ØHË @  æ…ñÌ?d °Ï’ç’ @  æ†òÌ?d ðÏ’R°L @  æ‡óÌ?d 0Ð’¤¼ý{ @  æˆôÌ?d pÐ’&-ê¥ @  æ‰õÌ?d °Ð’t6ü @  æŠöÌ?d ðÐ’ö§" @  æ‹÷Ì?d 0Ñ’?4(ÿ @  æŒøÌ?d pÑ’½¥?! @  æùÌ?d °Ñ’ï¾Ðx @  æŽúÌ?d ðÑ’m/Ǧ @  æûÌ?d 0Ò’×ú¨ @  æüÌ?d pÒ’Uk¿Ü @  æ‘ýÌ?d °Ò’pP… @  æ’þÌ?d ðÒ’…áG[ @  æ“ÿÌ?d 0Ó’&d29 @  æ”Í?d pÓ’¤õ%ç @  æ•Í?d °Ó’öîʾ @  æ–Í?d ðÓ’tÝ` @  æ—Í?d 0Ô’çßê @  æ˜Í?d pÔ’eÈ4 @  æ™Í?d °Ô’7‹'m @  æšÍ?d ðÔ’µ0³ @  æ›Í?d 0Õ’|‰ n @  æœÍ?d pÕ’þ° @  æ Í?d °Õ’¬òé @  æž Í?d ðÕ’.’å7 @  æŸ Í?d 0Ö’…A­# @  æ  Í?d pÖ’кý @  æ¡ Í?d °Ö’UËU¤ @  æ¢Í?d ðÖ’×ZBz @  æ£Í?d 0×’{™K @  æ¤Í?d p×’ù • @  æ¥Í?d °×’«âÌ @  æ¦Í?d ð×’)‚õ @  æ§Í?d 0Ø’—MˆŠ @  æ¨Í?d pØ’ÜŸT @  æ©Í?d °Ø’GÇp  @  æªÍ?d ðØ’ÅVgÓ @  æ«Í?d 0Ù’ Å] @  æ¬Í?d pÙ’ŽTJÐ @  æ­Í?d °Ù’ÜO¥‰ @  æ®Í?d ðÙ’^Þ²W @  æ¯Í?d 0Ú’ä Ýó @  æ°Í?d pÚ’fšÊ- @  æ±Í?d °Ú’4%t @  æ²Í?d ðÚ’¶2ª @  æ³Í?d 0Û’‡dSG @  æ´ Í?d pÛ’õD™ @  æµ!Í?d °Û’Wî«À @  æ¶"Í?d ðÛ’Õ¼ @  æ·#Í?d 0Ü’F¾” @  æ¸$Í?d pÜ’Ä©J @  æ¹%Í?d °Ü’–‹F @  æº&Í?d ðÜ’QÍ @  æ»'Í?d 0Ý’݉k @  æ¼(Í?d pÝ’_|Î @  æ½)Í?d °Ý’ “— @  æ¾*Í?d ðÝ’’„I @  æ¿+Í?d 0Þ’ŠFÊÏ @  æÀ,Í?d pÞ’×Ý @  æÁ-Í?d °Þ’ZÌ2H @  æÂ.Í?d ðÞ’Ø]%– @  æÃ/Í?d 0ß’tž}§ @  æÄ0Í?d pß’öjy @  æÅ1Í?d uÐà’/°ß’¤…  @  æÆ2Í?d ðß’&…’þ @  æÇ3Í?d Hà’µ= @  æÈ4Í?d ˆà’•ä?s @  æÉ5Í?d Èà’e›Å  @  æÊ6Í?d á’µÓIâ @  æË7Í?d Há’.™è  @  æÌ8Í?d ˆá’lê÷ @  æÍ9Í?d Èá’þŽ @  æÎ:Í?d â’cW°O @  æÏ;Í?d Hâ’ÆWhô @  æÐ<Í?d ˆâ’æ¢j  @  æÑ=Í?d Èâ’Ýs @  æÒ>Í?d ã’Æ•› @  æÓ?Í?d Hã’UhóQ @  æÔ@Í?d ˆã’uñ¯ @  æÕAÍ?d Èã’…â Ö @  æÖBÍ?d ä’œ¬øÙ @  æ×CÍ?d Hä’” ‚ @  æØDÍ?d ˆä’´ø| @  æÙEÍ?d Èä’D‡æ @  æÚFÍ?d å’”Ïjí @  æÛGÍ?d Hå’…Ë @  æÜHÍ?d ˆå’/pÉø @  æÝIÍ?d Èå’ß3 @  æÞJÍ?d æ’BK“@ @  æßKÍ?d Hæ’öMlK @  æàLÍ?d ˆæ’Ö¸nµ @  æáMÍ?d Èæ’&Ç”Ì @  æâNÍ?d€ ç’‚L‚ @  çOÍ?d Hç’¬ @  çPÍ?d ˆç’½âR @  çQÍ?d Èç’ˆÔŒÆ @  çRÍ?d è’¼+Û @  çSÍ?d Hè’z8¹ú @  çTÍ?d ˆè’ZÍ» @  çUÍ?d Èè’d @  çVÍ?d é’´H’ï @  ç WÍ?d Hé’êKÈé @  ç XÍ?d ˆé’ʾÊ @  ç YÍ?d Èé’ÿˆËƒ @  ç ZÍ?d ê’bÌkB @  ç [Í?d Hê’¤ßÒc @  ç\Í?d ˆê’„*Ð @  ç]Í?d Èê’FK~ @  ç^Í?d ë’ÇÇ– @  ç_Í?d Hë’aêÆ  @  ç`Í?d ˆë’AÄ^ @  çaÍ?d Èë’t)ÅÊ @  çbÍ?d ì’mg6Å @  çcÍ?d Hì’«tä @  çdÍ?d ˆì’‹ @  çeÍ?d Èì’µL( @  çfÍ?d í’e¤ñ @  çgÍ?d Hí’;þ÷ @  çhÍ?d ˆí’òü  @  çiÍ?d Èí’.Äý @  çjÍ?d î’³€]\ @  çkÍ?d Hî’u“ä} @  çlÍ?d ˆî’Ufæƒ @  çmÍ?d Èî’× ZÐ @  ç nÍ?d ï’DÖ8 @  ç!oÍ?d Hï’<îÒ @  ç"pÍ?d ˆï’âì, @  ç#qÍ?d Èï’)Ôí¸ @  ç$rÍ?d ð’— Q  @  ç%sÍ?d Hð’Qè+ @  ç&tÍ?d ˆð’qìêÕ @  ç'uÍ?d Èð’O!OÖ @  ç(vÍ?d ñ’ŸiÃ> @  ç)wÍ?d Hñ’Áj™8 @  ç*xÍ?d ˆñ’៛Æ @  ç+yÍ?d Èñ’Ô©šR @  ç,zÍ?d ò’Ií:“ @  ç-{Í?d Hò’þƒ² @  ç.|Í?d ˆò’¯ L @  ç/}Í?d Èò’ŒÍ?d ˆö’“ÑöÑ @  ç?Í?d Èö’¿¼L @  ç@ŽÍ?d ÷’oôÀø @  çAÍ?d H÷’T§ø @  çBÍ?d ˆ÷’tRúì @  çC‘Í?d È÷’Adûx @  çD’Í?d ø’u›we @  çE“Í?d Hø’³ˆÎD @  çF”Í?d ˆø’“}̺ @  çG•Í?d Èø’­°i¹ @  çH–Í?d ù’}øåQ @  çI—Í?d Hù’#û¿W @  çJ˜Í?d ˆù’½© @  çK™Í?d Èù’68¼= @  çLšÍ?d ú’«|ü @  çM›Í?d Hú’mo¥Ý @  çNœÍ?d ˆú’Mš§# @  çOÍ?d Èú’Þö<À @  çPžÍ?d û’¾°( @  çQŸÍ?d Hû’¨Z± @  çR Í?d ˆû’ˆ¯³à @  çS¡Í?d Èû’½™²t @  çT¢Í?d ü’¤×A{ @  çU£Í?d Hü’bÄøZ @  çV¤Í?d ˆü’B1ú¤ @  çW¥Í?d Èü’|ü_§ @  çX¦Í?d ý’¬´ÓO @  çY§Í?d Hý’ò·‰I @  çZ¨Í?d ˆý’ÒB‹· @  ç[©Í?d Èý’çtŠ# @  ç\ªÍ?d þ’z0*â @  ç]«Í?d Hþ’¼#“à @  ç^¬Í?d ˆþ’œÖ‘= @  ç_­Í?d Èþ’¼-n @  ç`®Í?d ÿ’Îô¡† @  ça¯Í?d Hÿ’õ§™l @  çb°Í?d ˆÿ’ÕR›’ @  çcuГ±Í?d Èÿ’àdš @  çd²Í?d “¯Ð²÷ @  çe³Í?d `“ià Ö @  çf´Í?d  “I6 ( @  çgµÍ?d à“wû¬+ @  çh¶Í?d “§³ à @  çi·Í?d `“ù°zÅ @  çj¸Í?d  “ÙEx; @  çk¹Í?d à“ìsy¯ @  çlºÍ?d “q7Ùn @  çm»Í?d `“·$`O @  çn¼Í?d  “—Ñb± @  ço½Í?d à“½ùR @  çp¾Í?d “Ôõuº @  çq¿Í?d `“‚Aa @  çrÀÍ?d  “¢´cc @  çsÁÍ?d à“—‚b÷ @  çtÂÍ?d “ŽÌ‘ø @  çuÃÍ?d `“Hß(Ù @  çvÄÍ?d  “h**' @  çwÅÍ?d à“Vç$ @  çxÆÍ?d “†¯Ì @  çyÇÍ?d `“جYÊ @  çzÈÍ?d  “øY[4 @  ç{ÉÍ?d à“ÍoZ  @  ç|ÊÍ?d “P+úa @  ç}ËÍ?d `“–8C@ @  ç~ÌÍ?d  “¶ÍA¾ @  çÍÍ?d à“yöËN @  ç€ÎÍ?d “©¾G¦ @  çÏÍ?d `“’íL @  ç‚ÐÍ?d  “²}² @  çƒÑÍ?d à“‡.|& @  ç„ÒÍ?d “³Ñð; @  ç…ÓÍ?d `“uÂI @  ç†ÔÍ?d  “U7Kä @  ç‡ÕÍ?d à“kúîç @  çˆÖÍ?d “»²b @  ç‰×Í?d ` “å±8  @  çŠØÍ?d   “ÅD:÷ @  ç‹ÙÍ?d à “ðr;c @  çŒÚÍ?d “m6›¢ @  çÛÍ?d ` “«%"ƒ @  çŽÜÍ?d   “‹Ð } @  çÝÍ?d à “¼»ž @  çÞÍ?d “Èô7v @  ç‘ßÍ?d ` “n6@ @  ç’àÍ?d   “Nå4¾ @  ç“áÍ?d à “{Ó5* @  ç”âÍ?d “bÆ% @  ç•ãÍ?d ` “¤Ž @  ç–äÍ?d   “„{}ú @  ç—åÍ?d à “º¶Øù @  ç˜æÍ?d “jþT @  ç™çÍ?d ` “4ý @  çšèÍ?d   “ é @  ç›éÍ?d à “!> } @  çœêÍ?d “¼z­¼ @  çëÍ?d `“zi @  çžìÍ?d  “Zœc @  çŸíÍ?d à“Øöª0 @  ç îÍ?d “¾&Ø @  ç¡ïÍ?d `“3í2 @  ç¢ðÍ?d  “Ì @  ç£ñÍ?d à“&.X @  ç¤òÍ?d “˜ð¡ê @  ç¥óÍ?d `“^ãË @  ç¦ôÍ?d  “~5 @  ç§õÍ?d à“@Û¿6 @  ç¨öÍ?d ““3Þ @  ç©÷Í?d `“ÎiØ @  çªøÍ?d  “îek& @  ç«ùÍ?d à“ÛSj² @  ç¬úÍ?d “FÊs @  ç­ûÍ?d `“€sR @  ç®üÍ?d  “ ñq¬ @  ç¯ýÍ?d à“3êO @  ç°þÍ?d “ãÕf§ @  ç±ÿÍ?d `“eâF; @  ç²Î?d  “EDÅ @  ç³Î?d à“p!EQ @  ç´Î?d “io¶^ @  çµÎ?d `“¯| @  ç¶Î?d  “‰  @  ç·Î?d à“±D¨‚ @  ç¸Î?d “a $j @  ç¹Î?d `“?~l @  çºÎ?d  “ú|’ @  ç» Î?d à“*Ì} @  ç¼ Î?d “·ˆÝÇ @  ç½ Î?d `“q›dæ @  ç¾ Î?d  “Qnf @  ç¿ Î?d à“}ÜÙ @  çÀÎ?d “­KP1 @  çÁÎ?d `“–hÛ @  çÂÎ?d  “¶íj% @  çÃÎ?d à“ƒÛk± @  çÄÎ?d “·$ç¬ @  çÅÎ?d `“q7^ @  çÆÎ?d  “QÂ\s @  çÇÎ?d à“oùp @  çÈÎ?d “¿Gu˜ @  çÉÎ?d `“áD/ž @  çÊÎ?d  “Á±-` @  çËÎ?d à“ô‡,ô @  çÌÎ?d “iÃŒ5 @  çÍÎ?d `“¯Ð5 @  çÎÎ?d  “%7ê @  çÏÎ?d à“I¬  @  çÐÎ?d “Ì á @  çÑÎ?d `“jå!× @  çÒ Î?d  “J#) @  çÓ!Î?d à“&"½ @  çÔ"Î?d “è¢Î @  çÕ€#Î?d `“Ýûï @  çÖ€$Î?d  “ý @  ç×€%Î?d à“Ãü @  çØ€&Î?d “‹0ú @  çÙ€'Î?d `“Mˆjü @  çÚ€(Î?d  “m}h @  çÛ€)Î?d à“XKi– @  çÜ€*Î?d “ÅÉW @  çÝ€+Î?d `“pv @  çÞ€,Î?d  “#érˆ @  ç߀-Î?d à“¡ƒÎÛ @  çà€.Î?d “qËB3 @  çá€/Î?d `“J˜zÙ @  çâ€0Î?d€  “B÷luuÐ “ @  è€1Î?d à“ÒÇŠa @  è 2Î?d 8 “£ÌT @  è 3Î?d x “ –Ë @  è 4Î?d ¸ “€c5 @  è 5Î?d ø “pîL @  è 6Î?d 8!“ Tb¤ @  è 7Î?d x!“0ågØ @  è 8Î?d ¸!“e& @  è 9Î?d ø!“àoŸ_ @  è :Î?d 8"“}+?ž @  è ;Î?d x"“~q}R @  è <Î?d ¸"“^„¬ @  è =Î?d ø"“®û…Õ @  è >Î?d 8#“~³ = @  è ?Î?d x#“K|€ @  è @Î?d ¸#“ká~~ @  è AÎ?d ø#“›ž„ @  è BÎ?d 8$“‚Ðw @  è CÎ?d x$“Š5Ä @  è DÎ?d ¸$“¡7: @  è EÎ?d ø$“QÍC @  è FÎ?d 8%“HA« @  è GÎ?d x%“ùD× @  è HÎ?d ¸%“1 F) @  è IÎ?d ø%“Ás¼P @  è JÎ?d 8&“\7‘ @  è KÎ?d x&“_m^] @  è LÎ?d ¸&“˜\£ @  è MÎ?d ø&“ç¦Ú @  è NÎ?d 8'“_¯*2 @  è OÎ?d x'“éTò @  è PÎ?d ¸'“6V  @  è! QÎ?d ø'“Æc¬u @  è" RÎ?d 8(“òœ h @  è# SÎ?d x(“ñÆb¤ @  è$ TÎ?d ¸(“Ñ3`Z @  è% UÎ?d ø(“!Lš# @  è& VÎ?d 8)“ñË @  è' WÎ?d x)“aµ· @  è( XÎ?d ¸)“A@I @  è) YÎ?d ø)“±?ë0 @  è* ZÎ?d 8*“,{Kñ @  è+ [Î?d x*“/! = @  è, \Î?d ¸*“Ô Ã @  è- ]Î?d ø*“ÿ«ñº @  è. ^Î?d 8+“/ã}R @  è/ _Î?d x+“êþ @  è0 `Î?d ¸+“Êá @  è1 aÎ?d ø+“:žåy @  è2 bÎ?d 8,“#Ðv @  è3 cÎ?d x,“ ŠTº @  è4 dÎ?d ¸,“VD @  è5 eÎ?d ø,“ð¬= @  è6 fÎ?d 8-“ H Õ @  è7 gÎ?d x-“°ù%© @  è8 hÎ?d ¸-“ 'W @  è9 iÎ?d ø-“`sÝ. @  è: jÎ?d 8.“ý7}ï @  è; kÎ?d x.“þm?# @  è< lÎ?d ¸.“Þ˜=Ý @  è= mÎ?d ø.“.çǤ @  è> nÎ?d 8/“þ¯KL @  è? oÎ?d x/“î3 @  è@ pÎ?d ¸/“91à @  èA qÎ?d ø/“ÉdË™ @  èB rÎ?d 80“wºw+ @  èC sÎ?d x0“tà5ç @  èD tÎ?d ¸0“T7 @  èE uÎ?d ø0“¤jÍ` @  èF vÎ?d 81“t"Aˆ @  èG wÎ?d x1“ä“Dô @  èH xÎ?d ¸1“ÄfF  @  èI yÎ?d ø1“4¼s @  èJ zÎ?d 82“©]² @  èK {Î?d x2“ª^~ @  èL |Î?d ¸2“Šò\€ @  èM }Î?d ø2“z¦ù @  èN ~Î?d 83“ªÅ* @  èO Î?d x3“‚¤ > @  èP €Î?d ¸3“¢Q À @  èQ Î?d ø3“R.ó¹ @  èR ‚Î?d 84“K`¶ @  èS ƒÎ?d x4“H:Bz @  èT „Î?d ¸4“hÏ@„ @  èU …Î?d ø4“˜°ºý @  èV †Î?d 85“Hø6 @  èW ‡Î?d x5“ØI3i @  èX ˆÎ?d ¸5“ø¼1— @  èY ‰Î?d ø5“ÃËî @  èZ ŠÎ?d 86“•‡k/ @  è[ ‹Î?d x6“–Ý)ã @  è\ ŒÎ?d ¸6“¶(+ @  è] Î?d ø6“FWÑd @  è^ ŽÎ?d 87“–]Œ @  è_ Î?d x7“ßY#L @  è` Î?d ¸7“ÿ¬!² @  èa ‘Î?d ø7“ÓÛË @  èb ’Î?d 88“;,WÖ @  èc “Î?d x8“8v @  èd ”Î?d ¸8“ƒä @  èe •Î?d ø8“èüí @  èf –Î?d 89“8´au @  èg —Î?d x9“¨d  @  èh ˜Î?d ¸9“ˆðf÷ @  èi ™Î?d ø9“xœŽ @  èj šÎ?d 8:“åË“4‡ Q @  è{ «Î?d x>“7ÝH @  è| ¬Î?d ¸>“(Jc @  è} ­Î?d ø>“çW° @  è~ ®Î?d 8?“7<ò @  è ¯Î?d x?“3t‘ @  è€ °Î?duÐ@“7 ¸?“ývo @  è ±Î?d ø?“ì· @  è‚²Î?d P@“Û@ * @  èƒ³Î?d @“z~ZÆ @  è„´Î?d Ð@“øïM @  è…µÎ?d A“ZI,W @  è†¶Î?d PA“ØØ;‰ @  è‡·Î?d A“(¤Ì @  èˆ¸Î?d ÐA“ª5ÛÞ @  è‰¹Î?d B“EŸ–¸ @  èŠºÎ?d PB“Çf @  è‹»Î?d B“f0ÖŠ @  èŒ¼Î?d ÐB“ä¡ÁT @  è½Î?d C“F  @  è޾Î?d PC“Ä–·Å @  è¿Î?d C“SU×X @  èÀÎ?d ÐC“ÑÄÀ† @  è‘ÁÎ?d D“ºdÞ. @  è’ÂÎ?d PD“8õÉð @  è“ÃÎ?d D“™Ëž @  è”ÄÎ?d ÐD“Z‰Â @  è•ÅÎ?d E“¹üè @  è–ÆÎ?d PE“;mÿS @  è—ÇÎ?d E“ ¸ï @  è˜ÈÎ?d ÐE“‹)øÑ @  è™ÉÎ?d F“dƒµ· @  èšÊÎ?d PF“æ¢i @  è›ËÎ?d F“G,õ… @  èœÌÎ?d ÐF“Žâ[ @  èÍÎ?d G“gƒ @  èžÎÎ?d PG“劔Ê @  èŸÏÎ?d G“¨ÿ* @  è ÐÎ?d ÐG“Œ9èô @  è¡ÑÎ?d H“Ê(‰N @  è¢ÒÎ?d PH“H¹ž @  è£ÓÎ?d H“é‡É| @  è¤ÔÎ?d ÐH“kÞ¢ @  è¥ÕÎ?d I“ɰ¿í @  è¦ÖÎ?d PI“K!¨3 @  è§×Î?d I“yô¸o @  è¨ØÎ?d ÐI“ûe¯± @  è©ÙÎ?d J“Ïâ× @  èªÚÎ?d PJ“–^õ  @  è«ÛÎ?d J“7`¢å @  è¬ÜÎ?d ÐJ“µñµ; @  è­ÝÎ?d K“WÔt @  è®ÞÎ?d PK“•ÆÃª @  è¯ßÎ?d K“òU¶& @  è°àÎ?d ÐK“pÄ¡ø @  è±áÎ?d L“d¿P @  è²âÎ?d PL“™õ¨Ž @  è³ãÎ?d L“8Ëÿb @  è´äÎ?d ÐL“ºZè¼ @  èµåÎ?d M“ü‰ó @  è¶æÎ?d PM“šmž- @  è·çÎ?d M“¨¸Žq @  è¸èÎ?d ÐM“*)™¯ @  è¹éÎ?d N“ŃÔÉ @  èºêÎ?d PN“Gà @  è»ëÎ?d N“æ,”û @  è¼ìÎ?d ÐN“d½ƒ% @  è½íÎ?d O“Æâj @  è¾îÎ?d PO“DŠõ´ @  è¿ïÎ?d O“¯˜Æ @  èÀðÎ?d ÐO“ƒ> @  èÁñÎ?d P“OÞ  @  èÂòÎ?d PP“ÍŸÉÓ @  èÃóÎ?d P“l¡ž? @  èÄôÎ?d ÐP“î0‰á @  èÅõÎ?d Q“L–è® @  èÆöÎ?d PQ“Îÿp @  èÇ÷Î?d Q“üÒï, @  èÈøÎ?d ÐQ“~Cøò @  èÉùÎ?d R“‘éµ” @  èÊúÎ?d PR“x¢J @  èËûÎ?d R“²Fõ¦ @  èÌüÎ?d ÐR“0×âx @  èÍýÎ?d S“’qƒ7 @  èÎþÎ?d PS“à”é @  èÏÿÎ?d S“å‚õê @  èÐÏ?d ÐS“gâ4 @  èÑÏ?d T“ ³üœ @  èÒÏ?d PT“Ž"ëB @  èÓÏ?d T“/¼® @  èÔÏ?d ÐT“­«p @  èÕÏ?d U“+Ê? @  èÖÏ?d PU“ºÝá @  è×Ï?d U“¿oͽ @  èØÏ?d ÐU“=þÚc @  èÙ Ï?d V“ÒT— @  èÚ Ï?d PV“PÅ€Û @  èÛ Ï?d V“ñû×7 @  èÜ Ï?d ÐV“sjÀé @  èÝ Ï?d W“ÑÌ¡¦ @  èÞÏ?d PW“S]¶x @  èßÏ?d W“¸ݘ @  èàÏ?d ÐW“:îÊF @  èáÏ?d X“|ÿ«ü @  èâÏ?d€ PX“Š­ „ @  éÏ?d X“ÊÒ¿A @  éÏ?d ÐX“HC¨Ÿ @  éÏ?d Y“/¬2= @  éÏ?d PY“­=%ã @  éÏ?d Y“QZjÅ @  éÏ?d ÐY“ÓË} @  éÏ?d Z“òÓo @  éÏ?d PZ“pBxÙ @  é Ï?d Z“5ÔØ @  é Ï?d ÐZ“–¤Ã @  é Ï?d [“ñKY¤ @  é Ï?d P[“sÚNz @  é Ï?d [“wZZl @  é Ï?d Ð[“õËM² @  é!Ï?d \“ýx2€ @  é"Ï?d P\“é%^ @  é#Ï?d \“ž‰_ @  é$Ï?d Ð\“™ž @  é%Ï?d ]“þà# @  é&Ï?d P]“|qý @  é'Ï?d ]“€\Û @  é(Ï?d Ð]“‡K @  é)Ï?d ^“#ŸY @  é*Ï?d P^“¡NÇ @  é+Ï?d ^“ÅyâÆ @  é,Ï?d Ð^“Gèõ @  é-Ï?d _“ oº @  é.Ï?d P_“¢–xd @  é/Ï?d _“;¡U® @  éuÐ`“0Ï?d Ð_“¹0Bp @  é1Ï?d (`“3\e @  é 2Ï?d h`“…¢K» @  é!3Ï?d ¨`“áÕçº @  é"4Ï?d è`“cDðd @  é#5Ï?d (a“«jÆ @  é$6Ï?d ha“†:} @  é%7Ï?d ¨a“z]2> @  é&8Ï?d èa“øÌ%à @  é'9Ï?d (b“ÙÔ7ü @  é(:Ï?d hb“[E " @  é);Ï?d ¨b“?2Œ# @  é*<Ï?d èb“½£›ý @  é+=Ï?d (c“ÚL_ @  é,>Ï?d hc“XÝ @  é-?Ï?d ¨c“¬ † @  é.@Ï?d èc“.œX @  é/AÏ?d (d“&/j @  é0BÏ?d hd“¤¾h´ @  é1CÏ?d ¨d“ÀÉĵ @  é2DÏ?d èd“BXÓk @  é3EÏ?d (e“%·IÉ @  é4FÏ?d he“§&^ @  é5GÏ?d ¨e“[A1 @  é6HÏ?d èe“ÙÐï @  é7IÏ?d (f“øÈó @  é8JÏ?d hf“zY- @  é9KÏ?d ¨f“.¯, @  é:LÏ?d èf“œ¿¸ò @  é;MÏ?d (g“ûP"P @  é<NÏ?d hg“yÁ5Ž @  é=OÏ?d ¨g“àöD @  é>PÏ?d èg“bgš @  é?QÏ?d (h“ød.˜ @  é@RÏ?d hh“zõ9F @  éASÏ?d ¨h“‚•G @  éBTÏ?d èh“œ‚™ @  éCUÏ?d (i“ûü; @  éDVÏ?d hi“ymå @  éEWÏ?d ¨i“… @à @  éFXÏ?d èi“›W @  éGYÏ?d (j“&ƒE @  éHZÏ?d hj“¤Rß @  éI[Ï?d ¨j“ÀeþÞ @  éJ\Ï?d èj“Bôé @  éK]Ï?d (k“%s¢ @  éL^Ï?d hk“§Šd| @  éM_Ï?d ¨k“£ pj @  éN`Ï?d èk“!›g´ @  éOaÏ?d (l“)(† @  éPbÏ?d hl“«¹X @  éQcÏ?d ¨l“ÏΣY @  éRdÏ?d èl“M_´‡ @  éSeÏ?d (m“*°.% @  éTfÏ?d hm“¨!9û @  éUgÏ?d ¨m“TFvÝ @  éVhÏ?d èm“Ö×a @  éWiÏ?d (n“÷Ïs @  éXjÏ?d hn“u^dÁ @  éYkÏ?d ¨n“)ÈÀ @  éZlÏ?d èn““¸ß @  é[mÏ?d (o“ôWE¼ @  é\nÏ?d ho“vÆRb @  é]oÏ?d ¨o“ïñ¨ @  é^pÏ?d èo“m`hv @  é_qÏ?d (p“ÓEI @  é`rÏ?d hp“QÔh— @  éasÏ?d ¨p“5£Ä– @  ébtÏ?d èp“·2ÓH @  écuÏ?d (q“ÐÝIê @  édvÏ?d hq“RL^4 @  éewÏ?d ¨q“®+ @  éfxÏ?d èq“,ºÌ @  égyÏ?d (r“ ¢Ð @  éhzÏ?d hr“3 @  éi{Ï?d ¨r“ëD¯ @  éj|Ï?d èr“iÕ¸Ñ @  ék}Ï?d (s“:"s @  él~Ï?d hs“Œ«5­ @  émÏ?d ¨s“e½`8 @  én€Ï?d ès“ç,wæ @  éoÏ?d (t“ïŸÔ @  ép‚Ï?d ht“m  @  éqƒÏ?d ¨t“ y³  @  ér„Ï?d èt“‹è¤Õ @  és…Ï?d (u“ì>w @  ét†Ï?d hu“n–)© @  éu‡Ï?d ¨u“’ñf @  évˆÏ?d èu“`qQ @  éw‰Ï?d (v“1xcM @  éxŠÏ?d hv“³ét“ @  éy‹Ï?d ¨v“מؒ @  ézŒÏ?d èv“UÏL @  é{Ï?d (w“2àUî @  é|ŽÏ?d hw“°qB0 @  é}Ï?d ¨w“)Foú @  é~Ï?d èw“«×x$ @  é‘Ï?d (x“Ò‚i @  é€’Ï?d hx“P~É @  é“Ï?d ¨x“4dÒÈ @  é‚”Ï?d èx“¶õÅ @  éƒ•Ï?d (y“Ñ_´ @  é„–Ï?d hy“S‹Hj @  é…—Ï?d ¨y“¯ìL @  é†˜Ï?d èy“-}’ @  é‡™Ï?d (z“ eŽ @  éˆšÏ?d hz“ŽôP @  é‰›Ï?d ¨z“ꃹQ @  éŠœÏ?d èz“h® @  é‹Ï?d ({“ý4- @  éŒžÏ?d h{“l#ó @  éŸÏ?d ¨{“‰ì7å @  éŽ Ï?d è{“ } ; @  é¡Ï?d (|“Î_  @  é¢Ï?d h|“_H× @  é‘£Ï?d ¨|“å(äÖ @  é’¤Ï?d è|“g¹ó @  é“¥Ï?d (}“Viª @  é”¦Ï?d h}“‚Ç~t @  é•§Ï?d ¨}“~ 1R @  é–¨Ï?d è}“ü1&Œ @  é—©Ï?d (~“Ý)4 @  é˜ªÏ?d h~“_¸#N @  é™«Ï?d ¨~“;ÏO @  éš¬Ï?d è~“¹^˜‘ @  é›­Ï?d (“Þ±3 @  éœ®Ï?d h“\ í @  é¯Ï?d ¨“uЀ“'Å8' @  éž°Ï?d è“G†/ù @  éŸ±Ï?d @€“)Ãf @  é ²Ï?d €€“ 6dþ @  é¡³Ï?d À€“Ï%Ýß @  é¢´Ï?d “mQ7 @  é£µÏ?d @“*[P£ @  é¤¶Ï?d €“ ®R] @  é¥·Ï?d À“T­[ @  é¦¸Ï?d ‚“É騚 @  é§¹Ï?d @‚“÷$ ™ @  é¨ºÏ?d €‚“×Ñg @  é©»Ï?d À‚“¶F @  éª¼Ï?d ƒ“ÁŠ:® @  é«½Ï?d @ƒ“ô¼;: @  é¬¾Ï?d €ƒ“ÔI9Ä @  é­¿Ï?d Àƒ“‚ý-ã @  é®ÀÏ?d „“›³Þì @  é¯ÁÏ?d @„“ßE @  é°ÂÏ?d €„“(*Gñ @  é±ÃÏ?d À„“î9þÐ @  é²ÄÏ?d …“>qr8 @  é³ÅÏ?d @…“ Gs¬ @  é´ÆÏ?d €…“+²qR @  éµÇÏ?d À…“u±+T @  é¶ÈÏ?d †“èõ‹• @  é·ÉÏ?d @†“Ö8.– @  é¸ÊÏ?d €†“öÍ,h @  é¹ËÏ?d À†“0Þ•I @  éºÌÏ?d ‡“à–¡ @  é»ÍÏ?d @‡“Õ 5 @  é¼ÎÏ?d €‡“õUË @  é½ÏÏ?d À‡“Î"! @  é¾ÐÏ?d ˆ“úù®< @  é¿ÑÏ?d @ˆ“Ö”ý @  éÀÒÏ?d €ˆ“öa @  éÁÓÏ?d Àˆ“0r¯" @  éÂÔÏ?d ‰“à:#Ê @  éÃÕÏ?d @‰“Õ "^ @  éÄÖÏ?d €‰“õù   @  éÅ×Ï?d À‰“«úz¦ @  éÆØÏ?d Š“6¾Úg @  éÇÙÏ?d @Š“sd @  éÈÚÏ?d €Š“(†}š @  éÉÛÏ?d ÀŠ“î•Ä» @  éÊÜÏ?d ‹“>ÝHS @  éËÝÏ?d @‹“ ëIÇ @  éÌÞÏ?d €‹“+K9 @  éÍßÏ?d À‹“úJ @  éÎàÏ?d Œ“”´¹ @  éÏáÏ?d @Œ“Ø"ã @  éÐâÏ?d €Œ“'-  @  éÑãÏ?d ÀŒ“á>™< @  éÒäÏ?d “1vÔ @  éÓåÏ?d @“@@ @  éÔæÏ?d €“$µ¾ @  éÕçÏ?d À“z¶L¸ @  éÖèÏ?d Ž“çòìy @  é×éÏ?d @Ž“Ù?Iz @  éØêÏ?d €Ž“ùÊK„ @  éÙëÏ?d ÀŽ“?Ùò¥ @  éÚìÏ?d “ï‘~M @  éÛíÏ?d @“Ú§Ù @  éÜîÏ?d €“úR}' @  éÝïÏ?d À“ÁEÍ @  éÞðÏ?d “ßù @  éßñÏ?d @“ýµE, @  éàòÏ?d €“Ý@GÒ @  éáóÏ?d À“Sþó @  éâôÏ?d€ ‘“ \… @  êõÏ?d @‘“Þ+̦ @  êöÏ?d €‘“þÞÎX @  ê÷Ï?d À‘“e”o³ @  êøÏ?d ’“øÐÏr @  êùÏ?d @’“¯5  @  êúÏ?d €’“(Z7õ @  êûÏ?d À’“ ûÑ® @  êüÏ?d ““ð³]F @  ê ýÏ?d @““̧? @  ê þÏ?d €““ 9¥Á @  ê ÿÏ?d À““(àm% @  ê Ð?d ”“1®ž* @  ê Ð?d @”“ÁÑdS @  êÐ?d €”“á$f­ @  êÐ?d À”“D$¾ @  êÐ?d •“”l2þ @  êÐ?d @•“dȇ @  êÐ?d €•“DæÊy @  êÐ?d À•“߬k’ @  êÐ?d –“BèËS @  ê Ð?d @–“²—1* @  ê Ð?d €–“’b3Ô @  ê Ð?d À–“šÃÕ @  ê Ð?d —“J‹Yg @  ê Ð?d @—“ºô£ @  êÐ?d €—“š¡à @  êÐ?d À—“dbç @  êÐ?d ˜“Päîú @  êÐ?d @˜“ ›ƒ @  êÐ?d €˜“€n} @  êÐ?d À˜“4hév @  ê Ð?d ™“ä ež @  ê!Ð?d @™“_Ÿç @  ê"Ð?d €™“4ª @  ê#Ð?d À™“¯à<ò @  ê$Ð?d š“2¤œ3 @  ê%Ð?d @š“ÂÛfJ @  ê&Ð?d €š“â.d´ @  ê'Ð?d Àš“ê‚ï @  ê(Ð?d ›“:Ç @  ê)Ð?d @›“ʸô~ @  ê*Ð?d €›“êMö€ @  ê+Ð?d À›“‰à [ @  ê, Ð?d œ“®ÿT @  ê-!Ð?d @œ“`Ñ- @  ê."Ð?d €œ“@$Ó @  ê/#Ð?d Àœ“å$ßh @  ê0$Ð?d “5lS€ @  ê1%Ð?d @“Å©ù @  ê2&Ð?d €“åæ« @  ê3'Ð?d À“~¬ ì @  ê4(Ð?d ž“ãèª- @  ê5)Ð?d @ž“—PT @  ê6*Ð?d €ž“3bRª @  ê7+Ð?d Àž“;ôñ @  ê8,Ð?d Ÿ“ë‹8 @  ê9-Ð?d @Ÿ“ôÂ` @  ê:.Ð?d €Ÿ“;Àž @  ê;/ÐuР“?d ÀŸ“Å™ @  ê<0Ð?d  “´Ýÿ @  ê=1Ð?d X “Do'† @  ê>2Ð?d ˜ “dš%x @  ê?3Ð?d Ø “~›Üá @  ê@4Ð?d ¡“®ÓP  @  êA5Ð?d X¡“^¬ªp @  êB6Ð?d ˜¡“~Y¨Ž @  êC7Ð?d Ø¡“å e @  êD8Ð?d ¢“xW©¤ @  êE9Ð?d X¢“ˆ(SÝ @  êF:Ð?d ˜¢“¨ÝQ# @  êG;Ð?d Ø¢“ |·x @  êH<Ð?d £“p4; @  êI=Ð?d X£“€KÁé @  êJ>Ð?d ˜£“ ¾Ã @  êK?Ð?d Ø£“3C,Ý @  êL@Ð?d ¤“* ßÒ @  êMAÐ?d X¤“Úr%« @  êNBÐ?d ˜¤“ú‡'U @  êOCÐ?d ؤ“_‡ÿî @  êPDÐ?d ¥“Ïs @  êQEÐ?d X¥“°‰ @  êRFÐ?d ˜¥“_E‹ @  êSGÐ?d Ø¥“Ä*j @  êTHÐ?d ¦“YKŠ« @  êUIÐ?d X¦“©4pÒ @  êVJÐ?d ˜¦“‰Ár, @  êWKÐ?d ئ“`”w @  êXLÐ?d §“Q(Ÿ @  êYMÐ?d X§“¡Wâæ @  êZNÐ?d ˜§“¢à @  ê[OÐ?d ا“¸# @  ê\PÐ?d ¨“KG¯ @  ê]QÐ?d X¨“»8U{ @  ê^RÐ?d ˜¨“›ÍW… @  ê_SÐ?d ب“/˨Ž @  ê`TÐ?d ©“ÿƒ$f @  êaUÐ?d X©“üÞ @  êbVÐ?d ˜©“/ Üá @  êcWÐ?d Ø©“´C}  @  êdXÐ?d ª“)ÝË @  êeYÐ?d Xª“Ùx'² @  êfZÐ?d ˜ª“ù%L @  êg[Ð?d ت“ñ,à @  êh\Ð?d «“!dOÿ @  êi]Ð?d X«“ѵ† @  êj^Ð?d ˜«“ñî·x @  êk_Ð?d Ø«“’CM£ @  êl`Ð?d ¬“‹ ¾¬ @  êmaÐ?d X¬“{rDÕ @  ênbÐ?d ˜¬“[‡F+ @  êocÐ?d ج“þ‡ž @  êpdÐ?d ­“.Ïx @  êqeÐ?d X­“Þ°è @  êrfÐ?d ˜­“þEêÿ @  êsgÐ?d Ø­“eK @  êthÐ?d ®“øKëÕ @  êuiÐ?d X®“4¬ @  êvjÐ?d ˜®“(ÁR @  êwkÐ?d Ø®“ `õ  @  êxlÐ?d ¯“ð(yá @  êymÐ?d X¯“Wƒ˜ @  êznÐ?d ˜¯“ ¢f @  ê{oÐ?d د“Þ¸Ba @  ê|pÐ?d °“`fþÓ @  ê}qÐ?d X°“ª @  ê~rÐ?d ˜°“°ìT @  êsÐ?d ذ“I»Ïü @  ê€tÐ?d ±“™óC @  êuÐ?d X±“iŒ¹m @  ê‚vÐ?d ˜±“Iy»“ @  êƒwÐ?d ر“Ò3x @  ê„xÐ?d ²“Owº¹ @  ê…yÐ?d X²“¿@À @  ê†zÐ?d ˜²“ŸýB> @  ê‡{Ð?d ز“—\¤e @  êˆ|Ð?d ³“G( @  ê‰}Ð?d X³“·kÒô @  êŠ~Ð?d ˜³“—žÐ  @  ê‹Ð?d س“¥kR @  êŒ€Ð?d ´“ë˜] @  êÐ?d X´“ð”b$ @  êŽ‚Ð?d ˜´“Ða`Ú @  êƒÐ?d Ø´“ua¸a @  ê„Ð?d µ“¥)4‰ @  ê‘…Ð?d Xµ“UVÎð @  ê’†Ð?d ˜µ“u£Ì @  ê“‡Ð?d ص“îémå @  ê”ˆÐ?d ¶“s­Í$ @  ê•‰Ð?d X¶“ƒÒ7] @  ê–ŠÐ?d ˜¶“£'5£ @  ê—‹Ð?d ض“«†Óø @  ê˜ŒÐ?d ·“{Î_ @  ê™Ð?d X·“‹±¥i @  êšŽÐ?d ˜·“«D§— @  ê›Ð?d Ø·“U^d @  êœÐ?d ¸“a¡è @  ê‘Ð?d X¸“‘Þô @  êž’Ð?d ˜¸“±+  @  êŸ“Ð?d ظ“-ï @  ê ”Ð?d ¹“Õecé @  ê¡•Ð?d X¹“%™ @  ê¢–Ð?d ˜¹“ï›n @  ê£—Ð?d ع“ž¥:… @  ê¤˜Ð?d º“ášD @  ê¥™Ð?d Xº“óž`= @  ê¦šÐ?d ˜º“Ókbà @  ê§›Ð?d غ“ÛÊ„˜ @  ê¨œÐ?d »“ ‚p @  ê©Ð?d X»“ûýò  @  êªžÐ?d ˜»“Ûð÷ @  ê«ŸÐ?d Ø»“¸¥ , @  ê¬ Ð?d ¼“¡ëù# @  ê­¡Ð?d X¼“Q”Z @  ê®¢Ð?d ˜¼“qa¤ @  ê¯£Ð?d ؼ“ÔaÙ @  ê°¤Ð?d ½“)U÷ @  ê±¥Ð?d X½“ôV¯Ž @  ê²¦Ð?d ˜½“Ô£­p @  ê³§Ð?d ؽ“Oé › @  ê´¨Ð?d ¾“Ò­¬Z @  êµ©Ð?d X¾“"ÒV# @  ê¶ªÐ?d ˜¾“'TÝ @  ê·«Ð?d ؾ“ †²† @  ê¸¬Ð?d ¿“ÚÎ>n @  ê¹­Ð?d X¿“*±Ä @  êº®Ð?d ˜¿“ DÆé @uÐÀ“  ê»¯Ð?d Ø¿“Í™Ù; @  ê¼ °Ð?d 0À“©iˆi @  ê½ ±Ð?d pÀ“Yr @  ê¾ ²Ð?d °À“yãpî @  ê¿ ³Ð?d ðÀ“câ‰w @  êÀ ´Ð?d 0Á“³ªŸ @  êÁ µÐ?d pÁ“CÕÿæ @  ê ¶Ð?d °Á“c ý @  êà ·Ð?d ðÁ“øj\ó @  êÄ ¸Ð?d 0“e.ü2 @  êÅ ¹Ð?d p“•QK @  êÆ ºÐ?d °Â“µ¤µ @  êÇ »Ð?d ð“½âî @  êÈ ¼Ð?d 0ÓmMn @  êÉ ½Ð?d pÓ2” @  êÊ ¾Ð?d °Ã“½Ç– @  êË ¿Ð?d ðÓ.:yK @  êÌ ÀÐ?d 0Ä“7tŠD @  êÍ ÁÐ?d pÄ“Ç p= @  êÎ ÂÐ?d °Ä“çþrà @  êÏ ÃÐ?d ðÄ“Bþªx @  êÐ ÄÐ?d 0Å“’¶& @  êÑ ÅÐ?d pÅ“bÉÜé @  êÒ ÆÐ?d °Å“B<Þ @  êÓ ÇÐ?d ðÅ“Ùvü @  êÔ ÈÐ?d 0Æ“D2ß= @  êÕ ÉÐ?d pÆ“´M%D @  êÖ ÊÐ?d °Æ“”¸'º @  ê× ËÐ?d ðÆ“œÁá @  êØ ÌÐ?d 0Ç“LQM  @  êÙ ÍÐ?d pÇ“¼.·p @  êÚ ÎÐ?d °Ç“œÛµŽ @  êÛ ÏÐ?d ðÇ“bÁv‰ @  êÜ ÐÐ?d 0È“V>ú” @  êÝ ÑÐ?d pÈ“¦Aí @  êÞ ÒÐ?d °È“†´ @  êß ÓÐ?d ðÈ“2²ý @  êà ÔÐ?d 0É“âúqð @  êá ÕÐ?d pÉ“…‹‰ @  êâ ÖÐ?d€ °É“F³•Ñ @  ë ×Ð?d ðÉ“<¸| @  ë ØÐ?d 0Ê“¡üÜÒ @  ë ÙÐ?d pÊ“”ÊÝF @  ë ÚÐ?d °Ê“´?߸ @  ë ÛÐ?d ðÊ“r,f™ @  ë ÜÐ?d 0Ë“¢dêq @  ë ÝÐ?d pË“œ©Or @  ë ÞÐ?d °Ë“¼\MŒ @  ë ßÐ?d ðË“¸Lº @  ë àÐ?d 0Ì“ö¿µ @  ë áÐ?d pÌ“6À¾! @  ë âÐ?d °Ì“5¼ß @  ë ãÐ?d ðÌ“Ð&þ @  ë äÐ?d 0Í“n‰ @  ë åÐ?d pÍ““õ @  ë æÐ?d °Í“³÷  @  ë çÐ?d ðÍ“íôJ  @  ë èÐ?d 0Γp°êÌ @  ë éÐ?d pΓE†ëX @  ë êÐ?d °Î“esé¦ @  ë ëÐ?d ðΓ£`P‡ @  ë ìÐ?d 0Ï“s(Üo @  ë íÐ?d pÏ“Måyl @  ë îÐ?d °Ï“m{’ @  ë ïÐ?d ðÏ“VCCx @  ë ðÐ?d 0ГèÿÊ @  ë ñÐ?d pГÝ«þ^ @  ë òÐ?d °Ð“ý^ü  @  ë óÐ?d ðГ;ME @  ë ôÐ?d 0Ñ“ëÉi @  ë õÐ?d pÑ“iou: @  ë öÐ?d °Ñ“IšwÄ @  ë! ÷Ð?d ðÑ“™- @  ë" øÐ?d 0Ò“ŠÝ @  ë# ùÐ?d pÒ“¿ëŒ— @  ë$ úÐ?d °Ò“ŸŽi @  ë% ûÐ?d ðÒ“Y 7H @  ë& üÐ?d 0Ó“‰E»  @  ë' ýÐ?d pÓ“·ˆ£ @  ë( þÐ?d °Ó“—}] @  ë) ÿÐ?d ðÓ“£h ä @  ë* Ñ?d 0Ô“º&úë @  ë+ Ñ?d pÔ“û @  ë, Ñ?d °Ô“¯åù @  ë- Ñ?d ðÔ“iö@  @  ë. Ñ?d 0Õ“¹¾ÌH @  ë/ Ñ?d pÕ“*ÒW« @  ë0 Ñ?d °Õ“ 'UU @  ë1 Ñ?d ðÕ“T$S @  ë2 Ñ?d 0Ö“É`¯’ @  ë3  Ñ?d pÖ“üV® @  ë4  Ñ?d °Ö“Ü£¬ø @  ë5  Ñ?d ðÖ“°Ù @  ë6  Ñ?d 0דÊø™1 @  ë7  Ñ?d pדô5<2 @  ë8 Ñ?d °×“ÔÀ>Ì @  ë9 Ñ?d ðדï“& @  ë: Ñ?d 0Ø“ÛlŠ; @  ë; Ñ?d pØ“îZ‹¯ @  ë< Ñ?d °Ø“ί‰Q @  ë= Ñ?d ðØ“¼0p @  ë> Ñ?d 0Ù“Øô¼˜ @  ë? Ñ?d pÙ“ô™Y @  ë@ Ñ?d °Ù“Ôl§ @  ëA Ñ?d ðÙ“Šo^¡ @  ëB Ñ?d 0Ú“+þ` @  ëC Ñ?d pÚ“"ÿô @  ëD Ñ?d °Ú“èý  @  ëE Ñ?d ðÚ“ÄûD+ @  ëF Ñ?d 0Û“³Èà @  ëG Ñ?d pÛ“*~mÀ @  ëH Ñ?d °Û“ ‹o> @  ëI Ñ?d ðÛ“¬on @  ëJ  Ñ?d 0Ü“µ! @  ëK !Ñ?d pÜ“€œ“ @  ëL "Ñ?d °Ü“ âžm @  ëM #Ñ?d ðÜ“fñ'L @  ëN $Ñ?d 0Ý“¶¹«¤ @  ëO %Ñ?d pÝ“%Õ0G @  ëP &Ñ?d °Ý“ 2¹ @  ëQ 'Ñ?d ðÝ“[#h¿ @  ëR (Ñ?d 0Þ“ÆgÈ~ @  ëS )Ñ?d pÞ“óQÉê @  ëT *Ñ?d °Þ“Ó¤Ë @  ëU +Ñ?d ðÞ“·r5 @  ëV ,Ñ?d 0ß“ÅÿþÝ @  ëW -Ñ?d pß“û2[Þ @  ëX .Ñ?d uÐà“/°ß“ÛÇY  @  ëY /Ñ?d ðß“ÙS½ @  ëZ0Ñ?d Hà“À÷ãé @  ë[1Ñ?d ˆà“W¥÷] @  ë\2Ñ?d Èà“Õ4àƒ @  ë]3Ñ?d á“Aþ” @  ë^4Ñ?d Há“ÃoÕJ @  ë_5Ñ?d ˆá“ãa|9 @  ë`6Ñ?d Èá“aðkç @  ëa7Ñ?d â“ &†þ @  ëb8Ñ?d Hâ“¢·‘  @  ëc9Ñ?d ˆâ“5å…” @  ëd:Ñ?d Èâ“·t’J @  ëe;Ñ?d ã“#¾°] @  ëf<Ñ?d Hã“¡/§ƒ @  ëg=Ñ?d ˆã“=†  @  ëh>Ñ?d Èã“¿~ @  ëi?Ñ?d ä“r|ðˆ @  ëj@Ñ?d Hä“ðíçV @  ëkAÑ?d ˆä“g¿óâ @  ëlBÑ?d Èä“å.ä< @  ëmCÑ?d å“qäÆ+ @  ënDÑ?d Hå“óuÑõ @  ëoEÑ?d ˆå“Â}_6 @  ëpFÑ?d Èå“@ìHè @  ëqGÑ?d æ“:¥ñ @  ërHÑ?d H擃«²/ @  ësIÑ?d ˆæ“ù¦› @  ëtJÑ?d Èæ“–h±E @  ëuKÑ?d ç“¢“R @  ëvLÑ?d Hç“€3„Œ @  ëwMÑ?d ˆç“š4¯ @  ëxNÑ?d È瓞 #q @  ëyOÑ?d è“6€X @  ëzPÑ?d Hè“‘§—† @  ë{QÑ?d ˆè“õƒ2 @  ë|RÑ?d Èè“„d”ì @  ë}SÑ?d é“®¶û @  ë~TÑ?d Hé“’?¡% @  ëUÑ?d ˆé“ÿ`>õ @  ë€VÑ?d Èé“}ñ)+ @  ëWÑ?d ê“<'Ä2 @  ë‚XÑ?d H꓾¶Óì @  ëƒYÑ?d ˆê“)äÇX @  ë„ZÑ?d Èê“«uІ @  ë…[Ñ?d ë“?¿ò‘ @  ë†\Ñ?d H듽.åO @  ë‡]Ñ?d ˆë“!‡Ul @  ëˆ^Ñ?d Èë“£B² @  ë‰_Ñ?d 쓞-§U @  ëŠ`Ñ?d H쓼°‹ @  ë‹aÑ?d ˆì“‹î¤? @  ëŒbÑ?d Èì“ ³á @  ëcÑ?d 퓵‘ö @  ëŽdÑ?d Hí“$†( @  ëeÑ?d ˆí“.,ë @  ëfÑ?d È퓬½5 @  ë‘gÑ?d î“íkò, @  ë’hÑ?d Hî“oúåò @  ë“iÑ?d ˆî“ø¨ñF @  ë”jÑ?d Èî“z9æ˜ @  ë•kÑ?d ï“îóÄ @  ë–lÑ?d Hï“lbÓQ @  ë—mÑ?d ˆï“ðËcr @  ë˜nÑ?d Èï“rZt¬ @  ë™oÑ?d ð“uFç* @  ëšpÑ?d Hð“÷×ðô @  ë›qÑ?d ˆð“`…ä@ @  ëœrÑ?d Èð“âóž @  ësÑ?d ñ“vÞщ @  ëžtÑ?d Hñ“ôOÆW @  ëŸuÑ?d ˆñ“ÔAo$ @  ë vÑ?d Èñ“VÐxú @  ë¡wÑ?d ò“•ã @  ë¢xÑ?d Hò“•—‚= @  ë£yÑ?d ˆò“Å–‰ @  ë¤zÑ?d Èò“€TW @  ë¥{Ñ?d 󓞣@ @  ë¦|Ñ?d Hó“–´ž @  ë§}Ñ?d ˆó“ ¦½ @  ë¨~Ñ?d Èó“ˆ7c @  ë©Ñ?d ô“Xš· @  ëª€Ñ?d Hô“Ú  Ù @  ë«Ñ?d ˆô“MY´m @  ë¬‚Ñ?d Èô“ÏÈ£³ @  ë­ƒÑ?d õ“[¤ @  ë®„Ñ?d Hõ“Ù“–z @  ë¯…Ñ?d ˆõ“蛹 @  ë°†Ñ?d Èõ“j g @  ë±‡Ñ?d ö“+Üâ~ @  ë²ˆÑ?d Hö“©Mõ  @  ë³‰Ñ?d ˆö“>á @  ë´ŠÑ?d Èö“¼ŽöÊ @  ëµ‹Ñ?d ÷“(DÔÝ @  ë¶ŒÑ?d H÷“ªÕà @  ë·Ñ?d ˆ÷“6|s  @  ë¸ŽÑ?d È÷“´ídþ @  ë¹Ñ?d ø“9ÐÇ× @  ëºÑ?d Hø“»AÐ  @  ë»‘Ñ?d ˆø“,Ľ @  ë¼’Ñ?d Èø“®‚Óc @  ë½“Ñ?d ù“:Hñt @  ë¾”Ñ?d Hù“¸Ùæª @  ë¿•Ñ?d ˆù“6ÐIK @  ëÀ–Ñ?d Èù“´A^• @  ëÁ—Ñ?d ú“õ—³Œ @  ë˜Ñ?d Hú“w¤R @  ëÙÑ?d ˆú“àT°æ @  ëÄšÑ?d Èú“bŧ8 @  ëÅ›Ñ?d û“ö…/ @  ëÆœÑ?d Hû“tž’ñ @  ëÇÑ?d ˆû“è7"Ò @  ëÈžÑ?d Èû“j¦5  @  ëÉŸÑ?d ü“WÐë @  ëÊ Ñ?d Hü“Õ Ç5 @  ëË¡Ñ?d ˆü“B^Ó @  ëÌ¢Ñ?d Èü“ÀÏÄ_ @  ëÍ£Ñ?d ý“TæH @  ëΤÑ?d Hý“Ö”ñ– @  ëÏ¥Ñ?d ˆý“çœU @  ëЦÑ?d Èý“e h‹ @  ëѧÑ?d þ“$Û…’ @  ëÒ¨Ñ?d Hþ“¦J’L @  ëÓ©Ñ?d ˆþ“1†ø @  ëÔªÑ?d Èþ“³‰‘& @  ëÕ«Ñ?d ÿ“'C³1 @  ëÖ¬Ñ?d Hÿ“¥Ò¤ï @  ë×­Ñ?d ˆÿ“9{Ì @  ëØuД®Ñ?d Èÿ“‚-ßÇ @  ëÙ ¯Ñ?d ”)âm @  ëÚ °Ñ?d `”Œ¸õ³ @  ëÛ ±Ñ?d  ”êá @  ëÜ ²Ñ?d à”™{öÙ @  ëÝ ³Ñ?d ” ±ÔÎ @  ëÞ ´Ñ?d `” à @  ëß µÑ?d  ”¯.jc @  ëà ¶Ñ?d à”-¿}½ @  ëá ·Ñ?d ”li¤ @  ëâ ¸Ñ?d€ `”h®/à @  ì ¹Ñ?d  ”½s^ @  ì ºÑ?d à”œ,d€ @  ì »Ñ?d ”ͯ½z @  ì ¼Ñ?d `”O>ª¤ @  ì ½Ñ?d  ”%Eý @  ì ¾Ñ?d à”Ÿ´R# @  ì ¿Ñ?d ”œmý¯ @  ì ÀÑ?d `”üêq @  ì ÁÑ?d  ”Lç( @  ì ÂÑ?d à”Îvö @  ì ÃÑ?d ”ŸõË  @  ì ÄÑ?d `”dÜÒ @  ì ÅÑ?d  ”O3‹ @  ì ÆÑ?d à”Íî$U @  ì ÇÑ?d ”ï+¨Ö @  ì ÈÑ?d `”mº¿ @  ì ÉÑ?d  ”?¡PQ @  ì ÊÑ?d à”½0G @  ì ËÑ?d ”쳞u @  ì ÌÑ?d `”n"‰« @  ì ÍÑ?d  ”<9fò @  ì ÎÑ?d à”¾¨q, @  ì ÏÑ?d ”ý' @  ì ÐÑ?d `”¶š¡ @  ì ÑÑ?d  ”-­uø @  ì ÒÑ?d à”¯õªr @  ì, äÑ?d ` ”¼d½¬ @  ì- åÑ?d   ”îRõ @  ì. æÑ?d à ”lîE+ @  ì/ çÑ?d ”N+ɨ @  ì0 èÑ?d `”̺Þv @  ì1 éÑ?d  ”ž¡1/ @  ì2 êÑ?d à”0&ñ @  ì3 ëÑ?d ”M³ÿ  @  ì4 ìÑ?d `”Ï"èÕ @  ì5 íÑ?d  ”9Œ @  ì6 îÑ?d à”¨R @  ì7 ïÑ?d ”ÖÜ® @  ì8 ðÑ?d `”T—Ëp @  ì9 ñÑ?d  ”Œ$) @  ì: òÑ?d à”„3÷ @  ì; óÑ?d ”Õžê  @  ì< ôÑ?d `”WýÓ @  ì= õÑ?d  ”Š @  ì> öÑ?d à”‡…T @  ì? ÷Ñ?d ”A¨õ @  ì@ øÑ?d `”˜Ð¿+ @  ìA ùÑ?d  ”ÊËPr @  ìB úÑ?d à”HZG¬ @  ìC ûÑ?d ”ÙžV @  ìD üÑ?d `”›H‰ˆ @  ìE ýÑ?d  ”ÉSfÑ @  ìF þÑ?d à”KÂq @  ìG ÿÑ?d ”˜˜ê8 @  ìH Ò?d `” ýæ @  ìI Ò?d  ”H¿ @  ìJ Ò?d à”ʃa @  ìK Ò?d ”›Ü› @  ìL Ò?d `”‘ËE @  ìM Ò?d  ”KŠ$ @  ìN Ò?d à”É3 @  ìO Ò?d ”ëÞ¿A @  ìP Ò?d `”iO¨Ÿ @  ìQ  Ò?d  ”;TGÆ @  ìR  Ò?d à”¹ÅP @  ìS  Ò?d ”èF‰â @  ìT  Ò?d `”jמ< @  ìU  Ò?d  ”8Ìqe @  ìV Ò?d à”º]f» @  ìW Ò?d ”ùÒšè @  ìX Ò?d `”{C6 @  ìY Ò?d  ”)Xbo @  ìZ Ò?d à”«Éu± @  ì[ Ò?d ”úJ¬K @  ì\ Ò?d `”xÛ»• @  ì] Ò?d  ”*ÀTÌ @  ì^ Ò?d à”¨QC @  ì_ Ò?d ”›’è! @  ì` Ò?d `”ÿÿ @  ìa Ò?d  ”K¦ @  ìb Ò?d à”ɉx @  ìc Ò?d ”˜ Þ‚ @  ìd Ò?d `”›É\ @  ìe Ò?d  ”H€& @  ìf Ò?d à”Ê1Û @  ìg Ò?d ”9˜‹F @  ìh  Ò?d `”» œ˜ @  ìi !Ò?d  ”ésÁ @  ìj "Ò?d à”kƒd @  ìk #Ò?d ”:½å @  ìl $Ò?d `”¸‘ª; @  ìm %Ò?d  ”êŠEb @  ìn &Ò?d à”hR¼ @  ìo 'Ò?d ”JÞÞ? @  ìp (Ò?d `”ÈOÉá @  ìq )Ò?d  ”šT&¸ @  ìr *Ò?d à”Å1f @  ìs +Ò?d ”IFèœ @  ìt ,Ò?d `”Ë×ÿB @  ìu -Ò?d  ”™ÌuÐ ” @  ìv .Ò?d à”"šÛ @  ìw/Ò?d 8 ”$áu8 @  ìx0Ò?d x ”¦pbæ @  ìy1Ò?d ¸ ”ôk¿ @  ìz2Ò?d ø ”vúša @  ì{3Ò?d 8!”'yC› @  ì|4Ò?d x!”¥èTE @  ì}5Ò?d ¸!”÷ó» @  ì~6Ò?d ø!”ub¬Â @  ì7Ò?d 8"” ð1R @  ì€8Ò?d x"”‰a&Œ @  ì9Ò?d ¸"”ÛzÉÕ @  ì‚:Ò?d ø"”YëÞ  @  ìƒ;Ò?d 8#”hñ @  ì„<Ò?d x#”Šù/ @  ì…=Ò?d ¸#”Øâÿv @  ì†>Ò?d ø#”Zsè¨ @  ì‡?Ò?d 8$”YªG$ @  ìˆ@Ò?d x$”Û;Pú @  ì‰AÒ?d ¸$”‰ ¿£ @  ìŠBÒ?d ø$” ±¨} @  ì‹CÒ?d 8%”Z2q‡ @  ìŒDÒ?d x%”Ø£fY @  ìEÒ?d ¸%”Џ‰ @  ìŽFÒ?d ø%”)žÞ @  ìGÒ?d 8&”*ì] @  ìHÒ?d x&”¨}ƒ @  ì‘IÒ?d ¸&”úfêÚ @  ì’JÒ?d ø&”x÷ý @  ì“KÒ?d 8'”)t$þ @  ì”LÒ?d x'”«å3  @  ì•MÒ?d ¸'”ùþÜy @  ì–NÒ?d ø'”{o˧ @  ì—OÒ?d 8(”8à7ô @  ì˜PÒ?d x(”ºq * @  ì™QÒ?d ¸(”èjÏs @  ìšRÒ?d ø(”jûØ­ @  ì›SÒ?d 8)”;xW @  ìœTÒ?d x)”¹é‰ @  ìUÒ?d ¸)”ëòùÐ @  ìžVÒ?d ø)”icî @  ìŸWÒ?d 8*”Z E= @  ì XÒ?d x*”Ø1Rã @  ì¡YÒ?d ¸*”Š*½º @  ì¢ZÒ?d ø*”»ªd @  ì£[Ò?d 8+”Y8sž @  ì¤\Ò?d x+”Û©d@ @  ì¥]Ò?d ¸+”‰²‹ @  ì¦^Ò?d ø+” #œÇ @  ì§_Ò?d 8,”øª&Z @  ì¨`Ò?d x,”z;1„ @  ì©aÒ?d ¸,”( ÞÝ @  ìªbÒ?d ø,”ª±É @  ì«cÒ?d 8-”û2ù @  ì¬dÒ?d x-”y£' @  ì­eÒ?d ¸-”+¸è~ @  ì®fÒ?d ø-”©)ÿ  @  ì¯gÒ?d 8.”‹ìs# @  ì°hÒ?d x.” }dý @  ì±iÒ?d ¸.”[f‹¤ @  ì²jÒ?d ø.”Ù÷œz @  ì³kÒ?d 8/”ˆtE€ @  ì´lÒ?d x/” åR^ @  ìµmÒ?d ¸/”Xþ½ @  ì¶nÒ?d ø/”ÚoªÙ @  ì·oÒ?d 80”Áf% @  ì¸pÒ?d x0”‘Pqû @  ì¹qÒ?d ¸0”ÃKž¢ @  ìºrÒ?d ø0”AÚ‰| @  ì»sÒ?d 81”YP† @  ì¼tÒ?d x1”’ÈGX @  ì½uÒ?d ¸1”ÀÓ¨ @  ì¾vÒ?d ø1”BB¿ß @  ì¿wÒ?d 82”߆~ @  ìÀxÒ?d x2”]  @  ìÁyÒ?d ¸2” êù @  ìÂzÒ?d ø2”ý' @  ìÃ{Ò?d 83”Ü$Ý @  ìÄ|Ò?d x3”^3 @  ìÅ}Ò?d ¸3” ”ÜZ @  ìÆ~Ò?d ø3”ŽË„ @  ìÇÒ?d 84”0š @  ìÈ€Ò?d x4”‹'D @  ìÉÒ?d ¸4”@È @  ìÊ‚Ò?d ø4”Âßà @  ì˃Ò?d 85”“‚9 @  ìÌ„Ò?d x5”ç @  ìÍ…Ò?d ¸5”Cþ¾ @  ìΆÒ?d ø5”Á™é` @  ìχÒ?d 86”ã\eã @  ìЈÒ?d x6”aÍr= @  ìщÒ?d ¸6”3Öd @  ìÒŠÒ?d ø6”±GŠº @  ìÓ‹Ò?d 87”àÄS@ @  ìÔŒÒ?d x7”bUDž @  ìÕÒ?d ¸7”0N«Ç @  ìÖŽÒ?d ø7”²ß¼ @  ì×Ò?d 88”ñP@J @  ìØÒ?d x8”sÁW” @  ìÙ‘Ò?d ¸8”!Ú¸Í @  ìÚ’Ò?d ø8”£K¯ @  ìÛ“Ò?d 89”òÈvé @  ìÜ”Ò?d x9”pYa7 @  ìÝ•Ò?d ¸9”"BŽn @  ìÞ–Ò?d ø9”™Ee @  ìß —Ò?d 8:”ª×îV @  ìà ˜Ò?d x:”(Fùˆ @  ìá ™Ò?d ¸:”z]Ñ @  ìâ šÒ?d€ ø:”Œ© @  í ›Ò?d 8;”<ÍŒz @  í œÒ?d x;”¾\›¤ @  í Ò?d ¸;”) @  í žÒ?d ø;”«Ÿ˜Î @  í ŸÒ?d 8<”–¤}) @  í  Ò?d x<”5j÷ @  í ¡Ò?d ¸<”ˆœÚÔ @  í ¢Ò?d ø<” Í  @  í £Ò?d 8=”žÇï @  í ¤Ò?d x=”VøÃ @  í ¥Ò?d ¸=”‹ìw @  í ¦Ò?d ø=” •û© @  í §Ò?d 8>”HC° @  í ¨Ò?d x>”ÊÒn @  í ©Ò?d ¸>”ûÚ­ @  í ªÒ?d ø>”yK˜s @  í «Ò?d 8?”íºd @  í ¬Ò?d x?”o­º @  í ­Ò?duÐ@”7 ¸?”øB¹ @  í ®Ò?d ø?”>”y @  í€¯Ò?d P@”Dú”q @  í€°Ò?d @”d– @  í€±Ò?d Ð@”ZÂ3Œ @  í€²Ò?d A”ŠŠ¿d @  í€³Ò?d PA”L™E @  í€´Ò?d A”ll» @  í€µÒ?d ÐA”YZ/ @  í€¶Ò?d B”Ä¥î @  í€·Ò?d PB”šÿè @  í€¸Ò?d B”ºèý @  í€¹Ò?d ÐB”8‚AE @  í €ºÒ?d C”èÊÍ­ @  í!€»Ò?d PC”.ÙtŒ @  í"€¼Ò?d C”,vr @  í#€½Ò?d ÐC”;wæ @  í$€¾Ò?d D”"T„é @  í%€¿Ò?d PD”tàÎ @  í&€ÀÒ?d D”T’0 @  í'€ÁÒ?d ÐD”jØ73 @  í(€ÂÒ?d E”º»Û @  í)€ÃÒ?d PE”|ƒú @  í*€ÄÒ?d E”\v @  í+€ÅÒ?d ÐE”i@ @  í,€ÆÒ?d F”ô¡Q @  í-€ÇÒ?d PF”ªûW @  í.€ÈÒ?d F”Šòù© @  í/€ÉÒ?d ÐF”žbJ @  í0€ÊÒ?d G”ÉÖî¢ @  í1€ËÒ?d PG”ÅWƒ @  í2€ÌÒ?d G”/0U} @  í3€ÍÒ?d ÐG”Té @  í4€ÎÒ?d H”.ùØô @  í5€ÏÒ?d PH”ªà @  í6€ÐÒ?d H”5_âà @  í7€ÑÒ?d ÐH” ’Gã @  í8€ÒÒ?d I”ÛÚË  @  í9€ÓÒ?d PI”Ér* @  í:€ÔÒ?d I”=€ØÒ?d J”븉y @  í?€ÙÒ?d ÐJ”ÇÕ3¸ @  í@€ÚÒ?d K”¿P @  íA€ÛÒ?d PK”ÑŽq @  íB€ÜÒ?d K”ñ{ @  íC€ÝÒ?d ÐK”ÄM @  íD€ÞÒ?d L”Ýö @  íE€ßÒ?d PL”{ç÷" @  íF€àÒ?d L”[õÜ @  íG€áÒ?d ÐL”eßPß @  íH€âÒ?d M”µ—Ü7 @  íI€ãÒ?d PM”s„e @  íJ€äÒ?d M”Sqgè @  íK€åÒ?d ÐM”fGf| @  íL€æÒ?d N”ûƽ @  íM€çÒ?d PN”¥œ» @  íN€èÒ?d N”…õžE @  íO€éÒ?d ÐN”™¦ @  íP€êÒ?d O”ÆÑ‰N @  íQ€ëÒ?d PO”Â0o @  íR€ìÒ?d O” 72‘ @  íS€íÒ?d ÐO”3 @  íT€îÒ?d P”«ß· @  íU€ïÒ?d PP”Œ·] @  íV€ðÒ?d P”°yµ£ @  íW€ñÒ?d ÐP”Ž´  @  íX€òÒ?d Q”^üœH @  íY€óÒ?d PQ”˜ï%i @  íZ€ôÒ?d Q”¸'— @  í[€õÒ?d ÐQ”,& @  í\€öÒ?d R”h†Â @  í]€÷Ò?d PR”NkÜÄ @  í^€øÒ?d R”nžÞ: @  í_€ùÒ?d ÐR”ìôbi @  í`€úÒ?d S”<¼î @  ía€ûÒ?d PS”ú¯W  @  íb€üÒ?d S”ÚZU^ @  íc€ýÒ?d ÐS”ïlTÊ @  íd€þÒ?d T”ö"§Å @  íe€ÿÒ?d PT”Â7²| @  íf€Ó?d T”â°‚ @  íg€Ó?d ÐT”Ü @  íh€Ó?d U” G™i @  íi€Ó?d PU”ÊT H @  íj€Ó?d U”ê¡"¶ @  ík€Ó?d ÐU”ß—#" @  íl€Ó?d V”BÓƒã @  ím€Ó?d PV”ÐÙå @  ín€Ó?d V”<%Û @  ío€ Ó?d ÐV”¯I@ø @  íp€ Ó?d W”Ì @  íq€ Ó?d PW”¹u1 @  ír€ Ó?d W”™çwÏ @  ís€ Ó?d ÐW”¬Ñv[ @  ít€Ó?d X”˜.úF @  íu€Ó?d PX”£}¬ @  ív€Ó?d X”ƒˆÀR @  íw€Ó?d ÐX”½EeQ @  íx€Ó?d Y”m é¹ @  íy€Ó?d PY”«P˜ @  íz€Ó?d Y”‹ëRf @  í{€Ó?d ÐY”¾ÝSò @  í|€Ó?d Z”#™ó3 @  í}€Ó?d PZ”}š©5 @  í~€Ó?d Z”]o«Ë @  í€Ó?d ÐZ”’T!; @  í€€Ó?d [”B­Ó @  í€Ó?d P[”„ò @  í‚€Ó?d [”¤ú  @  íƒ€Ó?d Ð[”‘̘ @  í„€Ó?d \”ˆ‚ä— @  í…€Ó?d P\”.få¡ @  í†€ Ó?d \”“ç_ @  í‡€!Ó?d Ð\”0^B\ @  íˆ€"Ó?d ]”àδ @  í‰€#Ó?d P]”&w• @  íŠ€$Ó?d ]”ðuk @  í‹€%Ó?d Ð]”3Ætÿ @  íŒ€&Ó?d ^”®‚Ô> @  í€'Ó?d P^”ðŽ8 @  íŽ€(Ó?d ^”ÐtŒÆ @  í€)Ó?d Ð^”C% @  í€*Ó?d _”“P›Í @  í‘€+Ó?d P_”UC"ì @  í’€,Ó?d _”u¶  @  íuÐ`”“€-Ó?d Ð_”=Rú @  í”.Ó?d (`”ƒøçb @  í•/Ó?d h`”¸«ßˆ @  í–0Ó?d ¨`”˜^Ýv @  í—1Ó?d è`”¦“xu @  í˜2Ó?d (a”vÛô @  í™3Ó?d ha”°ÈM¼ @  íš4Ó?d ¨a”=OB @  í›5Ó?d èa”¥ NÖ @  íœ6Ó?d (b”8Oî @  í7Ó?d hb”fL´ @  íž8Ó?d ¨b”F¹¶ï @  íŸ9Ó?d èb”ÄÓ ¼ @  í :Ó?d (c”›†T @  í¡;Ó?d hc”Òˆ?u @  í¢<Ó?d ¨c”ò}=‹ @  í£=Ó?d èc”ÇK< @  í¤>Ó?d (d”ÞÏ @  í¥?Ó?d hd”ˆ±Û7 @  í¦@Ó?d ¨d”¨DÙÉ @  í§AÓ?d èd”–‰|Ê @  í¨BÓ?d (e”FÁð" @  í©CÓ?d he”€ÒI @  íªDÓ?d ¨e” 'Ký @  í«EÓ?d èe”•Ji @  í¬FÓ?d (f”Uê¨ @  í­GÓ?d hf”VV°® @  í®HÓ?d ¨f”v£²P @  í¯IÓ?d èf”åÏ)³ @  í°JÓ?d (g”5‡¥[ @  í±KÓ?d hg”ó”z @  í²LÓ?d ¨g”Óa„ @  í³MÓ?d èg”æW @  í´NÓ?d (h”Ò¨“  @  íµOÓ?d hh”éû«ç @  í¶PÓ?d ¨h”É© @  í·QÓ?d èh”÷à  @  í¸RÓ?d (i”'‹€ò @  í¹SÓ?d hi”á˜9Ó @  íºTÓ?d ¨i”Ám;- @  í»UÓ?d èi”ô[:¹ @  í¼VÓ?d (j”išx @  í½WÓ?d hj”7À~ @  í¾XÓ?d ¨j”é€ @  í¿YÓ?d èj”;„xA @  íÀZÓ?d (k”ëÌô© @  íÁ[Ó?d hk”-ßMˆ @  íÂ\Ó?d ¨k” *Ov @  íÃ]Ó?d èk”8Nâ @  íÄ^Ó?d (l”!R½í @  íÅ_Ó?d hl”‡¶¼Û @  íÆ`Ó?d ¨l”§C¾% @  íÇaÓ?d èl”™Ž& @  íÈbÓ?d (m”IÆ—Î @  íÉcÓ?d hm”Õ.ï @  íÊdÓ?d ¨m”¯ , @  íËeÓ?d èm”š-… @  íÌfÓ?d (n”RD @  íÍgÓ?d hn”YQ×B @  íÎhÓ?d ¨n”y¤Õ¼ @  íÏiÓ?d èn”êÈN_ @  íÐjÓ?d (o”:€Â· @  íÑkÓ?d ho”ü“{– @  íÒlÓ?d ¨o”Üfyh @  íÓmÓ?d èo”éPxü @  íÔnÓ?d (p”WŽÄN @  íÕoÓ?d hp”lÝü¤ @  íÖpÓ?d ¨p”L(þZ @  í×qÓ?d èp”rå[Y @  íØrÓ?d (q”¢­×± @  íÙsÓ?d hq”d¾n @  íÚtÓ?d ¨q”DKln @  íÛuÓ?d èq”q}mú @  íÜvÓ?d (r”ì9Í; @  íÝwÓ?d hr”²:—= @  íÞxÓ?d ¨r”’ϕà @  íßyÓ?d èr”¥) @  íàzÓ?d (s”Àí¥x @  íá{Ó?d hs”þY @  íâ|Ó?d€ ¨s”çLé§ @  î}Ó?d ès”3;  @  î~Ó?d (t”*uS @  îÓ?d ht”¤NèM @  î€Ó?d ¨t”„»ê³ @  îÓ?d èt”tÄÊ @  î‚Ó?d (u”¤Œœ" @  îƒÓ?d hu”¬-zy @  î„Ó?d ¨u”ŒØx‡ @  î …Ó?d èu”|§‚þ @  î †Ó?d (v”áã"? @  î ‡Ó?d hv”z©ƒÔ @  î ˆÓ?d ¨v”Z\* @  î ‰Ó?d èv”ª#{S @  îŠÓ?d (w”zk÷» @  î‹Ó?d hw”ßk/ @  îŒÓ?d ¨w”ÿž-þ @  îÓ?d èw”áׇ @  îŽÓ?d (x”;[š @  îÓ?d hx”Ř @  îÓ?d ¨x”åñšc @  î‘Ó?d èx”Ž` @  î’Ó?d (y”ÅÆìò @  î“Ó?d hy”Íg © @  î”Ó?d ¨y”í’W @  î•Ó?d èy”íò. @  î–Ó?d (z”€©Rï @  î—Ó?d hz”ãó @  î˜Ó?d ¨z”;ñú @  î™Ó?d èz”Ëi ƒ @  îšÓ?d ({”!‡k @  î›Ó?d h{”¯'x` @  î œÓ?d ¨{”Òzž @  î!Ó?d è{”­€ç @  î"žÓ?d (|”fãsè @  î#ŸÓ?d h|”N‰3 @  î$ Ó?d ¨|”%»‹Í @  î%¡Ó?d è|”ÕÄq´ @  î&¢Ó?d (}”Œý\ @  î'£Ó?d h}” - @  î(¤Ó?d ¨}”-Øù @  î)¥Ó?d è}”ݧ〠@  î*¦Ó?d (~”@ãCA @  î+§Ó?d h~”۩⪠@  î,¨Ó?d ¨~”û\àT @  î-©Ó?d è~” #- @  î.ªÓ?d (”Ûk–Å @  î/«Ó?d h”~kN~ @  î0¬Ó?d ¨”uЀ”'^žL€ @  î1­Ó?d è”®á¶ù @  î2®Ó?d @€”À_T @  î3¯Ó?d €€”œ!‚ª @  î4°Ó?d À€”°•t @  î5±Ó?d ”¼ô; @  î6²Ó?d @”>‡ãå @  î7³Ó?d €””Bž @  î8´Ó?d À”Ó@ @  î9µÓ?d ‚”ùyJ& @  î:¶Ó?d @‚”{è]ø @  î;·Ó?d €‚”BÆé3 @  î<¸Ó?d À‚”ÀWþí @  î=¹Ó?d ƒ”bñŸ¢ @  î>ºÓ?d @ƒ”à`ˆ| @  î?»Ó?d €ƒ”XdÅ @  î@¼Ó?d Àƒ”Ú”s @  îA½Ó?d „”±4m³ @  îB¾Ó?d @„”3¥zm @  îC¿Ó?d €„”<€‡ @  îDÀÓ?d À„”€­—Y @  îEÁÓ?d …”" ö @  îFÂÓ?d @…” šáÈ @  îGÃÓ?d €…” _³ @  îHÄÓ?d À…”ˆÎm @  îIÅÓ?d †”gdH  @  îJÆÓ?d @†”åõ_Õ @  îKÇÓ?d €†”ÜÛë @  îLÈÓ?d À†”^JüÀ @  îMÉÓ?d ‡”üì @  îNÊÓ?d @‡”~}ŠQ @  îOËÓ?d €‡”yGÊ @  îPÌÓ?d À‡”ûˆP @  îQÍÓ?d ˆ”½™1® @  îRÎÓ?d @ˆ”?&p @  îSÏÓ?d €ˆ”cvðW @  îTÐÓ?d Àˆ”áçç‰ @  îUÑÓ?d ‰”CA†Æ @  îVÒÓ?d @‰”ÁБ @  îWÓÓ?d €‰”kbc @  îXÔÓ?d À‰”é„u½ @  îYÕÓ?d Š”.8Û @  îZÖÓ?d @Š”„¿/ @  î[×Ó?d €Š”½‘›Î @  î\ØÓ?d ÀŠ”?Œ @  î]ÙÓ?d ‹”¦í_ @  î^ÚÓ?d @‹”7ú @  î_ÛÓ?d €‹” Uª @  î`ÜÓ?d À‹”‹Ät @  îaÝÓ?d Œ”àdÜ @  îbÞÓ?d @Œ”bõ @  îcßÓ?d €Œ”£<áù @  îdàÓ?d ÀŒ”!­ö' @  îeáÓ?d ”ƒ —h @  îfâÓ?d @”š€¶ @  îgãÓ?d €”«_sÍ @  îhäÓ?d À”)Îd @  îiåÓ?d Ž”Æd)u @  îjæÓ?d @Ž”Dõ>« @  îkçÓ?d €Ž”}ÛŠ` @  îlèÓ?d ÀŽ”ÿJ¾ @  îméÓ?d ”]ìüñ @  înêÓ?d @”ß}ë/ @  îoëÓ?d €”Ø&´ @  îpìÓ?d À”Zˆ1j @  îqíÓ?d ”–¸` @  îrîÓ?d @”)w¡ @  îsïÓ?d €”HW¡† @  îtðÓ?d À”ÊÆ¶X @  îuñÓ?d ‘”h`× @  îvòÓ?d @‘”êñÀÉ @  îwóÓ?d €‘”@43² @  îxôÓ?d À‘”Â¥$l @  îyõÓ?d ’”-i  @  îzöÓ?d @’”¯ž~Ô @  î{÷Ó?d €’”–°Ê @  î|øÓ?d À’”!ÝÁ @  î}ùÓ?d “”¶‡¼Ž @  î~úÓ?d @“”4«P @  îûÓ?d €“”o%wØ @  î€üÓ?d À“”í´` @  îýÓ?d ””†~® @  î‚þÓ?d @””…ip @  îƒÿÓ?d €””k´­’ @  î„Ô?d À””é%ºL @  î…Ô?d •”KƒÛ @  î†Ô?d @•”ÉÌÝ @  î‡Ô?d €•”c×?¦ @  îˆÔ?d À•”áF(x @  î‰Ô?d –”ìe @  îŠÔ?d @–”Œ}rÀ @  î‹Ô?d €–”µSÆ  @  îŒÔ?d À–”7ÂÑÕ @  î Ô?d —”•d°š @  îŽ Ô?d @—”õ§D @  î Ô?d €—”‘jß @  î Ô?d À—”’} @  î‘ Ô?d ˜”Ô» @  î’Ô?d @˜”V€ e @  î“Ô?d €˜” þÝB @  î”Ô?d À˜”ˆoÊœ @  î•Ô?d ™”*É«Ó @  î–Ô?d @™”¨X¼  @  î—Ô?d €™”Ov @  î˜Ô?d À™”€ X¨ @  î™Ô?d š”o¦Î @  îšÔ?d @š”í7 @  î›Ô?d €š”Ô¶Û @  îœÔ?d Àš”Vˆ¡ @  îÔ?d ›”ô.ÀJ @  îžÔ?d @›”v¿×” @  îŸÔ?d €›”`Ý=¿ @  î Ô?d À›”âL*a @  î¡Ô?d œ”‰ì4É @  î¢Ô?d @œ” }# @  î£Ô?d €œ”Ê´Ìì @  î¤ Ô?d Àœ”H%Û2 @  î¥!Ô?d ”ꃺ} @  î¦"Ô?d @”h­£ @  î§#Ô?d €”Â×^Ø @  î¨$Ô?d À”@FI @  î©%Ô?d ž”¯ì` @  îª&Ô?d @ž”-}¾ @  î«'Ô?d €ž”S§u @  î¬(Ô?d Àž”–°« @  î­)Ô?d Ÿ”4dÑä @  î®*Ô?d @Ÿ”¶õÆ: @  î¯+Ô?d €Ÿ”±‘ ¡ @  î°,ÔuР”?d ÀŸ”3 @  î±-Ô?d  ”0å/¾ @  î².Ô?d X ”²t8` @  î³/Ô?d ˜ ”î îG @  î´0Ô?d Ø ”l›ù™ @  îµ1Ô?d ¡”Î=˜Ö @  î¶2Ô?d X¡”L¬ @  î·3Ô?d ˜¡”æi|s @  î¸4Ô?d Ø¡”døk­ @  î¹5Ô?d ¢”‹R&Ë @  îº6Ô?d X¢” Ã1 @  î»7Ô?d ˜¢”0í…Þ @  î¼8Ô?d Ø¢”²|’ @  î½9Ô?d £”ÚóO @  î¾:Ô?d X£”’Kä‘ @  î¿;Ô?d ˜£”*.( @  îÀ<Ô?d Ø£”¨¿ö @  îÁ=Ô?d ¤”Ã^ @  îÂ>Ô?d X¤”AŽ€ @  îÃ?Ô?d ˜¤”pìj @  îÄ@Ô?d ؤ”ò†û´ @  îÅAÔ?d ¥”P šû @  îÆBÔ?d X¥”Ò±% @  îÇCÔ?d ˜¥”xt~^ @  îÈDÔ?d Ø¥”úåi€ @  îÉEÔ?d ¦”O$æ @  îÊFÔ?d X¦”—Þ38 @  îËGÔ?d ˜¦”®ð‡ó @  îÌHÔ?d ئ”,a- @  îÍIÔ?d §”ŽÇñb @  îÎJÔ?d X§” Væ¼ @  îÏKÔ?d ˜§” 2+' @  îÐLÔ?d ا”‰£<ù @  îÑMÔ?d ¨”ϲ]C @  îÒNÔ?d X¨”M#J @  îÓOÔ?d ˜¨”]œº @  îÔPÔ?d ب”“Ì‹d @  îÕQÔ?d ©”1jê+ @  îÖRÔ?d X©”³ûýõ @  î×SÔ?d ˜©”>Ž @  îØTÔ?d Ø©”›¯P @  îÙUÔ?d ª”tT6 @  îÚVÔ?d Xª”ö”Cè @  îÛWÔ?d ˜ª”Ϻ÷# @  îÜXÔ?d ت”M+àý @  îÝYÔ?d «”ï² @  îÞZÔ?d X«”m–l @  îß[Ô?d ˜«”{~|G @  îà\Ô?d Ø«”ùïk™ @  îá]Ô?d ¬”’Ou1 @  îâ^Ô?d€ X¬”d~I @  ï_Ô?d ˜¬”D•Ù› @  ï`Ô?d ج”ÆÎE @  ïaÔ?d ­”¡ëTç @  ïbÔ?d X­”#zC9 @  ïcÔ?d ˜­”G ï8 @  ïdÔ?d Ø­”Åœøæ @  ïeÔ?d ®”ä„êú @  ïfÔ?d X®”fý$ @  ï gÔ?d ˜®”šr² @  ï hÔ?d Ø®”ã¥Ü @  ï iÔ?d ¯” ?~ @  ï jÔ?d X¯”ý(  @  ï kÔ?d ˜¯”™ê„¡ @  ïlÔ?d د”{“ @  ïmÔ?d °”´X£ð @  ïnÔ?d X°”6É´. @  ïoÔ?d ˜°”¯þ™ä @  ïpÔ?d ذ”-oŽ: @  ïqÔ?d ±”J€˜ @  ïrÔ?d X±”ÈF @  ïsÔ?d ˜±”¬f¯G @  ïtÔ?d ر”.÷¸™ @  ïuÔ?d ²”徭 @  ïvÔ?d X²”~½[ @  ïwÔ?d ˜²”qò} @  ïxÔ?d ز”óˆå£ @  ïyÔ?d ³””g @  ïzÔ?d X³”öhß @  ï{Ô?d ˜³”rÄÞ @  ï|Ô?d س”ðÓ @  ï}Ô?d ´”饋‚ @  ï ~Ô?d X´”k4œ\ @  ï!Ô?d ˜´”‚"ÉÉ @  ï"€Ô?d Ø´”³Þ @  ï#Ô?d µ”g\Dµ @  ï$‚Ô?d Xµ”åÍSk @  ï%ƒÔ?d ˜µ”ºÿj @  ï&„Ô?d ص”+è´ @  ï'…Ô?d ¶”"3ú¨ @  ï(†Ô?d X¶” ¢ív @  ï)‡Ô?d ˜¶”\Å¢P @  ï*ˆÔ?d ض”ÞTµŽ @  ï+‰Ô?d ·”¹»/, @  ï,ŠÔ?d X·”;*8ò @  ï-‹Ô?d ˜·”_]”ó @  ï.ŒÔ?d Ø·”Ý̃- @  ï/Ô?d ¸”øÎƒ  @  ï0ŽÔ?d X¸”z_”Ó @  ï1Ô?d ˜¸”ãh¹ @  ï2Ô?d ظ”aù®Ç @  ï3‘Ô?d ¹”4e @  ï4’Ô?d X¹”„‡#» @  ï5“Ô?d ˜¹”àðº @  ï6”Ô?d ع”ba˜d @  ï7•Ô?d º”CyŠx @  ï8–Ô?d Xº”Áè¦ @  ï9—Ô?d ˜º”=Ò€ @  ï:˜Ô?d غ”¿Å^ @  ï;™Ô?d »”Øñ_ü @  ï<šÔ?d X»”Z`H" @  ï=›Ô?d ˜»”>ä# @  ï>œÔ?d Ø»”¼†óý @  ï?Ô?d ¼” 4­í @  ï@žÔ?d X¼”‰¥º3 @  ïAŸÔ?d ˜¼”%®% @  ïB Ô?d ؼ”´¹û @  ïC¡Ô?d ½”h[#Y @  ïD¢Ô?d X½”êÊ4‡ @  ïE£Ô?d ˜½”޽˜† @  ïF¤Ô?d ؽ” ,X @  ïG¥Ô?d ¾”-4D @  ïH¦Ô?d X¾”¯¥Šš @  ïI§Ô?d ˜¾”SÂż @  ïJ¨Ô?d ؾ”ÑSÒb @  ïK©Ô?d ¿”¶¼HÀ @  ïLªÔ?d X¿”4-_ @  ïM«Ô?d ˜¿”PZó @uÐÀ”  ïN¬Ô?d Ø¿”ÒËäÁ @  ïO­Ô?d 0À”§Æ9® @  ïP®Ô?d pÀ”%W.p @  ïQ¯Ô?d °À”¼`º @  ïR°Ô?d ðÀ”>ñd @  ïS±Ô?d 0Á”YŽÆ @  ïT²Ô?d pÁ”Û™ @  ïU³Ô?d °Á”¿ø5 @  ïV´Ô?d ðÁ”=i"Ç @  ïWµÔ?d 0”q0Û @  ïX¶Ô?d p”žà' @  ïY·Ô?d °Â”b‡h# @  ïZ¸Ô?d ð”àý @  ï[¹Ô?d 0Ô‡ùå_ @  ï\ºÔ?d pÔhò @  ï]»Ô?d °Ã”a^€ @  ï^¼Ô?d ðÔãŽI^ @  ï_½Ô?d 0Ä”ú;Ü @  ï`¾Ô?d pÄ”xª @  ïa¿Ô?d °Ä”Œz @  ïbÀÔ?d ðÄ”ëÛ @  ïcÁÔ?d 0Å”iŠy @  ïdÂÔ?d pŔ땧 @  ïeÃÔ?d °Å”â1¦ @  ïfÄÔ?d ðÅ” s&x @  ïgÅÔ?d 0Æ”,k4d @  ïhÆÔ?d pÆ”®ú#º @  ïiÇÔ?d °Æ”Rlœ @  ïjÈÔ?d ðƔР{B @  ïkÉÔ?d 0Ç”·ãáà @  ïlÊÔ?d pÇ”5rö> @  ïmËÔ?d °Ç”QZ? @  ïnÌÔ?d ðǔӔMá @  ïoÍÔ?d 0È”ö–MÁ @  ïpÎÔ?d pÈ”tZ @  ïqÏÔ?d °È”í0wÕ @  ïrÐÔ?d ðÈ”o¡`  @  ïsÑÔ?d 0É”Nú© @  ïtÒÔ?d pÉ”Šßíw @  ïuÓÔ?d °É”î¨Av @  ïvÔÔ?d ðÉ”l9V¨ @  ïwÕÔ?d 0Ê”M!D´ @  ïxÖÔ?d pÊ”ϰSj @  ïy×Ô?d °Ê”3×L @  ïzØÔ?d ðÊ”±F ’ @  ï{ÙÔ?d 0˔֩‘0 @  ï|ÚÔ?d pË”T8†î @  ï}ÛÔ?d °Ë”0O*ï @  ï~ÜÔ?d ðË”²Þ=1 @  ïÝÔ?d 0Ì”æ:S @  ï€ÞÔ?d pÌ”d«DÎ @  ïßÔ?d °Ì”`+PØ @  ï‚àÔ?d ðÌ”âºG @  ïƒáÔ?d 0Í”…Uݤ @  ï„âÔ?d pÍ”ÄÊz @  ï…ãÔ?d °Í”c³f{ @  ï†äÔ?d ðÍ”á"q¥ @  ï‡åÔ?d 0ΔÀ:c¹ @  ïˆæÔ?d pΔB«tg @  ï‰çÔ?d °Î”¾Ì;A @  ïŠèÔ?d ðΔ<],Ÿ @  ï‹éÔ?d 0Ï”[²¶= @  ïŒêÔ?d pÏ”Ù#¡ã @  ïëÔ?d °Ï”½T â @  ïŽìÔ?d ðÏ”?Å< @  ïíÔ?d 0Дæ*³ @  ïîÔ?d pДw=m @  ï‘ïÔ?d °Ð”‹@§ @  ï’ðÔ?d ðД Ñy @  ï“ñÔ?d 0Ñ”n>Û @  ï”òÔ?d pÑ”쯊 @  ï•óÔ?d °Ñ”ˆØ& @  ï–ôÔ?d ðÑ” I1Ú @  ï—õÔ?d 0Ò”+Q#Æ @  ï˜öÔ?d pÒ”©À4 @  ï™÷Ô?d °Ò”U§{> @  ïšøÔ?d ðÒ”×6là @  ï›ùÔ?d 0Ó”°ÙöB @  ïœúÔ?d pÓ”2Hᜠ@  ïûÔ?d °Ó”V?M @  ïžüÔ?d ðÓ”Ô®ZC @  ïŸýÔ?d 0Ô”ÍÁ @  ï þÔ?d pÔ”OŠ @  ï¡ÿÔ?d °Ô”Ùû† @  ï¢Õ?d ðÔ”[jX @  ï£Õ?d 0Õ”<…˜ú @  ï¤Õ?d pÕ”¾$ @  ï¥Õ?d °Õ”Úc#% @  ï¦Õ?d ðÕ”Xò4û @  ï§Õ?d 0Ö”yê&ç @  ï¨Õ?d pÖ”û{19 @  ï©Õ?d °Ö”~ @  ïªÕ?d ðÖ”…iÁ @  ï« Õ?d 0×”âbóc @  ï¬ Õ?d p×”`óä½ @  ï­ Õ?d °×”„H¼ @  ï® Õ?d ð×”†_b @  ï¯ Õ?d 0Ø”£_B @  ï°Õ?d pØ”!†Hœ @  ï±Õ?d °Ø”¸±eV @  ï²Õ?d ðØ”: rˆ @  ï³Õ?d 0Ù”]Ïè* @  ï´Õ?d pÙ”ß^ÿô @  ïµÕ?d °Ù”»)Sõ @  ï¶Õ?d ðÙ”9¸D+ @  ï·Õ?d 0Ú” V7 @  ï¸Õ?d pÚ”š1Aé @  ï¹Õ?d °Ú”fVÏ @  ïºÕ?d ðÚ”äÇ @  ï»Õ?d 0Û”ƒ(ƒ³ @  ï¼Õ?d pÛ”¹”m @  ï½Õ?d °Û”eÎ8l @  ï¾Õ?d ðÛ”ç_/² @  ï¿Õ?d 0Ü”Píq¢ @  ïÀÕ?d pÜ”Ò|f| @  ïÁÕ?d °Ü”Öürj @  ï Õ?d ðÜ”Tme´ @  ïÃ!Õ?d 0Ý”3‚ÿ @  ïÄ"Õ?d pÝ”±èÈ @  ïÅ#Õ?d °Ý”ÕdDÉ @  ïÆ$Õ?d ðÝ”n2 @  ïÇ %Õ?d 0Þ”víA  @  ïÈ&Õ?d pÞ”ô|VÕ @  ïÉ'Õ?d °Þ”ó @  ïÊ(Õ?d ðÞ”ŠŠ- @  ïË)Õ?d 0ß”íe” @  ïÌ*Õ?d pß”oôƒQ @  ïÍ+Õ?d uÐà”/°ß” ƒ/P @  ïÎ,Õ?d ðß”°Õä[ @  ïÏ -Õ?d Hà”¸Œ6 @  ïÐ .Õ?d ˆà”¡¾è» @  ïÑ/Õ?d Èà”šíÐQ @  ïÒ0Õ?d á”J¥\¹ @  ïÓ1Õ?d Hᔓ]- @  ïÔ2Õ?d ˆá”_f_Ó @  ïÕ3Õ?d Èá”™uæò @  ïÖ4Õ?d â”1F3 @  ï×5Õ?d Hâ”:üã0 @  ïØ6Õ?d ˆâ” áÎ @  ïÙ7Õ?d Èâ”D »È @  ïÚ8Õ?d ã””B7  @  ïÛ9Õ?d H㔡t6´ @  ïÜ:Õ?d ˆã”4J @  ïÝ;Õ?d Èã”G’k @  ïÞ<Õ?d ä”^Ü~d @  ïß=Õ?d Hä”ܶÂ7 @  ïà>Õ?d ˆä”üCÀÉ @  ïá?Õ?d È䔪÷Ôî @  ïâ@Õ?d€ å”ã´è @  ðAÕ?d H唸Ž) @  ð€BÕ?d ˆå”˜áŒ× @  ð€CÕ?d Èå”›»Î @  ð€DÕ?d æ”ÿnÚ @  ð€EÕ?d Hæ”ö€”£ @  ð€FÕ?d ˆæ”Öu–] @  ð€GÕ?d Èæ”FÄ“! @  ð€HÕ?d ç”–ŒÉ @  ð €IÕ?d Hç”fóå° @  ð €JÕ?d ˆç”FçN @  ð €KÕ?d Èç”E\¥‚ @  ð €LÕ?d è”q£)Ÿ @  ð €MÕ?d Hè”ÜÓæ @  ð€NÕ?d ˆè”¡)Ñ @  ð€OÕ?d Èè”ùiˆh @  ð€PÕ?d é”)!€ @  ð€QÕ?d Hé”Ù^þù @  ð€RÕ?d ˆé”ù«ü @  ð€SÕ?d Èé”úñ¾Ë @  ð€TÕ?d ê”gµ  @  ð€UÕ?d Hê”—Êäs @  ð€VÕ?d ˆê”·?æ @  ð€WÕ?d Èê”'Žãñ @  ð€XÕ?d ë”÷Æo @  ð€YÕ?d H딹•` @  ð€ZÕ?d ˆë”'L—ž @  ð€[Õ?d Èë”$ÕR @  ð€\Õ?d ì”=X&] @  ð€]Õ?d Hì”Í'Ü$ @  ð€^Õ?d ˆì”íÒÞÚ @  ð€_Õ?d Èì”9#™Æ @  ð €`Õ?d í”ék. @  ð!€aÕ?d Hí”ïW @  ð"€bÕ?d ˆí”9áí© @  ð#€cÕ?d Èí”:»¯e @  ð$€dÕ?d î”§ÿ¤ @  ð%€eÕ?d Hî”W€õÝ @  ð&€fÕ?d ˆî”wu÷# @  ð'€gÕ?d Èî”çÄò_ @  ð(€hÕ?d ï”7Œ~· @  ð)€iÕ?d Hï”Çó„Î @  ð*€jÕ?d ˆï”ç†0 @  ð+€kÕ?d Èï”ä\Äü @  ð,€lÕ?d ð”Z‚xN @  ð-€mÕ?d Hð”ªý‚7 @  ð.€nÕ?d ˆð”Š€É @  ð/€oÕ?d Èð”ÒHÙ¹ @  ð0€pÕ?d ñ”UQ @  ð1€qÕ?d Hñ”ò¯( @  ð2€rÕ?d ˆñ”ÒŠ­Ö @  ð3€sÕ?d Èñ”ÑÐï @  ð4€tÕ?d ò”L”OÛ @  ð5€uÕ?d Hò”¼ëµ¢ @  ð6€vÕ?d ˆò”œ·\ @  ð7€wÕ?d Èò” ¯²  @  ð8€xÕ?d ó”Üç>È @  ð9€yÕ?d Hó”,˜Ä± @  ð:€zÕ?d ˆó” mÆO @  ð;€{Õ?d Èó”7„ƒ @  ð<€|Õ?d ô”ywŒ @  ð=€}Õ?d Hô”æõ @  ð>€~Õ?d ˆô”Æó  @  ð?€Õ?d Èô”Q“ @  ð@€€Õ?d õ”Ûî @  ðA€Õ?d Hõ”q¤ù— @  ðB€‚Õ?d ˆõ”QQûi @  ðC€ƒÕ?d Èõ”R ¹¥ @  ðD€„Õ?d ö”ÏOd @  ðE€…Õ?d Hö”?0ã @  ðF€†Õ?d ˆö”Åáã @  ðG€‡Õ?d Èö”täŸ @  ðH€ˆÕ?d ÷”_ @  ðQ€‘Õ?d Hù”î‰G @  ðR€’Õ?d ˆù”0‹¹ @  ðS€“Õ?d Èù”3AÉu @  ðT€”Õ?d ú”®i´ @  ðU€•Õ?d Hú”^z“Í @  ðV€–Õ?d ˆú”~‘3 @  ðW€—Õ?d Èú”î>”O @  ðX€˜Õ?d û”>v§ @  ðY€™Õ?d Hû”Î âÞ @  ðZ€šÕ?d ˆû”îüà  @  ð[€›Õ?d Èû”í¦¢ì @  ð\€œÕ?d ü”ôèQã @  ð]€Õ?d Hü”—«š @  ð^€žÕ?d ˆü”$b©d @  ð_€ŸÕ?d Èü”ð“îx @  ð`€ Õ?d ý” Ûb @  ða€¡Õ?d Hý”Ф˜é @  ðb€¢Õ?d ˆý”ðQš @  ðc€£Õ?d Èý”ó ØÛ @  ðd€¤Õ?d þ”nOx @  ðe€¥Õ?d Hþ”ž0‚c @  ðf€¦Õ?d ˆþ”¾Å€ @  ðg€§Õ?d Èþ”.t…á @  ðh€¨Õ?d ÿ”þ<  @  ði€©Õ?d Hÿ”Cóp @  ðj€ªÕ?d ˆÿ”.¶ñŽ @  ðk€uЕ«Õ?d Èÿ”i«ë @  ðl ¬Õ?d •&4 @  ðm ­Õ?d `•Ö`Îc @  ðn ®Õ?d  •ö•Ì @  ðo ¯Õ?d à•®Õ•í @  ðp °Õ?d •~ @  ðq ±Õ?d `•Žâã| @  ðr ²Õ?d  •®á‚ @  ðs ³Õ?d à•­M£N @  ðt ´Õ?d •0  @  ðu µÕ?d `•Àvùö @  ðv ¶Õ?d  •àƒû @  ðw ·Õ?d à•p2þt @  ðx ¸Õ?d • zrœ @  ðy ¹Õ?d `•Pˆå @  ðz ºÕ?d  •pðŠ @  ð{ »Õ?d à•sªÈ× @  ð| ¼Õ?d •jä;Ø @  ð} ½Õ?d `•š›Á¡ @  ð~ ¾Õ?d  •ºnÃ_ @  ð ¿Õ?d à•Óž§ñ @  ð€ ÀÕ?d •Ö+ @  ð ÁÕ?d `•ó©Ñ` @  ð‚ ÂÕ?d  •Ó\Óž @  ðƒ ÃÕ?d à•БR @  ð„ ÄÕ?d •MB1“ @  ð… ÅÕ?d `•½=Ëê @  ð† ÆÕ?d  •ÈÉ @  ð‡ ÇÕ?d à• yÌh @  ðˆ ÈÕ?d •Ý1@€ @  ð‰ ÉÕ?d `•-Nºù @  ðŠ ÊÕ?d  • »¸ @  ð‹ ËÕ?d à•áúË @  ðŒ ÌÕ?d •:vÖ @  ð ÍÕ?d `•ÊaŒ¯ @  ðŽ ÎÕ?d  •ꔎQ @  ð ÏÕ?d à•²Ô×! @  ð ÐÕ?d •bœ[É @  ð‘ ÑÕ?d ` •’ã¡° @  ð’ ÒÕ?d   •²£N @  ð“ ÓÕ?d à •±Lá‚ @  ð” ÔÕ?d •,AC @  ð• ÕÕ?d ` •Üw»: @  ð– ÖÕ?d   •ü‚¹Ä @  ð— ×Õ?d à •l3¼¸ @  ð˜ ØÕ?d •¼{0P @  ð™ ÙÕ?d ` •LÊ) @  ðš ÚÕ?d   •lñÈ× @  ð› ÛÕ?d à •o«Š @  ðœ ÜÕ?d •våy @  ð ÝÕ?d ` •†šƒm @  ðž ÞÕ?d   •¦o“ @  ðŸ ßÕ?d à •ržÆ @  ð  àÕ?d •¢ÖJg @  ð¡ áÕ?d ` •R©° @  ð¢ âÕ?d   •r\²à @  ð£ ãÕ?d à •qð, @  ð¤ äÕ?d •ìBPí @  ð¥ åÕ?d `•=ª” @  ð¦ æÕ?d  •<Ȩj @  ð§ çÕ?d à•¬y­ @  ð¨ èÕ?d •|1!þ @  ð© éÕ?d `•ŒNÛ‡ @  ðª êÕ?d  •¬»Ùy @  ð« ëÕ?d à•¯á›µ @  ð¬ ìÕ?d •?' @  ð­ íÕ?d `•á@Ý~ @  ð® îÕ?d  •Áµß€ @  ð¯ ïÕ?d à•™õ†ð @  ð° ðÕ?d •I½  @  ð± ñÕ?d `•¹Âða @  ð² òÕ?d  •™7òŸ @  ð³ óÕ?d à•šm°S @  ð´ ôÕ?d •)’ @  ðµ õÕ?d `•÷Vêë @  ð¶ öÕ?d  •×£è @  ð· ÷Õ?d à•Gíi @  ð¸ øÕ?d •—Za @  ð¹ ùÕ?d `•g%›ø @  ðº úÕ?d  •GЙ @  ð» ûÕ?d à•DŠÛÊ @  ð¼ üÕ?d •]Ä(Å @  ð½ ýÕ?d `•­»Ò¼ @  ð¾ þÕ?d  •NÐB @  ð¿ ÿÕ?d à•×k°f @  ðÀ Ö?d •#<Ž @  ðÁ Ö?d `•÷\Æ÷ @  ð Ö?d  •×©Ä  @  ðà Ö?d à•Ôó†Å @  ðÄ Ö?d •I·& @  ðÅ Ö?d `•¹ÈÜ} @  ðÆ Ö?d  •™=Þƒ @  ðÇ Ö?d à• ŒÛÿ @  ðÈ Ö?d •ÙÄW @  ðÉ  Ö?d `•)»­n @  ðÊ  Ö?d  • N¯ @  ðË  Ö?d à• í\ @  ðÌ  Ö?d •>ëaA @  ðÍ  Ö?d `•Δ›8 @  ðÎ Ö?d  •îa™Æ @  ðÏ Ö?d à•¶!À¶ @  ðÐ Ö?d •fiL^ @  ðÑ Ö?d `•–¶' @  ðÒ Ö?d  •¶ã´Ù @  ðÓ Ö?d à•µ¹ö @  ðÔ Ö?d •(ýVÔ @  ðÕ Ö?d `•Ø‚¬­ @  ðÖ Ö?d  •øw®S @  ð× Ö?d à•hÆ«/ @  ðØ Ö?d •¸Ž'Ç @  ðÙ Ö?d `•Hñݾ @  ðÚ Ö?d  •hß@ @  ðÛ Ö?d à•k^Œ @  ðÜ Ö?d •rnƒ @  ðÝ Ö?d `•‚o”ú @  ðÞ Ö?d  •¢š– @  ðß Ö?d à•vkÑ @  ðà  Ö?d •¦#]ð @  ðá !Ö?d `•V\§‰ @  ðâ "Ö?d€  •j¹Ñ @  ñ #Ö?d à•àq³4 @  ñ $Ö?d •}5õ @  ñ %Ö?d `•Ha @  ñ &Ö?d  •höŸ @  ñ 'Ö?d à•6õJ™ @  ñ (Ö?d •æ½Æq @  ñ )Ö?d `•Øpcr @  ñ *Ö?d  •ø…aŒuÐ • @  ñ +Ö?d à•Qx @  ñ ,Ö?d 8 •vZÚ @  ñ -Ö?d x •ClÛŠ @  ñ .Ö?d ¸ •c™Ùt @  ñ /Ö?d ø •XÊáž @  ñ0Ö?d 8!•ˆ‚mv @  ñ1Ö?d x!•îö• @  ñ2Ö?d ¸!•;ôk @  ñ3Ö?d ø!•ýMJ @  ñ4Ö?d 8"•`Lí‹ @  ñ5Ö?d x"•Uzì @  ñ6Ö?d ¸"•uîá @  ñ7Ö?d ø"•+Œ´ç @  ñ8Ö?d 8#•ûÄ8 @  ñ9Ö?d x#•Å  @  ñ:Ö?d ¸#•åüŸò @  ñ;Ö?d ø#•#ï&Ó @  ñ<Ö?d 8$•:¡ÕÜ @  ñ=Ö?d x$•—ÔH @  ñ>Ö?d ¸$•/bÖ¶ @  ñ?Ö?d ø$•yÖ‘ @  ñ@Ö?d 8%•©žNy @  ñAÖ?d x%•+ôò* @  ñ BÖ?d ¸%• ðÔ @  ñ!CÖ?d ø%•ÍIõ @  ñ"DÖ?d 8&•PVé4 @  ñ#EÖ?d x&•e`è  @  ñ$FÖ?d ¸&•E•ê^ @  ñ%GÖ?d ø&•–°X @  ñ&HÖ?d 8'•ËÞ<° @  ñ'IÖ?d x'•õ™³ @  ñ(JÖ?d ¸'•Õæ›M @  ñ)KÖ?d ø'•õ"l @  ñ*LÖ?d 8(•' ®q @  ñ+MÖ?d x(•<¯å @  ñ,NÖ?d ¸(•2É­ @  ñ-OÖ?d ø(• š•ñ @  ñ.PÖ?d 8)•ÙÒ @  ñ/QÖ?d x)•J¾‚ú @  ñ0RÖ?d ¸)•jK€ @  ñ1SÖ?d ø)•¬X9% @  ñ2TÖ?d 8*•1™ä @  ñ3UÖ?d x*•*˜p @  ñ4VÖ?d ¸*•$ßšŽ @  ñ5WÖ?d ø*•zÜÀˆ @  ñ6XÖ?d 8+•ª”L` @  ñ7YÖ?d x+•”Yéc @  ñ8ZÖ?d ¸+•´¬ë @  ñ9[Ö?d ø+•r¿R¼ @  ñ:\Ö?d 8,•kñ¡³ @  ñ;]Ö?d x,•^Ç ' @  ñ<^Ö?d ¸,•~2¢Ù @  ñ=_Ö?d ø,•ØÖ£ï @  ñ>`Ö?d 8-•ž/ @  ñ?aÖ?d x-•$ó•Æ @  ñ@bÖ?d ¸-•—8 @  ñAcÖ?d ø-•Â. @  ñBdÖ?d 8.•_QŽØ @  ñCeÖ?d x.•jgL @  ñDfÖ?d ¸.•J’² @  ñEgÖ?d ø.•‘×´ @  ñFhÖ?d 8/•ÄÙ[\ @  ñGiÖ?d x/•úþ_ @  ñHjÖ?d ¸/•Úáü¡ @  ñIkÖ?d ø/•òE€ @  ñJlÖ?d 80•¢,ù2 @  ñKmÖ?d x0•—ø¦ @  ñLnÖ?d ¸0•·ïúX @  ñMoÖ?d ø0•Œ¼Â² @  ñNpÖ?d 81•\ôNZ @  ñOqÖ?d x1•Ϙչ @  ñPrÖ?d ¸1•ïm×G @  ñQsÖ?d ø1•)~nf @  ñRtÖ?d 82•´:Χ @  ñSuÖ?d x2• Ï3 @  ñTvÖ?d ¸2•¡ùÍÍ @  ñUwÖ?d ø2•ÿú—Ë @  ñVxÖ?d 83•/²# @  ñWyÖ?d x3•¾  @  ñXzÖ?d ¸3•1мÞ @  ñY{Ö?d ø3•÷™ÿ @  ñZ|Ö?d 84•î×öð @  ñ[}Ö?d x4•Ûá÷d @  ñ\~Ö?d ¸4•ûõš @  ñ]Ö?d ø4•°fµ/ @  ñ^€Ö?d 85•`.9Ç @  ñ_Ö?d x5•âD…” @  ñ`‚Ö?d ¸5•±‡j @  ñaƒÖ?d ø5•¢>K @  ñb„Ö?d 86•™æžŠ @  ñc…Ö?d x6•¬ÐŸ @  ñd†Ö?d ¸6•Œ%à @  ñe‡Ö?d ø6•Ò&Çæ @  ñfˆÖ?d 87•nK @  ñg‰Ö?d x7•<£î  @  ñhŠÖ?d ¸7•Vìó @  ñi‹Ö?d ø7•ÚEUÒ @  ñjŒÖ?d 88•îºÙÏ @  ñkÖ?d x8•ÛŒØ[ @  ñlŽÖ?d ¸8•ûyÚ¥ @  ñmÖ?d ø8•À*âO @  ñnÖ?d 89•bn§ @  ño‘Ö?d x9•ƒõD @  ñp’Ö?d ¸9•£û÷º @  ñq“Ö?d ø9•eèN› @  ñr”Ö?d 8:•ø¬îZ @  ñs•Ö?d x:•ÍšïÎ @  ñt–Ö?d ¸:•íoí0 @  ñu—Ö?d ø:•³l·6 @  ñv˜Ö?d 8;•c$;Þ @  ñw™Ö?d x;•]éžÝ @  ñxšÖ?d ¸;•}œ# @  ñy›Ö?d ø;•»% @  ñzœÖ?d 8<•¢AÖ  @  ñ{Ö?d x<•—w×™ @  ñ|žÖ?d ¸<•·‚Õg @  ñ}ŸÖ?d ø<•fÔQ @  ñ~ Ö?d 8=•Á.X¹ @  ñ¡Ö?d x=•ÒI @  ñ€¢Ö?d ¸=•.àз @  ñ£Ö?d ø=•èói– @  ñ‚¤Ö?d 8>•u·ÉW @  ñƒ¥Ö?d x>•@Èà @  ñ„¦Ö?d ¸>•`tÊ= @  ñ…§Ö?d ø>•>w; @  ñ†¨Ö?d 8?•î?Ó @  ñ‡©Ö?d x?•Ðò¹Ð @  ñˆªÖ?duÐ@•7 ¸?•ð». @  ñ‰«Ö?d ø?•6 @  ñЬÖ?d P@•õ¸¸3 @  ñ‹­Ö?d @•b꬇ @  ñŒ®Ö?d Ð@•à{»Y @  ñ¯Ö?d A•‰ñ… @  ñްÖ?d PA• `[ @  ñ±Ö?d A•:h˜ @  ñ²Ö?d ÐA•¸ù–F @  ñ‘³Ö?d B•a?˜x @  ñ’´Ö?d PB•㮦 @  ñ“µÖ?d B•tü› @  ñ”¶Ö?d ÐB•ömŒÌ @  ñ•·Ö?d C•ú·Mü @  ñ–¸Ö?d PC•x&Z" @  ñ—¹Ö?d C•äê @  ñ˜ºÖ?d ÐC•fýß @  ñ™»Ö?d D•;Ò / @  ñš¼Ö?d PD•¹C·ñ @  ñ›½Ö?d D•.£E @  ñœ¾Ö?d ÐD•¬€´› @  ñ¿Ö?d E•¨í;Š @  ñžÀÖ?d PE•*|,T @  ñŸÁÖ?d E• r…' @  ñ ÂÖ?d ÐE•ˆã’ù @  ñ¡ÃÖ?d F•Q%œÇ @  ñ¢ÄÖ?d PF•Ó´‹ @  ñ£ÅÖ?d F•D柭 @  ñ¤ÆÖ?d ÐF•Æwˆs @  ñ¥ÇÖ?d G•Ê­IC @  ñ¦ÈÖ?d PG•H<^ @  ñ§ÉÖ?d G•Ô•î¾ @  ñ¨ÊÖ?d ÐG•Vù` @  ñ©ËÖ?d H•&yÛ‚ @  ñªÌÖ?d PH•¤èÌ\ @  ñ«ÍÖ?d H•3ºØè @  ñ¬ÎÖ?d ÐH•±+Ï6 @  ñ­ÏÖ?d I•Ø¡lê @  ñ®ÐÖ?d PI•Z0{4 @  ñ¯ÑÖ?d I•k8õ÷ @  ñ°ÒÖ?d ÐI•é©â) @  ñ±ÓÖ?d J•0oì @  ñ²ÔÖ?d PJ•²þûÉ @  ñ³ÕÖ?d J•%¬ï} @  ñ´ÖÖ?d ÐJ•§=ø£ @  ñµ×Ö?d K•«ç9“ @  ñ¶ØÖ?d PK•)v.M @  ñ·ÙÖ?d K•µßžn @  ñ¸ÚÖ?d ÐK•7N‰° @  ñ¹ÛÖ?d L•j‚Ô@ @  ñºÜÖ?d PL•èÞ @  ñ»ÝÖ?d L•A×* @  ñ¼ÞÖ?d ÐL•ýÐÀô @  ñ½ßÖ?d M• íZô @  ñ¾àÖ?d PM•‹|M* @  ñ¿áÖ?d M•uâË @  ñÀâÖ?d ÐM•‡äõ @  ñÁãÖ?d N•^"û+ @  ñÂäÖ?d PN•ܳìõ @  ñÃåÖ?d N•KáøA @  ñÄæÖ?d ÐN•ÉpïŸ @  ñÅçÖ?d O•Ū.¯ @  ñÆèÖ?d PO•G;9q @  ñÇéÖ?d O•Û’‰R @  ñÈêÖ?d ÐO•YžŒ @  ñÉëÖ?d P•£_ŒÁ @  ñÊìÖ?d PP•!Λ @  ñËíÖ?d P•¶œ« @  ñÌîÖ?d ÐP•4 ˜u @  ñÍïÖ?d Q•]‡;© @  ñÎðÖ?d PQ•ß,w @  ñÏñÖ?d Q• @  ñÐòÖ?d ÐQ•lµj @  ñÑóÖ?d R•µI»T @  ñÒôÖ?d PR•7جŠ @  ñÓõÖ?d R• Š¸> @  ñÔöÖ?d ÐR•"¯à @  ñÕ÷Ö?d S•² @  ñÖ øÖ?d PS••—¥Û @  ñ× ùÖ?d S• >ø @  ñØ úÖ?d ÐS•‹¯& @  ñÙ ûÖ?d T•Öc_Ö @  ñÚ üÖ?d PT•TòH @  ñÛ ýÖ?d T•à\¼ @  ñÜ þÖ?d ÐT•A1Kb @  ñÝ ÿÖ?d U•'ýÅí @  ñÞ ×?d PU•¥lÒ3 @  ñß ×?d U•…b{@ @  ñà ×?d ÐU•ólž @  ñá ×?d V•Þ5b  @  ñâ ×?d€ PV•ã‚~ @  ò ×?d V•ëðÞã @  ò ×?d ÐV•iaÉ= @  ò ×?d W• òóà @  ò ×?d PW•"cä> @  ò  ×?d W•px g @  ò  ×?d ÐW•òé¹ @  ò  ×?d X•L&a! @  ò  ×?d PX•ηvÿ @  ò  ×?d X•œ¬™¦ @  ò ×?d ÐX•=Žx @  ò ×?d Y•²þÖI @  ò ×?d PY•0oÁ— @  ò ×?d Y•bt.Î @  ò ×?d ÐY•àå9 @  ò ×?d Z•Z0V´ @  ò ×?d PZ•Ø¡Aj @  ò ×?d Z•Šº®3 @  ò ×?d ÐZ•+¹í @  ò ×?d [•Á¸ƒ0 @  ò ×?d P[•C)”î @  ò ×?d [•2{· @  ò ×?d Ð[•“£li @  ò ×?d \•Ýnã @  ò ×?d P\•‚Ly= @  ò ×?d \•ÐW–d @  ò ×?d Ð\•Rƺ @  ò ×?d ]•c²àW @  ò  ×?d P]•á#÷‰ @  ò !×?d ]•³8Ð @  ò "×?d Ð]•1© @  ò #×?d ^•šzG @  ò $×?d P^•ëPÄ @  ò! %×?d ^•Jð¿ @  ò" &×?d Ð^•Èa¨C @  ò# '×?d _•ò’ž @  ò$ (×?d P_•ƒc…@ @  ò% )×?d _•Ñxj @  òuÐ`•& *×?d Ð_•j.¡ @  ò'+×?d (`•^æå @  ò(,×?d h`•ÜwòÑ @  ò)-×?d ¨`•Žlˆ @  ò*.×?d è`• ý V @  ò+/×?d (a• >Rg @  ò,0×?d ha•"¯E¹ @  ò-1×?d ¨a•p´ªà @  ò.2×?d èa•ò%½> @  ò/3×?d (b•HðÒš @  ò04×?d hb•ÊaÅD @  ò15×?d ¨b•˜z* @  ò26×?d èb•ë=à @  ò37×?d (c•Óx @  ò48×?d hc•QéÀ @  ò59×?d ¨c•òÿ™ @  ò6:×?d èc•cèG @  ò7;×?d (d•êÍ @  ò8<×?d hd•Œý @  ò9=×?d ¨d•—J @  ò:>×?d èd•@” @  ò;?×?d (e•"qh @  ò<@×?d he•³f¶ @  ò=A×?d ¨e•Q¨‰ï @  ò>B×?d èe•Ó9ž1 @  ò?C×?d (f•Öíз @  ò@D×?d hf•T|Çi @  òAE×?d ¨f•g(0 @  òBF×?d èf•„ö?î @  òCG×?d (g•Me3 @  òDH×?d hg•Ïôí @  òEI×?d ¨g•ïý´ @  òFJ×?d èg•~êj @  òGK×?d (h•¡±—ò @  òHL×?d hh•# €, @  òIM×?d ¨h•q;ou @  òJN×?d èh•óªx« @  òKO×?d (i•_i š @  òLP×?d hi•Ýø7D @  òMQ×?d ¨i•ãØ @  òNR×?d èi• rÏà @  òOS×?d (j•·§ g @  òPT×?d hj•56·¹ @  òQU×?d ¨j•g-Xà @  òRV×?d èj•å¼O> @  òSW×?d (k•,/uã @  òTX×?d hk•®¾b= @  òUY×?d ¨k•ü¥d @  òVZ×?d èk•~4šº @  òW[×?d (l•íJ˜0 @  òX\×?d hl•oÛî @  òY]×?d ¨l•=À`· @  òZ^×?d èl•¿Qwi @  ò[_×?d (m•Ž%„ @  ò\`×?d hm• ´Z @  ò]a×?d ¨m•^¯î @  ò^b×?d èm•Ü>ùÝ @  ò_c×?d (n•wí±É @  ò`d×?d hn•õ|¦ @  òae×?d ¨n•§gIN @  òbf×?d èn•%ö^ @  òcg×?d (o•ìedM @  òdh×?d ho•nôs“ @  òei×?d ¨o•<ïœÊ @  òfj×?d èo•¾~‹ @  ògk×?d (p•ŠÆ# @  òhl×?d hp•Ñý @  òim×?d ¨p•Z>¤ @  òjn×?d èp•Ø‹)z @  òko×?d (q•tHqK @  òlp×?d hq•öÙf• @  òmq×?d ¨q•¤Â‰Ì @  ònr×?d èq•&Sž @  òos×?d (r•œ†ñ¶ @  òpt×?d hr•æh @  òqu×?d ¨r•L 1 @  òrv×?d èr•Îï @  òsw×?d (s•$2 @  òtx×?d hs•…Ÿ3ì @  òuy×?d ¨s•ׄܵ @  òvz×?d ès•UËk @  òw{×?d (t•ÆkÉá @  òx|×?d ht•DúÞ? @  òy}×?d ¨t•á1f @  òz~×?d èt•”p&¸ @  ò{×?d (u•H’Ö @  ò|€×?d hu•Ê @  ò}×?d ¨u•˜þQ @  ò~‚×?d èu•‰é @  òƒ×?d (v•ü —8 @  ò€„×?d hv•~š€æ @  ò…×?d ¨v•,o¿ @  ò‚†×?d èv•®xa @  òƒ‡×?d (w•gƒB¼ @  ò„ˆ×?d hw•åUb @  ò…‰×?d ¨w•· º; @  ò†Š×?d èw•5˜­å @  ò‡‹×?d (x•‹WÐ} @  òˆŒ×?d hx• ÆÇ£ @  ò‰×?d ¨x•[Ý(ú @  òŠŽ×?d èx•ÙL?$ @  ò‹×?d (y•ug @  òŒ×?d hy•÷pË @  ò‘×?d ¨y•¥Ÿ’ @  òŽ’×?d èy•'”ˆL @  ò“×?d (z•Açè @  ò”×?d hz•Ðð6 @  ò‘•×?d ¨z•MËo @  ò’–×?d èz•ÏZ± @  ò“—×?d ({•É2l @  ò”˜×?d h{•„X%² @  ò•™×?d ¨{•ÖCÊë @  ò–š×?d è{•TÒÝ5 @  ò—›×?d (|•Ǭ߿ @  ò˜œ×?d h|•E=Èa @  ò™×?d ¨|•&'8 @  òšž×?d è|••·0æ @  ò›Ÿ×?d (}•¤ÃQ  @  òœ ×?d h}•&RFÕ @  ò¡×?d ¨}•tI©Œ @  òž¢×?d è}•öؾR @  òŸ£×?d (~•] öF @  ò ¤×?d h~•ߚᘠ@  ò¡¥×?d ¨~•Á @  ò¢¦×?d è~• @  ò£§×?d (•ƃ# @  ò¤¨×?d h•D4 @  ò¥©×?d ¨•uЀ•' ÛE @  ò¦ª×?d è•”˜Ì› @  ò§«×?d @€•pßj @  ò¨¬×?d €€•PãÝ” @  ò©­×?d À€• œ'í @  òª®×?d •pÔ« @  ò«¯×?d @•ŽÎh @  ò¬°×?d €•®;jü @  ò­±×?d À•^D… @  ò®²×?d ‚•Ã0D @  ò¯³×?d @‚•fèÿ @  ò°´×?d €‚•Fõê @  ò±µ×?d À‚•¶Šx @  ò²¶×?d ƒ•fœ @  ò³·×?d @ƒ•ýˆ={ @  ò´¸×?d €ƒ•Ý}?… @  òµ¹×?d Àƒ•-Åü @  ò¶º×?d „•4L6ó @  ò·»×?d @„•<íШ @  ò¸¼×?d €„•%߃ @  ò¹ ½×?d À„•Õ ôú @  òº ¾×?d …•èx @  ò» ¿×?d @…•–—Ø @  ò¼ À×?d €…•¶à•& @  ò½ Á×?d À…•FŸo_ @  ò¾ Â×?d †•ÛÛÏž @  ò¿ Ã×?d @†•ÁÚ6 @  òÀ Ä×?d €†•á/4ù @  òÁ Å×?d À†•P΀ @  ò Æ×?d ‡•ÁBh @  òà Ç×?d @‡•ZRム@  òÄ È×?d €‡•z§á} @  òÅ É×?d À‡•ŠØ @  òÆ Ê×?d ˆ•¾'— @  òÇ Ë×?d @ˆ•¶†qB @  òÈ Ì×?d €ˆ•–ss¼ @  òÉ Í×?d Àˆ•f ‰Å @  òÊ Î×?d ‰•¶D- @  òË Ï×?d @‰•H^Æ* @  òÌ Ð×?d €‰•h«ÄÔ @  òÍ Ñ×?d À‰•˜Ô>­ @  òÎ Ò×?d Š•žl @  òÏ Ó×?d @Š• F× @  òÐ Ô×?d €Š•€eD) @  òÑ Õ×?d ÀŠ•p¾P @  òÒ Ö×?d ‹• R2¸ @  òÓ ××?d @‹•;“S @  òÔ Ø×?d €‹•í‘­ @  òÕ Ù×?d À‹•ë’kÔ @  òÖ Ú×?d Œ•òܘÛ @  ò× Û×?d @Œ•ú}~€ @  òØ Ü×?d €Œ•Úˆ|~ @  òÙ Ý×?d ÀŒ•*÷† @  òÚ Þ×?d •ú¿ ï @  òÛ ß×?d @•™ð4 @  òÜ à×?d €•¹çòÊ @  òÝ á×?d À•I˜³ @  òÞ â×?d Ž•Ôܨr @  òß ã×?d @Ž•`ÚWy @  òà ä×?d €Ž•@/U‡ @  òá å×?d ÀŽ•°P¯þ @  òâ æ×?d€ •Û?° @  ó ç×?d @•nÐÖr @  ó è×?d €•N%ÔŒ @  ó é×?d À•{Õ @  ó ê×?d •ÅÍiª @  ó ë×?d @•ÞЋ @  ó ì×?d €•#+Òu @  ó í×?d À•æwv @  ó î×?d ‘•Í®ûž @  ó ï×?d @‘•öýÃt @  ó ð×?d €‘•ÖÁŠ @  ó ñ×?d À‘•ã>À @  ó ò×?d ’•~z`ß @  ó ó×?d @’•¸iÙþ @  ó ô×?d €’•˜œÛ @  ó õ×?d À’• ð@ã @  ó ö×?d “•Û¸Ì  @  ó ÷×?d @“•…»–  @  ó ø×?d €“•¥N”ó @  ó ù×?d À“•x•g @  ó ú×?d ”•‰6fh @  ó û×?d @”•O%ßI @  ó ü×?d €”•oÐÝ· @  ó ý×?d À”•Qx´ @  ó þ×?d ••Uô\ @  ó ÿ×?d @••PsÐ  @  ó Ø?d €••p†Òô @  ó Ø?d À••E°Ó` @  ó Ø?d –•Øôs¡ @  ó Ø?d @–•çÊ€ @  ó Ø?d €–•>È~ @  ó Ø?d À–•¼xt- @  ó Ø?d —•l0øÅ @  ó! Ø?d @—•23¢Ã @  ó" Ø?d €—•Æ = @  ó#  Ø?d À—•'ð¡© @  ó$  Ø?d ˜•-´ @  ó%  Ø?d @˜•Õ”• @  ó&  Ø?d €˜•õé–k @  ó'  Ø?d À˜•Ë$3h @  ó( Ø?d ™•l¿€ @  ó) Ø?d @™• ?‡j @  ó* Ø?d €™•Ê…” @  ó+ Ø?d À™•5ü„ @  ó, Ø?d 𕍏$Á @  ó- Ø?d @š•n«à @  ó. Ø?d €š•N^Ÿ @  ó/ Ø?d Àš•Ý2ý @  ó0 Ø?d ›• zˆ @  ó1 Ø?d @›•SyÒ @  ó2 Ø?d €›•sŒÐí @  ó3 Ø?d À›•FºÑy @  ó4 Ø?d œ•_ô"v @  ó5 Ø?d @œ•™ç›W @  ó6 Ø?d €œ•¹™© @  ó7 Ø?d Àœ•‡ß<ª @  ó8 Ø?d •W—°B @  ó9 Ø?d @•ñs±t @  ó:  Ø?d €•ц³Š @  ó; !Ø?d À•ä°² @  ó< "Ø?d ž•yôß @  ó= #Ø?d @ž•¿ç«þ @  ó> $Ø?d €ž•Ÿ© @  ó? %Ø?d Àž•³Á @  ó@ &Ø?d Ÿ•c7Ÿ) @  óA 'Ø?d @Ÿ•=4Å/ @  óB (Ø?d €Ÿ•ÁÇÑ @  óC )ØuР•?d ÀŸ•(÷ÆE @  óD *Ø?d  •`;Äö @  óE+Ø?d X •¦(}× @  óF,Ø?d ˜ •†Ý) @  óG-Ø?d Ø •¸Ú* @  óH.Ø?d ¡•hXV @  óI/Ø?d X¡•S n( @  óJ0Ø?d ˜¡•sþlÖ @  óK1Ø?d Ø¡•FÈmB @  óL2Ø?d ¢•ی̓ @  óM3Ø?d X¢•Ÿt¢ @  óN4Ø?d ˜¢•=jv\ @  óO5Ø?d Ø¢•®í¿ @  óP6Ø?d £•~NaW @  óQ7Ø?d X£• M;Q @  óR8Ø?d ˜£•¸9¯ @  óS9Ø?d Ø£•5Ž8; @  óT:Ø?d ¤•,ÀË4 @  óU;Ø?d X¤•êÓr @  óV<Ø?d ˜¤•Ê&pë @  óW=Ø?d ؤ•ôëÕè @  óX>Ø?d ¥•$£Y @  óY?Ø?d X¥•rM' @  óZ@Ø?d ˜¥•RâOÙ @  ó[AØ?d Ø¥•gÔNM @  ó\BØ?d ¦•úîŒ @  ó]CØ?d X¦•<ƒW­ @  ó^DØ?d ˜¦•vUS @  ó_EØ?d ئ•žé @  ó`FØ?d §•NTeè @  óaGØ?d X§•W?î @  óbHØ?d ˜§•0¢= @  ócIØ?d ا•”<„ @  ódJØ?d ¨•1k°™ @  óeKØ?d X¨•÷x ¸ @  ófLØ?d ˜¨•× F @  ógMØ?d ب•é@®E @  óhNØ?d ©•9"­ @  óiOØ?d X©•[G @  ójPØ?d ˜©•"®¹ @  ókQØ?d Ø©•˜- @  ólRØ?d ª•ŠÜ¹ì @  ómSØ?d Xª•LÏÍ @  ónTØ?d ˜ª•l:3 @  óoUØ?d ت•ÿV™Ð @  ópVØ?d «•/8 @  óqWØ?d X«•qO> @  órXØ?d ˜«•QèMÀ @  ósYØ?d Ø«•dÞLT @  ótZØ?d ¬•}¿[ @  óu[Ø?d X¬•»ƒz @  óv\Ø?d ˜¬•›v„ @  ów]Ø?d ج•¥»¡‡ @  óx^Ø?d ­•uó-o @  óy_Ø?d X­•Ó,Y @  óz`Ø?d ˜­•óâ.§ @  ó{aØ?d Ø­•ÆÔ/3 @  ó|bØ?d ®•[ò @  ó}cØ?d X®•ƒ6Ó @  ó~dØ?d ˜®•½v4- @  óeØ?d Ø®•rM¾Ý @  ó€fØ?d ¯•¢25 @  ógØ?d X¯•üh3 @  ó‚hØ?d ˜¯•ÜójÍ @  óƒiØ?d د•éÅkY @  ó„jØ?d °•W×ë @  ó…kØ?d X°•‘nÊ @  ó†lØ?d ˜°•±ýl4 @  ó‡mØ?d ذ•0É7 @  óˆnØ?d ±•_xEß @  ó‰oØ?d X±•d+}5 @  óŠpØ?d ˜±•DÞË @  ó‹qØ?d ر•qè~_ @  óŒrØ?d ²•ì¬Þž @  ósØ?d X²•*¿g¿ @  óŽtØ?d ˜²• JeA @  óuØ?d ز•™&þ¢ @  óvØ?d ³•InrJ @  ó‘wØ?d X³•m(L @  ó’xØ?d ˜³•7˜*² @  ó“yØ?d س•®+& @  ó”zØ?d ´•àØ) @  ó•{Ø?d X´•Ýóa @  ó–|Ø?d ˜´•ýcö @  ó—}Ø?d Ø´•ÃËÆõ @  ó˜~Ø?d µ•ƒJ @  ó™Ø?d Xµ•Xñ ¨ @  óš€Ø?d ˜µ•xV @  ó›Ø?d ص•M2  @  óœ‚Ø?d ¶•Ðv© @  óƒØ?d X¶•e" @  óž„Ø?d ˜¶•6Ü @  óŸ…Ø?d ض•´ú® @  ó †Ø?d ·•d²"g @  ó¡‡Ø?d X·•:±xa @  ó¢ˆØ?d ˜·•DzŸ @  ó£‰Ø?d Ø·•/r{  @  ó¤ŠØ?d ¸•÷ @  ó¥‹Ø?d X¸•ÝžN7 @  ó¦ŒØ?d ˜¸•ýkLÉ @  ó§Ø?d ظ•æéÊ @  ó¨ŽØ?d ¹•îe" @  ó©Ø?d X¹•(½]È @  óªØ?d ˜¹•H_6 @  ó«‘Ø?d ع•=~^¢ @  ó¬’Ø?d º• :þc @  ó­“Ø?d Xº•f)GB @  ó®”Ø?d ˜º•FÜE¼ @  ó¯•Ø?d غ•Õ°Þ_ @  ó°–Ø?d »•øR· @  ó±—Ø?d X»•[û± @  ó²˜Ø?d ˜»•{ O @  ó³™Ø?d Ø»•N8 Û @  ó´šØ?d ¼•WvøÔ @  óµ›Ø?d X¼•‘eAõ @  ó¶œØ?d ˜¼•±C  @  ó·Ø?d ؼ•]æ @  ó¸žØ?d ½•_jà @  ó¹ŸØ?d X½•ùñkÖ @  óº Ø?d ˜½•Ùi( @  ó»¡Ø?d ؽ•ì2h¼ @  ó¼¢Ø?d ¾•qvÈ} @  ó½£Ø?d X¾•·eq\ @  ó¾¤Ø?d ˜¾•—s¢ @  ó¿¥Ø?d ؾ•»ýÉc @  óÀ¦Ø?d ¿•kµE‹ @  óÁ§Ø?d X¿•5¶ @  ó¨Ø?d ˜¿•Cs @uÐÀ•  óéØ?d Ø¿• uç @  óĪØ?d 0À•D…Mµ @  óÅ«Ø?d pÀ•‚–ô” @  óƬØ?d °À•¢cöj @  óÇ­Ø?d ðÀ•œ®Si @  óÈ®Ø?d 0Á•Læß @  óɯØ?d pÁ•wµçk @  óʰØ?d °Á•W@å• @  ó˱Ø?d ðÁ•bvä @  ó̲Ø?d 0•ÿ2DÀ @  óͳØ?d p•9!ýá @  óδØ?d °Â•Ôÿ @  óϵØ?d ð•Џdü @  óжØ?d 0ÕZðè @  óÑ·Ø?d pÕó² @  óÒ¸Ø?d °Ã•$°ì @  óÓ¹Ø?d ðÕ0±x @  óÔºØ?d 0Ä•~Bw @  óÕ»Ø?d pÄ•ÎmûV @  óÖ¼Ø?d °Ä•î˜ù¨ @  ó×½Ø?d ðÄ•ÐU\« @  óؾØ?d 0Å•ÐC @  óÙ¿Ø?d pÅ•V©Äd @  óÚÀØ?d °Å•v\Æš @  óÛÁØ?d ðÅ•CjÇ @  óÜÂØ?d 0Æ•Þ.gÏ @  óÝÃØ?d pÆ•=Þî @  óÞÄØ?d °Æ•8ÈÜ @  óßÅØ?d ðÆ•º¢`C @  óàÆØ?d 0Ç•jêì« @  óáÇØ?d pÇ•4é¶­ @  óâÈØ?d€ °Ç•’Jê @  ôÉØ?d ðÇ•F=UW @  ôÊØ?d 0È•rÂÙJ @  ôËØ?d pÈ•q˜›† @  ôÌØ?d °È•Qm™x @  ôÍØ?d ðÈ•¡c @  ôÎØ?d 0É•qZïé @  ôÏØ?d pÉ•„»ˆy @  ôÐØ?d °É•¤NЇ @  ô ÑØ?d ðÉ•T1pþ @  ô ÒØ?d 0Ê•ÉuÐ? @  ô ÓØ?d pÊ•Ê/’ó @  ô ÔØ?d °Ê•êÚ  @  ô ÕØ?d ðÊ•¥jt @  ôÖØ?d 0Ë•Êíæœ @  ôר?d pË•÷ýÝ @  ôØØ?d °Ë•×ßþ @  ôÙØ?d ðË•'w%‡ @  ôÚØ?d 0Ì•>9Öˆ @  ôÛØ?d pÌ•=c”D @  ôÜØ?d °Ì•––º @  ôÝØ?d ðÌ•íélà @  ôÞØ?d 0Í•=¡à+ @  ôߨ?d pÍ•U÷¾g @  ôàØ?d °Í•u¼™ @  ôáØ?d ðÍ•…}Fà @  ôâØ?d 0Ε9æ! @  ôãØ?d pΕc¤í @  ôäØ?d °Î•;–¦ @  ôåØ?d ðΕËé\j @  ôæØ?d 0Ï•¡Ð‚ @  ôçØ?d pÏ•7·Ì® @  ô èØ?d °Ï•BÎP @  ô!éØ?d ðÏ•ç=4) @  ô"êØ?d 0ЕY㈛ @  ô#ëØ?d pЕZ¹ÊW @  ô$ìØ?d °Ð•zLÈ© @  ô%íØ?d ðЕŠ32Ð @  ô&îØ?d 0Ñ•Z{¾8 @  ô'ïØ?d pÑ•¯šÙ¨ @  ô(ðØ?d °Ñ•oÛV @  ô)ñØ?d ðÑ•!/ @  ô*òØ?d 0Ò•âTî @  ô+óØ?d pÒ•áÃ" @  ô,ôØ?d °Ò•ÁûÁÜ @  ô-õØ?d ðÒ•1„;¥ @  ô.öØ?d 0Ó•áÌ·M @  ô/÷Ø?d pÓ•ÜÜŒÑ @  ô0øØ?d °Ó•ü)Ž/ @  ô1ùØ?d ðÓ• VtV @  ô2úØ?d 0Ô•‡Y @  ô3ûØ?d pÔ•BÅ• @  ô4üØ?d °Ô•6·Çk @  ô5ýØ?d ðÔ•ÆÈ= @  ô6þØ?d 0Õ•€±ú @  ô7ÿØ?d pÕ•ì'û9 @  ô8Ù?d °Õ•ÌÒùÇ @  ô9Ù?d ðÕ•<­¾ @  ô:Ù?d 0Ö•¡é£ @  ô;Ù?d pÖ•¢³á³ @  ô<Ù?d °Ö•‚FãM @  ô=Ù?d ðÖ•r94 @  ô>Ù?d 0ו¢q•Ü @  ô?Ù?d pו `b @  ô@Ù?d °×••œ @  ôA Ù?d ðוðêwå @  ôB Ù?d 0Ø•Äûø @  ôC Ù?d pØ•ÇO¹4 @  ôD Ù?d °Ø•纻Ê @  ôE Ù?d ðØ•ÅA³ @  ôFÙ?d 0Ù•ÇÍ[ @  ôGÙ?d pÙ•2lªË @  ôHÙ?d °Ù•™¨5 @  ôIÙ?d ðÙ•âæRL @  ôJÙ?d 0Ú•¢ò @  ôKÙ?d pÚ•|ø°A @  ôLÙ?d °Ú•\ ²¿ @  ôMÙ?d ðÚ•¬rHÆ @  ôNÙ?d 0Û•|:Ä. @  ôOÙ?d pÛ•A*ÿ² @  ôPÙ?d °Û•aßýL @  ôQÙ?d ðÛ•‘ 5 @  ôRÙ?d 0Ü•ˆîô: @  ôSÙ?d pÜ•‹´¶ö @  ôTÙ?d °Ü•«A´ @  ôUÙ?d ðÜ•[>Nq @  ôVÙ?d 0Ý•‹v™ @  ôWÙ?d pÝ•ã œÕ @  ôX Ù?d °Ý•ÃÕž+ @  ôY!Ù?d ðÝ•3ªdR @  ôZ"Ù?d 0Þ•®îÄ“ @  ô[#Ù?d pÞ•­´†_ @  ô\$Ù?d °Þ•A„¡ @  ô]%Ù?d ðÞ•}>~Ø @  ô^&Ù?d 0ß•­vò0 @  ô_'Ù?d pß•`î @  ô`(Ù?d uÐà•/°ß•¡•ìâ @  ôa)Ù?d ðß•Qê› @  ôb*Ù?d Hà•HNHm @  ôc+Ù?d ˆà•ép @  ôd,Ù?d Èà•ká_ @  ôe-Ù?d á•ÉGi @  ôf.Ù?d Há•KÖ~Î @  ôg/Ù?d ˆá•S ~ @  ôh0Ù?d Èᕞ  @  ôi1Ù?d â•qhVÆ @  ôj2Ù?d Hâ•óùA @  ôk3Ù?d ˆâ•RÇô @  ôl4Ù?d Èâ•ÐV* @  ôm5Ù?d ã•rð`e @  ôn6Ù?d Hã•ðaw» @  ôo7Ù?d ˆã•oY @  ôp8Ù?d Èã•í„NÙ @  ôq9Ù?d 䕆$Pq @  ôr:Ù?d H䕵G¯ @  ôs;Ù?d ˆä•¥‹C @  ôt<Ù?d Èä•' @  ôu=Ù?d å•…¼fÒ @  ôv>Ù?d Hå•-q  @  ôw?Ù?d ˆå•=O/q @  ôx@Ù?d Èå•¿Þ8¯ @  ôyAÙ?d æ•PtuÉ @  ôzBÙ?d Hæ•Òåb @  ô{CÙ?d ˆæ•sÛ5û @  ô|DÙ?d Èæ•ñJ"% @  ô}EÙ?d ç•SìCj @  ô~FÙ?d Hç•Ñ}T´ @  ôGÙ?d ˆç•^k @  ô€HÙ?d Èç•Ï|Å @  ôIÙ?d è•ÖÞ @  ô‚JÙ?d Hè•TO ¡ @  ôƒKÙ?d ˆè•õq]M @  ô„LÙ?d Èè•wàJ“ @  ô…MÙ?d é•ÕF+Ü @  ô†NÙ?d Hé•W×< @  ô‡OÙ?d ˆé•RN² @  ôˆPÙ?d Èé•‚ÃYl @  ô‰QÙ?d ê•mi  @  ôŠRÙ?d Hê•ïøÔ @  ô‹SÙ?d ˆê•NÆT8 @  ôŒTÙ?d Èê•ÌWCæ @  ôUÙ?d ë•nñ"© @  ôŽVÙ?d Hë•ì`5w @  ôWÙ?d ˆë•sË @  ôXÙ?d Èë•ñ…  @  ô‘YÙ?d 앚%½ @  ô’ZÙ?d Hì•´c @  ô“[Ù?d ˆì•¹ŠR @  ô”\Ù?d Èì•;EQ @  ô•]Ù?d í•™½$ @  ô–^Ù?d Hí•,3À @  ô—_Ù?d ˆí•Ñx¬ @  ô˜`Ù?d Èí•Sor @  ô™aÙ?d %" @  ôšbÙ?d Hî•>´5Ê @  ô›cÙ?d ˆî•ŸŠb& @  ôœdÙ?d Èî•uø @  ôeÙ?d ï•¿½· @  ôžfÙ?d Hï•=,i @  ôŸgÙ?d ˆï•³^ e @  ô hÙ?d Èï•1Ï» @  ô¡iÙ?d ð•ýÿL® @  ô¢jÙ?d Hð•n[p @  ô£kÙ?d ˆð•ÞP œ @  ô¤lÙ?d Èð•\ÁB @  ô¥mÙ?d ñ•þgz  @  ô¦nÙ?d Hñ•|ömÓ @  ô§oÙ?d ˆñ•+sc @  ô¨pÙ?d Èñ•©â½ @  ô©qÙ?d ò•FHEÛ @  ôªrÙ?d Hò•ÄÙR @  ô«sÙ?d ˆò•eçé @  ô¬tÙ?d Èò•çv7 @  ô­uÙ?d ó•EÐsx @  ô®vÙ?d Hó•ÇAd¦ @  ô¯wÙ?d ˆó•X5J @  ô°xÙ?d Èó•Ú¤]Ä @  ô±yÙ?d ô•±Cl @  ô²zÙ?d Hô•3•T² @  ô³{Ù?d ˆô•’«^ @  ô´|Ù?d Èô•:€ @  ôµ}Ù?d õ•²œuÏ @  ô¶~Ù?d Hõ•0 b @  ô·Ù?d ˆõ•©hþ @  ô¸€Ù?d Èõ••8  @  ô¹Ù?d ö•z’2F @  ôº‚Ù?d Hö•ø%˜ @  ô»ƒÙ?d ˆö•Y=rt @  ô¼„Ù?d Èö•Û¬eª @  ô½…Ù?d ÷•y å @  ô¾†Ù?d H÷•û›; @  ô¿‡Ù?d ˆ÷•Ûî¥ @  ôÀˆÙ?d È÷•Y { @  ôÁ‰Ù?d ø•njÁ @  ôŠÙ?d Hø•ÿ} @  ôËÙ?d ˆø•<Á*ó @  ôÄŒÙ?d Èø•¾P=- @  ôÅÙ?d ù•ö\b @  ôÆŽÙ?d Hù•žgK¼ @  ôÇÙ?d ˆù•Éâ9  @  ôÈÙ?d Èù•Ks.Ò @  ôÉ‘Ù?d ú•¤Ùc´ @  ôÊ’Ù?d Hú•&Htj @  ôË“Ù?d ˆú•‡v#† @  ôÌ”Ù?d Èú•ç4X @  ôÍ•Ù?d û•§AU @  ôΖÙ?d Hû•%ÐBÉ @  ôÏ—Ù?d ˆû•º¤lu @  ôИÙ?d Èû•85{« @  ôÑ™Ù?d ü•S•e @  ôÒšÙ?d Hü•ÑrÝ @  ôÓ›Ù?d ˆü•p:%1 @  ôÔœÙ?d Èü•ò«2ï @  ôÕÙ?d ý•P S  @  ôÖžÙ?d Hý•ÒœD~ @  ôןÙ?d ˆý•® @  ôØ Ù?d Èý•š?Ì @  ôÙ¡Ù?d þ•u•Uª @  ôÚ¢Ù?d Hþ•÷Bt @  ôÛ£Ù?d ˆþ•V:˜ @  ôܤÙ?d Èþ•Ô«F @  ôÝ¥Ù?d ÿ•v c  @  ôÞ¦Ù?d Hÿ•ôœt× @  ôß§Ù?d ˆÿ•zî}Û @  ôàuЖ¨Ù?d Èÿ•øj @  ôá©Ù?d –Ž`ϵ @  ôâªÙ?d€ `–x2ÄÍ @  õ«Ù?d  –8MÛ @  õ¬Ù?d à–ºÜÌÖ @  õ­Ù?d –Ý3Vt @  õ®Ù?d `–_¢Aª @  õ¯Ù?d  –Æ•l` @  õ°Ù?d à–D{¾ @  õ±Ù?d –ei¢ @  õ²Ù?d `–ç~| @  õ ³Ù?d  –ƒúÒ} @  õ ´Ù?d à–kÅ£ @  õ µÙ?d –f„_ @  õ ¶Ù?d `–äHß @  õ ·Ù?d  –rù @  õ¸Ù?d à–šã' @  õ¹Ù?d –’Po @  õºÙ?d `–ÁxË @  õ»Ù?d  –t¶ÔÊ @  õ¼Ù?d à–ö'à @  õ½Ù?d –‘ÈY¶ @  õ¾Ù?d `–YNh @  õ¿Ù?d  –ç‰Oo @  õÀÙ?d à–eX± @  õÁÙ?d –DJ­ @  õÂÙ?d `–Æ‘]s @  õÃÙ?d  –¢æñr @  õÄÙ?d à– wæ¬ @  õÅÙ?d –G˜| @  õÆÙ?d `–Å kÐ @  õÇÙ?d  –9n$ö @  õÈÙ?d à–»ÿ3( @  õÉÙ?d –û¸ @  õ ÊÙ?d `– jf @  õ!ËÙ?d  –i¯g @  õ"ÌÙ?d à–댸¹ @  õ#ÍÙ?d –Œc" @  õ$ÎÙ?d ` –ò5Å @  õ%ÏÙ?d   –—Å @  õ&ÐÙ?d à –TÑ @  õ'ÑÙ?d –4LÍ @  õ(ÒÙ?d ` –¶Ý  @  õ)ÓÙ?d   –Òª¦ @  õ*ÔÙ?d à –P;±Ì @  õ+ÕÙ?d –7Ô+n @  õ,ÖÙ?d ` –µE<° @  õ-×Ù?d   –I"s– @  õ.ØÙ?d à –˳dH @  õ/ÙÙ?d –Ãz @  õ0ÚÙ?d ` –A‘ ¤ @  õ1ÛÙ?d   –%æ ¥ @  õ2ÜÙ?d à –§w·{ @  õ3ÝÙ?d –À˜-Ù @  õ4ÞÙ?d ` –B : @  õ5ßÙ?d   –F‰. @  õ6àÙ?d à –Ä9Ï @  õ7áÙ?d –å+Ó @  õ8âÙ?d `–g‘<  @  õ9ãÙ?d  –æ  @  õ:äÙ?d à–w‡Ò @  õ;åÙ?d –æ˜p @  õ<æÙ?d `–d ® @  õ=çÙ?d  –˜nEˆ @  õ>èÙ?d à–ÿRV @  õ?éÙ?d – ÝCû @  õ@êÙ?d `–ˆLT% @  õAëÙ?d  –ì;ø$ @  õBìÙ?d à–nªïú @  õCíÙ?d – EuX @  õDîÙ?d `–‹Ôb† @  õEïÙ?d  –ãOL @  õFðÙ?d à–rX’ @  õGñÙ?d –±jJŽ @  õHòÙ?d `–3û]P @  õIóÙ?d  –WŒñQ @  õJôÙ?d à–Õæ @  õKõÙ?d –²ò|- @  õLöÙ?d `–0ckó @  õM÷Ù?d  –Ì$Õ @  õNøÙ?d à–N•3  @  õOùÙ?d –F&L9 @  õPúÙ?d `–Ä·[ç @  õQûÙ?d  – À÷æ @  õRüÙ?d à–"Qà8 @  õSýÙ?d –E¾zš @  õTþÙ?d `–Ç/mD @  õUÿÙ?d  –ã|Xø @  õVÚ?d à–aíO& @  õWÚ?d –@õ]: @  õXÚ?d `–ÂdJä @  õYÚ?d  –¦æå @  õZÚ?d à–$‚ñ; @  õ[Ú?d –Cmk™ @  õ\Ú?d `–Áü|G @  õ]Ú?d  –=›3a @  õ^Ú?d à–¿ $¿ @  õ_ Ú?d –‹/ @  õ` Ú?d `– Ÿñ @  õa Ú?d  –mè¸ð @  õb Ú?d à–ïy¯. @  õc Ú?d –ˆ–5Œ @  õdÚ?d `– "R @  õeÚ?d  –“0˜ @  õfÚ?d à–¡F @  õgÚ?d –0¹ Z @  õhÚ?d `–²(„ @  õiÚ?d  –Ö_±… @  õjÚ?d à–TΦ[ @  õkÚ?d –3!<ù @  õlÚ?d `–±°+' @  õmÚ?d  –M×d @  õnÚ?d à–ÏFsß @  õoÚ?d –Çõ í @  õpÚ?d `–Ed3 @  õqÚ?d  –!·2 @  õrÚ?d à–£‚ ì @  õsÚ?d –Äm:N @  õtÚ?d `–Fü- @  õuÚ?d  –B|9† @  õv Ú?d à–Àí.X @  õw!Ú?d –áõ @  õ†0Ú?d ø!–¸à @  õ‡1Ú?d 8"–™ü @  õˆ2Ú?d x"–" @  õ‰3Ú?d ¸"–ú´# @  õŠ4Ú?d ø"–ýk£ý @  õ‹5Ú?d 8#–š„9_ @  õŒ6Ú?d x#–. @  õ7Ú?d ¸#–ära§ @  õŽ8Ú?d ø#–fãvy @  õ9Ú?d 8$–nP K @  õ:Ú?d x$–ìÁ• @  õ‘;Ú?d ¸$–ˆ¶²” @  õ’<Ú?d ø$– '¥J @  õ“=Ú?d 8%–mÈ?è @  õ”>Ú?d x%–ïY(6 @  õ•?Ú?d ¸%–‰)1 @  õ–@Ú?d ø%–™>ï @  õ—AÚ?d 8&–¸,ó @  õ˜BÚ?d x&–:‘;- @  õ™CÚ?d ¸&–^æ—, @  õšDÚ?d ø&–Üw€ò @  õ›EÚ?d 8'–»˜P @  õœFÚ?d x'–9 Ž @  õGÚ?d ¸'–ÅnB¨ @  õžHÚ?d ø'–GÿUv @  õŸIÚ?d 8(–sûræ @  õ JÚ?d x(–ñje8 @  õ¡KÚ?d ¸(–•É9 @  õ¢LÚ?d ø(–ŒÞç @  õ£MÚ?d 8)–pcDE @  õ¤NÚ?d x)–òòS› @  õ¥OÚ?d ¸)–kÅ~Q @  õ¦PÚ?d ø)–éTi @  õ§QÚ?d 8*–ÈL{“ @  õ¨RÚ?d x*–JÝlM @  õ©SÚ?d ¸*–.ªÀL @  õªTÚ?d ø*–¬;×’ @  õ«UÚ?d 8+–ËÔM0 @  õ¬VÚ?d x+–IEZî @  õ­WÚ?d ¸+–µ"È @  õ®XÚ?d ø+–7³ @  õ¯YÚ?d 8,–?}$ @  õ°ZÚ?d x,–½‘jú @  õ±[Ú?d ¸,–ÙæÆû @  õ²\Ú?d ø,–[wÑ% @  õ³]Ú?d 8-–<˜K‡ @  õ´^Ú?d x-–¾ \Y @  õµ_Ú?d ¸-–º‰HO @  õ¶`Ú?d ø-–8_‘ @  õ·aÚ?d 8.–M @  õ¸bÚ?d x.–›‘ZS @  õ¹cÚ?d ¸.–ÿæöR @  õºdÚ?d ø.–}wጠ@  õ»eÚ?d 8/–˜{. @  õ¼fÚ?d x/–˜ lð @  õ½gÚ?d ¸/–dn#Ö @  õ¾hÚ?d ø/–æÿ4 @  õ¿iÚ?d 80–öÝ%¥ @  õÀjÚ?d x0–tL2{ @  õÁkÚ?d ¸0–;žz @  õÂlÚ?d ø0–’ª‰¤ @  õÃmÚ?d 81–õE @  õÄnÚ?d x1–wÔØ @  õÅoÚ?d ¸1–îã) @  õÆpÚ?d ø1–lr>Ì @  õÇqÚ?d 82–Mj,Ð @  õÈrÚ?d x2–Ïû; @  õÉsÚ?d ¸2–«Œ— @  õÊtÚ?d ø2–)€Ñ @  õËuÚ?d 83–Nòs @  õÌvÚ?d x3–Ìc ­ @  õÍwÚ?d ¸3–0B‹ @  õÎxÚ?d ø3–²•UU @  õÏyÚ?d 84–º&*g @  õÐzÚ?d x4–8·=¹ @  õÑ{Ú?d ¸4–\À‘¸ @  õÒ|Ú?d ø4–ÞQ†f @  õÓ}Ú?d 85–¹¾Ä @  õÔ~Ú?d x5–;/  @  õÕÚ?d ¸5–Ò9^ @  õÖ€Ú?d ø5–P¨IQ @  õ×Ú?d 86–q°[M @  õØ‚Ú?d x6–ó!L“ @  õÙƒÚ?d ¸6–—Và’ @  õÚ„Ú?d ø6–Ç÷L @  õÛ…Ú?d 87–r(mî @  õ܆Ú?d x7–ð¹z0 @  õ݇Ú?d ¸7– Þ5 @  õÞˆÚ?d ø7–ŽO"È @  õ߉Ú?d 88–ºKX @  õàŠÚ?d x8–8Ú† @  õá‹Ú?d ¸8–\­¾‡ @  õâŒÚ?d€ ø8–{^Y @  öÚ?d 89–™ÕŒÒ @  öŽÚ?d x9–D›  @  öÚ?d ¸9–G:M+ @  öÚ?d ø9–Å«Zõ @  ö‘Ú?d 8:–*“ @  ö’Ú?d x:–¨M @  ö“Ú?d ¸:–Uó6 @  ö”Ú?d ø:–€Ääè @  ö •Ú?d 8;–"b…§ @  ö –Ú?d x;– ó’y @  ö —Ú?d ¸;–™Ý&² @  ö ˜Ú?d ø;–L1l @  ö ™Ú?d 8<–pì/Ä @  öšÚ?d x<–ò}8 @  ö›Ú?d ¸<–õõ @  öœÚ?d ø<–wˆâ_ @  öÚ?d 8=–Õ.ƒ @  öžÚ?d x=–W¿”Î @  öŸÚ?d ¸=––v{5 @  ö Ú?d ø=–çlë @  ö¡Ú?d 8>–ûM! @  ö¢Ú?d x>–yÜ6S @  ö£Ú?d ¸>–ÓÅ( @  ö¤Ú?d ø>–QˆÒö @  ö¥Ú?d 8?–ó.³¹ @  ö¦Ú?d x?–q¿¤g @  ö§Ú?duÐ@–7 ¸?–H‘¬ @  ö¨Ú?d ø?–Êr @  ö©Ú?d P@–{BPé @  öªÚ?d @–[·R @  ö«Ú?d Ð@–ï±­ @  ö ¬Ú?d A–?ù!ô @  ö!­Ú?d PA–φÛ @  ö"®Ú?d A–ïsÙs @  ö#¯Ú?d ÐA–it @  ö$°Ú?d B–Œ-ºµ @  ö%±Ú?d PB–|R@Ì @  ö&²Ú?d B–\§B2 @  ö'³Ú?d ÐB–T¤i @  ö(´Ú?d C–„N( @  ö)µÚ?d PC–t1Òø @  ö*¶Ú?d C–TÄÐ @  ö+·Ú?d ÐC–ÏŽqí @  ö,¸Ú?d D–ÖÀ‚â @  ö-¹Ú?d PD–&¿x› @  ö.ºÚ?d D–Jze @  ö/»Ú?d ÐD–£J¢Þ @  ö0¼Ú?d E–s.6 @  ö1½Ú?d PE–ƒ}ÔO @  ö2¾Ú?d E–£ˆÖ± @  ö3¿Ú?d ÐE–0u9{ @  ö4ÀÚ?d F–­1™º @  ö5ÁÚ?d PF–]Ncà @  ö6ÂÚ?d F–}»a= @  ö7ÃÚ?d ÐF–u‡f @  ö8ÄÚ?d G–¥R Ž @  ö9ÅÚ?d PG–U-ñ÷ @  ö:ÆÚ?d G–uØó  @  ö;ÇÚ?d ÐG–î’Râ @  ö<ÈÚ?d H–ÚmÞÿ @  ö=ÉÚ?d PH–*$† @  ö>ÊÚ?d H– ç&x @  ö?ËÚ?d ÐH–æßá @  ö@ÌÚ?d I–À®S  @  öAÍÚ?d PI–0Ñ©p @  öBÎÚ?d I–$«Ž @  öCÏÚ?d ÐI–î>h‰ @  öDÐÚ?d J–szÈH @  öEÑÚ?d PJ–ƒ21 @  öFÒÚ?d J–£ð0Ï @  öGÓÚ?d ÐJ–«QÖ” @  öHÔÚ?d K–{Z| @  öIÕÚ?d PK–‹f  @  öJÖÚ?d K–«“¢û @  öK×Ú?d ÐK–0Ù @  öLØÚ?d L–)—ð @  öMÙÚ?d PL–Ùè f @  öNÚÚ?d L–ù˜ @  öOÛÚ?d ÐL–\Ð# @  öPÜÚ?d M–ŒU\Ë @  öQÝÚ?d PM–|*¦² @  öRÞÚ?d M–\ߤL @  öSßÚ?d ÐM–?r^— @  öTàÚ?d N–¢6þV @  öUáÚ?d PN–RI/ @  öVâÚ?d N–r¼Ñ @  öWãÚ?d ÐN–zàŠ @  öXäÚ?d O–ªUlb @  öYåÚ?d PO–Z*– @  öZæÚ?d O–zß”å @  ö[çÚ?d ÐO–á•5 @  ö\èÚ?d P–_K‰¼ @  ö]éÚ?d PP–¯4sÅ @  ö^êÚ?d P–Áq; @  ö_ëÚ?d ÐP–;ÇŽ0 @  ö`ìÚ?d Q–ëØ @  öaíÚ?d PQ–ðø¡ @  öbîÚ?d Q–;ú_ @  öcïÚ?d ÐQ–Å9X @  ödðÚ?d R–X[™™ @  öeñÚ?d PR–¨$cà @  öfòÚ?d R–ˆÑa @  ögóÚ?d ÐR–€p‡E @  öhôÚ?d S–P8 ­ @  öiõÚ?d PS– GñÔ @  öjöÚ?d S–€²ó* @  ök÷Ú?d ÐS–øRÁ @  öløÚ?d T–¶¡Î @  ömùÚ?d PT–òÉ[· @  önúÚ?d T–ÒÛ?d ¨e–"Yî4 @  ö³?Û?d èe–±¤þ @  ö´@Û?d (f–,à¡? @  öµAÛ?d hf–ÜŸ[F @  ö¶BÛ?d ¨f–üjY¸ @  ö·CÛ?d èf–ôË¿ã @  ö¸DÛ?d (g–$ƒ3  @  ö¹EÛ?d hg–ÔüÉr @  öºFÛ?d ¨g–ô ËŒ @  ö»GÛ?d èg–oCjg @  ö¼HÛ?d (h–[¼æz @  ö½IÛ?d hh–«Ã @  ö¾JÛ?d ¨h–‹6ý @  ö¿KÛ?d èh–‘7çd @  öÀLÛ?d (i–AkŒ @  öÁMÛ?d hi–±‘õ @  öÂNÛ?d ¨i–‘õ“  @  öÃOÛ?d èi–oïP  @  öÄPÛ?d (j–ò«ðÍ @  öÅQÛ?d hj–Ô ´ @  öÆRÛ?d ¨j–"!J @  öÇSÛ?d èj–*€î @  öÈTÛ?d (k–úÈbù @  öÉUÛ?d hk– ·˜€ @  öÊVÛ?d ¨k–*Bš~ @  öËWÛ?d èk–±;• @  öÌXÛ?d (l–¨FÈš @  öÍYÛ?d hl–X92ã @  öÎZÛ?d ¨l–xÌ0 @  öÏ[Û?d èl–ÝÌè¦ @  öÐ\Û?d (m– „dN @  öÑ]Û?d hm–ýûž7 @  öÒ^Û?d ¨m–ÝœÉ @  öÓ_Û?d èm–¾£f @  öÔ`Û?d (n–#çÆÓ @  öÕaÛ?d hn–Ó˜<ª @  öÖbÛ?d ¨n–óm>T @  ö×cÛ?d èn–ûÌØ @  öØdÛ?d (o–+„Tç @  öÙeÛ?d ho–Ûû®ž @  öÚfÛ?d ¨o–û¬` @  öÛgÛ?d èo–`D ‹ @  öÜhÛ?d (p–Þš±9 @  öÝiÛ?d hp–.åK@ @  öÞjÛ?d ¨p–I¾ @  ößkÛ?d èp–º¶µ @  öàlÛ?d (q–j^:] @  öámÛ?d hq–š!À$ @  öânÛ?d€ ¨q–ÎÞ| @  ÷oÛ?d èq–ÑLUR @  ÷pÛ?d (r–Lõ“ @  ÷qÛ?d hr–y>ô @  ÷rÛ?d ¨r–YËöù @  ÷sÛ?d èr–ŸØOØ @  ÷tÛ?d (s–OÃ0 @  ÷uÛ?d hs–q]f3 @  ÷vÛ?d ¨s–Q¨dÍ @  ÷ wÛ?d ès–«>Ë @  ÷ xÛ?d (t–åÍÄ @  ÷ yÛ?d ht–#ÓÌP @  ÷ zÛ?d ¨t–&ή @  ÷ {Û?d èt–Å5w @  ÷|Û?d (u–}ûg @  ÷}Û?d hu–†`„ @  ÷~Û?d ¨u–¦äbz @  ÷Û?d èu–í–"Ï @  ÷€Û?d (v–pÒ‚ @  ÷Û?d hv–E䃚 @  ÷‚Û?d ¨v–ed @  ÷ƒÛ?d èv–£8E @  ÷„Û?d (w–sJ´­ @  ÷…Û?d hw–M‡® @  ÷†Û?d ¨w–TµÏ… @  ÷ ‡Û?d èw– ¶•ƒ @  ÷ ˆÛ?d (x–Å'"ž @  ÷‰Û?d hx–ð#  @  ÷ŠÛ?d ¨x–Ðä!ô @  ÷‹Û?d èx–÷˜Õ @  ÷ŒÛ?d (y–Æ¿= @  ÷Û?d hy–DÕ¨n @  ÷ ŽÛ?d ¨y–d ª @  ÷!Û?d èy–_s’z @  ÷"Û?d (z–Â72» @  ÷#‘Û?d hz–÷3/ @  ÷$’Û?d ¨z–×ô1Ñ @  ÷%“Û?d èz–çˆð @  ÷&”Û?d ({–Á¯ @  ÷'•Û?d h{–ÿb¡ @  ÷(–Û?d ¨{–ß—£å @  ÷)—Û?d è{–”ùã @  ÷*˜Û?d (|–˜Ú ì @  ÷+™Û?d h|–­ì x @  ÷,šÛ?d ¨|– † @  ÷-›Û?d è|–K °§ @  ÷.œÛ?d (}–›Bf-‰ @  ÷;©Û?d €€–©49= @  ÷<ªÛ?d À€–+¥.ã @  ÷=«Û?d –¿o ô @  ÷>¬Û?d @–=þ* @  ÷?­Û?d €–³÷´Ë @  ÷@®Û?d À–1f£ @  ÷A¯Û?d ‚–×IË5 @  ÷B°Û?d @‚–UØÜë @  ÷C±Û?d €‚–ŠÈ_ @  ÷D²Û?d À‚–@ß @  ÷E³Û?d ƒ–ÔÑý– @  ÷F´Û?d @ƒ–V@êH @  ÷GµÛ?d €ƒ–ÊéZk @  ÷H¶Û?d Àƒ–HxMµ @  ÷I·Û?d „–¤ób @  ÷J¸Û?d @„–5ä¼ @  ÷K¹Û?d €„–˜gð @  ÷LºÛ?d À„–öçÖ @  ÷M»Û?d …–Ž<ÅÁ @  ÷N¼Û?d @…– ­Ò @  ÷O½Û?d €…–=¥\Ü @  ÷P¾Û?d À…–¿4K @  ÷Q¿Û?d †–öUè: @  ÷RÀÛ?d @†–tÄÿä @  ÷SÁÛ?d €†–ã–ëP @  ÷TÂÛ?d À†–aüŽ @  ÷UÃÛ?d ‡–õÍÞ™ @  ÷VÄÛ?d @‡–w\ÉG @  ÷WÅÛ?d €‡–ëõyd @  ÷XÆÛ?d À‡–idnº @  ÷YÇÛ?d ˆ– ¯ @  ÷ZÈÛ?d @ˆ–˜¸¡ @  ÷[ÉÛ?d €ˆ–”ʬ @  ÷\ÊÛ?d Àˆ–[»Ë @  ÷]ËÛ?d ‰–‚‘™Ü @  ÷^ÌÛ?d @‰–Ž @  ÷_ÍÛ?d €‰– 'q @  ÷`ÎÛ?d À‰–¢Ÿ0¯ @  ÷aÏÛ?d Š–†¿Z @  ÷bÐÛ?d @Š–ˆ¨„ @  ÷cÑÛ?d €Š–“Ú¼0 @  ÷dÒÛ?d ÀŠ–K«î @  ÷eÓÛ?d ‹–…‰ù @  ÷fÔÛ?d @‹–ž' @  ÷gÕÛ?d €‹–›¹. @  ÷hÖÛ?d À‹–(9Ú @  ÷i×Û?d Œ–Üô‡  @  ÷jØÛ?d @Œ–^eÓ @  ÷kÙÛ?d €Œ–É7„g @  ÷lÚÛ?d ÀŒ–K¦“¹ @  ÷mÛÛ?d –ßl±® @  ÷nÜÛ?d @–]ý¦p @  ÷oÝÛ?d €–lõ(³ @  ÷pÞÛ?d À–îd?m @  ÷qßÛ?d Ž–WU‰D @  ÷ràÛ?d @Ž–ÕÄžš @  ÷sáÛ?d €Ž–B–Š. @  ÷tâÛ?d ÀŽ–Àð @  ÷uãÛ?d –TÍ¿ç @  ÷väÛ?d @–Ö\¨9 @  ÷wåÛ?d €–Jõ @  ÷xæÛ?d À–ÈdÄ @  ÷yçÛ?d –ª(þ® @  ÷zèÛ?d @–(¹ép @  ÷{éÛ?d €–¿ëýÄ @  ÷|êÛ?d À–=zê @  ÷}ëÛ?d ‘–©°È  @  ÷~ìÛ?d @‘–+!ßÓ @  ÷íÛ?d €‘–F~@ @  ÷€îÛ?d À‘–ÄïWÝ @  ÷ïÛ?d ’–àiØ( @  ÷‚ðÛ?d @’–bøÏö @  ÷ƒñÛ?d €’–õªÛB @  ÷„òÛ?d À’–w;Ìœ @  ÷…óÛ?d “–ãñî‹ @  ÷†ôÛ?d @“–a`ùU @  ÷‡õÛ?d €“–ýÉIv @  ÷ˆöÛ?d À“–X^¨ @  ÷‰÷Û?d ”–º„à @  ÷ŠøÛ?d @”–8÷¡ @  ÷‹ùÛ?d €”–¯Gã @  ÷ŒúÛ?d À”–-ÖôË @  ÷ûÛ?d •–¹ÖÜ @  ÷ŽüÛ?d @•–;Á @  ÷ýÛ?d €•– …OÁ @  ÷þÛ?d À•–ˆX @  ÷‘ÿÛ?d ––ŸÝÅ/ @  ÷’Ü?d @––LÒñ @  ÷“Ü?d €––ŠÆE @  ÷”Ü?d À––Ñ› @  ÷•Ü?d —–œEóŒ @  ÷–Ü?d @—–ÔäR @  ÷—Ü?d €—–‚}Tq @  ÷˜Ü?d À—–ìC¯ @  ÷™Ü?d ˜–è‚j @  ÷šÜ?d @˜–j•´ @  ÷› Ü?d €˜–ýB @  ÷œ Ü?d À˜–Ó–Þ @  ÷ Ü?d ™–ë´É @  ÷ž Ü?d @™–iˆ£ @  ÷Ÿ Ü?d €™–I† d @  ÷ Ü?d À™–˺ @  ÷¡Ü?d š–ï‘’O @  ÷¢Ü?d @š–m…‘ @  ÷£Ü?d €š–úR‘% @  ÷¤Ü?d Àš–xÆû @  ÷¥Ü?d ›–ì ¤ì @  ÷¦Ü?d @›–n˜³2 @  ÷§Ü?d €›–ò1 @  ÷¨Ü?d À›–p Ï @  ÷©Ü?d œ–µ|ª @  ÷ªÜ?d @œ–7í½Æ @  ÷«Ü?d €œ– ¿©r @  ÷¬Ü?d Àœ–".¾¬ @  ÷­Ü?d –¶äœ» @  ÷®Ü?d @–4u‹e @  ÷¯Ü?d €–}¦ @  ÷°Ü?d À–‡ìx @  ÷±Ü?d ž–>ݤQ @  ÷² Ü?d @ž–¼L³ @  ÷³!Ü?d €ž–+§; @  ÷´"Ü?d Àž–©°å @  ÷µ#Ü?d Ÿ–=E’ò @  ÷¶$Ü?d @Ÿ–¿Ô…, @  ÷·%Ü?d €Ÿ–#}5 @  ÷¸&ÜuР–?d ÀŸ–¡ì"Ñ @  ÷¹'Ü?d  – u±o @  ÷º(Ü?d X –Žä¦± @  ÷»)Ü?d ˜ –¶² @  ÷¼*Ü?d Ø –›'¥Û @  ÷½+Ü?d ¡–í‡Ì @  ÷¾,Ü?d X¡–| @  ÷¿-Ü?d ˜¡–u?ó @  ÷À.Ü?d Ø¡–ä(- @  ÷Á/Ü?d ¢–¥b§Ø @  ÷Â0Ü?d X¢–'ó° @  ÷Ã1Ü?d ˜¢–°¡¤² @  ÷Ä2Ü?d Ø¢–20³l @  ÷Å3Ü?d £–¦ú‘{ @  ÷Æ4Ü?d X£–$k†¥ @  ÷Ç5Ü?d ˜£–¸Â6† @  ÷È6Ü?d Ø£–:S!X @  ÷É7Ü?d ¤–ÿŸ @  ÷Ê8Ü?d X¤–}ˆQ @  ÷Ë9Ü?d ˜¤–êLœå @  ÷Ì:Ü?d ؤ–hÝ‹; @  ÷Í;Ü?d ¥–ü©, @  ÷Î<Ü?d X¥–~†¾ò @  ÷Ï=Ü?d ˜¥–OŽ01 @  ÷Ð>Ü?d Ø¥–Í'ï @  ÷Ñ?Ü?d ¦–„~„× @  ÷Ò@Ü?d X¦–ï“  @  ÷ÓAÜ?d ˜¦–‘½‡½ @  ÷ÔBÜ?d ئ–,c @  ÷ÕCÜ?d §–‡æ²t @  ÷ÖDÜ?d X§–w¥ª @  ÷×EÜ?d ˜§–™Þ‰ @  ÷ØFÜ?d ا–OW @  ÷ÙGÜ?d ¨–ó"Ã’ @  ÷ÚHÜ?d X¨–q³ÔL @  ÷ÛIÜ?d ˜¨–æáÀø @  ÷ÜJÜ?d ب–dp×& @  ÷ÝKÜ?d ©–ðºõ1 @  ÷ÞLÜ?d X©–r+âï @  ÷ßMÜ?d ˜©–R%Kœ @  ÷àNÜ?d Ø©–д\B @  ÷áOÜ?d ª–ô2Ó· @  ÷âPÜ?d€ Xª–^9Ð; @  øQÜ?d ˜ª–(*Œ¦ @  øRÜ?d ت–ª»›x @  øSÜ?d «–û8B‚ @  øTÜ?d X«–y©U\ @  øUÜ?d ˜«–+²º @  øVÜ?d Ø«–©#­Û @  øWÜ?d ¬–¢MLv @  øXÜ?d X¬– Ü[¨ @  ø YÜ?d ˜¬–rÇ´ñ @  ø ZÜ?d ج–ðV£/ @  ø [Ü?d ­–¡ÕzÕ @  ø \Ü?d X­–#Dm  @  ø ]Ü?d ˜­–q_‚R @  ø^Ü?d Ø­–óΕŒ @  ø_Ü?d ®–)ìB? @  ø`Ü?d X®–«}Uá @  øaÜ?d ˜®–ùfº¸ @  øbÜ?d Ø®–{÷­f @  øcÜ?d ¯–*ttœ @  ødÜ?d X¯–¨åcB @  øeÜ?d ˜¯–úþŒ @  øfÜ?d د–xo›Å @  øgÜ?d °–Ô‘5Õ @  øhÜ?d X°–V"  @  øiÜ?d ˜°–ÍR @  øjÜ?d ذ–†ŠÚŒ @  økÜ?d ±–× v @  ølÜ?d X±–U˜¨ @  ømÜ?d ˜±–ƒûñ @  ønÜ?d ر–…ì/ @  øoÜ?d ²–Ó%ð @  ø pÜ?d X²–Q2. @  ø!qÜ?d ˜²– Ýw @  ø"rÜ?d ز–šÊ© @  ø#sÜ?d ³–ÐS @  ø$tÜ?d X³–Rˆ @  ø%uÜ?d ˜³–“ëÔ @  ø&vÜ?d س–‚ü  @  ø'wÜ?d ´–‰l§ @  ø(xÜ?d X´– ý y @  ø)yÜ?d ˜´–Yæå  @  ø*zÜ?d Ø´–Ûwòþ @  ø+{Ü?d µ–Šô+ @  ø,|Ü?d Xµ–e<Ú @  ø-}Ü?d ˜µ–Z~Óƒ @  ø.~Ü?d ص–ØïÄ] @  ø/Ü?d ¶–ï[Rm @  ø0€Ü?d X¶–mÊE³ @  ø1Ü?d ˜¶–?Ѫê @  ø2‚Ü?d ض–½@½4 @  ø3ƒÜ?d ·–ìÃdÎ @  ø4„Ü?d X·–nRs @  ø5…Ü?d ˜·–ŽÜ?d ع–É„ÌÒ @  ø?Ü?d º–1Ÿ @  ø@Ü?d Xº–³A @  øA‘Ü?d ˜º–ášû @  øB’Ü?d غ–c ìÆ @  øC“Ü?d »–2ˆ5< @  øD”Ü?d X»–°"â @  øE•Ü?d ˜»–âÍ» @  øF–Ü?d Ø»–`“Úe @  øG—Ü?d ¼–ký;È @  øH˜Ü?d X¼–él, @  øI™Ü?d ˜¼–»wÃO @  øJšÜ?d ؼ–9æÔ‘ @  øK›Ü?d ½–he k @  øLœÜ?d X½–êôµ @  øMÜ?d ˜½–¸ïõì @  øNžÜ?d ؽ–:~â2 @  øOŸÜ?d ¾–à\5 @  øP Ü?d X¾–bÍ"_ @  øQ¡Ü?d ˜¾–0ÖÍ @  øR¢Ü?d ؾ–²GÚØ @  øS£Ü?d ¿–ãÄ" @  øT¤Ü?d X¿–aUü @  øU¥Ü?d ˜¿–3Nû¥ @uÐÀ–  øV¦Ü?d Ø¿–ˆ0® @  øW §Ü?d 0À–þÈs^ @  øX ¨Ü?d pÀ–|Yd€ @  øY ©Ü?d °À–.B‹Ù @  øZ ªÜ?d ðÀ–¬Óœ @  ø[ «Ü?d 0Á–ýPEý @  ø\ ¬Ü?d pÁ–ÁR# @  ø] ­Ü?d °Á–-Ú½z @  ø^ ®Ü?d ðÁ–¯Kª¤ @  ø_ ¯Ü?d 0–ùØc{ @  ø` °Ü?d p–{It¥ @  øa ±Ü?d °Â–)R›ü @  øb ²Ü?d ð–«ÃŒ" @  øc ³Ü?d 0Öú@UØ @  ød ´Ü?d pÖxÑB @  øe µÜ?d °Ã–*Ê­_ @  øf ¶Ü?d ðÖ¨[º @  øg ·Ü?d 0Ä–£5[, @  øh ¸Ü?d pÄ–!¤Lò @  øi ¹Ü?d °Ä–s¿£« @  øj ºÜ?d ðÄ–ñ.´u @  øk »Ü?d 0Å– ­m @  øl ¼Ü?d pÅ–" @  ø‰ ÙÜ?d °Ì–o¾ág @  øŠ ÚÜ?d ðÌ–í/ö¹ @  ø‹ ÛÜ?d 0Í–¼¬/C @  øŒ ÜÜ?d pÍ–>=8 @  ø ÝÜ?d °Í–l&×Ä @  øŽ ÞÜ?d ðÍ–î·À @  ø ßÜ?d 0Ζ4•© @  ø àÜ?d pΖ¶w @  ø‘ áÜ?d °Î–äï. @  ø’ âÜ?d ðΖfŽøð @  ø“ ãÜ?d 0Ï–7 !  @  ø” äÜ?d pÏ–µœ6Ô @  ø• åÜ?d °Ï–ç‡Ù @  ø– æÜ?d ðÏ–eÎS @  ø— çÜ?d 0ЖÉè`C @  ø˜ èÜ?d pЖKyw @  ø™ éÜ?d °Ð–b˜Ä @  øš êÜ?d ðЖ›ó @  ø› ëÜ?d 0Ñ–ÊpVà @  øœ ìÜ?d pÑ–HáA> @  ø íÜ?d °Ñ–ú®g @  øž îÜ?d ðÑ–˜k¹¹ @  øŸ ïÜ?d 0Ò–Îøpf @  ø  ðÜ?d pÒ–Lig¸ @  ø¡ ñÜ?d °Ò–rˆá @  ø¢ òÜ?d ðÒ–œãŸ? @  ø£ óÜ?d 0Ó–Í`FÅ @  ø¤ ôÜ?d pÓ–OñQ @  ø¥ õÜ?d °Ó–ê¾B @  ø¦ öÜ?d ðÓ–Ÿ{©œ @  ø§ ÷Ü?d 0Ô–”H1 @  ø¨ øÜ?d pÔ–„_ï @  ø© ùÜ?d °Ô–DŸ°¶ @  øª úÜ?d ðԖƧh @  ø« ûÜ?d 0Õ–—~’ @  ø¬ üÜ?d pÕ–iL @  ø­ ýÜ?d °Õ–G† @  ø® þÜ?d ðÕ–Å–‘Ë @  ø¯ ÿÜ?d 0Ö–ER÷ @  ø° Ý?d pÖ–ÔE) @  ø± Ý?d °Ö–]Ϫp @  ø² Ý?d ðÖ–ß^½® @  ø³ Ý?d 0×–ŽÝdT @  ø´ Ý?d p×– LsŠ @  øµ Ý?d °×–^WœÓ @  ø¶ Ý?d ð×–ÜÆ‹  @  ø· Ý?d 0Ø–ú² @  ø¸ Ý?d pØ–xˆl @  ø¹  Ý?d °Ø–*“í5 @  øº  Ý?d ðØ–¨úë @  ø»  Ý?d 0Ù–ù# @  ø¼  Ý?d pÙ–{4Ï @  ø½  Ý?d °Ù–) Û– @  ø¾ Ý?d ðÙ–«šÌH @  ø¿ Ý?d 0Ú–S @  øÀ Ý?d pÚ–ÑŸÛ @  øÁ Ý?d °Ú–ƒ„û‚ @  ø Ý?d ðÚ–ì\ @  øà Ý?d 0Û–P–5¦ @  øÄ Ý?d pÛ–Ò"x @  øÅ Ý?d °Û–€Í! @  øÆ Ý?d ðÛ–Úÿ @  øÇ Ý?d 0Ü– ã;R @  øÈ Ý?d pÜ–‹r,Œ @  øÉ Ý?d °Ü–ÙiÃÕ @  øÊ Ý?d ðÜ–[øÔ  @  øË Ý?d 0Ý– { ñ @  øÌ Ý?d pÝ–ˆê/ @  øÍ Ý?d °Ý–Úñõv @  øÎ Ý?d ðÝ–X`⨠@  øÏ Ý?d 0Þ–‚B5 @  øÐ  Ý?d pÞ–Ó"Å @  øÑ !Ý?d °Þ–RÈÍœ @  øÒ "Ý?d ðÞ–ÐYÚB @  øÓ #Ý?d 0ß–Ú¸ @  øÔ $Ý?d pß–Kf @  øÕ %Ý?d uÐà–/°ß–QPû? @  øÖ &Ý?d ðß–ê04 @  ø×'Ý?d Hà–á‚|` @  øØ(Ý?d ˆà–Áw~ž @  øÙ)Ý?d Èà–1„ç @  øÚ*Ý?d á–á@ @  øÛ+Ý?d Há–âJà @  øÜ,Ý?d ˆá–ÂïH= @  øÝ-Ý?d Èá–2²D @  øÞ.Ý?d â–¯Ô… @  øß/Ý?d Hâ–æ’lE @  øà0Ý?d ˆâ–Ægn» @  øá1Ý?d Èâ–6” @  øâ2Ý?d€ ã–’“Œ @  ù3Ý?d Hã–pˆi @  ù4Ý?d ˆã–P} — @  ù5Ý?d Èã–eK  @  ù6Ý?d ä–|þ  @  ù7Ý?d Hä–"¤  @  ù8Ý?d ˆä–ó¦ô @  ù9Ý?d Èä–<>÷ @  ù:Ý?d å–ìv @  ù ;Ý?d Hå–*e6> @  ù <Ý?d ˆå– 4À @  ù =Ý?d Èå–?¦5T @  ù >Ý?d 斢╕ @  ù ?Ý?d Hæ–ôV² @  ù@Ý?d ˆæ–Ô£ƒL @  ùAÝ?d Èæ–Gϯ @  ùBÝ?d ç–—‡”G @  ùCÝ?d Hç–Q”-f @  ùDÝ?d ˆç–qa/˜ @  ùEÝ?d Èç–DW.  @  ùFÝ?d è–p¨¢ @  ùGÝ?d Hè–.«ø @  ùHÝ?d ˆè–^úé @  ùIÝ?d Èè–0“_ê @  ùJÝ?d é–àÛÓ @  ùKÝ?d Hé–&Èj# @  ùLÝ?d ˆé–=hÝ @  ùMÝ?d Èé–3 iI @  ùNÝ?d ê–®OɈ @  ùOÝ?d Hê–•ñb @  ùPÝ?d ˆê–µéóœ @  ùQÝ?d Èê–7ƒOÏ @  ù RÝ?d ë–çËÃ' @  ù!SÝ?d Hë–!Øz @  ù"TÝ?d ˆë–-xø @  ù#UÝ?d Èë–4yl @  ù$VÝ?d ì–-UŠc @  ù%WÝ?d Hì–sVÐe @  ù&XÝ?d ˆì–S£Ò› @  ù'YÝ?d Èì–mnw˜ @  ù(ZÝ?d í–½&ûp @  ù)[Ý?d Hí–{5BQ @  ù*\Ý?d ˆí–[À@¯ @  ù+]Ý?d Èí–nöA; @  ù,^Ý?d î–ó²áú @  ù-_Ý?d Hî–UVàÌ @  ù.`Ý?d ˆî–u£â2 @  ù/aÝ?d Èî–æÏyÑ @  ù0bÝ?d ï–6‡õ9 @  ù1cÝ?d Hï–ð”L @  ù2dÝ?d ˆï–ÐaNæ @  ù3eÝ?d Èï–åWOr @  ù4fÝ?d ð–[‰óÀ @  ù5gÝ?d Hð–Š©Æ @  ù6hÝ?d ˆð–%«8 @  ù7iÝ?d Èð–²; @  ù8jÝ?d ñ–Ëú‚Ó @  ù9kÝ?d Hñ– é;ò @  ù:lÝ?d ˆñ–-9  @  ù;mÝ?d Èñ–*8˜ @  ù<nÝ?d ò–…n˜Y @  ù=oÝ?d Hò–¾= ³ @  ù>pÝ?d ˆò–žÈ¢M @  ù?qÝ?d Èò–²¥Œ @  ù@rÝ?d ó–bí”d @  ùAsÝ?d Hó–¤þ-E @  ùBtÝ?d ˆó–„ /» @  ùCuÝ?d Èó–±=./ @  ùDvÝ?d ô–¨sÝ  @  ùEwÝ?d Hô–öp‡& @  ùFxÝ?d ˆô–Ö……Ø @  ùGyÝ?d Èô–èH Û @  ùHzÝ?d õ–8¬3 @  ùI{Ý?d Hõ–þ @  ùJ|Ý?d ˆõ–Þæì @  ùK}Ý?d Èõ–ëÐx @  ùL~Ý?d ö–v”¶¹ @  ùMÝ?d Hö–=æö  @  ùN€Ý?d ˆö–ôò @  ùOÝ?d Èö–Žo @  ùP‚Ý?d ÷–^7ãù @  ùQƒÝ?d H÷–˜$ZØ @  ùR„Ý?d ˆ÷–¸ÑX& @  ùS…Ý?d È÷–çY² @  ùT†Ý?d ø–¹Õ¯ @  ùU‡Ý?d Hø–ç© @  ùVˆÝ?d ˆø–ÇîW @  ùW‰Ý?d Èø–ù#(T @  ùXŠÝ?d ù–)k¤¼ @  ùY‹Ý?d Hù–ïx @  ùZŒÝ?d ˆù–Ïc @  ù[Ý?d Èù–ú»÷ @  ù\ŽÝ?d ú–gÿ¾6 @  ù]Ý?d Hú–\¬†Ü @  ù^Ý?d ˆú–|Y„" @  ù_‘Ý?d Èú–þ38q @  ù`’Ý?d û–.{´™ @  ùa“Ý?d Hû–èh ¸ @  ùb”Ý?d ˆû–ÈF @  ùc•Ý?d Èû–ý«Ò @  ùd–Ý?d ü–äåýÝ @  ùe—Ý?d Hü–ºæ§Û @  ùf˜Ý?d ˆü–š¥% @  ùg™Ý?d Èü–¤Þ& @  ùhšÝ?d ý–t–ŒÎ @  ùi›Ý?d Hý–²…5ï @  ùjœÝ?d ˆý–’p7 @  ùkÝ?d Èý–§F6… @  ùlžÝ?d þ–:–D @  ùmŸÝ?d Hþ–œæ—r @  ùn Ý?d ˆþ–¼•Œ @  ùo¡Ý?d Èþ–/o @  ùp¢Ý?d ÿ–ÿ7‚‡ @  ùq£Ý?d Hÿ–9$;¦ @  ùr¤Ý?d ˆÿ–Ñ9X @  ùsuЗ¥Ý?d Èÿ–QgK° @  ùt€¦Ý?d —ÓcA @  ùu€§Ý?d `—@Ð9G @  ùv€¨Ý?d  —`%;¹ @  ùw€©Ý?d à—^螺 @  ùx€ªÝ?d —Ž R @  ùy€«Ý?d `—H³«s @  ùz€¬Ý?d  —hF© @  ù{€­Ý?d à—]p¨ @  ù|€®Ý?d —À4Ø @  ù}€¯Ý?d `—ûg02 @  ù~€°Ý?d  —Û’2Ì @  ù€±Ý?d à—©¸< @  ù€€²Ý?d —Äá4Ô @  ù€³Ý?d `—òõ @  ù‚€´Ý?d  —"  @  ùƒ€µÝ?d à—1ŽŸ @  ù„€¶Ý?d —} @  ù…€·Ý?d `—P|'– @  ù†€¸Ý?d  —p‰%h @  ù‡€¹Ý?d à—ND€k @  ùˆ€ºÝ?d —ž ƒ @  ù‰€»Ý?d `—Xµ¢ @  ùŠ€¼Ý?d  —xê·\ @  ù‹€½Ý?d à—MܶÈ @  ùŒ€¾Ý?d —И  @  ù€¿Ý?d `—†,. @  ùŽ€ÀÝ?d  —¦ÙÐ @  ù€ÁÝ?d à—5µ›3 @  ù€ÂÝ?d —åýÛ @  ù‘€ÃÝ?d `—#î®ú @  ù’€ÄÝ?d  —¬ @  ù“€ÅÝ?d à—6-­ @  ù”€ÆÝ?d —Ò! @  ù•€ÇÝ?d `—\Ñ{‹ @  ù–€ÈÝ?d  —|$yu @  ù—€ÉÝ?d à—BéÜv @  ù˜€ÊÝ?d —’¡Pž @  ù™€ËÝ?d ` —T²é¿ @  ùš€ÌÝ?d   —tGëA @  ù›€ÍÝ?d à —AqêÕ @  ùœ€ÎÝ?d —Ü5J @  ù€ÏÝ?d ` —çfrþ @  ùž€ÐÝ?d   —Ç“p @  ùŸ€ÑÝ?d à —EùÌS @  ù €ÒÝ?d —•±@» @  ù¡€ÓÝ?d ` —S¢ùš @  ù¢€ÔÝ?d   —sWûd @  ù£€ÕÝ?d à —Faúð @  ù¤€ÖÝ?d —_/ ÿ @  ù¥€×Ý?d ` —,Sù @  ù¦€ØÝ?d   —!ÙQ @  ù§€ÙÝ?d à —ô @  ù¨€ÚÝ?d —Ï\xì @  ù©€ÛÝ?d ` — OÁÍ @  ùª€ÜÝ?d   —)ºÃ3 @  ù«€ÝÝ?d à —ŒÂ§ @  ù¬€ÞÝ?d —Èbf @  ù­€ßÝ?d `—',cP @  ù®€àÝ?d  —Ùa® @  ù¯€áÝ?d à—”µúM @  ù°€âÝ?d —Dýv¥ @  ù±€ãÝ?d `—‚îÏ„ @  ù²€äÝ?d  —¢Íz @  ù³€åÝ?d à——-Ìî @  ù´€æÝ?d —)óp\ @  ùµ€çÝ?d `—wð*Z @  ù¶€èÝ?d  —W(¤ @  ù·€éÝ?d à—iȧ @  ù¸€êÝ?d —¹€O @  ù¹€ëÝ?d `—“¸n @  ùº€ìÝ?d  —_fº @  ù»€íÝ?d à—jP» @  ù¼€îÝ?d —÷Å @  ù½€ïÝ?d `—ÌG#/ @  ù¾€ðÝ?d  —ì²!Ñ @  ù¿€ñÝ?d à—Àß› @  ùÀ€òÝ?d ——ø @  ùÁ€óÝ?d `—Ö„®Ù @  ù€ôÝ?d  —öq¬' @  ùÀõÝ?d à—ÃG­³ @  ùÄ€öÝ?d —Ú ^¼ @  ùÅ€÷Ý?d `—„ º @  ùÆ€øÝ?d  —¤ÿD @  ùÇ€ùÝ?d à—š2£G @  ùÈ€úÝ?d —Jz/¯ @  ùÉ€ûÝ?d `—Œi–Ž @  ùÊ€üÝ?d  —¬œ”p @  ùË€ýÝ?d à—™ª•ä @  ùÌ€þÝ?d —î5% @  ùÍ€ÿÝ?d `—‚Ù¹ @  ù΀Þ?d  —¢,G @  ùÏ€Þ?d à—1@Œ¤ @  ùЀÞ?d —áL @  ùÑ€Þ?d `—'¹m @  ùÒ€Þ?d  — @  ùÓ€Þ?d à—2غ @  ùÔ€Þ?d —'6 @  ùÕ€Þ?d `—X$l @  ùÖ€Þ?d  —xÑnâ @  ù×€ Þ?d à—FËá @  ùØ€ Þ?d —–TG  @  ùÙ€ Þ?d `—PGþ( @  ùÚ€ Þ?d  —p²üÖ @  ùÛ€ Þ?d à—E„ýB @  ùÜ€Þ?d —ØÀ]ƒ @  ùÝ€Þ?d `—ã“ei @  ùÞ€Þ?d  —Ãfg— @  ù߀Þ?d à—A ÛÄ @  ùà€Þ?d —‘DW, @  ùá€Þ?d `—WWî  @  ùâ€Þ?d€  —¶åó @  ú€Þ?d à—b’RN @  ú€Þ?d —{Ü¡A @  ú€Þ?d `—à–ª @  ú€Þ?d  —ÀcT @  ú€Þ?d à—0ø- @  ú€Þ?d —àTtÅ @  ú€Þ?d `—èõ’ž @  ú€Þ?d  —È` @  ú €Þ?d à—8j @  ú €Þ?d —¥;ÊØ @  ú €Þ?d `—Æ–0 @  ú € Þ?d  —æc2ý @  ú €!Þ?d à—È„ @  ú€"Þ?d —ÆTDl @  ú€#Þ?d `—cTœ× @  ú€$Þ?d  —C¡ž)uÐ — @  ú€%Þ?d à—³ÞdP @  ú€&Þ?d 8 —ÂÕº6 @  ú€'Þ?d x —YŸÝ @  ú€(Þ?d ¸ —yj# @  ú€)Þ?d ø —‰ãZ @  ú€*Þ?d 8!—Y]o² @  ú€+Þ?d x!—Qü‰é @  ú€,Þ?d ¸!—q ‹ @  ú€-Þ?d ø!—vqn @  ú€.Þ?d 8"—2ѯ @  ú€/Þ?d x"—â(¨ @  ú€0Þ?d ¸"—ÂÝV @  ú€1Þ?d ø"—2¢ê/ @  ú€2Þ?d 8#—âêfÇ @  ú€3Þ?d x#—Vì™Ì @  ú €4Þ?d ¸#—v›2 @  ú!€5Þ?d ø#—†faK @  ú"€6Þ?d 8$—Ÿ(’D @  ú#€7Þ?d x$—b3¯ @  ú$€8Þ?d ¸$—$—1Q @  ú%€9Þ?d ø$—ÔèË( @  ú&€:Þ?d 8%— GÀ @  ú'€;Þ?d x%— ¡› @  ú(€<Þ?d ¸%—,ô£e @  ú)€=Þ?d ø%—Ü‹Y @  ú*€>Þ?d 8&—AÏùÝ @  ú+€?Þ?d x&—Ò2 @  ú,€@Þ?d ¸&—òÇé @  ú-€AÞ?d ø&—¸î @  ú.€BÞ?d 8'—Òðbx @  ú/€CÞ?d x'—wðºÃ @  ú0€DÞ?d ¸'—W¸= @  ú1€EÞ?d ø'—§zBD @  ú2€FÞ?d 8(—“…ÎY @  ú3€GÞ?d x(—Ïo² @  ú4€HÞ?d ¸(—(:mL @  ú5€IÞ?d ø(—ØE—5 @  ú6€JÞ?d 8)— Ý @  ú7€KÞ?d x)—¬ý† @  ú8€LÞ?d ¸)— Yÿx @  ú9€MÞ?d ø)—Ð& @  ú:€NÞ?d 8*—Mb¥À @  ú;€OÞ?d x*—³xfÇ @  ú<€PÞ?d ¸*—“d9 @  ú=€QÞ?d ø*—còž@ @  ú>€RÞ?d 8+—³º¨ @  ú?€SÞ?d x+—©»ë1 @  ú@€TÞ?d ¸+—‰NéÏ @  úA€UÞ?d ø+—y1¶ @  úB€VÞ?d 8,—`๠@  úC€WÞ?d x,—û5AR @  úD€XÞ?d ¸,—ÛÀC¬ @  úE€YÞ?d ø,—+¿¹Õ @  úF€ZÞ?d 8-—û÷5= @  úG€[Þ?d x-—óVÓf @  úH€\Þ?d ¸-—ӣј @  úI€]Þ?d ø-—#Ü+á @  úJ€^Þ?d 8.—¾˜‹  @  úK€_Þ?d x.—Ý5qû @  úL€`Þ?d ¸.—ýÀs @  úM€aÞ?d ø.— ¿‰| @  úN€bÞ?d 8/—Ý÷” @  úO€cÞ?d x/—x÷Ý/ @  úP€dÞ?d ¸/—XßÑ @  úQ€eÞ?d ø/—¨}%¨ @  úR€fÞ?d 80—£™ @  úS€gÞ?d x0—é8ñ @  úT€hÞ?d ¸0—­: @  úU€iÞ?d ø0—]cÀv @  úV€jÞ?d 81—+Lž @  úW€kÞ?d x1—…ŠªÅ @  úX€lÞ?d ¸1—¥¨; @  úY€mÞ?d ø1—URB @  úZ€nÞ?d 82—ÈDòƒ @  ú[€oÞ?d x2—6^1„ @  ú\€pÞ?d ¸2—«3z @  ú]€qÞ?d ø2—æÔÉ @  ú^€rÞ?d 83—6œEë @  ú_€sÞ?d x3—‚šºà @  ú`€tÞ?d ¸3—¢o¸ @  úa€uÞ?d ø3—RBg @  úb€vÞ?d 84—K^±h @  úc€wÞ?d x4—Ѓ @  úd€xÞ?d ¸4—ðá} @  úe€yÞ?d ø4—žè @  úf€zÞ?d 85—ÐÖdì @  úg€{Þ?d x5—Øw‚· @  úh€|Þ?d ¸5—ø‚€I @  úi€}Þ?d ø5—ýz0 @  új€~Þ?d 86—•¹Úñ @  úk€Þ?d x6—‚a© @  úl€€Þ?d ¸6—;wcW @  úm€Þ?d ø6—Ë™. @  ún€‚Þ?d 87—@Æ @  úo€ƒÞ?d x7—¾@Í} @  úp€„Þ?d ¸7—žµÏƒ @  úq€…Þ?d ø7—nÊ5ú @  úr€†Þ?d 88—Z5¹ç @  ús€‡Þ?d x8—Á  @  út€ˆÞ?d ¸8—áŠò @  úu€‰Þ?d ø8—õà‹ @  úv€ŠÞ?d 89—Á½lc @  úw€‹Þ?d x9—ÉŠ8 @  úx€ŒÞ?d ¸9—ééˆÆ @  úy€Þ?d ø9—–r¿ @  úz€ŽÞ?d 8:—„ÒÒ~ @  ú{€Þ?d x:—zÈy @  ú|€Þ?d ¸:—Z=‡ @  ú}€‘Þ?d ø:—ªBéþ @  ú~€’Þ?d 8;—z e @  ú€“Þ?d x;—ƒ]¬¾ @  ú€€”Þ?d ¸;—£¨®@ @  ú€•Þ?d ø;—S×T9 @  ú‚€–Þ?d 8<—J™§6 @  úƒ€—Þ?d x<—ÑÓÝ @  ú„€˜Þ?d ¸<—ñ&# @  ú…€™Þ?d ø<—YþZ @  ú†€šÞ?d 8=—Ñr² @  ú‡€›Þ?d x=—Ù°”é @  úˆ€œÞ?d ¸=—ùE– @  ú‰€Þ?d ø=— :ln @  úŠ€žÞ?d 8>—”~̯ @  ú‹€ŸÞ?d x>—÷Ó6t @  úŒ€ Þ?d ¸>—×&4Š @  ú€¡Þ?d ø>—'YÎó @  úŽ€¢Þ?d 8?—÷B @  ú€£Þ?d x?—Rš  @  ú€¤Þ?duÐ@—7 ¸?—rä˜^ @  ú‘€¥Þ?d ø?—‚›b' @  ú’€¦Þ?d P@—A7Ø @  ú“€§Þ?d @—xlÐ @  ú”€¨Þ?d Ð@—úˆ{ @  ú•€©Þ?d A—X.A @  ú–€ªÞ?d PA—Ú¿ Ÿ @  ú—€«Þ?d A—pzþä @  ú˜€¬Þ?d ÐA—òëé: @  ú™€­Þ?d B—A¤\ @  úš€®Þ?d PB—ŸÐ³‚ @  ú›€¯Þ?d B—îe¥ @  úœ€°Þ?d ÐB—A?r{ @  ú€±Þ?d C—ã™4 @  úž€²Þ?d PC—aê @  úŸ€³Þ?d C—wjîÁ @  ú €´Þ?d ÐC—õûù @  ú¡€µÞ?d D—ž[ç· @  ú¢€¶Þ?d PD—Êði @  ú£€·Þ?d D—%äD¢ @  ú¤€¸Þ?d ÐD—§uS| @  ú¥€¹Þ?d E—Ó23 @  ú¦€ºÞ?d PE—‡B%í @  ú§€»Þ?d E—-‡Ö– @  ú¨€¼Þ?d ÐE—¯ÁH @  ú©€½Þ?d F—@¼Œ. @  úª€¾Þ?d PF—Â-›ð @  ú«€¿Þ?d F—ó´a @  ú¬€ÀÞ?d ÐF—q%vÄ @  ú­€ÁÞ?d G—Óƒ‹ @  ú®€ÂÞ?d PG—QU @  ú¯€ÃÞ?d G—VvÍÎ @  ú°€ÄÞ?d ÐG—ÔçÚ @  ú±€ÅÞ?d H—’ö»ª @  ú²€ÆÞ?d PH—g¬t @  ú³€ÇÞ?d H—)I¿ @  ú´€ÈÞ?d ÐH—«Øa @  úµ€ÉÞ?d I— ~n. @  ú¶€ÊÞ?d PI—‹ïyð @  ú·€ËÞ?d I—!*Š‹ @  ú¸€ÌÞ?d ÐI—£»U @  ú¹€ÍÞ?d J—LÐ3 @  úº€ÎÞ?d PJ—΀Çí @  ú»€ÏÞ?d J—’þÊ @  ú¼€ÐÞ?d ÐJ—o @  ú½€ÑÞ?d K—²Ég[ @  ú¾€ÒÞ?d PK—0Xp… @  ú¿€ÓÞ?d K—ˆ=œ< @  úÀ€ÔÞ?d ÐK— ¬‹â @  úÁ€ÕÞ?d L—a •J @  ú€ÖÞ?d PL—ã‚” @  úÀ×Þ?d L—Ú³6_ @  úÄ€ØÞ?d ÐL—X"! @  úÅ€ÙÞ?d M—ú„@Î @  úÆ€ÚÞ?d PM—xW @  úÇ€ÛÞ?d M—ÒФk @  úÈ€ÜÞ?d ÐM—PA³µ @  úÉ€ÝÞ?d N—¿ëþÓ @  úÊ€ÞÞ?d PN—=zé  @  úË€ßÞ?d N—ü³ö @  úÌ€àÞ?d ÐN—~"( @  úÍ€áÞ?d O—Ü„pg @  ú΀âÞ?d PO—^g¹ @  úÏ€ãÞ?d O—Yqª" @  úЀäÞ?d ÐO—Ûà½ü @  úÑ€åÞ?d P—Ðìé @  úÒ€æÞ?d PP—•Aû7 @  úÓ€çÞ?d P—¬oOü @  úÔ€èÞ?d ÐP—.þX" @  úÕ€éÞ?d Q—ŒX9m @  úÖ€êÞ?d PQ—É.³ @  ú×€ëÞ?d Q—¤ ÝÈ @  úØ€ìÞ?d ÐQ—&Ê @  úÙ€íÞ?d R—É7‡p @  úÚ€îÞ?d PR—K¦® @  úÛ€ïÞ?d R—ØF‰ @  úÜ€ðÞ?d ÐR—•IQW @  úÝ€ñÞ?d S—7ï0 @  úÞ€òÞ?d PS—µ~'Æ @  ú߀óÞ?d S—£Íí @  úà€ôÞ?d ÐS—!Ú3 @  úá€õÞ?d T—J-Ä› @  úâ€öÞ?d€ PT—¼Ïã @  û€÷Þ?d T—d3 @  û€øÞ?d ÐT—æ$ß @  û€ùÞ?d U—n¾} @  û€úÞ?d PU—ÿ©£ @  û€ûÞ?d U—gˆ¢ @  û€üÞ?d ÐU—å| @  û€ýÞ?d V—Ä` @  û€þÞ?d PV—F¾ @  û €ÿÞ?d V—Ðá' @  û €ß?d ÐV—Rpù @  û €ß?d W—5Ÿš[ @  û €ß?d PW—·… @  û €ß?d W—Óy!„ @  û€ß?d ÐW—Qè6Z @  û€ß?d X—tê6z @  û€ß?d PX—ö{!¤ @  û€ß?d X— n‚ @  û€ß?d ÐX—ˆy\ @  û€ ß?d Y—ïbãþ @  û€ ß?d PY—móô  @  û€ ß?d Y— „X! @  û€ ß?d ÐY—‹Oÿ @  û€ ß?d Z—ª ]ã @  û€ß?d PZ—(œJ= @  û€ß?d Z—±«g÷ @  û€ß?d ÐZ—3:p) @  û€ß?d [—TÕê‹ @  û€ß?d P[—ÖDýU @  û€ß?d [—²3QT @  û€ß?d Ð[—0¢FŠ @  û€ß?d \—) @  û €ß?d P\—«† Ö @  û!€ß?d \—WáFð @  û"€ß?d Ð\—ÕpQ. @  û#€ß?d ]—²ŸËŒ @  û$€ß?d P]—0ÜR @  û%€ß?d ]—TypS @  û&€ß?d Ð]—Öèg @  û'€ß?d ^—÷ðu‘ @  û(€ß?d P^—uabO @  û)€ß?d ^—qávY @  û*€ ß?d Ð^—ópa‡ @  û+€!ß?d _—”Ÿû% @  û,€"ß?d P_—ìû @  û-€#ß?d _—ry@ú @  ûuÐ`—.€$ß?d Ð_—h$X @  û/%ß?d (`—"mý @  û0&ß?d h`— ü # @  û1'ß?d ¨`—\›E @  û2(ß?d è`—Þ RÛ @  û3)ß?d (a—¹åÈy @  û4*ß?d ha—;tß§ @  û5+ß?d ¨a—_s¦ @  û6,ß?d èa—Ý’dx @  û7-ß?d (b—üŠvd @  û8.ß?d hb—~aº @  û9/ß?d ¨b—ç,Lp @  û:0ß?d èb—e½[® @  û;1ß?d (c—RÁ  @  û<2ß?d hc—€ÃÖÒ @  û=3ß?d ¨c—ä´zÓ @  û>4ß?d èc—f%m  @  û?5ß?d (d—Ñ—3 @  û@6ß?d hd—S$à @  ûA7ß?d ¨d—¯akå @  ûB8ß?d èd—-ð|; @  ûC9ß?d (e—Jæ™ @  ûD:ß?d he—ÈŽñG @  ûE;ß?d ¨e—¬ù]F @  ûF<ß?d èe—.hJ˜ @  ûG=ß?d (f—pX„ @  ûH>ß?d hf—áOZ @  ûI?ß?d ¨f—y1N] @  ûJ@ß?d èf—û Yƒ @  ûKAß?d (g—œOÃ! @  ûLBß?d hg—ÞÔÿ @  ûMCß?d ¨g—z©xþ @  ûNDß?d èg—ø8o  @  ûOEß?d (h—Ý:o @  ûPFß?d hh—_«xÞ @  ûQGß?d ¨h—£Ì7ø @  ûRHß?d èh—!] & @  ûSIß?d (i—F²º„ @  ûTJß?d hi—Ä#­Z @  ûUKß?d ¨i— T[ @  ûVLß?d èi—"Å… @  ûWMß?d (j—Ý™ @  ûXNß?d hj—LG @  ûYOß?d ¨j—{> @  ûZPß?d èj—šê)S @  û[Qß?d (k—ý³ñ @  û\Rß?d hk—”¤/ @  û]Sß?d ¨k—ã. @  û^Tß?d èk—™rð @  û_Uß?d (l—€ÇGr @  û`Vß?d hl—VP¬ @  ûaWß?d ¨l—þ1Š @  ûbXß?d èl—| T @  ûcYß?d (m—O’ö @  ûdZß?d hm—™Þ…( @  ûe[ß?d ¨m—ý©)) @  ûf\ß?d èm—8>÷ @  ûg]ß?d (n—^ ,ë @  ûh^ß?d hn—ܱ;5 @  ûi_ß?d ¨n—Ø1/# @  ûj`ß?d èn—Z 8ý @  ûkaß?d (o—=O¢_ @  ûlbß?d ho—¿Þµ @  ûmcß?d ¨o—Û©€ @  ûndß?d èo—Y8^ @  ûoeß?d (p—ö>Ñ @  ûpfß?d hp—tŠ) @  ûqgß?d ¨p—ˆíf) @  ûrhß?d èp— |q÷ @  ûsiß?d (q—m“ëU @  ûtjß?d hq—ïü‹ @  ûukß?d ¨q—‹uPŠ @  ûvlß?d èq— äGT @  ûwmß?d (r—(üUH @  ûxnß?d hr—ªmB– @  ûyoß?d ¨r—3Zo\ @  ûzpß?d èr—±Ëx‚ @  û{qß?d (s—Ö$â  @  û|rß?d hs—Tµõþ @  û}sß?d ¨s—0ÂYÿ @  û~tß?d ès—²SN! @  ûuß?d (t—æ·  @  û€vß?d ht—d&7Þ @  ûwß?d ¨t—˜Axø @  û‚xß?d èt—Ðo& @  ûƒyß?d (u—}?õ„ @  û„zß?d hu—ÿ®âZ @  û…{ß?d ¨u—›ÙN[ @  û†|ß?d èu—HY… @  û‡}ß?d (v—8PK™ @  ûˆ~ß?d hv—ºÁ\G @  û‰ß?d ¨v—S× Ò @  ûŠ€ß?d èv—ÑF  @  û‹ß?d (w—¶©„® @  ûŒ‚ß?d hw—48“p @  ûƒß?d ¨w—PO?q @  ûŽ„ß?d èw—ÒÞ(¯ @  û…ß?d (x—÷Ü( @  û†ß?d hx—uM?Q @  û‘‡ß?d ¨x—‰*pw @  û’ˆß?d èx— »g© @  û“‰ß?d (y—lTý  @  û”Šß?d hy—îÅêÕ @  û•‹ß?d ¨y—вFÔ @  û–Œß?d èy—#Q  @  û—ß?d (z—);C @  û˜Žß?d hz—«ªTÈ @  û™ß?d ¨z—2y @  ûšß?d èz—° nÜ @  û›‘ß?d ({—×ãô~ @  ûœ’ß?d h{—Urã  @  û“ß?d ¨{—1O¡ @  ûž”ß?d è{—³”X @  ûŸ•ß?d (|—ª!ý @  û –ß?d h|—(°# @  û¡—ß?d ¨|—Ô×X @  û¢˜ß?d è|—VFOÛ @  û£™ß?d (}—1©Õy @  û¤šß?d h}—³8§ @  û¥›ß?d ¨}—×On¦ @  û¦œß?d è}—UÞyx @  û§ß?d (~—tÆkd @  û¨žß?d h~—öW|º @  û©Ÿß?d ¨~—ò×h¬ @  ûª ß?d è~—pFr @  û«¡ß?d (—©åÐ @  û¬¢ß?d h—•8ò @  û­£ß?d ¨—uЀ—'ñO^ @  û®¤ß?d è—sÞIÑ @  û¯¥ß?d @€— '˜ @  û°¦ß?d €€—,h%f @  û±§ß?d À€—rk` @  û²¨ß?d —¢#óˆ @  û³©ß?d @——ò @  û´ªß?d €—·àðâ @  ûµ«ß?d À—qóIà @  û¶¬ß?d ‚—ì·é @  û·­ß?d @‚—ÒzL @  û¸®ß?d €‚—òNÿ @  û¹¯ß?d À‚—ÉÜv @  ûº°ß?d ƒ—”úý @  û»±ß?d @ƒ—,¢ûi @  û¼²ß?d €ƒ— Wù— @  û½³ß?d Àƒ—ÊD@¶ @  û¾´ß?d „—Ó ³¹ @  û¿µß?d @„—ÿg x @  ûÀ¶ß?d €„—ß’ † @  ûÁ·ß?d À„—‘Q€ @  û¸ß?d …—QÙÝh @  ûùß?d @…—dïÜü @  ûĺß?d €…—DÞ @  ûÅ»ß?d À…—‚ g# @  ûƼß?d †—MÇâ @  ûǽß?d @†—!€bá @  ûȾß?d €†—u` @  ûÉ¿ß?d À†—WÁt8 @  ûÊÀß?d ‡—‡‰øÐ @  ûËÁß?d @‡—²¿ùD @  ûÌÂß?d €‡—’Jûº @  ûÍÃß?d À‡—TYB› @  ûÎÄß?d ˆ—`¦Î† @  ûÏÅß?d @ˆ—óÊUe @  ûÐÆß?d €ˆ—Ó?W› @  ûÑÇß?d Àˆ—<  @  ûÒÈß?d ‰—]tu @  ûÓÉß?d @‰—hB€á @  ûÔÊß?d €‰—H·‚ @  ûÕËß?d À‰—ޤ;> @  ûÖÌß?d Š—à›ÿ @  û×Íß?d @Š—-->ü @  ûØÎß?d €Š— Ø< @  ûÙÏß?d ÀŠ—6‹è @  ûÚÐß?d ‹—æÃˆ @  ûÛÑß?d @‹—Óõ‰” @  ûÜÒß?d €‹—ó‹j @  ûÝÓß?d À‹—52K @  ûÞÔß?d Œ—,]ÁD @  ûßÕß?d @Œ—®7} @  ûàÖß?d €Œ—ŽÂé @  ûá×ß?d ÀŒ—ÐÁ%ï @  ûâØß?d€ —†ß¾ @  üÙß?d @—R¨H @  üÚß?d €—r]Jý @  üÛß?d À—q1 @  üÜß?d Ž—ìC¨ð @  üÝß?d @Ž— à?d €œ—Î+³v @  ü? à?d Àœ—L:©È @  ü@ à?d —œr%  @  üA à?d @—l ßY @  üB à?d €—LøÝ§ @  üC à?d À—O¢Ÿk @  üD à?d ž—Òæ?ª @  üE à?d @ž—"™ÅÓ @  üF à?d €ž—lÇ- @  üG à?d Àž—j:™a @  üH  à?d Ÿ—ºr‰ @  üI !à?d @Ÿ—J ïð @  üJ "à?d €Ÿ—jøí @  üK #àuР—?d ÀŸ—i¢¯Â @  üL $à?d  —!n­q @  üM%à?d X —ÑW @  üN&à?d ˜ —ñäUö @  üO'à?d Ø —Ìônj @  üP(à?d ¡—¼â‚ @  üQ)à?d X¡—ìÃû @  üR*à?d ˜¡—Ì6 @  üS+à?d Ø¡—ÏlXÉ @  üT,à?d ¢—R(ø @  üU-à?d X¢—¢Wq @  üV.à?d ˜¢—‚¢ @  üW/à?d Ø¢—wCg @  üX0à?d £—§ ë÷ @  üY1à?d X£—WtŽ @  üZ2à?d ˜£—wp @  ü[3à?d Ø£—tÛQ¼ @  ü\4à?d ¤—m•¢³ @  ü]5à?d X¤—êXÊ @  ü^6à?d ˜¤—½Z4 @  ü_7à?d ؤ—‘ F @  ü`8à?d ¥—AAÊð @  üa9à?d X¥—±>0‰ @  üb:à?d ˜¥—‘Ë2w @  üc;à?d Ø¥—’‘p» @  üd<à?d ¦—ÕÐz @  üe=à?d X¦—ÿª* @  üf>à?d ˜¦—ß_(ý @  üg?à?d ئ—GYc  @  üh@à?d §——ïH @  üiAà?d X§—gn1 @  üjBà?d ˜§—G›Ï @  ükCà?d ا—DÁU @  ülDà?d ¨—p>Ù @  ümEà?d X¨—€A#g @  ünFà?d ˜¨— ´!™ @  üoGà?d ب—¤ @  üpHà?d ©—Mì–í @  üqIà?d X©—½“l” @  ürJà?d ˜©—fnj @  üsKà?d Ø©—ž<,¦ @  ütLà?d ª—xŒg @  üuMà?d Xª—óv @  üvNà?d ˜ª—Óòtà @  üwOà?d ت—&p @  üxPà?d «—ö[Ÿ˜ @  üyQà?d X«—$eá @  üzRà?d ˜«—&Ñg @  ü{Sà?d Ø«—%‹%Ó @  ü|Tà?d ¬—<ÅÖÜ @  ü}Uà?d X¬—̺,¥ @  ü~Và?d ˜¬—ìO.[ @  üWà?d ج—Ô @  ü€Xà?d ­—]@ˆ< @  üYà?d X­—­?rE @  ü‚Zà?d ˜­—Êp» @  üƒ[à?d Ø­—Ž2w @  ü„\à?d ®—Ô’¶ @  ü…]à?d X®—ã«hÏ @  ü†^à?d ˜®—Ã^j1 @  ü‡_à?d Ø®—«4} @  üˆ`à?d ¯—{@¸• @  ü‰aà?d X¯—‹?Bì @  üŠbà?d ˜¯—«Ê@ @  ü‹cà?d د—¨Þ @  üŒdà?d °—N¾l @  üeà?d X°—æ1D @  üŽfà?d ˜°—ÆÄFë @  ügà?d ذ—ûÔ}w @  ühà?d ±—+œñŸ @  ü‘ià?d X±—Ûã æ @  ü’jà?d ˜±—û  @  ü“kà?d ر—øLKÔ @  ü”là?d ²—eë @  ü•mà?d X²—•wl @  ü–nà?d ˜²—µ‚’ @  ü—oà?d ز—@ct @  ü˜pà?d ³—+øê @  ü™qà?d X³—`T“ @  üšrà?d ˜³—@¡m @  ü›sà?d س—CûB¡ @  üœtà?d ´—Zµ±® @  üuà?d X´—ªÊK× @  üžvà?d ˜´—Š?I) @  üŸwà?d Ø´—¦)U @  ü xà?d µ—vaÙí @  ü¡yà?d Xµ—†#” @  ü¢zà?d ˜µ—¦ë!j @  ü£{à?d ص—¥±c¦ @  ü¤|à?d ¶—8õÃg @  ü¥}à?d X¶—ÈŠ9 @  ü¦~à?d ˜¶—è;à @  ü§à?d ض—m¿$/ @  ü¨€à?d ·—½÷¨Ç @  ü©à?d X·—MˆR¾ @  üª‚à?d ˜·—m}P@ @  ü«ƒà?d Ø·—n'Œ @  ü¬„à?d ¸—ZØž‘ @  ü­…à?d X¸—ª§dè @  ü®†à?d ˜¸—ŠRf @  ü¯‡à?d ظ—·B]Š @  ü°ˆà?d ¹—g Ñb @  ü±‰à?d X¹——u+ @  ü²Šà?d ˜¹—·€)å @  ü³‹à?d ع—´Úk) @  ü´Œà?d º—)žËè @  üµà?d Xº—Ùá1‘ @  ü¶Žà?d ˜º—ù3o @  ü·à?d غ— õTÿ @  ü¸à?d »—ܽØ @  ü¹‘à?d X»—,Â"n @  üº’à?d ˜»— 7  @  ü»“à?d Ø»—mb\ @  ü¼”à?d ¼—#‘S @  ü½•à?d X¼—æ\k* @  ü¾–à?d ˜¼—Æ©iÔ @  ü¿—à?d ؼ—D¸sj @  üÀ˜à?d ½—”ðÿ‚ @  üÁ™à?d X½—dû @  üšà?d ˜½—Dz @  üÛà?d ؽ—G EÉ @  üÄœà?d ¾—Údå @  üÅà?d X¾—*q @  üÆžà?d ˜¾— î @  üÇŸà?d ؾ—b¸Cà @  üÈ à?d ¿—²ðÏ+ @  üÉ¡à?d X¿—B5R @  üÊ¢à?d ˜¿—bz7¬ @uÐÀ—  üË£à?d Ø¿—a u` @  ṳ̈à?d 0À—Ð$2 @  üÍ¥à?d pÀ—õ¯ÞK @  üΦà?d °À—ÕZܵ @  üϧà?d ðÀ—èJç) @  üШà?d 0Á—8kÁ @  üÑ©à?d pÁ—È}‘¸ @  üÒªà?d °Á—舓F @  üÓ«à?d ðÁ—ëÒÑŠ @  üÔ¬à?d 0—v–qK @  üÕ­à?d p—†é‹2 @  üÖ®à?d °Â—¦‰Ì @  üׯà?d ð—Sýî\ @  üذà?d 0׃µb´ @  üÙ±à?d p×sʘÍ @  üÚ²à?d °Ã—S?š3 @  üÛ³à?d ð×PeØÿ @  üÜ´à?d 0Ä—I++ð @  üݵà?d pÄ—¹Tщ @  üÞ¶à?d °Ä—™¡Ów @  üß·à?d ðÄ—µ·Ï[ @  üà¸à?d 0Å—eÿC³ @  üá¹à?d pÅ—•€¹Ê @  üâºà?d€ °Å—Á¶§’ @  ý»à?d ðÅ—#­­w @  ý¼à?d 0Æ—¾é ¶ @  ý½à?d pÆ—‹ß " @  ý¾à?d °Æ—«*Ü @  ý¿à?d ðÆ—ýžû @  ýÀà?d 0Ç—-Ö– @  ýÁà?d pÇ—3 @  ýÂà?d °Ç—3î1î @  ý Ãà?d ðÇ—õýˆÏ @  ý Äà?d 0È—ÁÒ @  ý Åà?d pÈ—ô4F @  ý Æà?d °È—ÔÁ¸ @  ý Çà?d ðÈ—ŠÂ]¾ @  ýÈà?d 0É—ZŠÑV @  ýÉà?d pÉ—ÉæJµ @  ýÊà?d °É—éHK @  ýËà?d ðÉ—/ñj @  ýÌà?d 0Ê—²DQ« @  ýÍà?d pÊ—‡rP? @  ýÎà?d °Ê—§‡RÁ @  ýÏà?d ðÊ—œÔj+ @  ýÐà?d 0Ë—LœæÃ @  ýÑà?d pË—rQCÀ @  ýÒà?d °Ë—R¤A> @  ýÓà?d ðË—”·ø @  ýÔà?d 0Ì—ù  @  ýÕà?d pÌ—¸Ï „ @  ýÖà?d °Ì—˜:z @  ý×à?d ðÌ—Æ9R| @  ýØà?d 0Í—qÞ” @  ýÙà?d pÍ—”bÇ @  ý Úà?d °Í—´î`9 @  ý!Ûà?d ðÍ—rýÙ @  ý"Üà?d 0Ηï¹yÙ @  ý#Ýà?d pΗÚxM @  ý$Þà?d °Î—úzz³ @  ý%ßà?d ðΗ\ž{… @  ý&àà?d 0Ï—ŒÖ÷m @  ý'áà?d pÏ—²Rn @  ý(âà?d °Ï—’îP @  ý)ãà?d ðÏ—Týé± @  ý*äà?d 0Зê#U @  ý+åà?d pЗßT— @  ý,æà?d °Ð—ÿàVi @  ý-çà?d ðЗ¡ã o @  ý.èà?d 0Ñ—q«€‡ @  ý/éà?d pÑ—âÇd @  ý0êà?d °Ñ—Â2š @  ý1ëà?d ðÑ—! » @  ý2ìà?d 0Ò—™ez @  ý3íà?d pÒ—¬Sî @  ý4îà?d °Ò—Œ¦ @  ý5ïà?d ðÒ—·õ;ú @  ý6ðà?d 0Ó—g½· @  ý7ñà?d pÓ—Yp @  ý8òà?d °Ó—y…ï @  ý9óà?d ðÓ—¿–©Î @  ý:ôà?d 0Ô—¦ØZÁ @  ý;õà?d pÔ—“î[U @  ý<öà?d °Ô—³Y« @  ý=÷à?d ðÔ—í­ @  ý>øà?d 0Õ—=PE @  ý?ùà?d pÕ—=5„ @  ý@úà?d °Õ—1È7z @  ýAûà?d ðÕ—÷ÛŽ[ @  ýBüà?d 0Ö—jŸ.š @  ýCýà?d pÖ—_©/ @  ýDþà?d °Ö—\-ð @  ýEÿà?d ðÖ—KI8I @  ýFá?d 0×—›´¡ @  ýGá?d p×—¥Ì¢ @  ýHá?d °×—…9\ @  ýIá?d ð×—C*ª} @  ýJá?d 0Ø—wÕ&` @  ýKá?d pØ—Bã'ô @  ýLá?d °Ø—b%  @  ýMá?d ðØ—<  @  ýNá?d 0Ù—ì]óä @  ýO á?d pÙ—1h @  ýP á?d °Ù—_Äjù @  ýQ á?d ðÙ—™×ÓØ @  ýR á?d 0Ú—“s @  ýS á?d pÚ—1¥r @  ýTá?d °Ú—Pps @  ýUá?d ðÚ—*H™ @  ýVá?d 0Û—úKÄq @  ýWá?d pÛ—Ćar @  ýXá?d °Û—äscŒ @  ýYá?d ðÛ—"`Ú­ @  ýZá?d 0Ü—;.)¢ @  ý[á?d pÜ—(6 @  ý\á?d °Ü—.í*È @  ý]á?d ðÜ—pîpÎ @  ý^á?d 0Ý— ¦ü& @  ý_á?d pÝ—"Ì@u @  ý`á?d °Ý—9B‹ @  ýaá?d ðÝ—Ä*ûª @  ýbá?d 0Þ—Yn[k @  ýcá?d pÞ—lXZÿ @  ýdá?d °Þ—L­X @  ýeá?d ðÞ—êIY7 @  ýf á?d 0ß—:Õß @  ýg!á?d pß—ÌpÜ @  ýh"á?d uÐà—/°ß—$9r" @  ýi#á?d ðß—â*Ë @  ýj$á?d Hà—ûŽ•õ @  ýk%á?d ˆà—lÜA @  ýl&á?d Èà—îM–Ÿ @  ým'á?d á—â—W¯ @  ýn(á?d Há—`@q @  ýo)á?d ˆá—Qβ @  ýp*á?d Èá—ÓŸÙl @  ýq+á?d â— Y×R @  ýr,á?d Hâ—ˆÈÀŒ @  ýs-á?d ˆâ—šÔ8 @  ýt.á?d Èâ— Ãæ @  ýu/á?d ã—ô`: @  ýv0á?d Hã—vwä @  ýw1á?d ˆã—ê¹ÇÇ @  ýx2á?d Èã—h(Ð @  ýy3á?d ä—5äé @  ýz4á?d Hä—·uš7 @  ý{5á?d ˆä— 'Žƒ @  ý|6á?d Èä—¢¶™] @  ý}7á?d å—®lXm @  ý~8á?d Hå—,ýO³ @  ý9á?d ˆå—A¢Ðc @  ý€:á?d Èå—Ã3ǽ @  ý;á?d æ—õɃ @  ý‚<á?d Hæ—˜dÞ] @  ýƒ=á?d ˆæ—6Êé @  ý„>á?d Èæ—§Ý7 @  ý…?á?d ç—‰ÊR& @  ý†@á?d Hç— [Eø @  ý‡Aá?d ˆç——òõÛ @  ýˆBá?d Èç—câ @  ý‰Cá?d è—eÀç @  ýŠDá?d Hè—ç×9 @  ý‹Eá?d ˆè—pÝà @  ýŒFá?d Èè—òLÔS @  ýGá?d é—þ–c @  ýŽHá?d Hé—|½ @  ýIá?d ˆé—MŒ~ @  ýJá?d Èé—Ïž›  @  ý‘Ká?d ê—X•ž @  ý’Lá?d Hꗔɂ@ @  ý“Má?d ˆê—›–ô @  ý”Ná?d Èê— * @  ý•Oá?d ë—è€"ö @  ý–Pá?d Hë—j5( @  ý—Qá?d ˆë—ö¸…  @  ý˜Rá?d Èë—t)’Õ @  ý™Sá?d ì—)åÏ% @  ýšTá?d Hì—«tØû @  ý›Uá?d ˆì—<&ÌO @  ýœVá?d Èì—¾·Û‘ @  ýWá?d í—²m¡ @  ýžXá?d Hí—0ü  @  ýŸYá?d ˆí—ò¤  @  ý Zá?d Èí—’c³Ò @  ý¡[á?d î—K¥½ì @  ý¢\á?d Hî—É4ª2 @  ý£]á?d ˆî—^f¾† @  ý¤^á?d Èî—Ü÷©X @  ý¥_á?d ï—(Ê3X @  ý¦`á?d Hï—ª[$† @  ý§aá?d ˆï—6ò”¥ @  ý¨bá?d Èï—´cƒ{ @  ý©cá?d ð—N?‘6 @  ýªdá?d Hð—Ì®†è @  ý«eá?d ˆð—[ü’\ @  ý¬fá?d Èð—Ùm…‚ @  ý­gá?d ñ—Õ·D² @  ý®há?d Hñ—W&Sl @  ý¯iá?d ˆñ—f.ݯ @  ý°já?d Èñ—ä¿Êq @  ý±ká?d ò—=yÄO @  ý²lá?d Hò—¿èÓ‘ @  ý³má?d ˆò—(ºÇ% @  ý´ná?d Èò—ª+Ðû @  ýµoá?d ó—ás' @  ý¶pá?d Hó—A0dù @  ý·qá?d ˆó—Ý™ÔÚ @  ý¸rá?d Èó—_à @  ý¹sá?d ô—Äžô @  ýºtá?d Hô—€U‰* @  ý»uá?d ˆô—ž @  ý¼vá?d Èô—•–Š@ @  ý½wá?d õ—™LKp @  ý¾xá?d Hõ—Ý\® @  ý¿yá?d ˆõ—•ÔóO @  ýÀzá?d Èõ—Eä‘ @  ýÁ{á?d ö—΃ê¯ @  ýÂ|á?d Hö—Lýq @  ýÃ}á?d ˆö—Û@éÅ @  ýÄ~á?d Èö—YÑþ @  ýÅá?d ÷—@z%˜ @  ýÆ€á?d H÷—Âë2F @  ýÇá?d ˆ÷—^B‚e @  ýÈ‚á?d È÷—ÜÓ•» @  ýɃá?d ø—¬®·Y @  ýÊ„á?d Hø—.? ‡ @  ýË…á?d ˆø—¹m´3 @  ý̆á?d Èø—;ü£í @  ý͇á?d ù—7&bÝ @  ýΈá?d Hù—µ·u @  ýωá?d ˆù—„¿ûÀ @  ýЊá?d Èù—.ì @  ýÑ‹á?d ú—ßèâ  @  ýÒŒá?d Hú—]yõþ @  ýÓá?d ˆú—Ê+áJ @  ýÔŽá?d Èú—Hºö” @  ýÕá?d û—!0UH @  ýÖá?d Hû—£¡B– @  ýבá?d ˆû—?òµ @  ýØ’á?d Èû—½™åk @  ýÙ“á?d ü—àU¸› @  ýÚ”á?d Hü—bįE @  ýÛ•á?d ˆü—õ–»ñ @  ýÜ–á?d Èü—w¬/ @  ýÝ—á?d ý—{Ým @  ýÞ˜á?d Hý—ùLzÁ @  ýß™á?d ˆý—ÙBÓ² @  ýàšá?d Èý—[ÓÄl @  ýá›á?d þ—‚ÊR @  ýâœá?d€ Hþ—ÁÃ*Œ @  þá?d ˆþ—·Ðv @  þžá?d Èþ—5AaÏ @  þŸá?d ÿ—5" @  þ á?d Hÿ—†¤ü @  þ¡á?d ˆÿ—Ô¿ø¥ @  þuИ¢á?d Èÿ—V.ï{ @  þ£á?d ˜eÊ- @  þ¤á?d `˜ç[ó @  þ ¥á?d  ˜µ@îª @  þ ¦á?d à˜7Ñùt @  þ §á?d ˜þBé @  þ ¨á?d `˜|ÓÔw @  þ ©á?d  ˜.È;. @  þªá?d à˜¬Y,ð @  þ«á?d ˜ŒCT @  þ¬á?d `˜”TŠ @  þ­á?d  ˜Æ»Ó @  þ®á?d à˜D—¬  @  þ¯á?d ˜èTô< @  þ°á?d `˜jÅãâ @  þ±á?d  ˜8Þ » @  þ²á?d à˜ºOe @  þ³á?d ˜)1ï @  þ´á?d `˜« 1 @  þµá?d  ˜ù»áh @  þ¶á?d à˜{*ö¶ @  þ·á?d ˜²¹Ìk @  þ¸á?d `˜0(Ûµ @  þ¹á?d  ˜b34ì @  þºá?d à˜à¢#2 @  þ»á?d ˜Kqk& @  þ ¼á?d `˜Éà|ø @  þ!½á?d  ˜›û“¡ @  þ"¾á?d à˜j„ @  þ#¿á?d ˜ØNðƒ @  þ$Àá?d `˜Zßç] @  þ%Áá?d  ˜Ä @  þ&Âá?d à˜ŠUÚ @  þ'Ãá?d ˜4šbB @  þ(Äá?d `˜¶ uœ @  þ)Åá?d  ˜äšÅ @  þ*Æá?d à˜f @  þ+Çá?d ˜¯·Æ @  þ,Èá?d ` ˜-ƒ  @  þ-Éá?d   ˜˜OA @  þ.Êá?d à ˜ý XŸ @  þ/Ëá?d ˜GÜ7; @  þ0Ìá?d ` ˜ÅM å @  þ1Íá?d   ˜—Vϼ @  þ2Îá?d à ˜ÇØb @  þ3Ïá?d ˜¹€S @  þ4Ðá?d ` ˜;•— @  þ5Ñá?d   ˜iŽxÔ @  þ6Òá?d à ˜ëo  @  þ7Óá?d ˜xam€ @  þ8Ôá?d ` ˜úðz^ @  þ9Õá?d   ˜¨ë• @  þ:Öá?d à ˜*z‚Ù @  þ;×á?d ˜ãé¸ @  þ<Øá?d ` ˜ax¯Ú @  þ=Ùá?d   ˜3c@ƒ @  þ>Úá?d à ˜±òW] @  þ?Ûá?d ˜´&Û @  þ@Üá?d `˜6· @  þAÝá?d  ˜d¬á\ @  þBÞá?d à˜æ=ö‚ @  þCßá?d ˜×I—o @  þDàá?d `˜UØ€± @  þEáá?d  ˜Ãoè @  þFâá?d à˜…Rx6 @  þGãá?d ˜±¼5 @  þHäá?d `˜3-"ß @  þIåá?d  ˜a6͆ @  þJæá?d à˜ã§ÚX @  þKçá?d ˜*4à… @  þLèá?d `˜¨¥÷[ @  þMéá?d  ˜ú¾ @  þNêá?d à˜x/Ü @  þOëá?d ˜Âú`x @  þPìá?d `˜@kw¦ @  þQíá?d  ˜p˜ÿ @  þRîá?d à˜á! @  þSïá?d ˜<"× @  þTðá?d `˜¾³ÀÎ @  þUñá?d  ˜ì¨/— @  þVòá?d à˜n98I @  þWóá?d ˜ýG:à @  þXôá?d `˜Ö- @  þYõá?d  ˜-ÍÂD @  þZöá?d à˜¯\Õš @  þ[÷á?d ˜fÏïG @  þ\øá?d `˜ä^ø™ @  þ]ùá?d  ˜¶EÀ @  þ^úá?d à˜4Ô @  þ_ûá?d ˜ŸH  @  þ`üá?d `˜–_Ô @  þaýá?d  ˜O° @  þbþá?d à˜Í§S @  þcÿá?d ˜Ü»ç @  þdâ?d `˜^*ðÊ @  þeâ?d  ˜ 1“ @  þfâ?d à˜Ž M @  þgâ?d ˜0ouÕ @  þhâ?d `˜²þb  @  þiâ?d  ˜àåR @  þjâ?d à˜btšŒ @  þkâ?d ˜«ç Q @  þlâ?d `˜)v· @  þm â?d  ˜{mXÖ @  þn â?d à˜ùüO @  þo â?d ˜C) ¬ @  þp â?d `˜Á¸7r @  þq â?d  ˜“£Ø+ @  þrâ?d à˜2Ïõ @  þsâ?d ˜½ñ—Ä @  þtâ?d `˜?`€ @  þuâ?d  ˜m{oC @  þvâ?d à˜ïêx @  þwâ?d ˜|”z @  þxâ?d `˜þmÉ @  þyâ?d  ˜¬‚ @  þzâ?d à˜.•N @  þ{â?d ˜ç¯“ @  þ|â?d `˜e¸M @  þ}â?d  ˜7–W @  þ~â?d à˜µ@Ê @  þâ?d ˜S…>} @  þ€â?d `˜Ñ)£ @  þâ?d  ˜ƒÆú @  þ‚â?d à˜žÑ$ @  þƒâ?d ˜0ê°É @  þ„ â?d `˜²{§ @  þ…!â?d  ˜à`HNuÐ ˜ @  þ†"â?d à˜bñ_ @  þ‡#â?d 8 ˜™Êps @  þˆ$â?d x ˜­ @  þ‰%â?d ¸ ˜I@ˆô @  þŠ&â?d ø ˜ËÑŸ* @  þ‹'â?d 8!˜B¥÷ @  þŒ(â?d x!˜€Ó²) @  þ)â?d ¸!˜ÒÈ]p @  þŽ*â?d ø!˜PYJ® @  þ+â?d 8"˜êŒ%  @  þ,â?d x"˜h2Ô @  þ‘-â?d ¸"˜:Ý @  þ’.â?d ø"˜¸—ÊS @  þ“/â?d 8#˜T’b @  þ”0â?d x#˜–Å…¼ @  þ•1â?d ¸#˜ÄÞjå @  þ–2â?d ø#˜FO}; @  þ—3â?d 8$˜Õ1± @  þ˜4â?d x$˜W ho @  þ™5â?d ¸$˜»‡6 @  þš6â?d ø$˜‡*è @  þ›7â?d 8%˜N¹ª5 @  þœ8â?d x%˜Ì(½ë @  þ9â?d ¸%˜ž3R² @  þž:â?d ø%˜¢El @  þŸ;â?d 8&˜·q x @  þ <â?d x&˜5ঠ@  þ¡=â?d ¸&˜gûõÿ @  þ¢>â?d ø&˜åjâ! @  þ£?â?d 8'˜$N–Ý @  þ¤@â?d x'˜¦ß @  þ¥Aâ?d ¸'˜ôÄnZ @  þ¦Bâ?d ø'˜vUy„ @  þ§Câ?d 8(˜Èš @  þ¨Dâ?d x(˜J  @  þ©Eâ?d ¸(˜ü› @  þªFâ?d ø(˜šëE @  þ«Gâ?d 8)˜Sј @  þ¬Hâ?d x)˜уÆF @  þ­Iâ?d ¸)˜ƒ˜) @  þ®Jâ?d ø)˜ >Á @  þ¯Kâ?d 8*˜»ÜQe @  þ°Lâ?d x*˜9MF» @  þ±Mâ?d ¸*˜kV©â @  þ²Nâ?d ø*˜éǾ< @  þ³Oâ?d 8+˜Eæ  @  þ´Pâ?d x+˜Ç•ñÓ @  þµQâ?d ¸+˜•ŽŠ @  þ¶Râ?d ø+˜ T @  þ·Sâ?d 8,˜„a Þ @  þ¸Tâ?d x,˜ð @  þ¹Uâ?d ¸,˜TëóY @  þºVâ?d ø,˜Özä‡ @  þ»Wâ?d 8-˜éÞZ @  þ¼Xâ?d x-˜xÉ„ @  þ½Yâ?d ¸-˜Ïc&Ý @  þ¾Zâ?d ø-˜Mò1 @  þ¿[â?d 8.˜H&… @  þÀ\â?d x.˜Ê·h[ @  þÁ]â?d ¸.˜˜¬‡ @  þÂ^â?d ø.˜=Ü @  þÃ_â?d 8/˜+Iñ1 @  þÄ`â?d x/˜©Øæï @  þÅaâ?d ¸/˜ûà ¶ @  þÆbâ?d ø/˜yRh @  þÇcâ?d 80˜M¼S_ @  þÈdâ?d x0˜Ï-D @  þÉeâ?d ¸0˜6«Ø @  þÊfâ?d ø0˜§¼ @  þËgâ?d 81˜Ö4†Û @  þÌhâ?d x1˜T¥‘ @  þÍiâ?d ¸1˜¾~\ @  þÎjâ?d ø1˜„/i‚ @  þÏkâ?d 82˜>ú& @  þÐlâ?d x2˜¼kø @  þÑmâ?d ¸2˜îpþ¡ @  þÒnâ?d ø2˜láé @  þÓoâ?d 83˜À"±N @  þÔpâ?d x3˜B³¦ @  þÕqâ?d ¸3˜¨IÉ @  þÖrâ?d ø3˜’9^ @  þ×sâ?d 84˜G\ @  þØtâ?d x4˜ƒÖKC @  þÙuâ?d ¸4˜Ñͤ @  þÚvâ?d ø4˜S\³Ä @  þÛwâ?d 85˜šÏ‰ @  þÜxâ?d x5˜^žÇ @  þÝyâ?d ¸5˜JEqž @  þÞzâ?d ø5˜ÈÔf@ @  þß{â?d 86˜c.T @  þà|â?d x6˜á–9Š @  þá}â?d ¸6˜³ÖÓ @  þâ~â?d€ ø6˜EßÝ« @  ÿâ?d 87˜x|µì @  ÿ€â?d x7˜úí¢2 @  ÿâ?d ¸7˜m¿¶† @  ÿ‚â?d ø7˜ï.¡X @  ÿƒâ?d 88˜ŸSƒº @  ÿ„â?d x8˜”d @  ÿ…â?d ¸8˜k$G @  ÿ†â?d ø8˜ú3™ @  ÿ ‡â?d 89˜ ò© @  ÿ ˆâ?d x9˜±åw @  ÿ ‰â?d ¸9˜ãñà @  ÿ Šâ?d ø9˜˜ræ @  ÿ ‹â?d 8:˜A´è# @  ÿŒâ?d x:˜Ã%ÿý @  ÿâ?d ¸:˜ò-q> @  ÿŽâ?d ø:˜p¼fà @  ÿâ?d 8;˜6Å< @  ÿâ?d x;˜›§Òâ @  ÿ‘â?d ¸;˜ õÆV @  ÿ’â?d ø;˜Ždш @  ÿ“â?d 8<˜Ó¨Œx @  ÿ”â?d x<˜Q9›¦ @  ÿ•â?d ¸<˜Í+… @  ÿ–â?d ø<˜O<[ @  ÿ—â?d 8=˜CÛýk @  ÿ˜â?d x=˜ÁJêµ @  ÿ™â?d ¸=˜Vþ @  ÿšâ?d ø=˜Ô‰éß @  ÿ›â?d 8>˜ Oçá @  ÿœâ?d x>˜Þð? @  ÿâ?d ¸>˜¯ÐYL @  ÿ žâ?d ø>˜-AN’ @  ÿ!Ÿâ?d 8?˜Ù|Ô’ @  ÿ" â?d x?˜[íÃL @  ÿ#¡â?duÐ@˜7 ¸?˜Ì¿×ø @  ÿ$¢â?d ø?˜N.À& @  ÿ%£â?d P@˜ÉÔå @  ÿ&¤â?d @˜éõÖ @  ÿ'¥â?d Ð@˜×8s @  ÿ(¦â?d A˜pÿð @  ÿ)§â?d PA˜Ys¥ö @  ÿ*¨â?d A˜y†§ @  ÿ+©â?d ÐA˜L°¦œ @  ÿ,ªâ?d B˜Ñô] @  ÿ-«â?d PB˜ç¿| @  ÿ.¬â?d B˜7½‚ @  ÿ/­â?d ÐB˜¤~&a @  ÿ0®â?d C˜t6ª‰ @  ÿ1¯â?d PC˜Oe’c @  ÿ2°â?d C˜o @  ÿ3±â?d ÐC˜Z¦‘  @  ÿ4²â?d D˜Cèb @  ÿ5³â?d PD˜…ûÛ' @  ÿ6´â?d D˜¥ÙÙ @  ÿ7µâ?d ÐD˜›Ã|Ú @  ÿ8¶â?d E˜K‹ð2 @  ÿ9·â?d PE˜ˆª4 @  ÿ:¸â?d E˜5}¨Ê @  ÿ;¹â?d ÐE˜K©^ @  ÿ<ºâ?d F˜ Ÿ @  ÿ=»â?d PF˜[°¾ @  ÿ>¼â?d F˜{é²@ @  ÿ?½â?d ÐF˜W„ @  ÿ@¾â?d G˜‡Ì„i @  ÿA¿â?d PG˜ÑxN @  ÿBÀâ?d G˜ñ’° @  ÿCÁâ?d ÐG˜Ä»“$ @  ÿDÂâ?d H˜ðD9 @  ÿEÃâ?d PH˜6W¦ @  ÿFÄâ?d H˜¢¤æ @  ÿGÅâ?d ÐH˜(oå @  ÿHÆâ?d I˜ø'  @  ÿIÇâ?d PI˜¦$×  @  ÿJÈâ?d I˜†ÑÕõ @  ÿKÉâ?d ÐI˜³çÔa @  ÿLÊâ?d J˜.£t  @  ÿMËâ?d PJ˜è°Í @  ÿNÌâ?d J˜ÈEÏ @  ÿOÍâ?d ÐJ˜[)Tœ @  ÿPÎâ?d K˜‹aØt @  ÿQÏâ?d PK˜°2àž @  ÿRÐâ?d K˜Çâ` @  ÿSÑâ?d ÐK˜¥ñãô @  ÿTÒâ?d L˜¼¿û @  ÿUÓâ?d PL˜z¬©Ú @  ÿVÔâ?d L˜ZY«$ @  ÿWÕâ?d ÐL˜d”' @  ÿXÖâ?d M˜´Ü‚Ï @  ÿY×â?d PM˜êߨÉ @  ÿZØâ?d M˜Ê*Ú7 @  ÿ[Ùâ?d ÐM˜ÿÛ£ @  ÿ\Úâ?d N˜bX{b @  ÿ]Ûâ?d PN˜¤KÂC @  ÿ^Üâ?d N˜„¾À½ @  ÿ_Ýâ?d ÐN˜Ô|î @  ÿ`Þâ?d O˜Öœð @  ÿaßâ?d PO˜pxñ0 @  ÿbàâ?d O˜PóÎ @  ÿcáâ?d ÐO˜e»òZ @  ÿdââ?d P˜ÛeNè @  ÿeãâ?d PP˜v÷É @  ÿfäâ?d P˜=ƒõ7 @  ÿgåâ?d ÐP˜NP4 @  ÿhæâ?d Q˜ÓÜÜ @  ÿiçâ?d PQ˜†Ú @  ÿjèâ?d Q˜­ð„$ @  ÿkéâ?d ÐQ˜˜Æ…° @  ÿlêâ?d R˜‚%q @  ÿmëâ?d PR˜ÑœP @  ÿnìâ?d R˜ãdž® @  ÿoíâ?d ÐR˜pM @  ÿpîâ?d S˜ @‰¥ @  ÿqïâ?d PS˜›±O @  ÿrðâ?d S˜»æ³± @  ÿsñâ?d ÐS˜ŽÐ²% @  ÿtòâ?d T˜—žA* @  ÿuóâ?d PT˜Qø  @  ÿvôâ?d T˜qxúõ @  ÿwõâ?d ÐT˜Oµ_ö @  ÿxöâ?d U˜ŸýÓ @  ÿy÷â?d PU˜Áþ‰ @  ÿzøâ?d U˜á ‹æ @  ÿ{ùâ?d ÐU˜Ô=Šr @  ÿ|úâ?d V˜Iy*³ @  ÿ}ûâ?d PV˜j“’ @  ÿ~üâ?d V˜¯Ÿ‘l @  ÿýâ?d ÐV˜`¤œ @  ÿ€þâ?d W˜°ì—t @  ÿÿâ?d PW˜„ù‚Í @  ÿ‚ã?d W˜¤ €3 @  ÿƒã?d ÐW˜‘:§ @  ÿ„ã?d X˜¥Å º @  ÿ…ã?d PX˜cÖ´› @  ÿ†ã?d X˜C#¶e @  ÿ‡ã?d ÐX˜}îf @  ÿˆã?d Y˜­¦ŸŽ @  ÿ‰ã?d PY˜ó¥Åˆ @  ÿŠã?d Y˜ÓPÇv @  ÿ‹ ã?d ÐY˜æfÆâ @  ÿŒ ã?d Z˜{"f# @  ÿ ã?d PZ˜½1ß @  ÿŽ ã?d Z˜ÄÝü @  ÿ ã?d ÐZ˜¨F @  ÿã?d [˜ÞàÊ÷ @  ÿ‘ã?d P[˜å³ò @  ÿ’ã?d [˜ÅFðã @  ÿ“ã?d Ð[˜ðpñw @  ÿ”ã?d \˜é>x @  ÿ•ã?d P\˜/-»Y @  ÿ–ã?d \˜ع§ @  ÿ—ã?d Ð\˜1¤ @  ÿ˜ã?d ]˜á]L @  ÿ™ã?d P]˜¿^ÊJ @  ÿšã?d ]˜Ÿ«È´ @  ÿ›ã?d Ð]˜ªÉ  @  ÿœã?d ^˜7Ùiá @  ÿã?d P^˜ñÊÐÀ @  ÿžã?d ^˜Ñ?Ò> @  ÿŸã?d Ð^˜SUnm @  ÿ ã?d _˜ƒâ… @  ÿ¡ã?d P_˜%ùã³ @  ÿ¢ ã?d _˜ áM @  ÿuÐ`˜£!ã?d Ð_˜0:àÙ @  ÿ¤"ã?d (`˜ŽÂUA @  ÿ¥#ã?d h`˜HÑì` @  ÿ¦$ã?d ¨`˜h$îž @  ÿ§%ã?d è`˜VéK @  ÿ¨&ã?d (a˜†¡Çu @  ÿ©'ã?d ha˜Ø¢s @  ÿª(ã?d ¨a˜øWŸ @  ÿ«)ã?d èa˜Íaž @  ÿ¬*ã?d (b˜P%>Ø @  ÿ­+ã?d hb˜–6‡ù @  ÿ®,ã?d ¨b˜¶Ã… @  ÿ¯-ã?d èb˜%¯ä @  ÿ°.ã?d (c˜õç’  @  ÿ±/ã?d hc˜릑 @  ÿ²0ã?d ¨c˜îA¨ @  ÿ³1ã?d èc˜Ûw©Œ @  ÿ´2ã?d (d˜Â9Zƒ @  ÿµ3ã?d hd˜*㢠@  ÿ¶4ã?d ¨d˜$ßá\ @  ÿ·5ã?d èd˜D_ @  ÿ¸6ã?d (e˜ÊZÈ· @  ÿ¹7ã?d he˜”Y’± @  ÿº8ã?d ¨e˜´¬O @  ÿ»9ã?d èe˜š‘Û @  ÿ¼:ã?d (f˜Þ1 @  ÿ½;ã?d hf˜Ú͈; @  ÿ¾<ã?d ¨f˜ú8ŠÅ @  ÿ¿=ã?d èf˜ÖU0 @  ÿÀ>ã?d (g˜¼ì @  ÿÁ?ã?d hg˜P©¨Ë @  ÿÂ@ã?d ¨g˜p\ª5 @  ÿÃAã?d èg˜Ej«¡ @  ÿÄBã?d (h˜q•'¼ @  ÿÅCã?d hh˜·†ž @  ÿÆDã?d ¨h˜—sœc @  ÿÇEã?d èh˜©¾9` @  ÿÈFã?d (i˜yöµˆ @  ÿÉGã?d hi˜'õïŽ @  ÿÊHã?d ¨i˜íp @  ÿËIã?d èi˜26ìä @  ÿÌJã?d (j˜¯rL% @  ÿÍKã?d hj˜iaõ @  ÿÎLã?d ¨j˜I”÷ú @  ÿÏMã?d èj˜Úøl @  ÿÐNã?d (k˜ °àñ @  ÿÑOã?d hk˜1ãØ @  ÿÒPã?d ¨k˜Úå @  ÿÓQã?d èk˜$ Ûq @  ÿÔRã?d (l˜=n(~ @  ÿÕSã?d hl˜û}‘_ @  ÿÖTã?d ¨l˜Ûˆ“¡ @  ÿ×Uã?d èl˜åE6¢ @  ÿØVã?d (m˜5 ºJ @  ÿÙWã?d hm˜kàL @  ÿÚXã?d ¨m˜Kûâ² @  ÿÛYã?d èm˜~Íã& @  ÿÜZã?d (n˜ã‰Cç @  ÿÝ[ã?d hn˜%šúÆ @  ÿÞ\ã?d ¨n˜oø8 @  ÿß]ã?d èn˜‡Dk @  ÿà^ã?d (o˜WMȃ @  ÿá_ã?d ho˜ñ©Éµ @  ÿâ`ã?d€ ¨o˜"H @  aã?d èo˜önTõ @  bã?d (p˜H°èG @  cã?d hp˜Kꪋ @  dã?d ¨p˜k¨u @  eã?d èp˜›`R  @  fã?d (q˜K(Þä @  gã?d hq˜Û™Û˜ @  hã?d ¨q˜ûlÙf @   iã?d èq˜ # @   jã?d (r˜–WƒÞ @   kã?d hr˜• Á @   lã?d ¨r˜µøÃì @   mã?d èr˜E‡9• @  nã?d (s˜•ϵ} @  oã?d hs˜Íì  @  pã?d ¨s˜ízîó @  qã?d ès˜Š @  rã?d (t˜Kç… @  sã?d ht˜¥I @  tã?d ¨t˜'ä§· @  uã?d èt˜×›]Î @  vã?d (u˜ÓÑ& @  wã?d hu˜—bÔZ @  xã?d ¨u˜·—Ö¤ @  yã?d èu˜Gè,Ý @  zã?d (v˜Ú¬Œ @  {ã?d hv˜ÙöÎÐ @  |ã?d ¨v˜ùÌ. @  }ã?d èv˜ |6W @  ~ã?d (w˜Ù4º¿ @  ã?d hw˜àS¼  @   €ã?d ¨w˜À¦¾Þ @  !ã?d èw˜0ÙD§ @  "‚ã?d (x˜&Ⱥ @  #ƒã?d hx˜|Šv @  $„ã?d ¨x˜'‰ˆˆ @  %…ã?d èx˜×örñ @  &†ã?d (y˜¾þ @  '‡ã?d hy˜—ûe @  (ˆã?d ¨y˜·úù› @  )‰ã?d èy˜G…â @  *Šã?d (z˜ÚÁ£# @  +‹ã?d hz˜Ù›áï @  ,Œã?d ¨z˜ùnã @  -ã?d èz˜ h @  .Žã?d ({˜ÙY•€ @  /ã?d h{˜Ìð @  0ã?d ¨{˜¡ìÎ @  1‘ã?d è{˜Q“4w @  2’ã?d (|˜HÝÇx @  3“ã?d h|˜K‡…´ @  4”ã?d ¨|˜kr‡J @  5•ã?d è|˜› }3 @  6–ã?d (}˜KEñÛ @  7—ã?d h}˜Ûôô§ @  8˜ã?d ¨}˜ûöY @  9™ã?d è}˜ ~  @  :šã?d (~˜–:¬á @  ;›ã?d h~˜•`î- @  <œã?d ¨~˜µ•ìÓ @  =ã?d è~˜Eêª @  >žã?d (˜•¢šB @  ?Ÿã?d h˜ïTÛÌ @  @ ã?d ¨˜uЀ˜'Ï¡Ù2 @  A¡ã?d è˜?Þ#K @  B¢ã?d @€˜Q`Á? @  C£ã?d €€˜ð^–Ó @  D¤ã?d À€˜rÏ  @  E¥ã?d ˜ÐiàB @  F¦ã?d @˜Rø÷œ @  G§ã?d €˜`-çÀ @  H¨ã?d À˜â¼ð @  I©ã?d ‚˜ ½x @  Jªã?d @‚˜‡ª¦ @  K«ã?d €‚˜.¹ýJ @  L¬ã?d À‚˜¬(ê” @  M­ã?d ƒ˜Ž‹Û @  N®ã?d @ƒ˜Œœ @  O¯ã?d €ƒ˜v;ÐU @  P°ã?d Àƒ˜ôªÇ‹ @  Q±ã?d „˜Ÿ Ù# @  R²ã?d @„˜›Îý @  S³ã?d €„˜¼¥™ @  T´ã?d À„˜>4ŽÏ @  Uµã?d …˜œ’ï€ @  V¶ã?d @…˜ø^ @  W·ã?d €…˜,Öè @  X¸ã?d À…˜®GÿÜ @  Y¹ã?d †˜Aí²º @  Zºã?d @†˜Ã|¥d @  [»ã?d €†˜bBòˆ @  \¼ã?d À†˜àÓåV @  ]½ã?d ‡˜Bu„ @  ^¾ã?d @‡˜Àä“Ç @  _¿ã?d €‡˜F!Ôê @  `Àã?d À‡˜İÃ4 @  aÁã?d ˆ˜‚¡¢Ž @  bÂã?d @ˆ˜0µP @  cÃã?d €ˆ˜¡â¼ @  dÄã?d Àˆ˜#Ÿõb @  eÅã?d ‰˜9”- @  fÆã?d @‰˜¨ƒó @  gÇã?d €‰˜1}“¯ @  hÈã?d À‰˜³ì„q @  iÉã?d Š˜\FÉ @  jÊã?d @Š˜Þ×ÞÉ @  kËã?d €Š˜é‰% @  lÌã?d ÀŠ˜ýxžû @  mÍã?d ‹˜_Þÿ´ @  nÎã?d @‹˜ÝOèj @  oÏã?d €‹˜'k¤: @  pÐã?d À‹˜¥ú³ä @  qÑã?d Œ˜ÎZ­L @  rÒã?d @Œ˜L˺’ @  sÓã?d €Œ˜íõí~ @  tÔã?d ÀŒ˜odú  @  uÕã?d ˜Í›ï @  vÖã?d @˜OSŒ1 @  w×ã?d €˜}†œm @  xØã?d À˜ÿ‹³ @  yÙã?d Ž˜½ÆÕ @  zÚã?d @Ž˜’,Ñ  @  {Ûã?d €Ž˜3†ç @  |Üã?d ÀŽ˜±ƒ‘9 @  }Ýã?d ˜%ðv @  ~Þã?d @˜‘´ç¨ @  ßã?d €˜ªpƒ7 @  €àã?d À˜(á”é @  áã?d ˜äÑÅü @  ‚âã?d @˜f@Ò" @  ƒãã?d €˜Ç~…Î @  „äã?d À˜Eï’ @  …åã?d ‘˜çIó_ @  †æã?d @‘˜eØä @  ‡çã?d €‘˜W ôÝ @  ˆèã?d À‘˜Õœã @  ‰éã?d ’˜:6®e @  Šêã?d @’˜¸§¹» @  ‹ëã?d €’˜™îW @  Œìã?d À’˜›ù‰ @  íã?d “˜9®˜Æ @  Žîã?d @“˜»? @  ïã?d €“˜AÃH @  ðã?d À“˜ÊԖ @  ‘ñã?d ”˜¨*Ê> @  ’òã?d @”˜*»Ýà @  “óã?d €”˜‹…Š  @  ”ôã?d À”˜ Ò @  •õã?d •˜«²ü @  –öã?d @•˜)#ëC @  —÷ã?d €•˜öû @  ˜øã?d À•˜™gìÁ @  ™ùã?d –˜vÍ¡§ @  šúã?d @–˜ô\¶y @  ›ûã?d €–˜Ubá• @  œüã?d À–˜×óöK @  ýã?d —˜uU— @  žþã?d @—˜÷Ä€Ú @  Ÿÿã?d €—˜/©ùÿ @   ä?d À—˜­8î! @  ¡ä?d ˜˜ë)› @  ¢ä?d @˜˜i¸˜E @  £ä?d €˜˜Ȇϩ @  ¤ä?d À˜˜JØw @  ¥ä?d ™˜è±¹8 @  ¦ä?d @™˜j ®æ @  §ä?d €™˜Xõ¾º @  ¨ä?d À™˜Úd©d @  © ä?d š˜5Îä @  ª ä?d @š˜·_óÜ @  « ä?d €š˜a¤0 @  ¬ ä?d Àš˜”ð³î @  ­ ä?d ›˜6VÒ¡ @  ®ä?d @›˜´ÇÅ @  ¯ä?d €›˜Nã‰/ @  °ä?d À›˜Ìržñ @  ±ä?d œ˜§Ò€Y @  ²ä?d @œ˜%C—‡ @  ³ä?d €œ˜„}Àk @  ´ä?d Àœ˜ì×µ @  µä?d ˜¤J¶ú @  ¶ä?d @˜&Û¡$ @  ·ä?d €˜±x @  ¸ä?d À˜–Ÿ¦¦ @  ¹ä?d ž˜y5ëÀ @  ºä?d @ž˜û¤ü @  »ä?d €ž˜Zš«ò @  ¼ä?d Àž˜Ø ¼, @  ½ä?d Ÿ˜z­Ýc @  ¾ä?d @Ÿ˜ø<ʽ @  ¿ä?d €Ÿ˜ ®ž @  À äuР˜?d ÀŸ˜¢?‰Í @  Á!ä?d  ˜˜fÙ @   "ä?d X ˜Œq @  à #ä?d ˜ ˜»²&ë @  Ä $ä?d Ø ˜9#15 @  Å %ä?d ¡˜›…Pz @  Æ &ä?d X¡˜G¤ @  Ç 'ä?d ˜¡˜+ÁWø @  È (ä?d Ø¡˜©P@& @  É )ä?d ¢˜Fú @ @  Ê *ä?d X¢˜Äkž @  Ë +ä?d ˜¢˜eUMr @  Ì ,ä?d Ø¢˜çÄZ¬ @  Í -ä?d £˜Eb;ã @  Î .ä?d X£˜Çó,= @  Ï /ä?d ˜£˜=×`m @  Ð 0ä?d Ø£˜¿Fw³ @  Ñ 1ä?d ¤˜Ôæi @  Ò 2ä?d X¤˜Vw~Å @  Ó 3ä?d ˜¤˜÷I)) @  Ô 4ä?d ؤ˜uØ>÷ @  Õ 5ä?d ¥˜×~_¸ @  Ö 6ä?d X¥˜UïHf @  × 7ä?d ˜¥˜g:X: @  Ø 8ä?d Ø¥˜å«Oä @  Ù 9ä?d ¦˜ ‚ @  Ú :ä?d X¦˜ˆ\ @  Û ;ä?d ˜¦˜)®B° @  Ü <ä?d ئ˜«?Un @  Ý =ä?d §˜ ™4! @  Þ >ä?d X§˜‹#ÿ @  ß ?ä?d ˜§˜ ÍdÒ @  à @ä?d ا˜\s  @  á Aä?d ¨˜ÉM¶ @  â Bä?d€ X¨˜?Î @   Cä?d ˜¨˜`  @   Dä?d ب˜ýñÕ @   Eä?d ©˜š‹w @   Fä?d X©˜œ© @   Gä?d ˜©˜äèÓ @   Hä?d Ø©˜fyÄQ @   Iä?d ª˜GaÖM @   Jä?d Xª˜ÅðÁ“ @   Kä?d ˜ª˜¡‡m’ @   Lä?d ت˜#zL @   Mä?d «˜Dùàî @   Nä?d X«˜Æh÷0 @   Oä?d ˜«˜__Úú @   Pä?d Ø«˜ÝÎÍ$ @   Qä?d ¬˜Õ}² @   Rä?d X¬˜Wì¥È @   Sä?d ˜¬˜3› É @   Tä?d ج˜±  @   Uä?d ­˜Ö儵 @   Vä?d X­˜Tt“k @   Wä?d ˜­˜¨ÜM @   Xä?d Ø­˜*‚Ë“ @   Yä?d ®˜ šÙ @   Zä?d X®˜‰ ÎQ @   [ä?d ˜®˜í|bP @   \ä?d Ø®˜oíuŽ @   ]ä?d ¯˜ï, @   ^ä?d X¯˜Š“øò @   _ä?d ˜¯˜Žìä @   `ä?d د˜ ‚û: @   aä?d °˜²§ì @   bä?d X°˜06ûÛ @  ! cä?d ˜°˜TAWÚ @  " dä?d ذ˜ÖÐ@ @  # eä?d ±˜±?Ú¦ @  $ fä?d X±˜3®Íx @  % gä?d ˜±˜ÏÉ‚^ @  & hä?d ر˜MX•€ @  ' iä?d ²˜l@‡œ @  ( jä?d X²˜îÑB @  ) kä?d ˜²˜Ц €ä?d Ø·˜Ê5ëh @  ? ä?d ¸˜P6Êj @  @ ‚ä?d X¸˜Ò§Ý´ @  A ƒä?d ˜¸˜¶Ðqµ @  B „ä?d ظ˜4Afk @  C …ä?d ¹˜S®üÉ @  D †ä?d X¹˜Ñ?ë @  E ‡ä?d ˜¹˜-X¤1 @  F ˆä?d ع˜¯É³ï @  G ‰ä?d º˜ŽÑ¡ó @  H Šä?d Xº˜ @¶- @  I ‹ä?d ˜º˜h7, @  J Œä?d غ˜ê¦ ò @  K ä?d »˜I—P @  L Žä?d X»˜Ø€Ž @  M ä?d ˜»˜–ï­D @  N ä?d Ø»˜~ºš @  O ‘ä?d ¼˜ÍŨ @  P ’ä?d X¼˜ž\Òv @  Q “ä?d ˜¼˜ú+~w @  R ”ä?d ؼ˜xºi© @  S •ä?d ½˜Uó  @  T –ä?d X½˜ÄäÕ @  U —ä?d ˜½˜a£«ó @  V ˜ä?d ؽ˜ã2¼- @  W ™ä?d ¾˜Â*®1 @  X šä?d X¾˜@»¹ï @  Y ›ä?d ˜¾˜$Ìî @  Z œä?d ؾ˜¦]0 @  [ ä?d ¿˜Á²˜’ @  \ žä?d X¿˜C#L @  ] Ÿä?d ˜¿˜G£›Z @uÐÀ˜  ^  ä?d Ø¿˜üõPQ @  _¡ä?d 0À˜˜þªŽ @  `¢ä?d pÀ˜o½P @  a£ä?d °À˜~Q @  b¤ä?d ðÀ˜ü‰ @  c¥ä?d 0Á˜›fœ- @  d¦ä?d pÁ˜÷‹ó @  e§ä?d °Á˜åÄÕ @  f¨ä?d ðÁ˜gÓ  @  g©ä?d 0˜FÁ @  hªä?d p˜ĈÖÉ @  i«ä?d °Â˜ ÿzÈ @  j¬ä?d ð˜"nm @  k­ä?d 0ØE÷´ @  l®ä?d pØÇàj @  m¯ä?d °Ã˜^'Í  @  n°ä?d ðØܶÚ~ @  o±ä?d 0ĘÔ¥L @  p²ä?d pĘV”²’ @  q³ä?d °Ä˜2ã“ @  r´ä?d ðʰr M @  sµä?d 0Řדï @  t¶ä?d pŘU „1 @  u·ä?d °Å˜©kË @  v¸ä?d ðŘ+úÜÉ @  w¹ä?d 0Ƙ âÎÕ @  xºä?d pƘˆsÙ  @  y»ä?d °Æ˜ìu  @  z¼ä?d ðƘn•bÔ @  {½ä?d 0ǘ zøv @  |¾ä?d pǘ‹ëï¨ @  }¿ä?d °Ç˜;î¯ @  ~Àä?d ðǘýªùq @  Áä?d 0Ș„ÿèB @  €Âä?d pȘnÿœ @  Ãä?d °È˜bS @  ‚Ää?d ðȘàˆDC @  ƒÅä?d 0ɘ‡gÞá @  „Æä?d pɘöÉ? @  …Çä?d °É˜ù‘† @  †Èä?d ðɘ{‘Ç @  ‡Éä?d 0ʘZƒÛ @  ˆÊä?d pʘ؉” @  ‰Ëä?d °Ê˜¼þ8 @  ŠÌä?d ðʘ>o/Ú @  ‹Íä?d 0˘Y€µx @  ŒÎä?d p˘Û¢¦ @  Ïä?d °Ë˜B&l @  ŽÐä?d ð˘À·˜² @  Ñä?d 0̘Èç€ @  Òä?d p̘J•ð^ @  ‘Óä?d °Ì˜.â\_ @  ’Ôä?d ð̘¬sK @  “Õä?d 0͘ËœÑ# @  ”Öä?d p͘I Æý @  •×ä?d °Í˜µj‰Û @  –Øä?d ð͘7ûž @  —Ùä?d 0Θ㌠@  ˜Úä?d pΘ”r›Ç @  ™Ûä?d °Î˜ð7Æ @  šÜä?d ðΘr”  @  ›Ýä?d 0Ϙ{ºº @  œÞä?d pϘ—ê­d @  ßä?d °Ï˜“j¹r @  žàä?d ðϘû®¬ @  Ÿáä?d 0И¯Þ¹“ @   âä?d pИ-O®M @  ¡ãä?d °Ð˜I8L @  ¢ää?d ðИË©’ @  £åä?d 0ј¬F0 @  ¤æä?d pј.טî @  ¥çä?d °Ñ˜Ò°×È @  ¦èä?d ðјP!À @  §éä?d 0Ò˜q9Ò  @  ¨êä?d pÒ˜ó¨ÅÔ @  ©ëä?d °Ò˜—ßiÕ @  ªìä?d ðÒ˜N~  @  «íä?d 0Ó˜r¡ä© @  ¬îä?d pÓ˜ð0ów @  ­ïä?d °Ó˜iÞ½ @  ®ðä?d ðÓ˜ë–Éc @  ¯ñä?d 0Ô˜ã%¶Q @  °òä?d pÔ˜a´¡ @  ±óä?d °Ô˜à Ž @  ²ôä?d ðÔ˜‡RP @  ³õä?d 0Õ˜ཀò @  ´öä?d pÕ˜b,—, @  µ÷ä?d °Õ˜žKØ  @  ¶øä?d ðÕ˜ÚÏÔ @  ·ùä?d 0Ö˜=ÂÝÈ @  ¸úä?d pÖ˜¿SÊ @  ¹ûä?d °Ö˜Û$f @  ºüä?d ðÖ˜YµqÉ @  »ýä?d 0ט>Zëk @  ¼þä?d pט¼Ëüµ @  ½ÿä?d °×˜*ºü, @  ¾å?d ðט¨+ëò @  ¿å?d 0ؘ2(Êð @  Àå?d pؘ°¹Ý. @  Áå?d °Ø˜ÔÎq/ @  Âå?d ðؘV_fñ @  Ãå?d 0Ù˜1°üS @  Äå?d pÙ˜³!ë @  Åå?d °Ù˜OF¤« @  Æå?d ðÙ˜Í׳u @  Ç å?d 0Ú˜ìÏ¡i @  È å?d pÚ˜n^¶· @  É å?d °Ú˜ )¶ @  Ê å?d ðÚ˜ˆ¸ h @  Ë å?d 0Û˜ïW—Ê @  Ìå?d pÛ˜mÆ€ @  Íå?d °Û˜ôñ­Þ @  Îå?d ðÛ˜v`º @  Ïå?d 0ܘ~ÓÅ2 @  Ðå?d pܘüBÒì @  Ñå?d °Ü˜˜5~í @  Òå?d ðܘ¤i3 @  Óå?d 0ݘ}Kó‘ @  Ôå?d pݘÿÚäO @  Õå?d °Ý˜½«i @  Öå?d ðݘ,¼· @  ×å?d 0Þ˜ 4®« @  Øå?d pÞ˜"¥¹u @  Ùå?d °Þ˜FÒt @  Úå?d ðÞ˜ÄCª @  Ûå?d 0ߘ£¬˜ @  Üå?d pߘ!=Ö @  Ýå?d uÐà˜/°ß˜%½›À @  Þ å?d ðߘ§,Œ @  ß!å?d Hà˜¾sye @  à"å?d ˆà˜ž†{› @  á#å?d Èà˜X•º @  â$å?d€ á˜Iš¹R @  %å?d Há˜íðï @  &å?d ˆá˜½ò @  'å?d Èá˜&RSú @  (å?d ☻ó; @  )å?d Hâ˜Ki B @  *å?d ˆâ˜kœ ¼ @  +å?d Èâ˜c=íç @  ,å?d 㘳ua @   -å?d Hã˜C ›v @   .å?d ˆã˜cÿ™ˆ @   /å?d Èã˜åZ @   0å?d 䘄«©€ @   1å?d Hä˜tÔSù @  2å?d ˆä˜T!Q @  3å?d Èä˜ñ!‰¼ @  4å?d å˜!iT @  5å?d Hå˜Ñÿ- @  6å?d ˆå˜ñãýÓ @  7å?d Èå˜j©\8 @  8å?d æ˜÷íüù @  9å?d H昒€ @  :å?d ˆæ˜'g~ @  ;å?d Èæ˜/Æâ% @  <å?d ç˜ÿŽnÍ @  =å?d Hç˜ñ”´ @  >å?d ˆç˜/–J @  ?å?d È瘼ùy€ @  @å?d 蘈õ @  Aå?d Hè˜xyä @  Bå?d ˆè˜XŒ  @  Cå?d Èè˜ìŠò @   Då?d é˜<Â~ù @  !Eå?d Hé˜̽„€ @  "Få?d ˆé˜ìH†~ @  #Gå?d Èé˜w'• @  $Hå?d ê˜êF‡T @  %Iå?d Hê˜9}- @  &Jå?d ˆê˜:ÌÓ @  'Kå?d Èê˜2m™ˆ @  (Lå?d ë˜â%` @  )Må?d Hë˜Zï @  *Nå?d ˆë˜2¯íç @  +Oå?d Èë˜̵.à @  ,På?d ì˜ÕûÝï @  -Qå?d Hì˜%„'– @  .Rå?d ˆì˜q%h @  /Så?d È옠qýÓ @  0Tå?d í˜p9q; @  1Uå?d H혀F‹B @  2Vå?d ˆí˜ ³‰¼ @  3Wå?d Èí˜;ù(W @  4Xå?d ½ˆ– @  5Yå?d Hî˜VÂrï @  6Zå?d ˆî˜v7p @  7[å?d Èî˜~––J @  8\å?d ޢ @  9]å?d Hï˜^¡àÛ @  :^å?d ˆï˜~Tâ% @  ;_å?d Èï˜ùþ @  <`å?d ð˜£'¤L @  =aå?d Hð˜SX^5 @  >bå?d ˆð˜s­\Ë @  ?cå?d Èð˜i¬¥R @  @då?d ñ˜¹ä)º @  Aeå?d Hñ˜I›Óà @  Bfå?d ˆñ˜inÑ= @  Cgå?d Èñ˜ò$pÖ @  Dhå?d ò˜o`Ð @  Eiå?d Hò˜Ÿ*n @  Fjå?d ˆò˜¿ê( @  Gkå?d Èò˜·KÎË @  Hlå?d ó˜gB# @  Imå?d Hó˜—|¸Z @  Jnå?d ˆó˜·‰º¤ @  Koå?d Èó˜I“y£ @  Lpå?d ô˜PÝŠ¬ @  Mqå?d Hô˜ ¢pÕ @  Nrå?d ˆô˜€Wr+ @  Oså?d Èô˜%Wª @  Ptå?d õ˜õ&x @  Quå?d Hõ˜`Ü @  Rvå?d ˆõ˜%•Þÿ @  Swå?d Èõ˜¾ß @  Txå?d ö˜#›ßÕ @  Uyå?d Hö˜Óä%¬ @  Vzå?d ˆö˜ó'R @  W{å?d Èö˜û°Á  @  X|å?d ÷˜+øMá @  Y}å?d H÷˜Û‡·˜ @  Z~å?d ˆ÷˜ûrµf @  [å?d È÷˜uI> @  \€å?d ø˜A¶‚# @  ]å?d Hø˜±ÉxZ @  ^‚å?d ˆø˜‘ @  b†å?d ˆù˜%øñÀ @  c‡å?d Èù˜¾²P+ @  dˆå?d ú˜#öðê @  e‰å?d Hú˜Ó‰ “ @  fŠå?d ˆú˜ó|m @  g‹å?d Èú˜ûÝî6 @  hŒå?d û˜+•bÞ @  iå?d Hû˜Û꘧ @  jŽå?d ˆû˜ûšY @  kå?d Èû˜Y^ @  lå?d ü˜KªQ @  m‘å?d Hü˜ì4P( @  n’å?d ˆü˜ÌÁRÖ @  o“å?d Èü˜iÁŠm @  p”å?d ý˜¹‰… @  q•å?d Hý˜Iöüü @  r–å?d ˆý˜iþ @  s—å?d Èý˜òI_é @  t˜å?d þ˜o ÿ( @  u™å?d Hþ˜ŸrQ @  všå?d ˆþ˜¿‡¯ @  w›å?d Èþ˜·&áô @  xœå?d ÿ˜gnm @  yå?d Hÿ˜——e @  zžå?d ˆÿ˜·ä•› @  {uЙŸå?d Èÿ˜ÔIo@ @  | å?d ™›ýG± @  }¡å?d `™k‚½È @  ~¢å?d  ™Kw¿6 @  £å?d à™² vž @  €¤å?d ™bhúv @  ¥å?d `™’ @  ‚¦å?d  ™²âñ @  ƒ§å?d à™)¨£ @  „¨å?d ™´ìÛ @  …©å?d `™D“ù¢ @  †ªå?d  ™dfû\ @  ‡«å?d à™lÇ @  ˆ¬å?d ™¼‘ï @  ‰­å?d `™Lðk– @  Š®å?d  ™lih @  ‹¯å?d à™’ªo @  Œ°å?d ™‹QY` @  ±å?d `™{.£ @  Ž²å?d  ™[Û¡ç @  ³å?d à™þÛy\ @  ´å?d ™.“õ´ @  ‘µå?d `™ÞìÍ @  ’¶å?d  ™þ 3 @  “·å?d à™eS¬Ø @  ”¸å?d ™ø  @  •¹å?d `™hö` @  –ºå?d  ™(ôž @  —»å?d à™ <Å @  ˜¼å?d ™ðtž- @  ™½å?d `™ dT @  š¾å?d  ™ þfª @  ›¿å?d à™³‰` @  œÀå?d ™‡ü} @  Áå?d `™wƒÿ @  žÂå?d  ™Wvýú @  ŸÃå?d à™ãpñ @   Äå?d ™38Ž @  ¡Åå?d ` ™ÃGt` @  ¢Æå?d   ™ã²vž @  £Çå?d à ™xø×u @  ¤Èå?d ™å¼w´ @  ¥Éå?d ` ™ÃÍ @  ¦Êå?d   ™563 @  §Ëå?d à ™=—ih @  ¨Ìå?d ™íßå€ @  ©Íå?d ` ™ ù @  ªÎå?d   ™=U @  «Ïå?d à ™ÃOÞ @  ¬Ðå?d ™Ú- @  ­Ñå?d ` ™*~×v @  ®Òå?d   ™ ‹Õˆ @  ¯Óå?d à ™¯‹ 3 @  °Ôå?d ™ÃÛ @  ±Õå?d ` ™¼{¢ @  ²Öå?d   ™¯Iy\ @  ³×å?d à ™4Ø· @  ´Øå?d ™©Gxv @  µÙå?d `™Y8‚ @  ¶Úå?d  ™yÍ€ñ @  ·Ûå?d à™qlfª @  ¸Üå?d ™¡$êB @  ¹Ýå?d `™Q[; @  ºÞå?d  ™q®Å @  »ßå?d à™è @  ¼àå?d ™¬ÝT¬ @  ½áå?d `™\¢®Õ @  ¾âå?d  ™|W¬+ @  ¿ãå?d à™fVU² @  Àäå?d ™¶ÙZ @  Áåå?d `™Fa## @  Âæå?d  ™f”!Ý @  Ãçå?d à™ýÞ€6 @  Äèå?d ™`š ÷ @  Åéå?d `™åÚŽ @  Æêå?d  ™°Øp @  Çëå?d à™¸±>+ @  Èìå?d ™hù²Ã @  Éíå?d `™˜†Hº @  Êîå?d  ™¸sJD @  Ëïå?d à™Fi‰C @  Ìðå?d ™_'zL @  Íñå?d `™¯X€5 @  Îòå?d  ™­‚Ë @  Ïóå?d à™*­Zp @  Ðôå?d ™úåÖ˜ @  Ñõå?d `™ š,á @  Òöå?d  ™*o. @  Ó÷å?d à™±%ô @  Ôøå?d ™,a/5 @  Õùå?d `™ÜÕL @  Öúå?d  ™üëײ @  ×ûå?d à™ôJ1é @  Øüå?d ™$½ @  Ùýå?d `™Ô}Gx @  Úþå?d  ™ôˆE† @  Ûÿå?d à™·öž÷ @  Üæ?d ™ƒ ê @  Ýæ?d `™svè“ @  Þæ?d  ™Sƒêm @  ßæ?d à™ç…f @  àæ?d ™7Í™Ž @  áæ?d `™Dzc÷ @  âæ?d€  ™“„}¯ @  æ?d à™é”m @  æ?d ™tË4¬ @   æ?d `™Aý58 @   æ?d  ™a7Æ @   æ?d à™§Žç @   æ?d ™wS @   æ?d `™Iž§  @  æ?d  ™ik¥ò @   æ?d à™R8 @   æ?d ™Kvn @   æ?d `™~@oƒ @   æ?d  ™^µm} @   æ?d à™˜¦Ô\ @  æ?d ™HîX´ @  æ?d `™Û‚ÃW @  æ?d  ™ûwÁ© @  æ?d à™¥t›¯ @  æ?d ™80;n @  æ?d `™ :ú @  æ?d  ™-ó8 @  æ?d à™ëà% @  æ?d ™;¨ Í @  æ?d `™e¨Î @  æ?d  ™%ª0uÐ ™ @  æ?d à™ƒt« @   æ?d 8 ™òu` @  !æ?d x ™ÇItô @  "æ?d ¸ ™ç¼v  @  #æ?d ø ™!¯Ï+ @  $æ?d 8!™ñçCà @  %æ?d x!™sÿ @   &æ?d ¸!™Sxýn @  !'æ?d ø!™ {§h @  "(æ?d 8"™?© @  #)æ?d x"™¥ = @  $*æ?d ¸"™…üà @  %+æ?d ø"™Cï½â @  &,æ?d 8#™“§1  @  '-æ?d x#™­j”  @  (.æ?d ¸#™Ÿ–÷ @  )/æ?d ø#™¶Ì® @  *0æ?d 8$™¯‚] @  +1æ?d x$™š´\† @  ,2æ?d ¸$™ºA^x @  -3æ?d ø$™|RçY @  .4æ?d 8%™¬k± @  /5æ?d x%™?vðR @  06æ?d ¸%™ƒò¬ @  17æ?d ø%™A€¨ª @  28æ?d 8&™ÜÄk @  39æ?d x&™éò ÿ @  4:æ?d ¸&™É  @  5;æ?d ø&™²  @  6<æ?d 8'™ß\>È @  7=æ?d x'™á‘›Ë @  8>æ?d ¸'™Ád™5 @  9?æ?d ø'™—Ð @  :@æ?d 8(™£/ @  ;Aæ?d x(™–› @  <Bæ?d ¸(™¶ìe @  =Cæ?d ø(™pÿ»D @  >Dæ?d 8)™ ·7¬ @  ?Eæ?d x)™ŒÚm @  @Fæ?d ¸)™¬/“ @  AGæ?d ø)™ò,Õ• @  BHæ?d 8*™ohuT @  CIæ?d x*™Z^tÀ @  DJæ?d ¸*™z«v> @  EKæ?d ø*™¼¸Ï @  FLæ?d 8+™lðC÷ @  GMæ?d x+™R=æô @  HNæ?d ¸+™rÈä  @  IOæ?d ø+™I›Üà @  JPæ?d 8,™PÕ/ï @  KQæ?d x,™eã.{ @  LRæ?d ¸,™E,… @  MSæ?d ø,™ƒ•¤ @  NTæ?d 8-™SML @  OUæ?d x-™À!‚¯ @  PVæ?d ¸-™àÔ€Q @  QWæ?d ø-™¾×ÚW @  RXæ?d 8.™#“z– @  SYæ?d x.™¥{ @  TZæ?d ¸.™6Pyü @  U[æ?d ø.™ðCÀÝ @  V\æ?d 8/™ L5 @  W]æ?d x/™Æé6 @  X^æ?d ¸/™>3ëÈ @  Y_æ?d ø/™˜×êþ @  Z`æ?d 80™& VL @  [aæ?d x0™?WØ @  \bæ?d ¸0™3ÊU& @  ]cæ?d ø0™õÙì @  ^dæ?d 81™%‘`ï @  _eæ?d x1™§ûܼ @  `fæ?d ¸1™‡ÞB @  agæ?d ø1™Ù „D @  bhæ?d 82™DI$… @  ciæ?d x2™q% @  djæ?d ¸2™QŠ'ï @  ekæ?d ø2™—™žÎ @  flæ?d 83™GÑ& @  gmæ?d x3™y·% @  hnæ?d ¸3™YéµÛ @  ioæ?d ø3™bº1 @  jpæ?d 84™{ô~> @  kqæ?d x4™Nª @  lræ?d ¸4™n7}T @  msæ?d ø4™¨$Äu @  ntæ?d 85™xlH @  ouæ?d x5™ëÓ~ @  pvæ?d ¸5™ËõÑ€ @  qwæ?d ø5™•ö‹† @  rxæ?d 86™²+G @  syæ?d x6™=„*Ó @  tzæ?d ¸6™q(- @  u{æ?d ø6™Ûb‘  @  v|æ?d 87™ *ä @  w}æ?d x7™5ç¸ç @  x~æ?d ¸7™º @  yæ?d ø7™^`ú¬ @  z€æ?d 88™jŸv± @  {æ?d x8™_©w% @  |‚æ?d ¸8™\uÛ @  }ƒæ?d ø8™¹OÌú @  ~„æ?d 89™i@ @  …æ?d x9™¦<Êâ @  €†æ?d ¸9™†ÉÈ @  ‡æ?d ø9™ØÊ’ @  ‚ˆæ?d 8:™EŽ2Û @  ƒ‰æ?d x:™p¸3O @  „Šæ?d ¸:™PM1± @  …‹æ?d ø:™–^ˆ @  †Œæ?d 8;™Fx @  ‡æ?d x;™xÛ¡{ @  ˆŽæ?d ¸;™X.£… @  ‰æ?d ø;™c}›o @  Šæ?d 8<™z3h` @  ‹‘æ?d x<™Oiô @  Œ’æ?d ¸<™oðk  @  “æ?d ø<™©ãÒ+ @  Ž”æ?d 8=™y«^à @  •æ?d x=™êÇÅ  @  –æ?d ¸=™Ê2ÇÞ @  ‘—æ?d ø=™”1Ø @  ’˜æ?d 8>™ u= @  “™æ?d x>™™¶>s @  •›æ?d ø>™Ú¥‡R @  –œæ?d 8?™ í º @  —æ?d x?™4 ®¹ @  ˜žæ?duÐ@™7 ¸?™Õ¬G @  ™Ÿæ?d ø?™²1­q @  š æ?d P@™qM @  ›¡æ?d @™æÏù @  œ¢æ?d Ð@™d^' @  £æ?d A™ð”60 @  ž¤æ?d PA™r!î @  Ÿ¥æ?d A™R ˆ @   ¦æ?d ÐA™КŸC @  ¡§æ?d B™‘LrZ @  ¢¨æ?d PB™Ýe„ @  £©æ?d B™„q0 @  ¤ªæ?d ÐB™fî @  ¥«æ?d C™’ÔDù @  ¦¬æ?d PC™ES' @  §­æ?d C™Œìã @  ¨®æ?d ÐC™}ôÚ @  ©¯æ?d D™®ñ(á @  ª°æ?d PD™,`?? @  «±æ?d D™»2+‹ @  ¬²æ?d ÐD™9£l¿ @  ÎÔæ?d PM™Я{a @  ÏÕæ?d M™á§õ¢ @  ÐÖæ?d ÐM™c6â| @  Ñ׿?d N™"àe @  ÒØæ?d PN™ q» @  ÓÙæ?d N™7#  @  ÔÚæ?d ÐN™µ²Ñ @  ÕÛæ?d O™!x9Æ @  ÖÜæ?d PO™£é. @  ×Ýæ?d O™?@ž; @  ØÞæ?d ÐO™½Ñ‰å @  Ùßæ?d P™'z#¿ @  Úàæ?d PP™¥ë4a @  Ûáæ?d P™2¹ Õ @  Üâæ?d ÐP™°(7  @  Ýãæ?d Q™$â @  Þäæ?d PQ™¦s @  ßåæ?d Q™†}«± @  àææ?d ÐQ™ì¼o @  áçæ?d R™E:Qv @  âèæ?d€ PR™Aýî @  éæ?d R™7 @  êæ?d ÐR™µ¥R @  ëæ?d S™äü|¨ @  ìæ?d PS™fmkv @  íæ?d S™4v„/ @  îæ?d ÐS™¶ç“ñ @  ïæ?d T™ØÙ° @  ðæ?d PT™ZHn @   ñæ?d T™Sè7 @   òæ?d ÐT™ŠÂÿé @   óæ?d U™ÛA& @   ôæ?d PU™YÐ1Í @   õæ?d U™ ËÞ” @  öæ?d ÐU™‰ZÉJ @  ÷æ?d V™«ŸEÉ @  øæ?d PV™)R @  ùæ?d V™{½N @  úæ?d ÐV™ù„ª @  ûæ?d W™¨sj @  üæ?d PW™*–d´ @  ýæ?d W™x‹í @  þæ?d ÐW™úœ3 @  ÿæ?d X™¶ÕM3 @  ç?d PX™4DZí @  ç?d X™f_µ´ @  ç?d ÐX™ä΢j @  ç?d Y™µM{ @  ç?d PY™7ÜlN @  ç?d Y™eǃ @  ç?d ÐY™çV”É @  ç?d Z™Ô•?ú @   ç?d PZ™V($ @  ! ç?d Z™Ç} @  " ç?d ÐZ™†ŽÐ£ @  # ç?d [™× Y @  $ ç?d P[™Uœ‡ @  % ç?d [™‡ñÞ @  &ç?d Ð[™…æ @  'ç?d \™ë(eA @  (ç?d P\™i¹rŸ @  )ç?d \™;¢Æ @  *ç?d Ð\™¹3Š @  +ç?d ]™è°Sâ @  ,ç?d P]™j!D< @  -ç?d ]™8:«e @  .ç?d Ð]™º«¼» @  /ç?d ^™˜n08 @  0ç?d P^™ÿ'æ @  1ç?d ^™HäÈ¿ @  2ç?d Ð^™Êußa @  3ç?d _™›ö› @  4ç?d P_™gE @  5ç?d _™K|þ @  uÐ`™6ç?d Ð_™Éíé @  7ç?d (`™ÒÈ @  8 ç?d h`™C @  9!ç?d ¨`™MXíO @  :"ç?d è`™ÏÉú‘ @  ;#ç?d (a™žJ#k @  <$ç?d ha™Û4µ @  =%ç?d ¨a™NÀÛì @  >&ç?d èa™ÌQÌ2 @  ?'ç?d (b™Q•a“ @  @(ç?d hb™ÓvM @  A)ç?d ¨b™™ @  B*ç?d èb™ŽŽÊ @  C+ç?d (c™R W0 @  D,ç?d hc™М@î @  E-ç?d ¨c™‚‡¯· @  F.ç?d èc™¸i @  G/ç?d (d™n(;( @  H0ç?d hd™ì¹,ö @  I1ç?d ¨d™¾¢Ã¯ @  J2ç?d èd™<3Ôq @  K3ç?d (e™m° ‹ @  L4ç?d he™ï!U @  M5ç?d ¨e™½:õ  @  N6ç?d èe™?«âÒ @  O7ç?d (f™nnQ @  P8ç?d hf™Ÿÿy @  Q9ç?d ¨f™Íä–Ö @  R:ç?d èf™Ou @  S;ç?d (g™öXò @  T<ç?d hg™œgO, @  U=ç?d ¨g™Î| u @  V>ç?d èg™Lí·« @  W?ç?d (h™b…g5 @  X@ç?d hh™àpë @  YAç?d ¨h™²Ÿ² @  ZBç?d èh™0žˆl @  [Cç?d (i™aQ– @  \Dç?d hi™ãŒFH @  ]Eç?d ¨i™±—© @  ^Fç?d èi™3¾Ï @  _Gç?d (j™Åü @  `Hç?d hj™‚T" @  aIç?d ¨j™ÐOí{ @  bJç?d èj™RÞú¥ @  cKç?d (k™]#_ @  dLç?d hk™Ì4 @  eMç?d ¨k™Ó×ÛØ @  fNç?d èk™QFÌ @  gOç?d (l™?xOG @  hPç?d hl™½éX™ @  iQç?d ¨l™ïò·À @  jRç?d èl™mc  @  kSç?d (m™<àyä @  lTç?d hm™¾qn: @  mUç?d ¨m™ìjc @  nVç?d èm™nû–½ @  oWç?d (n™L>> @  pXç?d hn™ί à @  qYç?d ¨n™œ´â¹ @  rZç?d èn™%õg @  s[ç?d (o™O¦, @  t\ç?d ho™Í7;C @  u]ç?d ¨o™Ÿ,Ô @  v^ç?d èo™½ÃÄ @  w_ç?d (p™I¤6ä @  x`ç?d hp™Ë5!: @  yaç?d ¨p™™.Îc @  zbç?d èp™¿Ù½ @  {cç?d (q™J<G @  |dç?d hq™È­™ @  }eç?d ¨q™š¶øÀ @  ~fç?d èq™'ï @  gç?d (r™fµrŽ @  €hç?d hr™ä$eP @  iç?d ¨r™¶?Š  @  ‚jç?d èr™4®× @  ƒkç?d (s™e-D- @  „lç?d hs™ç¼Só @  …mç?d ¨s™µ§¼ª @  †nç?d ès™76«t @  ‡oç?d (t™Y(5 @  ˆpç?d ht™Û™?ë @  ‰qç?d ¨t™‰‚в @  Šrç?d èt™ Çl @  ‹sç?d (u™Z– @  Œtç?d hu™Ø H @  uç?d ¨u™Šæ @  Žvç?d èu™‹ñÏ @  wç?d (v™*N}L @  xç?d hv™¨ßj’ @  ‘yç?d ¨v™úÄ…Ë @  ’zç?d èv™xU’ @  “{ç?d (w™)ÖKï @  ”|ç?d hw™«G\1 @  •}ç?d ¨w™ù\³h @  –~ç?d èw™{ͤ¶ @  —ç?d (x™Hc º @  ˜€ç?d hx™Êò7d @  ™ç?d ¨x™˜éØ= @  š‚ç?d èx™xÏã @  ›ƒç?d (y™Kû @  œ„ç?d hy™ÉjÇ @  …ç?d ¨y™›qîž @  ž†ç?d èy™àù@ @  Ÿ‡ç?d (z™*#Rs @   ˆç?d hz™¨²E­ @  ¡‰ç?d ¨z™ú©ªô @  ¢Šç?d èz™x8½* @  £‹ç?d ({™)»dÐ @  ¤Œç?d h{™«*s @  ¥ç?d ¨{™ù1œW @  ¦Žç?d è{™{ ‹‰ @  §ç?d (|™žÈ @  ¨ç?d h|™— @  ©‘ç?d ¨|™ÅðO @  ª’ç?d è|™G…ç‘ @  «“ç?d (}™>k @  ¬”ç?d h}™”—)µ @  ­•ç?d ¨}™ÆŒÆì @  ®–ç?d è}™DÑ2 @  ¯—ç?d (~™fØ]± @  °˜ç?d h~™äIJo @  ±™ç?d ¨~™¶R¥6 @  ²šç?d è~™4òè @  ³›ç?d (™e@k @  ´œç?d h™çÑ|Ì @  µç?d ¨™uЀ™'µÊ“• @  ¶žç?d 虜Xž @  · Ÿç?d @€™Šåóx @  ¸  ç?d €€™ªñ† @  ¹ ¡ç?d À€™Zo ÿ @  º ¢ç?d ™Š'‡ @  » £ç?d @™‰}ÅÛ @  ¼ ¤ç?d €™©ˆÇ% @  ½ ¥ç?d À™Y÷=\ @  ¾ ¦ç?d ‚™ij @  ¿ §ç?d @‚™F¢‡# @  À ¨ç?d €‚™fW…Ý @  Á ©ç?d À‚™–(¤ @   ªç?d ƒ™F`óL @  à «ç?d @ƒ™E:±€ @  Ä ¬ç?d €ƒ™eϳ~ @  Å ­ç?d Àƒ™•°I @  Æ ®ç?d „™Œþº @  Ç ¯ç?d @„™yݘ @  È °ç?d €„™Yêßf @  É ±ç?d À„™©•% @  Ê ²ç?d …™yÝ©÷ @  Ë ³ç?d @…™z‡ë; @  Ì ´ç?d €…™ZréÅ @  Í µç?d À…™ª ¼ @  Î ¶ç?d †™7I³} @  Ï ·ç?d @†™ Yˆá @  Ð ¸ç?d €†™*¬Š @  Ñ ¹ç?d À†™ÚÓpf @  Ò ºç?d ‡™ ›üŽ @  Ó »ç?d @‡™ Á¾B @  Ô ¼ç?d €‡™)4¼¼ @  Õ ½ç?d À‡™ÙKFÅ @  Ö ¾ç?d ˆ™í´ÊØ @  × ¿ç?d @ˆ™u²… @  Ø Àç?d €ˆ™UGƒ{ @  Ù Áç?d Àˆ™¥8y @  Ú Âç?d ‰™upõê @  Û Ãç?d @‰™v*·& @  Ü Äç?d €‰™VßµØ @  Ý Åç?d À‰™¦ O¡ @  Þ Æç?d Š™;äï` @  ß Çç?d @Š™òóL @  à Èç?d €Š™7ñ² @  á Éç?d ÀŠ™Çx Ë @  â Êç?d€ ‹™có›… @   Ëç?d @‹™è‘` @   Ìç?d €‹™¡“ž @   Íç?d À‹™”+’  @   Îç?d Œ™ea @   Ïç?d @Œ™¶6Yï @   Ðç?d €Œ™–Ã[ @   Ñç?d ÀŒ™¨þ @   Òç?d ™xFrú @   Óç?d @™¾UËÛ @   Ôç?d €™ž É% @   Õç?d À™«–ȱ @   Öç?d Ž™6Òhp @   ×ç?d @Ž™hÑ2v @   Øç?d €Ž™H$0ˆ @   Ùç?d ÀŽ™ÛH«k @   Úç?d ™ 'ƒ @   Ûç?d @™Íž¢ @   Üç?d €™íæœ\ @   Ýç?d À™ØÐÈ @   Þç?d ™f!z @   ßç?d @™Àê L @   àç?d €™à"² @   áç?d À™ÞÒ‡± @   âç?d ‘™š Y @   ãç?d @‘™ȉ²x @   äç?d €‘™è|°† @   åç?d À‘™ÝJ± @   æç?d ’™@Ó @   çç?d @’™ KÕ @   èç?d €’™>øI+ @   éç?d À’™¼’õx @   êç?d “™lÚy @  ! ëç?d @“™ªÉÀ± @  " ìç?d €“™Š<ÂO @  # íç?d À“™¿ ÃÛ @  $ îç?d ”™¦D0Ô @  % ïç?d @”™> @  & ðç?d €”™½â À @  ' ñç?d À”™ƒ/¯Ã @  ( òç?d •™Sg#+ @  ) óç?d @•™•tš  @  * ôç?d €•™µ˜ô @  + õç?d À•™€·™` @  , öç?d –™ó9¡ @  - ÷ç?d @–™Cðc§ @  . øç?d €–™caY @  / ùç?d À–™ðiúº @  0 úç?d —™ !vR @  1 ûç?d @—™æ2Ïs @  2 üç?d €—™ÆÇÍ @  3 ýç?d À—™óñÌ @  4 þç?d ˜™Ç@ @  5 ÿç?d @˜™(dR @  6 è?d €˜™6Ýf¬ @  7 è?d À˜™ï @  8 è?d ™™ØXOG @  9 è?d @™™Köf @  : è?d €™™>¾ô˜ @  ; è?d À™™ ˆõ  @  < è?d š™–ÌUÍ @  = è?d @š™ÈÏË @  > è?d €š™è: 5 @  ?  è?d Àš™ÄW·ô @  @  è?d ›™; @  A  è?d @›™Ò ‚= @  B  è?d €›™òù€Ã @  C  è?d À›™ÇÏW @  D è?d œ™ÞrX @  E è?d @œ™åÒJ² @  F è?d €œ™Å'HL @  G è?d Àœ™ûêíO @  H è?d ™+¢a§ @  I è?d @™í±Ø† @  J è?d €™ÍDÚx @  K è?d À™ørÛì @  L è?d ž™e6{- @  M è?d @ž™;5!+ @  N è?d €ž™À#Õ @  O è?d Àž™ˆ¬¸6 @  P è?d Ÿ™Xä4Þ @  Q è?d @Ÿ™ž÷ÿ @  R è?d €Ÿ™¾ @  S èuР™?d ÀŸ™‹4Ž• @  T è?d  ™Qkó @  Uè?d X ™§µjÅ @  V è?d ˜ ™‡@h; @  W!è?d Ø ™¹Í8 @  X"è?d ¡™iÅAÐ @  Y#è?d X¡™¯Öøñ @  Z$è?d ˜¡™#ú @  [%è?d Ø¡™ºû› @  \&è?d ¢™'Q[Z @  ]'è?d X¢™yR\ @  ^(è?d ˜¢™Y§¢ @  _)è?d Ø¢™ÛÍ¿ñ @  `*è?d £™ …3 @  a+è?d X£™Í–Š8 @  b,è?d ˜£™ícˆÆ @  c-è?d Ø£™ØU‰R @  d.è?d ¤™Áz] @  e/è?d X¤™úHB· @  f0è?d ˜¤™Ú½@I @  g1è?d ؤ™äpåJ @  h2è?d ¥™48i¢ @  i3è?d X¥™ò+Ѓ @  j4è?d ˜¥™ÒÞÒ} @  k5è?d Ø¥™çèÓé @  l6è?d ¦™z¬s( @  m7è?d X¦™$¯). @  n8è?d ˜¦™Z+Ð @  o9è?d ئ™—6°3 @  p:è?d §™G~<Û @  q;è?d X§™m…ú @  r<è?d ˜§™¡˜‡ @  s=è?d ا™”®† @  t>è?d ¨™ Q  @  u?è?d X¨™öåª @  v@è?d ˜¨™ÖT @  wAè?d ب™èݹW @  xBè?d ©™8•5¿ @  yCè?d X©™þ†Œž @  zDè?d ˜©™ÞsŽ` @  {Eè?d Ø©™ëEô @  |Fè?d ª™v/5 @  }Gè?d Xª™(u3 @  ~Hè?d ˜ª™÷wÍ @  Iè?d ت™ÇÌý= @  €Jè?d «™„qÕ @  Kè?d X«™Ñ—Èô @  ‚Lè?d ˜«™ñbÊ  @  ƒMè?d Ø«™ÄTËž @  „Nè?d ¬™Ý8‘ @  …Oè?d X¬™æI{ @  †Pè?d ˜¬™Ƽ… @  ‡Qè?d ج™øq§† @  ˆRè?d ­™(9+n @  ‰Sè?d X­™î*’O @  ŠTè?d ˜­™Îß± @  ‹Uè?d Ø­™ûé‘% @  ŒVè?d ®™f­1ä @  Wè?d X®™8®kâ @  ŽXè?d ˜®™[i @  Yè?d Ø®™‹7òÿ @  Zè?d ¯™[~ @  ‘[è?d X¯™lÇ6 @  ’\è?d ˜¯™½™ÅÈ @  “]è?d د™ˆ¯Ä\ @  ”^è?d °™6qxî @  •_è?d X°™•yØ @  –`è?d ˜°™°`{& @  —aè?d ذ™Ž­Þ% @  ˜bè?d ±™^åRÍ @  ™cè?d X±™˜öëì @  šdè?d ˜±™¸é @  ›eè?d ر™5è† @  œfè?d ²™qHG @  gè?d X²™NrA @  žhè?d ˜²™n‡¿ @  Ÿiè?d ز™ìí¬ì @   jè?d ³™<¥  @  ¡kè?d X³™ú¶™% @  ¢lè?d ˜³™ÚC›Û @  £mè?d س™ïušO @  ¤nè?d ´™ö;i@ @  ¥oè?d X´™ÍhQª @  ¦pè?d ˜´™íST @  §qè?d Ø´™ÓPöW @  ¨rè?d µ™z¿ @  ©sè?d Xµ™ŠÞ @  ªtè?d ˜µ™åþÁ` @  «uè?d ص™ÐÈÀô @  ¬vè?d ¶™MŒ`5 @  ­wè?d X¶™:3 @  ®xè?d ˜¶™3z8Í @  ¯yè?d ض™ £. @  °zè?d ·™p^/Æ @  ±{è?d X·™¶M–ç @  ²|è?d ˜·™–¸” @  ³}è?d Ø·™£Ž• @  ´~è?d ¸™—q @  µè?d X¸™ÜY% @  ¶€è?d ˜¸™üö[Û @  ·è?d ظ™Â;þØ @  ¸‚è?d ¹™sr0 @  ¹ƒè?d X¹™Ô`Ë @  º„è?d ˜¹™ô•Éï @  »…è?d ع™Á£È{ @  ¼†è?d º™\çhº @  ½‡è?d Xº™ä2¼ @  ¾ˆè?d ˜º™"0B @  ¿‰è?d غ™|Šƒ @  ÀŠè?d »™Þ4k @  Á‹è?d X»™'¿J @  ÂŒè?d ˜»™8Ò½´ @  Ãè?d Ø»™ ä¼  @  ÄŽè?d ¼™ªO/ @  Åè?d X¼™/ùwÅ @  Æè?d ˜¼™ u; @  Ç‘è?d ؼ™1ÁÐ8 @  È’è?d ½™á‰\Ð @  É“è?d X½™'šåñ @  Ê”è?d ˜½™oç @  Ë•è?d ؽ™2Yæ› @  Ì–è?d ¾™¯FZ @  Í—è?d X¾™ñ\ @  Î˜è?d ˜¾™Ñë¢ @  Ï™è?d ؾ™B‡…A @  Ðšè?d ¿™’Ï © @  Ñ›è?d X¿™Tܰˆ @  Òœè?d ˜¿™t)²v @uÐÀ™  Óè?d Ø¿™ƒ¶T7 @  Ôžè?d 0À™çFe @  ÕŸè?d pÀ™A¢S @  Ö è?d °À™aW­ @  ×¡è?d ðÀ™_𣮠@  Ø¢è?d 0Á™Ò/F @  Ù£è?d pÁ™IÁ–g @  Ú¤è?d °Á™i4”™ @  Û¥è?d ðÁ™\•  @  Ü¦è?d 0™ÁF5Ì @  Ý§è?d p™ŸEoÊ @  Þ¨è?d °Â™¿°m4 @  ß©è?d ð™=ÚÑg @  àªè?d 0Ùí’] @  á«è?d pÙ+ä® @  â¬è?d€ °Ã™Ê3P @  ­è?d ðÙDXí @  ®è?d 0Ä™ «â @  ¯è?d pÄ™ùhå @  °è?d °Ä™Ùåj @  ±è?d ðÄ™)šb @  ²è?d 0Å™ùÒŠ @  ³è?d pÅ™ñsúÑ @  ´è?d °Å™цø/ @   µè?d ðÅ™!ùV @   ¶è?d 0Æ™¼½¢— @   ·è?d pÆ™'÷| @   ¸è?d °Æ™‚ @   ¹è?d ðÆ™÷}ûû @  ºè?d 0Ç™'5w @  »è?d pÇ™‚5¯¨ @  ¼è?d °Ç™¢À­V @  ½è?d ðÇ™R¿W/ @  ¾è?d 0È™f@Û2 @  ¿è?d pÈ™õ½4ø @  Àè?d °È™ÕH6 @  Áè?d ðÈ™%7Ì @  Âè?d 0É™õ@— @  Ãè?d pÉ™ýÞ¦Ì @  Äè?d °É™Ý+¤2 @  Åè?d ðÉ™-T^K @  Æè?d 0Ê™°þŠ @  Çè?d pÊ™+Z_a @  Èè?d °Ê™ ¯]Ÿ @  Éè?d ðÊ™ûЧæ @  Êè?d 0Ë™+˜+ @  Ëè?d pË™ŸžÔ @   Ìè?d °Ë™¿kÖû @  !Íè?d ðË™O,‚ @  "Îè?d 0Ì™VZß @  #Ïè?d pÌ™¨@Š @  $Ðè?d °Ì™ˆµt @  %Ñè?d ðÌ™xÊä  @  &Òè?d 0Í™¨‚hå @  'Óè?d pÍ™ #޾ @  (Ôè?d °Í™€ÖŒ@ @  )Õè?d ðÍ™p©v9 @  *Öè?d 0ΙííÖø @  +×è?d pΙv§w @  ,Øè?d °Î™VRuí @  -Ùè?d ðΙ¦-” @  .Úè?d 0Ï™ve| @  /Ûè?d pÏ™ÓeÛÇ @  0Üè?d °Ï™óÙ9 @  1Ýè?d ðÏ™ï#@ @  2Þè?d 0Й½1Ÿò @  3ßè?d pЙÞœe) @  4àè?d °Ð™þig× @  5áè?d ðЙ® @  6âè?d 0Ñ™Þ^F @  7ãè?d pÑ™Öÿ÷ @  8äè?d °Ñ™ö õã @  9åè?d ðÑ™uš @  :æè?d 0Ò™›1¯[ @  ;çè?d pÒ™{° @  <èè?d °Ò™ Ž N @  =éè?d ðÒ™Ðñö7 @  >êè?d 0Ó™¹zß @  ?ëè?d pÓ™¸ƒF @  @ìè?d °Ó™:M¸ @  Aíè?d ðÓ™Ê2{Á @  Bîè?d 0Ô™Ó|ˆÎ @  Cïè?d pÔ™-fKÉ @  Dðè?d °Ô™ “I7 @  Eñè?d ðÔ™ýì³N @  Fòè?d 0Õ™-¤?¦ @  Góè?d pÕ™%Ùý @  Hôè?d °Õ™ðÛ @  Iõè?d ðÕ™õ!z @  Jöè?d 0Ö™hË» @  K÷è?d pÖ™ó P @  Løè?d °Ö™Ót"® @  Mùè?d ðÖ™# Ø× @  Núè?d 0×™óCT? @  Oûè?d p×™VCŒ„ @  Püè?d °×™v¶Žz @  Qýè?d ð×™†Ét @  Rþè?d 0Ø™²6ø @  Sÿè?d pØ™CjJ @  Té?d °Ø™cŸ´ @  Ué?d ðØ™“àîÍ @  Vé?d 0Ù™C¨b% @  Wé?d pÙ™K „~ @  Xé?d °Ù™kü†€ @  Yé?d ðÙ™›ƒ|ù @  Zé?d 0Ú™ÇÜ8 @  [é?d pÚ™}Ó @  \é?d °Ú™½x- @  ] é?d ðÚ™M…T @  ^ é?d 0Û™O ¼ @  _ é?d pÛ™)Iö· @  ` é?d °Û™ ¼ôI @  a é?d ðÛ™ùÃ0 @  bé?d 0Ü™àý? @  cé?d pÜ™—>8 @  dé?d °Ü™>b<Æ @  eé?d ðÜ™ÎÆ¿ @  fé?d 0Ý™UJW @  gé?d pÝ™ô¬  @  hé?d °Ý™6®ò @  ié?d ðÝ™Æ~T‹ @  jé?d 0Þ™[:ôJ @  ké?d pÞ™ÀpU¡ @  lé?d °Þ™à…W_ @  mé?d ðÞ™ú­& @  né?d 0ß™À²!Î @  oé?d pß™e²ùu @  pé?d uÐà™/°ß™EGû‹ @  qé?d ðß™ȸrŽ @  r€é?d Hà™Ñ,x @  s€é?d ˆà™Õà @  t€ é?d Èà™’DÔ] @  u€!é?d á™0âµ @  v€"é?d Hᙲs¢Ì @  w€#é?d ˆá™¶Q· @  x€$é?d Èᙚ'Fi @  y€%é?d â™u  @  z€&é?d Hâ™÷Ñ @  {€'é?d ˆâ™Î2¨ @  |€(é?d Èâ™L£¿Ä @  }€)é?d ã™îÞ‹ @  ~€*é?d Hã™l”ÉU @  €+é?d ˆã™7§Ý @  €€,é?d È㙵6 @  €-é?d ä™Þ–« @  ‚€.é?d Hä™\ u @  ƒ€/é?d ˆä™yÝR @  „€0é?d È䙂èÊŒ @  …€1é?d å™ N«Ã @  †€2é?d H噢߼ @  ‡€3é?d ˆå™Of @  ˆ€4é?d È噊‹X¸ @  ‰€5é?d æ™e!Þ @  Š€6é?d Hæ™ç° @  ‹€7é?d ˆæ™Þž¶Ë @  Œ€8é?d Èæ™\¡ @  €9é?d ç™þ©ÀZ @  Ž€:é?d Hç™|8ׄ @  €;é?d ˆç™{\ @  €<é?d Èç™ùÍ Á @  ‘€=é?d 虿Ül{ @  ’€>é?d Hè™=M{¥ @  “€?é?d ˆè™ ÔO @  ”€@é?d È虎E–‘ @  •€Aé?d é™,ã÷Þ @  –€Bé?d Hé™®rà @  —€Cé?d ˆé™·{ @  ˜€Dé?d È陆&¥ @  ™€Eé?d ê™iŒIà @  š€Fé?d Hê™ë^ @  ›€Gé?d ˆê™Ò3êÖ @  œ€Hé?d Èê™P¢ý @  €Ié?d ë™òœG @  ž€Jé?d Hë™p•‹™ @  Ÿ€Ké?d ˆë™f÷a² @   €Lé?d Èë™äfvl @  ¡€Mé?d ì™ÆhÄ @  ¢€Né?d Hì™ W @  £€Oé?d ˆì™Q)©= @  ¤€Pé?d Èì™Ó¸¾ã @  ¥€Qé?d í™q߬ @  ¦€Ré?d Hí™óÈr @  §€Sé?d ˆí™YJ;  @  ¨€Té?d Èí™ÛÛ,× @  ©€Ué?d î™4qa± @  ª€Vé?d Hî™¶àvo @  «€Wé?d ˆî™Τ @  ¬€Xé?d Èî™ _Õz @  ­€Yé?d ù´5 @  ®€Zé?d Hï™-h£ë @  ¯€[é?d ˆï™* np @  °€\é?d Èy® @  ±€]é?d ð™d­(» @  ²€^é?d Hð™æ} @  Ú€†é?d Hú™"­)£ @  Û€‡é?d ˆú™ƒh @  Ü€ˆé?d Èú™™ж @  Ý€‰é?d û™;´ëù @  Þ€Šé?d Hû™¹%ü' @  ߀‹é?d ˆû™¯G  @  à€Œé?d Èû™-ÖÒ @  á€é?d ü™Fvz @  â€Žé?d€ Hü™°$ @  €é?d ˆü™ Š  @  €é?d Èü™ŠÒ @  €‘é?d ý™èep @  €’é?d Hý™jô® @  €“é?d ˆý™ƒ¼¯ @  €”é?d Èý™Œ«q @  €•é?d þ™­ ¹m @  €–é?d Hþ™/›®³ @   €—é?d ˆþ™Óüá• @   €˜é?d Èþ™QmöK @   €™é?d ÿ™6‚lé @   €šé?d Hÿ™´{7 @   €›é?d ˆÿ™Ðd×6 @  €uКœé?d Èÿ™RõÀè @  €é?d šGù @  €žé?d `šÅh @  €Ÿé?d  šÁè  @  € é?d àšCyÔ @  €¡é?d š$–Šv @  €¢é?d `𦍠@  €£é?d  šÂp1© @  €¤é?d àš@á&w @  €¥é?d šaù4k @  €¦é?d `šãh#µ @  €§é?d  šl“ @  €¨é?d àšž{M @  €©é?d šúqáï @  €ªé?d `šxàö1 @  €«é?d  š—Z0 @  €¬é?d àšžMî @  €­é?d š‡³l @   €®é?d `š"² @  !€¯é?d  šœ/x @  "€°é?d àš„8¦ @  #€±é?d šyk¢ @  $€²é?d `šûúµÚ @  %€³é?d  šŸÛ @  &€´é?d àš @  '€µé?d š< @  (€¶é?d `š¾• Ç @  )€·é?d  šBòDá @  *€¸é?d àšÀcS? @  +€¹é?d š§ŒÉ @  ,€ºé?d `š%ÞC @  -€»é?d  šAjrB @  .€¼é?d àšÃûeœ @  /€½é?d šæùe¼ @  0€¾é?d `šdhrb @  1€¿é?d  š¸se @  2€Àé?d àš)d» @  3€Áé?d šuÆþ @  4€Âé?d ` š÷WéÇ @  5€Ãé?d   š“ EÆ @  6€Äé?d à š±R @  7€Åé?d š0©@ @  8€Æé?d ` š²8WÚ @  9€Çé?d   šN_ü @  :€Èé?d à šÌÎ" @  ;€Éé?d š«!•€ @  <€Êé?d ` š)°‚^ @  =€Ëé?d   šMÇ._ @  >€Ìé?d à šÏV9 @  ?€Íé?d šxäg‘ @  @€Îé?d ` šúupO @  A€Ïé?d   šcB]… @  B€Ðé?d à šáÓJ[ @  C€Ñé?d š†<Ðù @  D€Òé?d ` š­Ç' @  E€Óé?d   š`Úk& @  F€Ôé?d à šâK|ø @  G€Õé?d šÃSnä @  H€Öé?d `šAÂy: @  I€×é?d  š½¥6 @  J€Øé?d àš?4! @  K€Ùé?d šXÛ»` @  L€Úé?d `šÚJ¬¾ @  M€Ûé?d  š¾=¿ @  N€Üé?d àš<¬a @  O€Ýé?d š“'î @  P€Þé?d `š00 @  Q€ßé?d  šž$& @  R€àé?d àš—3ø @  S€áé?d šðà©Z @  T€âé?d `šrq¾„ @  U€ãé?d  š… @  V€äé?d àš”—[ @  W€åé?d šµG @  X€æé?d `š7™ @  Y€çé?d  šËyO¿ @  Z€èé?d àšIèXa @  [€éé?d š.Âà @  \€êé?d `š¬–Õ @  ]€ëé?d  šÈáy @  ^€ìé?d àšJpn @  _€íé?d šSÅ6@ @  `€îé?d `šÑT!ž @  a€ïé?d  šHc T @  b€ðé?d àšÊòŠ @  c€ñé?d š­( @  d€òé?d `š/Œ–ö @  e€óé?d  šKû:÷ @  f€ôé?d àšÉj-) @  g€õé?d šèr?5 @  h€öé?d `šjã(ë @  i€÷é?d  š–„gÍ @  j€øé?d àšp @  k€ùé?d šsúê± @  l€úé?d `šñkýo @  m€ûé?d  š•Qn @  n€üé?d àšF° @  o€ýé?d š2F @  p€þé?d `š°QN @  q€ÿé?d  š”Mdò @  r€ê?d àšÜs, @  s€ê?d šq3éŽ @  t€ê?d `šó¢þP @  u€ê?d  š—ÕRQ @  v€ê?d àšDE @  w€ê?d š4\W“ @  x€ê?d `š¶Í@M @  y€ê?d  šJªk @  z€ê?d àšÈ;µ @  {€ ê?d š¯Ô‚ @  |€ ê?d `š-E•É @  }€ ê?d  šI29È @  ~€ ê?d àšË£. @  € ê?d šŸG@7 @  €€ê?d `šÖWé @  €ê?d  š„áz# @  ‚€ê?d àšpmý @  ƒ€ê?d šaŸ÷_ @  „€ê?d `šãà @  …€ê?d  š‡yL€ @  †€ê?d àšè[^ @  ‡€ê?d š$ðIB @  ˆ€ê?d `š¦a^œ @  ‰€ê?d  šZº @  Š€ê?d àšØ—d @  ‹€ê?d š¿xœÆ @  Œ€ê?d `š=é‹ @  €ê?d  šYž'uÐ š @  Ž€ê?d àš¦C» @  ê?d 8 šÆyà @  ê?d x šDè> @  ‘ê?d ¸ š@h( @  ’ ê?d ø šÂùö @  “!ê?d 8!š¥ŸT @  ”"ê?d x!š'‡ˆŠ @  •#ê?d ¸!šCð$‹ @  –$ê?d ø!šÁa3U @  —%ê?d 8"šày!I @  ˜&ê?d x"šbè6— @  ™'ê?d ¸"šžy± @  š(ê?d ø"šno @  ›)ê?d 8#š{ñôÍ @  œ*ê?d x#šù`ã @  +ê?d ¸#šO @  ž,ê?d ø#š†XÌ @  Ÿ-ê?d 8$š3N @   .ê?d x$š„¢ @  ¡/ê?d ¸$š•:Z @  ¢0ê?d ø$šŸ-„ @  £1ê?d 8%šøë·& @  ¤2ê?d x%šzz ø @  ¥3ê?d ¸%š ù @  ¦4ê?d ø%šœœ' @  §5ê?d 8&𽄠; @  ¨6ê?d x&š?å @  ©7ê?d ¸&šÃrQà @  ª8ê?d ø&šAãF @  «9ê?d 8'š& Ü¿ @  ¬:ê?d x'š¤Ëa @  ­;ê?d ¸'šÀêg` @  ®<ê?d ø'šB{p¾ @  ¯=ê?d 8(šgypž @  °>ê?d x(šåèg@ @  ±?ê?d ¸(š8fG @  ²@ê?d ø(š“©q™ @  ³Aê?d 8)šôFë; @  ´Bê?d x)šv×üå @  µCê?d ¸)š Pä @  ¶Dê?d ø)š1G: @  ·Eê?d 8*š±)U& @  ¸Fê?d x*š3¸Bø @  ¹Gê?d ¸*šÏß Þ @  ºHê?d ø*šMN @  »Iê?d 8+š*¡€¢ @  ¼Jê?d x+š¨0—| @  ½Kê?d ¸+šÌG;} @  ¾Lê?d ø+šNÖ,£ @  ¿Mê?d 8,šùdr³ @  ÀNê?d x,š{õem @  ÁOê?d ¸,šâÂH§ @  ÂPê?d ø,š`S_y @  ÃQê?d 8-š¼ÅÛ @  ÄRê?d x-š…-Ò @  ÅSê?d ¸-šáZ~ @  ÆTê?d ø-šcËiÚ @  ÇUê?d 8.šBÓ{Æ @  ÈVê?d x.šÀBl @  ÉWê?d ¸.š<%#> @  ÊXê?d ø.š¾´4à @  ËYê?d 8/šÙ[®B @  ÌZê?d x/š[ʹœ @  Í[ê?d ¸/š?½ @  Î\ê?d ø/š½,C @  Ï]ê?d 80š2Ì @  Ð^ê?d x0šž% @  Ñ_ê?d ¸0š”1 @  Ò`ê?d ø0š&Ú @  Óaê?d 81šq`¼x @  Ôbê?d x1šóñ«¦ @  Õcê?d ¸1𗆧 @  Ödê?d ø1šy @  ×eê?d 82š4e @  Øfê?d x2š¶ž» @  Ùgê?d ¸2šJùZ @  Úhê?d ø2šÈhMC @  Ûiê?d 83š¯‡×á @  Üjê?d x3š-À? @  Ýkê?d ¸3šIal> @  Þlê?d ø3šËð{à @  ßmê?d 84šÒE#b @  ànê?d x4šPÔ4¼ @  áoê?d ¸4šÉãv @  âpê?d€ ø4šcèú @  qê?d 85šåFÈq @  rê?d x5šg×߯ @  sê?d ¸5šÆéˆC @  tê?d ø5šDxŸ @  uê?d 86š«ÒÒû @  vê?d x6š)CÅ% @  wê?d ¸6š–Õy @  xê?d ø6š™§ @   yê?d 87š;¡£è @   zê?d x7š¹0´6 @   {ê?d ¸7šãÚ @   |ê?d ø7ššŸô @   }ê?d 88šÜŽ•¾ @  ~ê?d x8š^‚` @  ê?d ¸8šÔ¶o @  €ê?d ø8šV‹¡± @  ê?d 89šô-Àþ @  ‚ê?d x9šv¼×  @  ƒê?d ¸9šׂ€Ì @  „ê?d ø9šU— @  …ê?d 8:šº¹Út @  †ê?d x:š8(ͪ @  ‡ê?d ¸:š ýÝö @  ˆê?d ø:šˆlÊ( @  ‰ê?d 8;š*Ê«g @  Šê?d x;š¨[¼¹ @  ‹ê?d ¸;š eëU @  Œê?d ø;š‹ôü‹ @  ê?d 8<šàTâ# @  Žê?d x<šbÅõý @  ê?d ¸<š‰çž @   ê?d ø<š v‰Ã @  !‘ê?d 8=š©ÐèŒ @  "’ê?d x=š+AÿR @  #“ê?d ¸=šŠ¨¾ @  $”ê?d ø=šî¿` @  %•ê?d 8>šçDò @  &–ê?d x>šeÕåØ @  '—ê?d ¸>šWõ„ @  (˜ê?d ø>šÕ‘âZ @  )™ê?d 8?šw7ƒ @  *šê?d x?šõ¦”Ë @  +›ê?duÐ@š7 ¸?šT˜Ã' @  ,œê?d ø?𫉧… @  -€ê?d P@šËð @  .€žê?d @š:>òà @  /€Ÿê?d Ð@šÿÉ’L @  0€ ê?d Aš/¤ @  1€¡ê?d PAšßþäÝ @  2€¢ê?d Ašÿ æ# @  3€£ê?d ÐAšüQ¤ï @  4€¤ê?d Bša. @  5€¥ê?d PBš‘jþW @  6€¦ê?d Bš±Ÿü© @  7€§ê?d ÐBš!.ùÕ @  8€¨ê?d Cšñfu= @  9€©ê?d PCšD @  :€ªê?d Cš!ìº @  ;€«ê?d ÐCš"¶Ïv @  <€¬ê?d Dš;ø€®ê?d DšërÄþ @  ?€¯ê?d ÐDš 3¼¬ @  @€°ê?d EšÜ{0D @  A€±ê?d PEš,Ê= @  B€²ê?d Eš ñÈà @  C€³ê?d ÐEš«Š @  D€´ê?d Fš’ï*Î @  E€µê?d PFšbз @  F€¶ê?d FšBeÒI @  G€·ê?d ÐFšÒÔ×5 @  H€¸ê?d Gšœ[Ý @  I€¹ê?d PGšò㡤 @  J€ºê?d GšÒ£Z @  K€»ê?d ÐGšÑLá– @  L€¼ê?d Hšå³m‹ @  M€½ê?d PHšÌ—ò @  N€¾ê?d Hš59•  @  O€¿ê?d ÐHšžà± @  P€Àê?d IšÐÖlY @  Q€Áê?d PIš ©–  @  R€Âê?d Iš\”Þ @  S€Ãê?d ÐIšÖ @  T€Äê?d JšžBvÓ @  U€Åê?d PJšn=Œª @  V€Æê?d JšNÈŽT @  W€Çê?d ÐJšÞy‹( @  X€Èê?d Kš1À @  Y€Éê?d PKšþNý¹ @  Z€Êê?d KšÞ»ÿG @  [€Ëê?d ÐKšÝὋ @  \€Ìê?d LšįN„ @  ]€Íê?d PLš4дý @  ^€Îê?d Lš%¶ @  _€Ïê?d ÐLš]cÈà @  `€Ðê?d Mš+D+ @  a€Ñê?d PMš}T¾R @  b€Òê?d Mš]¡¼¬ @  c€Óê?d ÐMš^ûþ` @  d€Ôê?d Nšÿ^¡ @  e€Õê?d PNš3À¤Ø @  f€Öê?d Nš5¦& @  g€×ê?d ÐNšƒ„£Z @  h€Øê?d OšSÌ/² @  i€Ùê?d POš£³ÕË @  j€Úê?d OšƒF×5 @  k€Ûê?d ÐOš€•ù @  l€Üê?d Pš>Â)K @  m€Ýê?d PPšνÓ2 @  n€Þê?d PšîHÑÌ @  o€ßê?d ÐPš+¿±` @  p€àê?d Qšû÷=ˆ @  q€áê?d PQš ˆÇñ @  r€âê?d Qš+}Å @  s€ãê?d ÐQš('‡Ã @  t€äê?d Ršµc' @  u€åê?d PRšEÝ{ @  v€æê?d Ršeéß… @  w€çê?d ÐRšõXÚù @  x€èê?d Sš%V @  y€éê?d PSšÕo¬h @  z€êê?d Sšõš®– @  {€ëê?d ÐSšöÀìZ @  |€ìê?d TšïŽU @  }€íê?d PTšñå, @  ~€îê?d Tš?çÒ @  €ïê?d ÐTš;¯± @  €€ðê?d Ušë[#Y @  €ñê?d PUš$Ù  @  ‚€òê?d Uš;ÑÛÞ @  ƒ€óê?d ÐUš8‹™ @  „€ôê?d Vš¥Ï9Ó @  …€õê?d PVšU°Ãª @  †€öê?d VšuEÁT @  ‡€÷ê?d ÐVšåôÄ( @  ˆ€øê?d Wš5¼HÀ @  ‰€ùê?d PWšÅò¹ @  Š€úê?d Wšå6°G @  ‹€ûê?d ÐWšælò‹ @  Œ€üê?d XšÒ“~– @  €ýê?d PXš"ì„ï @  Ž€þê?d Xš† @  €ÿê?d ÐXšUò2 @  €ë?d Yš…W~Ú @  ‘€ë?d PYšu(„£ @  ’€ë?d YšU݆] @  “€ë?d ÐYšV‡Ä‘ @  ”€ë?d ZšËÃdP @  •€ë?d PZš;¼ž) @  –€ë?d ZšIœ× @  —€ë?d ÐZš‹ø™« @  ˜€ë?d [š[°C @  ™€ ë?d P[š«Ïï: @  š€ ë?d [š‹:íÄ @  ›€ ë?d Ð[šˆ`¯ @  œ€ ë?d \š‘.\ @  € ë?d P\šaQ¦~ @  ž€ë?d \šA¤¤€ @  Ÿ€ë?d Ð\šâÚ@ @   €ë?d ]šتV¨ @  ¡€ë?d P]š(Õ¬Ñ @  ¢€ë?d ]š ®/ @  £€ë?d Ð]š zìã @  ¤€ë?d ^š–>L" @  ¥€ë?d P^šfA¶[ @  ¦€ë?d ^šF´´¥ @  §€ë?d Ð^šÖ±Ù @  ¨€ë?d _šM=1 @  ©€ë?d P_šö2ÇH @  ª€ë?d _šÖÇŶ @  uÐ`š«€ë?d Ð_šÕ‡z @  ¬€ë?d (`ške2â @  ­€ë?d h`š›È› @  ®€ë?d ¨`š»ïÊe @  ¯€ë?d è`š~ªÉ @  °€ ë?d (aš®P&! @  ±€!ë?d haš^/ÜX @  ²€"ë?d ¨aš~ÚÞ¦ @  ³€#ë?d èaš}€œj @  ´€$ë?d (bšàÄ<« @  µ€%ë?d hbš»ÆÒ @  ¶€&ë?d ¨bš0NÄ, @  ·€'ë?d èbš ÿÁP @  ¸€(ë?d (cšp·M¸ @  ¹€)ë?d hcš€È·Á @  º€*ë?d ¨cš =µ? @  »€+ë?d ècš£g÷ó @  ¼€,ë?d (dšº)ü @  ½€-ë?d hdšJVþ… @  ¾€.ë?d ¨dšj£ü{ @  ¿€/ë?d èdšâ„) @  À€0ë?d (eš]ªÁ @  Á€1ë?d heš­Õò¸ @  €2ë?d ¨eš ðF @  À3ë?d èešŽz²Š @  Ä€4ë?d (fš>K @  Å€5ë?d hfšãAè2 @  Æ€6ë?d ¨fšôêÌ @  Ç€7ë?d èfšSï° @  È€8ë?d (gšƒMcX @  É€9ë?d hgšs2™! @  Ê€:ë?d ¨gšSÇ›ß @  Ë€;ë?d ègšPÙ @  Ì€<ë?d (hšdbU @  Í€=ë?d hhš”¯w @  ΀>ë?d ¨hš´è­‰ @  Ï€?ë?d èhšOØ4 @  Ѐ@ë?d (išQTÜ @  Ñ€Aë?d hiš¡x®¥ @  Ò€Bë?d ¨iš¬[ @  Ó€Cë?d èiš‚×î— @  Ô€Dë?d (jš“NV @  Õ€Eë?d hjšïì´/ @  Ö€Fë?d ¨jšÏ¶Ñ @  ×€Gë?d èjš_¨³­ @  Ø€Hë?d (kšà?E @  Ù€Ië?d hkšŸÅ< @  Ú€Jë?d ¨kš_jÇ @  Û€Kë?d èkš\0… @  Ü€Lë?d (lšE~v @  Ý€Më?d hlšµŒx @  Þ€Në?d ¨lš•ôކ @  ߀Oë?d èlšܲðF @  à€Pë?d (mš ú|® @  á€Që?d hmšü…†× @  â€Rë?d€ ¨mš¨³˜ @   €Së?d èmšJ¨’j @   €Të?d (nš×ì2« @   €Uë?d hnšâÚ3? @   €Vë?d ¨nšÂ/1Á @   €Wë?d ènšœ,kÇ @   €Xë?d (ošLdç/ @   €Yë?d hošr©B, @   €Zë?d ¨ošR\@Ò @    €[ë?d èoš”Oùó @    €\ë?d (pš*‘EA @    €]ë?d hpš§DÕ @    €^ë?d ¨pš?RF+ @    €_ë?d èpš™¶G @   €`ë?d (qšIþËõ @   €aë?d hqšÚ’P @   €bë?d ¨qšúgRè @   €cë?d èqš€ë?d (}šI“äÊ @   ?€‘ë?d h}šeþ^  @   @€’ë?d ¨}šE \õ @   A€“ë?d è}šƒåÔ @   B€”ë?d (~š\E @   C€•ë?d h~š+jD @   D€–ë?d ¨~š ŸF @   E€—ë?d è~šUœy @   F€˜ë?d (š…Ô‘ @   G€™ë?d hš»5’ @   H€šë?d ¨šuЀš'›ì7l @   I€›ë?d èš ý1 @   Jœë?d @€šNÁE @   Kë?d €€šÙ“ ñ @   Lžë?d À€š[/ @   MŸë?d š¯?†/ @   N ë?d @š-®‘ñ @   O¡ë?d €š¦2 @   P¢ë?d Àšž7ì @   Q£ë?d ‚šGñÒ @   R¤ë?d @‚šÅ`  @   S¥ë?d €‚šR2¸ @   T¦ë?d À‚šУf @   U§ë?d ƒšÜyÓV @   V¨ë?d @ƒš^èĈ @   W©ë?d €ƒšÂAt« @   Xªë?d Àƒš@Ðcu @   Y«ë?d „š>… @   Z¬ë?d @„šŸ)[ @   [­ë?d €„šß=ï @   \®ë?d À„šŠN*1 @   ]¯ë?d …šãĉí @   ^°ë?d @…šaUž3 @   _±ë?d €…šA[7@ @   `²ë?d À…šÃÊ ž @   a³ë?d †š .  @   b´ë?d @†š˜9~ @   cµë?d €†šÏ-Ê @   d¶ë?d À†š^: @   e·ë?d ‡š„û$ @   f¸ë?d @‡šìú @   g¹ë?d €‡šŸ¼\Ù @   hºë?d À‡š-K @   i»ë?d ˆšmPiå @   j¼ë?d @ˆšïÁ~; @   k½ë?d €ˆšx“j @   l¾ë?d Àˆšú}Q @   m¿ë?d ‰šþoò@ @   nÀë?d @‰š|þåž @   oÁë?d €‰šMök] @   pÂë?d À‰šÏg|ƒ @   qÃë?d Šš¡r½ @   rÄë?d @Šš”0ec @   sÅë?d €Ššbq× @   tÆë?d ÀŠšóf  @   uÇë?d ‹š)§9 @   vÈë?d @‹š¸°ç @   wÉë?d €‹š“Ä @   xÊë?d À‹š€ @   yËë?d ŒšLLJê @   zÌë?d @ŒšÎÝ]4 @   {Íë?d €ŒšYI€ @   |Îë?d ÀŒšÛ^^ @   }Ïë?d š²”ý‚ @   ~Ðë?d @š0ê\ @   Ñë?d €š]ZuŒ @   €Òë?d ÀšßËbR @   Óë?d Žš ll @   ‚Ôë?d @Žš„œ{² @   ƒÕë?d €ŽšÎo @   „Öë?d ÀŽš‘_xØ @   …×ë?d š…¹è @   †Øë?d @š®6 @   ‡Ùë?d €šƒ½ @   ˆÚë?d Àš, Ë @   ‰Ûë?d šûp† @   ŠÜë?d @šyá X @   ‹Ýë?d €šî³ì @   ŒÞë?d Àšl"2 @   ßë?d ‘š˜•2 @   Žàë?d @‘šŽ‚ì @   áë?d €‘š+† / @   âë?d À‘š©ñ @   ‘ãë?d ’špÑÏ @   ’äë?d @’šò@ @   “åë?d €’še¥ @   ”æë?d À’šçƒ{ @   •çë?d “šëYÀK @   –èë?d @“šiÈו @   —éë?d €“šõag¶ @   ˜êë?d À“šwðph @   ™ëë?d ”š*<-˜ @   šìë?d @”š¨­:F @   ›íë?d €”š?ÿ.ò @   œîë?d À”š½n9, @   ïë?d •šÔäšð @   žðë?d @•šVu. @   Ÿñë?d €•šv{$] @    òë?d À•šôê3ƒ @   ¡óë?d –š-,=½ @   ¢ôë?d @–š¯½*c @   £õë?d €–š8ï>× @   ¤öë?d À–šº~)  @   ¥÷ë?d —š¶¤è9 @   ¦øë?d @—š45ÿç @   §ùë?d €—š¨œOÄ @   ¨úë?d À—š* X @   ©ûë?d ˜šZpzø @   ªüë?d @˜šØám& @   «ýë?d €˜šO³y’ @   ¬þë?d À˜šÍ"nL @   ­ÿë?d ™š—çßU @   ®ì?d @™švÈ‹ @   ¯ì?d €™š$~FH @   °ì?d À™š¦ïQ– @   ±ì?d šš)_¨ @   ²ì?d @ššý¸Hv @   ³ì?d €ššjê\ @   ´ì?d Àššè{K @   µì?d ›š䡊, @   ¶ì?d @›šf0ò @   · ì?d €›šú™-Ñ @   ¸ ì?d À›šx: @   ¹ ì?d œš%Ägÿ @   º ì?d @œš§Up! @   » ì?d €œš0d• @   ¼ì?d Àœš²–sK @   ½ì?d šÛЗ @   ¾ì?d @šYÇI @   ¿ì?d €šׄh¨ @   Àì?d ÀšUv @   Áì?d žšŒÓqH @   Âì?d @žšBf– @   Ãì?d €žš™r" @   Äì?d Àžšeü @   Åì?d Ÿš[¤Ì @   Æì?d @Ÿš•ʳ @   Çì?d €Ÿš c1 @   ÈìuРš?d ÀŸš‹òï @   Éì?d  š¾{dv @   Êì?d X š<ês¨ @   Ëì?d ˜ š«¸g @   Ìì?d Ø š))p @   Íì?d ¡šÝê @   Î ì?d X¡š_…ý @   Ï!ì?d ˜¡šnsß @   Ð"ì?d Ø¡šìd @   Ñ#ì?d ¢š5Új? @   Ò$ì?d X¢š·K}á @   Ó%ì?d ˜¢š iU @   Ô&ì?d Ø¢š¢ˆ~‹ @   Õ'ì?d £š®R¿» @   Ö(ì?d X£š,èe @   ×)ì?d ˜£š°jF @   Ø*ì?d Ø£š2û˜ @   Ù+ì?d ¤šo7Rh @   Ú,ì?d X¤ší¦E¶ @   Û-ì?d ˜¤šzôQ @   Ü.ì?d ؤšøeFÜ @   Ý/ì?d ¥š‘ïå @   Þ0ì?d X¥š~òÞ @   ß1ì?d ˜¥š3p[­ @   à2ì?d Ø¥š±áLs @   á3ì?d ¦šh'BM @   â4ì?d€ X¦š+ñ¢“ @   5ì?d ˜¦š]âþ @   6ì?d ئšßséÐ @   7ì?d §šàÓ  @   8ì?d X§š”qÄÓ @   9ì?d ˜§šÆj+Š @   :ì?d اšDûì?d بš¨/®• @    ?ì?d ©ši Úi @    @ì?d X©šëšÍ· @    Aì?d ˜©š¹"î @   Bì?d Ø©š;50 @   Cì?d ªšÅZ” @   Dì?d XªšTMJ @   Eì?d ˜ªšQO¢ @   Fì?d تšÓÞµÍ @   Gì?d «šM @   Hì?d X«š˜Ü˜Î @   Iì?d ˜«šÊÇw— @   Jì?d Ø«šHV`I @   Kì?d ¬šÛ(bà @   Lì?d X¬šY¹u @   Mì?d ˜¬š ¢šD @   Nì?d جš‰3š @   Oì?d ­š%ðÕ« @   Pì?d X­š§aÂu @   Qì?d ˜­šõz-, @   Rì?d Ø­šwë:ò @   Sì?d ®šÜ8ræ @    Tì?d X®š^©e8 @   !Uì?d ˜®š ²Ša @   "Vì?d Ø®šŽ#¿ @   #Wì?d ¯šG°§b @   $Xì?d X¯šÅ!°¼ @   %Yì?d ˜¯š—:_å @   &Zì?d دš«H; @   '[ì?d °š!E  @   (\ì?d X°š£ÔÒ @   )]ì?d ˜°šñÏý‹ @   *^ì?d ذšs^êU @   +_ì?d ±šB*‹¸ @   ,`ì?d X±šÀ»œf @   -aì?d ˜±š’ s? @   .bì?d رš1dá @   /cì?d ²šªä E @   0dì?d X²š(u› @   1eì?d ˜²šznó @   2fì?d زšøÿä @   3gì?d ³š1lÞÁ @   4hì?d X³š³ýÉ @   5iì?d ˜³šáæ&F @   6jì?d سšcw1˜ @   7kì?d ´šð 3 @   8lì?d X´šr˜$Ì @   9mì?d ˜´š ƒË• @   :nì?d Ø´š¢ÜK @   ;oì?d µšÑ„z @   <pì?d XµšŒ@“¤ @   =qì?d ˜µšÞ[|ý @   >rì?d صš\Êk# @   ?sì?d ¶šY%¥ @   @tì?d X¶šÛ2{ @   Auì?d ˜¶š‰”Ý" @   Bvì?d ضš Êü @   Cwì?d ·š–ð! @   Dxì?d X·š@çÿ @   Eyì?d ˜·š¦ @   Fzì?d Ø·šx @   G{ì?d ¸š.Bbà @   H|ì?d X¸š¬Óu> @   I}ì?d ˜¸šþÈšg @   J~ì?d ظš|Y¹ @   Kì?d ¹š »­× @   L€ì?d X¹š"*º  @   Mì?d ˜¹šp1UP @   N‚ì?d عšò BŽ @   Oƒì?d ºšHu-* @   P„ì?d XºšÊä:ô @   Q…ì?d ˜ºš˜ÿÕ­ @   R†ì?d غšnÂs @   S‡ì?d »šÓýø® @   Tˆì?d X»šQlïp @   U‰ì?d ˜»šw) @   VŠì?d Ø»šæ÷ @   W‹ì?d ¼š˜} @   XŒì?d X¼š £ @   Yì?d ˜¼šÂíú @   ZŽì?d ؼš@ƒú$ @   [ì?d ½šì@¢ @   \ì?d X½šnѵË @   ]‘ì?d ˜½š<ÊZ’ @   ^’ì?d ؽš¾[ML @   _“ì?d ¾šˆX @   `”ì?d X¾š—† @   a•ì?d ˜¾šÅýß @   b–ì?d ؾšG“ê @   c—ì?d ¿šŽÐÜ @   d˜ì?d X¿š ‘Ç @   e™ì?d ˜¿š^Š([ @uÐÀš   fšì?d Ø¿šÜ?… @   g›ì?d 0Àš2ÛŸR @   hœì?d pÀš°JˆŒ @   iì?d °ÀšâQgÕ @   jžì?d ðÀš`Àp  @   kŸì?d 0ÁšQ´æ @   l ì?d pÁšÓ%8 @   m¡ì?d °Áš>éa @   n¢ì?d ðÁš¯þ¿ @   o£ì?d 0š¹z‘ @   p¤ì?d pš;ë†Å @   q¥ì?d °Âšiðiœ @   r¦ì?d ðšëa~B @   s§ì?d 0Ú"òDŸ @   t¨ì?d pÚ cSA @   u©ì?d °Ãšòx¼ @   vªì?d ðÚp髯 @   w«ì?d 0Äšã—©L @   x¬ì?d pÄša¾’ @   y­ì?d °Äš3QË @   z®ì?d ðÄš±ŒF @   {¯ì?d 0ÅšO$ @   |°ì?d pÅšŸÞ ú @   }±ì?d °ÅšÍÅæ£ @   ~²ì?d ðÅšOTñ} @   ³ì?d 0Æš©ÖÊ @   €´ì?d pÆš+G˜ @   µì?d °Æšy\wM @   ‚¶ì?d ðÆšûÍ`“ @   ƒ·ì?d 0Çš2^ZN @   „¸ì?d pÇš°ÏM @   …¹ì?d °Çšâ @   †ºì?d ðÇš`Eµ @   ‡»ì?d 0ÈšÞŠÈ @   ˆ¼ì?d pÈš\ßQ @   ‰½ì?d °Èš0 @   оì?d ðÈšŒ‘'Ö @   ‹¿ì?d 0ÉšMµS* @   ŒÀì?d pÉšÏ$Dô @   Áì?d °Éš?«­ @   ŽÂì?d ðÉš®¼s @   Ãì?d 0Êš¥{Ó× @   Äì?d pÊš'êÄ  @   ‘Åì?d °Êšuñ+P @   ’Æì?d ðÊš÷`<Ž @   “Çì?d 0Ëš>óS @   ”Èì?d pËš¼b @   •Éì?d °ËšîyþÔ @   –Êì?d ðËšlèé  @   —Ëì?d 0Ìšÿ–ë€ @   ˜Ìì?d pÌš}ü^ @   ™Íì?d °Ìš/ @   šÎì?d ðÌš­Ù @   ›Ïì?d 0ÍšN\è @   œÐì?d pÍšƒßK6 @   Ñì?d °ÍšÑĤo @   žÒì?d ðÍšSU³± @   ŸÓì?d 0Κø†û¥ @    Ôì?d pΚzì{ @   ¡Õì?d °Îš( " @   ¢Öì?d ðΚªü @   £×ì?d 0Ïšc.! @   ¤Øì?d pÏšáŸ9ÿ @   ¥Ùì?d °Ïš³„Ö¦ @   ¦Úì?d ðÏš1Áx @   §Ûì?d 0КûŒO @   ¨Üì?d pК‡j›‘ @   ©Ýì?d °ÐšÕqtÈ @   ªÞì?d ðКWàc @   «ßì?d 0Ñšf”û @   ¬àì?d pÑšä% @   ­áì?d °Ñš¶ú| @   ®âì?d ðÑš4í¢ @   ¯ãì?d 0ÒšŽZ‚ @   °äì?d pÒš 襯 @   ±åì?d °Òš^Ðz @   ²æì?d ðÒšÜAm_ @   ³çì?d 0ÓšÒW‚ @   ´èì?d pÓš—C@\ @   µéì?d °ÓšÅX¯ @   ¶êì?d ðÓšGɸÛ @   ·ëì?d 0ÔšÔ·ºQ @   ¸ìì?d pÔšV&­ @   ¹íì?d °Ôš=BÖ @   ºîì?d ðÔš†¬U @   »ïì?d 0Õš*o 9 @   ¼ðì?d pÕš¨þç @   ½ñì?d °Õšúåõ¾ @   ¾òì?d ðÕšxtâ` @   ¿óì?d 0Öš} ¬æ @   Àôì?d pÖšÿ1»8 @   Áõì?d °Öš­*Ta @   Âöì?d ðÖš/»C¿ @   Ã÷ì?d 0ךæ(yb @   Äøì?d pךd¹n¼ @   Åùì?d °×š6¢å @   Æúì?d ðך´3–; @   Çûì?d 0Øš üë£ @   Èüì?d pØšˆmü} @   Éýì?d °ØšÚv$ @   Êþì?d ðØšXçú @   Ëÿì?d 0Ùšûbq˜ @   Ìí?d pÙšyófF @   Íí?d °Ùš+è‰ @   Îí?d ðÙš©yžÁ @   Ïí?d 0Úš¬ñe @   Ðí?d pÚš‘=æ» @   Ñí?d °ÚšÃ& â @   Òí?d ðÚšA·< @   Óí?d 0Ûšˆ$$á @   Ôí?d pÛš µ3? @   Õ í?d °ÛšX®Üf @   Ö í?d ðÛšÚ?˸ @   × í?d 0ÜšIAÉ2 @   Ø í?d pÜšËÐÞì @   Ù í?d °Üš™Ë1µ @   Úí?d ðÜšZ&k @   Ûí?d 0Ýš·™~Z @   Üí?d pÝš5i„ @   Ýí?d °Ýšg†Ý @   Þí?d ðÝšå‚‘ @   ßí?d 0ÞšNQÙ @   àí?d pÞšÌÀÎÉ @   áí?d °ÞšžÛ! @   âí?d€ ðÞšh‰*è @   í?d 0ßš@[X @   í?d pßšÂÊO @   í?d uÐàš/°ßšU˜[v @   í?d ðßš× L¨ @   í?d HàšŠ/¼¡ @   í?d ˆàšªÚ¾_ @   í?d Èàš”\ @   í?d ášD_—´ @    í?d Hášâ»–‚ @     í?d ˆášÂN”| @    !í?d Èáš÷x•è @    "í?d âšj<5) @    #í?d H⚬/Œ @   $í?d ˆâšŒÚŽö @   %í?d Èâš¶ @   &í?d ãšÏþ™ý @   'í?d Hãš‘ýÃû @   (í?d ˆãš±Á @   )í?d Èãš„>À‘ @   *í?d äšp3ž @   +í?d Häš[cŠ¿ @   ,í?d ˆäš{–ˆA @   -í?d ÈäšE[-B @   .í?d åš•¡ª @   /í?d Håš®@™@ @   0í?d ˆåš޵›¾ @   1í?d Èåš»ƒš* @   2í?d æš&Ç:ë @   3í?d HæšàÔƒÊ @   4í?d ˆæšÀ!4 @   5í?d ÈæšBK=g @    6í?d çš’± @   !7í?d HçšÌë‰ @   "8í?d ˆçšìõéw @   #9í?d ÈçšÙÃèã @   $:í?d èšíí?d éšå_öÊ @   )?í?d Héš³ëâí @   *@í?d ˆéš“à @   +Aí?d È隦(ᇠ@   ,Bí?d êš;lAF @   -Cí?d Hêšýøg @   .Dí?d ˆêšÝŠú™ @   /Eí?d ÈêšNæaz @   0Fí?d ëšž®í’ @   1Gí?d HëšÀ­·” @   2Hí?d ˆëšàXµj @   3Ií?d ÈëšÕn´þ @   4Jí?d ìšÌ Gñ @   5Kí?d Hìš 3þÐ @   6Lí?d ˆìš*Æü. @   7Mí?d Èìš Y- @   8Ní?d íšÄCÕÅ @   9Oí?d Híšÿí/ @   :Pí?d ˆíšßåïÑ @   ;Qí?d ÈíšêÓîE @   <Rí?d îšw—N„ @   =Sí?d Hîš±„÷¥ @   >Tí?d ˆîš‘qõ[ @   ?Uí?d Èîš½Oš @   @Ví?d ïšmTÃr @   AWí?d Hïš3W™t @   BXí?d ˆïš¢›Š @   CYí?d Èïš&”š @   DZí?d ðš˜J&¬ @   E[í?d Hðš^YŸ @   F\í?d ˆðšGkA¦ @   G ]í?d Èðšy¦ä¥ @   H ^í?d ñš©îhM @   I _í?d Hñš i{ @   J `í?d ˆñš/ÿk… @   K aí?d ÈñšÉj @   L bí?d òš‡ÊÐ @   M cí?d HòšAžsñ @   N dí?d ˆòšakq @   O eí?d Èòšòêì @   P fí?d óš"Of @   Q gí?d Hóš|L< @   R hí?d ˆóš\¹>ü @   S ií?d Èóši?h @   T jí?d ôšpÁÌg @   U kí?d Hôš¶ÒuF @   V lí?d ˆôš–'w¸ @   W mí?d Èôš¨êÒ» @   X ní?d õšx¢^S @   Y oí?d HõšCñf¹ @   Z pí?d ˆõšcdG @   [ qí?d ÈõšV2eÓ @   \ rí?d öšËvÅ @   ] sí?d Höš e|3 @   ^ tí?d ˆöš-~Í @   _ uí?d Èöš¯úž @   ` ví?d ÷š²Nv @   a wí?d H÷š!±p @   b xí?d ˆ÷šDŽ @   c yí?d È÷š4r @   d zí?d øš› @   e {í?d HøšÆž"& @   f |í?d ˆøšæk Ø @   g }í?d Èøšئ…Û @   h ~í?d ùšî 3 @   i í?d HùšCœI† @   j €í?d ˆùšciKx @   k í?d ÈùšV_Jì @   l ‚í?d úšËê- @   m ƒí?d Húš S  @   n „í?d ˆúš-ýQò @   o …í?d Èúš¾‘Ê @   p †í?d ûšnÙFù @   q ‡í?d Hûš0Úÿ @   r ˆí?d ˆûš/ @   s ‰í?d Èûš%• @   t Ší?d üšçñ @    î?d à›±Aˆ @   î?d ›a ‘` @   î?d `›”èöð @   î?d  ›´ô @   î?d à›Dbw @   î?d ›Ù&®¶ @   î?d `›Ú|ìz @   î?d  ›ú‰î„ @   î?d à› öý @   î?d ›Ú¾˜ @   î?d `›ö¨„9 @    î?d  ›Ö]†ÇuÐ › @   !î?d à›ä‹›k @   "î?d 8 ›•€E  @   #î?d x ›–ÚÁ @   $î?d ¸ ›¶/? @   %î?d ø ›FPÿF @   &î?d 8!›–s® @   'î?d x!›þN-â @   ( î?d ¸!›Þ»/ @   )!î?d ø!›.ÄÕe @   *"î?d 8"›³€u¤ @   +#î?d x"›°Ú7h @   ,$î?d ¸"›/5– @   -%î?d ø"›`PÏï @   .&î?d 8#›°C @   /'î?d x#›x› @   0(î?d ¸#›­ýze @   1)î?d ø#›]‚€ @   2*î?d 8$›DÌs @   3+î?d x$›G–1ß @   4,î?d ¸$›gc3! @   5-î?d ø$›—ÉX @   6.î?d 8%›GTE° @   7/î?d x%›²µ"  @   80î?d ¸%›’@ Þ @   91î?d ø%›b?Ú§ @   :2î?d 8&›ÿ{zf @   ;3î?d x&›ü!8ª @   <4î?d ¸&›ÜÔ:T @   =5î?d ø&›,«À- @   >6î?d 8'›üãLÅ @   ?7î?d x'›~òV{ @   @8î?d ¸'›^T… @   A9î?d ø'›®x®ü @   B:î?d 8(›š‡"á @   C;î?d x(›™Ý`- @   D<î?d ¸(›¹(bÓ @   E=î?d ø(›IW˜ª @   F>î?d 8)›™B @   G?î?d x)›_ @   H@î?d ¸)›!ì]á @   IAî?d ø)›Ñ“§˜ @   JBî?d 8*›L×Y @   KCî?d x*›OE• @   LDî?d ¸*›oxGk @   MEî?d ø*›Ÿ½ @   NFî?d 8+›OO1ú @   OGî?d x+›r_ f @   PHî?d ¸+›Rª˜ @   QIî?d ø+›¢Õòá @   RJî?d 8,›»›î @   SKî?d x,›¸ÁC" @   TLî?d ¸,›˜4AÜ @   UMî?d ø,›hK»¥ @   VNî?d 8-›¸7M @   WOî?d x-›MâPÝ @   XPî?d ¸-›mR# @   YQî?d ø-›h¨Z @   ZRî?d 8.›,› @   [Sî?d x.›vJW @   \Tî?d ¸.›#ƒH© @   ]Uî?d ø.›Óü²Ð @   ^Vî?d 8/›´>8 @   _Wî?d x/›/¢" @   `Xî?d ¸/›W ê @   aYî?d ø/›ÿ(Ú“ @   bZî?d 80›Aöf! @   c[î?d x0›B¬$í @   d\î?d ¸0›bY& @   e]î?d ø0›’&Üj @   f^î?d 81›BnP‚ @   g_î?d x1›*8Î @   h`î?d ¸1› Í 0 @   iaî?d ø1›ú²öI @   jbî?d 82›göVˆ @   kcî?d x2›d¬D @   ldî?d ¸2›DYº @   meî?d ø2›´&ìà @   nfî?d 83›dn`+ @   ogî?d x3›Y~[· @   phî?d ¸3›y‹YI @   qiî?d ø3›‰ô£0 @   rjî?d 84›ºP? @   skî?d x4›“àó @   tlî?d ¸4›³  @   umî?d ø4›Cjêt @   vnî?d 85›“"fœ @   woî?d x5›fà  @   xpî?d ¸5›F6ò @   yqî?d ø5›¶Iù‹ @   zrî?d 86›+ YJ @   {sî?d x6›(W† @   |tî?d ¸6›¢x @   }uî?d ø6›øÝã @   ~vî?d 87›(•oé @   wî?d x7›IÒEf @   €xî?d ¸7›i'G˜ @   yî?d ø7›™X½á @   ‚zî?d 88›­§1ü @   ƒ{î?d x8›®ýs0 @   „|î?d ¸8›ŽqÎ @   …}î?d ø8›~w‹· @   †~î?d 89›®?_ @   ‡î?d x9›+ÿ @   ˆ€î?d ¸9› n @   ‰î?d ø9›ûuà @   Š‚î?d 8:›f1@Ö @   ‹ƒî?d x:›ek @   Œ„î?d ¸:›Ežä @   …î?d ø:›µáú @   ކî?d 8;›e©vu @   ‡î?d x;›X¹Mé @   ˆî?d ¸;›xLO @   ‘‰î?d ø;›ˆ3µn @   ’Šî?d 8<›‘}Fa @   “‹î?d x<›’'­ @   ”Œî?d ¸<›²ÒS @   •î?d ø<›B­ü* @   –Žî?d 8=›’åp @   —î?d x=›gR @   ˜î?d ¸=›Gñ¬ @   ™‘î?d ø=›·ŽïÕ @   š’î?d 8>›*ÊO @   ›“î?d x>›) Ø @   œ”î?d ¸>› e& @   •î?d ø>›ùõ_ @   ž–î?d 8?›)Ry· @   Ÿ—î?d x?›De› @    ˜î?duÐ@›7 ¸?›%±ge @   ¡™î?d ø?›ÕÎ @   ¢šî?d P@›b'  @   £›î?d @›·\pÌ @   ¤œî?d Ð@›5Íg @   ¥î?d A›—k] @   ¦žî?d PA›úƒ @   §Ÿî?d A›ßÈZï @   ¨ î?d ÐA›]YM1 @   ©¡î?d B›²óW @   ª¢î?d PB›0b‰ @   «£î?d B›‘\@e @   ¬¤î?d ÐB›ÍW» @   ­¥î?d C›±k6ô @   ®¦î?d PC›3ú!* @   ¯§î?d C›¬Ž– @   °¨î?d ÐC›.H @   ±©î?d D›E¿à @   ²ªî?d PD›Ç.> @   ³«î?d D›fFÒ @   ´¬î?d ÐD›äQ  @   µ­î?d E›F'0C @   ¶®î?d PE›Ķ' @   ·¯î?d E›“3U- @   ¸°î?d ÐE›¢Bó @   ¹±î?d F›þ• @   º²î?d PF›|™K @   »³î?d F›ݧO§ @   ¼´î?d ÐF›_6Xy @   ½µî?d G›ý96 @   ¾¶î?d PG›.è @   ¿·î?d G›_t!v @   À¸î?d ÐG›Ýå6¨ @   Á¹î?d H››ôW @   ºî?d PH›e@Ì @   ûî?d H›¸[  @   ļî?d ÐH›:Êþ @   Žî?d I›˜la± @   ƾî?d PI›ývo @   Ç¿î?d I› Ÿ( @   ÈÀî?d ÐI›¢?Ì @   ÉÁî?d J›M¤rª @   ÊÂî?d PJ›Ï5et @   ËÃî?d J›n 2˜ @   ÌÄî?d ÐJ›ìš%F @   ÍÅî?d K›Nï?d Ð_›Ë;üÓ @   ?€ï?d (`›Û?äT @   @€ï?d h`›Y®óŠ @   A€ï?d ¨`›=Ù_‹ @   B€ï?d è`›¿HHU @   C€ï?d (a›اÒ÷ @   D€ï?d ha›Z6Å) @   E€ï?d ¨a›^¶Ñ? @   F€ ï?d èa›Ü'Æá @   G€!ï?d (b›ý?Ôý @   H€"ï?d hb›®Ã# @   I€#ï?d ¨b›Ùo" @   J€$ï?d èb›™Hxü @   K€%ï?d (c›þ§â^ @   L€&ï?d hc›|6õ€ @   M€'ï?d ¨c›€Qº¦ @   N€(ï?d èc›À­x @   O€)ï?d (d› sÒJ @   P€*ï?d hd›ˆâÅ” @   Q€+ï?d ¨d›ì•i• @   R€,ï?d èd›n~K @   S€-ï?d (e› ëäé @   T€.ï?d he›‹zó7 @   U€/ï?d ¨e›MÞý @   V€0ï?d èe›ÜÉ# @   W€1ï?d (f›±ÄÛ? @   X€2ï?d hf›3UÌá @   Y€3ï?d ¨f›W"`à @   Z€4ï?d èf›Õ³w> @   [€5ï?d (g›²\íœ @   \€6ï?d hg›0ÍúB @   ]€7ï?d ¨g›̪µd @   ^€8ï?d èg›N;¢º @   _€9ï?d (h›z?…* @   `€:ï?d hh›ø®’ô @   a€;ï?d ¨h›œÙ>õ @   b€<ï?d èh›H)+ @   c€=ï?d (i›y§³‰ @   d€>ï?d hi›û6¤W @   e€?ï?d ¨i›æ¥P @   f€@ï?d èi›w²Ž @   g€Aï?d (j›¬o ’ @   h€Bï?d hj›.þ·L @   i€Cï?d ¨j›J‰M @   j€Dï?d èj›È “ @   k€Eï?d (k›¯÷–1 @   l€Fï?d hk›-fï @   m€Gï?d ¨k›ÑÎÉ @   n€Hï?d èk›SÙ @   o€Iï?d (l›[#¦% @   p€Jï?d hl›Ù²±û @   q€Kï?d ¨l›½Åú @   r€Lï?d èl›?T $ @   s€Mï?d (m›X»† @   t€Nï?d hm›Ú*‡X @   u€Oï?d ¨m›Cª’ @   v€Pï?d èm›ÁŒ½L @   w€Qï?d (n›à”¯P @   x€Rï?d hn›b¸Ž @   y€Sï?d ¨n›r @   z€Tï?d èn›„ãQ @   {€Uï?d (o›ã ™ó @   |€Vï?d ho›aŽ- @   }€Wï?d ¨o›úÁ  @   ~€Xï?d èo›kÖÕ @   €Yï?d (p›ì÷I @   €€Zï?d hp›nŽà— @   €[ï?d ¨p› ùL– @   ‚€\ï?d èp›ˆh[H @   ƒ€]ï?d (q›ï‡Áê @   „€^ï?d hq›mÖ4 @   …€_ï?d ¨q›i–Â" @   †€`ï?d èq›ëÕü @   ‡€aï?d (r›ÊÇà @   ˆ€bï?d hr›HŽÐ> @   ‰€cï?d ¨r›,ù|? @   Š€dï?d èr›®hká @   ‹€eï?d (s›ɇñC @   Œ€fï?d hs›Kæ @   €gï?d ¨s›·q©» @   Ž€hï?d ès›5à¾e @   €iï?d (t›=SÁW @   €jï?d ht›¿ÂÖ‰ @   ‘€kï?d ¨t›Ûµzˆ @   ’€lï?d èt›Y$mV @   “€mï?d (u›>Ë÷ô @   ”€nï?d hu›¼Zà* @   •€oï?d ¨u›%mÍà @   –€pï?d èu›§üÚ> @   —€qï?d (v›†äÈ" @   ˜€rï?d hv›ußü @   ™€sï?d ¨v›`sý @   š€tï?d èv›â“d# @   ›€uï?d (w›…|þ @   œ€vï?d hw›íé_ @   €wï?d ¨w›ûЦy @   ž€xï?d èw›y±§ @   Ÿ€yï?d (x›M–7 @    €zï?d hx›ÏŽé @   ¡€{ï?d ¨x›«ù-è @   ¢€|ï?d èx›)h:6 @   £€}ï?d (y›N‡ ” @   ¤€~ï?d hy›Ì·J @   ¥€ï?d ¨y›%âß @   ¦€€ï?d èy›§‘õ @   §€ï?d (z›†‰ç @   ¨€‚ï?d hz›ðà @   ©€ƒï?d ¨z›`o\ @   ª€„ï?d èz›âþK @   «€…ï?d ({›…Ѿ @   ¬€†ï?d h{›€Æ` @   ­€‡ï?d ¨{›ûç‰F @   ®€ˆï?d è{›yvž˜ @   ¯€‰ï?d (|›qÅ᪠@   °€Šï?d h|›óTöt @   ±€‹ï?d ¨|›—#Zu @   ²€Œï?d è|›²M« @   ³€ï?d (}›r]×  @   ´€Žï?d h}›ðÌÀ× @   µ€ï?d ¨}›iûí @   ¶€ï?d è}›ëjúà @   ·€‘ï?d (~›Êrèß @   ¸€’ï?d h~›Hãÿ @   ¹€“ï?d ¨~›,”S @   º€”ï?d è~›®DÞ @   »€•ï?d (›ÉêÞ| @   ¼€–ï?d h›K{É¢ @   ½€—ï?d ¨›uЀ›'·†„ @   ¾€˜ï?d è›H â& @   ¿™ï?d @€›ˆO­M @   Àšï?d €€›¨º¯³ @   Á›ï?d À€›n©’ @   œï?d ›¾ášz @   Ãï?d @›‹×›î @   Äžï?d €›«"™ @   ÅŸï?d À› Ƙ& @   Æ ï?d ‚›‚8ç @   Ç¡ï?d @‚›®Oä @   È¢ï?d €‚›ŽºŸ @   É£ï?d À‚›H©&; @   ʤï?d ƒ›˜áªÓ @   Ë¥ï?d @ƒ›­×«G @   ̦ï?d €ƒ›"©¹ @   ͧï?d Àƒ›Ó!ó¿ @   Ψï?d „›Êo° @   Ï©ï?d @„›Y›S @   Ъï?d €„›yö™­ @   Ñ«ï?d À„›¿å Œ @   Ò¬ï?d …›o­¬d @   Ó­ï?d @…›Z›­ð @   Ô®ï?d €…›zn¯ @   Õ¯ï?d À…›A=—ä @   Ö°ï?d †›Üy7% @   ×±ï?d @†›â´’& @   زï?d €†›ÂAØ @   Ù³ï?d À†›R)ù @   Ú´ï?d ‡›Ô¥ @   Ûµï?d @‡›á,¤… @   ܶï?d €‡›ÁÙ¦{ @   Ý·ï?d À‡›ŸÚü} @   Þ¸ï?d ˆ›«%p` @   ß¹ï?d @ˆ›)OÌ3 @   àºï?d €ˆ› ºÎÍ @   á»ï?d Àˆ›Ï©wì @   â¼ï?d€ ‰›Þ¦  @  ½ï?d @‰› ÑE¹ @  ¾ï?d €‰›*$GG @  ¿ï?d À‰›¹Ù¨ @  Àï?d Š›$L @  Áï?d @Š›Ôâò5 @  Âï?d €Š›ôðË @  Ãï?d ÀŠ›ü¶ @  Äï?d ‹›,þšx @   Åï?d @‹›Ü` @   Æï?d €‹›ütbÿ @   Çï?d À‹›g>à @   Èï?d Œ›~p0 @   Éï?d @Œ›ŽÊb @  Êï?d €Œ›®úÈœ @  Ëï?d ÀŒ› ú' @  Ìï?d ›Û²œÏ @  Íï?d @›+Íf¶ @  Îï?d €› 8dH @  Ïï?d À›õ"§O @  Ðï?d Ž›hfŽ @  Ñï?d @Ž›˜ý÷ @  Òï?d €Ž›¸ìÿ  @  Óï?d ÀŽ›°MR @  Ôï?d ›`•º @  Õï?d @›zoà @  Öï?d €›°m= @  ×ï?d À›+ÅÌÖ @  Øï?d ›•pd @  Ùï?d @›edŠ @  Úï?d €›E‘ˆã @  Ûï?d À›ñ—wè @   Üï?d ‘›!ßû @  !Ýï?d @‘›Ñ y @  "Þï?d €‘›ñU‡ @  #ßï?d À‘›’øù\ @  $àï?d ’›¼Y @  %áï?d @’›ÿãä @  &âï?d €’›ß6¡ @  'ãï?d À’›×—GA @  (äï?d “›ßË© @  )åï?d @“›÷ 1Ð @  *æï?d €“›×U3. @  +çï?d À“›L’Å @  ,èï?d ”›UQaÊ @  -éï?d @”›¥.›³ @  .êï?d €”›…Û™M @  /ëï?d À”› ÛAö @  0ìï?d •›ð“Í @  1íï?d @•›ì7g @  2îï?d €•› 5™ @  3ïï?d À•›Þöž @  4ðï?d –›CGV_ @  5ñï?d @–›³8¬& @  6òï?d €–›“ꨯ @  7óï?d À–››lHƒ @  8ôï?d —›K$Äk @  9õï?d @—›»[> @  :öï?d €—››®<ì @  ;÷ï?d À—›ä @  <øï?d ˜›4 @  =ùï?d @˜›Ädëc @  >úï?d €˜›ä‘é @  ?ûï?d À˜›þ @  @üï?d ™›.Øœì @  Aýï?d @™›Þ§f• @  Bþï?d €™›þRdk @  Cÿï?d À™›ö‹¬ @  Dð?d š›kÏ N @  Eð?d @š››°ö7 @  Fð?d €š›»EôÉ @  Gð?d Àš›³ä’ @  Hð?d ››c¬žz @  Ið?d @››“Ód @  Jð?d €››³&fý @  Kð?d À››(lÇ @  Lð?d œ›1"4 @  M ð?d @œ›Á]Î` @  N ð?d €œ›á¨Ìž @  O ð?d Àœ›D¨% @  P ð?d ›”à˜Í @  Q ð?d @›dŸb´ @  Rð?d €›Dj`J @  Sð?d À›ºp£M @  Tð?d ž›'4Œ @  Uð?d @ž›×Kùõ @  Vð?d €ž›÷¾û  @  Wð?d Àž›ÿP @  Xð?d Ÿ›/W‘¸ @  Yð?d @Ÿ›ß(kÁ @  Zð?d €Ÿ›ÿÝi? @  [ðuР›?d ÀŸ›d—ÈÔ @  \ð?d  ›œ² @  ]ð?d X ›åãìË @  ^ð?d ˜ ›Åî5 @  _ð?d Ø ›q> @  `ð?d ¡›¡XÖ @  að?d X¡›Q'g¯ @  bð?d ˜¡›qÒeQ @  cð?d Ø¡›ŸŠ @  d ð?d ¢›;?K @  e!ð?d X¢›DÅ2 @  f"ð?d ˜¢›_±ÇÌ @  g#ð?d Ø¢›W!— @  h$ð?d £›‡X­ @  i%ð?d X£›w'W @  j&ð?d ˜£›WÒUø @  k'ð?d Ø£›̘ô @  l(ð?d ¤›ÕÖ @  m)ð?d X¤›%©ýe @  n*ð?d ˜¤›\ÿ› @  o+ð?d ؤ› \'  @  p,ð?d ¥›p«È @  q-ð?d X¥›€kQ± @  r.ð?d ˜¥› žSO @  s/ð?d Ø¥›^„H @  t0ð?d ¦›ÃÀ0‰ @  u1ð?d X¦›3¿Êð @  v2ð?d ˜¦›JÈ @  w3ð?d ئ›ë.U @  x4ð?d §›Ë£¢½ @  y5ð?d X§›;ÜXÄ @  z6ð?d ˜§›)Z: @  {7ð?d ا›€cûÑ @  |8ð?d ¨›´œwÌ @  }9ð?d X¨›Dãµ @  ~:ð?d ˜¨›dK @  ;ð?d ب›AFã @  €<ð?d ©›M Ê  @  =ð?d X©›½v0r @  ‚>ð?d ˜©›ƒ2Œ @  ƒ?ð?d Ø©›~ÝF @  „@ð?d ª›“:}‡ @  …Að?d Xª›cE‡þ @  †Bð?d ˜ª›C°… @  ‡Cð?d ت›Kc[ @  ˆDð?d «››Yï³ @  ‰Eð?d X«›k&Ê @  ŠFð?d ˜«›KÓ4 @  ‹Gð?d Ø«›Й¶ß @  ŒHð?d ¬›É×EÐ @  Ið?d X¬›9¨¿© @  ŽJð?d ˜¬›]½W @  Kð?d ج›¼]eì @  Lð?d ­›lé @  ‘Mð?d X­›œj} @  ’Nð?d ˜­›¼Ÿƒ @  “Oð?d Ø­›B…Ò„ @  ”Pð?d ®›ßÁrE @  •Qð?d X®›/¾ˆ< @  –Rð?d ˜®›KŠÂ @  —Sð?d Ø®›êl™ @  ˜Tð?d ¯›×¢àq @  ™Uð?d X¯›'Ý @  šVð?d ˜¯›(ö @  ›Wð?d د›œb¹ @  œXð?d °›"¼¯ @  Yð?d X°›ÒÃÿÖ @  žZð?d ˜°›ò6ý( @  Ÿ[ð?d ذ›F0# @   \ð?d ±›–xŽË @  ¡]ð?d X±›ft² @  ¢^ð?d ˜±›FòvL @  £_ð?d ر›%_Œ— @  ¤`ð?d ²›¸,V @  ¥að?d X²›HdÖ/ @  ¦bð?d ˜²›h‘ÔÑ @  §cð?d ز›`02Š @  ¨dð?d ³›°x¾b @  ©eð?d X³›@D @  ªfð?d ˜³›`òFå @  «gð?d س›û¸ç @  ¬hð?d ´›âö @  ­ið?d X´›‰îx @  ®jð?d ˜´›2|ì† @  ¯kð?d Ø´›—|4= @  °lð?d µ›G4¸Õ @  ±mð?d Xµ›·KB¬ @  ²nð?d ˜µ›—¾@R @  ³oð?d ص›i¤ƒU @  ´pð?d ¶›ôà#” @  µqð?d X¶›ŸÙí @  ¶rð?d ˜¶›$jÛ @  ·sð?d ض›,Ë=H @  ¸tð?d ·›üƒ±  @  ¹uð?d X·› üKÙ @  ºvð?d ˜·›, I' @  »wð?d Ø·›·CèÌ @  ¼xð?d ¸›ƒ¼dÑ @  ½yð?d X¸›sÞ¨ @  ¾zð?d ˜¸›S6œV @  ¿{ð?d ظ›I7eÏ @  À|ð?d ¹›™é' @  Á}ð?d X¹›i^ @  Â~ð?d ˜¹›Iõ  @  Ãð?d ع›ÇΪø @  Ä€ð?d º›ZŠ 9 @  Åð?d Xº›ªõð@ @  Æ‚ð?d ˜º›Šò¾ @  Çƒð?d غ›‚¡å @  È„ð?d »›Ré˜  @  É…ð?d X»›¢–bt @  Ê†ð?d ˜»›‚c`Š @  Ë‡ð?d Ø»›)Áa @  Ìˆð?d ¼›g2n @  Í‰ð?d X¼›ðÈ @  ÎŠð?d ˜¼›ÐíÊé @  Ï‹ð?d ؼ›uíR @  ÐŒð?d ½›¥¥žº @  Ñð?d X½›UÚdà @  ÒŽð?d ˜½›u/f= @  Óð?d ؽ›‹5¥: @  Ôð?d ¾›qû @  Õ‘ð?d X¾›æÿ‚ @  Ö’ð?d ˜¾›Æûý| @  ×“ð?d ؾ›ÎZ' @  Ø”ð?d ¿›—Ï @  Ù•ð?d X¿›îmm¶ @  Ú–ð?d ˜¿›ΘoH @uÐÀ›  Û—ð?d Ø¿›UÒΣ @  Ü˜ð?d 0À›1"Ÿñ @  Ý™ð?d pÀ›Á]eˆ @  Þšð?d °À›á¨gv @  ß›ð?d ðÀ›U®˜} @  àœð?d 0Á›…æ• @  áð?d pÁ›u™îì @  âžð?d€ °Á›!¯ð´ @  Ÿð?d ðÁ›£CBF @   ð?d 0›>⇠@  ¡ð?d p› 1ã @  ¢ð?d °Â›+Äáí @  £ð?d ð›í×XÌ @  ¤ð?d 0Û=ŸÔ$ @  ¥ð?d pÛRq' @  ¦ð?d °Ã›#§sÙ @   §ð?d ðÛ}¤)ß @   ¨ð?d 0Ä›dêÚÐ @   ©ð?d pÄ›QÜÛD @   ªð?d °Ä›q)Ùº @   «ð?d ðÄ›·:`› @  ¬ð?d 0Å›grìs @  ­ð?d pÅ›ôw @  ®ð?d °Å›Ôëun @  ¯ð?d ðÅ›ï¸M„ @  °ð?d 0Æ›rüíE @  ±ð?d pÆ›GÊìÑ @  ²ð?d °Æ›g?î/ @  ³ð?d ðÆ›¡,W @  ´ð?d 0Ç›qdÛæ @  µð?d pÇ›O©~å @  ¶ð?d °Ç›o\| @  ·ð?d ðÇ›1_& @  ¸ð?d 0È› ª @  ¹ð?d pÈ›0–«” @  ºð?d °È›c©j @  »ð?d ðÈ›ÖpK @  ¼ð?d 0É›8œ£ @  ½ð?d pÉ›„R ð @   ¾ð?d °É›¤§" @  !¿ð?d ðÉ›ò6) @  "Àð?d 0Ê›oW–è @  #Áð?d pÊ›Za—| @  $Âð?d °Ê›z”•‚ @  %Ãð?d ðÊ›¼‡,£ @  &Äð?d 0Ë›lÏ K @  'Åð?d pË›RH @  (Æð?d °Ë›r÷¶ @  )Çð?d ðË›,ô]° @  *Èð?d 0Ì›5º®¿ @  +Éð?d pÌ›Œ¯+ @  ,Êð?d °Ì› y­Õ @  -Ëð?d ðÌ›æjô @  .Ìð?d 0Í›6"˜ @  /Íð?d pÍ›¥Nÿ @  0Îð?d °Í›…» @  1Ïð?d ðÍ›¾è9ë @  2Ðð?d 0Λ#¬™* @  3Ñð?d pΛš˜¾ @  4Òð?d °Î›6oš@ @  5Óð?d ðΛð|#a @  6Ôð?d 0Ï› 4¯‰ @  7Õð?d pÏ›ù Š @  8Öð?d °Ï›> t @  9×ð?d ðÏ›`Rr @  :Øð?d 0ЛÞÑîÀ @  ;Ùð?d pЛëçïT @  <Úð?d °Ð›Ëíª @  =Ûð?d ðЛ T‹ @  >Üð?d 0Ñ›ÝIØc @  ?Ýð?d pÑ›ñ$b¢ @  @Þð?d °Ñ›ÑÑ`\ @  Aßð?d ðÑ›w5aj @  Bàð?d 0Ò›êqÁ« @  Cáð?d pÒ›ßGÀ? @  Dâð?d °Ò›ÿ²ÂÁ @  Eãð?d ðÒ›9¡{à @  Fäð?d 0Ó›éé÷ @  Gåð?d pÓ›×$R  @  Hæð?d °Ó›÷ÑPõ @  Içð?d ðÓ›©Ò ó @  Jèð?d 0Ô›°œùü @  Kéð?d pÔ›…ªøh @  Lêð?d °Ô›¥_ú– @  Mëð?d ðÔ›cLC· @  Nìð?d 0Õ›³Ï_ @  Oíð?d pÕ› hT¼ @  Pîð?d °Õ›VB @  Qïð?d ðÕ›;În¨ @  Rðð?d 0Ö›¦ŠÎi @  Sñð?d pÖ›“¼Ïý @  Tòð?d °Ö›³IÍ @  Uóð?d ðÖ›uZt" @  Vôð?d 0×›¥øÊ @  Wõð?d p×››ß]É @  Xöð?d °×›»*_7 @  Y÷ð?d ð×›å)1 @  Zøð?d 0Ø›ÑÖ‰, @  [ùð?d pØ›äàˆ¸ @  \úð?d °Ø›ÄŠF @  ]ûð?d ðØ›3g @  ^üð?d 0Ù›ÒN¿ @  _ýð?d pÙ›P$Ü @  `þð?d °Ù›pÑ" @  aÿð?d ðÙ›DÄ› @  bñ?d 0Ú›Ù€´Z @  cñ?d pڛ춵Π@  dñ?d °Ú›ÌC·0 @  eñ?d ðÚ› P @  fñ?d 0Û›Ú‚ù @  gñ?d pÛ›äÕ'ú @  hñ?d °Û›Ä % @  iñ?d ðÛ›š# @  jñ?d 0Ü›ƒmŒ  @  k ñ?d pÜ›¶[™ @  l ñ?d °Ü›–®g @  m ñ?d ðÜ›P½6F @  n ñ?d 0Ý›€õº® @  o ñ?d pÝ›™!M @  pñ?d °Ý›3l#³ @  qñ?d ðÝ›?Y @  rñ?d 0Þ›•{»˜ @  sñ?d pÞ› Mº  @  tñ?d °Þ›€¸¸ò @  uñ?d ðÞ›F«Ó @  vñ?d 0ß›–ã; @  wñ?d pß›¨.(8 @  xñ?d uÐà›/°ß›ˆÛ*Æ @  yñ?d ðߛ֨pÀ @  zñ?d Hà›Ï|.6 @  {ñ?d ˆà›X.:‚ @  |ñ?d Èà›Ú¿-\ @  }ñ?d á›NuK @  ~ñ?d Há›Ìä• @  ñ?d ˆá›¡»‡E @  €ñ?d Èá›#*› @  ñ?d ⛚&² @  ‚ ñ?d H⛊1l @  ƒ!ñ?d ˆâ›Ø%Ø @  „"ñ?d Èâ› I2 @  …#ñ?d ã›™ƒ @  †$ñ?d Hã›Ï @  ‡%ñ?d ˆã›‡»·ì @  ˆ&ñ?d Èã›* 2 @  ‰'ñ?d ä›Àöå @  Š(ñ?d Hä›Bg ; @  ‹)ñ?d ˆä›Õ5 @  Œ*ñ?d Èä›W¤ Q @  +ñ?d å›Ãn(F @  Ž,ñ?d Hå›Aÿ?˜ @  -ñ?d ˆå›p÷±[ @  .ñ?d Èå›òf¦… @  ‘/ñ?d æ›Öà)p @  ’0ñ?d Hæ›Tq>® @  “1ñ?d ˆæ›Ã#* @  ”2ñ?d Èæ›A²=Ä @  •3ñ?d ç›ÕxÓ @  –4ñ?d Hç›Wé  @  —5ñ?d ˆç›Ë@¸. @  ˜6ñ?d Èç›Iѯð @  ™7ñ?d 蛡¼n5 @  š8ñ?d Hè›#-yë @  ›9ñ?d ˆè›´m_ @  œ:ñ?d Èè›6îz @  ;ñ?d 離$X– @  ž<ñ?d Hé› µOH @  Ÿ=ñ?d ˆé›»æ; @   >ñ?d È雂*ñå @  ¡?ñ?d ê›ËKRÝ @  ¢@ñ?d Hê›IÚE @  £Añ?d ˆê›ÞˆQ· @  ¤Bñ?d Èê›\Fi @  ¥Cñ?d ë›ÈÓd~ @  ¦Dñ?d Hë›JBs  @  §Eñ?d ˆë›Öëà @  ¨Fñ?d Èë›TzÔ] @  ©Gñ?d 웑¦jŠ @  ªHñ?d Hì›7}T @  «Iñ?d ˆì›„eià @  ¬Jñ?d Èì›ô~> @  ­Kñ?d í›’>\) @  ®Lñ?d H훯K÷ @  ¯Mñ?d ˆí›!§Å4 @  °Nñ?d È훣6Òê @  ±Oñ?d °] @  ²Pñ?d Hî›!JÁ @  ³Qñ?d ˆî›’s^u @  ´Rñ?d Èî›âI« @  µSñ?d (k¼ @  ¶Tñ?d H|b @  ·Uñ?d ˆï›šÌA @  ¸Vñ?d Èï›ÛŸ @  ¹Wñ?d ð›zÍ*õ @  ºXñ?d Hð›ø\=+ @  »Yñ?d ˆð›o)Ÿ @  ¼Zñ?d Èð›íŸ>A @  ½[ñ?d ñ›yUV @  ¾\ñ?d Hñ›ûÄ ˆ @  ¿]ñ?d ˆñ›uͤi @  À^ñ?d Èñ›÷\³· @  Á_ñ?d ò›Nmž @  Â`ñ?d Hò›Ìü@ @  Ãañ?d ˆò›[®ô @  Äbñ?d Èò›Ù?* @  Åcñ?d ó›Mõ3= @  Ædñ?d Hó›Ïd$ã @  Çeñ?d ˆó›SÍ”À @  Èfñ?d Èó›Ñ\ƒ @  Égñ?d ô›€=É @  Êhñ?d Hô›–* @  Ëiñ?d ˆô›C>£ @  Ìjñ?d Èô›ƒÒ)} @  Íkñ?d õ› j @  Îlñ?d Hõ›•‰´ @  Ïmñ?d ˆõ›¤’w @  Ðnñ?d Èõ›&…© @  Ñoñ?d ö›– \ @  Òpñ?d Hö›€‚ @  Óqñ?d ˆö›U 6 @  Ôrñ?d Èö›•Äè @  Õsñ?d ÷›<ÿ @  Ötñ?d H÷›ƒŸ+! @  ×uñ?d ˆ÷›6› @  Øvñ?d È÷›§ŒÜ @  Ùwñ?d ø›uÊM @  Úxñ?d Hø›÷[ZÇ @  Ûyñ?d ˆø›` Ns @  Üzñ?d Èø›â˜Y­ @  Ý{ñ?d ù›vR{º @  Þ|ñ?d Hù›ôÃld @  ß}ñ?d ˆù›ÔÍÅ @  à~ñ?d Èù›V\ÒÉ @  áñ?d ú›û%c @  â€ñ?d€ Hú›ë6ÞS @  ñ?d ˆú›%‚Î @  ‚ñ?d Èú›´• @  ƒñ?d û›N7Lê @  „ñ?d Hû›̦[4 @  …ñ?d ˆû›ž½´m @  †ñ?d Èû›,£³ @  ‡ñ?d ü›BB @  ˆñ?d Hü›•ÓUÀ @   ‰ñ?d ˆü›ÇȺ™ @   Šñ?d Èü›EY­G @   ‹ñ?d ý›Út½ @   Œñ?d Hý›–Kcc @   ñ?d ˆý›ÄPŒ: @  Žñ?d Èý›FÁ›ä @  ñ?d þ›Tu‹ @  ñ?d Hþ›ƒÅbU @  ‘ñ?d ˆþ›ÑÞ  @  ’ñ?d Èþ›SOšÒ @  “ñ?d ÿ›ÌC( @  ”ñ?d Hÿ›€]Tö @  •ñ?d ˆÿ›ÒF»¯ @  uМ–ñ?d Èÿ›P׬q @  —ñ?d œw1¬M @  ˜ñ?d `œõ »“ @  ™ñ?d  œ§»TÊ @  šñ?d àœ%*C @  ›ñ?d œt©šî @  œñ?d `œö80 @  ñ?d  œ¤#bi @  žñ?d àœ&²u· @  Ÿñ?d œí–…´ @    ñ?d `œo’j @  !¡ñ?d  œ=}3 @  "¢ñ?d àœ¿jí @  #£ñ?d œî³ @  $¤ñ?d `œlŸ¤É @  %¥ñ?d  œ>„K @  &¦ñ?d àœ¼\N @  '§ñ?d œ·{½ã @  (¨ñ?d `œ5êª= @  )©ñ?d  œgñEd @  *ªñ?d àœå`Rº @  +«ñ?d œ´ã‹@ @  ,¬ñ?d `œ6rœž @  -­ñ?d  œdisÇ @  .®ñ?d àœæød @  /¯ñ?d œ¡mŠv @  0°ñ?d `œ#ü¨ @  1±ñ?d  œqçrñ @  2²ñ?d àœóve/ @  3³ñ?d œ¢õ¼Õ @  4´ñ?d `œ d«  @  5µñ?d  œrDR @  6¶ñ?d àœðîSŒ @  7·ñ?d œÖ1Í3 @  8¸ñ?d `œT Úí @  9¹ñ?d  œ»5´ @  :ºñ?d àœ„*"j @  ;»ñ?d œÕ©û @  <¼ñ?d ` œW8ìN @  =½ñ?d   œ# @  >¾ñ?d à œ‡²É @  ?¿ñ?d œÁ÷I @  @Àñ?d ` œPà— @  AÁñ?d   œÂKÎ @  BÂñ?d à œ@Ú @  CÃñ?d œYÁê @  DÄñ?d ` œ“ÈÖ4 @  EÅñ?d   œÁÓ9m @  FÆñ?d à œCB.³ @  GÇñ?d œH,Ï @  HÈñ?d ` œʽØÀ @  IÉñ?d   œ˜¦7™ @  JÊñ?d à œ7 G @  KËñ?d œK´ù½ @  LÌñ?d ` œÉ%îc @  MÍñ?d   œ›>: @  NÎñ?d à œ¯ä @  OÏñ?d œ^:ø‹ @  PÐñ?d `œÜ«ïU @  QÑñ?d  œް  @  RÒñ?d àœ !Ò @  SÓñ?d œ]¢Î( @  TÔñ?d `œß3Ùö @  UÕñ?d  œ(6¯ @  VÖñ?d àœ¹!q @  W×ñ?d œ£Ga @  XØñ?d `œ!Ö˜¿ @  YÙñ?d  œsÍwæ @  ZÚñ?d àœñ\`8 @  [Ûñ?d œ ß¹Â @  \Üñ?d `œ"N® @  ]Ýñ?d  œpUAE @  ^Þñ?d àœòÄV› @  _ßñ?d œ9ঘ @  `àñ?d `œ»q±F @  aáñ?d  œéj^ @  bâñ?d àœkûIÁ @  cãñ?d œ:x; @  däñ?d `œ¸é‡å @  eåñ?d  œêòh¼ @  fæñ?d àœhcb @  gçñ?d œc žÏ @  hèñ?d `œᜉ @  iéñ?d  œ³‡fH @  jêñ?d àœ1q– @  këñ?d œ`•¨l @  lìñ?d `œâ¿² @  míñ?d  œ°Pë @  nîñ?d àœ2ŽG5 @  oïñ?d œu©Z @  pðñ?d `œ÷о„ @  qññ?d  œ¥‘QÝ @  ròñ?d àœ'F @  sóñ?d œvƒŸù @  tôñ?d `œôˆ' @  uõñ?d  œ¦ g~ @  vöñ?d àœ$˜p  @  w÷ñ?d œGî @  xøñ?d `œ€ÖùÁ @  yùñ?d  œÒ͘ @  zúñ?d àœP\F @  {ûñ?d œߨ¼ @  |üñ?d `œƒNÏb @  }ýñ?d  œÑU ; @  ~þñ?d àœSÄ7å @  ÿñ?d œõbÐï @  €ò?d `œwóÇ1 @  ò?d  œ%è(h @  ‚ò?d àœ§y?¶ @  ƒò?d œöúæL @  „ò?d `œtkñ’ @  …ò?d  œ&pË @  †ò?d àœ¤á  @  ‡ò?d œ¯è¸ @  ˆò?d `œ-ÿf @  ‰ ò?d  œ? @  Š ò?d àœý”á @  ‹ ò?d œ¬Þ @  Œ ò?d `œ.†ÉÅ @   ò?d  œ|&œ @  Žò?d àœþ 1B @  ò?d œ¹™ß- @  ò?d `œ;Èó @  ‘ò?d  œi'ª @  ’ò?d àœë‚0t @  “ò?d œºéŽ @  ”ò?d `œ8þP @  •ò?d  œj‹ uÐ œ @  –ò?d àœÑÝÚ @  — ò?d 8 œ²öÆ @  ˜ ò?d x œ0g @  ™ ò?d ¸ œb|îA @  š ò?d ø œàíùŸ @  › ò?d 8!œ±n e @  œ ò?d x!œ3ÿ7» @   ò?d ¸!œaäØâ @  ž ò?d ø!œãuÏ< @  Ÿ ò?d 8"œ(Q?? @     ò?d x"œªÀ(á @  ¡ !ò?d ¸"œøÛǸ @  ¢ "ò?d ø"œzJÐf @  £ #ò?d 8#œ+É œ @  ¤ $ò?d x#œ©XB @  ¥ %ò?d ¸#œûCñ @  ¦ &ò?d ø#œyÒæÅ @  § 'ò?d 8$œr¼h @  ¨ (ò?d x$œð-¶ @  © )ò?d ¸$œ¢6ÿï @  ª *ò?d ø$œ §è1 @  « +ò?d 8%œq$1Ë @  ¬ ,ò?d x%œóµ& @  ­ -ò?d ¸%œ¡®ÉL @  ® .ò?d ø%œ#?Þ’ @  ¯ /ò?d 8&œdª0ý @  ° 0ò?d x&œæ;'# @  ± 1ò?d ¸&œ´ Èz @  ² 2ò?d ø&œ6±ß¤ @  ³ 3ò?d 8'œg2^ @  ´ 4ò?d x'œå£€ @  µ 5ò?d ¸'œ·¸þÙ @  ¶ 6ò?d ø'œ5)é @  · 7ò?d 8(œöw¸ @  ¸ 8ò?d x(œ‘g`f @  ¹ 9ò?d ¸(œÃ|? @  º :ò?d ø(œAí˜á @  » ;ò?d 8)œnA @  ¼ <ò?d x)œ’ÿVÅ @  ½ =ò?d ¸)œÀ乜 @  ¾ >ò?d ø)œBu®B @  ¿ ?ò?d 8*œ×M @  À @ò?d x*œU—Z @  Á Aò?d ¸*œŒµE @   Bò?d ø*œ…¢› @  à Cò?d 8+œÔž{a @  Ä Dò?d x+œVl¿ @  Å Eò?d ¸+œƒæ @  Æ Fò?d ø+œ†…”8 @  Ç Gò?d 8,œëu• @  È Hò?d x,œzbK @  É Iò?d ¸,œ]a @  Ê Jò?d ø,œßðšÌ @  Ë Kò?d 8-œŽsC6 @  Ì Lò?d x-œ âTè @  Í Mò?d ¸-œ^ù»± @  Î Nò?d ø-œÜh¬o @  Ï Oò?d 8.œ›ýB @  Ð Pò?d x.œlUÞ @  Ñ Qò?d ¸.œKwº‡ @  Ò Rò?d ø.œÉæ­Y @  Ó Sò?d 8/œ˜et£ @  Ô Tò?d x/œôc} @  Õ Uò?d ¸/œHïŒ$ @  Ö Vò?d ø/œÊ~›ú @  × Wò?d 80œf€5ê @  Ø Xò?d x0œä"4 @  Ù Yò?d ¸0œ¶ Ím @  Ú Zò?d ø0œ4›Ú³ @  Û [ò?d 81œeI @  Ü \ò?d x1œç‰— @  Ý ]ò?d ¸1œµ’ûÎ @  Þ ^ò?d ø1œ7ì @  ß _ò?d 82œü' @  à `ò?d x2œ~¶ Í @  á aò?d ¸2œ,­ä” @  â bò?d€ ø2œÚÿïì @   cò?d 83œj=~? @   dò?d x3œè¬iá @   eò?d ¸3œþ}U @   fò?d ø3œýoj‹ @   gò?d 84œ8³Ô\ @   hò?d x4œº" @   iò?d ¸4œ&‹s¡ @   jò?d ø4œ¤d @   kò?d 85œ0ÐFh @   lò?d x5œ²AQ¶ @   mò?d ¸5œ%E @   nò?d ø5œ§‚RÜ @   oò?d 86œƒÝ) @   pò?d x6œ•Ê÷ @   qò?d ¸6œ0D4 @   rò?d ø6œ² Sê @   sò?d 87œ&Æqý @   tò?d x7œ¤Wf# @   uò?d ¸7œ3r— @   vò?d ø7œ±”eI @   wò?d 88œYù¤Œ @   xò?d x8œÛh³R @   yò?d ¸8œGÁq @   zò?d ø8œÅP¯ @   {ò?d 89œQš6¸ @   |ò?d x9œÓ !f @   }ò?d ¸9œDY5Ò @   ~ò?d ø9œÆÈ"  @   ò?d 8:œ’oÕ¦ @   €ò?d x:œþÂx @   ò?d ¸:œ0ðk  @   ‚ò?d ø:œ²a|Õ @  ! ƒò?d 8;œ&«^ @  " „ò?d x;œ¤:I @  # …ò?d ¸;œ3h]¨ @  $ †ò?d ø;œ±ùJv @  % ‡ò?d 8<œt%ô¡ @  & ˆò?d x<œö´ã @  ' ‰ò?d ¸<œjS\ @  ( Šò?d ø<œèŒD‚ @  ) ‹ò?d 8=œ|Ff• @  * Œò?d x=œþ×qK @  + ò?d ¸=œi…eÿ @  , Žò?d ø=œër! @  - ò?d 8>œÏ’ýÔ @  . ò?d x>œMê  @  / ‘ò?d ¸>œ| dÉ @  0 ’ò?d ø>œþšs @  1 “ò?d 8?œjPQ @  2 ”ò?d x?œèÁFÞ @  3 •ò?duÐ@œ7 ¸?œ“Rj @  4 –ò?d ø?œýE´ @  5 —ò?d P@œâ<²P @  6 ˜ò?d @œÂɰ® @  7 ™ò?d Ð@œü­ @  8 šò?d Aœ,L™E @  9 ›ò?d PAœê_ d @  : œò?d Aœʪ"š @  ; ò?d ÐAœÿœ# @  < žò?d Bœb؃Ï @  = Ÿò?d PBœÄ<‚ù @  >  ò?d BœäÉ€ @  ? ¡ò?d ÐBœȤ:Æ @  @ ¢ò?d Cœì¶. @  A £ò?d PCœÞÿ @  B ¤ò?d Cœþ ñ @  C ¥ò?d ÐCœË< e @  D ¦ò?d DœÒrÿj @  E §ò?d PDœŒq¥l @  F ¨ò?d Dœ¬„§’ @  G ©ò?d ÐDœ’I‘ @  H ªò?d EœBŽy @  I «ò?d PEœ„7X @  J ¬ò?d Eœ¤ç5¦ @  K ­ò?d ÐEœ‘Ñ42 @  L ®ò?d Fœ •”ó @  M ¯ò?d PFœ7Ƭ @  N °ò?d Fœ3®ç @  O ±ò?d ÐFœ„_5 @  P ²ò?d GœT¹ì @  Q ³ò?d PGœ’Í @  R ´ò?d Gœ²ñ3 @  S µò?d ÐGœ‡Ç§ @  T ¶ò?d Hœ³8º @  U ·ò?d PHœí;Õ¼ @  V ¸ò?d HœÍÎ×B @  W ¹ò?d ÐHœórA @  X ºò?d Iœ#Kþ© @  Y »ò?d PIœåXGˆ @  Z ¼ò?d IœÅ­Ev @  [ ½ò?d ÐIœð›Dâ @  \ ¾ò?d Jœmßä# @  ] ¿ò?d PJœ;kð @  ^ Àò?d Jœžòú @  _ Áò?d ÐJœ™ôN© @  ` Âò?d KœI¼ÂA @  a Ãò?d PKœ¯{` @  b Äò?d Kœ¯Zyž @  c Åò?d ÐKœšlx  @  d Æò?d Lœƒ"‹ @  e Çò?d PLœÝ!Ñ @  f Èò?d LœýÔÓý @  g Éò?d ÐLœÃvþ @  h Êò?d MœQú @  i Ëò?d PMœÕBC7 @  j Ìò?d Mœõ·AÉ @  k Íò?d ÐMœÀ@] @  l Îò?d Nœ]Åàœ @  m Ïò?d PNœf–Øv @  n Ðò?d NœFcÚˆ @  o Ñò?d ÐNœÕAk @  p Òò?d OœG̓ @  q Óò?d POœÃTt¢ @  r Ôò?d Oœã¡v\ @  s Õò?d ÐOœÖ—wÈ @  t Öò?d PœhIËz @  u ×ò?d PPœ6J‘| @  v Øò?d Pœ¿“‚ @  w Ùò?d ÐPœ(r6 @  x Úò?d Qœø:ºi @  y Ûò?d PQœ>)H @  z Üò?d QœÜ¶ @  { Ýò?d ÐQœ+ê" @  | Þò?d Rœ¶® ã @  } ßò?d PRœJ¡Õ @  ~ àò?d Rœ0¿£+ @   áò?d ÐRœÿ„)Û @  € âò?d Sœ/Ì¥3 @   ãò?d PSœéß @  ‚ äò?d SœÉ*ì @  ƒ åò?d ÐSœüx @  „ æò?d TœåRìw @  … çò?d PTœ»Q¶q @  † èò?d Tœ›¤´ @  ‡ éò?d ÐTœ¥iŒ @  ˆ êò?d Uœu!d @  ‰ ëò?d PUœ³2$E @  Š ìò?d Uœ“Ç&» @  ‹ íò?d ÐUœ¦ñ'/ @  Œ îò?d Vœ;µ‡î @   ïò?d PVœæ¿ @  Ž ðò?d Vœ ½ú @   ñò?d ÐVœ³& @   òò?d Wœc7ªñ @  ‘ óò?d PWœ¥$Ð @  ’ ôò?d Wœ…Ñ. @  “ õò?d ÐWœ°çº @  ” öò?d Xœ„œ§ @  • ÷ò?d PXœÚÆ¡ @  – øò?d XœúîÄ_ @  — ùò?d ÐXœÄ#a\ @  ˜ úò?d Yœkí´ @  ™ ûò?d PYœÒxT• @  š üò?d YœòVk @  › ýò?d ÐYœÇ»Wÿ @  œ þò?d ZœZÿ÷> @   ÿò?d PZœnê⇠@  ž ó?d ZœNày @  Ÿ ó?d ÐZœÌu\* @    ó?d [œ=Р@  ¡ ó?d P[œÚ.iã @  ¢ ó?d [œúÛk @  £ ó?d Ð[œÏíj‰ @  ¤ ó?d \œÖ£™† @  ¥ ó?d P\œˆ Ã€ @  ¦ ó?d \œ¨UÁ~ @  §  ó?d Ð\œ–˜d} @  ¨  ó?d ]œFÐè• @  ©  ó?d P]œ€ÃQ´ @  ª  ó?d ]œ 6SJ @  «  ó?d Ð]œ•RÞ @  ¬ ó?d ^œDò @  ­ ó?d P^œ3Êõ @  ® ó?d ^œâÈ  @  ¯ ó?d Ð^œ€ŽSè @  ° ó?d _œPÆß @  ± ó?d P_œ–Õf! @  ² ó?d _œ¶ dß @  uÐ`œ³ ó?d Ð_œƒeK @  ´ ó?d (`œ=îÐÓ @  µ ó?d h`œcíŠÕ @  ¶ ó?d ¨`œCˆ+ @  · ó?d è`œ}Õ-( @  ¸ ó?d (aœ­¡À @  ¹ ó?d haœkŽá @  º ó?d ¨aœK{ @  » ó?d èaœ~M‹ @  ¼ ó?d (bœã »J @  ½ ó?d hbœEíº| @  ¾  ó?d ¨bœe¸‚ @  ¿ !ó?d èbœIuC @  À "ó?d (cœ™=Ž« @  Á #ó?d hcœ_.7Š @   $ó?d ¨cœÛ5t @  à %ó?d ècœJí4à @  Ä &ó?d (dœS£Çï @  Å 'ó?d hdœ  é @  Æ (ó?d ¨dœ-UŸ @  Ç )ó?d èdœ˜: @  È *ó?d (eœÃжü @  É +ó?d heœÃÝ @  Ê ,ó?d ¨eœ%6 # @  Ë -ó?d èeœ · @  Ì .ó?d (fœD¬v @  Í /ó?d hfœ¶”œ @  Î 0ó?d ¨fœ–â–b @  Ï 1ó?d èfœŽ  @  Ð 2ó?d (gœÕÆi @  Ñ 3ó?d hgœÕ8H @  Ò 4ó?d ¨gœ3 :¶ @  Ó 5ó?d ègœ;" @  Ô 6ó?d (hœ2é·? @  Õ 7ó?d hhœlêí9 @  Ö 8ó?d ¨hœLïÇ @  × 9ó?d èhœrÒJÄ @  Ø :ó?d (iœ¢šÆ, @  Ù ;ó?d hiœd‰  @  Ú <ó?d ¨iœD|}ó @  Û =ó?d èiœqJ|g @  Ü >ó?d (jœìܦ @  Ý ?ó?d hjœººÈ @  Þ @ó?d ¨jœšOÊ @  ß Aó?d èjœ%v, @  à Bó?d (kœÈmúÄ @  á Có?d hkœ~Cå @  â Dó?d€ ¨kœï̶ @   Eó?d èkœ;»ÿ¦ @   Fó?d (lœ"õ © @   Gó?d hlœ¹¿­B @   Hó?d ¨lœ™J¯¼ @   Ió?d èlœi5UÅ @   Jó?d (mœ¹}Ù- @   Kó?d hmœ±Ü?v @   Ló?d ¨mœ‘)=ˆ @   Mó?d èmœaVÇñ @   Nó?d (nœüg0 @   Oó?d hnœ¤7 @   Pó?d ¨nœ"ý¦É @   Qó?d ènœÒ‚\° @   Ró?d (oœÊÐX @   Só?d hoœ§Êã @   Tó?d ¨oœ‡?  @   Uó?d èoœw@ðd @   Vó?d (pœÉžLÖ @   Wó?d hpœRÔí= @   Xó?d ¨pœr!ïà @   Yó?d èpœ‚^º @   Zó?d (qœR™R @   [ó?d hqœZ·  @   \ó?d ¨qœzB}÷ @   ]ó?d èqœŠ=‡Ž @   ^ó?d (rœy'O @   _ó?d hrœtÔÝ” @   `ó?d ¨rœT!ßj @   aó?d èrœ¤^% @   bó?d (sœt©û @   có?d hsœÀVð @   dó?d ¨sœàåT @  ! eó?d èsœš®w @  " fó?d (tœ Ô]x @  # gó?d htœ’žü“ @  $ hó?d ¨tœ²kþm @  % ió?d ètœB @  & jó?d (uœ’\ˆü @  ' kó?d huœšýn§ @  ( ló?d ¨uœºlY @  ) mó?d èuœJw–  @  * nó?d (vœ×36á @  + oó?d hvœ))õæ @  , pó?d ¨vœ Ü÷ @  - qó?d èvœù£ a @  . ró?d (wœ)ë‰ @  / só?d hwœŒëY2 @  0 tó?d ¨wœ¬[Ì @  1 uó?d èwœ\a¡µ @  2 vó?d (xœhž-¨ @  3 wó?d hxœóÔŒC @  4 xó?d ¨xœÓ!޽ @  5 yó?d èxœ#^tÄ @  6 zó?d (yœóø, @  7 {ó?d hyœû·w @  8 |ó?d ¨yœÛB‰ @  9 }ó?d èyœ+=æð @  : ~ó?d (zœ¶yF1 @  ; ó?d hzœ8Býi @  < €ó?d ¨zœ·ÿ— @  = ó?d èzœèÈî @  > ‚ó?d ({œ8€‰ @  ? ƒó?d h{œ"pŸ @  @ „ó?d ¨{œtra @  A …ó?d è{œò ˆ @  B †ó?d (|œëE{ @  C ‡ó?d h|œpÚü @  D ˆó?d ¨|œPúØ @  E ‰ó?d è|œ …"{ @  F Šó?d (}œpÍ®“ @  G ‹ó?d h}œxlHÈ @  H Œó?d ¨}œX™J6 @  I ó?d è}œ¨æ°O @  J Žó?d (~œ5¢Ž @  K ó?d h~œ˸Ӊ @  L ó?d ¨~œëMÑw @  M ‘ó?d è~œ2+ @  N ’ó?d (œËz§æ @  O “ó?d hœnz] @  P ”ó?d ¨œuЀœ'N}£ @  Q •ó?d 蜇7[ @  R–ó?d @€œ鉹{ @  S—ó?d €€œЧ ° @  T˜ó?d À€œR6n @  U™ó?d œð{! @  Všó?d @œrlÿ @  W›ó?d €œØÄŸ„ @  Xœó?d ÀœZUˆZ @  Yó?d ‚œµÿÅ< @  Zžó?d @‚œ7nÒâ @  [Ÿó?d €‚œö§= @  \ ó?d À‚œt6*Ç @  ]¡ó?d ƒœÖKˆ @  ^¢ó?d @ƒœT\V @  _£ó?d €ƒœBc¶} @  `¤ó?d ÀƒœÀò¡£ @  a¥ó?d „œ«R¿  @  b¦ó?d @„œ)èÕ @  c§ó?d €„œí @  d¨ó?d À„œ’| À @  e©ó?d …œ0Új @  fªó?d @…œ²K}Q @  g«ó?d €…œŽŽ* @  h¬ó?d À…œš™ô @  i­ó?d †œuµÔ’ @  j®ó?d @†œ÷$ÃL @  k¯ó?d €†œ«Zk @  l°ó?d À†œ)˵ @  m±ó?d ‡œ‹mcú @  n²ó?d @‡œ üt$ @  o³ó?d €‡œ˜¹¿ @  p´ó?d À‡œŒ ®a @  qµó?d ˆœÊÏÛ @  r¶ó?d @ˆœH‰Ø @  s·ó?d €ˆœq§lÎ @  t¸ó?d Àˆœó6{ @  u¹ó?d ‰œQ_ @  vºó?d @‰œÓ  @  w»ó?d €‰œyÄþú @  x¼ó?d À‰œûUé$ @  y½ó?d Šœÿ¤B @  z¾ó?d @Šœ–n³œ @  {¿ó?d €Šœ§÷Iv @  |Àó?d ÀŠœ%f^¨ @  }Áó?d ‹œ‡À?ç @  ~Âó?d @‹œQ(9 @  Ãó?d €‹œ^bô± @  €Äó?d À‹œÜóão @  Åó?d Œœ·SýÇ @  ‚Æó?d @Œœ5Âê @  ƒÇó?d €Œœ ì^Ò @  „Èó?d ÀŒœŽ}I  @  …Éó?d œ,Û(C @  †Êó?d @œ®J? @  ‡Ëó?d €œÌæ @  ˆÌó?d Àœ†Û8 @  ‰Íó?d Žœi´–^ @  ŠÎó?d @Žœë%€ @  ‹Ïó?d €Žœ·[W§ @  ŒÐó?d ÀŽœ5Ê@y @  Ñó?d œ—l!6 @  ŽÒó?d @œý6è @  Óó?d €œ™ûs @  Ôó?d Àœì­ @  ‘Õó?d œ\8½¸ @  ’Öó?d @œÞ©ªf @  “×ó?d €œç‡­ @  ”Øó?d Àœe s @  •Ùó?d ‘œǰh< @  –Úó?d @‘œE!â @  —Ûó?d €‘œï䌙 @  ˜Üó?d À‘œmu›G @  ™Ýó?d ’œ‚ßÖ! @  šÞó?d @’œNÁÿ @  ›ßó?d €’œÁ‡. @  œàó?d À’œC9Ú @  áó?d “œá°X• @  žâó?d @“œc!OK @  Ÿãó?d €“œuC¥` @   äó?d À“œ÷Ò²¾ @  ¡åó?d ”œœr¬ @  ¢æó?d @”œã»È @  £çó?d €”œ'Í @  ¤èó?d À”œ¥\Ý @  ¥éó?d •œúy’ @  ¦êó?d @•œ…knL @  §ëó?d €•œ/®7 @  ¨ìó?d À•œ­?Šé @  ©íó?d –œB•Ç @  ªîó?d @–œÀÐQ @  «ïó?d €–œœzv @  ¬ðó?d À–œë¨ @  ­ñó?d —œ¼Mpç @  ®òó?d @—œ>Üg9 @  ¯óó?d €—œ9¸ª¢ @  °ôó?d À—œ»)½| @  ±õó?d ˜œý8ÜÆ @  ²öó?d @˜œ©Ë @  ³÷ó?d €˜œF‡Ó @  ´øó?d À˜œÄh  @  µùó?d ™œf° B @  ¶úó?d @™œä!œ @  ·ûó?d €™œNäíç @  ¸üó?d À™œÌuú9 @  ¹ýó?d šœ#ß·_ @  ºþó?d @šœ¡N  @  »ÿó?d €šœÎdc @  ¼ô?d ÀšœLîs½ @  ½ô?d ›œîHò @  ¾ô?d @›œlÙ, @  ¿ô?d €›œÔ¼é• @  Àô?d À›œV-þK @  Áô?d œœ=àã @  Âô?d @œœ¿÷= @  Ãô?d €œœ†2Cö @  Äô?d Àœœ£T( @  Å ô?d œ¦5g @  Æ ô?d @œ$”"¹ @  Ç ô?d €œŽQÑ @  È ô?d Àœ ÀÆ @  É ô?d žœãj‹z @  Êô?d @žœaûœ¤ @  Ëô?d €žœ=…Jƒ @  Ìô?d Àžœ¿]] @  Íô?d Ÿœ²< @  Îô?d @ŸœŸ#+Ì @  Ïô?d €Ÿœ˜GæW @  ÐôuРœ?d ÀŸœÖñ‰ @  Ñô?d  œ3ÂH @  Òô?d X œ›¢Õ– @  Óô?d ˜ œ¢Œa] @  Ôô?d Ø œ vƒ @  Õô?d ¡œ‚»Ì @  Öô?d X¡œ* @  ×ô?d ˜¡œªïói @  Øô?d Ø¡œ(~ä· @  Ùô?d ¢œÇÔ©Ñ @  Úô?d X¢œEE¾ @  Ûô?d ˜¢œ„ŒQô @  Ü ô?d Ø¢œF* @  Ý!ô?d £œ¤»'e @  Þ"ô?d X£œ&*0» @  ß#ô?d ˜£œ0HÚ @  à$ô?d Ø£œ²ÙÍN @  á%ô?d ¤œÙyÓæ @  â&ô?d€ X¤œ/+Øž @  'ô?d ˜¤œ÷D$| @  (ô?d ؤœuÕ3¢ @  )ô?d ¥œ:© @  *ô?d X¥œ«¾Þ @  +ô?d ˜¥œôÜß @  ,ô?d Ø¥œvM @  -ô?d ¦œWU @  .ô?d X¦œÕÄà @   /ô?d ˜¦œLó-  @   0ô?d ئœÎb:× @   1ô?d §œ© u @   2ô?d X§œ+·« @   3ô?d ˜§œOkª @  4ô?d اœÍú t @  5ô?d ¨œèø T @  6ô?d X¨œjiŠ @  7ô?d ˜¨œ–T¬ @  8ô?d بœŸCr @  9ô?d ©œspÙÐ @  :ô?d X©œñáÎ @  ;ô?d ˜©œ•–b @  <ô?d Ø©œuÑ @  =ô?d ªœ6gÍ @  >ô?d Xªœ´Žp @  ?ô?d ˜ªœ@^q @  @ô?d تœÂÏfÊ @  Aô?d «œ¥ üh @  Bô?d X«œ'±ë¶ @  Cô?d ˜«œCÆG· @  Dô?d Ø«œÁWPi @  Eô?d ¬œØâë @   Fô?d X¬œZs5 @  !Gô?d ˜¬œ¦P @  "Hô?d جœ$…GÍ @  #Iô?d ­œCjÝo @  $Jô?d X­œÁûʱ @  %Kô?d ˜­œ¥Œf° @  &Lô?d Ø­œ'qn @  'Mô?d ®œcr @  (Nô?d X®œ„”t¬ @  )Oô?d ˜®œ£Yf @  *Pô?d Ø®œŸ2N¸ @  +Qô?d ¯œøÝÔ @  ,Rô?d X¯œzLÃÄ @  -Sô?d ˜¯œ;oÅ @  .Tô?d دœœªx @  /Uô?d °œ3‰H” @  0Vô?d X°œ±_J @  1Wô?d ˜°œMl @  2Xô?d ذœÏî² @  3Yô?d ±œ¨ @  4Zô?d X±œ*ŠÎ @  5[ô?d ˜±œNç&Ï @  6\ô?d رœÌv1 @  7]ô?d ²œín#  @  8^ô?d X²œoÿ4Ó @  9_ô?d ˜²œk Å @  :`ô?d زœéî7 @  ;aô?d ³œŽ­¹ @  <bô?d X³œ ºg @  =cô?d ˜³œhçf @  >dô?d سœêv¸ @  ?eô?d ´œ]Ä_¨ @  @fô?d X´œßUHv @  Agô?d ˜´œ#2P @  Bhô?d Ø´œ¡£Ž @  Ciô?d µœÆLŠ, @  Djô?d XµœDÝò @  Ekô?d ˜µœ ª1ó @  Flô?d صœ¢;&- @  Gmô?d ¶œƒ#41 @  Hnô?d X¶œ²#ï @  Ioô?d ˜¶œ˜…% @  Jpô?d ضœû @  Kqô?d ·œ}ûƒY @  Lrô?d X·œÿj”‡ @  Msô?d ˜·œ›8† @  Ntô?d Ø·œŒ/X @  Ouô?d ¸œ<Ž/x @  Pvô?d X¸œ¾8¦ @  Qwô?d ˜¸œBxw€ @  Rxô?d ظœÀé`^ @  Syô?d ¹œ§úü @  Tzô?d X¹œ%—í" @  U{ô?d ˜¹œAàA# @  V|ô?d عœÃqVý @  W}ô?d ºœâiDá @  X~ô?d Xºœ`øS? @  Yô?d ˜ºœ‰îª @  Z€ô?d غœ t @  [ô?d »œl‹Ö @  \‚ô?d X»œîœ @  ]ƒô?d ˜»œŠv0  @  ^„ô?d Ø»œç'× @  _…ô?d ¼œRU @  `†ô?d X¼œ“Ãh‹ @  a‡ô?d ˜¼œo¤'­ @  bˆô?d ؼœí50s @  c‰ô?d ½œŠÚªÑ @  dŠô?d X½œK½ @  e‹ô?d ˜½œl< @  fŒô?d ؽœî­Ð @  gô?d ¾œϵÌ @  hŽô?d X¾œM$ @  iô?d ˜¾œÔ.Ø @  jô?d ؾœV‚9 @  k‘ô?d ¿œ1m£¤ @  l’ô?d X¿œ³ü´z @  m“ô?d ˜¿œ׋{ @uÐÀœ  n”ô?d Ø¿œlÝÓp @  o •ô?d 0ÀœÐ @  p –ô?d pÀœ›AÁ @  q —ô?d °Àœg&Vç @  r ˜ô?d ðÀœå·A9 @  s ™ô?d 0Áœ‚XÛ› @  t šô?d pÁœÉÌE @  u ›ô?d °Áœd¾`D @  v œô?d ðÁœæ/wš @  w ô?d 0œÇ7e† @  x žô?d pœE¦rX @  y Ÿô?d °ÂœA&fN @  z  ô?d ðœ÷q @  { ¡ô?d 0ܤXë2 @  | ¢ô?d pÜ&Éüì @  } £ô?d °ÃœB¾Pí @  ~ ¤ô?d ðÜÀ/G3 @   ¥ô?d 0Äœ”Ë) @  € ¦ô?d pÄœZ>Ì @   §ô?d °Äœê=qê @  ‚ ¨ô?d ðÄœh¬f4 @  ƒ ©ô?d 0ÅœCü– @  „ ªô?d pÅœÒëH @  … «ô?d °Åœé¥GI @  † ¬ô?d ðÅœk4P— @  ‡ ­ô?d 0ÆœJ,B‹ @  ˆ ®ô?d pÆœȽUU @  ‰ ¯ô?d °ÆœQŠxŸ @  Š °ô?d ðÆœÓoA @  ‹ ±ô?d 0Çœ´ôõã @  Œ ²ô?d pÇœ6eâ= @   ³ô?d °ÇœRN< @  Ž ´ô?d ðÇœЃYâ @   µô?d 0ÈœõY @   ¶ô?d pÈœwN @  ‘ ·ô?d °Èœ‹w: @  ’ ¸ô?d ðÈœ æä @  “ ¹ô?d 0Éœn ŒF @  ” ºô?d pÉœ옛˜ @  • »ô?d °Éœˆï7™ @  – ¼ô?d ðÉœ ~ G @  — ½ô?d 0Êœ+f2[ @  ˜ ¾ô?d pÊœ©÷%… @  ™ ¿ô?d °Êœ]'$‚ @  š Àô?d ðʜ߶3\ @  › Áô?d 0Ëœ¸Y©þ @  œ Âô?d pËœ:Ⱦ  @   Ãô?d °Ëœ^¿! @  ž Äô?d ðËœÜ.ÿ @  Ÿ Åô?d 0̜ś]} @    Æô?d pÌœG J£ @  ¡ Çô?d °Ìœ»m… @  ¢ Èô?d ðÌœ9ü[ @  £ Éô?d 0Íœ^ˆù @  ¤ Êô?d p͜܂Ÿ' @  ¥ Ëô?d °Íœ¸õ3& @  ¦ Ìô?d ðÍœ:d$ø @  § Íô?d 0Μ|6ä @  ¨ Îô?d pΜ™í!: @  © Ïô?d °ÎœÚ ð @  ª Ðô?d ðΜ‚K. @  « Ñô?d 0Ïœ夌 @  ¬ Òô?d pÏœg5–R @  ­ Óô?d °ÏœB:S @  ® Ôô?d ðÏœÓ- @  ¯ Õô?d 0М.ð @  ° Öô?d pМ¬a Ü @  ± ×ô?d °ÐœPEú @  ² Øô?d ðМÒ—R$ @  ³ Ùô?d 0ÑœµxȆ @  ´ Úô?d pÑœ7éßX @  µ Ûô?d °ÑœSžsY @  ¶ Üô?d ðÑœÑd‡ @  · Ýô?d 0Òœðv› @  ¸ Þô?d pÒœr†aE @  ¹ ßô?d °ÒœvuS @  º àô?d ðÒœô—b @  » áô?d 0Óœ“xø/ @  ¼ âô?d pÓœéïñ @  ½ ãô?d °ÓœužCð @  ¾ äô?d ðÓœ÷T. @  ¿ åô?d 0Ôœ@½ > @  À æô?d pÔœÂ,à @  Á çô?d °Ôœ>KRÆ @   èô?d ðÔœ¼ÚE @  à éô?d 0ÕœÛ5ߺ @  Ä êô?d pÕœY¤Èd @  Å ëô?d °Õœ=Óde @  Æ ìô?d ðÕœ¿Bs» @  Ç íô?d 0ÖœžZa§ @  È îô?d pÖœËvy @  É ïô?d °Öœ…ü[³ @  Ê ðô?d ðÖœmLm @  Ë ñô?d 0ל`‚ÖÏ @  Ì òô?d pלâÁ @  Í óô?d °×œ†dm @  Î ôô?d ðלõzÎ @  Ï õô?d 0Øœ!÷zî @  Ð öô?d pØœ£fm0 @  Ñ ÷ô?d °Øœ_" @  Ò øô?d ðØœÝ5È @  Ó ùô?d 0Ùœº¯j @  Ô úô?d pÙœ8 @  Õ ûô?d °Ùœ\™µ @  Ö üô?d ðÙœÞk @  × ýô?d 0Úœÿw @  Ø þô?d pÚœ}© @  Ù ÿô?d °Úœëð0 @  Ú õ?d ðÚœiaî @  Û õ?d 0ÛœŽ‹L @  Ü õ?d pÛœŒœ’ @  Ý õ?d °Ûœèh0“ @  Þ õ?d ðÛœjù'M @  ß õ?d 0ÜœsLÏ @  à õ?d pÜœñÝh @  á õ?d °Üœ º'7 @  â õ?d€ ðÜœ }˜P @    õ?d 0ÝœÓJÛ @    õ?d pÝœ B] @    õ?d °Ýœ¬| é @    õ?d ðÝœ.í7 @    õ?d 0ÞœÁGPQ @   õ?d pÞœCÖG @   õ?d °ÞœS5? @   õ?d ðÞœ–Â"á @   õ?d 0ßœ4dC® @   õ?d pßœ¶õTp @   õ?d uÐàœ/°ßœËœ @   õ?d ðßœ¬È— @   õ?d HàœÇ×{Æ @  õ?d ˆàœç"y8 @  õ?d ÈàœÚ2B¤ @  õ?d ᜠzÎL @  õ?d Háœú45 @  õ?d ˆáœÚð6Ë @  õ?d ÈáœÙªt @  õ?d âœDîÔÆ @  õ?d H✴‘.¿ @  õ?d ˆâœ”d,A @  õ?d Èâœü2r  @   õ?d ãœ,zþå @  !õ?d HãœÜœ @  "õ?d ˆãœüðb @  #õ?d ÈãœÿªD® @  $õ?d äœæä·¡ @  %õ?d H䜛MØ @  &õ?d ˆäœ6nO& @  'õ?d ÈäœxS  @   (õ?d åœÊ0ßâ @  !)õ?d Håœ:O%› @  "*õ?d ˆåœº'e @  #+õ?d Èåœàe© @  $,õ?d 朄¤Åh @  %-õ?d HæœtÛ? @  &.õ?d ˆæœT.=ï @  '/õ?d Èæœ¡ÏZ @  (0õ?d çœq‡Ö— @  )1õ?d Hçœø,î @  *2õ?d ˆçœ¡ . @  +3õ?d È眢WlÜ @  ,4õ?d 蜖¨àÁ @  -5õ?d Hèœf׸ @  .6õ?d ˆèœF"F @  /7õ?d Èèœ{2#Ú @  08õ?d 霫z¯2 @  19õ?d Héœ[UK @  2:õ?d ˆéœ{ðWµ @  3;õ?d Èéœxªy @  4<õ?d êœå @  5=õ?d H꜑OÁ @  6>õ?d ˆêœ5dM? @  7?õ?d Èꜭbb @  8@õ?d ëœ}*ŠŠ @  9Aõ?d HëœUpó @  :Bõ?d ˆëœ­ r  @  ;Cõ?d È뜮ú0Á @  <Dõ?d 윷´ÃÎ @  =Eõ?d HìœGË9· @  >Fõ?d ˆìœg>;I @  ?Gõ?d Èìœå/!÷ @  @Hõ?d íœ5g­ @  AIõ?d HíœÅWf @  BJõ?d ˆíœåíU˜ @  CKõ?d Èíœæ·T @  DLõ?d îœ{ó·• @  EMõ?d HŒMì @  FNõ?d ˆîœ«yO @  GOõ?d Èîœ^˜(‚ @  HPõ?d Фj @  IQõ?d Hïœ~¯^ @  JRõ?d ˆïœ^Z\í @  KSõ?d Èïœ]! @  LTõ?d ðœãÞ¢“ @  MUõ?d Hðœ¡Xê @  NVõ?d ˆðœ3TZ @  OWõ?d ÈðœDaˆ @  PXõ?d ñœÞ í` @  QYõ?d Hñœ.s @  RZõ?d ˆñœ†ç @  S[õ?d Èñœ ÜW+ @  T\õ?d òœ˜÷ê @  U]õ?d Hòœ`ç “ @  V^õ?d ˆòœ@m @  W_õ?d Èòœ(DQ! @  X`õ?d óœø ÝÉ @  Yaõ?d Hóœs'° @  Zbõ?d ˆóœ(†%N @  [cõ?d Èóœ+Üg‚ @  \dõ?d ôœ2’” @  ]eõ?d HôœÂínô @  ^fõ?d ˆôœâl  @  _gõ?d ÈôœÎp& @  `hõ?d õœFüÎ @  aiõ?d Hõœî9· @  bjõ?d ˆõœÎÌI @  ckõ?d ÈõœÍ–F… @  dlõ?d öœPÒæD @  emõ?d Höœ ­= @  fnõ?d ˆöœ€Xà @  goõ?d Èöœu¹yS @  hpõ?d ÷œ¥ñõ» @  iqõ?d H÷œUŽÂ @  jrõ?d ˆ÷œu{ < @  ksõ?d È÷œv!Oð @  ltõ?d øœBÞÃí @  muõ?d Høœ²¡9” @  nvõ?d ˆøœ’T;j @  owõ?d Èøœ¯Dö @  pxõ?d ùœ Œ @  qyõ?d Hùœsvg @  rzõ?d ˆùœ¯†t™ @  s{õ?d Èùœ¬Ü6U @  t|õ?d úœ1˜–” @  u}õ?d HúœÁçlí @  v~õ?d ˆúœán @  wõ?d ÈúœdÒqÜ @  x€õ?d ûœ´šý4 @  yõ?d HûœDåM @  z‚õ?d ˆûœd³ @  {ƒõ?d ÈûœgJG @  |„õ?d üœ~´p @  }…õ?d HüœŽ{N  @  ~†õ?d ˆüœ®ŽL÷ @  ‡õ?d ÈüœÏÉfx @  €ˆõ?d ýœê @  ‰õ?d Hýœïþé @  ‚Šõ?d ˆýœÏ  @  ƒ‹õ?d ÈýœÌQPÛ @  „Œõ?d þœQð @  …õ?d Hþœ¡j c @  †Žõ?d ˆþœŸ @  ‡õ?d Èþœt~o  @  ˆõ?d ÿœ¤6ãå @  ‰‘õ?d HÿœTIœ @  Š’õ?d ˆÿœt¼b @  ‹uГõ?d ÈÿœwæY® @  Œ”õ?d 8Rq_ @  •õ?d `È-‹& @  Ž–õ?d  èØ‰Ø @  —õ?d àÕȲD @  ˜õ?d €>¬ @  ‘™õ?d `õÿÄÕ @  ’šõ?d  Õ Æ+ @  “›õ?d àÖP„ç @  ”œõ?d K$& @  •õ?d `»kÞ_ @  –žõ?d  ›žÜ¡ @  —Ÿõ?d àóÈ‚í @  ˜ õ?d #€ @  ™¡õ?d `Óÿô| @  š¢õ?d  ó ö‚ @  ›£õ?d àðP´N @  œ¤õ?d éGA @  ¥õ?d `a½8 @  ž¦õ?d  9”¿Æ @  Ÿ§õ?d à‚£ê @   ¨õ?d ÅÊ/ @  ¡©õ?d `5µÕ{ @  ¢ªõ?d  @×… @  £«õ?d à•I @  ¤¬õ?d ‹^5ˆ @  ¥­õ?d `{!Ïñ @  ¦®õ?d  [ÔÍ @  §¯õ?d à®5ªŸ @  ¨°õ?d ~}&w @  ©±õ?d `ŽÜ @  ª²õ?d  ®÷Þð @  «³õ?d à­­œ< @  ¬´õ?d ™R! @  ­µõ?d `i-êX @  ®¶õ?d  IØè¦ @  ¯·õ?d àtÈÓ: @  °¸õ?d ¤€_Ò @  ±¹õ?d ` Tÿ¥« @  ²ºõ?d   t §U @  ³»õ?d à wPå™ @  ´¼õ?d êEX @  µ½õ?d ` k¿! @  ¶¾õ?d   :ž½ß @  ·¿õ?d à ¢˜ö‚ @  ¸Àõ?d rÐzj @  ¹Áõ?d ` ‚¯€ @  ºÂõ?d   ¢Z‚í @  »Ãõ?d à ¡À! @  ¼Äõ?d ¸N3. @  ½Åõ?d ` H1ÉW @  ¾Æõ?d   hÄË© @  ¿Çõ?d à êÕÑ @  ÀÈõ?d :]ÿ @  ÁÉõ?d ` Ê⧆ @  ÂÊõ?d   ê¥x @  ÃËõ?d à éMç´ @  ÄÌõ?d t Gu @  ÅÍõ?d `„v½  @  ÆÎõ?d  ¤ƒ¿ò @  ÇÏõ?d àQbØb @  ÈÐõ?d *TŠ @  ÉÑõ?d `qU®ó @  ÊÒõ?d  Q ¬  @  ËÓõ?d àRúîÁ @  ÌÔõ?d ì$Rs @  ÍÕõ?d `[¨  @  ÎÖõ?d  <®ªô @  Ï×õ?d ྑh @  ÐØõ?d Ñö€ @  ÑÙõ?d `!‰çù @  ÒÚõ?d  |å @  ÓÛõ?d à&§Ë @  ÔÜõ?d Ÿb  @  ÕÝõ?d `oýs @  ÖÞõ?d  Oèÿ @  ×ßõ?d à'¾¡Á @  Øàõ?d ÷ö-) @  Ùáõ?d `‰×P @  Úâõ?d  '|Õ® @  Ûãõ?d à$&—b @  Üäõ?d =hdm @  Ýåõ?d `Íž @  Þæõ?d  íâœê @  ßçõ?d àÁô€Æ @  àèõ?d ¼ . @  áéõ?d `áÃöW @  âêõ?d€  µõè @  ëõ?d àWîâê @  ìõ?d ʪB+ @  íõ?d `ÿœC¿ @  îõ?d  ßiAA @  ïõ?d àä:y« @  ðõ?d 4rõC @  ñõ?d ` ¿P@ @  òõ?d  *JR¾ @   óõ?d àìYëŸ @   ôõ?d ئg‚ @   õõ?d `íf @   öõ?d  Íedè @   ÷õ?d à“f>î @  øõ?d C.² @  ùõ?d `ÐB)å @  úõ?d  ð·+ @  ûõ?d à6¤’: @  üõ?d «à2û @  ýõ?d `žÖ3o @  þõ?d  ¾#1‘ @  ÿõ?d à8  @  ö?d è\å @  ö?d `Ö‘8æ @  ö?d  öd: @  ö?d à0wƒ9 @  ö?d )9p6 @  ö?d `q¢ @  ö?d  <ús\ @  ö?d àbù)Z @  ö?d ²±¥² @   ö?d `0Ûá @    ö?d  . @  ! ö?d àÖ=¢> @  " ö?d Kyÿ @  # ö?d `~Ok @  $ö?d  ^º• @  %ö?d àeé9 @  &ö?d µ¡µ— @  'ö?d `‹l” @  (ö?d  «™juÐ  @  )ö?d àmŠ«K @  *ö?d 8 u- @  +ö?d x )·t¹ @  ,ö?d ¸  BvG @  -ö?d ø WA,A @  .ö?d 8!‡  © @  /ö?d x!e;J @  0ö?d ¸!49´ @  1ö?d ø!òƒ€• @  2ö?d 8"oÇ T @  3ö?d x"Zñ!À @  4ö?d ¸"z#> @  5ö?d ø"Üà" @  6 ö?d 8# ¨®à @  7!ö?d x#2e ã @  8"ö?d ¸#  @  9#ö?d ø#Ôƒ°< @  :$ö?d 8$ÍÍC3 @  ;%ö?d x$øûB§ @  <&ö?d ¸$Ø@Y @  ='ö?d ø$† _ @  >(ö?d 8%VE–· @  ?)ö?d x%z(,v @  @*ö?d ¸%ZÝ.ˆ @  A+ö?d ø%œÎ—© @  B,ö?d 8&Š7h @  C-ö?d x&4¼6ü @  D.ö?d ¸&I4 @  E/ö?d ø&/ è @  F0ö?d 8'ÿR€ @  G1ö?d x'ÁŸ% @  H2ö?d ¸'áj'ý @  I3ö?d ø''yžÜ @  J4ö?d 8(†Á @  K5ö?d x(&°U @  L6ö?d ¸(E« @  M7ö?d ø(XFK­ @  N8ö?d 8)ˆÇE @  O9ö?d x)b\¦ @  P:ö?d ¸);—^X @  Q;ö?d ø)ý„çy @  R<ö?d 8*`ÀG¸ @  S=ö?d x*UöF, @  T>ö?d ¸*uDÒ @  U?ö?d ø*#·Põ @  V@ö?d 8+óÿÜ @  WAö?d x+Í2y @  XBö?d ¸+íÇ{à @  YCö?d ø++ÔÂÁ @  ZDö?d 8,2š1Î @  [Eö?d x,¬0Z @  \Fö?d ¸,'Y2¤ @  ]Gö?d ø,yZh¢ @  ^Hö?d 8-©äJ @  _Iö?d x-+xX @  `Jö?d ¸- Zç @  aKö?d ø-ÍžãÆ @  bLö?d 8.PÚC @  cMö?d x.eìB“ @  dNö?d ¸.E@m @  eOö?d ø.~Jx‡ @  fPö?d 8/®ôo @  gQö?d x/ÏQl @  hRö?d ¸/°:S’ @  iSö?d ø/v)ê³ @  jTö?d 80È÷V @  kUö?d x0ýÁW• @  lVö?d ¸0Ý4Uk @  mWö?d ø0ƒ7m @  nXö?d 81Sƒ… @  oYö?d x1Àf @  pZö?d ¸1àæ˜ @  q[ö?d ø1&õ£¹ @  r\ö?d 82»±x @  s]ö?d x2އì @  t^ö?d ¸2®r @  u_ö?d ø2–$ @  v`ö?d 83ØÞÌ @  waö?d x3æ(Ï @  xbö?d ¸3Ææ*1 @  ycö?d ø3õ“ @  zdö?d 84»` @  {eö?d x4,a‹ @  |fö?d ¸4 xcu @  }gö?d ø4R{9s @  ~hö?d 85‚3µ› @  iö?d x5M?k @  €jö?d ¸5mý=• @  kö?d ø5«î„´ @  ‚lö?d 866ª$u @  ƒmö?d x6œ%á @  „nö?d ¸6#i' @  …oö?d ø6:õ @  †pö?d 87Èr“ @  ‡qö?d x7ö¿6 @  ˆrö?d ¸7ÖJ4à @  ‰sö?d ø7YÁ @  Štö?d 88$¦Ü @  ‹uö?d x8H @  Œvö?d ¸81e¶ @  wö?d ø8ofX° @  Žxö?d 89¿.ÔX @  yö?d x9,BO» @  zö?d ¸9 ·ME @  ‘{ö?d ø9ʤôd @  ’|ö?d 8:WàT¥ @  “}ö?d x:bÖU1 @  ”~ö?d ¸:B#WÏ @  •ö?d ø: Qz @  –€ö?d 8;Ù›’ @  —ö?d x;çÔ>‘ @  ˜‚ö?d ¸;Ç!z<ˆ @  £ö?d x>O  @  ¤Žö?d ¸>oÿâ @  ¥ö?d ø>T¬? @  ¦ö?d 8?„ä³à @  §‘ö?d x?º)ã @  ¨’ö?duÐ@7 ¸?šÜ @  ©“ö?d ø?\Ï­< @  ª”ö?d P@Ÿc @  «•ö?d @1´ @  ¬–ö?d Ð@Š j @  ­—ö?d A†zÕZ @  ®˜ö?d PAë„ @  ¯™ö?d A5ãLG @  °šö?d ÐA·r[™ @  ±›ö?d Bn´U§ @  ²œö?d PBì%By @  ³ö?d B{wVÍ @  ´žö?d ÐBùæA @  µŸö?d C ÛÛ @  ¶ ö?d PCJÌÍ @  ·¡ö?d Cã|î @  ¸¢ö?d ÐC‘rk0 @  ¹£ö?d D̾6À @  º¤ö?d PDN/! @  »¥ö?d DÙ}5ª @  ¼¦ö?d ÐD[ì"t @  ½§ö?d EW6ãD @  ¾¨ö?d PEÕ§ôš @  ¿©ö?d E[®[{ @  Àªö?d ÐEÙ?L¥ @  Á«ö?d FùB› @  Â¬ö?d PF‚hUE @  Ã­ö?d F:Añ @  Ä®ö?d ÐF—«V/ @  Å¯ö?d Gþ!õó @  Æ°ö?d PG|°â- @  Ç±ö?d GàR @  È²ö?d ÐGbˆEÐ @  É³ö?d Hõg2 @  Ê´ö?d PHdpì @  Ëµö?d H6dX @  Ì¶ö?d ÐH…§s† @  Í·ö?d I‰}²¶ @  Î¸ö?d PI ì¥h @  Ï¹ö?d I:ä+« @  Ðºö?d ÐI¸uÅX @  Ðö?d POȯ҆ @  Ñö?d Oš´=ß @  Òö?d ÐO%* @  Óö?d P,Ëg6 @  Ôö?d PP®Zpè @   Õö?d PüAŸ± @   Öö?d ÐP~Јo @   ×ö?d Q·C²² @   Øö?d PQ5Ò¥l @   Ùö?d QgÉJ5 @  Úö?d ÐQåX]ë @  Ûö?d RfJîš @   Üö?d PRäÛùD @   Ýö?d R¶À @   Þö?d ÐR4Qà @   ßö?d S%`. @   àö?d PS‡´wð @   áö?d SÕ¯˜© @   âö?d ÐSW>w @   ãö?d TÄ@ý @   äö?d PTFÑš# @   åö?d TÊuz @   æö?d ÐT–[b¤ @   çö?d U_ÈXy @   èö?d PUÝYO§ @   éö?d UB þ @   êö?d ÐU Ó·  @   ëö?d V¦ÿ4 @   ìö?d PV$‘èê @  ! íö?d Vvг @  " îö?d ÐVôm @  # ïö?d WXØH\ @  $ ðö?d PWÚI_‚ @  % ñö?d WˆR°Û @  & òö?d ÐW ç @  ' óö?d X´ Ú @  ( ôö?d PX6ÍC @  ) õö?d Xd†" @  * öö?d ÐXæ5Ä @  + ÷ö?d Y/„ @  , øö?d PY­Ç @  - ùö?d Yÿ÷ž @  . úö?d ÐY}Ÿà@ @  / ûö?d ZÇJä @  0 üö?d PZEÛ˜: @  1 ýö?d ZÀwc @  2 þö?d ÐZ•Q`½ @  3 ÿö?d [6Ôß @  4 ÷?d P[´E @  5 ÷?d [æ^íX @  6 ÷?d Ð[dÏú† @  7 ÷?d \÷±ø  @  8 ÷?d P\u ïÒ @  9 ÷?d \';‹ @  : ÷?d Ð\¥ªU @  ; ÷?d ]l9-ˆ @  < ÷?d P]î¨:V @  =  ÷?d ]¼³Õ @  >  ÷?d Ð]>"ÂÑ @  ?  ÷?d ^;öŒW @  @  ÷?d P^¹g›‰ @  A  ÷?d ^ë|tÐ @  B ÷?d Ð^iíc @  C ÷?d _Å.;? @  D ÷?d P_G¿,á @  E ÷?d _¤Ã¸ @  uÐ`F ÷?d Ð_®ò³ @  G÷?d (`š:L® @  H÷?d h`«[p @  I÷?d ¨`J°´) @  J÷?d è`È!£÷ @  K÷?d (a²™* @  L÷?d haƒ#Žô @  M÷?d ¨aÑ8a­ @  N÷?d èaS©vs @  O÷?d (bé|× @  P÷?d hbkí  @  Q÷?d ¨b9öáP @  R÷?d èb»göŽ @  S÷?d (cŠ—c @  T ÷?d hc‚€½ @  U!÷?d ¨cZ™oä @  V"÷?d ècØx: @  W#÷?d (dKvz° @  X$÷?d hdÉçmn @  Y%÷?d ¨d›ü‚7 @  Z&÷?d èdm•é @  ['÷?d (eÐþ¯4 @  \(÷?d heRo¸ê @  ])÷?d ¨etW³ @  ^*÷?d èe‚å@m @  _+÷?d (f)6y @  `,÷?d hf«§§ @  a-÷?d ¨fù¼ðþ @  b.÷?d èf{-ç  @  c/÷?d (g×î¿ @  d0÷?d hgU¨Ï @  e1÷?d ¨gdG– @  f2÷?d èg…õPH @  g3÷?d (h;:-Ð @  h4÷?d hh¹«: @  i5÷?d ¨hë°ÕW @  j6÷?d èhi!‰ @  k7÷?d (i ²øT @  l8÷?d hi"#ïŠ @  m9÷?d ¨ip8Ó @  n:÷?d èiò©  @  o;÷?d (jH|x© @  p<÷?d hjÊíow @  q=÷?d ¨j˜ö€. @  r>÷?d èjg—ð @  s?÷?d (kÛCã  @  t@÷?d hkYÒôÒ @  uA÷?d ¨k É‹ @  vB÷?d èk‰X U @  wC÷?d (l&ß @  xD÷?d hl˜· @  yE÷?d ¨lʬöX @  zF÷?d èlH=ᆠ@  {G÷?d (m®Û[ @  |H÷?d hm?Ì… @  }I÷?d ¨mQ$#Ü @  ~J÷?d èmÓµ4 @  K÷?d (n57Jµ @  €L÷?d hn·¦]k @  M÷?d ¨nå½²2 @  ‚N÷?d èng,¥ì @  ƒO÷?d (oËïýÝ @  „P÷?d hoI~ê @  …Q÷?d ¨oeZ @  †R÷?d èo™ô„ @  ‡S÷?d (p­_³ @  ˆT÷?d hp/‹Hm @  ‰U÷?d ¨p}§4 @  ŠV÷?d èpÿ°ê @  ‹W÷?d (q6’Š7 @  ŒX÷?d hq´é @  Y÷?d ¨qær° @  ŽZ÷?d èqd‰en @  [÷?d (rÞ\ Ê @  \÷?d hr\Í @  ‘]÷?d ¨rÖòM @  ’^÷?d èrŒGå“ @  “_÷?d (s½3„~ @  ”`÷?d hs?¢“  @  •a÷?d ¨sm¹|ù @  –b÷?d èsï(k' @  —c÷?d (t|Vi­ @  ˜d÷?d htþÇ~s @  ™e÷?d ¨t¬Ü‘* @  šf÷?d èt.M†ô @  ›g÷?d (uçÞ¼) @  œh÷?d hueO«÷ @  i÷?d ¨u7TD® @  žj÷?d èuµÅSp @  Ÿk÷?d (vd @   l÷?d hvœ‡ º @  ¡m÷?d ¨vΜãã @  ¢n÷?d èvL ô= @  £o÷?d (wàά  @  ¤p÷?d hwb_»Ò @  ¥q÷?d ¨w0DT‹ @  ¦r÷?d èw²ÕCU @  §s÷?d (x >Í @  ¨t÷?d hxŽ‹) @  ©u÷?d ¨xÜÆJ @  ªv÷?d èx^Ñ” @  «w÷?d (y—’ëI @  ¬x÷?d hyü— @  ­y÷?d ¨yGÎ @  ®z÷?d èyʼn @  ¯{÷?d (z\k´ @  °|÷?d hzýÍ|j @  ±}÷?d ¨z¯Ö“3 @  ²~÷?d èz-G„í @  ³÷?d ({ñ¥¤ƒ @  ´€÷?d h{s4³] @  µ÷?d ¨{!/\ @  ¶‚÷?d è{£¾KÚ @  ·ƒ÷?d (|0ÀIP @  ¸„÷?d h|²Q^Ž @  ¹…÷?d ¨|àJ±× @  º†÷?d è|bÛ¦  @  »‡÷?d (}«HœÔ @  ¼ˆ÷?d h})Ù‹  @  ½‰÷?d ¨}{ÂdS @  ¾Š÷?d è}ùSs @  ¿‹÷?d (~ü‡=  @  ÀŒ÷?d h~~*Õ @  Á÷?d ¨~, ÅŒ @  ÂŽ÷?d è~®œÒR @  Ã÷?d (_Šc @  Ä÷?d h€Î½ @  Å‘÷?d ¨uЀ'ÒÕrä @  Æ’÷?d èPDe: @  Ç“÷?d @€´ÊvË @  È”÷?d €€”?t5 @  É•÷?d À€d@ŽL @  Ê–÷?d ´¤ @  Ë—÷?d @/B£O @  Ì˜÷?d €·¡± @  Í™÷?d ÀÿÈ[È @  Îš÷?d ‚bŒû  @  Ï›÷?d @‚ÇŒ#² @  Ðœ÷?d €‚çy!L @  Ñ÷?d À‚Û5 @  Òž÷?d ƒÇNWÝ @  ÓŸ÷?d @ƒ¤ã­ @  Ô ÷?d €ƒ„¯ø @  Õ¡÷?d ÀƒtiU @  Ö¢÷?d „m'¦Ž @  ×£÷?d @„e†@Õ @  Ø¤÷?d €„EsB+ @  Ù¥÷?d À„µ ¸R @  Ú¦÷?d …eD4º @  Û§÷?d @…þ•Q @  Ü¨÷?d €…Þû—¯ @  Ý©÷?d À….„mÖ @  Þª÷?d †³ÀÍ @  ß«÷?d @†Æ2 @  à¬÷?d €†'30â @  á­÷?d À†×LÊ› @  â®÷?d€ ‡sÇZÕ @  ¯÷?d @‡lœÑû @  °÷?d €‡LiÓ @  ±÷?d À‡y_Ò‘ @  ²÷?d ˆM ^Œ @  ³÷?d @ˆ‹³ç­ @  ´÷?d €ˆ«FåS @  µ÷?d Àˆ•‹@P @  ¶÷?d ‰EÃ̸ @   ·÷?d @‰À–¾ @   ¸÷?d €‰;5”@ @   ¹÷?d À‰•Ô @   º÷?d Š“G5 @   »÷?d @ŠUTŒ4 @  ¼÷?d €Šu¡ŽÊ @  ½÷?d ÀŠæÍ) @  ¾÷?d ‹6…™Á @  ¿÷?d @‹`1æ @  À÷?d €‹@Ä @  Á÷?d À‹uòŽŒ @  Â÷?d Œl¼}ƒ @  Ã÷?d @Œª¯Ä¢ @  Ä÷?d €ŒŠZÆ\ @  Å÷?d ÀŒ´—c_ @  Æ÷?d dßï· @  Ç÷?d @:ܵ± @  È÷?d €)·O @  É÷?d À/¶Û @  Ê÷?d ޲[ @  Ë÷?d @ŽtH¯; @  Ì÷?d €ŽT½­Å @  Í÷?d ÀŽÖ×– @   Î÷?d Ÿ~ @  !Ï÷?d @=Ì¥” @  "Ð÷?d €9§j @  #Ñ÷?d À(¦þ @  $Ò÷?d –ÑL @  %Ó÷?d @P£m @  &Ô÷?d €p7¡“ @  'Õ÷?d ÀNú @  (Ö÷?d ‘ž²ˆx @  )×÷?d @‘À±Ò~ @  *Ø÷?d €‘àDЀ @  +Ù÷?d À‘ÕrÑ @  ,Ú÷?d ’H6qÕ @  -Û÷?d @’Ž%Èô @  .Ü÷?d €’®ÐÊ  @  /Ý÷?d À’=¼Qé @  0Þ÷?d “íôÝ @  1ß÷?d @“KÜ7 @  2à÷?d €“kåÞÉ @  3á÷?d À“^Óß] @  4â÷?d ”G,R @  5ã÷?d @”Ž•s @  6ä÷?d €”¡{— @  7å÷?d À”Ÿ¶2Ž @  8æ÷?d •Oþ¾f @  9ç÷?d @•ýä` @  :è÷?d €•1æž @  ;é÷?d À•>ç  @  <ê÷?d –™zGË @  =ë÷?d @–_iþê @  >ì÷?d €–œü @  ?í÷?d À–SñFÕ @  @î÷?d —ƒ¹Ê= @  Aï÷?d @—¸êò× @  Bð÷?d €—˜ð) @  Cñ÷?d À—­)ñ½ @  Dò÷?d ˜™Ö}  @  Eó÷?d @˜_ÅÄ @  Fô÷?d €˜0Æ @  Gõ÷?d À˜Aýc| @  Hö÷?d ™‘µï” @  I÷÷?d @™϶µ’ @  Jø÷?d €™ïC·l @  Kù÷?d À™Úu¶ø @  Lú÷?d šG19 @  Mû÷?d @š"¯ @  Nü÷?d €š¡×­æ @  Oý÷?d Àš2»6 @  Pþ÷?d ›âóºí @  Qÿ÷?d @›3Õž» @  Rø?d €› œE @  Sø?d À›&Ñ @  Tø?d œ?XnÞ @  Uø?d @œùK×ÿ @  Vø?d €œÙ¾Õ @  Wø?d Àœçsp @  Xø?d 7;üê @  Yø?d @i8¦ì @  Zø?d €Iͤ @  [ ø?d À|û¥† @  \ ø?d žá¿G @  ] ø?d @ž'¬¼f @  ^ ø?d €žY¾˜ @  _ ø?d Àž…3Ë @  `ø?d ŸU{Ž# @  aø?d @Ÿn(¶É @  bø?d €ŸNÝ´7 @  cøuР?d ÀŸ{ëµ£ @  dø?d   àkÅ @  eø?d X ÌóÒä @  fø?d ˜ ìÐ @  gø?d Ø ÒËu @  hø?d ¡ƒùñ @  iø?d X¡\€£÷ @  jø?d ˜¡|u¡  @  kø?d Ø¡IC  @  lø?d ¢Ô\ @  mø?d X¢¹} @  nø?d ˜¢2ể @  oø?d Ø¢¡ ` @  pø?d £qŬˆ @  qø?d X£×!­¾ @  r ø?d ˜£÷Ô¯@ @  s!ø?d Ø£Ââ®Ô @  t"ø?d ¤Û¬]Û @  u#ø?d X¤¿äú @  v$ø?d ˜¤=Jæ @  w%ø?d ؤ‡C @  x&ø?d ¥ÓÏÏï @  y'ø?d X¥Ì•é @  z(ø?d ˜¥­9— @  {)ø?d Ø¥˜–ƒ @  |*ø?d ¦K6B @  }+ø?d X¦ÃXc @  ~,ø?d ˜¦ã­ @  -ø?d ئ,–m @  €.ø?d §üÞ‹… @  /ø?d X§dzo @  ‚0ø?d ˜§çx±‘ @  ƒ1ø?d اÒN° @  „2ø?d ¨æ±< @  …3ø?d X¨ ¢…9 @  †4ø?d ˜¨W‡Ç @  ‡5ø?d ب>š"Ä @  ˆ6ø?d ©îÒ®, @  ‰7ø?d X©°Ñô* @  Š8ø?d ˜©$öÔ @  ‹9ø?d Ø©¥÷@ @  Œ:ø?d ª8VW @  ;ø?d XªþEî  @  Ž<ø?d ˜ªÞ°ì^ @  =ø?d تMÜw½ @  >ø?d «”ûU @  ‘?ø?d X«Ë ïr @  ’@ø?d ˜«ëÕíŒ @  “Aø?d Ø«Þãì @  ”Bø?d ¬Ç­ @  •Cø?d X¬¾¦6 @  –Dø?d ˜¬!K¤È @  —Eø?d ج†Ë @  ˜Fø?d ­ÏÎ# @  ™Gø?d X­‘Í×% @  šHø?d ˜­±8ÕÛ @  ›Iø?d Ø­„ÔO @  œJø?d ®JtŽ @  Kø?d X®ßYͯ @  žLø?d ˜®ÿ¬ÏQ @  ŸMø?d Ø®}Æs @   Nø?d ¯­Žÿê @  ¡Oø?d X¯–ÝÇ @  ¢Pø?d ˜¯¶(Åþ @  £Qø?d دƒÄj @  ¤Rø?d °=ÀxØ @  ¥Sø?d X°ûÓÁù @  ¦Tø?d ˜°Û&à @  §Uø?d ذåëf @  ¨Vø?d ±5£êì @  ©Wø?d X±k °ê @  ªXø?d ˜±KU² @  «Yø?d ر~c³€ @  ¬Zø?d ²ã'A @  ­[ø?d X²%4ª` @  ®\ø?d ˜²Á¨ž @  ¯]ø?d ز–­3} @  °^ø?d ³Få¿• @  ±_ø?d X³à¾£ @  ²`ø?d ˜³Àô¼] @  ³aø?d سõ½É @  ´bø?d ´ìŒNÆ @  µcø?d X´*Ÿ÷ç @  ¶dø?d ˜´ jõ @  ·eø?d Ø´4§P @  ¸fø?d µäïÜò @  ¹gø?d Xµºì†ô @  ºhø?d ˜µš„  @  »iø?d ص¯/…ž @  ¼jø?d ¶2k%_ @  ½kø?d X¶ôxœ~ @  ¾lø?d ˜¶Ôž€ @  ¿mø?d ضøà$A @  Ànø?d ·(¨¨© @  Áoø?d X·ûC @  Âpø?d ˜·3’½ @  Ãqø?d Ø·8“) @  Ärø?d ¸2Ç4 @  Åsø?d X¸ôÔ¦ @  Ætø?d ˜¸Ô!¤ë @  Çuø?d ظêìè @  Èvø?d ¹:¤ @  Éwø?d X¹d§× @  Êxø?d ˜¹DRÕø @  Ëyø?d عqdÔl @  Ìzø?d ºì t­ @  Í{ø?d Xº*3ÍŒ @  Î|ø?d ˜º ÆÏr @  Ï}ø?d غ™ªT‘ @  Ð~ø?d »IâØy @  Ñø?d X»˜Ì @  Ò€ø?d ˜»"eš2 @  Óø?d Ø»S›¦ @  Ô‚ø?d ¼h© @  Õƒø?d X¼Èш @  Ö„ø?d ˜¼èûÓv @  ×…ø?d ؼÖ6vu @  Ø†ø?d ½~ú @  Ù‡ø?d X½X} › @  Úˆø?d ˜½xˆ¢e @  Û‰ø?d ؽM¾£ñ @  ÜŠø?d ¾Ðú0 @  Ý‹ø?d X¾éº @  ÞŒø?d ˜¾6¸ï @  ßø?d ؾ´v¼ @  àŽø?d ¿d>ˆT @  áø?d X¿_m°¾ @  âø?d€ ˜¿W¦ @uÐÀ  ‘ø?d Ø¿þõœÓ @  €’ø?d 0ÀšÍ @  €“ø?d pÀ™_M @  €”ø?d °À¹ª³ @  €•ø?d ðÀIÕwÊ @  €–ø?d 0Á™û" @  €—ø?d pÁ ,þ^ @  €˜ø?d °Á)Ùü  @   €™ø?d ðÁÙ¦Ù @   €šø?d 0ÂD⦠@   €›ø?d pÂG¸äÔ @   €œø?d °ÂgMæ* @   €ø?d ð—2S @  €žø?d 0ÃGz» @  €Ÿø?d pÂð @  € ø?d °Ã¢xòé @  €¡ø?d ðÃR @  €¢ø?d 0ÄKIûŸ @  €£ø?d pÄH¹S @  €¤ø?d °Ähæ»­ @  €¥ø?d ðĘ™AÔ @  €¦ø?d 0ÅHÑÍ< @  €§ø?d pÅØ`È@ @  €¨ø?d °Åø•ʾ @  €©ø?d ðÅê0Ç @  €ªø?d 0Æ•® @  €«ø?d pÆ–ôÒÊ @  €¬ø?d °Æ¶Ð4 @  €­ø?d ðÆF~*M @  €®ø?d 0Ç–6¦¥ @  €¯ø?d pÇßpØe @   €°ø?d °Çÿ…Ú› @  !€±ø?d ðÇú â @  "€²ø?d 0È;¬ÿ @  #€³ø?d pÈ8_î3 @  $€´ø?d °ÈªìÍ @  %€µø?d ðÈèÕ´ @  &€¶ø?d 0É8š\ @  '€·ø?d pɨ,Ÿ  @  (€¸ø?d °ÉˆÙÞ @  )€¹ø?d ðÉx¦g§ @  *€ºø?d 0ÊåâÇf @  +€»ø?d pÊ清ª @  ,€¼ø?d °ÊÆM‡T @  -€½ø?d ðÊ62}- @  .€¾ø?d 0ËæzñÅ @  /€¿ø?d pËÓÝ„x @  0€Àø?d °Ëó(†† @  1€Áø?d ðËW|ÿ @  2€Âø?d 0Ìð @  3€Ãø?d pÌCÍ< @  4€Äø?d °Ì9¶Ï @  5€Åø?d ðÌÉÉ5» @  6€Æø?d 0͹S @  7€Çø?d p͉0¼/ @  8€Èø?d °Í©Å¾Ñ @  9€Éø?d ðÍYºD¨ @  :€Êø?d 0ÎÄþäi @  ;€Ëø?d pÎǤ¦¥ @  <€Ìø?d °ÎçQ¤[ @  =€Íø?d ðÎ.^" @  >€Îø?d 0ÏÇfÒÊ @  ?€Ïø?d pÏ 'ª˜ @  @€Ðø?d °ÏÒ¨f @  A€Ñø?d ðÏð­R @  B€Òø?d 0ÐNsî­ @  C€Óø?d pÐM)¬a @  D€Ôø?d °ÐmÜ®Ÿ @  E€Õø?d ðУTæ @  F€Öø?d 0ÑMëØ @  G€×ø?d pÑÝZÝr @  H€Øø?d °Ñý¯ßŒ @  I€Ùø?d ðÑ Ð%õ @  J€Úø?d 0Ò”…4 @  K€Ûø?d pÒ“ÎÇø @  L€Üø?d °Ò³;Å @  M€Ýø?d ðÒCD? @  N€Þø?d 0Ó“ ³— @  O€ßø?d pÓVûÓ; @  P€àø?d °ÓvÑÅ @  Q€áø?d ðÓ†q+¼ @  R€âø?d 0ÔŸ?س @  S€ãø?d pÔœeš @  T€äø?d °Ô¼˜ @  U€åø?d ðÔLïbø @  V€æø?d 0Õœ§î @  W€çø?d pÕ ël @  X€èø?d °Õ,ãé’ @  Y€éø?d ðÕÜœë @  Z€êø?d 0ÖAس* @  [€ëø?d pÖB‚ñæ @  \€ìø?d °Öbwó @  ]€íø?d ðÖ’ a @  ^€îø?d 0×B@…‰ @  _€ïø?d p× ûI @  `€ðø?d °×+óù· @  a€ñø?d ð×یΠ@  b€òø?d 0ØïsÓ @  c€óø?d pØì)Í @  d€ôø?d °ØÌÜÏá @  e€õø?d ðØ<£5˜ @  f€öø?d 0Ùìë¹p @  g€÷ø?d pÙ|Z¼  @  h€øø?d °Ù\¯¾ò @  i€ùø?d ðÙ¬ÐD‹ @  j€úø?d 0Ú1”äJ @  k€ûø?d pÚ2Φ† @  l€üø?d °Ú;¤x @  m€ýø?d ðÚâD^ @  n€þø?d 0Û2 Òé @  o€ÿø?d pÛe ¦Ê @  p€ù?d °ÛEÿ¤4 @  q€ù?d ðÛµ€^M @  r€ù?d 0ܬέB @  s€ù?d pܯ”ïŽ @  t€ù?d °Üaíp @  u€ù?d ðÜ  @  v€ù?d 0ݯV›á @  w€ù?d pÝ?çž @  x€ù?d °Ýœc @  y€ ù?d ðÝïmf @  z€ ù?d 0Þr)ÆÛ @  {€ ù?d pÞqs„ @  |€ ù?d °ÞQ††é @  }€ ù?d ðÞ¡ù| @  ~€ù?d 0ßq±ðx @  €ù?d pßu¦¸ @  €€ù?d uÐà/°ßUSºå @  €ù?d ðßج3à @  ‚ù?d HàÁm @  ƒù?d ˆà`6:ú @  „ù?d Èàâ§-$ @  …ù?d á@Lk @  †ù?d HáÂ[µ @  ‡ù?d ˆáðEKé @  ˆù?d ÈárÔ\7 @  ‰ù?d â~Q @  Šù?d Hâï @  ‹ù?d ˆâ¾ÑQc @  Œù?d Èâ<@F½ @  ù?d ãžæ'ò @  Žù?d Hãw0, @  ù?d ˆã{äE  @   ù?d ÈãùuR~ @  ‘!ù?d ä’ÕLÖ @  ’"ù?d HäD[ @  “#ù?d ˆä±z ä @  ”$ù?d Èä3ë: @  •%ù?d å‘Mzu @  –&ù?d HåÜm« @  —'ù?d ˆå! }÷ @  ˜(ù?d È壘j) @  ™)ù?d æL2'O @  š*ù?d HæΣ0‘ @  ›+ù?d ˆæog} @  œ,ù?d Èæí p£ @  -ù?d çOªì @  ž.ù?d HçÍ;2 @  Ÿ/ù?d ˆç&mÒ @   0ù?d È礈z  @  ¡1ù?d èâ™¶ @  ¢2ù?d Hè` h @  £3ù?d ˆèÁ6[„ @  ¤4ù?d ÈèC§LZ @  ¥5ù?d éá- @  ¦6ù?d Héc:Ë @  §7ù?d ˆéQE*— @  ¨8ù?d ÈéÓÔ=I @  ©9ù?d ê<~p/ @  ª:ù?d Hê¾ïgñ @  «;ù?d ˆêÑ0 @  ¬<ù?d Èê@'à @  ­=ù?d ë?æFŒ @  ®>ù?d Hë½wQR @  ¯?ù?d ˆë*´1Ï @  °@ù?d Èë¨%& @  ±Aù?d ìÃ…8¹ @  ²Bù?d HìA/g @  ³Cù?d ˆìà*x‹ @  ´Dù?d Èìb»oU @  µEù?d íÀ @  ¶Fù?d HíBŒÄ @  ·Gù?d ˆípY ˜ @  ¸Hù?d ÈíòÈF @  ¹Iù?d îbS  @  ºJù?d HîŸóDþ @  »Kù?d ˆî>Í @  ¼Lù?d Èî¼\Ì @  ½Mù?d ïúeƒ @  ¾Nù?d Hïœkr] @  ¿Où?d ˆïÙN/ @  ÀPù?d Èï[ßñ @  ÁQù?d ð—ïYä @  ÂRù?d Hð~N: @  ÃSù?d ˆð´@Ö @  ÄTù?d Èð6Ñ @  ÅUù?d ñ”woG @  ÆVù?d Hñæx™ @  ÇWù?d ˆñ$3hÅ @  ÈXù?d Èñ¦¢ @  ÉYù?d òI2} @  ÊZù?d HòË™%£ @  Ë[ù?d ˆòj§rO @  Ì\ù?d Èòè6e‘ @  Í]ù?d óJÞ @  Î^ù?d HóÈ @  Ï_ù?d ˆó¯’fŒ @  Ð`ù?d Èó-qR @  Ñaù?d ôF£oú @  Òbù?d HôÄ2x$ @  Ócù?d ˆôe /È @  Ôdù?d Èôç8 @  Õeù?d õE;YY @  Öfù?d HõǪN‡ @  ×gù?d ˆõõ^Û @  Øhù?d ÈõwîI @  Ùiù?d ö˜Dc @  Újù?d HöÕ½ @  Ûkù?d ˆö»ëDQ @  Ülù?d Èö9zS @  Ýmù?d ÷›Ü2À @  Þnù?d H÷M% @  ßoù?d ˆ÷òoNþ @  àpù?d È÷pþY  @  áqù?d ø6ï8š @  ârù?d€ HøÀ½3â @  sù?d ˆø€Â,' @  tù?d ÈøS;ù @  uù?d ùe¼¡[ @  vù?d Hùç-¶… @  wù?d ˆùJù£ @  xù?d Èù™Ûî} @  yù?d ú¸Ãüa @  zù?d Hú:Rë¿ @   {ù?d ˆú^%G¾ @   |ù?d ÈúÜ´P` @   }ù?d û»[Ê @   ~ù?d Hû9ÊÝ @   ù?d ˆûÐ܈‰ @  €ù?d ÈûRMŸW @  ù?d üZþàe @  ‚ù?d HüØo÷» @  ƒù?d ˆü¼[º @  „ù?d Èü>‰Ld @  …ù?d ýYfÖÆ @  †ù?d HýÛ÷Á @  ‡ù?d ˆý'Ž> @  ˆù?d Èý¥™à @  ‰ù?d þ„‹ü @  Šù?d Hþˆœ" @  ‹ù?d ˆþbÿ0# @  Œù?d Èþàn'ý @  ù?d ÿ‡½_ @  Žù?d Hÿª @  ù?d ˆÿœ'‡K @  uОù?d Èÿ¶• @  ‘ù?d ž¼s @   ’ù?d `ž˜-dÑ @  !“ù?d  žüZÈÐ @  "”ù?d àž~Ëß @  #•ù?d ž$E¬ @  $–ù?d `ž›µRr @  %—ù?d  žgÒT @  &˜ù?d àžåC Š @  '™ù?d žÄ[– @  (šù?d `žFÊH @  )›ù?d  ž"½£I @  *œù?d àž ,´— @  +ù?d žÇÃ.5 @  ,žù?d `žER9ë @  -Ÿù?d  žAÒ-ý @  . ù?d àžÃC:# @  /¡ù?d žËðE @  0¢ù?d `žIaRÏ @  1£ù?d  ž-þÎ @  2¤ù?d àž¯‡é @  3¥ù?d žÈhs² @  4¦ù?d `žJùdl @  5§ù?d  ž¶ž+J @  6¨ù?d àž4<” @  7©ù?d ž.ˆ @  8ªù?d `ž—†9V @  9«ù?d  žóñ•W @  :¬ù?d àžq`‚‰ @  ;­ù?d ž+ @  <®ù?d `ž”õ @  =¯ù?d  ž )"? @  >°ù?d àž¸5á @  ?±ù?d ž»ã @  @²ù?d `ž—*= @  A³ù?d  žó]¯< @  B´ù?d àžq̸â @  Cµù?d ž#"@ @  D¶ù?d ` ž”²5ž @  E·ù?d   žhÕz¸ @  F¸ù?d à žêDmf @  G¹ù?d žË\z @  Hºù?d ` žIÍh¤ @  I»ù?d   ž-ºÄ¥ @  J¼ù?d à ž¯+Ó{ @  K½ù?d žÈÄIÙ @  L¾ù?d ` žJU^ @  M¿ù?d   ž¾…_ @  NÀù?d à ž<HÞ @  OÁù?d ž4§7ì @  PÂù?d ` ž¶6 2 @  QÃù?d   žÒAŒ3 @  RÄù?d à žPЛí @  SÅù?d ž7?O @  TÆù?d ` žµ®‘ @  UÇù?d   žIÉY· @  VÈù?d à žËXNi @  WÉù?d žê@\u @  XÊù?d `žhÑK« @  YËù?d  ž ¦çª @  ZÌù?d àžŽ7ðt @  [Íù?d žéØjÖ @  \Îù?d `žkI} @  ]Ïù?d  žò~P @  ^Ðù?d àžpïG @  _Ñù?d žÎÊP# @  `Òù?d `žL[Gý @  aÓù?d  ž(,ëü @  bÔù?d àžª½ü" @  cÕù?d žÍRf€ @  dÖù?d `žOÃq^ @  e×ù?d  ž³¤>x @  fØù?d àž15)¦ @  gÙù?d ž-;º @  hÚù?d `ž’¼,d @  iÛù?d  žöË€e @  jÜù?d àžtZ—» @  kÝù?d žµ  @  lÞù?d `ž‘$Ç @  mßù?d  ž•¤Ñ @  nàù?d àž5 @  oáù?d ž†f= @  pâù?d `žqã @  qãù?d  žù`Ýâ @  räù?d àž{ñÊ< @  såù?d žPž @  tæù?d `žžG@ @  uçù?d  žbèf @  vèù?d àžày¸ @  wéù?d žÁa ¤ @  xêù?d `žCðz @  yëù?d  ž'‡¶{ @  zìù?d àž¥¡¥ @  {íù?d žÂù; @  |îù?d `ž@h,Ù @  }ïù?d  žÙ_ @  ~ðù?d àž[ÎÍ @  ñù?d ž"›þ @  €òù?d `ž    @  óù?d  žÄ}¼! @  ‚ôù?d àžFì«ÿ @  ƒõù?d ž!1] @  „öù?d `ž£’&ƒ @  …÷ù?d  ž_õi¥ @  †øù?d àžÝd~{ @  ‡ùù?d žü|lg @  ˆúù?d `ž~í{¹ @  ‰ûù?d  žš×¸ @  Šüù?d àž˜ Àf @  ‹ýù?d žÿäZÄ @  Œþù?d `ž}uM @  ÿù?d  žY&x¦ @  Žú?d àžÛ·ox @  ú?d žÓJ @  ú?d `žQ•” @  ‘ú?d  ž5â«• @  ’ú?d àž·s¼K @  “ú?d žМ&é @  ”ú?d `žR 17 @  •ú?d  ž®j~ @  –ú?d àž,ûiÏ @  — ú?d ž ã{Ó @  ˜ ú?d `žrl  @  ™ ú?d  žëÀ  @  š ú?d àži”×Ò @  › ú?d ž{Mp @  œú?d `žŒêZ® @  ú?d  žÝwduÐ ž @  žú?d àž—L`º @  Ÿú?d 8 žæ¼Q @   ú?d x žd- @  ¡ú?d ¸ žZ®Ž @  ¢ú?d ø ž‚˹P @  £ú?d 8!žå$#ò @  ¤ú?d x!žgµ4, @  ¥ú?d ¸!ž›Ò{  @  ¦ú?d ø!žClÔ @  §ú?d 8"ž8[~È @  ¨ú?d x"žºÊi @  ©ú?d ¸"žÞ½Å @  ªú?d ø"ž\,ÒÉ @  «ú?d 8#ž;ÃHk @  ¬ú?d x#ž¹R_µ @  ­ú?d ¸#ž½ÒK£ @  ® ú?d ø#ž?C\} @  ¯!ú?d 8$ž7ð#O @  °"ú?d x$žµa4‘ @  ±#ú?d ¸$žÑ˜ @  ²$ú?d ø$žS‡N @  ³%ú?d 8%ž4hì @  ´&ú?d x%ž¶ù2 @  µ'ú?d ¸%žJžM @  ¶(ú?d ø%žÈZÊ @  ·)ú?d 8&žéHÖ @  ¸*ú?d x&žk†_ @  ¹+ú?d ¸&žñó  @  º,ú?d ø&ž`ä× @  »-ú?d 8'žê~u @  ¼.ú?d x'žhi« @  ½/ú?d ¸'žñ)Da @  ¾0ú?d ø'žs¸S¿ @  ¿1ú?d 8(žé»r½ @  À2ú?d x(žk*ec @  Á3ú?d ¸(ž]Éb @  Â4ú?d ø(žÌÞ¼ @  Ã5ú?d 8)žê#D @  Ä6ú?d x)žh²SÀ @  Å7ú?d ¸)ž”Õæ @  Æ8ú?d ø)žD 8 @  Ç9ú?d 8*ž7\$ @  È:ú?d x*žµÍú @  É;ú?d ¸*žѺ¢û @  Ê<ú?d ø*žS+µ% @  Ë=ú?d 8+ž4Ä/‡ @  Ì>ú?d x+ž¶U8Y @  Í?ú?d ¸+žB…9^ @  Î@ú?d ø+žÀ.€ @  ÏAú?d 8,žȧQ² @  ÐBú?d x,žJ6Fl @  ÑCú?d ¸,ž.Aêm @  ÒDú?d ø,ž¬Ðý³ @  ÓEú?d 8-žË?g @  ÔFú?d x-žI®pÏ @  ÕGú?d ¸-žµÉ?é @  ÖHú?d ø-ž7X(7 @  ×Iú?d 8.ž@:+ @  ØJú?d x.ž”Ñ-õ @  ÙKú?d ¸.žð¦ô @  ÚLú?d ø.žr7–* @  ÛMú?d 8/žØ ˆ @  ÜNú?d x/ž—IV @  ÝOú?d ¸/ž~6œ @  ÞPú?d ø/žŒï!B @  ßQú?d 80ž2Ê6} @  àRú?d x0ž°[!£ @  áSú?d ¸0žÔ,¢ @  âTú?d€ ø0ž—úm| @  Uú?d 81žT¿÷ @  Vú?d x1ž“Ũ) @  Wú?d ¸1žªëâ @  Xú?d ø1ž(z < @  Yú?d 82žÇÐFZ @  Zú?d x2žEAQ„ @  [ú?d ¸2žï„¢ÿ @  \ú?d ø2žmµ! @   ]ú?d 83žϳÔn @   ^ú?d x3žM"ð @   _ú?d ¸3žŒë,K @   `ú?d ø3žz;• @   aú?d 84žeÚ%= @  bú?d x4žçK2ã @  cú?d ¸4žà/ÿx @  dú?d ø4žb¾è¦ @  eú?d 85žÀ‰é @  fú?d x5žB‰ž7 @  gú?d ¸5ž{§*ü @  hú?d ø5žù6=" @  iú?d 86žœpD @  jú?d x6ž” gš @  kú?d ¸6ž>È”á @  lú?d ø6ž¼Yƒ? @  mú?d 87žÿâp @  nú?d x7žœnõ® @  oú?d ¸7žÀ#‰ @  pú?d ø7žB4W @  qú?d 88žUí @  rú?d x8ž†B3 @  sú?d ¸8žc¨ @   tú?d ø8žò¿Æ @  !uú?d 89ž°TÞ‰ @  "vú?d x9ž2ÅÉW @  #wú?d ¸9ž ë}œ @  $xú?d ø9ž‰zjB @  %yú?d 8:žfÐ'$ @  &zú?d x:žäA0ú @  '{ú?d ¸:žN„à @  (|ú?d ø:žÌÔ_ @  )}ú?d 8;žn³µ @  *~ú?d x;žì"¢Î @  +ú?d ¸;žÀ} ¶ @  ,€ú?d ø;žBìh @  -ú?d 8<ž)LÀ @  .‚ú?d x<ž«Ý @  /ƒú?d ¸<ž¬¹ß… @  0„ú?d ø<ž.(È[ @  1…ú?d 8=žŒŽ© @  2†ú?d x=ž¾Ê @  3‡ú?d ¸=ž71  @  4ˆú?d ø=žµ ß @  5‰ú?d 8>žZ P¹ @  6Šú?d x>žØ›Gg @  7‹ú?d ¸>žr^´ @  8Œú?d ø>žðϣ @  9ú?d 8?žRi @  :Žú?d x?žÐøÕS @  ;ú?duÐ@ž7 ¸?žŒ†t @  <ú?d ø?žª @  =‘ú?d P@ž¿UC1 @  >’ú?d @žŸ AÏ @  ?“ú?d Ð@ž…¡¸V @  @”ú?d AžUé4¾ @  A•ú?d PAž¥–ÎÇ @  B–ú?d Až…cÌ9 @  C—ú?d ÐAž)mÒ @  D˜ú?d BžƒmÍ @  E™ú?d PBžs7j @  Fšú?d BžSç5” @  G›ú?d ÐBž[FÓÏ @  Hœú?d Cž‹_' @  Iú?d PCž{q¥^ @  Jžú?d Cž[„§  @  KŸú?d ÐCž8)]{ @  L ú?d Dž!g®t @  M¡ú?d PDžÑT  @  N¢ú?d DžñíVó @  O£ú?d ÐDžTíŽH @  P¤ú?d Ež„¥  @  Q¥ú?d PEžtÚøÙ @  R¦ú?d EžT/ú' @  S§ú?d ÐEžÏe[Ì @  T¨ú?d FžR!û  @  U©ú?d PFž¢^t @  Vªú?d Fž‚«Š @  W«ú?d ÐFžŠ åÑ @  X¬ú?d GžZBi9 @  Y­ú?d PGžª=“@ @  Z®ú?d GžŠÈ‘¾ @  [¯ú?d ÐGžtÒR¹ @  \°ú?d Hž@-Þ¤ @  ]±ú?d PHž°R$Ý @  ^²ú?d Hž§&# @  _³ú?d ÐHž$¡Ù( @  `´ú?d IžôéUÀ @  aµú?d PIž–¯¹ @  b¶ú?d Iž$c­G @  c·ú?d ÐIž¿) ¬ @  d¸ú?d Jž"m¬m @  e¹ú?d PJžÒV @  fºú?d JžòçTê @  g»ú?d ÐJžúF²± @  h¼ú?d Kž*>Y @  i½ú?d PKžÚqÄ  @  j¾ú?d Kžú„ÆÞ @  k¿ú?d ÐKžiy) @  lÀú?d Lžp7Ú @  mÁú?d PLž€H b @  nÂú?d Lž ½"œ @  oÃú?d ÐLž½ú' @  pÄú?d MžÕõvÏ @  qÅú?d PMž%ŠŒ¶ @  rÆú?d MžŽH @  sÇú?d ÐMžž5/£ @  tÈú?d Nžqb @  uÉú?d PNžóu @  vÊú?d NžÓûwå @  wËú?d ÐNžÛZ‘¾ @  xÌú?d Ož V @  yÍú?d POžûmç/ @  zÎú?d OžÛ˜åÑ @  {Ïú?d ÐOž%‚&Ö @  |Ðú?d Pž›\šd @  }Ñú?d PPžk#` @  ~Òú?d PžKÖbã @  Óú?d ÐPž²«K @  €Ôú?d QžbÉ'£ @  Õú?d PQž’¶ÝÚ @  ‚Öú?d Qž²Cß$ @  ƒ×ú?d ÐQž) ~Ï @  „Øú?d Rž´MÞ @  …Ùú?d PRžD2$w @  †Úú?d RždÇ&‰ @  ‡Ûú?d ÐRžlfÀÒ @  ˆÜú?d Sž¼.L: @  ‰Ýú?d PSžLQ¶C @  ŠÞú?d Sžl¤´½ @  ‹ßú?d ÐSž Nf @  Œàú?d TžG½i @  áú?d PTžæ8G @  Žâú?d TžÆÍEî @  ãú?d ÐTžcÍU @  äú?d Už³…½ @  ‘åú?d PUžCúëÄ @  ’æú?d Užcé: @  “çú?d ÐUžøEHÑ @  ”èú?d Vžeè @  •éú?d PVž•~i @  –êú?d Vžµ‹— @  —ëú?d ÐVž½*öÌ @  ˜ìú?d Wžmbz$ @  ™íú?d PWž€] @  šîú?d Wž½è‚£ @  ›ïú?d ÐWžCòA¤ @  œðú?d Xžw ͹ @  ñú?d PXž‡r7À @  žòú?d Xž§‡5> @  Ÿóú?d ÐXžÊ5 @   ôú?d YžÃÉFÝ @  ¡õú?d PYž3¶¼¤ @  ¢öú?d YžC¾Z @  £÷ú?d ÐYžˆ ± @  ¤øú?d ZžM¿p @  ¥ùú?d PZžå2E  @  ¦úú?d ZžÅÇG÷ @  §ûú?d ÐZžÍf¡¬ @  ¨üú?d [ž.-D @  ©ýú?d P[žíQ×= @  ªþú?d [žͤÕà @  «ÿú?d Ð[ž<ø;— @  ¬û?d \ž%¶È˜ @  ­û?d P\žÕÉ2á @  ®û?d \žõ<0 @  ¯û?d Ð\žP<è¤ @  °û?d ]ž€tdL @  ±û?d P]žp ž5 @  ²û?d ]žPþœË @  ³û?d Ð]žË´=  @  ´û?d ^žVðá @  µ û?d P^ž¦g˜ @  ¶ û?d ^ž†zef @  · û?d Ð^žŽÛƒ= @  ¸ û?d _ž^“Õ @  ¹ û?d P_ž®ìõ¬ @  ºû?d _žŽ÷R @  uÐ`ž»û?d Ð_žp4U @  ¼û?d (`žÎûÍ @  ½û?d h`ž>„{´ @  ¾û?d ¨`žqyJ @  ¿û?d è`žp€Ó @  Àû?d (ažÔ8 ; @  Áû?d haž$GöB @  Âû?d ¨až²ô¼ @  Ãû?d èažŸøUW @  Äû?d (bž¼õ– @  Åû?d hbžòÃï @  Æû?d ¨bžÒ6  @  Çû?d èbžÚ—ëJ @  Èû?d (cž ßg¢ @  Éû?d hcžú Û @  Êû?d ¨cžÚUŸ% @  Ëû?d ècž¹øeþ @  Ì û?d (dž ¶–ñ @  Í!û?d hdžPÉlˆ @  Î"û?d ¨džpû?d ¨kžYì @   ?û?d èkžDí™Ë @   @û?d (lž]£jÄ @   Aû?d hlžh•kP @   Bû?d ¨lžH`i® @   Cû?d èlžŽsÐ @   Dû?d (mž^;\g @   Eû?d hmžÍWÇ„ @   Fû?d ¨mží¢Åz @   Gû?d èmž³¡Ÿ| @   Hû?d (nž.å?½ @   Iû?d hnžÓ>) @   Jû?d ¨nž;&<× @   Kû?d ènžý5…ö @   Lû?d (ož-}  @   Mû?d hož°¬ @   Nû?d ¨ož3E®ã @   Oû?d èož–  @   Pû?d (pž¶È*» @   Qû?d hpžƒþ+/ @   Rû?d ¨pž£ )Ñ @   Sû?d èpžeð @   Tû?d (qžµP @   Uû?d hqž7: K @   Vû?d ¨qžÏ¢µ @  ! Wû?d èqžIÌø³ @  " Xû?d (ržÔˆXr @  # Yû?d hržá¾Yæ @  $ Zû?d ¨ržÁK[ @  % [û?d èržXâ9 @  & \û?d (sž×nÑ @  ' ]û?d hsžéÝËÒ @  ( ^û?d ¨sžÉ(É, @  ) _û?d èsžoÌÈ @  * `û?d (tžv‚; @  + aû?d htžC´: @  , bû?d ¨tžcA8 @  - cû?d ètž¥R^ @  . dû?d (užu ¶ @  / eû?d hužæv–U @  0 fû?d ¨užƃ”« @  1 gû?d èuž˜€Î­ @  2 hû?d (vžÄnl @  3 iû?d hvž0òoø @  4 jû?d ¨vžm @  5 kû?d èvžÖÔ' @  6 lû?d (wž\XÏ @  7 mû?d hwž8‘ýÌ @  8 nû?d ¨wždÿ2 @  9 oû?d èwž#7ÇØ @  : pû?d (xžÈKÅ @  ; qû?d hxž"þJQ @  < rû?d ¨xž H¯ @  = sû?d èxžÄñŽ @  > tû?d (yžP}f @  ? uû?d hyž8=ǧ @  @ vû?d ¨yžÈÅY @  A wû?d èyžFËŸ_ @  B xû?d (zžÛ?ž @  C yû?d hzžî¹>  @  D zû?d ¨zžÎL<ô @  E {û?d èzž_…Õ @  F |û?d ({žØ = @  G }û?d h{žæÚ¬> @  H ~û?d ¨{žÆ/®À @  I û?d è{ž]îu @  J €û?d (|ž”z @  K û?d h|ž¡%î @  L ‚û?d ¨|žÐ @  M ƒû?d è|žGç1 @  N „û?d (}ž—‹+Ù @  O …û?d h}žç°: @  P †û?d ¨}ž$²Ä @  Q ‡û?d è}žzè @  R ˆû?d (~žçUH @  S ‰û?d h~žÒcI— @  T Šû?d ¨~žò–Ki @  U ‹û?d è~ž4…òH @  V Œû?d (žäÍ~  @  W û?d hžÚÛ£ @  X Žû?d ¨žuЀž'úõÙ] @  Y û?d èžøa=b @  Zû?d @€ž–ßß @  [‘û?d €€žË¢ @  \’û?d À€žƒÜ| @  ]“û?d žÖþk @  ^”û?d @ž•Géµ @  _•û?d €žµI@Æ @  `–û?d Àž7ØW @  a—û?d ‚žvº @  b˜û?d @‚žôŸ­ß @  c™û?d €‚žc͹k @  dšû?d À‚žá\®µ @  e›û?d ƒžu–Œ¢ @  fœû?d @ƒž÷›| @  gû?d €ƒžk®+_ @  hžû?d Àƒžé?< @  iŸû?d „žÔÙf @  j û?d @„žV•θ @  k¡û?d €„žÁÇÚ  @  l¢û?d À„žCVÍÒ @  m£û?d …žלïÅ @  n¤û?d @…žU ø @  o¥û?d €…ždvØ @  p¦û?d À…žæ”a @  q§û?d †ž§BŒ @  r¨û?d @†ž%Ó›Á @  s©û?d €†ž²u @  tªû?d À†ž0˜« @  u«û?d ‡ž¤Úº¼ @  v¬û?d @‡ž&K­b @  w­û?d €‡žºâA @  x®û?d À‡ž8s Ÿ @  y¯û?d ˆžµN©¶ @  z°û?d @ˆž7ß¾h @  {±û?d €ˆž ªÜ @  |²û?d Àˆž"½ @  }³û?d ‰ž¶ÖŸ @  ~´û?d @‰ž4GˆË @  µû?d €‰žY @  €¶û?d À‰žÛ‰Å @  ·û?d Šžš_íÜ @  ‚¸û?d @ŠžÎú @  ƒ¹û?d €Šžœî¶ @  „ºû?d ÀŠž ùh @  …»û?d ‹ž™ÇÛ @  †¼û?d @‹žVÌ¡ @  ‡½û?d €‹ž‡ÿ|‚ @  ˆ¾û?d À‹žnk\ @  ‰¿û?d ŒžÈ›ª @  ŠÀû?d @ŒžJ”Œt @  ‹Áû?d €ŒžÝƘÀ @  ŒÂû?d ÀŒž_W @  Ãû?d žË­  @  ŽÄû?d @žI º× @  Åû?d €žx4 @  Æû?d Àžú•#Ê @  ‘Çû?d Žž»CÎÓ @  ’Èû?d @Žž9ÒÙ  @  “Éû?d €Žž®€Í¹ @  ”Êû?d ÀŽž,Úg @  •Ëû?d ž¸Ûøp @  –Ìû?d @ž:Jï® @  —Íû?d €ž¦ã_ @  ˜Îû?d Àž$rHS @  ™Ïû?d ž#nÛÕ @  šÐû?d @ž¡ÿÌ  @  ›Ñû?d €ž6­Ø¿ @  œÒû?d Àž´<Ïa @  Óû?d ‘ž öív @  žÔû?d @‘ž¢gú¨ @  ŸÕû?d €‘ž‚iSÛ @   Öû?d À‘žøD @  ¡×û?d ’žA.© @  ¢Øû?d @’žÿ¾Â @  £Ùû?d €’žTíªv @  ¤Úû?d À’žÖ|½¨ @  ¥Ûû?d “žB¶Ÿ¿ @  ¦Üû?d @“žÀ'ˆa @  §Ýû?d €“ž\Ž8B @  ¨Þû?d À“žÞ/œ @  ©ßû?d ”žã$Ê{ @  ªàû?d @”žaµÝ¥ @  «áû?d €”žöçÉ @  ¬âû?d À”žtvÞÏ @  ­ãû?d •žà¼üØ @  ®äû?d @•žb-ë @  ¯åû?d €•žS%eÅ @  °æû?d À•žÑ´r @  ±çû?d –žbŸ @  ²èû?d @–žóˆÜ @  ³éû?d €–ž…¡œh @  ´êû?d À–ž0‹¶ @  µëû?d —ž“ú©¡ @  ¶ìû?d @—žk¾ @  ·íû?d €—žÂ\ @  ¸îû?d À—žS‚ @  ¹ïû?d ˜ž‚nº« @  ºðû?d @˜žÿ­u @  »ñû?d €˜ž—­¹Á @  ¼òû?d À˜ž<® @  ½óû?d ™žöŒ @  ¾ôû?d @™žg›Ö @  ¿õû?d €™žn47 @  Àöû?d À™žÿ#é @  Á÷û?d šžN)Îð @  Âøû?d @šž̸Ù. @  Ãùû?d €šž[êÍš @  Äúû?d ÀšžÙ{ÚD @  Åûû?d ›žM±øS @  Æüû?d @›žÏ ï @  Çýû?d €›žS‰_® @  Èþû?d À›žÑHp @  Éÿû?d œžBÛ†Ž @  Êü?d @œžÀJ‘P @  Ëü?d €œžW…ä @  Ìü?d ÀœžÕ‰’: @  Íü?d žAC°- @  Îü?d @žÃÒ§ó @  Ïü?d €žòÚ)0 @  Ðü?d ÀžpK>î @  Ñü?d žž1Ó÷ @  Òü?d @žž³ Ä) @  Ó ü?d €žž$^Ð @  Ô ü?d Àžž¦ÏÇC @  Õ ü?d Ÿž2åT @  Ö ü?d @Ÿž°”òŠ @  × ü?d €Ÿž,=B© @  ØüuРž?d ÀŸž®¬Uw @  Ùü?d  žfe¤% @  Úü?d X žäô³û @  Ûü?d ˜ žs¦§O @  Üü?d Ø žñ7°‘ @  Ýü?d ¡žeý’† @  Þü?d X¡žçl…X @  ßü?d ˜¡žÇb,+ @  àü?d Ø¡žEó;õ @  áü?d ¢ž%Öì @  âü?d€ X¢žâi‹ @  ü?d ˜¢žvñ5 @  ü?d Ø¢žô`"È @  ü?d £ž¥ãû2 @  ü?d X£ž'rìì @  ü?d ˜£žuiµ @  ü?d Ø£ž÷øk @  ü?d ¤žq®ö @   ü?d X¤ž†à¹( @   !ü?d ˜¤žÔûVq @   "ü?d ؤžVjA¯ @   #ü?d ¥žé˜U @   $ü?d X¥ž…x‹ @   %ü?d ˜¥ž×c`Ò @  &ü?d Ø¥žUòw  @  'ü?d ¦žw7û @  (ü?d X¦žõ¦ìQ @  )ü?d ˜¦ž§½ @  *ü?d ئž%,Ö @  +ü?d §žt¯Í, @  ,ü?d X§žö>Úò @  -ü?d ˜§ž¤%5« @  .ü?d اž&´"u @  /ü?d ¨že;Þ& @  0ü?d X¨žçªÉø @  1ü?d ˜¨žµ±&¡ @  2ü?d بž7 1 @  3ü?d ©žf£è… @  4ü?d X©žä2ÿ[ @  5ü?d ˜©ž¶) @  6ü?d Ø©ž4¸Ü @  7ü?d ªž{¬ï @   8ü?d Xªž…ê»1 @  !9ü?d ˜ªž×ñTh @  ":ü?d تžU`C¶ @  #;ü?d «žãšL @  $<ü?d X«ž†r’ @  %=ü?d ˜«žÔibË @  &>ü?d Ø«žVøu @  '?ü?d ¬žU!Ú™ @  (@ü?d X¬ž×°ÍG @  )Aü?d ˜¬ž…«" @  *Bü?d جž:5À @  +Cü?d ­žV¹ì: @  ,Dü?d X­žÔ(ûä @  -Eü?d ˜­ž†3½ @  .Fü?d Ø­ž¢c @  /Gü?d ®ž&gà @  0Hü?d X®ž¤ö˜> @  1Iü?d ˜®žöíwg @  2Jü?d Ø®žt|`¹ @  3Kü?d ¯ž%ÿ¹C @  4Lü?d X¯ž§n® @  5Mü?d ˜¯žõuAÄ @  6Nü?d دžwäV @  7Oü?d °ž¾Jšæ @  8Pü?d X°ž<Û8 @  9Qü?d ˜°žnÀba @  :Rü?d ذžìQu¿ @  ;Sü?d ±ž½Ò¬E @  <Tü?d X±ž?C»› @  =Uü?d ˜±žmXT @  >Vü?d رžïÉC @  ?Wü?d ²žr î½ @  @Xü?d X²žðœùc @  AYü?d ˜²ž¢‡: @  BZü?d زž ä @  C[ü?d ³žq•Ø @  D\ü?d X³žóÏÀ @  E]ü?d ˜³ž¡ ™ @  F^ü?d سž#Ž7G @  G_ü?d ´žÐÚ @  H`ü?d X´žR–š @  Iaü?d ˜´žu] @  Jbü?d Ø´ž‚bƒ @  Kcü?d µžÓŸ»y @  Ldü?d XµžQ¬§ @  Meü?d ˜µžCþ @  Nfü?d صž„T  @  Ogü?d ¶ž£AØ£ @  Phü?d X¶ž!ÐÏ} @  Qiü?d ˜¶žsË $ @  Rjü?d ضžñZ7ú @  Skü?d ·ž Ùî @  Tlü?d X·ž"HùÞ @  Umü?d ˜·žpS‡ @  Vnü?d Ø·žòÂY @  Woü?d ¸ž±Mý  @  Xpü?d X¸ž3ÜêÔ @  Yqü?d ˜¸žaÇ @  Zrü?d ظžãVS @  [sü?d ¹ž²ÕË© @  \tü?d X¹ž0DÜw @  ]uü?d ˜¹žb_3. @  ^vü?d عžàÎ$ð @  _wü?d ºžÓ à @  `xü?d XºžQœ˜ @  ayü?d ˜ºž‡wD @  bzü?d غž`š @  c{ü?d »žЕ¹` @  d|ü?d X»žR®¾ @  e}ü?d ˜»žAç @  f~ü?d Ø»ž‚ŽV9 @  gü?d ¼žœ‘­' @  h€ü?d X¼žºù @  iü?d ˜¼žLU  @  j‚ü?d ؼžΊB~ @  kƒü?d ½žŸ ›„ @  l„ü?d X½ž˜ŒZ @  m…ü?d ˜½žOƒc @  n†ü?d ؽžÍtÝ @  o‡ü?d ¾žï×ø^ @  pˆü?d X¾žmFï€ @  q‰ü?d ˜¾ž?]Ù @  rŠü?d ؾž½Ì @  s‹ü?d ¿žìOÎý @  tŒü?d X¿žnÞÙ# @  uü?d ˜¿ž<Å6z @uÐÀž  vŽü?d Ø¿ž¾T!¤ @  wü?d 0Àž­Ô¸ @  xü?d pÀž/Ef @  y‘ü?d °Àž}^ø? @  z’ü?d ðÀžÿÏïá @  {“ü?d 0Áž®L6 @  |”ü?d pÁž,Ý!Å @  }•ü?d °Áž~ÆÎœ @  ~–ü?d ðÁžüWÙB @  —ü?d 0ž‚ÅDÒ @  €˜ü?d pžTS  @  ™ü?d °ÂžRO¼U @  ‚šü?d ðžÐÞ«‹ @  ƒ›ü?d 0Þ]rq @  „œü?d pÞÌe¯ @  …ü?d °ÃžQ׊ö @  †žü?d ðÞÓF( @  ‡Ÿü?d 0Äž Ï'µ @  ˆ ü?d pÄž¢^0k @  ‰¡ü?d °ÄžðEß2 @  Š¢ü?d ðÄžrÔÈì @  ‹£ü?d 0Åž#W @  Œ¤ü?d pÅž¡ÆÈ @  ¥ü?d °ÅžóÝé‘ @  Ž¦ü?d ðÅžqLþO @  §ü?d 0ÆžS‰rÌ @  ¨ü?d pÆžÑe @  ‘©ü?d °ÆžƒŠK @  ’ªü?d ðÆž’• @  “«ü?d 0ÇžPDo @  ”¬ü?d pÇžÒ€S± @  •­ü?d °Çž€›¼è @  –®ü?d ðÇž «6 @  —¯ü?d 0ÈžA…We @  ˜°ü?d pÈžÃ@» @  ™±ü?d °Èž‘¯â @  š²ü?d ðÈžž¸< @  ›³ü?d 0ÉžBaÆ @  œ´ü?d pÉžÀŒv @  µü?d °Éž’—™A @  ž¶ü?d ðÉžŽŸ @  Ÿ·ü?d 0Êž#Å%¬ @   ¸ü?d pÊž¡T2r @  ¡¹ü?d °ÊžóOÝ+ @  ¢ºü?d ðÊžqÞÊõ @  £»ü?d 0Ëž ] @  ¤¼ü?d pËž¢ÌÑ @  ¥½ü?d °Ëžð×ëˆ @  ¦¾ü?d ðËžrFüV @  §¿ü?d 0ÌžqŸSÚ @  ¨Àü?d pÌžóD @  ©Áü?d °Ìž¡«] @  ªÂü?d ðÌž#„¼ƒ @  «Ãü?d 0Ížrey @  ¬Äü?d pÍžð–r§ @  ­Åü?d °Íž¢þ @  ®Æü?d ðÍž Š  @  ¯Çü?d 0ΞÙ£ @  °Èü?d pΞ€H} @  ±Éü?d °ÎžÒSþ$ @  ²Êü?d ðΞPÂéú @  ³Ëü?d 0ÏžA0 @  ´Ìü?d pÏžƒÐ'Þ @  µÍü?d °ÏžÑËȇ @  ¶Îü?d ðÏžSZßY @  ·Ïü?d 0Оšô¥ @  ¸Ðü?d pОe{ @  ¹Ñü?d °ÐžJ~ë" @  ºÒü?d ðОÈïüü @  »Óü?d 0Ñž™l% @  ¼Ôü?d pÑžý2Ø @  ½Õü?d °ÑžIæÝ @  ¾Öü?d ðÑžËwÊ_ @  ¿×ü?d 0ÒžV³gþ @  ÀØü?d pÒžÔ"p  @  ÁÙü?d °Òž†9Ÿy @  ÂÚü?d ðÒž¨ˆ§ @  ÃÛü?d 0ÓžU+Q] @  ÄÜü?d pÓž׺Fƒ @  ÅÝü?d °Óž…¡©Ú @  ÆÞü?d ðÓž0¾ @  Çßü?d 0Ôžô¹™ @  Èàü?d pÔžv(G @  Éáü?d °Ôž$3ü @  Êâü?d ðÔž¦¢ëÀ @  Ëãü?d 0Õž÷!2: @  Ìäü?d pÕžu°%ä @  Íåü?d °Õž'«Ê½ @  Îæü?d ðÕž¥:Ýc @  Ïçü?d 0Öž‡ÿQà @  Ðèü?d pÖžnF> @  Ñéü?d °ÖžWu©g @  Òêü?d ðÖžÕä¾¹ @  Óëü?d 0מ„ggC @  Ôìü?d pמöp @  Õíü?d °×žTíŸÄ @  Öîü?d ðמÖ|ˆ @  ×ïü?d 0Øž•ótI @  Øðü?d pØžbc— @  Ùñü?d °ØžEyŒÎ @  Úòü?d ðØžÇè› @  Ûóü?d 0Ùž–kBê @  Üôü?d pÙžúU4 @  Ýõü?d °ÙžFáºm @  Þöü?d ðÙžÄp­³ @  ß÷ü?d 0Úž÷³€ @  àøü?d pÚžu"^ @  áùü?d °Úž'9þ @  âúü?d€ ðÚžÑkõ @  ûü?d 0Ûža©d¬ @  üü?d pÛžã8sr @  ýü?d °ÛžtjgÆ @  þü?d ðÛžöûp @  ÿü?d 0ÜžY1p @  ý?d pÜžÛ –® @  ý?d °ÜžG & @  ý?d ðÜžŘ1S @   ý?d 0ÝžQRD @   ý?d pÝžÓÚ @   ý?d °ÝžD‘. @   ý?d ðÝžÆð @   ý?d 0Þž‡Öêé @  ý?d pÞžGý7 @   ý?d °Þž4Osô @   ý?d ðÞž¶Þd* @   ý?d 0ßž"F= @   ý?d pßž …Qã @   ý?d uÐàž/°ßž7×EW @  ý?d ðßžÈÆ!õ @  €ý?d Hàžh P7 @  €ý?d ˆàžHURÉ @  €ý?d Èàžv˜÷Ê @  €ý?d ឦÐ{" @  €ý?d Háž`à@  €ý?d ˆáž@6Àý @  €ý?d ÈážuÁi @  €ý?d âžèDa¨ @  €ý?d Hâž¶G;® @  €ý?d ˆâž–²9P @  €ý?d ÈâžØ… @   €ý?d ãžÄ ë @  !€ý?d H㞃°Ê @  "€ý?d ˆãž"v²4 @  #€ý?d Èãž@³  @  $€ý?d äž@¯ @  %€ý?d H䞨êA™ @  &€ ý?d ˆäžˆCg @  '€!ý?d Èäž¶Òæd @  (€"ý?d åžfšjŒ @  )€#ý?d Håž ‰Ó­ @  *€$ý?d ˆåž€|ÑS @  +€%ý?d ÈåžµJÐÇ @  ,€&ý?d æž(p @  -€'ý?d Hæžv * @  .€(ý?d ˆæžVø(þ @  /€)ý?d ÈæžÅ”³ @  0€*ý?d çžÜ?õ @  1€+ý?d HçžÓφÔ @  2€,ý?d ˆçžó:„* @  3€-ý?d ÈçžÆ …¾ @  4€.ý?d èžòó £ @  5€/ý?d HèžÉ 1I @  6€0ý?d ˆèžéU3· @  7€1ý?d Èèžט–´ @  8€2ý?d éžÐ\ @  9€3ý?d HéžÁã} @  :€4ý?d ˆéžá6¡ƒ @  ;€5ý?d ÈéžÔ  @  <€6ý?d êžIDÖ @  =€7ý?d HêžGZÐ @  >€8ý?d ˆêž7²X. @  ?€9ý?d Èêžßâï @  @€:ý?d ëžË—n @  A€;ý?d Hëž „×& @  B€<ý?d ˆëž-qÕØ @  C€=ý?d ÈëžGÔL @  D€>ý?d ìž 'C @  E€?ý?d HìžW½3d @  F€@ý?d ˆìžwH1š @  G€Aý?d ÈìžI…”™ @  H€Bý?d íž™Íq @  I€Cý?d Híž_Þ¡P @  J€Dý?d ˆíž+£® @  K€Eý?d ÈížJ¢: @  L€Fý?d îž×Yû @  M€Gý?d HZXý @  N€Hý?d ˆîž©¯Z @  O€Iý?d Èîž:ÃÁà @  P€Jý?d ïžê‹M @  Q€Ký?d Hïž,˜ô) @  R€Lý?d ˆïž mö× @  S€Mý?d Èïž9[÷C @  T€Ný?d 𞇅Kñ @  U€Oý?d Hðž¼Ös @  V€Pý?d ˆðžœ#qå @  W€Qý?d Èðž¢îÔæ @  X€Rý?d ñžr¦X @  Y€Sý?d Hñž´µá/ @  Z€Tý?d ˆñž”@ãÑ @  [€Uý?d Èñž¡vâE @  \€Vý?d òž<2B„ @  ]€Wý?d Hòžb1‚ @  ^€Xý?d ˆòžBÄ| @  _€Yý?d ÈòžÀ®¦/ @  `€Zý?d óžæ*Ç @  a€[ý?d HóžÖõ“æ @  b€\ý?d ˆóžö‘ @  c€]ý?d ÈóžÃ6Œ @  d€^ý?d ôžÚxcƒ @  e€_ý?d Hôž|œbµ @  f€`ý?d ˆôž\i`K @  g€aý?d Èôžb¤ÅH @  h€bý?d õž²ìI  @  i€cý?d Hõžtÿð @  j€dý?d ˆõžT ò @  k€eý?d Èõža<óë @  l€fý?d öžüxS* @  m€gý?d Höž¢{ , @  n€hý?d ˆöž‚Ž Ò @  o€iý?d Èöžâ1 @  p€jý?d ÷žÁªÙ @  q€ký?d H÷ž¹¥ø @  r€lý?d ˆ÷ž'L§ @  s€mý?d È÷žz¦’ @  t€ný?d øž&…* @  u€oý?d HøžÖe @  v€pý?d ˆøž=#› @  w€qý?d Èøž @  x€rý?d ùžÓ¦9p @  y€sý?d Hùžµ€Q @  z€tý?d ˆùž5@‚¯ @  {€uý?d Èùžvƒ; @  |€vý?d úž2#ú @  }€wý?d HúžÃ1yü @  ~€xý?d ˆúžãÄ{ @  €yý?d Èúž,ÿñò @  €€zý?d ûžü·} @  €{ý?d Hûž:¤Ä; @  ‚€|ý?d ˆûžQÆÅ @  ƒ€}ý?d Èûž/gÇQ @  „€~ý?d üž6)4^ @  …€ý?d Hüž}[të @  †€€ý?d ˆüž]®v @  ‡€ý?d ÈüžccÓ @  ˆ€‚ý?d ýž³+_þ @  ‰€ƒý?d Hýžu8æß @  Š€„ý?d ˆýžUÍä! @  ‹€…ý?d Èýž`ûåµ @  Œ€†ý?d þžý¿Et @  €‡ý?d Hþž£¼r @  Ž€ˆý?d ˆþžƒIŒ @  €‰ý?d Èþž%†o @  €Šý?d ÿžÀm ‡ @  ‘€‹ý?d Hÿž~³¦ @  ’€Œý?d ˆÿž&‹±X @  “€uПý?d ÈÿžWúe @  ” Žý?d ŸN7” @  • ý?d `Ÿ#~ @  – ý?d  Ÿè € @  — ‘ý?d àŸ=%¨ƒ @  ˜ ’ý?d Ÿím$k @  ™ “ý?d `Ÿ+~J @  š ”ý?d  Ÿ ‹Ÿ´ @  › •ý?d àŸ>½ž  @  œ –ý?d Ÿ£ù>á @   —ý?d `Ÿýúdç @  ž ˜ý?d  ŸÝf @  Ÿ ™ý?d àŸ_eÚJ @    šý?d Ÿ-V¢ @  ¡ ›ý?d `ŸI>ïƒ @  ¢ œý?d  ŸiËí} @  £ ý?d àŸ\ýìé @  ¤ žý?d ŸE³æ @  ¥ Ÿý?d `ŸãWÐ @  ¦  ý?d  Ÿâ. @  § ¡ý?d àŸýo¹- @  ¨ ¢ý?d Ÿ-'5Å @  © £ý?d `Ÿë4Œä @  ª ¤ý?d  ŸËÁŽ @  « ¥ý?d àŸþ÷Ž @  ¬ ¦ý?d Ÿc³/O @  ­ §ý?d `Ÿ=°uI @  ® ¨ý?d  ŸEw· @  ¯ ©ý?d àŸŽ)ìT @  ° ªý?d Ÿ^a`¼ @  ± «ý?d `Ÿ˜rÙ @  ² ¬ý?d  Ÿ¸‡Ûc @  ³ ­ý?d àŸ±Ú÷ @  ´ ®ý?d Ÿ¹NVê @  µ ¯ý?d `Ÿ‚n @  ¶ °ý?d  Ÿ¢èlþ @  · ±ý?d àŸœ%Éý @  ¸ ²ý?d ŸLmE @  ¹ ³ý?d ` ŸŠ~ü4 @  º ´ý?d   Ÿª‹þÊ @  » µý?d à ŸŸ½ÿ^ @  ¼ ¶ý?d Ÿù_Ÿ @  ½ ·ý?d ` Ÿ\ú™ @  ¾ ¸ý?d   Ÿ|g @  ¿ ¹ý?d à ŸPb½¦ @  À ºý?d Ÿ€*1N @  Á »ý?d ` ŸF9ˆo @   ¼ý?d   ŸfÌŠ‘ @  à ½ý?d à ŸSú‹ @  Ä ¾ý?d ŸJ´x  @  Å ¿ý?d ` Ÿl- @  Æ Àý?d   Ÿ<õnÓ @  Ç Áý?d à Ÿ8ËÐ @  È Âý?d ŸÒpG8 @  É Ãý?d ` Ÿcþ @  Ê Äý?d   Ÿ4–üç @  Ë Åý?d à Ÿ ýs @  Ì Æý?d Ÿœä]² @  Í Çý?d `ŸÂç´ @  Î Èý?d  ŸâJ @  Ï Éý?d àŸq~ž© @  Ð Êý?d Ÿ¡6A @  Ñ Ëý?d `Ÿg%«` @  Ò Ìý?d  ŸGЩž @  Ó Íý?d àŸræ¨  @  Ô Îý?d ŸÌ8¸ @  Õ Ïý?d `Ÿ÷k,R @  Ö Ðý?d  Ÿמ.¬ @  × Ñý?d àŸéS‹¯ @  Ø Òý?d Ÿ9G @  Ù Óý?d `Ÿÿ¾f @  Ú Ôý?d  Ÿßý¼˜ @  Û Õý?d àŸê˽  @  Ü Öý?d ŸwÍ @  Ý ×ý?d `Ÿ)ŒGË @  Þ Øý?d  Ÿ yE5 @  ß Ùý?d àŸ‹ùf @  à Úý?d Ÿ[[uŽ @  á Ûý?d `ŸH̯ @  â Üý?d€  Ÿ|ú9Q @   Ýý?d àŸ¨pì @   Þý?d Ÿ±Ãƒã @   ßý?d `ŸÒny8 @   àý?d  Ÿò›{Æ @   áý?d àŸä¿ @   âý?d ŸÒ¬ W @   ãý?d `ŸÚ ë  @   äý?d  Ÿúøéò @   åý?d àŸ ‡‹ @   æý?d Ÿ—óJ @   çý?d `Ÿ ‰¡ @   èý?d  Ÿ,|_ @   éý?d àŸÜê& @   êý?d Ÿ KfÎ @   ëý?d `Ÿ©K¾u @   ìý?d  Ÿ‰¾¼‹ @   íý?d àŸyÁFò @   îý?d ŸM>Êï @   ïý?d `Ÿ³$ è @   ðý?d  Ÿ“Ñ  @   ñý?d àŸc®ño @   òý?d Ÿ³æ}‡ @   óý?d `Ÿ»G›Ü @   ôý?d  Ÿ›²™" @   õý?d àŸkÍc[ @   öý?d Ÿö‰Ãš @   ÷ý?d `ŸmÃbq @   øý?d  ŸM6` @   ùý?d àŸ½Išö @   úý?d Ÿm @   ûý?d `ŸÙé @   üý?d  Ÿùòëë @  ! ýý?d àŸ ’ @  " þý?d ŸÃâ @  # ÿý?d `ŸS½9ì @  $ þ?d  ŸsH; @  % þ?d àŸƒ7Ák @  & þ?d ŸSMƒ @  ' þ?d `Ÿ[Þ«Ø @  ( þ?d  Ÿ{+©& @  ) þ?d àŸ‹TS_ @  * þ?d Ÿóž @  + þ?d `ŸZRu @  , þ?d  Ÿ­¯P‹ @  -  þ?d àŸ]Ъò @  .  þ?d Ÿ˜& @  /  þ?d `Ÿ(˜þ¡ @  0  þ?d  Ÿmü_uÐ Ÿ @  1  þ?d àŸÁÕÚó @  2þ?d 8 Ÿ°Þ• @  3þ?d x ŸNÄÇ’ @  4þ?d ¸ Ÿn1Ål @  5þ?d ø ŸžN? @  6þ?d 8!ŸN³ý @  7þ?d x!ŸF§U¦ @  8þ?d ¸!ŸfRWX @  9þ?d ø!Ÿ–-­! @  :þ?d 8"Ÿ i à @  ;þ?d x"Ÿ#¬  @  <þ?d ¸"Ÿ°Ö®õ @  =þ?d ø"Ÿ@©TŒ @  >þ?d 8#ŸáØd @  ?þ?d x#ŸŠà!ý @  @þ?d ¸#Ÿª# @  Aþ?d ø#ŸZjÙz @  Bþ?d 8$ŸC$*u @  Cþ?d x$Ÿ ‰Ð® @  D þ?d ¸$Ÿ|ÒP @  E!þ?d ø$Ÿð() @  F"þ?d 8%Ÿ K¤Á @  G#þ?d x%Ÿ(êBš @  H$þ?d ¸%Ÿ@d @  I%þ?d ø%Ÿø`º @  J&þ?d 8&Ÿe$Ü @  K'þ?d x&Ÿþn»7 @  L(þ?d ¸&ŸÞ›¹É @  M)þ?d ø&Ÿ.äC° @  N*þ?d 8'Ÿþ¬ÏX @  O+þ?d x'Ÿ[¬ã @  P,þ?d ¸'Ÿ{Y @  Q-þ?d ø'Ÿ‹&ïd @  R.þ?d 8(Ÿ¿Ùcy @  S/þ?d x(ŸAà~ @  T0þ?d ¸(Ÿa6¢€ @  U1þ?d ø(Ÿ‘IXù @  V2þ?d 8)ŸAÔ @  W3þ?d x)ŸI 2J @  X4þ?d ¸)ŸiU0´ @  Y5þ?d ø)Ÿ™*ÊÍ @  Z6þ?d 8*Ÿnj  @  [7þ?d x*ŸŸ$Ëç @  \8þ?d ¸*Ÿ¿ÑÉ @  ]9þ?d ø*ŸO®3` @  ^:þ?d 8+ŸŸæ¿ˆ @  _;þ?d x+Ÿ+à@ƒ @  `<þ?d ¸+Ÿ B} @  a=þ?d ø+Ÿûj¸ @  b>þ?d 8,Ÿâ$K  @  c?þ?d x,ŸqÙ¤Á @  d@þ?d ¸,ŸQ,¦? @  eAþ?d ø,Ÿ¡S\F @  fBþ?d 8-ŸqЮ @  gCþ?d x-Ÿyº6õ @  hDþ?d ¸-ŸYO4  @  iEþ?d ø-Ÿ©0Îr @  jFþ?d 8.Ÿ4tn³ @  kGþ?d x.Ÿ¯>ÏX @  lHþ?d ¸.ŸËͦ @  mIþ?d ø.Ÿ´7ß @  nJþ?d 8/Ÿ¯ü»7 @  oKþ?d x/Ÿ ücŒ @  pLþ?d ¸/Ÿ* ar @  qMþ?d ø/ŸÚv›  @  rNþ?d 80Ÿd¨'¹ @  sOþ?d x0Ÿš²ä¾ @  tPþ?d ¸0ŸºGæ@ @  uQþ?d ø0ŸJ89 @  vRþ?d 81ŸšpÑ @  wSþ?d x1Ÿ’ÑvŠ @  xTþ?d ¸1Ÿ²$tt @  yUþ?d ø1ŸB[Ž  @  zVþ?d 82Ÿß.Ì @  {Wþ?d x2ŸDU' @  |Xþ?d ¸2Ÿd Ù @  }Yþ?d ø2Ÿ”ßw  @  ~Zþ?d 83ŸD—ûH @  [þ?d x3Ÿ½À2à @  €\þ?d ¸3Ÿ50 @  ]þ?d ø3ŸmJÊg @  ‚^þ?d 84Ÿt9h @  ƒ_þ?d x4Ÿ©Ã³ @  „`þ?d ¸4Ÿ7\ÁM @  …aþ?d ø4ŸÇ#;4 @  †bþ?d 85Ÿk·Ü @  ‡cþ?d x5ŸÊQ‡ @  ˆdþ?d ¸5Ÿ??Sy @  ‰eþ?d ø5ŸÏ@© @  Šfþ?d 86ŸR Á @  ‹gþ?d x6ŸÉN¨* @  Œhþ?d ¸6Ÿ黪Ô @  iþ?d ø6ŸÄP­ @  Žjþ?d 87ŸÉŒÜE @  kþ?d x7ŸlŒþ @  lþ?d ¸7ŸLy @  ‘mþ?d ø7Ÿ¼üy @  ’nþ?d 88Ÿˆùpd @  “oþ?d x8Ÿvã³c @  ”pþ?d ¸8ŸV± @  •qþ?d ø8Ÿ¦iKä @  –rþ?d 89Ÿv!Ç  @  —sþ?d x9Ÿ~€!W @  ˜tþ?d ¸9Ÿ^u#© @  ™uþ?d ø9Ÿ® ÙÐ @  švþ?d 8:Ÿ3Ny @  ›wþ?d x:Ÿ¨Øú @  œxþ?d ¸:ŸˆñÚ @  yþ?d ø:ŸxŽ } @  žzþ?d 8;Ÿ¨Æ¬• @  Ÿ{þ?d x;ŸÀSž @   |þ?d ¸;Ÿ<5Q` @  ¡}þ?d ø;ŸÌJ« @  ¢~þ?d 8<ŸÕX @  £þ?d x<Ÿ[?ãN @  ¤€þ?d ¸<Ÿ{Êá° @  ¥þ?d ø<Ÿ‹µÉ @  ¦‚þ?d 8=Ÿ[ý—! @  §ƒþ?d x=ŸS\qz @  ¨„þ?d ¸=Ÿs©s„ @  ©…þ?d ø=ŸƒÖ‰ý @  ª†þ?d 8>Ÿ’)< @  «‡þ?d x>Ÿ…؈× @  ¬ˆþ?d ¸>Ÿ¥-Š) @  ­‰þ?d ø>ŸURpP @  ®Šþ?d 8?Ÿ…ü¸ @  ¯‹þ?d x?Ÿ $ @  °Œþ?duÐ@Ÿ7 ¸?Ÿï&ý @  ±þ?d ø?ŸðÜ„ @  ²Žþ?d P@Ÿ3ø @  â¾þ?d€ PLŸ5€ @  ¿þ?d LŸÅ݇C @  Àþ?d ÐLŸGL @  Áþ?d MŸ £ ? @  Âþ?d PMŸ¢2á @  Ãþ?d MŸÆE±à @  Äþ?d ÐMŸDÔ¦> @  Åþ?d NŸeÌ´" @  Æþ?d PNŸç]£ü @   Çþ?d NŸ:ìÚ @   Èþ?d ÐNŸ™«û @   Éþ?d OŸþDa¦ @   Êþ?d POŸ|Õvx @   Ëþ?d OŸ¢Úy @  Ìþ?d ÐOŸš3ͧ @  Íþ?d PŸ5ý( @  Îþ?d PPŸ·êö @  Ïþ?d PŸ.¶Ç< @  Ðþ?d ÐPŸ¬'Ðâ @  Ñþ?d QŸËÈJ@ @  Òþ?d PQŸIY]ž @  Óþ?d QŸ-.ñŸ @  Ôþ?d ÐQŸ¯¿æA @  Õþ?d RŸާô] @  Öþ?d PRŸ 6ム@  ×þ?d RŸðQ¬¥ @  Øþ?d ÐRŸrÀ»{ @  Ùþ?d SŸ/!Ù @  Úþ?d PSŸ—¾6 @  Ûþ?d SŸóÉš @  Üþ?d ÐSŸqXØ @  Ýþ?d TŸhíÕZ @   Þþ?d PTŸê|„ @  !ßþ?d TŸîüÖ’ @  "àþ?d ÐTŸlmÁL @  #áþ?d UŸ ‚[î @  $âþ?d PUŸ‰L0 @  %ãþ?d UŸídà1 @  &äþ?d ÐUŸoõ÷ï @  'åþ?d VŸNíåó @  (æþ?d PVŸÌ|ò- @  )çþ?d VŸ0½  @  *èþ?d ÐVŸ²ŠªÕ @  +éþ?d WŸÕe0w @  ,êþ?d PWŸWô'© @  -ëþ?d WŸ3ƒ‹¨ @  .ìþ?d ÐWŸ±œv @  /íþ?d XŸ”œV @  0îþ?d PXŸ‹ˆ @  1ïþ?d XŸ¶¦B @  2ðþ?d ÐXŸ '±œ @  3ñþ?d YŸjÈ+> @  4òþ?d PYŸèY<à @  5óþ?d YŸŒ.á @  6ôþ?d ÐYŸ¿‡? @  7õþ?d ZŸ/§•# @  8öþ?d PZŸ­6‚ý @  9÷þ?d ZŸQQÍÛ @  :øþ?d ÐZŸÓÀÚ @  ;ùþ?d [Ÿ´/@§ @  <úþ?d P[Ÿ6¾Wy @  =ûþ?d [ŸRÉûx @  >üþ?d Ð[ŸÐXì¦ @  ?ýþ?d \Ÿgê²¶ @  @þþ?d P\Ÿå{¥h @  Aÿþ?d \Ÿs ¥ñ @  Bÿ?d Ð\Ÿñ›²/ @  Cÿ?d ]Ÿ–t( @  Dÿ?d P]Ÿå?S @  Eÿ?d ]Ÿp’“R @  Fÿ?d Ð]Ÿò„Œ @  Gÿ?d ^ŸÓ– @  Hÿ?d P^ŸQŠN @  Iÿ?d ^Ÿ­íÎh @  Jÿ?d Ð^Ÿ/|Ù¶ @  K ÿ?d _ŸH“C @  L ÿ?d P_ŸÊTÊ @  M ÿ?d _Ÿ®uøË @  uÐ`ŸN ÿ?d Ð_Ÿ#3À @  O  ÿ?d (`Ÿº& e @  P ÿ?d h`Ÿ8·» @  Q ÿ?d ¨`Ÿ¡€0q @  R ÿ?d è`Ÿ#'¯ @  S ÿ?d (aŸDþ½  @  T ÿ?d haŸÆoªÓ @  U ÿ?d ¨aŸ¢Ò @  V ÿ?d èaŸ ‰  @  W ÿ?d (bŸ‘ @  X ÿ?d hbŸƒÎ @  Y ÿ?d ¨bŸg[è @  Z ÿ?d èbŸýöL6 @  [ ÿ?d (cŸšÖ” @  \ ÿ?d hcŸˆÁJ @  ] ÿ?d ¨cŸ|ÿmK @  ^ ÿ?d ècŸþnz• @  _ ÿ?d (dŸçÛ" @  ` ÿ?d hdŸeJ5É @  a ÿ?d ¨dŸaÊ!ß @  b  ÿ?d èdŸã[6 @  c !ÿ?d (eŸ„´¬£ @  d "ÿ?d heŸ%»} @  e #ÿ?d ¨eŸbR| @  f $ÿ?d èeŸàâ @  g %ÿ?d (fŸÁÛ¾ @  h &ÿ?d hfŸCJ` @  i 'ÿ?d ¨fŸ¿-JF @  j (ÿ?d èfŸ=¼]˜ @  k )ÿ?d (gŸZSÇ: @  l *ÿ?d hgŸØÂÐä @  m +ÿ?d ¨gŸ¼µ|å @  n ,ÿ?d ègŸ>$k; @  o -ÿ?d (hŸ&k @  p .ÿ?d hhŸ™·|Å @  q /ÿ?d ¨hŸ€Q @  r 0ÿ?d èhŸ‚FÑ @  s 1ÿ?d (iŸåþÜs @  t 2ÿ?d hiŸgoË­ @  u 3ÿ?d ¨iŸg¬ @  v 4ÿ?d èiŸ‰pr @  w 5ÿ?d (jŸ ‘bn @  x 6ÿ?d hjŸ"u° @  y 7ÿ?d ¨jŸÞg:– @  z 8ÿ?d èjŸ\ö-H @  { 9ÿ?d (kŸ;·ê @  | :ÿ?d hkŸ¹ˆ 4 @  } ;ÿ?d ¨kŸÝÿ 5 @  ~ <ÿ?d èkŸ_në @   =ÿ?d (lŸ ŠuÊ @  € >ÿ?d hlŸ‰b @   ?ÿ?d ¨lŸ}Ëc @  ‚ @ÿ?d èlŸÿZtÍ @  ƒ Aÿ?d (mŸ˜µîo @  „ Bÿ?d hmŸ$ù± @  … Cÿ?d ¨mŸ~SU° @  † Dÿ?d èmŸüÂBn @  ‡ Eÿ?d (nŸÝÚPr @  ˆ Fÿ?d hnŸ_KG¬ @  ‰ Gÿ?d ¨nŸ£,Š @  Š Hÿ?d ènŸ!½T @  ‹ Iÿ?d (oŸFR…ö @  Œ Jÿ?d hoŸÄÃ’( @   Kÿ?d ¨oŸ ´>) @  Ž Lÿ?d èoŸ"%)÷ @   Mÿ?d (pŸx @   Nÿ?d hpŸ—¦ @  ‘ Oÿ?d ¨pŸ– #l @  ’ Pÿ?d èpŸ14² @  “ Qÿ?d (qŸsÞ® @  ” Rÿ?d hqŸñO¹Î @  • Sÿ?d ¨qŸ•8Ï @  – Tÿ?d èqŸ© @  — Uÿ?d (rŸ6±  @  ˜ Vÿ?d hrŸ´ Ó @  ™ Wÿ?d ¨rŸHGHõ @  š Xÿ?d èrŸÊÖ_+ @  › Yÿ?d (sŸ­9ʼn @  œ Zÿ?d hsŸ/¨ÒW @   [ÿ?d ¨sŸKß~V @  ž \ÿ?d èsŸÉNiˆ @  Ÿ ]ÿ?d (tŸÐû1  @    ^ÿ?d htŸRj&Ô @  ¡ _ÿ?d ¨tŸVê2 @  ¢ `ÿ?d ètŸÔ{% @  £ aÿ?d (uŸ³”¿¾ @  ¤ bÿ?d huŸ1¨` @  ¥ cÿ?d ¨uŸUra @  ¦ dÿ?d èuŸ×ã¿ @  § eÿ?d (vŸöû£ @  ¨ fÿ?d hvŸtj} @  © gÿ?d ¨vŸˆ Y[ @  ª hÿ?d èvŸ œN… @  « iÿ?d (wŸmsÔ' @  ¬ jÿ?d hwŸïâÃù @  ­ kÿ?d ¨wŸ‹•oø @  ® lÿ?d èwŸ x& @  ¯ mÿ?d (xŸ,x @  ° nÿ?d hxŸ®—oØ @  ± oÿ?d ¨xŸ7 B @  ² pÿ?d èxŸµ1UÌ @  ³ qÿ?d (yŸÒÞÏn @  ´ rÿ?d hyŸPOذ @  µ sÿ?d ¨yŸ48t± @  ¶ tÿ?d èyŸ¶©co @  · uÿ?d (zŸ—±qs @  ¸ vÿ?d hzŸ f­ @  ¹ wÿ?d ¨zŸéG)‹ @  º xÿ?d èzŸkÖ>U @  » yÿ?d ({Ÿ 9¤÷ @  ¼ zÿ?d h{Ÿލ³) @  ½ {ÿ?d ¨{Ÿêß( @  ¾ |ÿ?d è{ŸhNö @  ¿ }ÿ?d (|ŸßüVæ @  À ~ÿ?d h|Ÿ]mA8 @  Á ÿ?d ¨|Ÿ´{­ @   €ÿ?d è|Ÿ6ês @  à ÿ?d (}ŸQ™Ñ @  Ä ‚ÿ?d h}ŸÓ”Ž @  Å ƒÿ?d ¨}Ÿ·ã" @  Æ „ÿ?d è}Ÿ5r5Ð @  Ç …ÿ?d (~Ÿj'Ì @  È †ÿ?d h~Ÿ–û0 @  É ‡ÿ?d ¨~Ÿjœ4 @  Ê ˆÿ?d è~Ÿè hê @  Ë ‰ÿ?d (ŸâòH @  Ì Šÿ?d hŸ så– @  Í ‹ÿ?d ¨ŸuЀŸ'iI— @  Î Œÿ?d èŸûeI @  Ïÿ?d @€Ÿo¸  @  ÐŽÿ?d €€ŸOM þ @  Ñÿ?d À€Ÿt1 @  Òÿ?d Ÿ¤V½ü @  Ó‘ÿ?d @Ÿ‘`¼h @  Ô’ÿ?d €Ÿ±•¾– @  Õ“ÿ?d ÀŸw†· @  Ö”ÿ?d ‚Ÿê§v @  ×•ÿ?d @‚ŸÔu @  Ø–ÿ?d €‚Ÿôú‹ @  Ù—ÿ?d À‚ŸªùZ @  Ú˜ÿ?d ƒŸz±Öe @  Û™ÿ?d @ƒŸO‡×ñ @  Üšÿ?d €ƒŸorÕ @  Ý›ÿ?d ÀƒŸ©al. @  Þœÿ?d „Ÿ°/Ÿ! @  ßÿ?d @„Ÿ2E#r @  àžÿ?d €„Ÿ°!Œ @  áŸÿ?d À„Ÿ´T º @  â ÿ?d€ …Ÿ\b^r @   ¡ÿ?d @…ŸˆÏ @   ¢ÿ?d €…Ÿ¨à1 @   £ÿ?d À…Ÿ«ºWý @   ¤ÿ?d †Ÿ6þ÷< @   ¥ÿ?d @†ŸÆ E @   ¦ÿ?d €†Ÿæt» @   §ÿ?d À†ŸvÅ Ç @   ¨ÿ?d ‡Ÿ¦†/ @    ©ÿ?d @‡ŸVò|V @    ªÿ?d €‡Ÿv~¨ @    «ÿ?d À‡Ÿu]k @   ·ÿ?d ÀŠŸz @   ¸ÿ?d ‹ŸÇÇöÿ @   ¹ÿ?d @‹Ÿ7¸ † @   ºÿ?d €‹ŸMx @   »ÿ?d À‹ŸL´ @   ¼ÿ?d ŒŸ Y¿» @   ½ÿ?d @ŒŸý&E @   ¾ÿ?d €ŒŸÝÓG< @   ¿ÿ?d ÀŒŸùr1 @    Àÿ?d Ÿ):™Ù @   !Áÿ?d @ŸÙEc  @   "Âÿ?d €Ÿù°a^ @   #Ãÿ?d ÀŸúê#’ @   $Äÿ?d ŽŸg®ƒS @   %Åÿ?d @ŽŸ—Ñy* @   &Æÿ?d €ŽŸ·${Ô @   'Çÿ?d ÀŽŸ'•~¨ @   (Èÿ?d Ÿ÷Ýò@ @   )Éÿ?d @Ÿ¢9 @   *Êÿ?d €Ÿ'W Ç @   +Ëÿ?d ÀŸ$ H  @   ,Ìÿ?d ŸšÓô¹ @   -Íÿ?d @Ÿj¬À @   .Îÿ?d €ŸJY > @   /Ïÿ?d ÀŸUN @   0Ðÿ?d ‘ŸÂQÙ¦ @   1Ñÿ?d @‘Ÿ2.#ß @   2Òÿ?d €‘ŸÛ!! @   3Óÿ?d À‘Ÿcí @   4Ôÿ?d ’ŸŒÅÃ, @   5Õÿ?d @’Ÿ|º9U @   6Öÿ?d €’Ÿ\O;« @   7×ÿ?d À’ŸÌþ>× @   8Øÿ?d “Ÿ¶²? @   9Ùÿ?d @“ŸìÉHF @   :Úÿ?d €“ŸÌÞÿ?d €”Ÿ¢ü @   ?ßÿ?d À”Ÿ|TBr @   @àÿ?d •Ÿ¬Κ @   Aáÿ?d @•Ÿ\c4ã @   Bâÿ?d €•Ÿ|–6 @   Cãÿ?d À•ŸÌtÑ @   Däÿ?d –ŸâˆÔ @   Eåÿ?d @–Ÿ÷.i @   Fæÿ?d €–Ÿ2,— @   Gçÿ?d À–Ÿ¢³)ë @   Hèÿ?d —Ÿrû¥ @   Iéÿ?d @—Ÿ‚„_z @   Jêÿ?d €—Ÿ¢q]„ @   Këÿ?d À—Ÿ¡+H @   Lìÿ?d ˜Ÿ•Ô“U @   Míÿ?d @˜Ÿe«i, @   Nîÿ?d €˜ŸE^kÒ @   Oïÿ?d À˜Ÿ2¢ @   Pðÿ?d ™ŸÍV¾J @   Qñÿ?d @™Ÿ=)D3 @   Ròÿ?d €™ŸÜFÍ @   Sóÿ?d À™Ÿ† @   Tôÿ?d šŸƒÂ¤À @   Uõÿ?d @šŸs½^¹ @   Vöÿ?d €šŸSH\G @   W÷ÿ?d ÀšŸÃùY; @   Xøÿ?d ›Ÿ±ÕÓ @   Yùÿ?d @›ŸãÎ/ª @   Zúÿ?d €›ŸÃ;-T @   [ûÿ?d À›ŸÀao˜ @   \üÿ?d œŸÙ/œ— @   ]ýÿ?d @œŸ)Pfî @   ^þÿ?d €œŸ ¥d @   _ÿÿ?d ÀœŸU°ú @   `?d Ÿ…øvì @   a?d @Ÿu‡Œ• @   b?d €ŸUrŽk @   c?d ÀŸV(̧ @   d?d žŸËllf @   e?d @žŸ;– @   f?d €žŸæ”á @   g?d ÀžŸ‹W‘ @   h?d ŸŸ[u @   i ?d @ŸŸ«`ç  @   j ?d €ŸŸ‹•åò @   k uРŸ?d ÀŸŸˆÏ§> @   l ?d  Ÿ;mž @   m ?d X ŸËdô @   n?d ˜ Ÿëçf  @   o?d Ø Ÿ³§?z @   p?d ¡Ÿcï³’ @   q?d X¡Ÿ“Ië @   r?d ˜¡Ÿ³eK @   s?d Ø¡Ÿ°? Ù @   t?d ¢Ÿ-{© @   u?d X¢ŸÝSa @   v?d ˜¢ŸýñQŸ @   w?d Ø¢Ÿm@Tã @   x?d £Ÿ½Ø  @   y?d X£ŸMw"r @   z?d ˜£Ÿm‚ Œ @   {?d Ø£ŸnØb@ @   |?d ¤Ÿw–‘O @   }?d X¤Ÿ‡ék6 @   ~?d ˜¤Ÿ§iÈ @   ?d ؤŸ>¼w @   € ?d ¥Ÿîô”Ÿ @   !?d X¥Ÿ‹næ @   ‚"?d ˜¥Ÿ>~l @   ƒ#?d Ø¥Ÿ=$.Ô @   „$?d ¦Ÿ `Ž @   …%?d X¦ŸPtl @   †&?d ˜¦Ÿpêv’ @   ‡'?d ئŸà[sî @   ˆ(?d §Ÿ0ÿ @   ‰)?d X§ŸÀl @   Š*?d ˜§Ÿà™ @   ‹+?d اŸãÃEM @   Œ,?d ¨Ÿ×<ÉP @   -?d X¨Ÿ'C3) @   Ž.?d ˜¨Ÿ¶1× @   /?d بŸ_öh§ @   0?d ©Ÿ¾äO @   ‘1?d X©ŸÁ6 @   ’2?d ˜©Ÿ_4È @   “3?d Ø©Ÿ\n^ @   ”4?d ªŸÁ*þÅ @   •5?d XªŸ1U¼ @   –6?d ˜ªŸ B @   —7?d تŸ> @   ˜8?d «ŸQYÖ @   ™9?d X«Ÿ¡&u¯ @   š:?d ˜«ŸÓwQ @   ›;?d Ø«Ÿ‚‰5 @   œ<?d ¬Ÿ›ÇÆ’ @   =?d X¬Ÿk¸<ë @   ž>?d ˜¬ŸKM> @   Ÿ??d جŸoìl @    @?d ­Ÿ¿¤àð @   ¡A?d X­ŸOÛ‰ @   ¢B?d ˜­Ÿo.w @   £C?d Ø­ŸltZ» @   ¤D?d ®Ÿñ0úz @   ¥E?d X®ŸO @   ¦F?d ˜®Ÿ!ºý @   §G?d Ø®Ÿ±  @   ¨H?d ¯ŸaC‹i @   ©I?d X¯Ÿ‘k @  !€ž?d °ÄŸ®é<• @  !€Ÿ?d ðÄŸ =£ @  !€ ?d 0ÅŸØE±K @  !€¡?d pÅŸZ/  @  ! €¢?d °ÅŸzÚæ @  !!€£?d ðÅŸ¼É¶Ç @  !"€¤?d 0ÆŸ! @  !#€¥?d pÆŸ»’ @  !$€¦?d °ÆŸ4Nl @  !%€§?d ðÆŸjMOj @  !&€¨?d 0ÇŸºÂ @  !'€©?d pÇŸ„Èf @  !(€ª?d °ÇŸ¤=d @  !)€«?d ðÇŸb.Ý^ @  !*€¬?d 0ÈŸVÑQC @  !+€­?d pÈŸcçP× @  !,€®?d °ÈŸCR) @  !-€¯?d ðÈŸxAjà @  !.€°?d 0ÉŸ¨ æ+ @  !/€±?d pÉŸ;e}È @  !0€²?d °ÉŸ6 @  !1€³?d ðÉŸ݃Æ @  !2€´?d 0ÊŸ@ÇfÖ @  !3€µ?d pÊŸuñgB @  !4€¶?d °ÊŸUe¼ @  !5€·?d ðÊŸ ?º @  !6€¸?d 0ËŸÛO³R @  !7€¹?d pËŸå‚Q @  !8€º?d °ËŸÅw¯ @  !9€»?d ðËŸd­Ž @  !:€¼?d 0ÌŸ*^ @  !;€½?d pÌŸ/_ @  !<€¾?d °ÌŸé]ë @  !=€¿?d ðÌŸY]IÌ @  !>€À?d 0ÍŸ‰Å$ @  !?€Á?d pÍŸ¥xå @  !@€Â?d °ÍŸ…} @  !A€Ã?d ðÍŸCžÄ: @  !B€Ä?d 0ΟÞÚdû @  !C€Å?d pΟëìeo @  !D€Æ?d °ÎŸËg‘ @  !E€Ç?d ðΟ•=— @  !F€È?d 0ÏŸER± @  !G€É?d pÏŸ{Ÿ| @  !H€Ê?d °ÏŸ[j‚ @  !I€Ë?d ðÏŸy¯£ @  !J€Ì?d 0П#§ @  !K€Í?d pП‘… @  !L€Î?d °ÐŸ6d{ @  !M€Ï?d ðП 7(‘ @  !N€Ð?d 0џݤy @  !O€Ñ?d pÑŸN?š @  !P€Ò?d °ÑŸnæ=d @  !Q€Ó?d ðÑŸ¨õ„E @  !R€Ô?d 0ÒŸ5±$„ @  !S€Õ?d pÒŸ‡% @  !T€Ö?d °ÒŸ r'î @  !U€×?d ðÒŸ~q}è @  !V€Ø?d 0ÓŸ®9ñ @  !W€Ù?d pÓŸôT @  !X€Ú?d °ÓŸ°Vý @  !Y€Û?d ðÓŸvïÜ @  !Z€Ü?d 0ÔŸo\Ó @  ![€Ý?d pÔŸZjG @  !\€Þ?d °ÔŸzŸ¹ @  !]€ß?d ðÔŸÜ{ @  !^€à?d 0ÕŸ 3’g @  !_€á?d pÕŸŽY.4 @  !`€â?d °ÕŸ®¬,Ê @  !a€ã?d ðÕŸh¿•ë @  !b€ä?d 0ÖŸõû5* @  !c€å?d pÖŸÀÍ4¾ @  !d€æ?d °ÖŸà86@ @  !e€ç?d ðÖŸ¾;lF @  !f€è?d 0ןnsà® @  !g€é?d pןP¾E­ @  !h€ê?d °×ŸpKGS @  !i€ë?d ðן¶Xþr @  !j€ì?d 0ØŸ‚§ro @  !k€í?d pØŸ·‘sû @  !l€î?d °ØŸ—dq @  !m€ï?d ðØŸ¬7Iï @  !n€ð?d 0ÙŸ|Å @  !o€ñ?d pÙŸï^ä @  !p€ò?d °ÙŸÏæ\ @  !q€ó?d ðÙŸ õå; @  !r€ô?d 0ÚŸ”±Eú @  !s€õ?d pÚŸ¡‡Dn @  !t€ö?d °ÚŸrF @  !u€÷?d ðÚŸßq– @  !v€ø?d 0ÛŸ9~ @  !w€ù?d pÛŸ1ô5} @  !x€ú?d °ÛŸ7ƒ @  !y€û?d ð۟׎¢ @  !z€ü?d 0ÜŸÎ\}­ @  !{€ý?d pÜŸûj|9 @  !|€þ?d °ÜŸÛŸ~Ç @  !}€ÿ?d ðÜŸïŠk~ @  !~€?d 0ÝŸ?Âç– @  !€?d pÝŸðùmf @  !€€?d °ÝŸÐ o˜ @  !€?d ðÝŸÖ¹ @  !‚€?d 0ÞŸ‹[vx @  !ƒ€?d pÞŸ¾mwì @  !„€?d °ÞŸž˜u @  !…€?d ðÞŸÀ›/ @  !†€?d 0ߟÓ£ü @  !‡€ ?d pߟ.ÿ @  !ˆ€ ?d uÐàŸ/°ßŸë @  !‰€ ?d ðߟµxÎ\ @  !Š ?d HàŸ¬Üª @  !‹ ?d ˆàŸ;Ž„ @  !Œ?d ÈàŸ¹“À @  !?d áŸЕ0 @  !Ž?d HáŸR' @  !?d ˆáŸc © @  !?d ÈáŸá¾ß @  !‘?d âŸ8[°á @  !’?d H⟺ʧ? @  !“?d ˆâŸ-˜³‹ @  !”?d È⟯ ¤U @  !•?d 㟣Óee @  !–?d HãŸ!Br» @  !—?d ˆãŸ½ë˜ @  !˜?d ÈãŸ?zÕF @  !™?d äŸb¶ˆ¶ @  !š?d HäŸà'Ÿh @  !›?d ˆäŸwu‹Ü @  !œ?d ÈäŸõäœ @  !?d åŸÙ @  !ž ?d H埃HÜ @  !Ÿ!?d ˆåŸ£F¸¯ @  ! "?d ÈåŸ!ׯq @  !¡#?d æŸø¡O @  !¢$?d HæŸz€¶‘ @  !£%?d ˆæŸíÒ¢% @  !¤&?d ÈæŸoCµû @  !¥'?d çŸc™tË @  !¦(?d HçŸác @  !§)?d ˆçŸ}¡Ó6 @  !¨*?d ÈçŸÿ0Äè @  !©+?d èŸMæ  @  !ª,?d HèŸ ÜñÔ @  !«-?d ˆèŸšŽå` @  !¬.?d ÈèŸò¾ @  !­/?d éŸq•Qb @  !®0?d HéŸóF¼ @  !¯1?d ˆéŸ È @  !°2?d ÈéŸ@ß¡ @  !±3?d ꟙ[ÑŸ @  !²4?d HêŸÊÆA @  !³5?d ˆêŸŒ˜Òõ @  !´6?d ÈêŸ Å+ @  !µ7?d ëŸÓ @  !¶8?d H럀BÅ @  !·9?d ˆëŸë£æ @  !¸:?d È럞z´8 @  !¹;?d ìŸöéÈ @  !º<?d HìŸA'þ @  !»=?d ˆìŸÖuê¢ @  !¼>?d ÈìŸTäý| @  !½??d íŸP‰rm @  !¾@?d HíŸÒe³ @  !¿A?d ˆíŸ\ÊR @  !ÀB?d ÈíŸހ݌ @  !ÁC?d îŸFÓ² @  !ÂD?d H×Äl @  !ÃE?d ˆîŸ…ÐØ @  !ÄF?d ÈîŸÇ @  !ÅG?d Î6 @  !ÆH?d HïŸ_è @  !ÇI?d ˆïŸ‚ö¡Ë @  !ÈJ?d ÈïŸg¶ @  !ÉK?d ðŸú;¤X @  !ÊL?d HðŸxª³† @  !ËM?d ˆðŸïø§2 @  !ÌN?d ÈðŸmi°ì @  !ÍO?d ñŸã0 @  !ÎP?d HñŸ†rî @  !ÏQ?d ˆñŸ·zŠ- @  !ÐR?d ÈñŸ5ëó @  !ÑS?d òŸì-“Í @  !ÒT?d HòŸn¼„ @  !ÓU?d ˆòŸùî§ @  !ÔV?d ÈòŸ{‡y @  !ÕW?d óŸw¥FI @  !ÖX?d HóŸõ4Q— @  !×Y?d ˆóŸiá´ @  !ØZ?d ÈóŸë öj @  !Ù[?d ôŸ¶À«š @  !Ú\?d HôŸ4Q¼D @  !Û]?d ˆôŸ£¨ð @  !Ü^?d ÈôŸ!’¿. @  !Ý_?d õŸÕ¯%. @  !Þ`?d HõŸW>2ð @  !ßa?d ˆõŸw0›ƒ @  !àb?d ÈõŸõ¡Œ] @  !ác?d öŸ,g‚c @  !âd?d€ HöŸo±b½ @  "e?d ˆöŸ¢>  @  "f?d ÈöŸ›3)þ @  "g?d ÷ŸR # @  "h?d H÷ŸÐ1ý @  "i?d ˆ÷Ÿ‚*ë¤ @  "j?d È÷Ÿ»üz @  "k?d øŸ¾tâ @  "l?d HøŸ<å–< @  " m?d ˆøŸnþye @  " n?d ÈøŸìon» @  " o?d ùŸ@¬6Š @  " p?d HùŸÂ=!T @  " q?d ˆùŸ&Î  @  "r?d ÈùŸ·ÙÓ @  "s?d úŸ¨b¶w @  "t?d HúŸ*ó¡© @  "u?d ˆúŸxèNð @  "v?d ÈúŸúyY. @  "w?d ûŸ3êcó @  "x?d HûŸ±{t- @  "y?d ˆûŸã`›t @  "z?d ÈûŸañŒª @  "{?d üŸòŽ  @  "|?d HüŸp™þ @  "}?d ˆüŸ"v§ @  "~?d ÈüŸ ”ay @  "?d ýŸ|vA @  "€?d HýŸþçVÉ @  "?d ˆýŸ¬ü¹ @  "‚?d ÈýŸ.m®N @  "ƒ?d þŸ…¾æZ @  " „?d HþŸ/ñ„ @  "!…?d ˆþŸU4Ý @  ""†?d ÈþŸ×¥  @  "#‡?d ÿŸ63Þ @  "$ˆ?d HÿŸœ§$ @  "%‰?d ˆÿŸμËY @  "&uРŠ?d ÈÿŸL-܇ @  "'‹?d  ãg³ @  "(Œ?d ` aöm @  ")?d   3íÿ4 @  "*Ž?d à ±|èê @  "+?d  ¿°Û @  ",?d ` Ÿ.§ @  "-‘?d   Í5H\ @  ".’?d à O¤_‚ @  "/“?d  õq0& @  "0”?d ` wà'ø @  "1•?d   %ûÈ¡ @  "2–?d à §jß @  "3—?d  nùå¢ @  "4˜?d ` ìhò| @  "5™?d   ¾s% @  "6š?d à <â û @  "7›?d  ¯œq @  "8œ?d ` - ¯ @  "9?d   ðö @  ":ž?d à ý‡ç( @  ";Ÿ?d  Ìó†Å @  "< ?d ` Nb‘ @  "=¡?d   y~B @  ">¢?d à žèiœ @  "?£?d  ›<' @  "@¤?d ` ­0Ä @  "A¥?d   K¶ß @  "B¦?d à É'ÈC @  "C§?d  ´òž @  "D¨?d ` ‚%å@ @  "E©?d   Ð>  @  "Fª?d à R¯Ç @  "G«?d  ì``_ @  "H¬?d ` nñw @  "I­?d   <ê˜Ø @  "J®?d à ¾{ @  "K¯?d  ¸×7 @  "L°?d `  )Àé @  "M±?d    Â2/° @  "N²?d à  @£8n @  "O³?d  úvWÊ @  "P´?d `  xç@ @  "Qµ?d    *ü¯M @  "R¶?d à  ¨m¸“ @  "S·?d  aþ‚N @  "T¸?d `  ão• @  "U¹?d    ±tzÉ @  "Vº?d à  3åm @  "W»?d   ›o @  "X¼?d `  " xC @  "Y½?d    p— @  "Z¾?d à  ò€€Ä @  "[¿?d  3¤ô8 @  "\À?d `  ±5ãæ @  "]Á?d    ã. ¿ @  "^Â?d à  a¿a @  "_Ã?d  ÊlSu @  "`Ä?d ` HýD« @  "aÅ?d   æ«ò @  "bÆ?d à ˜w¼, @  "cÇ?d  Qä†ñ @  "dÈ?d ` Óu‘/ @  "eÉ?d   n~v @  "fÊ?d à ÿi¨ @  "gË?d  7$Ÿ @  "hÌ?d ` µ€3A @  "iÍ?d   ç›Ü @  "jÎ?d à e ËÆ @  "kÏ?d  ÉÉ“÷ @  "lÐ?d ` KX„) @  "mÑ?d   Ckp @  "nÒ?d à ›Ò|® @  "oÓ?d  !  @  "pÔ?d ` £–Ô @  "qÕ?d   ñë @  "rÖ?d à süS @  "s×?d  ºÆŽ @  "tØ?d ` 8ÑP @  "uÙ?d   j>  @  "vÚ?d à è”)× @  "wÛ?d  {ê+] @  "xÜ?d ` ù{<ƒ @  "yÝ?d   «`ÓÚ @  "zÞ?d à )ñÄ @  "{ß?d  …¥é @  "|à?d ` š²7 @  "}á?d   È]n @  "~â?d à JžJ° @  "ã?d  ¬4 @  "€ä?d ` .#Ù @  "å?d   |–Ì€ @  "‚æ?d à þÛ^ @  "ƒç?d  7”რ@  "„è?d ` µö] @  "…é?d   ç @  "†ê?d à eÚ @  "‡ë?d  Û@sB @  "ˆì?d ` YÑdœ @  "‰í?d    ʋŠ@  "Šî?d à ‰[œ @  "‹ï?d  %˜Ä* @  "Œð?d ` § Óô @  "ñ?d   õ<­ @  "Žò?d à wƒ+s @  "ó?d  ÍVD× @  "ô?d ` OÇS  @  "‘õ?d   ܼP @  "’ö?d à ŸM«Ž @  "“÷?d  VÞ‘S @  "”ø?d ` ÔO† @  "•ù?d   †TiÔ @  "–ú?d à Å~  @  "—û?d  —»|€ @  "˜ü?d ` *k^ @  "™ý?d   G1„ @  "šþ?d à Å “Ù @  "›ÿ?d  ÔÓž @  "œ?d ` V–Ä@ @  "?d   + @  "ž?d à †<Ç @  "Ÿ?d  -ÏtÓ @  " ?d ` ¯^c  @  "¡?d   ýEŒT @  "¢?d à Ô›Š @  "£?d  ¶G¡W @  "¤?d ` 4Ö¶‰ @  "¥ ?d   fÍYÐuÐ   @  "¦ ?d à ä\N @  "§ ?d 8  gaí @  "¨ ?d x  öv3 @  "© ?d ¸  Ïí™j @  "ª?d ø  M|Ž´ @  "«?d 8! á¿Ö… @  "¬?d x! c.Á[ @  "­?d ¸! 15. @  "®?d ø! ³¤9Ü @  "¯?d 8"  qVx @  "°?d x" ‹àA¦ @  "±?d ¸" Ùû®ÿ @  "²?d ø" [j¹! @  "³?d 8# ’ùƒü @  "´?d x# h”" @  "µ?d ¸# Bs{{ @  "¶?d ø# Àâl¥ @  "·?d 8$ Sœn/ @  "¸?d x$ Ñ yñ @  "¹?d ¸$ ƒ–¨ @  "º?d ø$ ‡v @  "»?d 8% 0óà› @  "¼ ?d x% ²b÷E @  "½!?d ¸% ày @  "¾"?d ø% bè @  "¿#?d 8& glG @  "Æ*?d ø' ®¯{™ @  "Ç+?d 8( ` @  "È,?d x( ’ñß @  "É-?d ¸( Àêþ† @  "Ê.?d ø( B{éX @  "Ë/?d 8) i @  "Ì0?d x) l)¦· @  "Í1?d ¸) >2Iî @  "Î2?d ø) ¼£^0 @  "Ï3?d 8* v1” @  "Ð4?d x* „ç&J @  "Ñ5?d ¸* ÖüÉ @  "Ò6?d ø* TmÞÍ @  "Ó7?d 8+ þä @  "Ô8?d x+ oóÎ @  "Õ9?d ¸+ Mt— @  "Ö:?d ø+ Ïå I @  "×;?d 8, \› à @  "Ø<?d x, Þ  @  "Ù=?d ¸, ŒñD @  "Ú>?d ø, €æš @  "Û??d 8- Ϥ’f @  "Ü@?d x- M5…¸ @  "ÝA?d ¸- .já @  "ÞB?d ø- ¿}? @  "ßC?d 8. 6l5+ @  "àD?d x. ´ý"õ @  "áE?d ¸. ææÍ¬ @  "âF?d€ ø. ´ÆÔ @  #G?d 8/ 8f´  @  #H?d x/ º÷£þ @  #I?d ¸/ -¥·J @  #J?d ø/ ¯4 ” @  #K?d 80 Uh²Ù @  #L?d x0 ×ù¥ @  #M?d ¸0 KP$ @  #N?d ø0 ÉÁú @  # O?d 81  K¡& @  # P?d x1 "Ú¶ø @  # Q?d ¸1 µˆ¢L @  # R?d ø1 7µ’ @  # S?d 82 îß»¬ @  #T?d x2 lN¬r @  #U?d ¸2 ]F"± @  #V?d ø2 ß×5o @  #W?d 83 Ó ô_ @  #X?d x3 Qœã @  #Y?d ¸3 ÆÎ÷5 @  #Z?d ø3 D_àë @  #[?d 84 “½ @  #\?d x4 ›ªÅ @  #]?d ¸4 «æ @  #^?d ø4 …: 8 @  #_?d 85 q—8 @  #`?d x5 󖀿 @  #a?d ¸5 dÄ”R @  #b?d ø5 æUƒŒ @  #c?d 86 ?“² @  #d?d x6 ½šl @  #e?d ¸6  3 @  # f?d ø6 $Á @  #!g?d 87 Gåñ @  #"h?d x7 ‘Öò/ @  ##i?d ¸7 „æ› @  #$j?d ø7 „ñE @  #%k?d 88 ôhÓ§ @  #&l?d x8 vùÄy @  #'m?d ¸8 êPtZ @  #(n?d ø8 hÁc„ @  #)o?d 89 KÀX @  #*p?d x9 ƒÚ׆ @  #+q?d ¸9 ˆÃ2 @  #,r?d ø9 –Ôì @  #-s?d 8: OßÚÒ @  #.t?d x: ÍNÍ  @  #/u?d ¸: üFCÏ @  #0v?d ø: ~×T @  #1w?d 8; r •! @  #2x?d x; ðœ‚ÿ @  #3y?d ¸; gΖK @  #4z?d ø; å_• @  #5{?d 8< ¸“Üe @  #6|?d x< :Ë» @  #7}?d ¸< ¦«{˜ @  #8~?d ø< $:lF @  #9?d 8= =‘·Å @  #:€?d x= ¿  @  #;?d ¸= (R´¯ @  #<‚?d ø= ªÃ£q @  #=ƒ?d 8> s­O @  #>„?d x> ñ”º‘ @  #?…?d ¸> p @  #@†?d ø> ý ® @  #A‡?d 8? ñÖÞ @  #Bˆ?d x? sGÔ@ @  #C‰?duÐ@ 7 ¸? äÀô @  #DŠ?d ø? f„×* @  #E‹?d P@ áªÃé @  #FŒ?d @ Á_Á @  #G?d Ð@ ÿ’d @  #HŽ?d A /Úèü @  #I?d PA ‰Ð @  #J?d A 4|Òè @  #K‘?d ÐA JÓ| @  #L’?d B œs½ @  #M“?d PB ZÊœ @  #N”?d B zèÈb @  #O•?d ÐB é„S @  #P–?d C 9Ìßi @  #Q—?d PC gÏ…o @  #R˜?d C G:‡‘ @  #S™?d ÐC r † @  #Tš?d D kBu  @  #U›?d PD ­QÌ+ @  #Vœ?d D ¤ÎÕ @  #W?d ÐD ³ikÖ @  #Xž?d E c!ç> @  #YŸ?d PE ÅÅæ @  #Z ?d E å0äö @  #[¡?d ÐE Ðåb @  #\¢?d F MBE£ @  #]£?d PF ‹Qü‚ @  #^¤?d F «¤þ| @  #_¥?d ÐF )ÎB/ @  #`¦?d G ù†ÎÇ @  #a§?d PG §…”Á @  #b¨?d G ‡p–? @  #c©?d ÐG ²F—« @  #dª?d H †¹¶ @  #e«?d PH @ª¢— @  #f¬?d H `_ i @  #g­?d ÐH ^’j @  #h®?d I ŽÚ‰‚ @  #i¯?d PI µ‰±h @  #j°?d I •|³– @  #k±?d ÐI  J² @  #l²?d J =à @  #m³?d PJ û«â @  #n´?d J Ûè© @  #oµ?d ÐJ H„2ÿ @  #p¶?d K ˜Ì¾ @  #q·?d PK ÆÏä @  #r¸?d K æ:æï @  #s¹?d ÐK Ó ç{ @  #tº?d L ÊBt @  #u»?d PL  Q­U @  #v¼?d L ,¤¯« @  #w½?d ÐL i ¨ @  #x¾?d M Â!†@ @  #y¿?d PM ”•’g @  #zÀ?d M ´`™ @  #{Á?d ÐM V‘  @  #|Â?d N 1Ì @  #}Ã?d PN Úˆí @  #~Ä?d N úôŠ @  #Å?d ÐN 5Ïã @  #€Æ?d O 凌  @  #Ç?d PO »„Ö  @  #‚È?d O ›qÔó @  #ƒÉ?d ÐO ®GÕg @  #„Ê?d P ™iÕ @  #…Ë?d PP ÖŠÐô @  #†Ì?d P öÒ  @  #‡Í?d ÐP Ȳw  @  #ˆÎ?d Q úûá @  #‰Ï?d PQ #©Ã  @  #ŠÐ?d Q \Áõ @  #‹Ñ?d ÐQ 6jÀa @  #ŒÒ?d R «.`  @  #Ó?d PR m=Ù @  #ŽÔ?d R MÈÛ @  #Õ?d ÐR Þ¤@œ @  #Ö?d S ìÌt @  #‘×?d PS Pï–r @  #’Ø?d S p”Œ @  #“Ù?d ÐS E,• @  #”Ú?d T \bf @  #•Û?d PT šqß6 @  #–Ü?d T º„ÝÈ @  #—Ý?d ÐT „IxË @  #˜Þ?d U Tô# @  #™ß?d PU òåõ @  #šà?d U Ò÷ë @  #›á?d ÐU ç&ö @  #œâ?d V zbV¾ @  #ã?d PV ¼qïŸ @  #žä?d V œ„ía @  #Ÿå?d ÐV îQ2 @  # æ?d W ΦÝÚ @  #¡ç?d PW ¥‡Ü @  #¢è?d W °P…" @  #£é?d ÐW …f„¶ @  #¤ê?d X ±™« @  #¥ë?d PX wбŠ @  #¦ì?d X W³t @  #§í?d ÐX i²w @  #¨î?d Y ¹úšŸ @  #©ï?d PY ‚©¢u @  #ªð?d Y ¢\ ‹ @  #«ñ?d ÐY —j¡ @  #¬ò?d Z  .Þ @  #­ó?d PZ Ì=¸ÿ @  #®ô?d Z ìȺ @  #¯õ?d ÐZ ¤!â @  #°ö?d [ ¯ì­  @  #±÷?d P[ ñï÷  @  #²ø?d [ Ñõò @  #³ù?d Ð[ ä,ôf @  #´ú?d \ ýbi @  #µû?d P\ ;q¾H @  #¶ü?d \ „¼¶ @  #·ý?d Ð\ %Iµ @  #¸þ?d ] õ•] @  #¹ÿ?d P] Á€ä @  #º?d ] áá‚ @  #»?d Ð] Ô׃Ž @  #¼?d ^ I“#O @  #½?d P^ €šn @  #¾?d ^ ¯u˜ @  #¿?d Ð^ ƒ"Q @  #À?d _ SP®¹ @  #Á?d P_  Sô¿ @  #Â?d _ -¦öA @  #uÐ` Ã ?d Ð_ e„© @  #Ä€ ?d (` Ûè11 @  #Å€ ?d h` ûˆ @  #Æ€ ?d ¨` =Šî @  #Ç€ ?d è` Ã/í @  #È€?d (a Ó‹£ @  #É€?d ha èØ›ï @  #Ê€?d ¨a È-™ @  #Ë€?d èa ý˜… @  #Ì€?d (b `_8D @  #Í€?d hb ¦Le @  #΀?d ¨b †¹ƒ› @  #Ï€?d èb Õx @  #Ѐ?d (c Å” @  #Ñ€?d hc ›žÎ– @  #Ò€?d ¨c »kÌh @  #Ó€?d èc Ž]Íü @  #Ô€?d (d —>ó @  #Õ€?d hd Q‡Ò @  #Ö€?d ¨d qõ…, @  #×€?d èd O8 / @  #Ø€?d (e Ÿp¬Ç @  #Ù€?d he 9”­ñ @  #Ú€ ?d ¨e a¯ @  #Û€!?d èe ,W®› @  #Ü€"?d (f ±Z @  #Ý€#?d hf w·{ @  #Þ€$?d ¨f Wõµ… @  #߀%?d èf ÕŸ Ö @  #à€&?d (g ×…> @  #á€'?d hg [Ôß8 @  #â€(?d€ ¨g ýwu @  $€)?d èg )< @  $€*?d (h ÿ°ß @  $€+?d hh ¥ò @  $€,?d ¨h >Pðí @  $€-?d èh Î/ ” @  $€.?d (i g†| @  $€/?d hi ë†áì @  $€0?d ¨i Ësã @  $ €1?d èi ; k @  $ €2?d (j ¦H¹ª @  $ €3?d hj ¥ûf @  $ €4?d ¨j …çù˜ @  $ €5?d èj u˜á @  $€6?d (k ¥Ð  @  $€7?d hk ˜À´• @  $€8?d ¨k ¸5¶k @  $€9?d èk HJL @  $€:?d (l Q¿ @  $€;?d hl R^ýÑ @  $€<?d ¨l r«ÿ/ @  $€=?d èl ‚ÔV @  $€>?d (m Rœ‰¾ @  $€??d hm ÊšÂã @  $€@?d ¨m êoÀ @  $€A?d èm :d @  $€B?d (n ‡Tš¥ @  $€C?d hn „Øi @  $€D?d ¨n ¤ûÚ— @  $€E?d èn T„ î @  $€F?d (o „̬ @  $€G?d ho ¨Ú°* @  $ €H?d ¨o ˆ/²Ô @  $!€I?d èo xPH­ @  $"€J?d (p ÆŽô @  $#€K?d hp ÅÔ¶Ó @  $$€L?d ¨p å!´- @  $%€M?d èp ^NT @  $&€N?d (q Å¼ @  $'€O?d hq 0÷¥, @  $(€P?d ¨q §Ò @  $)€Q?d èq à}]« @  $*€R?d (r }9ýj @  $+€S?d hr ~c¿¦ @  $,€T?d ¨r ^–½X @  $-€U?d èr ®éG! @  $.€V?d (s ~¡ËÉ @  $/€W?d hs C±ðU @  $0€X?d ¨s cDò« @  $1€Y?d ès “;Ò @  $2€Z?d (t ŠuûÝ @  $3€[?d ht ‰/¹ @  $4€\?d ¨t ©Ú»ï @  $5€]?d èt Y¥A– @  $6€^?d (u ‰íÍ~ @  $7€_?d hu ồ2 @  $8€`?d ¨u ÁN‘Ì @  $9€a?d èu 11kµ @  $:€b?d (v ¬uËt @  $;€c?d hv ¯/‰¸ @  $<€d?d ¨v Ú‹F @  $=€e?d èv ¥q? @  $>€f?d (w ¯íý× @  $?€g?d hw -üçi @  $@€h?d ¨w  å— @  $A€i?d èw ývî @  $B€j?d (x ɉ“ó @  $C€k?d hx ÊÓÑ? @  $D€l?d ¨x ê&ÓÁ @  $E€m?d èx Y)¸ @  $F€n?d (y Ê¥P @  $G€o?d hy ?ðÂÀ @  $H€p?d ¨y À> @  $I€q?d èy ïz:G @  $J€r?d (z r>š† @  $K€s?d hz qdØJ @  $L€t?d ¨z Q‘Ú´ @  $M€u?d èz ¡î Í @  $N€v?d ({ q¦¬% @  $O€w?d h{ L¶—¹ @  $P€x?d ¨{ lC•G @  $Q€y?d è{ œ @  $R€z?d (| …rœ1 @  $S€{?d h| †(Þý @  $T€|?d ¨| ¦ÝÜ @  $U€}?d è| V¢&z @  $V€~?d (} †êª’ @  $W€?d h} *µ] @  $X€€?d ¨} #ß·£ @  $Y€?d è} Ó MÚ @  $Z€‚?d (~ Näí @  $[€ƒ?d h~ M¾¯× @  $\€„?d ¨~ mK­) @  $]€…?d è~ 4WP @  $^€†?d ( M|Û¸ @  $_€‡?d h ajÇ” @  $`€ˆ?d ¨ uЀ 'AŸÅj @  $a€‰?d è Ì`Lo @  $bŠ?d @€ ¢Þ® @  $c‹?d €€ àù÷ @  $dŒ?d À€ qî) @  $e?d  #×f @  $fŽ?d @ ¡F˜¸ @  $g?d € öÃê @  $h?d À tRýÖ @  $i‘?d ‚ ›ø°° @  $j’?d @‚ i§n @  $k“?d €‚ ¸Wð‚ @  $l”?d À‚ :Æç\ @  $m•?d ƒ ˜`† @  $n–?d @ƒ ñ‘Í @  $o—?d €ƒ ……¿q @  $p˜?d Àƒ ¨¯ @  $q™?d „ l´¶ @  $rš?d @„ î%¡Ù @  $s›?d €„ Oö5 @  $tœ?d À„ ÍŠáë @  $u?d … o,€¤ @  $vž?d @… í½—z @  $wŸ?d €… 'Ü @  $x ?d À… ¥ËÈ @  $y¡?d † J´†® @  $z¢?d @† È%‘p @  ${£?d €† iÆœ @  $|¤?d À† ëŠÑB @  $}¥?d ‡ I,°  @  $~¦?d @‡ ˽§Ó @  $§?d €‡ ž˜| @  $€¨?d À‡ Š¢ @  $©?d ˆ Ìî @  $‚ª?d @ˆ NùÆ @  $ƒ«?d €ˆ ï±®* @  $„¬?d Àˆ m ¹ô @  $…­?d ‰ φػ @  $†®?d @‰ MÏe @  $‡¯?d €‰ ’½Õ @  $ˆ°?d À‰ ˜ª  @  $‰±?d Š w©çm @  $в?d @Š õ8ð³ @  $‹³?d €Š T§_ @  $Œ´?d ÀŠ Ö—° @  $µ?d ‹ t1ÑÎ @  $޶?d @‹ ö Æ @  $·?d €‹ iÔè¬ @  $¸?d À‹ ëEÿr @  $‘¹?d Œ €åáÚ @  $’º?d @Œ tö @  $“»?d €Œ £J¡è @  $”¼?d ÀŒ !Û¶6 @  $•½?d  ƒ}×y @  $–¾?d @ ìÀ§ @  $—¿?d € ;ŽžÚ @  $˜À?d À ¹‰ @  $™Á?d Ž VµÄb @  $šÂ?d @Ž Ô$Ó¼ @  $›Ã?d €Ž u„P @  $œÄ?d ÀŽ ÷‹“Ž @  $Å?d  U-òÁ @  $žÆ?d @ ×¼å @  $ŸÇ?d € YÎì @  $ È?d À Û_ûÍ @  $¡É?d  oªØ @  $¢Ê?d @ •þ½ @  $£Ë?d € 4Àêê @  $¤Ì?d À ¶Qý4 @  $¥Í?d ‘ ÷œ{ @  $¦Î?d @‘ –f‹¥ @  $§Ï?d €‘ Áãù @  $¨Ð?d À‘ CrîË @  $©Ñ?d ’ ¬Ø£­ @  $ªÒ?d @’ .I´s @  $«Ó?d €’ w㟠@  $¬Ô?d À’  æôA @  $­Õ?d “ ¯@• @  $®Ö?d @“ -тР@  $¯×?d €“ ²¥¬l @  $°Ø?d À“ 04»² @  $±Ù?d ” [”¥ @  $²Ú?d @” Ù²Ä @  $³Û?d €” x;å( @  $´Ü?d À” úªòö @  $µÝ?d • X “¹ @  $¶Þ?d @• Ú„g @  $·ß?d €• ¯Ï  @  $¸à?d À• ’>ØÕ @  $¹á?d – }”•³ @  $ºâ?d @– ÿ‚m @  $»ã?d €– ^;Õ @  $¼ä?d À– ܪÂ_ @  $½å?d — ~ £ @  $¾æ?d @— ü´Î @  $¿ç?d €— Üè»P @  $Àè?d À— ^y¬Ž @  $Áé?d ˜ hÍ4 @  $Âê?d @˜ šùÚê @  $Ãë?d €˜ ;Ç @  $Äì?d À˜ ¹VšØ @  $Åí?d ™ ðû— @  $Æî?d @™ ™aìI @  $Çï?d €™ Îäžù @  $Èð?d À™ Lu‰' @  $Éñ?d š £ßÄA @  $Êò?d @š !NÓŸ @  $Ëó?d €š €p„s @  $Ìô?d Àš á“­ @  $Íõ?d ›  Gòâ @  $Îö?d @› "Öå< @  $Ï÷?d €› ½¢Ë€ @  $Ðø?d À› ?3Ü^ @  $Ñù?d œ T“Âö @  $Òú?d @œ ÖÕ( @  $Óû?d €œ w<‚Ä @  $Ôü?d Àœ õ­• @  $Õý?d  W ôU @  $Öþ?d @ Õšã‹ @  $×ÿ?d € sùd+ @  $Ø?d À ñhsõ @  $Ù?d ž Â>“ @  $Ú?d @ž œS)M @  $Û?d €ž =m~¡ @  $Ü?d Àž ¿üi @  $Ý?d Ÿ Z0 @  $Þ?d @Ÿ ŸËî @  $ß?d €Ÿ ¹â @  $àuР ?d ÀŸ “(< @  $á ?d   RdÕ( @  $â ?d€ X  ¤6ÞP @  % ?d ˜  äIÁ• @  % ?d Ø  fØÖK @  % ?d ¡ 7Lé @  %?d X¡ ƒ¦[7 @  %?d ˜¡ ‘vý @  %?d Ø¡ ˜a# @  %?d ¢ ¹s? @  %?d X¢ ;‰dá @  % ?d ˜¢ _þÈà @  % ?d Ø¢ Ýoß> @  % ?d £ º€Eœ @  % ?d X£ 8RB @  % ?d ˜£ Ävd @  %?d Ø£ Fç º @  %?d ¤ NTuˆ @  %?d X¤ ÌÅbV @  %?d ˜¤ ¨²ÎW @  %?d ؤ *#Ù‰ @  %?d ¥ MÌC+ @  %?d X¥ Ï]Tõ @  %?d ˜¥ ËÝ@ã @  % ?d Ø¥ ILW= @  %!?d ¦ hTE! @  %"?d X¦ êÅRÿ @  %#?d ˜¦ ޲þþ @  %$?d ئ  #é  @  %%?d § kÌs‚ @  %&?d X§ é]d\ @  %'?d ˜§ :+z @  %(?d ا —«<¤ @  %)?d ¨ £¯4 @  % *?d X¨ !> ê @  %!+?d ˜¨ EI ë @  %",?d ب ÇØ·5 @  %#-?d ©  7-— @  %$.?d X© "¦:I @  %%/?d ˜© »‘ƒ @  %&0?d Ø© 9] @  %'1?d ª A @  %(2?d Xª š‰Ÿ @  %)3?d ˜ª þþ©ž @  %*4?d ت |o¾@ @  %+5?d « €$â @  %,6?d X« ™3< @  %-7?d ˜« ev| @  %.8?d Ø« ççkÄ @  %/9?d ¬ ïTö @  %0:?d X¬ mÅ( @  %1;?d ˜¬  ²¯) @  %2<?d ج ‹#¸÷ @  %3=?d ­ ìÌ"U @  %4>?d X­ n]5‹ @  %5??d ˜­ š4Œ @  %6@?d Ø­ #R @  %7A?d ® 91N @  %8B?d X® »•& @  %9C?d ˜® ß⊑ @  %:D?d Ø® ]sO @  %;E?d ¯ :œí @  %<F?d X¯ ¸ 3 @  %=G?d ˜¯ Dj_ @  %>H?d د ÆûHË @  %?I?d ° ÖÙYf @  %@J?d X° THN¸ @  %AK?d ˜° 0?â¹ @  %BL?d ذ ²®õg @  %CM?d ± ÕAoÅ @  %DN?d X± WÐx @  %EO?d ˜± ÎçUÑ @  %FP?d ر LvB @  %GQ?d ² mnP @  %HR?d X² ïÿGÍ @  %IS?d ˜² ‹ˆëÌ @  %JT?d ز  ü @  %KU?d ³ nöf° @  %LV?d X³ ìgqn @  %MW?d ˜³ >H @  %NX?d س ’‘)– @  %OY?d ´ š"V¤ @  %PZ?d X´ ³Az @  %Q[?d ˜´ |Äí{ @  %R\?d Ø´ þUú¥ @  %S]?d µ ™º` @  %T^?d Xµ +wÙ @  %U_?d ˜µ «cÏ @  %V`?d ص :t @  %Wa?d ¶ ¼"f  @  %Xb?d X¶ >³qÓ @  %Yc?d ˜¶ ZÄÝÒ @  %Zd?d ض ØUÊ  @  %[e?d · ¿ºP® @  %\f?d X· =+Gp @  %]g?d ˜· ÁLV @  %^h?d Ø· C݈ @  %_i?d ¸ wÙ8 @  %`j?d X¸ õH/Æ @  %ak?d ˜¸ ‘?ƒÇ @  %bl?d ظ ®” @  %cm?d ¹ tA» @  %dn?d X¹ öÐe @  %eo?d ˜¹ oç4¯ @  %fp?d ع ív#q @  %gq?d º Ìn1m @  %hr?d Xº Nÿ&³ @  %is?d ˜º *ˆŠ² @  %jt?d غ ¨l @  %ku?d » ÏöÎ @  %lv?d X» Mg @  %mw?d ˜» ±_6 @  %nx?d Ø» 3‘Hè @  %oy?d ¼ ;"7Ú @  %pz?d X¼ ¹³  @  %q{?d ˜¼ ÝÄŒ @  %r|?d ؼ _U›Û @  %s}?d ½ 8ºy @  %t~?d X½ º+§ @  %u?d ˜½ S=C2 @  %v€?d ؽ ѬTì @  %w?d ¾ ð´Fð @  %x‚?d X¾ r%Q. @  %yƒ?d ˜¾ Rý/ @  %z„?d ؾ ”Ãêñ @  %{…?d ¿ ó,pS @  %|†?d X¿ q½g @  %}‡?d ˜¿ Ú(« @uÐÀ   %~ˆ?d Ø¿ K?u @  %‰?d 0À &ó  @  %€Š?d pÀ ¤€ä× @  %‹?d °À À÷HÖ @  %‚Œ?d ðÀ Bf_ @  %ƒ?d 0Á %‰Åª @  %„Ž?d pÁ §Òt @  %…?d °Á >/ÿ¾ @  %†?d ðÁ ¼¾è` @  %‡‘?d 0 ¦ú| @  %ˆ’?d p 7í¢ @  %‰“?d °Â {@A£ @  %Š”?d ð ùÑV} @  %‹•?d 0àž>Ìß @  %Œ–?d pà¯Û @  %—?d °Ã àÈ”' @  %Ž˜?d ðàbYƒù @  %™?d 0Ä jêüË @  %š?d pÄ è{ë @  %‘›?d °Ä Œ G @  %’œ?d ðÄ PÊ @  %“?d 0Å irÊh @  %”ž?d pÅ ëãݶ @  %•Ÿ?d °Å ïcÉ  @  %– ?d ðÅ mòÞ~ @  %—¡?d 0Æ LêÌb @  %˜¢?d pÆ Î{Û¼ @  %™£?d °Æ ª w½ @  %š¤?d ðÆ (`c @  %›¥?d 0Ç OrúÁ @  %œ¦?d pÇ Íãí @  %§?d °Ç 1„¢9 @  %ž¨?d ðÇ ³µç @  %Ÿ©?d 0È ‡’w @  % ª?d pÈ €…© @  %¡«?d °È a÷)¨ @  %¢¬?d ðÈ ãf>v @  %£­?d 0É „‰¤Ô @  %¤®?d pÉ ³  @  %¥¯?d °É Ÿ/žÀ @  %¦°?d ðÉ ¾‰ @  %§±?d 0Ê <¦› @  %¨²?d pÊ ¾7ŒÜ @  %©³?d °Ê Ú@ Ý @  %ª´?d ðÊ XÑ7 @  %«µ?d 0Ë ?>­¡ @  %¬¶?d pË ½¯º @  %­·?d °Ë AÈõY @  %®¸?d ðË ÃY⇠@  %¯¹?d 0Ì Ëêµ @  %°º?d pÌ I{Šk @  %±»?d °Ì - &j @  %²¼?d ðÌ ¯1´ @  %³½?d 0Í Èr« @  %´¾?d pÍ Jã¼È @  %µ¿?d °Í ¾3½Ï @  %¶À?d ðÍ <¢ª @  %·Á?d 0Πº¸  @  %¸Â?d pΠŸ+¯Ó @  %¹Ã?d °Î û\Ò @  %ºÄ?d ðΠyÍ  @  %»Å?d 0Ï "Ž® @  %¼Æ?d pÏ œ³™p @  %½Ç?d °Ï `ÔÖV @  %¾È?d ðÏ âEÁˆ @  %¿É?d 0РògÐ% @  %ÀÊ?d pРpöÇû @  %ÁË?d °Ð kú @  %ÂÌ?d ðР–|$ @  %ÃÍ?d 0Ñ ñÿæ† @  %ÄÎ?d pÑ snñX @  %ÅÏ?d °Ñ êYÜ’ @  %ÆÐ?d ðÑ hÈËL @  %ÇÑ?d 0Ò IÐÙP @  %ÈÒ?d pÒ ËAÎŽ @  %ÉÓ?d °Ò ¯6b @  %ÊÔ?d ðÒ -§uQ @  %ËÕ?d 0Ó JHïó @  %ÌÖ?d pÓ ÈÙø- @  %Í×?d °Ó 4¾·  @  %ÎØ?d ðÓ ¶/ Õ @  %ÏÙ?d 0Ô ¾œßç @  %ÐÚ?d pÔ < È9 @  %ÑÛ?d °Ô Xzd8 @  %ÒÜ?d ðÔ Úësæ @  %ÓÝ?d 0Õ ½éD @  %ÔÞ?d pÕ ?•þš @  %Õß?d °Õ ;êŒ @  %Öà?d ðÕ ¹„ýR @  %×á?d 0Ö ˜œïN @  %Øâ?d pÖ  ø @  %Ùã?d °Ö ~zT‘ @  %Úä?d ðÖ üëCO @  %Ûå?d 0× ›Ùí @  %Üæ?d p× •Î3 @  %Ýç?d °× åò @  %Þè?d ð× gc–Ë @  %ßé?d 0Ø Sg±[ @  %àê?d pØ Ñö¦… @  %áë?d °Ø µ „ @  %âì?d€ ðØ öWêZ @  &í?d 0Ù pù8Ñ @  &î?d pÙ òh/ @  &ï?d °Ù ®ù( @  &ð?d ðÙ ,‡îö @  &ñ?d 0Ú Ã-£ @  &ò?d pÚ A¼´N @  &ó?d °Ú ëyG5 @  &ô?d ðÚ ièPë @  & õ?d 0Û ËN1¤ @  & ö?d pÛ Iß&z @  & ÷?d °Û pñ’± @  & ø?d ðÛ ò`…o @  & ù?d 0Ü ™À›Ç @  &ú?d pÜ QŒ @  &û?d °Ü 5A‚ @  &ü?d ðÜ ž¤V\ @  &ý?d 0Ý <7 @  &þ?d pÝ ¾“ Í @  &ÿ?d °Ý í«Û¹ @  &?d ðÝ o:Ìg @  &?d 0Þ € @  &?d pÞ –ß @  &?d °Þ ¨Äe¤ @  &?d ðÞ *Urz @  &?d 0ß ˆó5 @  &?d pß  bë @  &?d uÐà /°ß 3L°  @  &?d ðß ˆ{+ @  &  ?d Hà ãPÈz @  &  ?d ˆà åʄ @  &  ?d Èà w£5 @  &  ?d á §ë¹g @  &!  ?d Há W”C @  &" ?d ˆá waAà @  &# ?d Èá ‰{‚ç @  &$ ?d â ?"& @  &% ?d Hâ ä@Ø_ @  && ?d ˆâ ĵڡ @  &' ?d Èâ Ì<ú @  &( ?d ã \° @  &) ?d Hã ì#Jk @  &* ?d ˆã ÌÖH• @  &+ ?d Èã Wœé~ @  &, ?d ä NÒq @  &- ?d Hä ¾­à @  &. ?d ˆä žXâö @  &/ ?d Èä ;X:M @  &0 ?d å ë¶¥ @  &1 ?d Hå oLÜ @  &2 ?d ˆå ;šN" @  &3 ?d Èå X7´ù @  &4  ?d æ Ås8 @  &5 !?d Hæ 5 îA @  &6 "?d ˆæ ùì¿ @  &7 #?d Èæ X ä @  &8 $?d ç Í†  @  &9 %?d Hç =o|u @  &: &?d ˆç š~‹ @  &; '?d Èç †Ðß` @  &< (?d è ²/S} @  &= )?d Hè BP© @  &> *?d ˆè b¥«ú @  &? +?d Èè x¤Rc @  &@ ,?d é ¨ìÞ‹ @  &A -?d Hé X“$ò @  &B .?d ˆé xf&  @  &C /?d Èé †|å  @  &D 0?d ê 8EÊ @  &E 1?d Hê ëG¿³ @  &F 2?d ˆê ˲½M @  &G 3?d Èê Ã[ @  &H 4?d ë [×þ @  &I 5?d Hë ã$-‡ @  &J 6?d ˆë ÃÑ/y @  &K 7?d Èë X›Ž’ @  &L 8?d ì AÕ} @  &M 9?d Hì ±ª‡ä @  &N :?d ˆì ‘_… @  &O ;?d Èì 4_]¡ @  &P <?d í äÑI @  &Q =?d Hí h+0 @  &R >?d ˆí 4)Î @  &S ??d Èí §`Æ @  &T @?d î :$fÅ @  &U A?d Hî Ê[œ¼ @  &V B?d ˆî ꮞB @  &W C?d Èî âx @  &X D?d ï 2Gôñ @  &Y E?d Hï Â8ˆ @  &Z F?d ˆï âÍ v @  &[ G?d Èï y‡­ @  &\ H?d ð ÇY/ @  &] I?d Hð 7&ëV @  &^ J?d ˆð Óé¨ @  &_ K?d Èð £Õ£ @  &` L?d ñ sšK @  &a M?d Hñ ƒâ`2 @  &b N?d ˆñ £bÌ @  &c O?d Èñ ] ¡Ë @  &d P?d ò ÀI  @  &e Q?d Hò 06ûs @  &f R?d ˆò Ãù @  &g S?d Èò bÖ @  &h T?d ó È*“> @  &i U?d Hó 8UiG @  &j V?d ˆó  k¹ @  &k W?d Èó ƒêÊR @  &l X?d ô š¤9] @  &m Y?d Hô jÛÃ$ @  &n Z?d ˆô J.ÁÚ @  &o [?d Èô ï.a @  &p \?d õ ?f•‰ @  &q ]?d Hõ Ïoð @  &r ^?d ˆõ ïìm @  &s _?d Èõ ŒA—Õ @  &t `?d ö 7 @  &u a?d Hö ázÍm @  &v b?d ˆö ÁÏ“ @  &w c?d Èö É.)È @  &x d?d ÷ f¥  @  &y e?d H÷ é_Y @  &z f?d ˆ÷ Éì]§ @  &{ g?d È÷ R¦üL @  &| h?d ø fYpQ @  &} i?d Hø –&Š( @  &~ j?d ˆø ¶ÓˆÖ @  & k?d Èø O„A~ @  &€ l?d ù ŸÌÍ– @  & m?d Hù o³7ï @  &‚ n?d ˆù OF5 @  &ƒ o?d Èù ±\ö @  &„ p?d ú ,V× @  &… q?d Hú Üg¬® @  &† r?d ˆú ü’®P @  &‡ s?d Èú ô3H  @  &ˆ t?d û ${Äã @  &‰ u?d Hû Ô>š @  &Š v?d ˆû ôñ @  &İ?d ¡-iÿ @  &ű?d ` ¡Ýz“† @  &Ʋ?d   ¡ý‘x @  &dz?d à ¡õ.w# @  &È´?d ¡%fûË @  &ɵ?d ` ¡Õ² @  &ʶ?d   ¡õìL @  &Ë·?d à ¡n¦¢§ @  &̸?d ¡wèQ¨ @  &͹?d ` ¡‡—«Ñ @  &κ?d   ¡§b©/ @  &Ï»?d à ¡bq” @  &м?d ¡Ò*ý| @  &ѽ?d ` ¡"U @  &Ò¾?d   ¡ û @  &Ó¿?d à ¡‘]ê1 @  &ÔÀ?d ¡ Jð @  &ÕÁ?d `¡üf°‰ @  &ÖÂ?d  ¡Ü“²w @  &×Ã?d à¡Ô2T, @  &ØÄ?d ¡zØÄ @  &ÙÅ?d `¡ô"½ @  &ÚÆ?d  ¡Ôð C @  &ÛÇ?d à¡Oº¨ @  &ÜÈ?d ¡ñd= @  &ÝÉ?d `¡Çc @  &ÞÊ?d  ¡!îÅ @  &ßË?d à¡•è:– @  &àÌ?d ¡E ¶~ @  &áÍ?d `¡µßL @  &âÎ?d€  ¡áéR_ @  'Ï?d à¡þ²Ùq @  'Ð?d ¡cöy° @  'Ñ?d `¡VÀx$ @  'Ò?d  ¡v5zÚ @  'Ó?d à¡°&Ãû @  'Ô?d ¡`nO @  'Õ?d `¡^£ê @  'Ö?d  ¡~Vèî @  ' ×?d à¡ U²è @  ' Ø?d ¡9Aç @  ' Ù?d `¡ -@s @  ' Ú?d  ¡,ØB @  ' Û?d à¡êËû¬ @  'Ü?d ¡:ƒwD @  'Ý?d `¡©ïì§ @  'Þ?d  ¡‰îY @  'ß?d à¡/þïo @  'à?d ¡²ºO® @  'á?d `¡‡ŒN: @  'â?d  ¡§yLÄ @  'ã?d à¡ajõå @  'ä?d ¡±"y  @  'å?d `¡ïÜ @  'æ?d  ¡¯Þð @  'ç?d à¡ñ„ö @  'è?d ¡Åæë @  'é?d `¡ðÐ  @  'ê?d  ¡Ð%  @  'ë?d à¡6²  @  'ì?d ¡Æ~>H @  'í?d `¡D‚ @  ' î?d  ¡dá€å @  '!ï?d à¡_²¸ @  '"ð?d ¡ÂöÎ @  '#ñ?d `¡÷ÀZ @  '$ò?d  ¡×5¤ @  '%ó?d à¡&¢… @  '&ô?d ¡Án.m @  ''õ?d `¡ÿ£‹n @  '(ö?d  ¡ßV‰ @  ')÷?d à¡UÓ– @  '*ø?d ¡˜ ™ @  '+ù?d `¡­-!  @  ',ú?d  ¡Ø#ó @  '-û?d à¡KËšÒ @  '.ü?d ¡›ƒ: @  '/ý?d `¡ïÙ @  '0þ?d  ¡(' @  '1ÿ?d à¡®-¯» @  '2?d ¡3iz @  '3?d `¡_î @  '4?d  ¡&ª  @  '5?d à¡๵1 @  '6?d ¡0ñ9Ù @  '7?d `¡<œÚ @  '8?d  ¡.Éž$uÐ ¡ @  '9?d à¡pÊÄ" @  ':?d 8 ¡ÁD @  '; ?d x ¡4÷Ð @  '< ?d ¸ ¡. @  '= ?d ø ¡Ò  @  '> ?d 8!¡Y,ç @  '? ?d x!¡.4–& @  '@?d ¸!¡Á”Ø @  'A?d ø!¡5’¬2 @  'B?d 8"¡¨Ö ó @  'C?d x"¡à g @  'D?d ¸"¡½™ @  'E?d ø"¡{¶¸ @  'F?d 8#¡«N:P @  'G?d x#¡•ƒŸS @  'H?d ¸#¡µv­ @  'I?d ø#¡ëuÇ« @  'J?d 8$¡ò;4¤ @  'K?d x$¡Ç 50 @  'L?d ¸$¡çø7Î @  'M?d ø$¡!ëŽï @  'N?d 8%¡ñ£ @  'O?d x%¡bÏ™ä @  'P?d ¸%¡B:› @  'Q?d ø%¡äÞš, @  'R ?d 8&¡yš:í @  'S!?d x&¡L¬;y @  'T"?d ¸&¡lY9‡ @  'U#?d ø&¡ªJ€¦ @  'V$?d 8'¡z N @  'W%?d x'¡DÏ©M @  'X&?d ¸'¡d:«³ @  'Y'?d ø'¡:9ñµ @  'Z(?d 8(¡Æ}¨ @  '[)?d x(¡;ð|< @  '\*?d ¸(¡~ @  ']+?d ø(¡ÝÇã @  '^,?d 8)¡ ^K  @  '_-?d x)¡4÷X @  '`.?d ¸)¡¯Áõ¦ @  'a/?d ø)¡”’ÍL @  'b0?d 8*¡ Öm @  'c1?d x*¡<àl @  'd2?d ¸*¡nç @  'e3?d ø*¡Úׯ @  'f4?d 8+¡ N[. @  'g5?d x+¡4ƒþ- @  'h6?d ¸+¡vüÓ @  'i7?d ø+¡Ju¦Õ @  'j8?d 8,¡S;UÚ @  'k9?d x,¡f TN @  'l:?d ¸,¡FøV° @  'm;?d ø,¡€ëï‘ @  'n<?d 8-¡P£cy @  'o=?d x-¡ÃÏøš @  'p>?d ¸-¡ã:úd @  'q??d ø-¡µŽîC @  'r@?d 8.¡(ÊN‚ @  'sA?d x.¡üO @  'tB?d ¸.¡= Mè @  'uC?d ø.¡ûôÉ @  'vD?d 8/¡+Rx! @  'wE?d x/¡ŸÝ" @  'xF?d ¸/¡5jßÜ @  'yG?d ø/¡ki…Ú @  'zH?d 80¡Õ·9h @  '{I?d x0¡à8ü @  '|J?d ¸0¡Àt: @  '}K?d ø0¡gƒ# @  '~L?d 81¡Ö/Ë @  'M?d x1¡…; @  '€N?d ¸1¡9á‡Å @  'O?d ø1¡²¿/ @  '‚P?d 82¡Ÿöî @  'ƒQ?d x2¡ªÀz @  '„R?d ¸2¡Š5„ @  '…S?d ø2¡L&¥¥ @  '†T?d 83¡œn)M @  '‡U?d x3¡¢£ŒN @  'ˆV?d ¸3¡‚Vް @  '‰W?d ø3¡ÜUÔ¶ @  'ŠX?d 84¡Å'¹ @  '‹Y?d x4¡ð-&- @  'ŒZ?d ¸4¡ÐØ$Ó @  '[?d ø4¡Ëò @  'Ž\?d 85¡ƃ @  ']?d x5¡UïŠù @  '^?d ¸5¡uˆ @  '‘_?d ø5¡Óþ‰1 @  '’`?d 86¡Nº)ð @  '“a?d x6¡{Œ(d @  '”b?d ¸6¡[y*š @  '•c?d ø6¡j“» @  '–d?d 87¡M"S @  '—e?d x7¡sïºP @  '˜f?d ¸7¡S¸® @  '™g?d ø7¡ ⨠@  'šh?d 88¡9ænµ @  '›i?d x8¡ Ðo! @  'œj?d ¸8¡,%mß @  'k?d ø8¡ê6Ôþ @  'žl?d 89¡:~X @  'Ÿm?d x9¡¸äE @  ' n?d ¸9¡˜áæ» @  '¡o?d ø9¡£²ÞQ @  '¢p?d 8:¡>ö~ @  '£q?d x:¡ À @  '¤r?d ¸:¡+5}ú @  '¥s?d ø:¡í&ÄÛ @  '¦t?d 8;¡=nH3 @  '§u?d x;¡£í0 @  '¨v?d ¸;¡#VïÎ @  '©w?d ø;¡}UµÈ @  'ªx?d 8<¡dFÇ @  '«y?d x<¡Q-GS @  '¬z?d ¸<¡qØE­ @  '­{?d ø<¡·ËüŒ @  '®|?d 8=¡gƒpd @  '¯}?d x=¡ôïë‡ @  '°~?d ¸=¡Ôéy @  '±?d ø=¡Ÿh©Ì @  '²€?d 8>¡,  @  '³?d x>¡7™ @  '´‚?d ¸>¡ï g @  'µƒ?d ø>¡Ñü³F @  '¶„?d 8?¡´?® @  '·…?d x?¡?yš­ @  '¸†?duÐ@¡7 ¸?¡Œ˜S @  '¹‡?d ø?¡AÂU @  'ºˆ?d P@¡‚#xi @  '»‰?d @¡qlÝ @  '¼Š?d Ð@¡—à{ @  '½‹?d A¡*Y @  '¾Œ?d PA¡»NÊ @  '¿?d A¡²á+ @  'ÀŽ?d ÐA¡#öõ @  'Á?d B¡©¥y @  'Â?d PB¡+4nÞ @  'Ñ?d B¡¼fzj @  'Ä’?d ÐB¡>÷m´ @  'Å“?d C¡ª=O£ @  'Æ”?d PC¡(¬X} @  'Ç•?d C¡´è^ @  'È–?d ÐC¡6”ÿ€ @  'É—?d D¡óHAW @  'ʘ?d PD¡qÙV‰ @  'Ë™?d D¡æ‹B= @  'Ìš?d ÐD¡dUã @  'Í›?d E¡ðÐwô @  'Μ?d PE¡rA`* @  'Ï?d E¡CIîé @  'О?d ÐE¡ÁØù7 @  'ÑŸ?d F¡xéO @  'Ò ?d PF¡úxXÀ @  'Ó¡?d F¡m*Lt @  'Ô¢?d ÐF¡ï»[ª @  'Õ£?d G¡{qy½ @  'Ö¤?d PG¡ùànc @  '×¥?d G¡eIÞ@ @  'ئ?d ÐG¡çØÉž @  'Ù§?d H¡µ[ @  'Ú¨?d PH¡$… @  'Û©?d H¡v 1 @  'ܪ?d ÐH¡˜çï @  'Ý«?d I¡ ->ø @  'Þ¬?d PI¡޼)& @  'ß­?d I¡®²€U @  'à®?d ÐI¡,#—‹ @  'á¯?d J¡¥~ @  'â°?d€ PJ¡¢®ò @  (±?d J¡Ô½Go @  (²?d ÐJ¡V,P± @  (³?d K¡¯‰K @  (´?d PK¡…>ž• @  (µ?d K¡×%qÌ @  (¶?d ÐK¡U´f @  (·?d L¡^Ú‡¿ @  (¸?d PL¡ÜKa @  ( ¹?d L¡ŽP8 @  ( º?d ÐL¡ Áhæ @  ( »?d M¡]B± @  ( ¼?d PM¡ßӦ @  ( ½?d M¡ÈI› @  (¾?d ÐM¡Y^E @  (¿?d N¡%+œç @  (À?d PN¡§º‹9 @  (Á?d N¡õ¡d` @  (Â?d ÐN¡w0s¾ @  (Ã?d O¡&³ªD @  (Ä?d PO¡¤"½š @  (Å?d O¡ö9Rà @  (Æ?d ÐO¡t¨E @  (Ç?d P¡ØVë  @  (È?d PP¡ZÇüÓ @  (É?d P¡ÜŠ @  (Ê?d ÐP¡ŠMT @  (Ë?d Q¡ÛÎÝ® @  (Ì?d PQ¡Y_Êp @  (Í?d Q¡ D%) @  (Î?d ÐQ¡‰Õ2÷ @  (Ï?d R¡ßFû( @  ( Ð?d PR¡]×ìö @  (!Ñ?d R¡Ì¯ @  ("Ò?d ÐR¡]q @  (#Ó?d S¡ÜÞÍ‹ @  ($Ô?d PS¡^OÚU @  (%Õ?d S¡ T5  @  (&Ö?d ÐS¡ŽÅ"Ò @  ('×?d T¡…«Ã @  ((Ø?d PT¡:Ô¡ @  ()Ù?d T¡U!;ø @  (*Ú?d ÐT¡×°,& @  (+Û?d U¡†3õÜ @  (,Ü?d PU¡¢â @  (-Ý?d U¡V¹ [ @  (.Þ?d ÐU¡Ô(… @  (/ß?d V¡ Í6 @  (0à?d PV¡Œ›Úè @  (1á?d V¡Þ€5± @  (2â?d ÐV¡\"o @  (3ã?d W¡ ’û• @  (4ä?d PW¡ìK @  (5å?d W¡Ý @  (6æ?d ÐW¡_‰Ì @  (7ç?d X¡yVŠs @  (8è?d PX¡ûÇ­ @  (9é?d X¡©Ürô @  (:ê?d ÐX¡+Me* @  (;ë?d Y¡zμÐ @  (<ì?d PY¡ø_« @  (=í?d Y¡ªDDW @  (>î?d ÐY¡(ÕS‰ @  (?ï?d Z¡ÐAœÄ @  (@ð?d PZ¡RЋ @  (Añ?d Z¡ËdC @  (Bò?d ÐZ¡‚Zs @  (Có?d [¡ÓÙªg @  (Dô?d P[¡QH½¹ @  (Eõ?d [¡SRà @  (Fö?d Ð[¡ÂE> @  (G÷?d \¡Ь¤“ @  (Hø?d P\¡=³M @  (Iù?d \¡Z&\ @  (Jú?d Ð\¡Ø·KÊ @  (Kû?d ]¡‰4’0 @  (Lü?d P]¡ ¥…î @  (Mý?d ]¡Y¾j· @  (Nþ?d Ð]¡Û/}i @  (Oÿ?d ^¡“ü¾U @  (P?d P^¡m©‹ @  (Q?d ^¡CvFÒ @  (R?d Ð^¡ÁçQ  @  (S?d _¡dˆö @  (T?d P_¡õŸ( @  (U?d _¡@îpq @  (uÐ`¡V?d Ð_¡Âg¯ @  (W?d (`¡n§À• @  (X?d h`¡ì6×K @  (Y ?d ¨`¡¾-8 @  (Z ?d è`¡<¼/Ì @  ([ ?d (a¡m?ö6 @  (\ ?d ha¡ï®áè @  (] ?d ¨a¡½µ± @  (^?d èa¡?$o @  (_?d (b¡i·Ð° @  (`?d hb¡ë&Çn @  (a?d ¨b¡¹=(7 @  (b?d èb¡;¬?é @  (c?d (c¡j/æ @  (d?d hc¡è¾ñÍ @  (e?d ¨c¡º¥” @  (f?d èc¡84 J @  (g?d (d¡3Zèç @  (h?d hd¡±Ëÿ9 @  (i?d ¨d¡ãÐ` @  (j?d èd¡aA¾ @  (k?d (e¡0ÂÞD @  (l?d he¡²SÉš @  (m?d ¨e¡àH&à @  (n?d èe¡bÙ1 @  (o?d (f¡¸ûæ® @  (p ?d hf¡:jñp @  (q!?d ¨f¡hq) @  (r"?d èf¡êà ÷ @  (s#?d (g¡»cÐ  @  (t$?d hg¡9òÇÓ @  (u%?d ¨g¡ké(Š @  (v&?d èg¡éx?T @  (w'?d (h¡ϧ¡ë @  (x(?d hh¡M6¶5 @  (y)?d ¨h¡-Yl @  (z*?d èh¡¼N² @  ({+?d (i¡Ì?—H @  (|,?d hi¡N®€– @  (}-?d ¨i¡µoÏ @  (~.?d èi¡ž$x @  (/?d (j¡…æ‡m @  (€0?d hj¡w³ @  (1?d ¨j¡Ulê @  (‚2?d èj¡×ýh4 @  (ƒ3?d (k¡†~±Î @  („4?d hk¡ï¦ @  (…5?d ¨k¡VôII @  (†6?d èk¡Ôe^— @  (‡7?d (l¡ß ¿: @  (ˆ8?d hl¡]š¨ä @  (‰9?d ¨l¡G½ @  (Š:?d èl¡Pc @  (‹;?d (m¡Ü“‰™ @  (Œ<?d hm¡^žG @  (=?d ¨m¡ q @  (Ž>?d èm¡ŽˆfÀ @  (??d (n¡¤ú¤b @  (@?d hn¡&k³¼ @  (‘A?d ¨n¡tp\å @  (’B?d èn¡öáK; @  (“C?d (o¡§b’Á @  (”D?d ho¡%ó… @  (•E?d ¨o¡wèjF @  (–F?d èo¡õy}˜ @  (—G?d (p¡Y‡Óˆ @  (˜H?d hp¡ÛÄV @  (™I?d ¨p¡‰ + @  (šJ?d èp¡ œ<Ñ @  (›K?d (q¡Zå+ @  (œL?d hq¡ØŽòõ @  (M?d ¨q¡Š•¬ @  (žN?d èq¡ r @  (ŸO?d (r¡^—í @  ( P?d hr¡ÜÔs @  (¡Q?d ¨r¡Ž;* @  (¢R?d èr¡ Œ,ô @  (£S?d (s¡]õ @  (¤T?d hs¡ßžâÐ @  (¥U?d ¨s¡… ‰ @  (¦V?d ès¡W @  (§W?d (t¡zûú @  (¨X?d ht¡†ëì$ @  (©Y?d ¨t¡Ôð} @  (ªZ?d èt¡Va£ @  («[?d (u¡âÍY @  (¬\?d hu¡…sÚ‡ @  (­]?d ¨u¡×h5Þ @  (®^?d èu¡Uù" @  (¯_?d (v¡Ûõ³ @  (°`?d hv¡ Jâm @  (±a?d ¨v¡_Q 4 @  (²b?d èv¡ÝÀê @  (³c?d (w¡ŒCà @  (´d?d hw¡ÒÔÎ @  (µe?d ¨w¡\É;— @  (¶f?d èw¡ÞX,I @  (·g?d (x¡ø‡²ö @  (¸h?d hx¡z¥( @  (¹i?d ¨x¡( Jq @  (ºj?d èx¡ªœ]¯ @  (»k?d (y¡û„U @  (¼l?d hy¡yŽ“‹ @  (½m?d ¨y¡+•|Ò @  (¾n?d èy¡©k  @  (¿o?d (z¡Q¤A @  (Àp?d hz¡Ó³Ÿ @  (Áq?d ¨z¡\Æ @  (Âr?d èz¡‹K @  (Ãs?d ({¡R’â @  (Ät?d h{¡Й…< @  (Åu?d ¨{¡‚‚je @  (Æv?d è{¡}» @  (Çw?d (|¡ }œ @  (Èx?d h|¡‰ì‹È @  (Éy?d ¨|¡Û÷d‘ @  (Êz?d è|¡YfsO @  (Ë{?d (}¡媵 @  (Ì|?d h}¡Št½k @  (Í}?d ¨}¡ØoR2 @  (Î~?d è}¡ZþEì @  (Ï?d (~¡mJÓÜ @  (Ѐ?d h~¡ïÛÄ @  (Ñ?d ¨~¡½À+[ @  (Ò‚?d è~¡?Q<… @  (Óƒ?d (¡nÒå @  (Ô„?d h¡ìCò¡ @  (Õ…?d ¨¡uЀ¡'¾Xø @  (Ö†?d è¡AIyZ @  (×€‡?d @€¡=׉Œ @  (Ø€ˆ?d €€¡"‹r @  (Ù€‰?d À€¡í]q  @  (Ú€Š?d ¡=ýã @  (Û€‹?d @¡>O¿/ @  (Ü€Œ?d €¡º½Ñ @  (Ý€?d À¡îÅG¨ @  (Þ€Ž?d ‚¡sçi @  (߀?d @‚¡:Ç™© @  (à€?d €‚¡2›W @  (ထ?d À‚¡êMa. @  (‒?d€ ƒ¡NÆñ` @  )€“?d @ƒ¡¬Ýû… @  )€”?d €ƒ¡Œ(ù{ @  )€•?d Àƒ¡¹øï @  )€–?d „¡ P à @  )€—?d @„¡þSQæ @  )€˜?d €„¡Þ¦S @  )€™?d À„¡àkö @  )€š?d …¡0#zó @  ) €›?d @…¡ö0ÃÒ @  ) €œ?d €…¡ÖÅÁ, @  ) €?d À…¡ãóÀ¸ @  ) €ž?d †¡~·`y @  ) €Ÿ?d @†¡ØSaO @  )€ ?d €†¡ø¦c± @  )€¡?d À†¡kÊøR @  )€¢?d ‡¡»‚tº @  )€£?d @‡¡}‘Í› @  )€¤?d €‡¡]dÏe @  )€¥?d À‡¡hRÎñ @  )€¦?d ˆ¡\­Bì @  )€§?d @ˆ¡®ê @  )€¨?d €ˆ¡"[ @  )€©?d Àˆ¡–¿ @  )€ª?d ‰¡ÌÞ3ÿ @  )€«?d @‰¡ ÍŠÞ @  )€¬?d €‰¡*8ˆ  @  )€­?d À‰¡‰´ @  )€®?d Š¡‚J)u @  )€¯?d @Š¡¹Ÿ @  )€°?d €Š¡™ìa @  )€±?d ÀŠ¡†¯2 @  ) €²?d ‹¡ËÎ#Ú @  )!€³?d @‹¡ Ýšû @  )"€´?d €‹¡-(˜ @  )#€µ?d À‹¡™‘ @  )$€¶?d Œ¡Pjž @  )%€·?d @Œ¡_S0˜ @  )&€¸?d €Œ¡¦2f @  )'€¹?d ÀŒ¡Ak—e @  )(€º?d ¡‘# @  ))€»?d @¡W0¢¬ @  )*€¼?d €¡wÅ R @  )+€½?d À¡Bó¡Æ @  ),€¾?d ޡ߷ @  )-€¿?d @Ž¡‰  @  ).€À?d €Ž¡©öÞ @  )/€Á?d ÀŽ¡:šŒ= @  )0€Â?d ¡êÒÕ @  )1€Ã?d @¡,Á¹ô @  )2€Ä?d €¡ 4»  @  )3€Å?d À¡9ºž @  )4€Æ?d ¡‡Ü, @  )5€Ç?d @¡Ùß\* @  )6€È?d €¡ù*^Ô @  )7€É?d À¡Ççû× @  )8€Ê?d ‘¡¯w? @  )9€Ë?d @‘¡ѼÎ @  ):€Ì?d €‘¡ñIÌà @  );€Í?d À‘¡ÄÍt @  )<€Î?d ’¡Y;mµ @  )=€Ï?d @’¡bhU_ @  )>€Ð?d €’¡BW¡ @  )?€Ñ?d À’¡nðí` @  )@€Ò?d “¡¾¸aˆ @  )A€Ó?d @“¡x«Ø© @  )B€Ô?d €“¡X^ÚW @  )C€Õ?d À“¡mhÛà @  )D€Ö?d ”¡t&(Ì @  )E€×?d @”¡*%rÊ @  )F€Ø?d €”¡ Ðp4 @  )G€Ù?d À”¡4Õ7 @  )H€Ú?d •¡äUYß @  )I€Û?d @•¡"Fàþ @  )J€Ü?d €•¡³â @  )K€Ý?d À•¡7…ã” @  )L€Þ?d –¡ªÁCU @  )M€ß?d @–¡ %Bc @  )N€à?d €–¡,Ð@ @  )O€á?d À–¡¿¼Û~ @  )P€â?d —¡oôW– @  )Q€ã?d @—¡©çî· @  )R€ä?d €—¡‰ìI @  )S€å?d À—¡¼$íÝ @  )T€æ?d ˜¡ˆÛaÀ @  )U€ç?d @˜¡ÖØ;Æ @  )V€è?d €˜¡ö-98 @  )W€é?d À˜¡Èàœ; @  )X€ê?d ™¡¨Ó @  )Y€ë?d @™¡Þ»©ò @  )Z€ì?d €™¡þN«  @  )[€í?d À™¡Ëxª˜ @  )\€î?d š¡V< Y @  )]€ï?d @š¡mo2³ @  )^€ð?d €š¡Mš0M @  )_€ñ?d Àš¡ÏðŒ @  )`€ò?d ›¡¸ö @  )a€ó?d @›¡Ù«¹× @  )b€ô?d €›¡ù^») @  )c€õ?d À›¡Ìhº½ @  )d€ö?d œ¡Õ&I² @  )e€÷?d @œ¡‹%´ @  )f€ø?d €œ¡«ÐJ @  )g€ù?d Àœ¡•´I @  )h€ú?d ¡EU8¡ @  )i€û?d @¡ƒF€ @  )j€ü?d €¡£³ƒ~ @  )k€ý?d À¡–…‚ê @  )l€þ?d ž¡ Á"+ @  )m€ÿ?d @ž¡Úç} @  )n€?d €ž¡úƒ @  )o€?d Àž¡i~Ÿ` @  )p€?d Ÿ¡¹6ˆ @  )q€?d @Ÿ¡%ª© @  )r€?d €Ÿ¡_ШW @  )s€uР¡?d ÀŸ¡jæ©Ã @  )t€?d  ¡fmÙ @  )u?d X ¡8n^ß @  )v?d ˜ ¡›\! @  )w ?d Ø ¡&Vù" @  )x ?d ¡¡öuÊ @  )y ?d X¡¡0 Ìë @  )z ?d ˜¡¡øÎ @  ){ ?d Ø¡¡%ÎÏ @  )|?d ¢¡¸Šo@ @  )}?d X¢¡ƒÙWª @  )~?d ˜¢¡£,UT @  )?d Ø¢¡lߤ @  )€?d £¡¼_SL @  )?d X£¡zLêm @  )‚?d ˜£¡Z¹è“ @  )ƒ?d Ø£¡oé @  )„?d ¤¡vÁ @  )…?d X¤¡(Â@ @  )†?d ˜¤¡1ðž% @  )‡ ?d ؤ¡=;& @  )ˆ ?d ¥¡ßu·Î @  )‰ ?d X¥¡fï @  )Š ?d ˜¥¡9“  @  )‹ ?d Ø¥¡ ¥ … @  )Œ ?d ¦¡‘á­D @  ) ?d X¦¡7¬r @  )Ž  ?d ˜¦¡ð®Œ @  ) !?d ئ¡„œ5o @  ) "?d §¡TÔ¹‡ @  )‘ #?d X§¡’Ǧ @  )’ $?d ˜§¡²2X @  )“ %?d ا¡‡Ì @  )” &?d ¨¡³ûÑ @  )• '?d X¨¡íøÕ× @  )– (?d ˜¨¡Í ×) @  )— )?d ب¡óÀr* @  )˜ *?d ©¡#ˆþ @  )™ +?d X©¡å›Gã @  )š ,?d ˜©¡ÅnE @  )› -?d Ø©¡ðXD‰ @  )œ .?d ª¡mäH @  ) /?d Xª¡VOÜ¢ @  )ž 0?d ˜ª¡vºÞ\ @  )Ÿ 1?d ت¡ôÐb @  )  2?d «¡$˜îç @  )¡ 3?d X«¡â‹WÆ @  )¢ 4?d ˜«¡Â~U8 @  )£ 5?d Ø«¡÷HT¬ @  )¤ 6?d ¬¡î§£ @  )¥ 7?d X¬¡°ý¥ @  )¦ 8?d ˜¬¡ðÿ[ @  )§ 9?d ج¡®=ZX @  )¨ :?d ­¡~uÖ° @  )© ;?d X­¡¸fo‘ @  )ª <?d ˜­¡˜“mo @  )« =?d Ø­¡­¥lû @  )¬ >?d ®¡0áÌ: @  )­ ??d X®¡fUØ @  )® @?d ˜®¡F Úã @  )¯ A?d Ø®¡ÕÌA @  )° B?d ¯¡„Íè @  )± C?d X¯¡×tÉ @  )² D?d ˜¯¡ãbv7 @  )³ E?d د¡ÖTw£ @  )´ F?d °¡hŠË @  )µ G?d X°¡6‰‘ @  )¶ H?d ˜°¡|“é @  )· I?d ذ¡(±6ê @  )¸ J?d ±¡øùº @  )¹ K?d X±¡>ê# @  )º L?d ˜±¡Ý @  )» M?d ر¡+)I @  )¼ N?d ²¡¶m ˆ @  )½ O?d X²¡>˜b @  )¾ P?d ˜²¡­Ëšœ @  )¿ Q?d ز¡¦ ] @  )À R?d ³¡Q @  )Á S?d X³¡—ý” @  ) T?d ˜³¡·j @  )à U?d س¡‚>þ @  )Ä V?d ´¡›påñ @  )Å W?d X´¡Ås¿÷ @  )Æ X?d ˜´¡冽  @  )Ç Y?d Ø´¡ÛK  @  )È Z?d µ¡ ”â @  )É [?d Xµ¡Í-à @  )Ê \?d ˜µ¡íå/= @  )Ë ]?d ص¡ØÓ.© @  )Ì ^?d ¶¡E—Žh @  )Í _?d X¶¡ãs^ @  )Î `?d ˜¶¡Æ  @  )Ï a?d ض¡PêC @  )Ð b?d ·¡€¢š« @  )Ñ c?d X·¡F±#Š @  )Ò d?d ˜·¡fD!t @  )Ó e?d Ø·¡Sr à @  )Ô f?d ¸¡g¬ý @  )Õ g?d X¸¡9Žöû @  )Ö h?d ˜¸¡{ô @  )× i?d ظ¡'¶Q @  )Ø j?d ¹¡÷þÝî @  )Ù k?d X¹¡1ídÏ @  )Ú l?d ˜¹¡f1 @  )Û m?d ع¡$.g¥ @  )Ü n?d º¡¹jÇd @  )Ý o?d Xº¡‚9ÿŽ @  )Þ p?d ˜º¡¢Ìýp @  )ß q?d غ¡ ¦A# @  )à r?d »¡ðîÍË @  )á s?d X»¡6ýtê @  )â t?d€ ˜»¡×O @  * u?d Ø»¡8È© @  * v?d ¼¡v;¦ @  * w?d X¼¡<šM @  * x?d ˜¼¡¡É˜³ @  * y?d ؼ¡Q¶bÊ @  * z?d ½¡þî" @  * {?d X½¡‰_y @  * |?d ˜½¡©ª ‡ @  * }?d ؽ¡YÕðþ @  * ~?d ¾¡Ä‘P? @  * ?d X¾¡Jªëg @  * €?d ˜¾¡j_é™ @  * ?d ؾ¡š à @  * ‚?d ¿¡JhŸ @  * ƒ?d X¿¡ïhG³ @  * „?d ˜¿¡ÏEM @uÐÀ¡  * …?d Ø¿¡%cá @  *†?d 0À¡bÕ2³ @  *‡?d pÀ¡ùŸ“X @  *ˆ?d °À¡Ùj‘¦ @  *‰?d ðÀ¡)kß @  *Š?d 0Á¡ù]ç7 @  *‹?d pÁ¡ñül @  *Œ?d °Á¡Ñ ’ @  *?d ðÁ¡!vùë @  *Ž?d 0¡¼2Y* @  *?d p¡B(š- @  *?d °Â¡bݘÓ @  *‘?d ð¡’¢bª @  *’?d 0áBêîB @  *“?d páöìI @  * ”?d °Ã¡Ö· @  *!•?d ðá&féÎ @  *"–?d 0Ä¡?(Á @  *#—?d pÄ¡¤b»* @  *$˜?d °Ä¡„—¹Ô @  *%™?d ðÄ¡tèC­ @  *&š?d 0Å¡¤ ÏE @  *'›?d pÅ¡¬) @  *(œ?d °Å¡Œô+à @  *)?d ðÅ¡|‹Ñ™ @  **ž?d 0Æ¡áÏqX @  *+Ÿ?d pÆ¡‚b‹ƒ @  *, ?d °Æ¡¢—‰} @  *-¡?d ðÆ¡Rès @  *.¢?d 0Ç¡‚ ÿì @  */£?d pÇ¡' 'W @  *0¤?d °Ç¡U%© @  *1¥?d ðÇ¡÷*ßÐ @  *2¦?d 0È¡ÃÕSÍ @  *3§?d pÈ¡XŸò& @  *4¨?d °È¡xjðØ @  *5©?d ðÈ¡ˆ ¡ @  *6ª?d 0É¡X]†I @  *7«?d pÉ¡Pü` @  *8¬?d °É¡p bì @  *9­?d ðÉ¡€v˜• @  *:®?d 0Ê¡28T @  *;¯?d pÊ¡ã(ûS @  *<°?d °Ê¡ÃÝù­ @  *=±?d ðÊ¡3¢Ô @  *>²?d 0Ë¡ãê< @  *?³?d pË¡ùëv¥ @  *@´?d °Ë¡Ùt[ @  *Aµ?d ðË¡)aŽ" @  *B¶?d 0Ì¡0/}- @  *C·?d pÌ¡«eÜÆ @  *D¸?d °Ì¡‹Þ8 @  *E¹?d ðÌ¡{ï$A @  *Fº?d 0Í¡«§¨© @  *G»?d pÍ¡£Nò @  *H¼?d °Í¡ƒóL  @  *I½?d ðÍ¡sŒ¶u @  *J¾?d 0ΡîÈ´ @  *K¿?d pΡ}5ù~ @  *LÀ?d °Î¡]Àû€ @  *MÁ?d ðΡ­¿ù @  *NÂ?d 0Ï¡}÷ @  *OÃ?d pÏ¡Ø÷Uª @  *PÄ?d °Ï¡øWT @  *QÅ?d ðÏ¡}­- @  *RÆ?d 0С¶£Ÿ @  *SÇ?d pС-é°t @  *TÈ?d °Ð¡ ²Š @  *UÉ?d ðСýcHó @  *VÊ?d 0Ñ¡-+Ä @  *WË?d pÑ¡%Š"@ @  *XÌ?d °Ñ¡ ¾ @  *YÍ?d ðÑ¡õÚÇ @  *ZÎ?d 0Ò¡hDz @  *[Ï?d pÒ¡–^¹ @  *\Ð?d °Ò¡¶«»ÿ @  *]Ñ?d ðÒ¡FÔA† @  *^Ò?d 0Ó¡–œÍn @  *_Ó?d pÓ¡"š2e @  *`Ô?d °Ó¡o0› @  *aÕ?d ðÓ¡òÊâ @  *bÖ?d 0Ô¡ë^9í @  *c×?d pÔ¡p˜ @  *dØ?d °Ô¡Pášø @  *eÙ?d ðÔ¡ ž` @  *fÚ?d 0Õ¡pÖìi @  *gÛ?d pÕ¡xw 2 @  *hÜ?d °Õ¡X‚Ì @  *iÝ?d ðÕ¡¨ýòµ @  *jÞ?d 0Ö¡5¹Rt @  *kß?d pÖ¡V¨¯ @  *là?d °Ö¡váªQ @  *má?d ðÖ¡†žP( @  *nâ?d 0סVÖÜÀ @  *oã?d pסóÖ{ @  *pä?d °×¡Ó#… @  *qå?d ðס#\üü @  *ræ?d 0Ø¡£pá @  *sç?d pØ¡ŒéÑ  @  *tè?d °Ø¡¬Óô @  *ué?d ðØ¡\c) @  *vê?d 0Ù¡Œ+¥e @  *wë?d pÙ¡„ŠC> @  *xì?d °Ù¡¤AÀ @  *yí?d ðÙ¡T»¹ @  *zî?d 0Ú¡ÉDx @  *{ï?d pÚ¡7^Ø @  *|ð?d °Ú¡«Ú @  *}ñ?d ðÚ¡çÔ ø @  *~ò?d 0Û¡7œ¬ @  *ó?d pÛ¡ÎËe¸ @  *€ô?d °Û¡î>gF @  *õ?d ðÛ¡A? @  *‚ö?d 0Ü¡n0 @  *ƒ÷?d pÜ¡œEÏÛ @  *„ø?d °Ü¡¼°Í% @  *…ù?d ðÜ¡LÏ7\ @  *†ú?d 0Ý¡œ‡»´ @  *‡û?d pÝ¡”&]ï @  *ˆü?d °Ý¡´Ó_ @  *‰ý?d ðÝ¡D¬¥h @  *Šþ?d 0Þ¡Ùè© @  *‹ÿ?d pÞ¡(´ëý @  *Œ ?d °Þ¡Aé @  * ?d ðÞ¡ø>z @  *Ž ?d 0ß¡(vŸ’ @  * ?d pß¡vG) @  * ?d uÐà¡/°ß¡­ƒE× @  *‘ ?d ðß¡]ü¿® @  *’ ?d Hà¡DXáX @  *“ ?d ˆà¡}vU“ @  *” ?d Èà¡ÿçBM @  *• ?d á¡]A# @  *– ?d Há¡ßÐ4Ü @  *— ?d ˆá¡uǧ @  *˜ ?d Èá¡÷„Ðy @  *™ ?d â¡. @  *š ?d H⡚¿ŠÁ @  *› ?d ˆâ¡ÆÁ\æ @  *œ ?d Èâ¡DPK8 @  * ?d ã¡æö*w @  *ž ?d Hã¡dg=© @  *Ÿ ?d ˆã¡rׂ @  *  ?d Èã¡ð”À\ @  *¡ ?d ä¡›4Þô @  *¢ ?d Hä¡¥É* @  *£ ?d ˆä¡ ‹}á @  *¤ ?d Èä¡¢j? @  *¥ ?d 塼 p @  *¦ ?d Hå¡‚-® @  *§ ?d ˆå¡(èïÕ @  *¨ ?d È塪yø  @  *© ?d æ¡EÓµm @  *ª ?d Hæ¡ÇB¢³ @  *« ?d ˆæ¡‹MH @  *¬ ?d Èæ¡„Z– @  *­! ?d ç¡&¼;Ù @  *®" ?d H硤-, @  *¯# ?d ˆç¡£Iᜠ@  *°$ ?d Èç¡!ØöB @  *±% ?d è¡gÉ—ø @  *²& ?d Hè¡åX€& @  *³' ?d ˆè¡Üv4í @  *´( ?d Èè¡^ç#3 @  *µ) ?d é¡üAB| @  *¶* ?d Hé¡~ÐU¢ @  *·+ ?d ˆé¡Ô¦Ù @  *¸, ?d Èé¡V„± @  *¹- ?d ꡹.üa @  *º. ?d Hê¡;¿ë¿ @  *»/ ?d ˆê¡gÁ=˜ @  *¼0 ?d Èê¡åP*F @  *½1 ?d ë¡GöK  @  *¾2 ?d Hë¡Åg\× @  *¿3 ?d ˆë¡}°n @  *À4 ?d Èë¡ÿ“§° @  *Á5 ?d ì¡”3¹ @  *Â6 ?d Hì¡¢®Æ @  *Ã7 ?d ˆì¡/Œ  @  *Ä8 ?d Èì¡­ Ó @  *Å9 ?d í¡»lœ @  *Æ: ?d Hí¡*{B @  *Ç; ?d ˆí¡'ïˆ9 @  *È< ?d Èí¡¥~Ÿç @  *É= ?d î¡JÔÒ @  *Ê> ?d Hî¡ÈEÅ_ @  *Ë? ?d ˆî¡ùÜ?µ @  *Ì@ ?d Èî¡{M(k @  *ÍA ?d ï¡ÙëI$ @  *ÎB ?d Hï¡[z^ú @  *ÏC ?d ˆï¡\“a @  *ÐD ?d Èï¡Þ„¿ @  *ÑE ?d ð¡¿Õª @  *ÒF ?d Hð¡.Ât @  *ÓG ?d ˆð¡©v¿ @  *ÔH ?d Èð¡+‘aa @  *ÕI ?d ñ¡‰7. @  *ÖJ ?d Hñ¡ ¦ð @  *×K ?d ˆñ¡¡cä‹ @  *ØL ?d Èñ¡#òóU @  *ÙM ?d ò¡ÌX¾3 @  *ÚN ?d Hò¡NÉ©í @  *ÛO ?d ˆò¡·Ê @  *ÜP ?d Èò¡&h @  *ÝQ ?d ó¡2€ [ @  *ÞR ?d Hó¡°… @  *ßS ?d ˆó¡¦sô® @  *àT ?d Èó¡$âãp @  *áU ?d ô¡OBýØ @  *âV ?d€ Hô¡¹ö  @  +W ?d ˆô¡a B @  +X ?d Èô¡ãîœ @  +Y ?d õ¡„‡> @  +Z ?d Hõ¡à @  +[ ?d ˆõ¡bç<á @  +\ ?d Èõ¡àv+? @  +] ?d ö¡Án9# @  +^ ?d Hö¡Cÿ.ý @  + _ ?d ˆö¡G:ë @  + ` ?d Èö¡Åî-5 @  + a ?d ÷¡¢·— @  + b ?d H÷¡  I @  + c ?d ˆ÷¡Dç H @  +d ?d È÷¡Æv– @  +e ?d ø¡ãt¶ @  +f ?d Hø¡aå h @  +g ?d ˆø¡‚CN @  +h ?d Èø¡T @  +i ?d ù¡xüÎ2 @  +j ?d Hù¡úmÙì @  +k ?d ˆù¡žuí @  +l ?d Èù¡‹b3 @  +m ?d ú¡=“p/ @  +n ?d Hú¡¿gñ @  +o ?d ˆú¡&5J; @  +p ?d Èú¡¤¤]å @  +q ?d û¡ÃKÇG @  +r ?d Hû¡AÚЙ @  +s ?d ˆû¡%­|˜ @  +t ?d Èû¡§” ?d à¢Û¤± @  +?• ?d ¢lÑ¡ @  +@– ?d `¢î‡Æ @  +A— ?d  ¢à‰Y @  +B˜ ?d à¢qž‡ @  +C™ ?d ¢÷ž% @  +Dš ?d `¢uû @  +E› ?d  ¢x¿ú @  +Fœ ?d ࢓é¨$ @  +G ?d ¢²ñº8 @  +Hž ?d `¢0`­æ @  +IŸ ?d  ¢4à¹ð @  +J  ?d ࢶq®. @  +K¡ ?d ¢Ñž4Œ @  +L¢ ?d `¢S#R @  +M£ ?d  ¢7xS @  +N¤ ?d à¢µé˜ @  +O¥ ?d ¢똭 @  +P¦ ?d `¢zs @  +Q§ ?d  ¢îÀU @  +R¨ ?d à¢lŒ×‹ @  +S© ?d ¢ cM) @  +Tª ?d ` ¢‰òZ÷ @  +U« ?d   ¢í…öö @  +V¬ ?d à ¢oá( @  +W­ ?d ¢N ó4 @  +X® ?d ` ¢Ìäê @  +Y¯ ?d   ¢UªÉ  @  +Z° ?d à ¢×;Þþ @  +[± ?d ¢°ÔD\ @  +\² ?d ` ¢2ES‚ @  +]³ ?d   ¢V2ÿƒ @  +^´ ?d à ¢Ô£è] @  +_µ ?d ¢Í°ß @  +`¶ ?d ` ¢O‡§ @  +a· ?d   ¢³àè' @  +b¸ ?d à ¢1qÿù @  +c¹ ?d ¢Vže[ @  +dº ?d ` ¢Ôr… @  +e» ?d   ¢°xÞ„ @  +f¼ ?d à ¢2éÉZ @  +g½ ?d ¢ñÛF @  +h¾ ?d `¢‘`̘ @  +i¿ ?d  ¢e°ÍŸ @  +jÀ ?d à¢ç!ÚA @  +kÁ ?d ¢€Î@ã @  +l ?d `¢_W= @  +mà ?d  ¢f(û< @  +nÄ ?d à¢ä¹ìâ @  +oÅ ?d ¢KšÜm @  +pÆ ?d `¢É ˳ @  +qÇ ?d  ¢5l„• @  +rÈ ?d ࢷý“K @  +sÉ ?d ¢Ð é @  +tÊ ?d `¢Rƒ7 @  +uË ?d  ¢6ô²6 @  +vÌ ?d ࢴe¥è @  +wÍ ?d ¢•}·ô @  +xÎ ?d `¢ì * @  +yÏ ?d  ¢ŽÛà @  +zÐ ?d ࢠJš> @  +{Ñ ?d ¢k¥œ @  +|Ò ?d `¢é4B @  +}Ó ?d  ¢C»C @  +~Ô ?d à¢Ò¬ @  +Õ ?d ¢[6¼ @  +€Ö ?d `¢Ù§Õb @  +× ?d  ¢%ÀšD @  +‚Ø ?d ࢧQš @  +ƒÙ ?d ¢À¾8 @  +„Ú ?d `¢B/æ @  +…Û ?d  ¢&X¬ç @  +†Ü ?d ࢤɻ9 @  +‡Ý ?d ¢…Ñ©% @  +ˆÞ ?d `¢@¾û @  +‰ß ?d  ¢Àªí @  +Šà ?d à¢Q½3 @  +‹á ?d ¢æ¾'‘ @  +Œâ ?d `¢d/0O @  +ã ?d  ¢XœN @  +Žä ?d ࢂɋ @  +å ?d ¢§Ë‹° @  +æ ?d `¢%Zœn @  +‘ç ?d  ¢Ù=ÓH @  +’è ?d à¢[¬Ä– @  +“é ?d ¢S6’ @  +¼€ ?d x#¢¼Â!L @  +½€ ?d ¸#¢صM @  +¾€ ?d ø#¢Z$š“ @  +¿€ ?d 8$¢í–ă @  +À€ ?d x$¢oÓ] @  +Á€ ?d ¸$¢“`œ{ @  +€ ?d ø$¢ñ‹¥ @  +À ?d 8%¢v @  +Ä€ ?d x%¢ôÙ @  +Å€ ?d ¸%¢øªØ @  +Æ€ ?d ø%¢i½ @  +Ç€ ?d 8&¢3q¯ @  +È€ ?d x&¢±à¸Ä @  +É€ ?d ¸&¢µ`¬Ò @  +Ê€ ?d ø&¢7ñ»  @  +Ë€! ?d 8'¢P!® @  +Ì€" ?d x'¢Ò6p @  +Í€# ?d ¸'¢¶øšq @  +΀$ ?d ø'¢4i¯ @  +Ï€% ?d 8(¢k @  +Ѐ& ?d x(¢“úšQ @  +Ñ€' ?d ¸(¢oÕw @  +Ò€( ?d ø(¢í © @  +Ó€) ?d 8)¢ŠãX  @  +Ô€* ?d x)¢rOÕ @  +Õ€+ ?d ¸)¢lãÔ @  +Ö€, ?d ø)¢î”ô  @  +×€- ?d 8*¢ÏŒæ @  +Ø€. ?d x*¢MñÈ @  +Ù€/ ?d ¸*¢Ô*Ü @  +Ú€0 ?d ø*¢V»ËÜ @  +Û€1 ?d 8+¢1TQ~ @  +Ü€2 ?d x+¢³ÅF  @  +Ý€3 ?d ¸+¢ײê¡ @  +Þ€4 ?d ø+¢U#ý @  +߀5 ?d 8,¢L–¥ý @  +à€6 ?d x,¢Î²# @  +á€7 ?d ¸,¢2`ý @  +â€8 ?d€ ø,¢6§Bb @  ,€9 ?d 8-¢° é @  ,€: ?d x-¢2˜‡7 @  ,€; ?d ¸-¢“¦ÐÛ @  ,€< ?d ø-¢7Ç @  ,€= ?d 8.¢þŠc @  ,€> ?d x.¢| ½ @  ,€? ?d ¸.¢FnÃÀ @  ,€@ ?d ø.¢ÄÿÔ @  , €A ?d 8/¢fYµQ @  , €B ?d x/¢äÈ¢ @  , €C ?d ¸/¢Eöõc @  , €D ?d ø/¢Çgâ½ @  , €E ?d 80¢ W³¨ @  ,€F ?d x0¢‰Æ¤v @  ,€G ?d ¸0¢²ŠÊ @  ,€H ?d ø0¢”# @  ,€I ?d 81¢6…ü[ @  ,€J ?d x1¢´ë… @  ,€K ?d ¸1¢*¼i @  ,€L ?d ø1¢—»«· @  ,€M ?d 82¢xæÑ @  ,€N ?d x2¢ú€ñ @  ,€O ?d ¸2¢­ƒ¿ @  ,€P ?d ø2¢/””a @  ,€Q ?d 83¢2õ. @  ,€R ?d x3¢£âð @  ,€S ?d ¸3¢®µ @  ,€T ?d ø3¢, ¢Â @  ,€U ?d 84¢G¬¼j @  ,€V ?d x4¢Å=«´ @  ,€W ?d ¸4¢KO¢¸ @  , €X ?d ø4¢ÉÞµf @  ,!€Y ?d 85¢kxÔ) @  ,"€Z ?d x5¢ééÃ÷ @  ,#€[ ?d ¸5¢H×” @  ,$€\ ?d ø5¢ÊFƒÅ @  ,%€] ?d 86¢%ìΣ @  ,&€^ ?d x6¢§}Ù} @  ,'€_ ?d ¸6¢mO’ @  ,(€` ?d ø6¢ïÞ…Ï @  ,)€a ?d 87¢Mxä€ @  ,*€b ?d x7¢Ïéó^ @  ,+€c ?d ¸7¢nפ² @  ,,€d ?d ø7¢ìF³l @  ,-€e ?d 88¢ªWÒÖ @  ,.€f ?d x8¢(ÆÅ @  ,/€g ?d ¸8¢·²ë´ @  ,0€h ?d ø8¢5#üj @  ,1€i ?d 89¢—…% @  ,2€j ?d x9¢Šû @  ,3€k ?d ¸9¢´*Ý @  ,4€l ?d ø9¢6»ÊÉ @  ,5€m ?d 8:¢Ù‡¯ @  ,6€n ?d x:¢[€q @  ,7€o ?d ¸:¢ âÁ @  ,8€p ?d ø:¢Ž”õ @  ,9€q ?d 8;¢,2”P @  ,:€r ?d x;¢®£ƒŽ @  ,;€s ?d ¸;¢Ôb @  ,<€t ?d ø;¢ ü @  ,=€u ?d 8<¢æ¬Ý @  ,>€v ?d x<¢d=ÊÊ @  ,?€w ?d ¸<¢DHÅT @  ,@€x ?d ø<¢ÆÙÒŠ @  ,A€y ?d 8=¢d³Å @  ,B€z ?d x=¢æî¤ @  ,C€{ ?d ¸=¢GÐó÷ @  ,D€| ?d ø=¢ÅAä) @  ,E€} ?d 8>¢*ë©O @  ,F€~ ?d x>¢¨z¾‘ @  ,G€ ?d ¸>¢Þ´~ @  ,H€€ ?d ø>¢ O£  @  ,I€ ?d 8?¢¯éÂï @  ,J€‚ ?d x?¢-xÕ1 @  ,K€ƒ ?duÐ@¢7 ¸?¢ŒF‚Ý @  ,L€„ ?d ø?¢sWæ @  ,M… ?d P@¢Â±ä @  ,N† ?d @¢âà³ @  ,O‡ ?d Ð@¢ßðˆ† @  ,Pˆ ?d A¢¸n @  ,Q‰ ?d PA¢ÿÇþ @  ,RŠ ?d A¢ß2üé @  ,S‹ ?d ÐA¢Üh¾% @  ,TŒ ?d B¢A,ä @  ,U ?d PB¢±Sä @  ,VŽ ?d B¢‘¦æc @  ,W ?d ÐB¢dGó @  ,X ?d C¢´  @  ,Y‘ ?d PC¢Dp÷b @  ,Z’ ?d C¢d…õœ @  ,[“ ?d ÐC¢gß·P @  ,\” ?d D¢~‘D_ @  ,]• ?d PD¢Žî¾& @  ,^– ?d D¢®¼Ø @  ,_— ?d ÐD¢‚  ô @  ,`˜ ?d E¢RE, @  ,a™ ?d PE¢¢:Öe @  ,bš ?d E¢‚ÏÔ› @  ,c› ?d ÐE¢•–W @  ,dœ ?d F¢Ñ6– @  ,e ?d PF¢ì®Ìï @  ,fž ?d F¢Ì[Î @  ,gŸ ?d ÐF¢¤ ] @  ,h  ?d G¢tEµ @  ,i¡ ?d PG¢„:æÌ @  ,j¢ ?d G¢¤Ïä2 @  ,k£ ?d ÐG¢§•¦þ @  ,l¤ ?d H¢“j*ã @  ,m¥ ?d PH¢cК @  ,n¦ ?d H¢CàÒd @  ,o§ ?d ÐH¢~ðéø @  ,p¨ ?d I¢®¸e @  ,q© ?d PI¢^ÇŸi @  ,rª ?d I¢~2— @  ,s« ?d ÐI¢}hß[ @  ,t¬ ?d J¢à,š @  ,u­ ?d PJ¢S…ã @  ,v® ?d J¢0¦‡ @  ,w¯ ?d ÐJ¢ÅGà @  ,x° ?d K¢le @  ,y± ?d PK¢åp– @  ,z² ?d K¢Å…”â @  ,{³ ?d ÐK¢ÆßÖ. @  ,|´ ?d L¢ß‘%! @  ,}µ ?d PL¢/îßX @  ,~¶ ?d L¢ݦ @  ,· ?d ÐL¢n\÷) @  ,€¸ ?d M¢¾{Á @  ,¹ ?d PM¢Nk¸ @  ,‚º ?d M¢nžƒF @  ,ƒ» ?d ÐM¢mÄÁŠ @  ,„¼ ?d N¢ð€aK @  ,…½ ?d PN¢ÿ›2 @  ,†¾ ?d N¢ ™Ì @  ,‡¿ ?d ÐN¢¸ Ò‘ @  ,ˆÀ ?d O¢hD^y @  ,‰Á ?d PO¢˜;¤ @  ,Š ?d O¢¸Î¦þ @  ,‹à ?d ÐO¢»”ä2 @  ,ŒÄ ?d P¢JX€ @  ,Å ?d PP¢õ5¢ù @  ,ŽÆ ?d P¢ÕÀ  @  ,Ç ?d ÐP¢èЛ› @  ,È ?d Q¢8˜s @  ,‘É ?d PQ¢Èçí  @  ,’Ê ?d Q¢èïô @  ,“Ë ?d ÐQ¢ëH­8 @  ,”Ì ?d R¢v ù @  ,•Í ?d PR¢†s÷€ @  ,–Î ?d R¢¦†õ~ @  ,—Ï ?d ÐR¢Sg’î @  ,˜Ð ?d S¢ƒ/ @  ,™Ñ ?d PS¢sPä @  ,šÒ ?d S¢S¥æ @  ,›Ó ?d ÐS¢Pÿ¤M @  ,œÔ ?d T¢I±WB @  ,Õ ?d PT¢¹Î­; @  ,žÖ ?d T¢™;¯Å @  ,Ÿ× ?d ÐT¢µ-³é @  , Ø ?d U¢ee? @  ,¡Ù ?d PU¢•Åx @  ,¢Ú ?d U¢µïdž @  ,£Û ?d ÐU¢¶µ…J @  ,¤Ü ?d V¢+ñ%‹ @  ,¥Ý ?d PV¢ÛŽßò @  ,¦Þ ?d V¢û{Ý  @  ,§ß ?d ÐV¢“-ƒ@ @  ,¨à ?d W¢Ce¨ @  ,©á ?d PW¢³õÑ @  ,ªâ ?d W¢“ï÷/ @  ,«ã ?d ÐW¢µµã @  ,¬ä ?d X¢¤J9þ @  ,­å ?d PX¢T5Ç @  ,®æ ?d X¢tÀÁy @  ,¯ç ?d ÐX¢IÐúå @  ,°è ?d Y¢™˜v  @  ,±é ?d PY¢içŒt @  ,²ê ?d Y¢IŽŠ @  ,³ë ?d ÐY¢JHÌF @  ,´ì ?d Z¢× l‡ @  ,µí ?d PZ¢'s–þ @  ,¶î ?d Z¢†” @  ,·ï ?d ÐZ¢ògó @  ,¸ð ?d [¢"/x @  ,¹ñ ?d P[¢ÒP… @  ,ºò ?d [¢ò¥‡ÿ @  ,»ó ?d Ð[¢ñÿÅ3 @  ,¼ô ?d \¢è±6< @  ,½õ ?d P\¢ÎÌE @  ,¾ö ?d \¢8;λ @  ,¿÷ ?d Ð\¢º*Ô @  ,Àø ?d ]¢jbXí @  ,Áù ?d P]¢š¢” @  ,Âú ?d ]¢ºè j @  ,Ãû ?d Ð]¢¹²â¦ @  ,Äü ?d ^¢$öBg @  ,Åý ?d P^¢Ô‰¸ @  ,Æþ ?d ^¢ô|ºà @  ,Çÿ ?d Ð^¢Ûð# @  ,È ?d _¢Þ“|Ë @  ,É ?d P_¢.솲 @  ,Ê ?d _¢„L @  ,uÐ`¢Ë ?d Ð_¢ CÆ€ @  ,Ì ?d (`¢³»s @  ,Í ?d h`¢Cĉa @  ,Î ?d ¨`¢c1‹Ÿ @  ,Ï ?d è`¢^!° @  ,Ð ?d (a¢Ži<ë @  ,Ñ ?d ha¢~Æ’ @  ,Ò ?d ¨a¢^ãÄl @  ,Ó ?d èa¢]¹†  @  ,Ô ?d (b¢Àý&a @  ,Õ ?d hb¢0‚Ü @  ,Ö ?d ¨b¢wÞæ @  ,× ?d èb¢å–¹v @  ,Ø ?d (c¢5Þ5ž @  ,Ù ?d hc¢Å¡Ïç @  ,Ú ?d ¨c¢åTÍ @  ,Û ?d èc¢æÕ @  ,Ü ?d (d¢ÿ@|Ú @  ,Ý ?d hd¢?†£ @  ,Þ ?d ¨d¢/Ê„] @  ,ß ?d èd¢ܘq @  ,à ?d (e¢Ó”™ @  ,á ?d he¢#ëîà @  ,â ?d€ ¨e¢wÝð¸ @  - ?d èe¢•Æú] @  - ?d (f¢‚Zœ @  - ?d hf¢=´[ @  - ?d ¨f¢AYö @  - ?d èf¢»¥XÀ @  - ?d (g¢kíÔ( @  -! ?d hg¢U q+ @  -" ?d ¨g¢uÕsÕ @  - # ?d èg¢³ÆÊô @  - $ ?d (h¢‡9Fé @  - % ?d hh¢²G} @  - & ?d ¨h¢’úEƒ @  - ' ?d èh¢Ìù… @  -( ?d (i¢±“m @  -) ?d hi¢ÝŽ @  -* ?d ¨i¢¯( p @  -+ ?d èi¢i;³Q @  -, ?d (j¢ô @  -- ?d hj¢ÁI @  -. ?d ¨j¢á¼ú @  -/ ?d èj¢Úï( @  -0 ?d (k¢ §¤ø @  -1 ?d hk¢4jû @  -2 ?d ¨k¢Ÿ @  -3 ?d èk¢ÒŒº$ @  -4 ?d (l¢ËÂI+ @  -5 ?d hl¢þôH¿ @  -6 ?d ¨l¢ÞJA @  -7 ?d èl¢€G @  -8 ?d (m¢PJœ¯ @  -9 ?d hm¢Ò ü @  - : ?d ¨m¢òÕ" @  -!; ?d èm¢4Æ›# @  -"< ?d (n¢©‚;â @  -#= ?d hn¢œ´:v @  -$> ?d ¨n¢¼A8ˆ @  -%? ?d èn¢êõ,¯ @  -&@ ?d (o¢:½ G @  -'A ?d ho¢pD @  -(B ?d ¨o¢$…º @  -)C ?d èo¢â–¾› @  -*D ?d (p¢\H) @  -+E ?d hp¢i~½ @  -,F ?d ¨p¢I‹C @  --G ?d èp¢ˆ[E @  -.H ?d (q¢ÇÀ×­ @  -/I ?d hq¢T¬LN @  -0J ?d ¨q¢tYN° @  -1K ?d èq¢²J÷‘ @  -2L ?d (r¢/WP @  -3M ?d hr¢8VÄ @  -4N ?d ¨r¢:ÍT: @  -5O ?d èr¢žlÐ @  -6P ?d (s¢ÑÖà8 @  -7Q ?d hs¢ïE; @  -8R ?d ¨s¢ÏîGÅ @  -9S ?d ès¢ ýþä @  -:T ?d (t¢³ ë @  -;U ?d ht¢%…  @  -<V ?d ¨t¢p @  -=W ?d èt¢[sT‡ @  ->X ?d (u¢‹;Øo @  -?Y ?d hu¢§Vb® @  -@Z ?d ¨u¢‡£`P @  -A[ ?d èu¢A°Ùq @  -B\ ?d (v¢Üôy° @  -C] ?d hv¢éÂx$ @  -D^ ?d ¨v¢É7zÚ @  -E_ ?d èv¢oÓ{ì @  -F` ?d (w¢¿›÷ @  -Ga ?d hw¢VR @  -Hb ?d ¨w¢¡£Pù @  -Ic ?d èw¢g°éØ @  -Jd ?d (x¢SOeÅ @  -Ke ?d hx¢fydQ @  -Lf ?d ¨x¢FŒf¯ @  -Mg ?d èx¢<© @  -Nh ?d (y¢ÈǰA @  -Oi ?d hy¢[«+¢ @  -Pj ?d ¨y¢{^)\ @  -Qk ?d èy¢½M} @  -Rl ?d (z¢ 0¼ @  -Sm ?d hz¢?1( @  -Tn ?d ¨z¢5Ê3Ö @  -Uo ?d èz¢™ < @  -Vp ?d ({¢ÞчÔ @  -Wq ?d h{¢à"× @  -Xr ?d ¨{¢Àé ) @  -Ys ?d è{¢ú™ @  -Zt ?d (|¢´j @  -[u ?d h|¢*‚k“ @  -\v ?d ¨|¢ wim @  -]w ?d è|¢Tt3k @  -^x ?d (}¢„<¿ƒ @  -_y ?d h}¢VÐ @  -`z ?d ¨}¢&£. @  -a{ ?d è}¢à°¸ @  -b| ?d (~¢}ôÎ @  -c} ?d h~¢HÂZ @  -d~ ?d ¨~¢h7¤ @  -e ?d è~¢#E[ @  -f€ ?d (¢ó ×ù @  -g ?d h¢ÍÀrú @  -h‚ ?d ¨¢uЀ¢'í5p @  -iƒ ?d è¢+&É% @  -j„ ?d @€¢E˜+Q @  -k… ?d €€¢ÒÊ?å @  -l† ?d À€¢P[(; @  -m‡ ?d ¢\é  @  -nˆ ?d @¢ÞþÕ @  -o‰ ?d €¢ïp @  -pŠ ?d À¢m‰gÈ @  -q‹ ?d ‚¢´Oiö @  -rŒ ?d @‚¢6Þ~( @  -s ?d €‚¢¡Œjœ @  -tŽ ?d À‚¢#}B @  -u ?d ƒ¢J—Þž @  -v ?d @ƒ¢ÈÉ@ @  -w‘ ?d €ƒ¢T¯yc @  -x’ ?d Àƒ¢Ö>n½ @  -y“ ?d „¢‹ò3M @  -z” ?d @„¢ c$“ @  -{• ?d €„¢ž10' @  -|– ?d À„¢ 'ù @  -}— ?d …¢zæÉ @  -~˜ ?d @…¢’ëñ @  -™ ?d €…¢ÿ´nÇ @  -€š ?d À…¢}%y @  -› ?d †¢¤ãw' @  -‚œ ?d @†¢&r`ù @  -ƒ ?d €†¢± tM @  -„ž ?d À†¢3±c“ @  -…Ÿ ?d ‡¢ÇŒù“ @  -†  ?d @‡¢EîM @  -‡¡ ?d €‡¢Ù´^n @  -ˆ¢ ?d À‡¢[%I° @  -‰£ ?d ˆ¢+XkR @  -Ф ?d @ˆ¢©É|Œ @  -‹¥ ?d €ˆ¢>›h8 @  -Œ¦ ?d Àˆ¢¼ æ @  -§ ?d ‰¢°Ð¾Ö @  -ލ ?d @‰¢2A© @  -© ?d €‰¢I'Ë @  -ª ?d À‰¢Ø0 @  -‘« ?d Š¢X>+ @  -’¬ ?d @Š¢Ú)õ @  -“­ ?d €Š¢MÝ=A @  -”® ?d ÀŠ¢ÏL*Ÿ @  -•¯ ?d ‹¢¦Æ‰C @  -–° ?d @‹¢$Wž @  -—± ?d €‹¢¸þ.¾ @  -˜² ?d À‹¢:o9` @  -™³ ?d Œ¢g£d @  -š´ ?d @Œ¢å2sN @  -›µ ?d €Œ¢r`gú @  -œ¶ ?d ÀŒ¢ðñp$ @  -· ?d ¢ü+± @  -ž¸ ?d @¢~º¦Ê @  -Ÿ¹ ?d €¢^´¹ @  - º ?d À¢Ü%g @  -¡» ?d Ž¢ãY @  -¢¼ ?d @Ž¢‡r‡ @  -£½ ?d €Ž¢ 3 @  -¤¾ ?d ÀŽ¢’±í @  -¥¿ ?d ¢–Üü @  -¦À ?d @¢Mš" @  -§Á ?d €¢ˆä* @  -¨ ?d À¢ u=ß @  -©à ?d ¢ð)/’ @  -ªÄ ?d @¢r¸8L @  -«Å ?d €¢åê,ø @  -¬Æ ?d À¢g{;& @  -­Ç ?d ‘¢k¡ú @  -®È ?d @‘¢é0íÈ @  -¯É ?d €‘¢Ø8c  @  -°Ê ?d À‘¢Z©tÕ @  -±Ë ?d ’¢ƒozë @  -²Ì ?d @’¢þm5 @  -³Í ?d €’¢–¬y @  -´Î ?d À’¢=n_ @  -µÏ ?d “¢}·Íƒ @  -¶Ð ?d @“¢ÿ&Ú] @  -·Ñ ?d €“¢cj~ @  -¸Ò ?d À“¢á}  @  -¹Ó ?d ”¢¼Ò P @  -ºÔ ?d @”¢>C7Ž @  -»Õ ?d €”¢©#: @  -¼Ö ?d À”¢+€4ä @  -½× ?d •¢'ZõÔ @  -¾Ø ?d @•¢¥Ëâ  @  -¿Ù ?d €•¢+ÂMë @  -ÀÚ ?d À•¢©SZ5 @  -ÁÛ ?d –¢p•T  @  -ÂÜ ?d @–¢òCÕ @  -ÃÝ ?d €–¢eVWa @  -ÄÞ ?d À–¢çÇ@¿ @  -Åß ?d —¢úÚ¿ @  -Æà ?d @—¢‘kÍa @  -Çá ?d €—¢ Â}B @  -Èâ ?d À—¢Sjœ @  -Éã ?d ˜¢ÿ.H~ @  -Êä ?d @˜¢}¿_  @  -Ëå ?d €˜¢êíK @  -Ìæ ?d À˜¢h|\Ê @  -Íç ?d ™¢d¦ú @  -Îè ?d @™¢æ7Š$ @  -Ïé ?d €™¢×?ç @  -Ðê ?d À™¢U®9 @  -Ñë ?d š¢Œh @  -Òì ?d @š¢ù Ù @  -Óí ?d €š¢™«m @  -Ôî ?d Àš¢: ³ @  -Õï ?d ›¢r°ªo @  -Öð ?d @›¢ð!½± @  -×ñ ?d €›¢lˆ ’ @  -Øò ?d À›¢îL @  -Ùó ?d œ¢³ÕG¼ @  -Úô ?d @œ¢1DPb @  -Ûõ ?d €œ¢¦DÖ @  -Üö ?d Àœ¢$‡S @  -Ý÷ ?d ¢(]’8 @  -Þø ?d @¢ªÌ…æ @  -ßù ?d €¢ŠÂ,• @  -àú ?d À¢S;K @  -áû ?d ž¢Ñ•5u @  -âü ?d€ @ž¢’CÕ« @  .ý ?d €ž¢äP‰6 @  .þ ?d Àž¢fÁžè @  .ÿ ?d Ÿ¢ùMÔ @  . ?d @Ÿ¢{Üà@  . ?d €Ÿ¢)Ç,› @  . uР¢?d ÀŸ¢«V;E @  . ?d  ¢Pm¦ @  . ?d X ¢Òüx @  .  ?d ˜ ¢€çì! @  .  ?d Ø ¢vûÿ @  .  ?d ¡¢ËåÁ" @  .  ?d X¡¢ItÖü @  .  ?d ˜¡¢o9¥ @  . ?d Ø¡¢™þ.{ @  . ?d ¢¢#+Aß @  . ?d X¢¢¡ºV @  . ?d ˜¢¢ó¡¹X @  . ?d Ø¢¢q0®† @  . ?d £¢Ýóö· @  . ?d X£¢_bái @  . ?d ˜£¢ y0 @  . ?d Ø£¢èî @  . ?d ¤¢–d @  . ?d X¤¢ž º @  . ?d ˜¤¢Ìãã @  . ?d ؤ¢Nô= @  . ?d ¥¢‡Îà @  . ?d X¥¢Ù> @  . ?d ˜¥¢W”6g @  . ?d Ø¥¢Õ!¹ @  . ?d ¦¢~Öi­ @  .  ?d X¦¢üG~s @  .! ?d ˜¦¢®\‘* @  ." ?d ئ¢,͆ô @  .# ?d §¢¹ç @  .$ ?d X§¢Ÿ(ðÇ @  .%! ?d ˜§¢Í3ž @  .&" ?d ا¢O¢@ @  .'# ?d ¨¢ñmuØ @  .($ ?d X¨¢süb @  .)% ?d ˜¨¢!ç_ @  .*& ?d ب¢£vš @  .+' ?d ©¢jå \ @  .,( ?d X©¢èt·‚ @  .-) ?d ˜©¢ºoXÛ @  ..* ?d Ø©¢8þO @  ./+ ?d ª¢‚+ ¡ @  .0, ?d Xª¢º7 @  .1- ?d ˜ª¢R¡Ø& @  .2. ?d ت¢Ð0Ïø @  .3/ ?d «¢|ó—É @  .40 ?d X«¢þb€ @  .51 ?d ˜«¢¬yoN @  .62 ?d Ø«¢.èx @  .73 ?d ¬¢½–z @  .84 ?d X¬¢?mÄ @  .95 ?d ˜¬¢m‚ @  .:6 ?d ج¢ï•C @  .;7 ?d ­¢&¯ž @  .<8 ?d X­¢¤¸@ @  .=9 ?d ˜­¢ö”W @  .>: ?d Ø­¢t@Ç @  .?; ?d ®¢qÑA @  .@< ?d X®¢ó@Ÿ @  .A= ?d ˜®¢¡[öÆ @  .B> ?d Ø®¢#Êá @  .C? ?d ¯¢âî•ä @  .D@ ?d X¯¢`‚: @  .EA ?d ˜¯¢2dmc @  .FB ?d د¢°õz½ @  .GC ?d °¢„7Š @  .HD ?d X°¢Š T @  .IE ?d ˜°¢T‘Ï  @  .JF ?d ذ¢ÖØÓ @  .KG ?d ±¢“â @  .LH ?d X±¢õÐ @  .MI ?d ˜±¢Ï‰ @  .NJ ?d ر¢Mˆ W @  .OK ?d ²¢÷]bó @  .PL ?d X²¢uÌu- @  .QM ?d ˜²¢'ךt @  .RN ?d ز¢¥Fª @  .SO ?d ³¢ …Õ› @  .TP ?d X³¢‹ÂE @  .UQ ?d ˜³¢Ù- @  .VR ?d س¢[ž: @  .WS ?d ´¢Èà8H @  .XT ?d X´¢Jq/– @  .YU ?d ˜´¢jÀÏ @  .ZV ?d Ø´¢šû× @  .[W ?d µ¢ShíÌ @  .\X ?d Xµ¢Ñùú @  .]Y ?d ˜µ¢ƒâK @  .^Z ?d ص¢s• @  ._[ ?d ¶¢ª J @  .`\ ?d X¶¢(1]_ @  .a] ?d ˜¶¢z*² @  .b^ ?d ض¢ø»¥Ø @  .c_ ?d ·¢ÉÏÄ5 @  .d` ?d X·¢K^Óë @  .ea ?d ˜·¢E<² @  .fb ?d Ø·¢›Ô+l @  .gc ?d ¸¢%Vô @  .hd ?d X¸¢§ŠA* @  .ie ?d ˜¸¢õ‘®s @  .jf ?d ظ¢w¹­ @  .kg ?d ¹¢¾“ƒp @  .lh ?d X¹¢<”® @  .mi ?d ˜¹¢n{÷ @  .nj ?d ع¢ìˆl) @  .ok ?d º¢V] @  .pl ?d Xº¢ÔÌS @  .qm ?d ˜º¢†×û  @  .rn ?d غ¢FìÔ @  .so ?d »¢¨…´å @  .tp ?d X»¢*£; @  .uq ?d ˜»¢xLb @  .vr ?d Ø»¢úž[¼ @  .ws ?d ¼¢iàY6 @  .xt ?d X¼¢ëqNè @  .yu ?d ˜¼¢¹j¡± @  .zv ?d ؼ¢;û¶o @  .{w ?d ½¢òhŒ² @  .|x ?d X½¢pù›l @  .}y ?d ˜½¢"ât5 @  .~z ?d ؽ¢ scë @  .{ ?d ¾¢Fñ\ @  .€| ?d X¾¢Ä` ‚ @  .} ?d ˜¾¢–{åÛ @  .‚~ ?d ؾ¢êò @  .ƒ ?d ¿¢ÈÒk @  .„€ ?d X¿¢J™Åµ @  .… ?d ˜¿¢‚*ì @uÐÀ¢  .†‚ ?d Ø¿¢š=2 @  .‡ƒ ?d 0À¢tÓå @  .ˆ„ ?d pÀ¢öBŠ; @  .‰… ?d °À¢¤Yeb @  .І ?d ðÀ¢&Èr¼ @  .‹‡ ?d 0Á¢ï[Ha @  .Œˆ ?d pÁ¢mÊ_¿ @  .‰ ?d °Á¢?Ѱæ @  .ŽŠ ?d ðÁ¢½@§8 @  .‹ ?d 0¢•Èœ @  .Œ ?d p¢…ßB @  .‘ ?d °Â¢×0 @  .’Ž ?d ð¢UŽ'Å @  .“ ?d 0âùMô @  .” ?d pâ{Üh* @  .•‘ ?d °Ã¢)LJs @  .–’ ?d ðâ«V­ @  .—“ ?d 0Ä¢8(’' @  .˜” ?d pÄ¢º¹…ù @  .™• ?d °Ä¢è¢j  @  .š– ?d ðÄ¢j3}~ @  .›— ?d 0Å¢£ G£ @  .œ˜ ?d pÅ¢!1P} @  .™ ?d °Å¢s*¿$ @  .žš ?d ðÅ¢ñ»¨ú @  .Ÿ› ?d 0Æ¢c¯<; @  .  œ ?d pÆ¢á>+å @  .¡  ?d °Æ¢³%ļ @  .¢ ž ?d ðÆ¢1´Ób @  .£ Ÿ ?d 0Ç¢À² @  .¤   ?d pÇ¢‚Q¥Q @  .¥ ¡ ?d °Ç¢ÐJJ @  .¦ ¢ ?d ðÇ¢RÛ]Ö @  .§ £ ?d 0È¢ì N @  .¨ ¤ ?d pÈ¢n…7 @  .© ¥ ?d °È¢<žØÉ @  .ª ¦ ?d ðÈ¢¾Ï @  .« § ?d 0É¢wœõÊ @  .¬ ¨ ?d pÉ¢õ â @  .­ © ?d °É¢§ M @  .® ª ?d ðÉ¢%‡“ @  .¯ « ?d 0Ê¢ŸRu7 @  .° ¬ ?d pÊ¢Ãbé @  .± ­ ?d °Ê¢Oذ @  .² ® ?d ðÊ¢ÍIšn @  .³ ¯ ?d 0Ë¢aŠÂ_ @  .´ ° ?d pË¢ãÕ @  .µ ± ?d °Ë¢±:Ø @  .¶ ² ?d ðË¢3‘- @  .· ³ ?d 0Ì¢ ï/Œ @  .¸ ´ ?d pÌ¢"~8R @  .¹ µ ?d °Ì¢pe×  @  .º ¶ ?d ðÌ¢òôÀÕ @  .» · ?d 0Í¢;gú @  .¼ ¸ ?d pÍ¢¹öíÖ @  .½ ¹ ?d °Í¢ëí @  .¾ º ?d ðÍ¢i|Q @  .¿ » ?d 0΢l¨[× @  .À ¼ ?d p΢î9L  @  .Á ½ ?d °Î¢¼"£P @  . ¾ ?d ð΢>³´Ž @  .à ¿ ?d 0Ï¢ÿ—Àr @  .Ä À ?d pÏ¢}׬ @  .Å Á ?d °Ï¢/8õ @  .Æ  ?d ðÏ¢­Œ/+ @  .Ç à ?d 0Т™bb @  .È Ä ?d pТóu @  .É Å ?d °Ð¢Ièš› @  .Ê Æ ?d ðТËyE @  .Ë Ç ?d 0Ѣ귘 @  .Ì È ?d pÑ¢€{ F @  .Í É ?d °Ñ¢Ò`O @  .Î Ê ?d ðÑ¢PñXÁ @  .Ï Ë ?d 0Ò¢ê$7e @  .Ð Ì ?d pÒ¢hµ » @  .Ñ Í ?d °Ò¢:®Ïâ @  .Ò Î ?d ðÒ¢¸?Ø< @  .Ó Ï ?d 0Ó¢ü€  @  .Ô Ð ?d pÓ¢–m—Ó @  .Õ Ñ ?d °Ó¢ÄvxŠ @  .Ö Ò ?d ðÓ¢FçoT @  .× Ó ?d 0Ô¢Õ™mÞ @  .Ø Ô ?d pÔ¢Wz @  .Ù Õ ?d °Ô¢•Y @  .Ú Ö ?d ðÔ¢‡‚‚‡ @  .Û × ?d 0Õ¢N¸Z @  .Ü Ø ?d pբ̀¯„ @  .Ý Ù ?d °Õ¢ž›@Ý @  .Þ Ú ?d ðÕ¢ W @  .ß Û ?d 0Ö¢·Ù @  .à Ü ?d pÖ¢5HÉ @  .á Ý ?d °Ö¢gSç @  .â Þ ?d€ ðÖ¢‘ìè @  / ß ?d 0×¢A4Å, @  / à ?d pעåÒò @  / á ?d °×¢T÷ÆF @  / â ?d ð×¢Öfј @  / ã ?d 0Ø¢¦óz @  / ä ?d pØ¢$Šä¤ @  / å ?d °Ø¢¸#T‡ @  / æ ?d ðØ¢:²CY @  / ç ?d 0Ù¢6h‚i @  / è ?d pÙ¢´ù•· @  / é ?d °Ù¢#« @  / ê ?d ðÙ¢¡:–Ý @  / ë ?d 0Ú¢xü˜ã @  / ì ?d pÚ¢úm= @  / í ?d °Ú¢Ëeþ @  / î ?d ðÚ¢Iô  @  / ï ?d 0Û¢ ~µü @  / ð ?d pÛ¢¢ï¢" @  / ñ ?d °Û¢5½¶– @  / ò ?d ðÛ¢·,¡H @  / ó ?d 0Ü¢êàü¸ @  / ô ?d pÜ¢hqëf @  / õ ?d °Ü¢ôØ[E @  / ö ?d ðÜ¢vIL› @  / ÷ ?d 0Ý¢z“« @  / ø ?d pÝ¢øšu @  / ù ?d °Ý¢oPŽÁ @  / ú ?d ðÝ¢íÁ™ @  / û ?d 0Þ¢4—! @  / ü ?d pÞ¢¶–€ÿ @  / ý ?d °Þ¢–˜)Œ @  / þ ?d ðÞ¢ >R @  /! ÿ ?d 0ߢrŰÝ @  /"  ?d pߢðT§ @  /#  ?d uÐà¢/°ß¢g³· @  /$  ?d ðߢÜPx¼ @  /% ?d Hà¢vˆµ @  /& ?d ˆà¢¡ƒŠK @  /' ?d È࢟N/H @  /( ?d á¢O£  @  /) ?d Há¢ù¦ @  /* ?d ˆá¢1ðûX @  /+ ?d Èá¢ÆúÌ @  /, ?d ⢙‚Z  @  /- ?d Hâ¢_‘ã, @  /. ?d ˆâ¢dáÒ @  // ?d Èâ¢ìz1 @  /0 ?d ã¢<@öÙ @  /1 ?d Hã¢Î3 @  /2 ?d ˆã¢'æÌÍ @  /3 ?d Èã¢ÐÍY @  /4 ?d ä¢ ž>V @  /5 ?d Hä¢͇w @  /6 ?d ˆä¢íx…‰ @  /7 ?d Èä¢Óµ Š @  /8 ?d å¢ý¬b @  /9 ?d Hå¢]þöd @  /: ?d ˆå¢} ôš @  /; ?d Èå¢H=õ @  /< ?d æ¢ÕyUÏ @  /= ?d Hæ¢jìî @  /> ?d ˆæ¢3Ÿî @  /? ?d Èæ¢òTÑ @  /@ ?d ç¢ϺØ9 @  /A ?d Hç¢i^Ù @  /B ?d ˆç¢I«Ûñ @  /C! ?d Èç¢|Úe @  /D" ?d è¢HbVx @  /E# ?d H袎qïY @  /F$ ?d ˆè¢®„í§ @  /G% ?d Èè¢IH¤ @  /H& ?d é¢@ÄL @  /I' ?d H颞J @  /J( ?d ˆé¢>÷œ´ @  /K) ?d Èé¢ Á  @  /L* ?d ꢖ…=á @  /M+ ?d Hê¢P–„À @  /N, ?d ˆê¢pc†> @  /O- ?d Èê¢ãÝ @  /P. ?d ë¢3G‘5 @  /Q/ ?d Hë¢©ß @  /R0 ?d ˆë¢(á«! @  /S1 ?d Èë¢תµ @  /T2 ?d 좙Yº @  /U3 ?d Hì¢Šà› @  /V4 ?d ˆì¢ââe @  /W5 ?d Èì¢ܲGf @  /X6 ?d í¢ úËŽ @  /Y7 ?d Hí¢Rù‘ˆ @  /Z8 ?d ˆí¢r “v @  /[9 ?d Èí¢G:’â @  /\: ?d î¢Ú~2# @  /]; ?d Hî¢m‹ @  /^< ?d ˆî¢<˜‰ü @  /_= ?d Èò5¯ @  /`> ?d ï¢nº¹G @  /a? ?d Hï¢8­` @  /b@ ?d ˆï¢û¯ž @  /cA ?d Èï¢-Í®  @  /dB ?d 𢓸 @  /eC ?d Hð¢U«™ @  /fD ?d ˆð¢uõ©g @  /gE ?d Èð¢K8 d @  /hF ?d ñ¢›p€Œ @  /iG ?d Hñ¢ÅsÚŠ @  /jH ?d ˆñ¢冨t @  /kI ?d Èñ¢аÙà @  /lJ ?d ò¢Môy! @  /mK ?d Hò¢‹çÀ @  /nL ?d ˆò¢«Âþ @  /oM ?d Èò¢8~Y @  /pN ?d ó¢è6Õõ @  /qO ?d Hó¢Óeí @  /rP ?d ˆó¢óïá @  /sQ ?d Èó¢Ʀîu @  /tR ?d ô¢ßèz @  /uS ?d Hô¢û¤[ @  /vT ?d ˆô¢9¦¥ @  /wU ?d Èô¢Ã¦ @  /xV ?d õ¢׋N @  /yW ?d Hõ¢‰ˆÕH @  /zX ?d ˆõ¢©}×¶ @  /{Y ?d Èõ¢œKÖ" @  /|Z ?d ö¢vã @  /}[ ?d Hö¢ÇÏ @  /~\ ?d ˆö¢çéÍ< @  /] ?d Èö¢(ÒGÌ @  /€^ ?d ÷¢øšË$ @  /_ ?d H÷¢^~Ê @  /‚` ?d ˆ÷¢~‹Èì @  /ƒa ?d È÷¢K½Éx @  /„b ?d ø¢BEe @  /…c ?d Hø¢¹QüD @  /†d ?d ˆø¢™¤þº @  /‡e ?d Èø¢§i[¹ @  /ˆf ?d ù¢w!×Q @  /‰g ?d Hù¢)"W @  /Šh ?d ˆù¢ ש @  /‹i ?d Èù¢<áŽ= @  /Œj ?d ú¢¡¥.ü @  /k ?d Hú¢g¶—Ý @  /Žl ?d ˆú¢GC•# @  /m ?d Èú¢Ô/À @  /n ?d û¢g‚( @  /‘o ?d Hû¢?4ºÂ @  /’p ?d ˆû¢Á¸< @  /“q ?d Èû¢*÷¹¨ @  /”r ?d ü¢3¹J§ @  /•s ?d Hü¢õªó† @  /–t ?d ˆü¢Õ_ñx @  /—u ?d Èü¢ë’T{ @  /˜v ?d ý¢;ÚØ“ @  /™w ?d Hý¢eÙ‚• @  /šx ?d ˆý¢E,€k @  /›y ?d Èý¢pÿ @  /œz ?d þ¢í^!> @  /{ ?d Hþ¢+M˜ @  /ž| ?d ˆþ¢ ¸šá @  /Ÿ} ?d Èþ¢‰Ò&² @  / ~ ?d ÿ¢YšªZ @  /¡ ?d Hÿ¢èêï @  /¢€ ?d ˆÿ¢2è @  /£uУ ?d Èÿ¢>ì5P @  /¤ ‚ ?d £qX¡ @  /¥ ƒ ?d `£·K¤€ @  /¦ „ ?d  £—¾¦~ @  /§ … ?d ࣩs} @  /¨ † ?d £y;• @  /© ‡ ?d `£'8Õ“ @  /ª ˆ ?d  £Í×m @  /« ‰ ?d à£2ûÖù @  /¬ Š ?d £¯¿v8 @  /­ ‹ ?d `£i¬Ï @  /® Œ ?d  £IYÍç @  /¯  ?d à£Ú5V @  /° Ž ?d £ }Úì @  /±  ?d `£1.â @  /²  ?d  £Ûàø @  /³ ‘ ?d à£$íál @  /´ ’ ?d £=£c @  /µ “ ?d `£û°«B @  /¶ ” ?d  £ÛE©¼ @  /· • ?d à£åˆ ¿ @  /¸ – ?d £5À€W @  /¹ — ?d `£kÃÚQ @  /º ˜ ?d  £K6د @  /» ™ ?d à£~Ù; @  /¼ š ?d £ãDyú @  /½ › ?d `£%WÀÛ @  /¾ œ ?d  £¢Â% @  /¿  ?d à£)Ïxä @  /À ž ?d £ù‡ô  @  /Á Ÿ ?d `£_cõ: @  /   ?d  £–÷Ä @  /à ¡ ?d à£J öP @  /Ä ¢ ?d £~_zM @  /Å £ ?d `£¸LÃl @  /Æ ¤ ?d  £˜¹Á’ @  /Ç ¥ ?d ࣦtd‘ @  /È ¦ ?d £v<èy @  /É § ?d ` £(?² @  /Ê ¨ ?d   £ʰ @  /Ë © ?d à £=ü± @  /Ì ª ?d £ ¸Ô @  /Í « ?d ` £f«¨õ @  /Î ¬ ?d   £F^ª  @  /Ï ­ ?d à £Õ21è @  /Ð ® ?d £z½ @  /Ñ ¯ ?d ` £>)…ê @  /Ò ° ?d   £܇ @  /Ó ± ?d à £+ꆀ @  /Ô ² ?d £2¤u @  /Õ ³ ?d ` £ô·Ì® @  /Ö ´ ?d   £ÔBÎP @  /× µ ?d à £êkS @  /Ø ¶ ?d £:Çç» @  /Ù · ?d ` £dĽ½ @  /Ú ¸ ?d   £D1¿C @  /Û ¹ ?d à £q¾× @  /Ü º ?d £ìC @  /Ý » ?d `£*P§7 @  /Þ ¼ ?d  £ ¥¥É @  /ß ½ ?d ࣈϚ @  /à ¾ ?d £X‡•r @  /á ¿ ?d `£3U @  /â À ?d€  £EšoE @  0 Á ?d ࣑í&ø @  0  ?d £/3šJ @  0 à ?d `£,i؆ @  0 Ä ?d  £ œÚx @  0 Å ?d à£üã  @  0 Æ ?d £,«¬é @  0 Ç ?d `£¼©• @  0 È ?d  £œï«k @  0 É ?d à£lQ @  0 Ê ?d £ñÔñÓ @  0 Ë ?d `£ò޳ @  0 Ì ?d  £Ò{±á @  0 Í ?d à£"K˜ @  0 Î ?d £òLÇp @  0 Ï ?d `£ª ž @  0 Ð ?d  £Šùœþ @  0 Ñ ?d à£z†f‡ @  0 Ò ?d £cÈ•ˆ @  0 Ó ?d `£`’×D @  0 Ô ?d  £@gÕº @  0 Õ ?d ࣰ/à @  0 Ö ?d £`P£+ @  0 × ?d `£ðá¦W @  0 Ø ?d  £Ð¤© @  0 Ù ?d ࣠k^Ð @  0 Ú ?d £½/þ @  0 Û ?d `£¾u¼Ý @  0 Ü ?d  £ž€¾# @  0 Ý ?d à£nÿDZ @  0 Þ ?d £¾·È² @  0 ß ?d `£jF® @  0 à ?d  £J³P @  0! á ?d ࣺÌw) @  0" â ?d £Ž3û4 @  0# ã ?d `£i¹ø @  0$ ä ?d  £­œ» @  0% å ?d à£]ãA @  0& æ ?d £«Í— @  0' ç ?d `£Èë @  0( è ?d  £=ïÊ @  0) é ?d à£Í0l @  0* ê ?d £PÔ­ @  0+ ë ?d `£SŽÒa @  0, ì ?d  £s{П @  0- í ?d ࣃ*æ @  0. î ?d £SL¦ @  0/ ï ?d `£ ÿ~ @  00 ð ?d  £+ùý€ @  01 ñ ?d à£Û†ù @  02 ò ?d £ÂÈôö @  03 ó ?d `£Á’¶: @  04 ô ?d  £ág´Ä @  05 õ ?d à£N½ @  06 ö ?d £ÁPÂU @  07 ÷ ?d `£QáÇ) @  08 ø ?d  £qÅ× @  09 ù ?d à£k?® @  0: ú ?d £/Ÿo @  0; û ?d `£uÝ£ @  0< ü ?d  £?€ß] @  0= ý ?d à£Ïÿ%$ @  0> þ ?d £·©Ì @  0? ÿ ?d `£E’Éè @  0@ ?d  £egËuÐ £ @  0A ?d ࣬ßíº @  0B?d 8 £ÝÔ3Ü @  0C?d x £ÞŽq @  0D?d ¸ £þ{sî @  0E?d ø £‰— @  0F?d 8!£ÞL @  0G?d x!£Ný @  0H?d ¸!£ný @  0I ?d ø!£žwø„ @  0J ?d 8"£3XE @  0K ?d x"£i‰ @  0L ?d ¸"£ œw @  0M ?d ø"£Ðãâ @  0N?d 8#£«næ @  0O?d x#£Xë7– @  0P?d ¸#£x5h @  0Q?d ø#£ˆaÏ @  0R?d 8$£‘/< @  0S?d x$£’u~Ò @  0T?d ¸$£²€|, @  0U?d ø$£Bÿ†U @  0V?d 8%£’· ½ @  0W?d x%£Á @  0X?d ¸%£"ó ? @  0Y?d ø%£ÒŒ÷F @  0Z?d 8&£OÈW‡ @  0[?d x&£L’K @  0\?d ¸&£lgµ @  0]?d ø&£œíÌ @  0^?d 8'£LPa$ @  0_?d x'£˜¡&8 @  0` ?d ¸'£¸T$Æ @  0a!?d ø'£H+Þ¿ @  0b"?d 8(£|ÔR¢ @  0c#?d x(£Žn @  0d$?d ¸(£_{ @  0e%?d ø(£¯èé @  0f&?d 8)£Ld @  0g'?d x)£ïýa} @  0h(?d ¸)£Ïcƒ @  0i)?d ø)£?w™ú @  0j*?d 8*£¢39; @  0k+?d x*£¡i{÷ @  0l,?d ¸*£œy  @  0m-?d ø*£qãƒp @  0n.?d 8+£¡«˜ @  0o/?d x+£ùëVè @  0p0?d ¸+£ÙT @  0q1?d ø+£)a®o @  0r2?d 8,£0/]` @  0s3?d x,£3u¬ @  0t4?d ¸,£€R @  0u5?d ø,£ãÿç+ @  0v6?d 8-£3·kà @  0w7?d x-££n¿ @  0x8?d ¸-£ƒólA @  0y9?d ø-£sŒ–8 @  0z:?d 8.£îÈ6ù @  0{;?d x.£í’t5 @  0|<?d ¸.£ÍgvË @  0}=?d ø.£=Œ² @  0~>?d 8/£íPZ @  0??d x/£„ dô @  0€@?d ¸/£¤Uf  @  0A?d ø/£T*œs @  0‚B?d 80£êô Á @  0ƒC?d x0£é®b  @  0„D?d ¸0£É[`ó @  0…E?d ø0£9$šŠ @  0†F?d 81£élb @  0‡G?d x1£yÝ @  0ˆH?d ¸1£Y(à @  0‰I?d ø1£©Wë™ @  0ŠJ?d 82£4KX @  0‹K?d x2£7I ” @  0ŒL?d ¸2£¼ j @  0M?d ø2£çÃñ @  0ŽN?d 83£7‹}û @  0O?d x3£oË$‹ @  0P?d ¸3£O>&u @  0‘Q?d ø3£¿AÜ  @  0’R?d 84£¦/ @  0“S?d x4£¥UmÏ @  0”T?d ¸4£… o1 @  0•U?d ø4£uß•H @  0–V?d 85£¥—  @  0—W?d x5£5&Ü @  0˜X?d ¸5£Ó" @  0™Y?d ø5£å¬ä[ @  0šZ?d 86£xèDš @  0›[?d x6£{²V @  0œ\?d ¸6£[G¨ @  0]?d ø6£«8þÑ @  0ž^?d 87£{pr9 @  0Ÿ_?d x7£¯5% @  0 `?d ¸7£t7Û @  0¡a?d ø7£ Í¢ @  0¢b?d 88£KôA¿ @  0£c?d x8£H®s @  0¤d?d ¸8£h[ @  0¥e?d ø8£˜$ûô @  0¦f?d 89£Hlw @  0§g?d x9£ØÝr` @  0¨h?d ¸9£ø(pž @  0©i?d ø9£WŠç @  0ªj?d 8:£•*& @  0«k?d x:£–Ihê @  0¬l?d ¸:£¶¼j @  0­m?d ø:£FÃm @  0®n?d 8;£–‹… @  0¯o?d x;£ÎËEõ @  0°p?d ¸;£î>G  @  0±q?d ø;£A½r @  0²r?d 8<£N} @  0³s?d x<£U ± @  0´t?d ¸<£$ O @  0µu?d ø<£Ôßô6 @  0¶v?d 8=£—xÞ @  0·w?d x=£”&}¢ @  0¸x?d ¸=£´Ó\ @  0¹y?d ø=£D¬…% @  0ºz?d 8>£Ùè%ä @  0»{?d x>£Ú²g( @  0¼|?d ¸>£úGeÖ @  0½}?d ø>£ 8Ÿ¯ @  0¾~?d 8?£ÚpG @  0¿?d x?£MJ @  0À€?duÐ@£7 ¸?£må´ @  0Á?d ø?£¤]7 @  0 ‚?d P@£gñ$ @  0à ƒ?d @£ÆÏÚÈ @  0Ä „?d Ð@£D^Í @  0Å …?d A£æø¬Y @  0Æ †?d PA£di»‡ @  0Ç ‡?d A£V¼«Û @  0È ˆ?d ÐA£Ô-¼ @  0É ‰?d B£;‡ñc @  0Ê Š?d PB£¹æ½ @  0Ë ‹?d B£(±Q @  0Ì Œ?d ÐB£š¹¦ @  0Í ?d C£8ÇÀ @  0Î Ž?d PC£ºŽÐ @  0Ï ?d C£@ªœN @  0Ð ?d ÐC£Â;‹ @  0Ñ ‘?d D£©›•8 @  0Ò ’?d PD£+ ‚æ @  0Ó “?d D£Š4Õ  @  0Ô ”?d ÐD£¥ÂÔ @  0Õ •?d E£ª£› @  0Ö –?d PE£(’´E @  0× —?d E£G¤ @  0Ø ˜?d ÐE£˜Ö³Ç @  0Ù ™?d F£w|þ¡ @  0Ú š?d PF£õíé @  0Û ›?d F£TÓ¾“ @  0Ü œ?d ÐF£ÖB©M @  0Ý ?d G£täÈ @  0Þ ž?d PG£öußÜ @  0ß Ÿ?d G£€àà @  0à  ?d ÐG£qš> @  0á ¡?d H£D`û„ @  0â ¢?d€ PH£²2ðü @  1 £?d H£òMï9 @  1 ¤?d ÐH£pÜøç @  1 ¥?d I£3bE @  1 ¦?d PI£•¢u› @  1 §?d I£iÅ:½ @  1 ¨?d ÐI£ëT-c @  1 ©?d J£ÊL? @  1 ª?d PJ£HÝ(¡ @  1 «?d J£,ª„  @  1 ¬?d ÐJ£®;“~ @  1 ­?d K£ÉÔ Ü @  1 ®?d PK£KE @  1 ¯?d K£Òr3È @  1 °?d ÐK£Pã$ @  1 ±?d L£XP[$ @  1 ²?d PL£ÚÁLú @  1 ³?d L£¾¶àû @  1 ´?d ÐL£<'÷% @  1 µ?d M£[Èm‡ @  1 ¶?d PM£ÙYzY @  1 ·?d M£%>5 @  1 ¸?d ÐM£§¯"¡ @  1 ¹?d N£†·0½ @  1 º?d PN£&'c @  1 »?d N£`Q‹b @  1 ¼?d ÐN£âÀœ¼ @  1 ½?d O£…/ @  1 ¾?d PO£¾À @  1 ¿?d O£ónÇ @  1 À?d ÐO£qÿ @  1 Á?d P£ÏÚ& @  1 Â?d PP£MKø @  1! Ã?d P£)<«ù @  1" Ä?d ÐP£«­¼' @  1# Å?d Q£ÌB&… @  1$ Æ?d PQ£NÓ1[ @  1% Ç?d Q£²´~} @  1& È?d ÐQ£0%i£ @  1' É?d R£={¿ @  1( Ê?d PR£“¬la @  1) Ë?d R£÷ÛÀ` @  1* Ì?d ÐR£uJ×¾ @  1+ Í?d S£¥M @  1, Î?d PS£4Z @  1- Ï?d S£ w @  1. Ð?d ÐS£‹’`Ö @  1/ Ñ?d T£ƒ!ä @  10 Ò?d PT£°: @  11 Ó?d T£eǤ; @  12 Ô?d ÐT£çV³å @  13 Õ?d U£€¹)G @  14 Ö?d PU£(>™ @  15 ×?d U£þOq¿ @  16 Ø?d ÐU£|Þfa @  17 Ù?d V£]Æt} @  18 Ú?d PV£ßWc£ @  19 Û?d V£» Ï¢ @  1: Ü?d ÐV£9±Ø| @  1; Ý?d W£^^BÞ @  1< Þ?d PW£ÜÏU @  1= ß?d W£ØOA @  1> à?d ÐW£ZÞVÈ @  1? á?d X£ÀÝwÊ @  1@ â?d PX£BL` @  1A ã?d X£&;Ì @  1B ä?d ÐX£¤ªÛË @  1C å?d Y£ÃEAi @  1D æ?d PY£AÔV· @  1E ç?d Y£½³‘ @  1F è?d ÐY£?"O @  1G é?d Z£:S @  1H ê?d PZ£œ«  @  1I ë?d Z£øÜ§Œ @  1J ì?d ÐZ£zM°R @  1K í?d [£¢*ð @  1L î?d P[£Ÿ3=. @  1M ï?d [£ä @  1N ð?d Ð[£„•: @  1O ñ?d \£Œ&x @  1P ò?d P\£·oÖ @  1Q ó?d \£jÀÃ× @  1R ô?d Ð\£èQÔ  @  1S õ?d ]£¾N« @  1T ö?d P]£ /Yu @  1U ÷?d ]£ñHS @  1V ø?d Ð]£sÙ @  1W ù?d ^£RÁ‘ @  1X ú?d P^£ÐPO @  1Y û?d ^£´'¨N @  1Z ü?d Ð^£6¶¿ @  1[ ý?d _£QY%2 @  1\ þ?d P_£ÓÈ2ì @  1] ÿ?d _£E¹2u @  1uÐ`£^ ?d Ð_£Ç(%« @  1_ ?d (`£y+;¾ @  1` ?d h`£ûº,` @  1a ?d ¨`£ŸÍ€a @  1b ?d è`£\—¿ @  1c ?d (a£z³  @  1d ?d ha£ø"à @  1e ?d ¨a£EUå @  1f ?d èa£†ÔB; @  1g  ?d (b£§ÌP' @  1h  ?d hb£%]Gù @  1i  ?d ¨b£A*ëø @  1j  ?d èb£ûü& @  1k  ?d (c£¤Tf„ @  1l ?d hc£&ÅqZ @  1m ?d ¨c£¿ò\ @  1n ?d èc£=cKN @  1o ?d (d£5Ð4| @  1p ?d hd£·A#¢ @  1q ?d ¨d£Ó6£ @  1r ?d èd£Q§˜} @  1s ?d (e£6Hß @  1t ?d he£´Ù @  1u ?d ¨e£H¾Z' @  1v ?d èe£Ê/Mù @  1w ?d (f£ë7_å @  1x ?d hf£i¦H; @  1y ?d ¨f£ Ñä: @  1z ?d èf£@óä @  1{ ?d (g£è¯iF @  1| ?d hg£j>~˜ @  1} ?d ¨g£n¾jŽ @  1~  ?d èg£ì/}P @  1 !?d (h£•zlc @  1€ "?d hh£ë{½ @  1 #?d ¨h£sœ×¼ @  1‚ $?d èh£ñ Àb @  1ƒ %?d (i£–âZÀ @  1„ &?d hi£sM @  1… '?d ¨i£è8 @  1† (?d èi£j…æ @  1‡ )?d (j£Kú @  1ˆ *?d hj£É $ @  1‰ +?d ¨j£­{¼% @  1Š ,?d èj£/ê«û @  1‹ -?d (k£H1Y @  1Œ .?d hk£Ê”&‡ @  1 /?d ¨k£S£ M @  1Ž 0?d èk£Ñ2“ @  1 1?d (l£Ùc¡ @  1 2?d hl£[t @  1‘ 3?d ¨l£?gØ~ @  1’ 4?d èl£½öÏ  @  1“ 5?d (m£ÚU @  1” 6?d hm£XˆBÜ @  1• 7?d ¨m£¤ï ú @  1– 8?d èm£&~$ @  1— 9?d (n£f8 @  1˜ :?d hn£…÷æ @  1™ ;?d ¨n£ဳç @  1š <?d èn£c¤9 @  1› =?d (o£þ>› @  1œ >?d ho£†o)E @  1 ??d ¨o£r¿(B @  1ž @?d èo£ð.?œ @  1Ÿ A?d (p£N (£ @  1  B?d hp£Ìš?} @  1¡ C?d ¨p£¨í“| @  1¢ D?d èp£*|„¢ @  1£ E?d (q£M“ @  1¤ F?d hq£Ï Þ @  1¥ G?d ¨q£3eFø @  1¦ H?d èq£±ôQ& @  1§ I?d (r£ìC: @  1¨ J?d hr£}Tä @  1© K?d ¨r£v øå @  1ª L?d èr£ô›ï; @  1« M?d (s£“tu™ @  1¬ N?d hs£åbG @  1­ O?d ¨s£ˆÒO @  1® P?d ès£ CXS @  1¯ Q?d (t£ð'a @  1° R?d ht£€a0¿ @  1± S?d ¨t£äœ¾ @  1² T?d èt£f‡‹` @  1³ U?d (u£h @  1´ V?d hu£ƒù @  1µ W?d ¨u£žI: @  1¶ X?d èu£ý^ä @  1· Y?d (v£ÜLø @  1¸ Z?d hv£^†[& @  1¹ [?d ¨v£:ñ÷' @  1º \?d èv£¸`àù @  1» ]?d (w£ßz[ @  1¼ ^?d hw£]m… @  1½ _?d ¨w£Yžy“ @  1¾ `?d èw£ÛnM @  1¿ a?d (x£A OO @  1À b?d hx£ÃX‘ @  1Á c?d ¨x£§êô @  1 d?d èx£%{ãN @  1à e?d (y£B”yì @  1Ä f?d hy£Àn2 @  1Å g?d ¨y£ @  2 ‘?d @„£|+G @  2 ’?d €„£½‰)¹ @  2 “?d À„£‰ñ @  2 ”?d …£ÈÁ}ê @  2 •?d @…£8¾‡“ @  2 –?d €…£K…m @  2 —?d À…£ƒ$† @  2 ˜?d †£E„G @  2 ™?d @†£î:~> @  2 š?d €†£ÎÏ|À @  2 ›?d À†£Ænš› @  2 œ?d ‡£&s @  2 ?d @‡£æYì  @  2 ž?d €‡£Ƭîô @  2 Ÿ?d À‡£¥/ @  2  ?d ˆ£‘þ˜2 @  2 ¡?d @ˆ£abK @  2 ¢?d €ˆ£At`µ @  2 £?d Àˆ£õrŸ¾ @  2 ¤?d ‰£%:V @  2! ¥?d @‰£ÕEé/ @  2" ¦?d €‰£õ°ëÑ @  2# §?d À‰£núJ: @  2$ ¨?d Š£ó¾êû @  2% ©?d @Š£Á‚ @  2& ª?d €Š£#4| @  2' «?d ÀŠ£+•ô' @  2( ¬?d ‹£ûÝxÏ @  2) ­?d @‹£ ¢‚¶ @  2* ®?d €‹£+W€H @  2+ ¯?d À‹£ÕMCO @  2, °?d Œ£Ì°@ @  2- ±?d @Œ£<|J9 @  2. ²?d €Œ£‰HÇ @  2/ ³?d ÀŒ£¹‰| @  20 ´?d £iÁ” @  21 µ?d @£™¾æí @  22 ¶?d €£¹Kä @  23 ·?d À£"Eø @  24 ¸?d Ž£¿Eå9 @  25 ¹?d @Ž£O:@ @  26 º?d €Ž£oϾ @  27 »?d ÀŽ£gnûå @  28 ¼?d £·&w  @  29 ½?d @£GYt @  2: ¾?d €£g¬Š @  2; ¿?d À£ôQ`@ @  2< À?d £JÜò @  2= Á?d @£ºð&‹ @  2> Â?d €£š$u @  2? Ã?d À£€Ýì @  2@ Ä?d ‘£PLQ @  2A Å?d @‘£ 3«} @  2B Æ?d €‘£€Æ©ƒ @  2C Ç?d À‘£Œh @  2D È?d ’£†È¨© @  2E É?d @’£v·RÐ @  2F Ê?d €’£VBP. @  2G Ë?d À’£^ã¶u @  2H Ì?d “£Ž«: @  2I Í?d @“£~ÔÀä @  2J Î?d €“£^! @  2K Ï?d À“£ ; @  2L Ð?d ”£¹uò @  2M Ñ?d @”£I k @  2N Ò?d €”£iÿ • @  2O Ó?d À”£ÌÿÒ. @  2P Ô?d •£·^Æ @  2Q Õ?d @•£ìȤ¿ @  2R Ö?d €•£Ì=¦A @  2S ×?d À•£Wwª @  2T Ø?d –£Ê3§k @  2U Ù?d @–£:L] @  2V Ú?d €–£¹_ì @  2W Û?d À–£¹· @  2X Ü?d —£ÂP5_ @  2Y Ý?d @—£2/Ï& @  2Z Þ?d €—£ÚÍØ @  2[ ß?d À—£qw7 @  2\ à?d ˜£Eˆ» @  2] á?d @˜£µ÷Ag @  2^ â?d €˜£•C™ @  2_ ã?d À˜£!¼’ @  2` ä?d ™£ñL0z @  2a å?d @™£3Ê @  2b æ?d €™£!ÆÈý @  2c ç?d À™£ºŒi @  2d è?d š£'ÈÉ× @  2e é?d @š£×·3® @  2f ê?d €š£÷B1P @  2g ë?d Àš£ÿã×  @  2h ì?d ›£/«[ã @  2i í?d @›£ßÔ¡š @  2j î?d €›£ÿ!£d @  2k ï?d À›£;`c @  2l ð?d œ£u“l @  2m ñ?d @œ£è i @  2n ò?d €œ£Èÿkë @  2o ó?d Àœ£mÿ³P @  2p ô?d £½·?¸ @  2q õ?d @£MÈÅÁ @  2r ö?d €£m=Ç? @  2s ÷?d À£öwfÔ @  2t ø?d ž£k3Æ @  2u ù?d @ž£›L’ @  2w û?d Àž£³ØÉ @  2x ü?d Ÿ£cPT! @  2y ý?d @Ÿ£“/®X @  2z þ?d €Ÿ£³Ú¬¦ @  2{ ÿuР£?d ÀŸ£»dB @  2| ?d  £óÏfñ @  2}?d X £°œˆ @  2~?d ˜ £#Ežv @  2?d Ø £ÚWÞ @  2€?d ¡£ ZÛ6 @  2?d X¡£ú%!O @  2‚?d ˜¡£ÚÐ#± @  2ƒ?d Ø¡£Aš‚Z @  2„?d ¢£ÜÞ"› @  2… ?d X¢£,¡Øâ @  2† ?d ˜¢£ TÚ @  2‡ ?d Ø¢£õ?d ˜¯£éÌ&” @  2»??d د£z1É^ @  2¼@?d °£Äïuì @  2½A?d X°£4• @  2¾B?d ˜°£ek @  2¿C?d ذ£dtò @  2ÀD?d ±£Þ,ø @  2ÁE?d X±£.Sc @  2ÂF?d ˜±£¦ @  2ÃG?d ر£•ì¡v @  2ÄH?d ²£¨· @  2ÅI?d X²£ø×ûÎ @  2ÆJ?d ˜²£Ø"ù0 @  2ÇK?d ز£Ѓk @  2ÈL?d ³£Ë“ƒ @  2ÉM?d X³£ð´iú @  2ÊN?d ˜³£ÐAk @  2ËO?d س£.[¨ @  2ÌP?d ´£7[  @  2ÍQ?d X´£Çj¡u @  2ÎR?d ˜´£矣‹ @  2ÏS?d Ø´£BŸ{0 @  2ÐT?d µ£’×÷Ø @  2ÑU?d Xµ£b¨ ¡ @  2ÒV?d ˜µ£B]_ @  2ÓW?d ص£Ù®´ @  2ÔX?d ¶£DSu @  2ÕY?d X¶£´,ô  @  2ÖZ?d ˜¶£”Ùöò @  2×[?d ض£œx© @  2Ø\?d ·£L0œA @  2Ù]?d X·£¼Of8 @  2Ú^?d ˜·£œºdÆ @  2Û_?d Ø·£ÿž @  2Ü`?d ¸£Ëè @  2Ýa?d X¸£;—èy @  2Þb?d ˜¸£bê‡ @  2ßc?d ظ£¯dŒ @  2àd?d ¹£,™d @  2áe?d X¹£Sc @  2âf?d€ ˜¹£Ûe}E @  3g?d ع£¡n”‡ @  3h?d º£<*4F @  3i?d Xº£ 5Ò @  3j?d ˜º£)é7, @  3k?d غ£ïúŽ  @  3l?d »£?²å @  3m?d X»£§æ @  3n?d ˜»£!Š¥ @  3 o?d Ø»£Ùò @  3 p?d ¼£—ný @  3 q?d X¼£6¡oi @  3 r?d ˜¼£Tm— @  3 s?d ؼ£ÐGÔ¶ @  3t?d ½£X^ @  3u?d X½£“cý @  3v?d ˜½£³–ÁC @  3w?d ؽ£í•›E @  3x?d ¾£pÑ;„ @  3y?d X¾£Eç: @  3z?d ˜¾£e8î @  3{?d ؾ££Ï @  3|?d ¿£sI ' @  3}?d X¿£M„¨$ @  3~?d ˜¿£mqªÚ @uÐÀ£  3?d Ø¿£&êo @  3€?d 0À£Bó»= @  3?d pÀ£wź© @  3‚?d °À£W0¸W @  3ƒ?d ðÀ£‘#v @  3„?d 0Á£Akž @  3…?d pÁ£Ã1Í @  3 †?d °Á£ãô33 @  3!‡?d ðÁ£½÷i5 @  3"ˆ?d 0£ ³Éô @  3#‰?d p£…È` @  3$Š?d °Â£5pÊž @  3%‹?d ð£ócs¿ @  3&Œ?d 0ã#+ÿW @  3'?d pãæZT @  3(Ž?d °Ã£=Xª @  3)?d ðã@`@ @  3*?d 0Ä£“O @  3+‘?d pÄ£*8’Û @  3,’?d °Ä£ Í% @  3-“?d ðÄ£ÌÞ) @  3.”?d 0Å£–¥ì @  3/•?d pÅ£ú> @  30–?d °Å£¯<ñ @  31—?d ðÅ£ñ f÷ @  32˜?d 0Æ£lHÆ6 @  33™?d pÆ£Y~Ç¢ @  34š?d °Æ£y‹Å\ @  35›?d ðÆ£¿˜|} @  36œ?d 0Ç£oÐð• @  37?d pÇ£QU– @  38ž?d °Ç£qèWh @  39Ÿ?d ðÇ£× V^ @  3: ?d 0È£ãóÚC @  3;¡?d pÈ£ÖÅÛ× @  3<¢?d °È£ö0Ù) @  3=£?d ðÈ£0#` @  3>¤?d 0É£àkìà @  3?¥?d pÉ£ÌV! @  3@¦?d °É£ìóTß @  3A§?d ðÉ£²ðÙ @  3B¨?d 0Ê£/´® @  3C©?d pÊ£‚¯Œ @  3Dª?d °Ê£:w­r @  3E«?d ðÊ£üdS @  3F¬?d 0Ë£,,˜» @  3G­?d pË£á=¸ @  3H®?d °Ë£2?F @  3I¯?d ðË£ G¬ @  3J°?d 0Ì£ ô£ @  3K±?d pÌ£%?õ7 @  3L²?d °Ì£Ê÷É @  3M³?d ðÌ£ÃÙNè @  3N´?d 0Í£‘ @  3Oµ?d pÍ£€ýYã @  3P¶?d °Í£ [ @  3Q·?d ðÍ£þ  @  3R¸?d 0ΣcO¡Ú @  3S¹?d pΣVy N @  3Tº?d °Î£vŒ¢° @  3U»?d ðΣ°Ÿ‘ @  3V¼?d 0Ï£`×—y @  3W½?d pÏ£^2z @  3X¾?d °Ï£~ï0„ @  3Y¿?d ðÏ£([$£ @  3ZÀ?d 0У–…˜ @  3[Á?d pУ£³™… @  3\Â?d °Ð£ƒF›{ @  3]Ã?d ðУEU"Z @  3^Ä?d 0Ñ£•®² @  3_Å?d pÑ£wá @  3`Æ?d °Ñ£7‚ @  3aÇ?d ðÑ£iJ @  3bÈ?d 0Ò£ôÅêØ @  3cÉ?d pÒ£ÁóëL @  3dÊ?d °Ò£áé² @  3eË?d ðÒ£'P“ @  3fÌ?d 0Ó£÷]Ü{ @  3gÍ?d pÓ£Éyx @  3hÎ?d °Ó£ée{† @  3iÏ?d ðÓ£Ò6Cl @  3jÐ?d 0Ô£Ëx°c @  3kÑ?d pÔ£þN±÷ @  3lÒ?d °Ô£Þ»³  @  3mÓ?d ðÔ£¨ ( @  3nÔ?d 0Õ£Èà†À @  3oÕ?d pÕ£[Œ# @  3pÖ?d °Õ£{yÝ @  3q×?d ðÕ£%zEÛ @  3rØ?d 0Ö£¸>å @  3sÙ?d pÖ£äŽ @  3tÚ?d °Ö£­ýæp @  3uÛ?d ðÖ£kî_Q @  3vÜ?d 0×£»¦Ó¹ @  3wÝ?d p×£…kvº @  3xÞ?d °×£¥žtD @  3yß?d ð×£zur @  3zà?d 0Ø£7…ùo @  3{á?d pØ£³øû @  3|â?d °Ø£"Fú @  3}ã?d ðØ£äUC$ @  3~ä?d 0Ù£4ÏÌ @  3å?d pÙ£û&E< @  3€æ?d °Ù£ÛÓG @  3ç?d ðÙ£…ÐÄ @  3‚è?d 0Ú£”½ @  3ƒé?d pÚ£-¢¼‘ @  3„ê?d °Ú£ W¾o @  3…ë?d ðÚ£ËDN @  3†ì?d 0Û£ ‹¦ @  3‡í?d pÛ£%Á.¥ @  3ˆî?d °Û£4,[ @  3‰ï?d ðÛ£>g± @  3Šð?d 0Ü£')ç¾ @  3‹ñ?d pÜ£æ* @  3Œò?d °Ü£2êäÔ @  3ó?d ðÜ£ôù]õ @  3Žô?d 0Ý£$±Ñ @  3õ?d pÝ£·ÝJþ @  3ö?d °Ý£—(H @  3‘÷?d ðÝ£É+ @  3’ø?d 0Þ£To²Ç @  3“ù?d pÞ£aY³S @  3”ú?d °Þ£A¬±­ @  3•û?d ðÞ£‡¿Œ @  3–ü?d 0ߣW÷„d @  3—ý?d pߣi:!g @  3˜þ?d uÐà£/°ß£IÏ#™ @  3™ÿ?d ðߣ}Ú6  @  3š?d Hà£d~hÖ @  3›?d ˆà£ó,|b @  3œ?d Èà£q½k¼ @  3?d á£åwI« @  3ž?d Há£gæ^u @  3Ÿ?d ˆá£Gè÷ @  3 ?d Èá£ÅyàØ @  3¡?d ⣄¯ Á @  3¢?d Hâ£> @  3£ ?d ˆâ£‘l« @  3¤ ?d Èâ£ýu @  3¥ ?d 㣇7;b @  3¦ ?d H㣦,¼ @  3§ ?d ˆã£™œŸ @  3¨?d È㣞‹A @  3©?d 䣻Wz @  3ª?d Hä£9ƒ@¤ @  3«?d ˆä£®ÑT @  3¬?d È䣇Ÿ @  3­ ?d å£M½  @  3® ?d Hå£ܪÒ @  3¯ ?d ˆå£2Ô$ @  3° ?d È声E3Ï @  3± ?d æ£ñ“ÞÖ @  3² ?d Hæ£sÉ @  3³ ?d ˆæ£äPݼ @  3´ ?d Èæ£fÁÊb @  3µ ?d ç£ò èu @  3¶ ?d Hç£pšÿ« @  3· ?d ˆç£ì3Oˆ @  3¸ ?d Èç£n¢XV @  3¹ ?d è£~(£ @  3º  ?d Hè£ü¹Õ} @  3» !?d ˆè£këÁÉ @  3¼ "?d Èè£ézÖ @  3½ #?d é£}°ô @  3¾ $?d Hé£ÿ!ãÞ @  3¿ %?d ˆé£q(L? @  3À &?d Èé£ó¹[á @  3Á '?d ꣲo¶ø @  3 (?d Hê£0þ¡& @  3à )?d ˆê£§¬µ’ @  3Ä *?d Èê£%=¢L @  3Å +?d 룱÷€[ @  3Æ ,?d Hë£3f—… @  3Ç -?d ˆë£¯Ï'¦ @  3È .?d Èë£-^0x @  3É /?d ì£ÒìC @  3Ê 0?d Hì£Cû @  3Ë 1?d ˆì£˜ï) @  3Ì 2?d È죀ø÷ @  3Í 3?d í£ŽJÚà @  3Î 4?d Hí£ ÛÍ> @  3Ï 5?d ˆí£=ÓCý @  3Ð 6?d Èí£¿BT# @  3Ñ 7?d î£þ”¹: @  3Ò 8?d Hî£|®ä @  3Ó 9?d ˆî£ëWºP @  3Ô :?d Èî£iÆ­Ž @  3Õ ;?d ï£ý ™ @  3Ö <?d HG @  3× =?d ˆï£ã4(d @  3Ø >?d Èï£a¥?º @  3Ù ??d ð£ ^€ñ @  3Ú @?d Hð£‰Ï—/ @  3Û A?d ˆð£ƒ› @  3Ü B?d È𣜠”E @  3Ý C?d ñ£ƶR @  3Þ D?d Hñ£ŠW¡Œ @  3ß E?d ˆñ£ªYÿ @  3à F?d Èñ£(È! @  3á G?d ò£iò8 @  3â H?d€ Hò£mÙM_ @  4 I?d ˆò£Ê @  4 J?d Èò£™[ @  4 K?d ó£ÈØßæ @  4 L?d Hó£JIÈ8 @  4 M?d ˆó£R'a @  4 N?d Èó£šÃ0¿ @  4 O?d ô£ôý³þ @  4 P?d Hô£vl¤  @  4 Q?d ˆô£$wKy @  4 R?d Èô£¦æ\§ @  4 S?d õ£÷e…] @  4 T?d Hõ£uô’ƒ @  4 U?d ˆõ£'ï}Ú @  4 V?d Èõ£¥~j @  4 W?d ö£‡»æ‡ @  4 X?d Hö£*ñY @  4 Y?d ˆö£W1 @  4 Z?d Èö£Õ  Þ @  4 [?d ÷£„#Ð$ @  4 \?d H÷£²Çú @  4 ]?d ˆ÷£T©(£ @  4 ^?d È÷£Ö8?} @  4 _?d ø£úò @  4 `?d Hø£Š‘í, @  4 a?d ˆø£ØŠu @  4 b?d Èø£Z« @  4 c?d ù£ ˜ÌQ @  4 d?d Hù£‰ Û @  4 e?d ˆù£Û4Ö @  4 f?d Èù£Yƒ# @  4 g?d ú£j@ˆ; @  4 h?d Hú£èÑŸå @  4! i?d ˆú£ºÊp¼ @  4" j?d Èú£8[gb @  4# k?d û£iؾ˜ @  4$ l?d Hû£ëI©F @  4% m?d ˆû£¹RF @  4& n?d Èû£;ÃQÁ @  4' o?d ü£UýÒ€ @  4( p?d Hü£×lÅ^ @  4) q?d ˆü£…w* @  4* r?d Èü£æ=Ù @  4+ s?d ý£Veä# @  4, t?d Hý£Ôôóý @  4- u?d ˆý£†ï¤ @  4. v?d Èý£~ z @  4/ w?d þ£&»‡ù @  40 x?d Hþ£¤*' @  41 y?d ˆþ£ö1~ @  42 z?d Èþ£t h  @  43 {?d ÿ£%#±Z @  44 |?d Hÿ£§²¦„ @  45 }?d ˆÿ£õ©IÝ @  46 uФ~?d Èÿ£w8^ @  47 ?d ¤E¯DŒ @  48 €?d `¤Ç>SR @  49 ?d  ¤•%¼  @  4: ‚?d ऴ«Õ @  4; ƒ?d ¤F7r/ @  4< „?d `¤Ħeñ @  4= …?d  ¤–½Š¨ @  4> †?d à¤,v @  4? ‡?d ¤‰è0× @  4@ ˆ?d `¤ y'  @  4A ‰?d  ¤YbÈP @  4B Š?d à¤Ûóߎ @  4C ‹?d ¤Špt @  4D Œ?d `¤áª @  4E ?d  ¤Zúþó @  4F Ž?d à¤Øké- @  4G ?d ¤¶Ujl @  4H ?d `¤4Ä}² @  4I ‘?d  ¤fß’ë @  4J ’?d à¤äN…5 @  4K “?d ¤µÍ\Ï @  4L ”?d `¤7\K @  4M •?d  ¤eG¤H @  4N –?d à¤çÖ³– @  4O —?d ¤Å? @  4P ˜?d `¤G‚(Ë @  4Q ™?d  ¤™Ç’ @  4R š?d गÐL @  4S ›?d ¤Æ‹ ¶ @  4T œ?d `¤Dh @  4U ?d  ¤ñ1 @  4V ž?d औæï @  4W Ÿ?d ¤J¨#` @  4X  ?d `¤È94¾ @  4Y ¡?d  ¤š"Ûç @  4Z ¢?d ळÌ9 @  4[ £?d ¤I0à @  4\ ¤?d ` ¤Ë¡ @  4] ¥?d   ¤™ºíD @  4^ ¦?d à ¤+úš @  4_ §?d ¤(èQ© @  4` ¨?d ` ¤ªyFw @  4a ©?d   ¤øb©. @  4b ª?d à ¤zó¾ð @  4c «?d ¤+pg  @  4d ¬?d ` ¤©ápÔ @  4e ­?d   ¤ûúŸ @  4f ®?d à ¤ykˆS @  4g ¯?d ¤U  @  4h °?d ` ¤•ÄÌ @  4i ±?d   ¤Çßó• @  4j ²?d à ¤ENäK @  4k ³?d ¤Í=± @  4l ´?d ` ¤–\*o @  4m µ?d   ¤ÄGÅ6 @  4n ¶?d à ¤FÖÒè @  4o ·?d ¤d^k @  4p ¸?d `¤æ‚Iµ @  4q ¹?d  ¤´™¦ì @  4r º?d à¤6±2 @  4s »?d ¤g‹hÈ @  4t ¼?d `¤å @  4u ½?d  ¤·O @  4v ¾?d à¤5‡‘ @  4w ¿?d ¤‘Ùg  @  4x À?d `¤Hp~ @  4y Á?d  ¤ASŸ' @  4z Â?d à¤Èù @  4{ Ã?d ¤’AQ @  4| Ä?d `¤ÐFÝ @  4} Å?d  ¤BË©„ @  4~ Æ?d à¤ÀZ¾Z @  4 Ç?d ¤¾È#Ê @  4€ È?d `¤?d ø/¤ œ’x @  5??d 80¤Êg-3 @  5@?d x0¤Hö:í @  5A?d ¸0¤Ô_ŠÎ @  5B?d ø0¤VÎ @  5C?d 81¤Â¿ @  5D?d x1¤@•¨Ù @  5E?d ¸1¤×Ǽm @  5F?d ø1¤UV«³ @  5G?d 82¤€Fª @  5H?d x2¤–Qt @  5I?d ¸2¤¶ø @  5 J?d ø2¤4ŽïÙ @  5!K?d 83¤ DÍÎ @  5"L?d x3¤"ÕÚ @  5#M?d ¸3¤µ‡Î¤ @  5$N?d ø3¤7Ùz @  5%O?d 84¤—šA @  5&P?d x4¤ Ÿ @  5'Q?d ¸4¤‰¢¢¼ @  5(R?d ø4¤ 3µb @  5)S?d 85¤Ÿù—u @  5*T?d x5¤h€« @  5+U?d ¸5¤Š:” @  5,V?d ø5¤«ƒÁ @  5-W?d 86¤I}nØ @  5.X?d x6¤Ëìy @  5/Y?d ¸6¤úä÷Å @  50Z?d ø6¤xuà @  51[?d 87¤ì¿Â  @  52\?d x7¤n.ÕÒ @  53]?d ¸7¤ù|Áf @  54^?d ø7¤{íÖ¸ @  55_?d 88¤kgLM @  56`?d x8¤éö[“ @  57a?d ¸8¤u_ë° @  58b?d ø8¤÷Îün @  59c?d 89¤cÞy @  5:d?d x9¤á•ɧ @  5;e?d ¸9¤vÇÝ @  5<f?d ø9¤ôVÊÍ @  5=g?d 8:¤µ€'Ô @  5>h?d x:¤70  @  5?i?d ¸:¤¹Ÿë @  5@j?d ø:¤;‰ˆ5 @  5Ak?d 8;¤¯Cª" @  5Bl?d x;¤-Ò½ü @  5Cm?d ¸;¤º€©H @  5Dn?d ø;¤8¾– @  5Eo?d 8<¤˜b­ @  5Fp?d x<¤ us @  5Gq?d ¸<¤†¥ÅP @  5Hr?d ø<¤4ÒŽ @  5Is?d 8=¤þð™ @  5Jt?d x=¤oçG @  5Ku?d ¸=¤…=óó @  5Lv?d ø=¤¬ä- @  5Mw?d 8>¤Fz 4 @  5Nx?d x>¤Äëê @  5Oy?d ¸>¤õã) @  5Pz?d ø>¤wr‡÷ @  5Q{?d 8?¤㸥à @  5R|?d x?¤a)²> @  5S}?duÐ@¤7 ¸?¤ö{¦Š @  5T~?d ø?¤tê±T @  5U?d P@¤~¥\ @  5V€?d @¤^P^ý @  5W?d Ð@¤`ûþ @  5X‚?d A¤°Õw @  5Yƒ?d PA¤vÆÎ7 @  5Z„?d A¤V3ÌÉ @  5[…?d ÐA¤cÍ] @  5\†?d B¤þAmœ @  5]‡?d PB¤ B7š @  5^ˆ?d B¤€·5d @  5_‰?d ÐB¤݉7 @  5`Š?d C¤Ò•ß @  5a‹?d PC¤†¼þ @  5bŒ?d C¤4s¾ @  5c?d ÐC¤E¿” @  5dŽ?d D¤ L› @  5e?d PD¤#Xtq @  5f?d D¤­v @  5g‘?d ÐD¤=`ÓŒ @  5h’?d E¤í(_d @  5i“?d PE¤+;æE @  5j”?d E¤ Îä» @  5k•?d ÐE¤>øå/ @  5l–?d F¤£¼Eî @  5m—?d PF¤ý¿è @  5n˜?d F¤ÝJ @  5o™?d ÐF¤N&†õ @  5pš?d G¤žn  @  5q›?d PG¤X}³< @  5rœ?d G¤xˆ±Â @  5s?d ÐG¤M¾°V @  5tž?d H¤yAÄR @  5«?d PK¤ø×ë# @  5‚¬?d K¤Ø"éÝ @  5ƒ­?d ÐK¤íèI @  5„®?d L¤ôZF @  5…¯?d PL¤Ï #¬ @  5†°?d L¤ïü!R @  5‡±?d ÐL¤Ñ1„Q @  5ˆ²?d M¤y¹ @  5‰³?d PM¤Çj±˜ @  5Š´?d M¤石f @  5‹µ?d ÐM¤Ò©²ò @  5Œ¶?d N¤Oí3 @  5·?d PN¤îH5 @  5ޏ?d N¤1JË @  5¹?d ÐN¤¢wÑ( @  5º?d O¤r?]À @  5‘»?d PO¤´,äá @  5’¼?d O¤”Ùæ @  5“½?d ÐO¤¡ïç‹ @  5”¾?d P¤1[9 @  5•¿?d PP¤I…O @  5–À?d P¤ipMà @  5—Á?d ÐP¤W½èã @  5˜Â?d Q¤‡õd  @  5™Ã?d PQ¤AæÝ* @  5šÄ?d Q¤aßÔ @  5›Å?d ÐQ¤T%Þ@ @  5œÆ?d R¤Éa~ @  5Ç?d PR¤—b$‡ @  5žÈ?d R¤·—&y @  5ŸÉ?d ÐR¤5ýš* @  5 Ê?d S¤åµÂ @  5¡Ë?d PS¤#¦¯ã @  5¢Ì?d S¤S­ @  5£Í?d ÐS¤6e¬‰ @  5¤Î?d T¤/+_† @  5¥Ï?d PT¤xgl @  5¦Ð?d T¤4e’ @  5§Ñ?d ÐT¤ @À‘ @  5¨Ò?d U¤ÚLy @  5©Ó?d PU¤õX @  5ªÔ?d U¤<î÷¦ @  5«Õ?d ÐU¤ Øö2 @  5¬Ö?d V¤”œVó @  5­×?d PV¤ÊŸ õ @  5®Ø?d V¤êj  @  5¯Ù?d ÐV¤y•è @  5°Ú?d W¤©N @  5±Û?d PW¤o] ! @  5²Ü?d W¤O¨¢ß @  5³Ý?d ÐW¤zž£K @  5´Þ?d X¤Na/V @  5µß?d PX¤è….` @  5¶à?d X¤Èp,ž @  5·á?d ÐX¤ö½‰ @  5¸â?d Y¤&õu @  5¹ã?d PY¤àæ¼T @  5ºä?d Y¤À¾ª @  5»å?d ÐY¤õ%¿> @  5¼æ?d Z¤haÿ @  5½ç?d PZ¤6bEù @  5¾è?d Z¤—G @  5¿é?d ÐZ¤:úýÆ @  5Àê?d [¤ê²q. @  5Áë?d P[¤,¡È @  5Âì?d [¤ TÊñ @  5Ãí?d Ð[¤9bËe @  5Äî?d \¤ ,8j @  5Åï?d P\¤€ @  5Æð?d \¤;Š~ @  5Çñ?d Ð\¤G§} @  5Èò?d ]¤Õ+• @  5Éó?d P]¤’´ @  5Êô?d ]¤3éJ @  5Ëõ?d Ð]¤ß‘Þ @  5Ìö?d ^¤››1 @  5Í÷?d P^¤Řk @  5Îø?d ^¤åmiç @  5Ïù?d Ð^¤vò @  5Ðú?d _¤¦I~ì @  5Ñû?d P_¤`ZÇÍ @  5Òü?d _¤@¯Å3 @  5uÐ`¤Óý?d Ð_¤u™Ä§ @  5Ôþ?d (`¤Ëaq? @  5Õÿ?d h`¤ÿtd† @  5Ö?d ¨`¤ßfx @  5×?d è`¤áLÃ{ @  5Ø?d (a¤1O“ @  5Ù?d ha¤÷ö² @  5Ú?d ¨a¤×âôL @  5Û?d èa¤âÔõØ @  5Ü?d (b¤U @  5Ý?d hb¤!“ @  5Þ?d ¨b¤f á @  5ß ?d èb¤ƒ ±² @  5à ?d (c¤SD=Z @  5á ?d hc¤•W„{ @  5â ?d€ ¨c¤tåq… @  6 ?d èc¤ ’88 @  6?d (d¤¹ÜË7 @  6?d hd¤GÆ0 @  6?d ¨d¤g3 Î @  6?d èd¤—Lð· @  6?d (e¤G|_ @  6?d he¤O¥š @  6?d ¨e¤oP˜ú @  6 ?d èe¤Ÿ/bƒ @  6 ?d (f¤kÂB @  6 ?d hf¤™!c© @  6 ?d ¨f¤¹ÔaW @  6 ?d èf¤I«›. @  6?d (g¤™ãÆ @  6?d hg¤<ãÏ} @  6?d ¨g¤̓ @  6?d èg¤ìi7ú @  6?d (h¤Ø–»ç @  6?d hh¤»;A< @  6 ?d ¨h¤›ÎC @  6!?d èh¤k±¹» @  6"?d (i¤»ù5S @  6#?d hi¤³XÓ @  6$?d ¨i¤“­Ñö @  6%?d èi¤cÒ+ @  6&?d (j¤þ–‹N @  6'?d hj¤eÜ*¥ @  6(?d ¨j¤E)([ @  6)?d èj¤µVÒ" @  6*?d (k¤e^Ê @  6+?d hk¤Ñ¡Á @  6 ,?d ¨k¤ñí£? @  6!-?d èk¤’YF @  6".?d (l¤ܪI @  6#/?d hl¤æÆiN @  6$0?d ¨l¤Æ3k° @  6%1?d èl¤6L‘É @  6&2?d (m¤æ! @  6'3?d hm¤î¥ûz @  6(4?d ¨m¤ÎPù„ @  6)5?d èm¤>/ý @  6*6?d (n¤£k£< @  6+7?d hn¤8!× @  6,8?d ¨n¤Ô) @  6-9?d èn¤è«úP @  6.:?d (o¤8ãv¸ @  6/;?d ho¤ã® @  60<?d ¨o¤½¬ý @  61=?d èo¤MiV„ @  62>?d (p¤ó·ê6 @  63??d hp¤`Jü @  64@?d ¨p¤@¿ @  65A?d èp¤°Àý{ @  66B?d (q¤`ˆq“ @  67C?d hq¤h)—È @  68D?d ¨q¤HÜ•6 @  69E?d èq¤¸£oO @  6:F?d (r¤%çÏŽ @  6;G?d hr¤¾­ne @  6<H?d ¨r¤žXl› @  6=I?d èr¤n'–â @  6>J?d (s¤¾o  @  6?K?d hs¤¤nã“ @  6@L?d ¨s¤„›ám @  6AM?d ès¤tä @  6BN?d (t¤mªè @  6CO?d ht¤“°+ @  6DP?d ¨t¤³E)â @  6EQ?d èt¤C:Ó› @  6FR?d (u¤“r_s @  6GS?d hu¤›Ó¹( @  6HT?d ¨u¤»&»Ö @  6IU?d èu¤KYA¯ @  6JV?d (v¤Öán @  6KW?d hv¤MW@… @  6LX?d ¨v¤m¢B{ @  6MY?d èv¤ݸ @  6NZ?d (w¤M•4ê @  6O[?d hw¤è•ìQ @  6P\?d ¨w¤È`î¯ @  6Q]?d èw¤8Ö @  6R^?d (x¤ à˜Ë @  6S_?d hx¤oMb @  6T`?d ¨x¤O¸`î @  6Ua?d èx¤¿Çš— @  6Vb?d (y¤o @  6Wc?d hy¤g.ð$ @  6Xd?d ¨y¤GÛòÚ @  6Ye?d èy¤·¤£ @  6Zf?d (z¤*à¨b @  6[g?d hz¤±ª ‰ @  6\h?d ¨z¤‘_ w @  6]i?d èz¤a ñ @  6^j?d ({¤±h}æ @  6_k?d h{¤n‚í @  6`l?d ¨{¤%›€ @  6am?d è{¤Õäzj @  6bn?d (|¤̪‰e @  6co?d h|¤2°Jb @  6dp?d ¨|¤EHœ @  6eq?d è|¤â:²å @  6fr?d (}¤2r>  @  6gs?d h}¤:ÓØV @  6ht?d ¨}¤&Ú¨ @  6iu?d è}¤êY Ñ @  6jv?d (~¤w€ @  6kw?d h~¤ìW!û @  6lx?d ¨~¤Ì¢# @  6my?d è~¤<ÝÙ| @  6nz?d (¤ì•U” @  6o{?d h¤I•/ @  6p|?d ¨¤uЀ¤'i`Ñ @  6q}?d 褙u¨ @  6r~?d @€¤÷¡—Ü @  6s?d €€¤Ûþ9¤ @  6t€?d À€¤Yo.z @  6u?d ¤ûÉO5 @  6v‚?d @¤yXXë @  6wƒ?d €¤Ó« @  6x„?d À¤Q ¼N @  6y…?d ‚¤¾¦ñ( @  6z†?d @‚¤<7æö @  6{‡?d €‚¤R= @  6|ˆ?d À‚¤‡ˆEã @  6}‰?d ƒ¤%.$¬ @  6~Š?d @ƒ¤§¿3r @  6‹?d €ƒ¤üŒïú @  6€Œ?d Àƒ¤~ø$ @  6?d „¤½æŒ @  6‚Ž?d @„¤—,ñR @  6ƒ?d €„¤ËR'u @  6„?d À„¤IÃ0« @  6…‘?d …¤ëeQä @  6†’?d @…¤iôF: @  6‡“?d €…¤Ã1µA @  6ˆ”?d À…¤A ¢Ÿ @  6‰•?d †¤® ïù @  6Š–?d @†¤,›ø' @  6‹—?d €†¤µLì @  6Œ˜?d À†¤—$[2 @  6™?d ‡¤5‚:} @  6Žš?d @‡¤·-£ @  6›?d €‡¤°wà8 @  6œ?d À‡¤2æ÷æ @  6‘?d ˆ¤t÷–\ @  6’ž?d @ˆ¤öf‚ @  6“Ÿ?d €ˆ¤7¯ny @  6” ?d Àˆ¤µ>y§ @  6•¡?d ‰¤˜è @  6–¢?d @‰¤• 6 @  6—£?d €‰¤?ÌüM @  6˜¤?d À‰¤½]ë“ @  6™¥?d ФR÷¦õ @  6š¦?d @ФÐf±+ @  6›§?d €Š¤éHà @  6œ¨?d ÀФkÙ> @  6©?d ‹¤Ésq @  6žª?d @‹¤Kîd¯ @  6Ÿ«?d €‹¤]ŒŽ„ @  6 ¬?d À‹¤ß™Z @  6¡­?d Œ¤´½‡ò @  6¢®?d @Œ¤6,, @  6£¯?d €Œ¤jRF  @  6¤°?d ÀŒ¤èÃQÕ @  6¥±?d ¤Je0š @  6¦²?d @¤Èô'D @  6§³?d €¤b1Ô? @  6¨´?d À¤à Ãá @  6©µ?d ޤ އ @  6ª¶?d @ޤ›™Y @  6«·?d €Ž¤´µ-’ @  6¬¸?d Àޤ6$:L @  6­¹?d ¤”‚[ @  6®º?d @¤LÝ @  6¯»?d €¤wF @  6°¼?d À¤“æ–˜ @  6±½?d ¤_ÖÇ @  6²¾?d @¤ÝGÐS @  6³¿?d €¤ìÞ*¹ @  6´À?d À¤nO=g @  6µÁ?d ‘¤Ìé\( @  6¶Â?d @‘¤NxKö @  6·Ã?d €‘¤佸 @  6¸Ä?d À‘¤f,¯S @  6¹Å?d ’¤‰†â5 @  6ºÆ?d @’¤ õë @  6»Ç?d €’¤29A  @  6¼È?d À’¤°¨Vþ @  6½É?d “¤7± @  6¾Ê?d @“¤Ÿ o @  6¿Ë?d €“¤(úÌÖ @  6ÀÌ?d À“¤ªkÛ @  6ÁÍ?d ”¤ÁËÅ  @  6ÂÎ?d @”¤CZÒ~ @  6ÃÏ?d €”¤$Y @  6ÄÐ?d À”¤µ‡ @  6ÅÑ?d •¤?rÈ @  6ÆÒ?d @•¤½‚e @  6ÇÓ?d €•¤G–m @  6ÈÔ?d À•¤•Ö³ @  6ÉÕ?d –¤z|ÌÕ @  6ÊÖ?d @–¤øíÛ  @  6Ë×?d €–¤ÁÃoÀ @  6ÌØ?d À–¤CRx @  6ÍÙ?d —¤áôQ @  6ÎÚ?d @—¤ce @  6ÏÛ?d €—¤dà @  6ÐÜ?d À—¤æÔÊ @  6ÑÝ?d ˜¤ µp @  6ÒÞ?d @˜¤"¢® @  6Óß?d €˜¤ãÙMU @  6Ôà?d À˜¤aHZ‹ @  6Õá?d ™¤Ãî;Ä @  6Öâ?d @™¤A, @  6×ã?d €™¤ëºßa @  6Øä?d À™¤i+È¿ @  6Ùå?d š¤†…Ù @  6Úæ?d @𤒠@  6Ûç?d €š¤=>&Ì @  6Üè?d Àš¤¿¯1 @  6Ýé?d ›¤ P] @  6Þê?d @›¤Ÿ˜Gƒ @  6ßë?d €›¤‰ú­¨ @  6àì?d À›¤ kºv @  6áí?d œ¤`ˤÞ @  6âî?d€ @œ¤–™¯¦ @  7ï?d €œ¤+¦1¨ @  7ð?d Àœ¤©7&v @  7ñ?d ¤ÎØ¼Ô @  7ò?d @¤LI«  @  7ó?d €¤(>  @  7ô?d À¤ª¯Õ @  7õ?d ž¤‹·É @  7ö?d @ž¤ & @  7 ÷?d €ž¤õAZ1 @  7 ø?d Àž¤wÐMï @  7 ù?d Ÿ¤?×M @  7 ú?d @Ÿ¤’®À“ @  7 û?d €Ÿ¤öÙl’ @  7üuР¤?d ÀŸ¤tH{L @  7ý?d  ¤¾) @  7þ?d X ¤–/>É @  7ÿ?d ˜ ¤j @  7#?d ¥¤„Ô¤È @  7$?d X¥¤E³ @  7%?d ˜¥¤b2 @  7&?d Ø¥¤à£É @  7'?d ¦¤Á»Õ @  7(?d X¦¤C*  @  7)?d ˜¦¤¿MB- @  7*?d ئ¤=ÜUó @  7+?d §¤Z3ÏQ @  7,?d X§¤Ø¢Ø @  7-?d ˜§¤¼ÕtŽ @  7.?d ا¤>DcP @  7/?d ¨¤Fcp @  70?d X¨¤™×t® @  71?d ˜¨¤W`¸ @  72 ?d ب¤Æwf @  73!?d ©¤x)íÄ @  74"?d X©¤ú¸ú @  75#?d ˜©¤žÏV @  76$?d Ø©¤^AÅ @  77%?d ª¤=FSÙ @  78&?d Xª¤¿×D @  79'?d ˜ª¤C° ! @  7:(?d ت¤Á!ÿ @  7;)?d «¤¦Î†] @  7<*?d X«¤$_‘ƒ @  7=+?d ˜«¤@(=‚ @  7>,?d Ø«¤¹*\ @  7?-?d ¬¤u tL @  7@.?d X¬¤÷šc’ @  7A/?d ˜¬¤n­NX @  7B0?d ج¤ì?d X°¤ñ#í @  7Q??d ˜°¤è!"ê @  7R@?d ذ¤j°54 @  7SA?d ±¤ _¯– @  7TB?d X±¤θH @  7UC?d ˜±¤ë¹I @  7VD?d ر¤i(— @  7WE?d ²¤H0‹ @  7XF?d X²¤Ê¡U @  7YG?d ˜²¤6ÆIs @  7ZH?d ز¤´W^­ @  7[I?d ³¤Ó¸Ä @  7\J?d X³¤Q)ÓÑ @  7]K?d ˜³¤5^Ð @  7^L?d س¤·Ïh @  7_M?d ´¤®z0Œ @  7`N?d X´¤,ë'R @  7aO?d ˜´¤µÜ ˜ @  7bP?d Ø´¤7MF @  7cQ?d µ¤P¢‡ä @  7dR?d Xµ¤Ò3: @  7eS?d ˜µ¤¶D<; @  7fT?d ص¤4Õ+å @  7gU?d ¶¤Í9ù @  7hV?d X¶¤—\.' @  7iW?d ˜¶¤k;a @  7jX?d ض¤éªvß @  7kY?d ·¤ŽEì} @  7lZ?d X·¤ Ôû£ @  7m[?d ˜·¤h£W¢ @  7n\?d Ø·¤ê2@| @  7o]?d ¸¤Ï0@\ @  7p^?d X¸¤M¡W‚ @  7q_?d ˜¸¤I!C” @  7r`?d ظ¤˰TJ @  7sa?d ¹¤¬_Îè @  7tb?d X¹¤.ÎÙ6 @  7uc?d ˜¹¤J¹u7 @  7vd?d ع¤È(bé @  7we?d º¤é0põ @  7xf?d Xº¤k¡g+ @  7yg?d ˜º¤—Æ(  @  7zh?d غ¤W?Ó @  7{i?d »¤r¸¥q @  7|j?d X»¤ð)²¯ @  7}k?d ˜»¤”^® @  7~l?d Ø»¤Ï p @  7m?d ¼¤B+gQ @  7€n?d X¼¤Àºp @  7o?d ˜¼¤Y]E @  7‚p?d ؼ¤ÛJ› @  7ƒq?d ½¤¼óÐ9 @  7„r?d X½¤>bÇç @  7…s?d ˜½¤Zkæ @  7†t?d ؽ¤Ø„|8 @  7‡u?d ¾¤ùœn$ @  7ˆv?d X¾¤{ yú @  7‰w?d ˜¾¤‡j6Ü @  7Šx?d ؾ¤û! @  7‹y?d ¿¤b»  @  7Œz?d X¿¤à…¬~ @  7{?d ˜¿¤„ò @uÐÀ¤  7Ž|?d Ø¿¤?¤Ët @  7 }?d 0À¤J© @  7 ~?d pÀ¤È8Å @  7‘ ?d °À¤!.TP @  7’ €?d ðÀ¤£¿CŽ @  7“ ?d 0Á¤ÄPÙ, @  7” ‚?d pÁ¤FÁÎò @  7• ƒ?d °Á¤"¶bó @  7– „?d ðÁ¤ 'u- @  7— …?d 0¤?g1 @  7˜ †?d p¤®pï @  7™ ‡?d °Â¤ÿÉ?É @  7š ˆ?d ð¤}X( @  7› ‰?d 0ä·²µ @  7œ Š?d pä˜&¥k @  7 ‹?d °Ã¤üQ j @  7ž Œ?d ðä~À´ @  7Ÿ ?d 0ĤguF6 @  7  Ž?d pĤåäQè @  7¡ ?d °Ä¤|Ó|" @  7¢ ?d ðĤþBkü @  7£ ‘?d 0Ť™­ñ^ @  7¤ ’?d pŤ<æ€ @  7¥ “?d °Å¤KJ @  7¦ ”?d ðŤýÚ]_ @  7§ •?d 0ƤÜÂOC @  7¨ –?d pƤ^SX @  7© —?d °Æ¤¢4» @  7ª ˜?d ðƤ ¥e @  7« ™?d 0ǤGJšÇ @  7¬ š?d pǤÅÛ @  7­ ›?d °Ç¤¡¬! @  7® œ?d ðǤ#=6Æ @  7¯ ?d 0Ȥ?6æ @  7° ž?d pȤ„®!8 @  7± Ÿ?d °È¤€.5. @  7²  ?d ðȤ¿"ð @  7³ ¡?d 0ɤeP¸R @  7´ ¢?d pɤçÁ¯Œ @  7µ £?d °É¤ƒ¶ @  7¶ ¤?d ðɤ'S @  7· ¥?d 0ʤ ?O @  7¸ ¦?d pʤ¢®‘ @  7¹ §?d °Ê¤^É^· @  7º ¨?d ðʤÜXIi @  7» ©?d 0ˤ»·ÓË @  7¼ ª?d pˤ9&Ä @  7½ «?d °Ë¤]Qh @  7¾ ¬?d ðˤßÀÊ @  7¿ ­?d 0̤hr!Ú @  7À ®?d p̤êã6 @  7Á ¯?d °Ì¤sÔÎ @  7 °?d ð̤ñE  @  7à ±?d 0ͤ–ª–² @  7Ä ²?d pͤ;l @  7Å ³?d °Í¤pL-m @  7Æ ´?d ðͤòÝ:³ @  7Ç µ?d 0ΤÓÅ(¯ @  7È ¶?d pΤQT?q @  7É ·?d °Î¤­3pW @  7Ê ¸?d ðΤ/¢g‰ @  7Ë ¹?d 0ϤHMý+ @  7Ì º?d pϤÊÜêõ @  7Í »?d °Ï¤®«Fô @  7Î ¼?d ðϤ,:Q* @  7Ï ½?d 0Фƒa¥ @  7Ð ¾?d pФˆv{ @  7Ñ ¿?d °Ð¤õXw| @  7Ò À?d ðФwÉ`¢ @  7Ó Á?d 0Ѥ&ú @  7Ô Â?d pѤ’·íÞ @  7Õ Ã?d °Ñ¤öÀAß @  7Ö Ä?d ðѤtQV @  7× Å?d 0Ò¤UID @  7Ø Æ?d pÒ¤רSà @  7Ù Ç?d °Ò¤+¿å @  7Ú È?d ðÒ¤©. ; @  7Û É?d 0Ó¤ÎÁ‘™ @  7Ü Ê?d pÓ¤LP†G @  7Ý Ë?d °Ó¤('*F @  7Þ Ì?d ðÓ¤ª¶=˜ @  7ß Í?d 0Ô¤³e @  7à Î?d pÔ¤1’rÄ @  7á Ï?d °Ô¤¨¥_ @  7â Ð?d€ ðÔ¤®\‚ @  8 Ñ?d 0Õ¤„Ž  @  8 Ò?d pÕ¤‘™× @  8 Ó?d °Õ¤§¯Î; @  8 Ô?d ðÕ¤%>Ùå @  8 Õ?d 0֤ʔ”ƒ @  8 Ö?d pÖ¤Hƒ] @  8 ×?d °Ö¤zГ @  8 Ø?d ðÖ¤øA„ß @  8 Ù?d 0פZçå @  8 Ú?d pפØvòN @  8 Û?d °×¤yH¥¢ @  8 Ü?d ðפûÙ²| @  8 Ý?d 0ؤ½ÈÓÆ @  8 Þ?d pؤ?YÄ @  8 ß?d °Ø¤Xʱ” @  8 à?d ðؤÚ[¦J @  8 á?d 0Ù¤xýÇ @  8 â?d pÙ¤úlÐÛ @  8 ã?d °Ù¤[R‡7 @  8 ä?d ðÙ¤ÙÃé @  8 å?d 0Ú¤6iÝ @  8 æ?d pÚ¤´øÊQ @  8 ç?d °Ú¤†-Ú  @  8 è?d ðÚ¤¼ÍÓ @  8 é?d 0Û¤¦¬œ @  8 ê?d pÛ¤$‹»B @  8 ë?d °Û¤…µì® @  8 ì?d ðÛ¤$ûp @  8 í?d 0ܤl„åØ @  8 î?d pܤîò @  8 ï?d °Ü¤7™æ @  8 ð?d ðܤ‡¦Ž8 @  8! ñ?d 0ݤ%ïw @  8" ò?d pݤ§‘ø© @  8# ó?d °Ý¤¯¯E @  8$ ô?d ðݤ„>¸› @  8% õ?d 0Þ¤k”õý @  8& ö?d pÞ¤éâ# @  8' ÷?d °Þ¤ÛÐò @  8( ø?d ðÞ¤YAå¡ @  8) ù?d 0ߤûç„î @  8* ú?d pߤyv“0 @  8+ û?d uÐà¤/°ß¤ØHÄÜ @  8, ü?d ðߤZÙÓ @  8- ý?d Hà¤1“`S @  8. þ?d ˆà¤fb­ @  8/ ÿ?d Èà¤F`Ž @  80 ?d ᤖ(šf @  81 ?d Há¤fW` @  82 ?d ˆá¤F¢bá @  83 ?d Èá¤Eø - @  84 ?d â¤ؼ€ì @  85 ?d Hâ¤(Ãz• @  86 ?d ˆâ¤6xk @  87 ?d È⤘‡} @  88 ?d ã¤HÏñÿ @  89  ?d H㤸° † @  8:  ?d ˆã¤˜E x @  8;  ?d È㤛K´ @  8<  ?d 䤂Q¸» @  8=  ?d Hä¤r.B @  8> ?d ˆä¤RÛ@< @  8? ?d È䤵š8n @  8@ ?d å¤eÒ´† @  8A ?d H夕­Nÿ @  8B ?d ˆå¤µXL @  8C ?d Èå¤¶Í @  8D ?d æ¤+F®  @  8E ?d Hæ¤Û9Tu @  8F ?d ˆæ¤ûÌV‹ @  8G ?d Èæ¤k}S÷ @  8H ?d 礻5ß @  8I ?d Hç¤KJ%f @  8J ?d ˆç¤k¿'˜ @  8K ?d Èç¤håeT @  8L ?d è¤\éI @  8M ?d H褬e0 @  8N ?d ˆè¤ŒÎ @  8O ?d Èè¤Igqb @  8P  ?d 餙/ýŠ @  8Q !?d Hé¤iPó @  8R "?d ˆé¤I¥  @  8S #?d Èé¤JÿGÁ @  8T $?d ê¤×»ç @  8U %?d Hê¤'Äy @  8V &?d ˆê¤1‡ @  8W '?d Èꤗ€û @  8X (?d ë¤GÈ– @  8Y )?d H뤷·lj @  8Z *?d ˆë¤—Bn” @  8[ +?d È뤔,X @  8\ ,?d ì¤VßW @  8] -?d Hì¤})%. @  8^ .?d ˆì¤]Ü'Ð @  8_ /?d È줚Y @  8` 0?d í¤ÄÒÕø @  8a 1?d Hí¤4­/ @  8b 2?d ˆí¤X- @  8c 3?d Èí¤o³ @  8d 4?d FÏr @  8e 5?d Hî¤z95  @  8f 6?d ˆî¤ZÌ7õ @  8g 7?d Èî¤Ê}2‰ @  8h 8?d ï¤5¾a @  8i 9?d Hï¤êJD @  8j :?d ˆï¤Ê¿Fæ @  8k ;?d Èï¤Éå* @  8l <?d ð¤w;¸˜ @  8m =?d Hð¤‡DBá @  8n >?d ˆð¤§±@ @  8o ??d Èð¤’5¢ @  8p @?d ñ¤B^¹J @  8q A?d Hñ¤²!C3 @  8r B?d ˆñ¤’ÔAÍ @  8s C?d Èñ¤‘Ž @  8t D?d ò¤ Ê£À @  8u E?d Hò¤üµY¹ @  8v F?d ˆò¤Ü@[G @  8w G?d Èò¤Lñ^; @  8x H?d 󤜹ÒÓ @  8y I?d Hó¤lÆ(ª @  8z J?d ˆó¤L3*T @  8{ K?d Èó¤Oih˜ @  8| L?d ô¤V'›— @  8} M?d Hô¤¦Xaî @  8~ N?d ˆô¤†­c @  8 O?d Èô¤‚º+s @  8€ P?d õ¤Rò§› @  8 Q?d Hõ¤¢]â @  8‚ R?d ˆõ¤‚x_ @  8ƒ S?d Èõ¤"Ð @  8„ T?d ö¤f½ @  8… U?d Hö¤ìGh @  8† V?d ˆö¤ÌìE– @  8‡ W?d Èö¤\]@ê @  8ˆ X?d ÷¤ŒÌ @  8‰ Y?d H÷¤|j6{ @  8Š Z?d ˆ÷¤\Ÿ4… @  8‹ [?d È÷¤_ÅvI @  8Œ \?d ø¤k:úT @  8 ]?d Hø¤›E- @  8Ž ^?d ˆø¤»°Ó @  8 _?d Èø¤~Gb @  8 `?d ù¤®î— @  8‘ a?d Hù¤^pî @  8’ b?d ˆù¤~… @  8“ c?d Èù¤}ßTÜ @  8” d?d ú¤à›ô @  8• e?d Hú¤äd @  8– f?d ˆú¤0 š @  8— g?d Èú¤   æ @  8˜ h?d û¤pè… @  8™ i?d Hû¤€—w @  8š j?d ˆû¤ b}‰ @  8› k?d Èû¤£8?E @  8œ l?d ü¤ºvÌJ @  8 m?d Hü¤J 63 @  8ž n?d ˆü¤jü4Í @  8Ÿ o?d Èü¤#ºJ  @  8  p?d ý¤óòÆå @  8¡ q?d Hý¤<œ @  8¢ r?d ˆý¤#x>b @  8£ s?d Èý¤ "|® @  8¤ t?d þ¤½fÜo @  8¥ u?d Hþ¤M& @  8¦ v?d ˆþ¤mì$è @  8§ w?d Èþ¤ý]!” @  8¨ x?d ÿ¤-­| @  8© y?d Hÿ¤ÝjW @  8ª z?d ˆÿ¤ýŸUû @  8« uÐ¥{?d Èÿ¤ÇËâ @  8¬|?d ¥ˆ¶ã @  8­}?d `¥xÉj @  8®~?d  ¥X<” @  8¯?d à¥p]:» @  8°€?d ¥ ¶S @  8±?d `¥PjL* @  8²‚?d  ¥pŸNÔ @  8³ƒ?d à¥sÅ  @  8´„?d ¥î¬Ù @  8µ…?d `¥þV  @  8¶†?d  ¥> T^ @  8·‡?d ८ºQ" @  8¸ˆ?d ¥~òÝÊ @  8¹‰?d `¥Ž'³ @  8ºŠ?d  ¥®x%M @  8»‹?d ७"g @  8¼Œ?d ¥´l”Ž @  8½?d `¥Dn÷ @  8¾Ž?d  ¥dæl  @  8¿?d ृ§[ @  8À?d ¥S @  8Á‘?d `¥£bÊ @  8Â’?d  ¥ƒe`4 @  8Ó?d ी?"ø @  8Ä”?d ¥{‚9 @  8Å•?d `¥íx@ @  8Æ–?d  ¥Íñz¾ @  8Ç—?d à¥]@ @  8Ș?d ¥ó* @  8É™?d `¥}w S @  8Êš?d  ¥]‚ ­ @  8Ë›?d à¥^ØIa @  8Ìœ?d ¥j'Å| @  8Í?d `¥šX? @  8Ξ?d  ¥º­=û @  8ÏŸ?d à¥Z]W @  8Р?d ¥¯Ñ¿ @  8Ñ¡?d ` ¥_m+Æ @  8Ò¢?d   ¥˜)8 @  8Ó£?d à ¥|Âkô @  8Ô¤?d ¥á†Ë5 @  8Õ¥?d ` ¥ù1L @  8Ö¦?d   ¥1 3² @  8×§?d à ¥¡½6Î @  8ب?d ¥qõº& @  8Ù©?d ` ¥Š@_ @  8Úª?d   ¥¡B¡ @  8Û«?d à ¥¢%m @  8ܬ?d ¥»kób @  8Ý­?d ` ¥K  @  8Þ®?d   ¥ká å @  8߯?d à ¥"§u% @  8à°?d ¥òïùÍ @  8á±?d ` ¥´ @  8â²?d€   ¥V¦ì @  9³?d à ¥´½  @  9´?d ¥)ù·È @  9µ?d `¥϶\ @  9¶?d  ¥<:´¢ @  9·?d à¥[þ2q @  9 ¸?d ¥‹¶¾™ @  9 ¹?d `¥µ{š @  9 º?d  ¥•Žd @  9 »?d à¥S E @  9 ¼?d ¥íC÷ @  9 ½?d `¥Øuc @  9 ¾?d  ¥ø€ @  9 ¿?d ८4 º @  9 À?d ¥~|‡R @  9 Á?d `¥í± @  9 Â?d  ¥ÍåO @  9 Ã?d ॠö§n @  9 Ä?d ¥–²¯ @  9 Å?d `¥£„; @  9 Æ?d  ¥ƒqÅ @  9 Ç?d à¥Ýr^à @  9 È?d ¥ :Ò+ @  9 É?d `¥3÷w( @  9 Ê?d  ¥uÖ @  9 Ë?d à¥ÕÌ÷ @  9 Ì?d ¥Ì_?ø @  9 Í?d `¥ùi>l @  9 Î?d  ¥Ùœ<’ @  9 Ï?d à¥âÏx @  9 Ð?d ¥2‡ˆ @  9 Ñ?d `¥°í4à @  9 Ò?d  ¥6= @  9! Ó?d à¥V  @  9" Ô?d ¥ËO/Ý @  9# Õ?d `¥þy.I @  9$ Ö?d  ¥ÞŒ,· @  9% ×?d ीv± @  9& Ø?d ¥PÇúY @  9' Ù?d `¥n _Z @  9( Ú?d  ¥Nÿ]¤ @  9) Û?d ैìä… @  9* Ü?d ¥¼h˜ @  9+ Ý?d `¥‰%i  @  9, Þ?d  ¥©Ðkò @  9- ß?d à¥4jÄ @  9. à?d ¥ß|æ, @  9/ á?d `¥L}Ï @  90 â?d  ¥lå1 @  91 ã?d ४öÆ @  92 ä?d ¥7²fÑ @  93 å?d `¥„gE @  94 æ?d  ¥"qe» @  95 ç?d à¥|r?½ @  96 è?d ¥¬:³U @  97 é?d `¥’÷V @  98 ê?d  ¥²¨ @  99 ë?d à¥t­‰ @  9: ì?d ¥m_^† @  9; í?d `¥Xi_ @  9< î?d  ¥xœ]ì @  9= ï?d à¥CÏe @  9> ð?d ¥“‡éî @  9? ñ?d `¥¿êS/ @  9@ ò?d  ¥ŸQÑ @  9A ó?d à¥Y èð @  9B ô?d ¥ÄHH1 @  9C õ?d `¥ñ~I¥ @  9D ö?d  ¥Ñ‹K[ @  9E ÷?d ै] @  9F ø?d ¥_Àµ @  9G ù?d `¥a 8¶ @  9H ú?d  ¥Aø:HuÐ ¥ @  9I û?d ॾ,_¼ @  9Jü?d 8 ¥Ï'Ú @  9Ký?d x ¥ú€N @  9Lþ?d ¸ ¥Úä‚° @  9Mÿ?d ø ¥\Ó¢, @  9N?d 8!¥Œ›.Ä @  9O?d x!¥÷µ' @  9P?d ¸!¥?·Ù @  9Q?d ø!¥ùø @  9R?d 8"¥dU®9 @  9S?d x"¥Qc¯­ @  9T?d ¸"¥q–­S @  9U?d ø"¥/•÷U @  9V?d 8#¥ÿÝ{½ @  9W ?d x#¥ÁÞ¾ @  9X ?d ¸#¥áåÜ@ @  9Y ?d ø#¥'öea @  9Z ?d 8$¥>¸–n @  9[ ?d x$¥ Ž—ú @  9\?d ¸$¥+{• @  9]?d ø$¥(­î @  9^?d 8%¥À`! @  9_?d x%¥B U @  9`?d ¸%¥bÿŸ« @  9a?d ø%¥¤ì&Š @  9b?d 8&¥9¨†K @  9c?d x&¥ ž‡ß @  9d?d ¸&¥,k…! @  9e?d ø&¥rhß' @  9f?d 8'¥¢ SÏ @  9g?d x'¥œíöÌ @  9h?d ¸'¥¼ô2 @  9i?d ø'¥z M @  9j?d 8(¥NôÁ @  9k?d x(¥{ÂÀš @  9l?d ¸(¥[7Âd @  9m?d ø(¥ýÓÃR @  9n ?d 8)¥-›Oº @  9o!?d x)¥¾÷ÔY @  9p"?d ¸)¥žÖ§ @  9q#?d ø)¥Xo† @  9r$?d 8*¥ÅUÏG @  9s%?d x*¥ðcÎÓ @  9t&?d ¸*¥ЖÌ- @  9u'?d ø*¥Ž•–+ @  9v(?d 8+¥^Ýà @  9w)?d x+¥`¿À @  9x*?d ¸+¥@å½> @  9y+?d ø+¥†ö @  9z,?d 8,¥Ÿ¸÷ @  9{-?d x,¥ªŽö„ @  9|.?d ¸,¥Š{ôz @  9}/?d ø,¥±(Ì @  9~0?d 8-¥a`@x @  91?d x-¥®[ʈ @  9€2?d ¸-¥Ž®Èv @  93?d ø-¥H½qW @  9‚4?d 8.¥ÕùÑ– @  9ƒ5?d x.¥àÏÐ @  9„6?d ¸.¥À:Òü @  9…7?d ø.¥ž9ˆú @  9†8?d 8/¥Nq @  9‡9?d x/¥p¼¡ @  9ˆ:?d ¸/¥PI£ï @  9‰;?d ø/¥–ZÎ @  9Š<?d 80¥(„¦| @  9‹=?d x0¥²§è @  9Œ>?d ¸0¥=G¥ @  9??d ø0¥kó±1 @  9Ž@?d 81¥»»=Ù @  9A?d x1¥(צ: @  9B?d ¸1¥"¤Ä @  9‘C?d ø1¥Î1å @  9’D?d 82¥Su½$ @  9“E?d x2¥fC¼° @  9”F?d ¸2¥F¶¾N @  9•G?d ø2¥µäH @  9–H?d 83¥Èýh  @  9—I?d x3¥ö0Í£ @  9˜J?d ¸3¥ÖÅÏ] @  9™K?d ø3¥Öv| @  9šL?d 84¥ ˜…s @  9›M?d x4¥<®„ç @  9œN?d ¸4¥[† @  9O?d ø4¥'¾ó @  9žP?d 85¥÷@2 @  9ŸQ?d x5¥u*ŽH @  9 R?d ¸5¥Uߌ¶ @  9¡S?d ø5¥“Ì5— @  9¢T?d 86¥ˆ•V @  9£U?d x6¥;¾” @  9¤V?d ¸6¥K–< @  9¥W?d ø6¥EHÌ: @  9¦X?d 87¥•@Ò @  9§Y?d x7¥«ÍåÑ @  9¨Z?d ¸7¥‹8ç/ @  9©[?d ø7¥M+^ @  9ª\?d 88¥yÔÒ @  9«]?d x8¥LâÓ‡ @  9¬^?d ¸8¥lÑy @  9­_?d ø8¥ÊóÐO @  9®`?d 89¥»\§ @  9¯a?d x9¥‰×ÇD @  9°b?d ¸9¥©"ź @  9±c?d ø9¥o1|› @  9²d?d 8:¥òuÜZ @  9³e?d x:¥ÇCÝÎ @  9´f?d ¸:¥ç¶ß0 @  9µg?d ø:¥¹µ…6 @  9¶h?d 8;¥iý Þ @  9·i?d x;¥W0¬Ý @  9¸j?d ¸;¥wÅ®# @  9¹k?d ø;¥±Ö @  9ºl?d 8<¥¨˜ä  @  9»m?d x<¥®å™ @  9¼n?d ¸<¥½[çg @  9½o?d ø<¥†ß @  9¾p?d 8=¥V@Se @  9¿q?d x=¥z-é¤ @  9Àr?d ¸=¥ZØëZ @  9Ás?d ø=¥œËR{ @  9Ât?d 8>¥òº @  9Ãu?d x>¥4¹ó. @  9Äv?d ¸>¥LñÐ @  9Åw?d ø>¥JO«Ö @  9Æx?d 8?¥š'> @  9Çy?d x?¥¤Ê‚= @  9Èz?duÐ@¥7 ¸?¥„?€Ã @  9É{?d ø?¥?¬Jž @  9Ê€|?d P@¥üð¢ @  9Ë€}?d @¥kRä @  9Ì€~?d Ð@¥éÃóÈ @  9Í€?d A¥ðh(K @  9΀€?d PA¥rù?• @  9Ï€?d A¥Cñ±V @  9Ѐ‚?d ÐA¥Á`¦ˆ @  9Ñ€ƒ?d B¥¦¨¶ @  9Ò€„?d PB¥š7¿h @  9Ó€…?d B¥ e«Ü @  9Ô€†?d ÐB¥ô¼ @  9Õ€‡?d C¥ƒ.}2 @  9Ö€ˆ?d PC¥¿jì @  9×€‰?d C¥ÚÏ @  9Ø€Š?d ÐC¥‡Í @  9Ù€‹?d D¥BKá @  9Ú€Œ?d PD¥ÀÚ‡? @  9Û€?d D¥Wˆ“‹ @  9Ü€Ž?d ÐD¥Õ„U @  9Ý€?d E¥¼“'‰ @  9Þ€?d PE¥>0W @  9߀‘?d E¥ ™$ @  9à€’?d ÐE¥œŽú @  9ဓ?d F¥E[€Ä @  9—?d€ PF¥` @  :€•?d F¥pž<‡ @  :€–?d ÐF¥ò+Y @  :€—?d G¥;œ„ @  :€˜?d PG¥¹ Z @  :€™?d G¥ëé @  :€š?d ÐG¥i‡þÝ @  :€›?d H¥×HƒE @  :€œ?d PH¥UÙ”› @  : €?d H¥Â{ @  : €ž?d ÐH¥…Sl @  : €Ÿ?d I¥´' ñ @  : € ?d PI¥6¶/ @  : €¡?d I¥d­õv @  :€¢?d ÐI¥æ<⨠@  :€£?d J¥\é  @  :€¤?d PJ¥ÞxšÒ @  :€¥?d J¥Œcu‹ @  :€¦?d ÐJ¥òbU @  :€§?d K¥ÇaXˆ @  :€¨?d PK¥EðOV @  :€©?d K¥ë  @  :€ª?d ÐK¥•z·Ñ @  :€«?d L¥µ[ @  :€¬?d PL¥„•¢… @  :€­?d L¥ÖŽMÜ @  :€®?d ÐL¥TZ @  :€¯?d M¥øÜ3 @  :€°?d PM¥zMí @  :€±?d M¥(Vú´ @  :€²?d ÐM¥ªÇíj @  :€³?d N¥¥~ @  : €´?d PN¥ƒ…²  @  :!€µ?d N¥Ñž]ù @  :"€¶?d ÐN¥SJ' @  :#€·?d O¥šœpú @  :$€¸?d PO¥ g$ @  :%€¹?d O¥Jˆ} @  :&€º?d ÐO¥ȇŸ£ @  :'€»?d P¥üiÒ” @  :(€¼?d PP¥~øÅJ @  :)€½?d P¥,ã* @  :*€¾?d ÐP¥®r=Í @  :+€¿?d Q¥oVI1 @  :,€À?d PQ¥íÇ^ï @  :-€Á?d Q¥¿Ü±¶ @  :.€Â?d ÐQ¥=M¦h @  :/€Ã?d R¥‡˜ÉÌ @  :0€Ä?d PR¥ Þ @  :1€Å?d R¥W1K @  :2€Æ?d ÐR¥Õƒ&• @  :3€Ç?d S¥H @  :4€È?d PS¥ž – @  :5€É?d S¥ÌšäÏ @  :6€Ê?d ÐS¥N ó @  :7€Ë?d T¥Ýuñ› @  :8€Ì?d PT¥_äæE @  :9€Í?d T¥ ÿ  @  ::€Î?d ÐT¥n @  :;€Ï?d U¥#­Fó @  :<€Ð?d PU¥¡€Ò?d ÐU¥q¶©ª @  :?€Ó?d V¥tbç, @  :@€Ô?d PV¥öóðò @  :A€Õ?d V¥¤è« @  :B€Ö?d ÐV¥&yu @  :C€×?d W¥ïê2¨ @  :D€Ø?d PW¥m{%v @  :E€Ù?d W¥?`Ê/ @  :F€Ú?d ÐW¥½ñÝñ @  :G€Û?d X¥> i @  :H€Ü?d PX¥¯·· @  :I€Ý?d X¥Ó´Xî @  :J€Þ?d ÐX¥Q%O0 @  :K€ß?d Y¥`Q.Ý @  :L€à?d PY¥âÀ9 @  :M€á?d Y¥°ÛÖZ @  :N€â?d ÐY¥2JÁ„ @  :O€ã?d Z¥ˆŸ®  @  :P€ä?d PZ¥ ¹þ @  :Q€å?d Z¥XV§ @  :R€æ?d ÐZ¥Ú„Ay @  :S€ç?d [¥{¤ @  :T€è?d P[¥‘†lz @  :U€é?d [¥Ã# @  :V€ê?d Ð[¥A ”ý @  :W€ë?d \¥Òr–w @  :X€ì?d P\¥Pã© @  :Y€í?d \¥ønð @  :Z€î?d Ð\¥€iy. @  :[€ï?d ]¥,ª! @  :\€ð?d P]¥®;6Á @  :]€ñ?d ]¥ü Ù˜ @  :^€ò?d Ð]¥~±ÎF @  :_€ó?d ^¥Õb†R @  :`€ô?d P^¥Wó‘Œ @  :a€õ?d ^¥è~Õ @  :b€ö?d Ð^¥‡yi  @  :c€÷?d _¥NêSÖ @  :d€ø?d P_¥Ì{D @  :e€ù?d _¥ž`«Q @  :uÐ`¥f€ú?d Ð_¥aqÏó @  :gû?d (`¥U¹‹î @  :hü?d h`¥×(œ0 @  :iý?d ¨`¥…3si @  :jþ?d è`¥¢d· @  :kÿ?d (a¥¤'Õ @  :l?d ha¥&¶  @  :m?d ¨a¥t­éR @  :n?d èa¥ö<þŒ @  :o?d (b¥Lé‘( @  :p?d hb¥Îx†ö @  :q?d ¨b¥œci¯ @  :r?d èb¥ò~q @  :s?d (c¥×aD¬ @  :t?d hc¥UðSr @  :u ?d ¨c¥ë¼+ @  :v ?d èc¥…z«õ @  :w ?d (d¥© @  :x ?d hd¥”•¾¡ @  :y ?d ¨d¥ÆŽQø @  :z?d èd¥DF& @  :{?d (e¥èÜ @  :|?d he¥jM É @  :}?d ¨e¥8Væ @  :~?d èe¥ºÇñN @  :?d (f¥\Eù @  :€?d hf¥ÞÔ˜' @  :?d ¨f¥ŒÏw~ @  :‚?d èf¥^`  @  :ƒ?d (g¥ÇÍZ} @  :„?d hg¥E\M£ @  :…?d ¨g¥G¢ú @  :†?d èg¥•Öµ$ @  :‡?d (h¥+ȼ @  :ˆ?d hh¥©ˆßb @  :‰?d ¨h¥û“0; @  :Š?d èh¥y'å @  :‹?d (i¥HvF @  :Œ ?d hi¥ÊçQÖ @  :!?d ¨i¥˜ü¾ @  :Ž"?d èi¥m©Q @  :#?d (j¥ ¸Æõ @  :$?d hj¥")Ñ+ @  :‘%?d ¨j¥p2>r @  :’&?d èj¥ò£)¬ @  :“'?d (k¥;0q @  :”(?d hk¥¹¡¯ @  :•)?d ¨k¥ëºëö @  :–*?d èk¥i+ü( @  :—+?d (l¥úUþ¢ @  :˜,?d hl¥xÄé| @  :™-?d ¨l¥*ß% @  :š.?d èl¥¨Nû @  :›/?d (m¥IÊ @  :œ0?d hm¥†^ @  :1?d ¨m¥Ô±M @  :ž2?d èm¥V–¦“ @  :Ÿ3?d (n¥ýEî‡ @  : 4?d hn¥ÔùY @  :¡5?d ¨n¥-Ï @  :¢6?d èn¥¯^Þ @  :£7?d (o¥fÍ; @  :¤8?d ho¥ä\,Ý @  :¥9?d ¨o¥¶GÄ @  :¦:?d èo¥4ÖÔZ @  :§;?d (p¥8™m @  :¨<?d hp¥‚©Ž³ @  :©=?d ¨p¥вaê @  :ª>?d èp¥R#v4 @  :«??d (q¥“È @  :¬@?d hq¥– @  :­A?d ¨q¥CúO @  :®B?d èq¥Áí‘ @  :¯C?d (r¥{É‚5 @  :°D?d hr¥ùX•ë @  :±E?d ¨r¥«Cz² @  :²F?d èr¥)Òml @  :³G?d (s¥àAW± @  :´H?d hs¥bÐ@o @  :µI?d ¨s¥0˯6 @  :¶J?d ès¥²Z¸è @  :·K?d (t¥!$ºb @  :¸L?d ht¥£µ­¼ @  :¹M?d ¨t¥ñ®Bå @  :ºN?d èt¥s?U; @  :»O?d (u¥ßü  @  :¼P?d hu¥]mÔ @  :½Q?d ¨u¥võ @  :¾R?d èu¥çâS @  :¿S?d (v¥ˆ3¬Õ @  :ÀT?d hv¥ ¢»  @  :ÁU?d ¨v¥X¹TR @  :ÂV?d èv¥Ú(CŒ @  :ÃW?d (w¥»yQ @  :ÄX?d hw¥‘*n @  :ÅY?d ¨w¥Ã1Ö @  :ÆZ?d èw¥A – @  :Ç[?d (x¥ÿoë @  :È\?d hx¥}þüN @  :É]?d ¨x¥/å @  :Ê^?d èx¥­tÉ @  :Ë_?d (y¥œe$ @  :Ì`?d hy¥‘rú @  :Ía?d ¨y¥LŠ£ @  :Îb?d èy¥ÎŠ} @  :Ïc?d (z¥tÎåÙ @  :Ðd?d hz¥ö_ò @  :Ñe?d ¨z¥¤D^ @  :Òf?d èz¥&Õ € @  :Óg?d ({¥ïF0] @  :Ôh?d h{¥m×'ƒ @  :Õi?d ¨{¥?ÌÈÚ @  :Öj?d è{¥½]ß @  :×k?d (|¥.#ÝŽ @  :Øl?d h|¥¬²ÊP @  :Ùm?d ¨|¥þ©%  @  :Ún?d è|¥|82× @  :Ûo?d (}¥Ðûjæ @  :Üp?d h}¥Rj}8 @  :Ýq?d ¨}¥q’a @  :Þr?d è}¥‚à…¿ @  :ßs?d (~¥)3Í« @  :àt?d h~¥«¢Úu @  :áu?d ¨~¥ù¹5, @  :âv?d€ è~¥ë>T @  ;w?d (¥'9L  @  ;x?d h¥¥¨[~ @  ;y?d ¨¥uЀ¥'2úOÊ @  ;z?d 襰kX @  ;{?d @€¥šWŸ @  ;|?d €€¥º¢a @  ;}?d À€¥„o³b @  ;~?d ¥T'?Š @  ; ?d @¥U? @  ; €?d €¥? }Á @  ; ?d À¥ –|U @  ; ‚?d ‚¥—ÒÜ” @  ; ƒ?d @‚¥QÁeµ @  ;„?d €‚¥q4gK @  ;…?d À‚¥âXü¨ @  ;†?d ƒ¥2p@ @  ;‡?d @ƒ¥l*F @  ;ˆ?d €ƒ¥Læ(¸ @  ;‰?d Àƒ¥yÐ), @  ;Š?d „¥`žÚ# @  ;‹?d @„¥¦c @  ;Œ?d €„¥†xaü @  ;?d À„¥¸µÄÿ @  ;Ž?d …¥hýH @  ;?d @…¥S®pý @  ;?d €…¥s[r @  ;‘?d À…¥Fms— @  ;’?d †¥Û)ÓV @  ;“?d @†¥:jw @  ;”?d €†¥=Ïh‰ @  ;•?d À†¥¿¥ÔÚ @  ; –?d ‡¥oíX2 @  ;!—?d @‡¥1î4 @  ;"˜?d €‡¥Ê @  ;#™?d À‡¥$-^ @  ;$š?d ˆ¥ÒC @  ;%›?d @ˆ¥ÖÁ4b @  ;&œ?d €ˆ¥ö46œ @  ;'?d Àˆ¥Èù“Ÿ @  ;(ž?d ‰¥±w @  ;)Ÿ?d @‰¥¾UA @  ;* ?d €‰¥ž ¿ @  ;+¡?d À‰¥«–+ @  ;,¢?d Š¥6Ò½ê @  ;-£?d @Š¥ðÁË @  ;.¤?d €Š¥Ð45 @  ;/¥?d ÀŠ¥CXÖ @  ;0¦?d ‹¥“> @  ;1§?d @‹¥ÍK8 @  ;2¨?d €‹¥íæIÆ @  ;3©?d À‹¥ØÐHR @  ;4ª?d Œ¥Áž»] @  ;5«?d @Œ¥| @  ;6¬?d €Œ¥'x‚ @  ;7­?d ÀŒ¥µ¥ @  ;8®?d ¥Éý)i @  ;9¯?d @¥ò®ƒ @  ;:°?d €¥Ò[} @  ;;±?d À¥çmé @  ;<²?d Ž¥z)²( @  ;=³?d @Ž¥¼:  @  ;>´?d €Ž¥œÏ ÷ @  ;?µ?d ÀŽ¥°¢³6 @  ;@¶?d ¥`ê?Þ @  ;A·?d @¥>éeØ @  ;B¸?d €¥g& @  ;C¹?d À¥+*f² @  ;Dº?d ¥•ôÚ @  ;E»?d @¥Sçc! @  ;F¼?d €¥saß @  ;G½?d À¥MßÄÜ @  ;H¾?d ‘¥—H4 @  ;I¿?d @‘¥Ë#\ @  ;JÀ?d €‘¥ëÖ^í @  ;KÁ?d À‘¥Þà_y @  ;LÂ?d ’¥C¤ÿ¸ @  ;MÃ?d @’¥…·F™ @  ;NÄ?d €’¥¥BDg @  ;OÅ?d À’¥6.ß„ @  ;PÆ?d “¥æfSl @  ;QÇ?d @“¥¸e j @  ;RÈ?d €“¥˜ ” @  ;SÉ?d À“¥­¦  @  ;TÊ?d ”¥´èù @  ;UË?d @”¥rû@. @  ;VÌ?d €”¥RBÐ @  ;WÍ?d À”¥lÃçÓ @  ;XÎ?d •¥¼‹k; @  ;YÏ?d @•¥‡ØSÑ @  ;ZÐ?d €•¥§-Q/ @  ;[Ñ?d À•¥’P» @  ;\Ò?d –¥_ðz @  ;]Ó?d @–¥ÉLI[ @  ;^Ô?d €–¥é¹K¥ @  ;_Õ?d À–¥kÓ÷ö @  ;`Ö?d —¥»›{ @  ;a×?d @—¥å˜! @  ;bØ?d €—¥Åm#æ @  ;cÙ?d À—¥ð["r @  ;dÚ?d ˜¥Ĥ®o @  ;eÛ?d @˜¥·N @  ;fÜ?d €˜¥"B° @  ;gÝ?d À˜¥°³ @  ;hÞ?d ™¥ÌÇ<[ @  ;iß?d @™¥j#=m @  ;jà?d €™¥JÖ?“ @  ;ká?d À™¥à> @  ;lâ?d š¥⤞Æ @  ;mã?d @š¥$·'ç @  ;nä?d €š¥B% @  ;oå?d Àš¥—.¾ú @  ;pæ?d ›¥Gf2 @  ;qç?d @›¥eh @  ;rè?d €›¥9jê @  ;sé?d À›¥ ¦k~ @  ;tê?d œ¥è˜q @  ;uë?d @œ¥Óû!P @  ;vì?d €œ¥ó#® @  ;wí?d Àœ¥ÍÆ­ @  ;xî?d ¥‹ E @  ;yï?d @¥&Ø2¯ @  ;zð?d €¥-0Q @  ;{ñ?d À¥31Å @  ;|ò?d ž¥®_‘ @  ;}ó?d @ž¥hL(% @  ;~ô?d €ž¥H¹*Û @  ;õ?d Àž¥‡‚ + @  ;€ö?d Ÿ¥WÊ,à @  ;÷?d @Ÿ¥ ÉvÅ @  ;‚ø?d €Ÿ¥)帔 @  ;Å;?d X°¥øöµ @  ;Æ<?d ˜°¥ØK @  ;Ç=?d ذ¥æÎ¦H @  ;È>?d ±¥6†*  @  ;É??d X±¥`2>‡ @  ;Ê@?d ˜±¥@Ç > @  <n?d ½¥Úv,Ö @  <o?d X½¥/—KF @  <p?d ˜½¥bI¸ @  <q?d ؽ¥ÿ³Á @  <r?d ¾¥bY @  <s?d X¾¥aQÌ @  <t?d ˜¾¥AöS2 @  <u?d ؾ¥±‰©K @  <v?d ¿¥aÁ%£ @  <w?d X¿¥M×9 @  < x?d ˜¿¥m";q @uÐÀ¥  <!y?d Ø¿¥]Á @  <"z?d 0À¥ù­Z @  <#{?d pÀ¥ú÷Ò– @  <$|?d °À¥ÚÐh @  <%}?d ðÀ¥*}* @  <&~?d 0Á¥ú5¦ù @  <'?d pÁ¥õ¹6 @  <(€?d °Á¥_»È @  <)?d ðÁ¥¯A± @  <*‚?d 0Â¥2;áp @  <+ƒ?d pÂ¥1a£¼ @  <,„?d °Â¥”¡B @  <-…?d ðÂ¥áë[; @  <.†?d 0Ã¥1£×Ó @  </‡?d pÃ¥ ³ìO @  <0ˆ?d °Ã¥,Fî± @  <1‰?d ðÃ¥Ü9È @  <2Š?d 0Ä¥ÅwçÇ @  <3‹?d pÄ¥Æ-¥  @  <4Œ?d °Ä¥æØ§õ @  <5?d ðÄ¥§]Œ @  <6Ž?d 0Å¥ÆïÑd @  <7?d pÅ¥3¶ô @  <8?d °Å¥û´  @  <9‘?d ðÅ¥ã„Ns @  <:’?d 0Æ¥~Àî² @  <;“?d pÆ¥}š¬~ @  <<”?d °Æ¥]o®€ @  <=•?d ðÆ¥­Tù @  <>–?d 0Ç¥}XØ @  <?—?d pÇ¥ÿI¯ @  <@˜?d °Ç¥ß¼ÀQ @  <A™?d ðÇ¥/Ã:( @  <Bš?d 0È¥<¶5 @  <C›?d pÈ¥fôù @  <Dœ?d °È¥8“ö @  <E?d ðÈ¥Èì ~ @  <Fž?d 0É¥¤€– @  <GŸ?d pÉ¥pòÞÚ @  <H ?d °É¥PÜ$ @  <I¡?d ðÉ¥ x&] @  <J¢?d 0Ê¥=<†œ @  <K£?d pÊ¥>fÄP @  <L¤?d °Ê¥“Æ® @  <M¥?d ðÊ¥îì<× @  <N¦?d 0Ë¥>¤°? @  <O§?d pË¥´‹£ @  <P¨?d °Ë¥#A‰] @  <Q©?d ðË¥Ó>s$ @  <Rª?d 0Ì¥Êp€+ @  <S«?d pÌ¥É*Âç @  <T¬?d °Ì¥éßÀ @  <U­?d ðÌ¥ :` @  <V®?d 0Í¥É趈 @  <W¯?d pÍ¥< Ñ @  <X°?d °Í¥üÓæ @  <Y±?d ðÍ¥ìƒ)Ÿ @  <Z²?d 0Î¥qlj^ @  <[³?d pÎ¥rË’ @  <\´?d °Î¥RhÉl @  <]µ?d ðÎ¥¢3 @  <^¶?d 0Ï¥r_¿ý @  <_·?d pÏ¥^I£Ñ @  <`¸?d °Ï¥~¼¡/ @  <a¹?d ðÏ¥ŽÃ[V @  <bº?d 0Ð¥0çä @  <c»?d pÐ¥3G¥( @  <d¼?d °Ð¥²§Ö @  <e½?d ðÐ¥ãÍ]¯ @  <f¾?d 0Ñ¥3…ÑG @  <g¿?d pÑ¥«ƒš @  <hÀ?d °Ñ¥‹v˜ä @  <iÁ?d ðÑ¥{ b @  <jÂ?d 0Ò¥æMÂ\ @  <kÃ?d pÒ¥å€ @  <lÄ?d °Ò¥Åâ‚n @  <mÅ?d ðÒ¥5x @  <nÆ?d 0Ó¥åÕôÿ @  <oÇ?d pÓ¥ØÅÏc @  <pÈ?d °Ó¥ø0Í @  <qÉ?d ðÓ¥O7ä @  <rÊ?d 0Ô¥Äë @  <sË?d pÔ¥[†' @  <tÌ?d °Ô¥2®„Ù @  <uÍ?d ðÔ¥ÂÑ~  @  <vÎ?d 0Õ¥™òH @  <wÏ?d pÕ¥çx•Ø @  <xÐ?d °Õ¥Ç—& @  <yÑ?d ðÕ¥7òm_ @  <zÒ?d 0Ö¥ª¶Íž @  <{Ó?d pÖ¥©ìR @  <|Ô?d °Ö¥‰¬ @  <}Õ?d ðÖ¥yfwÕ @  <~Ö?d 0×¥©.û= @  <×?d p×¥ÈiѲ @  <€Ø?d °×¥èœÓL @  <Ù?d ð×¥ã)5 @  <‚Ú?d 0Ø¥,¥( @  <ƒÛ?d pØ¥/Fçä @  <„Ü?d °Ø¥³å @  <…Ý?d ðØ¥ÿÌc @  <†Þ?d 0Ù¥/„“‹ @  <‡ß?d pÙ¥GÒÍÇ @  <ˆà?d °Ù¥g'Ï9 @  <‰á?d ðÙ¥—X5@ @  <Šâ?d 0Ú¥ • @  <‹ã?d pÚ¥ F×M @  <Œä?d °Ú¥)³Õ³ @  <å?d ðÚ¥ÙÌ/Ê @  <Žæ?d 0Û¥ „£" @  <ç?d pÛ¥4”˜¾ @  <è?d °Û¥aš@ @  <‘é?d ðÛ¥ä`9 @  <’ê?d 0Ü¥ýP“6 @  <“ë?d pÜ¥þ Ñú @  <”ì?d °Ü¥ÞÿÓ @  <•í?d ðÜ¥.€)} @  <–î?d 0Ý¥þÈ¥• @  <—ï?d pÝ¥ ) @  <˜ð?d °Ý¥+ÜÀû @  <™ñ?d ðÝ¥Û£:‚ @  <šò?d 0Þ¥FçšC @  <›ó?d pÞ¥E½Ø @  <œô?d °Þ¥eHÚq @  <õ?d ðÞ¥•7  @  <žö?d 0ߥE¬à @  <Ÿ÷?d pߥii°Ì @  < ø?d uÐà¥/°ß¥Iœ²2 @  <¡ù?d ðߥ¹ãHK @  <¢ú?d HॠG½ @  <£û?d ˆà¥yAQ @  <¤ü?d ÈृèV @  <¥ý?d á¥!N7À @  <¦þ?d Há¥£ß  @  <§ÿ?d ˆá¥ûý @  <¨?d Èá¥yh# @  <©?d ⥖'%E @  <ª?d H⥶2› @  <«?d ˆâ¥µˆew @  <¬?d Èâ¥7r© @  <­?d 㥕¿æ @  <®?d Hã¥.8 @  <¯?d ˆã¥ˆZ*„ @  <°?d È㥠Ë=Z @  <± ?d ä¥ak#ò @  <² ?d Hä¥ãú4, @  <³ ?d ˆä¥BÄcÀ @  <´ ?d Èä¥ÀUt @  <µ ?d å¥bóQ @  <¶?d Hå¥àb @  <·?d ˆå¥·çp? @  <¸?d Èå¥5vgá @  <¹?d æ¥ÚÜ*‡ @  <º?d Hæ¥XM=Y @  <»?d ˆæ¥ùsjµ @  <¼?d Èæ¥{â}k @  <½?d ç¥ÙD$ @  <¾?d Hç¥[Õ ú @  <¿?d ˆç¥{ d @  <À?d Èç¥ù1º @  <Á?d 西 r @  <Â?d Hè¥=±eÞ @  <Ã?d ˆè¥œ22 @  <Ä?d Èè¥%ì @  <Å?d 饼¸D£ @  <Æ?d Hé¥>)S} @  <Ç?d ˆé¥ô @  <È ?d Èé¥vŠÏ @  <É!?d ꥙ B© @  <Ê"?d HꥱUw @  <Ë#?d ˆê¥º› @  <Ì$?d Èê¥8E @  <Í%?d 륚¸t  @  <Î&?d Hë¥)cÔ @  <Ï'?d ˆë¥‡]Mh @  <Ð(?d Èë¥ÌZ¶ @  <Ñ)?d ì¥nlD @  <Ò*?d Hì¥ìýSÀ @  <Ó+?d ˆì¥MÃ, @  <Ô,?d Èì¥ÏRò @  <Õ-?d í¥môr½ @  <Ö.?d Hí¥ïeec @  <×/?d ˆí¥¸àÓ @  <Ø0?d Èí¥:q  @  <Ù1?d î¥ÕÛMk @  <Ú2?d Hî¥WJZµ @  <Û3?d ˆî¥öt Y @  <Ü4?d Èî¥tå‡ @  <Ý5?d ï¥ÖC{È @  <Þ6?d Hï¥TÒl @  <ß7?d ˆï¥Ú e @  <à8?d Èï¥X1rÄ @  <á9?d ð¥”#Ñ @  <â:?d€ Hð¥bS(© @  =;?d ˆð¥",7l @  =<?d È𥠽 ² @  ==?d ñ¥ÇRº @  =>?d Hñ¥EíÎ @  =??d ˆñ¥±¬É @  =@?d Èñ¥3‚» @  =A?d ò¥š©  @  =B?d Hò¥ ¾Õ @  = C?d ˆò¥ô|Ô @  = D?d Èò¥ví  @  = E?d 󥟨 @  = F?d H󥓓ˆv @  = G?d ˆó¥oôÇP @  =H?d Èó¥íeÐŽ @  =I?d ô¥åÖ¯¼ @  =J?d Hô¥gG¸b @  =K?d ˆô¥0c @  =L?d Èô¥¡½ @  =M?d õ¥æN™ @  =N?d Hõ¥dߎÁ @  =O?d ˆõ¥ýè£  @  =P?d Èõ¥y´Õ @  =Q?d ö¥^a¦É @  =R?d Hö¥Üð± @  =S?d ˆö¥¸‡ @  =T?d Èö¥: È @  =U?d ÷¥]ùj @  =V?d H÷¥ßh‡´ @  =W?d ˆ÷¥#È’ @  =X?d È÷¥¡žßL @  =Y?d ø¥•šøÜ @  = Z?d Hø¥ ï @  =![?d ˆø¥s|C @  ="\?d Èø¥ñíTÝ @  =#]?d ù¥–Î @  =$^?d Hù¥“Ù¡ @  =%_?d ˆù¥Í· @  =&`?d Èù¥’‚Úi @  ='a?d ú¥³šÈu @  =(b?d Hú¥1 ß« @  =)c?d ˆú¥U|sª @  =*d?d Èú¥×ídt @  =+e?d û¥°þÖ @  =,f?d Hû¥2“é @  =-g?d ˆû¥Îô¦. @  =.h?d Èû¥Le±ð @  =/i?d ü¥DÖΠ@  =0j?d Hü¥ÆGÙ @  =1k?d ˆü¥¢0u @  =2l?d Èü¥ ¡bà @  =3m?d ý¥GNøa @  =4n?d Hý¥Åßï¿ @  =5o?d ˆý¥\èÂu @  =6p?d Èý¥ÞyÕ« @  =7q?d þ¥ÿaÇ· @  =8r?d Hþ¥}ðÐi @  =9s?d ˆþ¥‡|h @  =:t?d Èþ¥›k¶ @  =;u?d ÿ¥üùñ @  =<v?d Hÿ¥~hæÊ @  ==w?d ˆÿ¥‚©ì @  =>uЦx?d Èÿ¥}ÍN @  =?€y?d ¦×(F @  =@€z?d `¦U‚?˜ @  =A€{?d  ¦1õ“™ @  =B€|?d ঳d„G @  =C€}?d ¦Ô‹å @  =D€~?d `¦V ; @  =E€?d  ¦¿ \® @  =F€€?d à¦=Kp @  =G€?d ¦…Yl @  =H€‚?d `¦žN² @  =I€ƒ?d  ¦úcâ³ @  =J€„?d à¦xòõm @  =K€…?d ¦oÏ @  =L€†?d `¦Œx @  =M€‡?d  ¦aë77 @  =N€ˆ?d à¦ãz é @  =O€‰?d ¦ëÉ_Û @  =P€Š?d `¦iXH @  =Q€‹?d  ¦ /ä @  =R€Œ?d াóÚ @  =S€?d ¦èQix @  =T€Ž?d `¦jÀ~¦ @  =U€?d  ¦ó÷Sl @  =V€?d à¦qfD² @  =W€‘?d ¦P~V® @  =X€’?d `¦ÒïAp @  =Y€“?d  ¦¶˜íq @  =Z€”?d à¦4 ú¯ @  =[€•?d ¦Sæ`  @  =\€–?d `¦ÑwwÓ @  =]€—?d  ¦-8õ @  =^€˜?d য/+ @  =_€™?d ¦›…» @  =`€š?d `¦e @  =a€›?d  ¦}c³d @  =b€œ?d à¦ÿò¤º @  =c€?d ¦˜> @  =d€ž?d ` ¦Œ)Æ @  =e€Ÿ?d   ¦ =Ð @  =f€ ?d à ¦œ* @  =g€¡?d ¦½…8 @  =h€¢?d ` ¦?/Ì @  =i€£?d   ¦[cƒÍ @  =j€¤?d à ¦Ùò” @  =k€¥?d ¦¾± @  =l€¦?d ` ¦<Œo @  =m€§?d   ¦ÀëVI @  =n€¨?d à ¦BzA— @  =o€©?d ¦JÉ>¥ @  =p€ª?d ` ¦ÈX){ @  =q€«?d   ¦¬/…z @  =r€¬?d à ¦.¾’¤ @  =s€­?d ¦IQ @  =t€®?d ` ¦ËÀØ @  =u€¯?d   ¦R÷2 @  =v€°?d à ¦Ðf%Ì @  =w€±?d ¦ñ~7Ð @  =x€²?d `¦sï  @  =y€³?d  ¦˜Œ @  =z€´?d ক ›Ñ @  ={€µ?d ¦òæs @  =|€¶?d `¦pw­ @  =}€·?d  ¦ŒY‹ @  =~€¸?d à¦NU @  =€¹?d ¦ýõoÉ @  =€€º?d `¦dx @  =€»?d  ¦Ô @  =‚€¼?d ঙ‚ÃÈ @  =ƒ€½?d ¦þmYj @  =„€¾?d `¦|üN´ @  =…€¿?d  ¦ˆ,O³ @  =†€À?d ঠ½Xm @  =‡€Á?d ¦+¥Jq @  =ˆ€Â?d `¦©4]¯ @  =‰€Ã?d  ¦ÍCñ® @  =Š€Ä?d à¦OÒæp @  =‹€Å?d ¦(=|Ò @  =Œ€Æ?d `¦ª¬k  @  =€Ç?d  ¦VË$* @  =Ž€È?d à¦ÔZ3ô @  =€É?d ¦ÜéLÆ @  =€Ê?d `¦^x[ @  =‘€Ë?d  ¦:÷ @  =’€Ì?d সžàÇ @  =“€Í?d ¦ßqze @  =”€Î?d `¦]àm» @  =•€Ï?d  ¦Ä×@q @  =–€Ð?d à¦FFW¯ @  =—€Ñ?d ¦g^E³ @  =˜€Ò?d `¦åÏRm @  =™€Ó?d  ¦¸þl @  =š€Ô?d à¦)é² @  =›€Õ?d ¦dÆs @  =œ€Ö?d `¦æWdÎ @  =€×?d  ¦0+è @  =ž€Ø?d ঘ¡<6 @  =Ÿ€Ù?d ¦¬¥¦ @  = €Ú?d `¦.4 x @  =¡€Û?d  ¦JC y @  =¢€Ü?d à¦ÈÒ·§ @  =£€Ý?d ¦¯=- @  =¤€Þ?d `¦-¬:Û @  =¥€ß?d  ¦),.Í @  =¦€à?d ফ½9 @  =§€á?d ¦Š¥+ @  =¨€â?d `¦4<Ñ @  =©€ã?d  ¦lCÐ @  =ª€ä?d à¦îÒ‡ @  =«€å?d ¦‰=¬ @  =¬€æ?d `¦ ¬ r @  =­€ç?d  ¦÷ËET @  =®€è?d à¦uZRŠ @  =¯€é?d ¦}é-¸ @  =°€ê?d `¦ÿx:f @  =±€ë?d  ¦›–g @  =²€ì?d ঞ¹ @  =³€í?d ¦~q @  =´€î?d `¦üà Å @  =µ€ï?d  ¦e×! @  =¶€ð?d à¦çF6Ñ @  =·€ñ?d ¦Æ^$Í @  =¸€ò?d `¦DÏ3 @  =¹€ó?d  ¦ ¸Ÿ @  =º€ô?d ঢ)ˆÌ @  =»€õ?d ¦ÅÆn @  =¼€ö?d `¦GW° @  =½€÷?d  ¦»0J–uÐ ¦ @  =¾€ø?d à¦D!.4 @  =¿ù?d 8 ¦›Ö]M @  =Àú?d x ¦GJ“ @  =Áû?d ¸ ¦}0æ’ @  =Âü?d ø ¦ÿ¡ñL @  =Ãý?d 8!¦˜Nkî @  =Äþ?d x!¦ß|0 @  =Åÿ?d ¸!¦>ŒIŒ @  =Æ?d ø!¦¼^R @  =Ç?d 8"¦LN @  =È?d x"¦”[ @  =É?d ¸"¦{ã÷‘ @  =Ê?d ø"¦ùràO @  =Ë?d 8#¦žzí @  =Ì?d x#¦ m3 @  =Í?d ¸#¦àk" @  =Î?d ø#¦bú5Ë @  =Ï ?d 8$¦jIJù @  =Ð ?d x$¦èØ]' @  =Ñ ?d ¸$¦Œ¯ñ& @  =Ò ?d ø$¦>æø @  =Ó ?d 8%¦iÑ|Z @  =Ô?d x%¦ë@k„ @  =Õ?d ¸%¦rwFN @  =Ö?d ø%¦ðæQ @  =×?d 8&¦ÑþCŒ @  =Ø?d x&¦SoTR @  =Ù?d ¸&¦7øS @  =Ú?d ø&¦µ‰ï @  =Û?d 8'¦Òfu/ @  =Ü?d x'¦P÷bñ @  =Ý?d ¸'¦¬-× @  =Þ?d ø'¦.:  @  =ß?d 8(¦™ @  =à?d x(¦˜” G @  =á?d ¸(¦üã¦F @  =â?d€ ø(¦¿5F˜ @  >?d 8)¦9›” @  >?d x)¦» ƒÍ @  >?d ¸)¦zÃl6 @  > ?d ø)¦øR{è @  >!?d 8*¦ø6Ž @  >"?d x*¦•i!P @  >#?d ¸*¦?¬Ò+ @  >$?d ø*¦½=Åõ @  > %?d 8+¦›¤º @  > &?d x+¦ ³d @  > '?d ¸+¦¤$¯ @  > (?d ø+¦&µq @  > )?d 8,¦MÙ @  >*?d x,¦Ï„ @  >+?d ¸,¦ÈàÔœ @  >,?d ø,¦JqÃB @  >-?d 8-¦è×¢  @  >.?d x-¦jFµÓ @  >/?d ¸-¦68cô @  >0?d ø-¦´©t* @  >1?d 8.¦[9L @  >2?d x.¦Ù’.’ @  >3?d ¸.¦sWÝé @  >4?d ø.¦ñÆÊ7 @  >5?d 8/¦S`«x @  >6?d x/¦Ññ¼¦ @  >7?d ¸/¦èßm @  >8?d ø/¦jN³ @  >9?d 80¦¦~N¦ @  >:?d x0¦$ïYx @  >;?d ¸0¦2³S @  > <?d ø0¦°¤ @  >!=?d 81¦ºÅ @  >">?d x1¦+Ò @  >#??d ¸1¦¡²(ö @  >$@?d ø1¦##?( @  >%A?d 82¦̉rN @  >&B?d x2¦Ne @  >'C?d ¸2¦äÝ–ë @  >(D?d ø2¦fL5 @  >)E?d 83¦Äêàz @  >*F?d x3¦F{÷¤ @  >+G?d ¸3¦UCo @  >,H?d ø3¦ýÄT± @  >-I?d 84¦–dJ @  >.J?d x4¦õ]Ç @  >/K?d ¸4¦‘\ @  >0L?d ø4¦‘‡‚ @  >1M?d 85¦3¦æÍ @  >2N?d x5¦±7ñ @  >3O?d ¸5¦íI'4 @  >4P?d ø5¦oØ0ê @  >5Q?d 86¦€r}Œ @  >6R?d x6¦ãjR @  >7S?d ¸6¦¨&™) @  >8T?d ø6¦*·Ž÷ @  >9U?d 87¦ˆï¸ @  >:V?d x7¦ €øf @  >;W?d ¸7¦3®L­ @  ><X?d ø7¦±?[s @  >=Y?d 88¦÷.:É @  >>Z?d x8¦u¿- @  >?[?d ¸8¦ÍÚÁ® @  >@\?d ø8¦OKÖp @  >A]?d 89¦íí·? @  >B^?d x9¦o| á @  >C_?d ¸9¦®µO @  >D`?d ø9¦,$XÄ @  >Ea?d 8:¦ÃŽ¢ @  >Fb?d x:¦A| @  >Gc?d ¸:¦ëÚñ @  >Hd?d ø:¦iKæÙ @  >Ie?d 8;¦Ë퇖 @  >Jf?d x;¦I|H @  >Kg?d ¸;¦pR$ƒ @  >Lh?d ø;¦òÃ3] @  >Mi?d 8<¦™c-õ @  >Nj?d x<¦ò:+ @  >Ok?d ¸<¦–÷° @  >Pl?d ø<¦žàn @  >Qm?d 8=¦<¡! @  >Rn?d x=¦¾0–ÿ @  >So?d ¸=¦âN@Ø @  >Tp?d ø=¦`ßW @  >Uq?d 8>¦u` @  >Vr?d x>¦ ä ¾ @  >Ws?d ¸>¦§!þÅ @  >Xt?d ø>¦%°é @  >Yu?d 8?¦‡ˆT @  >Zv?d x?¦‡ŸŠ @  >[w?duÐ@¦7 ¸?¦<©+A @  >\x?d ø?¦øOã @  >]€y?d P@¦rúx @  >^€z?d @¦R† @  >_€{?d Ð@¦æ å @  >`€|?d A¦6Aie @  >a€}?d PA¦Æ>“ @  >b€~?d A¦æË‘â @  >c€?d ÐA¦hð*º @  >d€€?d B¦õ´Š{ @  >e€?d PB¦Ëp @  >f€‚?d B¦%>rü @  >g€ƒ?d ÐB¦-Ÿ”§ @  >h€„?d C¦ý×O @  >i€…?d PC¦ ¨â6 @  >j€†?d C¦-]àÈ @  >k€‡?d ÐC¦¶A# @  >l€ˆ?d D¦¯Y², @  >m€‰?d PD¦_&HU @  >n€Š?d D¦ÓJ« @  >o€‹?d ÐD¦ÚÓ’ @  >p€Œ?d E¦ ›ø @  >q€?d PE¦úää @  >r€Ž?d E¦Úæ @  >s€?d ÐE¦$ %x @  >t€?d F¦¹O…¹ @  >u€‘?d PF¦I0À @  >v€’?d F¦iÅ}> @  >w€“?d ÐF¦ad›e @  >x€”?d G¦±, @  >y€•?d PG¦ASíô @  >z€–?d G¦a¦ï  @  >{€—?d ÐG¦úìNá @  >|€˜?d H¦ÎÂü @  >}€™?d PH¦>l8… @  >~€š?d H¦™:{ @  >€›?d ÐH¦çÎóÓ @  >€€œ?d I¦7†; @  >€?d PI¦Çù…B @  >‚€ž?d I¦ç ‡¼ @  >ƒ€Ÿ?d ÐI¦„¡}g @  >„€ ?d J¦åݦ @  >…€¡?d PJ¦éš'ß @  >†€¢?d J¦Éo%! @  >‡€£?d ÐJ¦ÁÎÃz @  >ˆ€¤?d K¦†O’ @  >‰€¥?d PK¦áùµë @  >Š€¦?d K¦Á · @  >‹€§?d ÐK¦ZFþ @  >Œ€¨?d L¦Cåñ @  >€©?d PL¦³wˆ @  >Ž€ª?d L¦“‚v @  >€«?d ÐL¦6‚ÅÍ @  >€¬?d M¦æÊI% @  >‘€­?d PM¦µ³\ @  >’€®?d M¦6@±¢ @  >“€¯?d ÐM¦ÈZr¥ @  >”€°?d N¦UÒd @  >•€±?d PN¦¥a( @  >–€²?d N¦…”*ã @  >—€³?d ÐN¦5̸ @  >˜€´?d O¦]}@P @  >™€µ?d PO¦­º) @  >š€¶?d O¦÷¸× @  >›€·?d ÐO¦½< @  >œ€¸?d P¦¨c¥Ž @  >€¹?d PP¦X_÷ @  >ž€º?d P¦xé]  @  >Ÿ€»?d ÐP¦Ìï¢ @  > €¼?d Q¦§.ê @  >¡€½?d PQ¦ìØÔ“ @  >¢€¾?d Q¦Ì-Öm @  >£€¿?d ÐQ¦_Ð9§ @  >¤€À?d R¦”™f @  >¥€Á?d PR¦2ëc @  >¦€Â?d R¦aá @  >§€Ã?d ÐR¦¿‡º @  >¨€Ä?d S¦Ê÷ R @  >©€Å?d PS¦:ˆñ+ @  >ª€Æ?d S¦}óÕ @  >«€Ç?d ÐS¦7R> @  >¬€È?d T¦˜y¡1 @  >­€É?d PT¦h[H @  >®€Ê?d T¦HóY¶ @  >¯€Ë?d ÐT¦íó  @  >°€Ì?d U¦=» å @  >±€Í?d PU¦ÍÄ÷œ @  >²€Î?d U¦í1õb @  >³€Ï?d ÐU¦+6e @  >´€Ð?d V¦Žo–¤ @  >µ€Ñ?d PV¦~lÝ @  >¶€Ò?d V¦^ån# @  >·€Ó?d ÐV¦VDˆx @  >¸€Ô?d W¦†  @  >¹€Õ?d PW¦vsþé @  >º€Ö?d W¦V†ü @  >»€×?d ÐW¦ÍÌ]ü @  >¼€Ø?d X¦ù3Ñá @  >½€Ù?d PX¦ L+˜ @  >¾€Ú?d X¦)¹)f @  >¿€Û?d ÐX¦3¸Ðÿ @  >À€Ü?d Y¦ãð\ @  >Á€Ý?d PY¦¦n @  >€Þ?d Y¦3z¤ @  >Àß?d ÐY¦P×^K @  >Ä€à?d Z¦Í“þŠ @  >Å€á?d PZ¦=ìó @  >Æ€â?d Z¦  @  >Ç€ã?d ÐZ¦¸àV @  >È€ä?d [¦Åðl¾ @  >É€å?d P[¦5–Ç @  >Ê€æ?d [¦z”9 @  >Ë€ç?d Ð[¦Ž05Ò @  >Ì€è?d \¦—~ÆÝ @  >Í€é?d P\¦g<¤ @  >΀ê?d \¦Gô>Z @  >Ï€ë?d Ð\¦âôæá @  >Ѐì?d ]¦2¼j  @  >Ñ€í?d P]¦ÂÃp @  >Ò€î?d ]¦â6’Ž @  >Ó€ï?d Ð]¦,Q‰ @  >Ô€ð?d ^¦hñH @  >Õ€ñ?d P^¦q 1 @  >Ö€ò?d ^¦Qâ Ï @  >×€ó?d Ð^¦YCï” @  >Ø€ô?d _¦‰ c| @  >Ù€õ?d P_¦yt™ @  >Ú€ö?d _¦Y›û @  >uÐ`¦Û€÷?d Ð_¦¿KIl @  >Üø?d (`¦³üô @  >Ýù?d h`¦ñÌ @  >Þú?d ¨`¦Ñ9s @  >ßû?d è`¦e?ûx @  >àü?d (a¦µww @  >áý?d ha¦Eé @  >âþ?d€ ¨a¦>“± @  ?ÿ?d èa¦#5Ì @  ??d (b¦œg•  @  ??d hb¦©Q”™ @  ??d ¨b¦‰¤–g @  ??d èb¦O·/F @  ??d (c¦Ÿÿ£® @  ??d hc¦¡2­ @  ??d ¨c¦ÇS @  ? ?d èc¦ßÄ^U @  ? ?d (d¦ÆŠ­Z @  ?  ?d hd¦ó¼¬Î @  ?  ?d ¨d¦ÓI®0 @  ?  ?d èd¦Z @  ? ?d (e¦Å›ù @  ? ?d he¦V~ @  ??d ¨e¦v‹ä @  ??d èe¦MØ: @  ??d (f¦МšÏ @  ??d hf¦媛[ @  ??d ¨f¦Å_™¥ @  ??d èf¦L „ @  ??d (g¦Ó¬l @  ??d hg¦íÉ o @  ??d ¨g¦Í< ‘ @  ??d èg¦“?Q— @  ??d (h¦§ÀÝŠ @  ??d hh¦’öÜ @  ??d ¨h¦²Þà @  ??d èh¦tgÁ @  ??d (i¦¤Xë) @  ??d hi¦&2Wz @  ? ?d ¨i¦ÇU„ @  ?!?d èi¦ #T² @  ?" ?d (j¦=gôs @  ?#!?d hj¦Qõç @  ?$"?d ¨j¦(¤÷ @  ?%#?d èj¦î·N8 @  ?&$?d (k¦>ÿÂÐ @  ?'%?d hk¦2gÓ @  ?(&?d ¨k¦ Çe- @  ?)'?d èk¦~Ä?+ @  ?*(?d (l¦gŠÌ$ @  ?+)?d hl¦R¼Í° @  ?,*?d ¨l¦rIÏN @  ?-+?d èl¦´Zvo @  ?.,?d (m¦dú‡ @  ?/-?d hm¦÷~ad @  ?0.?d ¨m¦׋cš @  ?1/?d èm¦ìØ[p @  ?20?d (n¦qœû± @  ?31?d hn¦Dªú% @  ?42?d ¨n¦d_øÛ @  ?53?d èn¦¢LAú @  ?64?d (o¦rÍ @  ?75?d ho¦LÉh @  ?86?d ¨o¦l<?d (q¦yºø @  ??=?d hq¦£9 @  ?@>?d ¨q¦ƒáÇ @  ?A??d èq¦ÕUà @  ?B@?d (r¦H¶! @  ?CA?d hr¦}'·µ @  ?DB?d ¨r¦]ÒµK @  ?EC?d èr¦›Á j @  ?FD?d (s¦K‰€‚ @  ?GE?d hs¦uD% @  ?HF?d ¨s¦U±' @  ?IG?d ès¦ ²}y @  ?JH?d (t¦üŽv @  ?KI?d ht¦'Êâ @  ?LJ?d ¨t¦? @  ?MK?d èt¦Á,4= @  ?NL?d (u¦d¸Õ @  ?OM?d hu¦‚#6 @  ?PN?d ¨u¦¢ý!È @  ?QO?d èu¦™®" @  ?RP?d (v¦ê¹ã @  ?SQ?d hv¦1ܸw @  ?TR?d ¨v¦)º‰ @  ?US?d èv¦×:¨ @  ?VT?d (w¦r@ @  ?WU?d hw¦9¿*C @  ?XV?d ¨w¦J(½ @  ?YW?d èw¦GIr» @  ?ZX?d (x¦s¶þ¦ @  ?[Y?d hx¦F€ÿ2 @  ?\Z?d ¨x¦fuýÌ @  ?][?d èx¦ fDí @  ?^\?d (y¦p.È @  ?_]?d hy¦òDtV @  ?`^?d ¨y¦Ò±v¨ @  ?a_?d èy¦tUwž @  ?b`?d (z¦é×_ @  ?ca?d hz¦Ü'ÖË @  ?db?d ¨z¦üÒÔ5 @  ?ec?d èz¦:Ám @  ?fd?d ({¦ê‰áü @  ?ge?d h{¦ÔDDÿ @  ?hf?d ¨{¦ô±F @  ?ig?d è{¦ª² @  ?jh?d (|¦³üï @  ?ki?d h|¦†Êîœ @  ?lj?d ¨|¦¦?ìb @  ?mk?d è|¦`,UC @  ?nl?d (}¦°dÙ« @  ?om?d h}¦#BH @  ?pn?d ¨}¦ý@¶ @  ?qo?d è}¦8®x\ @  ?rp?d (~¦¥êØ @  ?sq?d h~¦ÜÙ  @  ?tr?d ¨~¦°)Û÷ @  ?us?d è~¦v:bÖ @  ?vt?d (¦¦rî> @  ?wu?d h¦˜¿K= @  ?xv?d ¨¦uЀ¦'¸JIà @  ?yw?d 覛É`¹ @  ?z€x?d @€¦õw‚Í @  ?{€y?d €€¦b%–y @  ?|€z?d À€¦à´§ @  ?}€{?d ¦t~£° @  ?~€|?d @¦öï´n @  ?€}?d €¦›°+¾ @  ?€€~?d À¦!<` @  ?€?d ‚¦M†ËÊ @  ?‚€€?d @‚¦ÏÜ @  ?ƒ€?d €‚¦XEÈ  @  ?„€‚?d À‚¦ÚÔß~ @  ?…€ƒ?d ƒ¦Nýi @  ?†€„?d @ƒ¦Ìê· @  ?‡€…?d €ƒ¦P&Z” @  ?ˆ€†?d Àƒ¦Ò·MJ @  ?‰€‡?d „¦kó @  ?Š€ˆ?d @„¦•úäC @  ?‹€‰?d €„¦¨ð÷ @  ?Œ€Š?d À„¦€9ç) @  ?€‹?d …¦óÅ> @  ?Ž€Œ?d @…¦–bÒà @  ?€?d €…¦§j\# @  ?€Ž?d À…¦%ûKý @  ?‘€?d †¦}Ä @  ?’€?d @†¦ƒìÓÖ @  ?“€‘?d €†¦¾Çb @  ?”€’?d À†¦–/м @  ?•€“?d ‡¦åò« @  ?–€”?d @‡¦€tåu @  ?—€•?d €‡¦ÝUV @  ?˜€–?d À‡¦žLBˆ @  ?™€—?d ˆ¦v!ƒM @  ?š€˜?d @ˆ¦ô°”“ @  ?›€™?d €ˆ¦câ€' @  ?œ€š?d Àˆ¦ás—ù @  ?€›?d ‰¦u¹µî @  ?ž€œ?d @‰¦÷(¢0 @  ?Ÿ€?d €‰¦×& C @  ? €ž?d À‰¦U· @  ?¡€Ÿ?d Ц솪´ @  ?¢€ ?d @Цn½j @  ?£€¡?d €Š¦ùE©Þ @  ?¤€¢?d ÀЦ{Ô¾ @  ?¥€£?d ‹¦ïœ @  ?¦€¤?d @‹¦m‹É @  ?§€¥?d €‹¦ñ&;ê @  ?¨€¦?d À‹¦s·,4 @  ?©€§?d Œ¦¶k’ã @  ?ª€¨?d @Œ¦4ú…= @  ?«€©?d €Œ¦£¨‘‰ @  ?¬€ª?d ÀŒ¦!9†W @  ?­€«?d ¦µó¤@ @  ?®€¬?d @¦7b³ž @  ?¯€­?d €¦j=] @  ?°€®?d À¦„û*ƒ @  ?±€¯?d ަ }¥v @  ?²€°?d @ަ"첨 @  ?³€±?d €Ž¦µ¾¦ @  ?´€²?d Àަ7/±Â @  ?µ€³?d ¦£å“Õ @  ?¶€´?d @¦!t„  @  ?·€µ?d €¦½Ý4( @  ?¸€¶?d À¦?L#ö @  ?¹€·?d ¦]Òœ @  ?º€¸?d @¦ß‘ÅB @  ?»€¹?d €¦HÃÑö @  ?¼€º?d À¦ÊRÆ( @  ?½€»?d ‘¦^˜ä? @  ?¾€¼?d @‘¦Ü óá @  ?¿€½?d €‘¦R\ @  ?À€¾?d À‘¦БKÞ @  ?Á€¿?d ’¦™ðèæ @  ?€À?d @’¦aÿ8 @  ?ÀÁ?d €’¦Œ3ëŒ @  ?Ä€Â?d À’¦¢üR @  ?Å€Ã?d “¦šhÞE @  ?Æ€Ä?d @“¦ùÉ› @  ?Ç€Å?d €“¦„Py¸ @  ?È€Æ?d À“¦Ánf @  ?É€Ç?d ”¦Ãб @  ?Ê€È?d @”¦AŒÇo @  ?Ë€É?d €”¦ÖÞÓÛ @  ?Ì€Ê?d À”¦TOÄ @  ?Í€Ë?d •¦À…æ @  ?΀Ì?d @•¦BñÌ @  ?Ï€Í?d €•¦s @  ?ЀÎ?d À•¦ñhÑ @  ?Ñ€Ï?d –¦Õ ç$ @  ?Ò€Ð?d @–¦Wšðú @  ?Ó€Ñ?d €–¦ÀÈäN @  ?Ô€Ò?d À–¦BYó @  ?Õ€Ó?d —¦֓ч @  ?Ö€Ô?d @—¦TÆY @  ?×€Õ?d €—¦È«vz @  ?Ø€Ö?d À—¦J:a¤ @  ?Ù€×?d ˜¦¢W a @  ?Ú€Ø?d @˜¦ Æ·¿ @  ?Û€Ù?d €˜¦·”£  @  ?Ü€Ú?d À˜¦5´Õ @  ?Ý€Û?d ™¦¡Ï– @  ?Þ€Ü?d @™¦#^ @  ?߀Ý?d €™¦P(o @  ?à€Þ?d À™¦Á?± @  ?á€ß?d š¦8ð‰˜ @  ?â€à?d€ @š¦Ôï\s @  @€á?d €š¦¢üî @  @€â?d Àš¦ m0 @  @€ã?d ›¦qîÎÊ @  @€ä?d @›¦óÙ @  @€å?d €›¦¡d6M @  @€æ?d À›¦#õ!“ @  @€ç?d œ¦(›À> @  @€è?d @œ¦ª ×à @  @ €é?d €œ¦ø8¹ @  @ €ê?d Àœ¦z€/g @  @ €ë?d ¦+ö @  @ €ì?d @¦©’áC @  @ €í?d €¦û‰ @  @€î?d À¦yÄ @  @€ï?d ž¦>÷« @  @€ð?d @ž¦¼àu @  @€ñ?d €ž¦î, @  @€ò?d Àž¦l–ò @  @€ó?d Ÿ¦=Á @  @€ô?d @Ÿ¦¿„ÖÖ @  @€õ?d €Ÿ¦íŸ9 @  @€öuР¦?d ÀŸ¦o.Q @  @€÷?d  ¦q¥‘é @  @ø?d X ¦ó4†7 @  @ù?d ˜ ¦¡/in @  @ú?d Ø ¦#¾~° @  @û?d ¡¦r=§J @  @ü?d X¡¦𬰔 @  @ý?d ˜¡¦¢·_Í @  @þ?d Ø¡¦ &H @  @ÿ?d ¢¦Eú“  @  @ ?d X¢¦Çk„× @  @!?d ˜¢¦•pkŽ @  @"?d Ø¢¦á|P @  @#?d £¦Fb¥ª @  @$?d X£¦Äó²t @  @%?d ˜£¦–è]- @  @&?d Ø£¦yJó @  @'?d ¤¦«^ @  @(?d X¤¦†¼€ @  @) ?d ˜¤¦ÏSÙ @  @* ?d ؤ¦M D @  @+ ?d ¥¦ý @  @, ?d X¥¦žŠ# @  @- ?d ˜¥¦Ìez @  @.?d Ø¥¦N”r¤ @  @/?d ¦¦ œË @  @0?d X¦¦‹‹ @  @1?d ˜¦¦Ù‹dL @  @2?d ئ¦[s’ @  @3?d §¦ ™ªh @  @4?d X§¦ˆ½¶ @  @5?d ˜§¦ÚRï @  @6?d ا¦X‚E1 @  @7?d ¨¦~]ÛŽ @  @8?d X¨¦üÌÌP @  @9?d ˜¨¦®×#  @  @:?d ب¦,F4× @  @;?d ©¦}Åí- @  @<?d X©¦ÿTúó @  @=?d ˜©¦­Oª @  @>?d Ø©¦/Þt @  @??d ª¦Jýôå @  @@ ?d Xª¦Èlã; @  @A!?d ˜ª¦šw b @  @B"?d ت¦æ¼ @  @C#?d «¦IeÂF @  @D$?d X«¦ËôÕ˜ @  @E%?d ˜«¦™ï:Á @  @F&?d Ø«¦~- @  @G'?d ¬¦̲ @  @H(?d X¬¦’Ûl @  @I)?d ˜¬¦Àš45 @  @J*?d ج¦B #ë @  @K+?d ­¦ˆú @  @L,?d X­¦‘íÏ @  @M-?d ˜­¦Ã– @  @N.?d Ø­¦A“H @  @O/?d ®¦û' @  @P0?d X®¦„—ìù @  @Q1?d ˜®¦ÖŒ  @  @R2?d Ø®¦T~ @  @S3?d ¯¦žÍ„ @  @T4?d X¯¦‡ÚZ @  @U5?d ˜¯¦Õ5 @  @V6?d د¦W…"Ý @  @W7?d °¦û{ŒÍ @  @X8?d X°¦yê› @  @Y9?d ˜°¦+ñtJ @  @Z:?d ذ¦©`c” @  @[;?d ±¦øãºn @  @\<?d X±¦zr­° @  @]=?d ˜±¦(iBé @  @^>?d ر¦ªøU7 @  @_??d ²¦‘Œ°% @  @`@?d X²¦§û @  @aA?d ˜²¦AH¢ @  @bB?d ز¦×_| @  @cC?d ³¦’†† @  @dD?d X³¦…‘X @  @eE?d ˜³¦Bž~ @  @fF?d س¦Àiß @  @gG?d ´¦Ëaˆr @  @hH?d X´¦I🬠@  @iI?d ˜´¦ëpõ @  @jJ?d Ø´¦™zg+ @  @kK?d µ¦Èù¾Ñ @  @lL?d Xµ¦Jh© @  @mM?d ˜µ¦sFV @  @nN?d ص¦šâQˆ @  @oO?d ¶¦Ýw¿ç @  @pP?d X¶¦_æ¨9 @  @qQ?d ˜¶¦ ýG` @  @rR?d ض¦lP¾ @  @sS?d ·¦Þï‰D @  @tT?d X·¦\~žš @  @uU?d ˜·¦eqà @  @vV?d Ø·¦Œôf @  @wW?d ¸¦ª+ø¢ @  @xX?d X¸¦(ºï| @  @yY?d ˜¸¦z¡% @  @zZ?d ظ¦ø0û @  @{[?d ¹¦©³Î @  @|\?d X¹¦+"Ùß @  @}]?d ˜¹¦y96† @  @~^?d ع¦û¨!X @  @_?d º¦}Ýçø @  @€`?d Xº¦ÿLð& @  @a?d ˜º¦­W @  @‚b?d غ¦/Æ¡ @  @ƒc?d »¦~EÑ[ @  @„d?d X»¦üÔÆ… @  @…e?d ˜»¦®Ï)Ü @  @†f?d Ø»¦,^> @  @‡g?d ¼¦'0߯ @  @ˆh?d X¼¦¥¡Èq @  @‰i?d ˜¼¦÷º'( @  @Šj?d ؼ¦u+0ö @  @‹k?d ½¦$¨é  @  @Œl?d X½¦¦9þÒ @  @m?d ˜½¦ô"‹ @  @Žn?d ؽ¦v³U @  @o?d ¾¦1&è: @  @p?d X¾¦³·ÿä @  @‘q?d ˜¾¦á¬½ @  @’r?d ؾ¦c=c @  @“s?d ¿¦2¾Þ™ @  @”t?d X¿¦°/ÉG @  @•u?d ˜¿¦â4& @uÐÀ¦  @–v?d Ø¿¦`¥1À @  @—w?d 0À¦ur0 @  @˜x?d pÀ¦”äeî @  @™y?d °À¦ÆÿŠ· @  @šz?d ðÀ¦Dni @  @›{?d 0Á¦íD“ @  @œ|?d pÁ¦—|SM @  @}?d °Á¦Åg¼ @  @ž~?d ðÁ¦Gö«Ê @  @Ÿ?d 0¦aDJ @  @ €?d p¦ãÕ ” @  @¡?d °Â¦±ÎâÍ @  @¢‚?d ð¦3_õ @  @£ƒ?d 0æbÜ,é @  @¤„?d pæàM;7 @  @¥…?d °Ã¦²VÔn @  @¦†?d ðæ0Çð @  @§‡?d 0Ħ;©" @  @¨ˆ?d pĦ¹85à @  @©‰?d °Ä¦ë#Úš @  @ªŠ?d ðĦi²ÍD @  @«‹?d 0Ŧ81¾ @  @¬Œ?d pŦº ` @  @­?d °Å¦è»ì9 @  @®Ž?d ðŦj*ûç @  @¯?d 0Ʀ-¿ˆ @  @°?d pƦ¯.V @  @±‘?d °Æ¦ý5í @  @²’?d ðƦ¤úÑ @  @³“?d 0Ǧ.'#+ @  @´”?d pǦ¬¶4õ @  @µ•?d °Ç¦þ­Û¬ @  @¶–?d ðǦ|<Ìr @  @·—?d 0ȦZãRÍ @  @¸˜?d pȦØrE @  @¹™?d °È¦ŠiªJ @  @ºš?d ðȦø½” @  @»›?d 0ɦY{dn @  @¼œ?d pɦÛês° @  @½?d °É¦‰ñœé @  @¾ž?d ðɦ `‹7 @  @¿Ÿ?d 0ʦnC}¦ @  @À ?d pʦìÒjx @  @Á¡?d °Ê¦¾É…! @  @¢?d ðʦ?d ˆâ¦³´ @  A??d Èâ¦$Þ®u @  A@?d ã¦ô–" @  AA?d Hã¦2…›¼ @  AB?d ˆã¦p™B @  AC?d Èã¦'F˜Ö @  AD?d ä¦>kÙ @  AE?d Hä¦` 1ß @  AF?d ˆä¦@þ3! @  AG ?d Èä¦~3–" @  AH ?d 妮{Ê @  AI ?d Hå¦hh£ë @  AJ ?d ˆå¦H¡ @  AK ?d Èå¦}«  @  AL?d æ¦àï@ @  AM?d Hæ¦Û¼8ª @  AN?d ˆæ¦ûI:T @  AO?d Èæ¦h%¡· @  AP?d 禸m-_ @  AQ?d Hç¦~~”~ @  AR?d ˆç¦^‹–€ @  AS?d Èç¦k½— @  AT?d è¦_B  @  AU?d Hè¦AA @  AV?d ˆè¦!´Cñ @  AW?d Èè¦yæò @  AX?d é¦Ï1j @  AY?d Hé¦ "Ó; @  AZ?d ˆé¦)×ÑÅ @  A[?d Èé¦áÐQ @  A\?d ꦥp @  A]?d Hê¦'Aq¦ @  A^ ?d ˆê¦´sX @  A_!?d ÈꦅÞÏ  @  A`"?d ë¦U–Cã @  Aa#?d H릓…ú @  Ab$?d ˆë¦³pø< @  Ac%?d È릆Fù¨ @  Ad&?d 즟 § @  Ae'?d Hì¦Á P¡ @  Af(?d ˆì¦áþR_ @  Ag)?d Èì¦ß3÷\ @  Ah*?d í¦{{´ @  Ai+?d Hí¦Éh• @  Aj,?d ˆí¦éÀk @  Ak-?d Èí¦Ü«Áÿ @  Al.?d î¦Aïa> @  Am/?d Hî¦z¼YÔ @  An0?d ˆî¦ZI[* @  Ao1?d Èî¦É%ÀÉ @  Ap2?d ï¦mL! @  Aq3?d Hï¦ß~õ @  Ar4?d ˆï¦ÿ‹÷þ @  As5?d Èï¦ʽöj @  At6?d ð¦tcJØ @  Au7?d Hð¦*`Þ @  Av8?d ˆð¦ •  @  Aw9?d Èð¦4X·# @  Ax:?d ñ¦ä;Ë @  Ay;?d Hñ¦"‚ê @  Az<?d ˆñ¦ö€ @  A{=?d Èñ¦7À€ @  A|>?d ò¦ª„!A @  A}??d Hò¦ü05f @  A~@?d ˆò¦ÜÅ7˜ @  AA?d Èò¦þ½h @  A€B?d ó¦ö1€ @  AC?d H󦥈¡ @  A‚D?d ˆó¦%PŠ_ @  AƒE?d Èó¦f‹Ë @  A„F?d ô¦ (xÄ @  A…G?d Hô¦W+" @  A†H?d ˆô¦wÞ < @  A‡I?d Èô¦I…? @  AˆJ?d õ¦™[ × @  A‰K?d Hõ¦_H°ö @  AŠL?d ˆõ¦½² @  A‹M?d Èõ¦J‹³œ @  AŒN?d ö¦×Ï] @  AO?d Hö¦ìœ+· @  AŽP?d ˆö¦Ìi)I @  AQ?d Èö¦_²ª @  AR?d ÷¦M>B @  A‘S?d H÷¦I^‡c @  A’T?d ˆ÷¦i«… @  A“U?d È÷¦\„  @  A”V?d ø¦hb @  A•W?d Hø¦6aR @  A–X?d ˆø¦”Pì @  A—Y?d Èø¦(Yõï @  A˜Z?d ù¦øy @  A™[?d Hù¦>À& @  Aš\?d ˆù¦÷ÂØ @  A›]?d Èù¦+ÁÃL @  Aœ^?d ú¦¶…c @  A_?d Hú¦ab» @  Až`?d ˆú¦0”`E @  AŸa?d Èú¦²þÜ @  A b?d û¦b¶Pþ @  A¡c?d Hû¦¤¥éß @  A¢d?d ˆû¦„Pë! @  A£e?d Èû¦±fêµ @  A¤f?d ü¦¨(º @  A¥g?d Hü¦ö+C¼ @  A¦h?d ˆü¦ÖÞAB @  A§i?d Èü¦èäA @  A¨j?d ý¦8[h© @  A©k?d Hý¦þHш @  Aªl?d ˆý¦Þ½Óv @  A«m?d Èý¦ë‹Òâ @  A¬n?d þ¦vÏr# @  A­o?d Hþ¦MœJÉ @  A®p?d ˆþ¦miH7 @  A¯q?d Èþ¦þÓÔ @  A°r?d ÿ¦.M_< @  A±s?d Hÿ¦è^æ @  A²t?d ˆÿ¦È«äã @  A³uЧu?d Èÿ¦ýåw @  A´v?d §²)͆ @  Aµw?d `§ì*—€ @  A¶x?d  §Ìß•~ @  A·y?d à§ò0} @  A¸z?d §"Z¼• @  A¹{?d `§äI´ @  Aº|?d  §ļJ @  A»}?d à§ñŠÞ @  A¼~?d §lΦ @  A½?d `§'¼æª @  A¾€?d  §IäT @  A¿?d à§+$^• @  AÀ‚?d §ûlÒ} @  AÁƒ?d `§=k\ @  A„?d  §Ši¢ @  AÃ…?d à§(¼h6 @  AĆ?d §1ò›9 @  AŇ?d `§oñÁ? @  Aƈ?d  §OÃÁ @  Alj?d à§qÉf @  AÈŠ?d §¡ê* @  AÉ‹?d `§g’S  @  AÊŒ?d  §GgQõ @  AË?d à§rQPa @  AÌŽ?d §ïð  @  AÍ?d `§ÔFÈJ @  AÎ?d  §ô³Ê´ @  AÏ‘?d à§gßQW @  AÐ’?d §·—Ý¿ @  AÑ“?d `§q„dž @  AÒ”?d  §Qqf` @  AÓ•?d à§dGgô @  AÔ–?d §P¸ëé @  AÕ—?d `§»±ï @  AÖ˜?d  §.N³ @  A×™?d ৃ @  AØš?d §ÀËšú @  AÙ›?d ` §Ø#Û @  AÚœ?d   §&-!% @  AÛ?d à § ± @  AÜž?d §Ž_€p @  AÝŸ?d ` §(»F @  AÞ ?d   §Nƒ¸ @  Aß¡?d à §Š$?ë @  Aà¢?d §Zl³ @  Aá£?d ` §œ " @  Aâ¤?d€   §}ÍÿÜ @  B¥?d à §©º¶a @  B¦?d §°ôEn @  B§?d ` §+¾ä… @  B¨?d   § Kæ{ @  B©?d à §û4 @  Bª?d §+|ê @  B«?d ` §#Ýv± @  B¬?d   §(tO @  B ­?d à §óWŽ6 @  B ®?d §n.÷ @  B ¯?d `§ íð @  B °?d  §°üï @  B ±?d à§@ƒw @  B²?d §Ë™Ÿ @  B³?d `§5ËA$ @  B´?d  §>CÚ @  Bµ?d à§åA¹£ @  B¶?d §[Ÿ @  B·?d `§ÀÕ¤ú @  B¸?d  §à ¦ @  B¹?d à§_\} @  Bº?d §ÀЕ @  B»?d `§ȶ6Î @  B¼?d  §èC40 @  B½?d à§<ÎI @  B¾?d §…xnˆ @  B¿?d `§…B @  BÀ?d  §6pƒ¼ @  BÁ?d à§ÆyÅ @  BÂ?d §Gõ- @  BÃ?d `§¢A & @  B Ä?d  §‚´Ø @  B!Å?d à§rËò¡ @  B"Æ?d §k…® @  B#Ç?d `§ðÏ E @  B$È?d  §Ð:¢» @  B%É?d à§ EX @  B&Ê?d §ð Ô* @  B'Ë?d `§ø¬2q @  B(Ì?d  §ØY0 @  B)Í?d à§(&Êö @  B*Î?d §µbj7 @  B+Ï?d `§Kx©0 @  B,Ð?d  §k«Î @  B-Ñ?d à§›òQ· @  B.Ò?d §KºÝ_ @  B/Ó?d `§îºä @  B0Ô?d  §ÎO @  B1Õ?d à§>0ýc @  B2Ö?d § Ïq~ @  B3×?d `§‘…Е @  B4Ø?d  §±pÒk @  B5Ù?d à§A( @  B6Ú?d §‘G¤ú @  B7Û?d `§™æB¡ @  B8Ü?d  §¹@_ @  B9Ý?d à§Ilº& @  B:Þ?d §Ô(ç @  B;ß?d `§·…à< @  B<à?d  §—pâ @  B=á?d à§g» @  B>â?d §·G”S @  B?ã?d `§­FmÊ @  B@ä?d  §³o4 @  BAå?d à§}Ì•M @  BBæ?d §d‚fB @  BCç?d `§ÿÈÇ© @  BDè?d  §ß=ÅW @  BEé?d à§/B?. @  BFê?d §ÿ ³Æ @  BGë?d `§÷«U @  BHì?d  §×^Wc @  BIí?d à§'!­ @  BJî?d §ºe Û @  BKï?d `§DÎÜ @  BLð?d  §dŠÌ" @  BMñ?d à§”õ6[ @  BNò?d §D½º³ @  BOó?d `§á½b @  BPô?d  §ÁH`öuÐ § @  BQõ?d à§17š @  BRö?d 8 §@%„ @  B‘5?d ø/§Aßý @  B’6?d 80§§ŸcO @  B“7?d x0§<Õ¤ @  B”8?d ¸0§ ÀZ @  B•9?d ø0§ì_:# @  B–:?d 81§<¶Ë @  B—;?d x1§4¶P @  B˜<?d ¸1§CRn @  B™=?d ø1§ä<¨ @  Bš>?d 82§yxÖ @  B›??d x2§ê…ç @  Bœ@?d ¸2§Êpåâ @  BA?d ø2§:› @  BžB?d 83§êG“s @  BŸC?d x3§^Alx @  B D?d ¸3§~´n† @  B¡E?d ø3§ŽË”ÿ @  B¢F?d 84§—…gð @  B£G?d x4§ ÏÆ @  B¤H?d ¸4§,:Äå @  B¥I?d ø4§ÜE>œ @  B¦J?d 85§ ²t @  B§K?d x5§¬T/ @  B¨L?d ¸5§$YVÑ @  B©M?d ø5§Ô&¬¨ @  BªN?d 86§Ib i @  B«O?d x6§·xÏn @  B¬P?d ¸6§—Í @  B­Q?d ø6§gò7é @  B®R?d 87§·º» @  B¯S?d x7§ºcº @  B°T?d ¸7§2OaD @  B±U?d ø7§Â0›= @  B²V?d 88§öÏ  @  B³W?d x8§m…¶Ë @  B´X?d ¸8§Mp´5 @  BµY?d ø8§½NL @  B¶Z?d 89§mG¤ @  B·[?d x9§eæ$ÿ @  B¸\?d ¸9§E& @  B¹]?d ø9§µlÜx @  Bº^?d 8:§((|¹ @  B»_?d x:§K…†b @  B¼`?d ¸:§kp„œ @  B½a?d ø:§›~å @  B¾b?d 8;§KGò  @  B¿c?d x;§QF ” @  BÀd?d ¸;§q³ j @  BÁe?d ø;§Ìó @  BÂf?d 8<§˜‚ @  BÃg?d x<§È¡÷ @  BÄh?d ¸<§#=£  @  BÅi?d ø<§ÓBYp @  BÆj?d 8=§ Õ˜ @  BÇk?d x=§ «3à @  BÈl?d ¸=§+^1= @  BÉm?d ø=§Û!ËD @  BÊn?d 8>§Fek… @  BËo?d x>§¸¨‚ @  BÌp?d ¸>§˜Šª| @  BÍq?d ø>§hõP @  BÎr?d 8?§¸½Üí @  BÏs?d x?§½V @  BÐt?duÐ@§7 ¸?§=H¨ @  BÑu?d ø?§Í7üÑ @  BÒv?d P@§›Fí @  BÓw?d @§7µò& @  BÔx?d Ð@§µ$åø @  BÕy?d A§‚„· @  BÖz?d PA§•“i @  B×{?d A§?Ö` @  BØ|?d ÐA§½GwÌ @  BÙ}?d B§Rí:ª @  BÚ~?d PB§Ð|-t @  BÛ?d B§ü#ƒ  @  BÜ€?d ÐB§~²”Ò @  BÝ?d C§Üõ @  BÞ‚?d PC§^…âC @  B߃?d C§Hçh @  Bà„?d ÐC§Êv¶ @  Bá…?d D§¡Ö @  Bâ†?d€ PD§W„ f @  C‡?d D§ëö„ @  Cˆ?d ÐD§ záZ @  C‰?d E§j•{ø @  CŠ?d PE§èl& @  C‹?d E§ŒsÀ' @  CŒ?d ÐE§â×ù @  C?d F§/úÅå @  CŽ?d PF§­kÒ; @  C ?d F§4\ÿñ @  C ?d ÐF§¶Íè/ @  C ‘?d G§Ñ"r @  C ’?d PG§S³eS @  C “?d G§7ÄÉR @  C”?d ÐG§µUÞŒ @  C•?d H§WÞ¬ @  C–?d PH§ÆÉr @  C—?d H§T @  C˜?d ÐH§l0‘Š @  C™?d I§ ß ( @  Cš?d PI§‰Nö @  C›?d I§í9°÷ @  Cœ?d ÐI§o¨§) @  C?d J§N°µ5 @  Cž?d PJ§Ì!¢ë @  CŸ?d J§È¡¶ý @  C ?d ÐJ§J0¡# @  C¡?d K§-ß; @  C¢?d PK§¯N,_ @  C£?d K§Ë9€^ @  C¤?d ÐK§I¨—€ @  C¥?d L§PÏ @  C ¦?d PL§ÒŒØÜ @  C!§?d L§.ë—ú @  C"¨?d ÐL§¬z€$ @  C#©?d M§Ë•† @  C$ª?d PM§I X @  C%«?d M§-s¡Y @  C&¬?d ÐM§¯â¶‡ @  C'­?d N§Žú¤› @  C(®?d PN§ k³E @  C)¯?d N§•\ž @  C*°?d ÐN§͉Q @  C+±?d O§p"ó @  C,²?d PO§ò³- @  C-³?d O§–Ĩ, @  C.´?d ÐO§U¿ò @  C/µ?d P§»v} @  C0¶?d PP§9瘣 @  C1·?d P§Å€×… @  C2¸?d ÐP§GÀ[ @  C3¹?d Q§ þZù @  C4º?d PQ§¢oM' @  C5»?d Q§Æá& @  C6¼?d ÐQ§D‰öø @  C7½?d R§e‘ää @  C8¾?d PR§çó: @  C9¿?d R§Ðò= @  C:À?d ÐR§‘Aåã @  C;Á?d S§ö®A @  C<Â?d PS§t?hŸ @  C=Ã?d S§HÄž @  C>Ä?d ÐS§’ÙÓ@ @  C?Å?d T§%kP @  C@Æ?d PT§§úšŽ @  CAÇ?d T§[Õ¨ @  CBÈ?d ÐT§Ù Âv @  CCÉ?d U§¾ãXÔ @  CDÊ?d PU§Þ @  Cµ€;?d ¨q§:Iªß @  C¶€<?d èq§¸Ø½ @  C·€=?d (r§™À¯ @  C¸€>?d hr§Q¸Ã @  C¹€??d ¨r§ï¹Ä @  Cº€@?d èr§m® @  C»€A?d (s§ ÿ4¸ @  C¼€B?d hs§ˆn#f @  C½€C?d ¨s§ìg @  C¾€D?d ès§nˆ˜¹ @  C¿€E?d (t§Ù:Æ© @  CÀ€F?d ht§[«Ñw @  CÁ€G?d ¨t§§ÌžQ @  C€H?d èt§%]‰ @  CÀI?d (u§B²- @  CÄ€J?d hu§À#ó @  CÅ€K?d ¨u§¤T¨ò @  CÆ€L?d èu§&Å¿, @  CÇ€M?d (v§Ý­0 @  CÈ€N?d hv§…Lºî @  CÉ€O?d ¨v§{—$ @  CÊ€P?d èv§žê€ú @  CË€Q?d (w§ùX @  CÌ€R?d hw§{” † @  CÍ€S?d ¨w§㡇 @  C΀T?d èw§r¶Y @  CÏ€U?d (x§¸p¶y @  CЀV?d hx§:á¡§ @  CÑ€W?d ¨x§Ɔî @  CÒ€X?d èx§Dù_ @  CÓ€Y?d (y§#øcý @  CÔ€Z?d hy§¡it# @  CÕ€[?d ¨y§ÅØ" @  CÖ€\?d èy§GÏü @  C×€]?d (z§f—Ýà @  CØ€^?d hz§äÊ> @  CÙ€_?d ¨z§à†Þ( @  CÚ€`?d èz§bÉö @  CÛ€a?d ({§øST @  CÜ€b?d h{§‡iDŠ @  CÝ€c?d ¨{§ãè‹ @  CÞ€d?d è{§aÿU @  C߀e?d (|§x:§× @  Cà€f?d h|§ú«°  @  Cá€g?d ¨|§Ìÿ/ @  Câ€h?d€ è|§ @H @  D€i?d (}§„¥’à @  D€j?d h}§4… @  D€k?d ¨}§§ Òñ @  D€l?d è}§%›Å/ @  D€m?d (~§Ê1ˆI @  D€n?d h~§H Ÿ— @  D€o?d ¨~§%í' @  D€p?d è~§´úù @  D €q?d (§?›¶ @  D €r?d h§½ƒŒh @  D €s?d ¨§uЀ§'½Û„ @  D €t?d è§ž,ÌZ @  D €u?d @€§‚|É @  D€v?d €€§¢‰Áw @  D€w?d À€§Ÿ™úë @  D€x?d §OÑv @  D€y?d @§¿®Œz @  D€z?d €§Ÿ[Ž„ @  D€{?d À§œÌH @  D€|?d ‚§El‰ @  D€}?d @‚§ñ:–ð @  D€~?d €‚§ÑÏ” @  D€?d À‚§T‹Á @  D€€?d ƒ§„G) @  D€?d @ƒ§t8ýP @  D€‚?d €ƒ§TÍÿ® @  D€ƒ?d Àƒ§W—½b @  D€„?d „§NÙNm @  D€…?d @„§¾¦´ @  D€†?d €„§žS¶ê @  D€‡?d À„§²EªÆ @  D €ˆ?d …§b &. @  D!€‰?d @…§’rÜW @  D"€Š?d €…§²‡Þ© @  D#€‹?d À…§±Ýœe @  D$€Œ?d †§,™<¤ @  D%€?d @†§ÜæÆÝ @  D&€Ž?d €†§üÄ# @  D'€?d À†§ ò£³ @  D(€?d ‡§Ùº/[ @  D)€‘?d @‡§)ÅÕ" @  D*€’?d €‡§ 0×Ü @  D+€“?d À‡§ j• @  D,€”?d ˆ§>•  @  D-€•?d @ˆ§Îêãt @  D.€–?d €ˆ§îአ@  D/€—?d Àˆ§ÓÚ @  D0€˜?d ‰§GVþ @  D1€™?d @‰§ó8¬‡ @  D2€š?d €‰§ÓÍ®y @  D3€›?d À‰§Зìµ @  D4€œ?d ЧMÓLt @  D5€?d @Ч½¬¶  @  D6€ž?d €Š§Y´ó @  D7€Ÿ?d ÀЧõê¿ @  D8€ ?d ‹§%GfW @  D9€¡?d @‹§Õ8œ. @  D:€¢?d €‹§õ͞Р@  D;€£?d À‹§ö—Ü @  D<€¤?d Œ§ïÙ/ @  D=€¥?d @Œ§¦Õj @  D>€¦?d €Œ§?S×” @  D?€§?d ÀŒ§½BÍ* @  D@€¨?d §m A @  DA€©?d @§u»» @  DB€ª?d €§½€¹E @  DC€«?d À§¾Úû‰ @  DD€¬?d ާ#ž[H @  DE€­?d @ާÓá¡1 @  DF€®?d €Ž§ó£Ï @  DG€¯?d ÀާõÄ_ @  DH€°?d §Ö½H· @  DI€±?d @§&²Î @  DJ€²?d €§7°0 @  DK€³?d À§mòü @  DL€´?d §»³NN @  DM€µ?d @§KÌ´7 @  DN€¶?d €§k9¶É @  DO€·?d À§V)U @  DP€¸?d ‘§†a½ @  DQ€¹?d @‘§vûÄ @  DR€º?d €‘§Vëù: @  DS€»?d À‘§U±»ö @  DT€¼?d ’§Èõ7 @  DU€½?d @’§8ŠáN @  DV€¾?d €’§ã° @  DW€¿?d À’§€y¨í @  DX€À?d “§P1$ @  DY€Á?d @“§ NÞ| @  DZ€Â?d €“§€»Ü‚ @  D[€Ã?d À“§ƒážN @  D\€Ä?d ”§š¯mA @  D]€Å?d @”§jЗ8 @  D^€Æ?d €”§J%•Æ @  D_€Ç?d À”§f3‰ê @  D`€È?d •§¶{ @  Da€É?d @•§Fÿ{ @  Db€Ê?d €•§fñý… @  Dc€Ë?d À•§e«¿I @  Dd€Ì?d –§øïˆ @  De€Í?d @–§åñ @  Df€Î?d €–§(eç @  Dg€Ï?d À–§Ý„€Ÿ @  Dh€Ð?d —§ Ì w @  Di€Ñ?d @—§ý³ö @  Dj€Ò?d €—§ÝFôð @  Dk€Ó?d À—§Þ¶< @  Dl€Ô?d ˜§êã:! @  Dm€Õ?d @˜§œÀX @  Dn€Ö?d €˜§:i¦ @  Do€×?d À˜§yù: @  Dp€Ø?d ™§×1uÒ @  Dq€Ù?d @™§'N« @  Dr€Ú?d €™§»U @  Ds€Û?d À™§áÏ™ @  Dt€Ü?d 𧙥oX @  Du€Ý?d @š§iÚ•! @  Dv€Þ?d €š§I/—ß @  Dw€ß?d Àš§!yÉ“ @  Dx€à?d ›§ñ1E{ @  Dy€á?d @›§N¿ @  Dz€â?d €›§!»½ü @  D{€ã?d À›§"áÿ0 @  D|€ä?d œ§;¯ ? @  D}€å?d @œ§ËÐöF @  D~€æ?d €œ§ë%ô¸ @  D€ç?d Àœ§ŠbÞ7 @  D€€è?d §Z*Rß @  D€é?d @§ªU¨¦ @  D‚€ê?d €§Š ªX @  Dƒ€ë?d À§‰úè” @  D„€ì?d ž§¾HU @  D…€í?d @ž§äÁ², @  D†€î?d €ž§Ä4°Ò @  D‡€ï?d Àž§1Õ×B @  Dˆ€ð?d Ÿ§á[ª @  D‰€ñ?d @Ÿ§â¡Ó @  DŠ€ò?d €Ÿ§1£- @  D‹€óuР§?d ÀŸ§2Máá @  DŒ€ô?d  §>ÆLû @  Dõ?d X §ι¶‚ @  DŽö?d ˜ §îL´| @  D÷?d Ø §Ó\à @  Dø?d ¡§ @  D‘ù?d X¡§ókùq @  D’ú?d ˜¡§Óžû @  D“û?d Ø¡§ÐĹC @  D”ü?d ¢§M€‚ @  D•ý?d X¢§½ÿãû @  D–þ?d ˜¢§ á @  D—ÿ?d Ø¢§ÖÂû @  D˜ ?d £§PN @  D™ ?d X£§ö/´j @  Dš ?d ˜£§ÖÚ¶” @  D› ?d Ø£§Õ€ôX @  Dœ ?d ¤§ÌÎW @  D ?d X¤§<±ý. @  Dž ?d ˜¤§DÿÐ @  DŸ ?d ؤ§0Rãü @  D  ?d ¥§ào @  D¡ ?d X¥§e•m @  D¢ ?d ˜¥§0—“ @  D£ ?d Ø¥§3ÊÕ_ @  D¤ ?d ¦§®Žuž @  D¥ ?d X¦§^ñç @  D¦ ?d ˜¦§~ @  D§ ?d ئ§‹åê‰ @  D¨ ?d §§[­fa @  D© ?d X§§«Òœ @  Dª ?d ˜§§‹'žæ @  D« ?d ا§ˆ}Ü* @  D¬ ?d ¨§¼‚P7 @  D­ ?d X¨§LýªN @  D® ?d ˜¨§l¨° @  D¯ ?d ب§Q“, @  D° ?d ©§PÄ @  D± ?d X©§q/å½ @  D² ?d ˜©§QÚçC @  D³ ?d Ø©§R€¥ @  D´ ?d ª§ÏÄN @  Dµ ?d Xª§?»ÿ7 @  D¶ ?d ˜ª§NýÉ @  D· ?d ت§w£… @  D¸ ?d «§§P/m @  D¹! ?d X«§W/Õ @  Dº" ?d ˜«§wÚ×ê @  D»# ?d Ø«§t€•& @  D¼$ ?d ¬§mÎf) @  D½% ?d X¬§±œP @  D¾& ?d ˜¬§½Dž® @  D¿' ?d ج§?U„ @  DÀ( ?d ­§ïø @  DÁ) ?d X­§bò @  DÂ* ?d ˜­§?—ð @  DÃ+ ?d Ø­§<Ͳ³ @  DÄ, ?d ®§¡‰r @  DÅ- ?d X®§Qöè  @  DÆ. ?d ˜®§qêõ @  DÇ/ ?d Ø®§„âe @  DÈ0 ?d ¯§Tª @  DÉ1 ?d X¯§¤Õûô @  DÊ2 ?d ˜¯§„ ù  @  DË3 ?d د§‡z»Æ @  DÌ4 ?d °§9¤t @  DÍ5 ?d X°§ÉÛý  @  DÎ6 ?d ˜°§é.ÿó @  DÏ7 ?d ذ§Ô>Äo @  DÐ8 ?d ±§vH‡ @  DÑ9 ?d X±§ô ²þ @  DÒ: ?d ˜±§Ôü° @  DÓ; ?d ر§צòÌ @  DÔ< ?d ²§JâR  @  DÕ= ?d X²§º¨t @  DÖ> ?d ˜²§šhªŠ @  D×? ?d ز§ná× @  DØ@ ?d ³§Ò&m? @  DÙA ?d X³§"Y—F @  DÚB ?d ˜³§¬•¸ @  DÛC ?d س§ö×t @  DÜD ?d ´§¸${ @  DÝE ?d X´§èÇÞ @  DÞF ?d ˜´§È2Üü @  DßG ?d Ø´§ä$ÀÐ @  DàH ?d µ§4lL8 @  DáI ?d Xµ§Ä¶A @  DâJ ?d€ ˜µ§%¨ @  EK ?d ص§r>¢ü @  EL ?d ¶§ïz= @  EM ?d X¶§ÚL© @  EN ?d ˜¶§ú¹W @  EO ?d ض§Áê9½ @  EP ?d ·§¢µU @  EQ ?d X·§/oV @  ER ?d ˜·§š¨ @  E S ?d Ø·§ɉ«‰ @  E T ?d ¸§ýv'” @  E U ?d X¸§È@& @  E V ?d ˜¸§èµ$þ @  E W ?d ظ§¶¶~ø @  EX ?d ¹§fþò @  EY ?d X¹§õ’ió @  EZ ?d ˜¹§Õgk  @  E[ ?d ع§tÒ, @  E\ ?d º§Ž0rí @  E] ?d Xº§»sy @  E^ ?d ˜º§›óq‡ @  E_ ?d غ§=p± @  E` ?d »§í_üY @  Ea ?d X»§Ó’YZ @  Eb ?d ˜»§óg[¤ @  Ec ?d Ø»§5tâ… @  Ed ?d ¼§,:Š @  Ee ?d X¼§  @  Ef ?d ˜¼§9ùà @  Eg ?d ؼ§gúHæ @  Eh ?d ½§·²Ä @  Ei ?d X½§5Øx] @  E j ?d ˜½§-z£ @  E!k ?d ؽ§Ó> @  E"l ?d ¾§NzcC @  E#m ?d X¾§{Lb× @  E$n ?d ˜¾§[¹`) @  E%o ?d ؾ§`êXà @  E&p ?d ¿§°¢Ô+ @  E'q ?d X¿§Žoq( @  E(r ?d ˜¿§®šsÖ @uÐÀ§  E)s ?d Ø¿§h‰Ê÷ @  E*t ?d 0À§ y›¥ @  E+u ?d pÀ§9Oš1 @  E,v ?d °À§º˜Ï @  E-w ?d ðÀ§G¹ÂÉ @  E.x ?d 0Á§—ñN! @  E/y ?d pÁ§Õ @  E0z ?d °Á§$h×< @  E1{ ?d ðÁ§â{n @  E2| ?d 0§?ÎÜ @  E3} ?d p§J ÏH @  E4~ ?d °Â§jüͶ @  E5 ?d ð§!Ž @  E6€ ?d 0çñÆë @  E7 ?d pçÏ ¤è @  E8‚ ?d °Ã§ïþ¦ @  E9ƒ ?d ðç)í7 @  E:„ ?d 0ħ0£ì8 @  E;… ?d pħ•í¬ @  E<† ?d °Ä§%`ïR @  E=‡ ?d ðħ{cµT @  E>ˆ ?d 0ŧ«+9¼ @  E?‰ ?d pŧ‡Fƒ} @  E@Š ?d °Å§§³ƒ @  EA‹ ?d ðŧa 8¢ @  EBŒ ?d 0Ƨüä˜c @  EC ?d pƧÉÒ™÷ @  EDŽ ?d °Æ§é'›  @  EE ?d ðƧÒt£ã @  EF ?d 0ǧRh @  EÁ !?d æ§Xø\V @  E !?d Hæ§ÚiKˆ @  Eà !?d ˆæ§M;_< @  EÄ!?d Èæ§ϪHâ @  EÅ!?d 秦 ë> @  EÆ!?d Hç§$±üà @  EÇ!?d ˆç§¸Là @  EÈ!?d Èç§:‰[ @  EÉ!?d è§Jôyÿ @  EÊ!?d Hè§Èen! @  EË!?d ˆè§_7z• @  EÌ!?d Èè§ݦmK @  EÍ!?d é§Ñ|¬{ @  EÎ!?d Hé§Sí»¥ @  EÏ!?d ˆé§bå5f @  EÐ!?d Èé§àt"¸ @  EÑ!?d ê§9²,† @  EÒ!?d Hê§»#;X @  EÓ!?d ˆê§,q/ì @  EÔ!?d Èê§®à82 @  EÕ!?d ë§ZÝ¢2 @  EÖ !?d Hë§ØLµì @  E×!!?d ˆë§DåÏ @  EØ"!?d Èë§Æt @  EÙ#!?d ì§›¸Oá @  EÚ$!?d Hì§)X? @  EÛ%!?d ˆì§Ž{L‹ @  EÜ&!?d Èì§ ê[U @  EÝ'!?d í§0še @  EÞ(!?d Hí§‚¡» @  Eß)!?d ˆí§¢¯$È @  Eà*!?d Èí§ >3 @  Eá+!?d î§ùø=( @  Eâ,!?d€ H.Ýö @  F-!?d ˆî§Ì=k @  F.!?d Èî§N¬–µ @  F/!?d ï§âo΄ @  F0!?d Hï§`þÙZ @  F1!?d ˆï§2å6 @  F2!?d Èï§°t!Ý @  F3!?d ð§„šlê @  F4!?d Hð§ {4 @  F 5!?d ˆð§T”m @  F 6!?d Èð§Öƒ³ @  F 7!?d ñ§¹n @  F 8!?d Hñ§ƒ®° @  F 9!?d ˆñ§ϘAé @  F:!?d Èñ§M V7 @  F;!?d ò§÷Ü9“ @  F!?d Èò§¥ÇÖÊ @  F?!?d ó§dã¢6 @  F@!?d Hó§ærµè @  FA!?d ˆó§´iZ± @  FB!?d Èó§6øMo @  FC!?d ô§¥†Oå @  FD!?d Hô§'X; @  FE!?d ˆô§u ·b @  FF!?d Èô§÷ ¼ @  FG!?d õ§>ša @  FH!?d Hõ§¼Ÿ¿ @  FI!?d ˆõ§î„bæ @  FJ!?d Èõ§lu8 @  FK!?d ö§ÇÆ=, @  F L!?d Hö§EW*ò @  F!M!?d ˆö§LÅ« @  F"N!?d Èö§•ÝÒu @  F#O!?d ÷§9ŠD @  F$P!?d H÷§»š @  F%Q!?d ˆ÷§é”rà @  F&R!?d È÷§ke @  F'S!?d ø§ÕÊ… @  F(T!?d Hø§W[[ @  F)U!?d ˆø§@à @  F*V!?d Èø§‡Ñ÷Ü @  F+W!?d ù§NBÍ @  F,X!?d Hù§ÌÓÚß @  F-Y!?d ˆù§žÈ5† @  F.Z!?d Èù§Y"X @  F/[!?d ú§¦ŒMü @  F0\!?d Hú§$Z" @  F1]!?d ˆú§vµ{ @  F2^!?d Èú§ô—¢¥ @  F3_!?d û§ÅãÃH @  F4`!?d Hû§GrÔ– @  F5a!?d ˆû§i;Ï @  F6b!?d Èû§—ø, @  F7c!?d ü§†.› @  F8d!?d Hü§†9E @  F9e!?d ˆü§Ô Ö @  F:f!?d Èü§VÁ @  F;g!?d ý§Ÿû @  F<h!?d Hý§ŸìÁ @  F=i!?d ˆý§O„˜ @  F>j!?d Èý§ÍF @  F?k!?d þ§ÈÁZÀ @  F@l!?d Hþ§JPM @  FAm!?d ˆþ§K¢G @  FBn!?d Èþ§šÚµ™ @  FCo!?d ÿ§6í¨ @  FDp!?d Hÿ§´ˆúv @  FEq!?d ˆÿ§æ“/ @  FFuШr!?d Èÿ§‚q @  FG€s!?d ¨*fˆÛ @  FH€t!?d `¨¨÷Ÿ @  FI€u!?d  ¨úìp\ @  FJ€v!?d à¨x}g‚ @  FK€w!?d ¨±î]_ @  FL€x!?d `¨3J @  FM€y!?d  ¨ad¥Ø @  FN€z!?d à¨ãõ² @  FO€{!?d ¨Y Ý¢ @  FP€|!?d `¨Û±Ê| @  FQ€}!?d  ¨‰ª%% @  FR€~!?d ਠ;2û @  FS€!?d ¨×Ù• @  FT€€!?d `¨UHK @  FU€!?d  ¨Sê @  FV€‚!?d ਅÂýÌ @  FW€ƒ!?d ¨¼ÿF @  FX€„!?d `¨”-è˜ @  FY€…!?d  ¨Æ6Á @  FZ€†!?d à¨D§ @  F[€‡!?d ¨4* @  F\€ˆ!?d `¨¥= @  F]€‰!?d  ¨]¾ÒE @  F^€Š!?d à¨ß/Å› @  F_€‹!?d ¨tü @  F`€Œ!?d `¨ömšQ @  Fa€!?d  ¨¤vu @  Fb€Ž!?d à¨&çbÖ @  Fc€!?d ¨Š$:ç @  Fd€!?d `¨µ-9 @  Fe€‘!?d  ¨Z®Â` @  Ff€’!?d à¨Ø?Õ¾ @  Fg€“!?d ¨fð¨& @  Fh€”!?d `¨äa¿ø @  Fi€•!?d  ¨¶zP¡ @  Fj€–!?d à¨4ëG @  Fk€—!?d ¨ýx}¢ @  Fl€˜!?d ` ¨éj| @  Fm€™!?d   ¨-ò…% @  Fn€š!?d à ¨¯c’û @  Fo€›!?d ¨¶ý_ @  Fp€œ!?d ` ¨—'ê @  Fq€!?d   ¨Å<Ø @  Fr€ž!?d à ¨G­ @  Fs€Ÿ!?d ¨vÙsë @  Ft€ !?d ` ¨ôHd5 @  Fu€¡!?d   ¨¦S‹l @  Fv€¢!?d à ¨$œ² @  Fw€£!?d ¨·¼ž8 @  Fx€¤!?d ` ¨5-‰æ @  Fy€¥!?d   ¨g6f¿ @  Fz€¦!?d à ¨å§qa @  F{€§!?d ¨,4K¼ @  F|€¨!?d ` ¨®¥\b @  F}€©!?d   ¨ü¾³; @  F~€ª!?d à ¨~/¤å @  F€«!?d ¨˜­ÚR @  F€€¬!?d `¨<ÍŒ @  F€­!?d  ¨H'"Õ @  F‚€®!?d à¨ʶ5  @  Fƒ€¯!?d ¨fum: @  F„€°!?d `¨ääzä @  F…€±!?d  ¨¶ÿ•½ @  F†€²!?d à¨4n‚c @  F‡€³!?d ¨€ÏT @  Fˆ€´!?d `¨‚ØŠ @  F‰€µ!?d  ¨Ð 7Ó @  FŠ€¶!?d à¨R›  @  F‹€·!?d ¨›Ð @  FŒ€¸!?d `¨™  @  F€¹!?d  ¨K‚âW @  FŽ€º!?d à¨Éõ‰ @  F€»!?d ¨sÆš- @  F€¼!?d `¨ñWó @  F‘€½!?d  ¨£Lbª @  F’€¾!?d à¨!Ýut @  F“€¿!?d ¨àùˆ @  F”€À!?d `¨bhV @  F•€Á!?d  ¨0sù @  F–€Â!?d ਲâîÑ @  F—€Ã!?d ¨!œì[ @  F˜€Ä!?d `¨£ û… @  F™€Å!?d  ¨ñÜ @  Fš€Æ!?d à¨s‡ @  F›€Ç!?d ¨º9ß @  Fœ€È!?d `¨8…. @  F€É!?d  ¨jžÁX @  Fž€Ê!?d à¨èÖ† @  FŸ€Ë!?d ¨CÜž’ @  F €Ì!?d `¨ÁM‰L @  F¡€Í!?d  ¨“Vf @  F¢€Î!?d à¨ÇqË @  F£€Ï!?d ¨½)ú @  F¤€Ð!?d `¨?•>$ @  F¥€Ñ!?d  ¨mŽÑ} @  F¦€Ò!?d à¨ïÆ£ @  F§€Ó!?d ¨Qл; @  F¨€Ô!?d `¨ÓA¬å @  F©€Õ!?d  ¨ZC¼ @  Fª€Ö!?d à¨ËTb @  F«€×!?d ¨ÊXn¿ @  F¬€Ø!?d `¨HÉya @  F­€Ù!?d  ¨Ò–8 @  F®€Ú!?d ਘCæ @  F¯€Û!?d ¨"–îB @  F°€Ü!?d `¨ ùœ @  F±€Ý!?d  ¨òÅ @  F²€Þ!?d à¨p @  F³€ß!?d ¨Aù`ö @  F´€à!?d `¨Ãhw( @  Fµ€á!?d  ¨‘s˜q @  F¶€â!?d à¨â¯ @  F·€ã!?d ¨€œ% @  F¸€ä!?d `¨ šû @  F¹€å!?d  ¨Pu¢ @  Fº€æ!?d à¨Ò‡b| @  F»€ç!?d ¨X¡ @  F¼€è!?d `¨™…O @  F½€é!?d  ¨Ëž & @  F¾€ê!?d à¨I·ø @  F¿€ë!?d ¨LÛù~ @  FÀ€ì!?d `¨ÎJî  @  FÁ€í!?d  ¨œQù @  F€î!?d à¨À' @  FÀï!?d ¨²N @  FÄ€ð!?d `¨0’YÈ @  FÅ€ñ!?d  ¨b‰¶‘uÐ ¨ @  FÆ€ò!?d à¨à¡O @  FÇ€ó!?d 8 ¨#ެ @  FÈ€ô!?d x ¨™²™r @  FÉ€õ!?d ¸ ¨Ë©v+ @  FÊ€ö!?d ø ¨I8aõ @  FË€÷!?d 8!¨€«[( @  FÌ€ø!?d x!¨:Lö @  FÍ€ù!?d ¸!¨P!£¯ @  F΀ú!?d ø!¨Ò°´q @  FÏ€û!?d 8"¨heÛÕ @  FЀü!?d x"¨êôÌ  @  FÑ€ý!?d ¸"¨¸ï#R @  FÒ€þ!?d ø"¨:~4Œ @  FÓ€ÿ!?d 8#¨+ÙtË @  FÔ€"?d x#¨©Hc @  FÕ€"?d ¸#¨ûSŒL @  FÖ€"?d ø#¨y›’ @  F×€"?d 8$¨ê¼™ @  FØ€"?d x$¨h-ŽÆ @  FÙ€"?d ¸$¨:6aŸ @  FÚ€"?d ø$¨¸§vA @  FÛ€"?d 8%¨q4Lœ @  FÜ€"?d x%¨ó¥[B @  FÝ€ "?d ¸%¨¡¾´ @  FÞ€ "?d ø%¨#/£Å @  F߀ "?d 8&¨ˆüëÑ @  Fà€ "?d x&¨ mü @  Fဠ"?d ¸&¨XvV @  Fâ€"?d€ ø&¨®$. @  G€"?d 8'¨ã¦6 @  G€"?d x'¨a7è @  G€"?d ¸'¨öe \ @  G€"?d ø'¨tô‚ @  G€"?d 8(¨‰>` @  G€"?d x(¨†)¾ @  G€"?d ¸(¨±™ @  G€"?d ø(¨˜ ŽC @  G €"?d 8)¨”úOs @  G €"?d x)¨kX­ @  G €"?d ¸)¨9L @  G €"?d ø)¨¨[Ç @  G €"?d 8*¨ÚnUù @  G€"?d x*¨XÿB' @  G€"?d ¸*¨i÷Ìä @  G€"?d ø*¨ëfÛ: @  G€"?d 8+¨[A: @  G€ "?d x+¨ÊVä @  G€!"?d ¸+¨ ˜BP @  G€""?d ø+¨ˆ UŽ @  G€#"?d 8,¨ÕÅ~ @  G€$"?d x,¨WT  @  G€%"?d ¸,¨Ëý¯ƒ @  G€&"?d ø,¨Il¸] @  G€'"?d 8-¨E¶ym @  G€("?d x-¨Ç'n³ @  G€)"?d ¸-¨Puz @  G€*"?d ø-¨ÒämÙ @  G€+"?d 8.¨ "cç @  G€,"?d x.¨‰³t9 @  G€-"?d ¸.¨©½ÝJ @  G €."?d ø.¨+,Ê” @  G!€/"?d 8/¨B¦iH @  G"€0"?d x/¨À7~– @  G#€1"?d ¸/¨Wej" @  G$€2"?d ø/¨Õô}ü @  G%€3"?d 80¨/¨o± @  G&€4"?d x0¨­9xo @  G'€5"?d ¸0¨1ÈL @  G(€6"?d ø0¨³ß’ @  G)€7"?d 81¨¿Û¢ @  G*€8"?d x1¨=J | @  G+€9"?d ¸1¨ªÈ @  G,€:"?d ø1¨(‰  @  G-€;"?d 82¨ñO( @  G.€<"?d x2¨sÞö @  G/€="?d ¸2¨BÖ5 @  G0€>"?d ø2¨ÀGŠë @  G1€?"?d 83¨Ä*ú @  G2€@"?d x3¨F»$ @  G3€A"?d ¸3¨Ñé @  G4€B"?d ø3¨SxN @  G5€C"?d 84¨´L¾ @  G6€D"?d x4¨Œ%[` @  G7€E"?d ¸4¨ŒëC @  G8€F"?d ø4¨’ü @  G9€G"?d 85¨žÇ=­ @  G:€H"?d x5¨V*s @  G;€I"?d ¸5¨‹>Ç @  G<€J"?d ø5¨ •) @  G=€K"?d 86¨ÐS'' @  G>€L"?d x6¨RÂ0ù @  G?€M"?d ¸6¨ÜËŸ @  G@€N"?d ø6¨^ZˆÆ @  GA€O"?d 87¨7Ð+ @  GB€P"?d x7¨µA<Ä @  GC€Q"?d ¸7¨"(p @  GD€R"?d ø7¨ ‚?® @  GE€S"?d 88¨ÐÿL @  GF€T"?d x8¨Rn ’ @  GG€U"?d ¸8¨ÎǺ± @  GH€V"?d ø8¨LV­o @  GI€W"?d 89¨@Œl_ @  GJ€X"?d x9¨Â{ @  GK€Y"?d ¸9¨UOo5 @  GL€Z"?d ø9¨×Þxë @  GM€["?d 8:¨vÕ @  GN€\"?d x:¨Œ‰a  @  GO€]"?d ¸:¨½ïÈ @  GP€^"?d ø:¨?ø @  GQ€_"?d 8;¨Ë-b @  GR€`"?d x;¨I¼uÈ @  GS€a"?d ¸;¨Þîa| @  GT€b"?d ø;¨\v¢ @  GU€c"?d 8<¨³+R @  GV€d"?d x<¨ƒ"<Œ @  GW€e"?d ¸<¨‹Œ¯ @  GX€f"?d ø<¨›q @  GY€g"?d 8=¨‘ÀZA @  GZ€h"?d x=¨QMŸ @  G[€i"?d ¸=¨„Y+ @  G\€j"?d ø=¨’Nõ @  G]€k"?d 8>¨ßT@Ë @  G^€l"?d x>¨]ÅW @  G_€m"?d ¸>¨}Ëþf @  G`€n"?d ø>¨ÿZé¸ @  Ga€o"?d 8?¨–ÐJd @  Gb€p"?d x?¨A]º @  Gc€q"?duÐ@¨7 ¸?¨ƒI @  Gd€r"?d ø?¨|-¬ @  Ges"?d P@¨û,9o @  Gft"?d @¨ÛÙ;‘ @  Ggu"?d Ð@¨åž’ @  Ghv"?d A¨5\z @  Giw"?d PA¨k_H| @  Gjx"?d A¨KªJ‚ @  Gky"?d ÐA¨~œK @  Glz"?d B¨ãØë× @  Gm{"?d PB¨%ËRö @  Gn|"?d B¨>P @  Go}"?d ÐB¨–RËë @  Gp~"?d C¨FG @  Gq"?d PC¨ h¶ @  Gr€"?d C¨-H @  Gs"?d ÐC¨«Ü @  Gt‚"?d D¨å÷Ó @  Guƒ"?d PD¨ÇöNò @  Gv„"?d D¨çL  @  Gw…"?d ÐD¨ÙÎé @  Gx†"?d E¨ †eç @  Gy‡"?d PE¨W…?á @  Gzˆ"?d E¨wp= @  G{‰"?d ÐE¨BF<‹ @  G|Š"?d F¨ßœJ @  G}‹"?d PF¨%k @  G~Œ"?d F¨9ä'• @  G"?d ÐF¨öß­e @  G€Ž"?d G¨&—! @  G"?d PG¨Äg @  G‚"?d G¨=1™ @  Gƒ‘"?d ÐG¨  @  G„’"?d H¨<ø– @  G…“"?d PH¨úë/1 @  G†”"?d H¨Ú-Ï @  G‡•"?d ÐH¨äÓˆÌ @  Gˆ–"?d I¨4›$ @  G‰—"?d PI¨j˜^" @  GŠ˜"?d I¨Jm\Ü @  G‹™"?d ÐI¨[]H @  GŒš"?d J¨âý‰ @  G›"?d PJ¨$ D¨ @  GŽœ"?d J¨ùFV @  G"?d ÐJ¨—•ݵ @  Gž"?d K¨GÝQ] @  G‘Ÿ"?d PK¨á9Pk @  G’ "?d K¨ÁÌR• @  G“¡"?d ÐK¨ôúS @  G”¢"?d L¨í´  @  G•£"?d PL¨+§/ @  G–¤"?d L¨ RÑ @  G—¥"?d ÐL¨5Ÿ¾Ò @  G˜¦"?d M¨å×2: @  G™§"?d PM¨»Ôh< @  Gš¨"?d M¨›!j @  G›©"?d ÐM¨®kV @  Gœª"?d N¨3SË— @  G«"?d PN¨õ@r¶ @  Gž¬"?d N¨ÕµpH @  GŸ­"?d ÐN¨WßÌ @  G ®"?d O¨‡—@ó @  G¡¯"?d PO¨¼Äx @  G¢°"?d O¨œ1zç @  G£±"?d ÐO¨©{s @  G¤²"?d P¨ÙÇÁ @  G¥³"?d PP¨ÑÊ~à @  G¦´"?d P¨ñ?| @  G§µ"?d ÐP¨ÏòÙ @  G¨¶"?d Q¨ºUõ @  G©·"?d PQ¨A¹ó @  Gª¸"?d Q¨aL  @  G«¹"?d ÐQ¨Tz ™ @  G¬º"?d R¨É>¬X @  G­»"?d PR¨-y @  G®¼"?d R¨/؇ @  G¯½"?d ÐR¨¼´Œd @  G°¾"?d S¨lüŒ @  G±¿"?d PS¨:H« @  G²À"?d S¨½U @  G³Á"?d ÐS¨/‹Á @  G´Â"?d T¨6ÅäÎ @  GµÃ"?d PT¨ðÖ]ï @  G¶Ä"?d T¨Ð#_ @  G·Å"?d ÐT¨îîú @  G¸Æ"?d U¨>¦vú @  G¹Ç"?d PU¨`¥,ü @  GºÈ"?d U¨@P. @  G»É"?d ÐU¨uf/– @  G¼Ê"?d V¨è"W @  G½Ë"?d PV¨.16v @  G¾Ì"?d V¨Ä4ˆ @  G¿Í"?d ÐV¨"©ŽI @  GÀÎ"?d W¨òá¡ @  GÁÏ"?d PW¨ɲ:K @  GÂÐ"?d W¨éG8µ @  GÃÑ"?d ÐW¨Üq9! @  GÄÒ"?d X¨莵< @  GÅÓ"?d PX¨.  @  GÆÔ"?d X¨hã @  GÇÕ"?d ÐX¨0¥«à @  GÈÖ"?d Y¨àí' @  GÉ×"?d PY¨¾î} @  GÊØ"?d Y¨žð @  GËÙ"?d ÐY¨«-~d @  GÌÚ"?d Z¨6iÞ¥ @  GÍÛ"?d PZ¨ðzg„ @  GÎÜ"?d Z¨Ðez @  GÏÝ"?d ÐZ¨Cãþ™ @  GÐÞ"?d [¨“«rq @  GÑß"?d P[¨5OsG @  GÒà"?d [¨ºq¹ @  GÓá"?d Ð[¨ Œp- @  GÔâ"?d \¨9ƒ" @  GÕã"?d P\¨ÿÑ: @  GÖä"?d \¨ß$8ý @  G×å"?d Ð\¨áéþ @  GØæ"?d ]¨1¡ @  GÙç"?d P]¨o¢K @  GÚè"?d ]¨OWIî @  GÛé"?d Ð]¨zaHz @  GÜê"?d ^¨ç%è» @  GÝë"?d P^¨!6Qš @  GÞì"?d ^¨ÃSd @  Gßí"?d Ð^¨ƒ©ï7 @  Gàî"?d _¨Sácß @  Gáï"?d P_¨h²[5 @  Gâð"?d€ _¨`ÝM™ @  HuÐ`¨ñ"?d Ð_¨´ª$ @  Hò"?d (`¨ R±¼ @  Hó"?d h`¨ óp @  Hô"?d ¨`¨)ýñŽ @  Hõ"?d è`¨Ù‚ ÷ @  Hö"?d (a¨ ʇ @  H÷"?d ha¨™{‚c @  Hø"?d ¨a¨¹Ž€ @  H ù"?d èa¨p6¦1 @  H ú"?d (b¨írð @  H û"?d hb¨î(D< @  H ü"?d ¨b¨÷š @  H ý"?d èb¨e`n @  Hþ"?d (c¨×-ì† @  Hÿ"?d hc¨€+˜¥ @  H#?d ¨c¨ Þš[ @  H#?d èc¨P¡`" @  H#?d (d¨Iï“- @  H#?d hd¨JµÑá @  H#?d ¨d¨j@Ó @  H#?d èd¨š?)f @  H#?d (e¨Jw¥Ž @  H#?d he¨ÚÆ ò @  H#?d ¨e¨ú3¢  @  H #?d èe¨ LXu @  H #?d (f¨—ø´ @  H #?d hf¨”Rºx @  H #?d ¨f¨´§¸† @  H #?d èf¨DØBÿ @  H#?d (g¨”Î @  H#?d hg¨ÝÖ°× @  H #?d ¨g¨ý#²) @  H!#?d èg¨ \HP @  H"#?d (h¨9£ÄM @  H##?d hh¨:ù† @  H$#?d ¨h¨ „ @  H%#?d èh¨ês~ @  H&#?d (i¨:;òî @  H'#?d hi¨ªŠ÷’ @  H(#?d ¨i¨Šõl @  H)#?d èi¨z @  H*#?d (j¨çD¯Ô @  H+#?d hj¨äí @  H,#?d ¨j¨Äëïæ @  H-#?d èj¨4”Ÿ @  H.#?d (k¨äÜ™w @  H/#?d hk¨!+ùÛ @  H0 #?d ¨k¨Þû% @  H1!#?d èk¨ñ¡\ @  H2"#?d (l¨èïòS @  H3##?d hl¨ëµ°Ÿ @  H4$#?d ¨l¨Ë@²a @  H5%#?d èl¨;?H @  H6&#?d (m¨ëwÄð @  H7'#?d hm¨{ÆÁŒ @  H8(#?d ¨m¨[3Ãr @  H9)#?d èm¨«L9  @  H:*#?d (n¨6™Ê @  H;+#?d hn¨5RÛ @  H<,#?d ¨n¨§Ùø @  H=-#?d èn¨åØ# @  H>.#?d (o¨5¯i @  H?/#?d ho¨ÒÑ×; @  H@0#?d ¨o¨ò$ÕÅ @  HA1#?d èo¨[/¼ @  HB2#?d (p¨¼…“ @  HC3#?d hp¨¿ßÑ @  HD4#?d ¨p¨Ÿ*Ó< @  HE5#?d èp¨oU)E @  HF6#?d (q¨¿¥­ @  HG7#?d hq¨/¬ Ñ @  HH8#?d ¨q¨Y¢/ @  HI9#?d èq¨ÿ&XV @  HJ:#?d (r¨bbø— @  HK;#?d hr¨a8º[ @  HL<#?d ¨r¨A͸¥ @  HM=#?d èr¨±²BÜ @  HN>#?d (s¨aúÎ4 @  HO?#?d hs¨T]»‰ @  HP@#?d ¨s¨t¨¹w @  HQA#?d ès¨„×C @  HRB#?d (t¨™° @  HSC#?d ht¨žÃòÍ @  HTD#?d ¨t¨¾6ð3 @  HUE#?d èt¨NI J @  HVF#?d (u¨ž†¢ @  HWG#?d hu¨°ƒÞ @  HXH#?d ¨u¨.E  @  HYI#?d èu¨Þ:{Y @  HZJ#?d (v¨C~Û˜ @  H[K#?d hv¨@$™T @  H\L#?d ¨v¨`Ñ›ª @  H]M#?d èv¨®aÓ @  H^N#?d (w¨@æí; @  H_O#?d hw¨  “û @  H`P#?d ¨w¨)U‘ @  HaQ#?d èw¨Ù*k| @  HbR#?d (x¨íÕça @  HcS#?d hx¨ @  HdT#?d ¨x¨Îz§S @  HeU#?d èx¨>]* @  HfV#?d (y¨îMÑ @  HgW#?d hy¨~üÔ¾ @  HhX#?d ¨y¨^ Ö@ @  HiY#?d èy¨®v,9 @  HjZ#?d (z¨32Œø @  Hk[#?d hz¨0hÎ4 @  Hl\#?d ¨z¨ÌÊ @  Hm]#?d èz¨àâ6³ @  Hn^#?d ({¨0ªº[ @  Ho_#?d h{¨õ]Ú÷ @  Hp`#?d ¨{¨Õ¨Ø  @  Hqa#?d è{¨%×"p @  Hrb#?d (|¨<™Ñ @  Hsc#?d h|¨?Ó³ @  Htd#?d ¨|¨6‘M @  Hue#?d è|¨ïIk4 @  Hvf#?d (}¨?çÜ @  Hwg#?d h}¨¯°â  @  Hxh#?d ¨}¨Eà^ @  Hyi#?d è}¨:' @  Hzj#?d (~¨â~ºæ @  H{k#?d h~¨á$ø* @  H|l#?d ¨~¨ÁÑúÔ @  H}m#?d è~¨1®­ @  H~n#?d (¨áæŒE @  Ho#?d h¨åñÄ& @  H€p#?d ¨¨uЀ¨'ÅÆØ @  Hq#?d è¨HûOÝ @  H‚€r#?d @€¨&E­© @  Hƒ€s#?d €€¨‡{úE @  H„€t#?d À€¨êí› @  H…€u#?d ¨§LŒÔ @  H†€v#?d @¨%Ý›  @  H‡€w#?d €¨‹V @  Hˆ€x#?d À¨•™œˆ @  H‰€y#?d ‚¨z3Ñî @  HŠ€z#?d @‚¨ø¢Æ0 @  H‹€{#?d €‚¨Yœ‘Ü @  HŒ€|#?d À‚¨Û † @  H€}#?d ƒ¨y«çM @  HŽ€~#?d @ƒ¨û:ð“ @  H€#?d €ƒ¨q?Äœ @  H€€#?d Àƒ¨ó®ÓB @  H‘€#?d „¨˜Íê @  H’€‚#?d @„¨ŸÚ4 @  H“€ƒ#?d €„¨»¡Ø @  H”€„#?d À„¨90š @  H•€…#?d …¨›–ûI @  H–€†#?d @…¨ì— @  H—€‡#?d €…¨+ÒüË @  H˜€ˆ#?d À…¨©Cë @  H™€‰#?d †¨Fé¦s @  Hš€Š#?d @†¨Äx±­ @  H›€‹#?d €†¨eFæA @  Hœ€Œ#?d À†¨ç×ñŸ @  H€#?d ‡¨EqÐ @  Hž€Ž#?d @‡¨Çà‡ @  HŸ€#?d €‡¨,Âìî @  H €#?d À‡¨®Sû0 @  H¡€‘#?d ˆ¨èBšŠ @  H¢€’#?d @ˆ¨jÓT @  H£€“#?d €ˆ¨ËíÚ¸ @  H¤€”#?d Àˆ¨I|Íf @  H¥€•#?d ‰¨ëÚ¬) @  H¦€–#?d @‰¨iK»÷ @  H§€—#?d €‰¨[ž«« @  H¨€˜#?d À‰¨Ù¼u @  H©€™#?d Ѝ6¥ñ @  Hª€š#?d @Ѝ´4æÍ @  H«€›#?d €Š¨ ±! @  H¬€œ#?d ÀЍ—›¦ÿ @  H­€#?d ‹¨5=ǰ @  H®€ž#?d @‹¨·¬Ðn @  H¯€Ÿ#?d €‹¨Ð?¥â @  H°€ #?d À‹¨R®²< @  H±€¡#?d Œ¨9¬” @  H²€¢#?d @Œ¨»Ÿ»J @  H³€£#?d €Œ¨¡ì¦ @  H´€¤#?d ÀŒ¨˜0ûx @  Hµ€¥#?d ¨:–š7 @  H¶€¦#?d @¨¸é @  H·€§#?d €¨ŠÒµ @  H¸€¨#?d À¨CŠk @  H¹€©#?d ލçéÇ  @  Hº€ª#?d @ލexÐÓ @  H»€«#?d €Ž¨ÄF‡? @  H¼€¬#?d ÀލF×á @  H½€­#?d ¨äqñ® @  H¾€®#?d @¨fàæp @  H¿€¯#?d €¨#Å‹ @  HÀ€°#?d À¨¡TœÜ @  HÁ€±#?d ¨mdÍÉ @  H€²#?d @¨ïõÚ @  HÀ³#?d €¨NËû @  HÄ€´#?d À¨ÌZš% @  HÅ€µ#?d ‘¨nüûj @  HÆ€¶#?d @‘¨ìmì´ @  HÇ€·#?d €‘¨Þ¸üè @  HÈ€¸#?d À‘¨\)ë6 @  HÉ€¹#?d ’¨³ƒ¦P @  HÊ€º#?d @’¨1±Ž @  HË€»#?d €’¨,æb @  HÌ€¼#?d À’¨½ñ¼ @  HÍ€½#?d “¨°ó @  H΀¾#?d @“¨2Ї- @  HÏ€¿#?d €“¨¥Iç° @  HЀÀ#?d À“¨'Øðn @  HÑ€Á#?d ”¨LxîÆ @  HÒ€Â#?d @”¨Îéù @  HÓ€Ã#?d €”¨o×®ô @  HÔ€Ä#?d À”¨íF¹* @  HÕ€Å#?d •¨OàØe @  HÖ€Æ#?d @•¨ÍqÏ» @  H×€Ç#?d €•¨ÿ¤ßç @  HØ€È#?d À•¨}5È9 @  HÙ€É#?d –¨’Ÿ…_ @  HÚ€Ê#?d @–¨’ @  HÛ€Ë#?d €–¨±0Åm @  HÜ€Ì#?d À–¨3¡Ò³ @  HÝ€Í#?d —¨‘³ü @  HÞ€Î#?d @—¨–¤" @  H߀Ï#?d €—¨ø´Ï @  Hà€Ð#?d À—¨z%Ø @  Há€Ñ#?d ˜¨<4¹¦ @  Hâ€Ò#?d€ @˜¨Êf²Þ @  I€Ó#?d €˜¨Š­ @  I€Ô#?d À˜¨ˆºÅ @  I€Õ#?d ™¨og g @  I€Ö#?d @™¨íö7¹ @  I€×#?d €™¨‘xŸ @  I€Ø#?d À™¨“oA @  I€Ù#?d š¨²}] @  I€Ú#?d @š¨0‰jƒ @  I €Û#?d €š¨TþÆ‚ @  I €Ü#?d Àš¨ÖoÑ\ @  I €Ý#?d ›¨±€Kþ @  I €Þ#?d @›¨3\  @  I €ß#?d €›¨7‘H6 @  I€à#?d À›¨µ_è @  I€á#?d œ¨½³ Ú @  I€â#?d @œ¨?"7 @  I€ã#?d €œ¨[U› @  I€ä#?d Àœ¨ÙÄŒÛ @  I€å#?d ¨¾+y @  I€æ#?d @¨<º§ @  I€ç#?d €¨ÀÝN @  I€è#?d À¨BLY_ @  I€é#?d ž¨cTKC @  I€ê#?d @ž¨áÅ\ @  I€ë#?d €ž¨…²ðœ @  I€ì#?d Àž¨#çB @  I€í#?d Ÿ¨`Ì}à @  I€î#?d @Ÿ¨â]j> @  I€ï#?d €Ÿ¨{jGô @  I€ð#uР¨?d ÀŸ¨ùûP* @  I€ñ#?d  ¨õ‹V½ @  I ò#?d X ¨wAc @  I!ó#?d ˜ ¨míb @  I"ô#?d Ø ¨‘üú¼ @  I#õ#?d ¡¨ö` @  I$ö#?d X¡¨t‚wÀ @  I%÷#?d ˜¡¨ˆå8æ @  I&ø#?d Ø¡¨ t/8 @  I'ù#?d ¢¨+l=$ @  I(ú#?d X¢¨©ý*ú @  I)û#?d ˜¢¨ÍІû @  I*ü#?d Ø¢¨O‘% @  I+ý#?d £¨(ô ‡ @  I,þ#?d X£¨ªeY @  I-ÿ#?d ˜£¨#V @  I.$?d Ø£¨‚Œ4ˆ @  I/$?d ¤¨Š?Kº @  I0$?d X¤¨®\d @  I1$?d ˜¤¨lÙðe @  I2$?d ؤ¨îHç» @  I3$?d ¥¨‰§} @  I4$?d X¥¨ 6jÇ @  I5$?d ˜¥¨÷Q%á @  I6$?d Ø¥¨uÀ2? @  I7 $?d ¦¨TØ # @  I8 $?d X¦¨ÖI7ý @  I9 $?d ˜¦¨²>›ü @  I: $?d ئ¨0¯Œ" @  I; $?d §¨W@€ @  I<$?d X§¨ÕÑ^ @  I=$?d ˜§¨Læ,” @  I>$?d ا¨Îw;J @  I?$?d ¨¨TtH @  I@$?d X¨¨Öå – @  IA$?d ˜¨¨²’¡— @  IB$?d ب¨0¶I @  IC$?d ©¨Wì,ë @  ID$?d X©¨Õ};5 @  IE$?d ˜©¨)t @  IF$?d Ø©¨«‹cÍ @  IG$?d ª¨Š“qÑ @  IH$?d Xª¨f @  II$?d ˜ª¨luÊ @  IJ$?d ت¨îäÝÐ @  IK$?d «¨‰ Gr @  IL$?d X«¨ šP¬ @  IM$?d ˜«¨Dº @  IN $?d Ø«¨‹Sd @  IO!$?d ¬¨…8,V @  IP"$?d X¬¨©;ˆ @  IQ#$?d ˜¬¨cÞ—‰ @  IR$$?d ج¨áO€W @  IS%$?d ­¨† õ @  IT&$?d X­¨1 + @  IU'$?d ˜­¨øVB  @  IV($?d Ø­¨zÇUÓ @  IW)$?d ®¨[ßGÏ @  IX*$?d X®¨ÙNP @  IY+$?d ˜®¨½9ü @  IZ,$?d Ø®¨?¨ëÎ @  I[-$?d ¯¨XGql @  I\.$?d X¯¨ÚÖf² @  I]/$?d ˜¯¨CáKx @  I^0$?d د¨Áp\¦ @  I_1$?d °¨UK™ @  I`2$?d X°¨ýÄ\G @  Ia3$?d ˜°¨™³ðF @  Ib4$?d ذ¨"ç˜ @  Ic5$?d ±¨|Í}: @  Id6$?d X±¨þ\jä @  Ie7$?d ˜±¨;% @  If8$?d ر¨€ª2 @  Ig9$?d ²¨¡²  @  Ih:$?d X²¨##7Þ @  Ii;$?d ˜²¨GT›ß @  Ij<$?d ز¨ÅÅŒ @  Ik=$?d ³¨¢*£ @  Il>$?d X³¨ »} @  Im?$?d ˜³¨Ôkz @  In@$?d س¨Vú¤ @  IoA$?d ´¨^Ih– @  IpB$?d X´¨ÜØH @  IqC$?d ˜´¨¸¯ÓI @  IrD$?d Ø´¨:>Ä— @  IsE$?d µ¨]Ñ^5 @  ItF$?d Xµ¨ß@Ië @  IuG$?d ˜µ¨#'Í @  IvH$?d ص¨¡¶ @  IwI$?d ¶¨€® @  IxJ$?d X¶¨?Ñ @  IyK$?d ˜¶¨fH¸Ð @  IzL$?d ض¨äÙ¯ @  I{M$?d ·¨ƒ65¬ @  I|N$?d X·¨§"r @  I}O$?d ˜·¨˜¸ @  I~P$?d Ø·¨f @  IQ$?d ¸¨cT U @  I€R$?d X¸¨áÅ‹ @  IS$?d ˜¸¨…²²Š @  I‚T$?d ظ¨#¥T @  IƒU$?d ¹¨`Ì?ö @  I„V$?d X¹¨â](( @  I…W$?d ˜¹¨:g @  I†X$?d ع¨œ«pÐ @  I‡Y$?d º¨½³bÌ @  IˆZ$?d Xº¨?"u @  I‰[$?d ˜º¨[UÙ @  IŠ\$?d غ¨ÙÄÎÍ @  I‹]$?d »¨¾+To @  IŒ^$?d X»¨<ºC± @  I_$?d ˜»¨8:W§ @  IŽ`$?d Ø»¨º«@y @  Ia$?d ¼¨²?K @  Ib$?d X¼¨0‰(• @  I‘c$?d ˜¼¨Tþ„” @  I’d$?d ؼ¨Öo“J @  I“e$?d ½¨±€ è @  I”f$?d X½¨36 @  I•g$?d ˜½¨ÏvQ @  I–h$?d ؽ¨MçFÎ @  I—i$?d ¾¨lÿTÒ @  I˜j$?d X¾¨înC  @  I™k$?d ˜¾¨Šï  @  Išl$?d ؾ¨ˆøÓ @  I›m$?d ¿¨ogbq @  Iœn$?d X¿¨íöu¯ @  Io$?d ˜¿¨tÁXe @uÐÀ¨  Ižp$?d Ø¿¨‹Ð<Ç @  IŸ€q$?d 0À¨ïÛÆ @  I €r$?d pÀ¨mJÑÆ @  I¡€s$?d °À¨ =}Ç @  I¢€t$?d ðÀ¨‹¬j @  I£€u$?d 0Á¨ìCð» @  I¤€v$?d pÁ¨nÒçe @  I¥€w$?d °Á¨’µ¨C @  I¦€x$?d ðÁ¨$¿ @  I§€y$?d 0¨1<­ @  I¨€z$?d p¨³­º_ @  I©€{$?d °Â¨×Ú^ @  Iª€|$?d ð¨UK€ @  I«€}$?d 0è2¤›" @  I¬€~$?d pè°5Œü @  I­€$?d °Ã¨Y#Ùi @  I®€€$?d ðè۲η @  I¯€$?d 0ĨÓ±… @  I°€‚$?d pĨQ¦[ @  I±€ƒ$?d °Ä¨5ç Z @  I²€„$?d ðĨ·v„ @  I³€…$?d 0ŨЙ‡& @  I´€†$?d pŨRø @  Iµ€‡$?d °Å¨®oßÞ @  I¶€ˆ$?d ðŨ,þÈ @  I·€‰$?d 0ƨ æÚ @  I¸€Š$?d pƨwÍ @  I¹€‹$?d °Æ¨ëaà @  Iº€Œ$?d ðƨi‘v @  I»€$?d 0Ǩ~ì¿ @  I¼€Ž$?d pǨŒïûa @  I½€$?d °Ç¨ØÖ« @  I¾€$?d ðǨ—IÁu @  I¿€‘$?d 0Ȩ Jàw @  IÀ€’$?d pȨÛ÷© @  IÁ€“$?d °È¨ë¬[¨ @  I€”$?d ðȨi=Lv @  IÀ•$?d 0ɨÒÖÔ @  IÄ€–$?d pɨŒCÁ  @  IÅ€—$?d °É¨p$Ž, @  IÆ€˜$?d ðɨòµ™ò @  IÇ€™$?d 0ʨÓ­‹î @  IÈ€š$?d pʨQ<œ0 @  IÉ€›$?d °Ê¨5K01 @  IÊ€œ$?d ðʨ·Ú'ï @  IË€$?d 0˨Ð5½M @  IÌ€ž$?d p˨R¤ª“ @  IÍ€Ÿ$?d °Ë¨V$¾… @  I΀ $?d ð˨Ôµ©[ @  IÏ€¡$?d 0̨ÜÖi @  IЀ¢$?d p̨^—Á· @  IÑ€£$?d °Ì¨:àm¶ @  IÒ€¤$?d ð̨¸qzh @  IÓ€¥$?d 0ͨßžàÊ @  IÔ€¦$?d pͨ]÷ @  IÕ€§$?d °Í¨¡h¸2 @  IÖ€¨$?d ðͨ#ù¯ì @  I×€©$?d 0Ψá½ð @  IØ€ª$?d pΨ€pª. @  IÙ€«$?d °Î¨ä/ @  IÚ€¬$?d ðΨf–ñ @  IÛ€­$?d 0Ϩy‹S @  IÜ€®$?d pϨƒèœ @  IÝ€¯$?d °Ï¨ß±G @  IÞ€°$?d ðϨ˜N¦™ @  I߀±$?d 0Ш&k±¦ @  Ià€²$?d pШ¤ú¦x @  Iဳ$?d °Ð¨À y @  I‴$?d€ ðШƒ[ê§ @  J€µ$?d 0Ѩõ8, @  J€¶$?d pѨ‡d/ò @  J€·$?d °Ñ¨¾J›9 @  J€¸$?d ðѨ<ÛŒç @  J€¹$?d 0Ò¨ÓqÁ @  J€º$?d pÒ¨QàÖ_ @  J€»$?d °Ò¨û%%$ @  J€¼$?d ðÒ¨y´2ú @  J €½$?d 0Ó¨ÛSµ @  J €¾$?d pÓ¨YƒDk @  J €¿$?d °Ó¨h¾ @  J €À$?d ðӨꋩ_ @  J €Á$?d 0Ô¨+·÷ @  J€Â$?d pÔ¨º ) @  J€Ã$?d °Ô¨Þm² @  J€Ä$?d ðÔ¨†Ozl @  J€Å$?d 0Õ¨$é# @  J€Æ$?d pÕ¨¦x ý @  J€Ç$?d °Õ¨ŸV¸6 @  J€È$?d ðÕ¨ǯè @  J€É$?d 0Ö¨òm⎠@  J€Ê$?d pÖ¨püõP @  J€Ë$?d °Ö¨Ú9+ @  J€Ì$?d ðÖ¨X¨õ @  J€Í$?d 0רúpº @  J€Î$?d pרxŸgd @  J€Ï$?d °×¨$á±C @  J€Ð$?d ðר¦p¦ @  J€Ñ$?d 0بàaÇ' @  J€Ò$?d pبbðÐù @  J€Ó$?d °Ø¨t’:Ò @  J €Ô$?d ðبö-  @  J!€Õ$?d 0Ù¨T¥LC @  J"€Ö$?d pÙ¨Ö4[ @  J#€×$?d °Ù¨ïïV @  J$€Ø$?d ðÙ¨m‹øˆ @  J%€Ù$?d 0Ú¨‚!µî @  J&€Ú$?d pÚ¨°¢0 @  J'€Û$?d °Ú¨ªuQK @  J(€Ü$?d ðÚ¨(äF• @  J)€Ý$?d 0Û¨ŠB'Ú @  J*€Þ$?d pÛ¨Ó0 @  J+€ß$?d °Û¨Éßÿ @  J,€à$?d ðÛ¨K‹È! @  J-€á$?d 0ܨ +Ö‰ @  J.€â$?d pܨ¢ºÁW @  J/€ã$?d °Ü¨¥Þ Ì @  J0€ä$?d ðܨ'O @  J1€å$?d 0ݨ…éz] @  J2€æ$?d pݨxmƒ @  J3€ç$?d °Ý¨>VÙH @  J4€è$?d ðݨ¼ÇΖ @  J5€é$?d 0Þ¨Smƒð @  J6€ê$?d pÞ¨Ñü”. @  J7€ë$?d °Þ¨{9gU @  J8€ì$?d ðÞ¨ù¨p‹ @  J9€í$?d 0ߨ[Ä @  J:€î$?d pߨÙŸ @  J;€ï$?d uÐà¨/°ß¨…áÐ= @  J<€ð$?d ðߨpÇã @  J=€ñ$?d Hà¨l:t² @  J>€ò$?d ˆà¨LÏvL @  J?€ó$?d Èà¨VÎÕ @  J@€ô$?d ᨆ†= @  JA€õ$?d Há¨vùùD @  JB€ö$?d ˆá¨V ûº @  JC€÷$?d Èá¨ÍFZQ @  JD€ø$?d â¨Pú @  JE€ù$?d H⨠}é @  JF€ú$?d ˆâ¨€ˆ @  JG€û$?d È⨈)äL @  JH€ü$?d ã¨Xah¤ @  JI€ý$?d H㨨’Ý @  JJ€þ$?d ˆã¨ˆë# @  JK€ÿ$?d Èã¨y·~w @  JL€%?d ä¨`ùx @  JM€%?d H䨆w @  JN€%?d ˆä¨°suÿ @  JO€%?d Èä¨s­D @  JP€%?d å¨Å;!¬ @  JQ€%?d Hå¨5DÛÕ @  JR€%?d ˆå¨±Ù+ @  JS€%?d È娎ûxÀ @  JT€%?d æ¨¿Ø @  JU€ %?d Hæ¨ãÀ"x @  JV€ %?d ˆæ¨Ã5 † @  JW€ %?d Èæ¨Ë”ÆÝ @  JX€ %?d ç¨ÜJ5 @  JY€ %?d Hç¨룰L @  JZ€%?d ˆç¨ËV²² @  J[€%?d Èç¨5Lqµ @  J\€%?d 訳ý¨ @  J]€%?d Hè¨ñÌÑ @  J^€%?d ˆè¨Ñ9/ @  J_€%?d Èè¨e?ú$ @  J`€%?d 騵wvÌ @  Ja€%?d Hé¨EŒµ @  Jb€%?d ˆé¨eýŽK @  Jc€%?d Èé¨þ·/  @  Jd€%?d ê¨cóa @  Je€%?d HꨓŒu @  Jf€%?d ˆê¨³ywæ @  Jg€%?d È꨻ؑ½ @  Jh€%?d ë¨kU @  Ji€%?d H먛ïç, @  Jj€%?d ˆë¨»åÒ @  Jk€%?d Èë¨Ø·  @  Jl€ %?d ì¨Áùì @  Jm€!%?d Hì¨1† @  Jn€"%?d ˆì¨s @  Jo€#%?d È쨴sÌ: @  Jp€$%?d í¨d;@Ò @  Jq€%%?d Hí¨”Dº« @  Jr€&%?d ˆí¨´±¸U @  Js€'%?d Èí¨/û¾ @  Jt€(%?d ¿¹ @  Ju€)%?d Hî¨BÀC @  Jv€*%?d ˆî¨b5Aø @  Jw€+%?d Èî¨j”§£ @  Jx€,%?d 墨Ü+K @  Jy€-%?d Hï¨J£Ñ2 @  Jz€.%?d ˆï¨jVÓÌ @  J{€/%?d È﨔LË @  J|€0%?d ð¨*’¬y @  J}€1%?d Hð¨ÚíV @  J~€2%?d ˆð¨úTþ @  J€3%?d Èð¨OV @  J€€4%?d ñ¨Ó¾ @  J€5%?d Hñ¨#xëÇ @  J‚€6%?d ˆñ¨é9 @  Jƒ€7%?d Èñ¨˜ÇHÒ @  J„€8%?d ò¨ƒè @  J…€9%?d Hò¨õüj @  J†€:%?d ˆò¨Õ ” @  J‡€;%?d Èò¨ݨöÏ @  Jˆ€<%?d ó¨ àz' @  J‰€=%?d Hó¨ýŸ€^ @  JŠ€>%?d ˆó¨Ýj‚  @  J‹€?%?d Èó¨N—mj @  JŒ€@%?d ô¨WÙže @  J€A%?d Hô¨§¦d @  JŽ€B%?d ˆô¨‡Sfâ @  J€C%?d Èô¨"S¾Y @  J€D%?d õ¨ò2± @  J‘€E%?d Hõ¨dÈÈ @  J’€F%?d ˆõ¨"‘Ê6 @  J“€G%?d Èõ¨¹ÛkÝ @  J”€H%?d ö¨$ŸË @  J•€I%?d Hö¨Ôà1e @  J–€J%?d ˆö¨ô3› @  J—€K%?d Èö¨ü´ÕÀ @  J˜€L%?d ÷¨,üY( @  J™€M%?d H÷¨܃£Q @  Jš€N%?d ˆ÷¨üv¡¯ @  J›€O%?d È÷¨lb¨ @  Jœ€P%?d ø¨6“îµ @  J€Q%?d Hø¨ÆìÌ @  Jž€R%?d ˆø¨æ2 @  JŸ€S%?d Èø¨Ré9 @  J €T%?d ù¨‚WeÑ @  J¡€U%?d Hù¨r(Ÿ¨ @  J¢€V%?d ˆù¨RÝV @  J£€W%?d Èù¨É—<½ @  J¤€X%?d ú¨TÓœ| @  J¥€Y%?d Hú¨¤¬f @  J¦€Z%?d ˆú¨„Ydû @  J§€[%?d Èú¨Œø‚  @  J¨€\%?d û¨\°H @  J©€]%?d Hû¨¬Ïô1 @  Jª€^%?d ˆû¨Œ:öÏ @  J«€_%?d Èû¨ï—  @  J¬€`%?d ü¨öÙÿ @  J­€a%?d Hü¨¦b @  J®€b%?d ˆü¨&Sœ @  J¯€c%?d Èü¨ƒSß' @  J°€d%?d ý¨SSÏ @  J±€e%?d Hý¨£d©¶ @  J²€f%?d ˆý¨ƒ‘«H @  J³€g%?d Èý¨Û £ @  J´€h%?d þ¨…Ÿªb @  Jµ€i%?d Hþ¨uàP @  J¶€j%?d ˆþ¨URå @  J·€k%?d Èþ¨]´´¾ @  J¸€l%?d ÿ¨ü8V @  J¹€m%?d Hÿ¨}ƒÂ/ @  Jº€n%?d ˆÿ¨]vÀÑ @  J»€uЩo%?d Èÿ¨Þìpª @  J¼p%?d ©‘XX[ @  J½q%?d `©a'¢" @  J¾r%?d  ©AÒ Ü @  J¿s%?d à©[ÓYE @  JÀt%?d ©‹›Õ­ @  JÁu%?d `©{ä/Ô @  JÂv%?d  ©[-* @  JÃw%?d à©À[ŒÁ @  JÄx%?d ©], @  JÅy%?d `©­`Öy @  JÆz%?d  ©•Ô‡ @  JÇ{%?d à©…42Ü @  JÈ|%?d ©U|¾4 @  JÉ}%?d `©¥DM @  JÊ~%?d  ©…öF³ @  JË%?d à© Íýë @  JÌ€%?d ©ƒä @  JÍ%?d `©âüô @  J΂%?d  © öc @  Jσ%?d à©g .Ø @  JЄ%?d ©·A¢0 @  JÑ…%?d `©G>XI @  JÒ†%?d  ©gËZ· @  JÓ‡%?d à©üû\ @  JÔˆ%?d ©aÅ[ @  JÕ‰%?d `©‘º¡ä @  JÖŠ%?d  ©±O£ @  J׋%?d ੹îEA @  JØŒ%?d ©i¦É© @  JÙ%?d `©™Ù3Ð @  JÚŽ%?d  ©¹,1. @  JÛ%?d à©G6ò) @  JÜ%?d ©sÉ~4 @  JÝ‘%?d `©ƒ¶„M @  JÞ’%?d  ©£C†³ @  Jß“%?d à©Ey¸ @  Jà”%?d ©Ç õP @  Já•%?d ` ©7r) @  Jâ–%?d€   ©cDq @  K—%?d à ©Oø³ @  K˜%?d ©„ Xr @  K™%?d ` ©±=Yæ @  Kš%?d   ©‘È[ @  K›%?d à ©WÛâ9 @  Kœ%?d ©‡“nÑ @  K%?d ` ©¹^ËÒ @  Kž%?d   ©™«É, @  K Ÿ%?d à ©?OÈ @  K  %?d ©&; @  K ¡%?d ` ©7: @  K ¢%?d   ©3Â8 @  K £%?d à ©õÑ^ @  K¤%?d ©%™ ¶ @  K¥%?d ` ©¶õ–U @  K¦%?d   ©–”« @  K§%?d à ©Èέ @  K¨%?d ©UGnl @  K©%?d `©`qoø @  Kª%?d  ©@„m @  K«%?d ੆—Ô' @  K¬%?d ©VßXÏ @  K­%?d `©hýÌ @  K®%?d  ©Hçÿ2 @  K¯%?d à©s´ÇØ @  K°%?d ©Íj{j @  K±%?d `©ø\zþ @  K²%?d  ©Ø©x @  K³%?d ੺Á! @  K´%?d ©ÎòMÉ @  Kµ%?d `©L˜ñš @  K ¶%?d  ©lmód @  K!·%?d à©2n©b @  K"¸%?d ©¯* £ @  K#¹%?d `©š7 @  K$º%?d  ©ºé É @  K%»%?d à©|ú³è @  K&¼%?d ©¬²? @  K'½%?d `©’š @  K(¾%?d  ©²Š˜ý @  K)¿%?d à©ä>ŒÚ @  K*À%?d ©ýpÕ @  K+Á%?d `©ÈF~A @  K,Â%?d  ©è³|¿ @  K-Ã%?d à©. Åž @  K.Ä%?d ©þèIv @  K/Å%?d `©m„Ò• @  K0Æ%?d  ©MqÐk @  K1Ç%?d à©rŠm @  K2È%?d ©Ž6*¬ @  K3É%?d `©»+8 @  K4Ê%?d  ©›õ)Æ @  K5Ë%?d à©]æç @  K6Ì%?d ©® @  K7Í%?d `©³c¹  @  K8Î%?d  ©“–»ò @  K9Ï%?d ੨Ń @  K:Ð%?d ©œ: @  K;Ñ%?d `©© ‘ @  K<Ò%?d  ©‰ù o @  K=Ó%?d à©OêµN @  K>Ô%?d ©Ÿ¢9¦ @  K?Õ%?d `©³Ïƒg @  K@Ö%?d  ©“:™ @  KA×%?d à©Í9ÛŸ @  KBØ%?d ©P}{^ @  KCÙ%?d `©eKzÊ @  KDÚ%?d  ©E¾x4 @  KEÛ%?d ੃­Á @  KFÜ%?d ©SåMý @  KGÝ%?d `©m(èþ @  KHÞ%?d  ©MÝê @  KIß%?d à©ë9ë6 @  KJà%?d ©òw9 @  KKá%?d `©ÇA­ @  KLâ%?d  ©ç´S @  KMã%?d à©!§¢r @  KNä%?d ©ñï.š @  KOå%?d `©bƒµy @  KPæ%?d  ©Bv·‡ @  KQç%?d à©uí @  KRè%?d ©1M@ @  KSé%?d `©´LÔ @  KTê%?d  ©”òN* @  KUë%?d à©Rá÷  @  KVì%?d ©‚©{ã @  KWí%?d `©¼dÞà @  KXî%?d  ©œ‘ÜuÐ © @  KYï%?d à©§Âäô @  KZð%?d 8 ©ÖÉ:’ @  K[ñ%?d x ©ãÿ; @  K\ò%?d ¸ ©à 9ø @  K]ó%?d ø ©€Ù @  K^ô%?d 8!©ÕQ 1 @  K_õ%?d x!©W;°b @  K`ö%?d ¸!©wβœ @  Ka÷%?d ø!©)Íèš @  Kbø%?d 8"©´‰H[ @  Kcù%?d x"©¿IÏ @  Kdú%?d ¸"©¡JK1 @  Keû%?d ø"©gYò @  Kfü%?d 8#©·~ø @  Kgý%?d x#©‰ÜÛû @  Khþ%?d ¸#©©)Ù @  Kiÿ%?d ø#©/ù™ @  Kj&?d 8$©6P – @  Kk&?d x$©f  @  Kl&?d ¸$©#“ ü @  Km&?d ø$©倰Ý @  Kn&?d 8%©5È<5 @  Ko&?d x%©¦¤§Ö @  Kp&?d ¸%©†Q¥( @  Kq&?d ø%©ØRÿ. @  Kr&?d 8&©E_ï @  Ks &?d x&©p ^{ @  Kt &?d ¸&©PÕ\… @  Ku &?d ø&©–Æå¤ @  Kv &?d 8'©FŽiL @  Kw &?d x'©xCÌO @  Kx&?d ¸'©X¶Î± @  Ky&?d ø'©cåö[ @  Kz&?d 8(©WzF @  K{&?d x(©b,{Ò @  K|&?d ¸(©BÙy, @  K}&?d ø(©„ÊÀ  @  K~&?d 8)©T‚Lå @  K&?d x)©›¹Æ @  K€&?d ¸)©»LÄë @  K&?d ø)©åOží @  K‚&?d 8*©x >, @  Kƒ&?d x*©M=?¸ @  K„&?d ¸*©mÈ=F @  K…&?d ø*©«Û„g @  K†&?d 8+©{“ @  K‡&?d x+©E^­Œ @  Kˆ&?d ¸+©e«¯r @  K‰&?d ø+©ÃO®D @  KŠ &?d 8,©Ú]K @  K‹!&?d x,©ï7\ß @  KŒ"&?d ¸,©ÏÂ^! @  K#&?d ø,© Ñç @  KŽ$&?d 8-©Ù™kè @  K%&?d x-©Jõð  @  K&&?d ¸-©jòõ @  K‘'&?d ø-©4¨ó @  K’(&?d 8.©©G2 @  K“)&?d x.©œq ¦ @  K”*&?d ¸.©¼„ X @  K•+&?d ø.©z—²y @  K–,&?d 8/©ªß>‘ @  K—-&?d x/©”›’ @  K˜.&?d ¸/©´ç™l @  K™/&?d ø/©´¡† @  Kš0&?d 80©1j4 @  K›1&?d x0©\  @  Kœ2&?d ¸0©$©^ @  K3&?d ø0©⺧ @  Kž4&?d 81©2ò+— @  KŸ5&?d x1©°˜—Ä @  K 6&?d ¸1©m•: @  K¡7&?d ø1©ÎnÏ< @  K¢8&?d 82©S*oý @  K£9&?d x2©fni @  K¤:&?d ¸2©Fél— @  K¥;&?d ø2©€úÕ¶ @  K¦<&?d 83©P²Y^ @  K§=&?d x3©nü] @  K¨>&?d ¸3©NŠþ£ @  K©?&?d ø3©>ê„ @  Kª@&?d 84©p‹ @  K«A&?d x4©4F @  K¬B&?d ¸4©³á @  K­C&?d ø4©Ò £À @  K®D&?d 85©è/( @  K¯E&?d x5©‘„´Ë @  K°F&?d ¸5©±q¶5 @  K±G&?d ø5©ïrì3 @  K²H&?d 86©r6Lò @  K³I&?d x6©GMf @  K´J&?d ¸6©gõO˜ @  KµK&?d ø6©¡æö¹ @  K¶L&?d 87©q®zQ @  K·M&?d x7©OcßR @  K¸N&?d ¸7©o–ݬ @  K¹O&?d ø7©TÅåF @  KºP&?d 88©`:i[ @  K»Q&?d x8©U hÏ @  K¼R&?d ¸8©uùj1 @  K½S&?d ø8©³êÓ @  K¾T&?d 89©c¢_ø @  K¿U&?d x9©OÏå9 @  KÀV&?d ¸9©o:çÇ @  KÁW&?d ø9©19½Á @  KÂX&?d 8:©¬} @  KÃY&?d x:©™K” @  KÄZ&?d ¸:©¹¾j @  KÅ[&?d ø:©­§K @  KÆ\&?d 8;©¯å+£ @  KÇ]&?d x;©‘(Ž  @  KÈ^&?d ¸;©±ÝŒ^ @  KÉ_&?d ø;©9h @  KÊ`&?d 8<©w~g @  KËa&?d x<©;Aó @  KÌb&?d ¸<©´}  @  KÍc&?d ø<©ݧÄ, @  KÎd&?d 8=© ïHÄ @  KÏe&?d x=©žƒÓ' @  KÐf&?d ¸=©¾vÑÙ @  KÑg&?d ø=©àu‹ß @  KÒh&?d 8>©}1+ @  KÓi&?d x>©H*Š @  KÔj&?d ¸>©hò(t @  KÕk&?d ø>©®á‘U @  KÖl&?d 8?©~©½ @  K×m&?d x?©@d¸¾ @  KØn&?duÐ@©7 ¸?©`‘º@ @  KÙo&?d ø?©&BñÖ @  KÚ€p&?d P@©åîKê @  KÛ€q&?d @©r¼_^ @  KÜ€r&?d Ð@©ð-H€ @  KÝ€s&?d A©dçj— @  KÞ€t&?d PA©æv}I @  K߀u&?d A©ÆxÔ: @  Kà€v&?d ÐA©DéÃä @  Ká€w&?d B©?.ý @  Kâ€x&?d€ PB©ø‘š @  L€y&?d B©wëÍ @  L€z&?d ÐB©õzÚÙ @  L€{&?d C©¤ù# @  L€|&?d PC©&hý @  L€}&?d C©tsû¤ @  L€~&?d ÐC©öâìz @  L€&?d D©èýd @  L€€&?d PD©jlº @  L €&?d D©8wïã @  L €‚&?d ÐD©ºæø= @  L €ƒ&?d E©ëe!Ç @  L €„&?d PE©iô6 @  L €…&?d E©;ïÙ@ @  L€†&?d ÐE©¹~Ξ @  L€‡&?d F©›»B @  L€ˆ&?d PF©*Uà @  L€‰&?d F©K1ºš @  L€Š&?d ÐF©É ­D @  L€‹&?d G©˜#t¾ @  L€Œ&?d PG©²c` @  L€&?d G©H©Œ9 @  L€Ž&?d ÐG©Ê8›ç @  L€&?d H©‰·g´ @  L€&?d PH© &pj @  L€‘&?d H©Y=Ÿ3 @  L€’&?d ÐH©Û¬ˆí @  L€“&?d I©Š/Q @  L€”&?d PI©¾FÉ @  L€•&?d I©Z¥© @  L€–&?d ÐI©Ø4¾N @  L€—&?d J©ë÷} @  L €˜&?d PJ©if£ @  L!€™&?d J©;}íú @  L"€š&?d ÐJ©¹ìú$ @  L#€›&?d K©èo#Þ @  L$€œ&?d PK©jþ4 @  L%€&?d K©8åÛY @  L&€ž&?d ÐK©ºṫ @  L'€Ÿ&?d L©Iýv @  L(€ &?d PL©ËlaÄ @  L)€¡&?d L©™wŽ @  L*€¢&?d ÐL©æ™C @  L+€£&?d M©Je@¹ @  L,€¤&?d PM©ÈôWg @  L-€¥&?d M©šï¸> @  L.€¦&?d ÐM©~¯à @  L/€§&?d N©:»#c @  L0€¨&?d PN©¸*4½ @  L1€©&?d N©ê1Ûä @  L2€ª&?d ÐN©h Ì: @  L3€«&?d O©9#À @  L4€¬&?d PO©»² @  L5€­&?d O©é©íG @  L6€®&?d ÐO©k8ú™ @  L7€¯&?d P©¢–6e @  L8€°&?d PP© !» @  L9€±&?d P©rÎâ @  L:€²&?d ÐP©ðÙ< @  L;€³&?d Q©¡Æ @  L<€´&?d PQ©#Ÿ @  L=€µ&?d Q©q„øA @  L>€¶&?d ÐQ©óïŸ @  L?€·&?d R©nÑB> @  L@€¸&?d PR©ì@Uà @  LA€¹&?d R©¾[º¹ @  LB€º&?d ÐR©<Ê­g @  LC€»&?d S©mIt @  LD€¼&?d PS©ïØcC @  LE€½&?d S©½ÃŒ @  LF€¾&?d ÐS©?R›Ä @  LG€¿&?d T©<‹4H @  LH€À&?d PT©¾#– @  LI€Á&?d T©ìÌÏ @  LJ€Â&?d ÐT©nÛ @  LK€Ã&?d U©?ë @  LL€Ä&?d PU©½‚5 @  LM€Å&?d U©ï™úl @  LN€Æ&?d ÐU©mí² @  LO€Ç&?d V©OÍa1 @  LP€È&?d PV©Í\vï @  LQ€É&?d V©ŸG™¶ @  LR€Ê&?d ÐV©ÖŽh @  LS€Ë&?d W©LUW’ @  LT€Ì&?d PW©ÎÄ@L @  LU€Í&?d W©œß¯ @  LV€Î&?d ÐW©N¸Ë @  LW€Ï&?d X©]ÁD˜ @  LX€Ð&?d PX©ßPSF @  LY€Ñ&?d X©K¼ @  LZ€Ò&?d ÐX©Ú«Á @  L[€Ó&?d Y©^Yr; @  L\€Ô&?d PY©ÜÈeå @  L]€Õ&?d Y©ŽÓм @  L^€Ö&?d ÐY© Bb @  L_€×&?d Z©?6Q @  L`€Ø&?d PZ©½! @  La€Ù&?d Z©ï ÎÖ @  Lb€Ú&?d ÐZ©mšÙ @  Lc€Û&?d [©<ò @  Ld€Ü&?d P[©¾ˆ, @  Le€Ý&?d [©ì“øu @  Lf€Þ&?d Ð[©nï« @  Lg€ß&?d \©‹U6 @  Lh€à&?d P\©Bè @  Li€á&?d \©M­± @  Lj€â&?d Ð\©Ϻo @  Lk€ã&?d ]©žc• @  Ll€ä&?d P]©‚tK @  Lm€å&?d ]©N™› @  Ln€æ&?d Ð]©ÌŒÌ @  Lo€ç&?d ^©îÍO @  Lp€è&?d P^©l\‘ @  Lq€é&?d ^©>GøÈ @  Lr€ê&?d Ð^©¼Öï @  Ls€ë&?d _©íU6ì @  Lt€ì&?d P_©oÄ!2 @  Lu€í&?d _©=ßÎk @  LuÐ`©v€î&?d Ð_©ÂΪÉ @  Lwï&?d (`© Fo @  Lxð&?d h`©‰×xÁ @  Lyñ&?d ¨`©ÛÌ—˜ @  Lzò&?d è`©Y]€F @  L{ó&?d (a©ÞY¼ @  L|ô&?d ha©ŠONb @  L}õ&?d ¨a©ØT¡; @  L~ö&?d èa©ZŶå @  L÷&?d (b©$W+u @  L€ø&?d hb©¦Æ<« @  Lù&?d ¨b©ôÝÓò @  L‚ú&?d èb©vLÄ, @  Lƒû&?d (c©'ÏÖ @  L„ü&?d hc©¥^  @  L…ý&?d ¨c©÷EåQ @  L†þ&?d èc©uÔò @  L‡ÿ&?d (d©¬\ @  Lˆ'?d hd©–=KC @  L‰'?d ¨d©Ä&¤ @  LŠ'?d èd©F·³Ä @  L‹'?d (e©4j> @  LŒ'?d he©•¥}à @  L'?d ¨e©Ǿ’¹ @  LŽ'?d èe©E/…g @  L'?d (f©gê ä @  L'?d hf©å{: @  L‘ '?d ¨f©·`ñc @  L’ '?d èf©5ñæ½ @  L“ '?d (g©dr?G @  L” '?d hg©æã(™ @  L• '?d ¨g©´øÇÀ @  L–'?d èg©6iÐ @  L—'?d (h©uæ,M @  L˜'?d hh©÷w;“ @  L™'?d ¨h©¥lÔÊ @  Lš'?d èh©'ýà @  L›'?d (i©v~î @  Lœ'?d hi©ôï 0 @  L'?d ¨i©¦ôâi @  Lž'?d èi©$eõ· @  LŸ'?d (j©¦^„ @  L '?d hj©•7IZ @  L¡'?d ¨j©Ç,¦ @  L¢'?d èj©E½±Ý @  L£'?d (k©>h' @  L¤'?d hk©–¯ù @  L¥'?d ¨k©Ä´  @  L¦'?d èk©F%‡~ @  L§'?d (l©µ¬=ã @  L¨ '?d hl©7=*= @  L©!'?d ¨l©e&Åd @  Lª"'?d èl©ç·Òº @  L«#'?d (m©¶4 @ @  L¬$'?d hm©4¥ž @  L­%'?d ¨m©f¾óÇ @  L®&'?d èm©ä/ä @  L¯''?d (n©Æêhš @  L°('?d hn©D{D @  L±)'?d ¨n©` @  L²*'?d èn©”ñ‡Ã @  L³+'?d (o©År^9 @  L´,'?d ho©GãIç @  Lµ-'?d ¨o©ø¦¾ @  L¶.'?d èo©—i±` @  L·/'?d (p©^Ç}œ @  L¸0'?d hp©ÜVjB @  L¹1'?d ¨p©ŽM… @  Lº2'?d èp© Ü’Å @  L»3'?d (q©]_K? @  L¼4'?d hq©ßÎ\á @  L½5'?d ¨q©Õ³¸ @  L¾6'?d èq©D¤f @  L¿7'?d (r©’€ Ç @  LÀ8'?d hr© @  LÁ9'?d ¨r©B ñ@ @  LÂ:'?d èr©À›æž @  LÃ;'?d (s©‘?d @  LÄ<'?d hs©‰(º @  LÅ='?d ¨s©A’Çã @  LÆ>'?d ès©ÃÐ= @  LÇ?'?d (t©ÀÚ± @  LÈ@'?d ht©BKho @  LÉA'?d ¨t©P‡6 @  LÊB'?d èt©’Áè @  LËC'?d (u©ÃBI @  LÌD'?d hu©AÓ^Ì @  LÍE'?d ¨u©ȱ• @  LÎF'?d èu©‘Y¦K @  LÏG'?d (v©³œ*È @  LÐH'?d hv©1 = @  LÑI'?d ¨v©cÒO @  LÒJ'?d èv©á‡Å‘ @  LÓK'?d (w©°k @  LÔL'?d hw©2• µ @  LÕM'?d ¨w©`Žäì @  LÖN'?d èw©âó2 @  L×O'?d (x©¡a @  LØP'?d hx©#¿ @  LÙQ'?d ¨x©q÷æ @  LÚR'?d èx©ó‹à8 @  LÛS'?d (y©¢9 @  LÜT'?d hy© ™. @  LÝU'?d ¨y©r‚ÁE @  LÞV'?d èy©ðÖ› @  LßW'?d (z©ÃÐ}¨ @  LàX'?d hz©AAjv @  LáY'?d ¨z©Z…/ @  LâZ'?d€ èz©åŽW @  M['?d ({©UÊ„ @  M\'?d h{©×[Z @  M]'?d ¨{©@ î @  M^'?d è{©˜ 0 @  M_'?d (|©ÿ£î× @  M`'?d h|©}2ù  @  Ma'?d ¨|©á›I* @  Mb'?d è|©c ^ô @  M c'?d (}©÷À|ã @  M d'?d h}©uQk= @  M e'?d ¨}©â‰ @  M f'?d è}©`’hW @  M g'?d (~©!D…N @  Mh'?d h~©£Õ’ @  Mi'?d ¨~©’ÝS @  Mj'?d è~©L  @  Mk'?d (©„†)š @  Ml'?d h©>D @  Mm'?d ¨©uЀ©'‘E*ð @  Mn'?d è©Ô=. @  Mo'?d @€©ýo,» @  M p'?d €€©Ýš.E @  M q'?d À€©ãW‹F @  M r'?d ©3® @  M s'?d @©õ ¾ @  M t'?d €©Õù¼q @  M u'?d À©àϽå @  M v'?d ‚©}‹$ @  M w'?d @‚©#ˆG" @  M x'?d €‚©}EÜ @  M y'?d À‚©ù @  M z'?d ƒ©Q_ug @  M! {'?d @ƒ©—LÌF @  M" |'?d €ƒ©·¹Î¸ @  M# }'?d Àƒ©‚Ï, @  M$ ~'?d „©›Á<# @  M% '?d @„©г|– @  M& €'?d €„©ðF~h @  M' '?d À„©΋Ûk @  M( ‚'?d …©ÃWƒ @  M) ƒ'?d @…©ØÐî¢ @  M* „'?d €…©ø%ì\ @  M+ …'?d À…©ÍíÈ @  M, †'?d †©PWM  @  M- ‡'?d @†©T @  M. ˆ'?d €†©.¡ñ @  M/ ‰'?d À†©½ÍŽ @  M0 Š'?d ‡©m…ú @  M1 ‹'?d @‡©«–»Û @  M2 Œ'?d €‡©‹c¹% @  M3 '?d À‡©¾U¸± @  M4 Ž'?d ˆ©Šª4¬ @  M5 '?d @ˆ©±ù F @  M6 '?d €ˆ©‘ ¸ @  M7 ‘'?d Àˆ©¯Á«» @  M8 ’'?d ‰©‰'S @  M9 “'?d @‰©¹šžr @  M: ”'?d €‰©™oœŒ @  M; •'?d À‰©¬Y @  M< –'?d Š©1=Ù @  M= —'?d @Š©ogß @  M> ˜'?d €Š©Oëe! @  M? ™'?d ÀŠ©c†ßà @  M@ š'?d ‹©³ÎS @  MA ›'?d @‹©uÝê) @  MB œ'?d €‹©U(è× @  MC '?d À‹©`éC @  MD ž'?d Œ©yPL @  ME Ÿ'?d @Œ©ß´z @  MF  '?d €Œ©ÿA„ @  MG ¡'?d ÀŒ©ÁŒ¼‡ @  MH ¢'?d ©Ä0o @  MI £'?d @©×׉N @  MJ ¤'?d €©÷"‹° @  MK ¥'?d À©ÂŠ$ @  ML ¦'?d Ž©_P*å @  MM §'?d @Ž©Spã @  MN ¨'?d €Ž©!¦r @  MO ©'?d ÀŽ©²Êéþ @  MP ª'?d ©b‚e @  MQ «'?d @©¤‘Ü7 @  MR ¬'?d €©„dÞÉ @  MS ­'?d À©±Rß] @  MT ®'?d ©Œcï @  MU ¯'?d @©4ß[ @  MV °'?d €©*Yû @  MW ±'?d À©*çüø @  MX ²'?d ‘©ú¯p @  MY ³'?d @‘©<¼É1 @  MZ ´'?d €‘©IËÏ @  M[ µ'?d À‘©)Ê[ @  M\ ¶'?d ’©´;jš @  M] ·'?d @’©ê80œ @  M^ ¸'?d €’©ÊÍ2b @  M_ ¹'?d À’©H§Ž1 @  M` º'?d “©˜ïÙ @  Ma »'?d @“©^ü»ø @  Mb ¼'?d €“©~ ¹ @  Mc ½'?d À“©K?¸’ @  Md ¾'?d ”©RqK @  Me ¿'?d @”©Å_º @  Mf À'?d €”©$0]D @  Mg Á'?d À”©ýøG @  Mh Â'?d •©ʵt¯ @  Mi Ã'?d @•© ¦ÍŽ @  Mj Ä'?d €•©,SÏp @  Mk Å'?d À•©eÎä @  Ml Æ'?d –©„!n% @  Mm Ç'?d @–©Ú"4# @  Mn È'?d €–©ú×6Ý @  Mo É'?d À–©i»­> @  Mp Ê'?d —©¹ó!Ö @  Mq Ë'?d @—©à˜÷ @  Mr Ì'?d €—©_š  @  Ms Í'?d À—©j#› @  Mt Î'?d ˜©^Ü€ @  Mu Ï'?d @˜©e/j @  Mv Ð'?d €˜©Ez-” @  Mw Ñ'?d À˜©{·ˆ— @  Mx Ò'?d ™©«ÿ @  My Ó'?d @™©mì½^ @  Mz Ô'?d €™©M¿  @  M{ Õ'?d À™©x/¾4 @  M| Ö'?d š©åkõ @  M} ×'?d @š©»hDó @  M~ Ø'?d €š©›F  @  M Ù'?d Àš©T¦Ìý @  M€ Ú'?d ›©„î@ @  M Û'?d @›©Býù4 @  M‚ Ü'?d €›©bûÊ @  Mƒ Ý'?d À›©W>ú^ @  M„ Þ'?d œ©Np Q @  M… ß'?d @œ©è”g @  M† à'?d €œ©Èa ™ @  M‡ á'?d Àœ©ö¬¯š @  Mˆ â'?d ©&ä#r @  M‰ ã'?d @©à÷šS @  MŠ ä'?d €©À˜­ @  M‹ å'?d À©õ4™9 @  MŒ æ'?d ž©hp9ø @  M ç'?d @ž©6scþ @  MŽ è'?d €ž©†a @  M é'?d Àž©…êúã @  M ê'?d Ÿ©U¢v  @  M‘ ë'?d @Ÿ©“±Ï* @  M’ ì'?d €Ÿ©³DÍÔ @  M“ í'uР©?d ÀŸ©†rÌ@ @  M” î'?d  ©ξÎó @  M•ï'?d X ©õíö @  M–ð'?d ˜ ©Õôç @  M—ñ'?d Ø ©ëÕQä @  M˜ò'?d ¡©;Ý  @  M™ó'?d X¡©ýŽd- @  Mšô'?d ˜¡©Ý{fÓ @  M›õ'?d Ø¡©èMgG @  Mœö'?d ¢©u dž @  M÷'?d X¢©+ € @  Mžø'?d ˜¢© ÿŸ~ @  MŸù'?d Ø¢©‰•#- @  M ú'?d £©YݯÅ @  M¡û'?d X£©ŸÎä @  M¢ü'?d ˜£©¿; @  M£ý'?d Ø£©Š Ž @  M¤þ'?d ¤©“Cæ @  M¥ÿ'?d X¤©BeÂ× @  M¦(?d ˜¤©bÀ) @  M§(?d ؤ©\]e* @  M¨(?d ¥©Œé @  M©(?d X¥©JPã @  Mª(?d ˜¥©jóR @  M«(?d Ø¥©_ÅS‰ @  M¬(?d ¦©ÂóH @  M­(?d X¦©œ‚©N @  M®(?d ˜¦©¼w«° @  M¯ (?d ئ©/0S @  M° (?d §©ÿS¼» @  M± (?d X§©9@š @  M² (?d ˜§©µd @  M³ (?d ا©,ƒð @  M´(?d ¨©|Ší @  Mµ(?d X¨©#/² @  M¶(?d ˜¨©Ú°ù @  M·(?d ب©=ú @  M¸(?d ©©í_™ @  M¹(?d X©©+L 3 @  Mº(?d ˜©© ¹"Í @  M»(?d Ø©©>#Y @  M¼(?d ª©£Ëƒ˜ @  M½(?d Xª©ýÈÙž @  M¾(?d ˜ª©Ý=Û` @  M¿(?d ت©ñPa¡ @  MÀ(?d «©!íI @  MÁ(?d X«©ç Th @  MÂ(?d ˜«©ÇþV– @  MÃ(?d Ø«©òÈW @  MÄ(?d ¬©놤  @  MÅ(?d X¬©Mb¥; @  MÆ (?d ˜¬©m—§Å @  MÇ!(?d ج©SZÆ @  MÈ"(?d ­©ƒŽ. @  MÉ#(?d X­©E7 @  MÊ$(?d ˜­©eô5ñ @  MË%(?d Ø­©PÂ4e @  MÌ&(?d ®©͆”¤ @  MÍ'(?d X®©“…΢ @  MÎ((?d ˜®©³pÌ\ @  MÏ)(?d Ø®© W¿ @  MÐ*(?d ¯©ðTÛW @  MÑ+(?d X¯©6Gbv @  MÒ,(?d ˜¯©²`ˆ @  MÓ-(?d د©#„a @  MÔ.(?d °©ZÝ® @  MÕ/(?d X°©¦ åD @  MÖ0(?d ˜°©†üçº @  M×1(?d ذ©¸1B¹ @  MØ2(?d ±©hyÎQ @  MÙ3(?d X±©®jwp @  MÚ4(?d ˜±©ŽŸuŽ @  MÛ5(?d ر©»©t @  MÜ6(?d ²©&íÔÛ @  MÝ7(?d X²©xîŽÝ @  MÞ8(?d ˜²©XŒ# @  Mß9(?d ز©Úq0p @  Mà:(?d ³© 9¼˜ @  Má;(?d X³©Ì*¹ @  Mâ<(?d€ ˜³©-˜ðG @  N=(?d س©ùï¹ú @  N>(?d ´©à¡Jõ @  N?(?d X´©s\¥? @  N@(?d ˜´©S©§Á @  NA(?d Ø´©£Ö]¸ @  NB(?d µ©sžÑP @  NC(?d Xµ©{?7  @  ND(?d ˜µ©[Ê5õ @  N E(?d ص©«µÏŒ @  N F(?d ¶©6ñoM @  N G(?d X¶©­»Î¦ @  N H(?d ˜¶©NÌX @  N I(?d ض©}16! @  NJ(?d ·©­yºÉ @  NK(?d X·©ybr @  NL(?d ˜·©(Œ`Œ @  NM(?d Ø·©Øóšõ @  NN(?d ¸©ì è @  NO(?d X¸©Õï @  NP(?d ˜¸©2ã× @  NQ(?d ظ©œ-h @  NR(?d ¹©Ô¡€ @  NS(?d X¹©uGÛ @  NT(?d ˜¹©:€E% @  NU(?d ع©Êÿ¿\ @  NV(?d º©W» @  NW(?d Xº©Ìñ¾v @  NX(?d ˜º©ì¼ˆ @  NY(?d غ©{Fñ @  NZ(?d »©Ì3Ê @  N[(?d X»©x55 @  N \(?d ˜»©XÀ7ì @  N!](?d Ø»©¨¿Í• @  N"^(?d ¼©±ñ>š @  N#_(?d X¼©Ò\ÄA @  N$`(?d ˜¼©ò©Æ¿ @  N%a(?d ؼ©Ö<Æ @  N&b(?d ½©Òž°. @  N'c(?d X½©Ú?Vu @  N(d(?d ˜½©úÊT‹ @  N)e(?d ؽ© µ®ò @  N*f(?d ¾©—ñ3 @  N+g(?d X¾© »¯Ø @  N,h(?d ˜¾©,N­& @  N-i(?d ؾ©Ü1W_ @  N.j(?d ¿© yÛ· @  N/k(?d X¿©©y  @  N0l(?d ˜¿©‰Œò @uÐÀ©  N1m(?d Ø¿©yóû‹ @  N2n(?d 0À©ªÙ @  N3o(?d pÀ©ãiÞ @  N4p(?d °À©Ãìk  @  N5q(?d ðÀ©3“‘Y @  N6r(?d 0Á©ãÛ± @  N7s(?d pÁ©ëzûê @  N8t(?d °Á©Ëù @  N9u(?d ðÁ©;ðm @  N:v(?d 0©¦´£¬ @  N;w(?d p©=þG @  N<x(?d °Â© ¹ @  N=y(?d ð©ítúÀ @  N>z(?d 0é= @  N€¼(?d °Ó©-.ÊÀ @  N½(?d ðÓ©ÝQ0¹ @  N‚¾(?d 0Ô©Äö @  Nƒ¿(?d pÔ©Wâ,| @  N„À(?d °Ô©w.‚ @  N…Á(?d ðÔ©‡hÔû @  N†Â(?d 0Õ©W X @  N‡Ã(?d pÕ©_¾H @  NˆÄ(?d °Õ©t¼¶ @  N‰Å(?d ðÕ© FÏ @  NŠÆ(?d 0Ö©Oæ @  N‹Ç(?d pÖ©‰Gå @  NŒÈ(?d °Ö©©ðE @  NÉ(?d ðÖ©Y¿b @  NŽÊ(?d 0ש‰Ç3Š @  NË(?d pש,Çë1 @  NÌ(?d °×© 2éÏ @  N‘Í(?d ðשüM¶ @  N’Î(?d 0Ø©ȲŸ« @  N“Ï(?d pØ©6¨\¬ @  N”Ð(?d °Ø©]^R @  N•Ñ(?d ðØ©æ"¤+ @  N–Ò(?d 0Ù©6j(à @  N—Ó(?d pÙ©>ËΘ @  N˜Ô(?d °Ù©>Ìf @  N™Õ(?d ðÙ©îA6 @  NšÖ(?d 0Ú©s–Þ @  N›×(?d pÚ©èO75 @  NœØ(?d °Ú©Ⱥ5Ë @  NÙ(?d ðÚ©8Åϲ @  NžÚ(?d 0Û©èCZ @  NŸÛ(?d pÛ©\‹¼Q @  N Ü(?d °Û©|~¾¯ @  N¡Ý(?d ðÛ©ŒDÖ @  N¢Þ(?d 0Ü©•O·Ù @  N£ß(?d pÜ©öâM @  N¤à(?d °Ü©ÖOü @  N¥á(?d ðÜ©&hµ… @  N¦â(?d 0Ý©ö 9m @  N§ã(?d pÝ©þß6 @  N¨ä(?d °Ý©ÞtÝÈ @  N©å(?d ðÝ©. '± @  Nªæ(?d 0Þ©³O‡p @  N«ç(?d pÞ©(&› @  N¬è(?d °Þ©ð$e @  N­é(?d ðÞ©øÞ @  N®ê(?d 0ß©(ÇRô @  N¯ë(?d pߩNJO @  N°ì(?d uÐà©/°ß©­2ˆ± @  N±í(?d ðß© Í´ @  N²€î(?d Hà©9i_B @  N³€ï(?d ˆà©e‰e @  N´€ð(?d Èà©熞» @  Nµ€ñ(?d á©E ÿô @  N¶€ò(?d Há©DZè* @  N·€ó(?d ˆá©mtQ @  N¸€ô(?d Èá©ïå  @  N¹€õ(?d â©OAé @  Nº€ö(?d Hâ©‚ÞV7 @  N»€÷(?d ˆâ©»ðâü @  N¼€ø(?d Èâ©9aõ" @  N½€ù(?d 㩛ǔm @  N¾€ú(?d Hã©Vƒ³ @  N¿€û(?d ˆã©¡3o  @  NÀ€ü(?d Èã©#¢xÔ @  NÁ€ý(?d ä©Hf| @  N€þ(?d Hä©Ê“q¢ @  NÀÿ(?d ˆä©™«ŠÖ @  NÄ€)?d Èä©: @  NÅ€)?d 婹œüG @  NÆ€)?d Hå©; ë™ @  NÇ€)?d ˆå©‘Èâ @  NÈ€)?d Èå©Y< @  NÉ€)?d æ©üóBZ @  NÊ€)?d Hæ©~bU„ @  NË€)?d ˆæ©GLáO @  NÌ€)?d Èæ©ÅÝö‘ @  NÍ€ )?d ç©g{—Þ @  N΀ )?d Hç©åê€ @  NÏ€ )?d ˆç©âŽM› @  NЀ )?d Èç©`ZE @  NÑ€ )?d è©&;ÿ @  NÒ€)?d H詤Ÿ,! @  NÓ€)?d ˆè©øáú @  NÔ€)?d Èè©zpíØ @  NÕ€)?d é©ØÖŒ— @  NÖ€)?d Hé©ZG›I @  N×€)?d ˆé©ð‚h2 @  NØ€)?d Èé©rì @  NÙ€)?d ꩹2Š @  NÚ€)?d Hê©(%T @  NÛ€)?d ˆê©&‘Ÿ @  NÜ€)?d Èꩤ—†A @  NÝ€)?d ë©1ç @  NÞ€)?d Hë©„ ðÐ @  N߀)?d ˆë©’Âû @  Nà€)?d Èë©S % @  Ná€)?d ì©{ó @  Nâ€)?d€ Hì©¡õ @  O€)?d ˆì©­)¿' @  O€ )?d Èì©/¸¨ù @  O€!)?d í©HW2[ @  O€")?d Hí©ÊÆ%… @  O€#)?d ˆí©®±‰„ @  O€$)?d Èí©, žZ @  O€%)?d î© 8ŒF @  O€&)?d Hî©©›˜ @  O €')?d ˆî©sÎÔ¾ @  O €()?d Èî©ñ_Ã` @  O €))?d ï©–°Y @  O €*)?d Hï©!N @  O €+)?d ˆï©pVâ @  O€,)?d Èï©òÇõà @  O€-)?d ð©]äÅL @  O€.)?d Hð©ßuÒ’ @  O€/)?d ˆð©FBÿX @  O€0)?d Èð©ÄÓè† @  O€1)?d ñ©£ @  O €>)?d Hô©‚ˆúà @  O!€?)?d ˆô©vXûç @  O"€@)?d Èô©ôÉì9 @  O#€A)?d õ©“&v› @  O$€B)?d Hõ©·aE @  O%€C)?d ˆõ©uÀÍD @  O&€D)?d Èõ©÷QÚš @  O'€E)?d ö©ÖIȆ @  O(€F)?d Hö©TØßX @  O)€G)?d ˆö©¨¿~ @  O*€H)?d Èö©*.‡  @  O+€I)?d ÷©MÁ @  O,€J)?d H÷©ÏP Ü @  O-€K)?d ˆ÷©«'¦Ý @  O.€L)?d È÷©)¶± @  O/€M)?d ø© ´±# @  O0€N)?d Hø©Ž%¦ý @  O1€O)?d ˆø©‹7 @  O2€P)?d Èø©•ƒœé @  O3€Q)?d ù©òlK @  O4€R)?d Hù©pý• @  O5€S)?d ˆù©н” @  O6€T)?d Èù©–ªJ @  O7€U)?d ú©·¸V @  O8€V)?d Hú©5’¯ˆ @  O9€W)?d ˆú©Éõà® @  O:€X)?d Èú©Kd÷p @  O;€Y)?d û©,‹mÒ @  O<€Z)?d Hû©®z  @  O=€[)?d ˆû©ÊmÖ  @  O>€\)?d Èû©HüÁÓ @  O?€])?d ü©ÿNŸÃ @  O@€^)?d Hü©}߈ @  OA€_)?d ˆü©y_œ  @  OB€`)?d Èü©û΋Õ @  OC€a)?d ý©œ!w @  OD€b)?d Hý©°© @  OE€c)?d ˆý©zǪ¨ @  OF€d)?d Èý©øV½v @  OG€e)?d þ©ÙN¯j @  OH€f)?d Hþ©[߸´ @  OI€g)?d ˆþ©§¸÷’ @  OJ€h)?d Èþ©%)àL @  OK€i)?d ÿ©BÆzî @  OL€j)?d Hÿ©ÀWm0 @  OM€k)?d ˆÿ©¤ Á1 @  ON€uЪl)?d Èÿ©[1¥“ @  OOm)?d ªN=a¹ @  OPn)?d `ª̬vg @  OQo)?d  ªU›[­ @  ORp)?d àª× Ls @  OSq)?d ª°åÖÑ @  OTr)?d `ª2tÁ @  OUs)?d  ªVm @  OVt)?d àªÔ’zÐ @  OWu)?d ªõŠhÌ @  OXv)?d `ªw @  OYw)?d  ª‹|04 @  OZx)?d ઠí'ê @  O[y)?d ªn½H @  O\z)?d `ª쓪– @  O]{)?d  ªˆä— @  O^|)?d ઠuI @  O_})?d ªÀIË @  O`~)?d `ª‘Q^ @  Oa)?d  ªxG € @  Ob€)?d àªúÖ^ @  Oc)?d ª9†ü @  Od‚)?d `ª¨‘" @  Oeƒ)?d  ª{ß=# @  Of„)?d àªùN*ý @  Og…)?d ªØV8á @  Oh†)?d `ªZÇ/? @  Oi‡)?d  ª¦ ` @  Ojˆ)?d àª$1wÇ @  Ok‰)?d ªCÞíe @  OlŠ)?d `ªÁOú» @  Om‹)?d  ª¥8Vº @  OnŒ)?d àª'©Ad @  Oo)?d ª«AD @  OpŽ)?d `ª€:Vš @  Oq)?d  ª {P @  Or)?d છœlŽ @  Os‘)?d ªüsö, @  Ot’)?d ` ª~âáò @  Ou“)?d   ª•Mó @  Ov”)?d à ª˜Z- @  Ow•)?d ª¹H1 @  Ox–)?d ` ª;_ï @  Oy—)?d   ªÇêÉ @  Oz˜)?d à ªE{ @  O{™)?d ª"”µ @  O|š)?d ` ª Šk @  O}›)?d   ªÄr&j @  O~œ)?d à ªFã1´ @  O)?d ª_• @  O€ž)?d ` ª–HK @  OŸ)?d   ª”\] @  O‚ )?d à ª‡Kƒ @  Oƒ¡)?d ªqhÑ! @  O„¢)?d ` ªóùÆÿ @  O…£)?d   ª—Žjþ @  O†¤)?d à ª}  @  O‡¥)?d ª4o< @  Oˆ¦)?d `ª¶–xâ @  O‰§)?d  ªJñ7Ä @  OЍ)?d àªÈ`  @  O‹©)?d ª¯º¸ @  OŒª)?d `ª-­f @  O«)?d  ªIig @  Oެ)?d àªËø¹ @  O­)?d ªdÛ&6 @  O®)?d `ªæJ1è @  O‘¯)?d  ª}" @  O’°)?d àªýì ü @  O“±)?d ªš‘^ @  O”²)?d `ª’†€ @  O•³)?d  ª|å* @  O–´)?d àªþt=_ @  O—µ)?d ªßl/C @  O˜¶)?d `ª]ý8 @  O™·)?d  ª¡šw» @  Oš¸)?d àª# `e @  O›¹)?d ªDäúÇ @  Oœº)?d `ªÆuí @  O»)?d  ª¢A @  Ož¼)?d ઠ“VÆ @  OŸ½)?d ª9&D @  O ¾)?d `ª»·š @  O¡¿)?d  ªOg @  O¢À)?d àªÍöC @  O£Á)?d ªª•á @  O¤Â)?d `ª(ˆ‚? @  O¥Ã)?d  ªLÿ.> @  O¦Ä)?d àªÎn9à @  O§Å)?d ªïv+ü @  O¨Æ)?d `ªmç<" @  O©Ç)?d  ª‘€s @  OªÈ)?d àªdÚ @  O«É)?d ªtþþx @  O¬Ê)?d `ªöoé¦ @  O­Ë)?d  ª’E§ @  O®Ì)?d ઉRy @  O¯Í)?d ª5‹RY @  O°Î)?d `ª·E‡ @  O±Ï)?d  ª.-hM @  O²Ð)?d બ¼“ @  O³Ñ)?d ªËSå1 @  O´Ò)?d `ªIÂòï @  OµÓ)?d  ª-µ^î @  O¶Ô)?d ય$I0 @  O·Õ)?d ªŽ<[, @  O¸Ö)?d `ª ­Lò @  O¹×)?d  ªðÊÔ @  OºØ)?d àªr[  @  O»Ù)?d ª´Ž¨ @  O¼Ú)?d `ª—%™v @  O½Û)?d  ªóR5w @  O¾Ü)?d àªqÃ"© @  O¿Ý)?d ªÆq|¹ @  OÀÞ)?d `ªDàkg @  OÁß)?d  ª@`q @  OÂà)?d àªÂñh¯ @  OÃá)?d ª¥ò  @  OÄâ)?d `ª'åÓ @  OÅã)?d  ªCøIÒ @  OÆä)?d àªÁi^  @  OÇå)?d ªàqL @  OÈæ)?d `ªbà[Î @  OÉç)?d  ªž‡è @  OÊè)?d àª6 @  OËé)?d ª{ù™” @  OÌê)?d `ªùhŽJ @  OÍë)?d  ª"KuÐ ª @  OÎì)?d ઎5• @  OÏí)?d 8 ªxgÎ @  OÐî)?d x ªýép @  OÑï)?d ¸ ªdÞ]Ú @  OÒð)?d ø ªæOJ @  OÓñ)?d 8!ª Ð¦ @  OÔò)?d x!ª1Çx @  OÕó)?d ¸!ªgFky @  OÖô)?d ø!ªå×|§ @  O×õ)?d 8"ªÄÏn» @  OØö)?d x"ªF^ye @  OÙ÷)?d ¸"ªº96C @  OÚø)?d ø"ª8¨! @  OÛù)?d 8#ª_G»? @  OÜú)?d x#ªÝÖ¬á @  OÝû)?d ¸#ª¹¡à @  OÞü)?d ø#ª;0> @  Oßý)?d 8$ª"…O¼ @  Oàþ)?d x$ª Xb @  Oáÿ)?d ¸$ª„GmÞ @  Oâ*?d€ ø$ªmŠ–î @  P*?d 8%ªë$De @  P*?d x%ªiµS» @  P*?d ¸%ªÈ‹W @  P*?d ø%ªJ‰ @  P*?d 8&ª¥°^ï @  P*?d x&ª'!I1 @  P*?d ¸&ªôYm @  P*?d ø&ª—eN³ @  P  *?d 8'ª5Ã/ü @  P  *?d x'ª·R8" @  P  *?d ¸'ªloÎ @  P  *?d ø'ª”ýx @  P  *?d 8(ªÒìª @  P*?d x(ªP}t @  P*?d ¸(ªªYB$ @  P*?d ø(ª(ÈUú @  P*?d 8)ªŠn4µ @  P*?d x)ªÿ#k @  P*?d ¸)ª©Át‡ @  P*?d ø)ª+PcY @  P*?d 8*ªÄú.? @  P*?d x*ªFk9á @  P*?d ¸*ªt¾)½ @  P*?d ø*ªö/>c @  P*?d 8+ªT‰_, @  P*?d x+ªÖHò @  P*?d ¸+ªw& @  P*?d ø+ªõ·À @  P*?d 8,ªžh @  P*?d x,ª†¶ @  P*?d ¸,ªjSŠ @  P  *?d ø,ªè‚DT @  P!!*?d 8-ªJ$% @  P""*?d x-ªȵ2Å @  P##*?d ¸-ªi‹e) @  P$$*?d ø-ªër÷ @  P%%*?d 8.ª°?‘ @  P&&*?d x.ª†!(O @  P''*?d ¸.ª´ô8 @  P((*?d ø.ª6e/Í @  P))*?d 8/ª”ÃN‚ @  P***?d x/ªRY\ @  P++*?d ¸/ª·l° @  P,,*?d ø/ª5ýn @  P--*?d 80ªùÍH{ @  P..*?d x0ª{\_¥ @  P//*?d ¸0ªxõ @  P00*?d ø0ªé+ @  P11*?d 81ª¡Oed @  P22*?d x1ª#Þrº @  P33*?d ¸1ª‚à%V @  P44*?d ø1ªq2ˆ @  P55*?d 82ªïÛî @  P66*?d x2ªmJh0 @  P77*?d ¸2ª_Ÿxl @  P88*?d ø2ªÝo² @  P99*?d 83ª¨ý @  P::*?d x3ªý9# @  P;;*?d ¸3ª\NÏ @  P<<*?d ø3ªÞ–Y @  P==*?d 84ªµ6G¹ @  P>>*?d x4ª7§Pg @  P??*?d ¸4ªeØ @  P@@*?d ø4ªô @  PAA*?d 85ª?RgI @  PBB*?d x5ª½Ãp— @  PCC*?d ¸5ªý'{ @  PDD*?d ø5ªžl0¥ @  PEE*?d 86ªqÆ}à @  PFF*?d x6ªóWj @  PGG*?d ¸6ªÁ‚zA @  PHH*?d ø6ªCmŸ @  PII*?d 87ªáµ Ð @  PJJ*?d x7ªc$ @  PKK*?d ¸7ªÂLâ @  PLL*?d ø7ª@‹[< @  PMM*?d 88ªš:† @  PNN*?d x8ª„ -X @  POO*?d ¸8ª~/a @  PPP*?d ø8ªü¾vÖ @  PQQ*?d 89ª^™ @  PRR*?d x9ª܉G @  PSS*?d ¸9ª}·W« @  PTT*?d ø9ªÿ&@u @  PUU*?d 8:ªŒ  @  PVV*?d x:ª’Í @  PWW*?d ¸:ª È ‘ @  PXX*?d ø:ª"YO @  PYY*?d 8;ª€ÿ| @  PZZ*?d x;ªnkÞ @  P[[*?d ¸;ª£P<2 @  P\\*?d ø;ª!Á+ì @  P]]*?d 8<ªJa5D @  P^^*?d x<ªÈð"š @  P__*?d ¸<ª¾ep¦ @  P``*?d ø<ª<ôgx @  Paa*?d 8=ªžR7 @  Pbb*?d x=ªÃé @  Pcc*?d ¸=ª½ýF @  Pdd*?d ø=ª?lQÛ @  Pee*?d 8>ªÐƽ @  Pff*?d x>ªRW c @  Pgg*?d ¸>ª`‚? @  Phh*?d ø>ªâ á @  Pii*?d 8?ª@µm® @  Pjj*?d x?ªÂ$zp @  Pkk*?duÐ@ª7 ¸?ªc-œ @  Pll*?d ø?ªá‹:B @  Pmm*?d P@ªPÉmÙ @  Pnn*?d @ªp< @  P‡‡*?d ÐFª–;@ @  Pˆˆ*?d GªF^·¨ @  P‰‰*?d PGª¶!MÑ @  PŠŠ*?d Gª–ÔO/ @  P‹‹*?d ÐGª•Ž ã @  PŒŒ*?d Hª¡qþ @  P*?d PHªQ{‡ @  PŽŽ*?d Hªqûyy @  P*?d ÐHª)»  @  P*?d Iªùó¬á @  P‘‘*?d PIª ŒV˜ @  P’’*?d Iª)yTf @  P““*?d ÐIª*#ª @  P””*?d Jª·g¶k @  P••*?d PJªGL @  P––*?d JªgíNì @  P——*?d ÐJª÷\K @  P˜˜*?d Kª'Çx @  P™™*?d PKª×k= @  Pšš*?d Kª÷ž?ÿ @  P››*?d ÐKªôÄ}3 @  Pœœ*?d Lª튎< @  P*?d PLªõtE @  Pžž*?d Lª=v» @  PŸŸ*?d ÐLªéñ1§ @  P  *?d Mª9¹½O @  P¡¡*?d PMªÉÆG6 @  P¢¢*?d Mªé3EÈ @  P££*?d ÐMªêi @  P¤¤*?d Nªw-§Å @  P¥¥*?d PNª‡R]¼ @  P¦¦*?d Nª§§_B @  P§§*?d ÐNª7Z> @  P¨¨*?d Oªç^ÖÖ @  P©©*?d POª!,¯ @  Pªª*?d Oª7Ô.Q @  P««*?d ÐOª4Žl @  P¬¬*?d PªŠPÐ/ @  P­­*?d PPªz/*V @  P®®*?d PªZÚ(¨ @  P¯¯*?d ÐPªšqØ @  P°°*?d QªÒÒý0 @  P±±*?d PQª"­I @  P²²*?d QªX· @  P³³*?d ÐQªG{ @  P´´*?d RªœFçº @  Pµµ*?d PRªl9à @  P¶¶*?d RªLÌ= @  P··*?d ÐRªÜ}A @  P¸¸*?d Sª 5–© @  P¹¹*?d PSªüJlÐ @  Pºº*?d SªÜ¿n. @  P»»*?d ÐSªßå,â @  P¼¼*?d TªÆ«ßí @  P½½*?d PTª6Ô%” @  P¾¾*?d Tª!'j @  P¿¿*?d ÐTªœ‡sõ @  PÀÀ*?d UªLÏÿ @  PÁÁ*?d PUª¼°d @  PÂÂ*?d UªœEš @  PÃÃ*?d ÐUªŸEV @  PÄÄ*?d Vª[å— @  PÅÅ*?d PVªò$î @  PÆÆ*?d VªÒÑ @  PÇÇ*?d ÐVªB`l @  PÈÈ*?d Wª’(”„ @  PÉÉ*?d PWªbWný @  PÊÊ*?d WªB¢l @  PËË*?d ÐWªAø.Ï @  PÌÌ*?d Xªu¢Ò @  PÍÍ*?d PXª…xX« @  PÎÎ*?d Xª¥ZU @  PÏÏ*?d ÐXªýÍ% @  PÐÐ*?d Yª-…Í @  PÑÑ*?d PYªÝúu´ @  PÒÒ*?d YªýwJ @  PÓÓ*?d ÐYªþU5† @  PÔÔ*?d Zªc•G @  PÕÕ*?d PZª“no> @  PÖÖ*?d Zª³›mÀ @  P××*?d ÐZª#*h¼ @  PØØ*?d [ªóbäT @  PÙÙ*?d P[ª- @  PÚÚ*?d [ª#èÓ @  PÛÛ*?d Ð[ª ²^ @  PÜÜ*?d \ª9ü­ @  PÝÝ*?d P\ªɃWi @  PÞÞ*?d \ªévU— @  Pßß*?d Ð\ª=‡‹ @  Pàà*?d ]ªíÏžc @  Páá*?d P]ª°d @  Pââ*?d€ ]ªI†zB @  Qã*?d Ð]ª«p§ @  Qä*?d ^ª6ÙÐf @  Qå*?d P^ªïÑò @  Qæ*?d ^ª#Ó  @  Qç*?d Ð^ª}‰  @  Qè*?d _ª­Qâ @  Qé*?d P_ª“œ á @  Qê*?d _ª³i¢ @  QuÐ`ª ë*?d Ð_ªuz> @  Q ì*?d (`ªË‚®¦ @  Q í*?d h`ªþ´¯2 @  Q î*?d ¨`ªÞA­Ì @  Q ï*?d è`ªå•& @  Qð*?d (aª5ZÎ @  Qñ*?d haª¦6‚- @  Qò*?d ¨aª†Ã€Ó @  Qó*?d èaª@Ð9ò @  Qô*?d (bªÝ”™3 @  Qõ*?d hbª袘§ @  Qö*?d ¨bªÈWšY @  Q÷*?d èbª–TÀ_ @  Qø*?d (cªFL· @  Qù*?d hcªxÑé´ @  Qú*?d ¨cªX$ëJ @  Qû*?d ècªž7Rk @  Qü*?d (dª‡y¡d @  Qý*?d hdª²O ð @  Qþ*?d ¨dª’º¢ @  Qÿ*?d èdª¦¯·· @  Q+?d (eªvç;_ @  Q+?d heªô‡  @  Q +?d ¨eªÔx…ò @  Q!+?d èeªk<Ó @  Q"+?d (fª/œ @  Q#+?d hfªº† @  Q$+?d ¨fªšìŸx @  Q%+?d èfªÄïÅ~ @  Q&+?d (gª§I– @  Q' +?d hgª*jì• @  Q( +?d ¨gª Ÿîk @  Q) +?d ègªÌŒWJ @  Q* +?d (hªøsÛW @  Q+ +?d hhªÍEÚà @  Q,+?d ¨hªí°Ø= @  Q-+?d èhªÖãà× @  Q.+?d (iª«l? @  Q/+?d hiª•Ç÷Ü @  Q0+?d ¨iªµ2õ" @  Q1+?d èiªs!L @  Q2+?d (jªîeì @  Q3+?d hjªÛSíV @  Q4+?d ¨jªû¦ï¨ @  Q5+?d èjª¥¥µ® @  Q6+?d (kªuí9F @  Q7+?d hkªK œE @  Q8+?d ¨kªkÕž» @  Q9+?d èkª­Æ'š @  Q:+?d (lª´ˆÔ• @  Q;+?d hlª¾Õ @  Q<+?d ¨lª¡K×ÿ @  Q=+?d èlª¯ÖÉ @  Q> +?d (mª×çZ! @  Q?!+?d hmªûŠàà @  Q@"+?d ¨mªÛâ @  QA#+?d èmªl[? @  QB$+?d (nª€(ûþ @  QC%+?d hnªµúj @  QD&+?d ¨nª•ëø” @  QE'+?d ènªË袒 @  QF(+?d (oª .z @  QG)+?d hoª%m‹y @  QH*+?d ¨oª˜‰‡ @  QI++?d èoªË0¦ @  QJ,+?d (pª}UŒ @  QK-+?d hpªHc€ @  QL.+?d ¨pªh–~ @  QM/+?d èpªSÅ·” @  QN0+?d (qªƒ;| @  QO1+?d hqªá Ÿ @  QP2+?d ¨qª0¢a @  QQ3+?d èqªö@ @  QR4+?d (rªkC» @  QS5+?d hrª^uº @  QT6+?d ¨rª~€¸ë @  QU7+?d èrª ƒâí @  QV8+?d (sªðËn @  QW9+?d hsªÎË @  QX:+?d ¨sªîóÉø @  QY;+?d èsª(àpÙ @  QZ<+?d (tª1®ƒÖ @  Q[=+?d htª˜‚B @  Q\>+?d ¨tª$m€¼ @  Q]?+?d ètªrÙ”› @  Q^@+?d (uª¢‘s @  Q_A+?d huª û¤  @  Q`B+?d ¨uª¦Þ @  QaC+?d èuªÆÿ @  QbD+?d (vª[Y¿> @  QcE+?d hvªno¾ª @  QdF+?d ¨vªNš¼T @  QeG+?d èvª™æR @  QfH+?d (wªÀÑjº @  QgI+?d hwªþϹ @  QhJ+?d ¨wªÞéÍG @  QiK+?d èwªútf @  QjL+?d (xª,ø{ @  QkM+?d hxª3ùï @  QlN+?d ¨xª9Æû @  QmO+?d èxª•Ãû @  QnP+?d (yªÒÝO @  QoQ+?d hyªA±Ôð @  QpR+?d ¨yªaDÖ @  QqS+?d èyª§Wo/ @  QrT+?d (zª:Ïî @  QsU+?d hzª%Îz @  QtV+?d ¨zª/ÐÌ„ @  QuW+?d èzªqÓ–‚ @  QvX+?d ({ª¡›j @  QwY+?d h{ªŸV¿i @  QxZ+?d ¨{ª¿£½— @  Qy[+?d è{ªy°¶ @  Qz\+?d (|ª`þ÷¹ @  Q{]+?d h|ªUÈö- @  Q|^+?d ¨|ªu=ôÓ @  Q}_+?d è|ªÓÙõå @  Q~`+?d (}ª‘y  @  Qa+?d h}ª̪óý @  Q€b+?d ¨}ªì_ñ @  Qc+?d è}ª*LH" @  Q‚d+?d (~ª·èã @  Qƒe+?d h~ª‚>éw @  Q„f+?d ¨~ª¢Ëë‰ @  Q…g+?d è~ªüȱ @  Q†h+?d (ª,€=g @  Q‡i+?d hªM˜d @  Qˆj+?d ¨ªuЀª'2¸šš @  Q‰k+?d èªÍlÿn @  QŠ l+?d @€ª£Ò @  Q‹ m+?d €€ª4€ ® @  QŒ n+?d À€ª¶p @  Q o+?d ªß›½¬ @  QŽ p+?d @ª] ªr @  Q q+?d €ªl$± @  Q r+?d Àªî“3o @  Q‘ s+?d ‚ª7U=Q @  Q’ t+?d @‚ªµÄ* @  Q“ u+?d €‚ª"–>; @  Q” v+?d À‚ª )å @  Q• w+?d ƒª¬ÝèÕ @  Q– x+?d @ƒª.Lÿ  @  Q— y+?d €ƒª²åO( @  Q˜ z+?d Àƒª0tXö @  Q™ {+?d „ªm¸ @  Qš |+?d @„ªï)Ø @  Q› }+?d €„ªx{l @  Qœ ~+?d À„ªúê² @  Q +?d …ªãAÊ1 @  Qž €+?d @…ªaÐÝï @  QŸ +?d €…ªAÞtœ @  Q  ‚+?d À…ªÃOcB @  Q¡ ƒ+?d †ª‰m| @  Q¢ „+?d @†ª˜z¢ @  Q£ …+?d €†ªJn @  Q¤ †+?d À†ªÛyÈ @  Q¥ ‡+?d ‡ª¸ø @  Q¦ ˆ+?d @‡ª¯& @  Q§ ‰+?d €‡ªŸ9 @  Q¨ Š+?d À‡ª¨Û @  Q© ‹+?d ˆªmÕ*9 @  Qª Œ+?d @ˆªïD=ç @  Q« +?d €ˆªx)S @  Q¬ Ž+?d Àˆªú‡> @  Q­ +?d ‰ª“ Q @  Q® +?d @‰ªœŠ @  Q¯ ‘+?d €‰ª ”L @  Q° ’+?d À‰ª¢’ @  Q± “+?d Šª{ì @  Q² ”+?d @ŠªùR r @  Q³ •+?d €ŠªnÆ @  Q´ –+?d ÀŠªì‘  @  Qµ —+?d ‹ªàKÈ( @  Q¶ ˜+?d @‹ªbÚßö @  Q· ™+?d €‹ªþsoÕ @  Q¸ š+?d À‹ª|âx  @  Q¹ ›+?d Œª!.%û @  Qº œ+?d @Œª£¿2% @  Q» +?d €Œª4í&‘ @  Q¼ ž+?d ÀŒª¶|1O @  Q½ Ÿ+?d ªBA«O @  Q¾  +?d @ªÀм‘ @  Q¿ ¡+?d €ªNÙp @  QÀ ¢+?d ÀªÌH® @  QÁ £+?d ŽªŽ  @  Q ¤+?d @Žª—N @  Qà ¥+?d €ŽªM ú @  QÄ ¦+?d ÀŽª‚Ü$ @  QÅ §+?d ªŽß @  QÆ ¨+?d @ª —ÈÊ @  QÇ ©+?d €ª>xé @  QÈ ª+?d Àª¯o7 @  QÉ «+?d ªèó}z @  QÊ ¬+?d @ªjbj¤ @  QË ­+?d €ªý0~ @  QÌ ®+?d Àª¡iÎ @  QÍ ¯+?d ‘ª+Ê @  QÎ °+?d @‘ª”ºÝÌ @  QÏ ±+?d €‘ª¥²S @  QÐ ²+?d À‘ª'#DÑ @  QÑ ³+?d ’ªþåJï @  QÒ ´+?d @’ª|t]1 @  QÓ µ+?d €’ªë&I… @  QÔ ¶+?d À’ªi·^[ @  QÕ ·+?d “ªemŸk @  QÖ ¸+?d @“ªçüˆµ @  Q× ¹+?d €“ª{U8– @  QØ º+?d À“ªùÄ/H @  QÙ »+?d ”ª¤r¸ @  QÚ ¼+?d @”ª&™ef @  QÛ ½+?d €”ª±ËqÒ @  QÜ ¾+?d À”ª3Zf  @  QÝ ¿+?d •ª77é @  QÞ À+?d @•ªµ¦þà @  Qß Á+?d €•ª•¨W° @  Qà Â+?d À•ª9@n @  Qá Ã+?d –ªÎÿNP @  Qâ Ä+?d€ @–ª)®Ž @  R Å+?d €–ªû:ò @  R Æ+?d À–ªy«åÍ @  R Ç+?d —ª°8ß @  R È+?d @—ª2©ÈÎ @  R É+?d €—ª`²'— @  R Ê+?d À—ªâ#0I @  R Ë+?d ˜ª\ìMÑ @  R Ì+?d @˜ªÞ}Z @  R Í+?d €˜ªŒfµV @  R Î+?d À˜ª÷¢ˆ @  R Ï+?d ™ª¢4ú¹ @  R Ð+?d @™ª ¥íg @  R Ñ+?d €™ªr¾> @  R Ò+?d À™ªð/à @  R Ó+?d šªJúzD @  R Ô+?d @šªÈkmš @  R Õ+?d €šªšp‚à @  R Ö+?d Àšªá• @  R ×+?d ›ªÑr¯À @  R Ø+?d @›ªS㸠@  R Ù+?d €›ªøWG @  R Ú+?d À›ªƒi@™ @  R Û+?d œªB @  R Ü+?d @œª’†UÍ @  R Ý+?d €œªÀº” @  R Þ+?d ÀœªB ­J @  R ß+?d ªsx̧ @  R à+?d @ªñéÛy @  R á+?d €ª£ò4  @  R â+?d Àª!c#þ @  R ã+?d žªаkê @  R ä+?d @žª!|4 @  R! å+?d €žªZ:“m @  R" æ+?d ÀžªØ«„³ @  R# ç+?d Ÿª8¾n @  R$ è+?d @Ÿª“©©° @  R% é+?d €ŸªÁ²Fé @  R& ê+uРª?d ÀŸªC#Q7 @  R' ë+?d  ªߢ @  R(ì+?d X ªNµß @  R)í+?d ˜ ªQUZ† @  R*î+?d Ø ªÓÄMX @  R+ï+?d ¡ªi @  R,ð+?d X¡ªý–· @  R-ñ+?d ˜¡ª¯íî @  R.ò+?d Ø¡ª-ú0 @  R/ó+?d ¢ª—É•” @  R0ô+?d X¢ªX‚J @  R1õ+?d ˜¢ªGCm @  R2ö+?d Ø¢ªÅÒzÍ @  R3÷+?d £ª A@ @  R4ø+?d X£ªŽÐWÎ @  R5ù+?d ˜£ªÜ˸— @  R6ú+?d Ø£ª^Z¯I @  R7û+?d ¤ªÍ$­Ã @  R8ü+?d X¤ªOµº @  R9ý+?d ˜¤ª®UD @  R:þ+?d ؤªŸ?Bš @  R;ÿ+?d ¥ª³n @  R<,?d X¥ªÿ¢lÌ @  R=€,?d ˜¥ª­¹ƒ• @  R>€,?d Ø¥ª/(”K @  R?€,?d ¦ª*üÚÍ @  R@€,?d X¦ª¨mÍ @  RA€,?d ˜¦ªúv"J @  RB€,?d ئªxç5” @  RC€,?d §ª±tI @  RD€,?d X§ª3å— @  RE€ ,?d ˜§ªaþ÷Î @  RF€ ,?d اªãoà @  RG€ ,?d ¨ª] ˆ @  RH€ ,?d X¨ªß1ŠV @  RI€ ,?d ˜¨ª*e @  RJ€,?d بª»rÑ @  RK€,?d ©ª£x*à @  RL€,?d X©ª!é=> @  RM€,?d ˜©ªsòÒg @  RN€,?d Ø©ªñcŹ @  RO€,?d ªªK¶ª @  RP€,?d XªªÉ'½Ã @  RQ€,?d ˜ªª›™ @  RT€,?d X«ªR¯hG @  RU€,?d ˜«ª´‡ @  RV€,?d Ø«ª‚%À @  RW€,?d ¬ª[’J @  RX€,?d X¬ª“Ê…” @  RY€,?d ˜¬ªÁÑjÍ @  RZ€,?d جªC@} @  R[€,?d ­ªr4þ @  R\€ ,?d X­ªð¥  @  R]€!,?d ˜­ª¢¾äy @  R^€",?d Ø­ª /ó§ @  R_€#,?d ®ª‹ü»³ @  R`€$,?d X®ª m¬m @  Ra€%,?d ˜®ª[vC4 @  Rb€&,?d Ø®ªÙçTê @  Rc€',?d ¯ªtn7 @  Rd€(,?d X¯ª’åyé @  Re€),?d ˜¯ªÀþ–° @  Rf€*,?d دªBon @  Rg€+,?d °ªvÌY @  Rh€,,?d X°ªôÛ‡ @  Ri€-,?d ˜°ª¦ 4Þ @  Rj€.,?d ذª$š# @  Rk€/,?d ±ªˆY{1 @  Rl€0,?d X±ª Èlï @  Rm€1,?d ˜±ªXÓƒ¶ @  Rn€2,?d رªÚB”h @  Ro€3,?d ²ª`—ûÌ @  Rp€4,?d X²ªâì @  Rq€5,?d ˜²ª°K @  Rr€6,?d زª2Œ• @  Rs€7,?d ³ªû.H @  Rt€8,?d X³ªyŽ9– @  Ru€9,?d ˜³ª+•ÖÏ @  Rv€:,?d سª©Á @  Rw€;,?d ´ª:zÛ @  Rx€<,?d X´ª¸ëÔE @  Ry€=,?d ˜´ªêð; @  Rz€>,?d Ø´ªha, @  R{€?,?d µª©EX> @  R|€@,?d Xµª+ÔOà @  R}€A,?d ˜µªyÏ ¹ @  R~€B,?d صªû^·g @  R€C,?d ¶ªÜÉÐ @  R€€D,?d X¶ªŸMÞ @  R€E,?d ˜¶ªÍV1W @  R‚€F,?d ضªOÇ&‰ @  Rƒ€G,?d ·ª†TT @  R„€H,?d X·ªÅ Š @  R…€I,?d ˜·ªVÞäÓ @  R†€J,?d Ø·ªÔOó  @  R‡€K,?d ¸ªj€Ž• @  Rˆ€L,?d X¸ªè™K @  R‰€M,?d ˜¸ªº v @  RŠ€N,?d ظª8›aÌ @  R‹€O,?d ¹ª”X9ý @  RŒ€P,?d X¹ªÉ.# @  R€Q,?d ˜¹ªDÒÁz @  RŽ€R,?d عªÆCÖ¤ @  R€S,?d ºª|–¹ @  R€T,?d Xºªþ®Þ @  R‘€U,?d ˜ºª¬A‡ @  R’€V,?d غª.VY @  R“€W,?d »ªçl„ @  R”€X,?d X»ªe{Z @  R•€Y,?d ˜»ª7”” @  R–€Z,?d Ø»ªµƒÝ @  R—€[,?d ¼ª&{W @  R˜€\,?d X¼ª¤ê–‰ @  R™€],?d ˜¼ªöñyÐ @  Rš€^,?d ؼªt`n @  R›€_,?d ½ªEã @  Rœ€`,?d X½ªÇ…= @  R€a,?d ˜½ª•ž÷d @  Rž€b,?d ؽªàº @  RŸ€c,?d ¾ª¼Ü¨® @  R €d,?d X¾ª>M¿p @  R¡€e,?d ˜¾ªlVP) @  R¢€f,?d ؾªîÇG÷ @  R£€g,?d ¿ª'T}* @  R¤€h,?d X¿ª¥Åjô @  R¥€i,?d ˜¿ª÷Þ…­ @uÐÀª  R¦€j,?d Ø¿ªÏá @  R§k,?d 0ÀªæAØ @  R¨l,?d pÀªdžV @  R©m,?d °Àª6…¹_ @  Rªn,?d ðÀª´® @  R«o,?d 0Áª×ö° @  R¬p,?d pÁªšFán @  R­q,?d °ÁªÈ]7 @  R®r,?d ðÁªJÌé @  R¯s,?d 0ªðvM @  R°t,?d pªrˆa“ @  R±u,?d °Âª “ŽÊ @  R²v,?d 𪢙 @  R³w,?d 0êk‘£É @  R´x,?d pêé´ @  Rµy,?d °Ãª» @  R¶z,?d ðê9ŠL @  R·{,?d 0ĪªôN @  R¸|,?d pĪ(eYÄ @  R¹},?d °Äªz~¶ @  Rº~,?d ðĪøï¡C @  R»,?d 0Ū$ - @  R¼€,?d pŪ¦œ–ó @  R½,?d °Åªô‡yª @  R¾‚,?d ðŪvnt @  R¿ƒ,?d 0ƪs ò @  RÀ„,?d pƪñS7, @  RÁ…,?d °Æª£HØu @  R†,?d ðƪ!ÙÏ« @  RÇ,?d 0ǪèJõv @  RĈ,?d pǪjÛ⨠@  Rʼn,?d °Çª8À ñ @  RÆŠ,?d ðǪºQ/ @  RÇ‹,?d 0Ȫžg· @  RÈŒ,?d pȪ†pi @  RÉ,?d °ÈªÔŸ0 @  RÊŽ,?d ðȪV…ˆî @  RË,?d 0ɪúFÐß @  RÌ,?d pɪx×Ç @  RÍ‘,?d °Éª*Ì(X @  RÎ’,?d ðɪ¨]?† @  RÏ“,?d 0ʪˆP" @  RД,?d pʪGü @  RÑ•,?d °ÊªÂ¨¥ @  RÒ–,?d ðʪ@“¿{ @  RÓ—,?d 0˪‰…¦ @  RÔ˜,?d p˪ ‘’x @  RÕ™,?d °ËªYŠ}! @  RÖš,?d ð˪Ûjÿ @  R×›,?d 0̪Hehu @  RØœ,?d p̪Êô« @  RÙ,?d °Ìª˜ïò @  RÚž,?d ð̪~‡, @  RÛŸ,?d 0ͪ+ æÁ @  RÜ ,?d pͪ©›ñ @  RÝ¡,?d °Íªû€F @  RÞ¢,?d ðͪy ˜ @  Rߣ,?d 0ΪÒÂAŒ @  Rà¤,?d pΪPSVR @  Rá¥,?d °ÎªH¹  @  Râ¦,?d€ ðΪô²s @  S§,?d 0ϪÜÈÀ‡ @  S¨,?d pϪ^Y×Y @  S©,?d °ÏªÉ Ãí @  Sª,?d ðϪKšÔ3 @  S«,?d 0Ъ±ÆÆ~ @  S¬,?d pЪ3WÑ  @  S­,?d °Ðª¯þaƒ @  S®,?d ðЪ-ov] @  S ¯,?d 0ѪDåÕ @  S °,?d pѪÆtÂ_ @  S ±,?d °ÑªQ&Öë @  S ²,?d ðѪÓ·Á5 @  S ³,?d 0Òª qÏ  @  S´,?d pÒªˆàØÕ @  Sµ,?d °Òª¹èV @  S¶,?d ðÒª;yAÈ @  S·,?d 0Óª7£€ø @  S¸,?d pÓªµ2—& @  S¹,?d °Óª"`ƒ’ @  Sº,?d ðÓª ñ”L @  S»,?d 0Ôªý=ɼ @  S¼,?d pÔª¬Þb @  S½,?d °ÔªãnA @  S¾,?d ðÔªa”yŸ @  S¿,?d 0ÕªeùöŽ @  SÀ,?d pÕªçháP @  SÁ,?d °Õªp:õä @  SÂ,?d ðÕªò«â: @  SÃ,?d 0Öª+mì @  SÄ,?d pÖª©üûÚ @  SÅ,?d °Öª‰òR© @  S Æ,?d ðÖª cEw @  S!Ç,?d 0ת¹„G @  S"È,?d pת…(“™ @  S#É,?d °×ªz‡- @  S$Ê,?d ðתëó @  S%Ë,?d 0تà–² @  S&Ì,?d pتb¥Ï @  S'Í,?d °Øªþ®ì @  S(Î,?d ðت|?2 @  S)Ï,?d 0Ùªµ¡î @  S*Ð,?d pÙª—$¶0 @  S+Ñ,?d °Ùªv¢„ @  S,Ò,?d ðÙª‚çµZ @  S-Ó,?d 0Úª[!»d @  S.Ô,?d pÚªÙ°¬º @  S/Õ,?d °Úªè¸"y @  S0Ö,?d ðÚªj)5§ @  S1×,?d 0Ûªfóô— @  S2Ø,?d pÛªäbãI @  S3Ù,?d °Ûªs0÷ý @  S4Ú,?d ðÛªñ¡à# @  S5Û,?d 0ܪ¬m½Ó @  S6Ü,?d pܪ.üª  @  S7Ý,?d °Üª²U. @  S8Þ,?d ðܪ0Ä ð @  S9ß,?d 0ݪÄù—ð @  S:à,?d pݪFh€. @  S;á,?d °ÝªÑ:”š @  S<â,?d ðݪS«ƒD @  S=ã,?d 0ÞªŠmz @  S>ä,?d pÞªüš¤ @  S?å,?d °Þª†õ5E @  S@æ,?d ðÞªd"› @  SAç,?d 0ߪ¾ã« @  SBè,?d pߪŠ/ôu @  SCé,?d uÐàª/°ßª}àÁ @  SDê,?d ðߪŸì÷ @  SEë,?d HàªÂÊ @  SFì,?d ˆàªâ?è @  SGí,?d ÈàªÜò ë @  SHî,?d ᪠º, @  SIï,?d Háª7éé @  SJð,?d ˆáª @  SKñ,?d Èáª"*ƒ @  SLò,?d ⪿n·B @  SMó,?d Hâªy}c @  SNô,?d ˆâªYˆ  @  SOõ,?d ÈâªÊä—~ @  SPö,?d 㪬– @  SQ÷,?d HãªD¯A @  SRø,?d ˆãªdZCn @  SSù,?d ÈãªQlBú @  STú,?d äªH"±õ @  SUû,?d H䪎1Ô @  SVü,?d ˆäª®Ä * @  SWý,?d Èäª ¯) @  SXþ,?d åª@A#Á @  SYÿ,?d HåªtT6x @  SZ-?d ˆåªT¡4† @  S[-?d Èåªa—5 @  S\-?d æªüÓ•Ó @  S]-?d Hæª:À,ò @  S^-?d ˆæª5.  @  S_-?d Èæª˜_’_ @  S`-?d çªH· @  Sa-?d HçªD± @  Sb-?d ˆçª6áFO @  Sc -?d Èçª×GÛ @  Sd -?d èª7(ËÆ @  Se -?d Hèªñ;rç @  Sf -?d ˆèªÑÎp @  Sg -?d ÈèªïÕ @  Sh-?d éª?KYò @  Si-?d Héªa @  Sj-?d ˆéª$ícæ @  Sk-?d ÈéªÛbr @  Sl-?d ꪌŸÂ³ @  Sm-?d HêªJŒ{’ @  Sn-?d ˆêªjyyl @  So-?d Èêªùâ @  Sp-?d ëª)]ng @  Sq-?d Hëªw^4a @  Sr-?d ˆëªW«6Ÿ @  Ss-?d Èëªb7  @  St-?d ìª{ÓÄ @  Su-?d H쪽À}% @  Sv-?d ˆìª5Û @  Sw-?d È쪣øÚØ @  Sx-?d íªs°V0 @  Sy-?d HíªÕTW @  Sz -?d ˆíªõ¡Uø @  S{!-?d ÈíªÀ—Tl @  S|"-?d îª]Óô­ @  S}#-?d HÀMŒ @  S~$-?d ˆîª»5Or @  S%-?d ÈîªtÅ‚ @  S€&-?d 瘝FIj @  S'-?d HïªúEl @  S‚(-?d ˆïªÚ°’ @  Sƒ)-?d Èïªï† @  S„*-?d ðªQX¬´ @  S…+-?d Hðª—K• @  S†,-?d ˆðª·¾k @  S‡--?d Èðª‰s²h @  Sˆ.-?d ñªY;>€ @  S‰/-?d Hñªbhj @  SŠ0-?d ˆñªB” @  S‹1-?d Èñªw« @  SŒ2-?d òªêï¥Á @  S3-?d Hòª,üà @  SŽ4-?d ˆòª  @  S5-?d ÈòªŸe…ý @  S6-?d óªO-  @  S‘7-?d Hóª.S @  S’8-?d ˆóª1ÛQí @  S“9-?d ÈóªíPy @  S”:-?d ôª££v @  S•;-?d HôªÛ°W @  S–<-?d ˆôªûE© @  S—=-?d Èôªň½ª @  S˜>-?d õªÀ1B @  S™?-?d HõªCt%e @  Sš@-?d ˆõªc'› @  S›A-?d ÈõªV·& @  SœB-?d öªËó†Î @  SC-?d Höª à?ï @  SžD-?d ˆöª-= @  SŸE-?d Èöª¯B @  S F-?d ÷ª7 ª @  S¡G-?d H÷ª!4W¬ @  S¢H-?d ˆ÷ªÁUR @  S£I-?d È÷ª4÷TÆ @  S¤J-?d øªØÛ @  S¥K-?d HøªÆaú @  S¦L-?d ˆøªæîc @  S§M-?d ÈøªØ#Æ @  S¨N-?d ùªkJï @  S©O-?d Hùª38r @  SªP-?d ˆùªÍpû @  S«Q-?d Èùª&ûqo @  S¬R-?d úª»¿Ñ® @  S­S-?d Húª}¬h @  S®T-?d ˆúª]Yjq @  S¯U-?d ÈúªÎ5ñ’ @  S°V-?d ûª}}z @  S±W-?d Hûª@~'| @  S²X-?d ˆûª`‹%‚ @  S³Y-?d ÈûªU½$ @  S´Z-?d üªLó× @  Sµ[-?d HüªŠàn8 @  S¶\-?d ˆüªªlÆ @  S·]-?d Èüª”ØÉÅ @  S¸^-?d ýªDE- @  S¹_-?d HýªâtD @  Sº`-?d ˆýªÂFå @  S»a-?d Èýª÷·Gq @  S¼b-?d þªjóç° @  S½c-?d Hþª¬à^‘ @  S¾d-?d ˆþªŒ\o @  S¿e-?d Èþª xæ® @  SÀf-?d ÿªp0jF @  SÁg-?d Hÿª.30@ @  SÂh-?d ˆÿªÆ2¾ @  SÃuЫi-?d Èÿª;ð3* @  SÄj-?d «tDÛ @  SÅk-?d `«²W¢ú @  SÆl-?d  «’¢  @  SÇm-?d ૬o @  SÈn-?d «|'‰ï @  SÉo-?d `«Gt± @  SÊp-?d  «g³û @  SËq-?d à«R·²o @  SÌr-?d «Ïó® @  SÍs-?d `« à« @  SÎt-?d  «)©q @  SÏu-?d ૺy2’ @  SÐv-?d «j1¾z @  SÑw-?d `«42ä| @  SÒx-?d  «Çæ‚ @  SÓy-?d à«!ñç @  SÔz-?d «8¿ @  SÕ{-?d `«þ¬­8 @  SÖ|-?d  «ÞY¯Æ @  S×}-?d à«à” Å @  SØ~-?d «0܆- @  SÙ-?d `«{®Æ˜ @  SÚ€-?d  «[[Äf @  SÛ-?d à«nmÅò @  SÜ‚-?d «ó)e3 @  S݃-?d `«5:Ü @  SÞ„-?d  «ÏÞì @  Sß…-?d à«—¥b¿ @  Sà†-?d «GíîW @  Sá‡-?d `«î´Q @  Sâˆ-?d€  «¿M @  T‰-?d à«k:W« @  TŠ-?d «_ÅÛ¶ @  T‹-?d `«\Ÿ™z @  TŒ-?d  «|j›„ @  T-?d ૌaý @  TŽ-?d «\]í @  T-?d ` «©¼Š… @  T-?d   «‰Iˆ{ @  T ‘-?d à «y6r @  T ’-?d «ärÒà @  T “-?d ` «ç( @  T ”-?d   «ÇÝ’ñ @  T •-?d à «7¢hˆ @  T–-?d «çêä` @  T—-?d ` «Úúßü @  T˜-?d   «úÝ @  T™-?d à « p'{ @  Tš-?d «>Ôt @  T›-?d ` «d–¸ @  Tœ-?d   «0‘”F @  T-?d à «Àîn? @  Tž-?d «¦â× @  TŸ-?d ` «xð¼› @  T -?d   «X¾e @  T¡-?d à «¨zD @  T¢-?d «5>äÝ @  T£-?d `«6d¦ @  T¤-?d  «‘¤ï @  T¥-?d à«æî^– @  T¦-?d «6¦Ò~ @  T§-?d `«°ÎR @  T ¨-?d  «:E̬ @  T!©-?d à«Ê:6Õ @  T"ª-?d «täŠg @  T#«-?d `«w¾È« @  T$¬-?d  «WKÊU @  T%­-?d à«§40, @  T&®-?d «w|¼Ä @  T'¯-?d `«‚ÛT @  T(°-?d  «¢hÙª @  T)±-?d à«R#Ó @  T*²-?d «ÏSƒ @  T+³-?d `«Ì ÁÞ @  T,´-?d  «ìüà  @  T-µ-?d ૃ9Y @  T.¶-?d «Ì˵± @  T/·-?d `«ñÛŽ- @  T0¸-?d  «Ñ.ŒÓ @  T1¹-?d à«!Qvª @  T2º-?d «8…¥ @  T3»-?d `«;EÇi @  T4¼-?d  «°Å— @  T5½-?d à«ëÏ?î @  T6¾-?d «;‡³ @  T7¿-?d `«£ø[ @  T8À-?d  «ƒtú¥ @  T9Á-?d à«s Ü @  T:Â-?d «îO  @  T;Ã-?d `«íâÑ @  T<Ä-?d  «Íàà/ @  T=Å-?d à«=ŸV @  T>Æ-?d «í×–¾ @  T?Ç-?d `«oÆŒ @  T@È-?d  «O3Žþ @  TAÉ-?d à«¿Lt‡ @  TBÊ-?d «‹³øš @  TCË-?d `«ˆéºV @  TDÌ-?d  «¨¸¨ @  TEÍ-?d à«XcBÑ @  TFÎ-?d «ˆ+Î9 @  TGÏ-?d `«}Ê©© @  THÐ-?d  «]?«W @  TIÑ-?d à«­@Q. @  TJÒ-?d «0ñï @  TKÓ-?d `«3^³# @  TLÔ-?d  ««±Ý @  TMÕ-?d à«ãÔK¤ @  TNÖ-?d «3œÇL @  TO×-?d `«ŒüÐ @  TPØ-?d  «.yþ. @  TQÙ-?d à«ÞW @  TRÚ-?d «ÇH÷X @  TSÛ-?d `«Äµ” @  TTÜ-?d  «äç·j @  TUÝ-?d ૘M @  TVÞ-?d «ÄÐÁû @  TWß-?d `«¬†Ÿ· @  TXà-?d  «ŒsI @  TYá-?d à«| g0 @  TZâ-?d «áHÇñ @  T[ã-?d `«â…= @  T\ä-?d  «Âç‡Ã @  T]å-?d à«2˜}º @  T^æ-?d «âÐñR @  T_ç-?d `«ÎÆí~ @  T`è-?d  «î3ï€uÐ « @  Taé-?d à«Lù @  Tbê-?d 8 «oGËŸ @  Tcë-?d x «l‰S @  Tdì-?d ¸ «Lè‹­ @  Teí-?d ø «¼—qÔ @  Tfî-?d 8!«lßý< @  Tgï-?d x!«™>š¬ @  Thð-?d ¸!«¹Ë˜R @  Tiñ-?d ø!«I´b+ @  Tjò-?d 8"«ÔðÂê @  Tkó-?d x"«ת€& @  Tlô-?d ¸"«÷_‚Ø @  Tmõ-?d ø"« x¡ @  Tnö-?d 8#«×hôI @  To÷-?d x#«êxÏÕ @  Tpø-?d ¸#«ÊÍ+ @  Tqù-?d ø#«:ò7R @  Trú-?d 8$«#¼Ä] @  Tsû-?d x$« 憑 @  Ttü-?d ¸$«„o @  Tuý-?d ø$«ðl~ @  Tvþ-?d 8%« $òþ @  Twÿ-?d x%«h¡ @  Tx.?d ¸%«HTæ @  Ty.?d ø%«¸+uŸ @  Tz.?d 8&«%oÕ^ @  T{.?d x&«&5—’ @  T|.?d ¸&«À•l @  T}.?d ø&«ö¿o @  T~.?d 8'«&÷ãý @  T.?d x'«G°Ér @  T€.?d ¸'«gEËŒ @  T .?d ø'«—:1õ @  T‚ .?d 8(«£Å½è @  Tƒ .?d x(« Ÿÿ$ @  T„ .?d ¸(«€jýÚ @  T… .?d ø(«p£ @  T†.?d 8)« ]‹K @  T‡.?d x)«U¼ìÛ @  Tˆ.?d ¸)«uIî% @  T‰.?d ø)«…6\ @  TŠ.?d 8*«r´ @  T‹.?d x*«(öQ @  TŒ.?d ¸*«;Ýô¯ @  T.?d ø*«Ë¢Ö @  TŽ.?d 8+«ê‚> @  T.?d x+«&ú¹¢ @  T.?d ¸+«»\ @  T‘.?d ø+«öpA% @  T’.?d 8,«ï>²* @  T“.?d x,«ìdðæ @  T”.?d ¸,«Ì‘ò @  T•.?d ø,«<îa @  T–.?d 8-«즄‰ @  T—.?d x-«„ðÚÅ @  T˜ .?d ¸-«¤Ø; @  T™!.?d ø-«Tz"B @  Tš".?d 8.«É>‚ƒ @  T›#.?d x.«ÊdÀO @  Tœ$.?d ¸.«ꑱ @  T%.?d ø.«î8È @  Tž&.?d 8/«ʦ´  @  TŸ'.?d x/«æ°¨  @  T (.?d ¸/«ÆEªò @  T¡).?d ø/«6:P‹ @  T¢*.?d 80«ˆäì9 @  T£+.?d x0«‹¾®õ @  T¤,.?d ¸0««K¬  @  T¥-.?d ø0«[4Vr @  T¦..?d 81«‹|Úš @  T§/.?d x1«~½  @  T¨0.?d ¸1«^h¿ô @  T©1.?d ø1«®E @  Tª2.?d 82«3SåL @  T«3.?d x2«0 §€ @  T¬4.?d ¸2«ü¥~ @  T­5.?d ø2«àƒ_ @  T®6.?d 83«0ËÓï @  T¯7.?d x3« Ûès @  T°8.?d ¸3«-.ê @  T±9.?d ø3«ÝQô @  T²:.?d 84«Äãû @  T³;.?d x4«ÇE¡7 @  T´<.?d ¸4«ç°£É @  Tµ=.?d ø4«ÏY° @  T¶>.?d 85«LJÕX @  T·?.?d x5«_ž @  T¸@.?d ¸5«tœû @  T¹A.?d ø5« f‚ @  TºB.?d 86«OÆC @  T»C.?d x6«„ @  T¼D.?d ¸6«1à†q @  T½E.?d ø6«ÁŸ| @  T¾F.?d 87«×ðà @  T¿G.?d x7«“Æê^ @  TÀH.?d ¸7«³3è  @  TÁI.?d ø7«CLÙ @  TÂJ.?d 88«w³žÄ @  TÃK.?d x8«téÜ @  TÄL.?d ¸8«TÞö @  TÅM.?d ø8«¤c$ @  TÆN.?d 89«t+¨g @  TÇO.?d x9«ÊÏ÷ @  TÈP.?d ¸9«¡?Í  @  TÉQ.?d ø9«Q@7p @  TÊR.?d 8:«Ì—± @  TËS.?d x:«Ï^Õ} @  TÌT.?d ¸:«ï«×ƒ @  TÍU.?d ø:«Ô-ú @  TÎV.?d 8;«Ïœ¡ @  TÏW.?d x;«òŒšŽ @  TÐX.?d ¸;«Òy˜p @  TÑY.?d ø;«"b  @  TÒZ.?d 8<«;H‘ @  TÓ[.?d x<«8ÓÊ @  TÔ\.?d ¸<«çÑ4 @  TÕ].?d ø<«è˜+M @  TÖ^.?d 8=«8Ч¥ @  T×_.?d x=«P†ùé @  TØ`.?d ¸=«psû @  TÙa.?d ø=«€ n @  TÚb.?d 8>«H¡¯ @  TÛc.?d x>«ãc @  TÜd.?d ¸>«>çá @  TÝe.?d ø>«Θä @  TÞf.?d 8?«З  @  Tßg.?d x?«2Æ‹  @  Tàh.?duÐ@«7 ¸?«3‰Þ @  Tái.?d ø?«âLs§ @  Tâj.?d€ P@«U#Õ= @  Uk.?d @«\Êø @  Ul.?d Ð@«—ÍÝ& @  Um.?d A«ð"G„ @  Un.?d PA«r³PZ @  Uo.?d A«ë„} @  Up.?d ÐA«ijN @  Uq.?d B«H xR @  Ur.?d PB«ÊœoŒ @  U s.?d B«®ëà @  U t.?d ÐB«,zÔS @  U u.?d C«K•Nñ @  U v.?d PC«ÉY/ @  U w.?d C«5c  @  Ux.?d ÐC«·ò× @  Uy.?d D«¿A~å @  Uz.?d PD«=Ði; @  U{.?d D«Y§Å: @  U|.?d ÐD«Û6Òä @  U}.?d E«¼ÙHF @  U~.?d PE«>H_˜ @  U.?d E«×^  @  U€.?d ÐE«UÏÓ @  U.?d F«t×Ï @  U‚.?d PF«öF @  Uƒ.?d F«’1´ @  U„.?d ÐF« £Î @  U….?d G«wO9l @  U†.?d PG«õÞ.² @  U‡.?d G« ¹a” @  Uˆ.?d ÐG«‹(vJ @  U‰.?d H«¿,QÚ @  U Š.?d PH«=½F @  U!‹.?d H«YÊê @  U"Œ.?d ÐH«Û[ýÛ @  U#.?d I«¼´gy @  U$Ž.?d PI«>%p§ @  U%.?d I«§]m @  U&.?d ÐI«%ƒJ³ @  U'‘.?d J«›X¯ @  U(’.?d PJ«† Oq @  U)“.?d J«â}ãp @  U*”.?d ÐJ«`ìô® @  U+•.?d K«n  @  U,–.?d PK«…’yÒ @  U-—.?d K«yõ6ô @  U.˜.?d ÐK«ûd!* @  U/™.?d L«ó×^ @  U0š.?d PL«qFIÆ @  U1›.?d L«1åÇ @  U2œ.?d ÐL«— ò @  U3.?d M«ðOh» @  U4ž.?d PM«rÞe @  U5Ÿ.?d M«v^ks @  U6 .?d ÐM«ôÏ|­ @  U7¡.?d N«Õ×n± @  U8¢.?d PN«WFyo @  U9£.?d N«31Õn @  U:¤.?d ÐN«± Â° @  U;¥.?d O«ÖOX @  U<¦.?d PO«TÞOÌ @  U=§.?d O«¨¹ê @  U>¨.?d ÐO«*(4 @  U?©.?d P«: ™ @  U@ª.?d PP«¸›G @  UA«.?d P«Üì½F @  UB¬.?d ÐP«^}ª˜ @  UC­.?d Q«9’0: @  UD®.?d PQ«»'ä @  UE¯.?d Q«"4 . @  UF°.?d ÐQ« ¥ð @  UG±.?d R«½ì @  UH².?d PR«,2 @  UI³.?d R«g[´3 @  UJ´.?d ÐR«åÊ£í @  UKµ.?d S«‚%9O @  UL¶.?d PS«´.‘ @  UM·.?d S«üÓa· @  UN¸.?d ÐS«~Bvi @  UO¹.?d T«vñ [ @  UPº.?d PT«ô`… @  UQ».?d T«²„ @  UR¼.?d ÐT«†¥Z @  US½.?d U«ui?ø @  UT¾.?d PU«÷ø(& @  UU¿.?d U«()! @  UVÀ.?d ÐU«¹>ÿ @  UWÁ.?d V« ¡,ã @  UXÂ.?d PV«"0;= @  UYÃ.?d V«FG—< @  UZÄ.?d ÐV«ÄÖ€â @  U[Å.?d W«£9@ @  U\Æ.?d PW«!¨ ž @  U]Ç.?d W«ÝÏB¸ @  U^È.?d ÐW«_^Uf @  U_É.?d X«kZrö @  U`Ê.?d PX«éËe( @  UaË.?d X«¼É) @  UbÌ.?d ÐX«-Þ÷ @  UcÍ.?d Y«hÂDU @  UdÎ.?d PY«êSS‹ @  UeÏ.?d Y«sd~A @  UfÐ.?d ÐY«ñõiŸ @  UgÑ.?d Z«Ðí{ƒ @  UhÒ.?d PZ«R|l] @  UiÓ.?d Z«6 À\ @  UjÔ.?d ÐZ«´š×‚ @  UkÕ.?d [«ÓuM  @  UlÖ.?d P[«QäZþ @  Um×.?d [«­ƒØ @  UnØ.?d Ð[«/ @  UoÙ.?d \«'¡}4 @  UpÚ.?d P\«¥0jê @  UqÛ.?d \«ÁGÆë @  UrÜ.?d Ð\«CÖÑ5 @  UsÝ.?d ]«$9K— @  UtÞ.?d P]«¦¨\I @  Uuß.?d ]«¢(H_ @  Uvà.?d Ð]« ¹_ @  Uwá.?d ^«¡M @  Uxâ.?d P^«ƒ0ZC @  Uyã.?d ^«çGöB @  Uzä.?d Ð^«eÖᜠ@  U{å.?d _«9{> @  U|æ.?d P_«€¨là @  U}ç.?d _«|Ï#Æ @  UuÐ`«~è.?d Ð_«þ^4 @  Ué.?d (`« ® @  U€ê.?d h`« p @  Uë.?d ¨`«ëê§q @  U‚ì.?d è`«i{°¯ @  Uƒí.?d (a«”*  @  U„î.?d ha«Œ=Ó @  U…ï.?d ¨a«2 @  U†ð.?d èa«—£Ç @  U‡ñ.?d (b«¶»Û @  Uˆò.?d hb«4* @  U‰ó.?d ¨b«P]® @  UŠô.?d èb«Ò̹Ú @  U‹õ.?d (c«µ##x @  UŒö.?d hc«7²4¦ @  U÷.?d ¨c«ËÕ{€ @  UŽø.?d èc«IDl^ @  Uù.?d (d«A÷l @  Uú.?d hd«Ãf² @  U‘û.?d ¨d«§¨³ @  U’ü.?d èd«%€¿m @  U“ý.?d (e«Bo%Ï @  U”þ.?d he«Àþ2 @  U•ÿ.?d ¨e«V2ˆ @  U–/?d èe«Ô%V @  U—/?d (f«õ7J @  U˜/?d hf«w— ” @  U™/?d ¨f«àŒ• @  Uš/?d èf«‘q›K @  U›/?d (g«öžé @  Uœ/?d hg«t7 @  U/?d ¨g«ˆhY @  Už/?d èg« ùNÏ @  UŸ /?d (h«>ýi_ @  U  /?d hh«¼l~ @  U¡ /?d ¨h«ØÒ€ @  U¢ /?d èh«ZŠÅ^ @  U£ /?d (i«=e_ü @  U¤/?d hi«¿ôH" @  U¥/?d ¨i«&Ãeè @  U¦/?d èi«¤Rr6 @  U§/?d (j«…J`* @  U¨/?d hj«Ûwô @  U©/?d ¨j«c¬Ûõ @  Uª/?d èj«á=Ì+ @  U«/?d (k«†ÒV‰ @  U¬/?d hk«CAW @  U­/?d ¨k«ø$q @  U®/?d èk«zµ¯ @  U¯/?d (l«rf @  U°/?d hl«ð—qC @  U±/?d ¨l«”àÝB @  U²/?d èl«qÊœ @  U³/?d (m«qžP> @  U´/?d hm«óGà @  Uµ/?d ¨m«÷Sö @  U¶ /?d èm«uD( @  U·!/?d (n«TV4 @  U¸"/?d hn«Ö—Aê @  U¹#/?d ¨n«²àíë @  Uº$/?d èn«0qú5 @  U»%/?d (o«Wž`— @  U¼&/?d ho«ÕwI @  U½'/?d ¨o«)h8o @  U¾(/?d èo««ù/± @  U¿)/?d (p«»Û> @  UÀ*/?d hp«9J) @  UÁ+/?d ¨p«]=…à @  UÂ,/?d èp«߬’ @  UÃ-/?d (q«¸C¿ @  UÄ./?d hq«:Òa @  UÅ//?d ¨q«£å2« @  UÆ0/?d èq«!t%u @  UÇ1/?d (r«l7i @  UÈ2/?d hr«‚ý · @  UÉ3/?d ¨r«抌¶ @  UÊ4/?d èr«d›h @  UË5/?d (s«ôÊ @  UÌ6/?d hs«e @  UÍ7/?d ¨s«}Y2 @  UÎ8/?d ès«ÿ“Nì @  UÏ9/?d (t«÷ 1Þ @  UÐ:/?d ht«u±& @  UÑ;/?d ¨t«ÆŠ @  UÒ/?d hu«v)£ @  UÕ?/?d ¨u«‚ù¤ @  UÖ@/?d èu«hz @  U×A/?d (v«!pf @  UØB/?d hv«£á¸ @  UÙC/?d ¨v«Ç–¯¹ @  UÚD/?d èv«E¸g @  UÛE/?d (w«"è"Å @  UÜF/?d hw« y5 @  UÝG/?d ¨w«\z= @  UÞH/?d èw«Þmã @  UßI/?d (x«ê‹Js @  UàJ/?d hx«h]­ @  UáK/?d ¨x« mñ¬ @  UâL/?d€ èx«O»r @  VM/?d (y«ÉÃù @  VN/?d hy«K„Ô' @  VO/?d ¨y«ú @  VP/?d èy«•kÞ @  VQ/?d (z«zÁX¸ @  VR/?d hz«øPOf @  VS/?d ¨z«R•¼ @  VT/?d èz«Ð«Ã @  V U/?d ({«r¢ÊŒ @  V V/?d h{«ð3ÝR @  V W/?d ¨{«Éi™ @  V X/?d è{«KŒ~G @  V Y/?d (|« ,`ï @  VZ/?d h|«¢½w1 @  V[/?d ¨|«¥Ùºª @  V\/?d è|«'H­t @  V]/?d (}«…îÌ; @  V^/?d h}«Ûå @  V_/?d ¨}«ƶ4 @  V`/?d è}«D'#À @  Va/?d (~««n¦ @  Vb/?d h~«)yx @  Vc/?d ¨~«ƒÙŠ @  Vd/?d è~«HÝ @  Ve/?d («£îü’ @  Vf/?d h«!ëL @  Vg/?d ¨«uЀ«'Q_‡ @  Vh/?d è«ç@;% @  V€i/?d @€«û4ö @  V€j/?d €€«Ûå6 @  V€k/?d À€«oãÉ @  V €l/?d «¿«Eë @  V!€m/?d @«OÔ¿’ @  V"€n/?d €«o!½l @  V#€o/?d À«‘;~k @  V$€p/?d ‚« Þª @  V%€q/?d @‚«ü$Ó @  V&€r/?d €‚«Üõ&- @  V'€s/?d À‚«ÔTÀv @  V(€t/?d ƒ«Lž @  V)€u/?d @ƒ«ôc¶ç @  V*€v/?d €ƒ«Ô–´ @  V+€w/?d Àƒ«OÜò @  V,€x/?d „«V’æý @  V-€y/?d @„«¦í„ @  V.€z/?d €„«†z @  V/€{/?d À„«#ÆÁ @  V0€|/?d …«óPJ) @  V1€}/?d @…«/°P @  V2€~/?d €…«#Ú²® @  V3€/?d À…«­á ö @  V4€€/?d †«0¥©7 @  V5€/?d @†«ÀÚSN @  V6€‚/?d €†«à/Q° @  V7€ƒ/?d À†«获ë @  V8€„/?d ‡«8Æ; @  V9€…/?d @‡«ȹÁz @  V:€†/?d €‡«èLÄ @  V;€‡/?d À‡«sbo @  V<€ˆ/?d ˆ«Gùîr @  V=€‰/?d @ˆ«·†  @  V>€Š/?d €ˆ«—sõ @  V?€‹/?d Àˆ«rïl @  V@€Œ/?d ‰«]:c„ @  VA€/?d @‰«­E™ý @  VB€Ž/?d €‰«°› @  VC€/?d À‰«sªX @  VD€/?d Š«îîøÅ @  VE€‘/?d @Š«‘¼ @  VF€’/?d €Š«>dB @  VG€“/?d ÀŠ«6Åæ @  VH€”/?d ‹«æjñ @  VI€•/?d @‹«òˆ @  VJ€–/?d €‹«6’v @  VK€—/?d À‹«­M3 @  VL€˜/?d Œ«´À’ @  VM€™/?d @Œ«D|:ë @  VN€š/?d €Œ«d‰8 @  VO€›/?d ÀŒ«Á‰à® @  VP€œ/?d «ÁlF @  VQ€/?d @«á¾–? @  VR€ž/?d €«ÁK”Á @  VS€Ÿ/?d À«¢æn @  VT€ /?d Ž«?¢ÎÛ @  VU€¡/?d @Ž«ÏÝ4¢ @  VV€¢/?d €Ž«ï(6\ @  VW€£/?d ÀŽ«ç‰Ð @  VX€¤/?d «7Á\ï @  VY€¥/?d @«Ǿ¦– @  VZ€¦/?d €«çK¤h @  V[€§/?d À«|ƒ @  V\€¨/?d «Âß¹1 @  V]€©/?d @«2 CH @  V^€ª/?d €«UA¶ @  V_€«/?d À«¦S¾½ @  V`€¬/?d ‘«v2U @  Va€­/?d @‘«†dÈ, @  Vb€®/?d €‘«¦‘ÊÒ @  Vc€¯/?d À‘«X‹ Õ @  Vd€°/?d ’«ÅÏ© @  Ve€±/?d @’«5°Sm @  Vf€²/?d €’«EQ“ @  Vg€³/?d À’«ä·È @  Vh€´/?d “«ͬ;  @  Vi€µ/?d @“«=ÓÁY @  Vj€¶/?d €“«&ç @  Vk€·/?d À“«†lbL @  Vl€¸/?d ”«Ÿ"‘C @  Vm€¹/?d @”«o]k: @  Vn€º/?d €”«O¨iÄ @  Vo€»/?d À”«ꨱ @  Vp€¼/?d •«:à=— @  Vq€½/?d @•«ÊŸÇî @  Vr€¾/?d €•«êjÅ @  Vs€¿/?d À•«y—*Ú @  Vt€À/?d –«äÓŠ @  Vu€Á/?d @–«¬pb @  Vv€Â/?d €–«4Yrœ @  Vw€Ã/?d À–«<ø”Ç @  Vx€Ä/?d —«ì°/ @  Vy€Å/?d @—«ÏâV @  Vz€Æ/?d €—«<:ਠ@  V{€Ç/?d À—«§pAC @  V|€È/?d ˜«“Í^ @  V}€É/?d @˜«cð7' @  V~€Ê/?d €˜«C5Ù @  V€Ë/?d À˜«ºRüq @  V€€Ì/?d ™«jp™ @  V€Í/?d @™«šeŠà @  V‚€Î/?d €™«ºˆ @  Vƒ€Ï/?d À™«DŠK @  V„€Ð/?d š«ÙÎëØ @  V…€Ñ/?d @š«)±¡ @  V†€Ò/?d €š« D_ @  V‡€Ó/?d Àš«åõ @  Vˆ€Ô/?d ›«Ñ­yì @  V‰€Õ/?d @›«!Òƒ• @  VŠ€Ö/?d €›«'k @  V‹€×/?d À›«šm € @  VŒ€Ø/?d œ«ƒ#Ó @  V€Ù/?d @œ«s\)ö @  VŽ€Ú/?d €œ«S©+ @  V€Û/?d Àœ«ö©ó³ @  V€Ü/?d «&á[ @  V‘€Ý/?d @«Öž…" @  V’€Þ/?d €«ök‡Ü @  V“€ß/?d À«•Æ} @  V”€à/?d ž«‚ÝÆ @  V•€á/?d @ž«øý'¿ @  V–€â/?d €ž«Ø%A @  V—€ã/?d Àž«Щà @  V˜€ä/?d Ÿ«áOò @  V™€å/?d @Ÿ«𞵋 @  Vš€æ/?d €Ÿ«Ðk·u @  V›€ç/uР«?d ÀŸ«K!ž @  Vœ€è/?d  «Gª»„ @  Vé/?d X «·ÕAý @  Vžê/?d ˜ «— C @  VŸë/?d Ø «#&¼ @  V ì/?d ¡«ón0à @  V¡í/?d X¡«Ê™ @  V¢î/?d ˜¡«#äÈg @  V£ï/?d Ø¡«Ýþ ` @  V¤ð/?d ¢«@º«¡ @  V¥ñ/?d X¢«°ÅQØ @  V¦ò/?d ˜¢«0S& @  V§ó/?d Ø¢«˜‘µ} @  V¨ô/?d £«HÙ9• @  V©õ/?d X£«¸¦Ãì @  Vªö/?d ˜£«˜SÁ @  V«÷/?d Ø£«`ù @  V¬ø/?d ¤«W“ö @  V­ù/?d X¤«ê(i @  V®ú/?d ˜¤«ÊÝkq @  V¯û/?d ؤ«oݳÊ @  V°ü/?d ¥«¿•?" @  V±ý/?d X¥«OêÅ[ @  V²þ/?d ˜¥«oÇ¥ @  V³ÿ/?d Ø¥«gÆA @  V´0?d ¦«ú‚¯€ @  Vµ0?d X¦« ýUù @  V¶0?d ˜¦«*W @  V·0?d ئ«"©±\ @  V¸0?d §«òá=´ @  V¹0?d X§«žÇÍ @  Vº0?d ˜§«"kÅ3 @  V»0?d ا«¹!dØ @  V¼0?d ¨«ÞèÅ @  V½ 0?d X¨«}¡¼ @  V¾ 0?d ˜¨«]TB @  V¿ 0?d ب«GUéÛ @  VÀ 0?d ©«—e3 @  VÁ 0?d X©«gbŸJ @  VÂ0?d ˜©«G—´ @  VÃ0?d Ø©«¹^³ @  VÄ0?d ª«$Éþr @  VÅ0?d Xª«Ô¶  @  VÆ0?d ˜ª«ôCõ @  VÇ0?d ت«üâà® @  VÈ0?d ««,ªlF @  VÉ0?d X««ÜÕ–? @  VÊ0?d ˜««ü ”Á @  VË0?d Ø««gj5* @  VÌ0?d ¬«~$Æ% @  VÍ0?d X¬«Ž[<\ @  VÎ0?d ˜¬«®®>¢ @  VÏ0?d ج« ®æ @  VÐ0?d ­«Ûæjñ @  VÑ0?d X­«+™ˆ @  VÒ0?d ˜­« l’v @  VÓ0?d Ø­«hÁh­ @  VÔ 0?d ®«õ…Èl @  VÕ!0?d X®«ú2 @  VÖ"0?d ˜®«%0ë @  V×#0?d Ø®«-®Ö° @  VØ$0?d ¯«ýæZX @  VÙ%0?d X¯« ™ ! @  VÚ&0?d ˜¯«-l¢ß @  VÛ'0?d د«¶&4 @  VÜ(0?d °«ø¿† @  VÝ)0?d X°«ø‡Eÿ @  VÞ*0?d ˜°«ØrG @  Vß+0?d ذ«lt¸  @  Và,0?d ±«¼<4â @  Vá-0?d X±«LCΛ @  Vâ.0?d€ ˜±«uÐà @  W/0?d ر«.[í @  W00?d ²«šjû, @  W10?d X²«¯\ú¸ @  W20?d ˜²«©øF @  W30?d ز«IºAg @  W40?d ³«™òÍ @  W50?d X³«§?hŒ @  W60?d ˜³«‡Êjr @  W 70?d س«ÙÉ0t @  W 80?d ´«À‡Ã{ @  W 90?d X´«õ±Âï @  W :0?d ˜´«ÕDÀ @  W ;0?d Ø´«Wy0 @  W<0?d µ«ÃõØ @  W=0?d Xµ«Psn; @  W>0?d ˜µ«p†lÅ @  W?0?d ص«&2xâ @  W@0?d ¶«»vØ# @  WA0?d X¶«Ž@Ù· @  WB0?d ˜¶«®µÛI @  WC0?d ض«h¦bh @  WD0?d ·«¸îî€ @  WE0?d X·«†#Kƒ @  WF0?d ˜·«¦ÖI} @  WG0?d Ø·«øÕ{ @  WH0?d ¸«Ì*Ÿf @  WI0?d X¸«ùžò @  WJ0?d ˜¸«Ùéœ  @  WK0?d ظ«ú%- @  WL0?d ¹«ϲ©Å @  WM0?d X¹«MØ– @  W N0?d ˜¹«m-h @  W!O0?d ع«V~/‚ @  W"P0?d º«Ë:C @  W#Q0?d Xº«þ Ž× @  W$R0?d ˜º«ÞùŒ) @  W%S0?d غ«ê5 @  W&T0?d »«È¢¹à @  W'U0?d X»«öoã @  W(V0?d ˜»«Öš @  W)W0?d Ø»«ˆ™D @  W*X0?d ¼«‘×· @  W+Y0?d X¼«¤á¶€ @  W,Z0?d ˜¼«„´~ @  W-[0?d ؼ«B _ @  W.\0?d ½«’O· @  W/]0?d X½«#T @  W0^0?d ˜½«!Öª @  W1_0?d ؽ«‡2œ @  W2`0?d ¾«v¹] @  W3a0?d X¾«/@¸É @  W4b0?d ˜¾«µº7 @  W5c0?d ؾ«ɦ @  W6d0?d ¿«îþ @  W7e0?d X¿«'#*ý @  W8f0?d ˜¿«Ö( @uÐÀ«  W9g0?d Ø¿«YÕr @  W:h0?d 0À«=%#W @  W;i0?d pÀ«"à @  W<j0?d °À«(æ = @  W=k0?d ðÀ«îõ™ @  W>l0?d 0Á«>½ô @  W?m0?d pÁ«Я5 @  W@n0?d °Á«2%­Ë @  WAo0?d ðÁ« v•! @  WBp0?d 0«”25à @  WCq0?d p«¡4t @  WDr0?d °Â«ñ6Š @  WEs0?d ð«Gâ« @  WFt0?d 0ë—ªC @  WGu0?d pë©g¦@ @  WHv0?d °Ã«‰’¤¾ @  WIw0?d ðëבþ¸ @  WJx0?d 0Ä«Îß · @  WKy0?d pÄ«ûé # @  WLz0?d °Ä«ÛÝ @  WM{0?d ðÄ«·ü @  WN|0?d 0Å«ÍG; @  WO}0?d pÅ«^+ ÷ @  WP~0?d °Å«~Þ¢  @  WQ0?d ðÅ«5¬â¼ @  WR€0?d 0Æ«¨èB} @  WS0?d pÆ«ÞCé @  WT‚0?d °Æ«½+A @  WUƒ0?d ðÆ«{8ø6 @  WV„0?d 0Ç««ptÞ @  WW…0?d pÇ«•½ÑÝ @  WX†0?d °Ç«µHÓ# @  WY‡0?d ðÇ«ëK‰% @  WZˆ0?d 0ȫߴ8 @  W[‰0?d pȫꂬ @  W\Š0?d °È«ÊwR @  W]‹0?d ðÈ« d¿s @  W^Œ0?d 0É«Ü,3› @  W_0?d pÉ«^FÈ @  W`Ž0?d °É«~³6 @  Wa0?d ðÉ«EàµÜ @  Wb0?d 0Ê«ؤ @  Wc‘0?d pʫ풉 @  Wd’0?d °Ê«Ígw @  We“0?d ðÊ« t¯V @  Wf”0?d 0Ë«Û<#¾ @  Wg•0?d pË«åñ†½ @  Wh–0?d °Ë«Å„C @  Wi—0?d ðË«›ÞE @  Wj˜0?d 0Ì«‚I-J @  Wk™0?d pÌ«·,Þ @  Wlš0?d °Ì«—Š.  @  Wm›0?d ðÌ«Q™— @  Wnœ0?d 0Í«Ñé @  Wo0?d pÍ«½€  @  Wpž0?d °Í«2H‚ô @  WqŸ0?d ðÍ«”¬ƒÂ @  Wr 0?d 0Ϋ è# @  Ws¡0?d pΫ<Þ"— @  Wt¢0?d °Î«+ i @  Wu£0?d ðΫÚ8™H @  Wv¤0?d 0Ï« p  @  Ww¥0?d pÏ«4½°£ @  Wx¦0?d °Ï«H²] @  Wy§0?d ðÏ«JKè[ @  Wz¨0?d 0Ыô•Té @  W{©0?d pЫÁ£U} @  W|ª0?d °Ð«áVWƒ @  W}«0?d ðЫ'Eî¢ @  W~¬0?d 0Ñ«÷ bJ @  W­0?d pÑ«86èº @  W€®0?d °Ñ«ÃêD @  W¯0?d ðÑ«#Ò® @  W‚°0?d 0Ò«¾Ôro @  Wƒ±0?d pÒ«‹âsû @  W„²0?d °Ò««q @  W…³0?d ðÒ«mÈ$ @  W†´0?d 0Ó«½LDÌ @  W‡µ0?d pÓ«ƒáÏ @  Wˆ¶0?d °Ó«£tã1 @  W‰·0?d ðÓ«ýw¹7 @  WЏ0?d 0Ô«ä9J8 @  W‹¹0?d pÔ«ÑK¬ @  WŒº0?d °Ô«ñúIR @  W»0?d ðÔ«7éðs @  W޼0?d 0Õ«ç¡|› @  W½0?d pÕ«tÍçx @  W¾0?d °Õ«T8å† @  W‘¿0?d ðÕ«Œñ¡ @  W’À0?d 0Ö«ŸÈQ` @  W“Á0?d pÖ«ªþPô @  W”Â0?d °Ö«Š R  @  W•Ã0?d ðÖ«Lë+ @  W–Ä0?d 0׫œPgà @  W—Å0?d p׫¢ÂÀ @  W˜Æ0?d °×«‚hÀ> @  W™Ç0?d ð׫Ükš8 @  WšÈ0?d 0Ø«è”% @  W›É0?d pثݢ± @  WœÊ0?d °Ø«ýWO @  WË0?d ðØ«;D¬n @  WžÌ0?d 0Ù«ë † @  WŸÍ0?d pÙ«ifœÕ @  W Î0?d °Ù«I“ž+ @  W¡Ï0?d ðÙ«Kz @  W¢ Ð0?d 0Ú«ÖCÚÕ @  W£ Ñ0?d pÚ«ãuÛA @  W¤ Ò0?d °Ú«Àٿ @  W¥ Ó0?d ðÚ«“`ž @  W¦ Ô0?d 0Û«ÕÛìv @  W§ Õ0?d pÛ«ëIu @  W¨ Ö0?d °Û«ËãK‹ @  W© ×0?d ðÛ«•à @  Wª Ø0?d 0Ü«Œ®â‚ @  W« Ù0?d pÜ«¹˜ã @  W¬ Ú0?d °Ü«™máè @  W­ Û0?d ðÜ«_~XÉ @  W® Ü0?d 0Ý«6Ô! @  W¯ Ý0?d pÝ«ZO @  W° Þ0?d °Ý«<¯M< @  W± ß0?d ðÝ«šKL  @  W² à0?d 0Þ«ìË @  W³ á0?d pÞ«29í_ @  W´ â0?d °Þ«Ìï¡ @  Wµ ã0?d ðÞ«ÔßV€ @  W¶ ä0?d 0ß«—Úh @  W· å0?d pß«:Zk @  W¸ æ0?d uÐà«/°ß«¯}• @  W¹ ç0?d ðß«¿Â“ @  Wºè0?d H૦fBe @  W»é0?d ˆà«14VÑ @  W¼ê0?d È૳¥A @  W½ë0?d á«'oc @  W¾ì0?d Há«¥þtÆ @  W¿í0?d ˆá«+÷Û' @  WÀî0?d Èá«©fÌù @  WÁï0?d â«àC  @  WÂð0?d Hâ«qTÒ @  WÃñ0?d ˆâ«˜#@f @  WÄò0?d È⫲W¸ @  WÅó0?d 㫎xu¯ @  WÆô0?d Hã« ébq @  WÇõ0?d ˆã«@ÒR @  WÈö0?d Èã«ÑÅŒ @  WÉ÷0?d ä«× {[ @  WÊø0?d Hä«Uœl… @  WËù0?d ˆä«ÂÎx1 @  WÌú0?d Èä«@_oï @  WÍû0?d å«Ô•Mø @  WÎü0?d Hå«VZ& @  WÏý0?d ˆå«g Ôå @  WÐþ0?d Èå«åÃ; @  WÑÿ0?d æ«Î]a @  WÒ1?d Hæ«LÌvC @  WÓ1?d ˆæ«Ûžb÷ @  WÔ1?d Èæ«Yu) @  WÕ1?d ç«ÍÅW> @  WÖ1?d Hç«OT@à @  W×1?d ˆç«Óýðà @  WØ1?d Èç«Qlç @  WÙ1?d 諹&Ø @  WÚ1?d Hè«;1 @  WÛ 1?d ˆè«¬Â%² @  WÜ 1?d Èè«.S2l @  WÝ 1?d 髺™{ @  WÞ 1?d Hé«8¥ @  Wß 1?d ˆé«®Ö @  Wà1?d È髚—¹ @  Wá1?d ꫾6ý @  Wâ1?d€ Hê«5q @  X1?d ˆê«b iì @  X1?d Èê«à˜~2 @  X1?d 뫱§È @  X1?d Hë«3а @  X1?d ˆë«a‘_O @  X1?d Èë«ãH‘ @  X1?d ì«èn©< @  X1?d Hì«jÿ¾â @  X 1?d ˆì«8äQ» @  X 1?d È쫺uFe @  X 1?d í«ëöŸŸ @  X 1?d Hí«igˆA @  X 1?d ˆí«;|g @  X1?d Èí«¹ípÆ @  X1?d î«cϧu @  X 1?d Hî«á^°« @  X!1?d ˆî«³E_ò @  X"1?d Èî«1ÔH, @  X#1?d ï«`W‘Ö @  X$1?d Hï«âƆ @  X%1?d ˆï«°ÝiQ @  X&1?d Èï«2L~ @  X'1?d 𫞲П @  X(1?d Hð«#ÇA @  X)1?d ˆð«N8( @  X*1?d Èð«Ì©?Æ @  X+1?d ñ«*æ< @  X,1?d Hñ«»ñâ @  X-1?d ˆñ«M » @  X.1?d Èñ«Ï1 e @  X/1?d ò«™¢Àº @  X 01?d Hò«3×d @  X!11?d ˆò«I(8= @  X"21?d Èò«˹/ã @  X#31?d ó«š:ö @  X$41?d Hó««áÇ @  X%51?d ˆó«J°ž @  X&61?d Èó«È!@ @  X'71?d ô«ÃOøí @  X(81?d Hô«AÞï3 @  X)91?d ˆô«Åj @  X*:1?d Èô«‘T´ @  X+;1?d õ«À×ÎN @  X,<1?d Hõ«BFÙ @  X-=1?d ˆõ«]6É @  X.>1?d Èõ«’Ì! @  X/?1?d ö«¸¾ãµ @  X0@1?d Hö«:/ôk @  X1A1?d ˆö«h42 @  X2B1?d Èö«ê¥ ì @  X3C1?d ÷«»&Õ @  X4D1?d H÷«9·ÂÈ @  X5E1?d ˆ÷«k¬-‘ @  X6F1?d È÷«é=:O @  X7G1?d ø«Ïâ¤ð @  X8H1?d Hø«Ms³. @  X9I1?d ˆø«h\w @  X:J1?d Èø«ùK© @  X;K1?d ù«Ìz’S @  X<L1?d Hù«Në… @  X=M1?d ˆù«ðjÔ @  X>N1?d Èù«ža}  @  X?O1?d ú«fõ²G @  X@P1?d Hú«äd¥™ @  XAQ1?d ˆú«¶JÀ @  XBR1?d Èú«4î] @  XCS1?d û«em„ä @  XDT1?d Hû«çü“: @  XEU1?d ˆû«µç|c @  XFV1?d Èû«7vk½ @  XGW1?d ü«<Š @  XHX1?d Hü«¾‰Î @  XIY1?d ˆü«ì’r— @  XJZ1?d Èü«neI @  XK[1?d ý«?€¼³ @  XL\1?d Hý«½«m @  XM]1?d ˆý«ï D4 @  XN^1?d Èý«m›Sê @  XO_1?d þ«·¹„Y @  XP`1?d Hþ«5(“‡ @  XQa1?d ˆþ«g3|Þ @  XRb1?d Èþ«å¢k @  XSc1?d ÿ«´!²ú @  XTd1?d Hÿ«6°¥$ @  XUe1?d ˆÿ«d«J} @  XVuЬf1?d Èÿ«$“ºv @  XWg1?d ¬uºJ @  XXh1?d `¬ä­” @  XYi1?d  ¬ÓÿBÍ @  XZj1?d à¬QnU @  X[k1?d ¬íŒé @  X\l1?d `¬‚|›7 @  X]m1?d  ¬Ðgtn @  X^n1?d à¬Röc° @  X_o1?d ¬eªo @  X`p1?d `¬†ô½± @  Xaq1?d  ¬ÔïRè @  Xbr1?d à¬V~E6 @  Xcs1?d ¬ýœÌ @  Xdt1?d `¬…l‹ @  Xeu1?d  ¬×wdK @  Xfv1?d à¬Uæs• @  Xgw1?d ¬^ˆ’8 @  Xhx1?d `¬Ü…æ @  Xiy1?d  ¬Žj¿ @  Xjz1?d ଠ“}a @  Xk{1?d ¬]¤› @  Xl|1?d `¬ß³E @  Xm}1?d  ¬š\ @  Xn~1?d ଠK @  Xo1?d ¬8¿Ýò @  Xp€1?d `¬º.Ê, @  Xq1?d  ¬è5%u @  Xr‚1?d à¬j¤2« @  Xsƒ1?d ¬;'ëQ @  Xt„1?d `¬¹¶ü @  Xu…1?d  ¬ë­Ö @  Xv†1?d à¬i< @  Xw‡1?d ¬Oãš· @  Xxˆ1?d `¬Íri @  Xy‰1?d  ¬Ÿib0 @  XzŠ1?d à¬øuî @  X{‹1?d ¬L{¬ @  X|Œ1?d ` ¬Îê»Ê @  X}1?d   ¬œñT“ @  X~Ž1?d à ¬`CM @  X1?d ¬¢¼1 @  X€1?d ` ¬‡3«ï @  X‘1?d   ¬Õ(D¶ @  X‚’1?d à ¬W¹Sh @  Xƒ“1?d ¬:Š’ @  X„”1?d ` ¬„«L @  X…•1?d   ¬Ö°r @  X†–1?d à ¬T!eË @  X‡—1?d ¬_O„f @  Xˆ˜1?d ` ¬ÝÞ“¸ @  X‰™1?d   ¬Å|á @  XŠš1?d à ¬ Tk? @  X‹›1?d ¬\ײÅ @  XŒœ1?d ` ¬ÞF¥ @  X1?d   ¬Œ]JB @  XŽž1?d à ¬Ì]œ @  XŸ1?d ¬ÔîŠ/ @  X 1?d `¬Vñ @  X‘¡1?d  ¬dr¨ @  X’¢1?d ଆõev @  X“£1?d ¬×v¼Œ @  X”¤1?d `¬Uç«R @  X•¥1?d  ¬üD  @  X–¦1?d ଅmSÕ @  X—§1?d ¬)“ýÅ @  X˜¨1?d `¬«ê @  X™©1?d  ¬ùB @  Xšª1?d à¬{ˆœ @  X›«1?d ¬* Ëf @  Xœ¬1?d `¬¨šÜ¸ @  X­1?d  ¬ú3á @  Xž®1?d à¬x$? @  XŸ¯1?d ¬.ƒíà @  X °1?d `¬¬ú> @  X¡±1?d  ¬þ g @  X¢²1?d à¬|˜¹ @  X£³1?d ¬-ÛC @  X¤´1?d `¬¯ŠÌ @  X¥µ1?d  ¬ý‘#Ä @  X¦¶1?d à¬4 @  X§·1?d ¬tnÕ· @  X¨¸1?d `¬öÿÂi @  X©¹1?d  ¬¤ä-0 @  Xªº1?d à¬&u:î @  X«»1?d ¬wöã @  X¬¼1?d `¬õgôÊ @  X­½1?d  ¬§|“ @  X®¾1?d à¬%í M @  X¯¿1?d ¬ŸÎï @  X°À1?d `¬Ù1 @  X±Á1?d  ¬ß6h @  X²Â1?d à¬]„!¶ @  X³Ã1?d ¬ øL @  X´Ä1?d `¬Ž–ï’ @  XµÅ1?d  ¬ÜË @  X¶Æ1?d à¬^ @  X·Ç1?d ¬xɪ @  X¸È1?d `¬úRžt @  X¹É1?d  ¬¨Iq- @  XºÊ1?d à¬*Øfó @  X»Ë1?d ¬{[¿  @  X¼Ì1?d `¬ùʨ× @  X½Í1?d  ¬«ÑGŽ @  X¾Î1?d à¬)@PP @  X¿Ï1?d ¬ÑÔŸ @  XÀÐ1?d `¬SEˆÃ @  XÁÑ1?d  ¬^gš @  XÂÒ1?d ଃÏpD @  XÃÓ1?d ¬ÒL©¾ @  XÄÔ1?d `¬Pݾ` @  XÅÕ1?d  ¬ÆQ9 @  XÆÖ1?d ଀WFç @  XÇ×1?d ¬‹9§J @  XÈØ1?d `¬ ¨°” @  XÉÙ1?d  ¬[³_Í @  XÊÚ1?d à¬Ù"H @  XËÛ1?d ¬ˆ¡‘é @  XÌÜ1?d `¬ 0†7 @  XÍÝ1?d  ¬X+in @  XÎÞ1?d à¬Úº~° @  XÏß1?d ¬˜© @  XÐà1?d `¬‚ ¾Ý @  XÑá1?d  ¬ÐQ„ @  XÒâ1?d à¬RƒFZ @  XÓã1?d ¬Ÿ  @  XÔä1?d `¬‘ˆ~ @  XÕå1?d  ¬ÓŠg'uÐ ¬ @  XÖæ1?d à¬Qpù @  X×ç1?d 8 ¬20¼= @  XØè1?d x ¬°¡«ã @  XÙé1?d ¸ ¬âºDº @  XÚê1?d ø ¬`+Sd @  XÛë1?d 8!¬1¨Šž @  XÜì1?d x!¬³9@ @  XÝí1?d ¸!¬á"r @  XÞî1?d ø!¬c³eÇ @  Xßï1?d 8"¬5 ¬ @  Xàð1?d x"¬·±»Æ @  Xáñ1?d ¸"¬åªTŸ @  Xâò1?d€ ø"¬ø_ç @  Yó1?d 8#¬£:Î4 @  Yô1?d x#¬!«Ùê @  Yõ1?d ¸#¬¶ùÍ^ @  Yö1?d ø#¬4hÚ€ @  Y÷1?d 8$¬ñ´dW @  Yø1?d x$¬s%s‰ @  Yù1?d ¸$¬ïŒÃª @  Yú1?d ø$¬mÔt @  Y û1?d 8%¬ù×öc @  Y ü1?d x%¬{Fá½ @  Y ý1?d ¸%¬ìõ  @  Y þ1?d ø%¬n…â× @  Y ÿ1?d 8&¬÷guT @  Y2?d x&¬uöbŠ @  Y2?d ¸&¬DþìI @  Y2?d ø&¬Æoû— @  Y2?d 8'¬R¥Ù€ @  Y2?d x'¬Ð4Î^ @  Y2?d ¸'¬GfÚê @  Y2?d ø'¬Å÷Í4 @  Y2?d 8(¬-š ñ @  Y2?d x(¬¯ / @  Y 2?d ¸(¬3¢«  @  Y 2?d ø(¬±3¼Ò @  Y 2?d 8)¬%ùžÅ @  Y 2?d x)¬§h‰ @  Y 2?d ¸)¬0:¯ @  Y2?d ø)¬²«Šq @  Y2?d 8*¬–-„ @  Y2?d x*¬¼Z @  Y2?d ¸*¬4²») @  Y 2?d ø*¬¶#¬÷ @  Y!2?d 8+¬"éŽà @  Y"2?d x+¬ x™> @  Y#2?d ¸+¬7*Š @  Y$2?d ø+¬µ»šT @  Y%2?d 8,¬pg$ƒ @  Y&2?d x,¬òö3] @  Y'2?d ¸,¬n_ƒ~ @  Y(2?d ø,¬ìΔ  @  Y)2?d 8-¬x¶· @  Y*2?d x-¬ú•¡i @  Y+2?d ¸-¬mǵÝ @  Y,2?d ø-¬ïV¢ @  Y-2?d 8.¬Vg* @  Y. 2?d x.¬Ôöô @  Y/!2?d ¸.¬åþ7 @  Y0"2?d ø.¬gošé @  Y1#2?d 8/¬ó¥¸þ @  Y2$2?d x/¬q4¯  @  Y3%2?d ¸/¬æf»” @  Y4&2?d ø/¬d÷¬J @  Y5'2?d 80¬»]  @  Y6(2?d x0¬„*Jþ @  Y7)2?d ¸0¬ƒúÝ @  Y8*2?d ø0¬ší @  Y9+2?d 81¬ØÏ @  Y:,2?d x1¬ŒIØÊ @  Y;-2?d ¸1¬Ì~ @  Y<.2?d ø1¬™ŠÛ  @  Y=/2?d 82¬½ TU @  Y>02?d x2¬?C‹ @  Y?12?d ¸2¬±”ìj @  Y@22?d ø2¬3û´ @  YA32?d 83¬§ÏÙ£ @  YB42?d x3¬%^Î} @  YC52?d ¸3¬² ÚÉ @  YD62?d ø3¬0Í @  YE72?d 84¬õAsÀ @  YF82?d x4¬wÐd @  YG92?d ¸4¬ëyÔ= @  YH:2?d ø4¬ièÃã @  YI;2?d 85¬ý"áô @  YJ<2?d x5¬³ö* @  YK=2?d ¸5¬èáâž @  YL>2?d ø5¬jpõ@ @  YM?2?d 86¬#Vx @  YN@2?d x6¬¡€A¦ @  YOA2?d ¸6¬ˆÏe @  YPB2?d ø6¬Ø» @  YQC2?d 87¬†Óú¬ @  YRD2?d x7¬Bír @  YSE2?d ¸7¬“ùÆ @  YTF2?d ø7¬î @  YUG2?d 88¬ùì/Ý @  YVH2?d x8¬{}8 @  YWI2?d ¸8¬çÔˆ  @  YXJ2?d ø8¬eEŸþ @  YYK2?d 89¬ñ½é @  YZL2?d x9¬sª7 @  Y[M2?d ¸9¬äL¾ƒ @  Y\N2?d ø9¬fÝ©] @  Y]O2?d 8:¬B[&¨ @  Y^P2?d x:¬ÀÊ1v @  Y_Q2?d ¸:¬àĘ @  Y`R2?d ø:¬bUÛ @  YaS2?d 8;¬öŸ­Ì @  YbT2?d x;¬tº @  YcU2?d ¸;¬ã\®¦ @  YdV2?d ø;¬a͹x @  YeW2?d 8<¬¤¯ @  YfX2?d x<¬&€q @  YgY2?d ¸<¬º) R @  YhZ2?d ø<¬8¸·Œ @  Yi[2?d 8=¬¬r•› @  Yj\2?d x=¬.ã‚E @  Yk]2?d ¸=¬¹±–ñ @  Yl^2?d ø=¬; / @  Ym_2?d 8>¬‚7 @  Yn`2?d x>¬€ Ø @  Yoa2?d ¸>¬1ˆ® @  Ypb2?d ø>¬³¹Å @  Yqc2?d 8?¬'Ó›Ò @  Yrd2?d x?¬¥BŒ  @  Yse2?duÐ@¬7 ¸?¬2˜¸ @  Ytf2?d ø?¬°f @  Yug2?d P@¬¯¿x‚ @  Yvh2?d @¬Jz| @  Ywi2?d Ð@¬±‡ß @  Yxj2?d A¬aÏS— @  Yyk2?d PA¬§Üê¶ @  Yzl2?d A¬‡)èH @  Y{m2?d ÐA¬²éÜ @  Y|n2?d B¬/[I @  Y}o2?d PB¬q÷ @  Y~p2?d B¬4ýs  @  Yq2?d ÐB¬ûÆùù @  Y€r2?d C¬+Žu @  Ys2?d PC¬íÌ0 @  Y‚t2?d C¬ÍhÎÎ @  Yƒu2?d ÐC¬ø^ÏZ @  Y„v2?d D¬áî6x @  Y¾°2?d R¬4† @  Y¿±2?d ÐR¬2vŽG @  YÀ²2?d S¬â>¯ @  YÁ³2?d PS¬$-»Ž @  Y´2?d S¬عp @  Yõ2?d ÐS¬1î¸ä @  YĶ2?d T¬( Kë @  YÅ·2?d PT¬v£í @  YƸ2?d T¬VV @  Yǹ2?d ÐT¬h›¶ @  YȺ2?d U¬¸Ó:ø @  YÉ»2?d PU¬~ÀƒÙ @  Yʼ2?d U¬^5' @  Y˽2?d ÐU¬k€³ @  Y̾2?d V¬öG r @  YÍ¿2?d PV¬ ó4U @  YÎÀ2?d V¬€6« @  YÏÁ2?d ÐV¬j­H @  YÐÂ2?d W¬Ã"!  @  YÑÃ2?d PW¬1˜ @  YÒÄ2?d W¬%Äš @  YÓÅ2?d ÐW¬ò›ë @  YÔÆ2?d X¬$ ö @  YÕÇ2?d PX¬zMð @  YÖÈ2?d X¬ZûO @  Y×É2?d ÐX¬d6ê  @  YØÊ2?d Y¬´~få @  YÙË2?d PY¬rmßÄ @  YÚÌ2?d Y¬R˜Ý: @  YÛÍ2?d ÐY¬g®Ü® @  YÜÎ2?d Z¬úê|o @  YÝÏ2?d PZ¬Á¹D… @  YÞÐ2?d Z¬áLF{ @  YßÑ2?d ÐZ¬c&ú( @  YàÒ2?d [¬³nvÀ @  YáÓ2?d P[¬u}Ïá @  YâÔ2?d€ [¬”Ï: @  ZÕ2?d Ð[¬@¸s¢ @  ZÖ2?d \¬Yö€­ @  Z×2?d P\¬¼!F @  ZØ2?d \¬âI#¸ @  ZÙ2?d Ð\¬6ÙÁ @  ZÚ2?d ]¬Â~U) @  ZÛ2?d P]¬Êß³r @  ZÜ2?d ]¬ê*±Œ @  Z Ý2?d Ð]¬UKõ @  Z Þ2?d ^¬‡ë4 @  Z ß2?d P^¬ä¼ï @  Z à2?d ^¬ÄI @  Z á2?d Ð^¬46éh @  Zâ2?d _¬ä~e€ @  Zã2?d P_¬A~½; @  Zä2?d _¬a‹¿Å @  ZuÐ`¬å2?d Ð_¬‘ôE¼ @  Zæ2?d (`¬/ ð$ @  Zç2?d h`¬´FQÏ @  Zè2?d ¨`¬”³S1 @  Zé2?d è`¬dÌ©H @  Zê2?d (a¬´„%  @  Zë2?d ha¬¼%Ãû @  Zì2?d ¨a¬œÐÁ @  Zí2?d èa¬l¯;| @  Zî2?d (b¬ñ뛽 @  Zï2?d hb¬ñXº @  Zð2?d ¨b¬/ZD @  Zñ2?d èb¬ß{ = @  Zò2?d (c¬3,Õ @  Zó2?d hc¬»5ÓÞ @  Z ô2?d ¨c¬›ÀÑ  @  Z!õ2?d èc¬k¿+Y @  Z"ö2?d (d¬rñØV @  Z#÷2?d hd¬é»y½ @  Z$ø2?d ¨d¬ÉN{C @  Z%ù2?d èd¬91: @  Z&ú2?d (e¬éy Ò @  Z'û2?d he¬áØë‰ @  Z(ü2?d ¨e¬Á-éw @  Z)ý2?d èe¬1R @  Z*þ2?d (f¬¬³Ï @  Z+ÿ2?d hf¬]J]› @  Z,3?d ¨f¬}¿_e @  Z-3?d èf¬À¥ @  Z.3?d (g¬]ˆ)ô @  Z/3?d hg¬øˆñO @  Z03?d ¨g¬Ø}ó± @  Z13?d èg¬( È @  Z23?d (h¬ý…Õ @  Z33?d hh¬‡·$> @  Z43?d ¨h¬§B&À @  Z5 3?d èh¬W=ܹ @  Z6 3?d (i¬‡uPQ @  Z7 3?d hi¬Ô¶  @  Z8 3?d ¨i¬¯!´ô @  Z9 3?d èi¬_^N @  Z:3?d (j¬ÂîL @  Z;3?d hj¬<-K @  Z<3?d ¨j¬õ/µ @  Z=3?d èj¬ìŠÕÌ @  Z>3?d (k¬<ÂY$ @  Z?3?d hk¬&འ@  Z@3?d ¨k¬6¢C @  ZA3?d èk¬öIX: @  ZB3?d (l¬ï«5 @  ZC3?d hl¬tM Þ @  ZD3?d ¨l¬T¸  @  ZE3?d èl¬¤ÇòY @  ZF3?d (m¬t~± @  ZG3?d hm¬|.˜ê @  ZH3?d ¨m¬\Ûš @  ZI3?d èm¬¬¤`m @  ZJ3?d (n¬1àÀ¬ @  ZK3?d hn¬RM:w @  ZL 3?d ¨n¬r¸8‰ @  ZM!3?d èn¬‚ÇÂð @  ZN"3?d (o¬RN @  ZO#3?d ho¬÷–£ @  ZP$3?d ¨o¬×z”] @  ZQ%3?d èo¬'n$ @  ZR&3?d (p¬™ÛÒ– @  ZS'3?d hp¬‘s} @  ZT(3?d ¨p¬"dqƒ @  ZU)3?d èp¬Ò‹ú @  ZV*3?d (q¬S @  ZW+3?d hq¬ òáI @  ZX,3?d ¨q¬*ã· @  ZY-3?d èq¬ÚxÎ @  ZZ.3?d (r¬G<¹ @  Z[/3?d hr¬¹&z @  Z\03?d ¨r¬™Óxö @  Z]13?d èr¬i¬‚ @  Z^23?d (s¬¹äg @  Z_33?d hs¬ âñl @  Z`43?d ¨s¬-ó’ @  Za53?d ès¬Ýh ë @  Zb63?d (t¬Ä&úä @  Zc73?d ht¬_l[ @  Zd83?d ¨t¬™Yñ @  Ze93?d èt¬棈 @  Zf:3?d (u¬_®/` @  Zg;3?d hu¬WÉ; @  Zh<3?d ¨u¬wúËÅ @  Zi=3?d èu¬‡…1¼ @  Zj>3?d (v¬Á‘} @  Zk?3?d hv¬‰<~· @  Zl@3?d ¨v¬©É|I @  ZmA3?d èv¬Y¶†0 @  ZnB3?d (w¬‰þ Ø @  ZoC3?d hw¬,þÒc @  ZpD3?d ¨w¬ Ð @  ZqE3?d èw¬üt*ä @  ZrF3?d (x¬È‹¦ù @  ZsG3?d hx¬SÁ @  ZtH3?d ¨x¬s4ì @  ZuI3?d èx¬ƒKÿ• @  ZvJ3?d (y¬Ss} @  ZwK3?d hy¬[¢•& @  ZxL3?d ¨y¬{W—Ø @  ZyM3?d èy¬‹(m¡ @  ZzN3?d (z¬lÍ` @  Z{O3?d hz¬èvg @  Z|P3?d ¨z¬ȃ ™ @  Z}Q3?d èz¬8üöà @  Z~R3?d ({¬è´z @  ZS3?d h{¬ã³  @  Z€T3?d ¨{¬1±^ @  ZU3?d è{¬ÁiK' @  Z‚V3?d (|¬Ø'¸( @  ZƒW3?d h|¬Cmà @  Z„X3?d ¨|¬c˜= @  Z…Y3?d è|¬“çáD @  Z†Z3?d (}¬C¯m¬ @  Z‡[3?d h}¬K‹÷ @  Zˆ\3?d ¨}¬kû‰  @  Z‰]3?d è}¬›„sp @  ZŠ^3?d (~¬ÀÓ± @  Z‹_3?d h~¬em)j @  ZŒ`3?d ¨~¬E˜+” @  Za3?d è~¬µçÑí @  ZŽb3?d (¬e¯] @  Zc3?d h¬À¯…¾ @  Zd3?d ¨¬uЀ¬'àZ‡@ @  Z‘e3?d è¬%}9 @  Z’f3?d @€¬~›ŸM @  Z“g3?d €€¬Gµ+† @  Z”h3?d À€¬Å$ô3?d Ø£¬”gÕ @  [?õ3?d ¤¬#/9Å @  [@ö3?d X¤¬¡¾. @  [A÷3?d ˜¤¬]Ùa= @  [Bø3?d ؤ¬ßHvã @  [Cù3?d ¥¬¸§ìA @  [Dú3?d X¥¬:6ûŸ @  [Eû3?d ˜¥¬^AWž @  [Fü3?d Ø¥¬ÜÐ@@ @  [Gý3?d ¦¬ýÈR\ @  [Hþ3?d X¦¬YE‚ @  [Iÿ3?d ˜¦¬Õ!z @  [J4?d ئ¬W°mS @  [K4?d §¬0_÷ñ @  [L4?d X§¬²Îà/ @  [M4?d ˜§¬Ö¹L. @  [N4?d ا¬T([ð @  [O4?d ¨¬q*[Ð @  [P4?d X¨¬ó»L @  [Q4?d ˜¨¬Ü( @  [R4?d ب¬Mö @  [S 4?d ©¬ꢎT @  [T 4?d X©¬h3™Š @  [U 4?d ˜©¬ D5‹ @  [V 4?d Ø©¬ŽÕ"U @  [W 4?d ª¬¯Í0I @  [X4?d Xª¬-\'— @  [Y4?d ˜ª¬´k ] @  [Z4?d ت¬6úƒ @  [[4?d «¬Q‡! @  [\4?d X«¬Ó„ÿ @  []4?d ˜«¬·ó<þ @  [^4?d Ø«¬5b+  @  [_4?d ¬¬,×s¢ @  [`4?d X¬¬®Fd| @  [a4?d ˜¬¬R!+Z @  [b4?d ج¬а<„ @  [c4?d ­¬·_¦& @  [d4?d X­¬5αø @  [e4?d ˜­¬Q¹ù @  [f4?d Ø­¬Ó( ' @  [g4?d ®¬ò0; @  [h4?d X®¬p¡å @  [i4?d ˜®¬t!ó @  [j 4?d Ø®¬ö° - @  [k!4?d ¯¬‘_– @  [l"4?d X¯¬ÎQ @  [m#4?d ˜¯¬w¹-P @  [n$4?d د¬õ(:Ž @  [o%4?d °¬Z  @  [p&4?d X°¬Øšß @  [q'4?d ˜°¬$ýRù @  [r(4?d ذ¬¦lE' @  [s)4?d ±¬Áƒß… @  [t*4?d X±¬CÈ[ @  [u+4?d ˜±¬'edZ @  [v,4?d ر¬¥ôs„ @  [w-4?d ²¬„ìa˜ @  [x.4?d X²¬}vF @  [y/4?d ˜²¬ŸJ[Œ @  [z04?d ز¬ÛLR @  [{14?d ³¬z4Öð @  [|24?d X³¬ø¥Á. @  [}34?d ˜³¬œÒm/ @  [~44?d س¬Czñ @  [54?d ´¬J§Ð @  [€64?d X´¬È6 @  [74?d ˜´¬4QL( @  [‚84?d Ø´¬¶À[ö @  [ƒ94?d µ¬Ñ/ÁT @  [„:4?d Xµ¬S¾ÖŠ @  […;4?d ˜µ¬7Éz‹ @  [†<4?d ص¬µXmU @  [‡=4?d ¶¬”@I @  [ˆ>4?d X¶¬Ñh— @  [‰?4?d ˜¶¬âi @  [Š@4?d ض¬`~N @  [‹A4?d ·¬äì @  [ŒB4?d X·¬…îó2 @  [C4?d ˜·¬á™_3 @  [ŽD4?d Ø·¬cHí @  [E4?d ¸¬F HÍ @  [F4?d X¸¬Ä›_ @  [‘G4?d ˜¸¬8ü5 @  [’H4?d ظ¬ºmë @  [“I4?d ¹¬Ý‚I @  [”J4?d X¹¬_Š— @  [•K4?d ˜¹¬;d&– @  [–L4?d ع¬¹õ1H @  [—M4?d º¬˜í#T @  [˜N4?d Xº¬|4Š @  [™O4?d ˜º¬ƒK@ @  [šP4?d غ¬Úž @  [›Q4?d »¬f5”< @  [œR4?d X»¬䤃â @  [S4?d ˜»¬€Ó/ã @  [žT4?d Ø»¬B8= @  [ŸU4?d ¼¬÷`¿ @  [ V4?d X¼¬™fwa @  [¡W4?d ˜¼¬e8G @  [¢X4?d ؼ¬ç/™ @  [£Y4?d ½¬€µ; @  [¤Z4?d X½¬î¢å @  [¥[4?d ˜½¬f™ä @  [¦\4?d ؽ¬ä: @  [§]4?d ¾¬Å & @  [¨^4?d X¾¬Gø @  [©_4?d ˜¾¬Cî @  [ª`4?d ؾ¬Á0 @  [«a4?d ¿¬¦…’ @  [¬b4?d X¿¬$î’L @  [­c4?d ˜¿¬@™>M @uÐÀ¬  [®d4?d Ø¿¬Â)“ @  [¯e4?d 0À¬·ôü @  [°f4?d pÀ¬5”ã" @  [±g4?d °À¬Éó¬ @  [²h4?d ðÀ¬Kb»Ú @  [³i4?d 0Á¬,!x @  [´j4?d pÁ¬®6¦ @  [µk4?d °Á¬Êkš§ @  [¶l4?d ðÁ¬Húy @  [·m4?d 0¬iâŸe @  [¸n4?d p¬ësˆ» @  [¹o4?d °Â¬rD¥q @  [ºp4?d ð¬ðÕ²¯ @  [»q4?d 0ì—:(  @  [¼r4?d pì«?Ó @  [½s4?d °Ã¬qÜ“Ò @  [¾t4?d ðìóM„  @  [¿u4?d 0ĬDÿÚ @  [Àv4?d pĬÆnÍ @  [Áw4?d °Ä¬: ‚ä @  [Âx4?d ðĬ¸˜•: @  [Ãy4?d 0Ŭßw˜ @  [Äz4?d pŬ]æF @  [Å{4?d °Å¬9‘´G @  [Æ|4?d ðŬ»£™ @  [Ç}4?d 0Ƭš±… @  [È~4?d pƬ‰¦[ @  [É4?d °Æ¬ñŸóÎ @  [Ê€4?d ðƬsä @  [Ë4?d 0Ǭá~² @  [Ì‚4?d pǬ–pil @  [̓4?d °Ç¬òÅm @  [΄4?d ðǬp–Ò³ @  [Ï…4?d 0ȬU”Ò“ @  [І4?d pȬ×ÅM @  [ч4?d °È¬+bŠk @  [Òˆ4?d ðȬ©óµ @  [Ó‰4?d 0ɬÎ @  [ÔŠ4?d pɬLÉ @  [Õ‹4?d °É¬(ú¼È @  [ÖŒ4?d ðɬªk« @  [×4?d 0ʬ‹s¹  @  [ØŽ4?d pʬ â®Ô @  [Ù4?d °Ê¬Õƒ @  [Ú4?d ðʬD”À @  [Û‘4?d 0ˬu«b @  [Ü’4?d pˬ÷:¼ @  [Ý“4?d °Ë¬“Mµ½ @  [Þ”4?d ðˬÜ¢c @  [ß•4?d 0̬iúá @  [à–4?d p̬Šøí? @  [á—4?d °Ì¬vŸ¢ @  [â˜4?d€ ð̬rX~ @  \™4?d 0ͬôöÏõ @  \š4?d pͬvgØ+ @  \›4?d °Í¬×YÇ @  \œ4?d ðͬUȘ @  \4?d 0άºbÕ @  \ž4?d pά8ó¡ @  \Ÿ4?d °Î¬òÁ‰Í @  \ 4?d ðάpPž @  \ ¡4?d 0ϬÒöÿ\ @  \ ¢4?d pϬPgè‚ @  \ £4?d °Ï¬ñY¿n @  \ ¤4?d ðϬsȨ° @  \ ¥4?d 0Ь¿øù¥ @  \¦4?d pЬ=iî{ @  \§4?d °Ð¬¢ÀÇ @  \¨4?d ðЬ Œ× @  \©4?d 0Ѭ‚*¶V @  \ª4?d pѬ»¡ˆ @  \«4?d °Ñ¬¡…öd @  \¬4?d ðѬ#Ạ@  \­4?d 0Ò¬̾¬Ü @  \®4?d pÒ¬N/» @  \¯4?d °Ò¬ªÉ² @  \°4?d ðÒ¬›;Þl @  \±4?d 0Ó¬9¿# @  \²4?d pÓ¬» ¨ý @  \³4?d °Ó¬2ÿ @  \´4?d ðÓ¬˜£èÏ @  \µ4?d 0Ô¬óög @  \¶4?d pÔ¬q’á¹ @  \·4?d °Ô¬ÿàèµ @  \ ¸4?d ðÔ¬}qÿk @  \!¹4?d 0Õ¬ßמ$ @  \"º4?d pÕ¬]F‰ú @  \#»4?d °Õ¬üxÞ @  \$¼4?d ðÕ¬~éÉÈ @  \%½4?d 0Ö¬‘C„® @  \&¾4?d pÖ¬Ò“p @  \'¿4?d °Ö¬)°Í  @  \(À4?d ðÖ¬«!ÚÓ @  \)Á4?d 0׬ ‡»œ @  \*Â4?d p׬‹¬B @  \+Ã4?d °×¬*(û® @  \,Ä4?d ð׬¨¹ìp @  \-Å4?d 0جî¨Ê @  \.Æ4?d pجl9š @  \/Ç4?d °Ø¬óM´¨ @  \0È4?d ðجqÜ£v @  \1É4?d 0Ù¬ÓzÂ9 @  \2Ê4?d pÙ¬QëÕç @  \3Ë4?d °Ù¬ðÕ‚  @  \4Ì4?d ðÙ¬rD•Õ @  \5Í4?d 0Ú¬îØ³ @  \6Î4?d pÚ¬Ïm @  \7Ï4?d °Ú¬Hú½Ý @  \8Ð4?d ðÚ¬Êkª @  \9Ñ4?d 0Û¬hÍËL @  \:Ò4?d pÛ¬ê\Ü’ @  \;Ó4?d °Û¬Kb‹~ @  \<Ô4?d ðÛ¬Éóœ  @  \=Õ4?d 0ܬ¢S‚ @  \>Ö4?d pܬ •Ö @  \?×4?d °Ü¬·šH @  \@Ø4?d ðܬ‚&– @  \AÙ4?d 0ݬ €ìÙ @  \BÚ4?d pݬ¢û @  \CÛ4?d °Ý¬/¬ë @  \DÜ4?d ðݬ¾»5 @  \EÝ4?d 0Þ¬nöS @  \FÞ4?d pÞ¬ì…á @  \Gß4?d °Þ¬&·ªá @  \Hà4?d ðÞ¬¤&½? @  \Iá4?d 0߬€Üp @  \Jâ4?d p߬„Ë® @  \Kã4?d uÐà¬/°ß¬%/œB @  \Lä4?d ð߬§¾‹œ @  \Må4?d Hà¬Ìô8Í @  \Næ4?d ˆà¬ì:3 @  \Oç4?d Èà¬Ñ¯ @  \Pè4?d á¬YG @  \Qé4?d Há¬ñ&w> @  \Rê4?d ˆá¬ÑÓuÀ @  \Së4?d Èá¬Ò‰7  @  \Tì4?d â¬OÍ—Í @  \Uí4?d H⬿²m´ @  \Vî4?d ˆâ¬ŸGoJ @  \Wï4?d Èâ¬j¦Ú @  \Xð4?d 㬺î„2 @  \Yñ4?d Hã¬J‘~K @  \Zò4?d ˆã¬jd|µ @  \[ó4?d Èã¬i>>y @  \\ô4?d ä¬ppÍv @  \]õ4?d H䬀7 @  \^ö4?d ˆä¬ ú5ñ @  \_÷4?d È䬌ì)Ý @  \`ø4?d å¬\¤¥5 @  \aù4?d H嬬Û_L @  \bú4?d ˆå¬Œ.]² @  \cû4?d Èå¬t~ @  \dü4?d æ¬0¿¿ @  \eý4?d Hæ¬âOEÆ @  \fþ4?d ˆæ¬ºG8 @  \gÿ4?d Èæ¬8 û @  \h5?d ç¬èU @  \i5?d Hç¬*{j @  \j5?d ˆç¬8ßy” @  \k5?d Èç¬;…;X @  \l5?d è¬z·E @  \m5?d Hè¬ÿM< @  \n5?d ˆè¬ßðO @  \o5?d Èè¬âàt^ @  \p5?d é¬2¨ø¶ @  \q 5?d Hé¬Â×Ï @  \r 5?d ˆé¬â"1 @  \s 5?d Èé¬áxBý @  \t 5?d ê¬|<â< @  \u 5?d HꬌCE @  \v5?d ˆê¬¬¶» @  \w5?d Èê¬YW}+ @  \x5?d 묉ñà @  \y5?d Hë¬y` º @  \z5?d ˆë¬Y• D @  \{5?d Èë¬ZÏKˆ @  \|5?d ì¬C¸‡ @  \}5?d H쬳þBþ @  \~5?d ˆì¬“ @ @  \5?d Èì¬òLj @  \€5?d í¬"æg @  \5?d Hí¬Ò{ @  \‚5?d ˆí¬òŽà @  \ƒ5?d Èí¬ñÔ\, @  \„5?d î¬lüí @  \…5?d Hî¬œï” @  \†5?d ˆî¬¼j @  \‡5?d Èî¬ÔLZ& @  \ˆ 5?d ï¬ÖÎ @  \‰!5?d Hï¬ô{,· @  \Š"5?d ˆï¬ÔŽ.I @  \‹#5?d Èï¬×Ôl… @  \Œ$5?d ð¬i Ð7 @  \%5?d Hð¬™u*N @  \Ž&5?d ˆð¬¹€(° @  \'5?d Èð¬„, @  \(5?d ñ¬TØŸÄ @  \‘)5?d Hñ¬¤§e½ @  \’*5?d ˆñ¬„RgC @  \“+5?d Èñ¬‡% @  \”,5?d ò¬L…N @  \•-5?d Hò¬ê37 @  \–.5?d ˆò¬ÊÆ}É @  \—/5?d Èò¬?'Y @  \˜05?d ó¬ïo–± @  \™15?d Hó¬lÈ @  \š25?d ˆó¬?ån6 @  \›35?d Èó¬<¿,ú @  \œ45?d ô¬%ñßõ @  \55?d Hô¬ÕŽ%Œ @  \ž65?d ˆô¬õ{'r @  \Ÿ75?d Èô¬Ùm;^ @  \ 85?d õ¬ %·¶ @  \¡95?d Hõ¬ùZMÏ @  \¢:5?d ˆõ¬Ù¯O1 @  \£;5?d Èõ¬Úõ ý @  \¤<5?d ö¬G±­< @  \¥=5?d Hö¬·ÎWE @  \¦>5?d ˆö¬—;U» @  \§?5?d Èö¬=æ @  \¨@5?d ÷¬ßu’ @  \©A5?d H÷¬/ hw @  \ªB5?d ˆ÷¬ÿj‰ @  \«C5?d È÷¬ ¥(E @  \¬D5?d ø¬8Z¤X @  \­E5?d Hø¬È%^! @  \®F5?d ˆø¬èÐ\ß @  \¯G5?d Èø¬ÕÀgC @  \°H5?d ù¬ˆë« @  \±I5?d Hù¬õ÷Ò @  \²J5?d ˆù¬Õ, @  \³K5?d Èù¬ÖXQà @  \´L5?d ú¬Kñ! @  \µM5?d Hú¬»c X @  \¶N5?d ˆú¬›– ¦ @  \·O5?d Èú¬nwn6 @  \¸P5?d û¬¾?âÞ @  \¹Q5?d Hû¬N@§ @  \ºR5?d ˆû¬nµY @  \»S5?d Èû¬mïX• @  \¼T5?d ü¬t¡«š @  \½U5?d Hü¬„ÞQã @  \¾V5?d ˆü¬¤+S @  \¿W5?d Èü¬ý•v @  \À X5?d ý¬ϵž @  \Á Y5?d Hý¬?Êãç @  \ Z5?d ˆý¬?á @  \à [5?d Èý¬e£Õ @  \Ä \5?d þ¬! @  \Å ]5?d Hþ¬q^ùm @  \Æ ^5?d ˆþ¬Q«û“ @  \Ç _5?d Èþ¬9ý¥ß @  \È `5?d ÿ¬éµ)7 @  \É a5?d Hÿ¬ÊÓN @  \Ê b5?d ˆÿ¬9?Ѱ @  \Ë uЭc5?d Èÿ¬¢O© @  \Ìd5?d ­LgX @  \Íe5?d `­¼i! @  \Îf5?d  ­œœŸß @  \Ïg5?d à­¡Œ¤C @  \Ðh5?d ­qÄ(« @  \Ñi5?d `­»ÒÒ @  \Òj5?d  ­¡NÐ, @  \Ók5?d à­¢’à @  \Ôl5?d ­?P2! @  \Õm5?d `­Ï/ÈX @  \Ön5?d  ­ïÚʦ @  \×o5?d à­;­6 @  \Øp5?d ­Ês!Þ @  \Ùq5?d `­: Û§ @  \Úr5?d  ­ùÙY @  \Ûs5?d à­£›• @  \Üt5?d ­íhš @  \Ýu5?d `­ð’’ã @  \Þv5?d  ­Ðg @  \ßw5?d à­üqŒ1 @  \àx5?d ­,9Ù @  \áy5?d `­ÜFú  @  \âz5?d€  ­ˆpäø @  ]{5?d à­jkî @  ]|5?d ­÷/NÜ @  ]}5?d `­ÂOH @  ]~5?d  ­âìM¶ @  ]5?d à­©ž  @  ]€5?d ­yÖë @  ]5?d `­G$è @  ]‚5?d  ­gî& @  ] ƒ5?d à­¡ýŸ7 @  ] „5?d ­•* @  ] …5?d `­ 4¾ @  ] †5?d  ­€Á@ @  ] ‡5?d à­ÞÂJF @  ]ˆ5?d ­ŠÆ® @  ]‰5?d ` ­æ]M @  ]Š5?d   ­½_³ @  ]‹5?d à ­{æ’ @  ]Œ5?d ­æDFS @  ]5?d ` ­ÓrGÇ @  ]Ž5?d   ­ó‡E9 @  ]5?d à ­ÈÔ}Ó @  ]5?d ­œñ; @  ]‘5?d ` ­&QT8 @  ]’5?d   ­¤VÆ @  ]“5?d à ­À·ïç @  ]”5?d ­Ùùè @  ]•5?d ` ­ìÏ| @  ]–5?d   ­Ì:‚ @  ]—5?d à ­’9E„ @  ]˜5?d ­BqÉl @  ]™5?d ` ­Àu? @  ] š5?d   ­àîwÁ @  ]!›5?d à ­&ýÎà @  ]"œ5?d ­»¹n! @  ]#5?d `­Žoµ @  ]$ž5?d  ­®zmK @  ]%Ÿ5?d à­žl} @  ]& 5?d ­ØÖà• @  ]'¡5?d `­æE– @  ](¢5?d  ­ÆîGh @  ])£5?d à­ýþI @  ]*¤5?d ­¾#Bû @  ]+¥5?d `­‹Co @  ],¦5?d  ­«àA‘ @  ]-§5?d à­õã— @  ].¨5?d ­%«— @  ]/©5?d `­¶Ç œ @  ]0ª5?d  ­–2b @  ]1«5?d à­P!·C @  ]2¬5?d ­Íe‚ @  ]3­5?d `­øS @  ]4®5?d  ­ئè @  ]5¯5?d à­ãõ, @  ]6°5?d ­3½ ê @  ]7±5?d `­ pé @  ]8²5?d  ­-… @  ]9³5?d à­ë–¾6 @  ]:´5?d ­òØM9 @  ];µ5?d `­ÇîL­ @  ]<¶5?d  ­çNS @  ]=·5?d à­¹U @  ]>¸5?d ­iP˜½ @  ]?¹5?d `­E="| @  ]@º5?d  ­eÈ ‚ @  ]A»5?d à­£Û™£ @  ]B¼5?d ­>Ÿ9b @  ]C½5?d `­ ©8ö @  ]D¾5?d  ­+\: @  ]E¿5?d à­}è./ @  ]FÀ5?d ­­ ¢Ç @  ]GÁ5?d `­“mÄ @  ]HÂ5?d  ­³˜: @  ]IÃ5?d à­u‹¼ @  ]JÄ5?d ­At0 @  ]KÅ5?d `­tB1’ @  ]LÆ5?d  ­T·3l @  ]MÇ5?d à­ ´ij @  ]NÈ5?d ­Úüå‚ @  ]OÉ5?d `­I~a @  ]PÊ5?d  ­ie|Ÿ @  ]QË5?d à­¯vž @  ]RÌ5?d ­22e @  ]SÍ5?d `­dë @  ]TÎ5?d  ­'ñf @  ]UÏ5?d à­¢^ÿ @  ]VÐ5?d ­ÌêÒ @  ]WÑ5?d `­ò'w @  ]XÒ5?d  ­ÒÒuê @  ]YÓ5?d à­ÁÌË @  ]ZÔ5?d ­ ?Ä @  ][Õ5?d `­8¹>P @  ]\Ö5?d  ­L<® @  ]]×5?d à­FOf¨ @  ]^Ø5?d ­–ê@ @  ]_Ù5?d `­mV @  ]`Ú5?d  ­4˜Tí @  ]aÛ5?d à­ò‹íÌ @  ]bÜ5?d ­oÏM  @  ]cÝ5?d `­ZùL™ @  ]dÞ5?d  ­z Ng @  ]eß5?d à­ÜèOQ @  ]fà5?d ­  Ã¹ @  ]gá5?d `­2mfº @  ]hâ5?d  ­˜dDuÐ ­ @  ]iã5?d à­Ô‹Ýe @  ]jä5?d 8 ­¥€ @  ]kå5?d x ­¶— @  ]læ5?d ¸ ­°Ci @  ]mç5?d ø ­î@Zo @  ]nè5?d 8!­>Ö‡ @  ]oé5?d x!­­dMd @  ]pê5?d ¸!­‘Oš @  ]që5?d ø!­K‚ö» @  ]rì5?d 8"­ÖÆVz @  ]sí5?d x"­ãðWî @  ]tî5?d ¸"­ÃU @  ]uï5?d ø"­øVmú @  ]vð5?d 8#­(á @  ]wñ5?d x#­ÓD @  ]xò5?d ¸#­6&Fï @  ]yó5?d ø#­ð5ÿÎ @  ]zô5?d 8$­é{ Á @  ]{õ5?d x$­ÜM U @  ]|ö5?d ¸$­ü¸« @  ]}÷5?d ø$­¢»U­ @  ]~ø5?d 8%­róÙE @  ]ù5?d x%­½ÈSµ @  ]€ú5?d ¸%­=QK @  ]û5?d ø%­[.èj @  ]‚ü5?d 8&­ÆjH« @  ]ƒý5?d x&­ó\I? @  ]„þ5?d ¸&­Ó©KÁ @  ]…ÿ5?d ø&­Užk] @  ]†6?d 8'­…Öçµ @  ]‡6?d x'­»B¶ @  ]ˆ6?d ¸'­›î@H @  ]‰6?d ø'­]ýùi @  ]Š6?d 8(­iut @  ]‹6?d x(­\4tà @  ]Œ6?d ¸(­|Áv @  ]6?d ø(­"Â, @  ]Ž6?d 8)­òŠ ð @  ] 6?d x)­aæ; @  ] 6?d ¸)­A9í @  ]‘ 6?d ø)­‡€Ì @  ]’ 6?d 8*­D  @  ]“ 6?d x*­/r!™ @  ]”6?d ¸*­‡#g @  ]•6?d ø*­4Ô @  ]–6?d 8+­䜗e @  ]—6?d x+­ÚQ2f @  ]˜6?d ¸+­ú¤0˜ @  ]™6?d ø+­<·‰¹ @  ]š6?d 8,­%ùz¶ @  ]›6?d x,­Ï{" @  ]œ6?d ¸,­0:yÜ @  ]6?d ø,­n9#Ú @  ]ž6?d 8-­¾q¯2 @  ]Ÿ6?d x-­<a @  ] 6?d ¸-­îŸ @  ]¡6?d ø-­Úý¨¾ @  ]¢6?d 8.­G¹ @  ]£6?d x.­r ë @  ]¤6?d ¸.­Rz  @  ]¥6?d ø.­ôž # @  ]¦ 6?d 8/­$Ö†Ë @  ]§!6?d x/­#È @  ]¨"6?d ¸/­:î!6 @  ]©#6?d ø/­üý˜ @  ]ª$6?d 80­B#$¥ @  ]«%6?d x0­w%1 @  ]¬&6?d ¸0­Wà'Ï @  ]­'6?d ø0­ ã}É @  ]®(6?d 81­Ù«ñ! @  ]¯)6?d x1­JÇj @  ]°*6?d ¸1­j2h< @  ]±+6?d ø1­¬!Ñ @  ]²,6?d 82­1eqÜ @  ]³-6?d x2­SpH @  ]´.6?d ¸2­$¦r¶ @  ]µ/6?d ø2­õJ\ @  ]¶06?d 83­Ͻƴ @  ]·16?d x3­ñpc· @  ]¸26?d ¸3­Ñ…aI @  ]¹36?d ø3­–Øh @  ]º46?d 84­Ø+g @  ]»56?d x4­;î*ó @  ]¼66?d ¸4­(  @  ]½76?d ø4­Er  @  ]¾86?d 85­•Pþã @  ]¿96?d x5­¹=D" @  ]À:6?d ¸5­™ÈFÜ @  ]Á;6?d ø5­_Ûÿý @  ]Â<6?d 86­Ÿ_< @  ]Ã=6?d x6­÷©^¨ @  ]Ä>6?d ¸6­×\\V @  ]Å?6?d ø6­èHq @  ]Æ@6?d 87­Q Ä™ @  ]ÇA6?d x7­omaš @  ]ÈB6?d ¸7­O˜cd @  ]ÉC6?d ø7­‰‹ÚE @  ]ÊD6?d 88­½tVX @  ]ËE6?d x8­ˆBWÌ @  ]ÌF6?d ¸8­¨·U2 @  ]ÍG6?d ø8­ö´4 @  ]ÎH6?d 89­&üƒÜ @  ]ÏI6?d x9­µ? @  ]ÐJ6?d ¸9­•eÁ @  ]ÑK6?d ø9­Sv£à @  ]ÒL6?d 8:­Î2! @  ]ÓM6?d x:­ûµ @  ]ÔN6?d ¸:­ÛñK @  ]ÕO6?d ø:­à¢8¡ @  ]ÖP6?d 8;­0ê´I @  ]×Q6?d x;­'J @  ]ØR6?d ¸;­.Ò´ @  ]ÙS6?d ø;­èÁª• @  ]ÚT6?d 8<­ñYš @  ]ÛU6?d x<­ĹX @  ]ÜV6?d ¸<­äLZð @  ]ÝW6?d ø<­ºOö @  ]ÞX6?d 8=­jŒ @  ]ßY6?d x=­èm0M @  ]àZ6?d ¸=­Ș2³ @  ]á[6?d ø=­‹‹’ @  ]â\6?d€ 8>­RˆÜS @  ^]6?d x>­†ÿ•î @  ^^6?d ¸>­¦ — @  ^_6?d ø>­ŧmË @  ^`6?d 8?­ïá# @  ^a6?d x?­åZ @  ^b6?duÐ@­7 ¸?­Åe¤ @  ^c6?d ø?­ÍÄÿÿ @  ^d6?d P@­hEà @  ^ e6?d @­\sªš @  ^ f6?d Ð@­Þâ½D @  ^ g6?d A­q‡™ @  ^ h6?d PA­•àG @  ^ i6?d A­Çû @  ^j6?d ÐA­EjhÀ @  ^k6?d B­ÿ¿d @  ^l6?d PB­}.º @  ^m6?d B­/5ÿã @  ^n6?d ÐB­­¤è= @  ^o6?d C­g°  @  ^p6?d PC­ƒö§Ò @  ^q6?d C­ÑíH‹ @  ^r6?d ÐC­S|_U @  ^s6?d D­À]ß @  ^t6?d PD­B“J @  ^u6?d D­ˆ¥X @  ^v6?d ÐD­’²† @  ^w6?d E­[Šˆ[ @  ^x6?d PE­ÙŸ… @  ^y6?d E­‹pÜ @  ^z6?d ÐE­ ‘g @  ^{6?d F­¢B/ @  ^ |6?d PF­ Ó8È @  ^!}6?d F­rÈב @  ^"~6?d ÐF­ðYÀO @  ^#6?d G­,»à! @  ^$€6?d PG­®*÷ÿ @  ^%6?d G­ü1¦ @  ^&‚6?d ÐG­~ x @  ^'ƒ6?d H­Àorà @  ^(„6?d PH­Bþe> @  ^)…6?d H­åŠg @  ^*†6?d ÐH­’t¹ @  ^+‡6?d I­[ç§d @  ^,ˆ6?d PI­Ùv°º @  ^-‰6?d I­‹m_ã @  ^.Š6?d ÐI­ üH= @  ^/‹6?d J­³)'™ @  ^0Œ6?d PJ­1¸0G @  ^16?d J­c£ß @  ^2Ž6?d ÐJ­á2ÈÀ @  ^36?d K­Mññ @  ^46?d PK­Ï`‡/ @  ^5‘6?d K­{hv @  ^6’6?d ÐK­ê¨ @  ^7“6?d L­Œ”}" @  ^8”6?d PL­jü @  ^9•6?d L­\…¥ @  ^:–6?d ÐL­Þ’{ @  ^;—6?d M­¨¦ @  ^<˜6?d PM­•¿x @  ^=™6?d M­Ç–P! @  ^>š6?d ÐM­EGÿ @  ^?›6?d N­@Ó y @  ^@œ6?d PN­ÂB§ @  ^A6?d N­Yñþ @  ^Bž6?d ÐN­Èæ  @  ^CŸ6?d O­#¼‡Í @  ^D 6?d PO­¡- @  ^E¡6?d O­ó6J @  ^F¢6?d ÐO­q§h” @  ^G£6?d P­EI%£ @  ^H¤6?d PP­ÇØ2} @  ^I¥6?d P­•ÃÝ$ @  ^J¦6?d ÐP­RÊú @  ^K§6?d Q­ÞÁð' @  ^L¨6?d PQ­\Pçù @  ^M©6?d Q­K  @  ^Nª6?d ÐQ­ŒÚ~ @  ^O«6?d R­6pÚ @  ^P¬6?d PR­´žg @  ^Q­6?d R­æ…ˆ] @  ^R®6?d ÐR­dŸƒ @  ^S¯6?d S­È×Dz @  ^T°6?d PS­JFÐl @  ^U±6?d S­]?5 @  ^V²6?d ÐS­šÌ(ë @  ^W³6?d T­ ²*a @  ^X´6?d PT­‹#=¿ @  ^Yµ6?d T­Ù8Òæ @  ^Z¶6?d ÐT­[©Å8 @  ^[·6?d U­’:ÿå @  ^\¸6?d PU­«è; @  ^]¹6?d U­B°b @  ^^º6?d ÐU­À!¼ @  ^_»6?d V­kòX¨ @  ^`¼6?d PV­écOv @  ^a½6?d V­»x / @  ^b¾6?d ÐV­9é·ñ @  ^c¿6?d W­øÍà  @  ^dÀ6?d PW­z\ÔÓ @  ^eÁ6?d W­(G;Š @  ^fÂ6?d ÐW­ªÖ,T @  ^gÃ6?d X­QÌ @  ^hÄ6?d PX­–ˆF @  ^iÅ6?d X­Ä“©K @  ^jÆ6?d ÐX­F¾• @  ^kÇ6?d Y­‘„H @  ^lÈ6?d PY­ “– @  ^mÉ6?d Y­_|Ï @  ^nÊ6?d ÐY­ÝŠk @  ^oË6?d Z­g_µ @  ^pÌ6?d PZ­åÎk @  ^qÍ6?d Z­·Õü2 @  ^rÎ6?d ÐZ­5Dëì @  ^sÏ6?d [­™‡³Ý @  ^tÐ6?d P[­¤ @  ^uÑ6?d [­I KZ @  ^vÒ6?d Ð[­Ëœ\„ @  ^wÓ6?d \­Xâ^ @  ^xÔ6?d P\­ÚsIÐ @  ^yÕ6?d \­ˆh¦‰ @  ^zÖ6?d Ð\­ ù±W @  ^{×6?d ]­Ãj‹Š @  ^|Ø6?d P]­AûœT @  ^}Ù6?d ]­às  @  ^~Ú6?d Ð]­‘qdÓ @  ^Û6?d ^­wód @  ^€Ü6?d P^­õb º @  ^Ý6?d ^­§yâã @  ^‚Þ6?d Ð^­%èõ= @  ^ƒß6?d _­œ”Ð @  ^„à6?d P_­– ƒ @  ^…á6?d _­ÄlW @  ^uÐ`­†â6?d Ð_­F‡{‰ @  ^‡ã6?d (`­rO?” @  ^ˆä6?d h`­ðÞ(J @  ^‰å6?d ¨`­¢ÅÇ @  ^Šæ6?d è`­ TÐÍ @  ^‹ç6?d (a­éÇê @  ^Œè6?d ha­kVýÎ @  ^é6?d ¨a­9M— @  ^Žê6?d èa­»ÜI @  ^ë6?d (b­ jí @  ^ì6?d hb­ƒ˜}3 @  ^‘í6?d ¨b­у’j @  ^’î6?d èb­S…´ @  ^“ï6?d (c­ÿÑÝ… @  ^”ð6?d hc­}@Ê[ @  ^•ñ6?d ¨c­/[% @  ^–ò6?d èc­­Ê2Ü @  ^—ó6?d (d­>´0V @  ^˜ô6?d hd­¼%'ˆ @  ^™õ6?d ¨d­î>ÈÑ @  ^šö6?d èd­l¯ß @  ^›÷6?d (e­¥<åÒ @  ^œø6?d he­'­ò  @  ^ù6?d ¨e­u¶U @  ^žú6?d èe­÷' ‹ @  ^Ÿû6?d (f­\ôBŸ @  ^ ü6?d hf­ÞeUA @  ^¡ý6?d ¨f­Œ~º @  ^¢þ6?d èf­ï­Æ @  ^£ÿ6?d (g­­jؤ @  ^¤7?d hg­/ûÏz @  ^¥7?d ¨g­}à # @  ^¦7?d èg­ÿq7ý @  ^§7?d (h­A¾Je @  ^¨7?d hh­Ã/]» @  ^©7?d ¨h­‘4²â @  ^ª7?d èh­¥¥< @  ^«7?d (i­Ú6Ÿá @  ^¬7?d hi­X§ˆ? @  ^­ 7?d ¨i­ ¼gf @  ^® 7?d èi­ˆ-p¸ @  ^¯ 7?d (j­2ø @  ^° 7?d hj­°i @  ^± 7?d ¨j­ârç› @  ^²7?d èj­`ãðE @  ^³7?d (k­Ì ¨t @  ^´7?d hk­N±¿ª @  ^µ7?d ¨k­ªPó @  ^¶7?d èk­ž;G- @  ^·7?d (l­ EE§ @  ^¸7?d hl­ÔRy @  ^¹7?d ¨l­ÝϽ  @  ^º7?d èl­_^ªþ @  ^»7?d (m­–Í# @  ^¼7?d hm­\‡ý @  ^½7?d ¨m­FGh¤ @  ^¾7?d èm­ÄÖz @  ^¿7?d (n­Á1ü @  ^À7?d hn­C“&" @  ^Á7?d ¨n­ˆÉ{ @  ^Â7?d èn­“Þ¥ @  ^Ã7?d (o­¢m¿H @  ^Ä 7?d ho­ ü¨– @  ^Å!7?d ¨o­rçGÏ @  ^Æ"7?d èo­ðvP @  ^Ç#7?d (p­Ę& @  ^È$7?d hp­F ø @  ^É%7?d ¨p­å¡ @  ^Ê&7?d èp­–ƒò @  ^Ë'7?d (q­_È¢ @  ^Ì(7?d hq­Ýß| @  ^Í)7?d ¨q­š0% @  ^Î*7?d èq­ 'û @  ^Ï+7?d (r­·ÞH_ @  ^Ð,7?d hr­5O_ @  ^Ñ-7?d ¨r­gT°Ø @  ^Ò.7?d èr­åŧ @  ^Ó/7?d (s­Iÿ7 @  ^Ô07?d hs­Ë—èé @  ^Õ17?d ¨s­™Œ° @  ^Ö27?d ès­n @  ^×37?d (t­ˆcä @  ^Ø47?d ht­ ò: @  ^Ù57?d ¨t­Xéêc @  ^Ú67?d èt­Úxý½ @  ^Û77?d (u­ëÇ` @  ^Ü87?d hu­‘zо @  ^Ý97?d ¨u­Ãa?ç @  ^Þ:7?d èu­Að(9 @  ^ß;7?d (v­ê#`- @  ^à<7?d hv­h²wó @  ^á=7?d ¨v­:©˜ª @  ^â>7?d€ èv­Ìû“Ò @  _?7?d (w­잯 @  _@7?d hw­n¸Ù @  _A7?d ¨w­ù]¬m @  _B7?d èw­{Ì»³ @  _C7?d (x­ ±™Q @  _D7?d hx­‰ Ž @  _E7?d ¨x­‰>¬ @  _F7?d èx­—)r @  _ G7?d (y­›ÂèB @  _ H7?d hy­Sÿœ @  _ I7?d ¨y­Žë( @  _ J7?d èy­ üö @  _ K7?d (z­ÕVòÈ @  _L7?d hz­WÇå @  _M7?d ¨z­fÏkÕ @  _N7?d èz­ä^|  @  _O7?d ({­Ôß× @  _P7?d h{­EÈ  @  _Q7?d ¨{­˜ܽ @  _R7?d è{­†Ëc @  _S7?d (|­GJ–“ @  _T7?d h|­ÅÛM @  _U7?d ¨|­Yr1n @  _V7?d è|­Ûã&° @  _W7?d (}­×9ç€ @  _X7?d h}­U¨ð^ @  _Y7?d ¨}­Âúäê @  _Z7?d è}­@kó4 @  _[7?d (~­™­ý  @  _\7?d h~­<êÔ @  _]7?d ¨~­;2C§ @  _ ^7?d è~­¹£Ty @  _!_7?d (­MžÎy @  _"`7?d h­ÏÙ§ @  _#a7?d ¨­uЀ­'X]Í @  _$b7?d è­ÚÌÚÍ @  _%c7?d @€­ðð–F @  _&d7?d €€­Ð”¸ @  _'e7?d À€­îÈ1» @  _(f7?d ­>€½S @  _)g7?d @­`ƒçU @  _*h7?d €­@vå« @  _+i7?d À­u@ä? @  _,j7?d ‚­èDþ @  _-k7?d @‚­.ýß @  _.l7?d €‚­âÿ! @  _/m7?d À‚­Žd @  _0n7?d ƒ­MÆè* @  _1o7?d @ƒ­v•ÐÀ @  _2p7?d €ƒ­V`Ò> @  _3q7?d Àƒ­cVÓª @  _4r7?d „­z ¥ @  _5s7?d @„­¼ ™„ @  _6t7?d €„­œþ›z @  _7u7?d À„­¢3>y @  _8v7?d …­r{²‘ @  _9w7?d @…­,xè— @  _:x7?d €…­ êi @  _;y7?d À…­9»ëý @  _<z7?d †­¤ÿK< @  _={7?d @†­bìò @  _>|7?d €†­Bðã @  _?}7?d À†­ntJ" @  _@~7?d ‡­¾<ÆÊ @  _A7?d @‡­õN† @  _B€7?d €‡­Õ»„ @  _C7?d À‡­à… @  _D‚7?d ˆ­Ôr  @  _Eƒ7?d @ˆ­a°) @  _F„7?d €ˆ­2”²× @  _G…7?d Àˆ­ YÔ @  _H†7?d ‰­Ü›< @  _I‡7?d @‰­‚Á: @  _Jˆ7?d €‰­¢çÃÄ @  _K‰7?d À‰­—ÑÂP @  _LŠ7?d Š­ •b‘ @  _M‹7?d @Š­̆۰ @  _NŒ7?d €Š­ìsÙN @  _O7?d ÀŠ­B­ @  _PŽ7?d ‹­¯WÎE @  _Q7?d @‹­”ö¯ @  _R7?d €‹­´ñôQ @  _S‘7?d À‹­ÇõÅ @  _T’7?d Œ­˜‰Ê @  _U“7?d @Œ­^š¿ë @  _V”7?d €Œ­~o½ @  _W•7?d ÀŒ­@¢ @  _X–7?d ­ê”þ @  _Y—7?d @­ÎéÎø @  _Z˜7?d €­îÌ @  _[™7?d À­Û*Í’ @  _\š7?d Ž­FnmS @  _]›7?d @Ž­€}Ôr @  _^œ7?d €Ž­ ˆÖŒ @  __7?d ÀŽ­"âjß @  _`ž7?d ­òªæ7 @  _aŸ7?d @­TNç @  _b 7?d €­t»åÿ @  _c¡7?d À­Aäk @  _d¢7?d ­ÿSXÙ @  _e£7?d @­9@áø @  _f¤7?d €­µã @  _g¥7?d À­'xF @  _h¦7?d ‘­÷0Êí @  _i§7?d @‘­©3ë @  _j¨7?d €‘­‰Æ’ @  _k©7?d À‘­¼ð“ @  _lª7?d ’­!´3@ @  _m«7?d @’­ç§Ša @  _n¬7?d €’­ÇRˆŸ @  _o­7?d À’­T>| @  _p®7?d “­„vŸ” @  _q¯7?d @“­¿%§~ @  _r°7?d €“­ŸÐ¥€ @  _s±7?d À“­ªæ¤ @  _t²7?d ”­³¨W @  _u³7?d @”­u»î: @  _v´7?d €”­UNìÄ @  _wµ7?d À”­kƒIÇ @  _x¶7?d •­»ËÅ/ @  _y·7?d @•­åÈŸ) @  _z¸7?d €•­Å=× @  _{¹7?d À•­ð œC @  _|º7?d –­mO<‚ @  _}»7?d @–­«\…£ @  _~¼7?d €–­‹©‡] @  _½7?d À–­D’ ­ @  _€¾7?d —­”ÚE @  _¿7?d @—­Ân•b @  _‚À7?d €—­â›—œ @  _ƒÁ7?d À—­×­– @  _„Â7?d ˜­ãR @  _…Ã7?d @˜­%A£4 @  _†Ä7?d €˜­´¡Ê @  _‡Å7?d À˜­;yÉ @  _ˆÆ7?d ™­ë1ˆ! @  _‰Ç7?d @™­µ2Ò' @  _ŠÈ7?d €™­•ÇÐÙ @  _‹É7?d À™­ ñÑM @  _ŒÊ7?d š­=µqŒ @  _Ë7?d @š­û¦È­ @  _ŽÌ7?d €š­ÛSÊS @  _Í7?d Àš­H?Q° @  _Î7?d ›­˜wÝX @  _‘Ï7?d @›­£$å² @  _’Ð7?d €›­ƒÑçL @  _“Ñ7?d À›­¶çæØ @  _”Ò7?d œ­¯©× @  _•Ó7?d @œ­iº¬ö @  _–Ô7?d €œ­IO® @  _—Õ7?d Àœ­w‚  @  _˜Ö7?d ­§Ê‡ã @  _™×7?d @­ùÉÝå @  _šØ7?d €­Ù<ß @  _›Ù7?d À­ì Þ @  _œÚ7?d ž­qN~N @  _Û7?d @ž­·]Ço @  _žÜ7?d €ž­—¨Å‘ @  _ŸÝ7?d Àž­Ây @  _ Þ7?d Ÿ­ÅŠõ* @  _¡ß7?d @Ÿ­cnô @  _¢à7?d €Ÿ­C›öâ @  _£á7uР­?d ÀŸ­v­÷v @  _¤â7?d  ­¦) @  _¥ã7?d X ­Áµ1 @  _¦ä7?d ˜ ­á@’Ï @  _§å7?d Ø ­ß7Ì @  _¨æ7?d ¡­Å»$ @  _©ç7?d X¡­QÆá" @  _ªè7?d ˜¡­q3ãÜ @  _«é7?d Ø¡­DâH @  _¬ê7?d ¢­ÙAB‰ @  _­ë7?d X¢­Rû¨ @  _®ì7?d ˜¢­?§ùV @  _¯í7?d Ø¢­¬Ëbµ @  _°î7?d £­|ƒî] @  _±ï7?d X£­GÐÖ· @  _²ð7?d ˜£­g%ÔI @  _³ñ7?d Ø£­RÕÝ @  _´ò7?d ¤­K]&Ò @  _µó7?d X¤­NŸó @  _¶ô7?d ˜¤­­»  @  _·õ7?d ؤ­“v8 @  _¸ö7?d ¥­C>´æ @  _¹÷7?d X¥­=îà @  _ºø7?d ˜¥­=Èì @  _»ù7?d Ø¥­þíŠ @  _¼ú7?d ¦­•ºMK @  _½û7?d X¦­S©ôj @  _¾ü7?d ˜¦­s\ö” @  _¿ý7?d ئ­_1LU @  _Àþ7?d §­yÀ½ @  _Áÿ7?d X§­^_äë @  _Â8?d ˜§­~ªæ @  _Ã8?d ا­Kœç @  _Ä8?d ¨­ckœ @  _Å8?d X¨­¹pÒ½ @  _Æ8?d ˜¨­™…ÐC @  _Ç8?d ب­§Hu@ @  _È8?d ©­wù¨ @  _É8?d X©­)£® @  _Ê8?d ˜©­ ö¡P @  _Ë 8?d Ø©­<À Ä @  _Ì 8?d ª­¡„ @  _Í 8?d Xª­g—¹$ @  _Î 8?d ˜ª­Gb»Ú @  _Ï 8?d ت­Ô 9 @  _Ð8?d «­F¬Ñ @  _Ñ8?d X«­?”; @  _Ò8?d ˜«­à–Å @  _Ó8?d Ø«­*Ö—Q @  _Ô8?d ¬­3˜d^ @  _Õ8?d X¬­õ‹Ý @  _Ö8?d ˜¬­Õ~ß @  _×8?d ج­ë³z‚ @  _Ø8?d ­­;ûöj @  _Ù8?d X­­eø¬l @  _Ú8?d ˜­­E ®’ @  _Û8?d Ø­­p;¯ @  _Ü8?d ®­íÇ @  _Ý8?d X®­+l¶æ @  _Þ8?d ˜®­ ™´ @  _ß8?d Ø®­‰óK @  _à8?d ¯­Y»„£ @  _á8?d X¯­ÿ_…• @  _â 8?d€ ˜¯­çÔuK @  `!8?d د­3£<ö @  `"8?d °­}€D @  `#8?d X°­Ž'ˆ @  `$8?d ˜°­®ÒÀv @  `%8?d ذ­^­: @  `&8?d ±­Žå¶ç @  `'8?d X±­T³› @  `(8?d ˜±­>¡±e @  ` )8?d ر­ÎÞK @  ` *8?d ²­SšëÝ @  ` +8?d X²­PÀ© @  ` ,8?d ˜²­p5«ï @  ` -8?d ز­€JQ– @  `.8?d ³­PÝ~ @  `/8?d X³­B„ @  `08?d ˜³­(·†ð @  `18?d س­ØÈ|‰ @  `28?d ´­Á†† @  `38?d X´­ÂÜÍJ @  `48?d ˜´­â)Ï´ @  `58?d Ø´­V5Í @  `68?d µ­Â¹% @  `78?d Xµ­R¯¼Y @  `88?d ˜µ­rZ¾§ @  `98?d ص­‚%DÞ @  `:8?d ¶­aä @  `;8?d X¶­;¦Ó @  `<8?d ˜¶­<Τ- @  `=8?d ض­̱^T @  `>8?d ·­ùÒ¼ @  `?8?d X·­8X€± @  ` @8?d ˜·­­‚O @  `!A8?d Ø·­èÒx6 @  `"B8?d ¸­Ü-ô+ @  `#C8?d X¸­ßw¶ç @  `$D8?d ˜¸­ÿ‚´ @  `%E8?d ظ­ýN` @  `&F8?d ¹­ߵˆ @  `'G8?d X¹­OÇô @  `(H8?d ˜¹­oñÅ  @  `)I8?d ع­ŸŽ?s @  `*J8?d º­ÊŸ² @  `+K8?d Xº­Ý~ @  `,L8?d ˜º­!e߀ @  `-M8?d غ­Ñ%ù @  `.N8?d »­R© @  `/O8?d X»­Yða @  `0P8?d ˜»­yçòŸ @  `1Q8?d Ø»­‰˜æ @  `2R8?d ¼­Öûé @  `3S8?d X¼­“Œ¹% @  `4T8?d ˜¼­³y»Û @  `5U8?d ؼ­CA¢ @  `6V8?d ½­“NÍJ @  `7W8?d X½­ÿÈ6 @  `8X8?d ˜½­# ÊÈ @  `9Y8?d ؽ­Óu0± @  `:Z8?d ¾­N1p @  `;[8?d X¾­MkÒ¼ @  `<\8?d ˜¾­mžÐB @  `=]8?d ؾ­á*; @  `>^8?d ¿­M©¦Ó @  `?_8?d X¿­7_ç] @  `@`8?d ˜¿­ªå£ @uÐÀ­  `Aa8?d Ø¿­%|ø @  `Bb8?d 0À­AŒ©] @  `Cc8?d pÀ­BÖë‘ @  `Dd8?d °À­b#éo @  `Ee8?d ðÀ­’\ @  `Ff8?d 0Á­BŸþ @  `Gg8?d pÁ­Ò¥š‚ @  `Hh8?d °Á­òP˜| @  `Ii8?d ðÁ­/b @  `Jj8?d 0­ŸkÂÄ @  `Kk8?d p­œ1€ @  `Ll8?d °Â­¼Ä‚ö @  `Mm8?d ð­L»x @  `Nn8?d 0íœóôg @  `Oo8?d píij­ @  `Pp8?d °Ã­äF¯é @  `Qq8?d ðí9U @  `Rr8?d 0Ä­ w¦Ÿ @  `Ss8?d pÄ­-äS @  `Tt8?d °Ä­.Øæ­ @  `Uu8?d ðÄ­Þ§Ô @  `Vv8?d 0Å­ï< @  `Ww8?d pÅ­ž^•@ @  `Xx8?d °Å­¾«—¾ @  `Yy8?d ðÅ­NÔmÇ @  `Zz8?d 0Æ­ÓÍ @  `[{8?d pÆ­ÐÊÊ @  `\|8?d °Æ­ð?4 @  `]}8?d ðÆ­@wM @  `^~8?d 0Ç­Ðû¥ @  `_8?d pÇ­éoý: @  ``€8?d °Ç­ÉšÿÄ @  `a8?d ðÇ­9å½ @  `b‚8?d 0È­ ‰  @  `cƒ8?d pÈ­@Ël @  `d„8?d °È­.µÉ’ @  `e…8?d ðÈ­ÞÊ3ë @  `f†8?d 0É­‚¿ @  `g‡8?d pÉ­ž3º @  `hˆ8?d °É­¾Æ¸ @  `i‰8?d ðÉ­N¹Bø @  `jŠ8?d 0Ê­Óýâ9 @  `k‹8?d pÊ­Ч õ @  `lŒ8?d °Ê­ðR¢  @  `m8?d ðÊ­-Xr @  `nŽ8?d 0Ë­ÐeÔš @  `o8?d pË­ˆ%ê @  `p8?d °Ë­¨Ð @  `q‘8?d ðË­X¯um @  `r’8?d 0Ì­Aá†b @  `s“8?d pÌ­B»Ä® @  `t”8?d °Ì­bNÆP @  `u•8?d ðÌ­’1<) @  `v–8?d 0Í­By°Á @  `w—8?d pÍ­Òȵ½ @  `x˜8?d °Í­ò=·C @  `y™8?d ðÍ­BM: @  `zš8?d 0έŸíû @  `{›8?d pέœ\¯7 @  `|œ8?d °Î­¼©­É @  `}8?d ðέLÖW° @  `~ž8?d 0Ï­œžÛX @  `Ÿ8?d pÏ­>ªç @  `€ 8?d °Ï­%˨ @  `¡8?d ðÏ­Õ´R` @  `‚¢8?d 0ЭkjîÒ @  `ƒ£8?d pЭh0¬ @  `„¤8?d °Ð­HÅ®à @  `…¥8?d ðЭ¸ºT™ @  `†¦8?d 0Ñ­hòØq @  `‡§8?d pÑ­øCÝ  @  `ˆ¨8?d °Ñ­ضßó @  `‰©8?d ðÑ­(É%Š @  `Šª8?d 0Ò­µ…K @  `‹«8?d pÒ­¶×LJ @  `Œ¬8?d °Ò­–"Åy @  `­8?d ðÒ­f]? @  `Ž®8?d 0Ó­¶³è @  `¯8?d pÓ­îUê˜ @  `°8?d °Ó­Πèf @  `‘±8?d ðÓ­>ß @  `’²8?d 0Ô­'‘á @  `“³8?d pÔ­$裆 @  `”´8?d °Ô­>¡" @  `•µ8?d ðÔ­ôA[[ @  `–¶8?d 0Õ­$ ׳ @  `—·8?d pÕ­´¸ÒÏ @  `˜¸8?d °Õ­”MÐ1 @  `™¹8?d ðÕ­d2*H @  `šº8?d 0Ö­ùvЉ @  `›»8?d pÖ­ú,ÈE @  `œ¼8?d °Ö­ÚÙÊ» @  `½8?d ðÖ­*¦0 @  `ž¾8?d 0×­úî¼* @  `Ÿ¿8?d p×­ÞOî' @  ` À8?d °×­þºìÙ @  `¡Á8?d ð×­Å  @  `¢Â8?d 0Ø­::š½ @  `£Ã8?d pØ­9`Øq @  `¤Ä8?d °Ø­•Ú @  `¥Å8?d ðØ­éê ö @  `¦Æ8?d 0Ù­9¢¬ @  `§Ç8?d pÙ­©©b @  `¨È8?d °Ù­‰æ«œ @  `©É8?d ðÙ­y™Qå @  `ªÊ8?d 0Ú­äÝñ$ @  `«Ë8?d pÚ­燳è @  `¬Ì8?d °Ú­Çr± @  `­Í8?d ðÚ­7 Ko @  `®Î8?d 0Û­çELJ @  `¯Ï8?d pÛ­¿ž÷ @  `°Ð8?d °Û­Ÿðœ  @  `±Ñ8?d ðÛ­ofp @  `²Ò8?d 0Ü­vÁ• @  `³Ó8?d pÜ­u›×³ @  `´Ô8?d °Ü­UnÕM @  `µÕ8?d ðÜ­¥/4 @  `¶Ö8?d 0Ý­uY£Ü @  `·×8?d pÝ­å覠 @  `¸Ø8?d °Ý­Å¤^ @  `¹Ù8?d ðÝ­5b^' @  `ºÚ8?d 0Þ­¨&þæ @  `»Û8?d pÞ­«|¼* @  `¼Ü8?d °Þ­‹‰¾Ô @  `½Ý8?d ðÞ­{öD­ @  `¾Þ8?d 0ß­«¾ÈE @  `¿ß8?d pß­ÑH‰Ë @  `Àà8?d uÐà­/°ß­ñ½‹5 @  `Áá8?d ðß­Ãk–™ @  `Ââ8?d Hà­ÚÏÈo @  `Ãã8?d ˆà­{ñŸƒ @  `Ää8?d Èà­ù`ˆ] @  `Åå8?d á­[Æé @  `Ææ8?d Há­ÙWþÌ @  `Çç8?d ˆá­ë‚î @  `Èè8?d Èá­iùN @  `Éé8?d â­†¹´( @  `Êê8?d Hâ­(£ö @  `Ëë8?d ˆâ­¥ô @  `Ìì8?d Èâ­'‡ãÄ @  `Íí8?d ã­…!‚‹ @  `Îî8?d Hã­°•U @  `Ïï8?d ˆã­ý”Ù @  `Ðð8?d Èã­ÎÛ @  `Ññ8?d ä­¥Ðs @  `Òò8?d Hä­–4Ç­ @  `Óó8?d ˆä­7 A @  `Ôô8?d Èä­µ›‡Ÿ @  `Õõ8?d å­=æÐ @  `Öö8?d Hå­•¬ñ @  `×÷8?d ˆå­§yáR @  `Øø8?d Èå­%èöŒ @  `Ùù8?d æ­ÊB»ê @  `Úú8?d Hæ­HÓ¬4 @  `Ûû8?d ˆæ­éíûØ @  `Üü8?d Èæ­k|ì @  `Ýý8?d ç­ÉÚI @  `Þþ8?d Hç­KKš— @  `ßÿ8?d ˆç­¯/Ü$ @  `à9?d Èç­-¾Ëú @  `á9?d è­k¯ª@ @  `â9?d€ Hè­ý¡8 @  a9?d ˆè­Ý‚¾ý @  a9?d Èè­_©# @  a9?d é­8ü3 @  a9?d Hé­ºm$_ @  a9?d ˆé­F ky @  a9?d Èé­Ä›|§ @  a 9?d ê­åƒn» @  a 9?d Hê­gye @  a  9?d ˆê­eÕd @  a  9?d Èê­ôº @  a  9?d ë­æX @  a 9?d Hë­dŠOÆ @  a 9?d ˆë­ý½b  @  a9?d Èë­,uÒ @  a9?d ì­wŸ à @  a9?d Hì­õ> @  a9?d ˆì­‘y±? @  a9?d Èì­è¦á @  a9?d í­t9?d H÷­PÕ @  a=?9?d ˆ÷­÷€Ò @  a>@9?d È÷­u  @  a?A9?d ø­ï& @  a@B9?d Hø­mƒ1Ð @  aAC9?d ˆø­ ôÑ @  aBD9?d Èø­‹eŠ @  aCE9?d ù­ìŠ­ @  aDF9?d Hù­ns @  aEG9?d ˆù­’|HU @  aFH9?d Èù­í_‹ @  aGI9?d ú­1õM— @  aHJ9?d Hú­³dZI @  aIK9?d ˆú­×öH @  aJL9?d Èú­U‚á– @  aKM9?d û­2m{4 @  aLN9?d Hû­°ülê @  aMO9?d ˆû­)ËA  @  aNP9?d Èû­«ZVþ @  aOQ9?d ü­£é)Ì @  aPR9?d Hü­!x> @  aQS9?d ˆü­E’ @  aRT9?d Èü­Çž…Í @  aSU9?d ý­ qo @  aTV9?d Hý­"à± @  aUW9?d ˆý­Þ‡G— @  aVX9?d Èý­\PI @  aWY9?d þ­}BU @  aXZ9?d Hþ­ÿŸU‹ @  aY[9?d ˆþ­›èùŠ @  aZ\9?d Èþ­yîT @  a[]9?d ÿ­~–tö @  a\^9?d Hÿ­üc( @  a]_9?d ˆÿ­ø‡w> @  a^uЮ`9?d Èÿ­z`à @  a_a9?d ®~ƒz @  a`b9?d `®ü”¤ @  aac9?d  ®˜ú8¥ @  abd9?d à®k/{ @  ace9?d ®}„µÙ @  adf9?d `®ÿ¢ @  aeg9?d  ®rí! @  afh9?d à®ãúÿ @  agi9?d ® ûèã @  ahj9?d `®"jÿ= @  aik9?d  ®FS< @  ajl9?d à®ÄŒDâ @  akm9?d ®£cÞ@ @  aln9?d `®!òÉž @  amo9?d  ®¸ÅäT @  anp9?d à®:TóŠ @  aoq9?d ®2猸 @  apr9?d `®°v›f @  aqs9?d  ®Ô7g @  art9?d à®V ¹ @  asu9?d ®1º @  atv9?d `®³î­Å @  auw9?d  ®O‰âã @  avx9?d à®Íõ= @  awy9?d ®ìç! @  axz9?d `®n‘ðÿ @  ay{9?d  ® æ\þ @  az|9?d ஈwK  @  a{}9?d ®ï˜Ñ‚ @  a|~9?d `®m Æ\ @  a}9?d  ®„“É @  a~€9?d எ„ @  a9?d ®Û•$ @  a€‚9?d `®ýJ‚ú @  aƒ9?d  ®™=.û @  a‚„9?d ஬9% @  aƒ…9?d ®|C£‡ @  a„†9?d ` ®þÒ´Y @  a…‡9?d   ®µû @  a†ˆ9?d à ®€$ì¡ @  a‡‰9?d ®¡<þ½ @  aˆŠ9?d ` ®#­éc @  a‰‹9?d   ®GÚEb @  aŠŒ9?d à ®ÅKR¼ @  a‹9?d ®¢¤È @  aŒŽ9?d ` ® 5ßÀ @  a9?d   ®¹ò  @  aŽ9?d à ®;“åÔ @  a‘9?d ®3 šæ @  a’9?d ` ®±±8 @  a‘“9?d   ®ÕÆ!9 @  a’”9?d à ®WW6ç @  a“•9?d ®0¸¬E @  a”–9?d ` ®²)»› @  a•—9?d   ®NNô½ @  a–˜9?d à ®Ìßãc @  a—™9?d ®íÇñ @  a˜š9?d `®oVæ¡ @  a™›9?d  ® !J  @  ašœ9?d உ°]~ @  a›9?d ®î_ÇÜ @  aœž9?d `®lÎÐ @  aŸ9?d  ®hNÄ @  až 9?d à®êßÓÊ @  aŸ¡9?d ®TúÄõ @  a ¢9?d `®ÖkÓ+ @  a¡£9?d  ®²* @  a¢¤9?d à®0hô @  a£¥9?d ®WbòV @  a¤¦9?d `®Õóåˆ @  a¥§9?d  ®)”ª® @  a¦¨9?d ஫½p @  a§©9?d ®Š¯l @  a¨ª9?d `®Œ¸² @  a©«9?d  ®lû³ @  aª¬9?d à®îjm @  a«­9?d ®‰…™Ï @  a¬®9?d `® Ž @  a­¯9?d  ®’#£Û @  a®°9?d ல´ @  a¯±9?d ®Ë7 @  a°²9?d `®šÜé @  a±³9?d  ®þçpè @  a²´9?d à®|vg6 @  a³µ9?d ®™ý” @  a´¶9?d `®™êJ @  aµ·9?d  ®eo¥l @  a¶¸9?d à®çþ²² @  a·¹9?d ®Ææ ® @  a¸º9?d `®Dw·p @  a¹»9?d  ® q @  aº¼9?d ஢‘ ¯ @  a»½9?d ®Å~–  @  a¼¾9?d `®GïÓ @  a½¿9?d  ®³?€Ô @  a¾À9?d à®1®—  @  a¿Á9?d ®«­¶ @  aÀÂ9?d `®)<¡Ö @  aÁÃ9?d  ®MK × @  aÂÄ9?d à®ÏÚ  @  aÃÅ9?d ®¨5€« @  aÄÆ9?d `®*¤—u @  aÅÇ9?d  ®ÖÃØS @  aÆÈ9?d à®TRÏ @  aÇÉ9?d ®uJÝ‘ @  aÈÊ9?d `®÷ÛÊO @  aÉË9?d  ®“¬fN @  aÊÌ9?d à®=q @  aËÍ9?d ®vÒë2 @  aÌÎ9?d `®ôCüì @  aÍÏ9?d  ®mtÑ& @  aÎÐ9?d à®ï寸 @  aÏÑ9?d ®çV¹Ê @  aÐÒ9?d `®eÇ® @  aÑÓ9?d  ®° @  aÒÔ9?d ஃ!Ë @  aÓÕ9?d ®äÎi @  aÔÖ9?d `®f_˜· @  aÕ×9?d  ®š8ב @  aÖØ9?d னÀO @  a×Ù9?d ®9±ÒS @  aØÚ9?d `®» Å @  aÙÛ9?d  ®ßWiŒ @  aÚÜ9?d à®]Æ~R @  aÛÝ9?d ®:)äð @  aÜÞ9?d `®¸¸ó. @  aÝß9?d  ®¼8ç8uÐ ® @  aÞà9?d à®C)ƒš @  a߀á9?d 8 ®2Ùöq @  aà€â9?d x ®°Hᯠ@  aá€ã9?d ¸ ®Ô?M® @  aâ€ä9?d€ ø ®—é­p @  b€å9?d 8!®Gû @  b€æ9?d x!®“Öh% @  b€ç9?d ¸!®ªøÜî @  b€è9?d ø!®(iË0 @  b€é9?d 8"®ÇÆV @  b€ê9?d x"®ER‘ˆ @  b€ë9?d ¸"®ï—bó @  b€ì9?d ø"®mu- @  b €í9?d 8#®Ï b @  b €î9?d x#®M1¼ @  b €ï9?d ¸#®OÕ› @  b €ð9?d ø#®“ÞÂE @  b €ñ9?d 8$®ø~Üí @  b€ò9?d x$®zïË3 @  b€ó9?d ¸$®}‹¨ @  b€ô9?d ø$®ÿv @  b€õ9?d 8%®]¼p9 @  b€ö9?d x%®ß-gç @  b€÷9?d ¸%®æÓ, @  b€ø9?d ø%®d’Äò @  b€ù9?d 8&®‹8‰” @  b€ú9?d x&® ©žJ @  b€û9?d ¸&®£lm1 @  b€ü9?d ø&®!ýzï @  b€ý9?d 8'®ƒ[  @  b€þ9?d x'®Ê ~ @  b€ÿ9?d ¸'®àÐÂ/ @  b€:?d ø'®bAÕñ @  b€:?d 8(®$P´K @  b€:?d x(®¦Á£• @  b€:?d ¸(®°£I¾ @  b €:?d ø(®22^` @  b!€:?d 8)®”?/ @  b"€:?d x)®(ñ @  b#€:?d ¸)®++œ: @  b$€:?d ø)®©º‹ä @  b%€ :?d 8*®FÆ‚ @  b&€ :?d x*®ÄÑ\ @  b'€ :?d ¸*®nD"' @  b(€ :?d ø*®ìÕ5ù @  b)€ :?d 8+®NsT¶ @  b*€:?d x+®ÌâCh @  b+€:?d ¸+®œ•O @  b,€:?d ø+® ‚‘ @  b-€:?d 8,®y­œ9 @  b.€:?d x,®û<‹ç @  b/€:?d ¸,®üXF| @  b0€:?d ø,®~ÉQ¢ @  b1€:?d 8-®Üo0í @  b2€:?d x-®^þ'3 @  b3€:?d ¸-®gГø @  b4€:?d ø-®åA„& @  b5€:?d 8.® ëÉ@ @  b6€:?d x.®ˆzÞž @  b7€:?d ¸.®"¿-å @  b8€:?d ø.® .:; @  b9€:?d 8/®ˆ[t @  b:€:?d x/®€Lª @  b;€:?d ¸/®AУQ @  b<€ :?d ø/®ÃA´ @  b=€!:?d 80®qåš @  b>€":?d x0®àòD @  b?€#:?d ¸0®5…ý @  b@€$:?d ø0®· # @  bA€%:?d 81®²hl @  bB€&:?d x1®—#² @  bC€':?d ¸1®® Ëy @  bD€(:?d ø1®,œÜ§ @  bE€):?d 82®Ã6‘Á @  bF€*:?d x2®A§† @  bG€+:?d ¸2®ëbud @  bH€,:?d ø2®ióbº @  bI€-:?d 83®ËUõ @  bJ€.:?d x3®IÄ+ @  bK€/:?d ¸3®ºÂ  @  bL€0:?d ø3®—+ÕÒ @  bM€1:?d 84®ü‹Ëz @  bN€2:?d x4®~ܤ @  bO€3:?d ¸4®y~? @  bP€4:?d ø4®ûïá @  bQ€5:?d 85®YIg® @  bR€6:?d x5®ÛØpp @  bS€7:?d ¸5®âöÄ» @  bT€8:?d ø5®`gÓe @  bU€9:?d 86®Íž @  bV€::?d x6® \‰Ý @  bW€;:?d ¸6®§™z¦ @  bX€<:?d ø6®%mx @  bY€=:?d 87®‡® 7 @  bZ€>:?d x7®?é @  b[€?:?d ¸7®4¦á @  b\€@:?d ø7®¶7öÝ @  b]€A:?d 88®ð&—g @  b^€B:?d x8®r·€¹ @  b_€C:?d ¸8®dÕj’ @  b`€D:?d ø8®æD}L @  ba€E:?d 89®Dâ @  bb€F:?d x9®Æs Ý @  bc€G:?d ¸9®ÿ]¿ @  bd€H:?d ø9®}̨È @  be€I:?d 8:®’få® @  bf€J:?d x:®÷òp @  bg€K:?d ¸:®º2  @  bh€L:?d ø:®8£Õ @  bi€M:?d 8;®šwš @  bj€N:?d x;®”`D @  bk€O:?d ¸;®Dê¶c @  bl€P:?d ø;®Æ{¡½ @  bm€Q:?d 8<®­Û¿ @  bn€R:?d x<®/J¨Ë @  bo€S:?d ¸<®(.eP @  bp€T:?d ø<®ª¿rŽ @  bq€U:?d 8=®Á @  br€V:?d x=®Šˆ @  bs€W:?d ¸=®³¦°Ô @  bt€X:?d ø=®17§  @  bu€Y:?d 8>®Þêl @  bv€Z:?d x>®\ ý² @  bw€[:?d ¸>®öÉÉ @  bx€\:?d ø>®tX @  by€]:?d 8?®ÖþxX @  bz€^:?d x?®Too† @  b{€_:?duÐ@®7 ¸?®•¦€} @  b|€`:?d ø?®j·äß @  b}a:?d P@®Ûõ³D @  b~b:?d @®û±º @  bc:?d Ð@®Wx @  b€d:?d A®Òôú @  be:?d PA®"`ƒ @  b‚f:?d A®• } @  bƒg:?d ÐA®™ß­– @  b„h:?d B®› W @  b…i:?d PB®ôä÷. @  b†j:?d B®ÔõÐ @  b‡k:?d ÐB®ܰ‹ @  bˆl:?d C® øŸc @  b‰m:?d PC®ü‡e @  bŠn:?d C®Ürgä @  b‹o:?d ÐC®"h¤ã @  bŒp:?d D®;&Wì @  bq:?d PD®ËY­• @  bŽr:?d D®묯k @  bs:?d ÐD®N¬wÐ @  bt:?d E®žäû8 @  b‘u:?d PE®n›A @  b’v:?d E®Nn¿ @  b“w:?d ÐE®Õ$¢T @  b”x:?d F®H`• @  b•y:?d PF®¸øì @  b–z:?d F®˜êú @  b—{:?d ÐF®KI @  b˜|:?d G®@¡ @  b™}:?d PG®°|jØ @  bš~:?d G®‰h& @  b›:?d ÐG®²Ó~ @  bœ€:?d H®*M_c @  b:?d PH®Ú2¥ @  bž‚:?d H®úǧä @  bŸƒ:?d ÐH®NÁXï @  b „:?d I®ž‰Ô @  b¡…:?d PI®nö.~ @  b¢†:?d I®N,€ @  b£‡:?d ÐI®ÕIk @  b¤ˆ:?d J®H -ª @  b¥‰:?d PJ®¸r×Ó @  b¦Š:?d J®˜‡Õ- @  b§‹:?d ÐJ®&3v @  b¨Œ:?d K®@n¿ž @  b©:?d PK®°Eç @  bªŽ:?d K®äG @  b«:?d ÐK®nþ„ @  b¬:?d L®w°w @  b­‘:?d PL®‡Ïh @  b®’:?d L®§:– @  b¯“:?d ÐL®:W- @  b°”:?d M®ÒrÛÅ @  b±•:?d PM®" !¼ @  b²–:?d M®ø#B @  b³—:?d ÐM®™²‚© @  b´˜:?d N®ö"h @  bµ™:?d PN®ô‰Ø @  b¶š:?d N®Ô|Úï @  b·›:?d ÐN®ÜÝ<´ @  b¸œ:?d O® •°\ @  b¹:?d PO®üêJ% @  bºž:?d O®ÜHÛ @  b»Ÿ:?d ÐO®¿²² @  b¼ :?d P®l² @  b½¡:?d PP®ñôË @  b¾¢:?d P®Ñæö5 @  b¿£:?d ÐP®Ëç¬ @  bÀ¤:?d Q®¯ƒD @  bÁ¥:?d PQ®ëÐy= @  b¦:?d Q®Ë%{à @  bç:?d ÐQ®PoÚ( @  bĨ:?d R®Í+zé @  bÅ©:?d PR®=T€ @  bƪ:?d R®¡‚n @  bÇ«:?d ÐR®d5 @  bȬ:?d S®ÅHèÝ @  bÉ­:?d PS®57¤ @  bÊ®:?d S®ÂZ @  b˯:?d ÐS®ëØÓ] @  b̰:?d T®ò– R @  bͱ:?d PT®éÚ+ @  bβ:?d T®"ØÕ @  bϳ:?d ÐT®‡n @  bд:?d U®WTŒ† @  bѵ:?d PU®§+vÿ @  bÒ¶:?d U®‡Þt @  bÓ·:?d ÐU®”Õê @  bÔ¸:?d V®Ðu+ @  bÕ¹:?d PV®q¯R @  bÖº:?d V®QZ¬ @  b×»:?d ÐV®Yûk÷ @  bؼ:?d W®‰³ç @  bÙ½:?d PW®yÌf @  bÚ¾:?d W®Y9˜ @  bÛ¿:?d ÐW®ÊÄðR @  bÜÀ:?d X®þ;|O @  bÝÁ:?d PX®D†6 @  bÞÂ:?d X®.±„È @  bßÃ:?d ÐX®š·{à @  bàÄ:?d Y®Jÿ÷+ @  báÅ:?d PY®º€ R @  bâÆ:?d€ Y®î¶  @  cÇ:?d ÐY®”½úÈ @  cÈ:?d Z® ùZ  @  cÉ:?d PZ®<Ï[ @  cÊ:?d Z®:Yc @  cË:?d ÐZ®Ú)àB @  cÌ:?d [® alª @  cÍ:?d P[®4¬É© @  cÎ:?d [®YËW @  c Ï:?d Ð[®/ ó½ @  c Ð:?d \®6D² @  c Ñ:?d P\®r& @  c Ò:?d \®#‡Ø @  c Ó:?d Ð\®唺ù @  cÔ:?d ]®5Ü6 @  cÕ:?d P]®¦°­ò @  cÖ:?d ]®†E¯  @  c×:?d Ð]®ØFõ  @  cØ:?d ^®EUË @  cÙ:?d P^®p4T_ @  cÚ:?d ^®PÁV¡ @  cÛ:?d Ð^®–Òï€ @  cÜ:?d _®Fšch @  cÝ:?d P_®xWÆk @  cÞ:?d _®X¢Ä• @  cuÐ`®ß:?d Ð_®þFÅ£ @  cà:?d (`®@¾p; @  cá:?d h`®uˆq¯ @  câ:?d ¨`®U}sQ @  cã:?d è`®“nÊp @  cä:?d (a®C&F˜ @  cå:?d ha®ÁLúË @  c æ:?d ¨a®á¹ø5 @  c!ç:?d èa®¿º¢3 @  c"è:?d (b®"þò @  c#é:?d hb®Èf @  c$ê:?d ¨b®7=˜ @  c%ë:?d èb®ñ.¸¹ @  c&ì:?d (c®!f4Q @  c'í:?d hc®«‘R @  c(î:?d ¨c®?^“¬ @  c)ï:?d èc® «F @  c*ð:?d (d®CXI @  c+ñ:?d hd®(uYÝ @  c,ò:?d ¨d®€[# @  c-ó:?d èd®Γâ @  c.ô:?d (e®Ûnê @  c/õ:?d he®·õ  @  c0ö:?d ¨e®­B÷÷ @  c1÷:?d èe®óA­ñ @  c2ø:?d (f®n 0 @  c3ù:?d hf®[3 ¤ @  c4ú:?d ¨f®{ÆZ @  c5û:?d èf®½Õ·{ @  c6ü:?d (g®m;“ @  c7ý:?d hg®SPž @  c8þ:?d ¨g®s¥œn @  c9ÿ:?d èg®G°‰× @  c:;?d (h®sOÊ @  c;;?d hh®Fy^ @  c<;?d ¨h®fŒ  @  c=;?d èh® Ÿ¿ @  c>;?d (i®p×3i @  c?;?d hi®\º‰¨ @  c@;?d ¨i®|O‹V @  cA;?d èi®"LÑP @  cB;?d (j®¿q‘ @  cC ;?d hj®Š>p @  cD ;?d ¨j®ªËrû @  cE ;?d èj®lØËÚ @  cF ;?d (k®¼G2 @  cG ;?d hk®‚]â1 @  cH;?d ¨k®¢¨àÏ @  cI;?d èk®™ûØ% @  cJ;?d (l®€µ+* @  cK;?d hl®µƒ*¾ @  cL;?d ¨l®•v(@ @  cM;?d èl®Se‘a @  cN;?d (m®ƒ-‰ @  cO;?d hm®A†j @  cP;?d ¨m®0´„” @  cQ;?d èm®n·Þ’ @  cR;?d (n®óó~S @  cS;?d hn®ÆÅÇ @  cT;?d ¨n®æ0}9 @  cU;?d èn® #Ä @  cV;?d (o®ðkHð @  cW;?d ho®Φíó @  cX;?d ¨o®îSï  @  cY;?d èo®H·î; @  cZ ;?d (p®öiR‰ @  c[!;?d hp®Ã_S @  c\";?d ¨p®ãªQã @  c]#;?d èp®%¹è @  c^$;?d (q®õñd* @  c_%;?d hq®w›Øy @  c`&;?d ¨q®WnÚ‡ @  ca';?d èq® m€ @  cb(;?d (r®”) @ @  cc);?d hr®¡!Ô @  cd*;?d ¨r®ê#* @  ce+;?d èr®Gùš  @  cf,;?d (s®—±ã @  cg-;?d hs®©|³à @  ch.;?d ¨s®‰‰± @  ci/;?d ès®²Ú‰ô @  cj0;?d (t®«”zû @  ck1;?d ht®ž¢{o @  cl2;?d ¨t®¾Wy‘ @  cm3;?d èt®xDÀ° @  cn4;?d (u®¨ LX @  co5;?d hu®;`×» @  cp6;?d ¨u®•ÕE @  cq7;?d èu®E–C @  cr8;?d (v®ØÒ/‚ @  cs9;?d hv®íä. @  ct:;?d ¨v®Í,è @  cu;;?d èv® •É @  cv<;?d (w®ÛJ! @  cw=;?d hw®凼" @  cx>;?d ¨w®År¾Ü @  cy?;?d èw®“ƪû @  cz@;?d (x®§9&æ @  c{A;?d hx®’'r @  c|B;?d ¨x®²ú%Œ @  c}C;?d èx®t霭 @  c~D;?d (y®¤¡E @  cE;?d hy®kššµ @  c€F;?d ¨y®Ko˜K @  cG;?d èy®lÂM @  c‚H;?d (z®ˆ(bŒ @  cƒI;?d hz®½c @  c„J;?d ¨z®ëaæ @  c…K;?d èz®[øØÇ @  c†L;?d ({®‹°T/ @  c‡M;?d h{®µ}ñ, @  cˆN;?d ¨{®•ˆóÒ @  c‰O;?d è{®®ÛË8 @  cŠP;?d (|®·•87 @  c‹Q;?d h|®‚£9£ @  cŒR;?d ¨|®¢V;] @  cS;?d è|®dE‚| @  cŽT;?d (}®´ ” @  cU;?d h}®'a•w @  cV;?d ¨}®”—‰ @  c‘W;?d è}®Y—Í @  c’X;?d (~®ÄÓmN @  c“Y;?d h~®ñålÚ @  c”Z;?d ¨~®Ñn$ @  c•[;?d è~®× @  c–\;?d (®ÇK[í @  c—];?d h®ù†þî @  c˜^;?d ¨®uЀ®'Ùsü @  c™_;?d è®—ý& @  cš`;?d @€®)R @  c›a;?d €€®†{ æ @  cœb;?d À€®ê8 @  cc;?d ® >/ @  cžd;?d @®±)ñ @  cŸe;?d €®2¿€‚ @  c f;?d À®°.—\ @  c¡g;?d ‚®ñøzE @  c¢h;?d @‚®sim› @  c£i;?d €‚®ä;y/ @  c¤j;?d À‚®fªnñ @  c¥k;?d ƒ®ò`Læ @  c¦l;?d @ƒ®pñ[8 @  c§m;?d €ƒ®ìXë @  c¨n;?d Àƒ®nÉüÅ @  c©o;?d „®ÎE þ @  cªp;?d @„®LÔ7  @  c«q;?d €„®Û†#” @  c¬r;?d À„®Y4J @  c­s;?d …®ÍÝ] @  c®t;?d @…®OLƒ @  c¯u;?d €…®~D@ @  c°v;?d À…®üÕ˜ž @  c±w;?d †®½u‡ @  c²x;?d @†®?’bY @  c³y;?d €†®¨Àví @  c´z;?d À†®*Qa3 @  cµ{;?d ‡®¾›C$ @  c¶|;?d @‡®< Tú @  c·};?d €‡® £äÙ @  c¸~;?d À‡®"2ó @  c¹;?d ˆ®ß.(q @  cº€;?d @ˆ®]¿?¯ @  c»;?d €ˆ®Êí+ @  c¼‚;?d Àˆ®H|<Å @  c½ƒ;?d ‰®ܶÒ @  c¾„;?d @‰®^'  @  c¿…;?d €‰®Ð.¦í @  cÀ†;?d À‰®R¿±3 @  cÁ‡;?d Š®i\* @  cˆ;?d @Š®‘øKô @  cÉ;?d €Š®ª_@ @  cÄŠ;?d ÀŠ®„;Hž @  cÅ‹;?d ‹®ñj‰ @  cÆŒ;?d @‹®’`}W @  cÇ;?d €‹®ÉÍt @  cÈŽ;?d À‹®ŒXÚª @  cÉ;?d Œ®,Ô‘ @  cÊ;?d @Œ®®EO @  cË‘;?d €Œ®9û @  cÌ’;?d ÀŒ®»†% @  cÍ“;?d ®/L02 @  cΔ;?d @®­Ý'ì @  cÏ•;?d €®œÕ©/ @  cЖ;?d À®D¾ñ @  cÑ—;?d Ž®_’Sè @  cÒ˜;?d @Ž®ÝD6 @  cÓ™;?d €Ž®JQP‚ @  cÔš;?d ÀŽ®ÈÀG\ @  cÕ›;?d ®\ eK @  cÖœ;?d @®Þ›r• @  c×;?d €®B2¶ @  cØž;?d À®À£Õh @  cÙŸ;?d ®Z2 @  cÚ ;?d @®Ø™hì @  cÛ¡;?d €®OË|X @  cÜ¢;?d À®ÍZk† @  cÝ£;?d ‘®YI‘ @  cÞ¤;?d @‘®Û^O @  cߥ;?d €‘®û÷< @  cà¦;?d À‘®yžàâ @  cá§;?d ’®8H û @  câ¨;?d€ @’®<²œ @  d©;?d €’®Jœî @  dª;?d À’®È ùß @  d«;?d “®™Ž % @  d¬;?d @“®7û @  d­;?d €“®IØ¢ @  d®;?d À“®Ë•Ï| @  d¯;?d ”®¥«L= @  d°;?d @”®':[ã @  d ±;?d €”®u!´º @  d ²;?d À”®÷°£d @  d ³;?d •®¦3zž @  d ´;?d @•®$¢m@ @  d µ;?d €•®v¹‚ @  d¶;?d À•®ô(•Ç @  d·;?d –®ÖíD @  d¸;?d @–®T|š @  d¹;?d €–®gáà @  dº;?d À–®„öö @  d»;?d —®Õu/ç @  d¼;?d @—®Wä89 @  d½;?d €—®ÿ×` @  d¾;?d À—®‡nÀ¾ @  d¿;?d ˜®©  @  dÀ;?d @˜®+—þ @  dÁ;?d €˜®yŒè§ @  dÂ;?d À˜®ûÿy @  dÃ;?d ™®ªž&ƒ @  dÄ;?d @™®(1] @  dÅ;?d €™®zÞ @  dÆ;?d À™®ø…ÉÚ @  dÇ;?d š®ËFbé @  d È;?d @š®I×u7 @  d!É;?d €š®Ìšn @  d"Ê;?d Àš®™]° @  d#Ë;?d ›®ÈÞTJ @  d$Ì;?d @›®JOC” @  d%Í;?d €›®T¬Í @  d&Î;?d À›®šÅ» @  d'Ï;?d œ®ôû8R @  d(Ð;?d @œ®vj/Œ @  d)Ñ;?d €œ®$qÀÕ @  d*Ò;?d Àœ®¦à×  @  d+Ó;?d ®÷cñ @  d,Ô;?d @®uò/ @  d-Õ;?d €®'éöv @  d.Ö;?d À®¥xᨠ@  d/×;?d ž®‡½m+ @  d0Ø;?d @ž®,zõ @  d1Ù;?d €ž®W7•¬ @  d2Ú;?d Àž®Õ¦‚r @  d3Û;?d Ÿ®„%[ˆ @  d4Ü;?d @Ÿ®´LV @  d5Ý;?d €Ÿ®T¯£ @  d6Þ;uР®?d ÀŸ®Ö>´Ñ @  d7ß;?d  ®Mò#% @  d8à;?d X ®Ïc4û @  d9á;?d ˜ ®xÛ¢ @  d:â;?d Ø ®éÌ| @  d;ã;?d ¡®Nj† @  d<ä;?d X¡®ÌûX @  d=å;?d ˜¡®žàí @  d>æ;?d Ø¡®qúß @  d?ç;?d ¢®µW~ @  d@è;?d X¢®$@  @  dAé;?d ˜¢®Q?¯ù @  dBê;?d Ø¢®Ó®¸' @  dCë;?d £®‚-aÝ @  dDì;?d X£®¼v @  dEí;?d ˜£®R§™Z @  dFî;?d Ø£®Ð6Ž„ @  dGï;?d ¤®¾ Å @  dHð;?d X¤®<™ @  dIñ;?d ˜¤®n‚õB @  dJò;?d ؤ®ì✠@  dKó;?d ¥®½;f @  dLô;?d X¥®?,¸ @  dMõ;?d ˜¥®mÃá @  dNö;?d Ø¥®ï‹Ô? @  dO÷;?d ¦®ÍNX¼ @  dPø;?d X¦®OßOb @  dQù;?d ˜¦®Ä ; @  dRú;?d ئ®ŸU·å @  dSû;?d §®ÎÖn @  dTü;?d X§®LGyÁ @  dUý;?d ˜§®\–˜ @  dVþ;?d ا®œÍF @  dWÿ;?d ¨®ì oÐ @  dX<?d X¨®nœx @  dY<?d ˜¨®<‡—W @  dZ<?d ب®¾€‰ @  d[<?d ©®ï•Ys @  d\<?d X©®mN­ @  d]<?d ˜©®?¡ô @  d^<?d Ø©®½Ž¶* @  d_<?d ª®ŽM @  d`<?d Xª® Ü Ç @  da <?d ˜ª®^Çåž @  db <?d ت®ÜVò@ @  dc <?d «®Õ+º @  dd <?d X«®D @  dx <?d X°®E½)ß @  dy!<?d ˜°®¦Æ† @  dz"<?d ذ®•7ÑX @  d{#<?d ±®Ä´¢ @  d|$<?d X±®F%| @  d}%<?d ˜±®>ð% @  d~&<?d ر®–¯çû @  d'<?d ²®è=zk @  d€(<?d X²®j¬mµ @  d)<?d ˜²®8·‚ì @  d‚*<?d ز®º&•2 @  dƒ+<?d ³®ë¥LÈ @  d„,<?d X³®i4[ @  d…-<?d ˜³®;/´O @  d†.<?d س®¹¾£‘ @  d‡/<?d ´®×€ Ð @  dˆ0<?d X´®U7 @  d‰1<?d ˜´® ØW @  dŠ2<?d Ø´®…›Ï‰ @  d‹3<?d µ®Ôs @  dŒ4<?d Xµ®V‰­ @  d5<?d ˜µ®’îô @  dŽ6<?d ص®†ù* @  d7<?d ¶®¤Æu© @  d8<?d X¶®&Wbw @  d‘9<?d ˜¶®tL. @  d’:<?d ض®öÝšð @  d“;<?d ·®§^C  @  d”<<?d X·®%ÏTÔ @  d•=<?d ˜·®wÔ» @  d–><?d Ø·®õE¬S @  d—?<?d ¸®Û-|Í @  d˜@<?d X¸®Y¼k @  d™A<?d ˜¸® §„J @  dšB<?d ظ®‰6“” @  d›C<?d ¹®صJn @  dœD<?d X¹®Z$]° @  dE<?d ˜¹®?²é @  džF<?d ع®Š®¥7 @  dŸG<?d º®¹m @  d H<?d Xº®;üÚ @  d¡I<?d ˜º®içöƒ @  d¢J<?d غ®ëvá] @  d£K<?d »®ºõ8§ @  d¤L<?d X»®8d/y @  d¥M<?d ˜»®jÀ  @  d¦N<?d Ø»®èî×þ @  d§O<?d ¼®†ÐT¿ @  d¨P<?d X¼®ACa @  d©Q<?d ˜¼®VZ¬8 @  dªR<?d ؼ®ÔË»æ @  d«S<?d ½®…Hb @  d¬T<?d X½®Ùu @  d­U<?d ˜½®Uš› @  d®V<?d ؽ®×SE @  d¯W<?d ¾®õ–Æ @  d°X<?d X¾®w @  d±Y<?d ˜¾®%ùA @  d²Z<?d ؾ®§îŸ @  d³[<?d ¿®ö7e @  d´\<?d X¿®tŸ » @  dµ]<?d ˜¿®&„Ïâ @uÐÀ®  d¶^<?d Ø¿®¤Ø< @  d·_<?d 0À®*"Àü @  d¸`<?d pÀ®¨³×" @  d¹a<?d °À®ú¨8{ @  dºb<?d ðÀ®x9/¥ @  d»c<?d 0Á®)ºö_ @  d¼d<?d pÁ®«+á @  d½e<?d °Á®ù0Ø @  d¾f<?d ðÁ®{¡ @  d¿g<?d 0®æe´§ @  dÀh<?d p®dô£y @  dÁi<?d °Â®6ïL  @  dÂj<?d ð®´~[þ @  dÃk<?d 0îåý‚ @  dÄl<?d pîgl•Ú @  dÅm<?d °Ã®5wzƒ @  dÆn<?d ðî·æm] @  dÇo<?d 0Ä®ÙØî @  dÈp<?d pÄ®[Iù @  dÉq<?d °Ä® R› @  dÊr<?d ðÄ®‹ÃE @  dËs<?d 0Å®Ú@Ø¿ @  dÌt<?d pÅ®XÑÏa @  dÍu<?d °Å® Ê 8 @  dÎv<?d ðÅ®ˆ[7æ @  dÏw<?d 0Æ®ªž»e @  dÐx<?d pÆ®(¬» @  dÑy<?d °Æ®zCâ @  dÒz<?d ðÆ®ø…T< @  dÓ{<?d 0Ç®©Æ @  dÔ|<?d pÇ®+—š @  dÕ}<?d °Ç®yŒuA @  dÖ~<?d ðÇ®ûbŸ @  d×<?d 0È®ȳæ“ @  dØ€<?d pÈ®J"ñM @  dÙ<?d °È®9 @  dÚ‚<?d ðÈ®š¨ Ê @  dÛƒ<?d 0É®Ë+Ð0 @  dÜ„<?d pÉ®IºÇî @  dÝ…<?d °É®¡(· @  dÞ†<?d ðÉ®™0?i @  d߇<?d 0Ê®ªó”Z @  dàˆ<?d pÊ®(bƒ„ @  dá‰<?d °Ê®zylÝ @  dâŠ<?d€ ðÊ®Œ+g¥ @  e‹<?d 0Ë®<éöv @  eŒ<?d pË®¾xᨠ@  e<?d °Ë®)*õ @  eŽ<?d ðË®«»â @  e<?d 0Ì® 7>ù @  e<?d pÌ®‰¦)' @  e‘<?d °Ì®™ @  e’<?d ðÌ®—žŽÚ @  e “<?d 0Í®T¬Í @  e ”<?d pͮŻ @  e •<?d °Í®—¯§ @  e –<?d ðÍ®”¸y @  e —<?d 0ήÕÐU` @  e˜<?d pήWAB¾ @  e™<?d °Î®fIÌ} @  eš<?d ðήäØÛ£ @  e›<?d 0Ï®pù´ @  eœ<?d pÏ®òƒîj @  e<?d °Ï®eÑúÞ @  ež<?d ðÏ®ç@í @  eŸ<?d 0Ю}ëGZ @  e <?d pЮÿzP„ @  e¡<?d °Ð®cÓà§ @  e¢<?d ðЮáB÷y @  e£<?d 0Ñ®uˆÕn @  e¤<?d pÑ®÷° @  e¥<?d °Ñ®`KÖ @  e¦<?d ðÑ®âÚÁÚ @  e§<?d 0Ò®£ ,à @  e¨<?d pÒ®!; @  e©<?d °Ò®“’n @  e ª<?d ðÒ®ƒ…° @  e!«<?d 0Ó®ȧ§ @  e"¬<?d pÓ®•Y°y @  e#­<?d °Ó® ¤Í @  e$®<?d ðÓ®€š³ @  e%¯<?d 0Ô® o( @  e&°<?d pÔ®¢‡xö @  e'±<?d °Ô®>.ÈÕ @  e(²<?d ðÔ®¼¿ß  @  e)³<?d 0Õ®(uý @  e*´<?d pÕ®ªäê @  e+µ<?d °Õ®=¶þv @  e,¶<?d ðÕ®¿'é¨ @  e-·<?d 0Ö®þñ± @  e.¸<?d pÖ®|`o @  e/¹<?d °Ö®Mh¬ @  e0º<?d ðÖ®ÏùŠr @  e1»<?d 0×®[3¨e @  e2¼<?d p×®Ù¢¿» @  e3½<?d °×®Nð« @  e4¾<?d ð×®Ìa¼Ñ @  e5¿<?d 0Ø®,»35 @  e6À<?d pØ®®*$ë @  e7Á<?d °Ø®2ƒ”È @  e8Â<?d ðØ®°ƒ @  e9Ã<?d 0Ù®$Ø¡ @  e:Ä<?d pÙ®¦I¶ß @  e;Å<?d °Ù®1¢k @  e<Æ<?d ðÙ®³Šµµ @  e=Ç<?d 0Ú®ò\X¬ @  e>È<?d pÚ®pÍOr @  e?É<?d °Ú®þÄà“ @  e@Ê<?d ðÚ®|U÷M @  eAË<?d 0Û®èŸÕZ @  eBÌ<?d pÛ®j„ @  eCÍ<?d °Û®ý\Ö0 @  eDÎ<?d ðÛ®ÍÁî @  eEÏ<?d 0Ü®ßAÕ @  eFÐ<?d pÜ®]Ð  @  eGÑ<?d °Ü®Áyº( @  eHÒ<?d ðÜ®Cè­ö @  eIÓ<?d 0Ý®×"á @  eJÔ<?d pÝ®U³˜? @  eKÕ<?d °Ý®Âጋ @  eLÖ<?d ðÝ®@p›U @  eM×<?d 0Þ®¦vL @  eNØ<?d pÞ®ƒ7a’ @  eOÙ<?d °Þ®²?ïQ @  ePÚ<?d ðÞ®0®ø @  eQÛ<?d 0ß®¤dÚ˜ @  eRÜ<?d pß®&õÍF @  eSÝ<?d uÐà®/°ß®±§Ùò @  eTÞ<?d ðß® ñù @  eU ß<?d Hà®7 Zç @  eV à<?d ˆà®ÕX @  eW á<?d Èà®)ý @  eX â<?d á®ùPqò @  eY ã<?d Há®?CÈÓ @  eZ ä<?d ˆá®¶Ê- @  e[ å<?d Èá®*€Ë¹ @  e\ æ<?d â®·Äkx @  e] ç<?d Hâ®éÇ1~ @  e^ è<?d ˆâ®É23€ @  e_ é<?d Èâ®KXÓ @  e` ê<?d ã®›; @  ea ë<?d Hã®]º @  eb ì<?d ˆã®}ö¸ä @  ec í<?d Èã®HÀ¹p @  ed î<?d ä®QŽJ @  ee ï<?d Hä®jÝr• @  ef ð<?d ˆä®J(pk @  eg ñ<?d Èä®tåÕh @  eh ò<?d 室­Y€ @  ei ó<?d Hå®b¾à¡ @  ej ô<?d ˆå®BKâ_ @  ek õ<?d Èå®w}ãË @  el ö<?d æ®ê9C  @  em ÷<?d Hæ®´:  @  en ø<?d ˆæ®”Ïò @  eo ù<?d Èæ®£€ @  ep ú<?d ç®×ë ù @  eq û<?d Hç®øµØ @  er ü<?d ˆç®1 ·& @  es ý<?d Èç®;¶² @  et þ<?d è®0Ä:¯ @  eu ÿ<?d Hè®Ñ/ @  ev =?d ˆè®$$-è @  ew =?d Èè®éˆë @  ex =?d é®Ê¡ @  ey =?d Hé® ²½" @  ez =?d ˆé®,G¿Ü @  e{ =?d Èé®q¾H @  e| =?d ꮄ5‰ @  e} =?d Hê®Ú6D @  e~ =?d ˆê®úÃFq @  e  =?d Èê®5øÌ @  e€  =?d ë®å°@i @  e  =?d Hë®#£ùH @  e‚  =?d ˆë®Vû¶ @  eƒ  =?d Èë®6`ú" @  e„ =?d ì®/. - @  e… =?d Hì®}1Ç @  e† =?d ˆì®4ˆ39 @  e‡ =?d Èì® E–: @  eˆ =?d í®Ú Ò @  e‰ =?d Hí®£ó @  eŠ =?d ˆí®<ë¡  @  e‹ =?d Èí® Ý ™ @  eŒ =?d î®”™X @  e =?d Hî®ÊšZ^ @  eŽ =?d ˆî®êoX  @  e =?d Èî®yÃC @  e =?d ﮩKO« @  e‘ =?d Hï®oXöŠ @  e’ =?d ˆï®O­ôt @  e“ =?d Èï®z›õà @  e” =?d ð®ÄEIR @  e• =?d Hð®b¡Hd @  e–  =?d ˆð®BTJš @  e— !=?d Èð®|™ï™ @  e˜ "=?d ñ®¬Ñcq @  e™ #=?d Hñ®jÂÚP @  eš $=?d ˆñ®J7Ø® @  e› %=?d Èñ®Ù: @  eœ &=?d ò®âEyû @  e '=?d Hò®¼F#ý @  ež (=?d ˆò®œ³! @  eŸ )=?d Èò®ÙP @  e  *=?d ó®Α¸ @  e¡ +=?d H󮂨™ @  e¢ ,=?d ˆó®(wªg @  e£ -=?d Èó®A«ó @  e¤ .=?d ô®Xü @  e¥ /=?d Hô®?\` @  e¦ 0=?d ˆô®©bè @  e§ 1=?d Èô®!dÇë @  e¨ 2=?d õ®ñ,K @  e© 3=?d Hõ®7?ò" @  eª 4=?d ˆõ®ÊðÜ @  e« 5=?d Èõ®"üñH @  e¬ 6=?d ö®¿¸Q‰ @  e­ 7=?d Hö®á»  @  e® 8=?d ˆö®ÁN q @  e¯ 9=?d Èö®R"’’ @  e° :=?d ÷®‚jz @  e± ;=?d H÷®Dy§[ @  e² <=?d ˆ÷®dŒ¥¥ @  e³ ==?d È÷®Qº¤1 @  e´ >=?d ø®eE(, @  eµ ?=?d Hø®3ñ<  @  e¶ @=?d ˆø®>õ @  e· A=?d Èø®-É›ö @  e¸ B=?d ù®ý @  e¹ C=?d Hù®;’®? @  eº D=?d ˆù®g¬Á @  e» E=?d Èù®.Q­U @  e¼ F=?d ú®³ ” @  e½ G=?d Hú®íW’ @  e¾ H=?d ˆú®ÍãUl @  e¿ I=?d Èú®áŽï­ @  eÀ J=?d û®1ÆcE @  eÁ K=?d Hû®÷ÕÚd @  e L=?d ˆû®× Øš @  eà M=?d Èû®âÙ @  eÄ N=?d ü®ûX* @  eÅ O=?d Hü®À ë @  eÆ P=?d ˆü®àþ @  eÇ Q=?d Èü®Þ3µ @  eÈ R=?d ý®{9þ @  eÉ S=?d Hý®Èh€ß @  eÊ T=?d ˆý®è‚! @  eË U=?d Èý®Ý«ƒµ @  eÌ V=?d þ®@ï#t @  eÍ W=?d Hþ®ìyr @  eÎ X=?d ˆþ®>{Œ @  eÏ Y=?d Èþ®­uào @  eÐ Z=?d ÿ®}=l‡ @  eÑ [=?d Hÿ®».Õ¦ @  eÒ \=?d ˆÿ®›Û×X @  eÓ uЯ]=?d Èÿ®—*  @  eÔ^=?d ¯Øž"è @  eÕ_=?d `¯~z#Þ @  eÖ`=?d  ¯^!  @  e×a=?d à¯`B„# @  eØb=?d ¯° Ë @  eÙc=?d `¯v±ê @  eÚd=?d  ¯Vì³ @  eÛe=?d à¯cÚ²€ @  eÜf=?d ¯þžA @  eÝg=?d `¯ HG @  eÞh=?d  ¯€hJ¹ @  eßi=?d à¯öê @  eàj=?d ¯ÒJz @  eák=?d `¯YÃ# @  eâl=?d€  ¯õë6Ý @  fm=?d à¯!œ` @  fn=?d ¯8ÒŒo @  fo=?d `¯ÆÈOh @  fp=?d  ¯æ=M– @  fq=?d à¯B·ï @  fr=?d ¯Æ ; @  fs=?d `¯ΫÝ\ @  ft=?d  ¯î^ߢ @  f u=?d à¯!%Û @  f v=?d ¯ƒe… @  f w=?d `¯/$ñ @  f x=?d  ¯8Ú& @  f y=?d à¯È¥Üv @  fz=?d ¯íPž @  f{=?d `¯½íˆ% @  f|=?d  ¯ŠÛ @  f}=?d à¯mgp¢ @  f~=?d ¯Y˜ü¿ @  f=?d `¯×£Gç @  f€=?d  ¯÷VE @  f=?d à¯)¿` @  f‚=?d ¯×a3ˆ @  fƒ=?d ` ¯ßÀÕÓ @  f„=?d   ¯ÿ5×- @  f…=?d à ¯J-T @  f†=?d ¯’• @  f‡=?d ` ¯ D,~ @  fˆ=?d   ¯)±.€ @  f‰=?d à ¯ÙÎÔù @  fŠ=?d ¯ †X @  f‹=?d ` ¯½€§ @  f Œ=?d   ¯u¥ä @  f!=?d à ¯m _ @  f"Ž=?d ¯tD¬’ @  f#=?d ` ¯Š^o• @  f$=?d   ¯ª«mk @  f%‘=?d à ¯ZÔ— @  f&’=?d ¯Šœú @  f'“=?d ` ¯‚=ý¡ @  f(”=?d   ¯¢Èÿ_ @  f)•=?d à ¯R·& @  f*–=?d ¯Ïó¥ç @  f+—=?d `¯T¹  @  f,˜=?d  ¯tLò @  f-™=?d ௄3ü‹ @  f.š=?d ¯T{pc @  f/›=?d `¯ñ{¨Ø @  f0œ=?d  ¯ÑŽª& @  f1=?d à¯!ñP_ @  f2ž=?d ¯Ÿ/ìí @  f3Ÿ=?d `¯ü‚6 @  f4 =?d  ¯ÜwÈ @  f5¡=?d à¯,î± @  f6¢=?d ¯ü@bY @  f7£=?d `¯ôá„ @  f8¤=?d  ¯Ô†ü @  f9¥=?d à¯$k|… @  f:¦=?d ¯¹/ÜD @  f;§=?d `¯"e}¯ @  f<¨=?d  ¯Q @  f=©=?d à¯òï…( @  f>ª=?d ¯"§ À @  f?«=?d `¯8¦ðY @  f@¬=?d  ¯Sò§ @  fA­=?d à¯è,Þ @  fB®=?d ¯ñbûÑ @  fC¯=?d `¯x8Ö @  fD°=?d  ¯/:( @  fE±=?d à¯ßòÀQ @  fF²=?d ¯ºL¹ @  fG³=?d `¯ªâ @  fH´=?d  ¯'î¨ @  fIµ=?d à¯בRe @  fJ¶=?d ¯JÕò¤ @  fK·=?d `¯ÑŸSO @  fL¸=?d  ¯ñjQ± @  fM¹=?d à¯«È @  fNº=?d ¯Ñ]'  @  fO»=?d `¯t]ÿ› @  fP¼=?d  ¯T¨ýe @  fQ½=?d à¯¤× @  fR¾=?d ¯(‹ @  fS¿=?d `¯ÕdË @  fTÀ=?d  ¯# f5 @  fUÁ=?d à¯Ó_œL @  fVÂ=?d ¯¤ @  fWÃ=?d `¯ ¶öÿ @  fXÄ=?d  ¯+Cô @  fYÅ=?d à¯Û<x @  fZÆ=?d ¯Fx®¹ @  f[Ç=?d `¯Ý2R @  f\È=?d  ¯ýÇ ¬ @  f]É=?d ௠¸÷Õ @  f^Ê=?d ¯Ýð{= @  f_Ë=?d `¯iö„6 @  f`Ì=?d  ¯I†È @  faÍ=?d ௹||± @  fbÎ=?d ¯ 2¾ @  fcÏ=?d `¯^(L¹ @  fdÐ=?d  ¯~ÝNG @  feÑ=?d ௎¢´> @  ffÒ=?d ¯^ê8Ö @  fgÓ=?d `¯VKÞ @  fhÔ=?d  ¯v¾Üs @  fiÕ=?d ெÁ&  @  fjÖ=?d ¯…†Ë @  fk×=?d `¯€Ï'  @  flØ=?d  ¯ :%Þ @  fmÙ=?d à¯PEß§ @  fnÚ=?d ¯€ SO @  foÛ=?d `¯% ‹ô @  fpÜ=?d  ¯ø‰ uÐ ¯ @  fqÝ=?d à¯õ‡ss @  frÞ=?d 8 ¯„Œ­ @  fsß=?d x ¯ç!WÎ @  ftà=?d ¸ ¯ÇÔU0 @  fuá=?d ø ¯7«¯I @  fvâ=?d 8!¯çã#¡ @  fwã=?d x!¯ïBÅú @  fxä=?d ¸!¯Ï·Ç @  fyå=?d ø!¯?È=} @  fzæ=?d 8"¯¢Œ¼ @  f{ç=?d x"¯9Æ© @  f}é=?d ø"¯éLÄÐ @  f~ê=?d 8#¯9H8 @  fë=?d x#¯ÀS @  f€ì=?d ¸#¯ঃn @  fí=?d ø#¯Ùy @  f‚î=?d 8$¯ —Š @  fƒï=?d x$¯÷I @  f„ð=?d ¸$¯×xKá @  f…ñ=?d ø$¯'±˜ @  f†ò=?d 8%¯÷O=p @  f‡ó=?d x%¯ÿîÛ+ @  fˆô=?d ¸%¯ßÙÕ @  f‰õ=?d ø%¯/d#¬ @  fŠö=?d 8&¯² ƒm @  f‹÷=?d x&¯)j"† @  fŒø=?d ¸&¯ Ÿ x @  fù=?d ø&¯ùàÚ @  fŽú=?d 8'¯)¨Vé @  fû=?d x'¯Œ¨ŽR @  fü=?d ¸'¯¬]Œ¬ @  f‘ý=?d ø'¯\"vÕ @  f’þ=?d 8(¯hÝúÈ @  f“ÿ=?d x(¯+£!¹ @  f”>?d ¸(¯ V#G @  f•>?d ø(¯û)Ù> @  f–>?d 8)¯+aUÖ @  f—>?d x)¯#À³ @  f˜>?d ¸)¯5±s @  f™>?d ø)¯óJK  @  fš>?d 8*¯nëË @  f›>?d x*¯õDJ  @  fœ>?d ¸*¯Õ±HÞ @  f >?d ø*¯%β§ @  fž >?d 8+¯õ†>O @  fŸ >?d x+¯A€ÁD @  f  >?d ¸+¯auú @  f¡ >?d ø+¯‘ 9à @  f¢>?d 8,¯ˆDÊÌ @  f£>?d x,¯v^ Ë @  f¤>?d ¸,¯V« 5 @  f¥>?d ø,¯¦ÔñL @  f¦>?d 8-¯vœ}¤ @  f§>?d x-¯~=›ÿ @  f¨>?d ¸-¯^È™ @  f©>?d ø-¯®·cx @  fª>?d 8.¯3óù @  f«>?d x.¯¨¹bR @  f¬>?d ¸.¯ˆL`¬ @  f­>?d ø.¯x3šÕ @  f®>?d 8/¯¨{= @  f¯>?d x/¯ {Ά @  f°>?d ¸/¯-ŽÌx @  f±>?d ø/¯Ýñ6 @  f²>?d 80¯c/г @  f³>?d x0¯‚ph @  f´ >?d ¸0¯ wr– @  fµ!>?d ø0¯Ðˆï @  f¶">?d 81¯@ @  f·#>?d x1¯áâ\ @  f¸$>?d ¸1¯(ࢠ@  f¹%>?d ø1¯ØkÛ @  fº&>?d 82¯E/º @  f»'>?d x2¯Þeñ @  f¼(>?d ¸2¯þ @  f½)>?d ø2¯ïãv @  f¾*>?d 83¯Þ§ož @  f¿+>?d x3¯Ħ– @  fÀ,>?d ¸3¯äS”ù @  fÁ->?d ø3¯,n€ @  fÂ.>?d 84¯ b @  fÃ/>?d x4¯óx^ˆ @  fÄ0>?d ¸4¯Ó\v @  fÅ1>?d ø4¯#ò¦ @  fÆ2>?d 85¯óº*ç @  fÇ3>?d x5¯û̼ @  fÈ4>?d ¸5¯ÛîÎB @  fÉ5>?d ø5¯+‘4; @  fÊ6>?d 86¯¶Õ”ú @  fË7>?d x6¯-Ÿ5 @  fÌ8>?d ¸6¯ j7ï @  fÍ9>?d ø6¯ýÍ– @  fÎ:>?d 87¯-]A~ @  fÏ;>?d x7¯ˆ]™Å @  fÐ<>?d ¸7¯¨¨›; @  fÑ=>?d ø7¯X×aB @  fÒ>>?d 88¯l(í_ @  fÓ?>?d x8¯ÿÕ• @  fÔ@>?d ¸8¯ß k @  fÕA>?d ø8¯/_ú @  fÖB>?d 89¯ÿvú @  f×C>?d x9¯÷¶¡ @  fØD>?d ¸9¯×C’_ @  fÙE>?d ø9¯'?d 8:¯ºxÈç @  fÛG>?d x:¯!2i  @  fÜH>?d ¸:¯Çkò @  fÝI>?d ø:¯ñ¸‘‹ @  fÞJ>?d 8;¯!ðc @  fßK>?d x;¯•öâh @  fàL>?d ¸;¯µà– @  fáM>?d ø;¯E|ï @  fâN>?d€ 8<¯(ñõF @  gO>?d x<¯7ª~h @  gP>?d ¸<¯_|– @  gQ>?d ø<¯"i} @  gR>?d 8=¯ò!ñê @  gS>?d x=¯42HË @  gT>?d ¸=¯ÇJ5 @  gU>?d ø=¯* ï6 @  gV>?d 8>¯·NO÷ @  g W>?d x>¯éMñ @  g X>?d ¸>¯ɸ @  g Y>?d ø>¯üŽ› @  g Z>?d 8?¯,Æšs @  g [>?d x?¯êÕ#R @  g\>?duÐ@¯7 ¸?¯Ê !¬ @  g]>?d ø?¯YLºO @  g^>?d P@¯šàs @  g_>?d @¯ž`e @  g`>?d Ð@¯ñ» @  ga>?d A¯{™ @  gb>?d PA¯ùŽÇ @  gc>?d A¯ø"Æ @  gd>?d ÐA¯i5 @  ge>?d B¯>q' @  gf>?d PB¯¼à0Ú @  gg>?d B¯@‡ü @  gh>?d ÐB¯Âh" @  gi>?d C¯¥ùò€ @  gj>?d PC¯'hå^ @  gk>?d C¯CI_ @  gl>?d ÐC¯ÁŽ^ @  gm>?d D¯Ø; @  g n>?d PD¯ZªÝ @  g!o>?d D¯Ã< @  g"p>?d ÐD¯A +É @  g#q>?d E¯&ã±k @  g$r>?d PE¯¤r¦µ @  g%s>?d E¯À ´ @  g&t>?d ÐE¯B”j @  g'u>?d F¯cŒv @  g(v>?d PF¯á¨ @  g)w>?d F¯zWŽ @  g*x>?d ÐF¯Ÿë@P @  g+y>?d G¯øÚò @  g,z>?d PG¯z•Í, @  g-{>?d G¯âa- @  g.|>?d ÐG¯œsvó @  g/}>?d H¯¹qvÓ @  g0~>?d PH¯;àa  @  g1>?d H¯Òö4˜ @  g2€>?d ÐH¯Pg#F @  g3>?d I¯7ˆ¹ä @  g4‚>?d PI¯µ®: @  g5ƒ>?d I¯Ñn; @  g6„>?d ÐI¯Sÿå @  g7…>?d J¯rçù @  g8†>?d PJ¯ðv' @  g9‡>?d J¯ _ @  g:ˆ>?d ÐJ¯Ž€Hß @  g;‰>?d K¯éoÒ} @  g<Š>?d PK¯kþÅ£ @  g=‹>?d K¯‰i¢ @  g>Œ>?d ÐK¯~| @  g?>?d L¯:ª l @  g@Ž>?d PL¯¸;7² @  gA>?d L¯! x @  gB>?d ÐL¯šZÑs @  gC ‘>?d M¯ýµKÑ @  gD ’>?d PM¯$\ @  gE “>?d M¯Sð @  gF ”>?d ÐM¯™ÂçÐ @  gG •>?d N¯¸ÚõÌ @  gH –>?d PN¯:Kâ @  gI —>?d N¯Æ,­4 @  gJ ˜>?d ÐN¯D½ºê @  gK ™>?d O¯#R H @  gL š>?d PO¯¡Ã7– @  gM ›>?d O¯Å´›— @  gN œ>?d ÐO¯G%ŒI @  gO >?d P¯è¼Æ @  gP ž>?d PP¯j—« @  gQ Ÿ>?d P¯n¿ @  gR  >?d ÐP¯솨Ð @  gS ¡>?d Q¯‹i2r @  gT ¢>?d PQ¯ ø%¬ @  gU £>?d Q¯m‰­ @  gV ¤>?d ÐQ¯ïžs @  gW ¥>?d R¯ÎŒo @  gX ¦>?d PR¯L—›± @  gY §>?d R¯°ðÔ— @  gZ ¨>?d ÐR¯2aÃI @  g[ ©>?d S¯UŽYë @  g\ ª>?d PS¯×N5 @  g] «>?d S¯³hâ4 @  g^ ¬>?d ÐS¯1ùõê @  g_ ­>?d T¯(L­h @  g` ®>?d PT¯ªÝº¶ @  ga ¯>?d T¯3ê—| @  gb °>?d ÐT¯±{€¢ @  gc ±>?d U¯Ö” @  gd ²>?d PU¯T Þ @  ge ³>?d U¯0r¡ß @  gf ´>?d ÐU¯²ã¶ @  gg µ>?d V¯“û¤ @  gh ¶>?d PV¯j³Ã @  gi ·>?d V¯í üå @  gj ¸>?d ÐV¯oœë; @  gk ¹>?d W¯sq™ @  gl º>?d PW¯ŠâfG @  gm »>?d W¯î•ÊF @  gn ¼>?d ÐW¯lݘ @  go ½>?d X¯Iݸ @  gp ¾>?d PX¯Ë—Êf @  gq ¿>?d X¯?GËa @  gr À>?d ÐX¯½ÖÜ¿ @  gs Á>?d Y¯Ú9F @  gt Â>?d PY¯X¨Qà @  gu Ã>?d Y¯<ßý @  gv Ä>?d ÐY¯¾Nê @  gw Å>?d Z¯ŸVø @  gx Æ>?d PZ¯ÇïÞ @  gy Ç>?d Z¯á  ø @  gz È>?d ÐZ¯c1·& @  g{ É>?d [¯Þ-„ @  g| Ê>?d P[¯†O:Z @  g} Ë>?d [¯â8–[ @  g~ Ì>?d Ð[¯`©… @  g Í>?d \¯4Mï¤ @  g€ Î>?d P\¯¶Üøz @  g Ï>?d \¯/ëÕ° @  g‚ Ð>?d Ð\¯­zÂn @  gƒ Ñ>?d ]¯Ê•XÌ @  g„ Ò>?d P]¯HO @  g… Ó>?d ]¯,sã @  g† Ô>?d Ð]¯®âôÍ @  g‡ Õ>?d ^¯úæÑ @  gˆ Ö>?d P^¯ kñ @  g‰ ×>?d ^¯ñ ¾) @  gŠ Ø>?d Ð^¯s©÷ @  g‹ Ù>?d _¯r3U @  gŒ Ú>?d P_¯–ã$‹ @  g Û>?d _¯ò”ˆŠ @  guÐ`¯Ž Ü>?d Ð_¯pŸT @  g Ý>?d (`¯ߦñ @  g Þ>?d h`¯]‘±/ @  g‘ ß>?d ¨`¯Y¥9 @  g’ à>?d è`¯Û€²ç @  g“ á>?d (a¯¼o(E @  g” â>?d ha¯>þ?› @  g• ã>?d ¨a¯Z‰“š @  g– ä>?d èa¯Ø„D @  g— å>?d (b¯ù–X @  g˜ æ>?d hb¯{‘† @  g™ ç>?d ¨b¯‡öΠ @  gš è>?d èb¯gÙ~ @  g› é>?d (c¯bˆCÜ @  gœ ê>?d hc¯àT @  g ë>?d ¨c¯„nø @  gž ì>?d èc¯ÿïÝ @  gŸ í>?d (d¯J·_ @  g  î>?d hd¯Û  @  g¡ ï>?d ¨d¯ìK @  g¢ ð>?d èd¯†}š• @  g£ ñ>?d (e¯á’7 @  g¤ ò>?d he¯cé @  g¥ ó>?d ¨e¯t»è @  g¦ ô>?d èe¯…å¬6 @  g§ õ>?d (f¯¤ý¾* @  g¨ ö>?d hf¯&l©ô @  g© ÷>?d ¨f¯Ú æÒ @  gª ø>?d èf¯Xšñ  @  g« ù>?d (g¯?uk® @  g¬ ú>?d hg¯½ä|p @  g­ û>?d ¨g¯Ù“Ðq @  g® ü>?d èg¯[ǯ @  g¯ ý>?d (h¯~Ç @  g° þ>?d hh¯ü‘ÐQ @  g± ÿ>?d ¨h¯jàÐÈ @  g² ??d èh¯èqÇ @  g³ ??d (i¯ž]´ @  g´ ??d hi¯ Jj @  gµ ??d ¨i¯ixæk @  g¶ ??d èi¯ëéñµ @  g· ??d (j¯Êñã© @  g¸ ??d hj¯H`ôw @  g¹ ??d ¨j¯´»Q @  gº ??d èj¯6–¬ @  g»  ??d (k¯Qy6- @  g¼  ??d hk¯Óè!ó @  g½  ??d ¨k¯·Ÿò @  g¾  ??d èk¯5š, @  g¿  ??d (l¯‚¼Ä< @  gÀ ??d hl¯-Óâ @  gÁ ??d ¨l¯™þ( @  g ??d èl¯‹éö @  gà ??d (m¯|dsT @  gÄ ??d hm¯þõdŠ @  gÅ ??d ¨m¯š‚È‹ @  gÆ ??d èm¯ßU @  gÇ ??d (n¯9 ÍI @  gÈ ??d hn¯»šÚ— @  gÉ ??d ¨n¯Gý•± @  gÊ ??d èn¯Ål‚o @  gË ??d (o¯¢ƒÍ @  gÌ ??d ho¯  @  gÍ ??d ¨o¯De£ @  gÎ ??d èo¯Æô´Ì @  gÏ ??d (p¯iׄC @  gÐ ??d hp¯ëF“ @  gÑ ??d ¨p¯ïƇ‹ @  gÒ  ??d èp¯mWU @  gÓ !??d (q¯ ¸ ÷ @  gÔ "??d hq¯ˆ)) @  gÕ #??d ¨q¯ì^±( @  gÖ $??d èq¯nϦö @  g× %??d (r¯O×´ê @  gØ &??d hr¯ÍF£4 @  gÙ '??d ¨r¯1!ì @  gÚ (??d èr¯³°ûÌ @  gÛ )??d (s¯Ô_an @  gÜ *??d hs¯VÎv° @  gÝ +??d ¨s¯2¹Ú± @  gÞ ,??d ès¯°(Ío @  gß -??d (t¯©•í @  gà .??d ht¯+ ‚3 @  gá /??d ¨t¯²;¯ù @  gâ 0??d€ èt¯0¬u @  h 1??d (u¯žž~þ @  h 2??d hu¯i  @  h 3??d ¨u¯½1>Ì @  h 4??d èu¯? ) @  h 5??d (v¯Ð dt @  h 6??d hv¯R›sª @  h 7??d ¨v¯`Ncö @  h 8??d èv¯âßt( @  h 9??d (w¯@yg @  h :??d hw¯Âè¹ @  h ;??d ¨w¯cÖUU @  h ??d hx¯%Ç4ï @  h ???d ¨x¯²Tr @  h @??d èx¯0•C¬ @  h A??d (y¯’3"ã @  h B??d hy¯¢5= @  h C??d ¨y¯±œbÑ @  h D??d èy¯3 u @  h E??d (z¯ܧ8i @  h F??d hz¯^6/· @  h G??d ¨z¯lã?ë @  h H??d èz¯îr(5 @  h I??d ({¯LÔIz @  h J??d h{¯ÎE^¤ @  h K??d ¨{¯o{ H @  h L??d è{¯íê– @  h M??d (|¯†J> @  h N??d h|¯Ûà @  h O??d ¨|¯ïù| @  h P??d è|¯mhkÞ @  h! Q??d (}¯ÏÎ ‘ @  h" R??d h}¯M_O @  h# S??d ¨}¯ìaJ£ @  h$ T??d è}¯nð]} @  h% U??d (~¯Z @  h& V??d h~¯ËÅ @  h' W??d ¨~¯1™ @  h( X??d è~¯³G @  h) Y??d (¯)a @  h* Z??d h¯“¸vÖ @  h+ [??d ¨¯uЀ¯'2†!: @  h, \??d è¯Ky ä @  h-]??d @€¯W)7 @  h.^??d €€¯wÜÉ @  h/_??d À€¯²+`e @  h0`??d ¯bcì @  h1a??d @¯’ô @  h2b??d €¯²é  @  h3c??d À¯±³VÆ @  h4d??d ‚¯,÷ö @  h5e??d @‚¯܈ ~ @  h6f??d €‚¯ü}€ @  h7g??d À‚¯lÌ ü @  h8h??d ƒ¯¼„‡ @  h9i??d @ƒ¯Lû}m @  h:j??d €ƒ¯l“ @  h;k??d Àƒ¯oT=_ @  h<l??d „¯vÎP @  h=m??d @„¯†e4) @  h>n??d €„¯¦6× @  h?o??d À„¯AÑN… @  h@p??d …¯‘™Âm @  hAq??d @…¯aæ8 @  hBr??d €…¯A:ê @  hCs??d À…¯BIx& @  hDt??d †¯ß Øç @  hEu??d @†¯/r"ž @  hFv??d €†¯‡ ` @  hGw??d À†¯Ÿ6% @  hHx??d ‡¯O~©ô @  hIy??d @‡¯¿S @  hJz??d €‡¯ŸôQs @  hK{??d À‡¯œ®¿ @  hL|??d ˆ¯¨QŸ¢ @  hM}??d @ˆ¯X.eÛ @  hN~??d €ˆ¯xÛg% @  hO??d Àˆ¯PºF  @  hP€??d ‰¯€òÊâ @  hQ??d @‰¯p0› @  hR‚??d €‰¯Px2e @  hSƒ??d À‰¯S"p© @  hT„??d НÎfÐh @  hU…??d @Н>* @  hV†??d €Š¯ì(ï @  hW‡??d ÀНŽ]-“ @  hXˆ??d ‹¯^¡{ @  hY‰??d @‹¯®j[ @  hZŠ??d €‹¯ŽŸYü @  h[‹??d À‹¯Å0 @  h\Œ??d Œ¯”‹è? @  h]??d @Œ¯dôF @  h^Ž??d €Œ¯D¸ @  h_??d ÀŒ¯ Gnx @  h`??d ¯Ýâ @  ha‘??d @¯-pé @  hb’??d €¯ … @  hc“??d À¯ßXÛ @  hd”??d ޝ“›ø @  he•??d @ޝcäc @  hf–??d €Ž¯C @  hg—??d ÀޝÓ á @  hh˜??d ¯è‰  @  hi™??d @¯ó—sp @  hjš??d €¯ÓbqŽ @  hk›??d À¯Ð83B @  hlœ??d ¯næð @  hm??d @¯ž™u‰ @  hnž??d €¯¾lww @  hoŸ??d À¯{›Û @  hp ??d ‘¯«Ó›3 @  hq¡??d @‘¯[¬aJ @  hr¢??d €‘¯{Yc´ @  hs£??d À‘¯x!x @  ht¤??d ’¯åG¹ @  hu¥??d @’¯8{À @  hv¦??d €’¯5Íy> @  hw§??d À’¯¥||B @  hx¨??d “¯u4ðª @  hy©??d @“¯…K Ó @  hzª??d €“¯¥¾- @  h{«??d À“¯¦äJá @  h|¬??d ”¯¿ª¹î @  h}­??d @”¯OÕC— @  h~®??d €”¯o Ai @  h¯??d À”¯k7  @  h€°??d •¯»…â @  h±??d @•¯K› @  h‚²??d €•¯kõ}e @  hƒ³??d À•¯h¯?© @  h„´??d –¯õëŸh @  h…µ??d @–¯”e @  h†¶??d €–¯%agï @  h‡·??d À–¯µÐb“ @  hˆ¸??d —¯e˜î{ @  h‰¹??d @—¯•ç @  hŠº??d €—¯µü @  h‹»??d À—¯¶HT0 @  hŒ¼??d ˜¯‚·Ø- @  h½??d @˜¯rÈ"T @  h޾??d €˜¯R= ª @  h¿??d À˜¯gšU @  hÀ??d ™¯·ÒÙÿ @  h‘Á??d @™¯G­#† @  h’Â??d €™¯gX!x @  h“Ã??d À™¯dc´ @  h”Ä??d š¯ùFÃu @  h•Å??d @š¯ 99  @  h–Æ??d €š¯)Ì;ò @  h—Ç??d Àš¯¹}>Ž @  h˜È??d ›¯i5²f @  h™É??d @›¯™JH @  hšÊ??d €›¯¹¿Já @  h›Ë??d À›¯ºå- @  hœÌ??d œ¯£«û" @  hÍ??d @œ¯SÔ[ @  hžÎ??d €œ¯s!¥ @  hŸÏ??d Àœ¯:g}e @  h Ð??d ¯ê/ñ @  h¡Ñ??d @¯P ô @  h¢Ò??d €¯:¥  @  h£Ó??d À¯9ÿKÆ @  h¤Ô??d ž¯¤»ë @  h¥Õ??d @ž¯TÄ~ @  h¦Ö??d €ž¯t1€ @  h§×??d Àž¯ä€ü @  h¨Ø??d Ÿ¯4Èš @  h©Ù??d @Ÿ¯Ä·`m @  hªÚ??d €Ÿ¯äBb“ @  h«Û?uР¯?d ÀŸ¯ç _ @  h¬Ü??d  ¯m}Å9 @  h­ Ý??d X ¯?@ @  h® Þ??d ˜ ¯½÷=¾ @  h¯ ß??d Ø ¯x] @  h° à??d ¡¯¨HÑú @  h± á??d X¡¯X7+ƒ @  h² â??d ˜¡¯xÂ)} @  h³ ã??d Ø¡¯{˜k± @  h´ ä??d ¢¯æÜËp @  hµ å??d X¢¯£1  @  h¶ æ??d ˜¢¯6V3÷ @  h· ç??d Ø¢¯¦ç6‹ @  h¸ è??d £¯v¯ºc @  h¹ é??d X£¯†Ð@ @  hº ê??d ˜£¯¦%Bä @  h» ë??d Ø£¯¥( @  h¼ ì??d ¤¯¼1ó' @  h½ í??d X¤¯LN ^ @  h¾ î??d ˜¤¯l»   @  h¿ ï??d ؤ¯‹úsò @  hÀ ð??d ¥¯[²ÿ @  hÁ ñ??d X¥¯«Íc @  h ò??d ˜¥¯‹8 @  hà ó??d Ø¥¯ˆbEQ @  hÄ ô??d ¦¯&å @  hÅ õ??d X¦¯åYé @  hÆ ö??d ˜¦¯Ŭ @  hÇ ÷??d ئ¯Uk @  hÈ ø??d §¯¼’HV @  hÉù??d X§¯Lí²/ @  hÊú??d ˜§¯l°Ñ @  hËû??d ا¯oBò @  hÌü??d ¨¯[½~ @  hÍý??d X¨¯«Â„y @  hÎþ??d ˜¨¯‹7†‡ @  hÏÿ??d ب¯I½r @  hÐ@?d ©¯Ö1š @  hÑ@?d X©¯&~Ëã @  hÒ@?d ˜©¯‹É @  hÓ@?d Ø©¯Ñ‹Ñ @  hÔ@?d ª¯˜•+ @  hÕ@?d Xª¯hêÑi @  hÖ@?d ˜ª¯HÓ— @  h×@?d ت¯Ø®Öë @  hØ@?d «¯æZ @  hÙ @?d X«¯ø™ z @  hÚ @?d ˜«¯Øl¢„ @  hÛ @?d Ø«¯Û6àH @  hÜ @?d ¬¯ÂxG @  hÝ @?d X¬¯2é> @  hÞ@?d ˜¬¯òëÀ @  hß@?d ج¯[´• @  hà@?d ­¯‹üè @  há@?d X­¯{ƒã‘ @  hâ@?d€ ˜­¯/µýÉ @  i@?d Ø­¯Í®÷, @  i@?d ®¯PêWí @  i@?d X®¯eÜVy @  i@?d ˜®¯E)T‡ @  i@?d Ø®¯* @  i@?d ¯¯Ëb‚i @  i@?d X¯¯õ¯'j @  i@?d ˜¯¯ÕZ%” @  i @?d د¯Iœµ @  i @?d °¯­—  @  i @?d X°¯˜¡!“ @  i @?d ˜°¯¸T#m @  i @?d ذ¯°"[ @  i @?d ±¯Îø®³ @  i!@?d X±¯]”5P @  i"@?d ˜±¯}a7® @  i#@?d ر¯»rŽ @  i$@?d ²¯&6.N @  i%@?d X²¯/Ú @  i&@?d ˜²¯3õ-$ @  i'@?d ز¯möw" @  i(@?d ³¯½¾ûÊ @  i)@?d X³¯ƒs^É @  i*@?d ˜³¯£†\7 @  i+@?d س¯e•å @  i,@?d ´¯|Û @  i-@?d X´¯Ií @  i.@?d ˜´¯is @  i/@?d Ø´¯RK-™ @  i0@?d µ¯‚¡q @  i1@?d Xµ¯i" @  i 2@?d ˜µ¯ œÜ @  i!3@?d ص¯æ¦ý @  i"4@?d ¶¯{Ë< @  i#5@?d X¶¯Ný¨ @  i$6@?d ˜¶¯nV @  i%7@?d ض¯0 _P @  i&8@?d ·¯àCÓ¸ @  i'9@?d X·¯ÞŽv» @  i(:@?d ˜·¯þ{tE @  i);@?d Ø·¯8hÍd @  i*<@?d ¸¯ —Ay @  i+=@?d X¸¯9¡@í @  i,>@?d ˜¸¯TB @  i-?@?d ظ¯OàV4 @  i.@@?d ¹¯Ÿ¨ÚÜ @  i/A@?d X¹¯ ÄA? @  i0B@?d ˜¹¯,1CÁ @  i1C@?d ع¯ê"úà @  i2D@?d º¯wfZ! @  i3E@?d Xº¯BP[µ @  i4F@?d ˜º¯b¥YK @  i5G@?d غ¯<¦M @  i6H@?d »¯ìî¥ @  i7I@?d X»¯Ò#*¦ @  i8J@?d ˜»¯òÖ(X @  i9K@?d Ø»¯4Å‘y @  i:L@?d ¼¯-‹bv @  i;M@?d X¼¯½câ @  i<N@?d ˜¼¯8Ha @  i=O@?d ؼ¯Yö @  i>P@?d ½¯ÓSÕ @  i?Q@?d X½¯ÿ>oß @  i@R@?d ˜½¯ßËm! @  iAS@?d ؽ¯ØÔ @  iBT@?d ¾¯„œtÁ @  iCU@?d X¾¯±ªuU @  iDV@?d ˜¾¯‘_w« @  iEW@?d ؾ¯Ï\-­ @  iFX@?d ¿¯¡E @  iGY@?d X¿¯!ÙF @  iHZ@?d ˜¿¯,¸ @uÐÀ¯  iI[@?d Ø¿¯º¿Ìå @  iJ€\@?d 0À¯ÞO· @  iK€]@?d pÀ¯ëyœ# @  iL€^@?d °À¯ËŒžÝ @  iM€_@?d ðÀ¯mhŸë @  iN€`@?d 0Á¯½  @  iO€a@?d pÁ¯.Lˆà @  iP€b@?d °Á¯¹Š @  iQ€c@?d ðÁ¯Ȫ3? @  iR€d@?d 0¯Uî“þ @  iS€e@?d p¯`Ø’j @  iT€f@?d °Â¯@-” @  iU€g@?d ð¯.Ê’ @  iV€h@?d 0ïÎfFz @  iW€i@?d pïð«ãy @  iX€j@?d °Ã¯Ð^ᇠ@  iY€k@?d ðïMX¦ @  iZ€l@?d 0į«© @  i[€m@?d pį:5ª= @  i\€n@?d °Ä¯À¨Ã @  i]€o@?d ðį!“) @  i^€p@?d 0ůñÛÁ @  i_€q@?d půs± ’ @  i`€r@?d °Å¯SD¢l @  ia€s@?d ðů•WM @  ib€t@?d 0Ư»Œ @  ic€u@?d pƯ=%º @  id€v@?d °Æ¯иæ @  ie€w@?d ðƯCÓâà @  if€x@?d 0ǯ“›n @  ig€y@?d pǯ­VË  @  ih€z@?d °Ç¯£Éõ @  ii€{@?d ðǯK°pÔ @  ij€|@?d 0ȯOüÉ @  ik€}@?d pȯJyý] @  il€~@?d °È¯jŒÿ£ @  im€@?d ðȯ!þ¿ @  in€€@?d 0ɯñ¶3þ @  io€@?d pɯbÚ¨ @  ip€‚@?d °É¯B/ªã @  iq€ƒ@?d ðɯ„< @  ir€„@?d 0ʯx³ @  is€…@?d pʯ,N²— @  it€†@?d °Ê¯ »°i @  iu€‡@?d ðʯR¸êo @  iv€ˆ@?d 0˯‚ðf‡ @  iw€‰@?d p˯¼=Ä @  ix€Š@?d °Ë¯œÈÁz @  iy€‹@?d ð˯ZÛx[ @  iz€Œ@?d 0̯C•‹T @  i{€@?d p̯v£ŠÀ @  i|€Ž@?d °Ì¯VVˆ> @  i}€@?d ð̯m°Ô @  i~€@?d 0ͯ½M<< @  i€‘@?d pͯrv¶Ì @  i€€’@?d °Í¯Rƒ´2 @  i€“@?d ðͯ”  @  i‚€”@?d 0ί Ô­Ò @  iƒ€•@?d pί<â¬F @  i„€–@?d °Î¯®¸ @  i…€—@?d ðίBô¾ @  i†€˜@?d 0ϯ’\xV @  i‡€™@?d pϯ¬‘ÝU @  iˆ€š@?d °Ï¯Œdß« @  i‰€›@?d ðϯJwfŠ @  iŠ€œ@?d 0Яô©Ú8 @  i‹€@?d pЯÁŸÛ¬ @  iŒ€ž@?d °Ð¯ájÙR @  i€Ÿ@?d ðЯGŽØd @  iŽ€ @?d 0ѯ—ÆTŒ @  i€¡@?d pѯªÏo @  i€¢@?d °Ñ¯$_Í‘ @  i‘€£@?d ðѯâLt° @  i’€¤@?d 0Ò¯Ôq @  i“€¥@?d pÒ¯J>Õå @  i”€¦@?d °Ò¯jË× @  i•€§@?d ðÒ¯4È @  i–€¨@?d 0Ó¯ä€õ @  i—€©@?d pÓ¯ÚM¤ö @  i˜€ª@?d °Ó¯ú¸¦ @  i™€«@?d ðÓ¯<«) @  iš€¬@?d 0Ô¯%åì& @  i›€­@?d pÔ¯Óí² @  iœ€®@?d °Ô¯0&ïL @  i€¯@?d ðÔ¯ uצ @  iž€°@?d 0Õ¯Û=[N @  iŸ€±@?d pÕ¯YWç @  i €²@?d °Õ¯y¢åã @  i¡€³@?d ðÕ¯¿±\ @  i¢€´@?d 0Ö¯"õü @  i£€µ@?d pÖ¯Ãý— @  i¤€¶@?d °Ö¯76ÿi @  i¥€·@?d ðÖ¯i5¥o @  i¦€¸@?d 0ׯ¹})‡ @  i§€¹@?d pׯ‡°Œ„ @  i¨€º@?d °×¯§EŽz @  i©€»@?d ðׯaV7[ @  iª€¼@?d 0دU©»F @  i«€½@?d pد`ŸºÒ @  i¬€¾@?d °Ø¯@j¸, @  i­€¿@?d ðدÞ¬  @  i®€À@?d 0ٯƖ ã @  i¯€Á@?d pÙ¯Uú» @  i°€Â@?d °Ù¯u¹þ @  i±€Ã@?d ðÙ¯³ß @  i²€Ä@?d 0Ú¯.X  @  i³€Å@?d pÚ¯n¡Š @  i´€Æ@?d °Ú¯;›£t @  iµ€Ç@?d ðÚ¯e˜ùr @  i¶€È@?d 0Û¯µÐuš @  i·€É@?d pÛ¯‹Й @  i¸€Ê@?d °Û¯«èÒg @  i¹€Ë@?d ðÛ¯mûkF @  iº€Ì@?d 0ܯtµ˜I @  i»€Í@?d pܯAƒ™Ý @  i¼€Î@?d °Ü¯av›# @  i½€Ï@?d ðܯZ%£É @  i¾€Ð@?d 0ݯŠm/! @  i¿€Ñ@?d pݯ¦•à @  iÀ€Ò@?d °Ý¯†õ— @  iÁ€Ó@?d ðݯ@æ.? @  i€Ô@?d 0ޯݢŽþ @  iÀÕ@?d pÞ¯è”j @  iÄ€Ö@?d °Þ¯Èa” @  iÅ€×@?d ðÞ¯–b×’ @  iÆ€Ø@?d 0߯F*[z @  iÇ€Ù@?d p߯xçþy @  iÈ€Ú@?d uÐà¯/°ß¯Xü‡ @  iÉ€Û@?d ð߯ã6Ú @  iÊÜ@?d Hà¯ú%h, @  iËÝ@?d ˆà¯mw|˜ @  iÌÞ@?d Èà¯ïækF @  iÍß@?d á¯ÛñF @  iÎà@?d HᯙJæ˜ @  iÏá@?d ˆá¯¨Bh[ @  iÐâ@?d Èá¯*Ó… @  iÑã@?d â¯óq» @  iÒä@?d Hâ¯q„fe @  iÓå@?d ˆâ¯æÖrÑ @  iÔæ@?d Èâ¯dGe @  iÕç@?d ã¯h¤? @  iÖè@?d Hã¯ê ³á @  i×é@?d ˆã¯v¥Â @  iØê@?d Èã¯ô4 @  iÙë@?d 䯩øIì @  iÚì@?d Hä¯+i^2 @  iÛí@?d ˆä¯¼;J† @  iÜî@?d Èä¯>ª]X @  iÝï@?d å¯W þ„ @  iÞð@?d Hå¯Õ±éZ @  ißñ@?d ˆå¯õ¿@) @  iàò@?d Èå¯w.W÷ @  iáó@?d 毮èYÉ @  iâô@?d€ Hæ¯í>¹ @  jõ@?d ˆæ¯›-åŠ @  jö@?d Èæ¯¼òT @  j÷@?d ç¯Ð/ȉ @  jø@?d Hç¯R¾ßW @  jù@?d ˆç¯¥0 @  jú@?d È篂4'Ð @  jû@?d è¯<ûZH @  jü@?d H课jM– @  j ý@?d ˆè¯ìq¢Ï @  j þ@?d Èè¯nൠ@  j ÿ@?d é¯ÍeÀs @  j A?d Hé¯Oô×­ @  j A?d ˆé¯ï8ô @  jA?d È鯟~/* @  jA?d ê¯%«@Ž @  jA?d Hꯧ:WP @  jA?d ˆê¯õ!¸  @  jA?d Èê¯w°¯× @  jA?d 믾#•  @  jA?d Hë¯<²‚Ô @  j A?d ˆë¯n©m @  j A?d Èë¯ì8zS @  j A?d ì¯FxÙ @  j A?d Hì¯ý×o @  j A?d ˆì¯¯Ì€^ @  jA?d Èì¯-]—€ @  jA?d í¯žÏ± @  jA?d Hí¯Øo @  jA?d ˆí¯Q76 @  jA?d Èí¯Ó… è @  jA?d î¯xVhü @  j A?d Hî¯úÇ" @  j!A?d ˆî¯¨Ü{ @  j"A?d Èî¯*M‡¥ @  j#A?d ï¯ãÞ½x @  j$A?d Hï¯aOª¦ @  j%A?d ˆï¯3TEÿ @  j&A?d ÈﯱÅR! @  j'A?d ð¯…+ @  j(A?d Hð¯ºÈ @  j)A?d ˆð¯U¡ç‘ @  j*A?d Èð¯×0ðO @  j+A?d ñ¯æD‘¢ @  j, A?d Hñ¯dÕ†| @  j-!A?d ˆñ¯6Îi% @  j."A?d Èñ¯´_~û @  j/#A?d ò¯Š_ @  j0$A?d Hò¯Œ @  j1%A?d ˆò¯ÞéØ @  j2&A?d Èò¯\‘þ @  j3'A?d ó¯•ÄÛ @  j4(A?d Hó¯“Ó @  j5)A?d ˆó¯Eˆ<\ @  j6*A?d Èó¯Ç+‚ @  j7+A?d ô¯Tg) @  j8,A?d Hô¯Öö>Ö @  j9-A?d ˆô¯„íÑ @  j:.A?d Èô¯|ÆQ @  j;/A?d õ¯ª¿ž` @  j<0A?d Hõ¯(.‰¾ @  j=1A?d ˆõ¯z5fç @  j>2A?d Èõ¯ø¤q9 @  j?3A?d ö¯ýp?¿ @  j@4A?d Hö¯á(a @  jA5A?d ˆö¯-úÇ8 @  jB6A?d Èö¯¯kÐæ @  jC7A?d ÷¯føê; @  jD8A?d H÷¯äiýå @  jE9A?d ˆ÷¯¶r¼ @  jF:A?d È÷¯4ãb @  jG;A?d ø¯Š,xú @  jHA?d Èø¯Ø7—£ @  jK?A?d ù¯ã_ @  jL@A?d Hù¯›‚ô @  jMAA?d ˆù¯É™Ø @  jNBA?d Èù¯K  @  jOCA?d ú¯ñÝc¢ @  jPDA?d Hú¯sLt| @  jQEA?d ˆú¯!W›% @  jRFA?d Èú¯£ÆŒû @  jSGA?d û¯jU¶& @  jTHA?d Hû¯èÄ¡ø @  jUIA?d ˆû¯ºßN¡ @  jVJA?d Èû¯8NY @  jWKA?d ü¯«0[õ @  jXLA?d Hü¯)¡L+ @  jYMA?d ˆü¯{º£r @  jZNA?d Èü¯ù+´¬ @  j[OA?d ý¯Uèì @  j\PA?d Hý¯×yûC @  j]QA?d ˆý¯…b @  j^RA?d Èý¯óÄ @  j_SA?d þ¯¬ KÐ @  j`TA?d Hþ¯.±\ @  jaUA?d ˆþ¯|ª³W @  jbVA?d Èþ¯þ;¤‰ @  jcWA?d ÿ¯7¨žT @  jdXA?d Hÿ¯µ9‰Š @  jeYA?d ˆÿ¯ç"fÓ @  jfuаZA?d Èÿ¯e³q  @  jg[A?d °µÝíª @  jh\A?d `°7Lút @  ji]A?d  °eW- @  jj^A?d à°çÆó @  jk_A?d °Ö²c @  jl`A?d `°T#tÀ @  jmaA?d  °8›™ @  jnbA?d à°„©ŒG @  jocA?d °>|ãã @  jpdA?d `°¼íô= @  jqeA?d  °îöd @  jrfA?d à°lg º @  jsgA?d °¥ô6g @  jthA?d `°'e!¹ @  juiA?d  °u~Îà @  jvjA?d à°÷ïÙ> @  jwkA?d °d‘Û´ @  jxlA?d `°æÌj @  jymA?d  °´#3 @  jznA?d à°6Š4í @  j{oA?d °šIlÜ @  j|pA?d `°Ø{ @  j}qA?d  °JÔ[ @  j~rA?d à°ÈRƒ… @  jsA?d °.Ðý2 @  j€tA?d `°¬Aêì @  juA?d  °þZµ @  j‚vA?d à°|Ëk @  jƒwA?d °µX(¶ @  j„xA?d `°7É?h @  j…yA?d  °eÒÐ1 @  j†zA?d à°çCÇï @  j‡{A?d °YŒºw @  jˆ|A?d `°Û­© @  j‰}A?d  °‰Bð @  jŠ~A?d à° —U. @  j‹A?d °×uu@ @  jŒ€A?d ` °Uäbž @  jA?d   °ÿÇ @  jŽ‚A?d à °…nš @  jƒA?d °?»õ½ @  j„A?d ` °½*âc @  j‘…A?d   °ï1 : @  j’†A?d à °m ä @  j“‡A?d °¤3 9 @  j”ˆA?d ` °&¢7ç @  j•‰A?d   °t¹Ø¾ @  j–ŠA?d à °ö(Ï` @  j—‹A?d °eVÍê @  j˜ŒA?d ` °çÇÚ4 @  j™A?d   °µÜ5m @  jšŽA?d à °7M"³ @  j›A?d °›Žz‚ @  jœA?d ` °m\ @  j‘A?d   °K‚ @  jž’A?d à °É••Û @  jŸ“A?d °bFÝÏ @  j ”A?d `°à×Ê @  j¡•A?d  °²Ì%H @  j¢–A?d à°0]2– @  j£—A?d °ùÎK @  j¤˜A?d `°{_• @  j¥™A?d  °)DðÌ @  j¦šA?d à°«Õç @  j§›A?d °Ÿ;ª% @  j¨œA?d `°ª½û @  j©A?d  °O±R¢ @  jªžA?d à°Í E| @  j«ŸA?d °üT$‘ @  j¬ A?d `°~Å3O @  j­¡A?d  °,ÞÜ @  j®¢A?d à°®OËÈ @  j¯£A?d °š¤l @  j°¤A?d `°– ³² @  j±¥A?d  °Ä\ë @  j²¦A?d à°FK5 @  j³§A?d °qè @  j´¨A?d `° ƒf6 @  jµ©A?d  °_˜‰o @  j¶ªA?d à°Ý ž± @  j·«A?d °Nwœ; @  j¸¬A?d `°Ìæ‹å @  j¹­A?d  °žýd¼ @  jº®A?d à°lsb @  j»¯A?d °°¯+S @  j¼°A?d `°2>< @  j½±A?d  °`%ÓÔ @  j¾²A?d à°â´Ä  @  j¿³A?d °ç`ŠŒ @  jÀ´A?d `°eñR @  jÁµA?d  °7êr  @  j¶A?d à°µ{eÕ @  j÷A?d °|è_ @  jĸA?d `°þyHÖ @  jŹA?d  °¬b§ @  jƺA?d à°.ó°Q @  jÇ»A?d °<ÍÉ @  jȼA?d `°­Ú @  jɽA?d  °@¶5N @  jʾA?d à°Â'" @  jË¿A?d °Vl @  jÌÀA?d `°’A² @  jÍÁA?d  °Ó‰®ë @  jÎÂA?d à°Q¹5 @  jÏÃA?d °ëÍÖ‘ @  jÐÄA?d `°i\ÁO @  jÑÅA?d  °;G. @  jÒÆA?d à°¹Ö9È @  jÓÇA?d °pE @  jÔÈA?d `°òÔË @  jÕÉA?d  ° Ïû’ @  jÖÊA?d à°"^ìL @  j×ËA?d °± îÆ @  jØÌA?d `°3±ù @  jÙÍA?d  °aªA @  jÚÎA?d à°ã;Ÿ @  jÛÏA?d °OøY® @  jÜÐA?d `°ÍiNp @  jÝÑA?d  °Ÿr¡) @  jÞÒA?d à°ã¶÷ @  jßÓA?d °¶0þã @  jàÔA?d `°4¡é= @  jáÕA?d  °fºd @  jâÖA?d€ à°è  @  k×A?d °¸:è @  kØA?d `°:«h6 @  kÙA?d  °­ù|‚uÐ ° @  kÚA?d à°/hk\ @  kÛA?d 8 °áÅ @  kÜA?d x °˜p  @  kÝA?d ¸ °Ù¼8 @  kÞA?d ø °†H«æ @  k ßA?d 8!°ru1æ @  k àA?d x!°ðä&8 @  k áA?d ¸!°g¶2Œ @  k âA?d ø!°å'%R @  k ãA?d 8"°<á+l @  käA?d x"°¾p<² @  kåA?d ¸"°x²q @  kæA?d ø"° 饯 @  kçA?d 8#°3dŸ @  kèA?d x#°ƒ¢sA @  kéA?d ¸#°ðgõ @  kêA?d ø#°–ap+ @  këA?d 8$°Ë­-Û @  kìA?d x$°I<: @  kíA?d ¸$°Õ•Š& @  kîA?d ø$°Wø @  kïA?d 8%°>Ž>$ @  kðA?d x%°¼)ú @  kñA?d ¸%°+M=N @  kòA?d ø%°©Ü* @  kóA?d 8&°p$® @  kôA?d x&°ò‹3p @  kõA?d ¸&°Ò…š @  k öA?d ø&°PÝ @  k!÷A?d 8'°\ÎLí @  k"øA?d x'°Þ_[3 @  k#ùA?d ¸'°I O‡ @  k$úA?d ø'°ËœXY @  k%ûA?d 8(°»áz» @  k&üA?d x(°9pme @  k'ýA?d ¸(°¥ÙÝF @  k(þA?d ø(°'Hʘ @  k)ÿA?d 8)°ó¦q2 @  k*B?d x)°q7fì @  k+B?d ¸)°æerX @  k,B?d ø)°dôe† @  k-B?d 8*°½2k¸ @  k.B?d x*°?£|f @  k/B?d ¸*°«ò¥ @  k0B?d ø*°Œ:å{ @  k1B?d 8+°€à$K @  k2B?d x+°q3• @  k3 B?d ¸+°•#'! @  k4 B?d ø+°²0ÿ @  k5 B?d 8,°J~m @  k6 B?d x,°ÈïzÑ @  k7 B?d ¸,°TFÊò @  k8B?d ø,°Ö×Ý, @  k9B?d 8-°¿]~ð @  k:B?d x-°=Ìi. @  k;B?d ¸-°ªž}š @  k<B?d ø-°(jD @  k=B?d 8.°ñÉdz @  k>B?d x.°sXs¤ @  k?B?d ¸.°ýQÜE @  k@B?d ø.°ÀË› @  kAB?d 8/°s « @  kBB?d x/°ñ‹u @  kCB?d ¸/°fÙ Á @  kDB?d ø/°äH @  kEB?d 80° R @  kFB?d x0°œ…Œ @  kGB?d ¸0°,«¯ @  kHB?d ø0°‚½¼q @  kIB?d 81°v€&q @  kJ B?d x1°ô1¯ @  kK!B?d ¸1°cC% @  kL"B?d ø1°áÒ2Å @  kM#B?d 82°8<û @  kN$B?d x2°º…+% @  kO%B?d ¸2°‹¥æ @  kP&B?d ø2° ²8 @  kQ'B?d 83°Æs @  kR(B?d x3°‡WdÖ @  kS)B?d ¸3°pb @  kT*B?d ø3°’”g¼ @  kU+B?d 84°ÏX:L @  kV,B?d x4°MÉ-’ @  kW-B?d ¸4°Ñ`± @  kX.B?d ø4°SñŠo @  kY/B?d 85°:{)³ @  kZ0B?d x5°¸ê>m @  k[1B?d ¸5°/¸*Ù @  k\2B?d ø5°­)= @  k]3B?d 86°tï39 @  k^4B?d x6°ö~$ç @  k_5B?d ¸6°Öp” @  k`6B?d ø6°TášJ @  ka7B?d 87°X;[z @  kb8B?d x7°ÚªL¤ @  kc9B?d ¸7°MøX @  kd:B?d ø7°ÏiOÎ @  ke;B?d 88°¿m, @  kfB?d ø8°#½Ý @  ki?B?d 89°'ÐR @  kj@B?d x9°¥AEÀ @  kkAB?d ¸9°2Qt @  klBB?d ø9°°‚Fª @  kmCB?d 8:°iDH” @  knDB?d x:°ëÕ_J @  koEB?d ¸:°ÚÝщ @  kpFB?d ø:°XLÆW @  kqGB?d 8;°T–g @  krHB?d x;°Ö¹ @  ksIB?d ¸;°AU  @  ktJB?d ø;°ÃÄÓ @  kuKB?d 8<°žN# @  kvLB?d x<°™Yý @  kwMB?d ¸<°€0éÞ @  kxNB?d ø<°¡þ @  kyOB?d 8=°k+]Ü @  kzPB?d x=°éºJ @  k{QB?d ¸=°~è^¶ @  k|RB?d ø=°üyIh @  k}SB?d 8>°%¿GV @  k~TB?d x>°§.Pˆ @  kUB?d ¸>°ÊqÏX @  k€VB?d ø>°HàØ† @  kWB?d 8?°D:¶ @  k‚XB?d x?°Æ«h @  kƒYB?duÐ@°7 ¸?°QùÜ @  k„ZB?d ø?°ê¯Ñ× @  k… [B?d P@°mÅ @  k† \B?d @°MtÇê @  k‡ ]B?d Ð@°s¹bé @  kˆ ^B?d A°£ñî @  k‰ _B?d PA°ï7 @  kŠ `B?d A°%àíÉ @  k‹ aB?d ÐA°Öì] @  kŒ bB?d B°’Lœ @  k cB?d PB°Kõ½ @  kŽ dB?d B°kt÷C @  k eB?d ÐB°øl  @  k fB?d C°(PàH @  k‘ gB?d PC°vSºN @  k’ hB?d C°V¦¸° @  k“ iB?d ÐC°c¹$ @  k” jB?d D°zÞJ+ @  k• kB?d PD°¼Íó  @  k– lB?d D°œ8ñô @  k— mB?d ÐD°¢õT÷ @  k˜ nB?d E°r½Ø @  k™ oB?d PE°Iîàõ @  kš pB?d E°iâ  @  k› qB?d ÐE°\-㟠@  kœ rB?d F°ÁiC^ @  k sB?d PF°zú @  kž tB?d F°'ø @  kŸ uB?d ÐF°¥åDÒ @  k  vB?d G°u­È: @  k¡ wB?d PG°+®’< @  k¢ xB?d G° [ @  k£ yB?d ÐG°>m‘V @  k¤ zB?d H° ’K @  k¥ {B?d PH°̤j @  k¦ |B?d H°ìt¦” @  k§ }B?d ÐH°Ò¹— @  k¨ ~B?d I°ñ @  k© B?d PI°IƒÏÊ @  kª €B?d I°ivÍ4 @  k« B?d ÐI°\@Ì  @  k¬ ‚B?d J°Ála @  k­ ƒB?d PJ°Õ@ @  k® „B?d J°'â×¾ @  k¯ …B?d ÐJ°´ŽL] @  k° †B?d K°dÆÀµ @  k± ‡B?d PK°:Åš³ @  k² ˆB?d K°0˜M @  k³ ‰B?d ÐK°/™Ù @  k´ ŠB?d L°6HjÖ @  kµ ‹B?d PL°ð[Ó÷ @  k¶ ŒB?d L°Ð®Ñ  @  k· B?d ÐL°îct  @  k¸ ŽB?d M°>+øâ @  k¹ B?d PM°xÀ @  kº B?d M°%Âö @  k» ‘B?d ÐM°»Ãb @  k¼ ’B?d N°ÿc£ @  k½ “B?d PN°KìÚ‚ @  k¾ ”B?d N°kØ| @  k¿ •B?d ÐN°Gtb½ @  kÀ –B?d O°—<îU @  kÁ —B?d PO°É?´S @  k ˜B?d O°éʶ­ @  kà ™B?d ÐO°Üü·9 @  kÄ šB?d P°b" ‹ @  kÅ ›B?d PP°¤1²ª @  kÆ œB?d P°„İT @  kÇ B?d ÐP°º W @  kÈ žB?d Q°jA™¿ @  kÉ ŸB?d PQ°Ì¥˜‰ @  kÊ  B?d Q°ìPšw @  kË ¡B?d ÐQ°Ùf›ã @  kÌ ¢B?d R°D";" @  kÍ £B?d PR°‚1‚ @  kÎ ¤B?d R°¢Ä€ý @  kÏ ¥B?d ÐR°1¨ @  kÐ ¦B?d S°áà—ö @  kÑ §B?d PS°¿ãÍð @  kÒ ¨B?d S°ŸÏ @  kÓ ©B?d ÐS°ª Κ @  kÔ ªB?d T°³n=• @  kÕ «B?d PT°u}„´ @  kÖ ¬B?d T°Uˆ†J @  k× ­B?d ÐT°kE#I @  kØ ®B?d U°» ¯¡ @  kÙ ¯B?d PU°€^—K @  kÚ °B?d U° «•µ @  kÛ ±B?d ÐU°•”! @  kÜ ²B?d V°Ù4à @  kÝ ³B?d PV°ÎÊÁ @  kÞ ´B?d V°î?? @  kß µB?d ÐV°lU3l @  kà ¶B?d W°¼¿„ @  ká ·B?d PW°âå‚ @  kâ ¸B?d€ W°D½OÅ @  l ¹B?d ÐW°Êx @  l ºB?d X°¤5Še @  l »B?d PX°§oÈ© @  l ¼B?d X°‡šÊW @  l ½B?d ÐX°wå0. @  l ¾B?d Y°§­¼Æ @  l ¿B?d PY°?«÷› @  l ÀB?d Y°^õe @  l ÁB?d ÐY°ï! @  l ÂB?d Z°re¯Ý @  l ÃB?d PZ°q?í @  l ÄB?d Z°QÊïï @  l ÅB?d ÐZ°¡µ– @  l ÆB?d [°qý™~ @  l ÇB?d P[°Lí¢â @  l ÈB?d [°l  @  l ÉB?d Ð[°œgZe @  l ÊB?d \°…)©j @  l ËB?d P\°†së¦ @  l ÌB?d \°¦†éX @  l ÍB?d Ð\°Vù! @  l ÎB?d ]°†±ŸÉ @  l ÏB?d P]°sPøY @  l ÐB?d ]°S¥ú§ @  l ÑB?d Ð]°£ÚÞ @  l ÒB?d ^°>ž  @  l ÓB?d P^°=ÄâÓ @  l ÔB?d ^°1à- @  l ÕB?d Ð^°íNT @  l ÖB?d _°=–¼ @  l ×B?d P_°Š @  l ØB?d _°1åˆn @  luÐ`°! ÙB?d Ð_°ø]®Â @  l"ÚB?d (`°F¥Z @  l#ÛB?d h`°EÿY– @  l$ÜB?d ¨`°e [h @  l%ÝB?d è`°•u¡ @  l&ÞB?d (a°E=-ù @  l'ßB?d ha°-ksµ @  l(àB?d ¨a° žqK @  l)áB?d èa°ýá‹2 @  l*âB?d (b°`¥+ó @  l+ãB?d hb°cÿi? @  l,äB?d ¨b°C kÁ @  l-åB?d èb°³u‘¸ @  l.æB?d (c°c=P @  l/çB?d hc°^-&Ì @  l0èB?d ¨c°~Ø$2 @  l1éB?d èc°·`ž @  l2 êB?d (d°®.ñ‘ @  l3 ëB?d hd°­t³] @  l4 ìB?d ¨d°±£ @  l5 íB?d èd°}þKÚ @  l6 îB?d (e°­¶Ç2 @  l7 ïB?d he°XW ¢ @  l8 ðB?d ¨e°x¢¢\ @  l9 ñB?d èe°ˆÝX% @  l: òB?d (f°™øä @  l; óB?d hf°ú( @  l< ôB?d ¨f°66¸Ö @  l= õB?d èf°ÆIB¯ @  l> öB?d (g°ÎG @  l? ÷B?d hg°”Ôù @  l@ øB?d ¨g°´åÖ @  lA ùB?d èg°Dš,~ @  lB úB?d (h°pe c @  lC ûB?d hh°s?⯠@  lD üB?d ¨h°SÊàQ @  lE ýB?d èh°£µ( @  lF þB?d (i°sý–À @  lG ÿB?d hi°‰ZÜ @  lH C?d ¨i°©¯Þý @  lI C?d èi°YÐ$„ @  lJ C?d (j°Ä”„E @  lK C?d hj°ÇÎÆ‰ @  lL C?d ¨j°ç;Äw @  lM C?d èj°D> @  lN C?d (k°Ç ²æ @  lO C?d hk°ú‰z @  lP C?d ¨k°Úé‹„ @  lQ  C?d èk°*–qý @  lR  C?d (l°3Ø‚ò @  lS  C?d hl°0‚À> @  lT  C?d ¨l°wÂÀ @  lU  C?d èl°à8¹ @  lV C?d (m°0@´Q @  lW C?d hm°Å¡ÓÁ @  lX C?d ¨m°åTÑ? @  lY C?d èm°++F @  lZ C?d (n°ˆo‹‡ @  l[ C?d hn°‹5ÉK @  l\ C?d ¨n°«À˵ @  l] C?d èn°[¿1Ì @  l^ C?d (o°‹÷½$ @  l_ C?d ho°§á¡ @  l` C?d ¨o°‡£ö @  la C?d èo°wkY @  lb C?d (p°ɵå= @  lc C?d hp°Êï§ñ @  ld C?d ¨p°ê¥ @  le C?d èp°e_v @  lf C?d (q°Ê-Óž @  lg C?d hq°¢{Ò @  lh  C?d ¨q°‚Ž, @  li !C?d èq°rñuU @  lj "C?d (r°ïµÕ” @  lk #C?d hr°ìï—X @  ll $C?d ¨r°Ì•¦ @  lm %C?d èr° z— @  lz 2C?d (v°£NÚV @  l{ 3C?d hv° ˜š @  l| 4C?d ¨v°€ášd @  l} 5C?d èv°pž` @  l~ 6C?d (w° Öìõ @  l 7C?d hw°Á‘Æz @  l€ 8C?d ¨w°ádÄ„ @  l 9C?d èw°>ý @  l‚ :C?d (x°%ä²à @  lƒ ;C?d hx°&¾ð, @  l„ C?d (y°&|„C @  l‡ ?C?d hy°¾zÏ @  lˆ @C?d ¨y°žÍà @  l‰ AC?d èy°nð7™ @  lŠ BC?d (z°ó´—X @  l‹ CC?d hz°ðîÕ” @  lŒ DC?d ¨z°Ð×j @  l EC?d èz° d- @  lŽ FC?d ({°ð,¡û @  l GC?d h{°Í<šg @  l HC?d ¨{°íɘ™ @  l‘ IC?d è{°¶bà @  l’ JC?d (|°ø‘ï @  l“ KC?d h|°¢Ó# @  l” LC?d ¨|°'WÑÝ @  l• MC?d è|°×(+¤ @  l– NC?d (}°`§L @  l— OC?d h}°òÀÜ @  l˜ PC?d ¨}°ÒtÂ" @  l™ QC?d è}°" 8[ @  lš RC?d (~°¿O˜š @  l› SC?d h~°¼ÚV @  lœ TC?d ¨~°œàب @  l UC?d è~°lŸ"Ñ @  lž VC?d (°¼×®9 @  lŸ WC?d h°Á² @  l  XC?d ¨°uЀ°'°4°ë @  l¡ YC?d è°yŒ–G @  l¢ZC?d @€°2t3 @  l£[C?d €€°¶ #ß @  l¤\C?d À€°44 @  l¥]C?d °–;UN @  l¦^C?d @°ªB @  l§_C?d €°Þ˜ ü @  l¨`C?d À°\ " @  l©aC?d ‚°³£SD @  lªbC?d @‚°12Dš @  l«cC?d €‚° v @  l¬dC?d À‚°¨ @  l­eC?d ƒ°°;eç @  l®fC?d @ƒ°2ªr9 @  l¯gC?d €ƒ°­Þ\… @  l°hC?d Àƒ°/OK[ @  l±iC?d „°DïUó @  l²jC?d @„°Æ~B- @  l³kC?d €„°g@Á @  l´lC?d À„°åÑ @  lµmC?d …°GwcP @  l¶nC?d @…°ÅætŽ @  l·oC?d €…°’c> @  l¸pC?d À…°òà @  l¹qC?d †°ÿX\† @  lºrC?d @†°}ÉKX @  l»sC?d €†°Ü÷´ @  l¼tC?d À†°^f j @  l½uC?d ‡°üÀj% @  l¾vC?d @‡°~Q}û @  l¿wC?d €‡°^$re @  lÀxC?d À‡°ܵe» @  lÁyC?d ˆ°š¤ @  lÂzC?d @ˆ°5ß @  lÃ{C?d €ˆ°¹ D3 @  lÄ|C?d Àˆ°;šSí @  lÅ}C?d ‰°™<2¢ @  lÆ~C?d @‰°­%| @  lÇC?d €‰°< /“ @  lÈ€C?d À‰°¾˜8M @  lÉC?d аQ2u+ @  lÊ‚C?d @аÓ£bõ @  l˃C?d €Š°r5 @  lÌ„C?d Àаð "Ç @  lÍ…C?d ‹°RªCˆ @  lΆC?d @‹°Ð;TV @  lχC?d €‹°OOzê @  lЈC?d À‹°ÍÞm4 @  lщC?d Œ°¦~sœ @  lÒŠC?d @Œ°$ïdB @  lÓ‹C?d €Œ°…Ñ3® @  lÔŒC?d ÀŒ°@$p @  lÕC?d °¥æE? @  lÖŽC?d @°'wRá @  l×C?d €°pò Q @  lØC?d À°òc7 @  lÙ‘C?d ްÉzé @  lÚ’C?d @ްŸXm7 @  lÛ“C?d €Ž°>f:Û @  lÜ”C?d Àް¼÷- @  lÝ•C?d °QLJ @  lÞ–C?d @°œÀ[” @  lß—C?d €°²R˜ @  là˜C?d À°#EF @  lá™C?d °\S @  lâšC?d€ @°ªA+ @  m›C?d €°ê>î @  mœC?d À°h¯0 @  mC?d ‘°@’ @  mžC?d @‘°ÑšL @  mŸC?d €‘°‰QŽZ @  m C?d À‘° À™„ @  m¡C?d ’°*Ø‹˜ @  m¢C?d @’°¨IœF @  m £C?d €’°Ì>0G @  m ¤C?d À’°N¯'™ @  m ¥C?d “°)@½; @  m ¦C?d @“°«Ñªå @  m §C?d €“°W¶åà @  m¨C?d À“°Õ'ò @  m©C?d ”°Ý”/ @  mªC?d @”°_šñ @  m«C?d €”°;r6ð @  m¬C?d À”°¹ã!. @  m­C?d •°Þ »Œ @  m®C?d @•°\¬R @  m¯C?d €•°Ū˜ @  m°C?d À•°G;–F @  m±C?d –°f#„Z @  m²C?d @–°䲓„ @  m³C?d €–°€Å?… @  m´C?d À–°T([ @  mµC?d —°e»²ù @  m¶C?d @—°ç*¥' @  m·C?d €—°Mê @  m¸C?d À—°™Üýß @  m¹C?d ˜°­ØÚO @  m ºC?d @˜°/IÍ‘ @  m!»C?d €˜°K>a @  m"¼C?d À˜°ɯvN @  m#½C?d ™°®@ìì @  m$¾C?d @™°,Ñû2 @  m%¿C?d €™°Øú5 @  m&ÀC?d À™°Zíë @  m'ÁC?d š°{ˆÿ÷ @  m(ÂC?d @š°ùè) @  m)ÃC?d €š°nD( @  m*ÄC?d Àš°ÿSö @  m+ÅC?d ›°xÉT @  m,ÆC?d @›°úÞŠ @  m-ÇC?d €›°摬 @  m.ÈC?d À›°„w†r @  m/ÉC?d œ°ŒÄù@ @  m0ÊC?d @œ°Uîž @  m1ËC?d €œ°j"BŸ @  m2ÌC?d Àœ°è³UA @  m3ÍC?d °\Ïã @  m4ÎC?d @° ÍØ= @  m5ÏC?d €°”úõ÷ @  m6ÐC?d À°kâ) @  m7ÑC?d ž°7sð5 @  m8ÒC?d @ž°µâçë @  m9ÓC?d €ž°Ñ•Kê @  m:ÔC?d Àž°S\4 @  m;ÕC?d Ÿ°4ëÆ– @  m<ÖC?d @Ÿ°¶zÑH @  m=×C?d €Ÿ°Jžn @  m>ØCuР°?d ÀŸ°ÈŒ‰° @  m?ÙC?d  °{úÉ @  m@ÚC?d X °•êí @  mAÛC?d ˜ °ñA @  mBÜC?d Ø °s VÈ @  mCÝC?d ¡°ãÌj @  mDÞC?d X¡°–rÛ´ @  mEßC?d ˜¡°’òÏ¢ @  mFàC?d Ø¡°cØ| @  mGáC?d ¢°1{Ê` @  mHâC?d X¢°³êݾ @  mIãC?d ˜¢°×q¿ @  mJäC?d Ø¢°U fa @  mKåC?d £°2ãüà @  mLæC?d X£°°rë @  mMçC?d ˜£°L¤; @  mNèC?d Ø£°΄³å @  mOéC?d ¤°Æ7Ì× @  mPêC?d X¤°D¦Û  @  mQëC?d ˜¤° Ñw @  mRìC?d ؤ°¢@`Ö @  mSíC?d ¥°ůút @  mTîC?d X¥°G>íª @  mUïC?d ˜¥°Þ À` @  mVðC?d Ø¥°\˜×¾ @  mWñC?d ¦°}€Å¢ @  mXòC?d X¦°ÿÒ| @  mYóC?d ˜¦°›f~} @  mZôC?d ئ°÷i£ @  m[õC?d §°~ó @  m\öC?d X§°ü‰äß @  m]÷C?d ˜§°î«ù @  m^øC?d ا°‚¼' @  m_ùC?d ¨°¶{›· @  m`úC?d X¨°4êŒi @  maûC?d ˜¨°P h @  mbüC?d ب°Ò 7¶ @  mcýC?d ©°µã­ @  mdþC?d X©°7rºÊ @  meÿC?d ˜©° …Å @  mfD?d Ø©°›’ @  mgD?d ª°>ƒ€ @  mhD?d Xª°¼—Ù @  miD?d ˜ª°Øe;Ø @  mjD?d ت°Zô, @  mkD?d «°=¶¤ @  mlD?d X«°¿Š¡z @  mmD?d ˜«°Cíî\ @  mnD?d Ø«°Á|ù‚ @  mo D?d ¬°Éφ° @  mp D?d X¬°K^‘n @  mq D?d ˜¬°/)=o @  mr D?d ج°­¸*± @  ms D?d ­°ÊW° @  mtD?d X­°HƧÍ @  muD?d ˜­°ÑñŠ @  mvD?d Ø­°S`Ù @  mwD?d ®°rxÅ @  mxD?d X®°ðé˜ @  myD?d ˜®°”ž4 @  mzD?d Ø®°#Ä @  m{D?d ¯°qà¹f @  m|D?d X¯°óq®¸ @  m}D?d ˜¯°áž @  m~D?d د°‡ö@ @  mD?d °°~ó×Ü @  m€D?d X°°übÀ @  mD?d ˜°°˜l @  m‚D?d ذ°„{Ý @  mƒD?d ±°}ká @  m„D?d X±°ÿúö¡ @  m…D?d ˜±°ûzâ· @  m† D?d ر°yëõi @  m‡!D?d ²°Xóçu @  mˆ"D?d X²°Úbð« @  m‰#D?d ˜²°¾\ª @  mŠ$D?d ز°<„Kt @  m‹%D?d ³°[kÑÖ @  mŒ&D?d X³°ÙúÆ @  m'D?d ˜³°%‰. @  mŽ(D?d س°§ žð @  m)D?d ´°¯¿á @  m*D?d X´°-.ö @  m‘+D?d ˜´°IYZ @  m’,D?d Ø´°ËÈMà @  m“-D?d µ°¬'×a @  m”.D?d Xµ°.¶À¿ @  m•/D?d ˜µ°·íu @  m–0D?d ص°5ú« @  m—1D?d ¶°è· @  m˜2D?d X¶°–™ÿi @  m™3D?d ˜¶°òîSh @  mš4D?d ض°pD¶ @  m›5D?d ·°Þ @  mœ6D?d X·°•ÉÊ @  m7D?d ˜·°if†ì @  mž8D?d Ø·°ë÷‘2 @  mŸ9D?d ¸°ßó¶¢ @  m :D?d X¸°]b¡| @  m¡;D?d ˜¸°9 } @  m¢D?d X¹°^ú—ß @  m¥?D?d ˜¹°ª*–Ø @  m¦@D?d ع°(» @  m§AD?d º° £“ @  m¨BD?d Xº°‹2„Ä @  m©CD?d ˜º°ïE(Å @  mªDD?d غ°mÔ? @  m«ED?d »° ;¥¹ @  m¬FD?d X»°ˆª²g @  m­GD?d ˜»°tÍýA @  m®HD?d Ø»°ö\êŸ @  m¯ID?d ¼°þï•­ @  m°JD?d X¼°|~‚s @  m±KD?d ˜¼° .r @  m²LD?d ؼ°š˜9¬ @  m³MD?d ½°ýw£ @  m´ND?d X½°æ´Ð @  mµOD?d ˜½°æÑ™ @  m¶PD?d ؽ°d@ŽÄ @  m·QD?d ¾°EXœØ @  m¸RD?d X¾°ÇÉ‹ @  m¹SD?d ˜¾°£¾' @  mºTD?d ؾ°!/0Ù @  m»UD?d ¿°FÀª{ @  m¼VD?d X¿°ÄQ½¥ @  m½WD?d ˜¿°86òƒ @uÐÀ°  m¾XD?d Ø¿°º§å] @  m¿YD?d 0À°p« @  mÀZD?d pÀ°ò:Î @  mÁ[D?d °À°–M¢Ï @  mÂ\D?d ðÀ°ܵ @  mÃ]D?d 0Á°s3/³ @  mÄ^D?d pÁ°ñ¢8m @  mÅ_D?d °Á°õ",{ @  mÆ`D?d ðÁ°w³;¥ @  mÇaD?d 0°V«)¹ @  mÈbD?d p°Ô:>g @  mÉcD?d °Â°°M’f @  mÊdD?d ð°2Ü…¸ @  mËeD?d 0ðU3 @  mÌfD?d pð×¢Ä @  mÍgD?d °Ã°+ÅGâ @  mÎhD?d ðð©TP< @  mÏiD?d 0İ¡ç/ @  mÐjD?d pİ#v8Ð @  mÑkD?d °Ä°G”Ñ @  mÒlD?d ðİŃ @  mÓmD?d 0Ű¢­ @  mÔnD?d pŰ îs @  mÕoD?d °Å°¹Ù#¹ @  mÖpD?d ðŰ;H4g @  m×qD?d 0ưP&{ @  mØrD?d pư˜Á1¥ @  mÙsD?d °Æ°ü¶¤ @  mÚtD?d ðư~'Šz @  mÛuD?d 0ǰÈØ @  mÜvD?d pǰ›Y @  mÝwD?d °Ç°g>H  @  mÞxD?d ðǰå¯_þ @  mßyD?d 0ȰÑ«xn @  màzD?d pȰS:o° @  má{D?d °È°7Mñ @  mâ|D?d€ ðȰt›#o @  n}D?d 0ɰò5ñä @  n~D?d pɰp¤æ: @  nD?d °É°\ûHB @  n€D?d ðɰÞj_œ @  nD?d 0ʰ1Àú @  n‚D?d pʰ³Q$ @  nƒD?d °Ê°”ö_ @  n„D?d ðʰ›á @  n …D?d 0˰9£€Î @  n †D?d p˰»2— @  n ‡D?d °Ë°‚#Û @  n ˆD?d ð˰4 @  n ‰D?d 0̰k-*­ @  nŠD?d p̰é¼=s @  n‹D?d °Ì°îØðè @  nŒD?d ð̰lIç6 @  nD?d 0ͰÎï†y @  nŽD?d pͰL~‘§ @  nD?d °Í°G€ @  nD?d ðͰ’‘P^ @  n‘D?d 0ΰ};8 @  n’D?d pΰÿª æ @  n“D?d °Î°Uoù @  n”D?d ðΰ×þîC @  n•D?d 0ϰuX  @  n–D?d pϰ÷ɘÒ @  n—D?d °Ï°Îç, @  n˜D?d ðϰLv;Ç @  n™D?d 0а€FjÒ @  nšD?d pа×}  @  n›D?d °Ð°µ—' @  n œD?d ðа–$€ù @  n!D?d 0Ѱ4‚á¶ @  n"žD?d pѰ¶öh @  n#ŸD?d °Ñ°wÚ“ @  n$ D?d ðѰõKM @  n%¡D?d 0Ò°áC+ @  n&¢D?d pÒ°˜pTõ @  n'£D?d °Ò°2µ§Ž @  n(¤D?d ðÒ°°$°P @  n)¥D?d 0Ó°‚Ñ @  n*¦D?d pÓ°ÆÁ @  n+§D?d °Ó°©=r  @  n,¨D?d ðÓ°+¬eÔ @  n-©D?d 0Ô°@ {| @  n.ªD?d pÔ°Âl¢ @  n/«D?d °Ô°Åù¡9 @  n0¬D?d ðÔ°Gh¶ç @  n1­D?d 0Õ°åÎר @  n2®D?d pÕ°g_Àv @  n3¯D?d °Õ°;!Q @  n4°D?d ðÕ°¹° @  n5±D?d 0Ö°VLé @  n6²D?d pÖ°Ô‹[7 @  n7³D?d °Ö°~N¨L @  n8´D?d ðÖ°üß¿’ @  n9µD?d 0×°^yÞÝ @  n:¶D?d p×°ÜèÉ @  n;·D?d °×°åÆ}È @  n<¸D?d ð×°gWj @  n=¹D?d 0ذ!F ¬ @  n>ºD?d pذ£×r @  n?»D?d °Ø°²ðË @  n@¼D?d ðذ™#ç @  nA½D?d 0Ù°;…†Z @  nB¾D?d pÙ°¹‘„ @  nC¿D?d °Ù°ˆkn @  nDÀD?d ðÙ° |° @  nEÁD?d 0Ú°å¶1Ö @  nFÂD?d pÚ°g'& @  nGÃD?d °Ú°ÍâÕs @  nHÄD?d ðÚ°Os­ @  nIÅD?d 0Û°íÕ£â @  nJÆD?d pÛ°oD´< @  nKÇD?d °Û°Vj÷ @  nLÈD?d ðÛ°Ôû) @  nMÉD?d 0ܰ¿[  @  nNÊD?d pܰ=Ê_ @  nOËD?d °Ü°:®ÓÄ @  nPÌD?d ðܰ¸?Ä @  nQÍD?d 0ݰ™¥U @  nRÎD?d pݰ˜²‹ @  nSÏD?d °Ý°Ävd¬ @  nTÐD?d ðݰFçsr @  nUÑD?d 0Þ°©M> @  nVÒD?d pÞ°+Ü)Ê @  nWÓD?d °Þ°Ú± @  nXÔD?d ðÞ°ˆÍo @  nYÕD?d 0ß°¡.¬  @  nZÖD?d pß°#¿»þ @  n[×D?d uÐà°/°ß°‘5 @  n\ØD?d ðß°¡ÇÄ> @  n] ÙD?d Hà°Êwo @  n^ ÚD?d ˆà°êxu‘ @  n_ ÛD?d Èà°^~Šš @  n` ÜD?d á°Ž6r @  na ÝD?d Há°~Iü  @  nb ÞD?d ˆá°^¼þõ @  nc ßD?d Èá°=. @  nd àD?d â° U¤ï @  ne áD?d Hâ°P*^– @  nf âD?d ˆâ°pß\h @  ng ãD?d Èâ°x~º3 @  nh äD?d ã°¨66Û @  ni åD?d Hã°XIÌ¢ @  nj æD?d ˆã°x¼Î\ @  nk çD?d Èã°ãöo· @  nl èD?d ä°ú¸œ¸ @  nm éD?d Hä° ÇfÁ @  nn êD?d ˆä°*2d? @  no ëD?d Èä°2¼„ @  np ìD?d å°_z0l @  nq íD?d Hå°¯Ê @  nr îD?d ˆå°ðÈë @  ns ïD?d Èå°qê ì @  nt ðD?d æ°쮫- @  nu ñD?d Hæ°ÑQT @  nv òD?d ˆæ°<$Sª @  nw óD?d Èæ°4…µñ @  nx ôD?d ç°äÍ9 @  ny õD?d Hç°²Ã` @  nz öD?d ˆç°4GÁž @  n{ ÷D?d Èç°¯ `u @  n| øD?d è°›òìh @  n} ùD?d Hè°k @  n~ úD?d ˆè°Kxï @  n ûD?d Èè°²/ÝG @  n€ üD?d é°bgQ¯ @  n ýD?d Hé°’«Ö @  n‚ þD?d ˆé°²í©( @  nƒ ÿD?d Èé°C±G| @  n„ E?d ê°Þõç½ @  n… E?d Hê°.ŠÄ @  n† E?d ˆê°: @  n‡ E?d Èê°Þùa @  nˆ E?d ë°Ö–u‰ @  n‰ E?d Hë°&éð @  nŠ E?d ˆë° @  n‹ E?d Èë°V,å @  nŒ E?d ì°„ßê @  n  E?d Hì°tg%“ @  nŽ  E?d ˆì°T’'m @  n  E?d Èì°ñ’ÿÖ @  n  E?d í°!Ús> @  n‘  E?d Hí°Ñ¥‰G @  n’ E?d ˆí°ñP‹¹ @  n“ E?d Èí°JH¾ @  n” E?d î°’è @  n• E?d Hî°bq @  n– E?d ˆî°B„ø @  n— E?d Èî°J%ö£ @  n˜ E?d ï°šmzK @  n™ E?d Hï°j€2 @  nš E?d ˆï°Jç‚Ì @  n› E?d Èï°Ñ­#' @  nœ E?d ð°osŸ• @  n E?d Hð°Ÿ eì @  nž E?d ˆð°¿ùg @  nŸ E?d Èð° ÿ˜ @  n  E?d ñ°Û·ñ @  n¡ E?d Hñ°+Èîˆ @  n¢ E?d ˆñ° =ìv @  n£ E?d Èñ°h­ @  n¤  E?d ò°õÔ¶l @  n¥ !E?d Hò°«L @  n¦ "E?d ˆò°%^Në @  n§ #E?d Èò°-ÿ¨° @  n¨ $E?d ó°ý·$X @  n© %E?d Hó° ÈÞ! @  nª &E?d ˆó°-=Üß @  n« 'E?d Èó°¶w}4 @  n¬ (E?d ô°¯9Ž; @  n­ )E?d Hô°_FtB @  n® *E?d ˆô°³v¼ @  n¯ +E?d Èô°Ú³® @  n° ,E?d õ° û"ï @  n± -E?d Hõ°ú„Ø– @  n² .E?d ˆõ°ÚqÚh @  n³ /E?d Èõ°$ko @  n´ 0E?d ö°¹/¹® @  nµ 1E?d Hö°IPC× @  n¶ 2E?d ˆö°i¥A) @  n· 3E?d Èö°a§r @  n¸ 4E?d ÷°±L+š @  n¹ 5E?d H÷°A3Ñã @  nº 6E?d ˆ÷°aÆÓ @  n» 7E?d È÷°úŒrö @  n¼ 8E?d ø°Îsþë @  n½ 9E?d Hø°> ’ @  n¾ :E?d ˆø°ùl @  n¿ ;E?d Èø°øÿõ @  nÀ E?d ˆù°:‹š @  nà ?E?d Èù°—ÇdP @  nÄ @E?d ú° ƒÄ‘ @  nÅ AE?d Hú°úü>è @  nÆ BE?d ˆú°Ú < @  nÇ CE?d Èú°Ò¨ÚM @  nÈ DE?d û°àV¥ @  nÉ EE?d Hû°òŸ¬Ü @  nÊ FE?d ˆû°Òj®" @  nË GE?d Èû°I É @  nÌ HE?d ü°PnüÆ @  nÍ IE?d Hü° ¿ @  nÎ JE?d ˆü°€äA @  nÏ KE?d Èü°%äÜú @  nÐ LE?d ý°õ¬P @  nÑ ME?d Hý°Óªk @  nÒ NE?d ˆý°%&¨• @  nÓ OE?d Èý°ÛM @  o1E?d à ±á¤§ @  o2E?d ±|à¦f @  o3‘E?d `±IÖ§ò @  o4’E?d  ±i#¥  @  o5“E?d ౯0- @  o6”E?d ±xÅ @  o7•E?d `±Aµ5Æ @  o8–E?d  ±a@78 @  o9—E?d à±?Cm> @  o:˜E?d ±ÑŒ @  o;™E?d `±´«Ð @  o<šE?d  ±”^Òæ @  o=›E?d à±RMkÇ @  o>œE?d ±‚ç/ @  o?E?d `±®h]î @  o@žE?d  ±Ž_ @  oAŸE?d à±(y^& @  oB E?d ±µ=þç @  oC¡E?d `±€ ÿs @  oD¢E?d  ± þý @  oE£E?d à±fíD¬ @  oF¤E?d ±¶¥ÈD @  oG¥E?d `±ˆhmG @  oH¦E?d  ±¨o¹ @  oI§E?d à±öž5¿ @  oJ¨E?d ±ïÐÆ° @  oK©E?d `±ÚæÇ$ @  oLªE?d  ±úÅÚ @  oM«E?d à±<|û @  oN¬E?d ±ìHð @  oO­E?d `±$kð @  oP®E?d  ±_Ñi @  oQ¯E?d à±d‚Qä @  oR°E?d ±ùÆñ% @  oS±E?d `±Ìðð± @  oT²E?d  ±ìòO @  oU³E?d à±*Kn @  oV´E?d ±ú^dž @  oWµE?d `±Ä“b… @  oX¶E?d  ±äf`{ @  oY·E?d ౺e:} @  oZ¸E?d ±Žš¶` @  o[¹E?d `±»¬·ô @  o\ºE?d  ±›Yµ  @  o]»E?d à±]J + @  o^¼E?d ±€Ã @  o_½E?d `±h< @  o`¾E?d  ±/>n @  oa¿E?d à±y)*I @  obÀE?d ±ämŠˆ @  ocÁE?d `±Ñ[‹ @  odÂE?d  ±ñ®‰â @  oeÃE?d à±7½0à @  ofÄE?d ±çõ¼+ @  ogÅE?d `±Ù8( @  ohÆE?d  ±ùÍÖ @  oiÇE?d à±§ÎAÐ @  ojÈE?d ±¾€²ß @  okÉE?d `±‹¶³K @  olÊE?d  ±«C±µ @  omËE?d à±mP” @  onÌE?d ±½„| @  ooÍE?d `±.tŸ @  opÎE?d  ±a @  oqÏE?d à±5Ò%‹ @  orÐE?d ±¨–…J @  osÑE?d `± „Þ @  otÒE?d  ±½U†  @  ouÓE?d à±{F? @  ovÔE?d ±«³é @  owÕE?d `±•Ãê @  oxÖE?d  ±µ6uÐ ± @  oy×E?d à±ë5N @  ozØE?d 8 ±š>t @  o{ÙE?d x ±¯‘à @  o|ÚE?d ¸ ±ý“ @  o}ÛE?d ø ±Iî*? @  o~ÜE?d 8!±™¦¦× @  oÝE?d x!±V,' @  o€ÞE?d ¸!±vh.Ù @  oßE?d ø!±ÐŒ/ï @  o‚àE?d 8"±MÈ. @  oƒáE?d x"±xþŽº @  o„âE?d ¸"±X ŒD @  o…ãE?d ø"±ž5e @  o†äE?d 8#±NP¹ @  o‡åE?d x#±pŽ @  oˆæE?d ¸#±Php @  o‰çE?d ø#±kDv @  oŠèE?d 8$±%·y @  o‹éE?d x$±"¶í @  oŒêE?d ¸$±æ´ @  oëE?d ø$±Äõ 2 @  oŽìE?d 8%±½Ú @  oíE?d x%±‡Ñ9 @  oîE?d ¸%±§$Ç @  o‘ïE?d ø%±œw - @  o’ðE?d 8&±3€ì @  o“ñE?d x&±4x @  o”òE?d ¸&±ðƒ† @  o•óE?d ø&±Òã:§ @  o–ôE?d 8'±«¶O @  o—õE?d x'± @  oÛ9F?d x8±G¬Ñª @  oÜ:F?d ¸8±gYÓT @  oÝ;F?d ø8±¡Jju @  oÞF?d ¸9±ÓX0 @  oá?F?d ø9±…)L @  oâ@F?d€ 8:±s18 @  pAF?d x:±§FI… @  pBF?d ¸:±‡³K{ @  pCF?d ø:±„é · @  pDF?d 8;±T¡…_ @  pEF?d x;±¤Þ& @  pFF?d ¸;±„+}Ø @  pGF?d ø;±šx¤ @  pHF?d 8<± Ô‹« @  p IF?d x<±ý«qÒ @  p JF?d ¸<±Ý^s, @  p KF?d ø<±Þ1à @  p LF?d 8=±L½ @  p MF?d x=±þ3Gq @  pNF?d ¸=±ÞÆE @  pOF?d ø=±††ÿ @  pPF?d 8>±¼> @  pQF?d x>±ë½FG @  pRF?d ¸>±ËHD¹ @  pSF?d ø>±Èu @  pTF?d 8?±ZŠ @  pUF?d x?±è%pä @  pVF?duÐ@±7 ¸?±ÈÐr @  pWF?d ø?±a¦«³ @  p XF?d P@±¢  @  p YF?d @±ðþÖ @  p ZF?d Ð@±r€é @  p [F?d A±#0ò @  p \F?d PA±¡’', @  p ]F?d A±ó‰Èu @  p ^F?d ÐA±qß« @  p _F?d B±º ~F?d ÐI±Ð¾Õ @  p? F?d J±X­ Ç @  p@ €F?d PJ±Ú< @  pA F?d J±ˆ'ñ@ @  pB ‚F?d ÐJ± ¶æž @  pC ƒF?d K±[5?d @  pD „F?d PK±Ù¤(º @  pE …F?d K±‹¿Çã @  pF †F?d ÐK± .Ð= @  pG ‡F?d L±@1 @  pH ˆF?d PL±€Ñ&N @  pI ‰F?d L±ÒÊÉ @  pJ ŠF?d ÐL±P[ÞÉ @  pK ‹F?d M±Ø3 @  pL ŒF?d PM±ƒIí @  pM F?d M±ÑRÿ´ @  pN ŽF?d ÐM±SÃèj @  pO F?d N±V @  pP F?d PN±–ÇÛ @  pQ ‘F?d N±ÄÜþ‚ @  pR ’F?d ÐN±FMé\ @  pS “F?d O±Î0¦ @  pT ”F?d PO±•_'x @  pU •F?d O±ÇDÈ! @  pV –F?d ÐO±EÕßÿ @  pW —F?d P±é+qï @  pX ˜F?d PP±kºf1 @  pY ™F?d P±9¡‰h @  pZ šF?d ÐP±»0ž¶ @  p[ ›F?d Q±ê³GL @  p\ œF?d PQ±h"P’ @  p] F?d Q±:9¿Ë @  p^ žF?d ÐQ±¸¨¨ @  p_ ŸF?d R±sŒX @  p`  F?d PR±ñOÈ @  pa ¡F?d R±£ ‘ @  pb ¢F?d ÐR±!—·O @  pc £F?d S±pnµ @  pd ¤F?d PS±ò…yk @  pe ¥F?d S± ž–2 @  pf ¦F?d ÐS±"ì @  pg §F?d T±)a`A @  ph ¨F?d PT±«ðwŸ @  pi ©F?d T±ùë˜Æ @  pj ªF?d ÐT±{z @  pk «F?d U±*ùVâ @  pl ¬F?d PU±¨hA< @  pm ­F?d U±ús®e @  pn ®F?d ÐU±xâ¹» @  po ¯F?d V±?wWÔ @  pp °F?d PV±½æ@  @  pq ±F?d V±ïý¯S @  pr ²F?d ÐV±ml¸ @  ps ³F?d W±<ïaw @  pt ´F?d PW±¾~v© @  pu µF?d W±ìe™ð @  pv ¶F?d ÐW±nôŽ. @  pw ·F?d X±H+‘ @  px ¸F?d PX±ʺO @  py ¹F?d X±˜¡è @  pz ºF?d ÐX±0ÿÈ @  p{ »F?d Y±K³&2 @  p| ¼F?d PY±É"1ì @  p} ½F?d Y±›9Þµ @  p~ ¾F?d ÐY±¨Ék @  p ¿F?d Z±oÚ @  p€ ÀF?d PZ±í  @  p ÁF?d Z±¿â] @  p‚ ÂF?d ÐZ±=–õƒ @  pƒ ÃF?d [±l,y @  p„ ÄF?d P[±î„;§ @  p… ÅF?d [±¼ŸÔþ @  p† ÆF?d Ð[±>à  @  p‡ ÇF?d \±5`" @  pˆ ÈF?d P\±·ñ5S @  p‰ ÉF?d \±åêÚ  @  pŠ ÊF?d Ð\±g{ÍÔ @  p‹ ËF?d ]±6ø. @  pŒ ÌF?d P]±´ið @  p ÍF?d ]±ærì© @  pŽ ÎF?d Ð]±dãûw @  p ÏF?d ^±#v @  p ÐF?d P^±¡çÆ @  p‘ ÑF?d ^±óüíŸ @  p’ ÒF?d Ð^±qmúA @  p“ ÓF?d _± î#» @  p” ÔF?d P_±¢4e @  p• ÕF?d _±ðdÛ< @  puÐ`±– ÖF?d Ð_±K27 @  p—×F?d (`±çê·  @  p˜ØF?d h`±e{ Ó @  p™ÙF?d ¨`±7`OŠ @  pšÚF?d è`±µñXT @  p›ÛF?d (a±är® @  pœÜF?d ha±fã–p @  pÝF?d ¨a±4øy) @  pžÞF?d èa±¶in÷ @  pŸßF?d (b±}Mžô @  p àF?d hb±ÿ܉* @  p¡áF?d ¨b±­Çfs @  p¢âF?d èb±/Vq­ @  p£ãF?d (c±~Õ¨W @  p¤äF?d hc±üD¿‰ @  p¥åF?d ¨c±®_PÐ @  p¦æF?d èc±,ÎG @  p§çF?d (d±' ¦£ @  p¨èF?d hd±¥1±} @  p©éF?d ¨d±÷*^$ @  pªêF?d èd±u»Iú @  p«ëF?d (e±$8 @  p¬ìF?d he±¦©‡Þ @  p­íF?d ¨e±ô²h‡ @  p®îF?d èe±v#Y @  p¯ïF?d (f±1¶‘6 @  p°ðF?d hf±³'†è @  p±ñF?d ¨f±áG?d èy±ñu‚Y @  q?G?d (z±¸!a @  q@G?d hz±:…6¿ @  qAG?d ¨z±‹ŸÌ @  q BG?d èz±˜ˆ @  q!CG?d ({± Ъ @  q"DG?d h{±ŽA½Û @  q#EG?d ¨{±©o @  q$FG?d è{±›‚¾± @  q%GG?d (|±^^f @  q&HG?d h|±Üϸ @  q'IG?d ¨|±@f§› @  q(JG?d è|±Â÷°E @  q)KG?d (}±V=’R @  q*LG?d h}±Ô¬…Œ @  q+MG?d ¨}±Cþ‘8 @  q,NG?d è}±Áo†æ @  q-OG?d (~±åé  @  q.PG?d h~±gxÍ @  q/QG?d ¨~±Vp @  q0RG?d è~±Ôá‡Ð @  q1SG?d (±@+¥Ç @  q2TG?d h±º² @  q3UG?d ¨±uЀ±'U覭 @  q4VG?d è±×y±s @  q5WG?d @€±eUß @  q6XG?d €€±E ! @  q7YG?d À€±{m¹" @  q8ZG?d ±«%5Ê @  q9[G?d @±m6Œë @  q:\G?d €±MÃŽ @  q;]G?d À±xõ @  q<^G?d ‚±å±/@ @  q=_G?d @‚±CU.v @  q>`G?d €‚±c ,ˆ @  q?aG?d À‚±OÍ–I @  q@bG?d ƒ±Ÿ…¡ @  qAcG?d @ƒ±Y–£€ @  qBdG?d €ƒ±yc¡~ @  qCeG?d Àƒ±LU ê @  qDfG?d „±USå @  qEgG?d @„±  ã @  qFhG?d €„±+í  @  qGiG?d À„± ® @  qHjG?d …±Åh"ö @  qIkG?d @…±{›× @  qJlG?d €…±#Ž™) @  qKmG?d À…±¸˜½ @  qLnG?d †±‹ü8| @  qMoG?d @†±°¯– @  qNpG?d €†±Zh @  qOqG?d À†±6™‹ @  qPrG?d ‡±Ó~c @  qQsG?d @‡±m¬B @  qRtG?d €‡±5˜®¼ @  qSuG?d À‡±®¯( @  qTvG?d ˆ±4Q#5 @  qUwG?d @ˆ±jRy3 @  qVxG?d €ˆ±J§{Í @  qWyG?d Àˆ±tjÞÎ @  qXzG?d ‰±¤"R& @  qY{G?d @‰±b1ë @  qZ|G?d €‰±BÄéù @  q[}G?d À‰±wòèm @  q\~G?d бê¶H¬ @  q]G?d @б¡Ä @  q^€G?d €Š±1 ç @  q_G?d Àб[¶´ @  q`‚G?d ‹±Ó:\ @  qaƒG?d @‹±ƒ} @  qb„G?d €‹±5õƒ @  qc…G?d À‹±À @  qd†G?d Œ±s @  qe‡G?d @Œ±GŽ) @  qfˆG?d €Œ±g{+à @  qg‰G?d ÀŒ±Y¶Žã @  qhŠG?d ±‰þ  @  qi‹G?d @±Oí»* @  qjŒG?d €±o¹Ô @  qkG?d À±Z.¸@ @  qlŽG?d ޱÇj @  qmG?d @ޱü9 k @  qnG?d €Ž±ÜÌ"• @  qo‘G?d ÀޱO ¹v @  qp’G?d ±Ÿè5ž @  qq“G?d @±YûŒ¿ @  qr”G?d €±yŽA @  qs•G?d À±L8Õ @  qt–G?d ±òæ3g @  qu—G?d @±•"µ´ @  qv ˜G?d €±µ×·J @  qw ™G?d À±‹I @  qx šG?d ‘±[Rž¡ @  qy ›G?d @‘±A'€ @  qz œG?d €‘±½´%~ @  q{ G?d À‘±ˆ‚$ê @  q| žG?d ’±Æ„+ @  q} ŸG?d @’±³"… @  q~  G?d €’±“ׇã @  q ¡G?d À’±\ì  @  q€ ¢G?d “±Œ¤û @  q £G?d @“±J·8Ú @  q‚ ¤G?d €“±jB:$ @  qƒ ¥G?d À“±_t;° @  q„ ¦G?d ”±F:È¿ @  q… §G?d @”±9’¹ @  q† ¨G?d €”±8ÌG @  q‡ ©G?d À”±5D @  qˆ ªG?d •±ÖI¹¬ @  q‰ «G?d @•±Z @  qŠ ¬G?d €•±0¯s @  q‹ ­G?d À•±™ç @  qŒ ®G?d –±˜Ý£& @  q ¯G?d @–±£Ž›Ì @  qŽ °G?d €–±ƒ{™2 @  q ±G?d À–±Ñ @  q ²G?d —±À_Ž9 @  q‘ ³G?d @—±L7 @  q’ ´G?d €—±&¹5æ @  q“ µG?d À—±4r @  q” ¶G?d ˜±'p¸o @  q• ·G?d @˜±ysâi @  q– ¸G?d €˜±Y†à— @  q— ¹G?d À˜±gKE” @  q˜ ºG?d ™±·É| @  q™ »G?d @™±qp] @  qš ¼G?d €™±Qår£ @  q› ½G?d À™±dÓs7 @  qœ ¾G?d š±ù—Óö @  q ¿G?d @š±¯#ÇÑ @  qž ÀG?d €š±ÖÅ/ @  qŸ ÁG?d Àš± ¼y| @  q  ÂG?d ›±Ýôõ” @  q¡ ÃG?d @›±çLµ @  q¢ ÄG?d €›±;NK @  q£ ÅG?d À›±$Oß @  q¤ ÆG?d œ±j¼Ð @  q¥ ÇG?d @œ±IiæÖ @  q¦ ÈG?d €œ±iœä( @  q§ ÉG?d Àœ±WQA+ @  q¨ ÊG?d ±‡Íà @  q© ËG?d @±A tâ @  qª ÌG?d €±aÿv @  q« ÍG?d À±TÉwˆ @  q¬ ÎG?d ž±É×I @  q­ ÏG?d @ž±òÞï£ @  q® ÐG?d €ž±Ò+í] @  q¯ ÑG?d Àž±AGv¾ @  q° ÒG?d Ÿ±‘úV @  q± ÓG?d @Ÿ±WCw @  q² ÔG?d €Ÿ±wéA‰ @  q³ ÕGuР±?d ÀŸ±Bß@ @  q´ ÖG?d  ± B® @  qµ×G?d X ±T¨ @  q¶ØG?d ˜ ±tåV @  q·ÙG?d Ø ±J(¿U @  q¸ÚG?d ¡±š`3½ @  q¹ÛG?d X¡±\sŠœ @  qºÜG?d ˜¡±|†ˆb @  q»ÝG?d Ø¡±I°‰ö @  q¼ÞG?d ¢±Ôô)7 @  q½ßG?d X¢±r( @  q¾àG?d ˜¢±Rå*ÿ @  q¿áG?d Ø¢±~ˆ> @  qÀâG?d £±®ÀÖ @  qÁãG?d X£±hÓ¥÷ @  qÂäG?d ˜£±H&§  @  qÃåG?d Ø£±}¦ @  qÄæG?d ¤±d^U’ @  qÅçG?d X¤±:]” @  qÆèG?d ˜¤±¨ j @  qÇéG?d ؤ±$e¨i @  qÈêG?d ¥±ô-$ @  qÉëG?d X¥±2>  @  qÊìG?d ˜¥±ËŸ^ @  qËíG?d Ø¥±'ýžÊ @  qÌîG?d ¦±º¹>  @  qÍïG?d X¦±êá @  qÎðG?d ˜¦±¡ @  qÏñG?d ئ±2sŸü @  qÐòG?d §±â; @  qÑóG?d X§±$(ª5 @  qÒôG?d ˜§±ݨË @  qÓõG?d ا±1ë©_ @  qÔöG?d ¨±%B @  qÕ÷G?d X¨±[D @  qÖøG?d ˜¨±{â}º @  q×ùG?d ب±E/ع @  qØúG?d ©±•gTQ @  qÙûG?d X©±Stíp @  qÚüG?d ˜©±sïŽ @  qÛýG?d Ø©±F·î @  qÜþG?d ª±ÛóNÛ @  qÝÿG?d Xª± Õj @  qÞH?d ˜ª±* hs @  qßH?d ت±¨JÔ  @  qàH?d «±xXÈ @  qáH?d X«±¾áé @  qâH?d€ ˜«±_£ @  rH?d Ø«±‹Ô]ª @  rH?d ¬±’𮥠@  rH?d X¬± ÐN @  rH?d ˜¬±)% ° @  r H?d ج±ÙZ÷É @  r H?d ­± {! @  r H?d X­±³z @  r H?d ˜­±!FŸ„ @  r  H?d Ø­±Ñ9eý @  r H?d ®±L}Å< @  r H?d X®±²g; @  r H?d ˜®±’’Å @  r H?d Ø®±bíþ¼ @  rH?d ¯±²¥rT @  rH?d X¯±¥ªï @  rH?d ˜¯±7P¨ @  rH?d د±Ç/Rh @  rH?d °±yñîÚ @  rH?d X°±â»O1 @  rH?d ˜°±ÂNMÏ @  rH?d ذ±21·¶ @  rH?d ±±ây;^ @  rH?d X±±êØÝ @  rH?d ˜±±Ê-ßû @  rH?d ر±:R%‚ @  rH?d ²±§…C @  rH?d X²±Ä»˜ @  r H?d ˜²±äN}f @  r!H?d ز±1‡ @  r"H?d ³±Äy ÷ @  r#H?d X³±pôü @  r $H?d ˜³±PŠö @  r!%H?d س± õ { @  r"&H?d ´±¹»ÿt @  r#'H?d X´±"ñ^Ÿ @  r$(H?d ˜´±\a @  r%)H?d Ø´±ò{¦ @  r&*H?d µ±"3*ð @  r'+H?d Xµ±*’Ì« @  r(,H?d ˜µ± gÎU @  r)-H?d ص±ú4, @  r*.H?d ¶±g\”í @  r+/H?d X¶±™FWê @  r,0H?d ˜¶±¹³U @  r-1H?d ض±I̯m @  r.2H?d ·±™„#… @  r/3H?d X·±<„û> @  r04H?d ˜·±qùÀ @  r15H?d Ø·±ì¹ @  r26H?d ¸±Øñ¤ @  r37H?d X¸±C».O @  r48H?d ˜¸±cN,± @  r59H?d ظ±“1ÖÈ @  r6:H?d ¹±CyZ  @  r7;H?d X¹±Kؼ{ @  r8H?d º±ä= @  r;?H?d Xº±•ë ÷ @  r<@H?d ˜º±µ  @  r=AH?d غ±Eaóp @  r>BH?d »±•)˜ @  r?CH?d X»±(† @  r@DH?d ˜»±¯Ý„ÿ @  rAEH?d Ø»±_¢~† @  rBFH?d ¼±Fì‰ @  rCGH?d X¼±ݦ,b @  rDHH?d ˜¼±ýS.œ @  rEIH?d ؼ± ,Ôå @  rFJH?d ½±ÝdX  @  rGKH?d X½±ÕžV @  rHLH?d ˜½±õ0¼¨ @  rIMH?d ؽ±OFÑ @  rJNH?d ¾±˜ æ @  rKOH?d X¾±f% @  rLPH?d ˜¾±Fä'é @  rMQH?d ؾ±¶›Ý @  rNRH?d ¿±fÓQx @  rOSH?d X¿±ÃӉà @  rPTH?d ˜¿±ã&‹= @uÐÀ±  rQUH?d Ø¿±YqD @  rRVH?d 0À±w©  @  rSWH?d pÀ±ìãý @  rTXH?d °À±Ìƒ @  rUYH?d ðÀ±õ @  r–šH?d 0ѱÆÇ² @  r—›H?d pѱÎfTF @  r˜œH?d °Ñ±î“V¸ @  r™H?d ðѱì¬Á @  ršžH?d 0Ò±ƒ¨  @  r›ŸH?d pÒ±àöÛ @  rœ H?d °Ò±Àðô% @  r¡H?d ðÒ±0\ @  rž¢H?d 0Ó±àÇ‚´ @  rŸ£H?d pÓ±TÁ}¿ @  r ¤H?d °Ó±t4A @  r¡¥H?d ðÓ±„K…8 @  r¢¦H?d 0Ô±v7 @  r£§H?d pÔ±O×Ü @  r¤¨H?d °Ô±&ºÕ" @  r¥©H?d ðÔ±ÖÅ/[ @  r¦ªH?d 0Õ±£³ @  r§«H?d pÕ±,Eè @  r¨¬H?d °Õ±.ÙG @  r©­H?d ðÕ±Þ¦½o @  rª®H?d 0Ö±Câ® @  r«¯H?d pÖ±½øÞ© @  r¬°H?d °Ö± ÜW @  r­±H?d ðÖ±mr&. @  r®²H?d 0×±½:ªÆ @  r¯³H?d p×±:r} @  r°´H?d °×±8Ïpƒ @  r±µH?d ð×±ȰŠú @  r²¶H?d 0رüOç @  r³·H?d pرg§  @  r´¸H?d °Ø±Gð¥ò @  rµ¹H?d ðر·_‹ @  r¶ºH?d 0Ù±gÇÓc @  r·»H?d pÙ±of58 @  r¸¼H?d °Ù±O“7Æ @  r¹½H?d ðÙ±¿ìÍ¿ @  rº¾H?d 0Ú±"¨m~ @  r»¿H?d pÚ±±U‚´ @  r¼ÀH?d °Ú±‘ €J @  r½ÁH?d ðÚ±aßz3 @  r¾ÂH?d 0Û±±—öÛ @  r¿ÃH?d pÛ±«–B @  rÀÄH?d °Û±‹c ¼ @  rÁÅH?d ðÛ±{÷Å @  rÂÆH?d 0ܱbRÊ @  rÃÇH?d pܱù¥! @  rÄÈH?d °Ü±Ùí§ß @  rÅÉH?d ðܱ)’]¦ @  rÆÊH?d 0ݱùÚÑN @  rÇËH?d pݱñ{7 @  rÈÌH?d °Ý±ÑŽ5ë @  rÉÍH?d ðݱ!ñÏ’ @  rÊÎH?d 0Þ±¼µoS @  rËÏH?d pÞ±B¯¬T @  rÌÐH?d °Þ±bZ®ª @  rÍÑH?d ðÞ±’%TÓ @  rÎÒH?d 0ß±BmØ; @  rÏÓH?d pß±çm€ @  rÐÔH?d uÐà±/°ß±ǘ~ @  rÑÕH?d ðß±7çø @  rÒÖH?d Hà±.C¦ñ @  rÓ×H?d ˆà±m: @  rÔØH?d Èౕüä @  rÕÙH?d á±7Zd« @  rÖÚH?d Há±µËsu @  r×ÛH?d ˆá±€ @  rØÜH?d Èᱟ—Ð @  rÙÝH?d â±r5Ú¶ @  rÚÞH?d Hâ±ð¤Íh @  rÛßH?d ˆâ±1m"“ @  rÜàH?d Èâ±³ü5M @  rÝáH?d ã±ZT @  rÞâH?d H㱓ËCÜ @  rßãH?d ˆã±…©©÷ @  ràäH?d Èã±8¾) @  ráåH?d ä±l˜  @  râæH?d€ H䱚ʫù @  sçH?d ˆä±B¥W @  sèH?d Èä±À4@Å @  séH?d å±§ÛÚg @  sêH?d Hå±%J͹ @  sëH?d ˆå±A=a¸ @  sìH?d Èå±ìvf @  síH?d æ±â´dz @  sîH?d Hæ±`%s¤ @  s ïH?d ˆæ±ù^n @  s ðH?d Èæ±{ƒI° @  s ñH?d ç±lÓ @  s òH?d H籞ýÄÌ @  s óH?d ˆç±úŠhÍ @  sôH?d Èç±x @  sõH?d è±]3 @  söH?d Hè±߈hí @  s÷H?d ˆè±#ï'Ë @  søH?d È象~0 @  sùH?d 鱯‘ª· @  súH?d Hé±D½i @  sûH?d ˆé± wh @  süH?d Èé±¢æ¶ @  sýH?d 걃þª @  sþH?d Hê±ot @  sÿH?d ˆê±—í @  sI?d Èê±3 @  sI?d ë±r`Ž‘ @  sI?d Hë±ðñ™O @  sI?d ˆë±”†5N @  sI?d Èë±" @  sI?d ì±¢z @  s I?d Hì±3mÌ @  s!I?d ˆì±qT"ê @  s"I?d Èì±óÅ54 @  s# I?d í±”*¯– @  s$ I?d Hí±»¸H @  s% I?d ˆí±rÌI @  s& I?d Èí±ð]— @  s' I?d î±ÑE‹ @  s(I?d Hî±SÔU @  s)I?d ˆî±Êã+Ÿ @  s*I?d Èî±Hr®Eâ @  s;!I?d ó±YAß@ @  s<"I?d Hó±ÛÐÈž @  s=#I?d ˆó±¿§dŸ @  s>$I?d Èó±=6sA @  s?%I?d ô±Š„-Q @  s@&I?d Hô±: @  sA'I?d ˆô±ôru© @  sB(I?d Èô±vãbw @  sC)I?d õ± øÕ @  sD*I?d Hõ±“ï  @  sE+I?d ˆõ±÷êC  @  sF,I?d Èõ±u{TÔ @  sG-I?d ö±TcFÈ @  sH.I?d Hö±ÖòQ @  sI/I?d ˆö±OÅ|Ü @  sJ0I?d Èö±ÍTk @  sK1I?d ÷±ª»ñ  @  sL2I?d H÷±(*æ~ @  sM3I?d ˆ÷±L]J @  sN4I?d È÷±ÎÌ]¡ @  sO5I?d ø±ëÎ] @  sP6I?d Hø±i_J_ @  sQ7I?d ˆø±•8y @  sR8I?d Èø±©§ @  sS9I?d ù±pFˆ @  sT:I?d Hù±òןÛ @  sU;I?d ˆù±– 3Ú @  sVI?d Hú±·¸!Æ @  sY?I?d ˆú±Ch Á @  sZ@I?d Èú±Áù7 @  s[AI?d û±¦­½ @  s\BI?d Hû±$‡ºc @  s]CI?d ˆû±@ðb @  s^DI?d Èû±Âa¼ @  s_EI?d ü±ÛÔY> @  s`FI?d Hü±YENà @  saGI?d ˆü±¥"Æ @  sbHI?d Èü±'³ @  scII?d ý±@\Œº @  sdJI?d Hý±ÂÍ›d @  seKI?d ˆý±¦º7e @  sfLI?d Èý±$+ » @  sgMI?d þ±32§ @  shNI?d Hþ±‡¢%y @  siOI?d ˆþ±•³ @  sjPI?d Èþ±œm @  skQI?d ÿ±ûë…Ï @  slRI?d Hÿ±yz’ @  smSI?d ˆÿ± > @  snuвTI?d Èÿ±Ÿœ)Î @  soUI?d ²Šíä @  spVI?d `²ú: @  sqWI?d  ²ôfµ @  srXI?d à²v÷¢Â @  ssYI?d ²8` @  stZI?d `²“‰/¾ @  su[I?d  ²÷þƒ¿ @  sv\I?d à²uo”a @  sw]I?d ²Tw†} @  sx^I?d `²Öæ‘£ @  sy_I?d  ²Òf…µ @  sz`I?d à²P÷’k @  s{aI?d ²7É @  s|bI?d `²µ‰ @  s}cI?d  ²Ñþ³ @  s~dI?d à²So¤È @  seI?d ²‹Êé @  s€fI?d `²…Ý7 @  sgI?d  ²y}’ @  s‚hI?d à²ûì…Ï @  sƒiI?d ²œm @  s„jI?d `²’³ @  s…kI?d  ²z夲 @  s†lI?d à²øt³l @  s‡mI?d ²Ùl¡p @  sˆnI?d `²[ý¶® @  s‰oI?d  ²ÂÊ›d @  sŠpI?d à²@[Œº @  s‹qI?d ²'´ @  sŒrI?d `²¥%Æ @  ssI?d  ²ÁR­Ç @  sŽtI?d à²Cú @  suI?d ²fÁº9 @  svI?d `²äP­ç @  s‘wI?d  ²7âÁ @  s’xI?d ಚ¦õ @  s“yI?d ²ýIo½ @  s”zI?d ` ²Øxc @  s•{I?d   ²¯Ôb @  s–|I?d à ²™>ü @  s—}I?d ²¸&Ñ  @  s˜~I?d ` ²:·Æ~ @  s™I?d   ²Ó¡“ë @  sš€I?d à ²Q0„5 @  s›I?d ²6ß— @  sœ‚I?d ` ²´N I @  sƒI?d   ²Ð9¥H @  sž„I?d à ²R¨²– @  sŸ…I?d ²Kê @  s †I?d ` ²ÉŒýÊ @  s¡‡I?d   ²5ë²ì @  s¢ˆI?d à ²·z¥2 @  s£‰I?d ²Е? @  s¤ŠI?d ` ²R(N @  s¥‹I?d   ²6s„O @  s¦ŒI?d à ²´â“‘ @  s§I?d ²•ú @  s¨ŽI?d `²k–S @  s©I?d  ²Ž\»™ @  sªI?d ಠͬG @  s«‘I?d ²k"6å @  s¬’I?d `²é³!; @  s­“I?d  ²Ä: @  s®”I?d à²Ušä @  s¯•I?d ² vªk @  s°–I?d `²"ç½µ @  s±—I?d  ²Þ€ò“ @  s²˜I?d à²\åM @  s³™I?d ²;þï @  s´šI?d `²¹oh1 @  sµ›I?d  ²ÝÄ0 @  s¶œI?d à²_‰Óî @  s·I?d ²~‘Áò @  s¸žI?d `²üÖ, @  s¹ŸI?d  ²ø€Â: @  sº I?d à²zÕä @  s»¡I?d ²þOF @  s¼¢I?d `²ŸoX˜ @  s½£I?d  ²ûô™ @  s¾¤I?d à²y‰ãG @  s¿¥I?d ²Î;½W @  sÀ¦I?d `²Lªª‰ @  sÁ§I?d  ²°Íå¯ @  s¨I?d à²2\òq @  séI?d ²U³hÓ @  sĪI?d `²×"  @  sÅ«I?d  ²³UÓ  @  sƬI?d à²1ÄÄÒ @  sÇ­I?d ²ÜÖÎ @  sÈ®I?d `²’MÁ @  sɯI?d  ² zìÚ @  sʰI?d ಉëû @  s˱I?d ²îa¦ @  s̲I?d `²l•vx @  sͳI?d  ²âÚy @  sδI?d ಊsͧ @  sϵI?d ²¯q͇ @  sжI?d `²-àÚY @  sÑ·I?d  ²ч• @  sÒ¸I?d à²S‚¡ @  sÓ¹I?d ²4ù @  sÔºI?d `²¶hÝ @  sÕ»I?d  ²Ò£Ü @  sÖ¼I?d à²PŽ´ @  s×½I?d ²q–¦ @  sؾI?d `²ó±À @  sÙ¿I?d  ²×°Ç @  sÚÀI?d ಅF§ @  sÛÁI?d ²â©=» @  sÜÂI?d `²`8*e @  sÝÃI?d  ²O†d @  sÞÄI?d ಆޑº @  sßÅI?d ²ŸkÉ8 @  sàÆI?d `²úÞæ @  sáÇI?d  ²á‘À @  sâÈI?d€ à²åZ.§ @  tÉI?d ²côü, @  tÊI?d `²áeëò @  tËI?d  ²@[¼ @  tÌI?d à²ÂÊ«À @  tÍI?d ²-`æ¦ @  tÎI?d `²¯ññx @  tÏI?d  ²øtƒÈ @  tÐI?d à²zå” @  t ÑI?d ²ØCõY @  t ÒI?d `²ZÒ⇠@  t ÓI?d  ²ûìµkuÐ ² @  t ÔI?d à²y}¢µ @  t ÕI?d 8 ²z˜‘t @  tÖI?d x ²ø †ª @  t×I?d ¸ ²g}¨ @  tØI?d ø ²åì¿È @  tÙI?d 8!²GJÞ‡ @  tÚI?d x!²ÅÛÉY @  tÛI?d ¸!²dåžµ @  tÜI?d ø!²æt‰k @  tÝI?d 8"² ÞÄ  @  tÞI?d x"²‹OÓÓ @  tßI?d ¸"²A}˜¿ @  tàI?d ø"²Ãìa @  táI?d 8#²aJî. @  tâI?d x#²ãÛùð @  tãI?d ¸#²Bå® @  täI?d ø#²Àt¹Â @  tåI?d 8$²«Ô§j @  tæI?d x$²)E°´ @  tçI?d ¸$²§7¹¸ @  t èI?d ø$²%¦®f @  t!éI?d 8%²‡Ï) @  t"êI?d x%²‘Ø÷ @  t#ëI?d ¸%²¤¯ @  t$ìI?d ø%²&>˜Å @  t%íI?d 8&²ɔգ @  t&îI?d x&²KÂ} @  t'ïI?d ¸&²€°Í @  t(ðI?d ø&²ž§ @  t)ñI?d 8'²<·Æ\ @  t*òI?d x'²¾&Ñ‚ @  t+óI?d ¸'²†n @  t,ôI?d ø'²‰‘° @  t-õI?d 8(²Û˜ð  @  t.öI?d x(²Y çÔ @  t/÷I?d ¸(²Æ}Éh @  t0øI?d ø(²DìÞ¶ @  t1ùI?d 8)²æJ¿ù @  t2úI?d x)²dÛ¨' @  t3ûI?d ¸)²ÅåÿË @  t4üI?d ø)²Gtè @  t5ýI?d 8*²¨Þ¥s @  t6þI?d x*²*O²­ @  t7ÿI?d ¸*²À®Øk @  t8J?d ø*²B?ϵ @  t9J?d 8+²à™®ú @  t:J?d x+²b¹$ @  t;J?d ¸+²Ã6îÈ @  t<J?d ø+²A§ù @  t=J?d 8,²*ç¾ @  t>J?d x,²¨–ð` @  t?J?d ¸,²ˆãÿþ @  t@J?d ø,² rè  @  tA J?d 8-²¨Ô‰o @  tB J?d x-²*Ež± @  tC J?d ¸-²‹{É] @  tD J?d ø-² êÞƒ @  tE J?d 8.²æ@“å @  tFJ?d x.²dÑ„; @  tGJ?d ¸.²3Tö‹ @  tHJ?d ø.²±ÅáU @  tIJ?d 8/²c€ @  tJJ?d x/²‘ò—Ä @  tKJ?d ¸/²0ÌÀ( @  tLJ?d ø/²²]×ö @  tMJ?d 80²~m†ã @  tNJ?d x0²üü‘= @  tOJ?d ¸0²cˆ¿ @  tPJ?d ø0²á¨_ @  tQJ?d 81²C¿É @  tRJ?d x1²Á.ÞÎ @  tSJ?d ¸1²`‰" @  tTJ?d ø1²âžü @  tUJ?d 82² +Óš @  tVJ?d x2²ºÄD @  tWJ?d ¸2²Eˆ( @  tX J?d ø2²Ç˜ö @  tY!J?d 83²e¿ù¹ @  tZ"J?d x3²ç.îg @  t[#J?d ¸3²F¹‹ @  t\$J?d ø3²Ä®U @  t]%J?d 84²¯!°ý @  t^&J?d x4²-°§# @  t_'J?d ¸4²£Â®/ @  t`(J?d ø4²!S¹ñ @  ta)J?d 85²ƒõؾ @  tb*J?d x5²dÏ` @  tc+J?d ¸5² Z˜Œ @  td,J?d ø5²"ËR @  te-J?d 86²ÍaÂ4 @  tf.J?d x6²OðÕê @  tg/J?d ¸6²u§Z @  th0J?d ø6²šä°„ @  ti1J?d 87²8BÑË @  tj2J?d x7²ºÓÆ @  tk3J?d ¸7²í‘ù @  tl4J?d ø7²™|†' @  tm5J?d 88²ßmç @  tn6J?d x8²]üðC @  to7J?d ¸8²ˆÞÿ @  tp8J?d ø8²@É! @  tq9J?d 89²⿨n @  tr:J?d x9²`.¿° @  ts;J?d ¸9²Áè\ @  ttJ?d x:².º¥: @  tw?J?d ¸:²ØûG @  tx@J?d ø:²–Iì™ @  tyAJ?d 8;²4ïÖ @  tzBJ?d x;²¶~š @  t{CJ?d ¸;²@Íä @  t|DJ?d ø;²•ÑÚ: @  t}EJ?d 8<²þqÄ’ @  t~FJ?d x<²|àÓL @  tGJ?d ¸<²¿Ãìã @  t€HJ?d ø<²=Rû= @  tIJ?d 8=²Ÿôšr @  t‚JJ?d x=²e¬ @  tƒKJ?d ¸=²¼[Ú@ @  t„LJ?d ø=²>ÊÍž @  t…MJ?d 8>²Ñ`€ø @  t†NJ?d x>²Sñ—& @  t‡OJ?d ¸>²tå– @  tˆPJ?d ø>²†åòH @  t‰QJ?d 8?²$C“ @  tŠRJ?d x?²¦Ò„Ù @  t‹SJ?duÐ@²7 ¸?²ìÓ5 @  tŒTJ?d ø?²…}Äë @  tUJ?d P@²4?“p @  tŽVJ?d @²Ê‘Ž @  tWJ?d Ð@²)Úª @  tXJ?d A²ù’&ú @  t‘YJ?d PA² í܃ @  t’ZJ?d A²)Þ} @  t“[J?d ÐA²*Bœ± @  t”\J?d B²·! @  t©qJ?d PG²rÄX @  tªrJ?d G²R實 @  t«sJ?d ÐG²Q¿„j @  t¬tJ?d H²e@w @  t­uJ?d PH²•?ò @  t®vJ?d H²µÊðð @  t¯wJ?d ÐH²ˆÚËl @  t°xJ?d I²X’G„ @  t±yJ?d PI²¨í½ý @  t²zJ?d I²ˆ¿ @  t³{J?d ÐI²‹BýÏ @  t´|J?d J²] @  tµ}J?d PJ²æy§w @  t¶~J?d J²ÆŒ¥‰ @  t·J?d ÐJ²CLºF @  t¸€J?d K²“6® @  t¹J?d PK²c{Ì× @  tº‚J?d K²CŽÎ) @  t»ƒJ?d ÐK²@ÔŒå @  t¼„J?d L²Yšê @  t½…J?d PL²©å…“ @  t¾†J?d L²‰‡m @  t¿‡J?d ÐL² Ó @  tÀˆJ?d M²ÛI; @  tÁ‰J?d PM²+6ëB @  tŠJ?d M² Ãé¼ @  tËJ?d ÐM²™«p @  tÄŒJ?d N²•Ý ± @  tÅJ?d PN²e¢ñÈ @  tÆŽJ?d N²EWó6 @  tÇJ?d ÐN²°¶”¦ @  tÈJ?d O²`þN @  tÉ‘J?d PO²â7 @  tÊ’J?d O²°tàÉ @  tË“J?d ÐO²³.¢ @  tÌ”J?d P² ð· @  tÍ•J?d PP²ýäÎ @  tΖJ?d P²Ýzæ0 @  tÏ—J?d ÐP²àjݬ @  tИJ?d Q²0"QD @  tÑ™J?d PQ²À]«= @  tÒšJ?d Q²਩à @  tÓ›J?d ÐQ²ãòë @  tÔœJ?d R²~¶KÎ @  tÕJ?d PR²ŽÉ±· @  tÖžJ?d R²®<³I @  tןJ?d ÐR²Æjí @  tØ J?d S²"aí @  tÙ¡J?d PS²æ]›” @  tÚ¢J?d S²ƨ™j @  tÛ£J?d ÐS²ÅòÛ¦ @  tܤJ?d T²ܼ(© @  tÝ¥J?d PT²,ÃÒÐ @  tÞ¦J?d T² 6Ð. @  tß§J?d ÐT² Ì @  tà¨J?d U²ðh@ê @  tá©J?d PU²º“ @  tâªJ?d€ U²T!¤Ë @  u«J?d ÐU²¶:®. @  u¬J?d V²+~ï @  u­J?d PV²H{ @  u®J?d V²>½ … @  u¯J?d ÐV²î5o @  u°J?d W²Õ¦¹‡ @  u±J?d PW²ëk„ @  u²J?d W²Ëžz @  u ³J?d ÐW² §[ @  u ´J?d X²9r+F @  u µJ?d PX² D*Ò @  u ¶J?d X²,±(, @  u ·J?d ÐX²r²r* @  u¸J?d Y²¢úþ @  u¹J?d PY²1–e! @  uºJ?d Y²cgß @  u»J?d ÐY²×pÞþ @  u¼J?d Z²J4~? @  u½J?d PZ²« @  u¾J?d Z²_÷}U @  u¿J?d ÐZ² Cir @  uÀJ?d [²Ù åš @  uÁJ?d P[²çÆ@™ @  uÂJ?d [²Ç3Bg @  uÃJ?d Ð[² ûF @  uÄJ?d \²nI @  uÅJ?d P\²-X Ý @  uÆJ?d \² ­ # @  uÇJ?d Ð\²S®Q% @  uÈJ?d ]²ƒæÝÍ @  uÉJ?d P]²Œaž @  u ÊJ?d ]²!yc` @  u!ËJ?d Ð]²çjÚA @  u"ÌJ?d ^²z.z€ @  u#ÍJ?d P^²O{ @  u$ÎJ?d ^²oíyê @  u%ÏJ?d Ð^²T¾A @  u&ÐJ?d _²„öÍè @  u'ÑJ?d P_²º;hë @  u(ÒJ?d _²šÎj @  uuÐ`²)ÓJ?d Ð_²eá @  u* ÔJ?d (`²Ûâºy @  u+ ÕJ?d h`²îÔ»í @  u, ÖJ?d ¨`²Î!¹ @  u- ×J?d è`²"ã @  u. ØJ?d (a²@joý @  u/ ÙJ?d ha²Óô @  u0 ÚJ?d ¨a²óóöà @  u1 ÛJ?d èa²5àOÁ @  u2 ÜJ?d (b²¨¤ï @  u3 ÝJ?d hb²’î” @  u4 ÞJ?d ¨b²½gìj @  u5 ßJ?d èb²ƒí\ @  u6 àJ?d (c²ËËa´ @  u7 áJ?d hc²õÄ· @  u8 âJ?d ¨c²ÕóÆI @  u9 ãJ?d èc²àh @  u: äJ?d (d² ®Œg @  u; åJ?d hd²?˜ó @  u< æJ?d ¨d²m  @  u= çJ?d èd²AnÕ  @  u> èJ?d (e²‘&Yã @  u? éJ?d he²½Kã" @  u@ êJ?d ¨e²¾áÜ @  uA ëJ?d èe²[­Xý @  uB ìJ?d (f²Æéø< @  uC íJ?d hf²óßù¨ @  uD îJ?d ¨f²Ó*ûV @  uE ïJ?d èf²èyü @  uF ðJ?d (g²81OT @  uG ñJ?d hg²üêW @  uH òJ?d ¨g²& è© @  uI óJ?d èg²àQˆ @  uJ ôJ?d (h²ÔåÝ• @  uK õJ?d hh²áÓÜ @  uL öJ?d ¨h²Á&Þÿ @  uM ÷J?d èh²Ÿ%„ù @  uN øJ?d (i²Om @  uO ùJ?d hi²Ü“ò @  uP úJ?d ¨i²üô‘  @  uQ ûJ?d èi²:ç(- @  uR üJ?d (j²§£ˆì @  uS ýJ?d hj²’•‰x @  uT þJ?d ¨j²²`‹† @  uU ÿJ?d èj²†už? @  uV K?d (k²V=× @  uW K?d hk²hð·Ô @  uX K?d ¨k²Hµ* @  uY K?d èk²Ž  @  uZ K?d (l²—Xÿ @  u[ K?d hl²¢nþ @  u\ K?d ¨l²‚›ün @  u] K?d èl²ܘ¦h @  u^ K?d (m² Ð*€ @  u_  K?d hm²Žº–Ó @  u`  K?d ¨m²®O”- @  ua  K?d èm²h\-  @  ub  K?d (n²õÍ @  uc  K?d hn²À.ŒY @  ud K?d ¨n²àÛŽ§ @  ue K?d èn²Ûˆ¶M @  uf K?d (o² À:¥ @  ug K?d ho²5 Ÿ¦ @  uh K?d ¨o²øX @  ui K?d èo²Óë$y @  uj K?d (p²m5˜Ë @  uk K?d hp²X™_ @  ul K?d ¨p²xö›¡ @  um K?d èp²&õÁ§ @  un K?d (q²ö½MO @  uo K?d hq²eÑÖ¬ @  up K?d ¨q²E$ÔR @  uq K?d èq²ƒ7ms @  ur K?d (r²sͲ @  us K?d hr²+EÌ& @  ut K?d ¨r² °ÎØ @  uu K?d èr²­TÏî @  uv  K?d (s²}C @  uw !K?d hs²CÑæ @  ux "K?d ¨s²c$äû @  uy #K?d ès²¥7]Ú @  uz $K?d (t²¼y®Õ @  u{ %K?d ht²‰O¯A @  u| &K?d ¨t²©º­¿ @  u} 'K?d èt²÷¹÷¹ @  u~ (K?d (u²'ñ{Q @  u )K?d hu²èÊñ¡ @  u€ *K?d ¨u²È?ó_ @  u +K?d èu²,J~ @  u‚ ,K?d (v²“hê¿ @  uƒ -K?d hv²¦^ë+ @  u„ .K?d ¨v²†«éÕ @  u… /K?d èv²½øÑ? @  u† 0K?d (w²m°]× @  u‡ 1K?d hw²S}øÔ @  uˆ 2K?d ¨w²sˆú* @  u‰ 3K?d èw²µ›C  @  uŠ 4K?d (x²dÏ @  u‹ 5K?d hx²´R΂ @  uŒ 6K?d ¨x²”§Ì| @  u 7K?d èx²ʤ–z @  uŽ 8K?d (y²ì’ @  u 9K?d hy²‰€q @  u :K?d ¨y²©uƒ @  u‘ ;K?d èy²of:® @  u’ K?d ¨z²çá™ @  u• ?K?d èz²±U" @  u– @K?d ({²aÊ @  u— AK?d h{²_ФÉ @  u˜ BK?d ¨{²%¦7 @  u™ CK?d è{²¹6 @  uš DK?d (|² xì @  u› EK?d h|²•Ní @  uœ FK?d ¨|²µ»ïs @  u GK?d è|²븵u @  už HK?d (}²;ð9 @  uŸ IK?d h}²¹š…Î @  u  JK?d ¨}²™o‡0 @  u¡ KK?d è}²_|> @  u¢ LK?d (~²Â8žÐ @  u£ MK?d h~²÷ŸD @  u¤ NK?d ¨~²×ûº @  u¥ OK?d è~²쨥P @  u¦ PK?d (²<à)¸ @  u§ QK?d h²-Œ» @  u¨ RK?d ¨²uЀ²'"ØŽE @  u© SK?d è²äË7d @  uª TK?d @€²ŠuÕ @  u« UK?d €€²'Á¤ @  u¬ VK?d À€²Ÿ¶Öz @  u­ WK?d ²“lJ @  u® XK?d @²ý” @  u¯ YK?d €² õŽW @  u° ZK?d À²¢d™‰ @  u± [K?d ‚²{¢—· @  u² \K?d @‚²ù3€i @  u³ ]K?d €‚²na”Ý @  u´ ^K?d À‚²ìðƒ @  uµ _K?d ƒ²Í @  u¶ `K?d @ƒ²š\Ý @  u· aK?d €ƒ²õ¾þ @  u¸ bK?d Àƒ²„d©  @  u¹ cK?d „²Ù¨ôÐ @  uº dK?d @„²[9ã @  u» eK?d €„²Ìk÷º @  u¼ fK?d À„²Núàd @  u½ gK?d …²B !T @  u¾ hK?d @…²À±6Š @  u¿ iK?d €…²N¸™k @  uÀ jK?d À…²Ì)޵ @  uÁ kK?d †² @  u lK?d @†²—~—U @  uà mK?d €†²,ƒá @  uÄ nK?d À†²‚½”? @  uÅ oK?d ‡²ë77ã @  uÆ pK?d @‡²i¦ = @  uÇ qK?d €‡²õ @  uÈ rK?d À‡²wž‡À @  uÉ sK?d ˆ²ã¥" @  uÊ tK?d @ˆ²…r²ü @  uË uK?d €ˆ² ¦H @  uÌ vK?d Àˆ²±±– @  uÍ wK?d ‰²œkp¦ @  uÎ xK?d @‰²úgx @  uÏ yK?d €‰²/òé» @  uÐ zK?d À‰²­cþe @  uÑ {K?d вt¥ð[ @  uÒ |K?d @вö4ç… @  uÓ }K?d €Š²afó1 @  uÔ ~K?d Àвã÷äï @  uÕ K?d ‹²ú\?l @  uÖ €K?d @‹²xÍ(² @  u× K?d €‹²äd˜‘ @  uØ ‚K?d À‹²fõO @  uÙ ƒK?d Œ²;9Ò¿ @  uÚ „K?d @Œ²¹¨Åa @  uÛ …K?d €Œ².úÑÕ @  uÜ †K?d ÀŒ²¬kÆ  @  uÝ ‡K?d ² ±; @  uÞ ˆK?d @²" å @  uß ‰K?d €².¹– @  uà ŠK?d À²€¿®H @  uá ‹K?d ޲Yy v @  uâ ŒK?d€ @޲¯@¨ @  v K?d €Ž²l¼5 @  v ŽK?d À޲î- ë @  v K?d ²BîSÚ @  v K?d @²ÀD @  v ‘K?d €²’d«] @  v ’K?d À²õ¼ƒ @  v “K?d ²$ñ´ @  v ”K?d @²¦Šæj @  v •K?d €²ô‘ 3 @  v –K?d À²ví @  v —K?d ‘²¿“$0 @  v ˜K?d @‘²=3î @  v ™K?d €‘²oÜ· @  v šK?d À‘²íˆËi @  v ›K?d ’²W]¤Í @  v œK?d @’²Õ̳ @  v K?d €’²‡×\J @  v žK?d À’²FK” @  v ŸK?d “²42*y @  v  K?d @“²¶£=§ @  v ¡K?d €“²ä¸Òþ @  v ¢K?d À“²f)Å  @  v £K?d ”²õWǪ @  v ¤K?d @”²wÆÐt @  v ¥K?d €”²%Ý?- @  v ¦K?d À”²§L(ó @  v §K?d •²nß. @  v ¨K?d @•²ìNð @  v ©K?d €•²¾Uê© @  v ªK?d À•²<Äýw @  v «K?d –²—µc @  v ¬K?d @–²†¢½ @  v! ­K?d €–²GMä @  v" ®K?d À–²Å Z: @  v# ¯K?d —²iÏ  @  v$ °K?d @—²ë^Õ @  v% ±K?d €—²¹EúŒ @  v& ²K?d À—²;ÔíR @  v' ³K?d ˜²…Ê @  v( ´K?d @˜²Ї @  v) µK?d €˜²U‘hM @  v* ¶K?d À˜²×“ @  v+ ·K?d ™²“EN @  v, ¸K?d @™²œR @  v- ¹K?d €™²Î½É @  v. ºK?d À™²Lˆª @  v/ »K?d š²ö]ų @  v0 ¼K?d @š²tÌÒm @  v1 ½K?d €š²&×=4 @  v2 ¾K?d Àš²¤F*ê @  v3 ¿K?d ›²eb^ @  v4 ÀK?d @›²çóIÈ @  v5 ÁK?d €›²µè¦‘ @  v6 ÂK?d À›²7y±O @  v7 ÃK?d œ²¤³Å @  v8 ÄK?d @œ²&–¤ @  v9 ÅK?d €œ²tKB @  v: ÆK?d Àœ²ö\œ @  v; ÇK?d ²?fA @  v< ÈK?d @²½qŸ @  v= ÉK?d €²ïžÆ @  v> ÊK?d À²m”‰ @  v? ËK?d ž²h@Çž @  v@ ÌK?d @ž²êÑÐ@ @  vA ÍK?d €ž²¸Ê? @  vB ÎK?d Àž²:[(Ç @  vC ÏK?d Ÿ²–˜pö @  vD ÐK?d @Ÿ² g( @  vE ÑK?d €Ÿ²Fˆq @  vF ÒKuР²?d ÀŸ²ăŸ¯ @  vG ÓK?d  ²l™ @  vHÔK?d X ²„î{G @  vIÕK?d ˜ ²Öõ” @  vJÖK?d Ø ²TdƒÀ @  vK×K?d ¡²÷¹ @  vLØK?d X¡²f®Ã @  vMÙK?d ˜¡²M}Aš @  vNÚK?d Ø¡²ÏìVD @  vOÛK?d ¢²u99à @  vPÜK?d X¢²÷¨.> @  vQÝK?d ˜¢²¥³Ág @  vRÞK?d Ø¢²'"Ö¹ @  vSßK?d £²V·T @  vTàK?d X£²”Ç Š @  vUáK?d ˜£²ÆÜOÓ @  vVâK?d Ø£²DMX  @  vWãK?d ¤²×3Z‡ @  vXäK?d X¤²U¢MY @  vYåK?d ˜¤²¹¢ @  vZæK?d ؤ²…(µÞ @  v[çK?d ¥²L» @  v\èK?d X¥²Î*˜Ý @  v]éK?d ˜¥²œ1w„ @  v^êK?d Ø¥² `Z @  v_ëK?d ¦²µs(N @  v`ìK?d X¦²7â? @  vaíK?d ˜¦²eùÐÉ @  vbîK?d ئ²çhÇ @  vcïK?d §²K«Ÿ& @  vdðK?d X§²É:ˆø @  veñK?d ˜§²›!g¡ @  vfòK?d ا²°p @  vgóK?d ¨²§ ç @  vhôK?d X¨²%î9 @  viõK?d ˜¨²wõõ` @  vjöK?d ب²õdâ¾ @  vk÷K?d ©²<÷Øc @  vløK?d X©²¾fϽ @  vmùK?d ˜©²ì} ä @  vnúK?d Ø©²nì7: @  voûK?d ª²Ô9Xž @  vpüK?d Xª²V¨O@ @  vqýK?d ˜ª²³  @  vrþK?d ت²†"·Ç @  vsÿK?d «²®ý3 @  vtL?d X«²›?êí @  vuL?d ˜«²É$´ @  vvL?d Ø«²Kµj @  vwL?d ¬²ØËà @  vxL?d X¬²ZZ> @  vyL?d ˜¬²Aèg @  vzL?d ج²ŠÐÿ¹ @  v{L?d ­²CCÅd @  v|L?d X­²ÁÒÒº @  v} L?d ˜­²“É=ã @  v~ L?d Ø­²X*= @  v L?d ®²÷ÚTŠ @  v€ L?d X®²uKCT @  v L?d ˜®²'P¬  @  v‚L?d Ø®²¥Á»Ó @  vƒL?d ¯² ãâ @  v„L?d X¯²‹“ô< @  v…L?d ˜¯²Ùˆe @  v†L?d د²[ » @  v‡L?d °²o÷AŒ @  vˆL?d X°²ífVR @  v‰L?d ˜°²¿}¹  @  vŠL?d ذ²=ì®Õ @  v‹L?d ±²ô” @  vŒL?d X±²vîƒÖ @  vL?d ˜±²$õl @  vŽL?d ر²¦d{Q @  vL?d ²²±õ @  vL?d X²²ž + @  v‘L?d ˜²²Ì;ìr @  v’L?d ز²Nªû¬ @  v“L?d ³²ÞšA @  v” L?d X³²ýOŸ @  v•!L?d ˜³²¯TbÆ @  v–"L?d س²-Åu @  v—#L?d ´²¾»w’ @  v˜$L?d X´²<*`L @  v™%L?d ˜´²n1 @  vš&L?d Ø´²ì ˜Ë @  v›'L?d µ²%3¢ @  vœ(L?d Xµ²§¢µÈ @  v)L?d ˜µ²õ¹Z‘ @  vž*L?d ص²w(MO @  vŸ+L?d ¶²Üû[ @  v ,L?d X¶²^j… @  v¡-L?d ˜¶² qýÜ @  v¢.L?d ض²Žàê @  v£/L?d ·²"#²3 @  v¤0L?d X·² ²¥í @  v¥1L?d ˜·²ò©J´ @  v¦2L?d Ø·²p8]j @  v§3L?d ¸²Î÷ ò @  v¨4L?d X¸²Lf7, @  v©5L?d ˜¸²}Øu @  vª6L?d ظ²œìÏ« @  v«7L?d ¹²Uõv @  v¬8L?d X¹²×î⨠@  v­9L?d ˜¹²…õ ñ @  v®:L?d ع²d/ @  v¯;L?d º²½±u‹ @  v°L?d غ²漢Ò @  v³?L?d »².Žî. @  v´@L?d X»²¬ùð @  vµAL?d ˜»²þ© @  v¶BL?d Ø»²|•w @  v·CL?d ¼²ïëý @  v¸DL?d X¼²mz# @  v¹EL?d ˜¼²?aûz @  vºFL?d ؼ²½ðì¤ @  v»GL?d ½²tcÖy @  v¼HL?d X½²öòÁ§ @  v½IL?d ˜½²¤é.þ @  v¾JL?d ؽ²&x9  @  v¿KL?d ¾²#¬w¦ @  vÀLL?d X¾²¡=`x @  vÁML?d ˜¾²ó&! @  vÂNL?d ؾ²q·˜ÿ @  vÃOL?d ¿²ÝtÀÎ @  vÄPL?d X¿²_å× @  vÅQL?d ˜¿² þ8I @uÐÀ²  vÆRL?d Ø¿²o/— @  vÇSL?d 0À²a¯@ @  vÈTL?d pÀ²ã>˜ž @  vÉUL?d °À²±%wÇ @  vÊVL?d ðÀ²3´` @  vËWL?d 0Á²Ãà† @  vÌ XL?d pÁ²Aq‘Ï @  vÍ YL?d °Á²j~– @  vÎ ZL?d ðÁ²‘ûiH @  vÏ [L?d 0²+.ì @  vÐ \L?d p²©¿2 @  vÑ ]L?d °Â²û¤þk @  vÒ ^L?d ð²y5éµ @  vÓ _L?d 0òHAˆX @  vÔ `L?d pòÊП† @  vÕ aL?d °Ã²˜Ëpß @  vÖ bL?d ðòZg @  v× cL?d 0IJ‰$e‹ @  vØ dL?d pIJ µrU @  vÙ eL?d °Ä²Y®  @  vÚ fL?d ðIJÛ?ŠÒ @  vÛ gL?d 0Ų¬° @  vÜ hL?d pŲ=§Ñ @  vÝ iL?d °Å²Â&Hˆ @  vÞ jL?d ðŲ@·_V @  vß kL?d 0ƲëdB @  và lL?d pƲiõœ @  vá mL?d °Æ²;îïÅ @  vâ nL?d€ ðƲͼä½ @  w oL?d 0Dz€>ô¥ @  w pL?d pDz¯ã{ @  w qL?d °Ç²•ý÷Ï @  w rL?d ðDzlà @  w sL?d 0ȲgÂó @  w tL?d pȲå€Õ- @  w uL?d °È²y)e @  w vL?d ðȲû¸rÐ @  w wL?d 0ɲ÷b³à @  w xL?d pɲuó¤> @  w yL?d °É²â¡°Š @  w zL?d ðɲ`0§T @  w {L?d 0ʲ¹ö©j @  w |L?d pʲ;g¾´ @  w }L?d °Ê² o0w @  w ~L?d ðʲˆþ'© @  w L?d 0˲‘Uü* @  w €L?d p˲Äëô @  w L?d °Ë²„–ÿ@ @  w ‚L?d ð˲èž @  w ƒL?d 0̲[˵n @  w „L?d p̲ÙZ¢° @  w …L?d °Ì²Eó“ @  w †L?d ð̲ÇbM @  w ‡L?d 0Ͳ˸Ä} @  w ˆL?d pͲI)Ó£ @  w ‰L?d °Í²Þ{Ç @  w ŠL?d ðͲ\êÐÉ @  w ‹L?d 0β…,Þ÷ @  w ŒL?d pβ½É) @  w L?d °Î²'³`Z @  w ŽL?d ðβ¥"w„ @  w! L?d 0ϲ̨ÔX @  w" L?d pϲN9Æ @  w# ‘L?d °Ï²Ùk×2 @  w$ ’L?d ðϲ[úÀì @  w% “L?d 0в¡¦Ò¡ @  w& ”L?d pв#7Å @  w' •L?d °Ð²¿žu\ @  w( –L?d ðв=b‚ @  w) —L?d 0Ѳ1Õ£² @  w* ˜L?d pѲ³D´l @  w+ ™L?d °Ñ²$ Ø @  w, šL?d ðѲ¦‡· @  w- ›L?d 0Ò²A¹8 @  w. œL?d pÒ²ýЮæ @  w/ L?d °Ò²ÌØ % @  w0 žL?d ðÒ²NI7û @  w1 ŸL?d 0Ó²ºt­û @  w2  L?d pÓ²8åº% @  w3 ¡L?d °Ó²¯·®‘ @  w4 ¢L?d ðÓ²-&¹O @  w5 £L?d 0Ô²pêä¿ @  w6 ¤L?d pÔ²ò{óa @  w7 ¥L?d °Ô²nÒCB @  w8 ¦L?d ðÔ²ìCTœ @  w9 §L?d 0Õ²à™•¬ @  w: ¨L?d pÕ²b‚r @  w; ©L?d °Õ²õZ–Æ @  w< ªL?d ðÕ²wË @  w= «L?d 0Ö²® & @  w> ¬L?d pÖ²,œ˜ø @  w? ­L?d °Ö²¢•7 @  w@ ®L?d ðÖ²  Ç @  wA ¯L?d 0ײIŽƒ @  wB °L?d pײ˔Š@  wC ±L?d °×²\M€q @  wD ²L?d ðײÞÜ—¯ @  wE ³L?d 0ز®¡µM @  wF ´L?d pز,0¢“ @  wG µL?d °Ø²°™° @  wH ¶L?d ðز2n @  wI ·L?d 0Ù²>ÒÄ^ @  wJ ¸L?d pÙ²¼CÓ€ @  wK ¹L?d °Ù²+Ç4 @  wL ºL?d ðÙ²©€Ðê @  wM »L?d 0Ú²pFÞÔ @  wN ¼L?d pÚ²ò×É  @  wO ½L?d °Ú²ÃßGÉ @  wP ¾L?d ðÚ²ANP @  wQ ¿L?d 0Û²E#ß @  wR ÀL?d pÛ²Ç²ÈØ @  wS ÁL?d °Û²PàÜl @  wT ÂL?d ðÛ²Òq˲ @  wU ÃL?d 0ܲ½–B @  wV ÄL?d pܲ ,œ @  wW ÅL?d °Ü²‘…1¿ @  wX ÆL?d ðܲ&a @  wY ÇL?d 0ݲÎçQ @  wZ ÈL?d pݲ_ð @  w[ ÉL?d °Ý² ä; @  w\ ÊL?d ðݲˆœóå @  w] ËL?d 0Þ²QZýÛ @  w^ ÌL?d pÞ²ÓËê @  w_ ÍL?d °Þ²óÅCv @  w` ÎL?d ðÞ²qTT¨ @  wa ÏL?d 0ß²Þ÷t @  wb ÐL?d pß²šOઠ@  wc ÑL?d uÐà²/°ß² ô @  wd ÒL?d ðß²tâØÀ @  weÓL?d Hà²)Ä(É @  wfÔL?d ˆà² 1*7 @  wgÕL?d Èà²7ü4 @  whÖL?d á²ç´Ü @  wi×L?d Há²¹·YÚ @  wjØL?d ˆá²™B[$ @  wkÙL?d ÈᲬtZ° @  wlÚL?d â²10úq @  wmÛL?d Hâ²÷#CP @  wnÜL?d ˆâ²×ÖA® @  woÝL?d Èâ²DºÚM @  wpÞL?d ã²”òV¥ @  wqßL?d Hã²2W“ @  wràL?d ˆã²ãUm @  wsáL?d Èã²'ÕTù @  wtâL?d ä²>›§ö @  wuãL?d Hä²øˆ× @  wväL?d ˆä²Ø}) @  wwåL?d È䲿°¹* @  wxæL?d å²6ø5 @  wyçL?d Hå²hûoÄ @  wzèL?d ˆå²Hm: @  w{éL?d Èå²}8l® @  w|êL?d æ²à|Ìo @  w}ëL?d Hæ²&ouN @  w~ìL?d ˆæ²šw° @  wíL?d Èæ²É¡ý@ @  w€îL?d ç²éq¨ @  wïL?d Hç²"ºIB @  w‚ðL?d ˆç²OK¼ @  wƒñL?d Èç²7yJ( @  w„òL?d 貆Æ5 @  w…óL?d Hè²Å• @  w†ôL?d ˆè²å`}ê @  w‡õL?d Èè²Û­Øé @  wˆöL?d é² åT @  w‰÷L?d Hé²Uæ @  wŠøL?d ˆé²u ù @  w‹ùL?d Èé²@% m @  wŒúL?d ê²Ýa­¬ @  wûL?d Hê²r @  wŽüL?d ˆê²;‡s @  wýL?d È겨ë @  wþL?d ë²x£x @  w‘ÿL?d Hë²L¶Á @  w’M?d ˆë²lC? @  w“M?d Èë²Yu« @  w”M?d ì²@;ä¤ @  w•M?d H첆(]… @  w–M?d ˆì²¦Ý_{ @  w—M?d È처úx @  w˜M?d í²HXv @  w™M?d Hí²[,– @  wšM?d ˆí²6®.h @  w› M?d Èí²˜/ü @  wœ M?d Ü= @  w M?d Hî²XÏ6 @  wž M?d ˆî²x:4â @  wŸ M?d Èî²úPˆ± @  w M?d ï²*Y @  w¡M?d Hï²K<³ @  w¢M?d ˆï²1¾>M @  w£M?d Èﲈ?Ù @  w¤M?d ð²ºVƒk @  w¥M?d Hð²|E:J @  w¦M?d ˆð²\°8´ @  w§M?d Èð²b}· @  w¨M?d ñ²²5_ @  w©M?d Hñ²ì6KY @  wªM?d ˆñ²ÌÃI§ @  w«M?d Èñ²ùõH3 @  w¬M?d ò²d±èò @  w­M?d Hò²¢¢QÓ @  w®M?d ˆò²‚WS- @  w¯M?d Èò²;ÈÎ @  w°M?d ó²ÁsD& @  w±M?d Hó²g—E @  w² M?d ˆó²GbGî @  w³!M?d Èó²rTFz @  w´"M?d ô²kµu @  wµ#M?d Hô²­ T @  w¶$M?d ˆô²üª @  w·%M?d Èô²³1«© @  w¸&M?d õ²cy'A @  w¹'M?d Hõ²=z}G @  wº(M?d ˆõ²¹ @  w»)M?d Èõ²(¹~- @  w¼*M?d ö²µýÞì @  w½+M?d Hö²sîgÍ @  w¾,M?d ˆö²Se3 @  w¿-M?d Èö²vßò @  wÀ.M?d ÷²¯>S @  wÁ/M?d H÷²”mkð @  wÂ0M?d ˆ÷²´˜i @  wÃ1M?d È÷²®hš @  wÄ2M?d ø²µQä‡ @  wÅ3M?d Hø²sB]¦ @  wÆ4M?d ˆø²S·_X @  wÇ5M?d Èø²mzú[ @  wÈ6M?d ù²½2v³ @  wÉ7M?d Hù²ã1,µ @  wÊ8M?d ˆù²ÃÄ.K @  wË9M?d Èù²öò/ß @  wÌ:M?d ú²k¶ @  wÍ;M?d Hú²­¥6? @  wÎM?d û²Ît#Ê @  wÑ?M?d Hû²˜À7í @  wÒ@M?d ˆû²¸55 @  wÓAM?d Èû²4‡ @  wÔBM?d ü²”MLj @  wÕCM?d Hü²R^~© @  wÖDM?d ˆü²r«|W @  w×EM?d Èü²LfÙT @  wØFM?d ý²œ.U¼ @  wÙGM?d Hý²Â-º @  wÚHM?d ˆý²âØ D @  wÛIM?d Èý²×î Ð @  wÜJM?d þ²Jª¬ @  wÝKM?d Hþ²Œ¹0 @  wÞLM?d ˆþ²¬LÎ @  wßMM?d Èþ².&« @  wàNM?d ÿ²þn'u @  wáOM?d Hÿ²Å=Ÿ @  wâPM?d€ ˆÿ²ÍR 3 @  xuгQM?d Èÿ²ÛŒ§[ @  xRM?d ³”8ª @  xSM?d `³—bÍf @  xTM?d  ³·—Ϙ @  xUM?d à³Gè5á @  xVM?d ³— ¹  @  xWM?d `³¼u @  xXM?d  ³'例 @  x YM?d à³×›Dò @  x ZM?d ³Jßä3 @  x [M?d `³I…¦ÿ @  x \M?d  ³ip¤ @  x ]M?d à³™^x @  x^M?d ³IGÒ @  x_M?d `³Œ°²< @  x`M?d  ³¬E°Â @  xaM?d à³\:J» @  xbM?d ³Et¹´ @  xcM?d `³F.ûx @  xdM?d  ³fÛù† @  xeM?d à³–¤ÿ @  xfM?d ³Fì @  xgM?d `³Ö]Šk @  xhM?d  ³ö¨ˆ• @  xiM?d à³×rì @  xjM?d ³›“Ò- @  xkM?d `³˜Éá @  xlM?d  ³¸<’ @  xmM?d à³HChf @  xnM?d ³˜ äŽ @  xoM?d `³ÑMšN @  x pM?d  ³ñ¸˜° @  x!qM?d à³ÇbÉ @  x"rM?d ³58îÔ @  x#sM?d `³6b¬ @  x$tM?d  ³—®æ @  x%uM?d à³æèTŸ @  x&vM?d ³6 Øw @  x'wM?d ` ³¦Ý  @  x(xM?d   ³†äßõ @  x)yM?d à ³v›%Œ @  x*zM?d ³ëß…M @  x+{M?d ` ³è…Ç @  x,|M?d   ³ÈpÅ @  x-}M?d à ³8? @  x.~M?d ³èG³î @  x/M?d ` ³À&’Á @  x0€M?d   ³àÓ? @  x1M?d à ³¬jF @  x2‚M?d ³ â™I @  x3ƒM?d ` ³ ¸Û… @  x4„M?d   ³*MÙ{ @  x5…M?d à ³Ú2# @  x6†M?d ³ z¯ê @  x7‡M?d ` ³šËª– @  x8ˆM?d   ³º>¨h @  x9‰M?d à ³JAR @  x:ŠM?d ³×òÐ @  x;‹M?d `³Ô_° @  x<ŒM?d  ³ôª²â @  x=M?d à³ÕH› @  x>ŽM?d ³ÔÄs @  x?M?d `³3ܼ! @  x@M?d  ³)¾ß @  xA‘M?d à³ãVD¦ @  xB’M?d ³]ˆø @  xC“M?d `³^ÒºØ @  xD”M?d  ³~'¸& @  xE•M?d ೎XB_ @  xF–M?d ³^η @  xG—M?d `³ΡËË @  xH˜M?d  ³îTÉ5 @  xI™M?d à³+3L @  xJšM?d ³ƒo“ @  xK›M?d `³€5ÑA @  xLœM?d  ³ ÀÓ¿ @  xMM?d à³P¿)Æ @  xNžM?d ³€÷¥. @  xOŸM?d `³EÅ‚ @  xP M?d  ³eõÇ| @  xQ¡M?d ೕŠ= @  xR¢M?d ³ŒÄÎ  @  xS£M?d `³žŒÆ @  xT¤M?d  ³¯kŽ8 @  xU¥M?d à³_tA @  xV¦M?d ³\ø© @  xW§M?d `³íýÕ @  xX¨M?d  ³?ÿ+ @  xY©M?d à³ÏgR @  xZªM?d ³R#¥“ @  x[«M?d `³Qyç_ @  x\¬M?d  ³qŒå¡ @  x]­M?d à³óØ @  x^®M?d ³Q»“0 @  x_¯M?d `³ýíð @  x`°M?d  ³8ï @  xa±M?d à³Èww @  xb²M?d ³üˆ™j @  xc³M?d `³ÿÒÛ¦ @  xd´M?d  ³ß'ÙX @  xeµM?d à³/X#! @  xf¶M?d ³ÿ¯É @  xg·M?d `³o¡ªµ @  xh¸M?d  ³OT¨K @  xi¹M?d ೿+R2 @  xjºM?d ³"oòó @  xk»M?d `³!5°? @  xl¼M?d  ³À²Á @  xm½M?d à³ñ¿H¸ @  xn¾M?d ³!÷ÄP @  xo¿M?d `³P±í @  xpÀM?d  ³4¥³ @  xqÁM?d à³ÄÚIj @  xrÂM?d ³Ý”ºe @  xsÃM?d `³ÞÎø© @  xtÄM?d  ³þ;úW @  xuÅM?d à³D. @  xvÆM?d ³Þ ŒÆ @  xwÇM?d `³N½‰º @  xxÈM?d  ³nH‹D @  xyÉM?d ೞ7q= @  xzÊM?d ³sÑü @  x{ËM?d `³)“0 @  x|ÌM?d  ³ ܑΠ@  x}ÍM?d à³Уk· @  x~ÎM?d ³ëç_ @  xÏM?d `³ü¯< @  x€ÐM?d  ³$ ­ÂuÐ ³ @  xÑM?d à³ÔvW» @  x‚ÒM?d 8 ³¥}‰Ý @  xƒÓM?d x ³¦'Ë @  x„ÔM?d ¸ ³†ÒÉï @  x…ÕM?d ø ³v­3– @  x†ÖM?d 8!³¦å¿~ @  x‡×M?d x!³6Tº @  xˆØM?d ¸!³¡¸ü @  x‰ÙM?d ø!³æÞB… @  xŠÚM?d 8"³{šâD @  x‹ÛM?d x"³xÀ ˆ @  xŒÜM?d ¸"³X5¢v @  xÝM?d ø"³¨JX @  xŽÞM?d 8#³xÔç @  xßM?d x#³½õ´K @  xàM?d ¸#³¶µ @  x‘áM?d ø#³mLÌ @  x’âM?d 8$³t1¿Ã @  x“ãM?d x$³wký @  x”äM?d ¸$³Wžÿñ @  x•åM?d ø$³§áˆ @  x–æM?d 8%³w©‰` @  x—çM?d x%³çŒ @  x˜èM?d ¸%³ÇíŽâ @  x™éM?d ø%³7’t› @  xšêM?d 8&³ªÖÔZ @  x›ëM?d x&³©Œ–– @  xœìM?d ¸&³‰y”h @  xíM?d ø&³yn @  xžîM?d 8'³©Nâù @  xŸïM?d x'³àœ9 @  x ðM?d ¸'³ÀýžÇ @  x¡ñM?d ø'³0‚d¾ @  x¢òM?d 8(³}è£ @  x£óM?d x(³'ªo @  x¤ôM?d ¸(³'Ò¨‘ @  x¥õM?d ø(³×­Rè @  x¦öM?d 8)³åÞ @  x§÷M?d x)³—TÛ| @  x¨øM?d ¸)³·¡Ù‚ @  x©ùM?d ø)³GÞ#û @  xªúM?d 8*³Úšƒ: @  x«ûM?d x*³ÙÀÁö @  x¬üM?d ¸*³ù5à @  x­ýM?d ø*³ J9q @  x®þM?d 8+³Ùµ™ @  x¯ÿM?d x+³<&ôŸ @  x°N?d ¸+³Óöa @  x±N?d ø+³ì¬  @  x²N?d 8,³õâÿ @  x³N?d x,³ö¸½Û @  x´N?d ¸,³ÖM¿% @  xµN?d ø,³&2E\ @  x¶N?d 8-³özÉ´ @  x·N?d x-³fËÌÈ @  x¸N?d ¸-³F>Î6 @  x¹ N?d ø-³¶A4O @  xº N?d 8.³+”Ž @  x» N?d x.³(_ÖB @  x¼ N?d ¸.³ªÔ¼ @  x½ N?d ø.³øÕ.Å @  x¾N?d 8/³(¢- @  x¿N?d x/³ÏÜÚ @  xÀN?d ¸/³ï)Ø @  xÁN?d ø/³V"ø @  xÂN?d 80³¡ˆžJ @  xÃN?d x0³¢Ò܆ @  xÄN?d ¸0³‚'Þx @  xÅN?d ø0³rX$ @  xÆN?d 81³¢¨é @  xÇN?d x1³2¡­• @  xÈN?d ¸1³T¯k @  xÉN?d ø1³â+U @  xÊN?d 82³oõÓ @  xËN?d x2³|5· @  xÌN?d ¸2³\Àµá @  xÍN?d ø2³¬¿O˜ @  xÎN?d 83³|÷Ãp @  xÏN?d x3³¹£Ü @  xÐ N?d ¸3³™õ¡" @  xÑ!N?d ø3³iŠ[[ @  xÒ"N?d 84³pĨT @  xÓ#N?d x4³sžê˜ @  xÔ$N?d ¸4³Skèf @  xÕ%N?d ø4³£ @  xÖ&N?d 85³s\ž÷ @  x×'N?d x5³ã훋 @  xØ(N?d ¸5³Ã™u @  xÙ)N?d ø5³3gc  @  xÚ*N?d 86³®#ÃÍ @  xÛ+N?d x6³­y @  xÜ,N?d ¸6³Œƒÿ @  xÝ-N?d ø6³}óy† @  xÞ.N?d 87³­»õn @  xß/N?d x7³äý‹® @  xà0N?d ¸7³Ä‰P @  xá1N?d ø7³4ws) @  xâ2N?d€ 88³tKã’ @  y3N?d x8³–Péw @  y4N?d ¸8³¶¥ë‰ @  y5N?d ø8³ƒ“ê @  y6N?d 89³SÛfõ @  y7N?d x9³ Ø<ó @  y8N?d ¸9³-->  @  y9N?d ø9³à› @  y:N?d 8:³ޤ;Ï @  y ;N?d x:³H·‚î @  y N?d 8;³< l @  y ?N?d x;³ÛˆK @  y@N?d ¸;³û}µ @  yAN?d ø;³h€V @  yBN?d 8<³q_sY @  yCN?d x<³·LÊx @  yDN?d ¸<³—¹È† @  yEN?d ø<³¢É @  yFN?d 8=³rÇEú @  yGN?d x=³,Äü @  yHN?d ¸=³ 1 @  yIN?d ø=³2ü¸ @  yJN?d 8>³¯¸À @  yKN?d x>³i«¡á @  yLN?d ¸>³I^£ @  yMN?d ø>³|h¢‹ @  yNN?d 8?³¬ .c @  yON?d x?³—s‰ @  yPN?duÐ@³7 ¸?³·†w @  yQN?d ø?³5ì¨$ @  y RN?d P@³ö@ @  y!SN?d @³’7¾ @  y"TN?d Ð@³¦©Ç @  y#UN?d A³wI3e @  y$VN?d PA³õØ$» @  y%WN?d A³ ¿k @  y&XN?d ÐA³‹.|C @  y'YN?d B³ª6n_ @  y(ZN?d PB³(§y @  y)[N?d B³LÐÕ€ @  y*\N?d ÐB³ÎAÂ^ @  y+]N?d C³©®Xü @  y,^N?d PC³+?O" @  y-_N?d C³/¿[4 @  y.`N?d ÐC³­.Lê @  y/aN?d D³¥3Ø @  y0bN?d PD³' $ @  y1cN?d D³C{ˆ @  y2dN?d ÐD³ÁêŸÙ @  y3eN?d E³¦{ @  y4fN?d PE³$”¥ @  y5gN?d E³Øó]ƒ @  y6hN?d ÐE³ZbJ] @  y7iN?d F³{zXA @  y8jN?d PF³ùëOŸ @  y9kN?d F³œãž @  y:lN?d ÐF³ ô@ @  y;mN?d G³xânâ @  y<nN?d PG³úsy< @  y=oN?d G³cDTö @  y>pN?d ÐG³áÕC( @  y?qN?d H³{Öb* @  y@rN?d PH³ùGuô @  yAsN?d H³0Ùõ @  yBtN?d ÐH³¡Î+ @  yCuN?d I³xNT‰ @  yDvN?d PI³úßCW @  yEwN?d I³¸ q @  yFxN?d ÐI³„)¯ @  yGyN?d J³¥1 ³ @  yHzN?d PJ³' m @  yI{N?d J³Cײl @  yJ|N?d ÐJ³ÁF¥² @  yK}N?d K³¦©? @  yL~N?d PK³$8(Î @  yMN?d K³Í.}[ @  yN€N?d ÐK³O¿j… @  yON?d L³G · @  yP‚N?d PL³Åi @  yQƒN?d L³¡ê®h @  yR„N?d ÐL³#{¹¶ @  yS…N?d M³D”# @  yT†N?d PM³Æ4Ê @  yU‡N?d M³:b{ì @  yVˆN?d ÐM³¸ól2 @  yW‰N?d N³™ë~. @  yXŠN?d PN³zið @  yY‹N?d N³ Åñ @  yZŒN?d ÐN³ýœÒ/ @  y[N?d O³šsH @  y\ŽN?d PO³â_S @  y]N?d O³Õr™ @  y^N?d ÐO³DeG @  y_‘N?d P³½arx @  y`’N?d PP³?ðe¦ @  ya“N?d P³[‡É§ @  yb”N?d ÐP³ÙÞy @  yc•N?d Q³¾ùDÛ @  yd–N?d PQ³ @  yjœN?d ÐR³ñµà @  ykN?d S³`/B @  ylžN?d PS³â8œ @  ymŸN?d S³æ,Š @  yn N?d ÐS³dž;T @  yo¡N?d T³l-Df @  yp¢N?d PT³î¼S¸ @  yq£N?d T³ŠËÿ¹ @  yr¤N?d ÐT³Zèg @  ys¥N?d U³oµrÅ @  yt¦N?d PU³í$e @  yu§N?d U³C*= @  yv¨N?d ÐU³“Ò=ã @  yw©N?d V³²Ê/ÿ @  yxªN?d PV³0[8! @  yy«N?d V³T,”  @  yz¬N?d ÐV³Ö½ƒþ @  y{­N?d W³±R\ @  y|®N?d PW³3 @  y}¯N?d W³ªô#H @  y~°N?d ÐW³(e4– @  y±N?d X³Q0%¥ @  y€²N?d PX³Ó¡2{ @  y³N?d X³·Öžz @  y‚´N?d ÐX³5G‰¤ @  yƒµN?d Y³R¨ @  y„¶N?d PY³Ð9Ø @  y…·N?d Y³,^Kþ @  y†¸N?d ÐY³®Ï\  @  y‡¹N?d Z³×N< @  yˆºN?d PZ³ FYâ @  y‰»N?d Z³i1õã @  yмN?d ÐZ³ë â= @  y‹½N?d [³ŒOxŸ @  yŒ¾N?d P[³ÞoA @  y¿N?d [³únF @  yŽÀN?d Ð[³xŸy˜ @  yÁN?d \³p,ª @  yÂN?d P\³ò½t @  y‘ÃN?d \³–ʽu @  y’ÄN?d Ð\³[ª« @  y“ÅN?d ]³s´0  @  y”ÆN?d P]³ñ%'× @  y•ÇN?d ]³ Bhñ @  y–ÈN?d Ð]³Ó/ @  y—ÉN?d ^³®Ëm3 @  y˜ÊN?d P^³,Zzí @  y™ËN?d ^³H-Öì @  yšÌN?d Ð^³ʼÁ2 @  y›ÍN?d _³­S[ @  yœÎN?d P_³/ÂLN @  yÏN?d _³¶õa„ @  yuÐ`³žÐN?d Ð_³4dvZ @  yŸÑN?d (`³ŠghO @  y ÒN?d h`³ö‘ @  y¡ÓN?d ¨`³lÓ @  y¢ÔN?d è`³îÄN @  y£ÕN?d (a³‰ÿ^ì @  y¤ÖN?d ha³ nI2 @  y¥×N?d ¨a³÷  @  y¦ØN?d èa³u˜Ê @  y§ÙN?d (b³T€Ö @  y¨ÚN?d hb³Ö @  y©ÛN?d ¨b³²f¸  @  yªÜN?d èb³0÷¯× @  y«ÝN?d (c³W5u @  y¬ÞN?d hc³Õ‰"« @  y­ßN?d ¨c³Ñ 6½ @  y®àN?d èc³S˜!c @  y¯áN?d (d³[+^Q @  y°âN?d hd³ÙºI @  y±ãN?d ¨d³½ÍåŽ @  y²äN?d èd³?\òP @  y³åN?d (e³X³hò @  y´æN?d he³Ú", @  yµçN?d ¨e³&E0  @  y¶èN?d èe³¤Ô'Ô @  y·éN?d (f³…Ì5È @  y¸êN?d hf³]" @  y¹ëN?d ¨f³c*Ž @  yºìN?d èf³á»™É @  y»íN?d (g³†Tk @  y¼îN?d hg³Åµ @  y½ïN?d ¨g³ò9 @  y¾ðN?d èg³c.¡ @  y¿ñN?d (h³…`£ @  yÀòN?d hh³ñ} @  yÁóN?d ¨h³c†´| @  yÂôN?d èh³á£¢ @  yÃõN?d (i³†ø9 @  yÄöN?d hi³i.Þ @  yÅ÷N?d ¨i³øaø @  yÆøN?d èi³zŸv& @  yÇùN?d (j³[‡d: @  yÈúN?d hj³Ùsä @  yÉûN?d ¨j³½aßå @  yÊüN?d èj³?ðÈ; @  yËýN?d (k³XR™ @  yÌþN?d hk³ÚŽEG @  yÍÿN?d ¨k³LÿEÞ @  yÎO?d èk³ÎnR @  yÏO?d (l³ÆÝ-2 @  yÐO?d hl³DL:ì @  yÑO?d ¨l³ ;–í @  yÒO?d èl³¢ª3 @  yÓO?d (m³ÅE‘ @  yÔO?d hm³GÔ O @  yÕO?d ¨m³»³Ci @  yÖO?d èm³9"T· @  y× O?d (n³:F« @  yØ O?d hn³š«Qu @  yÙ O?d ¨n³þÜýt @  yÚ O?d èn³|Mêª @  yÛ O?d (o³¢p @  yÜO?d ho³™3gÖ @  yÝO?d ¨o³J @  yÞO?d èo³‚•] @  yßO?d (p³<°Jý @  yàO?d hp³¾!]# @  yáO?d ¨p³ÚVñ" @  yâO?d€ èp³™€ü @  zO?d (q³.Ãw @  zO?d hq³¿Ô© @  zO?d ¨q³¤‘`b @  zO?d èq³&w¼ @  zO?d (r³ɪ:Ú @  zO?d hr³K;- @  zO?d ¨r³áþÞ @  zO?d èr³coÉ¡ @  z O?d (s³Áɨî @  z O?d hs³CX¿0 @  z O?d ¨s³‚‘PË @  z  O?d ès³G @  z !O?d (t³k Y½ @  z"O?d ht³é1Nc @  z#O?d ¨t³îUƒø @  z$O?d èt³lÄ”& @  z%O?d (u³Îbõi @  z&O?d hu³Lóâ· @  z'O?d ¨u³uÝV| @  z(O?d èu³÷LA¢ @  z)O?d (v³æ Ä @  z*O?d hv³šw @  z+O?d ¨v³0²èa @  z,O?d èv³²#ÿ¿ @  z-O?d (w³…žð @  z.O?d hw³’‰. @  z/O?d ¨w³Îj_  @  z0O?d èw³LûH× @  z1O?d (x³ ê)m @  z2O?d hx³ˆ{>³ @  z3O?d ¨x³žÔ˜ @  z 4O?d èx³ˆÃF @  z!5O?d (y³¾.¢  @  z"6O?d hy³<¿µ× @  z#7O?d ¨y³‘ @  z$8O?d èy³‡Â @  z%9O?d (z³hª[¤ @  z&:O?d hz³ê;Lz @  z';O?d ¨z³@þ¿ @  z(O?d h{³âXÞN @  z+?O?d ¨{³ÓÁ$¤ @  z,@O?d è{³QP3z @  z-AO?d (|³:ð-Ò @  z.BO?d h|³¸a:  @  z/CO?d ¨|³¿÷— @  z0DO?d è|³=”àI @  z1EO?d (}³Ÿ2 @  z2FO?d h}³£–Ø @  z3GO?d ¨}³$" @  z4HO?d è}³¦5Í @  z5IO?d (~³I¶x« @  z6JO?d h~³Ë'ou @  z7KO?d ¨~³a✠@  z8LO?d è~³ãs‹Ð @  z9MO?d (³AÕêŸ @  z:NO?d h³ÃDýA @  z;OO?d ¨³uЀ³'Ÿ:+f @  z<PO?d 賫<¸ @  z=QO?d @€³û3k @  z>RO?d €€³!1• @  z?SO?d À€³;È  @  z@TO?d ³ëGDä @  zAUO?d @³8¾ @  zBVO?d €³;ͼc @  zCWO?d À³ ‡ˆ @  zDXO?d ‚³=ýI @  zEYO?d @‚³ͼG0 @  zFZO?d €‚³íIEÎ @  zG[O?d À‚³å裕 @  zH\O?d ƒ³5 /} @  zI]O?d @ƒ³ÅßÕ @  zJ^O?d €ƒ³å*×ú @  zK_O?d Àƒ³†‡-! @  zL`O?d „³ŸÉÞ. @  zMaO?d @„³o¶$W @  zNbO?d €„³OC&© @  zOcO?d À„³êCþ @  zPdO?d …³: rú @  zQeO?d @…³Êtˆƒ @  zRfO?d €…³êŠ} @  zSgO?d À…³qË+– @  zThO?d †³ì‹W @  zUiO?d @†³ðq. @  zVjO?d €†³<sÐ @  zWkO?d À†³4¤•‹ @  zXlO?d ‡³äìc @  zYmO?d @‡³“ã @  zZnO?d €‡³4fáä @  z[oO?d À‡³Ê|"ã @  z\pO?d ˆ³þƒ®þ @  z]qO?d @ˆ³üT‡ @  z^rO?d €ˆ³. Vy @  z_sO?d Àˆ³š©r @  z`tO?d ‰³JG%š @  zauO?d @‰³º8ßã @  zbvO?d €‰³šÍÝ @  zcwO?d À‰³‡|ö @  zdxO?d гœÃÜ7 @  zeyO?d @гl¼&N @  zfzO?d €Š³LI$° @  zg{O?d ÀгDèÂë @  zh|O?d ‹³” N @  zi}O?d @‹³dß´z @  zj~O?d €‹³D*¶„ @  zkO?d À‹³Ê Ü @  zl€O?d Œ³Ó_þÓ @  zmO?d @Œ³# ª @  zn‚O?d €Œ³ÕT @  zoƒO?d ÀŒ³¦ÕÞï @  zp„O?d ³vR @  zq…O?d @³†â¨~ @  zr†O?d €³¦ª€ @  zs‡O?d À³=] k @  ztˆO?d ޳ «ª @  zu‰O?d @޳PfQÓ @  zvŠO?d €Ž³p“S- @  zw‹O?d À޳x2µv @  zxŒO?d ³¨z9ž @  zyO?d @³XÃç @  zzŽO?d €³xðÁ @  z{O?d À³†ê @  z|O?d ³84¾¬ @  z}‘O?d @³ÈKDÕ @  z~’O?d €³è¾F+ @  z“O?d À³éƒ @  z€”O?d ‘³Á¡k @  z•O?d @‘³1Þù @  z‚–O?d €‘³+ûì @  zƒ—O?d À‘³ŠaZ @  z„˜O?d ’³%úÆ @  z…™O?d @’³çZ¿ @  z†šO?d €’³ǯA @  z‡›O?d À’³Ïä @  zˆœO?d “³Fhò @  z‰O?d @“³ï9’‹ @  zŠžO?d €“³ÏÌu @  z‹ŸO?d À“³¬aj® @  zŒ O?d ”³µ/™¡ @  z¡O?d @”³EPcØ @  zŽ¢O?d €”³e¥a& @  z£O?d À”³À¥¹ @  z¤O?d •³í5u @  z‘¥O?d @•³à’Ï  @  z’¦O?d €•³ÀgÍò @  z“§O?d À•³[-l @  z”¨O?d –³ÆiÌØ @  z•©O?d @–³66¡ @  z–ªO?d €–³ã4_ @  z—«O?d À–³BÒ @  z˜¬O?d —³Î ^ì @  z™­O?d @—³>u¤• @  zš®O?d €—³€¦k @  z›¯O?d À—³àšel @  zœ°O?d ˜³Ôeéq @  z±O?d @˜³$ @  zž²O?d €˜³ïö @  zŸ³O?d À˜³°éîý @  z ´O?d ™³`¡b @  z¡µO?d @™³Þ˜l @  z¢¶O?d €™³°+š’ @  z£·O?d À™³+a;y @  z¤¸O?d š³¶%›¸ @  z¥¹O?d @š³FZaÁ @  z¦ºO?d €š³f¯c? @  z§»O?d Àš³n…d @  z¨¼O?d ›³¾F Œ @  z©½O?d @›³N9óõ @  zª¾O?d €›³nÌñ  @  z«¿O?d À›³ý1Á @  z¬ÀO?d œ³äíÎ @  z­ÁO?d @œ³· @  z®ÂO?d €œ³4õI @  z¯ÃO?d Àœ³‘õÍò @  z°ÄO?d ³A½A @  z±ÅO?d @³±Â»c @  z²ÆO?d €³‘7¹ @  z³ÇO?d À³ }v @  z´ÈO?d ž³—9¸· @  zµÉO?d @ž³gFBÎ @  z¶ÊO?d €ž³G³@0 @  z·ËO?d Àž³O¦k @  z¸ÌO?d Ÿ³ŸZ*ƒ @  z¹ÍO?d @Ÿ³o%Ðú @  zºÎO?d €Ÿ³OÐÒ @  z»ÏOuР³?d ÀŸ³±Ê @  z¼ÐO?d  ³ù° @  z½ ÑO?d X ³ yéÉ @  z¾ ÒO?d ˜ ³)Œë7 @  z¿ ÓO?d Ø ³3® @  zÀ ÔO?d ¡³ãÅžF @  zÁ ÕO?d X¡³ºd? @  z ÖO?d ˜¡³3OfÁ @  zà ×O?d Ø¡³¨Ç* @  zÄ ØO?d ¢³5Agë @  zÅ ÙO?d X¢³Å>’ @  zÆ ÚO?d ˜¢³åËŸl @  zÇ ÛO?d Ø¢³íjy7 @  zÈ ÜO?d £³="õß @  zÉ ÝO?d X£³Í]¦ @  zÊ ÞO?d ˜£³í¨ X @  zË ßO?d Ø£³Ž÷ƒ @  zÌ àO?d ¤³—KŒ @  zÍ áO?d X¤³g4þõ @  zÎ âO?d ˜¤³GÁü  @  zÏ ãO?d ؤ³âÁ$° @  zÐ äO?d ¥³2‰¨X @  zÑ åO?d X¥³ÂöR! @  zÒ æO?d ˜¥³âPß @  zÓ çO?d Ø¥³yIñ4 @  zÔ èO?d ¦³ä Qõ @  zÕ éO?d X¦³r«Œ @  zÖ êO?d ˜¦³4‡©r @  z× ëO?d ئ³<&O) @  zØ ìO?d §³ìnÃÁ @  zÙ íO?d X§³9¸ @  zÚ îO?d ˜§³<ä;F @  zÛ ïO?d ا³ÂþøA @  zÜ ðO?d ¨³öt\ @  zÝ ñO?d X¨³~Ž% @  zÞ òO?d ˜¨³&‹ŒÛ @  zß óO?d ب³’sÐ @  zà ôO?d ©³BÅÿ8 @  zá õO?d X©³²ºA @  zâ öO?d€ ˜©³æŒ @  { ÷O?d Ø©³œ‡òÛ @  { øO?d ª³ÃR @  { ùO?d Xª³4õSŽ @  { úO?d ˜ª³Qp @  { ûO?d ت³ÒèQ @  { üO?d «³[d¹ @  { ýO?d X«³<–Áº @  { þO?d ˜«³cÃD @  { ÿO?d Ø«³ÑóðM @  { P?d ¬³ȽB @  { P?d X¬³ý‹Ö @  { P?d ˜¬³Ý~( @  { P?d ج³m¹  @  { P?d ­³Ë%5á @  { P?d X­³XI® @  { P?d ˜­³x¼¬ü @  { P?d Ø­³&¿öú @  { P?d ®³»ûV; @  {  P?d X®³ŽÍW¯ @  {  P?d ˜®³®8UQ @  {  P?d Ø®³h+ìp @  {  P?d ¯³¸c`˜ @  {  P?d X¯³†®Å› @  { P?d ˜¯³¦[Çe @  { P?d د³ÿ @  { P?d °³#ÖC= @  { P?d X°³àB© @  { P?d ˜°³6@W @  { P?d ذ³ðùv @  { P?d ±³ Nuž @  { P?d X±³¢$ÉÍ @  { P?d ˜±³‚ÑË3 @  {! P?d ر³ÜÒ‘5 @  {" P?d ²³A–1ô @  {# P?d X²³t 0` @  {$ P?d ˜²³TU2ž @  {% P?d ز³’F‹¿ @  {& P?d ³³BW @  {' P?d X³³|âT @  {( P?d ˜³³\6 ª @  {) P?d س³úÒ¡œ @  {*  P?d ´³ãœR“ @  {+ !P?d X´³ÖªS @  {, "P?d ˜´³ö_Qù @  {- #P?d Ø´³0LèØ @  {. $P?d µ³àd0 @  {/ %P?d Xµ³shÿÓ @  {0 &P?d ˜µ³Sý- @  {1 'P?d ص³ ž§+ @  {2 (P?d ¶³Úê @  {3 )P?d X¶³¥ì~ @  {4 *P?d ˜¶³…€ @  {5 +P?d ض³C ½¡ @  {6 ,P?d ·³“B1I @  {7 -P?d X·³­”J @  {8 .P?d ˜·³z–´ @  {9 /P?d Ø·³¶)®^ @  {: 0P?d ¸³‚Ö"C @  {; 1P?d X¸³·à#× @  {< 2P?d ˜¸³—!) @  {= 3P?d ظ³Q˜ @  {> 4P?d ¹³Nà @  {? 5P?d X¹³­#®! @  {@ 6P?d ˜¹³Ö¬ß @  {A 7P?d ع³ÓÕöÙ @  {B 8P?d º³N‘V @  {C 9P?d Xº³{§WŒ @  {D :P?d ˜º³[RUr @  {E ;P?d غ³AìS @  {F P?d ˜»³S1ÇF @  {I ?P?d Ø»³…Óa @  {J @P?d ¼³Ë n @  {K AP?d X¼³)ý!ú @  {L BP?d ˜¼³ # @  {M CP?d ؼ³Ïš% @  {N DP?d ½³SÍ @  {O EP?d X½³Œ?. @  {P FP?d ˜½³¬ÊÐ @  {Q GP?d ؽ³òÉÕÖ @  {R HP?d ¾³ou @  {S IP?d X¾³Z»tƒ @  {T JP?d ˜¾³zNv} @  {U KP?d ؾ³¼]Ï\ @  {V LP?d ¿³lC´ @  {W MP?d X¿³RØæ· @  {X NP?d ˜¿³r-äI @uÐÀ³  {Y OP?d Ø¿³p¹v @  {ZPP?d 0À³IQ$ @  {[QP?d pÀ³!P° @  {\RP?d °À³ŠRN @  {]SP?d ðÀ³Ç™ëo @  {^TP?d 0Á³Ñg‡ @  {_UP?d pÁ³•»ÛÔ @  {`VP?d °Á³µNÙ* @  {aWP?d ðÁ³ëMƒ, @  {bXP?d 0³v #í @  {cYP?d p³C?"y @  {dZP?d °Â³cÊ ‡ @  {e[P?d ð³¥Ù™¦ @  {f\P?d 0óu‘N @  {g]P?d póK\°M @  {h^P?d °Ã³k©²³ @  {i_P?d ðóÍM³… @  {j`P?d 0ijÔ@Š @  {kaP?d pijá5A @  {lbP?d °Ä³ÁÀCà @  {mcP?d ðijÓúÁ @  {ndP?d 0ų×›v) @  {oeP?d pųD÷íÊ @  {pfP?d °Å³dï4 @  {qgP?d ðų:µ2 @  {rhP?d 0Ƴ§Eó @  {siP?d pƳ’sg @  {tjP?d °Æ³²†™ @  {ukP?d ðƳt•¯¸ @  {vlP?d 0dz¤Ý#P @  {wmP?d pdzš†S @  {xnP?d °Ç³ºå„­ @  {yoP?d ðdz¶¼G @  {zpP?d 0ȳµI0Z @  {{qP?d pȳ€1Î @  {|rP?d °È³ Š30 @  {}sP?d ðȳf™Š @  {~tP?d 0ɳ¶Ñù @  {uP?d pɳyêŒ  @  {€vP?d °É³YŽ÷ @  {wP?d ðɳÔñ @  {‚xP?d 0ʳšXt0 @  {ƒyP?d pʳ¯nu¤ @  {„zP?d °Ê³›wZ @  {…{P?d ðʳIˆÎ{ @  {†|P?d 0˳™ÀB“ @  {‡}P?d p˳§ ç @  {ˆ~P?d °Ë³‡øån @  {‰P?d ð˳ÌŠ¥Û @  {Š€P?d 0̳ÕÄVÔ @  {‹P?d p̳àòW@ @  {Œ‚P?d °Ì³ÀU¾ @  {ƒP?d ð̳ìŸ @  {Ž„P?d 0ͳÖ\`w @  {…P?d pͳE0û” @  {†P?d °Í³eÅùj @  {‘‡P?d ðͳ;Æ£l @  {’ˆP?d 0㦂­ @  {“‰P?d pγ“´9 @  {”ŠP?d °Î³³AÇ @  {•‹P?d ðγuR¹æ @  {–ŒP?d 0ϳ¥5 @  {—P?d pϳ›×  @  {˜ŽP?d °Ï³»"’ó @  {™P?d ðϳ€qª @  {šP?d 0г>¯« @  {›‘P?d pг ™? @  {œ’P?d °Ð³+lÁ @  {“P?d ðгí¬à @  {ž”P?d 0ѳ=7  @  {Ÿ•P?d pѳ¿]œ[ @  { –P?d °Ñ³Ÿ¨ž¥ @  {¡—P?d ðѳÁ«Ä£ @  {¢˜P?d 0Ò³\ïdb @  {£™P?d pÒ³iÙeö @  {¤šP?d °Ò³I,g @  {¥›P?d ðÒ³?Þ) @  {¦œP?d 0Ó³_wRÁ @  {§P?d pÓ³aº÷ @  {¨žP?d °Ó³AOõ< @  {©ŸP?d ðÓ³ç«ô  @  {ª P?d 0Ô³þå @  {«¡P?d pÔ³ËÓ‘ @  {¬¢P?d °Ô³ë&o @  {­£P?d ðÔ³-5½N @  {®¤P?d 0Õ³ý}1¦ @  {¯¥P?d pÕ³nªE @  {°¦P?d °Õ³N䨻 @  {±§P?d ðÕ³çò½ @  {²¨P?d 0Ö³£R| @  {³©P?d pÖ³¸•Sè @  {´ªP?d °Ö³˜`Q @  {µ«P?d ðÖ³^sè7 @  {¶¬P?d 0׳Ž;dß @  {·­P?d p׳°öÁÜ @  {¸®P?d °×³Ã" @  {¹¯P?d ð׳«PûÈ @  {º°P?d 0سŸ¯wÕ @  {»±P?d pسª™vA @  {¼²P?d °Ø³Šlt¿ @  {½³P?d ðسLÍž @  {¾´P?d 0Ù³œ7Av @  {¿µP?d pÙ³°Zû· @  {À¶P?d °Ù³¯ùI @  {Á·P?d ðÙ³ά£O @  {¸P?d 0Ú³SèŽ @  {ùP?d pÚ³fÞ @  {ĺP?d °Ú³F+ä @  {Å»P?d ðÚ³€8¹Å @  {ƼP?d 0Û³i·éø @  {Ç ½P?d pÛ³WzLû @  {È ¾P?d °Û³wN @  {É ¿P?d ðÛ³!;Z" @  {Ê ÀP?d 0ܳ8u©- @  {Ë ÁP?d pܳ C¨¹ @  {Ì ÂP?d °Ü³-¶ªG @  {Í ÃP?d ðܳë¥f @  {Î ÄP?d 0ݳ;ퟎ @  {Ï ÅP?d pݳ¨m @  {Ð ÆP?d °Ý³ˆt“ @  {Ñ ÇP?d ðݳÖw\• @  {Ò ÈP?d 0Þ³K3üT @  {Ó ÉP?d pÞ³~ýÀ @  {Ô ÊP?d °Þ³^ðÿ> @  {Õ ËP?d ðÞ³˜ãF @  {Ö ÌP?d 0ß³H«Ê÷ @  {× ÍP?d pß³vfoô @  {Ø ÎP?d uÐà³/°ß³V“m  @  {Ù ÏP?d ðß³T‰5 @  {ÚÐP?d Hà³M£×à @  {ÛÑP?d ˆà³ÚñÃw @  {ÜÒP?d Èà³X`Ô© @  {ÝÓP?d á³̪ö¾ @  {ÞÔP?d Há³N;á` @  {ßÕP?d ˆá³n5H @  {àÖP?d Èá³ì¤_Í @  {á×P?d â³­r²Ô @  {âØP?d€ H⳩µ ³ @  |ÙP?d ˆâ³ߦQ. @  |ÚP?d Èâ³]7Fð @  |ÛP?d ã³ ´Ÿ  @  |ÜP?d H㳎%ˆÔ @  |ÝP?d ˆã³Ü>g @  |ÞP?d Èã³^¯pS @  |ßP?d ä³­&ÊÎ @  |àP?d Hä³/·Ý @  | áP?d ˆä³}¬2I @  | âP?d Èä³ÿ=%— @  | ãP?d å³®¾üm @  | äP?d Hå³,/ë³ @  | åP?d ˆå³~4ê @  |æP?d Èå³ü¥4 @  |çP?d æ³Þ`Ÿ· @  |èP?d Hæ³\ñˆi @  |éP?d ˆæ³êg0 @  |êP?d Èæ³Œ{pî @  |ëP?d ç³Ýø© @  |ìP?d Hç³_i¾Ê @  |íP?d ˆç³ rQ“ @  |îP?d Èç³ãFM @  |ïP?d è³Ìlº @  |ðP?d Hè³Ný­À @  |ñP?d ˆè³æB™ @  |òP?d È賞wUG @  |óP?d é³ÏôŒ½ @  |ôP?d Hé³Me›c @  |õP?d ˆé³~t: @  |öP?d Èé³ïcä @  |÷P?d ê³®,È× @  | øP?d Hê³,½ß  @  |!ùP?d ˆê³~¦0P @  |"úP?d Èê³ü7'Ž @  |#ûP?d ë³­´þt @  |$üP?d Hë³/%éª @  |%ýP?d ˆë³}>ó @  |&þP?d Èë³ÿ¯- @  |'ÿP?d 쳞׿? @  |(Q?d Hì³F¨á @  |)Q?d ˆì³N]G¸ @  |*Q?d Èì³ÌÌPf @  |+Q?d í³O‰œ @  |,Q?d Hí³ÞžB @  |-Q?d ˆí³MÅq @  |.Q?d Èí³ÏTfÅ @  |/Q?d î³í‘êF @  |0Q?d Hî³oý˜ @  |1 Q?d ˆî³=Á @  |2 Q?d Èî³¿Š @  |3 Q?d ï³î Üå @  |4 Q?d Hï³l˜Ë; @  |5 Q?d ˆï³>ƒ$b @  |6Q?d Èï³¼3¼ @  |7Q?d ð³u¼ÿ@ @  |8Q?d Hð³÷-èž @  |9Q?d ˆð³¥6Ç @  |:Q?d Èð³'§ @  |;Q?d ñ³v$Éã @  |<Q?d Hñ³ôµÞ= @  |=Q?d ˆñ³¦®1d @  |>Q?d Èñ³$?&º @  |?Q?d ò³¹û‹ @  |@Q?d Hò³;jœÅ @  |AQ?d ˆò³iqsœ @  |BQ?d Èò³ëàdB @  |CQ?d ó³ºc½¸ @  |DQ?d Hó³8òªf @  |EQ?d ˆó³jéE? @  |FQ?d Èó³èxRá @  |GQ?d ô³ñè| @  |H Q?d Hô³™`ÿ¢ @  |I!Q?d ˆô³Ë{û @  |J"Q?d Èô³Iê% @  |K#Q?d õ³iÞß @  |L$Q?d Hõ³šøÉ @  |M%Q?d ˆõ³Èã&X @  |N&Q?d Èõ³Jr1† @  |O'Q?d ö³h·½ @  |P(Q?d Hö³ê&ªÛ @  |Q)Q?d ˆö³¸=E‚ @  |R*Q?d Èö³:¬R\ @  |S+Q?d ÷³k/‹¦ @  |T,Q?d H÷³龜x @  |U-Q?d ˆ÷³»¥s! @  |V.Q?d È÷³94dÿ @  |W/Q?d ø³z»˜¬ @  |X0Q?d Hø³ø*r @  |Y1Q?d ˆø³ª1`+ @  |Z2Q?d Èø³( wõ @  |[3Q?d ù³y#® @  |\4Q?d Hù³û²¹Ñ @  |]5Q?d ˆù³©©Vˆ @  |^6Q?d Èù³+8AV @  |_7Q?d ú³ûêe @  |`8Q?d Hú³šjý» @  |a9Q?d ˆú³Èqâ @  |b:Q?d Èú³Jà< @  |c;Q?d û³cÜÆ @  |dQ?d Èû³Ix3Ÿ @  |g?Q?d ü³J¡œ @  |h@Q?d Hü³È0‹Í @  |iAQ?d ˆü³š+d” @  |jBQ?d Èü³ºsJ @  |kCQ?d ý³I9ª° @  |lDQ?d Hý³˨½n @  |mEQ?d ˆý³™³R7 @  |nFQ?d Èý³"Eé @  |oGQ?d þ³9çÉj @  |pHQ?d Hþ³»vÞ´ @  |qIQ?d ˆþ³ém1í @  |rJQ?d Èþ³kü&3 @  |sKQ?d ÿ³:ÿÉ @  |tLQ?d Hÿ³¸îè @  |uMQ?d ˆÿ³êõN @  |vuдNQ?d Èÿ³äcì @  |w€OQ?d ´WR< @  |x€PQ?d `´ÕÃâ @  |y€QQ?d  ´‡Øù» @  |z€RQ?d à´Iîe @  |{€SQ?d ´TÊ7Ÿ @  ||€TQ?d `´Ö[ A @  |}€UQ?d  ´„@Ï @  |~€VQ?d à´ÑØÆ @  |€WQ?d ´xCEV @  |€€XQ?d `´úÒRˆ @  |€YQ?d  ´¨É½Ñ @  |‚€ZQ?d à´*Xª @  |ƒ€[Q?d ´{Ûsõ @  |„€\Q?d `´ùJd+ @  |…€]Q?d  ´«Q‹r @  |†€^Q?d à´)Àœ¬ @  |‡€_Q?d ´ÚI&1 @  |ˆ€`Q?d `´XØ1ï @  |‰€aQ?d  ´ ÃÞ¶ @  |Š€bQ?d à´ˆRÉh @  |‹€cQ?d ´ÙÑ’ @  |Œ€dQ?d `´[@L @  |€eQ?d  ´ [è @  |Ž€fQ?d à´‹ÊÿË @  |€gQ?d ´©sH @  |€hQ?d `´+žd– @  |‘€iQ?d  ´y…‹Ï @  |’€jQ?d à´ûœ @  |“€kQ?d ´ª—Eë @  |”€lQ?d `´(R5 @  |•€mQ?d  ´z½l @  |–€nQ?d à´øŒª² @  |—€oQ?d ´»Vá @  |˜€pQ?d `´9’A? @  |™€qQ?d  ´k‰®f @  |š€rQ?d à´é¹¸ @  |›€sQ?d ´¸›`B @  |œ€tQ?d ` ´: wœ @  |€uQ?d   ´h˜Å @  |ž€vQ?d à ´ê€ @  |Ÿ€wQ?d ´ÙC$( @  | €xQ?d ` ´[Ò3ö @  |¡€yQ?d   ´ Éܯ @  |¢€zQ?d à ´‹XËq @  |£€{Q?d ´ÚÛ‹ @  |¤€|Q?d ` ´XJU @  |¥€}Q?d   ´ Qê  @  |¦€~Q?d à ´ˆÀýÒ @  |§€Q?d ´–ßÌ @  |¨€€Q?d ` ´N @  |©€Q?d   ´FUþK @  |ª€‚Q?d à ´ÄÄé• @  |«€ƒQ?d ´•G0o @  |¬€„Q?d ` ´Ö'± @  |­€…Q?d   ´EÍÈè @  |®€†Q?d à ´Ç\ß6 @  |¯€‡Q?d ´å™Sµ @  |°€ˆQ?d `´gDk @  |±€‰Q?d  ´5«2 @  |²€ŠQ?d à´·‚¼ì @  |³€‹Q?d ´æe @  |´€ŒQ?d `´drÈ @  |µ€Q?d  ´6‹‘ @  |¶€ŽQ?d à´´ŠO @  |·€Q?d ´}´F³ @  |¸€Q?d `´ÿ%Qm @  |¹€‘Q?d  ´­>¾4 @  |º€’Q?d à´/¯©ê @  |»€“Q?d ´~,p @  |¼€”Q?d `´ü½gÎ @  |½€•Q?d  ´®¦ˆ— @  |¾€–Q?d à´,7ŸI @  |¿€—Q?d ´±ó2è @  |À€˜Q?d `´3b%6 @  |Á€™Q?d  ´ayÊo @  |€šQ?d à´ãèݱ @  |À›Q?d ´²kK @  |Ä€œQ?d `´0ú• @  |Å€Q?d  ´báüÌ @  |Æ€žQ?d à´àpë @  |Ç€ŸQ?d ´ùQ @  |È€ Q?d `´‘hFQ @  |É€¡Q?d  ´Ãs© @  |Ê€¢Q?d à´Aâ¾Ö @  |Ë€£Q?d ´ag, @  |Ì€¤Q?d `´’ðpò @  |Í€¥Q?d  ´À럫 @  |΀¦Q?d à´Bzˆu @  |Ï€§Q?d ´`¿ö @  |Ѐ¨Q?d `´â.( @  |Ñ€©Q?d  ´°5üq @  |Ò€ªQ?d à´2¤ë¯ @  |Ó€«Q?d ´c'2U @  |Ô€¬Q?d `´á¶%‹ @  |Õ€­Q?d  ´³­ÊÒ @  |Ö€®Q?d à´1<Ý  @  |×€¯Q?d ´r³!_ @  |Ø€°Q?d `´ð"6 @  |Ù€±Q?d  ´¢9ÙØ @  |Ú€²Q?d à´ ¨Î @  |Û€³Q?d ´q+ü @  |Ü€´Q?d `´óº" @  |Ý€µQ?d  ´¡¡ï{ @  |Þ€¶Q?d à´#0ø¥ @  |߀·Q?d ´óS– @  |à€¸Q?d `´’bDH @  |္Q?d  ´Ày« @  |›Q?d€ à´6+ i @  }€»Q?d ´†é1º @  }€¼Q?d `´x&d @  }€½Q?d  ´“*2Ð @  }€¾Q?d à´»% @  }€¿Q?d ´ÜÐÕø @  }€ÀQ?d `´^AÂ& @  }€ÁQ?d  ´Âèr @  }€ÂQ?d à´@yeÛ @  } €ÃQ?d ´Ô³GÌ @  } €ÄQ?d `´V"P @  } €ÅQ?d  ´ÁpD¦ @  } €ÆQ?d à´CáSx @  } €ÇQ?d ´7¾a @  }€ÈQ?d `´€¦©¿ @  }€ÉQ?d  ´±®'| @  }€ÊQ?d à´3?0¢ @  }€ËQ?d ´§õµ @  }€ÌQ?d `´%dk @  }€ÍQ?d  ´²6ßuÐ ´ @  }€ÎQ?d à´M'u} @  }ÏQ?d 8 ´…î„/ @  }ÐQ?d x ´“ñ @  }ÑQ?d ¸ ´›Ö#Ò @  }ÒQ?d ø ´G4  @  }ÓQ?d 8!´ @  }ÔQ?d x!´Å @  }ÕQ?d ¸!´˜Nq @  }ÖQ?d ø!´ß¯ @  }×Q?d 8"´[ ï¶ @  }ØQ?d x"´Ù˜øh @  }ÙQ?d ¸"´ù–Q @  } ÚQ?d ø"´{FÅ @  }!ÛQ?d 8#´ïÍdÒ @  }"ÜQ?d x#´m\s  @  }#ÝQ?d ¸#´úg¸ @  }$ÞQ?d ø#´xŸpf @  }%ßQ?d 8$´E¤• @  }&àQ?d x$´Ç5‚_ @  }'áQ?d ¸$´[œ2| @  }(âQ?d ø$´Ù %¢ @  })ãQ?d 8%´Mǵ @  }*äQ?d x%´ÏVk @  }+åQ?d ¸%´Xß @  },æQ?d ø%´Ú• @  }-çQ?d 8&´›Cþ @  }.èQ?d x&´ÒéÆ @  }/éQ?d ¸&´(Úg @  }0êQ?d ø&´ªKpÛ @  }1ëQ?d 8'´>RÌ @  }2ìQ?d x'´¼E @  }3íQ?d ¸'´+BQ¦ @  }4îQ?d ø'´©ÓFx @  }5ïQ?d 8(´$îåQ @  }6ðQ?d x(´¦ò @  }7ñQ?d ¸(´:ÖB¬ @  }8òQ?d ø(´¸GUr @  }9óQ?d 8)´,we @  }:ôQ?d x)´®`» @  };õQ?d ¸)´9Nt @  }<öQ?d ø)´»ßcÑ @  }=÷Q?d 8*´ú ŽÈ @  }>øQ?d x*´x˜™ @  }?ùQ?d ¸*´ö‘6÷ @  }@úQ?d ø*´t!) @  }AûQ?d 8+´àÊ> @  }BüQ?d x+´b[à @  }CýQ?d ¸+´õ T @  }DþQ?d ø+´w˜Š @  }EÿQ?d 8,´jpÓÇ @  }FR?d x,´èáÄ @  }GR?d ¸,´tHt: @  }HR?d ø,´öÙcä @  }IR?d 8-´bAó @  }JR?d x-´à‚V- @  }KR?d ¸-´wÐB™ @  }LR?d ø-´õAUG @  }MR?d 8.´´—¸^ @  }NR?d x.´6¯€ @  }O R?d ¸.´!C @  }P R?d ø.´…Ÿ6 @  }Q R?d 8/´UŠ @  }R R?d x/´“ÄT @  }S R?d ¸/´–à @  }TR?d ø/´†> @  }UR?d 80´“¸ @  }VR?d x0´Š„f @  }WR?d ¸0´Ÿ#4E @  }XR?d ø0´²#› @  }YR?d 81´‰xŒ @  }ZR?d x1´ éR @  }[R?d ¸1´œ»æ @  }\R?d ø1´*8 @  }]R?d 82´_üø! @  }^R?d x2´Ýmïÿ @  }_R?d ¸2´ýcFŒ @  }`R?d ø2´òQR @  }aR?d 83´ë8sE @  }bR?d x3´i©d› @  }cR?d ¸3´þûp/ @  }dR?d ø3´|jgñ @  }eR?d 84´AQ‚ @  }f R?d x4´ÃÀ•È @  }g!R?d ¸4´_i%ë @  }h"R?d ø4´Ýø25 @  }i#R?d 85´I2" @  }j$R?d x5´Ë£ü @  }k%R?d ¸5´\ñH @  }l&R?d ø5´Þ`– @  }m'R?d 86´Ÿ¶é @  }n(R?d x6´'þQ @  }o)R?d ¸6´,/p’ @  }p*R?d ø6´®¾gL @  }q+R?d 87´:tE[ @  }r,R?d x7´¸åR… @  }s-R?d ¸7´/·F1 @  }t.R?d ø7´­&Qï @  }u/R?d 88´ òÆ @  }v0R?d x8´¢Šå @  }w1R?d ¸8´>#U; @  }x2R?d ø8´¼²Bå @  }y3R?d 89´(x`ò @  }z4R?d x9´ªéw, @  }{5R?d ¸9´=»c˜ @  }|6R?d ø9´¿*tF @  }}7R?d 8:´þü™_ @  }~8R?d x:´|mŽ @  }9R?d ¸:´2Q @  }€:R?d ø:´“£ @  };R?d 8;´i$˜ @  }‚R?d ø;´;0, @  }…?R?d 8<´]PÀÚ @  }†@R?d x<´ßÁ× @  }‡AR?d ¸<´Chg' @  }ˆBR?d ø<´Áùpù @  }‰CR?d 8=´U3Rî @  }ŠDR?d x=´×¢E0 @  }‹ER?d ¸=´@ðQ„ @  }ŒFR?d ø=´ÂaFZ @  }GR?d 8>´ƒ·«C @  }ŽHR?d x>´&¼ @  }IR?d ¸>´0.2^ @  }JR?d ø>´²¿%€ @  }‘KR?d 8?´&u— @  }’LR?d x?´¤äI @  }“MR?duÐ@´7 ¸?´3¶ý @  }”NR?d ø?´±'# @  }•OR?d P@´ËI†+ @  }–PR?d @´뼄Õ @  }—QR?d Ð@´Õq!Ö @  }˜RR?d A´9­> @  }™SR?d PA´Ã* @  }šTR?d A´ãßá @  }›UR?d ÐA´Öéu @  }œVR?d B´K­·´ @  }WR?d PB´®í² @  }žXR?d B´5[ïL @  }ŸYR?d ÐB´·1S @  } ZR?d C´gyß÷ @  }¡[R?d PC´¡jfÖ @  }¢\R?d C´Ÿd( @  }£]R?d ÐC´´©e¼ @  }¤^R?d D´­ç–³ @  }¥_R?d PD´ —… @  }¦`R?d D´+ö•{ @  }§aR?d ÐD´;0x @  }¨bR?d E´Ås¼ @  }©cR?d PE´`± @  }ªdR?d E´#•O @  }«eR?d ÐE´£Û @  }¬fR?d F´‹ç¦ @  }­gR?d PF´Õäü @  }®hR?d F´õþâ @  }¯iR?d ÐF´f}e @  }°jR?d G´¶5éé @  }±kR?d PG´p&PÈ @  }²lR?d G´PÓR6 @  }³mR?d ÐG´eåS¢ @  }´nR?d H´Qß¿ @  }µoR?d PH´jIçU @  }¶pR?d H´J¼å« @  }·qR?d ÐH´tq@¨ @  }¸rR?d I´¤9Ì@ @  }¹sR?d PI´b*ua @  }ºtR?d I´BßwŸ @  }»uR?d ÐI´wév  @  }¼vR?d J´ê­ÖÊ @  }½wR?d PJ´´®ŒÌ @  }¾xR?d J´”[Ž2 @  }¿yR?d ÐJ´¸64ó @  }ÀzR?d K´h~¸ @  }Á{R?d PK´®m: @  }Â|R?d K´Ž˜Ä @  }Ã}R?d ÐK´»®P @  }Ä~R?d L´¢àñ_ @  }ÅR?d PL´é’±ê @  }Æ€R?d L´Ég³ @  }ÇR?d ÐL´÷ª @  }È‚R?d M´'âšÿ @  }ɃR?d PM´áñ#Þ @  }Ê„R?d M´Á!  @  }Ë…R?d ÐM´ô2 ´ @  }̆R?d N´iv€u @  }͇R?d PN´7uÚs @  }ΈR?d N´€Ø @  }ωR?d ÐN´„ìCn @  }ЊR?d O´T¤Ï† @  }Ñ‹R?d PO´’·v§ @  }ÒŒR?d O´²BtY @  }ÓR?d ÐO´‡tuÍ @  }ÔŽR?d P´9ªÉ @  }ÕR?d PP´ùñ• @  }ÖR?d P´" ók @  }בR?d ÐP´ÁVh @  }Ø’R?d Q´̉ڀ @  }Ù“R?d PQ´ šc¡ @  }Ú”R?d Q´*oa_ @  }Û•R?d ÐQ´Y`Ë @  }Ü–R?d R´‚À  @  }Ý—R?d PR´Üš  @  }Þ˜R?d R´üë˜ò @  }ß™R?d ÐR´~$¡ @  }àšR?d S´®É¨I @  }á›R?d PS´hÚh @  }âœR?d€ S´‰hä– @  ~R?d ÐS´]­+ @  ~žR?d T´DQ^$ @  ~ŸR?d PT´'ü¤ÿ @  ~ R?d T´ ¦ @  ~¡R?d ÐT´÷v\x @  ~¢R?d U´'>Ð @  ~£R?d PU´/Ÿ6Ë @  ~¤R?d U´j45 @  ~ ¥R?d ÐU´ÿÎL @  ~ ¦R?d V´bQn @  ~ §R?d PV´ùÏf @  ~ ¨R?d V´Ùî͘ @  ~ ©R?d ÐV´)‘7á @  ~ªR?d W´ùÙ»  @  ~«R?d PW´\Ùc² @  ~¬R?d W´|,aL @  ~­R?d ÐW´ŒS›5 @  ~®R?d X´¸¬( @  ~¯R?d PX´F¶Ô/ @  ~°R?d X´fCÖÑ @  ~±R?d ÐX´–<,¨ @  ~²R?d Y´Ft @ @  ~³R?d PY´NÕF @  ~´R?d Y´n Då @  ~µR?d ÐY´ž_¾œ @  ~¶R?d Z´] @  ~·R?d PZ´˜Q¿¶ @  ~¸R?d Z´¸¤½H @  ~¹R?d ÐZ´HÛG1 @  ~ºR?d [´˜“ËÙ @  ~»R?d P[´,•4Ò @  ~ ¼R?d [´ `6, @  ~!½R?d Ð[´üÌU @  ~"¾R?d \´åQ?Z @  ~#¿R?d P\´v¬Ð @  ~$ÀR?d \´VYÒn @  ~%ÁR?d Ð\´¦&( @  ~&ÂR?d ]´vn¤ÿ @  ~'ÃR?d P]´~ÏB¤ @  ~(ÄR?d ]´^:@Z @  ~)ÅR?d Ð]´®Eº# @  ~*ÆR?d ^´3â @  ~+ÇR?d P^´¨K»  @  ~,ÈR?d ^´ˆ¾¹÷ @  ~-ÉR?d Ð^´xÁCŽ @  ~.ÊR?d _´¨‰Ïf @  ~/ËR?d P_´ ‰Ý @  ~0ÌR?d _´-|# @  ~uÐ`´1ÍR?d Ð_´ÝïZ @  ~2ÎR?d (`´cûZ @  ~3ÏR?d h`´á™Å @  ~4ÐR?d ¨`´½›; @  ~5ÑR?d è`´MkaB @  ~6ÒR?d (a´#íª @  ~7ÓR?d ha´•‚ ñ @  ~8ÔR?d ¨a´µw  @  ~9ÕR?d èa´Eóv @  ~:ÖR?d (b´ØLS· @  ~;×R?d hb´Cò\ @  ~<ØR?d ¨b´cóð¢ @  ~=ÙR?d èb´“Œ Û @  ~>ÚR?d (c´CĆ3 @  ~?ÛR?d hc´YŪ @  ~@ÜR?d ¨c´y0}T @  ~AÝR?d èc´‰O‡- @  ~BÞR?d (d´t" @  ~CßR?d hd´ó¬Žù @  ~DàR?d ¨d´ÓYŒ @  ~EáR?d èd´#&v~ @  ~FâR?d (e´ónú– @  ~GãR?d he´ûÏÍ @  ~HäR?d ¨e´Û:3 @  ~IåR?d èe´+EäJ @  ~JæR?d (f´¶D‹ @  ~KçR?d hf´-Kå` @  ~LèR?d ¨f´ ¾çž @  ~MéR?d èf´ýÁç @  ~NêR?d (g´-‰‘ @  ~OëR?d hg´ˆ‰I´ @  ~PìR?d ¨g´¨|KJ @  ~QíR?d èg´X±3 @  ~RîR?d (h´lü=. @  ~SïR?d hh´’æþ) @  ~TðR?d ¨h´²ü× @  ~UñR?d èh´Bl® @  ~VòR?d (i´’$ŠF @  ~WóR?d hi´š…l @  ~XôR?d ¨i´ºpnã @  ~YõR?d èi´J”š @  ~ZöR?d (j´×K4[ @  ~[÷R?d hj´L•° @  ~\øR?d ¨j´lô—N @  ~]ùR?d èj´œ‹m7 @  ~^úR?d (k´LÃáß @  ~_ûR?d hk´øÅÔ @  ~`üR?d ¨k´Ø0* @  ~aýR?d èk´(OæS @  ~bþR?d (l´1\ @  ~cÿR?d hl´À]û @  ~dS?d ¨l´à¨ùö @  ~eS?d èl´× @  ~fS?d (m´ÀŸg @  ~gS?d hm´È>i< @  ~hS?d ¨m´èËk @  ~iS?d èm´´‘» @  ~jS?d (n´…ð1z @  ~kS?d hn´º‘ @  ~lS?d ¨n´>O’o @  ~m S?d èn´Î0h @  ~n S?d (o´xäþ @  ~o S?d ho´»x» @  ~q S?d èo´kòÄ @  ~rS?d (p´Õ,xp @  ~sS?d hp´+6»w @  ~tS?d ¨p´ ù‰ @  ~uS?d èp´û¼Cð @  ~vS?d (q´+ôÏ @  ~wS?d hq´#U)C @  ~xS?d ¨q´ +½ @  ~yS?d èq´óßÑÄ @  ~zS?d (r´n›q @  ~{S?d hr´õÑÐî @  ~|S?d ¨r´Õ$Ò @  ~}S?d èr´%[(i @  ~~S?d (s´õ¤ @  ~S?d hs´ Dm) @  ~€S?d ¨s´,±o× @  ~S?d ès´ÜΕ® @  ~‚S?d (t´Å€f¡ @  ~ƒS?d ht´¦-œz @  ~„ S?d ¨t´†Øž„ @  ~…!S?d èt´v§dý @  ~†"S?d (u´¦ïè @  ~‡#S?d hu´®NN @  ~ˆ$S?d ¨u´Ž» ° @  ~‰%S?d èu´~ÄöÉ @  ~Š&S?d (v´ã€V @  ~‹'S?d hv´xÊ÷ã @  ~Œ(S?d ¨v´X?õ @  ~)S?d èv´¨@d @  ~Ž*S?d (w´xƒŒ @  ~+S?d hw´Ý[7 @  ~,S?d ¨w´ýýYÉ @  ~‘-S?d èw´ ‚£° @  ~’.S?d (x´9}/­ @  ~“/S?d hx´Çgìª @  ~”0S?d ¨x´ç’îT @  ~•1S?d èx´í- @  ~–2S?d (y´Ç¥˜Å @  ~—3S?d hy´Ï~ž @  ~˜4S?d ¨y´ïñ|` @  ~™5S?d èy´ކ @  ~š6S?d (z´‚Ê&Ø @  ~›7S?d hz´€‡3 @  ~œ8S?d ¨z´9u…Í @  ~9S?d èz´É ´ @  ~ž:S?d ({´Bó\ @  ~Ÿ;S?d h{´­D W @  ~ S?d (|´d€ß @  ~£?S?d h|´÷}è @  ~¤@S?d ¨|´׈êë @  ~¥AS?d è|´'÷’ @  ~¦BS?d (}´÷¿œz @  ~§CS?d h}´ÿz! @  ~¨DS?d ¨}´ßëxß @  ~©ES?d è}´/”‚¦ @  ~ªFS?d (~´²Ð"g @  ~«GS?d h~´)šƒŒ @  ~¬HS?d ¨~´ or @  ~­IS?d è~´ù{  @  ~®JS?d (´)X÷ã @  ~¯KS?d h´ŒX/X @  ~°LS?d ¨´uЀ´'¬­-¦ @  ~±MS?d è´e  @  ~² NS?d @€´ «é~ @  ~³ OS?d €€´WÕ?Y @  ~´ PS?d À€´ÕD(‡ @  ~µ QS?d ´wâIÈ @  ~¶ RS?d @´õs^ @  ~· SS?d €´_¶­m @  ~¸ TS?d À´Ý'º³ @  ~¹ US?d ‚´2÷Õ @  ~º VS?d @‚´°à  @  ~» WS?d €‚´‰2TÀ @  ~¼ XS?d À‚´ £C @  ~½ YS?d ƒ´©"Q @  ~¾ ZS?d @ƒ´+”5 @  ~¿ [S?d €ƒ´“ñÙ6 @  ~À \S?d Àƒ´`Îè @  ~Á ]S?d „´zÀÐ@ @  ~ ^S?d @„´øQÇž @  ~à _S?d €„´9˜(e @  ~Ä `S?d À„´» ?» @  ~Å aS?d …´¯^ô @  ~Æ bS?d @…´›>I* @  ~Ç cS?d €…´1ûºQ @  ~È dS?d À…´³j­ @  ~É eS?d †´\Ààé @  ~Ê fS?d @†´ÞQ÷7 @  ~Ë gS?d €†´çCü @  ~Ì hS?d À†´eîT" @  ~Í iS?d ‡´ÇH5m @  ~Î jS?d @‡´EÙ"³ @  ~Ï kS?d €‡´B½ï( @  ~Ð lS?d À‡´À,øö @  ~Ñ mS?d ˆ´†=™L @  ~Ò nS?d @ˆ´¬Ž’ @  ~Ó oS?d €ˆ´XÒXµ @  ~Ô pS?d Àˆ´ÚCOk @  ~Õ qS?d ‰´xå.$ @  ~Ö rS?d @‰´út9ú @  ~× sS?d €‰´P±Ê @  ~Ø tS?d À‰´Ò Ý_ @  ~Ù uS?d Š´=Š9 @  ~Ú vS?d @Š´¿‡ç @  ~Û wS?d €Š´†53, @  ~Ü xS?d ÀŠ´¤$ò @  ~Ý yS?d ‹´¦E½ @  ~Þ zS?d @‹´$“Rc @  ~ß {S?d €‹´2ñ¸H @  ~à |S?d À‹´°`¯– @  ~á }S?d Œ´ÛÀ±> @  ~â ~S?d€ @Œ´-’ºF @   S?d €Œ´àŒ\ @   €S?d ÀŒ´bKÉ @   S?d ´òÑk @   ‚S?d @´‡cƵ @   ƒS?d €´ãj´ @   „S?d À´a…}j @   …S?d Ž´@ov @   †S?d @Ž´ x¨ @   ‡S?d €Ž´>k7Ž @   ˆS?d ÀŽ´¼ú P @   ‰S?d ´Ûºò @   ŠS?d @´Y„­, @   ‹S?d €´=ó- @   ŒS?d À´¿bó @   S?d ´A&| @   ŽS?d @´’Ð1¢ @   S?d €´ çh @   S?d À´‰v ¶ @   ‘S?d ‘´ @   ’S?d @‘´l†Ê @   “S?d €‘´*Ë @   ”S?d À‘´Šî= @   •S?d ’´«ö/  @   –S?d @’´)g8× @   —S?d €’´Õwñ @   ˜S?d À’´W‘`/ @   ™S?d “´0~ú @   šS?d @“´²ïíS @   ›S?d €“´Ö˜AR @   œS?d À“´T VŒ @   S?d ”´M¼ @   žS?d @”´Ï-Ð @  ! ŸS?d €”´Ë­ Æ @  "  S?d À”´I< @  # ¡S?d •´.Ó€º @  $ ¢S?d @•´¬B—d @  % £S?d €•´È5;e @  & ¤S?d À•´J¤,» @  ' ¥S?d –´k¼>§ @  ( ¦S?d @–´é-)y @  ) §S?d €–´Jf_ @  * ¨S?d À–´—Ûq @  + ©S?d —´ð4ë# @  , ªS?d @—´r¥üý @  - «S?d €—´ÒPü @  . ¬S?d À—´”CG" @  / ­S?d ˜´±AG @  0 ®S?d @˜´3ÐPÜ @  1 ¯S?d €˜´ªç} @  2 °S?d À˜´(vjÈ @  3 ±S?d ™´O™ðj @  4 ²S?d @™´Íç´ @  5 ³S?d €™´©Kµ @  6 ´S?d À™´+î\k @  7 µS?d š´ öNw @  8 ¶S?d @š´ˆgY© @  9 ·S?d €š´t @  : ¸S?d Àš´ö‘Q @  ; ¹S?d ›´‘~›ó @  < ºS?d @›´ïŒ- @  = »S?d €›´w˜ , @  > ¼S?d À›´õ 7ò @  ? ½S?d œ´B»iâ @  @ ¾S?d @œ´À*~< @  A ¿S?d €œ´4ú; @  B ÀS?d Àœ´¶khå @  C ÁS?d ´Ñ„òG @  D ÂS?d @´Så™ @  E ÃS?d €´7bI˜ @  F ÄS?d À´µó^F @  G ÅS?d ž´”ëLZ @  H ÆS?d @ž´z[„ @  I ÇS?d €ž´ê¢ @  J ÈS?d Àž´hŒ| @  K ÉS?d Ÿ´c™Þ @  L ÊS?d @Ÿ´òŽ @  M ËS?d €Ÿ´é…" @  N ÌSuР´?d ÀŸ´k5ß @  O ÍS?d  ´2%»Q @  PÎS?d X ´°´¬ @  QÏS?d ˜ ´)ƒE @  RÐS?d Ø ´«–› @  SÑS?d ¡´Ìý 9 @  TÒS?d X¡´Nlç @  UÓS?d ˜¡´*·æ @  VÔS?d Ø¡´¨Š 8 @  WÕS?d ¢´‰’²$ @  XÖS?d X¢´ ¥ú @  Y×S?d ˜¢´÷dêÜ @  ZØS?d Ø¢´uõý @  [ÙS?d £´g  @  \ÚS?d X£´‹p~ @  ]ÛS?d ˜£´ôüÜ @  ^ÜS?d Ø£´vmË¡ @  _ÝS?d ¤´oØ“# @  `ÞS?d X¤´íI„ý @  aßS?d ˜¤´éÉë @  bàS?d ؤ´kX‡5 @  cáS?d ¥´ ·— @  dâS?d X¥´Ž& I @  eãS?d ˜¥´êQ¦H @  fäS?d Ø¥´hÀ±– @  gåS?d ¦´IØ£Š @  hæS?d X¦´ËI´T @  içS?d ˜¦´7.ûr @  jèS?d ئ´µ¿ì¬ @  kéS?d §´ÒPv @  lêS?d X§´PÁaÐ @  mëS?d ˜§´4¶ÍÑ @  nìS?d ا´¶'Ú @  oíS?d ¨´“%Ú/ @  pîS?d X¨´´Íñ @  qïS?d ˜¨´ˆƒà; @  rðS?d ب´ ÷å @  sñS?d ©´mýmG @  tòS?d X©´ïlz™ @  uóS?d ˜©´‹Ö˜ @  vôS?d Ø©´ ŠÁF @  wõS?d ª´(’ÓZ @  xöS?d Xª´ªÄ„ @  y÷S?d ˜ª´Vd‹¢ @  zøS?d ت´Ôõœ| @  {ùS?d «´³Þ @  |úS?d X«´1‹ @  }ûS?d ˜«´Uü½ @  ~üS?d Ø«´×mªß @  ýS?d ¬´ƒ‰Äþ @  €þS?d X¬´Ó  @  ÿS?d ˜¬´«`ì/ @  ‚T?d ج´)ñûñ @  ƒT?d ­´NaS @  „T?d X­´Ìv @  …T?d ˜­´¨øÚŒ @  †T?d Ø­´*iÍR @  ‡T?d ®´ qßN @  ˆT?d X®´‰àÈ @  ‰T?d ˜®´u‡‡¶ @  ŠT?d Ø®´÷h @  ‹ T?d ¯´ù Ê @  Œ T?d X¯´h @   T?d ˜¯´v± @  Ž T?d د´ôަË @   T?d °´[­–D @  T?d X°´Ù<š @  ‘T?d ˜°´@ ¬P @  ’T?d ذ´š»Ž @  “T?d ±´¥u!, @  ”T?d X±´'ä6ò @  •T?d ˜±´C“šó @  –T?d ر´Á- @  —T?d ²´àŸ1 @  ˜T?d X²´b‹ˆï @  ™T?d ˜²´žìÇÉ @  šT?d ز´}Ð @  ›T?d ³´{’Jµ @  œT?d X³´ù]k @  T?d ˜³´tñj @  žT?d س´åæ´ @  ŸT?d ´´P¾6 @   T?d X´´„Á©è @  ¡T?d ˜´´€A½þ @  ¢ T?d Ø´´Ъ  @  £!T?d µ´e?0‚ @  ¤"T?d Xµ´ç®'\ @  ¥#T?d ˜µ´ƒÙ‹] @  ¦$T?d ص´Hœƒ @  §%T?d ¶´ PŽŸ @  ¨&T?d X¶´¢Á™A @  ©'T?d ˜¶´^¦Ög @  ª(T?d ض´Ü7Á¹ @  «)T?d ·´»Ø[ @  ¬*T?d X·´9ILÅ @  ­+T?d ˜·´]>àÄ @  ®,T?d Ø·´߯÷ @  ¯-T?d ¸´ú­÷: @  °.T?d X¸´x<àä @  ±/T?d ˜¸´á Í. @  ²0T?d ظ´cšÚð @  ³1T?d ¹´u@R @  ´2T?d X¹´†äWŒ @  µ3T?d ˜¹´â“û @  ¶4T?d ع´`ìS @  ·5T?d º´AþO @  ¸6T?d Xº´Ëé‘ @  ¹7T?d ˜º´?즷 @  º8T?d غ´½}±i @  »9T?d »´Ú’+Ë @  ¼:T?d X»´X< @  ½;T?d ˜»´T?d X¼´‹ÆÎ @  Á?T?d ˜¼´Ï @  Â@T?d ؼ´ý‡ØÝ @  ÃAT?d ½´šhB @  ÄBT?d X½´ùU¡ @  ÅCT?d ˜½´|Žù  @  ÆDT?d ؽ´þî~ @  ÇET?d ¾´ßüb @  ÈFT?d X¾´]–ë¼ @  ÉGT?d ˜¾´¡ñ¤š @  ÊHT?d ؾ´#`³D @  ËIT?d ¿´D)æ @  ÌJT?d X¿´Æ>8 @  ÍKT?d ˜¿´¢i’9 @uÐÀ´  ÎLT?d Ø¿´ ø…ç @  ÏMT?d 0À´UõXˆ @  ÐNT?d pÀ´×dOV @  ÑOT?d °À´NSbœ @  ÒPT?d ðÀ´ÌÂuB @  ÓQT?d 0Á´«-ïà @  ÔRT?d pÁ´)¼ø> @  ÕST?d °Á´MËT? @  ÖTT?d ðÁ´ÏZCá @  ×UT?d 0´îBQý @  ØVT?d p´lÓF# @  ÙWT?d °Â´´  @  ÚXT?d ð´%Û @  ÛYT?d 0ôuÊ„y @  ÜZT?d pô÷[“§ @  Ý[T?d °Ã´“,?¦ @  Þ\T?d ðô½(x @  ß]T?d 0Ä´pú @  à^T?d pÄ´Š™g$ @  á_T?d °Ä´Žs2 @  â`T?d€ ðÄ´¬mðk @  €aT?d 0Å´*Ã"à @  €bT?d pÅ´¨R5> @  €cT?d °Å´ lbÒ @  €dT?d ðÅ´‹ýu  @  €eT?d 0Æ´dW8j @  €fT?d pÆ´æÆ/´ @  €gT?d °Æ´Ô?è @  €hT?d ðÆ´V‚(6 @  € iT?d 0Ç´ô$Iy @  € jT?d pÇ´vµ^§ @  € kT?d °Ç´׋ K @  € lT?d ðÇ´U• @  € mT?d 0È´ / @  €nT?d pÈ´‘šhñ @  €oT?d °È´k¾$¡ @  €pT?d ðÈ´é/3 @  €qT?d 0É´K‰R0 @  €rT?d pÉ´ÉEî @  €sT?d °É´h& @  €tT?d ðÉ´ê·Ü @  €uT?d 0Ê´Hº @  €vT?d pÊ´‡Œ_d @  €wT?d °Ê´µYO8 @  €xT?d ðÊ´7ÈXæ @  €yT?d 0Ë´•n9© @  €zT?d pË´ÿ.w @  €{T?d °Ë´¶Áy› @  €|T?d ðË´4PnE @  €}T?d 0Ì´_ðpí @  €~T?d pÌ´Ýag3 @  €T?d °Ì´FbtŒ @  € €T?d ðÌ´ÄócR @  €!T?d 0Í´fU @  €"‚T?d pÍ´äÄà @  €#ƒT?d °Í´EúB/ @  €$„T?d ðÍ´ÇkUñ @  €%…T?d 0δ(Á— @  €&†T?d pδªPI @  €'‡T?d °Î´˜… @  €(ˆT?d ðδË @  €)‰T?d 0Ï´¸²i„ @  €*ŠT?d pÏ´:#~Z @  €+‹T?d °Ï´›)¶ @  €,ŒT?d ðÏ´Œ>h @  €-T?d 0дÕ¼o} @  €.ŽT?d pдW-x£ @  €/T?d °Ð´­ 4ó @  €0T?d ðд/˜#- @  €1‘T?d 0Ñ´>Bb @  €2’T?d pÑ´¯U¼ @  €3“T?d °Ñ´®‘P @  €4”T?d ðÑ´,Ž @  €5•T?d 0Ò´êXè @  €6–T?d pÒ´A;O6 @  €7—T?d °Ò´sî_j @  €8˜T?d ðÒ´ñH´ @  €9™T?d 0Ó´SÙ)û @  €:šT?d pÓ´ÑH>% @  €;›T?d °Ó´pviÉ @  €<œT?d ðÓ´òç~ @  €=T?d 0Ô´™G`¿ @  €>žT?d pÔ´Öwa @  €?ŸT?d °Ô´ÃD#Ï @  €@ T?d ðÔ´AÕ4 @  €A¡T?d 0Õ´ãsU^ @  €B¢T?d pÕ´aâB€ @  €C£T?d °Õ´ÀÜl @  €D¤T?d ðÕ´BM² @  €E¥T?d 0Ö´­çOÔ @  €F¦T?d pÖ´/vX  @  €G§T?d °Ö´£HV @  €H¨T?d ðÖ´Ÿ2_ˆ @  €I©T?d 0×´=”>Ç @  €JªT?d p×´¿) @  €K«T?d °×´;~õ @  €L¬T?d ð×´œªi+ @  €M­T?d 0Ø´Ú»‘ @  €N®T?d pØ´X*O @  €O¯T?d °Ø´¢S @  €P°T?d ðØ´ ŸDÁ @  €Q±T?d 0Ù´‚9%Ž @  €R²T?d pÙ´¨2P @  €S³T?d °Ù´¡–e¼ @  €T´T?d ðÙ´#rb @  €UµT?d 0Ú´Ì­? @  €V¶T?d pÚ´N<(Ú @  €W·T?d °Ú´|é8† @  €X¸T?d ðÚ´þx/X @  €Y¹T?d 0Û´\ÞN @  €ZºT?d pÛ´ÞOYÉ @  €[»T?d °Û´q% @  €\¼T?d ðÛ´ýàû @  €]½T?d 0Ü´–@S @  €^¾T?d pÜ´Ñ @  €_¿T?d °Ü´’W  @  €`ÀT?d ðÜ´…@~ @  €aÁT?d 0Ý´²#!1 @  €bÂT?d pÝ´0²6ï @  €cÃT?d °Ý´‘Œa @  €dÄT?d ðÝ´vÝ @  €eÅT?d 0Þ´ü·;» @  €fÆT?d pÞ´~&,e @  €gÇT?d °Þ´Ló<9 @  €hÈT?d ðÞ´Îb+ç @  €iÉT?d 0ß´lÄJ¨ @  €jÊT?d pß´îU]v @  €kËT?d uÐà´/°ß´Ok š @  €lÌT?d ðß´ô=Á‘ @  €m ÍT?d Hà´ŸwrÀ @  €n ÎT?d ˆà´¿‚p> @  €o ÏT?d Èà´çÂ)N @  €p ÐT?d á´7Š¥¦ @  €q ÑT?d Há´Çõ_ß @  €r ÒT?d ˆá´ç]! @  €s ÓT?d Èá´äZí @  €t ÔT?d â´y¿, @  €u ÕT?d Hâ´‰aEU @  €v ÖT?d ˆâ´©”G« @  €w ×T?d Èâ´9%B× @  €x ØT?d ã´émÎ? @  €y ÙT?d Hã´4F @  €z ÚT?d ˆã´9ç6¸ @  €{ ÛT?d Èã´:½tt @  €| ÜT?d ä´#ó‡{ @  €} ÝT?d Hä´ÓŒ} @  €~ ÞT?d ˆä´óyü @  € ßT?d Èä´jÙC @  €€ àT?d å´º‘‚« @  € áT?d Hå´JîxÒ @  €‚ âT?d ˆå´jz, @  €ƒ ãT?d Èå´iA8à @  €„ äT?d æ´ô˜! @  €… åT?d Hæ´zbX @  €† æT?d ˆæ´$`¦ @  €‡ çT?d Èæ´´>eÚ @  €ˆ èT?d ç´dvé2 @  €‰ éT?d Hç´” K @  €Š êT?d ˆç´´üµ @  €‹ ëT?d Èç´·¦Sy @  €Œ ìT?d è´ƒYßd @  € íT?d Hè´s&% @  €Ž îT?d ˆè´SÓ'ã @  € ïT?d Èè´ “~“ @  € ðT?d é´ÛÛò{ @  €‘ ñT?d Hé´+¤ @  €’ òT?d ˆé´ Q ü @  €“ óT?d Èé´ H0 @  €” ôT?d ê´•Oèñ @  €• õT?d Hê´e0ˆ @  €– öT?d ˆê´EÅv @  €— ÷T?d Èê´Õt  @  €˜ øT?d ë´<™â @  €™ ùT?d Hë´õCc› @  €š úT?d ˆë´Õ¶ae @  €› ûT?d Èë´Öì#© @  €œ üT?d ì´ϢЦ @  € ýT?d Hì´?Ý*ß @  €ž þT?d ˆì´((! @  €Ÿ ÿT?d Èì´Y({² @  €  U?d í´‰`÷Z @  €¡ U?d Hí´y # @  €¢ U?d ˆí´YêÝ @  €£ U?d Èí´Z°M @  €¤ U?d î´ÇôíÐ @  €¥ U?d Hî´7‹© @  €¦ U?d ˆî´~W @  €§ U?d Èî´‡Ï+ @  €¨ U?d ï´W‡œÃ @  €©  U?d Hï´§øfº @  €ª  U?d ˆï´‡ dD @  €«  U?d Èï´„W&ˆ @  €¬  U?d ð´:‰š: @  €­  U?d Hð´Êö`C @  €® U?d ˆð´êb½ @  €¯ U?d Èð´²C;Í @  €° U?d ñ´b ·% @  €± U?d Hñ´’tM\ @  €² U?d ˆñ´²O¢ @  €³ U?d Èñ´±Û n @  €´ U?d ò´,Ÿ­¯ @  €µ U?d Hò´ÜàWÖ @  €¶ U?d ˆò´üU( @  €· U?d Èò´l¤PT @  €¸ U?d ó´¼ìܼ @  €¹ U?d Hó´L“&Å @  €º U?d ˆó´lf$; @  €» U?d Èó´oU?d ˆü´©ÿ “ @  €ß ?U?d Èü´^Xž @  €à @U?d ý´]Ôv @  €á AU?d Hý´­i. @  €â BU?d€ ˆý´ù_0W @   CU?d Èý´D:² @   DU?d þ´†šs @   EU?d Hþ´³6›ç @   FU?d ˆþ´“Ù @   GU?d Èþ´ÍÀà @   HU?d ÿ´ˆO÷ @   IU?d Hÿ´#Eêô @   JU?d ˆÿ´°è  @   uеKU?d Èÿ´Å£Q+ @   LU?d µŠyÚ @   MU?d `µ¿!xN @   NU?d  µŸÔz° @   OU?d ൤‡BZ @   PU?d µtÏβ @   QU?d `µç£UQ @   RU?d  µÇVW¯ @   SU?d àµEîŽ @   TU?d µœNO @   UU?d `µ©7OÛ @   VU?d  µ‰ÂM% @   WU?d àµ×Á# @   XU?d µ‰›Ë @   YU?d `µ9D>È @   ZU?d  µ±<6 @   [U?d àµߢ… @   \U?d µÆìv @   ]U?d `µóÚwŒ @   ^U?d  µÓ/ur @   _U?d àµuËtD @   `U?d µ¥ƒø¬ @   aU?d `µ'éDÿ @   bU?d  µF @  ! cU?d àµÁÿ  @  " dU?d µ\K_á @  # eU?d `µi}^u @  $ fU?d  µIˆ\‹ @  % gU?d ോ @  & hU?d µÇÊe @  ' iU?d `µù/f @  ( jU?d  µÙû-˜ @  ) kU?d àµ蔹 @  * lU?d µ+¤ @  + mU?d `µ!0 @  , nU?d  µ>ÔÎ @  - oU?d േ#$ @  . pU?d µÕϯÌ @  / qU?d ` µF£4/ @  0 rU?d   µfV6Ñ @  1 sU?d à µ Eð @  2 tU?d µ=/1 @  3 uU?d ` µ7.¥ @  4 vU?d   µ(Â,[ @  5 wU?d à µvÁv] @  6 xU?d µ¦‰úµ @  7 yU?d ` µ˜D_¶ @  8 zU?d   µ¸±]H @  9 {U?d à µ~¢äi @  : |U?d µgìf @  ; }U?d ` µRÚò @  < ~U?d   µr/  @  = U?d à µ9]T¹ @  > €U?d µéØQ @  ? U?d ` µÅxb @  @ ‚U?d   µå`n @  A ƒU?d à µ#žÙO @  B „U?d µ¾ÚyŽ @  C …U?d `µ‹ìx @  D †U?d  µ«zä @  E ‡U?d àµõ â @  F ˆU?d µ%R¬  @  G ‰U?d `µŸ  @  H ŠU?d  µ;j ÷ @  I ‹U?d àµýy²Ö @  J ŒU?d µC§d @  K U?d `µv‘ð @  L ŽU?d  µVd  @  M U?d àµm75ä @  N U?d µ½¹  @  O ‘U?d `µ."ï @  P ’U?d  µæ  @  Q “U?d àµÈõ™0 @  R ”U?d µU±9ñ @  S •U?d `µ`‡8e @  T –U?d  µ@r:› @  U —U?d àµq` @  V ˜U?d µÎ9ìu @  W ™U?d `µðôIv @  X šU?d  µÐKˆ @  Y ›U?d àµò© @  Z œU?d µ\¦ @  [ U?d `µ:j2 @  \ žU?d  µŸÌ @  ] ŸU?d ർ{ú @  ^  U?d µl3 @  _ ¡U?d `µîY3A @  ` ¢U?d  µά1¿ @  a £U?d ൿˆž @  b ¤U?d µ•û(_ @  c ¥U?d `µ Í)Ë @  d ¦U?d  µ€8+5 @  e §U?d àµÞ;q3 @  f ¨U?d µsýÛ @  g ©U?d `µ0¾XØ @  h ªU?d  µKZ& @  i «U?d àµÖXã @  j ¬U?d µâ§o @  k ­U?d `µבnŽ @  l ®U?d  µ÷dlp @  m ¯U?d àµÌ7Tš @  n °U?d µØr @  o ±U?d `µC‘ @  p ²U?d  µ¯æAo @  q ³U?d àµiõøN @  r ´U?d µô±X @  s µU?d `µÁ‡Y @  t ¶U?d  µár[å @  u ·U?d ൿqã @  v ¸U?d µo9  @  w ¹U?d `µQô( @  x ºU?d  µq*ö @  y »U?d ൷“× @  z ¼U?d µ®\`Ø @  { ½U?d `µ›jaL @  | ¾U?d  µ»Ÿc² @  } ¿U?d àµí+w• @  ~ ÀU?d µ=cû} @   ÁU?d `µòXq @  € ÂU?d  µÒ­ss @   ÃU?d ൾÊR @  ‚ ÄU?d µ‰új“ @  ƒ ÅU?d `µ¼Ìk @  „ ÆU?d  µœ9iù @  … ÇU?d àµÂ:3ÿ @  † ÈU?d µr¿ @  ‡ ÉU?d `µ,¿ @  ˆ ÊU?d  µ JêuÐ µ @  ‰ ËU?d àµóž} @  ŠÌU?d 8 µ‚•£x @  ‹ÍU?d x µ·£¢ì @  ŒÎU?d ¸ µ—V  @  ÏU?d ø µ¬˜ø @  ŽÐU?d 8!µ|M @  ÑU?d x!µï!ó @  ÒU?d ¸!µÏÔ  @  ‘ÓU?d ø!µ Ç4, @  ’ÔU?d 8"µ”ƒ”í @  “ÕU?d x"µ¡µ•y @  ”ÖU?d ¸"µ@—‡ @  •×U?d ø"µßCÍ @  –ØU?d 8#µ Ai @  —ÙU?d x#µ1Æäj @  ˜ÚU?d ¸#µ3æ” @  ™ÛU?d ø#µ× _µ @  šÜU?d 8$µÎn¬º @  ›ÝU?d x$µûX­. @  œÞU?d ¸$µÛ­¯Ð @  ßU?d ø$µ}I®æ @  žàU?d 8%µ­" @  ŸáU?d x%µ/kž] @   âU?d ¸%µžœ£ @  ¡ãU?d ø%µÉ%‚ @  ¢äU?d 8&µTÉ…C @  £åU?d x&µaÿ„× @  ¤æU?d ¸&µA †) @  ¥çU?d ø&µ Ü/ @  ¦èU?d 8'µÏAPÇ @  §éU?d x'µñŒõÄ @  ¨êU?d ¸'µÑy÷: @  ©ëU?d ø'µjN @  ªìU?d 8(µ#• @  «íU?d x(µ£Ã’ @  ¬îU?d ¸(µ6VÁl @  ­ïU?d ø(µ ù† @  ®ðU?d 8)µÝMun @  ¯ñU?d x)µN!î @  °òU?d ¸)µnÔìs @  ±óU?d ø)µ¨ÇUR @  ²ôU?d 8*µ5ƒõ“ @  ³õU?d x*µµô @  ´öU?d ¸*µ @öù @  µ÷U?d ø*µ~C¬ÿ @  ¶øU?d 8+µ®  @  ·ùU?d x+µÆ… @  ¸úU?d ¸+µ°3‡ê @  ¹ûU?d ø+µv >Ë @  ºüU?d 8,µonÍÄ @  »ýU?d x,µZXÌP @  ¼þU?d ¸,µz­Î® @  ½ÿU?d ø,µüšî2 @  ¾V?d 8-µ,ÒbÚ @  ¿V?d x-µ¿Ø @  ÀV?d ¸-µ JÚå @  ÁV?d ø-µæYcÄ @  ÂV?d 8.µ{à @  ÃV?d x.µN+‘ @  ÄV?d ¸.µnÞÀo @  ÅV?d ø.µ0Ýši @  ÆV?d 8/µà• @  Ç V?d x/µÞX³‚ @  È V?d ¸/µþ­±| @  É V?d ø/µ8¾] @  Ê V?d 80µ†`´ï @  Ë V?d x0µ³Vµ{ @  ÌV?d ¸0µ“£·… @  ÍV?d ø0µ¨ðo @  ÎV?d 81µx¸‡ @  ÏV?d x1µëÔ˜d @  ÐV?d ¸1µË!šš @  ÑV?d ø1µ 2#» @  ÒV?d 82µvƒz @  ÓV?d x2µ¥@‚î @  ÔV?d ¸2µ…µ€ @  ÕV?d ø2µÛ¶Ú @  ÖV?d 83µ þVþ @  ×V?d x3µ53óý @  ØV?d ¸3µÆñ @  ÙV?d ø3µÓÕH" @  ÚV?d 84µÊ›»- @  ÛV?d x4µÿ­º¹ @  ÜV?d ¸4µßX¸G @  ÝV?d ø4µy¼¹q @  Þ V?d 85µ©ô5™ @  ß!V?d x5µ+ž‰Ê @  à"V?d ¸5µ k‹4 @  á#V?d ø5µÍx2 @  â$V?d€ 86µ‘{eÔ @  ‚%V?d x6µE ,i @  ‚&V?d ¸6µeù.— @  ‚'V?d ø6µþ³| @  ‚(V?d 87µ.û” @  ‚)V?d x7µÞ„ùí @  ‚*V?d ¸7µþqû @  ‚+V?d ø7µöÐH @  ‚,V?d 88µÂ/‘U @  ‚ -V?d x8µ2Pk, @  ‚ .V?d ¸8µ¥iÒ @  ‚ /V?d ø8µ쿪Õ @  ‚ 0V?d 89µ<÷&= @  ‚ 1V?d x9µ̈ÜD @  ‚2V?d ¸9µì}Þº @  ‚3V?d ø9µI} @  ‚4V?d 8:µÔ9¦À @  ‚5V?d x:µ$F\¹ @  ‚6V?d ¸:µ³^G @  ‚7V?d ø:µŸùÿ¬ @  ‚8V?d 8;µO±sD @  ‚9V?d x;µ¿Î‰= @  ‚:V?d ¸;µŸ;‹Ã @  ‚;V?d ø;µ—šm˜ @  ‚V?d ¸<µ^^f @  ‚?V?d ø<µÍ£‰Ú @  ‚@V?d 8=µë2 @  ‚AV?d x=µí”ÿK @  ‚BV?d ¸=µÍaýµ @  ‚CV?d ø=µyg¾ @  ‚ DV?d 8>µä#¢ @  ‚!EV?d x>µ\X @  ‚"FV?d ¸>µ4©Zø @  ‚#GV?d ø>µ¯ãû @  ‚$HV?d 8?µ«wû @  ‚%IV?d x?µÔ‚ @  ‚&JV?duÐ@µ7 ¸?µ¯!| @  ‚'KV?d ø?µ§€i' @  ‚(LV?d P@µd,Ó @  ‚)MV?d @µ67bV?d ÐEµ›2ªê @  ‚?cV?d Fµžæäl @  ‚@dV?d PFµwó² @  ‚AeV?d FµNlë @  ‚BfV?d ÐFµÌý 5 @  ‚CgV?d Gµn1è @  ‚DhV?d PGµ‡ÿ&6 @  ‚EiV?d GµÕäÉo @  ‚FjV?d ÐGµWuÞ± @  ‚GkV?d Hµ麣) @  ‚HlV?d PHµk+´÷ @  ‚ImV?d Hµ90[® @  ‚JnV?d ÐHµ»¡Lp @  ‚KoV?d IµbA @  ‚LpV?d PIµ•óŸ @  ‚MqV?d IµÇèìÆ @  ‚NrV?d ÐIµEyû @  ‚OsV?d Jµÿ¬”¼ @  ‚PtV?d PJµ}=ƒb @  ‚QuV?d Jµ/&l; @  ‚RvV?d ÐJµ­·{å @  ‚SwV?d Kµd$A8 @  ‚TxV?d PKµæµVæ @  ‚UyV?d Kµ´®¹¿ @  ‚VzV?d ÐKµ6?®a @  ‚W{V?d Lµ¥A¬ë @  ‚X|V?d PLµ'л5 @  ‚Y}V?d LµuËTl @  ‚Z~V?d ÐLµ÷ZC² @  ‚[V?d Mµ+¸cÜ @  ‚\€V?d PMµ©)t @  ‚]V?d Mµû2›[ @  ‚^‚V?d ÐMµy£Œ… @  ‚_ƒV?d NµÒpÄ‘ @  ‚`„V?d PNµPáÓO @  ‚a…V?d Nµú< @  ‚b†V?d ÐNµ€k+È @  ‚c‡V?d OµIø @  ‚dˆV?d POµËiË @  ‚e‰V?d Oµ™ré’ @  ‚fŠV?d ÐOµãþL @  ‚g‹V?d Pµ/ ³{ @  ‚hŒV?d PPµ­œ¤¥ @  ‚iV?d Pµÿ‡Kü @  ‚jŽV?d ÐPµ}\" @  ‚kV?d QµÑÕ @  ‚lV?d PQµSDÍ @  ‚m‘V?d Qµ_ü” @  ‚n’V?d ÐQµƒÎëJ @  ‚o“V?d Rµ9„î @  ‚p”V?d PRµ»Š“0 @  ‚q•V?d Rµé‘|i @  ‚r–V?d ÐRµkk· @  ‚s—V?d Sµ¢“Qj @  ‚t˜V?d PSµ F´ @  ‚u™V?d Sµr©í @  ‚všV?d ÐSµðˆ¾3 @  ‚w›V?d Tµcö¼¹ @  ‚xœV?d PTµág«g @  ‚yV?d Tµ³|D> @  ‚zžV?d ÐTµ1íSà @  ‚{ŸV?d Uµ™2  @  ‚| V?d PUµ‚%Ó @  ‚}¡V?d UµÐÊŠ @  ‚~¢V?d ÐUµR‚ÝT @  ‚£V?d Vµ´£ã @  ‚€¤V?d PVµ6‘´= @  ‚¥V?d VµdŠ[d @  ‚‚¦V?d ÐVµæLº @  ‚ƒ§V?d Wµ/ˆvg @  ‚„¨V?d PWµ­a¹ @  ‚…©V?d WµÿŽà @  ‚†ªV?d ÐWµ}“™> @  ‚‡«V?d XµÃ\ä¦ @  ‚ˆ¬V?d PXµAÍóx @  ‚‰­V?d XµÖ! @  ‚Š®V?d ÐXµ‘G ÿ @  ‚‹¯V?d Yµ=„SÎ @  ‚Œ°V?d PYµ¿D @  ‚±V?d Yµí«I @  ‚޲V?d ÐYµoŸ¼— @  ‚³V?d ZµÕJÓ3 @  ‚´V?d PZµWÛÄí @  ‚‘µV?d ZµÀ+´ @  ‚’¶V?d ÐZµ‡Q @  ‚Ñ õV?d ¨jµèWÝg @  ‚Ò öV?d èjµjÆÊ¹ @  ‚Ó ÷V?d (kµ£Uðd @  ‚Ô øV?d hkµ!Äçº @  ‚Õ ùV?d ¨kµsßã @  ‚Ö úV?d èkµñN= @  ‚× ûV?d (lµb0· @  ‚Ø üV?d hlµà¡ i @  ‚Ù ýV?d ¨lµ²ºå0 @  ‚Ú þV?d èlµ0+òî @  ‚Û ÿV?d (mµ“®‡Œ @  ‚Ü W?d hmµ?R @  ‚Ý W?d ¨mµC$  @  ‚Þ W?d èmµÁµhÕ @  ‚ß W?d (nµjf Á @  ‚à W?d hnµè÷7 @  ‚á W?d ¨nµºìØF @  ‚â W?d€ ènµL¾Ó> @  ƒ W?d (oµdl¡Ê @  ƒ W?d hoµæý¶ @  ƒ  W?d ¨oµq¯¢  @  ƒ  W?d èoµó>µ~ @  ƒ  W?d (pµ b§3 @  ƒ  W?d hpµ‹ó°í @  ƒ  W?d ¨pµZÎ @  ƒ W?d èpµ•Ë @  ƒ W?d (qµüA´Ì @  ƒ W?d hqµ~У @  ƒ W?d ¨qµé‚·¦ @  ƒ W?d èqµk x @  ƒ W?d (rµ²Õ®F @  ƒ W?d hrµ0D¹˜ @  ƒ W?d ¨rµL7[ @  ƒ W?d èrµƒÝ … @  ƒ W?d (sµáµ @  ƒ W?d hsµ –ök @  ƒ W?d ¨sµšÄâß @  ƒ W?d èsµUõ @  ƒ W?d (tµE™¨ñ @  ƒ W?d htµÇ¿/ @  ƒ W?d ¨tµ[¡  @  ƒ W?d ètµÙ0Ò @  ƒ W?d (uµ- ‚Ò @  ƒ  W?d huµ¯œ•  @  ƒ !W?d ¨uµ8θ @  ƒ "W?d èuµº_–f @  ƒ #W?d (vµc™˜X @  ƒ $W?d hvµá† @  ƒ %W?d ¨vµÁ&õ @  ƒ &W?d èvµC—1+ @  ƒ! 'W?d (wµOMð @  ƒ" (W?d hwµÍÜçÅ @  ƒ# )W?d ¨wµZŽóq @  ƒ$ *W?d èwµØä¯ @  ƒ% +W?d (xµ¨bÆM @  ƒ& ,W?d hxµ*óÑ“ @  ƒ' -W?d ¨xµ¶Za° @  ƒ( .W?d èxµ4Ëvn @  ƒ) /W?d (yµ]AÕ² @  ƒ* 0W?d hyµßÐÂl @  ƒ+ 1W?d ¨yµH‚ÖØ @  ƒ, 2W?d èyµÊÁ @  ƒ- 3W?d (zµÕÏ8 @  ƒ. 4W?d hzµ‘DØæ @  ƒ/ 5W?d ¨zµ LV% @  ƒ0 6W?d èzµ"ÝAû @  ƒ1 7W?d ({µ.€Ë @  ƒ2 8W?d h{µ¬–— @  ƒ3 9W?d ¨{µ;ă¡ @  ƒ4 :W?d è{µ¹U” @  ƒ5 ;W?d (|µä™É @  ƒ6 W?d è|µx0y¬ @  ƒ9 ?W?d (}µ|]ö½ @  ƒ: @W?d h}µþÌác @  ƒ; AW?d ¨}µižõ× @  ƒ< BW?d è}µëâ  @  ƒ= CW?d (~µ2Éì7 @  ƒ> DW?d h~µ°Xûé @  ƒ? EW?d ¨~µ>QT @  ƒ@ FW?d è~µ¼ÀCÖ @  ƒA GW?d (µ°‚æ @  ƒB HW?d hµ2‹•8 @  ƒC IW?d ¨µuЀµ'¥ÙŒ @  ƒD JW?d èµ'H–R @  ƒE KW?d @€µ tÚÙ @  ƒF LW?d €€µ-Ø' @  ƒG MW?d À€µL}$ @  ƒH NW?d µÃñÌ @  ƒI OW?d @µøWÉ& @  ƒJ PW?d €µØ¢ËØ @  ƒK QW?d Àµí”ÊL @  ƒL RW?d ‚µpÐj @  ƒM SW?d @‚µ¶ÃÓ¬ @  ƒN TW?d €‚µ–6ÑR @  ƒO UW?d À‚µZJ± @  ƒP VW?d ƒµÕÆY @  ƒQ WW?d @ƒµ‹œ_ @  ƒR XW?d €ƒµ«äž¡ @  ƒS YW?d ÀƒµžÒŸ5 @  ƒT ZW?d „µ‡œl: @  ƒU [W?d @„µAÕ @  ƒV \W?d €„µaz×å @  ƒW ]W?d À„µ_·ræ @  ƒX ^W?d …µÿþ @  ƒY _W?d @…µ)ÿ8 @  ƒZ `W?d €…µ îýÆ @  ƒ[ aW?d À…µ<ØüR @  ƒ\ bW?d †µ¡œ\“ @  ƒ] cW?d @†µgå² @  ƒ^ dW?d €†µGzçL @  ƒ_ eW?d À†µÅ[ @  ƒ` fW?d ‡µX×÷ @  ƒa gW?d @‡µK[ñ @  ƒb hW?d €‡µk® @  ƒc iW?d À‡µ^˜Ž› @  ƒd jW?d ˆµjg† @  ƒe kW?d @ˆµ¬t»§ @  ƒf lW?d €ˆµŒ¹Y @  ƒg mW?d Àˆµ²LZ @  ƒh nW?d ‰µb² @  ƒi oW?d @‰µYW¨X @  ƒj pW?d €‰µy¢ª¦ @  ƒk qW?d À‰µL”«2 @  ƒl rW?d еÑÐ ó @  ƒm sW?d @еòÒ @  ƒn tW?d €Šµ76°, @  ƒo uW?d Àе¤Z+Ï @  ƒp vW?d ‹µt§' @  ƒq wW?d @‹µ*ý! @  ƒr xW?d €‹µ äÿß @  ƒs yW?d À‹µ?ÒþK @  ƒt zW?d Œµ&œ D @  ƒu {W?d @Œµà´e @  ƒv |W?d €ŒµÀz¶› @  ƒw }W?d ÀŒµþ·˜ @  ƒx ~W?d µ.ÿŸp @  ƒy W?d @µeßÅ @  ƒz €W?d €µExÝ; @  ƒ{ W?d ÀµpNܯ @  ƒ| ‚W?d ޵í |n @  ƒ} ƒW?d @޵+ÅO @  ƒ~ „W?d €Žµ ìDZ @  ƒ …W?d À޵Ä×MA @  ƒ€ †W?d µŸÁ© @  ƒ ‡W?d @µJœ›¯ @  ƒ‚ ˆW?d €µji™Q @  ƒƒ ‰W?d Àµ__˜Å @  ƒ„ ŠW?d µá$w @  ƒ… ‹W?d @µ'’V @  ƒ† ŒW?d €µgŸ¨ @  ƒ‡ W?d Àµ9ª:« @  ƒˆ ŽW?d ‘µéâ¶C @  ƒ‰ W?d @‘µÒ±Ž© @  ƒŠ W?d €‘µòDŒW @  ƒ‹ ‘W?d À‘µÇrà @  ƒŒ ’W?d ’µZ6- @  ƒ “W?d @’µœ%”# @  ƒŽ ”W?d €’µ¼Ð–Ý @  ƒ •W?d À’µ/¼ > @  ƒ –W?d “µÿôÖ @  ƒ‘ —W?d @“µ¡÷ÛÐ @  ƒ’ ˜W?d €“µÙ. @  ƒ“ ™W?d À“µ´4غ @  ƒ” šW?d ”µ­z+µ @  ƒ• ›W?d @”µki’” @  ƒ– œW?d €”µKœj @  ƒ— W?d À”µuQ5i @  ƒ˜ žW?d •µ¥¹ @  ƒ™ ŸW?d @•µý¸· @  ƒš  W?d €•µ#ºI @  ƒ› ¡W?d À•µ>»Ý @  ƒœ ¢W?d –µ‹z @  ƒ £W?d @–µMi¢= @  ƒž ¤W?d €–µmœ Ã @  ƒŸ ¥W?d À–µïö @  ƒ  ¦W?d —µ?¾x @  ƒ¡ §W?d @—µa½Ê~ @  ƒ¢ ¨W?d €—µAHÈ€ @  ƒ£ ©W?d À—µt~É @  ƒ¤ ªW?d ˜µ@E  @  ƒ¥ «W?d @˜µ†’ü( @  ƒ¦ ¬W?d €˜µ¦gþÖ @  ƒ§ ­W?d À˜µ˜ª[Õ @  ƒ¨ ®W?d ™µHâ×= @  ƒ© ¯W?d @™µs±ï× @  ƒª °W?d €™µSDí) @  ƒ« ±W?d À™µfrì½ @  ƒ¬ ²W?d šµû6L| @  ƒ­ ³W?d @šµ=%õ] @  ƒ® ´W?d €šµÐ÷£ @  ƒ¯ µW?d Àšµ޼l@ @  ƒ° ¶W?d ›µ^ôਠ@  ƒ± ·W?d @›µ÷º® @  ƒ² ¸W?d €›µ ¸P @  ƒ³ ¹W?d À›µ4¹Ä @  ƒ´ ºW?d œµ zJË @  ƒµ »W?d @œµÊióê @  ƒ¶ ¼W?d €œµêœñ @  ƒ· ½W?d ÀœµÔQT @  ƒ¸ ¾W?d µØÿ @  ƒ¹ ¿W?d @µR­ÌØ @  ƒº ÀW?d €µrXÎ& @  ƒ» ÁW?d ÀµGnϲ @  ƒ¼ ÂW?d žµÚ*os @  ƒ½ ÃW?d @žµ9ÖR @  ƒ¾ ÄW?d €žµ<ÌÔ¬ @  ƒ¿ ÅW?d Àžµ¡nm @  ƒÀ ÆW?d ŸµÀéâ… @  ƒÁ ÇW?d @Ÿµžê¸ƒ @  ƒ ÈW?d €Ÿµ¾º} @  ƒà ÉWuРµ?d ÀŸµ‹)»é @  ƒÄ ÊW?d  µÃå¹Z @  ƒÅËW?d X µö{ @  ƒÆÌW?d ˜ µ%… @  ƒÇÍW?d Ø µΧ† @  ƒÈÎW?d ¡µˆ+n @  ƒÉÏW?d X¡µðÕ„ @  ƒÊÐW?d ˜¡µÐ z @  ƒËÑW?d Ø¡µåî @  ƒÌÒW?d ¢µxR°/ @  ƒÍÓW?d X¢µ¾A  @  ƒÎÔW?d ˜¢µž´ ð @  ƒÏÕW?d Ø¢µ Ø @  ƒÐÖW?d £µÝû @  ƒÑ×W?d X£µƒ“Fý @  ƒÒØW?d ˜£µ£fD @  ƒÓÙW?d Ø£µ–PE— @  ƒÔÚW?d ¤µ¶˜ @  ƒÕÛW?d X¤µI ¹ @  ƒÖÜW?d ˜¤µiø G @  ƒ×ÝW?d ؤµW5¨D @  ƒØÞW?d ¥µ‡}$¬ @  ƒÙßW?d X¥µ!™%š @  ƒÚàW?d ˜¥µl'd @  ƒÛáW?d Ø¥µ4Z&ð @  ƒÜâW?d ¦µ©†1 @  ƒÝãW?d X¦µo ? @  ƒÞäW?d ˜¦µOø=î @  ƒßåW?d ئµÍ’½ @  ƒàæW?d §µÚ U @  ƒáçW?d X§µCÙWS @  ƒâèW?d€ ˜§µåzý @  „éW?d اµ1 ´© @  „êW?d ¨µò8´ @  „ëW?d X¨µ¨zx @  „ìW?d ˜¨µ&]x† @  „íW?d بµÖ"‚ÿ @  „îW?d ©µj @  „ïW?d X©µó‹i‡ @  „ðW?d ˜©µÓ~ky @  „ ñW?d Ø©µ#‘ @  „ òW?d ªµ¾E1Á @  „ óW?d Xªµ½s  @  „ ôW?d ˜ªµêqó @  „ õW?d تµm•‹Š @  „öW?d «µ½Ýb @  „÷W?d X«µ€Í<þ @  „øW?d ˜«µ 8> @  „ùW?d Ø«µPGÄy @  „úW?d ¬µI 7v @  „ûW?d X¬µJSuº @  „üW?d ˜¬µj¦wD @  „ýW?d جµšÙ= @  „þW?d ­µJ‘Õ @  „ÿW?d X­µUzù @  „X?d ˜­µuðx @  „X?d Ø­µ…‚~ @  „X?d ®µË"¿ @  „X?d X®µ‘`s @  „X?d ˜®µ;db @  „X?d Ø®µË˜ô @  „X?d ¯µS @  „X?d X¯µ7E0 @  „ X?d ˜¯µ° Î @  „! X?d دµçÏð· @  „" X?d °µYL @  „# X?d X°µZKÉ @  „$ X?d ˜°µz¾ 7 @  „% X?d ذµŠÁöN @  „&X?d ±µZ‰z¦ @  „'X?d X±µ¯h6 @  „(X?d ˜±µÈ @  „)X?d رµâå± @  „*X?d ²µâ¦Ep @  „+X?d X²µáü¼ @  „,X?d ˜²µÁ B @  „-X?d زµ1vÿ; @  „.X?d ³µá>sÓ @  „/X?d X³µÜ.HO @  „0X?d ˜³µüÛJ± @  „1X?d سµ ¤°È @  „2X?d ´µêCÇ @  „3X?d X´µ°  @  „4X?d ˜´µ6Eõ @  „5X?d Ø´µÆ:ùŒ @  „6X?d µµrud @  „7X?d Xµµ~$+( @  „8 X?d ˜µµ^Ñ)Ö @  „9!X?d صµ®®Ó¯ @  „:"X?d ¶µ3êsn @  „;#X?d X¶µ0°1¢ @  „<$X?d ˜¶µE3\ @  „=%X?d ضµà:É% @  „>&X?d ·µ0rEÍ @  „?'X?d X·µ²c_s @  „@(X?d ˜·µ’–] @  „A)X?d Ø·µbé§ô @  „B*X?d ¸µV+é @  „C+X?d X¸µULi% @  „D,X?d ˜¸µu¹kÛ @  „E-X?d ظµ…Æ‘¢ @  „F.X?d ¹µUŽJ @  „G/X?d X¹µ ozÚ @  „H0X?d ˜¹µ€šx$ @  „I1X?d عµpå‚] @  „J2X?d ºµí¡"œ @  „K3X?d Xºµîû`P @  „L4X?d ˜ºµÎb® @  „M5X?d غµ>q˜× @  „N6X?d »µî9? @  „O7X?d X»µÓ)/£ @  „P8X?d ˜»µóÜ-] @  „Q9X?d Ø»µ£×$ @  „R:X?d ¼µí$+ @  „S;X?d X¼µ·fç @  „TX?d ½µuˆ @  „W?X?d X½µsYÕ @  „X@X?d ˜½µ¡†[+ @  „YAX?d ؽµQù¡R @  „ZBX?d ¾µ̽“ @  „[CX?d X¾µÏçC_ @  „\DX?d ˜¾µïA¡ @  „]EX?d ؾµm»Ø @  „^FX?d ¿µÏ%70 @  „_GX?d X¿µã3+ @  „`HX?d ˜¿µÃÆ)â @uÐÀµ  „aIX?d Ø¿µ3¹Ó› @  „bJX?d 0ÀµWI‚É @  „cKX?d pÀµTÀ @  „dLX?d °ÀµtæÂû @  „eMX?d ðÀµ„™8‚ @  „fNX?d 0ÁµTÑ´j @  „gOX?d pÁµ¡0Óú @  „hPX?d °ÁµÅÑ @  „iQX?d ðÁµqº+} @  „jRX?d 0µìþ‹¼ @  „kSX?d pµï¤Ép @  „lTX?d °ÂµÏQËŽ @  „mUX?d ðµ?.1÷ @  „nVX?d 0õïf½ @  „oWX?d põÒv†ƒ @  „pXX?d °Ãµòƒ„} @  „qYX?d ðõü~ @  „rZX?d 0ĵ²  @  „s[X?d pĵèÏÇ @  „t\X?d °Äµ8Í9 @  „u]X?d ðĵÈb7@ @  „v^X?d 0ŵ*»¨ @  „w_X?d pŵp|åä @  „x`X?d °ÅµP‰ç @  „yaX?d ðŵ öc @  „zbX?d 0Ƶ=²½¢ @  „{cX?d pƵ>èÿn @  „|dX?d °Æµý @  „}eX?d ðƵîbé @  „~fX?d 0ǵ>*‹ @  „gX?d pǵ_m¡Ž @  „€hX?d °Çµ˜£p @  „iX?d ðǵçY  @  „‚jX?d 0ȵ»Õ @  „ƒkX?d pȵ¸B—Ø @  „„lX?d °Èµ˜·•& @  „…mX?d ðȵhÈo_ @  „†nX?d 0ɵ¸€ã· @  „‡oX?d pɵMa„' @  „ˆpX?d °Éµm”†Ù @  „‰qX?d ðɵë|  @  „ŠrX?d 0ʵ¯Üa @  „‹sX?d pʵõž­ @  „ŒtX?d °Êµ#œS @  „uX?d ðʵÓf* @  „ŽvX?d 0˵7ê @  „wX?d p˵>'Ñ^ @  „xX?d °ËµÒÓ  @  „‘yX?d ð˵î­)Ù @  „’zX?d 0̵÷ãÚÖ @  „“{X?d p̵ô¹˜ @  „”|X?d °ÌµÔLšä @  „•}X?d ð̵$3` @  „–~X?d 0͵ô{ìu @  „—X?d p͵q»óº @  „˜€X?d °ÍµQNñD @  „™X?d ð͵¡1 = @  „š‚X?d 0εS­h @  „Ó»X?d pܵ= ï¤ @  „Ô¼X?d °ÜµüíZ @  „Õ½X?d ðܵíƒ# @  „Ö¾X?d 0ݵ=Ë›Ë @  „׿X?d pݵ¥ÍЖ @  „ØÀX?d °Ýµ…8Òh @  „ÙÁX?d ðݵuG( @  „ÚÂX?d 0ÞµèˆÐ @  „ÛÃX?d pÞµëYÊ @  „ÜÄX?d °ÞµˬÈâ @  „ÝÅX?d ðÞµ;Ó2› @  „ÞÆX?d 0ßµ뛾s @  „ßÇX?d pߵǢ_ @  „àÈX?d uÐàµ/°ßµçx ¡ @  „áÉX?d ðßµZØ @  „âÊX?d€ Hàµz`ˆ @  …ËX?d ˆàµ:M @  …ÌX?d Èàµ¸Ž“ @  …ÍX?d áµßaŠ1 @  …ÎX?d Háµ]ðï @  …ÏX?d ˆáµÄǰ% @  …ÐX?d ÈáµFV§û @  …ÑX?d âµgNµç @  …ÒX?d Hâµåߢ9 @  … ÓX?d ˆâµ¨8 @  … ÔX?d Èâµ9æ @  … ÕX?d ãµdÖƒD @  … ÖX?d HãµæG”š @  … ×X?d ˆãµ Û¼ @  …ØX?d È㵘±Ìb @  …ÙX?d äµ³P @  …ÚX?d H䵓¤Ž @  …ÛX?d ˆäµvä @  …ÜX?d ÈäµôuQ @  …ÝX?d 嵓š…ó @  …ÞX?d Håµ ’- @  …ßX?d ˆåµ‹†; @  …àX?d Èåµ—‘å @  …áX?d æµ¶ƒù @  …âX?d Hæµ4“”' @  …ãX?d ˆæµPä8& @  …äX?d ÈæµÒu/ø @  …åX?d çµµšµZ @  …æX?d Hçµ7 ¢„ @  …çX?d ˆçµËlí¢ @  …èX?d ÈçµIýú| @  …éX?d èµ}ùÝì @  … êX?d HèµÿhÊ2 @  …!ëX?d ˆèµ›f3 @  …"ìX?d È赎qí @  …#íX?d éµ~aëO @  …$îX?d Héµüðü‘ @  …%ïX?d ˆéµeÇÑ[ @  …&ðX?d ÈéµçVÆ… @  …'ñX?d êµÆNÔ™ @  …(òX?d HêµDßÃG @  …)óX?d ˆêµ ¨oF @  …*ôX?d Èêµ¢9x˜ @  …+õX?d ëµÅÖâ: @  …,öX?d HëµGGõä @  …-÷X?d ˆëµ» ºÂ @  ….øX?d Èëµ9±­ @  …/ùX?d ìµ1Ò. @  …0úX?d Hìµ³“Åð @  …1ûX?d ˆìµ×äiñ @  …2üX?d ÈìµUu~/ @  …3ýX?d íµ2šä @  …4þX?d Híµ° óS @  …5ÿX?d ˆíµ&zóÊ @  …6Y?d Èíµ¤ëä @  …7Y?d îµ…óö @  …8Y?d HîµbáÖ @  …9Y?d ˆîµcM× @  …:Y?d Èîµá„Z  @  …;Y?d ﵆kÀ« @  …<Y?d Hïµú×u @  …=Y?d ˆïµø˜S @  …>Y?d Èïµz  @  …? Y?d ðµj.ž  @  …@ Y?d Hðµ迉þ @  …A Y?d ˆðµŒÈ%ÿ @  …B Y?d ÈðµY2! @  …C Y?d ñµi¶¨ƒ @  …DY?d Hñµë'¿] @  …EY?d ˆñµr’— @  …FY?d Èñµð…I @  …GY?d òµÑ™—U @  …HY?d HòµS€‹ @  …IY?d ˆòµ7,Š @  …JY?d Èòµµî;T @  …KY?d óµÒ¡ö @  …LY?d HóµP¶( @  …MY?d ˆóµ¬÷ù @  …NY?d Èóµ.fîÐ @  …OY?d ôµ&Õ‘â @  …PY?d Hôµ¤D†< @  …QY?d ˆôµÀ3*= @  …RY?d ÈôµB¢=ã @  …SY?d õµ%M§A @  …TY?d Hõµ§Ü°Ÿ @  …UY?d ˆõµ£\¤‰ @  …V Y?d Èõµ!ͳW @  …W!Y?d öµÕ¡K @  …X"Y?d Höµ‚D¶• @  …Y#Y?d ˆöµæ3” @  …Z$Y?d Èöµd¢ J @  …[%Y?d ÷µM—è @  …\&Y?d H÷µÜ€6 @  …]'Y?d ˆ÷µ}»Ï @  …^(Y?d È÷µÿ*ØÎ @  …_)Y?d øµË.ÿ^ @  …`*Y?d HøµI¿è€ @  …a+Y?d ˆøµ-ÈD @  …b,Y?d Èøµ¯YS_ @  …c-Y?d ùµȶÉý @  …d.Y?d HùµJ'Þ# @  …e/Y?d ˆùµÓóé @  …f0Y?d ÈùµQä7 @  …g1Y?d úµp™ö+ @  …h2Y?d Húµòáõ @  …i3Y?d ˆúµ–Mô @  …j4Y?d ÈúµîZ* @  …k5Y?d ûµsÀˆ @  …l6Y?d Hûµñ×V @  …m7Y?d ˆûµ ÷˜p @  …n8Y?d Èûµf® @  …o9Y?d üµ‡Õðœ @  …p:Y?d HüµDçB @  …q;Y?d ˆüµa3KC @  …rY?d HýµÜÑá @  …u?Y?d ˆýµò Ðæ @  …v@Y?d ÈýµpÇ8 @  …wAY?d þµQ…Õ$ @  …xBY?d HþµÓÂú @  …yCY?d ˆþµ·cnû @  …zDY?d Èþµ5òy% @  …{EY?d ÿµR㇠@  …|FY?d HÿµÐŒôY @  …}GY?d ˆÿµ,ë» @  …~uжHY?d Èÿµ®z¬¡ @  …IY?d ¶ç!y˜ @  …€JY?d `¶e°nF @  …KY?d  ¶ÇÂG @  …‚LY?d ඃVÕ™ @  …ƒMY?d ¶ä¹O; @  …„NY?d `¶f(Xå @  ……OY?d  ¶ÿu/ @  …†PY?d à¶}Žbñ @  …‡QY?d ¶\–pí @  …ˆRY?d `¶Þg3 @  …‰SY?d  ¶ºpË2 @  …ŠTY?d à¶8áÜì @  …‹UY?d ¶_FN @  …ŒVY?d `¶ÝŸQ @  …WY?d  ¶!ø¶ @  …ŽXY?d à¶£i h @  …YY?d ¶«ÚvZ @  …ZY?d `¶)Ka„ @  …‘[Y?d  ¶M<Í… @  …’\Y?d à¶Ï­Ú[ @  …“]Y?d ¶¨B@ù @  …”^Y?d `¶*ÓW' @  …•_Y?d  ¶.SC1 @  …–`Y?d ඬÂTï @  …—aY?d ¶ÚFó @  …˜bY?d `¶KQ- @  …™cY?d  ¶k<ý, @  …šdY?d à¶é­êò @  …›eY?d ¶ŽBpP @  …œfY?d `¶ ÓgŽ @  …gY?d  ¶ð´(¨ @  …žhY?d à¶r%?v @  …ŸiY?d ¶F!æ @  … jY?d `¶İ8 @  …¡kY?d  ¶ Ç£9 @  …¢lY?d à¶"V´ç @  …£mY?d ¶E¹.E @  …¤nY?d ` ¶Ç(9› @  …¥oY?d   ¶^Q @  …¦pY?d à ¶ÜŽ @  …§qY?d ¶ý–“ @  …¨rY?d ` ¶M @  …©sY?d   ¶pªL @  …ªtY?d à ¶™á½’ @  …«uY?d ¶þ'0 @  …¬vY?d ` ¶|Ÿ0î @  …­wY?d   ¶€øÈ @  …®xY?d à ¶ih @  …¯yY?d ¶ Ú$ @  …°zY?d ` ¶ˆKú @  …±{Y?d   ¶ì<¬û @  …²|Y?d à ¶n­»% @  …³}Y?d ¶ B!‡ @  …´~Y?d ` ¶‹Ó6Y @  …µY?d   ¶bÅcÌ @  …¶€Y?d à ¶àTt @  …·Y?d ¶ÁLf @  …¸‚Y?d `¶CÝqÐ @  …¹ƒY?d  ¶'ªÝÑ @  …º„Y?d à¶¥;Ê @  …»…Y?d ¶ÂÔP­ @  …¼†Y?d `¶@EGs @  …½‡Y?d  ¶¼"U @  …¾ˆY?d à¶>³‹ @  …¿‰Y?d ¶.‘& @  …ÀŠY?d `¶¬ø @  …Á‹Y?d  ¶Èwµù @  …ÂŒY?d à¶Jæ¢' @  …ÃY?d ¶- 8… @  …ÄŽY?d `¶¯˜/[ @  …ÅY?d  ¶6¯‘ @  …ÆY?d à¶´>O @  …Ç‘Y?d ¶•&S @  …È’Y?d `¶· @  …É“Y?d  ¶sÀ¼Œ @  …Ê”Y?d à¶ñQ«R @  …Ë•Y?d ¶–¾1ð @  …Ì–Y?d `¶/&. @  …Í—Y?d  ¶èHi @  …ΘY?d à¶jÙ~Ö @  …Ï™Y?d ¶bjä @  …КY?d `¶àû: @  …Ñ›Y?d  ¶„Œº; @  …ÒœY?d à¶­å @  …ÓY?d ¶aò7G @  …ÔžY?d `¶ãc ™ @  …ÕŸY?d  ¶çã4 @  …Ö Y?d à¶er#Q @  …סY?d ¶Dj1M @  …Ø¢Y?d `¶Æû&“ @  …Ù£Y?d  ¶¢ŒŠ’ @  …Ú¤Y?d à¶ L @  …Û¥Y?d ¶Gòî @  …ܦY?d `¶Åc0 @  …ݧY?d  ¶9_ @  …Þ¨Y?d à¶»•HÈ @  …ß©Y?d ¶‘oX @  …àªY?d `¶ x† @  …á«Y?d  ¶iwÔ‡ @  …â¬Y?d€ à¶*¡4Y @  †­Y?d ¶¬æÒ @  †®Y?d `¶.žñ  @  †¯Y?d  ¶rà'+ @  †°Y?d à¶ɶì  @  † ±Y?d ¶&¡F @  † ²Y?d `¶¤¶˜ @  † ³Y?d  ¶HEã @  † ´Y?d à¶ŒÙR= @  † µY?d ¶.3r @  † ¶Y?d `¶¬î$¬ @  † ·Y?d  ¶•Àg @  † ¸Y?d à¶Q‡¹ @  † ¹Y?d ¶|ñ™ @  † ºY?d `¶þ`ŽÏ @  † »Y?d  ¶ùCT @  † ¼Y?d à¶{•TŠ @  † ½Y?d ¶Ù35Å @  † ¾Y?d `¶[¢" @  † ¿Y?d  ¶j;Øñ @  † ÀY?d à¶èªÏ/ @  † ÁY?d ¶‚I @  † ÂY?d `¶…‘•— @  † ÃY?d  ¶/Tfì @  † ÄY?d à¶­Åq2 @  † ÅY?d ¶c} @  † ÆY?d `¶ò£ @  † ÇY?d  ¶´Ü³huÐ ¶ @  † ÈY?d à¶Šxc @  †ÉY?d 8 ¶ oK¢ @  †ÊY?d x ¶Žþ\| @  †ËY?d ¸ ¶˜œ¶W @  † ÌY?d ø ¶ ¡‰ @  †!ÍY?d 8!¶¸«ÀÆ @  †"ÎY?d x!¶::× @  †#ÏY?d ¸!¶fD? @  †$ÐY?d ø!¶äÕá @  †%ÑY?d 8"¶ [‡ @  †&ÒY?d x"¶‰îLY @  †'ÓY?d ¸"¶#+¿" @  †(ÔY?d ø"¶¡º¨ü @  †)ÕY?d 8#¶ɳ @  †*ÖY?d x#¶Þm @  †+×Y?d ¸#¶¸£j¦ @  †,ØY?d ø#¶:2}x @  †-ÙY?d 8$¶Q’cÐ @  †.ÚY?d x$¶Ót @  †/ÛY?d ¸$¶Ôg¹• @  †0ÜY?d ø$¶Vö®K @  †1ÝY?d 8%¶ôPÏ @  †2ÞY?d x%¶vÁØÚ @  †3ßY?d ¸%¶·7! @  †4àY?d ø%¶5™ ÿ @  †5áY?d 8&¶Ú3m™ @  †6âY?d x&¶X¢zG @  †7ãY?d ¸&¶òg‰< @  †8äY?d ø&¶pöžâ @  †9åY?d 8'¶ÒPÿ­ @  †:æY?d x'¶PÁès @  †;çY?d ¸'¶iï\¸ @  †<èY?d ø'¶ë~Kf @  †=éY?d 8(¶­o*Ü @  †>êY?d x(¶/þ= @  †?ëY?d ¸(¶—›Ñ» @  †@ìY?d ø(¶ Æe @  †AíY?d 8)¶·¬§* @  †BîY?d x)¶5=°ô @  †CïY?d ¸)¶iCfÓ @  †DðY?d ø)¶ëÒq  @  †EñY?d 8*¶xÏÀ @  †cZ?d ¸1¶b±¨ @  †dZ?d ø1¶à v @  †eZ?d 82¶6MÅ @  †f Z?d x2¶´Ü‡ @  †g Z?d ¸2¶t` @  †h Z?d ø2¶œˆc¾ @  †i Z?d 83¶>.ñ @  †j Z?d x3¶¼¿/ @  †k Z?d ¸3¶…‘¡ä @  †l Z?d ø3¶¶: @  †m Z?d 84¶l ¨’ @  †n Z?d x4¶î1¿L @  †o Z?d ¸4¶éUr× @  †p Z?d ø4¶kÄe  @  †q Z?d 85¶ÉbF @  †r Z?d x5¶Kó˜ @  †s Z?d ¸5¶Š:üc @  †t  Z?d ø5¶«ë½ @  †u !Z?d 86¶ç¦Û @  †v "Z?d x6¶e± @  †w #Z?d ¸6¶ÏUB~ @  †x $Z?d ø6¶MÄU  @  †y %Z?d 87¶ïb4ï @  †z &Z?d x7¶mó#1 @  †{ 'Z?d ¸7¶TÝ—ú @  †| (Z?d ø7¶ÖL€$ @  †} )Z?d 88¶]áž @  †~ *Z?d x8¶Ìö@ @  † +Z?d ¸8¶Iÿ*È @  †€ ,Z?d ø8¶Ën= @  † -Z?d 89¶iÈ\Y @  †‚ .Z?d x9¶ëYK‡ @  †ƒ /Z?d ¸9¶·'  @  †„ 0Z?d ø9¶5¶Š~ @  †… 1Z?d 8:¶ÚÇ @  †† 2Z?d x:¶XÐÆ @  †‡ 3Z?d ¸:¶òH#½ @  †ˆ 4Z?d ø:¶pÙ4c @  †‰ 5Z?d 8;¶ÒU, @  †Š 6Z?d x;¶PîBò @  †‹ 7Z?d ¸;¶iÀö9 @  †Œ 8Z?d ø;¶ëQáç @  † 9Z?d 8<¶€ñÿO @  †Ž :Z?d x<¶`è‘ @  † ;Z?d ¸<¶%  @  † Z?d x=¶§¢DE @  †“ ?Z?d ¸=¶–;¾¯ @  †” @Z?d ø=¶ª©q @  †• AZ?d 8>¶ûä @  †– BZ?d x>¶y‘óÉ @  †— CZ?d ¸>¶ÓT² @  †˜ DZ?d ø>¶QÅl @  †™ EZ?d 8?¶ócv# @  †š FZ?d x?¶qòaý @  †› GZ?duÐ@¶7 ¸?¶HÜÕ6 @  †œ HZ?d ø?¶óŠ= @  †IZ?d P@¶BÈI¦ @  †žJZ?d @¶b=KX @  †ŸKZ?d Ð@¶Ö;´S @  † LZ?d A¶s8» @  †¡MZ?d PA¶ö  @  †¢NZ?d A¶ÖùÀ< @  †£OZ?d ÐA¶(ã; @  †¤PZ?d B¶µ§£ú @  †¥QZ?d PB¶EØYƒ @  †¦RZ?d B¶e-[} @  †§SZ?d ÐB¶mŒ½& @  †¨TZ?d C¶½Ä1Î @  †©UZ?d PC¶M»Ë· @  †ªVZ?d C¶mNÉI @  †«WZ?d ÐC¶öh¢ @  †¬XZ?d D¶ïJ›­ @  †­YZ?d PD¶5aÔ @  †®ZZ?d D¶?Àc* @  †¯[Z?d ÐD¶šÀ»‘ @  †°\Z?d E¶Jˆ7y @  †±]Z?d PE¶º÷Í @  †²^Z?d E¶šÏþ @  †³_Z?d ÐE¶ù¯5% @  †´`Z?d F¶dë•ä @  †µaZ?d PF¶””o @  †¶bZ?d F¶´amc @  †·cZ?d ÐF¶¼À‹8 @  †¸dZ?d G¶lˆÐ @  †¹eZ?d PG¶œ÷ý© @  †ºfZ?d G¶¼ÿW @  †»gZ?d ÐG¶'H^¼ @  †¼hZ?d H¶·Ò¡ @  †½iZ?d PH¶ãÈ(Ø @  †¾jZ?d H¶Ã=*& @  †¿kZ?d ÐH¶Ù<Ó¿ @  †ÀlZ?d I¶ t_W @  †ÁmZ?d PI¶ù ¥. @  †ÂnZ?d I¶Ùþ§Ð @  †ÃoZ?d ÐI¶'äd× @  †ÄpZ?d J¶º Ä @  †ÅqZ?d PJ¶Jß>o @  †ÆrZ?d J¶j*<‘ @  †ÇsZ?d ÐJ¶b‹ÚÊ @  †ÈtZ?d K¶²ÃV" @  †ÉuZ?d PK¶B¼¬[ @  †ÊvZ?d K¶bI®¥ @  †ËwZ?d ÐK¶ùN @  †ÌxZ?d L¶àMüA @  †ÍyZ?d PL¶28 @  †ÎzZ?d L¶0ÇÆ @  †Ï{Z?d ÐL¶•ÇÜ} @  †Ð|Z?d M¶EP• @  †Ñ}Z?d PM¶µðªì @  †Ò~Z?d M¶•¨ @  †ÓZ?d ÐM¶>J @  †Ô€Z?d N¶†z³‹ @  †ÕZ?d PN¶vIò @  †Ö‚Z?d N¶VðK  @  †×ƒZ?d ÐN¶^Q­W @  †Ø„Z?d O¶Ž!¿ @  †Ù…Z?d PO¶~fÛÆ @  †Ú†Z?d O¶^“Ù8 @  †Û‡Z?d ÐO¶ÅÙxÓ @  †ÜˆZ?d P¶{Äa @  †Ý‰Z?d PP¶‹x> @  †ÞŠZ?d P¶«<æ @  †ß‹Z?d ÐP¶‹Ãí @  †àŒZ?d Q¶ÏÃO @  †áZ?d PQ¶?¼µ| @  †âŽZ?d€ Q¶kŠ«$ @  ‡Z?d ÐQ¶tÑ  @  ‡Z?d R¶é•€Ë @  ‡‘Z?d PR¶Ü£_ @  ‡’Z?d R¶üVƒ¡ @  ‡“Z?d ÐR¶:E:€ @  ‡”Z?d S¶ê ¶h @  ‡•Z?d PS¶ÔÀk @  ‡–Z?d S¶ô5• @  ‡ —Z?d ÐS¶ª6K“ @  ‡ ˜Z?d T¶³x¸œ @  ‡ ™Z?d PT¶†N¹ @  ‡ šZ?d T¶¦»»ö @  ‡ ›Z?d ÐT¶`¨× @  ‡œZ?d U¶°àŽ? @  ‡Z?d PU¶#ŒÜ @  ‡žZ?d U¶y" @  ‡ŸZ?d ÐU¶¥ @  ‡ Z?d V¶8Ù¶Õ @  ‡¡Z?d PV¶ ï·A @  ‡¢Z?d V¶-µ¿ @  ‡£Z?d ÐV¶ë ž @  ‡¤Z?d W¶;A€v @  ‡¥Z?d PW¶Œ%u @  ‡¦Z?d W¶%y'‹ @  ‡§Z?d ÐW¶{z} @  ‡¨Z?d X¶O…ñ @  ‡©Z?d PX¶z³ð @  ‡ªZ?d X¶ZFòú @  ‡«Z?d ÐX¶œUKÛ @  ‡¬Z?d Y¶LÇ3 @  ‡­Z?d PY¶Îw{` @  ‡ ®Z?d Y¶î‚yž @  ‡!¯Z?d ÐY¶ÕÑAt @  ‡"°Z?d Z¶H•áµ @  ‡#±Z?d PZ¶}£à! @  ‡$²Z?d Z¶]Vâß @  ‡%³Z?d ÐZ¶›E[þ @  ‡&´Z?d [¶K × @  ‡'µZ?d P[¶uÀr @  ‡(¶Z?d [¶U5pë @  ‡)·Z?d Ð[¶ 6*í @  ‡*¸Z?d \¶xÙâ @  ‡+¹Z?d P\¶'NØv @  ‡,ºZ?d \¶»Úˆ @  ‡-»Z?d Ð\¶Á¨c© @  ‡.¼Z?d ]¶àïA @  ‡/½Z?d P]¶‚Œt¢ @  ‡0¾Z?d ]¶¢yv\ @  ‡1¿Z?d Ð]¶ôÍb{ @  ‡2ÀZ?d ^¶i‰Âº @  ‡3ÁZ?d P^¶\¿Ã. @  ‡4ÂZ?d ^¶|JÁÐ @  ‡5ÃZ?d Ð^¶ºYxñ @  ‡6ÄZ?d _¶jô @  ‡7ÅZ?d P_¶TÜQ @  ‡8ÆZ?d _¶t)Sä @  ‡uÐ`¶9ÇZ?d Ð_¶** â @  ‡:ÈZ?d (`¶”Ò¼z @  ‡;ÉZ?d h`¶¡ä½î @  ‡<ÊZ?d ¨`¶¿ @  ‡=ËZ?d è`¶G1 @  ‡>ÌZ?d (a¶—JŠÙ @  ‡?ÍZ?d ha¶»'0 @  ‡@ÎZ?d ¨a¶›Ò2æ @  ‡AÏZ?d èa¶   @  ‡BÐZ?d (b¶=ŪÍ @  ‡CÑZ?d hb¶ó«Y @  ‡DÒZ?d ¨b¶(©§ @  ‡EÓZ?d èb¶î† @  ‡FÔZ?d (c¶>]œn @  ‡GÕZ?d hc¶9m @  ‡HÖZ?d ¨c¶ e;“ @  ‡I×Z?d èc¶~fa• @  ‡JØZ?d (d¶g(’š @  ‡KÙZ?d hd¶R“ @  ‡LÚZ?d ¨d¶rë‘ð @  ‡MÛZ?d èd¶´ø(Ñ @  ‡NÜZ?d (e¶d°¤9 @  ‡OÝZ?d he¶÷Ü?Ú @  ‡PÞZ?d ¨e¶×)=$ @  ‡QßZ?d èe¶qÍ< @  ‡RàZ?d (f¶쉜Ó @  ‡SáZ?d hf¶Ù¿G @  ‡TâZ?d ¨f¶ùJŸ¹ @  ‡UãZ?d èf¶?Y&˜ @  ‡VäZ?d (g¶ïªp @  ‡WåZ?d hg¶ÑÜs @  ‡XæZ?d ¨g¶ñ)  @  ‡YçZ?d èg¶¯*W‹ @  ‡ZèZ?d (h¶›ÕÛ– @  ‡[éZ?d hh¶®ãÚ @  ‡\êZ?d ¨h¶ŽØü @  ‡]ëZ?d èh¶HaÝ @  ‡^ìZ?d (i¶˜Mí5 @  ‡_íZ?d hi¶'Qf @  ‡`îZ?d ¨i¶:ÒS˜ @  ‡aïZ?d èi¶kr @  ‡bðZ?d (j¶œÅ˳ @  ‡cñZ?d hj¶©óÊ' @  ‡dòZ?d ¨j¶‰ÈÙ @  ‡eóZ?d èj¶Oqø @  ‡fôZ?d (k¶Ÿ]ý @  ‡gõZ?d hk¶¡X @  ‡höZ?d ¨k¶eZí @  ‡i÷Z?d èk¶ßfë @  ‡jøZ?d (l¶Æ(óä @  ‡kùZ?d hl¶óòp @  ‡lúZ?d ¨l¶ÓëðŽ @  ‡mûZ?d èl¶øI¯ @  ‡nüZ?d (m¶ŰÅG @  ‡oýZ?d hm¶VÜ^¤ @  ‡pþZ?d ¨m¶v)\Z @  ‡qÿZ?d èm¶BÄ @  ‡”"[?d ¨v¶¬Ë: @  ‡•#[?d èv¶jØ4 @  ‡–$[?d (w¶º¸ó @  ‡—%[?d hw¶„]ð @  ‡˜&[?d ¨w¶¤¨ @  ‡™'[?d èw¶ú«E @  ‡š([?d (x¶ÎTÉ @  ‡›)[?d hx¶ûbÈ @  ‡œ*[?d ¨x¶Û—Ê @  ‡+[?d èx¶„s^ @  ‡ž,[?d (y¶ÍÌÿ¶ @  ‡Ÿ-[?d hy¶O¦Cå @  ‡ .[?d ¨y¶oSA @  ‡¡/[?d èy¶Tyñ @  ‡¢0[?d (z¶ÉDÙ0 @  ‡£1[?d hz¶ürؤ @  ‡¤2[?d ¨z¶܇ÚZ @  ‡¥3[?d èz¶”c{ @  ‡¦4[?d ({¶ÊÜï“ @  ‡§5[?d h{¶ôJ @  ‡¨6[?d ¨{¶ÔäHn @  ‡©7[?d è{¶Šçh @  ‡ª8[?d (|¶“©ág @  ‡«9[?d h|¶¦Ÿàó @  ‡¬:[?d ¨|¶†jâ  @  ‡­;[?d è|¶@y[, @  ‡®<[?d (}¶1×Ä @  ‡¯=[?d h}¶]L' @  ‡°>[?d ¨}¶#¨NÙ @  ‡±?[?d è}¶uZþ @  ‡²@[?d (~¶èXú? @  ‡³A[?d h~¶Ýnû« @  ‡´B[?d ¨~¶ý›ùU @  ‡µC[?d è~¶;ˆ@t @  ‡¶D[?d (¶ëÀÌœ @  ‡·E[?d h¶Õ iŸ @  ‡¸F[?d ¨¶uЀ¶'õøka @  ‡¹G[?d è¶«û1g @  ‡ºH[?d @€¶ÅEÓ @  ‡»I[?d €€¶Rǧ @  ‡¼J[?d À€¶ІÐy @  ‡½K[?d ¶DLòn @  ‡¾L[?d @¶ÆÝå° @  ‡¿M[?d €¶HÔJQ @  ‡ÀN[?d À¶ÊE] @  ‡ÁO[?d ‚¶îÃÒz @  ‡ÂP[?d @‚¶lRŤ @  ‡ÃQ[?d €‚¶ûÑ @  ‡ÄR[?d À‚¶y‘ÆÎ @  ‡ÅS[?d ƒ¶í[äÙ @  ‡ÆT[?d @ƒ¶oÊó @  ‡ÇU[?d €ƒ¶ócC$ @  ‡ÈV[?d Àƒ¶qòTú @  ‡ÉW[?d „¶´.ê- @  ‡ÊX[?d @„¶6¿ýó @  ‡ËY[?d €„¶¡íéG @  ‡ÌZ[?d À„¶#|þ™ @  ‡Í[[?d …¶·¶ÜŽ @  ‡Î\[?d @…¶5'ËP @  ‡Ï][?d €…¶/E“ @  ‡Ð^[?d À…¶†¾RM @  ‡Ñ_[?d †¶?äd @  ‡Ò`[?d @†¶½óº @  ‡Óa[?d €†¶*Lç @  ‡Ôb[?d À†¶¨ÝðÐ @  ‡Õc[?d ‡¶<ÒÇ @  ‡Öd[?d @‡¶¾†Å @  ‡×e[?d €‡¶"/u: @  ‡Øf[?d À‡¶ ¾bä @  ‡Ùg[?d ˆ¶HÓ£! @  ‡Úh[?d @ˆ¶ÊB´ÿ @  ‡Ûi[?d €ˆ¶] K @  ‡Üj[?d Àˆ¶ß·• @  ‡Ýk[?d ‰¶KK•‚ @  ‡Þl[?d @‰¶ÉÚ‚\ @  ‡ßm[?d €‰¶éÔ+/ @  ‡àn[?d À‰¶kE<ñ @  ‡áo[?d жOó @  ‡âp[?d€ @жåȰˆ @  ˆq[?d €Š¶“Ûì @  ˆr[?d ÀжJûË @  ˆs[?d ‹¶@É"1 @  ˆt[?d @‹¶ÂX5ï @  ˆu[?d €‹¶CÚ¶ @  ˆv[?d À‹¶ÒÍh @  ˆw[?d Œ¶¼,Å @  ˆx[?d @Œ¶›-; @  ˆ y[?d €Œ¶É6ÔB @  ˆ z[?d ÀŒ¶K§Ãœ @  ˆ {[?d ¶$f @  ˆ |[?d @¶˜µ ¸ @  ˆ }[?d €¶Ê®âá @  ˆ~[?d À¶H?õ? @  ˆ[?d ޶‹c @  ˆ€[?d @޶ýtÑ @  ˆ[?d €Ž¶¯›ˆ @  ˆ‚[?d À޶-ŒV @  ˆƒ[?d ¶|U¬ @  ˆ„[?d @¶þ‚Br @  ˆ…[?d €¶¬™­+ @  ˆ†[?d À¶.ºõ @  ˆ‡[?d ¶‚öå @  ˆˆ[?d @¶g; @  ˆ‰[?d €¶R|ìb @  ˆŠ[?d À¶Ðíû¼ @  ˆ‹[?d ‘¶n"F @  ˆŒ[?d @‘¶ÿ5˜ @  ˆ[?d €‘¶QäÚÁ @  ˆŽ[?d À‘¶ÓuÍ @  ˆ[?d ’¶…æÀ @  ˆ [?d @’¶w @  ˆ!‘[?d €’¶UlüG @  ˆ"’[?d À’¶×ýë™ @  ˆ#“[?d “¶†~2c @  ˆ$”[?d @“¶ï%½ @  ˆ%•[?d €“¶VôÊä @  ˆ&–[?d À“¶ÔeÝ: @  ˆ'—[?d ”¶ß <— @  ˆ(˜[?d @”¶]š+I @  ˆ)™[?d €”¶Ä @  ˆ*š[?d À”¶ÓÎ @  ˆ+›[?d •¶Ü“ 4 @  ˆ,œ[?d @•¶^ê @  ˆ-[?d €•¶ ò³ @  ˆ.ž[?d À•¶Žˆåm @  ˆ/Ÿ[?d –¶Tª2Þ @  ˆ0 [?d @–¶Ö;% @  ˆ1¡[?d €–¶„ ÊY @  ˆ2¢[?d À–¶±Ý‡ @  ˆ3£[?d —¶W2} @  ˆ4¤[?d @—¶Õ££ @  ˆ5¥[?d €—¶‡¸üú @  ˆ6¦[?d À—¶)ë$ @  ˆ7§[?d ˜¶#öu› @  ˆ8¨[?d @˜¶¡gbE @  ˆ9©[?d €˜¶ó| @  ˆ:ª[?d À˜¶qíšÂ @  ˆ;«[?d ™¶ nC8 @  ˆ<¬[?d @™¶¢ÿTæ @  ˆ=­[?d €™¶ð仿 @  ˆ>®[?d À™¶ru¬a @  ˆ?¯[?d š¶Šác, @  ˆ@°[?d @š¶ptò @  ˆA±[?d €š¶Zk›« @  ˆB²[?d Àš¶ØúŒu @  ˆC³[?d ›¶‰yU @  ˆD´[?d @›¶ èBQ @  ˆEµ[?d €›¶Yó­ @  ˆF¶[?d À›¶ÛbºÖ @  ˆG·[?d œ¶Ð [{ @  ˆH¸[?d @œ¶RL¥ @  ˆI¹[?d €œ¶†£ü @  ˆJº[?d Àœ¶‚´" @  ˆK»[?d ¶Ó”mØ @  ˆL¼[?d @¶Qz @  ˆM½[?d €¶•_ @  ˆN¾[?d À¶‚ @  ˆO¿[?d ž¶«ý@# @  ˆPÀ[?d @ž¶)lWý @  ˆQÁ[?d €ž¶{w¸¤ @  ˆRÂ[?d Àž¶ùæ¯z @  ˆSÃ[?d Ÿ¶¨ev€ @  ˆTÄ[?d @Ÿ¶*ôa^ @  ˆUÅ[?d €Ÿ¶xïŽ @  ˆVÆ[uР¶?d ÀŸ¶ú~™Ù @  ˆWÇ[?d  ¶™UU @  ˆXÈ[?d X ¶ÄBà @  ˆYÉ[?d ˜ ¶Iß­š @  ˆZÊ[?d Ø ¶ËNºD @  ˆ[Ë[?d ¡¶šÍc¾ @  ˆ\Ì[?d X¡¶\t` @  ˆ]Í[?d ˜¡¶JG›9 @  ˆ^Î[?d Ø¡¶ÈÖŒç @  ˆ_Ï[?d ¢¶žEE8 @  ˆ`Ð[?d X¢¶ÔRæ @  ˆaÑ[?d ˜¢¶NϽ¿ @  ˆbÒ[?d Ø¢¶Ì^ªa @  ˆcÓ[?d £¶Ýs› @  ˆdÔ[?d X£¶LdE @  ˆeÕ[?d ˜£¶MW‹ @  ˆfÖ[?d Ø£¶ÏƜ @  ˆg×[?d ¤¶Ĩ}o @  ˆhØ[?d X¤¶F9j± @  ˆiÙ[?d ˜¤¶"…è @  ˆjÚ[?d ؤ¶–³’6 @  ˆkÛ[?d ¥¶Ç0KÌ @  ˆlÜ[?d X¥¶E¡\ @  ˆmÝ[?d ˜¥¶º³K @  ˆnÞ[?d Ø¥¶•+¤• @  ˆoß[?d ¦¶O s& @  ˆpà[?d X¦¶͘dø @  ˆqá[?d ˜¦¶Ÿƒ‹¡ @  ˆrâ[?d ئ¶œ @  ˆsã[?d §¶L‘E… @  ˆtä[?d X§¶ÎR[ @  ˆuå[?d ˜§¶œ½ @  ˆvæ[?d ا¶ŠªÜ @  ˆwç[?d ¨¶8U4c @  ˆxè[?d X¨¶ºÄ#½ @  ˆyé[?d ˜¨¶èßÌä @  ˆzê[?d ب¶jNÛ: @  ˆ{ë[?d ©¶;ÍÀ @  ˆ|ì[?d X©¶¹\ @  ˆ}í[?d ˜©¶ëGúG @  ˆ~î[?d Ø©¶iÖí™ @  ˆï[?d ª¶rå @  ˆ€ð[?d Xª¶ð…; @  ˆñ[?d ˜ª¶¢žêb @  ˆ‚ò[?d ت¶ ý¼ @  ˆƒó[?d «¶qŒ$F @  ˆ„ô[?d X«¶ó3˜ @  ˆ…õ[?d ˜«¶¡ÜÁ @  ˆ†ö[?d Ø«¶#—Ë @  ˆ‡÷[?d ¬¶(ù*² @  ˆˆø[?d X¬¶ªh=l @  ˆ‰ù[?d ˜¬¶øsÒ5 @  ˆŠú[?d ج¶zâÅë @  ˆ‹û[?d ­¶+a @  ˆŒü[?d X­¶©ð Ï @  ˆý[?d ˜­¶ûëä– @  ˆŽþ[?d Ø­¶yzóH @  ˆÿ[?d ®¶  â @  ˆ\?d X®¶1< @  ˆ‘\?d ˜®¶Ý*÷e @  ˆ’\?d Ø®¶_»à» @  ˆ“\?d ¯¶89A @  ˆ”\?d X¯¶Œ©.Ÿ @  ˆ•\?d ˜¯¶Þ²ÁÆ @  ˆ–\?d د¶\#Ö @  ˆ—\?d °¶ðÝx @  ˆ˜\?d X°¶rLoÖ @  ˆ™ \?d ˜°¶ W€ @  ˆš \?d ذ¶¢Æ—Q @  ˆ› \?d ±¶óEN« @  ˆœ \?d X±¶qÔYu @  ˆ \?d ˜±¶#϶, @  ˆž\?d ر¶¡^¡ò @  ˆŸ\?d ²¶÷Íh- @  ˆ \?d X²¶u\ó @  ˆ¡\?d ˜²¶'Gª @  ˆ¢\?d ز¶¥Ö‡t @  ˆ£\?d ³¶ôU^Ž @  ˆ¤\?d X³¶vÄIP @  ˆ¥\?d ˜³¶$ߦ  @  ˆ¦\?d س¶¦N±× @  ˆ§\?d ´¶­ Pz @  ˆ¨\?d X´¶/±G¤ @  ˆ©\?d ˜´¶}ª¨ý @  ˆª\?d Ø´¶ÿ;¿# @  ˆ«\?d µ¶®¸fÙ @  ˆ¬\?d Xµ¶,)q @  ˆ­\?d ˜µ¶~2ž^ @  ˆ®\?d ص¶ü£‰€ @  ˆ¯\?d ¶¶&^3 @  ˆ° \?d X¶¶¤Ií @  ˆ±!\?d ˜¶¶ö ¦´ @  ˆ²"\?d ض¶tš±j @  ˆ³#\?d ·¶%h @  ˆ´$\?d X·¶§ˆN @  ˆµ%\?d ˜·¶õ“ @  ˆ¶&\?d Ø·¶w‡É @  ˆ·'\?d ¸¶QÝv @  ˆ¸(\?d X¸¶ÓL¨ @  ˆ¹)\?d ˜¸¶Wáñ @  ˆº*\?d ظ¶Æö/ @  ˆ»+\?d ¹¶RE/Õ @  ˆ¼,\?d X¹¶ÐÔ8  @  ˆ½-\?d ˜¹¶‚Ï×R @  ˆ¾.\?d ع¶^ÀŒ @  ˆ¿/\?d º¶øÊÁ @  ˆÀ0\?d Xº¶z[ @  ˆÁ1\?d ˜º¶(@÷F @  ˆÂ2\?d غ¶ªÑà˜ @  ˆÃ3\?d »¶ûR9b @  ˆÄ4\?d X»¶yÃ.¼ @  ˆÅ5\?d ˜»¶+ØÁå @  ˆÆ6\?d Ø»¶©IÖ; @  ˆÇ7\?d ¼¶¢'7– @  ˆÈ8\?d X¼¶ ¶ H @  ˆÉ9\?d ˜¼¶r­Ï @  ˆÊ:\?d ؼ¶ð<ØÏ @  ˆË;\?d ½¶¡¿5 @  ˆÌ<\?d X½¶#.ë @  ˆÍ=\?d ˜½¶q5ù² @  ˆÎ>\?d ؽ¶ó¤îl @  ˆÏ?\?d ¾¶ÙÖ,Î @  ˆÐ@\?d X¾¶[G; @  ˆÑA\?d ˜¾¶ \ÔI @  ˆÒB\?d ؾ¶‹Í× @  ˆÓC\?d ¿¶ÚNm @  ˆÔD\?d X¿¶Xß ³ @  ˆÕE\?d ˜¿¶ Äâê @uÐÀ¶  ˆÖF\?d Ø¿¶ˆUõ4 @  ˆ×G\?d 0À¶þ…¶Ä @  ˆØH\?d pÀ¶|¡ @  ˆÙI\?d °À¶.NC @  ˆÚJ\?d ðÀ¶¬žY @  ˆÛK\?d 0Á¶ý€g @  ˆÜL\?d pÁ¶Œ—¹ @  ˆÝM\?d °Á¶-—xà @  ˆÞN\?d ðÁ¶¯o> @  ˆßO\?d 0¶ù•¦á @  ˆàP\?d p¶{±? @  ˆáQ\?d °Â¶)^f @  ˆâR\?d€ ð¶ßMU @  ‰S\?d 0öoÄÍ @  ‰T\?d pöíÓ @  ‰U\?d °Ã¶zLǧ @  ‰V\?d ðöøÝÐy @  ‰W\?d 0Ķ=n® @  ‰X\?d pĶ¿yp @  ‰Y\?d °Ä¶#9ÉS @  ‰Z\?d ðĶ¡¨Þ @  ‰ [\?d 0Ŷ5büš @  ‰ \\?d pŶ·óëD @  ‰ ]\?d °Å¶ ¡ÿð @  ‰ ^\?d ðŶ¢0è. @  ‰ _\?d 0ƶ^ @  ‰`\?d pƶ™IÙ @  ‰a\?d °Æ¶¨˜Ç @  ‰b\?d ðƶ* ÐÄ @  ‰c\?d 0Ƕ¾ÃòÓ @  ‰d\?d pǶ… @  ‰>\?d pÒ¶>m)[ @  ‰?‘\?d °Ò¶°d†º @  ‰@’\?d ðÒ¶2õ‘d @  ‰A“\?d 0Ó¶¦?³s @  ‰B”\?d pÓ¶$®¤­ @  ‰C•\?d °Ó¶³ü° @  ‰D–\?d ðÓ¶1m§Ç @  ‰E—\?d 0Ô¶ô± @  ‰F˜\?d pÔ¶v Î @  ‰G™\?d °Ô¶ꉾí @  ‰Hš\?d ðÔ¶h©3 @  ‰I›\?d 0Õ¶üÒ‹$ @  ‰Jœ\?d pÕ¶~Cœú @  ‰K\?d °Õ¶éˆN @  ‰Lž\?d ðÕ¶k€Ÿ @  ‰MŸ\?d 0Ö¶Ò±)¹ @  ‰N \?d pÖ¶P >g @  ‰O¡\?d °Ö¶a(°¤ @  ‰P¢\?d ðÖ¶ã¹§z @  ‰Q£\?d 0×¶ws…m @  ‰R¤\?d p×¶õâ’³ @  ‰S¥\?d °×¶b°† @  ‰T¦\?d ð×¶à!‘Ù @  ‰U§\?d 0ضLP @  ‰V¨\?d pضŠÝG @  ‰W©\?d °Ø¶t÷á @  ‰Xª\?d ðض”åà? @  ‰Y«\?d 0Ù¶/Â( @  ‰Z¬\?d pÙ¶‚¾Õö @  ‰[­\?d °Ù¶ìÁB @  ‰\®\?d ðÙ¶—}Öœ @  ‰]¯\?d 0Ú¶³ûYi @  ‰^°\?d pÚ¶1jN· @  ‰_±\?d °Ú¶dçÄ @  ‰`²\?d ðÚ¶“õð @  ‰a³\?d 0Û¶?Ò  @  ‰b´\?d pÛ¶…®ÅÓ @  ‰cµ\?d °Û¶üÑg @  ‰d¶\?d ðÛ¶mƹ @  ‰e·\?d 0ܶU±xn @  ‰f¸\?d pܶ× o° @  ‰g¹\?d °Ü¶K‰ß“ @  ‰hº\?d ðܶÉÈM @  ‰i»\?d 0ݶ]ÒêZ @  ‰j¼\?d pݶßCý„ @  ‰k½\?d °Ý¶Hé0 @  ‰l¾\?d ðݶÊ€þî @  ‰m¿\?d 0Þ¶ƒá]Ö @  ‰nÀ\?d pÞ¶pJ @  ‰oÁ\?d °Þ¶0xÄË @  ‰pÂ\?d ðÞ¶²éÓ @  ‰qÃ\?d 0ß¶&#ñ @  ‰rÄ\?d pß¶¤²æÜ @  ‰sÅ\?d uÐà¶/°ß¶3àòh @  ‰tÆ\?d ðß¶±qå¶ @  ‰uÇ\?d Hà¶tGö˜ @  ‰vÈ\?d ˆà¶T²ôf @  ‰wÉ\?d Èà¶jQe @  ‰xÊ\?d ᶺ7Ý @  ‰yË\?d Há¶|$d¬ @  ‰zÌ\?d ˆá¶\ÑfR @  ‰{Í\?d Èá¶içgÆ @  ‰|Î\?d â¶ô£Ç @  ‰}Ï\?d Hâ¶Ïðÿí @  ‰~Ð\?d ˆâ¶ïý @  ‰Ñ\?d Èâ¶ >wã @  ‰€Ò\?d ã¶ðvû  @  ‰Ó\?d Hã¶6eB* @  ‰‚Ô\?d ˆã¶@Ô @  ‰ƒÕ\?d Èã¶#¦A@ @  ‰„Ö\?d ä¶:è²O @  ‰…×\?d Hä¶dëèI @  ‰†Ø\?d ˆä¶Dê· @  ‰‡Ù\?d Èä¶zÓO´ @  ‰ˆÚ\?d 嶪›Ã\ @  ‰‰Û\?d Hå¶lˆz} @  ‰ŠÜ\?d ˆå¶L}xƒ @  ‰‹Ý\?d Èå¶yKy @  ‰ŒÞ\?d æ¶äÙÖ @  ‰ß\?d Hæ¶BëØà @  ‰Žà\?d ˆæ¶bÚ @  ‰á\?d Èæ¶ñrAý @  ‰â\?d ç¶!:Í @  ‰‘ã\?d Hç¶ç)t4 @  ‰’ä\?d ˆç¶ÇÜvÊ @  ‰“å\?d Èç¶òêw^ @  ‰”æ\?d è¶ÆûC @  ‰•ç\?d H趘¡E @  ‰–è\?d ˆè¶¸ã£» @  ‰—é\?d È趆.¸ @  ‰˜ê\?d é¶VfŠP @  ‰™ë\?d Hé¶u3q @  ‰šì\?d ˆé¶°€1 @  ‰›í\?d Èé¶…¶0 @  ‰œî\?d ê¶òÚ @  ‰ï\?d Hê¶#¡¨0 @  ‰žð\?d ˆê¶TªÎ @  ‰Ÿñ\?d Èê¶> @  ‰ ò\?d ë¶Qvšu @  ‰¡ó\?d Hë¶—e#T @  ‰¢ô\?d ˆë¶·!ª @  ‰£õ\?d Èë¶‚¦ > @  ‰¤ö\?d ì¶›èÓ1 @  ‰¥÷\?d Hì¶Åë‰7 @  ‰¦ø\?d ˆì¶å‹É @  ‰§ù\?d Èì¶ÛÓ.Ê @  ‰¨ú\?d í¶ ›¢" @  ‰©û\?d Hí¶͈ @  ‰ªü\?d ˆí¶í}ý @  ‰«ý\?d Èí¶ØKi @  ‰¬þ\?d î¶E¸¨ @  ‰­ÿ\?d Hî¶q­ @  ‰®]?d ˆî¶Qï¯ï @  ‰¯]?d È4  @  ‰°]?d ï¶˸ä @  ‰±]?d Hï¶ÔØÅ @  ‰²]?d ˆï¶ô-; @  ‰³]?d Èï¶Á¯ @  ‰´]?d ð¶ž @  ‰µ]?d Hð¶!Æä @  ‰¶]?d ˆð¶3æå @  ‰· ]?d Èð¶?þCæ @  ‰¸ ]?d ñ¶ï¶Ï @  ‰¹ ]?d Hñ¶)¥v/ @  ‰º ]?d ˆñ¶ PtÑ @  ‰» ]?d Èñ¶]?d þ¶ÓÞ%3 @  Š ?]?d Hþ¶@#Êù @  Š @]?d ˆþ¶`ÖÈ @  Š A]?d Èþ¶©2~ @  ŠB]?d ÿ¶@á¾– @  ŠC]?d Hÿ¶åáf- @  ŠD]?d ˆÿ¶ÅdÓ @  ŠuзE]?d Èÿ¶5kžª @  ŠF]?d ·zß¶[ @  ŠG]?d `·á•° @  ŠH]?d  ·Á`N @  ŠI]?d à·1ï7 @  ŠJ]?d ·áWcß @  ŠK]?d `·éö…„ @  ŠL]?d  ·É‡z @  ŠM]?d à·9|} @  ŠN]?d ·¤8Ý @  ŠO]?d `·Z"Å @  ŠP]?d  ·z×; @  ŠQ]?d à·ЍæB @  ŠR]?d ·Zàjª @  ŠS]?d `·îæ•¡ @  Š T]?d  ·Î—_ @  Š!U]?d à·>lm& @  Š"V]?d ·'"ž) @  Š#W]?d `·¼h? @  Š$X]?d  ·œ=< @  Š%Y]?d à·lâÇE @  Š&Z]?d ·¼ªK­ @  Š'[]?d `·´ ­ö @  Š(\]?d  ·”þ¯ @  Š)]]?d à·dUq @  Š*^]?d ·ùÅõ° @  Š+_]?d `·šhk @  Š,`]?d  ·º • @  Š-a]?d à·Jâ÷ì @  Š.b]?d ·šª{ @  Š/c]?d `·?ª£¿ @  Š0d]?d  ·_¡A @  Š1e]?d à·ï [8 @  Š2f]?d ·Ûß×% @  Š3g]?d `·@•vÎ @  Š4h]?d  ·``t0 @  Š5i]?d à·ŽI @  Š6j]?d ·@W¡ @  Š7k]?d ` ·Höäú @  Š8l]?d   ·hæ @  Š9m]?d à ·˜|} @  Š:n]?d ·8¼¼ @  Š;o]?d ` ·û"» @  Š<p]?d   ·Û×}E @  Š=q]?d à ·+¨‡< @  Š>r]?d ·ûà Ô @  Š?s]?d ` ·ááòM @  Š@t]?d   ·Áð³ @  ŠAu]?d à ·1k Ê @  ŠBv]?d ·(%ùÅ @  ŠCw]?d ` ·³oX. @  ŠDx]?d   ·“šZÐ @  ŠEy]?d à ·cå © @  ŠFz]?d ·³­,A @  ŠG{]?d ` ·» Ê @  ŠH|]?d   ·›ùÈä @  ŠI}]?d à ·k†2 @  ŠJ~]?d ·öÂ’\ @  ŠK]?d `·xù) @  ŠL€]?d  ·X +ú @  ŠM]?d à·¨sу @  ŠN‚]?d ·x;]k @  ŠOƒ]?d `·Ý;…Ð @  ŠP„]?d  ·ý·. @  ŠQ…]?d à· ±}W @  ŠR†]?d ·³oÁå @  ŠS‡]?d `·(%` @  ŠTˆ]?d  ·Ðbð @  ŠU‰]?d à·ø¯˜‰ @  ŠVŠ]?d ·(ça @  ŠW‹]?d `· Fò: @  ŠXŒ]?d  ·³ðÄ @  ŠY]?d à·ðÌ ½ @  ŠZŽ]?d ·mˆª| @  Š[]?d `·“’i{ @  Š\]?d  ·³gk… @  Š]‘]?d à·C‘ü @  Š^’]?d ·“P @  Š_“]?d `·'Vâ @  Š`”]?d  ·£àá @  Ša•]?d à·÷ܘ @  Šb–]?d ·î’é— @  Šc—]?d `·uØH| @  Šd˜]?d  ·U-J‚ @  Še™]?d à·¥R°û @  Šfš]?d ·u< @  Šg›]?d `·}»ÚH @  Šhœ]?d  ·]Nض @  Ši]?d à·­1"Ï @  Šjž]?d ·0u‚ @  ŠkŸ]?d `·SØxÕ @  Šl ]?d  ·s-z+ @  Šm¡]?d à·ƒR€R @  Šn¢]?d ·S º @  Šo£]?d `·öÔ @  Šp¤]?d  ·ÖïÖÿ @  Šq¥]?d à·&,† @  Šr¦]?d ·o › @  Šs§]?d `·‰%p @  Št¨]?d  ·©ÐŽ @  Šu©]?d à·Y¯ù÷ @  Švª]?d ·‰çu @  Šw«]?d `·F“D @  Šx¬]?d  ·¡³‘º @  Šy­]?d à·QÌkà @  Šz®]?d ·̈Ë @  Š{¯]?d `·2’ @  Š|°]?d  ·g û @  Š}±]?d à·âð‚ @  Š~²]?d ·2P|j @  Š³]?d `·ËµÂ @  Š€´]?d  ·ëò·< @  Šµ]?d à·ME @  Š‚¶]?d ·þJ @  Šƒ·]?d `·™‰¡ @  Š„¸]?d  ·¹|_ @  Š…¹]?d à·Iç& @  Š†º]?d ·™KkÎ @  Š‡»]?d `·‘ê• @  Šˆ¼]?d  ·±k @  Š‰½]?d à·A`u @  ŠŠ¾]?d ·Ü$ÕÓ @  Š‹¿]?d `·OÙ: @  ŠŒÀ]?d  ·o,8ç @  ŠÁ]?d à·ŸSž @  ŠŽÂ]?d ·ONv @  ŠÃ]?d `·ê–Í @  ŠÄ]?d  ·Êî”3uÐ · @  Š‘Å]?d à·V²Ÿ @  Š’ Æ]?d 8 ·r]lù @  Š“ Ç]?d x ·éÍ @  Š” È]?d ¸ ·ÉâÏì @  Š• É]?d ø ·95• @  Š– Ê]?d 8!·éÕ¹} @  Š— Ë]?d x!·át_& @  Š˜ Ì]?d ¸!·Á]Ø @  Š™ Í]?d ø!·1þ§¡ @  Šš Î]?d 8"·¬º` @  Š› Ï]?d x"·R Äg @  Šœ Ð]?d ¸"·rUÆ™ @  Š Ñ]?d ø"·‚*<à @  Šž Ò]?d 8#·Rb° @  ŠŸ Ó]?d x#·ædO @  Š  Ô]?d ¸#·Æ‘Mý @  Š¡ Õ]?d ø#·6î·„ @  Š¢ Ö]?d 8$·/ D‹ @  Š£ ×]?d x$·´êå` @  Š¤ Ø]?d ¸$·”çž @  Š¥ Ù]?d ø$·d`ç @  Š¦ Ú]?d 8%·´(‘ @  Š§ Û]?d x%·¼‰wT @  Š¨ Ü]?d ¸%·œ|uª @  Š© Ý]?d ø%·lÓ @  Šª Þ]?d 8&·ñG/ @  Š« ß]?d x&·’êÕÉ @  Š¬ à]?d ¸&·²×7 @  Š­ á]?d ø&·B`-N @  Š® â]?d 8'·’(¡¦ @  Š¯ ã]?d x'·7(y @  Š° ä]?d ¸'·Ý{ã @  Š± å]?d ø'·碚 @  Š² æ]?d 8(·Ó] ‡ @  Š³ ç]?d x(·H¬l @  Š´ è]?d ¸(·hâ®’ @  Šµ é]?d ø(·˜Të @  Š¶ ê]?d 8)·HÕØ @  Š· ë]?d x)·@t>X @  Š¸ ì]?d ¸)·`<¦ @  Š¹ í]?d ø)·þÆß @  Šº î]?d 8*· ºf @  Š» ï]?d x*·ó ¥ @  Š¼ ð]?d ¸*·ÓU§ç @  Š½ ñ]?d ø*·#*]ž @  Š¾ ò]?d 8+·óbÑv @  Š¿ ó]?d x+·éc(ï @  ŠÀ ô]?d ¸+·É–* @  ŠÁ õ]?d ø+·9éÐh @  Š ö]?d 8,· §#g @  Šà ÷]?d x,·»í‚Œ @  ŠÄ ø]?d ¸,·›€r @  ŠÅ ù]?d ø,·kgz  @  ŠÆ ú]?d 8-·»/öã @  ŠÇ û]?d x-·³Ž¸ @  ŠÈ ü]?d ¸-·“{F @  ŠÉ ý]?d ø-·cè? @  ŠÊ þ]?d 8.·þ@Hþ @  ŠË ÿ]?d x.·½>“ @  ŠÌ ^?d ¸.·Ë‘q @  ŠÍ ^?d ø.·m´k @  ŠÎ ^?d 8/·½üçà @  ŠÏ ^?d x/·ü?[ @  ŠÐ ^?d ¸/·8 =¥ @  ŠÑ ^?d ø/·ÈvÇÜ @  ŠÒ ^?d 80·v¨{n @  ŠÓ ^?d x0·íâÚ… @  ŠÔ ^?d ¸0·ÍØ{ @  ŠÕ  ^?d ø0·=h" @  ŠÖ  ^?d 81·í ®ê @  Š×  ^?d x1·åH± @  ŠØ  ^?d ¸1·ÅtJO @  ŠÙ  ^?d ø1·5 °6 @  ŠÚ ^?d 82·¨O÷ @  ŠÛ ^?d x2·VUÓð @  ŠÜ ^?d ¸2·v Ñ @  ŠÝ ^?d ø2·†ß+w @  ŠÞ ^?d 83·V—§Ÿ @  Šß ^?d x3·â‘X” @  Šà ^?d ¸3·ÂdZj @  Šá ^?d ø3·2  @  Šâ ^?d€ 84·_–Oº @  ‹ ^?d x4·%¦x @  ‹ ^?d ¸4·h¤† @  ‹ ^?d ø4·0^¥ @  ‹ ^?d 85·à)ú @  ‹ ^?d x5·&Û @  ‹ ^?d ¸5·ð’% @  ‹ ^?d ø5·8=7& @  ‹ ^?d 86·¥y—ç @  ‹ ^?d x6·–Ñ @  ‹  ^?d ¸6·#h”/ @  ‹ !^?d ø6·^•» @  ‹ "^?d 87·ÆS @  ‹ #^?d x7· r @  ‹ $^?d ¸7· 𢌠@  ‹ %^?d ø7·³œ9o @  ‹ &^?d 88·‡cµr @  ‹ '^?d x8·Ù`ït @  ‹ (^?d ¸8·ù•íŠ @  ‹ )^?d ø8·Ì£ì @  ‹ *^?d 89·ë`ö @  ‹ +^?d x9·ÚøÙ× @  ‹ ,^?d ¸9·ú Û) @  ‹ -^?d ø9·ÄÀ~* @  ‹ .^?d 8:·Y„Þë @  ‹ /^?d x:·b׿ @  ‹ 0^?d ¸:·B"äÿ @  ‹ 1^?d ø:·wåk @  ‹ 2^?d 8;·§\iƒ @  ‹ 3^?d x;·aOТ @  ‹ 4^?d ¸;·AºÒ\ @  ‹ 5^?d ø;·ÃÐn @  ‹ 6^?d 8<·Úž @  ‹! 7^?d x<·„Ç @  ‹" 8^?d ¸<·¤hÅø @  ‹# 9^?d ø<·‘^Äl @  ‹$ :^?d 8=·AH„ @  ‹% ;^?d x=·‡ñ¥ @  ‹& <^?d ¸=·§ðó[ @  ‹' =^?d ø=·™=VX @  ‹( >^?d 8>·yö™ @  ‹) ?^?d x>·RÍâ¾ @  ‹* @^?d ¸>·r8à@ @  ‹+ A^?d ø>·GáÔ @  ‹, B^?d 8?·—Fm< @  ‹- C^?d x?·QUÔ @  ‹. D^?duÐ@·7 ¸?·q Öã @  ‹/ E^?d ø?·Û ‘Õ @  ‹0F^?d P@·§+é @  ‹1G^?d @·äÀdÏ @  ‹2H^?d Ð@·fQs @  ‹3I^?d A·¾é³ @  ‹4J^?d PA·ƒ/þm @  ‹5K^?d A·çXRl @  ‹6L^?d ÐA·eÉE² @  ‹7M^?d B·DÑW® @  ‹8N^?d PB·Æ@@p @  ‹9O^?d B·_wmº @  ‹:P^?d ÐB·Ýæzd @  ‹;Q^?d C·º àÆ @  ‹<R^?d PC·8˜÷ @  ‹=S^?d C·\ï[ @  ‹>T^?d ÐC·Þ~LÇ @  ‹?U^?d D·iÌ× @  ‹@V^?d PD·ë]  @  ‹AW^?d D·:J/ @  ‹BX^?d ÐD·•«]ñ @  ‹CY^?d E·òDÇS @  ‹DZ^?d PE·pÕÐ @  ‹E[^?d E·¢|Œ @  ‹F\^?d ÐE·–3kR @  ‹G]^?d F··+yN @  ‹H^^?d PF·5ºn @  ‹I_^?d F·1:z† @  ‹J`^?d ÐF·³«mX @  ‹Ka^?d G·ÔD÷ú @  ‹Lb^?d PG·VÕà$ @  ‹Mc^?d G·2¢L% @  ‹Nd^?d ÐG·°3[û @  ‹Oe^?d H·•1[Û @  ‹Pf^?d PH· L @  ‹Qg^?d H·ëÇ# @  ‹Rh^?d ÐH·iVý @  ‹Si^?d I·¹Ž_ @  ‹Tj^?d PI·Œ(™ @  ‹Uk^?d I·è_5€ @  ‹Vl^?d ÐI·jÎ"^ @  ‹Wm^?d J·KÖ0B @  ‹Xn^?d PJ·ÉG'œ @  ‹Yo^?d J·Pp V @  ‹Zp^?d ÐJ·Òሠ@  ‹[q^?d K·µ‡* @  ‹\r^?d PK·7Ÿô @  ‹]s^?d K·Sè<õ @  ‹^t^?d ÐK·Ñy++ @  ‹_u^?d L·ÈÌs© @  ‹`v^?d PL·J]dw @  ‹aw^?d L·¶:+Q @  ‹bx^?d ÐL·4«< @  ‹cy^?d M·SD¦- @  ‹dz^?d PM·ÑÕ±ó @  ‹e{^?d M·µ¢ò @  ‹f|^?d ÐM·73 , @  ‹g}^?d N·+0 @  ‹h~^?d PN·”ºî @  ‹i^?d N·}¬Z{ @  ‹j€^?d ÐN·ÿ=M¥ @  ‹k^?d O·˜Ò× @  ‹l‚^?d PO·CÀÙ @  ‹mƒ^?d O·~4lØ @  ‹n„^?d ÐO·ü¥{ @  ‹o…^?d P·S†K‰ @  ‹p†^?d PP·Ñ\W @  ‹q‡^?d P·-pq @  ‹rˆ^?d ÐP·¯á¯ @  ‹s‰^?d Q·Èž  @  ‹tŠ^?d PQ·JŸ‰Ó @  ‹u‹^?d Q·.è%Ò @  ‹vŒ^?d ÐQ·¬y2  @  ‹w^?d R·a  @  ‹xŽ^?d PR·ð7Î @  ‹y^?d R·–Ç @  ‹z^?d ÐR·V Ú @  ‹{‘^?d S·s¹—x @  ‹|’^?d PS·ñ(€¦ @  ‹}“^?d S·•_,§ @  ‹~”^?d ÐS·Î;y @  ‹•^?d T·C*UX @  ‹€–^?d PT·Á»B† @  ‹—^?d T·=Ü   @  ‹‚˜^?d ÐT·¿M~ @  ‹ƒ™^?d U·Ø¢€Ü @  ‹„š^?d PU·Z3— @  ‹…›^?d U·>D; @  ‹†œ^?d ÐU·¼Õ,Ý @  ‹‡^?d V·Í>Á @  ‹ˆž^?d PV·\) @  ‹‰Ÿ^?d V·Ü=  @  ‹Š ^?d ÐV·™M*× @  ‹‹¡^?d W·þ¢°u @  ‹Œ¢^?d PW·|3§« @  ‹£^?d W·D ª @  ‹Ž¤^?d ÐW·šÕt @  ‹¥^?d X·¿×T @  ‹¦^?d PX·=F Š @  ‹‘§^?d X·Á!D¬ @  ‹’¨^?d ÐX·C°Sr @  ‹“©^?d Y·$_ÉÐ @  ‹”ª^?d PY·¦ÎÞ @  ‹•«^?d Y·¹r @  ‹–¬^?d ÐY·@(eÑ @  ‹—­^?d Z·a0wÍ @  ‹˜®^?d PZ·ã¡` @  ‹™¯^?d Z·z–MÙ @  ‹š°^?d ÐZ·øZ @  ‹›±^?d [·ŸèÀ¥ @  ‹œ²^?d P[·y×{ @  ‹³^?d [·y{z @  ‹ž´^?d Ð[·ûŸl¤ @  ‹Ÿµ^?d \·â*4& @  ‹ ¶^?d P\·`»#ø @  ‹¡·^?d \·œÜlÞ @  ‹¢¸^?d Ð\·M{ @  ‹£¹^?d ]·y¢á¢ @  ‹¤º^?d P]·û3ö| @  ‹¥»^?d ]·ŸDZ} @  ‹¦¼^?d Ð]·ÕM£ @  ‹§½^?d ^·<Í_¿ @  ‹¨¾^?d P^·¾\Ha @  ‹©¿^?d ^·JŒIf @  ‹ªÀ^?d Ð^·È^¸ @  ‹«Á^?d _·¯òÄ @  ‹¬Â^?d P_·-cÓÄ @  ‹­Ã^?d _·IÅ @  ‹uÐ`·®Ä^?d Ð_·Ë…h @  ‹¯Å^?d (`·d€Q¾ @  ‹°Æ^?d h`·æF` @  ‹±Ç^?d ¨`·v F @  ‹²È^?d è`·˜ç˜ @  ‹³É^?d (a·ÿ„: @  ‹´Ê^?d ha·}™“ä @  ‹µË^?d ¨a·î?å @  ‹¶Ì^?d èa·¢¸ôî @  ‹· Í^?d (b·ƒ æò @  ‹¸ Î^?d hb·1ñ, @  ‹¹ Ï^?d ¨b·˜Üæ @  ‹º Ð^?d èb·—Ë8 @  ‹» Ñ^?d (c·}xQš @  ‹¼ Ò^?d hc·ÿéFD @  ‹½ Ó^?d ¨c·›žêE @  ‹¾ Ô^?d èc·ý› @  ‹¿ Õ^?d (d·®½£‹ @  ‹À Ö^?d hd·,,´U @  ‹Á ×^?d ¨d·ÐKûs @  ‹ Ø^?d èd·RÚì­ @  ‹à Ù^?d (e·55v @  ‹Ä Ú^?d he··¤aÑ @  ‹Å Û^?d ¨e·ÓÓÍÐ @  ‹Æ Ü^?d èe·QBÚ @  ‹Ç Ý^?d (f·pZÈ @  ‹È Þ^?d hf·òËßÌ @  ‹É ß^?d ¨f·öKËÚ @  ‹Ê à^?d èf·tÚÜ @  ‹Ë á^?d (g·5F¦ @  ‹Ì â^?d hg·‘¤Qx @  ‹Í ã^?d ¨g·õÓýy @  ‹Î ä^?d èg·wBê§ @  ‹Ï å^?d (h·R@ê‡ @  ‹Ð æ^?d hh·ÐÑýY @  ‹Ñ ç^?d ¨h·,¶² @  ‹Ò è^?d èh·®'¥¡ @  ‹Ó é^?d (i·ÉÈ? @  ‹Ô ê^?d hi·KY(Ý @  ‹Õ ë^?d ¨i·/.„Ü @  ‹Ö ì^?d èi·­¿“ @  ‹× í^?d (j·Œ§ @  ‹Ø î^?d hj·6–À @  ‹Ù ï^?d ¨j·—»  @  ‹Ú ð^?d èj·¬Ô @  ‹Û ñ^?d (k·r6v @  ‹Ü ò^?d hk·ðî!¨ @  ‹Ý ó^?d ¨k·”™© @  ‹Þ ô^?d èk·šw @  ‹ß õ^?d (l·½Âõ @  ‹à ö^?d hl·,Õ+ @  ‹á ÷^?d ¨l·qKš  @  ‹â ø^?d€ èl·uŒ%j @  Œ ù^?d (m·ó"÷á @  Œ ú^?d hm·q³à? @  Œ û^?d ¨m·зÓ @  Œ ü^?d èm·R   @  Œ ý^?d (n·½¶ík @  Œ þ^?d hn·?'úµ @  Œ ÿ^?d ¨n·gä¥V @  Œ _?d èn·åu²ˆ @  Œ _?d (o·GÓÓÇ @  Œ _?d ho·ÅBÄ @  Œ _?d ¨o·d|“õ @  Œ _?d èo·æí„+ @  Œ _?d (p·*ÝÕ> @  Œ _?d hp·¨LÂà @  Œ _?d ¨p·78ì\ @  Œ _?d èp·µ©û‚ @  Œ  _?d (q·šÍ @  Œ  _?d hq·•ž @  Œ  _?d ¨q·4 Úÿ @  Œ  _?d èq·¶1Í! @  Œ  _?d (r·Y›€G @  Œ _?d hr·Û —™ @  Œ _?d ¨r·Œå) @  Œ _?d èr·ò÷ @  Œ _?d (s·¬¸“¸ @  Œ _?d hs·.)„f @  Œ _?d ¨s·ÓŠ @  Œ _?d ès· †ÄT @  Œ _?d (t·f&Úü @  Œ _?d ht·ä·Í" @  Œ _?d ¨t·jÅÄ. @  Œ _?d èt·èTÓð @  Œ! _?d (u·Jò²¿ @  Œ" _?d hu·Èc¥a @  Œ# _?d ¨u·i]ò @  Œ$ _?d èu·ëÌåS @  Œ% _?d (v·f¨5 @  Œ& _?d hv·†÷¿ë @  Œ' _?d ¨v·LÅô‡ @  Œ(  _?d èv·ÎTãY @  Œ) !_?d (w·lò‚ @  Œ* "_?d hw·îc•È @  Œ+ #_?d ¨w·O]Â$ @  Œ, $_?d èw·ÍÌÕú @  Œ- %_?d (x·‹Ý´@ @  Œ. &_?d hx· L£ž @  Œ/ '_?d ¨x·–8" @  Œ0 (_?d èx·©šü @  Œ1 )_?d (y·¶û³ @  Œ2 *_?d hy·4žìm @  Œ3 +_?d ¨y·• » @  Œ4 ,_?d èy·1¬_ @  Œ5 -_?d (z·ø›á9 @  Œ6 ._?d hz·z öç @  Œ7 /_?d ¨z·-„W @  Œ8 0_?d èz·¯“‰ @  Œ9 1_?d ({· ¸òÆ @  Œ: 2_?d h{·)å @  Œ; 3_?d ¨{·.²ô @  Œ< 4_?d è{·¬†¥* @  Œ= 5_?d (|·Ç&»‚ @  Œ> 6_?d h|·E·¬\ @  Œ? 7_?d ¨|·e£Â @  Œ@ 8_?d è|·çS´ @  ŒA 9_?d (}·EõÕS @  ŒB :_?d h}·Çd @  ŒC ;_?d ¨}·fZ•a @  ŒD <_?d è}·äË‚¿ @  ŒE =_?d (~· aÏÙ @  ŒF >_?d h~·‰ðØ @  ŒG ?_?d ¨~·³’†z @  ŒH @_?d è~·1‘¤ @  ŒI A_?d (·“¥ðë @  ŒJ B_?d h·4ç5 @  ŒK C_?d ¨·uЀ·'° °Ù @  ŒL D_?d è· \{Ò @  ŒME_?d @€· t @  ŒNF_?d €€·7ùvÿ @  ŒOG_?d À€· éMc @  ŒPH_?d ·Ú¡Á‹ @  ŒQI_?d @·*Þ;ò @  ŒRJ_?d €· +9  @  ŒSK_?d À· q{À @  ŒTL_?d ‚·”5Û @  ŒUM_?d @‚·dJ!x @  ŒVN_?d €‚·D¿#† @  ŒWO_?d À‚·±^D @  ŒXP_?d ƒ·aÈþ @  ŒYQ_?d @ƒ·‘i2‡ @  ŒZR_?d €ƒ·±œ0y @  Œ[S_?d Àƒ·²Ærµ @  Œ\T_?d „·«ˆº @  Œ]U_?d @„·[÷{à @  Œ^V_?d €„·{y= @  Œ_W_?d À„·We @  Œ`X_?d …·‡\éù @  ŒaY_?d @…·w#€ @  ŒbZ_?d €…·WÖ~ @  Œc[_?d À…·TŒS² @  Œd\_?d †·ÉÈós @  Œe]_?d @†·9·  @  Œf^_?d €†·B ô @  Œg__?d À†·qU¸ @  Œh`_?d ‡·¡\ÙP @  Œia_?d @‡·Q##) @  Œjb_?d €‡·qÖ!× @  Œkc_?d À‡·rŒc @  Œld_?d ˆ·Fsï @  Œme_?d @ˆ·¶  @  Œnf_?d €ˆ·–ù @  Œog_?d Àˆ·«é, @  Œph_?d ‰·{¡ õ @  Œqi_?d @‰·‹ÞZŒ @  Œrj_?d €‰·«+Xr @  Œsk_?d À‰·¨q¾ @  Œtl_?d Š·55º @  Œum_?d @Š·ÅJ@ @  Œvn_?d €Š·å¿Bø @  Œwo_?d ÀŠ·^%h @  Œxp_?d ‹·À©€ @  Œyq_?d @‹·0iSù @  Œzr_?d €‹·œQ @  Œ{s_?d À‹·ÆË @  Œ|t_?d Œ· ˆàÄ @  Œ}u_?d @Œ·ú÷½ @  Œ~v_?d €Œ·ÚC @  Œw_?d ÀŒ·»E2Ì @  Œ€x_?d ·k ¾$ @  Œy_?d @·›rD] @  Œ‚z_?d €·»‡F£ @  Œƒ{_?d À·¸Ýo @  Œ„|_?d Ž·%™¤® @  Œ…}_?d @Ž·Õæ^× @  Œ†~_?d €Ž·õ\) @  Œ‡_?d ÀŽ·pÓCæ @  Œˆ€_?d · ›Ï @  Œ‰_?d @·Pä5w @  ŒŠ‚_?d €·p7‰ @  Œ‹ƒ_?d À·sKuE @  ŒŒ„_?d ·Í•É÷ @  Œ…_?d @·=ê3Ž @  ŒŽ†_?d €·1p @  Œ‡_?d À·  ì @  Œˆ_?d ‘·ðG† @  Œ‘‰_?d @‘·8|} @  Œ’Š_?d €‘· Í~ƒ @  Œ“‹_?d À‘·#—² @  ŒŸ—_?d À”·}ò"ž @  Œ ˜_?d •·­º®v @  Œ¡™_?d @•·]ÅT @  Œ¢š_?d €•·}0Vñ @  Œ£›_?d À•·~j= @  Œ¤œ_?d –·ã.´ü @  Œ¥_?d @–·QN… @  Œ¦ž_?d €–·3¤L{ @  Œ§Ÿ_?d À–·[ò7 @  Œ¨ _?d —·‹ºžß @  Œ©¡_?d @—·{Åd¦ @  Œª¢_?d €—·[0fX @  Œ«£_?d À—·Xj$” @  Œ¬¤_?d ˜·l•¨‰ @  Œ­¥_?d @˜·œêRð @  Œ®¦_?d €˜·¼P @  Œ¯§_?d À˜·k’ @  Œ°¨_?d ™·QGçz @  Œ±©_?d @™·¡8 @  Œ²ª_?d €™·Íý @  Œ³«_?d À™·‚—]1 @  Œ´¬_?d š·Óýð @  Œµ­_?d @š·ï¬‰ @  Œ¶®_?d €š·ÏYw @  Œ·¯_?d Àš·:¸bç @  Œ¸°_?d ›·êðî @  Œ¹±_?d @›·v @  Œº²_?d €›·:zˆ @  Œ»³_?d À›·9 TD @  Œ¼´_?d œ· n§K @  Œ½µ_?d @œ·Ð]2 @  Œ¾¶_?d €œ·ðä_Ì @  Œ¿·_?d Àœ·rõEr @  ŒÀ¸_?d ·¢½Éš @  ŒÁ¹_?d @·RÂ3ã @  ŒÂº_?d €·r71 @  ŒÃ»_?d À·qmsÑ @  ŒÄ¼_?d ž·ì)Ó @  ŒÅ½_?d @ž·V)i @  ŒÆ¾_?d €ž·<£+— @  ŒÇ¿_?d Àž·¤¥`Ê @  ŒÈÀ_?d Ÿ·tíì" @  ŒÉÁ_?d @Ÿ·„’[ @  ŒÊÂ_?d €Ÿ·¤g¥ @  ŒËÃ_uР·?d ÀŸ·§=Vi @  ŒÌÄ_?d  ·Ö6ˆ @  ŒÍÅ_?d X ·&Irv @  ŒÎÆ_?d ˜ ·¼pˆ @  ŒÏÇ_?d Ø ·;¬K @  ŒÐÈ_?d ¡·ëäÇü @  ŒÑÉ_?d X¡·›=… @  ŒÒÊ_?d ˜¡·;n?{ @  ŒÓË_?d Ø¡·84}· @  ŒÔÌ_?d ¢·¥pÝv @  ŒÕÍ_?d X¢·U' @  ŒÖÎ_?d ˜¢·uú%ñ @  Œ×Ï_?d Ø¢·€Ba @  ŒØÐ_?d £·PSΉ @  ŒÙÑ_?d X£· ,4ð @  ŒÚÒ_?d ˜£·€Ù6 @  ŒÛÓ_?d Ø£·ƒƒt @  ŒÜÔ_?d ¤·šÍ‡Í @  ŒÝÕ_?d X¤·j²}´ @  ŒÞÖ_?d ˜¤·JGJ @  Œß×_?d ؤ·fQcf @  ŒàØ_?d ¥·¶ïŽ @  ŒáÙ_?d X¥·Ff÷ @  ŒâÚ_?d€ ˜¥·P ¯ @  Û_?d Ø¥·ðKJ @  Ü_?d ¦·m¡‹ @  Ý_?d X¦·X9  @  Þ_?d ˜¦·xÌ¢á @  ß_?d ئ·Þ(£× @  à_?d §·`/? @  á_?d X§·0­Š< @  â_?d ˜§·XˆÂ @   ã_?d ا·ÖK1ã @   ä_?d ¨·â´½þ @   å_?d X¨·ׂ¼j @   æ_?d ˜¨·÷w¾” @   ç_?d ب·©tä’ @  è_?d ©·y`?d µ·=¢KÛ @  ?`?d Xµ·Ïñ @  @`?d ˜µ·1:óä @  A`?d ص·÷)JÅ @  B`?d ¶·jmê @  C`?d X¶·_[ë @  D`?d ˜¶·®én @  E`?d ض·ÙJèX @  F `?d ·· d° @  G!`?d X··7ÏÁ³ @  H"`?d ˜··:ÃM @  I#`?d Ø··Ñ)zl @  J$`?d ¸·åÖöq @  K%`?d X¸·Ðà÷å @  L&`?d ˜¸·ðõ @  M'`?d ظ·®¯ @  N(`?d ¹·~^#õ @  O)`?d X¹·í2¸ @  P*`?d ˜¹·ÍǺè @  Q+`?d ع· ÔÉ @  R,`?d º·–£ @  S-`?d Xº·£¦¢œ @  T.`?d ˜º·ƒS b @  U/`?d غ·¸˜ˆ @  V0`?d »·hH` @  W1`?d X»·V…±c @  X2`?d ˜»·vp³ @  Y3`?d Ø»·°c ¼ @  Z4`?d ¼·©-ù³ @  [5`?d X¼·œø' @  \6`?d ˜¼·¼îúÙ @  ]7`?d ؼ·âí ß @  ^8`?d ½·2¥,7 @  _9`?d X½·°Ïd @  `:`?d ˜½·:’š @  a;`?d ؽ·V)+» @  b<`?d ¾·Ëm‹z @  c=`?d X¾·þ[Šî @  d>`?d ˜¾·Þ®ˆ @  e?`?d ؾ·ˆœ7 @  f@`?d ¿·XRß @  gA`?d X¿·fŸµÜ @  hB`?d ˜¿·Fj·" @uÐÀ·  iC`?d Ø¿·€y @  jD`?d 0À·ä‰_Q @  kE`?d pÀ·Ñ¿^Å @  lF`?d °À·ñJ\; @  mG`?d ðÀ·¯I= @  nH`?d 0Á·ŠÕ @  oI`?d pÁ·ìm6 @  pJ`?d °Á·̘È @  qK`?d ðÁ· ‹ªé @  rL`?d 0·—Ï ( @  sM`?d p·¢ù ¼ @  tN`?d °Â·‚ B @  uO`?d ð·¹_1¨ @  vP`?d 0÷i½@ @  wQ`?d p÷WÚC @  xR`?d °Ã·w/½ @  yS`?d ð÷±<£œ @  zT`?d 0Ä·¨rP“ @  {U`?d pÄ·DQ @  |V`?d °Ä·½±Sù @  }W`?d ðÄ·ã² ÿ @  ~X`?d 0Å·3ú… @  Y`?d pÅ·üÁç @  €Z`?d °Å·Ü4  @  [`?d ðÅ·'´8 @  ‚\`?d 0Æ·‡cù @  ƒ]`?d pÆ·²Um @  „^`?d °Æ·’ “ @  …_`?d ðÆ·4D¥ @  †``?d 0Ç·ä šM @  ‡a`?d pÇ·ÚÁ?N @  ˆb`?d °Ç·ú4=° @  ‰c`?d ðÇ·<'„‘ @  Šd`?d 0È·ØŒ @  ‹e`?d pÈ·=î  @  Œf`?d °È· æ @  g`?d ðÈ·CQà @  Žh`?d 0É·“PÝ @  i`?d pÉ·V @  Ž,è`?d Hé·$Zô @  Ž-€é`?d ˆé·M?µ­ @  Ž.€ê`?d Èé·Ï®¢s @  Ž/€ë`?d ê·u{Í× @  Ž0€ì`?d Hê·÷êÚ  @  Ž1€í`?d ˆê·¥ñ5P @  Ž2€î`?d Èê·'`"Ž @  Ž3€ï`?d ë·‹£z¿ @  Ž4€ð`?d Hë· 2ma @  Ž5€ñ`?d ˆë·[)‚8 @  Ž6€ò`?d Èë·Ù¸•æ @  Ž7€ó`?d ì·JÆ—l @  Ž8€ô`?d Hì·ÈW€² @  Ž9€õ`?d ˆì·šLoë @  Ž:€ö`?d Èì·Ýx5 @  Ž;€÷`?d í·ÑNBè @  Ž<€ø`?d Hí·SßU6 @  Ž=€ù`?d ˆí·ĺo @  Ž>€ú`?d Èí·ƒU­± @  Ž?€û`?d î·†ã7 @  Ž@€ü`?d Hî·ôé @  ŽA€ý`?d ˆî·V ° @  ŽB€þ`?d Èî·Ôš n @  ŽC€ÿ`?d ï·wy  @  ŽD€a?d Hï·õŽnÒ @  ŽE€a?d ˆï·§•‹ @  ŽF€a?d Èï·%–U @  ŽG€a?d ð·êÛb @  ŽH€a?d Hð·“{̼ @  ŽI€a?d ˆð·Á`#å @  ŽJ€a?d Èð·Cñ4; @  ŽK€a?d ñ·Šbæ @  ŽL€a?d Hñ·ó8 @  ŽM€ a?d ˆñ·Zèöa @  ŽN€ a?d Èñ·Øyá¿ @  ŽO€ a?d ò·b¬Ž @  ŽP€ a?d Hò·à=™Å @  ŽQ€ a?d ˆò·²&vœ @  ŽR€a?d Èò·0·aB @  ŽS€a?d ó·œt9s @  ŽT€a?d Hó·å.­ @  ŽU€a?d ˆó·LþÁô @  ŽV€a?d Èó·ÎoÖ* @  ŽW€a?d ô·]Ô  @  ŽX€a?d Hô·߀Ã~ @  ŽY€a?d ˆô·›,' @  ŽZ€a?d Èô· ;ù @  Ž[€a?d õ·Æ™$ @  Ž\€a?d Hõ·Dú @  Ž]€a?d ˆõ·ù£ @  Ž^€a?d Èõ·”‚î} @  Ž_€a?d ö·?Q¦i @  Ž`€a?d Hö·½À±· @  Ža€a?d ˆö·ïÛ^î @  Žb€a?d Èö·mJI0 @  Žc€a?d ÷·\>(Ý @  Žd€ a?d H÷·Þ¯? @  Že€!a?d ˆ÷·Œ´ÐZ @  Žf€"a?d È÷·%Ç„ @  Žg€#a?d ø·°êº @  Žh€$a?d Hø·2{­Â @  Ži€%a?d ˆø·``B› @  Žj€&a?d Èø·âñUE @  Žk€'a?d ù·+bo˜ @  Žl€(a?d Hù·©óxF @  Žm€)a?d ˆù·ûè— @  Žn€*a?d Èù·yy€Á @  Žo€+a?d ú·ìïe @  Žp€,a?d Hú·A=ø» @  Žq€-a?d ˆú·&â @  Žr€.a?d Èú·‘·< @  Žs€/a?d û·=tX  @  Žt€0a?d Hû·¿åOÓ @  Žu€1a?d ˆû·íþ Š @  Žv€2a?d Èû·oo·T @  Žw€3a?d ü·üµÞ @  Žx€4a?d Hü·~€¢ @  Žy€5a?d ˆü·,›MY @  Žz€6a?d Èü·® Z‡ @  Ž{€7a?d ý·g™`Z @  Ž|€8a?d Hý·åw„ @  Ž}€9a?d ˆý··˜Ý @  Ž~€:a?d Èý·5‚ @  Ž€;a?d þ·Óñ´ @  Ž€€a?d Èþ·í @  Žƒ€?a?d ÿ·@?j @  Ž„€@a?d Hÿ·®}Ï @  Ž…€Aa?d ˆÿ·µ’– @  Ž†€uиBa?d Èÿ·Vc*á @  Ž‡ Ca?d ¸e‡Ó· @  Žˆ Da?d `¸çÄi @  Ž‰ Ea?d  ¸µ +0 @  ŽŠ Fa?d à¸7œ<î @  Ž‹ Ga?d ¸þ3 @  ŽŒ Ha?d `¸|ží @  Ž Ia?d  ¸.…þ´ @  ŽŽ Ja?d ฬéj @  Ž Ka?d ¸Á†Î @  Ž La?d `¸”P‘ @  Ž‘ Ma?d  ¸ÆK~I @  Ž’ Na?d à¸DÚi— @  Ž“ Oa?d ¸è1¦ @  Ž” Pa?d `¸jˆ&x @  Ž• Qa?d  ¸8“É! @  Ž– Ra?d ฺÞÿ @  Ž— Sa?d ¸)|Üu @  Ž˜ Ta?d `¸«íË« @  Ž™ Ua?d  ¸ùö$ò @  Žš Va?d à¸{g3, @  Ž› Wa?d ¸²ô ñ @  Žœ Xa?d `¸0e/ @  Ž Ya?d  ¸b~ñv @  Žž Za?d à¸àïæ¨ @  ŽŸ [a?d ¸K<®¼ @  Ž  \a?d `¸É­¹b @  Ž¡ ]a?d  ¸›¶V; @  Ž¢ ^a?d à¸'Aå @  Ž£ _a?d ¸(S  @  Ž¤ `a?d `¸ªÂ7Ö @  Ž¥ aa?d  ¸øÙØ @  Ž¦ ba?d à¸zHÏQ @  Ž§ ca?d ¸ć²É @  Ž¨ da?d `¸F¥ @  Ž© ea?d  ¸ JN @  Žª fa?d ถœ] @  Ž« ga?d ¸_gM @  Ž¬ ha?d ` ¸Ýžp“ @  Ž­ ia?d   ¸…ŸÊ @  Ž® ja?d à ¸ ˆ @  Ž¯ ka?d ¸·Áç° @  Ž° la?d ` ¸5Pðn @  Ž± ma?d   ¸gK7 @  Ž² na?d à ¸åÚé @  Ž³ oa?d ¸IPØ @  Ž´ pa?d ` ¸ˈG @  Žµ qa?d   ¸™“¨_ @  Ž¶ ra?d à ¸¿ @  Ž· sa?d ¸ˆ|½  @  Ž¸ ta?d ` ¸ íªÕ @  Ž¹ ua?d   ¸XöEŒ @  Žº va?d à ¸ÚgRR @  Ž» wa?d ¸ôh @  Ž¼ xa?d ` ¸‘eQ @  Ž½ ya?d   ¸Ã~ @  Ž¾ za?d à ¸Aï‡Ö @  Ž¿ {a?d ¸D;ÉP @  ŽÀ |a?d `¸ƪގ @  ŽÁ }a?d  ¸”±1× @  Ž ~a?d ภ&  @  Žà a?d ¸ÊÂg @  ŽÄ €a?d `¸HS¹ @  ŽÅ a?d  ¸Hþà @  ŽÆ ‚a?d ธÙé> @  ŽÇ ƒa?d ¸¬7¤  @  ŽÈ „a?d `¸.¦³× @  ŽÉ …a?d  ¸|½\Ž @  ŽÊ †a?d à¸þ,KP @  ŽË ‡a?d ¸7¿q @  ŽÌ ˆa?d `¸µ.fS @  ŽÍ ‰a?d  ¸ç5‰  @  ŽÎ Ša?d à¸e¤žÔ @  ŽÏ ‹a?d ¸ßqñp @  ŽÐ Œa?d `¸]àæ® @  ŽÑ a?d  ¸û ÷ @  ŽÒ Ža?d à¸j) @  ŽÓ a?d ¸!©F @  ŽÔ a?d `¸£8QÆ @  ŽÕ ‘a?d  ¸ñ#¾Ÿ @  ŽÖ ’a?d à¸s²©A @  Ž× “a?d ¸àÌ«Ë @  ŽØ ”a?d `¸b]¼ @  ŽÙ •a?d  ¸0FSL @  ŽÚ –a?d า×D’ @  ŽÛ —a?d ¸{D~O @  ŽÜ ˜a?d `¸ùÕi‘ @  ŽÝ ™a?d  ¸«Î†È @  ŽÞ ša?d à¸)_‘ @  Žß ›a?d ¸‚ŒÙ @  Žà œa?d `¸ÎÜ @  Žá a?d  ¸R!… @  Žâ ža?d€ ฤT*ý @   Ÿa?d ¸ta9 @    a?d `¸öðç @   ¡a?d  ¸a¢S @   ¢a?d à¸ã3 @   £a?d ¸“N5o @   ¤a?d `¸ß"± @   ¥a?d  ¸v’’ @   ¦a?d à¸ç…L @   §a?d ¸=D| @   ¨a?d `¸¬S¢ @   ©a?d  ¸þG @   ªa?d ดoPÈ @   «a?d ¸M©^ö @   ¬a?d `¸Ï8I( @   ­a?d  ¸þ0Çë @   ®a?d à¸|¡Ð5 @   ¯a?d ¸+sé @   °a?d `¸—ºd7 @   ±a?d  ¸èpƒ @   ²a?d ขyg] @   ³a?d ¸ßµ:­ @   ´a?d `¸]$-s @   µa?d  ¸ÁP @   ¶a?d à¸CŠŽ @   ·a?d ¸OÆK¾ @   ¸a?d `¸ÍW\` @   ¹a?d  ¸ZHÔ @   ºa?d à¸Ø”_  @   »a?d ¸RQ4 @   ¼a?d `¸ƒÃFê @   ½a?d  ¸£Íï™ @   ¾a?d à¸!\øG @  ! ¿a?d ¸%1wV @  " Àa?d `¸§ `ˆ @  # Áa?d  ¸0òt<uÐ ¸ @  $ Âa?d ซ¤¿7 @  %Ãa?d 8 ¸¾-Ï® @  &Äa?d x ¸<¼Øp @  'Åa?d ¸ ¸ hS @  (Æa?d ø ¸"„ @  )Ça?d 8!¸.^¾½ @  *Èa?d x!¸¬Ï©c @  +Éa?d ¸!¸;½× @  ,Êa?d ø!¸¹ ª  @  -Ëa?d 8"¸`ʤ7 @  .Ìa?d x"¸â[³é @  /Ía?d ¸"¸ÓS=* @  0Îa?d ø"¸QÂ*ô @  1Ïa?d 8#¸8H‰( @  2Ða?d x#¸ºÙžö @  3Ña?d ¸#¸-‹ŠB @  4Òa?d ø#¸¯œ @  5Óa?d 8$¸òÖÀl @  6Ôa?d x$¸pGײ @  7Õa?d ¸$¸ìîg‘ @  8Öa?d ø$¸npO @  9×a?d 8%¸b¥± @  :Øa?d x%¸à4¦¡ @  ;Ùa?d ¸%¸wf² @  <Úa?d ø%¸õ÷¥Ë @  =Ûa?d 8&¸,1«õ @  >Üa?d x&¸® ¼+ @  ?Ýa?d ¸&¸ ©Ê @  @Þa?d ø&¸¢8 @  Aßa?d 8'¸Vž @  Bàa?d x'¸Ô”‰Ê @  Cáa?d ¸'¸CÆ~ @  Dâa?d ø'¸ÁWŠ  @  Eãa?d 8(¸±*¨B @  Fäa?d x(¸3»¿œ @  Gåa?d ¸(¸¯¿ @  Hæa?d ø(¸-ƒa @  Iça?d 8)¸!YÙQ @  Jèa?d x)¸£ÈÎ @  Kéa?d ¸)¸4šÚ; @  Lêa?d ø)¸¶ Íå @  Mëa?d 8*¸oÍÃÛ @  Nìa?d x*¸í\Ô @  Oía?d ¸*¸ÜTZÆ @  Pîa?d ø*¸^ÅM @  Qïa?d 8+¸7OîÄ @  Rða?d x+¸µÞù @  Sña?d ¸+¸"Œí® @  Tòa?d ø+¸ úp @  Uóa?d 8,¸ýѧ€ @  Vôa?d x,¸@°^ @  Wõa?d ¸,¸ãé} @  Xöa?d ø,¸ax£ @  Y÷a?d 8-¸m¢Ö“ @  Zøa?d x-¸ï3ÁM @  [ùa?d ¸-¸xaÕù @  \úa?d ø-¸úðÂ' @  ]ûa?d 8.¸#6Ì @  ^üa?d x.¸¡§ÛÇ @  _ýa?d ¸.¸©r´ @  `þa?d ø.¸8ej @  aÿa?d 8/¸×ÖÞÀ @  bb?d x/¸UGÉ @  cb?d ¸/¸Âݪ @  db?d ø/¸@„Êt @  eb?d 80¸ºØØ9 @  fb?d x0¸8IÏç @  gb?d ¸0¸¤àÄ @  hb?d ø0¸&qh @  ib?d 81¸*«©* @  jb?d x1¸¨:¾ô @  k b?d ¸1¸?hª@ @  l b?d ø1¸½ù½ž @  m b?d 82¸d?³  @  n b?d x2¸殤~ @  o b?d ¸2¸צ*½ @  pb?d ø2¸U7=c @  qb?d 83¸<½ž¿ @  rb?d x3¸¾,‰a @  sb?d ¸3¸)~Õ @  tb?d ø3¸«ïŠ  @  ub?d 84¸ö#×û @  vb?d x4¸t²À% @  wb?d ¸4¸èp @  xb?d ø4¸jŠgØ @  yb?d 85¸fP¦è @  zb?d x5¸äÁ±6 @  {b?d ¸5¸s“¥‚ @  |b?d ø5¸ñ²\ @  }b?d 86¸(ļb @  ~b?d x6¸ªU«¼ @  b?d ¸6¸Ç 4l @  €b?d ø6¸E›#² @  b?d 87¸±¦¹² @  ‚ b?d x7¸37®l @  ƒ!b?d ¸7¸¤eºØ @  „"b?d ø7¸&ô­ @  …#b?d 88¸V‰ä @  †$b?d x8¸Ô˜: @  ‡%b?d ¸8¸H±( @  ˆ&b?d ø8¸Ê ?Ç @  ‰'b?d 89¸Æúþ÷ @  Š(b?d x9¸Dké) @  ‹)b?d ¸9¸Ó9ý @  Œ*b?d ø9¸Q¨êC @  +b?d 8:¸ˆnä} @  Ž,b?d x:¸ ÿó£ @  -b?d ¸:¸;÷}` @  .b?d ø:¸¹fj¾ @  ‘/b?d 8;¸ÐìÉb @  ’0b?d x;¸R}Þ¼ @  “1b?d ¸;¸Å/Ê @  ”2b?d ø;¸G¾ÝÖ @  •3b?d 8<¸r€& @  –4b?d x<¸˜ã—ø @  —5b?d ¸<¸J'Û @  ˜6b?d ø<¸†Û0 @  ™7b?d 8=¸Šñ5 @  š8b?d x=¸æë @  ›9b?d ¸=¸ŸÂò_ @  œ:b?d ø=¸Så @  ;b?d 8>¸Ä•ë¿ @  ž¸Füa @  Ÿ=b?d ¸>¸f U @   >b?d ø>¸ä›BÌ @  ¡?b?d 8?¸àöÍÝ @  ¢@b?d x?¸bgÚ @  £Ab?duÐ@¸7 ¸?¸õ5η @  ¤Bb?d ø?¸w¤Ùi @  ¥Cb?d P@¸ðŠÍª @  ¦Db?d @¸ÐÏT @  §Eb?d Ð@¸î²jW @  ¨Fb?d A¸>úæ¿ @  ©Gb?d PA¸`ù¼¹ @  ªHb?d A¸@ ¾G @  «Ib?d ÐA¸u:¿Ó @  ¬Jb?d B¸è~ @  ­Kb?d PB¸.m¦3 @  ®Lb?d B¸˜¤Í @  ¯Mb?d ÐB¸ô?. @  °Nb?d C¸M¼³Æ @  ±Ob?d PC¸vï‹, @  ²Pb?d C¸V‰Ò @  ³Qb?d ÐC¸c,ˆF @  ´Rb?d D¸zb{I @  µSb?d PD¸¼qÂh @  ¶Tb?d D¸œ„À– @  ·Ub?d ÐD¸¢Ie• @  ¸Vb?d E¸ré} @  ¹Wb?d PE¸,³{ @  ºXb?d E¸ ÷±… @  »Yb?d ÐE¸9Á° @  ¼Zb?d F¸¤…Ð @  ½[b?d PF¸b–©ñ @  ¾\b?d F¸Bc« @  ¿]b?d ÐF¸nÎ @  À^b?d G¸¾F& @  Á_b?d PG¸¢œ @  Â`b?d G¸8Wžî @  Ãab?d ÐG¸ aŸz @  Äbb?d H¸9žg @  Åcb?d PH¸ÿªF @  Ædb?d H¸ßx¨¸ @  Çeb?d ÐH¸áµ » @  Èfb?d I¸1ýS @  Égb?d PI¸oþÛU @  Êhb?d I¸O Ù« @  Ëib?d ÐI¸z=Ø? @  Ìjb?d J¸çyxþ @  Íkb?d PJ¸!jÁß @  Îlb?d J¸ŸÃ! @  Ïmb?d ÐJ¸’óX @  Ðnb?d K¸B»Ô* @  Ñob?d PK¸yèìÀ @  Òpb?d K¸Yî> @  Óqb?d ÐK¸l+ïª @  Ôrb?d L¸ue¥ @  Õsb?d PL¸³v¥„ @  Ötb?d L¸“ƒ§z @  ×ub?d ÐL¸­Ny @  Øvb?d M¸}Ž‘ @  Ùwb?d PM¸#Ô— @  Úxb?d M¸ðÖi @  Ûyb?d ÐM¸6Æ×ý @  Üzb?d N¸«‚w< @  Ý{b?d PN¸m‘Î @  Þ|b?d N¸MdÌã @  ß}b?d ÐN¸Ïp° @  à~b?d O¸FüX @  áb?d PO¸T4¼í @  â€b?d€ O¸Rý @  b?d ÐO¸Ëê@ @  ‚b?d P¸u4§ò @  ƒb?d PP¸vnå> @  „b?d P¸V›çÀ @  …b?d ÐP¸¦ä¹ @  †b?d Q¸v¬‘Q @  ‡b?d PQ¸æ”- @  ˆb?d Q¸Æè–Ó @   ‰b?d ÐQ¸6—lª @   Šb?d R¸«ÓÌk @   ‹b?d PR¸¨‰Ž§ @   Œb?d R¸ˆ|ŒY @   b?d ÐR¸xv  @  Žb?d S¸¨KúÈ @  b?d PS¸𠣸 @  b?d S¸Ðþ¡F @  ‘b?d ÐS¸ [? @  ’b?d T¸9Ϩ0 @  “b?d PT¸:•êü @  ”b?d T¸`è @  •b?d ÐT¸ê{ @  –b?d U¸:Wž“ @  —b?d PU¸ªæ›ï @  ˜b?d U¸Š™ @  ™b?d ÐU¸zlch @  šb?d V¸ç(é @  ›b?d PV¸äre @  œb?d V¸ćƒ› @  b?d ÐV¸4øyâ @  žb?d W¸ä°õ  @  Ÿb?d PW¸0A² @    b?d W¸´°è @  !¡b?d ÐW¸àËJ‘ @  "¢b?d X¸Ô4ÆŒ @  #£b?d PX¸×n„@ @  $¤b?d X¸÷›†¾ @  %¥b?d ÐX¸ä|Ç @  &¦b?d Y¸׬ð/ @  '§b?d PY¸GõS @  (¨b?d Y¸gè÷­ @  )©b?d ÐY¸—— Ô @  *ªb?d Z¸ Ó­ @  +«b?d PZ¸ ‰ïÙ @  ,¬b?d Z¸)|í' @  -­b?d ÐZ¸Ù^ @  .®b?d [¸ K›¶ @  /¯b?d P[¸Q ÂÆ @  0°b?d [¸qþÀ8 @  1±b?d Ð[¸:A @  2²b?d \¸˜ÏÉN @  3³b?d P\¸›•‹‚ @  4´b?d \¸»`‰| @  5µb?d Ð\¸Ks @  6¶b?d ]¸›Wÿí @  7·b?d P]¸ æú‘ @  8¸b?d ]¸+øo @  9¹b?d Ð]¸Ûl @  :ºb?d ^¸F(¢× @  ;»b?d P^¸Erà @  <¼b?d ^¸e‡âå @  =½b?d Ð^¸•øœ @  >¾b?d _¸E°”t @  ?¿b?d P_¸ÏÀë @  @Àb?d _¸ïã @  uÐ`¸AÁb?d Ð_¸bK @  B€Âb?d (`¸Üäþˆ @  C€Ãb?d h`¸ß¾¼D @  D€Äb?d ¨`¸ÿK¾º @  E€Åb?d è`¸4Dà @  F€Æb?d (a¸ß|È+ @  G€Çb?d ha¸OÍÍW @  H€Èb?d ¨a¸o8Ï© @  I€Éb?d èa¸ŸG5Ð @  J€Êb?d (b¸• @  K€Ëb?d hb¸Y×Ý @  L€Ìb?d ¨b¸!¬Õ# @  M€Íb?d èb¸ÑÓ/Z @  N€Îb?d (c¸›£² @  O€Ïb?d hc¸YÛú @  P€Ðb?d ¨c¸y.ø< @  Q€Ñb?d èc¸‰QE @  R€Òb?d (d¸ñJ @  S€Ób?d hd¸“E³† @  T€Ôb?d ¨d¸³°±x @  U€Õb?d èd¸CÏK @  V€Öb?d (e¸“‡Çé @  W€×b?d he¸6• @  X€Øb?d ¨e¸#ÃÀk @  Y€Ùb?d èe¸Ó¼: @  Z€Úb?d (f¸NøšÓ @  [€Ûb?d hf¸M¢Ø @  \€Üb?d ¨f¸mWÚá @  ]€Ýb?d èf¸( ˜ @  ^€Þb?d (g¸M`¬p @  _€ßb?d hg¸™‘ël @  `€àb?d ¨g¸¹dé’ @  a€áb?d èg¸Ië @  b€âb?d (h¸}äŸö @  c€ãb?d hh¸~¾Ý: @  d€äb?d ¨h¸^KßÄ @  e€åb?d èh¸®4%½ @  f€æb?d (i¸~|©U @  g€çb?d hi¸îͬ) @  h€èb?d ¨i¸Î8®× @  i€éb?d èi¸>GT® @  j€êb?d (j¸£ôo @  k€ëb?d hj¸ Y¶£ @  l€ìb?d ¨j¸€¬´] @  m€íb?d èj¸pÓN$ @  n€îb?d (k¸ ›ÂÌ @  o€ïb?d hk¸øÛ›¼ @  p€ðb?d ¨k¸Ø.™B @  q€ñb?d èk¸(Qc; @  r€òb?d (l¸14 @  s€ób?d hl¸2EÒø @  t€ôb?d ¨l¸°Ð @  u€õb?d èl¸âÏ* @  v€öb?d (m¸2‡¦— @  w€÷b?d hm¸¢6£ë @  x€øb?d ¨m¸‚á @  y€ùb?d èm¸r¼[l @  z€úb?d (n¸ïøû­ @  {€ûb?d hn¸좹a @  |€üb?d ¨n¸ÌW»Ÿ @  }€ýb?d èn¸<(Aæ @  ~€þb?d (o¸ì`Í @  €ÿb?d ho¸ç1¨> @  €€c?d ¨o¸ÇĪÀ @  €c?d èo¸7»P¹ @  ‚€c?d (p¸‰eì  @  ƒ€c?d hp¸Š?®Ç @  „€c?d ¨p¸ªÊ¬9 @  …€c?d èp¸ZµV@ @  †€c?d (q¸ŠýÚ¨ @  ‡€c?d hq¸LßÔ @  ˆ€c?d ¨q¸:¹Ý* @  ‰€ c?d èq¸ÊÆ'S @  Š€ c?d (r¸W‚‡’ @  ‹€ c?d hr¸TØÅ^ @  Œ€ c?d ¨r¸t-Ç  @  € c?d èr¸„R=Ù @  Ž€c?d (s¸T±1 @  €c?d hs¸ ZèA @  €c?d ¨s¸,¯ê¿ @  ‘€c?d ès¸ÜÐÆ @  ’€c?d (t¸ÅžãÉ @  “€c?d ht¸ÆÄ¡ @  ”€c?d ¨t¸æ1£û @  •€c?d èt¸NY‚ @  –€c?d (u¸ÆÕj @  —€c?d hu¸V·Ð @  ˜€c?d ¨u¸vBÒè @  ™€c?d èu¸†=(‘ @  š€c?d (v¸yˆP @  ›€c?d hv¸#Êœ @  œ€c?d ¨v¸8ÖÈb @  €c?d èv¸È©2 @  ž€c?d (w¸á¾ó @  Ÿ€c?d hw¸Ìùï @   € c?d ¨w¸ìåû @  ¡€!c?d èw¸šh @  ¢€"c?d (x¸(eu @  £€#c?d hx¸+?Ϲ @  ¤€$c?d ¨x¸ ÊÍG @  ¥€%c?d èx¸ûµ7> @  ¦€&c?d (y¸+ý»Ö @  §€'c?d hy¸»L¾ª @  ¨€(c?d ¨y¸›¹¼T @  ©€)c?d èy¸kÆF- @  ª€*c?d (z¸ö‚æì @  «€+c?d hz¸õؤ  @  ¬€,c?d ¨z¸Õ-¦Þ @  ­€-c?d èz¸%R\§ @  ®€.c?d ({¸õÐO @  ¯€/c?d h{¸­Z‰? @  °€0c?d ¨{¸¯‹Á @  ±€1c?d è{¸}Ðq¸ @  ²€2c?d (|¸dž‚· @  ³€3c?d h|¸gÄÀ{ @  ´€4c?d ¨|¸G1Â… @  µ€5c?d è|¸·N8ü @  ¶€6c?d (}¸g´ @  ·€7c?d h}¸÷·±h @  ¸€8c?d ¨}¸×B³– @  ¹€9c?d è}¸'=Iï @  º€:c?d (~¸ºyé. @  »€;c?d h~¸¹#«â @  ¼€c?d (¸¹áß @  ¿€?c?d h¸3G‹ @  À€@c?d ¨¸uЀ¸'²‰ì @  Á€Ac?d 踞Mé @  ÂBc?d @€¸ðóâ @  ÃCc?d €€¸Q͵q @  ÄDc?d À€¸Ó\¢¯ @  ÅEc?d ¸qúÃà @  ÆFc?d @¸ókÔ> @  ÇGc?d €¸Á¾Äb @  ÈHc?d À¸C/Ó¼ @  ÉIc?d ‚¸¬…žÚ @  ÊJc?d @‚¸.‰ @  ËKc?d €‚¸*Þè @  ÌLc?d À‚¸ »É6 @  ÍMc?d ƒ¸¯¨y @  ÎNc?d @ƒ¸-Œ¿§ @  ÏOc?d €ƒ¸רó÷ @  ÐPc?d Àƒ¸U9ä) @  ÑQc?d „¸>™ú @  ÒRc?d @„¸¼í_ @  ÓSc?d €„¸6º³ @  ÔTc?d À„¸Ÿ§­m @  ÕUc?d …¸=Ì" @  ÖVc?d @…¸¿Ûü @  ×Wc?d €…¸EË  @  ØXc?d À…¸ÔÜ~ @  ÙYc?d †¸à~‘ @  ÚZc?d @†¸bï†Æ @  Û[c?d €†¸ÃÑÑ* @  Ü\c?d À†¸A@Æô @  Ý]c?d ‡¸ãæ§» @  Þ^c?d @‡¸aw°e @  ß_c?d €‡¸ââY @  à`c?d À‡¸•sõ‡ @  áac?d ˆ¸Ób”= @  âbc?d€ @ˆ¸%0ŸE @  ‘cc?d €ˆ¸eO€€ @  ‘dc?d Àˆ¸çÞ—^ @  ‘ec?d ‰¸€1 ü @  ‘fc?d @‰¸ " @  ‘gc?d €‰¸þÇU @  ‘hc?d À‰¸|VBÚ @  ‘ic?d Џ]NPÆ @  ‘jc?d @ЏßßG @  ‘ kc?d €Š¸»¨ë @  ‘ lc?d ÀЏ99üÇ @  ‘ mc?d ‹¸^Öfe @  ‘ nc?d @‹¸ÜGq» @  ‘ oc?d €‹¸Ep\q @  ‘pc?d À‹¸ÇáK¯ @  ‘qc?d Œ¸ÏR4 @  ‘rc?d @Œ¸MÃ#C @  ‘sc?d €Œ¸)´B @  ‘tc?d ÀŒ¸«%˜œ @  ‘uc?d ¸ÌÊ> @  ‘vc?d @¸N[à @  ‘wc?d €¸²œA @  ‘( Šc?d @’¸ ¯‹Ÿ @  ‘) ‹c?d €’¸DØ'ž @  ‘* Œc?d À’¸ÆI0@ @  ‘+ c?d “¸¡¦ªâ @  ‘, Žc?d @“¸#7½< @  ‘- c?d €“¸ºö @  ‘. c?d À“¸8‘‡( @  ‘/ ‘c?d ”¸0"ø @  ‘0 ’c?d @”¸²³ïÄ @  ‘1 “c?d €”¸ÖÄCÅ @  ‘2 ”c?d À”¸TUT @  ‘3 •c?d •¸3ºÎ¹ @  ‘4 –c?d @•¸±+Ùg @  ‘5 —c?d €•¸ML–A @  ‘6 ˜c?d À•¸ÏÝŸ @  ‘7 ™c?d –¸îÅ“ƒ @  ‘8 šc?d @–¸lT„] @  ‘9 ›c?d €–¸#(\ @  ‘: œc?d À–¸в?‚ @  ‘; c?d —¸í]¥  @  ‘< žc?d @—¸o̲þ @  ‘= Ÿc?d €—¸kL¦è @  ‘>  c?d À—¸éݱ6 @  ‘? ¡c?d ˜¸sÞ4 @  ‘@ ¢c?d @˜¸ñO‡ê @  ‘A £c?d €˜¸•8+ë @  ‘B ¤c?d À˜¸©<5 @  ‘C ¥c?d ™¸pF¦— @  ‘D ¦c?d @™¸ò×±I @  ‘E §c?d €™¸°þo @  ‘F ¨c?d À™¸Œ!é± @  ‘G ©c?d š¸­9û­ @  ‘H ªc?d @š¸/¨ìs @  ‘I «c?d €š¸Kß@r @  ‘J ¬c?d Àš¸ÉNW¬ @  ‘K ­c?d ›¸®¡Í @  ‘L ®c?d @›¸,0ÚÐ @  ‘M ¯c?d €›¸µ÷ @  ‘N °c?d À›¸7–àÄ @  ‘O ±c?d œ¸?%Ÿö @  ‘P ²c?d @œ¸½´ˆ( @  ‘Q ³c?d €œ¸ÙÃ$) @  ‘R ´c?d Àœ¸[R3÷ @  ‘S µc?d ¸<½©U @  ‘T ¶c?d @¸¾,¾‹ @  ‘U ·c?d €¸BKñ­ @  ‘V ¸c?d À¸ÀÚæs @  ‘W ¹c?d ž¸áÂôo @  ‘X ºc?d @ž¸cSã± @  ‘Y »c?d €ž¸$O° @  ‘Z ¼c?d Àž¸…µXn @  ‘[ ½c?d Ÿ¸âZÂÌ @  ‘\ ¾c?d @Ÿ¸`ËÕ @  ‘] ¿c?d €Ÿ¸”Ô @  ‘^ ÀcuР¸?d ÀŸ¸ŠÃË @  ‘_ Ác?d  ¸^½jõ @  ‘`Âc?d X ¸Ü,}+ @  ‘aÃc?d ˜ ¸¸[Ñ* @  ‘bÄc?d Ø ¸:ÊÆô @  ‘cÅc?d ¡¸]%\V @  ‘dÆc?d X¡¸ß´Kˆ @  ‘eÇc?d ˜¡¸#Ó® @  ‘fÈc?d Ø¡¸¡Bp @  ‘gÉc?d ¢¸€Zl @  ‘hÊc?d X¢¸Ë² @  ‘iËc?d ˜¢¸f¼º³ @  ‘jÌc?d Ø¢¸ä-­m @  ‘kÍc?d £¸ƒÂ7Ï @  ‘lÎc?d X£¸S  @  ‘mÏc?d ˜£¸˜d Û @  ‘nÐc?d Ø£¸õ @  ‘oÑc?d ¤¸Fe7 @  ‘pÒc?d X¤¸×ré @  ‘qÓc?d ˜¤¸ô Þè @  ‘rÔc?d ؤ¸v1É6 @  ‘sÕc?d ¥¸ÞS” @  ‘tÖc?d X¥¸“ODJ @  ‘u×c?d ˜¥¸o( l @  ‘vØc?d Ø¥¸í¹² @  ‘wÙc?d ¦¸Ì¡® @  ‘xÚc?d X¦¸N0p @  ‘yÛc?d ˜¦¸*Gµq @  ‘zÜc?d ئ¸¨Ö¢¯ @  ‘{Ýc?d §¸Ï98  @  ‘|Þc?d X§¸M¨/Ó @  ‘}ßc?d ˜§¸I(;Å @  ‘~àc?d ا¸˹, @  ‘ác?d ¨¸²ì=( @  ‘€âc?d X¨¸0}*ö @  ‘ãc?d ˜¨¸T †÷ @  ‘‚äc?d ب¸Ö›‘) @  ‘ƒåc?d ©¸±t ‹ @  ‘„æc?d X©¸3åU @  ‘…çc?d ˜©¸Ï‚Ss @  ‘†èc?d Ø©¸MD­ @  ‘‡éc?d ª¸l V± @  ‘ˆêc?d Xª¸îšAo @  ‘‰ëc?d ˜ª¸Šíín @  ‘Šìc?d ت¸|ú° @  ‘‹íc?d «¸o“` @  ‘Œîc?d X«¸íwÌ @  ‘ïc?d ˜«¸t5Z @  ‘Žðc?d Ø«¸ö¤MØ @  ‘ñc?d ¬¸þ2ê @  ‘òc?d X¬¸|†%4 @  ‘‘óc?d ˜¬¸ñ‰5 @  ‘’ôc?d ج¸š`žë @  ‘“õc?d ­¸ýI @  ‘”öc?d X­¸— @  ‘•÷c?d ˜­¸ƒy\± @  ‘–øc?d Ø­¸èKo @  ‘—ùc?d ®¸ ðYs @  ‘˜úc?d X®¸¢aN­ @  ‘™ûc?d ˜®¸Æâ¬ @  ‘šüc?d Ø®¸D‡õr @  ‘›ýc?d ¯¸#hoÐ @  ‘œþc?d X¯¸¡ùx @  ‘ÿc?d ˜¯¸ G @  ‘žd?d د¸‰Pß @  ‘Ÿd?d °¸75Gà @  ‘ d?d X°¸µ¤P> @  ‘¡d?d ˜°¸ÑÓü? @  ‘¢d?d ذ¸SBëá @  ‘£d?d ±¸4­qC @  ‘¤d?d X±¸¶e @  ‘§ d?d ²¸éÒ,y @  ‘¨ d?d X²¸kC;§ @  ‘© d?d ˜²¸4—¦ @  ‘ª d?d ز¸¥€x @  ‘« d?d ³¸êJÚ @  ‘¬d?d X³¸hÛ  @  ‘­d?d ˜³¸ñì Î @  ‘®d?d س¸s}7 @  ‘¯d?d ´¸{ÎH" @  ‘°d?d X´¸ù__ü @  ‘±d?d ˜´¸(óý @  ‘²d?d Ø´¸¹ä# @  ‘³d?d µ¸xV~ @  ‘´d?d Xµ¸úÇi_ @  ‘µd?d ˜µ¸ &y @  ‘¶d?d ص¸„11§ @  ‘·d?d ¶¸¥)#» @  ‘¸d?d X¶¸'¸4e @  ‘¹d?d ˜¶¸CϘd @  ‘ºd?d ض¸Á^º @  ‘»d?d ·¸¦± @  ‘¼d?d X·¸$ Æ @  ‘½d?d ˜·¸  Ð @  ‘¾ d?d Ø·¸¢1 @  ‘¿!d?d ¸¸82  @  ‘À"d?d X¸¸º£7Ò @  ‘Á#d?d ˜¸¸ÞÔ›Ó @  ‘Â$d?d ظ¸\EŒ  @  ‘Ã%d?d ¹¸;ª¯ @  ‘Ä&d?d X¹¸¹;q @  ‘Å'd?d ˜¹¸E\NW @  ‘Æ(d?d ع¸ÇÍY‰ @  ‘Ç)d?d º¸æÕK• @  ‘È*d?d Xº¸dD\K @  ‘É+d?d ˜º¸3ðJ @  ‘Ê,d?d غ¸‚¢ç” @  ‘Ë-d?d »¸åM}6 @  ‘Ì.d?d X»¸gÜjè @  ‘Í/d?d ˜»¸þëG" @  ‘Î0d?d Ø»¸|zPü @  ‘Ï1d?d ¼¸tÉ/Î @  ‘Ð2d?d X¼¸öX8 @  ‘Ñ3d?d ˜¼¸’/” @  ‘Ò4d?d ؼ¸¾ƒÏ @  ‘Ó5d?d ½¸wQm @  ‘Ô6d?d X½¸õÀ³ @  ‘Õ7d?d ˜½¸ §A• @  ‘Ö8d?d ؽ¸‹6VK @  ‘×9d?d ¾¸ª.DW @  ‘Ø:d?d X¾¸(¿S‰ @  ‘Ù;d?d ˜¾¸LÈÿˆ @  ‘Úd?d X¿¸+'e* @  ‘Ý?d?d ˜¿¸ß÷d- @uÐÀ¸  ‘Þ@d?d Ø¿¸]fsó @  ‘ßAd?d 0À¸9m‰, @  ‘àBd?d pÀ¸»üžò @  ‘áCd?d °À¸ß‹2ó @  ‘âDd?d€ ðÀ¸œ]Ò- @  ’Ed?d 0Á¸ó¦ @  ’Fd?d pÁ¸˜bx @  ’Gd?d °Á¸¡L£³ @  ’Hd?d ðÁ¸#Ý´m @  ’Id?d 0¸Ìwù  @  ’Jd?d p¸NæîÕ @  ’Kd?d °Â¸ä#® @  ’Ld?d ð¸f² p @  ’ Md?d 0øÄk? @  ’ Nd?d pøF…|á @  ’ Od?d °Ã¸ûªÆ @  ’ Pd?d ðø˜j½ @  ’ Qd?d 0ĸóÊ£° @  ’Rd?d pĸq[´n @  ’Sd?d °Ä¸v?yõ @  ’Td?d ðĸô®n+ @  ’Ud?d 0ŸVd @  ’Vd?d pŸÔ™º @  ’Wd?d °Å¸í·¬q @  ’Xd?d ðŸo&»¯ @  ’Yd?d 0Ƹ€ŒöÉ @  ’Zd?d pƸá @  ’[d?d °Æ¸¨Øl @  ’\d?d ðƸ*I² @  ’]d?d 0Ǹˆïdý @  ’^d?d pǸ ~s# @  ’_d?d °Ç¸Ë·œØ @  ’`d?d ðǸI&‹ @  ’ad?d 0ȸ7ê¼ @  ’bd?d pȸ¦ýb @  ’cd?d °È¸›ÄI @  ’ dd?d ðȸU— @  ’!ed?d 0ɸ»óaØ @  ’"fd?d pɸ9bv @  ’#gd?d °É¸LÂÍ @  ’$hd?d ðɸ‚ÝÕ @  ’%id?d 0ʸmw˜u @  ’&jd?d pʸïæ« @  ’'kd?d °Ê¸E#|Ð @  ’(ld?d ðʸDzk @  ’)md?d 0˸e A @  ’*nd?d p˸ç…Ÿ @  ’+od?d °Ë¸»û˸ @  ’,pd?d ð˸9jÜf @  ’-qd?d 0̸RÊÂÎ @  ’.rd?d p̸Ð[Õ @  ’/sd?d °Ì¸×?‹ @  ’0td?d ð̸U®U @  ’1ud?d 0͸÷n @  ’2vd?d p͸u™yÄ @  ’3wd?d °Í¸L·Í @  ’4xd?d ð͸Î&ÚÑ @  ’5yd?d 0θ!Œ—· @  ’6zd?d pθ£€i @  ’7{d?d °Î¸ Øs @  ’8|d?d ðθ‹IdÌ @  ’9}d?d 0ϸ)ïƒ @  ’:~d?d pϸ«~] @  ’;d?d °Ï¸‡!¼% @  ’<€d?d ðϸ°«û @  ’=d?d 0иÉ€úî @  ’>‚d?d pиKí0 @  ’?ƒd?d °Ð¸ót‰ @  ’@„d?d ðиqåW @  ’A…d?d 0ѸÓCw @  ’B†d?d pѸQÒ`Æ @  ’C‡d?d °Ñ¸hüÔ  @  ’Dˆd?d ðѸêmÃÓ @  ’E‰d?d 0Ҹǎµ @  ’FŠd?d pÒ¸‡V™k @  ’G‹d?d °Ò¸-“j @  ’HŒd?d ðÒ¸¯}Î @  ’Id?d 0Ó¸ ¤ @  ’JŽd?d pÓ¸5 _ @  ’Kd?d °Ó¸ÓKÝx @  ’Ld?d ðÓ¸QÚʦ @  ’M‘d?d 0Ô¸:zÔ @  ’N’d?d pÔ¸¸ëÃÐ @  ’O“d?d °Ô¸¿K @  ’P”d?d ðÔ¸=• @  ’Q•d?d 0Õ¸Ÿ¸xÚ @  ’R–d?d pÕ¸)o @  ’S—d?d °Õ¸$ÛÏ @  ’T˜d?d ðÕ¸¦–Ì @  ’U™d?d 0Ö¸I¸¤ @  ’r¶d?d pݸ¼)z @  ’s·d?d °Ý¸…º± @  ’t¸d?d ðݸ–­o @  ’u¹d?d 0Þ¸è<à  @  ’vºd?d pÞ¸j­÷× @  ’w»d?d °Þ¸Àh¬ @  ’x¼d?d ðÞ¸Bùr @  ’y½d?d 0߸à_r= @  ’z¾d?d p߸bÎeã @  ’{¿d?d uÐà¸/°ß¸SWŸ  @  ’|Àd?d ð߸ÑÆˆ× @  ’}Ád?d HฺŒ;† @  ’~Âd?d ˆà¸šy9x @  ’Ãd?d Èà¸c.ðÐ @  ’€Äd?d ḳf|8 @  ’Åd?d Há¸C†A @  ’‚Æd?d ˆá¸cì„¿ @  ’ƒÇd?d Èá¸ø¦%T @  ’„Èd?d â¸eâ…• @  ’…Éd?d H⸕ì @  ’†Êd?d ˆâ¸µh} @  ’‡Ëd?d È⸽ɛI @  ’ˆÌd?d ã¸m¡ @  ’‰Íd?d Hã¸þíØ @  ’ŠÎd?d ˆã¸½ ï& @  ’‹Ïd?d Èã¸C,! @  ’ŒÐd?d ä¸Z_ß. @  ’Ñd?d H个 %W @  ’ŽÒd?d ˆä¸ŠÕ'© @  ’Ód?d Èä¸/Õÿ @  ’Ôd?d å¸ÿsú @  ’‘Õd?d Hå¸≃ @  ’’Öd?d ˆå¸/‹} @  ’“×d?d È帴]*– @  ’”Ød?d æ¸)ŠW @  ’•Ùd?d Hæ¸Ùfp. @  ’–Úd?d ˆæ¸ù“rÐ @  ’—Ûd?d Èæ¸ñ2”‹ @  ’˜Üd?d ç¸!zc @  ’™Ýd?d Hç¸Ñâ @  ’šÞd?d ˆç¸ñðàä @  ’›ßd?d È縒]? @  ’œàd?d 踦¢–" @  ’ád?d Hè¸VÝl[ @  ’žâd?d ˆè¸v(n¥ @  ’Ÿãd?d Èè¸Â.‘® @  ’ äd?d é¸fF @  ’¡åd?d Hé¸âç? @  ’¢æd?d ˆé¸ÂìåÁ @  ’£çd?d Èé¸Y¦D* @  ’¤èd?d ê¸Äâäë @  ’¥éd?d Hê¸4’ @  ’¦êd?d ˆê¸hl @  ’§ëd?d Èê¸Éú7 @  ’¨ìd?d ë¸Ìvß @  ’©íd?d Hë¸<þŒ¦ @  ’ªîd?d ˆë¸ ŽX @  ’«ïd?d Èë¸âM_ @  ’¬ðd?d ì¸û_¾P @  ’­ñd?d Hì¸ D) @  ’®òd?d ˆì¸+ÕF× @  ’¯ód?d È츎՞l @  ’°ôd?d í¸^„ @  ’±õd?d Hí¸®âèý @  ’²öd?d ˆí¸Žê @  ’³÷d?d Èí¸]Kè @  ’´ød?d ë) @  ’µùd?d Hî¸xfP @  ’¶úd?d ˆî¸X“® @  ’·ûd?d Èî¸P2õõ @  ’¸üd?d ︀zy @  ’¹ýd?d Hï¸pƒd @  ’ºþd?d ˆï¸Pðš @  ’»ÿd?d È︡¬oÎ @  ’¼e?d ð¸rÓ| @  ’½e?d Hð¸ï ) @  ’¾e?d ˆð¸Ïø+û @  ’¿e?d Èð¸ÕùÒb @  ’Àe?d ñ¸±^Š @  ’Áe?d Hñ¸õΤó @  ’Âe?d ˆñ¸Õ;¦  @  ’Ãe?d Èñ¸Nqæ @  ’Äe?d ò¸Ó5§' @  ’Å e?d Hò¸#J]^ @  ’Æ e?d ˆò¸¿_  @  ’Ç e?d Èò¸ ¹û @  ’È e?d ó¸ÛV5 @  ’É e?d Hó¸+)Ïj @  ’Êe?d ˆó¸ ÜÍ” @  ’Ëe?d Èó¸õÆ“ @  ’Ìe?d ô¸ìˆýœ @  ’Íe?d Hô¸÷å @  ’Îe?d ˆô¸< @  ’Ïe?d Èô¸™Ý  @  ’Ðe?d õ¸IJQH @  ’Ñe?d Hõ¸¹5«1 @  ’Òe?d ˆõ¸™À©Ï @  ’Óe?d Èõ¸Š$ @  ’Ôe?d ö¸ŸÎ¨å @  ’Õe?d Hö¸o±Rœ @  ’Öe?d ˆö¸ODPb @  ’×e?d Èö¸Gå¶9 @  ’Øe?d ÷¸—­:Ñ @  ’Ùe?d H÷¸gÒÀ¨ @  ’Úe?d ˆ÷¸G'ÂV @  ’Ûe?d È÷¸$Š8 @  ’Ü e?d ø¸u´ @  ’Ý!e?d Hø¸à Né @  ’Þ"e?d ˆø¸ÀÿL @  ’ß#e?d Èø¸tù³ @  ’à$e?d ù¸¤±?ô @  ’á%e?d Hù¸TÎÅ @  ’â&e?d€ ˆù¸øÛÕ @  “'e?d Èù¸zó2 @  “(e?d ú¸ç·’Ö @  “)e?d Hú¸Ò“B @  “*e?d ˆú¸òt‘¼ @  “+e?d Èú¸4g( @  “,e?d û¸ä/¤u @  “-e?d Hû¸Úâv @  “.e?d ˆû¸úˆ @  “ /e?d Èû¸ÁD;b @  “ 0e?d ü¸Ø Èm @  “ 1e?d Hü¸í<Éù @  “ 2e?d ˆü¸ÍÉË @  “ 3e?d Èü¸ Úr& @  “4e?d ý¸Û’þÎ @  “5e?d Hý¸Hþe- @  “6e?d ˆý¸h gÓ @  “7e?d Èý¸6=Õ @  “8e?d þ¸«L @  “9e?d Hþ¸žzœ€ @  “:e?d ˆþ¸¾ž~ @  “;e?d Èþ¸xœ'_ @  “e?d ˆÿ¸¶ì J @  “uй?e?d Èÿ¸àXm @  “@e?d ¹¯ì0œ @  “Ae?d `¹šÚ1 @  “Be?d  ¹º/3ö @  “Ce?d à¹|<Š× @  “De?d ¹¬t? @  “Ee?d `¹.ºl @  “ Fe?d  ¹븒 @  “!Ge?d à¹Pèâ” @  “"He?d ¹ͬBU @  “#Ie?d `¹øšCÁ @  “$Je?d  ¹ØoA? @  “%Ke?d à¹|ø @  “&Le?d ¹Î4tö @  “'Me?d `¹ðùÑõ @  “(Ne?d  ¹Ð Ó  @  “)Oe?d à¹ë_ëá @  “*Pe?d ¹òî @  “+Qe?d `¹Ç'z @  “,Re?d  ¹çÒ„ @  “-Se?d à¹!Á¢¥ @  “.Te?d ¹ñ‰.M @  “/Ue?d `¹båµ® @  “0Ve?d  ¹B·P @  “1We?d à¹íV @  “2Xe?d ¹WM— @  “3Ye?d `¹´aL @  “4Ze?d  ¹””Ný @  “5[e?d à¹R‡÷Ü @  “6\e?d ¹‚Ï{4 @  “7]e?d `¹¼Þ7 @  “8^e?d  ¹œ÷ÜÉ @  “9_e?d à¹:Ýÿ @  “:`e?d ¹ìQâ @  “;ae?d `¹;ÚPv @  “<be?d  ¹/Rˆ @  “=ce?d à¹Ý<ë© @  “>de?d ¹ tgA @  “?ee?d ` ¹!Ý€ @  “@fe?d   ¹ìß~ @  “Age?d à ¹_ï…x @  “Bhe?d ¹«%¹ @  “Cie?d ` ¹÷$- @  “Dje?d   ¹×h&Ó @  “Eke?d à ¹{Ÿò @  “Fle?d ¹Á3 @  “Gme?d ` ¹ÿþ¶ @  “Hne?d   ¹ß ´ç @  “Ioe?d à ¹äXŒ  @  “Jpe?d ¹ý @  “Kqe?d ` ¹È ~– @  “Lre?d   ¹èÕ|h @  “Mse?d à ¹.ÆÅI @  “Nte?d ¹þŽI¡ @  “Oue?d ` ¹mâÒB @  “Pve?d   ¹Mм @  “Qwe?d à ¹Šº @  “Rxe?d ¹ŽP*{ @  “Sye?d `¹»f+ï @  “Tze?d  ¹›“) @  “U{e?d à¹]€0 @  “V|e?d ¹ÈØ @  “W}e?d `¹³¹Û @  “X~e?d  ¹“ð»% @  “Ye?d à¹Ø‚û @  “Z€e?d ¹f\G" @  “[e?d `¹SjF¶ @  “\‚e?d  ¹sŸDH @  “]ƒe?d ๵Œýi @  “^„e?d ¹eÄq @  “_…e?d `¹ç®ÍÒ @  “`†e?d  ¹Ç[Ï, @  “a‡e?d ๙X•* @  “bˆe?d ¹5ë @  “c‰e?d `¹1*4 @  “dŠe?d  ¹ß6 @  “e‹e?d à¹×Ì  @  “fŒe?d ¹„H @  “ge?d `¹9I¦K @  “hŽe?d  ¹¼¤µ @  “ie?d à¹"ïœ_ @  “je?d ¹;¡oP @  “k‘e?d `¹—nÄ @  “l’e?d  ¹.bl: @  “m“e?d à¹èqÕ @  “n”e?d ¹89Yó @  “o•e?d `¹«U @  “p–e?d  ¹‹ Àî @  “q—e?d à¹Õ£šè @  “r˜e?d ¹Hç:) @  “s™e?d `¹}Ñ;½ @  “tše?d  ¹]$9C @  “u›e?d ๛7€b @  “vœe?d ¹K Š @  “we?d `¹u²©‰ @  “xže?d  ¹UG«w @  “yŸe?d à¹ó£ªA @  “z e?d ¹Ç\&\ @  “{¡e?d `¹òj'È @  “|¢e?d  ¹ÒŸ%6 @  “}£e?d ์œ @  “~¤e?d ¹ÄÄÿ @  “¥e?d `¹ ÿš @  “€¦e?d  ¹+ ˜ñ @  “§e?d à¹u Â÷ @  “‚¨e?d ¹èMb6 @  “ƒ©e?d `¹Ý{c¢ @  “„ªe?d  ¹ýŽa\ @  “…«e?d à¹;Ø} @  “†¬e?d ¹ëÕT• @  “‡­e?d `¹Õñ– @  “ˆ®e?d  ¹õíóh @  “‰¯e?d à¹ξ˂ @  “аe?d ¹×ð8 @  “‹±e?d `¹âÆ9 @  “Œ²e?d  ¹Â3;ç @  “³e?d ๠‚Æ @  “Ž´e?d ¹Ôh. @  “µe?d `¹G•Í @  “¶e?d  ¹gñ—3 @  “‘·e?d à¹9òÍ5 @  “’¸e?d ¹¤¶mô @  ““¹e?d `¹‘€l` @  “”ºe?d  ¹±unž @  “•»e?d à¹wf׿ @  “–¼e?d ¹§.[W @  “—½e?d `¹™ãþT @  “˜¾e?d  ¹¹üªuÐ ¹ @  “™¿e?d à¹ï¢è @  “šÀe?d 8 ¹ž©6ë @  “›Áe?d x ¹«Ÿ7 @  “œÂe?d ¸ ¹‹j5 @  “Ãe?d ø ¹MyŒ  @  “žÄe?d 8!¹1H @  “ŸÅe?d x!¹[¼ @  “ Æe?d ¸!¹?®¾å @  “¡Çe?d ø!¹a­äã @  “¢Èe?d 8"¹üéD" @  “£Ée?d x"¹ÉßE¶ @  “¤Êe?d ¸"¹é*GH @  “¥Ëe?d ø"¹/9þi @  “¦Ìe?d 8#¹ÿqr @  “§Íe?d x#¹Á¼×‚ @  “¨Îe?d ¸#¹áIÕ| @  “©Ïe?d ø#¹Úí– @  “ªÐe?d 8$¹ÃT™ @  “«Ñe?d x$¹öb  @  “¬Òe?d ¸$¹Ö—ó @  “­Óe?d ø$¹„¤Ò @  “®Ôe?d 8%¹ÀÌ(: @  “¯Õe?d x%¹S ³Ù @  “°Öe?d ¸%¹sU±' @  “±×e?d ø%¹-Vë! @  “²Øe?d 8&¹°Kà @  “³Ùe?d x&¹…$Jt @  “´Úe?d ¸&¹¥ÑHŠ @  “µÛe?d ø&¹cÂñ« @  “¶Üe?d 8'¹³Š}C @  “·Ýe?d x'¹GØ@ @  “¸Þe?d ¸'¹­²Ú¾ @  “¹ße?d ø'¹ VÛˆ @  “ºàe?d 8(¹?©W• @  “»áe?d x(¹ ŸV @  “¼âe?d ¸(¹*jTÿ @  “½ãe?d ø(¹ìyíÞ @  “¾äe?d 8)¹<1a6 @  “¿åe?d x)¹\Û÷ @  “Àæe?d ¸)¹0©Ù  @  “Áçe?d ø)¹nªƒ @  “Âèe?d 8*¹óî#Î @  “Ãée?d x*¹ÆØ"Z @  “Äêe?d ¸*¹æ- ¤ @  “Åëe?d ø*¹ >™… @  “Æìe?d 8+¹ðvm @  “Çíe?d x+¹λ°n @  “Èîe?d ¸+¹îN² @  “Éïe?d ø+¹ÕŠz @  “Êðe?d 8,¹ÌSyu @  “Ëñe?d x,¹ùexá @  “Ìòe?d ¸,¹Ùz @  “Íóe?d ø,¹ƒÃ> @  “Îôe?d 8-¹ÏËOÖ @  “Ïõe?d x-¹\§Ô5 @  “Ðöe?d ¸-¹|RÖË @  “Ñ÷e?d ø-¹"QŒÍ @  “Òøe?d 8.¹¿,  @  “Óùe?d x.¹Š#-˜ @  “Ôúe?d ¸.¹ªÖ/f @  “Õûe?d ø.¹lÅ–G @  “Öüe?d 8/¹¼¯ @  “×ýe?d x/¹‚@¿¬ @  “Øþe?d ¸/¹¢µ½R @  “Ùÿe?d ø/¹$‚Î @  “Úf?d 80¹š\!| @  “Ûf?d x0¹¯j è @  “Üf?d ¸0¹Ÿ" @  “Ýf?d ø0¹IŒ›7 @  “Þf?d 81¹™Äß @  “ßf?d x1¹®«Œ @  “àf?d ¸1¹;[©r @  “áf?d ø1¹eXót @  “âf?d€ 82¹~Jû  @  ” f?d x2¹ª=²± @  ” f?d ¸2¹ŠÈ°O @  ” f?d ø2¹‰’òƒ @  ” f?d 83¹YÚ~k @  ” f?d x3¹©¥„ @  ”f?d ¸3¹‰P†ì @  ”f?d ø3¹|±á| @  ”f?d 84¹eÿs @  ” f?d x4¹•€è  @  ” f?d ¸4¹µuêô @  ” f?d ø4¹¶/¨8 @  ” f?d 85¹fg$Ð @  ” f?d x5¹–Þ© @  ”f?d ¸5¹¶íÜW @  ”f?d ø5¹‹ýçË @  ”f?d 86¹¹G  @  ”f?d x6¹æÆ½s @  ”f?d ¸6¹Æ3¿ @  ”f?d ø6¹ÅiýA @  ”f?d 87¹!q© @  ”f?d x7¹å^‹Ð @  ”f?d ¸7¹Å«‰. @  ”f?d ø7¹­ý×b @  ” f?d 88¹™[ @  ”!f?d x8¹i}¡ @  ”"f?d ¸8¹Iˆ£ø @  ”#f?d ø8¹JÒá4 @  ”$f?d 89¹ššmÜ @  ”%f?d x9¹jå—¥ @  ”&f?d ¸9¹J•[ @  ”'f?d ø9¹f‰w @  ” (f?d 8:¹ûB)¶ @  ”!)f?d x:¹ =ÓÏ @  ”"*f?d ¸:¹+ÈÑ1 @  ”#+f?d ø:¹(’“ý @  ”$,f?d 8;¹øÚ @  ”%-f?d x;¹¥ål @  ”&.f?d ¸;¹(Pç’ @  ”'/f?d ø;¹ݱ€ @  ”(0f?d 8<¹Äÿs  @  ”)1f?d x<¹4€‰t @  ”*2f?d ¸<¹u‹Š @  ”+3f?d ø<¹/ÉF @  ”,4f?d 8=¹ÇgE® @  ”-5f?d x=¹7¿× @  ”.6f?d ¸=¹í½) @  ”/7f?d ø=¹*ý†µ @  ”08f?d 8>¹·¹&t @  ”19f?d x>¹GÆÜ  @  ”2:f?d ¸>¹g3Þó @  ”3;f?d ø>¹diœ? @  ”4f?duÐ@¹7 ¸?¹d«èP @  ”7?f?d ø?¹-Ðq @  ”8€@f?d P@¹BjM @  ”9€Af?d @¹š… @  ”:€Bf?d Ð@¹’ ’Ê @  ”;€Cf?d A¹ÈK0 @  ”<€Df?d PA¹A\î @  ”=€Ef?d A¹³· @  ”>€Ff?d ÐA¹‘“¤i @  ”?€Gf?d B¹ W È @  ”@€Hf?d PB¹ŽÆ @  ”A€If?d B¹ÜÝñO @  ”B€Jf?d ÐB¹^Læ‘ @  ”C€Kf?d C¹Ï?k @  ”D€Lf?d PC¹^(µ @  ”E€Mf?d C¹ßEÇì @  ”F€Nf?d ÐC¹]ÔÐ2 @  ”G€Of?d D¹3êSs @  ”H€Pf?d PD¹±{D­ @  ”I€Qf?d D¹ã`«ô @  ”J€Rf?d ÐD¹añ¼* @  ”K€Sf?d E¹0reÐ @  ”L€Tf?d PE¹²ãr @  ”M€Uf?d E¹àøW @  ”N€Vf?d ÐE¹biЉ @  ”O€Wf?d F¹@¬  @  ”P€Xf?d PF¹Â=Ô @  ”Q€Yf?d F¹&þ @  ”R€Zf?d ÐF¹·éS @  ”S€[f?d G¹C40© @  ”T€\f?d PG¹Á¥'w @  ”U€]f?d G¹“¾È. @  ”V€^f?d ÐG¹/ßð @  ”W€_f?d H¹Ï @  ”X€`f?d PH¹M† ¡ @  ”Y€af?d H¹âø @  ”Z€bf?d ÐH¹ õ& @  ”[€cf?d I¹Ì,Ü @  ”\€df?d PI¹N; @  ”]€ef?d I¹Ô[ @  ”^€ff?d ÐI¹ž”Ã… @  ”_€gf?d J¹­Wh¶ @  ”`€hf?d PJ¹/Æh @  ”a€if?d J¹}Ý1 @  ”b€jf?d ÐJ¹ÿL‡ï @  ”c€kf?d K¹®Ï^ @  ”d€lf?d PK¹,^IË @  ”e€mf?d K¹~E¦’ @  ”f€nf?d ÐK¹üÔ±L @  ”g€of?d L¹’ê2  @  ”h€pf?d PL¹{%Ó @  ”i€qf?d L¹B`ÊŠ @  ”j€rf?d ÐL¹ÀñÝT @  ”k€sf?d M¹‘r® @  ”l€tf?d PM¹ãp @  ”m€uf?d M¹Aøü) @  ”n€vf?d ÐM¹Ãië÷ @  ”o€wf?d N¹á¬gt @  ”p€xf?d PN¹c=pª @  ”q€yf?d N¹1&Ÿó @  ”r€zf?d ÐN¹³·ˆ- @  ”s€{f?d O¹â4Q× @  ”t€|f?d PO¹`¥F  @  ”u€}f?d O¹2¾©P @  ”v€~f?d ÐO¹°/¾Ž @  ”w€f?d P¹   - @  ”x€€f?d PP¹‹1ó @  ”y€f?d P¹Ù*òª @  ”z€‚f?d ÐP¹[»åt @  ”{€ƒf?d Q¹ 8<Ž @  ”|€„f?d PQ¹ˆ©+P @  ”}€…f?d Q¹Ú²Ä  @  ”~€†f?d ÐQ¹X#Ó× @  ”€‡f?d R¹&±NG @  ”€€ˆf?d PR¹¤ Y™ @  ”€‰f?d R¹ö;¶À @  ”‚€Šf?d ÐR¹tª¡ @  ”ƒ€‹f?d S¹%)xä @  ”„€Œf?d PS¹§¸o: @  ”…€f?d S¹õ£€c @  ”†€Žf?d ÐS¹w2—½ @  ”‡€f?d T¹ ü @  ”ˆ€f?d PT¹›" @  ”‰€‘f?d T¹Ɇì{ @  ”Š€’f?d ÐT¹Kû¥ @  ”‹€“f?d U¹”"_ @  ”Œ€”f?d PU¹˜5 @  ”€•f?d U¹ÊÚØ @  ”Ž€–f?d ÐU¹HÍ @  ”€—f?d V¹jJA… @  ”€˜f?d PV¹èÛV[ @  ”‘€™f?d V¹ºÀ¹ @  ”’€šf?d ÐV¹8Q®Ü @  ”“€›f?d W¹iÒw& @  ””€œf?d PW¹ëC`ø @  ”•€f?d W¹¹X¡ @  ”–€žf?d ÐW¹;ɘ @  ”—€Ÿf?d X¹åñ]ð @  ”˜€ f?d PX¹g`J. @  ”™€¡f?d X¹5{¥w @  ”š€¢f?d ÐX¹·ê²© @  ”›€£f?d Y¹æikS @  ”œ€¤f?d PY¹dø| @  ”€¥f?d Y¹6ã“Ô @  ”ž€¦f?d ÐY¹´r„  @  ”Ÿ€§f?d Z¹‡±/9 @  ” €¨f?d PZ¹ 8ç @  ”¡€©f?d Z¹W;×¾ @  ”¢€ªf?d ÐZ¹ÕªÀ` @  ”£€«f?d [¹„)š @  ”¤€¬f?d P[¹¸D @  ”¥€­f?d [¹T£á @  ”¦€®f?d Ð[¹Ö2öà @  ”§€¯f?d \¹¸ u‚ @  ”¨€°f?d P\¹:b\ @  ”©€±f?d \¹h† @  ”ª€²f?d Ð\¹êšÛ @  ”«€³f?d ]¹»”C! @  ”¬€´f?d P]¹9Tÿ @  ”­€µf?d ]¹k»¦ @  ”®€¶f?d Ð]¹é¬x @  ”¯€·f?d ^¹ËJ û @  ”°€¸f?d P^¹IÛ7% @  ”±€¹f?d ^¹ÀØ| @  ”²€ºf?d Ð^¹™QÏ¢ @  ”³€»f?d _¹ÈÒX @  ”´€¼f?d P_¹JC† @  ”µ€½f?d _¹Xîß @  ”uÐ`¹¶€¾f?d Ð_¹çIŠ} @  ”·¿f?d (`¹C&cf @  ”¸Àf?d h`¹Á·t¸ @  ”¹Áf?d ¨`¹“¬›á @  ”ºÂf?d è`¹=Œ? @  ”»Ãf?d (a¹@¾UÅ @  ”¼Äf?d ha¹Â/B @  ”½Åf?d ¨a¹4­B @  ”¾Æf?d èa¹¥ºœ @  ”¿Çf?d (b¹a= @  ”ÀÈf?d hb¹ ðã @  ”ÁÉf?d ¨b¹_ëïº @  ”ÂÊf?d èb¹Ýzød @  ”ÃËf?d (c¹Œù!ž @  ”ÄÌf?d hc¹h6@ @  ”ÅÍf?d ¨c¹\sÙ @  ”ÆÎf?d èc¹ÞâÎÇ @  ”ÇÏf?d (d¹°ÜM† @  ”ÈÐf?d hd¹2MZX @  ”ÉÑf?d ¨d¹`Vµ @  ”ÊÒf?d èd¹âÇ¢ß @  ”ËÓf?d (e¹³D{% @  ”ÌÔf?d he¹1Õlû @  ”ÍÕf?d ¨e¹c΃¢ @  ”ÎÖf?d èe¹á_”| @  ”Ï×f?d (f¹Úÿ @  ”ÐØf?d hf¹A ! @  ”ÑÙf?d ¨f¹àx @  ”ÒÚf?d èf¹‘÷¦ @  ”ÓÛf?d (g¹À.\ @  ”ÔÜf?d hg¹B“9‚ @  ”ÕÝf?d ¨g¹ˆÖÛ @  ”ÖÞf?d èg¹’Á @  ”×ßf?d (h¹L!Š @  ”Øàf?d hh¹ΰT @  ”Ùáf?d ¨h¹œ«ü  @  ”Úâf?d èh¹:ëÓ @  ”Ûãf?d (i¹O¹2) @  ”Üäf?d hi¹Í(%÷ @  ”Ýåf?d ¨i¹Ÿ3Ê® @  ”Þæf?d èi¹¢Ýp @  ”ßçf?d (j¹.avC @  ”àèf?d hj¹¬ða @  ”áéf?d ¨j¹þëŽÄ @  ”âêf?d€ èj¹¹…¼ @  •ëf?d (k¹¸{o @  •ìf?d hk¹:ê± @  •íf?d ¨k¹­¸ @  •îf?d èk¹/)Û @  •ïf?d (l¹¥Üà @  •ðf?d hl¹ 4Ë> @  •ñf?d ¨l¹‘{ @  •òf?d èl¹ là @  • óf?d (m¹‡ÆNÔ @  • ôf?d hm¹WY  @  • õf?d ¨m¹’M¾ @  • öf?d èm¹”Z` @  • ÷f?d (n¹QB·y @  •øf?d hn¹ÓÓ § @  •ùf?d ¨n¹âÛ.d @  •úf?d èn¹`J9º @  •ûf?d (o¹ô€­ @  •üf?d ho¹v s @  •ýf?d ¨o¹áCÇ @  •þf?d èo¹cÒ @  •ÿf?d (p¹kˆ±Ì @  •g?d hp¹é¦ @  •g?d ¨p¹u°1 @  •g?d èp¹÷!ï @  •g?d (q¹cë#ø @  •g?d hq¹áz4& @  •g?d ¨q¹v( ’ @  •g?d èq¹ô¹7L @  •g?d (r¹µoÚU @  •g?d hr¹7þÍ‹ @  • g?d ¨r¹ðdø @  •  g?d èr¹•as& @  •! g?d (s¹«Q1 @  •" g?d hs¹ƒ:Fï @  •# g?d ¨s¹hR[ @  •$g?d ès¹–ùE… @  •%g?d (t¹6u™¾ @  •&g?d ht¹´äŽ` @  •'g?d ¨t¹(M>C @  •(g?d èt¹ªÜ) @  •)g?d (u¹> Š @  •*g?d hu¹¼‡T @  •+g?d ¨u¹+Õà @  •,g?d èu¹©D> @  •-g?d (v¹è’ò' @  •.g?d hv¹jåù @  •/g?d ¨v¹[ k: @  •0g?d èv¹Ùš|ä @  •1g?d (w¹MP^ó @  •2g?d hw¹ÏÁI- @  •3g?d ¨w¹X“]™ @  •4g?d èw¹ÚJG @  •5g?d (x¹ʈв @  •6 g?d hx¹HÇl @  •7!g?d ¨x¹Ô°wO @  •8"g?d èx¹V!`‘ @  •9#g?d (y¹ÂëB† @  •:$g?d hy¹@zUX @  •;%g?d ¨y¹×(Aì @  •<&g?d èy¹U¹V2 @  •='g?d (z¹o»+ @  •>(g?d hz¹–þ¬õ @  •?)g?d ¨z¹÷ @  •@*g?d èz¹šfÊ @  •A+g?d ({¹¬6Ý @  •B,g?d h{¹Œ=! @  •C-g?d ¨{¹o5· @  •D.g?d è{¹™þ"i @  •E/g?d (|¹9rþR @  •F0g?d h|¹»ãéŒ @  •G1g?d ¨|¹'JY¯ @  •H2g?d è|¹¥ÛNq @  •I3g?d (}¹1lf @  •J4g?d h}¹³€{¸ @  •K5g?d ¨}¹$Òo  @  •L6g?d è}¹¦CxÒ @  •M7g?d (~¹ç••Ë @  •N8g?d h~¹e‚ @  •O9g?d ¨~¹T Ö @  •P:g?d è~¹Ö @  •Q;g?d (¹BW9 @  •Rg?d è¹Õ-« @  •U?g?d @€¹ožÌ& @  •V@g?d €€¹OkÎØ @  •WAg?d À€¹q¦kÛ @  •XBg?d ¹¡îç3 @  •YCg?d @¹gý^ @  •ZDg?d €¹G\ì @  •[Eg?d À¹r>]x @  •\Fg?d ‚¹ïzý¹ @  •]Gg?d @‚¹±y§¿ @  •^Hg?d €‚¹‘Œ¥A @  •_Ig?d À‚¹æ @  •`Jg?d ƒ¹î•ú @  •aKg?d @ƒ¹½,Û @  •bLg?d €ƒ¹%H.% @  •cMg?d Àƒ¹~/± @  •dNg?d „¹ 0ܾ @  •eOg?d @„¹2cäT @  •fPg?d €„¹–æª @  •gQg?d À„¹,[C© @  •hRg?d …¹üÏA @  •iSg?d @…¹:v` @  •jTg?d €…¹õtž @  •kUg?d À…¹/Ãu  @  •lVg?d †¹²‡ÕË @  •mWg?d @†¹ì„Í @  •nXg?d €†¹Ìq3 @  •oYg?d À†¹_Ð @  •pZg?d ‡¹Uš8 @  •q[g?d @‡¹IF# @  •r\g?d €‡¹i³!ç @  •s]g?d À‡¹\… s @  •t^g?d ˆ¹hz¬n @  •u_g?d @ˆ¹Ξ­X @  •v`g?d €ˆ¹îk¯¦ @  •wag?d Àˆ¹Ц ¥ @  •xbg?d ‰¹î†M @  •ycg?d @‰¹Æý?l @  •zdg?d €‰¹æ=’ @  •{eg?d À‰¹Ó>< @  •|fg?d йNzœÇ @  •}gg?d @йyÆÁ @  •~hg?d €Š¹0ŒÄ? @  •ig?d Àйÿ·NÏ @  •€jg?d ‹¹/ÿÂ' @  •kg?d @‹¹éì{ @  •‚lg?d €‹¹Éyø @  •ƒmg?d À‹¹ü/xl @  •„ng?d Œ¹åa‹c @  •…og?d @Œ¹Þ2³‰ @  •†pg?d €Œ¹þDZw @  •‡qg?d ÀŒ¹À t @  •ˆrg?d ¹B˜œ @  •‰sg?d @¹ÖQ!½ @  •Štg?d €¹ö¤#C @  •‹ug?d À¹Ã’"× @  •Œvg?d ޹œeà @  •wg?d @޹Â|?Å @  •Žxg?d €Ž¹â‰=; @  •yg?d À޹q妨 @  •zg?d ¹¡­*0 @  •‘{g?d @¹g¾“ @  •’|g?d €¹GK‘ï @  •“}g?d À¹r}{ @  •”~g?d ¹Ì£,É @  ••g?d @¹‡Ñl| @  •–€g?d €¹§$n‚ @  •—g?d À¹™éË @  •˜‚g?d ‘¹I¡Gi @  •™ƒg?d @‘¹²þH @  •š„g?d €‘¹¯Gü¶ @  •›…g?d À‘¹šqý" @  •œ†g?d ’¹5]ã @  •‡g?d @’¹Y6å @  •žˆg?d €’¹yà @  •Ÿ‰g?d À’¹û©¹H @  • Šg?d “¹+á5  @  •¡‹g?d @“¹íòŒ @  •¢Œg?d €“¹ÍŽ @  •£g?d À“¹ø1ë @  •¤Žg?d ”¹á|ä @  •¥g?d @”¹Ú,D @  •¦g?d €”¹úÙFð @  •§‘g?d À”¹Äãó @  •¨’g?d •¹\o @  •©“g?d @•¹ÒOÖ: @  •ª”g?d €•¹òºÔÄ @  •«•g?d À•¹ÇŒÕP @  •¬–g?d –¹ZÈu‘ @  •­—g?d @–¹Ë/— @  •®˜g?d €–¹$>-i @  •¯™g?d À–¹·R¶Š @  •°šg?d —¹g:b @  •±›g?d @—¹¡ ƒC @  •²œg?d €—¹ü½ @  •³g?d À—¹´Ê€) @  •´žg?d ˜¹€5 4 @  •µŸg?d @˜¹&Ñ  @  •¶ g?d €˜¹$ü @  •·¡g?d À˜¹8éªÿ @  •¸¢g?d ™¹è¡& @  •¹£g?d @™¹.²Ÿ6 @  •º¤g?d €™¹GÈ @  •»¥g?d À™¹;qœ\ @  •¼¦g?d š¹¦5< @  •½§g?d @š¹ø6f› @  •¾¨g?d €š¹ØÃde @  •¿©g?d Àš¹ô®Þ¤ @  •Àªg?d ›¹$æRL @  •Á«g?d @›¹âõëm @  •¬g?d €›¹Âé“ @  •íg?d À›¹÷6è @  •Ä®g?d œ¹îx @  •ůg?d @œ¹Õ+#â @  •ưg?d €œ¹õÞ! @  •DZg?d Àœ¹Ë„ @  •Ȳg?d ¹[÷ @  •ɳg?d @¹ÝH±Ö @  •Ê´g?d €¹ý½³( @  •˵g?d À¹È‹²¼ @  •̶g?d ž¹UÏ} @  •Í·g?d @ž¹ ÌH{ @  •θg?d €ž¹+9J… @  •Ϲg?d Àž¹¸UÑf @  •кg?d Ÿ¹h]Ž @  •Ñ»g?d @Ÿ¹®ä¯ @  •Ò¼g?d €Ÿ¹ŽûæQ @  •Ó½guР¹?d ÀŸ¹»ÍçÅ @  •Ô¾g?d  ¹oÞv @  •Õ¿g?d X ¹^ÛÊQ @  •ÖÀg?d ˜ ¹~.ȯ @  •×Ág?d Ø ¹@ãm¬ @  •ØÂg?d ¡¹«áD @  •ÙÃg?d X¡¹V¸Xe @  •ÚÄg?d ˜¡¹vMZ› @  •ÛÅg?d Ø¡¹C{[ @  •ÜÆg?d ¢¹Þ?ûÎ @  •ÝÇg?d X¢¹€<¡È @  •ÞÈg?d ˜¢¹ É£6 @  •ßÉg?d Ø¢¹"£e @  •àÊg?d £¹òë“ @  •áËg?d X£¹4ø*¬ @  •âÌg?d€ ˜£¹ÕJßR @  –Íg?d Ø£¹=–ï @  –Îg?d ¤¹seà @  –Ïg?d X¤¹æi¦ç @  –Ðg?d ˜¤¹Æœ¤ @  –Ñg?d ؤ¹6ã^` @  –Òg?d ¥¹æ«Òˆ @  –Óg?d X¥¹î 4Ó @  –Ôg?d ˜¥¹Îÿ6- @  – Õg?d Ø¥¹>€ÌT @  – Ög?d ¦¹£Äl• @  – ×g?d X¦¹8ŽÍ~ @  – Øg?d ˜¦¹{Ï€ @  – Ùg?d ئ¹è5ù @  –Úg?d §¹8L¹ @  –Ûg?d X§¹Laª @  –Üg?d ˜§¹½¹cT @  –Ýg?d ا¹MÆ™- @  –Þg?d ¨¹y90 @  –ßg?d X¨¹”ïë @  –àg?d ˜¨¹:aí @  –ág?d ب¹Êl @  –âg?d ©¹V›„ @  –ãg?d X©¹÷}ß @  –äg?d ˜©¹2! @  –åg?d Ø©¹Â}…X @  –æg?d ª¹_9%™ @  –çg?d Xª¹Äs„r @  –èg?d ˜ª¹䆆Œ @  –ég?d ت¹ù|õ @  –êg?d «¹ıð @  –ëg?d X«¹p· @  – ìg?d ˜«¹PB è @  –!íg?d Ø«¹ =÷‘ @  –"îg?d ¬¹¹sž @  –#ïg?d X¬¹GiÇ™ @  –$ðg?d ˜¬¹gœÅg @  –%ñg?d ج¹—ã? @  –&òg?d ­¹G«³ö @  –'óg?d X­¹O U­ @  –(ôg?d ˜­¹oÿWS @  –)õg?d Ø­¹Ÿ€­* @  –*ög?d ®¹Ä ë @  –+÷g?d X®¹™Ž¬ @  –,øg?d ˜®¹¹{®þ @  –-ùg?d Ø®¹IT‡ @  –.úg?d ¯¹™LØo @  –/ûg?d X¯¹ h?d ³¹˜R„¬ @  –? h?d X³¹‚S}5 @  –@ h?d ˜³¹¢¦Ë @  –A h?d س¹RÙ…² @  –Bh?d ´¹K—v½ @  –Ch?d X´¹µµº @  –Dh?d ˜´¹•x·D @  –Eh?d Ø´¹eM= @  –Fh?d µ¹µOÁÕ @  –Gh?d Xµ¹½î'Ž @  –Hh?d ˜µ¹%p @  –Ih?d ص¹mdß  @  –Jh?d ¶¹ð È @  –Kh?d X¶¹kjÞ# @  –Lh?d ˜¶¹KŸÜÝ @  –Mh?d ض¹»à&¤ @  –Nh?d ·¹k¨ªL @  –Oh?d X·¹Ψr÷ @  –Ph?d ˜·¹î]p  @  –Qh?d Ø·¹"Šp @  –Rh?d ¸¹*Ým @  –Sh?d X¸¹Ipü¶ @  –T h?d ˜¸¹i…þH @  –U!h?d ظ¹™ú1 @  –V"h?d ¹¹I²ˆÙ @  –W#h?d X¹¹An‚ @  –X$h?d ˜¹¹aæl| @  –Y%h?d ع¹‘™– @  –Z&h?d º¹ Ý6Ä @  –['h?d Xº¹———/ @  –\(h?d ˜º¹·b•Ñ @  –])h?d غ¹Go¨ @  –^*h?d »¹—Uã@ @  –_+h?d X»¹#SK @  –`,h?d ˜»¹¦µ @  –a-h?d Ø»¹óÙäÌ @  –b.h?d ¼¹ê—à @  –c/h?d X¼¹ÔÄ @  –d0h?d ˜¼¹4xÖ: @  –e1h?d ؼ¹Ä,C @  –f2h?d ½¹O « @  –g3h?d X½¹îFð @  –h4h?d ˜½¹<D @  –i5h?d ؽ¹Ìd¾w @  –j6h?d ¾¹Q ¶ @  –k7h?d X¾¹Êj¿] @  –l8h?d ˜¾¹ꟽ£ @  –m9h?d ؾ¹àGÚ @  –n:h?d ¿¹ʨË2 @  –o;h?d X¿¹o¨‰ @  –ph?d 0À¹ÛÒº\ @  –s?h?d pÀ¹H/U– @  –t@h?d °À¹hÚWh @  –uAh?d ðÀ¹˜¥­ @  –vBh?d 0Á¹Hí!ù @  –wCh?d pÁ¹@LÇ¢ @  –xDh?d °Á¹`¹Å\ @  –yEh?d ðÁ¹Æ?% @  –zFh?d 0¹ ‚Ÿä @  –{Gh?d p¹–È> @  –|Hh?d °Â¹¶=<ñ @  –}Ih?d ð¹FBƈ @  –~Jh?d 0ù– J` @  –Kh?d pùo]ƒÈ @  –€Lh?d °Ã¹O¨6 @  –Mh?d ðù¿×{O @  –‚Nh?d 0Ŧ™ˆ@ @  –ƒOh?d pĹXƒKG @  –„Ph?d °Ä¹xvI¹ @  –…Qh?d ðĹˆ ³À @  –†Rh?d 0ŹXA?( @  –‡Sh?d pŹPàÙs @  –ˆTh?d °Å¹pÛ @  –‰Uh?d ðŹ€j!ô @  –ŠVh?d 0ƹ.5 @  –‹Wh?d pƹ†d Þ @  –ŒXh?d °Æ¹¦‘"  @  –Yh?d ðƹVîØY @  –ŽZh?d 0ǹ†¦T± @  –[h?d pǹ#¦Œ  @  –\h?d °Ç¹SŽô @  –‘]h?d ðǹó,t @  –’^h?d 0ȹÇÓø @  –“_h?d pȹ¤~K @  –”`h?d °È¹„‹µ @  –•ah?d ðȹtôúÌ @  ––bh?d 0ɹ¤¼v$ @  –—ch?d pɹ¬ @  –˜dh?d °É¹Œè’ @  –™eh?d ðɹ|—hø @  –šfh?d 0ʹáÓÈ9 @  –›gh?d pʹz™iÒ @  –œhh?d °Ê¹Zlk, @  –ih?d ðʹª‘U @  –žjh?d 0˹z[½ @  –Ÿkh?d p˹Î]â¶ @  – lh?d °Ë¹î¨àH @  –¡mh?d ð˹×1 @  –¢nh?d 0̹™é> @  –£oh?d p̹ùƒ*9 @  –¤ph?d °Ì¹Ùv(Ç @  –¥qh?d ð̹) Ò¾ @  –¦rh?d 0͹ùA^V @  –§sh?d p͹ñภ @  –¨th?d °Í¹Ñºó @  –©uh?d ð͹!j@Š @  –ªvh?d 0ι¼.àK @  –«wh?d pι'dA  @  –¬xh?d °Î¹‘C^ @  –­yh?d ðι÷î¹' @  –®zh?d 0Ϲ'¦5Ï @  –¯{h?d pϹ‚¦ít @  –°|h?d °Ï¹¢SïŠ @  –±}h?d ðϹR,ó @  –²~h?d 0йìò©A @  –³h?d pйbÉ @  –´€h?d °Ð¹B<ç @  –µh?d ðй²Cêž @  –¶‚h?d 0ѹb fv @  –·ƒh?d pѹjª€- @  –¸„h?d °Ñ¹J_‚Ó @  –¹…h?d ðѹº xª @  –º†h?d 0Ò¹'dØk @  –»‡h?d pÒ¹¼.y€ @  –¼ˆh?d °Ò¹œÛ{~ @  –½‰h?d ðÒ¹l¤ @  –¾Šh?d 0Ó¹¼ì ï @  –¿‹h?d pÓ¹¦íôv @  –ÀŒh?d °Ó¹†öˆ @  –Áh?d ðÓ¹vg ñ @  –ÂŽh?d 0Ô¹o)ÿþ @  –Ãh?d pÔ¹‘3<ù @  –Äh?d °Ô¹±Æ> @  –Å‘h?d ðÔ¹A¹Ä~ @  –Æ’h?d 0Õ¹‘ñH– @  –Ç“h?d pÕ¹™P®Í @  –È”h?d °Õ¹¹¥¬3 @  –É•h?d ðÕ¹IÚVJ @  –Ê–h?d 0Ö¹Ôžö‹ @  –Ë—h?d pÖ¹OÔW` @  –̘h?d °Ö¹o!Už @  –Í™h?d ðÖ¹Ÿ^¯ç @  –Κh?d 0×¹O# @  –Ï›h?d p×¹êû´ @  –Мh?d °×¹ÊãùJ @  –Ñh?d ð×¹:œ3 @  –Òžh?d 0عc. @  –ÓŸh?d pعmÎuõ @  –Ô h?d °Ø¹M;w  @  –Õ¡h?d ðع½Dr @  –Ö¢h?d 0Ù¹m š @  –×£h?d pÙ¹e­çÁ @  –ؤh?d °Ù¹EXå? @  –Ù¥h?d ðÙ¹µ'F @  –Ú¦h?d 0Ú¹(c¿‡ @  –Û§h?d pÚ¹³)l @  –ܨh?d °Ú¹“Ü’ @  –Ý©h?d ðÚ¹c£æë @  –Þªh?d 0Û¹³ëj @  –ß«h?d pÛ¹í• @  –à¬h?d °Û¹'—ö @  –á­h?d ðÛ¹×gm @  –â®h?d€ 0ܹºê‚& @  —¯h?d pܹ¥±  @  —°h?d °Ü¹…D ö @  —±h?d ðܹ°r b @  —²h?d 0ݹ`:†Š @  —³h?d pݹ¦)?« @  —´h?d °Ý¹†Ü=U @  —µh?d ðݹ¸˜V @  —¶h?d 0Þ¹%U8— @  — ·h?d pÞ¹{Vb‘ @  — ¸h?d °Þ¹[£`o @  — ¹h?d ðÞ¹n•aû @  — ºh?d 0ß¹¾Ýí @  — »h?d pß¹xÎT2 @  —¼h?d uÐà¹/°ß¹X;VÌ @  —½h?d ðß¹ËWÍ/ @  —¾h?d Hà¹Òó“Ù @  —¿h?d ˆà¹&#’Þ @  —Àh?d È๤²… @  —Áh?d á¹Ã]¢ @  —Âh?d Há¹AÌ| @  —Ãh?d ˆá¹%»¤} @  —Äh?d Èá¹§*³£ @  —Åh?d ⹆2¡¿ @  —Æh?d Hâ¹£¶a @  —Çh?d ˆâ¹øÄùG @  —Èh?d Èâ¹zUî™ @  —Éh?d 㹺t; @  —Êh?d H㹟+cå @  —Ëh?d ˆã¹û\Ïä @  —Ìh?d Èã¹yÍØ: @  —Íh?d ä¹`x€¸ @  — Îh?d Hä¹âé—f @  —!Ïh?d ˆä¹{Þº¬ @  —"Ðh?d Èä¹ùO­r @  —#Ñh?d 幞 7Ð @  —$Òh?d Hå¹1  @  —%Óh?d ˆå¹xFŒ @  —&Ôh?d Èå¹ú×›Ñ @  —'Õh?d æ¹ÛωÍ @  —(Öh?d Hæ¹Y^ž @  —)×h?d ˆæ¹¥9Ñ5 @  —*Øh?d Èæ¹'¨Æë @  —+Ùh?d ç¹@G\I @  —,Úh?d Hç¹ÂÖK— @  —-Ûh?d ˆç¹¦¡ç– @  —.Üh?d Èç¹$0ðH @  —/Ýh?d è¹2ðh @  —0Þh?d H蹃£ç¶ @  —1ßh?d ˆè¹‡#ó  @  —2àh?d Èè¹²ä~ @  —3áh?d é¹b]~Ü @  —4âh?d Hé¹àÌi @  —5ãh?d ˆé¹„»Å @  —6äh?d Èé¹*ÒÝ @  —7åh?d ê¹'2ÀÁ @  —8æh?d Hê¹¥£× @  —9çh?d ˆê¹YĘ9 @  —:èh?d Èê¹ÛUç @  —;éh?d ë¹¼ºE @  —<êh?d Hë¹>+› @  —=ëh?d ˆë¹Z\®š @  —>ìh?d Èë¹ØÍ¹D @  —?íh?d ì¹oçT @  —@îh?d Hì¹íîðŠ @  —Aïh?d ˆì¹tÙÝ@ @  —Bðh?d Èì¹öHÊž @  —Cñh?d í¹‘§P< @  —Dòh?d Hí¹6Gâ @  —Eóh?d ˆí¹wAëã @  —Fôh?d Èí¹õÐü= @  —Gõh?d î¹ÔÈî! @  —Höh?d Hî¹VYùÿ @  —I÷h?d ˆî¹ª>¶Ù @  —Jøh?d Èî¹(¯¡ @  —Kùh?d ï¹O@;¥ @  —Lúh?d Hï¹ÍÑ,{ @  —Mûh?d ˆï¹©¦€z @  —Nüh?d Èï¹+7—¤ @  —Oýh?d 𹄧+ @  —Pþh?d Hð¹…°õ @  —Qÿh?d ˆð¹ô°l @  —Ri?d Èð¹e§² @  —Si?d ñ¹uŠ= @  —Ti?d Hñ¹÷*Î @  —Ui?d ˆñ¹“l†Ï @  —Vi?d Èñ¹ý‘ @  —Wi?d ò¹0åƒ  @  —Xi?d Hò¹²t”Ó @  —Yi?d ˆò¹NÛõ @  —Zi?d Èò¹Ì‚Ì+ @  —[ i?d ó¹«mV‰ @  —\ i?d Hó¹)üAW @  —] i?d ˆó¹M‹íV @  —^ i?d Èó¹Ïúˆ @  —_ i?d ô¹Ö¯¢  @  —`i?d Hô¹T>µÔ @  —ai?d ˆô¹Í ˜ @  —bi?d Èô¹O˜À @  —ci?d õ¹(wb @  —di?d Hõ¹ªæ¼ @  —ei?d ˆõ¹Α®½ @  —fi?d Èõ¹L¹c @  —gi?d ö¹m« @  —hi?d Hö¹¡ @  —ii?d ˆö¹îó‡ @  —ji?d Èö¹‘äY @  —ki?d ÷¹ö~û @  —li?d H÷¹ti% @  —mi?d ˆ÷¹vÅ$ @  —ni?d È÷¹’çÒú @  —oi?d ø¹·åÒÚ @  —pi?d Hø¹5tÅ @  —qi?d ˆø¹1ôÑ @  —r i?d Èø¹³eÆÌ @  —s!i?d ù¹ÔŠ\n @  —t"i?d Hù¹VK° @  —u#i?d ˆù¹2lç± @  —v$i?d Èù¹°ýðo @  —w%i?d ú¹‘åâs @  —x&i?d Hú¹tõ­ @  —y'i?d ˆú¹ïº‹ @  —z(i?d Èú¹m‚­U @  —{)i?d û¹ m7÷ @  —|*i?d Hû¹ˆü ) @  —}+i?d ˆû¹싌( @  —~,i?d Èû¹n›ö @  —-i?d ü¹:þõ× @  —€.i?d Hü¹¸oâ  @  —/i?d ˆü¹!XÏà @  —‚0i?d Èü¹£ÉØ @  —ƒ1i?d ý¹Ä&B¿ @  —„2i?d Hý¹F·Ua @  —…3i?d ˆý¹"Àù` @  —†4i?d Èý¹ Qî¾ @  —‡5i?d þ¹Iü¢ @  —ˆ6i?d Hþ¹Øë| @  —‰7i?d ˆþ¹ÿ¿¤Z @  —Š8i?d Èþ¹}.³„ @  —‹9i?d ÿ¹Á)& @  —Œ:i?d Hÿ¹˜P>ø @  —;i?d ˆÿ¹ü'’ù @  —Žuкi?d `º”«%¯ @  —‘€?i?d  º`{$¨ @  —’€@i?d àºâê3v @  —“€Ai?d º…©Ô @  —”€Bi?d `º”¾  @  —•€Ci?d  ºcã  @  —–€Di?d àºárÕ @  ——€Ei?d ºÀjÉ @  —˜€Fi?d `ºBû @  —™€Gi?d  º¾œO1 @  —š€Hi?d àº< Xï @  —›€Ii?d º[âÂM @  —œ€Ji?d `ºÙsÕ“ @  —€Ki?d  º½y’ @  —ž€Li?d àº?•nL @  —Ÿ€Mi?d º& 6Î @  — €Ni?d `º¤±! @  —¡€Oi?d  º=† Ú @  —¢€Pi?d ຿ @  —£€Qi?d ºØø¦ @  —¤€Ri?d `ºZi–x @  —¥€Si?d  º>:y @  —¦€Ti?d ຼ-§ @  —§€Ui?d º—?» @  —¨€Vi?d `º(e @  —©€Wi?d  ºãagC @  —ª€Xi?d àºaðp @  —«€Yi?d ºê? @  —¬€Zi?d `º„Žýá @  —­€[i?d  ºàùQà @  —®€\i?d àºbhF> @  —¯€]i?d ºGjF @  —°€^i?d `ºÅûQÀ @  —±€_i?d  ºÁ{EÖ @  —²€`i?d àºCêR @  —³€ai?d º$Ȫ @  —´€bi?d ` º¦”ßt @  —µ€ci?d   ºÂãsu @  —¶€di?d à º@rd« @  —·€ei?d ºajv· @  —¸€fi?d ` ºãûai @  —¹€gi?d   ºœ.O @  —º€hi?d à º 9‘ @  —»€ii?d ºúâ£3 @  —¼€ji?d ` ºxs´í @  —½€ki?d   ºì @  —¾€li?d à ºž•2 @  —¿€mi?d º)'Q" @  —À€ni?d ` º«¶Fü @  —Á€oi?d   º2k6 @  —€pi?d à º°|è @  —Àqi?d º×ÿæJ @  —Ä€ri?d ` ºUnñ” @  —Å€si?d   º1]• @  —Æ€ti?d à º³ˆJK @  —Ç€ui?d º’XW @  —È€vi?d `ºO‰ @  —É€wi?d  ºìf¯ @  —Ê€xi?d àºn÷q @  —Ë€yi?d º Ó @  —Ì€zi?d `º‹‰š  @  —Í€{i?d  ºïþ6  @  —΀|i?d àºmo!Ò @  —Ï€}i?d ºÂL] @  —Ѐ~i?d `º@݃ @  —Ñ€i?d  º©ËS @  —Ò€€i?d àº+ZDÈ @  —Ó€i?d ºLµÞj @  —Ô€‚i?d `ºÎ$É´ @  —Õ€ƒi?d  ºªSeµ @  —Ö€„i?d àº(Ârk @  —×€…i?d º Ú`w @  —Ø€†i?d `º‹Kw© @  —Ù€‡i?d  ºw,8 @  —Ú€ˆi?d àºõ½/Q @  —Û€‰i?d º’Rµó @  —Ü€Ši?d `ºâ- @  —Ý€‹i?d  ºt´, @  —Þ€Œi?d àºö%ò @  —߀i?d ºïAp @  —à€Ži?d `ºmV® @  —á€i?d  ºô6{d @  —â€i?d€ àº^=xè @  ˜€‘i?d ºØ“ªc @  ˜€’i?d `ºZ½½ @  ˜€“i?d  ºû<êQ @  ˜€”i?d àºy­ý @  ˜€•i?d º–°é @  ˜€–i?d `º–§7 @  ˜€—i?d  º&C·k @  ˜€˜i?d ຤Ҡµ @  ˜ €™i?d ºtÁú @  ˜ €ši?d `º„åÖ$ @  ˜ €›i?d  º%ÛÈ @  ˜ €œi?d ວJ– @  ˜ €i?d ºá[÷¬ @  ˜€ži?d `ºcÊàr @  ˜€Ÿi?d  ºY•þ @  ˜€ i?d ຆȂ  @  ˜€¡i?d º$não @  ˜€¢i?d `º¦ÿô± @  ˜€£i?d  ºÁ£] @  ˜€¤i?d ຅P´ƒ @  ˜€¥i?d ºjúùå @  ˜€¦i?d `ºèkî; @  ˜€§i?d  ºÚ¾þg @  ˜€¨i?d àºX/é¹ @  ˜€©i?d ºú‰ˆö @  ˜€ªi?d `ºxŸ( @  ˜€«i?d  ºÙ&ÈÄ @  ˜€¬i?d àº[·ß @  ˜€­i?d º0Á² @  ˜€®i?d `º²†Öl @  ˜€¯i?d  ºY¤½Œ @  ˜ €°i?d àºÛ5ªR @  ˜!€±i?d ºy“Ë @  ˜"€²i?d `ºûÜà @  ˜#€³i?d  ºZ<‹/ @  ˜$€´i?d àºØ­œñ @  ˜%€µi?d º7Ñ— @  ˜&€¶i?d `ºµ–ÆI @  ˜'€·i?d  º‡CÖ @  ˜(€¸i?d àºÒÁË @  ˜)€¹i?d º§t „ @  ˜*€ºi?d `º%å·Z @  ˜+€»i?d  º„Ûà¶uÐ º @  ˜,€¼i?d àºB XÁ @  ˜- ½i?d 8 ºAèk @  ˜. ¾i?d x ºÃy|Þ @  ˜/ ¿i?d ¸ ºTºC @  ˜0 Ài?d ø ºÖ+  @  ˜1 Ái?d 8!ºtjÒ @  ˜2 Âi?d x!ºö}  @  ˜3 Ãi?d ¸!ºW"*à @  ˜4 Äi?d ø!ºÕ³=> @  ˜5 Åi?d 8"º:pX @  ˜6 Æi?d x"º¸ˆg† @  ˜7 Çi?d ¸"ºŠ]wÚ @  ˜8 Èi?d ø"ºÌ` @  ˜9 Éi?d 8#ºªjK @  ˜: Êi?d x#º(û• @  ˜; Ëi?d ¸#º‰ÅAy @  ˜< Ìi?d ø#º TV§ @  ˜= Íi?d 8$º`ôH @  ˜> Îi?d x$ºâe_Ñ @  ˜? Ïi?d ¸$º§@2£ @  ˜@ Ði?d ø$º%Ñ%} @  ˜A Ñi?d 8%º‡wD2 @  ˜B Òi?d x%ºæSì @  ˜C Ói?d ¸%º¤Ø @  ˜D Ôi?d ø%º&IÞ @  ˜E Õi?d 8&ºÉã^¸ @  ˜F Öi?d x&ºKrIf @  ˜G ×i?d ¸&ºy§Y: @  ˜H Øi?d ø&ºû6Nä @  ˜I Ùi?d 8'ºY/« @  ˜J Úi?d x'ºÛ8u @  ˜K Ûi?d ¸'ºz?o™ @  ˜L Üi?d ø'ºø®xG @  ˜M Ýi?d 8(º¾¿ý @  ˜N Þi?d x(º<.# @  ˜O ßi?d ¸(º[½{¯ @  ˜P ài?d ø(ºÙ,lq @  ˜Q ái?d 8)º{Š > @  ˜R âi?d x)ºùà @  ˜S ãi?d ¸)ºX%M  @  ˜T äi?d ø)ºÚ´ZÒ @  ˜U åi?d 8*º5´ @  ˜V æi?d x*º·j @  ˜W çi?d ¸*º…Z6 @  ˜X èi?d ø*ºËè @  ˜Y éi?d 8+º¥mf§ @  ˜Z êi?d x+º'üqy @  ˜[ ëi?d ¸+º†Â&• @  ˜\ ìi?d ø+ºS1K @  ˜] íi?d 8,ºoó/ã @  ˜^ îi?d x,ºíb8= @  ˜_ ïi?d ¸,º@SÝ @  ˜` ði?d ø,º„ÑD @  ˜a ñi?d 8-º&w%L @  ˜b òi?d x-º¤æ2’ @  ˜c ói?d ¸-ºØe~ @  ˜d ôi?d ø-º‡Ir  @  ˜e õi?d 8.ºhã?Æ @  ˜f öi?d x.ºêr( @  ˜g ÷i?d ¸.ºا8D @  ˜h øi?d ø.ºZ6/š @  ˜i ùi?d 8/ºøNÕ @  ˜j úi?d x/ºzY  @  ˜k ûi?d ¸/ºÛ?ç @  ˜l üi?d ø/ºY®9 @  ˜m ýi?d 80º•žH, @  ˜n þi?d x0º_ò @  ˜o ÿi?d ¸0ºPO Ô @  ˜p j?d ø0ºÒÞ  @  ˜q j?d 81ºpx}E @  ˜r j?d x1ºòéj› @  ˜s j?d ¸1ºS×=w @  ˜t j?d ø1ºÑF*© @  ˜u j?d 82º>ìgÏ @  ˜v j?d x2º¼}p @  ˜w j?d ¸2ºލ`M @  ˜x j?d ø2º 9w“ @  ˜y  j?d 83º®ŸÜ @  ˜z  j?d x3º, @  ˜{  j?d ¸3º0Vî @  ˜|  j?d ø3º¡A0 @  ˜}  j?d 84ºd_˜ @  ˜~ j?d x4ºæHF @  ˜ j?d ¸4º@ã @  ˜€ j?d ø4ºÂrÛ @  ˜ j?d 85º`Ôc” @  ˜‚ j?d x5ºâEtJ @  ˜ƒ j?d ¸5ºC{#¦ @  ˜„ j?d ø5ºÁê4x @  ˜… j?d 86º.@y @  ˜† j?d x6º¬ÑnÀ @  ˜‡ j?d ¸6ºž~œ @  ˜ˆ j?d ø6º•iB @  ˜‰ j?d 87º¾3  @  ˜Š j?d x7º<¢Ó @  ˜‹ j?d ¸7ºœH? @  ˜Œ j?d ø7º _á @  ˜ j?d 88ºY>[ @  ˜Ž j?d x8ºÛ)… @  ˜ j?d ¸8º¼\  @  ˜  j?d ø8º>K× @  ˜‘ !j?d 89ºœ)*˜ @  ˜’ "j?d x9º¸=F @  ˜“ #j?d ¸9º¿†jª @  ˜” $j?d ø9º=}t @  ˜• %j?d 8:ºÒ½0 @  ˜– &j?d x:ºP,'Ì @  ˜— 'j?d ¸:ºbù7 @  ˜˜ (j?d ø:ºàh N @  ˜™ )j?d 8;ºBÎA @  ˜š *j?d x;ºÀ_Vß @  ˜› +j?d ¸;ºaa3 @  ˜œ ,j?d ø;ºãðí @  ˜ -j?d 8<ºˆPE @  ˜ž .j?d x<º Á› @  ˜Ÿ /j?d ¸<ºáãt{ @  ˜  0j?d ø<ºcrc¥ @  ˜¡ 1j?d 8=ºÁÔê @  ˜¢ 2j?d x=ºCE4 @  ˜£ 3j?d ¸=ºâ{BØ @  ˜¤ 4j?d ø=º`êU @  ˜¥ 5j?d 8>º@` @  ˜¦ 6j?d x>º Ѿ @  ˜§ 7j?d ¸>º?â @  ˜¨ 8j?d ø>º½•< @  ˜© 9j?d 8?º3is @  ˜ª :j?d x?º¢~­ @  ˜« ;j?duÐ@º7 ¸?º<œ)A @  ˜¬ Ÿ @  ˜­ =j?d P@ºOi @  ˜® >j?d @º/ºkú @  ˜¯ ?j?d Ð@ºG @  ˜° @j?d AºÊU’¯ @  ˜± Aj?d PAº:*hÖ @  ˜² Bj?d Aºßj( @  ˜³ Cj?d ÐAº…(ä @  ˜´ Dj?d Bº„Áˆ% @  ˜µ Ej?d PBºt¾r\ @  ˜¶ Fj?d BºTKp¢ @  ˜· Gj?d ÐBºÄúuÞ @  ˜¸ Hj?d Cº²ù6 @  ˜¹ Ij?d PCºäÍO @  ˜º Jj?d CºÄ8± @  ˜» Kj?d ÐCºÇbC} @  ˜¼ Lj?d DºÞ,°r @  ˜½ Mj?d PDº.SJ  @  ˜¾ Nj?d Dº¦Hõ @  ˜¿ Oj?d ÐDºéç0§ @  ˜À Pj?d Eº9¯¼O @  ˜Á Qj?d PEºÉÐF6 @  ˜ Rj?d Eºé%DÈ @  ˜à Sj?d ÐEºê @  ˜Ä Tj?d Fºw;¦Å @  ˜Å Uj?d PFº‡D\¼ @  ˜Æ Vj?d Fº§±^B @  ˜Ç Wj?d ÐFº7[> @  ˜È Xj?d GºçH×Ö @  ˜É Yj?d PGº7-¯ @  ˜Ê Zj?d Gº7Â/Q @  ˜Ë [j?d ÐGº4˜m @  ˜Ì \j?d Hºgဠ@  ˜Í ]j?d PHºðù @  ˜Î ^j?d HºÐí @  ˜Ï _j?d ÐHºy« @  ˜Ð `j?d IºÅRõC @  ˜Ñ aj?d PIº5-: @  ˜Ò bj?d IºØ Ä @  ˜Ó cj?d ÐIº‚O @  ˜Ô dj?d Jº‹ÆïÉ @  ˜Õ ej?d PJº{¹° @  ˜Ö fj?d Jº[LN @  ˜× gj?d ÐJºËý2 @  ˜Ø hj?d KºµžÚ @  ˜Ù ij?d PKºëÊd£ @  ˜Ú jj?d KºË?f] @  ˜Û kj?d ÐKºÈe$‘ @  ˜Ü lj?d LºÑ+מ @  ˜Ý mj?d PLº!T-ç @  ˜Þ nj?d Lº¡/ @  ˜ß oj?d ÐLºHçQÙ @  ˜à pj?d Mº˜¯Ý1 @  ˜á qj?d PMºhÐ'H @  ˜â rj?d€ Mº<æ9 @  ™ sj?d ÐMºÞý3õ @  ™ tj?d NºC¹“4 @  ™ uj?d PNºv’  @  ™ vj?d NºVz^ @  ™ wj?d ÐNºyÊX @  ™ xj?d OºØ1F° @  ™ yj?d POºæüã³ @  ™ zj?d OºÆ áM @  ™ {j?d ÐOºXl @  ™ |j?d Pº¾ÄäÞ @  ™ }j?d PPº‹òåJ @  ™ ~j?d Pº«ç´ @  ™ j?d ÐPºàu§ @  ™ €j?d Qº0=+é @  ™ j?d PQº£Q°  @  ™ ‚j?d Qºƒ¤²ô @  ™ ƒj?d ÐQºE· Õ @  ™ „j?d RºØó« @  ™ …j?d PRºíŪ€ @  ™ †j?d RºÍ0¨~ @  ™ ‡j?d ÐRº“3òx @  ™ ˆj?d SºC{~ @  ™ ‰j?d PSº}¶Û“ @  ™ Šj?d Sº]CÙm @  ™ ‹j?d ÐSº›P`L @  ™ Œj?d Tº‚“C @  ™ j?d PTº·(’× @  ™ Žj?d Tº—Ý) @  ™ j?d ÐTº¬Ž¨Ã @  ™ j?d Uº|Æ$+ @  ™ ‘j?d PUºþ¬˜x @  ™ ’j?d UºÞYš† @  ™! “j?d ÐUºJ#§ @  ™" ”j?d Vº…ƒf @  ™# •j?d PVº°8‚ò @  ™$ –j?d VºÍ€  @  ™% —j?d ÐVºÎÎÚ  @  ™& ˜j?d Wº†Vâ @  ™' ™j?d PWº Kóá @  ™( šj?d Wº¾ñ @  ™) ›j?d ÐWºÆ­H> @  ™* œj?d XºòRÄ# @  ™+ j?d PXºÇdÅ· @  ™, žj?d Xºç‘ÇI @  ™- Ÿj?d ÐXºAuÆ @  ™.  j?d Yº‘=J— @  ™/ ¡j?d PYºQÑt @  ™0 ¢j?d Yº"¤ÓŠ @  ™1 £j?d ÐYºä·j« @  ™2 ¤j?d ZºyóÊj @  ™3 ¥j?d PZºLÅËþ @  ™4 ¦j?d Zºl0É @  ™5 §j?d ÐZº23“ @  ™6 ¨j?d [ºâ{î @  ™7 ©j?d P[ºܶºí @  ™8 ªj?d [ºüC¸ @  ™9 «j?d Ð[º:P2 @  ™: ¬j?d \º#ò= @  ™; ­j?d P\º(ó© @  ™< ®j?d \º6ÝñW @  ™= ¯j?d Ð\º ŽÉ½ @  ™> °j?d ]ºÝÆEU @  ™? ±j?d P]ºñ«ÿ” @  ™@ ²j?d ]ºÑ^ýj @  ™A ³j?d Ð]ºMDK @  ™B ´j?d ^ºŠ äŠ @  ™C µj?d P^º¿?å @  ™D ¶j?d ^ºŸÊçà @  ™E ·j?d Ð^ºÁɽæ @  ™F ¸j?d _º1 @  ™G ¹j?d P_º/L”  @  ™H ºj?d _º¹–ó @  ™uÐ`ºI »j?d Ð_ºðmó @  ™J¼j?d (`ºN•FŸ @  ™K½j?d h`º{£G  @  ™L¾j?d ¨`º[VEõ @  ™M¿j?d è`º âQÒ @  ™NÀj?d (aºݪÝ: @  ™OÁj?d haºNÆFÙ @  ™PÂj?d ¨aºn3D' @  ™QÃj?d èaº¨ ý @  ™RÄj?d (bº5d]Ç @  ™SÅj?d hbºR\S @  ™TÆj?d ¨bº §^­ @  ™UÇj?d èbº~¤« @  ™VÈj?d (cº®ìˆC @  ™WÉj?d hcº!-@ @  ™XÊj?d ¨cº°Ô/¾ @  ™YËj?d ècºvÇ–Ÿ @  ™ZÌj?d (dºo‰e @  ™[Íj?d hdºZ¿d @  ™\Îj?d ¨dºzJfú @  ™]Ïj?d èdºA^ @  ™^Ðj?d (eº‘QÒø @  ™_Ñj?d heº;n« @  ™`Òj?d ¨eº3ÎlU @  ™aÓj?d èeºõÝÕt @  ™bÔj?d (fºh™uµ @  ™cÕj?d hfº]¯t! @  ™dÖj?d ¨fº}Zvß @  ™e×j?d èfº#Y,Ù @  ™fØj?d (gºó 1 @  ™gÙj?d hgºÍÜ2 @  ™hÚj?d ¨gºí)Ì @  ™iÛj?d ègº+:¾í @  ™jÜj?d (hºÅ2ð @  ™kÝj?d hhº*ó3d @  ™lÞj?d ¨hº 1š @  ™mßj?d èhº¬â0¬ @  ™nàj?d (iº|ª¼D @  ™oáj?d hiºïÆ'§ @  ™pâj?d ¨iºÏ3%Y @  ™qãj?d èiº œx @  ™räj?d (jº”d<¹ @  ™såj?d hjº¡R=- @  ™tæj?d ¨jº§?Ó @  ™uçj?d èjºߤeÕ @  ™vèj?d (kºìé= @  ™wéj?d hkº1!L> @  ™xêj?d ¨kºÔNÀ @  ™yëj?d èkº×Ç÷á @  ™zìj?d (lºΉî @  ™{íj?d hlºû¿z @  ™|îj?d ¨lºÛJ„ @  ™}ïj?d èlºà?n @  ™~ðj?d (mº0Q³† @  ™ñj?d hmºÿj9v @  ™€òj?d ¨mºߟ;ˆ @  ™ój?d èmºŒ‚© @  ™‚ôj?d (nº„È"h @  ™ƒõj?d hnº±þ#ü @  ™„öj?d ¨nº‘ ! @  ™…÷j?d ènºÏ{ @  ™†øj?d (oº@÷ì @  ™‡ùj?d hoº!Rï @  ™ˆúj?d ¨oºxP @  ™‰ûj?d èoºÇké0 @  ™Šüj?d (pºyµU‚ @  ™‹ýj?d hpºLƒT @  ™Œþj?d ¨pºlvVè @  ™ÿj?d èpºXcCQ @  ™Žk?d (qºˆ+Ϲ @  ™k?d hqºGTZ @  ™k?d ¨qº;²V¤ @  ™‘k?d èqºý¡ï… @  ™’k?d (rº`åOD @  ™“k?d hrºUÓNÐ @  ™”k?d ¨rºu&L. @  ™•k?d èrº+%( @  ™–k?d (sºûmšÀ @  ™— k?d hsºÅ ?à @  ™˜ k?d ¨sºåU== @  ™™ k?d èsº#F„ @  ™š k?d (tº:w @  ™› k?d htº>v‡ @  ™œk?d ¨tº/Ëty @  ™k?d ètº˜L“ @  ™žk?d (uºÄÐÀ{ @  ™Ÿk?d huºFº|( @  ™ k?d ¨uºfO~Ö @  ™¡k?d èuº \Ç÷ @  ™¢k?d (vº=g6 @  ™£k?d hvº.f¢ @  ™¤k?d ¨vº(Ûd\ @  ™¥k?d èvºvØ>Z @  ™¦k?d (wº¦²² @  ™§k?d hwº˜]± @  ™¨k?d ¨wº¸¨O @  ™©k?d èwº~»¬n @  ™ªk?d (xºJD s @  ™«k?d hxºr!ç @  ™¬k?d ¨xº_‡# @  ™­k?d èxºùc"/ @  ™® k?d (yº)+®Ç @  ™¯!k?d hyººG5$ @  ™°"k?d ¨yºš²7Ú @  ™±#k?d èyº\¡Žû @  ™²$k?d (zºÁå.: @  ™³%k?d hzºôÓ/® @  ™´&k?d ¨zºÔ&-P @  ™µ'k?d èzºŠ%wV @  ™¶(k?d ({ºZmû¾ @  ™·)k?d h{ºd ^½ @  ™¸*k?d ¨{ºDU\C @  ™¹+k?d è{º‚Fåb @  ™º,k?d (|º›m @  ™»-k?d h|º®>ù @  ™¼.k?d ¨|ºŽË @  ™½/k?d è|ºµ˜-í @  ™¾0k?d (}ºeС @  ™¿1k?d h}ºI½Ä @  ™À2k?d ¨}ºiH: @  ™Á3k?d è}º¯[  @  ™Â4k?d (~º2Ú @  ™Ã5k?d h~º)N @  ™Ä6k?d ¨~º'ܰ @  ™Å7k?d è~ºyßY¶ @  ™Æ8k?d (º©—Õ^ @  ™Ç9k?d hº—Zp] @  ™È:k?d ¨ºuЀº'·¯r£ @  ™É;k?d èºq¼Ë‚ @  ™Êk?d À€º Á*œ @  ™Í?k?d º¬¥ @  ™Î@k?d @ºŒ=²S @  ™ÏAk?d €º½5< @  ™ÐBk?d Àº?¤+N @  ™ÑCk?d ‚ºæb%p @  ™ÒDk?d @‚ºdó2® @  ™ÓEk?d €‚ºó¡& @  ™ÔFk?d À‚ºq01Ä @  ™ÕGk?d ƒº}êðô @  ™ÖHk?d @ƒºÿ{ç* @  ™×Ik?d €ƒºcÒW  @  ™ØJk?d ÀƒºáC@× @  ™ÙKk?d „º¼' @  ™ÚLk?d @„º> ù @  ™ÛMk?d €„º©LM @  ™ÜNk?d À„º+Ý “ @  ™ÝOk?d …ºBWªO @  ™ÞPk?d @…ºÀƽ‘ @  ™ßQk?d €…ºàÈâ @  ™àRk?d À…ºbY< @  ™áSk?d †º»Ÿ  @  ™âTk?d€ @†ºøIíÜ @  šUk?d €†ºŽZ±A @  šVk?d À†º ˦Ÿ @  šWk?d ‡ºÅXœB @  šXk?d @‡ºGÉ‹œ @  šYk?d €‡ºÒdÅ @  šZk?d À‡º—Cs @  š[k?d ˆº)Œƒ @  š\k?d @ˆº«] @  š ]k?d €ˆºùö @  š ^k?d Àˆº{—áÚ @  š _k?d ‰ºJã€7 @  š `k?d @‰ºÈr—é @  š ak?d €‰ºšix° @  šbk?d À‰ºøon @  šck?d Šº¢-Ê @  šdk?d @Šº ¼ @  šek?d €Šºr§øM @  šfk?d ÀŠºð6ï“ @  šgk?d ‹º9¥ÕN @  šhk?d @‹º»4 @  šik?d €‹ºé/-É @  šjk?d À‹ºk¾: @  škk?d ŒºøÀ8 @  šlk?d @ŒºzQ/C @  šmk?d €Œº(JÀ @  šnk?d ÀŒºªÛ×Ä @  šok?d ºõ @  špk?d @º„‰˜+ @  šqk?d €ºÖ’wr @  šrk?d ÀºT`¬ @  šsk?d ŽºÿÐ(¸ @  š tk?d @Žº}A?f @  š!uk?d €Žº/ZÐ? @  š"vk?d ÀŽº­ËÇá @  š#wk?d ºdXý< @  š$xk?d @ºæÉêâ @  š%yk?d €º´Ò» @  š&zk?d Àº6Ce @  š'{k?d º­_R @  š(|k?d @º€w(Ï @  š8Œk?d @”º¼æ? @  š9k?d €”ºîýÐH @  š:Žk?d À”ºllÇ– @  š;k?d •ºÀ¯Ÿ§ @  š<k?d @•ºB>ˆy @  š=‘k?d €•º%g  @  š>’k?d À•º’´pþ @  š?“k?d –º—`>x @  š@”k?d @–ºñ)¦ @  šA•k?d €–ºGêÆÿ @  šB–k?d À–ºÅ{Ñ! @  šC—k?d —º èëü @  šD˜k?d @—ºŽyü" @  šE™k?d €—ºÜb{ @  šFšk?d À—º^ó¥ @  šG›k?d ˜ºàÄ @  šoÃk?d ¢º9Q` @  špÄk?d X¢ºý¨F¾ @  šqÅk?d ˜¢º¯³©ç @  šrÆk?d Ø¢º-"¾9 @  šsÇk?d £º䱄ä @  štÈk?d X£ºf “: @  šuÉk?d ˜£º4;|c @  švÊk?d Ø£º¶ªk½ @  šwËk?d ¤º%Ôi7 @  šxÌk?d X¤º§E~é @  šyÍk?d ˜¤ºõ^‘° @  šzÎk?d ؤºwφn @  š{Ïk?d ¥ºÛ Þ_ @  š|Ðk?d X¥ºYÉ @  š}Ñk?d ˜¥º †&Ø @  š~Òk?d Ø¥º‰1 @  šÓk?d ¦ºo•O± @  š€Ôk?d X¦ºíXo @  šÕk?d ˜¦º¿·6 @  š‚Ök?d ئº=Ž è @  šƒ×k?d §ºôš5 @  š„Øk?d X§ºvŒë @  š…Ùk?d ˜§º$—b² @  š†Úk?d اº¦ul @  š‡Ûk?d ¨ºÉô @  šˆÜk?d X¨ºšX* @  š‰Ýk?d ˜¨ºÈCðs @  šŠÞk?d بºJÒç­ @  š‹ßk?d ©º{¦†@ @  šŒàk?d X©ºù7‘ž @  šák?d ˜©º«,~Ç @  šŽâk?d Ø©º)½i @  šãk?d ªº“h½ @  šäk?d Xªºùc @  š‘åk?d ˜ªºCâþ: @  š’æk?d تºÁséä @  š“çk?d «ºàÓ9 @  š”èk?d X«ºŠqÄç @  š•ék?d ˜«ºØj+¾ @  š–êk?d Ø«ºZû<` @  š—ëk?d ¬ºÉ…>ê @  š˜ìk?d X¬ºK)4 @  š™ík?d ˜¬ºÆm @  ššîk?d جº›žÑ³ @  š›ïk?d ­º7]‰‚ @  šœðk?d X­ºµÌž\ @  šñk?d ˜­ºç×q @  šžòk?d Ø­ºeFfÛ @  šŸók?d ®ºΕ.Ï @  š ôk?d X®ºL9 @  š¡õk?d ˜®ºÖH @  š¢ök?d Ø®ºœŽÁ– @  š£÷k?d ¯ºUûK @  š¤øk?d X¯º׌ì• @  š¥ùk?d ˜¯º…—Ì @  š¦úk?d دº @  š§ûk?d °º3èY% @  š¨ük?d X°º±yNû @  š©ýk?d ˜°ºãb¡¢ @  šªþk?d ذºaó¶| @  š«ÿk?d ±ºþüˆ @  š¬l?d X±º|îëV @  š­l?d ˜±º.õ @  š®l?d رº¬dÑ @  š¯l?d ²º±|u @  š°l?d X²º” k« @  š±l?d ˜²ºÆ;„ò @  š²l?d زºDª“, @  š³l?d ³º9©ñ @  š´l?d X³º¨¾/ @  šµ l?d ˜³º]³Qv @  š¶ l?d سºß"F¨ @  š· l?d ´ºL\D" @  š¸ l?d X´ºÎÍSü @  š¹ l?d ˜´ºœÖ¼¥ @  šºl?d Ø´ºG«{ @  š»l?d µº²„óJ @  š¼l?d Xµº0ä” @  š½l?d ˜µºb Í @  š¾l?d صºàŸ @  š¿l?d ¶ºåKR• @  šÀl?d X¶ºgÚEK @  šÁl?d ˜¶º5Áª @  šÂl?d ضº·P½Ì @  šÃl?d ·º~Ç @  šÄl?d X·ºüRÏ @  šÅl?d ˜·º®I– @  šÆl?d Ø·º,ØhH @  šÇl?d ¸º’Ð @  šÈl?d X¸º† @  šÉl?d ˜¸ºBíW @  šÊl?d ظºÀ ú‰ @  šËl?d ¹ºñx›d @  šÌ l?d X¹ºs錺 @  šÍ!l?d ˜¹º!òcã @  šÎ"l?d عº£ct= @  šÏ#l?d ºº¶™ @  šÐ$l?d Xºº›' G @  šÑ%l?d ˜ººÉ<ã @  šÒ&l?d غºK­ôÀ @  šÓ'l?d »º‚>Î @  šÔ(l?d X»º¯Ùà @  šÕ)l?d ˜»ºR´6š @  šÖ*l?d Ø»ºÐ%!D @  š×+l?d ¼ºC[#Î @  šØ,l?d X¼ºÁÊ4 @  šÙ-l?d ˜¼º“ÑÛI @  šÚ.l?d ؼº@Ì— @  šÛ/l?d ½º½ƒ”¦ @  šÜ0l?d X½º?ƒx @  šÝ1l?d ˜½ºm l! @  šÞ2l?d ؽºï˜{ÿ @  šß3l?d ¾ºDK3ë @  šà4l?d X¾ºÆÚ$5 @  šá5l?d ˜¾º”ÁËl @  šâ6l?d€ ؾºb“À @  ›7l?d ¿ºJA²à @  ›8l?d X¿ºÈÐ¥> @  ›9l?d ˜¿º_‚±Š @uÐÀº  ›:l?d Ø¿ºÝ¦T @  ›;l?d 0ÀºýaYù @  ›l?d ðÀºaÈéÚ @  › ?l?d 0Áºe¥fË @  › @l?d pÁºç4q @  › Al?d °Áºpfe¡ @  › Bl?d ðÁºò÷r @  › Cl?d 0º+1|A @  ›Dl?d pº© kŸ @  ›El?d °Âº˜¨å\ @  ›Fl?d ðº9ò‚ @  ›Gl?d 0úã3² @  ›Hl?d pú”r$l @  ›Il?d °Ãº 0Ø @  ›Jl?d ðú±' @  ›Kl?d 0ĺÜ}zö @  ›Ll?d pĺ^ìm( @  ›Ml?d °ÄºÂEÝ  @  ›Nl?d ðĺ@ÔÊÕ @  ›Ol?d 0ź)^i  @  ›Pl?d pź«Ï~× @  ›Ql?d °Åºtl?d pκD[# @  ›?ul?d °ÎºÊRªÂ @  ›@vl?d ðκHý @  ›Awl?d 0ϺD|, @  ›Bxl?d pϺƈkò @  ›Cyl?d °ÏºQÚF @  ›Dzl?d ðϺÓKh˜ @  ›E{l?d 0к)zÕ @  ›F|l?d p꫆m  @  ›G}l?d °Ðº7/Ý( @  ›H~l?d ðкµ¾Êö @  ›Il?d 0Ѻ¬u @  ›J€l?d pѺ.„« @  ›Kl?d °Ñº¹Ö @  ›L‚l?d ðѺ;GÁ @  ›Mƒl?d 0Òºâ ÿ @  ›N„l?d pÒº`! @  ›O…l?d °ÒºQ’â @  ›P†l?d ðÒºÓ‰…< @  ›Q‡l?d 0ÓºßSD  @  ›Rˆl?d pÓº]ÂSÒ @  ›S‰l?d °ÓºÊGf @  ›TŠl?d ðÓºHP¸ @  ›U‹l?d 0ÔºÍ H @  ›VŒl?d pÔº—\– @  ›Wl?d °Ôº õªµ @  ›XŽl?d ðÔº‰d½k @  ›Yl?d 0Õºàî· @  ›Zl?d pÕºb i @  ›[‘l?d °Õºõ-Ý @  ›\’l?d ðÕºw¼  @  ›]“l?d 0Öº®z= @  ›^”l?d pÖº,ëã @  ›_•l?d °Öº åº @  ›`–l?d ðÖºŽt­N @  ›a—l?d 0׺‚®l~ @  ›b˜l?d p׺?{  @  ›c™l?d °×º—mo @  ›dšl?d ð׺üxÊ @  ›e›l?d 0غeZ( @  ›fœl?d pغçMö @  ›gl?d °Øº{¹ýÕ @  ›hžl?d ðغù(ê  @  ›iŸl?d 0Ùº p  @  ›j l?d pÙº„gÕ @  ›k¡l?d °ÙºÖsa @  ›l¢l?d ðÙºšGd¿ @  ›m£l?d 0ÚºCj @  ›n¤l?d pÚºÁ}_ @  ›o¥l?d °Úºðóœ @  ›p¦l?d ðÚºr‰äB @  ›q§l?d 0Ûº~S%r @  ›r¨l?d pÛºüÂ2¬ @  ›s©l?d °Ûºk& @  ›tªl?d ðÛºé1Æ @  ›u«l?d 0ܺ´Íl6 @  ›v¬l?d pܺ6\{è @  ›w­l?d °ÜºªõËË @  ›x®l?d ðܺ(dÜ @  ›y¯l?d 0ݺAîÉ @  ›z°l?d pݺÃh @  ›{±l?d °ÝºT-|£ @  ›|²l?d ðݺÖ¼k} @  ›}³l?d 0ÞºzeC @  ›~´l?d pÞºër @  ›µl?d °Þºà´íM @  ›€¶l?d ðÞºb%ú“ @  ›·l?d 0ߺnÿ;£ @  ›‚¸l?d pߺìn,} @  ›ƒ¹l?d uÐàº/°ßº{<8É @  ›„ºl?d ðߺù­/ @  ›…»l?d H຤‹ß @  ›†¼l?d ˆàº„~Ýà @  ›‡½l?d È຺³xã @  ›ˆ¾l?d áºjûô  @  ›‰¿l?d HẠõd @  ›žÔl?d ˆæºÕ÷š @  ›ŸÕl?d Èæºœ¿KÉ @  › Öl?d çºL÷Ç! @  ›¡×l?d Hçºô' @  ›¢Øl?d ˆçº2ŸÙ @  ›£Ùl?d Èçº7žM @  ›¤Úl?d èº3ÈP @  ›¥Ûl?d HèºõÛ«q @  ›¦Ül?d ˆèºÕ.© @  ›§Ýl?d Èèºëã Œ @  ›¨Þl?d éº;«€d @  ›©ßl?d HéºOR @  ›ªàl?d ˆéº½ºƒ¬ @  ›«ál?d È麈Œ‚8 @  ›¬âl?d êºÈ"ù @  ›­ãl?d HêºÓÛ›Ø @  ›®äl?d ˆêºó.™& @  ›¯ål?d Èêº`BÅ @  ›°æl?d 뺰 Ž- @  ›±çl?d Hëºî Ô+ @  ›²èl?d ˆëºÎüÖÕ @  ›³él?d ÈëºûÊ×A @  ›´êl?d ìºâ„$N @  ›µël?d Hìº$—o @  ›¶ìl?d ˆìºbŸ‘ @  ›·íl?d Èìº:¯:’ @  ›¸îl?d íºêç¶z @  ›¹ïl?d HíºÑ´Ž @  ›ºðl?d ˆíºñAŒn @  ›»ñl?d ÈíºÄwú @  ›¼òl?d îºY3-; @  ›½ól?d H ” @  ›¾ôl?d ˆîº¿Õ–ä @  ›¿õl?d È¸,% @  ›Àöl?d ïºCð Í @  ›Á÷l?d HïºóúË @  ›Âøl?d ˆïº=ø5 @  ›Ãùl?d Èïº0ù¡ @  ›Äúl?d ðº¶îE @  ›Åûl?d Hðºpýü2 @  ›Æül?d ˆðºPþÌ @  ›Çýl?d ÈðºnÅ[Ï @  ›Èþl?d ñº¾×' @  ›Éÿl?d HñºŠ˜Âž @  ›Êm?d ˆñºªmÀ` @  ›Ëm?d ÈñºŸ[Áô @  ›Ìm?d òºa5 @  ›Ím?d HòºÄ Ø @  ›Îm?d ˆòºäùÚê @  ›Ïm?d Èòºw•A  @  ›Ðm?d óº§ÝÍá @  ›Ñm?d HóºùÞ—ç @  ›Òm?d ˆóºÙ+• @  ›Ó m?d Èóºì” @  ›Ô m?d ôºõSg‚ @  ›Õ m?d Hôº3@Þ£ @  ›Ö m?d ˆôºµÜ] @  ›× m?d Èôº-xy^ @  ›Øm?d õºý0õ¶ @  ›Ùm?d HõºÆcÍ\ @  ›Úm?d ˆõºæ–Ï¢ @  ›Ûm?d ÈõºÓ Î6 @  ›Üm?d öºNän÷ @  ›Ým?d Höºˆ÷×Ö @  ›Þm?d ˆöº¨Õ( @  ›ßm?d Èöº*hi{ @  ›àm?d ÷ºú å“ @  ›ám?d H÷º¤#¿• @  ›âm?d€ ˆ÷º€Ò @  œm?d È÷ºÖ÷\o @  œm?d øºâÐr @  œm?d HøºáR’¾ @  œm?d ˆøºÁ§@ @  œm?d Èøº1Øj9 @  œm?d ùºáæÑ @  œm?d Hùº‰Æ¸ @  œ m?d ˆùº©3ºc @  œ !m?d ÈùºYL@ @  œ "m?d úºÄàÛ @  œ #m?d HúºÇR¢ @  œ $m?d ˆúºç§ é @  œ %m?d ÈúºØZ @  œ&m?d ûºÇÖx @  œ'm?d Hûºú€íä @  œ(m?d ˆûºÚuï @  œ)m?d Èûº* c @  œ*m?d üº3Dæl @  œ+m?d Hüº0¤  @  œ,m?d ˆüºë¦^ @  œ-m?d Èüºà”\' @  œ.m?d ýº0ÜÐÏ @  œ/m?d HýºÅ=·_ @  œ0m?d ˆýºåȵ¡ @  œ1m?d Èýº·OØ @  œ2m?d þºˆóï @  œ3m?d Hþº‹©­Õ @  œ4m?d ˆþº«\¯+ @  œ5m?d Èþº[#UR @  œ6m?d ÿº‹kÙº @  œ7m?d Hÿº§}Å– @  œ 8m?d ˆÿº‡ˆÇh @  œ!uл9m?d Èÿºw÷= @  œ":m?d »8Cà @  œ#;m?d `»;W, @  œ$m?d »;Û#C @  œ'?m?d `»£Ýh @  œ(@m?d  »ƒ(jà @  œ)Am?d à»sW™ @  œ*Bm?d »î0X @  œ+Cm?d `»íIr” @  œ,Dm?d  »ͼpj @  œ-Em?d à»=Ê @  œ.Fm?d »í‹û @  œ/Gm?d `»Л=g @  œ0Hm?d  »ðn?™ @  œ1Im?d à»Åà @  œ2Jm?d »_6ï @  œ3Km?d `»t# @  œ4Lm?d  »:ðvÝ @  œ5Mm?d à»ÊŒ¤ @  œ6Nm?d »ÇL @  œ7Om?d `»ï&gÜ @  œ8Pm?d  »ÏÓe" @  œ9Qm?d à»?¬Ÿ[ @  œ:Rm?d »¢è?š @  œ;Sm?d `»¡²}V @  œ<Tm?d  »G¨ @  œ=Um?d à»q8…Ñ @  œ>Vm?d »¡p 9 @  œ?Wm?d `»#a‡ @  œ@Xm?d  »”y @  œAYm?d à»óëë @  œBZm?d »Çg @  œC[m?d `»ÄN%Ñ @  œD\m?d  »ä»'/ @  œE]m?d à»ÄÝV @  œF^m?d »ÄŒQ¾ @  œG_m?d ` »¬Úò @  œH`m?d   »Œ/  @  œIam?d à »|P÷u @  œJbm?d »áW´ @  œKcm?d ` »âNx @  œLdm?d   »»† @  œMem?d à »2Äíÿ @  œNfm?d »âŒa @  œOgm?d ` »ßœZ‹ @  œPhm?d   »ÿiXu @  œQim?d à »¢  @  œRjm?d »XQ @  œSkm?d ` »Ï @  œTlm?d   »5÷1 @  œUmm?d à »ňëH @  œVnm?d »Àg  @  œWom?d ` »à!0 @  œXpm?d   »ÀÔÎ @  œYqm?d à »0«ø· @  œZrm?d »­ïXv @  œ[sm?d `»®µº @  œ\tm?d  »Ž@D @  œ]um?d à»~?â= @  œ^vm?d »®wnÕ @  œ_wm?d `»‚arù @  œ`xm?d  »¢”p @  œaym?d à»RëŠ~ @  œbzm?d »ì56Ì @  œc{m?d `»ïot @  œd|m?d  »Ïšvþ @  œe}m?d à»?匇 @  œf~m?d »ï­o @  œgm?d `»jm  @  œh€m?d  »J˜^ @  œim?d ໺çç' @  œj‚m?d »'£Gæ @  œkƒm?d `»$ù* @  œl„m?d  » Ô @  œm…m?d à»ôsý­ @  œn†m?d »$;qE @  œo‡m?d `»+JÙ @  œpˆm?d  »9ÞH' @  œq‰m?d à»É¡²^ @  œrŠm?d »ÐïAQ @  œs‹m?d `»Óµ @  œtŒm?d  »ó@c @  œum?d à»?û @  œvŽm?d »Ówwò @  œwm?d `»&–b @  œxm?d  »cœ @  œy‘m?d à»öèå @  œz’m?d »kXH$ @  œ{“m?d `»h è @  œ|”m?d  »H÷ @  œ}•m?d ໸ˆòo @  œ~–m?d »hÀ~‡ @  œ—m?d `» ‡T @  œ€˜m?d  »)rVö @  œ™m?d à»Ù ¬ @  œ‚šm?d »íò ’ @  œƒ›m?d `»î¨b^ @  œ„œm?d  »Î]`  @  œ…m?d à»>"šÙ @  œ†žm?d »îj1 @  œ‡Ÿm?d `»†»“ @  9€3n?d x>»Ý*; @  :€4n?d ¸>»ýõ(Å @  ;€5n?d ø>»ÈÃ)Q @  <€6n?d 8?»‹¥¹ @  =€7n?d x?»Fˆÿ¿ @  >€8n?duÐ@»7 ¸?»f}ýA @  ?€9n?d ø?»JG€ @  @€:n?d P@»‰¼ý¼ @  A€;n?d @»íËQ½ @  B€n?d PA»Š$Ë @  E€?n?d A»~ôÊ @  F€@n?d ÐA»üeÝÆ @  G€An?d B»Ý}ÏÚ @  H€Bn?d PB»_ìØ @  I€Cn?d B»;›t @  J€Dn?d ÐB»¹ cÛ @  K€En?d C»Þåùy @  L€Fn?d PC»\tî§ @  M€Gn?d C» ¡ @  N€Hn?d ÐC»"‚¶_ @  O€In?d D»*1Ém @  P€Jn?d PD»¨ Þ³ @  Q€Kn?d D»Ì×r² @  R€Ln?d ÐD»NFel @  S€Mn?d E»)©ÿÎ @  T€Nn?d PE»«8è @  U€On?d E»2ÅÚ @  V€Pn?d ÐE»°žÒ @  W€Qn?d F»‘†À @  X€Rn?d PF»ׯ @  Y€Sn?d F»w`{Ç @  Z€Tn?d ÐF»õñl @  [€Un?d G»’ö» @  \€Vn?d PG»áe @  ]€Wn?d G»ìè®C @  ^€Xn?d ÐG»ny¹ @  _€Yn?d H»Z}ž  @  `€Zn?d PH»Øì‰Ó @  a€[n?d H»¼›%Ò @  b€\n?d ÐH»> 2  @  c€]n?d I»Y娮 @  d€^n?d PI»Ût¿p @  e€_n?d I»ßô«f @  f€`n?d ÐI»]e¼¸ @  g€an?d J»|}®¤ @  h€bn?d PJ»þì¹z @  i€cn?d J»š›{ @  j€dn?d ÐJ» ¥ @  k€en?d K»å˜ @  l€fn?d PK»ýtÙ @  m€gn?d K»Àÿ @  n€hn?d ÐK»ƒ‚×! @  o€in?d L»‹1¨ @  p€jn?d PL»  ¿Í @  q€kn?d L»m×Ì @  r€ln?d ÐL»ïF @  s€mn?d M»ˆ©ž° @  t€nn?d PM» 8‰n @  u€on?d M»“¤¤ @  v€pn?d ÐM»ž³z @  w€qn?d N»0†¡f @  x€rn?d PN»²¶¸ @  y€sn?d N»Ö`¹ @  z€tn?d ÐN»Tñ g @  {€un?d O»3—Å @  |€vn?d PO»±€ @  }€wn?d O»MèÏ= @  ~€xn?d ÐO»ÏyØã @  €yn?d P»< ù @  €€zn?d PP»¾œî¡ @  €{n?d P»ÚëB  @  ‚€|n?d ÐP»XzU~ @  ƒ€}n?d Q»?•ÏÜ @  „€~n?d PQ»½Ø @  …€n?d Q»T— @  †€€n?d ÐQ»ÖƒšI @  ‡€n?d R»÷›ˆU @  ˆ€‚n?d PR»u Ÿ‹ @  ‰€ƒn?d R»}3Š @  Š€„n?d ÐR»“ì$T @  ‹€…n?d S»ô¾ö @  Œ€†n?d PS»v’©( @  €‡n?d S»Šõæ @  Ž€ˆn?d ÐS»dñÐ @  €‰n?d T»׎â @  €Šn?d PT»‚F™< @  ‘€‹n?d T»æ15= @  ’€Œn?d ÐT»d "ã @  “€n?d U»O¸A @  ”€Žn?d PU»Þ¯Ÿ @  •€n?d U»é‚U @  –€n?d ÐU»šx•‹ @  —€‘n?d V»»`‡— @  ˜€’n?d PV»9ñI @  ™€“n?d V»]†o?d hx»ÔP±è @  ž?o?d ¨x»l5]Q @  ž@o?d èx»î¤J @  žAo?d (y»L+À @  žBo?d hy»Γ< @  žCo?d ¨y»ZÓå @  žD o?d èy»ËÄ; @  žE!o?d (z»ba‰] @  žF"o?d hz»à𞃠@  žG#o?d ¨z»J5mø @  žH$o?d èz»Ȥz& @  žI%o?d ({»ji @  žJ&o?d h{»è“ · @  žK'o?d ¨{»ѽ¸| @  žL(o?d è{»S,¯¢ @  žM)o?d (|»8Œ±  @  žN*o?d h|»º¦Ô @  žO+o?d ¨|»½ykO @  žP,o?d è|»?è|‘ @  žQ-o?d (}»NÞ @  žR.o?d h}»ß  @  žS/o?d ¨}»C¡Ü' @  žT0o?d è}»Á0Ëù @  žU1o?d (~».š†Ÿ @  žV2o?d h~»¬ ‘A @  žW3o?d ¨~»Îb: @  žX4o?d è~»„_uä @  žY5o?d (»&ù« @  žZ6o?d h»¤hu @  ž[7o?d ¨»uЀ»'F·¾ @  ž\8o?d è»bWÓ @  ž]€9o?d @€»~ÜÏ @  ž^€:o?d €€»^òÞ1 @  ž_€;o?d À€»êô!: @  ž`€o?d €»ê6UU @  žc€?o?d À»y˺Ÿ @  žd€@o?d ‚»ä^ @  že€Ao?d @‚»ðà' @  žf€Bo?d €‚»4âÙ @  žg€Co?d À‚»<¤‚ @  žh€Do?d ƒ»ììˆj @  ži€Eo?d @ƒ»“r @  žj€Fo?d €ƒ»§¨ @  ž¦€‚o?d €’»ã¥V @  ž§€ƒo?d À’»BC  @  ž¨€„o?d “»Æ Ïå @  ž©€…o?d @“»6u5œ @  žª€†o?d €“»€7b @  ž«€‡o?d À“»Ê–‰ @  ž¬€ˆo?d ”»”„e† @  ž­€‰o?d @”»dûŸÿ @  ž®€Šo?d €”»D @  ž¯€‹o?d À”»áEº @  ž°€Œo?d •»1FÉR @  ž±€o?d @•»Á93+ @  ž²€Žo?d €•»áÌ1Õ @  ž³€o?d À•»ÖòÒ @  ž´€o?d –»‚’R @  žµ€‘o?d @–»rí¨j @  ž¶€’o?d €–»Rª” @  ž·€“o?d À–»Z¹LÏ @  ž¸€”o?d —»ŠñÀ' @  ž¹€•o?d @—»zŽ:^ @  žº€–o?d €—»Z{8  @  ž»€—o?d À—»Á1™K @  ž¼€˜o?d ˜»õÎV @  ž½€™o?d @˜»±ï/ @  ž¾€šo?d €˜»%DíÑ @  ž¿€›o?d À˜»?EH @  žÀ€œo?d ™»ï ˜  @  žÁ€o?d @™»rbÙ @  ž€žo?d €™»?‡`' @  žÀŸo?d À™»\*šü @  žÄ€ o?d š»Án:= @  žÅ€¡o?d @š»1ÀD @  žÆ€¢o?d €š»äº @  žÇ€£o?d Àš»E$á @  žÈ€¤o?d ›»É ¨  @  žÉ€¥o?d @›»9rRp @  žÊ€¦o?d €›»‡PŽ @  žË€§o?d À›»‚Íñe @  žÌ€¨o?d œ»›ƒj @  žÍ€©o?d @œ»küø @  ž΀ªo?d €œ»K úí @  žÏ€«o?d Àœ»î "V @  žЀ¬o?d »>A®¾ @  žÑ€­o?d @»Î>TÇ @  žÒ€®o?d €»îËV9 @  žÓ€¯o?d À»Ñ•> @  žÔ€°o?d ž»•5ÿ @  žÕ€±o?d @ž»}êφ @  žÖ€²o?d €ž»]Íx @  ž×€³o?d Àž»U¾+# @  žØ€´o?d Ÿ»…ö§Ë @  žÙ€µo?d @Ÿ»u‰]² @  žÚ€¶o?d €Ÿ»U|_L @  žÛ€·ouР»?d ÀŸ»Î6þ§ @  žÜ€¸o?d  »½S½ @  žÝ¹o?d X »2©Ä @  žÞºo?d ˜ »7«: @  žß»o?d Ø »¦1T1 @  žà¼o?d ¡»vyØÙ @  žá½o?d X¡»†"  @  žâ¾o?d€ ˜¡»Ò0<ø @  Ÿ¿o?d Ø¡» Œ› @  ŸÀo?d ¢»=È;Ú @  ŸÁo?d X¢»þ:N @  ŸÂo?d ˜¢»( 8° @  ŸÃo?d Ø¢»î‘ @  ŸÄo?d £»>P y @  ŸÅo?d X£»¨z @  ŸÆo?d ˜£» hª„ @  Ÿ Ço?d Ø£»~kð‚ @  Ÿ Èo?d ¤»g% @  Ÿ Éo?d X¤»R @  Ÿ Êo?d ˜¤»ræç @  Ÿ Ëo?d ؤ»´õ¹Æ @  ŸÌo?d ¥»d½5. @  ŸÍo?d X¥»÷Ñ®Í @  ŸÎo?d ˜¥»×$¬3 @  ŸÏo?d Ø¥»ìw”Ù @  ŸÐo?d ¦»q34 @  ŸÑo?d X¦»D5Œ @  ŸÒo?d ˜¦»dð7r @  ŸÓo?d ئ»¢ãŽS @  ŸÔo?d §»r«» @  ŸÕo?d X§»Lf§¸ @  ŸÖo?d ˜§»l“¥F @  Ÿ×o?d ا»2ÿ@ @  ŸØo?d ¨»os] @  ŸÙo?d X¨»3YrÉ @  ŸÚo?d ˜¨»¬p7 @  ŸÛo?d ب»Õ¿É @  ŸÜo?d ©»÷Eþ @  ŸÝo?d X©»‡ù­ @  Ÿ Þo?d ˜©»§hûS @  Ÿ!ßo?d Ø©»Œúe @  Ÿ"ào?d ª»œÈZ¤ @  Ÿ#áo?d Xª»©þ[0 @  Ÿ$âo?d ˜ª»‰ YÎ @  Ÿ%ão?d ت»Oàï @  Ÿ&äo?d «»ŸPl @  Ÿ'åo?d X«»¡É @  Ÿ(æo?d ˜«»hËú @  Ÿ)ço?d Ø«»ßk‘ü @  Ÿ*èo?d ¬»Æ%bó @  Ÿ+éo?d X¬»ócg @  Ÿ,êo?d ˜¬»Óæa™ @  Ÿ-ëo?d ج»õظ @  Ÿ.ìo?d ­»ŽTP @  Ÿ/ío?d X­»VÑϳ @  Ÿ0îo?d ˜­»v$ÍM @  Ÿ1ïo?d Ø­»Mwõ§ @  Ÿ2ðo?d ®»Ð3Uf @  Ÿ3ño?d X®»åTò @  Ÿ4òo?d ˜®»ÅðV  @  Ÿ5óo?d Ø®»ãï- @  Ÿ6ôo?d ¯»Ó«cÅ @  Ÿ7õo?d X¯»ífÆÆ @  Ÿ8öo?d ˜¯»Í“Ä8 @  Ÿ9÷o?d د»“ž> @  Ÿ:øo?d °»-N"Œ @  Ÿ;ùo?d X°»x# @  Ÿ<úo?d ˜°»8!æ @  Ÿ=ûo?d ذ»þž˜Ç @  Ÿ>üo?d ±».Ö/ @  Ÿ?ýo?d X±»»®î @  Ÿ@þo?d ˜±»"N¬ @  ŸAÿo?d ر»ïÞŸ @  ŸBp?d ²»rš?Ø @  ŸCp?d X²»G¬>L @  ŸDp?d ˜²»gY<² @  ŸEp?d ز»¡J…“ @  ŸFp?d ³»q { @  ŸGp?d X³»OϬx @  ŸHp?d ˜³»o:®† @  ŸIp?d س»19ô€ @  ŸJp?d ´»(w @  ŸK p?d X´»A @  ŸL p?d ˜´»=´å @  ŸM p?d Ø´»û§½Ä @  ŸN p?d µ»+ï1, @  ŸO p?d Xµ»¸ƒªÏ @  ŸPp?d ˜µ»˜v¨1 @  ŸQp?d ص»£%Û @  ŸRp?d ¶»>a0 @  ŸSp?d X¶» W1Ž @  ŸTp?d ˜¶»+¢3p @  ŸUp?d ض»í±ŠQ @  ŸVp?d ·»=ù¹ @  ŸWp?d X·»4£º @  ŸXp?d ˜·»#Á¡D @  ŸYp?d Ø·»}ÂûB @  ŸZp?d ¸»I=w_ @  Ÿ[p?d X¸»| vË @  Ÿ\p?d ˜¸»\þt5 @  Ÿ]p?d ظ»šíÍ @  Ÿ^p?d ¹»J¥Aü @  Ÿ_p?d X¹»ÈÏý¯ @  Ÿ`p?d ˜¹»è:ÿQ @  Ÿap?d ع»NÞþg @  Ÿb p?d º»Óš^¦ @  Ÿc!p?d Xº»æ¬_2 @  Ÿd"p?d ˜º»ÆY]Ì @  Ÿe#p?d غ»Jäí @  Ÿf$p?d »»Ðh @  Ÿg%p?d X»»îÏÍ @  Ÿh&p?d ˜»»Î:Ïø @  Ÿi'p?d Ø»»9•þ @  Ÿj(p?d ¼»‰wfñ @  Ÿk)p?d X¼»¼Age @  Ÿl*p?d ˜¼»œ´e› @  Ÿm+p?d ؼ»Z§Üº @  Ÿn,p?d ½»ŠïPR @  Ÿo-p?d X½»ƒË± @  Ÿp.p?d ˜½»9vÉO @  Ÿq/p?d ؽ»%ñ¥ @  Ÿr0p?d ¾»ŸaQd @  Ÿs1p?d X¾»ªWPð @  Ÿt2p?d ˜¾»Š¢R @  Ÿu3p?d ؾ»L±ë/ @  Ÿv4p?d ¿»œùgÇ @  Ÿw5p?d X¿»¢4ÂÄ @  Ÿx6p?d ˜¿»‚ÁÀ: @uÐÀ»  Ÿy7p?d Ø¿»åFé @  Ÿz 8p?d 0À»õ» @  Ÿ{ 9p?d pÀ»´Ã/ @  Ÿ| :p?d °À»”6Ñ @  Ÿ} ;p?d ðÀ»R%­ð @  Ÿ~ p?d °Á»m£© @  Ÿ ?p?d ðÁ»;½1 @  Ÿ‚ @p?d 0»¦Sð @  Ÿƒ Ap?d p»“ed @  Ÿ„ Bp?d °Â»³š @  Ÿ… Cp?d ð»uƒ§» @  Ÿ† Dp?d 0û¥Ë+S @  Ÿ‡ Ep?d pû›ŽP @  Ÿˆ Fp?d °Ã»»óŒ® @  Ÿ‰ Gp?d ðûåðÖ¨ @  ŸŠ Hp?d 0Ä»ü¾%§ @  Ÿ‹ Ip?d pÄ»Ɉ$3 @  ŸŒ Jp?d °Ä»é}&Í @  Ÿ Kp?d ðÄ»/nŸì @  ŸŽ Lp?d 0Å»ÿ& @  Ÿ Mp?d pÅ»lJˆç @  Ÿ Np?d °Å»L¿Š @  Ÿ‘ Op?d ðÅ»wì²ó @  Ÿ’ Pp?d 0Æ»ê¨2 @  Ÿ“ Qp?d pƻߞ¦ @  Ÿ” Rp?d °Æ»ÿkX @  Ÿ• Sp?d ðÆ»9x¨y @  Ÿ– Tp?d 0Ç»é0$‘ @  Ÿ— Up?d pÇ»×ý’ @  Ÿ˜ Vp?d °Ç»÷ƒl @  Ÿ™ Wp?d ðÇ»© Ùj @  Ÿš Xp?d 0È»ôUw @  Ÿ› Yp?d pÈ»¨ÂTã @  Ÿœ Zp?d °È»ˆ7V @  Ÿ [p?d ðÈ»N$ï< @  Ÿž \p?d 0É»žlcÔ @  ŸŸ ]p?d pÉ»߇ @  Ÿ  ^p?d °É»<óÝy @  Ÿ¡ _p?d ðÉ»šÜO @  Ÿ¢ `p?d 0Ê»S|Ž @  Ÿ£ ap?d pÊ»2e} @  Ÿ¤ bp?d °Ê»ä @  Ÿ¥ cp?d ðʻԃÆÅ @  Ÿ¦ dp?d 0Ë»ËJ- @  Ÿ§ ep?d pË»:ï. @  Ÿ¨ fp?d °Ë»óíÐ @  Ÿ© gp?d ðË»Dð·Ö @  Ÿª hp?d 0Ì»]¾DÙ @  Ÿ« ip?d pÌ»hˆEM @  Ÿ¬ jp?d °Ì»H}G³ @  Ÿ­ kp?d ðÌ»Žnþ’ @  Ÿ® lp?d 0Í»^&rz @  Ÿ¯ mp?d pÍ»ÍJé™ @  Ÿ° np?d °Í»í¿ëg @  Ÿ± op?d ðÍ»ÖìÓ @  Ÿ² pp?d 0λK¨sL @  Ÿ³ qp?d pλ~žrØ @  Ÿ´ rp?d °Î»^kp& @  Ÿµ sp?d ðλ˜xÉ @  Ÿ¶ tp?d 0Ï»H0Eï @  Ÿ· up?d pÏ»výàì @  Ÿ¸ vp?d °Ï»Vâ @  Ÿ¹ wp?d ðÏ» ¸ @  Ÿº xp?d 0л¶Õ¦ @  Ÿ» yp?d pлƒã2 @  Ÿ¼ zp?d °Ð»£Ì @  Ÿ½ {p?d ðлe¾í @  Ÿ¾ |p?d 0Ñ»µM2 @  Ÿ¿ }p?d pÑ»™ ˆÄ @  ŸÀ ~p?d °Ñ»¹ÕŠ: @  ŸÁ p?d ðÑ»ò§Ê @  Ÿ €p?d 0Ò»oãjN @  Ÿà p?d pÒ»ZÕkÚ @  ŸÄ ‚p?d °Ò»z i$ @  ŸÅ ƒp?d ðÒ»¼3Ð @  ŸÆ „p?d 0Ó»l{\í @  ŸÇ …p?d pÓ»R¶ùî @  ŸÈ †p?d °Ó»rCû @  ŸÉ ‡p?d ðÓ»,@¡ @  ŸÊ ˆp?d 0Ô»5R @  ŸË ‰p?d pÔ»8S @  ŸÌ Šp?d °Ô» ÍQs @  ŸÍ ‹p?d ðÔ»æÞèR @  ŸÎ Œp?d 0Õ»6–dº @  ŸÏ p?d pÕ»¥úÿY @  ŸÐ Žp?d °Õ»…ý§ @  ŸÑ p?d ðÕ»¾\ÅM @  ŸÒ p?d 0Ö»#eŒ @  ŸÓ ‘p?d pÖ».d @  ŸÔ ’p?d °Ö»6Ûfæ @  ŸÕ “p?d ðÖ»ðÈßÇ @  ŸÖ ”p?d 0×» €S/ @  Ÿ× •p?d p×»Mö, @  ŸØ –p?d °×»>¸ôÒ @  ŸÙ —p?d ð×»`»®Ô @  ŸÚ ˜p?d 0Ø»TD"É @  ŸÛ ™p?d pØ»ar#] @  ŸÜ šp?d °Ø»A‡!£ @  ŸÝ ›p?d ðØ»‡”˜‚ @  ŸÞ œp?d 0Ù»WÜj @  Ÿß p?d pÙ»Õ¶¨9 @  Ÿà žp?d °Ù»õCªÇ @  Ÿá Ÿp?d ðÙ»S§«ñ @  Ÿâ  p?d€ 0Ú»öù @    ¡p?d pÚ»"ê°­ @    ¢p?d °Ú»²S @    £p?d ðÚ»EðŸ @    ¤p?d 0Û»Ñ |w @    ¥p?d pÛ»!r† @    ¦p?d °Û»‡„ð @    §p?d ðÛ»‘6Œ @    ¨p?d 0Ü»ˆxrƒ @    ©p?d pÜ»xˆú @    ªp?d °Ü»£œ± @    «p?d ðÜ» ÆóÈ @    ¬p?d 0Ý»pŽ  @    ­p?d pÝ»€ñ…Y @   ®p?d °Ý» ‡§ @   ¯p?d ðÝ»øDÞ× @   °p?d 0Þ»e~ @   ±p?d pÞ»•„o @   ²p?d °Þ»µŠ†‘ @   ³p?d ðÞ»¶ÐÄ] @   ´p?d 0ß»f˜Hµ @   µp?d pß»–ç²Ì @   ¶p?d uÐà»/°ß»¶°2 @   ·p?d ðß»ä R› @   ¸p?d Hà»ý® m @   ¹p?d ˆà»¯µã4 @   ºp?d Èà»-$ôê @   »p?d á»|§- @   ¼p?d Há»þ6:Î @   ½p?d ˆá»¬-Õ— @   ¾p?d Èá».¼ÂI @   ¿p?d â»È'[ @    Àp?d Hâ»—Y0… @   !Áp?d ˆâ»ÅBßÜ @   "Âp?d Èâ»GÓÈ @   #Ãp?d ã»Pø @   $Äp?d Hã»”Á& @   %Åp?d ˆã»ÆÚé @   &Æp?d Èã»DKþ¡ @   'Çp?d ä»O%  @   (Èp?d Hä»Í´Ò @   )Ép?d ˆä»Ÿ¯ç‹ @   *Êp?d Èä»>ðU @   +Ëp?d å»L½)¯ @   ,Ìp?d Hå»Î,>q @   -Íp?d ˆå»œ7Ñ( @   .Îp?d È廦Æö @   /Ïp?d æ»Y3(™ @   0Ðp?d Hæ»Û¢?G @   1Ñp?d ˆæ»‰¹Ð @   2Òp?d Èæ» (ÇÀ @   3Óp?d ç»Z«: @   4Ôp?d Hç»Ø: ä @   5Õp?d ˆç»Š!æ½ @   6Öp?d Èç»°ñc @   7×p?d è».ooÜ @   8Øp?d H軬þx @   9Ùp?d ˆè»þå—[ @   :Úp?d Èè»|t€… @   ;Ûp?d é»-÷Y @   <Üp?d H黯fN¡ @   =Ýp?d ˆé»ý}¡ø @   >Þp?d Èé»ì¶& @   ?ßp?d ê»Ï@· @   @àp?d H께^Wi @   Aáp?d ˆê»ÊE¸0 @   Bâp?d Èê»HÔ¯î @   Cãp?d ë»Wv @   Däp?d Hë»›ÆaÊ @   Eåp?d ˆë»ÉÝŽ“ @   Fæp?d Èë»KL™M @   Gçp?d ì»@"xà @   Hèp?d H컳o> @   Iép?d ˆì»¨€g @   Jêp?d Èì»9—¹ @   Këp?d í»CºNC @   Lìp?d Hí»Á+Y @   Míp?d ˆí»“0¶Ä @   Nîp?d Èí»¡¡ @   Oïp?d î»V4Ou @   Pðp?d Hî»Ô¥X« @   Qñp?d ˆî»†¾·ò @   Ròp?d Èî»/ , @   Sóp?d ï»U¬yÖ @   Tôp?d Hï»×=n @   Uõp?d ˆï»…&Q @   Vöp?d Èï»·– @   W÷p?d ð»«I8Ÿ @   Xøp?d Hð»)Ø/A @   Yùp?d ˆð»{ÃÀ @   Zúp?d Èð»ùRׯ @   [ûp?d ñ»¨Ñ< @   \üp?d Hñ»*@â @   ]ýp?d ˆñ»x[ö» @   ^þp?d Èñ»úÊáe @   _ÿp?d ò»£é @   `q?d Hò»!Ž7 @   aq?d ˆò»s•ýn @   bq?d Èò»ñê° @   cq?d ó» ‡3J @   dq?d Hó»"$” @   eq?d ˆó»p ËÍ @   fq?d Èó»òœÜ @   gq?d ô»ùò=¾ @   hq?d Hô»{c*` @   i q?d ˆô»)xÅ9 @   j q?d Èô»«éÒç @   k q?d õ»új  @   l q?d Hõ»xûà @   m q?d ˆõ»*àóš @   nq?d Èõ»¨qäD @   oq?d ö»ïä + @   pq?d Hö»muõ @   qq?d ˆö»?nò¬ @   rq?d Èö»½ÿår @   sq?d ÷»ì|<ˆ @   tq?d H÷»ní+V @   uq?d ˆ÷»<öÄ @   vq?d È÷»¾gÓÑ @   wq?d ø»˜¸Mn @   xq?d Hø»)Z° @   yq?d ˆø»H2µé @   zq?d Èø»Ê£¢7 @   {q?d ù»› {Í @   |q?d Hù»±l @   }q?d ˆù»KªƒJ @   ~q?d Èù»É;”” @   q?d ú»ONR4 @   € q?d Hú»ÍßEê @   !q?d ˆú»ŸÄª³ @   ‚"q?d Èú»U½m @   ƒ#q?d û»LÖd— @   „$q?d Hû»ÎGsI @   …%q?d ˆû»œ\œ @   †&q?d Èû»Í‹Î @   ‡'q?d ü»£jc @   ˆ(q?d Hü»—2}½ @   ‰)q?d ˆü»Å)’ä @   Š*q?d Èü»G¸…: @   ‹+q?d ý»;\À @   Œ,q?d Hý»”ªK @   -q?d ˆý»Ʊ¤G @   Ž.q?d Èý»D ³™ @   /q?d þ»µ]ö @   0q?d Hþ»$J( @   ‘1q?d ˆþ»Ó?¥q @   ’2q?d Èþ»Q®²¯ @   “3q?d ÿ»-kU @   ”4q?d Hÿ»‚¼|‹ @   •5q?d ˆÿ»Ч“Ò @   –uм6q?d Èÿ»R6„  @   —7q?d ¼uЄ0 @   ˜8q?d `¼÷A“î @   ™9q?d  ¼¥Z|· @   š:q?d à¼'Ëki @   ›;q?d ¼vH²“ @   œq?d à¼$S]Ê @   Ÿ?q?d ¼'¸Ø @    @q?d `¼¶¯ @   ¡Aq?d  ¼Ï­@_ @   ¢Bq?d à¼M @   ¶Vq?d à¼_nà @   ·Wq?d ¼$€ð_ @   ¸Xq?d `¼¦ç @   ¹Yq?d  ¼ô Ø @   ºZq?d à¼v› @   »[q?d ¼'Æü @   ¼\q?d ` ¼¥‰Ñ" @   ½]q?d   ¼÷’>{ @   ¾^q?d à ¼u)¥ @   ¿_q?d ¼ ß4 @   À`q?d ` ¼’±Èê @   Áaq?d   ¼Àª'³ @   Âbq?d à ¼B;0m @   Ãcq?d ¼¸é— @   Ädq?d ` ¼‘)þI @   Åeq?d   ¼Ã2 @   Æfq?d à ¼A£Î @   Çgq?d ¼JÍçc @   Èhq?d ` ¼È\ð½ @   Éiq?d   ¼šGä @   Êjq?d à ¼Ö: @   Ëkq?d ¼IUÑÀ @   Ìlq?d ` ¼ËÄÆ @   Ímq?d   ¼™ß)G @   Înq?d à ¼N>™ @   Ïoq?d ¼\ÛÐö @   Ðpq?d `¼ÞJÇ( @   Ñqq?d  ¼ŒQ(q @   Òrq?d à¼À?¯ @   Ósq?d ¼_CæU @   Ôtq?d `¼ÝÒñ‹ @   Õuq?d  ¼ÉÒ @   Övq?d ༠X  @   ×wq?d ¼¡¦§ @   Øxq?d `¼#7°Â @   Ùyq?d  ¼q,_› @   Úzq?d à¼ó½HE @   Û{q?d ¼¢>‘¿ @   Ü|q?d `¼ ¯†a @   Ý}q?d  ¼r´i8 @   Þ~q?d à¼ð%~æ @   ßq?d ¼Ö—Ïf @   à€q?d `¼Tظ @   áq?d  ¼7á @   â‚q?d€ à¼ðO<™ @  ¡ƒq?d ¼@­J @  ¡„q?d `¼Âº” @  ¡…q?d  ¼UN®  @  ¡†q?d à¼×ß¹þ @  ¡‡q?d ¼) @  ¡ˆq?d `¼’÷ @  ¡‰q?d  ¼ ; Ô @  ¡Šq?d ༎ª·  @  ¡ ‹q?d ¼`• @  ¡ Œq?d `¼˜ñ‚à @  ¡ q?d  ¼£–w @  ¡ Žq?d à¼2© @  ¡ q?d ¼©´\ @  ¡q?d `¼+%‚ @  ¡‘q?d  ¼-—A @  ¡’q?d ༘¼€Ÿ @  ¡“q?d ¼ v¢ˆ @  ¡”q?d `¼ŽçµV @  ¡•q?d  ¼µ¡â @  ¡–q?d ༛$¶< @  ¡—q?d ¼sIwù @  ¡˜q?d `¼ñØ`' @  ¡™q?d  ¼mqÐ @  ¡šq?d à¼ïàÇÚ @  ¡›q?d ¼{*åÍ @  ¡œq?d `¼ù»ò @  ¡q?d  ¼néæ§ @  ¡žq?d à¼ìxñy @  ¡Ÿq?d ¼UIGP @  ¡ q?d `¼רPŽ @  ¡¡q?d  ¼÷Öùý @  ¡ ¢q?d à¼uGî# @  ¡!£q?d ¼áÌ4 @  ¡"¤q?d `¼cÛê @  ¡#¥q?d  ¼ôNÏ^ @  ¡$¦q?d à¼vߨ€ @  ¡%§q?d ¼³fW @  ¡&¨q?d `¼1’q‰ @  ¡'©q?d  ¼­;Áª @  ¡(ªq?d à¼/ªÖt @  ¡)«q?d ¼»`ôc @  ¡*¬q?d `¼9ñã½ @  ¡+­q?d  ¼®£÷  @  ¡,®q?d à¼,2à× @  ¡-¯q?d ¼´o" @  ¡.°q?d `¼Š%xü @  ¡/±q?d  ¼»-ö? @  ¡0²q?d à¼9¼áá @  ¡1³q?d ¼­vÃö @  ¡2´q?d `¼/çÔ( @  ¡3µq?d  ¼¸µÀœuÐ ¼ @  ¡4¶q?d à¼:$×B @  ¡5·q?d 8 ¼—½Dü @  ¡6¸q?d x ¼,S" @  ¡7¹q?d ¸ ¼‰…ã @  ¡8ºq?d ø ¼ ôß @  ¡9»q?d 8!¼ŸÞÖÈ @  ¡:¼q?d x!¼OÁ @  ¡;½q?d ¸!¼ŠÕ¢ @  ¡<¾q?d ø!¼ŒÂ| @  ¡=¿q?d 8"¼AíaD @  ¡>Àq?d x"¼Ã|vš @  ¡?Áq?d ¸"¼MuÙ{ @  ¡@Âq?d ø"¼ÏäÎ¥ @  ¡AÃq?d 8#¼[.ì² @  ¡BÄq?d x#¼Ù¿ûl @  ¡CÅq?d ¸#¼NíïØ @  ¡DÆq?d ø#¼Ì|ø @  ¡EÇq?d 8$¼  FÑ @  ¡FÈq?d x$¼‹1Q @  ¡GÉq?d ¸$¼˜á, @  ¡HÊq?d ø$¼• öò @  ¡IËq?d 8%¼ÃÔå @  ¡JÌq?d x%¼ƒRÃ; @  ¡KÍq?d ¸%¼× @  ¡LÎq?d ø%¼–‘ÀQ @  ¡MÏq?d 8&¼²O¤ @  ¡NÐq?d x&¼0†Xz @  ¡OÑq?d ¸&¼ŽÖ¹ @  ¡PÒq?d ø&¼ƒÁg @  ¡QÓq?d 8'¼Õãp @  ¡RÔq?d x'¼•Dô® @  ¡SÕq?d ¸'¼à @  ¡TÖq?d ø'¼€‡÷Ä @  ¡U×q?d 8(¼hê6 @  ¡VØq?d x(¼ê{!ß @  ¡WÙq?d ¸(¼vÒ‘ü @  ¡XÚq?d ø(¼ôC†" @  ¡YÛq?d 8)¼`‰¤5 @  ¡ZÜq?d x)¼â³ë @  ¡[Ýq?d ¸)¼uJ§_ @  ¡\Þq?d ø)¼÷Û° @  ¡]ßq?d 8*¼Nê¨ @  ¡^àq?d x*¼Ì{v @  ¡_áq?d ¸*¼ìu¸ @  ¡`âq?d ø*¼nä¯Û @  ¡aãq?d 8+¼ú.Ì @  ¡bäq?d x+¼x¿š @  ¡cåq?d ¸+¼ï펦 @  ¡dæq?d ø+¼m|™x @  ¡eçq?d 8,¼¨ '¯ @  ¡fèq?d x,¼*10q @  ¡géq?d ¸,¼¶˜€R @  ¡hêq?d ø,¼4 —Œ @  ¡iëq?d 8-¼ Ãµ› @  ¡jìq?d x-¼"R¢E @  ¡kíq?d ¸-¼µ¶ñ @  ¡lîq?d ø-¼7‘¡/ @  ¡mïq?d 8.¼.Ú @  ¡nðq?d x.¼‘†9 @  ¡oñq?d ¸.¼ Ž·Ç @  ¡pòq?d ø.¼"  @  ¡qóq?d 8/¼¶Õ‚ @  ¡rôq?d x/¼4D•Ð @  ¡sõq?d ¸/¼£d @  ¡töq?d ø/¼!‡–º @  ¡u÷q?d 80¼CËgÐ @  ¡vøq?d x0¼ÁZp @  ¡wùq?d ¸0¼]óÀ- @  ¡xúq?d ø0¼ßb×ó @  ¡yûq?d 81¼K¨õä @  ¡züq?d x1¼É9â: @  ¡{ýq?d ¸1¼^köŽ @  ¡|þq?d ø1¼ÜúáP @  ¡}ÿq?d 82¼EvÓ @  ¡~r?d x2¼lja  @  ¡r?d ¸2¼ªÖþÝ @  ¡€r?d ø2¼(Gé @  ¡r?d 83¼¼Ë @  ¡‚r?d x3¼>ÜÊ @  ¡ƒr?d ¸3¼©NÈ~ @  ¡„r?d ø3¼+ßß  @  ¡…r?d 84¼îaw @  ¡†r?d x4¼l’v© @  ¡‡ r?d ¸4¼ð;ÆŠ @  ¡ˆ r?d ø4¼rªÑT @  ¡‰ r?d 85¼æ`óC @  ¡Š r?d x5¼dñä @  ¡‹ r?d ¸5¼ó£ð) @  ¡Œr?d ø5¼q2ç÷ @  ¡r?d 86¼U´h @  ¡Žr?d x6¼×%Ü @  ¡r?d ¸6¼æ-ñ @  ¡r?d ø6¼d¼æÁ @  ¡‘r?d 87¼ðvÄÖ @  ¡’r?d x7¼rçÓ @  ¡“r?d ¸7¼åµÇ¼ @  ¡”r?d ø7¼g$Ðb @  ¡•r?d 88¼I§ @  ¡–r?d x8¼ Øy @  ¡—r?d ¸8¼‘q¶Z @  ¡˜r?d ø8¼à¡„ @  ¡™r?d 89¼‡*ƒ“ @  ¡šr?d x9¼»”M @  ¡›r?d ¸9¼’é€ù @  ¡œr?d ø9¼x—' @  ¡r?d 8:¼©I! @  ¡ž r?d x:¼+Ø6Ð @  ¡Ÿ!r?d ¸:¼ ÖŸ£ @  ¡ "r?d ø:¼‰Gˆ} @  ¡¡#r?d 8;¼ªj @  ¡¢$r?d x;¼Ÿ½´ @  ¡£%r?d ¸;¼N© @  ¡¤&r?d ø;¼Šß¾Þ @  ¡¥'r?d 8<¼O  @  ¡¦(r?d x<¼Í’× @  ¡§)r?d ¸<¼Q;§ô @  ¡¨*r?d ø<¼Óª°* @  ¡©+r?d 8=¼G`’= @  ¡ª,r?d x=¼Åñ…ã @  ¡«-r?d ¸=¼R£‘W @  ¡¬.r?d ø=¼Ð2†‰ @  ¡­/r?d 8>¼ô´ | @  ¡®0r?d x>¼v%¢ @  ¡¯1r?d ¸>¼G-a @  ¡°2r?d ø>¼ż‡¿ @  ¡±3r?d 8?¼Qv¥¨ @  ¡²4r?d x?¼Óç²v @  ¡³5r?duÐ@¼7 ¸?¼Dµ¦Â @  ¡´6r?d ø?¼ÿãmÉ @  ¡µ 7r?d P@¼àÝš- @  ¡¶ 8r?d @¼À(˜Ó @  ¡· 9r?d Ð@¼þå=Ð @  ¡¸ :r?d A¼.­±8 @  ¡¹ ;r?d PA¼è¾ @  ¡º r?d B¼`9«² @  ¡½ ?r?d PB¼6¿• @  ¡¾ @r?d B¼x½k @  ¡¿ Ar?d ÐB¼:ª @  ¡À Br?d C¼ê]‹B @  ¡Á Cr?d PC¼,N2c @  ¡ Dr?d C¼ »0 @  ¡à Er?d ÐC¼91  @  ¡Ä Fr?d D¼ à@  ¡Å Gr?d PD¼~À˜ @  ¡Æ Hr?d D¼^5šþ @  ¡Ç Ir?d ÐD¼`ø?ý @  ¡È Jr?d E¼°°³ @  ¡É Kr?d PE¼v£ 4 @  ¡Ê Lr?d E¼VVÊ @  ¡Ë Mr?d ÐE¼c` ^ @  ¡Ì Nr?d F¼þ$©Ÿ @  ¡Í Or?d PF¼Åw‘u @  ¡Î Pr?d F¼å‚“‹ @  ¡Ï Qr?d ÐF¼vîh @  ¡Ð Rr?d G¼¦¦„€ @  ¡Ñ Sr?d PG¼`µ=¡ @  ¡Ò Tr?d G¼@@?_ @  ¡Ó Ur?d ÐG¼uv>Ë @  ¡Ô Vr?d H¼A‰²Ö @  ¡Õ Wr?d PH¼ŠèÐ @  ¡Ö Xr?d H¼?ê. @  ¡× Yr?d ÐH¼²O- @  ¡Ø Zr?d I¼ÑúÃÅ @  ¡Ù [r?d PI¼ézä @  ¡Ú \r?d I¼7x @  ¡Û ]r?d ÐI¼*yŽ @  ¡Ü ^r?d J¼ŸnÙO @  ¡Ý _r?d PJ¼9ŠØy @  ¡Þ `r?d J¼Ú‡ @  ¡ß ar?d ÐJ¼›fÔ @  ¡à br?d K¼K]ê< @  ¡á cr?d PK¼NS @  ¡â dr?d€ K¼lü¦ã @  ¢ er?d ÐK¼¸‹ï^ @  ¢ fr?d L¼¡ÅQ @  ¢ gr?d PL¼:½º @  ¢ hr?d L¼z¿D @  ¢ ir?d ÐL¼êE= @  ¢ jr?d M¼:MÉÕ @  ¢ kr?d PM¼2ì/Ž @  ¢ lr?d M¼-p @  ¢ mr?d ÐM¼âf×  @  ¢ nr?d N¼"wÈ @  ¢ or?d PN¼8´Ï @  ¢ pr?d N¼¡Í¶1 @  ¢ qr?d ÐN¼Q²LH @  ¢ rr?d O¼úÀ  @  ¢ sr?d PO¼$ú @  ¢ tr?d O¼å @  ¢ ur?d ÐO¼ôpàœ @  ¢ vr?d P¼J®\. @  ¢ wr?d PP¼ÑäýÅ @  ¢ xr?d P¼ñÿ; @  ¢ yr?d ÐP¼nB @  ¢ zr?d Q¼Ñ&‰ª @  ¢ {r?d PQ¼Ù‡oñ @  ¢ |r?d Q¼ùrm @  ¢ }r?d ÐQ¼ —v @  ¢ ~r?d R¼”I7· @  ¢ r?d PR¼rŒï @  ¢ €r?d R¼:‡Ž @  ¢ r?d ÐR¼Êøth @  ¢ ‚r?d S¼°ø€ @  ¢ ƒr?d PS¼®¶‹ @  ¢ „r?d S¼ŽCu @  ¢! …r?d ÐS¼~<ÿ  @  ¢" †r?d T¼gr  @  ¢# ‡r?d PT¼ü8­è @  ¢$ ˆr?d T¼Üͯ @  ¢% ‰r?d ÐT¼,²Uo @  ¢& Šr?d U¼üúÙ‡ @  ¢' ‹r?d PU¼ô[?Ü @  ¢( Œr?d U¼Ô®=" @  ¢) r?d ÐU¼$ÑÇ[ @  ¢* Žr?d V¼¹•gš @  ¢+ r?d PV¼G¤ @  ¢, r?d V¼gz¦c @  ¢- ‘r?d ÐV¼—\ @  ¢. ’r?d W¼GMÐò @  ¢/ “r?d PW¼âMI @  ¢0 ”r?d W¼¸ · @  ¢1 •r?d ÐW¼2ÇðÎ @  ¢2 –r?d X¼8|Ó @  ¢3 —r?d PX¼rÝ8 @  ¢4 ˜r?d X¼½‡ßÆ @  ¢5 ™r?d ÐX¼Mø%¿ @  ¢6 šr?d Y¼°©W @  ¢7 ›r?d PY¼•O  @  ¢8 œr?d Y¼µäMò @  ¢9 r?d ÐY¼E›·‹ @  ¢: žr?d Z¼ØßJ @  ¢; Ÿr?d PZ¼»rí‘ @  ¢<  r?d Z¼›‡ïo @  ¢= ¡r?d ÐZ¼kø @  ¢> ¢r?d [¼»°™þ @  ¢? £r?d P[¼¡±`g @  ¢@ ¤r?d [¼Db™ @  ¢A ¥r?d Ð[¼q;˜à @  ¢B ¦r?d \¼hukï @  ¢C §r?d P\¼ó?Ê @  ¢D ¨r?d \¼ÓÊÈú @  ¢E ©r?d Ð\¼#µ2ƒ @  ¢F ªr?d ]¼óý¾k @  ¢G «r?d P]¼û\X0 @  ¢H ¬r?d ]¼Û©ZÎ @  ¢I ­r?d Ð]¼+Ö · @  ¢J ®r?d ^¼¶’v @  ¢K ¯r?d P^¼HˆÃq @  ¢L °r?d ^¼h}Á @  ¢M ±r?d Ð^¼˜;ö @  ¢N ²r?d _¼HJ· @  ¢O ³r?d P_¼íJo¥ @  ¢P ´r?d _¼Í¿m[ @  ¢uÐ`¼Q µr?d Ð_¼=À—" @  ¢R ¶r?d (`¼ƒ8"º @  ¢S ·r?d h`¼rƒQ @  ¢T ¸r?d ¨`¼8‡¯ @  ¢U ¹r?d è`¼Èø{Ö @  ¢V ºr?d (a¼°÷> @  ¢W »r?d ha¼e @  ¢X ¼r?d ¨a¼0ä› @  ¢Y ½r?d èa¼À›éâ @  ¢Z ¾r?d (b¼]ßI# @  ¢[ ¿r?d hb¼Î"¦é @  ¢\ Àr?d ¨b¼îפ @  ¢] Ár?d èb¼¨^n @  ¢^ Âr?d (c¼ÎàÒ† @  ¢_ Ãr?d hc¼zæ- @  ¢` Är?d ¨c¼Z/s @  ¢a År?d èc¼ªlÕ  @  ¢b Ær?d (d¼³"& @  ¢c Çr?d hd¼(h‡î @  ¢d Èr?d ¨d¼… @  ¢e Ér?d èd¼øâi @  ¢f Êr?d (e¼(ªó @  ¢g Ër?d he¼ Ú @  ¢h Ìr?d ¨e¼þ$ @  ¢i Ír?d èe¼ðí] @  ¢j Îr?d (f¼mÅMœ @  ¢k Ïr?d hf¼“ߎ› @  ¢l Ðr?d ¨f¼³*Œe @  ¢m Ñr?d èf¼CUv @  ¢n Òr?d (g¼“úô @  ¢o Ór?d hg¼6"O @  ¢p Ôr?d ¨g¼è ± @  ¢q Õr?d èg¼æ—ÚÈ @  ¢r Ör?d (h¼ÒhVÕ @  ¢s ×r?d hh¼I"÷> @  ¢t Ør?d ¨h¼i×õÀ @  ¢u Ùr?d èh¼™¨¹ @  ¢v Úr?d (i¼IàƒQ @  ¢w Ûr?d hi¼AAe  @  ¢x Ür?d ¨i¼a´gô @  ¢y Ýr?d èi¼‘Ë @  ¢z Þr?d (j¼ =L @  ¢{ ßr?d hj¼o"Ç— @  ¢| àr?d ¨j¼O×Åi @  ¢} ár?d èj¼¿¨? @  ¢~ âr?d (k¼oà³ø @  ¢ ãr?d hk¼–·zP @  ¢€ är?d ¨k¼¶Bx® @  ¢ år?d èk¼F=‚× @  ¢‚ ær?d (l¼_sqØ @  ¢ƒ çr?d hl¼Ä9Ð3 @  ¢„ èr?d ¨l¼äÌÒÍ @  ¢… ér?d èl¼³(´ @  ¢† êr?d (m¼Äû¤\ @  ¢‡ ër?d hm¼ÌZB @  ¢ˆ ìr?d ¨m¼ì¯@ù @  ¢‰ ír?d èm¼к€ @  ¢Š îr?d (n¼”A @  ¢‹ ïr?d hn¼ŽÙF @  ¢Œ ðr?d ¨n¼_{Û¸ @  ¢ ñr?d èn¼¯!Á @  ¢Ž òr?d (o¼L­) @  ¢ ór?d ho¼ÚLu’ @  ¢ ôr?d ¨o¼ú¹wl @  ¢‘ õr?d èo¼ Æ @  ¢’ ör?d (p¼´1§ @  ¢“ ÷r?d hp¼/RL @  ¢” ør?d ¨p¼§’² @  ¢• ùr?d èp¼ÿØhË @  ¢– úr?d (q¼/ä# @  ¢— ûr?d hq¼'1x @  ¢˜ ür?d ¨q¼Ć @  ¢™ ýr?d èq¼÷»úÿ @  ¢š þr?d (r¼jÿZ> @  ¢› ÿr?d hr¼›£´j @  ¢œ s?d ¨r¼»V¶” @  ¢ s?d èr¼K)Lí @  ¢ž s?d (s¼›aÀ @  ¢Ÿ s?d hs¼/g? @  ¢  s?d ¨s¼’=ð @  ¢¡ s?d ès¼ÿílj @  ¢¢ s?d (t¼æ£4† @  ¢£ s?d ht¼}é•m @  ¢¤ s?d ¨t¼]—“ @  ¢¥  s?d èt¼­cmê @  ¢¦  s?d (u¼}+á @  ¢§  s?d hu¼uŠY @  ¢¨  s?d ¨u¼U§ @  ¢©  s?d èu¼¥ÿÞ @  ¢ª s?d (v¼8D_ @  ¢« s?d hv¼Æ^œ @  ¢¬ s?d ¨v¼櫞æ @  ¢­ s?d èv¼ÔdŸ @  ¢® s?d (w¼Æœèw @  ¢¯ s?d hw¼cœ0Ì @  ¢° s?d ¨w¼Ci22 @  ¢± s?d èw¼³ÈK @  ¢² s?d (x¼‡éDV @  ¢³ s?d hx¼£å½ @  ¢´ s?d ¨x¼s?d @‚¼5úŸ @  ¢Û?s?d €‚¼u @  ¢Ü@s?d À‚¼†‡« @  ¢ÝAs?d ƒ¼$!vä @  ¢ÞBs?d @ƒ¼¦°a: @  ¢ßCs?d €ƒ¼°Ò‹ @  ¢àDs?d Àƒ¼2CœÏ @  ¢áEs?d „¼Yã‚g @  ¢âFs?d€ @„¼¯±‰ @  £Gs?d €„¼wÞuý @  £Hs?d À„¼õOb# @  £Is?d …¼’ ø @  £Js?d @…¼1ï_ @  £Ks?d €…¼tFC^ @  £Ls?d À…¼ö×T€ @  £Ms?d †¼×ÏFœ @  £Ns?d @†¼U^QB @  £ Os?d €†¼Ìi|ˆ @  £ Ps?d À†¼NøkV @  £ Qs?d ‡¼)ñô @  £ Rs?d @‡¼«†æ* @  £ Ss?d €‡¼ÏñJ+ @  £Ts?d À‡¼M`]õ @  £Us?d ˆ¼hb]Õ @  £Vs?d @ˆ¼êóJ  @  £Ws?d €ˆ¼”- @  £Xs?d Àˆ¼”ó @  £Ys?d ‰¼óêˆQ @  £Zs?d @‰¼q{Ÿ @  £[s?d €‰¼ 3Ž @  £\s?d À‰¼—$P @  £]s?d м¶…6L @  £^s?d @м4!’ @  £_s?d €Š¼0”5„ @  £`s?d Àм²"Z @  £as?d ‹¼Õê¸ø @  £bs?d @‹¼W{¯& @  £cs?d €‹¼3 ' @  £ds?d À‹¼±ù @  £es?d Œ¼¨(L{ @  £ fs?d @Œ¼*¹[¥ @  £!gs?d €Œ¼ÖÞƒ @  £"hs?d ÀŒ¼TO] @  £#is?d ¼3 ™ÿ @  £$js?d @¼±1Ž! @  £%ks?d €¼ÕF"  @  £&ls?d À¼W×5þ @  £'ms?d ޼vÏ'â @  £(ns?d @޼ô^0< @  £)os?d €Ž¼miö @  £*ps?d À޼ïø ( @  £+qs?d ¼ˆŠ @  £,rs?d @¼ †‡T @  £-ss?d €¼nñ+U @  £.ts?d À¼ì`<‹ @  £/us?d ¼CC  @  £0vs?d @¼ÁÒÚ @  £1ws?d €¼=µTü @  £2xs?d À¼¿$C" @  £3ys?d ‘¼ØËÙ€ @  £4zs?d @‘¼˜ó)‹ @  £5{s?d €‘¼ü„…Š @  £6|s?d À‘¼~’T @  £7}s?d ’¼_ €H @  £8~s?d @’¼Ýœ—– @  £9s?d €’¼4ŠÂ @  £:€s?d À’¼¶ÕÝ @  £;s?d “¼ÑôO @  £<‚s?d @“¼SeX¡ @  £=ƒs?d €“¼7ô  @  £>„s?d À“¼µƒã~ @  £?…s?d ”¼1½n @  £@†s?d @”¼€ ª° @  £A‡s?d €”¼|Çå– @  £Bˆs?d À”¼þVòH @  £C‰s?d •¼™¹hê @  £DŠs?d @•¼(4 @  £E‹s?d €•¼_Ó5 @  £FŒs?d À•¼ýÎÄë @  £Gs?d –¼ÜÖÖ÷ @  £HŽs?d @–¼^GÁ) @  £Is?d €–¼Çpìã @  £Js?d À–¼Eáû= @  £K‘s?d —¼"aŸ @  £L’s?d @—¼ ŸvA @  £M“s?d €—¼ÄèÚ@ @  £N”s?d À—¼FyÍž @  £O•s?d ˜¼c{; @  £P–s?d @˜¼áêÚ` @  £Q—s?d €˜¼•F @  £R˜s?d À˜¼Ÿ‚˜ @  £S™s?d ™¼øó: @  £Tšs?d @™¼zbä @  £U›s?d €™¼£å @  £Vœs?d À™¼œ„´; @  £Ws?d š¼½œ¦' @  £Xžs?d @š¼? ±ù @  £YŸs?d €š¼;¥ï @  £Z s?d Àš¼¹²1 @  £[¡s?d ›¼Þó(“ @  £\¢s?d @›¼\b?M @  £]£s?d €›¼8“L @  £^¤s?d À›¼º„„’ @  £_¥s?d œ¼£1Ü @  £`¦s?d @œ¼! ËÎ @  £a§s?d €œ¼ÝÇ„è @  £b¨s?d Àœ¼_V“6 @  £c©s?d ¼8¹ ” @  £dªs?d @¼º(J @  £e«s?d €¼Þ_²K @  £f¬s?d À¼\Î¥• @  £g­s?d ž¼}Ö·‰ @  £h®s?d @ž¼ÿG W @  £i¯s?d €ž¼fp @  £j°s?d Àž¼äášC @  £k±s?d Ÿ¼ƒá @  £l²s?d @Ÿ¼Ÿ? @  £m³s?d €Ÿ¼eè»> @  £n´suР¼?d ÀŸ¼çy¬à @  £oµs?d  ¼E&n @  £p¶s?d X ¼Ç·° @  £q·s?d ˜ ¼;ÐA– @  £r¸s?d Ø ¼¹AVH @  £s¹s?d ¡¼Þ®Ìê @  £tºs?d X¡¼\?Û4 @  £u»s?d ˜¡¼8Hw5 @  £v¼s?d Ø¡¼ºÙ`ë @  £w½s?d ¢¼›Ár÷ @  £x¾s?d X¢¼Pe) @  £y¿s?d ˜¢¼í€d. @  £zÀs?d Ø¢¼osð @  £{Ás?d £¼þéR @  £|Âs?d X£¼ŠoþŒ @  £}Ãs?d ˜£¼îR @  £~Äs?d Ø£¼l‰ES @  £Ås?d ¤¼8m+r @  £€Æs?d X¤¼ºü<¬ @  £Çs?d ˜¤¼F›sŠ @  £‚Ès?d ؤ¼Ä dT @  £ƒÉs?d ¥¼£åþö @  £„Ês?d X¥¼!té( @  £…Ës?d ˜¥¼EE) @  £†Ìs?d Ø¥¼Ç’R÷ @  £‡Ís?d ¦¼æŠ@ë @  £ˆÎs?d X¦¼dW5 @  £‰Ïs?d ˜¦¼ý,zÿ @  £ŠÐs?d ئ¼½m! @  £‹Ñs?d §¼R÷ƒ @  £ŒÒs?d X§¼šÃà] @  £Ós?d ˜§¼þ´L\ @  £ŽÔs?d ا¼|%[‚ @  £Õs?d ¨¼Y'[¢ @  £Ös?d X¨¼Û¶L| @  £‘×s?d ˜¨¼'ÑZ @  £’Øs?d ب¼¥@„ @  £“Ùs?d ©¼¯Ž& @  £”Ús?d X©¼@>™ø @  £•Ûs?d ˜©¼$I5ù @  £–Üs?d Ø©¼¦Ø"' @  £—Ýs?d ª¼‡À0; @  £˜Þs?d Xª¼Q'å @  £™ßs?d ˜ª¼Ñ3ó @  £šàs?d ت¼ƒ@$- @  £›ás?d «¼䯾 @  £œâs?d X«¼f>©Q @  £ãs?d ˜«¼IP @  £žäs?d Ø«¼€ØŽ @  £Ÿås?d ¬¼™mJ  @  £ æs?d X¬¼ü]Ò @  £¡çs?d ˜¬¼ç›ô @  £¢ès?d ج¼e * @  ££és?d ­¼埈 @  £¤ês?d X­¼€tˆV @  £¥ës?d ˜­¼ä$W @  £¦ìs?d Ø­¼f’3‰ @  £§ís?d ®¼GŠ!• @  £¨îs?d X®¼Å6K @  £©ïs?d ˜®¼\, @  £ªðs?d Ø®¼Þ½ _ @  £«ñs?d ¯¼¹R–ý @  £¬òs?d X¯¼;Ã# @  £­ós?d ˜¯¼_´-" @  £®ôs?d د¼Ý%:ü @  £¯õs?d °¼r s @  £°ös?d X°¼ð—­ @  £±÷s?d ˜°¼ ðR‹ @  £²øs?d ذ¼ŽaEU @  £³ùs?d ±¼éŽß÷ @  £´ús?d X±¼kÈ) @  £µûs?d ˜±¼hd( @  £¶üs?d ر¼ùsö @  £·ýs?d ²¼¬áaê @  £¸þs?d X²¼.pv4 @  £¹ÿs?d ˜²¼„I; @  £ºt?d ز¼™^å @  £»t?d ³¼avÄG @  £¼t?d X³¼ãçÓ™ @  £½t?d ˜³¼‡˜ @  £¾t?d س¼hF @  £¿t?d ´¼²³6V @  £Àt?d X´¼0"!ˆ @  £Át?d ˜´¼ÌEn® @  £Ât?d Ø´¼NÔyp @  £Ã t?d µ¼);ãÒ @  £Ä t?d Xµ¼«ªô  @  £Å t?d ˜µ¼ÏÝX  @  £Æ t?d ص¼MLOÓ @  £Ç t?d ¶¼lT]Ï @  £Èt?d X¶¼îÅJ @  £Ét?d ˜¶¼wògÛ @  £Êt?d ض¼õcp @  £Ët?d ·¼’Œê§ @  £Ìt?d X·¼ýy @  £Ít?d ˜·¼tjQx @  £Ît?d Ø·¼öûF¦ @  £Ït?d ¸¼ÓùF† @  £Ðt?d X¸¼QhQX @  £Ñt?d ˜¸¼­~ @  £Òt?d ظ¼/ž   @  £Ót?d ¹¼Hq“ @  £Ôt?d X¹¼Êà„Ü @  £Õt?d ˜¹¼®—(Ý @  £Öt?d ع¼,? @  £×t?d º¼ - @  £Øt?d Xº¼:Á @  £Ùt?d ˜º¼‹.× @  £Ú t?d غ¼ ž9  @  £Û!t?d »¼nq£« @  £Ü"t?d X»¼ìà´u @  £Ý#t?d ˜»¼ˆ—t @  £Þ$t?d Ø»¼ ª @  £ß%t?d ¼¼³W( @  £à&t?d X¼¼‘"@ö @  £á't?d ˜¼¼mEÐ @  £â(t?d€ ؼ¼i‚°· @  ¤)t?d ½¼ï,b< @  ¤*t?d X½¼m½uâ @  ¤+t?d ˜½¼̃" @  ¤,t?d ؽ¼N5Ð @  ¤-t?d ¾¼¡¸x¶ @  ¤.t?d X¾¼#)oh @  ¤/t?d ˜¾¼t¬Ø @  ¤0t?d ؾ¼ö=  @  ¤ 1t?d ¿¼T›kI @  ¤ 2t?d X¿¼Ö |— @  ¤ 3t?d ˜¿¼w4+{ @uÐÀ¼  ¤ 4t?d Ø¿¼õ¥<¥ @  ¤ 5t?d 0À¼㻀P @  ¤6t?d pÀ¼a*—Ž @  ¤7t?d °À¼þ^¹2 @  ¤8t?d ðÀ¼|Ï®ì @  ¤9t?d 0Á¼ÞiÏ£ @  ¤:t?d pÁ¼\øØ} @  ¤;t?d °Á¼ýÆ‘ @  ¤t?d p¼lÂ÷ @  ¤?t?d °Â¼(œŠ @  ¤@t?d 𼪟‹T @  ¤At?d 0ü9ê @  ¤Bt?d püЍýÅ @  ¤Ct?d °Ã¼+–ª) @  ¤Dt?d ðü©½÷ @  ¤Et?d 0ļ§£_ @  ¤Ft?d pļ@6´ @  ¤Gt?d °Ä¼ÎD½ @  ¤ Ht?d ðļLÕªS @  ¤!It?d 0żîsË @  ¤"Jt?d pżlâÜ @  ¤#Kt?d °Å¼ÍÜ‹. @  ¤$Lt?d ðżOMœð @  ¤%Mt?d 0Ƽ çÑ– @  ¤&Nt?d pƼ"vÆH @  ¤'Ot?d °Æ¼uó´ø @  ¤(Pt?d ðƼ÷b£& @  ¤)Qt?d 0ǼUÄÂi @  ¤*Rt?d pǼ×UÕ· @  ¤+St?d °Ç¼vk‚[ @  ¤,Tt?d ðǼôú•… @  ¤-Ut?d 0ȼ²ëô? @  ¤.Vt?d pȼ0zãá @  ¤/Wt?d °È¼¯Í] @  ¤0Xt?d ðȼ-ŸÚƒ @  ¤1Yt?d 0ɼ9»Ì @  ¤2Zt?d pɼ ¨¬ @  ¤3[t?d °É¼¬–ûþ @  ¤4\t?d ðɼ.ì  @  ¤5]t?d 0ʼÁ­¡F @  ¤6^t?d pʼC<¶˜ @  ¤7_t?d °Ê¼‰ýô @  ¤8`t?d ðʼ Ÿê* @  ¤9at?d 0˼©9‹e @  ¤:bt?d p˼+¨œ» @  ¤;ct?d °Ë¼Š–ËW @  ¤<dt?d ð˼܉ @  ¤=et?d 0̼c§Â! @  ¤>ft?d p̼á6Õÿ @  ¤?gt?d °Ì¼ÁCÚa @  ¤@ht?d ð̼CÒÍ¿ @  ¤Ait?d 0ͼát¬ð @  ¤Bjt?d pͼcå». @  ¤Ckt?d °Í¼ÂÛì @  ¤Dlt?d ðͼ@Jû @  ¤Emt?d 0μ¯à¶z @  ¤Fnt?d pμ-q¡¤ @  ¤Got?d °Î¼zôÓ @  ¤Hpt?d ðμøeÄÊ @  ¤Iqt?d 0ϼZÃ¥… @  ¤Jrt?d pϼØR²[ @  ¤Kst?d °Ï¼ylå· @  ¤Ltt?d ðϼûýòi @  ¤Mut?d 0м7Í£| @  ¤Nvt?d pмµ\´¢ @  ¤Owt?d °Ð¼*(š @  ¤Pxt?d ðм¨¹À @  ¤Qyt?d 0Ѽ ì @  ¤Rzt?d pѼˆŽûQ @  ¤S{t?d °Ñ¼)°¬½ @  ¤T|t?d ðѼ«!»c @  ¤U}t?d 0Ò¼D‹ö @  ¤V~t?d pÒ¼ÆáÛ @  ¤Wt?d °Ò¼á¾ë4 @  ¤X€t?d ðÒ¼c/üê @  ¤Yt?d 0Ó¼Á‰¥ @  ¤Z‚t?d pÓ¼CŠ{ @  ¤[ƒt?d °Ó¼â&Ý— @  ¤\„t?d ðÓ¼`·ÊI @  ¤]…t?d 0Ô¼ Ôá @  ¤^†t?d pÔ¼‰†Ã? @  ¤_‡t?d °Ô¼ôÊ3 @  ¤`ˆt?d ðÔ¼…eÝí @  ¤a‰t?d 0Õ¼'ü¢ @  ¤bŠt?d pÕ¼¥R«| @  ¤c‹t?d °Õ¼lü @  ¤dŒt?d ðÕ¼†ýëN @  ¤et?d 0Ö¼iW¦( @  ¤fŽt?d pÖ¼ëÆ±ö @  ¤gt?d °Ö¼¼CÃF @  ¤ht?d ðÖ¼>ÒÔ˜ @  ¤i‘t?d 0×¼œtµ× @  ¤j’t?d p×¼å¢  @  ¤k“t?d °×¼¿Ûõå @  ¤l”t?d ð×¼=Jâ; @  ¤m•t?d 0ؼ{[ƒ @  ¤n–t?d pؼùÊ”_ @  ¤o—t?d °Ø¼f¾ºã @  ¤p˜t?d ðؼä/­= @  ¤q™t?d 0Ù¼F‰Ìr @  ¤ršt?d pÙ¼ÄÛ¬ @  ¤s›t?d °Ù¼e&Œ@ @  ¤tœt?d ðټ緛ž @  ¤ut?d 0Ú¼Öø @  ¤vžt?d pÚ¼ŠŒÁ& @  ¤wŸt?d °Ú¼@¾ŠJ @  ¤x t?d ðÚ¼Â/” @  ¤y¡t?d 0Û¼`‰üÛ @  ¤z¢t?d pÛ¼âë @  ¤{£t?d °Û¼C&¼é @  ¤|¤t?d ðÛ¼Á·«7 @  ¤}¥t?d 0ܼªµŸ @  ¤~¦t?d pܼ(†¢A @  ¤§t?d °Ü¼ë¥î @  ¤€¨t?d ðܼi4Š0 @  ¤©t?d 0ݼË’ë @  ¤‚ªt?d pݼIü¡ @  ¤ƒ«t?d °Ý¼è=«M @  ¤„¬t?d ðݼj¬¼“ @  ¤…­t?d 0Þ¼…ñõ @  ¤†®t?d pÞ¼—æ+ @  ¤‡¯t?d °Þ¼P”› @  ¤ˆ°t?d ðÞ¼ÒƒƒE @  ¤‰±t?d 0ß¼p%â  @  ¤Š²t?d pß¼ò´õÔ @  ¤‹³t?d uÐà¼/°ß¼SŠ¢8 @  ¤Œ´t?d ð߼ѵæ @  ¤µt?d H༺Q· @  ¤Ž¶t?d ˆà¼š¤I @  ¤·t?d È༧´?Õ @  ¤¸t?d á¼wü³= @  ¤‘¹t?d HἇƒID @  ¤’ºt?d ˆá¼§vKº @  ¤“»t?d Èἤ, v @  ¤”¼t?d â¼9h©· @  ¤•½t?d Hâ¼ÉSÎ @  ¤–¾t?d ˆâ¼éâQ0 @  ¤—¿t?d Èâ¼qäm @  ¤˜Àt?d 㼡¬–… @  ¤™Át?d Hã¼QÓlü @  ¤šÂt?d ˆã¼q&n @  ¤›Ãt?d Èã¼r|,Î @  ¤œÄt?d ä¼k2ßÁ @  ¤Åt?d Hä¼›M%¸ @  ¤žÆt?d ˆä¼»¸'F @  ¤ŸÇt?d Èä¼—®;j @  ¤ Èt?d å¼Gæ·‚ @  ¤¡Ét?d Hå¼·™Mû @  ¤¢Êt?d ˆå¼—lO @  ¤£Ët?d Èå¼”6 É @  ¤¤Ìt?d æ¼ r­ @  ¤¥Ít?d Hæ¼ù Wq @  ¤¦Ît?d ˆæ¼ÙøU @  ¤§Ït?d Èæ¼,2 @  ¤¨Ðt?d ç¼üQ¾÷ @  ¤©Ñt?d Hç¼ .DŽ @  ¤ªÒt?d ˆç¼,ÛFp @  ¤«Ót?d Èç¼/¼ @  ¤¬Ôt?d è¼~ˆ¡ @  ¤­Õt?d Hè¼ërØ @  ¤®Öt?d ˆè¼Ëôp& @  ¤¯×t?d Èè¼öäKº @  ¤°Øt?d é¼&¬ÇR @  ¤±Ùt?d Hé¼ÖÓ=+ @  ¤²Út?d ˆé¼ö&?Õ @  ¤³Ût?d Èé¼õ|} @  ¤´Üt?d ê¼h8ÝØ @  ¤µÝt?d H꼘G'¡ @  ¤¶Þt?d ˆê¼¸²%_ @  ¤·ßt?d Èê¼Ðä{ @  ¤¸àt?d 뼬÷û @  ¤¹át?d Hë¼ðÓ ‚ @  ¤ºât?d ˆë¼Ð&| @  ¤»ãt?d Èë¼Ó|M° @  ¤¼ät?d ì¼Ê2¾¿ @  ¤½åt?d Hì¼:MDÆ @  ¤¾æt?d ˆì¼¸F8 @  ¤¿çt?d È켘©\† @  ¤Àèt?d í¼HáÐn @  ¤Áét?d Hí¼¸ž* @  ¤Âêt?d ˆí¼˜k(é @  ¤Ãët?d Èí¼›1j% @  ¤Äìt?d î¼uÊä @  ¤Åít?d Hî¼ö 0 @  ¤Æît?d ˆî¼Öÿ2c @  ¤Çït?d Èî¼#Uó @  ¤Èðt?d ï¼óVÙ @  ¤Éñt?d Hï¼)#b @  ¤Êòt?d ˆï¼#Ü!œ @  ¤Ëót?d Èï¼ †cP @  ¤Ìôt?d ð¼žXßâ @  ¤Íõt?d Hð¼n'%› @  ¤Îöt?d ˆð¼NÒ'e @  ¤Ï÷t?d Èð¼sÂù @  ¤Ðøt?d ñ¼£Š @  ¤Ñùt?d Hñ¼Sõjh @  ¤Òút?d ˆñ¼sh– @  ¤Óût?d Èñ¼pZ*Z @  ¤Ôüt?d ò¼íŠ› @  ¤Õýt?d Hò¼apâ @  ¤Öþt?d ˆò¼=”r @  ¤×ÿt?d Èò¼Ç38ß @  ¤Øu?d ó¼{´7 @  ¤Ùu?d Hó¼çNN @  ¤Úu?d ˆó¼ÇñL° @  ¤Ûu?d Èó¼Ä«| @  ¤Üu?d ô¼Ýåýs @  ¤Ýu?d Hô¼-š  @  ¤Þu?d ˆô¼ oô @  ¤ßu?d Èô¼!yØ @  ¤àu?d õ¼ñ1•0 @  ¤á u?d Hõ¼NoI @  ¤â u?d€ ˆõ¼Uxq @  ¥ u?d Èõ¼·c{ô @  ¥ u?d ö¼*'Û5 @  ¥ u?d Hö¼Ú¡ @  ¥u?d ˆö¼?äØ_ @  ¥u?d Èö¼·àµ @  ¥u?d ÷¼Ôÿl] @  ¥u?d H÷¼ê2É^ @  ¥u?d ˆ÷¼ÊÇË  @  ¥ u?d È÷¼ Ôr @  ¥ u?d ø¼8+þœ @  ¥ u?d Hø¼ ÿ @  ¥ u?d ˆø¼-èýö @  ¥ u?d Èø¼së§ð @  ¥u?d ù¼££+ @  ¥u?d Hù¼0ϰû @  ¥u?d ˆù¼:² @  ¥u?d Èù¼Ö) $ @  ¥u?d ú¼Km«å @  ¥u?d Hú¼~[ªq @  ¥u?d ˆú¼^®¨ @  ¥u?d Èú¼øJ©¹ @  ¥ u?d û¼(%Q @  ¥!u?d Hû¼Ï€R @  ¥"u?d ˆû¼6:‚¬ @  ¥#u?d Èû¼ð); @  ¥$u?d ü¼égÈ‚ @  ¥%u?d Hü¼ÜQÉ @  ¥&u?d ˆü¼ü¤Ëè @  ¥'u?d Èü¼¢§‘î @  ¥(u?d ý¼rï @  ¥)u?d Hý¼ð…¡U @  ¥ *u?d ˆý¼Ðp£« @  ¥!+u?d Èý¼cŠ @  ¥",u?d þ¼‹'ºK @  ¥#-u?d Hþ¼¾»ß @  ¥$.u?d ˆþ¼žä¹! @  ¥%/u?d Èþ¼¥·Ë @  ¥&0u?d ÿ¼uÿ # @  ¥'1u?d Hÿ¼K2¨  @  ¥(2u?d ˆÿ¼kǪÞ @  ¥)uн3u?d Èÿ¼­Ôÿ @  ¥*4u?d ½â`; @  ¥+5u?d `½×V:š @  ¥,6u?d  ½÷£8d @  ¥-7u?d ཀྵ bb @  ¥.8u?d ½yèîŠ @  ¥/9u?d `½ê„ui @  ¥0:u?d  ½Êqw— @  ¥1;u?d འbζ @  ¥2u?d  ½„åm @  ¥5?u?d à½ÒQy: @  ¥6@u?d ½õÒ @  ¥7Au?d `½<ÔPÑ @  ¥8Bu?d  ½!R/ @  ¥9Cu?d à½Ú2ë @  ¥:Du?d ½Ã| @  ¥;Eu?d `½öJ• @  ¥<Fu?d  ½Ö¿k @  ¥=Gu?d ཈¼Am @  ¥>Hu?d ½XôÍ… @  ¥?Iu?d `½t™wD @  ¥@Ju?d  ½Tluº @  ¥AKu?d དྷ̛ @  ¥BLu?d ½;lZ @  ¥CMu?d `½: mÎ @  ¥DNu?d  ½øo0 @  ¥EOu?d à½!«WÚ @  ¥FPu?d ½ñãÛ2 @  ¥GQu?d `½Ï.~1 @  ¥HRu?d  ½ïÛ|Ï @  ¥ISu?d à½)ÈÅî @  ¥JTu?d ½7Ió @  ¥KUu?d `½(Hg @  ¥LVu?d  ½ôJ™ @  ¥MWu?d à½V÷Ÿ @  ¥NXu?d ½†¿œw @  ¥OYu?d ` ½Ó” @  ¥PZu?d   ½5&j @  ¥Q[u?d à ½ó5¼K @  ¥R\u?d ½nqŠ @  ¥S]u?d ` ½[G @  ¥T^u?d   ½{²à @  ¥U_u?d à ½ÝVÖ @  ¥V`u?d ½ ’> @  ¥Wau?d ` ½3Ó7= @  ¥Xbu?d   ½&5à @  ¥Ycu?d à ½Õ5Œâ @  ¥Zdu?d ½Ì{í @  ¥[eu?d ` ½ùM~y @  ¥\fu?d   ½Ù¸|‡ @  ¥]gu?d à ½‡»& @  ¥^hu?d ½Wóªi @  ¥_iu?d ` ½Õ™: @  ¥`ju?d   ½õlÄ @  ¥aku?d à ½3­å @  ¥blu?d ½®; $ @  ¥cmu?d `½› ° @  ¥dnu?d  ½»øN @  ¥eou?d ཀ«6¤ @  ¥fpu?d ½PãºL @  ¥gqu?d `½n.O @  ¥hru?d  ½NÛ± @  ¥isu?d ཈Ȥ @  ¥jtu?d ½6" @  ¥kuu?d `½ ¶ @  ¥lvu?d  ½#ÕH @  ¥mwu?d à½}ÖAN @  ¥nxu?d ½­žÍ¦ @  ¥oyu?d `½>òVE @  ¥pzu?d  ½T» @  ¥q{u?d à½Øíš @  ¥r|u?d ½EPM[ @  ¥s}u?d `½pfLÏ @  ¥t~u?d  ½P“N1 @  ¥uu?d à½á„ @  ¥v€u?d ½Ë©‚l @  ¥wu?d `½õd'o @  ¥x‚u?d  ½Õ‘%‘ @  ¥yƒu?d གœ° @  ¥z„u?d ½ Ìo¿ @  ¥{…u?d `½?ún+ @  ¥|†u?d  ½lÕ @  ¥}‡u?d à½A 6Ó @  ¥~ˆu?d ½‘Dº; @  ¥‰u?d `½^0Ë @  ¥€Šu?d  ½~Š25 @  ¥‹u?d ླྀ™‹ @  ¥‚Œu?d ½%Ý+Õ @  ¥ƒu?d `½ë*A @  ¥„Žu?d  ½0(¿ @  ¥…u?d འMU @  ¥†u?d ½Ûœ½ @  ¥‡‘u?d `½åÈ9¾ @  ¥ˆ’u?d  ½Å=;@ @  ¥‰“u?d à½.‚a @  ¥Š”u?d ½7Ñ| @  ¥‹•u?d `½çè @  ¥Œ–u?d  ½"  @  ¥—u?d à½|W @  ¥Ž˜u?d ½¬YÛø @  ¥™u?d `½?5@ @  ¥šu?d  ½ÀBå @  ¥‘›u?d à½ÙÓûÄ @  ¥’œu?d ½D—[ @  ¥“u?d `½q¡Z‘ @  ¥”žu?d  ½QTXo @  ¥•Ÿu?d à½÷°YY @  ¥– u?d ½'øÕ± @  ¥—¡u?d `½5p² @  ¥˜¢u?d  ½9ÀrL @  ¥™£u?d à½ÿÓËm @  ¥š¤u?d ½æ8b @  ¥›¥u?d `½Ó«9ö @  ¥œ¦u?d  ½ó^; @  ¥§u?d ཭]a @  ¥ž¨u?d ½}íæ @  ¥Ÿ©u?d `½ÿQµ @  ¥ ªu?d  ½ߊSK @  ¥¡«u?d ཙêj @  ¥¢¬u?d ½„ÝJ« @  ¥£­u?d `½±ëK? @  ¥¤®u?d  ½‘IÁ @  ¥¥¯u?d ཪMq+ @  ¥¦°u?d ½zýà @  ¥§±u?d `½DÈXÀ @  ¥¨²u?d  ½d=Z>uÐ ½ @  ¥©³u?d ར.ã @  ¥ª´u?d 8 ½Ó%=y @  ¥«µu?d x ½æ<í @  ¥¬¶u?d ¸ ½Ææ> @  ¥­·u?d ø ½˜åd @  ¥®¸u?d 8!½H­èý @  ¥¯¹u?d x!½ÛÁs @  ¥°ºu?d ¸!½û4qà @  ¥±»u?d ø!½='ÈÁ @  ¥²¼u?d 8"½ ch @  ¥³½u?d x"½•Ui” @  ¥´¾u?d ¸"½µ kj @  ¥µ¿u?d ø"½ãM @  ¥¶Àu?d 8#½3\ó¥ @  ¥·Áu?d x#½ ‘V¦ @  ¥¸Âu?d ¸#½-dTX @  ¥¹Ãu?d ø#½ëwíy @  ¥ºÄu?d 8$½ò9v @  ¥»Åu?d x$½Çâ @  ¥¼Æu?d ¸$½çú @  ¥½Çu?d ø$½¹ùG @  ¥¾Èu?d 8%½i±Ëò @  ¥¿Éu?d x%½EÜq3 @  ¥ÀÊu?d ¸%½e)sÍ @  ¥ÁËu?d ø%½£:Êì @  ¥ÂÌu?d 8&½>~j- @  ¥ÃÍu?d x&½ Hk¹ @  ¥ÄÎu?d ¸&½+½iG @  ¥ÅÏu?d ø&½îQ­ @  ¥ÆÐu?d 8'½À¦ÝE @  ¥ÇÑu?d x'½þkxF @  ¥ÈÒu?d ¸'½Þžz¸ @  ¥ÉÓu?d ø'½Ù @  ¥ÊÔu?d 8(½,rO„ @  ¥ËÕu?d x(½DN @  ¥ÌÖu?d ¸(½9±Lî @  ¥Í×u?d ø(½g²è @  ¥ÎØu?d 8)½·úš @  ¥ÏÙu?d x)½$–ã @  ¥ÐÚu?d ¸)½c @  ¥ÑÛu?d ø)½Âpº< @  ¥ÒÜu?d 8*½_4ý @  ¥ÓÝu?d x*½ji @  ¥ÔÞu?d ¸*½J÷— @  ¥Õßu?d ø*½ì¡ @  ¥Öàu?d 8+½<[”I @  ¥×áu?d x+½–1J @  ¥Øâu?d ¸+½"c3´ @  ¥Ùãu?d ø+½äpŠ• @  ¥Úäu?d 8,½ý>yš @  ¥Ûåu?d x,½Èx @  ¥Üæu?d ¸,½èýzð @  ¥Ýçu?d ø,½¶þ ö @  ¥Þèu?d 8-½f¶¬ @  ¥ßéu?d x-½äÜM @  ¥àêu?d ¸-½Ä)³ @  ¥áëu?d ø-½:«’ @  ¥âìu?d€ 8.½^9üS @  ¦íu?d x.½ŠNµî @  ¦îu?d ¸.½ª»· @  ¦ïu?d ø.½T¡t @  ¦ðu?d 8/½„éøÿ @  ¦ñu?d x/½t–† @  ¦òu?d ¸/½Tcx @  ¦óu?d ø/½\Âæ# @  ¦ôu?d 80½âZ‘ @  ¦ õu?d x0½c è @  ¦ öu?d ¸0½2–¢ @  ¦ ÷u?d ø0½©Üý @  ¦ øu?d 81½y” @  ¦ ùu?d x1½‰ëul @  ¦úu?d ¸1½©w’ @  ¦ûu?d ø1½ ¯) @  ¦üu?d 82½‘Zè @  ¦ýu?d x2½a%õ‘ @  ¦þu?d ¸2½AÐ÷o @  ¦ÿu?d ø2½®, @  ¦v?d 83½Òæ ö @  ¦v?d x3½"™Z @  ¦v?d ¸3½lXq @  ¦v?d ø3½ ;* @  ¦v?d 84½ƒM% @  ¦v?d x4½ãü·\ @  ¦v?d ¸4½à µ¢ @  ¦v?d ø4½XCI @  ¦v?d 85½ˆ ˜¡ @  ¦ v?d x5½xtbØ @  ¦ v?d ¸5½X`& @  ¦ v?d ø5½쇟- @  ¦  v?d 86½qÃ?ì @  ¦! v?d x6½¼Å• @  ¦"v?d ¸6½¡IÇk @  ¦#v?d ø6½_Sl @  ¦$v?d 87½ˆ„ @  ¦%v?d x7½drý @  ¦&v?d ¸7½_‘p @  ¦'v?d ø7½W0–X @  ¦(v?d 88½cÏE @  ¦)v?d x8½“°à< @  ¦*v?d ¸8½³Eâ @  ¦+v?d ø8½(C) @  ¦,v?d 89½øGÏÁ @  ¦-v?d x9½85¸ @  ¦.v?d ¸9½(Í7F @  ¦/v?d ø9½Íïý @  ¦0v?d 8:½‰O< @  ¦1v?d x:½àöµE @  ¦2v?d ¸:½À·» @  ¦3v?d ø:½£®M` @  ¦4 v?d 8;½sæÁˆ @  ¦5!v?d x;½ƒ™;ñ @  ¦6"v?d ¸;½£l9 @  ¦7#v?d ø;½«ÍßT @  ¦8$v?d 8<½²ƒ,[ @  ¦9%v?d x<½BüÖ" @  ¦:&v?d ¸<½b ÔÜ @  ¦;'v?d ø<½ùCu7 @  ¦<(v?d 8=½) ùß @  ¦=)v?d x=½Ùt¦ @  ¦>*v?d ¸=½ùX @  ¦?+v?d ø=½ã€øÁ @  ¦@,v?d 8>½~ÄX @  ¦A-v?d x>½Ž»¢y @  ¦B.v?d ¸>½®N ‡ @  ¦C/v?d ø>½PTc€ @  ¦D0v?d 8?½€ïh @  ¦E1v?d x?½pc @  ¦F2v?duÐ@½7 ¸?½P–ï @  ¦G3v?d ø?½X7ñ´ @  ¦H4v?d P@½››Kˆ @  ¦I5v?d @½É€¤Ñ @  ¦J6v?d Ð@½K³ @  ¦K7v?d A½‚‚‰Ò @  ¦L8v?d PA½ž  @  ¦M9v?d A½RqU @  ¦N:v?d ÐA½Йf‹ @  ¦O;v?d B½jL / @  ¦Pv?d ÐB½8Wæv @  ¦S?v?d C½ùs’Š @  ¦T@v?d PC½{â…T @  ¦UAv?d C½)ùj  @  ¦VBv?d ÐC½«h}Ó @  ¦WCv?d D½8Y @  ¦XDv?d PD½º‡h‡ @  ¦YEv?d D½蜇Þ @  ¦ZFv?d ÐD½j  @  ¦[Gv?d E½£žªÝ @  ¦\Hv?d PE½!½ @  ¦]Iv?d E½sRZ @  ¦^Jv?d ÐE½ñ…E„ @  ¦_Kv?d F½ZV  @  ¦`Lv?d PF½ØÇN @  ¦aMv?d F½ŠÜõ @  ¦bNv?d ÐF½MâÉ @  ¦cOv?d G½¤Žºø @  ¦dPv?d PG½&­& @  ¦eQv?d G½tB @  ¦fRv?d ÐG½ö•U¡ @  ¦gSv?d H½HZ(9 @  ¦hTv?d PH½ÊË?ç @  ¦iUv?d H½˜Ðо @  ¦jVv?d ÐH½AÇ` @  ¦kWv?d I½ÓÒý½ @  ¦lXv?d PI½QCêc @  ¦mYv?d I½X: @  ¦nZv?d ÐI½Éä @  ¦o[v?d J½;}@ @  ¦p\v?d PJ½¹jž @  ¦q]v?d J½ë–…Ç @  ¦r^v?d ÐJ½i’ @  ¦s_v?d K½Xsóô @  ¦t`v?d PK½Úâä* @  ¦uav?d K½ˆù s @  ¦vbv?d ÐK½ h­ @  ¦wcv?d L½™' @  ¦xdv?d PL½‡ ù @  ¦yev?d L½Iœæ  @  ¦zfv?d ÐL½Ë ñ~ @  ¦{gv?d M½žË£ @  ¦|hv?d PM½€Ü} @  ¦}iv?d M½Ò3$ @  ¦~jv?d ÐM½P…$ú @  ¦kv?d N½¶ZM @  ¦€lv?d PN½4–M“ @  ¦mv?d N½f¢Ê @  ¦‚nv?d ÐN½äµ @  ¦ƒov?d O½Hßí% @  ¦„pv?d PO½ÊNúû @  ¦…qv?d O½˜U¢ @  ¦†rv?d ÐO½Ä| @  ¦‡sv?d P½.*OK @  ¦ˆtv?d PP½¬»X• @  ¦‰uv?d P½þ ·Ì @  ¦Švv?d ÐP½|1  @  ¦‹wv?d Q½µ¢šÏ @  ¦Œxv?d PQ½73 @  ¦yv?d Q½e(bH @  ¦Žzv?d ÐQ½ç¹u– @  ¦{v?d R½]l2 @  ¦|v?d PR½ßý ì @  ¦‘}v?d R½æâµ @  ¦’~v?d ÐR½wõk @  ¦“v?d S½Ó•Õ @  ¦”€v?d PS½QÂÛ @  ¦•v?d S½-‚ @  ¦–‚v?d ÐS½Ž:\ @  ¦—ƒv?d T½ð8Ö @  ¦˜„v?d PT½a/ @  ¦™…v?d T½ÂzÀQ @  ¦š†v?d ÐT½@ë× @  ¦›‡v?d U½‰xíR @  ¦œˆv?d PU½ éúŒ @  ¦‰v?d U½YòÕ @  ¦žŠv?d ÐU½Ûc  @  ¦Ÿ‹v?d V½p°J @  ¦ Œv?d PV½ò!]Á @  ¦¡v?d V½ :²˜ @  ¦¢Žv?d ÐV½"«¥F @  ¦£v?d W½Žhýw @  ¦¤v?d PW½ ùê© @  ¦¥‘v?d W½^âð @  ¦¦’v?d ÐW½Üs. @  ¦§“v?d X½b¼o¶ @  ¦¨”v?d PX½à-xh @  ¦©•v?d X½²6—1 @  ¦ª–v?d ÐX½0§€ï @  ¦«—v?d Y½ù4º2 @  ¦¬˜v?d PY½{¥­ì @  ¦­™v?d Y½)¾Bµ @  ¦®šv?d ÐY½«/Uk @  ¦¯›v?d Z½ú:Ï @  ¦°œv?d PZ½“k- @  ¦±v?d Z½ÁpÂH @  ¦²žv?d ÐZ½CáÕ– @  ¦³Ÿv?d [½r•´{ @  ¦´ v?d P[½ð£¥ @  ¦µ¡v?d [½¢Lü @  ¦¶¢v?d Ð[½ Ž[" @  ¦·£v?d \½³ðY¨ @  ¦¸¤v?d P\½1aNv @  ¦¹¥v?d \½cz¡/ @  ¦º¦v?d Ð\½áë¶ñ @  ¦»§v?d ]½(xŒ, @  ¦¼¨v?d P]½ªé›ò @  ¦½©v?d ]½øòt« @  ¦¾ªv?d Ð]½zccu @  ¦¿«v?d ^½·-ó @  ¦À¬v?d P^½ý&:- @  ¦Á­v?d ^½¯=Õt @  ¦Â®v?d Ð^½-¬Âª @  ¦Ã¯v?d _½oš› @  ¦Ä°v?d P_½þE @  ¦Å±v?d _½Qåb @  ¦uÐ`½Æ²v?d Ð_½®ô¾ @  ¦Ç€³v?d (`½šo  @  ¦΀ºv?d èa½S¯x~ @  ¦Ï€»v?d (b½ézÚ @  ¦Ѐ¼v?d hb½kë @  ¦Ñ€½v?d ¨b½9ðï] @  ¦Ò€¾v?d èb½»aøƒ @  ¦Ó€¿v?d (c½zEŒ @  ¦Ô€Àv?d hc½øÔ›¡ @  ¦Õ€Áv?d ¨c½ªÏtø @  ¦Ö€Âv?d èc½(^c& @  ¦×€Ãv?d (d½» a¬ @  ¦Ø€Äv?d hd½9±vr @  ¦Ù€Åv?d ¨d½kª™+ @  ¦Ú€Æv?d èd½é;Žõ @  ¦Û€Çv?d (e½ ¨´( @  ¦Ü€Èv?d he½¢9£ö @  ¦Ý€Év?d ¨e½ð"L¯ @  ¦Þ€Êv?d èe½r³[q @  ¦߀Ëv?d (f½Ù`e @  ¦à€Ìv?d hf½[ñ» @  ¦á€Ív?d ¨f½ êëâ @  ¦â€Îv?d€ èf½ÿ¸àš @  §€Ïv?d (g½²:ð‚ @  §€Ðv?d hg½0«ç\ @  §€Ñv?d ¨g½§ùóè @  §€Òv?d èg½%hä6 @  §€Óv?d (h½UÆÔ @  §€Ôv?d hh½×„Ñ  @  §€Õv?d ¨h½K-a) @  §€Öv?d èh½ɼv÷ @  § €×v?d (i½Åf·Ç @  § €Øv?d hi½G÷  @  § €Ùv?d ¨i½Ð¥´­ @  § €Úv?d èi½R4£s @  § €Ûv?d (j½‹ò­M @  §€Üv?d hj½ cº“ @  §€Ýv?d ¨j½8k4P @  §€Þv?d èj½ºú#Ž @  §€ßv?d (k½NǹŽ @  §€àv?d hk½ÌV®P @  §€áv?d ¨k½[ºä @  §€âv?d èk½Ù•­: @  §€ãv?d (l½„YðÊ @  §€äv?d hl½Èç @  §€åv?d ¨l½šaW7 @  §€æv?d èl½ð@é @  §€çv?d (m½*Ù @  §€èv?d hm½–»– @  §€év?d ¨m½邳 @  §€êv?d èm½ƒx•m @  §€ëv?d (n½Z¾›S @  §€ìv?d hn½Ø/Œ @  §€ív?d ¨n½ø!%þ @  § €îv?d èn½z°2  @  §!€ïv?d (o½:‘ü @  §"€ðv?d ho½‘«†" @  §#€ñv?d ¨o½ù’– @  §$€òv?d èo½„h…H @  §%€óv?d (p½~4— @  §&€ôv?d hp½ü¥€Û @  §'€õv?d ¨p½` 0ø @  §(€öv?d èp½â'& @  §)€÷v?d (q½îGæ @  §*€øv?d hq½lÖñÈ @  §+€ùv?d ¨q½û„å| @  §,€úv?d èq½yò¢ @  §-€ûv?d (r½ Óüœ @  §.€üv?d hr½"BëB @  §/€ýv?d ¨r½Je @  §0€þv?d èr½‘Ûr_ @  §1€ÿv?d (s½÷üÐ @  §2€w?d hs½u†ë @  §3€w?d ¨s½âÔÿº @  §4€w?d ès½`Eèd @  §5€w?d (t½=‰µ” @  §6€w?d ht½¿¢J @  §7€w?d ¨t½#±i @  §8€w?d èt½¡ · @  §9€w?d (u½­úć @  §:€w?d hu½/kÓY @  §;€ w?d ¨u½¸9Çí @  §<€ w?d èu½:¨Ð3 @  §=€ w?d (v½ãnÞ  @  §>€ w?d hv½aÿÉÓ @  §?€ w?d ¨v½ïöf2 @  §@€w?d èv½mgqì @  §A€w?d (w½íÒ0 @  §B€w?d hw½†|Åî @  §C€w?d ¨w½.ÑZ @  §D€w?d èw½“¿Æ„ @  §E€w?d (x½ãÂäf @  §F€w?d hx½aSó¸ @  §G€w?d ¨x½ýúC› @  §H€w?d èx½kTE @  §I€w?d (y½s±•u @  §J€w?d hy½ñ ‚« @  §K€w?d ¨y½fr– @  §L€w?d èy½äãÁ @  §M€w?d (z½=%ÿ @  §N€w?d hz½¿´˜! @  §O€w?d ¨z½޼â @  §P€w?d èz½ -< @  §Q€w?d ({½ø›< @  §R€ w?d h{½zŒâ @  §S€!w?d ¨{½íÓ˜V @  §T€"w?d è{½oBˆ @  §U€#w?d (|½2ŽÒx @  §V€$w?d h|½°Ŧ @  §W€%w?d ¨|½,¶u… @  §X€&w?d è|½®'b[ @  §Y€'w?d (}½¢ý£k @  §Z€(w?d h}½ l´µ @  §[€)w?d ¨}½·>  @  §\€*w?d è}½5¯·ß @  §]€+w?d (~½ìi¹á @  §^€,w?d h~½nø®? @  §_€-w?d ¨~½NöL @  §`€.w?d è~½Ìg’ @  §a€/w?d (½¥í³N @  §b€0w?d h½'|¤ @  §c€1w?d ¨½uЀ½'°.°$ @  §d€2w?d è½O?Ô† @  §e3w?d @€½ƒëq @  §f€4w?d €€½8vé @  §g€5w?d À€½»LŒ @  §h€6w?d ½ÖóÀd @  §i€7w?d @½ˆðšb @  §j€8w?d €½¨˜œ @  §k€9w?d À½3™ @  §l€:w?d ‚½w9É @  §m€;w?d @‚½Æd€è @  §n€w?d ƒ½¥µ• @  §q€?w?d @ƒ½ó: @  §r€@w?d €ƒ½ÓôƒÄ @  §s€Aw?d Àƒ½æÂ‚P @  §t€Bw?d „½ÿŒq_ @  §u€Cw?d @„½9ŸÈ~ @  §v€Dw?d €„½jÊ€ @  §w€Ew?d À„½'§oƒ @  §x€Fw?d …½÷ïãk @  §y€Gw?d @…½©ì¹m @  §z€Hw?d €…½‰»“ @  §{€Iw?d À…½¼/º @  §|€Jw?d †½!kÆ @  §}€Kw?d @†½çx£ç @  §~€Lw?d €†½Ç¡ @  §€Mw?d À†½¶+é @  §€€Nw?d ‡½Øþ§ @  §€Ow?d @‡½ã­Ÿë @  §‚€Pw?d €‡½ÃX @  §ƒ€Qw?d À‡½önœ @  §„€Rw?d ˆ½‘œ @  §…€Sw?d @ˆ½‚©½ @  §†€Tw?d €ˆ½$w«C @  §‡€Uw?d Àˆ½º@ @  §ˆ€Vw?d ‰½Êò‚¨ @  §‰€Ww?d @‰½”ñØ® @  §Š€Xw?d €‰½´ÚP @  §‹€Yw?d À‰½2ÛÄ @  §Œ€Zw?d нv{ @  §€[w?d @нÚeÂ$ @  §Ž€\w?d €Š½úÀÚ @  §€]w?d Àнiü[9 @  §€^w?d ‹½¹´×Ñ @  §‘€_w?d @‹½PÖç @  §’€`w?d €‹½?¥Ô @  §“€aw?d À‹½ “Õ @  §”€bw?d Œ½Ý&‚ @  §•€cw?d @Œ½ÕΟ£ @  §–€dw?d €Œ½õ;] @  §—€ew?d ÀŒ½Ëö8^ @  §˜€fw?d ½¾´¶ @  §™€gw?d @½E½î° @  §š€hw?d €½eHìN @  §›€iw?d À½P~íÚ @  §œ€jw?d ޽Í:M @  §€kw?d @޽ )ô: @  §ž€lw?d €Ž½+ÜöÄ @  §Ÿ€mw?d À޽©¶J— @  § €nw?d ½yþÆ @  §¡€ow?d @½B­þ• @  §¢€pw?d €½bXük @  §£€qw?d À½Wnýÿ @  §¤€rw?d ½é°AM @  §¥€sw?d @½/£øl @  §¦€tw?d €½Vú’ @  §§€uw?d À½1›_‘ @  §¨€vw?d ‘½áÓÓy @  §©€ww?d @‘½¿Ð‰ @  §ª€xw?d €‘½Ÿ%‹ @  §«€yw?d À‘½ªŠ @  §¬€zw?d ’½7W*Ô @  §­€{w?d @’½ñD“õ @  §®€|w?d €’½ѱ‘  @  §¯€}w?d À’½BÝ è @  §°€~w?d “½’•† @  §±€w?d @“½ÙçÆµ @  §²€€w?d €“½ùÄK @  §³€w?d À“½Ì$Åß @  §´€‚w?d ”½Õj6Ð @  §µ€ƒw?d @”½yñ @  §¶€„w?d €”½3Œ @  §·€…w?d À”½ A(  @  §¸€†w?d •½Ý ¤ä @  §¹€‡w?d @•½ƒ þâ @  §º€ˆw?d €•½£ÿü @  §»€‰w?d À•½–Éýˆ @  §¼€Šw?d –½ ]I @  §½€‹w?d @–½Ížäh @  §¾€Œw?d €–½íkæ– @  §¿€w?d À–½Á\W @  §À€Žw?d —½Nп @  §Á€w?d @—½*èU @  §€w?d €—½ èê« @  §À‘w?d À—½?Þë? @  §Ä€’w?d ˜½ !g" @  §Å€“w?d @˜½Í2Þ @  §Æ€”w?d €˜½íÇÜý @  §Ç€•w?d À˜½Ó yþ @  §È€–w?d ™½Bõ @  §É€—w?d @™½]A¯ @  §Ê€˜w?d €™½}´­î @  §Ë€™w?d À™½H‚¬z @  §Ì€šw?d š½ÕÆ » @  §Í€›w?d @š½Õµš @  §΀œw?d €š½3 ·d @  §Ï€w?d Àš½ L,‡ @  §Ѐžw?d ›½p o @  §Ñ€Ÿw?d @›½Öà¡Y @  §Ò€ w?d €›½ö£§ @  §Ó€¡w?d À›½Ã#¢3 @  §Ô€¢w?d œ½ÚmQ< @  §Õ€£w?d @œ½~è @  §Ö€¤w?d €œ½<‹êã @  §×€¥w?d Àœ½FOà @  §Ø€¦w?d ½Òà @  §Ù€§w?d @½Œ ™ @  §Ú€¨w?d €½¬ø›ð @  §Û€©w?d À½™Îšd @  §Ü€ªw?d ž½Š:¥ @  §Ý€«w?d @ž½™ƒ„ @  §Þ€¬w?d €ž½âlz @  §߀­w?d Àž½`=) @  §à€®w?d Ÿ½°N±Á @  §á€¯w?d @Ÿ½‹‰+ @  §â€°w?d€ €Ÿ½ƒrŸ‡ @  ¨€±wuР½?d ÀŸ½WÖ: @  ¨€²w?d  ½[Ž{  @  ¨³w?d X ½š}Þ9 @  ¨´w?d ˜ ½x!; @  ¨µw?d Ø ½ˆ^Ák @  ¨¶w?d ¡½XMƒ @  ¨·w?d X¡½ȧHÿ @  ¨¸w?d ˜¡½èRJ @  ¨ ¹w?d Ø¡½-°x @  ¨ ºw?d ¢½…i¹ @  ¨ »w?d X¢½†3Ru @  ¨ ¼w?d ˜¢½¦ÆP‹ @  ¨ ½w?d Ø¢½V¹ªò @  ¨¾w?d £½†ñ& @  ¨¿w?d X£½³VS§ @  ¨Àw?d ˜£½“£QY @  ¨Áw?d Ø£½cÜ«  @  ¨Âw?d ¤½z’X/ @  ¨Ãw?d X¤½yÈã @  ¨Äw?d ˜¤½Y= @  ¨Åw?d ؤ½©Bâd @  ¨Æw?d ¥½y nŒ @  ¨Çw?d X¥½é»kð @  ¨Èw?d ˜¥½ÉNi @  ¨Éw?d Ø¥½91“w @  ¨Êw?d ¦½¤u3¶ @  ¨Ëw?d X¦½§/qz @  ¨Ìw?d ˜¦½‡Ús„ @  ¨Íw?d ئ½w¥‰ý @  ¨Îw?d §½§í @  ¨Ïw?d X§½î«{Õ @  ¨ Ðw?d ˜§½Î^y+ @  ¨!Ñw?d ا½>!ƒR @  ¨"Òw?d ¨½ ÞO @  ¨#Ów?d X¨½ „Mƒ @  ¨$Ôw?d ˜¨½)qO} @  ¨%Õw?d ب½Ùµ @  ¨&Öw?d ©½ F9ì @  ¨'×w?d X©½™÷< @  ¨(Øw?d ˜©½¹>n @  ¨)Ùw?d Ø©½I}Ä @  ¨*Úw?d ª½Ô9dÖ @  ¨+Ûw?d Xª½×c& @  ¨,Üw?d ˜ª½÷–$ä @  ¨-Ýw?d ت½éÞ @  ¨.Þw?d «½סRu @  ¨/ßw?d X«½V2Ù @  ¨0àw?d ˜«½2£0' @  ¨1áw?d Ø«½ÂÜÊ^ @  ¨2âw?d ¬½Û’9Q @  ¨3ãw?d X¬½ØÈ{ @  ¨4äw?d ˜¬½ø=yc @  ¨5åw?d ج½Bƒ @  ¨6æw?d ­½Ø ò @  ¨7çw?d X­½H» Ž @  ¨8èw?d ˜­½hNp @  ¨9éw?d Ø­½˜1ò  @  ¨:êw?d ®½uRÈ @  ¨;ëw?d X®½/ @  ¨<ìw?d ˜®½&Úú @  ¨=íw?d Ø®½Ö¥èƒ @  ¨>îw?d ¯½ídk @  ¨?ïw?d X¯½á¬9 @  ¨@ðw?d ˜¯½ÁYÇ @  ¨Añw?d د½1&ä¾ @  ¨Bòw?d °½øX  @  ¨Ców?d X°½Œ¢À @  ¨Dôw?d ˜°½¬W> @  ¨Eõw?d ذ½\(âG @  ¨Föw?d ±½Œ`n¯ @  ¨G÷w?d X±½ÑkÓ @  ¨Høw?d ˜±½<$i- @  ¨Iùw?d ر½Ì[“T @  ¨Júw?d ²½Q3• @  ¨Kûw?d X²½REqY @  ¨Lüw?d ˜²½r°s§ @  ¨Mýw?d ز½‚ωÞ @  ¨Nþw?d ³½R‡6 @  ¨Oÿw?d X³½à²@ú @  ¨Px?d ˜³½ÀGB @  ¨Qx?d س½08¸} @  ¨Rx?d ´½)vKr @  ¨Sx?d X´½*, ¾ @  ¨Tx?d ˜´½ Ù @ @  ¨Ux?d Ø´½ú¦ñ9 @  ¨Vx?d µ½*î}Ñ @  ¨Wx?d Xµ½º_x­ @  ¨Xx?d ˜µ½šªzS @  ¨Y x?d ص½jÕ€* @  ¨Z x?d ¶½÷‘ ë @  ¨[ x?d X¶½ôËb' @  ¨\ x?d ˜¶½Ô>`Ù @  ¨] x?d ض½$Aš  @  ¨^x?d ·½ô H @  ¨_x?d X·½½Ohˆ @  ¨`x?d ˜·½ºjv @  ¨ax?d Ø·½mÅ @  ¨bx?d ¸½Y: @  ¨cx?d X¸½Z`^Þ @  ¨dx?d ˜¸½z•\  @  ¨ex?d ظ½Šê¦Y @  ¨fx?d ¹½Z¢*± @  ¨gx?d X¹½Ê/Í @  ¨hx?d ˜¹½êæ-3 @  ¨ix?d ع½™×J @  ¨jx?d º½‡Ýw‹ @  ¨kx?d Xº½„‡5G @  ¨lx?d ˜º½¤r7¹ @  ¨mx?d غ½T ÍÀ @  ¨nx?d »½„EA( @  ¨ox?d X»½A²!„ @  ¨p x?d ˜»½aG#z @  ¨q!x?d Ø»½‘8Ù @  ¨r"x?d ¼½ˆv*  @  ¨s#x?d X¼½‹,hÀ @  ¨t$x?d ˜¼½«Ùj> @  ¨u%x?d ؼ½[¦G @  ¨v&x?d ½½‹î¯ @  ¨w'x?d X½½_Ó @  ¨x(x?d ˜½½;ª- @  ¨y)x?d ؽ½ËÕáT @  ¨z*x?d ¾½V‘A• @  ¨{+x?d X¾½UËY @  ¨|,x?d ˜¾½u>§ @  ¨}-x?d ؾ½…AûÞ @  ¨~.x?d ¿½U w6 @  ¨/x?d X¿½Q?U @  ¨€0x?d ˜¿½që=« @uÐÀ½  ¨1x?d Ø¿½”ÇÒ @  ¨‚2x?d 0À½åd–€ @  ¨ƒ3x?d pÀ½æ>ÔL @  ¨„4x?d °À½ÆËÖ² @  ¨…5x?d ðÀ½6´,Ë @  ¨†6x?d 0Á½æü # @  ¨‡7x?d pÁ½vM¥_ @  ¨ˆ8x?d °Á½V¸§¡ @  ¨‰9x?d ðÁ½¦Ç]Ø @  ¨Š:x?d 0½;ƒý @  ¨‹;x?d p½8Ù¿Õ @  ¨Œx?d 0ý8˺ @  ¨?x?d pý ¼¾ @  ¨@x?d °Ã½-I¼ù @  ¨‘Ax?d ðýÝ6F€ @  ¨’Bx?d 0ĽÄxµ @  ¨“Cx?d pĽÇ"÷C @  ¨”Dx?d °Ä½ç×õ½ @  ¨•Ex?d ðĽ¨Ä @  ¨–Fx?d 0ŽÇàƒ, @  ¨—Gx?d pŽWQ†P @  ¨˜Hx?d °Å½w¤„® @  ¨™Ix?d ðއÛ~× @  ¨šJx?d 0ƽŸÞ @  ¨›Kx?d pƽÅœÚ @  ¨œLx?d °Æ½90ž$ @  ¨Mx?d ðƽÉOd] @  ¨žNx?d 0ǽèµ @  ¨ŸOx?d pǽPA–u @  ¨ Px?d °Ç½p´”‹ @  ¨¡Qx?d ðǽ€Ënò @  ¨¢Rx?d 0Ƚ´4âï @  ¨£Sx?d pȽ·n # @  ¨¤Tx?d °È½—›¢Ý @  ¨¥Ux?d ðȽgäX¤ @  ¨¦Vx?d 0ɽ·¬ÔL @  ¨§Wx?d pɽ'Ñ0 @  ¨¨Xx?d °É½èÓÎ @  ¨©Yx?d ðɽ÷—)· @  ¨ªZx?d 0ʽjÓ‰v @  ¨«[x?d pʽi‰Ëº @  ¨¬\x?d °Ê½I|ÉD @  ¨­]x?d ðʽ¹3= @  ¨®^x?d 0˽iK¿Õ @  ¨¯_x?d p˽¬¼ßy @  ¨°`x?d °Ë½ŒI݇ @  ¨±ax?d ð˽|6'þ @  ¨²bx?d 0̽exÔñ @  ¨³cx?d p̽f"–= @  ¨´dx?d °Ì½Fהà @  ¨µex?d ð̽¶¨nº @  ¨¶fx?d 0ͽfàâR @  ¨·gx?d pͽöQç. @  ¨¸hx?d °Í½Ö¤åÐ @  ¨¹ix?d ðͽ&Û© @  ¨ºjx?d 0ν»Ÿ¿h @  ¨»kx?d pν¸Åý¤ @  ¨¼lx?d °Î½˜0ÿZ @  ¨½mx?d ðνhO# @  ¨¾nx?d 0Ͻ¸‰Ë @  ¨¿ox?d pϽ_Fñ™ @  ¨Àpx?d °Ï½³óg @  ¨Áqx?d ðϽÌ  @  ¨Ârx?d 0н1µ¬ @  ¨Ãsx?d pн2H÷` @  ¨Ätx?d °Ð½½õž @  ¨Åux?d ðнâÂç @  ¨Ævx?d 0ѽ2Šƒ @  ¨Çwx?d pѽ¢;†s @  ¨Èxx?d °Ñ½‚΄ @  ¨Éyx?d ðѽr±~ô @  ¨Êzx?d 0Ò½ïõÞ5 @  ¨Ë{x?d pÒ½쯜ù @  ¨Ì|x?d °Ò½ÌZž @  ¨Í}x?d ðÒ½<%d~ @  ¨Î~x?d 0Ó½ìmè– @  ¨Ïx?d pÓ½Ä É¹ @  ¨Ð€x?d °Ó½äùËG @  ¨Ñx?d ðÓ½†1> @  ¨Ò‚x?d 0Ô½ ÈÂ1 @  ¨Óƒx?d pÔ½’€ý @  ¨Ô„x?d °Ô½.g‚ @  ¨Õ…x?d ðÔ½Þxz @  ¨Ö†x?d 0Õ½Pô’ @  ¨×‡x?d pÕ½žáñî @  ¨Øˆx?d °Õ½¾ó @  ¨Ù‰x?d ðÕ½Nk i @  ¨ÚŠx?d 0Ö½Ó/©¨ @  ¨Û‹x?d pÖ½Ðuëd @  ¨ÜŒx?d °Ö½ð€éš @  ¨Ýx?d ðÖ½ÿã @  ¨ÞŽx?d 0×½зŸ  @  ¨ßx?d p×½™ñáË @  ¨àx?d °×½¹ã5 @  ¨á‘x?d ð×½I{L @  ¨â’x?d€ 0ؽ G‰÷ @  ©“x?d pؽë\ƒ @  ©”x?d °Ø½Ë©ì @  ©•x?d ðؽþŸ€x @  ©–x?d 0Ù½.×  @  ©—x?d pÙ½pÔV– @  ©˜x?d °Ù½P!Th @  ©™x?d ðÙ½nìñk @  ©šx?d 0Ú½ó¨Qª @  © ›x?d pÚ½5»è‹ @  © œx?d °Ú½Nêu @  © x?d ðÚ½ xëá @  © žx?d 0Û½ð0g  @  © Ÿx?d pÛ½VÔf? @  © x?d °Û½v!dÁ @  ©¡x?d ðÛ½åMÿ" @  ©¢x?d 0ܽü - @  ©£x?d pܽ:µ  @  ©¤x?d °Ü½å·ò @  ©¥x?d ðܽ/Ó¶f @  ©¦x?d 0ݽÿ›:Ž @  ©§x?d pݽ¡˜`ˆ @  ©¨x?d °Ý½mbv @  ©©x?d ðݽ¿ Çu @  ©ªx?d 0Þ½"äg´ @  ©«x?d pÞ½ä÷Þ• @  ©¬x?d °Þ½ÄÜk @  ©­x?d ðÞ½ñ4Ýÿ @  ©®x?d 0ß½!|Q @  ©¯x?d pß½/iý @  ©°x?d uÐà½/°ß½:Úk @  ©±x?d ðß½z0… @  © ²x?d Hà½c½ns @  ©!³x?d ˆà½ÊÂr @  ©"´x?d Èཅ[Õ¬ @  ©#µx?d á½â´O @  ©$¶x?d Há½`%XÐ @  ©%·x?d ˆá½œBö @  ©&¸x?d Èá½Ó( @  ©'¹x?d â½?Ë4 @  ©(ºx?d Hâ½½Zê @  ©)»x?d ˆâ½Ù-©ë @  ©*¼x?d Èâ½[¼¾5 @  ©+½x?d ã½Ðx?d È罄x*R @  ©?Ñx?d è½{ P @  ©@Òx?d Hè½œêŽ @  ©AÓx?d ˆè½ø° @  ©BÔx?d Èè½z §Q @  ©CÕx?d é½ã=ó @  ©DÖx?d H齟r*- @  ©E×x?d ˆé½ce  @  ©FØx?d Èé½á„rÕ @  ©GÙx?d ê½Àœ`É @  ©HÚx?d Hê½B w @  ©IÛx?d ˆê½&zÛ @  ©JÜx?d È꽤ëÌÈ @  ©KÝx?d ë½ÃVj @  ©LÞx?d Hë½A•A´ @  ©Mßx?d ˆë½EU¢ @  ©Nàx?d Èë½Ç„B| @  ©Oáx?d ì½Ï7=N @  ©Pâx?d Hì½M¦* @  ©Qãx?d ˆì½)ц‘ @  ©Räx?d È콫@‘O @  ©Såx?d í½̯ í @  ©Tæx?d Hí½N>3 @  ©Uçx?d ˆí½²YS @  ©Vèx?d Èí½0ÈDË @  ©Wéx?d î½ÐV× @  ©Xêx?d HAA  @  ©Yëx?d ˆî½÷6í @  ©Zìx?d Èî½u§úÖ @  ©[íx?d ï½H`t @  ©\îx?d Hï½Ùwª @  ©]ïx?d ˆï½ îZ` @  ©^ðx?d ÈkM¾ @  ©_ñx?d ð½5ZZ @  ©`òx?d Hð½·ËM_ @  ©aóx?d ˆð½Ó¼á^ @  ©bôx?d Èð½Q-ö€ @  ©cõx?d ñ½6Âl" @  ©döx?d Hñ½´S{ü @  ©e÷x?d ˆñ½H44Ú @  ©føx?d Èñ½Ê¥# @  ©gùx?d ò½ë½1 @  ©húx?d Hò½i,&Æ @  ©iûx?d ˆò½ [ŠÇ @  ©jüx?d Èò½Ê @  ©kýx?d ó½è%» @  ©lþx?d Hó½j´e @  ©mÿx?d ˆó½üÅü @  ©ny?d Èó½~T" @  ©oy?d ô½vçx @  ©py?d Hô½ôvoÎ @  ©qy?d ˆô½ÃÏ @  ©ry?d Èô½Ô @  ©sy?d õ½uN³ @  ©ty?d Hõ½÷îYm @  ©uy?d ˆõ½ ‰K @  ©vy?d Èõ½‰• @  ©w y?d ö½¨‰ @  ©x y?d Hö½*‘W @  ©y y?d ˆö½Næ¨V @  ©z y?d Èö½Ìw¿ˆ @  ©{ y?d ÷½«˜%* @  ©|y?d H÷½) 2ô @  ©}y?d ˆ÷½°>> @  ©~y?d È÷½2¯à @  ©y?d ø½KúÓ @  ©€y?d Hø½Ék  @  ©y?d ˆø½­¢  @  ©‚y?d Èø½/µÒ @  ©ƒy?d ù½Hb/p @  ©„y?d Hù½Êó8® @  ©…y?d ˆù½6”wˆ @  ©†y?d Èù½´`V @  ©‡y?d ú½•rJ @  ©ˆy?d Hú½Œe” @  ©‰y?d ˆú½sûÉ• @  ©Šy?d Èú½ñjÞK @  ©‹y?d û½–…Dé @  ©Œy?d Hû½S7 @  ©y?d ˆû½”G! @  ©Ž y?d Èû½’Pÿ @  ©!y?d ü½š¶/Í @  ©"y?d Hü½'8 @  ©‘#y?d ˆü½|P” @  ©’$y?d Èü½þÁƒÌ @  ©“%y?d ý½™.n @  ©”&y?d Hý½¿° @  ©•'y?d ˆý½çØA– @  ©–(y?d Èý½eIVH @  ©—)y?d þ½DQDT @  ©˜*y?d Hþ½ÆÀSŠ @  ©™+y?d ˆþ½¢·ÿ‹ @  ©š,y?d Èþ½ &èU @  ©›-y?d ÿ½GÉr÷ @  ©œ.y?d Hÿ½ÅXe) @  ©/y?d ˆÿ½\oHã @  ©žuо0y?d Èÿ½%d= @  ©Ÿ 1y?d ¾!š‡§ @  ©  2y?d `¾£ y @  ©¡ 3y?d  ¾Ç| @  ©¨ :y?d `¾}ìûà @  ©© ;y?d  ¾›Wá @  ©ª y?d `¾~tÍC @  ©­ ?y?d  ¾ФÌD @  ©® @y?d à¾5Ûš @  ©¯ Ay?d ¾†¤¨ @  ©° By?d `¾‚³v @  ©± Cy?d  ¾æ`w @  ©² Dy?d à¾dñ© @  ©³ Ey?d ¾’  @  ©´ Fy?d `¾…Õ @  ©µ Gy?d  ¾}èÊó @  ©¶ Hy?d à¾ÿyÝ- @  ©· Iy?d ¾ÞaÏ1 @  ©¸ Jy?d `¾\ðØï @  ©¹ Ky?d  ¾8‡tî @  ©º Ly?d ྺc0 @  ©» My?d ¾Ýùù’ @  ©¼ Ny?d `¾_hîL @  ©½ Oy?d  ¾Æ_Æ @  ©¾ Py?d à¾DÎÔX @  ©¿ Qy?d ¾ÞÍõZ @  ©À Ry?d `¾\\â„ @  ©Á Sy?d  ¾8+N… @  © Ty?d ྺºY[ @  ©à Uy?d ¾ÝUÃù @  ©Ä Vy?d ` ¾_ÄÔ' @  ©Å Wy?d   ¾££› @  ©Æ Xy?d à ¾!2Œß @  ©Ç Yy?d ¾*žÃ @  ©È Zy?d ` ¾‚»‰ @  ©É [y?d   ¾æÌ% @  ©Ê \y?d à ¾d]2 @  ©Ë ]y?d ¾²¨` @  ©Ì ^y?d ` ¾#¿¾ @  ©Í _y?d   ¾…£«¨ @  ©Î `y?d à ¾2¼v @  ©Ï ay?d ¾ÃD @  ©Ð by?d ` ¾Ôš @  ©Ñ cy?d   ¾égx› @  ©Ò dy?d à ¾köoE @  ©Ó ey?d ¾ õç @  ©Ô fy?d ` ¾Žˆâ9 @  ©Õ gy?d   ¾rï­ @  ©Ö hy?d à ¾ð~ºÁ @  ©× iy?d ¾Ñf¨Ý @  ©Ø jy?d `¾S÷¿ @  ©Ù ky?d  ¾7€ @  ©Ú ly?d à¾µÜ @  ©Û my?d ¾Òþž~ @  ©Ü ny?d `¾«²  @  ©Ýoy?d  ¾ÉX¤j @  ©Þ py?d à¾Kɳ´ @  ©ß qy?d ¾õ줋 @  ©à ry?d `¾w}³U @  ©á sy?d  ¾ T @  ©â ty?d€ à¾PÜÿŠ @  ª uy?d ¾Ör- @  ª vy?d `¾Tã:ß @  ª wy?d  ¾mÍŽ @  ª xy?d à¾ï\™Ê @  ª yy?d ¾öÔ¬ @  ª zy?d `¾‚gÃr @  ª {y?d  ¾(¢0  @  ª |y?d ྪ3'× @  ª }y?d ¾•F˜ @  ª ~y?d `¾ŠQF @  ª y?d  ¾¦[ÿ> @  ª €y?d à¾$Êèà @  ª y?d ¾OjöH @  ª ‚y?d `¾Íûá– @  ª ƒy?d  ¾ÊŸ,  @  ª „y?d à¾H;Ó @  ª …y?d ¾ê¨Zœ @  ª †y?d `¾h9MB @  ª ‡y?d  ¾Qù‰ @  ª ˆy?d à¾Ó†îW @  ª ‰y?d ¾<,£1 @  ª Šy?d `¾¾½´ï @  ª ‹y?d  ¾xG” @  ª Œy?d ྖéPJ @  ª y?d ¾4O1 @  ª Žy?d `¾¶Þ&Û @  ª y?d  ¾ê ðü @  ª y?d à¾h1ç" @  ª ‘y?d ¾. †˜ @  ª ’y?d `¾¬±‘F @  ª “y?d  ¾ºÓ{m @  ª ”y?d à¾8Bl³ @  ª! •y?d ¾šä ü @  ª" –y?d `¾u" @  ª# —y?d  ¾![®é @  ª$ ˜y?d ྣʹ7 @  ª% ™y?d ¾L`ôQ @  ª& šy?d `¾Îñã @  ª' ›y?d  ¾d4ô @  ª( œy?d à¾æ¥* @  ª) y?d ¾Dfe @  ª* žy?d `¾Æ’q» @  ª+ Ÿy?d  ¾[ž@ @  ª,  y?d ྅ʉž @  ª- ¡y?d ¾îj—6 @  ª. ¢y?d `¾lû€è @  ª/ £y?d  ¾kŸMs @  ª0 ¤y?d à¾éZ­ @  ª1 ¥y?d ¾K¨;â @  ª2 ¦y?d `¾É9,< @  ª3 §y?d  ¾ð˜÷ @  ª4 ¨y?d à¾r†) @  ª5 ©y?d ¾,ÂO @  ª6 ªy?d `¾½Õ‘ @  ª7 «y?d  ¾µx&ê @  ª8 ¬y?d à¾7é14 @  ª9 ­y?d ¾•OP{ @  ª: ®y?d `¾ÞG¥ @  ª; ¯y?d  ¾K ‘‚uÐ ¾ @  ª< °y?d à¾É1†\ @  ª= ±y?d 8 ¾ÊÔµ @  ª> ²y?d x ¾HE¢C @  ª? ³y?d ¸ ¾ð Nú @  ª@ ´y?d ø ¾r±Y$ @  ªA µy?d 8!¾Ð8k @  ªB ¶y?d x!¾R†/µ @  ªC ·y?d ¸!¾k¨›~ @  ªD ¸y?d ø!¾é9Œ  @  ªE ¹y?d 8"¾“ÁÆ @  ªF ºy?d x"¾„Ö @  ªG »y?d ¸"¾.Ç%c @  ªH ¼y?d ø"¾¬V2½ @  ªI ½y?d 8#¾ðSò @  ªJ ¾y?d x#¾ŒaD, @  ªK ¿y?d ¸#¾½ø¾Æ @  ªL Ày?d ø#¾?i© @  ªM Áy?d 8$¾TÉ·° @  ªN Ây?d x$¾ÖX n @  ªO Ãy?d ¸$¾Ѿa,¤ @  ª¶ *z?d x>¾ã½³Ï @  ª· +z?d ¸>¾Ix@´ @  ª¸ ,z?d ø>¾ËéWj @  ª¹ -z?d 8?¾iO6% @  ªº .z?d x?¾ëÞ!û @  ª» /z?duÐ@¾7 ¸?¾· ÷Ü @  ª¼ 0z?d ø?¾Î_Û @  ª½1z?d P@¾Œ™ @  ª¾2z?d @¾_èŽg @  ª¿3z?d Ð@¾Eéwþ @  ªÀ4z?d A¾•¡û @  ªÁ5z?d PA¾eÞo @  ªÂ6z?d A¾E+‘ @  ªÃ7z?d ÐA¾Þa¢z @  ªÄ8z?d B¾C%» @  ªÅ9z?d PB¾³ZøÂ @  ªÆ:z?d B¾“¯ú< @  ªÇ;z?d ÐB¾›g @  ªÈz?d C¾›Ìh @  ªË?z?d ÐC¾1‡Â @  ªÌ@z?d D¾tÍ @  ªÍAz?d PD¾Ꮄ @  ªÎBz?d D¾ÁõŒJ @  ªÏCz?d ÐD¾dõTñ @  ªÐDz?d E¾´½Ø @  ªÑEz?d PE¾DÂ"` @  ªÒFz?d E¾d7 ž @  ªÓGz?d ÐE¾ÿ}u @  ªÔHz?d F¾b9!´ @  ªÕIz?d PF¾’FÛÍ @  ªÖJz?d F¾²³Ù3 @  ª×Kz?d ÐF¾º?h @  ªØLz?d G¾jZ³€ @  ªÙMz?d PG¾š%Iù @  ªÚNz?d G¾ºÐK @  ªÛOz?d ÐG¾Dʈ @  ªÜPz?d H¾p5 @  ªÝQz?d PH¾€Jþd @  ªÞRz?d H¾ ¿üš @  ªßSz?d ÐH¾¹‘ @  ªàTz?d I¾Äñy @  ªáUz?d PI¾4Žu @  ªâVz?d€ I¾`¸kX @  «Wz?d ÐI¾³‚š @  «Xz?d J¾‡÷"[ @  «Yz?d PJ¾²Á#Ï @  «Zz?d J¾’4!1 @  «[z?d ÐJ¾T'˜ @  «\z?d K¾„oø @  «]z?d PK¾º¢±û @  «^z?d K¾šW³ @  « _z?d ÐK¾<³²3 @  « `z?d L¾%ýA< @  « az?d PL¾Ë@¨ @  « bz?d L¾0>BV @  « cz?d ÐL¾ö-ûw @  «dz?d M¾&ewŸ @  «ez?d PM¾µ ì| @  «fz?d M¾•üî‚ @  «gz?d ÐM¾Ëÿ´„ @  «hz?d N¾V»E @  «iz?d PN¾cÑ @  «jz?d N¾Cx/ @  «kz?d ÐN¾…k® @  «lz?d O¾U#"æ @  «mz?d PO¾kî‡å @  «nz?d O¾K… @  «oz?d ÐO¾pH½ñ @  «pz?d P¾ΖC @  «qz?d PP¾û × @  «rz?d P¾ÛU) @  «sz?d ÐP¾F» @  «tz?d Q¾Í7à @  «uz?d PQ¾Od‹³ @  « vz?d Q¾o‘‰M @  «!wz?d ÐQ¾1’ÓK @  «"xz?d R¾¬ÖsŠ @  «#yz?d PR¾™àr @  «$zz?d R¾¹pà @  «%{z?d ÐR¾ÉÁ @  «&|z?d S¾¯NE) @  «'}z?d PS¾‘ƒà* @  «(~z?d S¾±vâÔ @  «)z?d ÐS¾ú¢a @  «*€z?d T¾ãJQn @  «+z?d PT¾Ö|Pú @  «,‚z?d T¾ö‰R @  «-ƒz?d ÐT¾0šë% @  «.„z?d U¾àÒgÍ @  «/…z?d PU¾s¾ü. @  «0†z?d U¾SKþÐ @  «1‡z?d ÐU¾ H¤Ö @  «2ˆz?d V¾  @  «3‰z?d PV¾¥:ƒ @  «4Šz?d V¾…Ï} @  «5‹z?d ÐV¾Cܾ\ @  «6Œz?d W¾“”2´ @  «7z?d PW¾­Y—· @  «8Žz?d W¾¬•I @  «9z?d ÐW¾¶ÿ­£ @  «:z?d X¾‚!¾ @  «;‘z?d PX¾·6 * @  «<’z?d X¾—Ã"Ô @  «=“z?d ÐX¾QЛõ @  «>”z?d Y¾˜ @  «?•z?d PY¾­õ­Ü @  «@–z?d Y¾¯" @  «A—z?d ÐY¾Óõ$ @  «B˜z?d Z¾NGUå @  «C™z?d PZ¾{qTq @  «Dšz?d Z¾[„V @  «E›z?d ÐZ¾—ï® @  «Fœz?d [¾MßcF @  «Gz?d P[¾sÆE @  «Hžz?d [¾SçÄ» @  «IŸz?d Ð[¾õÅ @  «J z?d \¾ìM6‚ @  «K¡z?d P\¾Ù{7 @  «L¢z?d \¾ùŽ5è @  «M£z?d Ð\¾?ŒÉ @  «N¤z?d ]¾ïÕ! @  «O¥z?d P]¾|¹›Â @  «P¦z?d ]¾\L™< @  «Q§z?d Ð]¾OÃ: @  «R¨z?d ^¾Ÿ cû @  «S©z?d P^¾ª=bo @  «Tªz?d ^¾ŠÈ`‘ @  «U«z?d Ð^¾LÛÙ° @  «V¬z?d _¾œ“UX @  «W­z?d P_¾¢^ð[ @  «X®z?d _¾‚«ò¥ @  «uÐ`¾Y¯z?d Ð_¾¹øÊO @  «Z°z?d (`¾× @  «[±z?d h`¾26~C @  «\²z?d ¨`¾Ã|½ @  «]³z?d è`¾ÔÐÅœ @  «^´z?d (a¾˜It @  «_µz?d ha¾†òõ' @  «`¶z?d ¨a¾¦÷Ù @  «a·z?d èa¾ø­ß @  «b¸z?d (b¾e@  @  «c¹z?d hb¾Pv Š @  «dºz?d ¨b¾pƒt @  «e»z?d èb¾¶·U @  «f¼z?d (c¾fØ;½ @  «g½z?d hc¾Xž¾ @  «h¾z?d ¨c¾xàœ@ @  «i¿z?d èc¾.Tˆg @  «jÀz?d (d¾7{h @  «kÁz?d hd¾,zü @  «lÂz?d ¨d¾"Ùx @  «mÃz?d èd¾äÊÁ# @  «nÄz?d (e¾4‚MË @  «oÅz?d he¾§îÖ( @  «pÆz?d ¨e¾‡ÔÖ @  «qÇz?d èe¾ÙŽÐ @  «rÈz?d (f¾D\. @  «sÉz?d hf¾qj/… @  «tÊz?d ¨f¾QŸ-{ @  «uËz?d èf¾—Œ”Z @  «vÌz?d (g¾GIJ @  «wÍz?d hg¾y ½± @  «xÎz?d ¨g¾Yü¿O @  «yÏz?d èg¾b¯‡¥ @  «zÐz?d (h¾VP ¸ @  «{Ñz?d hh¾cf , @  «|Òz?d ¨h¾C“Ò @  «}Óz?d èh¾…€±ó @  «~Ôz?d (i¾UÈ= @  «Õz?d hi¾šó·ë @  «€Öz?d ¨i¾ºµ @  «×z?d èi¾äï @  «‚Øz?d (j¾yAOÒ @  «ƒÙz?d hj¾LwNF @  «„Úz?d ¨j¾l‚L¸ @  «…Ûz?d èj¾ª‘õ™ @  «†Üz?d (k¾zÙyq @  «‡Ýz?d hk¾DÜr @  «ˆÞz?d ¨k¾dáÞŒ @  «‰ßz?d èk¾Âߺ @  «Šàz?d (l¾ÛK,µ @  «‹áz?d hl¾î}-! @  «Œâz?d ¨l¾Έ/ß @  «ãz?d èl¾›–þ @  «Žäz?d (m¾ØÓ @  «åz?d hm¾K¿õ @  «æz?d ¨m¾kJƒ  @  «‘çz?d èm¾5IÙ  @  «’èz?d (n¾¨ yÌ @  «“éz?d hn¾;xX @  «”êz?d ¨n¾½Îz¦ @  «•ëz?d èn¾{ÝÇ @  «–ìz?d (o¾«•Oo @  «—íz?d ho¾•Xêl @  «˜îz?d ¨o¾µ­è’ @  «™ïz?d èo¾ŽþÐx @  «šðz?d (p¾0 lÊ @  «›ñz?d hp¾m^ @  «œòz?d ¨p¾%ão  @  «óz?d èp¾ãðÖ @  «žôz?d (q¾3¸Zi @  «Ÿõz?d hq¾±Òæ: @  « öz?d ¨q¾‘'äÄ @  «¡÷z?d èq¾Ï$¾Â @  «¢øz?d (r¾R` @  «£ùz?d hr¾gV— @  «¤úz?d ¨r¾G£i @  «¥ûz?d èr¾°¤H @  «¦üz?d (s¾Qø(  @  «§ýz?d hs¾o5£ @  «¨þz?d ¨s¾OÀ] @  «©ÿz?d ès¾{Õšä @  «ª{?d (t¾b›ië @  ««{?d ht¾W­h @  «¬{?d ¨t¾wXj @  «­{?d èt¾±KÓ  @  «®{?d (u¾a_H @  «¯{?d hu¾òoÄ« @  «°{?d ¨u¾ÒšÆU @  «±{?d èu¾Œ™œS @  «²{?d (v¾Ý<’ @  «³ {?d hv¾$ë= @  «´ {?d ¨v¾?ø @  «µ {?d èv¾ †Ù @  «¶ {?d (w¾E 1 @  «· {?d hw¾,ˆ¯2 @  «¸{?d ¨w¾ }­Ì @  «¹{?d èw¾7.•& @  «º{?d (x¾Ñ; @  «»{?d hx¾6ç¯ @  «¼{?d ¨x¾Q @  «½{?d èx¾Ð£p @  «¾{?d (y¾I/˜ @  «¿{?d hy¾,$•Y @  «À{?d ¨y¾ Ñ—§ @  «Á{?d èy¾RÒÍ¡ @  «Â{?d (z¾Ï–m` @  «Ã{?d hz¾ú lô @  «Ä{?d ¨z¾ÚUn  @  «Å{?d èz¾F×+ @  «Æ{?d ({¾Ì[à @  «Ç{?d h{¾òÃþÀ @  «È{?d ¨{¾Ò6ü> @  «É{?d è{¾tÒý @  «Ê {?d (|¾mœ @  «Ë!{?d h|¾Xª“ @  «Ì"{?d ¨|¾x_ m @  «Í#{?d è|¾¾L´L @  «Î${?d (}¾n8¤ @  «Ï%{?d h}¾ýh£G @  «Ð&{?d ¨}¾Ý¡¹ @  «Ñ'{?d è}¾ƒžû¿ @  «Ò({?d (~¾Ú[~ @  «Ó){?d h~¾+ìZê @  «Ô*{?d ¨~¾ X @  «Õ+{?d è~¾Í á5 @  «Ö,{?d (¾BmÝ @  «×-{?d h¾#ÈÞ @  «Ø.{?d ¨¾uЀ¾'zÊ  @  «Ù/{?d è¾8)òÊ @  «Ú0{?d @€¾V—¾ @  «Û1{?d €€¾ÁÅ  @  «Ü2{?d À€¾CTÔ @  «Ý3{?d ¾מ1à @  «Þ4{?d @¾U& @  «ß5{?d €¾un @  «à6{?d À¾÷˜° @  «á7{?d ‚¾¶Fu© @  «â8{?d€ @‚¾²ÊÎ @  ¬9{?d €‚¾{»ú @  ¬€:{?d À‚¾ù*$ @  ¬€;{?d ƒ¾¨©ÌÞ @  ¬€<{?d @ƒ¾*8Û @  ¬€={?d €ƒ¾x#4Y @  ¬€>{?d Àƒ¾ú²#‡ @  ¬€?{?d „¾ùkŒ  @  ¬€@{?d @„¾{ú›Õ @  ¬ €A{?d €„¾)átŒ @  ¬ €B{?d À„¾«pcR @  ¬ €C{?d …¾úóº¨ @  ¬ €D{?d @…¾xb­v @  ¬ €E{?d €…¾*yB/ @  ¬€F{?d À…¾¨èUñ @  ¬€G{?d †¾Š-Ùr @  ¬€H{?d @†¾¼Î¬ @  ¬€I{?d €†¾Z§!õ @  ¬€J{?d À†¾Ø66+ @  ¬€K{?d ‡¾‰µïÑ @  ¬€L{?d @‡¾ $ø @  ¬€M{?d €‡¾Y?V @  ¬€N{?d À‡¾Û®ˆ @  ¬€O{?d ˆ¾˜!üÛ @  ¬€P{?d @ˆ¾°ë @  ¬€Q{?d €ˆ¾H«\ @  ¬€R{?d Àˆ¾Ê:‚ @  ¬€S{?d ‰¾›¹Êx @  ¬€T{?d @‰¾(ݦ @  ¬€U{?d €‰¾K32ÿ @  ¬€V{?d À‰¾É¢%! @  ¬€W{?d оúaŽ @  ¬ €X{?d @оxð™Ì @  ¬!€Y{?d €Š¾*ëv• @  ¬"€Z{?d Àо¨zaK @  ¬#€[{?d ‹¾ùù¸± @  ¬$€\{?d @‹¾{h¯o @  ¬%€]{?d €‹¾)s@6 @  ¬&€^{?d À‹¾«âWè @  ¬'€_{?d Œ¾Xkíu @  ¬(€`{?d @Œ¾Úúú« @  ¬)€a{?d €Œ¾ˆáò @  ¬*€b{?d ÀŒ¾ p, @  ¬+€c{?d ¾[óÛÖ @  ¬,€d{?d @¾ÙbÌ @  ¬-€e{?d €¾‹y#Q @  ¬.€f{?d À¾ è4 @  ¬/€g{?d ޾+-¸  @  ¬0€h{?d @޾©¼¯Ò @  ¬1€i{?d €Ž¾û§@‹ @  ¬2€j{?d À޾y6WU @  ¬3€k{?d ¾(µŽ¯ @  ¬4€l{?d @¾ª$™q @  ¬5€m{?d €¾ø?v( @  ¬6€n{?d À¾z®aö @  ¬7€o{?d ¾³­  @  ¬8€p{?d @¾1‘ºÔ @  ¬9€q{?d €¾cŠU @  ¬:€r{?d À¾áBS @  ¬;€s{?d ‘¾°˜›© @  ¬<€t{?d @‘¾2 Œw @  ¬=€u{?d €‘¾`c. @  ¬>€v{?d À‘¾âƒtð @  ¬?€w{?d ’¾GÙQ @  ¬@€x{?d @’¾ýÖÎ @  ¬A€y{?d €’¾¯Í!Ö @  ¬B€z{?d À’¾-\6 @  ¬C€{{?d “¾|ßïò @  ¬D€|{?d @“¾þNø, @  ¬E€}{?d €“¾¬Uu @  ¬F€~{?d À“¾.Ä« @  ¬G€{?d ”¾0Ûûµ @  ¬H€€{?d @”¾²Jìk @  ¬I€{?d €”¾àQ2 @  ¬J€‚{?d À”¾bÀì @  ¬K€ƒ{?d •¾3CÍ @  ¬L€„{?d @•¾±ÒÚÈ @  ¬M€…{?d €•¾ãÉ5‘ @  ¬N€†{?d À•¾aX"O @  ¬O€‡{?d –¾C®Ì @  ¬P€ˆ{?d @–¾Á ¹ @  ¬Q€‰{?d €–¾“VK @  ¬R€Š{?d À–¾†A• @  ¬S€‹{?d —¾@˜o @  ¬T€Œ{?d @—¾”± @  ¬U€{?d €—¾`è @  ¬V€Ž{?d À—¾w6 @  ¬W€{?d ˜¾Q‘‹e @  ¬X€{?d @˜¾Óœ» @  ¬Y€‘{?d €˜¾sâ @  ¬Z€’{?d À˜¾Šd< @  ¬[€“{?d ™¾R ½Æ @  ¬\€”{?d @™¾Иª @  ¬]€•{?d €™¾‚ƒEA @  ¬^€–{?d À™¾RŸ @  ¬_€—{?d š¾3Ñù¬ @  ¬`€˜{?d @š¾±@îr @  ¬a€™{?d €š¾ã[+ @  ¬b€š{?d Àš¾aÊõ @  ¬c€›{?d ›¾0IÏ @  ¬d€œ{?d @›¾²ØØÑ @  ¬e€{?d €›¾àÃ7ˆ @  ¬f€ž{?d À›¾bR V @  ¬g€Ÿ{?d œ¾‘ÛšË @  ¬h€ {?d @œ¾J @  ¬i€¡{?d €œ¾AQbL @  ¬j€¢{?d Àœ¾ÃÀu’ @  ¬k€£{?d ¾’C¬h @  ¬l€¤{?d @¾Ò»¶ @  ¬m€¥{?d €¾BÉTï @  ¬n€¦{?d À¾ÀXC1 @  ¬o€§{?d ž¾âϲ @  ¬p€¨{?d @ž¾` Øl @  ¬q€©{?d €ž¾275 @  ¬r€ª{?d Àž¾°† ë @  ¬s€«{?d Ÿ¾áù @  ¬t€¬{?d @Ÿ¾c”îÏ @  ¬u€­{?d €Ÿ¾1– @  ¬v€®{uР¾?d ÀŸ¾³H @  ¬w€¯{?d  ¾ÈåË @  ¬x°{?d X ¾JtÜ @  ¬y±{?d ˜ ¾o3› @  ¬z²{?d Ø ¾šþ$E @  ¬{³{?d ¡¾Ë}ý¿ @  ¬|´{?d X¡¾Iìêa @  ¬}µ{?d ˜¡¾÷8 @  ¬~¶{?d Ø¡¾™fæ @  ¬·{?d ¢¾çôv @  ¬€¸{?d X¢¾ee˜¨ @  ¬¹{?d ˜¢¾7~wñ @  ¬‚º{?d Ø¢¾µï`/ @  ¬ƒ»{?d £¾äl¹Õ @  ¬„¼{?d X£¾fý®  @  ¬…½{?d ˜£¾4æAR @  ¬†¾{?d Ø£¾¶wVŒ @  ¬‡¿{?d ¤¾µ®ù @  ¬ˆÀ{?d X¤¾7?îÞ @  ¬‰Á{?d ˜¤¾e$‡ @  ¬ŠÂ{?d ؤ¾çµY @  ¬‹Ã{?d ¥¾¶6Ï£ @  ¬ŒÄ{?d X¥¾4§Ø} @  ¬Å{?d ˜¥¾f¼7$ @  ¬ŽÆ{?d Ø¥¾ä- ú @  ¬Ç{?d ¦¾Æè¬y @  ¬È{?d X¦¾Dy»§ @  ¬‘É{?d ˜¦¾bTþ @  ¬’Ê{?d ئ¾”óC  @  ¬“Ë{?d §¾ÅpšÚ @  ¬”Ì{?d X§¾Gá @  ¬•Í{?d ˜§¾úb] @  ¬–Î{?d ا¾—kuƒ @  ¬—Ï{?d ¨¾Ôä‰Ð @  ¬˜Ð{?d X¨¾Vuž @  ¬™Ñ{?d ˜¨¾nqW @  ¬šÒ{?d ب¾†ÿf‰ @  ¬›Ó{?d ©¾×|¿s @  ¬œÔ{?d X©¾Uí¨­ @  ¬Õ{?d ˜©¾öGô @  ¬žÖ{?d Ø©¾…gP* @  ¬Ÿ×{?d ª¾¶¤û @  ¬ Ø{?d Xª¾45ìÇ @  ¬¡Ù{?d ˜ª¾f.ž @  ¬¢Ú{?d ت¾ä¿@ @  ¬£Û{?d «¾µ<ͺ @  ¬¤Ü{?d X«¾7­Úd @  ¬¥Ý{?d ˜«¾e¶5= @  ¬¦Þ{?d Ø«¾ç'"ã @  ¬§ß{?d ¬¾®˜~ @  ¬¨à{?d X¬¾–?  @  ¬©á{?d ˜¬¾Ä$`ù @  ¬ªâ{?d ج¾Fµw' @  ¬«ã{?d ­¾6®Ý @  ¬¬ä{?d X­¾•§¹ @  ¬­å{?d ˜­¾ǼVZ @  ¬®æ{?d Ø­¾E-A„ @  ¬¯ç{?d ®¾gèÍ @  ¬°è{?d X®¾åyÚÙ @  ¬±é{?d ˜®¾·b5€ @  ¬²ê{?d Ø®¾5ó"^ @  ¬³ë{?d ¯¾dpû¤ @  ¬´ì{?d X¯¾æáìz @  ¬µí{?d ˜¯¾´ú# @  ¬¶î{?d د¾6ký @  ¬·ï{?d °¾ÿÅØ @  ¬¸ð{?d X°¾}TÏß @  ¬¹ñ{?d ˜°¾/O † @  ¬ºò{?d ذ¾­Þ7X @  ¬»ó{?d ±¾ü]î¢ @  ¬¼ô{?d X±¾~Ìù| @  ¬½õ{?d ˜±¾,×% @  ¬¾ö{?d ر¾®Fû @  ¬¿÷{?d ²¾3‚¬Z @  ¬Àø{?d X²¾±»„ @  ¬Áù{?d ˜²¾ãTÝ @  ¬Âú{?d ز¾a™C @  ¬Ãû{?d ³¾0šù @  ¬Äü{?d X³¾²‹' @  ¬Åý{?d ˜³¾àb~ @  ¬Æþ{?d س¾bu  @  ¬Çÿ{?d ´¾?pä$ @  ¬È|?d X´¾½áóú @  ¬É|?d ˜´¾ïú£ @  ¬Ê|?d Ø´¾mk } @  ¬Ë|?d µ¾<èÒ‡ @  ¬Ì|?d Xµ¾¾yÅY @  ¬Í|?d ˜µ¾ìb* @  ¬Î|?d ص¾nó=Þ @  ¬Ï|?d ¶¾L6±] @  ¬Ð|?d X¶¾Χ¦ƒ @  ¬Ñ |?d ˜¶¾œ¼IÚ @  ¬Ò |?d ض¾-^ @  ¬Ó |?d ·¾O®‡þ @  ¬Ô |?d X·¾Í?  @  ¬Õ |?d ˜·¾Ÿ$y @  ¬Ö|?d Ø·¾µh§ @  ¬×|?d ¸¾^:”ô @  ¬Ø|?d X¸¾Ü«ƒ* @  ¬Ù|?d ˜¸¾ްls @  ¬Ú|?d ظ¾ !{­ @  ¬Û|?d ¹¾]¢¢W @  ¬Ü|?d X¹¾ß3µ‰ @  ¬Ý|?d ˜¹¾(ZÐ @  ¬Þ|?d ع¾¹M @  ¬ß|?d º¾|?d ðþÌ=,” @  ­%?|?d 0ľVÜb @  ­&@|?d pľƒÇ˼ @  ­'A|?d °Ä¾n{Ÿ @  ­(B|?d ðľÿlA @  ­)C|?d 0ž 5NV @  ­*D|?d pž‹¤Yˆ @  ­+E|?d °Å¾öM< @  ­,F|?d ðžžgZâ @  ­-G|?d 0ƾß±·û @  ­.H|?d pƾ]  % @  ­/I|?d °Æ¾l(.æ @  ­0J|?d ðƾî¹98 @  ­1K|?d 0Ǿzs/ @  ­2L|?d pǾøâ ñ @  ­3M|?d °Ç¾o°E @  ­4N|?d ðǾí!› @  ­5O|?d 0Ⱦ`¬² @  ­6P|?d pȾâ»l @  ­7Q|?d °È¾~$ O @  ­8R|?d ðȾüµ‘ @  ­9S|?d 0ɾh>† @  ­:T|?d pɾêî)X @  ­;U|?d °É¾}¼=ì @  ­<V|?d ðɾÿ-*2 @  ­=W|?d 0ʾ¾ûÇ+ @  ­>X|?d pʾd @  ­Ke|?d °Í¾ñ*Ð @  ­Lf|?d ð;‘`= @  ­Mg|?d 0ξжÐ @  ­Nh|?d pξR'ÇÉ @  ­Oi|?d °Î¾c/I  @  ­Pj|?d ðξá¾^Ô @  ­Qk|?d 0Ͼut|à @  ­Rl|?d pϾ÷åk @  ­Sm|?d °Ï¾`·© @  ­Tn|?d ðϾâ&hw @  ­Uo|?d 0оå:ûñ @  ­Vp|?d pоg«ì/ @  ­Wq|?d °Ð¾û\  @  ­Xr|?d ðоy“KÒ @  ­Ys|?d 0ѾíYiÅ @  ­Zt|?d pѾoÈ~ @  ­[u|?d °Ñ¾øšj¯ @  ­\v|?d ðѾz }q @  ­]w|?d 0Ò¾;Ýh @  ­^x|?d pÒ¾¹L‡¶ @  ­_y|?d °Ò¾™B.Å @  ­`z|?d ðÒ¾Ó9 @  ­a{|?d 0Ó¾  @  ­b||?d pÓ¾ ˆ Ò @  ­c}|?d °Ó¾šÚf @  ­d~|?d ðÓ¾K¸ @  ­e|?d 0Ô¾Èæ«Ü @  ­f€|?d pÔ¾Jw¼ @  ­g|?d °Ô¾ÖÞ ! @  ­h‚|?d ðÔ¾TOÿ @  ­iƒ|?d 0Õ¾À…9è @  ­j„|?d pÕ¾B.6 @  ­k…|?d °Õ¾ÕF:‚ @  ­l†|?d ðÕ¾W×-\ @  ­m‡|?d 0Ö¾ÀE @  ­nˆ|?d pÖ¾”×› @  ­o‰|?d °Ö¾¥˜YX @  ­pŠ|?d ðÖ¾' N† @  ­q‹|?d 0×¾³Ãl‘ @  ­rŒ|?d p×¾1R{O @  ­s|?d °×¾¦oû @  ­tŽ|?d ð×¾$‘x% @  ­u|?d 0ؾ©¬Û  @  ­v|?d pؾ+=ÌÒ @  ­w‘|?d °Ø¾·”|ñ @  ­x’|?d ðؾ5k/ @  ­y“|?d 0Ù¾¡ÏI8 @  ­z”|?d pÙ¾#^^æ @  ­{•|?d °Ù¾´ JR @  ­|–|?d ðÙ¾6]Œ @  ­}—|?d 0Ú¾wK°• @  ­~˜|?d pÚ¾õÚ§K @  ­™|?d °Ú¾˜…8› @  ­€š|?d ðÚ¾/E @  ­›|?d 0Û¾ŽÞ R @  ­‚œ|?d pÛ¾ OŒ @  ­ƒ|?d °Û¾›8 @  ­„ž|?d ðÛ¾Œæ @  ­…Ÿ|?d 0ܾ$·ü @  ­† |?d pܾ¦&ëß @  ­‡¡|?d °Ü¾:[ü @  ­ˆ¢|?d ðܾ¸L" @  ­‰£|?d 0ݾ,Ôn5 @  ­Š¤|?d pݾ®Eyë @  ­‹¥|?d °Ý¾9m_ @  ­Œ¦|?d ðݾ»†z @  ­§|?d 0Þ¾úP—˜ @  ­Ž¨|?d pÞ¾xÁ€F @  ­©|?d °Þ¾IÉ… @  ­ª|?d ðÞ¾ËX[ @  ­‘«|?d 0ß¾_’;L @  ­’¬|?d pß¾Ý,’ @  ­“­|?d uÐà¾/°ß¾JQ8& @  ­”®|?d ðß¾ÈÀ/ø @  ­•¯|?d Hà¾h¦^: @  ­–°|?d ˆà¾HS\Ä @  ­—±|?d Èà¾vžùÇ @  ­˜²|?d ᾦÖu/ @  ­™³|?d Há¾`ÅÌ @  ­š´|?d ˆá¾@0Îð @  ­›µ|?d Èá¾uÏd @  ­œ¶|?d â¾èBo¥ @  ­·|?d Hâ¾¶A5£ @  ­ž¸|?d ˆâ¾–´7] @  ­Ÿ¹|?d Èâ¾Þ‹ @  ­ º|?d ã¾Ä–æ @  ­¡»|?d Hã¾…¾Ç @  ­¢¼|?d ˆã¾"p¼9 @  ­£½|?d Èã¾F½­ @  ­¤¾|?d ä¾N¢ @  ­¥¿|?d Hä¾X¼Z… @  ­¦À|?d ˆä¾xIX{ @  ­§Á|?d Èä¾F„ýx @  ­¨Â|?d å¾–Ìq @  ­©Ã|?d Hå¾Pßȱ @  ­ªÄ|?d ˆå¾p*ÊO @  ­«Å|?d Èå¾EËÛ @  ­¬Æ|?d æ¾ØXk @  ­­Ç|?d H澆[1 @  ­®È|?d ˆæ¾¦®3â @  ­¯É|?d Èæ¾5¨ @  ­°Ê|?d ç¾åŠ$é @  ­±Ë|?d Hç¾#™È @  ­²Ì|?d ˆç¾lŸ6 @  ­³Í|?d Èç¾6Zž¢ @  ­´Î|?d è¾¥¿ @  ­µÏ|?d Hè¾9ö*U @  ­¶Ð|?d ˆè¾(« @  ­·Ñ|?d Èè¾'Ψ @  ­¸Ò|?d é¾÷†@ @  ­¹Ó|?d Hé¾1•¸a @  ­ºÔ|?d ˆé¾`ºŸ @  ­»Õ|?d Èé¾$V»  @  ­¼Ö|?d ê¾¹Ê @  ­½×|?d Hê¾çAÌ @  ­¾Ø|?d ˆê¾ÇäC2 @  ­¿Ù|?d Èê¾ë‰ùó @  ­ÀÚ|?d ë¾;Áu @  ­ÁÛ|?d Hë¾ýÒÌ: @  ­ÂÜ|?d ˆë¾Ý'ÎÄ @  ­ÃÝ|?d Èë¾èÏP @  ­ÄÞ|?d ì¾ñ_<_ @  ­Åß|?d Hì¾W»=i @  ­Æà|?d ˆì¾wN?— @  ­Çá|?d Èì¾Iƒš” @  ­Èâ|?d í¾™Ë| @  ­Éã|?d Hí¾_د] @  ­Êä|?d ˆí¾-­£ @  ­Ëå|?d Èí¾J¬7 @  ­Ìæ|?d î¾×_ ö @  ­Íç|?d H\Vð @  ­Îè|?d ˆî¾©©T @  ­Ïé|?d Èî¾:ÅÏí @  ­Ðê|?d ï¾êC @  ­Ñë|?d Hï¾,žú$ @  ­Òì|?d ˆï¾ køÚ @  ­Óí|?d Èï¾9]ùN @  ­Ôî|?d 𾇃Eü @  ­Õï|?d Hð¾¼Ð} @  ­Öð|?d ˆð¾œ%è @  ­×ñ|?d Èð¾¢èÚë @  ­Øò|?d ñ¾r V @  ­Ùó|?d Hñ¾´³ï" @  ­Úô|?d ˆñ¾”FíÜ @  ­Ûõ|?d Èñ¾¡pìH @  ­Üö|?d ò¾<4L‰ @  ­Ý÷|?d Hò¾b7 @  ­Þø|?d ˆò¾BÂq @  ­ßù|?d Èò¾À¨¨" @  ­àú|?d ó¾à$Ê @  ­áû|?d Hó¾Öóë @  ­âü|?d€ ˆó¾7Ah @  ®ý|?d Èó¾ã6!¨ @  ®þ|?d ô¾úxÒ§ @  ®ÿ|?d Hô¾ $<ó @  ®}?d ˆô¾+Ñ>  @  ®}?d Èô¾Û®Ät @  ®}?d õ¾ æHœ @  ®}?d Hõ¾G®Ç @  ®}?d ˆõ¾#²¬9 @  ® }?d Èõ¾ÓÍV@ @  ® }?d ö¾N‰ö @  ® }?d Hö¾ÕÃWj @  ® }?d ˆö¾õ6U” @  ®  }?d Èö¾I¯í @  ® }?d ÷¾Õ# @  ® }?d H÷¾pû¾ @  ® }?d ˆ÷¾Pôù@ @  ® }?d È÷¾ ‹9 @  ®}?d ø¾”t$ @  ®}?d Hø¾jnL# @  ®}?d ˆø¾J›NÝ @  ®}?d Èø¾ºä´¤ @  ®}?d ù¾j¬8L @  ®}?d Hù¾b Þ @  ®}?d ˆù¾BøÜé @  ®}?d Èù¾²‡& @  ®}?d ú¾/ÆQ @  ®}?d Hú¾´‰'º @  ®}?d ˆú¾”|%D @  ®}?d Èú¾dß= @  ®}?d û¾´KSÕ @  ®}?d Hû¾M¬Þ @  ® }?d ˆû¾ ¸®  @  ®!}?d Èû¾ÐÇTY @  ®"}?d ü¾ɉ§V @  ®#}?d Hü¾ª$] @  ®$ }?d ˆü¾ŠÑ_s @  ®%!}?d Èü¾z®¥  @  ®&"}?d ý¾ªæ)â @  ®'#}?d Hý¾¢GϹ @  ®($}?d ˆý¾‚²ÍG @  ®)%}?d Èý¾rÍ7> @  ®*&}?d þ¾ÿ @  ®+'}?d Hþ¾tÃ6 @  ®,(}?d ˆþ¾T64ê @  ®-)}?d Èþ¾¤IΓ @  ®.*}?d ÿ¾tB{ @  ®/+}?d Hÿ¾ÑšÀ @  ®0,}?d ˆÿ¾ñô˜> @  ®1uп-}?d Èÿ¾‹bG @  ®2.}?d ¿N?J¶ @  ®3/}?d `¿°%‰± @  ®40}?d  ¿ЋO @  ®51}?d à¿`¯q6 @  ®62}?d ¿°çýÞ @  ®73}?d `¿¸F… @  ®84}?d  ¿˜³{ @  ®95}?d à¿hÌã @  ®:6}?d ¿õˆCà @  ®;7}?d `¿nÂâ( @  ®<8}?d  ¿N7àÖ @  ®=9}?d ࿾H¯ @  ®>:}?d ¿n–G @  ®?;}?d `¿toÞ @  ®@<}?d  ¿Tôm  @  ®A=}?d ࿤‹—Y @  ®B>}?d ¿½ÅdV @  ®C?}?d `¿.8‹œ @  ®D@}?d  ¿͉b @  ®EA}?d à¿þ²s @  ®FB}?d ¿.úÿó @  ®GC}?d `¿&[¨ @  ®HD}?d  ¿®V @  ®IE}?d à¿öÑá/ @  ®JF}?d ¿k•Aî @  ®KG}?d `¿ðßà @  ®LH}?d  ¿Ð*âû @  ®MI}?d à¿ U‚ @  ®NJ}?d ¿ð”j @  ®OK}?d `¿ULÑ @  ®PL}?d  ¿uèN/ @  ®QM}?d à¿…—´V @  ®RN}?d ¿±h8K @  ®SO}?d `¿OrûL @  ®TP}?d  ¿o‡ù² @  ®UQ}?d ࿟øË @  ®VR}?d ¿O°# @  ®WS}?d ` ¿Gix @  ®XT}?d   ¿gäk† @  ®YU}?d à ¿—›‘ÿ @  ®ZV}?d ¿ ß1> @  ®[W}?d ` ¿‘•Õ @  ®\X}?d   ¿±`’+ @  ®]Y}?d à ¿AhR @  ®^Z}?d ¿‘Wäº @  ®_[}?d ` ¿%Q± @  ®`\}?d   ¿¤O @  ®a]}?d à ¿õÛã6 @  ®b^}?d ¿ì•9 @  ®c_}?d ` ¿8êâ @  ®d`}?d   ¿¯Íè @  ®ea}?d à ¿_²e @  ®fb}?d ¿úž @  ®gc}?d ` ¿‡[xÖ @  ®hd}?d   ¿§®z( @  ®ie}?d à ¿WÑ€Q @  ®jf}?d ¿Ê•  @  ®kg}?d `¿Qß{ @  ®lh}?d  ¿q*ƒ… @  ®mi}?d à¿Uyü @  ®nj}?d ¿Qõ @  ®ok}?d `¿ô-¯ @  ®pl}?d  ¿Ôè/Q @  ®qm}?d à¿$—Õ( @  ®rn}?d ¿šIiš @  ®so}?d `¿dSª @  ®tp}?d  ¿D¦¨c @  ®uq}?d à¿´ÙR @  ®vr}?d ¿d‘Þò @  ®ws}?d `¿l08© @  ®xt}?d  ¿LÅ:W @  ®yu}?d ࿼ºÀ. @  ®zv}?d ¿!þ`ï @  ®{w}?d `¿º´Á @  ®|x}?d  ¿šAÃú @  ®}y}?d à¿j>9ƒ @  ®~z}?d ¿ºvµk @  ®{}?d `¿C!|à @  ®€|}?d  ¿cÔ~= @  ®}}?d à¿“«„D @  ®‚~}?d ¿ŠåwK @  ®ƒ}?d `¿ÞÌ @  ®„€}?d  ¿$+Îí @  ®…}?d à¿ÔT4” @  ®†‚}?d ¿¸| @  ®‡ƒ}?d `¿ ½^' @  ®ˆ„}?d  ¿,H\Ù @  ®‰…}?d à¿Ü7¦  @  ®Š†}?d ¿Asa @  ®‹‡}?d `¿Ú9§Š @  ®Œˆ}?d  ¿úÌ¥t @  ®‰}?d à¿ ³_  @  ®ŽŠ}?d ¿ÚûÓå @  ®‹}?d `¿û ^ @  ®Œ}?d  ¿_   @  ®‘}?d ࿯qóÙ @  ®’Ž}?d ¿›ŽÄ @  ®“}?d `¿e”¼Ã @  ®”}?d  ¿Ea¾= @  ®•‘}?d ࿵DD @  ®–’}?d ¿eVȬ @  ®—“}?d `¿m÷.÷ @  ®˜”}?d  ¿M,  @  ®™•}?d ࿽}Öp @  ®š–}?d ¿ 9v± @  ®›—}?d `¿»s×Z @  ®œ˜}?d  ¿›†Õ¤ @  ®™}?d à¿kù/Ý @  ®žš}?d ¿»±£5 @  ®Ÿ›}?d `¿·\> @  ® œ}?d  ¿/B^À @  ®¡}?d à¿ß=¤¹ @  ®¢ž}?d ¿ÆsW¶ @  ®£Ÿ}?d `¿¥Þ­m @  ®¤ }?d  ¿…+¯“ @  ®¥¡}?d à¿uTUê @  ®¦¢}?d ¿¥Ù @  ®§£}?d `¿­½?Y @  ®¨¤}?d  ¿H=§ @  ®©¥}?d à¿}7ÇÞ @  ®ª¦}?d ¿àsg @  ®«§}?d `¿{9Æô @  ®¬¨}?d  ¿[ÌÄ  @  ®­©}?d à¿«³>s @  ®®ª}?d ¿{û²› @  ®¯«}?d `¿Þûj  @  ®°¬}?d  ¿þhÞuÐ ¿ @  ®±­}?d à¿q’§ @  ®²®}?d 8 ¿zLÁ @  ®³¯}?d x ¿`Æ @  ®´°}?d ¸ ¿¡•8 @  ®µ±}?d ø ¿QêwA @  ®¶²}?d 8!¿¢û© @  ®·³}?d x!¿‰ò @  ®¸´}?d ¸!¿©ö  @  ®¹µ}?d ø!¿Y‰åu @  ®º¶}?d 8"¿ÄÍE´ @  ®»·}?d x"¿_‡ä_ @  ®¼¸}?d ¸"¿ræ¡ @  ®½¹}?d ø"¿ Ø @  ®¾º}?d 8#¿_E0 @  ®¿»}?d x#¿EDi© @  ®À¼}?d ¸#¿e±kW @  ®Á½}?d ø#¿•Α. @  ®Â¾}?d 8$¿Œ€b! @  ®Ã¿}?d x$¿}ë @  ®ÄÀ}?d ¸$¿?ˆ @  ®ÅÁ}?d ø$¿Ï÷ul @  ®ÆÂ}?d 8%¿¿ù„ @  ®ÇÃ}?d x%¿ß @  ®ÈÄ}?d ¸%¿7ë! @  ®ÉÅ}?d ø%¿Ç”çX @  ®ÊÆ}?d 8&¿ZÐG™ @  ®ËÇ}?d x&¿Ášær @  ®ÌÈ}?d ¸&¿áoäŒ @  ®ÍÉ}?d ø&¿õ @  ®ÎÊ}?d 8'¿ÁX’ @  ®ÏË}?d x'¿dXJ¦ @  ®ÐÌ}?d ¸'¿D­HX @  ®ÑÍ}?d ø'¿´Ò²! @  ®ÒÎ}?d 8(¿€->< @  ®ÓÏ}?d x(¿~7ý; @  ®ÔÐ}?d ¸(¿^ÂÿÅ @  ®ÕÑ}?d ø(¿®½¼ @  ®ÖÒ}?d 8)¿~õ‰T @  ®×Ó}?d x)¿vTo @  ®ØÔ}?d ¸)¿V¡mñ @  ®ÙÕ}?d ø)¿¦Þ—ˆ @  ®ÚÖ}?d 8*¿;š7I @  ®Û×}?d x*¿ Ð–¢ @  ®ÜØ}?d ¸*¿€%”\ @  ®ÝÙ}?d ø*¿pZn% @  ®ÞÚ}?d 8+¿ âÍ @  ®ßÛ}?d x+¿Æ @  ®àÜ}?d ¸+¿4á8 @  ®áÝ}?d ø+¿ÄžåA @  ®âÞ}?d€ 8,¿© è @  ¯ß}?d x,¿+ÿ¸ @  ¯à}?d ¸,¿2Íf1 @  ¯ á}?d ø,¿ûg¥ @  ¯ â}?d 8-¿׳ëM @  ¯ ã}?d x-¿ Rl @  ¯ ä}?d ¸-¿1UP’ @  ¯ å}?d ø-¿˜õ‘ @  ¯ æ}?d 8.¿’ÜUP @  ¯ ç}?d x.¿ÌßV @  ¯ è}?d ¸.¿ì* ¨ @  ¯ é}?d ø.¿Ù < @  ¯ ê}?d 8/¿ T€Ô @  ¯ ë}?d x/¿ÏG9õ @  ¯ ì}?d ¸/¿ï²;  @  ¯ í}?d ø/¿|Þ è @  ¯ î}?d 80¿ÂZ @  ¯ ï}?d x0¿ùS$° @  ¯ ð}?d ¸0¿Ù¦&N @  ¯ ñ}?d ø0¿ì'Ú @  ¯ ò}?d 81¿<Ø«2 @  ¯ ó}?d x1¿úË @  ¯ ô}?d ¸1¿Ú>í @  ¯ õ}?d ø1¿äóµî @  ¯ ö}?d 82¿y·/ @  ¯ ÷}?d x2¿'´O) @  ¯ ø}?d ¸2¿AM× @  ¯ ù}?d ø2¿2wLC @  ¯ ú}?d 83¿â?À« @  ¯ û}?d x3¿$,yŠ @  ¯ ü}?d ¸3¿Ù{t @  ¯ ý}?d ø3¿†³Ç' @  ¯ þ}?d 84¿Ÿý4( @  ¯! ÿ}?d x4¿Ê´ @  ¯" ~?d ¸4¿9?J @  ¯# ~?d ø4¿ Þ @  ¯$ ~?d 85¿ÜA›6 @  ¯% ~?d x5¿R" @  ¯& ~?d ¸5¿:§ é @  ¯' ~?d ø5¿j…ê @  ¯( ~?d 86¿™.%+ @  ¯) ~?d x6¿Ç-- @  ¯* ~?d ¸6¿çØ}Ó @  ¯+  ~?d ø6¿Òî|G @  ¯,  ~?d 87¿¦ð¯ @  ¯-  ~?d x7¿ĵIŽ @  ¯.  ~?d ¸7¿ä@Kp @  ¯/  ~?d ø7¿w,Г @  ¯0 ~?d 88¿CÓ\Ž @  ¯1 ~?d x8¿x€dd @  ¯2 ~?d ¸8¿Xufš @  ¯3 ~?d ø8¿mCg @  ¯4 ~?d 89¿½ ëæ @  ¯5 ~?d x9¿{RÇ @  ¯6 ~?d ¸9¿[íP9 @  ¯7 ~?d ø9¿e õ: @  ¯8 ~?d 8:¿ødUû @  ¯9 ~?d x:¿¦gý @  ¯: ~?d ¸:¿†’  @  ¯; ~?d ø:¿³¤ — @  ¯< ~?d 8;¿cì€ @  ¯= ~?d x;¿¥ÿ9^ @  ¯> ~?d ¸;¿… ;  @  ¯? ~?d ø;¿©ga @  ¯@ ~?d 8<¿°)rn @  ¯A ~?d x<¿ÍsX @  ¯B  ~?d ¸<¿68q¦ @  ¯C !~?d ø<¿p2 @  ¯D "~?d 8=¿ÓFüÚ @  ¯E #~?d x=¿UEû @  ¯F $~?d ¸=¿5 G @  ¯G %~?d ø=¿ mâ @  ¯H &~?d 8>¿–)BÇ @  ¯I '~?d x>¿È*Á @  ¯J (~?d ¸>¿èß? @  ¯K )~?d ø>¿Ýé« @  ¯L *~?d 8?¿ ¡—C @  ¯M +~?d x?¿˲.b @  ¯N ,~?duÐ@¿7 ¸?¿ëG,œ @  ¯O -~?d ø?¿x+· @  ¯P .~?d P@¿»‡ C @  ¯Q /~?d @¿"° ‰ @  ¯R 0~?d Ð@¿ !7W @  ¯S 1~?d A¿Çέõ @  ¯T 2~?d PA¿E_º+ @  ¯U 3~?d A¿!(* @  ¯V 4~?d ÐA¿£¹ô @  ¯W 5~?d B¿‚¡è @  ¯X 6~?d PB¿06 @  ¯Y 7~?d B¿üWK @  ¯Z 8~?d ÐB¿~Æ\Î @  ¯[ 9~?d C¿)Æl @  ¯\ :~?d PC¿›¸Ñ² @  ¯] ;~?d C¿ÿÏ}³ @  ¯^ <~?d ÐC¿}^jm @  ¯_ =~?d D¿dë2ï @  ¯` >~?d PD¿æz%1 @  ¯a ?~?d D¿ª$6 @  ¯b @~?d ÐD¿;3è @  ¯c A~?d E¿÷Ô©J @  ¯d B~?d PE¿uE¾” @  ¯e C~?d E¿2• @  ¯f D~?d ÐE¿“£K @  ¯g E~?d F¿²»W @  ¯h F~?d PF¿0*‰ @  ¯i G~?d F¿ÌMO¯ @  ¯j H~?d ÐF¿NÜXq @  ¯k I~?d G¿)3ÂÓ @  ¯l J~?d PG¿«¢Õ  @  ¯m K~?d G¿ÏÕy  @  ¯n L~?d ÐG¿MDnÒ @  ¯o M~?d H¿hFnò @  ¯p N~?d PH¿ê×y, @  ¯q O~?d H¿sàTæ @  ¯r P~?d ÐH¿ñqC8 @  ¯s Q~?d I¿–žÙš @  ¯t R~?d PI¿ÎD @  ¯u S~?d I¿pxbE @  ¯v T~?d ÐI¿òéu› @  ¯w U~?d J¿Óñg‡ @  ¯x V~?d PJ¿Q`pY @  ¯y W~?d J¿­? @  ¯z X~?d ÐJ¿/–(¡ @  ¯{ Y~?d K¿Hy² @  ¯| Z~?d PK¿Êè¥Ý @  ¯} [~?d K¿®Ÿ Ü @  ¯~ \~?d ÐK¿, @  ¯ ]~?d L¿xêp# @  ¯€ ^~?d PL¿ú{gý @  ¯ _~?d L¿þûsë @  ¯‚ `~?d ÐL¿|jd5 @  ¯ƒ a~?d M¿…þ— @  ¯„ b~?d PM¿™éI @  ¯… c~?d M¿ýcEH @  ¯† d~?d ÐM¿òR– @  ¯‡ e~?d N¿^ê@Š @  ¯ˆ f~?d PN¿Ü{WT @  ¯‰ g~?d N¿ r @  ¯Š h~?d ÐN¿¢¬ @  ¯‹ i~?d O¿Åb• @  ¯Œ j~?d PO¿Gó‚Ð @  ¯ k~?d O¿#„.Ñ @  ¯Ž l~?d ÐO¿¡9 @  ¯ m~?d P¿6 € @  ¯ n~?d PP¿Œ§^ @  ¯‘ o~?d P¿3” @  ¯’ p~?d ÐP¿—$J @  ¯“ q~?d Q¿ðî¾è @  ¯” r~?d PQ¿r©6 @  ¯• s~?d Q¿7 @  ¯– t~?d ÐQ¿”™é @  ¯— u~?d R¿µõ @  ¯˜ v~?d PR¿7+ @  ¯™ w~?d R¿ËwX  @  ¯š x~?d ÐR¿IæOÓ @  ¯› y~?d S¿. Õq @  ¯œ z~?d PS¿¬˜Â¯ @  ¯ {~?d S¿Èïn® @  ¯ž |~?d ÐS¿J~yp @  ¯Ÿ }~?d T¿SË!ò @  ¯  ~~?d PT¿ÑZ6, @  ¯¡ ~?d T¿8Lc¹ @  ¯¢ €~?d ÐT¿ºÝtg @  ¯£ ~?d U¿Ý2îÅ @  ¯¤ ‚~?d PU¿_£ù @  ¯¥ ƒ~?d U¿;ÔU @  ¯¦ „~?d ÐU¿¹EBÄ @  ¯§ …~?d V¿˜]PØ @  ¯¨ †~?d PV¿ÌG @  ¯© ‡~?d V¿æ«  @  ¯ª ˆ~?d ÐV¿d:þ @  ¯« ‰~?d W¿Õ…\ @  ¯¬ Š~?d PW¿D’‚ @  ¯­ ‹~?d W¿å3>ƒ @  ¯® Œ~?d ÐW¿g¢)] @  ¯¯ ~?d X¿B )} @  ¯° Ž~?d PX¿À1>£ @  ¯± ~?d X¿Yi @  ¯² ~?d ÐX¿Û—· @  ¯³ ‘~?d Y¿¼xž @  ¯´ ’~?d PY¿>é‰Ë @  ¯µ “~?d Y¿Zž%Ê @  ¯¶ ”~?d ÐY¿Ø2 @  ¯· •~?d Z¿ù  @  ¯¸ –~?d PZ¿{†7Ö @  ¯¹ —~?d Z¿‡áxð @  ¯º ˜~?d ÐZ¿po. @  ¯» ™~?d [¿bŸõŒ @  ¯¼ š~?d P[¿àâR @  ¯½ ›~?d [¿„yNS @  ¯¾ œ~?d Ð[¿èY @  ¯¿ ~?d \¿±Z @  ¯À ž~?d P\¿3ËC @  ¯Á Ÿ~?d \¿7KU @  ¯  ~?d Ð\¿µÚ‹ @  ¯à ¡~?d ]¿Ò5‰) @  ¯Ä ¢~?d P]¿P¤ž÷ @  ¯Å £~?d ]¿4Ó2ö @  ¯Æ ¤~?d Ð]¿¶B%( @  ¯Ç ¥~?d ^¿—Z74 @  ¯È ¦~?d P^¿Ë ê @  ¯É §~?d ^¿é¬oÌ @  ¯Ê ¨~?d Ð^¿k=x @  ¯Ë ©~?d _¿ Òâ° @  ¯Ì ª~?d P_¿ŽCõn @  ¯Í «~?d _¿ê4Yo @  ¯uÐ`¿Î ¬~?d Ð_¿“Ëu± @  ¯Ï­~?d (`¿<ÎL @  ¯Ð®~?d h`¿¾_[Ê @  ¯Ñ¯~?d ¨`¿'hv @  ¯Ò°~?d è`¿¥ùaÞ @  ¯Ó±~?d (a¿Âû| @  ¯Ô²~?d ha¿@‡ì¢ @  ¯Õ³~?d ¨a¿$ð@£ @  ¯Ö´~?d èa¿¦aW} @  ¯×µ~?d (b¿‡yEa @  ¯Ø¶~?d hb¿èR¿ @  ¯Ù·~?d ¨b¿ù™ @  ¯Ú¸~?d èb¿{ G @  ¯Û¹~?d (c¿ñå @  ¯Üº~?d hc¿ž`‡; @  ¯Ý»~?d ¨c¿ú+: @  ¯Þ¼~?d èc¿x†<ä @  ¯ß½~?d (d¿a3df @  ¯à¾~?d hd¿ã¢s¸ @  ¯á¿~?d ¨d¿rr¿ @  ¯âÀ~?d€ èd¿þ¿‰ @  °Á~?d (e¿x[ @  °Â~?d he¿ú€LÚ @  °Ã~?d ¨e¿[¾6 @  °Ä~?d èe¿Ù/ è @  °Å~?d (f¿6…AŽ @  °Æ~?d hf¿´VP @  °Ç~?d ¨f¿†ÁF  @  °È~?d èf¿PQÒ @  ° É~?d (g¿¦ö0 @  ° Ê~?d hg¿$g'C @  ° Ë~?d ¨g¿…Yp¯ @  ° Ì~?d èg¿Ègq @  ° Í~?d (h¿AÙË @  °Î~?d hh¿ÃH @  °Ï~?d ¨h¿9l]E @  °Ð~?d èh¿»ýJ› @  °Ñ~?d (i¿[+Ô @  °Ò~?d hi¿›Ê<  @  °Ó~?d ¨i¿:ôkæ @  °Ô~?d èi¿¸e|8 @  °Õ~?d (j¿WÏ1^ @  °Ö~?d hj¿Õ^&€ @  °×~?d ¨j¿ç‹6Ü @  °Ø~?d èj¿e! @  °Ù~?d (k¿Ǽ@M @  °Ú~?d hk¿E-W“ @  °Û~?d ¨k¿ä @  °Ü~?d èk¿f‚¡ @  °Ý~?d (l¿ "  @  °Þ~?d hl¿³× @  °ß~?d ¨l¿ù&Lë @  ° à~?d èl¿{·[5 @  °!á~?d (m¿Ù:z @  °"â~?d hm¿[€-¤ @  °#ã~?d ¨m¿ú¾zH @  °$ä~?d èm¿x/m– @  °%å~?d (n¿—… ð @  °&æ~?d hn¿7. @  °'ç~?d ¨n¿'Á'r @  °(è~?d èn¿¥P0¬ @  °)é~?d (o¿öQã @  °*ê~?d ho¿…gF= @  °+ë~?d ¨o¿$YÑ @  °,ì~?d èo¿¦È @  °-í~?d (p¿jøW @  °.î~?d hp¿èi@Ä @  °/ï~?d ¨p¿M ” @  °0ð~?d èp¿ÜJ @  °1ñ~?d (q¿2zz @  °2ò~?d hq¿°ëmÛ @  °3ó~?d ¨q¿Õ:7 @  °4ô~?d èq¿“D-é @  °5õ~?d (r¿|î` @  °6ö~?d hr¿þwQ @  °7÷~?d ¨r¿̪g  @  °8ø~?d èr¿N;pÓ @  °9ù~?d (s¿ìœ @  °:ú~?d hs¿n B @  °;û~?d ¨s¿Ï2Q® @  °<ü~?d ès¿M£Fp @  °=ý~?d (t¿&XØ @  °>þ~?d ht¿¤’O @  °?ÿ~?d ¨t¿îñ' @  °@?d èt¿l`ù @  °A?d (u¿ÎÆy¶ @  °B?d hu¿LWnh @  °C?d ¨u¿íi9„ @  °D?d èu¿oø.Z @  °E?d (v¿€Rc< @  °F?d hv¿Ãtâ @  °G?d ¨v¿0d¾ @  °H?d èv¿²‡s` @  °I ?d (w¿!/ @  °J ?d hw¿’°ñ @  °K ?d ¨w¿3ŽR @  °L ?d èw¿±Eà @  °M ?d (x¿÷$y @  °N?d hx¿uŸ3§ @  °O?d ¨x¿»÷ @  °P?d èx¿ *h) @  °Q?d (y¿¯Œ f @  °R?d hy¿-¸ @  °S?d ¨y¿Œ#IT @  °T?d èy¿²^Š @  °U?d (z¿áì @  °V?d hz¿c‰2 @  °W?d ¨z¿Q\n @  °X?d èz¿ÓͰ @  °Y?d ({¿qkbÿ @  °Z?d h{¿óúu! @  °[?d ¨{¿RÄ"Í @  °\?d è{¿ÐU5 @  °]?d (|¿»õ+» @  °^?d h|¿9d?d €„¿¢èÁ‡ @  °??d À„¿Ë¥) @  °€@?d …¿P)Á @  °A?d @…¿ë/Ó¸ @  °‚B?d €…¿ËÚÑF @  °ƒC?d À…¿È€“Š @  °„D?d †¿UÄ3K @  °…E?d @†¿¥»É2 @  °†F?d €†¿…NËÌ @  °‡G?d À†¿ÿΰ @  °ˆH?d ‡¿Å·BX @  °‰I?d @‡¿5ȸ! @  °ŠJ?d €‡¿=ºß @  °‹K?d À‡¿gø @  °ŒL?d ˆ¿"˜t @  °M?d @ˆ¿ë R¢ @  °Ž N?d €ˆ¿ËÕP\ @  ° O?d Àˆ¿“• , @  ° P?d ‰¿CÝ…Ä @  °‘ Q?d @‰¿³¢½ @  °’ R?d €‰¿“W}C @  °“ S?d À‰¿ ? @  °” T?d Š¿ IŸN @  °• U?d @Š¿ý6e7 @  °– V?d €Š¿ÝÃgÉ @  °— W?d ÀŠ¿Mrbµ @  °˜ X?d ‹¿:î] @  °™ Y?d @‹¿T‚Èñ @  °šZ?d €‹¿twÊ @  °›[?d À‹¿w-ˆÃ @  °œ\?d Œ¿nc{Ì @  °]?d @Œ¿žµ @  °ž^?d €Œ¿¾éƒK @  °Ÿ_?d ÀŒ¿jÄW @  ° `?d ¿ºPH¿ @  °¡a?d @¿J/²Æ @  °¢b?d €¿jÚ°8 @  °£c?d À¿i€òô @  °¤d?d Ž¿ôÄR5 @  °¥e?d @Ž¿»¨L @  °¦f?d €Ž¿$Nª² @  °§g?d ÀŽ¿´ÿ¯Î @  °¨h?d ¿d·#& @  °©i?d @¿”ÈÙ_ @  °ªj?d €¿´=Û¡ @  °«k?d À¿·g™m @  °¬l?d ¿ ¹%ß @  °­m?d @¿ùÆß¦ @  °®n?d €¿Ù3ÝX @  °¯o?d À¿s„( @  °°p?d ‘¿Q;À @  °±q?d @‘¿¡Dò¹ @  °²r?d €‘¿±ðG @  °³s?d À‘¿‚벋 @  °´t?d ’¿¯J @  °µu?d @’¿ïÐè3 @  °¶v?d €’¿Ï%êÍ @  °·w?d À’¿_”ï± @  °¸x?d “¿ÜcY @  °¹y?d @“¿£™  @  °ºz?d €“¿_V›Þ @  °»{?d À“¿\ Ù @  °¼|?d ”¿EB* @  °½}?d @”¿µ=Ðd @  °¾~?d €”¿•ÈÒš @  °¿?d À”¿¨Ò— @  °À€?d •¿Òà^ @  °Á?d @•¿"Ÿ¤ @  °Â‚?d €•¿j¦ø @  °Ãƒ?d À•¿0ä4 @  °Ä„?d –¿œtDõ @  °Å…?d @–¿l ¾Œ @  °Æ†?d €–¿Lþ¼r @  °Ç‡?d À–¿ÜO¹ @  °Èˆ?d —¿ 5æ @  °É‰?d @—¿üxÏŸ @  °ÊŠ?d €—¿ÜÍa @  °Ë‹?d À—¿ß×­ @  °ÌŒ?d ˜¿ë(° @  °Í?d @˜¿WùÉ @  °ÎŽ?d €˜¿;¢û7 @  °Ï?d À˜¿câ¢G @  °Ð?d ™¿³ª.¯ @  °Ñ‘?d @™¿CÕÔÖ @  °Ò’?d €™¿c Ö( @  °Ó“?d À™¿`z”ä @  °Ô”?d š¿ý>4% @  °Õ•?d @š¿ AÎ\ @  °Ö–?d €š¿-´Ì¢ @  °×—?d Àš¿½ÉÞ @  °Ø˜?d ›¿mME6 @  °Ù™?d @›¿2¿O @  °Úš?d €›¿½Ç½± @  °Û›?d À›¿¾ÿ} @  °Üœ?d œ¿§Ó r @  °Ý?d @œ¿W¬ö  @  °Þž?d €œ¿wYôõ @  °ßŸ?d Àœ¿£¨³é @  °à ?d ¿sà? @  °á¡?d @¿ƒŸÅx @  °â¢?d€ €¿×©Û  @  ±£?d À¿5²ÑÅ @  ±¤?d ž¿¨öq @  ±¥?d @ž¿Àp @  ±¦?d €ž¿½5rn @  ±§?d Àž¿ã6(h @  ±¨?d Ÿ¿3~¤€ @  ±©?d @Ÿ¿ ³ƒ @  ±ª?d €Ÿ¿-F} @  ± «uР¿?d ÀŸ¿ëUº\ @  ± ¬?d  ¿£™¸ï @  ± ­?d X ¿–¯¹{ @  ± ®?d ˜ ¿¶Z»… @  ± ¯?d Ø ¿ ƒo @  ± °?d ¡¿]A‡ @  ± ±?d X¡¿Î-”d @  ± ²?d ˜¡¿îØ–š @  ± ³?d Ø¡¿(Ë/» @  ± ´?d ¢¿µz @  ± µ?d X¢¿€¹Žî @  ± ¶?d ˜¢¿ LŒ @  ± ·?d Ø¢¿þOÖ @  ± ¸?d £¿.Zþ @  ± ¹?d X£¿Êÿý @  ± º?d ˜£¿0?ý @  ± »?d Ø£¿ö,D" @  ± ¼?d ¤¿ïb·- @  ± ½?d X¤¿ÚT¶¹ @  ± ¾?d ˜¤¿ú¡´G @  ± ¿?d ؤ¿¬ ` @  ± À?d ¥¿|],ˆ @  ± Á?d X¥¿þ7Û @  ± Â?d ˜¥¿ÞÂ’% @  ±! Ã?d Ø¥¿Ñ+ @  ±" Ä?d ¦¿…•‹Å @  ±# Å?d X¦¿°£ŠQ @  ±$ Æ?d ˜¦¿Vˆ¯ @  ±% Ç?d ئ¿ÎUÒ© @  ±& È?d §¿^A @  ±' É?d X§¿ ÐûB @  ±( Ê?d ˜§¿%ù¼ @  ±) Ë?d ا¿Æ6@ @  ±* Ì?d ¨¿òÉÌ€ @  ±+ Í?d X¨¿ÇÿÍ @  ±, Î?d ˜¨¿ç Ïê @  ±- Ï?d ب¿ÜY÷ @  ±. Ð?d ©¿ {è @  ±/ Ñ?d X©¿Ÿ}à  @  ±0 Ò?d ˜©¿¿ˆâõ @  ±1 Ó?d Ø©¿y›[Ô @  ±2 Ô?d ª¿äßû @  ±3 Õ?d Xª¿Ñéú @  ±4 Ö?d ˜ª¿ñø @  ±5 ×?d ت¿¯¢y @  ±6 Ø?d «¿W.‘ @  ±7 Ù?d X«¿Aš‹’ @  ±8 Ú?d ˜«¿ao‰l @  ±9 Û?d Ø«¿§|0M @  ±: Ü?d ¬¿¾2ÃB @  ±; Ý?d X¬¿‹ÂÖ @  ±< Þ?d ˜¬¿«ñÀ( @  ±= ß?d ج¿ Á @  ±> à?d ­¿Ý]Mö @  ±? á?d X­¿ñ0÷7 @  ±@ â?d ˜­¿ÑÅõÉ @  ±A ã?d Ø­¿ÖLè @  ±B ä?d ®¿Š’ì) @  ±C å?d X®¿¿¤í½ @  ±D æ?d ˜®¿ŸQïC @  ±E ç?d Ø®¿ÁRµE @  ±F è?d ¯¿9­ @  ±G é?d X¯¿/ל® @  ±H ê?d ˜¯¿"žP @  ±I ë?d د¿É1'q @  ±J ì?d °¿wï›Ã @  ±K í?d X°¿BÙšW @  ±L î?d ˜°¿b,˜© @  ±M ï?d ذ¿Y C @  ±N ð?d ±¿‰7,« @  ±O ñ?d X±¿[·H @  ±P ò?d ˜±¿:®µ¶ @  ±Q ó?d ر¿ü½ — @  ±R ô?d ²¿aù¬V @  ±S õ?d X²¿TÏ­Â @  ±T ö?d ˜²¿t:¯< @  ±U ÷?d ز¿*9õ: @  ±V ø?d ³¿úqyÒ @  ±W ù?d X³¿ļÜÑ @  ±X ú?d ˜³¿äIÞ/ @  ±Y û?d س¿"Zg @  ±Z ü?d ´¿;” @  ±[ ý?d X´¿"•• @  ±\ þ?d ˜´¿.×—k @  ±] ÿ?d Ø´¿¨0» @  ±^ €?d µ¿xxˆS @  ±_ €?d Xµ¿ú4 @  ±` €?d ˜µ¿Úç6þ @  ±a €?d ص¿ôß @  ±b €?d ¶¿°/ @  ±c €?d X¶¿´†.Š @  ±d €?d ˜¶¿”s,t @  ±e €?d ض¿Êpvr @  ±f €?d ·¿8úš @  ±g  €?d X·¿$õ_™ @  ±h  €?d ˜·¿]g @  ±i  €?d Ø·¿ÂäF @  ±j  €?d ¸¿öìh[ @  ±k  €?d X¸¿ÃÚiÏ @  ±l €?d ˜¸¿ã/k1 @  ±m €?d ظ¿Ø|SÛ @  ±n €?d ¹¿4ß3 @  ±o €?d X¹¿›XDÐ @  ±p €?d ˜¹¿»­F. @  ±q €?d ع¿}¾ÿ @  ±r €?d º¿àú_Î @  ±s €?d Xº¿ÕÌ^Z @  ±t €?d ˜º¿õ9\¤ @  ±u €?d غ¿«:¢ @  ±v €?d »¿{rŠJ @  ±w €?d X»¿E¿/I @  ±x €?d ˜»¿eJ-· @  ±y €?d Ø»¿£Y”– @  ±z €?d ¼¿ºg™ @  ±{ €?d X¼¿!f  @  ±| €?d ˜¼¿¯Ôdó @  ±} €?d ؼ¿ 0eÅ @  ±~  €?d ½¿Ùxé- @  ± !€?d X½¿CcÝ @  ±€ "€?d ˜½¿6¶a# @  ± #€?d ؽ¿ð¥Ø @  ±‚ $€?d ¾¿máxà @  ±ƒ %€?d X¾¿X×yW @  ±„ &€?d ˜¾¿x"{© @  ±… '€?d ؾ¿&!!¯ @  ±† (€?d ¿¿öi­G @  ±‡ )€?d X¿¿ȤD @  ±ˆ *€?d ˜¿¿èQ º @uÐÀ¿  ±‰ +€?d Ø¿¿…oN @  ±Š,€?d 0À¿su> @  ±‹-€?d pÀ¿FC?ˆ @  ±Œ.€?d °À¿f¶=v @  ±/€?d ðÀ¿]åœ @  ±Ž0€?d 0Á¿­‰t @  ±1€?d pÁ¿Á— @  ±2€?d °Á¿>4i @  ±‘3€?d ðÁ¿ø'©H @  ±’4€?d 0¿ec ‰ @  ±“5€?d p¿PU @  ±”6€?d °Â¿p  ã @  ±•7€?d ð¿.£På @  ±–8€?d 0ÿþëÜ  @  ±—9€?d pÿÀ&y @  ±˜:€?d °Ã¿àÓ{ð @  ±™;€?d ðÿ&ÀÂÑ @  ±š<€?d 0Ä¿?Ž1Þ @  ±›=€?d pÄ¿ ¸0J @  ±œ>€?d °Ä¿*M2´ @  ±?€?d ðÄ¿|ù&“ @  ±ž@€?d 0Å¿¬±ª{ @  ±ŸA€?d pÅ¿.Û( @  ± B€?d °Å¿.Ö @  ±¡C€?d ðÅ¿È=­÷ @  ±¢D€?d 0Æ¿Uy 6 @  ±£E€?d pÆ¿`O ¢ @  ±¤F€?d °Æ¿@º\ @  ±¥G€?d ðÆ¿¹TZ @  ±¦H€?d 0Ç¿Îñز @  ±§I€?d pÇ¿ð<}± @  ±¨J€?d °Ç¿ÐÉO @  ±©K€?d ðÇ¿ÚÆn @  ±ªL€?d 0È¿"%Js @  ±«M€?d pÈ¿Kç @  ±¬N€?d °È¿7æI @  ±­O€?d ðÈ¿ µqó @  ±®P€?d 0É¿Üýý @  ±¯Q€?d pÉ¿O‘fø @  ±°R€?d °É¿odd @  ±±S€?d ðÉ¿©wÝ' @  ±²T€?d 0Ê¿43}æ @  ±³U€?d pÊ¿|r @  ±´V€?d °Ê¿!ð~Œ @  ±µW€?d ðÊ¿ó$Š @  ±¶X€?d 0Ë¿¯»¨b @  ±·Y€?d pË¿‘v a @  ±¸Z€?d °Ë¿±ƒŸ @  ±¹[€?d ðË¿w¶¾ @  ±º\€?d 0Ì¿nÞE± @  ±»]€?d pÌ¿[èD% @  ±¼^€?d °Ì¿{FÛ @  ±½_€?d ðÌ¿ÝùGí @  ±¾`€?d 0Í¿ ±Ë @  ±¿a€?d pÍ¿!ÜqÄ @  ±Àb€?d °Í¿)s: @  ±Ác€?d ðÍ¿ºº¹g @  ±€d€?d 0οc¹¶ @  ±à e€?d pοV·› @  ±Ä f€?d °Î¿vzµe @  ±Å g€?d ðο(yïc @  ±Æ h€?d 0Ï¿ø1c‹ @  ±Ç i€?d pÏ¿Æüƈ @  ±È j€?d °Ï¿æ Äv @  ±É k€?d ðÏ¿ }W @  ±Ê l€?d 0пžÄÁå @  ±Ë m€?d pп«òÀq @  ±Ì n€?d °Ð¿‹Â @  ±Í o€?d ðп°Túe @  ±Î p€?d 0Ñ¿`v @  ±Ï q€?d pÑ¿ópín @  ±Ð r€?d °Ñ¿Ó…ï @  ±Ñ s€?d ðÑ¿–V± @  ±Ò t€?d 0Ò¿ˆÒöp @  ±Ó u€?d pÒ¿½ä÷ä @  ±Ô v€?d °Ò¿õ @  ±Õ w€?d ðҿï @  ±Ö x€?d 0Ó¿Z#ô @  ±× y€?d pÓ¿-—†÷ @  ±Ø z€?d °Ó¿ b„  @  ±Ù {€?d ðÓ¿Ëq=( @  ±Ú |€?d 0Ô¿Ò?Î' @  ±Û }€?d pÔ¿ç ϳ @  ±Ü ~€?d °Ô¿ÇüÍM @  ±Ý €?d ðÔ¿ŒŽø @  ±Þ €€?d 0Õ¿\Æ @  ±ß €?d pÕ¿Þ¬½C @  ±à ‚€?d °Õ¿þY¿½ @  ±á ƒ€?d ðÕ¿8Jœ @  ±â „€?d€ 0Ö¿dIQ] @  ² …€?d pÖ¿°>à @  ² †€?d °Ö¿Ë @  ² ‡€?d ðÖ¿ »õ @  ² ˆ€?d 0׿ÛÉ7 @  ² ‰€?d p׿+¶Íd @  ² Š€?d °×¿ CÏš @  ² ‹€?d ð׿â)Á @  ² Œ€?d 0Ø¿7¥Ü @  ² €?d pØ¿Çb_¥ @  ² Ž€?d °Ø¿ç—][ @  ² €?d ðØ¿ž\ @  ² €?d 0Ù¿ÉÅ´ @  ² ‘€?d pÙ¿9ºèÍ @  ² ’€?d °Ù¿Oê3 @  ² “€?d ðÙ¿¼O2ˆ @  ² ”€?d 0Ú¿! ’I @  ² •€?d pÚ¿Ñth0 @  ² –€?d °Ú¿ñjÎ @  ² —€?d ðÚ¿jËË% @  ² ˜€?d 0Û¿ºƒGÍ @  ² ™€?d pÛ¿Jü½´ @  ² š€?d °Û¿j ¿J @  ² ›€?d ðÛ¿b¨Y @  ² œ€?d 0Ü¿{æª @  ² €?d pÜ¿‹™Pg @  ² ž€?d °Ü¿«lR™ @  ² Ÿ€?d ðÜ¿ÈÁ¨B @  ²  €?d 0Ý¿‰$ª @  ² ¡€?d pÝ¿èöÞÓ @  ² ¢€?d °Ý¿ÈÜ- @  ² £€?d ðÝ¿|#& @  ² ¤€?d 0Þ¿áAƒç @  ²! ¥€?d pÞ¿>yž @  ²" ¦€?d °Þ¿1Ë{` @  ²# §€?d ðÞ¿ªÚ‹ @  ²$ ¨€?d 0ß¿zÉVc @  ²% ©€?d pß¿ж¬ @  ²& ª€?d uÐà¿/°ß¿ªC®ä @  ²' «€?d ðß¿¢âH¿ @  ²( ¬€?d Hà¿»FI @  ²) ­€?d ˆà¿é]ù @  ²* ®€?d Èà¿kÌîÎ @  ²+ ¯€?d á¿Ç¶ÿ @  ², °€?d Há¿Ež¡! @  ²- ±€?d ˆá¿…Nx @  ². ²€?d Èá¿•Y¦ @  ²/ ³€?d â¿/Á6 @  ²0 ´€?d Hâ¿­P!Ü @  ²1 µ€?d ˆâ¿ÿKÎ… @  ²2 ¶€?d Èâ¿}ÚÙ[ @  ²3 ·€?d ã¿´Iㆠ@  ²4 ¸€?d Hã¿6ØôX @  ²5 ¹€?d ˆã¿dà @  ²6 º€?d Èã¿æR ß @  ²7 »€?d ä¿u,U @  ²8 ¼€?d Hä¿÷½‹ @  ²9 ½€?d ˆä¿¥¦öÒ @  ²: ¾€?d Èä¿'7á  @  ²; ¿€?d å¿æ•ð @  ²< À€?d Hå¿d‚‚. @  ²= Á€?d ˆå¿6™mw @  ²> €?d Èå¿´z© @  ²? À?d 濱Ü4/ @  ²@ Ä€?d Hæ¿3M#ñ @  ²A Å€?d ˆæ¿aV̨ @  ²B Æ€?d Èæ¿ãÇÛv @  ²C Ç€?d ç¿*Tá« @  ²D È€?d H翨Åöu @  ²E É€?d ˆç¿úÞ, @  ²F Ê€?d Èç¿xOò @  ²G Ë€?d è¿Æ€sj @  ²H Ì€?d Hè¿Dd´ @  ²I Í€?d ˆè¿ ‹í @  ²J ΀?d Èè¿”›œ3 @  ²K Ï€?d é¿8XÄ @  ²L Ѐ?d H鿺ÉÓÜ @  ²M Ñ€?d ˆé¿èÒ<… @  ²N Ò€?d Èé¿jC+[ @  ²O Ó€?d ê¿ЖDÿ @  ²P Ô€?d Hê¿RS! @  ²Q Õ€?d ˆê¿¼x @  ²R Ö€?d Èê¿‚«¦ @  ²S ×€?d ë¿K‘{ @  ²T Ø€?d Hë¿Ɇ¥ @  ²U Ù€?d ˆë¿›”iü @  ²V Ú€?d Èë¿~" @  ²W Û€?d 쿊{|¨ @  ²X Ü€?d Hì¿êkv @  ²Y Ý€?d ˆì¿Zñ„/ @  ²Z Þ€?d Èì¿Ø`“ñ @  ²[ ߀?d í¿éò @  ²\ à€?d Hí¿k…å @  ²] á€?d ˆí¿9ž › @  ²^ â€?d Èí¿»E @  ²_ ã€?d î¿ÜUQ @  ²` ä€?d Hî¿’MB @  ²a å€?d ˆî¿ÀV­Ö @  ²b æ€?d Èî¿BǺ @  ²c ç€?d ï¿‹T€Õ @  ²d è€?d Hï¿ Å—  @  ²e é€?d ˆï¿[ÞxR @  ²f ê€?d Èï¿ÙOoŒ @  ²g ë€?d ð¿í¡"» @  ²h ì€?d Hð¿o05e @  ²i í€?d ˆð¿=+Ú< @  ²j î€?d È𿿺Íâ @  ²k ï€?d ñ¿y•Ó @  ²l ð€?d Hñ¿‘è‚  @  ²m ñ€?d ˆñ¿ÃómT @  ²n ò€?d Èñ¿AbzŠ @  ²o ó€?d ò¿û·. @  ²p ô€?d Hò¿y&ð @  ²q õ€?d ˆò¿+=í© @  ²r ö€?d Èò¿©¬úw @  ²s ÷€?d ó¿`?Àª @  ²t ø€?d Hó¿â®×t @  ²u ù€?d ˆó¿°µ8- @  ²v ú€?d Èó¿2$/ó @  ²w û€?d ô¿¡Z-y @  ²x ü€?d Hô¿#Ë:§ @  ²y ý€?d ˆô¿qÐÕþ @  ²z þ€?d Èô¿óA  @  ²{ ÿ€?d õ¿PÄ·B @  ²| ?d Hõ¿ÒU œ @  ²} ?d ˆõ¿€NOÅ @  ²~ ?d Èõ¿ßX @  ² ?d ö¿ä]&¬ @  ²€ ?d Hö¿fÌ1r @  ² ?d ˆö¿4×Þ+ @  ²‚ ?d Èö¿¶FÉõ @  ²ƒ ?d ÷¿Õó( @  ²„ ?d H÷¿ýDäö @  ²…  ?d ˆ÷¿¯_ ¯ @  ²†  ?d È÷¿-Îq @  ²‡  ?d ø¿“aé @  ²ˆ  ?d Hø¿v7 @  ²‰  ?d ˆø¿C‹™n @  ²Š ?d Èø¿Áް @  ²‹ ?d ù¿mÙÖ @  ²Œ ?d Hù¿ïHÁ_ @  ² ?d ˆù¿½S. @  ²Ž ?d Èù¿?Â9Ø @  ² ?d ú¿…V| @  ² ?d Hú¿†A¢ @  ²‘ ?d ˆú¿U®û @  ²’ ?d Èú¿× ¹% @  ²“ ?d û¿Ÿƒø @  ²” ?d Hû¿œ”& @  ²• ?d ˆû¿Î{ @  ²– ?d Èû¿L„l¡ @  ²— ?d ü¿ßún+ @  ²˜ ?d Hü¿]kyõ @  ²™ ?d ˆü¿p–¬ @  ²š ?d Èü¿ár @  ²› ?d ý¿¼•àŸ @  ²œ  ?d Hý¿>÷A @  ² !?d ˆý¿l @  ²ž "?d Èý¿îŽÆ @  ²Ÿ #?d þ¿E]GÒ @  ²  $?d Hþ¿ÇÌP  @  ²¡ %?d ˆþ¿•׿U @  ²¢ &?d Èþ¿F¨‹ @  ²£ '?d ÿ¿ÞÕ’V @  ²¤ (?d Hÿ¿\D…ˆ @  ²¥ )?d ˆÿ¿_jÑ @  ²¦ uÐÀ*?d Èÿ¿ŒÎ} @  ²§ +?d ÀŠL„< @  ²¨ ,?d `ÀÝ“â @  ²© -?d  ÀZÆ|» @  ²ª .?d àÀØWke @  ²« /?d Àt”3T @  ²¬ 0?d `Àö$Š @  ²­ 1?d  À¤ËÓ @  ²® 2?d àÀ&Ü  @  ²¯ 3?d ÀœZ³© @  ²° 4?d `Àˤw @  ²± 5?d  ÀLÐK. @  ²² 6?d àÀÎA\ð @  ²³ 7?d ÀÒf- @  ²´ 8?d `À…Cqó @  ²µ 9?d  À×Xžª @  ²¶ :?d àÀUɉt @  ²· ;?d ÀÆ·‹þ @  ²¸ <?d `ÀD&œ  @  ²¹ =?d  À=sy @  ²º >?d àÀ”¬d§ @  ²» ??d ÀUˆ[ @  ²¼ @?d `À×… @  ²½ A?d  À…èÜ @  ²¾ B?d àÀ“ÿ @  ²¿ C?d ÀG±„ @  ²À D?d `À€Ö¦Z @  ²Á E?d  ÀÒÍI @  ² F?d àÀP\^Ý @  ²à G?d À™Ïd @  ²Ä H?d `À^sÞ @  ²Å I?d  ÀIEœ‡ @  ²Æ J?d àÀËÔ‹Y @  ²Ç K?d ÀuöÁ @  ²È L?d `À÷Šá @  ²É M?d  À¥‘F @  ²Ê N?d àÀ'˜ @  ²Ë O?d À‹ÃA© @  ²Ì P?d ` À RVw @  ²Í Q?d   À[I¹. @  ²Î R?d à ÀÙØ®ð @  ²Ï S?d Àc ÁT @  ²Ð T?d ` ÀáœÖŠ @  ²Ñ U?d   À³‡9Ó @  ²Ò V?d à À1.  @  ²Ó W?d Àø…Ð @  ²Ô X?d ` Àz @  ²Õ Y?d   À(ìW @  ²Ö Z?d à Àªžû‰ @  ²× [?d À9àù @  ²Ø \?d ` À»qîÝ @  ²Ù ]?d   Àéj„ @  ²Ú ^?d à ÀkûZ @  ²Û _?d ÀZw· @  ²Ü `?d ` ÀØ`i @  ²Ý a?d   ÀŠ0 @  ²Þ b?d à À”˜î @  ²ß c?d À£GÐú @  ²à d?d `À!ÖÇ$ @  ²á e?d  ÀsÍ(} @  ²â f?d€ àÀ…Ÿ# @  ³ g?d À­MQñ @  ³ h?d `À/ÜF/ @  ³ i?d  À¸ŽR› @  ³ j?d àÀ:EE @  ³ k?d ÀÀCW @  ³ l?d `ÀBÒ@Ö @  ³ m?d  ÀÞ{ðõ @  ³ n?d àÀ\êç+ @  ³ o?d À5`D÷ @  ³ p?d `À·ñS) @  ³ q?d  À £G @  ³ r?d àÀ¢2PC @  ³ s?d À{ô^} @  ³ t?d `ÀùeI£ @  ³ u?d  ÀÈmÇ` @  ³ v?d àÀJüо @  ³ w?d ÀF&Ž @  ³ x?d `ÀÄ·P @  ³ y?d  À¨‹)ä @  ³z?d àÀÑt: @  ³ {?d ÀŒ¸XÊ @  ³ |?d `À)O @  ³ }?d  À’€ÿ7 @  ³ ~?d àÀèé @  ³ ?d À º3j @  ³ €?d `À‹+$´ @  ³ ?d  Ày0 @  ³ ‚?d àÀžè'Þ @  ³ ƒ?d ÀG.)à @  ³ „?d `ÀÅ¿>> @  ³ …?d  Àå±—M @  ³ †?d àÀg €“ @  ³! ‡?d ÀkúA£ @  ³" ˆ?d `ÀékV} @  ³# ‰?d  À~9BÉ @  ³$ Š?d àÀü¨U @  ³% ‹?d ÀŒÕwõ @  ³& Œ?d `ÀD`+ @  ³' ?d  À’íÐ @  ³( Ž?d àÀ|ÇÖ @  ³) ?d Àyöd  @  ³* ?d `ÀûgsÔ @  ³+ ‘?d  Àl5g` @  ³, ’?d àÀî¤p¾ @  ³- “?d À7b~€ @  ³. ”?d `Àµói^ @  ³/ •?d  À„ûç @  ³0 –?d àÀjðC @  ³1 —?d À °1s @  ³2 ˜?d `Àˆ!&­ @  ³3 ™?d  Às2 @  ³4 š?d àÀâ%Ç @  ³5 ›?d ÀÀ.x7 @  ³6 œ?d `ÀB¿oé @  ³7 ?d  ÀÞßÊ @  ³8 ž?d àÀ\‡È @  ³9 Ÿ?d À¨ºR @  ³:  ?d `À*+EÊ @  ³; ¡?d  À½yQ~ @  ³< ¢?d àÀ?èF  @  ³= £?d Àæ.Hž @  ³> ¤?d `Àd¿_@ @  ³? ¥?d  Àê¶ð¡ @  ³@ ¦?d àÀh'ç @  ³A §?d Àdý&O @  ³B ¨?d `Àæl1‘ @  ³C ©?d  Àq>%%uÐ À @  ³D ª?d àÀó¯2û @  ³E «?d 8 ÀÆ&Bb @  ³F ¬?d x ÀD·U¼ @  ³G ­?d ¸ ÀØåŸ @  ³H ®?d ø ÀZòA @  ³I ¯?d 8!À3Q @  ³J °?d x!À±”FC @  ³K ±?d ¸!À&ÆR÷ @  ³L ²?d ø!À¤WE) @  ³M ³?d 8"À}‘K @  ³N ´?d x"Àÿ\É @  ³O µ?d ¸"ÀÎÒ  @  ³P ¶?d ø"ÀL™ÅÔ @  ³Q ·?d 8#À@Cä @  ³R ¸?d x#ÀÂÒ: @  ³S ¹?d ¸#ÀU€Ž @  ³T º?d ø#À×P @  ³U »?d 8$ÀŠÝM  @  ³V ¼?d x$ÀLZ~ @  ³W ½?d ¸$À”åê] @  ³X ¾?d ø$Àtýƒ @  ³Y ¿?d 8%Àr’ @  ³Z À?d x%ÀˆeL @  ³[ Á?d ¸%ÀÚqø @  ³\ Â?d ø%À…Kf& @  ³] Ã?d 8&À\h @  ³^ Ä?d x&ÀÞÆ @  ³_ Å?d ¸&ÀþÖµ @  ³` Æ?d ø&À|ƒÁk @  ³a Ç?d 8'ÀpY[ @  ³b È?d x'ÀòÈ… @  ³c É?d ¸'Àeš1 @  ³d Ê?d ø'Àç ï @  ³e Ë?d 8(À—v6  @  ³f Ì?d x(Àç!Ó @  ³g Í?d ¸(À‰N‘ð @  ³h Î?d ø(À ߆. @  ³i Ï?d 8)ÀbU%ò @  ³j Ð?d x)ÀàÄ2, @  ³k Ñ?d ¸)Àw–&˜ @  ³l Ò?d ø)Àõ1F @  ³m Ó?d 8*À,Á?x @  ³n Ô?d x*À®P(¦ @  ³o Õ?d ¸*ÀŸX¦e @  ³p Ö?d ø*Àɱ» @  ³q ×?d 8+Àp‹ @  ³r Ø?d x+À“‚gU @  ³s Ù?d ¸+ÀÐsá @  ³t Ú?d ø+À†Ad? @  ³u Û?d 8,ÀÛ9Ï @  ³v Ü?d x,ÀY. @  ³w Ý?d ¸,Àŵž2 @  ³x Þ?d ø,ÀG$‰ì @  ³y ß?d 8-À³ì @  ³z à?d x-À1ˆ2 @  ³{ á?d ¸-À¦Ú† @  ³| â?d ø-À$KX @  ³} ã?d 8.Àý f @  ³~ ä?d x.À¸ @  ³ å?d ¸.ÀCh @  ³€ æ?d ø.ÀÒ–¶ @  ³ ç?d 8/ÀœW† @  ³‚ è?d x/À™@X @  ³ƒ é?d ¸/À‰ËTì @  ³„ ê?d ø/À ZC2 @  ³… ë?d 80ÀñQ @  ³† ì?d x0Às—F¡ @  ³‡ í?d ¸0Àï>ö‚ @  ³ˆ î?d ø0Àm¯á\ @  ³‰ ï?d 81À%B€ @  ³Š ð?d x1À†´U^ @  ³‹ ñ?d ¸1ÀæAê @  ³Œ ò?d ø1À“wV4 @  ³ ó?d 82ÀJ±X  @  ³Ž ô?d x2ÀÈ OÔ @  ³ õ?d ¸2Àù(Á @  ³ ö?d ø2À{¹ÖÉ @  ³‘ ÷?d 83Àwcù @  ³’ ø?d x3Àõò' @  ³“ ù?d ¸3Àb “ @  ³” ú?d ø3Àà1M @  ³• û?d 84À½ý^½ @  ³– ü?d x4À?lIc @  ³— ý?d ¸4À£Åù@ @  ³˜ þ?d ø4À!Tîž @  ³™ ÿ?d 85ÀõºU4 @  ³š ‚?d x5Àw+Bê @  ³› ‚?d ¸5ÀàyV^ @  ³œ ‚?d ø5ÀbèA€ @  ³ ‚?d 86À».O¾ @  ³ž ‚?d x6À9¿X` @  ³Ÿ ‚?d ¸6À±ñ @  ³  ‚?d ø6À› æÍ @  ³¡ ‚?d 87À—ú'ý @  ³¢ ‚?d x7Àk0# @  ³£  ‚?d ¸7À‚9$— @  ³¤  ‚?d ø7À¨3I @  ³¥  ‚?d 88ÀpÕ« @  ³¦  ‚?d x8ÀòDu @  ³§  ‚?d ¸8Àní¶V @  ³¨ ‚?d ø8Àì|¡ˆ @  ³© ‚?d 89À…öT @  ³ª ‚?d x9ÀgŠ @  ³« ‚?d ¸9À5> @  ³¬ ‚?d ø9À¤à @  ³­ ‚?d 8:ÀËbÞ @  ³® ‚?d x:ÀIó @  ³¯ ‚?d ¸:Àxûà @  ³° ‚?d ø:Àúj– @  ³± ‚?d 8;Àö°W- @  ³² ‚?d x;Àt!@ó @  ³³ ‚?d ¸;ÀãsTG @  ³´ ‚?d ø;ÀaâC™ @  ³µ ‚?d 8<À<.i @  ³¶ ‚?d x<À¾¿ · @  ³· ‚?d ¸<À"¹” @  ³¸ ‚?d ø<À ‡®J @  ³¹ ‚?d 8=ÀTº4J @  ³º  ‚?d x=ÀÖ+#” @  ³» !‚?d ¸=ÀAy7  @  ³¼ "‚?d ø=ÀÃè þ @  ³½ #‚?d 8>À..À @  ³¾ $‚?d x>À˜¿9 @  ³¿ %‚?d ¸>À¶–ÿ @  ³À &‚?d ø>À”'! @  ³Á '‚?d 8?À˜ý@ @  ³ (‚?d x?ÀlWÏ @  ³à )‚?duÐ@À7 ¸?À>C{ @  ³Ä *‚?d ø?ÀôÁo¥ @  ³Å+‚?d P@Àsï{f @  ³Æ,‚?d @ÀSy˜ @  ³Ç-‚?d Ð@Àm×Ü› @  ³È.‚?d AÀ½ŸPs @  ³É/‚?d PAÀ†Ìh™ @  ³Ê0‚?d AÀ¦9jg @  ³Ë1‚?d ÐAÀ“kó @  ³Ì2‚?d BÀKË2 @  ³Í3‚?d PBÀÈXr @  ³Î4‚?d BÀè­pí @  ³Ï5‚?d ÐBÀ{Áë @  ³Ð6‚?d CÀ«‰gæ @  ³Ñ7‚?d PCÀõŠ=à @  ³Ò8‚?d CÀÕ? @  ³Ó9‚?d ÐCÀàI>Š @  ³Ô:‚?d DÀùÍ… @  ³Õ;‚?d PDÀ?t¤ @  ³Ö<‚?d DÀávZ @  ³×=‚?d ÐDÀ!,ÓY @  ³Ø>‚?d EÀñd_± @  ³Ù?‚?d PEÀ§ÐK– @  ³Ú@‚?d EÀ‡%Ih @  ³ÛA‚?d ÐEÀ²Hü @  ³ÜB‚?d FÀ/Wè= @  ³ÝC‚?d PFÀéDQ @  ³ÞD‚?d FÀɱSâ @  ³ßE‚?d ÐFÀKÛï± @  ³àF‚?d GÀ›“cY @  ³áG‚?d PGÀÅ9_ @  ³âH‚?d€ GÀc3“ @  ´I‚?d ÐGÀ·DÚ¥ @  ´J‚?d HÀƒ»V¸ @  ´K‚?d PHÀ€át @  ´L‚?d HÀ Š @  ´M‚?d ÐHÀPkìó @  ´N‚?d IÀ€#` @  ´O‚?d PIÀu‹ @  ´P‚?d IÀU7u @  ´ Q‚?d ÐIÀ¥Hÿ  @  ´ R‚?d JÀ8 _Í @  ´ S‚?d PJÀ;V @  ´ T‚?d JÀ£ÿ @  ´ U‚?d ÐJÀëÜå† @  ´V‚?d KÀ;”in @  ´W‚?d PKÀ„Rò @  ´X‚?d KÀ&qP  @  ´Y‚?d ÐKÀÖªu @  ´Z‚?d LÀÏ@Yz @  ´[‚?d PLÀ̶ @  ´\‚?d LÀìïH @  ´]‚?d ÐLÀã1 @  ´^‚?d MÀÌØoÙ @  ´_‚?d PMÀ¤Ž1• @  ´`‚?d MÀ„{3k @  ´a‚?d ÐMÀtÉ @  ´b‚?d NÀé@iÓ @  ´c‚?d PNÀê+ @  ´d‚?d NÀÊï)á @  ´e‚?d ÐNÀ:Ó˜ @  ´f‚?d OÀêØ_p @  ´g‚?d POÀÆÎC\ @  ´ h‚?d OÀæ;A¢ @  ´!i‚?d ÐOÀD»Û @  ´"j‚?d PÀ¨ši @  ´#k‚?d PPÀ«ÀE¥ @  ´$l‚?d PÀ‹5G[ @  ´%m‚?d ÐPÀ{J½" @  ´&n‚?d QÀ«1Ê @  ´'o‚?d PQÀ^ãVZ @  ´(p‚?d QÀ~T¤ @  ´)q‚?d ÐQÀŽi®Ý @  ´*r‚?d RÀ- @  ´+s‚?d PRÀwLÐ @  ´,t‚?d RÀ0‚N. @  ´-u‚?d ÐRÀÀý´W @  ´.v‚?d SÀµ8¿ @  ´/w‚?d PSÀ-¥# @  ´0x‚?d SÀ PÝ @  ´1y‚?d ÐSÀý/û¤ @  ´2z‚?d TÀäa« @  ´3{‚?d PTÀç;Jg @  ´4|‚?d TÀÇÎH™ @  ´5}‚?d ÐTÀ7±²à @  ´6~‚?d UÀçù> @  ´7‚?d PUÀb9!Ç @  ´8€‚?d UÀBÌ#9 @  ´9‚?d ÐUÀ²³Ù@ @  ´:‚‚?d VÀ/÷y @  ´;ƒ‚?d PVÀ,­;M @  ´<„‚?d VÀ X9³ @  ´=…‚?d ÐVÀü'ÃÊ @  ´>†‚?d WÀ,oO" @  ´?‡‚?d PWÀ®~Uœ @  ´@ˆ‚?d WÀŽ‹Wb @  ´A‰‚?d ÐWÀ~ô­ @  ´BŠ‚?d XÀJ ! @  ´C‹‚?d PXÀIQcÊ @  ´DŒ‚?d XÀi¤a4 @  ´E‚?d ÐXÀ™Û›M @  ´FŽ‚?d YÀI“¥ @  ´G‚?d PYÀ¼rp5 @  ´H‚?d YÀœ‡rË @  ´I‘‚?d ÐYÀløˆ² @  ´J’‚?d ZÀñ¼(s @  ´K“‚?d PZÀòæj¿ @  ´L”‚?d ZÀÒhA @  ´M•‚?d ÐZÀ"l’8 @  ´N–‚?d [Àò$Ð @  ´O—‚?d P[ÀÏ4%L @  ´P˜‚?d [ÀïÁ'² @  ´Q™‚?d Ð[À¾ÝË @  ´Rš‚?d \Àð.Ä @  ´S›‚?d P\Àªl @  ´Tœ‚?d \À%_nö @  ´U‚?d Ð\ÀÕ ” @  ´Vž‚?d ]Àhg @  ´WŸ‚?d P]Àm>F+ @  ´X ‚?d ]ÀMËDÕ @  ´Y¡‚?d Ð]À½´¾¬ @  ´Z¢‚?d ^À ðm @  ´[£‚?d P^À#ª\¡ @  ´\¤‚?d ^À_^_ @  ´]¥‚?d Ð^Àó ¤& @  ´^¦‚?d _À#h(Î @  ´_§‚?d P_À~4â @  ´`¨‚?d _À/‹6 @  ´uÐ`Àa©‚?d Ð_ÀßôÌe @  ´bª‚?d (`Àa yý @  ´c«‚?d h`ÀbV;1 @  ´d¬‚?d ¨`ÀB£9Ï @  ´e­‚?d è`À²Üö @  ´f®‚?d (aÀb”O^ @  ´g¯‚?d haÀ—u(Î @  ´h°‚?d ¨aÀ·€*0 @  ´i±‚?d èaÀGÿÐI @  ´j²‚?d (bÀÚ»pˆ @  ´k³‚?d hbÀÙá2D @  ´l´‚?d ¨bÀù0º @  ´mµ‚?d èbÀ kÊà @  ´n¶‚?d (cÀÙ#F+ @  ´o·‚?d hcÀä3}· @  ´p¸‚?d ¨cÀÄÆI @  ´q¹‚?d ècÀ4¹…0 @  ´rº‚?d (dÀ-÷v? @  ´s»‚?d hdÀ.­4ó @  ´t¼‚?d ¨dÀX6  @  ´u½‚?d èdÀþ'Ìt @  ´v¾‚?d (eÀ.o@œ @  ´w¿‚?d heÀ¶i Á @  ´xÀ‚?d ¨eÀ–œ ? @  ´yÁ‚?d èeÀfãóF @  ´z‚?d (fÀû§S‡ @  ´{Â?d hfÀøýK @  ´|Ä‚?d ¨fÀص @  ´}Å‚?d èfÀ(wéÌ @  ´~Æ‚?d (gÀø?e$ @  ´Ç‚?d hgÀ™xO« @  ´€È‚?d ¨gÀ¹MU @  ´É‚?d ègÀIò·, @  ´‚Ê‚?d (hÀ} ;1 @  ´ƒË‚?d hhÀ~Wyý @  ´„Ì‚?d ¨hÀ^¢{ @  ´…Í‚?d èhÀ®Ýz @  ´†΂?d (iÀ~• ’ @  ´‡Ï‚?d hiÀ‹tj @  ´ˆЂ?d ¨iÀ«hü @  ´‰Ñ‚?d èiÀ[þ’… @  ´ŠÒ‚?d (jÀƺ2D @  ´‹Ó‚?d hjÀÅàpˆ @  ´ŒÔ‚?d ¨jÀårv @  ´Õ‚?d èjÀjˆ @  ´ŽÖ‚?d (kÀÅ"ç @  ´ׂ?d hkÀø2?{ @  ´Ø‚?d ¨kÀØÇ=… @  ´‘Ù‚?d èkÀ(¸Çü @  ´’Ú‚?d (lÀ1ö4ó @  ´“Û‚?d hlÀ2¬v? @  ´”Ü‚?d ¨lÀYtÁ @  ´•Ý‚?d èlÀâ&ޏ @  ´–Þ‚?d (mÀ2nP @  ´—ß‚?d hmÀZ8\ @  ´˜à‚?d ¨mÀzÍ^â @  ´™á‚?d èmÀ⤛ @  ´šâ‚?d (nÀöZ @  ´›ã‚?d hnÀ¬F– @  ´œä‚?d ¨nÀ4YDh @  ´å‚?d ènÀÄ&¾ @  ´žæ‚?d (oÀn2ù @  ´Ÿç‚?d hoÀ8x.Õ @  ´ è‚?d ¨oÀ,+ @  ´¡é‚?d èoÀèòÖR @  ´¢ê‚?d (pÀV,jà @  ´£ë‚?d hpÀUv(, @  ´¤ì‚?d ¨pÀuƒ*Ò @  ´¥í‚?d èpÀ…üЫ @  ´¦î‚?d (qÀU´\C @  ´§ï‚?d hqÀ U;Ó @  ´¨ð‚?d ¨qÀ€ 9- @  ´©ñ‚?d èqÀpßÃT @  ´ªò‚?d (rÀí›c• @  ´«ó‚?d hrÀîÁ!Y @  ´¬ô‚?d ¨rÀÎ4#§ @  ´­õ‚?d èrÀ>KÙÞ @  ´®ö‚?d (sÀîU6 @  ´¯÷‚?d hsÀÓnª @  ´°ø‚?d ¨sÀóælT @  ´±ù‚?d èsÀ™–- @  ´²ú‚?d (tÀ×e" @  ´³û‚?d htÀ'î @  ´´ü‚?d ¨tÀ9x% @  ´µý‚?d ètÀÉßi @  ´¶þ‚?d (uÀOS @  ´·ÿ‚?d huÀãèB @  ´¸ƒ?d ¨uÀü @  ´¹ƒ?d èuÀ3báÅ @  ´ºƒ?d (vÀ®&A @  ´»ƒ?d hvÀ­|È @  ´¼ƒ?d ¨vÀ‰6 @  ´½ƒ?d èvÀ}öûO @  ´¾ƒ?d (wÀ­¾w§ @  ´¿ƒ?d hwÀ/¯m @  ´Àƒ?d ¨wÀZoç @  ´Á ƒ?d èwÀÿ%•ž @  ´Â ƒ?d (xÀËÚƒ @  ´Ã ƒ?d hxÀÈ€[O @  ´Ä ƒ?d ¨xÀèuY± @  ´Å ƒ?d èxÀ £È @  ´Æƒ?d (yÀÈB/  @  ´Çƒ?d hyÀ=£H° @  ´Èƒ?d ¨yÀVJN @  ´Éƒ?d èyÀí)°7 @  ´Êƒ?d (zÀpmö @  ´Ëƒ?d hzÀs7R: @  ´Ìƒ?d ¨zÀSÂPÄ @  ´Íƒ?d èzÀ£½ª½ @  ´Îƒ?d ({Àsõ&U @  ´Ïƒ?d h{ÀNåÉ @  ´Ðƒ?d ¨{Àn7 @  ´Ñƒ?d è{ÀžoåN @  ´Òƒ?d (|À‡!A @  ´Óƒ?d h|À„{T @  ´Ôƒ?d ¨|À¤ŽVs @  ´Õƒ?d è|ÀTñ¬  @  ´Öƒ?d (}À„¹ â @  ´×ƒ?d h}Àìï~® @  ´Ø ƒ?d ¨}ÀÌ|P @  ´Ù!ƒ?d è}Àƒ?d @…À/3€— @  µ?ƒ?d €…ÀÛã @  µ@ƒ?d À…ÀYr–N @  µAƒ?d †Àxj„R @  µBƒ?d @†Àúû“Œ @  µCƒ?d €†ÀžŒ? @  µDƒ?d À†À(S @  µEƒ?d ‡À{ò²ñ @  µFƒ?d @‡Àùc¥/ @  µGƒ?d €‡Àê  @  µHƒ?d À‡À‡•ý× @  µIƒ?d ˆÀ³‘ÚG @  µ Jƒ?d @ˆÀ1Í™ @  µ!Kƒ?d €ˆÀUwa˜ @  µ"Lƒ?d ÀˆÀ׿vF @  µ#Mƒ?d ‰À° ìä @  µ$Nƒ?d @‰À2˜û: @  µ%Oƒ?d €‰À«¯Öð @  µ&Pƒ?d À‰À)>Á. @  µ'Qƒ?d ŠÀ&Ó2 @  µ(Rƒ?d @ŠÀŠ·Äì @  µ)Sƒ?d €ŠÀîÀhí @  µ*Tƒ?d ÀŠÀlQ3 @  µ+Uƒ?d ‹À ¾å‘ @  µ,Vƒ?d @‹À‰/òO @  µ-Wƒ?d €‹ÀuH½i @  µ.Xƒ?d À‹À÷Ùª· @  µ/Yƒ?d ŒÀÿjÕ… @  µ0Zƒ?d @ŒÀ}ûÂ[ @  µ1[ƒ?d €ŒÀŒnZ @  µ2\ƒ?d ÀŒÀ›y„ @  µ3]ƒ?d Àüòã& @  µ4^ƒ?d @À~côø @  µ5_ƒ?d €Àzãàî @  µ6`ƒ?d ÀÀør÷0 @  µ7aƒ?d ŽÀÙjå, @  µ8bƒ?d @ŽÀ[ûòò @  µ9cƒ?d €ŽÀ?Œ^ó @  µ:dƒ?d ÀŽÀ½I- @  µ;eƒ?d ÀÚòÓ @  µ<fƒ?d @ÀXcÄQ @  µ=gƒ?d €À¤‹w @  µ>hƒ?d ÀÀ&•œ© @  µ?iƒ?d À6· @  µ@jƒ?d @À´&šÚ @  µAkƒ?d €ÀÐQ6Û @  µBlƒ?d ÀÀRÀ! @  µCmƒ?d ‘À5/»§ @  µDnƒ?d @‘À·¾¬y @  µEoƒ?d €‘À.‰³ @  µFpƒ?d À‘À¬–m @  µGqƒ?d ’À„q @  µHrƒ?d @’À‘“¯ @  µIsƒ?d €’Àkæ?® @  µJtƒ?d À’Àéw(p @  µKuƒ?d “ÀŽ˜²Ò @  µLvƒ?d @“À÷gž  @  µM wƒ?d €“À Ñ* @  µN xƒ?d À“À‰‘Æô @  µO yƒ?d ”À"¹Æ @  µP zƒ?d @”À³® @  µQ {ƒ?d €”ÀgÄ @  µR |ƒ?d À”ÀåUÇ @  µS }ƒ?d •À‚ºe @  µT ~ƒ?d @•À+˜» @  µU ƒ?d €•Àé=Í. @  µV €ƒ?d À•Àk¬Úð @  µW ƒ?d –ÀJ´Èì @  µX ‚ƒ?d @–ÀÈ%ß2 @  µY ƒƒ?d €–À¬Rs3 @  µZ „ƒ?d À–À.Ãdí @  µ[ …ƒ?d —ÀI,þO @  µ\ †ƒ?d @—À˽é‘ @  µ] ‡ƒ?d €—À7Ú¦· @  µ^ ˆƒ?d À—ÀµK±i @  µ_ ‰ƒ?d ˜ÀO–ù @  µ` Šƒ?d @˜ÀÞ' @  µa ‹ƒ?d €˜Àg©-& @  µb Œƒ?d À˜Àå8:ø @  µc ƒ?d ™À‚× Z @  µd Žƒ?d @™ÀF·„ @  µe ƒ?d €™À™qšN @  µf ƒ?d À™Àà @  µg ‘ƒ?d šÀ:øŸŒ @  µh ’ƒ?d @šÀ¸iˆR @  µi “ƒ?d €šÀÜ$S @  µj ”ƒ?d ÀšÀ^3 @  µk •ƒ?d ›À9`©/ @  µl –ƒ?d @›À»ñ¾ñ @  µm —ƒ?d €›ÀG–ñ× @  µn ˜ƒ?d À›ÀÅæ  @  µo ™ƒ?d œÀÍ´™; @  µp šƒ?d @œÀO%Žå @  µq ›ƒ?d €œÀ+R"ä @  µr œƒ?d ÀœÀ©Ã5: @  µs ƒ?d ÀÎ,¯˜ @  µt žƒ?d @ÀL½¸F @  µu Ÿƒ?d €ÀH=¬P @  µv  ƒ?d ÀÀʬ»Ž @  µw ¡ƒ?d žÀë´©’ @  µx ¢ƒ?d @žÀi%¾L @  µy £ƒ?d €žÀ RM @  µz ¤ƒ?d ÀžÀÓ @  µ{ ¥ƒ?d ŸÀè,Ÿ1 @  µ| ¦ƒ?d @ŸÀj½ˆï @  µ} §ƒ?d €ŸÀ–ÚÇÉ @  µ~ ¨ƒuРÀ?d ÀŸÀKÐ @  µ ©ƒ?d  ÀÓ„¨_ @  µ€ªƒ?d X ÀQ¿ @  µ«ƒ?d ˜ À5b€ @  µ‚¬ƒ?d Ø À·ó^ @  µƒ­ƒ?d ¡ÀОü @  µ„®ƒ?d X¡ÀR‰" @  µ…¯ƒ?d ˜¡À˺¤è @  µ†°ƒ?d Ø¡ÀI+³6 @  µ‡±ƒ?d ¢Àh3¡* @  µˆ²ƒ?d X¢Àꢶô @  µ‰³ƒ?d ˜¢ÀŽÕõ @  µŠ´ƒ?d Ø¢À D + @  µ‹µƒ?d £Àk«—‰ @  µŒ¶ƒ?d X£Àé:€W @  µ·ƒ?d ˜£À]Ïq @  µŽ¸ƒ?d Ø£À—ÌØ¯ @  µ¹ƒ?d ¤ÀŸ§ @  µºƒ?d X¤Àî°C @  µ‘»ƒ?d ˜¤Ày™B @  µ’¼ƒ?d ؤÀû œ @  µ“½ƒ?d ¥Àœç‘> @  µ”¾ƒ?d X¥Àv†à @  µ•¿ƒ?d ˜¥Àꦇç @  µ–Àƒ?d Ø¥Àh79 @  µ—Áƒ?d ¦ÀI/‚% @  µ˜ƒ?d X¦À˾•û @  µ™Ã?d ˜¦À¯É9ú @  µšă?d ئÀ-X.$ @  µ›Ń?d §ÀJ·´† @  µœƃ?d X§ÀÈ&£X @  µǃ?d ˜§À4Aì~ @  µžȃ?d اÀ¶Ðû  @  µŸɃ?d ¨À‚ÔÜ0 @  µ ʃ?d X¨ÀEËî @  µ¡˃?d ˜¨Àd2gï @  µ¢̃?d بÀæ£p1 @  µ£̓?d ©ÀLê“ @  µ¤΃?d X©ÀÝýM @  µ¥σ?d ˜©ÀšêЇ @  µ¦Ѓ?d Ø©À{ÇY @  µ§у?d ªÀ9cÕE @  µ¨Òƒ?d XªÀ»ò› @  µ©Óƒ?d ˜ªÀß…nš @  µªÔƒ?d تÀ]yD @  µ«Õƒ?d «À:ûãæ @  µ¬Öƒ?d X«À¸jô8 @  µ­׃?d ˜«ÀD » @  µ®؃?d Ø«ÀÆœ¬À @  µ¯Ùƒ?d ¬ÀÎ/Óò @  µ°Úƒ?d X¬ÀL¾Ä, @  µ±Ûƒ?d ˜¬À(Éh- @  µ²܃?d جÀªXó @  µ³݃?d ­ÀÍ·åQ @  µ´Þƒ?d X­ÀO&ò @  µµ߃?d ˜­ÀK¦æ™ @  µ¶àƒ?d Ø­ÀÉ7ñG @  µ·áƒ?d ®Àè/ã[ @  µ¸âƒ?d X®Àj¾ô… @  µ¹ãƒ?d ˜®ÀÉX„ @  µºäƒ?d Ø®ÀŒXOZ @  µ»åƒ?d ¯Àë·Õø @  µ¼æƒ?d X¯Ài&Â& @  µ½çƒ?d ˜¯À•A @  µ¾èƒ?d دÀКÞ @  µ¿éƒ?d °Àò‹s @  µÀêƒ?d X°À…cœ­ @  µÁëƒ?d ˜°Àá0¬ @  µÂìƒ?d ذÀc…'r @  µÃíƒ?d ±Àj½Ð @  µÄîƒ?d X±À†ûª @  µÅïƒ?d ˜±À̇Ä @  µÆðƒ?d رÀ] @  µÇñƒ?d ²À¼E‚ @  µÈòƒ?d X²À>Ô•Ø @  µÉóƒ?d ˜²ÀZ£9Ù @  µÊôƒ?d زÀØ2. @  µËõƒ?d ³À¿Ý´¥ @  µÌöƒ?d X³À=L£{ @  µÍ÷ƒ?d ˜³ÀÁ+ì] @  µÎøƒ?d سÀCºûƒ @  µÏùƒ?d ´ÀK „± @  µÐúƒ?d X´Àɘ“o @  µÑûƒ?d ˜´À­ï?n @  µÒüƒ?d Ø´À/~(° @  µÓýƒ?d µÀH‘² @  µÔþƒ?d XµÀÊ¥Ì @  µÕÿƒ?d ˜µÀ`xšÃ @  µÖ„?d صÀâé @  µ×„?d ¶ÀÃñŸ @  µØ„?d X¶ÀA`ˆß @  µÙ„?d ˜¶À%$Þ @  µÚ„?d ضÀ§†3 @  µÛ„?d ·ÀÀi©¢ @  µÜ„?d X·ÀBø¾| @  µÝ„?d ˜·À¾ŸñZ @  µÞ„?d Ø·À<æ„ @  µß „?d ¸À Á @  µà „?d X¸ÀŠ›ÖÊ @  µá „?d ˜¸ÀîìzË @  µâ „?d€ ظÀ­:š @  ¶ „?d ¹À+”Hž @  ¶„?d X¹À©_@ @  ¶„?d ˜¹Àõ{‰g @  ¶„?d عÀwêž¹ @  ¶„?d ºÀ˜@Óß @  ¶„?d XºÀÑÄ @  ¶„?d ˜ºÀ°7z @  ¶„?d غÀ2… ¤ @  ¶ „?d »À#Aë @  ¶ „?d X»À²V5 @  ¶ „?d ˜»À+œâþ @  ¶ „?d Ø»À© õ  @  ¶ „?d ¼À­ëˆ @  ¶„?d X¼À@<üV @  ¶„?d ˜¼ÀGX1Í @  ¶„?d ؼÀÅÉ& @  ¶„?d ½ÀgoG\ @  ¶„?d X½ÀåþP‚ @  ¶„?d ˜½À$7¿y @  ¶ „?d ؽÀ¦¦¨§ @  ¶!„?d ¾ÀI åÁ @  ¶"„?d X¾ÀËò @  ¶#„?d ˜¾ÀaXd @  ¶$„?d ؾÀãɺ @  ¶%„?d ¿ÀAowõ @  ¶&„?d X¿ÀÃþ`+ @  ¶'„?d ˜¿ÀúÐÔà @uÐÀÀ  ¶(„?d Ø¿Àƒ/ø> @  ¶ )„?d 0ÀÀ•1DË @  ¶ *„?d pÀÀ S @  ¶ +„?d °ÀÀ¹> @  ¶ ,„?d ðÀÀƒS®à @  ¶! -„?d 0ÁÀ!õϯ @  ¶" .„?d pÁÀ£dØq @  ¶# /„?d °ÁÀÿV @  ¶$ 0„?d ðÁÀ}‹ˆ @  ¶% 1„?d 0ÂÀ’!Tî @  ¶& 2„?d pÂÀ°C0 @  ¶' 3„?d °ÂÀºu°K @  ¶( 4„?d ðÂÀ8ä§• @  ¶) 5„?d 0ÃÀšBÆÚ @  ¶* 6„?d pÃÀÓÑ @  ¶+ 7„?d °ÃÀ!ýeÏ @  ¶, 8„?d ðÃÀ£lr @  ¶- 9„?d 0ÄÀÈÌl¹ @  ¶. :„?d pÄÀJ]{g @  ¶/ ;„?d °ÄÀM9¶ü @  ¶0 <„?d ðÄÀϨ¡" @  ¶1 =„?d 0ÅÀmÀm @  ¶2 >„?d pÅÀïŸ×³ @  ¶3 ?„?d °ÅÀÞ-Y @  ¶4 @„?d ðÅÀ\—:‡ @  ¶5 A„?d 0ÆÀ³=wá @  ¶6 B„?d pÆÀ1¬`? @  ¶7 C„?d °ÆÀ›i“D @  ¶8 D„?d ðÆÀø„š @  ¶9 E„?d 0ÇÀ»^åÕ @  ¶: F„?d pÇÀ9Ïò  @  ¶; G„?d °ÇÀáFÀ @  ¶< H„?d ðÇÀ‚pQ @  ¶= I„?d 0ÈÀÄa0¤ @  ¶> J„?d pÈÀFð'z @  ¶? K„?d °ÈÀþ•Ëà @  ¶@ L„?d ðÈÀ|Ü @  ¶A M„?d 0ÉÀÞ¢½R @  ¶B N„?d pÉÀ\3ªŒ @  ¶C O„?d °ÉÀM|« @  ¶D P„?d ðÉÀ‚Üku @  ¶E Q„?d 0ÊÀmv& @  ¶F R„?d pÊÀïç1Í @  ¶G S„?d °ÊÀE"¶ @  ¶H T„?d ðÊÀdzÕh @  ¶I U„?d 0ËÀe´' @  ¶J V„?d pËÀç„£ù @  ¶K W„?d °ËÀÞª2 @  ¶L X„?d ðËÀ\;ì @  ¶M Y„?d 0ÌÀ7›D @  ¶N Z„?d pÌÀµ š @  ¶O [„?d °ÌÀ²nÄ @  ¶P \„?d ðÌÀ0ÿÓß @  ¶Q ]„?d 0ÍÀ’Y² @  ¶R ^„?d pÍÀÈ¥N @  ¶S _„?d °ÍÀÑJµ @  ¶T `„?d ðÍÀS]k @  ¶U a„?d 0ÎÀ¼:  @  ¶V b„?d pÎÀ>«Ó @  ¶W c„?d °ÎÀ”nô¨ @  ¶X d„?d ðÎÀÿãv @  ¶Y e„?d 0ÏÀ´Y‚9 @  ¶Z f„?d pÏÀ6È•ç @  ¶[ g„?d °ÏÀæ!, @  ¶\ h„?d ðÏÀw6ò @  ¶] i„?d 0ÐÀAGgç @  ¶^ j„?d pÐÀÃÖp9 @  ¶_ k„?d °ÐÀÕ´š @  ¶` l„?d ðÐÀW%Ì @  ¶a m„?d 0ÑÀõƒìƒ @  ¶b n„?d pÑÀwû] @  ¶c o„?d °ÑÀ+l-z @  ¶d p„?d ðÑÀ©ý:¤ @  ¶e q„?d 0ÒÀFWw @  ¶f r„?d pÒÀÄÆ` @  ¶g s„?d °ÒÀn“g @  ¶h t„?d ðÒÀì’„¹ @  ¶i u„?d 0ÓÀN4åö @  ¶j v„?d pÓÀÌ¥ò( @  ¶k w„?d °ÓÀõ‹Fã @  ¶l x„?d ðÓÀwQ= @  ¶m y„?d 0ÔÀºO• @  ¶n z„?d pÔÀž+XK @  ¶o {„?d °ÔÀb!®Ð @  ¶p|„?d ðÔÀà°¹ @  ¶q}„?d 0ÕÀBØA @  ¶r~„?d pÕÀÀ‡ÏŸ @  ¶s„?d °ÕÀìØaç @  ¶t€„?d ðÕÀnIv9 @  ¶u„?d 0ÖÀã;_ @  ¶v‚„?d pÖÀr, @  ¶wƒ„?d °ÖÀ©·ßú @  ¶x„„?d ðÖÀ+&È$ @  ¶y…„?d 0×À‰€©k @  ¶z†„?d p×À ¾µ @  ¶{‡„?d °×À2? ~ @  ¶|ˆ„?d ð×À°®  @  ¶}‰„?d 0ØÀö¿| @  ¶~Š„?d pØÀt.kÄ @  ¶‹„?d °ØÀ/·L @  ¶€Œ„?d ðØÀ­Œ ’ @  ¶„?d 0ÙÀ*ÁÝ @  ¶‚Ž„?d pÙÀ»Ö @  ¶ƒ„?d °ÙÀÑÅ$ @  ¶„„?d ðÙÀSTú @  ¶…‘„?d 0ÚÀ¼þZœ @  ¶†’„?d pÚÀ>oMB @  ¶‡“„?d °ÚÀ”ª¾9 @  ¶ˆ”„?d ðÚÀ;©ç @  ¶‰•„?d 0ÛÀ´È¨ @  ¶Š–„?d pÛÀ6 ßv @  ¶‹—„?d °ÛÀ"k½ @  ¶Œ˜„?d ðÛÀ³|c @  ¶™„?d 0ÜÀæbË @  ¶Žš„?d pÜÀd‚u @  ¶›„?d °ÜÀc渎 @  ¶œ„?d ðÜÀáw¯P @  ¶‘„?d 0ÝÀCÑÎ @  ¶’ž„?d pÝÀÁ@ÙÁ @  ¶“Ÿ„?d °ÝÀ‰6: @  ¶” „?d ðÝÀ‚!ä @  ¶•¡„?d 0ÞÀm²l‚ @  ¶–¢„?d pÞÀï#{\ @  ¶—£„?d °ÞÀEæˆ' @  ¶˜¤„?d ðÞÀÇwŸù @  ¶™¥„?d 0ßÀeÑþ¶ @  ¶š¦„?d pßÀç@éh @  ¶›§„?d uÐàÀ/°ßÀÞn]£ @  ¶œ¨„?d ðßÀ\ÿJ} @  ¶©„?d HàÀ7µù, @  ¶žª„?d ˆàÀ@ûÒ @  ¶Ÿ«„?d ÈàÀ£FÙ @  ¶ ¬„?d áÀsˆ1 @  ¶¡­„?d HáÀƒqrH @  ¶¢®„?d ˆáÀ£„p¶ @  ¶£¯„?d ÈáÀ]ž³± @  ¶¤°„?d âÀÀÚp @  ¶¥±„?d HâÀ0¥é  @  ¶¦²„?d ˆâÀPë÷ @  ¶§³„?d ÈâÀñ ¬ @  ¶¨´„?d ãÀȹD @  ¶©µ„?d HãÀ8Æ{= @  ¶ª¶„?d ˆãÀ3yà @  ¶«·„?d ÈãÀƒyØ( @  ¶¬¸„?d äÀš7+' @  ¶­¹„?d HäÀjHÑ^ @  ¶®º„?d ˆäÀJ½Ó  @  ¶¯»„?d ÈäÀï½  @  ¶°¼„?d åÀ?õ‡ó @  ¶±½„?d HåÀÏŠ}Š @  ¶²¾„?d ˆåÀït @  ¶³¿„?d ÈåÀ|‚¾ @  ¶´À„?d æÀáÆ0 @  ¶µÁ„?d HæÀ¹Ê @  ¶¶„?d ˆæÀ1LÈø @  ¶·Ä?d ÈæÀ9í.£ @  ¶¸Ä„?d çÀ饢K @  ¶¹Å„?d HçÀÚX2 @  ¶ºÆ„?d ˆçÀ9/ZÌ @  ¶»Ç„?d ÈçÀ¢eû' @  ¶¼È„?d èÀ–šw: @  ¶½É„?d HèÀfåC @  ¶¾Ê„?d ˆèÀF½ @  ¶¿Ë„?d ÈèÀ\v$ @  ¶ÀÌ„?d éÀŒYúÌ @  ¶ÁÍ„?d HéÀ|&µ @  ¶Â΄?d ˆéÀ\ÓK @  ¶ÃÏ„?d ÈéÀ¢ÉÁL @  ¶ÄЄ?d êÀ?a @  ¶ÅÑ„?d HêÀÏò›ô @  ¶ÆÒ„?d ˆêÀï™  @  ¶ÇÓ„?d ÈêÀç¦Q @  ¶ÈÔ„?d ëÀ7îó¹ @  ¶ÉÕ„?d HëÀÇ‘ À @  ¶ÊÖ„?d ˆëÀçd > @  ¶Ëׄ?d ÈëÀ|.ªÕ @  ¶ÌØ„?d ìÀe`YÚ @  ¶ÍÙ„?d HìÀ•££ @  ¶ÎÚ„?d ˆìÀµê¡] @  ¶ÏÛ„?d ÈìÀêyæ @  ¶ÐÜ„?d íÀÀ¢õ @  ¶ÑÝ„?d HíÀ0Ýw @  ¶ÒÞ„?d ˆíÀ( ‰ @  ¶Óß„?d ÈíÀs…÷R @  ¶Ôà„?d îÀîÁW“ @  ¶Õá„?d HîÀ¾­ê @  ¶Öâ„?d ˆîÀ>K¯ @  ¶×ã„?d ÈîÀ6êIO @  ¶Øä„?d ïÀæ¢Å§ @  ¶Ùå„?d HïÀÝ?Þ @  ¶Úæ„?d ˆïÀ6(=  @  ¶Ûç„?d ÈïÀ­bœË @  ¶Üè„?d ðÀ¼ y @  ¶Ýé„?d HðÀãÃÚ @  ¶Þê„?d ˆðÀÃ6Øþ @  ¶ßë„?d ÈðÀw0'õ @  ¶àì„?d ñÀ§x« @  ¶áí„?d HñÀWQd @  ¶âî„?d€ ˆñÀ1O< @  ·ï„?d ÈñÀjÄ @  ·ð„?d òÀ.dÓ @  ·ñ„?d HòÀ´eG @  ·ò„?d ˆòÀ”íg¹ @  ·ó„?d ÈòÀRþÞ˜ @  ·ô„?d óÀ‚¶Rp @  ·õ„?d HóÀ¼{÷s @  ·ö„?d ˆóÀœŽõ @  · ÷„?d ÈóÀ¯‹ @  · ø„?d ôÀÛÃ\„ @  · ù„?d HôÀîõ] @  · ú„?d ˆôÀÎ_î @  · û„?d ÈôÀæÏ @  ·ü„?d õÀØ[j' @  ·ý„?d HõÀK7ñÄ @  ·þ„?d ˆõÀkÂó: @  ·ÿ„?d ÈõÀ_׿ƒ @  ·…?d öÀ“FB @  ·…?d HöÀ÷¥GÖ @  ·…?d ˆöÀ×PE( @  ·…?d ÈöÀCü  @  ·…?d ÷ÀÁ pá @  ·…?d H÷ÀÿÆÕâ @  ·…?d ˆ÷Àß3× @  ·…?d È÷À0 @  ·…?d øÀµÏ @  · …?d HøÀ€ù“ @  · …?d ˆøÀ  m @  · …?d ÈøÀf»L @  · …?d ùÀ¶W7¤ @  · …?d HùÀ4=‹÷ @  · …?d ˆùÀȉ  @  ·!…?d ÈùÀ/›±ã @  ·"…?d úÀ²ß" @  ·#…?d HúÀ‡é¶ @  ·$…?d ˆúÀ§H @  ·%…?d ÈúÀa«i @  ·&…?d ûÀ±G' @  ·'…?d HûÀŠ‚‚ @  ·(…?d ˆûÀ¯€| @  ·)…?d ÈûÀñ|Úz @  ·*…?d üÀè2)u @  ·+…?d HüÀÝ(á @  ·,…?d ˆüÀýñ* @  ·-…?d ÈüÀ;â“> @  ·.…?d ýÀëªÖ @  ·/…?d HýÀxÆ„5 @  ·0…?d ˆýÀX3†Ë @  ·1…?d ÈýÀþׇý @  ·2 …?d þÀc“'< @  ·3!…?d HþÀV¥&¨ @  ·4"…?d ˆþÀvP$V @  ·5#…?d ÈþÀ°Cw @  ·6$…?d ÿÀ` Ÿ @  ·7%…?d HÿÀ^Æ´œ @  ·8&…?d ˆÿÀ~3¶b @  ·9uÐÁ'…?d ÈÿÀ 0ìd @  ·:(…?d Áo„Ä• @  ·;)…?d `ÁZ²Å @  ·<*…?d  ÁzGÇÿ @  ·=+…?d àÁ¼T~Þ @  ·>,…?d Álò6 @  ·?-…?d `Á@qH÷ @  ·@.…?d  Á`„J  @  ·A/…?d àÁ[×rã @  ·B0…?d ÁÆ“Ò" @  ·C1…?d `Áó¥Ó¶ @  ·D2…?d  ÁÓPÑH @  ·E3…?d àÁChi @  ·F4…?d ÁÅ ä @  ·G5…?d `ÁûÆA‚ @  ·H6…?d  ÁÛ3C| @  ·I7…?d àÁ…0z @  ·J8…?d Áœ~êu @  ·K9…?d `Á©Hëá @  ·L:…?d  Á‰½é @  ·M;…?d àÁO®P> @  ·N<…?d ÁŸæÜÖ @  ·O=…?d `Á ŠG5 @  ·P>…?d  Á,EË @  ·Q?…?d àÁzËQì @  ·R@…?d Áçñ- @  ·SA…?d `ÁÒ¹ð¹ @  ·TB…?d  ÁòLòG @  ·UC…?d àÁ4_Kf @  ·VD…?d ÁäÇŽ @  ·WE…?d `ÁÚÚb @  ·XF…?d  Áú/`s @  ·YG…?d àÁ¤,:u @  ·ZH…?d ÁÓ¶h @  ·[I…?d `Á¥å·ü @  ·\J…?d  Á…µ @  ·]K…?d àÁC # @  ·^L…?d Á“K€Ë @  ·_M…?d ` Á!<˜ @  ·`N…?d   Á1Ô>f @  ·aO…?d à Á ‡Œ @  ·bP…?d Á—æM @  ·cQ…?d ` Á¢õ§Ù @  ·dR…?d   Á‚¥' @  ·eS…?d à ÁD @  ·fT…?d Á”[î @  ·gU…?d ` Áª–5í @  ·hV…?d   ÁŠc7 @  ·iW…?d à ÁÔ`m @  ·jX…?d ÁÍ.ž @  ·kY…?d ` ÁøŸŽ @  ·lZ…?d   ÁØíp @  ·m[…?d à Áþ$Q @  ·n\…?d Áζ¨¹ @  ·o]…?d ` Á]Ú3Z @  ·p^…?d   Á}/1¤ @  ·q_…?d à ÁÛË0’ @  ·r`…?d ÁFS @  ·sa…?d `Ás¹‘Ç @  ·tb…?d  ÁSL“9 @  ·uc…?d àÁ•_* @  ·vd…?d ÁE¦ð @  ·we…?d `Á{Úó @  ·xf…?d  Á[/  @  ·yg…?d àÁ,[  @  ·zh…?d Á»òç¹ @  ·{i…?d `ÁŽÄæ- @  ·|j…?d  Á®1äÓ @  ·}k…?d àÁh"]ò @  ·~l…?d Á¸jÑ @  ·m…?d `ÁwQ[ê @  ·€n…?d  ÁW¤Y @  ·o…?d àÁl÷aþ @  ·‚p…?d Áñ³Á? @  ·ƒq…?d `ÁÄ…À« @  ·„r…?d  ÁäpÂU @  ·…s…?d àÁ"c{t @  ·†t…?d Áò+÷œ @  ·‡u…?d `ÁÌæRŸ @  ·ˆv…?d  ÁìPa @  ·‰w…?d àÁ² g @  ·Šx…?d Á«^ùh @  ·‹y…?d `Ážhøü @  ·Œz…?d  Á¾ú @  ·{…?d àÁxŽC# @  ·Ž|…?d Á¨ÆÏË @  ·}…?d `Á;ªT( @  ·~…?d  Á_VÖ @  ·‘…?d àÁP-c @  ·’€…?d ÁÍi¶¢ @  ·“…?d `Áø_·6 @  ·”‚…?d  ÁتµÈ @  ·•ƒ…?d àÁ¹ é @  ·–„…?d ÁÎñ€ @  ·—……?d `Áð<% @  ·˜†…?d  ÁÐÉ'ü @  ·™‡…?d àÁŽÊ}ú @  ·šˆ…?d Áº5ñç @  ·›‰…?d `Áðs @  ·œŠ…?d  Á¯öò @  ·‹…?d àÁiåK¬ @  ·žŒ…?d Á¹­ÇD @  ·Ÿ…?d `Á;Ç{ @  · Ž…?d  Á2yé @  ·¡…?d àÁ aA @  ·¢…?d Á½%á @  ·£‘…?d `ÁˆàV @  ·¤’…?d  Á¨æâ¨ @  ·¥“…?d àÁnõ[‰ @  ·¦”…?d Á¾½×a @  ·§•…?d `Á€prb @  ·¨–…?d  Á …pœ @  ·©—…?d àÁþ†*š @  ·ª˜…?d ÁçÈÙ• @  ·«™…?d `ÁÒþØ @  ·¬š…?d  Áò Úÿ @  ·­›…?d àÁ4cÞ @  ·®œ…?d ÁäPï6 @  ·¯…?d `Áw†?d ¸9ÁM/} @  ¸?†?d ø9Áñ W/ @  ¸@†?d 8:ÁlH÷î @  ¸A†?d x:Áœ7 — @  ¸B†?d ¸:Á¼Âi @  ¸C†?d ø:Á¿˜M¥ @  ¸D†?d 8;ÁoÐÁM @  ¸E†?d x;ÁŸ¯;4 @  ¸F†?d ¸;Á¿Z9Ê @  ¸G†?d ø;Á/ë<¶ @  ¸H†?d 8<Á6¥Ï¹ @  ¸I†?d x<ÁÆÚ5À @  ¸J†?d ¸<Áæ/7> @  ¸K†?d ø<Áåuuò @  ¸L†?d 8=Á5=ù @  ¸M†?d x=ÁÅBc @  ¸N†?d ¸=Áå· @  ¸O†?d ø=Á @a1 @  ¸P †?d 8>Á½Áð @  ¸Q!†?d x>ÁM{;‰ @  ¸R"†?d ¸>ÁmŽ9w @  ¸S#†?d ø>ÁnÔ{» @  ¸T$†?d 8?Á¾œ÷S @  ¸U%†?d x?ÁNã * @  ¸V&†?duÐ@Á7 ¸?ÁnÔ @  ¸W'†?d ø?Áƒ'yÔ @  ¸X€(†?d P@Á@‹Ãè @  ¸Y€)†?d @Á,± @  ¸Z€*†?d Ð@Á;o @  ¸[€+†?d AÁÁ‚â• @  ¸\€,†?d PAÁCõK @  ¸]€-†?d AÁ @  ¸^€.†?d ÐAÁ“™ Ì @  ¸_€/†?d BÁÅ Ä @  ¸`€0†?d PBÁG›ÓÍ @  ¸a€1†?d BÁ€<” @  ¸b€2†?d ÐBÁ—+J @  ¸c€3†?d CÁÆ’ò° @  ¸d€4†?d PCÁDån @  ¸e€5†?d CÁ 7 @  ¸f€6†?d ÐCÁ”‰é @  ¸g€7†?d DÁŸçüD @  ¸h€8†?d PDÁvëš @  ¸i€9†?d DÁOmà @  ¸j€:†?d ÐDÁÍü @  ¸k€;†?d EÁœÊç @  ¸l€<†?d PEÁîÝ9 @  ¸m€=†?d EÁLõ2` @  ¸n€>†?d ÐEÁÎd%¾ @  ¸o€?†?d FÁäç @  ¸p€@†?d PFÁf‡ð @  ¸q€A†?d FÁ4œ› @  ¸r€B†?d ÐFÁ¶ E @  ¸s€C†?d GÁçŽÑ¿ @  ¸t€D†?d PGÁeÆa @  ¸u€E†?d GÁ7)8 @  ¸v€F†?d ÐGÁµ•>æ @  ¸w€G†?d HÁ“J Y @  ¸x€H†?d PHÁÛ·‡ @  ¸y€I†?d HÁCÀXÞ @  ¸z€J†?d ÐHÁÁQO @  ¸{€K†?d IÁÒ–ú @  ¸|€L†?d PIÁC$ @  ¸}€M†?d IÁ@Xn} @  ¸~€N†?d ÐIÁÂÉy£ @  ¸€O†?d JÁÙ †ß @  ¸€€P†?d PJÁ[š‘ @  ¸€Q†?d JÁ ~X @  ¸‚€R†?d ÐJÁ‹i† @  ¸ƒ€S†?d KÁÚ“°| @  ¸„€T†?d PKÁX§¢ @  ¸…€U†?d KÁ Hû @  ¸†€V†?d ÐKÁˆˆ_% @  ¸‡€W†?d LÁƒæ¾ˆ @  ¸ˆ€X†?d PLÁw©V @  ¸‰€Y†?d LÁSlF @  ¸Š€Z†?d ÐLÁÑýQÑ @  ¸‹€[†?d MÁ€~ˆ+ @  ¸Œ€\†?d PMÁïŸõ @  ¸€]†?d MÁPôp¬ @  ¸Ž€^†?d ÐMÁÒegr @  ¸€_†?d NÁG°Á @  ¸€`†?d PNÁŠÖ§ @  ¸‘€a†?d NÁØÍHF @  ¸’€b†?d ÐNÁZ\_˜ @  ¸“€c†?d OÁ ߆b @  ¸”€d†?d POÁ‰N‘¼ @  ¸•€e†?d OÁÛU~å @  ¸–€f†?d ÐOÁYÄi; @  ¸—€g†?d PÁõ:Ç+ @  ¸˜€h†?d PPÁw«Ðõ @  ¸™€i†?d PÁ%°?¬ @  ¸š€j†?d ÐPÁ§!(r @  ¸›€k†?d QÁö¢ñˆ @  ¸œ€l†?d PQÁt3æV @  ¸€m†?d QÁ&(  @  ¸ž€n†?d ÐQÁ¤¹Ñ @  ¸Ÿ€o†?d RÁò*× @  ¸ €p†?d PRÁp»ÀÐ @  ¸¡€q†?d RÁ" /‰ @  ¸¢€r†?d ÐRÁ 18W @  ¸£€s†?d SÁñ²á­ @  ¸¤€t†?d PSÁs#ös @  ¸¥€u†?d SÁ!8* @  ¸¦€v†?d ÐSÁ£©ô @  ¸§€w†?d TÁ¨ÇïY @  ¸¨€x†?d PTÁ*Vø‡ @  ¸©€y†?d TÁxMÞ @  ¸ª€z†?d ÐTÁúÜ @  ¸«€{†?d UÁ«_Ùú @  ¸¬€|†?d PUÁ)ÎÎ$ @  ¸­€}†?d UÁ{Õ!} @  ¸®€~†?d ÐUÁùD6£ @  ¸¯€†?d VÁÎð “ @  ¸°€€†?d PVÁLa·M @  ¸±€†?d VÁzX @  ¸²€‚†?d ÐVÁœëOÊ @  ¸³€ƒ†?d WÁÍh–0 @  ¸´€„†?d PWÁOùî @  ¸µ€…†?d WÁân· @  ¸¶€††?d ÐWÁŸsyi @  ¸·€‡†?d XÁ¹¬çÖ @  ¸¸€ˆ†?d PXÁ;=ð @  ¸¹€‰†?d XÁi&Q @  ¸º€І?d ÐXÁë· @  ¸»€‹†?d YÁº4Ñu @  ¸¼€Œ†?d PYÁ8¥Æ« @  ¸½€†?d YÁj¾)ò @  ¸¾€ކ?d ÐYÁè/>, @  ¸¿€†?d ZÁ»ña @  ¸À€†?d PZÁ’*æ¿ @  ¸Á€‘†?d ZÁÀ1 æ @  ¸€’†?d ÐZÁB 8 @  ¸À“†?d [Á#Ç @  ¸Ä€”†?d P[Á‘²Ð @  ¸Å€•†?d [Áé?E @  ¸Æ€–†?d Ð[ÁA8(› @  ¸Ç€—†?d \ÁJVÉ6 @  ¸È€˜†?d P\ÁÈÇÞè @  ¸É€™†?d \ÁšÜ1± @  ¸Ê€š†?d Ð\ÁM&o @  ¸Ë€›†?d ]ÁIÎÿ• @  ¸Ì€œ†?d P]ÁË_èK @  ¸Í€†?d ]Á™D @  ¸΀ž†?d Ð]ÁÕÌ @  ¸Ï€Ÿ†?d ^ÁÁ÷Ç @  ¸Ѐ †?d P^ÁCfС @  ¸Ñ€¡†?d ^Á}?ø @  ¸Ò€¢†?d Ð^Á“ì(& @  ¸Ó€£†?d _ÁÂoñÜ @  ¸Ô€¤†?d P_Á@þæ @  ¸Õ€¥†?d _Áå [ @  ¸uÐ`ÁÖ€¦†?d Ð_Áíômù @  ¸×§†?d (`ÁA,Êà @  ¸Ø¨†?d h`ÁýÝ @  ¸Ù©†?d ¨`Á‘¦2D @  ¸Úª†?d è`Á7%š @  ¸Û«†?d (aÁB´ü` @  ¸Ü¬†?d haÁÀ%ë¾ @  ¸Ý­†?d ¨aÁ’>ç @  ¸Þ®†?d èaÁ¯9 @  ¸ß¯†?d (bÁF<Úæ @  ¸à°†?d hbÁÄ­Í8 @  ¸á±†?d ¨bÁ–¶"a @  ¸â²†?d€ èbÁ`ä) @  ¹³†?d (cÁÐ&¸Ê @  ¹´†?d hcÁR·¯ @  ¹µ†?d ¨cÁÅå»  @  ¹¶†?d ècÁGt¬~ @  ¹·†?d (dÁ‚¨© @  ¹¸†?d hdÁ9w @  ¹¹†?d ¨dÁœµT @  ¹º†?d èdÁ¢Š @  ¹ »†?d (eÁŠË€ @  ¹ ¼†?d heÁZ—C @  ¹ ½†?d ¨eÁŸƒ÷ @  ¹ ¾†?d èeÁ™”) @  ¹ ¿†?d (fÁTø7 @  ¹À†?d hfÁÖi Ï @  ¹Á†?d ¨fÁça®  @  ¹†?d èfÁeð¹Ò @  ¹Æ?d (gÁñ:›Å @  ¹Ć?d hgÁs«Œ @  ¹ņ?d ¨gÁäù˜¯ @  ¹Ɔ?d ègÁfhq @  ¹dž?d (hÁŽN´ @  ¹Ȇ?d hhÁ ”Yj @  ¹Ɇ?d ¨hÁ=éI @  ¹ʆ?d èhÁ¬þ— @  ¹ˆ?d (iÁ†fÜ€ @  ¹̆?d hiÁ÷Ë^ @  ¹͆?d ¨iÁ“¥ßê @  ¹Ά?d èiÁ4È4 @  ¹φ?d (jÁ5²GÁ @  ¹І?d hjÁ·#P @  ¹ц?d ¨jÁ—-ùl @  ¹ Ò†?d èjÁ¼î² @  ¹!Ó†?d (kÁvÌ¥ @  ¹"Ô†?d hkÁçÛ{ @  ¹#Õ†?d ¨kÁ”µÏÏ @  ¹$Ö†?d èkÁ$Ø @  ¹%׆?d (lÁÓøfÆ @  ¹&؆?d hlÁQiq @  ¹'Ù†?d ¨lÁÍÀÁ; @  ¹(Ú†?d èlÁOQÖå @  ¹)Û†?d (mÁÛ›ôò @  ¹*܆?d hmÁY ã, @  ¹+݆?d ¨mÁÎX÷˜ @  ¹,Þ†?d èmÁLÉàF @  ¹-߆?d (nÁõøVo @  ¹.à†?d hnÁwiA± @  ¹/á†?d ¨nÁFaÏr @  ¹0â†?d ènÁÄðج @  ¹1ã†?d (oÁP:ú» @  ¹2ä†?d hoÁÒ«íe @  ¹3å†?d ¨oÁEùùÑ @  ¹4æ†?d èoÁÇhî @  ¹5ç†?d (pÁ¥$e @  ¹6è†?d hpÁ'µ» @  ¹7é†?d ¨pÁ»¸˜ @  ¹8ê†?d èpÁ9¯F @  ¹9ë†?d (qÁ­GQ @  ¹:ì†?d hqÁ/Öš @  ¹;í†?d ¨qÁ¸„Ž; @  ¹<î†?d èqÁ:™å @  ¹=ï†?d (rÁ“ @  ¹>ð†?d hrÁœÎ @  ¹?ñ†?d ¨rÁ ®/ @  ¹@ò†?d èrÁš¹ñ @  ¹Aó†?d (sÁP›æ @  ¹Bô†?d hsÁ†ÁŒ8 @  ¹Cõ†?d ¨sÁ“˜Œ @  ¹Dö†?d èsÁ“R @  ¹E÷†?d (tÁVÞ1… @  ¹Fø†?d htÁÔO&[ @  ¹Gù†?d ¨tÁHæ–x @  ¹Hú†?d ètÁÊw¦ @  ¹Iû†?d (uÁ^½£± @  ¹Jü†?d huÁÜ,´o @  ¹Ký†?d ¨uÁK~ Û @  ¹Lþ†?d èuÁÉï· @  ¹Mÿ†?d (vÁâ/£ @  ¹N‡?d hvÁ`¾} @  ¹O‡?d ¨vÁQ¶Œ¾ @  ¹P‡?d èvÁÓ'›` @  ¹Q‡?d (wÁGí¹w @  ¹R‡?d hwÁÅ|®© @  ¹S‡?d ¨wÁR.º @  ¹T‡?d èwÁп­Ã @  ¹U‡?d (xÁ8Òl @  ¹V‡?d hxÁºC{Ø @  ¹W ‡?d ¨xÁ&êËû @  ¹X ‡?d èxÁ¤{Ü% @  ¹Y ‡?d (yÁ0±þ2 @  ¹Z ‡?d hyÁ² éì @  ¹[ ‡?d ¨yÁ%rýX @  ¹\‡?d èyÁ§ãê† @  ¹]‡?d (zÁƒees @  ¹^‡?d hzÁôr­ @  ¹_‡?d ¨zÁ!úÛÞ @  ¹`‡?d èzÁ£kÌ @  ¹a‡?d ({Á7¡î @  ¹b‡?d h{Áµ0ùÉ @  ¹c‡?d ¨{Á"bí} @  ¹d‡?d è{Á óú£ @  ¹e‡?d (|Áe/Dt @  ¹f‡?d h|Áç¾Sª @  ¹g‡?d ¨|Á{㉠@  ¹h‡?d è|Áù†ôW @  ¹i‡?d (}ÁmLÖ@ @  ¹j‡?d h}ÁïÝÁž @  ¹k‡?d ¨}ÁxÕ* @  ¹l‡?d è}ÁúÂô @  ¹m‡?d (~ÁC/tÝ @  ¹n ‡?d h~ÁÁ¾c @  ¹o!‡?d ¨~Áð¶íÀ @  ¹p"‡?d è~Ár'ú @  ¹q#‡?d (ÁæíØ  @  ¹r$‡?d hÁd|Ï× @  ¹s%‡?d ¨ÁuЀÁ'ó.Ûc @  ¹t&‡?d èÁq¿Ì½ @  ¹u'‡?d @€ÁÓc @  ¹v(‡?d €€Áãfaï @  ¹w)‡?d À€ÁÝ«Äì @  ¹x*‡?d Á ãH @  ¹y+‡?d @ÁËðñ% @  ¹z,‡?d €ÁëóÛ @  ¹{-‡?d ÀÁÞ3òO @  ¹|.‡?d ‚ÁCwRŽ @  ¹}/‡?d @‚Áx$jd @  ¹~0‡?d €‚ÁXÑhš @  ¹1‡?d À‚Á—êâj @  ¹€2‡?d ƒÁG¢n‚ @  ¹3‡?d @ƒÁ±×£ @  ¹‚4‡?d €ƒÁ¡DÕ] @  ¹ƒ5‡?d ÀƒÁ”rÔÉ @  ¹„6‡?d „Á<'Æ @  ¹…7‡?d @„ÁÓ?}À @  ¹†8‡?d €„ÁóÊ> @  ¹‡9‡?d À„ÁÍÚ= @  ¹ˆ:‡?d …ÁOVÕ @  ¹‰;‡?d @…ÁÛ\ïô @  ¹Š<‡?d €…Áû©í  @  ¹‹=‡?d À…ÁΟìž @  ¹Œ>‡?d †ÁSÛL_ @  ¹?‡?d @†ÁoXx @  ¹Ž@‡?d €†Á%šZ† @  ¹A‡?d À†Á¶öÁe @  ¹B‡?d ‡Áf¾M @  ¹‘C‡?d @‡Á ­ô¬ @  ¹’D‡?d €‡Á€XöR @  ¹“E‡?d À‡Áµn÷Æ @  ¹”F‡?d ˆÁ‘{Û @  ¹•G‡?d @ˆÁß’!Ý @  ¹–H‡?d €ˆÁÿg## @  ¹—I‡?d ÀˆÁÁª†  @  ¹˜J‡?d ‰Áâ È @  ¹™K‡?d @‰Á×ñ³é @  ¹šL‡?d €‰Á÷± @  ¹›M‡?d À‰ÁÂ2°ƒ @  ¹œN‡?d ŠÁ_vB @  ¹O‡?d @ŠÁd%(¨ @  ¹žP‡?d €ŠÁDÐ*V @  ¹ŸQ‡?d ÀŠÁƺ– @  ¹ R‡?d ‹Áòí @  ¹¡S‡?d @‹ÁÐá£Ì @  ¹¢T‡?d €‹Áð¡2 @  ¹£U‡?d À‹ÁÅ" ¦ @  ¹¤V‡?d ŒÁÜlS© @  ¹¥W‡?d @ŒÁ‚o ¯ @  ¹¦X‡?d €ŒÁ¢š Q @  ¹§Y‡?d ÀŒÁœW®R @  ¹¨Z‡?d ÁL"º @  ¹©[‡?d @ÁŠ ›› @  ¹ª\‡?d €Áªù™e @  ¹«]‡?d ÀÁŸÏ˜ñ @  ¹¬^‡?d ŽÁ‹80 @  ¹­_‡?d @ŽÁ¤o9 @  ¹®`‡?d €ŽÁ„š;ø @  ¹¯a‡?d ÀŽÁö  @  ¹°b‡?d ÁǾ,ó @  ¹±c‡?d @Á­•Ò @  ¹²d‡?d €Á!X—, @  ¹³e‡?d ÀÁn–¸ @  ¹´f‡?d Áª°*  @  ¹µg‡?d @Áô³p  @  ¹¶h‡?d €ÁÔFrò @  ¹·i‡?d ÀÁê‹×ñ @  ¹¸j‡?d ‘Á:Ã[ @  ¹¹k‡?d @‘ÁüÐâ8 @  ¹ºl‡?d €‘ÁÜ%àÆ @  ¹»m‡?d À‘ÁéáR @  ¹¼n‡?d ’ÁtWA“ @  ¹½o‡?d @’ÁOyy @  ¹¾p‡?d €’Áoñ{‡ @  ¹¿q‡?d À’ÁCœÁF @  ¹Àr‡?d “Á“ÔM® @  ¹Ás‡?d @“ÁUÇô @  ¹Ât‡?d €“Áu2öq @  ¹Ãu‡?d À“Á@÷å @  ¹Äv‡?d ”ÁYJê @  ¹Åw‡?d @”ÁI^ì @  ¹Æx‡?d €”Á'¼\ @  ¹Çy‡?d À”Áqù @  ¹Èz‡?d •ÁÉ9uù @  ¹É{‡?d @•Á*ÌØ @  ¹Ê|‡?d €•Á/ßÎ& @  ¹Ë}‡?d À•Áéϲ @  ¹Ì~‡?d –Á‡­os @  ¹Í‡?d @–ÁÌß/Æ @  ¹Î€‡?d €–Áì*-8 @  ¹Ï‡?d À–ÁF¶Û @  ¹Ð‚‡?d —Á¯:3 @  ¹Ñƒ‡?d @—Áiƒ @  ¹Ò„‡?d €—ÁIèì @  ¹Ó…‡?d À—Á|Þ€x @  ¹Ô†‡?d ˜ÁH! e @  ¹Õ‡‡?d @˜Á"Vc @  ¹Öˆ‡?d €˜Á6×T @  ¹×‰‡?d À˜Áñž @  ¹ØЇ?d ™ÁØR}v @  ¹Ù‹‡?d @™ÁAÄW @  ¹ÚŒ‡?d €™Á>´Æ© @  ¹Û‡?d À™Á ‚Ç= @  ¹Üއ?d šÁ–Ægü @  ¹Ý‡?d @šÁ­•_ @  ¹Þ‡?d €šÁ`]è @  ¹ß‘‡?d ÀšÁ á» @  ¹à’‡?d ›ÁßBmS @  ¹á“‡?d @›ÁQÔr @  ¹â”‡?d€ €›Áøã!Œ @  º•‡?d À›Á,”h1 @  º–‡?d œÁ5Ú›> @  º—‡?d @œÁ®:Õ @  º˜‡?d €œÁŽe8+ @  º™‡?d ÀœÁ~ÂR @  ºš‡?d Á®RNº @  º›‡?d @Á¦ó¨á @  ºœ‡?d €Á†ª @  º ‡?d ÀÁvyPf @  º ž‡?d žÁë=ð§ @  º Ÿ‡?d @žÁˆ | @  º  ‡?d €žÁ¨e‚ @  º ¡‡?d ÀžÁXòû @  º¢‡?d ŸÁˆR~ @  º£‡?d @ŸÁ-R¦¨ @  º¤‡?d €ŸÁ §¤V @  º¥‡uРÁ?d ÀŸÁýØ^/ @  º¦‡?d  ÁŒÓ€I @  º§‡?d X Á™!¢ @  º¨‡?d ˜ Á7l#\ @  º©‡?d Ø ÁÇÙ% @  ºª‡?d ¡Á[UÍ @  º«‡?d X¡Áú³– @  º¬‡?d ˜¡Á?±h @  º­‡?d Ø¡ÁÏpK @  º®‡?d ¢ÁR4ëÐ @  º¯‡?d X¢Á¬.(× @  º°‡?d ˜¢ÁŒÛ*) @  º±‡?d Ø¢Á|¤ÐP @  º²‡?d £Á¬ì\¸ @  º³‡?d X£Áꣳ @  º ´‡?d ˜£Á8¡M @  º!µ‡?d Ø£ÁÈ`[4 @  º"¶‡?d ¤ÁÑ.¨; @  º#·‡?d X¤ÁJd Ð @  º$¸‡?d ˜¤Áj‘ . @  º%¹‡?d ؤÁšîñW @  º&º‡?d ¥ÁJ¦}¿ @  º'»‡?d X¥ÁB›ä @  º(¼‡?d ˜¥Árêf @  º)€½‡?d Ø¥Áï  @  º*€¾‡?d ¦ÁrI°Þ @  º+€¿‡?d X¦Áá´_ @  º,€À‡?d ˜¦ÁÁA]ê @  º-€Á‡?d ئÁ1>§“ @  º.€‡?d §Ááv+{ @  º/€Ç?d X§ÁDvóÀ @  º0€ć?d ˜§Ádƒñ> @  º1€Ň?d اÁ”ü G @  º2€Ƈ?d ¨Á ‡Z @  º3€LJ?d X¨Á;I&± @  º4€ȇ?d ˜¨Á¼$O @  º5€ɇ?d بÁëÃÞ6 @  º6€ʇ?d ©Á;‹RÞ @  º7€ˇ?d X©Á3*´… @  º8€̇?d ˜©Áß¶{ @  º9€͇?d Ø©Áã L @  º:€·?d ªÁ~äìà @  º;€χ?d XªÁ€þ/Ä @  º<€Ї?d ˜ªÁ  -: @  º=€ч?d تÁPt×C @  º>€Ò‡?d «Á€<[« @  º?€Ó‡?d X«Áš=¢2 @  º@€Ô‡?d ˜«ÁºÈ Ì @  ºA€Õ‡?d Ø«ÁJ·Zµ @  ºB€Ö‡?d ¬ÁSù©º @  ºC€ׇ?d X¬ÁȳQ @  ºD€؇?d ˜¬ÁèF ¯ @  ºE€Ù‡?d جÁ9ðÖ @  ºF€Ú‡?d ­ÁÈq|> @  ºG€Û‡?d X­ÁÀКe @  ºH€܇?d ˜­Áà%˜› @  ºI€݇?d Ø­ÁZbâ @  ºJ€Þ‡?d ®ÁÂ# @  ºK€߇?d X®Áî³8ø @  ºL€à‡?d ˜®ÁÎF: @  ºM€á‡?d Ø®Á>9À @  ºN€â‡?d ¯ÁîqL— @  ºO€ã‡?d X¯ÁKq”, @  ºP€ä‡?d ˜¯Ák„–Ò @  ºQ€å‡?d دÁ›ûl« @  ºR€æ‡?d °Á%%Ð @  ºS€ç‡?d X°Á¾oqò @  ºT€è‡?d ˜°Ážšs  @  ºU€é‡?d ذÁnå‰u @  ºV€ê‡?d ±Á¾­ @  ºW€ë‡?d X±Á¶ ãÆ @  ºX€ì‡?d ˜±Á–ùá8 @  ºY€í‡?d رÁf†A @  ºZ€î‡?d ²Áû»€ @  º[€ï‡?d X²ÁØx‡ @  º\€ð‡?d ˜²Á%-zy @  º]€ñ‡?d زÁÕR€ @  º^€ò‡?d ³Á è @  º_€ó‡?d X³Á±óã @  º`€ô‡?d ˜³Á‘éñ @  ºa€õ‡?d سÁa– d @  ºb€ö‡?d ´ÁxØøk @  ºc€÷‡?d X´Áã’Y€ @  ºd€ø‡?d ˜´ÁÃg[~ @  ºe€ù‡?d Ø´Á3¡ @  ºf€ú‡?d µÁãP-ï @  ºg€û‡?d XµÁëñË´ @  ºh€ü‡?d ˜µÁËÉJ @  ºi€ý‡?d صÁ;{33 @  ºj€þ‡?d ¶Á¦?“ò @  ºk€ÿ‡?d X¶Á²PLI @  ºl€ˆ?d ˜¶Á’¥N· @  ºm€ˆ?d ضÁbÚ´Î @  ºn€ˆ?d ·Á²’8& @  ºo€ˆ?d X·Á’à @  ºp€ˆ?d ˜·Á7gâc @  ºq€ˆ?d Ø·ÁÇ @  ºr€ˆ?d ¸Áóç” @  ºs€ˆ?d X¸Áh­5ì @  ºt€ˆ?d ˜¸ÁHX7 @  ºu€ ˆ?d ظÁ¸'Ík @  ºv€ ˆ?d ¹ÁhoAƒ @  ºw€ ˆ?d X¹Á`ΧØ @  ºx€ ˆ?d ˜¹Á@;¥& @  ºy€ ˆ?d عÁ°D__ @  ºz€ˆ?d ºÁ-ÿž @  º{€ˆ?d XºÁÓ<™ @  º|€ˆ?d ˜ºÁóï>g @  º}€ˆ?d غÁÄ @  º~€ˆ?d »ÁÓØHö @  º€ˆ?d X»Á*^ @  º€€ˆ?d ˜»Á zƒ  @  º€ˆ?d Ø»ÁúyÙ @  º‚€ˆ?d ¼ÁãKŠÖ @  ºƒ€ˆ?d X¼Áx+= @  º„€ˆ?d ˜¼ÁXô)à @  º…€ˆ?d ؼÁ¨‹Óº @  º†€ˆ?d ½ÁxÃ_R @  º‡€ˆ?d X½Ápb¹  @  ºˆ€ˆ?d ˜½ÁP—»÷ @  º‰€ˆ?d ؽÁ èAŽ @  ºŠ€ˆ?d ¾Á=¬áO @  º‹€ˆ?d X¾Á^” @  ºŒ€ ˆ?d ˜¾Á~ôj @  º€!ˆ?d ؾÁŽ‹ã @  ºŽ€"ˆ?d ¿Á^Ãoû @  º€#ˆ?d X¿Áû÷@ @  º€$ˆ?d ˜¿ÁÛ6µ¾ @uÐÀÁ  º‘€%ˆ?d Ø¿Áoàn @  º’ &ˆ?d 0ÀÁ þ±< @  º“ 'ˆ?d pÀÁ´× @  º” (ˆ?d °ÀÁ°A) @  º• )ˆ?d ðÀÁ@>èP @  º– *ˆ?d 0ÁÁvd¸ @  º— +ˆ?d pÁÁ˜×‚ã @  º˜ ,ˆ?d °ÁÁ¸"€ @  º™ -ˆ?d ðÁÁH]zd @  ºš .ˆ?d 0ÂÁÕÚ¥ @  º› /ˆ?d pÂÁ+¢ @  ºœ 0ˆ?d °ÂÁ ö\ @  º 1ˆ?d ðÂÁû‰á% @  ºž 2ˆ?d 0ÃÁ+ÁmÍ @  ºŸ 3ˆ?d pÃÁŸÇ’Æ @  º  4ˆ?d °ÃÁ¿28 @  º¡ 5ˆ?d ðÃÁOMjA @  º¢ 6ˆ?d 0ÄÁV™N @  º£ 7ˆ?d pÄÁÍI8¥ @  º¤ 8ˆ?d °ÄÁí¼:[ @  º¥ 9ˆ?d ðÄÁÃÀ" @  º¦ :ˆ?d 0ÅÁÍ‹LÊ @  º§ ;ˆ?d pÅÁÅ*ª‘ @  º¨ <ˆ?d °ÅÁåߨo @  º© =ˆ?d ðÅÁ R @  ºª >ˆ?d 0ÆÁˆäò× @  º« ?ˆ?d pÆÁ @  º¬ @ˆ?d °ÆÁ;ìã @  º­ Aˆ?d ðÆÁË“åš @  º® Bˆ?d 0ÇÁÛir @  º¯ Cˆ?d pÇÁ¾Û±É @  º° Dˆ?d °ÇÁž.³7 @  º± Eˆ?d ðÇÁnQIN @  º² Fˆ?d 0ÈÁZ®ÅS @  º³ Gˆ?d pÈÁÁäd¸ @  º´ Hˆ?d °ÈÁáfF @  ºµ Iˆ?d ðÈÁnœ? @  º¶ Jˆ?d 0ÉÁÁ&× @  º· Kˆ?d pÉÁɇöŒ @  º¸ Lˆ?d °ÉÁérôr @  º¹ Mˆ?d ðÉÁ   @  ºº Nˆ?d 0ÊÁ„I®Ê @  º» Oˆ?d pÊÁzSmÍ @  º¼ Pˆ?d °ÊÁZ¦o3 @  º½ Qˆ?d ðÊÁªÙ•J @  º¾ Rˆ?d 0ËÁz‘¢ @  º¿ Sˆ?d pËÁ`à; @  ºÀ Tˆ?d °ËÁ@eâÅ @  ºÁ Uˆ?d ðËÁ°¼ @  º Vˆ?d 0ÌÁ©Të³ @  ºà Wˆ?d pÌÁ2JX @  ºÄ Xˆ?d °ÌÁëH¦ @  ºÅ Yˆ?d ðÌÁ┲ß @  ºÆ Zˆ?d 0ÍÁ2Ü>7 @  ºÇ [ˆ?d pÍÁ:}Øl @  ºÈ \ˆ?d °ÍÁˆÚ’ @  ºÉ ]ˆ?d ðÍÁê÷ ë @  ºÊ ^ˆ?d 0ÎÁw³€* @  ºË _ˆ?d pÎÁzñ @  ºÌ `ˆ?d °ÎÁ4ëx @  ºÍ aˆ?d ðÎÁÄ”‚v @  ºÎ bˆ?d 0ÏÁÜž @  ºÏ cˆ?d pÏÁ±ÜÖ% @  ºÐ dˆ?d °ÏÁ‘)ÔÛ @  ºÑ eˆ?d ðÏÁaV.¢ @  ºÒ fˆ?d 0ÐÁ߈’ @  ºÓ gˆ?d pÐÁDÂ3û @  ºÔ hˆ?d °ÐÁd71 @  ºÕ iˆ?d ðÐÁ”HË| @  ºÖ jˆ?d 0ÑÁDG” @  º× kˆ?d pÑÁL¡¡Ï @  ºØ lˆ?d °ÑÁlT£1 @  ºÙ mˆ?d ðÑÁœ+YH @  ºÚ nˆ?d 0ÒÁoù‰ @  ºÛ oˆ?d pÒÁÿu:Ž @  ºÜ pˆ?d °ÒÁ߀8p @  ºÝ qˆ?d ðÒÁ/ÿ  @  ºÞ rˆ?d 0ÓÁÿ·Ná @  ºß sˆ?d pÓÁK±±ê @  ºà tˆ?d °ÓÁkD³ @  ºá uˆ?d ðÓÁ›;Im @  ºâ vˆ?d€ 0ÔÁö¶¦Ä @  » wˆ?d pÔÁŒ½O @  » xˆ?d °ÔÁ¬HMø @  » yˆ?d ðÔÁ™~Ll @  » zˆ?d 0ÕÁI6À„ @  » {ˆ?d pÕÁ%y¥ @  » |ˆ?d °ÕÁ¯Ð{[ @  » }ˆ?d ðÕÁ‘ÞX @  » ~ˆ?d 0ÖÁ Y~™ @  » ˆ?d pÖÁG+>, @  » €ˆ?d °ÖÁgÞ<Ò @  » ˆ?d ðÖÁRè=F @  » ‚ˆ?d 0×Á‚ ±® @  » ƒˆ?d p×ÁD³ @  » „ˆ?d °×ÁdF q @  » …ˆ?d ð×Á÷*‘’ @  » †ˆ?d 0ØÁÃÕ @  » ‡ˆ?d pØÁÖG‰ @  » ˆˆ?d °ØÁ½#Ew @  » ‰ˆ?d ðØÁˆDã @  » Šˆ?d 0ÙÁX]È  @  » ‹ˆ?d pÙÁžNq* @  » Œˆ?d °ÙÁ¾»sÔ @  » ˆ?d ðÙÁ€vÖ× @  » Žˆ?d 0ÚÁ2v @  » ˆ?d pÚÁ&aNü @  » ˆ?d °ÚÁ”L @  » ‘ˆ?d ðÚÁ3¢M– @  » ’ˆ?d 0ÛÁãêÁ~ @  » “ˆ?d pÛÁ%ùx_ @  » ”ˆ?d °ÛÁ z¡ @  » •ˆ?d ðÛÁ‡fÆò @  » –ˆ?d 0ÜÁž(5ý @  »! —ˆ?d pÜÁÀ+oû @  »" ˜ˆ?d °ÜÁàÞm @  »# ™ˆ?d ðÜÁÕèl‘ @  »$ šˆ?d 0ÝÁ ày @  »% ›ˆ?d pÝÁóYX @  »& œˆ?d °ÝÁãF[¦ @  »' ˆ?d ðÝÁÝ‹þ¥ @  »( žˆ?d 0ÞÁ@Ï^d @  ») Ÿˆ?d pÞÁæ+_R @  »*  ˆ?d °ÞÁÆÞ]¬ @  »+ ¡ˆ?d ðÞÁóè\8 @  », ¢ˆ?d 0ßÁ# ÐÐ @  »- £ˆ?d pßÁå³iñ @  ». ¤ˆ?d uÐàÁ/°ßÁÅFk @  »/ ¥ˆ?d ðßÁoí,9 @  »0¦ˆ?d HàÁvIrÏ @  »1§ˆ?d ˆàÁŠ.=é @  »2¨ˆ?d ÈàÁ¿*7 @  »3©ˆ?d áÁoP°• @  »4ªˆ?d HáÁíÁ§K @  »5«ˆ?d ˆáÁ‰¶ J @  »6¬ˆ?d ÈáÁ '” @  »7­ˆ?d âÁ*?ˆ @  »8®ˆ?d HâÁ¨®V @  »9¯ˆ?d ˆâÁ1™4œ @  »:°ˆ?d ÈâÁ³#B @  »;±ˆ?d ãÁÔç¹à @  »<²ˆ?d HãÁVv®> @  »=³ˆ?d ˆãÁ2? @  »>´ˆ?d ÈãÁ°á @  »?µˆ?d äÁ"Kñ @  »@¶ˆ?d HäÁ…³\/ @  »A·ˆ?d ˆäÁyÔ  @  »B¸ˆ?d ÈäÁûE× @  »C¹ˆ?d åÁœªžu @  »Dºˆ?d HåÁ;‰« @  »E»ˆ?d ˆåÁzL%ª @  »F¼ˆ?d ÈåÁøÝ2t @  »G½ˆ?d æÁÙÅ h @  »H¾ˆ?d HæÁ[T7¶ @  »I¿ˆ?d ˆæÁ¯„6± @  »JÀˆ?d ÈæÁ-!o @  »KÁˆ?d çÁJú»Í @  »Lˆ?d HçÁÈk¬ @  »MÈ?d ˆçÁ¬ @  »NĈ?d ÈçÁ.Ì @  »Oň?d èÁ ì @  »Pƈ?d HèÁ‰2 @  »QLj?d ˆèÁuyO @  »RȈ?d ÈèÁ÷èXÊ @  »SɈ?d éÁÂh @  »Tʈ?d HéÁ–Õ¶ @  »Uˈ?d ˆéÁváy· @  »V̈?d ÈéÁôpni @  »W͈?d êÁÕh|u @  »XΈ?d HêÁWùk« @  »Yψ?d ˆêÁÎÎFa @  »ZЈ?d ÈêÁL_Q¿ @  »[ш?d ëÁ+°Ë @  »\Òˆ?d HëÁ©!Üà @  »]Óˆ?d ˆëÁÍVp @  »^Ôˆ?d ÈëÁOÇg @  »_Õˆ?d ìÁVr?ž @  »`Öˆ?d HìÁÔã(@ @  »a׈?d ˆìÁ(„gf @  »b؈?d ÈìÁªp¸ @  »cÙˆ?d íÁÍúê @  »dÚˆ?d HíÁOkýÄ @  »eÛˆ?d ˆíÁ+QÅ @  »f܈?d ÈíÁ©F @  »g݈?d îÁˆ•T @  »hÞˆ?d HîÁ CÙ @  »i߈?d ˆîÁ„WÏ @  »jàˆ?d ÈîÁŒ@ @  »káˆ?d ïÁëúÚ³ @  »lâˆ?d HïÁikÍm @  »mãˆ?d ˆïÁ al @  »näˆ?d ÈïÁv² @  »oåˆ?d ðÁ ®F= @  »pæˆ?d HðÁ¢?Qã @  »qçˆ?d ˆðÁ^XÅ @  »rèˆ?d ÈðÁÜÉ  @  »séˆ?d ñÁ»&“¹ @  »têˆ?d HñÁ9·„g @  »uëˆ?d ˆñÁ]À(f @  »vìˆ?d ÈñÁßQ?¸ @  »wíˆ?d òÁþI-¤ @  »xîˆ?d HòÁ|Ø:z @  »yïˆ?d ˆòÁåï° @  »zðˆ?d ÈòÁg~n @  »{ñˆ?d óÁ‘šÌ @  »|òˆ?d HóÁ‚ @  »}óˆ?d ˆóÁæw! @  »~ôˆ?d ÈóÁdæ6Í @  »õˆ?d ôÁ0Xì @  »€öˆ?d HôÁ²“O2 @  »÷ˆ?d ˆôÁNô @  »‚øˆ?d ÈôÁÌeÊ @  »ƒùˆ?d õÁ«Šh @  »„úˆ?d HõÁ)š¶ @  »…ûˆ?d ˆõÁMl6· @  »†üˆ?d ÈõÁÏý!i @  »‡ýˆ?d öÁîå3u @  »ˆþˆ?d HöÁlt$« @  »‰ÿˆ?d ˆöÁú$2 @  »Š‰?d ÈöÁx”3ì @  »‹‰?d ÷Á{©N @  »Œ‰?d H÷Áê¾ @  »‰?d ˆ÷Áù‘ @  »Ž‰?d È÷Á{ O @  »‰?d øÁ^o @  »‰?d HøÁÜŸ± @  »‘‰?d ˆøÁ ø]— @  »’‰?d ÈøÁ¢iJI @  »“ ‰?d ùÁņÐë @  »” ‰?d HùÁGÇ5 @  »• ‰?d ˆùÁ#`k4 @  »– ‰?d ÈùÁ¡ñ|ê @  »— ‰?d úÁ€énö @  »˜‰?d HúÁxy( @  »™‰?d ˆúÁ›OTâ @  »š‰?d ÈúÁÞC< @  »›‰?d ûÁ~1Ùž @  »œ‰?d HûÁü Î@ @  »‰?d ˆûÁ˜×bA @  »ž‰?d ÈûÁFuŸ @  »Ÿ‰?d üÁó- @  » ‰?d HüÁb:à @  »¡‰?d ˆüÁ}uå @  »¢‰?d ÈüÁÿ”b; @  »£‰?d ýÁ˜{ø™ @  »¤‰?d HýÁêïG @  »¥‰?d ˆýÁ~CF @  »¦‰?d ÈýÁü T˜ @  »§‰?d þÁÝF„ @  »¨‰?d HþÁ_…QZ @  »©‰?d ˆþÁ[EL @  »ª ‰?d ÈþÁÙ”R’ @  »«!‰?d ÿÁ¾{È0 @  »¬"‰?d HÿÁ<êßî @  »­#‰?d ˆÿÁXsï @  »®uÐÂ$‰?d ÈÿÁÚ d1 @  »¯%‰?d ÂÏ  @  »°&‰?d `ÂM‘·Å @  »±'‰?d  Â±öøã @  »²(‰?d àÂ3gï= @  »³)‰?d ÂTˆuŸ @  »´*‰?d `ÂÖbA @  »µ+‰?d  Â²nÎ@ @  »¶,‰?d àÂ0ÿÙž @  »·-‰?d ÂçË‚ @  »¸.‰?d `“vÜ\ @  »¹/‰?d  Â Añ– @  »º0‰?d àÂˆÐæH @  »»1‰?d Âï?|ê @  »¼2‰?d `Âm®k4 @  »½3‰?d  Â ÙÇ5 @  »¾4‰?d à‹HÐë @  »¿5‰?d Â<úŽû @  »À6‰?d `¾k™% @  »Á7‰?d  ÂB Ö @  »Â8‰?d àÂÀÁÝ @  »Ã9‰?d §r[ @  »Ä:‰?d `Â%ãL¡ @  »Å;‰?d  ÂA”à  @  »Æ<‰?d àÂÃ÷~ @  »Ç=‰?d Ââåb @  »È>‰?d `Â`Œò¼ @  »É?‰?d  Â”\ó» @  »Ê@‰?d àÂÍäe @  »ËA‰?d Âq"~Ç @  »ÌB‰?d `Âó³i @  »ÍC‰?d  Â—ÄÅ @  »ÎD‰?d àÂUÒÆ @  »ÏE‰?d Â0WÒæ @  »ÐF‰?d `²ÆÅ8 @  »ÑG‰?d  ÂN¡Š @  »ÒH‰?d àÂÌ0À @  »ÓI‰?d «ßb @  »ÔJ‰?d ` Â)N¼ @  »ÕK‰?d   ÂM9¼½ @  »ÖL‰?d à ÂϨ«c @  »×M‰?d Âî°¹ @  »ØN‰?d ` Âl!®¡ @  »ÙO‰?d   Âõƒk @  »ÚP‰?d à Âw‡”µ @  »ÛQ‰?d Âh @  »ÜR‰?d ` Â’ùÉ @  »ÝS‰?d   Âö޵È @  »ÞT‰?d à Ât¢ @  »ßU‰?d Âmªú” @  »àV‰?d ` Âï;íJ @  »áW‰?d   Â\¢l @  »âX‰?d€ à ›  @  ¼Y‰?d ‘5Ï€ @  ¼Z‰?d ` ¤Ø^ @  ¼[‰?d   ²š² @  ¼\‰?d à Â0 ˜l @  ¼]‰?d Âß¡Õ  @  ¼^‰?d `Â]0ÂÔ @  ¼_‰?d  Â—‰¸ @  ¼`‰?d à“žf @  ¼ a‰?d ·5ÿ) @  ¼ b‰?d `Â5¤è÷ @  ¼ c‰?d  Â”š¿ @  ¼ d‰?d ࠨŠ@  ¼ e‰?d ÂÚ;ùÐ @  ¼f‰?d `ÂXªî @  ¼g‰?d  ÂÇÞÀ² @  ¼h‰?d àÂEO×l @  ¼i‰?d Âçé¶# @  ¼j‰?d `Âex¡ý @  ¼k‰?d  ÂÄFö @  ¼l‰?d àÂF×áÏ @  ¼m‰?d ©}¬© @  ¼n‰?d `Â+ì»w @  ¼o‰?d  Â|iÉÇ @  ¼p‰?d àÂþøÞ @  ¼q‰?d Â\^¿V @  ¼r‰?d `ÂÞϨˆ @  ¼s‰?d  Âñÿd @  ¼t‰?d àÂý`èº @  ¼u‰?d –Àö @  ¼v‰?d `ÂQáÌ @  ¼w‰?d  Âš#èÀ @  ¼ x‰?d à²ÿ @  ¼!y‰?d ºžQ @  ¼"z‰?d `Â8…‰ @  ¼#{‰?d  Â™»Þc @  ¼$|‰?d àÂ*ɽ @  ¼%}‰?d Âô€„Û @  ¼&~‰?d `Âv“ @  ¼'‰?d  ÂQµ™ê @  ¼(€‰?d àÂÓ$Ž4 @  ¼)‰?d Âq‚ï{ @  ¼*‚‰?d `Âóø¥ @  ¼+ƒ‰?d  ÂR-¯I @  ¼,„‰?d àÂм¸— @  ¼-…‰?d –­Ù- @  ¼.†‰?d `Â<Îó @  ¼/‡‰?d  Â‹HàO @  ¼0ˆ‰?d à Ù÷‘ @  ¼1‰‰?d «–Þ @  ¼2Љ?d `Â)î @  ¼3‹‰?d  ÂˆÐÖì @  ¼4Œ‰?d à AÁ2 @  ¼5‰?d ÂåëŒT @  ¼6މ?d `Âgz›Š @  ¼7‰?d  Â0ÿé: @  ¼8‰?d à²nþä @  ¼9‘‰?d ÂÈŸ« @  ¼:’‰?d `Â’Yˆu @  ¼;“‰?d  Â3gß™ @  ¼<”‰?d à±öÈG @  ¼=•‰?d ÂÚVÖï @  ¼>–‰?d `ÂXÇÁ1 @  ¼?—‰?d  Âx²Î¯ @  ¼@˜‰?d àÂú#Ùq @  ¼A™‰?d ÂX…¸> @  ¼Bš‰?d `ÂÚ¯à @  ¼C›‰?d  Â{*ø  @  ¼Dœ‰?d àÂù»ïÒ @  ¼E‰?d ¢´ @  ¼Fž‰?d `”€µj @  ¼GŸ‰?d  Â^²þ @  ¼H ‰?d àÂÜ#éØ @  ¼I¡‰?d Â~…ˆ— @  ¼J¢‰?d `ÂüŸI @  ¼K£‰?d  Â]*È¥uÐ Â @  ¼L¤‰?d àÂæ|® @  ¼M ¥‰?d 8 Âå™0o @  ¼N ¦‰?d x Âg'± @  ¼O §‰?d ¸ Âø|  @  ¼P ¨‰?d ø ÂzíÓ @  ¼Q ©‰?d 8!ÂØKœ @  ¼R ª‰?d x!ÂZÚhB @  ¼S «‰?d ¸!Âûä?® @  ¼T ¬‰?d ø!Âyu(p @  ¼U ­‰?d 8"–ße @  ¼V ®‰?d x"ÂNrÈ @  ¼W ¯‰?d ¸"ÂCËx @  ¼X °‰?d ø"ÂÁZ¦ @  ¼Y ±‰?d 8#Âcüvé @  ¼Z ²‰?d x#Âáma7 @  ¼[ ³‰?d ¸#Â@S6Û @  ¼\ ´‰?d ø#ÂÂÂ! @  ¼] µ‰?d 8$©b?­ @  ¼^ ¶‰?d x$Â+ó(s @  ¼_ ·‰?d ¸$Â¥! @  ¼` ¸‰?d ø$Â'6¡ @  ¼a ¹‰?d 8%Â…¶Wî @  ¼b º‰?d x%Â'@0 @  ¼c »‰?d ¸%Â¦Ü @  ¼d ¼‰?d ø%Â$ˆ @  ¼e ½‰?d 8&ÂË"Md @  ¼f ¾‰?d x&ÂI³Zº @  ¼g ¿‰?d ¸&ÂsÑÇ @  ¼h À‰?d ø&Âñ@ @  ¼i Á‰?d 8'ÂSærV @  ¼j ‰?d x'ÂÑweˆ @  ¼k É?d ¸'ÂpI2d @  ¼l ĉ?d ø'ÂòØ%º @  ¼m ʼn?d 8(´ÉD @  ¼n Ɖ?d x(Â6XSÞ @  ¼o lj?d ¸(©,}b @  ¼p ȉ?d ø(Â+½j¼ @  ¼q ɉ?d 8)‰ ó @  ¼r ʉ?d x) Š- @  ¼s ˉ?d ¸)ª´KÁ @  ¼t ̉?d ø)Â(%\ @  ¼u ͉?d 8*ÂÇy @  ¼v Ή?d x*ÂE§ @  ¼w ω?d ¸*›t @  ¼x Љ?d ø* cÉ @  ¼y щ?d 8+Â2¬† @  ¼z Ò‰?d x+°=X @  ¼{ Ó‰?d ¸+ÂB´ @  ¼| Ô‰?d ø+“’Uj @  ¼} Õ‰?d 8,Âø2K @  ¼~ Ö‰?d x,Âz£\ @  ¼ ׉?d ¸,¹€c³ @  ¼€ ؉?d ø,Â;tm @  ¼ Ù‰?d 8-™·" @  ¼‚ Ú‰?d x-Â&ü @  ¼ƒ Û‰?d ¸-ºU @  ¼„ ܉?d ø-Â8‰BÎ @  ¼… ݉?d 8.Â×#¨ @  ¼† Þ‰?d x.ÂU²v @  ¼‡ ߉?d ¸.Ÿ€S @  ¼ˆ à‰?d ø.ÂDÄ @  ¼‰ á‰?d 8/¿·%‹ @  ¼Š â‰?d x/Â=&2U @  ¼‹ ã‰?d ¸/œe¹ @  ¼Œ ä‰?d ø/‰rg @  ¼ å‰?d 80ÂÒ¹#r @  ¼Ž æ‰?d x0ÂP(4¬ @  ¼ ç‰?d ¸0ÂÏ\ @  ¼ è‰?d ø0ÂMÍ Î @  ¼‘ é‰?d 81Âïkl @  ¼’ ê‰?d x1Âmú{_ @  ¼“ ë‰?d ¸1ÂÌÄ,³ @  ¼” ì‰?d ø1ÂNU;m @  ¼• í‰?d 82¡ÿv  @  ¼– î‰?d x2Â#naÕ @  ¼— ï‰?d ¸2Âtëe @  ¼˜ ð‰?d ø2Âöz» @  ¼™ ñ‰?d 83ÂTÜeô @  ¼š ò‰?d x3ÂÖMr* @  ¼› ó‰?d ¸3Âws%Æ @  ¼œ ô‰?d ø3Âõâ2 @  ¼ õ‰?d 84žB,° @  ¼ž ö‰?d x4ÂÓ;n @  ¼Ÿ ÷‰?d ¸4Â’¡2b @  ¼  ø‰?d ø4Â0%¼ @  ¼¡ ù‰?d 85²–Dó @  ¼¢ ú‰?d x5Â0S- @  ¼£ û‰?d ¸5‘9Á @  ¼¤ ü‰?d ø5¨ @  ¼¥ ý‰?d 86Âü^y @  ¼¦ þ‰?d x6Â~“I§ @  ¼§ ÿ‰?d ¸6”r#a @  ¼¨ Š?d ø6Âã4¿ @  ¼© Š?d 87´EUð @  ¼ª Š?d x7Â6ÔB. @  ¼« Š?d ¸7—ê @  ¼¬ Š?d ø7Â{ @  ¼­ Š?d 88ÂSjc¦ @  ¼® Š?d x8ÂÑûtx @  ¼¯ Š?d ¸8ÂNZÄ @  ¼° Š?d ø8ÂÌM @  ¼±  Š?d 89Ân¸,U @  ¼²  Š?d x9Âì);‹ @  ¼³  Š?d ¸9ÂMlg @  ¼´  Š?d ø9Âφ{¹ @  ¼µ  Š?d 8: ,6ß @  ¼¶ Š?d x:¢½! @  ¼· Š?d ¸:Âõ8S± @  ¼¸ Š?d ø:Âw©Do @  ¼¹ Š?d 8;ÂÕ%  @  ¼º Š?d x;ÂWž2þ @  ¼» Š?d ¸;Âö e @  ¼¼ Š?d ø;Ât1rÌ @  ¼½ Š?d 8<‘ld @  ¼¾ Š?d x<Â{º @  ¼¿ Š?d ¸<½ut$ @  ¼À Š?d ø<Â?äcú @  ¼Á Š?d 8=ÂBµ @  ¼ Š?d x=ÂÓk @  ¼à Š?d ¸=¾íB‡ @  ¼Ä Š?d ø=Â<|UY @  ¼Å Š?d 8>ÂÓÖ? @  ¼Æ Š?d x>ÂQGá @  ¼Ç Š?d ¸>›uD @  ¼È  Š?d ø>ÂäSS @  ¼É !Š?d 8?»B2 @  ¼Ê "Š?d x?Â9Ó% @  ¼Ë #Š?duÐ@Â7 ¸?˜ír. @  ¼Ì $Š?d ø?Â#»¹% @  ¼Í%Š?d P@Â’ùî¾ @  ¼Î&Š?d @² ì@ @  ¼Ï'Š?d Ð@Â×Ü @  ¼Ð(Š?d AÂ_T[4 @  ¼Ñ)Š?d PA¯+¡M @  ¼Ò*Š?d AÂÞ£³ @  ¼Ó+Š?d ÐAÂŒ„á @  ¼Ô,Š?d BÂÀA¾ @  ¼Õ-Š?d PBÂá¿»Ç @  ¼Ö.Š?d BÂÁJ¹9 @  ¼×/Š?d ÐBÂ4«Þ© @  ¼Ø0Š?d CÂäãRA @  ¼Ù1Š?d PCœ¨8 @  ¼Ú2Š?d CÂ4iªÆ @  ¼Û3Š?d ÐCÂ73è  @  ¼Ü4Š?d DÂ.} @  ¼Ý5Š?d PDÂÞá| @  ¼Þ6Š?d DÂþ÷ã‚ @  ¼ß7Š?d ÐDÂÒáÿ® @  ¼à8Š?d E©sF @  ¼á9Š?d PEÂòÖ‰? @  ¼â:Š?d€ E¦à—g @  ½;Š?d ÐEÂDû‚ @  ½<Š?d FÂÙ¿=C @  ½=Š?d PFÂì‰<× @  ½>Š?d FÂÌ|>) @  ½?Š?d ÐFšÈ* @  ½@Š?d GÂJ€¦æ @  ½AŠ?d PGÂtMå @  ½BŠ?d GÂT¸ @  ½ CŠ?d ÐGÂ’«¸: @  ½ DŠ?d H¦T4' @  ½ EŠ?d PH“b5³ @  ½ FŠ?d H³—7M @  ½ GŠ?d ÐHÂí”mK @  ½HŠ?d IÂ=Üᣠ@  ½IŠ?d PI®°z@ @  ½JŠ?d IÂŽEx¾ @  ½KŠ?d ÐIÂHVÁŸ @  ½LŠ?d JÂÕa^ @  ½MŠ?d PJÂà$`Ê @  ½NŠ?d JÂÀÑb4 @  ½OŠ?d ÐJÂû‚ZÞ @  ½PŠ?d KÂ+ÊÖ6 @  ½QŠ?d PKÂs5 @  ½RŠ?d KÂ5òqË @  ½SŠ?d ÐKÂóáÈê @  ½TŠ?d LÂê¯;å @  ½UŠ?d PLÂß™:q @  ½VŠ?d LÂÿl8 @  ½WŠ?d ÐL¡ob‰ @  ½XŠ?d MÂq'îa @  ½YŠ?d PMÂóMR2 @  ½ ZŠ?d MÂÓ¸PÌ @  ½![Š?d ÐM«éí @  ½"\Š?d NˆïI, @  ½#]Š?d PN½ÙH¸ @  ½$^Š?d NÂ,JF @  ½%_Š?d ÐNÂ;ÈKp @  ½&`Š?d OÂë€Ç˜ @  ½'aŠ?d POÂÕMb› @  ½(bŠ?d OÂõ¸`e @  ½)cŠ?d ÐOÂ3«ÙD @  ½*dŠ?d PÂueö @  ½+eŠ?d PP¸Cdb @  ½,fŠ?d P˜¶fœ @  ½-gŠ?d ÐPÂƵ<š @  ½.hŠ?d QÂý°r @  ½/iŠ?d PQÂ…‘+‘ @  ½0jŠ?d QÂ¥d)o @  ½1kŠ?d ÐQÂcwN @  ½2lŠ?d RÂþ30 @  ½3mŠ?d PRÂË1 @  ½4nŠ?d RÂëð3å @  ½5oŠ?d ÐRÂУ  @  ½6pŠ?d SÂë‡ç @  ½7qŠ?d PSÂ>&"ä @  ½8rŠ?d SÂÓ  @  ½9sŠ?d ÐSÂØÀ™; @  ½:tŠ?d TÂÁŽj4 @  ½;uŠ?d PTÂô¸k  @  ½<vŠ?d TÂÔMi^ @  ½=wŠ?d ÐTŠN3X @  ½>xŠ?d UÂZ¿° @  ½?yŠ?d PUÂvkq @  ½@zŠ?d UÂVž @  ½A{Š?d ÐU¾® @  ½B|Š?d V Éo @  ½C}Š?d PVÂ8ÿû @  ½D~Š?d V  @  ½EŠ?d ÐVÂSx]° @  ½F€Š?d Wƒ0ÑX @  ½GŠ?d PW½ýt[ @  ½H‚Š?d WÂv¥ @  ½IƒŠ?d ÐWÂ[Ï„ @  ½J„Š?d XÂoäC™ @  ½K…Š?d PXÂZÒB  @  ½L†Š?d XÂz'@ó @  ½M‡Š?d ÐXÂ$$õ @  ½NˆŠ?d YÂôl– @  ½O‰Š?d PYÂg þ @  ½PŠŠ?d YÂGõ @  ½Q‹Š?d ÐYÂæ¶! @  ½RŒŠ?d Z¢à @  ½SŠ?d PZÂ)”t @  ½TŽŠ?d Z aŠ @  ½UŠ?d ÐZÂ22-` @  ½VŠ?d [Ââz¡ˆ @  ½W‘Š?d P[ÂÜ·‹ @  ½X’Š?d [ÂüBu @  ½Y“Š?d Ð[Â:Q¿T @  ½Z”Š?d \Â#L[ @  ½[•Š?d P\Â)MÏ @  ½\–Š?d \Â6ÜO1 @  ½]—Š?d Ð\Âhß7 @  ½^˜Š?d ]¸—™ß @  ½_™Š?d P]Â:ý%Œ @  ½`šŠ?d ]Â'r @  ½a›Š?d Ð]ÂÜžS @  ½bœŠ?d ^ÂA_>’ @  ½cŠ?d P^Âti? @  ½džŠ?d ^ÂTœ=ø @  ½eŸŠ?d Ð^Âòx<Î @  ½f Š?d _Â"0°& @  ½g¡Š?d P_Âý% @  ½h¢Š?d _Â<Û @  ½uÐ`Âi£Š?d Ð_Âú®ú @  ½j¤Š?d (`ÂDãb @  ½k¥Š?d h`ÂqÕö @  ½l¦Š?d ¨`ÂQ  @  ½m§Š?d è`Â#B @  ½n¨Š?d (aÂßkÎæ @  ½o©Š?d haÂLU @  ½pªŠ?d ¨aÂlòWû @  ½q«Š?d èaªáîÚ @  ½r¬Š?d (bÂ7¥N @  ½s­Š?d hb“O @  ½t®Š?d ¨bÂ"fMq @  ½u¯Š?d èbÂ5u› @  ½v°Š?d (cÂÉ}ùs @  ½w±Š?d hcÂ÷°\p @  ½x²Š?d ¨cÂ×E^Ž @  ½y³Š?d ècÂVç¯ @  ½z´Š?d (d  @  ½{µŠ?d hdÂ=.4 @  ½|¶Š?d ¨dÂÛÊ @  ½}·Š?d èdÂCØMÌ @  ½~¸Š?d (e“Á$ @  ½¹Š?d heÂ\«KÔ @  ½€ºŠ?d ¨eÂ|^I* @  ½»Š?d èeºMð  @  ½‚¼Š?d (fÂ' PÊ @  ½ƒ½Š?d hfÂ?Q^ @  ½„¾Š?d ¨fÂ2ÊS  @  ½…¿Š?d èfÂd~G‡ @  ½†ÀŠ?d (g´6Ëo @  ½‡ÁŠ?d hgŠûnl @  ½ˆŠ?d ¨gªl’ @  ½‰Ê?d ègÂlÕ³ @  ½ŠÄŠ?d (hÂXâY® @  ½‹ÅŠ?d hhÂmÔX: @  ½ŒÆŠ?d ¨hÂM!ZÄ @  ½ÇŠ?d èhÂ" @  ½ŽÈŠ?d (iÂÃjŒ* @  ½ÉŠ?d hiÂPÉ @  ½ÊŠ?d ¨iÂpó7 @  ½‘ËŠ?d èi¶ଠ@  ½’ÌŠ?d (jÂ+¤ × @  ½“ÍŠ?d hjÂ’ C @  ½”Ί?d ¨jÂ>g½ @  ½•ÏŠ?d èjÂ47W @  ½–Њ?d (kÂÕ|»¿ @  ½—ÑŠ?d hkÂë±¼ @  ½˜ÒŠ?d ¨kÂËDB @  ½™ÓŠ?d èk W¥c @  ½šÔŠ?d (lÂVl @  ½›ÕŠ?d hlÂ!/Wø @  ½œÖŠ?d ¨lÂÚU @  ½׊?d èlÂ_Ù @  ½žØŠ?d (m‘ƒè @  ½ŸÙŠ?d hm û?» @  ½ ÚŠ?d ¨mÂ-=E @  ½¡ÛŠ?d èmÂë„d @  ½¢ÜŠ?d (nÂvY$¥ @  ½£ÝŠ?d hnÂCo%1 @  ½¤ÞŠ?d ¨nÂcš'Ï @  ½¥ߊ?d ènÂÅ~&ù @  ½¦àŠ?d (oÂ6ª @  ½§áŠ?d hoÂ+û @  ½¨âŠ?d ¨o  ì @  ½©ãŠ?d èoÂÍ´Í @  ½ªäŠ?d (pÂsà @  ½«åŠ?d hpÂFõ ë @  ½¬æŠ?d ¨pÂf  @  ½­çŠ?d èpÂ8Q @  ½®èŠ?d (qÂèKÝû @  ½¯éŠ?d hqÂ{'F @  ½°êŠ?d ¨qÂ[ÒDæ @  ½±ëŠ?d èqÂÁýÇ @  ½²ìŠ?d (rÂ…] @  ½³íŠ?d hrÂ5³\’ @  ½´îŠ?d ¨rÂF^l @  ½µïŠ?d èrÂ.f† @  ½¶ðŠ?d (sÂþ]ên @  ½·ñŠ?d hsÂÀOm @  ½¸òŠ?d ¨sÂàeM“ @  ½¹óŠ?d èsÂ&vô² @  ½ºôŠ?d (tÂ?8½ @  ½»õŠ?d ht ) @  ½¼öŠ?d ¨tÂ*û× @  ½½÷Š?d ètÂtø^Ñ @  ½¾øŠ?d (u¤°Ò9 @  ½¿ùŠ?d huˆÝhø @  ½ÀúŠ?d ¨u¨(j @  ½ÁûŠ?d èuÂn;Ó' @  ½ÂüŠ?d (vÂósæ @  ½ÃýŠ?d hvÂÆIrr @  ½ÄþŠ?d ¨vÂæ¼pŒ @  ½ÅÿŠ?d èvÂÒ©e5 @  ½Æ‹?d (wÂáéÝ @  ½Ç‹?d hwÂ<,LÞ @  ½È‹?d ¨wÂÙN  @  ½É‹?d èwÂÚÊ÷ @  ½Ê‹?d (xÂî5{ @  ½Ë‹?d hxÂÛzˆ @  ½Ì‹?d ¨xÂûöxv @  ½Í‹?d èxÂ¥õ"p @  ½Î‹?d (yÂu½®˜ @  ½Ï ‹?d hyÂæÑ5{ @  ½Ð ‹?d ¨yÂÆ$7… @  ½Ñ ‹?d èyÂ7ޤ @  ½Ò ‹?d (zÂs.e @  ½Ó ‹?d hz¨E/ñ @  ½Ô‹?d ¨zˆ°- @  ½Õ‹?d èz³ãå @  ½Ö‹?d ({Âc«™  @  ½×‹?d h{Â]f< @  ½Ø‹?d ¨{Â}“>ð @  ½Ù‹?d è{»€‡Ñ @  ½Ú‹?d (|¢ÎtÞ @  ½Û‹?d h|—øuJ @  ½Ü‹?d ¨|· w´ @  ½Ý‹?d è|Âé-² @  ½Þ‹?d (}Â9F¡Z @  ½ß‹?d h}»,  @  ½à‹?d ¨}›Ù÷ @  ½á‹?d è}Â]ʦÖ @  ½â‹?d€ (~ÂÉñ @  ¾‹?d h~ÂÕ¾¸ª @  ¾‹?d ¨~ÂõKºT @  ¾‹?d è~–æ@ @  ¾ ‹?d (ÂF®Ìg @  ¾!‹?d h¶Ñ6 @  ¾"‹?d ¨ÂuЀÂ'–$4à @  ¾#‹?d èž…Ò» @  ¾$‹?d @€Âð;0Ï @  ¾ %‹?d €€Â¢ ß– @  ¾ &‹?d À€Â ±ÈH @  ¾ '‹?d Âé"ò• @  ¾ (‹?d @Âk³åK @  ¾ )‹?d €Â9¨  @  ¾*‹?d À»9Ì @  ¾+‹?d ‚Âìrh @  ¾,‹?d @‚ƒ}e¶ @  ¾-‹?d €‚ÂÑfŠï @  ¾.‹?d À‚ÂS÷1 @  ¾/‹?d ƒÂÿ4Å @  ¾0‹?d @ƒÂ}¥ÒÞ @  ¾1‹?d €ƒÂ/¾=‡ @  ¾2‹?d ÀƒÂ­/*Y @  ¾3‹?d „Â>Q(Ó @  ¾4‹?d @„¼À?  @  ¾5‹?d €„ÂîÛÐT @  ¾6‹?d À„ÂlJÇŠ @  ¾7‹?d …Â¥ÙýW @  ¾8‹?d @…Â'Hê‰ @  ¾9‹?d €…ÂuSÐ @  ¾:‹?d À…Â÷ @  ¾;‹?d †Â\Z @  ¾ <‹?d @†ÂÞ€MÄ @  ¾!=‹?d €†ÂŒ›¢ @  ¾">‹?d À†Â µC @  ¾#?‹?d ‡ÂÏ.Á¿ @  ¾$@‹?d @‡ÂM¿Öa @  ¾%A‹?d €‡Â¤98 @  ¾&B‹?d À‡Â5.æ @  ¾'C‹?d ˆÂ#úS~ @  ¾(D‹?d @ˆÂ¡kD  @  ¾)E‹?d €ˆÂóp«ù @  ¾*F‹?d ÀˆÂqá¼' @  ¾+G‹?d ‰Â¸r†ú @  ¾,H‹?d @‰Â:ã‘$ @  ¾-I‹?d €‰Âhø~} @  ¾.J‹?d À‰Âêii£ @  ¾/K‹?d ŠÂP¼ @  ¾0L‹?d @ŠÂÒ-Ù @  ¾1M‹?d €ŠÂ€6þ€ @  ¾2N‹?d ÀŠÂ§é^ @  ¾3O‹?d ‹Â®d±o @  ¾4P‹?d @‹Â,õ¦± @  ¾5Q‹?d €‹Â~îIè @  ¾6R‹?d À‹Âü^6 @  ¾7S‹?d ŒÂo\¼ @  ¾8T‹?d @ŒÂíKb @  ¾9U‹?d €ŒÂ¿‹¤; @  ¾:V‹?d ÀŒÂ=³å @  ¾;W‹?d Âô‰‰8 @  ¾<X‹?d @Âvžæ @  ¾=Y‹?d €Â$q¿ @  ¾>Z‹?d À¦’fa @  ¾?[‹?d ŽÂ£F(ç @  ¾@\‹?d @ŽÂ!×?9 @  ¾A]‹?d €ŽÂsÌÐ` @  ¾B^‹?d ÀŽÂñ]Ǿ @  ¾C_‹?d ÂÀ)¦S @  ¾D`‹?d @ÂB¸± @  ¾Ea‹?d €Â£^Ô @  ¾Fb‹?d ÀÂ’2I  @  ¾Gc‹?d ¦Ü= @  ¾Hd‹?d @Â$Mã @  ¾Ie‹?d €ÂvVüº @  ¾Jf‹?d ÀÂôÇëd @  ¾Kg‹?d ‘Â=Tѹ @  ¾Lh‹?d @‘Â¿ÅÆg @  ¾Mi‹?d €‘ÂíÞ)> @  ¾Nj‹?d À‘ÂoO>à @  ¾Ok‹?d ’ÂÕšQD @  ¾Pl‹?d @’ÂW Fš @  ¾Qm‹?d €’©à @  ¾Rn‹?d À’‡¾ @  ¾So‹?d “Â+Bæ, @  ¾Tp‹?d @“©Óñò @  ¾Uq‹?d €“ÂûÈ« @  ¾Vr‹?d À“ÂyY u @  ¾Ws‹?d ”Âê' ÿ @  ¾Xt‹?d @”Âh¶! @  ¾Yu‹?d €”Â:­óx @  ¾Zv‹?d À”¸<ä¦ @  ¾[w‹?d •Âq¯Þ{ @  ¾\x‹?d @•Âó>É¥ @  ¾]y‹?d €•¡%&ü @  ¾^z‹?d À•Â#´1" @  ¾_{‹?d –ˆgy6 @  ¾`|‹?d @– önè @  ¾a}‹?d €–ÂXí± @  ¾b~‹?d À–ÂÚ|–o @  ¾c‹?d —ž¶ @  ¾d€‹?d @—„¡ß @  ¾e‹?d €—ÂÖN† @  ¾f‚‹?d À—ÂT…YX @  ¾gƒ‹?d ˜ÂêJ$À @  ¾h„‹?d @˜ÂhÛ3 @  ¾i…‹?d €˜Â:ÀÜG @  ¾j†‹?d À˜Â¸QË™ @  ¾k‡‹?d ™ÂqÂñD @  ¾lˆ‹?d @™ÂóSæš @  ¾m‰‹?d €™Â¡H à @  ¾nŠ‹?d À™Â#Ù @  ¾o‹‹?d šÂ™ q¹ @  ¾pŒ‹?d @šÂfg @  ¾q‹?d €šÂI†‰> @  ¾rŽ‹?d ÀšÂËžà @  ¾s‹?d ›ÂgÔÆÑ @  ¾t‹?d @›ÂåEÑ @  ¾u‘‹?d €›Â·^>V @  ¾v’‹?d À›Â5Ï)ˆ @  ¾w“‹?d œÂ¦±+ @  ¾x”‹?d @œÂ$ <Ü @  ¾y•‹?d €œÂv;Ó… @  ¾z–‹?d ÀœÂôªÄ[ @  ¾{—‹?d Â=9þ† @  ¾|˜‹?d @¿¨éX @  ¾}™‹?d €Âí³ @  ¾~š‹?d ÀÂo"ß @  ¾›‹?d žÂ‰ oh @  ¾€œ‹?d @žÂ 1x¶ @  ¾‹?d €žÂY*—ï @  ¾‚ž‹?d ÀžÂÛ»€1 @  ¾ƒŸ‹?d ŸÂêÏáÜ @  ¾„ ‹?d @ŸÂh^ö @  ¾…¡‹?d €ŸÂ:E[ @  ¾†¢‹uРÂ?d ÀŸÂ¸Ô… @  ¾‡£‹?d  Âz(ý³ @  ¾ˆ ¤‹?d X Âø¹êm @  ¾‰ ¥‹?d ˜ Âª¢4 @  ¾Š ¦‹?d Ø Â(3ê @  ¾‹ §‹?d ¡Âá (7 @  ¾Œ ¨‹?d X¡Âc1?é @  ¾ ©‹?d ˜¡Â1*а @  ¾Ž ª‹?d ء³»Çn @  ¾ «‹?d ¢Â n¨Ê @  ¾ ¬‹?d X¢Â‹ÿ¿ @  ¾‘ ­‹?d ˜¢ÂÙäPM @  ¾’ ®‹?d Ø¢Â[uG“ @  ¾“ ¯‹?d £Â÷¶¢ @  ¾” °‹?d X£Âu'| @  ¾• ±‹?d ˜£Â'<ç% @  ¾– ²‹?d أ¥­ðû @  ¾— ³‹?d ¤Â6Óòq @  ¾˜ ´‹?d X¤Â´Bå¯ @  ¾™ µ‹?d ˜¤ÂæY ö @  ¾š ¶‹?d ؤÂdÈ( @  ¾› ·‹?d ¥Â­['õ @  ¾œ ¸‹?d X¥Â/Ê0+ @  ¾ ¹‹?d ˜¥Â}Ñßr @  ¾ž º‹?d Ø¥Âÿ@Ȭ @  ¾Ÿ »‹?d ¦ÂT“€¸ @  ¾  ¼‹?d X¦ÂÖ—f @  ¾¡ ½‹?d ˜¦Â„x? @  ¾¢ ¾‹?d ئˆoá @  ¾£ ¿‹?d §ÂǬ @  ¾¤ À‹?d X§ÂE= à @  ¾¥ Á‹?d ˜§Â&ãš @  ¾¦ ‹?d ا•·ôD @  ¾§ Ë?d ¨Â+x‰Ü @  ¾¨ Ä‹?d X¨Â©éž @  ¾© Å‹?d ˜¨Âûòq[ @  ¾ª Æ‹?d بÂycf… @  ¾« Ç‹?d ©Â°ð\X @  ¾¬ È‹?d X©Â2aK† @  ¾­ É‹?d ˜©Â`z¤ß @  ¾® Ê‹?d Ø©Ââë³ @  ¾¯ Ë‹?d ªÂX>Ü¥ @  ¾° Ì‹?d XªÂÚ¯Ë{ @  ¾± Í‹?d ˜ªÂˆ´$" @  ¾² ΋?d ت %3ü @  ¾³ Ï‹?d «Â¦ækÍ @  ¾´ Ћ?d X«Â$w| @  ¾µ Ñ‹?d ˜«Âvl“J @  ¾¶ Ò‹?d Ø«Âôý„” @  ¾· Ó‹?d ¬Âgƒ† @  ¾¸ Ô‹?d X¬Âå‘À @  ¾¹ Õ‹?d ˜¬Â· ~™ @  ¾º Ö‹?d جÂ5˜iG @  ¾» ׋?d ­Âü Sš @  ¾¼ Ø‹?d X­Â~šDD @  ¾½ Ù‹?d ˜­Â,« @  ¾¾ Ú‹?d ح®¼Ã @  ¾¿ Û‹?d ®Â«ÄòE @  ¾À Ü‹?d X®Â)Uå› @  ¾Á Ý‹?d ˜®Â{N  @  ¾ Þ‹?d Ø®Âùß @  ¾à ß‹?d ¯ÂÈ«|ñ @  ¾Ä à‹?d X¯ÂJ:k/ @  ¾Å á‹?d ˜¯Â!„v @  ¾Æ â‹?d دÂ𰓍 @  ¾Ç ã‹?d °Â®^ÞŸ @  ¾È ä‹?d X°Â,ÏÉA @  ¾É å‹?d ˜°Â~Ô& @  ¾Ê æ‹?d ذÂüE1Æ @  ¾Ë ç‹?d ±Â5Ö  @  ¾Ì è‹?d X±Â·GÅ @  ¾Í é‹?d ˜±Âå\óœ @  ¾Î ê‹?d رÂgÍäB @  ¾Ï ë‹?d ²ÂÝ‹æ @  ¾Ð ì‹?d X²Â_‰œ8 @  ¾Ñ í‹?d ˜²Â ’sa @  ¾Ò î‹?d زÂd¿ @  ¾Ó ï‹?d ³Â#À<Ž @  ¾Ô ð‹?d X³Â¡Q+P @  ¾Õ ñ‹?d ˜³ÂóJÄ  @  ¾Ö ò‹?d سÂqÛÓ× @  ¾× ó‹?d ´Ââ¥Ñ] @  ¾Ø ô‹?d X´Â`4ƃ @  ¾Ù õ‹?d ˜´Â2/)Ú @  ¾Ú ö‹?d ش°¾> @  ¾Û ÷‹?d µÂy-Ù @  ¾Ü ø‹?d XµÂû¼ @  ¾Ý ù‹?d ˜µÂ©§ü^ @  ¾Þ ú‹?d صÂ+6ë€ @  ¾ß û‹?d ¶Â€å£” @  ¾à ü‹?d X¶Ât´J @  ¾á ý‹?d ˜¶ÂPo[ @  ¾â þ‹?d€ ض¦=Pk @  ¿ ÿ‹?d ·ÂØðR¶ @  ¿ Œ?d X·ÂZaEh @  ¿ Œ?d ˜·ÂÍ3QÜ @  ¿ Œ?d Ø·ÂO¢F @  ¿ Œ?d ¸Â?ßdà @  ¿ Œ?d X¸Â½Ns> @  ¿ Œ?d ˜¸Â!çà @  ¿ Œ?d ظ£vÔà @  ¿ Œ?d ¹Â¯¬ó @  ¿ Œ?d X¹Â-=- @  ¿  Œ?d ˜¹Âºo™ @  ¿  Œ?d عÂ8þG @  ¿  Œ?d ºÂá8y @  ¿  Œ?d XºÂc©§ @  ¿  Œ?d ˜ºÂR¡–d @  ¿ Œ?d غÂÐ0º @  ¿ Œ?d »Â¹º"f @  ¿ Œ?d X»Â;+5¸ @  ¿ Œ?d ˜»Â¬y!  @  ¿ Œ?d Ø»Â.è6Ò @  ¿ Œ?d ¼Âs$k" @  ¿ Œ?d X¼Âñµ|ü @  ¿ Œ?d ˜¼ÂmÌß @  ¿ Œ?d ؼÂïÛ @  ¿ Œ?d ½ÂãW1 @  ¿ Œ?d X½ÂaÆ ï @  ¿ Œ?d ˜½Âö”[ @  ¿ Œ?d ؽÂt… @  ¿ Œ?d ¾Â­Ã» @  ¿ Œ?d X¾Â/Re @  ¿ Œ?d ˜¾Â\¾ @  ¿ Œ?d ؾÂÍ©È @  ¿! Œ?d ¿Âyð3È @  ¿"  Œ?d X¿Âûa$ @  ¿# !Œ?d ˜¿Âl30¢ @uÐÀ  ¿$ "Œ?d Ø¿Âî¢'| @  ¿% #Œ?d 0ÀÂÎÐØÑ @  ¿& $Œ?d pÀÂLAÏ @  ¿' %Œ?d °ÀÂÐè, @  ¿( &Œ?d ðÀÂRyhò @  ¿) 'Œ?d 0ÁÂ^£©Â @  ¿* (Œ?d pÁÂÜ2¾ @  ¿+ )Œ?d °ÁÂK`ª¨ @  ¿, *Œ?d ðÁÂÉñ½v @  ¿- +Œ?d 0ÂÂ7³H @  ¿. ,Œ?d pÂÂ’¦¤– @  ¿/ -Œ?d °Â£®*U @  ¿0 .Œ?d ðÂÂ!?=‹ @  ¿1 /Œ?d 0ÃÂHµžW @  ¿2 0Œ?d pÃÂÊ$‰‰ @  ¿3 1Œ?d °ÃÂ]v= @  ¿4 2Œ?d ðÃÂßçŠã @  ¿5 3Œ?d 0Ä‚+× @  ¿6 4Œ?d pĺÀÍ @  ¿7 5Œ?d °Äœpî @  ¿8 6Œ?d ðÄ‚g0 @  ¿9 7Œ?d 0ÅÂX¦ @  ¿: 8Œ?d pÅÂɱÞ @  ¿; 9Œ?d °Å›¥j @  ¿< :Œ?d ðÅÂ… ²´ @  ¿= ;Œ?d 0ÆÂ\̼Š @  ¿> <Œ?d pÆÂÞ]«T @  ¿? =Œ?d °ÆÂPTµ @  ¿@ >Œ?d ðÆÂÒÅk @  ¿A ?Œ?d 0ÇÂÖ¨œz @  ¿B @Œ?d pÇÂT9‹¤ @  ¿C AŒ?d °ÇÂÃkŸ @  ¿D BŒ?d ðÇÂAúˆÎ @  ¿E CŒ?d 0ÈÂ1‡ª, @  ¿F DŒ?d pȳ½ò @  ¿G EŒ?d °ÈÂ/¿ Ñ @  ¿H FŒ?d ðÈ­. @  ¿I GŒ?d 0É¡ôÛ? @  ¿J HŒ?d pÉÂ#eÌá @  ¿K IŒ?d °É´7ØU @  ¿L JŒ?d ðÉÂ6¦Ï‹ @  ¿M KŒ?d 0ÊÂï`Áµ @  ¿N LŒ?d pÊÂmñÖk @  ¿O MŒ?d °ÊÂ\ùX¨ @  ¿P NŒ?d ðÊÂÞhOv @  ¿Q OŒ?d 0Ë·âìª @  ¿R PŒ?d pËÂ5sût @  ¿S QŒ?d °Ë¢!ïÀ @  ¿T RŒ?d ðË °ø @  ¿U SŒ?d 0ÌÂ}|¥î @  ¿V TŒ?d pÌÂÿí²0 @  ¿W UŒ?d °ÌÂcD @  ¿X VŒ?d ðÌÂáÕÍ @  ¿Y WŒ?d 0ÍÂíÔý @  ¿Z XŒ?d pÍÂožÃ# @  ¿[ YŒ?d °ÍÂøÌ×— @  ¿\ ZŒ?d ðÍÂz]ÀI @  ¿] [Œ?d 0Σ›Îw @  ¿^ \Œ?d pÎÂ! Ù© @  ¿_ ]Œ?d °ÎÂpÚ @  ¿` ^Œ?d ð΃•g @  ¿a _Œ?d 0ÏÂw¨ý @  ¿b `Œ?d pÏÂõ9êÚ @  ¿c aŒ?d °ÏÂbkþn @  ¿d bŒ?d ðÏÂàúé° @  ¿e cŒ?d 0Цûý @  ¿f dŒ?d pИ7ì# @  ¿g eŒ?d °Ðž\ @  ¿h fŒ?d ðІKÞ @  ¿i gŒ?d 0ÑŠՊî @  ¿j hŒ?d pÑÂD0 @  ¿k iŒ?d °ÑŸ‰„ @  ¿l jŒ?d ðчžZ @  ¿m kŒ?d 0ÒÂÄAd @  ¿n lŒ?d pÒÂFЇº @  ¿o mŒ?d °ÒÂwØ y @  ¿p nŒ?d ðÒÂõI§ @  ¿q oŒ?d 0Óœý{ @  ¿r pŒ?d pÓÂRª¥ @  ¿s qŒ?d °Ó‰¾ @  ¿t rŒ?d ðÓ ‘©Ï @  ¿u sŒ?d 0ÔÂV]ô? @  ¿v tŒ?d pÔÂÔÌãá @  ¿w uŒ?d °ÔÂHeS @  ¿x vŒ?d ðÔÂÊôD @  ¿y wŒ?d 0ÕÂÆ.…, @  ¿z xŒ?d pÕÂD¿’ò @  ¿{ yŒ?d °ÕÂÓí†F @  ¿| zŒ?d ðÕÂQ|‘˜ @  ¿} {Œ?d 0ÖˆºŸ¦ @  ¿~ |Œ?d pÖ +ˆx @  ¿ }Œ?d °ÖÂgt¨ @  ¿€ ~Œ?d ðÖÂååv @  ¿ Œ?d 0×ÂüNÛõ @  ¿‚ €Œ?d p×Â~ßÌ+ @  ¿ƒ Œ?d °×ÂéØŸ @  ¿„ ‚Œ?d ð×ÂkÏA @  ¿… ƒŒ?d 0ØÂaí£ @  ¿† „Œ?d pØÂ™ðú} @  ¿‡ …Œ?d °ØÂYJ^ @  ¿ˆ †Œ?d ðØÂ‡È]€ @  ¿‰ ‡Œ?d 0Ù‹œ° @  ¿Š ˆŒ?d pÙ ƒ‹n @  ¿‹ ‰Œ?d °ÙÂžÑŸÚ @  ¿Œ ŠŒ?d ðÙÂ@ˆ @  ¿ ‹Œ?d 0ÚÂņ†: @  ¿Ž ŒŒ?d pÚÂG‘ä @  ¿ Œ?d °ÚÂv' @  ¿ ŽŒ?d ðÚÂôŽù @  ¿‘ Œ?d 0Û«% @  ¿’ Œ?d pÛ•¼û @  ¿“ ‘Œ?d °ÛˆǨO @  ¿” ’Œ?d ðÛ V¿‘ @  ¿• “Œ?d 0ÜÂWšâa @  ¿– ”Œ?d pÜÂÕ õ¿ @  ¿— •Œ?d °ÜÂI¢Eœ @  ¿˜ –Œ?d ðÜÂË3RB @  ¿™ —Œ?d 0ÝÂÇé“r @  ¿š ˜Œ?d pÝÂEx„¬ @  ¿› ™Œ?d °ÝÂÒ* @  ¿œ šŒ?d ðÝÂP»‡Æ @  ¿ ›Œ?d 0Þ‰}‰ø @  ¿ž œŒ?d pÞ ìž& @  ¿Ÿ Œ?d °ÞÂ+â7U @  ¿  žŒ?d ðÞ©s ‹ @  ¿¡ ŸŒ?d 0ßÂ]Nº‹ @  ¿¢  Œ?d pßÂßß­U @  ¿£ ¡Œ?d uÐàÂ/°ßÂH¹á @  ¿¤ ¢Œ?d ðßÂŽ[– @  ¿¥€£Œ?d HàÂÓ}ñŸ @  ¿¦€¤Œ?d ˆàÂóˆóa @  ¿§€¥Œ?d ÈàÂÍEVb @  ¿¨€¦Œ?d á ڊ @  ¿©€§Œ?d HáÂC€Œ @  ¿ª€¨Œ?d ˆáÂcû‚r @  ¿«€©Œ?d ÈáÂV̓æ @  ¿¬€ªŒ?d âÂˉ#' @  ¿­€«Œ?d Hâ šš @  ¿®€¬Œ?d ˆâÂ-o˜ø @  ¿¯€­Œ?d Èâ¾ @  ¿°€®Œ?d ãÂnKó @  ¿±€¯Œ?d HãÂU· @  ¿²€°Œ?d ˆãÂuíµç @  ¿³€±Œ?d ÈãÂ@Û´s @  ¿´€²Œ?d äÂY•G| @  ¿µ€³Œ?d H䟆þ] @  ¿¶€´Œ?d ˆä¿sü£ @  ¿·€µŒ?d Èä¾Y  @  ¿¸€¶Œ?d åÂQöÕH @  ¿¹€·Œ?d HåÂõN @  ¿º€¸Œ?d ˆåÂ/° @  ¿»€¹Œ?d ÈåÂ6Œ$ @  ¿¼€ºŒ?d æÂ‡r,å @  ¿½€»Œ?d HæÂAa•Ä @  ¿¾€¼Œ?d ˆæÂa”—: @  ¿¿€½Œ?d ÈæÂMù-û @  ¿À€¾Œ?d 籡 @  ¿Á€¿Œ?d HçÂ˵4 @  ¿€ÀŒ?d ˆçÂëð·Ê @  ¿ÀÁŒ?d ÈçÂÞÆ¶^ @  ¿Ä€ÂŒ?d èÂê9:C @  ¿Å€ÃŒ?d HèÂ,*ƒb @  ¿Æ€ÄŒ?d ˆè ߜ @  ¿Ç€ÅŒ?d ÈèÂ2$Ÿ @  ¿È€ÆŒ?d éÂâZ¨w @  ¿É€ÇŒ?d Hé¼Yòq @  ¿Ê€ÈŒ?d ˆéœ¬ð @  ¿Ë€ÉŒ?d È驚ñ @  ¿Ì€ÊŒ?d êÂ4ÞQÚ @  ¿Í€ËŒ?d HêÂòÍèû @  ¿΀ÌŒ?d ˆêÂÒ8ê @  ¿Ï€ÍŒ?d ÈêÂATqæ @  ¿ЀÎŒ?d ë‘ý @  ¿Ñ€ÏŒ?d HëªOÅä @  ¿Ò€ÐŒ?d ˆëŠºÇ @  ¿Ó€ÑŒ?d È뿌Ǝ @  ¿Ô€ÒŒ?d ì¦Â5 @  ¿Õ€ÓŒ?d HìÂ`ÑŒ  @  ¿Ö€ÔŒ?d ˆìÂ@$Ž^ @  ¿×€ÕŒ?d ÈìÂ~é+] @  ¿Ø€ÖŒ?d í®¡§µ @  ¿Ù€׌?d HíÂð¢ý³ @  ¿Ú€ØŒ?d ˆíÂÐWÿM @  ¿Û€ÙŒ?d ÈíÂåaþÙ @  ¿Ü€ÚŒ?d îÂx%^ @  ¿Ý€ÛŒ?d Hî¾6ç9 @  ¿Þ€ÜŒ?d ˆîžÃåÇ @  ¿߀ÝŒ?d Èî©Y” @  ¿à€ÞŒ?d ïÂÌáÕ| @  ¿á€ߌ?d HïÂjÔJ @  ¿â€àŒ?d€ ˆïÂ$~ @  À€áŒ?d ÈïÂð ]< @  À€âŒ?d ðÂN×Ꭰ@  À€ãŒ?d HðÂM£B @  À€äŒ?d ˆðÂmx¡¼ @  À€åŒ?d ÈðÂ[Å @  À€æŒ?d ñÂMO×- @  À€çŒ?d HñÂÝþÒQ @  À€èŒ?d ˆñÂý Я @  À €éŒ?d Èñ t*Ö @  À €êŒ?d òÂ0Š @  À €ëŒ?d Hò“jÈÛ @  À €ìŒ?d ˆò³ŸÊ% @  À €íŒ?d ÈòÂCà0\ @  À€îŒ?d 󓨼´ @  À€ïŒ?d HóÂËèåÄ @  À€ðŒ?d ˆóÂëç: @  À€ñŒ?d ÈóÂbC @  À€òŒ?d ôÂ,îL @  À€óŒ?d HôÂv¬€ @  À€ôŒ?d ˆôÂ!ƒ®~ @  À€õŒ?d ÈôÂÑüT @  À€öŒ?d õ´Øï @  À€÷Œ?d Hõ‘ݓ @  À€øŒ?d ˆõ±ðßm @  À€ùŒ?d ÈõÂA% @  À€úŒ?d öÂÜË…Õ @  À€ûŒ?d HöÂß‘Ç @  À€üŒ?d ˆöÂÿdÅç @  À€ýŒ?d ÈöÂ?ž @  À€þŒ?d ÷ÂßS³v @  À€ÿŒ?d H÷™Sàå @  À €?d ˆ÷¹¦â @  À!€?d È÷ÂIÙb @  À"€?d øÂ}&” @  À#€?d HøÂ~|Ö³ @  À$€?d ˆøÂ^‰ÔM @  À%€?d ÈøÂ®ö.4 @  À&€?d ùÂ~¾¢Ü @  À'€?d HùÂî§  @  À(€?d ˆùÂÎú¥^ @  À)€ ?d ÈùÂ>…_' @  À*€ ?d ú£Áÿæ @  À+€ ?d Hú ›½* @  À,€ ?d ˆú€n¿Ô @  À-€ ?d ÈúÂpE­ @  À.€?d û YÉE @  À/€?d HûÂø5 @  À0€?d ˆûÂØì’Ë @  À1€?d ÈûÂ(“h² @  À2€?d üÂ1Ý›½ @  À3€?d HüÂ2‡Ùq @  À4€?d ˆüÂrÛ @  À5€?d ÈüÂâ !ö @  À6€?d ýÂ2E­ @  À7€?d Hý¢ô¨b @  À8€?d ˆý‚ªœ @  À9€?d ÈýÂr~På @  À:€?d þÂï:ð$ @  À;€?d HþÂì`²è @  À<€?d ˆþÂÌ•° @  À=€?d ÈþÂ<êJo @  À>€?d ÿÂì¢Æ‡ @  À?€?d Hÿ–T‡  @  À@€ ?d ˆÿ¶¡…÷ @  ÀA€uÐÃ!?d ÈÿÂ;^ ò @  ÀB"?d Ãtê$ @  ÀC#?d `Ãw°fÏ @  ÀD$?d  ÃWEd1 @  ÀE%?d àç:žH @  ÀF&?d Ãwr  @  ÀG'?d `ÃçÃÜ @  ÀH(?d  ÃÇ6" @  ÀI)?d àÃ7Iï[ @  ÀJ*?d ê Oš @  ÀK+?d `éW V @  ÀL,?d  Ã‰¢¨ @  ÀM-?d àÃyÝõÑ @  ÀN.?d é•y9 @  ÀO/?d `ÃñÕ I @  ÀP0?d  ÃÑ "· @  ÀQ1?d àÃ!_ØÎ @  ÀR2?d Ã8+Á @  ÀS3?d `Ã;Ki  @  ÀT4?d  Ã¾kó @  ÀU5?d àÃëÁ‘Š @  ÀV6?d Ã;‰b @  ÀW7?d `ë8 @  ÀX8?d  Ã‹Íà @  ÀY9?d àÃ{²à™ @  ÀZ:?d Ãæö@X @  À[;?d `Ã嬔 @  À\<?d  ÃÅYj @  À]=?d àÃ5&ú @  À^>?d Ãånvû @  À_??d `ÃÁÏ$ö @  À`@?d  Ãá:& @  ÀaA?d àÃEÜq @  ÀbB?d Ã%ºPl @  ÀcC?d `Ã&à  @  ÀdD?d  Ã^ @  ÀeE?d àÃöjê' @  ÀfF?d Ã&"fÏ @  ÀgG?d ` ö“c³ @  ÀhH?d   ÖfaM @  ÀiI?d à Ãf›4 @  ÀjJ?d Ãû];õ @  ÀkK?d ` Ãøy9 @  ÀlL?d   ÃØò{Ç @  ÀmM?d à Ã(¾ @  ÀnN?d ÃøÅ V @  ÀoO?d ` à…T& @  ÀpP?d   ÀpVØ @  ÀqQ?d à Ãp¬¡ @  ÀrR?d ÃiA_® @  ÀsS?d ` Ãjb @  ÀtT?d   ÃJîœ @  ÀuU?d à ú‘åå @  ÀvV?d ÃjÙi  @  ÀwW?d ` Ãúhlq @  ÀxX?d   ÃÚn @  ÀyY?d à Ã*â”ö @  ÀzZ?d ÷¦47 @  À{[?d `ôüvû @  À|\?d  Ã” t @  À}]?d àÃdvŽ| @  À~^?d ô>” @  À_?d `Ã-žs+ @  À€`?d  Ã kqÕ @  Àa?d àÃý‹¬ @  À‚b?d ÃCÊ7 @  Àƒc?d `Ã@uÒ @  À„d?d  Ã`ew, @  À…e?d àÃU @  À†f?d Ã@R½ @  À‡g?d `ÃÐãÁ @  Àˆh?d  Ãð? @  À‰i?d àÃiüF @  ÀŠj?d Ã-\‡ @  À‹k?d `ÞwK @  ÀŒl?d  Ã¾‚µ @  Àm?d àÃNýæÌ @  ÀŽn?d Þµj$ @  Ào?d `ÃÆõ3T @  Àp?d  Ãæ1ª @  À‘q?d àÃËÓ @  À’r?d Ã18Ü @  À“s?d `à kz @  À”t?d  Ã,žxî @  À•u?d àÃÜá‚— @  À–v?d à © @  À—w?d `Ü  @  À˜x?d  Ã¼í ý @  À™y?d àÃL’ó„ @  Àšz?d ÃÑÖSE @  À›{?d `ÃÒŒ‰ @  Àœ|?d  Ãòyw @  À}?d àÃé @  Àž~?d ÃÒNeæ @  ÀŸ?d `Ãë)cy @  À €?d  ÃËÜa‡ @  À¡?d àÃ;£›þ @  À¢‚?d Ã\ã @  À£ƒ?d `à U/ @  À¤„?d  Ã,óWÑ @  À¥…?d àÃÜŒ­¨ @  À¦†?d à Ä!@ @  À§‡?d `Üu$< @  À¨ˆ?d  Ã¼€& @  À©‰?d àÃLÿÜ» @  ÀªŠ?d ÃÑ»|z @  À«‹?d `ÃÒá>¶ @  À¬Œ?d  ÃòPîô @  Á Ê?d 8*ãN5 @  Á Ë?d x*Ãe÷ @  Á Ì?d ¸*ÃEòõê @  Á Í?d ø*ÃpÄô~ @  Á Î?d 8+àŒx– @  Á Ï?d x+Ûß@| @  Á Ð?d ¸+û*B‚ @  Á Ñ?d ø+Ã(FÙa @  Á Ò?d 8,Ã1*n @  Á Ó?d x,Ã÷“O @  Á Ô?d ¸,Ã× @  Á Õ?d ø,ÃâØ% @  Á Ö?d 8-Ã2Í @  Á ×?d x-Ãl“FË @  Á Ø?d ¸-ÃLfD5 @  Á Ù?d ø-Ãr«á6 @  Á Ú?d 8.ÃïïA÷ @  Á Û?d x.Ã)üøÖ @  Á Ü?d ¸.à ú( @  Á Ý?d ø.à Ž?d ¸7Ãa”ç @  Á? Ž?d ø7ÃMù¾& @  Á@ Ž?d 88Ãy2; @  ÁA Ž?d x8ÿ‹ @  ÁB Ž?d ¸8ßà‰ä @  ÁC Ž?d ø8êֈp @  ÁD Ž?d 89Ãzž˜ @  ÁE Ž?d x9Ã$^ž @  ÁF Ž?d ¸9Ãh\` @  ÁG  Ž?d ø9Ã:¥ùc @  ÁH  Ž?d 8:çáY¢ @  ÁI  Ž?d x:Ãaòàƒ @  ÁJ  Ž?d ¸:ÃAâ} @  ÁK  Ž?d ø:Ãt1ãé @  ÁL Ž?d 8;äyo @  ÁM Ž?d x;ß*Wë @  ÁN Ž?d ¸;ÿßU @  ÁO Ž?d ø;Ã,³Îö @  ÁP Ž?d 8<Ã5ý=ù @  ÁQ Ž?d x<Ãóî„Ø @  ÁR Ž?d ¸<ÃêÜZó @  ÁSŽ?d ø<Ãßê[g @  ÁTŽ?d 8=Ã¢× @  ÁUŽ?d x=ÃQ¡‰ @  ÁVŽ?d ¸=ÃqTw @  ÁWŽ?d ø=ÃO™*t @  ÁXŽ?d 8>ÃÒÝŠµ @  ÁYŽ?d x>ÃÎ3” @  ÁZŽ?d ¸>Ã4;1j @  Á[Ž?d ø>à 0þ @  Á\Ž?d 8?ÃÑE¼ @  Á]Ž?d x?Ãw¡½  @  Á^ Ž?duÐ@Ã7 ¸?ÃWT¿Þ @  Á_!Ž?d ø?ÃìùßX @  Á` "Ž?d P@Ã/Ued @  Áa #Ž?d @ÃK"Ée @  Áb $Ž?d Ð@Ãɳ޻ @  Ác %Ž?d Aî\D @  Ád &Ž?d PAÃ,ÍSÇ @  Áe 'Ž?d AÃЪá @  Áf (Ž?d ÐAÃR; ? @  Ág )Ž?d BÃs## @  Áh *Ž?d PBÃñ²ý @  Ái +Ž?d BÕŢü @  Áj ,Ž?d ÐBÃTµ" @  Ák -Ž?d CÃp»/€ @  Ál .Ž?d PCÃò*8^ @  Ám /Ž?d CÃk” @  Án 0Ž?d ÐCÃéŒJ @  Áo 1Ž?d DÃá?}x @  Áp 2Ž?d PDÃc®j¦ @  Áq 3Ž?d DÃÙÆ§ @  Ár 4Ž?d ÐDÃ…HÑy @  Ás 5Ž?d EÃâ§KÛ @  Át 6Ž?d PEÃ`6\ @  Áu 7Ž?d EÜQ# @  Áv 8Ž?d ÐEÃÀý @  Áw 9Ž?d FÃ?Øá @  Áx :Ž?d PFýI? @  Áy ;Ž?d FÃÙ>­> @  Áz <Ž?d ÐFÃ[¯ºà @  Á{ =Ž?d GÃ<@ B @  Á| >Ž?d PGþÑ7œ @  Á} ?Ž?d GÃJ6› @  Á~ @Ž?d ÐGÃÈ!E @  Á AŽ?d HñÅ0v @  Á€ BŽ?d PHÃ3T'¨ @  Á CŽ?d HÃW#‹© @  Á‚ DŽ?d ÐHÃÕ²œw @  Áƒ EŽ?d Iò]Õ @  Á„ FŽ?d PIÃ0Ì  @  Á… GŽ?d IÃÌ«^- @  Á† HŽ?d ÐIÃN:Ió @  Á‡ IŽ?d JÃo"[ï @  Áˆ JŽ?d PJÃí³L1 @  Á‰ KŽ?d JÉÄà0 @  ÁŠ LŽ?d ÐJà U÷î @  Á‹ MŽ?d KÃlºmL @  ÁŒ NŽ?d PKÃî+z’ @  Á OŽ?d KÃwWX @  ÁŽ PŽ?d ÐKÃõ@† @  Á QŽ?d LÃý>?´ @  Á RŽ?d PLï(j @  Á‘ SŽ?d LÃØ„k @  Á’ TŽ?d ÐLÙI“µ @  Á“ UŽ?d MÃþ¦  @  Á” VŽ?d PMÃ|7É @  Á• WŽ?d MÀPQï @  Á– XŽ?d ÐMÃÁF1 @  Á— YŽ?d NÃ#ÙT- @  Á˜ ZŽ?d PNáHCó @  Á™ [Ž?d NÃÅ?ïò @  Áš \Ž?d ÐNÃG®ø, @  Á› ]Ž?d Oà AbŽ @  Áœ ^Ž?d POâÐuP @  Á _Ž?d OæPaF @  Áž `Ž?d ÐOÃ$Áv˜ @  ÁŸ aŽ?d PÚäa§ @  Á  bŽ?d PPÃuvy @  Á¡ cŽ?d PÃ|Úx @  Á¢ dŽ?d ÐPÃþ“ͦ @  Á£ eŽ?d QÙ|W @  Á¤ fŽ?d PQÃí@Ú @  Á¥ gŽ?d QÃçŠü @  Á¦ hŽ?d ÐQÃe" @  Á§ iŽ?d RÃD > @  Á¨ jŽ?d PRÃÆ’à @  Á© kŽ?d Râå±á @  Áª lŽ?d ÐRà t¦? @  Á« mŽ?d SÃG›< @  Á¬ nŽ?d PSÃÅ +C @  Á­ oŽ?d SÃ\=‰ @  Á® pŽ?d ÐSÃÞ¬W @  Á¯ qŽ?d TÃÖne @  Á° rŽ?d PTÃTŽy» @  Á± sŽ?d TÃ0ùÕº @  Á² tŽ?d ÐTòhÂd @  Á³ uŽ?d UÃÕ‡XÆ @  Á´ vŽ?d PUÃWO @  Áµ wŽ?d Uëq> @  Á¶ xŽ?d ÐUÃ)àà @  Á· yŽ?d VÃøü @  Á¸ zŽ?d PVÊi" @  Á¹ {Ž?d VÃî¾# @  Áº |Ž?d ÐVÃl©ý @  Á» }Ž?d Wà `3_ @  Á¼ ~Ž?d PWÉñ$ @  Á½ Ž?d WÃ`çq @  Á¾ €Ž?d ÐWÃâvfÊ @  Á¿ Ž?d XÃxuGÈ @  ÁÀ ‚Ž?d PXÃúäP @  ÁÁ ƒŽ?d XÞ“ü @  Á „Ž?d ÐXÃëÉ @  Áà …Ž?d YÃ{íqk @  ÁÄ †Ž?d PYÃù|fµ @  ÁÅ ‡Ž?d YÃ)“ @  ÁÆ ˆŽ?d ÐYÇŠ>M @  ÁÇ ‰Ž?d Zæ’,Q @  ÁÈ ŠŽ?d PZÃ$; @  ÁÉ ‹Ž?d ZÃ@t—Ž @  ÁÊ ŒŽ?d ÐZÃÂå€P @  ÁË Ž?d [Ã¥ ò @  ÁÌ ŽŽ?d P[Ã'› , @  ÁÍ Ž?d [þ¬ æ @  ÁÎ Ž?d Ð[Ã<=78 @  ÁÏ ‘Ž?d \Ã4ŽH  @  ÁÐ ’Ž?d P\ö_Ô @  ÁÑ “Ž?d \ÃÒhóÕ @  ÁÒ ”Ž?d Ð\ÃPùä  @  ÁÓ •Ž?d ]Ã7~© @  ÁÔ –Ž?d P]õ‡iw @  ÁÕ —Ž?d ]ÃIà&Q @  ÁÖ ˜Ž?d Ð]ÃËq1 @  Á× ™Ž?d ^Ãêi#“ @  ÁØ šŽ?d P^Ãhø4M @  ÁÙ ›Ž?d ^à ˜L @  ÁÚ œŽ?d Ð^ÃŽ’ @  ÁÛ Ž?d _Ãéñ0 @  ÁÜ žŽ?d P_Ãk`î @  ÁÝ ŸŽ?d _Ãoàø @  ÁuÐ`ÃÞ  Ž?d Ð_Ã:& @  Áß¡Ž?d (`è$3 @  Áࢎ?d h`Ã*3í @  Áᣎ?d ¨`ÃNúŸì @  Á⤎?d€ è`à ,2 @  Â¥Ž?d (aË‚­¹ @  Â¦Ž?d haà ºg @  Â§Ž?d ¨aÃ0=¬ @  Â¨Ž?d èaò¬r @  Â©Ž?d (bÃ]T @  ÂªŽ?d hbÃß—CÊ @  Â«Ž?d ¨bÃuR°± @  Â¬Ž?d èbÃ÷ço @  Â ­Ž?d (cÃUeÆ  @  Â ®Ž?d hcÃ×ôÑþ @  Â ¯Ž?d ¨cËŠÙ @  Â °Ž?d ècà  @  Â ±Ž?d (dÃb»¯ @  Â²Ž?d hdÃà*q @  Â³Ž?d ¨dÃçNÔê @  Â´Ž?d èdÃeßÃ4 @  ÂµŽ?d (eÃÇy¢{ @  Â¶Ž?d heÃEèµ¥ @  Â·Ž?d ¨eÃ|Æn @  Â¸Ž?d èeÃþW° @  Â¹Ž?d (fÃý[Ö @  ÂºŽ?d hfÓlL @  Â»Ž?d ¨fÃ9©¿s @  Â¼Ž?d èfû8¨­ @  Â½Ž?d (gÞÉâ @  Â¾Ž?d hgÛÞ< @  Â¿Ž?d ¨gê–$Ö @  ÂÀŽ?d ègÃ(3 @  ÂÁŽ?d (hÃnR² @  ÂÂŽ?d hhÃì‡El @  ÂÃŽ?d ¨hÃúå¯G @  Â ÄŽ?d èhÃxt¸™ @  Â!ÅŽ?d (iÃÚÒÙÖ @  Â"ÆŽ?d hiÃXCÎ @  Â#ÇŽ?d ¨iÃamzà @  Â$ÈŽ?d èiÃãüm @  Â%ÉŽ?d (jà V { @  Â&ÊŽ?d hjÃŽÇ7¥ @  Â'ËŽ?d ¨jÃ$ÄÞ @  Â(ÌŽ?d èjæ“Ó @  Â)ÍŽ?d (kÃ5²O @  Â*ÎŽ?d hkƤ¥‘ @  Â+ÏŽ?d ¨kÃÚÚs¶ @  Â,ÐŽ?d èkÃXKdh @  Â-ÑŽ?d (lÃ3ëzÀ @  Â.ÒŽ?d hlñzm @  Â/ÓŽ?d ¨lö … @  Â0ÔŽ?d èlÃ4·[ @  Â1ÕŽ?d (mÖ)Ö @  Â2ÖŽ?d hmøÁÊ @  Â3׎?d ¨mÃ-–u @  Â4ØŽ?d èmïbß @  Â5ÙŽ?d (nÃ@­/¹ @  Â6ÚŽ?d hnÃÂ<8g @  Â7ÛŽ?d ¨nÃhùË @  Â8ÜŽ?d ènÃêhÜ @  Â9ÝŽ?d (oÃHν @  Â:ÞŽ?d hoÃÊ_ªS @  Â;ߎ?d ¨oà –E¨ @  Â<àŽ?d èoÉRv @  Â=áŽ?d (pÃE7c @  Â>âŽ?d hpÃǦ½ @  Â?ãŽ?d ¨pÃÃø @  Â@äŽ?d èpÃýRïÚ @  ÂAåŽ?d (qÃ_ôŽ• @  ÂBæŽ?d hqÃÝe™K @  ÂCçŽ?d ¨qÃäK-€ @  ÂDèŽ?d èqÃfÚ:^ @  ÂEéŽ?d (rÉpw8 @  ÂFêŽ?d hrà á`æ @  ÂGëŽ?d ¨rá$“ @  ÂHìŽ?d èrÃ#µ„C @  ÂIíŽ?d (sÃå  @  ÂJîŽ?d hsÂòÒ @  ÂKïŽ?d ¨sÃ_ü$õ @  ÂLðŽ?d èsÃÝm3+ @  ÂMñŽ?d (töÍ-ƒ @  ÂNòŽ?d htÃ4\:] @  ÂOóŽ?d ¨tÃ38÷Æ @  ÂPôŽ?d ètñ©à @  ÂQõŽ?d (uÃW @  ÂRöŽ?d huÑž–‰ @  ÂS÷Ž?d ¨uè°"B @  ÂTøŽ?d èuÃ*!5œ @  ÂUùŽ?d (vÃÅ‹xú @  ÂVúŽ?d hvÃGo$ @  ÂWûŽ?d ¨vÃíßœ_ @  ÂXüŽ?d èvÃoN‹ @  ÂYýŽ?d (wÃÍèêÎ @  ÂZþŽ?d hwÃOyý @  Â[ÿŽ?d ¨wÃAd @  Â\?d èwÞк @  Â]?d (xÃØÁp @  Â^?d hxÃZPgÞ @  Â_?d ¨xÃL2õ @  Â`?d èxÃΣš+ @  Âa?d (yÃlûd @  Âb?d hyÃî”ìº @  Âc?d ¨yÃ׺Xq @  Âd?d èyÃU+O¯ @  Âe ?d (zÃºÉ @  Âf ?d hzÃ8 @  Âg ?d ¨zÃ’Õæl @  Âh ?d èzÃDñ² @  Âi ?d ({òâý @  Âj?d h{Ã0s‡# @  Âk?d ¨{Ãl Q @  Âl?d è{ÃîœFÚ @  Âm?d (|Ã…G&Ñ @  Â…)?d @‚ÃÎ8ܨ @  Â†*?d €‚ÃîÍÞV @  Â‡+?d À‚Ãæl8  @  Âˆ,?d ƒÃ6$´å @  Â‰-?d @ƒÃÆ[Nœ @  ÂŠ.?d €ƒÃæ®Lb @  Â‹/?d ÀƒÃ´e @  ÂŒ0?d „Ãú|j @  Â1?d @„Ãñ…† @  ÂŽ2?d €„ÃÑp„í @  Â3?d À„Ãtp\V @  Â4?d …ä8о @  Â‘5?d @…ÃTG*Ç @  Â’6?d €…Ãt²(9 @  Â“7?d À…Ãïø‰Ò @  Â”8?d †Ãr¼) @  Â•9?d @†Ã‚ÃÓj @  Â–:?d €†Ã¢6Ñ” @  Â—;?d À†Ãª—7Ï @  Â˜<?d ‡Ãzß»' @  Â™=?d @‡ÃŠ A^ @  Âš>?d €‡ÃªUC  @  Â›??d À‡Ã9¨¬j @  Âœ@?d ˆÃ W w @  ÂA?d @ˆÃý(Ú @  ÂžB?d €ˆÃÝÝØð @  ÂŸC?d ÀˆÃiÛ'û @  Â D?d ‰Ã¹“« @  Â¡E?d @‰ÃIìQj @  Â¢F?d €‰ÃiS” @  Â£G?d À‰ÃòSò @  Â¤H?d ŠÃoR¾ @  Â¥I?d @ŠÃŸh¨Ç @  Â¦J?d €ŠÃ¿ª9 @  Â§K?d ÀŠÃ·ž @  Ã" ¨?d ¢Ãîž_ @  Ã# ©?d X¢ÃÛ ŸË @  Ã$ ª?d ˜¢ÃûÕ5 @  Ã% «?d Ø¢Ã=Æ$ @  Ã& ¬?d £Ã펨ü @  Ã' ­?d X£ÃÓC ÿ @  Ã( ®?d ˜£Ãó¶ @  Ã) ¯?d Ø£ÃÈå7ë @  Ã* °?d ¤ÃÑ«Ää @  Ã+ ±?d X¤ÃäÅp @  Ã, ²?d ˜¤ÃÄhÇŽ @  Ã- ³?d ؤÃ{~¯ @  Ã. ´?d ¥ÃÒ3òG @  Ã/ µ?d X¥ÃA_i¤ @  Ã0 ¶?d ˜¥ÃaªkZ @  Ã1 ·?d Ø¥Ã?©1\ @  Ã2 ¸?d ¦Ã¢í‘ @  Ã3 ¹?d X¦Ã—Û  @  Ã4 º?d ˜¦Ã·.’÷ @  Ã5 »?d ئÃq=+Ö @  Ã6 ¼?d §Ã¡u§> @  Ã7 ½?d X§ÃŸ¸= @  Ã8 ¾?d ˜§Ã¿Mà @  Ã9 ¿?d اÃéùä @  Ã: À?d ¨Ãݘù @  Ã; Á?d X¨Ãè0™m @  Ã< Â?d ˜¨ÃÈÅ›“ @  Ã= Ã?d بÃÖ"² @  Ã> Ä?d ©ÃÞž®Z @  Ã? Å?d X©Ãòó› @  Ã@ Æ?d ˜©ÃÒe @  ÃA Ç?d ةÌLc @  ÃB È?d ªÃAì¢ @  ÃC É?d XªÃ$wí6 @  ÃD Ê?d ˜ªÃ‚ïÈ @  ÃE Ë?d تÑVé @  ÃF Ì?d «ÃÙÚ @  ÃG Í?d X«Ã, @  ÃH Î?d ˜«Ã á}ü @  ÃI Ï?d Ø«Ã7²E @  ÃJ Ð?d ¬Ã.ü¶ @  ÃK Ñ?d X¬ÃÊ· @  ÃL Ò?d ˜¬Ã;?µs @  ÃM Ó?d جÃý, R @  ÃN Ô?d ­Ã-d€º @  ÃO Õ?d X­Ã¾Y @  ÃP Ö?d ˜­Ãžý§ @  ÃQ ×?d Ø­ÃÀþC¡ @  ÃR Ø?d ®Ã]ºã` @  ÃS Ù?d X®ÃhŒâô @  ÃT Ú?d ˜®ÃHyà  @  ÃU Û?d خÎjY+ @  ÃV Ü?d ¯Ã^"Õà @  ÃW Ý?d X¯Ã`ïpÀ @  ÃX Þ?d ˜¯Ã@r> @  ÃY ß?d دÃæþs @  ÃZ à?d °ÃX Ϻ @  Ã[ á?d X°ÃmÎ. @  Ã\ â?d ˜°ÃMãÌÐ @  Ã] ã?d ذËðuñ @  Ã^ ä?d ±Ã[¸ù @  Ã_ å?d X±ÃÙÒEJ @  Ã` æ?d ˜±Ãù'G´ @  Ãa ç?d رç$² @  Ãb è?d ²Ã:`½s @  Ãc é?d X²ÃV¼ç @  Ãd ê?d ˜²Ã/£¾ @  Ãe ë?d زÃé°8 @  Ãf ì?d ³Ã9ø‹Ð @  Ãg í?d X³Ã5.Ó @  Ãh î?d ˜³Ã'À,- @  Ãi ï?d سÃ“Ç @  Ãj ð?d ´ÃÝçÈ @  Ãk ñ?d X´Ã0ëæ\ @  Ãl ò?d ˜´Ãä¢ @  Ãm ó?d Ø´ÃÖ ]ƒ @  Ãn ô?d µÃEÑk @  Ão õ?d XµÃ•)Jˆ @  Ãp ö?d ˜µÃµÜHv @  Ãq ÷?d صÃëßp @  Ãr ø?d ¶Ãv›²± @  Ãs ù?d X¶ÃC­³% @  Ãt ú?d ˜¶ÃcX±Û @  Ãu û?d ضÃ¥Kú @  Ãv ü?d ·Ãu„ @  Ãw ý?d X·ÃKÎ! @  Ãx þ?d ˜·Ãk;#ï @  Ãy ÿ?d طæ«æ @  Ãz ?d ¸Ã’Tœû @  Ã{ ?d X¸Ã§bo @  Ã| ?d ˜¸Ã‡—Ÿ‘ @  Ã} ?d ظÃA„&° @  Ã~ ?d ¹Ã‘̪X @  Ã ?d X¹Ã^÷ ¨ @  Ã€ ?d ˜¹Ã~"V @  Ã ?d عà xP @  Ã‚ ?d ºÃ½EØ‘ @  Ãƒ  ?d XºÃˆsÙ @  Ã„  ?d ˜ºÃ¨†Ûû @  Ã…  ?d غÃn•bÚ @  Ã†  ?d »Ã¾Ýî2 @  Ã‡  ?d X»Ã€K1 @  Ãˆ ?d ˜»Ã åIÏ @  Ã‰ ?d ػÛ¶q% @  ÃŠ ?d ¼Ã‚ø‚* @  Ã‹ ?d X¼Ã·Îƒ¾ @  ÃŒ ?d ˜¼Ã—;@ @  Ã ?d ؼÃQ(8a @  ÃŽ ?d ½Ã`´‰ @  Ã ?d X½Ã /j @  Ã ?d ˜½Ã2ù-” @  Ã‘ ?d ؽÃlúw’ @  Ã’ ?d ¾Ãñ¾×S @  Ã“ ?d X¾ÃĈÖÇ @  Ã” ?d ˜¾Ãä}Ô9 @  Ã• ?d ؾÃ"nm @  Ã– ?d ¿Ãò&áð @  Ã— ?d X¿ÃÌëDó @  Ã˜ ?d ˜¿ÃìF  @uÐÀà  Ã™ ?d Ø¿ÃJúG; @  Ãš  ?d 0ÀÃ. i @  Ã› !?d pÀÃ<ý @  Ãœ "?d °ÀÃ;É @  Ã #?d ðÀÃýÚ¬" @  Ãž $?d 0ÁÃ-’ Ê @  ÃŸ %?d pÁïøœ™ @  Ã  &?d °Áà žg @  Ã¡ '?d ðÁÃÑÄa @  Ã¢ (?d 0ÂÃLJd  @  Ã£ )?d pÂÃy|e4 @  Ã¤ *?d °ÂÃY‰gÊ @  Ã¥ +?d ðÂßšÞë @  Ã¦ ,?d 0ÃÃOÒR @  Ã§ -?d pÃÃq÷ @  Ã¨ .?d °ÃÃQêõþ @  Ã© /?d ðÃÃj¹Í @  Ãª 0?d 0ÄÃs÷> @  Ã« 1?d pÄÃFÁ? @  Ã¬ 2?d °ÄÃf4=q @  Ã­ 3?d ðÄà'„P @  Ã® 4?d 0ÅÃpo¸ @  Ã¯ 5?d pÅÃã“[ @  Ã° 6?d °ÅÃÃö‘¥ @  Ã± 7?d ðÅÃõË£ @  Ã² 8?d 0ÆÃ±kb @  Ã³ 9?d pÆÃ5‡jö @  Ã´ :?d °ÆÃrh @  Ãµ ;?d ðÆÃÓaÑ) @  Ã¶ <?d 0ÇÃ)]Á @  Ã· =?d pÇÃ=äøÂ @  Ã¸ >?d °ÇÃú< @  Ã¹ ??d ðÇÃK¥î @  Ãº @?d 0ÈÃZb @  Ã» A?d pÈÃJlc’ @  Ã¼ B?d °ÈÃj™al @  Ã½ C?d ðÈÃ¬ŠØM @  Ã¾ D?d 0ÉÃ|ÂT¥ @  Ã¿ E?d pÉÃP¯îd @  ÃÀ F?d °ÉÃpZìš @  ÃÁ G?d ðÉÃ.Y¶œ @  Ã H?d 0Êó] @  Ãà I?d pÊÆ+É @  ÃÄ J?d °ÊæÞ7 @  ÃÅ K?d ðÊÃ`ͬ @  ÃÆ L?d 0Ëð… þ @  ÃÇ M?d pËÃŽH…ý @  ÃÈ N?d °Ë @  ÃÉ O?d ðËÕî¿é @  ÃÊ P?d 0ÌÃŒ Læ @  ÃË Q?d pÌù–Mr @  ÃÌ R?d °ÌओY @  ÃÍS?d ðÌäͭ @  ÃÎT?d 0ÍÃtVAE @  ÃÏU?d pÍÃç:Ú¦ @  ÃÐV?d °ÍÃÇÏØX @  ÃÑW?d ðÍÙ̂^ @  ÃÒX?d 0ÎÈ"Ÿ @  ÃÓY?d pÎÃ1¾#  @  ÃÔZ?d °ÎÃK!õ @  ÃÕ[?d ðÎÃ×X˜Ô @  ÃÖ\?d 0ÏÃ< @  Ã×]?d pÏÃ9ݱ? @  ÃØ^?d °ÏÃ(³Á @  ÃÙ_?d ðÏÿ̲÷ @  ÃÚ`?d 0ÐÃE @  ÃÛa?d pÐÃ4$Ñ @  ÃÜb?d °ÐÃÑ / @  ÃÝc?d ðÐÃÒ´ @  ÃÞd?d 0ÑÊ8æ @  Ãße?d pÑÃ€à„µ @  Ãàf?d °Ñà†K @  Ãág?d ðÑÃþÜM @  Ãâh?d€ 0ÒÃåÔ5 @  Äi?d pÒÃ1sˆ @  Äj?d °ÒÆŸv @  Äk?d ðÒÃÜݺ @  Äl?d 0ÓÔQR @  Äm?d pÓÃ2ë«+ @  Än?d °ÓÃ©Õ @  Äo?d ðÓÃçÿÎE @  Äp?d 0ÔÃþ±=J @  Ä q?d pÔÃÎÇ3 @  Ä r?d °ÔÃ.;ÅÍ @  Ä s?d ðÔÃ-a‡ @  Ä t?d 0ÕÃý) é @  Ä u?d pÕà Vñ @  Äv?d °ÕÃ-£ón @  Äw?d ðÕóÈò @  Äx?d 0ÖÃ÷h3 @  Äy?d pÖÃ}ˆ’J @  Äz?d °ÖÃ]}´ @  Ä{?d ðÖÃ^'Òx @  Ä|?d 0×ÃŽo^ @  Ä}?d p×Ã~¤é @  Ä~?d °×Ã^å¦ @  Ä?d ð×ÃÛ%¹Ø @  Ä€?d 0ØÃïÚ5Å @  Ä?d pØÃ¥Ï¼ @  Ä‚?d °ØÃ?PÍB @  Äƒ?d ðØÃ< Ž @  Ä„?d 0ÙÃìBf @  Ä…?d pÙÃ=ù @  Ä†?d °ÙÃ<Èûá @  Ä‡?d ðÙÃÞçÍ @  Ä ˆ?d 0ÚÚG  @  Ä!‰?d pÚÃ}å½u @  Ä"Š?d °ÚÃ]¿‹ @  Ä#‹?d ðÚÃ^JýG @  Ä$Œ?d 0ÛÃŽq¯ @  Ä%?d pÛÃ~}‹Ö @  Ä&Ž?d °ÛÃ^ˆ‰( @  Ä'?d ðÛëiî¸ @  Ä(?d 0Üò'· @  Ä)‘?d pÜÃBXçÎ @  Ä*’?d °ÜÃb­å0 @  Ä+“?d ðÜÃa÷§ü @  Ä,”?d 0Ýñ¿+ @  Ä-•?d pÝÃAÀÑm @  Ä.–?d °ÝÃa5Ó“ @  Ä/—?d ðÝÃ\%è @  Ä0˜?d 0ÞÃÁaHÎ @  Ä1™?d pÞÃ1²· @  Ä2š?d °ÞÃë°I @  Ä3›?d ðÞñò… @  Ä4œ?d 0ßÃÂù~m @  Ä5?d pßÃ2†„ @  Ä6ž?d uÐàÃ/°ßÃs†ê @  Ä7Ÿ?d ðßÃz%ئ @  Ä8 ?d HàÃc†P @  Ä9¡?d ˆàÃ1ši  @  Ä:¢?d Èàó ~× @  Ä;£?d áÃ∧- @  Ä<¤?d HáÃ`°ó @  Ä=¥?d ˆáÃ2_ª @  Ä>¦?d Èáð“Ht @  Ä?§?d âÃ-WåÕ @  Ä@¨?d HâïÆò  @  ÄA©?d ˆâÃýÝR @  ÄBª?d ÈâÃL Œ @  ÄC«?d ãÃ.ÏÓv @  ÄD¬?d Hãì^Ĩ @  ÄE­?d ˆãÃþE+ñ @  ÄF®?d ÈãÃ|Ô‘?d àÄøiK» @  Ä×?‘?d ÄÖ›% @  ÄØ@‘?d `ÄTŒû @  ÄÙA‘?d  Ä‹c¢ @  ÄÚB‘?d àÄ„t| @  ÄÛC‘?d ÄÕ™­† @  ÄÜD‘?d ` ÄWºX @  ÄÝE‘?d   ÄU @  ÄÞF‘?d à ć‚Bß @  ÄßG‘?d Ä´Aéì @  ÄàH‘?d ` Ä6Ðþ2 @  ÄáI‘?d   ÄdËk @  ÄâJ‘?d€ à Ä’™ @  ÅK‘?d Ä"[‹À @  ÅL‘?d ` Ä Êœ @  ÅM‘?d   Ä7˜ˆª @  ÅN‘?d à ĵ Ÿt @  ÅO‘?d Ä…CO @  ÅP‘?d ` Ä—T‘ @  ÅQ‘?d   Ä ½ä² @  ÅR‘?d à ĉ,ól @  Å S‘?d ÄæÑ{ @  Å T‘?d ` ÄŸwÆ¥ @  Å U‘?d   Ä%Ò @  Å V‘?d à ÄŠ´ÅÏ @  Å W‘?d ÄËb(Ö @  ÅX‘?d `ÄIó? @  ÅY‘?d  Äxû±Ë @  ÅZ‘?d àÄúj¦ @  Å[‘?d Än „ @  Å\‘?d `Äì1“Ü @  Å]‘?d  Ä{c‡h @  Å^‘?d àÄùò¶ @  Å_‘?d ÄcY:ì @  Å`‘?d `ÄáÈ-2 @  Åa‘?d  Ä}a @  Åb‘?d àÄÿðŠÏ @  Åc‘?d Äk:¨Ø @  Åd‘?d `Äé«¿ @  Åe‘?d  Ä~ù«² @  Åf‘?d àÄüh¼l @  Åg‘?d Ľ¾Qu @  Åh‘?d `Ä?/F« @  Åi‘?d  Ä!ïØ @  Å j‘?d àİø @  Å!k‘?d Ä zÚ @  Å"l‘?d `Ä‹ëÍÏ @  Å#m‘?d  Ä¹Ù{ @  Å$n‘?d àÄž(Î¥ @  Å%o‘?d Ä>¤ž @  Å&p‘?d `ļ5@ @  Å'q‘?d  Ä œµc @  Å(r‘?d àÄ¢ ¢½ @  Å)s‘?d Ä6Ç€ª @  Å*t‘?d `Ä´V—t @  Å+u‘?d  Ä#ƒÀ @  Å,v‘?d àÄ¡•” @  Å-w‘?d ÄàCy @  Å.x‘?d `ÄbÒnÙ @  Å/y‘?d  ÄSÚà @  Å0z‘?d àÄÑK÷Ä @  Å1{‘?d ÄEÕÓ @  Å2|‘?d `ÄÇ  @  Å3}‘?d  ÄPBÖ¹ @  Å4~‘?d àÄÒÓÁg @  Å5‘?d Ä/Ï @  Å6€‘?d `Ä­^ Ï @  Å7‘?d  Ä1÷½ì @  Å8‚‘?d àijfª2 @  Å9ƒ‘?d Ä'¬ˆ% @  Å:„‘?d `Ä¥=Ÿû @  Å;…‘?d  Ä2o‹O @  Å<†‘?d àİþœ‘ @  Å=‡‘?d Äñ(qˆ @  Å>ˆ‘?d `Äs¹fV @  Å?‰‘?d  Äý°É· @  Å@Š‘?d àÄ!Þi @  ÅA‹‘?d Äëëü~ @  ÅBŒ‘?d `Äizë  @  ÅC‘?d  Äþ(ÿ @  ÅDŽ‘?d àÄ|¹èÊ @  ÅE‘?d ÄÜ54ñ @  ÅF‘?d `Ä^¤#/ @  ÅG‘‘?d  Ä “  @  ÅH’‘?d àÄ@œ„Ò @  ÅI“‘?d ÄÔV¦Å @  ÅJ”‘?d `ÄVDZ @  ÅK•‘?d  ÄÁ•¥¯ @  ÅL–‘?d àÄC²q @  ÅM—‘?d ÄÒ_h @  ÅN˜‘?d `Ä€CH¶ @  ÅO™‘?d  Ä±KÆu @  ÅPš‘?d àÄ3ÚÑ« @  ÅQ›‘?d ħó¼ @  ÅRœ‘?d `Ä%äb @  ÅS‘?d  Ä²ÓðÖuÐ Ä @  ÅTž‘?d àÄ0Bç @  ÅUŸ‘?d 8 Äe õR @  ÅÈ’?d ø<ļœâŒ @  ÅÉ’?d 8=Ä(VÀ› @  ÅÊ’?d x=ĪÇ×E @  ÅË’?d ¸=Ä=•Ãñ @  ÅÌ’?d ø=Ä¿Ô/ @  ÅÍ’?d 8>ÄþÒ96 @  ÅÎ’?d x>Ä|C.è @  ÅÏ’?d ¸>ÄMK + @  ÅÐ’?d ø>ÄÏÚ·õ @  ÅÑ’?d 8?Ä[•â @  ÅÒ’?d x?ÄÙ‚< @  ÅÓ’?duÐ@Ä7 ¸?ÄNÓ–ˆ @  ÅÔ’?d ø?Äõ…]ƒ @  ÅÕ ’?d P@Ä\ñW @  ÅÖ  ’?d @Ä2©ó© @  Å× !’?d Ð@Ä dVª @  ÅØ "’?d AÄÜ,ÚB @  ÅÙ #’?d PAÄ?cc @  ÅÚ $’?d AÄ:Êa @  ÅÛ %’?d ÐAÄü`  @  ÅÜ &’?d BÄ’¸ÀÈ @  ÅÝ '’?d PBÄÌ»šÎ @  ÅÞ (’?d BÄìN˜0 @  Åß )’?d ÐBÄn$$c @  Åà *’?d Cľl¨‹ @  Åá +’?d PCÄxª @  Åâ ,’?d€ CÄ™ÍäT @  Æ -’?d ÐCÄMº­é @  Æ .’?d DÄTô^æ @  Æ /’?d PDĪîá @  Æ 0’?d DÄŠŸ @  Æ 1’?d ÐDÄzdef @  Æ 2’?d EĪ,éŽ @  Æ 3’?d PEÄ¢Õ @  Æ 4’?d EÄ‚x + @  Æ 5’?d ÐEÄr÷R @  Æ 6’?d FÄïCW“ @  Æ 7’?d PFÄt öx @  Æ 8’?d FÄTüô† @  Æ 9’?d ÐFĤƒÿ @  Æ :’?d GÄtË‚ @  Æ ;’?d PGÄÑËZ¬ @  Æ <’?d GÄñ>XR @  Æ =’?d ÐGÄA¢+ @  Æ >’?d HÄ5¾.6 @  Æ ?’?d PHĦCÁü @  Æ @’?d HĆ¶Ã @  Æ A’?d ÐHÄvÉ9{ @  Æ B’?d IĦµ“ @  Æ C’?d PIÄ® SÈ @  Æ D’?d IÄŽÕQ6 @  Æ E’?d ÐIÄ~ª«O @  Æ F’?d JÄãî Ž @  Æ G’?d PJÄx¤ªe @  Æ H’?d JÄXQ¨› @  Æ I’?d ÐJĨ.Râ @  Æ J’?d KÄxfÞ  @  Æ K’?d PKÄÌ`! @  Æ L’?d KÄì•#ÿ @  Æ! M’?d ÐKÄêÙ† @  Æ" N’?d LĤ*‰ @  Æ# O’?d PLÄû¾éŽ @  Æ$ P’?d LÄÛKëp @  Æ% Q’?d ÐLÄ+4  @  Æ& R’?d MÄû|á @  Æ' S’?d PMÄóÝ{º @  Æ( T’?d MÄÓ(yD @  Æ) U’?d ÐMÄ#Wƒ= @  Æ* V’?d Nľ#ü @  Æ+ W’?d PNÄ%Y‚ @  Æ, X’?d NĬ€é @  Æ- Y’?d ÐNÄõÓz @  Æ. Z’?d OÄ%›öx @  Æ/ [’?d POÄ€›.à @  Æ0 \’?d OÄ n,= @  Æ1 ]’?d ÐOÄPÖD @  Æ2 ^’?d PÄîÏjö @  Æ3 _’?d PPÄb- @  Æ4 `’?d PÄ­—’Ó @  Æ5 a’?d ÐPÄ]èhª @  Æ6 b’?d QÄ äB @  Æ7 c’?d PQÄ… @  Æ8 d’?d QÄ¥ôç @  Æ9 e’?d ÐQÄU‹úž @  Æ: f’?d RÄÈÏZ_ @  Æ; g’?d PRÄS…û´ @  Æ< h’?d RÄspùJ @  Æ= i’?d ÐRă3 @  Æ> j’?d SÄSGÛ @  Æ? k’?d PSÄIFvB @  Æ@ l’?d SÄi³t¼ @  ÆA m’?d ÐSę̎Š@  ÆB n’?d TÄ€‚}Ê @  ÆC o’?d PTÄ~˜¾Í @  ÆD p’?d TÄ^m¼3 @  ÆE q’?d ÐTÄ®FJ @  ÆF r’?d UÄ~ZÊ¢ @  ÆG s’?d PUÄvû,ù @  ÆH t’?d UÄV. @  ÆI u’?d ÐUĦqÔ~ @  ÆJ v’?d VÄ;5t¿ @  ÆK w’?d PVÄ ÕT @  ÆL x’?d VÄ€Š×ª @  ÆM y’?d ÐVÄpõ-Ó @  ÆN z’?d WÄ ½¡; @  ÆO {’?d PWĽy€ @  ÆP |’?d WÄ%H{~ @  ÆQ }’?d ÐWÄÕ7 @  ÆR ~’?d XÄáÈ  @  ÆS ’?d PXÄoó¶B @  ÆT €’?d XÄO´¼ @  ÆU ’?d ÐXÄ¿yNÅ @  ÆV ‚’?d YÄo1Â- @  ÆW ƒ’?d PYÄg$v @  ÆX „’?d YÄGe&ˆ @  ÆY …’?d ÐYÄ·Üñ @  ÆZ †’?d ZÄ*^|0 @  Æ[ ‡’?d PZıÝÛ @  Æ\ ˆ’?d ZÄ‘áß% @  Æ] ‰’?d ÐZÄaž%\ @  Æ^ Š’?d [ı֩´ @  Æ_ ‹’?d P[ÄÐV¿ @  Æ` Œ’?d [Ä%%TA @  Æa ’?d Ð[ÄÕZ®8 @  Æb Ž’?d \ÄÌ]7 @  Æc ’?d P\Ä2ž0 @  Æd ’?d \ÄûœÎ @  Æe ‘’?d Ð\Äâ„f· @  Æf ’’?d ]Ä2Ìê_ @  Æg “’?d P]Ä:m  @  Æh ”’?d ]Ęú @  Æi •’?d Ð]Äêçôƒ @  Æj –’?d ^Äw£TB @  Æk —’?d P^Äìéõ© @  Æl ˜’?d ^ÄÌ÷W @  Æm ™’?d Ð^Ä @  Æv¢’?d (aÄ¿X¡Ö @  Æw£’?d haÄ·ùG @  Æx¤’?d ¨aÄ— Es @  Æy¥’?d èaÄgs¿  @  Æz¦’?d (bÄú7Ë @  Æ{§’?d hbÄa}¾  @  Æ|¨’?d ¨bÄAˆ¼Þ @  Æ}©’?d èbı÷F§ @  Æ~ª’?d (cÄa¿ÊO @  Æ«’?d hcĘèç @  Æ€¬’?d ¨cĸ @  Æ­’?d ècÄHbû` @  Æ‚®’?d (dÄQ,o @  Æƒ¯’?d hdį6Ëh @  Æ„°’?d ¨dÄÃÉ– @  Æ…±’?d èdļ3ï @  Æ†²’?d (eįô¿ @  Æ‡³’?d heħUY\ @  Æˆ´’?d ¨eć [¢ @  Æ‰µ’?d èeÄwß¡Û @  ÆŠ¶’?d (fÄê› @  Æ‹·’?d hfÄqÑ ñ @  ÆŒ¸’?d ¨fÄQ$¢ @  Æ¹’?d èfÄ¡[Xv @  ÆŽº’?d (gÄqÔž @  Æ»’?d hgÄÔ % @  Æ¼’?d ¨gÄôæÛ @  Æ‘½’?d ègÄ™ô¢ @  Æ’¾’?d (hÄ0fx¿ @  Æ“¿’?d hhÄ£›—u @  Æ”À’?d ¨hăn•‹ @  Æ•Á’?d èhÄsoò @  Æ–Â’?d (iÄ£Yã @  Æ—Ã’?d hiÄ«øA @  Æ˜Ä’?d ¨iÄ‹ ¿ @  Æ™Å’?d èiÄ{rýÆ @  ÆšÆ’?d (jÄæ6] @  Æ›Ç’?d hjÄ}|üì @  ÆœÈ’?d ¨jÄ]‰þ @  ÆÉ’?d èjÄ­ök @  ÆžÊ’?d (kÄ}¾ˆƒ @  ÆŸË’?d hkÄɸwˆ @  Æ Ì’?d ¨kÄéMuv @  Æ¡Í’?d èkÄ2 @  Æ¢Î’?d (lÄ|| @  Æ£Ï’?d hlÄþf¿ @  Æ¤Ð’?d ¨lÄÞ“½ù @  Æ¥Ñ’?d èlÄ.ìG€ @  Æ¦Ò’?d (mÄþ¤Ëh @  Æ§Ó’?d hmÄö-3 @  Æ¨Ô’?d ¨mÄÖð/Í @  Æ©Õ’?d èmÄ&Õ´ @  ÆªÖ’?d (nÄ»Ëuu @  Æ«×’?d hnÄ Ôž @  Æ¬Ø’?d ¨nÄtÖ` @  Æ­Ù’?d ènÄð , @  Æ®Ú’?d (oÄ C ñ @  Æ¯Û’?d hoÄ…CxJ @  Æ°Ü’?d ¨oÄ¥¶z´ @  Æ±Ý’?d èoÄUÉ€Í @  Æ²Þ’?d (pÄë< @  Æ³ß’?d hpĈºÆ¤ @  Æ´à’?d ¨pĨOÄZ @  Æµá’?d èpÄX0># @  Æ¶â’?d (qĈx²Ë @  Æ·ã’?d hqÄ€ÙT @  Æ¸ä’?d ¨qÄ ,Vn @  Æ¹å’?d èqÄPS¬ @  Æºæ’?d (rÄÍ Ö @  Æ»ç’?d hrÄV]­= @  Æ¼è’?d ¨rÄv¨¯Ã @  Æ½é’?d èrĆ×Uº @  Æ¾ê’?d (sÄVŸÙR @  Æ¿ë’?d hsÄLž Ë @  ÆÀì’?d ¨sÄlk"5 @  ÆÁí’?d èsÄœØL @  ÆÂî’?d (tÄ…Z+C @  ÆÃï’?d htÄ{@èD @  ÆÄð’?d ¨tÄ[µêº @  ÆÅñ’?d ètÄ«Êà @  ÆÆò’?d (uÄ{‚œ+ @  ÆÇó’?d huÄs#zp @  ÆÈô’?d ¨uÄSÖxŽ @  ÆÉõ’?d èuÄ£©‚÷ @  ÆÊö’?d (vÄ>í"6 @  ÆË÷’?d hvÄ¥§ƒÝ @  ÆÌø’?d ¨vÄ…R# @  ÆÍù’?d èvÄu-{Z @  ÆÎú’?d (wÄ¥e÷² @  ÆÏû’?d hwÄe/  @  ÆÐü’?d ¨wÄ -÷ @  ÆÑý’?d èwÄÐï׎ @  ÆÒþ’?d (xÄä[“ @  ÆÓÿ’?d hxÄLµÇ @  ÆÔ“?d ¨xÄ5¹·9 @  ÆÕ“?d èxÄÅÆM@ @  ÆÖ“?d (yÄŽÁ¨ @  Æ×“?d hyÄ/'ó @  ÆØ“?d ¨yÄ=Ú%  @  ÆÙ“?d èyÄÍ¥ßt @  ÆÚ“?d (zÄPáµ @  ÆÛ“?d hzÄË«Þ^ @  ÆÜ“?d ¨zÄë^Ü  @  ÆÝ “?d èzÄ!&Ù @  ÆÞ “?d ({ÄËiª1 @  Æß “?d h{ÄoU: @  Æà “?d ¨{Ä_šWÄ @  Æá “?d è{į孽 @  Æâ“?d€ (|ÄÂhB @  Ç“?d h|ÄÝ3É: @  Ç“?d ¨|ÄýÆËÄ @  Ç“?d è|ÄÈðÊP @  Ç“?d (}ĸF¸ @  Ç“?d h}ÄÞ«ÿ™ @  Ç“?d ¨}Äþ^ýg @  Ç“?d è}ÄÀ“Xd @  Ç“?d (~Ä]×ø¥ @  Ç “?d h~ÄÔ¢£ @  Ç “?d ¨~Ä#! ] @  Ç “?d è~Ä¡É @  Ç “?d (ÄÆ_-! @  Ç “?d hÄL” @  Ç“?d ¨ÄuЀÄ' ¹–þ @  Ç“?d èÄq|êÈ @  Ç“?d @€Ä¼ @  Ç“?d €€ÄBª @  Ç “?d À€Ä™Ó t @  Ç!“?d Äþ<‘Ö @  Ç"“?d @Ä|­† @  Ç#“?d €ÄÚ*  @  Ç$“?d ÀÄšK=× @  Ç%“?d ‚Ä»S/Ë @  Ç&“?d @‚Ä9Â8 @  Ç'“?d €‚ÄÅ¥w3 @  Ç(“?d À‚ÄG4`í @  Ç)“?d ƒÄ ÛúO @  Ç*“?d @ƒÄ¢Jí‘ @  Ç+“?d €ƒÄÆ=A @  Ç,“?d ÀƒÄD¬VN @  Ç-“?d „Ä]Ì @  Ç .“?d @„Ä߈ @  Ç!/“?d €„ÄF¿4Ø @  Ç"0“?d À„ÄÄ.# @  Ç#1“?d …Ä£Á¹¤ @  Ç$2“?d @…Ä!P®z @  Ç%3“?d €…ÄE'{ @  Ç&4“?d À…ÄǶ¥ @  Ç'5“?d †Ä殹 @  Ç(6“?d @†Äd?g @  Ç)7“?d €†Ä˜X_A @  Ç*8“?d À†ÄÉHŸ @  Ç+9“?d ‡Ä}&Ò= @  Ç,:“?d @‡Äÿ·Åã @  Ç-;“?d €‡Ä›Àiâ @  Ç.<“?d À‡ÄQ~< @  Ç/=“?d ˆÄ“?d @ˆÄ¾Âi @  Ç1?“?d €ˆÄJhÅ @  Ç2@“?d ÀˆÄȃ @  Ç3A“?d ‰Ä¯lå¹ @  Ç4B“?d @‰Ä-ýòg @  Ç5C“?d €‰ÄIŠ^f @  Ç6D“?d À‰ÄËI¸ @  Ç7E“?d ŠÄê[¤ @  Ç8F“?d @ŠÄh’Lz @  Ç9G“?d €ŠÄ”õ\ @  Ç:H“?d ÀŠÄd‚ @  Ç;I“?d ‹Äq‹Ž  @  Ç<J“?d @‹Äó™þ @  Ç=K“?d €‹Ä—m5ÿ @  Ç>L“?d À‹Äü"! @  Ç?M“?d ŒÄ¢N|1 @  Ç@N“?d @ŒÄ ßkï @  ÇAO“?d €ŒÄ¹èF% @  ÇBP“?d ÀŒÄ;yQû @  ÇCQ“?d Ä\–ËY @  ÇDR“?d @ÄÞ܇ @  ÇES“?d €Äºpp† @  ÇFT“?d ÀÄ8ágX @  ÇGU“?d ŽÄùuD @  ÇHV“?d @ŽÄ›hbš @  ÇIW“?d €ŽÄg-¼ @  ÇJX“?d ÀŽÄåž:b @  ÇKY“?d Ä‚q À @  ÇLZ“?d @Äà· @  ÇM[“?d €Äd— @  ÇN\“?d ÀÄæ Á @  ÇO]“?d ÄI% @  Çao“?d €”Ä’Éô @  Çbp“?d À”ÄX* @  Çcq“?d •Äw·šˆ @  Çdr“?d @•Äõ&V @  Çes“?d €•Ä‘Q!W @  Çft“?d À•ÄÀ6‰ @  Çgu“?d –Ä2Ø$• @  Çhv“?d @–İI3K @  Çiw“?d €–ÄL.|m @  Çjx“?d À–Äοk³ @  Çky“?d —Ä©Pñ @  Çlz“?d @—Ä+ÁæÏ @  Çm{“?d €—ÄO¶JÎ @  Çn|“?d À—ÄÍ'] @  Ço}“?d ˜Äè%]0 @  Çp~“?d @˜Äj´Jî @  Çq“?d €˜Äƒ¢{ @  Çr€“?d À˜Ä3¥ @  Çs“?d ™ÄfÜ’ @  Çt‚“?d @™ÄäM…Ù @  Çuƒ“?d €™Ä€:)Ø @  Çv„“?d À™Ä«> @  Çw…“?d šÄ#³, @  Çx†“?d @šÄ¡";Ä @  Çy‡“?d €šÄ]Etâ @  Çzˆ“?d ÀšÄßÔc< @  Ç{‰“?d ›Ä¸;ùž @  Ç|Š“?d @›Ä:ªî@ @  Ç}‹“?d €›Ä^ÝBA @  Ç~Œ“?d À›ÄÜLUŸ @  Ç“?d œÄˆ¨;¾ @  Ç€Ž“?d @œÄ 9,` @  Ç“?d €œÄ“ª @  Ç‚“?d ÀœÄŸt @  Çƒ‘“?d ÄvpŒÖ @  Ç„’“?d @Äôá› @  Ç…““?d €Ä–7  @  Ç†”“?d ÀÄ × @  Ç‡•“?d žÄ32Ë @  Çˆ–“?d @žÄ±Ž% @  Ç‰—“?d €žÄMéj3 @  ÇŠ˜“?d ÀžÄÏx}í @  Ç‹™“?d ŸÄ¨—çO @  ÇŒš“?d @ŸÄ*ð‘ @  Ç›“?d €ŸÄNq\ @  ÇŽœ“uРÄ?d ÀŸÄÌàKN @  Ç“?d  Ä¬ @  Çž“?d X Ä.‡Ë @  Ç‘Ÿ“?d ˜ Ä*Ý @  Ç’ “?d ؠĨ–  @  Ç“¡“?d ¡ÄÏy—¡ @  Ç”¢“?d X¡ÄMè€ @  Ç•£“?d ˜¡Ä)Ÿ,~ @  Ç–¤“?d ءī;  @  Ç—¥“?d ¢ÄŠ)¼ @  Ç˜¦“?d X¢Ä‡>b @  Ç™§“?d ˜¢ÄôàqD @  Çš¨“?d Ø¢Ävqfš @  Ç›©“?d £Äžü8 @  Çœª“?d X£Ä“ëæ @  Ç«“?d ˜£Ä÷xGç @  Çž¬“?d Ø£ÄuéP9 @  ÇŸ­“?d ¤Äl\» @  Ç ®“?d X¤ÄîÍe @  Ç¡¯“?d ˜¤Äwú2¯ @  Ç¢°“?d ؤÄõk%q @  Ç£±“?d ¥Ä’„¿Ó @  Ç¤²“?d X¥Ä¨  @  Ç¥³“?d ˜¥Ätb  @  Ç¦´“?d Ø¥ÄöóÒ @  Ç§µ“?d ¦Ä×ëÎ @  Ç¨¶“?d X¦ÄUz @  Ç©·“?d ˜¦Ä©Y6 @  Çª¸“?d ئÄ+ŒNè @  Ç«¹“?d §ÄLcÔJ @  Ç¬º“?d X§ÄÎòÔ @  Ç­»“?d ˜§Äª…o• @  Ç®¼“?d اÄ(xK @  Ç¯½“?d ¨Ä xk @  Ç°¾“?d X¨Ä‡oµ @  Ç±¿“?d ˜¨Ä{Wn² @  Ç²À“?d بÄùÆyl @  Ç³Á“?d ©Äž)ãÎ @  Ç´“?d X©Ä¸ô @  ÇµÓ?d ˜©ÄxÏX @  Ç¶Ä“?d Ø©Äú^OÏ @  Ç·Å“?d ªÄÛF]Ó @  Ç¸Æ“?d XªÄY×J  @  Ç¹Ç“?d ˜ªÄ¥°+ @  ÇºÈ“?d تÄ'!õ @  Ç»É“?d «Ä@ΈW @  Ç¼Ê“?d X«ÄÂ_Ÿ‰ @  Ç½Ë“?d ˜«Ä¦(3ˆ @  Ç¾Ì“?d Ø«Ä$¹$V @  Ç¿Í“?d ¬Ä“ zF @  ÇÀΓ?d X¬Äšm˜ @  ÇÁÏ“?d ˜¬Äˆ­@R @  ÇÂГ?d جÄ .”?d pÄĺË+£ @  È?/”?d °ÄÄÿîFÑ @  È@0”?d ðÄÄ}Q @  ÈA1”?d 0ÅÄßÙ0@ @  ÈB2”?d pÅÄ]H'ž @  ÈC3”?d °ÅÄüvpr @  ÈD4”?d ðÅÄ~çg¬ @  ÈE5”?d 0ÆÄ‘M*Ê @  ÈF6”?d pÆÄÜ= @  ÈG7”?d °ÆÄ! -H @  ÈH8”?d ðÆÄ£˜:– @  ÈI9”?d 0ÇÄ>[Ù @  ÈJ:”?d pÇă¯L @  ÈK;”?d °ÇÄ"‘ë @  ÈL<”?d ðÇÄ  5 @  ÈM=”?d 0ÈÄæm @  ÈN>”?d pÈÄd€zQ @  ÈO?”?d °ÈÄóCÌ @  ÈP@”?d ðÈÄqÒ  @  ÈQA”?d 0ÉÄÓtl] @  ÈRB”?d pÉÄQå{ƒ @  ÈSC”?d °ÉÄðÛ,o @  ÈTD”?d ðÉÄrJ;± @  ÈUE”?d 0ÊÄàv× @  ÈVF”?d pÊÄqa  @  ÈWG”?d °ÊÄ-¤qU @  ÈXH”?d ðÊį5f‹ @  ÈYI”?d 0ËÄ “Ä @  ÈZJ”?d pËÄ @  È[K”?d °ËÄ.‘ @  Èo_”?d °ÐÄØbK @  Èp`”?d ðÐÄZó\à @  Èqa”?d 0ÑÄøU=Œ @  Èrb”?d pÑÄzÄ*R @  Èsc”?d °ÑÄÛú}¾ @  Ètd”?d ðÑÄYkj` @  Èue”?d 0ÒĶÁ' @  Èvf”?d pÒÄ4P0Ø @  Èwg”?d °ÒÄ… „ @  Èxh”?d ðÒÄ„7Z @  Èyi”?d 0ÓÄ&²V @  Èzj”?d pÓĤ#AË @  È{k”?d °ÓÄ' @  È|l”?d ðÓćŒù @  È}m”?d 0ÔÄì,Q @  È~n”?d pÔÄn½ @  Èo”?d °ÔÄÈÎUÌ @  È€p”?d ðÔÄJ_B @  Èq”?d 0ÕÄèù#] @  È‚r”?d pÕÄjh4ƒ @  Èƒs”?d °ÕÄËVco @  È„t”?d ðÕÄIÇt± @  È…u”?d 0ÖĦm9× @  È†v”?d pÖÄ$ü.  @  È‡w”?d °ÖÄ)>U @  Èˆx”?d ðÖÄ”¸)‹ @  È‰y”?d 0×Ä6HÄ @  ÈŠz”?d p×Ä´_ @  È‹{”?d °×ıö @  ÈŒ|”?d ð×Ä— ( @  È}”?d 0ØÄÑ1~’ @  ÈŽ~”?d pØÄS iL @  È”?d °ØÄÙ¥]C @  È€”?d ðØÄ[4J @  È‘”?d 0ÙÄù’+Ò @  È’‚”?d pÙÄ{<  @  È“ƒ”?d °ÙÄÚ=kà @  È”„”?d ðÙÄX¬|> @  È•…”?d 0ÚÄ·1X @  È–†”?d pÚÄ5—&† @  È—‡”?d °ÚÄB6Ú @  È˜ˆ”?d ðÚÄ…Ó! @  È™‰”?d 0ÛÄ'u@K @  ÈšŠ”?d pÛÄ¥äW• @  È›‹”?d °ÛÄÚy @  ÈœŒ”?d ðÛĆK§ @  È”?d 0ÜÄíë  @  ÈžŽ”?d pÜÄozÑ @  ÈŸ”?d °ÜÄ„Xu1 @  È ”?d ðÜÄÉbï @  È¡‘”?d 0ÝĤo  @  È¢’”?d pÝÄ&þ~ @  È£“”?d °ÝćÀC’ @  È¤””?d ðÝÄQTL @  È¥•”?d 0ÞÄêû* @  È¦–”?d pÞÄhjô @  È§—”?d °ÞÄZ¿¨ @  È¨˜”?d ðÞÄØ. v @  È©™”?d 0ßÄzˆh9 @  Èªš”?d pßÄøç @  È«›”?d uÐàÄ/°ßÄY'(  @  È¬œ”?d ðßÄÛ¶?Õ @  È­”?d HàİüŒ„ @  È®ž”?d ˆàÄ Žz @  È¯Ÿ”?d ÈàÄUþîÖ @  È° ”?d áÄ…¶b> @  È±¡”?d HáÄuɘG @  È²¢”?d ˆáÄU<š¹ @  È³£”?d ÈáÄVfØu @  È´¤”?d âÄË"x´ @  Èµ¥”?d HâÄ;]‚Í @  È¶¦”?d ˆâĨ€3 @  È·§”?d ÈâÄ‹…O @  È¸¨”?d ãÄ[Q § @  È¹©”?d HãÄ«.óÞ @  Èºª”?d ˆãÄ‹Ûñ  @  È»«”?d ÈãĈ³ì @  È¼¬”?d äÄ‘Ï@ã @  È½­”?d HäÄa°ºš @  È¾®”?d ˆäÄAE¸d @  È¿¯”?d ÈäĦÀ6 @  ÈÀ°”?d åÄvLLÞ @  ÈÁ±”?d HåĆ3¶§ @  È²”?d ˆåĦƴY @  Èó”?d ÈåÄ¥œö• @  ÈÄ´”?d æÄ8ØVT @  Èŵ”?d HæÄȧ¬- @  Èƶ”?d ˆæÄèR®Ó @  ÈÇ·”?d ÈæÄx㫯 @  Èȸ”?d çĨ«'G @  Èɹ”?d HçÄXÔÝ> @  Èʺ”?d ˆçÄx!ßÀ @  ÈË»”?d ÈçÄ{{  @  È̼”?d èÄO„ @  Èͽ”?d HèÄ¿ûëh @  Èξ”?d ˆèÄŸé– @  ÈÏ¿”?d ÈèĪ©œ+ @  ÈÐÀ”?d éÄzáà @  ÈÑÁ”?d HéÄŠžêº @  ÈÒ”?d ˆéĪkèD @  ÈÓÔ?d ÈéÄ©1ªˆ @  ÈÔÄ”?d êÄ4u I @  ÈÕÅ”?d HêÄÄ ð0 @  ÈÖÆ”?d ˆêÄäÿòÎ @  È×Ç”?d ÈêÄtN÷² @  ÈØÈ”?d ëĤ{Z @  ÈÙÉ”?d HëÄTy# @  ÈÚÊ”?d ˆëÄtŒƒÝ @  ÈÛË”?d ÈëÄwÖÁ @  ÈÜÌ”?d ìÄn˜2 @  ÈÝÍ”?d HìÄžçÈg @  ÈÞΔ?d ˆìľʙ @  ÈßÏ”?d ÈìÄ÷T´Y @  ÈàД?d íÄ'8± @  ÈáÑ”?d HíÄ×cÂÈ @  ÈâÒ”?d€ ˆíăUÜ @  ÉÓ”?d ÈíÄaNÖu @  ÉÔ”?d îÄü v´ @  ÉÕ”?d HîÄÉ… @  É!ó”?d ÈõÄJo‡¤ @  É"ô”?d öÄ×+'e @  É#õ”?d HöÄâ&ñ @  É$ö”?d ˆöÄÂè$ @  É%÷”?d ÈöÄœë~  @  É&ø”?d ÷ÄL£òá @  É'ù”?d H÷ÄrnWâ @  É(ú”?d ˆ÷ÄR›U @  É)û”?d È÷Ä”ˆì= @  É*ü”?d øÄ w`  @  É+ý”?d HøÄ•Aa´ @  É,þ”?d ˆøÄµ´cJ @  É-ÿ”?d ÈøÄ¡vó @  É.•?d ùÄQéú @  É/•?d HùÄÂ…aø @  É0•?d ˆùÄâpc @  É1•?d ÈùÄ$cÚ' @  É2•?d úĹ'zæ @  É3•?d HúÄŒ{r @  É4•?d ˆúĬäyŒ @  É5•?d ÈúÄòç#Š @  É6•?d ûÄ"¯¯b @  É7 •?d HûÄb a @  É8 •?d ˆûÄ<—Ÿ @  É9 •?d ÈûÄú„±¾ @  É: •?d üÄãÊB± @  É; •?d HüÄÖüC% @  É<•?d ˆüÄö AÛ @  É=•?d ÈüÄÍZy1 @  É>•?d ýÄõÙ @  É?•?d HýÄ1O @  É@•?d ˆýÄŠMæ @  ÉA•?d ÈýÄ×™ôÇ @  ÉB•?d þÄJÝT @  ÉC•?d HþÄëU’ @  ÉD•?d ˆþÄ_Wl @  ÉE•?d ÈþÄ j @  ÉF•?d ÿÄÑU‚ @  ÉG•?d HÿÄï˜$ @  ÉH•?d ˆÿÄÏm& @  ÉIuÐÅ•?d ÈÿÄ0¹C‹ @  ÉJ •?d Å kz @  ÉK •?d `ÅJ;jî @  ÉL •?d  ÅjÎh @  ÉM •?d àÅÌ*i& @  ÉN  •?d ÅbåÎ @  ÉO !•?d `Å~- @  ÉP "•?d  Å¯û|Ó @  ÉQ #•?d àÅièÅò @  ÉR $•?d Åô¬e3 @  ÉS %•?d `ÅÁšd§ @  ÉT &•?d  ÅáofY @  ÉU '•?d àÅ¿l<_ @  ÉV (•?d Åo$°· @  ÉW )•?d `ÅQé´ @  ÉX *•?d  ÅqJ @  ÉY +•?d àÅ·®k @  ÉZ ,•?d Å®A]d @  É[ -•?d `Å›w\ð @  É\ .•?d  Å»‚^ @  É] /•?d àÅ€Ñfä @  É^ 0•?d ÅP™ê  @  É_ 1•?d `ÅÒóV_ @  É` 2•?d  ÅòT¡ @  Éa 3•?d àÅ4í€ @  Éb 4•?d Å©QMA @  Éc 5•?d `ÅœgLÕ @  Éd 6•?d  Å¼’N+ @  Ée 7•?d àÅâ‘- @  Éf 8•?d Å2٘Š@  Ég 9•?d `Å =Æ @  Éh :•?d  Å,á?8 @  Éi ;•?d àÅêò† @  Éj <•?d ÅÞ  @  Ék =•?d `Åë;  @  Él >•?d  ÅËÎ n @  Ém ?•?d àÅzI @  Én @•?d ÅM2‘¡ @  Éo A•?d ` ÅÞ^ B @  Ép B•?d   Åþ«¼ @  Éq C•?d à Å8¸± @  Ér D•?d Å¥ü\ @  És E•?d ` ÅÊÈ @  Ét F•?d   Ű?6 @  Éu G•?d à ÅîtÄØ @  Éw I•?d ` ŹaÛ @  Éx J•?d   Å Lc% @  Éy K•?d à Åæ_Ú @  Éz L•?d Åÿ)  @  É{ M•?d ` ÅÊ'(Ÿ @  É| N•?d   ÅêÒ*a @  É} O•?d à ÅÑ‹ @  É~ P•?d ÅÉžc @  É Q•?d ` ÅÎò“ @  É€ R•?d   Åîm @  É S•?d à Å(¯L @  É‚ T•?d ŵP @  Éƒ U•?d `Å€f @  É„ V•?d  Å “ ç @  É… W•?d àÅþVá @  É† X•?d Å.ØÚ  @  É‡ Y•?d `Å  @  Éˆ Z•?d  Å0à}ô @  É‰ [•?d àÅöóÄÕ @  ÉŠ \•?d ÅH-xg @  É‹ ]•?d `Å}yó @  ÉŒ ^•?d  Å]î{  @  É _•?d àÅû z; @  ÉŽ `•?d Å+BöÓ @  É a•?d `Ÿ.m0 @  É b•?d  Å˜ÛoÎ @  É‘ c•?d àÅ^ÈÖï @  É’ d•?d ÅÃŒv. @  É“ e•?d `Åöºwº @  É” f•?d  ÅÖOuD @  É• g•?d àňL/B @  É– h•?d ÅX£ª @  É— i•?d `ÅfÉ© @  É˜ j•?d  ÅF<W @  É™ k•?d àÅ€/½v @  Éš l•?d Å™aNy @  É› m•?d `ŬWOí @  Éœ n•?d  ÅŒ¢M @  É o•?d àÅ·ñuù @  Éž p•?d Åg¹ù @  ÉŸ q•?d `ÅåÓEB @  É  r•?d  ÅÅ&G¼ @  É¡ s•?d àÅ5þ @  É¢ t•?d Åžq^\ @  É£ u•?d `Å«G_È @  É¤ v•?d  Å‹²]6 @  É¥ w•?d àÅÕ±0 @  É¦ x•?d Åù‹Ø @  É§ y•?d `Å;4.Û @  É¨ z•?d  ÅÁ,% @  É© {•?d àÅÝÒ• @  Éª |•?d Åé- @  É« }•?d `ÅÜ @  É¬ ~•?d  Åüîs @  É­ •?d àÅ·œZÆ @  É® €•?d ÅgÔÖ. @  É¯ •?d `Åô¸MÍ @  É° ‚•?d  ÅÔMO3 @  É± ƒ•?d àÅ^ö @  É² „•?d ÅVÓ @  É³ …•?d `ź,WG @  É´ †•?d  ÅšÙU¹ @  Éµ ‡•?d àÅÄÚ¿ @  É¶ ˆ•?d Å’ƒW @  É· ‰•?d `Å*_&T @  É¸ Š•?d  Å ª$ª @  É¹ ‹•?d àÅ̹‹ @  Éº Œ•?d ÅÕ÷n„ @  É» •?d `ÅàÁo @  É¼ Ž•?d  ÅÀ4mî @  É½ •?d àÅûgU @  É¾ •?d Å+/Ùì @  É¿ ‘•?d `ÅBc- @  ÉÀ ’•?d  Å'·aÓ @  ÉÁ “•?d àÅá¤Øò @  É ”•?d Å|àx3 @  Éà ••?d `ÅIÖy§ @  ÉÄ –•?d  Åi#{Y @  ÉÅ —•?d àÅ7 !_ @  ÉÆ ˜•?d Åçh­· @  ÉÇ ™•?d `ÅÙ¥´ @  ÉÈ š•?d  ÅùP JuÐ Å @  ÉÉ ›•?d àÅ„o¾ @  ÉÊœ•?d 8 Åw±Ø @  ÉË•?d x ÅB¹°L @  ÉÌž•?d ¸ ÅbL²² @  ÉÍŸ•?d ø ÅĨ³„ @  ÉΠ•?d 8!Åà?l @  ÉÏ¡•?d x!ŇŒ¤ @  ÉТ•?d ¸!ŧy¦q @  ÉÑ£•?d ø!ÅajP @  ÉÒ¤•?d 8"Åü.¿‘ @  ÉÓ¥•?d x"Åɾ @  ÉÔ¦•?d ¸"Åéí¼û @  ÉÕ§•?d ø"Å·îæý @  ÉÖ¨•?d 8#Åg¦j @  Éש•?d x#ÅYkÏ @  Éت•?d ¸#ÅyžÍè @  ÉÙ«•?d ø#Å¿tÉ @  ÉÚ¬•?d 8$Å¦Ã‡Æ @  ÉÛ­•?d x$Å“õ†R @  ÉÜ®•?d ¸$ų„¬ @  Éݯ•?d ø$ňS¼F @  ÉÞ°•?d 8%ÅX0® @  Éß±•?d x%ÅÚqŒý @  Éಕ?d ¸%Åú„Ž @  É᳕?d ø%Å<—7" @  Éâ´•?d€ 8&Å`”`ã @  Êµ•?d x&Å´ã)^ @  Ê¶•?d ¸&Å”+  @  Ê·•?d ø&Å\ŠK @  Ê¸•?d 8'Åߣ @  Ê¹•?d x'Å/küÚ @  Êº•?d ¸'Åžþ$ @  Ê»•?d ø'Å? @  Ê¼•?d 8(Å3À”b @  Ê ½•?d x(Åÿn @  Ê ¾•?d ¸(ÅãJlå @  Ê ¿•?d ø(Åp·ƒ/ @  Ê À•?d 8)Å ÿÇ @  Ê Á•?d x)ÅP€õ¾ @  Ê•?d ¸)Åpu÷@ @  ÊÕ?d ø)ÅÕu/û @  ÊÄ•?d 8*ÅH1: @  ÊÅ•?d x*ŸNuC @  ÊÆ•?d ¸*Ř»w½ @  ÊÇ•?d ø*ÅñÖV @  ÊÈ•?d 8+ÅÓ¹Z¾ @  ÊÉ•?d x+Å#Æ Ç @  ÊÊ•?d ¸+Å3¢9 @  ÊË•?d ø+Å ’Db @  ÊÌ•?d 8,ÅÜ·m @  ÊÍ•?d x,Åâ£M @  ÊΕ?d ¸,ÅÂVOê @  ÊÏ•?d ø,Åò•?d ¸5ů©S @  Ê?ó•?d ø5Å ®PÊ @  Ê@ô•?d 86Åêð  @  ÊAõ•?d x6Å`• r @  ÊBö•?d ¸6Å@`Œ @  ÊC÷•?d ø6ÅÛ*©g @  ÊDø•?d 87Å b% @  ÊEù•?d x7Åûßö @  ÊFú•?d ¸7ÅÛèÝ @  ÊGû•?d ø7ÅÓI;S @  ÊHü•?d 88Åç¶·N @  ÊIý•?d x8ÅÉM7 @  ÊJþ•?d ¸8Å7Å9°ß @  Êa–?d x>ÅáFJ¦ @  Êb–?d ¸>ÅÁ³HX @  Êc–?d ø>ÅZùé³ @  Êd–?d 8?Åбe[ @  Êe–?d x?ÅzΟ" @  Êf–?duÐ@Å7 ¸?ÅZ;Ü @  Êg–?d ø?ÅRš{‡ @  Êh–?d P@Å‘6Á» @  Êi–?d @ÅÃ-.â @  Êj–?d Ð@ÅA¼9< @  Êk–?d AÅpÈXÑ @  Êl –?d PAÅòYO @  Êm!–?d AÅ B V @  Ên"–?d ÐAÅ"Ó·ˆ @  Êo#–?d BŘØ, @  Êp$–?d PBÅ—Ïò @  Êq%–?d BÅHŒ « @  Êr&–?d ÐBÅÊ7u @  Ês'–?d CÅŽ ¨ @  Êt(–?d PCÅv @  Êu)–?d CÅÓõ/ @  Êv*–?d ÐCÅQ•âñ @  Êw+–?d DÅÂëà{ @  Êx,–?d PDÅ@z÷¥ @  Êy-–?d DÅaü @  Êz.–?d ÐDÅð" @  Ê{/–?d EÅ<3W @  Ê|0–?d PEž¢@Í @  Ê}1–?d EÅ칯” @  Ê~2–?d ÐEÅn(¸J @  Ê3–?d FňªÆý @  Ê€4–?d PFÅ ;Ñ# @  Ê5–?d FÅX >z @  Ê‚6–?d ÐFÅÚ±)¤ @  Êƒ7–?d GÅ"y @  Ê„8–?d PGÅ‘³§ @  Ê…9–?d GÅèëþ @  Ê†:–?d ÐGÅA9ü  @  Ê‡;–?d HÅÿö¸ @  Êˆ<–?d PHÅ}g–f @  Ê‰=–?d HÅ/|y? @  ÊŠ>–?d ÐHÅ­íná @  Ê‹?–?d IÅlÉ @  ÊŒ@–?d PIÅîX à @  ÊA–?d IżCâš @  ÊŽB–?d ÐIÅ>ÒõD @  ÊC–?d JÅ„šà @  ÊD–?d PJÅ–> @  Ê‘E–?d JÅTbg @  Ê’F–?d ÐJÅÖu¹ @  Ê“G–?d KÅOd @  Ê”H–?d PKÅXº @  Ê•I–?d KÅÏ·ã @  Ê–J–?d ÐKÅM” = @  Ê—K–?d LÅÞꢷ @  Ê˜L–?d PLÅ\{µi @  Ê™M–?d LÅ`Z0 @  ÊšN–?d ÐLÅŒñMî @  Ê›O–?d MÅ 2ß @  ÊœP–?d PMÅ¢£ @  ÊQ–?d MÅð¸íX @  ÊžR–?d ÐMÅr)ú† @  ÊŸS–?d NÅÙú²’ @  Ê T–?d PNÅ[k¥L @  Ê¡U–?d NÅ pJ @  Ê¢V–?d ÐNÅ‹á]Ë @  Ê£W–?d OÅBrg @  Ê¤X–?d POÅÀãpÈ @  Ê¥Y–?d OÅ’øŸ‘ @  Ê¦Z–?d ÐOÅiˆO @  Ê§[–?d PÅ$‡Åx @  Ê¨\–?d PPŦҦ @  Ê©]–?d PÅô =ÿ @  Êª^–?d ÐPÅvœ*! @  Ê«_–?d QÅGèKÌ @  Ê¬`–?d PQÅÅy\ @  Ê­a–?d QÅ—b³K @  Ê®b–?d ÐQÅó¤• @  Ê¯c–?d Rů&Ë1 @  Ê°d–?d PRÅ-·Üï @  Ê±e–?d RŬ3¶ @  Ê²f–?d ÐRÅý=$h @  Ê³g–?d SÅ4®µ @  Ê´h–?d PSŶ? k @  Êµi–?d SÅä$æ2 @  Ê¶j–?d ÐSÅfµñì @  Ê·k–?d TÅõËóf @  Ê¸l–?d PTÅwZä¸ @  Ê¹m–?d TÅ%A á @  Êºn–?d ÐTŧÐ? @  Ê»o–?d UÅ D @  Ê¼p–?d PUʼn‚SÐ @  Ê½q–?d UÅÛ™¼‰ @  Ê¾r–?d ÐUÅY«W @  Ê¿s–?d VÅ\ÜåÑ @  ÊÀt–?d PVÅÞMò @  ÊÁu–?d VÅŒVV @  ÊÂv–?d ÐVÅÇ ˆ @  ÊÃw–?d WÅÇT0U @  ÊÄx–?d PWÅEÅ'‹ @  ÊÅy–?d WÅÞÈÒ @  ÊÆz–?d ÐWÅ•Oß  @  ÊÇ{–?d XÅ+€¢” @  ÊÈ|–?d PXÅ©µJ @  ÊÉ}–?d XÅû Z @  ÊÊ~–?d ÐXÅy›MÍ @  ÊË–?d YÅ¥ym£ @  ÊÌ€–?d PYÅ'èz} @  ÊÍ–?d YÅuó•$ @  Ê΂–?d ÐYÅ÷b‚ú @  Êσ–?d ZÅM·í^ @  ÊЄ–?d PZÅÏ&ú€ @  ÊÑ…–?d ZÅ=Ù @  ÊÒ†–?d ÐZŬ @  ÊÓ‡–?d [ÅÖ?8Ú @  ÊÔˆ–?d P[ÅT®/ @  ÊÕ‰–?d [ŵÀ] @  ÊÖŠ–?d Ð[Å„$׃ @  Ê׋–?d \ÅZÕ  @  ÊØŒ–?d P\Å•ËÂ× @  ÊÙ–?d \ÅÇÐ-Ž @  ÊÚŽ–?d Ð\ÅEA:P @  ÊÛ–?d ]Åé‚ba @  ÊÜ–?d P]Åku¿ @  ÊÝ‘–?d ]Å9šæ @  ÊÞ’–?d Ð]Å»™8 @  Êß“–?d ^ÅJÅ, @  Êà”–?d P^Å’ÛÒò @  Êá•–?d ^ÅÀÀ=« @  Êâ––?d€ Ð^Å6’6Ó @  Ë—–?d _Å@D' @  Ë˜–?d P_ÅœÑSù @  Ë™–?d _Å ƒGM @  ËuÐ`Åš–?d Ð_ʼnP“ @  Ë›–?d (`ÅshKô @  Ëœ–?d h`Åñù\* @  Ë–?d ¨`ÅmPì  @  Ëž–?d è`ÅïÁû× @  Ë Ÿ–?d (aÅüa× @  Ë  –?d haÅ™mv  @  Ë ¡–?d ¨aÅ?b½ @  Ë ¢–?d èaÅŒ®uc @  Ë £–?d (bÅUh{] @  Ë¤–?d hbÅ×ùlƒ @  Ë¥–?d ¨bÅæñâ@ @  Ë¦–?d èbÅd`õž @  Ë§–?d (cÅhº4® @  Ë¨–?d hcÅê+#p @  Ë©–?d ¨cÅ}y7Ä @  Ëª–?d ècÅÿè  @  Ë«–?d (dÅ¢$}ê @  Ë¬–?d hdÅ µj4 @  Ë­–?d ¨dÅ¼Ú @  Ë®–?d èdÅ>ÍÉ @  Ë¯–?d (eÅWn @  Ë°–?d heÅÕ–yË @  Ë±–?d ¨eÅBÄm @  Ë²–?d èeÅÀUz¡ @  Ë³–?d (fÅ“tŸ @  Ë´–?d hfÅ›cA @  Ëµ–?d ¨fÅ» Ê2 @  Ë ¶–?d èfÅ9Ýì @  Ë!·–?d (gÅ5GÜ @  Ë"¸–?d hgÅ·Ö  @  Ë#¹–?d ¨gÅ „¶ @  Ë$º–?d ègÅ¢h @  Ë%»–?d (hÅÒh*Š @  Ë&¼–?d hhÅPù=T @  Ë'½–?d ¨hÅÌPw @  Ë(¾–?d èhÅNÁš© @  Ë)¿–?d (iÅJ¬¸ @  Ë*À–?d hiÅÈ=f @  Ë+Á–?d ¨iÅ_oÒ @  Ë,–?d èiÅÝþ  @  Ë-Ö?d (jÅ82 @  Ë.Ä–?d hjņ©ì @  Ë/Å–?d ¨jÅ·¡–/ @  Ë0Æ–?d èjÅ50ñ @  Ë1Ç–?d (kÅ9ê@Á @  Ë2È–?d hkÅ»{W @  Ë3É–?d ¨kÅ,)C« @  Ë4Ê–?d èkÅ®¸Tu @  Ë5Ë–?d (lÅót … @  Ë6Ì–?d hlÅqå[ @  Ë7Í–?d ¨lÅíL®x @  Ë8Ζ?d èlÅoݹ¦ @  Ë9Ï–?d (mÅWz @  Ë:Ж?d hmÅ„Æ ¤ @  Ë;Ñ–?d ¨mÅ” @  Ë<Ò–?d èmőΠ@  Ë=Ó–?d (nÅHÃð @  Ë>Ô–?d hnÅÊR. @  Ë?Õ–?d ¨nÅD[¸Ï @  Ë@Ö–?d ènÅÆÊ¯ @  ËA×–?d (oÅÊn! @  ËBØ–?d hoÅHyÿ @  ËCÙ–?d ¨oÅßÓmK @  ËDÚ–?d èoÅ]Bz• @  ËEÛ–?d (pŧhØ @  ËFÜ–?d hpÅ% @  ËGÝ–?d ¨pŹ&Ï% @  ËHÞ–?d èpÅ;·Øû @  ËIß–?d (qÅÏŠBû @  ËJà–?d hqÅMU% @  ËKá–?d ¨qÅÚIA‘ @  ËLâ–?d èqÅXØVO @  ËMã–?d (rÅXq @  ËNä–?d hrÅO¯ @  ËOå–?d ¨rÅ2‡Ál @  ËPæ–?d èrŰֲ @  ËQç–?d (sż̂ @  ËRè–?d hsÅ>]\ @  ËSé–?d ¨sÅ©è @  ËTê–?d èsÅ+ž6 @  ËUë–?d (tÅvR^Æ @  ËVì–?d htÅôÃI @  ËWí–?d ¨tÅhjù; @  ËXî–?d ètÅêûîå @  ËYï–?d (uŃqM9 @  ËZð–?d huÅàZç @  Ë[ñ–?d ¨uÅ–²NS @  Ë\ò–?d èuÅ#Y @  Ë]ó–?d (vÅÍåW³ @  Ë^ô–?d hvÅOt@m @  Ë_õ–?d ¨vÅozé @  Ë`ö–?d èvÅíëþÀ @  Ëa÷–?d (wÅá1?ð @  Ëbø–?d hwÅc (. @  Ëcù–?d ¨wÅôò<š @  Ëdú–?d èwÅvc+D @  Ëeû–?d (xÅ ¦ @  Ëfü–?d hxÅ„x @  Ëgý–?d ¨xÅ&®[ @  Ëhþ–?d èxÅš·¹… @  Ëiÿ–?d (yÅü{7  @  Ëj—?d hyÅ~ê Ô @  Ëk—?d ¨yÅé¸4` @  Ël—?d èyÅk)#¾ @  Ëm—?d (zŲï-€ @  Ën—?d hzÅ0~:^ @  Ëo—?d ¨zÅv´ @  Ëp—?d èzŃç£C @  Ëq—?d ({Å=bs @  Ër—?d h{Å ¬u­ @  Ës —?d ¨{Åšþa @  Ët —?d è{ÅovÇ @  Ëu —?d (|ÅE£+7 @  Ëv —?d h|ÅÇ2<é @  Ëw —?d ¨|Å[›ŒÊ @  Ëx—?d è|ÅÙ › @  Ëy—?d (}Ű€8È @  Ëz—?d h}Å2/ @  Ë{—?d ¨}Å¥C;¢ @  Ë|—?d è}Å'Ò,| @  Ë}—?d (~Åþ"B @  Ë~—?d h~Å|…5œ @  Ë—?d ¨~ÅÚªL @  Ë€—?d è~Å“K½’ @  Ë—?d (ÅŸ‘|¢ @  Ë‚—?d hÅk| @  Ëƒ—?d ¨ÅuЀÅ'ŠRÈ @  Ë„—?d èÅÃh @  Ë…—?d @€Å"ÿ$ @  Ë†—?d €€Å &c @  Ë‡—?d À€Å<ǃ` @  Ëˆ—?d Åìˆ @  Ë‰—?d @ÅJk¾ @  ËŠ —?d €Åjž @ @  Ë‹!—?d ÀÅ_¨ Ô @  ËŒ"—?d ‚ÅÂì­ @  Ë#—?d @‚Åÿ4 @  ËŽ$—?d €‚Å$ Ê @  Ë%—?d À‚Å·f) @  Ë&—?d ƒÅg.Á @  Ë‘'—?d @ƒÅ9-[Ç @  Ë’(—?d €ƒÅØY9 @  Ë“)—?d ÀƒÅ,îX­ @  Ë”*—?d „Å5 «¢ @  Ë•+—?d @„Åó³ƒ @  Ë–,—?d €„ÅÓF} @  Ë—-—?d À„Å틵~ @  Ë˜.—?d …Å=Ã9– @  Ë™/—?d @…Å| @  Ëš0—?d €…Å&e‚ @  Ë›1—?d À…ÅS @  Ëœ2—?d †ÅŽ¢× @  Ë3—?d @†ÅHö @  Ëž4—?d €†Åhñ @  ËŸ5—?d À†Åꛥ[ @  Ë 6—?d ‡Å:Ó)³ @  Ë¡7—?d @‡ÅdÐsµ @  Ë¢8—?d €‡ÅD%qK @  Ë£9—?d À‡Åqpß @  Ë¤:—?d ˆÅEìü @  Ë¥;—?d @ˆÅƒÿEã @  Ë¦<—?d €ˆÅ£ G @  Ë§=—?d ÀˆÅÇâ @  Ë¨>—?d ‰ÅMnö @  Ë©?—?d @‰Å;zÑ @  Ëª@—?d €‰Å;Îx/ @  Ë«A—?d À‰Åøy» @  Ë¬B—?d ŠÅ“¼Ùz @  Ë­C—?d @ŠÅU¯`[ @  Ë®D—?d €ŠÅuZb¥ @  Ë¯E—?d ÀŠÅæ6ùF @  Ë°F—?d ‹Å6~u® @  Ë±G—?d @‹Åh}/¨ @  Ë²H—?d €‹ÅHˆ-V @  Ë³I—?d À‹Å}¾, @  Ë´J—?d ŒÅdðßÍ @  ËµK—?d @ŒÅ¢ãfì @  Ë¶L—?d €ŒÅ‚d @  Ë·M—?d ÀŒÅ¼ÛÁ @  Ë¸N—?d Ål“Mù @  Ë¹O—?d @ÅWÀu @  ËºP—?d €Åw5wí @  Ë»Q—?d ÀÅBvy @  Ë¼R—?d ŽÅßGÖ¸ @  Ë½S—?d @ŽÅTo™ @  Ë¾T—?d €ŽÅ9¡mg @  Ë¿U—?d ÀŽÅÌצ @  ËÀV—?d ÅÅ„[N @  ËÁW—?d @Å›‡H @  ËÂX—?d €Å»r¶ @  ËÃY—?d ÀÅŽD" @  ËÄZ—?d Å0š¾ @  ËÅ[—?d @Åö‰± @  ËÆ\—?d €ÅÖ|O @  ËÇ]—?d ÀÅè± L @  ËÈ^—?d ‘Å8ù,¤ @  ËÉ_—?d @‘Åž-’ @  ËÊ`—?d €‘žè/l @  ËËa—?d À‘Å‹Þ.ø @  ËÌb—?d ’ÅšŽ9 @  ËÍc—?d @’ÅЉ7 @  ËÎd—?d €’Åð|5æ @  ËÏe—?d À’Åc® @  ËÐf—?d “ųX"í @  ËÑg—?d @“Åí[xë @  ËÒh—?d €“ÅÍ®z @  ËÓi—?d À“Åø˜{ @  ËÔj—?d ”ÅáÖˆŽ @  ËÕk—?d @”Å'Å1¯ @  ËÖl—?d €”Å03Q @  Ë×m—?d À”Å9ý–R @  ËØn—?d •Å鵺 @  ËÙo—?d @•ÅÒæ"P @  ËÚp—?d €•Åò ® @  ËÛq—?d À•ÅÇ%!: @  ËÜr—?d –ÅZaû @  ËÝs—?d @–Åœr8Ú @  ËÞt—?d €–ż‡:$ @  Ëßu—?d À–Å>í†w @  Ëàv—?d —Åî¥ Ÿ @  Ëáw—?d @—ۦP™ @  Ëâx—?d€ €—ÅúÞ @  Ìy—?d À—ÅÂr³c @  Ìz—?d ˜Åö?~ @  Ì{—?d @˜Åõ×}² @  Ì|—?d €˜ÅÕ"L @  Ì}—?d À˜Å%]…5 @  Ì~—?d ™Åõ Ý @  Ì—?d @™ÅpÕ @  Ì€—?d €™ÅP ì @  Ì —?d À™Å _î• @  Ì ‚—?d šÅ=NT @  Ì ƒ—?d @šÅ>A ˜ @  Ì „—?d €šÅ´f @  Ì …—?d ÀšÅîËô @  Ì†—?d ›Å>ƒx÷ @  Ì‡—?d @›Å“Ck @  Ìˆ—?d €›Å#fA• @  Ì‰—?d À›ÅÓ»ì @  ÌŠ—?d œÅÊWHã @  Ì‹—?d @œÅÉ / @  ÌŒ—?d €œÅéøÑ @  Ì—?d ÀœÅ‡ò¨ @  ÌŽ—?d ÅÉÏ~@ @  Ì—?d @Å<.Ð @  Ì—?d €ÅÛ. @  Ì‘—?d ÀÅì¤áW @  Ì’—?d žÅqàA– @  Ì“—?d @žÅrºZ @  Ì”—?d €žÅRO¤ @  Ì•—?d ÀžÅ¢0ûÝ @  Ì–—?d ŸÅrxw5 @  Ì——?d @ŸÅ^nk @  Ì ˜—?d €ŸÅ~›iç @  Ì!™—uРÅ?d ÀŸÅŽä“ž @  Ì"š—?d  ÅÿïMø @  Ì#›—?d X Åüµ4 @  Ì$œ—?d ˜ ÅÜ@ Ê @  Ì%—?d Ø Å,?÷³ @  Ì&ž—?d ¡Åüw{[ @  Ì'Ÿ—?d X¡Å”!% @  Ì( —?d ˜¡Å´Ô'é @  Ì)¡—?d Ø¡ÅD«Ý @  Ì*¢—?d ¢ÅÙï}Q @  Ì+£—?d X¢ÅÚµ? @  Ì,¤—?d ˜¢Åú@=c @  Ì-¥—?d آŠ?Ç @  Ì.¦—?d £ÅÚwKò @  Ì/§—?d X£Åçgpn @  Ì0¨—?d ˜£ÅÇ’r @  Ì1©—?d Ø£Å7íˆé @  Ì2ª—?d ¤Å.£{æ @  Ì3«—?d X¤Å-ù9* @  Ì4¬—?d ˜¤Å ;Ô @  Ì5­—?d ؤÅýsÁ­ @  Ì6®—?d ¥Å-;ME @  Ì7¯—?d X¥ÅØÚ*Õ @  Ì8°—?d ˜¥Åø/(+ @  Ì9±—?d Ø¥ÅPÒR @  Ì:²—?d ¦Å•r“ @  Ì;³—?d X¦Å–N0_ @  Ì<´—?d ˜¦Å¶»2¡ @  Ì=µ—?d ئÅFÄÈØ @  Ì>¶—?d §Å–ŒD0 @  Ì?·—?d X§Å^Ž @  Ì@¸—?d ˜§Å4h\p @  ÌA¹—?d اÅĦ  @  ÌBº—?d ¨Åðè* @  ÌC»—?d X¨Åó²hØ @  ÌD¼—?d ˜¨ÅÓGj& @  ÌE½—?d بÅ#8_ @  ÌF¾—?d ©Åóp· @  ÌG¿—?d X©ÅkvWê @  ÌHÀ—?d ˜©ÅKƒU @  ÌIÁ—?d ةŻü¯m @  ÌJ—?d ªÅ&¸¬ @  ÌK×?d XªÅ%âM` @  ÌLÄ—?d ˜ªÅOž @  ÌMÅ—?d تÅõhµç @  ÌNÆ—?d «Å% 9 @  ÌOÇ—?d X«Å0“ @  ÌPÈ—?d ˜«Å8Åm @  ÌQÉ—?d Ø«ÅȺú @  ÌRÊ—?d ¬ÅÑô  @  ÌSË—?d X¬ÅÒ®K× @  ÌTÌ—?d ˜¬Åò[I) @  ÌUÍ—?d جÅ$³P @  ÌVΗ?d ­ÅÒl?¸ @  ÌWÏ—?d X­Å'X( @  ÌXЗ?d ˜­ÅxZÖ @  ÌYÑ—?d Ø­Å÷ ¯ @  ÌZÒ—?d ®ÅjCn @  Ì[Ó—?d X®ÅiB¢ @  Ì\Ô—?d ˜®ÅIì@\ @  Ì]Õ—?d خŹ“º% @  Ì^Ö—?d ¯ÅiÛ6Í @  Ì_×—?d X¯ÅEÍ*á @  Ì`Ø—?d ˜¯Åe8( @  ÌaÙ—?d دÅ•GÒf @  ÌbÚ—?d °Å+™nÔ @  ÌcÛ—?d X°Å(Ã, @  ÌdÜ—?d ˜°Å6.æ @  ÌeÝ—?d ذÅøIÔŸ @  ÌfÞ—?d ±Å(Xw @  Ìgß—?d X±Å@W; @  Ìhà—?d ˜±Å`¢Å @  Ìiá—?d رÅÝþ¼ @  Ìjâ—?d ²Å ™^} @  Ìkã—?d X²Åñ @  Ìlä—?d ˜²Å.6O @  Ìmå—?d زÅÞIä6 @  Ìnæ—?d ³ÅhÞ @  Ìoç—?d X³Å3SB @  Ìpè—?d ˜³ÅäQ¼ @  Ìqé—?d سÅ㛫Å @  Ìrê—?d ´ÅúÕXÊ @  Ìsë—?d X´Åù @  Ìtì—?d ˜´ÅÙzø @  Ìuí—?d Ø´Å)â @  Ìvî—?d µÅùMni @  Ìwï—?d XµÅ ¬ ù @  Ìxð—?d ˜µÅ,Y  @  Ìyñ—?d صÅÜ&ñ~ @  Ìzò—?d ¶ÅAbQ¿ @  Ì{ó—?d X¶ÅB8s @  Ì|ô—?d ˜¶ÅbÍ @  Ì}õ—?d ضÅ’²ëô @  Ì~ö—?d ·ÅBúg @  Ì÷—?d X·Å#½M“ @  Ì€ø—?d ˜·ÅHOm @  Ìù—?d Ø·Åó7µ @  Ì‚ú—?d ¸ÅÇÈ9  @  Ìƒû—?d X¸ÅÄ’{Å @  Ì„ü—?d ˜¸Åägy; @  Ì…ý—?d ظŃB @  Ì†þ—?d ¹ÅÄPª @  Ì‡ÿ—?d X¹ÅÛÄt† @  Ìˆ˜?d ˜¹Åû1vx @  Ì‰˜?d عÅ NŒ @  ÌŠ˜?d ºÅ– ,À @  Ì‹˜?d XºÅ•Pn  @  ÌŒ˜?d ˜ºÅµ¥lò @  Ì˜?d غÅEÚ–‹ @  ÌŽ˜?d »Å•’c @  Ì˜?d X»Å¨‚!ÿ @  Ì˜?d ˜»Åˆw# @  Ì‘ ˜?d Ø»ÅxÙx @  Ì’ ˜?d ¼ÅaF*w @  Ì“ ˜?d X¼Åbh» @  Ì” ˜?d ˜¼ÅBéjE @  Ì• ˜?d ؼŲ–< @  Ì–˜?d ½ÅbÞÔ @  Ì—˜?d X½Å—?{D @  Ì˜˜?d ˜½Å·Êyº @  Ì™˜?d ؽÅGµƒÃ @  Ìš˜?d ¾ÅÚñ# @  Ì›˜?d X¾ÅÙ«aÎ @  Ìœ˜?d ˜¾Åù^c0 @  Ì˜?d ؾÅ !™I @  Ìž˜?d ¿ÅÙi¡ @  ÌŸ˜?d X¿Åõ  @  Ì ˜?d ˜¿ÅÕŠ s @uÐÀÅ  Ì¡˜?d Ø¿ÅXu‚v @  Ì¢€˜?d 0ÀÅ<…Ó$ @  Ì£€˜?d pÀÅ?ß‘è @  Ì¤€˜?d °ÀÅ*“ @  Ì¥€˜?d ðÀÅïUio @  Ì¦€˜?d 0ÁÅ?å‡ @  Ì§€˜?d pÁÅWK»Ë @  Ì¨€ ˜?d °ÁÅw¾¹5 @  Ì©€!˜?d ðÁŇÁCL @  Ìª€"˜?d 0ÂÅ…ã @  Ì«€#˜?d pÂÅß¡A @  Ì¬€$˜?d °ÂÅ9*£¿ @  Ì­€%˜?d ðÂÅÉUYÆ @  Ì®€&˜?d 0ÃÅÕ. @  Ì¯€'˜?d pÃÅ$ î² @  Ì°€(˜?d °ÃÅøìL @  Ì±€)˜?d ðÃÅô‡5 @  Ì²€*˜?d 0ÄÅíÉå: @  Ì³€+˜?d pÄÅî“§ö @  Ì´€,˜?d °ÄÅÎf¥ @  Ìµ€-˜?d ðÄÅ>_q @  Ì¶€.˜?d 0ÅÅîQÓ™ @  Ì·€/˜?d pÅŰ´  @  Ì¸€0˜?d °ÅÅ;E¶÷ @  Ì¹€1˜?d ðÅÅË:LŽ @  Ìº€2˜?d 0ÆÅV~ìO @  Ì»€3˜?d pÆÅU$®ƒ @  Ì¼€4˜?d °ÆÅuѬ} @  Ì½€5˜?d ðÆÅ…®V @  Ì¾€6˜?d 0ÇÅUæÚì @  Ì¿€7˜?d pÇÅ×÷ÀR @  ÌÀ€8˜?d °ÇÅ÷¬ @  ÌÁ€9˜?d ðÇÅ}8Õ @  Ì€:˜?d 0ÈÅ3‚´È @  ÌÀ;˜?d pÈÅ0Øö @  ÌÄ€<˜?d °ÈÅ-ôú @  ÌÅ€=˜?d ðÈÅàRƒ @  ÌÆ€>˜?d 0ÉÅ0‚k @  ÌÇ€?˜?d pÉŨÉ6 @  ÌÈ€@˜?d °ÉňéËÈ @  ÌÉ€A˜?d ðÉÅx–1± @  ÌÊ€B˜?d 0ÊÅåÒ‘p @  ÌË€C˜?d pÊÅæˆÓ¼ @  ÌÌ€D˜?d °ÊÅÆ}ÑB @  ÌÍ€E˜?d ðÊÅ6+; @  Ì΀F˜?d 0ËÅæJ§Ó @  ÌÏ€G˜?d pËÅÛZœO @  ÌЀH˜?d °ËÅû¯ž± @  ÌÑ€I˜?d ðËÅ ÐdÈ @  ÌÒ€J˜?d 0ÌÅž—Ç @  ÌÓ€K˜?d pÌÅÄÕ  @  ÌÔ€L˜?d °ÌÅ11×õ @  ÌÕ€M˜?d ðÌÅÁN-Œ @  ÌÖ€N˜?d 0ÍÅ¡d @  Ì×€O˜?d pÍÅäçÆô @  ÌØ€P˜?d °ÍÅÄÄ  @  ÌÙ€Q˜?d ðÍÅ4m>s @  ÌÚ€R˜?d 0ÎÅ©)ž² @  ÌÛ€S˜?d pÎŪsÜ~ @  ÌÜ€T˜?d °ÎÅŠ†Þ€ @  ÌÝ€U˜?d ðÎÅzù$ù @  ÌÞ€V˜?d 0ÏŪ±¨ @  Ì߀W˜?d pÏņ§´= @  Ìà€X˜?d °ÏŦR¶Ã @  Ìá€Y˜?d ðÏÅV-Lº @  Ìâ€Z˜?d€ 0ÐÅœ0ì® @  Í€[˜?d pÐÅ~+æK @  Í€\˜?d °ÐÅ^Þäµ @  Í€]˜?d ðÐÅkèå! @  Í€^˜?d 0ÑÅ» iÉ @  Í€_˜?d pÑÅDhÿ @  Í€`˜?d °ÑÅ=±j @  Í€a˜?d ðÑÅ|Ï @  Í€b˜?d 0ÒÅž8oà @  Í €c˜?d pÒÅX+Öâ @  Í €d˜?d °ÒÅxÞÔ @  Í €e˜?d ðÒÅMèÕˆ @  Í €f˜?d 0ÓÅ Y` @  Í €g˜?d pÓÅãf @  Í€h˜?d °ÓÅãV˜ @  Í€i˜?d ðÓÅp:š{ @  Í€j˜?d 0ÔÅitit @  Í€k˜?d pÔůgÐU @  Í€l˜?d °ÔÅ’Ò« @  Í€m˜?d ðÔź¤Ó? @  Í€n˜?d 0ÕÅjì_× @  Í€o˜?d pÕÅQ¿g= @  Í€p˜?d °ÕÅqJeà @  Í€q˜?d ðÕÅO‡ÀÀ @  Í€r˜?d 0ÖÅÒÃ` @  Í€s˜?d pÖÅÐÙ  @  Í€t˜?d °ÖÅ4%ÛÞ @  Í€u˜?d ðÖÅÚJ @  Í€v˜?d 0×ÅÑ[V¢ @  Í€w˜?d p×ÅX ¤ @  Í€x˜?d °×ů­Z @  Í€y˜?d ð×Å-Dz  @  Í €z˜?d 0ØÅ8> @  Í!€{˜?d pØÅß+‡5 @  Í"€|˜?d °ØÅÿÞ…Ë @  Í#€}˜?d ðØÅÊè„_ @  Í$€~˜?d 0ÙÅ · @  Í%€˜?d pÙÅQÒH @  Í&€€˜?d °ÙÅq'Jü @  Í'€˜?d ðÙÅOêïÿ @  Í(€‚˜?d 0ÚÅÒ®O> @  Í)€ƒ˜?d pÚŽö @  Í*€„˜?d °ÚÅ4Hôá @  Í+€…˜?d ðÚÅ~õu @  Í,€†˜?d 0ÛÅÑ6y @  Í-€‡˜?d pÛÅ5#› @  Í.€ˆ˜?d °ÛůÀ!e @  Í/€‰˜?d ðÛÅ<¬º† @  Í0€Š˜?d 0ÜÅ%âI‰ @  Í1€‹˜?d pÜÅãñð¨ @  Í2€Œ˜?d °ÜÅÃòV @  Í3€˜?d ðÜÅö2ó @  Í4€Ž˜?d 0ÝÅ&z* @  Í5€˜?d pÝÅ)GÀ @  Í6€˜?d °ÝÅ=ÜE> @  Í7€‘˜?d ðÝÅà= @  Í8€’˜?d 0ÞÅžU@ü @  Í9€“˜?d pÞÅXFùÝ @  Í:€”˜?d °ÞÅx³û# @  Í;€•˜?d ðÞÅM…ú· @  Í<€–˜?d 0ßÅÍv_ @  Í=€—˜?d pßÅÃÎ,Y @  Í>€˜˜?d uÐàÅ/°ßÅã;.§ @  Í?€™˜?d ðßŲÖç @  Í@š˜?d HàÅ«r¹ì @  ÍA›˜?d ˆàÅÏí @  ÍBœ˜?d ÈàÅM”3 @  ÍC˜?d áÅ*{˜‘ @  ÍDž˜?d HáŨêO @  ÍEŸ˜?d ˆáŬj›Y @  ÍF ˜?d ÈáÅ.ûŒ‡ @  ÍG¡˜?d âÅãž› @  ÍH¢˜?d HâÅr‰E @  ÍI£˜?d ˆâÅé%D @  ÍJ¤˜?d ÈâÅk”2š @  ÍK¥˜?d ãÅ {¨8 @  ÍL¦˜?d HãÅŽê¿æ @  ÍM§˜?d ˆãÅrðÀ @  ÍN¨˜?d ÈãÅðç @  ÍO©˜?d äÅø¯˜, @  ÍPª˜?d HäÅz>ò @  ÍQ«˜?d ˆäÅI#ó @  ÍR¬˜?d ÈäÅœØ4- @  ÍS­˜?d åÅû7® @  ÍT®˜?d HåÅy¦¹Q @  ÍU¯˜?d ˆåÅà‘”› @  ÍV°˜?d ÈåÅbƒE @  ÍW±˜?d æÅC‘Y @  ÍX²˜?d HæÅÁ‰†‡ @  ÍY³˜?d ˆæÅ¥þ*† @  ÍZ´˜?d ÈæÅ'o=X @  Í[µ˜?d çÅ@€§ú @  Í\¶˜?d HçŰ$ @  Í]·˜?d ˆçÅ>vÿ @  Í^¸˜?d ÈçżçèÜ @  Í_¹˜?d èňãÏL @  Í`º˜?d HèÅ rØ’ @  Ía»˜?d ˆèÅnt“ @  Íb¼˜?d ÈèÅì”cM @  Íc½˜?d éÅ‹{ùï @  Íd¾˜?d HéÅ êî1 @  Íe¿˜?d ˆéÅý:ï6 @  ÍfÀ˜?d ÈéÅ«øè @  ÍgÁ˜?d êÅ^³êô @  Íh˜?d HêÅÜ"ý* @  ÍiØ?d ˆêŸUQ+ @  ÍjĘ?d ÈêÅ:ÄFõ @  ÍkŘ?d ëÅ]+ÜW @  ÍlƘ?d HëÅߺˉ @  Ímǘ?d ˆëÅ#Ý„¯ @  ÍnȘ?d ÈëÅ¡L“q @  Íoɘ?d ìÅ©ÿìC @  Ípʘ?d HìÅ+nû @  Íq˘?d ˆìÅOWœ @  Ír̘?d ÈìÅ͈@B @  Ís͘?d íŪgÚà @  ÍtΘ?d HíÅ(öÍ> @  ÍuϘ?d ˆíűÁàô @  ÍvИ?d ÈíÅ3P÷* @  Íwј?d îÅHå6 @  ÍxÒ˜?d HîÅÙòè @  ÍyÓ˜?d ˆîÅô®^é @  ÍzÔ˜?d ÈîÅv?I7 @  Í{Õ˜?d ïÅÐÓ• @  Í|Ö˜?d HïÅ“AÄK @  Í}ט?d ˆïÅo&‹m @  Í~ؘ?d ÈïÅí·œ³ @  ÍÙ˜?d ðÅý/ @  Í€Ú˜?d HðÅœRªñ @  ÍÛ˜?d ˆðÅø%ð @  Í‚ܘ?d ÈðÅz´. @  Íƒݘ?d ñÅ[‹Œ @  Í„Þ˜?d HñÅŸÊœR @  Í…ߘ?d ˆñÅ›JˆD @  Í†à˜?d ÈñÅÛŸš @  Í‡á˜?d òÅ8Æ @  Íˆâ˜?d HòźRšX @  Í‰ã˜?d ˆòÅÞ%6Y @  ÍŠä˜?d ÈòÅ\´!‡ @  Í‹å˜?d óÅ;[»% @  ÍŒæ˜?d HóŹʬû @  Íç˜?d ˆóÅE­ãÝ @  ÍŽè˜?d ÈóÅÇ<ô @  Íé˜?d ôÅÏ‹1 @  Íê˜?d HôÅMœï @  Í‘ë˜?d ˆôÅ)i0î @  Í’ì˜?d ÈôÅ«ø'0 @  Í“í˜?d õÅ̽’ @  Í”î˜?d HõÅN†ªL @  Í•ï˜?d ˆõÅ×±‡† @  Í–ð˜?d ÈõÅU X @  Í—ñ˜?d öÅt8‚D @  Í˜ò˜?d HöÅö©•š @  Í™ó˜?d ˆöÅ’Þ9› @  Íšô˜?d ÈöÅO.E @  Í›õ˜?d ÷Åw ´ç @  Íœö˜?d H÷Åõ1£9 @  Í÷˜?d ˆ÷Å Vì @  Ížø˜?d È÷Å‹ÇûÁ @  ÍŸù˜?d øÅ¿ÃÜQ @  Í ú˜?d HøÅ=RË @  Í¡û˜?d ˆøÅY%gŽ @  Í¢ü˜?d ÈøÅÛ´pP @  Í£ý˜?d ùż[êò @  Í¤þ˜?d HùÅ>Êý, @  Í¥ÿ˜?d ˆùŨ»ýµ @  Í¦™?d ÈùÅ**êk @  Í§™?d úÅ 2øw @  Í¨™?d Húʼn£ï© @  Í©™?d ˆúÅíÔC¨ @  Íª™?d ÈúÅoETv @  Í«™?d ûŪÎÔ @  Í¬™?d HûÅŠ;Ù  @  Í­™?d ˆûÅv\–, @  Í®™?d ÈûÅôÍò @  Í¯ ™?d üÅü~þÀ @  Í° ™?d HüÅ~ïé @  Í± ™?d ˆüŘE @  Í² ™?d ÈüŘ RÁ @  Í³ ™?d ýÅÿæÈc @  Í´™?d HýÅ}wß½ @  Íµ™?d ˆýÅä@òw @  Í¶™?d ÈýÅfÑå© @  Í·™?d þÅGÉ÷µ @  Í¸™?d HþÅÅXàk @  Í¹™?d ˆþÅ¡/Lj @  Íº™?d ÈþÅ#¾[´ @  Í»™?d ÿÅDQÁ @  Í¼™?d HÿÅÆÀÖÈ @  Í½™?d ˆÿÅ:§™î @  Í¾uÐÆ™?d ÈÿÅñRå @  Í¿ ™?d Æ+ü·í @  ÍÀ ™?d `Æ©m 3 @  ÍÁ ™?d  ÆÍ 2 @  Í ™?d àÆO‹ì @  Íà ™?d Æ(dN @  ÍÄ ™?d `ƪõ– @  ÍÅ ™?d  Æ®u‚† @  ÍÆ  ™?d àÆ,ä•X @  ÍÇ !™?d Æ ü‡D @  ÍÈ "™?d `Æmš @  ÍÉ #™?d  Æë<› @  ÍÊ $™?d àÆi‹+E @  ÍË %™?d Æd±ç @  ÍÌ &™?d `ÆŒõ¦9 @  ÍÍ '™?d  Æp’é @  ÍÎ (™?d àÆòþÁ @  ÍÏ )™?d Æú°ó @  ÍÐ *™?d `Æx!–- @  ÍÑ +™?d  ÆV:, @  ÍÒ ,™?d àÆžÇ-ò @  ÍÓ -™?d Æù(·P @  ÍÔ .™?d `Æ{¹ Ž @  ÍÕ /™?d  ÆâŽD @  ÍÖ 0™?d àÆ`šš @  Í× 1™?d ÆAˆ† @  ÍØ 2™?d `ÆÖŸX @  ÍÙ 3™?d  Æ§á3Y @  ÍÚ 4™?d àÆ%p$‡ @  ÍÛ 5™?d ÆBŸ¾% @  ÍÜ 6™?d `ÆÀ©û @  ÍÝ 7™?d  Æ™?d ` Æ+óHÇ @  Î ?™?d   Æj²- @  Î @™?d à Æ˜û¥ó @  Î A™?d ÆwQè• @  Î B™?d ` ÆõÀÿK @  Î C™?d   Æ_ 0 @  Î D™?d à ÆÝ”î @  Î E™?d Æ2z¡ @  Î F™?d ` Æý£m @  Î G™?d   ÆÄÙ´ @  Î H™?d à ÆFÎj @  Î I™?d Æ-¼Ð @  Î J™?d ` Ư-Ç @  Î K™?d   ƨI ‡ @  Î L™?d à Æ*ØY @  Î M™?d ƈ~| @  Î N™?d ` Æ ïkÈ @  Î O™?d   ÆV‘½ï @  Î P™?d à ÆÔª1 @  Î Q™?d Æ;ªçW @  Î R™?d `ƹ;ð‰ @  Î S™?d  Æþò @  Î T™?d àÆ‘o, @  Î U™?d Æ3Éuc @  Î V™?d `ƱXb½ @  Î W™?d  ÆˆvÖv @  Î X™?d àÆ çÁ¨ @  Î Y™?d ÆÆ×½ @  Î Z™?d `ÆDF‡c @  Î [™?d  ÆR$mH @  Î \™?d àÆеz– @  Î! ]™?d ÆrÙ @  Î" ^™?d `Æð‚  @  Î# _™?d  Æ1Kãü @  Î$ `™?d àÆ³Úô" @  Î% a™?d Æ\p¹D @  Î& b™?d `ÆÞᮚ @  Î' c™?d  Æt$]á @  Î( d™?d àÆöµJ? @  Î) e™?d ÆT+p @  Î* f™?d `ÆÖ‚<® @  Î+ g™?d  Æ﬈e @  Î, h™?d àÆm=Ÿ» @  Î- i™?d Æ @  Î. j™?d `Æ„ –Í @  Î/ k™?d  Æƒh[V @  Î0 l™?d àÆùLˆ @  Î1 m™?d Æ£_-Ç @  Î2 n™?d `Æ!Î: @  Î3 o™?d  Æ}°ì> @  Î4 p™?d àÆÿ!ûà @  Î5 q™?d Æ‹¶† @  Î6 r™?d `Æ’¡X @  Î7 s™?d  Æ8ßR# @  Î8 t™?d àÆºNEý @  Î9 u™?d Æè$² @  Î: v™?d `Æšy3l @  Î; w™?d  Æ£W‡§ @  Î< x™?d àÆ!Æy @  Î= y™?d Æg×ñà @  Î> z™?d `ÆåFæ @  Î? {™?d  Æ]# ¤ @  Î@ |™?d àÆß²z @  ÎA }™?d Æ}|5 @  ÎB ~™?d `Æÿ…kë @  ÎC ™?d  ÆÓÚÅ“ @  ÎD €™?d àÆQKÒM @  ÎE ™?d ƾáŸ+ @  ÎF ‚™?d `Æ @  Îj ¦™?d x#ÆÐç)Ä @  Îk §™?d ¸#ÆéÉ @  Îl ¨™?d ø#ÆkXŠÑ @  Îm ©™?d 8$Æø”y @  În ª™?d x$Æ‚iƒ§ @  Îo «™?d ¸$Æ… N< @  Îp ¬™?d ø$ÆœYâ @  Îq ­™?d 8%Æ¥:8­ @  Îr ®™?d x%Æ'«/s @  Îs ¯™?d ¸%Æ{ÕùT @  Ît °™?d ø%ÆùDîŠ @  Îu ±™?d 8&Æî£ì @  Îv ²™?d x&Æ”´2 @  Îw ³™?d ¸&Æ>ºGI @  Îx ´™?d ø&Ƽ+P— @  Îy µ™?d 8'Æ1Ø @  Îz ¶™?d x'Æœ& @  Î{ ·™?d ¸'Æ¥2’Í @  Î| ¸™?d ø'Æ'£… @  Î} ¹™?d 8(Æa²ä© @  Î~ º™?d x(Æã#ów @  Î »™?d ¸(Ƹ/ÿ @  Î€ ¼™?d ø(Æ:8! @  Î ½™?d 8)Ƙ'Yn @  Î‚ ¾™?d x)ƶN° @  Îƒ ¿™?d ¸)Æ+/´Z @  Î„ À™?d ø)Æ©¾£„ @  Î… Á™?d 8*ÆFîâ @  Î† ™?d x*ÆÄ…ù< @  Î‡ Ù?d ¸*Æn@ G @  Îˆ Ä™?d ø*ÆìÑ™ @  Î‰ Å™?d 8+ÆNw|Ö @  ÎŠ Æ™?d x+ÆÌæk @  Î‹ Ç™?d ¸+ÆõÈßà @  ÎŒ È™?d ø+ÆwYÈ @  Î É™?d 8,ÆùÖµ @  ÎŽ Ê™?d x,ÆžhÁk @  Î Ë™?d ¸,Æ™ ð @  Î Ì™?d ø,Æ. @  Î‘ Í™?d 8-ƹ;za @  Î’ Ι?d x-Æ;ªm¿ @  Î“ Ï™?d ¸-ÆgÔ»˜ @  Î” Й?d ø-ÆåE¬F @  Î• Ñ™?d 8.Æ ïá  @  Î– Ò™?d x.ƈ~öþ @  Î— Ó™?d ¸.Æ"»… @  Î˜ Ô™?d ø.Æ *[ @  Î™ Õ™?d 8/ÆŒs @  Îš Ö™?d x/Æ€dÊ @  Î› ×™?d ¸/ƹ3Ð @  Îœ Ø™?d ø/Æ;¢Çß @  Î Ù™?d 80Æ÷’–Ê @  Îž Ú™?d x0Æu @  ÎŸ Û™?d ¸0Æcak? @  Î  Ü™?d ø0Æáð|á @  Î¡ Ý™?d 81ÆCV® @  Î¢ Þ™?d x1ÆÁÇ p @  Î£ ß™?d ¸1Æå‹ @  Î¤ à™?d ø1Æ‚ŸòU @  Î¥ á™?d 82Æm5¿3 @  Î¦ â™?d x2Æ廊í @  Î§ ã™?d ¸2ÆEa[– @  Î¨ ä™?d ø2ÆÇðLH @  Î© å™?d 83ÆeV- @  Îª æ™?d x3ÆçÇ:Ù @  Î« ç™?d ¸3ÆÞéŽ @  Î¬ è™?d ø3Æ\x™Ì @  Î­ é™?d 84Æ7؇d @  Î® ê™?d x4ƵIº @  Î¯ ë™?d ¸4Ʋ-]! @  Î° ì™?d ø4Æ0¼Jÿ @  Î± í™?d 85Æ’+° @  Î² î™?d x5Æ‹Æö· @  ÎÖ š?d x>ÆŒ‹ái @  Î× š?d ¸>Æ&N @  ÎØ š?d ø>ƤßÌ @  ÎÙ š?d 8?Æydƒ @  ÎÚ š?d x?Æ„ès] @  ÎÛ š?duÐ@Æ7 ¸?ÆF¨ü– @  ÎÜš?d ø?Æ  @  ÎÝš?d P@Æ·Ò[ @  ÎÞš?d @Æ—'Yø @  Îßš?d Ð@Æ#!¦ó @  Îàš?d AÆói* @  Îáš?d PAÆÐb @  Îâš?d€ AÆW Î: @  Ïš?d ÐAÆÕÌ|È @  Ï š?d BÆHˆÜ  @  Ï!š?d PBÆ}¾Ý @  Ï"š?d BÆ]Kßc @  Ï#š?d ÐBÆ›XfB @  Ï$š?d CÆKêª @  Ï%š?d PCÆuÝO© @  Ï&š?d CÆU(MW @  Ï 'š?d ÐCÆ +Q @  Ï (š?d DÆeä^ @  Ï )š?d PDÆ'SåÊ @  Ï *š?d DƦç4 @  Ï +š?d ÐDÆÁµ^ @  Ï,š?d EÆýÒý @  Ï-š?d PEÆ‚‘I @  Ï.š?d EÆ¢dKà @  Ï/š?d ÐEÆ™7s  @  Ï0š?d FÆsÓË @  Ï1š?d PFÆ1EÒ_ @  Ï2š?d FưС @  Ï3š?d ÐFÆ×£i€ @  Ï4š?d GÆëåh @  Ï5š?d PGÆ9&@k @  Ï6š?d GÆÓB• @  Ï7š?d ÐGÆGГ @  Ï8š?d HÆs/”Ž @  Ï9š?d PHÆF• @  Ï:š?d HÆfì—ä @  Ï;š?d ÐHÆ ÿ.Å @  Ï<š?d IÆp·¢- @  Ï=š?d PIÆòÝ~ @  Ï >š?d IÆÒ(€ @  Ï!?š?d ÐIÆ„œ§ @  Ï"@š?d JÆبf @  Ï#Aš?d PJÆ,î©ò @  Ï$Bš?d JÆ «  @  Ï%Cš?d ÐJÆÊ- @  Ï&Dš?d KÆ@žÅ @  Ï'Eš?d PKÆ$;Æ @  Ï(Fš?d KÆx98 @  Ï)Gš?d ÐKÆZ{c> @  Ï*Hš?d LÆC51 @  Ï+Iš?d PLÆv‘¥ @  Ï,Jš?d LÆVö“[ @  Ï-Kš?d ÐLÆå*z @  Ï.Lš?d MÆ@­¦’ @  Ï/Mš?d PMÆÓÁ=q @  Ï0Nš?d MÆó4? @  Ï1Oš?d ÐMÆÈge @  Ï2Pš?d NÆU#§¤ @  Ï3Qš?d PNÆ`¦0 @  Ï4Rš?d NÆ@à¤Î @  Ï5Sš?d ÐNƆóï @  Ï6Tš?d OÆV»‘ @  Ï7Uš?d POÆhv4 @  Ï8Vš?d OÆHƒ6ú @  Ï9Wš?d ÐOÆ€lü @  Ï:Xš?d Pƨ^ÐN @  Ï;Yš?d PPÆhÑÚ @  Ï<Zš?d PƽÓ$ @  Ï=[š?d ÐPÆ{Žj @  Ï>\š?d QÆ«Ææí @  Ï?]š?d PQƇ«\, @  Ï@^š?d QƧ^^Ò @  ÏA_š?d ÐQƺ_ä @  ÏB`š?d RÆœþÿ% @  ÏCaš?d PRÆ©Èþ± @  ÏDbš?d RƉ=üO @  ÏEcš?d ÐRÆO.En @  ÏFdš?d SÆŸfɆ @  ÏGeš?d PSÆ¡«l… @  ÏHfš?d SÆ^n{ @  ÏIgš?d ÐSÆß]4} @  ÏJhš?d TÆÆÇr @  ÏKiš?d PTÆó%Ææ @  ÏLjš?d TÆÓÐÄ @  ÏMkš?d ÐTÆÃ}9 @  ÏNlš?d UÆÅ‹ñÑ @  ÏOmš?d PUÆVçj2 @  ÏPnš?d UÆvhÌ @  ÏQoš?d ÐUÆMAP& @  ÏRpš?d VÆÐðç @  ÏSqš?d PVÆå3ñs @  ÏTrš?d VÆÅÆó @  ÏUsš?d ÐVÆÕJ¬ @  ÏVtš?d WÆÓÆD @  ÏWuš?d PWÆíPcG @  ÏXvš?d WÆÍ¥a¹ @  ÏYwš?d ÐWÆ“¦;¿ @  ÏZxš?d XƧY·¢ @  Ï[yš?d PXÆ’o¶6 @  Ï\zš?d XƲš´È @  Ï]{š?d ÐXÆt‰ é @  Ï^|š?d YƤÁ @  Ï_}š?d PYÆ&«=R @  Ï`~š?d YÆ^?¬ @  Ïaš?d ÐYÆM, @  Ïb€š?d ZÆÐhߨ @  Ïcš?d PZÆå^ÞL @  Ïd‚š?d ZÆūܲ @  Ïeƒš?d ÐZƸe“ @  Ïf„š?d [ÆÓðé{ @  Ïg…š?d P[Æí=Lx @  Ïh†š?d [ÆÍÈN† @  Ïi‡š?d Ð[Ɠˀ @  Ïjˆš?d \ÆŠ…ç @  Ïk‰š?d P\Æ¿³æ @  ÏlŠš?d \ÆŸFäå @  Ïm‹š?d Ð\ÆYU]Ä @  ÏnŒš?d ]ƉÑ, @  Ïoš?d P]ÆqJÏ @  ÏpŽš?d ]Æ:„H1 @  Ïqš?d Ð]Æ×pÛ @  Ïrš?d ^Æœ“Ð @  Ïs‘š?d P^Æ©¥ÑŽ @  Ït’š?d ^ƉPÓp @  Ïu“š?d Ð^ÆOCjQ @  Ïv”š?d _ÆŸ æ¹ @  Ïw•š?d P_Æ¡ÆCº @  Ïx–š?d _Æ3AD @  ÏuÐ`Æy—š?d Ð_Æß0B @  Ïz˜š?d (`ÆaÈ®Ú @  Ï{™š?d h`ÆTþ¯N @  Ï|šš?d ¨`Æt ­° @  Ï}›š?d è`Ʋ‘ @  Ï~œš?d (aÆbP˜y @  Ïš?d haÆ­k‰ @  Ï€žš?d ¨aÆžw @  ÏŸš?d èaÆ+zA @  Ï‚ š?d (bƶ>±€ @  Ïƒ¡š?d hbƃ° @  Ï„¢š?d ¨bÆ£ý²ê @  Ï…£š?d èbÆeî Ë @  Ï†¤š?d (cƵ¦‡# @  Ï‡¥š?d hcÆ‹k"  @  Ïˆ¦š?d ¨cÆ«ž Þ @  Ï‰§š?d ècÆõzØ @  ÏЍš?d (dÆìÓ‰× @  Ï‹©š?d hdÆÙåˆC @  ÏŒªš?d ¨dÆùн @  Ï«š?d èdÆ?3œ @  Ïެš?d (eÆïK¿t @  Ï­š?d heÆ|'$— @  Ï®š?d ¨eÆ\Ò&i @  Ï‘¯š?d èeÆgƒ @  Ï’°š?d (fÆúžB @  Ï“±š?d hfÆÏó¿Ö @  Ï”²š?d ¨fÆï½( @  Ï•³š?d èfÆ)  @  Ï–´š?d (gÆù]ˆá @  Ï—µš?d hgÆÇ-â @  Ï˜¶š?d ¨gÆçe/ @  Ï™·š?d ègƹfu @  Ïš¸š?d (hÆ™ù @  Ï›¹š?d hhƸ¯ø“ @  Ïœºš?d ¨hƘZúm @  Ï»š?d èhÆ^ICL @  Ïž¼š?d (iÆŽϤ @  ÏŸ½š?d hiÆ ks÷ @  Ï ¾š?d ¨iÆ,žq  @  Ï¡¿š?d èiÆz*e. @  Ï¢Àš?d (jÆçnÅï @  Ï£Áš?d hjÆÒXÄ{ @  Ï¤š?d ¨jÆò­Æ… @  Ï¥Ú?d èjÆ4¾¤ @  Ï¦Äš?d (kÆäöóL @  Ï§Åš?d hkÆÚ;VO @  Ï¨Æš?d ¨kÆúÎT± @  Ï©Çš?d èkƤͷ @  ÏªÈš?d (lƽƒý¸ @  Ï«Éš?d hlƈµü, @  Ï¬Êš?d ¨lƨ@þÒ @  Ï­Ëš?d èlÆnSGó @  Ï®Ìš?d (mÆ¾Ë @  Ï¯Íš?d hmÆ-wPø @  Ï°Κ?d ¨mÆ ‚R @  Ï±Ïš?d èmÆ6Ñjì @  Ï²К?d (nÆ«•Ê- @  Ï³Ñš?d hnÆž£Ë¹ @  Ï´Òš?d ¨nƾVÉG @  ÏµÓš?d ènÆxEpf @  Ï¶Ôš?d (oƨ üŽ @  Ï·Õš?d hoÆ–ÀY @  Ï¸Öš?d ¨oƶ5[s @  Ï¹ך?d èoÆè6u @  ÏºØš?d (pÆVè½Ç @  Ï»Ùš?d hpÆcÞ¼S @  Ï¼Úš?d ¨pÆC+¾­ @  Ï½Ûš?d èpÆ…8Œ @  Ï¾Üš?d (qÆUp‹d @  Ï¿Ýš?d hqÆy1¥ @  ÏÀÞš?d ¨qÆYè3[ @  ÏÁßš?d èqÆÿ 2m @  ÏÂàš?d (rÆbH’¬ @  ÏÃáš?d hrÆW~“8 @  ÏÄâš?d ¨rÆw‹‘Æ @  ÏÅãš?d èrƱ˜(ç @  ÏÆäš?d (sÆaФ @  ÏÇåš?d hsÆ_  @  ÏÈæš?d ¨sÆèò @  ÏÉçš?d èsÆ!ëYô @  ÏÊèš?d (tÆ8¥ªû @  ÏËéš?d htÆ “«o @  ÏÌêš?d ¨tÆ-f©‘ @  ÏÍëš?d ètÆëu° @  ÏÎìš?d (uÆ;=œX @  ÏÏíš?d huƨQ» @  ÏÐîš?d ¨uƈ¤E @  ÏÑïš?d èuƳ÷=¯ @  ÏÒðš?d (vÆ.³n @  ÏÓñš?d hvÆ…œú @  ÏÔòš?d ¨vÆ;pž @  ÏÕóš?d èvÆýc'% @  ÏÖôš?d (wÆ-+«Í @  Ï×õš?d hwÆæÎ @  ÏØöš?d ¨wÆ3 0 @  ÏÙ÷š?d èwÆmV6 @  ÏÚøš?d (xÆYïÚ+ @  ÏÛùš?d hxÆlÙÛ¿ @  ÏÜúš?d ¨xÆL,ÙA @  ÏÝûš?d èxÆŠ?`` @  ÏÞüš?d (yÆZwìˆ @  Ïßýš?d hyÆØPÛ @  Ïàþš?d ¨yÆøèR% @  Ïáÿš?d èyÆÌýGœ @  Ïâ›?d€ (zÆ:å ³ @  Ð›?d hzÆî’B @  Ð›?d ¨zÆÎg@ð @  Ð›?d èzÆÍ=< @  Ð›?d ({ÆuŽÔ @  Ð›?d h{Æí t­ @  Ð›?d ¨{ÆÍÿvS @  Ð›?d è{Æ]Ns/ @  Ð›?d (|ÆD€  @  Ð  ›?d h|Æ´zY @  Ð  ›?d ¨|Æ”Šx§ @  Ð  ›?d è|Æ—Ð:k @  Ð  ›?d (}ÆG˜¶ƒ @  Ð  ›?d h}Æ·çLú @  Ð›?d ¨}Æ—N @  Ð›?d è}ÆÏRt @  Ð›?d (~ÆR·µ @  Ð›?d h~Æ¢iMÌ @  Ð›?d ¨~Æ‚œO2 @  Ð›?d è~ÆÆ þ @  Ð›?d (ÆQŽ @  Ð›?d hÆ¡ñ{o @  Ð›?d ¨ÆuЀÆ'y‘ @  Ð›?d èÆµ|í @  Ð›?d @€Æ ž™ @  Ð›?d €€Æ-qÀ @  Ð›?d À€Æ¯f @  Ð›?d Æþ¿ä @  Ð›?d @Æ|“¨: @  Ð›?d €Æ.ˆGc @  Ð›?d ÀƬP½ @  Ð›?d ‚Æg= ¾ @  Ð  ›?d @‚Æ嬷` @  Ð!!›?d €‚Æ··X9 @  Ð""›?d À‚Æ5&Oç @  Ð##›?d ƒÆd¥– @  Ð$$›?d @ƒÆæ4à @  Ð%%›?d €ƒÆ´/nš @  Ð&&›?d ÀƒÆ6¾yD @  Ð''›?d „Æ=Иé @  Ð((›?d @„Æ¿A7 @  Ð))›?d €„ÆíZ`n @  Ð**›?d À„ÆoËw° @  Ð++›?d …Æ>H®J @  Ð,,›?d @…Ƽٹ” @  Ð--›?d €…ÆîÂVÍ @  Ð..›?d À…ÆlSA @  Ð//›?d †Æ+Ư| @  Ð00›?d @†Æ©W¸¢ @  Ð11›?d €†ÆûLWû @  Ð22›?d À†ÆyÝ@% @  Ð33›?d ‡Æ(^™ß @  Ð44›?d @‡ÆªÏŽ @  Ð55›?d €‡ÆøÔaX @  Ð66›?d À‡ÆzEv† @  Ð77›?d ˆÆ\šè9 @  Ð88›?d @ˆÆÞ ÿç @  Ð99›?d €ˆÆŒ¾ @  Ð::›?d ÀˆÆ` @  Ð;;›?d ‰Æ_Þš @  Ð<<›?d @‰ÆÝ“ÉD @  Ð==›?d €‰Æˆ& @  Ð>>›?d À‰Æ 1à @  Ð??›?d ŠÆ˜jÒC @  Ð@@›?d @ŠÆûÅ @  ÐAA›?d €ŠÆHà*Ä @  ÐBB›?d ÀŠÆÊq= @  ÐCC›?d ‹Æ›òäà @  ÐDD›?d @‹Æcó> @  ÐEE›?d €‹ÆKxg @  ÐFF›?d À‹ÆÉé ¹ @  ÐGG›?d ŒÆ‡ê @  ÐHH›?d @ŒÆ@ýÊ @  ÐII›?d €ŒÆ “ @  ÐJJ›?d ÀŒÆœM @  ÐKK›?d ÆÁÜ· @  ÐLL›?d @ÆCŽËi @  ÐMM›?d €Æ•$0 @  ÐNN›?d ÀÆ“3î @  ÐOO›?d ŽÆÔ‘Ý @  ÐPP›?d @ŽÆVÊ_ @  ÐQQ›?d €ŽÆ% @  ÐRR›?d ÀŽÆ†Š2Ø @  ÐSS›?d Æ× ë" @  ÐTT›?d @ÆU˜üü @  ÐUU›?d €Æƒ¥ @  ÐVV›?d ÀÆ…{ @  ÐWW›?d Æ)ìªk @  ÐXX›?d @Æ«}½µ @  ÐYY›?d €ÆùfRì @  ÐZZ›?d ÀÆ{÷E2 @  Ð[[›?d ‘Æ*tœÈ @  Ð\\›?d @‘Æ¨å‹ @  Ð]]›?d €‘ÆúþdO @  Ð^^›?d À‘Æxos‘ @  Ð__›?d ’ƳKƒ’ @  Ð``›?d @’Æ1Ú”L @  Ðaa›?d €’ÆcÁ{ @  Ðbb›?d À’ÆáPlË @  Ðcc›?d “ưӵ1 @  Ðdd›?d @“Æ2B¢ï @  Ðee›?d €“Æ`YM¶ @  Ðff›?d À“ÆâÈZh @  Ðgg›?d ”Æ馻Å @  Ðhh›?d @”Æk7¬ @  Ðii›?d €”Æ9,CB @  Ðjj›?d À”Æ»½Tœ @  Ðkk›?d •Æê>f @  Ðll›?d @•Æh¯š¸ @  Ðmm›?d €•Æ:´uá @  Ðnn›?d À•Ƹ%b? @  Ðoo›?d –Æÿ°ŒP @  Ðpp›?d @–Æ}!›Ž @  Ðqq›?d €–Æ/:t× @  Ðrr›?d À–Æ­«c  @  Ðss›?d —Æü(ºó @  Ðtt›?d @—Æ~¹­- @  Ðuu›?d €—Æ,¢Bt @  Ðvv›?d À—Æ®3Uª @  Ðww›?d ˜ÆˆìË @  Ðxx›?d @˜Æ }ÜË @  Ðyy›?d €˜ÆXf3’ @  Ðzz›?d À˜ÆÚ÷$L @  Ð{{›?d ™Æ‹tý¶ @  Ð||›?d @™Æ åêh @  Ð}}›?d €™Æ[þ1 @  Ð~~›?d À™ÆÙoï @  Ð›?d šÆ²Œ•Ì @  Ð€€›?d @šÆ0‚ @  Ð›?d €šÆbmK @  Ð‚‚›?d ÀšÆà—z• @  Ðƒƒ›?d ›Æ±£o @  Ð„„›?d @›Æ3…´± @  Ð……›?d €›Æaž[è @  Ð††›?d À›ÆãL6 @  Ð‡‡›?d œÆèa­› @  Ðˆˆ›?d @œÆjðºE @  Ð‰‰›?d €œÆ8ëU @  ÐŠŠ›?d ÀœÆºzB @  Ð‹‹›?d Æëù›8 @  ÐŒŒ›?d @ÆihŒæ @  Ð›?d €Æ;sc¿ @  ÐŽŽ›?d Àƹâta @  Ð›?d žÆþwš @  Ð›?d @žÆ|æÐ @  Ð‘‘›?d €žÆ.ýb‰ @  Ð’’›?d ÀžÆ¬luW @  Ð““›?d ŸÆýשּׂ @  Ð””›?d @ŸÆ~»s @  Ð••›?d €ŸÆ-eT* @  Ð––›uРÆ?d ÀŸÆ¯ôCô @  Ð——›?d  ÆÌß0 @  Ð˜˜›?d X ÆNN˜î @  Ð™™›?d ˜ ÆUw· @  Ðšš›?d Ø ÆžÄ`i @  Ð›››?d ¡ÆÏG¹“ @  Ðœœ›?d X¡ÆMÖ®M @  Ð›?d ˜¡ÆÍA @  Ðžž›?d Ø¡Æ\VÊ @  ÐŸŸ›?d ¢ÆVx¦É @  Ð  ›?d X¢ÆÔé± @  Ð¡¡›?d ˜¢Æ†ò^N @  Ð¢¢›?d Ø¢ÆcI @  Ð££›?d £ÆUàj @  Ð¤¤›?d X£Æ×q‡´ @  Ð¥¥›?d ˜£Æ…jhí @  Ð¦¦›?d Ø£Æû3 @  Ð§§›?d ¤Æ •žž @  Ð¨¨›?d X¤ÆŽ‰@ @  Ð©©›?d ˜¤ÆÜf @  Ðªª›?d ؤÆ^ŽqÇ @  Ð««›?d ¥Æ ¨= @  Ð¬¬›?d X¥Æœ¿ã @  Ð­­›?d ˜¥Æ߇Pº @  Ð®®›?d Ø¥Æ]Gd @  Ð¯¯›?d ¦Æƒ©  @  Ð°°›?d X¦Æ˜¾Õ @  Ð±±›?d ˜¦ÆÊ QŒ @  Ð²²›?d ئÆH˜FR @  Ð³³›?d §ÆŸ¨ @  Ð´´›?d X§Æ›Šˆv @  Ðµµ›?d ˜§ÆÉ‘g/ @  Ð¶¶›?d اÆKpñ @  Ð··›?d ¨ÆmßîN @  Ð¸¸›?d X¨ÆïNù @  Ð¹¹›?d ˜¨Æ½UÉ @  Ðºº›?d بÆ?Ä @  Ð»»›?d ©ÆnGØí @  Ð¼¼›?d X©ÆìÖÏ3 @  Ð½½›?d ˜©Æ¾Í j @  Ð¾¾›?d Ø©Æ<\7´ @  Ð¿¿›?d ªÆ©/Ô4 @  ÐÀÀ›?d XªÆ+¾Ãê @  ÐÁÁ›?d ˜ªÆy¥,³ @  Ð›?d تÆû4;m @  ÐÃÛ?d «Æª·â— @  ÐÄÄ›?d X«Æ(&õI @  ÐÅÅ›?d ˜«Æz= @  ÐÆÆ›?d Ø«Æø¬ Î @  ÐÇÇ›?d ¬ÆóÂìc @  ÐÈÈ›?d X¬ÆqSû½ @  ÐÉÉ›?d ˜¬Æ#Hä @  ÐÊÊ›?d جÆ¡Ù: @  ÐËË›?d ­ÆðZÚÀ @  ÐÌÌ›?d X­ÆrËÍ @  ÐÍÍ›?d ˜­Æ Ð"G @  ÐÎΛ?d Ø­Æ¢A5™ @  ÐÏÏ›?d ®ÆåÔÛö @  ÐÐЛ?d X®ÆgEÌ( @  ÐÑÑ›?d ˜®Æ5^#q @  ÐÒÒ›?d خƷÏ4¯ @  ÐÓÓ›?d ¯ÆæLíU @  ÐÔÔ›?d X¯ÆdÝú‹ @  ÐÕÕ›?d ˜¯Æ6ÆÒ @  ÐÖÖ›?d دÆ´W  @  Ð××›?d °Æ©¬ @  ÐØØ›?d X°Æš8»Â @  ÐÙÙ›?d ˜°ÆÈ#T› @  ÐÚÚ›?d ذÆJ²CE @  ÐÛÛ›?d ±Æ1š¿ @  ÐÜÜ›?d X±Æ™ a @  ÐÝÝ›?d ˜±ÆË»b8 @  ÐÞÞ›?d رÆI*uæ @  Ðßß›?d ²Æ‚…å @  Ðàà›?d X²ÆŸ’; @  Ðáá›?d ˜²ÆR„}b @  Ðââ›?d€ زƤÖv @  Ñã›?d ³ÆçÉ @  Ñä›?d X³Æ–…ð @  Ñå›?d ˜³Æ×ä£ @  Ñæ›?d سƃFó} @  Ñç›?d ´ÆFšMª @  Ñè›?d X´ÆÄ Zt @  Ñé›?d ˜´ÆX¢êW @  Ñê›?d Ø´ÆÚ3ý‰ @  Ñ ë›?d µÆNùßž @  Ñ ì›?d XµÆÌhÈ@ @  Ñ í›?d ˜µÆ[:Üô @  Ñ î›?d صÆÙ«Ë* @  Ñ ï›?d ¶Æý-Dß @  Ñð›?d X¶Æ¼S @  Ññ›?d ˜¶ÆN´Ý @  Ñò›?d ضÆÌ%Ê @  Ñó›?d ·ÆXïè  @  Ñô›?d X·ÆÚ~ÿÕ @  Ñõ›?d ˜·ÆM,ëa @  Ñö›?d Ø·ÆϽü¿ @  Ñ÷›?d ¸Æ'Ð=z @  Ñø›?d X¸Æ¥A*¤ @  Ñù›?d ˜¸Æ9蚇 @  Ñú›?d ظÆ»yY @  Ñû›?d ¹Æ/³¯N @  Ñü›?d X¹Æ­"¸ @  Ñý›?d ˜¹Æ:p¬$ @  Ñþ›?d عƸá»ú @  Ñÿ›?d ºÆ¯(&Ê @  Ñœ?d XºÆ-¹1 @  Ñœ?d ˜ºÆ ·˜g @  Ñ œ?d غÆ&¹ @  Ñ!œ?d »Æì­® @  Ñ"œ?d X»Æ™}ºp @  Ñ#œ?d ˜»Æ/®Ä @  Ñ$œ?d ػƌ¾¹ @  Ñ%œ?d ¼ÆIbÍ @  Ñ&œ?d X¼ÆËó @  Ñ' œ?d ˜¼ÆWZ 0 @  Ñ( œ?d ؼÆÕË·î @  Ñ) œ?d ½ÆA•ù @  Ñ* œ?d X½ÆÂ' @  Ñ+ œ?d ˜½ÆT–“ @  Ñ,œ?d ؽÆÖSM @  Ñ-œ?d ¾ÆòÕ¸ @  Ñ.œ?d X¾ÆpDf @  Ñ/œ?d ˜¾ÆAL—¥ @  Ñ0œ?d ؾÆÃÝ€{ @  Ñ1œ?d ¿ÆW¢l @  Ñ2œ?d X¿ÆÕ†µ² @  Ñ3œ?d ˜¿ÆBÔ¡ @uÐÀÆ  Ñ4œ?d Ø¿Æù‚j  @  Ñ5 œ?d 0ÀÆAàv‡ @  Ñ6 œ?d pÀÆÃqaY @  Ñ7 œ?d °ÀÆ_ØÑz @  Ñ8 œ?d ðÀÆÝIƤ @  Ñ9 œ?d 0ÁÆIƒä³ @  Ñ: œ?d pÁÆËóm @  Ñ; œ?d °ÁÆ\@çÙ @  Ñ< œ?d ðÁÆÞÑð @  Ñ= œ?d 0ÂÆgàF. @  Ñ>  œ?d pÂÆåqQð @  Ñ? !œ?d °ÂÆkxþ @  Ñ@ "œ?d ðÂÆéééÏ @  ÑA #œ?d 0ÃÆ}#ËØ @  ÑB $œ?d pÃÆÿ²Ü @  ÑC %œ?d °ÃÆhàȲ @  ÑD &œ?d ðÃÆêqßl @  ÑE 'œ?d 0ÄÆ/­a» @  ÑF (œ?d pÄÆ­œ?d ðÉÆÑÖ—ë @  Ñ] ?œ?d 0ÊÆ˜·4Ó @  Ñ^ @œ?d pÊÆ&#  @  Ñ_ Aœ?d °ÊÆ:(Š~ @  Ñ` Bœ?d ðÊÆ¸¹  @  Ña Cœ?d 0ËÆ,s¿· @  Ñb Dœ?d pËÆ®â¨i @  Ñc Eœ?d °ËÆ9°¼Ý @  Ñd Fœ?d ðËÆ»!« @  Ñe Gœ?d 0ÌÆ~ýÔ @  Ñf Hœ?d pÌÆül  @  Ñg Iœ?d °ÌÆ`Ų) @  Ñh Jœ?d ðÌÆâT¥÷ @  Ñi Kœ?d 0ÍÆvž‡à @  Ñj Lœ?d pÍÆô> @  Ñk Mœ?d °ÍÆc]„Š @  Ñl Nœ?d ðÍÆáÌ“T @  Ñm Oœ?d 0ÎÆÅJ¡ @  Ñn Pœ?d pÎÆGÛ  @  Ño Qœ?d °ÎÆvÓ…¼ @  Ñp Rœ?d ðÎÆôB’b @  Ñq Sœ?d 0ÏÆ`ˆ°u @  Ñr Tœ?d pÏÆâ§« @  Ñs Uœ?d °ÏÆuK³ @  Ñt Vœ?d ðÏÆ÷Ú¤Á @  Ñu Wœ?d 0ÐÆ•–U« @  Ñv Xœ?d pÐÆBu @  Ñw Yœ?d °ÐÆ‹®òV @  Ñx Zœ?d ðÐÆ ?åˆ @  Ñy [œ?d 0ÑÆõÇŸ @  Ñz \œ?d pÑÆdÐA @  Ñ{ ]œ?d °Ñƈ6Äõ @  Ñ| ^œ?d ðÑÆ §Ó+ @  Ñ} _œ?d 0ÒÆ³–e @  Ñ~ `œ?d pÒÆ1rÜ @  Ñ aœ?d °ÒÆ\Xí  @  Ñ€ bœ?d ðÒÆÞÉúÒ @  Ñ cœ?d 0ÓÆJØÅ @  Ñ‚ dœ?d pÓÆÈ’Ï @  Ñƒ eœ?d °ÓÆ_ÀÛ¯ @  Ñ„ fœ?d ðÓÆÝQÌq @  Ñ… gœ?d 0ÔÆr¦ @  Ñ† hœ?d pÔÆšex @  Ñ‡ iœ?d °ÔƵÕ[ @  Ñˆ jœ?d ðÔÆ„$Â… @  Ñ‰ kœ?d 0ÕÆîà’ @  ÑŠ lœ?d pÕÆ’÷L @  Ñ‹ mœ?d °ÕÆ-ãø @  ÑŒ nœ?d ðÕÆ‡¼ô& @  Ñ oœ?d 0ÖÆ£:{Ó @  ÑŽ pœ?d pÖÆ!«l  @  Ñ qœ?d °ÖÆ£âÎ @  Ñ rœ?d ðÖÆ’2õ @  Ñ‘ sœ?d 0ׯø× @  Ñ’ tœ?d pׯ„iÀÙ @  Ñ“ uœ?d °×Æ;Ôm @  Ñ” vœ?d ðׯ‘ªÃ³ @  Ñ• wœ?d 0ØÆyÇv @  Ñ– xœ?d pØÆûV¨ @  Ñ— yœ?d °ØÆgÿ¥‹ @  Ñ˜ zœ?d ðØÆån²U @  Ñ™ {œ?d 0ÙÆq¤B @  Ñš |œ?d pÙÆó5‡œ @  Ñ› }œ?d °ÙÆdg“( @  Ñœ ~œ?d ðÙÆæö„ö @  Ñ œ?d 0ÚÆ²Qs\ @  Ñž €œ?d pÚÆ0Àd‚ @  ÑŸ œ?d °ÚÆÎÍñ @  Ñ  ‚œ?d ðÚÆ’_Ú/ @  Ñ¡ ƒœ?d 0ÛÆ•ø8 @  Ñ¢ „œ?d pÛÆ„ïæ @  Ñ£ …œ?d °ÛÆVûR @  Ñ¤ †œ?d ðÛÆ‘ÇìŒ @  Ñ¥ ‡œ?d 0ÜÆTR[ @  Ñ¦ ˆœ?d pÜÆÖŠE… @  Ñ§ ‰œ?d °ÜÆJ#õ¦ @  Ñ¨ Šœ?d ðÜÆȲâx @  Ñ© ‹œ?d 0ÝÆ\xÀo @  Ñª Œœ?d pÝÆÞé×± @  Ñ« œ?d °ÝÆI»Ã @  Ñ¬ Žœ?d ðÝÆË*ÔÛ @  Ñ­ œ?d 0ÞÆï¬[. @  Ñ® œ?d pÞÆm=Lð @  Ñ¯ ‘œ?d °ÞÆ\5Â3 @  Ñ° ’œ?d ðÞÆšãzD @  Ñ±€“œ?d 0߯)XS @  Ñ²€”œ?d p߯Œ¸O @  Ñ³€•œ?d uÐàÆ/°ßÆê[9 @  Ñ´€–œ?d ð߯™{Lç @  Ñµ€—œ?d HàÆ\M_É @  Ñ¶€˜œ?d ˆàÆ|¸]7 @  Ñ·€™œ?d ÈàÆBuø4 @  Ñ¸€šœ?d áÆ’=tÜ @  Ñ¹€›œ?d HáÆT.Íý @  Ñº€œœ?d ˆáÆtÛÏ @  Ñ»€œ?d ÈáÆAíΗ @  Ñ¼€žœ?d âÆÜ©nV @  Ñ½€Ÿœ?d HâÆzMo` @  Ñ¾€ œ?d ˆâÆZ¸mž @  Ñ¿€¡œ?d ÈâÆvÕ×_ @  ÑÀ€¢œ?d ãÆ¦[· @  ÑÁ€£œ?d HãÆ`Žâ– @  Ñ€¤œ?d ˆãÆ@{àh @  ÑÀ¥œ?d ÈãÆuMáü @  ÑÄ€¦œ?d äÆló @  ÑÅ€§œ?d HäÆ2Hõ @  ÑÆ€¨œ?d ˆäÆõJ  @  ÑÇ€©œ?d ÈäÆ,8ï @  ÑÈ€ªœ?d åÆüpcà @  ÑÉ€«œ?d HåÆ:cÚÁ @  ÑÊ€¬œ?d ˆåÆ–Ø? @  ÑË€­œ?d ÈåÆ/ Ù« @  ÑÌ€®œ?d æÆ²äyj @  ÑÍ€¯œ?d HæÆ‰·A€ @  Ñ΀°œ?d ˆæÆ©BC~ @  ÑÏ€±œ?d ÈæÆ:.Ø @  ÑЀ²œ?d çÆêfTu @  ÑÑ€³œ?d HçÆ,uíT @  ÑÒ€´œ?d ˆçÆ €ïª @  ÑÓ€µœ?d ÈçÆ9¶î> @  ÑÔ€¶œ?d èÆ Ib# @  ÑÕ€·œ?d HèÆSJ8% @  ÑÖ€¸œ?d ˆèÆs¿:Û @  Ñ×€¹œ?d ÈèÆMrŸØ @  ÑØ€ºœ?d éÆ:0 @  ÑÙ€»œ?d HéÆ[)ª @  ÑÚ€¼œ?d ˆéÆ{ܨï @  ÑÛ€½œ?d ÈéÆNê©{ @  ÑÜ€¾œ?d êÆÓ® º @  ÑÝ€¿œ?d HêÆ… @  ÑÞ€Àœ?d ˆêÆ¥ïc @  Ñ߀Áœ?d ÈêÆ'…£0 @  Ñà€œ?d ëÆ÷Í/Ø @  Ñá€Ü?d HëÆ1Þ–ù @  Ñâ€Äœ?d€ ˆëÆÐlc @  Ò€Åœ?d ÈëÆ*º @  Ò€Æœ?d ìÆUÙµ @  Ò€Çœ?d HìÆ†x^ @  Ò€Èœ?d ˆìƦêz  @  Ò€Éœ?d ÈìÆV•€Ù @  Ò€Êœ?d íÆ†Ý 1 @  Ò€Ëœ?d HíÆŽ|êj @  Ò€Ìœ?d ˆíÆ®‰è” @  Ò €Íœ?d ÈíÆ^öí @  Ò €Μ?d îÆò², @  Ò €Ïœ?d HîÆ=¨q+ @  Ò €М?d ˆîÆ]sÕ @  Ò €Ñœ?d ÈîÆí"‰¬ @  Ò€Òœ?d ïÆ=jD @  Ò€Óœ?d HïÆ˜jÝÿ @  Ò€Ôœ?d ˆïƸŸß @  Ò€Õœ?d ÈïÆHà%x @  Ò€Öœ?d ðÆö>™Ê @  Ò€ל?d HðÆmt8! @  Ò€Øœ?d ˆðÆM:ß @  Ò€Ùœ?d ÈðƽþÀ¦ @  Ò€Úœ?d ñÆm¶LN @  Ò€Ûœ?d HñÆeª @  Ò€Üœ?d ˆñÆEâ¨ë @  Ò€Ýœ?d ÈñƵR’ @  Ò€Þœ?d òÆ(ÙòS @  Ò€ßœ?d HòÆKtˆ @  Ò€àœ?d ˆòÆk v @  Ò€áœ?d ÈòÆ›þð @  Ò€âœ?d óÆK¶|ç @  Ò€ãœ?d HóÆÿ°ƒì @  Ò €äœ?d ˆóÆßE @  Ò!€åœ?d ÈóÆ/:{k @  Ò"€æœ?d ôÆ6tˆd @  Ò#€çœ?d HôÆ­>) @  Ò$€èœ?d ˆôÆË+q @  Ò%€éœ?d ÈôÆ}´Ñ @  Ò&€êœ?d õÆ­ü]à @  Ò'€ëœ?d HõÆ¥]»» @  Ò(€ìœ?d ˆõÆ…¨¹E @  Ò)€íœ?d ÈõÆu×C< @  Ò*€îœ?d öÆè“ãý @  Ò+€ïœ?d HöƉ ú @  Ò,€ðœ?d ˆöÆ6|" @  Ò-€ñœ?d ÈöÆÆØ} @  Ò.€òœ?d ÷ÆKT• @  Ò/€óœ?d H÷ƳKŒ. @  Ò0€ôœ?d ˆ÷Æ“¾ŽÐ @  Ò1€õœ?d È÷ÆcÁt© @  Ò2€öœ?d øÆW>ø´ @  Ò3€÷œ?d HøÆÌtY_ @  Ò4€øœ?d ˆøÆì[¡ @  Ò5€ùœ?d ÈøÆþ¡Ø @  Ò6€úœ?d ùÆ̶-0 @  Ò7€ûœ?d HùÆÄËk @  Ò8€üœ?d ˆùÆäâÉ• @  Ò9€ýœ?d ÈùÆ3ì @  Ò:€þœ?d úƉٓ- @  Ò;€ÿœ?d HúÆx…}y @  Ò<€?d ˆúÆXp‡ @  Ò=€?d Èúƨ…þ @  Ò>€?d ûÆxG  @  Ò?€?d HûÆbFð @  Ò@€?d ˆûÆB³òq @  ÒA€?d ÈûÆ²Ì @  ÒB€?d üÆ«‚û @  ÒC€?d HüÆ0ÈZì @  ÒD€?d ˆüÆ=X @  ÒE€ ?d ÈüÆàB¢k @  ÒF€ ?d ýÆ0 .ƒ @  ÒG€ ?d HýÆ8«ÈØ @  ÒH€ ?d ˆýÆ^Ê& @  ÒI€ ?d ÈýÆè!0_ @  ÒJ€?d þÆuež @  ÒK€?d HþÆ‹S™ @  ÒL€?d ˆþÆ«ŠQg @  ÒM€?d ÈþÆ[õ« @  ÒN€?d ÿÆ‹½'ö @  ÒO€?d HÿÆ.½ÿM @  ÒP€?d ˆÿÆHý³ @  ÒQ€uÐÇ?d ÈÿÆA“c @  ÒR?d Ǫ»’ @  ÒS?d `Ç•ày @  ÒT?d  Çµ‡ @  ÒU?d àÇEjâþ @  ÒV?d Ç•"n @  ÒW?d `ǃˆM @  ÒX?d  Ç½vг @  ÒY?d àÇM pÊ @  ÒZ?d ÇÐMÐ  @  Ò[?d `dzà*Ð @  Ò\ ?d  Ç“(. @  Ò]!?d àÇcjÒW @  Ò^"?d dz"^¿ @  Ò_#?d `Ç$¡´ @  Ò`$?d  Ç'Ñ£J @  Òa%?d àÇ×®Y3 @  Òb&?d ÇÎàª< @  Òc'?d `ÇUª × @  Òd(?d  Çu_ ) @  Òe)?d àÇ… óP @  Òf*?d ÇUh¸ @  Òg+?d `Ç]É™ã @  Òh,?d  Ç}<› @  Òi-?d àÇCad @  Òj.?d ÇÁ¥ @  Òk/?d `Çî¢ @  Òl0?d  ÇÎè\ @  Òm1?d àÇ>—ú% @  Òn2?d ÇîßvÍ @  Òo3?d `ÇKß®v @  Òp4?d  Çk*¬ˆ @  Òq5?d àÇ›UVñ @  Òr6?d ǯªÚì @  Òs7?d `Ç4à{ @  Òt8?d  Çyù @  Òu9?d àÇäjƒ€ @  Òv:?d Ç4"h @  Òw;?d ` Ç<ƒé3 @  Òx<?d   ÇvëÍ @  Òy=?d à Çì ´ @  Òz>?d ÇqM±u @  Ò{??d ` Çâ°^¿ @  Ò|@?d   ÇÂE\A @  Ò}A?d à Ç2:¦8 @  Ò~B?d Çâr*Ð @  ÒC?d ` Ç%ãx @  Ò€D?d   Ç;Ðᆠ@  ÒE?d à Ç˯ÿ @  Ò‚F?d ÇÒáèð @  ÒƒG?d ` ÇI«I @  Ò„H?d   Çi^Kå @  Ò…I?d à Ç™!±œ @  Ò†J?d ÇIi=t @  Ò‡K?d ` ÇAÈÛ/ @  ÒˆL?d   Ça=ÙÑ @  Ò‰M?d à Ç‘B#¨ @  ÒŠN?d Ç ƒi @  Ò‹O?d `Çò@n @  ÒŒP?d  ÇÒéB @  ÒQ?d àÇ"–¸é @  ÒŽR?d ÇòÞ4 @  ÒS?d `ÇWÞìº @  ÒT?d  Çw+îD @  Ò‘U?d àLJT= @  Ò’V?d Ç9Ѝ @  Ò“W?d `Ç¢À d @  Ò”X?d  Ç‚5 š @  Ò•Y?d àÇrJñã @  Ò–Z?d Ç¢}  @  Ò—[?d `Ǫ£›P @  Ò˜\?d  ÇŠV™® @  Ò™]?d àÇz)c× @  Òš^?d Ççmà @  Ò›_?d `Ç„À9Í @  Òœ`?d  Ç¤5;3 @  Òa?d àÇTJÁJ @  Òžb?d Ç„M¢ @  ÒŸc?d `Ç0²© @  Ò d?d  Çñ°W @  Ò¡e?d àÇàŽJ. @  Ò¢f?d ÇùÀ¹! @  Ò£g?d `ÇbŠÊ @  Ò¤h?d  ÇB4 @  Ò¥i?d àDzàM @  Ò¦j?d ÇbHl¥ @  Ò§k?d `ÇjéŠþ @  Ò¨l?d  ÇJˆ @  Ò©m?d àǺcry @  Òªn?d Ç''Ò¸ @  Ò«o?d `ÇÙ=¿ @  Ò¬p?d  ÇùÈA @  Ò­q?d àÇ ·é8 @  Ò®r?d ÇÙÿeÐ @  Ò¯s?d `Ç|ÿ½k @  Ò°t?d  Ç\ ¿• @  Ò±u?d àǬuEì @  Ò²v?d ǘŠÉñ @  Ò³w?d `ÇÀh @  Ò´x?d  Ç#5jä @  Òµy?d àÇÓJ @  Ò¶z?d Çu @  Ò·{?d `Ç £ú. @  Ò¸|?d  Ç+VøÐ @  Ò¹}?d àÇÛ)© @  Òº~?d ÇFm¢h @  Ò»?d `ÇÈV0 @  Ò¼€?d  Çè£Î @  Ò½?d àÇÜá· @  Ò¾‚?d ÇÈ”m_ @  Ò¿ƒ?d `ÇÒ•”Æ @  ÒÀ„?d  Çò`–8 @  ÒÁ…?d àÇlA @  Ò†?d ÇQŸN @  ÒÇ?d `Ç€>¥ @  ÒĈ?d  Ç î<[ @  Òʼn?d àÇP‘Æ" @  ÒÆŠ?d Ç€ÙJÊ @  ÒÇ‹?d `Ljx¬‘ @  ÒÈŒ?d  Ç¨®o @  ÒÉ?d àÇXòT @  ÒÊŽ?d ÇŶô× @  ÒË?d `Ç;¬7Ð @  ÒÌ?d  ÇY5. @  ÒÍ‘?d àÇë&ÏW @  ÒÎ’?d Ç;nC¿ @  ÒÏ“?d `Çžn› @  ÒД?d  Ç¾›™úuÐ Ç @  ÒÑ•?d àÇNäcƒ @  ÒÒ–?d 8 Ç?ï½å @  ÒÓ—?d x Ǥ¥ @  ÒÔ˜?d ¸ Ç„Pð @  ÒÕ™?d ø Çt/ä‰ @  ÒÖš?d 8!Ǥgha @  Ò×›?d x!ǬƎ: @  ÒØœ?d ¸!ÇŒ3ŒÄ @  ÒÙ?d ø!Ç|Lv½ @  ÒÚž?d 8"ÇáÖ| @  ÒÛŸ?d x"Ç‚¥,§ @  ÒÜ ?d ¸"Ç¢P.Y @  ÒÝ¡?d ø"ÇR/Ô  @  ÒÞ¢?d 8#Ç‚gXÈ @  Òߣ?d x#Ç6a§Ã @  Òà¤?d ¸#Ç”¥= @  Òá¥?d ø#Çæë_D @  Òâ¦?d€ 8$Ç‹f°í @  Ó§?d x$ÇñmY/ @  Ó¨?d ¸$Çј[Ñ @  Ó©?d ø$Çä®ZE @  Óª?d 8%Ç4æÖ­ @  Ó«?d x%ÇòõoŒ @  Ó¬?d ¸%ÇÒmr @  Ó­?d ø%ÇìÍÈq @  Ó®?d 8&Çq‰h° @  Ó ¯?d x&ÇJÚPZ @  Ó °?d ¸&Çj/R¤ @  Ó ±?d ø&Ç_S0 @  Ó ²?d 8'ÇQߨ @  Ó ³?d x'ÇIBfù @  Ó´?d ¸'Çi·d @  Óµ?d ø'ÇúÛÿä @  Ó¶?d 8(ÇÎ$sù @  Ó·?d x(Ç')ÿ @  Ó¸?d ¸(ǰÒ+ @  Ó¹?d ø(Ç…ä*• @  Óº?d 8)ÇU¬¦} @  Ó»?d x)Ç“¿\ @  Ó¼?d ¸)dzJ¢ @  Ó½?d ø)LJ¸¡ @  Ó¾?d 8*ÇÃ` @  Ó¿?d x*ÇFw G @  ÓÀ?d ¸*Çf‚¹ @  ÓÁ?d ø*ÇS´- @  ÓÂ?d 8+ǃüƒÅ @  ÓÃ?d x+ÇEï:ä @  ÓÄ?d ¸+Çe8 @  ÓÅ?d ø+Ççp„I @  Ó Æ?d 8,Çþ>wF @  Ó!Ç?d x,Ç =-@ @  Ó"È?d ¸,Ç€È/¾ @  Ó#É?d ø,ǵþ.* @  Ó$Ê?d 8-Çe¶¢Â @  Ó%Ë?d x-Ç£¥ã @  Ó&Ì?d ¸-ǃP @  Ó'Í?d ø-ǽ¼ @  Ó(Î?d 8.Ç Ùß @  Ó)Ï?d x.ÇŠ$5 @  Ó*Ð?d ¸.Ç;&Ë @  Ó+Ñ?d ø.ÇI'_ @  Ó,Ò?d 8/ÇÞ«· @  Ó-Ó?d x/Ç– @  Ó.Ô?d ¸/Ç8çh @  Ó/Õ?d ø/Ç«‹‹‹ @  Ó0Ö?d 80ÇU79 @  Ó1×?d x0ÇKVm? @  Ó2Ø?d ¸0Çk£oÁ @  Ó3Ù?d ø0Ç^•nU @  Ó4Ú?d 81ÇŽÝâ½ @  Ó5Û?d x1ÇHÎ[œ @  Ó6Ü?d ¸1Çh;Yb @  Ó7Ý?d ø1ÇVöüa @  Ó8Þ?d 82Ç˲\  @  Ó9ß?d x2ÇmV]– @  Ó:à?d ¸2ÇM£_h @  Ó;á?d ø2Çx•^ü @  Ó<â?d 83ǨÝÒ @  Ó=ã?d x3ÇnÎk5 @  Ó>ä?d ¸3ÇN;iË @  Ó?å?d ø3ÇbVÓ  @  Ó@æ?d 84Ç{  @  ÓAç?d x4Ç%z @  ÓBè?d ¸4Çîxý @  ÓCé?d ø4Ç0Øyi @  ÓDê?d 85Çàõ @  ÓEë?d x5Ç&ƒL  @  ÓFì?d ¸5ÇvN^ @  ÓGí?d ø5Ç8»ë] @  ÓHî?d 86Ç¥ÿKœ @  ÓIï?d x6Çž¬sv @  ÓJð?d ¸6ǾYqˆ @  ÓKñ?d ø6Ç‹op @  ÓLò?d 87Ç['üô @  ÓMó?d x7Ç4EÕ @  ÓNô?d ¸7ǽÁG+ @  ÓOõ?d ø7Ç.­ÜÈ @  ÓPö?d 88ÇRPÕ @  ÓQ÷?d x8ÇDQ Ó @  ÓRø?d ¸8Çd¤- @  ÓSù?d ø8ÇQ’ ¹ @  ÓTú?d 89ÇÚ…Q @  ÓUû?d x9ÇGÉŽ @  ÓWý?d ø9ÇYñ› @  ÓXþ?d 8:Çĵ;L @  ÓYÿ?d x:ÇB‚Ð @  ÓZž?d ¸:Çbw. @  Ó[ž?d ø:ÇWAº @  Ó\ž?d 8;LJ ”R @  Ó]ž?d x;ÇA-s @  Ó^ž?d ¸;Çaï/ @  Ó_ž?d ø;Çã…“Þ @  Ó`ž?d 8<ÇúË`Ñ @  Óaž?d x<ǤÈ:× @  Óbž?d ¸<Ç„=8) @  Óc ž?d ø<DZ 9½ @  Ód ž?d 8=ÇaCµU @  Óe ž?d x=ǧP t @  Óf ž?d ¸=LJ¥Š @  Óg ž?d ø=ǹh«‰ @  Óhž?d 8>Ç$, H @  Óiž?d x>Ç3¢ @  Ójž?d ¸>Ç?Š1\ @  Ókž?d ø>Ç ¼0È @  Ólž?d 8?ÇÚô¼  @  Ómž?d x?Çç @  Ónž?duÐ@Ç7 ¸?Ç<ÿ @  Óož?d ø?ǯ~œ @  Ópž?d P@ÇlÒ&  @  Óqž?d @ǵi @  Órž?d Ð@Ç$~Ø @  Ósž?d AÇuËäz @  Ótž?d PAÇ÷Zó¤ @  Óuž?d AÇ“-_¥ @  Óvž?d ÐAǼH{ @  Ówž?d BÇ0¤Zg @  Óxž?d PBDz5M¹ @  Óyž?d BǶµY¯ @  Óz ž?d ÐBÇ4$Nq @  Ó{!ž?d CÇSËÔÓ @  Ó|"ž?d PCÇÑZà  @  Ó}#ž?d Cǵ-o  @  Ó~$ž?d ÐCÇ7¼xÒ @  Ó%ž?d DÇcXó @  Ó€&ž?d PDÇáÉ- @  Ó'ž?d DÇ®N  @  Ó‚(ž?d ÐDÇŸ?YÕ @  Óƒ)ž?d EÇøÐÃw @  Ó„*ž?d PEÇzAÔ© @  Ó…+ž?d EÇ6x¨ @  Ó†,ž?d ÐEÇœ§ov @  Ó‡-ž?d Fǽ¿}j @  Óˆ.ž?d PFÇ?.j´ @  Ó‰/ž?d FǦG~ @  ÓŠ0ž?d ÐFÇ$ˆP  @  Ó‹1ž?d GÇCgÊ @  ÓŒ2ž?d PGÇÁöÝÜ @  Ó3ž?d GÇ¥qÝ @  ÓŽ4ž?d ÐGÇ'f @  Ó5ž?d HÇf# @  Ó6ž?d PHÇ€ƒqý @  Ó‘7ž?d HÇ|ä>Û @  Ó’8ž?d ÐHÇþu) @  Ó“9ž?d IÇ™š³§ @  Ó”:ž?d PIÇ ¤y @  Ó•;ž?d IÇ|x @  Ó–<ž?d ÐIÇýí¦ @  Ó—=ž?d JÇÜõ º @  Ó˜>ž?d PJÇ^dd @  Ó™?ž?d JǪ´c @  Óš@ž?d ÐJÇ(% ½ @  Ó›Až?d KÇOÊ– @  ÓœBž?d PKÇÍ[Á @  ÓCž?d KÇ©,-À @  ÓžDž?d ÐKÇ+½: @  ÓŸEž?d LÇ2bœ @  Ó Fž?d PLǰ™uB @  Ó¡Gž?d LÇLþ:d @  Ó¢Hž?d ÐLÇÎo-º @  Ó£Iž?d MÇ©€· @  Ó¤Jž?d PMÇ+ Æ @  Ó¥Kž?d MÇOf Ç @  Ó¦Lž?d ÐMÇÍ÷ @  Ó§Mž?d NÇìï  @  Ó¨Nž?d PNÇn~Û @  Ó©Ož?d NÇ÷I3 @  ÓªPž?d ÐNÇuØ$Ï @  Ó«Qž?d OÇ7¾m @  Ó¬Rž?d POǦ©³ @  Ó­Sž?d OÇôѲ @  Ó®Tž?d ÐOÇv@l @  Ó¯Už?d PÇÙc"ã @  Ó°Vž?d PPÇ[ò5= @  Ó±Wž?d Pǧ•z @  Ó²Xž?d ÐPÇ%mÅ @  Ó³Yž?d QÇBë÷g @  Ó´Zž?d PQÇÀz๠@  Óµ[ž?d QǤ L¸ @  Ó¶\ž?d ÐQÇ&œ[f @  Ó·]ž?d RÇ„Iz @  Ó¸^ž?d PRÇ…^¤ @  Ó¹_ž?d RÇ•J² @  Óº`ž?d ÐRÇ]l @  Ó»až?d SÇdëÇÎ @  Ó¼bž?d PSÇæzÐ @  Ó½cž?d SÇ‚ | @  Ó¾dž?d ÐSÇœkÏ @  Ó¿ež?d TÇ·.5ß @  ÓÀfž?d PTÇ5¿" @  ÓÁgž?d TÇÉØm' @  ÓÂhž?d ÐTÇKIzù @  ÓÃiž?d UÇ,¦à[ @  ÓÄjž?d PUÇ®7÷… @  ÓÅkž?d UÇÊ@[„ @  ÓÆlž?d ÐUÇHÑLZ @  ÓÇmž?d VÇiÉ^F @  ÓÈnž?d PVÇëXI˜ @  ÓÉož?d VÇrodR @  ÓÊpž?d ÐVÇðþsŒ @  ÓËqž?d WÇ—é. @  ÓÌrž?d PWÇ€þð @  ÓÍsž?d WÇq÷Rñ @  ÓÎtž?d ÐWÇófE/ @  ÓÏuž?d XÇÖdE @  ÓÐvž?d PXÇTõRÑ @  ÓÑwž?d XǨ’÷ @  ÓÒxž?d ÐXÇ* ) @  ÓÓyž?d YÇMì‹ @  ÓÔzž?d PYÇÏ}‡U @  ÓÕ{ž?d YÇ« +T @  ÓÖ|ž?d ÐYÇ)›<Š @  Ó×}ž?d Zǃ.– @  ÓØ~ž?d PZÇŠ9H @  ÓÙž?d ZÇclÝ @  ÓÚ€ž?d ÐZÇá•{ @  ÓÛž?d [džzá¡ @  ÓÜ‚ž?d P[Çëö @  Ó݃ž?d [Ç`œZ~ @  ÓÞ„ž?d Ð[Çâ M  @  Óß…ž?d \Çû¸" @  Óà†ž?d P\Çy)ü @  Óᇞ?d \Ç…NMÚ @  Ó∞?d€ Ð\ljò½ @  Ô‰ž?d ]Ç' 6 @  ÔŠž?d P]Ç…¶7è @  Ô‹ž?d ]Ç$ˆ` @  ÔŒž?d Ð]ǦwÚ @  Ôž?d ^ÇI³:¼ @  ÔŽž?d P^ÇË"-b @  Ôž?d ^Çœ§_Ò @  Ôž?d Ð^Ç6H  @  Ô ‘ž?d _Ǽ)C @  Ô ’ž?d P_Ç>> @  Ô “ž?d _ÇŸ?iq @  ÔuÐ`Ç ”ž?d Ð_ÇæÀE¯ @  Ô •ž?d (`Ç*Ö @  Ô –ž?d h`ǨG N @  Ô —ž?d ¨`Ç73$ò @  Ô ˜ž?d è`ǵ¢3, @  Ô ™ž?d (aÇRc @  Ô šž?d haÇ••E½ @  Ô ›ž?d ¨aÇ4«Q @  Ô œž?d èaǶ: @  Ô ž?d (bÇYHé @  Ô žž?d hbÇÛ_7 @  Ô Ÿž?d ¨bÇ3[ @  Ô  ž?d èbÇ“¢… @  Ô ¡ž?d (cÇ1bÊ @  Ô ¢ž?d hcdz•u @  Ô £ž?d ¨cÇ«"ø @  Ô ¤ž?d ècÇ:5& @  Ô ¥ž?d (dÇûš+Ž @  Ô ¦ž?d hdÇy I @  Ô7 ¿ž?d ¨jÇ@c`4 @  Ô8 Àž?d èjÇÂòwê @  Ô9 Áž?d (kÇ`T¥ @  Ô: ž?d hkÇâÅ{ @  Ô; Þ?d ¨kÇCûV— @  Ô< Äž?d èkÇÁjAI @  Ô= Åž?d (lǪÊ_á @  Ô> Æž?d hlÇ([H? @  Ô? Çž?d ¨lÇ.G¡ @  Ô@ Èž?d èlÇŠ¿P @  ÔA Éž?d (mÇ(10 @  ÔB Êž?d hmǪˆ&î @  ÔC Ëž?d ¨mÇ ¶q @  ÔD Ìž?d èmlj'fÜ @  ÔE Íž?d (nÇf+º @  ÔF Ξ?d hnÇä¼ @  ÔN Öž?d hpÇ|1)b @  ÔO מ?d ¨pÇãEÞ @  ÔP Øž?d èpÇaÔ @  ÔQ Ùž?d (qÇÃrqO @  ÔR Úž?d hqÇAãf‘ @  ÔS Ûž?d ¨qÇàÝ1} @  ÔT Üž?d èqÇbL&£ @  ÔU Ýž?d (rÇækÅ @  ÔV Þž?d hrÇw| @  ÔW ßž?d ¨rÇÅE7w @  ÔX àž?d èrÇGÔ © @  ÔY áž?d (sÇårAæ @  ÔZ âž?d hsÇgãV8 @  Ô[ ãž?d ¨sÇÆÝÔ @  Ô\ äž?d èsÇDL  @  Ô] åž?d (tÇ/ì¢ @  Ô^ æž?d htÇ­}| @  Ô_ çž?d ¨tÇ#p @  Ô` èž?d ètÇ¡ž® @  Ôa éž?d (uÇ8`á @  Ôb êž?d huÇ©w? @  Ôc ëž?d ¨uÇ — Ó @  Ôd ìž?d èuÇ¢7  @  Ôe íž?d (vÇM¬zk @  Ôf îž?d hvÇÏ=mµ @  Ôg ïž?d ¨vǘ¸ @  Ôh ðž?d èvÇ)Û @  Ôi ñž?d (wǸi” @  Ôj òž?d hwÇ:~J @  Ôk óž?d ¨wÇ› )¦ @  Ôl ôž?d èwDZ>x @  Ôm õž?d (xÇ_ _ @  Ôn öž?d hxÇÝ1H @  Ôo ÷ž?d ¨xÇBEf  @  Ôp øž?d èxÇÀÔq~ @  Ôq ùž?d (yÇbr1 @  Ôr úž?d hyÇàãï @  Ôs ûž?d ¨yÇAÝP @  Ôt üž?d èyÇÃLGÝ @  Ôu ýž?d (zÇ,æ » @  Ôv þž?d hzÇ®we @  Ôw ÿž?d ¨zÇö´B† @  Ôx Ÿ?d èzÇt%UX @  Ôy Ÿ?d ({ÇÖƒ4 @  Ôz Ÿ?d h{ÇT#É @  Ô{ Ÿ?d ¨{Çõ,t% @  Ô| Ÿ?d è{Çw½cû @  Ô} Ÿ?d (|Ç}S @  Ô~ Ÿ?d h|ÇžŒj @  Ô Ÿ?d ¨|Ç]¯U" @  Ô€ Ÿ?d è|Çß>Bü @  Ô  Ÿ?d (}Ç}˜#³ @  Ô‚  Ÿ?d h}Çÿ 4m @  Ôƒ  Ÿ?d ¨}Ç^7c @  Ô„  Ÿ?d è}Çܦt_ @  Ô…  Ÿ?d (~Ç3 99 @  Ô† Ÿ?d h~DZ.ç @  Ô‡ Ÿ?d ¨~Çæ\W @  Ôˆ Ÿ?d è~Çd‰K‰ @  Ô‰ Ÿ?d (ÇÆ/*Æ @  ÔŠ Ÿ?d hÇD¾= @  Ô‹ Ÿ?d ¨ÇuЀÇ'å€jô @  ÔŒ Ÿ?d èÇ^Ö¡ÿ @  ÔŸ?d @€ÇB†®, @  ÔŽŸ?d €€Çbs¬Ò @  ÔŸ?d À€Ç_c—N @  ÔŸ?d Ç+¦ @  Ô‘Ÿ?d @ÇTáß @  Ô’Ÿ?d €Ç_¡ã! @  Ô“Ÿ?d ÀÇ\û¡í @  Ô”Ÿ?d ‚ÇÁ¿, @  Ô•Ÿ?d @‚Ç1ÀûU @  Ô–Ÿ?d €‚Ç5ù« @  Ô—Ÿ?d À‚Çyc§ç @  Ô˜ Ÿ?d ƒÇ©++ @  Ô™!Ÿ?d @ƒÇYTÑv @  Ôš"Ÿ?d €ƒÇy¡Óˆ @  Ô›#Ÿ?d ÀƒÇzû‘D @  Ôœ$Ÿ?d „ÇcµbK @  Ô%Ÿ?d @„Ç“ʘ2 @  Ôž&Ÿ?d €„dz?šÌ @  ÔŸ'Ÿ?d À„ÇŸ)†à @  Ô (Ÿ?d …ÇOa  @  Ô¡)Ÿ?d @…Ç¿ðq @  Ô¢*Ÿ?d €…ÇŸëò @  Ô£+Ÿ?d À…Çœ±°C @  Ô¤,Ÿ?d †Çõ‚ @  Ô¥-Ÿ?d @†ÇñŠêû @  Ô¦.Ÿ?d €†ÇÑè @  Ô§/Ÿ?d À†Ç$ž• @  Ô¨0Ÿ?d ‡ÇôÖ} @  Ô©1Ÿ?d @‡Ç©ù @  Ôª2Ÿ?d €‡Ç$\ûú @  Ô«3Ÿ?d À‡Ç'¹6 @  Ô¬4Ÿ?d ˆÇù5+ @  Ô­5Ÿ?d @ˆÇã†ÏR @  Ô®6Ÿ?d €ˆÇÃsͬ @  Ô¯7Ÿ?d ÀˆÇþcö0 @  Ô°8Ÿ?d ‰Ç.+zØ @  Ô±9Ÿ?d @‰ÇÞT€¡ @  Ô²:Ÿ?d €‰Çþ¡‚_ @  Ô³;Ÿ?d À‰ÇýûÀ“ @  Ô´<Ÿ?d ŠÇ`¿`R @  Ôµ=Ÿ?d @ŠÇÀš+ @  Ô¶>Ÿ?d €ŠÇ°5˜Õ @  Ô·?Ÿ?d ÀŠÇ(3Óˆ @  Ô¸@Ÿ?d ‹Çø{_` @  Ô¹AŸ?d @‹Ç¥ @  ÔºBŸ?d €‹Ç(ñ§ç @  Ô»CŸ?d À‹Ç+«å+ @  Ô¼DŸ?d ŒÇ2å$ @  Ô½EŸ?d @ŒÇšì] @  Ô¾FŸ?d €ŒÇâoî£ @  Ô¿GŸ?d ÀŒÇ`~ô @  ÔÀHŸ?d ǰ6xõ @  ÔÁIŸ?d @Ç@I‚Œ @  ÔÂJŸ?d €Ç`¼€r @  ÔÃKŸ?d ÀÇcæÂ¾ @  ÔÄLŸ?d ŽÇþ¢b @  ÔÅMŸ?d @ŽÇݘ @  ÔÆNŸ?d €ŽÇ.(šø @  ÔÇOŸ?d ÀŽÇÛÉýh @  ÔÈPŸ?d Ç q€ @  ÔÉQŸ?d @Çûþ‹ù @  ÔÊRŸ?d €ÇÛ ‰ @  ÔËSŸ?d ÀÇØQËË @  ÔÌTŸ?d Çfwy @  ÔÍUŸ?d @Ç–ð @  ÔÎVŸ?d €Ç¶þ @  ÔÏWŸ?d ÀÇ‹´b @  ÔÐXŸ?d ‘Ç[]8Š @  ÔÑYŸ?d @‘Ç«"Âó @  ÔÒZŸ?d €‘Ç‹×À  @  ÔÓ[Ÿ?d À‘Lj‚Á @  ÔÔ\Ÿ?d ’ÇÉ" @  ÔÕ]Ÿ?d @’Çå¶Øy @  ÔÖ^Ÿ?d €’ÇÅCÚ‡ @  Ô×_Ÿ?d À’Ç­„Ë @  ÔØ`Ÿ?d “Ç}]# @  ÔÙaŸ?d @“Ç"òZ @  ÔÚbŸ?d €“Ç­×ð¤ @  ÔÛcŸ?d À“Ç®²h @  ÔÜdŸ?d ”Ç·ÃAg @  ÔÝeŸ?d @”ÇG¼» @  ÔÞfŸ?d €”ÇgI¹à @  ÔßgŸ?d À”ÇK_¥Ì @  ÔàhŸ?d •Ç›)$ @  ÔáiŸ?d @•ÇkhÓ] @  ÔâjŸ?d€ €•Ç?^Í @  ÕkŸ?d À•ÇÝEÇà @  ÕlŸ?d –Ç@g! @  ÕmŸ?d @–Çu7fµ @  ÕnŸ?d €–ÇUÂdK @  ÕoŸ?d À–Çn‘\¡ @  ÕpŸ?d —ǾÙÐI @  ÕqŸ?d @—Ç€uJ @  ÕrŸ?d €—Ç áw´ @  Õ sŸ?d À—ÇfòΕ @  Õ tŸ?d ˜ÇR Bˆ @  Õ uŸ?d @˜Çg;C @  Õ vŸ?d €˜ÇGÎAâ @  Õ wŸ?d À˜ÇÍä @  ÕxŸ?d ™ÇÉ…—  @  ÕyŸ?d @™ÇZé ï @  ÕzŸ?d €™Çz @  Õ{Ÿ?d À™Ç¼·0 @  Õ|Ÿ?d šÇ!Kñ @  Õ}Ÿ?d @šÇ}e @  Õ~Ÿ?d €šÇ4ˆ› @  ÕŸ?d ÀšÇúT. @  Õ€Ÿ?d ›Ç¯²ØÆ @  ÕŸ?d @›Ç‘}Å @  Õ‚Ÿ?d €›Ç±Š; @  ÕƒŸ?d À›Çw™Æ @  Õ„Ÿ?d œÇn×5 @  Õ…Ÿ?d @œÇ[á4 @  Õ†Ÿ?d €œÇ{6 @  Õ‡Ÿ?d ÀœÇ%ly @  ÕˆŸ?d Çõ_à‘ @  Õ‰Ÿ?d @Çw5\ @  Õ ŠŸ?d €ÇWÀ^< @  Õ!‹Ÿ?d ÀÇ‘Óç @  Õ"ŒŸ?d žÇ —GÜ @  Õ#Ÿ?d @žÇ9¡FH @  Õ$ŽŸ?d €žÇTD¶ @  Õ%Ÿ?d ÀžÇ"|\ @  Õ&Ÿ?d ŸÇòOð´ @  Õ'‘Ÿ?d @ŸÇÌ‚U· @  Õ(’Ÿ?d €ŸÇìwWI @  Õ)“ŸuРÇ?d ÀŸÇ*dîh @  Õ*”Ÿ?d  Ç[o0 @  Õ+•Ÿ?d X ÇnY1š @  Õ,–Ÿ?d ˜ ÇN¬3d @  Õ-—Ÿ?d ؠǯib @  Õ.˜Ÿ?d ¡ÇÀçåŠ @  Õ/™Ÿ?d X¡ÇS‹~i @  Õ0šŸ?d ˜¡Çs~|— @  Õ1›Ÿ?d ءǵmŶ @  Õ2œŸ?d ¢Ç()ew @  Õ3Ÿ?d X¢Çdã @  Õ4žŸ?d ˜¢Ç=êf @  Õ5ŸŸ?d آǛg+ @  Õ6 Ÿ?d £ÇKFëà @  Õ7¡Ÿ?d X£Çu‹NÀ @  Õ8¢Ÿ?d ˜£ÇU~L> @  Õ9£Ÿ?d أǓmõ @  Õ:¤Ÿ?d ¤ÇŠ# @  Õ;¥Ÿ?d X¤Ç¿„ @  Õ<¦Ÿ?d ˜¤ÇŸàz @  Õ=§Ÿ?d ؤÇÁã_| @  Õ>¨Ÿ?d ¥Ç«Ó” @  Õ?©Ÿ?d X¥Ç=ÆiU @  Õ@ªŸ?d ˜¥Ç3k« @  ÕA«Ÿ?d Ø¥ÇÛ ÒŠ @  ÕB¬Ÿ?d ¦ÇFdrK @  ÕC­Ÿ?d X¦ÇsRsß @  ÕD®Ÿ?d ˜¦ÇS§q! @  ÕE¯Ÿ?d ئÇhôIË @  ÕF°Ÿ?d §Ç¸¼Å# @  ÕG±Ÿ?d X§Ç†q`  @  ÕH²Ÿ?d ˜§Ç¦„bÞ @  ÕI³Ÿ?d اÇ`—Ûÿ @  ÕJ´Ÿ?d ¨ÇThWâ @  ÕKµŸ?d X¨Ça^Vv @  ÕL¶Ÿ?d ˜¨ÇA«Tˆ @  ÕM·Ÿ?d بÇ¨Ž @  ÕN¸Ÿ?d ©ÇÏà‚f @  ÕO¹Ÿ?d X©Ç\Œ… @  ÕPºŸ?d ˜©Ç|y{ @  ÕQ»Ÿ?d ةǺj¢Z @  ÕR¼Ÿ?d ªÇ'.› @  ÕS½Ÿ?d XªÇ @  ÕT¾Ÿ?d ˜ªÇ2íñ @  ÕU¿Ÿ?d تÇdYÖ @  ÕVÀŸ?d «Ç´™> @  ÕWÁŸ?d X«ÇŠÜ<= @  ÕXŸ?d ˜«Çª)>à @  ÕYß?d Ø«Çl:‡â @  ÕZÄŸ?d ¬Çuttí @  Õ[ÅŸ?d X¬Ç@Buy @  Õ\ÆŸ?d ˜¬Ç`·w‡ @  Õ]ÇŸ?d جÇ>´- @  Õ^ÈŸ?d ­Çîü¡i @  Õ_ÉŸ?d X­Çl–: @  Õ`ÊŸ?d ˜­ÇLcÄ @  ÕaËŸ?d Ø­ÇŠp¦å @  ÕbÌŸ?d ®Ç4$ @  ÕcÍŸ?d X®Ç"° @  ÕdΟ?d ˜®Ç÷N @  ÕeÏŸ?d Ø®Ç9¤=¤ @  ÕfП?d ¯Çéì±L @  ÕgÑŸ?d X¯Ç×!O @  ÕhÒŸ?d ˜¯Ç÷Ô± @  ÕiÓŸ?d دÇ1ǯ @  ÕjÔŸ?d °Ç" @  ÕkÕŸ?d X°Çº/¶ @  ÕlÖŸ?d ˜°ÇšÚH @  Õmן?d ذÇÄÙJN @  ÕnØŸ?d ±Ç‘Ʀ @  ÕoÙŸ?d X±Ç‡ý]E @  ÕpÚŸ?d ˜±Ç§_» @  ÕqÛŸ?d رÇaæš @  ÕrÜŸ?d ²Çü_F[ @  ÕsÝŸ?d X²ÇÉiGÏ @  ÕtÞŸ?d ˜²ÇéœE1 @  Õuߟ?d زÇOxD @  ÕvàŸ?d ³ÇŸ0Èï @  ÕwáŸ?d X³Ç¡ýmì @  ÕxâŸ?d ˜³Ço @  ÕyãŸ?d سÇGÖ3 @  ÕzäŸ?d ´Ç^U%< @  Õ{åŸ?d X´Çkc$¨ @  Õ|æŸ?d ˜´ÇK–&V @  Õ}çŸ?d Ø´Ç•|P @  Õ~èŸ?d µÇÅÝð¸ @  ÕéŸ?d XµÇ æzH @  Õ€êŸ?d ˜µÇ*x¶ @  ÕëŸ?d صÇìÁ— @  Õ‚ìŸ?d ¶ÇqDaV @  ÕƒíŸ?d X¶ÇDr` @  Õ„îŸ?d ˜¶Çd‡b< @  Õ…ïŸ?d ضÇ_ÔZÖ @  Õ†ðŸ?d ·ÇœÖ> @  Õ‡ñŸ?d X·Ç±Qs= @  ÕˆòŸ?d ˜·Ç‘¤qà @  Õ‰óŸ?d Ø·ÇW·Èâ @  ÕŠôŸ?d ¸ÇcHDÿ @  Õ‹õŸ?d X¸ÇV~Ek @  ÕŒöŸ?d ˜¸Çv‹G• @  Õ÷Ÿ?d ظÇ(ˆ“ @  ÕŽøŸ?d ¹ÇøÀ‘{ @  ÕùŸ?d X¹Çk¬ ˜ @  ÕúŸ?d ˜¹ÇKYf @  Õ‘ûŸ?d عÇJ±G @  Õ’üŸ?d ºÇ† @  Õ“ýŸ?d XºÇ%8 @  Õ”þŸ?d ˜ºÇÍì @  Õ•ÿŸ?d غÇ€mnh @  Õ– ?d »ÇP%†@  Õ— ?d X»ÇnèGƒ @  Õ˜ ?d ˜»ÇNE} @  Õ™ ?d ػLjü\ @  Õš ?d ¼Ç‘@S @  Õ› ?d X¼Ç¤vÇ @  Õœ ?d ˜¼Ç„ƒ 9 @  Õ ?d ؼÇÚ€V? @  Õž ?d ½Ç ÈÚ× @  ÕŸ  ?d X½Çˆ¢f„ @  Õ   ?d ˜½Ç¨Wdz @  Õ¡  ?d ؽÇnDÝ[ @  Õ¢  ?d ¾Çó}š @  Õ£  ?d X¾ÇÆ6| @  Õ¤ ?d ˜¾ÇæÃ~ð @  Õ¥ ?d ؾÇÝF @  Õ¦ ?d ¿Ç ØÊò @  Õ§ ?d X¿Ç3oñ @  Õ¨ ?d ˜¿Çàm @uÐÀÇ  Õ© ?d Ø¿ÇÕóÔ. @  Õª ?d 0ÀDZ…| @  Õ« ?d pÀÇ„5„è @  Õ¬ ?d °ÀǤÀ† @  Õ­ ?d ðÀÇúÃÜ @  Õ® ?d 0ÁÇ*‹Pø @  Õ¯ ?d pÁǹçË @  Õ° ?d °ÁÇ™Éå @  Õ± ?d ðÁÇ_pÄ @  Õ² ?d 0ÂÇÂEÐ @  Õ³ ?d pÂÇ÷sÑ‘ @  Õ´ ?d °ÂÇ׆Óo @  Õµ ?d ðÂÇqbÒY @  Õ¶  ?d 0ÃÇ¡*^± @  Õ·! ?d pÃÇŸçû² @  Õ¸" ?d °ÃÇ¿ùL @  Õ¹# ?d ðÃÇy@m @  Õº$ ?d 0ÄÇ`O³b @  Õ»% ?d pÄÇUy²ö @  Õ¼& ?d °ÄÇuŒ° @  Õ½' ?d ðÄÇ+ê @  Õ¾( ?d 0ÅÇûÇfæ @  Õ¿) ?d pÅÇתÜ' @  ÕÀ* ?d °ÅÇ÷_ÞÙ @  ÕÁ+ ?d ðÅÇ1Lgø @  ÕÂ, ?d 0ÆÇ¬Ç9 @  ÕÃ- ?d pÆÇ™>Æ­ @  ÕÄ. ?d °ÆÇ¹ËÄS @  ÕÅ/ ?d ðÆÇ‚˜ü¹ @  ÕÆ0 ?d 0ÇÇRÐpQ @  ÕÇ1 ?d pÇÇlÕR @  ÕÈ2 ?d °ÇÇLè׬ @  ÕÉ3 ?d ðÇÇŠûn @  ÕÊ4 ?d 0ÈǾâ @  ÕË5 ?d pÈÇ‹2ã @  ÕÌ6 ?d °ÈÇ«Çáú @  ÕÍ7 ?d ðÈÇõÄ»ü @  ÕÎ8 ?d 0ÉÇ%Œ7 @  ÕÏ9 ?d pÉǶà¬÷ @  ÕÐ: ?d °ÉÇ–®  @  ÕÑ; ?d ðÉÇP( @  ÕÒ< ?d 0ÊÇÍB·é @  ÕÓ= ?d pÊÇøt¶} @  ÕÔ> ?d °ÊÇØ´ƒ @  ÕÕ? ?d ðÊÇŽ5 ¤ @  ÕÖ@ ?d 0ËÇ^},L @  Õ×A ?d pËÇ`°‰O @  ÕØB ?d °ËÇ@E‹± @  ÕÙC ?d ðËdžV2 @  ÕÚD ?d 0ÌÇŸÁŸ @  ÕÛE ?d pÌǪ.À  @  ÕÜF ?d °ÌÇŠÛÂõ @  ÕÝG ?d ðÌÇÔØ˜ó @  ÕÞH ?d 0ÍÇ @  ÕßI ?d pÍdžú¨H @  ÕàJ ?d °ÍǦª¶ @  ÕáK ?d ðÍÇ`— @  ÕâL ?d€ 0ÎÇ<DV @  ÖM ?d pÎÇèh ë @  ÖN ?d °ÎÇÈ @  ÖO ?d ðÎÇ6‡Ì @  ÖP ?d 0ÏÇæÏ@ú @  ÖQ ?d pÏǰºƒ @  ÖR ?d °ÏÇ6E¸} @  ÖS ?d ðÏÇ>ä^& @  ÖT ?d 0ÐÇ€:â” @  Ö U ?d pÐÇpEí @  Ö V ?d °ÐÇP° @  Ö W ?d ðÐÇËú»ø @  Ö X ?d 0ÑDz7 @  Ö Y ?d pÑÇëÍÍi @  ÖZ ?d °ÑÇË8Ï— @  Ö[ ?d ðÑÇn8, @  Ö\ ?d 0ÒÇó|·í @  Ö] ?d pÒÇM” @  Ö^ ?d °ÒÇ#öOj @  Ö_ ?d ðÒÇ@[µ± @  Ö` ?d 0ÓÇ9Y @  Öa ?d pÓÇ`là  @  Öb ?d °ÓÇ@™ÁÞ @  Öc ?d ðÓÇH8'… @  Öd ?d 0ÔÇQvÔŠ @  Öe ?d pÔÇ¡ .ó @  Öf ?d °ÔÇü,  @  Ög ?d ðÔǶæ @  Öh ?d 0ÕÇÊþ @  Öi ?d pÕÇ:ûw @  Öj ?d °ÕÇtù‰ @  Ök ?d ðÕÇ®r‚ @  Ö l ?d 0ÖÇ36¦C @  Ö!m ?d pÖÇÃI\: @  Ö"n ?d °ÖÇã¼^Ä @  Ö#o ?d ðÖǦà @  Ö$p ?d 0×ÇÍî+ @  Ö%q ?d p×Ç=‘ëR @  Ö&r ?d °×Çdé¬ @  Ö's ?d ð×ÇÅ÷ @  Ö(t ?d 0ØÇ!:ƒê @  Ö)u ?d pØÇÑEy“ @  Ö*v ?d °ØÇñ°{m @  Ö+w ?d ðØÇjúÚ† @  Ö,x ?d 0ÙǺ²Vn @  Ö-y ?d pÙÇJͬ @  Ö.z ?d °ÙÇj8®é @  Ö/{ ?d ðÙÇÏ8vR @  Ö0| ?d 0ÚÇR|Ö“ @  Ö1} ?d pÚÇ¢,ê @  Ö2~ ?d °ÚÇ‚ö. @  Ö3 ?d ðÚÇ Í•L @  Ö4€ ?d 0ÛÇÜ…¤ @  Ö5 ?d pÛÇ,úãÝ @  Ö6‚ ?d °ÛÇ á# @  Ö7ƒ ?d ðÛÇ®x @  Ö8„ ?d 0ÜÇàôw @  Ö9… ?d pÜÇíŸ @  Ö:† ?d °ÜÇÍj ð @  Ö;‡ ?d ðÜÇV ­ @  Ö<ˆ ?d 0Ýdžh!ó @  Ö=‰ ?d pÝÇvÛŠ @  Ö>Š ?d °ÝÇVâÙt @  Ö?‹ ?d ðÝÇLã í @  Ö@Œ ?d 0ÞÇѧ€, @  ÖA ?d pÞÇ!ØzU @  ÖBŽ ?d °ÞÇ-x« @  ÖC ?d ðÞÇÿ7»¬ @  ÖD ?d 0ßÇ/7D @  ÖE‘ ?d pßÇßÍ= @  ÖF’ ?d uÐàÇ/°ßÇÿõÏà @  ÖG“ ?d ðßÇŠÔZä @  ÖH€” ?d HàÇ“p @  ÖI€• ?d ˆàÇÁkëK @  ÖJ€– ?d ÈàÇCúü• @  ÖK€— ?d áÇŠiÆH @  ÖL€˜ ?d HáÇøÑ– @  ÖM€™ ?d ˆáÇZã>Ï @  ÖN€š ?d ÈáÇØr) @  ÖO€› ?d âÇb§Fµ @  ÖP€œ ?d HâÇà6Qk @  ÖQ€ ?d ˆâDz-¾2 @  ÖR€ž ?d ÈâÇ0¼©ì @  ÖS€Ÿ ?d ãÇÈÈ @  ÖT€  ?d HãǃYßß @  ÖU€¡ ?d ˆãÇÑB0† @  ÖV€¢ ?d ÈãÇSÓ'X @  ÖW€£ ?d äÇÀ­%Ò @  ÖX€¤ ?d HäÇB<2  @  ÖY€¥ ?d ˆäÇ'ÝU @  ÖZ€¦ ?d ÈäÇ’¶Ê‹ @  Ö[€§ ?d åÇ[%ðV @  Ö\€¨ ?d HåÇÙ´çˆ @  Ö]€© ?d ˆåÇ‹¯Ñ @  Ö^€ª ?d ÈåÇ > @  Ö_€« ?d æÇ¢íW @  Ö`€¬ ?d HæÇ |@Å @  Öa€­ ?d ˆæÇrg¯œ @  Öb€® ?d ÈæÇðö¸B @  Öc€¯ ?d çÇ\5às @  Öd€° ?d HçÇÞ¤÷­ @  Öe€± ?d ˆçÇŒ¿ô @  Öf€² ?d ÈçÇ.* @  Ög€³ ?d èǰár² @  Öh€´ ?d HèÇ2pel @  Öi€µ ?d ˆèÇ`kŠ5 @  Öj€¶ ?d ÈèÇâúë @  Ök€· ?d éÇ+i§6 @  Öl€¸ ?d HéÇ©ø°è @  Öm€¹ ?d ˆéÇûã_± @  Ön€º ?d ÈéÇyrHo @  Öo€» ?d êÇç'Ë @  Öp€¼ ?d HêÇA60 @  Öq€½ ?d ˆêÇ-ßL @  Ör€¾ ?d ÈêÇ‘¼È’ @  Ös€¿ ?d ëÇP˜¼n @  Öt€À ?d HëÇÒ «° @  Öu€Á ?d ˆëÇ€Dé @  Öv€ ?d ÈëǃS7 @  Öw€à?d ìÇ‘ýQ½ @  Öx€Ä ?d HìÇlFc @  Öy€Å ?d ˆìÇAw©: @  Öz€Æ ?d ÈìÇÃæ¾ä @  Ö{€Ç ?d íÇ u„9 @  Ö|€È ?d HíLjä“ç @  Ö}€É ?d ˆíÇÚÿ|¾ @  Ö~€Ê ?d ÈíÇXnk` @  Ö€Ë ?d îǾì× @  Ö€€Ì ?d HîÇ<}  @  Ö€Í ?d ˆîÇnfíP @  Ö‚€Π?d ÈîÇì÷úŽ @  Öƒ€Ï ?d ïÇ@4¢¿ @  Ö„€Р?d HïÇÂ¥µa @  Ö…€Ñ ?d ˆïǾZ8 @  Ö†€Ò ?d ÈïÇ/Mæ @  Ö‡€Ó ?d ðÇ&ÁÑ @  Öˆ€Ô ?d HðǤP @  Ö‰€Õ ?d ˆðÇöKøV @  ÖŠ€Ö ?d ÈðÇtÚïˆ @  Ö‹€× ?d ñǽIÕU @  ÖŒ€Ø ?d HñÇ?ØÂ‹ @  Ö€Ù ?d ˆñÇmÃ-Ò @  ÖŽ€Ú ?d ÈñÇïR:  @  Ö€Û ?d òÇU‡U¨ @  Ö€Ü ?d HòÇ×Bv @  Ö‘€Ý ?d ˆòÇ… ­/ @  Ö’€Þ ?d ÈòÇœºñ @  Ö“€ß ?d óÇ6èÛ @  Ö”€à ?d HóÇ´yÌ @  Ö•€á ?d ˆóÇæb#› @  Ö–€â ?d ÈóÇdó4E @  Ö—€ã ?d ôÇ÷6Ï @  Ö˜€ä ?d HôÇu! @  Ö™€å ?d ˆôÇ'ÎH @  Öš€æ ?d ÈôÇ¥–Ù– @  Ö›€ç ?d õÇlãK @  Öœ€è ?d HõÇî”ô• @  Ö€é ?d ˆõÇ¼Ì @  Öž€ê ?d ÈõÇ>  @  ÖŸ€ë ?d öÇ•ÍD @  Ö €ì ?d HöÇ\SØ @  Ö¡€í ?d ˆöÇEG¼ @  Ö¢€î ?d ÈöÇÇÖ«_ @  Ö£€ï ?d ÷Çkón @  Ö¤€ð ?d H÷Çé„ä° @  Ö¥€ñ ?d ˆ÷Ç»Ÿ é @  Ö¦€ò ?d È÷Ç97 @  Ö§€ó ?d øÇ‡Áa¯ @  Ö¨€ô ?d HøÇPvq @  Ö©€õ ?d ˆøÇWK™( @  Öª€ö ?d ÈøÇÕÚŽö @  Ö«€÷ ?d ùÇI´+ @  Ö¬€ø ?d HùǞأõ @  Ö­€ù ?d ˆùÇÌÃL¬ @  Ö®€ú ?d ÈùÇNR[r @  Ö¯€û ?d úÇô‡4Ö @  Ö°€ü ?d HúÇv# @  Ö±€ý ?d ˆúÇ$ ÌQ @  Ö²€þ ?d ÈúǦœÛ @  Ö³€ÿ ?d ûÇ®í @  Ö´€¡?d HûLJˆ¹3 @  Öµ€¡?d ˆûÇÕ“Vj @  Ö¶€¡?d ÈûÇWA´ @  Ö·€¡?d üÇÄ|C> @  Ö¸€¡?d HüÇFíTà @  Ö¹€¡?d ˆüÇö»¹ @  Öº€¡?d ÈüÇ–g¬g @  Ö»€¡?d ýÇ_ô–º @  Ö¼€¡?d HýÇÝed @  Ö½€ ¡?d ˆýÇ~n= @  Ö¾€ ¡?d ÈýÇ ïyã @  Ö¿€ ¡?d þÇ;7e @  ÖÀ€ ¡?d HþÇŠª » @  ÖÁ€ ¡?d ˆþÇرÏâ @  Ö€¡?d ÈþÇZ Ø< @  ÖÀ¡?d ÿÇö〠 @  ÖÄ€¡?d HÿÇtr—Ó @  ÖÅ€¡?d ˆÿÇ&ixŠ @  ÖÆ€uÐÈ¡?d ÈÿÇÙx( @  ÖÇ¡?d Èêœå~ @  ÖÈ¡?d `Èh ò  @  ÖÉ¡?d  È:ù @  ÖÊ¡?d àȸ‡ ' @  ÖË¡?d Èq0ú @  ÖÌ¡?d `Èó…'$ @  ÖÍ¡?d  È¡žÈ} @  ÖΡ?d àÈá¦8v @  ÖÏ¡?d È[sWÒ @  ÖС?d `ÈÙâ@  @  ÖÑ¡?d  È‹ù¯U @  ÖÒ¡?d àÈ h¸‹ @  ÖÓ¡?d È8Ùf @  ÖÔ ¡?d `Ⱥθ @  ÖÕ!¡?d  Èè–!á @  ÖÖ"¡?d àÈj6? @  Ö×#¡?d Èùy4µ @  ÖØ$¡?d `È{è#k @  ÖÙ%¡?d  È)óÌ2 @  ÖÚ&¡?d àÈ«bÛì @  ÖÛ'¡?d Èbñá1 @  ÖÜ(¡?d `Èà`öï @  ÖÝ)¡?d  È²{¶ @  ÖÞ*¡?d àÈ0êh @  Öß+¡?d È›9F| @  Öà,¡?d `ȨQ¢ @  Öá-¡?d  ÈK³¾û @  Öâ.¡?d€ àȽᵃ @  ×/¡?d Èðc¥› @  ×0¡?d `Èrò²E @  ×1¡?d  Èå ¦ñ @  ×2¡?d àÈg1±/ @  ×3¡?d ÈL“Í @  ×4¡?d `ȕ݄ @  ×5¡?d  È t40 @  ×6¡?d àÈ‹å#î @  × 7¡?d ȇ?âÞ @  × 8¡?d ` È®õ @  × 9¡?d   È’üá´ @  × :¡?d à Èmöj @  × ;¡?d ÈÉ«øT @  ×<¡?d ` ÈK:ïŠ @  ×=¡?d   Èz2aI @  ×>¡?d à Èø£v— @  ×?¡?d ÈüÎù† @  ×@¡?d ` È~_îX @  ×A¡?d   Èé úì @  ×B¡?d à Èkœí2 @  ×C¡?d È6P°Â @  ×D¡?d ` È´Á§ @  ×E¡?d   È(h? @  ×F¡?d à Ȫùá @  ×G¡?d Ȧ#ÁÑ @  ×H¡?d ` È$²Ö @  ×I¡?d   ȳ໠@  ×J¡?d à È1qÕe @  ×K¡?d Èè·Û[ @  ×L¡?d `Èj&Ì… @  ×M¡?d  ÈJ(eö @  × N¡?d àÈȹr( @  ×!O¡?d È¡3Ñô @  ×"P¡?d `È#¢Æ* @  ×#Q¡?d  È´ðÒž @  ×$R¡?d àÈ6aÅ@ @  ×%S¡?d ÈÌ=×  @  ×&T¡?d `ÈN¬ÀÓ @  ×'U¡?d  ÈÒpð @  ×(V¡?d àÈP”g. @  ×)W¡?d È\N¦ @  ×*X¡?d `ÈÞß±À @  ×+Y¡?d  ÈI¥t @  ×,Z¡?d àÈ˲ª @  ×-[¡?d ÈÚ¼” @  ×.\¡?d `ÈK«J @  ×/]¡?d  È¡C%‰ @  ×0^¡?d àÈ#Ò2W @  ×1_¡?d È×ï¨W @  ×2`¡?d `ÈU~¿‰ @  ×3a¡?d  ÈÂ,«= @  ×4b¡?d àÈ@½¼ã @  ×5c¡?d Èqá @  ×6d¡?d `ÈŸàöÍ @  ×7e¡?d  ÈIFî @  ×8f¡?d àÈØQ0 @  ×9g¡?d È @  ×:h¡?d `È“‡Þ @  ×;i¡?d  È˜Á“j @  ×<j¡?d àÈP„´ @  ×=k¡?d ÈÃ–ŠŠ @  ×>l¡?d `ÈAT @  ×?m¡?d  ÈÏ2µ @  ×@n¡?d àÈMŸ%k @  ×Ao¡?d È$†· @  ×Bp¡?d `Ȧ„‘i @  ×Cq¡?d  È1Ö…Ý @  ×Dr¡?d àȳG’ @  ×Es¡?d ÈÃ:°á @  ×Ft¡?d `ÈA«§? @  ×Gu¡?d  ÈÝ @  ×Hv¡?d àÈ_“ @  ×Iw¡?d ÈSIÁò @  ×Jx¡?d `ÈÑØÖ, @  ×Ky¡?d  ÈFŠÂ˜ @  ×Lz¡?d àÈÄÕF @  ×M{¡?d ÈÝÛx @  ×N|¡?d `ÈŸL̦ @  ×O}¡?d  È®DBe @  ×P~¡?d àÈ,ÕU» @  ×Q¡?d È5~Ž8 @  ×R€¡?d `È·ï™æ @  ×S¡?d  È ½R @  ×T‚¡?d àÈ¢,šŒ @  ×Uƒ¡?d ÈÿàÇ| @  ×V„¡?d `È}qТ @  ×W…¡?d  ÈáØ` @  ×X†¡?d àÈcIw_ @  ×Y‡¡?d Èo“¶o @  ×Zˆ¡?d `Èí¡± @  ×[‰¡?d  ÈzPµ @  ×\Š¡?d àÈøÁ¢Û @  ×]‹¡?d È!¬å @  ×^Œ¡?d `È£–»; @  ×_¡?d  Èƒ˜H @  ×`Ž¡?d àÈ – @  ×a¡?d Èhƒ¦J @  ×b¡?d `Èê±” @  ×c‘¡?d  È}@¥ uÐ È @  ×d’¡?d àÈ¿‰þ @  ×e “¡?d 8 È16ùg @  ×f ”¡?d x ȳ§î¹ @  ×g •¡?d ¸ È/^š @  ×h –¡?d ø È­ŸID @  ×i —¡?d 8!È¡Eˆt @  ×j ˜¡?d x!È#ÔŸª @  ×k ™¡?d ¸!È´†‹ @  ×l š¡?d ø!È6œÀ @  ×m ›¡?d 8"ÈïÑ’þ @  ×n œ¡?d x"Èm@…  @  ×o ¡?d ¸"È\H ã @  ×p ž¡?d ø"ÈÞÙ= @  ×q Ÿ¡?d 8#È*ä†= @  ×r  ¡?d x#Ȩu‘ã @  ×s ¡¡?d ¸#È?'…W @  ×t ¢¡?d ø#Ƚ¶’‰ @  ×u £¡?d 8$ÈàzÏy @  ×v ¤¡?d x$ÈbëØ§ @  ×w ¥¡?d ¸$ÈþBh„ @  ×x ¦¡?d ø$È|ÓZ @  ×y §¡?d 8%Èp ¾j @  ×z ¨¡?d x%Èò˜©´ @  ×{ ©¡?d ¸%Èeʽ @  ×| ª¡?d ø%Èç[ªÞ @  ×} «¡?d 8&È>¤à @  ×~ ¬¡?d x&ȼ ³> @  × ­¡?d ¸&ÈÑS,î @  ×€ ®¡?d ø&ÈSÂ;0 @  × ¯¡?d 8'È:H˜ì @  ×‚ °¡?d x'ȸÙ2 @  ×ƒ ±¡?d ¸'È/‹›† @  ×„ ²¡?d ø'È­ŒX @  ×… ³¡?d 8(ÈÝg®º @  ×† ´¡?d x(È_ö¹d @  ×‡ µ¡?d ¸(ÈÃ_ G @  ×ˆ ¶¡?d ø(ÈAΙ @  ×‰ ·¡?d 8)ÈMß© @  ×Š ¸¡?d x)ÈÏ…Èw @  ×‹ ¹¡?d ¸)ÈX×Üà @  ×Œ º¡?d ø)ÈÚFË @  × »¡?d 8*È€Å# @  ×Ž ¼¡?d x*ÈÒý @  × ½¡?d ¸*Ȱ\> @  × ¾¡?d ø*È2ˆKà @  ×‘ ¿¡?d 8+È6åÄñ @  ×’ À¡?d x+È´tÓ/ @  ×“ Á¡?d ¸+È#&Ç› @  ×” ¡?d ø+È¡·ÐE @  ×• á?d 8,Èü{µ @  ×– Ä¡?d x,È~êšk @  ×— Å¡?d ¸,ÈâC*H @  ×˜ Æ¡?d ø,È`Ò=– @  ×™ Ç¡?d 8-Èlü¦ @  ×š È¡?d x-Èî™ëx @  ×› É¡?d ¸-ÈyËÿÌ @  ×œ Ê¡?d ø-ÈûZè @  × Ë¡?d 8.È"œæ, @  ×ž Ì¡?d x.È  ñò @  ×Ÿ Í¡?d ¸.È€X @  ×  Ρ?d ø.È’O_ @  ×¡ Ï¡?d 8/Èkìƒ @  ×¢ С?d x/Èé‰û] @  ×£ Ñ¡?d ¸/È~Ûïé @  ×¤ Ò¡?d ø/ÈüJø7 @  ×¥ Ó¡?d 80Èêz @  ×¦ Ô¡?d x0È„‡ý¤ @  ×§ Õ¡?d ¸0È.M‡ @  ×¨ Ö¡?d ø0Èš¿ZY @  ×© ס?d 81È–e›i @  ×ª Ø¡?d x1ÈôŒ· @  ×« Ù¡?d ¸1ȃ¦˜ @  ×¬ Ú¡?d ø1È7Ý @  ×­ Û¡?d 82ÈØñã @  ×® Ü¡?d x2ÈZ`–= @  ×¯ Ý¡?d ¸2Èkhþ @  ×° Þ¡?d ø2Èéù  @  ×± ß¡?d 83ÈÄ•  @  ×² à¡?d x3ÈŸU‚þ @  ×³ á¡?d ¸3È–J @  ×´ â¡?d ø3ÈŠ–” @  ×µ ã¡?d 84È×ZÜd @  ×¶ ä¡?d x4ÈUË˺ @  ×· å¡?d ¸4ÈÉb{™ @  ×¸ æ¡?d ø4ÈKólG @  ×¹ ç¡?d 85ÈG)­w @  ×º è¡?d x5ÈŸº© @  ×» é¡?d ¸5ÈRê® @  ×¼ ê¡?d ø5ÈÐ{¹Ã @  ×½ ë¡?d 86È ½·ý @  ×¾ ì¡?d x6È‹, # @  ×¿ í¡?d ¸6È% @  ×À î¡?d ø6ȇ´ @  ×Á ï¡?d 87Èî>»À @  × ð¡?d x7Èl¯¬ @  ×à ñ¡?d ¸7Èûý¸ª @  ×Ä ò¡?d ø7Èyl¯t @  ×Å ó¡?d 88È – @  ×Æ ô¡?d x8È‹€šH @  ×Ç õ¡?d ¸8È)*k @  ×È ö¡?d ø8È•¸=µ @  ×É ÷¡?d 89È™bü… @  ×Ê ø¡?d x9Èóë[ @  ×Ë ù¡?d ¸9ÈŒ¡ÿï @  ×Ì ú¡?d ø9È0è1 @  ×Í û¡?d 8:È×öæ @  ×Î ü¡?d x:ÈUgñÑ @  ×Ï ý¡?d ¸:Èdo @  ×Ð þ¡?d ø:ÈæþhÌ @  ×Ñ ÿ¡?d 8;È2Óf @  ×Ò ¢?d x;Ȱĸ @  ×Ó ¢?d ¸;È'ÓÐ  @  ×Ô ¢?d ø;È¥BÇÒ @  ×Õ ¢?d 8<ÈøŽš" @  ×Ö ¢?d x<Èzü @  ×× ¢?d ¸<Èæ¶=ß @  ×Ø ¢?d ø<Èd'* @  ×Ù ¢?d 8=Èhýë1 @  ×Ú ¢?d x=Èêlüï @  ×Û  ¢?d ¸=È}>è[ @  ×Ü  ¢?d ø=Èÿ¯ÿ… @  ×Ý  ¢?d 8>È&iñ» @  ×Þ  ¢?d x>Ȥøæe @  ×ß  ¢?d ¸>È„öO @  ×à ¢?d ø>ÈgXÈ @  ×á ¢?d 8?Èoíû @  ×â ¢?d€ x?ÈÅæø˜ @  Ø ¢?duÐ@È7 ¸?ȳõ¤ @  Ø ¢?d ø?È£o @  Ø¢?d P@ÈJÄ€  @  Ø¢?d @Èj1‚Þ @  Ø¢?d Ð@ÈšNx§ @  Ø¢?d AÈJôO @  Ø¢?d PAÈÚ·ñ3 @  Ø¢?d AÈúBóÍ @  Ø ¢?d ÐAÈ = ´ @  Ø ¢?d BÈ—y©u @  Ø ¢?d PBÈ”#ë¹ @  Ø ¢?d BÈ´ÖéG @  Ø ¢?d ÐBÈD©> @  Ø¢?d CÈ”áŸÖ @  Ø¢?d PCÈQÿz @  Ø ¢?d CÈqãý„ @  Ø!¢?d ÐCÈœý @  Ø"¢?d DȘÒôò @  Ø#¢?d PDÈ›ˆ¶> @  Ø$¢?d DÈ»}´À @  Ø%¢?d ÐDÈKN¹ @  Ø&¢?d EÈ›JÂQ @  Ø'¢?d PEÈ ûÇ- @  Ø(¢?d EÈ+ÅÓ @  Ø)¢?d ÐEÈÛq?ª @  Ø*¢?d FÈF5Ÿk @  Ø+¢?d PFÈEoݧ @  Ø,¢?d FÈešßY @  Ø-¢?d ÐFÈ•å%  @  Ø.¢?d GÈE­©È @  Ø/¢?d PGÈ ë× @  Ø 0¢?d GÈ,Õö @  Ø!1¢?d ÐGÈÜa/ @  Ø"2¢?d HÈ螣’ @  Ø#3¢?d PHÈëÄá^ @  Ø$4¢?d HÈË1ã  @  Ø%5¢?d ÐHÈ;NÙ @  Ø&6¢?d IÈë•1 @  Ø'7¢?d PIÈ{·M @  Ø(8¢?d IÈ[B’³ @  Ø)9¢?d ÐIÈ«=hÊ @  Ø*:¢?d JÈ6yÈ  @  Ø+;¢?d PJÈ5#ŠÇ @  Ø,<¢?d JÈÖˆ9 @  Ø-=¢?d ÐJÈå©r@ @  Ø.>¢?d KÈ5áþ¨ @  Ø/?¢?d PKÈF‹ @  Ø0@¢?d KÈ ³‰ë @  Ø1A¢?d ÐKÈÐÌs’ @  Ø2B¢?d LÈÉ‚€ @  Ø3C¢?d PLÈÊØÂQ @  Ø4D¢?d LÈê-À¯ @  Ø5E¢?d ÐLÈR:Ö @  Ø6F¢?d MÈʶ> @  Ø7G¢?d PMÈZ«³B @  Ø8H¢?d MÈz^±¼ @  Ø9I¢?d ÐMÈŠ!KÅ @  Ø:J¢?d NÈeë @  Ø;K¢?d PNÈ?©È @  Ø<L¢?d NÈ4Ê«6 @  Ø=M¢?d ÐNÈĵQO @  Ø>N¢?d OÈýݧ @  Ø?O¢?d POÈó¼¥õ @  Ø@P¢?d OÈÓI§  @  ØAQ¢?d ÐOÈ#6]r @  ØBR¢?d PÈèáÀ @  ØCS¢?d PPÈž²£  @  ØDT¢?d PȾG¡ò @  ØEU¢?d ÐPÈN8[‹ @  ØFV¢?d QÈžp×c @  ØGW¢?d PQÈÁÒ @  ØHX¢?d QÈ.4Ðá @  ØIY¢?d ÐQÈÞK*˜ @  ØJZ¢?d RÈCŠY @  ØK[¢?d PRÈ@UÈ• @  ØL\¢?d RÈ` Êk @  ØM]¢?d ÐRÈß0 @  ØN^¢?d SÈ@—¼ú @  ØO_¢?d PSÈ…`ÜV @  ØP`¢?d SÈ¥•Þ¨ @  ØQa¢?d ÐSÈUê$Ñ @  ØRb¢?d TÈL¤×Þ @  ØSc¢?d PTÈOþ• @  ØTd¢?d TÈo —ì @  ØUe¢?d ÐTÈŸtm• @  ØVf¢?d UÈO<á} @  ØWg¢?d PUÈßä @  ØXh¢?d UÈÿxæÿ @  ØYi¢?d ÐUȆ @  ØZj¢?d VÈ’C¼G @  Ø[k¢?d PVÈ‘þ‹ @  Ø\l¢?d Vȱìüu @  Ø]m¢?d ÐVÈA“  @  Ø^n¢?d Wȑۊä @  Ø_o¢?d PWÈØô$ @  Ø`p¢?d WÈøhöÚ @  Øaq¢?d ÐWÈ £ @  Øbr¢?d XÈ<耾 @  Øcs¢?d PXÈ?²Âr @  Ødt¢?d XÈGÀŒ @  Øeu¢?d ÐXÈï8:õ @  Øfv¢?d YÈ?p¶ @  Øgw¢?d PYȯÁ³a @  Øhx¢?d YÈ4±Ÿ @  Øiy¢?d ÐYÈKKæ @  Øjz¢?d ZÈâë' @  Øk{¢?d PZÈáU©ë @  Øl|¢?d ZÈÁ « @  Øm}¢?d ÐZÈ1ßQl @  Øn~¢?d [Èá—Ý„ @  Øo¢?d P[ÈÉöü« @  Øp€¢?d [ÈéþU @  Øq¢?d Ð[È|, @  Ør‚¢?d \È2÷# @  Øsƒ¢?d P\Èhµï @  Øt„¢?d \È#· @  Øu…¢?d Ð\ÈÓâMh @  Øv†¢?d ]ȪÁ€ @  Øw‡¢?d P]È“Äü @  Øxˆ¢?d ]È³îÆ @  Øy‰¢?d Ð]ÈC‘<{ @  ØzŠ¢?d ^ÈÞÕœº @  Ø{‹¢?d P^ÈÝÞv @  Ø|Œ¢?d ^Èýz܈ @  Ø}¢?d Ð^È &ñ @  Ø~Ž¢?d _ÈÝMª @  Ø¢?d P_ÈÙZâz @  Ø€¢?d _Èù¯à„ @  ØuÐ`È‘¢?d Ð_È Ðý @  Ø‚’¢?d (`È·(¯e @  Øƒ“¢?d h`È´rí© @  Ø„”¢?d ¨`È”‡ïW @  Ø…•¢?d è`Èdø. @  Ø†–¢?d (aÈ´°™Æ @  Ø‡—¢?d haÈ$œº @  Øˆ˜¢?d ¨aÈôžD @  Ø‰™¢?d èaÈô‹d= @  ØŠš¢?d (bÈiÏÄü @  Ø‹›¢?d hbÈj•†0 @  ØŒœ¢?d ¨bÈJ`„Î @  Ø¢?d èbȺ~· @  ØŽž¢?d (cÈjWò_ @  ØŸ¢?d hcȯ ’ó @  Ø ¢?d ¨cÈU  @  Ø‘¡¢?d ècÈ*jt @  Ø’¢¢?d (dÈfd™{ @  Ø“£¢?d hdÈe>Û· @  Ø”¤¢?d ¨dÈEËÙI @  Ø•¥¢?d èdȵ´#0 @  Ø–¦¢?d (eÈeü¯Ø @  Ø—§¢?d heÈõMª¤ @  Ø˜¨¢?d ¨eÈÕ¸¨Z @  Ø™©¢?d èeÈ%ÇR# @  Øšª¢?d (fȸƒòâ @  Ø›«¢?d hfȻٰ. @  Øœ¬¢?d ¨fÈ›,²Ð @  Ø­¢?d èfÈkSH© @  Øž®¢?d (gÈ»ÄA @  ØŸ¯¢?d hgÈò]º @  Ø °¢?d ¨gÈÒ¨¸ @  Ø¡±¢?d ègÈ"×B @  Ø¢²¢?d (hÈ(Î @  Ø£³¢?d hhÈrŒ× @  Ø¤´¢?d ¨hÈ5‡Ž) @  Ø¥µ¢?d èhÈÅøtP @  Ø¦¶¢?d (iȰø¸ @  Ø§·¢?d hiÈ…ýÄ @  Ø¨¸¢?d ¨iÈ¥ôÿ: @  Ø©¹¢?d èiÈU‹C @  Øªº¢?d (jÈÈÏ¥‚ @  Ø«»¢?d hjÈË•çN @  Ø¬¼¢?d ¨jÈë`å° @  Ø­½¢?d èjÈÉ @  Ø®¾¢?d (kÈËW“! @  Ø¯¿¢?d hkÈþðæœ @  Ø°À¢?d ¨kÈÞäb @  Ø±Á¢?d èkÈ.z @  Ø²¢?d (lÈ74í @  Ø³â?d hlÈ4n¯Ø @  Ø´Ä¢?d ¨lÈ›­& @  ØµÅ¢?d èlÈääW_ @  Ø¶Æ¢?d (mÈ4¬Û· @  Ø·Ç¢?d hmȤÞË @  Ø¸È¢?d ¨mÈ„èÜ5 @  Ø¹É¢?d èmÈt—&L @  ØºÊ¢?d (nÈéÓ† @  Ø»Ë¢?d hnÈê‰ÄA @  Ø¼Ì¢?d ¨nÈÊ|Æ¿ @  Ø½Í¢?d ènÈ:<Æ @  Ø¾΢?d (oÈêK°. @  Ø¿Ï¢?d hoÈ È| @  ØÀТ?d ¨oÈ-ÿÊ‚ @  ØÁÑ¢?d èoÈÝ€0û @  ØÂÒ¢?d (pÈc^ŒI @  ØÃÓ¢?d hpÈ`Î… @  ØÄÔ¢?d ¨pÈ@ñÌ{ @  ØÅÕ¢?d èpȰŽ6 @  ØÆÖ¢?d (qÈ`ƺê @  ØÇ×¢?d hqÈðw¿– @  ØÈØ¢?d ¨qÈЂ½h @  ØÉÙ¢?d èqÈ ýG @  ØÊÚ¢?d (rȽ¹çÐ @  ØËÛ¢?d hrȾ㥠@  ØÌÜ¢?d ¨rÈž§â @  ØÍÝ¢?d èrÈni]› @  ØÎÞ¢?d (sȾ!Ñs @  ØÏߢ?d hsÈ{Ö±ß @  ØÐà¢?d ¨sÈ[#³! @  ØÑá¢?d èsÈ«\IX @  ØÒâ¢?d (tȲºW @  ØÓã¢?d htȱHø› @  ØÔä¢?d ¨tÈ‘½úe @  ØÕå¢?d ètÈa @  ØÖæ¢?d (uÈ±ŠŒô @  Ø×ç¢?d huÈ!;‰ˆ @  ØØè¢?d ¨uÈ΋v @  ØÙé¢?d èuÈñ±q @  ØÚê¢?d (vÈlõÑÎ @  ØÛë¢?d hvÈo¯“ @  ØÜì¢?d ¨vÈOZ‘ü @  ØÝí¢?d èvÈ¿%k… @  ØÞî¢?d (wÈomçm @  Øßï¢?d hwÈ&+™­ @  Øàð¢?d ¨wÈÞ›S @  Øáñ¢?d èwÈö¡a* @  Øâò¢?d€ (xȶñ‘ @  Ùó¢?d hxÈT†ût @  Ùô¢?d ¨xÈtsùŠ @  Ùõ¢?d èxÈAEø @  Ùö¢?d (yÈ‘ tö @  Ù÷¢?d hyÈÏ.ð @  Ùø¢?d ¨yÈïû, @  Ùù¢?d èyÈÑ6‰  @  Ùú¢?d (zÈLr)Ì @  Ù û¢?d hzÈŠaí @  Ù ü¢?d ¨zȪ”’ @  Ù ý¢?d èzÈŸ¢“‡ @  Ù þ¢?d ({ÈOêo @  Ù ÿ¢?d h{È{ÿ Ö @  Ù£?d ¨{È[ ( @  Ù£?d è{ÈÈf“Ë @  Ù£?d (|ÈÑ(`Ä @  Ù£?d h|È;Ùå @  Ù£?d ¨|È7ÎÛ @  Ù£?d è|ÈøÚ @  Ù£?d (}ÈÒ°Vg @  Ù£?d h}ÈŒ³ a @  Ù£?d ¨}ȬFŸ @  Ù £?d è}È’‹«œ @  Ù £?d (~ÈÏ ] @  Ù £?d h~ÈÉܲ| @  Ù £?d ¨~Èé)°‚ @  Ù £?d è~Èܱ @  Ù£?d (È W=þ @  Ù£?d hÈ7 @  Ù£?d ¨ÈuЀÈ'ñê @  Ù£?d èÈ•›»¹ @  Ù £?d @€Èû%YÍ @  Ù!£?d €€ÈŸRõÌ @  Ù"£?d À€ÈÃâ @  Ù#£?d Èz,x° @  Ù$£?d @Èø½on @  Ù%£?d €ÈÚ H @  Ù&£?d ÀȆK7– @  Ù'£?d ‚ȧS%Š @  Ù(£?d @‚È%Â2T @  Ù)£?d €‚ÈAµžU @  Ù*£?d À‚ÈÃ$‰‹ @  Ù+£?d ƒÈ¤Ë) @  Ù,£?d @ƒÈ&Z÷ @  Ù-£?d €ƒÈ"Úá @  Ù. £?d ÀƒÈ K? @  Ù/!£?d „Ȩøx  @  Ù0"£?d @„È*ioÓ @  Ù1#£?d €„ÈNÃÒ @  Ù2$£?d À„ÈÌÔ  @  Ù3%£?d …È«`N® @  Ù4&£?d @…È)ñYp @  Ù5'£?d €…ÈÕ–V @  Ù6(£?d À…ÈWˆ @  Ù7)£?d †Èv” @  Ù8*£?d @†ÈôŽJ @  Ù9+£?d €†Èù¨K @  Ù:,£?d À†Èh¿• @  Ù;-£?d ‡Èu‡%7 @  Ù<.£?d @‡È÷2é @  Ù=/£?d €‡Èn!# @  Ù>0£?d À‡Èì°ý @  Ù?1£?d ˆÈv³)ÿ @  Ù@2£?d @ˆÈô">! @  ÙA3£?d €ˆÈU’  @  ÙB4£?d ÀˆÈÄ…þ @  ÙC5£?d ‰Èu+\ @  ÙD6£?d @‰È÷º‚ @  ÙE7£?d €‰È ÝG¤ @  ÙF8£?d À‰È‰LPz @  ÙG9£?d ŠÈ¨TBf @  ÙH:£?d @ŠÈ*ÅU¸ @  ÙI;£?d €ŠÈN²ù¹ @  ÙJ<£?d ÀŠÈÌ#îg @  ÙK=£?d ‹È«ÌtÅ @  ÙL>£?d @‹È)]c @  ÙM?£?d €‹ÈÝb @  ÙN@£?d À‹È_u @  ÙOA£?d ŒÈW¯ ð @  ÙPB£?d @ŒÈÕ>. @  ÙQC£?d €ŒÈ±I±/ @  ÙRD£?d ÀŒÈ3ئñ @  ÙSE£?d ÈT7 @  ÙcU£?d ‘È®Z[œ @  ÙdV£?d @‘È,ËLB @  ÙeW£?d €‘ÈЬd @  ÙfX£?d À‘ÈR=º @  ÙgY£?d ’Ès%¦ @  ÙhZ£?d @’Èñ´x @  Ùi[£?d €’È•ýy @  Ùj\£?d À’ÈRª§ @  Ùk]£?d “Èp½0 @  Ùl^£?d @“Èò,'Û @  Ùm_£?d €“Èö¬3Í @  Ùn`£?d À“Èt=$ @  Ùoa£?d ”È|Ž[! @  Ùpb£?d @”ÈþLÿ @  Ùqc£?d €”Èšhàþ @  Ùrd£?d À”Èù÷  @  Ùse£?d •Èm‚ @  Ùtf£?d @•Èý‡z\ @  Ùug£?d €•Èà5z @  Ùvh£?d À•ȃq"¤ @  Ùwi£?d –È¢i0¸ @  Ùxj£?d @–È ø'f @  Ùyk£?d €–ÈD‹g @  Ùzl£?d À–ÈÆœ¹ @  Ù{m£?d —È¡ñ @  Ù|n£?d @—È#`Å @  Ù}o£?d €—ȺW< @  Ù~p£?d À—È8Æ+Ñ @  Ùq£?d ˜ÈA“:â @  Ù€r£?d @˜ÈÃ-< @  Ùs£?d €˜È§u= @  Ù‚t£?d À˜È%ä–ã @  Ùƒu£?d ™ÈB A @  Ù„v£?d @™ÈÀšŸ @  Ù…w£?d €™È<ýT¹ @  Ù†x£?d À™È¾lCg @  Ù‡y£?d šÈŸtQ{ @  Ùˆz£?d @šÈåF¥ @  Ù‰{£?d €šÈy’ê¤ @  ÙŠ|£?d ÀšÈûýz @  Ù‹}£?d ›ÈœìgØ @  ÙŒ~£?d @›È}p @  Ù£?d €›È÷k%“ @  ÙŽ€£?d À›Èuú2M @  Ù£?d œÈ}IM @  Ù‚£?d @œÈÿØZ¡ @  Ù‘ƒ£?d €œÈ›¯ö  @  Ù’„£?d ÀœÈ>á~ @  Ù“…£?d È~Ñ{Ü @  Ù”†£?d @Èü@l @  Ù•‡£?d €È'#$ @  Ù–ˆ£?d ÀÈ‚¶4ú @  Ù—‰£?d žÈ£®&æ @  Ù˜Š£?d @žÈ!?18 @  Ù™‹£?d €žÈEH9 @  ÙšŒ£?d ÀžÈÇÙŠç @  Ù›£?d ŸÈ 6E @  ÙœŽ£?d @ŸÈ"§› @  Ù£?d €ŸÈ»*Q @  Ùž£uРÈ?d ÀŸÈ9= @  ÙŸ‘£?d  Èq6”± @  Ù  ’£?d X Èó§ƒo @  Ù¡ “£?d ˜ È—Ð/n @  Ù¢ ”£?d Ø ÈA8° @  Ù£ •£?d ¡Èr®¢ @  Ù¤ –£?d X¡Èð?µÌ @  Ù¥ —£?d ˜¡È Xúê @  Ù¦ ˜£?d ءȎÉí4 @  Ù§ ™£?d ¢È¯Ñÿ( @  Ù¨ š£?d X¢È-@èö @  Ù© ›£?d ˜¢ÈI7D÷ @  Ùª œ£?d Ø¢È˦S) @  Ù« £?d £È¬IÉ‹ @  Ù¬ ž£?d X£È.ØÞU @  Ù­ Ÿ£?d ˜£È*XÊC @  Ù®  £?d أȨÉÝ @  Ù¯ ¡£?d ¤È z¢¯ @  Ù° ¢£?d X¤È"ëµq @  Ù± ££?d ˜¤ÈFœp @  Ù² ¤£?d ؤÈÄ ® @  Ù³ ¥£?d ¥È£â”  @  Ù´ ¦£?d X¥È!sƒÒ @  Ùµ §£?d ˜¥ÈÝÌô @  Ù¶ ¨£?d Ø¥È_…Û* @  Ù· ©£?d ¦È~É6 @  Ù¸ ª£?d X¦Èü Þè @  Ù¹ «£?d ˜¦È˜{ré @  Ùº ¬£?d ئÈêe7 @  Ù» ­£?d §È}ÿ• @  Ù¼ ®£?d X§Èÿ”èK @  Ù½ ¯£?d ˜§Èf£Å @  Ù¾ °£?d اÈä2Ò_ @  Ù¿ ±£?d ¨È~1ó] @  ÙÀ ²£?d X¨Èü äƒ @  ÙÁ ³£?d ˜¨È˜×H‚ @  Ù ´£?d بÈF_\ @  Ùà µ£?d ©È}©Åþ @  ÙÄ ¶£?d X©Èÿ8Ò  @  ÙÅ ·£?d ˜©È_ @  ÙÆ ¸£?d Ø©ÈΊØ @  ÙÇ ¹£?d ªÈ Ö˜Ä @  ÙÈ º£?d XªÈ"G @  ÙÉ »£?d ˜ªÈF0# @  ÙÊ ¼£?d تÈÄ¡4Å @  ÙË ½£?d «È£N®g @  ÙÌ ¾£?d X«È!ß¹¹ @  ÙÍ ¿£?d ˜«ÈÕ¸¾ @  ÙÎ À£?d Ø«ÈWž¯` @  ÙÏ Á£?d ¬È_-ÐR @  ÙÐ £?d X¬Èݼnj @  ÙÑ ã?d ˜¬È¹Ëk @  ÙÒ Ä£?d جÈ;Z|S @  ÙÓ Å£?d ­È\µæñ @  ÙÔ Æ£?d X­ÈÞ$ñ/ @  ÙÕ Ç£?d ˜­È"C¾  @  ÙÖ È£?d Ø­È Ò©× @  Ù× É£?d ®ÈÊ»Ë @  ÙØ Ê£?d X®È[¬ @  Ù٠ˣ?d ˜®Èg, @  ÙÚ Ì£?d Ø®Èå½Ê @  ÙÛ Í£?d ¯È‚Rh @  ÙÜ Σ?d X¯ÈÚ¶ @  ÙÝ Ï£?d ˜¯È™ô·| @  ÙÞ У?d دÈe ¢ @  Ùß Ñ£?d °È¥@· @  Ùà Ò£?d X°È'Ñ C @  Ùá Ó£?d ˜°ÈC¦ B @  Ùâ Ô£?d€ ذÈpìœ @  Ú Õ£?d ±È†Þ> @  Ú Ö£?d X±ÈO)É @  Ú ×£?d ˜±È=a @  Ú Ø£?d رÈ¿ðŠÜ @  Ú Ù£?d ²ÈPZǺ @  Ú Ú£?d X²ÈÒËÐd @  Ú Û£?d ˜²Èx# @  Ú Ü£?d زÈúŸ4Á @  Ú Ý£?d ³ÈX9UŽ @  Ú Þ£?d X³ÈÚ¨BP @  Ú ߣ?d ˜³Èa­« @  Ú à£?d سÈ™ðºu @  Ú á£?d ´ÈòP¤Ý @  Ú â£?d X´ÈpÁ³ @  Ú ã£?d ˜´Èw¥~˜ @  Ú ä£?d Ø´Èõ4iF @  Ú å£?d µÈW’  @  Ú æ£?d XµÈÕ× @  Ú ç£?d ˜µÈì-« @  Ú è£?d صÈn¼¼Â @  Ú é£?d ¶Èñ¤ @  Ú ê£?d X¶È‡æz @  Ú ë£?d ˜¶È©B @  Ú ì£?d ضÈ+Óß @  Ú í£?d ·È‰uc @  Ú î£?d X·È ätN @  Ú ï£?d ˜·ÈWš¢i @  Ú ð£?d Ø·ÈÕ µ· @  Ú ñ£?d ¸È“Ô  @  Ú ò£?d X¸È‹ÃÓ @  Ú ó£?d ˜¸Èé)ø @  Ú ô£?d ظÈ…x>& @  Ú! õ£?d ¹È'Þ_i @  Ú" ö£?d X¹È¥OH· @  Ú# ÷£?d ˜¹Èœaü| @  Ú$ ø£?d عÈðë¢ @  Ú% ù£?d ºÈñZ¦Ä @  Ú& ú£?d XºÈs˱ @  Ú' û£?d ˜ºÈÙBa @  Ú( ü£?d غÈ[ŸU¿ @  Ú) ý£?d »Èù94ð @  Ú* þ£?d X»È{¨#. @  Ú+ ÿ£?d ˜»È™çÌ @  Ú, ¤?d ػȖð @  Ú- ¤?d ¼Èý¨îº @  Ú. ¤?d X¼È9ùd @  Ú/ ¤?d ˜¼Èx]4ÿ @  Ú0 ¤?d ؼÈúÌ#! @  Ú1 ¤?d ½ÈXjBn @  Ú2 ¤?d X½ÈÚûU° @  Ú3 ¤?d ˜½ÈãÕá{ @  Ú4 ¤?d ؽÈaDö¥ @  Ú5  ¤?d ¾ÈŽî»Ã @  Ú6  ¤?d X¾È ¬ @  Ú7  ¤?d ˜¾È¦º_f @  Ú8  ¤?d ؾÈ$+H¸ @  Ú9  ¤?d ¿È†)÷ @  Ú: ¤?d X¿È>) @  Ú; ¤?d ˜¿ÈXbè @uÐÀÈ  Ú< ¤?d Ø¿Èã4# @  Ú=¤?d 0ÀÈõ*Ÿð @  Ú>¤?d pÀÈw»ˆ. @  Ú?¤?d °ÀÈÏÞd— @  Ú@¤?d ðÀÈMOsI @  ÚA¤?d 0ÁÈïé @  ÚB¤?d pÁÈmxØ @  ÚC¤?d °ÁÈTV± @  ÚD¤?d ðÁÈÖǦÍ @  ÚE¤?d 0ÂÈ9më« @  ÚF¤?d pÂÈ»üüu @  ÚG¤?d °ÂÈ9 @  ÚH¤?d ðÂÈ“¨Ð @  ÚI¤?d 0ÃÈ1yŸ @  ÚJ¤?d pÃȳŸnA @  ÚK¤?d °ÃÈrVº @  ÚL ¤?d ðÃÈðÇ–d @  ÚM!¤?d 0ÄÈ›gˆÌ @  ÚN"¤?d pÄÈöŸ @  ÚO#¤?d °ÄÈ’R‰ @  ÚP$¤?d ðÄÈœEW @  ÚQ%¤?d 0ÅÈ>¥$ @  ÚR&¤?d pÅȼ43Æ @  ÚS'¤?d °ÅÈ…‡  @  ÚT(¤?d ðÅÈ‹Ó @  ÚU)¤?d 0ÆÈè!ݵ @  ÚV*¤?d pÆÈj°Êk @  ÚW+¤?d °ÆÈÀu9 @  ÚX,¤?d ðÆÈBä.Î @  ÚY-¤?d 0ÇÈàBO @  ÚZ.¤?d pÇÈbÓX_ @  Ú[/¤?d °ÇÈ>­Žx @  Ú\0¤?d ðÇȼ<™¦ @  Ú]1¤?d 0ÈÈú-ø @  Ú^2¤?d pÈÈx¼ï @  Ú_3¤?d °ÈÈnÞé @  Ú`4¤?d ðÈÈìO7 @  Úa5¤?d 0ÉÈNésx @  Úb6¤?d pÉÈÌxd¦ @  Úc7¤?d °ÉÈõVÐm @  Úd8¤?d ðÉÈwÇdz @  Úe9¤?d 0ÊȘmŠÕ @  Úf:¤?d pÊÈü  @  Úg;¤?d °ÊȰ9np @  Úh<¤?d ðÊÈ2¨y® @  Úi=¤?d 0ËÈá @  Új>¤?d pËÈŸ? @  Úk?¤?d °ËÈ#õÕ @  Úl@¤?d ðËÈ¡—â  @  ÚmA¤?d 0ÌÈÊ7ü£ @  ÚnB¤?d pÌÈH¦ë} @  ÚoC¤?d °ÌÈOÂ&æ @  ÚpD¤?d ðÌÈÍS18 @  ÚqE¤?d 0ÍÈoõPw @  ÚrF¤?d pÍÈídG© @  ÚsG¤?d °ÍÈÔJób @  ÚtH¤?d ðÍÈVÛä¼ @  ÚuI¤?d 0Îȹq©Ú @  ÚvJ¤?d pÎÈ;ྠ@  ÚwK¤?d °ÎÈ‘%M @  ÚxL¤?d ðÎÈ´Z¡ @  ÚyM¤?d 0Ïȱ;î @  ÚzN¤?d pÏÈ3ƒ,0 @  Ú{O¤?d °ÏÈoýú @  Ú|P¤?d ðÏÈílíÉ @  Ú}Q¤?d 0ÐÈ!\¼Ü @  Ú~R¤?d pÐȣͫ @  ÚS¤?d °ÐÈøþwŠ @  Ú€T¤?d ðÐÈzo`T @  ÚU¤?d 0ÑÈØÉ @  Ú‚V¤?d pÑÈZXÅ @  ÚƒW¤?d °ÑÈcv¢ @  Ú„X¤?d ðÑÈáçµÐ @  Ú…Y¤?d 0ÒÈMø¶ @  Ú†Z¤?d pÒÈŒÜïh @  Ú‡[¤?d °ÒÈ& @  Úˆ\¤?d ðÒȤˆ Í @  Ú‰]¤?d 0ÓÈ.j‚ @  ÚŠ^¤?d pÓÈ„¿}\ @  Ú‹_¤?d °ÓÈEv’§ @  ÚŒ`¤?d ðÓÈÇç…y @  Úa¤?d 0ÔȬG›Ñ @  ÚŽb¤?d pÔÈ.ÖŒ @  Úc¤?d °ÔÈ)²A” @  Úd¤?d ðÔÈ«#VJ @  Ú‘e¤?d 0ÕÈ …7 @  Ú’f¤?d pÕÈ‹ Û @  Ú“g¤?d °ÕȲ:” @  Ú”h¤?d ðÕÈ0«ƒÎ @  Ú•i¤?d 0ÖÈßΨ @  Ú–j¤?d pÖÈ]Ùv @  Ú—k¤?d °ÖÈ÷U*  @  Ú˜l¤?d ðÖÈuÄ=Ó @  Ú™m¤?d 0×È×b\œ @  Úšn¤?d p×ÈUóKB @  Ú›o¤?d °×È e @  Úœp¤?d ð×È‹Š» @  Úq¤?d 0ØÈÍ ë @  Úžr¤?d pØÈOœüß @  ÚŸs¤?d °ØÈYþô @  Ú t¤?d ðØÈÛo* @  Ú¡u¤?d 0ÙÈyÉ`e @  Ú¢v¤?d pÙÈûXw» @  Ú£w¤?d °ÙÈÂvÃp @  Ú¤x¤?d ðÙÈ@çÔ® @  Ú¥y¤?d 0ÚȯM™È @  Ú¦z¤?d pÚÈ-ÜŽ @  Ú§{¤?d °Úȇ}m @  Ú¨|¤?d ðÚȈj³ @  Ú©}¤?d 0Ûȧ. ü @  Úª~¤?d pÛÈ%¿" @  Ú«¤?d °ÛÈ à²Z @  Ú¬€¤?d ðÛÈ‹q¥„ @  Ú­¤?d 0ÜÈàÑ», @  Ú®‚¤?d pÜÈb@¬ò @  Ú¯ƒ¤?d °ÜÈe$ai @  Ú°„¤?d ðÜÈçµv· @  Ú±…¤?d 0ÝÈEø @  Ú²†¤?d pÝÈÇ‚& @  Ú³‡¤?d °ÝÈþ¬´í @  Ú´ˆ¤?d ðÝÈ|=£3 @  Úµ‰¤?d 0ÞÈ“—îU @  Ú¶Ф?d pÞÈù‹ @  Ú·‹¤?d °ÞȻà ð @  Ú¸Œ¤?d ðÞÈ9R. @  Ú¹¤?d 0ßÈ›ô|a @  Úºޤ?d pßÈek¿ @  Ú»¤?d uÐàÈ/°ßÈE½˜ @  Ú¼¤?d ðßÈÇŠªF @  Ú½‘¤?d HàȬÀ @  Ú¾’¤?d ˆàÈŒ5é @  Ú¿“¤?d ÈàÈ–4âp @  ÚÀ”¤?d áÈF|n˜ @  ÚÁ•¤?d Háȶ”á @  Ú–¤?d ˆáÈ–ö– @  Úפ?d ÈáÈ ¼7ô @  Úʤ?d âÈø—5 @  ÚÅ™¤?d HâÈ`‡mL @  ÚÆš¤?d ˆâÈ@ro² @  ÚÇ›¤?d ÈâÈHÓ‰é @  ÚÈœ¤?d ãȘ› @  Úɤ?d HãÈhäÿx @  ÚÊž¤?d ˆãÈHý† @  ÚËŸ¤?d ÈãÈ+¼] @  ÚÌ ¤?d äÈ2òôR @  ÚÍ¡¤?d HäÈÂ+ @  Ú΢¤?d ˆäÈâx Õ @  ÚÏ£¤?d ÈäÈGxÔn @  ÚФ¤?d åÈ—0X† @  ÚÑ¥¤?d HåÈgO¢ÿ @  ÚÒ¦¤?d ˆåÈGº  @  ÚÓ§¤?d ÈåÈÜðê @  ÚÔ¨¤?d æÈA´¡+ @  ÚÕ©¤?d HæÈ±Ë[R @  ÚÖª¤?d ˆæÈ‘>Y¬ @  Ú׫¤?d ÈæÈ™Ÿ¿÷ @  Úج¤?d çÈI×3 @  ÚÙ­¤?d Hçȹ¨Éf @  ÚÚ®¤?d ˆçÈ™]˘ @  ÚÛ¯¤?d ÈçÈgGŸ @  Úܰ¤?d èÈS¸„‚ @  Úݱ¤?d HèÈ£Ç~û @  ÚÞ²¤?d ˆèȃ2| @  Úß³¤?d ÈèÈ74ƒ @  Úà´¤?d éÈç|æ @  Úᵤ?d HéÈõŸ @  Úⶤ?d€ ˆéÈC5ëÇ @  Û·¤?d ÈéÈ9> @  Û¸¤?d êȤz¢Ä @  Û¹¤?d HêÈ‘L£P @  Ûº¤?d ˆêȱ¹¡® @  Û»¤?d ÈêÈwª @  Û¼¤?d ëȧâ”g @  Û½¤?d HëÈ™/1d @  Û¾¤?d ˆëȹÚ3š @  Û ¿¤?d ÈëÈïn'½ @  Û À¤?d ìÈö Ô² @  Û Á¤?d HìÈÃÕ& @  Û ¤?d ˆìÈããר @  Û ä?d ÈìÈ%ðnù @  ÛĤ?d íÈõ¸â @  ÛŤ?d HíÈfÔyò @  ÛƤ?d ˆíÈF!{  @  ÛǤ?d ÈíÈ"!  @  ÛȤ?d îÈ…fË @  Ûɤ?d HîȰP€_ @  Ûʤ?d ˆîÈ¥‚¡ @  Ûˤ?d ÈîÈV¶;€ @  Ṳ̂?d ïȆþ·h @  Ûͤ?d Hïȸ3k @  ÛΤ?d ˆïȘƕ @  ÛϤ?d ÈïÈ£•( @  ÛФ?d ðÈK”Í @  ÛѤ?d HðÈ(}•Y @  ÛÒ¤?d ˆðȈ—§ @  ÛÓ¤?d ÈðÈΛ.† @  ÛÔ¤?d ñÈÓ¢n @  ÛÕ¤?d HñÈœ¹= @  Û Ö¤?d ˆñȼLà @  Û!פ?d ÈñÈâOFÅ @  Û"ؤ?d òÈ æ @  Û#Ù¤?d HòÈJ=ç @  Û$Ú¤?d ˆòÈjÈån @  Û%Û¤?d ÈòȬÛ\O @  Û&ܤ?d óÈ|“Ч @  Û'ݤ?d HóÈB^u¤ @  Û(Þ¤?d ˆóÈb«wZ @  Û)ߤ?d ÈóÈÄOvl @  Û*à¤?d ôÈÝ…c @  Û+á¤?d HôÈè7„÷ @  Û,â¤?d ˆôÈȆ  @  Û-ã¤?d ÈôÈÑ?( @  Û.ä¤?d õÈÞ™³À @  Û/å¤?d HõÈMõ(# @  Û0æ¤?d ˆõÈm*Ý @  Û1ç¤?d ÈõÈ3pÛ @  Û2è¤?d öÈ®GÐ @  Û3é¤?d HöÈ›qÑŽ @  Û4ê¤?d ˆöÈ»„Óp @  Û5ë¤?d ÈöÈ}—jQ @  Û6ì¤?d ÷È­ßæ¹ @  Û7í¤?d H÷È“Cº @  Û8î¤?d ˆ÷ȳçAD @  Û9ï¤?d È÷Ȉ´y® @  Û:ð¤?d øÈ¼Kõ³ @  Û;ñ¤?d HøÈ‰}ô' @  Û<ò¤?d ˆøÈ©ˆöÙ @  Û=ó¤?d ÈøÈo›Oø @  Û>ô¤?d ùÈ¿Óà @  Û?õ¤?d HùÈ“¾yÑ @  Û@ö¤?d ˆùȳK{/ @  ÛA÷¤?d ÈùÈíH!) @  ÛBø¤?d úÈp è @  ÛCù¤?d HúÈE:€| @  ÛDú¤?d ˆúÈeÏ‚‚ @  ÛEû¤?d ÈúÈ£Ü;£ @  ÛFü¤?d ûÈs”·K @  ÛGý¤?d HûÈMYH @  ÛHþ¤?d ˆûÈm¬¶ @  ÛIÿ¤?d ÈûÈY¹ @  ÛJ¥?d üÈ@÷ö @  ÛK¥?d HüÈuÁ÷” @  ÛL¥?d ˆüÈU4õj @  ÛM¥?d ÈüÈ“'LK @  ÛN¥?d ýÈCoÀ£ @  ÛO¥?d HýÈÐ[@ @  ÛP¥?d ˆýÈðöY¾ @  ÛQ¥?d ÈýÈ®õ¸ @  ÛR¥?d þÈ3±£y @  ÛS ¥?d Hþȇ¢í @  ÛT ¥?d ˆþÈ&r  @  ÛU ¥?d ÈþÈàa2 @  ÛV ¥?d ÿÈ0)•Ú @  ÛW ¥?d HÿÈä0Ù @  ÛX¥?d ˆÿÈ.2' @  ÛYuÐÉ¥?d ÈÿÈB Í @  ÛZ¥?d ÉZö"< @  Û[¥?d `ÉoÀ#¨ @  Û\¥?d  ÉO5!V @  Û]¥?d àɉ&˜w @  Û^¥?d ÉYnŸ @  Û_¥?d `ÉÛ¨Ì @  Û`¥?d  Éûñª2 @  Ûa¥?d àÉ¥òð4 @  Ûb¥?d É8¶Põ @  Ûc¥?d `É €Qa @  Ûd¥?d  É-uSŸ @  Ûe¥?d àÉëfê¾ @  Ûf¥?d É;.fV @  Ûg¥?d `ÉãÃU @  Ûh¥?d  É%Á« @  Ûi¥?d àɃòÀ @  Ûj ¥?d Éš¼3’ @  Ûk!¥?d `ɯŠ2 @  Ûl"¥?d  É0ø @  Ûm#¥?d àÉIl‰Ù @  Ûn$¥?d É™$1 @  Ûo%¥?d `É HžÒ @  Ûp&¥?d  É*½œ, @  Ûq'¥?d àÉt¾Æ* @  Ûr(¥?d Ééúfë @  Ûs)¥?d `ÉÜÌg @  Ût*¥?d  Éü9e @  Ûu+¥?d àÉ:*Ü  @  Ûv,¥?d ÉêbPH @  Ûw-¥?d `ÉÔ¯õK @  Ûx.¥?d  ÉôZ÷µ @  Ûy/¥?d àÉÏ Ï_ @  Ûz0¥?d ÉûöCB @  Û{1¥?d `ÉÎÀBÖ @  Û|2¥?d  Éî5@( @  Û}3¥?d àÉ(&ù  @  Û~4¥?d Éønuá @  Û5¥?d ` É7Uÿ @  Û€6¥?d   É ýï @  Û7¥?d à ÉI£§é @  Û‚8¥?d ÉÔç( @  Ûƒ9¥?d ` ÉáѼ @  Û„:¥?d   ÉÁ$B @  Û…;¥?d à É7½c @  Û†<¥?d É×1‹ @  Û‡=¥?d ` Éé²”ˆ @  Ûˆ>¥?d   ÉÉG–v @  Û‰?¥?d à ÉŸó‚Q @  ÛŠ@¥?d Ɇ½q^ @  Û‹A¥?d ` ɳ‹pÊ @  ÛŒB¥?d   É“~r4 @  ÛC¥?d à ÉUmË @  ÛŽD¥?d É…%Gý @  ÛE¥?d ` ÉIÜ @  ÛF¥?d   É6¼Þà @  Û‘G¥?d à Éh¿„æ @  Û’H¥?d Éõû$' @  Û“I¥?d `ÉÀÍ%³ @  Û”J¥?d  Éà8'M @  Û•K¥?d àÉ&+žl @  Û–L¥?d Éöc„ @  Û—M¥?d `ÉÈ®·‡ @  Û˜N¥?d  Éè[µy @  Û™O¥?d àÉÓ“ @  ÛšP¥?d ÉmÖ1! @  Û›Q¥?d `ÉXà0µ @  ÛœR¥?d  Éx2K @  ÛS¥?d àɾ‹j @  ÛžT¥?d ÉnN‚ @  ÛŸU¥?d `Éì$»Ñ @  Û V¥?d  ÉÌѹ/ @  Û¡W¥?d àÉ’Òã) @  Û¢X¥?d É–Cè @  Û£Y¥?d `É: B| @  Û¤Z¥?d  ÉU@‚ @  Û¥[¥?d àÉÜFù£ @  Û¦\¥?d É uK @  Û§]¥?d `É2ÃÐH @  Û¨^¥?d  É6Ò¶ @  Û©_¥?d àÉ´ÒÓ€ @  Ûª`¥?d É­œ  @  Û«a¥?d `ɘª! @  Û¬b¥?d  É¸_#å @  Û­c¥?d àÉ~LšÄ @  Û®d¥?d É®, @  Û¯e¥?d `É=hÏ @  Û°f¥?d  É1 @  Û±g¥?d àÉCžÕ7 @  Û²h¥?d ÉÞÚuö @  Û³i¥?d `Éëìtb @  Û´j¥?d  ÉËvœ @  Ûµk¥?d àÉ Ͻ @  Û¶l¥?d ÉÝBCU @  Û·m¥?d `ÉãæV @  Û¸n¥?d  ÉÃzä¨ @  Û¹o¥?d àÉø)ÜB @  Ûºp¥?d ÉÌÖP_ @  Û»q¥?d `ÉùàQË @  Û¼r¥?d  ÉÙS5 @  Û½s¥?d àÉê @  Û¾t¥?d ÉÏNfü @  Û¿u¥?d `Éã#Ü= @  ÛÀv¥?d  ÉÃÖÞà @  ÛÁw¥?d àÉÕ„Å @  ÛÂx¥?d É‘$ @  ÛÃy¥?d `É5§% @  ÛÄz¥?d  ÉR'n @  ÛÅ{¥?d àÉÓAžO @  ÛÆ|¥?d É § @  ÛÇ}¥?d `É=Ä·¤ @  ÛÈ~¥?d  É1µZ @  ÛÉ¥?d àÉVCõï @  ÛÊ€¥?d ÉO à @  ÛË¥?d `Éz;t @  ÛÌ‚¥?d  ÉZΊ @  Û̓¥?d àɜݼ« @  Û΄¥?d ÉL•0C @  ÛÏ…¥?d `Éßù«  @  ÛІ¥?d  Éÿ ©^ @  Ûч¥?d àÉ¡óX @  ÛÒˆ¥?d É @  Ü€¦¥?d ¸%ɧ5“À @  Ü€§¥?d ø%Éš%¨\ @  Ü€¨¥?d 8&Éa @  Ü€©¥?d x&É÷òä @  Ü€ª¥?d ¸&É×ëð @  Ü€«¥?d ø&ÉÔ±²Ö @  Ü€¬¥?d 8'Éù>> @  Ü€­¥?d x'Éô†ÄG @  Ü€®¥?d ¸'ÉÔsƹ @  Ü€¯¥?d ø'É!’¡) @  Ü€°¥?d 8(Ém-4 @  Ü€±¥?d x(Éå×M @  Ü€²¥?d ¸(ÉÅçÕ³ @  Ü€³¥?d ø(Éƽ— @  Ü€´¥?d 8)Éõ— @  Ü€µ¥?d x)ÉæŠáî @  Ü€¶¥?d ¸)ÉÆã @  Ü€·¥?d ø)Éêiÿ< @  Ü €¸¥?d 8*Éw-_ý @  Ü!€¹¥?d x*ɇR¥„ @  Ü"€º¥?d ¸*ɧ§§z @  Ü#€»¥?d ø*ɤýå¶ @  Ü$€¼¥?d 8+Étµi^ @  Ü%€½¥?d x+Ʉʓ' @  Ü&€¾¥?d ¸+ɤ?‘Ù @  Ü'€¿¥?d ø+É<9Ú„ @  Ü(€À¥?d 8,É%w)‹ @  Ü)€Á¥?d x,ÉÕÓò @  Ü*€Â¥?d ¸,ÉõýÑ  @  Ü+€Ã¥?d ø,Éö§“À @  Ü,€Ä¥?d 8-É&ï( @  Ü-€Å¥?d x-ÉÖåQ @  Ü.€Æ¥?d ¸-Éöeç¯ @  Ü/€Ç¥?d ø-ÉËuÜ3 @  Ü0€È¥?d 8.ÉV1|ò @  Ü1€É¥?d x.ɦN†‹ @  Ü2€Ê¥?d ¸.Ɇ»„u @  Ü3€Ë¥?d ø.É…áÆ¹ @  Ü4€Ì¥?d 8/ÉU©JQ @  Ü5€Í¥?d x/É¥Ö°( @  Ü6€Î¥?d ¸/É…#²Ö @  Ü7€Ï¥?d ø/ÉpÂÕF @  Ü8€Ð¥?d 80ÉÎiô @  Ü9€Ñ¥?d x0É>c“ @  Ü:€Ò¥?d ¸0É–‘s @  Ü;€Ó¥?d ø0ÉÌÓ¿ @  Ü<€Ô¥?d 81ÉÍ„_W @  Ü=€Õ¥?d x1É=û¥. @  Ü>€Ö¥?d ¸1ɧР@  Ü?€×¥?d ø1ÉŸ½n @  Ü@€Ø¥?d 82É[¯ @  ÜA€Ù¥?d x2Éò$çÖ @  ÜB€Ú¥?d ¸2ÉÒÑå( @  ÜC€Û¥?d ø2ÉÑ‹§ä @  ÜD€Ü¥?d 83ÉÃ+  @  ÜE€Ý¥?d x3Éñ¼Ñu @  ÜF€Þ¥?d ¸3ÉÑIÓ‹ @  ÜG€ߥ?d ø3É¹Ç @  ÜH€à¥?d 84É Q~È @  ÜI€á¥?d x4ÉP.„± @  ÜJ€â¥?d ¸4ÉpÛ†O @  ÜK€ã¥?d ø4Ésă @  ÜL€ä¥?d 85É£ÉHk @  ÜM€å¥?d x5ÉS¶² @  ÜN€æ¥?d ¸5ÉsC°ì @  ÜO€ç¥?d ø5ÉNS‹p @  ÜP€è¥?d 86ÉÓ+± @  ÜQ€é¥?d x6É#hÑÈ @  ÜR€ê¥?d ¸6ÉÓ6 @  ÜS€ë¥?d ø6ÉÇ‘ú @  ÜT€ì¥?d 87ÉÐ @  ÜU€í¥?d x7É ðçk @  ÜV€î¥?d ¸7Éå• @  ÜW€ï¥?d ø7Éõä‚ @  ÜX€ð¥?d 88ÉÁ @  ÜY€ñ¥?d x8É1dôa @  ÜZ€ò¥?d ¸8É‘öŸ @  Ü[€ó¥?d ø8ÉË´S @  Ü\€ô¥?d 89Ƀ8» @  Ü]€õ¥?d x9É2ü @  Ü^€ö¥?d ¸9É À< @  Ü_€÷¥?d ø9É>Ü @  Ü`€ø¥?d 8:É£[|Ñ @  Üa€ù¥?d x:ÉS$†¨ @  Üb€ú¥?d ¸:ÉsÑ„V @  Üc€û¥?d ø:Ép‹Æš @  Üd€ü¥?d 8;É ÃJr @  Üe€ý¥?d x;ÉP¼°  @  Üf€þ¥?d ¸;ÉpI²õ @  Üg€ÿ¥?d ø;É8ÌÍ @  Üh€¦?d 8<É!‚> @  Üi€¦?d x<ÉÑýÄe @  Üj€¦?d ¸<ÉñÆ› @  Ük€¦?d ø<ÉòR„W @  Ül€¦?d 8=É"¿ @  Üm€¦?d x=ÉÒeòÆ @  Ün€¦?d ¸=Éòð8 @  Üo€¦?d ø=Éπˤ @  Üp€¦?d 8>ÉRÄke @  Üq€ ¦?d x>É¢»‘ @  Ür€ ¦?d ¸>É‚N“â @  Üs€ ¦?d ø>ÉÑ. @  Üt€ ¦?d 8?ÉQ\]Æ @  Üu€ ¦?d x?É¡#§¿ @  Üv€¦?duÐ@É7 ¸?ÉÖ¥A @  Üw€¦?d ø?Ét7ÂÑ @  Üx€¦?d P@É·›xí @  Üy€¦?d @É倗´ @  Üz€¦?d Ð@Ég€j @  Ü{€¦?d AÉ6’Y @  Ü|€¦?d PAÉ´NN @  Ü}€¦?d AÉæ¡ @  Ü~€¦?d ÐAÉd‰¶É @  Ü€¦?d BÉ+Y @  Ü€€¦?d PBɘŠ<‡ @  Ü€¦?d BÉÊ‘ÓÞ @  Ü‚€¦?d ÐBÉHÄ @  Üƒ€¦?d CɃú @  Ü„€¦?d PCÉ› $ @  Ü…€¦?d CÉÉ å} @  Ü†€¦?d ÐCÉK˜ò£ @  Ü‡€¦?d DɸH> @  Üˆ€ ¦?d PDÉ:€_à @  Ü‰€!¦?d DÉh›°¹ @  ÜŠ€"¦?d ÐDÉê §g @  Ü‹€#¦?d EÉ»‰~ @  ÜŒ€$¦?d PEÉ9iC @  Ü€%¦?d EÉk† @  ÜŽ€&¦?d ÐEÉé’‘Ä @  Ü€'¦?d FÉËWG @  Ü€(¦?d PFÉIÆ ™ @  Ü‘€)¦?d FÉÝåÀ @  Ü’€*¦?d ÐFÉ™Lò @  Ü“€+¦?d GÉÈÏ+ä @  Ü”€,¦?d PGÉJ^<: @  Ü•€-¦?d GÉEÓc @  Ü–€.¦?d ÐGÉšÔĽ @  Ü—€/¦?d HÉÙ[8î @  Ü˜€0¦?d PHÉ[Ê/0 @  Ü™€1¦?d HÉ ÑÀi @  Üš€2¦?d ÐHÉ‹@×· @  Ü›€3¦?d IÉÚÃM @  Üœ€4¦?d PIÉXR“ @  Ü€5¦?d IÉ IöÊ @  Üž€6¦?d ÐIɈØá @  ÜŸ€7¦?d JÉ»J' @  Ü €8¦?d PJÉ9Š]ù @  Ü¡€9¦?d JÉk‘²  @  Ü¢€:¦?d ÐJÉé¥~ @  Ü£€;¦?d Kɸƒ|„ @  Ü¤€<¦?d PKÉ:kZ @  Ü¥€=¦?d KÉh „ @  Ü¦€>¦?d ÐKÉꘓÝ @  Ü§€?¦?d LÉéAÖ @  ÜÄ€\¦?d PSÉOd) @  ÜÅ€]¦?d SÉÆQ @  ÜÆ€^¦?d ÐSÉŸîÑ @  ÜÇ€_¦?d TÉlgk @  ÜÈ€`¦?d PTÉîö|Ì @  ÜÉ€a¦?d Tɼ퓕 @  ÜÊ€b¦?d ÐTÉ>|„K @  ÜË€c¦?d UÉoÿ]± @  ÜÌ€d¦?d PUÉínJo @  ÜÍ€e¦?d UÉ¿u¥6 @  Ü΀f¦?d ÐUÉ=ä²è @  ÜÏ€g¦?d VÉ!>k @  ÜЀh¦?d PVɰ)µ @  ÜÑ€i¦?d VÉÏ«Æì @  ÜÒ€j¦?d ÐVÉM:Ñ2 @  ÜÓ€k¦?d WÉ¹È @  ÜÔ€l¦?d PWÉž( @  ÜÕ€m¦?d WÉÌ3ðO @  ÜÖ€n¦?d ÐWÉN¢ç‘ @  Ü×€o¦?d XÉ - @  ÜØ€p¦?d PXɼ  @  ÜÙ€q¦?d XÉݧãE @  ÜÚ€r¦?d ÐXÉ_6ô› @  ÜÛ€s¦?d Yɵ-a @  ÜÜ€t¦?d PYÉŒ$:¿ @  ÜÝ€u¦?d YÉÞ?Õæ @  ÜÞ€v¦?d ÐYÉ\®Â8 @  Ü߀w¦?d ZÉomi  @  Üà€x¦?d PZÉíü~Õ @  Üá€y¦?d Zɿ瑌 @  Üâ€z¦?d€ ÐZÉIµšô @  Ý€{¦?d [Éùw ' @  Ý€|¦?d P[É{æù @  Ý€}¦?d [Éì´M @  Ý€~¦?d Ð[Én%“ @  Ý€¦?d \ɾˆ»÷ @  Ý€€¦?d P\É<¬) @  Ý€¦?d \É °  @  Ý€‚¦?d Ð\É"! Ô @  Ý €ƒ¦?d ]ɶë)à @  Ý €„¦?d P]É4z> @  Ý €…¦?d ]É£(*© @  Ý €†¦?d Ð]É!¹=w @  Ý €‡¦?d ^É`oÐn @  Ý€ˆ¦?d P^Éâþǰ @  Ý€‰¦?d ^ÉÓöIs @  Ý€Ц?d Ð^ÉQg^­ @  Ý€‹¦?d _ÉÅ­|º @  Ý€Œ¦?d P_ÉGð @  Ý-§¦?d (fÉ6èûé @  Ý.¨¦?d hfÉ´yì7 @  Ý/©¦?d ¨fÉ…qbô @  Ý0ª¦?d èfÉàu* @  Ý1«¦?d (gÉ“*W= @  Ý2¬¦?d hgÉ»@ã @  Ý3­¦?d ¨gɆéTW @  Ý4®¦?d ègÉxC‰ @  Ý5¯¦?d (hɉEà  @  Ý6°¦?d hhÉ Ô÷~ @  Ý7±¦?d ¨hÉ—}G] @  Ý8²¦?d èhÉìPƒ @  Ý9³¦?d (iÉ&r” @  Ý:´¦?d hiÉ·eJ @  Ý;µ¦?d ¨iÉ”åqþ @  Ý<¶¦?d èiÉtf  @  Ý=·¦?d (jÉW¢‹9 @  Ý>¸¦?d hjÉÕ3œç @  Ý?¹¦?d ¨jÉ[:3 @  Ý@º¦?d èjÉÙ«$Ø @  ÝA»¦?d (kÉMaÏ @  ÝB¼¦?d hkÉÏð @  ÝC½¦?d ¨kÉX¢¥ @  ÝD¾¦?d èkÉÚ3{ @  ÝE¿¦?d (lÉXâ @  ÝFÀ¦?d hlÉ•ÉõS @  ÝGÁ¦?d ¨lÉ `Ep @  ÝH¦?d èlÉ‹ñR® @  ÝIæ?d (mÉ;p¹ @  ÝJĦ?d hmɪgg @  ÝKŦ?d ¨mÉ øsÓ @  ÝLƦ?d èmɈid  @  ÝMǦ?d (nÉÉ¿‰ @  ÝNȦ?d hnÉK.žÊ @  ÝOɦ?d ¨nÉz&  @  ÝPʦ?d ènÉø·× @  ÝQ˦?d (oÉl}%À @  ÝR̦?d hoÉîì2 @  ÝSͦ?d ¨oÉy¾&ª @  ÝTΦ?d èoÉû/1t @  ÝUϦ?d (pÉü3¢ò @  ÝVЦ?d hpÉ~¢µ, @  ÝWѦ?d ¨pÉâ  @  ÝXÒ¦?d èpÉ`šÑ @  ÝYÓ¦?d (qÉôP0Æ @  ÝZÔ¦?d hqÉvÁ' @  Ý[Õ¦?d ¨qÉá“3¬ @  Ý\Ö¦?d èqÉc$r @  Ý]צ?d (rÉ"ÔÉk @  Ý^ئ?d hrÉ EÞµ @  Ý_Ù¦?d ¨rÉ€KwÆ @  Ý`Ú¦?d èrÉÚ` @  ÝaÛ¦?d (sÉ–B @  Ýbܦ?d hsÉUÑ @  Ýcݦ?d ¨sɃÓAe @  ÝdÞ¦?d èsÉBV» @  Ýeߦ?d (tÉ›— @  Ýާ?d h~ɯŒI @  Ý §?d ¨~É/§Š @  Ý §?d è~É­6T @  Ý‘ §?d (É9ü7C @  Ý’ §?d hÉ»m  @  Ý“ §?d ¨ÉuЀÉ',?4) @  Ý”§?d èÉ®®#÷ @  Ý•§?d @€ÉyÒî· @  Ý–§?d €€ÉY'ìI @  Ý—§?d À€ÉgêIJ @  Ý˜§?d É·¢Å¢ @  Ý™§?d @Éq±|ƒ @  Ýš§?d €ÉQD~} @  Ý›§?d ÀÉdré @  Ýœ§?d ‚Éù6ß( @  Ý§?d @‚ɧ5…. @  Ýž§?d €‚ɇÀ‡Ð @  ÝŸ§?d À‚ɪ;ƒ @  Ý §?d ƒÉÕâ·k @  Ý¡§?d @ƒÉñJ @  Ý¢§?d €ƒÉ3 ´ @  Ý£§?d ÀƒÉ2  @  Ý¤§?d „É|þ/ @  Ý¥§?d @„ɹ˜ÿ @  Ý¦ §?d €„É™mýç @  Ý§!§?d À„ɧ Xä @  Ý¨"§?d …ÉwèÔ  @  Ý©#§?d @…ɱûm- @  Ýª$§?d €…É‘oÓ @  Ý«%§?d À…ɤ8nG @  Ý¬&§?d †É9|Ά @  Ý­'§?d @†Ég”€ @  Ý®(§?d €†ÉGŠ–~ @  Ý¯)§?d À†ÉÔæ  @  Ý°*§?d ‡É®u @  Ý±+§?d @‡É½8T @  Ý²,§?d €‡ÉâH:ª @  Ý³-§?d À‡É×~;> @  Ý´.§?d ˆÉã·# @  Ýµ/§?d @ˆÉØÒÉ @  Ý¶0§?d €ˆÉø'7 @  Ý·1§?d ÀˆÉÆê(4 @  Ý¸2§?d ‰É¢¤Ü @  Ý¹3§?d @‰Éбý @  Ýº4§?d €‰ÉðD @  Ý»5§?d À‰ÉÅr— @  Ý¼6§?d ŠÉX6¾V @  Ý½7§?d @ŠÉ5äP @  Ý¾8§?d €ŠÉ&Àæ® @  Ý¿9§?d ÀŠÉ ­\o @  ÝÀ:§?d ‹ÉÚåЇ @  ÝÁ;§?d @‹Éöi¦ @  ÝÂ<§?d €‹É<kX @  ÝÃ=§?d À‹É 5jÌ @  ÝÄ>§?d ŒÉ{™Ã @  ÝÅ?§?d @ŒÉFÏä @  ÝÆ@§?d €ŒÉf: @  ÝÇA§?d ÀŒÉX÷* @  ÝÈB§?d Ɉ¿¦ñ @  ÝÉC§?d @ÉN¬Ð @  ÝÊD§?d €ÉnY. @  ÝËE§?d ÀÉ[oº @  ÝÌF§?d ŽÉÆ+¼{ @  ÝÍG§?d @ŽÉ˜(æ} @  ÝÎH§?d €ŽÉ¸Ýäƒ @  ÝÏI§?d ÀŽÉ+±` @  ÝÐJ§?d Éûùóˆ @  ÝÑK§?d @É=êJ© @  ÝÒL§?d €ÉHW @  ÝÓM§?d ÀÉ()Ià @  ÝÔN§?d É–÷õq @  ÝÕO§?d @É­¤Í› @  ÝÖP§?d €ÉQÏe @  Ý×Q§?d Àɳœjf @  ÝØR§?d ‘ÉcÔæŽ @  ÝÙS§?d @‘É¥Ç_¯ @  ÝÚT§?d €‘É…2]Q @  ÝÛU§?d À‘ɰ\Å @  ÝÜV§?d ’É-@ü @  ÝÝW§?d @’ÉsC¦ @  ÝÞX§?d €’ÉS¶¤ü @  ÝßY§?d À’ÉÑܯ @  ÝàZ§?d “É””G @  Ýá[§?d @“ÉLJ-f @  Ýâ\§?d€ €“É&5ؘ @  Þ]§?d À“ÉòB‘% @  Þ^§?d ”Éë b* @  Þ_§?d @”Ɉ¡˜ñ @  Þ`§?d €”ɨTš @  Þa§?d À”ÉX+`v @  Þb§?d •Ɉcìž @  Þc§?d @•ɀ Š@  Þd§?d €•É 7; @  Þ e§?d À•ÉPHòB @  Þ f§?d –ÉÍ Rƒ @  Þ g§?d @–ÉVFóh @  Þ h§?d €–Év³ñ– @  Þ i§?d À–É†Ì ï @  Þj§?d —ÉV„‡ @  Þk§?d @—Éó„_¼ @  Þl§?d €—ÉÓq]B @  Þm§?d À—É#§; @  Þn§?d ˜Éñ+& @  Þo§?d @˜Ééëè! @  Þp§?d €˜ÉÉêß @  Þq§?d À˜É9a¦ @  Þr§?d ™Éé)œN @  Þs§?d @™Éáˆz @  Þt§?d €™ÉÁ}xë @  Þu§?d À™É1‚’ @  Þv§?d šÉ¬F"S @  Þw§?d @šÉ7 ƒ¸ @  Þx§?d €šÉùF @  Þy§?d ÀšÉç†{? @  Þz§?d ›É7Î÷× @  Þ{§?d @›ÉƒÈÜ @  Þ |§?d €›É£= " @  Þ!}§?d À›ÉSBð[ @  Þ"~§?d œÉJ T @  Þ#§?d @œÉÄ7¸  @  Þ$€§?d €œÉäºò @  Þ%§?d ÀœÉ½@‹ @  Þ&‚§?d ÉÄõÌc @  Þ'ƒ§?d @ÉÌT*8 @  Þ(„§?d €Éì¡(Æ @  Þ)…§?d ÀÉÞÒ¿ @  Þ*†§?d žÉšr~ @  Þ+‡§?d @žÉÐÓ• @  Þ,ˆ§?d €žÉ:%Ñk @  Þ-‰§?d ÀžÉÊZ+ @  Þ.Ч?d ŸÉ§ú @  Þ/‹§?d @ŸÉ¿A @  Þ0Œ§?d €ŸÉŸç}¿ @  Þ1§uРÉ?d ÀŸÉo˜‡Æ @  Þ2ާ?d  É“Y  @  Þ3§?d X Éà‰š§ @  Þ4§?d ˜ ÉÀ|˜Y @  Þ5‘§?d Ø É0b  @  Þ6’§?d ¡ÉàKîÈ @  Þ7“§?d X¡Éèê“ @  Þ8”§?d ˜¡ÉÈ m @  Þ9•§?d Ø¡É8`ð @  Þ:–§?d ¢É¥$PÕ @  Þ;—§?d X¢É>nñ> @  Þ<˜§?d ˜¢É›óÀ @  Þ=™§?d Ø¢Éîä ¹ @  Þ>š§?d £É>¬…Q @  Þ?›§?d X£É$­|È @  Þ@œ§?d ˜£ÉX~6 @  ÞA§?d Ø£Éô'„O @  ÞBž§?d ¤Éíiw@ @  ÞCŸ§?d X¤ÉŽÄ› @  ÞD §?d ˜¤É®1e @  ÞE¡§?d ؤÉ^Nu @  ÞF¢§?d ¥ÉŽùô @  ÞG£§?d X¥É†§¯ @  ÞH¤§?d ˜¥É¦RQ @  ÞI¥§?d Ø¥ÉV-ç( @  ÞJ¦§?d ¦ÉËiGé @  ÞK§§?d X¦ÉP#æ @  ÞL¨§?d ˜¦ÉpÖäü @  ÞM©§?d ئÉ€©… @  ÞNª§?d §ÉPá’m @  ÞO«§?d X§ÉõáJÖ @  ÞP¬§?d ˜§ÉÕH( @  ÞQ­§?d اÉ%k²Q @  ÞR®§?d ¨É”>L @  ÞS¯§?d X¨ÉïŽýK @  ÞT°§?d ˜¨ÉÏ{ÿµ @  ÞU±§?d بÉ?Ì @  ÞV²§?d ©ÉïL‰$ @  ÞW³§?d X©Éçío @  ÞX´§?d ˜©ÉÇm @  ÞYµ§?d Ø©É7g—ø @  ÞZ¶§?d ªÉª#79 @  Þ[·§?d XªÉ1i–Ò @  Þ\¸§?d ˜ªÉœ”, @  Þ]¹§?d تÉáãnU @  Þ^º§?d «É1«â½ @  Þ_»§?d X«É…­¶ @  Þ`¼§?d ˜«É¥XH @  Þa½§?d Ø«ÉU'å1 @  Þb¾§?d ¬ÉLi> @  Þc¿§?d X¬Éß”ùô @  ÞdÀ§?d ˜¬Éÿaû  @  ÞeÁ§?d جÉs @  Þf§?d ­ÉßV› @  Þgç?d X­É×÷kÀ @  Þhħ?d ˜­É÷i> @  Þiŧ?d Ø­É}“G @  ÞjƧ?d ®Éš93† @  Þkǧ?d X®És’m @  Þlȧ?d ˜®É!†“ @  Þmɧ?d Ø®ÉÑùjê @  Þnʧ?d ¯É±æ @  Þo˧?d X¯É¤±>¹ @  Þp̧?d ˜¯É„D @  ÞrΧ?d °ÉÊåzŒ @  Þsϧ?d X°É4ÿ¹‹ @  ÞtЧ?d ˜°É »u @  Þuѧ?d ذÉäuA  @  ÞvÒ§?d ±É4=Íä @  ÞwÓ§?d X±É<œ+¿ @  ÞxÔ§?d ˜±Éi)A @  ÞyÕ§?d رÉìÓ8 @  ÞzÖ§?d ²ÉqRsù @  Þ{×§?d X²ÉêÒ @  Þ|ا?d ˜²ÉÊíÐì @  Þ}Ù§?d زÉ:’*• @  Þ~Ú§?d ³ÉêÚ¦} @  ÞÛ§?d X³ÉoÕ @  Þ€ܧ?d ˜³É3xm+ @  Þݧ?d سÉ×R @  Þ‚Þ§?d ´ÉÚId] @  Þƒß§?d X´É¹äž† @  Þ„à§?d ˜´É™œx @  Þ…á§?d Ø´Éinf @  Þ†â§?d µÉ¹&êé @  Þ‡ã§?d XµÉ±‡ ² @  Þˆä§?d ˜µÉ‘rL @  Þ‰å§?d صÉa ô5 @  ÞŠæ§?d ¶ÉüITô @  Þ‹ç§?d X¶Égõ @  ÞŒè§?d ˜¶ÉGö÷á @  Þé§?d ضÉ·‰ ˜ @  ÞŽê§?d ·ÉgÁp @  Þë§?d X·ÉÂÁYË @  Þì§?d ˜·Éâ4[5 @  Þ‘í§?d Ø·ÉK¡L @  Þ’î§?d ¸É&´-Q @  Þ“ï§?d X¸ÉØ®îV @  Þ”ð§?d ˜¸Éø[ì¨ @  Þ•ñ§?d ظÉ$Ñ @  Þ–ò§?d ¹ÉØlš9 @  Þ—ó§?d X¹ÉÐÍ|b @  Þ˜ô§?d ˜¹Éð8~œ @  Þ™õ§?d عÉG„å @  Þšö§?d ºÉ$$ @  Þ›÷§?d XºÉI…Ï @  Þœø§?d ˜ºÉ&¼‡1 @  Þù§?d غÉÖÃ}H @  Þžú§?d »É‹ñ  @  ÞŸû§?d X»É²« @  Þ ü§?d ˜»É’x U @  Þ¡ý§?d Ø»Ébö, @  Þ¢þ§?d ¼É{I# @  Þ£ÿ§?d X¼Éo&Ú˜ @  Þ¤¨?d ˜¼ÉOÓØf @  Þ¥¨?d ؼÉ¿¬" @  Þ¦¨?d ½Éoä®÷ @  Þ§¨?d X½ÉgEH¬ @  Þ¨¨?d ˜½ÉG°JR @  Þ©¨?d ؽɷϰ+ @  Þª¨?d ¾É*‹ê @  Þ«¨?d X¾É±Á± @  Þ¬¨?d ˜¾É‘4³ÿ @  Þ­ ¨?d ؾÉaKI† @  Þ® ¨?d ¿É±Ån @  Þ¯ ¨?d X¿ÉÕ @  Þ° ¨?d ˜¿É4ö+ @uÐÀÉ  Þ± ¨?d Ø¿ÉĉåR @  Þ²¨?d 0ÀÉ y´ @  Þ³¨?d pÀÉ^cw @  Þ´¨?d °ÀÉ~–uù @  Þµ¨?d ðÀÉŽé€ @  Þ¶¨?d 0ÁÉ^¡h @  Þ·¨?d pÁÉVå3 @  Þ¸¨?d °ÁÉvõçÍ @  Þ¹¨?d ðÁɆд @  Þº¨?d 0ÂÉνu @  Þ»¨?d pÂÉ€„ž @  Þ¼¨?d °ÂÉ q` @  Þ½¨?d ðÂÉPä @  Þ¾¨?d 0ÃÉ€Fhñ @  Þ¿¨?d pÃÉšG‘h @  ÞÀ¨?d °Ãɺ²“– @  ÞÁ¨?d ðÃÉJÍiï @  Þ¨?d 0ÄÉSƒšà @  Þè?d pÄÉ0.`; @  ÞÄ ¨?d °ÄÉÛbÅ @  ÞÅ!¨?d ðÄÉघ¼ @  ÞÆ"¨?d 0ÅÉ0ìT @  ÞÇ#¨?d pÅÉ8Mò @  ÞÈ$¨?d °Åɸðñ @  ÞÉ%¨?d ðÅÉèÇ ˆ @  ÞÊ&¨?d 0ÆÉuƒªI @  ÞË'¨?d pÆÉîÉ ¢ @  ÞÌ(¨?d °ÆÉÎ< \ @  ÞÍ)¨?d ðÆÉ>Có% @  ÞÎ*¨?d 0ÇÉî Í @  ÞÏ+¨?d pÇÉK §v @  ÞÐ,¨?d °ÇÉkþ¥ˆ @  ÞÑ-¨?d ðÇÉ›_ñ @  ÞÒ.¨?d 0Èɯ~Óì @  ÞÓ/¨?d pÈÉQdë @  ÞÔ0¨?d °ÈÉq‘ @  ÞÕ1¨?d ðÈÉîèl @  ÞÖ2¨?d 0ÉÉQ¦d„ @  Þ×3¨?d pÉÉY‚ß @  ÞØ4¨?d °ÉÉyò€! @  ÞÙ5¨?d ðÉɉzX @  ÞÚ6¨?d 0ÊÉÉÚ™ @  ÞÛ7¨?d pÊɃ{r @  ÞÜ8¨?d °ÊɯvyŒ @  ÞÝ9¨?d ðÊÉ_ ƒõ @  ÞÞ:¨?d 0ËÉA @  Þß;¨?d pËÉ;Gð @  Þà<¨?d °Ëɲòè @  Þá=¨?d ðËÉëÍ‘ @  Þâ>¨?d€ 0ÌɆ@ç8 @  ß?¨?d pÌÉôü@Û @  ß@¨?d °ÌÉÔ B% @  ßA¨?d ðÌÉá?C± @  ßB¨?d 0ÍÉ1wÏY @  ßC¨?d pÍÉ÷dvx @  ßD¨?d °ÍÉבt† @  ßE¨?d ðÍÉé\Ñ… @  ßF¨?d 0ÎÉtqD @  ß G¨?d pÎÉ*+B @  ß H¨?d °ÎÉ î)¼ @  ß I¨?d ðÎÉ?Ø(( @  ß J¨?d 0ÏÉï¤À @  ß K¨?d pÏÉ)ƒá @  ßL¨?d °ÏÉ v @  ßM¨?d ðÏÉš„ü @  ßN¨?d 0ÐÉ$Ä8N @  ßO¨?d pÐÉ—¤ @  ßP¨?d °ÐÉ?bZ @  ßQ¨?d ðÐÉ TÎ @  ßR¨?d 0ÑÉÚ& @  ßS¨?d pÑÉ6 @  ßT¨?d °ÑÉ<ú4ù @  ßU¨?d ðÑÉ7‘ú @  ßV¨?d 0ÒÉŸs1; @  ßW¨?d pÒÉÁpk= @  ßX¨?d °ÒÉá…ià @  ßY¨?d ðÒÉÔ³hW @  ßZ¨?d 0ÓÉûä¿ @  ß[¨?d pÓÉÂè]ž @  ß\¨?d °ÓÉâ_` @  ß]¨?d ðÓÉ`wã3 @  ß ^¨?d 0ÔÉy9< @  ß!_¨?d pÔÉßÝ  @  ß"`¨?d °ÔÉÿ(ô @  ß#a¨?d ðÔÉÊ` @  ß$b¨?d 0ÕÉVžˆ @  ß%c¨?d pÕÉÜE'© @  ß&d¨?d °ÕÉü°%W @  ß'e¨?d ðÕÉÂ}€T @  ß(f¨?d 0ÖÉ_9 • @  ß)g¨?d pÖÉ:z“ @  ß*h¨?d °ÖÉ!Ïxm @  ß+i¨?d ðÖÉùyù @  ß,j¨?d 0×Éıõ @  ß-k¨?d p×É¢L0 @  ß.l¨?d °×É"WNÎ @  ß/m¨?d ð×ɱ;Õ- @  ß0n¨?d 0ØÉ…ÄY0 @  ß1o¨?d pØÉ¾—aÚ @  ß2p¨?d °ØÉžbc$ @  ß3q¨?d ðØÉ«Tb° @  ß4r¨?d 0ÙÉ{îX @  ß5s¨?d pÙɽWy @  ß6t¨?d °ÙÉúU‡ @  ß7u¨?d ðÙÉ£7ð„ @  ß8v¨?d 0ÚÉ>sPE @  ß9w¨?d pÚÉ`p C @  ß:x¨?d °ÚÉ@…½ @  ß;y¨?d ðÚÉu³ ) @  ß<z¨?d 0ÛÉ¥û…Á @  ß={¨?d pÛÉcè<à @  ß>|¨?d °ÛÉC> @  ß?}¨?d ðÛÉop„ß @  ß@~¨?d 0ÜÉv>wÐ @  ßA¨?d pÜÉ=L7e @  ßB€¨?d °Üɹ5› @  ßC¨?d ðÜÉ(4 @  ßD‚¨?d 0ÝÉøÇ¸ç @  ßEƒ¨?d pÝÉ>ÔÆ @  ßF„¨?d °ÝÉ!8 @  ßG…¨?d ðÝÉ ì¦; @  ßH†¨?d 0Þɽ¨ú @  ßI‡¨?d pÞÉã«\ü @  ßJˆ¨?d °ÞÉÃ^^ @  ßK‰¨?d ðÞÉöh_– @  ßLЍ?d 0ßÉ& Ó~ @  ßM‹¨?d pßÉà3j_ @  ßNŒ¨?d uÐàÉ/°ßÉÀÆh¡ @  ßO¨?d ðßÉSªóB @  ßPލ?d HàÉJ­´ @  ßQ¨?d ˆàÉÓ9€~ @  ßR¨?d ÈàÉQ¨—  @  ßS‘¨?d áÉ6G  @  ßT’¨?d HáÉ´ÖÜ @  ßU“¨?d ˆáÉС¶Ý @  ßV”¨?d ÈáÉR0¡ @  ßW•¨?d âÉs(³ @  ßX–¨?d HâÉñ¹¤Á @  ßY—¨?d ˆâÉ Þëç @  ßZ˜¨?d ÈâÉOü9 @  ß[™¨?d ãÉè f› @  ß\š¨?d HãÉj1qE @  ß]›¨?d ˆãÉFÝD @  ß^œ¨?d ÈãÉŒ×Êš @  ß_¨?d äÉ•b’ @  ß`ž¨?d HäÉó…Æ @  ßaŸ¨?d ˆäÉs‘Ð @  ßb ¨?d Èäɑ↠@  ßc¡¨?d åÉö ¬ @  ßd¢¨?d HåÉtœ r @  ße£¨?d ˆåÉë§s @  ßf¤¨?d ÈåÉ’z°­ @  ßg¥¨?d æÉ³b¢± @  ßh¦¨?d HæÉ1óµo @  ßi§¨?d ˆæÉÍ”úI @  ßj¨¨?d ÈæÉOí— @  ßk©¨?d çÉ(êw5 @  ßlª¨?d Hçɪ{`ë @  ßm«¨?d ˆçÉÎ Ìê @  ßn¬¨?d ÈçÉLÛ4 @  ßo­¨?d èÉiŸÛ @  ßp®¨?d HèÉëÌÊ @  ßq¯¨?d ˆèÉr9á @  ßr°¨?d ÈèÉð¨öÞ @  ßs±¨?d éÉ—Gl| @  ßt²¨?d HéÉÖ{¢ @  ßu³¨?d ˆéÉq¡×£ @  ßv´¨?d ÈéÉó0À} @  ßwµ¨?d êÉÒ(Òa @  ßx¶¨?d HêÉP¹Å¿ @  ßy·¨?d ˆêɬފ™ @  ßz¸¨?d ÈêÉ.OG @  ß{¹¨?d ëÉI å @  ß|º¨?d HëÉË1; @  ß}»¨?d ˆëɯF¼: @  ß~¼¨?d ÈëÉ-׫ä @  ß½¨?d ìÉy3ÅÅ @  ß€¾¨?d HìÉû¢Ò @  ß¿¨?d ˆìÉrÓ @  ß‚À¨?d ÈìÉãÄ @  ßƒÁ¨?d íÉê ^` @  ß„¨?d HíÉhI¾ @  ß…è?d ˆíÉ êå¿ @  ß†Ĩ?d ÈíÉŽ{òa @  ß‡Ũ?d îɯcà} @  ßˆƨ?d HîÉ-ò÷£ @  ß‰Ǩ?d ˆîÉÑ•¸… @  ßŠȨ?d ÈîÉS¯[ @  ß‹ɨ?d ïÉ4ë5ù @  ßŒʨ?d Hïɶz"' @  ß˨?d ˆïÉÒ Ž& @  ßŽ̨?d ÈïÉPœ™ø @  ßͨ?d ðÉÿ¿©w @  ßΨ?d HðÉ}.¾© @  ß‘Ϩ?d ˆðÉä“c @  ß’Ш?d ÈðÉfˆ„½ @  ß“Ѩ?d ñÉg @  ß”Ò¨?d HñɃö Á @  ß•Ó¨?d ˆñÉç¥À @  ß–Ô¨?d ÈñÉe² @  ß—Õ¨?d òÉD  @  ß˜Ö¨?d HòÉÆ™·Ü @  ß™ר?d ˆòÉ:þøú @  ßšب?d Èòɸoï$ @  ß›Ù¨?d óÉ߀u† @  ßœÚ¨?d HóÉ]bX @  ßÛ¨?d ˆóÉ9fÎY @  ßžܨ?d ÈóÉ»÷Ù‡ @  ßŸݨ?d ôÉ¢B @  ß Þ¨?d HôÉ Ó–Û @  ß¡ߨ?d ˆôÉ$S‚Í @  ß¢à¨?d Èôɦ• @  ß£á¨?d õÉÁ-± @  ß¤â¨?d HõÉC¼o @  ß¥ã¨?d ˆõÉ'Ë´n @  ß¦ä¨?d ÈõÉ¥Z£° @  ß§å¨?d öÉ„B±¬ @  ß¨æ¨?d HöÉÓ¦r @  ß©ç¨?d ˆöÉú´éT @  ßªè¨?d ÈöÉx%þŠ @  ß«é¨?d ÷ÉÊd( @  ß¬ê¨?d H÷É[sö @  ß­ë¨?d ˆ÷Éù,ß÷ @  ß®ì¨?d È÷É{½È) @  ß¯í¨?d øÉ^¿È  @  ß°î¨?d HøÉÜ.ß× @  ß±ï¨?d ˆøÉEò @  ß²ð¨?d ÈøÉLjåà @  ß³ñ¨?d ùÉ ga @  ß´ò¨?d HùÉ"öh¿ @  ßµó¨?d ˆùÉFľ @  ß¶ô¨?d ÈùÉÄÓ` @  ß·õ¨?d úÉåÁ| @  ß¸ö¨?d HúÉg™Ö¢ @  ß¹÷¨?d ˆúÉ›þ™„ @  ßºø¨?d ÈúÉoŽZ @  ß»ù¨?d ûÉ~€ø @  ß¼ú¨?d HûÉü& @  ß½û¨?d ˆûɘf¯' @  ß¾ü¨?d ÈûÉ÷¸ù @  ß¿ý¨?d üÉ­Eæé @  ßÀþ¨?d HüÉ/Ôñ7 @  ßÁÿ¨?d ˆüɹ¥ñ® @  ß©?d ÈüÉ;4æp @  ßé?d ýÉ\Û|Ò @  ßÄ©?d HýÉÞJk  @  ßÅ©?d ˆýɺ=Ç  @  ßÆ©?d ÈýÉ8¬ÐÓ @  ßÇ©?d þÉ´ÂÏ @  ßÈ©?d HþÉ›%Õ @  ßÉ©?d ˆþÉgBš7 @  ßÊ©?d ÈþÉåÓé @  ßË ©?d ÿÉ‚<K @  ßÌ ©?d HÿÉ­• @  ßÍ ©?d ˆÿÉdÚ¬” @  ßÎuÐÊ ©?d ÈÿÉæK»J @  ßÏ ©?d ÊóG` @  ßЩ?d `ÊqÖh¾ @  ßÑ©?d  ÊèáEt @  ßÒ©?d àÊjpRª @  ßÓ©?d Ê ŸÈ @  ßÔ©?d `ÊßÖ @  ßÕ©?d  Êëys× @  ßÖ©?d àÊièd  @  ßש?d ÊHðv @  ßØ©?d `ÊÊaaË @  ßÙ©?d  Ê6.í @  ßÚ©?d àÊ´—93 @  ßÛ©?d ÊÓx£‘ @  ßÜ©?d `ÊQé´O @  ßÝ©?d  Ê5žN @  ßÞ©?d àÊ· @  ßß©?d Ê®ºW @  ßà©?d `Ê,+@Ì @  ßá©?d  Ê(«TÚ @  ßâ ©?d€ àÊ’D±$ @  à!©?d Êêc¯ @  à"©?d `Ê–{tq @  à#©?d  Ê7E# @  à$©?d àʵÔ4C @  à%©?d ÊZ~y% @  à&©?d `ÊØïnû @  à'©?d  Êê:~§ @  à(©?d àÊh«iy @  à )©?d ÊÊ 6 @  à *©?d `ÊHœè @  à +©?d  Êé¢H @  à ,©?d àÊk3_Ú @  à -©?d Ê-">` @  à.©?d `ʯ³)¾ @  à/©?d  ÊU—eî @  à0©?d àÊ×r0 @  à1©?d Êu  @  à2©?d ` Ê÷1¡ @  à3©?d   ÊVSM @  à4©?d à ÊÔžD“ @  à5©?d Ê;4 õ @  à6©?d ` ʹ¥+ @  à7©?d   Ê‹pw @  à8©?d à Ê á© @  à9©?d Ê«Gxæ @  à:©?d ` Ê)Öo8 @  à;©?d   ʈè8Ô @  à<©?d à Ê y/  @  à=©?d ÊaÙ1¢ @  à>©?d ` ÊãH&| @  à?©?d   ÊeaQ @  à @©?d à Êçv @  à!A©?d ÊEºÀ @  à"B©?d ` ÊÇ+ @  à#C©?d   ÊfWò @  à$D©?d à Êä„@, @  à%E©?d Ê . J @  à&F©?d `ʉ¿” @  à'G©?d  Ê»j È @  à(H©?d àÊ9û @  à)I©?d Ê›]|Y @  à*J©?d `ÊÌk‡ @  à+K©?d  Ê¸ò^©?d `Ê89b¼ @  à?_©?d  Êà«6 @  à@`©?d àÊb:!Ì @  àAa©?d ÊÀœ@ƒ @  àBb©?d `ÊB W] @  àCc©?d  Êã3± @  àDd©?d àÊa¢o @  àEe©?d ÊŽZ  @  àFf©?d `Ê ™M× @  àGg©?d  Ê>L]‹ @  àHh©?d àʼÝJU @  àIi©?d Ê{+ @  àJj©?d `Êœê<Ä @  àKk©?d  Ê=Ôk( @  àLl©?d àÊ¿E|ö @  àMm©?d ÊùTL @  àNn©?d `Ê{Å ’ @  àOo©?d  ÊáF @  àPp©?d àÊpQ @  àQq©?d Ê¡Ö0S @  àRr©?d `Ê#G' @  àSs©?d  Ê‚ypa @  àTt©?d àÊèg¿ @  àUu©?d ÊïB*Ù @  àVv©?d `ÊmÓ= @  àWw©?d  Ê_-[ @  àXx©?d àÊÝ—:… @  àYy©?d Ê1[Ê @  àZz©?d `Êý L @  à[{©?d  Ê\žø @  à\|©?d àÊÞ & @  à]}©?d ʵ¯Ž @  à^~©?d `Ê7>P @  à_©?d  Ê¬=ï @  à`€©?d àÊ.¬1 @  àa©?d ÊŒ `~ @  àb‚©?d `Ê›w  @  àcƒ©?d  Ê¯¥ L @  àd„©?d àÊ-47’ @  àe…©?d Êžzô @  àf†©?d `Ê@m* @  àg‡©?d  ÊrÚ}v @  àhˆ©?d àÊðKj¨ @  ài‰©?d ÊRí ç @  àjŠ©?d `ÊÐ|9 @  àk‹©?d  ÊqBKÕuÐ Ê @  àlŒ©?d àÊÊ€Þ @  àm ©?d 8 ÊÉñ³ @  àn Ž©?d x ÊK`¤Á @  ào ©?d ¸ ʱDè‘ @  àp ©?d ø Ê3ÕÿO @  àq ‘©?d 8!Ê‘sž @  àr ’©?d x!Êâ‰Þ @  às “©?d ¸!ʲÜÞ2 @  àt ”©?d ø!Ê0MÉì @  àu •©?d 8"Êß焊 @  àv –©?d x"Ê]v“T @  àw —©?d ¸"Êo£ƒ @  àx ˜©?d ø"Êí2”Ö @  ày ™©?d 8#ÊO”õ™ @  àz š©?d x#ÊÍâG @  à{ ›©?d ¸#Êl;µ« @  à| œ©?d ø#Êu @  à} ©?d 8$Ê… ¼Ý @  à~ ž©?d x$Ê›« @  à Ÿ©?d ¸$Ê<_Ïœ @  à€  ©?d ø$Ê¾ÎØB @  à ¡©?d 8%Êh¹  @  à‚ ¢©?d x%Êžù®Ó @  àƒ £©?d ¸%Ê?Çù? @  à„ ¤©?d ø%ʽVîá @  à… ¥©?d 8&ÊRü£‡ @  à† ¦©?d x&ÊÐm´Y @  à‡ §©?d ¸&Ê⸤ @  àˆ ¨©?d ø&Ê`)³Û @  à‰ ©©?d 8'ÊÂÒ” @  àŠ ª©?d x'Ê@ÅJ @  à‹ «©?d ¸'Êá ’¦ @  àŒ ¬©?d ø'Êc±…x @  à ­©?d 8(Ê% ä @  àŽ ®©?d x(ʧ1ó @  à ¯©?d ¸(Ê]¿L @  à °©?d ø(Êß„¨’ @  à‘ ±©?d 8)Ê}"ÉÝ @  à’ ²©?d x)Êÿ³Þ @  à“ ³©?d ¸)Ê^‰ï @  à” ´©?d ø)ÊÜž1 @  à• µ©?d 8*Ê3¶ÓW @  à– ¶©?d x*ʱ'ĉ @  à— ·©?d ¸*ʃòÔÕ @  à˜ ¸©?d ø*Êcà  @  à™ ¹©?d 8+ʣŢD @  àš º©?d x+Ê!Tµš @  à› »©?d ¸+Ê€jâv @  àœ ¼©?d ø+Êûõ¨ @  à ½©?d 8,Êi[ë @  àž ¾©?d x,ÊëÊüÞ @  àŸ ¿©?d ¸,Êm»ó @  à  À©?d ø,Ê- @  à¡ Á©?d 8-ÊM8Íb @  à¢ ©?d x-Êϩڼ @  à£ é?d ¸-Ên—P @  à¤ Ä©?d ø-Ê욎 @  à¥ Å©?d 8.ʬ×è @  à¦ Æ©?d x.Ê=À6 @  à§ Ç©?d ¸.ʳèÐj @  à¨ È©?d ø.Ê1yÇ´ @  à© É©?d 8/Ê“ߦû @  àª Ê©?d x/ÊN±% @  à« Ë©?d ¸/ʰpæÉ @  à¬ Ì©?d ø/Ê2áñ @  à­ Í©?d 80ÊþÑ  @  à® Ω?d x0Ê|@·Ü @  à¯ Ï©?d ¸0ʆdûŒ @  à° Щ?d ø0ÊõìR @  à± Ñ©?d 81ʦS @  à² Ò©?d x1Ê$šÃ @  à³ Ó©?d ¸1Ê…üÍ/ @  à´ Ô©?d ø1ÊmÚñ @  àµ Õ©?d 82ÊèÇ—— @  à¶ Ö©?d x2ÊjV€I @  à· ש?d ¸2ÊXƒ @  à¸ Ø©?d ø2ÊÚ‡Ë @  à¹ Ù©?d 83Êx´æ„ @  àº Ú©?d x3Êú%ñZ @  à» Û©?d ¸3Ê[¦¶ @  à¼ Ü©?d ø3ÊÙŠ±h @  à½ Ý©?d 84ʲ*¯À @  à¾ Þ©?d x4Ê0»¸ @  à¿ ß©?d ¸4Êè)ì° @  àÀ à©?d ø4Êj¸ûn @  àÁ á©?d 85ÊÈš! @  à â©?d x5ÊJÿ @  àà ã©?d ¸5Êë±Ú @  àÄ ä©?d ø5Êi ÍÍ @  àÅ å©?d 86Ê†Š€« @  àÆ æ©?d x6Ê—u @  àÇ ç©?d ¸6Ê6·) @  àÈ è©?d ø6Ê´_÷ @  àÉ é©?d 87Êùñ¸ @  àÊ ê©?d x7Ê”hæf @  àË ë©?d ¸7Ê5V±Š @  àÌ ì©?d ø7ʷǦT @  àÍ í©?d 88ÊñÖÇî @  àÎ î©?d x8ÊsGÐ0 @  àÏ ï©?d ¸8ʉcœ` @  àÐ ð©?d ø8Ê ò‹¾ @  àÑ ñ©?d 89Ê©Têñ @  àÒ ò©?d x9Ê+Åý/ @  àÓ ó©?d ¸9ÊŠûªÃ @  àÔ ô©?d ø9Êj½ @  àÕ õ©?d 8:ÊçÀð{ @  àÖ ö©?d x:ÊeQç¥ @  à× ÷©?d ¸:ÊW„÷ù @  àØ ø©?d ø:ÊÕà' @  àÙ ù©?d 8;Êw³h @  àÚ ú©?d x;Êõ"–¶ @  àÛ û©?d ¸;ÊTÁZ @  àÜ ü©?d ø;ÊÖÖ„ @  àÝ ý©?d 8<ʽ-È, @  àÞ þ©?d x<Ê?¼ßò @  àß ÿ©?d ¸<Êiú¬d @  àà ª?d ø<Êëk»º @  àá ª?d 8=ÊIÍÚõ @  àâ ª?d€ x=Ê¿ŸÑ @  á ª?d ¸=ÊŽõH @  áª?d ø=ʆ■@  áª?d 8>ʬüT @  áª?d x>Ê.mCà @  áª?d ¸>ÊÒ å @  áª?d ø>ÊP›; @  á ª?d 8?Ê<% @  á ª?d x?ʾ2Ð @  á  ª?duÐ@Ê7 ¸?ÊÚižÑ @  á  ª?d ø?ÊXø‰ @  á  ª?d P@Ê,ó%y @  á ª?d @Ê '‡ @  á ª?d Ð@Ê7Um @  áª?d AÊç“… @  áª?d PAÊtqf @  áª?d AÊT„ ˜ @  áª?d ÐAÊ’—³¹ @  áª?d BÊÓx @  áª?d PBÊ:åì @  áª?d BÊ @  áª?d ÐBÊDJ @  áª?d CÊ”[Æü @  áª?d PCʪ–cÿ @  áª?d CÊŠca @  áª?d ÐCÊLpØ  @  áª?d DÊU>+/ @  áª?d PDÊ`*» @  áª?d DÊ@ý(E @  áª?d ÐDÊæ)s @  á ª?d EÊ6Q¥› @  á!ª?d PEÊ´;È @  á "ª?d EÊ”Î6 @  á!#ª?d ÐEÊRÝ¢ @  á"$ª?d FÊ쪅 @  á#%ª?d PFÊú¯B @  á$&ª?d FÊÚZ¼ @  á%'ª?d ÐFÊ„Y[º @  á&(ª?d GÊT×R @  á')ª?d PGÊjÜrQ @  á(*ª?d GÊJ)p¯ @  á)+ª?d ÐGÊŒ:ÉŽ @  á*,ª?d HʸÅE“ @  á+-ª?d PHÊóD @  á,.ª?d HÊ­Fù @  á-/ª?d ÐHÊ–U~ @  á.0ª?d IÊFòû @  á/1ª?d PIÊÕqi @  á02ª?d IÊõ„kæ @  á13ª?d ÐIÊ3—ÒÇ @  á24ª?d JÊ®Ór @  á35ª?d PJÊ›ås’ @  á46ª?d JÊ»ql @  á57ª?d ÐJÊå+j @  á68ª?d KÊ5[§‚ @  á79ª?d PKÊ – @  á8:ª?d KÊ+c @  á9;ª?d ÐKÊíp¹^ @  á:<ª?d LÊô>JQ @  á;=ª?d PLÊÁKÅ @  á<>ª?d LÊáýI; @  á=?ª?d ÐLÊ·I] @  á>@ª?d MÊgÑô @  á?Aª?d PMÊKlk5 @  á@Bª?d MÊk™iË @  áACª?d ÐMÊ­ŠÐê @  áBDª?d NÊ0Îp+ @  áCEª?d PNÊøq¿ @  áDFª?d NÊ% sA @  áEGª?d ÐNÊ{)G @  áFHª?d OÊ«F¥¯ @  áGIª?d POÊ•‹¬ @  áHJª?d Oʵ~R @  áIKª?d ÐOÊsm»s @  áJLª?d PÊͳÁ @  áKMª?d PPÊø…U @  áLNª?d PÊØp« @  áMOª?d ÐPÊã# @  áUWª?d ÐRÊei8 @  áVXª?d SÊ@-åÐ @  áWYª?d PSÊ~à@Ó @  áXZª?d SÊ^B- @  áY[ª?d ÐSʘû  @  áZ\ª?d TÊH @  á[]ª?d PTÊ´~ — @  á\^ª?d TÊ”‹ i @  á]_ª?d ÐTÊ2o _ @  á^`ª?d UÊâ'†· @  á_aª?d PUÊ`M:ä @  á`bª?d UÊ@¸8 @  áacª?d ÐUʆ«; @  ábdª?d VÊï!ú @  áceª?d PVÊ.Ù n @  ádfª?d VÊ," @  áegª?d ÐVÊP/x– @  áfhª?d WÊ€gô~ @  ágiª?d PWʾªQ} @  áhjª?d WÊž_Sƒ @  áikª?d ÐWÊXLê¢ @  ájlª?d XÊl³f¿ @  ákmª?d PXÊY…g+ @  álnª?d XÊypeÕ @  ámoª?d ÐXÊB#]? @  ánpª?d YÊ’kÑ× @  áoqª?d PYÊJ4 @  áprª?d YÊ!òHÊ @  áqsª?d ÐYÊçáñë @  ártª?d ZÊz¥Q* @  ásuª?d PZÊO“P¾ @  átvª?d ZÊofR@ @  áuwª?d ÐZÊ1eF @  ávxª?d [Êá-„® @  áwyª?d P[Êßà!­ @  áxzª?d [Êÿ#S @  áy{ª?d Ð[Ê9šr @  áz|ª?d \Ê Hi} @  á{}ª?d P\Ê~hé @  á|~ª?d \Ê5‹j @  á}ª?d Ð\Ê~ù*¢ @  á~€ª?d ]Ê®±¦J @  áª?d P]ÊaŠ,º @  á€‚ª?d ]ÊA.D @  áƒª?d Ð]ʇl—e @  á‚„ª?d ^Ê(7¤ @  áƒ…ª?d P^Ê/60 @  á„†ª?d ^Êë4Î @  á…‡ª?d Ð^ÊQènÈ @  á†ˆª?d _Ê â  @  á‡‰ª?d P_Ê¿mG# @  áˆŠª?d _ÊŸ˜EÝ @  áuÐ`ʉ‹ª?d Ð_Ê›") @  áŠŒª?d (`Ê%Ú®± @  á‹ª?d h`Êì¯% @  áŒŽª?d ¨`Ê0­Û @  áª?d è`Ê J•1 @  áŽª?d (aÊÛÙ @  á‘ª?d haÊHn‚: @  á’ª?d ¨aÊh›€Ä @  á‘“ª?d èaÊ®ˆ9å @  á’”ª?d (bÊ3Ì™$ @  á“•ª?d hbÊú˜° @  á”–ª?d ¨bÊ&šN @  á•—ª?d èbÊx ÀH @  á–˜ª?d (cʨDL  @  á—™ª?d hcÊ–‰é£ @  á˜šª?d ¨cʶ|ë] @  á™›ª?d ècÊpoR| @  ášœª?d (dÊi!¡s @  á›ª?d hdÊ\ ç @  áœžª?d ¨dÊ|⢠@  áŸª?d èdÊÚ£/ @  áž ª?d (eÊ N/Ç @  áŸ¡ª?d heʈ$“” @  á ¢ª?d ¨eʨёj @  á¡£ª?d èeÊnÂ(K @  á¢¤ª?d (fÊ󆈊 @  á£¥ª?d hfÊư‰ @  á¤¦ª?d ¨fÊæE‹à @  á¥§ª?d èfʸFÑæ @  á¦¨ª?d (gÊh] @  á§©ª?d hgÊVÃø  @  á¨ªª?d ¨gÊv6úó @  á©«ª?d ègʰ%CÒ @  áª¬ª?d (hÊ„ÚÏÏ @  á«­ª?d hhʱìÎ[ @  á¬®ª?d ¨hʑ̥ @  á­¯ª?d èhʪJôO @  á®°ª?d (iÊzx§ @  á¯±ª?d hiÊénãD @  á°²ª?d ¨iÊɛẠ@  á±³ª?d èiʈX› @  á²´ª?d (jÊ’ÌøZ @  á³µª?d hjʧúùÎ @  á´¶ª?d ¨jʇû0 @  áµ·ª?d èjÊÙ ¡6 @  á¶¸ª?d (kÊ D-Þ @  á·¹ª?d hkÊ7‰ˆÝ @  á¸ºª?d ¨kÊ|Š# @  á¹»ª?d èkÊÑo3 @  áº¼ª?d (lÊÈ!À  @  á»½ª?d hlÊýÁ™ @  á¼¾ª?d ¨lÊÝâÃg @  á½¿ª?d èlÊ‹V×@ @  á¾Àª?d (mÊ[[¨ @  á¿Áª?d hmÊwsái @  áÀª?d ¨mÊW†ã— @  áÁê?d èmÊ‘•Z¶ @  áÂĪ?d (nÊ Ñúw @  áÃŪ?d hnÊ9çûã @  áÄƪ?d ¨nÊù @  áÅǪ?d ènÊG£ @  áÆȪ?d (oÊ—Y/ó @  áÇɪ?d hoÊ©”Šð @  áÈʪ?d ¨oʉaˆ @  áÉ˪?d èoÊOr1/ @  áÊ̪?d (pÊñ¬ @  áËͪ?d hpÊÄšŒ  @  áÌΪ?d ¨pÊäoŽ÷ @  áÍϪ?d èpÊß<¶ @  áÎЪ?d (qÊt:õ @  áÏѪ?d hqÊœ¡ @  áÐÒª?d ¨qʼí£è @  áÑÓª?d èqÊzþÉ @  áÒÔª?d (rÊ纺 @  áÓÕª?d hrÊÒŒ»œ @  áÔÖª?d ¨rÊòy¹b @  áÕת?d èrʬzãd @  áÖت?d (sÊ|2oŒ @  á×Ùª?d hsÊBÿÊ @  áØÚª?d ¨sÊb Èq @  áÙÛª?d èsʤqP @  áÚܪ?d (tʽW‚_ @  áÛݪ?d htʈaƒË @  áÜÞª?d ¨tʨ”5 @  áÝߪ?d ètÊp€ @  áÞàª?d (uÊÞ8 ë @  áßáª?d huÊ\R°¸ @  áàâª?d ¨uÊ|§²F @  ááãª?d èuʺ´ g @  áâäª?d€ (vÊæ·\¦ @  âåª?d hvÊ2À @  âæª?d ¨vÊ5å @  âçª?d èvʉ¶ @  âèª?d (wÊY7:æ @  âéª?d hwÊ©HÀŸ @  âêª?d ¨wʉ½Âa @  âëª?d èwÊ$: @  âìª?d (xʵã¨' @  â íª?d hxÊEœR^ @  â îª?d ¨xÊeiP  @  â ïª?d èxÊ›s“§ @  â ðª?d (yÊK;O @  â ñª?d hyÊ»Då6 @  âòª?d ¨yÊ›±çÈ @  âóª?d èyÊ>±?s @  âôª?d (zÊ£õŸ² @  âõª?d hzÊSŠeË @  âöª?d ¨zÊsg5 @  â÷ª?d èzÊè5ÆÞ @  âøª?d ({Ê8}J6 @  âùª?d h{ÊȰO @  âúª?d ¨{Êè÷²± @  âûª?d è{ÊàVTê @  âüª?d (|Êù§å @  âýª?d h|Ê g]œ @  âþª?d ¨|Ê)’_b @  âÿª?d è|ÊØÎ±6 @  â«?d (}ʆ=Þ @  â«?d h}Êøùǧ @  â«?d ¨}ÊØ ÅY @  â«?d è}Êl :R @  â «?d (~ÊñNš“ @  â!«?d h~Ê1`ê @  â"«?d ¨~Ê!Äb @  â#«?d è~ʺŽÃÿ @  â$«?d (ÊjÆO @  â% «?d hÊš¹µn @  â& «?d ¨ÊuЀÊ'ºL· @  â' «?d èÊÏm"· @  â(€ «?d @€Ê¡ÓÀà @  â)€ «?d €€ÊóÈ/š @  â*€«?d À€ÊqY8D @  â+€«?d ÊÝš`u @  â,€«?d @Ê_ w« @  â-€«?d €Ê ˜ò @  â.€«?d ÀÊ, @  â/€«?d ‚Ê5Tàˆ @  â0€«?d @‚Ê·Å÷V @  â1€«?d €‚ÊåÞ @  â2€«?d À‚ÊgOÑ @  â3€«?d ƒÊ®Ü5  @  â4€«?d @ƒÊ,M"Ò @  â5€«?d €ƒÊ~VÍ‹ @  â6€«?d ÀƒÊüÇÚU @  â7€«?d „Êo¹Øß @  â8€«?d @„Êí(Ï @  â9€«?d €„Ê¿3 X @  â:€«?d À„Ê=¢7† @  â;€«?d …Ê ÖVk @  â<€ «?d @…ÊŽGAµ @  â=€!«?d €…ÊÜ\®ì @  â>€"«?d À…Ê^͹2 @  â?€#«?d †Ê[÷´ @  â@€$«?d @†ÊÙˆàj @  âA€%«?d €†Ê‹“3 @  âB€&«?d À†Ê í @  âC€'«?d ‡ÊÀ‘"0 @  âD€(«?d @‡ÊB5î @  âE€)«?d €‡ÊÚ· @  âF€*«?d À‡Ê’ŠÍi @  âG€+«?d ˆÊ,E°ñ @  âH€,«?d @ˆÊ®Ô§/ @  âI€-«?d €ˆÊüÏHv @  âJ€.«?d ÀˆÊ~^_¨ @  âK€/«?d ‰ÊÒ™ @  âL€0«?d @‰ÊP G @  âM€1«?d €‰Êÿ @  âN€2«?d À‰Ê€†èÀ @  âO€3«?d ŠÊ:S‡d @  âP€4«?d @ŠÊ¸Âº @  âQ€5«?d €ŠÊêÙã @  âR€6«?d ÀŠÊhHh= @  âS€7«?d ‹Ê¡ÛRà @  âT€8«?d @‹Ê#JE> @  âU€9«?d €‹ÊqQªg @  âV€:«?d À‹ÊóÀ½¹ @  âW€;«?d ŒÊ`¾¿3 @  âX€<«?d @ŒÊâ/¨í @  âY€=«?d €ŒÊ°4G´ @  âZ€>«?d ÀŒÊ2¥Pj @  â[€?«?d Êó$– @  â\€@«?d @Êq3H @  â]€A«?d €Ê# Ü @  â^€B«?d ÀÊ¡šËÏ @  â_€C«?d ŽÊ IƒÛ @  â`€D«?d @ŽÊˆØ” @  âa€E«?d €ŽÊÚÃ{\ @  âb€F«?d ÀŽÊXRl‚ @  âc€G«?d Ê‘ÁV_ @  âd€H«?d @ÊPA @  âe€I«?d €ÊAK®Ø @  âf€J«?d ÀÊÃÚ¹ @  âg€K«?d Ê÷4ô1 @  âh€L«?d @Êu¥ãï @  âi€M«?d €Ê'¾ ¶ @  âj€N«?d ÀÊ¥/h @  âk€O«?d ‘Ê ìCY @  âl€P«?d @‘Ê‹}T‡ @  âm€Q«?d €‘ÊÙf»Þ @  ân€R«?d À‘Ê[÷¬ @  âo€S«?d ’Êá"ä @  âp€T«?d @’Êc³Ôz @  âq€U«?d €’Ê1¨;# @  âr€V«?d À’ʳ9,ý @  âs€W«?d “Êzª  @  ât€X«?d @“Êø;þ @  âu€Y«?d €“ʪ î§ @  âv€Z«?d À“Ê(±ùy @  âw€[«?d ”Ê»Ïûó @  âx€\«?d @”Ê9^ì- @  ây€]«?d €”ÊkEt @  âz€^«?d À”ÊéÔª @  â{€_«?d •ÊØ uG @  â|€`«?d @•ÊZ1b™ @  â}€a«?d €•Ê*À @  â~€b«?d À•ÊŠ»š @  â€c«?d –Êl9ä© @  â€€d«?d @–Êî¨ów @  â€e«?d €–ʼ³. @  â‚€f«?d À–Ê>" ð @  âƒ€g«?d —Ê÷±1- @  â„€h«?d @—Êu &ó @  â…€i«?d €—Ê';ɪ @  â†€j«?d À—Ê¥ªÞt @  â‡€k«?d ˜Êe£ì @  âˆ€l«?d @˜Ê™ô´2 @  â‰€m«?d €˜ÊËï[k @  âŠ€n«?d À˜ÊI~Lµ @  â‹€o«?d ™Ê彄 @  âŒ€p«?d @™Êg,Z @  â€q«?d €™Ê57ì @  âŽ€r«?d À™Ê·¦ûÝ @  â€s«?d šÊ s”y @  â€t«?d @šÊ⃧ @  â‘€u«?d €šÊÝùlþ @  â’€v«?d ÀšÊ_h{  @  â“€w«?d ›Ê–ûAý @  â”€x«?d @›ÊjV# @  â•€y«?d €›ÊFq¹z @  â–€z«?d À›ÊÄத @  â—€{«?d œÊWž¬. @  â˜€|«?d @œÊÕ»ð @  â™€}«?d €œÊ‡T© @  âš€~«?d ÀœÊ…Cw @  â›€«?d ÊÙgc @  âœ€€«?d @Ê[ötÇ @  â€«?d €Ê 훞 @  âž€‚«?d ÀÊ‹|Œ@ @  âŸ€ƒ«?d žÊ ¯ÄT @  â €„«?d @žÊ¢>ÓŠ @  â¡€…«?d €žÊð%<Ó @  â¢€†«?d ÀžÊr´+  @  â£€‡«?d ŸÊ»'Ð @  â¤€ˆ«?d @ŸÊ9¶ @  â¥€‰«?d €ŸÊk­éW @  â¦€Š«uРÊ?d ÀŸÊé<þ‰ @  â§€‹«?d  Êo‡¢ @  â¨Œ«?d X ÊíµÈ @  â©«?d ˜ Ê¿ Z‘ @  âªŽ«?d Ø Ê=œMO @  â««?d ¡Ê‘_~ @  â¬«?d X¡ÊΠ @  â­‘«?d ˜¡ÊAÕíù @  â®’«?d Ø¡ÊÃDú' @  â¯“«?d ¢Êy‘•ƒ @  â°”«?d X¢Êû‚] @  â±•«?d ˜¢Ê©m @  â²–«?d Ø¢Ê+ŠzÚ @  â³—«?d £Êâ@ @  â´˜«?d X£Ê`ˆWÙ @  âµ™«?d ˜£Ê2“¸€ @  â¶š«?d أʰ¯^ @  â·›«?d ¤Ê#|­Ô @  â¸œ«?d X¤Ê¡íº  @  â¹«?d ˜¤ÊóöUS @  âºž«?d ؤÊqgB @  â»Ÿ«?d ¥Ê@#` @  â¼ «?d X¥Ê‚4¾ @  â½¡«?d ˜¥Ê™Ûç @  â¾¢«?d Ø¥ÊÌ9 @  â¿£«?d ¦ÊÜ‚¿ @  âÀ¤«?d X¦Ê•M•a @  âÁ¥«?d ˜¦ÊÇVz8 @  â¦«?d ئÊEÇmæ @  âç«?d §ÊŒTW; @  âĨ«?d X§ÊÅ@å @  âÅ©«?d ˜§Ê\Þ¯¼ @  âƪ«?d اÊÞO¸b @  âÇ««?d ¨Ê`€Åú @  âȬ«?d X¨ÊâÒ$ @  âÉ­«?d ˜¨Ê° =} @  âÊ®«?d بÊ2›*£ @  â˯«?d ©ÊžXr’ @  â̰«?d X©ÊÉeL @  âͱ«?d ˜©ÊNÒŠ @  âβ«?d Ø©ÊÌCË @  âϳ«?d ªÊv–òo @  âд«?d XªÊôå± @  âѵ«?d ˜ªÊ¦ è @  âÒ¶«?d تÊ$6 @  âÓ·«?d «Êí'ë @  âÔ¸«?d X«Êo05 @  âÕ¹«?d ˜«Ê=”ßl @  âÖº«?d ثʿȲ @  â×»«?d ¬Ê,{Ê8 @  âؼ«?d X¬Ê®êÝæ @  âÙ½«?d ˜¬Êüñ2¿ @  âÚ¾«?d جÊ~`%a @  âÛ¿«?d ­Ê¿DQ @  âÜÀ«?d X­Ê=ÕFC @  âÝÁ«?d ˜­ÊoΩ @  âÞ«?d Ø­Êí_¾Ä @  âßë?d ®ÊFŒöÐ @  âàÄ«?d X®ÊÄá @  âáÅ«?d ˜®Ê–W @  ââÆ«?d€ Ø®Ê`T/ @  ãÇ«?d ¯ÊH†wÛ @  ãÈ«?d X¯ÊÊ` @  ãÉ«?d ˜¯Ê]Et± @  ãÊ«?d دÊßÔco @  ãË«?d °Ê%ˆq" @  ãÌ«?d X°Ê§fü @  ãÍ«?d ˜°Ê;°Öß @  ãΫ?d ذʹ!Á @  ã Ï«?d ±ÊЫbÝ @  ã Ы?d X±ÊR:u @  ã Ñ«?d ˜±ÊÅha· @  ã Ò«?d رÊGùvi @  ã Ó«?d ²Êž?xW @  ãÔ«?d X²Ê®o‰ @  ãÕ«?d ˜²Ê-¦áJ @  ãÖ«?d زʯ7ö” @  ã׫?d ³Ê£í7¤ @  ãØ«?d X³Ê!| z @  ãÙ«?d ˜³Ê¶.4Î @  ãÚ«?d سÊ4¿# @  ãÛ«?d ´Êis~à @  ãÜ«?d X´Êëâi> @  ãÝ«?d ˜´ÊwKÙ @  ãÞ«?d Ø´ÊõÚÎà @  ãß«?d µÊçTà @  ãà«?d XµÊƒvC @  ãá«?d ˜µÊ$W© @  ãâ«?d صÊ–µ@w @  ãã«?d ¶ÊOsNI @  ãä«?d X¶ÊÍâY— @  ãå«?d ˜¶Êíìðä @  ã æ«?d ضÊo}ç: @  ã!ç«?d ·Êc§&  @  ã"è«?d X·Êá61Ô @  ã#é«?d ˜·Êvd%` @  ã$ê«?d Ø·Êôõ2¾ @  ã%ë«?d ¸Ê„ˆ\ @  ã&ì«?d X¸Ê‚ @  ã'í«?d ˜¸Êš°·¡ @  ã(î«?d ظÊ!  @  ã)ï«?d ¹Êq«£ @  ã*ð«?d X¹Êó:} @  ã+ñ«?d ˜¹ÊdhÉ @  ã,ò«?d عÊæù @  ã-ó«?d ºÊ??) @  ã.ô«?d XºÊ½®÷ @  ã/õ«?d ˜ºÊŒ¦€4 @  ã0ö«?d غÊ7—ê @  ã1÷«?d »ÊíVÚ @  ã2ø«?d X»Ê€|A @  ã3ù«?d ˜»Ê.U° @  ã4ú«?d ػʕ¿Bn @  ã5û«?d ¼ÊÈsž @  ã6ü«?d X¼ÊJâ@ @  ã7ý«?d ˜¼ÊÖK¸c @  ã8þ«?d ؼÊTÚ¯½ @  ã9ÿ«?d ½Ê¤ @  ã:¬?d X½ÊŒŽ z @  ã;¬?d ˜½ÊÜÎ @  ã<¬?d ؽÊ™M  @  ã=¬?d ¾Ê@‹. @  ã>¬?d X¾ÊÂð @  ã?¬?d ˜¾ÊL¼ @  ã@¬?d ؾÊ΂«Ï @  ãA¬?d ¿ÊÂXjÿ @  ãB¬?d X¿Ê@É}! @  ãC ¬?d ˜¿Ê×›i• @uÐÀÊ  ãD ¬?d Ø¿ÊU ~K @  ãE ¬?d 0ÀÊuxæ @  ãF ¬?d pÀÊ÷é–8 @  ãG ¬?d °ÀÊk@& @  ãH¬?d ðÀÊéÑ1Å @  ãI¬?d 0ÁÊ€[’ @  ãJ¬?d pÁÊÊ…Ç @  ãK¬?d °ÁÊ•˜‘s @  ãL¬?d ðÁÊ †­ @  ãM¬?d 0ÂÊÎψ“ @  ãN¬?d pÂÊL^ŸM @  ãO¬?d °ÂÊ}VŽ @  ãP¬?d ðÂÊÿÇP @  ãQ¬?d 0ÃÊóÇ` @  ãR¬?d pÃÊqŒÐ¾ @  ãS¬?d °ÃÊæÞÄ  @  ãT¬?d ðÃÊdOÓÔ @  ãU¬?d 0ÄÊ9ƒŽ$ @  ãV¬?d pÄÊ»™ú @  ãW¬?d °ÄÊ'»)Ù @  ãX¬?d ðÄÊ¥*> @  ãY¬?d 0ÅÊQ¤ @  ãZ ¬?d pÅÊÓ†³Ù @  ã[!¬?d °ÅÊDÔ§m @  ã\"¬?d ðÅÊÆE°³ @  ã]#¬?d 0ÆÊƒ¾ @  ã^$¬?d pÆÊ©S @  ã_%¬?d °ÆÊ½  @  ã`&¬?d ðÆÊ?þ @  ãa'¬?d 0ÇÊ3WÖÎ @  ãb(¬?d pÇʱÆÁ @  ãc)¬?d °ÇÊ&”Õ¤ @  ãd*¬?d ðÇʤÂz @  ãe+¬?d 0ÈÊÔxà˜ @  ãf,¬?d pÈÊVé÷F @  ãg-¬?d °ÈÊÊ@Ge @  ãh.¬?d ðÈÊHÑP» @  ãi/¬?d 0ÉÊ![óg @  ãj0¬?d pÉÊ£Êä¹ @  ãk1¬?d °ÉÊ4˜ð  @  ãl2¬?d ðÉʶ çÓ @  ãm3¬?d 0ÊÊoÏéí @  ãn4¬?d pÊÊí^þ3 @  ão5¬?d °ÊÊÜVpð @  ãp6¬?d ðÊÊ^Çg. @  ãq7¬?d 0ËÊR¦ @  ãr8¬?d pËÊÐŒ±À @  ãs9¬?d °ËÊGÞ¥t @  ãt:¬?d ðËÊÅO²ª @  ãu;¬?d 0ÌʘƒïZ @  ãv<¬?d pÌÊø„ @  ãw=¬?d °Ìʆ»H§ @  ãx>¬?d ðÌÊ*_y @  ãy?¬?d 0ÍÊGÐh @  ãz@¬?d pÍÊ‚ÖǶ @  ã{A¬?d °ÍÊ„Ó @  ã|B¬?d ðÍÊ—ÄÜ @  ã}C¬?d 0ÎÊNÓÊâ @  ã~D¬?d pÎÊÌBÝ< @  ãE¬?d °ÎÊ¡Bì @  ã€F¬?d ðÎÊ#ŒU2 @  ãG¬?d 0ÏÊ/V” @  ã‚H¬?d pÏÊ­ÇƒÜ @  ãƒI¬?d °ÏÊ:•—h @  ã„J¬?d ðÏʸ€¶ @  ã…K¬?d 0ÐÊBX’û @  ã†L¬?d pÐÊÀÉ…% @  ã‡M¬?d °ÐÊ\`5 @  ãˆN¬?d ðÐÊÞñ"Ø @  ã‰O¬?d 0ÑÊ·{ @  ãŠP¬?d pÑÊ5ê–Ú @  ã‹Q¬?d °ÑÊ¢¸‚n @  ãŒR¬?d ðÑÊ )•° @  ãS¬?d 0ÒÊù @  ãŽT¬?d pÒÊ{~ŒP @  ãU¬?d °ÒÊJv“ @  ãV¬?d ðÒÊÈçM @  ã‘W¬?d 0ÓÊÄ=Ô} @  ã’X¬?d pÓÊF¬Ã£ @  ã“Y¬?d °ÓÊÑþ× @  ã”Z¬?d ðÓÊSoÀÉ @  ã•[¬?d 0ÔÊ£9 @  ã–\¬?d pÔÊŒ2Šç @  ã—]¬?d °ÔÊ›:Ä @  ã˜^¬?d ðÔÊ’ - @  ã™_¬?d 0ÕÊf7· @  ãš`¬?d pÕÊ䦠Ä @  ã›a¬?d °ÕÊsô´p @  ãœb¬?d ðÕÊñe£® @  ãc¬?d 0ÖÊ(£­ @  ãžd¬?d pÖʪ2ºN @  ãŸe¬?d °ÖÊŠ<= @  ã f¬?d ðÖÊ­ã @  ã¡g¬?d 0×ÊwÅÓ @  ã¢h¬?d p×ʆæÒ  @  ã£i¬?d °×ʴƹ @  ã¤j¬?d ð×Ê“%Ñg @  ã¥k¬?d 0ØÊãXó… @  ã¦l¬?d pØÊaÉä[ @  ã§m¬?d °ØÊý`Tx @  ã¨n¬?d ðØÊñC¦ @  ã©o¬?d 0ÙÊ{àz @  ãªp¬?d pÙÊ”ê÷¤ @  ã«q¬?d °Ùʸã @  ã¬r¬?d ðÙÊ)ôÎ @  ã­s¬?d 0ÚÊXïúð @  ã®t¬?d pÚÊÚ~í. @  ã¯u¬?d °ÚÊëvcí @  ã°v¬?d ðÚÊiçt3 @  ã±w¬?d 0ÛÊe=µ @  ã²x¬?d pÛÊ笢Ý @  ã³y¬?d °ÛÊpþ¶i @  ã´z¬?d ðÛÊòo¡· @  ãµ{¬?d 0Üʯ£üG @  ã¶|¬?d pÜÊ-2ë™ @  ã·}¬?d °Üʱ›[º @  ã¸~¬?d ðÜÊ3 Ld @  ã¹¬?d 0ÝÊ*¡—ç @  ãº€¬?d pÝʨ0€9 @  ã»¬?d °ÝÊ?b” @  ã¼‚¬?d ðÝʽóƒS @  ã½ƒ¬?d 0ÞÊd5m @  ã¾„¬?d pÞÊ椚³ @  ã¿…¬?d °ÞÊh­5R @  ãÀ†¬?d ðÞÊê<"Œ @  ãÁ‡¬?d 0ßÊææã¼ @  ãˆ¬?d pßÊdwôb @  ãɬ?d uÐàÊ/°ßÊó%àÖ @  ãÄЬ?d ðßÊq´÷ @  ãÅ‹¬?d HàÊ,’ @  ãÆŒ¬?d ˆàÊ gÿ @  ãǬ?d ÈàÊ2ª ü @  ãÈެ?d áÊââ, @  ãɬ?d HáÊÙ±þ @  ãʬ?d ˆáÊùD @  ãË‘¬?d ÈáÊÌr” @  ãÌ’¬?d âÊQ6·U @  ãÍ“¬?d HâÊ—%t @  ãΔ¬?d ˆâÊ·Ð Š @  ãÏ•¬?d ÈâÊ$¼—i @  ãЖ¬?d ãÊôô @  ãÑ—¬?d Hãʪ÷A‡ @  ãÒ˜¬?d ˆãÊŠCy @  ãÓ™¬?d ÈãÊ¿4Bí @  ãÔš¬?d äʦz±â @  ãÕ›¬?d HäÊ`ià @  ãÖœ¬?d ˆäÊ@œ = @  ã׬?d ÈäÊ~Q¯> @  ãØž¬?d åÊ®#Ö @  ãÙŸ¬?d HåÊý"à @  ãÚ ¬?d ˆåÊ(  @  ãÛ¡¬?d ÈåÊ>!Š @  ãÜ¢¬?d æÊ€zK @  ãÝ£¬?d HæÊFi8j @  ãÞ¤¬?d ˆæÊfœ:” @  ãߥ¬?d ÈæÊäö†Ç @  ãব?d çÊ4¾ / @  ã᧬?d HçÊj½P) @  ã⨬?d€ ˆçÊÌún @  ä©¬?d ÈçÊi³Ó @  äª¬?d èÊ,–?Î @  ä«¬?d HèÊ/Ì} @  ä¬¬?d ˆèÊ9ü @  ä­¬?d ÈèÊÿF…… @  ä®¬?d éÊ/ m @  ä¯¬?d HéÊÚïný @  ä°¬?d ˆéÊúl @  ä ±¬?d ÈéÊ e–z @  ä ²¬?d êÊ—!6» @  ä ³¬?d HêÊ”{tw @  ä ´¬?d ˆêÊ´Žv‰ @  ä µ¬?d ÈêÊDñŒð @  ä¶¬?d ëÊ”¹ @  ä·¬?d HëÊ©©;„ @  ä¸¬?d ˆëʉ\9z @  ä¹¬?d ÈëÊy#à @  äº¬?d ìÊ`m0  @  ä»¬?d HìÊc7rÀ @  ä¼¬?d ˆìÊCÂp> @  ä½¬?d Èìʳ½ŠG @  ä¾¬?d íÊcõ¯ @  ä¿¬?d HíÊûóMò @  äÀ¬?d ˆíÊÛO  @  äÁ¬?d ÈíÊ+yµu @  ä¬?d îʶ=´ @  äì?d HîʵgWx @  äĬ?d ˆîÊ•’U† @  äŬ?d ÈîÊeí¯ÿ @  äƬ?d ïʵ¥# @  äǬ?d HïÊ™³?; @  ä Ȭ?d ˆïʹF=Å @  ä!ɬ?d ÈïÊI9Ǽ @  ä"ʬ?d ðÊ÷ç{ @  ä#ˬ?d HðÊô½9 @  ä$̬?d ˆðÊÔH;< @  ä%ͬ?d ÈðÊ$7ÁE @  ä&ά?d ñÊôM­ @  ä'Ϭ?d HñÊž*= @  ä(Ь?d ˆñÊ!k(à @  ä)Ѭ?d ÈñÊÑÒº @  ä*Ò¬?d òÊLPr{ @  ä+Ó¬?d HòÊO 0· @  ä,Ô¬?d ˆòÊoÿ2I @  ä-Õ¬?d ÈòÊŸ€È0 @  ä.Ö¬?d óÊOÈDØ @  ä/׬?d HóÊrØD @  ä0ج?d ˆóÊR-}º @  ä1Ù¬?d ÈóÊ¢R‡Ã @  ä2Ú¬?d ôÊ»tÌ @  ä3Û¬?d HôʸF6 @  ä4ܬ?d ˆôʘ³4þ @  ä5ݬ?d ÈôÊhÌ· @  ä6Þ¬?d õʸ„Bo @  ä7߬?d HõÊÐÒ# @  ä8à¬?d ˆõÊð'Ý @  ä9á¬?d ÈõÊXä¤ @  ä:â¬?d öÊDe @  ä;ã¬?d HöÊžF© @  ä<ä¬?d ˆöʾ³W @  ä=å¬?d ÈöÊNÌþ. @  ä>æ¬?d ÷Êž„rÆ @  ä?ç¬?d H÷Ê•hx @  ä@è¬?d ˆ÷Ê<`j† @  äAé¬?d È÷ÊÌÿ @  äBê¬?d øÊøàâ @  äCë¬?d HøÊûº^. @  äDì¬?d ˆøÊÛO\Ð @  äEí¬?d ÈøÊ+0¦© @  äFî¬?d ùÊûx*A @  äGï¬?d HùÊ™MÑ @  äHð¬?d ˆùÊ.lO/ @  äIñ¬?d ÈùÊÞµV @  äJò¬?d úÊCW— @  äKó¬?d HúÊ@ W[ @  äLô¬?d ˆúÊ`øU¥ @  äMõ¬?d Èúʇ¯Ü @  äNö¬?d ûÊ@Ï#4 @  äO÷¬?d HûÊ}ߨ @  äPø¬?d ˆûÊ]*V @  äQù¬?d ÈûÊ­Uà/ @  äRú¬?d üÊ´  @  äSû¬?d HüÊ·AQì @  äTü¬?d ˆüÊ—´S @  äUý¬?d ÈüÊgË©k @  äVþ¬?d ýÊ·ƒ%ƒ @  äWÿ¬?d HýÊM$o@ @  äX­?d ˆýÊmÑm¾ @  äY­?d ÈýÊ®—Ç @  äZ­?d þÊê7 @  ä[­?d HþʰuÊ @  ä\­?d ˆþÊ#Ew4 @  ä]­?d ÈþÊÓ:M @  ä^­?d ÿÊr¥ @  ä_­?d HÿÊ/d‰ @  ä`­?d ˆÿÊ‘w @  äauÐË ­?d ÈÿÊÿîå @  äb ­?d ˰ZÍÿ @  äc ­?d `˳3 @  äd ­?d  Ë“õÍ @  äe ­?d àËcŠw´ @  äf­?d ˳Âû\ @  äg­?d `ËF#œÌ @  äh­?d  ËfÖž2 @  äi­?d àË–©dK @  äj­?d Ë íÄŠ @  äk­?d `Ë·†F @  äl­?d  Ë(B„¸ @  äm­?d àËØ=~Á @  än­?d Ëuò) @  äo­?d `Ë5eɵ @  äp­?d  ËËK @  äq­?d àËåï12 @  är­?d Ëü¡Â= @  äs­?d `Ëÿû€ñ @  ät­?d  Ëß‚ @  äu­?d àË/qxv @  äv­?d Ëÿ9ôž @  äw­?d `Ë—oªÒ @  äx ­?d  Ë·š¨, @  äy!­?d àËGåRU @  äz"­?d ËÚ¡ò” @  ä{#­?d `ËÙû°X @  ä|$­?d  Ëù²¦ @  ä}%­?d àË qHß @  ä~&­?d ËÙ9Ä7 @  ä'­?d `˸~î¸ @  ä€(­?d  Ë˜‹ìF @  ä)­?d àËhô? @  ä‚*­?d Ë\ š" @  äƒ+­?d `Ë_QØî @  ä„,­?d  Ë¤Ú @  ä…-­?d àËÛ i @  ä†.­?d Ë_“¬ @  ä‡/­?d ` ˪rË @  äˆ0­?d   ËЇÉï @  ä‰1­?d à Ëzø3– @  äŠ2­?d Ë缓W @  ä‹3­?d ` ËäæÑ› @  äŒ4­?d   ËÄÓe @  ä5­?d à Ë4l) @  äŽ6­?d Ëä$¥ô @  ä7­?d ` ËÙ4žh @  ä8­?d   ËùÁœ– @  ä‘9­?d à Ë ¾fï @  ä’:­?d Ëð•à @  ä“;­?d ` ˪×, @  ä”<­?d   Ë3_ÕÒ @  ä•=­?d à Ëà /« @  ä–>­?d Ëh£C @  ä—?­?d ` Ë‹nè @  ä˜@­?d   Ë«›êà @  ä™A­?d à Ë[ä™ @  äšB­?d ËÆ °X @  ä›C­?d `ËÅúò” @  äœD­?d  Ëåðj @  äE­?d àËp  @  äžF­?d ËÅ8†û @  äŸG­?d `Ëé.š× @  ä H­?d  ËÉÛ˜) @  ä¡I­?d àË9¤bP @  ä¢J­?d ˇzÞâ @  ä£K­?d `Ë„ œ. @  ä¤L­?d  Ë¤ÕžÐ @  ä¥M­?d àËTªd© @  ä¦N­?d Ë„âèA @  ä§O­?d `ËqÑ @  ä¨P­?d  ËQö/ @  ä©Q­?d àË¡‰wV @  äªR­?d Ë<Í×— @  ä«S­?d `Ë?—•[ @  ä¬T­?d  Ëb—¥ @  ä­U­?d àËïmÜ @  ä®V­?d Ë?Uá4 @  ä¯W­?d `ËEÚ¨ @  ä°X­?d  Ë"°ØV @  ä±Y­?d àËÒÏ"/ @  ä²Z­?d ËËÑ  @  ä³[­?d `ËÈÛ“ì @  ä´\­?d  Ëè.‘ @  äµ]­?d àËQkk @  ä¶^­?d ËÈçƒ @  ä·_­?d `Ë O¹Ï @  ä¸`­?d  Ë€º»1 @  ä¹a­?d àËpÅAH @  äºb­?d Ëíበ@  ä»c­?d `ËîÛ£E @  ä¼d­?d  ËÎ.¡» @  ä½e­?d àË>Q[ @  ä¾f­?d Ëî×* @  ä¿g­?d `ËlÍ” @  äÀh­?d  ËLýÏj @  äÁi­?d à˼‚5 @  äÂj­?d ˈ}¹ @  äÃk­?d `Ë‹'û @  äÄl­?d  Ë«Òù< @  äÅm­?d àË[­E @  äÆn­?d Ë‹å­ @  äÇo­?d `Ë~è= @  äÈp­?d  Ë^ñêà @  äÉq­?d àË®Žº @  äÊr­?d Ë3ʰ{ @  äËs­?d `Ë0ò· @  äÌt­?d  ËeðI @  äÍu­?d àËà 0 @  äÎv­?d Ë0R†Ø @  äÏw­?d `Ë B½D @  äÐx­?d  Ë-·¿º @  äÑy­?d àËÝÈEà @  äÒz­?d ËƶÌ @  äÓ{­?d `ËÇÜô @  äÔ|­?d  Ëç)öþ @  äÕ}­?d àËV ‡ @  äÖ~­?d ËÇ€o @  ä×­?d `ËBÞŸ  @  äØ€­?d  Ëb+^ @  äÙ­?d àË’Tg' @  äÚ‚­?d ËÇæ @  äÛƒ­?d `Ë J…* @  äÜ„­?d  Ë,¿‡Ô @  äÝ…­?d àËÜÀ}­ @  äÞ†­?d Ë ˆñE @  ä߇­?d `Ë žíi @  äàˆ­?d  Ëkï—uÐ Ë @  äቭ?d àËðî @  ä⊭?d€ 8 ËõÜ×. @  å‹­?d x ËÇÝË @  åŒ­?d ¸ Ë72ß5 @  å­?d ø ËÞ¡ @  åŽ­?d 8!ËÒLRI @  å­?d x!Ëéj£ @  å­?d ¸!ËÉêh] @  å‘­?d ø!Ë÷'Í^ @  å’­?d 8"ËjcmŸ @  å “­?d x"ˬpÔ¾ @  å ”­?d ¸"ËŒ…Ö@ @  å •­?d ø"˹³×Ô @  å –­?d 8#Ëiû[< @  å —­?d x#Ë7ø: @  å˜­?d ¸#Ë Ä @  å™­?d ø#Ë„a˜' @  åš­?d 8$Ë/k( @  å›­?d x$Ë[<Ò  @  åœ­?d ¸$Ë{ÉÐ÷ @  å­?d ø$ËNÿÑc @  åž­?d 8%Ëž·]‹ @  åŸ­?d x%Ë8S\½ @  å ­?d ¸%˦^C @  å¡­?d ø%Ë&kû@ @  å¢­?d 8&Ë»/[ @  å£­?d x&Ë}<â  @  å¤­?d ¸&Ë]Éà^ @  å¥­?d ø&ËhÿáÊ @  å¦­?d 8'˸·m" @  å§­?d x'Ëæ´7$ @  å¨­?d ¸'ËÆA5Ú @  å©­?d ø'ËD+‰‰ @  å ª­?d 8(ËpÔ” @  å!«­?d x(˶Ǽµ @  å"¬­?d ¸(Ë–2¾K @  å#­­?d ø(Ë£¿ß @  å$®­?d 8)ËsL37 @  å%¯­?d x)ËH Ý @  å&°­?d ¸)Ëhê # @  å'±­?d ø)ËV'¬  @  å(²­?d 8*ËËc á @  å)³­?d x*Ë pµÀ @  å*´­?d ¸*Ë-…·> @  å+µ­?d ø*˳¶ª @  å,¶­?d 8+ËÈû:B @  å-·­?d x+Ë–ø`D @  å.¸­?d ¸+˶ bº @  å/¹­?d ø+Ë%aùY @  å0º­?d 8,ËÈ­?d ¸/Ë—Aµ @  å?É­?d ø/Ë»|ût @  å@Ê­?d 80Ë¢GÆ @  åAË­?d x0Ëñþç @  åBÌ­?d ¸0ËãDü @  åCÍ­?d ø0ËÖrý @  åDέ?d 81Ë:qe @  åEÏ­?d x1Ë=iI @  åFЭ?d ¸1ËœKq @  åGÑ­?d ø1Ë#Qîr @  åHÒ­?d 82˾N³ @  åIÓ­?d x2Ëx÷’ @  åJÔ­?d ¸2ËXóõl @  åKÕ­?d ø2ËmÅôø @  åLÖ­?d 83˽x @  åM×­?d x3ËãŽ" @  åNØ­?d ¸3ËÃ{ è @  åOÙ­?d ø3ËP»  @  åPÚ­?d 84ËIYH @  åQÛ­?d x4ËJñ% @  åRÜ­?d ¸4˯¿óÛ @  åSÝ­?d ø4Ëš‰òO @  åTÞ­?d 85ËJÁ~§ @  åUß­?d x5Ëì%‘ @  åVà­?d ¸5ËÌÐ}o @  åWá­?d ø5ËòØl @  åXâ­?d 86ËoYx­ @  åYã­?d x6Ë©JÁŒ @  åZä­?d ¸6ˉ¿Ãr @  å[å­?d ø6˼‰Âæ @  å\æ­?d 87ËlÁN @  å]ç­?d x7Ë2 @  å^è­?d ¸7Ë7ö @  å_é­?d ø7Ë]ª¥ @  å`ê­?d 88ˤ¢&¸ @  åaë­?d x8Ëb±Ÿ™ @  åbì­?d ¸8ËBDg @  åcí­?d ø8Ëwrœó @  ådî­?d 89˧: @  åeï­?d x9Ëœi(ñ @  åfð­?d ¸9˼œ* @  ågñ­?d ø9Ë‚Q  @  åhò­?d 8:Ë/Í @  åió­?d x:ËÙ–ì @  åjô­?d ¸:Ëùó” @  åkõ­?d ø:ËÌÅ•† @  ålö­?d 8;Ën @  åm÷­?d x;ËBŽCh @  ånø­?d ¸;Ëb{A– @  åoù­?d ø;ËñÚu @  åpú­?d 8<ËèY)z @  åqû­?d x<Ë.J[ @  årü­?d ¸<Ë¿’¥ @  åsý­?d ø<Ë;‰“1 @  åtþ­?d 8=ËëÁÙ @  åuÿ­?d x=Ëmö?E @  åv®?d ¸=ËM=» @  åw®?d ø=ËsΘ¸ @  åx®?d 8>ËîŠ8y @  åy®?d x>Ë(™X @  åz®?d ¸>Ëlƒ¦ @  å{®?d ø>Ë=Z‚2 @  å|®?d 8?ËíÚ @  å}®?d x?˳TÜ @  å~®?duÐ@Ë7 ¸?Ë“äV" @  å ®?d ø?Ë\ßÜÒ @  å€ ®?d P@˦´º; @  å  ®?d @ËÂÃ: @  å‚  ®?d Ð@Ë@Rä @  åƒ  ®?d AË'½›F @  å„ ®?d PAË¥,Œ˜ @  å… ®?d AË<¡R @  å† ®?d ÐAË¾Š¶Œ @  å‡ ®?d BËŸ’¤ @  åˆ ®?d PB˳N @  å‰ ®?d BËytO @  åŠ ®?d ÐBËûå‘ @  å‹ ®?d CËœ ’3 @  åŒ ®?d PCË›…í @  å ®?d CËâüÊË @  åŽ ®?d ÐCË`mÝ @  å ®?d DËhÞ¢' @  å ®?d PDËêOµù @  å‘ ®?d DËŽ8ø @  å’ ®?d ÐDË ©& @  å“ ®?d EËkF”„ @  å” ®?d PEËé׃Z @  å• ®?d EËíW—L @  å–  ®?d ÐEËoÆ€’ @  å— !®?d FËNÞ’Ž @  å˜ "®?d PFËÌO…P @  å™ #®?d F˨8)Q @  åš $®?d ÐFË*©> @  å› %®?d GËMF¤- @  åœ &®?d PGËÏ׳ó @  å '®?d GË3°üÕ @  åž (®?d ÐG˱!ë  @  åŸ )®?d HË…%Ì› @  å  *®?d PHË´ÛE @  å¡ +®?d HËcÃwD @  å¢ ,®?d ÐHËáR`š @  å£ -®?d Iˆ½ú8 @  å¤ .®?d PIË,íæ @  å¥ /®?d IËÀ, @  å¦ 0®?d ÐIËŠ×ò @  å§ 1®?d JË>’Åî @  å¨ 2®?d PJ˼Ò0 @  å© 3®?d JËØt~1 @  åª 4®?d ÐJËZåiï @  å« 5®?d KË= óM @  å¬ 6®?d PKË¿›ä“ @  å­ 7®?d KËCü«µ @  å® 8®?d ÐKËÁm¼k @  å¯ 9®?d LËÉÞÃY @  å° :®?d PLËKOÔ‡ @  å± ;®?d LË/8x† @  å² <®?d ÐLË­©oX @  å³ =®?d MËÊFõú @  å´ >®?d PMËH×â$ @  åµ ?®?d M˼ã# @  å¶ @®?d ÐMË>–ôý @  å· A®?d NËŽæá @  å¸ B®?d PNËñ? @  å¹ C®?d NËùh]> @  åº D®?d ÐNË{ùJà @  å» E®?d OËÐB @  å¼ F®?d POËž‡Çœ @  å½ G®?d OËbàˆº @  å¾ H®?d ÐOËàqŸd @  å¿ I®?d PËðSŽÉ @  åÀ J®?d PPËr™ @  åÁ K®?d P˵5 @  å L®?d ÐPË”$"È @  åà M®?d QËó˸j @  åÄ N®?d PQËqZ¯´ @  åÅ O®?d QËèm‚~ @  åÆ P®?d ÐQËjü•  @  åÇ Q®?d RËK䇼 @  åÈ R®?d PRËÉub @  åÉ S®?d RË­9–Õ @  åÑ [®?d TËZN:Ô @  åÒ \®?d ÐTËØß-  @  åÓ ]®?d UË¿0·¨ @  åÔ ^®?d PUË=¡ v @  åÕ _®?d UË9!´` @  åÖ `®?d ÐUË»°£¾ @  å× a®?d VËš¨±¢ @  åØ b®?d PVË9¦| @  åÙ c®?d VË|N } @  åÚ d®?d ÐVËþߣ @  åÛ e®?d WË™0‡ @  åÜ f®?d PWË¡ß @  åÝ g®?d WËçÆßù @  åÞ h®?d ÐWËeWÈ' @  åß i®?d XËQSï· @  åà j®?d PXËÓÂøi @  åá k®?d XË·µTh @  åâ l®?d€ ÐXËôc´¶ @  æ m®?d YËrÍf= @  æ n®?d PYËð\qã @  æ o®?d Yˬ"§Ä @  æ p®?d ÐYË.³° @  æ q®?d ZËÁý| @  æ r®?d PZËCˆê¢ @  æ s®?d ZËéMÙ @  æ t®?d ÐZËkÜ @  æ u®?d [ËÉzoH @  æ v®?d P[ËKëx– @  æ w®?d [ËrÅÌ] @  æ x®?d Ð[ËðTÛƒ @  æ y®?d \Ë›ôÅ+ @  æ z®?d P\ËeÒõ @  æ {®?d \Ën @  æ |®?d Ð\Ëœ° @  æ }®?d ]Ë>6iÿ @  æ ~®?d P]˼§~! @  æ ®?d ]ËøÐY @  æ €®?d Ð]ËiLJ @  æ ®?d ^ËýÊá @  æ ‚®?d P^ËR? @  æ ƒ®?d ^ËÕ—nD @  æ „®?d Ð^ËWyš @  æ …®?d _Ëõ Õ @  æ †®?d P_Ëw1  @  æ ‡®?d _ËN»À @  æuÐ`Ë ˆ®?d Ð_ËÌŽ¬ @  æ ‰®?d (`˘ô! @  æ Š®?d h`Ë‚ ãÿ @  æ ‹®?d ¨`Ë”k Ô @  æ Œ®?d è`Ëú  @  æ! ®?d (aË´\E @  æ" Ž®?d haË6Íh› @  æ# ®?d ¨aËj³¾¼ @  æ$ ®?d èaËè"©b @  æ% ‘®?d (bˈä @  æ& ’®?d hbË…óÚ @  æ' “®?d ¨bË/Ü¡ @  æ( ”®?d èbË­M @  æ) •®?d (cËëv0 @  æ* –®?d hcËzaî @  æ+ —®?d ¨cË´TÕ% @  æ, ˜®?d ècË6ÅÂû @  æ- ™®?d (dË]eÜS @  æ. š®?d hdËßôË @  æ/ ›®?d ¨dËØ @  æ0 œ®?d èdËZÈ @  æ1 ®?d (eËø§p‡ @  æ2 ž®?d heËz6gY @  æ3 Ÿ®?d ¨eË»ÿˆ¢ @  æ4  ®?d èeË9nŸ| @  æ5 ¡®?d (fËÖÄÒ @  æ6 ¢®?d hfËTUÅÄ @  æ7 £®?d ¨fËþ6¿ @  æ8 ¤®?d èfË|!a @  æ9 ¥®?d (gËÞ§@. @  æ: ¦®?d hgË\6Wð @  æ; §®?d ¨gËeã; @  æ< ¨®?d ègËç‰ôå @  æ= ©®?d (hË¡˜•_ @  æ> ª®?d hhË# ‚ @  æ? «®?d ¨hË›ln8 @  æ@ ¬®?d èhËýyæ @  æA ­®?d (iË»[© @  æB ®®?d hiË9Êw @  æC ¯®?d ¨iËe´ÙP @  æD °®?d èiËç%ÎŽ @  æE ±®?d (j˃è @  æF ²®?d hjËŠ”6 @  æG ³®?d ¨jË ÛgM @  æH ´®?d èjË¢Jp“ @  æI µ®?d (kËìÜ @  æJ ¶®?d hkË‚} @  æK ·®?d ¨kË»S²É @  æL ¸®?d èkË9Â¥ @  æM ¹®?d (lËRb»¿ @  æN º®?d hlËÐó¬a @  æO »®?d ¨lË×—aú @  æP ¼®?d èlËUv$ @  æQ ½®?d (mË÷ k @  æR ¾®?d hmËu1µ @  æS ¿®?d ¨mËD¨ú_ @  æT À®?d èmËÆ9í @  æU Á®?d (nË)“ ç @  æV ®?d hnË«·9 @  æW î?d ¨nËÇDB @  æX Ä®?d èn˃VSœ @  æY Å®?d (oË!ð2Ó @  æZ Æ®?d hoË£a%  @  æ[ Ç®?d ¨oËšO‘Æ @  æ\ È®?d èoËÞ† @  æ] É®?d (pËÔî×  @  æ^ Ê®?d hpËVÀÓ @  æ_ Ë®?d ¨pË@*ø @  æ` Ì®?d èpËÂŒ=& @  æa Í®?d (qË`*\i @  æb ή?d hqËâ»K· @  æc Ï®?d ¨q˾Š@  æd Ю?d èqˇ+ @  æ‡ ó®?d ¨zËûtP @  æˆ ô®?d èzË•jcŽ @  æ‰ õ®?d ({Ë7ÌÁ @  æŠ ö®?d h{˵] @  æ‹ ÷®?d ¨{ËŒs¡Ô @  æŒ ø®?d è{Ëâ¶  @  æ ù®?d (|ËeB¨¢ @  æŽ ú®?d h|ËçÓ¿| @  æ û®?d ¨|Ëà·rç @  æ ü®?d è|Ëb&e9 @  æ‘ ý®?d (}ËÀ€v @  æ’ þ®?d h}ËB¨ @  æ“ ÿ®?d ¨}Ë)èÜ @  æ” ¯?d è}Ë“¸ÿ @  æ• ¯?d (~Ë|²d @  æ– ¯?d h~Ëþƒ¥º @  æ— ¯?d ¨~ËTFVÁ @  æ˜ ¯?d è~ËÖ×A @  æ™ ¯?d (Ëtq P @  æš ¯?d hËöà7Ž @  æ› ¯?d ¨ËuЀË'Ï΃E @  æœ ¯?d èËt˜HN @  æ ¯?d @€ËhÈG @  æž ¯?d €€ËH=Ec @  æŸ ¯?d À€Ëü;ºh @  æ  ¯?d Ë,s6€ @  æ¡ ¯?d @ËÜ Ìù @  æ¢¯?d €ËüùÎ @  æ£¯?d ÀËã  @  æ¤¯?d ‚ËŸ§­Á @  æ¥¯?d @‚ËoØW¸ @  æ¦¯?d €‚ËO-UF @  æ§¯?d À‚ËGŒ³ @  æ¨¯?d ƒË—Ä?õ @  æ©¯?d @ƒËg»ÅŒ @  æª¯?d €ƒËGNÇr @  æ«¯?d ÀƒËÜf™ @  æ¬¯?d „ËÅJ•– @  æ­¯?d @„Ë55oï @  æ®¯?d €„ËÀm @  æ¯¯?d À„˰Àµª @  æ°¯?d …Ë`ˆ9B @  æ±¯?d @…Ë÷Ã; @  æ²¯?d €…˰ÁÅ @  æ³¯?d À…ËÓ¯; @  æ´ ¯?d †ËNë›ß @  æµ!¯?d @†Ë¾”a¦ @  æ¶"¯?d €†ËžacX @  æ·#¯?d À†Ë–À… @  æ¸$¯?d ‡ËFˆ ë @  æ¹%¯?d @‡Ë¶÷ó’ @  æº&¯?d €‡Ë–ñl @  æ»'¯?d À‡Ë HP‡ @  æ¼(¯?d ˆË9·Üš @  æ½)¯?d @ˆËÉÈ&ã @  æ¾*¯?d €ˆËé=$ @  æ¿+¯?d ÀˆËó<Ý„ @  æÀ,¯?d ‰Ë#tQl @  æÁ-¯?d @‰ËÓ « @  æÂ.¯?d €‰Ëóþ©ë @  æÃ/¯?d À‰Ë äjì @  æÄ0¯?d ŠË Ê- @  æÅ1¯?d @ŠË`ß0T @  æÆ2¯?d €ŠË@*2ª @  æÇ3¯?d ÀŠËH‹Ôñ @  æÈ4¯?d ‹Ë˜ÃX @  æÉ5¯?d @‹Ëh¼¢` @  æÊ6¯?d €‹ËHI ž @  æË7¯?d À‹ËÓu @  æÌ8¯?d ŒËÊMòz @  æÍ9¯?d @ŒË:2 @  æÎ:¯?d €ŒËÇ ý @  æÏ;¯?d ÀŒË¿ÇÒF @  æÐ<¯?d Ëo^® @  æÑ=¯?d @ËŸð¤× @  æÒ>¯?d €Ë¿¦) @  æÓ?¯?d ÀË,øIã @  æÔ@¯?d ŽË±¼é" @  æÕA¯?d @ŽËAÃ[ @  æÖB¯?d €ŽËa6¥ @  æ×C¯?d ÀŽËi—÷þ @  æØD¯?d ˹ß{ @  æÙE¯?d @ËI o @  æÚF¯?d €ËiUƒ‘ @  æÛG¯?d ÀËò"z @  æÜH¯?d ËLÁžÈ @  æÝI¯?d @˼¾d± @  æÞJ¯?d €ËœKfO @  æßK¯?d ÀË(M™D @  æàL¯?d ‘Ëø¬ @  æáM¯?d @‘ËzïÕ @  æâN¯?d€ €‘Ë\Lñ @  çO¯?d À‘ËCz£ @  çP¯?d ’ËÞSÚb @  çQ¯?d @’ËëeÛö @  çR¯?d €’ËËÙ @  çS¯?d À’Ë ƒ`) @  çT¯?d “ËÝËìÁ @  çU¯?d @“ËãI @  çV¯?d €“ËÃóK< @  ç W¯?d À“Ëð: @  ç X¯?d ”Ë„¾â5 @  ç Y¯?d @”˱ˆã¡ @  ç Z¯?d €”Ë‘}á_ @  ç [¯?d À”ËWnX~ @  ç\¯?d •ˇ&Ô– @  ç]¯?d @•ËJOu @  ç^¯?d €•Ë4¿M‹ @  ç_¯?d À•Ë’[L½ @  ç`¯?d –Ëì| @  ça¯?d @–Ë:)íè @  çb¯?d €–ËÜï @  çc¯?d À–ËÜÏV7 @  çd¯?d —Ë ‡Úß @  çe¯?d @—Ë2JÜ @  çf¯?d €—Ë¿}" @  çg¯?d À—ËL¼'$ @  çh¯?d ˜ËxC«9 @  çi¯?d @˜ËMuª­ @  çj¯?d €˜Ëm€¨S @  çk¯?d À˜Ë«“r @  çl¯?d ™Ë{Ûš @  çm¯?d @™Ëù±!É @  ç n¯?d €™ËÙD#7 @  ç!o¯?d À™ËâÝ @  ç"p¯?d šËS» @  ç#q¯?d @šËJeºˆ @  ç$r¯?d €šËj¸v @  ç%s¯?d ÀšË¬ƒW @  ç&t¯?d ›Ë|Ë¿ @  ç'u¯?d @›ËB(¼ @  ç(v¯?d €›Ëbó*B @  ç)w¯?d À›Ë<ðpD @  ç*x¯?d œË%¾ƒK @  ç+y¯?d @œËˆ‚ß @  ç,z¯?d €œË0}€! @  ç-{¯?d ÀœËön9 @  ç.|¯?d Ë&&µè @  ç/}¯?d @˵J.  @  ç0~¯?d €Ë•¿,õ @  ç1¯?d ÀËÞÍl@ @  ç2€¯?d žËC‰Ì @  ç3¯?d @žËv¿Í @  ç4‚¯?d €žËVJÏë @  ç5ƒ¯?d ÀžËYvÊ @  ç6„¯?d ŸË@ú" @  ç7…¯?d @ŸË~Ü_! @  ç8†¯?d €ŸË^)]ß @  ç9‡¯uРË?d ÀŸË*Ù @  ç:ˆ¯?d  Ëq!Ù¿ @  ç;‰¯?d X ËDØ+ @  ç<Н?d ˜ ËdâÚÕ @  ç=‹¯?d ؠˢñcô @  ç>Œ¯?d ¡Ër¹ï @  ç?¯?d X¡Ë^ÔUÝ @  ç@ޝ?d ˜¡Ë~!W# @  çA¯?d Ø¡ËEroÉ @  çB¯?d ¢ËØ6Ï @  çC‘¯?d X¢ËíΜ @  çD’¯?d ˜¢ËÍõÌb @  çE“¯?d Ø¢Ë æuC @  çF”¯?d £ËÛ®ù« @  çG•¯?d X£Ëåc\¨ @  çH–¯?d ˜£ËÅ–^V @  çI—¯?d أ˛•P @  çJ˜¯?d ¤Ë‚Û÷_ @  çK™¯?d X¤Ë·íöË @  çLš¯?d ˜¤Ë—ô5 @  çM›¯?d ؤËQ M @  çNœ¯?d ¥ËCÁü @  çO¯?d X¥Ë/Z @  çPž¯?d ˜¥Ë2ÚXá @  çQŸ¯?d إ˔>Y× @  çR ¯?d ¦Ë zù @  çS¡¯?d X¦Ë @  çϯ?d رËrR|Ô @  ç‚Я?d ²ËïÜ @  çƒѯ?d X²ËÚ Ý @  ç„Ò¯?d ˜²ËúÕß @  ç…Ó¯?d زË<Æf^ @  ç†Ô¯?d ³ËìŽê¶ @  ç‡Õ¯?d X³ËÒCOµ @  çˆÖ¯?d ˜³Ëò¶MK @  ç‰ׯ?d سˬµM @  çŠد?d ´ËµûäB @  ç‹Ù¯?d X´Ë€ÍåÖ @  çŒÚ¯?d ˜´Ë 8ç( @  çÛ¯?d Ø´Ëf+^  @  çŽܯ?d µË¶cÒá @  çݯ?d XµË%I @  çÞ¯?d ˜µËúKü @  ç‘߯?d صË£JÊ @  ç’à¯?d ¶Ë>Zê  @  ç“á¯?d X¶Ë lëŸ @  ç”â¯?d ˜¶Ë+™éa @  ç•ã¯?d ضËíŠP@ @  ç–ä¯?d ·Ë=Âܨ @  ç—å¯?d X·Ëy« @  ç˜æ¯?d ˜·Ë#ú{U @  ç™ç¯?d Ø·Ë}ù!S @  çšè¯?d ¸ËI­N @  ç›é¯?d X¸Ë|0¬Ú @  çœê¯?d ˜¸Ë\Å®$ @  çë¯?d ظËšÖ @  çžì¯?d ¹ËJž›í @  çŸí¯?d X¹ËÈô'¾ @  ç î¯?d ˜¹Ëè%@ @  ç¡ï¯?d عËÓRª @  ç¢ð¯?d ºËN½k @  ç£ñ¯?d XºË{ ¼ÿ @  ç¤ò¯?d ˜ºË[Õ¾ @  ç¥ó¯?d غËÆ  @  ç¦ô¯?d »ËMŽ‹È @  ç§õ¯?d X»ËsC.Ë @  ç¨ö¯?d ˜»ËS¶,5 @  ç©÷¯?d Ø»Ë µv3 @  çªø¯?d ¼Ëû…< @  ç«ù¯?d X¼Ë!Í„¨ @  ç¬ú¯?d ˜¼Ë8†V @  ç­û¯?d ؼËÇ+?w @  ç®ü¯?d ½Ëc³Ÿ @  ç¯ý¯?d X½Ë„(| @  ç°þ¯?d ˜½Ë¤ú*‚ @  ç±ÿ¯?d ؽËij‹ @  ç²°?d ¾Ëô.¹J @  ç³°?d X¾ËÁ¸Þ @  ç´°?d ˜¾Ëáíº  @  çµ°?d ؾË'þ @  ç¶°?d ¿Ë÷¶é @  ç·°?d X¿ËÉ{*ê @  ç¸°?d ˜¿ËéŽ( @uÐÀË  ç¹°?d ؿ˷r @  çº°?d 0ÀËÓ}#@ @  ç» °?d pÀËæK"Ô @  ç¼ °?d °ÀËƾ * @  ç½ °?d ðÀË­™  @  ç¾ °?d 0ÁËÐåã @  ç¿ °?d pÁËüˆ¯" @  çÀ°?d °ÁËÜ}­Ü @  çÁ°?d ðÁËç.•6 @  ç°?d 0ÂËzj5÷ @  çð?d pÂËO\4c @  çİ?d °ÂËo©6 @  çŰ?d ðÂË©º¼ @  çư?d 0ÃËyòT @  çǰ?d pÃËG?¦W @  çȰ?d °ÃËgʤ© @  çɰ?d ðÃË9Éþ¯ @  çʰ?d 0ÄË ‡   @  ç˰?d pÄ˱ 4 @  ç̰?d °ÄË5DÊ @  çͰ?d ðÄËóW·ë @  çΰ?d 0ÅË#; @  çϰ?d pÅ˰s à @  çа?d °Åˆ¢ @  çѰ?d ðÅË6b£( @  çÒ °?d 0ÆË«&é @  çÓ!°?d pÆËž} @  çÔ"°?d °ÆË¾åƒ @  çÕ#°?d ðÆËxö¹¢ @  çÖ$°?d 0Ç˨¾5J @  ç×%°?d pÇË–sI @  çØ&°?d °Ç˶†’· @  çÙ'°?d ðÇËè…ȱ @  çÚ(°?d 0ÈËÜzD¬ @  çÛ)°?d pÈËéLE8 @  çÜ*°?d °ÈËɹGÆ @  çÝ+°?d ðÈ˪þç @  çÞ,°?d 0ÉËßâr @  çß-°?d pÉË]ˆÎ\ @  çà.°?d °ÉË}}Ì¢ @  çá/°?d ðÉËF.ôH @  çâ0°?d€ 0ÊËóð@Û @  è1°?d pÊË'‡ f @  è2°?d °ÊËr ˜ @  è3°?d ðÊË(IT @  è4°?d 0ËËÔ`ż @  è5°?d pËË$?Å @  è6°?d °ËËê=; @  è7°?d ðËË”[8G @  è8°?d 0ÌËËH @  è 9°?d pÌË}j11 @  è :°?d °ÌË]Ÿ3Ï @  è ;°?d ðÌË^Åq @  è <°?d 0ÍËŽýë @  è =°?d pÍË~ò’ @  è>°?d °ÍË^l @  è?°?d ðÍËk pÑ @  è@°?d 0ÎËöäÐ @  èA°?d pÎË›*i @  èB°?d °ÎË&n(— @  èC°?d ðÎË%4j[ @  èD°?d 0ÏËõ|æ³ @  èE°?d pÏËÊ @  èF°?d °ÏË%ö4 @  èG°?d ðÏ˵GH @  èH°?d 0ÐË ™§ú @  èI°?d pÐËûæ]ƒ @  èJ°?d °ÐËÛ_} @  èK°?d ðÐËØI± @  èL°?d 0ÑË‘Y @  èM°?d pÑËø~k  @  èN°?d °ÑËØ‹iÞ @  èO°?d ðÑË‘Í @  è P°?d 0ÒË ‰·ß @  è!Q°?d pÒËüöM¦ @  è"R°?d °ÒËÜOX @  è#S°?d ðÒËßY ” @  è$T°?d 0ÓË| @  è%U°?d pÓËÿn{ @  è&V°?d °ÓËß›yû @  è'W°?d ðÓËO*|‡ @  è(X°?d 0ÔËVdˆ @  è)Y°?d pÔ˦uñ @  è*Z°?d °Ôˆîw @  è+[°?d ðÔË…´5à @  è,\°?d 0ÕËUü¹+ @  è-]°?d pÕË¥ƒCR @  è.^°?d °ÕË…vA¬ @  è/_°?d ðÕË@! @  è0`°?d 0ÖËÝÅÁ @  è1a°?d pÖË-º{¸ @  è2b°?d °ÖË OyF @  è3c°?d ðÖË;Š @  è4d°?d 0×ËÞ]·b @  è5e°?d p×Ë."M @  è6f°?d °×Ë×Oå @  è7g°?d ð×ËžfJ™ @  è8h°?d 0ØËª™Æ„ @  è9i°?d pØËZæ<ý @  è:j°?d °ØËz> @  è;k°?d ðØËyI|Ï @  è<l°?d 0ÙË©ð' @  è=m°?d pÙËY~ ^ @  è>n°?d °ÙËy‹  @  è?o°?d ðÙËžÊpò @  è@p°?d 0ÚËŽÐ3 @  èAq°?d pÚËóñ*J @  èBr°?d °ÚËÓ(´ @  èCs°?d ðÚËÐ^jx @  èDt°?d 0ÛËæ @  èEu°?d pÛËðié @  èFv°?d °ÛËМ @  èGw°?d ðÛË@-k @  èHx°?d 0ÜËYcèd @  èIy°?d pÜË© @  èJz°?d °Üˉéã @  èK{°?d ðÜËгR/ @  èL|°?d 0ÝËZûÞÇ @  èM}°?d pÝ˪„$¾ @  èN~°?d °ÝËŠq&@ @  èO°?d ðÝË¢o @  èP€°?d 0ÞË?T§® @  èQ°?d pÞËÏ+]× @  èR‚°?d °ÞËïÞ_) @  èSƒ°?d ðÞËì„å @  èT„°?d 0ßË<Ì‘  @  èU…°?d pßË̳kt @  èV†°?d uÐàË/°ßËìFiŠ @  èW‡°?d ðßË|÷lö @  èXˆ°?d HàËeS2 @  èY‰°?d ˆàË7HÝY @  èZа?d Èà˵Ùʇ @  è[‹°?d áËäZ} @  è\Œ°?d HáËfË£ @  è]°?d ˆáË4Ðëú @  è^ް?d Èá˶Aü$ @  è_°?d âËàÒ5û @  è`°?d HâËbC"% @  èa‘°?d ˆâË0XÍ| @  èb’°?d Èâ˲ÉÚ¢ @  èc“°?d ãËãJX @  èd”°?d HãËaÛ† @  èe•°?d ˆãË3Àûß @  èf–°?d Èã˱Qì @  èg—°?d ä˺? ¬ @  èh˜°?d HäË8®r @  èi™°?d ˆäËjµõ+ @  èjš°?d ÈäËè$âõ @  èk›°?d å˹§; @  èlœ°?d HåË;6,Ñ @  èm°?d ˆåËi-È @  ènž°?d ÈåËë¼ÔV @  èoŸ°?d æË1žå @  èp °?d HæË³; @  èq¡°?d ˆæËáûb @  èr¢°?d ÈæËc…ì¼ @  ès£°?d çË25F @  èt¤°?d Hç˰—"˜ @  èu¥°?d ˆçËâŒÍÁ @  èv¦°?d ÈçË`Ú @  èw§°?d èËFÂD  @  èx¨°?d HèËÄSS~ @  èy©°?d ˆèË–H¼' @  èzª°?d ÈèËÙ«ù @  è{«°?d éËEZr @  è|¬°?d HéËÇËeÝ @  è}­°?d ˆéË•Њ„ @  è~®°?d ÈéËAZ @  è¯°?d êË ƒb& @  è€°°?d HêËŽuø @  è±°?d ˆêËÜ š¡ @  è‚²°?d ÈêË^˜ @  èƒ³°?d ëËT… @  è„´°?d HëËŠC[ @  è…µ°?d ˆëËß‘¬ @  è†¶°?d ÈëË]»Ü @  è‡·°?d ìËVnZq @  èˆ¸°?d HìËÔÿM¯ @  è‰¹°?d ˆìˆä¢ö @  èŠº°?d ÈìËuµ( @  è‹»°?d íËUölÒ @  èŒ¼°?d HíË×g{  @  è½°?d ˆíË…|”U @  è޾°?d ÈíË탋 @  è¿°?d îË-ŸA) @  èÀ°?d Hî˯V÷ @  è‘Á°?d ˆîËý¹® @  è’°?d ÈîË„®p @  è“ð?d ïË.wŠ @  è”İ?d Hïˬ–`T @  è•Ű?d ˆïËþ  @  è–ư?d ÈïË|˜Ó @  è—ǰ?d ðËÐâ6à @  è˜Ȱ?d HðËRs! @  è™ɰ?d ˆðËhÎD @  èšʰ?d ÈðË‚ùÙš @  è›˰?d ñËÓz` @  èœ̰?d HñËQë¾ @  èͰ?d ˆñËðøç @  èžΰ?d ÈñËaï9 @  èŸϰ?d òË×ò&æ @  è а?d HòËUc18 @  è¡Ѱ?d ˆòËxÞa @  è¢Ò°?d ÈòË…éÉ¿ @  è£Ó°?d óËÔjE @  è¤Ô°?d HóËVû› @  è¥Õ°?d ˆóËàè @  è¦Ö°?d Èóˆqÿ @  è§×°?d ô˱ @  è¨ذ?d HôËŽ o @  è©Ù°?d ˆôË]•æ6 @  èªÚ°?d ÈôËßñè @  è«Û°?d õËއ( @  è¬ܰ?d HõË ?Ì @  è­ݰ?d ˆõË^ Е @  è®Þ°?d ÈõËÜœÇK @  è¯ß°?d ö˾ø @  è°à°?d HöË„/& @  è±á°?d ˆöËÖ4è @  è²â°?d ÈöËT¥ÿ¡ @  è³ã°?d ÷Ë&&[ @  è´ä°?d H÷ˇ·1… @  èµå°?d ˆ÷ËÕ¬ÞÜ @  è¶æ°?d È÷ËW=É @  è·ç°?d øËqâW½ @  è¸è°?d HøËós@c @  è¹é°?d ˆøË¡h¯: @  èºê°?d ÈøË#ù¸ä @  è»ë°?d ùËrza @  è¼ì°?d HùËðëvÀ @  è½í°?d ˆùˢ𙙠@  è¾î°?d ÈùË aŽG @  è¿ï°?d úËØõA  @  èÀð°?d HúËZdVÔ @  èÁñ°?d ˆú˹ @  èÂò°?d ÈúËŠî®S @  èÃó°?d ûËÛmw© @  èÄô°?d HûËYü`w @  èÅõ°?d ˆûË ç. @  èÆö°?d Èûˉv˜ð @  èÇ÷°?d üË‚y] @  èÈø°?d Hüˉnƒ @  èÉù°?d ˆüËR’Ú @  èÊú°?d ÈüËЖ @  èËû°?d ýË€Oþ @  èÌü°?d HýËX  @  èÍý°?d ˆýËQ ·y @  èÎþ°?d ÈýËÓ› § @  èÏÿ°?d þË›Hc› @  èб?d HþËÙtE @  èѱ?d ˆþËK› @  èÒ±?d ÈþËÉSŒÂ @  èÓ±?d ÿ˘ÐU8 @  èÔ±?d HÿËABæ @  èÕ±?d ˆÿËHZ­¿ @  èÖuÐ̱?d ÈÿËÊ˺a @  è×±?d Ìí-º] @  èر?d `Ìo¼­ƒ @  èÙ ±?d  Ì=§BÚ @  èÚ ±?d àÌ¿6U @  èÛ ±?d Ìþ @  èÜ ±?d `Ìl$›  @  èÝ ±?d  Ì>?ty @  èÞ±?d à̼®c§ @  èß±?d Ìê=ªx @  èà±?d `Ìh¬½¦ @  èá±?d  Ì:·Rÿ @  èâ±?d€ àÌÌåY‡ @  é±?d Ì|'ÈT @  é±?d `Ìþ¶ßŠ @  é±?d  ÌiäË> @  é±?d àÌëuÜà @  é±?d Ì.©b7 @  é±?d `̬8ué @  é±?d  Ì0‘ÅÊ @  é±?d àÌ²Ò @  é ±?d Ì&Êð @  é ±?d `̤[çÝ @  é ±?d  Ì3 ói @  é ±?d à̱˜ä· @  é ±?d Ì©Rž @  é ±?d `ÌŠ8E@ @  é!±?d  Ì»0˃ @  é"±?d àÌ9¡Ü] @  é#±?d Ì­kþJ @  é$±?d `Ì/úé” @  é%±?d  Ì¸¨ý  @  é&±?d àÌ:9êþ @  é'±?d ÌÒT+; @  é(±?d `ÌPÅ<å @  é)±?d  ÌÌlŒÆ @  é*±?d àÌNý› @  é+±?d ÌÚ7¹ @  é,±?d ` ÌX¦®Ñ @  é-±?d   ÌÏôºe @  é.±?d à ÌMe­» @  é/±?d Ìiã"N @  é0±?d ` Ìër5 @  é1±?d   ÌË|œã @  é 2±?d à ÌIí‹= @  é!3±?d ÌÝ'©* @  é"4±?d ` Ì_¶¾ô @  é#5±?d   ÌÈäª@ @  é$6±?d à ÌJu½ž @  é%7±?d Ì©I @  é&8±?d ` Ì 8— @  é'9±?d   Ì‘‘¤´ @  é(:±?d à ̳j @  é);±?d ̇ʑ} @  é*<±?d ` Ì[†£ @  é+=±?d   Ì’ ’ @  é,>±?d à ̘…É @  é-?±?d ÌYù&ñ @  é.@±?d `ÌÛh1/ @  é/A±?d  Ìê`¿ì @  é0B±?d àÌhñ¨2 @  é1C±?d Ìü;Š% @  é2D±?d `Ì~ªû @  é3E±?d  Ìéø‰O @  é4F±?d àÌkiž‘ @  é5G±?d Ì %oû @  é6H±?d `Ì‹´x% @  é7I±?d  ÌÈ @  é8J±?d àÌ•ŒßØ @  é9K±?d ÌFýÏ @  é:L±?d `̃×ê @  é;M±?d  Ì…þ¥ @  é<N±?d àÌ–é{ @  é=O±?d ̲’fŽ @  é>P±?d `Ì0qP @  é?Q±?d  Ì¾ Þ± @  é@R±?d àÌ<›Éo @  éAS±?d ̨Qëx @  éBT±?d `Ì*Àü¦ @  éCU±?d  Ì½’è @  éDV±?d àÌ?ÿÌ @  éEW±?d ÌúßA @  éFX±?d `ÌxNVÅ @  éGY±?d  Ìäçææ @  éHZ±?d àÌfvñ8 @  éI[±?d Ìò¼Ó/ @  éJ\±?d `Ìp-Äñ @  éK]±?d  ÌçÐE @  éL^±?d àÌeîÇ› @  éM_±?d ÌÜßq² @  éN`±?d `Ì^Nfl @  éOa±?d  ÌoFè¯ @  éPb±?d àÌí×ÿq @  éQc±?d ÌyÝf @  éRd±?d `ÌûŒÊ¸ @  éSe±?d  ÌlÞÞ  @  éTf±?d àÌîOÉÒ @  éUg±?d Ì" @  éVh±?d `Ì„³É @  éWi±?d  Ì¯ê @  éXj±?d àÌš‹¸4 @  éYk±?d ÌAš# @  éZl±?d `ÌŒÐý @  é[m±?d  Ì‚™I @  é\n±?d àÌ™Ž— @  é]o±?d ̽•b @  é^p±?d `Ì?¼ @  é_q±?d  Ì ¿Ï @  é`r±?d àÌ›¨ @  éas±?d Ì QŠ @  ébt±?d `Ì‹ÀØ @  écu±?d  Ì’‰l @  édv±?d àÌžž² @  éew±?d Ì[ß e @  éfx±?d `ÌÙN7» @  égy±?d  ÌE燘 @  éhz±?d àÌÇvF @  éi{±?d ÌS¼²Q @  éj|±?d `ÌÑ-¥ @  ék}±?d  ÌF±; @  él~±?d àÌÄî¦å @  ém±?d ÌIQO @  én€±?d `ÌØF‘ @  éo±?d  Ì#ÐÈR @  ép‚±?d àÌ¡Aߌ @  éqƒ±?d Ì5‹ý› @  ér„±?d `Ì·êE @  és…±?d  Ì HþñuÐ Ì @  ét†±?d àÌ¢Ùé/ @  éu‡±?d 8 Ì@z‘ @  évˆ±?d x ÌÑmO @  éw‰±?d ¸ ÌxÝl @  éxб?d ø Ì“éʲ @  éy‹±?d 8!Ì#è¥ @  ézŒ±?d x!Ì…²ÿ{ @  é{±?d ¸!ÌàëÏ @  é|ޱ?d ø!Ìqü @  é}±?d 8"Ì´÷sä @  é~±?d x"Ì6fd: @  é‘±?d ¸"Ì[9ûê @  é€’±?d ø"ÌÙ¨ì4 @  é“±?d 8#ÌMbÎ# @  é‚”±?d x#ÌÏóÙý @  éƒ•±?d ¸#ÌX¡ÍI @  é„–±?d ø#ÌÚ0Ú— @  é…—±?d 8$Ììd@ @  é†˜±?d x$Ì}sž @  é‡™±?d ¸$ÌÔý @  éˆš±?d ø$̃EÔc @  é‰›±?d 8%Ìöt @  éŠœ±?d x%̕᪠@  é‹±?d ¸%ÌLõ @  éŒž±?d ø%Ì€ÝâÀ @  éŸ±?d 8&Ì9ìTé @  éŽ ±?d x&Ì»}C7 @  é¡±?d ¸&ÌŠuÍô @  é¢±?d ø&ÌäÚ* @  é‘£±?d 8'Ìœ.ø= @  é’¤±?d x'Ì¿ïã @  é“¥±?d ¸'̉íûW @  é”¦±?d ø'Ì |ì‰ @  é•§±?d 8(Ìã-L @  é–¨±?d x(Ìa€:’ @  é—©±?d ¸(Ìý)б @  é˜ª±?d ø(̸o @  é™«±?d 8)Ìër¿x @  éš¬±?d x)Ìi㨦 @  é›­±?d ¸)Ìþ±¼ @  éœ®±?d ø)Ì| «Ì @  é¯±?d 8*ÌX¦$9 @  éž°±?d x*ÌÚ73ç @  éŸ±±?d ¸*Ìú9š” @  é ²±?d ø*Ìx¨J @  é¡³±?d 8+Ììb¯] @  é¢´±?d x+Ìnó¸ƒ @  é£µ±?d ¸+Ìù¡¬7 @  é¤¶±?d ø+Ì{0»é @  é¥·±?d 8,̾ì> @  é¦¸±?d x,Ì<}à @  é§¹±?d ¸,̠Ԣà @  é¨º±?d ø,Ì"Eµ @  é©»±?d 8-̶—  @  éª¼±?d x-Ì4€Ô @  é«½±?d ¸-Ì£L”` @  é¬¾±?d ø-Ì!݃¾ @  é­¿±?d 8.Ìh¼ † @  é®À±?d x.Ìê-7X @  é¯Á±?d ¸.ÌÛ%¹› @  é°±?d ø.ÌY´®E @  é±ñ?d 8/ÌÍ~ŒR @  é²ı?d x/ÌO @  é³ű?d ¸/Ìؽ8 @  é´Ʊ?d ø/ÌZ,˜æ @  éµDZ?d 80Ì8`iŒ @  é¶ȱ?d x0̺ñ~R @  é·ɱ?d ¸0Ì&XÎq @  é¸ʱ?d ø0̤ÉÙ¯ @  é¹˱?d 81Ì0û¸ @  éº̱?d x1̲’ìf @  é»ͱ?d ¸1Ì%ÀøÒ @  é¼α?d ø1̧Qï  @  é½ϱ?d 82̃×`ù @  é¾б?d x2ÌFw' @  é¿ѱ?d ¸2ÌOØÆ @  éÀÒ±?d ø2Ì ÞÏ @  éÁÓ±?d 83Ì™í @  éÂÔ±?d x3Ì…úÑ @  éÃÕ±?d ¸3ÌŒ×îe @  éÄÖ±?d ø3ÌFù» @  éÅ×±?d 84ÌËšGl @  éÆر?d x4ÌI P² @  éÇÙ±?d ¸4ÌÕ¢à‘ @  éÈÚ±?d ø4ÌW3÷O @  éÉÛ±?d 85ÌÃùÕX @  éÊܱ?d x5ÌAh† @  éËݱ?d ¸5ÌÖ:Ö2 @  éÌÞ±?d ø5ÌT«Áì @  éÍß±?d 86ÌíšwÅ @  éÎà±?d x6Ìo ` @  éÏá±?d ¸6Ì^îØ @  éÐâ±?d ø6ÌÜ’ù @  éÑã±?d 87ÌHXÛ @  éÒä±?d x7ÌÊÉÌÏ @  éÓå±?d ¸7Ì]›Ø{ @  éÔæ±?d ø7Ìß Ï¥ @  éÕç±?d 88Ì7g` @  éÖè±?d x8̵ö¾ @  é×é±?d ¸8Ì)_© @  éØê±?d ø8̫ξC @  éÙë±?d 89Ì?œT @  éÚì±?d x9̽•‹Š @  éÛí±?d ¸9Ì*ÇŸ> @  éÜî±?d ø9̨Vˆà @  éÝï±?d 8:̌Р@  éÞð±?d x:ÌAË @  éßñ±?d ¸:Ì.O¹¸ @  éàò±?d ø:̬ޮf @  éáó±?d 8;Ì8Œq @  éâô±?d€ x;Ì{Âl¯ @  êõ±?d ¸;Ì Ñ02 @  êö±?d ø;Ì@'ì @  ê÷±?d 8<ÌÕbÖ @  êø±?d x<Ì Du @  êù±?d ¸<Ì__šQ @  êú±?d ø<ÌÝÎ @  êû±?d 8=̇¶ðâ @  êü±?d x=Ì'ç< @  ê ý±?d ¸=ÌW<e @  ê þ±?d ø=ÌÕ­» @  ê ÿ±?d 8>̉sÕ @  ê ²?d x>Ì —d  @  ê ²?d ¸>ÌYŒ‹R @  ê²?d ø>ÌÛœŒ @  ê²?d 8?Ì,Äß @  ê²?d x?Ì®UÈß @  ê²?duÐ@Ì7 ¸?ÌüN'† @  ê²?d ø?Ì~ß0X @  ê²?d P@̤¨¯ @  ê ²?d Ð@Ìt"ÄÖ @  ê ²?d A̤jH> @  ê ²?d PA̬ˮe @  ê ²?d AÌŒ>¬› @  ê ²?d ÐAÌ|AVâ @  ê²?d BÌáö# @  ê²?d PBÌ5$ @  ê²?d BÌ?ê7Ú @  ê²?d ÐBÌϕͣ @  ê²?d CÌÝAK @  ê²?d PC̫۾@ @  ê ²?d CÌ‹.¼¾ @  ê!²?d ÐCÌ{QFÇ @  ê"²?d DÌbµÈ @  ê#²?d PDÌùU# @  ê$²?d DÌÙ Ý @  ê%²?d ÐDÌ)ßì¤ @  ê&²?d EÌù—`L @  ê'²?d PEÌñ6† @  ê(²?d EÌÑÄé @  ê)²?d ÐEÌ!¼~ @  ê*²?d F̼øÞQ @  ê+²?d PFÌßU$Š @  ê, ²?d FÌÿ &t @  ê-!²?d ÐFÌßÜ  @  ê."²?d GÌß—På @  ê/#²?d PGÌz—ˆ^ @  ê0$²?d GÌZbŠ  @  ê1%²?d ÐG̪pÙ @  ê2&²?d HÌžâüÄ @  ê3'²?d PH̨]/ @  ê4(²?d HÌ%]_Ñ @  ê5)²?d ÐHÌÕ"¥¨ @  ê6*²?d IÌj)@ @  ê7+²?d PIÌ ËÏ @  ê8,²?d IÌ->Íå @  ê9-²?d ÐIÌÝA7œ @  ê:.²?d JÌ@—] @  ê;/²?d PJ̾TZ @  ê<0²?d JÌžêV¤ @  ê=1²?d ÐJÌn•¬Ý @  ê>2²?d KÌ¾Ý 5 @  ê?3²?d PK̤ÜÙ¬ @  ê@4²?d KÌ„)ÛR @  êA5²?d ÐKÌtV!+ @  êB6²?d LÌmÒ$ @  êC7²?d PLÌöRsÏ @  êD8²?d LÌÖ§q1 @  êE9²?d ÐLÌ&Ø‹H @  êF:²?d MÌö  @  êG;²?d PMÌþ1áû @  êH<²?d MÌÞÄã @  êI=²?d ÐMÌ.»| @  êJ>²?d N̳ÿ¹½ @  êK?²?d PNÌ Vw @  êL@²?d NÌ÷T‰ @  êMA²?d ÐNÌðˆ®ð @  êNB²?d OÌ À" @  êOC²?d POÌ…Àú£ @  êPD²?d OÌ¥5ø] @  êQE²?d ÐOÌUJ$ @  êRF²?d PÌ딾– @  êSG²?d PPÌpÞ} @  êTH²?d PÌP+ƒ @  êUI²?d ÐPÌ Tçú @  êVJ²?d QÌpk @  êWK²?d PQÌx½I @  êXL²?d QÌXH· @  êYM²?d ÐQ̨7uÎ @  êZN²?d RÌ5sÕ @  ê[O²?d PRÌËi @  ê\P²?d RÌëœö @  ê]Q²?d ÐRÌãî @  ê^R²?d SÌË«bg @  ê_S²?d PSÌ­l @  ê`T²?d SÌ_XŸ’ @  êaU²?d ÐS̯'eë @  êbV²?d T̶i–ä @  êcW²?d PTÌ-#7 @  êdX²?d TÌ Ö5ñ @  êeY²?d ÐTÌý©Ïˆ @  êfZ²?d UÌ-áC` @  êg[²?d PUÌ%@¥; @  êh\²?d U̵§Å @  êi]²?d ÐUÌõÊ]¼ @  êj^²?d VÌhŽý} @  êk_²?d PVÌ #¦ @  êl`²?d VÌ+ÖX @  êma²?d ÐVÌÛ©ÿ! @  ênb²?d WÌ ásÉ @  êoc²?d PWÌ®á«r @  êpd²?d WÌŽ©Œ @  êqe²?d ÐWÌ~kSõ @  êrf²?d XÌJ”ßè @  êsg²?d PXÌÑÞ~ @  êth²?d XÌñ+|ý @  êui²?d ÐXÌT†„ @  êvj²?d YÌÑ l @  êwk²?d PYÌÙ½ì7 @  êxl²?d YÌùHîÉ @  êym²?d ÐYÌ 7° @  êzn²?d ZÌ”s´q @  ê{o²?d PZÌjiwv @  ê|p²?d ZÌJœuˆ @  ê}q²?d ÐZ̺ãñ @  ê~r²?d [Ìj« @  ês²?d P[Ì“üʱ @  ê€t²?d [̳ ÈO @  êu²?d Ð[ÌCv26 @  ê‚v²?d \ÌZ8Á9 @  êƒw²?d P\ÌÁr`Ò @  ê„x²?d \Ìá‡b, @  ê…y²?d Ð\Ìø˜U @  ê†z²?d ]ÌÁ°½ @  ê‡{²?d P]ÌÉòæ @  êˆ|²?d ]Ìéäð @  ê‰}²?d Ð]Ì› a @  êŠ~²?d ^Ì„ߪ  @  ê‹²?d P^Ì äø @  êŒ€²?d ^Ì* @  ê²?d Ð^ÌÚné @  êŽ‚²?d _Ì &e— @  êƒ²?d P_̯&½, @  ê„²?d _ÌÓ¿Ò @  êuÐ`Ì‘…²?d Ð_̬E« @  ê’†²?d (`ÌÁTð3 @  ê“‡²?d h`ÌZQØ @  ê”ˆ²?d ¨`ÌzëS& @  ê•‰²?d è`ÌŠ”©_ @  ê–в?d (aÌZÜ%· @  ê—‹²?d haÌR}Ãì @  ê˜Œ²?d ¨aÌrˆÁ @  ê™²?d èaÌ‚÷;k @  êš޲?d (b̳›ª @  ê›²?d hbÌá©X­ @  êœ²?d ¨bÌÁ\ZS @  ê‘²?d èbÌ1# * @  êž’²?d (cÌák, @  êŸ“²?d hcÌUmÓÉ @  ê ”²?d ¨cÌu˜Ñ7 @  ê¡•²?d ècÌ…ç+N @  ê¢–²?d (dÌœ©ØA @  ê£—²?d hdÌãyª @  ê¤˜²?d ¨dÌ'{T @  ê¥™²?d èdÌ×i- @  ê¦š²?d (eÌ! Å @  ê§›²?d heÌ€ëž @  ê¨œ²?d ¨eÌ/ué` @  ê©²?d èeÌß  @  êªž²?d (fÌBN³Ø @  ê«Ÿ²?d hfÌ!ãI @  ê¬ ²?d ¨fÌKý @  ê­¡²?d èfÌñi±„ @  ê®¢²?d (gÌ!!=l @  ê¯£²?d hgÌ„!å× @  ê°¤²?d ¨g̤Ôç) @  ê±¥²?d ègÌT«P @  ê²¦²?d (hÌ`T‘M @  ê³§²?d hhÌû0¦ @  ê´¨²?d ¨hÌÛë2X @  êµ©²?d èhÌ+”È! @  ê¶ª²?d (iÌûÜDÉ @  ê·«²?d hiÌó}¢’ @  ê¸¬²?d ¨iÌÓˆ l @  ê¹­²?d èiÌ#÷Z @  êº®²?d (j̾³úÔ @  ê»¯²?d hjÌ@©9Ó @  ê¼°²?d ¨jÌ`\;- @  ê½±²?d èjÌ#ÁT @  ê¾²²?d (kÌ@kM¼ @  ê¿³²?d hkÌZj´% @  êÀ´²?d ¨kÌzŸ¶Û @  êÁµ²?d èkÌŠàL¢ @  ê¶²?d (lÌ“®¿­ @  ê÷²?d hlÌäF @  êĸ²?d ¨lÌ(¸ @  êʲ?d èlÌØnæÁ @  êƺ²?d (mÌ&j) @  êÇ»²?d hṁŒr @  êȼ²?d ¨mÌ rŽŒ @  êɽ²?d èmÌÐ tõ @  êʾ²?d (nÌMIÔ4 @  êË¿²?d hnÌÞ´;þ @  êÌÀ²?d ¨nÌþA9 @  êÍÁ²?d ènÌ>Ãy @  êβ?d (oÌÞvO‘ @  êÏò?d hoÌ{v—* @  êÐIJ?d ¨oÌ[ƒ•Ô @  êÑŲ?d èoÌ«üo­ @  êÒƲ?d (pÌ"Ó @  êÓDz?d hpÌŽhrô @  êÔȲ?d ¨pÌ®p  @  êÕɲ?d èpÌ^âŠs @  êÖʲ?d (qÌŽª› @  ê×˲?d hq̆ àÀ @  êØ̲?d ¨q̦þâ> @  êÙͲ?d èqÌVG @  êÚβ?d (rÌËŸ† @  êÛϲ?d hrÌ5ß{ @  êÜв?d ¨rÌ*y @  êÝѲ?d èrÌåUƒ @  êÞÒ²?d (sÌ5î @  êßÓ²?d hsÌðå @  êàÔ²?d ¨sÌ¡îò @  êáÕ²?d èsÌQ‘b @  êâÖ²?d€ (tÌ<çË @  ëײ?d htÌF  @  ëز?d ¨tÌfâ ÷ @  ëÙ²?d ètÌSÔ c @  ëÚ²?d (ũœ‹ @  ëÛ²?d huÌE8ª @  ëܲ?d ¨uÌez:T @  ëݲ?d èuÌ[·ŸW @  ëÞ²?d (vÌÆó?– @  ë ß²?d hvÌ`>  @  ë à²?d ¨vÌ@â<^ @  ë á²?d èvÌuÔ=Ê @  ë â²?d (wÌ¥œ±" @  ë ã²?d hwÌc @  ëä²?d ¨wÌCz ý @  ëå²?d èwÌБ @  ëæ²?d (xÌäé @  ëç²?d hx̺êG @  ëè²?d ¨xÌšEû @  ëé²?d èx̯)Do @  ëê²?d (yÌaȇ @  ëë²?d hy̹rq¦ @  ëì²?d ¨yÌ™‡sX @  ëí²?d èy̧JÖ[ @  ëî²?d (zÌ:vš @  ëï²?d hzÌ]Np @  ëð²?d ¨zÌ!¨LŽ @  ëñ²?d èzÌžM @  ëò²?d ({ÌÄÖÁò @  ëó²?d h{ÌÅxÓ @  ëô²?d ¨{Ì"0z- @  ëõ²?d è{Ì ZÆ~ @  ë ö²?d (|̹5q @  ë!÷²?d h|Ìçow @  ë"ø²?d ¨|ÌÇâm‰ @  ë#ù²?d è|ÌòÔl @  ë$ú²?d (}Ì"œàõ @  ë%û²?d h}ÌäYÔ @  ë&ü²?d ¨}ÌÄz[* @  ë'ý²?d è}Ìú·þ) @  ë(þ²?d (~Ìgó^è @  ë)ÿ²?d h~ÌSæKQ @  ë*³?d ¨~ÌsI¯ @  ë+³?d è~ÌF%H; @  ë,³?d (Ì–mÄÓ @  ë-³?d hÌP~}ò @  ë.³?d ¨ÌuЀÌ'p‹  @  ë/³?d èÌãçäï @  ë0³?d @€ÌY› @  ë1³?d €€Ìq>I½ @  ë2³?d À€Ìó¯^c @  ë3 ³?d Ì”@ÄÁ @  ë4 ³?d @ÌÑÓ @  ë5 ³?d €Ìr¦ @  ë6 ³?d ÀÌð7hÀ @  ë7 ³?d ‚ÌÑ/zÜ @  ë8³?d @‚ÌS¾m @  ë9³?d €‚Ìʉ@È @  ë:³?d À‚ÌHW @  ë;³?d ƒÌ/÷Í´ @  ë<³?d @ƒÌ­fÚj @  ë=³?d €ƒÌÉvk @  ë>³?d ÀƒÌK€aµ @  ë?³?d „Ìü2?¥ @  ë@³?d @„Ì~£({ @  ëA³?d €„Ì‚Äg] @  ëB³?d À„ÌUpƒ @  ëC³?d …Ìgºê! @  ëD³?d @…Ìå+ýÿ @  ëE³?d €…Ì\Qþ @  ëF³?d À…ÌÍF  @  ëG³?d †Ì"ÕT< @  ëH³?d @†Ì DCâ @  ëI³?d €†Ì¤ÄWô @  ëJ ³?d À†Ì&U@* @  ëK!³?d ‡ÌAºÚˆ @  ëL"³?d @‡ÌÃ+ÍV @  ëM#³?d €‡Ì§\aW @  ëN$³?d À‡Ì%Ív‰ @  ëO%³?d ˆÌÏv© @  ëP&³?d @ˆÌ‚^aw @  ëQ'³?d €ˆÌ~9.Q @  ëR(³?d ÀˆÌü¨9 @  ëS)³?d ‰Ì›G£- @  ëT*³?d @‰ÌÖ´ó @  ëU+³?d €‰Ì}¡ò @  ëV,³?d À‰Ìÿ0, @  ëW-³?d ŠÌÞ(0 @  ëX.³?d @ŠÌ\¹ î @  ëY/³?d €ŠÌÅŽ'$ @  ëZ0³?d ÀŠÌG0ú @  ë[1³?d ‹Ì ðªX @  ë\2³?d @‹Ì¢a½† @  ë]3³?d €‹ÌƇ @  ë^4³?d À‹ÌD‡Y @  ë_5³?d ŒÌ]2^Û @  ë`6³?d @ŒÌߣI @  ëa7³?d €ŒÌ#Ä# @  ëb8³?d ÀŒÌ¡Uý @  ëc9³?d Ìƺ‹_ @  ëd:³?d @ÌD+œ @  ëe;³?d €Ì \0€ @  ëf<³?d ÀÌ¢Í'^ @  ëg=³?d ŽÌƒÕ5B @  ëh>³?d @ŽÌD"œ @  ëi?³?d €ŽÌõ”#› @  ëj@³?d ÀŽÌw4E @  ëkA³?d Ìê®ç @  ëlB³?d @Ì’{¹9 @  ëmC³?d €Ìö 8 @  ënD³?d ÀÌtæ @  ëoE³?d ÌÛ¾2i @  ëpF³?d @ÌY/%· @  ëqG³?d €Ì¥Hj‘ @  ërH³?d ÀÌ'Ù}O @  ësI³?d ‘Ì@6çí @  ëtJ³?d @‘̧ð3 @  ëuK³?d €‘̦Ð\2 @  ëvL³?d À‘Ì$AKì @  ëwM³?d ’ÌYYð @  ëxN³?d @’̇ÈN. @  ëyO³?d €’Ìÿcä @  ëzP³?d À’Ìœnt: @  ë{Q³?d “Ìûî˜ @  ë|R³?d @“ÌyùF @  ë}S³?d €“ÌgUG @  ë~T³?d À“ÌŸöB™ @  ëU³?d ”ÌË,¸ @  ë€V³?d @”ÌIƒ;f @  ëW³?d €”̵ät@ @  ë‚X³?d À”Ì7ucž @  ëƒY³?d •ÌPšù< @  ë„Z³?d @•ÌÒ îâ @  ë…[³?d €•̶|Bã @  ë†\³?d À•Ì4íU= @  ë‡]³?d –ÌõG! @  ëˆ^³?d @–Ì—dPÿ @  ë‰_³?d €–Ì“äDé @  ëŠ`³?d À–ÌuS7 @  ë‹a³?d —ÌvšÉ• @  ëŒb³?d @—Ìô ÞK @  ëc³?d €—Ì|rJ @  ëŽd³?d À—Ìíe” @  ëe³?d ˜Ì7ïe´ @  ëf³?d @˜Ìµ~rj @  ë‘g³?d €˜ÌI=L @  ë’h³?d À˜Ìˈ*’ @  ë“i³?d ™Ì¬g°0 @  ë”j³?d @™Ì.ö§î @  ë•k³?d €™ÌJ ï @  ë–l³?d À™ÌÈ1 @  ë—m³?d šÌé- @  ë˜n³?d @šÌk™ó @  ë™o³?d €šÌò®49 @  ëšp³?d ÀšÌp?#ç @  ë›q³?d ›ÌйE @  ëœr³?d @›Ì•A®› @  ës³?d €›Ìñ6š @  ëžt³?d À›Ìs§D @  ëŸu³?d œÌjMÆ @  ë v³?d @œÌèƒZ @  ë¡w³?d €œÌä> @  ë¢x³?d ÀœÌ–uà @  ë£y³?d Ìñš˜B @  ë¤z³?d @Ìs œ @  ë¥{³?d €Ì|# @  ë¦|³?d ÀÌ•í4C @  ë§}³?d žÌ´õ&_ @  ë¨~³?d @žÌ6d1 @  ë©³?d €žÌßrd @  ëª€³?d ÀžÌ]ãsÊ @  ë«³?d ŸÌ: éh @  ë¬‚³?d @ŸÌ¸þ¶ @  ë­ƒ³?d €ŸÌÜêR· @  ë®„³uРÌ?d ÀŸÌ^{Ei @  ë¯…³?d  ÌJËç @  ë° †³?d X Ì…ÛÜ9 @  ë± ‡³?d ˜ Ìy¼“ @  ë² ˆ³?d Ø Ìû-„Á @  ë³ ‰³?d ¡ÌœÂc @  ë´ г?d X¡ÌS ½ @  ëµ ‹³?d ˜¡Ìz$¥¼ @  ë¶ Œ³?d Ø¡Ìøµ²b @  ë· ³?d ¢ÌÙ­ ~ @  ë¸ ޳?d X¢Ì[<·  @  ë¹ ³?d ˜¢Ì šj @  ëº ³?d Ø¢Ì@š´ @  ë» ‘³?d £Ì'u @  ë¼ ’³?d X£Ì¥äÈ @  ë½ “³?d ˜£ÌÁ“¬É @  ë¾ ”³?d Ø£ÌC» @  ë¿ •³?d ¤Ìô°å @  ëÀ –³?d X¤Ìv!òÙ @  ëÁ —³?d ˜¤ÌŠF½ÿ @  ë ˜³?d ؤÌת! @  ëà ™³?d ¥Ìo80ƒ @  ëÄ š³?d X¥Ìí©'] @  ëÅ ›³?d ˜¥Ì‰Þ‹\ @  ëÆ œ³?d Ø¥Ì Oœ‚ @  ëÇ ³?d ¦Ì*WŽž @  ëÈ ž³?d X¦Ì¨Æ™@ @  ëÉ Ÿ³?d ˜¦Ì¬FV @  ëÊ  ³?d ئÌ.ךˆ @  ëË ¡³?d §ÌI8* @  ëÌ ¢³?d X§ÌË©ô @  ëÍ £³?d ˜§Ì¯Þ»õ @  ëÎ ¤³?d اÌ-O¬+ @  ëÏ ¥³?d ¨ÌM¬  @  ëÐ ¦³?d X¨ÌŠÜ»Õ @  ëÑ §³?d ˜¨Ìv»ôó @  ëÒ ¨³?d بÌô*ã- @  ëÓ ©³?d ©Ì“Åy @  ëÔ ª³?d X©ÌTnQ @  ëÕ «³?d ˜©Ìu#ÂP @  ëÖ ¬³?d Ø©Ì÷²ÕŽ @  ë× ­³?d ªÌ֪ǒ @  ëØ ®³?d XªÌT;ÐL @  ëÙ ¯³?d ˜ªÌÍ ý† @  ëÚ °³?d تÌOêX @  ëÛ ±³?d «Ì(rpú @  ëÜ ²³?d X«Ìªãg$ @  ëÝ ³³?d ˜«ÌΔË% @  ëÞ ´³?d Ø«ÌLÜû @  ëß µ³?d ¬ÌU°„y @  ëà ¶³?d X¬Ì×!“§ @  ëá ·³?d ˜¬Ì+FÜ @  ëâ ¸³?d€ جÌ/cæ @  ì ¹³?d ­Ì©/±m @  ì º³?d X­Ì+¾¦³ @  ì »³?d ˜­ÌŠ€ñ_ @  ì ¼³?d Ø­Ìæ @  ì ½³?d ®Ì绫ç @  ì ¾³?d X®Ìe*¼9 @  ì ¿³?d ˜®Ì_HâD @  ì À³?d Ø®ÌÝÙõš @  ì Á³?d ¯Ì”Õ @  ì ³?d X¯Ìýîƒ  @  ì ó?d ˜¯Ì\ÐÔç @  ì ij?d دÌÞAÃ9 @  ì ų?d °Ìq’, @  ì Ƴ?d X°Ìà…ò @  ì dz?d ˜°Ì”«N @  ì ȳ?d ذ̼ @  ì ɳ?d ±Ì/£Ýß @  ì ʳ?d X±Ì­2Ê @  ì ˳?d ˜±Ì í @  ì ̳?d رÌŽŠ3 @  ì ͳ?d ²Ìa7ÇU @  ì γ?d X²Ìã¦Ð‹ @  ì ϳ?d ˜²Ì´#¢; @  ì г?d زÌ6²µå @  ì ѳ?d ³Ì”Ôª @  ì Ò³?d X³Ì…Ãt @  ì Ó³?d ˜³Ì·»”˜ @  ì Ô³?d سÌ5*ƒF @  ì Õ³?d ´Ì^Šî @  ì Ö³?d X´ÌÜŠ0 @  ì ׳?d ˜´ÌRiƒ< @  ì س?d Ø´ÌÐø”â @  ì! Ù³?d µÌr^õ­ @  ì" Ú³?d XµÌðÏâs @  ì# Û³?d ˜µÌQñµŸ @  ì$ ܳ?d صÌÓ`¢A @  ì% ݳ?d ¶Ì<Êï' @  ì& Þ³?d X¶Ì¾[øù @  ì' ß³?d ˜¶Ìti³• @  ì( à³?d ضÌöø¤K @  ì) á³?d ·ÌT^Å @  ì* â³?d X·ÌÖÏÒÚ @  ì+ ã³?d ˜·Ìwñ…6 @  ì, ä³?d Ø·Ìõ`’è @  ì- å³?d ¸Ì³qóR @  ì. æ³?d X¸Ì1àäŒ @  ì/ ç³?d ˜¸Ì®”Ê0 @  ì0 è³?d ظÌ,Ýî @  ì1 é³?d ¹ÌŽ£¼¡ @  ì2 ê³?d X¹Ì 2« @  ì3 ë³?d ˜¹Ì­ ü“ @  ì4 ì³?d عÌ/ëM @  ì5 í³?d ºÌÀ7¦+ @  ì6 î³?d XºÌB¦±õ @  ì7 ï³?d ˜ºÌ#ÃE @  ì8 ð³?d غÌ—²Ô› @  ì9 ñ³?d »Ì5µÔ @  ì: ò³?d X»Ì·…¢  @  ì; ó³?d ˜»Ì»õæ @  ì< ô³?d ػ̔*â8 @  ì= õ³?d ¼ÌÿŠü @  ì> ö³?d X¼Ì}ëN @  ì? ÷³?d ˜¼Ì]näÐ @  ì@ ø³?d ؼÌßÿó @  ìA ù³?d ½Ì}Y’A @  ìB ú³?d X½ÌÿÈ…Ÿ @  ìC û³?d ˜½Ì^öÒs @  ìD ü³?d ؽÌÜgÅ­ @  ìE ý³?d ¾Ì3͈Ë @  ìF þ³?d X¾Ì±\Ÿ @  ìG ÿ³?d ˜¾ÌÕ–ÿ` @  ìH ´?d ؾÌWè¾ @  ìI ´?d ¿Ìõ¡‰ñ @  ìJ ´?d X¿Ìw0ž/ @  ìK ´?d ˜¿ÌÖÉà @uÐÀÌ  ìL ´?d Ø¿ÌmXÈ @  ìM´?d 0ÀÌ{F¾= @  ìN´?d pÀÌùשã @  ìO´?d °ÀÌf£‡_ @  ìP´?d ðÀÌä2 @  ìQ ´?d 0ÁÌF”ñÎ @  ìR ´?d pÁÌÄæ @  ìS ´?d °ÁÌe;±ü @  ìT ´?d ðÁÌ窦" @  ìU ´?d 0ÂÌëD @  ìV´?d pÂÌŠ‘üš @  ìW´?d °ÂÌÝŽ* @  ìX´?d ðÂÌ_…™ô @  ìY´?d 0ÃÌý#ø» @  ìZ´?d pÃ̲ïe @  ì[´?d °ÃÌÞŒ¸‰ @  ì\´?d ðÃÌ\¯W @  ì]´?d 0ÄÌ7½±ÿ @  ì^´?d pÄ̵,¦! @  ì_´?d °ÄÌ;^¯- @  ì`´?d ðÄ̹ϸó @  ìa´?d 0ÅÌiÙ¼ @  ìb´?d pÅÌ™øÎb @  ìc´?d °ÅÌ8Æ™Ž @  ìd´?d ðÅ̺WŽP @  ìe´?d 0ÆÌUýÃ6 @  ìf´?d pÆÌ×lÔè @  ìg´?d °ÆÌ^Ÿ„ @  ìh ´?d ðÆÌŸÏˆZ @  ìi!´?d 0ÇÌ=ié @  ìj"´?d pÇÌ¿øþË @  ìk#´?d °ÇÌÆ©' @  ìl$´?d ðÇÌœW¾ù @  ìm%´?d 0ÈÌÚFßC @  ìn&´?d pÈÌX×È @  ìo'´?d °ÈÌÇ£æ! @  ìp(´?d ðÈÌE2ñÿ @  ìq)´?d 0ÉÌç”° @  ìr*´?d pÉÌe‡n @  ìs+´?d °ÉÌÄ;Ђ @  ìt,´?d ðÉÌFªÇ\ @  ìu-´?d 0ÊÌ©Š: @  ìv.´?d pÊÌ+‘ä @  ìw/´?d °ÊÌ|ïT @  ìx0´?d ðÊÌþ…øŠ @  ìy1´?d 0ËÌ\#™Å @  ìz2´?d pËÌÞ²Ž @  ì{3´?d °ËÌŒÙ÷ @  ì|4´?d ðËÌýÎ) @  ì}5´?d 0ÌÌ–½Ð @  ì~6´?d pÌÌ,Ç_ @  ì7´?d °ÌÌ×øð @  ì€8´?d ðÌÌUžï. @  ì9´?d 0ÍÌ÷8Ža @  ì‚:´?d pÍÌu©™¿ @  ìƒ;´?d °ÍÌÔ—ÎS @  ì„<´?d ðÍÌVÙ @  ì…=´?d 0Î̹¬”ë @  ì†>´?d pÎÌ;=ƒ5 @  ì‡?´?d °ÎÌ_ÝH @  ìˆ@´?d ðÎ̃ÎÊ– @  ì‰A´?d 0ÏÌ!h«Ù @  ìŠB´?d pÏÌ£ù¼ @  ì‹C´?d °ÏÌÇëë @  ìŒD´?d ðÏÌ€Vü5 @  ìE´?d 0ÐÌLf­  @  ìŽF´?d pÐÌÎ÷ºþ @  ìG´?d °ÐÌQƒ”B @  ìH´?d ðÐÌÓƒœ @  ì‘I´?d 0ÑÌq´âÓ @  ì’J´?d pÑÌó%õ  @  ì“K´?d °ÑÌR¢á @  ì”L´?d ðÑÌЊµ? @  ì•M´?d 0ÒÌ? øY @  ì–N´?d pÒ̽±ï‡ @  ì—O´?d °ÒÌê47 @  ì˜P´?d ðÒÌh¥Šé @  ì™Q´?d 0ÓÌÊë¦ @  ìšR´?d pÓÌH’üx @  ì›S´?d °ÓÌ鬫” @  ìœT´?d ðÓÌk=¼J @  ìU´?d 0ÔÌ¢â @  ìžV´?d pÔÌ‚ µ< @  ìŸW´?d °ÔÌ ~¼0 @  ì X´?d ðÔÌŽï«î @  ì¡Y´?d 0ÕÌ,IÊ¡ @  ì¢Z´?d pÕÌ®ØÝ @  ì£[´?d °ÕÌ抓 @  ì¤\´?d ðÕÌwM @  ì¥]´?d 0ÖÌbÝÐ+ @  ì¦^´?d pÖÌàLÇõ @  ì§_´?d °ÖÌ*~Œ™ @  ì¨`´?d ðǪ̈ï›G @  ì©a´?d 0×Ì Iú @  ìªb´?d p×̈ØíÖ @  ì«c´?d °×Ì)æº: @  ì¬d´?d ð×Ì«w­ä @  ì­e´?d 0ØÌífÌ^ @  ì®f´?d pØÌo÷Û€ @  ì¯g´?d °ØÌðƒõ< @  ì°h´?d ðØÌrââ @  ì±i´?d 0ÙÌдƒ­ @  ì²j´?d pÙÌR%”s @  ì³k´?d °ÙÌóß @  ì´l´?d ðÙÌqŠÔA @  ìµm´?d 0ÚÌž ™' @  ì¶n´?d pÚ̱Žù @  ì·o´?d °ÚÌK4üI @  ì¸p´?d ðÚÌÉ¥ë— @  ì¹q´?d 0ÛÌkŠØ @  ìºr´?d pÛÌé’ @  ì»s´?d °ÛÌH¬Êê @  ì¼t´?d ðÛÌÊ=Ý4 @  ì½u´?d 0Ü̡Ü @  ì¾v´?d pÜÌ# ÔB @  ì¿w´?d °ÜÌyÛÜ @  ìÀx´?d ðÜÌèÌ @  ìÁy´?d 0ÝÌ#N­M @  ìÂz´?d pÝ̡ߺ“ @  ìÃ{´?d °ÝÌáí @  ìÄ|´?d ðÝÌ‚pú¡ @  ìÅ}´?d 0ÞÌmÚ·Ç @  ìÆ~´?d pÞÌïK  @  ìÇ´?d °ÞÌÈïªö @  ìÈ€´?d ðÞÌJ~½( @  ìÉ´?d 0ßÌèØÜg @  ìÊ‚´?d pßÌjI˹ @  ì˃´?d uÐàÌ/°ßÌËwœU @  ìÌ„´?d ðßÌIæ‹‹ @  ìÍ…´?d HàÌ"¬8Ú @  ìΆ´?d ˆàÌY:$ @  ìχ´?d ÈàÌ?I¸ @  ìЈ´?d áÌïP @  ìщ´?d HáÌ~w) @  ìÒŠ´?d ˆáÌ?‹u× @  ìÓ‹´?d ÈáÌ<Ñ7 @  ìÔŒ´?d âÌ¡•—Ú @  ìÕ´?d HâÌQêm£ @  ìÖŽ´?d ˆâÌqo] @  ì×´?d ÈâÌ„þÍ @  ìØ´?d ãÌT¶„% @  ìÙ‘´?d Hã̤É~\ @  ìÚ’´?d ˆãÌ„<|¢ @  ìÛ“´?d Èã̇f>n @  ìÜ”´?d äÌž(Ía @  ìÝ•´?d HäÌnW7 @  ìÞ–´?d ˆäÌN¢5æ @  ìß—´?d ÈäÌb´)Ê @  ìà˜´?d å̲ü¥" @  ìá™´?d HåÌBƒ_[ @  ìâš´?d€ ˆå̵A @  í›´?d ÈåÌô®Kæ @  íœ´?d æÌiêë' @  í´?d HæÌ\Üê³ @  íž´?d ˆæÌ|)èM @  íŸ´?d ÈæÌÚÍé{ @  í ´?d çÌ …e“ @  í¡´?d HçÌ4HÀ @  í¢´?d ˆç̽Ân @  í £´?d ÈçÌÒ®{O @  í ¤´?d èÌæQ÷R @  í ¥´?d HèÌÓgöÆ @  í ¦´?d ˆèÌó’ô8 @  í §´?d ÈèÌ­‘®> @  í¨´?d éÌ}Ù"Ö @  í©´?d HéÌîµ¹5 @  íª´?d ˆéÌÎ@»Ë @  í«´?d ÈéÌSê @  í¬´?d êÌ•¢+ @  í­´?d HêÌ !£¿ @  í®´?d ˆêÌ€Ô¡A @  í¯´?d ÈêÌ»‡™« @  í°´?d ëÌkÏC @  í±´?d HëÌU°@ @  í²´?d ˆëÌu÷²¾ @  í³´?d ÈëÌ³ä Ÿ @  í´´?d ì̪ªø @  íµ´?d HìÌŸœù @  í¶´?d ˆìÌ¿iûú @  í·´?d ÈìÌáj¡ü @  í¸´?d íÌ1"- @  í¹´?d Hí̳H‘G @  í º´?d ˆíÌ“½“¹ @  í!»´?d ÈíÌU®*˜ @  í"¼´?d îÌÈêŠY @  í#½´?d HîÌýÜ‹Í @  í$¾´?d ˆîÌÝ)‰3 @  í%¿´?d ÈîÌ‹ @  í&À´?d ïÌ[Õü @  í'Á´?d HïÌe´ÿ @  í(´?d ˆïÌEí¶ @  í)ô?d Èï̃þ  @  í*Ä´?d ðÌ= ³’ @  í+Å´?d Hð̲ @  í,Æ´?d ˆðÌ(ã°ø @  í-Ç´?d ÈðÌvàêþ @  í.È´?d ñ̦¨f @  í/É´?d HñÌ5Äýõ @  í0Ê´?d ˆñÌ1ÿ  @  í1Ë´?d ÈñÌÓ"F* @  í2Ì´?d òÌNfæë @  í3Í´?d HòÌ{Pç @  í4δ?d ˆòÌ[¥å @  í5Ï´?d ÈòÌ`öÝk @  í6д?d ó̰¾Qƒ @  í7Ñ´?d HóÌŽsô€ @  í8Ò´?d ˆóÌ®†ö~ @  í9Ó´?d ÈóÌh•O_ @  í:Ô´?d ôÌqÛ¼P @  í;Õ´?d HôÌDí½Ä @  í<Ö´?d ˆôÌd¿: @  í=×´?d ÈôÌ:å< @  í>Ø´?d õÌêSiÔ @  í?Ù´?d HõÌÆ>Ó @  í@Ú´?d ˆõÌæËÑë @  íAÛ´?d ÈõÌ ØhÊ @  íBÜ´?d ö̽œÈ  @  íCÝ´?d Hö̈ªÉŸ @  íDÞ´?d ˆǫ̈_Ëa @  íEß´?d ÈöÌ»ÊW @  íFà´?d ÷ÌÞóF¿ @  íGá´?d H÷Ìà>ã¼ @  íHâ´?d ˆ÷ÌÀËáB @  íIã´?d È÷ÌØXc @  íJä´?d øÌ2'Ô~ @  íKå´?d HøÌÕê @  íLæ´?d ˆøÌ'ä× @  íMç´?d ÈøÌyç @  íNè´?d ùÌ©¯ú @  íOé´?d HùÌ:Ú @  íPê´?d ˆùÌ6˜ç @  íQë´?d ÈùÌÜ%!Æ @  íRì´?d úÌAa @  íSí´?d HúÌtW€“ @  íTî´?d ˆúÌT¢‚m @  íUï´?d ÈúÌoñº‡ @  íVð´?d ûÌ¿¹6o @  íWñ´?d HûÌt“l @  íXò´?d ˆûÌ¡‘’ @  íYó´?d ÈûÌg’(³ @  íZô´?d üÌ~ÜÛ¼ @  í[õ´?d HüÌKêÚ( @  í\ö´?d ˆüÌkØÖ @  í]÷´?d ÈüÌ5‚Ð @  í^ø´?d ýÌåT8 @  í_ù´?d HýÌg>²k @  í`ú´?d ˆýÌG˰• @  íaû´?d ÈýÌØ ´ @  íbü´?d þÌœ©u @  ícý´?d HþÌ)ª¨á @  ídþ´?d ˆþÌ _ª @  íeÿ´?d ÈþÌ=J¿¦ @  ífµ?d ÿÌí3N @  ígµ?d HÿÌÓÏ–M @  íhµ?d ˆÿÌó:”³ @  íiuÐ͵?d ÈÿÌ îñG @  íj µ?d ÍCZÙ¶ @  ík µ?d `ÍvlØ" @  íl µ?d  ÍV™ÚÜ @  ím µ?d àÍš€Ú @  ín µ?d ÍØÒ 2 @  ío  µ?d `ÍK¾—Ñ @  íp  µ?d  ÍkK•/ @  íq  µ?d àÍ­X, @  ír  µ?d Í0ŒÏ @  ís  µ?d `Í*[ @  ít µ?d  Í%ߥ @  íu µ?d àÍŒ·O @  ív µ?d ÍÎÄ;§ @  íw µ?d `Í𠞤 @  íx µ?d  ÍÐüœZ @  íy µ?d àÍï%{ @  íz µ?d Í¡Öt @  í{ µ?d `Í:—×à @  í| µ?d  ÍbÕ @  í} µ?d àÍ¿´ @  í~µ?d ÍoG8ð @  íµ?d `Í |² @  í€µ?d  Í€‰°þ @  íµ?d àÍFš ß @  í‚µ?d ÍÛÞ© @  íƒµ?d `Íî訊 @  í„µ?d  ÍΪt @  í…µ?d àÍhù«B @  í† µ?d ͸±'ª @  í‡!µ?d `͆|‚© @  íˆ"µ?d  Í¦‰€W @  í‰#µ?d àÍ`š9v @  íŠ$µ?d ÍTeµk @  í‹%µ?d `ÍaS´ÿ @  íŒ&µ?d  ÍA¦¶ @  í'µ?d àÍ¥ì @  íŽ(µ?d ÍÏí`ï @  í)µ?d ` Í\û  @  í*µ?d   Í|tùò @  í‘+µ?d à ͺg@Ó @  í’,µ?d Í'#à @  í“-µ?d ` Íᆠ@  í”.µ?d   Í2àãx @  í•/µ?d à Í ³Û’ @  í–0µ?d ÍÙûWz @  í—1µ?d ` Íç6òy @  í˜2µ?d   ÍÇÃð‡ @  í™3µ?d à ÍÐI¦ @  íš4µ?d Ížº© @  í›5µ?d ` Í-¨»= @  íœ6µ?d   Í ]¹Ã @  í7µ?d à ÍS^ãÅ @  íž8µ?d ̓o- @  íŸ9µ?d ` Í|Ó~ @  í :µ?d   Í!‰Ñ€ @  í¡;µ?d à Íçšh¡ @  í¢<µ?d ÍzÞÈ` @  í£=µ?d `ÍOèÉô @  í¤>µ?d  ÍoË  @  í¥?µ?d àÍ9©ß- @  í¦@µ?d ÍéáSÅ @  í§Aµ?d `Í×,öÆ @  í¨Bµ?d  Í÷Ùô8 @  í©Cµ?d àÍ1ÊM @  íªDµ?d Íñ« @  í«Eµ?d `ͺ"ð? @  í¬Fµ?d  Íš×òÁ @  í­Gµ?d àÍÄfl @  í®Hµ?d Íœ$/ @  í¯Iµ?d `͇ð¿Ì @  í°Jµ?d  Í§½2 @  í±Kµ?d àÍa @  í²Lµ?d ÍüR¤Ò @  í³Mµ?d `ÍÉd¥F @  í´Nµ?d  Íé‘§¸ @  íµOµ?d àÍÒŸR @  í¶Pµ?d ÍŠº @  í·Qµ?d `Í @  íÓmµ?d `ÍÆcª @  íÔnµ?d  Íæ–ÀT @  íÕoµ?d àÍÝÅø¾ @  íÖpµ?d Í tV @  í×qµ?d `Í3@ÑU @  íØrµ?d  ÍµÓ« @  íÙsµ?d àÍÕ¦jŠ @  íÚtµ?d ÍÌè™… @  íÛuµ?d `ÍùÞ˜ @  íÜvµ?d  ÍÙ+šï @  íÝwµ?d à͇(Àé @  íÞxµ?d ÍW`L @  íßyµ?d `ÍÕ ðR @  íàzµ?d  Íõÿò¬ @  íá{µ?d àÍ3ìK @  íâ|µ?d€ ÍoïL @  î}µ?d `Í»˜Uñ @  î~µ?d  Í›mW @  îµ?d àÍVìW @  î€µ?d ÍÅ`¿ @  îµ?d `Í5ašÆ @  î‚µ?d  Í”˜8uÐ Í @  îƒµ?d àÍßœ™¶ @  î„µ?d 8 Í®—GÐ @  î …µ?d x Í^轩 @  î †µ?d ¸ Í~¿W @  î ‡µ?d ø ÍåW¼ @  î ˆµ?d 8!Í5’T @  î ‰µ?d x!ÍÅ`h- @  îе?d ¸!Íå•jÓ @  î‹µ?d ø!Í@•²h @  îŒµ?d 8"ÍÝÑ© @  îµ?d x"Í-®èÐ @  î޵?d ¸"Í [ê. @  îµ?d ø"ÍóA)) @  îµ?d 8#Í# ¥Á @  î‘µ?d x#ÍÓv_¸ @  î’µ?d ¸#Íóƒ]F @  î“µ?d ø#Íû"» @  î”µ?d 8$ÍâlH @  î•µ?d x$Ͳk @  î–µ?d ¸$Í2æ°• @  î—µ?d ø$Í©¬~ @  î˜µ?d 8%Íyä– @  î™µ?d x%͉›gï @  îšµ?d ¸%Í©ne @  î›µ?d ø%Íhš @  î œµ?d 8&Í€,:Û @  î!µ?d x&ÍpSÀ¢ @  î"žµ?d ¸&ÍP¦Â\ @  î#Ÿµ?d ø&Í3 8‡ @  î$ µ?d 8'ÍãC´o @  î%¡µ?d x'ÍÆ @  î6²µ?d ¸+ÍRƒ<8 @  î7³µ?d ø+ÍZ"Úc @  î8´µ?d 8,ÍCl)l @  î9µµ?d x,Í³Ó @  î:¶µ?d ¸,Í“æÑë @  î;·µ?d ø,ͬp @  î<¸µ?d 8-ÍØäüè @  î=¹µ?d x-Í(›‘ @  î>ºµ?d ¸-Íno @  î?»µ?d ø-Íoýö @  î@¼µ?d 8.Í+]7 @  îA½µ?d x.ÍT§N @  îB¾µ?d ¸.Í_¡¥° @  îC¿µ?d ø.ÍÌ\Jz @  îDÀµ?d 8/ÍÆ’ @  îEÁµ?d x/Íìk<ë @  îFµ?d ¸/ÍÌž> @  îGõ?d ø/ÍÄ?ØN @  îHĵ?d 80Ízádü @  îIŵ?d x0ÍŠžž… @  îJƵ?d ¸0ͪkœ{ @  îKǵ?d ø0Í1!= @  îLȵ?d 81Íái±x @  îMɵ?d x1ÍK @  îNʵ?d ¸1Í1ãIÿ @  îO˵?d ø1Í”ã‘D @  îP̵?d 82Í §1… @  îQ͵?d x2ÍùØËü @  îRε?d ¸2ÍÙ-É @  îSϵ?d ø2Í'7  @  îTе?d 83Í÷†í @  îUѵ?d x3Í|” @  îVÒµ?d ¸3Í'õ~j @  îWÓµ?d ø3Í/T˜1 @  îXÔµ?d 84Í6k> @  îYÕµ?d x4ÍÆe‘G @  îZÖµ?d ¸4Í擹 @  î[×µ?d ø4Í}Ú2R @  î\ص?d 85Í­’¾º @  î]Ùµ?d x5Í]íDà @  î^Úµ?d ¸5Í}F= @  î_Ûµ?d ø5Íɹ6 @  î`ܵ?d 86ÍTZ÷ @  îaݵ?d x6ͤ%㎠@  îbÞµ?d ¸6Í„Ðáp @  îcßµ?d ø6Íç}« @  îdàµ?d 87Í75—C @  îeáµ?d x7ÍÇJm: @  îfâµ?d ¸7Íç¿oÄ @  îgãµ?d ø7Í @  îhäµ?d 88ÍÛá‚ @  îiåµ?d x8Í+žÿû @  îjæµ?d ¸8Í ký @  îkçµ?d ø8Í!\î @  îlèµ?d 89Í@iÐ @  îméµ?d x9Ͱ* @  înêµ?d ¸9Íã( @  îoëµ?d ø9Í5ãð: @  îpìµ?d 8:ͨ§Pû @  îqíµ?d x:ÍXت‚ @  îrîµ?d ¸:Íx-¨| @  îsïµ?d ø:͆7k{ @  îtðµ?d 8;ÍVç“ @  îuñµ?d x;ͦê @  îvòµ?d ¸;͆õ @  îwóµ?d ø;ÍŽTùO @  îxôµ?d 8<Í— @ @  îyõµ?d x<Ígeð9 @  îzöµ?d ¸<ÍGòÇ @  î{÷µ?d ø<ÍÜÚS, @  î|øµ?d 8=Í ’ßÄ @  î}ùµ?d x=Íüí%½ @  î~úµ?d ¸=ÍÜ'C @  îûµ?d ø=Í%Oîë @  î€üµ?d 8>͸ N* @  îýµ?d x>ÍHt´S @  î‚þµ?d ¸>Íh¶­ @  îƒÿµ?d ø>Í+ÿmÜ @  î„¶?d 8?Íû·á4 @  î…¶?d x?Í ÈM @  î†¶?duÐ@Í7 ¸?Í+=³ @  î‡¶?d ø?Í#œÿè @  îˆ¶?d P@Íà0EÔ @  î‰¶?d @Ͳ+ª @  îж?d Ð@Í0º½S @  î‹¶?d AÍù)‡Ž @  îŒ¶?d PAÍ{¸P @  î ¶?d AÍ)£  @  îŽ ¶?d ÐAÍ«2h× @  î ¶?d BÍçs @  î ¶?d PBÍ“v­ @  î‘ ¶?d BÍÁmÿô @  î’¶?d ÐBÍCüè* @  î“¶?d CÍï?° @  î”¶?d PCÍm®§Å @  î•¶?d CÍ?µHœ @  î–¶?d ÐCͽ$_B @  î—¶?d DÍ.Z]È @  î˜¶?d PDͬËJ @  î™¶?d DÍþÐ¥O @  îš¶?d ÐDÍ|A²‘ @  î›¶?d E͵҈L @  îœ¶?d PEÍ7CŸ’ @  î¶?d EÍeXpË @  îž¶?d ÐEÍçÉg @  îŸ¶?d FÍL/ @  î ¶?d PFÍ΋8ß @  î¡¶?d F͜׆ @  î¢¶?d ÐFÍÀX @  î£¶?d GÍ/u¡µ @  î¤ ¶?d PGÍ­ä¶k @  î¥!¶?d GÍÿÿY2 @  î¦"¶?d ÐGÍ}nNì @  î§#¶?d HÍá3t @  î¨$¶?d PHÍA0$ª @  î©%¶?d HÍ+Ëó @  îª&¶?d ÐHÍ‘ºÜ- @  î«'¶?d IÍX)æð @  î¬(¶?d PIÍÚ¸ñ. @  î­)¶?d I͈£w @  î®*¶?d ÐIÍ 2 © @  î¯+¶?d JͰçf  @  î°,¶?d PJÍ2vqÓ @  î±-¶?d JÍ`mžŠ @  î².¶?d ÐJÍâü‰T @  î³/¶?d KÍN?Ñe @  î´0¶?d PKÍ̮ƻ @  îµ1¶?d KÍžµ)â @  î¶2¶?d ÐKÍ$>< @  î·3¶?d LÍZ<¶ @  î¸4¶?d PLÍ Ë+h @  î¹5¶?d LÍ_ÐÄ1 @  îº6¶?d ÐLÍÝAÓï @  î»7¶?d MÍÒé2 @  î¼8¶?d PMÍ–Cþì @  î½9¶?d MÍÄXµ @  î¾:¶?d ÐMÍFÉk @  î¿;¶?d NÍCHí @  îÀ<¶?d PNÍÁŒ_3 @  îÁ=¶?d NÍ“—°j @  îÂ>¶?d ÐNͧ´ @  îÃ?¶?d OÍÐ"ÓH @  îÄ@¶?d POÍR³Ä– @  îÅA¶?d Oͨ+Ï @  îÆB¶?d ÐOÍ‚9< @  îÇC¶?d PͶ×q& @  îÈD¶?d PPÍ4Ffø @  îÉE¶?d PÍf]‰¡ @  îÊF¶?d ÐPÍäÌž @  îËG¶?d QÍ-_¤¢ @  îÌH¶?d PQͯγ| @  îÍI¶?d QÍýÕ\% @  îÎJ¶?d ÐQÍDKû @  îÏK¶?d RÍÅ‘$_ @  îÐL¶?d PRÍG3 @  îÑM¶?d RÍÜØ @  îÒN¶?d ÐRÍ—ŠË @  îÓO¶?d SÍ;I“7 @  îÔP¶?d PS͹؄é @  îÕQ¶?d SÍëÃk° @  îÖR¶?d ÐSÍiR|n @  î×S¶?d TÍú,~ä @  îØT¶?d PTÍx½i: @  îÙU¶?d TÍ*¦†c @  îÚV¶?d ÐTͨ7‘½ @  îÛW¶?d UÍa¤«` @  îÜX¶?d PUÍã5¼¾ @  îÝY¶?d Uͱ.Sç @  îÞZ¶?d ÐUÍ3¿D9 @  îß[¶?d V͘l - @  îà\¶?d PVÍýó @  îá]¶?d VÍHæôª @  îâ^¶?d€ ÐV;´ÿÒ @  ï_¶?d WÍnÖ @  ï`¶?d PWÍìÁÈ @  ïa¶?d WÍ{BÕ| @  ïb¶?d ÐWÍùÓ¢ @  ïc¶?d X͉®à@ @  ïd¶?d PXÍ ?÷ž @  ïe¶?d XÍ—–G½ @  ïf¶?d ÐXÍPc @  ï g¶?d YÍÝ‘S @  ï h¶?d PYÍ›L† @  ï i¶?d YÍ ’9 @  ï j¶?d ÐYÍŽ…ç @  ï k¶?d ZÍWI‹Ù @  ïl¶?d PZÍÕØœ @  ïm¶?d ZÍäÐÄ @  ïn¶?d ÐZÍfA @  ïo¶?d [Í˦Æ @  ïp¶?d P[ÍZ± @  ïq¶?d [Í¥¬ @  ïr¶?d Ð[͘™²r @  ïs¶?d \ÍÅUï‚ @  ït¶?d P\ÍGÄø\ @  ïu¶?d \ÍÛmH @  ïv¶?d Ð\ÍYü_¡ @  ïw¶?d ]ÍU&ž‘ @  ïx¶?d P]Í×·‰O @  ïy¶?d ]Í@åû @  ïz¶?d Ð]ÍÂtŠ% @  ï{¶?d ^Ͳ„ @  ï|¶?d P^Í™#“Å @  ï}¶?d ^͹-:¶ @  ï ~¶?d Ð^Í;¼-h @  ï!¶?d _Í"öë @  ï"€¶?d P_Í †á5 @  ï#¶?d _Í7Ôõ @  ïuÐ`Í$‚¶?d Ð_͵Eâ_ @  ï%ƒ¶?d (`ÍO?ù8 @  ï&„¶?d h`ÍÍ®îæ @  ï'…¶?d ¨`ÍQ^Å @  ï(†¶?d è`ÍÓ–I @  ï)‡¶?d (aÍßLˆ+ @  ï*ˆ¶?d haÍ]ÝŸõ @  ï+‰¶?d ¨aÍÊ‹A @  ï,ж?d èaÍHœŸ @  ï-‹¶?d (b͑ؒ¡ @  ï.Œ¶?d hbÍI… @  ï/¶?d ¨bÍ"A ¼ @  ï0޶?d èbÍ Ðb @  ï1¶?d (cÍÉZ¿¾ @  ï2¶?d hcÍK˨` @  ï3‘¶?d ¨cÍÜ™¼Ô @  ï4’¶?d ècÍ^«  @  ï5“¶?d (dÍÄöú @  ï6”¶?d hdÍUá$ @  ï7•¶?d ¨dÍüQ @  ï8–¶?d èdÍŸmFÙ @  ï9—¶?d (eÍ“·‡é @  ï:˜¶?d heÍ&7 @  ï;™¶?d ¨e͆t„ƒ @  ï<š¶?d èeÍå“] @  ï=›¶?d (fÍÝ#c @  ï>œ¶?d hfÍ_²Š½ @  ï?¶?d ¨fÍÑ»%\ @  ï@ž¶?d èfÍS*2‚ @  ïAŸ¶?d (gͧ¨‚ @  ïB ¶?d hgÍ%†¿\ @  ïC¡¶?d ¨gͲԫè @  ïD¢¶?d ègÍ0E¼6 @  ïE£¶?d (hÍ@8žÔ @  ïF¤¶?d hhÍ©‰  @  ïG¥¶?d ¨hÍ^9) @  ïH¦¶?d èhÍÜ‘.÷ @  ïI§¶?d (iÍÐKïÇ @  ïJ¨¶?d hiÍRÚø @  ïK©¶?d ¨iÍňì­ @  ïLª¶?d èiÍGûs @  ïM«¶?d (jÍžßõM @  ïN¬¶?d hjÍNâ“ @  ïO­¶?d ¨jÍ-FlP @  ïP®¶?d èjͯ×{Ž @  ïQ¯¶?d (kÍÆ]ØR @  ïR°¶?d hkÍDÌÏŒ @  ïS±¶?d ¨kÍÓžÛ8 @  ïT²¶?d èkÍQÌæ @  ïU³¶?d (lÍ Ñ @  ïV´¶?d hlÍŽR†È @  ïWµ¶?d ¨lÍû6ë @  ïX¶¶?d èlÍj!5 @  ïY·¶?d (mÍœ°à @  ïZ¸¶?d hmÍ!÷Û @  ï[¹¶?d ¨m͉são @  ï\º¶?d èmÍ âô± @  ï]»¶?d (nÍÒ$ú @  ï^¼¶?d hnÍPµíQ @  ï_½¶?d ¨nÍp»D" @  ï`¾¶?d ènÍò*Sü @  ïa¿¶?d (oÍöGÜí @  ïbÀ¶?d hoÍtÖË3 @  ïcÁ¶?d ¨oÍã„߇ @  ïd¶?d èoÍaÈY @  ïeö?d (pÍ›IÚ @  ïfĶ?d hpÍØÍÊ @  ïgŶ?d ¨pÍ…q}é @  ïhƶ?d èpÍàj7 @  ïiǶ?d (qÍ :« @  ïjȶ?d hq͉«¼Ù @  ïkɶ?d ¨qÍù¨m @  ïlʶ?d èqÍœh¿³ @  ïm˶?d (rÍE®± @  ïn̶?d hrÍÇ?¦S @  ïoͶ?d ¨rÍö7( @  ïpζ?d èrÍt¦?N @  ïq϶?d (sÍ,œ’ @  ïrж?d hsÍŸ½‹L @  ïsѶ?d ¨sÍïŸø @  ïtÒ¶?d èsÍŠ~ˆ& @  ïuÓ¶?d (tÍײÕÖ @  ïvÔ¶?d htÍU# @  ïwÕ¶?d ¨tÍÉŠr+ @  ïxÖ¶?d ètÍKeõ @  ïy×¶?d (uÍGÁ¤Å @  ïzض?d huÍÅP³ @  ï{Ù¶?d ¨uÍR§¯ @  ï|Ú¶?d èuÍГ°q @  ï}Û¶?d (vÍ U¾O @  ï~ܶ?d hv͋ĩ‘ @  ïݶ?d ¨vÍæ›6A @  ï€Þ¶?d èvÍd !Ÿ @  ïß¶?d (wÍ7»Ÿ @  ï‚à¶?d hwͦ¬A @  ïƒá¶?d ¨wÍ…ô¸õ @  ï„â¶?d èwÍe¯+ @  ï…ã¶?d (xÍwÉ @  ï†ä¶?d hxÍõ‰š @  ï‡å¶?d ¨xÍi *4 @  ïˆæ¶?d èxÍë±=ê @  ï‰ç¶?d (yÍçküÚ @  ïŠè¶?d hyÍeúë @  ï‹é¶?d ¨yÍò¨ÿ° @  ïŒê¶?d èyÍp9èn @  ïë¶?d (zÍ©ÿæP @  ïŽì¶?d hzÍ+nñŽ @  ïí¶?d ¨zÍfM @  ïî¶?d èz͘÷h“ @  ï‘ï¶?d ({Íñ}ËO @  ï’ð¶?d h{ÍsìÜ‘ @  ï“ñ¶?d ¨{Íä¾È% @  ï”ò¶?d è{Íf/ßû @  ï•ó¶?d (|Í;ã‚  @  ï–ô¶?d h|͹r•Õ @  ï—õ¶?d ¨|Í%Û%ö @  ï˜ö¶?d è|ͧJ2( @  ï™÷¶?d (}Í«ó @  ïšø¶?d h}Í)äÆ @  ï›ù¶?d ¨};Sðr @  ïœú¶?d è}Í<Âç¬ @  ïû¶?d (~Íåé’ @  ïžü¶?d h~Íg•þL @  ïŸý¶?d ¨~ÍG›W? @  ï þ¶?d è~ÍÅ @á @  ï¡ÿ¶?d (Í£ÆÎn @  ï¢·?d hÍ!WÙ° @  ï£·?d ¨ÍuЀÍ'¶Í @  ï¤·?d èÍ4”ÚÚ @  ï¥·?d @€Í¨–Q @  ï¦·?d €€Í>]”¯ @  ï§·?d À€Í1¬ @  ï¨·?d ÍÐØ½D @  ï©·?d @ÍŽÛçB @  ïª·?d €Í®.å¼ @  ï« ·?d ÀÍ›ä( @  ï¬ ·?d ‚Í\Dé @  ï­ ·?d @‚ÍÀOýÈ @  ï® ·?d €‚Íàºÿ6 @  ï¯ ·?d À‚ÍsÖdÕ @  ï°·?d ƒÍ£žè= @  ï±·?d @ƒÍ˜ÍÐ× @  ï²·?d €ƒÍ¸8Ò) @  ï³·?d ÀƒÍÓ½ @  ï´·?d „Í”@ ² @  ïµ·?d @„ÍRS™“ @  ï¶·?d €„Ír¦›m @  ï··?d À„ÍLk>n @  ï¸·?d …Íœ#²† @  ï¹·?d @…Í è€ @  ïº·?d €…ÍâÕê~ @  ï»·?d À…Í×ãëê @  ï¼·?d †ÍJ§K+ @  ï½·?d @†ÍŒ´ò  @  ï¾·?d €†Í¬Aðô @  ï¿·?d À†Í€,J5 @  ïÀ·?d ‡ÍPdÆÝ @  ïÁ·?d @‡Íö€Çë @  ï ·?d €‡ÍÖuÅ @  ïÃ!·?d À‡ÍãCÄ @  ïÄ"·?d ˆÍ×¼Hœ @  ïÅ#·?d @ˆÍ¯ñ½ @  ïÆ$·?d €ˆÍ1ZóC @  ïÇ%·?d ÀˆÍ—V@ @  ïÈ&·?d ‰ÍßßÚ¨ @  ïÉ'·?d @‰ÍÜ€® @  ïÊ(·?d €‰Í¡)‚P @  ïË)·?d À‰Í”ƒÄ @  ïÌ*·?d ŠÍ [# @  ïÍ+·?d @ŠÍÏHš$ @  ïÎ,·?d €ŠÍxÚ @  ïÏ-·?d ÀŠÍ|Ñ9 @  ïÐ.·?d ‹Í¬™Ñ @  ïÑ/·?d @‹Í—Ê·; @  ïÒ0·?d €‹Í·?µÅ @  ïÓ1·?d À‹Í‚ ´Q @  ïÔ2·?d ŒÍ›GG^ @  ïÕ3·?d @ŒÍ]Tþ @  ïÖ4·?d €ŒÍ}¡ü @  ï×5·?d ÀŒÍClY‚ @  ïØ6·?d Í“$Õj @  ïÙ7·?d @ÍÍ'l @  ïÚ8·?d €ÍíÒ’ @  ïÛ9·?d ÀÍØäŒ @  ïÜ:·?d ŽÍE ,Ç @  ïÝ;·?d @ŽÍƒ³•æ @  ïÞ<·?d €ŽÍ£F— @  ïß=·?d ÀŽÍ!,+K @  ïà>·?d Íñd§£ @  ïá?·?d @ͧг„ @  ïâ@·?d€ €Íìy]” @  ðA·?d ÀÍ8) @  ðB·?d ͆Ш› @  ðC·?d @Í…ŠêW @  ðD·?d €Í¥è© @  ðE·?d ÀÍUÐ @  ðF·?d ‘Í…Hž8 @  ðG·?d @‘Íù›D @  ðH·?d €‘Í5 ™º @  ð I·?d À‘ÍÅscà @  ð J·?d ’ÍX7à @  ð K·?d @’Í[mÎ @  ð L·?d €’Í{˜ƒ0 @  ð M·?d À’Í‹çyI @  ðN·?d “Í[¯õ¡ @  ðO·?d @“Íï¬Ñ @  ðP·?d €“Í#®/ @  ðQ·?d À“ÍÓeTV @  ðR·?d ”ÍÊ+§Y @  ðS·?d @”ÍÉqå• @  ðT·?d €”Íé„çk @  ðU·?d À”Íû @  ðV·?d •Íɳ‘ú @  ðW·?d @•ÍY”† @  ðX·?d €•Íy÷–x @  ðY·?d À•͉ˆl @  ðZ·?d –ÍÌÌÀ @  ð[·?d @–Í–Ž  @  ð\·?d €–Í7cŒò @  ð]·?d À–ÍÇv‹ @  ð^·?d —ÍTúc @  ð_·?d @—ÍÃ¥½ @  ð `·?d €—ÍãP¿ @  ð!a·?d À—Í/Eø @  ð"b·?d ˜Í'ÐÉå @  ð#c·?d @˜Í$Š‹) @  ð$d·?d €˜Í‰× @  ð%e·?d À˜Íôs® @  ð&f·?d ™Í$HÿF @  ð'g·?d @™Í´ùú: @  ð(h·?d €™Í” øÄ @  ð)i·?d À™Íds½ @  ð*j·?d šÍù7¢| @  ð+k·?d @šÍúmà° @  ð,l·?d €šÍÚ˜âN @  ð-m·?d ÀšÍ*ç7 @  ð.n·?d ›Íú¯”ß @  ð/o·?d @›Í¢ïͯ @  ð0p·?d €›Í‚ÏQ @  ð1q·?d À›Íre5( @  ð2r·?d œÍk+Æ' @  ð3s·?d @œÍhq„ë @  ð4t·?d €œÍH„† @  ð5u·?d ÀœÍ¸û|l @  ð6v·?d Íh³ð„ @  ð7w·?d @Íøõø @  ð8x·?d €ÍØ÷÷ @  ð9y·?d ÀÍ(ˆ  @  ð:z·?d žÍµÌ­¾ @  ð;{·?d @žÍ¶–ïr @  ð<|·?d €žÍ–cíŒ @  ð=}·?d ÀžÍfõ @  ð>~·?d ŸÍ¶T› @  ð?·?d @ŸÍ!4› @  ð@€·?d €ŸÍÁ™î @  ðA·uРÍ?d ÀŸÍñ¾c— @  ðB‚·?d  Íý5Î @  ðC€ƒ·?d X ÍþoŒA @  ðD€„·?d ˜ ÍÞšŽ¿ @  ðE€…·?d Ø Í.åtÆ @  ðF€†·?d ¡Íþ­ø. @  ðG€‡·?d X¡ÍnýR @  ðH€ˆ·?d ˜¡ÍNéÿ¬ @  ðI€‰·?d ء;–Õ @  ðJ€Š·?d ¢Í#Ò¥ @  ðK€‹·?d X¢Í ˆçØ @  ðL€Œ·?d ˜¢Í}å& @  ðM€·?d Ø¢Íð_ @  ðN€Ž·?d £Í J“· @  ðO€·?d X£Íx ÊÇ @  ðP€·?d ˜£ÍXÿÈ9 @  ðQ€‘·?d أͨ€2@ @  ðR€’·?d ¤Í±ÎÁO @  ðS€“·?d X¤Í²”ƒƒ @  ðT€”·?d ˜¤Í’a} @  ðU€•·?d ؤÍb{ @  ðV€–·?d ¥Í²V÷ì @  ðW€—·?d X¥Í"çò @  ðX€˜·?d ˜¥Íðn @  ðY€™·?d Ø¥Íòm  @  ðZ€š·?d ¦Ío)ªÖ @  ð[€›·?d X¦Ílsè @  ð\€œ·?d ˜¦ÍL†êä @  ð]€·?d ئͼù @  ð^€ž·?d §Íl±œu @  ð_€Ÿ·?d X§Í¸@Ûi @  ð`€ ·?d ˜§Í˜µÙ— @  ða€¡·?d اÍhÊ#î @  ðb€¢·?d ¨Í\5¯ó @  ðc€£·?d X¨Í_oí? @  ðd€¤·?d ˜¨ÍšïÁ @  ðe€¥·?d بÍå¸ @  ðf€¦·?d ©Í_­™P @  ðg€§·?d X©ÍÏœ, @  ðh€¨·?d ˜©ÍïéžÒ @  ði€©·?d ة͖d« @  ðj€ª·?d ªÍ‚ÒÄj @  ðk€«·?d XªÍˆ†¦ @  ðl€¬·?d ˜ªÍ¡}„X @  ðm€­·?d تÍQ~! @  ðn€®·?d «ÍJòÉ @  ðo€¯·?d X«ÍÙ «¹ @  ðp€°·?d ˜«Íùÿ©G @  ðq€±·?d Ø«Í €S> @  ðr€²·?d ¬ÍΠ1 @  ðs€³·?d X¬Í”âý @  ðt€´·?d ˜¬Í3aà @  ðu€µ·?d جÍÃz @  ðv€¶·?d ­ÍV–’ @  ðw€··?d X­Íƒç“î @  ðx€¸·?d ˜­Í£‘ @  ðy€¹·?d Ø­ÍSmki @  ðz€º·?d ®ÍÎ)˨ @  ð{€»·?d X®ÍÍs‰d @  ð|€¼·?d ˜®Í톋š @  ð}€½·?d Ø®Íùqã @  ð~€¾·?d ¯Íͱý  @  ð€¿·?d X¯Í¤A™¥ @  ð€€À·?d ˜¯Í„´›[ @  ð€Á·?d دÍtËa" @  ð‚€·?d °ÍÊÝ @  ðƒ€÷?d X°ÍÉOŸ\ @  ð„€Ä·?d ˜°Í麢 @  ð…€Å·?d ذÍÅgÛ @  ð†€Æ·?d ±ÍÉë3 @  ð‡€Ç·?d X±ÍY<îO @  ðˆ€È·?d ˜±ÍyÉì± @  ð‰€É·?d ر͉¶È @  ðŠ€Ê·?d ²Íò¶  @  ð‹€Ë·?d X²Í¨ôÅ @  ðŒ€Ì·?d ˜²Í7]ö; @  ð€Í·?d زÍÇ" B @  ðŽ€η?d ³Íj€ª @  ð€Ï·?d X³ÍO*ÙÚ @  ð€з?d ˜³ÍoßÛ$ @  ð‘€Ñ·?d سÍŸ !] @  ð’€Ò·?d ´Í†îÒR @  ð“€Ó·?d X´Í…´ž @  ð”€Ô·?d ˜´Í¥A’` @  ð•€Õ·?d Ø´ÍU>h @  ð–€Ö·?d µÍ…väñ @  ð—€×·?d XµÍÇá @  ð˜€Ø·?d ˜µÍ52ãs @  ð™€Ù·?d صÍÅM  @  ðš€Ú·?d ¶ÍX ¹Ë @  ð›€Û·?d X¶Í[Sû @  ðœ€Ü·?d ˜¶Í{¦ùù @  ð€Ý·?d ض͋ـ @  ðž€Þ·?d ·Í[‘h @  ðŸ€ß·?d X·Í`Èt @  ð €à·?d ˜·Í¯•ÊŠ @  ð¡€á·?d Ø·Í_ê0ó @  ð¢€â·?d ¸Ík¼î @  ð£€ã·?d X¸ÍhOþ" @  ð¤€ä·?d ˜¸ÍHºüÜ @  ð¥€å·?d ظ͸ť @  ð¦€æ·?d ¹ÍhŠM @  ð§€ç·?d X¹Íø<1 @  ð¨€è·?d ˜¹ÍØÉÏ @  ð©€é·?d عÍ(¶w¶ @  ðª€ê·?d ºÍµò×w @  ð«€ë·?d XºÍ¶¨•» @  ð¬€ì·?d ˜ºÍ–]—E @  ð­€í·?d غÍf"m< @  ð®€î·?d »Í¶jáÔ @  ð¯€ï·?d X»Íî*¸¤ @  ð°€ð·?d ˜»ÍÎߺZ @  ð±€ñ·?d Ø»Í> @# @  ð²€ò·?d ¼Í'î³, @  ð³€ó·?d X¼Í$´ñà @  ð´€ô·?d ˜¼ÍAó @  ðµ€õ·?d ؼÍô> g @  ð¶€ö·?d ½Í$v… @  ð·€÷·?d X½Í´Ç€ó @  ð¸€ø·?d ˜½Í”2‚  @  ð¹€ù·?d ؽÍdMxt @  ðº€ú·?d ¾Íù ص @  ð»€û·?d X¾ÍúSšy @  ð¼€ü·?d ˜¾ÍÚ¦˜‡ @  ð½€ý·?d ؾÍ*Ùbþ @  ð¾€þ·?d ¿Íú‘î @  ð¿€ÿ·?d X¿Í÷¥Šø @  ðÀ€¸?d ˜¿Í×Pˆ @uÐÀÍ  ðÁ€¸?d Ø¿ÍZ¯ @  ð¸?d 0ÀÍ>_PQ @  ðø?d pÀÍ= @  ðĸ?d °ÀÍðc @  ðŸ?d ðÀÍíê @  ðƸ?d 0ÁÍ=Çfò @  ðǸ?d pÁÍ­vcŽ @  ðȸ?d °Á̓ap @  ðÉ ¸?d ðÁÍ}ü›  @  ðÊ ¸?d 0ÂÍà¸;È @  ðË ¸?d pÂÍãây @  ðÌ ¸?d °ÂÍÃ{ú @  ðÍ ¸?d ðÂÍ3hƒ @  ðθ?d 0ÃÍã k @  ðϸ?d pÃÍ»`T @  ðи?d °ÃÍ›•Vå @  ðѸ?d ðÃÍk꬜ @  ðÒ¸?d 0ÄÍr¤_“ @  ðÓ¸?d pÄÍqþ_ @  ðÔ¸?d °ÄÍQ ¡ @  ðÕ¸?d ðÄÍ¡tåØ @  ðÖ¸?d 0ÅÍq¸?d 0ÏÍ^̵ @  ñ?¸?d pÏͤؒ @  ñ@¸?d °ÏÍ(QÚl @  ñA¸?d ðÏͪ;f? @  ñ B¸?d 0ÐÍåÚ @  ñ!C¸?d pÐÍÒöc¬ @  ñ"D¸?d °ÐÍòaR @  ñ#E¸?d ðÐÍÇ5`Æ @  ñ$F¸?d 0ÑÍ}ì. @  ñ%G¸?d pÑÍI~¶( @  ñ&H¸?d °ÑÍi‹´Ö @  ñ'I¸?d ðÑÍWFÕ @  ñ(J¸?d 0ÒÍʱ @  ñ)K¸?d pÒÍ 5 @  ñ*L¸?d °ÒÍ,ä Ë @  ñ+M¸?d ðÒÍÒ _ @  ñ,N¸?d 0ÓÍÉš‡· @  ñ-O¸?d pÓÍòÉ¿] @  ñ.P¸?d °ÓÍÒ<½£ @  ñ/Q¸?d ðÓÍAP&@ @  ñ0R¸?d 0ÔÍXÕO @  ñ1S¸?d pÔÍž ln @  ñ2T¸?d °Ô;øn @  ñ3U¸?d ðÔÍ‹Îo @  ñ4V¸?d 0ÕÍ[†ãì @  ñ5W¸?d pÕÍ…¹ê @  ñ6X¸?d °ÕÍ%p» @  ñ7Y¸?d ðÕͽ @  ñ8Z¸?d 0Ö͆ù¾Ö @  ñ9[¸?d pÖÍ@ê÷ @  ñ:\¸?d °ÖÍ`  @  ñ;]¸?d ðÖÍU) @  ñ<^¸?d 0×Í…aˆu @  ñ=_¸?d p×Í#…‰C @  ñ>`¸?d °×Íp‹½ @  ñ?a¸?d ð×Í/1| @  ñ@b¸?d 0ØÍâ½a @  ñAc¸?d pØÍÝñ@ @  ñBd¸?d °ØÍý¾ @  ñCe¸?d ðØÍÈ2* @  ñDf¸?d 0ÙÍz‹Â @  ñEg¸?d pÙÍFyÑÄ @  ñFh¸?d °ÙÍfŒÓ: @  ñGi¸?d ðÙÍXAv9 @  ñHj¸?d 0ÚÍÅÖø @  ñIk¸?d pÚÍoÙ @  ñJl¸?d °ÚÍ#ãm' @  ñKm¸?d ðÚÍÕl³ @  ñLn¸?d 0ÛÍÆà[ @  ñMo¸?d pÛÍýÎØ± @  ñNp¸?d °ÛÍÝ;ÚO @  ñOq¸?d ðÛÍNWA¬ @  ñPr¸?d 0ÜÍW²£ @  ñQs¸?d pÜÍ‘ ‚ @  ñRt¸?d °Üͱÿ | @  ñSu¸?d ðÜÍ„Éè @  ñTv¸?d 0ÝÍT„ @  ñUw¸?d pÝÍ ‚Þ @  ñVx¸?d °ÝÍ*wÜø @  ñWy¸?d ðÝͺyû @  ñXz¸?d 0Þ͉þÙ: @  ñY{¸?d pÞÍOí` @  ñZ|¸?d °ÞÍobå @  ñ[}¸?d ðÞÍZ.cq @  ñ\~¸?d 0ßÍŠfï™ @  ñ]¸?d pßÍÁ¯, @  ñ^€¸?d uÐàÍ/°ßÍáá­Ò @  ñ_¸?d ðßÍc‹ @  ñ`‚¸?d HàÍz/Ow @  ñaƒ¸?d ˆàÍXãv @  ñb„¸?d ÈàÍœÉô¨ @  ñc…¸?d áÍû&n  @  ñd†¸?d HáÍy·yÔ @  ñe‡¸?d ˆáÍ…Ð6ò @  ñfˆ¸?d ÈáÍA!, @  ñg‰¸?d âÍ&Y30 @  ñhЏ?d HâͤÈ$î @  ñi‹¸?d ˆâÍÀ¿ˆï @  ñjŒ¸?d ÈâÍB.Ÿ1 @  ñk¸?d ãÍ%Á“ @  ñlޏ?d HãͧPM @  ñm¸?d ˆãÍ>g?‡ @  ñn¸?d Èãͼö(Y @  ño‘¸?d äÍ´EWk @  ñp’¸?d HäÍ6Ô@µ @  ñq“¸?d ˆäÍR£ì´ @  ñr”¸?d ÈäÍÐ2ûj @  ñs•¸?d åÍ·ÝaÈ @  ñt–¸?d HåÍ5Lv @  ñu—¸?d ˆåÍÉ+90 @  ñv˜¸?d ÈåÍKº.î @  ñw™¸?d æÍj¢<ò @  ñxš¸?d HæÍè3+, @  ñy›¸?d ˆæÍŒD‡- @  ñzœ¸?d ÈæÍÕó @  ñ{¸?d çÍi: Q @  ñ|ž¸?d HçÍë« @  ñ}Ÿ¸?d ˆçÍï+ ™ @  ñ~ ¸?d ÈçÍmºG @  ñ¡¸?d èÍït @  ñ€¢¸?d HèÍ–~ª @  ñ£¸?d ˆèÍò ´« @  ñ‚¤¸?d ÈèÍp˜£u @  ñƒ¥¸?d éÍw9× @  ñ„¦¸?d HéÍ•æ.  @  ñ…§¸?d ˆéÍia/ @  ñ†¨¸?d ÈéÍëvñ @  ñ‡©¸?d êÍÊdí @  ñˆª¸?d HêÍH™s3 @  ñ‰«¸?d ˆêÍ,îß2 @  ñЬ¸?d ÈêÍ®Èì @  ñ‹­¸?d ëÍÉRN @  ñŒ®¸?d HëÍKE @  ñ¯¸?d ˆëÍÒ6hZ @  ñް¸?d ÈëÍP§„ @  ñ±¸?d ìÍX¶ @  ñ²¸?d HìÍÚ…h @  ñ‘³¸?d ˆì;ò»i @  ñ’´¸?d ÈìͰ @  ò ¹?d `μŽhn @  ò ¹?d  Îàð¾I @  ò ¹?d àÎba©— @  ò ¹?d Î Á·? @  ò¹?d `΋P á @  ò¹?d  ÎŒ4mz @  ò¹?d àÎ¥z¤ @  ò¹?d άë @  ò¹?d `Î.’ 5 @  ò¹?d  Î¼¸þ @  ò¹?d àΕ-¯  @  ò¹?d Îz‡âF @  ò¹?d `Îøõ˜ @  ò¹?d  ÎRÓã @  ò¹?d àÎÐB= @  ò¹?d Îräpr @  ò¹?d `Îðug¬ @  ò¹?d  Î1¼ˆW @  ò ¹?d àγ-Ÿ‰ @  ò!¹?d Îõ<þ3 @  ò"¹?d `Îw­éí @  ò#¹?d  ÎaÏÆ @  ò $¹?d àÎã^ @  ò!%¹?d ÎAøuW @  ò"&¹?d ` ÎÃib‰ @  ò#'¹?d   ÎúGÖB @  ò$(¹?d à ÎxÖÁœ @  ò%)¹?d Η|Œú @  ò&*¹?d ` Îí›$ @  ò'+¹?d   ο(h_ @  ò(,¹?d à Î=¹ @  ò)-¹?d ΟΠ@  ò*.¹?d ` ÎŽ  @  ò+/¹?d   ÎAðß7 @  ò,0¹?d à ÎÃaÈé @  ò-1¹?d ΨÁÖA @  ò.2¹?d ` Î*PÁŸ @  ò/3¹?d   Î-4  @  ò04¹?d à ί¥Ú @  ò15¹?d Î z• @  ò26¹?d ` Î’mK @  ò37¹?d   ζ¼Ù€ @  ò48¹?d à Î4-Î^ @  ò59¹?d ÎÛ‡ƒ8 @  ò6:¹?d `ÎY”æ @  ò7;¹?d  ÎóÓg @  ò8<¹?d àÎqBpC @  ò9=¹?d ÎÓä  @  ò:>¹?d `ÎQuÒ @  ò;?¹?d  Î`ìü8 @  ò<@¹?d àÎâ}ëæ @  ò=A¹?d Î.Mºó @  ò>B¹?d `άܭ- @  ò?C¹?d  Î¹A” @  ò@D¹?d àΖ(VJ @  òAE¹?d Î4Ž7 @  òBF¹?d `ζ Û @  òCG¹?d  Î1” @  òDH¹?d àÎ  ƒÎ @  òEI¹?d Îâ Ψ @  òFJ¹?d `Î`›Ùv @  òGK¹?d  ÎÊ^*  @  òHL¹?d àÎHÏ=Ó @  òIM¹?d Îêi\œ @  òJN¹?d `ÎhøKB @  òKO¹?d  Î4†e @  òLP¹?d àÎ¶Š» @  òMQ¹?d ÎÝ·” @  òNR¹?d `Î_&ƒÍ @  òOS¹?d  ÎXBNV @  òPT¹?d àÎÚÓYˆ @  òQU¹?d Îxu8Ç @  òRV¹?d `Îúä/ @  òSW¹?d  ÎÃÊ›Ò @  òTX¹?d àÎA[Œ  @  òUY¹?d ήñÁj @  òVZ¹?d `Î,`Ö´ @  òW[¹?d  Î†¥%Ï @  òX\¹?d àÎ42 @  òY]¹?d Φ’S^ @  òZ^¹?d `Î$D€ @  ò[_¹?d  ÎåÊ«{ @  ò\`¹?d àÎg[¼¥ @  ò]a¹?d Î!JÝ @  ò^b¹?d `ΣÛÊÁ @  ò_c¹?d  Îµ¹ ê @  ò`d¹?d àÎ7(74 @  òae¹?d ΕŽV{ @  òbf¹?d `ÎA¥ @  òcg¹?d  Î.1õn @  òdh¹?d àά â° @  òei¹?d ÎC ¯Ö @  òfj¹?d `ÎÁ›¸ @  ògk¹?d  Îk^Ks @  òhl¹?d àÎéÏ\­ @  òim¹?d ÎKi=â @  òjn¹?d `ÎÉø*< @  òko¹?d  Î•†ü @  òlp¹?d àÎëÅ @  òmq¹?d Î|·õm @  ònr¹?d `Îþ&â³ @  òos¹?d  ÎùB/( @  òpt¹?d àÎ{Ó8ö @  òqu¹?d ÎÙuY¹ @  òrv¹?d `Î[äNg @  òsw¹?d  ÎbÊú¬ @  òtx¹?d àÎà[ír @  òuy¹?d Îñ  @  òvz¹?d `Î`·Ê @  òw{¹?d  Î'¥D± @  òx|¹?d àÎ¥4So @  òy}¹?d Î’2  @  òz~¹?d `Î…%þ @  ò{¹?d  Î©\‹†uÐ Î @  ò|€¹?d àÎ+ÍœX @  ò}¹?d 8 Î((¯™ @  ò~‚¹?d x Ϊ¹¸G @  òƒ¹?d ¸ ÎñŠdÏ @  ò€„¹?d ø Îss @  ò…¹?d 8!Îѽ^ @  ò‚†¹?d x!ÎS,€ @  òƒ‡¹?d ¸!Îj±K @  ò„ˆ¹?d ø!Î蓦• @  ò…‰¹?d 8"Î9ëó @  ò†й?d x"Î…¨ü- @  ò‡‹¹?d ¸"Î/mV @  òˆŒ¹?d ø"έüˆ @  ò‰¹?d 8#ÎZyÇ @  òŠ޹?d x#ÎËn @  ò‹¹?d ¸#Îѵ¸> @  òŒ¹?d ø#ÎS$¯à @  ò‘¹?d 8$Î8„±H @  òŽ’¹?d x$κ¦– @  ò“¹?d ¸$νqk  @  ò”¹?d ø$Î?à|Ó @  ò‘•¹?d 8%ÎFœ @  ò’–¹?d x%Î× B @  ò“—¹?d ¸%Î&ù¾‰ @  ò”˜¹?d ø%Τh©W @  ò•™¹?d 8&ÎKÂä1 @  ò–š¹?d x&ÎÉSóï @  ò—›¹?d ¸&Îc–” @  ò˜œ¹?d ø&ÎáJ @  ò™¹?d 8'ÎC¡v @  òšž¹?d x'ÎÁ0aÛ @  ò›Ÿ¹?d ¸'ÎùŽ  @  òœ ¹?d ø'΂h™þ @  ò¡¹?d 8(ÎÄyøD @  òž¢¹?d x(ÎFèïš @  òŸ£¹?d ¸(ÎPб @  ò ¤¹?d ø(ÎÒo @  ò¡¥¹?d 8)Îp½s  @  ò¢¦¹?d x)Îò,dþ @  ò£§¹?d ¸)ÎËÐ5 @  ò¤¨¹?d ø)ÎI“Çë @  ò¥©¹?d 8*Φ9Š @  ò¦ª¹?d x*Î$¨S @  ò§«¹?d ¸*ÎŽmn( @  ò¨¬¹?d ø*Î üyö @  ò©­¹?d 8+ήZ¹ @  òª®¹?d x+Î,Ëg @  ò«¯¹?d ¸+ÎpµÙ@ @  ò¬°¹?d ø+Îò$Ξ @  ò­±¹?d 8,Ι„Ð6 @  ò®²¹?d x,ÎÇè @  ò¯³¹?d ¸,Îq s @  ò°´¹?d ø,Ξୠ@  ò±µ¹?d 8-ΰ @  òÒÖ¹?d x5ÎË¡)n @  òÓ×¹?d ¸5Îò¥ @  òÔع?d ø5ÎpŠ{ @  òÕÙ¹?d 86Ο´Ç @  òÖÚ¹?d x6Î%Ðà @  ò×Û¹?d ¸6ηà#¸ @  òØܹ?d ø6Î5q4f @  òÙݹ?d 87Η×U) @  òÚÞ¹?d x7ÎFB÷ @  òÛß¹?d ¸7ÎÔ­  @  òÜà¹?d ø7ÎVºÒ @  òÝá¹?d 88ÎÛh @  òÞâ¹?d x8Î’žÌ¶ @  òßã¹?d ¸8΄ü& @  òàä¹?d ø8Îm1C @  òáå¹?d 89ΤËP  @  òâæ¹?d€ x9ÎR™[t @  óç¹?d ¸9Ίö§– @  óè¹?d ø9Îg°H @  óé¹?d 8:Î"„à @  óê¹?d x:Π @  óë¹?d ¸:ÎÄb½ @  óì¹?d ø:ÎFóªÂ @  óí¹?d 8;Î*ç”÷ @  óî¹?d x;Ψvƒ) @  ó ï¹?d ¸;Î1A®ã @  ó ð¹?d ø;γй= @  ó ñ¹?d 8<Î9\x @  ó ò¹?d x<Ο¨K¦ @  ó ó¹?d ¸<Îûßç§ @  óô¹?d ø<ÎyNðy @  óõ¹?d 8=θûð¬ @  óö¹?d x=Î:jçr @  ó÷¹?d ¸=ÎÆ ¨T @  óø¹?d ø=ÎDœ¿Š @  óù¹?d 8>În  @  óú¹?d x>Îìîß @  óû¹?d ¸>Έ™²Þ @  óü¹?d ø>Î ¥ @  óý¹?d 8?Îf›5 @  óþ¹?d x?ÎäŒë @  óÿ¹?duÐ@Î7 ¸?ÎÀÞ¹W @  óº?d ø?ÎBO®‰ @  óº?d P@Î6Dÿ @  óº?d @α @  óº?d Ð@ÎТ¹  @  óº?d AÎê5È @  óº?d PA΂€‰› @  ó º?d A΢u‹e @  ó!º?d ÐAÎüvÑc @  ó"º?d BÎa2q¢ @  ó# º?d PBÎTp6 @  ó$ º?d BÎtñrÈ @  ó% º?d ÐBβâËé @  ó& º?d CÎbªG @  ó' º?d PCÎ\gâ @  ó(º?d CÎ|’àü @  ó)º?d ÐCÎGÁØ @  ó*º?d DÎ^+ @  ó+º?d PDÎk¹* @  ó,º?d DÎKL(s @  ó-º?d ÐDÎ_‘R @  ó.º?d EÎ]º @  ó/º?d PEÎÎ{†Y @  ó0º?d EÎ§ @  ó1º?d ÐEΰޡ @  ó2º?d FÎ-É~` @  ó3º?d PFÎÿô @  ó4º?d FÎ8 }  @  ó5º?d ÐFÎþÄ+ @  ó6º?d GÎ.QHà @  ó7º?d PGΜíÀ @  ó8º?d GÎ0iï> @  ó9º?d ÐGΖî @  ó: º?d H΢rb @  ó;!º?d PHΗDc @  ó<"º?d Hη±a @  ó=#º?d ÐHÎq¢Ø^ @  ó>$º?d IΡêT¶ @  ó?%º?d PI·îw @  ó@&º?d Iέrì‰ @  óA'º?d ÐIÎóq¶ @  óB(º?d JÎn5N @  óC)º?d PJÎ[Ú @  óD*º?d JÎ{ö$ @  óE+º?d ÐJÎ½å¬ @  óF,º?d KÎm­ í @  óG-º?d PKÎS`…î @  óH.º?d KÎs•‡ @  óI/º?d ÐKÎHÆ¿ú @  óJ0º?d LÎQˆLõ @  óK1º?d PLÎd¾Ma @  óL2º?d LÎDKOŸ @  óM3º?d ÐL΂Xö¾ @  óN4º?d MÎRzV @  óO5º?d PMÎÁ|áµ @  óP6º?d MÎá‰ãK @  óQ7º?d ÐMÎ¿Š¹M @  óR8º?d NÎ"ÎŒ @  óS9º?d PNÎø @  óT:º?d NÎ7 æ @  óU;º?d ÐNÎñ£Ç @  óV<º?d OÎ!V// @  óW=º?d POΛŠ, @  óX>º?d OÎ?nˆÒ @  óY?º?d ÐOÎiÚœõ @  óZ@º?d PÎ× G @  ó[Aº?d PPÎâ2!Ó @  ó\Bº?d PÎÂÇ#- @  ó]Cº?d ÐPÎÔš  @  ó^Dº?d QÎÔœä @  ó_Eº?d PQÎVöª· @  ó`Fº?d QÎv¨I @  óaGº?d ÐQÎ(òO @  óbHº?d RεDRŽ @  ócIº?d PR΀rS @  ódJº?d RΠ‡Qä @  óeKº?d ÐRÎf”èÅ @  ófLº?d SζÜd- @  ógMº?d PSΈÁ. @  óhNº?d SΨäÃÐ @  óiOº?d ÐSΓ·û: @  ójPº?d TΊù5 @  ókQº?d PTÎ¿Ï ¡ @  ólRº?d TΟ: _ @  ómSº?d ÐTÎY)²~ @  ónTº?d UΉa>– @  óoUº?d PUÎ ¥u @  ópVº?d UÎ:ø§‹ @  óqWº?d ÐUÎdûý @  órXº?d VÎù¿]L @  ósYº?d PVÎ̉\Ø @  ótZº?d VÎì|^& @  óu[º?d ÐVÎ*oç @  óv\º?d WÎú'kï @  ów]º?d PWÎÄêÎì @  óx^º?d WÎäÌ @  óy_º?d ÐWÎBûÍ$ @  óz`º?d XÎvA9 @  ó{aº?d PXÎC2@­ @  ó|bº?d XÎcÇBS @  ó}cº?d ÐXÎ¥Ôûr @  ó~dº?d YÎuœwš @  óeº?d PYκ§ýj @  ó€fº?d YΚRÿ” @  ógº?d ÐYÎÄQ¥’ @  ó‚hº?d ZÎYS @  óƒiº?d PZÎl#Ç @  ó„jº?d ZÎLÖ9 @  ó…kº?d ÐZΊſ @  ó†lº?d [ÎZ3ð @  ó‡mº?d P[Îd@–ó @  óˆnº?d [ÎDµ”  @  ó‰oº?d Ð[Îæ¬ç @  óŠpº?d \Îf¨_è @  ó‹qº?d P\ÎSž^| @  óŒrº?d \Îsk\‚ @  ósº?d Ð\εxå£ @  óŽtº?d ]Îe0iK @  óuº?d P]Îö\ò¨ @  óvº?d ]ÎÖ©ðV @  ó‘wº?d Ð]ΈªªP @  ó’xº?d ^Îî ‘ @  ó“yº?d P^Î Ø  @  ó”zº?d ^Î- û @  ó•{º?d Ð^ÎÆ>°Ú @  ó–|º?d _Îv<2 @  ó—}º?d P_Î(»™1 @  ó˜~º?d _ÎN›Ï @  óuÐ`Ιº?d Ð_ÎC<Ûz @  óš€º?d (`ÎýÄnâ @  ó›º?d h`ÎÈòov @  óœ‚º?d ¨`Îèmˆ @  óƒº?d è`Î.Ô© @  óž„º?d (aÎþ\XA @  óŸ…º?d haÎ|6ä @  ó †º?d ¨aÎ\Ãæì @  ó¡‡º?d èaÎÀ¼ê @  ó¢ˆº?d (bΟ„+ @  ó£‰º?d hbΪ²¿ @  ó¤Šº?d ¨bΊGA @  ó¥‹º?d èbÎLT¦` @  ó¦Œº?d (cΜ*ˆ @  ó§º?d hc΢ы @  ó¨Žº?d ¨c΂$u @  ó©º?d ècιwµŸ @  óªº?d (dΠ9F @  ó«‘º?d hdΕG @  ó¬’º?d ¨dεúEú @  ó­“º?d èdÎséüÛ @  ó®”º?d (eΣ¡p3 @  ó¯•º?d heÎ0ÍëÐ @  ó°–º?d ¨eÎ8é. @  ó±—º?d èeÎN;³( @  ó²˜º?d (fÎÓé @  ó³™º?d hfÎæI} @  ó´šº?d ¨fÎƼƒ @  óµ›º?d èfί©¢ @  ó¶œº?d (gÎÐç%J @  ó·º?d hgÎî*€I @  ó¸žº?d ¨gÎÎß‚· @  ó¹Ÿº?d ègÎh;ƒ @  óº º?d (hÎ\Äœ @  ó»¡º?d hhÎiò @  ó¼¢º?d ¨hÎI ö @  ó½£º?d èhÎµ× @  ó¾¤º?d (iÎ_\9? @  ó¿¥º?d hiÎs1ƒþ @  óÀ¦º?d ¨iÎSÄ @  óÁ§º?d èiÎ ÇÛ @  ó¨º?d (j΃{Ç @  óéº?d hjÎ¥µzS @  óĪº?d ¨jÎ…@x­ @  óÅ«º?d èjÎCSÁŒ @  óƬº?d (kΓMd @  óÇ­º?d hkέÖèg @  óÈ®º?d ¨kÎ#ê™ @  óɯº?d èkζpÒs @  óʰº?d (lί>!| @  ó˱º?d hlΚ è @  ó̲º?d ¨lκý" @  óͳº?d èlÎ|î›7 @  óδº?d (mά¦ß @  óϵº?d hmÎ?ÊŒ< @  óжº?d ¨mÎ?ŽÂ @  óÑ·º?d èmÎA<ÔÄ @  óÒ¸º?d (nÎÜxt @  óÓ¹º?d hnÎéNu‘ @  óÔºº?d ¨nÎÉ»wo @  óÕ»º?d ènΨÎN @  óÖ¼º?d (oÎßàB¦ @  ó×½º?d hoÎá-ç¥ @  óؾº?d ¨oÎÁØå[ @  óÙ¿º?d èoΗlñ| @  óÚÀº?d (pÎ)²MÎ @  óÛÁº?d hp΄LZ @  óܺ?d ¨pÎ @  óàƺ?d ¨qΈµÅÀ @  óáǺ?d èqÎÖ¶ŸÆ @  óâȺ?d€ (rÎͤ—¾ @  ôɺ?d hrÎÓÞ @  ôʺ?d ¨rÎ9&Üý @  ô˺?d èrÎ:|ž1 @  ô̺?d (sÎê4Ù @  ôͺ?d hsÎKè  @  ôκ?d ¨sÎ:¾ê^ @  ôϺ?d èsÎÏ_Î @  ôк?d (tÎÖ~Á @  ô Ѻ?d htÎ&n„¸ @  ô Òº?d ¨tΛ†F @  ô Óº?d ètÎÁÄŠ @  ô Ôº?d (uÎÕ‰Hb @  ô Õº?d huÎ%ö² @  ôÖº?d ¨uΰå @  ô׺?d èuÎ8‹y @  ôغ?d (vÎ¥W+¸ @  ôÙº?d hvÎU(ÑÁ @  ôÚº?d ¨vÎuÝÓ? @  ôÛº?d èvÎv‡‘ó @  ôܺ?d (wÎ¦Ï @  ôݺ?d hwÎV°çb @  ôÞº?d ¨wÎvEåœ @  ôߺ?d èwλР@  ôàº?d (xÎ*ì7Í @  ôáº?d hxÎÚ“Í´ @  ôâº?d ¨xÎúfÏJ @  ôãº?d èxÎù<† @  ôäº?d (yÎ)tn @  ôåº?d hyÎÙ û @  ôæº?d ¨yÎùþùé @  ôçº?d èyÎÕèåÅ @  ô èº?d (zÎH¬E @  ô!éº?d hzθӿ} @  ô"êº?d ¨zΘ&½ƒ @  ô#ëº?d èzΛ|ÿO @  ô$ìº?d ({ÎK4s§ @  ô%íº?d h{λK‰Þ @  ô&îº?d ¨{Λ¾‹  @  ô'ïº?d è{În_ì° @  ô(ðº?d (|Îw¿ @  ô)ñº?d h|·nåÆ @  ô*òº?d ¨|Χ›ç8 @  ô+óº?d è|ΤÁ¥ô @  ô,ôº?d (}Ît‰) @  ô-õº?d h}΄öÓe @  ô.öº?d ¨}Τћ @  ô/÷º?d è}Ιê @  ô0øº?d (~ÎWJÆ @  ô1ùº?d h~Îô(°¿ @  ô2úº?d ¨~ÎÔݲA @  ô3ûº?d è~Îׇð @  ô4üº?d (ÎÏ|e @  ô5ýº?d hÎ÷°† @  ô6þº?d ¨ÎuЀÎ'×E„â @  ô7ÿº?d èÎPb½] @  ô8€»?d @€Î>Ü_) @  ô9€»?d €€Îlǰp @  ô:€»?d À€ÎîV§® @  ô;€»?d οÕ~T @  ô<€»?d @Î=DiŠ @  ô=€»?d €Îo_†Ó @  ô>€»?d ÀÎíΑ  @  ô?€»?d ‚Îp <¬ @  ô@€»?d @‚Îò›+r @  ôA€ »?d €‚Π€Ä+ @  ôB€ »?d À‚Î"Óõ @  ôC€ »?d ƒÎs’  @  ôD€ »?d @ƒÎñÑ @  ôE€ »?d €ƒÎ£òˆ @  ôF€»?d ÀƒÎ!‰åV @  ôG€»?d „ÎO·f @  ôH€»?d @„ÎÍ&qÉ @  ôI€»?d €„Ο=ž @  ôJ€»?d À„ά‰N @  ôK€»?d …ÎL/P´ @  ôL€»?d @…ÎξGj @  ôM€»?d €…Μ¥¨3 @  ôN€»?d À…Î4¿í @  ôO€»?d †Î<ñ3n @  ôP€»?d @†Î¾`$° @  ôQ€»?d €†Îì{Ëé @  ôR€»?d À†ÎnêÜ7 @  ôS€»?d ‡Î?iÍ @  ôT€»?d @‡Î½ø @  ôU€»?d €‡ÎïãýJ @  ôV€»?d À‡Îmrê” @  ôW€»?d ˆÎ³J/ @  ôX€ »?d @ˆÎ1Û8Å @  ôY€!»?d €ˆÎcÀל @  ôZ€"»?d ÀˆÎáQÀB @  ô[€#»?d ‰Î°Ò¸ @  ô\€$»?d @‰Î2Cf @  ô]€%»?d €‰Î`Xá? @  ô^€&»?d À‰ÎâÉöá @  ô_€'»?d ŠÎÑ ]Ò @  ô`€(»?d @ŠÎS›J  @  ôa€)»?d €ŠÎ€¥U @  ôb€*»?d ÀŠÎƒ²‹ @  ôc€+»?d ‹ÎÒ’kq @  ôd€,»?d @‹ÎP|¯ @  ôe€-»?d €‹Î“ö @  ôf€.»?d À‹Î€‰„( @  ôg€/»?d ŒÎî·i @  ôh€0»?d @ŒÎl&· @  ôi€1»?d €ŒÎ>=ÿî @  ôj€2»?d ÀŒÎ¼¬è0 @  ôk€3»?d Îí/1Ê @  ôl€4»?d @Îo¾& @  ôm€5»?d €Î=¥ÉM @  ôn€6»?d Àο4Þ“ @  ôo€7»?d ŽÎñR @  ôp€8»?d @ŽÎ`EÎ @  ôq€9»?d €ŽÎM{ª— @  ôr€:»?d ÀŽÎÏê½I @  ôs€;»?d Ξid³ @  ôt€<»?d @Îøsm @  ôu€=»?d €ÎNãœ4 @  ôv€>»?d ÀÎÌr‹ê @  ôw€?»?d Îh;kÛ @  ôx€@»?d @Îêª| @  ôy€A»?d €Î¸±“\ @  ôz€B»?d ÀÎ: „‚ @  ô{€C»?d ‘Îk£]x @  ô|€D»?d @‘Îé2J¦ @  ô}€E»?d €‘λ)¥ÿ @  ô~€F»?d À‘Î9¸²! @  ô€G»?d ’ÎG*/± @  ô€€H»?d @’ÎÅ»8o @  ô€I»?d €’Η ×6 @  ô‚€J»?d À’Î1Àè @  ôƒ€K»?d “ÎD² @  ô„€L»?d @“ÎÆ#Ì @  ô…€M»?d €“Δ8á• @  ô†€N»?d À“ΩöK @  ô‡€O»?d ”Îx—u  @  ôˆ€P»?d @”ÎúbÔ @  ô‰€Q»?d €”Ψ @  ôŠ€R»?d À”Î*ŒšS @  ô‹€S»?d •Î{C© @  ôŒ€T»?d @•ÎùžTw @  ô€U»?d €•Ϋ…». @  ôŽ€V»?d À•Î)¬ð @  ô€W»?d –Î Ñ s @  ô€X»?d @–Ή@7­ @  ô‘€Y»?d €–ÎÛ[Øô @  ô’€Z»?d À–ÎYÊÏ* @  ô“€[»?d —ÎIÐ @  ô”€\»?d @—ÎŠØ @  ô•€]»?d €—ÎØÃîW @  ô–€^»?d À—ÎZRù‰ @  ô—€_»?d ˜Î„j< @  ô˜€`»?d @˜Îû+Ø @  ô™€a»?d €˜ÎTàÄ @  ôš€b»?d À˜ÎÖqÓ_ @  ô›€c»?d ™Î‡ò ¥ @  ôœ€d»?d @™Îc{ @  ô€e»?d €™ÎWxò" @  ôž€f»?d À™ÎÕéåü @  ôŸ€g»?d šÎæ*NÏ @  ô €h»?d @šÎd»Y @  ô¡€i»?d €šÎ6 ¶H @  ô¢€j»?d ÀšÎ´1¡– @  ô£€k»?d ›Îå²xl @  ô¤€l»?d @›Îg#o² @  ô¥€m»?d €›Î58€ë @  ô¦€n»?d À›Î·©—5 @  ô§€o»?d œÎÙ—t @  ô¨€p»?d @œÎ[ª @  ô©€q»?d €œÎ ìó @  ôª€r»?d ÀœÎ‹Œû- @  ô«€s»?d ÎÚ"× @  ô¬€t»?d @ÎXž5  @  ô­€u»?d €Î …ÚP @  ô®€v»?d ÀΈ͎ @  ô¯€w»?d žÎªÑA  @  ô°€x»?d @žÎ(@VÓ @  ô±€y»?d €žÎz[¹Š @  ô²€z»?d ÀžÎøÊ®T @  ô³€{»?d ŸÎ©Iw® @  ô´€|»?d @ŸÎ+Ø`p @  ôµ€}»?d €ŸÎyÃ) @  ô¶€~»uРÎ?d ÀŸÎûR˜÷ @  ô·€»?d  Îðˆ=ü @  ô¸€»?d X Îr*" @  ô¹»?d ˜ Î Å{ @  ôº‚»?d ؠ΢“Ò¥ @  ô»ƒ»?d ¡Îó _ @  ô¼„»?d X¡Îq @  ô½…»?d ˜¡Î#šóØ @  ô¾†»?d ءΡ ä @  ô¿‡»?d ¢Î<ÏI§ @  ôÀˆ»?d X¢Î¾^^y @  ôÁ‰»?d ˜¢ÎìE±  @  ôŠ»?d Ø¢ÎnÔ¦þ @  ôË»?d £Î?W @  ôÄŒ»?d X£Î½ÆhÚ @  ôÅ»?d ˜£Îï݇ƒ @  ôÆŽ»?d Ø£ÎmL] @  ôÇ»?d ¤Îr @  ôÈ»?d X¤Îã @  ôÉ‘»?d ˜¤ÎÓøë› @  ôÊ’»?d ؤÎQiüE @  ôË“»?d ¥Îê%¿ @  ôÌ”»?d X¥Î‚{2a @  ôÍ•»?d ˜¥ÎÐ`Ý8 @  ôΖ»?d Ø¥ÎRñÊæ @  ôÏ—»?d ¦Îp4Fe @  ôИ»?d X¦Îò¥Q» @  ôÑ™»?d ˜¦Î ¾¾â @  ôÒš»?d ئÎ"/©< @  ôÓ›»?d §Îs¬pÆ @  ôÔœ»?d X§Îñ=g @  ôÕ»?d ˜§Î£&ˆA @  ôÖž»?d اÎ!·ŸŸ @  ôן»?d ¨ÎÿZ @  ôØ »?d X¨Î}MÎ @  ôÙ¡»?d ˜¨Î/¢— @  ôÚ¢»?d بέ”µI @  ôÛ£»?d ©Îül³ @  ôܤ»?d X©Î~†{m @  ôÝ¥»?d ˜©Î,”4 @  ôÞ¦»?d ةή ƒê @  ôß§»?d ªÎÏ(Ù @  ô਻?d XªÎ^? @  ôá©»?d ˜ªÎMEÐ^ @  ô⪻?d€ تλÛ& @  õ«»?d «Î ÕJõ @  õ¬»?d X«Î‰D]+ @  õ­»?d ˜«ÎIŸ @  õ®»?d ثΜ‡^A @  õ¯»?d ¬Î< ‚z @  õ°»?d X¬Î¾š•¤ @  õ±»?d ˜¬Î"3%‡ @  õ²»?d جΠ¢2Y @  õ ³»?d ­Î4hN @  õ ´»?d X­Î¶ù @  õ µ»?d ˜­Î!«$ @  õ ¶»?d حΣ:ú @  õ ·»?d ®Îâìéã @  õ¸»?d X®Î`}þ= @  õ¹»?d ˜®ÎQupþ @  õº»?d Ø®ÎÓäg  @  õ»»?d ¯ÎG.E7 @  õ¼»?d X¯ÎÅ¿Ré @  õ½»?d ˜¯ÎRíF] @  õ¾»?d دÎÐ|Qƒ @  õ¿»?d °Îº‡îÈ @  õÀ»?d X°Î8ù @  õÁ»?d ˜°Î¤¿I5 @  õ»?d ذÎ&.^ë @  õû?d ±Î²ä|ü @  õÄ»?d X±Î0uk" @  õÅ»?d ˜±Î§'– @  õÆ»?d رÎ%¶hH @  õÇ»?d ²Îd`…Q @  õÈ»?d X²Îæñ’ @  õÉ»?d ˜²ÎÆÿ;ü @  õ Ê»?d زÎDn," @  õ!Ë»?d ³ÎФ5 @  õ"Ì»?d X³ÎR5ë @  õ#Í»?d ˜³ÎÅg _ @  õ$λ?d سÎGö @  õ%Ï»?d ´Îçzƺ @  õ&л?d X´ÎeëÑd @  õ'Ñ»?d ˜´ÎùBaG @  õ(Ò»?d Ø´Î{Óv™ @  õ)Ó»?d µÎïTŽ @  õ*Ô»?d XµÎmˆCP @  õ+Õ»?d ˜µÎúÚWä @  õ,Ö»?d صÎxK@: @  õ-×»?d ¶Î9­# @  õ.Ø»?d X¶Î» ºý @  õ/Ù»?d ˜¶ÎŠ4> @  õ0Ú»?d ضΕ#à @  õ1Û»?d ·Îœ_÷ @  õ2Ü»?d X·ÎÎ) @  õ3Ý»?d ˜·Î‰œ @  õ4Þ»?d Ø·Î C @  õ5ß»?d ¸Î‡¶ @  õ6à»?d X¸Î™˜h @  õ7á»?d ˜¸Î¿(K @  õ8â»?d ظ·.?• @  õ9ã»?d ¹Îä‚ @  õ:ä»?d X¹Î‘u \ @  õ;å»?d ˜¹Î'è @  õ<æ»?d ع΄¶ 6 @  õ=ç»?d ºÎÅ`ä/ @  õ>è»?d XºÎGñóñ @  õ?é»?d ˜ºÎÉø\ @  õ@ê»?d غÎKiKÎ @  õAë»?d »ÎߣiÙ @  õBì»?d X»Î]2~ @  õCí»?d ˜»ÎÊ`j³ @  õDî»?d Ø»ÎHñ}m @  õEï»?d ¼Îè}¡V @  õFð»?d X¼Îj춈 @  õGñ»?d ˜¼ÎöE« @  õHò»?d ؼÎtÔu @  õIó»?d ½Îà3b @  õJô»?d X½Îb$¼ @  õKõ»?d ˜½ÎõÝ0 @  õLö»?d ؽÎwL'Ö @  õM÷»?d ¾Î6šÊÏ @  õNø»?d X¾Î´ Ý @  õOù»?d ˜¾Î…SÒ @  õPú»?d ؾÎ’D  @  õQû»?d ¿Î“Xf @  õRü»?d X¿ÎÉqÅ @  õSý»?d ˜¿Î†›eq @uÐÀÎ  õTþ»?d ؿΠr¯ @  õUÿ»?d 0ÀÎêw  @  õV¼?d pÀÎhæ Ò @  õW¼?d °ÀÎôO¹ñ @  õX¼?d ðÀÎvÞ®/ @  õY¼?d 0ÁÎâŒ8 @  õZ¼?d pÁÎèš @  õ[€¼?d °ÁΊWü. @  õ\€¼?d ðÁÎÆëð @  õ]€¼?d 0ÂÎIé @  õ^€¼?d pÂÎË7 @  õ_€ ¼?d °ÂÎë¸D @  õ`€ ¼?d ðÂÎi¯š @  õa€ ¼?d 0ÃÎýÔ @  õb€ ¼?d pÃÎEšS @  õc€ ¼?d °ÃÎèŽç @  õd€¼?d ðÃÎj†™9 @  õe€¼?d 0ÄÎÊ E @  õf€¼?d pÄÎH›RÜ @  õg€¼?d °ÄÎÔ2âÿ @  õh€¼?d ðÄÎV£õ! @  õi€¼?d 0ÅÎÂi×6 @  õj€¼?d pÅÎ@øÀè @  õk€¼?d °ÅÎתÔ\ @  õl€¼?d ðÅÎU; @  õm€¼?d 0ÆÎí.› @  õn€¼?d pÆÎ–|9E @  õo€¼?d °ÆÎ§t·† @  õp€¼?d ðÆÎ%å X @  õq€¼?d 0Çα/‚O @  õr€¼?d pÇÎ3¾•‘ @  õs€¼?d °ÇΤì% @  õt€¼?d ðÇÎ&}–û @  õu€¼?d 0ÈÎ6÷  @  õv€ ¼?d pÈδfÐ @  õw€!¼?d °ÈÎ(Ï«ó @  õx€"¼?d ðÈΪ^¼- @  õy€#¼?d 0ÉÎ>”ž: @  õz€$¼?d pÉμ‰ä @  õ{€%¼?d °ÉÎ+WP @  õ|€&¼?d ðÉÎ©ÆŠŽ @  õ}€'¼?d 0ÊÎèg— @  õ~€(¼?d pÊÎjpI @  õ€)¼?d °ÊÎÞï™ @  õ€€*¼?d ðÊÎ…OøG @  õ€+¼?d 0ËÎ…ÚP @  õ‚€,¼?d pËΓ͎ @  õƒ€-¼?d °ËÎFÙ: @  õ„€.¼?d ðËΆ×Îä @  õ…€/¼?d 0ÌÎ&[ß @  õ†€0¼?d pÌÎ¤Ê @  õ‡€1¼?d °ÌÎ8cµ" @  õˆ€2¼?d ðÌκò¢ü @  õ‰€3¼?d 0ÍÎ.8€ë @  õŠ€4¼?d pÍά©—5 @  õ‹€5¼?d °ÍÎ;ûƒ @  õŒ€6¼?d ðÍιj”_ @  õ€7¼?d 0ÎÎø¼yF @  õŽ€8¼?d pÎÎz-n˜ @  õ€9¼?d °ÎÎK%à[ @  õ€:¼?d ðÎÎÉ´÷… @  õ‘€;¼?d 0ÏÎ]~Õ’ @  õ’€<¼?d pÏÎßïÂL @  õ“€=¼?d °ÏÎH½Öø @  õ”€>¼?d ðÏÎÊ,Á& @  õ•€?¼?d 0ÐΠ×~m @  õ–€@¼?d pÐÎ"Fi³ @  õ—€A¼?d °ÐξïÙ @  õ˜€B¼?d ðÐÎ<~ÎN @  õ™€C¼?d 0ÑΨ´ìY @  õš€D¼?d pÑÎ*%û‡ @  õ›€E¼?d °Ñνwï3 @  õœ€F¼?d ðÑÎ?æøí @  õ€G¼?d 0ÒÎ~0ô @  õž€H¼?d pÒÎü¡* @  õŸ€I¼?d °ÒÎܯ«Y @  õ €J¼?d ðÒÎ^>¼‡ @  õ¡€K¼?d 0ÓÎÊôž @  õ¢€L¼?d pÓÎHe‰N @  õ£€M¼?d °ÓÎß7ú @  õ¤€N¼?d ðÓÎ]¦Š$ @  õ¥€O¼?d 0ÔÎý*V @  õ¦€P¼?d pÔλAÁ @  õ§€Q¼?d °ÔÎãñâ @  õ¨€R¼?d ðÔÎaƒæ< @  õ©€S¼?d 0ÕÎõIÄ+ @  õª€T¼?d pÕÎwØÓõ @  õ«€U¼?d °ÕÎàŠÇA @  õ¬€V¼?d ðÕÎbП @  õ­€W¼?d 0ÖÎ#Í=† @  õ®€X¼?d pÖΡ\*X @  õ¯€Y¼?d °ÖÎT¤› @  õ°€Z¼?d ðÖÎųE @  õ±€[¼?d 0×Ά‘R @  õ²€\¼?d p×Ξ†Œ @  õ³€]¼?d °×Γ̒8 @  õ´€^¼?d ð×Î]…æ @  õµ€_¼?d 0ØÎ× @  õ¶€`¼?d pØÎƒFÍ @  õ·€a¼?d °ØÎï¸î @  õ¸€b¼?d ðØÎ~¯0 @  õ¹€c¼?d 0ÙÎ ´' @  õº€d¼?d pÙ΋%šù @  õ»€e¼?d °ÙÎwŽM @  õ¼€f¼?d ðÙΞ晓 @  õ½€g¼?d 0ÚÎß0tŠ @  õ¾€h¼?d pÚÎ]¡cT @  õ¿€i¼?d °ÚÎӨ̵ @  õÀ€j¼?d ðÚÎQ9Ûk @  õÁ€k¼?d 0ÛÎÅóù| @  õ€l¼?d pÛÎGbî¢ @  õÀm¼?d °ÛÎÐ0ú @  õÄ€n¼?d ðÛÎR¡íÈ @  õÅ€o¼?d 0ÜÎò-1ó @  õÆ€p¼?d pÜÎp¼&- @  õÇ€q¼?d °ÜÎì– @  õÈ€r¼?d ðÜÎn„Ð @  õÉ€s¼?d 0ÝÎúN£Ç @  õÊ€t¼?d pÝÎxß´ @  õË€u¼?d °ÝÎï ­ @  õÌ€v¼?d ðÝÎm·s @  õÍ€w¼?d 0ÞÎ,ÊZj @  õ΀x¼?d pÞή[M´ @  õÏ€y¼?d °ÞΟSÃw @  õЀz¼?d ðÞÎÂÔ© @  õÑ€{¼?d 0ßΉö¾ @  õÒ€|¼?d pßÎ ™á` @  õÓ€}¼?d uÐàÎ/°ßΜËõÔ @  õÔ€~¼?d ðßÎZâ  @  õÕ€¼?d HàÎÎë— @  õÖ€€¼?d ˆàÎîèéi @  õ×€¼?d ÈàÎÐ%Lj @  õØ€‚¼?d áÎmÀ‚ @  õÙ€ƒ¼?d HáÎÆ~y£ @  õÚ€„¼?d ˆáÎæ‹{] @  õÛ€…¼?d ÈáÎÓ½zÉ @  õÜ€†¼?d âÎNùÚ @  õÝ€‡¼?d HâÎú€ @  õÞ€ˆ¼?d ˆâÎ0‚ð @  õ߀‰¼?d Èâβe>£ @  õà€м?d ãÎb-²K @  õဋ¼?d HãΤ> j @  õ‌¼?d€ ˆãÎEŒþ” @  ö€¼?d ÈãΑû·) @  ö€޼?d äΈµD& @  ö€¼?d HäÎv¯‡! @  ö€¼?d ˆäÎVZ…ß @  ö€‘¼?d ÈäΦ%¦ @  ö€’¼?d åÎvmóN @  ö€“¼?d HåÎ~Ì @  ö€”¼?d ˆåÎ^9ë @  ö €•¼?d ÈåήFí’ @  ö €–¼?d æÎ3MS @  ö €—¼?d HæÎ¨Hì¸ @  ö €˜¼?d ˆæÎˆ½îF @  ö €™¼?d ÈæÎxÂ? @  ö€š¼?d çÎ¨Š˜× @  ö€›¼?d HçÎ Š@l @  ö€œ¼?d ˆçÎ-B’ @  ö€¼?d ÈçÎݸë @  ö€ž¼?d èÎéÿ4ö @  ö€Ÿ¼?d HèΊRÎ- @  ö€ ¼?d ˆèΪ§ÌÓ @  ö€¡¼?d ÈèÎZØ6ª @  ö€¢¼?d éΊºB @  ö€£¼?d Hé΂1\ @  ö€¤¼?d ˆé΢Ä^ç @  ö€¥¼?d ÈéÎR»¤ž @  ö€¦¼?d êÎÏÿ_ @  ö€§¼?d HêÎTµ¥´ @  ö€¨¼?d ˆêÎt@§J @  ö€©¼?d Èê΄?]3 @  ö€ª¼?d ëÎTwÑÛ @  ö€«¼?d HëÎàq.Ð @  ö €¬¼?d ˆëÎÀ„,. @  ö!€­¼?d ÈëÎ0ûÖW @  ö"€®¼?d ìÎ)µ%X @  ö#€¯¼?d HìÎׯæ_ @  ö$€°¼?d ˆìÎ÷Zä¡ @  ö%€±¼?d ÈìÎ%Ø @  ö&€²¼?d íÎ×m’0 @  ö'€³¼?d HíÎßÌtk @  ö(€´¼?d ˆíÎÿ9v• @  ö)€µ¼?d ÈíÎFŒì @  ö*€¶¼?d îÎ’,- @  ö+€·¼?d HîÎ HÆ @  ö,€¸¼?d ˆîÎ)½8 @  ö-€¹¼?d ÈîÎÙÂuA @  ö.€º¼?d ïÎ Šù© @  ö/€»¼?d HïάŠ! @  ö0€¼¼?d ˆïÎŒ#ì @  ö1€½¼?d ÈïÎ|Ù• @  ö2€¾¼?d ðÎÂÞe' @  ö3€¿¼?d HðÎQ#Ší @  ö4€À¼?d ˆðÎqÖˆ @  ö5€Á¼?d ÈðΩrj @  ö6€¼?d ñÎQáþ‚ @  ö7€ü?d HñÎY@Ù @  ö8€ļ?d ˆñÎyµ' @  ö9€ż?d ÈñΉÊà^ @  ö:€Ƽ?d òÎŽ@Ÿ @  ö;€Ǽ?d HòÎÄát @  ö<€ȼ?d ˆòί1㊠@  ö=€ɼ?d ÈòÎ_Nó @  ö>€ʼ?d óΕ @  ö?€˼?d HóΕl‚ @  ö@€̼?d ˆóεòn| @  öA€ͼ?d ÈóÎE” @  öB€μ?d ôÎ\Ãg  @  öC€ϼ?d Hô΢٤  @  öD€м?d ˆô΂,¦ó @  öE€Ѽ?d ÈôÎrS\Š @  öF€Ò¼?d õ΢Ðb @  öG€Ó¼?d HõΪº69 @  öH€Ô¼?d ˆõΊO4Ç @  öI€Õ¼?d ÈõÎz0ξ @  öJ€Ö¼?d öÎçtn @  öK€×¼?d HöÎ|>Ï” @  öL€ؼ?d ˆöÎ\ËÍj @  öM€Ù¼?d Èöά´7 @  öN€Ú¼?d ÷Î|ü»û @  öO€Û¼?d H÷ÎÙüc@ @  öP€ܼ?d ˆ÷Îù a¾ @  öQ€ݼ?d È÷Î v›Ç @  öR€Þ¼?d øÎ=‰Ú @  öS€ß¼?d HøÎ^$í @  öT€à¼?d ˆøÎ~Ñïÿ @  öU€á¼?d ÈøÎŽ®† @  öV€â¼?d ùÎ^æ™n @  öW€ã¼?d HùÎVG5 @  öX€ä¼?d ˆùÎv²}Ë @  öY€å¼?d ÈùΆ͇² @  öZ€æ¼?d úΉ's @  ö[€ç¼?d Hú΀Ƙ @  ö\€è¼?d ˆúΠ6„f @  ö]€é¼?d ÈúÎPI~ @  ö^€ê¼?d û΀ò÷ @  ö_€ë¼?d HûÎ4 ü @  ö`€ì¼?d ˆûÎò @  öa€í¼?d ÈûÎäõ{ @  öb€î¼?d üÎýÃt @  öc€ï¼?d HüÎÙÅs @  öd€ð¼?d ˆüÎ#,Ç @  öe€ñ¼?d ÈüÎÓS=ô @  öf€ò¼?d ýα @  ög€ó¼?d HýÎ ºWG @  öh€ô¼?d ˆýÎ+OU¹ @  öi€õ¼?d ÈýÎÛ0¯À @  öj€ö¼?d þÎFt @  ök€÷¼?d HþÎÝ>®ê @  öl€ø¼?d ˆþÎýˬ @  öm€ù¼?d ÈþÎ ´Vm @  ön€ú¼?d ÿÎÝüÚ… @  öo€û¼?d HÿÎxü> @  öp€ü¼?d ˆÿÎX À @  öq€uÐÏý¼?d ÈÿÎÕö‰Å @  örþ¼?d ÏšB¡4 @  ösÿ¼?d `ÏkO` @  öt½?d  ÏKëMž @  öu½?d àÏ»”·ç @  öv½?d ÏkÜ; @  öw½?d `Ïc}ÝT @  öx½?d  ÏCˆßª @  öy½?d àϳ÷%Ó @  öz½?d Ï.³… @  ö{½?d `ϵù$ù @  ö|½?d  Ï• & @  ö} ½?d àÏesÜ~ @  ö~ ½?d ϵ;P– @  ö ½?d `ÏLl™> @  ö€ ½?d  Ïl™›À @  ö ½?d àÏœæa¹ @  ö‚½?d Ï…¨’¶ @  öƒ½?d `Ï{²Q± @  ö„½?d  Ï[GSO @  ö…½?d àÏ«8©6 @  ö†½?d Ï{p%Þ @  ö‡½?d `ÏsÑÃ… @  öˆ½?d  ÏS$Á{ @  ö‰½?d àÏ£[; @  öн?d Ï>›Ã @  ö‹½?d `Ï¥U:( @  öŒ½?d  Ï… 8Ö @  ö½?d àÏu߯ @  ö޽?d Ï¥—NG @  ö½?d `Ï—–ü @  ö½?d  Ï b” @  ö‘½?d àÏÐn{ @  ö’½?d Ïäââf @  ö“½?d `χO½ @  ö” ½?d  Ï§ºC @  ö•!½?d àÏWÅà: @  ö–"½?d χlÒ @  ö—#½?d ` Ï,Љ @  ö˜$½?d   ϯوw @  ö™%½?d à Ï_¦r @  öš&½?d ÏÂâÒÏ @  ö›'½?d ` ÏY¨s$ @  öœ(½?d   Ïy]qÚ @  ö)½?d à ω"‹£ @  öž*½?d ÏYjK @  öŸ+½?d ` Ïílø@ @  ö ,½?d   ÏÍ™ú¾ @  ö¡-½?d à Ï=æÇ @  ö¢.½?d Ï$¨óÈ @  ö£/½?d ` ÏÚ²0Ï @  ö¤0½?d   ÏúG21 @  ö¥1½?d à Ï 8ÈH @  ö¦2½?d ÏÚpD  @  ö§3½?d ` ÏÒÑ¢û @  ö¨4½?d   Ïò$  @  ö©5½?d à Ï[Z| @  öª6½?d ÏŸú½ @  ö«7½?d `ÏU[V @  ö¬8½?d  Ï$ Y¨ @  ö­9½?d àÏÔߣÑ @  ö®:½?d Ï—/9 @  ö¯;½?d `Ï¡—÷‚ @  ö°<½?d  Ïbõ| @  ö±=½?d àÏq @  ö²>½?d ÏÏó· @  ö³?½?d `Ï\>\} @  ö´@½?d  Ï|Ë^ƒ @  öµA½?d àÏŒ´¤ú @  ö¶B½?d Ï\ü( @  ö·C½?d `ÏT]ÎI @  ö¸D½?d  Ït¨Ì· @  ö¹E½?d àÏ„×6Î @  öºF½?d Ï“– @  ö»G½?d `Ï‚Ù7ä @  ö¼H½?d  Ï¢,5 @  ö½I½?d àÏRSÏc @  ö¾J½?d Ï‚C‹ @  ö¿K½?d `Ϙº @  öÀL½?d  Ï¸ï¸ì @  öÁM½?d àÏHB• @  öÂN½?d ÏQÞ±š @  öÃO½?d `ϯÄr @  öÄP½?d  Ï1pc @  öÅQ½?d àÏNŠ @  öÆR½?d ϯò @  öÇS½?d `ϧ§à© @  öÈT½?d  Ï‡RâW @  öÉU½?d àÏw-. @  öÊV½?d Ïêi¸ï @  öËW½?d `Ïq# @  öÌX½?d  ÏQÖú @  öÍY½?d àÏ¡©áƒ @  öÎZ½?d Ïqámk @  öÏ[½?d `ÏÔáµÐ @  öÐ\½?d  Ïô·. @  öÑ]½?d àÏkMW @  öÒ^½?d Ï0”ÁJ @  öÓ_½?d `ÏS9;‘ @  öÔ`½?d  ÏsÌ9o @  öÕa½?d àσ³Ã @  öÖb½?d ÏSûOþ @  ö×c½?d `Ï[Z©¥ @  öØd½?d  Ï{¯«[ @  öÙe½?d àÏ‹ÐQ" @  öÚf½?d Ï”ñã @  öÛg½?d `ÏÞP @  öÜh½?d  Ï­+Rö @  öÝi½?d àÏ]T¨ @  öÞj½?d Ï$g @  ößk½?d `Ï9Ûl @  öàl½?d  ÏïÙ’ @  öám½?d àÏé#ë @  öân½?d€ Ï„ÌB @  ÷o½?d `Ï›FGl @  ÷p½?d  Ï»³E’ @  ÷q½?d àÏŽ…D @  ÷r½?d Ï^ÍÈî @  ÷s½?d `ϘÞqÏ @  ÷t½?d  Ï¸+s1 @  ÷u½?d àφæÖ2 @  ÷v½?d Ï¢vó @  ÷ w½?d `ÏE¡,õ @  ÷ x½?d  ÏeT.  @  ÷ y½?d àÏPb/Ÿ @  ÷ z½?d Ï€*£w @  ÷ {½?d `ÏF9V @  ÷|½?d  Ïf̨uÐ Ï @  ÷}½?d àψ ð7 @  ÷€~½?d 8 Ïù+.Q @  ÷€½?d x ϲYnä @  ÷€€½?d ¸ Ï’¬l @  ÷€½?d ø ϧšmŽ @  ÷€‚½?d 8!ÏwÒáf @  ÷€ƒ½?d x!ϱÁXG @  ÷€„½?d ¸!Ï‘4Z¹ @  ÷€…½?d ø!ϯùÿº @  ÷€†½?d 8"Ï2½_{ @  ÷€‡½?d x"Ïl¾} @  ÷€ˆ½?d ¸"ÏLKƒ @  ÷€‰½?d ø"Ïy} @  ÷€н?d 8#Ï©5Šÿ @  ÷€‹½?d x#Ïo&3Þ @  ÷€Œ½?d ¸#ÏOÓ1  @  ÷€½?d ø#Ï͹s @  ÷ €޽?d 8$ÏÔ÷~| @  ÷!€½?d x$Ïï¤F– @  ÷"€½?d ¸$ÏÏQDh @  ÷#€‘½?d ø$ÏúgEü @  ÷$€’½?d 8%Ï*/É @  ÷%€“½?d x%Ïì @  ÷9€§½?d x*Ï;d @  ÷:€¨½?d ¸*ÏíKfý @  ÷;€©½?d ø*ÏØ}gi @  ÷<€ª½?d 8+Ï5ë @  ÷=€«½?d x+ÏÎ&R  @  ÷>€¬½?d ¸+ÏîÓP^ @  ÷?€­½?d ø+Ï¾êŸ @  ÷@€®½?d 8,ÏÛð @  ÷A€¯½?d x,Ïà£!z @  ÷B€°½?d ¸,ÏÀV#„ @  ÷C€±½?d ø,Ïõ`" @  ÷D€²½?d 8-Ï%(®ø @  ÷E€³½?d x-Ïã;Ù @  ÷F€´½?d ¸-ÏÃÎ' @  ÷G€µ½?d ø-Ïý°$ @  ÷H€¶½?d 8.Ï`Gå @  ÷I€·½?d x.Ï>DJã @  ÷J€¸½?d ¸.ϱH @  ÷K€¹½?d ø.Ï+‡I‰ @  ÷L€º½?d 8/ÏûÏÅa @  ÷M€»½?d x/Ï=Ü|@ @  ÷N€¼½?d ¸/Ï)~¾ @  ÷O€½½?d ø/ÏŽEå] @  ÷P€¾½?d 80Ï0›Yï @  ÷Q€¿½?d x0Ïf/MÈ @  ÷R€À½?d ¸0ÏFÚO6 @  ÷S€Á½?d ø0ÏsìN¢ @  ÷T€½?d 81Ï£¤ÂJ @  ÷U€ý?d x1Ïe·{k @  ÷V€Ľ?d ¸1ÏEBy• @  ÷W€Ž?d ø1Ï{Ü– @  ÷X€ƽ?d 82ÏæË|W @  ÷Y€ǽ?d x2ϸÈ&Q @  ÷Z€Ƚ?d ¸2Ϙ=$¯ @  ÷[€ɽ?d ø2Ï­ %; @  ÷\€ʽ?d 83Ï}C©Ó @  ÷]€˽?d x3Ï»Pò @  ÷^€̽?d ¸3Ï›¥  @  ÷_€ͽ?d ø3ÏÏ®_ @  ÷`€ν?d 84Ï]P @  ÷a€Ͻ?d x4Ï;Òeº @  ÷b€н?d ¸4Ï'gD @  ÷c€ѽ?d ø4Ï.fÐ @  ÷d€Ò½?d 85ÏþYê8 @  ÷e€Ó½?d x5Ï8JS @  ÷f€Ô½?d ¸5Ï¿Qç @  ÷g€Õ½?d ø5Ï&rôä @  ÷h€Ö½?d 86Ï»6T% @  ÷i€×½?d x6Ïå5# @  ÷j€ؽ?d ¸6ÏÅÀ Ý @  ÷k€Ù½?d ø6Ïðö I @  ÷l€Ú½?d 87Ï ¾¡ @  ÷m€Û½?d x7Ïæ­8€ @  ÷n€ܽ?d ¸7ÏÆX:~ @  ÷o€ݽ?d ø7ÏU4¡ @  ÷p€Þ½?d 88ÏaË-€ @  ÷q€ß½?d x8ÏÇ/,¶ @  ÷r€à½?d ¸8ÏçÚ.H @  ÷s€á½?d ø8ÏÒì/Ü @  ÷t€â½?d 89Ϥ£4 @  ÷u€ã½?d x9ÏÄ· @  ÷v€ä½?d ¸9ÏäBë @  ÷w€å½?d ø9ÏÚ½è @  ÷x€æ½?d 8:ÏGË) @  ÷y€ç½?d x:ÏÈG/ @  ÷z€è½?d ¸:Ï9=EÑ @  ÷{€é½?d ø:Ï DE @  ÷|€ê½?d 8;ÏÜCÈ­ @  ÷}€ë½?d x;ÏPqŒ @  ÷~€ì½?d ¸;Ï:¥sr @  ÷€í½?d ø;Ïõžù‚ @  ÷€€î½?d 8<ÏìÐ  @  ÷€ï½?d x<Ï׃2g @  ÷‚€ð½?d ¸<Ï÷v0™ @  ÷ƒ€ñ½?d ø<ÏÂ@1  @  ÷„€ò½?d 8=Ͻå @  ÷…€ó½?d x=ÏÔÄ @  ÷†€ô½?d ¸=Ïôî: @  ÷‡€õ½?d ø=ÏÊ#£9 @  ÷ˆ€ö½?d 8>ÏWgø @  ÷‰€÷½?d x>Ï dYþ @  ÷Š€ø½?d ¸>Ï)‘[ @  ÷‹€ù½?d ø>ϧZ” @  ÷Œ€ú½?d 8?ÏÌïÖ| @  ÷€û½?d x?Ï üo] @  ÷Ž€ü½?duÐ@Ï7 ¸?Ï* m£ @  ÷€ý½?d ø?ÏÄå…< @  ÷þ½?d P@ÏI? @  ÷‘ÿ½?d @Ï# ¼ @  ÷’¾?d Ð@Ï¡‹b @  ÷“¾?d AÏÆd‡À @  ÷”¾?d PAÏDõ @  ÷•¾?d AÏ ‚< @  ÷–¾?d ÐAÏ¢+Á @  ÷—¾?d Bσ 9Ý @  ÷˜¾?d PBÏš. @  ÷™¾?d BÏýýa% @  ÷š¾?d ÐBÏlvû @  ÷› ¾?d CσìY @  ÷œ ¾?d PCÏšû‡ @  ÷ ¾?d CÏþeW† @  ÷ž ¾?d ÐCÏ|ô@X @  ÷Ÿ ¾?d DÏeAÚ @  ÷ ¾?d PDÏçÐ @  ÷¡¾?d DÏ~ç"Î @  ÷¢¾?d ÐDÏüv5 @  ÷£¾?d EÏ›™¯² @  ÷¤¾?d PEϸl @  ÷¥¾?d EÏ}m @  ÷¦¾?d ÐEÏÿî³ @  ÷§¾?d FÏÞö¯ @  ÷¨¾?d PFÏ\gq @  ÷©¾?d FÏ IW @  ÷ª¾?d ÐFÏ"‘^‰ @  ÷«¾?d GÏE~Ä+ @  ÷¬¾?d PGÏÇïÓõ @  ÷­¾?d GÏ£˜ô @  ÷®¾?d ÐGÏ! h* @  ÷¯¾?d HÏ h  @  ÷°¾?d PHφšÔ @  ÷±¾?d HÏ‚k @  ÷² ¾?d ÐHÏ‹| @  ÷³!¾?d IÏgdæ¾ @  ÷´"¾?d PIÏåõñ` @  ÷µ#¾?d IÏ‚]a @  ÷¶$¾?d ÐIÏJ¿ @  ÷·%¾?d JÏ" X£ @  ÷¸&¾?d PJÏ šO} @  ÷¹'¾?d JÏ\ý[ @  ÷º(¾?d ÐJÏÞl… @  ÷»)¾?d KϹƒ' @  ÷¼*¾?d PKÏ;šù @  ÷½+¾?d KÏ_e6ø @  ÷¾,¾?d ÐKÏÝô!& @  ÷¿-¾?d LÏjF6 @  ÷À.¾?d PLÏè×hè @  ÷Á/¾?d LÏqàE" @  ÷Â0¾?d ÐLÏóqRü @  ÷Ã1¾?d MÏ”žÈ^ @  ÷Ä2¾?d PMÏ߀ @  ÷Å3¾?d MÏrxs @  ÷Æ4¾?d ÐMÏðéd_ @  ÷Ç5¾?d NÏÑñvC @  ÷È6¾?d PNÏS`a @  ÷É7¾?d Nϯ.» @  ÷Ê8¾?d ÐNÏ-–9e @  ÷Ë9¾?d OÏJy£Ç @  ÷Ì:¾?d POÏÈè´ @  ÷Í;¾?d OϬŸ @  ÷Î<¾?d ÐOÏ.Æ @  ÷Ï=¾?d PÏ-?I @  ÷Ð>¾?d PPϼ(— @  ÷Ñ?¾?d PÏ÷l) @  ÷Ò@¾?d ÐPÏuý>N @  ÷ÓA¾?d QϤì @  ÷ÔB¾?d PQσ³2 @  ÷ÕC¾?d QÏôô3 @  ÷ÖD¾?d ÐQÏveí @  ÷×E¾?d RÏW}ñ @  ÷ØF¾?d PRÏÕì / @  ÷ÙG¾?d RÏ)‹B  @  ÷ÚH¾?d ÐRÏ«U× @  ÷ÛI¾?d SÏÌõÏu @  ÷ÜJ¾?d PSÏNdØ« @  ÷ÝK¾?d SÏ*tª @  ÷ÞL¾?d ÐSϨ‚ct @  ÷ßM¾?d Tϱ7;ö @  ÷àN¾?d PTÏ3¦,( @  ÷áO¾?d TϪ‘â @  ÷âP¾?d€ ÐTÏšn @  øQ¾?d Uφ4Ðå @  øR¾?d PUÏ¥Ç; @  øS¾?d UÏ¥›× @  øT¾?d ÐUÏ' ‡  @  øU¾?d VÏÈ Êo @  øV¾?d PVÏJ1ݱ @  øW¾?d VÏxäÍí @  øX¾?d ÐVÏúuÚ3 @  ø Y¾?d WÏXÓ»| @  ø Z¾?d PWÏÚB¬¢ @  ø [¾?d WÏ{|ûN @  ø \¾?d ÐWÏùíì @  ø ]¾?d XÏ¿ü* @  ø^¾?d PXÏ=mšô @  ø_¾?d XÏZþïx @  ø`¾?d ÐXÏØoø¦ @  øa¾?d YÏzÉ™é @  øb¾?d PYÏøXŽ7 @  øc¾?d YÏYfÙÛ @  ød¾?d ÐYÏÛ÷Î @  øe¾?d ZÏ4]ƒc @  øf¾?d PZ϶̔½ @  øg¾?d ZÏ„„á @  øh¾?d ÐZψ“? @  øi¾?d [Ϥ.òp @  øj¾?d P[Ï&¿å® @  øk¾?d [χ²B @  øl¾?d Ð[Ï¥œ @  øm¾?d \Ïn°»4 @  øn¾?d P\Ïì!¬ê @  øo¾?d \ÏÇ  @  ø p¾?d Ð\Ï…’ÐÔ @  ø!q¾?d ]Ï'4±› @  ø"r¾?d P]Ï¥¥¦E @  ø#s¾?d ]Ï›ñ© @  ø$t¾?d Ð]φ æw @  ø%u¾?d ^Ïi « @  ø&v¾?d P^Ïë1¼Ï @  ø'w¾?d ^ÏÙ䬓 @  ø(x¾?d Ð^Ï[u»M @  ø)y¾?d _ÏùÓÚ @  ø*z¾?d P_Ï{BÍÜ @  ø+{¾?d _ÏÚ|š0 @  øuÐ`Ï,|¾?d Ð_ÏXíî @  ø-}¾?d (`Ï”ûÕÑ @  ø.~¾?d h`Ïj @  ø/¾?d ¨`Ïœoö @  ø0€¾?d è`ÏþáÞ @  ø1¾?d (aϼX€‘ @  ø2‚¾?d haÏ>É—O @  ø3ƒ¾?d ¨aÏŸ÷À£ @  ø4„¾?d èaÏf×} @  ø5…¾?d (bÏòÌš @  ø6†¾?d hbÏp]Å @  ø7‡¾?d ¨bÏBˆ™ @  ø8ˆ¾?d èbÏÀŠG @  ø9‰¾?d (cÏb¿ë @  ø:о?d hcÏà.üÖ @  ø;‹¾?d ¨cÏA«: @  ø<Œ¾?d ècÏüä @  ø=¾?d (dϨ!¢L @  ø>޾?d hdÏ*°µ’ @  ø?¾?d ¨dÏo•Øà @  ø@¾?d èdÏíÏ> @  øA‘¾?d (eÏO¢®q @  øB’¾?d heÏÍ3¹¯ @  øC“¾?d ¨eÏl îC @  øD”¾?d èeÏîœù @  øE•¾?d (fÏ6´û @  øF–¾?d hfσ§£% @  øG—¾?d ¨fϱr³y @  øH˜¾?d èfÏ3㤧 @  øI™¾?d (gÏ‘EÅè @  øJš¾?d hgÏÔÒ6 @  øK›¾?d ¨gϲê…Ú @  øLœ¾?d ègÏ0{’ @  øM¾?d (hÏvjó¾ @  øNž¾?d hhÏôûä` @  øOŸ¾?d ¨hÏ“h‘ì @  øP ¾?d èhÏù†2 @  øQ¡¾?d (iϳ_ç} @  øR¢¾?d hiÏ1Îð£ @  øS£¾?d ¨iÏð§O @  øT¤¾?d èiÏa°‘ @  øU¥¾?d (jÏýËý÷ @  øV¦¾?d hjÏZê) @  øW§¾?d ¨jÏMúu @  øX¨¾?d èjÏÏí« @  øY©¾?d (kÏm¸Œä @  øZª¾?d hkÏï)›: @  ø[«¾?d ¨kÏNÌÖ @  ø\¬¾?d èkÏ̆Û @  ø]­¾?d (lϧ&Å  @  ø^®¾?d hlÏ%·Ò~ @  ø_¯¾?d ¨lÏΕ¹ž @  ø`°¾?d èlÏL®@ @  øa±¾?d (mÏî¢Ï @  øb²¾?d hmÏl3ØÑ @  øc³¾?d ¨mÏÍ = @  ød´¾?d èmÏOœ˜ã @  øeµ¾?d (nÏ 6Õ… @  øf¶¾?d hnÏ"§Â[ @  øg·¾?d ¨nÏrÒ @  øh¸¾?d ènÏ’ãÅÙ @  øi¹¾?d (oÏ0E¤– @  øjº¾?d hoϲԳH @  øk»¾?d ¨oÏêä¤ @  øl¼¾?d èoÏ‘{óz @  øm½¾?d (pÏ]K¢o @  øn¾¾?d hpÏßÚµ± @  øo¿¾?d ¨pÏHÕ, @  øpÀ¾?d èpÏʈÂò @  øqÁ¾?d (qÏh.£½ @  ør¾?d hqÏê¿´c @  øsþ?d ¨qÏKã @  øtľ?d èqÏÉôQ @  øuž?d (rÏ&º¹7 @  øvƾ?d hrϤ+®é @  øwǾ?d ¨rÏ–þ¾µ @  øxȾ?d èrÏo©k @  øyɾ?d (s϶ÉÈ$ @  øzʾ?d hsÏ4Xßú @  ø{˾?d ¨sÏ•fˆ @  ø|̾?d èsÏ÷ŸÈ @  ø};?d (tÏ|W` @  ø~ξ?d htÏþÆ–¾ @  øϾ?d ¨tÏXµËý @  ø€о?d ètÏÚ$Ü# @  øѾ?d (uÏx‚½l @  ø‚Ò¾?d huÏúª² @  øƒÓ¾?d ¨uÏ[-ý^ @  ø„Ô¾?d èuÏÙ¼ê€ @  ø…Õ¾?d (vÏ6§æ @  ø†Ö¾?d hvÏ´‡°8 @  ø‡×¾?d ¨vφR d @  øˆؾ?d èvÏ÷º @  ø‰Ù¾?d (wϦeÖõ @  øŠÚ¾?d hwÏ$ôÁ+ @  ø‹Û¾?d ¨wÏ…Ê–Ç @  øŒܾ?d èwÏ[ @  øݾ?d (xÏAJ࣠@  øŽÞ¾?d hxÏÃÛ÷} @  øß¾?d ¨xϤH‚ñ @  øà¾?d èxÏ&Ù•/ @  ø‘á¾?d (yÏ„ô` @  ø’â¾?d hyÏîã¾ @  ø“ã¾?d ¨yϧдR @  ø”ä¾?d èyÏ%A£Œ @  ø•å¾?d (zÏÊëîê @  ø–æ¾?d hzÏHzù4 @  ø—ç¾?d ¨zÏz¯éh @  ø˜è¾?d èzÏø>þ¶ @  ø™é¾?d ({ÏZ˜Ÿù @  øšê¾?d h{ÏØ ˆ' @  ø›ë¾?d ¨{Ïy7ßË @  øœì¾?d è{Ïû¦È @  øí¾?d (|ÏÖ½ @  øžî¾?d h|Ï—Ác @  øŸï¾?d ¨|Ïùµªƒ @  ø ð¾?d è|Ï{$½] @  ø¡ñ¾?d (}ÏÙ‚Ü @  ø¢ò¾?d h}Ï[ËÌ @  ø£ó¾?d ¨}Ïú-œ  @  ø¤ô¾?d è}Ïx¼‹þ @  ø¥õ¾?d (~Ï—Ƙ @  ø¦ö¾?d h~χÑF @  ø§÷¾?d ¨~Ï'RÁ @  ø¨ø¾?d è~Ï¥ÃÖÄ @  ø©ù¾?d (Ïe·‹ @  øªú¾?d hÏ…ô U @  ø«û¾?d ¨ÏuЀÏ'$Ê÷¹ @  ø¬ü¾?d èÏÛÛ“ @  ø­€ý¾?d @€ÏÇ‹œÈ @  ø®€þ¾?d €€Ïç~ž6 @  ø¯€ÿ¾?d À€Ï°xê @  ø°€¿?d Ï`0fý @  ø±€¿?d @ÏOœ„ @  ø²€¿?d €Ï°ºžz @  ø³€¿?d Àϳàܶ @  ø´€¿?d ‚Ï.¤|w @  øµ€¿?d @‚ÏÞÛ† @  ø¶€¿?d €‚Ïþ.„ð @  ø·€¿?d À‚ÏnŸŒ @  ø¸€¿?d ƒÏ¾× d @  ø¹€ ¿?d @ƒÏN¨÷ @  øº€ ¿?d €ƒÏn]õã @  ø»€ ¿?d ÀƒÏm·/ @  ø¼€ ¿?d „ÏtID  @  ø½€ ¿?d @„Ï„6¾Y @  ø¾€¿?d €„Ϥü§ @  ø¿€¿?d À„ÏC‚Äõ @  øÀ€¿?d …Ï“ÊH @  øÁ€¿?d @…Ïcµ²d @  ø€¿?d €…ÏC@°š @  øÀ¿?d À…Ï@òV @  øÄ€¿?d †ÏÝ^R— @  øÅ€¿?d @†Ï-!¨î @  øÆ€¿?d €†Ï Ôª @  øÇ€¿?d À†Ïe¯l @  øÈ€¿?d ‡ÏM-#„ @  øÉ€¿?d @‡Ï½RÙý @  øÊ€¿?d €‡Ï§Û @  øË€¿?d À‡Ïžý™Ï @  øÌ€¿?d ˆÏªÒ @  øÍ€¿?d @ˆÏZ}ï« @  ø΀¿?d €ˆÏzˆíU @  øÏ€¿?d ÀˆÏ¿ù @  øЀ ¿?d ‰Ïo7 @  øÑ€!¿?d @‰ÏŸHûh @  øÒ€"¿?d €‰Ï¿½ù– @  øÓ€#¿?d À‰Ï¼ç»Z @  øÔ€$¿?d ŠÏ!£› @  øÕ€%¿?d @ŠÏÑÜáâ @  øÖ€&¿?d €ŠÏñ)ã @  ø×€'¿?d ÀŠÏa˜æ` @  øØ€(¿?d ‹Ï±Ðjˆ @  øÙ€)¿?d @‹ÏA¯ñ @  øÚ€*¿?d €‹ÏaZ’ @  øÛ€+¿?d À‹ÏbÐà @  øÜ€,¿?d ŒÏ{N#Ì @  øÝ€-¿?d @ŒÏ‹1Ùµ @  øÞ€.¿?d €ŒÏ«ÄÛK @  ø߀/¿?d ÀŒÏâ‚¥‹ @  øà€0¿?d Ï2Ê)c @  øá€1¿?d @ÏµÓ @  øâ€2¿?d€ €Ï–ƒÍB @  ù€3¿?d ÀÏt˜Ç§ @  ù€4¿?d ŽÏéÜgf @  ù€5¿?d @ŽÏÜêfò @  ù€6¿?d €ŽÏüd  @  ù€7¿?d ÀŽÏ¢>  @  ù€8¿?d ÏrT²â @  ù€9¿?d @ÏL™á @  ù€:¿?d €Ïll @  ù €;¿?d ÀϪ¬> @  ù €<¿?d Ï¡Œ @  ù €=¿?d @Ï!— @  ù €>¿?d €Ïbæ @  ù €?¿?d ÀÏWÖÁ @  ù€@¿?d ‘χž‹) @  ù€A¿?d @‘ÏòÊ @  ù€B¿?d €‘Ï44 @  ù€C¿?d À‘Ïò« @  ù€D¿?d ’ÏoP Ô @  ù€E¿?d @’ÏZf @ @  ù€F¿?d €’Ïz“¾ @  ù€G¿?d À’Ï$R¸ @  ù€H¿?d “ÏôØÞP @  ù€I¿?d @“ÏÊ{S @  ù€J¿?d €“Ïêày­ @  ù€K¿?d À“Ï,óÀŒ @  ù€L¿?d ”Ï5½3ƒ @  ù€M¿?d @”Ï‹2 @  ù€N¿?d €”Ï ~0é @  ù€O¿?d À”Ï- @  ù€P¿?d •ÏËe„ë @  ù€Q¿?d @•ÏI8¸ @  ù €R¿?d €•Ïiú:F @  ù!€S¿?d À•ϯéƒg @  ù"€T¿?d –Ï2­#¦ @  ù#€U¿?d @–Ï›"2 @  ù$€V¿?d €–Ï'n Ì @  ù%€W¿?d À–ÏymzÊ @  ù&€X¿?d —Ï©%ö" @  ù'€Y¿?d @—Ï—èS! @  ù(€Z¿?d €—Ï·Qß @  ù)€[¿?d À—Ïqèþ @  ù*€\¿?d ˜ÏEñdã @  ù+€]¿?d @˜ÏpÇew @  ù,€^¿?d €˜ÏP2g‰ @  ù-€_¿?d À˜ÏöÖf¿ @  ù.€`¿?d ™Ï&žêW @  ù/€a¿?d @™Ïµòq´ @  ù0€b¿?d €™Ï•sJ @  ù1€c¿?d À™ÏSÊk @  ù2€d¿?d šÏÎPjª @  ù3€e¿?d @šÏûfk> @  ù4€f¿?d €šÏÛ“iÀ @  ù5€g¿?d ÀšÏ…3Æ @  ù6€h¿?d ›ÏUØ¿. @  ù7€i¿?d @›Ïk- @  ù8€j¿?d €›ÏKàÓ @  ù9€k¿?d À›Ïó¡ò @  ù:€l¿?d œÏ”½Rý @  ù;€m¿?d @œÏ¡‹Si @  ù<€n¿?d €œÏ~Q— @  ù=€o¿?d ÀœÏº-i} @  ù>€p¿?d Ïjeå• @  ù?€q¿?d @ÏF_T @  ù@€r¿?d €Ïfý]ª @  ùA€s¿?d ÀÏ îä‹ @  ùB€t¿?d žÏ=ªDJ @  ùC€u¿?d @žÏœEÞ @  ùD€v¿?d €žÏ(iG  @  ùE€w¿?d ÀžÏvj& @  ùF€x¿?d ŸÏ¦"‘Î @  ùG€y¿?d @ŸÏ˜ï4Í @  ùH€z¿?d €ŸÏ¸63 @  ùI€{¿uРÏ?d ÀŸÏ~  @  ùJ€|¿?d  ÏKEþÝ @  ùK }¿?d X Ï~sÿI @  ùL ~¿?d ˜ Ï^†ý· @  ùM ¿?d Ø Ïô½ @  ùN €¿?d ¡Ïż1ê @  ùO ¿?d X¡ÏVЪ  @  ùP ‚¿?d ˜¡Ïv%¨÷ @  ùQ ƒ¿?d ءϰ6Ö @  ùR „¿?d ¢Ï-r± @  ùS …¿?d X¢ÏD°ƒ @  ùT †¿?d ˜¢Ï8±²} @  ùU ‡¿?d Ø¢Ïf²è{ @  ùV ˆ¿?d £Ï¶úd“ @  ùW ‰¿?d X£Ïˆ7Á @  ùX Š¿?d ˜£Ï¨ÂÃn @  ùY ‹¿?d Ø£ÏnÑzO @  ùZ Œ¿?d ¤ÏwŸ‰@ @  ù[ ¿?d X¤ÏB©ˆÔ @  ù\ Ž¿?d ˜¤Ïb\Š* @  ù] ¿?d ؤÏY²À @  ù^ ¿?d ¥Ï‰G>( @  ù_ ‘¿?d X¥Ï -‚{ @  ù` ’¿?d ˜¥Ï+Ø€… @  ùa “¿?d Ø¥ÏíË9¤ @  ùb ”¿?d ¦Ïp™e @  ùc •¿?d X¦ÏE¹˜ñ @  ùd –¿?d ˜¦ÏeLš @  ùe —¿?d ئÏ;OÀ  @  ùf ˜¿?d §ÏëLá @  ùg ™¿?d X§ÏÕÊéâ @  ùh š¿?d ˜§Ïõ?ë @  ùi ›¿?d اÏ3,R= @  ùj œ¿?d ¨ÏÓÞ  @  ùk ¿?d X¨Ï2åß´ @  ùl ž¿?d ˜¨ÏÝJ @  ùm Ÿ¿?d بÏ´ôÜ| @  ùn  ¿?d ©Ïd¼P” @  ùo ¡¿?d X©Ï÷ÐËw @  ùp ¢¿?d ˜©Ï×%ɉ @  ùq £¿?d Ø©Ï6p¨ @  ùr ¤¿?d ªÏŒrÐi @  ùs ¥¿?d XªÏ¹DÑý @  ùt ¦¿?d ˜ªÏ™±Ó @  ùu §¿?d تÏDz‰ @  ùv ¨¿?d «Ïúí @  ùw ©¿?d X«Ï)7 î @  ùx ª¿?d ˜«Ï ¢ @  ùy «¿?d Ø«ÏÏÑ1 @  ùz ¬¿?d ¬ÏÖŸè> @  ù{ ­¿?d X¬Ïã©éª @  ù| ®¿?d ˜¬ÏÃ\ëT @  ù} ¯¿?d جÏøÓ¾ @  ù~ °¿?d ­Ï(G_V @  ù ±¿?d X­Ïç|Õ¦ @  ù€ ²¿?d ˜­Ïlj×X @  ù ³¿?d Ø­Ïšny @  ù‚ ´¿?d ®ÏœÞθ @  ùƒ µ¿?d X®Ï©èÏ, @  ù„ ¶¿?d ˜®Ï‰ÍÒ @  ù… ·¿?d Ø®Ï×—Ô @  ù† ¸¿?d ¯ÏV< @  ù‡ ¹¿?d X¯Ï9›¾? @  ùˆ º¿?d ˜¯Ïn¼Á @  ù‰ »¿?d دÏß}à @  ùŠ ¼¿?d °Ïa£¹R @  ù‹ ½¿?d X°ÏT•¸Æ @  ùŒ ¾¿?d ˜°Ït`º8 @  ù ¿¿?d ذÏ"Ô® @  ùŽ À¿?d ±Ïòœ"÷ @  ù Á¿?d X±Ïað¹ @  ù ¿?d ˜±ÏA»ê @  ù‘ ÿ?d رÏ‡Ë @  ù’ Ä¿?d ²ÏR¢  @  ù“ Å¿?d X²Ï/d£ž @  ù” Æ¿?d ˜²Ï‘¡` @  ù• Ç¿?d زÏQ’ûf @  ù– È¿?d ³ÏÚwŽ @  ù— É¿?d X³Ï¿Ò @  ù˜ Ê¿?d ˜³ÏŸâÐs @  ù™ Ë¿?d سÏYñiR @  ùš Ì¿?d ´Ï@¿š] @  ù› Í¿?d X´Ïu‰›É @  ùœ ο?d ˜´ÏU|™7 @  ù Ï¿?d Ø´Ïn/¡Ý @  ùž п?d µÏ¾g-5 @  ùŸ Ñ¿?d XµÏ< ‘f @  ù  Ò¿?d ˜µÏø“˜ @  ù¡ Ó¿?d صÏÚë*¹ @  ù¢ Ô¿?d ¶ÏG¯Šx @  ù£ Õ¿?d X¶Ïr™‹ì @  ù¤ Ö¿?d ˜¶ÏRl‰ @  ù¥ ׿?d ضÏ oÓ @  ù¦ Ø¿?d ·ÏÜ'_ü @  ù§ Ù¿?d X·Ïâêúÿ @  ù¨ Ú¿?d ˜·ÏÂø @  ù© Û¿?d Ø·Ï A  @  ùª Ü¿?d ¸Ï0óÍ= @  ù« Ý¿?d X¸ÏÅÌ© @  ù¬ Þ¿?d ˜¸Ï%0ÎW @  ù­ ß¿?d ظσÔÏa @  ù® à¿?d ¹ÏSœC‰ @  ù¯ á¿?d X¹ÏÀðØj @  ù° â¿?d ˜¹ÏàÚ” @  ù± ã¿?d عÏ&cµ @  ù² ä¿?d ºÏ»RÃt @  ù³ å¿?d XºÏŽdÂà @  ù´ æ¿?d ˜ºÏ®‘À @  ùµ ç¿?d غÏð’š @  ù¶ è¿?d »Ï Úð @  ù· é¿?d X»Ï³ó @  ù¸ ê¿?d ˜»Ï>â±  @  ù¹ ë¿?d Ø»Ïøñ, @  ùº ì¿?d ¼Ïá¿û# @  ù» í¿?d X¼ÏÔ‰ú· @  ù¼ î¿?d ˜¼Ïô|øI @  ù½ ï¿?d ؼÏÏ/À£ @  ù¾ ð¿?d ½ÏgLK @  ù¿ ñ¿?d X½Ï3 öŠ @  ùÀ ò¿?d ˜½Ïÿôt @  ùÁ ó¿?d ؽÏÕìMU @  ù ô¿?d ¾ÏH¨í” @  ùà õ¿?d X¾Ï}žì @  ùÄ ö¿?d ˜¾Ï]kîþ @  ùÅ ÷¿?d ؾÏh´ø @  ùÆ ø¿?d ¿ÏÓ 8 @  ùÇ ù¿?d X¿Ïíí @  ùÈ ú¿?d ˜¿ÏÍŸí @uÐÀÏ  ùÉ û¿?d Ø¿Ï2Ìú @  ùÊü¿?d 0ÀÏV<«K @  ùËý¿?d pÀÏc ªß @  ùÌþ¿?d °ÀÏCÿ¨! @  ùÍÿ¿?d ðÀÏ­’òN @  ùÎÀ?d 0ÁÏ}Ú~¦ @  ùÏÀ?d pÁÏî¶åE @  ùÐÀ?d °ÁÏÎCç» @  ùÑÀ?d ðÁÏP^š @  ùÒÀ?d 0ÂÏ•þ[ @  ùÓÀ?d pÂÏ "ÿÏ @  ùÔÀ?d °ÂÏ€×ý1 @  ùÕÀ?d ðÂÏÞÔ§7 @  ùÖÀ?d 0ÃÏœ+ß @  ù× À?d pÃÏ0QŽÜ @  ùØ À?d °ÃϤŒ" @  ùÙ À?d ðÃÏÖ·5 @  ùÚ À?d 0ÄÏÏùÆ  @  ùÛ À?d pÄÏúÏǘ @  ùÜÀ?d °ÄÏÚ:Åf @  ùÝÀ?d ðÄÏáiýŒ @  ùÞÀ?d 0ÅÏ1!qd @  ùßÀ?d pÅϳKÍ7 @  ùàÀ?d °ÅÏ“¾ÏÉ @  ùáÀ?d ðÅÏU­vè @  ùâÀ?d€ 0ÆÏ ®!) @  úÀ?d pÆÏÝÙh” @  úÀ?d °ÆÏý,jj @  úÀ?d ðÆÏffË @  úÀ?d 0Ç϶.Gi @  úÀ?d pÇÏFQ½ @  úÀ?d °ÇÏf¤¿î @  úÀ?d ðÇÏnYµ @  úÀ?d 0ÈÏZúÕ¨ @  ú À?d pÈϪ…/Ñ @  ú À?d °ÈÏŠp-/ @  ú À?d ðÈÏéÝ×ô @  ú  À?d 0ÉÏ9•[ @  ú !À?d pÉÏÉê¡e @  ú"À?d °ÉÏ飛 @  ú#À?d ðÉÏL{  @  ú$À?d 0ÊÏÑ[Ûá @  ú%À?d pÊÏ!$!˜ @  ú&À?d °ÊÏÑ#f @  ú'À?d ðÊÏš›‚ @  ú(À?d 0ËÏJÓe @  ú)À?d pËϺ¬ô @  ú*À?d °ËÏšYöâ @  ú+À?d ðËÏ’ø¹ @  ú,À?d 0ÌÏ‹¶ã¶ @  ú-À?d pÌÏ{ÉÏ @  ú.À?d °ÌÏ[<1 @  ú/À?d ðÌÏ¥&Ø6 @  ú0À?d 0ÍÏunTÞ @  ú1À?d pÍÏ…®§ @  ú2À?d °ÍÏ¥ä¬Y @  ú3À?d ðÍÏâSR @  ú 4À?d 0ÎÏŒ¦ó“ @  ú!5À?d pÎÏ|Ù ê @  ú"6À?d °ÎÏ\,  @  ú#7À?d ðÎÏÇfªÿ @  ú$8À?d 0ÏÏ.& @  ú%9À?d pÏÏçQÜn @  ú&:À?d °ÏÏǤÞ @  ú';À?d ðÏÏÏ8Ë @  ú(<À?d 0ÐÏqÛ„y @  ú)=À?d pÐϤ~ @  ú*>À?d °ÐÏ¡Q|þ @  ú+?À?d ðÐÏ2¬“4 @  ú,@À?d 0ÑÏâäÜ @  ú-AÀ?d pÑÏ›å¥ @  ú.BÀ?d °ÑÏ2nç[ @  ú/CÀ?d ðÑÏ—n?à @  ú0DÀ?d 0ÒÏ *Ÿ! @  ú1EÀ?d pÒÏúUeX @  ú2FÀ?d °ÒÏÚ g¦ @  ú3GÀ?d ðÒÏAêÆM @  ú4HÀ?d 0ÓÏ‘¢J¥ @  ú5IÀ?d pÓÏaݰÜ @  ú6JÀ?d °ÓÏA(²" @  ú7KÀ?d ðÓÏI‰Ty @  ú8LÀ?d 0ÔÏPǧv @  ú9MÀ?d pÔÏ ¸] @  ú:NÀ?d °ÔÏ€M_ñ @  ú;OÀ?d ðÔÏ~Wœö @  ú<PÀ?d 0ÕÏ® @  ú=QÀ?d pÕÏ^`êg @  ú>RÀ?d °ÕÏ~•è™ @  ú?SÀ?d ðÕÏd” @  ú@TÀ?d 0ÖÏùбÁ @  úAUÀ?d pÖÏ ¯K¸ @  úBVÀ?d °ÖÏ)ZIF @  úCWÀ?d ðÖÏ²è­ @  úDXÀ?d 0×ÏbXdE @  úEYÀ?d p×Ï’'ž< @  úFZÀ?d °×ϲҜ @  úG[À?d ð×Ϻsz™ @  úH\À?d 0ØÏŽŒö„ @  úI]À?d pØÏ~ó ý @  úJ^À?d °ØÏ^ @  úK_À?d ðØÏ=«ôØ @  úL`À?d 0ÙÏíãx0 @  úMaÀ?d pÙÏœ‚I @  úNbÀ?d °ÙÏ=i€· @  úOcÀ?d ðÙϘiX  @  úPdÀ?d 0ÚÏ-øÍ @  úQeÀ?d pÚÏõR´ @  úRfÀ?d °ÚÏÕ§J @  úSgÀ?d ðÚÏNí¡¡ @  úThÀ?d 0ÛÏž¥-I @  úUiÀ?d pÛÏnÚ×0 @  úVjÀ?d °ÛÏN/ÕÎ @  úWkÀ?d ðÛÏFŽ3• @  úXlÀ?d 0ÜÏ_ÀÀš @  úYmÀ?d pÜϯ¿:ã @  úZnÀ?d °ÜÏJ8 @  ú[oÀ?d ðÜÏqPû @  ú\pÀ?d 0ÝÏ¡wò @  ú]qÀ?d pÝÏQg‹ @  ú^rÀ?d °ÝÏq’u @  ú_sÀ?d ðÝÏÅ”p~ @  ú`tÀ?d 0ÞÏXÐп @  úauÀ?d pÞϨ¯*Æ @  úbvÀ?d °ÞψZ(8 @  úcwÀ?d ðÞÏ‰Ó @  údxÀ?d 0ßÏÃX; @  úeyÀ?d pßÏ3'ÿB @  úfzÀ?d uÐàÏ/°ßÏÒý¼ @  úg{À?d ðßÏfóh› @  úh€|À?d HàÏW6m @  úi€}À?d ˆàÏ-LÙ4 @  új€~À?d ÈàϯÝÎê @  úk€À?d áÏs?î„ @  úl€€À?d HáÏñ®ùZ @  úm€À?d ˆáÏ£µ @  ún€‚À?d ÈáÏ!$Ý @  úo€ƒÀ?d âÏ›ñny @  úp€„À?d HâÏ`y§ @  úq€…À?d ˆâÏK{–þ @  úr€†À?d ÈâÏÉê  @  ús€‡À?d ãÏy»ý @  út€ˆÀ?d HãÏ‚è¬# @  úu€‰À?d ˆãÏÐóCz @  úv€ŠÀ?d ÈãÏRbT¤ @  úw€‹À?d äÏÁV. @  úx€ŒÀ?d HäÏCAð @  úy€À?d ˆäÏ–®© @  úz€ŽÀ?d ÈäÏ“¹w @  ú{€À?d åÏ?ÄáF @  ú|€À?d HåϽUö˜ @  ú}€‘À?d ˆåÏïNÁ @  ú~€’À?d ÈåÏmß @  ú€“À?d æÏ‹]p¨ @  ú€€”À?d HæÏ Ìgv @  ú€•À?d ˆæÏ[׈/ @  ú‚€–À?d ÈæÏÙFŸñ @  úƒ€—À?d çÏÕ¥, @  ú„€˜À?d HçÏ’D²ò @  ú…€™À?d ˆçÏÀ_]« @  ú†€šÀ?d ÈçÏBÎJu @  ú‡€›À?d èÏü7í @  úˆ€œÀ?d HèÏ~ 3 @  ú‰€À?d ˆèÏ,‹Ïj @  úŠ€žÀ?d ÈèϮش @  ú‹€ŸÀ?d éÏŸn¹Y @  úŒ€ À?d HéÏÿ®‡ @  ú€¡À?d ˆéÏOäAÞ @  úŽ€¢À?d ÈéÏÍuV @  ú€£À?d êÏw 9¤ @  ú€¤À?d HêÏõ1.z @  ú‘€¥À?d ˆêϧ*Á# @  ú’€¦À?d ÈêÏ%»Öý @  ú“€§À?d ëÏì(ì  @  ú”€¨À?d HëÏn¹ûþ @  ú•€©À?d ˆëÏ<¢§ @  ú–€ªÀ?d ÈëϾ3y @  ú—€«À?d ìÏ-Mó @  ú˜€¬À?d HìϯÜ- @  ú™€­À?d ˆìÏýÇùt @  úš€®À?d ÈìÏVîª @  ú›€¯À?d íÏÓ•¶› @  úœ€°À?d HíÏQ¡E @  ú€±À?d ˆíÏN @  úž€²À?d ÈíÏŽY @  úŸ€³À?d îÏ*]Ö @  ú €´À?d HîÏ¨Ì @  ú¡€µÀ?d ˆîÏú×éQ @  ú¢€¶À?d ÈîÏxFþ @  ú£€·À?d ïϱÕÄR @  ú¤€¸À?d HïÏ3DÓŒ @  ú¥€¹À?d ˆïÏa_<Õ @  ú¦€ºÀ?d ÈïÏãÎ+  @  ú§€»À?d ðÏ× f< @  ú¨€¼À?d HðÏU±qâ @  ú©€½À?d ˆðϪž» @  úª€¾À?d ÈðÏ…;‰e @  ú«€¿À?d ñÏDý™ @  ú¬€ÀÀ?d HñÏÆŽêG @  ú­€ÁÀ?d ˆñÏ”• @  ú®€ÂÀ?d ÈñÏÀ @  ú¯€ÃÀ?d òϬÑ}d @  ú°€ÄÀ?d HòÏ.@jº @  ú±€ÅÀ?d ˆòÏ|[…ã @  ú²€ÆÀ?d ÈòÏþÊ’= @  ú³€ÇÀ?d óÏ7Y¨à @  ú´€ÈÀ?d Hóϵȿ> @  úµ€ÉÀ?d ˆóÏçÓPg @  ú¶€ÊÀ?d ÈóÏeBG¹ @  ú·€ËÀ?d ôÏö– @  û Á?d  Ðë‰*" @  û Á?d àÐi=ü @  û Á?d аÞ3 @  ûÁ?d `Ð2O$ @  ûÁ?d  ÐGªß @  ûÁ?d àÐÖ½ @  ûÁ?d Ð |1 @  ûÁ?d `Ðkï @  û Á?d  Ð˜Ï[ @  û Á?d àÐ^h… @  û Á?d ÐG’5u @  û Á?d `ÐÅ"« @  û Á?d  ÐYª’ˆ @  ûÁ?d àÐÛ;…V @  ûÁ?d в±&Š @  ûÁ?d `Ð0 1T @  ûÁ?d  Ð§r%à @  ûÁ?d àÐ%ã2> @  ûÁ?d Ðü%< @  ûÁ?d `Ð~´+Þ @  ûÁ?d  Ð^º‚­ @  û Á?d àÐÜ+•s @  û!Á?d ÐÐñTC @  û"Á?d `ÐR`C @  û#Á?d  ÐÅ2W) @  û$Á?d àÐG£@÷ @  û%Á?d Ð7Þb @  û&Á?d `еOuË @  û'Á?d  Ð)æÅè @  û(Á?d àЫwÒ6 @  û)Á?d Ð_JH6 @  û* Á?d ` ÐÝÛ_è @  û+!Á?d   ÐJ‰K\ @  û,"Á?d à ÐÈ\‚ @  û-#Á?d ÐÞR¼ @  û.$Á?d ` ГOEb @  û/%Á?d   ТGË¡ @  û0&Á?d à Ð ÖÜ @  û1'Á?d Ð, O @  û2(Á?d ` Ю ‘ @  û3)Á?d   Ð9Ï% @  û4*Á?d à л^ û @  û5+Á?d Ðæ’T  @  û6,Á?d ` ÐdCÕ @  û7-Á?d   Ðøªóö @  û8.Á?d à Ðz;ä( @  û9/Á?d бGô @  û:0Á?d ` Б P* @  û;1Á?d   ÐrDž @  û<2Á?d à ЄãS@ @  û=3Á?d Ð]%]~ @  û>4Á?d `Ðß´J  @  û?5Á?d  ÐQ½åA @  û@6Á?d àÐÓ,òŸ @  ûA7Á?d Ðßö3¯ @  ûB8Á?d `Ð]g$q @  ûC9Á?d  ÐÊ50Å @  ûD:Á?d àÐH¤' @  ûE;Á?d вø5V @  ûF<Á?d `Ð0i"ˆ @  ûG=Á?d  Ð¬À’« @  ûH>Á?d àÐ.Q…u @  ûI?Á?d Ð*< d @  ûJ@Á?d `Ш­º @  ûKAÁ?d  Ð?ÿ  @  ûLBÁ?d àнnÐ @  ûMCÁ?d Ðd¨î @  ûNDÁ?d `Ðæ90 @  ûOEÁ?d  Ð×1‰ó @  ûPFÁ?d àÐU ž- @  ûQGÁ?d ÐYz_ @  ûRHÁ?d `ÐÛëHà @  ûSIÁ?d  ÐL¹\w @  ûTJÁ?d àÐÎ(K© @  ûUKÁ?d ГäY @  ûVLÁ?d `Ðu‡ @  ûWMÁ?d  Ðܱ¤ @  ûXNÁ?d àÐM¦z @  ûYOÁ?d ÐfǦ @  ûZPÁ?d `ÐäVx @  û[QÁ?d  ÐsÌ @  û\RÁ?d àÐñ• @  û]SÁ?d Ð(S, @  û^TÁ?d `ЪÂò @  û_UÁ?d  ÐŠÌ¡ @  û`VÁ?d àÐ]¶_ @  ûaWÁ?d Їwo @  ûbXÁ?d `І`± @  ûcYÁ?d  ÐDt @  ûdZÁ?d àГÕcÛ @  ûe[Á?d Ðã¨A9 @  ûf\Á?d `Ða9Vç @  ûg]Á?d  ÐýæÄ @  ûh^Á?d àÐñ @  ûi_Á?d Ћc @  ûrhÁ?d `Ðzë)½ @  ûsiÁ?d  Ðí¹=  @  ûtjÁ?d àÐo(*× @  ûukÁ?d Ð2äw' @  ûvlÁ?d `аu`ù @  ûwmÁ?d  Ð,ÜÐÚ @  ûxnÁ?d àЮMÇ @  ûyoÁ?d ÐÇÇdØ @  ûzpÁ?d `ÐEVs @  û{qÁ?d  ÐÒg² @  û|rÁ?d àÐP•pl @  û}sÁ?d ЉS~R @  û~tÁ?d `Ð ÂiŒ @  ûuÁ?d  Ðfö\ @  û€vÁ?d àÐä á‚ @  ûwÁ?d ÐèÖ ² @  û‚xÁ?d `ÐjG7l @  ûƒyÁ?d  Ðý#ØuÐ Ð @  û„zÁ?d àЄ4 @  û…{Á?d 8 ÐJ DŸ @  û†|Á?d x ÐÈœSA @  û‡}Á?d ¸ ÐT5ãb @  ûˆ~Á?d ø ÐÖ¤ô¼ @  û‰Á?d 8!ÐÏ/? @  ûŠ€Á?d x!ÐMž8á @  û‹Á?d ¸!ÐÚÌ,U @  ûŒ‚Á?d ø!ÐX];‹ @  ûƒÁ?d 8"Л5µ @  ûŽ„Á?d x"Ð "k @  û…Á?d ¸"Ð2¬¨ @  û†Á?d ø"а“»v @  û‘‡Á?d 8#мIzF @  û’ˆÁ?d x#Ð>Øm˜ @  û“‰Á?d ¸#ЩŠy, @  û”ŠÁ?d ø#Ð+nò @  û•‹Á?d 8$Ðv×3 @  û–ŒÁ?d x$ÐôF$Ü @  û—Á?d ¸$Ðhï”ÿ @  û˜ŽÁ?d ø$Ðê~ƒ! @  û™Á?d 8%Ѓô ý @  ûšÁ?d x%Ðe7# @  û›‘Á?d ¸%Ж7#— @  ûœ’Á?d ø%Ц4I @  û“Á?d 8&ÐÍ`:w @  ûž”Á?d x&ÐOñ-© @  ûŸ•Á?d ¸&Ðoÿ„Ú @  û –Á?d ø&Ðín“ @  û¡—Á?d 8'Ðá´R4 @  û¢˜Á?d x'Ðc%Eê @  û£™Á?d ¸'ÐôwQ^ @  û¤šÁ?d ø'ÐvæF€ @  û¥›Á?d 8(Лdb @  û¦œÁ?d x(Є s¼ @  û§Á?d ¸(Уß @  û¨žÁ?d ø(К2ÔA @  û©ŸÁ?d 8)ÐnNA @  ûª Á?d x)ÐìžYŸ @  û«¡Á?d ¸)Ð{ÌM+ @  û¬¢Á?d ø)Ðù]Zõ @  û­£Á?d 8*Ð ›TË @  û®¤Á?d x*Т C @  û¯¥Á?d ¸*ГÍÖ @  û°¦Á?d ø*Ð“Ú @  û±§Á?d 8+ÐI8 @  û²¨Á?d x+ÐŸØ æ @  û³©Á?d ¸+ЊR @  û´ªÁ?d ø+ЊŒ @  ûµ«Á?d 8,Ð××R| @  û¶¬Á?d x,ÐUFE¢ @  û·­Á?d ¸,ÐÉïõ @  û¸®Á?d ø,ÐK~â_ @  û¹¯Á?d 8-Ð"ôAƒ @  ûº°Á?d x-РeV] @  û»±Á?d ¸-Ð77Bé @  û¼²Á?d ø-е¦U7 @  û½³Á?d 8.Ðl`[  @  û¾´Á?d x.ÐîñL× @  û¿µÁ?d ¸.Ð`øã6 @  ûÀ¶Á?d ø.Ðâiôè @  ûÁ·Á?d 8/Ðî³5Ø @  û¸Á?d x/Ðl"" @  ûùÁ?d ¸/Ðûp6² @  ûĺÁ?d ø/Ðyá!l @  ûÅ»Á?d 80Ѓ½3! @  ûƼÁ?d x0Ð,$ÿ @  ûǽÁ?d ¸0Ð…”Ü @  ûȾÁ?d ø0Ѓ @  ûÉ¿Á?d 81Ðy  @  ûÊÀÁ?d x1ЙèÍ @  ûËÁÁ?d ¸1кy @  ûÌÂÁ?d ø1ÐŒ+§ @  ûÍÃÁ?d 82ÐUí™ @  ûÎÄÁ?d x2Ð×|G @  ûÏÅÁ?d ¸2Ðæt„ @  ûÐÆÁ?d ø2Ðdå˜Z @  ûÑÇÁ?d 83Ðh?Yj @  ûÒÈÁ?d x3Ðê®N´ @  ûÓÉÁ?d ¸3Ð}üZ @  ûÔÊÁ?d ø3ÐÿmMÞ @  ûÕËÁ?d 84Т¡. @  ûÖÌÁ?d x4Ð 0ð @  û×ÍÁ?d ¸4м™·Ó @  ûØÎÁ?d ø4Ð>   @  ûÙÏÁ?d 85ÐW‚Ñ @  ûÚÐÁ?d x5ÐÕ @  ûÛÑÁ?d ¸5ÐBA» @  ûÜÒÁ?d ø5ÐÀÐe @  ûÝÓÁ?d 86Ð[ @  ûÞÔÁ?d x6Л‡… @  ûßÕÁ?d ¸6뉧ö @  ûàÖÁ?d ø6Ð9°( @  ûá×Á?d 87Ð5Âq @  ûâØÁ?d€ x7Ð1Î @  üÙÁ?d ¸7ÐG’â @  üÚÁ?d ø7ÐŇ…< @  üÛÁ?d 88Ðp³\3 @  üÜÁ?d x8Ðò"Kí @  üÝÁ?d ¸8Р9¤´ @  üÞÁ?d ø8Ð"¨³j @  üßÁ?d 89Ð'v @  üàÁ?d x9К¶aÎ @  ü áÁ?d ¸9ÐÈ­Ž— @  ü âÁ?d ø9ÐJ<™I @  ü ãÁ?d 8:ÐV³lš @  ü äÁ?d x:ÐÔ"{D @  ü åÁ?d ¸:І9” @  üæÁ?d ø:ШƒÃ @  üçÁ?d 8;Ðka#i @  üèÁ?d x;Ðéð4· @  üéÁ?d ¸;лëÛî @  üêÁ?d ø;Ð9zÌ0 @  üëÁ?d 8<Сÿj- @  üìÁ?d x<Ð#n}ó @  üíÁ?d ¸<Ðqu’ª @  üîÁ?d ø<Ðóä…t @  üïÁ?d 8=ÐTÜyÒ @  üðÁ?d x=ÐÖMn  @  üñÁ?d ¸=ЄVU @  üòÁ?d ø=ÐÇ–‹ @  üóÁ?d 8>ÐHcX @  üôÁ?d x>ИÙt† @  üõÁ?d ¸>ÐÊ›ß @  üöÁ?d ø>ÐHSŒ @  ü÷Á?d 8?Ð6œ  @  ü øÁ?d x?д Å @  ü!ùÁ?duÐ@Ð7 ¸?Ðæóœ @  ü"úÁ?d ø?Ðd‡äB @  ü#ûÁ?d P@Ð&à l @  ü$üÁ?d @Ð ’ @  ü%ýÁ?d Ð@Ðöjóë @  ü&þÁ?d AÐ&" @  ü'ÿÁ?d PAÐn§å @  ü(Â?d AÐNR @  ü)Â?d ÐAо-øb @  ü*Â?d BÐ#iX£ @  ü+Â?d PBÐ 3o @  ü,Â?d BÐÆ‘ @  ü-Â?d ÐBÐð¹âè @  ü.Â?d CÐ ñn @  ü/Â?d PCÐáUœ @  ü0Â?d CÐ=Wb @  ü1 Â?d ÐCÐÍk­ @  ü2 Â?d DÐÔ%^ @  ü3 Â?d PDÐר @  ü4 Â?d DÐ÷Š& @  ü5 Â?d ÐDÐõä_ @  ü6Â?d EÐ×½h· @  ü7Â?d PEÐ"\' @  ü8Â?d EЩ Ù @  ü9Â?d ÐEÐòÖ÷  @  ü:Â?d FÐo’Wa @  ü;Â?d PFÐlÈ­ @  ü<Â?d FÐL=S @  ü=Â?d ÐFмBí* @  ü>Â?d GÐl a @  ü?Â?d PGÐî{| @  ü@Â?d GÐÎîy‚ @  üAÂ?d ÐGÐ>‘ƒû @  üBÂ?d HÐ næ @  üCÂ?d PHÐ 4M* @  üDÂ?d HÐ)ÁOÔ @  üEÂ?d ÐHÐÙ¾µ­ @  üFÂ?d IÐ ö9E @  üGÂ?d PIÐa g  @  üH Â?d IÐAUe÷ @  üI!Â?d ÐIб*ŸŽ @  üJ"Â?d JÐ,n?O @  üK#Â?d PJÐ/4}ƒ @  üL$Â?d JÐÁ} @  üM%Â?d ÐJÐÿ¾… @  üN&Â?d KÐ/ö ì @  üO'Â?d PKÐæ2p @  üP(Â?d KÐ20Ž @  üQ)Â?d ÐKÐÂlÊ÷ @  üR*Â?d LÐÛ"9ø @  üS+Â?d PLÐØx{4 @  üT,Â?d LÐøyÊ @  üU-Â?d ÐLÐòƒ³ @  üV.Â?d MÐغ[ @  üW/Â?d PMÐ-[hË @  üX0Â?d MÐ ®j5 @  üY1Â?d ÐMÐýÑL @  üZ2Â?d NÐ`•0 @  ü[3Â?d PNÐcÏrA @  ü\4Â?d NÐC:p¿ @  ü]5Â?d ÐNгEŠÆ @  ü^6Â?d OÐc . @  ü_7Â?d POÐO @  ü`8Â?d OÐoîü @  üa9Â?d ÐOП‘â… @  üb:Â?d PÐ!O^7 @  üc;Â?d PPÐ"û @  üd<Â?d PÐà @  üe=Â?d ÐPÐòŸä| @  üf>Â?d QÐ"×h” @  üg?Â?d PQкÑ#É @  üh@Â?d QК$!7 @  üiAÂ?d ÐQÐj[ÛN @  üjBÂ?d RÐ÷{ @  ükCÂ?d PRÐôE9C @  ülDÂ?d RÐÔ°;½ @  ümEÂ?d ÐRÐ$ÏÁÄ @  ünFÂ?d SÐô‡M, @  üoGÂ?d PSÐÉ—v° @  üpHÂ?d SÐébtN @  üqIÂ?d ÐSÐŽ7 @  ürJÂ?d TÐS}8 @  üsKÂ?d PTÐ ?ô @  ütLÂ?d TÐ#ü=  @  üuMÂ?d ÐTÐÓƒÇs @  üvNÂ?d UÐËK› @  üwOÂ?d PUÐö*,  @  üxPÂ?d UÐÖß.õ @  üyQÂ?d ÐUÐ& ÔŒ @  üzRÂ?d VлätM @  ü{SÂ?d PVи¾6 @  ü|TÂ?d VИK4 @  ü}UÂ?d ÐVÐh4Î @  ü~VÂ?d Wи|Bî @  üWÂ?d PWÐÙ;ha @  ü€XÂ?d WÐùÎjŸ @  üYÂ?d ÐWÐ ±æ @  ü‚ZÂ?d XÐ=Nû @  üƒ[Â?d PXÐ>^7 @  ü„\Â?d XÐá\É @  ü…]Â?d ÐXÐ° @  ü†^Â?d YÐ>Ö*X @  ü‡_Â?d PYÐV€t @  üˆ`Â?d YÐvuvê @  ü‰aÂ?d ÐYІ Œ“ @  üŠbÂ?d ZÐN,R @  ü‹cÂ?d PZÐnž @  üŒdÂ?d ZÐ8ál` @  üeÂ?d ÐZÐÈž– @  üŽfÂ?d [ÐÖñ @  ügÂ?d P[Ð%Æ!m @  ühÂ?d [Ð3#“ @  ü‘iÂ?d Ð[ÐõLÙê @  ü’jÂ?d \Ðì*å @  ü“kÂ?d P\ÐïXh) @  ü”lÂ?d \ÐÏ­j× @  ü•mÂ?d Ð\Ð?Ò® @  ü–nÂ?d ]ÐïšF @  ü—oÂ?d P]Ð{{Ö @  ü˜pÂ?d ]Ð:Žy( @  ü™qÂ?d Ð]ÐÊñƒQ @  üšrÂ?d ^ÐWµ# @  ü›sÂ?d P^ÐTïa\ @  üœtÂ?d ^Ðtc¢ @  üuÂ?d Ð^Єe™Û @  üžvÂ?d _ÐT-3 @  üŸwÂ?d P_Ðx;  @  ü xÂ?d _ÐXÎ á @  üuÐ`СyÂ?d Ð_Ш±ñ˜ @  ü¢zÂ?d (`ÐID @  ü£{Â?d h`ÐÌ @  ü¤|Â?d ¨`Ð5æ2 @  ü¥}Â?d è`ÐÅ™þK @  ü¦~Â?d (aÐÑr£ @  ü§Â?d haÐml @  ü¨€Â?d ¨aаäo’ @  ü©Â?d èaÐ@›•ë @  üª‚Â?d (bÐÝß5* @  ü«ƒÂ?d hbÐÞ…wæ @  ü¬„Â?d ¨bÐþpu @  ü­…Â?d èbÐa @  ü®†Â?d (cÐÞG‰ @  ü¯‡Â?d hcÐãW8 @  ü°ˆÂ?d ¨cÐâ:ë @  ü±‰Â?d ècÐ3ÝÀ’ @  ü²ŠÂ?d (dÐ*“3 @  ü³‹Â?d hdÐ)ÉqQ @  ü´ŒÂ?d ¨dÐ  @  ü·Â?d heÐÜêb® @  ü¸Â?d ¨eÐü`P @  ü¹‘Â?d èeÐ `š) @  üº’Â?d (fБ$:è @  ü»“Â?d hfÐ’~x$ @  ü¼”Â?d ¨fв‹zÚ @  ü½•Â?d èfÐBô€£ @  ü¾–Â?d (gÐ’¼ K @  ü¿—Â?d hgЭõ @  üÀ˜Â?d ¨gÐ0X  @  üÁ™Â?d ègÐÀ'îr @  üšÂ?d (hÐôØbo @  üÛÂ?d hhÐ÷‚ £ @  üÄœÂ?d ¨hÐ×w"] @  üÅÂ?d èhÐ'Ø$ @  üÆžÂ?d (iÐ÷@TÌ @  üÇŸÂ?d hiП € @  üÈ Â?d ¨iпã~ @  üÉ¡Â?d èiÐOœò @  üÊ¢Â?d (jÐÒØRÆ @  üË£Â?d hjÐÑ‚  @  ṳ̈Â?d ¨jÐñwô @  üÍ¥Â?d èjÐè @  üΦÂ?d (kÐÑ@de @  üϧÂ?d hkÐìP_ù @  üШÂ?d ¨kÐÌ¥] @  üÑ©Â?d èkÐ<Ú§~ @  üÒªÂ?d (lÐ%”Tq @  üÓ«Â?d hlÐ&ν @  üÔ¬Â?d ¨lÐ;C @  üÕ­Â?d èlÐöDî: @  üÖ®Â?d (mÐ& bÒ @  üׯÂ?d hmÐÓíB @  üذÂ?d ¨mÐó¼ @  üÙ±Â?d èmÐgýÅ @  üÚ²Â?d (nО#] @  üÛ³Â?d hnÐyÈ @  üÜ´Â?d ¨nнŒ6 @  üݵÂ?d ènÐMóçO @  üÞ¶Â?d (oлk§ @  üß·Â?d hoб­w‹ @  üà¸Â?d ¨oБXuu @  üá¹Â?d èoÐa'  @  üâºÂ?d€ (pЫ:/ @  ý»Â?d hpÐI!%ý @  ý¼Â?d ¨pÐiÔ' @  ý½Â?d èpÐ\â&— @  ý¾Â?d (qÐŒªª @  ý¿Â?d hqÐÚ¾X @  ýÀÂ?d ¨qÐú뼦 @  ýÁÂ?d èqÐÄ&¥ @  ýÂÂ?d (rÐYb¹d @  ý ÃÂ?d hrПqE @  ý ÄÂ?d ¨rп„» @  ý ÅÂ?d èrÐв/ @  ý ÆÂ?d (sÐZúÇ @  ý ÇÂ?d hsÐùÕÁ @  ýÈÂ?d ¨sÐ$ ×? @  ýÉÂ?d èsз`LÜ @  ýÊÂ?d (tЮ.¿Ó @  ýËÂ?d htÐh=ò @  ýÌÂ?d ¨tÐHÈ  @  ýÍÂ?d ètÐ}þ˜ @  ýÎÂ?d (uЭ¶‰p @  ýÏÂ?d huЖ屚 @  ýÐÂ?d ¨uж³d @  ýÑÂ?d èuЈÝg @  ýÒÂ?d (vЙ¶¦ @  ýÓÂ?d hvÐÓŠ‡ @  ýÔÂ?d ¨vÐó y @  ýÕÂ?d èvÐÆI í @  ýÖÂ?d (wЀ @  ý×Â?d hwÐHÚ @  ýØÂ?d ¨wÐh÷Øý @  ýÙÂ?d èwÐêd® @  ý ÚÂ?d (xÐÞbè³ @  ý!ÛÂ?d hxÐqQ’ @  ý"ÜÂ?d ¨xÐ8„Sl @  ý#ÝÂ?d èxÐ ²Rø @  ý$ÞÂ?d (yÐÝúÞ @  ý%ßÂ?d hyÐ{ß& @  ý&àÂ?d ¨yÐ[ëÝØ @  ý'áÂ?d èyÐe&xÛ @  ý(âÂ?d (zÐøbØ @  ý)ãÂ?d hzÐ>qa; @  ý*äÂ?d ¨zЄcÅ @  ý+åÂ?d èzÐ+²bQ @  ý,æÂ?d ({Ðûúî¹ @  ý-çÂ?d h{Ð¥ù´¿ @  ý.èÂ?d ¨{Ð… ¶A @  ý/éÂ?d è{Ð`-¢ @  ý0êÂ?d (|Ð.Þ­ @  ý1ëÂ?d h|ÐÉ=gŒ @  ý2ìÂ?d ¨|ÐéÈer @  ý3íÂ?d è|ÐÜþdæ @  ý4îÂ?d (}Ð ¶è @  ý5ïÂ?d h}Ð7åÐä @  ý6ðÂ?d ¨}ÐÒ @  ý7ñÂ?d è}Ð)Ýw @  ý8òÂ?d (~д™×Ø @  ý9óÂ?d h~ÐrŠnù @  ý:ôÂ?d ¨~ÐRl @  ý;õÂ?d è~ÐgIm“ @  ý<öÂ?d (зá{ @  ý=÷Â?d hÐé»} @  ý>øÂ?d ¨ÐuЀÐ'É÷¹ƒ @  ý?ùÂ?d èÐåšB @  ý@úÂ?d @€Ð‹$á6 @  ýAûÂ?d €€ÐïSM7 @  ýBüÂ?d À€ÐmÂZé @  ýCýÂ?d Ð -ÀK @  ýDþÂ?d @Ј¼×• @  ýEÿÂ?d €ÐÍ×  @  ýFÃ?d ÀМ\ÀÒ @  ýGÃ?d ‚нDÒÎ @  ýHÃ?d @‚Ð?ÕÅ @  ýIÃ?d €‚Ð[¢i @  ýJÃ?d À‚ÐÙ3~Ï @  ýKÃ?d ƒÐ¾Üäm @  ýLÃ?d @ƒÐÃ?d @‘ÐÝ=Å @  ý…?Ã?d €‘Ð)íÄ @  ý†@Ã?d À‘Ы|ÓÏ @  ý‡AÃ?d ’ЊdÁÓ @  ýˆBÃ?d @’ÐõÖ  @  ý‰CÃ?d €’Ðl‚z  @  ýŠDÃ?d À’ÐîmÒ @  ý‹EÃ?d “Љü÷p @  ýŒFÃ?d @“Ð mà® @  ýGÃ?d €“Ð÷ ¯ˆ @  ýŽHÃ?d À“Ðu›¸V @  ýIÃ?d ”Ð}(Çd @  ýJÃ?d @”Ðÿ¹Ðº @  ý‘KÃ?d €”ЛÎ|» @  ý’LÃ?d À”Ð_ke @  ý“MÃ?d •Ð~°ñÇ @  ý”NÃ?d @•Ðü!æ @  ý•OÃ?d €•ÐeËÓ @  ý–PÃ?d À•Ðç‡Ü  @  ý—QÃ?d –ÐÆŸÎ @  ý˜RÃ?d @–ÐDÙÏ @  ý™SÃ?d €–Ð yuÎ @  ýšTÃ?d À–Тèb @  ý›UÃ?d —ÐÅø² @  ýœVÃ?d @—ÐG–ïl @  ýWÃ?d €—лñ J @  ýžXÃ?d À—Ð9`·” @  ýŸYÃ?d ˜Ð d @  ý ZÃ?d @˜Ðõ‡Ú @  ý¡[Ã?d €˜Ðë‚+Û @  ý¢\Ã?d À˜Ði< @  ý£]Ã?d ™Ðü¦§ @  ý¤^Ã?d @™ÐŒm±y @  ý¥_Ã?d €™Ðˆí¥o @  ý¦`Ã?d À™Ð |²± @  ý§aÃ?d šÐ+d ­ @  ý¨bÃ?d @šÐ©õ·s @  ý©cÃ?d €šÐÍ‚r @  ýªdÃ?d ÀšÐO ¬ @  ý«eÃ?d ›Ð(ü– @  ý¬fÃ?d @›ÐªmÐ @  ý­gÃ?d €›ÐV Îö @  ý®hÃ?d À›ÐÔ›Ù( @  ý¯iÃ?d œÐÜ(¦ @  ý°jÃ?d @œÐ^¹±Ä @  ý±kÃ?d €œÐ:ÎÅ @  ý²lÃ?d ÀœÐ¸_  @  ý³mÃ?d Ðß°¹ @  ý´nÃ?d @Ð]!‡g @  ýµoÃ?d €ÐĪ­ @  ý¶pÃ?d ÀÐF‡½s @  ý·qÃ?d žÐgŸ¯o @  ý¸rÃ?d @žÐ帱 @  ý¹sÃ?d €žÐy° @  ýºtÃ?d ÀžÐèn @  ý»uÃ?d ŸÐd™Ì @  ý¼vÃ?d @ŸÐæ–Ž @  ý½wÃ?d €ŸÐñÁ4 @  ý¾xÃuРÐ?d ÀŸÐ˜`Öê @  ý¿yÃ?d  ÐG—¥“ @  ýÀzÃ?d X ÐŲM @  ýÁ{Ã?d ˜ Ð¡qL @  ýÂ|Ã?d Ø Ð#à ’ @  ýÃ}Ã?d ¡ÐD“0 @  ýÄ~Ã?d X¡ÐÆž„î @  ýÅÃ?d ˜¡Ð/ˆÑ{ @  ýÆ€Ã?d ءЭƥ @  ýÇÃ?d ¢ÐŒÔ¹ @  ýÈ‚Ã?d X¢ÐÃg @  ýɃÃ?d ˜¢Ðjçof @  ýÊ„Ã?d Ø¢Ðèvx¸ @  ýË…Ã?d £Ð™â @  ý̆Ã?d X£Ð õÄ @  ý͇Ã?d ˜£Ðñoºâ @  ýΈÃ?d Ø£Ðsþ­< @  ýωÃ?d ¤Ð{MÒ @  ýЊÃ?d X¤ÐùÜÅÐ @  ýÑ‹Ã?d ˜¤Ð«iÑ @  ýÒŒÃ?d ؤÐ:~ @  ýÓÃ?d ¥ÐxÕä­ @  ýÔŽÃ?d X¥ÐúDós @  ýÕÃ?d ˜¥ÐcsÞ¹ @  ýÖÃ?d Ø¥ÐáâÉg @  ýבÃ?d ¦ÐÀúÛ{ @  ýØ’Ã?d X¦ÐBkÌ¥ @  ýÙ“Ã?d ˜¦Ð&`¤ @  ýÚ”Ã?d ئФwz @  ýÛ•Ã?d §ÐÃbíØ @  ýÜ–Ã?d X§ÐAóú @  ýÝ—Ã?d ˜§Ð½”µ  @  ýÞ˜Ã?d اÐ?¢þ @  ýß™Ã?d ¨Ð …n @  ýàšÃ?d X¨Ð‰’° @  ýá›Ã?d ˜¨Ðíç>± @  ýâœÃ?d€ بЮ1Þo @  þÃ?d ©Ð(Ÿ ä @  þžÃ?d X©Ðª: @  þŸÃ?d ˜©ÐkÇôÁ @  þ Ã?d Ø©ÐéVã @  þ¡Ã?d ªÐü®y @  þ¢Ã?d XªÐ„m¹§ @  þ£Ã?d ˜ªÐ.¨JÜ @  þ¤Ã?d تЬ9] @  þ ¥Ã?d «ÐŸ @  þ>ÚÃ?d X¸Ðd»µà @  þ?ÛÃ?d ˜¸ÐÜÞYY @  þ@ÜÃ?d ظÐ^ON‡ @  þAÝÃ?d ¹Ðüé/È @  þBÞÃ?d X¹Ð~x8 @  þCßÃ?d ˜¹Ð¿±×í @  þDàÃ?d عÐ= À3 @  þEáÃ?d ºÐÒŠU @  þFâÃ?d XºÐPš‹ @  þGãÃ?d ˜ºÐúÞið @  þHäÃ?d غÐxO~. @  þIåÃ?d »ÐÚéa @  þJæÃ?d X»ÐXx¿ @  þKçÃ?d ˜»ÐaV¼t @  þLèÃ?d Ø»ÐãÇ«ª @  þMéÃ?d ¼Ðˆgµ @  þNêÃ?d X¼Ð ö¢Ü @  þOëÃ?d ˜¼Ð ’oG @  þPìÃ?d ؼÐx™ @  þQíÃ?d ½Ð-¥Ö @  þRîÃ?d X½Ð¯4 @  þSïÃ?d ˜½ÐóJØ/ @  þTðÃ?d ؽÐqÛÏñ @  þUñÃ?d ¾Ðžq‚— @  þVòÃ?d X¾Ðà•I @  þWóÃ?d ˜¾Ð¶%f2 @  þXôÃ?d ؾÐ4´qì @  þYõÃ?d ¿Ð–£ @  þZöÃ?d X¿Ðƒ} @  þ[÷Ã?d ˜¿Ð-­³¶ @uÐÀÐ  þ\øÃ?d ؿЯ<¤h @  þ]ùÃ?d 0Àй" @  þ^úÃ?d pÀÐ;³C @  þ_ûÃ?d °ÀÐ-Ñåh @  þ`üÃ?d ðÀЯ@ò¶ @  þaýÃ?d 0ÁÐ æ“ù @  þbþÃ?d pÁÐw„' @  þcÿÃ?d °ÁÐàF@Å @  þdÄ?d ðÁÐb×W @  þeÄ?d 0ÂÐ}} @  þfÄ?d pÂÐì £ @  þgÄ?d °ÂÐ¥)þØ @  þhÄ?d ðÂÐ'¸é @  þiÄ?d 0ÃÐ…ˆI @  þjÄ?d pÃП— @  þkÄ?d °ÃÐ>¡+\ @  þlÄ?d ðÃм0<‚ @  þm Ä?d 0ÄÐ×"* @  þn Ä?d pÄÐU5ô @  þo Ä?d °ÄÐReøo @  þp Ä?d ðÄÐÐôï± @  þq Ä?d 0ÅÐrRŽþ @  þrÄ?d pÅÐðÙ  @  þsÄ?d °ÅЬ½O @  þtÄ?d ðÅÐ.,XÙ @  þuÄ?d 0ÆÐÁ†¿ @  þvÄ?d pÆÐCa @  þwÄ?d °ÆÐéÒñ @  þxÄ?d ðÆÐkCæÄ @  þyÄ?d 0ÇÐÉ凋 @  þzÄ?d pÇÐKtU @  þ{Ä?d °ÇÐrZ$ž @  þ|Ä?d ðÇÐðË3@ @  þ}Ä?d 0ÈжÚRú @  þ~Ä?d pÈÐ4KE$ @  þÄ?d °ÈÐox™¬ @  þ€Ä?d ðÈÐíéŽr @  þÄ?d 0ÉÐOOï= @  þ‚Ä?d pÉÐÍÞøã @  þƒÄ?d °ÉÐ  @  þ„ Ä?d ðÉÐކÆ @  þ…!Ä?d 0ÊÐa,M  @  þ†"Ä?d pÊÐã½Z~ @  þ‡#Ä?d °ÊÐIx© @  þˆ$Ä?d ðÊÐËé¾Û @  þ‰%Ä?d 0ËÐiOß” @  þŠ&Ä?d pËÐëÞÈJ @  þ‹'Ä?d °ËÐÒð| @  þŒ(Ä?d ðËÐPak_ @  þ)Ä?d 0ÌÐ;Áu÷ @  þŽ*Ä?d pÌйPb) @  þ+Ä?d °Ìо4¯² @  þ,Ä?d ðÌÐ<¥¸l @  þ‘-Ä?d 0ÍОÙ# @  þ’.Ä?d pÍÐ’Îý @  þ“/Ä?d °ÍÐ@ìÚ @  þ”0Ä?d ðÍÐÂ} @  þ•1Ä?d 0ÎÐ-×Bb @  þ–2Ä?d pÎЯFU¼ @  þ—3Ä?d °ÎЃ¦Ç @  þ˜4Ä?d ðÎЇ± @  þ™5Ä?d 0ÏÐ%´ÐV @  þš6Ä?d pÏЧ%Lj @  þ›7Ä?d °ÏО sC @  þœ8Ä?d ðÏКd @  þ9Ä?d 0ÐÐЪ5ˆ @  þž:Ä?d pÐÐR;"V @  þŸ;Ä?d °ÐÐDYÈ} @  þ <Ä?d ðÐÐÆÈߣ @  þ¡=Ä?d 0ÑÐdn¾ì @  þ¢>Ä?d pÑÐæÿ©2 @  þ£?Ä?d °ÑÐ×fSØ @  þ¤@Ä?d ðÑÐU÷D @  þ¥AÄ?d 0Òк] ` @  þ¦BÄ?d pÒÐ8̾ @  þ§CÄ?d °ÒÐ’ íÅ @  þ¨DÄ?d ðÒИú @  þ©EÄ?d 0Óв>›T @  þªFÄ?d pÓÐ0¯ŒŠ @  þ«GÄ?d °ÓÐ 8A @  þ¬HÄ?d ðÓЋ/Ÿ @  þ­IÄ?d 0ÔÐà°17 @  þ®JÄ?d pÔÐb!&é @  þ¯KÄ?d °ÔÐeEër @  þ°LÄ?d ðÔÐçÔü¬ @  þ±MÄ?d 0ÕÐErã @  þ²NÄ?d pÕÐÇãŠ= @  þ³OÄ?d °ÕЛ\ @  þ´PÄ?d ðÕÐ KÄ @  þµQÄ?d 0ÖÐö¦¢ @  þ¶RÄ?d pÖÐt7| @  þ·SÄ?d °ÖÐÞòâ @  þ¸TÄ?d ðÖÐ\cõÙ @  þ¹UÄ?d 0×ÐþÅ”– @  þºVÄ?d p×Ð|TƒH @  þ»WÄ?d °×ÐEz7ƒ @  þ¼XÄ?d ð×ÐÇë ] @  þ½YÄ?d 0ØÐúAç @  þ¾ZÄ?d pØÐkV9 @  þ¿[Ä?d °ØÐ»º€ @  þÀ\Ä?d ðØÐ9Ÿ­^ @  þÁ]Ä?d 0ÙЛ9Ì @  þÂ^Ä?d pÙШÛÏ @  þÃ_Ä?d °ÙÐØa44 @  þÄ`Ä?d ðÙÐZð#ê @  þÅaÄ?d 0ÚеZnŒ @  þÆbÄ?d pÚÐ7ËyR @  þÇcÄ?d °ÚЊ) @  þÈdÄ?d ðÚП÷ @  þÉeÄ?d 0Ûн9ü¸ @  þÊfÄ?d pÛÐ?¨ëf @  þËgÄ?d °ÛІ_­ @  þÌhÄ?d ðÛЄHs @  þÍiÄ?d 0ÜÐï·VÛ @  þÎjÄ?d pÜÐm&A @  þÏkÄ?d °ÜÐjBŒž @  þÐlÄ?d ðÜÐèÓ›@ @  þÑmÄ?d 0ÝÐJuú @  þÒnÄ?d pÝÐÈäíÑ @  þÓoÄ?d °ÝДš;ö @  þÔpÄ?d ðÝÐ ,( @  þÕqÄ?d 0ÞÐù¡aN @  þÖrÄ?d pÞÐ{0v @  þ×sÄ?d °ÞÐÑõ…ë @  þØtÄ?d ðÞÐSd’5 @  þÙuÄ?d 0ßÐñÂóz @  þÚvÄ?d pßÐsSä¤ @  þÛwÄ?d uÐàÐ/°ßÐJ}Po @  þÜxÄ?d ðßÐ E d @  þÝyÄ?d HàÐa5 @  þÞzÄ?d ˆàÐAúË @  þß{Ä?d ÈàÐõüîÀ @  þà|Ä?d áÐ%´b( @  þá}Ä?d HáÐÕ˘Q @  þâ~Ä?d€ ˆáÐý†  @  ÿÄ?d ÈáÐî‡ux @  ÿ€Ä?d âÐsÃÕ¹ @  ÿÄ?d HâÐFõÔ- @  ÿ‚Ä?d ˆâÐfÖÓ @  ÿƒÄ?d ÈâРoò @  ÿ„Ä?d ãÐp[ã @  ÿ…Ä?d HãÐN–F @  ÿ†Ä?d ˆãÐncDç @  ÿ ‡Ä?d ÈãÐ0`á @  ÿ ˆÄ?d äÐ).íî @  ÿ ‰Ä?d HäÐìz @  ÿ ŠÄ?d ˆäÐ<íî„ @  ÿ ‹Ä?d ÈäÐúþW¥ @  ÿŒÄ?d åÐ*¶ÛM @  ÿÄ?d HåйÚ@® @  ÿŽÄ?d ˆåЙ/BP @  ÿÄ?d ÈåТ|zº @  ÿÄ?d æÐ?8Ú{ @  ÿ‘Ä?d HæÐ Ûï @  ÿ’Ä?d ˆæÐ*ûÙ @  ÿ“Ä?d ÈæÐìè`0 @  ÿ”Ä?d çÐ< ìØ @  ÿ•Ä?d HçÐmIÛ @  ÿ–Ä?d ˆçÐ"˜K% @  ÿ—Ä?d ÈçÐ|›# @  ÿ˜Ä?d èÐHd> @  ÿ™Ä?d HèÐ}Rœª @  ÿšÄ?d ˆèÐ]§žT @  ÿ›Ä?d ÈèЛ´'u @  ÿœÄ?d éÐKü« @  ÿÄ?d HéÐÉ–Î @  ÿ žÄ?d ˆéÐéc0 @  ÿ!ŸÄ?d ÈéÐO‡ @  ÿ" Ä?d êÐÒôÇ @  ÿ#¡Ä?d HêÐçõµS @  ÿ$¢Ä?d ˆêÐÇ·­ @  ÿ%£Ä?d ÈêÐŒ @  ÿ&¤Ä?d ëÐÑ[‚d @  ÿ'¥Ä?d HëÐï–'g @  ÿ(¦Ä?d ˆëÐÏc%™ @  ÿ)§Ä?d ÈëБ`Ÿ @  ÿ*¨Ä?d ìЈ.Œ @  ÿ+©Ä?d Hìн @  ÿ,ªÄ?d ˆìÐíú @  ÿ-«Ä?d ÈìÐ[þ6Û @  ÿ.¬Ä?d íЋ¶º3 @  ÿ/­Ä?d HíÐÚ!Ð @  ÿ0®Ä?d ˆíÐ8/#. @  ÿ1¯Ä?d ÈíÐ|Ä @  ÿ2°Ä?d îО8» @  ÿ3±Ä?d HîЫº‘ @  ÿ4²Ä?d ˆîЋû¸o @  ÿ5³Ä?d ÈîÐMèN @  ÿ6´Ä?d ïР¦ @  ÿ7µÄ?d HïУm(¥ @  ÿ8¶Ä?d ˆïЃ˜*[ @  ÿ9·Ä?d ÈïÐÝ›p] @  ÿ:¸Ä?d ðÐcEÌï @  ÿ;¹Ä?d HðÐVsÍ{ @  ÿ<ºÄ?d ˆðÐv†Ï… @  ÿ=»Ä?d Èðа•v¤ @  ÿ>¼Ä?d ñÐ`ÝúL @  ÿ?½Ä?d HñÐL°@ @  ÿ@¾Ä?d ˆñÐlEBs @  ÿA¿Ä?d ÈñÐ:ñVT @  ÿBÀÄ?d òЧµö• @  ÿCÁÄ?d HòÐ’ƒ÷ @  ÿDÂÄ?d ˆòвvõÿ @  ÿEÃÄ?d ÈòÐteLÞ @  ÿFÄÄ?d óФ-À6 @  ÿGÅÄ?d HóКàe5 @  ÿHÆÄ?d ˆóкgË @  ÿIÇÄ?d ÈóÐä=Í @  ÿJÈÄ?d ôÐýXΠ@  ÿKÉÄ?d HôÐÈnÏV @  ÿLÊÄ?d ˆôÐè›Í¨ @  ÿMËÄ?d ÈôÐ.ˆt‰ @  ÿNÌÄ?d õÐþÀøa @  ÿOÍÄ?d HõÐm¬c‚ @  ÿPÎÄ?d ˆõÐMYa| @  ÿQÏÄ?d ÈõÐv Y– @  ÿRÐÄ?d öÐëNùW @  ÿSÑÄ?d HöÐÞxøÃ @  ÿTÒÄ?d ˆöÐþú= @  ÿUÓÄ?d ÈöÐ8žC @  ÿVÔÄ?d ÷ÐèÖÏô @  ÿWÕÄ?d H÷ÐÖj÷ @  ÿXÖÄ?d ˆ÷Ðöîh  @  ÿY×Ä?d È÷Шí2 @  ÿZØÄ?d øÐœ¾ @  ÿ[ÙÄ?d HøÐ©$¿† @  ÿ\ÚÄ?d ˆøÐ‰Ñ½x @  ÿ]ÛÄ?d ÈøÐOÂY @  ÿ^ÜÄ?d ùÐŸŠˆ± @  ÿ_ÝÄ?d HùÐà4â @  ÿ`ÞÄ?d ˆùÐ=6 @  ÿaßÄ?d ÈùЛñ7* @  ÿbàÄ?d úе—ë @  ÿcáÄ?d HúÐ3ƒ– @  ÿdâÄ?d ˆúÐv” @  ÿeãÄ?d ÈúÐÕe-  @  ÿfäÄ?d ûÐ-¡H @  ÿgåÄ?d HûÐ;àK @  ÿhæÄ?d ˆûе @  ÿiçÄ?d ÈûÐE\³ @  ÿjèÄ?d üÐ\X¯¼ @  ÿkéÄ?d HüÐin®( @  ÿlêÄ?d ˆüÐI›¬Ö @  ÿmëÄ?d ÈüЈ÷ @  ÿnìÄ?d ýÐ_À™ @  ÿoíÄ?d HýÐ̬ü @  ÿpîÄ?d ˆýÐìY @  ÿqïÄ?d ÈýÐ× 8è @  ÿrðÄ?d þÐJN˜) @  ÿsñÄ?d HþÐx™½ @  ÿtòÄ?d ˆþÐ_›C @  ÿuóÄ?d ÈþЙž"b @  ÿvôÄ?d ÿÐI֮Р@  ÿwõÄ?d HÿÐw ‰ @  ÿxöÄ?d ˆÿÐWî w @  ÿyuÐÑ÷Ä?d ÈÿÐ íSq @  ÿzøÄ?d ÑFY{€ @  ÿ{ùÄ?d `Ñsoz @  ÿ|úÄ?d  ÑSšxê @  ÿ}ûÄ?d àÑ•‰ÁË @  ÿ~üÄ?d ÑEÁM# @  ÿýÄ?d `ÑŠúÇÓ @  ÿ€þÄ?d  ÑªÅ- @  ÿÿÄ?d àÑžД @  ÿ‚Å?d Ñ^pU @  ÿƒÅ?d `Ñ6hqÁ @  ÿ„Å?d  Ñs? @  ÿ…Å?d àÑÐŽÊ @  ÿ†Å?d ÑÆFö @  ÿ‡Å?d `Ñ> ãõ @  ÿˆÅ?d  Ñþá  @  ÿ‰Å?d àÑ@ý»  @  ÿŠÅ?d ÑY³H @  ÿ‹ Å?d `Ñl…I– @  ÿŒ Å?d  ÑLpKh @  ÿ Å?d àÑŠcòI @  ÿŽ Å?d ÑZ+~¡ @  ÿ Å?d `ÑÉGåB @  ÿÅ?d  Ñé²ç¼ @  ÿ‘Å?d àÑÒáßV @  ÿ’Å?d ÑO¥— @  ÿ“Å?d `Ñz“~ @  ÿ”Å?d  ÑZf|ý @  ÿ•Å?d àÑœuÅÜ @  ÿ–Å?d ÑL=I4 @  ÿ—Å?d `Ñrðì7 @  ÿ˜Å?d  ÑRîÉ @  ÿ™Å?d àÑ ´Ï @  ÿšÅ?d Ñ8ù8Ò @  ÿ›Å?d `Ñ Ï9F @  ÿœÅ?d  Ñ-:;¸ @  ÿÅ?d àÑë)‚™ @  ÿžÅ?d Ñ;aq @  ÿŸÅ?d ` ѹ ²" @  ÿ Å?d   Ñ™þ°Ü @  ÿ¡Å?d à Ñ?±ê @  ÿ¢ Å?d Ñ¢^+ @  ÿ£!Å?d ` Ñ—h¿ @  ÿ¤"Å?d   Ñ·A @  ÿ¥#Å?d à ÑqŽ«` @  ÿ¦$Å?d Ñ¡Æ'ˆ @  ÿ§%Å?d ` ÑŸ ‚‹ @  ÿ¨&Å?d   Ñ¿þ€u @  ÿ©'Å?d à ÑáýÚs @  ÿª(Å?d Ñø³)| @  ÿ«)Å?d ` ÑÍ…(è @  ÿ¬*Å?d   Ñíp* @  ÿ­+Å?d à Ñ+c“7 @  ÿ®,Å?d Ñû+ß @  ÿ¯-Å?d ` ÑhG„< @  ÿ°.Å?d   ÑH²†Â @  ÿ±/Å?d à Ñsá¾( @  ÿ²0Å?d Ñî¥é @  ÿ³1Å?d `ÑÛ“} @  ÿ´2Å?d  Ñûfƒ @  ÿµ3Å?d àÑ=u¤¢ @  ÿ¶4Å?d Ñí=(J @  ÿ·5Å?d `ÑÓðI @  ÿ¸6Å?d  Ñó· @  ÿ¹7Å?d àÑ­Õ± @  ÿº8Å?d ÑØi @  ÿ»9Å?d `Ñ&îh— @  ÿ¼:Å?d  Ñji @  ÿ½;Å?d àÑÀÓH @  ÿ¾<Å?d Ñ@_  @  ÿ¿=Å?d `Ñ<-åa @  ÿÀ>Å?d  ÑØçŸ @  ÿÁ?Å?d àÑJló¸ @  ÿÂ@Å?d Ñ×(Sy @  ÿÃAÅ?d `ÑâRí @  ÿÄBÅ?d  ÑÂëP @  ÿÅCÅ?d àÑøé2 @  ÿÆDÅ?d ÑÔ°eÚ @  ÿÇEÅ?d `Ñê}ÀÙ @  ÿÈFÅ?d  ÑʈÂ' @  ÿÉGÅ?d àÑ”‹˜! @  ÿÊHÅ?d ÑÅk. @  ÿËIÅ?d `Ѹójº @  ÿÌJÅ?d  Ñ˜hD @  ÿÍKÅ?d àÑ^Ñe @  ÿÎLÅ?d ÑŽ]] @  ÿÏMÅ?d `Ñ1Æn @  ÿÐNÅ?d  Ñ=ÄÄ @  ÿÑOÅ?d àÑ—üz @  ÿÒPÅ?d Ñ›Ó\» @  ÿÓQÅ?d `Ñ®å]/ @  ÿÔRÅ?d  ÑŽ_Ñ @  ÿÕSÅ?d àÑHæð @  ÿÖTÅ?d јKj @  ÿ×UÅ?d `Ѧ†Ï @  ÿØVÅ?d  Ñ†sÍå @  ÿÙWÅ?d àÑØp—ã @  ÿÚXÅ?d Ñìþ @  ÿÛYÅ?d `ÑÙ¹j @  ÿÜZÅ?d  ÑùL” @  ÿÝ[Å?d àÑ?_¡µ @  ÿÞ\Å?d Ñï-] @  ÿß]Å?d `Ñm}‘ @  ÿà^Å?d  ÑMˆ“ð @  ÿá_Å?d àÑël’Æ @  ÿâ`Å?d€ Ñõ2c0 @  aÅ?d `Ñ!E* @  bÅ?d  Ñ°(s @  cÅ?d àÑêj¿ @  dÅ?d ÑÒ¢æW @  eÅ?d `Ñ"Ý. @  fÅ?d  Ñ(Ð @  gÅ?d àÑ’™¬ @  hÅ?d Ñ‹×è£ @   iÅ?d `Ñ{¨Ú @   jÅ?d  Ñ[]$ @   kÅ?d àÑXRè @   lÅ?d шOÞ @   mÅ?d `Ñx0$y @  nÅ?d  ÑXÅ&‡ @  oÅ?d àÑ…÷ @  pÅ?d ÑÁß6 @  qÅ?d `Ñm¾%O @  rÅ?d  ÑMK'± @  sÅ?d àÑNe} @  tÅ?d ÑžYé• @  uÅ?d `Ñn&ì @  vÅ?d  ÑNÓuÐ Ñ @  wÅ?d àÑÞbn @  xÅ?d 8 ѯiÊ @  yÅ?d x Ñ_0q @  zÅ?d ¸ Ñã2 @  {Å?d ø Ñ|¹pC @  |Å?d 8!Ѭñü« @  }Å?d x!Ñ\ŽÒ @  ~Å?d ¸!Ñ|{, @  Å?d ø!ÑE³ @   €Å?d 8"ÑØX¢r @  !Å?d x"Ñ('X  @  "‚Å?d ¸"ÑÒZõ @  #ƒÅ?d ø"Ñ ˆ9 @  $„Å?d 8#ÑÛÀ”Ñ @  %…Å?d x#Ñ+¿n¨ @  &†Å?d ¸#Ñ JlV @  '‡Å?d ø#Ñ›ûi* @  (ˆÅ?d 8$Ñ‚µš% @  )‰Å?d x$ÑrÊ`\ @  *ŠÅ?d ¸$ÑR?b¢ @  +‹Å?d ø$ÑQe n @  ,ŒÅ?d 8%Ñ-¬† @  -Å?d x%ÑqRVÿ @  .ŽÅ?d ¸%ÑQ§T @  /Å?d ø%Ñ ç q @  0Å?d 8&Ñ”£­° @  1‘Å?d x&ÑdÜWÉ @  2’Å?d ¸&ÑD)U7 @  3“Å?d ø&ÑGsû @  4”Å?d 8'Ñ—;› @  5•Å?d x'ÑgDaj @  6–Å?d ¸'ÑG±c” @  7—Å?d ø'Ñ×fè @  8˜Å?d 8(Ñãÿêõ @  9™Å?d x(Ñ€Œ @  :šÅ?d ¸(Ñ3ur @  ;›Å?d ø(Ñ0/P¾ @  <œÅ?d 8)ÑàgÜV @  =Å?d x)Ñ&/ @  >žÅ?d ¸)Ñ0í$Ñ @  ?ŸÅ?d ø)ÑJe_ @  @ Å?d 8*Ñ×_Åž @  A¡Å?d x*Ñ' ?ç @  B¢Å?d ¸*ÑÕ= @  C£Å?d ø*ÑÕ @  D¤Å?d 8+ÑÔÇó= @  E¥Å?d x+Ñ$¸ D @  F¦Å?d ¸+ÑM º @  G§Å?d ø+Ñ”üÆ @  H¨Å?d 8,ѲýÉ @  I©Å?d x,Ñ}Ͱ @  JªÅ?d ¸,Ñ]8N @  K«Å?d ø,Ñ^bG‚ @  L¬Å?d 8-ÑŽ*Ëj @  M­Å?d x-Ñ~U1 @  N®Å?d ¸-Ñ^ 3í @  O¯Å?d ø-Ñàj @  P°Å?d 8.Ñ›¤Ê\ @  Q±Å?d x.ÑkÛ0% @  R²Å?d ¸.ÑK.2Û @  S³Å?d ø.ÑHtp @  T´Å?d 8/ј<üÿ @  UµÅ?d x/ÑhC† @  V¶Å?d ¸/ÑH¶x @  W·Å?d ø/ÑØ @  X¸Å?d 80ÑfÙ½¶ @  Y¹Å?d x0Ñ–¦GÏ @  ZºÅ?d ¸0ѶSE1 @  [»Å?d ø0ѵ ý @  \¼Å?d 81ÑeA‹ @  ]½Å?d x1Ñ•>ql @  ^¾Å?d ¸1ѵËs’ @  _¿Å?d ø1Ñ‘j!Ÿ @  `ÀÅ?d 82Ñ .^ @  aÁÅ?d x2ÑüQ{' @  bÂÅ?d ¸2ÑܤyÙ @  cÃÅ?d ø2Ñßþ; @  dÄÅ?d 83Ѷ·ý @  eÅÅ?d x3ÑÿÉM„ @  fÆÅ?d ¸3ÑßѬ„ÙA @  ‘ñÅ?d x>Ñ\û#8 @  ’òÅ?d ¸>Ñ|!Æ @  “óÅ?d ø>ÑTc  @  ”ôÅ?d 8?ѯïâ @  •õÅ?d x?Ñ_c› @  –öÅ?duÐ@Ñ7 ¸?Ñ–e @  —÷Å?d ø?Ñï' @  ˜øÅ?d P@Ñ,‹¨% @  ™ùÅ?d @Ñ~G| @  šúÅ?d Ð@ÑüP¢ @  ›ûÅ?d AÑ­‚‰X @  œüÅ?d PAÑ/ž† @  ýÅ?d AÑ}qß @  žþÅ?d ÐAÑÿ™f @  ŸÿÅ?d BÑn·¨ @   Æ?d PBÑ–ÿ v @  ¡Æ?d BÑÄäO/ @  ¢Æ?d ÐBÑFuXñ @  £Æ?d CÑö  @  ¤Æ?d PCÑ•g–Õ @  ¥Æ?d CÑÇ|yŒ @  ¦Æ?d ÐCÑEínR @  §Æ?d DÑNƒÿ @  ¨Æ?d PDÑ̘! @  © Æ?d DÑž wx @  ª Æ?d ÐDј`¦ @  « Æ?d EÑM¹\ @  ¬ Æ?d PEÑÏŠ®‚ @  ­ Æ?d EÑ‘AÛ @  ®Æ?d ÐEÑV @  ¯Æ?d FÑX•¸j @  °Æ?d PFÑÚ¯´ @  ±Æ?d Fш@í @  ²Æ?d ÐFÑ ŽW3 @  ³Æ?d GÑ[ ŽÉ @  ´Æ?d PGÑÙœ™ @  µÆ?d GÑ‹‡vN @  ¶Æ?d ÐGÑ a @  ·Æ?d HÑ/Éÿ/ @  ¸Æ?d PHÑ­Xèñ @  ¹Æ?d HÑÿC¨ @  ºÆ?d ÐHÑ}Òv @  »Æ?d IÑ,QÉŒ @  ¼Æ?d PIÑ®ÀÞR @  ½Æ?d IÑüÛ1  @  ¾Æ?d ÐIÑ~J&Õ @  ¿Æ?d JÑiÐD @  À Æ?d PJÑ™øÇš @  Á!Æ?d JÑËã(à @  Â"Æ?d ÐJÑIr? @  Ã#Æ?d KÑñæç @  Ä$Æ?d PKÑš`ñ9 @  Å%Æ?d KÑÈ{` @  Æ&Æ?d ÐKÑJê ¾ @  Ç'Æ?d LÑA„è @  È(Æ?d PLÑÃÿÍ @  É)Æ?d LÑ‘” @  Ê*Æ?d ÐLÑŸJ @  Ë+Æ?d MÑBÞ° @  Ì,Æ?d PMÑÀÉn @  Í-Æ?d MÑ’–&7 @  Î.Æ?d ÐMÑ1é @  Ï/Æ?d NÑW’߆ @  Ð0Æ?d PNÑÕÈX @  Ñ1Æ?d Nч' @  Ò2Æ?d ÐNщ0ß @  Ó3Æ?d OÑT é% @  Ô4Æ?d POÑÖ›þû @  Õ5Æ?d OÑ„€¢ @  Ö6Æ?d ÐOÑ| @  ×7Æ?d PѪï¨l @  Ø8Æ?d PPÑ(~¿² @  Ù9Æ?d PÑzePë @  Ú:Æ?d ÐPÑøôG5 @  Û;Æ?d QÑ©wžÏ @  Ü<Æ?d PQÑ+æ‰ @  Ý=Æ?d QÑyýfH @  Þ>Æ?d ÐQÑûlq– @  ß?Æ?d RÑÀ”„ @  à@Æ?d PRÑB‰ƒZ @  áAÆ?d RÑ’l @  âBÆ?d€ ÐRÑæÀg{ @  CÆ?d SÑVö¨ @  DÆ?d PSÑÔ“áv @  EÆ?d SÑCÁõ @  FÆ?d ÐSÑÁPâ @  GÆ?d TÑŒ\Ë @  HÆ?d PTцK @  IÆ?d TÑ´û6 @  JÆ?d ÐTј%ìè @   KÆ?d UÑ ïÎÿ @   LÆ?d PUÑŽ~Ù! @   MÆ?d UÑ,Í• @   NÆ?d ÐUÑ›½ÚK @   OÆ?d VÑ¿;U¾ @  PÆ?d PVÑ=ªB` @  QÆ?d VÑ ¢Ì£ @  RÆ?d ÐVÑŽ3Û} @  SÆ?d WÑùùj @  TÆ?d PWјhî´ @  UÆ?d WÑ:ú @  VÆ?d ÐWÑ«íÞ @  WÆ?d XÑeÆ, @  XÆ?d PXÑçW;Å @  YÆ?d XÑ{þ‹æ @  ZÆ?d ÐXÑùoœ8 @  [Æ?d YÑm¥¾/ @  \Æ?d PYÑï4©ñ @  ]Æ?d YÑxf½E @  ^Æ?d ÐYÑú÷ª› @  _Æ?d ZÑCƲ @  `Æ?d PZÑÁW l @  aÆ?d ZÑáY¢ @   bÆ?d ÐZÑcȵÁ @  !cÆ?d [Ñ÷—Ö @  "dÆ?d P[Ñu“€ @  #eÆ?d [ÑâÁ”¼ @  $fÆ?d Ð[Ñ`Pƒb @  %gÆ?d \Ñ¥Œ=µ @  &hÆ?d P\Ñ'*k @  'iÆ?d \Ñ»´šH @  (jÆ?d Ð\Ñ9%– @  )kÆ?d ]Ñ­ï¯ @  *lÆ?d P]Ñ/~¸_ @  +mÆ?d ]Ѹ,¬ë @  ,nÆ?d Ð]Ñ:½»5 @  -oÆ?d ^Ñ;4À @  .pÆ?d P^Ñœª# @  /qÆ?d ^Ñ­¢­Ý @  0rÆ?d Ð^Ñ/3º @  1sÆ?d _Ñ»ù˜ @  2tÆ?d P_Ñ9hÊ @  3uÆ?d _Ñ®:›~ @  uÐ`Ñ4vÆ?d Ð_Ñ×Å·  @  5 wÆ?d (`ѵ¯Oà @  6 xÆ?d h`Ñ7>X> @  7 yÆ?d ¨`Ñ«—è @  8 zÆ?d è`Ñ)ÿà @  9 {Æ?d (aѽÌÝÔ @  : |Æ?d haÑ?]Ê  @  ; }Æ?d ¨aѨ޾ @  < ~Æ?d èaÑ*žÉ` @  = Æ?d (bÑ~9>Ê @  > €Æ?d hbÑü¨) @  ? Æ?d ¨bÑr¡†õ @  @ ‚Æ?d èbÑð0‘+ @  A ƒÆ?d (cÑdú³< @  B „Æ?d hcÑæk¤â @  C …Æ?d ¨cÑq9°V @  D †Æ?d ècÑ󨧈 @  E ‡Æ?d (dÑ6t_ @  F ˆÆ?d hdÑ´å @  G ‰Æ?d ¨dÑ(L¾¢ @  H ŠÆ?d èdѪݩ| @  I ‹Æ?d (eÑ>‹k @  J ŒÆ?d heѼ†œµ @  K Æ?d ¨eÑ+Ôˆ @  L ŽÆ?d èeÑ©EŸß @  M Æ?d (fÑÃ* @  N Æ?d hfÑRô @  O ‘Æ?d ¨fÑ>Z‰7 @  P ’Æ?d èfѼ˞é @  Q “Æ?d (gÑ(¼þ @  R ”Æ?d hgѪ«  @  S •Æ?d ¨gÑ=¿” @  T –Æ?d ègÑ¿S¨J @  U —Æ?d (hÑW>i @  V ˜Æ?d hhÑÕ¯~Q @  W ™Æ?d ¨hÑIÎr @  X šÆ?d èhÑË—Ù¬ @  Y ›Æ?d (iÑ_]û» @  Z œÆ?d hiÑÝÌìe @  [ Æ?d ¨iÑJžøÑ @  \ žÆ?d èiÑÈï @  ] ŸÆ?d (jÑq>Y& @  ^  Æ?d hjÑó¯Nø @  _ ¡Æ?d ¨jÑÓ¡ç‹ @  ` ¢Æ?d èjÑQ0ðU @  a £Æ?d (kÑÅúÒB @  b ¤Æ?d hkÑGkÅœ @  c ¥Æ?d ¨kÑÐ9Ñ( @  d ¦Æ?d èkÑR¨Æö @  e §Æ?d (lÑ—tx! @  f ¨Æ?d hlÑåoÿ @  g ©Æ?d ¨lщLßÜ @  h ªÆ?d èlÑ ÝÈ @  i «Æ?d (mÑŸê @  j ¬Æ?d hmцýË @  k ­Æ?d ¨mÑŠÔé @  l ®Æ?d èmÑEþ¡ @  m ¯Æ?d (nÑ,ÃqT @  n °Æ?d hnÑ®RfŠ @  o ±Æ?d ¨nÑŸZèI @  p ²Æ?d ènÑËÿ— @  q ³Æ?d (oщ݀ @  r ´Æ?d hoÑ Ê^ @  s µÆ?d ¨oÑœÂÞê @  t ¶Æ?d èoÑSÉ4 @  u ·Æ?d (pÑ|8^ @  v ¸Æ?d hpÑþŽ/€ @  w ¹Æ?d ¨pÑb'Ÿ£ @  x ºÆ?d èpÑඈ} @  y »Æ?d (qÑt|ªj @  z ¼Æ?d hqÑöí½´ @  { ½Æ?d ¨qÑa¿© @  | ¾Æ?d èqÑã.¾Þ @  } ¿Æ?d (rѪOæ @  ~ ÀÆ?d hrÑ(Þ 8 @   ÁÆ?d ¨rÑE•è @  € ÂÆ?d èrÑÇ‚6 @   ÃÆ?d (sÑSÚ ! @  ‚ ÄÆ?d hsÑÑK·ÿ @  ƒ ÅÆ?d ¨sÑF£K @  „ ÆÆ?d èsÑĈ´• @  … ÇÆ?d (tÑT B @  † ÈÆ?d htуŜ @  ‡ ÉÆ?d ¨tÑl­¿ @  ˆ ÊÆ?d ètÑýºa @  ‰ ËÆ?d (uÑ 7˜v @  Š ÌÆ?d huÑ‹¦¨ @  ‹ ÍÆ?d ¨uÑô› @  Œ ÎÆ?d èuÑžeŒÂ @   ÏÆ?d (vѺã7 @  Ž ÐÆ?d hvÑ8ré @   ÑÆ?d ¨vÑ zš* @   ÒÆ?d èvÑ‹ëô @  ‘ ÓÆ?d (wÑ!¯ã @  ’ ÔÆ?d hwѰ¸= @  “ ÕÆ?d ¨wÑ ⬉ @  ” ÖÆ?d èwшs»W @  • ׯ?d (xÑ`z’ @  – ØÆ?d hxÑâmL @  — ÙÆ?d ¨xÑ~&Ýo @  ˜ ÚÆ?d èxÑÙñ± @  ™ÛÆ?d (yѓӦ @  šÜÆ?d hyÑ‚Äx @  ›ÝÆ?d ¨yцÐÐÌ @  œÞÆ?d èyÑAÇ @  ߯?d (zѽpq; @  žàÆ?d hzÑ?áfå @  ŸáÆ?d ¨zÑïÏ– @   âÆ?d èzÑ~ØH @  ¡ãÆ?d ({Ñ ´ú_ @  ¢äÆ?d h{Ñ‹%í @  £åÆ?d ¨{Ñwù5 @  ¤æÆ?d è{Ñžæîë @  ¥çÆ?d (|Ñ[:P< @  ¦èÆ?d h|ÑÙ«Gâ @  §éÆ?d ¨|ÑE÷Á @  ¨êÆ?d è|ÑÇ“à @  ©ëÆ?d (}ÑSY @  ªìÆ?d h}ÑÑÈÕÖ @  «íÆ?d ¨}ÑFšÁb @  ¬îÆ?d è}ÑÄ Ö¼ @  ­ïÆ?d (~ÑàYI @  ®ðÆ?d h~ÑbN— @  ¯ñÆ?d ¨~ÑSÀT @  °òÆ?d è~Ñх׊ @  ±óÆ?d (ÑEOõ @  ²ôÆ?d hÑÇÞâC @  ³õÆ?d ¨ÑuЀÑ'PŒö÷ @  ´öÆ?d èÑÒá) @  µ÷Æ?d @€Ñ`1N… @  ¶øÆ?d €€Ñ@ÄL{ @  ·ùÆ?d À€Ñ~ éx @  ¸úÆ?d Ñ®Ae @  ¹ûÆ?d @ÑhRܱ @  ºüÆ?d €ÑH§ÞO @  »ýÆ?d ÀÑ}‘ßÛ @  ¼þÆ?d ‚ÑàÕ @  ½ÿÆ?d @‚ÑÔÀj£ @  ¾Ç?d €‚Ñô5h] @  ¿Ç?d À‚ÑØXÒœ @  ÀÇ?d ƒÑ^t @  ÁÇ?d @ƒÑÎçU @  ÂÇ?d €ƒÑîöå« @  ÃÇ?d ÀƒÑÛÀä? @  ÄÇ?d „ÑÂŽ0 @  ÅÇ?d @„ÑœM6 @  ÆÇ?d €„ѼxOÈ @  Ç Ç?d À„Ñ‚µêË @  È Ç?d …ÑRýf# @  É Ç?d @…Ñ”îß @  Ê Ç?d €…Ñ´Ýü @  Ë Ç?d À…Ñ-Üh @  ÌÇ?d †Ñi|© @  ÍÇ?d @†Ñ':DC @  ÎÇ?d €†ÑÏF½ @  ÏÇ?d À†Ñ”£Ý^ @  ÐÇ?d ‡ÑDëQ¶ @  ÑÇ?d @‡Ñ‚øè— @  ÒÇ?d €‡Ñ¢ êi @  ÓÇ?d À‡Ñ—;ëý @  ÔÇ?d ˆÑ£Ägà @  ÕÇ?d @ˆÑýÇ=æ @  ÖÇ?d €ˆÑÝ2? @  ×Ç?d ÀˆÑãÿš @  ØÇ?d ‰Ñ3·ó @  ÙÇ?d @‰Ñõ¤¯Ò @  ÚÇ?d €‰ÑÕQ­, @  ÛÇ?d À‰Ñàg¬¸ @  ÜÇ?d ŠÑ}# y @  ÝÇ?d @ŠÑÛÇ O @  Þ Ç?d €ŠÑû2± @  ß!Ç?d ÀŠÑyX³â @  à"Ç?d ‹Ñ©?  @  á#Ç?d @‹Ño†+ @  â$Ç?d€ €‹ÑޱsÕ @  %Ç?d À‹ÑZÆ:h @  &Ç?d ŒÑCˆÉg @  'Ç?d @ŒÑØÂhŒ @  (Ç?d €ŒÑø7jr @  )Ç?d ÀŒÑH  @  *Ç?d ÑØã @  +Ç?d @ÑСú¸ @  ,Ç?d €ÑðTøF @   -Ç?d ÀÑ+? @   .Ç?d ŽÑo¢þ @   /Ç?d @ŽÑcuaù @   0Ç?d €ŽÑC€c @   1Ç?d ÀŽÑ³ÿ™~ @  2Ç?d Ñc·– @  3Ç?d @ÑÆ·Í- @  4Ç?d €ÑæBÏÓ @  5Ç?d ÀÑ=5ª @  6Ç?d Ѩ㉠@  7Ç?d @Ñ3©(ó @  8Ç?d €Ñ\*  @  9Ç?d ÀÑã#Ðt @  :Ç?d ‘Ñ3k\œ @  ;Ç?d @‘Ñ;ʺÇ @  <Ç?d €‘Ñ?¸9 @  =Ç?d À‘Ñë@B@ @  >Ç?d ’Ñvâ @  ?Ç?d @’Ñåù K @  @Ç?d €’ÑÅ µ @  AÇ?d À’Ñ5sõÌ @  BÇ?d “Ñå;y$ @  CÇ?d @“ÑQ=†/ @   DÇ?d €“ÑqÈ„Ñ @  !EÇ?d À“Ñ·~¨ @  "FÇ?d ”јù§ @  #GÇ?d @”ѳ,L @  $HÇ?d €”Ñ#F.² @  %IÇ?d À”ÑÓ9ÔË @  &JÇ?d •ÑqX# @  'KÇ?d @•Ñ оx @  (LÇ?d €•Ñ+%¼† @  )MÇ?d À•ÑÛZFÿ @  *NÇ?d –ÑFæ> @  +OÇ?d @–Ѹ%9 @  ,PÇ?d €–јñ'Ç @  -QÇ?d À–ÑhŽÝ¾ @  .RÇ?d —ѸÆQV @  /SÇ?d @—ÑƉí @  0TÇ?d €—Ñ=3‹ @  1UÇ?d À—ÑÍLqj @  2VÇ?d ˜Ñù³ýw @  3WÇ?d @˜Ñbù\œ @  4XÇ?d €˜ÑB ^b @  5YÇ?d À˜Ñ²s¤ @  6ZÇ?d ™Ñb;(ó @  7[Ç?d @™ÑjšÎ¨ @  8\Ç?d €™ÑJoÌV @  9]Ç?d À™Ñº6/ @  :^Ç?d šÑ'T–î @  ;_Ç?d @šÑDùl5 @  <`Ç?d €šÑd nË @  =aÇ?d ÀšÑ”s”² @  >bÇ?d ›ÑD;Z @  ?cÇ?d @›Ñ^:áà @  @dÇ?d €›Ñ~Ïã= @  AeÇ?d À›ÑްD @  BfÇ?d œÑ—þêK @  CgÇ?d @œÑ ´K  @  DhÇ?d €œÑ,AI^ @  EiÇ?d ÀœÑÜ>³' @  FjÇ?d Ñ v?Ï @  GkÇ?d @Ñ×Ù” @  HlÇ?d €Ñ$"Ûj @  ImÇ?d ÀÑÔ]! @  JnÇ?d žÑIÒ @  KoÇ?d @žÑ·BÕ @  LpÇ?d €žÑ—ö@+ @  MqÇ?d ÀžÑg‰ºR @  NrÇ?d ŸÑ·Á6º @  OsÇ?d @ŸÑÁî @  PtÇ?d €ŸÑ24ìÿ @  QuÇuРÑ?d ÀŸÑÂK† @  RvÇ?d  Ñqé/5 @  SwÇ?d X Ñ꣎Þ @  TxÇ?d ˜ ÑÊVŒ  @  UyÇ?d Ø Ñ:)vY @  VzÇ?d ¡Ñêaú± @  W{Ç?d X¡ÑâÀê @  X|Ç?d ˜¡ÑÂ5 @  Y}Ç?d Ø¡Ñ2Jäm @  Z~Ç?d ¢Ñ¯D¬ @  [Ç?d X¢Ñ!5ÿô @  \€Ç?d ˜¢ÑÀý  @  ]Ç?d Ø¢Ññ¿s @  ^‚Ç?d £Ñ!÷‹› @  _ƒÇ?d X£Ñ•ñt @  `„Ç?d ˜£Ñµvn @  a…Ç?d Ø£ÑE{Œ @  b†Ç?d ¤Ñ\5 @  c‡Ç?d X¤ÑÇÞó @  dˆÇ?d ˜¤ÑçŠÜ  @  e‰Ç?d ؤÑõ&t @  fŠÇ?d ¥Ñǽªœ @  g‹Ç?d X¥ÑÏLÇ @  hŒÇ?d ˜¥ÑïéN9 @  iÇ?d إі´@ @  jŽÇ?d ¦Ñ‚Ò @  kÇ?d X¦Ñ|È׆ @  lÇ?d ˜¦Ñ\=Õx @  m‘Ç?d ئѬB/ @  n’Ç?d §Ñ| £é @  o“Ç?d X§ÑÙ {R @  p”Ç?d ˜§Ñùÿy¬ @  q•Ç?d اÑ €ƒÕ @  r–Ç?d ¨Ñ=È @  s—Ç?d X¨Ñ¦5®# @  t˜Ç?d ˜¨Ñ†À¬Ý @  u™Ç?d بÑv¿V¤ @  všÇ?d ©Ñ¦÷ÚL @  w›Ç?d X©Ñ®V< @  xœÇ?d ˜©ÑŽ£>é @  yÇ?d Ø©Ñ~ÜÄ @  zžÇ?d ªÑã˜dQ @  {ŸÇ?d XªÑ€5žŠ @  | Ç?d ˜ªÑ Àœt @  }¡Ç?d تÑP¿f  @  ~¢Ç?d «Ñ€÷êå @  £Ç?d X«Ñy #M @  €¤Ç?d ˜«ÑYU!³ @  ¥Ç?d ثѩ*ÛÊ @  ‚¦Ç?d ¬Ñ°d(Å @  ƒ§Ç?d X¬Ñ+.‰. @  „¨Ç?d ˜¬Ñ Û‹Ð @  …©Ç?d جÑû¤q© @  †ªÇ?d ­Ñ+ìýA @  ‡«Ç?d X­Ñ#M @  ˆ¬Ç?d ˜­Ñ¸ä @  ‰­Ç?d Ø­ÑóÇã @  Š®Ç?d ®ÑnƒC\ @  ‹¯Ç?d X®Ñ™€[ @  Œ°Ç?d ˜®Ñ°l‚¥ @  ±Ç?d Ø®Ñ@xÜ @  Ž²Ç?d ¯Ñ[ô4 @  ³Ç?d X¯Ñ5[, @  ´Ç?d ˜¯Ñ®.q @  ‘µÇ?d دÑåÑÔ @  ’¶Ç?d °Ñ[hº @  “·Ç?d X°ÑÀEÉQ @  ”¸Ç?d ˜°Ñà°Ë¯ @  •¹Ç?d ذÑÏ1Ö @  –ºÇ?d ±ÑÀ‡½> @  —»Ç?d X±ÑÈ&[e @  ˜¼Ç?d ˜±ÑèÓY› @  ™½Ç?d رѬ£â @  š¾Ç?d ²Ñ…è# @  ›¿Ç?d X²Ñìé @  œÀÇ?d ˜²Ñ6àî @  ÁÇ?d زÑÆŸn @  žÂÇ?d ³Ñט† @  ŸÃÇ?d X³Ñ¢Ñg @   ÄÇ?d ˜³Ñ‚$es @  ¡ÅÇ?d سÑr[Ÿ  @  ¢ÆÇ?d ´Ñkl @  £ÇÇ?d X´Ñð_Íî @  ¤ÈÇ?d ˜´ÑЪÏ @  ¥ÉÇ?d Ø´Ñ Õ5i @  ¦ÊÇ?d µÑð¹ @  §ËÇ?d XµÑø<_Ú @  ¨ÌÇ?d ˜µÑØÉ]$ @  ©ÍÇ?d صÑ(¶§] @  ªÎÇ?d ¶Ñµòœ @  «ÏÇ?d X¶ÑKèÄ› @  ¬ÐÇ?d ˜¶ÑkÆe @  ­ÑÇ?d ضÑ›b< @  ®ÒÇ?d ·ÑK*°ô @  ¯ÓÇ?d X·Ñî*hO @  °ÔÇ?d ˜·ÑÎßj± @  ±ÕÇ?d Ø·Ñ> È @  ²ÖÇ?d ¸Ñ _Õ @  ³×Ç?d X¸Ñ‘½> @  ´ØÇ?d ˜¸Ñ±à¿À @  µÙÇ?d ظÑAŸE¹ @  ¶ÚÇ?d ¹Ñ‘×ÉQ @  ·ÛÇ?d X¹Ñ™v/  @  ¸ÜÇ?d ˜¹Ñ¹ƒ-ô @  ¹ÝÇ?d عÑIü× @  ºÞÇ?d ºÑÔ¸wL @  »ßÇ?d XºÑ·— @  ¼àÇ?d ˜ºÑ—ài @  ½áÇ?d غÑgŸu @  ¾âÇ?d »Ñ·×ùø @  ¿ãÇ?d X»Ñ­Öa @  ÀäÇ?d ˜»Ñ#Ÿ @  ÁåÇ?d Ø»Ñ}\øæ @  ÂæÇ?d ¼Ñd é @  ÃçÇ?d X¼ÑÿXª @  ÄèÇ?d ˜¼Ñß­¨ü @  ÅéÇ?d ؼÑ/ÒR… @  ÆêÇ?d ½ÑÿšÞm @  ÇëÇ?d X½Ñ÷;86 @  ÈìÇ?d ˜½Ñ×Î:È @  ÉíÇ?d ؽÑ'±À± @  ÊîÇ?d ¾Ñºõ`p @  ËïÇ?d X¾ÑDï£w @  ÌðÇ?d ˜¾Ñd¡‰ @  ÍñÇ?d ؾÑ”e[ð @  ÎòÇ?d ¿ÑD-× @  ÏóÇ?d X¿Ñá-£ @  ÐôÇ?d ˜¿ÑÁØ ] @uÐÀÑ  ÑõÇ?d Ø¿ÑL'„X @  Ò€öÇ?d 0ÀÑ(×Õ  @  Ó€÷Ç?d pÀѳtá @  Ô€øÇ?d °ÀÑ“hv @  Õ€ùÇ?d ðÀÑcŒf @  Ö€úÇ?d 0Áѳ_Ž @  ×€ûÇ?d pÁÑ»þæÕ @  Ø€üÇ?d °ÁÑ› ä+ @  Ù€ýÇ?d ðÁÑktR @  Ú€þÇ?d 0ÂÑö0¾“ @  Û€ÿÇ?d pÂÑâ_a( @  Ü€È?d °ÂѪcÖ @  Ý€È?d ðÂÑ2Õ™¯ @  Þ€È?d 0ÃÑâG @  ߀È?d pÃÑV›êL @  à€È?d °ÃÑvnè² @  á€È?d ðÃÑ†Ë @  â€È?d€ 0ÄÑëœýb @  €È?d pÄÑ‘—  @  €È?d °Äѱb^ @  € È?d ðÄÑ„TÊ @  € È?d 0ÅÑT›" @  € È?d pÅÑ’" @  € È?d °ÅѲú ý @  € È?d ðÅÑŒ7…þ @  €È?d 0ÆÑs%? @   €È?d pÆÑ* Õ @   €È?d °ÆÑ Õ+ @   €È?d ðÆÑ?ã¿ @   €È?d 0ÇÑï«’W @   €È?d pÇÑ)¸+v @  €È?d °ÇÑ M)ˆ @  €È?d ðÇÑš!²k @  €È?d 0ÈÑ®Þ>v @  €È?d pÈÑðÝdp @  €È?d °ÈÑÐ(fŽ @  €È?d ðÈÑåg @  €È?d 0ÉÑ5Vëò @  €È?d pÉÑóERÓ @  €È?d °ÉÑÓ°P- @  €È?d ðÉÑí}õ. @  €È?d 0ÊÑp9Uï @  €È?d pÊÑÖÝTÙ @  € È?d °ÊÑö(V' @  €!È?d ðÊÑÃW³ @  €"È?d 0ËÑVÛ[ @  €#È?d pËÑÕEbz @  €$È?d °ËÑõ°`„ @  €%È?d ðËÑwÚÜ× @   €&È?d 0ÌÑn”/Ø @  !€'È?d pÌÑ0—uÞ @  "€(È?d °ÌÑbw  @  #€)È?d ðÌÑ%Tv´ @  $€*È?d 0ÍÑõú\ @  %€+È?d pÍÑ3C} @  &€,È?d °ÍÑúAƒ @  '€-È?d ðÍÑ-7ä€ @  (€.È?d 0ÎѰsDA @  )€/È?d pÎÑ‹ |« @  *€0È?d °ÎÑ«Õ~U @  +€1È?d ðÎÑžãÁ @  ,€2È?d 0ÏÑN«ó) @  -€3È?d pÏш¸J @  .€4È?d °ÏѨMHö @  /€5È?d ðÏÑ;!Ó @  0€6È?d 0ÐÑ…ÿo§ @  1€7È?d pÐÑÛü5¡ @  2€8È?d °ÐÑû 7_ @  3€9È?d ðÐÑÎ?6Ë @  4€:È?d 0ÑÑwº# @  5€;È?d pÑÑØd @  6€<È?d °ÑÑø‘ü @  7€=È?d ðÑÑÆ\¤ÿ @  8€>È?d 0ÒÑ[> @  9€?È?d pÒÑ ¬ @  :€@È?d °ÒÑ-Yç @  ;€AÈ?d ðÒÑos @  <€BÈ?d 0ÓÑÈ'Ÿ› @  =€CÈ?d pÓÑ4&º @  >€DÈ?d °ÓÑ.Á$D @  ?€EÈ?d ðÓѬž… @  @€FÈ?d 0ÔÑâmŠ @  A€GÈ?d pÔÑEá7Œ @  B€HÈ?d °ÔÑe5r @  C€IÈ?d ðÔÑP"4æ @  D€JÈ?d 0ÕÑ€j¸ @  E€KÈ?d pÕÑFy/ @  F€LÈ?d °ÕÑfŒÑ @  G€MÈ?d ðÕÑXA¦Ò @  H€NÈ?d 0ÖÑÅ @  I€OÈ?d pÖÑþV>ù @  J€PÈ?d °ÖÑÞ£< @  K€QÈ?d ðÖÑë•=“ @  L€RÈ?d 0×Ñ;ݱ{ @  M€SÈ?d p×ÑýÎZ @  N€TÈ?d °×ÑÝ; ¤ @  O€UÈ?d ð×ÑNW‘G @  P€VÈ?d 0ØÑz¨Z @  Q€WÈ?d pØÑ$«G\ @  R€XÈ?d °ØÑ^E¢ @  S€YÈ?d ðØÑ1hD6 @  T€ZÈ?d 0ÙÑá ÈÞ @  U€[È?d pÙÑ'3qÿ @  V€\È?d °ÙÑÆs @  W€]È?d ðÙÑ9 Ö @  X€^È?d 0ÚѤOvà @  Y€_È?d pÚÑ«wõ @  Z€`È?d °ÚÑ"^u  @  [€aÈ?d ðÚÑhtŸ @  \€bÈ?d 0ÛÑÇ øw @  ]€cÈ?d pÛÑ3AV @  ^€dÈ?d °ÛÑ!ÆC¨ @  _€eÈ?d ðÛÑ£¬ÿû @  `€fÈ?d 0ÜѺâ ô @  a€gÈ?d pÜÑäáVò @  b€hÈ?d °ÜÑÄT  @  c€iÈ?d ðÜÑñ"U˜ @  d€jÈ?d 0ÝÑ!jÙp @  e€kÈ?d pÝÑçy`Q @  f€lÈ?d °ÝÑÇŒb¯ @  g€mÈ?d ðÝÑùAǬ @  h€nÈ?d 0ÞÑdgm @  i€oÈ?d pÞÑ_V_‡ @  j€pÈ?d °ÞÑ£]y @  k€qÈ?d ðÞÑJ•\í @  l€rÈ?d 0ßÑšÝÐ @  m€sÈ?d pßÑ\Îi$ @  n€tÈ?d uÐàÑ/°ßÑ|;kÚ @  o€uÈ?d ðßÑ«_ @  p vÈ?d HàѲ´f @  q wÈ?d ˆàÑNÓN@ @  r xÈ?d ÈàÑÌBYž @  s yÈ?d áÑ«­Ã< @  t zÈ?d HáÑ)<Ôâ @  u {È?d ˆáÑMKxã @  v |È?d ÈáÑÏÚo= @  w }È?d âÑîÂ}! @  x ~È?d HâÑlSjÿ @  y È?d ˆâÑ…E?j @  z €È?d ÈâÑÔ(´ @  { È?d ãÑ`;² @  | ‚È?d HãÑ⪥È @  } ƒÈ?d ˆãÑ†Ý É @  ~ „È?d ÈãÑL @   …È?d äÑP¨p6 @  € †È?d HäÑÒ9gè @   ‡È?d ˆäÑ.^(Î @  ‚ ˆÈ?d ÈäѬÏ? @  ƒ ‰È?d åÑË ¥² @  „ ŠÈ?d HåÑI±²l @  … ‹È?d ˆåÑ-Æm @  † ŒÈ?d ÈåѯW ³ @  ‡ È?d æÑŽO¯ @  ˆ ŽÈ?d HæÑ Þ q @  ‰ È?d ˆæÑ•é!» @  Š È?d ÈæÑx6e @  ‹ ‘È?d çÑp—¬Ç @  Œ ’È?d HçÑò» @   “È?d ˆçÑ–q @  Ž ”È?d ÈçÑàÆ @   •È?d èÑ1âæ @   –È?d Hèѳs8 @  ‘ —È?d ˆèÑOX @  ’ ˜È?d ÈèÑÍ…OÀ @  “ ™È?d éѪjÕb @  ” šÈ?d HéÑ(û¼ @  • ›È?d ˆéÑLŒn½ @  – œÈ?d ÈéÑÎyc @  — È?d êÑïk @  ˜ žÈ?d HêÑm”|¡ @  ™ ŸÈ?d ˆêÑih· @  š  È?d ÈêÑë…i @  › ¡È?d ëÑŒjåË @  œ ¢È?d HëÑûò @   £È?d ˆëÑjŒ^ @  ž ¤È?d ÈëÑèIÊ @  Ÿ ¥È?d ìÑñ¨H @    ¦È?d HìÑs9– @  ¡ §È?d ˆìÑ^I° @  ¢ ¨È?d ÈìÑ Ï^n @  £ ©È?d íÑj ÄÌ @  ¤ ªÈ?d HíÑè±Ó @  ¥ «È?d ˆíÑŒÆ @  ¦ ¬È?d ÈíÑWhÍ @  § ­È?d îÑ/OzÑ @  ¨ ®È?d HîÑ­Þm @  © ¯È?d ˆîÑ4é@Å @  ª °È?d ÈîѶxW @  « ±È?d ïÑї͹ @  ¬ ²È?d HïÑSÚg @  ­ ³È?d ˆïÑ7qvf @  ® ´È?d Èïѵàa¸ @  ¯ µÈ?d ðÑÃQ7 @  ° ¶È?d HðјRFé @  ± ·È?d ˆðÑd5 Ï @  ² ¸È?d ÈðÑæ¤ @  ³ ¹È?d ñÑK„³ @  ´ ºÈ?d HñÑÚ“m @  µ »È?d ˆñÑg­?l @  ¶ ¼È?d ÈñÑå<(² @  · ½È?d òÑÄ$:® @  ¸ ¾È?d HòÑFµ-p @  ¹ ¿È?d ˆòѲe,w @  º ÀÈ?d ÈòÑ0ô;© @  » ÁÈ?d óÑW¡  @  ¼ ÂÈ?d HóÑÕŠ¶Õ @  ½ ÃÈ?d ˆóѱýÔ @  ¾ ÄÈ?d ÈóÑ3l  @  ¿ ÅÈ?d ôÑ„ÞS @  À ÆÈ?d HôÑODÄ @  Á ÇÈ?d ˆôÑú( â @   ÈÈ?d ÈôÑx¹< @  à ÉÈ?d õÑV†ž @  Ä ÊÈ?d HõÑÇ‘@ @  Å ËÈ?d ˆõÑù°=A @  Æ ÌÈ?d ÈõÑ{!*Ÿ @  Ç ÍÈ?d öÑZ98ƒ @  È ÎÈ?d HöÑب/] @  É ÏÈ?d ˆöÑAŸ— @  Ê ÐÈ?d ÈöÑÃI @  Ë ÑÈ?d ÷Ѥáë @  Ì ÒÈ?d H÷Ñ&p˜5 @  Í ÓÈ?d ˆ÷ÑB44 @  Î ÔÈ?d È÷ÑÀ–#ê @  Ï ÕÈ?d øÑå”#Ê @  Ð ÖÈ?d HøÑg4 @  Ñ ×È?d ˆøÑ›b{2 @  Ò ØÈ?d ÈøÑólì @  Ó ÙÈ?d ùÑ~öN @  Ô ÚÈ?d HùÑüá @  Õ ÛÈ?d ˆùјúM‘ @  Ö ÜÈ?d ÈùÑkZO @  × ÝÈ?d úÑ;sHS @  Ø ÞÈ?d Húѹâ_ @  Ù ßÈ?d ˆúѽbK› @  Ú àÈ?d ÈúÑ?ó\E @  Û áÈ?d ûÑXÆç @  Ü âÈ?d HûÑÚÑ9 @  Ý ãÈ?d ˆûѾú}8 @  Þ äÈ?d ÈûÑÉo @  ( É?d àÒïޱ @  ) É?d Òa ¿þ @  * É?d `Ò㘨  @  + É?d  ÒB¦ÿÌ @  , É?d àÒÀ7è @  - É?d Ò†&‰¨ @  . É?d `Ò·žv @  / É?d  Ò›Ã°Ê @  0 É?d àÒR§ @  1 É?d Ò»ôÆ[ @  2 É?d ` Ò9eÑ… @  3 É?d   Ò˜[†i @  4 É?d à ÒÊ‘· @  5 É?d Òõ`ÜÑ @  6 É?d ` ÒwñË @  7 É?d   ҽÀc @  8  É?d à Ò?R—½ @  9 !É?d Òôöò @  : "É?d ` Òeá, @  ; #É?d   Ò¾[¶À @  < $É?d à Ò<Ê¡ @  = %É?d ÒWj¿¶ @  > &É?d ` ÒÕû¨h @  ? 'É?d   Òõާö @  @ (É?d à Òw°( @  A )É?d ÒÕ¹Ñg @  B *É?d ` ÒW(ƹ @  C +É?d   Òö‘U @  D ,É?d à Òt‡†‹ @  E -É?d Ò›-Ëí @  F .É?d `Ò¼Ü3 @  G /É?d  ÒN9®ƒ @  H 0É?d àǪ̀¹] @  I 1É?d ÒnØ @  J 2É?d `ÒìŸÏÌ @  K 3É?d  ÒM¡˜  @  L 4É?d àÒÏ0þ @  M 5É?d ÒÞë @  N 6É?d `Ò‘É5 @  O 7É?d  Òåç‰ @  P 8É?d àÒœtðW @  Q 9É?d Ò>Ò‘ @  R :É?d `Ò¼C†Æ @  S ;É?d  Ò}Ñ* @  T <É?d àÒŸìÆô @  U =É?d ÒpF‹’ @  V >É?d `ÒòלL @  W ?É?d  ÒȵÂ1 @  X @É?d àÒJ$Õï @  Y AÉ?d Òè‚´  @  Z BÉ?d `Òj£~ @  [ CÉ?d  ÒË-ô’ @  \ DÉ?d àÒI¼ãL @  ] EÉ?d Ò"ýä @  ^ FÉ?d `Ò ê: @  _ GÉ?d  Ò.ÿã6 @  ` HÉ?d àÒ¬nôè @  a IÉ?d ÒÈ•§ @  b JÉ?d `ÒŒY‚y @  c KÉ?d  Ò-gÕ• @  d LÉ?d àÒ¯öÂK @  e MÉ?d Ò@\- @  f NÉ?d `ÒÂ͘ó @  g OÉ?d  Ò•HêC @  h PÉ?d àÒÙý @  i QÉ?d ÒµœÒ @  j RÉ?d `Ò7î‹  @  k SÉ?d  Ò–ÐÜà @  l TÉ?d àÒAË> @  m UÉ?d ÒRPª„ @  n VÉ?d `ÒÐÁ½Z @  o WÉ?d  ÒOµ“æ @  p XÉ?d àÒÍ$„8 @  q YÉ?d Òo‚åw @  r ZÉ?d `Òíò© @  s [É?d  ÒL-¥E @  t \É?d àÒμ²› @  u ]É?d Ò!ÿý @  v ^É?d `Ò£‡è# @  w _É?d  Òiµ£O @  x `É?d àÒë$´‘ @  y aÉ?d ÒI‚ÕÞ @  z bÉ?d `ÒË @  { cÉ?d  Òj-•ì @  | dÉ?d àÒ輂2 @  } eÉ?d Òƒœš @  ~ fÉ?d `Ò‹D @   gÉ?d  Ò®´ë @  € hÉ?d àÒ@?£5 @   iÉ?d Òâ™Âz @  ‚ jÉ?d `Ò`Õ¤ @  ƒ kÉ?d  ÒÁ6‚H @  „ lÉ?d àÒC§•– @  … mÉ?d Ò¬ Øð @  † nÉ?d `Ò.œÏ. @  ‡ oÉ?d  Òy½ž @  ˆ pÉ?d àÒûˆª@ @  ‰ qÉ?d ÒY.Ë @  Š rÉ?d `ÒÛ¿ÜÑ @  ‹ sÉ?d  Òz‹=uÐ Ò @  Œ tÉ?d àÒøœã @   uÉ?d 8 Òûõ¯" @  Ž vÉ?d x Òyd¸ü @   wÉ?d ¸ Òæ–@ @   xÉ?d ø Òdž @  ‘ yÉ?d 8!ÒÆ'àÑ @  ’ zÉ?d x!ÒD¶÷ @  “ {É?d ¸!Ò删ã @  ” |É?d ø!Òg·= @  • }É?d 8"Òˆ³ú[ @  – ~É?d x"Ò "í… @  — É?d ¸"Ò-†çj @  ˜ €É?d ø"Ò¯ð´ @  ™ É?d 8#Ò ±‘û @  š ‚É?d x#Ò †% @  › ƒÉ?d ¸#Ò.ÑÉ @  œ „É?d ø#Ò¬Æ @   …É?d 8$ÒÇ/Ø¿ @  ž †É?d x$ÒE¾Ïa @  Ÿ ‡É?d ¸$ÒËÌÆm @    ˆÉ?d ø$ÒI]ѳ @  ¡ ‰É?d 8%Òëû°ü @  ¢ ŠÉ?d x%Òij§" @  £ ‹É?d ¸%ÒÈTðÎ @  ¤ ŒÉ?d ø%ÒJÅç @  ¥ É?d 8&Ò¥oªv @  ¦ ŽÉ?d x&Ò'þ½¨ @  § É?d ¸&Òp{Ï @  ¨ É?d ø&ÒòêØÆ @  © ‘É?d 8'ÒPL¹‰ @  ª ’É?d x'ÒÒÝ®W @  « “É?d ¸'Òsãù» @  ¬ ”É?d ø'Òñrîe @  ­ •É?d 8(Ò·cß @  ® –É?d x(Ò5ò˜ @  ¯ —É?d ¸(Òª†¶½ @  ° ˜É?d ø(Ò(¡c @  ± ™É?d 8)ÒбÀ, @  ² šÉ?d x)Ò ×ò @  ³ ›É?d ¸)Ò©€ @  ´ œÉ?d ø)Ò+—À @  µ É?d 8*ÒÄ%Ú¦ @  ¶ žÉ?d x*ÒF´Íx @  · ŸÉ?d ¸*ÒŒ†† @  ¸  É?d ø*Ò‘Ê @  ¹ ¡É?d 8+Ò¬±ð… @  º ¢É?d x+Ò. ç[ @  » £É?d ¸+Ò°· @  ¼ ¤É?d ø+Ò §i @  ½ ¥É?d 8,Òf/¹Á @  ¾ ¦É?d x,Òä¾® @  ¿ §É?d ¸,ÒÄË¡ @  À ¨É?d ø,ÒFZ¶_ @  Á ©É?d 8-Òäü× @   ªÉ?d x-ÒfmÀÎ @  à «É?d ¸-ÒÇS—" @  Ä ¬É?d ø-ÒE€ü @  Å ­É?d 8.ÒªhÍš @  Æ ®É?d x.Ò(ùÚD @  Ç ¯É?d ¸.Ò|¨ô @  È °É?d ø.Òýí¿* @  É ±É?d 8/Ò_KÞe @  Ê ²É?d x/ÒÝÚÉ» @  Ë ³É?d ¸/Ò|äžW @  Ì ´É?d ø/Òþu‰‰ @  Í µÉ?d 80Ò2EØœ @  Î ¶É?d x0Ò°ÔÏB @  Ï ·É?d ¸0Ò/ áþ @  Ð ¸É?d ø0Ò­1ö  @  Ñ ¹É?d 81Ò——o @  Ò ºÉ?d x1Ò€± @  Ó »É?d ¸1Ò,8×] @  Ô ¼É?d ø1Ò®©Àƒ @  Õ ½É?d 82ÒAå @  Ö ¾É?d x2ÒÃ’š; @  × ¿É?d ¸2ÒùðÄF @  Ø ÀÉ?d ø2Ò{aÓ˜ @  Ù ÁÉ?d 83ÒÙDz× @  Ú ÂÉ?d x3Ò[V¥  @  Û ÃÉ?d ¸3Òúhòå @  Ü ÄÉ?d ø3Òxùå; @  Ý ÅÉ?d 84ÒYû“ @  Þ ÆÉ?d x4Ò‘ÈìM @  ß ÇÉ?d ¸4ÒºåA @  à ÈÉ?d ø4Ò+òŸ @  á ÉÉ?d 85Ò?“Ð @  â ÊÉ?d€ x5ÒÉߘ¨ @   ËÉ?d ¸5Ò‰ ‡m @   ÌÉ?d ø5Ò 1³ @   ÍÉ?d 86Ò!Ò&8 @   ÎÉ?d x6Ò£C1æ @   ÏÉ?d ¸6Ò:t, @   ÐÉ?d ø6Ò¸å ò @   ÑÉ?d 87ÒÔñ5Ç @   ÒÉ?d x7ÒV`" @   ÓÉ?d ¸7Ò2Ž @   ÔÉ?d ø7Ò°†™Æ @   ÕÉ?d 88Ò3Þ‘ @   ÖÉ?d x8Ò±OO @   ×É?d ¸8ÒM([i @   ØÉ?d ø8ÒϹL· @   ÙÉ?d 89Ò Lb @   ÚÉ?d x9ÒŒ[¼ @   ÛÉ?d ¸9Òèê÷½ @   ÜÉ?d ø9Òj{àc @   ÝÉ?d 8:Ò@˜Vè @   ÞÉ?d x:Ò A6 @   ßÉ?d ¸:ÒƉU  @   àÉ?d ø:ÒDBþ @   áÉ?d 8;Ò( |Ë @   âÉ?d x;Òªk @   ãÉ?d ¸;ÒÎêÇ @   äÉ?d ø;ÒL{ÐÊ @   åÉ?d 8<Òâ’5 @   æÉ?d x<Ò`"Q @   çÉ?d ¸<Òœdmw @   èÉ?d ø<Òõz© @   éÉ?d 8=ÒÎF]Ì @   êÉ?d x=ÒL×J @  ! ëÉ?d ¸=Ò( æ @  " ìÉ?d ø=Òª1ñÍ @  # íÉ?d 8>Ò€ÒGF @  $ îÉ?d x>ÒCP˜ @  % ïÉ?d ¸>Ò›t}R @  & ðÉ?d ø>ÒåjŒ @  ' ñÉ?d 8?ÒuñT¹ @  ( òÉ?d x?Ò÷`Cg @  ) óÉ?duÐ@Ò7 ¸?Ò“ïf @  * ôÉ?d ø?Ò†ø¸ @  + õÉ?d P@ÒeTÎ @  , öÉ?d @ÒExV0 @  - ÷É?d Ð@Ò{ 6 @  . øÉ?d AÒË3€Þ @  / ùÉ?d PAÒX_= @  0 úÉ?d AÒxªÃ @  1 ûÉ?d ÐAÒ¾¹ â @  2 üÉ?d BÒ#ý# @  3 ýÉ?d PBÒË· @  4 þÉ?d BÒ6>I @  5 ÿÉ?d ÐBÒ° #Õ @  6 Ê?d CÒ`A¯= @  7 Ê?d PCÒ^Œ > @  8 Ê?d CÒ~yÀ @  9 Ê?d ÐCÒ¸j±á @  : Ê?d DÒ˜ãž; @  ;Ê?d PDÒ­ÕŸ¯ @  <Ê?d DÒ Q @  =Ê?d ÐDÒÓ#ÇW @  >Ê?d EÒkK¿ @  ? Ê?d PEÒ/ñ~ @  @ Ê?d EÒóó€ @  A Ê?d ÐEÒÉàJ¡ @  B Ê?d FÒT¤ê` @  C Ê?d PFÒa’ëô @  DÊ?d FÒAgé  @  EÊ?d ÐFÒz4Ñà @  FÊ?d GÒª|] @  GÊ?d PGÒ”±ø  @  HÊ?d GÒ´Dúõ @  IÊ?d ÐGÒrWCÔ @  JÊ?d HÒF¨ÏÉ @  KÊ?d PHÒsžÎ] @  LÊ?d HÒSkÌ£ @  MÊ?d ÐHÒ h–¥ @  NÊ?d IÒÝ M @  OÊ?d PIÒNL® @  PÊ?d IÒn¹ƒP @  QÊ?d ÐIÒ¨ª:q @  RÊ?d JÒ5îš° @  SÊ?d PJÒØ›$ @  TÊ?d JÒ -™Ú @  UÊ?d ÐJ҆ɘì @  V Ê?d KÒV @  W!Ê?d PKÒhL± @  X"Ê?d KÒH¹³ù @  Y#Ê?d ÐKÒŽª Ø @  Z$Ê?d LÒ—äù× @  [%Ê?d PLÒ¢ÒøC @  \&Ê?d LÒ‚'ú½ @  ]'Ê?d ÐLÒÜ$ » @  ^(Ê?d MÒ l,S @  _)Ê?d PMÒŽ @  `*Ê?d MÒ®ó’þ @  a+Ê?d ÐMÒhà+ß @  b,Ê?d NÒõ¤‹ @  c-Ê?d PNÒÀ’ŠŠ @  d.Ê?d NÒàgˆt @  e/Ê?d ÐNÒÛ4°ž @  f0Ê?d OÒ |Ê?d RÒ È  @  u?Ê?d ÐRÒ]¸Ü, @  v@Ê?d SÒðPÄ @  wAÊ?d PSÒ³=õÇ @  xBÊ?d SÒ“È÷9 @  yCÊ?d ÐSÒUÛN @  zDÊ?d TÒL•½ @  {EÊ?d PTÒy£¼ƒ @  |FÊ?d TÒYV¾} @  }GÊ?d ÐTÒUä{ @  ~HÊ?d UÒ×h“ @  IÊ?d PUÒ&âc @  €JÊ?d UÒ8Óà @  KÊ?d ÐUÒþÀY¼ @  ‚LÊ?d VÒc„ù} @  ƒMÊ?d PVÒV²øé @  „NÊ?d VÒvGú @  …OÊ?d ÐVÒMÂý @  †PÊ?d WÒ\N @  ‡QÊ?d PWÒ£‘ë @  ˆRÊ?d WÒƒdéè @  ‰SÊ?d ÐWÒEwPÉ @  ŠTÊ?d XÒqˆÜÔ @  ‹UÊ?d PXÒD¾Ý@ @  ŒVÊ?d XÒdKß¾ @  WÊ?d ÐXÒ:H…¸ @  ŽXÊ?d YÒê P @  YÊ?d PYÒyl’³ @  ZÊ?d YÒY™M @  ‘[Ê?d ÐYÒŸŠ)l @  ’\Ê?d ZÒΉ­ @  “]Ê?d PZÒ7øˆ9 @  ”^Ê?d ZÒ ŠÇ @  •_Ê?d ÐZÒ±é‹ñ @  –`Ê?d [Òa¡ @  —aÊ?d P[Ò_l¢ @  ˜bÊ?d [Ò™ ä @  ™cÊ?d Ð[Ò¹ŠÅ @  šdÊ?d \Ò ÄêÊ @  ›eÊ?d P\Ò•òë^ @  œfÊ?d \Òµé  @  gÊ?d Ð\Ò볦 @  žhÊ?d ]Ò;L?N @  ŸiÊ?d P]Ò¹&ƒ @   jÊ?d ]Ò™Óã @  ¡kÊ?d Ð]Ò_À8 @  ¢lÊ?d ^Ò„˜ @  £mÊ?d P^Ò÷²™— @  ¤nÊ?d ^Ò×G›i @  ¥oÊ?d Ð^Ò죃 @  ¦pÊ?d _Ò<\/k @  §qÊ?d P_Ò‘Šh @  ¨rÊ?d _Ò"dˆ– @  uÐ`Ò©sÊ?d Ð_Òݰíb @  ª tÊ?d (`ÒcHXú @  « uÊ?d h`ÒV~Yn @  ¬ vÊ?d ¨`Òv‹[ @  ­ wÊ?d è`Ò(ˆ– @  ® xÊ?d (aÒøÀ~ @  ¯ yÊ?d haÒk¬ @  ° zÊ?d ¨aÒKYc @  ± {Ê?d èaÒJ­B @  ² |Ê?d (bÒ ƒ @  ³ }Ê?d hbÒ%8  @  ´ ~Ê?d ¨bÒÍé @  µ Ê?d èbÒN¿N\ @  ¶ €Ê?d (cÒž÷´ @  · Ê?d hcÒ :g· @  ¸ ‚Ê?d ¨cÒ€ÏeI @  ¹ ƒÊ?d ècÒFÜÜh @  º „Ê?d (dÒ_’/g @  » …Ê?d hdÒj¤.ó @  ¼ †Ê?d ¨dÒJQ,  @  ½ ‡Ê?d èdÒRv  @  ¾ ˆÊ?d (eÒÄúã @  ¿ ‰Ê?d heÒèw@" @  À ŠÊ?d ¨eÒÈ‚BÜ @  Á ‹Ê?d èeÒ‘ûý @   ŒÊ?d (fÒ“Õ[< @  à Ê?d hfÒ¦ãZ¨ @  Ä ŽÊ?d ¨fÒ†XV @  Å Ê?d èfÒ½E`¼ @  Æ Ê?d (gÒm ìT @  Ç ‘Ê?d hgÒSÀIW @  È ’Ê?d ¨gÒs5K© @  É “Ê?d ègÒµ&òˆ @  Ê ”Ê?d (hÒÙ~• @  Ë •Ê?d hhÒ´ï @  Ì –Ê?d ¨hÒ”}ÿ @  Í —Ê?d èhÒÊ'ù @  Î ˜Ê?d (iÒQ« @  Ï ™Ê?d hiÒ‰=0ò @  Ð šÊ?d ¨iÒ©È2  @  Ñ ›Ê?d èiÒoÛ‹- @  Ò œÊ?d (jÒòŸ+ì @  Ó Ê?d hjÒÇ©*x @  Ô žÊ?d ¨jÒç\(† @  Õ ŸÊ?d èjÒA¸)° @  Ö  Ê?d (kÒ‘ð¥X @  × ¡Ê?d hkÒ¯=[ @  Ø ¢Ê?d ¨kÒÈ¥ @  Ù £Ê?d èkÒIÛ»„ @  Ú ¤Ê?d (lÒP•H‹ @  Û ¥Ê?d hlÒe£I @  Ü ¦Ê?d ¨lÒEVKá @  Ý §Ê?d èlÒUç @  Þ ¨Ê?d (mÒË @  ß ©Ê?d hmÒIw!\ @  à ªÊ?d ¨mÒi‚#¢ @  á «Ê?d èmÒ¯‘šƒ @  â ¬Ê?d€ (nÒó’ÍB @   ­Ê?d hnÒ'å„ÿ @   ®Ê?d ¨nÒ† @   ¯Ê?d ènÒù E @   °Ê?d (oÒ)BÉî @   ±Ê?d hoÒÙ=3— @   ²Ê?d ¨oÒùÈ1i @   ³Ê?d èoÒñi×2 @   ´Ê?d (pÒO·k€ @   µÊ?d hpÒ¿È‘ù @   ¶Ê?d ¨pÒŸ=“ @   ·Ê?d èpÒw2ì @   ¸Ê?d (qÒÔ?¾ @   ¹Ê?d hqÒ$@D} @   ºÊ?d ¨qÒµFƒ @   »Ê?d èqÒ¡µž8 @   ¼Ê?d (rÒ<ñ>ù @   ½Ê?d hrÒÌŽÄ€ @   ¾Ê?d ¨rÒì{Æ~ @   ¿Ê?d èrÒ†)´ @   ÀÊ?d (sүΥ\ @   ÁÊ?d hsÒ_±_% @   ÂÊ?d ¨sÒD]Û @   ÃÊ?d èsÒw廀 @   ÄÊ?d (tÒn«H @   ÅÊ?d htÒžÔ²ö @   ÆÊ?d ¨tÒ¾!° @   ÇÊ?d ètÒ%kã @   ÈÊ?d (uÒõ#  @   ÉÊ?d huÒ\gr @   ÊÊ?d ¨uÒ%©eŒ @   ËÊ?d èuÒ‘¯š‡ @   ÌÊ?d (vÒ ë:F @  ! ÍÊ?d hvÒü”À? @  " ÎÊ?d ¨vÒÜaÂÁ @  # ÏÊ?d èvÒ"{Æ @  $ ÐÊ?d (wÒò3. @  % ÑÊ?d hwÒLwW @  & ÒÊ?d ¨wÒ"¹u© @  ' ÓÊ?d èwÒ*“ò @  ( ÔÊ?d (xÒçï @  ) ÕÊ?d hxÒî˜å– @  * ÖÊ?d ¨xÒÎmçh @  + ×Ê?d èxÒU'Fƒ @  , ØÊ?d (yÒ…oÊk @  - ÙÊ?d hyÒu0 @  . ÚÊ?d ¨yÒUå2ì @  / ÛÊ?d èyÒðåêW @  0 ÜÊ?d (zÒm¡J– @  1 ÝÊ?d hzÒÞ°ï @  2 ÞÊ?d ¨zÒ½+² @  3 ßÊ?d èzÒÞ†HÊ @  4 àÊ?d ({ÒÎÄ" @  5 áÊ?d h{Òþ±>[ @  6 âÊ?d ¨{ÒÞD<¥ @  7 ãÊ?d è{ÒÖåÚþ @  8 äÊ?d (|ÒÏ«)ñ @  9 åÊ?d h|Ò?ÔÓˆ @  : æÊ?d ¨|Ò!Ñv @  ; çÊ?d è|Ò„kp @  < èÊ?d (}ÒT#üu @  = éÊ?d h}Ò¤\  @  > êÊ?d ¨}Ò„©ò @  ? ëÊ?d è}Òž¨ýk @  @ ìÊ?d (~Òì]ª @  A íÊ?d h~Òó“§Ó @  B îÊ?d ¨~ÒÓf¥- @  C ïÊ?d è~Ò-|f* @  D ðÊ?d (Òý4ê @  E ñÊ?d hÒ K» @  F òÊ?d ¨ÒuЀÒ'-¾E @  G óÊ?d èÒ%ô @  H ôÊ?d @€ÒK¡j @  I õÊ?d €€Òºù3 @  J öÊ?d À€Ò›+îí @  K ÷Ê?d ÒR¸Ô0 @  L øÊ?d @ÒÐ)Ãî @  M ùÊ?d €Ò‚2,· @  N úÊ?d ÀÒ£;i @  O ûÊ?d ‚ÒºvTÍ @  P üÊ?d @‚Ò8çC @  Q ýÊ?d €‚Òjü¬J @  R þÊ?d À‚Òèm»” @  S ÿÊ?d ƒÒKèÎö @  T Ë?d @ƒÒÉyÙ( @  U Ë?d €ƒÒ›b6q @  V Ë?d ÀƒÒó!¯ @  W Ë?d „ÒŠ#% @  X Ë?d @„Ò4û @  Y Ë?d €„ÒZÛ¢ @  Z Ë?d À„ÒØ–Ì| @  [ Ë?d …Òö¡ @  \ Ë?d @…Ò“”á @  ]  Ë?d €…ÒÁ& @  ^  Ë?d À…ÒzÙÅ- @  _ Ë?d †ÒÑ 9 @  ` Ë?d @†ÒS›šç @  a Ë?d €†Ò€u¾ @  bË?d À†Òƒb` @  cË?d ‡Ò/Ò:Q @  dË?d @‡Ò­C- @  eË?d €‡ÒÿXÂÖ @  fË?d À‡Ò}ÉÕ @  gË?d ˆÒè @  hË?d @ˆÒA—¿N @  iË?d €ˆÒŒP @  jË?d ÀˆÒ‘GÉ @  kË?d ‰ÒXŽ} @  lË?d @‰ÒÚjÊ @  mË?d €‰Òˆ…“ @  nË?d À‰Ò •’M @  oË?d ŠÒ°@ýé @  pË?d @ŠÒ2Ñê7 @  qË?d €ŠÒ`Ên @  rË?d ÀŠÒâ[° @  sË?d ‹ÒÓ/s] @  t Ë?d @‹ÒQ¾dƒ @  u!Ë?d €‹Ò¥‹Ú @  v"Ë?d À‹Ò4œ @  w#Ë?d ŒÒJžŽ @  x$Ë?d @ŒÒÛ‰P @  y%Ë?d €ŒÒÂÀf  @  z&Ë?d ÀŒÒ@Qq× @  {'Ë?d Ò‰ÂK  @  |(Ë?d @Ò S\Ô @  })Ë?d €ÒYH³ @  ~*Ë?d ÀÒÛÙ¤S @  +Ë?d ŽÒ=[Úä @  €,Ë?d @ŽÒ¿ÊÍ: @  -Ë?d €ŽÒíÑ"c @  ‚.Ë?d ÀŽÒo@5½ @  ƒ/Ë?d ÒÃmŒ @  „0Ë?d @ÒAzR @  …1Ë?d €Ò •  @  †2Ë?d ÀÒ‘˜‚Õ @  ‡3Ë?d Ò¥vÏâ @  ˆ4Ë?d @Ò'çØ< @  ‰5Ë?d €Òuü7e @  Š6Ë?d ÀÒ÷m » @  ‹7Ë?d ‘Ò>þf @  Œ8Ë?d @‘Ò¼o ¸ @  9Ë?d €‘Òîtâá @  Ž:Ë?d À‘Òlåõ? @  ;Ë?d ’ÒÖ0š› @  <Ë?d @’ÒT¡E @  ‘=Ë?d €’Òºb @  ’>Ë?d À’Ò„+u @  “?Ë?d “ÒE> @  ”@Ë?d @“ÒÇžà @  •AË?d €“Ò•…ù¹ @  –BË?d À“Òîg @  —CË?d ”Ò„jìí @  ˜DË?d @”Òûû3 @  ™EË?d €”ÒTàj @  šFË?d À”ÒÖq´ @  ›GË?d •Òâ9i @  œHË?d @•Òs.· @  IË?d €•ÒÏhÁî @  žJË?d À•ÒMùÖ0 @  ŸKË?d –Òæ*ž$ @   LË?d @–Òd»‰ú @  ¡MË?d €–Ò6 f£ @  ¢NË?d À–Ò´1q} @  £OË?d —Òò)L @  ¤PË?d @—Òšc>’ @  ¥QË?d €—ÒÈxÑË @  ¦RË?d À—ÒJéÆ @  §SË?d ˜Òô&» @  ¨TË?d @˜Òv·¬S @  ©UË?d €˜Ò$¬C  @  ªVË?d À˜Ò¦=TÔ @  «WË?d ™Òo®n  @  ¬XË?d @™Òí?y× @  ­YË?d €™Ò¿$–Ž @  ®ZË?d À™Ò=µP @  ¯[Ë?d šÒ‡`îô @  °\Ë?d @šÒñù* @  ±]Ë?d €šÒWês @  ²^Ë?d ÀšÒÕ{­ @  ³_Ë?d ›Òä`@ @  ´`Ë?d @›Òfžwž @  µaË?d €›Ò4…˜Ç @  ¶bË?d À›Ò¶ @  ·cË?d œÒ%j“ @  ¸dË?d @œÒ§ûšM @  ¹eË?d €œÒõàu @  ºfË?d ÀœÒwqbÊ @  »gË?d Ò¾âX @  ¼hË?d @ÒÌË?d X¶Ò:qPf @  ?ÍË?d ˜¶Ò´xÿ‡ @  @ÎË?d ضÒ6éèY @  AÏË?d ·Ò_cK… @  BÐË?d X·ÒÝò\[ @  CÑË?d ˜·ÒJ Hï @  DÒË?d Ø·ÒÈ1_1 @  EÓË?d ¸Ò¸L}Ó @  FÔË?d X¸Ò:Ýj  @  GÕË?d ˜¸Ò¦tÚ. @  HÖË?d ظÒ$åÍð @  I×Ë?d ¹Ò(? À @  JØË?d X¹Òª® @  KÙË?d ˜¹Ò=üª @  LÚË?d عÒ¿mt @  MÛË?d ºÒf«J @  NÜË?d XºÒä:” @  OÝË?d ˜ºÒÕ2W @  PÞË?d غÒW£˜‰ @  QßË?d »Ò£ž‰ @  RàË?d X»Ò!W @  SáË?d ˜»Ò¶]ã @  TâË?d Ø»Ò4Ì= @  UãË?d ¼ÒiKÍ @  VäË?d X¼Òë‘\ @  WåË?d ˜¼Òw8ì0 @  XæË?d ؼÒõ©ûî @  YçË?d ½Òùs:Þ @  ZèË?d X½Ò{â- @  [éË?d ˜½Òì°9´ @  \êË?d ؽÒn!.j @  ]ëË?d ¾Ò·ç T @  ^ìË?d X¾Ò5v7Š @  _íË?d ˜¾Òxžù @  `îË?d ؾÒ—é‰' @  aïË?d ¿Òþc*û @  bðË?d X¿Ò|ò=% @  cñË?d ˜¿Òë )‘ @uÐÀÒ  dòË?d ؿұM3 @  e€óË?d 0ÀÒ4òž @  f€ôË?d pÀÒ¶R¥@ @  g€õË?d °ÀÒ*ûc @  h€öË?d ðÀÒ¨j½ @  i€÷Ë?d 0ÁÒ¤°Ã @  j€øË?d pÁÒ&!ÔS @  k€ùË?d °ÁÒ±sÀç @  l€úË?d ðÁÒ3â×9 @  m€ûË?d 0ÂÒê$Ù @  n€üË?d pÂÒhµÎÙ @  o€ýË?d °ÂÒY½@ @  p€þË?d ðÂÒÛ,WÄ @  q€ÿË?d 0ÃÒéæÝ @  r€Ì?d pÃÒxñ @  s€Ì?d °ÃÒ”*å· @  t€Ì?d ðÃÒ»òi @  u€Ì?d 0ÄÒKw¯™ @  v€Ì?d pÄÒÉæ¸G @  w€Ì?d °ÄÒUOd @  x€Ì?d ðÄÒ×Þº @  y€Ì?d 0ÅÒÛÞŠ @  z€Ì?d pÅÒY•ÉT @  {€ Ì?d °ÅÒÎÇÝà @  |€ Ì?d ðÅÒLVÊ> @  }€ Ì?d 0ÆÒ•Ä @  ~€ Ì?d pÆÒÓÞ @  € Ì?d °ÆÒz^L @  €€Ì?d ðÆÒøÏ[Ð @  €Ì?d 0ÇÒ‘Eø  @  ‚€Ì?d pÇÒÔïÒ @  ƒ€Ì?d °ÇÒ„†ûf @  „€Ì?d ðÇÒì¸ @  …€Ì?d 0ÈÒvjÎZ @  †€Ì?d pÈÒôûÙ„ @  ‡€Ì?d °ÈÒhRi§ @  ˆ€Ì?d ðÈÒêÃ~y @  ‰€Ì?d 0ÉÒæ¿I @  Š€Ì?d pÉÒdˆ¨— @  ‹€Ì?d °ÉÒóÚ¼# @  Œ€Ì?d ðÉÒqK«ý @  €Ì?d 0ÊÒ¨¥Ã @  Ž€Ì?d pÊÒ*² @  €Ì?d °ÊÒ<Þ @  €Ì?d ðÊÒ™…+ @  ‘€Ì?d 0ËÒm¸± @  ’€ Ì?d pËÒï)¦Þ @  “€!Ì?d °ËÒx{²j @  ”€"Ì?d ðËÒúꥴ @  •€#Ì?d 0ÌÒ§&øD @  –€$Ì?d pÌÒ%·ïš @  —€%Ì?d °ÌÒ¹_¹ @  ˜€&Ì?d ðÌÒ;Hg @  ™€'Ì?d 0ÍÒ7U‰W @  š€(Ì?d pÍҵЉ @  ›€)Ì?d °ÍÒ"–Š= @  œ€*Ì?d ðÍÒ ã @  €+Ì?d 0ÎÒyÁ“Ý @  ž€,Ì?d pÎÒûP„ @  Ÿ€-Ì?d °ÎÒÛ^-p @   €.Ì?d ðÎÒYÏ:® @  ¡€/Ì?d 0ÏÒ0E™r @  ¢€0Ì?d pÏÒ²Ôެ @  £€1Ì?d °ÏÒ%†š @  ¤€2Ì?d ðÏÒ§Æ @  ¥€3Ì?d 0ÐÒ]KŸ‹ @  ¦€4Ì?d pÐÒßÚˆU @  §€5Ì?d °ÐÒCs8v @  ¨€6Ì?d ðÐÒÁâ/¨ @  ©€7Ì?d 0ÑÒÍ8î˜ @  ª€8Ì?d pÑÒO©ùF @  «€9Ì?d °ÑÒØûíò @  ¬€:Ì?d ðÑÒZjú, @  ­€;Ì?d 0ÒÒƒ¬ô @  ®€<Ì?d pÒÒ=ãÌ @  ¯€=Ì?d °ÒÒ05m @  °€>Ì?d ðÒÒ²¤zÑ @  ±€?Ì?d 0ÓÒ¶ÉõÀ @  ²€@Ì?d pÓÒ4Xâ @  ³€AÌ?d °ÓÒ£ öª @  ´€BÌ?d ðÓÒ!›át @  µ€CÌ?d 0ÔÒ|W¼„ @  ¶€DÌ?d pÔÒþÆ«Z @  ·€EÌ?d °ÔÒboy @  ¸€FÌ?d ðÔÒàþ § @  ¹€GÌ?d 0ÕÒì$Í— @  º€HÌ?d pÕÒnµÚI @  »€IÌ?d °ÕÒùçÎý @  ¼€JÌ?d ðÕÒ{vÙ# @  ½€KÌ?d 0ÖÒ¢°× @  ¾€LÌ?d pÖÒ !Àà @  ¿€MÌ?d °ÖÒ®(o" @  À€NÌ?d ðÖÒ,¹xü @  Á€OÌ?d 0×ÒE3Û  @  €PÌ?d p×ÒÇ¢Ìþ @  ÀQÌ?d °×ÒPðØJ @  Ä€RÌ?d ð×ÒÒaÏ” @  Å€SÌ?d 0ØÒ¢ív @  Æ€TÌ?d pØÒ ú¨ @  Ç€UÌ?d °ØÒ¼$J‹ @  È€VÌ?d ðØÒ>µ]U @  É€WÌ?d 0ÙÒ2oœe @  Ê€XÌ?d pÙÒ°þ‹» @  Ë€YÌ?d °ÙÒ'¬Ÿ @  Ì€ZÌ?d ðÙÒ¥=ˆÑ @  Í€[Ì?d 0ÚÒ|û†ï @  ΀\Ì?d pÚÒþj‘1 @  Ï€]Ì?d °ÚÒÏbò @  Ѐ^Ì?d ðÚÒMó, @  Ñ€_Ì?d 0ÛҹΒ, @  Ò€`Ì?d pÛÒ;_…ò @  Ó€aÌ?d °ÛÒ¬ ‘F @  Ô€bÌ?d ðÛÒ.œ†˜ @  Õ€cÌ?d 0ÜÒsPÛh @  Ö€dÌ?d pÜÒñÁ̶ @  ×€eÌ?d °ÜÒmh|• @  Ø€fÌ?d ðÜÒïùkK @  Ù€gÌ?d 0ÝÒã#ª{ @  Ú€hÌ?d pÝÒa²½¥ @  Û€iÌ?d °ÝÒöà© @  Ü€jÌ?d ðÝÒtq¾Ï @  Ý€kÌ?d 0ÞÒ­·°ñ @  Þ€lÌ?d pÞÒ/&§/ @  ߀mÌ?d °ÞÒ(\ @  à€nÌ?d ðÞÒ¹‚ @  á€oÌ?d 0ßÒä3º^ @  â€pÌ?d€ pßÒN8¹Ò @  €qÌ?d uÐàÒ/°ßÒ8+åO @  €rÌ?d ðßÒººò‘ @  €sÌ?d HàÒ"Õùu @  €tÌ?d ˆàÒ û‹ @  €uÌ?d ÈàÒò_ò @  €vÌ?d áÒ" @  €wÌ?d HáÒ²¦ˆf @  €xÌ?d ˆáÒ’SŠ˜ @   €yÌ?d ÈáÒb,pá @   €zÌ?d âÒÿhÐ  @   €{Ì?d HâÒü2’ì @   €|Ì?d ˆâÒÜÇ @   €}Ì?d ÈâÒ,¸jk @  €~Ì?d ãÒüðæƒ @  €Ì?d HãÒԑǬ @  €€Ì?d ˆãÒôdÅR @  €Ì?d ÈãÒ?+ @  €‚Ì?d äÒUÌ$ @  €ƒÌ?d HäÒŽè @  €„Ì?d ˆäÒ>úŒ @  €…Ì?d ÈäÒÎ…vo @  €†Ì?d åÒÍú‡ @  €‡Ì?d HåÒŽ|ÿû @  €ˆÌ?d ˆåÒ®‰ý @  €‰Ì?d ÈåÒ^ö| @  €ŠÌ?d æÒò§½ @  €‹Ì?d HæÒÀèåq @  €ŒÌ?d ˆæÒàç @  €Ì?d ÈæÒbö @  €ŽÌ?d çÒÀ*‘ @  €Ì?d HçÒ‰lïÞ @   €Ì?d ˆçÒ©™í  @  !€‘Ì?d ÈçÒYæY @  "€’Ì?d èÒm›D @  #€“Ì?d HèÒnCÙˆ @  $€”Ì?d ˆèÒN¶Ûv @  %€•Ì?d ÈèÒ¾É! @  &€–Ì?d éÒn­ç @  '€—Ì?d HéÒþ0¨› @  (€˜Ì?d ˆéÒÞŪe @  )€™Ì?d ÈéÒ.ºP @  *€šÌ?d êÒ³þðÝ @  +€›Ì?d HêÒ°¤² @  ,€œÌ?d ˆêÒQ°ï @  -€Ì?d ÈêÒ`.J– @  .€žÌ?d ëÒ°fÆ~ @  /€ŸÌ?d HëÒu‘¦Ò @  0€ Ì?d ˆëÒUd¤, @  1€¡Ì?d ÈëÒ¥^U @  2€¢Ì?d ìÒ¼U­Z @  3€£Ì?d HìÒ¿ï– @  4€¤Ì?d ˆìÒŸúíh @  5€¥Ì?d ÈìÒo… @  6€¦Ì?d íÒ¿Í›ù @  7€§Ì?d HíÒ/|ž… @  8€¨Ì?d ˆíÒ‰œ{ @  9€©Ì?d ÈíÒÿöf @  :€ªÌ?d îÒb²ÆÃ @  ;€«Ì?d HîÒaè„ @  <€¬Ì?d ˆîÒA†ñ @  =€­Ì?d ÈîÒ±b|ˆ @  >€®Ì?d ïÒa*ð` @  ?€¯Ì?d HïÒ†kˆ2 @  @€°Ì?d ˆïÒ¦žŠÌ @  A€±Ì?d ÈïÒVápµ @  B€²Ì?d ðÒè?Ì @  C€³Ì?d HðÒëeŽË @  D€´Ì?d ˆðÒËŒ5 @  E€µÌ?d ÈðÒ;ïvL @  F€¶Ì?d ñÒë§ú¤ @  G€·Ì?d HñÒ{ÿØ @  H€¸Ì?d ˆñÒ[ãý& @  I€¹Ì?d ÈñÒ«œ_ @  J€ºÌ?d òÒ6اž @  K€»Ì?d HòÒ5‚åR @  L€¼Ì?d ˆòÒwç¬ @  M€½Ì?d ÈòÒåÕ @  N€¾Ì?d óÒ5@‘= @  O€¿Ì?d HóÒçä€ @  P€ÀÌ?d ˆóÒ æ~ @  Q€ÁÌ?d ÈóÒÐm @  R€ÂÌ?d ôÒÉ#ï @  S€ÃÌ?d HôÒÊy­Ä @  T€ÄÌ?d ˆôÒꌯ: @  U€ÅÌ?d ÈôÒóUC @  V€ÆÌ?d õÒʻ٫ @  W€ÇÌ?d HõÒZ Ü× @  X€ÈÌ?d ˆõÒzÿÞ) @  Y€ÉÌ?d ÈõÒŠ€$P @  Z€ÊÌ?d öÒÄ„‘ @  [€ËÌ?d HöÒžÆ] @  \€ÌÌ?d ˆöÒ4kÄ£ @  ]€ÍÌ?d ÈöÒÄ>Ú @  ^€ÎÌ?d ÷Ò\²2 @  _€ÏÌ?d H÷Ò]Ìò @  `€ÐÌ?d ˆ÷Ò}ïÎ  @  a€ÑÌ?d È÷Ò4u @  b€ÒÌ?d øÒ¹o¸h @  c€ÓÌ?d HøÒº5ú¤ @  d€ÔÌ?d ˆøÒšÀøZ @  e€ÕÌ?d ÈøÒj¿# @  f€ÖÌ?d ùÒº÷ŽË @  g€×Ì?d HùÒ*F‹· @  h€ØÌ?d ˆùÒ ³‰I @  i€ÙÌ?d ÈùÒúÌs0 @  j€ÚÌ?d úÒgˆÓñ @  k€ÛÌ?d HúÒdÒ‘= @  l€ÜÌ?d ˆúÒD'“à @  m€ÝÌ?d ÈúÒ´Xiº @  n€ÞÌ?d ûÒdåR @  o€ßÌ?d HûÒ¡ç…þ @  p€àÌ?d ˆûÒ‡ @  q€áÌ?d ÈûÒqm}y @  r€âÌ?d üÒh#Žv @  s€ãÌ?d HüÒky̺ @  t€äÌ?d ˆüÒKŒÎD @  u€åÌ?d ÈüÒ»ó4= @  v€æÌ?d ýÒk»¸Õ @  w€çÌ?d HýÒû ½© @  x€èÌ?d ˆýÒÛÿ¿W @  y€éÌ?d ÈýÒ+€E. @  z€êÌ?d þÒ¶Äåï @  {€ëÌ?d HþÒµž§# @  |€ìÌ?d ˆþÒ•k¥Ý @  }€íÌ?d ÈþÒe_¤ @  ~€îÌ?d ÿÒµ\ÓL @  €ïÌ?d HÿÒ±K›/ @  €€ðÌ?d ˆÿÒ‘¾™Ñ @  €uÐÓñÌ?d ÈÿÒAÔ @  ‚òÌ?d ÓSõ8% @  ƒóÌ?d `ÓP¯zé @  „ôÌ?d  ÓpZx @  …õÌ?d àÓ€%‚n @  †öÌ?d ÓPm† @  ‡÷Ì?d `ÓÀÜ ú @  ˆøÌ?d  Óà)  @  ‰ùÌ?d àÓVó} @  ŠúÌ?d ÓS¼ @  ‹ûÌ?d `ÓŽHp @  ŒüÌ?d  Ó®½Ž @  ýÌ?d àÓ^Âé÷ @  ŽþÌ?d ÓŽŠe @  ÿÌ?d `ÓÙŒ< @  Í?d  Óùy @  ‘Í?d àÓ é» @  ’Í?d ÓH´ @  “Í?d `ÓXx @  ”Í?d  Ó3çZ† @  •Í?d àÓØ ÿ @  –Í?d ÓÐ, @  —Í?d `Óƒa)k @  ˜Í?d  Ó£”+• @  ™ Í?d àÓSëÑì @  š Í?d Óίq- @  › Í?d `ÓÍõ3á @  œ Í?d  Óí1 @   Í?d àÓËf @  žÍ?d ÓÍ7GŽ @  ŸÍ?d `Ó„q9N @   Í?d  Ó¤„;° @  ¡Í?d àÓTûÁÉ @  ¢Í?d Ó`MÔ @  £Í?d `Óc^ @  ¤Í?d  ÓC« æ @  ¥Í?d àÓ³Ô÷Ÿ @  ¦Í?d Ócœ{w @  §Í?d ` Óó-~  @  ¨Í?d   ÓÓØ|õ @  ©Í?d à Ó#§†Œ @  ªÍ?d Ó¾ã&M @  «Í?d ` Ó½¹d @  ¬Í?d   ÓLf @  ­Í?d à Óm3œ @  ®Í?d Ó½{î @  ¯Í?d ` ÓxŒpB @  ° Í?d   ÓXyr¼ @  ±!Í?d à Ó¨ˆÅ @  ²"Í?d Ó±H{Ê @  ³#Í?d ` Ó²9 @  ´$Í?d   Ó’ç;ø @  µ%Í?d à Ób˜Á @  ¶&Í?d Ó²ÐMi @  ·'Í?d ` Ó"aH @  ¸(Í?d   Ó”Jë @  ¹)Í?d à Óòë°’ @  º*Í?d Óo¯S @  »+Í?d `ÓlõRŸ @  ¼,Í?d  ÓLPa @  ½-Í?d àÓ¼ª @  ¾.Í?d Ól7&ð @  ¿/Í?d `Ó‹v^¢ @  À0Í?d  Ó«ƒ\\ @  Á1Í?d àÓ[ü¦% @  Â2Í?d Óå"— @  Ã3Í?d `ÓæxX[ @  Ä4Í?d  ÓÆZ¥ @  Å5Í?d àÓ6ò Ü @  Æ6Í?d Óæº,4 @  Ç7Í?d `Óv )H @  È8Í?d  ÓVþ+¶ @  É9Í?d àÓ¦ÑÏ @  Ê:Í?d Ó;Åq @  Ë;Í?d `Ó8Ÿ3 @  Ì<Í?d  Ój1< @  Í=Í?d àÓèËE @  Î>Í?d Ó8]G­ @  Ï?Í?d `Ó ú2 @  Ð@Í?d  Ó-0î @  ÑAÍ?d àÓÝpÊ— @  ÒBÍ?d ÓÄ>9˜ @  ÓCÍ?d `ÓÇd{T @  ÔDÍ?d  Óç‘yª @  ÕEÍ?d àÓîƒÓ @  ÖFÍ?d ÓǦ; @  ×GÍ?d `ÓW G @  ØHÍ?d  Ówâ¹ @  ÙIÍ?d àÓ‡òÀ @  ÚJÍ?d ÓÙR @  ÛKÍ?d `ÓƒÍ @  ÜLÍ?d  Ó9v3 @  ÝMÍ?d àÓÉ èJ @  ÞNÍ?d ÓAd¢ @  ßOÍ?d `ÓPb @  àPÍ?d  Ópòœ @  áQÍ?d àÓ€âå @  âRÍ?d€ ÓÀ±r^ @   SÍ?d `Ó"ªx» @   TÍ?d  Ó_zE @   UÍ?d àÓ7i{Ñ @   VÍ?d Óç!÷9 @   WÍ?d `Ó¹"­? @   XÍ?d  Ó™×¯Á @   YÍ?d àÓ§  @   ZÍ?d Ó:^ª @    [Í?d `ÓÍ`^ @    €\Í?d  Ó¡8b  @    €]Í?d àÓ”c4 @    €^Í?d ÓDFïÜ @    €_Í?d `Óâ¢îê @   €`Í?d  ÓÂWì @   €aÍ?d àÓQ;w÷ @   €bÍ?d ÓHu„ø @   €cÍ?d `ÓŽf=Ù @   €dÍ?d  Ó®“?' @   €eÍ?d àÓ›¥>³ @   €fÍ?d ÓKí²[ @   €gÍ?d `Óîè] @   €hÍ?d  Ó5ê£ @   €iÍ?d àÓ ÖO  @   €jÍ?d Ó–’ïa @   €kÍ?d `ÓPV@ @   €lÍ?d  ÓptT¾ @   €mÍ?d àÓEBU* @   €nÍ?d Ó• Ù @   €oÍ?d `Ó®Yá( @   €pÍ?d  ÓެãÖuÐ Ó @   €qÍ?d àÓ Æ_… @    €rÍ?d 8 Ó}Íã @   !€sÍ?d x Ó»Þ8 @   "€tÍ?d ¸ Ó›+:< @   #€uÍ?d ø Ó®;¨ @   $€vÍ?d 8!Ó~U·@ @   %€wÍ?d x!Ó VíF @   &€xÍ?d ¸!Ó£ï¸ @   '€yÍ?d ø!Ó>nJ» @   (€zÍ?d 8"Ó£*êz @   )€{Í?d x"Óe9S[ @   *€|Í?d ¸"ÓEÌQ¥ @   +€}Í?d ø"ÓpúP1 @   ,€~Í?d 8#Ó ²ÜÙ @   -€Í?d x#ÓëÀœl @   .€€Í?d ¸#ÓË5ž’ @   /€Í?d ø#ÓXYq @   0€‚Í?d 8$ÓAö~ @   1€ƒÍ?d x$Ó‡O_ @   2€„Í?d ¸$Ó§ñM¡ @   3€…Í?d ø$Ó’ÇL5 @   4€†Í?d 8%ÓBÀÝ @   5€‡Í?d x%ÓŒšÛ @   6€ˆÍ?d ¸%Ó€Í?d ¸'ӇΑP @   ?€‘Í?d ø'Ó«£+‘ @   @€’Í?d 8(ÓŸ\§Œ @   A€“Í?d x(ÓYO­ @   B€”Í?d ¸(ÓyºS @   C€•Í?d ø(ÓLŒÇ @   D€–Í?d 8)Ӝđ/ @   E€—Í?d x)ÓÂÇË) @   F€˜Í?d ¸)Óâ2É× @   G€™Í?d ø)ÓÜÿlÔ @   H€šÍ?d 8*ÓA»Ì @   I€›Í?d x*Ó‡¨u4 @   J€œÍ?d ¸*Ó§]wÊ @   K€Í?d ø*Ó’kv^ @   L€žÍ?d 8+ÓB#ú¶ @   M€ŸÍ?d x+ÓäÇû€ @   N€ Í?d ¸+ÓÄ2ù~ @   O€¡Í?d ø+ÓW^b @   P€¢Í?d 8,ÓN‘’ @   Q€£Í?d x,Óˆ(³ @   R€¤Í?d ¸,Ó¨ö*M @   S€¥Í?d ø,ÓÀ+Ù @   T€¦Í?d 8-ÓMˆ§1 @   U€§Í?d x-Ó‹ý7 @   V€¨Í?d ¸-Ó3~ÿÉ @   W€©Í?d ø-Ó ³ZÊ @   X€ªÍ?d 8.Ó÷ú  @   Y€«Í?d x.ÓVäC* @   Z€¬Í?d ¸.ÓvAÔ @   [€­Í?d ø.ÓC'@@ @   \€®Í?d 8/Ó“ǫ @   ]€¯Í?d x/Ó¨<ôB @   ^€°Í?d ¸/ÓˆÉö¼ @   _€±Í?d ø/Ó £Jï @   `€²Í?d 80Ó´}ö] @   a€³Í?d x0ÓrnO| @   b€´Í?d ¸0ÓR›M‚ @   c€µÍ?d ø0Óg­L @   d€¶Í?d 81Ó·åÀþ @   e€·Í?d x1Óéæšø @   f€¸Í?d ¸1Óɘ @   g€¹Í?d ø1Ó÷Þ= @   h€ºÍ?d 82ÓjšÄ @   i€»Í?d x2Ó¬‰$å @   j€¼Í?d ¸2ÓŒ|& @   k€½Í?d ø2Ó¹J' @   l€¾Í?d 83Ói«g @   m€¿Í?d x3Ó?¶¿@ @   n€ÀÍ?d ¸3ÓC½¾ @   o€ÁÍ?d ø3ÓŒ/&] @   p€ÂÍ?d 84Ó•aÕR @   q€ÃÍ?d x4ÓSrls @   r€ÄÍ?d ¸4Ós‡n @   s€ÅÍ?d ø4ÓF±o @   t€ÆÍ?d 85Ó–ùãñ @   u€ÇÍ?d x5ÓÈú¹÷ @   v€ÈÍ?d ¸5Óè»  @   w€ÉÍ?d ø5ÓÖ  @   x€ÊÍ?d 86ÓK†¾Ë @   y€ËÍ?d x6Ó•ê @   z€ÌÍ?d ¸6Ó­` @   {€ÍÍ?d ø6Ó˜V€ @   |€ÎÍ?d 87ÓHˆh @   }€ÏÍ?d x7ÓsM°‚ @   ~€ÐÍ?d ¸7ÓS¸²| @   €ÑÍ?d ø7Óœƒ8Œ @   €€ÒÍ?d 88Ó¨|´‘ @   €ÓÍ?d x8Óno ° @   ‚€ÔÍ?d ¸8ÓNšN @   ƒ€ÕÍ?d ø8Ó{¬Ú @   „€ÖÍ?d 89Ó«ä‚2 @   …€×Í?d x9ÓõçØ4 @   †€ØÍ?d ¸9ÓÕÚÊ @   ‡€ÙÍ?d ø9ÓëßÉ @   ˆ€ÚÍ?d 8:Óv›ß @   ‰€ÛÍ?d x:Ó°ˆf) @   Š€ÜÍ?d ¸:Ó}d× @   ‹€ÝÍ?d ø:Ó¥KeC @   Œ€ÞÍ?d 8;Óué« @   €ßÍ?d x;ÓÓçè @   Ž€àÍ?d ¸;Óóêc @   €áÍ?d ø;Ó`~q€ @   €âÍ?d 8<Óy0‚ @   ‘€ãÍ?d x<Ó¿#;® @   ’€äÍ?d ¸<ÓŸÖ9P @   “€åÍ?d ø<Óªà8Ä @   ”€æÍ?d 8=Óz¨´, @   •€çÍ?d x=Ó$«î* @   –€èÍ?d ¸=Ó^ìÔ @   —€éÍ?d ø=Ó:“I× @   ˜€êÍ?d 8>Ó§×é @   ™€ëÍ?d x>ÓaÄP7 @   š€ìÍ?d ¸>ÓA1RÉ @   ›€íÍ?d ø>ÓtS] @   œ€îÍ?d 8?Ó¤Oßµ @   €ïÍ?d x?ÓŸç_ @   ž€ðÍ?duÐ@Ó7 ¸?Ó¿éå¡ @   Ÿ€ñÍ?d ø?Ó=ƒYò @    €òÍ?d P@Óþ/ãÎ @   ¡€óÍ?d @ÓšXOÏ @   ¢€ôÍ?d Ð@ÓÉX @   £€õÍ?d AÓ&³ @   ¤€öÍ?d PAÓý·Õm @   ¥€÷Í?d AÓКK @   ¦€øÍ?d ÐAÓƒA• @   §€ùÍ?d BÓ¢YŸ‰ @   ¨€úÍ?d PBÓ ȈW @   ©€ûÍ?d BÓD¿$V @   ª€üÍ?d ÐBÓÆ.3ˆ @   «€ýÍ?d CÓ¡Á©* @   ¬€þÍ?d PCÓ#P¾ô @   ­€ÿÍ?d CÓ‹H @   ®€Î?d ÐCÓ…’œ– @   ¯€Î?d DÓ!㤠@   °€Î?d PDÓ°ôz @   ±€Î?d DÓkÇX{ @   ²€Î?d ÐDÓéVO¥ @   ³€Î?d EÓ޹Õ @   ´€Î?d PEÓ (ÂÙ @   µ€Î?d EÓðOÿ @   ¶€Î?d ÐEÓrÞš! @   ·€ Î?d FÓSƈ= @   ¸€ Î?d PFÓÑWŸã @   ¹€ Î?d FÓµ 3â @   º€ Î?d ÐFÓ7±$< @   »€ Î?d GÓP^¾ž @   ¼€Î?d PGÓÒÏ©@ @   ½€Î?d GÓKø„Š @   ¾€Î?d ÐGÓÉi“T @   ¿€Î?d HÓSj²V @   À€Î?d PHÓÑû¥ˆ @   Á€Î?d HÓµŒ ‰ @   €Î?d ÐHÓ7W @   ÀÎ?d IÓPò„õ @   Ä€Î?d PIÓÒc“+ @   Å€Î?d IÓ.Ü  @   Æ€Î?d ÐIÓ¬•ËÓ @   Ç€Î?d JÓÙÏ @   È€Î?d PJÓÎ @   É€Î?d JÓkkb @   Ê€Î?d ÐJÓéúuÎ @   Ë€Î?d KÓŽïl @   Ì€Î?d PKÓ „ø² @   Í€Î?d KÓì¤ @   ΀ Î?d ÐKÓŠ•ûz @   Ï€!Î?d LÓ‚&„H @   Ѐ"Î?d PLÓ·“– @   Ñ€#Î?d LÓdÀ?— @   Ò€$Î?d ÐLÓæQ(I @   Ó€%Î?d MÓ¾²ë @   Ô€&Î?d PMÓ/¥5 @   Õ€'Î?d MÓÿHê @   Ö€(Î?d ÐMÓ}ÙýÍ @   ×€)Î?d NÓ\ÁïÑ @   Ø€*Î?d PNÓÞPø @   Ù€+Î?d NÓº'T @   Ú€,Î?d ÐNÓ8¶CÐ @   Û€-Î?d OÓ_YÙr @   Ü€.Î?d POÓÝÈά @   Ý€/Î?d OÓDÿãf @   Þ€0Î?d ÐOÓÆnô¸ @   ߀1Î?d PÓxK㇠@   à€2Î?d PPÓúÚôY @   á€3Î?d PÓž­XX @   â€4Î?d€ ÐPÓÝ{¸† @   €5Î?d QÓ[Õj  @   €6Î?d PQÓÙD}Ó @   €7Î?d QÓàjÉ @   €8Î?d ÐQÓbûÞÆ @   €9Î?d RÓQ“  @   €:Î?d PRÓÀ„~ @   €;Î?d RÓ¥w @   €<Î?d ÐRÓ'”`Û @    €=Î?d SÓ…2” @    €>Î?d PSÓ£J @    €?Î?d SÓ6:ì  @    €@Î?d ÐSÓ´«û~ @    €AÎ?d TÓß åÖ @   €BÎ?d PTÓ]šò @   €CÎ?d TÓZþ?“ @   €DÎ?d ÐTÓØo(M @   €EÎ?d UÓzÉI @   €FÎ?d PUÓøX^Ü @   €GÎ?d UÓÁvê @   €HÎ?d ÐUÓCçýÉ @   €IÎ?d VÓ¬M°¯ @   €JÎ?d PVÓ.ܧq @   €KÎ?d VÓ„T  @   €LÎ?d ÐVÓˆCÔ @   €MÎ?d WÓ¤."› @   €NÎ?d PWÓ&¿5E @   €OÎ?d WÓzÁãb @   €PÎ?d ÐWÓøPô¼ @   €QÎ?d XÓ¾A• @   €RÎ?d PXÓ<ЂØ @   €SÎ?d XÓ*²hó @    €TÎ?d ÐXÓ¨#- @   !€UÎ?d YÓ …b @   "€VÎ?d PYÓˆ ¼ @   #€WÎ?d YÓ±:½w @   $€XÎ?d ÐYÓ3«ª© @   %€YÎ?d ZÓÜçÏ @   &€ZÎ?d PZÓ^ð @   '€[Î?d ZÓôUj @   (€\Î?d ÐZÓvÄ´ @   )€]Î?d [ÓÔbuû @   *€^Î?d P[ÓVób% @   +€_Î?d [Ó—:Þ @   ,€`Î?d Ð[Ó«š @   -€aÎ?d \Ó~ „¨ @   .€bÎ?d P\Óüš“v @   /€cÎ?d \Óûþ^í @   0€dÎ?d Ð\ÓyoI3 @   1€eÎ?d ]ÓÛÉ(| @   2€fÎ?d P]ÓYX?¢ @   3€gÎ?d ]Ó`v‹i @   4€hÎ?d Ð]Óâ眷 @   5€iÎ?d ^Ó MÑÑ @   6€jÎ?d P^ÓÜÆ @   7€kÎ?d ^Ó%5t @   8€lÎ?d Ð^Ó§ˆ"ª @   9€mÎ?d _Ó.Cå @   :€nÎ?d P_Ó‡¿T; @   ;€oÎ?d _ÓÛÁ‚ @   uÐ`Ó<€pÎ?d Ð_ÓYP• @   =€qÎ?d (`Ó•FÍý @   >€rÎ?d h`Ó×Ú# @   ?€sÎ?d ¨`Ó¯²6š @   @€tÎ?d è`Ó-#!D @   A€uÎ?d (aÓ…@  @   B€vÎ?d haÓ WÕ @   C€wÎ?d ¨aÓ4:ã @   D€xÎ?d èaÓ¶«ôÀ @   E€yÎ?d (bÓY¹¦ @   F€zÎ?d hbÓÛ®x @   G€{Î?d ¨bÓqU] @   H€|Î?d èbÓóÄJÝ @   I€}Î?d (cÓQb+’ @   J€~Î?d hcÓÓó @   y€­Î?d (oÓ̸=q @   z€®Î?d hoÓN)*¯ @   {€¯Î?d ¨oÓWüˆ @   |€°Î?d èoÓÆëV @   }€±Î?d (pÓ\öºC @   ~€²Î?d hpÓÞg­ @   €³Î?d ¨pÓ…Tq @   €€´Î?d èpÓÅfË @   €µÎ?d (qÓ¥c„ @   ‚€¶Î?d hqÓ'òZ @   ƒ€·Î?d ¨qÓܤ‘ @   „€¸Î?d èqÓœM³O @   …€¹Î?d (rÓsçþ) @   †€ºÎ?d hrÓñvé÷ @   ‡€»Î?d ¨rÓ[³Œ @   ˆ€¼Î?d èrÓÙ" R @   ‰€½Î?d (sÓ{„l @   Š€¾Î?d hsÓù{à @   ‹€¿Î?d ¨sÓÈŒ) @   Œ€ÀÎ?d èsÓJ–÷ @   €ÁÎ?d (tÓ!½ˆ_ @   Ž€ÂÎ?d htÓ£,Ÿ @   €ÃÎ?d ¨tÓ¤HR @   €ÄÎ?d ètÓ&ÙEÄ @   ‘€ÅÎ?d (uÓ„$‹ @   ’€ÆÎ?d huÓî3U @   “€ÇÎ?d ¨uÓ?À‡ž @   ”€ÈÎ?d èuÓ½Q@ @   •€ÉÎ?d (vÓRûÝ& @   –€ÊÎ?d hvÓÐjÊø @   —€ËÎ?d ¨vÓz¯9ƒ @   ˜€ÌÎ?d èvÓø>.] @   ™€ÍÎ?d (wÓZ˜O @   š€ÎÎ?d hwÓØ XÌ @   ›€ÏÎ?d ¨wÓ„wŽë @   œ€ÐÎ?d èwÓæ™5 @   €ÑÎ?d (xÓ@÷ø @   ž€ÒÎ?d hxÓÂfïQ @   Ÿ€ÓÎ?d ¨xÓÔz @    €ÔÎ?d èxÓV•¤ @   ¡€ÕÎ?d (yÓô3së @   ¢€ÖÎ?d hyÓv¢d5 @   £€×Î?d ¨yÓOŒÐþ @   ¤€ØÎ?d èyÓÍÇ  @   ¥€ÙÎ?d (zÓ"·ŠF @   ¦€ÚÎ?d hzÓ &˜ @   §€ÛÎ?d ¨zÓ ãnã @   ¨€ÜÎ?d èzÓˆry= @   ©€ÝÎ?d ({Ó*Ôr @   ª€ÞÎ?d h{Ó¨E¬ @   «€ßÎ?d ¨{ÓiŒàW @   ¬€àÎ?d è{Óë÷‰ @   ­€áÎ?d (|Ó€½é! @   ®€âÎ?d h|Ó,þÿ @   ¯€ãÎ?d ¨|ÓH3d @   °€äÎ?d è|Ó‡Ù$º @   ±€åÎ?d (}Ó%Eõ @   ²€æÎ?d h}Ó§îR+ @   ³€çÎ?d ¨}ÓžÀæà @   ´€èÎ?d è}ÓQñ> @   µ€éÎ?d (~Óóû¼X @   ¶€êÎ?d h~Óqj«† @   ·€ëÎ?d ¨~ÓÛ¯Xý @   ¸€ìÎ?d è~ÓY>O# @   ¹€íÎ?d (Óû˜.l @   º€îÎ?d hÓy 9² @   »€ïÎ?d ¨ÓuЀÓ'%wï• @   ¼€ðÎ?d èÓ§æøK @   ½€ñÎ?d @€Ó»¶÷˜ @   ¾€òÎ?d €€Ó›Cõf @   ¿€óÎ?d À€ÓB ÿ @   À€ôÎ?d ÓQ € @   Á€õÎ?d @Ó¡uzn @   €öÎ?d €Ó€x @   À÷Î?d ÀÓÊÙ{ @   Ä€øÎ?d ‚Ó‡Žyº @   Å€ùÎ?d @‚ÓwñƒÃ @   Æ€úÎ?d €‚ÓW= @   Ç€ûÎ?d À‚Ó_¥gf @   È€üÎ?d ƒÓíëŽ @   É€ýÎ?d @ƒÓ’÷ @   Ê€þÎ?d €ƒÓ_g  @   Ë€ÿÎ?d ÀƒÓ®;ý] @   Ì€Ï?d „Ó·uR @   Í€Ï?d @„ÓG ô+ @   ΀Ï?d €„ÓgÿöÕ @   Ï€Ï?d À„ÓÂÿ.n @   ЀÏ?d …Ó·¢† @   Ñ€Ï?d @…ÓâÈXÿ @   Ò€Ï?d €…ÓÂ=Z @   Ó€Ï?d À…ÓYwûê @   Ô€Ï?d †ÓÄ3[+ @   Õ€ Ï?d @†Ó4L¡R @   Ö€ Ï?d €†Ó¹£¬ @   ×€ Ï?d À†ÓE÷ @   Ø€ Ï?d ‡ÓÌPÉ @   Ù€ Ï?d @‡Ó[® @   €Ï?d ÀŠÓò-â @   €Ï?d ‹Ó"eng @   €Ï?d @‹Ó¨Ëd @   €Ï?d €‹Ó<]Éš @    €Ï?d À‹Óš¹È¬ @    € Ï?d ŒÓƒ÷;£ @    €!Ï?d @ŒÓ¶Á:7 @    €"Ï?d €ŒÓ–48É @    €#Ï?d ÀŒÓP'è @   €$Ï?d Ó€o  @   €%Ï?d @Ó–ã @   €&Ï?d €Ó3ö” @   €'Ï?d ÀÓmõÎ @   €(Ï?d ŽÓð±nÚ @   €)Ï?d @ŽÓŇoN @   €*Ï?d €ŽÓårm° @   €+Ï?d ÀŽÓ#aÔ‘ @   €,Ï?d Óó)Xy @   €-Ï?d @ÓÍäýz @   €.Ï?d €Óíÿ„ @   €/Ï?d ÀÓÖBÇn @   €0Ï?d Óhœ{Ü @   €1Ï?d @Ó]ªzH @   €2Ï?d €Ó}_x¶ @   €3Ï?d ÀÓ»LÁ— @   €4Ï?d ‘ÓkM @   €5Ï?d @‘Óénñ, @    €6Ï?d €‘ÓÉ›óÒ @   !€7Ï?d À‘Ó—˜©Ô @   "€8Ï?d ’Ó Ü  @   #€9Ï?d @’Ó?ê @   $€:Ï?d €’Ó  @   %€;Ï?d À’ÓÙ ³^ @   &€<Ï?d “Ó D?¶ @   '€=Ï?d @“Ó7‰šµ @   (€>Ï?d €“Ó|˜K @   )€?Ï?d À“ÓAÈŒl @   *€@Ï?d ”ÓX†c @   +€AÏ?d @”Óm°~÷ @   ,€BÏ?d €”ÓME|  @   -€CÏ?d À”Ó‹VÅ( @   .€DÏ?d •Ó[IÀ @   /€EÏ?d @•ÓÈrÒ# @   0€FÏ?d €•Óè‡ÐÝ @   1€GÏ?d À•Ó¶„ŠÛ @   2€HÏ?d –Ó+À* @   3€IÏ?d @–Óö+Ž @   4€JÏ?d €–Ó>)p @   5€KÏ?d À–ÓøQ @   6€LÏ?d —Ó(X¹ @   7€MÏ?d @—Ó•¹º @   8€NÏ?d €—Ó6`»D @   9€OÏ?d À—Ó 3ƒ® @   :€PÏ?d ˜Ó9̳ @   ;€QÏ?d @˜Ó ú' @   <€RÏ?d €˜Ó, Ù @   =€SÏ?d À˜Óêµø @   >€TÏ?d ™Ó:T9 @   ?€UÏ?d @™Ó9ƒÑ @   @€VÏ?d €™Ó6Ì/ @   A€WÏ?d À™ÓhÏÛ) @   B€XÏ?d šÓõ‹{è @   C€YÏ?d @šÓÀ½z| @   D€ZÏ?d €šÓàHx‚ @   E€[Ï?d ÀšÓ&[Á£ @   F€\Ï?d ›ÓöMK @   G€]Ï?d @›ÓÈÞèH @   H€^Ï?d €›Óè+ê¶ @   I€_Ï?d À›ÓNÏë€ @   J€`Ï?d œÓW @   K€aÏ?d @œÓb· @   L€bÏ?d €œÓBBå @   M€cÏ?d ÀœÓ„Q¢Ä @   N€dÏ?d ÓT., @   O€eÏ?d @ÓÇuµÏ @   P€fÏ?d €Ó瀷1 @   Q€gÏ?d ÀÓ¹ƒí7 @   R€hÏ?d žÓ$ÇMö @   S€iÏ?d @žÓñLb @   T€jÏ?d €žÓ1Nœ @   U€kÏ?d ÀžÓ÷÷½ @   V€lÏ?d ŸÓ'_{U @   W€mÏ?d @ŸÓ’ÞV @   X€nÏ?d €ŸÓ9gܨ @   Y€oÏuРÓ?d ÀŸÓ4äB @   Z€pÏ?d  Ó¿IX @   [qÏ?d X Ó;‰HÌ @   \rÏ?d ˜ Ó|J2 @   ]sÏ?d Ø ÓÝoó @   ^tÏ?d ¡Ó 'û @   _uÏ?d X¡ÓMè @   `vÏ?d ˜¡Ó¯¸ÁV @   awÏ?d Ø¡Óñ»›P @   bxÏ?d ¢Ólÿ;‘ @   cyÏ?d X¢ÓYÉ: @   dzÏ?d ˜¢Óy<8û @   e{Ï?d Ø¢Ó¿/Ú @   f|Ï?d £Óog 2 @   g}Ï?d X£ÓQª¨1 @   h~Ï?d ˜£Óq_ªÏ @   iÏ?d Ø£Ó:-êz @   j€Ï?d ¤Ó#cu @   kÏ?d X¤ÓUá @   l‚Ï?d ˜¤Ó6  @   mƒÏ?d ؤÓð³£> @   n„Ï?d ¥Ó û/Ö @   o…Ï?d X¥Ó³—´5 @   p†Ï?d ˜¥Ó“b¶Ë @   q‡Ï?d Ø¥ÓÍaìÍ @   rˆÏ?d ¦ÓP%L  @   s‰Ï?d X¦ÓeM˜ @   tŠÏ?d ˜¦ÓEæOf @   u‹Ï?d ئÓƒõöG @   vŒÏ?d §ÓS½z¯ @   wÏ?d X§Ómp߬ @   xŽÏ?d ˜§ÓM…ÝR @   yÏ?d اÓvÖå¸ @   zÏ?d ¨ÓB)i¥ @   {‘Ï?d X¨Ówh1 @   |’Ï?d ˜¨ÓWêjÏ @   }“Ï?d بÓ‘ùÓî @   ~”Ï?d ©ÓA±_ @   •Ï?d X©ÓŽŠÕö @   €–Ï?d ˜©Ó®× @   —Ï?d Ø©Óð| @   ‚˜Ï?d ªÓm8-Ï @   ƒ™Ï?d XªÓX,[ @   „šÏ?d ˜ªÓxû.¥ @   …›Ï?d تӾ藄 @   †œÏ?d «Ón l @   ‡Ï?d X«ÓPm¾o @   ˆžÏ?d ˜«Óp˜¼‘ @   ‰ŸÏ?d Ø«ÓÖ|½§ @   Š Ï?d ¬ÓÏ2N¨ @   ‹¡Ï?d X¬ÓúO< @   Œ¢Ï?d ˜¬ÓÚñM @   £Ï?d جÓâôã @   ޤÏ?d ­Ó̪x  @   ¥Ï?d X­Ó_Æãè @   ¦Ï?d ˜­Ó3á @   ‘§Ï?d Ø­Ó!0» @   ’¨Ï?d ®Ó¼tÑ @   “©Ï?d X®Ó‰BE @   ”ªÏ?d ˜®Ó©·» @   •«Ï?d Ø®Óo¤¡š @   –¬Ï?d ¯Ó¿ì-r @   —­Ï?d X¯Ó!ˆq @   ˜®Ï?d ˜¯Ó¡ÔŠ @   ™¯Ï?d دÓš‡²e @   š°Ï?d °Ó$Y× @   ›±Ï?d X°ÓoC @   œ²Ï?d ˜°Ó1š ½ @   ³Ï?d ذÓ÷‰´œ @   ž´Ï?d ±Ó'Á8t @   ŸµÏ?d X±Ó¥«„' @    ¶Ï?d ˜±Ó…^†Ù @   ¡·Ï?d رÓÛ]Üß @   ¢¸Ï?d ²ÓF| @   £¹Ï?d X²Ós/}Š @   ¤ºÏ?d ˜²ÓSÚt @   ¥»Ï?d زÓ•ÉÆU @   ¦¼Ï?d ³ÓEJ½ @   §½Ï?d X³Ó{Lï¾ @   ¨¾Ï?d ˜³Ó[¹í@ @   ©¿Ï?d سÓ ùg @   ªÀÏ?d ´ÓC h @   «ÁÏ?d X´Ó!u ü @   ¬ÂÏ?d ˜´Ó€  @   ­ÃÏ?d Ø´ÓÇ“°# @   ®ÄÏ?d µÓÛ<Ë @   ¯ÅÏ?d XµÓ„·§( @   °ÆÏ?d ˜µÓ¤B¥Ö @   ±ÇÏ?d صÓúAÿÐ @   ²ÈÏ?d ¶Óg_ @   ³ÉÏ?d X¶ÓR3^… @   ´ÊÏ?d ˜¶ÓrÆ\{ @   µËÏ?d ضÓ´ÕåZ @   ¶ÌÏ?d ·Ódi² @   ·ÍÏ?d X·ÓZP̱ @   ¸ÎÏ?d ˜·Óz¥ÎO @   ¹ÏÏ?d Ø·ÓAöö¥ @   ºÐÏ?d ¸Óu z¸ @   »ÑÏ?d X¸Ó@?{, @   ¼ÒÏ?d ˜¸Ó`ÊyÒ @   ½ÓÏ?d ظÓ¦ÙÀó @   ¾ÔÏ?d ¹Óv‘L @   ¿ÕÏ?d X¹ÓZüöÚ @   ÀÖÏ?d ˜¹Óz ô$ @   Á×Ï?d عÓ$ ®" @   ÂØÏ?d ºÓ¹Nã @   ÃÙÏ?d XºÓŒxw @   ÄÚÏ?d ˜ºÓ¬ ‰ @   ÅÛÏ?d غÓjž´¨ @   ÆÜÏ?d »ÓºÖ8@ @   ÇÝÏ?d X»Ó„C @   ÈÞÏ?d ˜»Ó¤îŸ½ @   ÉßÏ?d Ø»Ó ž‹ @   ÊàÏ?d ¼ÓDm„ @   ËáÏ?d X¼Ó.rl @   ÌâÏ?d ˜¼Ó‡nî @   ÍãÏ?d ؼÓÈ”×Ï @   ÎäÏ?d ½ÓÜ[' @   ÏåÏ?d X½Ó‹°ÀÄ @   ÐæÏ?d ˜½Ó«EÂ: @   ÑçÏ?d ؽÓõF˜< @   ÒèÏ?d ¾Óh8ý @   ÓéÏ?d X¾Ó]49i @   ÔêÏ?d ˜¾Ó}Á;— @   ÕëÏ?d ؾÓ»Ò‚¶ @   ÖìÏ?d ¿Ókš^ @   ×íÏ?d X¿ÓUW«] @   ØîÏ?d ˜¿Óu¢©£ @uÐÀÓ   ÙïÏ?d Ø¿ÓNñ‘I @   ÚðÏ?d 0ÀÓ*À @   ÛñÏ?d pÀÓ7Á @   ÜòÏ?d °ÀÓ?ÂÃq @   ÝóÏ?d ðÀÓùÑzP @   ÞôÏ?d 0ÁÓ)™ö¸ @   ßõÏ?d pÁÓ«óJë @   àöÏ?d °ÁÓ‹H @   á÷Ï?d ðÁÓÕ @   âøÏ?d€ 0ÂÓÎk @   ùÏ?d pÂÓ`SÖ @   úÏ?d °ÂÓ:•Q( @   ûÏ?d ðÂÓ9Ïä @   üÏ?d 0ÃÓ釟  @   ýÏ?d pÃÓøeu @   þÏ?d °ÃÓ9 g‹ @   ÿÏ?d ðÃÓ:/ ø @   Ð?d 0ÄÓ#aø÷ @    Ð?d pÄÓÓŽ @    Ð?d °ÄÓóëp @    Ð?d ðÄÓð±B¼ @    Ð?d 0ÅÓ ùÎT @    Ð?d pÅÓІ4- @   Ð?d °ÅÓðs6Ó @   Ð?d ðÅÓÍc O @   Ð?d 0ÆÓP'­Ž @    Ð?d pÆÓ XW÷ @    Ð?d °ÆÓ€­U  @    Ð?d ðÆÓƒ÷Å @    Ð?d 0ÇÓS¿›- @    Ð?d pÇÓ£ÀaT @   Ð?d °ÇÓƒ5cª @   Ð?d ðÇÓvÔ: @   Ð?d 0ÈÓB+ˆ' @   Ð?d pÈÓ²Tr^ @   Ð?d °ÈÓ’¡p  @   Ð?d ðÈÓ‘û2l @   Ð?d 0ÉÓA³¾„ @   Ð?d pÉÓ±ÌDý @   Ð?d °ÉÓ‘9F @   Ð?d ðÉÓ½/Z/ @    Ð?d 0ÊÓ kúî @   !Ð?d pÊÓЗ @   "Ð?d °ÊÓðái @   #Ð?d ðÊÓó»@¥ @   $Ð?d 0ËÓ#óÌM @   %Ð?d pËÓÓŒ64 @   &Ð?d °ËÓóy4Ê @   'Ð?d ðËÓ›/j† @   ( Ð?d 0ÌÓ‚a™‰ @   )!Ð?d pÌÓrcð @   *"Ð?d °ÌÓRëa @   +#Ð?d ðÌÓQ±# @   ,$Ð?d 0ÍÓù¯* @   -%Ð?d pÍÓq†US @   .&Ð?d °ÍÓQsW­ @   /'Ð?d ðÍÓlcl1 @   0(Ð?d 0ÎÓñ'Ìð @   1)Ð?d pÎÓX6‰ @   2*Ð?d °ÎÓ!­4w @   3+Ð?d ðÎÓ"÷v» @   4,Ð?d 0ÏÓò¿úS @   5-Ð?d pÏÓÀ* @   6.Ð?d °ÏÓ"5Ô @   7/Ð?d ðÏÓ×ÔeD @   80Ð?d 0ÐÓi Ùö @   91Ð?d pÐÓ™u# @   :2Ð?d °ÐÓ¹€!q @   ;3Ð?d ðÐÓºÚc½ @   <4Ð?d 0ÑÓj’ïU @   =5Ð?d pÑÓší, @   >6Ð?d °ÑÓºÒ @   ?7Ð?d ðÑÓ8 l @   @8Ð?d 0ÒÓ¥M­­ @   A9Ð?d pÒÓU2WÔ @   B:Ð?d °ÒÓuÇU* @   C;Ð?d ðÒÓvæ @   D<Ð?d 0ÓÓ¦Õ› @   E=Ð?d pÓÓVªaw @   F>Ð?d °ÓÓv_c‰ @   G?Ð?d ðÓÓîY(Ô @   H@Ð?d 0ÔÓ÷ÛÛ @   IAÐ?d pÔÓh!¢ @   JBÐ?d °ÔÓ'#\ @   KCÐ?d ðÔÓ$Ça @   LDÐ?d 0ÕÓôíx @   MEÐ?d pÕÓypd} @   N€FÐ?d °ÕÓY…fƒ @   O€GÐ?d ðÕÓd•] @   P€HÐ?d 0ÖÓùÑýÞ @   Q€IÐ?d pÖÓ ®§ @   R€JÐ?d °ÖÓ)[Y @   S€KÐ?d ðÖÓ*G• @   T€LÐ?d 0×ÓúIË} @   U€MÐ?d p×Ó 61 @   V€NÐ?d °×Ó*Ã3ú @   W€OÐ?d ð×Óß"Tj @   X€PÐ?d 0ØÓëÝØw @   Y€QÐ?d pØÓ¢" @   Z€RÐ?d °ØÓ;W ð @   [€SÐ?d ðØÓ8 b< @   \€TÐ?d 0ÙÓèEîÔ @   ]€UÐ?d pÙÓ:­ @   ^€VÐ?d °ÙÓ8ÏS @   _€WÐ?d ðÙÓÙ  @   `€XÐ?d 0ÚÓ‰ª¾ @   a€YÐ?d pÚÓyâPÇ @   b€ZÐ?d °ÚÓYR9 @   c€[Ð?d ðÚÓZMõ @   d€\Ð?d 0ÛÓŠœ @   e€]Ð?d pÛÓzzfd @   f€^Ð?d °ÛÓZdš @   g€_Ð?d ðÛÓ2Ù:Ö @   h€`Ð?d 0ÜÓ+—ÉÙ @   i€aÐ?d pÜÓÛè3  @   j€bÐ?d °ÜÓû1^ @   k€cÐ?d ðÜÓøGs’ @   l€dÐ?d 0ÝÓ(ÿz @   m€eÐ?d pÝÓØp @   n€fÐ?d °ÝÓø…ý @   o€gÐ?d ðÝÓÅ•í @   Ü€ÔÐ?d HùÓ±¯h3 @   Ý€ÕÐ?d ˆùÓã´‡j @   Þ€ÖÐ?d ÈùÓa%´ @   ߀×Ð?d úÓRæ;‡ @   à€ØÐ?d HúÓÐw,Y @   á€ÙÐ?d ˆúÓ‚là @   â€ÚÐ?d€ ÈúÓt>Èx @   €ÛÐ?d ûÓÄüY« @   €ÜÐ?d HûÓFmNu @   €ÝÐ?d ˆûÓÑ?ZÁ @   €ÞÐ?d ÈûÓS®M @   €ßÐ?d üÓn•¨ø @   €àÐ?d HüÓì¿& @   €áÐ?d ˆüÓp­ @   €âÐ?d ÈüÓò<Û @    €ãÐ?d ýÓfö:Ì @    €äÐ?d HýÓäg- @    €åÐ?d ˆýÓs59¦ @    €æÐ?d ÈýÓñ¤.x @    €çÐ?d þÓ°rÃa @   €èÐ?d HþÓ2ãÔ¿ @   €éÐ?d ˆþÓëZ| @   €êÐ?d ÈþÓzM¢ @   €ëÐ?d ÿÓ°oµ @   €ìÐ?d HÿÓ—!xk @   €íÐ?d ˆÿÓslß @   €uÐÔîÐ?d ÈÿÓ‚â{ @   €ïÐ?d ÔæF« @   €ðÐ?d `ÔŒwQu @   €ñÐ?d  ÔÞáV @   €òÐ?d àÔ’Oöˆ @   €óÐ?d Ô…ÔŸ @   €ôÐ?d `Ô„ÃA @   €õÐ?d  ÔF×õ @   €öÐ?d àÔ‘×À+ @   €÷Ð?d ÔÐ-2 @   €øÐ?d `ÔR:ì @   €ùÐ?d  Ôrž“Ÿ @    €úÐ?d àÔð„A @   !€ûÐ?d ÔdŦV @   "€üÐ?d `ÔæT±ˆ @   #€ýÐ?d  Ôq¥< @   $€þÐ?d àÔó—²â @   %€ÿÐ?d Ô\]CŠ @   &€Ñ?d `ÔÞÌTT @   '€Ñ?d  ÔBeäw @   (€Ñ?d àÔÀôó© @   )€Ñ?d ÔT>Ѿ @   *€Ñ?d `ÔÖ¯Æ` @   +€Ñ?d  ÔAýÒÔ @   ,€Ñ?d àÔÃlÅ  @   -€Ñ?d Ô‚º( @   .€Ñ?d `Ô+?Í @   /€ Ñ?d  Ô1#± @   0€ Ñ?d àÔ³²¦Ð @   1€ Ñ?d Ô'x„Ç @   2€ Ñ?d `Ô¥é“ @   3€ Ñ?d  Ô2»‡­ @   4€Ñ?d àÔ°*s @   5€Ñ?d Ô=3Z @   6€Ñ?d `Ô¿†$„ @   7€Ñ?d  Ô#/”§ @   8€Ñ?d àÔ¡¾ƒy @   9€Ñ?d Ô5t¡n @   :€Ñ?d ` Ô·å¶° @   ;€Ñ?d   Ô ·¢ @   <€Ñ?d à Ô¢&µÚ @   =€Ñ?d ÔãðXà @   >€Ñ?d ` ÔaaO @   ?€Ñ?d   Ôïhàü @   @€Ñ?d à Ômù÷" @   A€Ñ?d Ôù3Õ5 @   B€Ñ?d ` Ô{¢Âë @   C€Ñ?d   ÔìðÖ_ @   D€Ñ?d à ÔnaÁ @   E€Ñ?d ÔSZ$f @   F€ Ñ?d ` ÔÑË3¸ @   G€!Ñ?d   ÔMbƒ› @   H€"Ñ?d à ÔÏó”E @   I€#Ñ?d Ô[9¶R @   J€$Ñ?d ` ÔÙ¨¡Œ @   K€%Ñ?d   ÔNúµ8 @   L€&Ñ?d à ÔÌk¢æ @   M€'Ñ?d Ô½Oÿ @   N€(Ñ?d `Ô,X! @   O€)Ñ?d  Ô>$Öâ @   P€*Ñ?d àÔ¼µÁ< @   Q€+Ñ?d Ô(ã+ @   R€,Ñ?d `Ôªîôõ @   S€-Ñ?d  Ô=¼àA @   T€.Ñ?d àÔ¿-÷Ÿ @   U€/Ñ?d Ô¸1d @   V€0Ñ?d `Ô: sÇ @   W€1Ñ?d  Ô¦ Ãä @   X€2Ñ?d àÔ$˜Ô: @   Y€3Ñ?d Ô°Rö- @   Z€4Ñ?d `Ô2Ãáó @   [€5Ñ?d  Ô¥‘õG @   \€6Ñ?d àÔ'â™ @   ]€7Ñ?d ÔfÖ€ @   ^€8Ñ?d `ÔäG^ @   _€9Ñ?d  ÔÄI±- @   `€:Ñ?d àÔFئó @   a€;Ñ?d ÔÒ„ä @   b€<Ñ?d `ÔPƒ“: @   c€=Ñ?d  ÔÇчŽ @   d€>Ñ?d àÔE@P @   e€?Ñ?d Ôˆ+`¦ @   f€@Ñ?d `Ô ºwx @   g€AÑ?d  Ô–Ç[ @   h€BÑ?d àÔ‚Ð… @   i€CÑ?d Ô€Hò’ @   j€DÑ?d `ÔÙåL @   k€EÑ?d  Ô•‹ñø @   l€FÑ?d àÔæ& @   m€GÑ?d ÔVÌ ? @   n€HÑ?d `ÔÔ]á @   o€IÑ?d  ÔåU’" @   p€JÑ?d àÔgÄ…ü @   q€KÑ?d Ôó§ë @   r€LÑ?d `ÔqŸ°5 @   s€MÑ?d  ÔæÍ¤ @   t€NÑ?d àÔd\³_ @   u€OÑ?d Ôéav @   v€PÑ?d `Ôkð¨ @   w€QÑ?d  Ô÷Y·‹ @   x€RÑ?d àÔuÈ U @   y€SÑ?d Ôá‚B @   z€TÑ?d `Ôc“•œ @   {€UÑ?d  ÔôÁ( @   |€VÑ?d àÔvP–ö @   }€WÑ?d Ô7†{ï @   ~€XÑ?d `Ôµl1 @   €YÑ?d  ÔØHóá @   €€ZÑ?d àÔZÙä? @   €[Ñ?d ÔÎÆ( @   ‚€\Ñ?d `ÔL‚Ñö @   ƒ€]Ñ?d  ÔÛÐÅB @   „€^Ñ?d àÔYAÒœ @   …€_Ñ?d Ôdz7{ @   †€`Ñ?d `Ôæë ¥ @   ‡€aÑ?d  ÔzB† @   ˆ€bÑ?d àÔøÓ‡X @   ‰€cÑ?d Ôl¥O @   Š€dÑ?d `Ô‘ @   ‹€eÑ?d  ÔyÚ¦% @   Œ€fÑ?d àÔûK±û @   €gÑ?d Ôº\â @   Ž€hÑ?d `Ô8 K< @   €iÑ?d  Ô Åÿ @   €jÑ?d àÔ‹•Ò! @   ‘€kÑ?d Ô_ð6 @   ’€lÑ?d `ÔÎçè @   “€mÑ?d  Ô œó\uÐ Ô @   ”€nÑ?d àÔˆ ä‚ @   •€oÑ?d 8 Ô@ÄÐ @   –€pÑ?d x ÔÂU @   —€qÑ?d ¸ Ô^ü²- @   ˜€rÑ?d ø ÔÜm¥ó @   ™€sÑ?d 8!ÔH§‡ä @   š€tÑ?d x!ÔÊ6: @   ›€uÑ?d ¸!Ô]d„Ž @   œ€vÑ?d ø!Ôßõ“P @   €wÑ?d 8"Ôž#~I @   ž€xÑ?d x"Ô²i— @   Ÿ€yÑ?d ¸"Ô<¼Àä @    €zÑ?d ø"Ô¾-×: @   ¡€{Ñ?d 8#Ô*çõ- @   ¢€|Ñ?d x#Ô¨vâó @   £€}Ñ?d ¸#Ô?$öG @   ¤€~Ñ?d ø#Ô½µá™ @   ¥€Ñ?d 8$ÔmEý @   ¦€€Ñ?d x$Ôï‰R# @   §€Ñ?d ¸$Ôs â @   ¨€‚Ñ?d ø$Ôñ±õÞ @   ©€ƒÑ?d 8%Ôe{×É @   ª€„Ñ?d x%ÔçêÀ @   «€…Ñ?d ¸%Ôp¸Ô£ @   ¬€†Ñ?d ø%Ôò)Ã} @   ­€‡Ñ?d 8&Ô³ÿ.d @   ®€ˆÑ?d x&Ô1n9º @   ¯€‰Ñ?d ¸&Ôf·y @   °€ŠÑ?d ø&Ô‚÷ § @   ±€‹Ñ?d 8'Ô=‚° @   ²€ŒÑ?d x'Ô”¬•n @   ³€Ñ?d ¸'ÔþÚ @   ´€ŽÑ?d ø'Ôo– @   µ€Ñ?d 8(Ô R5- @   ¶€Ñ?d x(ÔŽÃ"ó @   ·€‘Ñ?d ¸(Ôj’Ð @   ¸€’Ñ?d ø(Ôû… @   ¹€“Ñ?d 8)Ô1§ @   º€”Ñ?d x)Ô† °Ç @   »€•Ñ?d ¸)Ôò¤s @   ¼€–Ñ?d ø)Ô“c³­ @   ½€—Ñ?d 8*ÔÒµ^´ @   ¾€˜Ñ?d x*ÔP$Ij @   ¿€™Ñ?d ¸*ÔÞ-æ‹ @   À€šÑ?d ø*Ô\¼ñU @   Á€›Ñ?d 8+ÔÈvÓB @   €œÑ?d x+ÔJçÄœ @   ÀÑ?d ¸+ÔݵÐ( @   Ä€žÑ?d ø+Ô_$Çö @   Å€ŸÑ?d 8,Ôb" @   Æ€ Ñ?d x,ÔàŽ5Ï @   Ç€¡Ñ?d ¸,Ô|'…ì @   È€¢Ñ?d ø,Ôþ¶’2 @   É€£Ñ?d 8-Ôj|°% @   Ê€¤Ñ?d x-Ôèí§û @   Ë€¥Ñ?d ¸-Ô¿³O @   Ì€¦Ñ?d ø-Ôý.¤‘ @   Í€§Ñ?d 8.Ô¼øIˆ @   ΀¨Ñ?d x.Ô>i^V @   Ï€©Ñ?d ¸.ÔaЕ @   ЀªÑ?d ø.ÔðÇK @   Ñ€«Ñ?d 8/Ô:å\ @   Ò€¬Ñ?d x/Ô›«ò‚ @   Ó€­Ñ?d ¸/Ô ùæ6 @   Ô€®Ñ?d ø/ÔŽhñè @   Õ€¯Ñ?d 80Ô‰tbn @   Ö€°Ñ?d x0Ô åu° @   ×€±Ñ?d ¸0Ô—LÅ“ @   Ø€²Ñ?d ø0ÔÝÒM @   Ù€³Ñ?d 81ÔðZ @   Ú€´Ñ?d x1Ô†ç„ @   Û€µÑ?d ¸1Ô”Ôó0 @   Ü€¶Ñ?d ø1ÔEäî @   Ý€·Ñ?d 82ÔW“ ÷ @   Þ€¸Ñ?d x2ÔÕ) @   ߀¹Ñ?d ¸2Ôõ ·Z @   à€ºÑ?d ø2Ôw „ @   ျÑ?d 83ÔãW‚“ @   ‼Ñ?d€ x3Ô bM @  €½Ñ?d ¸3ÔÖ’>Ð @  €¾Ñ?d ø3ÔT) @  €¿Ñ?d 84Ô\!" @  €ÀÑ?d x4ÔÞ°5Ë @  €ÁÑ?d ¸4ÔŒ«Ú’ @  €ÂÑ?d ø4Ô:ÍL @  €ÃÑ?d 85ÔTB°! @  €ÄÑ?d x5ÔÖÓ§ÿ @   €ÅÑ?d ¸5Ô„ÈH¦ @   €ÆÑ?d ø5ÔY_x @   €ÇÑ?d 86Ô‚ÆIŒ @   €ÈÑ?d x6ÔW^R @   €ÉÑ?d ¸6ÔRL±  @  €ÊÑ?d ø6ÔÐݦÕ @  €ËÑ?d 87Ô'åX @  €ÌÑ?d x7Ô¥•ò† @  €ÍÑ?d ¸7Ô÷Žß @  €ÎÑ?d ø7Ôu  @  €ÏÑ?d 88Ô=kRÅ @  €ÐÑ?d x8Ô¿úE @  €ÑÑ?d ¸8ÔíáªB @  €ÒÑ?d ø8Ôop½œ @  €ÓÑ?d 89Ô5Àñ @  €ÔÑ?d x9Ô·™×/ @  €ÕÑ?d ¸9Ôå‚8v @  €ÖÑ?d ø9Ôg/¨ @  €×Ñ?d 8:ÔãŒ9\ @  €ØÑ?d x:Ôa.‚ @  €ÙÑ?d ¸:Ô3ÁÛ @  €ÚÑ?d ø:Ô±—Ö @  €ÛÑ?d 8;ÔWH²8 @   €ÜÑ?d x;ÔÕÙ¥æ @  !€ÝÑ?d ¸;Ô‡ÂJ¿ @  "€ÞÑ?d ø;ÔS]a @  #€ßÑ?d 8<Ôý!Ck @  $€àÑ?d x<Ô°Tµ @  %€áÑ?d ¸<Ô-«»ì @  &€âÑ?d ø<Ô¯:¬2 @  '€ãÑ?d 8=ÔõBÑ_ @  (€äÑ?d x=ÔwÓÆ @  )€åÑ?d ¸=Ô%È)Ø @  *€æÑ?d ø=Ô§Y> @  +€çÑ?d 8>Ô#Æ(ò @  ,€èÑ?d x>Ô¡W?, @  -€éÑ?d ¸>ÔóLÐu @  .€êÑ?d ø>ÔqÝÇ« @  /€ëÑ?d 8?Ô†„& @  0€ìÑ?d x?Ô•“ø @  1€íÑ?duÐ@Ô7 ¸?ÔVŽ|¡ @  2€îÑ?d ø?Ô©Ÿ @  3ïÑ?d P@Ô¸væ @  4ðÑ?d @Ô6Mt @  5ñÑ?d Ð@ÔÆ2Ža @  6òÑ?d AÔz‰ @  7óÑ?d PAÔÛäÒ @  8ôÑ?d AÔ>.æ, @  9õÑ?d ÐAÔÎQU @  :öÑ?d BÔS¼” @  ;÷Ñ?d PBÔÈ_ @  <øÑ?d BÔèª @  =ùÑ?d ÐBÔÕåø @  >úÑ?d CÔÈi @  ?ûÑ?d PCÔÒœ‰ @  @üÑ?d CÔòi’w @  AýÑ?d ÐCÔh @  BþÑ?d DÔX› @  CÿÑ?d PDÔX&@p @  DÒ?d DÔxÓBŽ @  EÒ?d ÐDÔˆ¬¸÷ @  FÒ?d EÔXä4 @  GÒ?d PEÔPEÒD @  HÒ?d EÔp°Ðº @  IÒ?d ÐEÔ€Ï*à @  JÒ?d FÔ‹Š @  KÒ?d PFÔ†Á+é @  LÒ?d FÔ¦4) @  M Ò?d ÐFÔVKÓn @  N Ò?d GÔ†_† @  O Ò?d PGÔ#‡= @  P Ò?d GÔ~vö¿ @  Q€ Ò?d ÐGÔŽ Æ @  R€Ò?d HÔºö€Û @  S€Ò?d PHÔDìCÜ @  T€Ò?d HÔdA" @  U€Ò?d ÐHÔ”f»[ @  V€Ò?d IÔD.7³ @  W€Ò?d PIÔLÑè @  X€Ò?d IÔlzÓ @  Y€Ò?d ÐIÔœ)o @  Z€Ò?d JÔA‰® @  [€Ò?d PJÔš (E @  \€Ò?d JÔºþ*» @  ]€Ò?d ÐJÔJР@  ^€Ò?d KÔšÉ\* @  _€Ò?d PKÔ.Ï£! @  `€Ò?d KÔ:¡ß @  a€Ò?d ÐKÔþE[¦ @  b€Ò?d LÔç ¨© @  c€Ò?d PLÔ„¦Rr @  d€ Ò?d LÔ¤SPŒ @  e€!Ò?d ÐLÔT,ªõ @  f€"Ò?d MÔ„d& @  g€#Ò?d PMÔŒÅÀF @  h€$Ò?d MÔ¬0¸ @  i€%Ò?d ÐMÔ\O8Á @  j€&Ò?d NÔÁ ˜ @  k€'Ò?d PNÔZA9ë @  l€(Ò?d NÔz´; @  m€)Ò?d ÐNÔŠËÁl @  n€*Ò?d OÔZƒM„ @  o€+Ò?d POÔÿƒ•? @  p€,Ò?d OÔßv—Á @  q€-Ò?d ÐOÔ/ m¸ @  r€.Ò?d PÔ‘×Ñ  @  s€/Ò?d PPÔoÍ  @  t€0Ò?d PÔO8ó @  u€1Ò?d ÐPÔ¿GêŠ @  v€2Ò?d QÔofb @  w€3Ò?d PQÔg®€9 @  x€4Ò?d QÔG[‚Ç @  y€5Ò?d ÐQÔ·$x¾ @  z€6Ò?d RÔ*`Ø @  {€7Ò?d PRÔ±*y” @  |€8Ò?d RÔ‘ß{j @  }€9Ò?d ÐRÔa  @  ~€:Ò?d SÔ±è û @  €;Ò?d PSÔH¿ÄS @  €€<Ò?d SÔhJÆ­ @  €=Ò?d ÐSÔ˜5<Ô @  ‚€>Ò?d TÔ{ÏÛ @  ƒ€?Ò?d PTÔ†  @  „€@Ò?d TÔ2s"ï @  …€AÒ?d ÐTÔ ؖ @  †€BÒ?d UÔDT~ @  ‡€CÒ?d PUÔå²% @  ˆ€DÒ?d UÔ:°Û @  ‰€EÒ?d ÐUÔÊoJ¢ @  Š€FÒ?d VÔW+êc @  ‹€GÒ?d PVÔÌaKˆ @  Œ€HÒ?d VÔì”Iv @  €IÒ?d ÐVÔë³ @  Ž€JÒ?d WÔÌ£?ç @  €KÒ?d PWÔi£ç\ @  €LÒ?d WÔIVå¢ @  ‘€MÒ?d ÐWÔ¹)Û @  ’€NÒ?d XÔÖ“Æ @  “€OÒ?d PXÔsÌPÁ @  ”€PÒ?d XÔS9R? @  •€QÒ?d ÐXÔ£F¨F @  –€RÒ?d YÔs$® @  —€SÒ?d PYÔ{¯Âõ @  ˜€TÒ?d YÔ[ZÀ  @  ™€UÒ?d ÐYÔ«%:r @  š€VÒ?d ZÔ6aš³ @  ›€WÒ?d PZÔ­+;X @  œ€XÒ?d ZÔÞ9¦ @  €YÒ?d ÐZÔ}¡Ãß @  ž€ZÒ?d [Ô­éO7 @  Ÿ€[Ò?d P[Ôï°< @   €\Ò?d [Ô9²Â @  ¡€]Ò?d Ð[ÔÉeH» @  ¢€^Ò?d \ÔÐ+»´ @  £€_Ò?d P\Ô³†Ao @  ¤€`Ò?d \Ô“sC‘ @  ¥€aÒ?d Ð\Ôc ¹è @  ¦€bÒ?d ]Ô³D5 @  §€cÒ?d P]Ô»åÓ[ @  ¨€dÒ?d ]ԛѥ @  ©€eÒ?d Ð]Ôko+Ü @  ª€fÒ?d ^Ôö+‹ @  «€gÒ?d P^Ôma*ö @  ¬€hÒ?d ^ÔM”( @  ­€iÒ?d Ð^Ô½ëÒq @  ®€jÒ?d _Ôm£^™ @  ¯€kÒ?d P_ÔÈ£†" @  °€lÒ?d _ÔèV„Ü @  uÐ`Ô±€mÒ?d Ð_Ô)~¥ @  ²€nÒ?d (`Ô¦ÑË= @  ³€oÒ?d h`ÔXË: @  ´€pÒ?d ¨`Ôx> Ä @  µ€qÒ?d è`ÔˆAð½ @  ¶€rÒ?d (aÔX |U @  ·€sÒ?d haÔP¨š @  ¸€tÒ?d ¨aÔp]˜ð @  ¹€uÒ?d èaÔ€"b‰ @  º€vÒ?d (bÔfÂH @  »€wÒ?d hbÔ†,c£ @  ¼€xÒ?d ¨bÔ¦Ùa] @  ½€yÒ?d èbÔV¦›$ @  ¾€zÒ?d (cÔ†îÌ @  ¿€{Ò?d hcÔœïîU @  À€|Ò?d ¨cÔ¼ì« @  Á€}Ò?d ècÔLeÒ @  €~Ò?d (dÔU+åÝ @  ÀÒ?d hdÔÛ^… @  Ä€€Ò?d ¨dÔûå\{ @  Å€Ò?d èdÔ š¦ @  Æ€‚Ò?d (eÔÛÒ*ê @  Ç€ƒÒ?d heÔÓs̱ @  È€„Ò?d ¨eÔó†ÎO @  É€…Ò?d èeÔù46 @  Ê€†Ò?d (fÔž½”÷ @  Ë€‡Ò?d hfÔ÷5 @  Ì€ˆÒ?d ¨fÔ%7â @  Í€‰Ò?d èfÔÕ}Í› @  ΀ŠÒ?d (gÔ5As @  Ï€‹Ò?d hgÔ 5™È @  ЀŒÒ?d ¨gÔ€À›6 @  Ñ€Ò?d ègÔp¿aO @  Ò€ŽÒ?d (hÔD@íR @  Ó€Ò?d hhÔºZ.U @  Ô€Ò?d ¨hÔš¯,« @  Õ€‘Ò?d èhÔjÐÖÒ @  Ö€’Ò?d (iÔº˜Z: @  ×€“Ò?d hiÔ²9¼a @  Ø€”Ò?d ¨iÔ’̾Ÿ @  Ù€•Ò?d èiÔb³Dæ @  Ú€–Ò?d (jÔÿ÷ä' @  Û€—Ò?d hjÔd½EÌ @  Ü€˜Ò?d ¨jÔDHG2 @  Ý€™Ò?d èjÔ´7½K @  Þ€šÒ?d (kÔd1£ @  ߀›Ò?d hkÔÐyΨ @  à€œÒ?d ¨kÔðŒÌV @  á€Ò?d èkÔó6/ @  â€žÒ?d€ (lÔm~Ù† @  €ŸÒ?d hlÔï’kt @  € Ò?d ¨lÔÏgiŠ @  €¡Ò?d èlÔúQh @  €¢Ò?d (mÔ*äö @  €£Ò?d hmÔì ]× @  €¤Ò?d ¨mÔÌÿ_) @  €¥Ò?d èmÔò2ú* @  €¦Ò?d (nÔovZë @   €§Ò?d hnÔ1uí @   €¨Ò?d ¨nÔ€ @   €©Ò?d ènÔ$¶‡ @   €ªÒ?d (oÔôþo @   €«Ò?d hoÔ2í6N @  €¬Ò?d ¨oÔ4° @  €­Ò?d èoÔt¯S @  €®Ò?d (pÔ?ªá @  €¯Ò?d hpÔù+  @  €°Ò?d ¨pÔ$ )õ @  €±Ò?d èpÔ:(a @  €²Ò?d (qÔÁr¤‰ @  €³Ò?d hqÔa¨ @  €´Ò?d ¨qÔ'”V @  €µÒ?d èqÔYºU @  €¶Ò?d (rÔ„” @  €·Ò?d hrÔÚ@’ @  €¸Ò?d ¨rÔúëBl @  €¹Ò?d èrÔÏÝCø @  €ºÒ?d (sÔ•Ï @  €»Ò?d hsÔÙ†v1 @  €¼Ò?d ¨sÔùstÏ @  €½Ò?d èsÔ{Èœ @   €¾Ò?d (tÔbW;“ @  !€¿Ò?d htÔ4ã/´ @  "€ÀÒ?d ¨tÔ-J @  #€ÁÒ?d ètÔ! ,Þ @  $€ÂÒ?d (uÔñh 6 @  %€ÃÒ?d huÔ7{ @  &€ÄÒ?d ¨uÔŽé @  '€ÅÒ?d èuÔ)C¾ê @  (€ÆÒ?d (vÔ´+ @  )€ÇÒ?d hvÔêD- @  *€ÈÒ?d ¨vÔÊñFÓ @  +€ÉÒ?d èvÔÿÇGG @  ,€ÊÒ?d (wÔ/˯ @  -€ËÒ?d hwÔéœrŽ @  .€ÌÒ?d ¨wÔÉipp @  /€ÍÒ?d èwÔZë“ @  0€ÎÒ?d (xÔnúgŽ @  1€ÏÒ?d hxÔU©_d @  2€ÐÒ?d ¨xÔu\]š @  3€ÑÒ?d èxÔ@j\ @  4€ÒÒ?d (yÔ"Ðæ @  5€ÓÒ?d hyÔV1iÇ @  6€ÔÒ?d ¨yÔvÄk9 @  7€ÕÒ?d èyÔH Î: @  8€ÖÒ?d (zÔÕMnû @  9€×Ò?d hzÔ‹N4ý @  :€ØÒ?d ¨zÔ«»6 @  ;€ÙÒ?d èzÔž7— @  <€ÚÒ?d ({ÔNÅ» @  =€ÛÒ?d h{ÔˆÖ^ @  >€ÜÒ?d ¨{Ô¨#  @  ?€ÝÒ?d è{Ô„Nºa @  @€ÞÒ?d (|ÔIn @  A€ßÒ?d h|Ô;äHX @  B€àÒ?d ¨|ÔJ¦ @  C€áÒ?d è|Ô.'K2 @  D€âÒ?d (}ÔþoÇÚ @  E€ãÒ?d h}Ô8|~û @  F€äÒ?d ¨}Ô‰| @  G€åÒ?d è}Ô&DÙ @  H€æÒ?d (~Ô»yÇ @  I€çÒ?d h~Ôå#Á @  J€èÒ?d ¨~ÔÅö!? @  K€éÒ?d è~ÔðÀ « @  L€êÒ?d (Ô ˆ¬C @  M€ëÒ?d hÔæ›b @  N€ìÒ?d ¨ÔuЀÔ'Ænœ @  O€íÒ?d èÔUŒ @  P€îÒ?d @€Ô;¼n  @  Q€ïÒ?d €€Ô¢‹CÁ @  R€ðÒ?d À€Ô T @  S€ñÒ?d ÔGõν @  T€òÒ?d @ÔÅdÙc @  U€óÒ?d €Ô¡ub @  V€ôÒ?d ÀÔ#‚b¼ @  W€õÒ?d ‚Ôšp  @  X€öÒ?d @‚Ô€ g~ @  Y€÷Ò?d €‚Ô|l(X @  Z€øÒ?d À‚Ôþý?† @  [€ùÒ?d ƒÔ™¥$ @  \€úÒ?d @ƒÔƒ²ú @  ]€ûÒ?d €ƒÔôû @  ^€üÒ?d ÀƒÔýe % @  _€ýÒ?d „ÔäÐQ§ @  `€þÒ?d @„ÔfAFy @  a€ÿÒ?d €„Ôð0Fà @  b€Ó?d À„Ôr¡Q> @  c€Ó?d …ÔNËœ @  d€Ó?d @…Ô—ßÜB @  e€Ó?d €…Ôó¨pC @  f€Ó?d À…Ôq9g @  g€Ó?d †ÔP!u @  h€Ó?d @†ÔÒ°b_ @  i€Ó?d €†Ô.×-y @  j€Ó?d À†Ô¬F:§ @  k€ Ó?d ‡ÔË©  @  l€ Ó?d @‡ÔI8·Û @  m€ Ó?d €‡Ô-OÚ @  n€ Ó?d À‡Ô¯Þ  @  o€ Ó?d ˆÔŠÜ $ @  p€Ó?d @ˆÔMú @  q€Ó?d €ˆÔ‘z60 @  r€Ó?d ÀˆÔë!î @  s€Ó?d ‰Ôt»L @  t€Ó?d @‰Ôö•¬’ @  u€Ó?d €‰Ô’â“ @  v€Ó?d À‰ÔsM @  w€Ó?d ŠÔ1kQ @  x€Ó?d @ŠÔ³ú @  y€Ó?d €ŠÔO]© @  z€Ó?d ÀŠÔÍ Jw @  {€Ó?d ‹ÔªãÐÕ @  |€Ó?d @‹Ô(rÇ  @  }€Ó?d €‹ÔLk  @  ~€Ó?d À‹ÔΔ|Ô @  €Ó?d ŒÔšpõ @  €€Ó?d @ŒÔá+ @  €Ó?d €ŒÔa= @  ‚€ Ó?d ÀŒÔžðã @  ƒ€!Ó?d ÔùœA @  „€"Ó?d @Ô{Ž‹Ÿ @  …€#Ó?d €Ôù'ž @  †€$Ó?d ÀÔh0@ @  ‡€%Ó?d ŽÔ¼p"\ @  ˆ€&Ó?d @ŽÔ>á5‚ @  ‰€'Ó?d €ŽÔ†z¤ @  Š€(Ó?d ÀŽÔ@mz @  ‹€)Ó?d Ô'ø÷Ø @  Œ€*Ó?d @Ô¥ià @  €+Ó?d €ÔÁL @  Ž€,Ó?d ÀÔC[Ù @  €-Ó?d Ôì¬kV @  €.Ó?d @Ôn=|ˆ @  ‘€/Ó?d €Ô÷ QB @  ’€0Ó?d ÀÔu›Fœ @  “€1Ó?d ‘ÔtÜ> @  ”€2Ó?d @‘ÔåËà @  •€3Ó?d €‘Ôô’gá @  –€4Ó?d À‘Ôvp? @  —€5Ó?d ’ÔWb# @  ˜€6Ó?d @’ÔÕŠuý @  ™€7Ó?d €’Ô)í:Û @  š€8Ó?d À’Ô«|- @  ›€9Ó?d “ÔÌ“·§ @  œ€:Ó?d @“ÔN y @  €;Ó?d €“Ô*u x @  ž€<Ó?d À“Ô¨ä¦ @  Ÿ€=Ó?d ”Ô±QC$ @   €>Ó?d @”Ô3ÀTú @  ¡€?Ó?d €”ÔÇUý @  ¢€@Ó?d À”ÔEB# @  £€AÓ?d •Ô"nØ @  ¤€BÓ?d @•Ô ÿÏ_ @  ¥€CÓ?d €•ÔĈc^ @  ¦€DÓ?d À•ÔFt€ @  §€EÓ?d –Ôgfœ @  ¨€FÓ?d @–ÔåqB @  ©€GÓ?d €–Ô÷>d @  ª€HÓ?d À–Ô›f)º @  «€IÓ?d —Ôü‰³ @  ¬€JÓ?d @—Ô~¤Æ @  ­€KÓ?d €—ÔoÇ @  ®€LÓ?d À—Ô'׋° @  ¯MÓ?d ˜ÔÕ‹ @  °NÓ?d @˜Ô€DœN @  ±OÓ?d €˜Ôs±„ @  ²PÓ?d À˜Ô›â¦Z @  ³QÓ?d ™Ôü <ø @  ´RÓ?d @™Ô~œ+& @  µSÓ?d €™Ôë‡' @  ¶TÓ?d À™Ô˜zù @  ·UÓ?d šÔ¹b‚å @  ¸VÓ?d @šÔ;ó•; @  ¹WÓ?d €šÔÇ”Ú @  ºXÓ?d ÀšÔEÍà @  »YÓ?d ›Ô"êWa @  ¼ZÓ?d @›Ô {@¿ @  ½[Ó?d €›ÔÄ ì¾ @  ¾\Ó?d À›ÔFû` @  ¿]Ó?d œÔñ/¥p @  À^Ó?d @œÔs¾²® @  Á_Ó?d €œÔw>¦¸ @  Â`Ó?d ÀœÔõ¯±f @  ÃaÓ?d Ô’@+Ä @  ÄbÓ?d @ÔÑ< @  ÅcÓ?d €Ôt¦ @  ÆdÓ?d ÀÔö7‡Å @  ÇeÓ?d žÔ×/•Ù @  ÈfÓ?d @žÔU¾‚ @  ÉgÓ?d €žÔ©ÙÍ! @  ÊhÓ?d ÀžÔ+HÚÿ @  ËiÓ?d ŸÔL§@] @  ÌjÓ?d @ŸÔÎ6Wƒ @  ÍkÓ?d €ŸÔªAû‚ @  ÎlÓuРÔ?d ÀŸÔ(Ðì\ @  ÏmÓ?d  ÔH&¾ @  ÐnÓ?d X ÔÊ·©Ù @  ÑoÓ?d ˜ ÔS€„ @  ÒpÓ?d Ø ÔÑ“Í @  ÓqÓ?d ¡Ô¶þ o @  ÔrÓ?d X¡Ô4o± @  ÕsÓ?d ˜¡ÔP²° @  ÖtÓ?d Ø¡ÔÒ‰¥n @  ×uÓ?d ¢Ôó‘·r @  ØvÓ?d X¢Ôq ¬ @  ÙwÓ?d ˜¢ÔgïŠ @  ÚxÓ?d Ø¢ÔöøT @  ÛyÓ?d £Ôhbö @  ÜzÓ?d X£Ôêˆu( @  Ý{Ó?d ˜£ÔŽÿÙ) @  Þ|Ó?d Ø£Ô nÎ÷ @  ß}Ó?d ¤ÔÛ–u @  à~Ó?d X¤Ô—J« @  áÓ?d ˜¤Ô~\Ô> @  â€Ó?d€ ؤÔ—‘/ @  Ó?d ¥Ô?ý… @  ‚Ó?d X¥Ô“®ê[ @  ƒÓ?d ˜¥Ô2½· @  „Ó?d Ø¥Ô°ªi @  …Ó?d ¦Ô_«ç @  †Ó?d X¦ÔÝ:ðÑ @  ‡Ó?d ˜¦Ôïïà @  ˆÓ?d ئÔm~÷S @   ‰Ó?d §ÔÏØ– @   ŠÓ?d X§ÔMI @   ‹Ó?d ˜§ÔìwÖ. @   ŒÓ?d اÔnæÁð @   Ó?d ¨Ô(÷ J @  ŽÓ?d X¨Ôªf·” @  Ó?d ˜¨ÔPBûÄ @  Ó?d بÔÒÓì @  ‘Ó?d ©ÔpuU @  ’Ó?d X©Ôòäš‹ @  “Ó?d ˜©ÔSÚÍg @  ”Ó?d Ø©ÔÑKÚ¹ @  •Ó?d ªÔ>á—ß @  –Ó?d XªÔ¼p€ @  —Ó?d ˜ªÔŽ¥] @  ˜Ó?d تÔ 4‡ƒ @  ™Ó?d «Ô®’æÌ @  šÓ?d X«Ô,ñ @  ›Ó?d ˜«Ô=¦þ @  œÓ?d ثԬ±  @  Ó?d ¬Ôd ¯ˆ @  žÓ?d X¬Ôæ¸V @  ŸÓ?d ˜¬Ôêj @    Ó?d جÔ™ý´ @  !¡Ó?d ­Ô°?œû @  "¢Ó?d X­Ô2®‹% @  #£Ó?d ˜­Ô“ÜÉ @  $¤Ó?d Ø­ÔË @  %¥Ó?d ®Ôþ«†q @  &¦Ó?d X®Ô|:‘¯ @  '§Ó?d ˜®ÔNïó @  (¨Ó?d Ø®ÔÌ~–- @  )©Ó?d ¯ÔnØ÷b @  *ªÓ?d X¯ÔìI༠@  +«Ó?d ˜¯ÔMw·P @  ,¬Ó?d دÔÏæ Ž @  -­Ó?d °ÔÖñ› @  .®Ó?d X°ÔGæE @  /¯Ó?d ˜°Ô{cª @  0°Ó?d ذÔùò½Ë @  1±Ó?d ±Ô[TÜ„ @  2²Ó?d X±ÔÙÅËZ @  3³Ó?d ˜±Ôxûœ¶ @  4´Ó?d رÔúj‹h @  5µÓ?d ²ÔÀÆ @  6¶Ó?d X²Ô—QÑÐ @  7·Ó?d ˜²Ô¥„ÁŒ @  8¸Ó?d زÔ'ÖR @  9¹Ó?d ³Ô…³· @  :ºÓ?d X³Ô" Ã @  ;»Ó?d ˜³Ô¦÷/ @  <¼Ó?d سÔ$àñ @  =½Ó?d ´ÔO-þY @  >¾Ó?d X´Ôͼé‡ @  ?¿Ó?d ˜´Ôå~¨8 @  @ÀÓ?d Ø´Ôgï¿æ @  AÁÓ?d µÔÅIÞ© @  BÂÓ?d XµÔGØÉw @  CÃÓ?d ˜µÔææž› @  DÄÓ?d صÔdw‰E @  EÅÓ?d ¶Ô‹ÝÄ# @  FÆÓ?d X¶Ô LÓý @  GÇÓ?d ˜¶Ô;™Ã¡ @  HÈÓ?d ضÔ¹Ô @  IÉÓ?d ·Ô®µ0 @  JÊÓ?d X·Ô™?¢î @  KËÓ?d ˜·Ô8õ @  LÌÓ?d Ø·ÔºâÜ @  MÍÓ?d ¸Ôüƒf @  NÎÓ?d X¸Ô~”¸ @  OÏÓ?d ˜¸Ô„4Øè @  PÐÓ?d ظÔ¥Ï6 @  QÑÓ?d ¹Ô¤®y @  RÒÓ?d X¹Ô&’¹§ @  SÓÓ?d ˜¹Ô‡¬îK @  TÔÓ?d عÔ=ù• @  UÕÓ?d ºÔê—´ó @  VÖÓ?d XºÔh£- @  W×Ó?d ˜ºÔZÓ³q @  XØÓ?d غÔØB¤¯ @  YÙÓ?d »ÔzäÅà @  ZÚÓ?d X»ÔøuÒ> @  [ÛÓ?d ˜»ÔYK…Ò @  \ÜÓ?d Ø»ÔÛÚ’  @  ]ÝÓ?d ¼Ô°zŒ¤ @  ^ÞÓ?d X¼Ô2ë›z @  _ßÓ?d ˜¼ÔD~ÉF @  `àÓ?d ؼÔÆïÞ˜ @  aáÓ?d ½ÔdI¿× @  bâÓ?d X½ÔæØ¨  @  cãÓ?d ˜½ÔGæÿå @  däÓ?d ؽÔÅwè; @  eåÓ?d ¾Ô*Ý¥] @  fæÓ?d X¾Ô¨L²ƒ @  gçÓ?d ˜¾Ôš™¢ß @  hèÓ?d ؾÔµ @  iéÓ?d ¿Ôº®ÔN @  jêÓ?d X¿Ô8?à @  këÓ?d ˜¿Ô™”| @uÐÀÔ  lìÓ?d ؿԃ¢ @  míÓ?d 0ÀÔ Ž?W @  nîÓ?d pÀÔ(‰ @  oïÓ?d °ÀÔu;dÙ @  pðÓ?d ðÀÔ÷ªs @  qñÓ?d 0ÁÔU H @  ròÓ?d pÁÔ×– @  sóÓ?d °ÁÔv£Rz @  tôÓ?d ðÁÔô2E¤ @  uõÓ?d 0ÂԘ @  vöÓ?d pÂÔ™  @  w÷Ó?d °ÂÔ«Ü@ @  xøÓ?d ðÂÔ)Mž @  yùÓ?d 0ÃÔ‹ëyÑ @  zúÓ?d pÃÔ zn @  {ûÓ?d °ÃÔ¨D9ã @  |üÓ?d ðÃÔ*Õ.= @  }ýÓ?d 0ÄÔAu0• @  ~þÓ?d pÄÔÃä'K @  ÿÓ?d °ÄÔVØhÍ @  €Ô?d ðÄÔÔI @  Ô?d 0ÅÔvï\ @  ‚Ô?d pÅÔô~ ‚ @  ƒÔ?d °ÅÔU@^n @  „Ô?d ðÅÔ×ÑI° @  …Ô?d 0ÆÔ8{Ö @  †Ô?d pÆÔºê @  ‡Ô?d °ÆÔˆ?T @  ˆÔ?d ðÆÔ ®Š @  ‰ Ô?d 0ÇÔ¨uÅ @  Š Ô?d pÇÔ*™b @  ‹ Ô?d °ÇÔ‹§5÷ @  Œ Ô?d ðÇÔ 6") @   Ô?d 0ÈÔO'C“ @  ŽÔ?d pÈÔͶTM @  Ô?d °ÈÔ7’ @  Ô?d ðÈԵà @  ‘Ô?d 0ÉÔ¥nŒ @  ’Ô?d pÉÔ•4yR @  “Ô?d °ÉÔ4 .¾ @  ”Ô?d ðÉÔ¶›9` @  •Ô?d 0ÊÔY1t @  –Ô?d pÊÔÛ cØ @  —Ô?d °ÊÔéus„ @  ˜Ô?d ðÊÔkädZ @  ™Ô?d 0ËÔÉB @  šÔ?d pËÔKÓË @  ›Ô?d °ËÔêíE' @  œÔ?d ðËÔh|Rù @  Ô?d 0ÌÔÜLQ @  žÔ?d pÌÔM[ @  ŸÔ?d °ÌÔ÷Ø ³ @    Ô?d ðÌÔuIm @  ¡!Ô?d 0ÍÔ×ï" @  ¢"Ô?d pÍÔU~hü @  £#Ô?d °ÍÔô@? @  ¤$Ô?d ðÍÔvÑ(Î @  ¥%Ô?d 0ÎÔ™{e¨ @  ¦&Ô?d pÎÔêrv @  §'Ô?d °ÎÔ)?b* @  ¨(Ô?d ðÎÔ«®uô @  ©)Ô?d 0ÏÔ » @  ª*Ô?d pÏÔ‹™e @  «+Ô?d °ÏÔ*§T‰ @  ¬,Ô?d ðÏÔ¨6CW @  ­-Ô?d 0ÐÔdB @  ®.Ô?d pÐÔæ—œ @  ¯/Ô?d °ÐÔ³IÌ @  °0Ô?d ðÐÔž"^ @  ±1Ô?d 0ÑÔ<„?] @  ²2Ô?d pÑÔ¾(ƒ @  ³3Ô?d °ÑÔ+o @  ´4Ô?d ðÑÔºh± @  µ5Ô?d 0ÒÔr%× @  ¶6Ô?d pÒÔð2  @  ·7Ô?d °ÒÔÂT"U @  ¸8Ô?d ðÒÔ@Å5‹ @  ¹9Ô?d 0ÓÔâcTÄ @  º:Ô?d pÓÔ`òC @  »;Ô?d °ÓÔÁÌö @  ¼<Ô?d ðÓÔC]( @  ½=Ô?d 0ÔÔ(ý€ @  ¾>Ô?d pÔÔªl ^ @  ¿?Ô?d °ÔÔ‚®Ká @  À@Ô?d ðÔÔ?\? @  ÁAÔ?d 0ÕÔ¢™=p @  ÂBÔ?d pÕÔ *® @  ÃCÔ?d °ÕÔ6}B @  ÄDÔ?d ðÕÔ§jœ @  ÅEÔ?d 0ÖÔì 'ú @  ÆFÔ?d pÖÔnœ0$ @  ÇGÔ?d °ÖÔ\I x @  ÈHÔ?d ðÖÔÞØ7¦ @  ÉIÔ?d 0×Ô|~Vé @  ÊJÔ?d p×ÔþïA7 @  ËKÔ?d °×Ô_ÑÛ @  ÌLÔ?d ð×ÔÝ@ @  ÍMÔ?d 0ØÔ›Q`¿ @  ÎNÔ?d pØÔÀwa @  ÏOÔ?d °ØÔãä;1 @  ÐPÔ?d ðØÔau,ï @  ÑQÔ?d 0ÙÔÃÓM  @  ÒRÔ?d pÙÔABZ~ @  ÓSÔ?d °ÙÔà| ’ @  ÔTÔ?d ðÙÔbíL @  ÕUÔ?d 0ÚÔGW* @  ÖVÔ?d pÚÔÖ@ô @  ×WÔ?d °ÚÔ=P¨ @  ØXÔ?d ðÚÔ¿’Gv @  ÙYÔ?d 0ÛÔ4&9 @  ÚZÔ?d pÛÔŸ¥1ç @  Û[Ô?d °ÛÔ>›f  @  Ü\Ô?d ðÛÔ¼ qÕ @  Ý]Ô?d 0ÜÔתo} @  Þ^Ô?d pÜÔU;x£ @  ß_Ô?d °ÜÔ#®*Ÿ @  à`Ô?d ðÜÔ¡?=A @  áaÔ?d 0ÝÔ™\ @  âbÔ?d€ pÝÔõËWv @  cÔ?d °ÝÔµ´H³ @  dÔ?d ðÝÔ7%_m @  eÔ?d 0ÞÔÆéæ @  fÔ?d pÞÔŸWþ8 @  gÔ?d °ÞÔc0± @  hÔ?d ðÞÔᡦÀ @  iÔ?d 0ßÔµ˜õ @  jÔ?d pßÔ$+ @   kÔ?d uÐàÔ/°ßÔkS#* @   lÔ?d ðßÔéÂ4ô @   mÔ?d HàÔGÁ|H @   nÔ?d ˆàÔg4~¶ @   oÔ?d ÈàÔ\gF\ @  pÔ?d áÔŒ/Ê´ @  qÔ?d HáÔCQW @  rÔ?d ˆáÔ?¶S© @  sÔ?d ÈáÔù¥êˆ @  tÔ?d âÔdáJI @  uÔ?d HâÔQ×KÝ @  vÔ?d ˆâÔq"I# @  wÔ?d ÈâÔ/!% @  xÔ?d ãÔÿiŸÍ @  yÔ?d HãÔÁ¤:Î @  zÔ?d ˆãÔáQ80 @  {Ô?d ÈãÔ'B @  |Ô?d äÔ> r @  }Ô?d HäÔ :sŠ @  ~Ô?d ˆäÔ+Ïqt @  Ô?d ÈäÔ`½1Á @  €Ô?d åÔ°õ½) @  Ô?d HåÔ2Ÿz @   ‚Ô?d ˆåÔj„ @  !ƒÔ?d ÈåÔÔyº¥ @  "„Ô?d æÔI=d @  #…Ô?d HæÔ| ð @  $†Ô?d ˆæÔ\þ @  %‡Ô?d ÈæÔýC @  &ˆÔ?d çÔÒµÏà @  '‰Ô?d HçÔìxjã @  (ŠÔ?d ˆçÔÌh @  )‹Ô?d ÈçÔ žÑ< @  *ŒÔ?d èÔ>a]! @  +Ô?d HèÔ W\µ @  ,ŽÔ?d ˆèÔ+¢^K @  -Ô?d ÈèÔñf¡ @  .Ô?d éÔÀ¹êI @  /‘Ô?d HéÔSÕqª @  0’Ô?d ˆéÔs sT @  1“Ô?d ÈéÔµ3Êu @  2”Ô?d êÔ(wj´ @  3•Ô?d HêÔAk  @  4–Ô?d ˆêÔ=´iÞ @  5—Ô?d ÈêÔc·3Ø @  6˜Ô?d ëÔ³ÿ¿0 @  7™Ô?d HëÔ23 @  8šÔ?d ˆëÔ­ÇÍ @  9›Ô?d ÈëÔkÔ¡ì @  :œÔ?d ìÔršRã @  ;Ô?d HìÔG¬Sw @  <žÔ?d ˆìÔgYQ‰ @  =ŸÔ?d ÈìÔÁ½P¿ @  > Ô?d íÔõÜW @  ?¡Ô?d HíÔ=˜f– @  @¢Ô?d ˆíÔmdh @  A£Ô?d ÈíÔÛ~ÝI @  B¤Ô?d îÔF:}ˆ @  C¥Ô?d HîÔs | @  D¦Ô?d ˆîÔSù~â @  E§Ô?d ÈîÔ ú$ä @  F¨Ô?d ïÔݲ¨  @  G©Ô?d HïÔã  @  HªÔ?d ˆïÔÊñ @  I«Ô?d ÈïÔ™¶Ð @  J¬Ô?d ðÔ»G b @  K­Ô?d HðÔŽq ö @  L®Ô?d ˆðÔ®„  @  M¯Ô?d ÈðÔ•×1â @  N°Ô?d ñÔEŸ½  @  O±Ô?d HñÔÖó&é @  P²Ô?d ˆñÔö$ @  Q³Ô?d ÈñÔ06 @  R´Ô?d òÔ­Q=÷ @  SµÔ?d HòÔ˜g @  U·Ô?d ÈòÔæ‘d› @  V¸Ô?d óÔ6Ùès @  W¹Ô?d HóÔMp @  XºÔ?d ˆóÔ(áOŽ @  Y»Ô?d ÈóÔîòö¯ @  Z¼Ô?d ôÔ÷¼  @  [½Ô?d HôÔŠ4 @  \¾Ô?d ˆôÔâÊ @  ]¿Ô?d ÈôÔ´Ëí @  ^ÀÔ?d õÔdƒž @  _ÁÔ?d HõÔæé"V @  `ÂÔ?d ˆõÔÆ ¨ @  aÃÔ?d ÈõÔ™‰ @  bÄÔ?d öÔK9H @  cÅÔ?d HöÔ¨}8Ü @  dÆÔ?d ˆöÔˆˆ:" @  eÇÔ?d ÈöÔÖ‹`$ @  fÈÔ?d ÷ÔÃìÌ @  gÉÔ?d H÷Ô8IÏ @  hÊÔ?d ˆ÷ÔûK1 @  iËÔ?d È÷ÔÞèò @  jÌÔ?d øÔê~  @  kÍÔ?d HøÔß!™ @  lÎÔ?d ˆøÔÿÔ}g @  mÏÔ?d ÈøÔćE @  nÐÔ?d ùÔÏÉe @  oÑÔ?d HùÔ‡£R† @  pÒÔ?d ˆùÔ§VPx @  qÓÔ?d ÈùÔaEéY @  rÔÔ?d úÔüI˜ @  sÕÔ?d HúÔÉ7H  @  tÖÔ?d ˆúÔéÂJò @  u×Ô?d ÈúÔ·Áô @  vØÔ?d ûÔg‰œ @  wÙÔ?d HûÔYD9 @  xÚÔ?d ˆûÔy±;á @  yÛÔ?d ÈûÔ¿¢‚À @  zÜÔ?d üÔ¦ìqÏ @  {ÝÔ?d HüÔ“Úp[ @  |ÞÔ?d ˆüÔ³/r¥ @  }ßÔ?d ÈüÔËs“ @  ~àÔ?d ýÔŃÿ{ @  áÔ?d HýÔ ¸u‹ @  €âÔ?d ˆýÔ*Mwu @  ãÔ?d ÈýÔì^ÎT @  ‚äÔ?d þÔqn• @  ƒåÔ?d HþÔD,o @  „æÔ?d ˆþÔdÙmÿ @  …çÔ?d ÈþÔ:Ú7ù @  †èÔ?d ÿÔê’» @  ‡éÔ?d HÿÔÔ_ @  ˆêÔ?d ˆÿÔôªì @  ‰uÐÕëÔ?d ÈÿÔ2¹¥Í @  ŠìÔ?d Õ} < @  ‹íÔ?d `ÕH;Œ¨ @  ŒîÔ?d  ÕhÎŽV @  ïÔ?d àÕS¶¼ @  ŽðÔ?d ÕƒÕ:T @  ñÔ?d `Õ¹¡· @  òÔ?d  Õ0L£I @  ‘óÔ?d àÕö_h @  ’ôÔ?d Õkº© @  “õÔ?d `Õ^-»= @  ”öÔ?d  Õ~عà @  •÷Ô?d àÕ ÛãÅ @  –øÔ?d Õð“o- @  —ùÔ?d `ÕÎ^Ê. @  ˜úÔ?d  Õî«ÈÐ @  ™ûÔ?d àÕ(¸qñ @  šüÔ?d Õ1ö‚þ @  ›ýÔ?d `ÕÀƒj @  œþÔ?d  Õ$5” @  ÿÔ?d àÕ ”- @  žÕ?d ÕÀhÅ @  ŸÕ?d `ÕB¤– @   Õ?d  Õb÷¦h @  ¡Õ?d àÕ¤äI @  ¢Õ?d Õ9 ¿ˆ @  £Õ?d `Õ –¾ @  ¤Õ?d  Õ,c¼â @  ¥Õ?d àÕr`æä @  ¦Õ?d Õ¢(j  @  § Õ?d `ÕœåÏ @  ¨ Õ?d  Õ¼Íñ @  © Õ?d àÕztÐ @  ª Õ?d ÕNüøÍ @  « Õ?d `Õ{ÊùY @  ¬Õ?d  Õ[?û§ @  ­Õ?d àÕ`lÃM @  ®Õ?d Õ°$O¥ @  ¯Õ?d ` Õ#HÔF @  °Õ?d   Õ½Ö¸ @  ±Õ?d à ÕÅ®o™ @  ²Õ?d ÕXêÏX @  ³Õ?d ` ÕmÜÎÌ @  ´Õ?d   ÕM)Ì2 @  µÕ?d à Õ*–4 @  ¶Õ?d ÕÃbÜ @  ·Õ?d ` Õý¯¿ß @  ¸Õ?d   ÕÝZ½! @  ¹Õ?d à ÕI @  ºÕ?d Õ÷ @  »Õ?d ` Õ71ö› @  ¼Õ?d   ÕÄôe @  ½Õ?d à Õ± õS @  ¾ Õ?d Õahy» @  ¿!Õ?d ` ÕMÃz @  À"Õ?d   ÕmðÁ„ @  Á#Õ?d à Õ«ãx¥ @  Â$Õ?d Õ6§Ød @  Ã%Õ?d `Õ‘Ùð @  Ä&Õ?d  Õ#dÛ @  Å'Õ?d àÕ}g @  Æ(Õ?d Õ­/ à @  Ç)Õ?d `Õ“â¨ã @  È*Õ?d  Õ³ª @  É+Õ?d àÕu< @  Ê,Õ?d ÕËÚ¯Ž @  Ë-Õ?d `Õþì® @  Ì.Õ?d  ÕÞ¬ä @  Í/Õ?d àÕåJ” @  Î0Õ?d Õ5æ @  Ï1Õ?d `Õ¦nƒ @  Ð2Õ?d  Õ†›û @  Ñ3Õ?d àÕ@ˆ8Ú @  Ò4Õ?d ÕÝ̘ @  Ó5Õ?d `Õèú™ @  Ô6Õ?d  ÕÈ›q @  Õ7Õ?d àÕ– Áw @  Ö8Õ?d ÕFDMŸ @  ×9Õ?d `Õx‰èœ @  Ø:Õ?d  ÕX|êb @  Ù;Õ?d àÕžoSC @  Ú<Õ?d Õ‡! L @  Û=Õ?d `Õ²¡Ø @  Ü>Õ?d  Õ’â£& @  Ý?Õ?d àÕÄV· @  Þ@Õ?d Õ;é @  ßAÕ?d `Õ–t‡º @  àBÕ?d  Õ¶…D @  áCÕ?d àÕp’ç @  ]Õ?d `ÕÃAjž @  ^Õ?d  Õã´h` @  _Õ?d àÕ€’» @  `Õ?d ÕPQS @  aÕ?d `Õ .ä* @  bÕ?d  Õ€ÛæÔ @  cÕ?d àÕ4Ýß @   dÕ?d Õ©™¹ @  !eÕ?d `ÕYæCg @  "fÕ?d  ÕyA™ @  #gÕ?d àÕâYàr @  $hÕ?d Õ2lš @  %iÕ?d `ÕÂn–ã @  &jÕ?d  Õâ›”uÐ Õ @  'kÕ?d àÕê:rF @  (lÕ?d 8 Õ›1¬  @  )mÕ?d x ÕkNVY @  *nÕ?d ¸ ÕK»T§ @  +oÕ?d ø Õµ¡—  @  ,pÕ?d 8!ÕeéH @  -qÕ?d x!Õ•–á1 @  .rÕ?d ¸!ÕµcãÏ @  /sÕ?d ø!Õc;t @  0tÕ?d 8"Õ'›µ @  1uÕ?d x"Õ}XaÌ @  2vÕ?d ¸"Õ]­c2 @  3wÕ?d ø"ÕÆçÂÙ @  4xÕ?d 8#Õ¯N1 @  5yÕ?d x#ÕæÐ´H @  6zÕ?d ¸#ÕÆ%¶¶ @  7{Õ?d ø#Õ΄Pí @  8|Õ?d 8$Õ×Ê£â @  9}Õ?d x$Õ'µY› @  :~Õ?d ¸$Õ@[e @  ;Õ?d ø$Õ‰{à= @  <€Õ?d 8%ÕY3lÕ @  =Õ?d x%Õ©L–¬ @  >‚Õ?d ¸%Õ‰¹”R @  ?ƒÕ?d ø%Õ“¸mË @  @„Õ?d 8&ÕüÍ  @  A…Õ?d x&Õþƒ7s @  B†Õ?d ¸&ÕÞv5 @  C‡Õ?d ø&ÕE<”f @  DˆÕ?d 8'Õ•tŽ @  E‰Õ?d x'Õe â÷ @  FŠÕ?d ¸'ÕEþà  @  G‹Õ?d ø'ÕM_R @  HŒÕ?d 8(Õy ŠO @  IÕ?d x(Õ‰ßp6 @  JŽÕ?d ¸(Õ©*rÈ @  KÕ?d ø(ÕW0±Ï @  LÕ?d 8)Õ‡x=' @  M‘Õ?d x)ÕwÇ^ @  N’Õ?d ¸)ÕWòÅ  @  O“Õ?d ø)Õòò @  P”Õ?d 8*Õo¶½Ú @  Q•Õ?d x*ÕŸÉG£ @  R–Õ?d ¸*Õ¿h^ @  U™Õ?d x+ÕA’' @  VšÕ?d ¸+Õ$´Ù @  W›Õ?d ø+Õ,v‚ @  XœÕ?d 8,Õ5[… @  YÕ?d x,ÕÅ$ô @  ZžÕ?d ¸,ÕåÑ}  @  [ŸÕ?d ø,Õ†|‡Ñ @  \ Õ?d 8-ÕV4 9 @  ]¡Õ?d x-Õ¦Kñ@ @  ^¢Õ?d ¸-Õ†¾ó¾ @  _£Õ?d ø-Õ2¸ µ @  `¤Õ?d 8.Õ¯ü¬t @  a¥Õ?d x.Õ_ƒV  @  b¦Õ?d ¸.ÕvTó @  c§Õ?d ø.Õä<õ @  d¨Õ?d 8/Õ4tyð @  e©Õ?d x/ÕÄ ƒ‰ @  fªÕ?d ¸/Õäþw @  g«Õ?d ø/Õì_g, @  h¬Õ?d 80ÕRÛž @  i­Õ?d x0Õ¢þ!ç @  j®Õ?d ¸0Õ‚ # @  k¯Õ?d ø0Õ|à @  l°Õ?d 81Õ¬Ylö @  m±Õ?d x1Õ\&– @  n²Õ?d ¸1Õ|Ó”q @  o³Õ?d ø1ÕÙÓLÊ @  p´Õ?d 82ÕD—ì  @  qµÕ?d x2Õ´èr @  r¶Õ?d ¸2Õ”Œ @  s·Õ?d ø2ÕWµg @  t¸Õ?d 83Õß9 @  u¹Õ?d x3Õ/`Ãö @  vºÕ?d ¸3Õ•Á @  w»Õ?d ø3Õ4'S @  x¼Õ?d 84ÕzÔ\ @  y½Õ?d x4Õî.% @  z¾Õ?d ¸4ÕÎð,Û @  {¿Õ?d ø4Õ] à @  |ÀÕ?d 85ÕEOù @  }ÁÕ?d x5Õ}:µ€ @  ~ÂÕ?d ¸5Õ]Ï·~ @  ÃÕ?d ø5Õ¤˜~Ö @  €ÄÕ?d 86Õ9ÜÞ @  ÅÕ?d x6ÕÉ£$n @  ‚ÆÕ?d ¸6ÕéV& @  ƒÇÕ?d ø6Õr‡{ @  „ÈÕ?d 87Õ¢T “ @  …ÉÕ?d x7ÕR+ñê @  †ÊÕ?d ¸7ÕrÞó @  ‡ËÕ?d ø7ÕzO @  ˆÌÕ?d 88ÕN€™R @  ‰ÍÕ?d x8Õ¾ÿc+ @  ŠÎÕ?d ¸8Õž aÕ @  ‹ÏÕ?d ø8Õ`¢Ò @  ŒÐÕ?d 89Õ°X.: @  ÑÕ?d x9Õ@'ÔC @  ŽÒÕ?d ¸9Õ`ÒÖ½ @  ÓÕ?d ø9ÕÅÒ @  ÔÕ?d 8:ÕX–®Ç @  ‘ÕÕ?d x:Õ¨éT¾ @  ’ÖÕ?d ¸:ÕˆV@ @  “×Õ?d ø:ÕV÷« @  ”ØÕ?d 8;ÕÃ{C @  •ÙÕ?d x;Õ3a: @  –ÚÕ?d ¸;Õ”ƒÄ @  —ÛÕ?d ø;Õ5eŸ @  ˜ÜÕ?d 8<Õ{– @  ™ÝÕ?d x<Õòlé @  šÞÕ?d ¸<ÕÒñn @  ›ßÕ?d ø<Õ±\”Ì @  œàÕ?d 8=Õa$ @  áÕ?d x=Õ‘kâ] @  žâÕ?d ¸=Õ±žà£ @  ŸãÕ?d ø=Õ˜¨ @   äÕ?d 8>՘ܿi @  ¡åÕ?d x>Õh£E @  ¢æÕ?d ¸>ÕHVGî @  £çÕ?d ø>ÕÓæ @  ¤èÕ?d 8?ÕTjí @  ¥éÕ?d x?Õó+” @  ¦êÕ?duÐ@Õ7 ¸?ÕÓÞ’j @  §ëÕ?d ø?ÕÖ“ä @  ¨ìÕ?d P@ÕÚz)Ø @  ©íÕ?d @ÕˆaÆ @  ªîÕ?d Ð@Õ ðÑ_ @  «ïÕ?d AÕ¦3‰n @  ¬ðÕ?d PAÕ$¢ž° @  ­ñÕ?d AÕv¹qé @  ®òÕ?d ÐAÕô(f7 @  ¯óÕ?d BÕNý “ @  °ôÕ?d PBÕÌlM @  ±õÕ?d BÕžwñ @  ²öÕ?d ÐBÕææÊ @  ³÷Õ?d CÕÕuÜ @  ´øÕ?d PCÕWäËÉ @  µùÕ?d CÕÿ$ @  ¶úÕ?d ÐCÕ‡n3N @  ·ûÕ?d DÕ1Ä @  ¸üÕ?d PDÕ–& @  ¹ýÕ?d DÕÄšÉC @  ºþÕ?d ÐDÕF Þ @  »ÿÕ?d EÕW¬žÚ @  ¼Ö?d PEÕÕ=‰ @  ½Ö?d EÕ‡&f] @  ¾Ö?d ÐEÕ·qƒ @  ¿Ö?d FÕc? @  ÀÖ?d PFÕ‚ò(Û @  ÁÖ?d FÕÐéÇ‚ @  ÂÖ?d ÐFÕRxÐ\ @  ÃÖ?d GÕ›ëê @  ÄÖ?d PGÕzý_ @  Å Ö?d GÕKa @  Æ Ö?d ÐGÕÉðØ @  Ç Ö?d HÕw?x@ @  È Ö?d PHÕõ®ož @  É Ö?d HÕ§µ€Ç @  ÊÖ?d ÐHÕ%$— @  ËÖ?d IÕ‰çÏ( @  ÌÖ?d PIÕ vØö @  ÍÖ?d IÕYm7¯ @  ÎÖ?d ÐIÕÛü q @  ÏÖ?d JÕa)OÕ @  ÐÖ?d PJÕã¸X  @  ÑÖ?d JÕ±£·R @  ÒÖ?d ÐJÕ32 Œ @  ÓÖ?d KÕú¡šQ @  ÔÖ?d PKÕx0 @  ÕÖ?d KÕ*+bÖ @  ÖÖ?d ÐKÕ¨ºu @  ×Ö?d LÕ;Äw‚ @  ØÖ?d PLÕ¹U`\ @  ÙÖ?d LÕëN @  ÚÖ?d ÐLÕiߘÛ @  ÛÖ?d MÕX«ù6 @  Ü Ö?d PMÕÚ:îè @  Ý!Ö?d MÕˆ!± @  Þ"Ö?d ÐMÕ °o @  ß#Ö?d NÕ¡c^{ @  à$Ö?d PNÕ#òI¥ @  á%Ö?d NÕqé¦ü @  â&Ö?d€ ÐNÕ‡»­„ @  'Ö?d OÕ¯ißp @  (Ö?d POÕ-øÈ® @  )Ö?d OÕºªÜ @  *Ö?d ÐOÕ8;ËÄ @  +Ö?d PÕÂgÙ‰ @  ,Ö?d PPÕ@öÎW @  -Ö?d PÕÜ_~t @  .Ö?d ÐPÕ^Îiª @   /Ö?d QÕ7DÊv @   0Ö?d PQÕµÕݨ @   1Ö?d QÕ"‡É @   2Ö?d ÐQÕ Þ @   3Ö?d RÕyÐÐü @  4Ö?d PRÕûAÇ" @  5Ö?d RÕÊIIá @  6Ö?d ÐRÕHØ^? @  7Ö?d SÕDŸ @  8Ö?d PSÕÆ“ˆÑ @  9Ö?d SÕQÁœe @  :Ö?d ÐSÕÓP‹» @  ;Ö?d TÕŽœÖK @  <Ö?d PTÕ Á• @  =Ö?d TÕ¤q¶ @  >Ö?d ÐTÕ5fh @  ?Ö?d UÕXéy @  @Ö?d PUÕ”Éþ§ @  AÖ?d UÕ›ê @  BÖ?d ÐUÕ ýÍ @  CÖ?d VÕXÌóó @  DÖ?d PVÕÚ]ä- @  EÖ?d VÕúSM^ @   FÖ?d ÐVÕxÂZ€ @  !GÖ?d WÕt›° @  "HÖ?d PWÕö‰Œn @  #IÖ?d WÕaÛ˜Ú @  $JÖ?d ÐWÕãJ @  %KÖ?d XÕ“7­æ @  &LÖ?d PXÕ¦º8 @  'MÖ?d XÕ  @  (NÖ?d ÐX՞Š@  )OÖ?d YÕf¾ @  *PÖ?d PYÕä…©Ç @  +QÖ?d YÕs×½s @  ,RÖ?d ÐYÕñFª­ @  -SÖ?d ZÕ(€¤“ @  .TÖ?d PZÕª³M @  /UÖ?d ZÕ›=Ž @  0VÖ?d ÐZÕˆ*P @  1WÖ?d [ÕRë` @  2XÖ?d P[Õ—Ãü¾ @  3YÖ?d [Õ‘è  @  4ZÖ?d Ð[Õ‚ÿÔ @  5[Ö?d \ÕßÌ¢$ @  6\Ö?d P\Õ]]µú @  7]Ö?d \ÕÁôÙ @  8^Ö?d Ð\ÕCe @  9_Ö?d ]Õ·Xˆ @  :`Ö?d P]Õ5ÉŸÙ @  ;aÖ?d ]Õ¢›‹m @  <bÖ?d Ð]Õ œ³ @  =cÖ?d ^ÕùÌ’ @  >dÖ?d P^Õ{]…S @  ?eÖ?d ^ÕõT*² @  @fÖ?d Ð^ÕwÅ=l @  AgÖ?d _Õ{ü\ @  BhÖ?d P_ÕùŽë‚ @  CiÖ?d _ÕnÜÿ6 @  uÐ`ÕDjÖ?d Ð_Õ‘Í›” @  E€kÖ?d (`Õk·€ó @  F€lÖ?d h`Õé&—- @  G€mÖ?d ¨`Õu' @  H€nÖ?d è`Õ÷0Ð @  I€oÖ?d (aÕž”“  @  J€pÖ?d haÕ„Ò @  K€qÖ?d ¨aÕ‹Wf @  L€rÖ?d èaÕ Ƈ¸ @  M€sÖ?d (bÕЉ† @  N€tÖ?d hbÕR‘žX @  O€uÖ?d ¨bÕc™› @  P€vÖ?d èbÕáE @  Q€wÖ?d (cÕíÒÆu @  R€xÖ?d hcÕoCÑ« @  S€yÖ?d ¨cÕøÅ @  T€zÖ?d ècÕz€ÒÁ @  U€{Ö?d (dÕ'L1 @  V€|Ö?d hdեݘï @  W€}Ö?d ¨dÕ9t(Ì @  X€~Ö?d èdÕ»å? @  Y€Ö?d (eÕ¢Nä‘ @  Z€€Ö?d heÕ ßóO @  [€Ö?d ¨eÕ·çû @  \€‚Ö?d èeÕ5ð% @  ]€ƒÖ?d (fÕìÚþ @  ^€„Ö?d hfÕnKéÅ @  _€…Ö?d ¨fÕNE@¶ @  `€†Ö?d èfÕÌÔWh @  a€‡Ö?d (gÕÀ–X @  b€ˆÖ?d hgÕBŸ† @  c€‰Ö?d ¨gÕÕÍ•2 @  d€ŠÖ?d ègÕW\‚ì @  e€‹Ö?d (hÕ'!  @  f€ŒÖ?d hhÕ¥°·Ð @  g€Ö?d ¨hÕ9ó @  h€ŽÖ?d èhÕ»ˆ- @  i€Ö?d (iÕÒ³ñ @  j€Ö?d hiÕP“¤/ @  k€‘Ö?d ¨iÕÇÁ°› @  l€’Ö?d èiÕEP§E @  m€“Ö?d (jÕœ–©{ @  n€”Ö?d hjÕ¾¥ @  o€•Ö?d ¨jÕ/0f @  p€–Ö?d èjÕ­ž'¸ @  q€—Ö?d (kÕ¡Dæˆ @  r€˜Ö?d hkÕ#ÕñV @  s€™Ö?d ¨kÕ´‡åâ @  t€šÖ?d èkÕ6ò< @  u€›Ö?d (lÕkÚ¯Ì @  v€œÖ?d hlÕéK¸ @  w€Ö?d ¨lÕuâ1 @  x€žÖ?d èlÕ÷sï @  y€ŸÖ?d (mÕN…ï @  z€ Ö?d hmÕß’1 @  {€¡Ö?d ¨mÕ†… @  |€¢Ö?d èmÕ”‘[ @  }€£Ö?d (nÕMÚŸe @  ~€¤Ö?d hnÕÏKˆ» @  €¥Ö?d ¨nÕ¢k @  €€¦Ö?d ènÕ …µ @  €§Ö?d (oÕ,_Á… @  ‚€¨Ö?d hoÕ®ÎÖ[ @  ƒ€©Ö?d ¨oÕ9œÂï @  „€ªÖ?d èoÕ» Õ1 @  …€«Ö?d (pÕAQÇ| @  †€¬Ö?d hpÕÃÀТ @  ‡€­Ö?d ¨pÕ_i` @  ˆ€®Ö?d èpÕÝøw_ @  ‰€¯Ö?d (qÕ´rÔƒ @  Š€°Ö?d hqÕ6ãÃ] @  ‹€±Ö?d ¨qÕ¡±×é @  Œ€²Ö?d èqÕ# À7 @  €³Ö?d (rÕúæÎ  @  Ž€´Ö?d hrÕxwÙ× @  €µÖ?d ¨rÕIW @  €¶Ö?d èrÕËî@Ê @  ‘€·Ö?d (sÕÇ4ú @  ’€¸Ö?d hsÕE¥–$ @  “€¹Ö?d ¨sÕÒ÷‚ @  ”€ºÖ?d èsÕPf•N @  •€»Ö?d (tÕ ªÈ¾ @  –€¼Ö?d htÕ;ß` @  —€½Ö?d ¨tÕ’oC @  ˜€¾Ö?d ètÕ‘x @  ™€¿Ö?d (uÕ•n÷Œ @  š€ÀÖ?d huÕÿàR @  ›€ÁÖ?d ¨uÕ€­ôæ @  œ€ÂÖ?d èuÕ<ã8 @  €ÃÖ?d (vÕÛúí @  ž€ÄÖ?d hvÕYkúØ @  Ÿ€ÅÖ?d ¨vÕyeS« @   €ÆÖ?d èvÕûôDu @  ¡€ÇÖ?d (wÕ÷.…E @  ¢€ÈÖ?d hwÕu¿’› @  £€ÉÖ?d ¨wÕâí†/ @  ¤€ÊÖ?d èwÕ`|‘ñ @  ¥€ËÖ?d (xÕ³ @  ¦€ÌÖ?d hxÕ’¤Í @  §€ÍÖ?d ¨xÕ9î @  ¨€ÎÖ?d èxÕŒ¨0 @  ©€ÏÖ?d (yÕå" ì @  ª€ÐÖ?d hyÕg³·2 @  «€ÑÖ?d ¨yÕðᣆ @  ¬€ÒÖ?d èyÕrp´X @  ­€ÓÖ?d (zÕ«¶ºf @  ®€ÔÖ?d hzÕ)'­¸ @  ¯€ÕÖ?d ¨zÕ/#{ @  °€ÖÖ?d èzÕš¾4¥ @  ±€×Ö?d ({Õ–dõ• @  ²€ØÖ?d h{ÕõâK @  ³€ÙÖ?d ¨{Õƒ§öÿ @  ´€ÚÖ?d è{Õ6á! @  µ€ÛÖ?d (|Õ\ú¼Ñ @  ¶€ÜÖ?d h|ÕÞk« @  ·€ÝÖ?d ¨|ÕBÂ, @  ¸€ÞÖ?d è|ÕÀS ò @  ¹€ßÖ?d (}Õ4n–ò @  º€àÖ?d h}Õ¶ÿ, @  »€áÖ?d ¨}Õ!­•˜ @  ¼€âÖ?d è}Õ£<‚F @  ½€ãÖ?d (~ÕzúŒx @  ¾€äÖ?d h~Õøk›¦ @  ¿€åÖ?d ¨~Õvb4G @  À€æÖ?d è~Õôó#™ @  Á€çÖ?d (Õø)â© @  €èÖ?d hÕz¸õw @  ÀéÖ?d ¨ÕuЀÕ'íêáà @  Ä€êÖ?d èÕû…a @  ÅëÖ?d @€Õ8ÇÉê @  ÆìÖ?d €€Õ2Ë @  ÇíÖ?d À€Õ&ÿn @  ÈîÖ?d Õö·âÿ @  ÉïÖ?d @ÕÍäÚ @  ÊðÖ?d €ÕíØë @  ËñÖ?d ÀÕØ'Ù @  ÌòÖ?d ‚ÕEcy¾ @  ÍóÖ?d @‚ÕƒpÀŸ @  ÎôÖ?d €‚Õ£…Âa @  ÏõÖ?d À‚Õ0éY‚ @  ÐöÖ?d ƒÕà¡Õj @  Ñ÷Ö?d @ƒÕ¾¢l @  ÒøÖ?d €ƒÕžW’ @  ÓùÖ?d ÀƒÕ«aŒ @  ÔúÖ?d „Õ²/  @  ÕûÖ?d @„Õt<Æ( @  ÖüÖ?d €„ÕTÉÄÖ @  ×ýÖ?d À„ÕjaÕ @  ØþÖ?d …ÕºLí= @  ÙÿÖ?d @…ÕŽYø„ @  Ú×?d €…Õ®¬úz @  Û×?d À…Õ›šûî @  Ü×?d †ÕÞ[/ @  Ý×?d @†ÕÀÍâ @  Þ×?d €†Õà8àð @  ß×?d À†ÕbR\£ @  à×?d ‡Õ²ÐK @  á×?d @‡ÕìŠM @  â×?d€ €‡ÕJº  @   ×?d À‡ÕžÍi· @   ×?d ˆÕª2åª @   ×?d @ˆÕ©h§f @   ×?d €ˆÕ‰¥˜ @   ×?d ÀˆÕyâ_á @  ×?d ‰Õ©ªÓ  @  ×?d @‰Õ\K´™ @  ×?d €‰Õ|¾¶g @   ×?d À‰ÕŒÁL @   ×?d ŠÕ…ìß @   ×?d @ŠÕß® @   ×?d €ŠÕ2*¬í @   ×?d ÀŠÕÂUV” @  ×?d ‹ÕÚ| @  ×?d @‹Õ/ áà @  ×?d €‹Õøã @  ×?d À‹Õÿ‡g @  ×?d ŒÕæÉêh @  ×?d @ŒÕ哨¤ @  ×?d €ŒÕÅfªZ @  ×?d ÀŒÕ5P# @  ×?d ÕåQÜË @  ×?d @Õ‚‡ @   ×?d €Õ­ò€y @  !×?d ÀÕ]z @  "×?d ŽÕÀÉÚÁ @  #×?d @ŽÕÓ˜  @  $×?d €ŽÕãfšó @  %×?d ÀŽÕ`Š @  &×?d ÕÃQìb @  '×?d @ÕïGðN @   (×?d €Õϲò° @  !)×?d ÀÕ?ÍÉ @  "*×?d Õ´{ @  #+×?d @Õ‚Iö· @  $,×?d €Õ¢¼ôI @  %-×?d ÀÕRÃ0 @  &.×?d ‘Õ‚‹‚Ø @  '/×?d @‘ÕwjåH @  (0×?d €‘ÕWŸç¶ @  )1×?d À‘Õ§àÏ @  *2×?d ’Õ:¤½ @  +3×?d @’Õ9þÿ @  ,4×?d €’Õ ý< @  -5×?d À’ÕétE @  .6×?d “Õ9<‹­ @  /7×?d @“Õ,°1 @  08×?d €“Õ$Ù²Ï @  19×?d À“ÕÔ¦H¶ @  2:×?d ”ÕÍ軹 @  3;×?d @”Õβùu @  4<×?d €”ÕîGû‹ @  5=×?d À”Õ8ò @  6>×?d •ÕÎp @  7?×?d @•ÕVvÆG @  8@×?d €•ÕvƒÄ¹ @  9A×?d À•Õ†ü>À @  :B×?d –Õ¸ž @  ;C×?d @–ÕâÜÍ @  <D×?d €–Õ8Þ3 @  =E×?d À–ÕÈh$J @  >F×?d —Õ ¨¢ @  ?G×?d @—Õš1² @  @H×?d €—պİâ @  AI×?d À—ÕJ»J› @  BJ×?d ˜Õĵú @  C€K×?d @˜Õž÷6 @  D€L×?d €˜Õ kõÈ @  E€M×?d À˜Õб @  F€N×?d ™Õ\ƒY @  G€O×?d @™Õõ½äÉ @  H€P×?d €™Õ‘Iž @  I Q×?d À™Õap³ç @  J R×?d šÕü4& @  K S×?d @šÕÿnQê @  L T×?d €šÕß›S @  M U×?d ÀšÕ/ä©m @  N V×?d ›Õÿ¬%… @  O W×?d @›Õ¼ @  P X×?d €›ÕâIç @  Q Y×?d À›Õ6æž @  R Z×?d œÕ x‘ @  S [×?d @œÕ"W] @  T \×?d €œÕ(×U£ @  U ]×?d ÀœÕب¯Ú @  V ^×?d Õà#2 @  W _×?d @Õ`¶}~ @  X `×?d €Õ@C€ @  Y a×?d ÀÕ°<…ù @  Z b×?d žÕ-x%8 @  [ c×?d @žÕ."gô @  \ d×?d €žÕ×e  @  ] e×?d ÀžÕþ¨Ÿs @  ^ f×?d ŸÕ.à› @  _ g×?d @ŸÕö· @  ` h×?d €ŸÕ" I @  a i×uРÕ?d ÀŸÕÒ|÷0 @  b j×?d  ÕXV @  ck×?d X Õ[CPš @  dl×?d ˜ Õ{¶Rd @  em×?d ؠՋɨ @  fn×?d ¡Õ[$õ @  go×?d X¡Õ®`Ce @  hp×?d ˜¡ÕŽ•A› @  iq×?d Ø¡Õ~ê»â @  jr×?d ¢Õã®# @  ks×?d X¢ÕàôYï @  lt×?d ˜¢ÕÀ[ @  mu×?d Ø¢Õ0~¡h @  nv×?d £Õà6-€ @  ow×?d X£ÕÝ& @  px×?d ˜£ÕýÓâ @  qy×?d Ø£Õ ¬î› @  rz×?d ¤Õâ” @  s{×?d X¤Õ¸_X @  t|×?d ˜¤Õ7M]¦ @  u}×?d ؤÕÇ2§ß @  v~×?d ¥Õz+7 @  w×?d X¥Õ’º4ø @  x€×?d ˜¥Õ²O6 @  y×?d Ø¥ÕB0Ì @  z‚×?d ¦Õßtl¾ @  {ƒ×?d X¦ÕÜ..r @  |„×?d ˜¦ÕüÛ,Œ @  }…×?d ئÕ ¤Öõ @  ~†×?d §ÕÜìZ @  ‡×?d X§Õ½«p’ @  €ˆ×?d ˜§Õ^rl @  ‰×?d اÕm!ˆ @  ‚Š×?d ¨ÕYÞ @  ƒ‹×?d X¨ÕZ„FÄ @  „Œ×?d ˜¨ÕzqD: @  …×?d بÕŠ¾C @  †Ž×?d ©ÕZF2« @  ‡×?d X©Õ¯§U; @  ˆ×?d ˜©ÕRWÅ @  ‰‘×?d Ø©Õ-­¼ @  Š’×?d ªÕâi } @  ‹“×?d XªÕá3O± @  Œ”×?d ˜ªÕÁÆMO @  •×?d تÕ1¹·6 @  Ž–×?d «Õáñ;Þ @  —×?d X«ÕÜáB @  ˜×?d ˜«Õü¼ @  ‘™×?d Ø«Õ køÅ @  ’š×?d ¬Õ% Ê @  “›×?d X¬ÕI @  ”œ×?d ˜¬Õ6ŠKø @  •×?d جÕÆõ± @  –ž×?d ­Õ½=i @  —Ÿ×?d X­Õ~ëc% @  ˜ ×?d ˜­Õ^aÛ @  ™¡×?d Ø­Õ®a›¢ @  š¢×?d ®Õ3%;c @  ›£×?d X®Õ0y¯ @  œ¤×?d ˜®ÕŠ{Q @  ¥×?d Ø®Õàõ( @  ž¦×?d ¯Õ0½ À @  Ÿ§×?d X¯Õ«ì @   ¨×?d ˜¯Õ<^ @  ¡©×?d دÕÌ!ék @  ¢ª×?d °ÕrÿUÙ @  £«×?d X°Õq¥ @  ¤¬×?d ˜°ÕQPë @  ¥­×?d ذÕ¡/ï’ @  ¦®×?d ±Õqgcz @  §¯×?d X±Õ„†ê @  ¨°×?d ˜±Õ¤s @  ©±×?d رÕT üm @  ª²×?d ²ÕÉH\¬ @  «³×?d X²ÕÊ` @  ¬´×?d ˜²Õêçž @  ­µ×?d زÕ˜æç @  ®¶×?d ³ÕÊÐj @  ¯·×?d X³Õ÷ÀQ“ @  °¸×?d ˜³Õ×5Sm @  ±¹×?d سÕ'J© @  ²º×?d ´Õ>Z @  ³»×?d X´Õ=^× @  ´¼×?d ˜´Õ«) @  µ½×?d Ø´ÕíÔàP @  ¶¾×?d µÕ=œl¸ @  ·¿×?d XµÕ¥š'å @  ¸À×?d ˜µÕ…o% @  ¹Á×?d صÕußb @  ºÂ×?d ¶ÕèT£ @  »Ã×?d X¶Õë=o @  ¼Ä×?d ˜¶ÕËû?‘ @  ½Å×?d ضÕ;„Åè @  ¾Æ×?d ·ÕëÌI @  ¿Ç×?d X·ÕiÝS¾ @  ÀÈ×?d ˜·ÕI(Q@ @  ÁÉ×?d Ø·Õ¹W«9 @  ÂÊ×?d ¸Õ¨'$ @  ÃË×?d X¸ÕŽòeè @  ÄÌ×?d ˜¸Õ®g @  ÅÍ×?d ظÕ^xo @  ÆÎ×?d ¹ÕŽ0‡ @  ÇÏ×?d X¹Õ{Ñv @  ÈÐ×?d ˜¹Õ[$té @  ÉÑ×?d عÕ«[Ž @  ÊÒ×?d ºÕ6.Q @  ËÓ×?d XºÕ5El @  ÌÔ×?d ˜ºÕ°nc @  ÍÕ×?d غÕåÏ” @  ÎÖ×?d »Õ5‡ò @  Ï××?d X»Õ—#n @  ÐØ×?d ˜»Õ(b! @  ÑÙ×?d Ø»ÕØÛé @  ÒÚ×?d ¼ÕÁS(æ @  ÓÛ×?d X¼Õ j* @  ÔÜ×?d ˜¼ÕâühÔ @  ÕÝ×?d ؼÕƒ’­ @  ÖÞ×?d ½ÕÂËE @  ×ß×?d X½Õª@  @  Øà×?d ˜½ÕŠhB÷ @  Ùá×?d ؽÕz¸Ž @  Úâ×?d ¾ÕçSO @  Ûã×?d X¾Õä Zƒ @  Üä×?d ˜¾ÕÄüX} @  Ýå×?d ؾÕ4ƒ¢ @  Þæ×?d ¿ÕäË.ì @  ßç×?d X¿ÕÈÝ2À @  àè×?d ˜¿Õè(0> @uÐÀÕ  áé×?d Ø¿Õã9ñG @  â ê×?d€ 0ÀÕó ¼³ @   ë×?d pÀÕ¶V @   ì×?d °ÀÕ1ä´¨ @   í×?d ðÀÕÒµ< @   î×?d 0ÁÕÔš9Ô @   ï×?d pÁÕïÉ> @   ð×?d °ÁÕÏ<À @   ñ×?d ðÁÕññ¦Ã @   ò×?d 0ÂÕlµ @   ó×?d pÂÕª¦¿# @   ô×?d °ÂÕŠS½Ý @   õ×?d ðÂÕD ‡I @   ö×?d 0ÃÕ”C ¡ @   ÷×?d pÃÕÊ@Q§ @  ø×?d °ÃÕêµSY @  ù×?d ðÃÕyÙȺ @  ú×?d 0ÄÕ`—;µ @  û×?d pÄÕ¦„‚” @  ü×?d °ÄÕ†q€j @  ý×?d ðÄÕ³Gþ @  þ×?d 0ÅÕc  @  ÿ×?d pÅÕ²))@ @  Ø?d °ÅÕ’Ü+¾ @  Ø?d ðÅÕ¬޽ @  Ø?d 0ÆÕ1U.| @  Ø?d pÆÕ÷F—] @  Ø?d °ÆÕ׳•£ @  Ø?d ðÆÕâ…”7 @  Ø?d 0ÇÕ2Íß @  Ø?d pÇÕlÎBÙ @  Ø?d °ÇÕL;@' @   Ø?d ðÇÕÎQüt @    Ø?d 0ÈÕú®pi @  ! Ø?d pÈÕ<½ÉH @  " Ø?d °ÈÕH˶ @  # Ø?d ðÈÕ)~Ê" @  $Ø?d 0ÉÕù6FÊ @  %Ø?d pÉÕÂe~  @  &Ø?d °ÉÕâ|Þ @  'Ø?d ðÉÕÜ]ÙÝ @  (Ø?d 0ÊÕAy @  )Ø?d pÊÕ‡ À= @  *Ø?d °ÊÕ§ÿÂà @  +Ø?d ðÊÕ’ÉÃW @  ,Ø?d 0ËÕBO¿ @  -Ø?d pËÕ‚¹ @  .Ø?d °ËÕ @  6 Ø?d °ÍÕ3ÜJÀ @  7!Ø?d ðÍÕ ïà @  8"Ø?d 0ÎÕUO @  9#Ø?d pÎÕVFö# @  :$Ø?d °ÎÕv³ôÝ @  ;%Ø?d ðÎÕC…õI @  <&Ø?d 0ÏÕ“Íy¡ @  ='Ø?d pÏÕÍÎ#§ @  >(Ø?d °ÏÕí;!Y @  ?)Ø?d ðÏÕÁV›˜ @  @*Ø?d 0ÐÕˆ'* @  A+Ø?d pÐÕ¹›ž  @  B,Ø?d °ÐÕ™nœõ @  C-Ø?d ðÐÕ¬Xa @  D.Ø?d 0ÑÕ|‰ @  E/Ø?d pÑÕGC)c @  F0Ø?d °ÑÕg¶+ @  G1Ø?d ðÑÕY{Žž @  H2Ø?d 0ÒÕÄ?._ @  I3Ø?d pÒÕ,—~ @  J4Ø?d °ÒÕ"Ù•€ @  K5Ø?d ðÒÕï” @  L6Ø?d 0ÓÕǧü @  M7Ø?d pÓÕ™¤Bú @  N8Ø?d °ÓÕ¹Q@ @  O9Ø?d ðÓÕ*=Ûç @  P:Ø?d 0ÔÕ3s(è @  Q;Ø?d pÔÕõ`‘É @  R<Ø?d °ÔÕÕ•“7 @  S=Ø?d ðÔÕ࣒£ @  T>Ø?d 0ÕÕ0ëK @  U?Ø?d pÕÕf_ l @  V@Ø?d °ÕÕFª’ @  WAØ?d ðÕÕxg­‘ @  XBØ?d 0ÖÕå# P @  YCØ?d pÖÕ#0´q @  ZDØ?d °ÖÕŶ @  [EØ?d ðÖÕ6ó· @  \FØ?d 0×Õæ»;ó @  ]GØ?d p×Õ¸¸aõ @  ^HØ?d °×Õ˜Mc  @  _IØ?d ð×Õ'ßX @  `JØ?d 0ØÕ.ØSE @  aKØ?d pØÕèËêd @  bLØ?d °ØÕÈ>èš @  cMØ?d ðØÕýé @  dNØ?d 0ÙÕ-@eæ @  eOØ?d pÙÕ]  @  fPØ?d °ÙÕ6æ_ò @  gQØ?d ðÙÕ+úñ @  hRØ?d 0ÚÕ•oZ0 @  iSØ?d pÚÕS|ã @  jTØ?d °ÚÕs‰áï @  kUØ?d ðÚÕF¿à{ @  lVØ?d 0ÛÕ–÷l“ @  mWØ?d pÛÕÈô6• @  nXØ?d °ÛÕè4k @  oYØ?d ðÛÕ{m¯ˆ @  pZØ?d 0ÜÕb#\‡ @  q[Ø?d pÜÕ¤0å¦ @  r\Ø?d °ÜÕ„ÅçX @  s]Ø?d ðÜÕ±óæÌ @  t^Ø?d 0ÝÕa»j$ @  u_Ø?d pÝÕÇ_k @  v`Ø?d °ÝÕçªiì @  waØ?d ðÝÕÙgÌï @  xbØ?d 0ÞÕD#l. @  ycØ?d pÞÕ‚0Õ @  zdØ?d °ÞÕ¢Å×ñ @  {eØ?d ðÞÕ—óÖe @  |fØ?d 0ßÕG»Z @  }gØ?d pßÕ¸‹ @  ~hØ?d uÐàÕ/°ßÕ9Mu @  iØ?d ðßÕ ³… @  € jØ?d HàÕ¼ís @   kØ?d ˆàÕpËAr @  ‚ lØ?d ÈàÕòZV¬ @  ƒ mØ?d áÕ•µÌ @  „ nØ?d HáÕ$ÛÐ @  … oØ?d ˆáÕŽö @  † pØ?d ÈáÕ ‚áÄ @  ‡ qØ?d âÕ-šóØ @  ˆ rØ?d HâÕ¯ ä @  ‰ sØ?d ˆâÕË|H @  Š tØ?d ÈâÕIí_Ù @  ‹ uØ?d ãÕ.Å{ @  Œ vØ?d HãÕ¬“Ò¥ @   wØ?d ˆãÕPôƒ @  Ž xØ?d ÈãÕÒeŠ] @   yØ?d äÕÚÖõo @   zØ?d HäÕXGâ± @  ‘ {Ø?d ˆäÕ<0N° @  ’ |Ø?d ÈäÕ¾¡Yn @  “ }Ø?d åÕÙNÃÌ @  ” ~Ø?d HåÕ[ßÔ @  • Ø?d ˆåղɇ @  – €Ø?d ÈåÕ0X–Y @  — Ø?d æÕ@„E @  ˜ ‚Ø?d HæÕ“Ñ“› @  ™ ƒØ?d ˆæÕ÷¦?š @  š „Ø?d ÈæÕu7(D @  › …Ø?d çÕزæ @  œ †Ø?d HçÕI¥8 @   ‡Ø?d ˆçÕl.ê @  ž ˆØ?d ÈçÕî¿ýÀ @  Ÿ ‰Ø?d èÕ!ÕáP @   ŠØ?d HèÕ£DöŽ @  ¡‹Ø?d ˆèÕÇ3Z @  ¢ŒØ?d ÈèÕE¢MQ @  £Ø?d éÕ"M×ó @  ¤ŽØ?d HéÕ ÜÀ- @  ¥Ø?d ˆéÕ9ëíç @  ¦Ø?d ÈéÕ»zú9 @  §‘Ø?d êÕšbè% @  ¨’Ø?d HêÕóÿû @  ©“Ø?d ˆêÕ|„Sú @  ª”Ø?d ÈêÕþD$ @  «•Ø?d ëÕ™úÞ† @  ¬–Ø?d HëÕkÉX @  ­—Ø?d ˆëÕç †~ @  ®˜Ø?d ÈëÕe‘  @  ¯™Ø?d ìÕm.î’ @  °šØ?d HìÕï¿ùL @  ±›Ø?d ˆìÕ‹ÈUM @  ²œØ?d ÈìÕ YB“ @  ³Ø?d íÕn¶Ø1 @  ´žØ?d HíÕì'Ïï @  µŸØ?d ˆíÕè§Ûù @  ¶ Ø?d ÈíÕj6Ì' @  ·¡Ø?d îÕK.Þ; @  ¸¢Ø?d HîÕÉ¿Éå @  ¹£Ø?d ˆîÕ­Èeä @  º¤Ø?d ÈîÕ/Yr: @  »¥Ø?d ïÕH¶è˜ @  ¼¦Ø?d HïÕÊ'ÿF @  ½§Ø?d ˆïÕ6@°` @  ¾¨Ø?d Èïմѧ¾ @  ¿©Ø?d ðÕ¤ó¶ @  ÀªØ?d HðÕ&b¡Í @  Á«Ø?d ˆðÕB Ì @  Â¬Ø?d ÈðÕÀ„ @  Ã­Ø?d ñÕ§k€° @  Ä®Ø?d HñÕ%ú—n @  Å¯Ø?d ˆñռͺ¤ @  Æ°Ø?d ÈñÕ>\­z @  Ç±Ø?d òÕD¿f @  È²Ø?d HòÕÕ¨¸ @  É³Ø?d ˆòÕù¢¹ @  Ê´Ø?d ÈòÕ{3g @  ËµØ?d óÕ܉Å @  Ì¶Ø?d HóÕžMž @  Í·Ø?d ˆóÕb*Ñ= @  Î¸Ø?d ÈóÕà»Æã @  Ï¹Ø?d ôÕè¹Ñ @  ÐºØ?d HôÕj™® @  Ñ»Ø?d ˆôÕî @  Ò¼Ø?d ÈôՌР@  Ó½Ø?d õÕër @  Ô¾Ø?d HõÕi˜¬ @  Õ¿Ø?d ˆõÕÑ™« @  ÖÀØ?d ÈõÕ@Žu @  ×ÁØ?d öÕ>Xœi @  ØÂØ?d Höռɋ· @  ÙÃØ?d ˆöÕؾ'¶ @  ÚÄØ?d ÈöÕZ/0h @  ÛÅØ?d ÷Õ=ÀªÊ @  ÜÆØ?d H÷Õ¿Q½ @  ÝÇØ?d ˆ÷ÕC6ò2 @  ÞÈØ?d È÷ÕÁ§åì @  ßÉØ?d øÕõ£Â| @  àÊØ?d HøÕw2Õ¢ @  áËØ?d ˆøÕEy£ @  âÌØ?d€ ÈøÕP“™} @  ÍØ?d ùÕÖ=Kö @  ÎØ?d HùÕT¬\( @  ÏØ?d ˆùÕÒŠ @  ÐØ?d ÈùÕŠCÑ @  ÑØ?d úÕeéз @  ÒØ?d HúÕçxÇi @  ÓØ?d ˆúÕM½4 @  ÔØ?d ÈúÕÏ,#Ì @   ÕØ?d ûÕmŠBƒ @   ÖØ?d HûÕïU] @   ר?d ˆûÕÖ5á– @   ØØ?d ÈûÕT¤öH @   ÙØ?d üÕ?èà @  ÚØ?d HüÕ½•ÿ> @  ÛØ?d ˆüÕºñ2¥ @  ÜØ?d ÈüÕ8`%{ @  ÝØ?d ýÕšÆD4 @  ÞØ?d HýÕWSê @  ߨ?d ˆýÕÙž¼ @  àØ?d ÈýÕ[«Ï @  áØ?d þÕ´¥æ© @  âØ?d HþÕ64ñw @  ãØ?d ˆþÕœñ  @  äØ?d ÈþÕ`Ò @  åØ?d ÿÕ¼Æt @  æØ?d HÿÕ>WcC @  çØ?d ˆÿÕy׈ @  uÐÖèØ?d ÈÿÕ~†ûV @   éØ?d Ö™^æ @   êØ?d `ÖŠI8 @   ëØ?d  Öœj£ @   ìØ?d àÖû´Í @  ! íØ?d Ö¼]Õ‚ @  " îØ?d `Ö>ÌÂ\ @  # ïØ?d  Öb²{ @  $ ðØ?d àÖà#¥ @  % ñØ?d Öôçuà @  &òØ?d `Övvb @  'óØ?d  Öܳ‘f @  (ôØ?d àÖ^"†¸ @  )õØ?d Öü„ç÷ @  *öØ?d `Ö~ð) @  +÷Ø?d  ÖG;Dâ @  ,øØ?d àÖŪS< @  -ùØ?d Ö® M” @  .úØ?d `Ö,›ZJ @  /ûØ?d  Ö+ÿ—Ñ @  0üØ?d àÖ©n€ @  1ýØ?d Ö Èá@ @  2þØ?d `Ö‰Yöž @  3ÿØ?d  ÖÚa ê @  4Ù?d àÖXð4 @  5Ù?d Ö·ZWR @  6Ù?d `Ö5Ë@Œ @  7Ù?d  ÖŸ³÷ @  8Ù?d àÖŸ¤) @  9Ù?d Ö¿9Åf @  :Ù?d `Ö=¨Ò¸ @  ;Ù?d  Ö†fs @  <Ù?d àÖ†q­ @  = Ù?d ÖÀ @  > Ù?d `ÖB—É @  ? Ù?d  Öúòëp @  @ Ù?d àÖxcü® @  A Ù?d ÖÚÅá @  BÙ?d ` ÖXTŠ? @  CÙ?d   Ö*\ @  DÙ?d à Ö†»KÆ @  EÙ?d Öi  @  FÙ?d ` Öë€~ @  GÙ?d   ÖAEâ @  HÙ?d à ÖÃÔõÛ @  IÙ?d Öar”” @  JÙ?d ` ÖããƒJ @  KÙ?d   ÖÚÍ7 @  LÙ?d à ÖX\ _ @  MÙ?d Ö3ü>÷ @  NÙ?d ` Ö±m)) @  OÙ?d   Ö¶ ä² @  PÙ?d à Ö4˜ól @  QÙ?d Ö–>’# @  RÙ?d ` Ö¯…ý @  SÙ?d   ÖÕfj @  T Ù?d à ÖW÷}Ø @  U!Ù?d Ö¸]0¾ @  V"Ù?d `Ö:Ì'` @  W#Ù?d  Ö Ô @  X$Ù?d àÖ˜ÃÅ @  Y%Ù?d Ö°>¢Š @  Z&Ù?d `Ö2¯µT @  ['Ù?d  Ö Ÿ @  \(Ù?d àÖ‰A @  ])Ù?d ÖE GT @  ^*Ù?d `ÖDZPŠ @  _+Ù?d  ÖÑÓº¡ @  `,Ù?d àÖSB­ @  a-Ù?d ÖñäÌ0 @  b.Ù?d `ÖsuÛî @  c/Ù?d  Ö/ É @  d0Ù?d àÖ­š @  e1Ù?d ÖB0Wq @  f2Ù?d `ÖÀ¡@¯ @  g3Ù?d  Öjd³Ô @  h4Ù?d àÖèõ¤  @  i5Ù?d ÖJSÅE @  j6Ù?d `ÖÈÂÒ› @  k7Ù?d  ÖñìfP @  l8Ù?d àÖs}qŽ @  m9Ù?d ÖÝo& @  n:Ù?d `ÖšLxø @  o;Ù?d  Ö(µc @  p<Ù?d àÖ¹¢½ @  q=Ù?d Ö½Ãò @  r>Ù?d `Ö?ŽÔ, @  s?Ù?d  Ö.Æ @  t@Ù?d àÖŒ†9 @  uAÙ?d Öc,t~ @  vBÙ?d `Öá½c  @  wCÙ?d  ÖKxÛ @  xDÙ?d àÖÉé‡ @  yEÙ?d ÖkOæJ @  zFÙ?d `ÖéÞñ” @  {GÙ?d  ÖÐðE_ @  |HÙ?d àÖRaR @  }IÙ?d Öp3; @  ~JÙ?d `Ö–á$å @  KÙ?d  ÖÍÒøm @  €LÙ?d àÖOCï³ @  MÙ?d ÖíåŽü @  ‚NÙ?d `Öot™" @  ƒOÙ?d  Ö3 O @  „PÙ?d àÖ±›XÛ @  …QÙ?d Ö^1½ @  †RÙ?d `ÖÜ c @  ‡SÙ?d  Öveñ @  ˆTÙ?d àÖôôæÆ @  ‰UÙ?d ÖVR‡‰ @  ŠVÙ?d `ÖÔÃW @  ‹WÙ?d  Öíí$œ @  ŒXÙ?d àÖo|3B @  YÙ?d ÖÜ-ê @  ŽZÙ?d `Ö†M:4 @  [Ù?d  Ö)÷¯ @  \Ù?d àÖ¸àq @  ‘]Ù?d Ö¡> @  ’^Ù?d `Ö#–à @  “_Ù?d  ÖâFy @  ”`Ù?d àÖ`×nÅ @  •aÙ?d Ö}#£ @  –bÙ?d `Ö ì4} @  —cÙ?d  Ö§)Ç @  ˜dÙ?d àÖ%¸ÐØ @  ™eÙ?d Ö‡±— @  šfÙ?d `Ö¦I @  ›gÙ?d  Ö<¡‚uÐ Ö @  œhÙ?d àÖE^>\ @   iÙ?d 8 ÖF»  @  ž jÙ?d x ÖÄ*C @  Ÿ kÙ?d ¸ Öë,½ @   lÙ?d ø Öi;c @  ¡mÙ?d 8!Ö˸Z, @  ¢nÙ?d x!ÖI)Mò @  £oÙ?d ¸!ÖW›Õ @  ¤pÙ?d ø!Ö—ÆŒ  @  ¥qÙ?d 8"ÖxlÁm @  ¦rÙ?d x"ÖúýÖ³ @  §sÙ?d ¸"ÖP8%È @  ¨tÙ?d ø"ÖÒ©2 @  ©uÙ?d 8#ÖpSY @  ªvÙ?d x#ÖòžD‡ @  «wÙ?d ¸#Ö˰ðL @  ¬xÙ?d ø#ÖI!ç’ @  ­yÙ?d 8$Ö"ù: @  ®zÙ?d x$Ö îä @  ¯{Ù?d ¸$Ö§t# @  °|Ù?d ø$Ö%å4¡ @  ±}Ù?d 8%Ö‡CUî @  ²~Ù?d x%ÖÒB0 @  ³Ù?d ¸%Ö)ìH @  ´€Ù?d ø%Ö«û– @  µÙ?d 8&ÖD¶¶ð @  ¶‚Ù?d x&ÖÆ'¡. @  ·ƒÙ?d ¸&ÖlâRU @  ¸„Ù?d ø&ÖîsE‹ @  ¹…Ù?d 8'ÖLÕ$Ä @  º†Ù?d x'ÖÎD3 @  »‡Ù?d ¸'Ö÷j‡Ñ @  ¼ˆÙ?d ø'Öuû @  ½‰Ù?d 8(Ö3êñµ @  ¾ŠÙ?d x(Ö±{æk @  ¿‹Ù?d ¸(Ö  Ò @  ÀŒÙ?d ø(Ö‹  @  ÁÙ?d 8)Ö))|C @  ÂŽÙ?d x)Ö«¸k @  ÃÙ?d ¸)Ö÷ƽº @  ÄÙ?d ø)ÖuWªd @  Å‘Ù?d 8*Öšýç @  Æ’Ù?d x*ÖlðÜ @  Ç“Ù?d ¸*Ö²©§ @  È”Ù?d ø*Ö08y @  É•Ù?d 8+Ö’žu6 @  Ê–Ù?d x+Öbè @  Ë—Ù?d ¸+Ö)!Ö# @  Ì˜Ù?d ø+Ö«°Áý @  Í™Ù?d 8,ÖÀßU @  ÎšÙ?d x,ÖBÈ‹ @  Ï›Ù?d ¸,ÖEå @  ÐœÙ?d ø,ÖÇtÎ @  ÑÙ?d 8-ÖeÒs @  ÒžÙ?d x-ÖçCd_ @  ÓŸÙ?d ¸-Ö&Š‹¤ @  Ô Ù?d ø-Ö¤œz @  Õ¡Ù?d 8.ÖK±Ñ @  Ö¢Ù?d x.ÖÉ ÆÂ @  ×£Ù?d ¸.Öcå5¹ @  Ø¤Ù?d ø.Öát"g @  Ù¥Ù?d 8/ÖCÒC( @  Ú¦Ù?d x/ÖÁCTö @  Û§Ù?d ¸/Öømà= @  Ü¨Ù?d ø/Özü÷ã @  Ý©Ù?d 80ֶ̦ö @  ÞªÙ?d x0Ö4]±( @  ß«Ù?d ¸0Ö"?[ @  à¬Ù?d ø0Ö ®LÝ @  á­Ù?d 81Ö-’ @  â®Ù?d€ x1ÖôZ&ê @  ¯Ù?d ¸1ÖIe¸ä @  °Ù?d ø1ÖËô¯: @  ±Ù?d 82Öá± @  ²Ù?d x2Öc†o @  ³Ù?d ¸2Öñ¢n @  ´Ù?d ø2Ö…`µ° @  µÙ?d 83Öét‹… @  ¶Ù?d x3Ökåœ[ @   ·Ù?d ¸3Ö—‚Ó} @   ¸Ù?d ø3ÖÄ£ @   ¹Ù?d 84Ö»ú!æ @   ºÙ?d x4Ö9k68 @   »Ù?d ¸4Ö]š9 @  ¼Ù?d ø4Ößç @  ½Ù?d 85Ö82 @  ¾Ù?d x5Öœ©šì @  ¿Ù?d ¸5Öhy›ë @  ÀÙ?d ø5ÖêèŒ5 @  ÁÙ?d 86ÖÀ :¾ @  ÂÙ?d x6ÖBš-` @  ÃÙ?d ¸6Ö&ía @  ÄÙ?d ø6Ö¤|–¿ @  ÅÙ?d 87ÖÈh¨Š @  ÆÙ?d x7ÖJù¿T @  ÇÙ?d ¸7Ö¶žðr @  ÈÙ?d ø7Ö4ç¬ @  ÉÙ?d 88Ö·W}û @  ÊÙ?d x8Ö5Æj% @  ËÙ?d ¸8ÖQ±Æ$ @  ÌÙ?d ø8ÖÓ Ñú @  ÍÙ?d 89Ö“öŸ @   ÎÙ?d x9ÖáA @  !ÏÙ?d ¸9Ö5Ì‹ @  "ÐÙ?d ø9Öš¤ÛU @  #ÑÙ?d 8:Ö°GmÞ @  $ÒÙ?d x:Ö2Öz @  %ÓÙ?d ¸:ÖV¡Ö @  &ÔÙ?d ø:ÖÔ0Áß @  'ÕÙ?d 8;Ö¸$ÿê @  (ÖÙ?d x;Ö:µè4 @  )×Ù?d ¸;ÖÆÒ§ @  *ØÙ?d ø;ÖDC°Ì @  +ÙÙ?d 8<ÖêªU‰ @  ,ÚÙ?d x<Öh;BW @  -ÛÙ?d ¸<Ö LîV @  .ÜÙ?d ø<ÖŽÝùˆ @  /ÝÙ?d 8=ÖOhù] @  0ÞÙ?d x=ÖÍùîƒ @  1ßÙ?d ¸=ÖÉyú• @  2àÙ?d ø=ÖKèíK @  3áÙ?d 8>Öa [À @  4âÙ?d x>ÖãšL @  5ãÙ?d ¸>Ö‡íà @  6äÙ?d ø>Ö|÷Á @  7åÙ?d 8?ÖihÉô @  8æÙ?d x?ÖëùÞ* @  9çÙ?duÐ@Ö7 ¸?Öž‘  @  :èÙ?d ø?Ö•†Ò @  ;éÙ?d P@Öá*¤ @  <êÙ?d @ÖÁñ(Z @  =ëÙ?d Ð@Öâ‘{ @  >ìÙ?d AÖת“ @  ?íÙ?d PAÖûǧR @  @îÙ?d AÖÛ2¥¬ @  AïÙ?d ÐAÖàaF @  BðÙ?d BÖ}%=‡ @  CñÙ?d PBÖH< @  DòÙ?d BÖhæ>í @  EóÙ?d ÐBÖ®õ‡Ì @  FôÙ?d CÖ~½ $ @  GõÙ?d PCÖ@p®' @  HöÙ?d CÖ`…¬Ù @  I÷Ù?d ÐCÖ>†öß @  JøÙ?d DÖ'ÈÐ @  KùÙ?d PDÖþD @  LúÙ?d DÖ2 º @  MûÙ?d ÐDÖô¿› @  NüÙ?d EÖ$P3s @  OýÙ?d PEÖ·<¨ @  PþÙ?d EÖ—ɪn @  QÿÙ?d ÐEÖþŠò @  RÚ?d FÖŒº*3 @  SÚ?d PFÖ¹Œ+§ @  TÚ?d FÖ™y)Y @  UÚ?d ÐFÖ_jx @  VÚ?d GÖ" @  WÚ?d PGֱ﹓ @  XÚ?d GÖ‘»m @  YÚ?d ÐGÖÏák @  ZÚ?d HÖûæmv @  [ Ú?d PHÖÎÐlâ @  \ Ú?d HÖî%n @  ] Ú?d ÐHÖ(6×= @  ^ Ú?d IÖø~[Õ @  _ Ú?d PIÖzç† @  `Ú?d IÖZáåx @  aÚ?d ÐIÖa²Ý’ @  bÚ?d JÖüö}S @  cÚ?d PJÖÉÀ|Ç @  dÚ?d JÖé5~9 @  eÚ?d ÐJÖ/&Ç @  fÚ?d KÖÿnKð @  gÚ?d PKÖÁ£îó @  hÚ?d KÖáVì  @  iÚ?d ÐKÖ¿U¶  @  jÚ?d LÖ¦E @  kÚ?d PLÖ“-D @  lÚ?d LÖ³ØFn @  mÚ?d ÐLÖuËÿO @  nÚ?d MÖ¥ƒs§ @  oÚ?d PMÖ6ïèD @  pÚ?d MÖêº @  qÚ?d ÐMÖ°þëŒ @  r Ú?d NÖ-ºKM @  s!Ú?d PNÖŒJÙ @  t"Ú?d NÖ8yH' @  u#Ú?d ÐNÖþjñ @  v$Ú?d OÖ."}î @  w%Ú?d POÖïØí @  x&Ú?d OÖ0Ú @  y'Ú?d ÐOÖn€ @  z(Ú?d PÖÐÇ<§ @  {)Ú?d PPÖåñ=3 @  |*Ú?d PÖÅ?Í @  }+Ú?d ÐPÖ†ì @  ~,Ú?d QÖÓ_  @  -Ú?d PQÖd€ô @  €.Ú?d QÖ<‘‚  @  /Ú?d ÐQÖºà @  ‚0Ú?d RÖš†! @  ƒ1Ú?d PRÖ¯°µ @  „2Ú?d RÖEK @  …3Ú?d ÐRÖIV j @  †4Ú?d SÖ™,‚ @  ‡5Ú?d PSÖ§Ó‰ @  ˆ6Ú?d SÖ‡&‹ @  ‰7Ú?d ÐSÖÙ%Ñy @  Š8Ú?d TÖÀk"v @  ‹9Ú?d PTÖõ]#â @  Œ:Ú?d TÖÕ¨! @  ;Ú?d ÐTÖ»˜= @  Ž<Ú?d UÖÃóÕ @  =Ú?d PUÖPŸ6 @  >Ú?d UÖpjÈ @  ‘?Ú?d ÐUÖ&Þ™ï @  ’@Ú?d VÖ»š9. @  “AÚ?d PVÖެ8º @  ”BÚ?d VÖ®Y:D @  •CÚ?d ÐVÖhJƒe @  –DÚ?d WÖ¸ @  —EÚ?d PWÖ†ÏªŽ @  ˜FÚ?d WÖ¦:¨p @  ™GÚ?d ÐWÖø9òv @  šHÚ?d XÖÌÆ~k @  ›IÚ?d PXÖùðÿ @  œJÚ?d XÖÙ} @  KÚ?d ÐXÖÄ  @  žLÚ?d YÖÏ^HÈ @  ŸMÚ?d PYÖM4ô› @   NÚ?d YÖmÁöe @  ¡OÚ?d ÐYÖV’Î @  ¢PÚ?d ZÖËÖnN @  £QÚ?d PZÖþàoÚ @  ¤RÚ?d ZÖÞm$ @  ¥SÚ?d ÐZÖÔ @  ¦TÚ?d [ÖÈNXí @  §UÚ?d P[Ööƒýî @  ¨VÚ?d [ÖÖvÿ @  ©WÚ?d Ð[Öˆu¥ @  ªXÚ?d \Ö‘;V @  «YÚ?d P\Ö¤ W @  ¬ZÚ?d \Ö„øUs @  ­[Ú?d Ð\ÖBëìR @  ®\Ú?d ]Ö’£`º @  ¯]Ú?d P]ÖÏûY @  °^Ú?d ]Ö!:ù§ @  ±_Ú?d Ð]Ö‡Þø‘ @  ²`Ú?d ^ÖšXP @  ³aÚ?d P^Ö/¬YÄ @  ´bÚ?d ^ÖY[: @  µcÚ?d Ð^ÖÉJâ @  ¶dÚ?d _Önó @  ·eÚ?d P_Ö'ÏËð @  ¸fÚ?d _Ö:É @  uÐ`Ö¹gÚ?d Ð_Ö`þOÝ @  º hÚ?d (`ÖÞúE @  » iÚ?d h`Öë0ûÑ @  ¼ jÚ?d ¨`ÖËÅù/ @  ½ kÚ?d è`Ö Ö@ @  ¾ lÚ?d (aÖÝžÌæ @  ¿ mÚ?d haÖñóv' @  À nÚ?d ¨aÖÑtÙ @  Á oÚ?d èaÖêUL3 @   pÚ?d (bÖwìò @  à qÚ?d hbÖB'íf @  Ä rÚ?d ¨bÖbÒï˜ @  Å sÚ?d èbÖ¤ÁV¹ @  Æ tÚ?d (cÖt‰ÚQ @  Ç uÚ?d hcÖJDR @  È vÚ?d ¨cÖj±}¬ @  É wÚ?d ècÖ4²'ª @  Ê xÚ?d (dÖi»{  @  Ë€yÚ?d hdÖ\z˜ @  Ì€zÚ?d ¨dÖ|xxf @  Í€{Ú?d èdÖºkÁG @  ΀|Ú?d (eÖj#M¯ @  Ï€}Ú?d heÖùOÖL @  Ѐ~Ú?d ¨eÖÙºÔ² @  Ñ€Ú?d èeÖ’È” @  Ò€€Ú?d (fÖŒ4Æ @  Ó€Ú?d hfÖ:º5R @  Ô€‚Ú?d ¨fÖO7¬ @  Õ€ƒÚ?d èfÖÜ\Ž @  Ö€„Ú?d (gÖ e @  ×€…Ú?d hgÖ2Ù§f @  Ø€†Ú?d ¨gÖ,¥˜ @  Ù€‡Ú?d ègÖL/ÿž @  Ú€ˆÚ?d (hÖxÐsƒ @  Û€‰Ú?d hhÖMær @  Ü€ŠÚ?d ¨hÖmpé @  Ý€‹Ú?d èhÖ«ÉÈ @  Þ€ŒÚ?d (iÖ{HE  @  ߀Ú?d hiÖù"ùs @  à€ŽÚ?d ¨iÖÙ×û @  á€Ú?d èiÖâ„Ãg @  â€Ú?d€ (jÖWZwô @  €‘Ú?d hjÖƒ->I @  €’Ú?d ¨jÖ£Ø<· @  €“Ú?d èjÖ ‚~{ @  €”Ú?d (kÖpÊò“ @  €•Ú?d hkÖ€µê @  €–Ú?d ¨kÖ @  @  €—Ú?d èkÖ0ñh @  €˜Ú?d (lÖ)¿üg @   €™Ú?d hlÖÙÀ @   €šÚ?d ¨lÖù5à @   €›Ú?d èlÖúoF, @   €œÚ?d (mÖ*'ÊÄ @   €Ú?d hmÖÚX0½ @  €žÚ?d ¨mÖú­2C @  €ŸÚ?d èmÖ?ZRï @  € Ú?d (nÖ¢ò. @  €¡Ú?d hnÖRaW @  €¢Ú?d ¨nÖr” © @  €£Ú?d ènÖqÎHe @  €¤Ú?d (oÖ¡†Ä @  €¥Ú?d hoÖQù>ô @  €¦Ú?d ¨oÖq <  @  €§Ú?d èoÖá½9v @  €¨Ú?d (pÖ_c…Ä @  €©Ú?d hpÖ¯½ @  €ªÚ?d ¨pÖé}C @  €«Ú?d èpÖŒ³? @  €¬Ú?d (qÖ\û³g @  €­Ú?d hqÖ¬„I @  €®Ú?d ¨qÖŒqKà @  €¯Ú?d èqÖÅ75  @   €°Ú?d (rÖXs•á @  !€±Ú?d hrÖ¨ o˜ @  "€²Ú?d ¨rÖˆùmf @  #€³Ú?d èrÖ‹£/ª @  $€´Ú?d (sÖ[ë£B @  %€µÚ?d hsÖ«”Y; @  &€¶Ú?d ¨sÖ‹a[Å @  '€·Ú?d èsÖÐ^¹ @  (€¸Ú?d (tÖž­¶ @  )€¹Ú?d htÖòáWÏ @  *€ºÚ?d ¨tÖÒU1 @  +€»Ú?d ètÖÑNý @  ,€¼Ú?d (uÖ› @  -€½Ú?d huÖñyal @  .€¾Ú?d ¨uÖÑŒc’ @  /€¿Ú?d èuÖä+/ @  0€ÀÚ?d (vÖyo¶î @  1€ÁÚ?d hvÖ‰L— @  2€ÂÚ?d ¨vÖ©åNi @  3€ÃÚ?d èvÖª¿ ¥ @  4€ÄÚ?d (wÖz÷€M @  5€ÅÚ?d hwÖŠˆz4 @  6€ÆÚ?d ¨wÖª}xÊ @  7€ÇÚ?d èwÖ:Ì}¶ @  8€ÈÚ?d (xÖ3ñ« @  9€ÉÚ?d hxÖþL Ò @  :€ÊÚ?d ¨xÖÞ¹ , @  ;€ËÚ?d èxÖÝãKà @  <€ÌÚ?d (yÖ «Ç @  =€ÍÚ?d hyÖýÔ=q @  >€ÎÚ?d ¨yÖÝ!? @  ?€ÏÚ?d èyÖ:`GÝ @  @€ÐÚ?d (zÖ§$ç @  A€ÑÚ?d hzÖW[e @  B€ÒÚ?d ¨zÖw®› @  C€ÓÚ?d èzÖtô]W @  D€ÔÚ?d ({Ö¤¼Ñ¿ @  E€ÕÚ?d h{ÖTÃ+Æ @  F€ÖÚ?d ¨{Öt6)8 @  G€×Ú?d è{Öä‡,D @  H€ØÚ?d (|ÖýÉßK @  I€ÙÚ?d h|Ö ¶%2 @  J€ÚÚ?d ¨|Ö-C'Ì @  K€ÛÚ?d è|Ö.e @  L€ÜÚ?d (}ÖþQéè @  M€ÝÚ?d h}Ö.‘ @  N€ÞÚ?d ¨}Ö.Ûo @  O€ßÚ?d è}Öë,qà @  P€àÚ?d (~ÖvhÑ @  Q€áÚ?d h~Ö†+{ @  R€âÚ?d ¨~Ö¦â)… @  S€ãÚ?d è~Ö¥¸kI @  T€äÚ?d (Öuðç¡ @  U€åÚ?d hÖ…Ø @  V€æÚ?d ¨ÖuЀÖ'¥z& @  W€çÚ?d èÖqŒµó @  X èÚ?d @€Ö2W‡ @  Y éÚ?d €€ÖM)¸Þ @  Z êÚ?d À€Öϸ¯ @  [ ëÚ?d Öž;vú @  \ ìÚ?d @Öªa$ @  ] íÚ?d €ÖN±Ž} @  ^ îÚ?d ÀÖÌ ™£ @  _ ïÚ?d ‚Öš³P| @  ` ðÚ?d @‚Ö"G¢ @  a ñÚ?d €‚ÖJ9¨û @  b òÚ?d À‚ÖȨ¿% @  c óÚ?d ƒÖ™+fß @  d ôÚ?d @ƒÖºq @  e õÚ?d €ƒÖI¡žX @  f öÚ?d ÀƒÖË0‰† @  g ÷Ú?d „ÖÀ^h+ @  h øÚ?d @„ÖBÏõ @  i ùÚ?d €„ÖÔ¬ @  j úÚ?d À„Ö’E‡r @  k ûÚ?d …ÖÃÆ^ˆ @  l üÚ?d @…ÖAWIV @  m ýÚ?d €…ÖL¦ @  n þÚ?d À…Ö‘ݱÑ @  o ÿÚ?d †ÖÙrí @  p Û?d @†Ö[Ÿe3 @  q Û?d €†Ö „Šj @  r Û?d À†Ö‹´ @  s Û?d ‡ÖÚ–DN @  t Û?d @‡ÖXS @  u Û?d €‡Ö ¼É @  v Û?d À‡Öˆ« @  w Û?d ˆÖ®R5¨ @  x Û?d @ˆÖ,Ã"v @  y  Û?d €ˆÖ~ØÍ/ @  z  Û?d ÀˆÖüIÚñ @  {  Û?d ‰Ö­Ê  @  |  Û?d @‰Ö/[Õ @  }  Û?d €‰Ö}@ûŒ @  ~ Û?d À‰ÖÿÑìR @   Û?d ŠÖä. @  € Û?d @ŠÖf‚ð @   Û?d €ŠÖ4™ë© @  ‚ Û?d ÀŠÖ¶üw @  ƒ Û?d ‹Öç‹% @  „ Û?d @‹Öe2S @  … Û?d €‹Ö7Ý  @  † Û?d À‹ÖµÊÔ @  ‡ Û?d ŒÖ¾þ+y @  ˆ Û?d @ŒÖÛ?d À•ÖÄ\£R @  ¯ ?Û?d –Öî.að @  ° @Û?d @–Öl¿v. @  ± AÛ?d €–Ö>¤™w @  ² BÛ?d À–Ö¼5Ž© @  ³ CÛ?d —Öí¶WS @  ´ DÛ?d @—Öo'@ @  µ EÛ?d €—Ö=<¯Ô @  ¶ FÛ?d À—Ö¿­¸  @  · GÛ?d ˜Ö™r&µ @  ¸ HÛ?d @˜Öã1k @  ¹ IÛ?d €˜ÖIøÞ2 @  º JÛ?d À˜ÖËiÉì @  » KÛ?d ™Öšê @  ¼ LÛ?d @™Ö{È @  ½ MÛ?d €™ÖJ`è‘ @  ¾ NÛ?d À™ÖÈñÿO @  ¿ OÛ?d šÖ0e0 @  À PÛ?d @šÖ²ô'Ü @  Á QÛ?d €šÖàïÈ… @   RÛ?d ÀšÖb~ß[ @  à SÛ?d ›Ö3ý¡ @  Ä TÛ?d @›Ö±l @  Å UÛ?d €›ÖÚ°"ó @  ÆVÛ?d À›ÖX!5- @  ÇWÛ?d œÖSOÔ€ @  ÈXÛ?d @œÖÑÞÃ^ @  ÉYÛ?d €œÖƒÅ, @  ÊZÛ?d ÀœÖT;Ù @  Ë[Û?d ÖP×â# @  Ì\Û?d @ÖÒFõý @  Í]Û?d €Ö€]¤ @  Î^Û?d ÀÖÌ z @  Ï_Û?d žÖØîÚÉ @  Ð`Û?d @žÖZÍ @  ÑaÛ?d €žÖd"N @  ÒbÛ?d ÀžÖŠõ5 @  ÓcÛ?d ŸÖÛvìj @  ÔdÛ?d @ŸÖYçû´ @  ÕeÛ?d €ŸÖ üí @  ÖfÛuРÖ?d ÀŸÖ‰m3 @  ×gÛ?d  ÖÓ" @  Ø hÛ?d X ÖQü @  Ù iÛ?d ˜ Ö ë¥ @  Ú jÛ?d Ø Öšü{ @  Û kÛ?d ¡ÖÐ% @  Ü lÛ?d X¡ÖRˆ2_ @  Ý mÛ?d ˜¡Ö“Ý @  Þ nÛ?d Ø¡Ö‚ÊØ @  ß oÛ?d ¢ÖÔ‘ @  à pÛ?d X¢ÖVÙ @  á qÛ?d ˜¢Öû€ @  â rÛ?d€ Ø¢ÖòIðø @   sÛ?d £ÖB‹a+ @   tÛ?d X£ÖÀvõ @   uÛ?d ˜£ÖWHbA @   vÛ?d Ø£ÖÕÙuŸ @   wÛ?d ¤ÖËH @   xÛ?d X¤Ö’”Ü– @   yÛ?d ˜¤Ö=lµ @   zÛ?d ؤÖŒ¬{k @   {Û?d ¥ÖfY| @   |Û?d X¥Öš÷N¢ @   }Û?d ˜¥Ö ¥Z @   ~Û?d Ø¥Ö4MÈ @   Û?d ¦ÖÛ“ºb @   €Û?d X¦ÖY­¼ @   Û?d ˜¦Öh # @   ‚Û?d ئÖê›4¡ @   ƒÛ?d §Ö~Q¶ @   „Û?d X§ÖüÀh @   …Û?d ˜§Ök’Ü @   †Û?d اÖé @   ‡Û?d ¨ÖnÃÇ @   ˆÛ?d X¨ÖƒÿÔ @   ‰Û?d ˜¨ÖVd: @   ŠÛ?d بÖÇsä @   ‹Û?d ©Ö Qó @   ŒÛ?d X©Ö‹œF- @   Û?d ˜©ÖÎR™ @   ŽÛ?d ة֞_EG @   Û?d ªÖºÙʲ @   Û?d XªÖ8HÝl @   ‘Û?d ˜ªÖFt @   ’Û?d تÖš×cÁ @  ! “Û?d «ÖAÖ @  " ”Û?d X«ÖŒŒV @  # •Û?d ˜«ÖÞB¼ @  $ –Û?d ث֙OUb @  % —Û?d ¬Ö\“ëµ @  & ˜Û?d X¬ÖÞük @  ' ™Û?d ˜¬ÖB«LH @  ( šÛ?d جÖÀ:[– @  ) ›Û?d ­ÖTðy @  * œÛ?d X­ÖÖan_ @  + Û?d ˜­ÖA3zë @  , žÛ?d Ø­Öâm5 @  - ŸÛ?d ®Öz“Û @  .  Û?d X®ÖøÌ @  / ¡Û?d ˜®ÖÉ B @  0 ¢Û?d Ø®ÖK›Uß @  1 £Û?d ¯ÖßQwÈ @  2 ¤Û?d X¯Ö]À` @  3 ¥Û?d ˜¯ÖÊ’t¢ @  4 ¦Û?d دÖHc| @  5 §Û?d °Ö*O’ @  6 ¨Û?d X°Ö¨Þ…È @  7 ©Û?d ˜°Ö4w5ë @  8 ªÛ?d ذÖ¶æ"5 @  9 «Û?d ±Ö"," @  : ¬Û?d X±Ö ½ü @  ; ­Û?d ˜±Ö7ïH @  < ®Û?d رÖµ~– @  = ¯Û?d ²Ö‘ø›c @  > °Û?d X²ÖiŒ½ @  ? ±Û?d ˜²Ö`#\ @  @ ²Û?d زÖñ4‚ @  A ³Û?d ³Ö‹;• @  B ´Û?d X³Ö ªK @  C µÛ?d ˜³Öžøÿ @  D ¶Û?d سÖi! @  E ·Û?d ´ÖÙµ¼ö @  F ¸Û?d X´Ö[$«( @  G ¹Û?d ˜´ÖÇ  @  H ºÛ?d Ø´ÖE Õ @  I »Û?d µÖÑÖ. @  J ¼Û?d XµÖSG9 @  K ½Û?d ˜µÖÄ-¨ @  L ¾Û?d صÖF„:v @  M ¿Û?d ¶Öå™N @  N ÀÛ?d X¶ÖtŽ @  O ÁÛ?d ˜¶Ö¼|S @  P ÂÛ?d ضÖ>í @  Q ÃÛ?d ·Öª'5š @  R ÄÛ?d X·Ö(¶"D @  S ÅÛ?d ˜·Ö¿ä6ð @  T ÆÛ?d Ø·Ö=u!. @  U ÇÛ?d ¸ÖÕàë @  V ÈÛ?d X¸ÖW‰÷5 @  W ÉÛ?d ˜¸ÖË G @  X ÊÛ?d ظÖI±PÈ @  Y ËÛ?d ¹ÖÝ{rß @  Z ÌÛ?d X¹Ö_êe @  [ ÍÛ?d ˜¹Öȸqµ @  \ ÎÛ?d عÖJ)fk @  ] ÏÛ?d ºÖn¯éž @  ^ ÐÛ?d XºÖì>þ@ @  _ ÑÛ?d ˜ºÖÌ0W3 @  ` ÒÛ?d غÖN¡@í @  a ÓÛ?d »ÖÚkbú @  b ÔÛ?d X»ÖXúu$ @  c ÕÛ?d ˜»ÖϨa @  d ÖÛ?d Ø»ÖM9vN @  e ×Û?d ¼ÖˆåÈ™ @  f ØÛ?d X¼Ö tßG @  g ÙÛ?d ˜¼Ö–Ýod @  h ÚÛ?d ؼÖLxº @  i ÛÛ?d ½Ö€†Z­ @  j ÜÛ?d X½ÖMs @  k ÝÛ?d ˜½Ö•EYÇ @  l ÞÛ?d ؽÖÔN @  m ßÛ?d ¾Ö®åø0 @  n àÛ?d X¾Ö,tïî @  o áÛ?d ˜¾Ö|a- @  p âÛ?d ؾÖŸívó @  q ãÛ?d ¿Ö 'Tä @  r äÛ?d X¿Ö‰¶C: @  s åÛ?d ˜¿ÖäWŽ @uÐÀÖ  t æÛ?d ؿ֜u@P @  u çÛ?d 0ÀÖ$\Ú @  v èÛ?d pÀÖ¦†K @  w éÛ?d °ÀÖ:/û' @  x êÛ?d ðÀÖ¸¾ìù @  y ëÛ?d 0ÁÖ,tÎî @  z ìÛ?d pÁÖ®åÙ0 @  { íÛ?d °ÁÖ9·Í„ @  | îÛ?d ðÁÖ»&ÚZ @  } ïÛ?d 0ÂÖŸ U¯ @  ~ ðÛ?d pÂÖ1Bq @   ñÛ?d °ÂÖpnÝ¡ @  € òÛ?d ðÂÖòÿÊ @   óÛ?d 0ÃÖf5èh @  ‚ ôÛ?d pÃÖä¤ÿ¶ @  ƒ õÛ?d °ÃÖsöë @  „ öÛ?d ðÃÖñgüÜ @  … ÷Û?d 0ÄÖ4»B  @  † øÛ?d pÄÖ¶*UÕ @  ‡ ùÛ?d °ÄÖ*ƒåö @  ˆ úÛ?d ðÄÖ¨ò( @  ‰ ûÛ?d 0ÅÖ<ØÐ? @  Š üÛ?d pÅÖ¾IÇá @  ‹ ýÛ?d °ÅÖ)ÓU @  Œ þÛ?d ðÅÖ«ŠÄ‹ @   ÿÛ?d 0ÆÖ¼CY» @  Ž Ü?d pÆÖ>ÒNe @   Ü?d °ÆÖÚÀ¦ @   Ü?d ðÆÖK×x @  ‘ Ü?d 0ÇÖõo @  ’ Ü?d pÇ֛Ⱡ@  “ Ü?d °ÇÖ Bö @  ” Ü?d ðÇÖŽÓáÛ @  • Ü?d 0ÈÖf¾  @  – Ü?d pÈÖä/7À @  —  Ü?d °ÈÖx†‡ã @  ˜  Ü?d ðÈÖú= @  ™  Ü?d 0ÉÖnݲ* @  š  Ü?d pÉÖìL¥ô @  ›  Ü?d °ÉÖ{±@ @  œ Ü?d ðÉÖù¦ž @   Ü?d 0ÊÖÝ )k @  ž Ü?d pÊÖ_˜>µ @  Ÿ Ü?d °ÊÖ–—Æ @    Ü?d ðÊÖý€ @  ¡ Ü?d 0ËÖiÍ¢ @  ¢ Ü?d pËÖë\µÑ @  £ Ü?d °ËÖ|¡e @  ¤ Ü?d ðËÖþŸ¶» @  ¥ Ü?d 0ÌÖ;Cl @  ¦ Ü?d pÌÖ¹Ò² @  § Ü?d °ÌÖ%{¯‘ @  ¨ Ü?d ðÌÖ§ê¸O @  © Ü?d 0ÍÖ3 šX @  ª Ü?d pÍÖ±±† @  « Ü?d °ÍÖ&ã™2 @  ¬ Ü?d ðÍÖ¤rŽì @  ­ Ü?d 0ÎÖC8Å @  ®  Ü?d pÎÖŸÒ/ @  ¯ !Ü?d °ÎÖ®Ú¡Ø @  ° "Ü?d ðÎÖ,K¶ @  ± #Ü?d 0ÏÖ¸” @  ² $Ü?d pÏÖ:ƒÏ @  ³ %Ü?d °ÏÖ­B—{ @  ´ &Ü?d ðÏÖ/Ó€¥ @  µ 'Ü?d 0ÐÖMŸqÏ @  ¶ (Ü?d pÐÖÏf @  · )Ü?d °ÐÖS§Ö2 @  ¸ *Ü?d ðÐÖÑ6Áì @  ¹ +Ü?d 0ÑÖEüãû @  º ,Ü?d pÑÖÇmô% @  » -Ü?d °ÑÖP?à‘ @  ¼ .Ü?d ðÑÖÒ®÷O @  ½ /Ü?d 0ÒÖö(xº @  ¾ 0Ü?d pÒÖt¹od @  ¿ 1Ü?d °ÒÖú°À… @  À 2Ü?d ðÒÖx!×[ @  Á 3Ü?d 0ÓÖìëõL @   4Ü?d pÓÖnzâ’ @  à 5Ü?d °ÓÖù(ö& @  Ä 6Ü?d ðÓÖ{¹áø @  Å 7Ü?d 0ÔÖ¾e_/ @  Æ 8Ü?d pÔÖ<ôHñ @  Ç 9Ü?d °ÔÖ ]øÒ @  È :Ü?d ðÔÖ"Ìï  @  É ;Ü?d 0ÕÖ¶Í @  Ê <Ü?d pÕÖ4—ÚÅ @  Ë =Ü?d °ÕÖ£ÅÎq @  Ì >Ü?d ðÕÖ!TÙ¯ @  Í ?Ü?d 0ÖÖh5z— @  Î @Ü?d pÖÖê¤mI @  Ï AÜ?d °ÖÖ۬㊠@  Ð BÜ?d ðÖÖY=ôT @  Ñ CÜ?d 0×ÖÍ÷ÖC @  Ò DÜ?d p×ÖOfÁ @  Ó EÜ?d °×ÖØ4Õ) @  Ô FÜ?d ð×ÖZ¥Â÷ @  Õ GÜ?d 0ØÖ²È2 @  Ö HÜ?d pØÖ0Yì @  × IÜ?d °ØÖ¬ð¤Ï @  Ø JÜ?d ðØÖ.a³ @  Ù KÜ?d 0ÙÖº«‘ @  Ú LÜ?d pÙÖ8:†Ø @  Û MÜ?d °ÙÖ¯h’l @  Ü NÜ?d ðÙÖ-ù…² @  Ý OÜ?d 0ÚÖ  G @  Þ PÜ?d pÚÖ‹î™ @  ß QÜ?d °ÚÖ«à´ê @  à RÜ?d ðÚÖ)q£4 @  á SÜ?d 0ÛÖ½»# @  â TÜ?d€ pÛÖþmaý @   UÜ?d °ÛÖˆ~=` @   VÜ?d ðÛÖ ï*¾ @   WÜ?d 0ÜÖ zo„ @   XÜ?d pÜÖˆëxZ @   YÜ?d °ÜÖÚð— @   ZÜ?d ðÜÖXa€Ý @   [Ü?d 0ÝÖý° @   \Ü?d pÝÖ€ˆên @   ]Ü?d °ÝÖÒ“7 @   ^Ü?d ðÝÖPé @   _Ü?d 0ÞÖ,z_- @   `Ü?d pÞÖ®ëHó @   aÜ?d °ÞÖü𧪠@   bÜ?d ðÞÖ~a°t @   cÜ?d 0ßÖ‰¸óù @   dÜ?d pßÖ )ä' @   eÜ?d uÐàÖ/°ßÖY2 ~ @   fÜ?d ðßÖÛ£  @   gÜ?d HàÖÛÜôc @   hÜ?d ˆàÖû)ö @   iÜ?d ÈàÖ V ä @   jÜ?d áÖÛ€  @   kÜ?d HáÖÓ¿fW @   lÜ?d ˆáÖóJd© @   mÜ?d ÈáÖ5žÐ @   nÜ?d âÖžq> @   oÜ?d HâÖ`ký @   pÜ?d ˆâÖ@žÿè @   qÜ?d ÈâÖ°á‘ @   rÜ?d ãÖ`©‰y @   sÜ?d HãÖÔ¯vr @   tÜ?d ˆãÖôZtŒ @  ! uÜ?d ÈãÖ%Žõ @  " vÜ?d äÖk}ú @  # wÜ?d HäÖ†!Ü @  $ xÜ?d ˆäÖ¦ÔÞï @  % yÜ?d ÈäÖV«$– @  & zÜ?d åÖ†ã¨~ @  ' {Ü?d HåÖŽBN% @  ( |Ü?d ˆåÖ®·LÛ @  ) }Ü?d ÈåÖ^ȶ¢ @  * ~Ü?d æÖÃŒc @  + Ü?d HæÖM·­; @  , €Ü?d ˆæÖmB¯Å @  - Ü?d ÈæÖ=U¼ @  . ‚Ü?d çÖMuÙT @  / ƒÜ?d HçÖèuï @  0 „Ü?d ˆçÖÈ€ @  1 …Ü?d ÈçÖ8ÿùh @  2 †Ü?d èÖ uu @  3 ‡Ü?d HèÖ—JÔž @  4 ˆÜ?d ˆèÖ·¿Ö` @  5 ‰Ü?d ÈèÖGÀ, @  6 ŠÜ?d éÖ—ˆ ñ @  7 ‹Ü?d HéÖŸ)Fª @  8 ŒÜ?d ˆéÖ¿ÜDT @  9 Ü?d ÈéÖO£¾- @  : ŽÜ?d êÖÒçì @  ; Ü?d HêÖ,ýÝë @  < Ü?d ˆêÖ ß @  = ‘Ü?d ÈêÖüw%l @  > ’Ü?d ëÖ,?©„ @  ? “Ü?d HëÖ6>P @  @ ”Ü?d ˆëÖËRã @  A •Ü?d ÈëÖæ´¨š @  B –Ü?d ìÖÿú[• @  C —Ü?d HìÖd°ú~ @  D ˜Ü?d ˆìÖDEø€ @  E ™Ü?d ÈìÖ´:ù @  F šÜ?d íÖdrŽ @  G ›Ü?d HíÖlÓhJ @  H œÜ?d ˆíÖL&j´ @  I Ü?d ÈíÖ¼YÍ @  J žÜ?d îÖ!0  @  K ŸÜ?d HîÖB°Ê× @  L  Ü?d ˆîÖbEÈ) @  M ¡Ü?d ÈîÖ’:2P @  N ¢Ü?d ïÖBr¾¸ @  O £Ü?d HïÖçrf @  P ¤Ü?d ˆïÖLJdý @  Q ¥Ü?d ÈïÖ7øž„ @  R ¦Ü?d ðÖ‰&"6 @  S §Ü?d HðÖlƒÝ @  T ¨Ü?d ˆðÖ2™# @  U ©Ü?d ÈðÖÂæ{Z @  V ªÜ?d ñÖ®÷² @  W «Ü?d HñÖé @  X ¬Ü?d ˆñÖ:ú @  Y ­Ü?d ÈñÖÊ…én @  Z ®Ü?d òÖWÁI¯ @  [ ¯Ü?d HòÖ©ÛЍ @  \ °Ü?d ˆòÖ‰.ˆV @  ] ±Ü?d ÈòÖyQr/ @  ^ ²Ü?d óÖ©þÇ @  _ ³Ü?d HóÖÌ @  ` ´Ü?d ˆóÖ=ê2 @  a µÜ?d ÈóÖÍ•ùK @  b ¶Ü?d ôÖÔÛ D @  c ·Ü?d HôÖO‘«¯ @  d ¸Ü?d ˆôÖod©Q @  e ¹Ü?d ÈôÖŸS( @  f ºÜ?d õÖOSßÀ @  g »Ü?d HõÖGò9› @  h ¼Ü?d ˆõÖg;e @  i ½Ü?d ÈõÖ—xÁ @  j ¾Ü?d öÖ Ý?d ×­·† @   ?Ý?d `×E£¡ @   @Ý?d  ×eì¡_ @   AÝ?d à×PÚ Ë @   BÝ?d ×€’,# @   CÝ?d `×F• @  DÝ?d  ×ft—ü @  EÝ?d à×õ  @  FÝ?d ×Áç€ @  GÝ?d `ןäÚ @  HÝ?d  ×¿Øú @  IÝ?d à׊'Ùn @  JÝ?d ×ZoU† @  KÝ?d `ל|ì§ @  LÝ?d  ×¼‰îY @  MÝ?d àׂDKZ @  NÝ?d ×ë› @  OÝ?d `×$SÓq @  PÝ?d  ×¦Ñ @  QÝ?d à×1Ð @  RÝ?d ×áØ\ó @  SÝ?d `×'ËåÒ @  TÝ?d  ×>ç, @  UÝ?d à×…T[ @   VÝ?d ל¨p @  !WÝ?d `×Âòv @  "XÝ?d  ×âìðˆ @  #YÝ?d à××Úñ @  $ZÝ?d ×’}ô @  %[Ý?d `×ÁÄÕ @  &\Ý?d  ×átÆ+ @  ']Ý?d à×ß¹c( @  (^Ý?d ×BýÃé @  )_Ý?d `×äÂß @  *`Ý?d  ×ÄìÀ! @  +aÝ?d à×ñÚÁµ @  ,bÝ?d ×!’M] @  -cÝ?d `×çô| @  .dÝ?d  ×Çtö‚uÐ × @  /eÝ?d à×mß±´ @  0 fÝ?d 8 ×ÔoÒ @  1 gÝ?d x ×B×5Ô @  2 hÝ?d ¸ ×b"7* @  3 iÝ?d ø ×W6¾ @  4 jÝ?d 8!ׇ\ºV @  5 kÝ?d x!×AOw @  6 lÝ?d ¸!×aº‰ @  7 mÝ?d ø!×_w¤Š @  8 nÝ?d 8"×Â3K @  9 oÝ?d x"×ù`<¡ @  : pÝ?d ¸"×Ù•>_ @  ; qÝ?d ø"×ì£?Ë @  < rÝ?d 8#×<ë³# @  = sÝ?d x#×úø  @  > tÝ?d ¸#×Ú ü @  ? uÝ?d ø#×ö`²= @  @ vÝ?d 8$×ï.A2 @  A wÝ?d x$×±-4 @  B xÝ?d ¸$בØÊ @  C yÝ?d ø$פî^ @  D zÝ?d 8%×t¦”¶ @  E {Ý?d x%ײµ-— @  F |Ý?d ¸%×’@/i @  G }Ý?d ø%׬Šj @  H ~Ý?d 8&×1É*« @  I Ý?d x&×z»j @  J €Ý?d ¸&×ZNhà @  K Ý?d ø&×oxit @  L ‚Ý?d 8'׿0åœ @  M ƒÝ?d x'×y#\½ @  N „Ý?d ¸'×YÖ^C @  O …Ý?d ø'×ʺŠ @  P †Ý?d 8(×þEI½ @  Q ‡Ý?d x(× F» @  R ˆÝ?d ¸(×€³E @  S ‰Ý?d ø(×µ…Ñ @  T ŠÝ?d 8)×eÍœ9 @  U ‹Ý?d x)ךùÍ @  VŒÝ?d ¸)׺ìû3 @  WÝ?d ø)ׄ!^0 @  XŽÝ?d 8*×eþñ @  YÝ?d x*×"6Æ @  ZÝ?d ¸*×ÃÄå @  [‘Ý?d ø*×7õÅq @  \’Ý?d 8+×ç½I™ @  ]“Ý?d x+×!®ð¸ @  ^”Ý?d ¸+×[òF @  _•Ý?d ø+׃1N @  `–Ý?d 8,ך½ @  a—Ý?d x,×Ä|ç @  b˜Ý?d ¸,×ä‰åâ @  c™Ý?d ø,×Ñ¿äv @  dšÝ?d 8-×÷hž @  e›Ý?d x-×ÇäÑ¿ @  fœÝ?d ¸-×çÓA @  gÝ?d ø-×ÙÜvB @  hžÝ?d 8.×D˜Öƒ @  iŸÝ?d x.×â|×µ @  j Ý?d ¸.׉ÕK @  k¡Ý?d ø.×÷¿Ôß @  l¢Ý?d 8/×'÷X7 @  m£Ý?d x/×áäá @  n¤Ý?d ¸/×Áãè @  o¥Ý?d ø/×R}x  @  p¦Ý?d 80×ì£Ä¹ @  q§Ý?d x0ײ ž¿ @  r¨Ý?d ¸0×’UœA @  s©Ý?d ø0×§cÕ @  tªÝ?d 81×w+= @  u«Ý?d x1×±8¨ @  v¬Ý?d ¸1בͪâ @  w­Ý?d ø1ׯá @  x®Ý?d 82×2D¯  @  y¯Ý?d x2× —Ê @  z°Ý?d ¸2×)â•4 @  {±Ý?d ø2×Ô”  @  |²Ý?d 83×ÌœH @  }³Ý?d x3× ¡i @  ~´Ý?d ¸3×*z£— @  µÝ?d ø3×åA)g @  €¶Ý?d 84×üÚh @  ·Ý?d x4×¢ €n @  ‚¸Ý?d ¸4ׂù‚ @  ƒ¹Ý?d ø4׷σ @  „ºÝ?d 85×g‡ì @  …»Ý?d x5ס”¶Í @  †¼Ý?d ¸5×a´3 @  ‡½Ý?d ø5׿¬0 @  ˆ¾Ý?d 86×"è±ñ @  ‰¿Ý?d x6×t\¥Ö @  ŠÀÝ?d ¸6×T©§( @  ‹ÁÝ?d ø6×aŸ¦¼ @  ŒÂÝ?d 87×±×*T @  ÃÝ?d x7×wÄ“u @  ŽÄÝ?d ¸7×W1‘‹ @  ÅÝ?d ø7×Ä] h @  ÆÝ?d 88×ð¢†u @  ‘ÇÝ?d x8×®¡Üs @  ’ÈÝ?d ¸8׎TÞ @  “ÉÝ?d ø8×»bß @  ”ÊÝ?d 89×k*Sñ @  •ËÝ?d x9×­9êÐ @  –ÌÝ?d ¸9×Ìè. @  —ÍÝ?d ø9׳M- @  ˜ÎÝ?d 8:×.Eíì @  ™ÏÝ?d x:×Õ @  šÐÝ?d ¸:×5ã×ø @  ›ÑÝ?d ø:×ÕÖl @  œÒÝ?d 8;×ÐZ„ @  ÓÝ?d x;׎㥠@  žÔÝ?d ¸;×6{á[ @  ŸÕÝ?d ø;×´] @   ÖÝ?d 8<×­_® @  ¡×Ý?d x<×ó\ô @  ¢ØÝ?d ¸<×Ó©öÿ @  £ÙÝ?d ø<׿Ÿ÷k @  ¤ÚÝ?d 8=×6×{ƒ @  ¥ÛÝ?d x=×ðÄ¢ @  ¦ÜÝ?d ¸=×Ð1À\ @  §ÝÝ?d ø=×îüe_ @  ¨ÞÝ?d 8>×s¸Åž @  ©ßÝ?d x>×Õ\Ĩ @  ªàÝ?d ¸>×õ©ÆV @  «áÝ?d ø>×ÀŸÇ @  ¬âÝ?d 8?××K* @  ­ãÝ?d x?×ÖÄò  @  ®äÝ?duÐ@×7 ¸?×ö1ðõ @  ¯åÝ?d ø?×\š·Ã @  ° æÝ?d P@ן6 ÿ @  ± çÝ?d @×cQBÙ @  ² èÝ?d Ð@×áÀU @  ³ éÝ?d A׆/Ï¥ @  ´ êÝ?d PA×¾Ø{ @  µ ëÝ?d A×`Étz @  ¶ ìÝ?d ÐA×ÛŸ¿q @  ·íÝ?d B×ú‡­m @  ¸îÝ?d PB×xº³ @  ¹ïÝ?d B×á!—y @  ºðÝ?d ÐB×c°€§ @  »ñÝ?d C×_ @  ¼òÝ?d PC×†Î Û @  ½óÝ?d C×⹡Ú @  ¾ôÝ?d ÐC×`(¶ @  ¿õÝ?d D×ךè @  ÀöÝ?d PD×U ÿÊ @  Á÷Ý?d Dשl°ì @  ÂøÝ?d ÐD×+ý§2 @  ÃùÝ?d E×L= @  ÄúÝ?d PE×΃*N @  ÅûÝ?d Eתô†O @  ÆüÝ?d ÐE×(e‘‘ @  ÇýÝ?d F× }ƒ @  ÈþÝ?d PF׋ì”S @  ÉÿÝ?d Fׯ¿¡ï @  ÊÞ?d ÐF×-.¶1 @  ËÞ?d G×JÁ,“ @  ÌÞ?d PG×ÈP;M @  ÍÞ?d G׬'—L @  ÎÞ?d ÐG×.¶€’ @  ÏÞ?d H× ´€² @  ÐÞ?d PH׉%—l @  ÑÞ?d H×uBØJ @  ÒÞ?d ÐH×÷ÓÏ” @  Ó Þ?d I×Þ?d PV×MòÁQ @  '?Þ?d V×wŸ, @  (@Þ?d ÐV×õˆò @  )AÞ?d W×W§é½ @  *BÞ?d PW×Õ6þc @  +CÞ?d W×t© @  ,DÞ?d ÐW×ö™¾Q @  -EÞ?d X×°ˆßë @  .FÞ?d PX×2È5 @  /GÞ?d X×­mæ‰ @  0HÞ?d ÐX×/üñW @  1IÞ?d Y×Z @  2JÞ?d PY×ˇÆ @  3KÞ?d Y×®õÐ* @  4LÞ?d ÐY×,dÇô @  5MÞ?d Z×ÃΊ’ @  6NÞ?d PZ×A_L @  7OÞ?d Z×Úïü @  8PÞ?d ÐZ×”Kø" @  9QÞ?d [×6í™m @  :RÞ?d P[×´|޳ @  ;SÞ?d [×BÙ_ @  <TÞ?d Ð[×—ÓÎ @  =UÞ?d \×üsÐ) @  >VÞ?d P\×~âÇ÷ @  ?WÞ?d \×^—Èi @  @XÞ?d Ð\×Üß· @  AYÞ?d ]×~ ¾ø @  BZÞ?d P]×ü1©& @  C[Þ?d ]×]þÊ @  D\Þ?d Ð]×ßžé @  E]Þ?d ^×04¤r @  F^Þ?d P^ײ¥³¬ @  G_Þ?d ^×x—øÀ @  H`Þ?d Ð^×úï @  IaÞ?d _×X ŽQ @  JbÞ?d P_×Ú1™ @  KcÞ?d _×{Îc @  uÐ`×LdÞ?d Ð_×ùžÙ½ @  MeÞ?d (`×5ˆ‚ @  NfÞ?d h`×·–\ @  OgÞ?d ¨`×(m¸à @  PhÞ?d è`תü¯> @  QiÞ?d (a×ZÎq @  RjÞ?d ha׊ËÙ¯ @  SkÞ?d ¨a×+õŽC @  TlÞ?d èaשd™ @  UmÞ?d (b×FÎÔû @  VnÞ?d hb×Ä_Ã% @  WoÞ?d ¨bדڱ• @  XpÞ?d èb×K¦K @  YqÞ?d (c׳íÇ @  ZrÞ?d hc×1|ÐÚ @  [sÞ?d ¨c×B‡6 @  \tÞ?d èc×Óè @  ]uÞ?d (d×ysŽ@ @  ^vÞ?d hd×û♞ @  _wÞ?d ¨d×u’ @  `xÞ?d èd×÷‡L @  ayÞ?d (e×U§æ @  bzÞ?d he××6ñÝ @  c{Þ?d ¨e×v¦1 @  d|Þ?d èe×ô™±ï @  e}Þ?d (f×3ü‰ @  f~Þ?d hf×™¢ëW @  gÞ?d ¨f׾Ḡ@  h€Þ?d èf×<—öf @  iÞ?d (gמ1—) @  j‚Þ?d hg× €÷ @  kƒÞ?d ¨g×½ž× @  l„Þ?d èg×?ÀÅ @  m…Þ?d (h×y¡ @  n†Þ?d hh×û¶¡ @  o‡Þ?d ¨h×dû˜ @  pˆÞ?d èh׿jà @  q‰Þ?d (i×DÌîŒ @  rŠÞ?d hiׯ]ùR @  s‹Þ?d ¨i×gc®¾ @  tŒÞ?d èi×åò¹` @  uÞ?d (j× Xô @  vŽÞ?d hj׈ÉãØ @  wÞ?d ¨j×ßL‘h @  xÞ?d èj×]݆¶ @  y‘Þ?d (k×ÿ{çù @  z’Þ?d hk×}êð' @  {“Þ?d ¨k×ÜÔ§Ë @  |”Þ?d èk×^E° @  }•Þ?d (l×5宽 @  ~–Þ?d hl×·t¹c @  —Þ?d ¨l×tW†Ì @  €˜Þ?d èl×öÆ‘ @  ™Þ?d (m×T`ð] @  ‚šÞ?d hm×Öñçƒ @  ƒ›Þ?d ¨m×wϰo @  „œÞ?d èm×õ^§± @  …Þ?d (n×ôê× @  †žÞ?d hnטeý  @  ‡ŸÞ?d ¨n×RW¶e @  ˆ Þ?d èn×ÐÆ¡» @  ‰¡Þ?d (o×r`Àô @  Š¢Þ?d ho×ðñ×* @  ‹£Þ?d ¨o×QÏ€Æ @  Œ¤Þ?d èo×Ó^— @  ¥Þ?d (p×nÆ  @  Ž¦Þ?d hp×ÿÑÓ @  §Þ?d ¨p׋ÿo @  ¨Þ?d èp×€è± @  ‘©Þ?d (q×"¼‰þ @  ’ªÞ?d hq× -ž  @  “«Þ?d ¨q×ÉÌ @  ”¬Þ?d èq׃‚Þ @  •­Þ?d (r×l(“t @  –®Þ?d hr×ª @  —¯Þ?d ¨r×¹<ö @  ˜°Þ?d èr×;­áÄ @  ™±Þ?d (s×™ €‹ @  š²Þ?d hsך—U @  ›³Þ?d ¨s׺¤À¹ @  œ´Þ?d ès×85×g @  µÞ?d (t×S•ÉÏ @  ž¶Þ?d ht×ÑÞ @  Ÿ·Þ?d ¨t×_v× @   ¸Þ?d èt×ÝçÀà @  ¡¹Þ?d (u×A¡Œ @  ¢ºÞ?d hu×ýжR @  £»Þ?d ¨u×\îá¾ @  ¤¼Þ?d èu×Þö` @  ¥½Þ?d (v×1Õ» @  ¦¾Þ?d hv׳D¬Ø @  §¿Þ?d ¨v׉&ò¥ @  ¨ÀÞ?d èv× ·å{ @  ©ÁÞ?d (wש„4 @  ªÂÞ?d hw×+€“ê @  «ÃÞ?d ¨w×оÄ @  ¬ÄÞ?d èw×/ÓØ @  ­ÅÞ?d (x×N>²b @  ®ÆÞ?d hx×̯¥¼ @  ¯ÇÞ?d ¨x×SÛ‹ @  °ÈÞ?d èx×ÑJœÞ @  ±ÉÞ?d (y×sìý‘ @  ²ÊÞ?d hy×ñ}êO @  ³ËÞ?d ¨y×PC½£ @  ´ÌÞ?d èy×ÒÒª} @  µÍÞ?d (z×=xç @  ¶ÎÞ?d hz׿éðÅ @  ·ÏÞ?d ¨z×èl‚u @  ¸ÐÞ?d èz×jý•« @  ¹ÑÞ?d ({×È[ôä @  ºÒÞ?d h{×JÊã: @  »ÓÞ?d ¨{×ëô´Ö @  ¼ÔÞ?d è{×ie£ @  ½ÕÞ?d (|׎  @  ¾ÖÞ?d h|×€Tª~ @  ¿×Þ?d ¨|× !¥à @  ÀØÞ?d è|×"°²> @  ÁÙÞ?d (}×€Óq @  ÂÚÞ?d h}ׇį @  ÃÛÞ?d ¨}×£¹“C @  ÄÜÞ?d è}×!(„ @  ÅÝÞ?d (~×΂Éû @  ÆÞÞ?d h~×LÞ% @  ÇßÞ?d ¨~׆!•I @  ÈàÞ?d è~×°‚— @  ÉáÞ?d (×¦ãØ @  ÊâÞ?d h×$‡ô @  ËãÞ?d ¨×uЀ×'…¹£ê @  ÌäÞ?d è×z¨ÇH @  Í€åÞ?d @€×føÈ› @  ΀æÞ?d €€×F Êe @  Ï€çÞ?d À€×{ñù @  ЀèÞ?d ׫U} @  Ñ€éÞ?d @×m(Á @  Ò êÞ?d €×?˜*? @  Ó ëÞ?d À×<Âhó @  Ô ìÞ?d ‚ס†È2 @  Õ íÞ?d @‚×Qù2K @  Ö îÞ?d €‚×q 0µ @  × ïÞ?d À‚ׄíW% @  Ø ðÞ?d ƒ×T¥ÛÍ @  Ù ñÞ?d @ƒ×¤Ú!´ @  Ú òÞ?d €ƒ×ÀhŒã @  Û€óÞ?d Àƒ×Ã2Î/ @  Ü€ôÞ?d „×Ú|=  @  Ý€õÞ?d @„×*ÇY @  Þ€öÞ?d €„× öŧ @  ߀÷Þ?d À„×&àÙ‹ @  à€øÞ?d …×ö¨Uc @  á€ùÞ?d @…×ׯ @  â€úÞ?d€ €…×Rá±B @  €ûÞ?d À…×°ú»§ @  €üÞ?d †×-¾f @  €ýÞ?d @†×ˆò @  €þÞ?d €†×8}  @  €ÿÞ?d À†× h µ @  €ß?d ‡×Ü ] @  €ß?d @‡×âí$^ @  €ß?d €‡×Â&  @   €ß?d À‡× Ÿ @   €ß?d ˆ×0ôœ @   €ß?d @ˆ× @   €ß?d €ˆ×%7ö @   €ß?d Àˆ×{4Jð @  €ß?d ‰×«|Æ @  € ß?d @‰×8]û @  € ß?d €‰×å_ @  € ß?d À‰×Þöæ$ @  € ß?d Š×C²Få @  € ß?d @Š×v„Gq @  €ß?d €Š×VqE @  €ß?d ÀŠ×m"}e @  €ß?d ‹×½jñ @  €ß?d @‹×ƒ§TŽ @  €ß?d €‹×£RVp @  €ß?d À‹×eAïQ @  €ß?d Œ×|^ @  €ß?d @Œ×I9Ê @  €ß?d €Œ×iÌ4 @  €ß?d ÀŒ×7ÏE2 @  €ß?d ×ç‡ÉÚ @  €ß?d @×eíu‰ @   €ß?d €×Eww @  !€ß?d À׃ ÎV @  "€ß?d Ž×On— @  #€ß?d @Ž×+yo @  $€ß?d €Ž× Œmý @  %€ß?d ÀŽ×­hlË @  &€ ß?d ×} à# @  '€!ß?d @×CíE  @  (€"ß?d €×cGÞ @  )€#ß?d À×¥ þÿ @  *€$ß?d ×ÕBM @  +€%ß?d @×.ãCÙ @  ,€&ß?d €×A' @  -€'ß?d À×P! @  .€(ß?d ‘×€]—É @  /€)ß?d @‘×n±V @  0*ß?d €‘×ND}¨ @  1+ß?d À‘׈Wĉ @  2,ß?d ’×dH @  3-ß?d @’× %eÜ @  4.ß?d €’×Ðg" @  5/ß?d À’×;ƒ_È @  60ß?d “×ëËÓ  @  71ß?d @“×Õv# @  82ß?d €“×õótÝ @  93ß?d À“×3àÍü @  :4ß?d ”×*®>ó @  ;5ß?d @”ט?g @  <6ß?d €”×?m=™ @  =7ß?d À”×angŸ @  >8ß?d •×±&ëw @  ?9ß?d @•×KQ¶ @  @:ß?d €•×½¾SH @  A;ß?d À•×{­êi @  B<ß?d –׿éJ¨ @  C=ß?d @–×ÓßK< @  D>ß?d €–×ó*I @  E?ß?d À–×¥ž]å @  F@ß?d —×uÖÑ  @  GAß?d @—×Kt @  HBß?d €—×kîvð @  ICß?d À—×­ýÏÑ @  JDß?d ˜×™CÌ @  KEß?d @˜×¬4BX @  LFß?d €˜×ŒÁ@¦ @  MGß?d À˜×Ò  @  NHß?d ™×Š–H @  OIß?d @™×‘æ « @  PJß?d €™×±U @  QKß?d À™×w¶t @  RLß?d š×êDµ @  SMß?d @š×ßr! @  TNß?d €š×ÿ‡ß @  UOß?d Àš×ÄÔ-5 @  VPß?d ›×œ¡Ý @  WQß?d @›×*QÞ @  XRß?d €›× ¤  @  YSß?d À›×Ì·¿ @  ZTß?d œ×ÕùL @  [Uß?d @œ×àÏMš @  \Vß?d €œ×À:Od @  ]Wß?d Àœ×ž9b @  ^Xß?d ×Nq™Š @  _Yß?d @×Ì%Ù @  `Zß?d €×ìî'' @  a[ß?d À×*ýž @  b\ß?d ž×·¹>Ç @  c]ß?d @ž×‚?S @  d^ß?d €ž×¢z=­ @  e_ß?d Àž×ž<› @  f`ß?d Ÿ×ÔÖ°s @  gaß?d @Ÿ×êp @  hbß?d €Ÿ×ÊîŽ @  icßuР×?d ÀŸ× ý®¯ @  jdß?d  ×}öpÉ @  keß?d X ×HÀq] @  lfß?d ˜ ×h5s£ @  mgß?d Ø ×66)¥ @  nhß?d ¡×æ~¥M @  oiß?d X¡×u>® @  pjß?d ˜¡×Uç @  Ö€Ðß?d »×XYÔÖ @  ×€Ñß?d X»×f”qÕ @  Ø€Òß?d ˜»×Fas+ @  Ù€Óß?d Ø»×€rÊ  @  Ú€Ôß?d ¼×™<9 @  Û€Õß?d X¼×¬ 8‘ @  Ü€Öß?d ˜¼×Œÿ:o @  Ý€×ß?d ؼ×Òü`i @  Þ€Øß?d ½×´ì @  ߀Ùß?d X½×€ÞPÒ @  à€Úß?d ˜½× +R, @  á€Ûß?d ؽ×f8ë  @  â€Üß?d€ ¾×:;¼Ì @  €Ýß?d X¾×îLõq @  €Þß?d ˜¾×ι÷ @  €ßß?d ؾ×­ T @  €àß?d ¿×}\¼ @  €áß?d X¿×#{Å @  €âß?d ˜¿×­Öy; @uÐÀ×  €ãß?d Ø¿×Ø÷ì @  äß?d 0À×¼½N @   åß?d pÀ×LxG7 @   æß?d °À×lEÉ @   çß?d ðÀ×÷Çä" @   èß?d 0Á×'hÊ @   éß?d pÁ××ð’³ @  êß?d °Á×÷M @  ëß?d ðÁ×RHö @  ìß?d 0Â×ÏAè7 @  íß?d pÂ×?>N @  îß?d °Â×˰ @  ïß?d ðÂ×áÑÓ· @  ðß?d 0Ã×1™__ @  ñß?d pÃ×Áæ¥& @  òß?d °Ã×á§Ø @  óß?d ðÃ×é²Aƒ @  ôß?d 0Ä×ðü²Œ @  õß?d pÄ׃Hõ @  öß?d °Ä× vJ  @  ÷ß?d ðÄ×»<ëà @  øß?d 0Å×ktg @  ùß?d pÅ×› q @  úß?d °Å×»þŸ @  ûß?d ðÅ×ø`„ @   üß?d 0Æ×’¼ÀE @  !ýß?d pÆ×bÃ:< @  "þß?d °Æ×B68 @  #ÿß?d ðÆ×ß¿« @  $à?d 0Ç×Ò—3C @  %à?d pÇ×"èÉ: @  &à?d °Ç×ËÄ @  'à?d ðÇ× ¼-Ÿ @  (à?d 0È×>C¡‚ @  )à?d pÈ×Î<[û @  *à?d °È×îÉY @  +à?d ðÈ×uƒøî @  ,à?d 0É×¥Ët @  - à?d pÉ×U´Ž @  . à?d °É×uAŒ @  / à?d ðÉ×ÐAT: @  0 à?d 0Ê×Môû @  1 à?d pÊׄ½ÒW @  2 à?d °ÊפHЩ @  3 à?d ðÊ×ZR® @  4 à?d 0Ë׊ŸF @  5 à?d pË×zee? @  6 à?d °Ë×ZgÁ @  7 à?d ðË×R1š @  8 à?d 0Ì×Kr• @  9 à?d pÌ×»ˆì @  : à?d °Ì×›õŠ @  ; à?d ðÌ׿+ù @  < à?d 0Í×Ð÷§ @  = à?d pÍ× ˆ]h @  > à?d °Í×}_– @  ? à?d ðÍ×|¦ @  @ à?d 0Îׇ8Î @  A à?d pÎ×wGü· @  B à?d °Î×W²þI @  C à?d ðÎ×4’ @  D  à?d 0Ï×äWˆz @  E !à?d pÏ×(r @  F "à?d °Ï×4Ýpý @  G #à?d ðÏ×<|–¦ @  H $à?d 0Ðׂ¢* @  I %à?d pÐ×rÝÐm @  J &à?d °Ð×R(Ò“ @  K 'à?d ðÐ×Ébsx @  L (à?d 0Ñ×*ÿ @  M )à?d pÑ×éUé @  N *à?d °Ñ×É  @  O +à?d ðÑ×l ß¬ @  P ,à?d 0Ò×ñäm @  Q -à?d pÒ×›… @  R .à?d °Ò×!n‡ê @  S /à?d ðÒ×ßtDí @  T 0à?d 0Ó×<È @  U 1à?d pÓ×ÿC2| @  V 2à?d °Ó×ß¶0‚ @  W 3à?d ðÓ××ÖÙ @  X 4à?d 0Ô×ÎY%Ö @  Y 5à?d pÔ×>&߯ @  Z 6à?d °Ô×ÓÝQ @  [ 7à?d ðÔ×…™|º @  \ 8à?d 0Õ×UÑðR @  ] 9à?d pÕ×¥® + @  ^ :à?d °Õ×…[Õ @  _ ;à?d ðÕ×1]÷Þ @  ` <à?d 0Ö׬W @  a =à?d pÖ×\f­f @  b >à?d °Ö×|“¯˜ @  c ?à?d ðÖ×ïn@R @  d @à?d 0××?&̺ @  e Aà?d p××ÏY6à @  f Bà?d °××ï¬4= @  g Cà?d ð××ç Òf @  h Dà?d 0Ø×Óò^{ @  i Eà?d pØ×#¤ @  j Fà?d °Ø×x¦ü @  k Gà?d ðØ×˜2 @  l Hà?d 0Ù×Hz‹ÿ @  m Ià?d pÙ׸q† @  n Jà?d °Ùטðsx @  o Kà?d ðÙ×=ð«Ã @  p Là?d 0Ú× ´  @  q Mà?d pÚ×PËñ{ @  r Nà?d °Ú×p>ó… @  s Oà?d ðÚ׎$0‚ @  t Pà?d 0Û×^l¼j @  u Qà?d pÛ×®F @  v Rà?d °Û׎æDí @  w Sà?d ðÛ׆G¢¶ @  x Tà?d 0Üן Q¹ @  y Uà?d pÜ×ov«À @  z Và?d °Ü×vDuë @  {Wà?d ðÜ×íÔ @  |Xà?d 0Ý×=FXè @  }Yà?d pÝ×Í9¢‘ @  ~Zà?d °Ý×íÌ o @  [à?d ðÝ×›iÇ @  €\à?d 0Þ׉ßÉ @  ]à?d pÞ×y 3 @  ‚^à?d °Þ×YU1 @  ƒ_à?d ðÞ×:øËZ @  „`à?d 0ß×ê°G² @  …aà?d pß×ϽË @  †bà?d uÐà×/°ß×::¿5 @  ‡cà?d ðß× \…» @  ˆ dà?d Hà×øÛM @  ‰ eà?d ˆà×@ã4 @  Š fà?d Èà×Âr#Ê @  ‹ gà?d á× á @  Œ hà?d Há׉pÉ @   ià?d ˆá×Ûká @  Ž jà?d Èá×YúöN @   kà?d â×ã/™ê @   là?d Hâ×a¾Ž4 @  ‘ mà?d ˆâ×3¥am @  ’ nà?d Èâ×±4v³ @  “ oà?d ã×÷.‚ @  ” pà?d Hãןf9\ @  • qà?d ˆã×Í}Ö @  – rà?d Èã×OìÁÛ @  — sà?d ä×Ü’ÃQ @  ˜ tà?d Hä×^Ô @  ™ uà?d ˆä× ;Ö @  š và?d Èä×މ, @  › wà?d å×GÕ @  œ xà?d Hå×Å‹  @   yà?d ˆå×—îR @  ž zà?d Èå×ùŒ @  Ÿ {à?d æ×¾Ò±˜ @    |à?d Hæ× üà?d `تV©o @  ? ýà?d  Ø$_Ž @  @ þà?d àØ¦ÎP @  A ÿà?d ØÀŸß @  B á?d `ØB“ˆ @  C á?d  ØÕÁœµ @  D á?d àØWP‹k @  E á?d Ø'-©‰ @  F á?d `Ø¥¼¾W @  G á?d  Ø9t @  H á?d àØ»„ª @  I á?d Ø·^Øš @  J á?d ` Ø5ÏÏD @  K  á?d   Ø¢Ûð @  L  á?d à Ø Ì. @  M  á?d ØùÊ @  N  á?d ` Ø{[ÕÎ @  O  á?d   ØJS[  @  P á?d à ØÈÂLÓ @  Q á?d Ø¡Hï @  R á?d ` Ø#ÙøÑ @  S á?d   Ø´‹ìe @  T á?d à Ø6û» @  U á?d ØkÖ¦K @  V á?d ` ØéG±• @  W á?d   Øuî¶ @  X á?d à Ø÷h @  Y á?d Øû¥×X @  Z á?d ` Øy4À† @  [ á?d   ØîfÔ2 @  \ á?d à Øl÷Ãì @  ] á?d ص1ÍÒ @  ^ á?d `Ø7 Ú  @  _ á?d  Ø®s @  ` á?d àØ•?d¡ @  a á?d Øaþ¡ @  b  á?d `Øã“é @  c !á?d  ØtÁýË @  d "á?d àØöPê @  e #á?d Ø øX @  f $á?d `ØŽï† @  g %á?d  Ø4_¥ @  h &á?d àØ¥H{ @  i 'á?d Øœ‰K @  j (á?d `Øîž• @  k )á?d  Ø‰¼Š! @  l *á?d àØ -ÿ @  m +á?d ØÒë“Á @  n ,á?d `ØPz„ @  o -á?d  Øar Ü @  p .á?d àØãã @  q /á?d ØŠi¾Þ @  r 0á?d `Øø© @  s 1á?d  ØŸª½´ @  t 2á?d àØ;ªj @  u 3á?d Ø@÷÷š @  v 4á?d `ØÂfàD @  w 5á?d  Ø^ÏPg @  x 6á?d àØÜ^G¹ @  y 7á?d ØЄ†‰ @  z 8á?d `ØR‘W @  { 9á?d  ØÅG…ã @  | :á?d àØGÖ’= @  } ;á?d Øžœ @  ~ <á?d `Ø‹Ý @   =á?d  ØqÞ  @  € >á?d àØóOÓ @   ?á?d Ø÷"ŒÂ @  ‚ @á?d `Øu³› @  ƒ Aá?d  Øâᨠ@  „ Bá?d àØ`p˜v @  … Cá?d Ø º” @  † Dá?d `Ø’œ­J @  ‡ Eá?d  Ø5i @  ˆ Fá?d àØŒ¤ · @  ‰ Gá?d Ø€~ˇ @  Š Há?d `ØïÜY @  ‹ Iá?d  Ø•½Èí @  Œ Já?d àØ,ß3 @   Ká?d ØÎêÑ  @  Ž Lá?d `ØL{ÆÓ @   Má?d  Ø}sH @   Ná?d àØÿâ_Î @  ‘ Oá?d Ø–hü @  ’ Pá?d `ØùëÌ @  “ Qá?d  Øƒ«ÿx @  ” Rá?d àØ:è¦ @  • Sá?d Ø\öµV @  – Tá?d `ØÞg¢ˆ @  — Uá?d  ØBΫ @  ˜ Vá?d àØÀ_u @  ™ Wá?d ØÌ…ÄE @  š Xá?d `ØNÓ› @  › Yá?d  ØÙFÇ/ @  œ Zá?d àØ[×Ðñ @   [á?d Ø‚ÞÏ @  ž \á?d `Ø€É @  Ÿ ]á?d  Ø Ž`b @    ^á?d àØ¢w¼ @  ¡ _á?d ØV"í¼ @  ¢ `á?d `ØÔ³úb @  £ aá?d  ØCáîÖuÐ Ø @  ¤ bá?d àØø·%Ý @  ¥cá?d 8 ØÍ>UD @  ¦dá?d x ØO¯Bš @  §eá?d ¸ ØÓò¹ @  ¨fá?d ø ØQ—åg @  ©gá?d 8!Ø]M$W @  ªhá?d x!ØßÜ3‰ @  «iá?d ¸!ØHŽ'= @  ¬já?d ø!ØÊ0ã @  ­ká?d 8"ØÙ>Ý @  ®lá?d x"Ø‘H) @  ¯má?d ¸"Ø @§À @  °ná?d ø"Ø"Ѱ @  ±oá?d 8#ØK[ @  ²pá?d x#ØÉÊ @  ³qá?d ¸#Ø^˜¨ @  ´rá?d ø#ØÜ v @  µsá?d 8$ØÅZ† @  ¶tá?d x$ØTMX @  ·uá?d ¸$ØŸýý{ @  ¸vá?d ø$Ølê¥ @  ¹wá?d 8%ض+• @  ºxá?d x%Ø“'dõ @  Ç…á?d ¸(Ø1—ÔÖ @  È†á?d ø(سà @  É‡á?d 8)Ø¿Ü8 @  Êˆá?d x)Ø=Mæ @  Ë‰á?d ¸)تR @  ÌŠá?d ø)Ø(ŽŒ @  Í‹á?d 8*ØñH² @  ÎŒá?d x*ØsÙl @  Ïá?d ¸*ØBѯ @  ÐŽá?d ø*ØÀ@–q @  Ñá?d 8+Ø©Ê5­ @  Òá?d x+Ø+["s @  Ó‘á?d ¸+ؼ 6Ç @  Ô’á?d ø+Ø>˜! @  Õ“á?d 8,ØcT|é @  Ö”á?d x,ØáÅk7 @  ×•á?d ¸,Ø}lÛ @  Ø–á?d ø,ØÿýÌÊ @  Ù—á?d 8-Øó' ú @  Ú˜á?d x-Øq¶$ @  Û™á?d ¸-Øæä @  Üšá?d ø-ØduN @  Ý›á?d 8.ؽ³p @  Þœá?d x.Ø?"® @  ßá?d ¸.Ø,©Ý @  àžá?d ø.ؽ¾ @  áŸá?d 8/Øi€$ @  â á?d€ x/ØÓoÁý @   ¡á?d ¸/ØgÕzµ @   ¢á?d ø/ØåDmk @   £á?d 80ØÚQ„Ë @   ¤á?d x0ØXÀ“ @   ¥á?d ¸0Ø Û|L @   ¦á?d ø0؈Jk’ @   §á?d 81ØJ"õØ @   ¨á?d x1Øȳâ @    ©á?d ¸1Øš¨ _ @    ªá?d ø1Ø9 @    «á?d 82ضïR @    ¬á?d x2؆'øŒ @    ­á?d ¸2ØÔ<Õ @   ®á?d ø2ØV­  @   ¯á?d 83Ø\4ÂM @   °á?d x3ØÞ¥Õ“ @   ±á?d ¸3ØŒ¾:Ê @   ²á?d ø3Ø/- @   ³á?d 84Ø–ª‹  @   ´á?d x4Ø;œ× @   µá?d ¸4ØF sŽ @   ¶á?d ø4ØıdP @   ·á?d 85ØÙú @   ¸á?d x5Ø„HíÄ @   ¹á?d ¸5ØÖS @   ºá?d ø5ØTÂC @   »á?d 86ØHMà @   ¼á?d x6ØÊÜ÷N @   ½á?d ¸6Ø˜Ç @   ¾á?d ø6ØVÉ @   ¿á?d 87Øl.Æò @    Àá?d x7Øî¿Ñ, @   !Áá?d ¸7ؼ¤>u @   "Âá?d ø7Ø>5)« @   #Ãá?d 88Ø‹ð¤ @   $Äá?d x8Ø çz @   %Åá?d ¸8Ø[‹# @   &Æá?d ø8ØÙý @   'Çá?d 89Ør· @   (Èá?d x9Ø™ã–i @   )Éá?d ¸9ØËøy0 @   *Êá?d ø9ØIinî @   +Ëá?d 8:ØUæ›= @   ,Ìá?d x:Ø×wŒã @   -Íá?d ¸:Ø…lcº @   .Îá?d ø:Øýtd @   /Ïá?d 8;Ø d¶" @   0Ðá?d x;Øõ¡ü @   1Ñá?d ¸;ØÝîN¥ @   2Òá?d ø;Ø_Y{ @   3Óá?d 8<ØÇúÿf @   4Ôá?d x<ØEkè¸ @   5Õá?d ¸<Øpá @   6Öá?d ø<Ø•á? @   7×á?d 8=ØW‰Žu @   8Øá?d x=ØÕ™« @   9Ùá?d ¸=؇vò @   :Úá?d ø=Ø’a, @   ;Ûá?d 8>Ø”ÿ @   <Üá?d x>Ø›Œƒ! @   =Ýá?d ¸>ØÉ—lx @   >Þá?d ø>ØK{¦ @   ?ßá?d 8?Øc)¡ @   @àá?d x?ØḶÀ @   Aáá?duÐ@Ø7 ¸?س£Y™ @   Bâá?d ø?ØÊ\uG @   C ãá?d P@؈;ši @   D äá?d @بΘ— @   E åá?d Ð@ØX±bî @   F æá?d Aر>2Ó @   Gçá?d PAØ!7¯ @   Hèá?d AØz5Q @   Iéá?d ÐAØñÏ( @   Jêá?d BØlAoé @   Këá?d PBØo-% @   Lìá?d BØOî/Û @   Míá?d ÐBØ¿‘Õ¢ @   Nîá?d CØoÙYJ @   Oïá?d PCØ7™: @   Pðá?d CØlÄ @   Qñá?d ÐCØçø½ @   Ròá?d DØþ] ² @   Sóá?d PDØýI~ @   Tôá?d DØÝòK€ @   Uõá?d ÐDØ-±ù @   Vöá?d EØýÅ= @   W÷á?d PEØmt8m @   Xøá?d EØM:“ @   Yùá?d ÐEؽþÀê @   Zúá?d FØ º`+ @   [ûá?d PFØ#à"ç @   \üá?d FØ  @   ]ýá?d ÐFØójÚ` @   ^þá?d GØ#"Vˆ @   _ÿá?d PGØ×0> @   `â?d GØ÷õ2À @   aâ?d ÐG؊ȹ @   bâ?d HØ3uD¤ @   câ?d PHØ0/h @   dâ?d HØÚ– @   eâ?d ÐHØà¥þï @   fâ?d IØ0ír @   gâ?d PIØ \w{ @   hâ?d IØ€©u… @   i â?d ÐIØpÖü @   j â?d JØí’/= @   k â?d PJØîÈmñ @   l â?d JØÎ=o @   m â?d ÐJØ>B•v @   nâ?d KØî ž @   oâ?d PKضJ@î @   pâ?d KØ–¿B @   qâ?d ÐKØfÀ¸i @   râ?d LØŽKf @   sâ?d PLØ|Ô ª @   tâ?d LØ\! T @   uâ?d ÐLج^ñ- @   vâ?d MØ|}Å @   wâ?d PMØì§x¹ @   xâ?d MØÌRzG @   yâ?d ÐMØ<-€> @   zâ?d NØ¡i ÿ @   {â?d PNØ¢3b3 @   |â?d NØ‚Æ`Í @   }â?d ÐNØr¹š´ @   ~â?d OØ¢ñ\ @   â?d POØ;Qgã @   € â?d Oؤe @   !â?d ÐOØëÛŸd @   ‚"â?d PØU#Ö @   ƒ#â?d PPØV_a @   „$â?d PØvªcä @   …%â?d ÐP؆ՙ @   †&â?d QØVu @   ‡'â?d PQØÆ,  @   ˆ(â?d QØæÙ÷ @   ‰)â?d ÐQØ¦èŽ @   Š*â?d RØ‹âHO @   ‹+â?d PR؈¸ ƒ @   Œ,â?d RبM} @   -â?d ÐRØX2ò @   Ž.â?d S؈z~ì @   /â?d PSØÐ:'œ @   0â?d SØðÏ%b @   ‘1â?d ÐSØ°ß @   ’2â?d TØþ, @   “3â?d PTؤnØ @   ”4â?d TØ:Ql& @   •5â?d ÐTØÊ.–_ @   –6â?d UØf· @   —7â?d PUØŠ×Ë @   ˜8â?d Uت"5 @   ™9â?d ÐUØZ]çL @   š:â?d VØÇG @   ›;â?d PVØÄCA @   œ<â?d VØä¶¿ @   =â?d ÐVØÉýÆ @   ž>â?d WØÄq. @   Ÿ?â?d PWØà ## @    @â?d WØÀÕ!Ý @   ¡Aâ?d ÐWØ0ªÛ¤ @   ¢Bâ?d XØUW¹ @   £Câ?d PXØu @   ¤Dâ?d XØ'ú‹ @   ¥Eâ?d ÐXØ×…íò @   ¦Fâ?d YØÍa @   §Gâ?d PYØ—|df @   ¨Hâ?d YØ·‰f˜ @   ©Iâ?d ÐYØGöœá @   ªJâ?d ZØÚ²<  @   «Kâ?d PZØÙè~ì @   ¬Lâ?d ZØù| @   ­Mâ?d ÐZØ b†k @   ®Nâ?d [ØÙ* ƒ @   ¯Oâ?d P[ØjSó @   °Pâ?d [Ø¡ŸQ  @   ±Qâ?d Ð[ØQà«t @   ²Râ?d \ØH®X{ @   ³Sâ?d P\ØKô· @   ´Tâ?d \ØkI @   µUâ?d Ð\Ø›~â0 @   ¶Vâ?d ]ØK6nØ @   ·Wâ?d P]ØÛ‡k¤ @   ¸Xâ?d ]ØûriZ @   ¹Yâ?d Ð]Ø “# @   ºZâ?d ^Ø–I3â @   »[â?d P^Ø•q. @   ¼\â?d ^صæsÐ @   ½]â?d Ð^ØE™‰© @   ¾^â?d _Ø•ÑA @   ¿_â?d P_Øï'DÏ @   À`â?d _ØÏÒF1 @   uÐ`ØÁaâ?d Ð_Øj` @    bâ?d (`ظ’Õ @   à câ?d h`Ø»È—É @   Ä dâ?d ¨`Ø›=•7 @   Å eâ?d è`ØkBoN @   Æ fâ?d (aØ» 㦠@   Ç gâ?d haØ+»æÚ @   È hâ?d ¨aØ Nä$ @   É iâ?d èaØû1] @   Ê jâ?d (bØfu¾œ @   Ë kâ?d hbØe/üP @   Ì lâ?d ¨bؾ´Å® @   Ímâ?d èbØNË?× @   Înâ?d (cØžƒ³? @   Ïoâ?d hcØÆÃêO @   Ðpâ?d ¨cØæ6è± @   Ñqâ?d ècØIÈ @   Òrâ?d (dØáÇ @   Ósâ?d hdØ ]£  @   Ôtâ?d ¨dØ,¨¡õ @   Õuâ?d èdØÜ×[Œ @   Övâ?d (eØ Ÿ×d @   ×wâ?d heØœ.Ò @   Øxâ?d ¨eؼÛÐæ @   Ùyâ?d èeØL¤*Ÿ @   Úzâ?d (fØÑàŠ^ @   Û{â?d hfØҺȒ @   Ü|â?d ¨fØòOÊl @   Ý}â?d èfØ00 @   Þ~â?d (gØÒx¼ý @   ßâ?d hgØëºb @   à€â?d ¨gØË긜 @   áâ?d ègØ;•Bå @   â‚â?d€ (hØ{©Ò^ @  !ƒâ?d hhØ™²Ø» @  !„â?d ¨hعGÚE @  !…â?d èhØŒqÛÑ @  !†â?d (iØ\9W9 @  !‡â?d hiØ: ? @  !ˆâ?d ¨iØ"ÏÁ @  !‰â?d èiت @  !Šâ?d (jØF  @  ! ‹â?d hjØGU³" @  ! Œâ?d ¨jØg ±Ü @  ! â?d èjØR–°H @  ! Žâ?d (kØ‚Þ<  @  ! â?d hkعJ @  !â?d ¨kØ™x´ @  !‘â?d èkØ W @  !’â?d (lØZnX @  !“â?d hlØÕI×y @  !”â?d ¨lØõ¼Õ‡ @  !•â?d èlØÀŠÔ @  !–â?d (mØÂXû @  !—â?d hmØNÁý @  !˜â?d ¨mØn4 @  !™â?d èmØPù¥ @  !šâ?d (nØͽÁ @  !›â?d hnØ ®¼à @  !œâ?d ¨nØ+[¾ @  !â?d ènØm¿Š @  !žâ?d (oØÎ%3b @  !Ÿâ?d hoØhÁ2T @  ! â?d ¨oØH40ª @  !¡â?d èoØÊ^Œù @  ! ¢â?d (pØt€0K @  !!£â?d hpز“‰j @  !"¤â?d ¨pØ’f‹” @  !#¥â?d èpاPŠ @  !$¦â?d (qØwè @  !%§â?d hqØ)\î @  !&¨â?d ¨qØ î^ @  !'©â?d èqØ7#û @  !(ªâ?d (rتg[Ò @  !)«â?d hrØltâó @  !*¬â?d ¨rØLà  @  !+­â?d èrØy·á™ @  !,®â?d (sØ©ÿmq @  !-¯â?d hsØ’¬U› @  !.°â?d ¨sزYWe @  !/±â?d èsØ!5̆ @  !0²â?d (tØ8{?‰ @  !1³â?d htØþh†¨ @  !2´â?d ¨tØÞ„V @  !3µâ?d ètØë«… @  !4¶â?d (uØ;ã * @  !5·â?d huØeàS, @  !6¸â?d ¨uØEQÒ @  !7¹â?d èuØ{ØôÑ @  !8ºâ?d (vØæœT @  !9»â?d hvØ í1 @  !:¼â?d ¨vØzïÏ @  !;½â?d èvØ5Lî[ @  !<¾â?d (wØåb³ @  !=¿â?d hwس°v” @  !>Àâ?d ¨wØ“Etj @  !?Áâ?d èwØ¿(Ϋ @  !@Ââ?d (xØ‹×B¶ @  !AÃâ?d hxØMÄû— @  !BÄâ?d ¨xØm1ùi @  !CÅâ?d èxØXøý @  !DÆâ?d (y؈Ot @  !EÇâ?d hyØÖL. @  !FÈâ?d ¨yØö¹,í @  !GÉâ?d èyØÈt‰î @  !HÊâ?d (zØU0)/ @  !IËâ?d hzØ“# @  !JÌâ?d ¨zس֒ð @  !KÍâ?d èz؆à“d @  !LÎâ?d ({ØV¨Œ @  !MÏâ?d h{Ømû'f @  !NÐâ?d ¨{ØM%˜ @  !OÑâ?d è{ØÞb¾{ @  !PÒâ?d (|ØÇ,Mt @  !QÓâ?d h|Ø?ôU @  !RÔâ?d ¨|Ø!Êö« @  !SÕâ?d è|Øü÷? @  !TÖâ?d (}ØÄ´{× @  !U×â?d h}Øš·!Ñ @  !VØâ?d ¨}غB#/ @  !WÙâ?d è}Ø„†, @  !XÚâ?d (~ØË&í @  !YÛâ?d h~ØߨŸÌ @  !ZÜâ?d ¨~Øÿ-2 @  ![Ýâ?d è~ØÊœ¦ @  !\Þâ?d (ØSN @  !]ßâ?d hؼ·x @  !^àâ?d ¨ØuЀØ'œB† @  !_áâ?d èØ(¯Õ @  !`ââ?d @€Øp–M¡ @  !aãâ?d €€Øáá  @  !bäâ?d À€Ø–pö~ @  !cåâ?d ØñŸlÜ @  !dæâ?d @Øs{ @  !eçâ?d €Øi4$ @  !fèâ?d ÀØ ø#ú @  !géâ?d ‚Ø,à1æ @  !hêâ?d @‚Ø®q&8 @  !iëâ?d €‚ØÊŠ9 @  !jìâ?d À‚ØH—ç @  !kíâ?d ƒØ/xE @  !lîâ?d @ƒØ­é› @  !mïâ?d €ƒØ4Þ=Q @  !nðâ?d ÀƒØ¶O* @  !oñâ?d „ؾüU½ @  !pòâ?d @„Ø$ @  !xúâ?d @†ØâŠ)ú @  !yûâ?d €†Ø†ý…û @  !züâ?d À†Øl’% @  !{ýâ?d ‡Øcƒ‡ @  !|þâ?d @‡ØáY @  !}ÿâ?d €‡ØwcÀ @  !~ã?d À‡Øõò @  !ã?d ˆØŒ§- @  !€ã?d @ˆØ6ó @  !ã?d €ˆØjA¢ò @  !‚ã?d ÀˆØèе, @  !ƒã?d ‰Ø?/Ž @  !„ã?d @‰Ø ®8P @  !…ã?d €‰ØñÉwv @  !†ã?d À‰ØsX`¨ @  !‡ ã?d ŠØR@r´ @  !ˆ ã?d @ŠØÐÑej @  !‰ ã?d €ŠØ´¦Ék @  !Š ã?d ÀŠØ67Þµ @  !‹ ã?d ‹ØQØD @  !Œã?d @‹ØÓISÉ @  !ã?d €‹ØJ~~ @  !Žã?d À‹ØÈïiÝ @  !ã?d ŒØÀ\ï @  !ã?d @ŒØBÍ1 @  !‘ã?d €ŒØ&º­0 @  !’ã?d ÀŒØ¤+ºî @  !“ã?d ØÃÄ L @  !”ã?d @ØAU7’ @  !•ã?d €Ø½2x´ @  !–ã?d ÀØ?£oj @  !—ã?d ŽØ»}v @  !˜ã?d @ŽØœ*j¨ @  !™ã?d €ŽØø]Æ© @  !šã?d ÀŽØzÌÑw @  !›ã?d Ø#KÕ @  !œã?d @ØŸ²\  @  !ã?d €Ø›2H @  !ž ã?d ÀØ£_à @  !Ÿ!ã?d ا†Hü @  ! "ã?d @Ø%_" @  !¡#ã?d €ØA`ó# @  !¢$ã?d ÀØÃñäý @  !£%ã?d ‘ؤ~_ @  !¤&ã?d @‘Ø&i @  !¥'ã?d €‘ØÚè&§ @  !¦(ã?d À‘ØXy1y @  !§)ã?d ’Øya#e @  !¨*ã?d @’Øûð4» @  !©+ã?d €’ØŸ‡˜º @  !ª,ã?d À’Ød @  !«-ã?d “ØzùÆ @  !¬.ã?d @“Øøh @  !­/ã?d €“Øa_/Ò @  !®0ã?d À“ØãÎ8  @  !¯1ã?d ”Øë}G> @  !°2ã?d @”ØiìPà @  !±3ã?d €”Ø ›üá @  !²4ã?d À”Ø ë? @  !³5ã?d •Øèåq @  !´6ã?d @•ØjtfC @  !µ7ã?d €•Ø–)e @  !¶8ã?d À•Ø‚>» @  !·9ã?d –Ø5š,§ @  !¸:ã?d @–Ø· ;y @  !¹;ã?d €–ØÓ|—x @  !º<ã?d À–ØQ퀦 @  !»=ã?d —Ø6 @  !¼>ã?d @—Ø´“ Ú @  !½?ã?d €—Ø@C Ý @  !¾@ã?d À—ØÂÒ @  !¿Aã?d ˜ØXÑ: @  !ÀBã?d @˜ØÚ@-ß @  !ÁCã?d €˜Ø¾7Þ @  !ÂDã?d À˜Ø<¦– @  !ÃEã?d ™Ø[I ¢ @  !ÄFã?d @™ØÙØ| @  !ÅGã?d €™Ø%¿TZ @  !ÆHã?d À™Ø§.C„ @  !ÇIã?d šØ†6Q˜ @  !ÈJã?d @šØ§FF @  !ÉKã?d €šØ`ÐêG @  !ÊLã?d ÀšØâAý™ @  !ËMã?d ›Ø…®g; @  !ÌNã?d @›Ø?på @  !ÍOã?d €›Øž]/ @  !ÎPã?d À›Ø™Jñ @  !ÏQã?d œØ*5à @  !ÐRã?d @œØ–»" @  !ÑSã?d €œØòÌŽ @  !ÒTã?d ÀœØp]™Â @  !ÓUã?d ز` @  !ÔVã?d @Ø•#¾ @  !ÕWã?d €ØiD[˜ @  !ÖXã?d ÀØëÕLF @  !×Yã?d žØÊÍ^Z @  !ØZã?d @žØH\I„ @  !Ù[ã?d €žØ,+å… @  !Ú\ã?d ÀžØ®ºò[ @  !Û]ã?d ŸØÉUhù @  !Ü^ã?d @ŸØKÄ' @  !Ý_ã?d €ŸØODk1 @  !Þ`ãuРØ?d ÀŸØÍÕ|ï @  !ßaã?d  ØGK2 @  !à bã?d X ØÅÚ%Ú @  !á cã?d ˜ Ø¡­‰Û @  !â dã?d€ Ø Øâ{i @  " eã?d ¡ØdÕ»Ž @  " fã?d X¡ØæD¬P @  " gã?d ˜¡Øßj› @  " hã?d Ø¡Ø]ûE @  " iã?d ¢Ø²QB# @  " jã?d X¢Ø0ÀUý @  " kã?d ˜¢Øš¦† @  " lã?d آؔ±X @  " mã?d £Øº2Ð @  " nã?d X£Ø8£ÇÉ @  " oã?d ˜£ØdÝî @  " pã?d Ø£ØæL0 @  " qã?d ¤Øì˜ @  " rã?d X¤Ø}F @  " sã?d ˜¤ØÂÝ @  " tã?d ؤØŠˆÕ @  " uã?d ¥Ø(.´L @  " vã?d X¥Øª¿£’ @  " wã?d ˜¥Ø“‘Y @  " xã?d إ؇ @  " yã?d ¦ØþªMá @  " zã?d X¦Ø|;Z? @  " {ã?d ˜¦ØÖþ©D @  " |ã?d ئØTo¾š @  " }ã?d §ØöÉßÕ @  " ~ã?d X§ØtXÈ  @  " ã?d ˜§ØXfs @  " €ã?d اØÚ–q­ @  " ã?d ¨Øœ‡ @  " ‚ã?d X¨ØÉ @  " ƒã?d ˜¨Øtíâ @  " „ã?d بØŠåú< @  "! …ã?d ©Ø(C›s @  "" †ã?d X©ØªÒŒ­ @  "# ‡ã?d ˜©Ø“ü8f @  "$ ˆã?d Ø©Øm/¸ @  "% ‰ã?d ªØþÇbÞ @  "& Šã?d XªØ|Vu @  "' ‹ã?d ˜ªØÖ“†{ @  "( Œã?d تØT‘¥ @  ") ã?d «Øö¤ðê @  "* Žã?d X«Øt5ç4 @  "+ ã?d ˜«Ø(K1 @  ", ã?d ثتÚ&Í @  "- ‘ã?d ¬ØÁz8e @  ". ’ã?d X¬ØCë/» @  "/ “ã?d ˜¬ØDâ  @  "0 ”ã?d جØÆõþ @  "1 •ã?d ­Ød¸”± @  "2 –ã?d X­Øæ)ƒo @  "3 —ã?d ˜­Øß7¤ @  "4 ˜ã?d Ø­Ø]– z @  "5 ™ã?d ®Ø² ¢ã?d X°Ø57V @  "? £ã?d ˜°ØRº¡ @  "@ ¤ã?d ذØí @  "A ¥ã?d ±Ø­eÌ0 @  "B ¦ã?d X±Ø/ôÛî @  "C §ã?d ˜±ØÚo% @  "D ¨ã?d رØ”Kxû @  "E ©ã?d ²Ø{á5 @  "F ªã?d X²Øùp"C @  "G «ã?d ˜²ØSµÑ8 @  "H ¬ã?d زØÑ$Ææ @  "I ­ã?d ³Øs‚§© @  "J ®ã?d X³Øñ°w @  "K ¯ã?d ˜³Ø­mfP @  "L °ã?d سØ/üqŽ @  "M ±ã?d ´ØD\o& @  "N ²ã?d X´ØÆÍxø @  "O ³ã?d ˜´ØÁ©µc @  "P ´ã?d Ø´ØC8¢½ @  "Q µã?d µØážÃò @  "R ¶ã?d XµØcÔ, @  "S ·ã?d ˜µØZ!`ç @  "T ¸ã?d صØذw9 @  "U ¹ã?d ¶Ø7:_ @  "V ºã?d X¶Øµ‹- @  "W »ã?d ˜¶ØNÞú @  "X ¼ã?d ضØßÉ$ @  "Y ½ã?d ·Ø?y¨k @  "Z ¾ã?d X·Ø½è¿µ @  "[ ¿ã?d ˜·ØŒqE_ @  "\ Àã?d Ø·ØàR @  "] Áã?d ¸ØHñ3; @  "^ Âã?d X¸ØÊ`$å @  "_ Ãã?d ˜¸ØÜÎÎ @  "` Äã?d ظØ^“Ù @  "a Åã?d ¹Øü5¸_ @  "b Æã?d X¹Ø~¤¯ @  "c Çã?d ˜¹ØGŠJ @  "d Èã?d عØÅ ” @  "e Éã?d ºØ*±Aò @  "f Êã?d XºØ¨ V, @  "g Ëã?d ˜ºØå¥W @  "h Ìã?d غØ€t²‰ @  "i Íã?d »Ø"ÒÓÆ @  "j Îã?d X»Ø CÄ @  "k Ïã?d ˜»Øü=? @  "l Ðã?d Ø»Ø~¬á @  "m Ñã?d ¼Ø I @  "n Òã?d X¼Ø— — @  "o Óã?d ˜¼ØùÁ  @  "p Ôã?d ؼØhÖÒ @  "q Õã?d ½Ø°Î· @  "r Öã?d X½Ø2_ C @  "s ×ã?d ˜½Ø qˆ @  "t Øã?d ؽ؉àV @  "u Ùã?d ¾ØfJN0 @  "v Úã?d X¾ØäÛYî @  "w Ûã?d ˜¾ØNª• @  "x Üã?d ؾØ̽K @  "y Ýã?d ¿Øn)Ü @  "z Þã?d X¿Øì¸ËÚ @  "{ ßã?d ˜¿Ø-q$! @uÐÀØ  "| àã?d ؿؖ'ï* @  "}áã?d 0ÀØ€9Sß @  "~âã?d pÀبD @  "ãã?d °ÀØY›˜‰ @  "€äã?d ðÀØÛ W @  "åã?d 0ÁØy¬î @  "‚æã?d pÁØû=ùÆ @  "ƒçã?d °ÁØÂM  @  "„èã?d ðÁØ@‚ZÓ @  "…éã?d 0ÂØ¯(µ @  "†êã?d pÂØ-¹k @  "‡ëã?d °Â؇|ó @  "ˆìã?d ðÂØíäÎ @  "‰íã?d 0ÃØ§K… @  "Šîã?d pÃØ%Ú’_ @  "‹ïã?d °ÃØy¤Dx @  "Œðã?d ðÃØû5S¦ @  "ñã?d 0ÄØ•M @  "Žòã?d pÄØZÐ @  "óã?d °ÄØ`—K @  "ôã?d ðÄØ—ñ€• @  "‘õã?d 0ÅØ5WáÚ @  "’öã?d pÅØ·Æö @  "“÷ã?d °ÅØŽèBÏ @  "”øã?d ðÅØ yU @  "•ùã?d 0ÆØãÓw @  "–úã?d pÆØaB© @  "—ûã?d °ÆØˇüÒ @  "˜üã?d ðÆØIë  @  "™ýã?d 0ÇØë°ŠC @  "šþã?d pÇØi! @  "›ÿã?d °ÇØY @  "œä?d ðÇØ„N¡ @  "ä?d 0ÈØÂ/ @  "žä?d pÈØ@8Å @  "Ÿä?d °ÈØVcÒî @  " ä?d ðÈØÔòÅ0 @  "¡ä?d 0ÉØvT¤ @  "¢ä?d pÉØôų¡ @  "£ä?d °ÉØÍëj @  "¤ä?d ðÉØOz´ @  "¥ ä?d 0ÊØ Ð]Ò @  "¦ ä?d pÊØ"AJ  @  "§ ä?d °Ê؈„¹w @  "¨ ä?d ðÊØ ®© @  "© ä?d 0ËØ¨³Ïæ @  "ªä?d pËØ*"Ø8 @  "«ä?d °ËØv\ @  "¬ä?d ðËØôÍÁ @  "­ä?d 0ÌØŸmi @  "®ä?d pÌØü· @  "¯ä?d °ÌؘÝ, @  "°ä?d ðÌØ˜ Êò @  "±ä?d 0ÍØ:¯«½ @  "²ä?d pÍØ¸>¼c @  "³ä?d °Íب @  "´ä?d ðÍØv @  "µä?d 0ÎØì+R @  "¶ä?d pÎØnºEÎ @  "·ä?d °ÎØÄ¶µ @  "¸ä?d ðÎØFî¡k @  "¹ä?d 0ÏØäHÀ$ @  "ºä?d pÏØfÙ×ú @  "»ä?d °Ïا8 @  "¼ ä?d ðÏØ%/ß @  "½!ä?d 0ÐØé±~Ê @  "¾"ä?d pÐØk i @  "¿#ä?d °ÐØÓE…­ @  "À$ä?d ðÐØQÔ’s @  "Á%ä?d 0ÑØóró< @  "Â&ä?d pÑØqãäâ @  "Ã'ä?d °ÑØHÍP) @  "Ä(ä?d ðÑØÊ\G÷ @  "Å)ä?d 0ÒØ%ö ‘ @  "Æ*ä?d pÒØ§gO @  "Ç+ä?d °ÒØ ¢î4 @  "È,ä?d ðÒØ3ùê @  "É-ä?d 0ÓØ-•˜¥ @  "Ê.ä?d pÓØ¯{ @  "Ë/ä?d °ÓØózY\ @  "Ì0ä?d ðÓØqëN‚ @  "Í1ä?d 0ÔØKP* @  "Î2ä?d pÔØ˜ÚGô @  "Ï3ä?d °ÔØŸ¾Šo @  "Ð4ä?d ðÔØ/± @  "Ñ5ä?d 0ÕØ¿‰üþ @  "Ò6ä?d pÕØ=ë  @  "Ó7ä?d °ÕØ6_ë @  "Ô8ä?d ðÕØ†§H5 @  "Õ9ä?d 0ÖØi S @  "Ö:ä?d pÖØëœ @  "×;ä?d °ÖØAYáö @  "Ø<ä?d ðÖØÃÈö( @  "Ù=ä?d 0רan—g @  "Ú>ä?d pרãÿ€¹ @  "Û?ä?d °×ØÒfzS @  "Ü@ä?d ðרP÷m @  "ÝAä?d 0ØØæ 7 @  "ÞBä?d pØØ”wé @  "ßCä?d °ØØ‚ñ @  "àDä?d ðØØ„æ @  "áEä?d 0ÙØ¢"‡S @  "âFä?d€ pÙØTpŒ+ @  #Gä?d °ÙØŒpÉ @  #Hä?d ðÙØŽg @  #Iä?d 0ÚØ$mÑœ @  #Jä?d pÚØ¦üÆB @  #Kä?d °ÚØ‹jC @  #Lä?d ðÚØ@} @  #Mä?d 0ÛØ,C¨ @  #Nä?d pÛØ®ŸTv @  # Oä?d °ÛØ7¨y¼ @  # Pä?d ðÛØµ9nb @  # Qä?d 0ÜØЋ' @  # Rä?d pÜØ™Aœù @  # Sä?d °ÜØý60ø @  #Tä?d ðÜØ§'& @  #Uä?d 0ÝØ¾'ó @  #Vä?d pÝØ<ƒ0- @  #Wä?d °ÝØÀä  @  #Xä?d ðÝØBuhÕ @  #Yä?d 0ÞØh–Þ^ @  #Zä?d pÞØêÉ€ @  #[ä?d °ÞØŽpe @  #\ä?d ðÞØ ár_ @  #]ä?d 0ߨ`õLj @  #^ä?d pߨâd[´ @  #_ä?d uÐàØ/°ßØæäO¢ @  #`ä?d ðߨ]²„© @  # aä?d HàØó±Ì @  # bä?d ˆàØÓDÎë @  # cä?d ÈàØWwÊ @  # dä?d áØÅû" @  # eä?d HáØGuGq @  # fä?d ˆáØg€E @  #! gä?d ÈáØ9ƒ‰ @  #" hä?d âØ¤Ç¿H @  ## iä?d HâØ‘ñ¾Ü @  #$ jä?d ˆâر¼" @  #% kä?d ÈâØw @  #& lä?d ãØ§_‰ë @  #' mä?d HãØ™’,è @  #( nä?d ˆãعg. @  #) oä?d ÈãØ‚4ü @  #* pä?d 䨛zåó @  #+ qä?d H䨮Läg @  #, rä?d ˆäØ޹æ™ @  #- sä?d ÈäØHª_¸ @  #. tä?d åØ˜âÓP @  #/ uä?d HåØ ŽH³ @  #0 vä?d ˆåØ+{JM @  #1 wä?d ÈåØuxK @  #2 xä?d æØè<°Š @  #3 yä?d HæØÝ ± @  #4 zä?d ˆæØýÿ³à @  #5 {ä?d ÈæØ;ì Á @  #6 |ä?d çØ뤆) @  #7 }ä?d HçØÕi#* @  #8 ~ä?d ˆçØõœ!Ô @  #9 ä?d ÈçØ¾îaa @  #: €ä?d èØŠí| @  #; ä?d HèØ¿'ìè @  #< ‚ä?d ˆèØŸÒî @  #= ƒä?d ÈèØYÁW7 @  #> „ä?d 騉‰Ûß @  #? …ä?d H騥äa @  #@ †ä?d ˆéØ…cà @  #A ‡ä?d ÈéØÛ9æ @  #B ˆä?d êØFV™' @  #C ‰ä?d HêØs`˜³ @  #D Šä?d ˆêØS•šM @  #E ‹ä?d ÈêØ•†#l @  #F Œä?d ëØEί„ @  #G ä?d HëØ{ ‡ @  #H Žä?d ˆëØ[öy @  #I ä?d ÈëØ`¥0“ @  #J ä?d ìØyëÜ @  #K ‘ä?d HìØLÝ @  #L ’ä?d ˆìØl(Àö @  #M “ä?d ÈìØª;y× @  #N ”ä?d íØzsõ? @  #O •ä?d HíØénÜ @  #P –ä?d ˆíØÉêl" @  #Q —ä?d ÈíØ—é6$ @  #R ˜ä?d îØ ­–å @  #S ™ä?d HîØ?›—q @  #T šä?d ˆîØn• @  #U ›ä?d ÈîØÙ},® @  #V œä?d ïØ 5 F @  #W ä?d HïØ7øE @  #X žä?d ˆïØ » @  #Y Ÿä?d ÈïØ±é @  #Z  ä?d ðØ7º? @  #[ ¡ä?d HðØ:»« @  #\ ¢ä?d ˆðØô¹U @  #] £ä?d ÈðØÜçt @  #^ ¤ä?d ñØ ¯Œœ @  #_ ¥ä?d HñØŽÅ0Ï @  #` ¦ä?d ˆñØ®021 @  #a §ä?d ÈñØð3h7 @  #b ¨ä?d òØmwÈö @  #c ©ä?d HòØXAÉb @  #d ªä?d ˆòØx´Ëœ @  #e «ä?d Èòؾ§r½ @  #f ¬ä?d óØnïþU @  #g ­ä?d HóØP"[V @  #h ®ä?d ˆóØp×Y¨ @  #i ¯ä?d ÈóØK„aB @  #j °ä?d ôØRÊ’M @  #k ±ä?d HôØgü“Ù @  #l ²ä?d ˆôØG ‘' @  #m ³ä?d ÈôØ( @  #n ´ä?d õØQR¤î @  #o µä?d HõØÂ>?  @  #p ¶ä?d ˆõØâË=ó @  #q ·ä?d ÈõؼÈgõ @  #r ¸ä?d öØ!ŒÇ4 @  #s ¹ä?d HöغƠ @  #t ºä?d ˆöØ4OÄ^ @  #u »ä?d ÈöØò\} @  #v ¼ä?d ÷Ø"ñ— @  #w ½ä?d H÷ØÙT” @  #x ¾ä?d ˆ÷Ø<,Vj @  #y ¿ä?d È÷Øj˜BM @  #z Àä?d øØ^gÎP @  #{ Áä?d HøØkQÏÄ @  #| Âä?d ˆøØK¤Í: @  #} Ãä?d ÈøØ·t @  #~ Ää?d ùØ]ÿøó @  # Åä?d HùØ’Är @  #€ Æä?d ˆùز1pý @  # Çä?d ÈùØì2*û @  #‚ Èä?d úØqvŠ: @  #ƒ Éä?d HúØD@‹® @  #„ Êä?d ˆúØdµ‰P @  #… Ëä?d ÈúØ¢¦0q @  #† Ìä?d ûØrî¼™ @  #‡ Íä?d HûØL#š @  #ˆ Îä?d ˆûØlÖd @  #‰ Ïä?d ÈûØW…#Ž @  #Š Ðä?d üØNËÐ @  #‹ Ñä?d HüØ{ýÑ @  #Œ Òä?d ˆüØ[Óë @  # Óä?d ÈüØjÊ @  #Ž Ôä?d ýØMSæ" @  # Õä?d HýØÞ?}Á @  # Öä?d ˆýØþÊ? @  #‘ ×ä?d ÈýØ É%9 @  #’ Øä?d þØ=…ø @  #“ Ùä?d HþØ»„l @  #” Úä?d ˆþØ(N†’ @  #• Ûä?d ÈþØî]?³ @  #– Üä?d ÿØ>³[ @  #— Ýä?d HÿØØX @  #˜ Þä?d ˆÿØ -¦ @  #™ uÐÙßä?d ÈÿØ†É @  #š àä?d ÙÉ}=a @  #› áä?d `ÙüK<õ @  #œ âä?d  Ùܾ>  @  # ãä?d àÙ­‡* @  #ž ää?d ÙÊå  @  #Ÿ åä?d `ÙH·‘ @  #  æä?d  Ùhzµo @  #¡ çä?d àÙ6yïi @  #¢ èä?d Ù«=O¨ @  #£ éä?d `Ùž N< @  #¤ êä?d  Ù¾þL @  #¥ ëä?d àÙxíõã @  #¦ ìä?d Ù¨¥y  @  #§ íä?d `Ù–hÜ @  #¨ îä?d  Ù¶Þö @  #© ïä?d àÙÎæ @  #ª ðä?d Ù”€ @  #« ñä?d `Ù¡¶‡ @  #¬ òä?d  ÙCy @  #­ óä?d àÙGP¯X @  #® ôä?d Ù—#° @  #¯ õä?d `Ùt¸S @  #° öä?d  Ù$º­ @  #± ÷ä?d àÙz‚à« @  #² øä?d ÙçÆ@j @  #³ ùä?d `ÙÒðAþ @  #´ úä?d  ÙòC @  #µ ûä?d àÙ4ú! @  #¶ üä?d Ùä^vÉ @  #· ýä?d `ÙÚ“ÓÊ @  #¸ þä?d  ÙúfÑ4 @  #¹ ÿä?d àÙÎsÄ @  #º å?d ÙúŒH @  #» å?d `ÙϺI @  #¼ å?d  ÙïOKú @  #½ å?d àÙ)\òÛ @  #¾ å?d Ùù~3 @  #¿ å?d ` ÙÕyÄò @  #À å?d   ÙõŒÆ  @  #Á å?d à Ù«œ  @  # å?d Ù6Ë<Ë @  #à  å?d ` Ùý=_ @  #Ä  å?d   Ù#?¡ @  #Å  å?d à Ù冀 @  #Æ  å?d Ù5S h @  #Ç  å?d ` Ù ž¯k @  #È å?d   Ù+k­• @  #É å?d à Ù8• @  #Ê å?d Ù vfp @  #Ë å?d ` Ù<@gä @  #Ì å?d   Ùµe @  #Í å?d à ÙÚ¦Ü; @  #Î å?d Ù îPÓ @  #Ï å?d ` Ù™‚Ë0 @  #Ð å?d   Ù¹wÉÎ @  #Ñ å?d à Ùçt“È @  #Ò å?d Ùz03  @  #Ó å?d `ÙO2 @  #Ô å?d  Ùoó0c @  #Õ å?d àÙ©à‰B @  #Ö å?d Ùy¨ª @  #× å?d `ÙGe © @  #Ø å?d  Ùg¢W @  #Ù å?d àÙÁt£a @  #Ú  å?d ÙªÓ @  #Û !å?d `ÙJœG @  #Ü "å?d  Ùji¹ @  #Ý #å?d àÙ¬z¥˜ @  #Þ $å?d Ù|2)p @  #ß %å?d `ÙþX•# @  #à &å?d  ÙÞ­—Ý @  #á 'å?d àÙ€®ÍÛ @  #â (å?d€ Ù›¼Å£ @  $ )å?d `ÙOËŒ @  $ *å?d  Ùo>Žà @  $ +å?d àÙldÌ, @  $ ,å?d Ù¼,@Ä @  $ -å?d `ÙLSº½ @  $ .å?d  Ùl¦¸C @  $ /å?d àÙ™GßÓ @  $ 0å?d Ù€ ,Ü @  $ 1å?d `ÙpvÖ¥ @  $ 2å?d  ÙPƒÔ[ @  $ 3å?d àÙSÙ–— @  $ 4å?d Ùƒ‘ @  $ 5å?d `Ùsîà @  $ 6å?d  ÙSâø @  $ 7å?d àÙn Ùd @  $ 8å?d ÙóOy¥ @  $ 9å?d `Ù0ƒÜ @  $ :å?d  Ù#Å" @  $ ;å?d àÙ ŸÃî @  $ <å?d Ùð×O @  $ =å?d `Ù¨µ @  $ >å?d  Ù ]· @  $ ?å?d àÙ¸[üÜ @  $ @å?d ÙŒ¤pÁ @  $ Aå?d `Ù|ÛŠ¸ @  $ Bå?d  Ù\.ˆF @  $ Cå?d àÙ_tÊŠ @  $ Då?d Ùnú @  $# Kå?d àÙ=4¸C @  $$ Lå?d Ùí|4« @  $% Må?d `ÙÎÒ @  $& Nå?d  Ù=öÌ, @  $' Oå?d àÙÈ«¼ @  $( På?d ÙÑYX³ @  $) Qå?d `Ù!&¢Ê @  $* Rå?d  ÙÓ 4 @  $+ Så?d àÙ‰âø @  $, Tå?d ÙÒÁn @  $- Uå?d `Ù"¾”i @  $. Vå?d  ÙK–— @  $/ Wå?d àÙ?[­  @  $0 Xå?d Ù¢ Ê @  $1 Yå?d `ÙR`÷³ @  $2 Zå?d  Ùr•õM @  $3 [å?d àÙqÏ· @  $4 \å?d Ù¡‡;i @  $5 ]å?d `ÙQøÁ @  $6 ^å?d  Ùq ÃîuÐ Ù @  $7 _å?d àÙ[¢ @  $8 `å?d 8 ÙhPCÄ @  $9 aå?d x Ù˜/¹½ @  $: bå?d ¸ Ù¸Ú»C @  $; cå?d ø Ù»€ù @  $< då?d 8!ÙkÈug @  $= eå?d x!Ù›· @  $> få?d ¸!Ù»Bà @  $? gå?d ø!Ù9S—^ @  $@ hå?d 8"Ù¤7Ÿ @  $A iå?d x"ÙThÍæ @  $B jå?d ¸"ÙtÏ @  $C kå?d ø"ÙwÇÔ @  $D lå?d 8#Ù§< @  $E må?d x#ÙWðûE @  $F nå?d ¸#Ùwù» @  $G oå?d ø#Ù‚äž+ @  $H på?d 8$Ù›ªm$ @  $I qå?d x$ÙkÕ—] @  $J rå?d ¸$ÙK •£ @  $K så?d ø$ÙHz×o @  $L tå?d 8%Ù˜2[‡ @  $M uå?d x%ÙhM¡þ @  $N vå?d ¸%ÙH¸£ @  $O wå?d ø%Ùu¨˜œ @  $P xå?d 8&Ùèì8] @  $Q yå?d x&Ù“Â$ @  $R zå?d ¸&Ù8fÀÚ @  $S {å?d ø&Ù;<‚ @  $T |å?d 8'Ùëtþ @  $U }å?d x'Ù ô‡ @  $V ~å?d ¸'Ù;þöy @  $W å?d ø'Ù¾>é¶ @  $X €å?d 8(ÙŠÁe« @  $Y å?d x(Ùz¾ŸÒ @  $Z ‚å?d ¸(ÙZK, @  $[ ƒå?d ø(ÙYßà @  $\ „å?d 8)Ù‰YS @  $] …å?d x)Ùy&©q @  $^ †å?d ¸)ÙYÓ« @  $_ ‡å?d ø)ÙuÅ·£ @  $` ˆå?d 8*Ùèb @  $a ‰å?d x*Ùþí @  $b Šå?d ¸*Ù8 ïå @  $c ‹å?d ø*Ù;Q­) @  $d Œå?d 8+Ùë!Á @  $e å?d x+ÙfÛ¸ @  $f Žå?d ¸+Ù;“ÙF @  $g å?d ø+ÙÎr¾Ö @  $h å?d 8,Ù׸a @  $p ˜å?d 8.Ù¤z  @  $q ™å?d x.ÙTâÙ @  $r šå?d ¸.Ùtðà' @  $s ›å?d ø.Ùwª¢ë @  $t œå?d 8/Ù§â. @  $u å?d x/ÙWÔz @  $v žå?d ¸/ÙwhÖ„ @  $w Ÿå?d ø/Ù>ˆÈ @  $x  å?d 80Ù¡à4z @  $y ¡å?d x0ÙQŸÎ @  $z ¢å?d ¸0ÙqjÌý @  ${ £å?d ø0Ùr0Ž1 @  $| ¤å?d 81Ù¢xÙ @  $} ¥å?d x1ÙRø  @  $~ ¦å?d ¸1Ùròú^ @  $ §å?d ø1ÙµÐÑ @  $€ ¨å?d 82ÙŽñp @  $ ©å?d x2Ù~ŽŠi @  $‚ ªå?d ¸2Ù^{ˆ— @  $ƒ «å?d ø2Ù]!Ê[ @  $„ ¬å?d 83ÙiF³ @  $… ­å?d x3Ù}¼Ê @  $† ®å?d ¸3Ù]ã¾4 @  $‡ ¯å?d ø3٨٤ @  $ˆ °å?d 84Ù±L*« @  $‰ ±å?d x4ÙA3ÐÒ @  $Š ²å?d ¸4ÙaÆÒ, @  $‹ ³å?d ø4Ùbœà @  $Œ ´å?d 85Ù²Ô @  $ µå?d x5ÙB«æq @  $Ž ¶å?d ¸5Ùb^ä @  $ ·å?d ø5Ù_Nß @  $ ¸å?d 86Ù Ò @  $‘ ¹å?d x6Ù2u…« @  $’ ºå?d ¸6Ù€‡U @  $“ »å?d ø6ÙÚÅ™ @  $” ¼å?d 87ÙÁ’Iq @  $• ½å?d x7Ù1í³ @  $– ¾å?d ¸7Ù±ö @  $— ¿å?d ø7Ù‰ú« @  $˜ Àå?d 88Ù½áv¶ @  $™ Áå?d x8ÙMžŒÏ @  $š Âå?d ¸8ÙmkŽ1 @  $› Ãå?d ø8Ùn1Ìý @  $œ Äå?d 89Ù¾y@ @  $ Åå?d x9ÙNºl @  $ž Æå?d ¸9Ùnó¸’ @  $Ÿ Çå?d ø9ÙB夾 @  $  Èå?d 8:Ùß¡ @  $¡ Éå?d x:Ù/Þþ @  $¢ Êå?d ¸:Ù+üø @  $£ Ëå?d ø:Ù q¾4 @  $¤ Ìå?d 8;ÙÜ92Ü @  $¥ Íå?d x;Ù,FÈ¥ @  $¦ Îå?d ¸;Ù ³Ê[ @  $§ Ïå?d ø;ÙùR­Ë @  $¨ Ðå?d 8<Ùà^Ä @  $© Ñå?d x<Ùc¤½ @  $ª Òå?d ¸<Ù0–¦C @  $« Óå?d ø<Ù3Ìä @  $¬ Ôå?d 8=Ùã„hg @  $­ Õå?d x=Ùû’ @  $® Öå?d ¸=Ù3à @  $¯ ×å?d ø=Ù«| @  $° Øå?d 8>Ù“Z ½ @  $± Ùå?d x>Ùc%ñÄ @  $² Úå?d ¸>ÙCÐó: @  $³ Ûå?d ø>Ù@бö @  $´ Üå?d 8?ÙÂ= @  $µ Ýå?d x?Ù`½Çg @  $¶ Þå?duÐ@Ù7 ¸?Ù@HÅ™ @  $· ßå?d ø?Ù(›Õ @  $¸ àå?d P@Ùë²!é @  $¹ áå?d @Ù¹©Î° @  $º âå?d Ð@Ù;8Ùn @  $» ãå?d AÙj»” @  $¼ äå?d PAÙè*J @  $½ åå?d AÙº1ø @  $¾ æå?d ÐAÙ8 ïÍ @  $¿ çå?d BÙ¥dBl @  $À èå?d PBÙ'õU² @  $Á éå?d BÙuîºë @  $ êå?d ÐBÙ÷­5 @  $à ëå?d CÙ¦ütÏ @  $Ä ìå?d PCÙ$mc @  $Å íå?d CÙvvŒH @  $Æ îå?d ÐCÙôç›– @  $Ç ïå?d DÙšÙ× @  $È ðå?d PDÙH  @  $É ñå?d DÙJSàP @  $Ê òå?d ÐDÙÈÂ÷Ž @  $Ë óå?d EÙ™A.t @  $Ì ôå?d PEÙÐ9ª @  $Í õå?d EÙIËÖó @  $Î öå?d ÐEÙËZÁ- @  $Ï ÷å?d FÙéŸM® @  $Ð øå?d PFÙkZp @  $Ñ ùå?d FÙ9µ) @  $Ò úå?d ÐFÙ»„¢÷ @  $Ó ûå?d GÙê{  @  $Ô üå?d PGÙh–lÓ @  $Õ ýå?d GÙ:ƒŠ @  $Ö þå?d ÐGÙ¸”T @  $× ÿå?d HÙF÷pq @  $Ø æ?d PHÙÄfg¯ @  $Ù æ?d HÙ–}ˆö @  $Ú æ?d ÐHÙìŸ( @  $Û æ?d IÙEoFÒ @  $Ü æ?d PIÙÇþQ  @  $Ý æ?d IÙ•å¾U @  $Þ æ?d ÐIÙt©‹ @  $ß æ?d JÙ$·¸ @  $à æ?d PJÙ¦&f @  $á  æ?d JÙô=ú? @  $â  æ?d€ ÐJÙoñG @  %  æ?d KÙ²­`” @  %  æ?d PKÙ0Æf @  % !æ?d PÙí—vE @  % "æ?d ÐPÙoa› @  % #æ?d QÙûÌCŒ @  % $æ?d PQÙy]TR @  % %æ?d QÙî@æ @  % &æ?d ÐQÙlžW8 @  % 'æ?d RÙ-Hº! @  % (æ?d PRٯ٭ÿ @  % )æ?d RÙ׌ @  % *æ?d ÐRÙ FR @  %! +æ?d SÙ™Œ1E @  %" ,æ?d PSÙ&› @  %# -æ?d SÙŒO2/ @  %$ .æ?d ÐSÙÞ%ñ @  %% /æ?d TÙ®RùÊ @  %& 0æ?d PTÙ,Ãî @  %' 1æ?d TÙ°j^7 @  %( 2æ?d ÐTÙ2ûIé @  %) 3æ?d UÙ¦1kþ @  %* 4æ?d PUÙ$ |  @  %+ 5æ?d UÙ³òh” @  %, 6æ?d ÐUÙ1cJ @  %- 7æ?d VÙpµ’S @  %. 8æ?d PVÙò$… @  %/ 9æ?d VÙÃ, N @  %0 :æ?d ÐVÙA½ @  %1 ;æ?d WÙÕw>‡ @  %2 <æ?d PWÙWæ)Y @  %3 =æ?d WÙÀ´=í @  %4 >æ?d ÐWÙB%*3 @  %5 ?æ?d XÙ¢ÿ¥× @  %6 @æ?d PXÙ n²  @  %7 Aæ?d XÙ¼Ç* @  %8 Bæ?d ÐXÙ>Vô @  %9 Cæ?d YÙªœ7ã @  %: Dæ?d PYÙ( = @  %; Eæ?d YÙ¿_4‰ @  %< Fæ?d ÐYÙ=Î#W @  %= Gæ?d ZÙ|ÎN @  %> Hæ?d PZÙþ‰Ù @  %? Iæ?d ZÙp€vq @  %@ Jæ?d ÐZÙòa¯ @  %A Kæ?d [ÙfÛC¸ @  %B Læ?d P[ÙäJTf @  %C Mæ?d [Ùs@Ò @  %D Næ?d Ð[Ùñ‰W  @  %E Oæ?d \ÙQ‹7 @  %F Pæ?d P\ÙÓ”œé @  %G Qæ?d \ÙO=,Ê @  %H Ræ?d Ð\Ùͬ; @  %I Sæ?d ]ÙYf @  %J Tæ?d P]ÙÛ÷Ý @  %K Uæ?d ]ÙL¥i @  %L Væ?d Ð]ÙÎ4 · @  %M Wæ?d ^Ùâà® @  %N Xæ?d P^Ù s÷p @  %O Yæ?d ^Ù<{y³ @  %P Zæ?d Ð^Ù¾ênm @  %Q [æ?d _Ù* Lz @  %R \æ?d P_Ù¨±[¤ @  %S ]æ?d _Ù?ãO @  %uÐ`ÙT ^æ?d Ð_Ù„µ„ @  %U_æ?d (`Ù8'k @  %V`æ?d h`Ùœ©0µ @  %Waæ?d ¨`Ù€– @  %Xbæ?d è`Ù‚‘—H @  %Ycæ?d (aÙ[µ_ @  %Zdæ?d haٔʢ @  %[eæ?d ¨aÙ˜¶5 @  %\fæ?d èaÙ ¡ë @  %]gæ?d (bÙÀßLò @  %^hæ?d hbÙBN[, @  %_iæ?d ¨bÙb@ò_ @  %`jæ?d èbÙàÑå @  %akæ?d (cÙtÇ– @  %blæ?d hcÙöŠÐH @  %cmæ?d ¨cÙaØÄü @  %dnæ?d ècÙãIÓ" @  %eoæ?d (dÙCÅ @  %fpæ?d hdÙÁTÇ @  %gqæ?d ¨dÙ]ý¨ä @  %hræ?d èdÙßl¿: @  %isæ?d (eÙK¦- @  %jtæ?d heÙÉ7Šó @  %kuæ?d ¨eÙ^ežG @  %lvæ?d èeÙÜô‰™ @  %mwæ?d (fÙ"d€ @  %nxæ?d hfÙ³s^ @  %oyæ?d ¨fÙ.»ý @  %pzæ?d èfÙ¬*êC @  %q{æ?d (gÙ8àÈT @  %r|æ?d hgÙºqߊ @  %s}æ?d ¨gÙ-#Ë> @  %t~æ?d ègÙ¯²Üà @  %uæ?d (hÙR®– @  %v€æ?d hhÙÐ?H @  %wæ?d ¨hÙL– k @  %x‚æ?d èhÙηµ @  %yƒæ?d (iÙZÍ•¢ @  %z„æ?d hiÙØ\‚| @  %{…æ?d ¨iÙO–È @  %|†æ?d èiÙÍŸ @  %}‡æ?d (jÙŒIl @  %~ˆæ?d hjÙØ{Ñ @  %‰æ?d ¨jÙc‡ä @  %€Šæ?d èjÙáóß @  %‹æ?d (kÙuÜÑÈ @  %‚Œæ?d hkÙ÷MÆ @  %ƒæ?d ¨kÙ`Ò¢ @  %„Žæ?d èkÙâŽÅ| @  %…æ?d (lÙBG @  %†æ?d hlÙÀ“™ @  %‡‘æ?d ¨lÙ\:¾º @  %ˆ’æ?d èlÙÞ«©d @  %‰“æ?d (mÙJa‹s @  %Š”æ?d hmÙÈ𜭠@  %‹•æ?d ¨mÙ_¢ˆ @  %Œ–æ?d èmÙÝ3ŸÇ @  %—æ?d (nÙœårÞ @  %Ž˜æ?d hnÙte @  %™æ?d ¨nÙ/|ëà @  %šæ?d ènÙ­íü @  %‘›æ?d (oÙ9'Þ  @  %’œæ?d hoÙ»¶ÉÔ @  %“æ?d ¨oÙ,äÝ` @  %”žæ?d èoÙ®uʾ @  %•Ÿæ?d (pÙ4Þ`ä @  %– æ?d hpÙ¶Ow: @  %—¡æ?d ¨pÙ*æÇ @  %˜¢æ?d èpÙ¨wÐÇ @  %™£æ?d (qÙ<½òÐ @  %š¤æ?d hqÙ¾,å @  %›¥æ?d ¨qÙ)~ñº @  %œ¦æ?d èqÙ«ïæd @  %§æ?d (rÙê9 } @  %ž¨æ?d hrÙh¨£ @  %Ÿ©æ?d ¨rÙH¦µÐ @  % ªæ?d èrÙÊ7¢ @  %¡«æ?d (sÙ^ý€ @  %¢¬æ?d hsÙÜl—Ç @  %£­æ?d ¨sÙK>ƒs @  %¤®æ?d èsÙɯ”­ @  %¥¯æ?d (tÙi#H– @  %¦°æ?d htÙë²_H @  %§±æ?d ¨tÙwïk @  %¨²æ?d ètÙõŠøµ @  %©³æ?d (uÙa@Ú¢ @  %ª´æ?d huÙãÑÍ| @  %«µæ?d ¨uÙtƒÙÈ @  %¬¶æ?d èuÙöÎ @  %­·æ?d (vÙ·Ä# @  %®¸æ?d hvÙ5U4Ñ @  %¯¹æ?d ¨vÙ]º @  %°ºæ?d èvÙ†Ì­Ì @  %±»æ?d (wÙÛ @  %²¼æ?d hwÙ—˜ @  %³½æ?d ¨wÙÅŒ± @  %´¾æ?d èwÙ…T›o @  %µ¿æ?d (xÙeŽ‹ @  %¶Àæ?d hxÙçU @  %·Áæ?d ¨xÙ{¶³v @  %¸Âæ?d èxÙù'¤¨ @  %¹Ãæ?d (yÙm톿 @  %ºÄæ?d hyÙï|‘a @  %»Åæ?d ¨yÙx.…Õ @  %¼Ææ?d èyÙú¿’  @  %½Çæ?d (zÙ»i @  %¾Èæ?d hzÙ9øhÌ @  %¿Éæ?d ¨zÙ·ñÇ- @  %ÀÊæ?d èzÙ5`Ðó @  %ÁËæ?d ({Ù¡ªòä @  %ÂÌæ?d h{Ù#;å: @  %ÃÍæ?d ¨{Ù´iñŽ @  %ÄÎæ?d è{Ù6øæP @  %ÅÏæ?d (|Ù–t:k @  %ÆÐæ?d h|Ùå-µ @  %ÇÑæ?d ¨|ÙˆL– @  %ÈÒæ?d è|Ù ÝŠH @  %ÉÓæ?d (}Ùž¨_ @  %ÊÔæ?d h}Ù†¿ @  %ËÕæ?d ¨}Ù‹Ô«5 @  %ÌÖæ?d è}Ù E¼ë @  %Í׿?d (~ÙH“Qò @  %ÎØæ?d h~ÙÊF, @  %ÏÙæ?d ¨~Ùû Èï @  %ÐÚæ?d è~Ùy›ß1 @  %ÑÛæ?d (ÙíQý& @  %ÒÜæ?d hÙoÀêø @  %ÓÝæ?d ¨ÙuЀÙ'ø’þL @  %ÔÞæ?d èÙzé’ @  %Õßæ?d @€Ù0È @  %Öàæ?d €€Ù=ð @  %×áæ?d À€Ù.ðºó @  %Øâæ?d Ùþ¸6 @  %Ùãæ?d @Ù8«: @  %Úäæ?d €Ù^Ä @  %Ûåæ?d ÀÙ-hŒP @  %Üææ?d ‚Ù°,,‘ @  %Ýçæ?d @‚Ùî/v— @  %Þèæ?d €‚ÙÎÚti @  %ßéæ?d À‚ÙL°È: @  %àêæ?d ƒÙœøDÒ @  %áëæ?d @ƒÙZëýó @  %âìæ?d€ €ƒÙ»Y  @  &íæ?d ÀƒÙo.A° @  &îæ?d „Ùv`²¿ @  &ïæ?d @„Ùˆzq¸ @  &ðæ?d €„Ù¨sF @  &ñæ?d À„ÙXð‰? @  &òæ?d …Ùˆ¸× @  &óæ?d @…ـ㌠@  &ôæ?d €…Ù ìár @  & õæ?d À…ÙP“  @  & öæ?d †ÙÍ×»Ê @  & ÷æ?d @†ÙV! @  & øæ?d €†Ùvhß @  & ùæ?d À†Ù†â¦ @  &úæ?d ‡ÙV_nN @  &ûæ?d @‡Ùó_¶õ @  &üæ?d €‡ÙÓª´  @  &ýæ?d À‡Ù#ÕNr @  &þæ?d ˆÙ*Âo @  &ÿæ?d @ˆÙæv,; @  &ç?d €ˆÙƃ.Å @  &ç?d ÀˆÙ6üÔ¼ @  &ç?d ‰Ùæ´XT @  &ç?d @‰Ùî¾ @  &ç?d €‰ÙÎà¼ñ @  &ç?d À‰Ù>ŸFˆ @  &ç?d ŠÙ£ÛæI @  &ç?d @ŠÙ8‘G¢ @  &ç?d €ŠÙdE\ @  & ç?d ÀŠÙè¿% @  & ç?d ‹Ù8S3Í @  & ç?d @‹ÙŒUÌÆ @  &  ç?d €‹Ù¬ Î8 @  &! ç?d À‹Ù\ß4A @  &"ç?d ŒÙE‘ÇN @  &#ç?d @ŒÙ»‹I @  &$ç?d €ŒÙ›~· @  &%ç?d ÀŒÙküÎ @  &&ç?d Ù»Ip& @  &'ç?d @Ù³è–} @  &(ç?d €Ù“”ƒ @  &)ç?d ÀÙcbnú @  &*ç?d ŽÙþ&Î; @  &+ç?d @ŽÙeloÐ @  &,ç?d €ŽÙE™m. @  &-ç?d ÀŽÙµæ—W @  &.ç?d Ùe®¿ @  &/ç?d @ÙÀ®Ã @  &0ç?d €Ùà[Áú @  &1ç?d ÀÙ$;ƒ @  &2ç?d Ù®ú‡1 @  &3ç?d @ÙÍW}ê @  &4 ç?d €Ùí¢ @  &5!ç?d ÀÙÝ…m @  &6"ç?d ‘ÙÍ• … @  &7#ç?d @‘ÙÅ4ïÞ @  &8$ç?d €‘ÙåÁí  @  &9%ç?d À‘Ù¾Y @  &:&ç?d ’Ùˆú·˜ @  &;'ç?d @’Ù°s @  &<(ç?d €’Ù3E @  &=)ç?d À’ÙÃ:îô @  &>*ç?d “Ùrb @  &?+ç?d @“Ù s›… @  &@,ç?d €“Ù)†™{ @  &A-ç?d À“ÙÙùc @  &B.ç?d ”ÙÀ·  @  &C/ç?d @”Ù>­S  @  &D0ç?d €”ÙXQô @  &E1ç?d À”Ùî'« @  &F2ç?d •Ù>o'e @  &G3ç?d @•Ù6ÎÁ> @  &H4ç?d €•Ù;ÃÀ @  &I5ç?d À•ÙæD9¹ @  &J6ç?d –Ù{™x @  &K7ç?d @–ÙàJ8“ @  &L8ç?d €–ÙÀ¿:m @  &M9ç?d À–Ù0ÀÀ @  &N:ç?d —ÙàˆLü @  &O;ç?d @—ÙEˆ”G @  &P<ç?d €—Ùe}–¹ @  &Q=ç?d À—Ù•lÀ @  &R>ç?d ˜Ù¡ýàÝ @  &S?ç?d @˜Ù2 @  &T@ç?d €˜Ùõ é @  &UAç?d À˜ÙâŠ÷ @  &VBç?d ™Ù2Â{x @  &WCç?d @™Ù:c# @  &XDç?d €™Ù–ŸÝ @  &YEç?d À™Ùêée¤ @  &ZFç?d šÙw­Åe @  &[Gç?d @šÙìçdŽ @  &\Hç?d €šÙÌfp @  &]Iç?d ÀšÙì @  &uaç?d Ø Ù~Ä• @  &vbç?d ¡ÙÖ6H} @  &wcç?d X¡ÙÞ—®& @  &xdç?d ˜¡Ùþb¬Ø @  &yeç?d Ø¡ÙV¡ @  &zfç?d ¢Ù“Yö` @  &{gç?d X¢ÙW‹ @  &|hç?d ˜¢Ù(æUu @  &}iç?d Ø¢ÙØ™¯  @  &~jç?d £ÙÑ#ä @  &kç?d X£Ùñ†êL @  &€lç?d ˜£ÙÑsè² @  &mç?d Ø£Ù! Ë @  &‚nç?d ¤Ù8BáÄ @  &ƒoç?d X¤ÙÆX"à @  &„pç?d ˜¤Ùæ­ = @  &…qç?d ؤÙÒÚD @  &†rç?d ¥ÙÆšV¬ @  &‡sç?d X¥ÙÎ;°÷ @  &ˆtç?d ˜¥Ùîβ  @  &‰uç?d إٱHp @  &Švç?d ¦Ùƒõè± @  &‹wç?d X¦Ù¿IZ @  &Œxç?d ˜¦Ù8JK¤ @  &yç?d ئÙÈ5±Ý @  &Žzç?d §Ù}=5 @  &{ç?d X§Ù½}åŽ @  &|ç?d ˜§Ùˆçp @  &‘}ç?d اÙm÷  @  &’~ç?d ¨ÙY‘ @  &“ç?d X¨Ù×3*L @  &”€ç?d ˜¨Ù÷Æ(² @  &•ç?d بÙ¹ÒË @  &–‚ç?d ©Ù×ñ^# @  &—ƒç?d X©ÙßP¸x @  &˜„ç?d ˜©Ùÿ¥º† @  &™…ç?d Ø©ÙÚ@ÿ @  &š†ç?d ªÙ’žà> @  &›‡ç?d XªÙ ÔAÕ @  &œˆç?d ˜ªÙ)!C+ @  &‰ç?d تÙÙ^¹R @  &žŠç?d «Ù 5º @  &Ÿ‹ç?d X«Ù½ʱ @  & Œç?d ˜«ÙåÈO @  &¡ç?d Ø«Ùmš26 @  &¢Žç?d ¬ÙtÔÁ9 @  &£ç?d X¬ÙŠÎ> @  &¤ç?d ˜¬Ùª;À @  &¥‘ç?d جÙZDú¹ @  &¦’ç?d ­ÙŠ vQ @  &§“ç?d X­Ù‚­  @  &¨”ç?d ˜­Ù¢X’ô @  &©•ç?d Ø­ÙR'h @  &ª–ç?d ®ÙÏcÈL @  &«—ç?d X®ÙT)i§ @  &¬˜ç?d ˜®ÙtÜkY @  &­™ç?d خل£‘  @  &®šç?d ¯ÙTëÈ @  &¯›ç?d X¯ÙñëÅs @  &°œç?d ˜¯ÙÑÇ @  &±ç?d دÙ!a=ô @  &²žç?d °ÙŸ¿F @  &³Ÿç?d X°Ùü{ @  &´ ç?d ˜°ÙÜçyc @  &µ¡ç?d ذÙ,˜ƒ @  &¶¢ç?d ±ÙüÐò @  &·£ç?d X±Ùôqé© @  &¸¤ç?d ˜±ÙÔ„ëW @  &¹¥ç?d رÙ$û. @  &º¦ç?d ²Ù¹¿±ï @  &»§ç?d X²Ù"õ @  &¼¨ç?d ˜²Ùú @  &½©ç?d زÙòèƒ @  &¾ªç?d ³Ù"7dk @  &¿«ç?d X³Ù86ò @  &À¬ç?d ˜³Ùß  @  &Á­ç?d سÙè¼eu @  &®ç?d ´Ùñò–z @  &ïç?d X´ÙèU} @  &İç?d ˜´Ù/Wƒ @  &űç?d Ø´Ùßb­ú @  &Ʋç?d µÙ*! @  &dzç?d XµÙ‹ÇI @  &È´ç?d ˜µÙ'~Å· @  &ɵç?d صÙ×?Î @  &ʶç?d ¶ÙJEŸ @  &Ë·ç?d X¶ÙÑ>ä @  &̸ç?d ˜¶Ùñú< @  &͹ç?d ضÙ…Æc @  &κç?d ·ÙÑÍJ‹ @  &Ï»ç?d X·ÙtÍ’0 @  &мç?d ˜·ÙT8Î @  &ѽç?d ط٤Gj· @  &Ò¾ç?d ¸Ù¸æª @  &Ó¿ç?d X¸ÙE ` @  &ÔÀç?d ˜¸Ù#° ž @  &ÕÁç?d ظÙÓÏñç @  &ÖÂç?d ¹Ù‡} @  &×Ãç?d X¹Ù &›T @  &ØÄç?d ˜¹Ù+Ó™ª @  &ÙÅç?d عÙÛ¬cÓ @  &ÚÆç?d ºÙFèà @  &ÛÇç?d XºÙÝ¢bù @  &ÜÈç?d ˜ºÙýW` @  &ÝÉç?d غÙ (š~ @  &ÞÊç?d »ÙÝ`– @  &ßËç?d X»Ùifé @  &àÌç?d ˜»ÙI“ëc @  &áÍç?d ػٹì @  &âÎç?d€ ¼ÙÔaþ³ @  'Ïç?d X¼ÙË:u @  'Ðç?d ˜¼ÙëÏwc @  'Ñç?d ؼÙÞùv÷ @  'Òç?d ½Ù±ú @  'Óç?d X½ÙÈ¢C> @  'Ôç?d ˜½ÙèWAÀ @  'Õç?d ؽÙÖšäà @  'Öç?d ¾ÙKÞD @  ' ×ç?d X¾ÙÝ @  ' Øç?d ˜¾Ù5(ú @  ' Ùç?d ؾÙn @  ' Úç?d ¿ÙÐV‘† @  ' Ûç?d X¿ÙE(§ @  'Üç?d ˜¿Ù6°*Y @uÐÀÙ  'Ýç?d Ø¿ÙØ\ÂÆ @  '€Þç?d 0ÀÙ¼¬“” @  '€ßç?d pÀÙH’¢ @  '€àç?d °ÀÙ:½\ @  '€áç?d ðÀÙ‹‘È @  '€âç?d 0ÁÙßà  @  '€ãç?d pÁÙФ @  '€äç?d °ÁÙ9%¦ÿ @  '€åç?d ðÁÙèü @  '€æç?d 0ÂÙš¬£= @  '€çç?d pÂÙįù; @  '€èç?d °ÂÙäZûÅ @  '€éç?d ðÂÙÑlúQ @  '€êç?d 0ÃÙ$v¹ @  '€ëç?d pÃÙÇ7Ϙ @  '€ìç?d °ÃÙçÂÍf @  '€íç?d ðÃÙe¨q5 @  ' €îç?d 0ÄÙ|æ‚: @  '!€ïç?d pÄÙGµºÐ @  '"€ðç?d °ÄÙg@¸. @  '#€ñç?d ðÄÙRv¹º @  '$€òç?d 0ÅÙ‚>5R @  '%€óç?d pÅÙD-Œs @  '&€ôç?d °ÅÙdØŽ @  ''€õç?d ðÅÙZ+Ž @  '(€öç?d 0ÆÙÇQ‹O @  ')€÷ç?d pÆÙ™RÑI @  '*€øç?d °ÆÙ¹§Ó· @  '+€ùç?d ðÆÙŒ‘Ò# @  ',€úç?d 0ÇÙ\Ù^Ë @  '-€ûç?d pÇÙšÊçê @  '.€üç?d °ÇÙº?å @  '/€ýç?d ðÇÙ)S~÷ @  '0€þç?d 0ÈÙ¬òê @  '1€ÿç?d pÈÙÌŠÖ¼ @  '2€è?d °ÈÙìÔB @  '3€è?d ðÈÙÙIÕÖ @  '4€è?d 0ÉÙ Y> @  '5€è?d pÉÙÏà @  '6€è?d °ÉÙïçâá @  '7€è?d ðÉÙÑ*Gâ @  '8€è?d 0ÊÙLnç# @  '9€è?d pÊÙm½% @  ':€è?d °ÊÙ2˜¿Û @  ';€ è?d ðÊÙ®¾O @  '<€ è?d 0ËÙ׿2§ @  '=€ è?d pËÙõ‹† @  '>€ è?d °ËÙ1‰x @  '?€ è?d ðËÙm3¹ @  '@€è?d 0ÌÙ#À¶ @  'A€è?d pÌÙ?pø\ @  'B€è?d °ÌÙ…ú¢ @  'C€è?d ðÌÙ*³û6 @  'D€è?d 0ÍÙúûwÞ @  'E€è?d pÍÙ<èÎÿ @  'F€è?d °ÍÙÌ @  'G€è?d ðÍÙ"Ði @  'H€è?d 0ÎÙ¿”Éà @  'I€è?d pÎÙá—“Å @  'J€è?d °ÎÙÁb‘; @  'K€è?d ðÎÙôT¯ @  'L€è?d 0ÏÙ$G @  'M€è?d pÏÙâ¥f @  'N€è?d °ÏÙÂú§˜ @  'O€è?d ðÏÙQ–<{ @  'P€è?d 0ÐÙïH€É @  'Q€è?d pÐÙI¬ÿ @  'R€ è?d °ÐÙiYƒ @  'S€!è?d ðÐÙ\o‚• @  'T€"è?d 0ÑÙŒ'} @  'U€#è?d pÑÙJ4·\ @  'V€$è?d °ÑÙjÁµ¢ @  'W€%è?d ðÑÙT ¡ @  'X€&è?d 0ÒÙÉH°` @  'Y€'è?d pÒÙ—Kêf @  'Z€(è?d °ÒÙ·¾è˜ @  '[€)è?d ðÒÙ‚ˆé  @  '\€*è?d 0ÓÙRÀeä @  ']€+è?d pÓÙ”ÓÜÅ @  '^€,è?d °ÓÙ´&Þ; @  '_€-è?d ðÓÙ6Lbh @  '`€.è?d 0ÔÙ/‘g @  'a€/è?d pÔÙQ© @  'b€0è?d °ÔÙ4¤«s @  'c€1è?d ðÔÙ’ªç @  'd€2è?d 0ÕÙÑÚ& @  'e€3è?d pÕÙÉŸ. @  'f€4è?d °ÕÙ7<Ð @  'g€5è?d ðÕÙ ñ8Ó @  'h€6è?d 0ÖÙ”µ˜ @  'i€7è?d pÖÙʶ @  'j€8è?d °ÖÙêCÀê @  'k€9è?d ðÖÙßuÁ~ @  'l€:è?d 0×Ù=M– @  'm€;è?d p×ÙÉ.ô· @  'n€<è?d °×ÙéÛöI @  'o€=è?d ð×Ùz·mª @  'p€>è?d 0ØÙNHá· @  'q€?è?d pØÙüõ @  'r€@è?d °ØÙ8 ÷n @  's€Aè?d ðØÙ ?öú @  't€Bè?d 0ÙÙÝwz @  'u€Cè?d pÙÙdÃ3 @  'v€Dè?d °ÙÙ;‘ÁÍ @  'w€Eè?d ðÙÙ\dÎ @  'x€Fè?d 0ÚÙ˜Ä @  'y€Gè?d pÚÙÆž  @  'z€Hè?d °ÚÙæîœ÷ @  '{€Iè?d ðÚÙÓØc @  '|€Jè?d 0ÛÙ‹ @  '}€Kè?d pÛÙѨª @  '~€Lè?d °ÛÙåvªT @  '€Mè?d ðÛÙ*M ¤ @  '€€Nè?d 0ÜÙ3Ó« @  '€Oè?d pÜÙPëA @  '‚€Pè?d °ÜÙ(¥é¿ @  'ƒ€Qè?d ðÜÙ“è+ @  '„€Rè?d 0ÝÙÍÛdà @  '…€Sè?d pÝÙ ÈÝâ @  '†€Tè?d °ÝÙ+=ß @  '‡€Uè?d ðÝÙðz @  'ˆ€Vè?d 0ÞÙˆ´ÚÞ @  '‰€Wè?d pÞÙÖ·€Ø @  'Š€Xè?d °ÞÙöB‚& @  '‹€Yè?d ðÞÙÃtƒ² @  'Œ€Zè?d 0ßÙ<Z @  '€[è?d pßÙÕ/¶{ @  'Ž€\è?d uÐàÙ/°ßÙõÚ´… @  '€]è?d ðßÙf¶/f @  '€^è?d HàÙq @  '‘€_è?d ˆàÙ{’e† @  '’€`è?d ÈàÙùrX @  '“€aè?d áÙžìèú @  '”€bè?d HáÙ}ÿ$ @  '•€cè?d ˆáÙx S% @  '–€dè?d ÈáÙú›Dû @  '—€eè?d âÙÛƒVç @  '˜€fè?d HâÙYA9 @  '™€gè?d ˆâÙ¥u @  'š€hè?d ÈâÙ'äÁ @  '›€iè?d ãÙ@ ƒc @  'œ€jè?d HãÙš”½ @  '€kè?d ˆãÙ¦í8¼ @  'ž€lè?d ÈãÙ$|/b @  'Ÿ€mè?d äÙ=Éwà @  ' €nè?d HäÙ¿X`> @  '¡€oè?d ˆäÙ&oMô @  '¢€pè?d ÈäÙ¤þZ* @  '£€qè?d åÙÃÀˆ @  '¤€rè?d HåÙA€×V @  '¥€sè?d ˆåÙ%÷{W @  '¦€tè?d ÈåÙ§fl‰ @  '§€uè?d æÙ†~~• @  '¨€vè?d HæÙïiK @  '©€wè?d ˆæÙøˆ&m @  'ª€xè?d ÈæÙz1³ @  '«€yè?d çÙö« @  '¬€zè?d HçÙŸg¼Ï @  '­€{è?d ˆçÙûÎ @  '®€|è?d ÈçÙy @  '¯€}è?d èÙ\ƒ0 @  '°€~è?d HèÙÞî @  '±€è?d ˆèÙ7E{ @  '²€€è?d ÈèÙµ•R¥ @  '³€è?d éÙÒzÈ @  '´€‚è?d HéÙPëßÙ @  'µ€ƒè?d ˆéÙ4œsØ @  '¶€„è?d ÈéÙ¶ d @  '·€…è?d êÙ—v @  '¸€†è?d HêÙ„aÄ @  '¹€‡è?d ˆêÙéã.â @  'º€ˆè?d ÈêÙkr9< @  '»€‰è?d ëÙ £ž @  '¼€Šè?d HëÙŽ ´@ @  '½€‹è?d ˆëÙê{A @  '¾€Œè?d ÈëÙhêŸ @  '¿€è?d ìÙßXQ @  'À€Žè?d HìÙ]ÉFQ @  'Á€è?d ˆìÙÄþk› @  '€è?d ÈìÙFo|E @  'À‘è?d íÙ!€æç @  'Ä€’è?d HíÙ£ñ9 @  'Å€“è?d ˆíÙÇf]8 @  'Æ€”è?d ÈíÙE÷Jæ @  'Ç€•è?d îÙdïXú @  'È€–è?d HîÙæ~O$ @  'É€—è?d ˆîÙ @  'Ê€˜è?d ÈîÙ˜ˆÜ @  'Ë€™è?d ïÙÿg~ @  'Ì€šè?d HïÙ}öš  @  'Í€›è?d ˆïÙ6¡ @  '΀œè?d ÈïÙ›! @  'Ï€è?d ðÙ43ð @  'Ѐžè?d HðÙ¶¢. @  'Ñ€Ÿè?d ˆðÙ²"8 @  'Ò€ è?d ÈðÙ0³æ @  'Ó€¡è?d ñÙW\ŸD @  'Ô€¢è?d HñÙÕ͈š @  'Õ€£è?d ˆñÙ±º$› @  'Ö€¤è?d ÈñÙ3+3E @  '×€¥è?d òÙ3!Y @  'Ø€¦è?d HòÙ¢6‡ @  'Ù€§è?d ˆòÙlÅy¡ @  'Ú€¨è?d ÈòÙîTn @  'Û€©è?d óÙ‰»ôÝ @  'Ü€ªè?d HóÙ *ã @  'Ý€«è?d ˆóÙo]O @  'Þ€¬è?d ÈóÙíÌXÜ @  '߀­è?d ôÙôy^ @  'à€®è?d HôÙvè€ @  'ုè?d ˆôÙïß:J @  '‰è?d€ ÈôÙEÔ9Æ @  (€±è?d õÙÃzëM @  (€²è?d HõÙAëü“ @  (€³è?d ˆõÙàÕ« @  (€´è?d ÈõÙbD¼¡ @  (€µè?d öÙîñÇ @  (€¶è?d HöÙæ @  (€·è?d ˆöÙ=ªöE @  (€¸è?d ÈöÙ¿;á› @  ( €¹è?d ÷Ù€Ô @  ( €ºè?d H÷ÙŸ —  @  ( €»è?d ˆ÷Ù>2Àæ @  ( €¼è?d È÷Ù¼£×8 @  ( €½è?d øÙú²¶‚ @  (€¾è?d HøÙx#¡\ @  (€¿è?d ˆøÙïàÁÁ @  (€Àè?d ÈøÙmqÖ @  (€Áè?d ùÙÏ×·P @  (€Âè?d HùÙMF Ž @  (€Ãè?d ˆùÙìx÷b @  (€Äè?d ÈùÙné༠@  (€Åè?d úÙC­Ú @  (€Æè?d HúÙÒº @  (€Çè?d ˆúÙ1ªX @  (€Èè?d ÈúÙ³–½† @  (€Éè?d ûÙ0ÜÉ @  (€Êè?d HûÙ“¡Ë @  (€Ëè?d ˆûÙ2Ÿœû @  (€Ìè?d ÈûÙ°‹% @  (€Íè?d üÙÛ®• @  (€Îè?d HüÙY?‚S @  (€Ïè?d ˆüÙ²é³ @  ( €Ðè?d ÈüÙ0Œþm @  (!€Ñè?d ýÙ’*Ÿ" @  ("€Òè?d HýÙ»ˆü @  (#€Óè?d ˆýÙ±…ß @  ($€Ôè?d ÈýÙ3ÈÎ @  (%€Õè?d þÙܾ…¨ @  (&€Öè?d HþÙ^/’v @  ('€×è?d ˆþÙlú‚* @  ((€Øè?d ÈþÙîk•ô @  ()€Ùè?d ÿÙLÍô» @  (*€Úè?d HÿÙÎ\ãe @  (+€Ûè?d ˆÿÙob´‰ @  (,€uÐÚÜè?d ÈÿÙsÐ+ @  (-Ýè?d Úælu› @  (.Þè?d `ÚdýbE @  (/ßè?d  ÚnÉ @  (0àè?d àÚÿ @  (1áè?d Ú#YaX @  (2âè?d `Ú¡Èv† @  (3ãè?d  Úö!j @  (4äè?d àÚ‚g6´ @  (5åè?d ÚmÍ{Ò @  (6æè?d `Úï\l  @  (7çè?d  Ú݉|P @  (8èè?d àÚ_kŽ @  (9éè?d Úý¾ Á @  (:êè?d `Ú/ @  (;ëè?d  ÚÞJó @  (<ìè?d àÚ\€]- @  (=íè?d Ú7 C… @  (>îè?d `Úµ±T[ @  (?ïè?d  Úð”9) @  (@ðè?d àÚr.÷ @  (Añè?d ÚУO¸ @  (Bòè?d `Ú/²+ @  (C€óè?d  ÚŽŒ|ö @  (D€ôè?d àÚ k( @  (E€õè?d Úã·&N @  (F€öè?d `Úa&1 @  (G€÷è?d  ÚSó!Ì @  (H€øè?d àÚÑb6 @  (I€ùè?d ÚsÄW] @  (J€úè?d `ÚñU@ƒ @  (K€ûè?d  ÚPko @  (L€üè?d àÚÒú± @  (M€ýè?d Ú”ëa  @  (N€þè?d `ÚzvÕ @  (O€ÿè?d  ÚãÖ @  (P€é?d àÚa‰ @  (Q€é?d ÚÃ/aG @  (R€é?d ` ÚA¾v™ @  (S€é?d   Úà€!u @  (T€é?d à Úb6« @  (U€é?d Ú»{Í @  (V€é?d ` Ú*l @  (W€é?d   Ú=ÿ|O @  (X€é?d à Ú¿nk‘ @  (Y€ é?d ÚÈ Þ @  (Z€ é?d ` ÚŸY @  ([€ é?d   Ú>gJì @  (\€ é?d à Ú¼ö]2 @  (]€ é?d Ú×VCš @  (^€é?d ` ÚUÇTD @  (_€é?d   Ú¾å?¤ @  (`€é?d à Úé?d `ÚCûdV @  (€?é?d  ÚÔ8Ë @  (€@é?d àÚV© @  (‘€Aé?d ÚôrZ @  (’€Bé?d `Úvže„ @  (“€Cé?d  Ú× 2h @  (”€Dé?d àÚU1%¶ @  (•€Eé?d Úº›hÐ @  (–€Fé?d `Ú8  @  (—€Gé?d  Ú ßoR @  (˜€Hé?d àÚˆNxŒ @  (™€Ié?d Ú*èà @  (š€Jé?d `Ú¨y @  (›€Ké?d  Ú GYñ @  (œ€Lé?d àÚ‹ÖN/ @  (€Mé?d ÚàvP‡ @  (ž€Né?d `ÚbçGY @  (Ÿ€Oé?d  Ú‰Å,¹ @  ( €Pé?d àÚ T;g @  (¡€Qé?d Ú©òZ( @  (¢€Ré?d `Ú+cMö @  (£€Sé?d  ÚŠ] @  (¤€Té?d àÚÌ Ä @  (¥€Ué?d Úçf@¢ @  (¦€Vé?d `Úe÷W| @  (§€Wé?d  ÚW"G  @  (¨€Xé?d àÚÕ³Pþ @  (©€Yé?d Úw1± @  (ª€Zé?d `Úõ„&o @  («€[é?d  ÚTºqƒuÐ Ú @  (¬€\é?d àÚ««! @  (­]é?d 8 Ú¨N&à @  (®^é?d x Ú*ß1> @  (¯_é?d ¸ ÚMLD² @  (°`é?d ø ÚÏÝSl @  (±aé?d 8!Úm{2# @  (²bé?d x!Úïê%ý @  (³cé?d ¸!ÚNÔr @  (´dé?d ø!ÚÌEeÏ @  (µeé?d 8"Ú#ï(© @  (¶fé?d x"Ú¡~?w @  (·gé?d ¸"Ú“«/+ @  (¸hé?d ø"Ú:8õ @  (¹ié?d 8#Ú³œYº @  (ºjé?d x#Ú1 Nd @  (»ké?d ¸#Ú3ˆ @  (¼lé?d ø#Ú¢V @  (½mé?d 8$Úyþ @  (¾né?d x$Úû“  @  (¿oé?d ¸$Ú¾¶jR @  (Àpé?d ø$Ú<'}Œ @  (Áqé?d 8%ڞà @  (Âré?d x%Ú  @  (Ãsé?d ¸%Ú½.\ñ @  (Äté?d ø%Ú?¿K/ @  (Åué?d 8&ÚÐI @  (Ævé?d x&ÚR„— @  (Çwé?d ¸&Ú`QË @  (Èxé?d ø&ÚâÀ @  (Éyé?d 8'Ú@fwZ @  (Êzé?d x'ÚÂ÷`„ @  (Ë{é?d ¸'ÚcÉ7h @  (Ì|é?d ø'ÚáX ¶ @  (Í}é?d 8(Ú§IA  @  (Î~é?d x(Ú%ØVÒ @  (Ïé?d ¸(Ú¯ÝbÝ @  (Ѐé?d ø(Ú-Lu @  (Ñé?d 8)ÚêL @  (Ò‚é?d x)Ú {’ @  (Óƒé?d ¸)Ú¬ET~ @  (Ô„é?d ø)Ú.ÔC  @  (Õ…é?d 8*ÚÁ~Æ @  (Ö†é?d x*ÚCï @  (ׇé?d ¸*Úq: D @  (؈é?d ø*Úó«š @  (Ù‰é?d 8+ÚQ Õ @  (ÚŠé?d x+ÚÓœh  @  (Û‹é?d ¸+Úr¢?ç @  (ÜŒé?d ø+Úð3(9 @  (Ýé?d 8,Ú›“6‘ @  (ÞŽé?d x,Ú!O @  (ßé?d ¸,Úò J¯ @  (àé?d ø,Úp±]q @  (á‘é?d 8-ÚÒ<> @  (â’é?d€ x-Ú$E7F @  )“é?d ¸-Úd:(ƒ @  )”é?d ø-Úæ«?] @  )•é?d 8.ÚÌH‰Ö @  )–é?d x.ÚNÙž @  )—é?d ¸.Ú²¾Ñ. @  )˜é?d ø.Ú0/Æð @  )™é?d 8/Ú\;øÅ @  )šé?d x/ÚÞªï @  ) ›é?d ¸/ÚºÝC @  ) œé?d ø/Ú8LTÄ @  ) é?d 80Ú15þ< @  ) žé?d x0Ú³¤éâ @  ) Ÿé?d ¸0Ú·$ýô @  ) é?d ø0Ú5µê* @  )¡é?d 81Úôêÿ @  )¢é?d x1Úv‘ý! @  )£é?d ¸1ÚæQ  @  )¤é?d ø1ÚwFþ @  )¥é?d 82Úº”ðu @  )¦é?d x2Ú8ç« @  )§é?d ¸2ÚÄb¨ @  )¨é?d ø2ÚFó¿S @  )©é?d 83Ú*çf @  )ªé?d x3Ú¨v–¸ @  )«é?d ¸3ÚÌ:¹ @  )¬é?d ø3ÚN-g @  )­é?d 84ÚàyÈ" @  )®é?d x4Úbèßü @  )¯é?d ¸4Úûßò6 @  )°é?d ø4ÚyNåè @  )±é?d 85Ú©ý @  ) ²é?d x5Ú+lÕS @  )!³é?d ¸5ÚOyR @  )"´é?d ø5ÚÍŠnŒ @  )#µé?d 86ÚçiØ @  )$¶é?d x6ÚeøÏÙ @  )%·é?d ¸6Ú™Ÿ€ÿ @  )&¸é?d ø6Ú—! @  )'¹é?d 87Úw© @  )(ºé?d x7Úõ‹¾Ê @  ))»é?d ¸7Ú‘üË @  )*¼é?d ø7Úm @  )+½é?d 88Ú5ŸB @  ),¾é?d x8Ú¤ˆœ @  )-¿é?d ¸8Úæt‰› @  ).Àé?d ø8ÚdåžE @  )/Áé?d 89Ú¥Pž @  )0Âé?d x9Ú'Á‰N @  )1Ãé?d ¸9ÚC¶%O @  )2Äé?d ø9ÚÁ'2‘ @  )3Åé?d 8:ÚëÄ„ @  )4Æé?d x:ÚiU“Ä @  )5Çé?d ¸:Ú•2Üâ @  )6Èé?d ø:Ú£Ë< @  )7Éé?d 8;Ú{·õ  @  )8Êé?d x;Úù&â× @  )9Ëé?d ¸;ÚQNÖ @  ):Ìé?d ø;ÚÀY @  );Íé?d 8<Ú±)¼M @  )<Îé?d x<Ú3¸«“ @  )=Ïé?d ¸<Úª†Y @  )>Ðé?d ø<Ú(‘‡ @  )?Ñé?d 8=ÚVª°p @  )@Òé?d x=ÚÔ;§® @  )AÓé?d ¸=Ú°L ¯ @  )BÔé?d ø=Ú2Ýq @  )CÕé?d 8>Ú>ªú @  )DÖé?d x>Úš¯½$ @  )E×é?d ¸>ÚfÈò @  )FØé?d ø>ÚäYåÜ @  )GÙé?d 8?ÚˆMÛé @  )HÚé?d x?Ú ÜÌ7 @  )IÛé?duÐ@Ú7 ¸?Ún«`6 @  )JÜé?d ø?Úì:wè @  )KÝé?d P@Ú˜1Ûž @  )LÞé?d @Ú¸ÄÙ` @  )Mßé?d Ð@Ú ØV @  )Nàé?d AÚÎhT¾ @  )Oáé?d PAÚ]Ï] @  )Pâé?d AÚ}ñÍ£ @  )Qãé?d ÐAÚ»ât‚ @  )Räé?d BÚ&¦ÔC @  )Såé?d PBÚÕ× @  )Tæé?d BÚ3e×) @  )Uçé?d ÐBÚmf/ @  )Vèé?d CÚ½.Ç @  )Wéé?d PCÚƒã¤Ä @  )Xêé?d CÚ£¦: @  )Yëé?d ÐCÚe @  )Zìé?d DÚ|Kì @  )[íé?d PDÚI}í€ @  )\îé?d DÚiˆï~ @  )]ïé?d ÐDÚRÛ×” @  )^ðé?d EÚ‚“[| @  )_ñé?d PEÚùç/ @  )`òé?d EÚ åÑ @  )aóé?d ÐEÚæ\ð @  )bôé?d FÚ{[ü1 @  )cõé?d PFÚNmý¥ @  )döé?d FÚn˜ÿ[ @  )e÷é?d ÐFÚ0›¥] @  )føé?d GÚàÓ)µ @  )gùé?d PGÚÞŒ¶ @  )húé?d GÚþëŽH @  )iûé?d ÐGÚ8ø7i @  )jüé?d HÚ »t @  )kýé?d PHÚ91ºà @  )lþé?d HÚĸ @  )mÿé?d ÐHÚŸó˜‚ @  )nê?d IÚO»j @  )oê?d PIÚÜ׉ @  )pê?d IÚü"w @  )qê?d ÐIÚ:14V @  )rê?d JÚ§u”— @  )sê?d PJÚ’C• @  )tê?d JÚ²¶—ý @  )uê?d ÐJÚìµÍû @  )vê?d KÚ<ýA @  )w ê?d PKÚ0ä @  )x ê?d KÚ"Åæî @  )y ê?d ÐKÚäÖ_Ï @  )z ê?d LÚý˜¬À @  ){ ê?d PLÚÈ®­T @  )|ê?d LÚè[¯ª @  )}ê?d ÐLÚÓ—@ @  )~ê?d MÚ@¨ @  )ê?d PMÚÌ{‘X @  )€ê?d MÚ쎓¦ @  )ê?d ÐMÚ**‡ @  )‚ê?d NÚ·ÙŠF @  )ƒê?d PNÚ‚ï‹Ò @  )„ê?d NÚ¢‰, @  )…ê?d ÐNÚüÓ* @  )†ê?d OÚ,Q_ @  )‡ê?d POÚœúÁ @  )ˆê?d OÚ2iø? @  )‰ê?d ÐOÚôzA @  )Šê?d PÚJ¤ý¬ @  )‹ê?d PPÚ’ü8 @  )Œê?d PÚ_gþÆ @  )ê?d ÐPÚùƒÿð @  )Ž ê?d QÚ)Ës @  )!ê?d PQÚº§èû @  )"ê?d QÚšRê @  )‘#ê?d ÐQÚ\AS$ @  )’$ê?d RÚÁóå @  )“%ê?d PRÚô3òq @  )”&ê?d RÚÔÆð @  )•'ê?d ÐRڊŪ‰ @  )–(ê?d SÚZ&a @  )—)ê?d PSÚd@ƒb @  )˜*ê?d SÚDµœ @  )™+ê?d ÐSÚ‚¦8½ @  )š,ê?d TÚ›è˲ @  )›-ê?d PTÚ®ÞÊ& @  )œ.ê?d TÚŽ+ÈØ @  )/ê?d ÐTÚµxð2 @  )ž0ê?d UÚe0|Ú @  )Ÿ1ê?d PUÚçZÀ‰ @  ) 2ê?d UÚǯÂw @  )¡3ê?d ÐUÚ¼{V @  )¢4ê?d VÚœøÛ— @  )£5ê?d PVÚ©ÎÚ @  )¤6ê?d VÚ‰;Øý @  )¥7ê?d ÐVÚ×8‚û @  )¦8ê?d WÚp @  )§9ê?d PWÚ9½« @  )¨:ê?d WÚH©î @  )©;ê?d ÐWÚß[Ï @  )ª<ê?d XÚ뤜Ò @  )«=ê?d PXÚÞ’F @  )¬>ê?d XÚþgŸ¸ @  )­?ê?d ÐXÚ¨Ó‹Ÿ @  )®@ê?d YÚx›w @  )¯Aê?d PYÚë÷œ” @  )°Bê?d YÚËžj @  )±Cê?d ÐYÚ 'K @  )²Dê?d ZÚU‡Š @  )³Eê?d PZÚ¥c† @  )´Fê?d ZÚ…–„à @  )µGê?d ÐZÚÛ•Þæ @  )¶Hê?d [Ú ÝR @  )·Iê?d P[Ú5÷  @  )¸Jê?d [Úåõó @  )¹Kê?d Ð[ÚÓöLÒ @  )ºLê?d \Úʸ¿Ý @  )»Mê?d P\Úÿ޾I @  )¼Nê?d \Úß{¼· @  )½Oê?d Ð\Úä(„] @  )¾Pê?d ]Ú4`µ @  )¿Qê?d P]Ú ²t @  )ÀRê?d ]Ú8ø°Š @  )ÁSê?d Ð]Úþë « @  )ÂTê?d ^Úc¯©j @  )ÃUê?d P^ÚV™¨þ @  )ÄVê?d ^Úvlª @  )ÅWê?d Ð^Ú(oð @  )ÆXê?d _Úø'|î @  )ÇYê?d P_ÚÆêÙí @  )ÈZê?d _ÚæÛ @  )uÐ`ÚÉ[ê?d Ð_Ú b2 @  )Ê\ê?d (`Úžôת @  )Ë]ê?d h`Ú«ÂÖ> @  )Ì^ê?d ¨`Ú‹7ÔÀ @  )Í_ê?d è`Ú-ÓÕö @  )Î`ê?d (aÚý›Y @  )Ïaê?d haÚn÷Âý @  )Ðbê?d ¨aÚNÀ @  )Ñcê?d èaÚˆy" @  )Òdê?d (bÚUÙã @  )Óeê?d hbÚ cØw @  )Ôfê?d ¨bÚ–Ú‰ @  )Õgê?d èbÚ^•€ @  )Öhê?d (cÚŽÝ g @  )×iê?d hcÚ°©d @  )Øjê?d ¨cÚ嫚 @  )Ùkê?d ècÚVö» @  )Úlê?d (dÚO¸á´ @  )Ûmê?d hdÚzŽà  @  )Ünê?d ¨dÚZ{âÞ @  )Ýoê?d èdÚa(Ú4 @  )Þpê?d (eÚ±`VÜ @  )ßqê?d heÚ3 ê @  )àrê?d ¨eÚÿèq @  )ásê?d èeÚÕìQP @  )âtê?d€ (fÚ‰ï‘ @  *uê?d hfÚ]˜O, @  *vê?d ¨fÚ}mMÒ @  *wê?d èfÚæ'ì9 @  *xê?d (gÚ6o`Ñ @  *yê?d hgÚÆš¨ @  *zê?d ¨gÚæå˜V @  *{ê?d ègÚîD~  @  *|ê?d (hÚÚ»ò @  * }ê?d hhÚ*Äi @  * ~ê?d ¨hÚ 1 — @  * ê?d èhÚ„ ±Ï @  * €ê?d (iÚTB=' @  * ê?d hiÚ¤=Ç^ @  *‚ê?d ¨iÚ„ÈÅ  @  *ƒê?d èiÚ!È @  *„ê?d (jÚ¼Œ½Ú @  *…ê?d hjÚLóG£ @  *†ê?d ¨jÚlE] @  *‡ê?d èjÚ÷Lä¶ @  *ˆê?d (kÚ'h^ @  *‰ê?d hkÚ×{’' @  *Šê?d ¨kÚ÷ŽÙ @  *‹ê?d èkÚÿ/v‚ @  *Œê?d (lÚæa… @  *ê?d hlÚô @  *Žê?d ¨lÚ6ë}  @  *ê?d èlÚÈñ¾  @  *ê?d (mÚ¹2å @  *‘ê?d hmÚèÆÈœ @  *’ê?d ¨mÚÈ3Êb @  *“ê?d èmÚ|55i @  * ”ê?d (nÚáq•¨ @  *!•ê?d hnÚoÑ @  *"–ê?d ¨nÚ1ûm/ @  *#—ê?d ènÚª±ÌÄ @  *$˜ê?d (oÚzù@, @  *%™ê?d hoÚІºU @  *&šê?d ¨oÚªs¸« @  *'›ê?d èoÚ¢Ò^ð @  *(œê?d (pÚ âB @  *)ê?d hpÚìs; @  **žê?d ¨pÚ̆Å @  *+Ÿê?d èpÚ¯+à @  *, ê?d (qÚclö @  *-¡ê?d hqÚ– @  *.¢ê?d ¨qÚ¯é”q @  */£ê?d èqÚ éLÊ @  *0¤ê?d (rÚ—­ì  @  *1¥ê?d hrÚgÒr @  *2¦ê?d ¨rÚG'Œ @  *3§ê?d èrÚÜmµg @  *4¨ê?d (sÚ %9 @  *5©ê?d hsÚüZÃö @  *6ªê?d ¨sÚܯÁ @  *7«ê?d èsÚÔ'S @  *8¬ê?d (tÚÍ@Ô\ @  *9­ê?d htÚ=?.% @  *:®ê?d ¨tÚÊ,Û @  *;¯ê?d ètÚãÐïÜ @  *<°ê?d (uÚ3˜c4 @  *=±ê?d huÚÃç™M @  *>²ê?d ¨uÚ㛳 @  *?³ê?d èuÚùb* @  *@´ê?d (vÚdWÂë @  *Aµê?d hvÚ”(8’ @  *B¶ê?d ¨vÚ´Ý:l @  *C·ê?d èvÚ/—›‡ @  *D¸ê?d (wÚÿßo @  *E¹ê?d hwÚ í @  *Fºê?d ¨wÚ/Uïè @  *G»ê?d èwÚ'ô ³ @  *H¼ê?d (xÚ …® @  *I½ê?d hxÚãt× @  *J¾ê?d ¨xÚÃ}) @  *K¿ê?d èxÚP|’ã @  *LÀê?d (yÚ€4  @  *MÁê?d hyÚpKär @  *NÂê?d ¨yÚP¾æŒ @  *OÃê?d èyÚõ¾>7 @  *PÄê?d (zÚhúžö @  *QÅê?d hzÚ˜…d @  *RÆê?d ¨zÚ¸pfq @  *SÇê?d èzÚ#:Çš @  *TÈê?d ({ÚórKr @  *UÉê?d h{Ú ±  @  *VÊê?d ¨{Ú#ø³õ @  *WËê?d è{Ú+YU® @  *XÌê?d (|Ú2¦¡ @  *YÍê?d h|ÚÂh\Ø @  *ZÎê?d ¨|Úâ^& @  *[Ïê?d è|Ú‡! @  *\Ðê?d (}ÚÌÏÉ @  *]Ñê?d h}Ú<°ë° @  *^Òê?d ¨}ÚEéN @  *_Óê?d è}Ú¨CE @  *`Ôê?d (~Ú5¶„ @  *aÕê?d h~ÚÅxLý @  *bÖê?d ¨~ÚåN @  *c×ê?d è~Ú~Çïè @  *dØê?d (Ú®c @  *eÙê?d hÚ^ð™y @  *fÚê?d ¨ÚuЀÚ'~›‡ @  *gÛê?d èÚOc¡  @  *h Üê?d @€Ú!ÝC} @  *i Ýê?d €€ÚsƬ$ @  *j Þê?d À€ÚñW»ú @  *k ßê?d ÚÀ#Ú @  *l àê?d @ÚB²ÍÉ @  *m áê?d €Ú©" @  *n âê?d ÀÚ’85N @  *o ãê?d ‚Ú(íZê @  *p äê?d @‚Úª|M4 @  *q åê?d €‚Úøg¢m @  *r æê?d À‚Úzöµ³ @  *s çê?d ƒÚ³en @  *t èê?d @ƒÚ1ô˜° @  *u éê?d €ƒÚcïwé @  *v êê?d ÀƒÚá~`7 @  *w ëê?d „Úrb½ @  *x ìê?d @„Úð‘uc @  *y íê?d €„Ú¢Šš: @  *z îê?d À„Ú ä @  *{ ïê?d …ÚŒØÕÕ @  *| ðê?d @…ÚI  @  *} ñê?d €…Ú\R-R @  *~ òê?d À…ÚÞÃ:Œ @  * óê?d †Ú8AD; @  *€ ôê?d @†ÚºÐSå @  * õê?d €†Úè˼¼ @  *‚ öê?d À†ÚjZ«b @  *ƒ ÷ê?d ‡Ú£É‘¿ @  *„ øê?d @‡Ú!X†a @  *… ùê?d €‡ÚsCi8 @  *† úê?d À‡ÚñÒ~æ @  *‡ ûê?d ˆÚO~ @  *ˆ üê?d @ˆÚÍŒ  @  *‰ ýê?d €ˆÚŸ—ûù @  *Š þê?d ÀˆÚì' @  *‹ ÿê?d ‰Ú¾ƒ™E @  *Œ ë?d @‰Ú<Ž› @  * ë?d €‰Ún a @  *Ž ë?d À‰Úì˜v @  * ë?d ŠÚVM¸ @  * ë?d @ŠÚÔÜf @  *‘ ë?d €ŠÚ†Çá? @  *’ ë?d ÀŠÚVöá @  *“ ë?d ‹ÚÍÅÌ< @  *” ë?d @‹ÚOTÛâ @  *•  ë?d €‹ÚO4» @  *–  ë?d À‹ÚŸÞ#e @  *—  ë?d ŒÚ  !ï @  *˜  ë?d @ŒÚŽ161 @  *™  ë?d €ŒÚÜ*Ùh @  *š ë?d ÀŒÚ^»Î¶ @  *› ë?d Úòx–‡ @  *œ ë?d @ÚpéY @  * ë?d €Ú"òn @  *ž ë?d ÀÚ cyÞ @  *Ÿ ë?d ŽÚ °1Ê @  *  ë?d @ŽÚ‰!& @  *¡ ë?d €ŽÚÛ:ÉM @  *¢ ë?d ÀŽÚY«Þ“ @  *£ ë?d Ú8äN @  *¤ ë?d @Ú©ó @  *¥ ë?d €Ú@²É @  *¦ ë?d ÀÚÂ#  @  *§ ë?d ÚöÍF  @  *¨ ë?d @Út\Qþ @  *© ë?d €Ú&G¾§ @  *ª ë?d ÀÚ¤Ö©y @  *« ë?d ‘Ú•¢È” @  *¬  ë?d @‘Ú3ßJ @  *­ !ë?d €‘ÚE(0 @  *® "ë?d À‘Úǹ'Í @  *¯ #ë?d ’Ú}lHi @  *° $ë?d @’Úÿý_· @  *± %ë?d €’Ú­æ°î @  *² &ë?d À’Ú/w§0 @  *³ 'ë?d “Úæäí @  *´ (ë?d @“ÚduŠ3 @  *µ )ë?d €“Ú6nej @  *¶ *ë?d À“Ú´ÿr´ @  *· +ë?d ”Ú'p> @  *¸ ,ë?d @”Ú¥gà @  *¹ -ë?d €”Ú÷ ˆ¹ @  *º .ë?d À”ÚušŸg @  *» /ë?d •ÚÙYÇV @  *¼ 0ë?d @•Ú[ÈЈ @  *½ 1ë?d €•Ú Ó?Ñ @  *¾ 2ë?d À•Ú‹B( @  *¿ 3ë?d –ÚŽ–f‰ @  *À 4ë?d @–Ú qW @  *Á 5ë?d €–Ú^ž @  * 6ë?d À–Ú܉Ð @  *à 7ë?d —Ú³  @  *Ä 8ë?d @—Ú—¤Ó @  *Å 9ë?d €—ÚÅ”KŠ @  *Æ :ë?d À—ÚG\T @  *Ç ;ë?d ˜ÚùÊ!Ì @  *È <ë?d @˜Ú{[6 @  *É =ë?d €˜Ú)@ÙK @  *Ê >ë?d À˜Ú«ÑΕ @  *Ë ?ë?d ™Újõºi @  *Ì @ë?d @™Úèd­· @  *Í Aë?d €™ÚºBî @  *Î Bë?d À™Ú8îU0 @  *Ï Cë?d šÚ‚;:” @  *Ð Dë?d @šÚª-J @  *Ñ Eë?d €šÚR±Â @  *Ò Fë?d ÀšÚÐ ÕÍ @  *Ó Gë?d ›Ú³ï @  *Ô Hë?d @›Ú›"øÎ @  *Õ Ië?d €›ÚÉ9— @  *Ö Jë?d À›ÚK¨I @  *× Kë?d œÚØÖà @  *Ø Lë?d @œÚZG @  *Ù Më?d €œÚ\úD @  *Ú Në?d ÀœÚŠÍíš @  *Û Oë?d Ú&µ« @  *Ü Pë?d @Ú¤Ÿ¢u @  *Ý Që?d €Úö„M, @  *Þ Rë?d ÀÚtZò @  *ß Së?d žÚ߯æ @  *à Të?d @žÚ]W8 @  *á Uë?d €žÚLêa @  *â Vë?d€ ÀžÚùá @  + Wë?d ŸÚÑÌ“í @  + Xë?d @ŸÚS]„3 @  + Yë?d €ŸÚć @  + ZëuРÚ?d ÀŸÚFž‡Y @  + [ë?d  Ús÷À @  + \ë?d X Úñ†à @  + ]ë?d ˜ Úm/P= @  + ^ë?d Ø Úï¾Gã @  + _ë?d ¡ÚƒÝã @  + `ë?d X¡Ú™Ê= @  + aë?d ˜¡Ú@Þ‰ @  + bë?d ءڌÑÉW @  + cë?d ¢ÚUÇi @  + dë?d X¢Ú׆з @  + eë?d ˜¢ÚæŽ^t @  + fë?d Ø¢ÚdIª @  + gë?d £Úhňš @  + hë?d X£ÚêTŸD @  + ië?d ˜£Ú}‹ð @  + jë?d Ø£Úÿ—œ. @  + kë?d ¤Ú¢[ÁÞ @  + lë?d X¤Ú ÊÖ @  + më?d ˜¤Ú¼cf# @  + në?d ؤÚ>òqý @  + oë?d ¥ÚWxÒ! @  + pë?d X¥ÚÕéÅÿ @  + që?d ˜¥ÚB»ÑK @  + rë?d Ø¥ÚÀ*Æ• @  + së?d ¦ÚìÈ« @  + të?d X¦Ú›}ßu @  + uë?d ˜¦Ú»sv @  + vë?d ئÚ9âaØ @  +! wë?d §Ú58 è @  +" xë?d X§Ú·©·6 @  +# yë?d ˜§Ú û£‚ @  +$ zë?d اÚ¢j´\ @  +% {ë?d ¨ÚÒ–¾ @  +& |ë?d X¨ÚP†` @  +' }ë?d ˜¨ÚÌ/1C @  +( ~ë?d بÚN¾& @  +) ë?d ©ÚWý @  +* €ë?d X©ÚÕ„êÀ @  ++ ë?d ˜©ÚBÖþt @  +, ‚ë?d Ø©ÚÀGéª @  +- ƒë?d ªÚç” @  +. „ë?d XªÚ›ðJ @  +/ …ë?d ˜ªÚª~‰ @  +0 †ë?d تÚ(‰iW @  +1 ‡ë?d «Ú$S¨g @  +2 ˆë?d X«Ú¦Â¿¹ @  +3 ‰ë?d ˜«Ú1«  @  +4 Šë?d ثڳ¼Ó @  +5 ‹ë?d ¬ÚîÍá# @  +6 Œë?d X¬Úl\öý @  +7 ë?d ˜¬ÚðõFÞ @  +8 Žë?d جÚrdQ @  +9 ë?d ­ÚîòÜ @  +: ë?d X­Ú™å @  +; ‘ë?d ˜­Ú-ñ¶ @  +< ’ë?d Ø­ÚŒ¼æh @  += “ë?d ®ÚUzèV @  +> ”ë?d X®Ú×ëÿˆ @  +? •ë?d ˜®ÚYâPi @  +@ –ë?d Ø®ÚÛsG· @  +A —ë?d ¯Úש†‡ @  +B ˜ë?d X¯ÚU8‘Y @  +C ™ë?d ˜¯ÚÂj…í @  +D šë?d دÚ@û’3 @  +E ›ë?d °Úº§€~ @  +F œë?d X°Ú86—  @  +G ë?d ˜°Ú¤Ÿ'ƒ @  +H žë?d ذÚ&0] @  +I Ÿë?d ±ÚÒ3ª] @  +J  ë?d X±ÚP¢½ƒ @  +K ¡ë?d ˜±ÚÇð©7 @  +L ¢ë?d رÚEa¾é @  +M £ë?d ²Úœ§°× @  +N ¤ë?d X²Ú6§  @  +O ¥ë?d ˜²Ú/>)Ê @  +P ¦ë?d زÚ­¯> @  +Q §ë?d ³Ú¡uÿ$ @  +R ¨ë?d X³Ú#äèú @  +S ©ë?d ˜³Ú´¶üN @  +T ªë?d سÚ6'ë @  +U «ë?d ´Úkë¶` @  +V ¬ë?d X´Úéz¡¾ @  +W ­ë?d ˜´ÚuÓ @  +X ®ë?d Ø´Ú÷BC @  +Y ¯ë?d µÚžÈ¥Ÿ @  +Z °ë?d XµÚY²A @  +[ ±ë?d ˜µÚ‹ ¦õ @  +\ ²ë?d صÚ š±+ @  +] ³ë?d ¶ÚÐ\¿ @  +^ ´ë?d X¶ÚRͨË @  +_ µë?d ˜¶Úrø @  +` ¶ë?d ضÚðRf @  +a ·ë?d ·Úüˆ×V @  +b ¸ë?d X·Ú~Àˆ @  +c ¹ë?d ˜·ÚéKÔ< @  +d ºë?d Ø·ÚkÚÃâ @  +e »ë?d ¸Ú§á @  +f ¼ë?d X¸Ú™6öÞ @  +g ½ë?d ˜¸ÚŸFý @  +h ¾ë?d ظÚ‡Q# @  +i ¿ë?d ¹ÚƒcÞ2 @  +j Àë?d X¹ÚòÉì @  +k Áë?d ˜¹Ú– ÝX @  +l Âë?d عÚ1ʆ @  +m Ãë?d ºÚÍ÷ĸ @  +n Äë?d XºÚOfÓf @  +o Åë?d ˜ºÚ~n]¥ @  +p Æë?d غÚüÿJ{ @  +q Çë?d »Úð%‹K @  +r Èë?d X»Úr´œ• @  +s Éë?d ˜»Úåæˆ! @  +t Êë?d Ø»ÚgwŸÿ @  +u Ëë?d ¼Ú:»Â @  +v Ìë?d X¼Ú¸*ÕÑ @  +w Íë?d ˜¼Ú$ƒeò @  +x Îë?d ؼÚ¦r, @  +y Ïë?d ½ÚϘÑð @  +z Ðë?d X½ÚM Æ. @  +{ Ñë?d ˜½ÚÚ[Òš @  +| Òë?d ؽÚXÊÅD @  +} Óë?d ¾Ú Ëz @  +~ Ôë?d X¾Úܤ @  + Õë?d ˜¾ÚnÂCt @  +€ Öë?d ؾÚìSTª @  + ×ë?d ¿Úà‰•š @  +‚ Øë?d X¿Úb‚D @  +ƒ Ùë?d ˜¿ÚõJ–ð @uÐÀÚ  +„ Úë?d Ø¿Ú3œ.‡ @  +…€Ûë?d 0ÀÚîÑ* @  +†€Üë?d pÀÚ‘Æô @  +‡€Ýë?d °ÀÚ Öv× @  +ˆ€Þë?d ðÀÚGa  @  +‰€ßë?d 0ÁÚ{zû  @  +Š€àë?d pÁÚùëì× @  +‹€áë?d °ÁÚn¹øc @  +Œ€âë?d ðÁÚì(ï½ @  +€ãë?d 0ÂÚ5îრ@  +Ž€äë?d pÂÚ·ö] @  +€åë?d °ÂÚ†wxž @  +€æë?d ðÂÚæo@ @  +‘€çë?d 0ÃÚ<®p @  +’€èë?d pÃÚŠ­¹® @  +“€éë?d °ÃÚÿ­ @  +”€êë?d ðÃÚŸnºÄ @  +•€ëë?d 0ÄÚ¢ç4 @  +–€ìë?d pÄÚ@3ðê @  +—€íë?d °ÄÚÜš@É @  +˜€îë?d ðÄÚ^ W @  +™€ïë?d 0ÅÚ7ôË @  +š€ðë?d pÅÚµã @  +›€ñë?d °ÅÚ"B÷¡ @  +œ€òë?d ðÅÚ Óà @  +€óë?d 0ÆÚyîA @  +ž€ôë?d pÆÚû„ùŸ @  +Ÿ€õë?d °ÆÚÛŠPì @  + €öë?d ðÆÚYG2 @  +¡€÷ë?d 0ÇÚUÁ† @  +¢€øë?d pÇÚ×P‘Ü @  +£€ùë?d °ÇÚ@…h @  +¤€úë?d ðÇÚ“’¶ @  +¥€ûë?d 0ÈÚ²î°T @  +¦€üë?d pÈÚ0§Š @  +§€ýë?d °ÈÚ¬Ö© @  +¨€þë?d ðÈÚ.Gw @  +©€ÿë?d 0ÉÚt‚±n @  +ª€ì?d pÉÚö¦° @  +«€ì?d °ÉÚaA² @  +¬€ì?d ðÉÚãÐ¥Ú @  +­€ì?d 0ÊÚ:«ä @  +®€ì?d pÊÚ¸‡¼: @  +¯€ì?d °ÊÚ‰2ù @  +°€ì?d ðÊÚ %' @  +±€ì?d 0ËÚÄä @  +²€ì?d pËÚ…UóÉ @  +³€ ì?d °ËÚç} @  +´€ ì?d ðËÚ–ð£ @  +µ€ ì?d 0ÌÚÍZ­S @  +¶€ ì?d pÌÚO˺ @  +·€ ì?d °ÌÚÓb ® @  +¸€ì?d ðÌÚQóp @  +¹€ì?d 0ÍÚ8y¾¬ @  +º€ì?d pÍÚºè©r @  +»€ì?d °ÍÚ-º½Æ @  +¼€ì?d ðÍÚ¯+ª @  +½€ì?d 0ÎÚví¤& @  +¾€ì?d pÎÚô|³ø @  +¿€ì?d °ÎÚzu @  +À€ì?d ðÎÚøä Ç @  +Á€ì?d 0ÏÚô>Ê÷ @  +€ì?d pÏÚv¯Ý) @  +Àì?d °ÏÚáýÉ @  +Ä€ì?d ðÏÚclÞC @  +Å€ì?d 0ÐÚ™0Ì @  +Æ€ì?d pÐÚ¡ÛÐ @  +Ç€ì?d °ÐÚ‡kó @  +È€ì?d ðÐÚ™|- @  +É€ì?d 0ÑÚñ¤æ- @  +Ê€ ì?d pÑÚs5ñó @  +Ë€!ì?d °ÑÚägåG @  +Ì€"ì?d ðÑÚföò™ @  +Í€#ì?d 0ÒÚ¿0ü§ @  +΀$ì?d pÒÚ=¡ëy @  +Ï€%ì?d °ÒÚ ©eº @  +Ѐ&ì?d ðÒÚŽ8rd @  +Ñ€'ì?d 0ÓÚ‚â³T @  +Ò€(ì?d pÓÚs¤Š @  +Ó€)ì?d °ÓÚ—!°> @  +Ô€*ì?d ðÓÚ°§à @  +Õ€+ì?d 0ÔÚH|ú @  +Ö€,ì?d pÔÚÊííÎ @  +×€-ì?d °ÔÚVD]í @  +Ø€.ì?d ðÔÚÔÕJ3 @  +Ù€/ì?d 0ÕÚ½_éï @  +Ú€0ì?d pÕÚ?Îþ1 @  +Û€1ì?d °ÕÚ¨œê… @  +Ü€2ì?d ðÕÚ* ý[ @  +Ý€3ì?d 0ÖÚóËóe @  +Þ€4ì?d pÖÚqZä» @  +߀5ì?d °ÖÚQTMÈ @  +à€6ì?d ðÖÚÓÅZ @  +á€7ì?d 0×Úß›& @  +â€8ì?d€ p×ÚÛØ$A @  ,€9ì?d °×Ú­ËxÜ @  ,€:ì?d ð×Ú/Zo @  ,€;ì?d 0ØÚšn¶  @  ,€<ì?d pØÚÿ¡Ó @  ,€=ì?d °ØÚJäNŠ @  ,€>ì?d ðØÚÈuYT @  ,€?ì?d 0ÙÚª‰? @  ,€@ì?d pÙÚ€;žá @  , €Aì?d °ÙÚÒ q¸ @  , €Bì?d ðÙÚP±ff @  , €Cì?d 0ÚÚL>“µ @  , €Dì?d pÚÚί„k @  , €Eì?d °ÚÚœ´k2 @  ,€Fì?d ðÚÚ%|ì @  ,€Gì?d 0ÛÚqìÜF @  ,€Hì?d pÛÚó}˘ @  ,€Iì?d °ÛÚ¡f$Á @  ,€Jì?d ðÛÚ#÷3 @  ,€Kì?d 0ÜÚ»r• @  ,€Lì?d pÜÚ9ã‚Ü @  ,€Mì?d °ÜÚkøm… @  ,€Nì?d ðÜÚéiz[ @  ,€Oì?d 0ÝÚNQ†ý @  ,€Pì?d pÝÚÌÀ‘# @  ,€Qì?d °ÝÚžÛ~z @  ,€Rì?d ðÝÚJi¤ @  ,€Sì?d 0ÞÚÅœw @  ,€Tì?d pÞÚ‚T‹© @  ,€Uì?d °ÞÚÐOdð @  ,€Vì?d ðÞÚRÞs. @  ,€Wì?d 0ßÚ,ô4 @  , €Xì?d pßÚ®€ãê @  ,!€Yì?d uÐàÚ/°ßÚü› ³ @  ,"€Zì?d ðßÚŠh @  ,#[ì?d HàÚ›åcõ @  ,$\ì?d ˆàÚ»a  @  ,%]ì?d ÈàÚKo›r @  ,&^ì?d áÚ›'š @  ,'_ì?d HáÚóqIÖ @  ,(`ì?d ˆáÚÓ„K( @  ,)aì?d ÈáÚ#û±Q @  ,*bì?d âÚ¾¿ @  ,+cì?d HâÚ½åS\ @  ,,dì?d ˆâÚQ¢ @  ,-eì?d ÈâÚmo«Û @  ,.fì?d ãÚ½''3 @  ,/gì?d HãÚ€7¯ @  ,0hì?d ˆãÚ ÂQ @  ,1iì?d ÈãÚP½ä( @  ,2jì?d äÚIó' @  ,3kì?d HäÚJ©Uë @  ,4lì?d ˆäÚj\W @  ,5mì?d ÈäÚš#­l @  ,6nì?d åÚJk!„ @  ,7oì?d HåÚ¿ŠF @  ,8pì?d ˆåÚŸDê @  ,9qì?d ÈåÚo¾“ @  ,:rì?d æÚòDR @  ,;sì?d HæÚñ\ž @  ,<tì?d ˆæÚÑë^` @  ,=uì?d ÈæÚ!”¤ @  ,>vì?d çÚñÜ(ñ @  ,?wì?d HçÚsÍ2O @  ,@xì?d ˆçÚS80± @  ,Ayì?d ÈçÚ£GÊÈ @  ,Bzì?d èÚ—¸FÕ @  ,C{ì?d HèÚ”â @  ,D|ì?d ˆèÚ´ç @  ,E}ì?d ÈèÚDhüž @  ,F~ì?d éÚ” pv @  ,Gì?d HéÚào¹ @  ,H€ì?d ˆéÚ1mG @  ,Iì?d ÈéÚÁj—> @  ,J‚ì?d êÚ\.7ÿ @  ,Kƒì?d HêÚ_tu3 @  ,L„ì?d ˆêÚwÍ @  ,M…ì?d ÈêÚþ´ @  ,N†ì?d ëÚ_¶\ @  ,O‡ì?d HëÚb¦:À @  ,Pˆì?d ˆëÚBS8> @  ,Q‰ì?d ÈëÚ²,ÂG @  ,RŠì?d ìÚ«b1H @  ,S‹ì?d HìÚ¨8s„ @  ,TŒì?d ˆìÚˆÍqz @  ,Uì?d ÈìÚx²‹ @  ,VŽì?d íÚ¨úë @  ,Wì?d HíÚ]`{ @  ,Xì?d ˆíÚ}îb… @  ,Y‘ì?d ÈíÚ‘˜ü @  ,Z’ì?d îÚÕ8= @  ,[“ì?d HîÚzñ @  ,\”ì?d ˆîÚ3zx @  ,]•ì?d ÈîÚÂv @  ,^–ì?d ïÚMž @  ,_—ì?d HïÚ?[² @  ,`˜ì?d ˆïÚ®L @  ,a™ì?d ÈïÚïÑê5 @  ,bšì?d ðÚQV‡ @  ,c›ì?d HðÚRUK @  ,dœì?d ˆðÚr µ @  ,eì?d ÈðÚ‚ßìÌ @  ,fžì?d ñÚR—`$ @  ,gŸì?d HñÚ:Á>h @  ,h ì?d ˆñÚ4<– @  ,i¡ì?d ÈñÚêKÆï @  ,j¢ì?d òÚwf. @  ,k£ì?d HòÚtU$â @  ,l¤ì?d ˆòÚT & @  ,m¥ì?d ÈòÚ¤ßÜe @  ,n¦ì?d óÚt—P @  ,o§ì?d HóÚI‡k @  ,p¨ì?d ˆóÚiriï @  ,q©ì?d ÈóÚ™ “– @  ,rªì?d ôÚ€C`™ @  ,s«ì?d HôÚƒ"U @  ,t¬ì?d ˆôÚ£ì « @  ,u­ì?d ÈôÚS“ÚÒ @  ,v®ì?d õÚƒÛV: @  ,w¯ì?d HõÚv:1ª @  ,x°ì?d ˆõÚVÏ3T @  ,y±ì?d ÈõÚ¦°É- @  ,z²ì?d öÚ;ôiì @  ,{³ì?d HöÚ8®+  @  ,|´ì?d ˆöÚ[)Þ @  ,}µì?d ÈöÚè$Ó§ @  ,~¶ì?d ÷Ú8l_O @  ,·ì?d H÷ÚY+uÀ @  ,€¸ì?d ˆ÷ÚyÞw> @  ,¹ì?d È÷Ú‰¡G @  ,‚ºì?d øÚ½^Z @  ,ƒ»ì?d HøÚ¾C– @  ,„¼ì?d ˆøÚžñAh @  ,…½ì?d ÈøÚnŽ» @  ,†¾ì?d ùÚ¾Æ7ù @  ,‡¿ì?d HùÚ&À|¤ @  ,ˆÀì?d ˆùÚ5~Z @  ,‰Áì?d ÈùÚöJ„# @  ,ŠÂì?d úÚk$â @  ,‹Ãì?d HúÚhTf. @  ,ŒÄì?d ˆúÚH¡dÐ @  ,Åì?d ÈúÚ¸Þž© @  ,ŽÆì?d ûÚh–A @  ,Çì?d HûÚU†)Ý @  ,Èì?d ˆûÚus+# @  ,‘Éì?d ÈûÚ… ÑZ @  ,’Êì?d üÚœB"U @  ,“Ëì?d HüÚŸ`™ @  ,”Ìì?d ˆüÚ¿íbg @  ,•Íì?d ÈüÚO’˜ @  ,–Îì?d ýÚŸÚö @  ,—Ïì?d HýÚj;sf @  ,˜Ðì?d ˆýÚJÎq˜ @  ,™Ñì?d ÈýÚº±‹á @  ,šÒì?d þÚ'õ+  @  ,›Óì?d HþÚ$¯iì @  ,œÔì?d ˆþÚZk @  ,Õì?d ÈþÚô%‘k @  ,žÖì?d ÿÚ$mƒ @  ,Ÿ×ì?d HÿÚ{¯ @  , Øì?d ˆÿÚ(ŽQ @  ,¡uÐÛÙì?d ÈÿÚá6%ý @  ,¢ Úì?d Û®‚  @  ,£ Ûì?d `Û­ØOÀ @  ,¤ Üì?d  Û-M> @  ,¥ Ýì?d àÛ}R·G @  ,¦ Þì?d Û­;¯ @  ,§ ßì?d `ÛÅLeã @  ,¨ àì?d  Ûå¹g @  ,© áì?d àÛÆd @  ,ª âì?d Ûˆ‚=¥ @  ,« ãì?d `Û‹Øi @  ,¬ äì?d  Û«-}— @  ,­ åì?d àÛ[R‡î @  ,® æì?d Û‹  @  ,¯ çì?d `Û¶ 0š @  ,° èì?d  Û–ÿ2d @  ,± éì?d àÛf€È @  ,² êì?d ÛÎ; @  ,³ ëì?d `Û|”yÞ @  ,´ ìì?d  Û\a{  @  ,µ íì?d àÛ¬Y @  ,¶ îì?d Û|V ± @  ,· ïì?d `Û‰·j! @  ,¸ ðì?d  Û©Bhß @  ,¹ ñì?d àÛY=’¦ @  ,º òì?d ÛÄy2g @  ,» óì?d `ÛÇ#p« @  ,¼ ôì?d  ÛçÖrU @  ,½ õì?d àÛ©ˆ, @  ,¾ öì?d ÛÇáÄ @  ,¿ ÷ì?d `ÛEðz @  ,À øì?d  Ûe„ @  ,Á ùì?d àÛ•zæý @  , úì?d Û¡…jà @  ,à ûì?d `Û¢ß(, @  ,Ä üì?d  Û‚**Ò @  ,Å ýì?d àÛrUЫ @  ,Æ þì?d Û¢\C @  ,Ç ÿì?d ` ÛXº€ @  ,È í?d   ÛxO~ @  ,É í?d à Ûˆ0î @  ,Ê í?d ÛtNÆ @  ,Ë í?d ` Û.  @  ,Ì í?d   Û6Ûô @  ,Í í?d à ÛƤô @  ,Î í?d Ûìxe @  ,Ï í?d ` Û+üCù @  ,Ð í?d   Û A @  ,Ñ  í?d à Ûûv»~ @  ,Ò  í?d Ûâ8Hq @  ,Ó  í?d ` Ûáb ½ @  ,Ô  í?d   ÛÁ—C @  ,Õ  í?d à Û1èò: @  ,Ö í?d Ûá ~Ò @  ,× í?d ` ÛAB @  ,Ø í?d   Û4´¼ @  ,Ù í?d à ÛÄËáÅ @  ,Ú í?d ÛYA @  ,Û í?d `ÛZÕÈ @  ,Ü í?d  Ûz 6 @  ,Ý í?d àÛŠ_ûO @  ,Þ í?d ÛZw§ @  ,ß í?d `Ûvk‹ @  ,à í?d  ÛVôiu @  ,á í?d àÛ¦‹“  @  ,â í?d€ Ûl–3 @  - í?d `ÛŽ9ý @  - í?d  Û®x; @  - í?d àÛ›N:— @  - í?d ÛK¶ @  - í?d `Ûíâ·I @  -  í?d  Û͵· @  - !í?d àÛóÚ´ @  - "í?d Ûnž°u @  - #í?d `Û¨ T @  - $í?d  Ûˆx ª @  - %í?d àÛ½N > @  - &í?d Ûm†Ö @  - 'í?d `Û3ÜÐ @  - (í?d  ÛðÞ. @  - )í?d àÛ€œEÍ @  - *í?d Û™Ò¶Â @  - +í?d `Û_Áã @  - ,í?d  Û4  @  - -í?d àÛJ ‰ @  - .í?d ÛšJ€a @  - /í?d `Û¡¸‹ @  - 0í?d  Ûìºu @  - 1í?d àÛ¿!v @  - 2í?d Û"e¿· @  - 3í?d `Ûäv– @  - 4í?d  Ûăh @  - 5í?d àÛñµü @  - 6í?d Û!ý‰ @  - 7í?d `ÛþÓ @  - 8í?d  Û_ Ñì @  - 9í?d àÛÝam¿ @  - :í?d Ûéžá¢ @  -! ;í?d `Û/Xƒ @  -" <í?d  ÛxZ} @  -# =í?d àÛ:N[é @  -$ >í?d Ûê× @  -% ?í?d `Û¼²Ã& @  -& @í?d  ÛœGÁØ @  -' Aí?d àÛ¢ŠdÛ @  -( Bí?d Û?ÎÄ @  -) Cí?d `ÛùÝ}; @  -* Dí?d  ÛÙ(Å @  -+ Eí?d àÛì~Q @  -, Fí?d Û Xí?d  Û[¥ƒuÐ Û @  -? Yí?d àÛñ× @  -@Zí?d 8 Ûjúñ @  -A[í?d x Û¬é¤Ð @  -B\í?d ¸ ÛŒ¦. @  -C]í?d ø Û¹*§º @  -D^í?d 8!Ûib+R @  -E_í?d x!Ûφ*d @  -F`í?d ¸!Ûïs(š @  -Gaí?d ø!ÛѾ™ @  -Hbí?d 8"ÛLú-X @  -Icí?d x"ÛŠé”y @  -Jdí?d ¸"Ûª–‡ @  -Keí?d ø"ÛŸ*— @  -Lfí?d 8#ÛObû @  -Mgí?d x#ÛaAý @  -Nhí?d ¸#Û1”C @  -Oií?d ø#Û¢øØà @  -Pjí?d 8$Û»¶+ï @  -Qkí?d x$Û}¥’Î @  -Rlí?d ¸$Û]P0 @  -Smí?d ø$Ûhf‘¤ @  -Tní?d 8%Û¸.L @  -Uoí?d x%Ûƒ}%¦ @  -Vpí?d ¸%Û£ˆ'X @  -Wqí?d ø%ÛE‚[ @  -Xrí?d 8&Û"š @  -Ysí?d x&ÛÆ›» @  -Ztí?d ¸&Ûæç™E @  -[uí?d ø&ÛÓјÑ @  -\ví?d 8'Û™9 @  -]wí?d x'Û]šN? @  -^xí?d ¸'Û}oLÁ @  -_yí?d ø'Ûÿð’ @  -`zí?d 8(ÛËú| @  -a{í?d x(Û éÅ® @  -b|í?d ¸(Û-ÇP @  -c}í?d ø(Û*ÆÄ @  -d~í?d 8)ÛÈbJ, @  -eí?d x)Ûƒ ™ @  -f€í?d ¸)Û£åg @  -gí?d ø)Û(­d @  -h‚í?d 8*Ûl ¥ @  -iƒí?d x*ÛÆ´„ @  -j„í?d ¸*Û抶z @  -k…í?d ø*ÛÓ¼·î @  -l†í?d 8+Ûô; @  -m‡í?d x+Û]÷a @  -nˆí?d ¸+Û}cþ @  -o‰í?d ø+Ûînø @  -pŠí?d 8,Û÷  @  -q‹í?d x,Û13²3 @  -rŒí?d ¸,ÛưÍ @  -sí?d ø,Û$ð±Y @  -tŽí?d 8-Ûô¸=± @  -uí?d x-ÛÏë[ @  -ví?d ¸-Ûï¥ @  -w‘í?d ø-ÛÑÓ¢¦ @  -x’í?d 8.ÛL—g @  -y“í?d x.ÛŠ„»F @  -z”í?d ¸.Ûªq¹¸ @  -{•í?d ø.ÛŸG¸, @  -|–í?d 8/ÛO4Ä @  -}—í?d x/Û n @  -~˜í?d ¸/Û1ùl< @  -™í?d ø/ÛþÂæÌ @  -€ší?d 80Û@Z~ @  -›í?d x0Û†ã_ @  -‚œí?d ¸0Û¦úá¡ @  -ƒí?d ø0Û“Ìà5 @  -„ží?d 81ÛC„lÝ @  -…Ÿí?d x1Ûå`më @  -† í?d ¸1ÛÅ•o @  -‡¡í?d ø1ÛûXÊ @  -ˆ¢í?d 82Ûfj× @  -‰£í?d x2Û Óö @  -Фí?d ¸2Û€úÑ @  -‹¥í?d ø2ÛµÌМ @  -Œ¦í?d 83Ûe„\t @  -§í?d x3Û;‡r @  -ލí?d ¸3ÛrŒ @  -©í?d ø3ÛˆŸo @  -ªí?d 84Û‘Pl` @  -‘«í?d x4ÛWCÕA @  -’¬í?d ¸4Ûw¶×¿ @  -“­í?d ø4ÛB€Ö+ @  -”®í?d 85Û’ÈZà @  -•¯í?d x5Û©›b) @  -–°í?d ¸5Û‰n`× @  -—±í?d ø5Û·£ÅÔ @  -˜²í?d 86Û*çe @  -™³í?d x6ÛìôÜ4 @  -š´í?d ¸6ÛÌÞÊ @  -›µí?d ø6Ûù7ß^ @  -œ¶í?d 87Û)S¶ @  -·í?d x7Ûw| ° @  -ž¸í?d ¸7ÛW‰ N @  -Ÿ¹í?d ø7ÛÕã· @  - ºí?d 88Ûá; @  -¡»í?d x8Û'‚! @  -¢¼í?d ¸8Ûú€ß @  -£½í?d ø8Û2ÌK @  -¤¾í?d 89Ûâ„ £ @  -¥¿í?d x9Û´0„ @  -¦Àí?d ¸9Û”Åz @  -§Áí?d ø9Ûª¾y @  -¨Âí?d 8:Û7L¸ @  -©Ãí?d x:Ûñ_§™ @  -ªÄí?d ¸:ÛѪ¥g @  -«Åí?d ø:Û䜤ó @  -¬Æí?d 8;Û4Ô( @  -­Çí?d x;Ûj×r @  -®Èí?d ¸;ÛJ"pã @  -¯Éí?d ø;ÛÙNë @  -°Êí?d 8<ÛÀ @  -±Ëí?d x<Û¡. @  -²Ìí?d ¸<Û&æ£Ð @  -³Íí?d ø<ÛТD @  -´Îí?d 8=ÛØ.¬ @  -µÏí?d x=ÛøËF @  -¶Ðí?d ¸=ÛØ>¸ @  -·Ñí?d ø=Ûæó±» @  -¸Òí?d 8>Û{·z @  -¹Óí?d x>Û½¤¨[ @  -ºÔí?d ¸>ÛQª¥ @  -»Õí?d ø>Û¨g«1 @  -¼Öí?d 8?Ûx/'Ù @  -½×í?d x?Û&,}ß @  -¾Øí?duÐ@Û7 ¸?ÛÙ! @  -¿Ùí?d ø?Ûs5 @  -À Úí?d P@ÛÐߣ  @  -Á Ûí?d @Û´¨ @  - Üí?d Ð@Û69Ö @  -à Ýí?d AÛQÖ‚t @  -Ä Þí?d PAÛÓG•ª @  -Å ßí?d AÛ×Ǽ @  -Æ àí?d ÐAÛUV–b @  -Ç áí?d BÛtN„~ @  -È âí?d PBÛöß“  @  -É ãí?d BÛ’¨?¡ @  -Ê äí?d ÐBÛ9( @  -Ë åí?d CÛwÖ²Ý @  -Ì æí?d PCÛõG¥ @  -Í çí?d CÛ ê% @  -Î èí?d ÐCÛ‹±ýû @  -Ï éí?d DÛƒ‚É @  -Ð êí?d PDÛ“• @  -Ñ ëí?d DÛeä9 @  -Ò ìí?d ÐDÛçu.È @  -Ó íí?d EÛ€š´j @  -Ô îí?d PEÛ £´ @  -Õ ïí?d EÛ›<Ž~ @  -Ö ðí?d ÐEÛ­™  @  -× ñí?d FÛ8µ‹¼ @  -Ø òí?d PFÛº$œb @  -Ù óí?d FÛÞS0c @  -Ú ôí?d ÐFÛ\Â'½ @  -Û õí?d GÛ;-½ @  -Ü öí?d PGÛ¹¼ªÁ @  -Ý ÷í?d GÛEÛåç @  -Þ øí?d ÐGÛÇJò9 @  -ß ùí?d HÛóNÕ© @  -à úí?d PHÛqßÂw @  -á ûí?d HÛ¨nv @  -â üí?d€ ÐHÛV~ލ @  . ýí?d IÛÐÐ\# @  . þí?d PIÛRAKý @  . ÿí?d IÛ³[…¬ @  . î?d ÐIÛ1Ê’r @  . î?d JÛÞ`ß @  . î?d PJÛ\ñÈÊ @  . î?d JÛö4;± @  . î?d ÐJÛt¥,o @  . î?d KÛÖM  @  . î?d PKÛT’Zþ @  . î?d KÛm¼î5 @  . î?d ÐKÛï-ùë @  .  î?d LÛ„çC @  .  î?d PLÛð @  .  î?d LÛx= @  .  î?d ÐLÛƒé*Ø @  .  î?d MÛ!OK— @  . î?d PMÛ£Þ\I @  . î?d MÛÿ Šn @  . î?d ÐMÛ}1° @  . î?d NÛ’›ÐÖ @  . î?d PNÛ Ç @  . î?d NÛºÏ4s @  . î?d ÐNÛ8^#­ @  . î?d OÛšøBâ @  . î?d POÛiU< @  . î?d OÛ!Gá÷ @  . î?d ÐOÛ£Öö) @  . î?d PÛoæ§< @  . î?d PPÛíw°â @  . î?d PÛûZÉ @  . î?d ÐPÛy„M @  .! î?d QÛÛ",X @  ." î?d PQÛY³;† @  .# î?d QÛ˜zÔ} @  .$  î?d ÐQÛëã @  .% !î?d RÛõAŽÅ @  .& "î?d PRÛwЙ @  .' #î?d RÛÝj` @  .( $î?d ÐRÛ_„}¾ @  .) %î?d SÛý"ñ @  .* &î?d PSÛ³ / @  .+ 'î?d SÛF¿ä @  ., (î?d ÐSÛÄ ¨: @  .- )î?d TÛ¯¬¶’ @  .. *î?d PTÛ-=¡L @  ./ +î?d TÛ*Yl× @  .0 ,î?d ÐTÛ¨È{  @  .1 -î?d UÛ nF @  .2 .î?d PUÛˆÿ ˜ @  .3 /î?d UÛÔÛ¿ @  .4 0î?d ÐUÛVÌa @  .5 1î?d VÛ¹º @  .6 2î?d PVÛ;+–Ù @  .7 3î?d VÛ‘îe¢ @  .8 4î?d ÐVÛr| @  .9 5î?d WÛ±Ù3 @  .: 6î?d PWÛ3Hí @  .; 7î?d WÛ f°& @  .< 8î?d ÐWÛˆ÷§ø @  .= 9î?d XÛÎæÆB @  .> :î?d PXÛLwÑœ @  .? ;î?d XÛô=% @  .@ <î?d ÐXÛvƒ*û @  .A =î?d YÛÔ%K´ @  .B >î?d PYÛV´\j @  .C ?î?d YÛg-¦€ @  .D @î?d ÐYÛå¼±^ @  .E Aî?d ZÛ ü8 @  .F Bî?d PZÛˆ‡ëæ @  .G Cî?d ZÛ"B @  .H Dî?d ÐZÛ ÓC @  .I Eî?d [Ûun  @  .J Fî?d P[Û€äyÒ @  .K Gî?d [Û¹ÊÍ @  .L Hî?d Ð[Û;[ÚÇ @  .M Iî?d \ÛPûÄo @  .N Jî?d P\ÛÒjÓ± @  .O Kî?d \ÛÕ* @  .P Lî?d Ð\ÛWŸ ô @  .Q Mî?d ]Ûõ9h» @  .R Nî?d P]Ûw¨e @  .S Oî?d ]Û+Ö©B @  .T Pî?d Ð]Û©G¾œ @  .U Qî?d ^ÛFíóú @  .V Rî?d P^ÛÄ|ä$ @  .W Sî?d ^Ûn¹_ @  .X Tî?d Ð^Ûì( @  .Y Uî?d _ÛNŽaÎ @  .Z Vî?d P_ÛÌv @  .[ Wî?d _Ûõ1ÂÛ @  .uÐ`Û\ Xî?d Ð_Ûw Õ @  .] Yî?d (`Û»¶: @  .^ Zî?d h`Û9'šä @  ._ [î?d ¨`Û/EpÏ @  .` \î?d è`Û­Ôg @  .a ]î?d (aÛr^ @  .b ^î?d haÛ〠@  .c _î?d ¨aÛL*þ{ @  .d `î?d èaÛλé¥ @  .e aî?d (bÛ!¤Ã @  .f bî?d hbÛ£€³ @  .g cî?d ¨bÛ E@f @  .h dî?d èbÛ‹ÔW¸ @  .i eî?d (cÛ)r6÷ @  .j fî?d hcÛ«ã!) @  .k gî?d ¨cÛ’Í•â @  .l hî?d ècÛ\‚< @  .m iî?d (dÛ{üœ” @  .n jî?d hdÛùm‹J @  .o kî?d ¨dÛþ FÑ @  .p lî?d èdÛ|˜Q @  .q mî?d (eÛÞ>0@ @  .r nî?d heÛ\¯'ž @  .s oî?d ¨eÛÑñ¹ @  .t pî?d èeÛ‚@æg @  .u qî?d (fÛmê« @  .v rî?d hfÛï{¼ß @  .w sî?d ¨fÛE¾O¤ @  .x tî?d èfÛÇ/Xz @  .y uî?d (gÛe‰95 @  .z vî?d hgÛç.ë @  .{ wî?d ¨gÛÞ6š  @  .| xî?d ègÛ\§þ @  .} yî?d (hÛ¶ìD @  .~ zî?d hhÛ˜'ûš @  . {î?d ¨hÛÃ' @  .€ |î?d èhÛA…0Ì @  . }î?d (iÛã#Qƒ @  .‚ ~î?d hiÛa²F] @  .ƒ î?d ¨iÛMíè% @  .„ €î?d èiÛÏ|ÿû @  .… î?d (jÛ Ö² @  .† ‚î?d hjÛ¢G¥C @  .‡ ƒî?d ¨jÛ‚V8 @  .ˆ „î?d èjÛŠAæ @  .‰ …î?d (kÛ(µ © @  .Š †î?d hkÛª$7w @  .‹ ‡î?d ¨kÛ“ ƒ¼ @  .Œ ˆî?d èkÛ›”b @  . ‰î?d (lÛz;ŠÊ @  .Ž Šî?d hlÛøª @  . ‹î?d ¨lÛÿÎP @  . Œî?d èlÛ}_GQ @  .‘ î?d (mÛßù& @  .’ Žî?d hmÛ]h1À @  .“ î?d ¨mÛçç @  .” î?d èmÛƒ‡ð9 @  .• ‘î?d (nÛl-½_ @  .– ’î?d hnÛ @  .— “î?d ¨nÛDyYú @  .˜ ”î?d ènÛÆèN$ @  .™ •î?d (oÛdN/k @  .š –î?d hoÛæß8µ @  .› —î?d ¨oÛßñŒ~ @  .œ ˜î?d èoÛ]`›  @  . ™î?d (pÛ‘Pʵ @  .ž šî?d hpÛÁÝk @  .Ÿ ›î?d ¨pÛ£7@ @  .  œî?d èpÛ‡2 ž @  .¡ î?d (qÛ%”AÑ @  .¢ žî?d hqÛ§V @  .£ Ÿî?d ¨qÛf̹ô @  .¤  î?d èqÛä]®* @  .¥ ¡î?d (rÛ ÷ãL @  .¦ ¢î?d hrÛ‰fô’ @  .§ £î?d ¨rÛ#£é @  .¨ ¤î?d èrÛ¡27 @  .© ¥î?d (sÛ”qx @  .ª ¦î?d hsÛf¦ @  .« §î?d ¨sÛ¸+Òm @  .¬ ¨î?d èsÛ:ºÅ³ @  .­ ©î?d (tÛQÛ @  .® ªî?d htÛÓ‹ÌÅ @  .¯ «î?d ¨tÛÔï^ @  .° ¬î?d ètÛV~€ @  .± ­î?d (uÛôØwÏ @  .² ®î?d huÛvI` @  .³ ¯î?d ¨uÛ*7¶6 @  .´ °î?d èuÛ¨¦¡è @  .µ ±î?d (vÛG ìŽ @  .¶ ²î?d hvÛÅûP @  .· ³î?d ¨vÛoX+ @  .¸ ´î?d èvÛíÉõ @  .¹ µî?d (wÛOo~º @  .º ¶î?d hwÛÍþid @  .» ·î?d ¨wÛôÐݯ @  .¼ ¸î?d èwÛvAÊq @  .½ ¹î?d (xÛ0P«Ë @  .¾ ºî?d hxÛ²Á¼ @  .¿ »î?d ¨xÛ ¤P¬ @  .À ¼î?d èxÛˆ5Gr @  .Á ½î?d (yÛ*“&= @  . ¾î?d hyÛ¨1ã @  .à ¿î?d ¨yÛ™›Ë  @  .Ä Àî?d èyÛ Ü× @  .Å Áî?d (zÛô ‘± @  .Æ Âî?d hzÛv1†o @  .Ç Ãî?d ¨zÛÜôu @  .È Äî?d èzÛ^ebÊ @  .É Åî?d ({ÛüÃ… @  .Ê Æî?d h{Û~R[ @  .Ë Çî?d ¨{ÛG|  @  .Ì Èî?d è{ÛÅí·N @  .Í Éî?d (|Û®M©æ @  .Î Êî?d h|Û,ܾ8 @  .Ï Ëî?d ¨|Û+¸s£ @  .Ð Ìî?d è|Û©)d} @  .Ñ Íî?d (}Û 2 @  .Ò Îî?d h}Û‰ì @  .Ó Ïî?d ¨}ÛÕ`ÄË @  .Ô Ðî?d è}ÛWñÓ @  .Õ Ñî?d (~Û¸[žs @  .Ö Òî?d h~Û:ʉ­ @  .× Óî?d ¨~ÛzÖ @  .Ø Ôî?d è~Ûžm @  .Ù Õî?d (Û°8 G @  .Ú Öî?d hÛ2©™ @  .Û ×î?d ¨ÛuЀÛ' ‡¯R @  .Ü Øî?d èÛ‰¸Œ @  .Ý Ùî?d @€Û•F·_ @  .Þ Úî?d €€Ûµ³µ¡ @  .ß Ûî?d À€ÛµJª @  .à Üî?d ÛÑýÆB @  .á Ýî?d @Û!‚<; @  .â Þî?d€ €Ûu´"c @  / ßî?d ÀÛ÷X‘ @  / àî?d ‚Ûj0P @  / áî?d @‚Û_*1Ä @  / âî?d €‚Ûß3: @  / ãî?d À‚۹̊ @  / äî?d ƒÛi„ó @  / åî?d @ƒÛWI£ð @  / æî?d €ƒÛw¼¡ @  / çî?d ÀƒÛ)¿û @  / èî?d „Û0ñ @  / éî?d @„ÛÇ “ @  / êî?d €„Û%2 m @  / ëî?d À„Ûã!²L @  / ìî?d …Û3i>¤ @  / íî?d @…Û ¥G @  / îî?d €…ۀ𧹠@  / ïî?d À…Û»£ŸS @  / ðî?d †Û&ç?’ @  / ñî?d @†ÛÑ> @  / òî?d €†Û3$<ø @  / óî?d À†Ûõ7…Ù @  / ôî?d ‡Û% 1 @  / õî?d @‡Û²¬2 @  / öî?d €‡Û;G®Ì @  / ÷î?d À‡ÛeDôÊ @  / øî?d ˆÛQ»x× @  / ùî?d @ˆÛdyC @  / úî?d €ˆÛDx{½ @  / ûî?d ÀˆÛ‚kœ @  / üî?d ‰ÛR#Nt @  / ýî?d @‰ÛÐIò' @  / þî?d €‰Ûð¼ðÙ @  /! ÿî?d À‰ÛÄ©å` @  /" ï?d ŠÛYíE¡ @  /# ï?d @ŠÛlÛD5 @  /$ ï?d €ŠÛL.FË @  /% ï?d ÀŠÛŠ=ÿê @  /& ï?d ‹ÛZus @  /' ï?d @‹Ûd¸Ö @  /( ï?d €‹ÛDMÔÿ @  /) ï?d À‹ÛNŽù @  /* ï?d ŒÛ}ö @  /+  ï?d @ŒÛ66|b @  /,  ï?d €ŒÛÃ~œ @  /-  ï?d ÀŒÛÐÐǽ @  /.  ï?d Û˜KU @  //  ï?d @Û“ôж @  /0 ï?d €Û³ÒH @  /1 ï?d ÀÛˆRê¢ @  /2 ï?d ŽÛJc @  /3 ï?d @ŽÛ K÷ @  /4 ï?d €ŽÛÕI  @  /5 ï?d ÀŽÛÆÆð( @  /6 ï?d ÛŽ|À @  /7 ï?d @Û(CÙà @  /8 ï?d €Û¶Û= @  /9 ï?d ÀÛVµ; @  /: ï?d Ûèk=‰ @  /; ï?d @ÛÝ]< @  /< ï?d €Ûý¨>ã @  /= ï?d ÀÛ;»‡Â @  /> ï?d ‘Ûëó * @  /? ï?d @‘ÛÇž±ë @  /@ ï?d €‘Ûçk³ @  /A ï?d À‘ÛA²# @  /B  ï?d ’ÛÜËâ @  /C !ï?d @’Ûéýv @  /D "ï?d €’ÛɈ @  /E #ï?d À’Û¨© @  /F $ï?d “ÛßS$A @  /G %ï?d @“ÛážB @  /H &ï?d €“ÛÁkƒ¼ @  /I 'ï?d À“ÛŸhÙº @  /J (ï?d ”Û†&*µ @  /K )ï?d @”Û³+! @  /L *ï?d €”Û“å)ß @  /M +ï?d À”ÛUöþ @  /N ,ï?d •Û…¾ @  /O -ï?d @•ÛÒ‡õ @  /P .ï?d €•Û6'…  @  /Q /ï?d À•Û t½á @  /R 0ï?d –Û0  @  /S 1ï?d @–Û¥´ @  /T 2ï?d €–Û…óJ @  /U 3ï?d À–ÛCà§k @  /V 4ï?d —Û“¨+ƒ @  /W 5ï?d @—Û­eŽ€ @  /X 6ï?d €—ÛŒ~ @  /Y 7ï?d À—ÛÓ“Öx @  /Z 8ï?d ˜ÛçlZe @  /[ 9ï?d @˜ÛÒZ[ñ @  /\ :ï?d €˜Ûò¯Y @  /] ;ï?d À˜Û4¼à. @  /^ <ï?d ™ÛäôlÆ @  /_ =ï?d @™ÛfžÐ• @  /` >ï?d €™ÛFkÒk @  /a ?ï?d À™Û߯L @  /b @ï?d šÛ›f @  /c Aï?d @šÛ¸­g @  /d Bï?d €šÛ˜Xeç @  /e Cï?d ÀšÛ^KÜÆ @  /f Dï?d ›ÛŽP. @  /g Eï?d @›Û°Îõ- @  /h Fï?d €›Û;÷Ó @  /i Gï?d À›ÛÎ8­Õ @  /j Hï?d œÛ×v^Ú @  /k Iï?d @œÛâ@_N @  /l Jï?d €œÛµ]° @  /m Kï?d ÀœÛ¦ä‘ @  /n Lï?d ÛÔîhy @  /o Mï?d @ÛG‚óš @  /p Nï?d €Ûgwñd @  /q Oï?d ÀÛ\$ÉŽ @  /r Pï?d žÛÁ`iO @  /s Qï?d @žÛôVhÛ @  /t Rï?d €žÛÔ£j% @  /u Sï?d ÀžÛ°Ó @  /v Tï?d ŸÛÂø_ì @  /w Uï?d @ŸÛü5úï @  /x Vï?d €ŸÛÜÀø @  /y WïuРÛ?d ÀŸÛ‚â @  /z Xï?d  ÛÊ ¤ @  /{Yï?d X Ûÿ9¡0 @  /|Zï?d ˜ Ûß̣Π@  /}[ï?d Ø Ûßï @  /~\ï?d ¡ÛÉ—– @  /]ï?d X¡Û¬÷ @  /€^ï?d ˜¡Û&Y  @  /_ï?d ءۀ½? @  /‚`ï?d ¢Ûù¿þ @  /ƒaï?d X¢Û(Ͼj @  /„bï?d ˜¢Û:¼” @  /…cï?d Ø¢ÛÎ)µ @  /†dï?d £Ûa‰] @  /‡eï?d X£Û ¬,^ @  /ˆfï?d ˜£ÛY.  @  /‰gï?d Ø£Û^Zt¦ @  /Šhï?d ¤ÛG‡© @  /‹iï?d X¤Ûr"†= @  /Œjï?d ˜¤ÛRׄà @  /kï?d ؤÛ”Ä=â @  /Žlï?d ¥ÛDŒ±  @  /mï?d X¥Û×à*é @  /nï?d ˜¥Û÷( @  /‘oï?d Ø¥ÛÌFý @  /’pï?d ¦ÛQ°< @  /“qï?d X¦Ûd4±¨ @  /”rï?d ˜¦ÛDÁ³V @  /•sï?d ئÛ‚Ò w @  /–tï?d §ÛRš†Ÿ @  /—uï?d X§ÛlW#œ @  /˜vï?d ˜§ÛL¢!b @  /™wï?d اÛ¡{d @  /šxï?d ¨Û&^÷y @  /›yï?d X¨Ûhöí @  /œzï?d ˜¨Û3ô @  /{ï?d بÛõŽM2 @  /ž|ï?d ©Û%ÆÁÚ @  /Ÿ}ï?d X©Û§¬}‰ @  / ~ï?d ˜©Û‡Yw @  /¡ï?d Ø©ÛÌ+? @  /¢€ï?d ªÛQoŸ @  /£ï?d XªÛdYž— @  /¤‚ï?d ˜ªÛD¬œi @  /¥ƒï?d تÛ‚¿%H @  /¦„ï?d «ÛR÷©  @  /§…ï?d X«Ûl: £ @  /¨†ï?d ˜«ÛLÏ] @  /©‡ï?d Ø«ÛÌT[ @  /ªˆï?d ¬Û ‚§T @  /«‰ï?d X¬Û>´¦À @  /¬Šï?d ˜¬ÛA¤> @  /­‹ï?d جÛØR @  /®Œï?d ­Û‘÷ @  /¯ï?d X­Û›v  @  /°Žï?d ˜­Û»ƒê @  /±ï?d Ø­Û€Ð0 @  /²ï?d ®Û”Á @  /³‘ï?d X®Û(¢‘U @  /´’ï?d ˜®ÛW“« @  /µ“ï?d Ø®ÛÎD*Š @  /¶”ï?d ¯Û ¦b @  /·•ï?d X¯Û Áa @  /¸–ï?d ˜¯Û4Ÿ @  /¹—ï?d دÛ^7[™ @  /º˜ï?d °Ûàéç+ @  /»™ï?d X°ÛÕßæ¿ @  /¼šï?d ˜°Ûõ*äA @  /½›ï?d ذÛ39]` @  /¾œï?d ±Ûãqш @  /¿ï?d X±ÛÏkI @  /Àžï?d ˜±Ûïéi· @  /ÁŸï?d رÛI h @  / ï?d ²ÛÔIÈ@ @  /áï?d X²ÛáÉÔ @  /Ä¢ï?d ˜²ÛÁŠË* @  /Å£ï?d زÛ™r  @  /Ƥï?d ³Û×Ñþã @  /Ç¥ï?d X³Ûé[à @  /Ȧï?d ˜³ÛÉéY @  /ɧï?d سÛ—ê @  /ʨï?d ´Ûޤð @  /Ë©ï?d X´Û»’ñƒ @  /̪ï?d ˜´Û›gó} @  /Í«ï?d Ø´Û]tJ\ @  /άï?d µÛ<Æ´ @  /Ï­ï?d XµÛP]W @  /Юï?d ˜µÛ>¥_© @  /ѯï?d صÛögC @  /Ò°ï?d ¶Û˜²Ç‚ @  /Ó±ï?d X¶Û­„Æ @  /Ô²ï?d ˜¶ÛqÄè @  /Õ³ï?d ضÛKb}É @  /Ö´ï?d ·Û›*ñ! @  /×µï?d X·Û¥çT" @  /ضï?d ˜·Û…VÜ @  /Ù·ï?d Ø·ÛÛ Ú @  /Ú¸ï?d ¸Ûïî€Ç @  /Û¹ï?d X¸ÛÚØS @  /ܺï?d ˜¸Ûú-ƒ­ @  /Ý»ï?d ظÛ<>:Œ @  /Þ¼ï?d ¹Ûìv¶d @  /ß½ï?d X¹Ûn 7 @  /à¾ï?d ˜¹ÛNéÉ @  /á¿ï?d عÛ]î @  /âÀï?d€ ºÛîEPÁ @  0Áï?d XºÛ:2| @  0Âï?d ˜ºÛÇ‚ @  0Ãï?d غÛYN @  0Äï?d »ÛÉÕÕ¦ @  0Åï?d X»Û9ª/ß @  0Æï?d ˜»Û_-! @  0Çï?d ػۉî(] @  0Èï?d ¼Û ÛR @  0 Éï?d X¼Û`ß!+ @  0 Êï?d ˜¼Û@*#Õ @  0 Ëï?d ؼÛCpa @  0 Ìï?d ½Û“8íñ @  0 Íï?d X½ÛcGˆ @  0Îï?d ˜½ÛC²v @  0Ïï?d ؽÛòL @  0Ðï?d ¾Û†¶ìÇ @  0Ñï?d X¾Ûvɾ @  0Òï?d ˜¾ÛV<@ @  0Óï?d ؾÛUfVŒ @  0Ôï?d ¿Û….Úd @  0Õï?d X¿ÛuQ  @  0Öï?d ˜¿ÛU¤"ã @uÐÀÛ  0×ï?d ؿ۸•Tã @  0€Øï?d 0ÀÛÜe± @  0€Ùï?d pÀÛ,ÿÈ @  0€Úï?d °ÀÛ ïý6 @  0€Ûï?d ðÀÛµ¿ú @  0€Üï?d 0ÁÛßý3 @  0€Ýï?d pÁÛ/‚Ék @  0€Þï?d °ÁÛwË• @  0€ßï?d ðÁÛÛ†Œ‰ @  0 €àï?d 0ÂÛFÂ,H @  0!€áï?d pÂÛ¶½Ö1 @  0"€âï?d °ÂÛ–HÔÏ @  0#€ãï?d ðÂÛ•– @  0$€äï?d 0ÃÛEZë @  0%€åï?d pÃÛµ%à’ @  0&€æï?d °ÃÛ•Ðâl @  0'€çï?d ðÃÛaç @  0(€èï?d 0ÄÛ/ @  0)€éï?d pÄÛìPîf @  0*€êï?d °ÄÛÌ¥ì˜ @  0+€ëï?d ðÄÛÏÿ®T @  0,€ìï?d 0ÅÛ·"¼ @  0-€íï?d pÅÛïÈØÅ @  0.€îï?d °ÅÛÏ=Ú; @  0/€ïï?d ðÅÛ—}ƒK @  00€ðï?d 0ÆÛ 9#Š @  01€ñï?d pÆÛúFÙó @  02€òï?d °ÆÛÚ³Û  @  03€óï?d ðÆÛÙé™Á @  04€ôï?d 0ÇÛ ¡) @  05€õï?d pÇÛùÞïP @  06€öï?d °ÇÛÙ+í® @  07€÷ï?d ðÇÛIšèÒ @  08€øï?d 0ÈÛ}edÏ @  09€ùï?d pÈÛž¶ @  0:€úï?d °ÈÛ­ïœH @  0;€ûï?d ðÈÛ®µÞ„ @  0<€üï?d 0ÉÛ~ýRl @  0=€ýï?d pÉÛŽ‚¨ @  0>€þï?d °ÉÛ®wªë @  0?€ÿï?d ðÉÛ¿õÙZ @  0@€ð?d 0ÊÛ"±y› @  0A€ð?d pÊÛÒ΃â @  0B€ð?d °ÊÛò; @  0C€ð?d ðÊÛñaÃÐ @  0D€ð?d 0ËÛ!)O8 @  0E€ð?d pËÛÑVµA @  0F€ð?d °ËÛñ£·¿ @  0G€ð?d ðËÛa²Ã @  0H€ð?d 0ÌÛx\AÌ @  0I€ ð?d pÌÛˆ#»µ @  0J€ ð?d °ÌÛ¨Ö¹K @  0K€ ð?d ðÌÛ«Œû‡ @  0L€ ð?d 0ÍÛ{Äwo @  0M€ ð?d pÍÛ‹» @  0N€ð?d °ÍÛ«Nè @  0O€ð?d ðÍÛóÖ˜ @  0P€ð?d 0ÎÛnJvY @  0Q€ð?d pÎÛž5Œ  @  0R€ð?d °ÎÛ¾ÀŽÞ @  0S€ð?d ðÎÛ½šÌ @  0T€ð?d 0ÏÛmÒ@ú @  0U€ð?d pÏÛ­ºƒ @  0V€ð?d °ÏÛ½X¸} @  0W€ð?d ðÏÛ-é½ @  0X€ð?d 0ÐÛ“7³ @  0Y€ð?d pÐÛcHûÊ @  0Z€ð?d °ÐÛC½ù4 @  0[€ð?d ðÐÛ@ç»ø @  0\€ð?d 0ÑÛ¯7 @  0]€ð?d pÑÛ`ÐÍi @  0^€ð?d °ÑÛ@%Ï— @  0_€ð?d ðÑÛ”Ôˆ‹ @  0`€ ð?d 0ÒÛ (J @  0a€!ð?d pÒÛùïÒ3 @  0b€"ð?d °ÒÛÙÐÍ @  0c€#ð?d ðÒÛÚ@’ @  0d€$ð?d 0ÓÛ é @  0e€%ð?d pÓÛúwä @  0f€&ð?d °ÓÛÚ‚æn @  0g€'ð?d ðÓÛJ3ã @  0h€(ð?d 0ÔÛS} @  0i€)ð?d pÔÛ£êd @  0j€*ð?d °ÔÛƒ÷èš @  0k€+ð?d ðÔÛ€­ªV @  0l€,ð?d 0ÕÛPå&¾ @  0m€-ð?d pÕÛ šÜÇ @  0n€.ð?d °ÕÛ€oÞ9 @  0o€/ð?d ðÕÛØ/‡I @  0p€0ð?d 0ÖÛEk'ˆ @  0q€1ð?d pÖÛµÝñ @  0r€2ð?d °ÖÛ•áß @  0s€3ð?d ðÖÛ–»Ã @  0t€4ð?d 0×ÛFó+ @  0u€5ð?d p×Û¶ŒëR @  0v€6ð?d °×Û–yé¬ @  0w€7ð?d ð×ÛÈìÐ @  0x€8ð?d 0ØÛ27`Í @  0y€9ð?d pØÛÂHš´ @  0z€:ð?d °ØÛ⽘J @  0{€;ð?d ðØÛáçÚ† @  0|€<ð?d 0ÙÛ1¯Vn @  0}€=ð?d pÙÛÁЬ @  0~€>ð?d °ÙÛá%®é @  0€?ð?d ðÙÛˆÕÊG @  0€€@ð?d 0ÚÛ‘j† @  0€Að?d pÚÛåîÿ @  0‚€Bð?d °ÚÛÅ’ @  0ƒ€Cð?d ðÚÛÆAÐÍ @  0„€Dð?d 0ÛÛ \% @  0…€Eð?d pÛÛæv¦\ @  0†€Fð?d °ÛÛƃ¤¢ @  0‡€Gð?d ðÛÛV2¡Þ @  0ˆ€Hð?d 0ÜÛO|RÑ @  0‰€Ið?d pÜÛ¿¨¨ @  0Š€Jð?d °ÜÛŸöªV @  0‹€Kð?d ðÜÛœ¬èš @  0Œ€Lð?d 0ÝÛLädr @  0€Mð?d pÝÛ¼›ž  @  0Ž€Nð?d °ÝÛœnœõ @  0€Oð?d ðÝÛÄ.Å… @  0€Pð?d 0ÞÛYjeD @  0‘€Qð?d pÞÛ©Ÿ= @  0’€Rð?d °ÞÛ‰àà @  0“€Sð?d ðÞÛŠºß @  0”€Tð?d 0ßÛZòSç @  0•€Uð?d pßÛª©ž @  0–€Vð?d uÐàÛ/°ßÛŠx«` @  0—€Wð?d ðßÛgIÝ` @  0˜Xð?d HàÛ~탖 @  0™Yð?d ˆàÛ,ölÏ @  0šZð?d ÈàÛ®g{ @  0›[ð?d áÛÿä¢ë @  0œ\ð?d HáÛ}uµ5 @  0]ð?d ˆáÛ/nZl @  0ž^ð?d ÈáÛ­ÿM² @  0Ÿ_ð?d âÛfÛ½± @  0 `ð?d HâÛäJªo @  0¡að?d ˆâÛ¶QE6 @  0¢bð?d ÈâÛ4ÀRè @  0£cð?d ãÛeC‹ @  0¤dð?d HãÛçÒœÌ @  0¥eð?d ˆãÛµÉs• @  0¦fð?d ÈãÛ7XdK @  0§gð?d äÛ<6…æ @  0¨hð?d HäÛ¾§’8 @  0©ið?d ˆäÛì¼}a @  0ªjð?d ÈäÛn-j¿ @  0«kð?d åÛ?®³E @  0¬lð?d HåÛ½?¤› @  0­mð?d ˆåÛï$K @  0®nð?d ÈåÛmµ\ @  0¯oð?d æÛ* ²s @  0°pð?d HæÛ¨±¥­ @  0±qð?d ˆæÛúªJô @  0²rð?d ÈæÛx;]* @  0³sð?d çÛ)¸„Ð @  0´tð?d HçÛ«)“ @  0µuð?d ˆçÛù2|W @  0¶vð?d ÈçÛ{£k‰ @  0·wð?d èÛ]|õ6 @  0¸xð?d HèÛßíâè @  0¹yð?d ˆèÛö ± @  0ºzð?d ÈèÛgo @  0»{ð?d éÛ^äÕ @  0¼|ð?d HéÛÜuÔK @  0½}ð?d ˆéÛŽn; @  0¾~ð?d ÈéÛ ÿ,Ì @  0¿ð?d êÛ„J›Þ @  0À€ð?d HêÛÛŒ @  0Áð?d ˆêÛTÀcY @  0‚ð?d ÈêÛÖQt‡ @  0Ãð?d ëÛ‡Ò­} @  0Ä„ð?d HëÛCº£ @  0Å…ð?d ˆëÛWXUú @  0Ɔð?d ÈëÛÕÉB$ @  0LJð?d ìÛÞ§£‰ @  0Ȉð?d HìÛ\6´W @  0ɉð?d ˆìÛ-[ @  0ÊŠð?d ÈìÛŒ¼LÐ @  0Ë‹ð?d íÛÝ?•* @  0ÌŒð?d HíÛ_®‚ô @  0Íð?d ˆíÛ µm­ @  0ÎŽð?d ÈíÛ$zs @  0Ïð?d îÛȱ” @  0Ðð?d HîÛJ ƒÂ @  0Ñ‘ð?d ˆîÛ;l› @  0Ò’ð?d ÈîÛšª{E @  0Ó“ð?d ïÛË)¢¿ @  0Ô”ð?d HïÛI¸µa @  0Õ•ð?d ˆïÛ£Z8 @  0Ö–ð?d ÈïÛ™2Mæ @  0×—ð?d ðÛ5Ìãö @  0ؘð?d HðÛ·]ô( @  0Ù™ð?d ˆðÛåFq @  0Úšð?d ÈðÛg× ¯ @  0Û›ð?d ñÛ6TÕU @  0Üœð?d HñÛ´Å‹ @  0Ýð?d ˆñÛæÞ-Ò @  0Þžð?d ÈñÛdO:  @  0ߟð?d òÛ¯kÊ @  0à ð?d HòÛ-úÝÑ @  0á¡ð?d ˆòÛá2ˆ @  0â¢ð?d€ ÈòÛ‰³9ð @  1£ð?d óÛ9q¨# @  1¤ð?d HóÛ»à¿ý @  1¥ð?d ˆóÛ,²«I @  1¦ð?d ÈóÛ®#¼— @  1§ð?d ôÛkÿ@ @  1¨ð?d HôÛénž @  1©ð?d ˆôÛuÇ¥½ @  1ªð?d ÈôÛ÷V²c @  1 «ð?d õÛcœt @  1 ¬ð?d HõÛá ‡ª @  1 ­ð?d ˆõÛv_“ @  1 ®ð?d ÈõÛô΄À @  1 ¯ð?d öÛÐH 5 @  1°ð?d HöÛRÙë @  1±ð?d ˆöÛcÑ’( @  1²ð?d ÈöÛá@…ö @  1³ð?d ÷ÛuЧá @  1´ð?d H÷Û÷°? @  1µð?d ˆ÷Û`I¤‹ @  1¶ð?d È÷ÛâØ³U @  1·ð?d øÛ µr @  1¸ð?d HøÛˆ$eN @  1¹ð?d ˆøÛÕm @  1ºð?d ÈøÛ–³ @  1»ð?d ùÛÖठ@  1¼ð?d HùÛ€G÷z @  1½ð?d ˆùÛãÎ @  1¾ð?d ÈùÛ•„ô @  1¿ð?d úÛÜåW( @  1Àð?d HúÛ^t@ö @  1Áð?d ˆúÛ~zé… @  1 Âð?d ÈúÛüëþ[ @  1!Ãð?d ûÛh!ÜL @  1"Äð?d HûÛê°Ë’ @  1#Åð?d ˆûÛ}âß& @  1$Æð?d ÈûÛÿsÈø @  1%Çð?d üÛ:¯v/ @  1&Èð?d HüÛ¸>añ @  1'Éð?d ˆüÛ$—ÑÒ @  1(Êð?d ÈüÛ¦Æ  @  1)Ëð?d ýÛ2Ìä @  1*Ìð?d HýÛ°]óÅ @  1+Íð?d ˆýÛ'çq @  1,Îð?d ÈýÛ¥žð¯ @  1-Ïð?d þÛZ @  1.Ðð?d HþÛ‰h„ @  1/Ñð?d ˆþÛ2æG @  10Òð?d ÈþÛ°ñ™ @  11Óð?d ÿÛ$ÚÓŽ @  12Ôð?d HÿÛ¦KÄP @  13Õð?d ˆÿÛ1Ðä @  14uÐÜÖð?d ÈÿÛŠOï @  15 ×ð?d ÜcD© @  16 Øð?d `ÜáŠSw @  17 Ùð?d  Ü}#ãT @  18 Úð?d àÜÿ²ôŠ @  19 Ûð?d ÜkxÖ @  1: Üð?d `ÜééÁC @  1; Ýð?d  Ü~»Õ÷ @  1< Þð?d àÜü*Â) @  1= ßð?d ÜEt @  1> àð?d `ÜÇŠcÞ @  1? áð?d  ÜIƒÌ? @  1@ âð?d àÜËÛá @  1A ãð?d Ü_Øùö @  1B äð?d `ÜÝIî( @  1C åð?d  ÜJúœ @  1D æð?d àÜÈŠíB @  1E çð?d Ü VS• @  1F èð?d `ÜÇDK @  1G éð?d  Ünôh @  1H êð?d àÜ‘ÿã¶ @  1I ëð?d Ü5Á¡ @  1J ìð?d `܇¤Ö @  1K íð?d  ÜöÂË @  1L îð?d àÜ’gÕ @  1M ïð?d ܶáZà @  1N ðð?d `Ü4pM> @  1O ñð?d  ÜxÃý @  1P òð?d à܇éÔ# @  1Q óð?d Ü#ö4 @  1R ôð?d `Ü‘²áê @  1S õð?d  Üàõ^ @  1T öð?d àÜ„q†@  1U ÷ð?d Ül#E @  1V øð?d `Üî4› @  1W ùð?d  Ür$„¸ @  1X úð?d àÜðµ“f @  1Y ûð?d Üd±q @  1Z üð?d ` Üæî¦¯ @  1[ ýð?d   Üq¼² @  1\ þð?d à Üó-¥Å @  1] ÿð?d ÜØíc @  1^ ñ?d ` ÜZ|½ @  1_ ñ?d   Üzr¹Î @  1` ñ?d à Üøã® @  1a ñ?d Ül)Œ @  1b ñ?d ` ÜÙ @  1c ñ?d   Üyêm @  1d ñ?d à Üû{˜³ @  1e ñ?d Ü>§&d @  1f ñ?d ` ܼ61º @  1g  ñ?d   Ü Ÿ™ @  1h  ñ?d à Ü¢–G @  1i  ñ?d Ü6Ä´P @  1j  ñ?d ` Ü´U£Ž @  1k  ñ?d   Ü#·: @  1l ñ?d à Ü¡– ä @  1m ñ?d Ü…/ @  1n ñ?d `Ü8Ï @  1o ñ?d  Ü6‰¶  @  1p ñ?d àÜ´¡Ò @  1q ñ?d Ü ÒƒÅ @  1r ñ?d `Ü¢C” @  1s ñ?d  Ü5€¯ @  1t ñ?d àÜ·€—q @  1u ñ?d ÜÕÌf @  1v ñ?d `ÜW]qÅ @  1w ñ?d  ÜËôÁæ @  1x ñ?d àÜIeÖ8 @  1y ñ?d Üݯô/ @  1z ñ?d `Ü_>ãñ @  1{ ñ?d  ÜÈl÷E @  1| ñ?d àÜJýà› @  1} ñ?d ÜóÌV² @  1~  ñ?d `Üq]Al @  1 !ñ?d  ÜÞ¼ @  1€ "ñ?d àÜž“Éb @  1 #ñ?d Ü Yëu @  1‚ $ñ?d `܈Èü« @  1ƒ %ñ?d  Üšè @  1„ &ñ?d àÜ ÿÁ @  1… 'ñ?d ÜX×A @  1† (ñ?d `ÜÚFVÈ @  1‡ )ñ?d  ÜFïæë @  1ˆ *ñ?d àÜÄ~ñ5 @  1‰ +ñ?d ÜP´Ó" @  1Š ,ñ?d `ÜÒ%Äü @  1‹ -ñ?d  ÜEwÐH @  1Œ .ñ?d àÜÇæÇ– @  1 /ñ?d Üã`Hc @  1Ž 0ñ?d `Üañ_½ @  1 1ñ?d  ÜPùÑ~ @  1 2ñ?d àÜÒhÆ  @  1‘ 3ñ?d ÜF¢ä· @  1’ 4ñ?d `ÜÄ3ói @  1“ 5ñ?d  ÜSaçÝ @  1” 6ñ?d àÜÑðð @  1• 7ñ?d Ü91Æ @  1– 8ñ?d `Ü» & @  1— 9ñ?d  Ü'¥–; @  1˜ :ñ?d àÜ¥4å @  1™ ;ñ?d Ü1þ£ò @  1š <ñ?d `ܳo´, @  1› =ñ?d  Ü$= ˜ @  1œ >ñ?d àܦ¬·F @  1 ?ñ?d ÜïÍ~ @  1ž @ñ?d `Üm\  @  1Ÿ Añ?d  ÜMRªÓ @  1  Bñ?d àÜÏý  @  1¡ Cñ?d Ü[ Ÿ @  1¢ Dñ?d `ÜÙ˜ˆÄ @  1£ Eñ?d  ÜNÊœp @  1¤ Fñ?d àÜÌ[‹® @  1¥ Gñ?d Ü ‡5y @  1¦ Hñ?d `Ü‹"§ @  1§ Iñ?d  Ü¿’„ @  1¨ Jñ?d àÜ•.…Z @  1© Kñ?d Üä§M @  1ª Lñ?d `܃u°“ @  1« Mñ?d  Ü'¤' @  1¬ Nñ?d àÜ–¶³ù @  1­ Oñ?d ܲ0<  @  1® Pñ?d `Ü0¡+Ò @  1¯ Qñ?d  Ü©¥ @  1° Rñ?d à܃8²Ï @  1± Sñ?d ÜòØ @  1² Tñ?d `Ü•c‡ @  1³ Uñ?d  Ü1“²uÐ Ü @  1´ Vñ?d àܹgX¹ @  1µWñ?d 8 ÜþË @  1¶Xñ?d x Ü–oÜÙ @  1·Yñ?d ¸ Ü Ælú @  1¸Zñ?d ø ܈W{$ @  1¹[ñ?d 8!ÜY3 @  1º\ñ?d x!Üž Ní @  1»]ñ?d ¸!Ü ^ZY @  1¼^ñ?d ø!Ü‹ÏM‡ @  1½_ñ?d 8"Ü2þû® @  1¾`ñ?d x"ܰoìp @  1¿añ?d ¸"Ü>fC‘ @  1Àbñ?d ø"ܼ÷TO @  1Ácñ?d 8#Ü(=vX @  1Âdñ?d x#ܪ¬a† @  1Ãeñ?d ¸#Ü=þu2 @  1Äfñ?d ø#Ü¿obì @  1Ågñ?d 8$Üz³Ü; @  1Æhñ?d x$Üø"Ëå @  1Çiñ?d ¸$Üd‹{Æ @  1Èjñ?d ø$Üæl @  1Ékñ?d 8%ÜrÐN @  1Êlñ?d x%ÜðAYÑ @  1Ëmñ?d ¸%ÜgMe @  1Ìnñ?d ø%Üå‚Z» @  1Íoñ?d 8&ÜÁÕN @  1Îpñ?d x&ÜC• @  1Ïqñ?d ¸&ÜrLS @  1Ðrñ?d ø&Üð [ @  1Ñsñ?d 8'ÜdÆyš @  1Òtñ?d x'ÜæWnD @  1Óuñ?d ¸'Üqzð @  1Ôvñ?d ø'Üó”m. @  1Õwñ?d 8(Üù¬ë @  1Öxñ?d x(Ü™h»5 @  1×yñ?d ¸(ÜÁ  @  1Øzñ?d ø(܇PÈ @  1Ù{ñ?d 8)Üš>ß @  1Ú|ñ?d x)Ü‘ ) @  1Û}ñ?d ¸)ÜY=µ @  1Ü~ñ?d ø)Ü„È*k @  1Ýñ?d 8*ÜÐoÝÁ @  1Þ€ñ?d x*ÜRþÊ @  1ßñ?d ¸*Ürðcl @  1à‚ñ?d ø*Üðat² @  1áƒñ?d 8+Üd«V¥ @  1â„ñ?d€ x+Ü'}¶{ @  2…ñ?d ¸+ÜQnêæ @  2†ñ?d ø+ÜÓÿý8 @  2‡ñ?d 8,ÜÓj¸ @  2ˆñ?d x,ÜQû¯Ü @  2‰ñ?d ¸,Üà@… @  2Šñ?d ø,ÜqW[ @  2‹ñ?d 8-ÜÛ *6 @  2Œñ?d x-ÜY˜=è @  2 ñ?d ¸-Ü ƒÒ± @  2 Žñ?d ø-܉Åo @  2 ñ?d 8.Ühݱw @  2 ñ?d x.ÜêL¦© @  2 ‘ñ?d ¸.ܸWIð @  2’ñ?d ø.Ü:Æ^. @  2“ñ?d 8/ÜÍ£ @  2”ñ?d x/ÜOŽ } @  2•ñ?d ¸/Ü•å$ @  2–ñ?d ø/ÜŸòú @  2—ñ?d 80Ü8ø} @  2˜ñ?d x0Üºï£ @  2™ñ?d ¸0Üè‹ú @  2šñ?d ø0Üj$ @  2›ñ?d 81Ü0bjI @  2œñ?d x1ܲó}— @  2ñ?d ¸1Üàè’Î @  2žñ?d ø1Üby… @  2Ÿñ?d 82ÜÈÔ @  2 ñ?d x2Üœß  @  2¡ñ?d ¸2Ü΋0S @  2¢ñ?d ø2ÜL' @  2£ñ?d 83ܪÅC° @  2 ¤ñ?d x3Ü(TTn @  2!¥ñ?d ¸3ÜzO»7 @  2"¦ñ?d ø3ÜøÞ¬é @  2#§ñ?d 84ÜøKéÓ @  2$¨ñ?d x4ÜzÚþ  @  2%©ñ?d ¸4Ü(ÁT @  2&ªñ?d ø4ܪPŠ @  2'«ñ?d 85Üð({ç @  2(¬ñ?d x5Ür¹l9 @  2)­ñ?d ¸5Ü ¢ƒ` @  2*®ñ?d ø5Ü¢3”¾ @  2+¯ñ?d 86ÜCüঠ@  2,°ñ?d x6ÜÁm÷x @  2-±ñ?d ¸6Ü“v! @  2.²ñ?d ø6Üçÿ @  2/³ñ?d 87Üæ>Lr @  20´ñ?d x7Üd¯[¬ @  21µñ?d ¸7Ü6´´õ @  22¶ñ?d ø7Ü´%£+ @  23·ñ?d 88Ü™™ @  24¸ñ?d x8ÜŽÝ @  25¹ñ?d ¸8ÜI‹a„ @  26ºñ?d ø8ÜËvZ @  27»ñ?d 89Ü‘b 7 @  28¼ñ?d x9Üóé @  29½ñ?d ¸9ÜAèó° @  2:¾ñ?d ø9ÜÃyän @  2;¿ñ?d 8:ÜOQ¼» @  2<Àñ?d x:ÜÍÀ«e @  2=Áñ?d ¸:ÜŸÛD< @  2>Âñ?d ø:ÜJSâ @  2?Ãñ?d 8;ÜU’1M @  2@Äñ?d x;Ü×&“ @  2AÅñ?d ¸;Ü…ÉÊ @  2BÆñ?d ø;Ü‰Þ @  2CÇñ?d 8<Ü›. @  2DÈñ?d x<Ü…Œð @  2EÉñ?d ¸<Ü×–c© @  2FÊñ?d ø<ÜUtw @  2GËñ?d 8=Ü  @  2HÌñ?d x=ÜîÄ @  2IÍñ?d ¸=Üßõñ @  2JÎñ?d ø=Ü]dæC @  2KÏñ?d 8>ܼ«’[ @  2LÐñ?d x>Ü>:…… @  2MÑñ?d ¸>Ül!jÜ @  2NÒñ?d ø>Üî°} @  2OÓñ?d 8?Üi> @  2PÔñ?d x?Ü›ø)Q @  2QÕñ?duÐ@Ü7 ¸?ÜÉãÆ @  2RÖñ?d ø?Ürµ  @  2S ×ñ?d P@ܨ  @  2T Øñ?d @܈7ô @  2U Ùñ?d Ð@ÜxHù @  2V Úñ?d Aܨue @  2W Ûñ?d PAÜ ¡“> @  2X Üñ?d AÜ€T‘À @  2Y Ýñ?d ÐAÜp+k¹ @  2Z Þñ?d BÜíoËx @  2[ ßñ?d PBÜŽÂ1£ @  2\ àñ?d BÜ®73] @  2] áñ?d ÐBÜ^HÉ$ @  2^ âñ?d CÜŽEÌ @  2_ ãñ?d PCÜ:ºÇ @  2` äñ?d CÜó¸9 @  2a åñ?d ÐCÜêŒB@ @  2b æñ?d DÜó±O @  2c çñ?d PDÜhˆ¤ @  2d èñ?d DÜH}Z @  2e éñ?d ÐDܸè# @  2f êñ?d EÜhJdË @  2g ëñ?d PEÜ`ë‚ @  2h ìñ?d EÜ@€n @  2i íñ?d ÐEܰaz @  2j îñ?d FÜ-%ÚÖ @  2k ïñ?d PFÜÓ?Ñ @  2l ðñ?d FÜóÊ/ @  2m ññ?d ÐFܵáV @  2n òñ?d GÜÓým¾ @  2o óñ?d PGÜvýµ @  2p ôñ?d GÜV·û @  2q õñ?d ÐGܦwM‚ @  2r öñ?d HÜ’ˆÁŸ @  2s ÷ñ?d PHÜ Â`t @  2t øñ?d HÜ)7bŠ @  2u ùñ?d ÐHÜÙH˜ó @  2v úñ?d IÜ  @  2w ûñ?d PIÜ¡ò@ @  2x üñ?d IÜ!Tð¾ @  2y ýñ?d ÐIÜÑ+ Ç @  2z þñ?d JÜLoª @  2{ ÿñ?d PJÜqw @  2| ò?d JÜ/äs‰ @  2} ò?d ÐJÜß›‰ð @  2~ ò?d KÜÓ @  2 ò?d PKÜö„̰ @  2€ ò?d KÜÖqÎN @  2 ò?d ÐKÜ&47 @  2‚ ò?d LÜ?@Ç8 @  2ƒ ò?d PLܤ fÓ @  2„ ò?d LÜ„ÿd- @  2…  ò?d ÐLÜt€žT @  2†  ò?d Mܤȼ @  2‡  ò?d PMܬiôç @  2ˆ  ò?d MÜŒœö @  2‰  ò?d ÐMÜ|ã ` @  2Š ò?d NÜ᧬¡ @  2‹ ò?d PNܽo¦ @  2Œ ò?d NÜ?HmX @  2 ò?d ÐNÜÏ7—! @  2Ž ò?d OÜÉ @  2 ò?d POܺÃr @  2 ò?d OÜšŠÁŒ @  2‘ ò?d ÐOÜjõ;õ @  2’ ò?d PÜÔ+‡G @  2“ ò?d PPÜOa&¬ @  2” ò?d PÜo”$R @  2• ò?d ÐPÜŸëÞ+ @  2– ò?d QÜO£Rà @  2— ò?d PQÜG´˜ @  2˜ ò?d QÜg÷¶f @  2™ ò?d ÐQÜ—ˆL @  2š ò?d RÜ ÌìÞ @  2› ò?d PRÜia @  2œ  ò?d RÜI”û @  2 !ò?d ÐRܹëî‚ @  2ž "ò?d SÜi£bj @  2Ÿ #ò?d PSÜÝ¥a @  2  $ò?d SÜýPŸŸ @  2¡ %ò?d ÐSÜ /eæ @  2¢ &ò?d TÜa–é @  2£ 'ò?d PTÜ+7 @  2¤ (ò?d TܯÞ5ü @  2¥ )ò?d ÐTÜ_¡Ï… @  2¦ *ò?d UÜéCm @  2§ +ò?d PU܇H¥6 @  2¨ ,ò?d Uܧ½§È @  2© -ò?d ÐUÜWÂ]± @  2ª .ò?d VÜʆýp @  2« /ò?d PVÜ4œ>w @  2¬ 0ò?d VÜi<‰ @  2­ 1ò?d ÐVÜäÆð @  2® 2ò?d WÜ4^J @  2¯ 3ò?d PWÜ‘^’£ @  2° 4ò?d Wܱ«] @  2± 5ò?d ÐWÜAÔj$ @  2² 6ò?d XÜu+æ9 @  2³ 7ò?d PXÜîaGÒ @  2´ 8ò?d XÜΔE, @  2µ 9ò?d ÐXÜ>ë¿U @  2¶ :ò?d YÜî£3½ @  2· ;ò?d PYÜæÕæ @  2¸ <ò?d YÜÆ÷× @  2¹ =ò?d ÐYÜ6ˆ-a @  2º >ò?d Zܫ̠ @  2» ?ò?d PZÜ81bj @  2¼ @ò?d ZÜÄ`” @  2½ Aò?d ÐZÜ軚í @  2¾ Bò?d [Ü8ó @  2¿ Cò?d P[Ü"òïœ @  2À Dò?d [Üíb @  2Á Eò?d Ð[Üòx @  2 Fò?d \Üë6ä @  2à Gò?d P\Üp|Eÿ @  2Ä Hò?d \ÜP‰G @  2Å Iò?d Ð\Ü ö½x @  2Æ Jò?d ]Üp¾1 @  2Ç Kò?d P]Üx×Ë @  2È Lò?d ]ÜXêÕ5 @  2É Mò?d Ð]ܨ•/L @  2Ê Nò?d ^Ü5Ñ @  2Ë Oò?d P^ÜËËLŠ @  2Ì Pò?d ^Üë>Nt @  2Í Qò?d Ð^ÜA´  @  2Î Rò?d _ÜË 8å @  2Ï Sò?d P_Ün à^ @  2Ð Tò?d _ÜNüâ  @  2uÐ`ÜÑ Uò?d Ð_ܾƒÙ @  2Ò Vò?d (`Ü{­A @  2Ó Wò?d h`Ü›1 ª @  2Ô Xò?d ¨`Ü»ÄT @  2Õ Yò?d è`ÜK»ô- @  2Ö Zò?d (aÜ›óxÅ @  2× [ò?d haÜ“Ržž @  2Ø \ò?d ¨aܳ§œ` @  2Ù ]ò?d èaÜCØf @  2Ú ^ò?d (bÜÞœÆØ @  2Û _ò?d hbܽ1< @  2Ü `ò?d ¨bÜÄ>ý @  2Ý aò?d èbÜm»Ä„ @  2Þ bò?d (cܽóHl @  2ß cò?d hcÜ õ·g @  2à dò?d ¨cÜ)µ™ @  2á eò?d ècÜÙOà @  2â fò?d€ (dÜ´ò I @  3 gò?d hdÜÎùI‹ @  3 hò?d ¨dÜî Ku @  3 iò?d èdÜÛ:Já @  3 jò?d (eÜ rÆ  @  3 kò?d heÜÍa( @  3 lò?d ¨eÜí”}Ö @  3 mò?d èeÜÓYØÕ @  3 nò?d (fÜNx @  3 oò?d hfÜuN@þ @  3 pò?d ¨fÜU»B @  3 qò?d èfÜ`C” @  3 rò?d (gܰÅÏ| @  3 sò?d hgÜvÖv] @  3 tò?d ¨gÜV#t£ @  3 uò?d ègÜÅOï@ @  3 vò?d (hÜñ°c] @  3 wò?d hhܯ³9[ @  3 xò?d ¨hÜF;¥ @  3 yò?d èhܺp:1 @  3 zò?d (iÜj8¶Ù @  3 {ò?d hiܬ+ø @  3 |ò?d ¨iÜŒÞ  @  3 }ò?d èiܲ¨ @  3 ~ò?d (jÜ/WÄ @  3 ò?d hjÜd%Hq @  3 €ò?d ¨jÜDÐJ @  3 ò?d èjÜqæK @  3 ‚ò?d (kÜ¡®Çó @  3 ƒò?d hkÜg½~Ò @  3 „ò?d ¨kÜGH|, @  3 …ò?d èkÜÅ"À @  3 †ò?d (lÜÜl3p @  3! ‡ò?d hlÜ‚oiv @  3" ˆò?d ¨lÜ¢škˆ @  3# ‰ò?d èlÜ—¬j @  3$ Šò?d (mÜGäæô @  3% ‹ò?d hmÜ÷_Õ @  3& Œò?d ¨mÜ¡]+ @  3' ò?d èmÜŸÏø( @  3( Žò?d (nÜ‹Xé @  3) ò?d hnÜ9Ø` @  3* ò?d ¨nÜ-bý @  3+ ‘ò?d ènÜ,ci @  3, ’ò?d (oÜüSï @  3- “ò?d hoÜ:@V  @  3. ”ò?d ¨oܵT^ @  3/ •ò?d èo܉ÙϽ @  30 –ò?d (pÜ7s @  31 —ò?d hpÜi)  @  32 ˜ò?d ¨pÜIñ+÷ @  33 ™ò?d èpÜ|Ç*c @  34 šò?d (qܬ¦‹ @  35 ›ò?d hqÜjœª @  36 œò?d ¨qÜJiT @  37 ò?d èqÜt¤¸W @  38 žò?d (rÜéà– @  39 Ÿò?d hrÜO  @  3:  ò?d ¨rÜoñ^ @  3; ¡ò?d èrÜZÇÊ @  3< ¢ò?d (sÜŠ–" @  3= £ò?d hsÜLœ/ @  3> ¤ò?d ¨sÜli-ý @  3? ¥ò?d èsÜ@—< @  3@ ¦ò?d (tÜYJd3 @  3A §ò?d htÜI>5 @  3B ¨ò?d ¨tÜ'¼<Ë @  3C ©ò?d ètÜŠ=_ @  3D ªò?d (uܱ· @  3E «ò?d huÜÑ– @  3F ¬ò?d ¨uÜ$$ h @  3G ­ò?d èuÜé¯k @  3H ®ò?d (v܇­ª @  3I ¯ò?d hvܼþ7@ @  3J °ò?d ¨vÜœ 5¾ @  3K ±ò?d èvÜ©=4* @  3L ²ò?d (wÜyu¸Â @  3M ³ò?d hwÜ¿fã @  3N ´ò?d ¨wÜŸ“ @  3O µò?d èwÜ ÿ˜þ @  3P ¶ò?d (xÜ8ã @  3Q ·ò?d hxÜfNå @  3R ¸ò?d ¨xÜFöL @  3S ¹ò?d èxÜsÀM @  3T ºò?d (yÜ£ˆÁg @  3U »ò?d hyÜe›xF @  3V ¼ò?d ¨yÜEnz¸ @  3W ½ò?d èyÜ{£ß» @  3X ¾ò?d (zÜæçz @  3Y ¿ò?d hzܰSk] @  3Z Àò?d ¨zܦi£ @  3[ Áò?d èzÜ¥h7 @  3\ Âò?d ({ÜuØäß @  3] Ãò?d h{ܳË]þ @  3^ Äò?d ¨{Ü“>_ @  3_ Åò?d è{ÜTãS @  3` Æò?d (|Ü\ @  3a Çò?d h|ÜVJZ @  3b Èò?d ¨|ÜvìH¤ @  3c Éò?d è|ÜCÚI0 @  3d Êò?d (}Ü“’ÅØ @  3e Ëò?d h}ÜU|ù @  3f Ìò?d ¨}Üut~ @  3g Íò?d è}ÜK¹Û @  3h Îò?d (~ÜÖý{Å @  3i Ïò?d h~Üí®C/ @  3j Ðò?d ¨~ÜÍ[AÑ @  3k Ñò?d è~Üøm@E @  3l Òò?d (Ü(%Ì­ @  3m Óò?d hÜî6uŒ @  3n Ôò?d ¨ÜuЀÜ'ÎÃwr @  3o Õò?d èÜ]¯ì‘ @  3p Öò?d @€ÜÈ5å @  3q×ò?d €€Ü4zà @  3rØò?d À€Ü¶‰m @  3sÙò?d ÜÑf÷¿ @  3tÚò?d @ÜS÷àa @  3uÛò?d €Ü7€L` @  3vÜò?d Àܵ[¾ @  3wÝò?d ‚Ü” I¢ @  3xÞò?d @‚ܘ^| @  3yßò?d €‚ÜJj @  3zàò?d À‚܉]´ @  3{áò?d ƒÜ÷fÇ @  3|âò?d @ƒÜu÷ÐÈ @  3}ãò?d €ƒÜ€|É @  3~äò?d ÀƒÜ“k @  3åò?d „ÜÇõ6 @  3€æò?d @„ÜEdè @  3çò?d €„ܹ]Î @  3‚èò?d À„Ü;’J @  3ƒéò?d …Ü\}в @  3„êò?d @…ÜÞìÇl @  3…ëò?d €…ܺ›km @  3†ìò?d À…Ü8 |³ @  3‡íò?d †Ün¯ @  3ˆîò?d @†Ü›ƒyq @  3‰ïò?d €†Ü´T» @  3Šðò?d À†Ü€%Ce @  3‹ñò?d ‡ÜçÊÙÇ @  3Œòò?d @‡Üe[Î @  3óò?d €‡Ü,b @  3Žôò?d À‡Üƒ½uÆ @  3õò?d ˆÜ¦¿uæ @  3öò?d @ˆÜ$.b8 @  3‘÷ò?d €ˆÜØI- @  3’øò?d ÀˆÜZØ:À @  3“ùò?d ‰Ü=7 b @  3”úò?d @‰Ü¿¦·¼ @  3•ûò?d €‰ÜÛѽ @  3–üò?d À‰ÜY@ c @  3—ýò?d ŠÜxX @  3˜þò?d @ŠÜúÉ ¡ @  3™ÿò?d €ŠÜl¸ 8 @  3šó?d ÀŠÜî)æ @  3›ó?d ‹Ü‰Æ„D @  3œó?d @‹Ü W“š @  3ó?d €‹Üo ?› @  3žó?d À‹Üí±(E @  3Ÿó?d ŒÜôpÇ @  3 ó?d @ŒÜv•g @  3¡ó?d €ŒÜŠò(? @  3¢ó?d ÀŒÜc?á @  3£ ó?d ÜoŒ¥C @  3¤ ó?d @Üí² @  3¥ ó?d €Ü‰jœ @  3¦ ó?d ÀÜ û B @  3§ ó?d ŽÜ*ã^ @  3¨ó?d @ŽÜ¨r € @  3©ó?d €ŽÜ1E!J @  3ªó?d ÀŽÜ³Ô6” @  3«ó?d ÜÔ;¬6 @  3¬ó?d @ÜVª»è @  3­ó?d €Ü2Ýé @  3®ó?d ÀܰL7 @  3¯ó?d Üo0¸ @  3°ó?d @Üþ'f @  3±ó?d €Üa™h@ @  3²ó?d ÀÜãž @  3³ó?d ‘Ü„çå< @  3´ó?d @‘Üvòâ @  3µó?d €‘Üb^ã @  3¶ó?d À‘ÜàI= @  3·ó?d ’ÜÁˆ[! @  3¸ó?d @’ÜCLÿ @  3¹ó?d €’ÜG™Xé @  3º ó?d À’ÜÅO7 @  3»!ó?d “Ü¢çÕ• @  3¼"ó?d @“Ü vÂK @  3½#ó?d €“ÜDnJ @  3¾$ó?d À“ÜÆy” @  3¿%ó?d ”Üq"'„ @  3À&ó?d @”Üó³0Z @  3Á'ó?d €”ÜÔ| @  3Â(ó?d À”ÜEh¢ @  3Ã)ó?d •Üêªò @  3Ä*ó?d @•Üh;åÞ @  3Å+ó?d €•Ü LIß @  3Æ,ó?d À•ÜŽÝ^ @  3Ç-ó?d –ܯÅL @  3È.ó?d @–Ü-T[à @  3É/ó?d €–Ü´cv  @  3Ê0ó?d À–Ü6òa× @  3Ë1ó?d —ÜQûu @  3Ì2ó?d @—ÜÓŒì« @  3Í3ó?d €—Ü·û@ª @  3Î4ó?d À—Ü5jWt @  3Ï5ó?d ˜ÜhWT @  3Ð6ó?d @˜Ü’ù@Š @  3Ñ7ó?d €˜Ünž¬ @  3Ò8ó?d À˜Üìr @  3Ó9ó?d ™Ü‹à‚Ð @  3Ô:ó?d @™Ü q• @  3Õ;ó?d €™Üm9 @  3Ö<ó?d À™Üï—.Ñ @  3×=ó?d šÜÎ<Í @  3Ø>ó?d @šÜL+ @  3Ù?ó?d €šÜ¸Î* @  3Ú@ó?d ÀšÜ:_=Ê @  3ÛAó?d ›Ü]°§h @  3ÜBó?d @›Üß!°¶ @  3ÝCó?d €›Ü»V· @  3ÞDó?d À›Ü9Ç i @  3ßEó?d œÜ rSë @  3àFó?d @œÜ¢ãD5 @  3áGó?d €œÜ^„  @  3âHó?d€ ÀœÜZC´t @  4Ió?d ÜÜífÿ @  4Jó?d @Ü^|q! @  4Kó?d €ÜÿB&Í @  4Ló?d ÀÜ}Ó1 @  4Mó?d žÜ’y|u @  4Nó?d @žÜèk« @  4Oó?d €žÜGm @  4Pó?d ÀžÜÅüÅ @  4 Qó?d ŸÜgZoŠ @  4 Ró?d @ŸÜåËxT @  4 Só?d €ŸÜDõ/¸ @  4 TóuРÜ?d ÀŸÜÆd8f @  4 Uó?d  Ü(ìr @  4Vó?d X Ü…¹û¬ @  4Wó?d ˜ ÜÍÕ @  4Xó?d ؠܘ\ÂÎ @  4Yó?d ¡Ü:ú£ @  4Zó?d X¡Ü¸k´_ @  4[ó?d ˜¡ÜUã³ @  4\ó?d ءܛÄôm @  4]ó?d ¢Ütn¹  @  4^ó?d X¢Üöÿ®Õ @  4_ó?d ˜¢Ü<Íå¹ @  4`ó?d آܾ\òg @  4aó?d £Üú“( @  4bó?d X£Üžk„ö @  4có?d ˜£Ü?UÓ @  4dó?d أܽÄÄÄ @  4eó?d ¤ÜÖdÚl @  4fó?d X¤ÜTõͲ @  4gó?d ˜¤Üڇľ @  4 hó?d ؤÜXÓ` @  4!ió?d ¥Üú°²/ @  4"jó?d X¥Üx!¥ñ @  4#kó?d ˜¥ÜÙò @  4$ló?d Ø¥Ü[Žåà @  4%mó?d ¦Ü´$¨¥ @  4&nó?d X¦Ü6µ¿{ @  4'oó?d ˜¦Üa0ÍË @  4(pó?d ئÜã¡Ú @  4)qó?d §ÜA»Z @  4*ró?d X§ÜÖ¬„ @  4+só?d ˜§Üb¨ûh @  4,tó?d اÜà9ì¶ @  4-uó?d ¨Ü¦(  @  4.vó?d X¨Ü$¹šÒ @  4/wó?d ˜¨Ü»Í´n @  40xó?d بÜ9\£° @  41yó?d ©Ü›úÂÿ @  42zó?d X©ÜkÕ! @  43{ó?d ˜©Ü¸U‚Í @  44|ó?d Ø©Ü:Ä• @  45}ó?d ªÜÕnØu @  46~ó?d XªÜWÿÏ« @  47ó?d ˜ªÜp[ÅD @  48€ó?d تÜòÊÒš @  49ó?d «ÜPl³Õ @  4:‚ó?d X«ÜÒý¤  @  4;ƒó?d ˜«ÜsÃóç @  4<„ó?d Ø«ÜñRä9 @  4=…ó?d ¬Üšòú‘ @  4>†ó?d X¬ÜcíO @  4?‡ó?d ˜¬Ü8âÑ @  4@ˆó?d جܺ‡õ @  4A‰ó?d ­Ü!”@ @  4BŠó?d X­Üš°ƒž @  4C‹ó?d ˜­Ü;ŽÔr @  4DŒó?d حܹì @  4Eó?d ®ÜVµŽÊ @  4FŽó?d X®ÜÔ$™ @  4Gó?d ˜®Üƒ¡ë¤ @  4Hó?d Ø®Ü0üz @  4I‘ó?d ¯Ü£–5 @  4J’ó?d X¯Ü!Šë @  4K“ó?d ˜¯Ü€9Ý @  4L”ó?d دܨÊÙ @  4M•ó?d °ÜΘ›Ì @  4N–ó?d X°ÜL Œ @  4O—ó?d ˜°ÜÓ}¢® @  4P˜ó?d ذÜQìµp @  4Q™ó?d ±ÜóJÔ? @  4Ršó?d X±ÜqÛÃá @  4S›ó?d ˜±ÜÐå”  @  4Tœó?d رÜRtƒÓ @  4Uó?d ²Ü½Þε @  4Vžó?d X²Ü?OÙk @  4WŸó?d ˜²Üõ}’ @  4X ó?d زÜwì…Ù @  4Y¡ó?d ³ÜÕJä– @  4Z¢ó?d X³ÜWÛóH @  4[£ó?d ˜³Üö夤 @  4\¤ó?d سÜtt³z @  4]¥ó?d ´ÜÔ­Ò @  4^¦ó?d X´ÜEº  @  4_§ó?d ˜´Ü7³ @  4`¨ó?d Ø´Ü‘¦¤Þ @  4a©ó?d µÜ3Å‘ @  4bªó?d XµÜ±‘ÒO @  4c«ó?d ˜µÜ¯…£ @  4d¬ó?d صÜ’>’} @  4e­ó?d ¶Ü}”ß @  4f®ó?d X¶ÜÿÈÅ @  4g¯ó?d ˜¶Ü¨€ºu @  4h°ó?d ضÜ*­« @  4i±ó?d ·Üˆ·Ìä @  4j²ó?d X·Ü &Û: @  4k³ó?d ˜·Ü«ŒÖ @  4l´ó?d Ø·Ü)‰› @  4mµó?d ¸Üo˜ú² @  4n¶ó?d X¸Üí íl @  4o·ó?d ˜¸Ür}ÃÐ @  4p¸ó?d ظÜðìÔ @  4q¹ó?d ¹ÜRJµA @  4rºó?d X¹ÜÐÛ¢Ÿ @  4s»ó?d ˜¹Üqåõs @  4t¼ó?d عÜótâ­ @  4u½ó?d ºÜÞ¯Ë @  4v¾ó?d XºÜžO¸ @  4w¿ó?d ˜ºÜ¤-æh @  4xÀó?d غÜ&¼ñ¶ @  4yÁó?d »Ü„ù @  4zÂó?d X»Ü‹‡' @  4{Ãó?d ˜»Ü§µÐË @  4|Äó?d Ø»Ü%$Ç @  4}Åó?d ¼ÜN„Ù½ @  4~Æó?d X¼ÜÌÎc @  4Çó?d ˜¼Ü6ñÌ @  4€Èó?d ؼܧæ @  4Éó?d ½Ü/‡] @  4‚Êó?d X½Ü­ƒ @  4ƒËó?d ˜½Ü ®Ço @  4„Ìó?d ؽÜŽ?б @  4…Íó?d ¾Üa•× @  4†Îó?d X¾Ü㊠ @  4‡Ïó?d ˜¾Ü´ø¹ @  4ˆÐó?d ؾÜ6ïg @  4‰Ñó?d ¿Ü”¶Ž( @  4ŠÒó?d X¿Ü'™ö @  4‹Óó?d ˜¿Ü·Î @uÐÀÜ  4ŒÔó?d Ø¿ÜHª¸ @  4€Õó?d 0ÀÜ^M @  4Ž€Öó?d pÀÜ܇“ @  4€×ó?d °ÀÜCó// @  4€Øó?d ðÀÜÁb8ñ @  4‘€Ùó?d 0ÁÜcÄY¾ @  4’€Úó?d pÁÜáUN` @  4“€Ûó?d °ÁÜ@kŒ @  4”€Üó?d ðÁÜÂúR @  4•€Ýó?d 0ÂÜ-PC4 @  4–€Þó?d pÂܯÁTê @  4—€ßó?d °ÂÜeó† @  4˜€àó?d ðÂÜçbX @  4™€áó?d 0ÃÜEÄi @  4š€âó?d pÃÜÇU~É @  4›€ãó?d °ÃÜfk)% @  4œ€äó?d ðÃÜäú>û @  4€åó?d 0ÄÜZ S @  4ž€æó?d pÄÜ Ë7 @  4Ÿ€çó?d °Ä܃¹> @  4 €èó?d ðÄÜ()_ @  4¡€éó?d 0ÅÜ£ŽH @  4¢€êó?d pÅÜ!_Î @  4£€ëó?d °ÅÜ€!" @  4¤€ìó?d ðÅܰü @  4¥€íó?d 0ÆÜíRš @  4¦€îó?d pÆÜo‹ED @  4§€ïó?d °ÆÜ87ô @  4¨€ðó?d ðÆÜºŸ * @  4©€ñó?d 0ÇÜ9Ae @  4ª€òó?d pÇÜš¨V» @  4«€óó?d °ÇÜ;–W @  4¬€ôó?d ðÇܹ‰ @  4­€õó?d 0ÈÜÿw3 @  4®€öó?d pÈÜ}‡`í @  4¯€÷ó?d °ÈÜâóNQ @  4°€øó?d ðÈÜ`bY @  4±€ùó?d 0ÉÜÂÄ8À @  4²€úó?d pÉÜ@U/ @  4³€ûó?d °ÉÜákxò @  4´€üó?d ðÉÜcúo, @  4µ€ýó?d 0ÊÜŒP"J @  4¶€þó?d pÊÜÁ5” @  4·€ÿó?d °ÊÜj Uá @  4¸€ô?d ðÊÜèšB? @  4¹€ô?d 0ËÜJ<#p @  4º€ô?d pËÜÈ­4® @  4»€ô?d °ËÜi“cB @  4¼€ô?d ðËÜëtœ @  4½€ô?d 0ÌÜ€¢j4 @  4¾€ô?d pÌÜ3}ê @  4¿€ô?d °ÌÜ"Frt @  4À€ô?d ðÌÜ ×eª @  4Á€ ô?d 0ÍÜqå @  4€ ô?d pÍÜ€à; @  4À ô?d °ÍÜ!ÞD× @  4Ä€ ô?d ðÍÜ£OS  @  4Å€ ô?d 0ÎÜLåo @  4Æ€ô?d pÎÜÎt ± @  4Ç€ô?d °ÎÜ™ñ{ @  4È€ô?d ðÎÜ`lß @  4É€ô?d 0ÏÜ¹Æ  @  4Ê€ô?d pÏÜ;WN @  4Ë€ô?d °ÏÜšiM¢ @  4Ì€ô?d ðÏÜøZ| @  4Í€ô?d 0ÐÜÔÈ i @  4΀ô?d pÐÜVY· @  4Ï€ô?d °ÐÜÉ-2  @  4Ѐô?d ðÐÜK¼%Õ @  4Ñ€ô?d 0ÑÜéDš @  4Ò€ô?d pÑÜk‹SD @  4Ó€ô?d °ÑÜʵ¨ @  4Ô€ô?d ðÑÜH$v @  4Õ€ô?d 0ÒܧŽ^ @  4Ö€ô?d pÒÜ%IÎ @  4×€ô?d °ÒÜï-¢ @  4Ø€ ô?d ðÒÜm¼| @  4Ù€!ô?d 0ÓÜÏt3 @  4Ú€"ô?d pÓÜM‹cí @  4Û€#ô?d °ÓÜìµ4 @  4Ü€$ô?d ðÓÜn$#ß @  4Ý€%ô?d 0ÔÜ„=w @  4Þ€&ô?d pÔ܇*© @  4߀'ô?d °ÔÜ g#¥ @  4à€(ô?d ðÔÜ‹ö4{ @  4á€)ô?d 0ÕÜ)PU4 @  4â€*ô?d€ pÕÜß^L @  5€+ô?d °ÕÜŸ}A‰ @  5€,ô?d ðÕÜìVW @  5€-ô?d 0ÖÜ7àÜ @  5€.ô?d pÖܵž÷ @  5€/ô?d °ÖÜ,©ÚÈ @  5€0ô?d ðÖÜ®8Í @  5€1ô?d 0×ÜÂ,ó# @  5€2ô?d p×Ü@½äý @  5 €3ô?d °×Ü$ÊHü @  5 €4ô?d ð×ܦ[_" @  5 €5ô?d 0ØÜ%Åu @  5 €6ô?d pØÜ§’Ò« @  5 €7ô?d °ØÜ[õ @  5€8ô?d ðØÜÙdŠS @  5€9ô?d 0ÙÜÑŠ† @  5€:ô?d pÙÜš@X @  5€;ô?d °ÙÜþ71Y @  5€<ô?d ðÙÜ|¦&‡ @  5€=ô?d 0ÚÜVE  @  5€>ô?d pÚÜÔÔ‡Ò @  5€?ô?d °ÚÜ †Õ @  5€@ô?d ðÚÜ¢•‘  @  5€Aô?d 0ÛÜί> @  5€Bô?d pÛÜL¸à @  5€Cô?d °ÛÜ(gá @  5€Dô?d ðÛܪö? @  5€Eô?d 0ÜÜæz @  5€Fô?d pÜ܆Žñ¤ @  5€Gô?d °ÜÜz龂 @  5€Hô?d ðÜÜøx©\ @  5€Iô?d 0ÝÜ(ËŽ9 @  5 €Jô?d pÝܪZ™ç @  5!€Kô?d °ÝÜÎ-5æ @  5"€Lô?d ðÝÜL¼"8 @  5#€Mô?d 0ÞÜf_”³ @  5$€Nô?d pÞÜä΃m @  5%€Oô?d °ÞÜ}ù®§ @  5&€Pô?d ðÞÜÿh¹y @  5'€Qô?d 0ßÜ“|‡L @  5(€Rô?d pßÜí’ @  5)€Sô?d uÐàÜ/°ßÜuš<“ @  5*€Tô?d ðßÜŠ‹X1 @  5+Uô?d HàÜ$ˆ @  5,Vô?d ˆàÜ}s @  5-Wô?d ÈàÜZ~Hu @  5.Xô?d áÜŠ6Ä @  5/Yô?d HáÜZ_~ @  50Zô?d ˆáÜ9¯]€ @  51[ô?d ÈáÜÿ¼ä¡ @  52\ô?d âÜbøD` @  53]ô?d HâÜWÎEô @  54^ô?d ˆâÜw;G  @  55_ô?d ÈâÜÑßF< @  56`ô?d ãÜ—ÊÔ @  57aô?d HãÜ?Zo× @  58bô?d ˆãܯm) @  59cô?d ÈãÜÙ¼Ô @  5:dô?d äÜÀò' @  5;eô?d HäÜõÄ&“ @  5<fô?d ˆäÜÕ1$m @  5=gô?d ÈäÜ‹2~k @  5>hô?d åÜ[zòƒ @  5?iô?d HåÜwHB @  5@jô?d ˆåÜWâJ¼ @  5Akô?d ÈåÜ‘ñó @  5Blô?d æÜ µS\ @  5Cmô?d HæÜ9ƒRÈ @  5Dnô?d ˆæÜvP6 @  5Eoô?d ÈæÜ"%hÜ @  5Fpô?d çÜòmä4 @  5Gqô?d HçÜÌ A7 @  5Hrô?d ˆçÜìUCÉ @  5Isô?d ÈçÜ*Fúè @  5Jtô?d èܹvõ @  5Kuô?d HèÜ+wa @  5Lvô?d ˆèÜ zuŸ @  5Mwô?d ÈèÜUy/™ @  5Nxô?d éÜ…1£q @  5Oyô?d HéÜ]8’ @  5Pzô?d ˆéÜ6¨:l @  5Q{ô?d ÈéÜð»ƒM @  5R|ô?d êÜmÿ#Œ @  5S}ô?d HêÜXÉ" @  5T~ô?d ˆêÜx< æ @  5Uô?d ÈêÜ3N`S @  5V€ô?d ëÜãì» @  5Wô?d HëÜÝËI¸ @  5X‚ô?d ˆëÜý>KF @  5Yƒô?d ÈëÜ;-òg @  5Z„ô?d ìÜ"ch @  5[…ô?d HìÜUü @  5\†ô?d ˆìÜ7  @  5]‡ô?d ÈìÜi£X @  5^ˆô?d íܹëÔì @  5_‰ô?d HíÜ;h¿ @  5`Šô?d ˆíÜtjA @  5a‹ô?d ÈíÜÝgÓ` @  5bŒô?d îÜ@#s¡ @  5cô?d HîÜur5 @  5dŽô?d ˆîÜUàpË @  5eô?d ÈîÜn³H! @  5fô?d ïܾûÄÉ @  5g‘ô?d HïÜ€6aÊ @  5h’ô?d ˆïÜ Ãc4 @  5i“ô?d ÈïÜfÐÚ @  5j”ô?d ðÜØf§ @  5k•ô?d HðÜí8g3 @  5l–ô?d ˆðÜÍÍeÍ @  5m—ô?d ÈðÜ“Î?Ë @  5n˜ô?d ñÜC†³# @  5o™ô?d HñÜÐê(À @  5pšô?d ˆñÜð*> @  5q›ô?d ÈñÜ6 “ @  5rœô?d òÜ«H3Þ @  5sô?d HòÜž~2J @  5tžô?d ˆòܾ‹0´ @  5uŸô?d ÈòÜo1‚ @  5v ô?d óÜÈ'½j @  5w¡ô?d HóÜöêi @  5x¢ô?d ˆóÜÖ— @  5y£ô?d ÈóÜ £¶ @  5z¤ô?d ôÜ BP¹ @  5{¥ô?d HôÜÖs @  5¼æô?d  ÝÚËÔ @  5½çô?d à݄Ȏ‹ @  5¾èô?d ÝT€c @  5¿éô?d `Ýxí¸¢ @  5Àêô?d  ÝXº\ @  5Áëô?d àÝž } @  5Âìô?d ÝO£¼ @  5Ãíô?d `Ý6y¢( @  5Äîô?d  ÝŒ Ö @  5Åïô?d àÝ-ߘ< @  5Æðô?d Ýý—Ô @  5Çñô?d `ÝÃZ±× @  5Èòô?d  Ý㯳) @  5Éóô?d àÝ%¼  @  5Êôô?d ÝC† @  5Ëõô?d `Ý$u‡ @  5Ìöô?d  Ý€… @  5Í÷ô?d àÝZƒßy @  5Îøô?d ÝŠËS‘ @  5Ïùô?d ` ݧÈr @  5Ðúô?d   Ý9RÊŒ @  5Ñûô?d à ÝÿAs­ @  5Òüô?d ÝbÓl @  5Óýô?d ` ÝW3Òø @  5Ôþô?d   ÝwÆÐ @  5Õÿô?d à ÝCÓÅ¿ @  5Öõ?d Ý“›IW @  5×õ?d ` Ý­VìT @  5Øõ?d   Ý£îª @  5Ùõ?d à ÝK°W‹ @  5Úõ?d ÝRþ¤„ @  5Ûõ?d ` ÝgÈ¥ @  5Üõ?d   ÝG=§î @  5Ýõ?d à Ý>ýè @  5Þõ?d ÝÉvq @  5ß õ?d ` ÝKÍS @  5à õ?d   ÝkéÏ­ @  5á õ?d à Ý­úvŒ @  5â õ?d€ Ýñù!M @  6 õ?d `Ý%Žhð @  6õ?d  Ý{j @  6õ?d àÝûa©  @  6õ?d Ý+)%á @  6õ?d `ÝÛVߘ @  6õ?d  Ýû£Ýf @  6õ?d àÝó;= @  6õ?d ÝM܇ @  6 õ?d `ݽ£}ö @  6 õ?d  ÝV @  6 õ?d àÝÞã @  6 õ?d ÝÖTR  @  6 õ?d `Ý&+¨r @  6õ?d  ÝÞªŒ @  6õ?d àÝ£Þr7 @  6õ?d Ý>šÒö @  6õ?d `ÝÎå( @  6õ?d  Ýî*q @  6õ?d àݽЪ @  6 õ?d Ý]õ\B @  6!õ?d `Ý­Š¦; @  6"õ?d  Ý¤Å @  6#õ?d àÝ…ÞBž @  6$õ?d Ýœ±‘ @  6%õ?d `ÝlïKè @  6&õ?d  ÝLI @  6'õ?d àÝ×Pèý @  6(õ?d Ýd @  6)õ?d `Ý÷gžl @  6*õ?d  Ý×’œ’ @  6+õ?d àÝc”c™ @  6 ,õ?d ÝþÐÃX @  6!-õ?d `ݯ9! @  6".õ?d  Ý.Z;ß @  6#/õ?d àÝÐ@øØ @  6$0õ?d Ýt0 @  6%1õ?d `ÝðwŽI @  6&2õ?d  ÝЂŒ· @  6'3õ?d àÝØ#jì @  6(4õ?d ÝìÜæñ @  6)5õ?d `Ý£ˆ @  6*6õ?d  Ýõ?d  ÝOK @  63?õ?d àÝÜí¤Å @  64@õ?d Ý ¥(- @  65Aõ?d `ÝüÚÒT @  66Bõ?d  ÝÜ/Ъ @  67Cõ?d àÝÔŽ6ñ @  68Dõ?d ÝÍÀÅþ @  69Eõ?d `Ý=¿?‡ @  6:Fõ?d  ÝJ=y @  6;Gõ?d à݆œ’ @  6<Hõ?d ÝVHz @  6=Iõ?d `ݦ7ê @  6>Jõ?d  Ý†Âèý @  6?Kõ?d àÝœÃd @  6@Lõ?d ݇±¥ @  6AMõ?d `ÝñøKÜ @  6BNõ?d  ÝÑ I" @  6COõ?d àÝ/Š% @  6DPõ?d Ýÿ_Í @  6EQõ?d `Ý ü´ @  6FRõ?d  Ý/ÕþJuÐ Ý @  6GSõ?d àÝ't @  6HTõ?d 8 ÝVÆw @  6IUõ?d x ݦ< @  6JVõ?d ¸ ݆õ>ð @  6KWõ?d ø Ý¿Ÿ @  6LXõ?d 8!ÝÍ÷ó @  6MYõ?d x!Ý=ˆéŠ @  6NZõ?d ¸!Ý}ët @  6O[õ?d ø!ݸ}3Ï @  6P\õ?d 8"Ý%9“ @  6Q]õ?d x"ÝÕFiw @  6R^õ?d ¸"Ýõ³k‰ @  6S_õ?d ø"Ý–‘R @  6T`õ?d 8#ÝFVº @  6Uaõ?d x#ݶ)çà @  6Vbõ?d ¸#Ý–Üå= @  6Wcõ?d ø#Ýž}f @  6Xdõ?d 8$݇3ði @  6Yeõ?d x$ÝwL  @  6Zfõ?d ¸$ÝW¹î @  6[gõ?d ø$ÝÌó© @  6\hõ?d 8%Ý»%í @  6]iõ?d x%ÝìÄß” @  6^jõ?d ¸%ÝÌ1Ýj @  6_kõ?d ø%Ýx7"a @  6`lõ?d 8&Ýås‚  @  6amõ?d x&Ý xÙ @  6bnõ?d ¸&Ý5ùz' @  6coõ?d ø&ÝËã¹  @  6dpõ?d 8'Ý«5È @  6eqõ?d x'ÝëÔϱ @  6frõ?d ¸'ÝË!ÍO @  6gsõ?d ø'ÝÀ+ @  6htõ?d 8(Ý÷§  @  6iuõ?d x(Ý]p @  6jvõ?d ¸(Ý'õ_Ž @  6kwõ?d ø(ݼ¿þe @  6lxõ?d 8)Ýl÷r @  6myõ?d x)Ýœˆˆô @  6nzõ?d ¸)ݼ}Š  @  6o{õ?d ø)Ý}R± @  6p|õ?d 8*Ý„9òp @  6q}õ?d x*ÝtF  @  6r~õ?d ¸*ÝT³ ÷ @  6sõ?d ø*ÝÚˆ±¯ @  6t€õ?d 8+Ý À=G @  6uõ?d x+Ýú¿Ç> @  6v‚õ?d ¸+ÝÚJÅÀ @  6wƒõ?d ø+ÝÒë#› @  6x„õ?d 8,Ý˥Д @  6y…õ?d x,Ý;Ú*í @  6z†õ?d ¸,Ý/( @  6{‡õ?d ø,Ý€e‰ø @  6|ˆõ?d 8-ÝP- @  6}‰õ?d x-Ý Rÿi @  6~Šõ?d ¸-Ý€§ý— @  6‹õ?d ø-Ýyð4? @  6€Œõ?d 8.Ýä´”þ @  6õ?d x.ÝËn‡ @  6‚Žõ?d ¸.Ý4>ly @  6ƒõ?d ø.ÝÊ$¯~ @  6„õ?d 8/Ýl#– @  6…‘õ?d x/ÝêÙï @  6†’õ?d ¸/ÝÊæÛ @  6‡“õ?d ø/ÝÂG=J @  6ˆ”õ?d 80Ý|™ø @  6‰•õ?d x0ÝŒæ{ @  6Š–õ?d ¸0ݬy @  6‹—õ?d ø0Ý7YØ” @  6Œ˜õ?d 81ÝçT| @  6™õ?d x1Ýn® @  6Žšõ?d ¸1Ý7›¬û @  6›õ?d ø1Ý’›t@ @  6œõ?d 82ÝßÔ @  6‘õ?d x2Ýÿ .ø @  6’žõ?d ¸2ÝßU, @  6“Ÿõ?d ø2ݼøÖÝ @  6” õ?d 83Ýl°Z5 @  6•¡õ?d x3ݜϠL @  6–¢õ?d ¸3ݼ:¢² @  6—£õ?d ø3Ý´›Dé @  6˜¤õ?d 84Ý­Õ·æ @  6™¥õ?d x4Ý]ªMŸ @  6š¦õ?d ¸4Ý}_Oa @  6›§õ?d ø4ÝæîŠ @  6œ¨õ?d 85Ý6]bb @  6©õ?d x5ÝÆ"˜ @  6žªõ?d ¸5Ýæ×šå @  6Ÿ«õ?d ø5ÝRÑeî @  6 ¬õ?d 86ÝÏ•Å/ @  6¡­õ?d x6Ý?ê?V @  6¢®õ?d ¸6Ý=¨ @  6£¯õ?d ø6Ýáþ¯ @  6¤°õ?d 87Ý1MrG @  6¥±õ?d x7ÝÁ2ˆ> @  6¦²õ?d ¸7ÝáÇŠÀ @  6§³õ?d ø7Ýéfl› @  6¨´õ?d 88ÝÝ™à† @  6©µõ?d x8Ý-æÿ @  6ª¶õ?d ¸8Ý  @  6«·õ?d ø8Ý–Y¹ê @  6¬¸õ?d 89ÝF5 @  6­¹õ?d x9ݶnÏ{ @  6®ºõ?d ¸9Ý–›Í… @  6¯»õ?d ø9Ý3›> @  6°¼õ?d 8:ݮߵÿ @  6±½õ?d x:Ý^ O† @  6²¾õ?d ¸:Ý~UMx @  6³¿õ?d ø:Ýí¨¢² @  6´Àõ?d 8;Ý=à.Z @  6µÁõ?d x;ÝÍŸÔ# @  6¶Âõ?d ¸;ÝíjÖÝ @  6·Ãõ?d ø;ÝåË0† @  6¸Äõ?d 8<Ýü…É @  6¹Åõ?d x<Ý ú9ð @  6ºÆõ?d ¸<Ý,; @  6»Çõ?d ø<Ý·Ešå @  6¼Èõ?d 8=Ýg   @  6½Éõ?d x=Ý—rìt @  6¾Êõ?d ¸=Ý·‡îŠ @  6¿Ëõ?d ø=Ý­† @  6ÀÌõ?d 8>Ý0·Ò @  6ÁÍõ?d x>ÝÀ½M« @  6ÂÎõ?d ¸>ÝàHOU @  6ÃÏõ?d ø>ÝRŒR @  6ÄÐõ?d 8?Ýκ @  6ÅÑõ?d x?Ý>eúà @  6ÆÒõ?duÐ@Ý7 ¸?Ýø= @  6ÇÓõ?d ø?Ýk±m @  6È€Ôõ?d P@ݨ×& @  6É€Õõ?d @Ýú8 @  6Ê€Öõ?d Ð@Ýx—/¡ @  6Ë€×õ?d Aݱ| @  6Ì€Øõ?d PAÝ3•¢ @  6Í€Ùõ?d AÝaŽíû @  6΀Úõ?d ÐAÝãú% @  6Ï€Ûõ?d BÝYÊ• @  6ЀÜõ?d PBÝÛ[‚_ @  6Ñ€Ýõ?d B݉@m @  6Ò€Þõ?d ÐBÝ ÑzØ @  6Ó€ßõ?d CÝ:¥5 @  6Ô€àõ?d PCݸ4 ë @  6Õ€áõ?d CÝê/ã² @  6Ö€âõ?d ÐCÝh¾ôl @  6×€ãõ?d DÝûÀöæ @  6Ø€äõ?d PDÝyQá8 @  6Ù€åõ?d DÝ+Ja @  6Ú€æõ?d ÐDݩۿ @  6Û€çõ?d EÝ`H#b @  6Ü€èõ?d PEÝâÙ4¼ @  6Ý€éõ?d EݰÂÛå @  6Þ€êõ?d ÐEÝ2SÌ; @  6߀ëõ?d FÝ™€„/ @  6à€ìõ?d PFÝ“ñ @  6á€íõ?d FÝI |¨ @  6â€îõ?d€ ÐFÝ¿XwÐ @  7€ïõ?d GÝòÚgÈ @  7€ðõ?d PGÝpKp @  7€ñõ?d GÝçd¢ @  7€òõ?d ÐGÝeˆs| @  7€óõ?d HÝõQž @  7€ôõ?d PHÝ—dF@ @  7€õõ?d HÝ Íöc @  7€öõ?d ÐH݉\á½ @  7 €÷õ?d IÝ…†  @  7 €øõ?d PIÝ7S @  7 €ùõ?d IÝE#ç @  7 €úõ?d ÐIÝÔ49 @  7 €ûõ?d JÝË: @  7€üõ?d PJÝIƒ-Ù @  7€ýõ?d JÝx‹£ @  7€þõ?d ÐJÝú´Ä @  7€ÿõ?d KÝ.ôn @  7€ö?d PKݬe° @  7€ö?d KÝ;7  @  7€ö?d ÐKݹ¦Ú @  7€ö?d LÝäjF* @  7€ö?d PLÝfûQô @  7€ö?d LÝúRá× @  7€ö?d ÐLÝxÃö  @  7€ö?d MÝt79 @  7€ö?d PMÝöˆ ç @  7€ ö?d MÝaÚ4S @  7€ ö?d ÐMÝãK# @  7€ ö?d NÝ:-³ @  7€ ö?d PNݸ:m @  7€ ö?d Nݘ“ @  7 €ö?d ÐN݃„À @  7!€ö?d OÝs ' @  7"€ö?d POÝñ˜0 @  7#€ö?d OÝfÊ$v @  7$€ö?d ÐOÝä[3¨ @  7%€ö?d PÝ!å @  7&€ö?d PPÝœ–6; @  7'€ö?d PÝ?† @  7(€ö?d ÐPÝ‚®‘Æ @  7)€ö?d QÝŽtPö @  7*€ö?d PQÝ åG( @  7+€ö?d QÝ›·Sœ @  7,€ö?d ÐQÝ&DB @  7-€ö?d RÝÀàJ| @  7.€ö?d PRÝBq]¢ @  7/€ö?d RÝsyÓa @  70€ö?d ÐRÝñèÄ¿ @  71€ö?d SÝÕ^¿ @  72€ ö?d PS݇DIa @  73€!ö?d SÝ]Õ @  74€"ö?d ÐSÝ’‡J  @  75€#ö?d TÝÏKû @  76€$ö?d PTÝMÚ% @  77€%ö?d TÝÑs° @  78€&ö?d ÐTÝSâ§Ø @  79€'ö?d UÝ_8fè @  7:€(ö?d PUÝÝ©q6 @  7;€)ö?d UÝJûe‚ @  7<€*ö?d ÐUÝÈjr\ @  7=€+ö?d Vݬ|b @  7>€,ö?d PVÝ“=k¼ @  7?€-ö?d VÝ4Ä] @  7@€.ö?d ÐVÝŸ¥Óƒ @  7A€/ö?d WÝö/p_ @  7B€0ö?d PWÝt¾g @  7C€1ö?d WÝãìs5 @  7D€2ö?d ÐWÝa}dë @  7E€3ö?d XÝF  @  7F€4ö?d PXÝ“‘Q× @  7G€5ö?d XÝ8áô @  7H€6ö?d ÐXÝ©ö* @  7I€7ö?d YÝs7 @  7J€8ö?d PYÝâ Ä @  7K€9ö?d YÝ”°4p @  7L€:ö?d ÐYÝ!#® @  7M€;ö?d ZÝÏç- @  7N€<ö?d PZÝMv:N @  7O€=ö?d ZÝ|~´ @  7P€>ö?d ÐZÝþï£S @  7Q€?ö?d [Ýú‚,B @  7R€@ö?d P[Ýx;œ @  7S€Aö?d [ÝïA/( @  7T€Bö?d Ð[ÝmÐ8ö @  7U€Cö?d \Ý0e @  7V€Dö?d P\ݲrØ @  7W€Eö?d \Ý.$Âû @  7X€Fö?d Ð\ݬµÕ% @  7Y€Gö?d ]Ý o @  7Z€Hö?d P]Ý"þË @  7[€Iö?d ]ݵ¬ @  7\€Jö?d Ð]Ý7=¡ @  7]€Kö?d ^ÝîûŸ @  7^€Lö?d P^ÝljA @  7_€Mö?d ^ÝLd°2 @  7`€Nö?d Ð^ÝÎõ§ì @  7a€Oö?d _ݧ0 @  7b€Pö?d P_Ý%îî @  7c€Qö?d _ݲ¼Z @  7uÐ`Ýd€Rö?d Ð_Ý0-„ @  7e€Sö?d (`ÝÊW ã @  7f€Tö?d h`ÝHÆ= @  7g€Uö?d ¨`ÝÔo¬ @  7h€Vö?d è`ÝVþ»À @  7i€Wö?d (aÝZ$zð @  7j€Xö?d haÝصm. @  7k€Yö?d ¨aÝOçyš @  7l€Zö?d èaÝÍvnD @  7m€[ö?d (bݰ`z @  7n€\ö?d hbÝ–!w¤ @  7o€]ö?d ¨bݧ)ùg @  7p€^ö?d èbÝ%¸î¹ @  7q€_ö?d (cÝÑ…t¹ @  7r€`ö?d hcÝScg @  7s€aö?d ¨cÝÄFwÓ @  7t€bö?d ècÝF×`  @  7u€cö?d (dÝ=ý @  7v€dö?d hdÝ™Š*# @  7w€eö?d ¨dÝ#š @  7x€fö?d èd݇²Þ @  7y€gö?d (eÝ‹hLî @  7z€hö?d heÝ ù[0 @  7{€iö?d ¨eÝž«O„ @  7|€jö?d èeÝ:XZ @  7}€kö?d (fÝÅüVd @  7~€lö?d hfÝGmAº @  7€mö?d ¨fÝ*2Þj @  7€€nö?d èfݨ£É´ @  7€oö?d (gÝÁ)jh @  7‚€pö?d hgÝC¸}¶ @  7ƒ€qö?d ¨gÝÔêi @  7„€rö?d ègÝV{~Ü @  7…€sö?d (hÝ&\> @  7†€tö?d hhݤ—Kà @  7‡€uö?d ¨hÝ8>ûà @  7ˆ€vö?d èhݺ¯ì @  7‰€wö?d (iݶu-- @  7Š€xö?d hiÝ4ä:ó @  7‹€yö?d ¨iÝ£¶.G @  7Œ€zö?d èiÝ!'9™ @  7€{ö?d (jÝøá7§ @  7Ž€|ö?d hjÝzp y @  7€}ö?d ¨jÝKx®º @  7€~ö?d èjÝÉé¹d @  7‘€ö?d (kÝÐBbç @  7’€€ö?d hkÝRÓu9 @  7“€ö?d ¨kÝÅa @  7”€‚ö?d èkÝGvS @  7•€ƒö?d (lÝÜ+£ @  7–€„ö?d hlݘM<} @  7—€…ö?d ¨lÝäŒ^ @  7˜€†ö?d èl݆u›€ @  7™€‡ö?d (mÝНZ° @  7š€ˆö?d hmÝ>Mn @  7›€‰ö?d ¨mÝŸlYÚ @  7œ€Šö?d èmÝýN @  7€‹ö?d (nÝÄ;@: @  7ž€Œö?d hnÝFªWä @  7Ÿ€ö?d ¨nÝf¤þ— @  7 €Žö?d ènÝä5éI @  7¡€ö?d (oÝ¿J• @  7¢€ö?d hoÝ.]K @  7£€‘ö?d ¨oݘ|Iÿ @  7¤€’ö?d èoÝí^! @  7¥€“ö?d (pÝà±Ll @  7¦€”ö?d hpÝb [² @  7§€•ö?d ¨pÝþ‰ë‘ @  7¨€–ö?d èpÝ|üO @  7©€—ö?d (qÝpÂ= @  7ª€˜ö?d hqÝòS*¡ @  7«€™ö?d ¨qÝe> @  7¬€šö?d èqÝç)Ë @  7­€›ö?d (rÝ>V'õ @  7®€œö?d hrݼÇ0+ @  7¯€ö?d ¨rÝϾè @  7°€žö?d èrÝ^©6 @  7±€Ÿö?d (sÝûc36 @  7²€ ö?d hsÝyò$è @  7³€¡ö?d ¨sÝî 0\ @  7´€¢ö?d èsÝl1'‚ @  7µ€£ö?d (tÝ1ýzr @  7¶€¤ö?d htݳlm¬ @  7·€¥ö?d ¨tÝ/ÅÝ @  7¸€¦ö?d ètÝ­TÊQ @  7¹€§ö?d (uÝ¡Ž a @  7º€¨ö?d huÝ#¿ @  7»€©ö?d ¨uÝ´M  @  7¼€ªö?d èuÝ6ÜÕ @  7½€«ö?d (vÝïë @  7¾€¬ö?d hvÝm‹5 @  7¿€­ö?d ¨vÝã‚©Ô @  7À€®ö?d èvÝa¾  @  7Á€¯ö?d (wÝ™Ö @  7€°ö?d hwÝŠ  @  7À±ö?d ¨wÝZ¼ @  7Ä€²ö?d èwÝŸË b @  7Å€³ö?d (xÝï¶+€ @  7Æ€´ö?d hxÝm'<^ @  7Ç€µö?d ¨xÝñŽŒ} @  7È€¶ö?d èxÝs›£ @  7É€·ö?d (yÝÅZ“ @  7Ê€¸ö?d hyÝýTMM @  7Ë€¹ö?d ¨yÝjYù @  7Ì€ºö?d èyÝè—N' @  7Í€»ö?d (zÝ1Q@ @  7΀¼ö?d hzݳÀWÇ @  7Ï€½ö?d ¨zÝ‚ÈÙ @  7Ѐ¾ö?d èzÝYÎÚ @  7Ñ€¿ö?d ({Ý4AË @  7Ò€Àö?d h{݆¥V @  7Ó€Áö?d ¨{Ý÷B¡ @  7Ô€Âö?d è{Ý“fU @  7Õ€Ãö?d (|ÝΪ @  7Ö€Äö?d h|ÝL;Q @  7×€Åö?d ¨|ÝÐ’¯r @  7Ø€Æö?d è|ÝR¸¬ @  7Ù€Çö?d (}Ý^Ùyœ @  7Ú€Èö?d h}ÝÜHnB @  7Û€Éö?d ¨}ÝKzö @  7Ü€Êö?d è}ÝÉ‹m( @  7Ý€Ëö?d (~ÝMc @  7Þ€Ìö?d h~Ý’ÜtÈ @  7߀Íö?d ¨~ݲÒÝ» @  7à€Îö?d è~Ý0CÊe @  7á€Ïö?d (ÝYÉi¹ @  7â€Ðö?d€ hÝóÂj5 @  8€Ñö?d ¨ÝuЀÝ'…Ñ6¨ @  8€Òö?d èݸiµß @  8Óö?d @€ÝW¹ @  8Ôö?d €€ÝwéG @  8Õö?d À€Ý‡–ú> @  8Öö?d ÝWÞvÖ @  8×ö?d @ÝÇosª @  8Øö?d €ÝçšqT @  8 Ùö?d ÀÝå‹- @  8 Úö?d ‚ÝŠ¡+ì @  8 Ûö?d @‚݉ûi  @  8 Üö?d €‚Ý©kÞ @  8 Ýö?d À‚ÝYq‘§ @  8Þö?d ƒÝ‰9O @  8ßö?d @ƒÝLÎ}ã @  8àö?d €ƒÝl; @  8áö?d ÀƒÝœD…d @  8âö?d „Ý… vk @  8ãö?d @„݆P4§ @  8äö?d €„ݦ¥6Y @  8åö?d À„ÝVÚÌ  @  8æö?d …݆’@È @  8çö?d @…Ý#E´ @  8èö?d €…Ý6ÖGJ @  8éö?d À…ÝÆ©½3 @  8êö?d †Ý[íò @  8ëö?d @†ÝX·_> @  8ìö?d €†ÝxB]À @  8íö?d À†Ýˆ=§¹ @  8îö?d ‡ÝXu+Q @  8ïö?d @‡Ý3U‘ @  8 ðö?d €‡Ý1ÆWo @  8!ñö?d À‡ÝÁ¹­ @  8"òö?d ˆÝõF!  @  8#óö?d @ˆÝöcÇ @  8$ôö?d €ˆÝÖéa9 @  8%õö?d ÀˆÝ&–›@ @  8&öö?d ‰ÝöÞ¨ @  8'÷ö?d @‰ÝfoÔ @  8(øö?d €‰ÝFš* @  8)ùö?d À‰Ý¶åêS @  8*úö?d ŠÝ+¡J’ @  8+ûö?d @ŠÝ(û^ @  8,üö?d €ŠÝ   @  8-ýö?d ÀŠÝøqðÙ @  8.þö?d ‹Ý(9|1 @  8/ÿö?d @‹Ý? @  80÷?d €‹Ý_Ê ì @  81÷?d À‹Ý¯µð• @  82÷?d ŒÝ¶ûš @  83÷?d @ŒÝµ¡AV @  84÷?d €ŒÝ•TC¨ @  85÷?d ÀŒÝe+¹Ñ @  86÷?d ݵc59 @  87÷?d @Ý%Ò0E @  88÷?d €Ý'2» @  89 ÷?d ÀÝõXÈ @  8: ÷?d ŽÝhh @  8; ÷?d @ŽÝkF*Ï @  8< ÷?d €ŽÝK³(1 @  8= ÷?d ÀŽÝ»ÌÒH @  8>÷?d Ýk„^  @  8?÷?d @ÝŒÅ&ò @  8@÷?d €Ý¬0$  @  8A÷?d ÀÝ\OÞu @  8B÷?d Ýâ‘bÇ @  8C÷?d @ÝáË  @  8D÷?d €ÝÁ>"õ @  8E÷?d ÀÝ1AØŒ @  8F÷?d ‘Ýá Td @  8G÷?d @‘Ýq¸Q @  8H÷?d €‘ÝQMSæ @  8I÷?d À‘Ý¡2©Ÿ @  8J÷?d ’Ýê…  @  8^.÷?d —Ýî¢ ã @  8_/÷?d @—ݧäw# @  8`0÷?d €—݇uÝ @  8a1÷?d À—Ýwn¤ @  8b2÷?d ˜ÝC‘¹ @  8c3÷?d @˜Ý@ËAu @  8d4÷?d €˜Ý`>C‹ @  8e5÷?d À˜ÝA¹ò @  8f6÷?d ™Ý@ 5 @  8g7÷?d @™Ýи0f @  8h8÷?d €™ÝðM2˜ @  8i9÷?d À™Ý2Èá @  8j:÷?d šÝvh  @  8k;÷?d @šÝž,*ì @  8l<÷?d €šÝ¾Ù( @  8m=÷?d ÀšÝN¦Òk @  8n>÷?d ›Ýžî^ƒ @  8o?÷?d @›Ý«I+> @  8p@÷?d €›Ý‹¼)À @  8qA÷?d À›Ý{ÃÓ¹ @  8rB÷?d œÝb ¶ @  8sC÷?d @œÝa×bz @  8tD÷?d €œÝA"`„ @  8uE÷?d ÀœÝ±]šý @  8vF÷?d Ýa @  8wG÷?d @Ýñ¤i @  8xH÷?d €ÝÑQ— @  8yI÷?d ÀÝ!.ëî @  8zJ÷?d žÝ¼jK/ @  8{K÷?d @žÝ¿0 ã @  8|L÷?d €žÝŸÅ  @  8}M÷?d ÀžÝoºñd @  8~N÷?d ŸÝ¿ò}Œ @  8O÷?d @ŸÝ»å5ï @  8€P÷?d €ŸÝ›7 @  8Q÷uРÝ?d ÀŸÝkoÍh @  8‚R÷?d  ÝØÍôÛ @  8ƒS÷?d X ÝÛ—¶ @  8„T÷?d ˜ Ýûb´é @  8…U÷?d Ø Ý N @  8†V÷?d ¡ÝÛUÂx @  8‡W÷?d X¡ÝKäÇ @  8ˆX÷?d ˜¡ÝkÅú @  8‰Y÷?d ءݛn?ƒ @  8ŠZ÷?d ¢Ý*ŸB @  8‹[÷?d X¢ÝpÝŽ @  8Œ\÷?d ˜¢Ý%…ßp @  8]÷?d Ø¢ÝÕú%  @  8Ž^÷?d £Ý²©á @  8_÷?d X£ÝÀEÉM @  8`÷?d ˜£Ýà°Ë³ @  8‘a÷?d Ø£ÝÏ1Ê @  8’b÷?d ¤Ý ÂÅ @  8“c÷?d X¤Ý Û€  @  8”d÷?d ˜¤Ý*.‚÷ @  8•e÷?d ؤÝÚQxŽ @  8–f÷?d ¥Ý ôf @  8—g÷?d X¥Ýš¨ñ @  8˜h÷?d ˜¥Ýº]óä @  8™i÷?d Ø¥ÝJ"  @  8šj÷?d ¦Ý×f©\ @  8›k÷?d X¦ÝÔ<ë @  8œl÷?d ˜¦ÝôÉén @  8m÷?d ئݶ @  8žn÷?d §ÝÔþŸÿ @  8Ÿo÷?d X§Ý¸á? @  8 p÷?d ˜§Ý½MãÁ @  8¡q÷?d اÝM2¸ @  8¢r÷?d ¨ÝyÍ•¥ @  8£s÷?d X¨Ýz—×i @  8¤t÷?d ˜¨ÝZbÕ— @  8¥u÷?d بݪ/î @  8¦v÷?d ©ÝzU£ @  8§w÷?d X©Ýêä¦z @  8¨x÷?d ˜©Ýʤ„ @  8©y÷?d Ø©Ý:n^ý @  8ªz÷?d ªÝ§*þ< @  8«{÷?d XªÝ¤p¼ð @  8¬|÷?d ˜ªÝ„…¾ @  8­}÷?d تÝtúDw @  8®~÷?d «Ý¤²ÈŸ @  8¯÷?d X«ÝŒÓé° @  8°€÷?d ˜«Ý¬&ëN @  8±÷?d Ø«Ý\Y7 @  8²‚÷?d ¬ÝEâ8 @  8³ƒ÷?d X¬ÝFM ô @  8´„÷?d ˜¬Ýf¸¢  @  8µ…÷?d جÝ–ÇXs @  8¶†÷?d ­ÝFÔ› @  8·‡÷?d X­ÝÖ>Ñç @  8¸ˆ÷?d ˜­ÝöËÓ @  8¹‰÷?d Ø­Ý´)` @  8ºŠ÷?d ®Ý›ð‰¡ @  8»‹÷?d X®Ý˜ªËm @  8¼Œ÷?d ˜®Ý¸_É“ @  8½÷?d Ø®ÝH 3ê @  8¾Ž÷?d ¯Ý˜h¿ @  8¿÷?d X¯Ý)ÇP @  8À÷?d ˜¯Ý_ÜÅ® @  8Á‘÷?d دݯ£?× @  8Â’÷?d °Ý}ƒe @  8Ó÷?d X°Ý'Á© @  8Ä”÷?d ˜°Ý2ÒÃW @  8Å•÷?d ذÝ­9. @  8Æ–÷?d ±Ý嵯 @  8Ç—÷?d X±Ý‚T°º @  8Ș÷?d ˜±Ý¢¡²D @  8É™÷?d رÝRÞH= @  8Êš÷?d ²ÝÏšèü @  8Ë›÷?d X²ÝÌÀª0 @  8Ìœ÷?d ˜²Ýì5¨Î @  8Í÷?d زÝJR· @  8Ξ÷?d ³ÝÌÞ_ @  8ÏŸ÷?d X³Ý õ¾ó @  8Р÷?d ˜³Ý)¼  @  8Ñ¡÷?d سÝÙFt @  8Ò¢÷?d ´ÝÀ1µ{ @  8Ó£÷?d X´ÝÃk÷· @  8Ô¤÷?d ˜´ÝãžõI @  8Õ¥÷?d Ø´Ýá0 @  8Ö¦÷?d µÝéƒØ @  8×§÷?d XµÝS†¤ @  8ب÷?d ˜µÝsí„Z @  8Ù©÷?d ص݃’~# @  8Úª÷?d ¶ÝÖÞâ @  8Û«÷?d X¶ÝŒœ. @  8ܬ÷?d ˜¶Ý=yžÐ @  8Ý­÷?d ضÝÍd© @  8Þ®÷?d ·ÝNèA @  8߯÷?d X·ÝT– @  8à°÷?d ˜·Ýtý” @  8á±÷?d Ø·Ý„‚n @  8â²÷?d€ ¸Ýľþ½ @  9³÷?d X¸Ý&¥ôX @  9´÷?d ˜¸ÝPö¦ @  9µ÷?d ظÝ3f÷2 @  9¶÷?d ¹Ýã.{Ú @  9·÷?d X¹Ý½-!Ü @  9¸÷?d ˜¹ÝØ#" @  9¹÷?d عÝ£†! @  9º÷?d ºÝ>Q&à @  9 »÷?d XºÝøBŸÁ @  9 ¼÷?d ˜ºÝØ·? @  9 ½÷?d غÝ휫 @  9 ¾÷?d »Ý=ÉC @  9 ¿÷?d X»Ýk}d @  9À÷?d ˜»ÝKˆš @  9Á÷?d Ø»ÝØäy @  9Â÷?d ¼ÝÁªnv @  9Ã÷?d X¼Ý¹×W @  9Ä÷?d ˜¼Ý'LÕ© @  9Å÷?d ؼÝzÔ= @  9Æ÷?d ½ÝÂ2XÕ @  9Ç÷?d X½Ýœ1Ó @  9È÷?d ˜½Ý¼Ä- @  9É÷?d ؽÝ‚ ¥. @  9Ê÷?d ¾ÝMï @  9Ë÷?d X¾ÝÙ^¼Î @  9Ì÷?d ˜¾Ýù«¾0 @  9Í÷?d ؾÝÌ¿¤ @  9Î÷?d ¿ÝÕ3L @  9Ï÷?d X¿Ý'† ¦ @  9Ð÷?d ˜¿Ýs X @uÐÀÝ  9Ñ÷?d ؿ݅µ  @  9 Ò÷?d 0ÀÝáéäY @  9!Ó÷?d pÀÝ'ú]x @  9"Ô÷?d °ÀÝ_† @  9#Õ÷?d ðÀÝ29^ @  9$Ö÷?d 0ÁÝâqÒú @  9%×÷?d pÁݼrˆü @  9&Ø÷?d °ÁÝœ‡Š @  9'Ù÷?d ðÁÝ¢J/ @  9(Ú÷?d 0ÂÝ?À @  9)Û÷?d pÂÝù6á @  9*Ü÷?d °ÂÝÙè4 @  9+Ý÷?d ðÂÝìÞ5‹ @  9,Þ÷?d 0ÃÝ<–¹c @  9-ß÷?d pÃÝšr¸U @  9.à÷?d °Ãݺ‡º« @  9/á÷?d ðÃÝ)ë!H @  90â÷?d 0ÄÝ0¥ÒG @  91ã÷?d pÄÝö¶kf @  92ä÷?d °ÄÝÖCi˜ @  93å÷?d ðÄÝãuh  @  94æ÷?d 0ÅÝ3=ää @  95ç÷?d pÅÝm>¾â @  96è÷?d °ÅÝM˼ @  97é÷?d ðÅÝs @  98ê÷?d 0ÆÝîB¹Þ @  99ë÷?d pÆÝ(Qÿ @  9:ì÷?d °ÆÝ¤ @  9;í÷?d ðÆÝ=’• @  9<î÷?d 0ÇÝíÚ} @  9=ï÷?d pÇÝÖ‰·— @  9>ð÷?d °ÇÝö|µi @  9?ñ÷?d ðÇÝÚ¨ @  9@ò÷?d 0ÈÝî @  9Aó÷?d pÈÝ(ý:” @  9Bô÷?d °ÈÝ8j @  9Cõ÷?d ðÈÝ=>9þ @  9Dö÷?d 0ÉÝívµ @  9E÷÷?d pÉݳuï @  9Fø÷?d °ÉÝ“€íî @  9Gù÷?d ðÉÝ­MHí @  9Hú÷?d 0ÊÝ0 è, @  9Iû÷?d pÊÝöQ  @  9Jü÷?d °ÊÝÖïSó @  9Ký÷?d ðÊÝãÙRg @  9Lþ÷?d 0ËÝ3‘Þ @  9Mÿ÷?d pËÝâ·úÙ @  9Nø?d °ËÝÂBø' @  9Oø?d ðËÝQ.cÄ @  9Pø?d 0ÌÝH`Ë @  9Qø?d pÌÝŽs)ê @  9Rø?d °ÌÝ®†+ @  9Sø?d ðÌÝ›°*€ @  9Tø?d 0ÍÝKø¦h @  9Uø?d pÍÝûün @  9Vø?d °ÍÝ5þ @  9W ø?d ðÍÝ Ã[“ @  9X ø?d 0ÎÝ–‡ûR @  9Y ø?d pÎÝP”Bs @  9Z ø?d °ÎÝpa@ @  9[ ø?d ðÎÝEWA @  9\ø?d 0ÏÝ•Íñ @  9]ø?d pÏÝ®Lõ @  9^ø?d °ÏÝ޹÷å @  9_ø?d ðÏÝ ÓK¶ @  9`ø?d 0Ðݲ ÷ @  9aø?d pÐÝtN% @  9bø?d °ÐÝTëLÛ @  9cø?d ðÐÝaÝMO @  9dø?d 0Ñݱ•Á§ @  9eø?d pÑÝï–›¡ @  9fø?d °ÑÝÏc™_ @  9gø?d ðÑÝñ®<\ @  9hø?d 0ÒÝlêœ @  9iø?d pÒݪù%¼ @  9jø?d °ÒÝŠ 'B @  9kø?d ðÒÝ¿:&Ö @  9lø?d 0ÓÝorª> @  9mø?d pÓÝÉ–« @  9n ø?d °ÓÝéc©ö @  9o!ø?d ðÓÝz2 @  9p"ø?d 0ÔÝcAÁ @  9q#ø?d pÔÝ¥Rx; @  9r$ø?d °ÔÝ…§zÅ @  9s%ø?d ðÔݰ‘{Q @  9t&ø?d 0ÕÝ`Ù÷¹ @  9u'ø?d pÕÝ>Ú­¿ @  9v(ø?d °ÕÝ/¯A @  9w)ø?d ðÕÝ â B @  9x*ø?d 0Öݽ¦ªƒ @  9y+ø?d pÖÝ{µ¢ @  9z,ø?d °ÖÝ[@\ @  9{-ø?d ðÖÝnvÈ @  9|.ø?d 0×ݾ>œ  @  9}/ø?d p×Ý…m¤Ê @  9~0ø?d °×Ý¥˜¦4 @  91ø?d ð×Ýj£,Ä @  9€2ø?d 0ØÝ^\ Ù @  93ø?d pØÝ˜Oø @  9‚4ø?d °ØÝ¸º @  9ƒ5ø?d ðØÝŒ’ @  9„6ø?d 0ÙÝ]Ä–z @  9…7ø?d pÙÝÇÌ| @  9†8ø?d °ÙÝ#2΂ @  9‡9ø?d ðÙÝÿk @  9ˆ:ø?d 0ÚÝ€»Ë@ @  9‰;ø?d pÚÝF¨ra @  9Š<ø?d °ÚÝf]pŸ @  9‹=ø?d ðÚÝSkq  @  9Œ>ø?d 0Û݃#ýã @  9?ø?d pÛÝÕ—éÄ @  9Ž@ø?d °ÛÝõbë: @  9Aø?d ðÛÝfpÙ @  9Bø?d 0ÜÝ@ƒÖ @  9‘Cø?d pÜݹS:÷ @  9’Dø?d °ÜÝ™¦8  @  9“Eø?d ðÜݬ9 @  9”Fø?d 0ÝÝ|صu @  9•Gø?d pÝÝ"Ûïs @  9–Hø?d °ÝÝ.í @  9—Iø?d ðÝÝ<ãHŽ @  9˜Jø?d 0ÞÝ¡§èO @  9™Kø?d pÞÝg´Qn @  9šLø?d °ÞÝGAS @  9›Mø?d ðÞÝrwR @  9œNø?d 0ßÝ¢?Þì @  9Oø?d pßÝ™læ @  9žPø?d uÐàÝ/°ßݹ™äø @  9ŸQø?d ðßÝ;óX« @  9 Rø?d HàÝ"W] @  9¡Sø?d ˆàÝF ª\ @  9¢Tø?d ÈàÝı½‚ @  9£Uø?d áÝ£^'  @  9¤Vø?d HáÝ!Ï0þ @  9¥Wø?d ˆáÝݨØ @  9¦Xø?d ÈáÝ_9h @  9§Yø?d âÝ~!z @  9¨Zø?d HâÝü°mÄ @  9©[ø?d ˆâݘÇÁÅ @  9ª\ø?d ÈâÝVÖ @  9«]ø?d ãÝ}¹L¹ @  9¬^ø?d HãÝÿ([g @  9­_ø?d ˆãÝû¨Oq @  9®`ø?d ÈãÝy9X¯ @  9¯aø?d äÝqŠ' @  9°bø?d HäÝó0C @  9±cø?d ˆäÝ—lœB @  9²dø?d ÈäÝý‹œ @  9³eø?d åÝr> @  9´fø?d HåÝðƒà @  9µgø?d ˆåÝ äIÆ @  9¶hø?d ÈåÝŽu^ @  9·iø?d æÝ¯mL @  9¸jø?d HæÝ-ü[Ú @  9¹kø?d ˆæÝI‹÷Û @  9ºlø?d ÈæÝËà @  9»mø?d çݬõz§ @  9¼nø?d HçÝ.dmy @  9½oø?d ˆçÝ·S@³ @  9¾pø?d ÈçÝ5ÂWm @  9¿qø?d èݯÁvo @  9Àrø?d HèÝ-Pa± @  9Ásø?d ˆèÝI'Ͱ @  9Âtø?d ÈèÝ˶Ún @  9Ãuø?d éݬY@Ì @  9Ävø?d HéÝ.ÈW @  9Åwø?d ˆéÝÒ¯4 @  9Æxø?d ÈéÝP>ê @  9Çyø?d êÝq&ö @  9Èzø?d HêÝó· ( @  9É{ø?d ˆêÝ—À¦) @  9Ê|ø?d ÈêÝQ±÷ @  9Ë}ø?d ëÝr¾+U @  9Ì~ø?d HëÝð/<‹ @  9Íø?d ˆëÝ9i @  9΀ø?d ÈëÝ›¨~À @  9Ïø?d ìÝ“ò @  9Ђø?d HìÝŠ, @  9уø?d ˆìÝuýº- @  9Ò„ø?d ÈìÝ÷l­ó @  9Ó…ø?d í݃7Q @  9Ô†ø?d HíÝ  @  9Õ‡ø?d ˆíÝîuo© @  9Öˆø?d ÈíÝläxw @  9׉ø?d îÝMüjk @  9ØŠø?d HîÝÏm}µ @  9Ù‹ø?d ˆîݫѴ @  9ÚŒø?d ÈîÝ)‹Æj @  9Ûø?d ïÝNd\È @  9ÜŽø?d HïÝÌõK @  9Ýø?d ˆïÝUÂfÜ @  9Þø?d ÈïÝ×Sq @  9ß‘ø?d ðÝivf= @  9à’ø?d HðÝëçqã @  9á“ø?d ˆðÝÝâ @  9â”ø?d€ ÈðÝÌF=< @  :•ø?d ñÝJèï· @  :–ø?d HñÝÈyøi @  :—ø?d ˆñÝñWL¢ @  :˜ø?d ÈñÝsÆ[| @  :™ø?d òÝœl @  :šø?d HòÝýÄ @  :›ø?d ˆòÝ´8ò¿ @  :œø?d ÈòÝ6©åa @  : ø?d óÝ”„. @  : žø?d HóÝž“ð @  : Ÿø?d ˆóÝ×W|  @  :  ø?d ÈóÝUÆkÕ @  : ¡ø?d ôÝ>fu} @  :¢ø?d Hôݼ÷b£ @  :£ø?d ˆôÝ»“¯8 @  :¤ø?d ÈôÝ9¸æ @  :¥ø?d õÝ›¤Ù© @  :¦ø?d HõÝ5Îw @  :§ø?d ˆõÝ z¼ @  :¨ø?d ÈõÝ¢Šmb @  :©ø?d öÝM  @  :ªø?d HöÝϱ7Ú @  :«ø?d ˆöÝetÄ¡ @  :¬ø?d ÈöÝçåÓ @  :­ø?d ÷ÝEC²0 @  :®ø?d H÷ÝÇÒ¥î @  :¯ø?d ˆ÷Ý›¬sÉ @  :°ø?d È÷Ý=d @  :±ø?d øÝ_,­ @  :²ø?d HøÝݽs @  :³ø?d ˆøÝËßøX @  : ´ø?d ÈøÝINï† @  :!µø?d ùÝëèŽÉ @  :"¶ø?d HùÝiy™ @  :#·ø?d ˆùÝPW-Ü @  :$¸ø?d ÈùÝÒÆ: @  :%¹ø?d úÝ=lwd @  :&ºø?d HúÝ¿ý`º @  :'»ø?d ˆúÝ8“Á @  :(¼ø?d ÈúÝ—©„ @  :)½ø?d ûÝ5åP @  :*¾ø?d HûÝ·žòŽ @  :+¿ø?d ˆû݆d @  :,Àø?d ÈûÝ–º @  :-Áø?d üÝo6 @  :.Âø?d HüÝí§Ì @  :/Ãø?d ˆüÝêÃÛW @  :0Äø?d ÈüÝhR̉ @  :1Åø?d ýÝÊô­Æ @  :2Æø?d HýÝHeº @  :3Çø?d ˆýÝqKÓ @  :4Èø?d ÈýÝóÚ  @  :5Éø?d þÝpTk @  :6Êø?d HþÝžáCµ @  :7Ëø?d ˆþÝ4$°Î @  :8Ìø?d Èþݶµ§ @  :9Íø?d ÿÝÆ_ @  ::Îø?d HÿÝ–‚Ñ @  :;Ïø?d ˆÿÝÊü¦ @  :<uÐÞÐø?d ÈÿÝHmx @  :=Ñø?d Þ>rµÈ @  :>Òø?d `޼㢠@  :?Óø?d  Þ†N¯ @  :@Ôø?d àÞ†Yq @  :AÕø?d Þ$±8> @  :BÖø?d `Þ¦ /à @  :C×ø?d  ÞŸ›+ @  :DØø?d àÞŸŒõ @  :EÙø?d Þò5Á“ @  :FÚø?d `Þp¤ÖM @  :GÛø?d  ÞÚa%6 @  :HÜø?d àÞXð2è @  :IÝø?d ÞúVS§ @  :JÞø?d `ÞxÇDy @  :Kßø?d  Þ¹«‚ @  :Làø?d àÞ;Ÿ¼\ @  :Máø?d ÞP?¢ô @  :Nâø?d `ÞÒ®µ* @  :Oãø?d  ÞÕÊx± @  :Päø?d àÞW[oo @  :Qåø?d Þõý  @  :Ræø?d `Þwlþ @  :Sçø?d  ÞNB­5 @  :Tèø?d àÞÌÓºë @  :Uéø?d Þ#y÷ @  :Vêø?d `Þ¡èàS @  :Wëø?d  Þ -( @  :Xìø?d àÞ‰¼ö @  :Yíø?d Þ+e¹ @  :Zîø?d `Þ©‹rg @  :[ïø?d  Þõõ¤@ @  :\ðø?d àÞwd³ž @  :]ñø?d Þ1uÒ$ @  :^òø?d `Þ³äÅú @  :_óø?d  Þ¥†/Ñ @  :`ôø?d àÞ'8 @  :aõø?d Þ…±Y@ @  :böø?d ` Þ Nž @  :c÷ø?d   Þ>úU @  :døø?d à Þ¼Ÿí‹ @  :eùø?d ÞS5 í @  :fúø?d ` ÞѤ·3 @  :gûø?d   Þ{aDH @  :hüø?d à ÞùðS– @  :iýø?d Þ[V2Ù @  :jþø?d ` ÞÙÇ% @  :kÿø?d   ÞŠÿÞs @  :lù?d à ÞnÉ­ @  :mù?d ÞcÎ× @  :nù?d ` Þá_ÀÛ @  :où?d   Þæ; @ @  :pù?d à Þdªž @  :qù?d ÞÆ {Ñ @  :rù?d ` ÞDl @  :sù?d   Þ}³ØÄ @  :tù?d à Þÿ"Ï @  :u ù?d Þˆ‚| @  :v ù?d `Þ’•¢ @  :w ù?d  Þ8ÜfÙ @  :x ù?d àÞºMq @  :y ù?d ÞëH @  :zù?d `Þšz– @  :{ù?d  ÞÆѱ @  :|ù?d àÞD•Æo @  :}ù?d Þˆ¥—z @  :~ù?d `Þ 4€¤ @  :ù?d  ÞQ\, @  :€ù?d àÞÓ–Kò @  :ù?d Þq0*½ @  :‚ù?d `Þó¡=c @  :ƒù?d  Þʉ¨ @  :„ù?d àÞHžv @  :…ù?d Þ§´Ó @  :†ù?d `Þ%%ÄÎ @  :‡ù?d  Þà7µ @  :ˆù?d àÞ q k @  :‰ù?d Þ¯×A$ @  :Šù?d `Þ-FVú @  :‹ù?d  Þì¹ @  :Œ ù?d àÞn®ß @  :!ù?d Þ¾°w @  :Ž"ù?d `Þ‡/§© @  :#ù?d  Þ€Kj2 @  :$ù?d àÞÚ}ì @  :‘%ù?d Þ |£ @  :’&ù?d `Þ"í } @  :“'ù?d  Þÿ¶ @  :”(ù?d àÞ™R¨h @  :•)ù?d Þvøå @  :–*ù?d `ÞôiòÐ @  :—+ù?d  Þ^¬« @  :˜,ù?d àÞÜ=u @  :™-ù?d Þ~›w: @  :š.ù?d `Þü `ä @  :›/ù?d  Þ t¶Ã @  :œ0ù?d àÞ"å¡ @  :1ù?d ÞdôÀ§ @  :ž2ù?d `Þæe×y @  :Ÿ3ù?d  Þð=R @  : 4ù?d àÞr–*Œ @  :¡5ù?d ÞÐ0Kà @  :¢6ù?d `ÞR¡\ @  :£7ù?d  ÞkèÖ @  :¤8ù?d àÞéÿ @  :¥9ù?d Þ´²n @  :¦:ù?d `Þ„%¥° @  :§;ù?d  Þ.àVË @  :¨<ù?d àÞ¬qA @  :©=ù?d Þ× Z @  :ª>ù?d `ÞŒF7„ @  :«?ù?d  Þ½ßÍn @  :¬@ù?d àÞ?NÚ° @  :­Aù?d ÞTîÄ @  :®Bù?d `ÞÖÓÆ @  :¯Cù?d  ÞÑ] @  :°Dù?d àÞSŠ ƒ @  :±Eù?d Þñ,hÌ @  :²Fù?d `Þs½ @  :³Gù?d  ÞJ“ËÙ @  :´Hù?d àÞÈÜ @  :µIù?d Þ'¨‘a @  :¶Jù?d `Þ¥9†¿ @  :·Kù?d  ÞüuÄ @  :¸Lù?d àÞmb @  :¹Mù?d Þ/ËU @  :ºNù?d `Þ­Z‹ @  :»Où?d  Þñ$¬uÐ Þ @  :¼Pù?d àÞJr § @  :½ Qù?d 8 ÞI—:f @  :¾ Rù?d x ÞË-¸ @  :¿ Sù?d ¸ Þˆ ú @  :ÀTù?d ø Þ œíß @  :ÁUù?d 8!Þ¨:Œ @  :ÂVù?d x!Þ*«›N @  :ÃWù?d ¸!Þ…/… @  :ÄXù?d ø!Þ‘8[ @  :ÅYù?d 8"Þ~¾u= @  :ÆZù?d x"Þü/bã @  :Ç[ù?d ¸"ÞVꑘ @  :È\ù?d ø"ÞÔ{†F @  :É]ù?d 8#ÞvÝç  @  :Ê^ù?d x#ÞôLð× @  :Ë_ù?d ¸#Þ5…, @  :Ì`ù?d ø#Þ·ò @  :Íaù?d 8$ÞÜ´Z @  :Îbù?d x$Þ^%„ @  :Ïcù?d ¸$ÞYAÌ @  :Ðdù?d ø$ÞÛÐÛÁ @  :Ñeù?d 8%ÞyvºŽ @  :Òfù?d x%Þûç­P @  :Ógù?d ¸%ÞÂÉ› @  :Ôhù?d ø%Þ@XE @  :Õiù?d 8&Þ¯òC# @  :Öjù?d x&Þ-cTý @  :×kù?d ¸&Þ‡¦§† @  :Ølù?d ø&Þ7°X @  :Ùmù?d 8'Þ§‘Ñ @  :Únù?d x'Þ%ÆÉ @  :Ûoù?d ¸'Þy~î @  :Üpù?d ø'Þûï0 @  :Ýqù?d 8(Þ½þfŠ @  :Þrù?d x(Þ?oqT @  :ßsù?d ¸(Þ) › @  :àtù?d ø(Þ«œŒ¡ @  :áuù?d 8)Þ :íî @  :âvù?d€ x)Þÿhæ– @  ;wù?d ¸)Þ't @  ;xù?d ø)Þ¥– ª @  ;yù?d 8*Þu»! @  ;zù?d x*Þ ä¬ÿ @  ;{ù?d ¸*Þi“þ @  ;|ù?d ø*Þë  @  ;}ù?d 8+Þ‡) @  ;~ù?d x+Þ‡>Ë @  ; ù?d ¸+Þì‘k^ @  ; €ù?d ø+Þn|€ @  ; ù?d 8,ÞÀé™Å @  ; ‚ù?d x,ÞBxŽ @  ; ƒù?d ¸,Þ&" @  ;„ù?d ø,Þ¤ž5Ä @  ;…ù?d 8-Þe+5 @  ;†ù?d x-Þçº"Ï @  ;‡ù?d ¸-ÞÝmé @  ;ˆù?d ø-Þ™Lz7 @  ;‰ù?d 8.Þ³¯Ì¼ @  ;Šù?d x.Þ1>Ûb @  ;‹ù?d ¸.ÞUIwc @  ;Œù?d ø.Þר`½ @  ;ù?d 8/Þ»Ì^ˆ @  ;Žù?d x/Þ9]IV @  ;ù?d ¸/Þ jdœ @  ;ù?d ø/Þ"ûsB @  ;‘ù?d 80Þ+‚Ùº @  ;’ù?d x0Þ©Îd @  ;“ù?d ¸0ÞÍdbe @  ;”ù?d ø0ÞOõu» @  ;•ù?d 81ÞŸFRÞ @  ; –ù?d x1Þ×E @  ;!—ù?d ¸1Þá° & @  ;"˜ù?d ø1Þc!ø @  ;#™ù?d 82ÞI«s @  ;$šù?d x2ÞËS¼­ @  ;%›ù?d ¸2Þ¯$¬ @  ;&œù?d ø2Þ-µr @  ;'ù?d 83ÞA¡9G @  ;(žù?d x3ÞÃ0.™ @  ;)Ÿù?d ¸3Þǰ: @  ;* ù?d ø3ÞE!-Q @  ;+¡ù?d 84ÞëÈÈ @  ;,¢ù?d x4ÞiYßÊ @  ;-£ù?d ¸4Þ .sË @  ;.¤ù?d ø4Þ¿d @  ;/¥ù?d 85ÞN dÀ @  ;0¦ù?d x5ÞÌ›s @  ;1§ù?d ¸5Þ0ü<8 @  ;2¨ù?d ø5Þ²m+æ @  ;3©ù?d 86Þ˜Žm @  ;4ªù?d x6Þг @  ;5«ù?d ¸6Þ~h&² @  ;6¬ù?d ø6Þüù1l @  ;7­ù?d 87ÞíY @  ;8®ù?d x7Þ|‡ @  ;9¯ù?d ¸7Þ‹K5M @  ;:°ù?d ø7Þ Ú"“ @  ;;±ù?d 88ÞŠ‚¸Ä @  ;<²ù?d x8Þ¯ @  ;=³ù?d ¸8Þld @  ;>´ù?d ø8ÞîõÅ @  ;?µù?d 89ÞA52 @  ;@¶ù?d x9ÞÐ"ì @  ;A·ù?d ¸9Þî·mÊ @  ;B¸ù?d ø9Þl&z @  ;C¹ù?d 8:ÞFÅÌŸ @  ;Dºù?d x:ÞÄTÛA @  ;E»ù?d ¸:Þ #w@ @  ;F¼ù?d ø:Þ"²`ž @  ;G½ù?d 8;ÞN¦^« @  ;H¾ù?d x;ÞÌ7Iu @  ;I¿ù?d ¸;Þ8çHr @  ;JÀù?d ø;Þºv_¬ @  ;KÁù?d 8<ÞŸºé @  ;LÂù?d x<Þ–­7 @  ;MÃù?d ¸<Þòy6 @  ;NÄù?d ø<Þpèè @  ;OÅù?d 8=Þ±]= @  ;PÆù?d x=Þ3Ìã @  ;QÇù?d ¸=ÞÏ«NÅ @  ;RÈù?d ø=ÞM:Y @  ;SÉù?d 8>ÞgÙï @  ;TÊù?d x>ÞåHøN @  ;UËù?d ¸>Þ?TO @  ;VÌù?d ø>Þ®C‘ @  ;WÍù?d 8?Þoº}¤ @  ;XÎù?d x?Þí+jz @  ;YÏù?duÐ@Þ7 ¸?ÞtG° @  ;ZÐù?d ø?ÞöPn @  ;[Ñù?d P@Þ‚†ü @  ;\Òù?d @Þ¢sþæ @  ;]Óù?d Ð@Þd`GÇ @  ;^Ôù?d AÞ´(Ë/ @  ;_Õù?d PAÞ6Bw| @  ;`Öù?d AÞ·u‚ @  ;a×ù?d ÐAÞH´/„ @  ;bØù?d BÞÕðE @  ;cÙù?d PBÞàÆŽÑ @  ;dÚù?d BÞÀ3Œ/ @  ;eÛù?d ÐBÞ 5 @  ;fÜù?d CÞÖh¹æ @  ;gÝù?d PCÞè¥å @  ;hÞù?d CÞÈP @  ;ißù?d ÐCÞn´- @  ;jàù?d DÞwúì" @  ;káù?d PDÞBÌí¶ @  ;lâù?d DÞb9ïH @  ;mãù?d ÐDÞ¤*Vi @  ;näù?d EÞtbÚ @  ;oåù?d PEÞçAb @  ;pæù?d EÞÇûCœ @  ;qçù?d ÐEÞ™øš @  ;rèù?d FÞ¼¹[ @  ;séù?d PFÞ1ЏÏ @  ;têù?d FÞº1 @  ;uëù?d ÐFÞ×l @  ;vìù?d GÞ$ø @  ;wíù?d PGÞ9é*û @  ;xîù?d GÞ( @  ;yïù?d ÐGÞ"Oï @  ;zðù?d HÞ°œò @  ;{ñù?d PHÞ#†f @  ;|òù?d HÞsŸ˜ @  ;}óù?d ÐHÞÅ`&¹ @  ;~ôù?d IÞ(ªQ @  ;õù?d PIÞÚ ¡ @  ;€öù?d IÞúæ"_ @  ;÷ù?d ÐIÞ¤åxY @  ;‚øù?d JÞ9¡Ø˜ @  ;ƒùù?d PJÞ —Ù  @  ;„úù?d JÞ,bÛò @  ;…ûù?d ÐJÞêqbÓ @  ;†üù?d KÞ:9î; @  ;‡ýù?d PKÞôK8 @  ;ˆþù?d KÞ$IÆ @  ;‰ÿù?d ÐKÞ¢6iZ @  ;Šú?d LÞ»xšU @  ;‹ú?d PLÞŽN›Á @  ;Œú?d LÞ®»™? @  ;ú?d ÐLÞh¨  @  ;Žú?d MÞ¸à¬ö @  ;ú?d PMÞ+Œ7 @  ;ú?d MÞ y5ë @  ;‘ú?d ÐMÞUzoí @  ;’ú?d NÞÈ>Ï, @  ;“ ú?d PNÞýθ @  ;” ú?d NÞÝýÌF @  ;• ú?d ÐNÞîug @  ;– ú?d OÞ˦ù @  ;— ú?d POÞõk\Œ @  ;˜ú?d OÞÕž^r @  ;™ú?d ÐOÞîÍf˜ @  ;šú?d PÞPÚ* @  ;›ú?d PPÞe%Û¾ @  ;œú?d PÞEÐÙ@ @  ;ú?d ÐPÞƒÃ`a @  ;žú?d QÞS‹ì‰ @  ;Ÿú?d PQÞÑáPÚ @  ; ú?d QÞñR$ @  ;¡ú?d ÐQÞ¯" @  ;¢ú?d RÞ2S¨ã @  ;£ú?d PRÞe©w @  ;¤ú?d RÞ'«‰ @  ;¥ú?d ÐRÞშ @  ;¦ú?d SÞ1Ëž@ @  ;§ú?d PSÞ;C @  ;¨ú?d SÞ/ó9½ @  ;©ú?d ÐSÞ‰8‹ @  ;ª ú?d TÞYË„ @  ;«!ú?d PTÞ¥oÊ @  ;¬"ú?d TÞ…šÈî @  ;­#ú?d ÐTÞC‰qÏ @  ;®$ú?d UÞ“Áý' @  ;¯%ú?d PUÞ­fÄ @  ;°&ú?d UÞ Xd: @  ;±'ú?d ÐUÞ~[>< @  ;²(ú?d VÞãžý @  ;³)ú?d PVÞÖ)Ÿi @  ;´*ú?d VÞöÜ— @  ;µ+ú?d ÐVÞ0Ï$¶ @  ;¶,ú?d WÞà‡¨^ @  ;·-ú?d PWÞÞJ ] @  ;¸.ú?d WÞþ¿£ @  ;¹/ú?d ÐWÞÅì7I @  ;º0ú?d XÞñ»T @  ;»1ú?d PXÞÄ%ºÀ @  ;¼2ú?d XÞäи> @  ;½3ú?d ÐXÞ"à @  ;¾4ú?d YÞò‹÷ @  ;¿5ú?d PYÞÞæ76 @  ;À6ú?d YÞþ5È @  ;Á7ú?d ÐYÞ oÎ @  ;Â8ú?d ZÞ=TÏ @  ;Ã9ú?d PZÞbΛ @  ;Ä:ú?d ZÞ(—Ìe @  ;Å;ú?d ÐZÞî„uD @  ;Æ<ú?d [Þ>Ìù¬ @  ;Ç=ú?d P[Þ\¯ @  ;È>ú?d [Þ ô^Q @  ;É?ú?d Ð[Þv@Jv @  ;Ê@ú?d \Þo¹y @  ;ËAú?d P\ÞZ8¸í @  ;ÌBú?d \Þzͺ @  ;ÍCú?d Ð\Þ¼Þ2 @  ;ÎDú?d ]Þl–Ú @  ;ÏEú?d P]Þÿú9 @  ;ÐFú?d ]ÞßÇ @  ;ÑGú?d Ð]Þ LÁ @  ;ÒHú?d ^ÞHì @  ;ÓIú?d P^Þ)~í” @  ;ÔJú?d ^Þ ‹ïj @  ;ÕKú?d Ð^ÞϘVK @  ;ÖLú?d _ÞÐÚ£ @  ;×Mú?d P_Þ!  @  ;ØNú?d _Þè}^ @  ;uÐ`ÞÙOú?d Ð_Þ:»E´ @  ;ÚPú?d (`Þ„Cð, @  ;ÛQú?d h`Þ±uñ¸ @  ;ÜRú?d ¨`Þ‘€óF @  ;ÝSú?d è`ÞW“Jg @  ;ÞTú?d (aÞ‡ÛÆ @  ;ßUú?d haÞ±zÜ @  ;àVú?d ¨aÞ%Dx" @  ;áWú?d èaÞ{G"$ @  ;âXú?d€ (bÞ`U*\ @  <Yú?d hbÞ´"cá @  <Zú?d ¨bÞ”×a @  <[ú?d èbÞ—#Ó @  <\ú?d (cÞGů; @  <]ú?d hcÞ·ºUB @  <^ú?d ¨cÞ—OW¼ @  <_ú?d ècÞÿ ð @  <`ú?d (dÞæWúÿ @  < aú?d hdÞ(† @  < bú?d ¨dÞ6Ýx @  < cú?d èdÞ5‡@´ @  < dú?d (eÞåÏÌ\ @  < eú?d heÞ°6% @  <fú?d ¨eÞ5E4Û @  <gú?d èeÞUG @  <hú?d (fÞ•¯† @  <iú?d hfÞenUÿ @  <jú?d ¨fÞE›W @  <kú?d èfÞFÁÍ @  <lú?d (gÞ–‰™% @  <mú?d hgÞföc\ @  <nú?d ¨gÞFa¢ @  <oú?d ègÞ³â2 @  <pú?d (hÞ‡Š/ @  <qú?d hhÞwbpV @  <rú?d ¨hÞW—r¨ @  <sú?d èhÞTÍ0d @  <tú?d (iÞ„…¼Œ @  <uú?d hiÞtúFõ @  <vú?d ¨iÞTD  @  <wú?d èiÞxX' @  < xú?d (jÞå]øæ @  <!yú?d hjÞ"Ÿ @  <"zú?d ¨jÞ5×a @  <#{ú?d èjÞ6B­ @  <$|ú?d (kÞæÅÎE @  <%}ú?d hkÞº4< @  <&~ú?d ¨kÞ6O6 @  <'ú?d èkÞ³)  @  <(€ú?d (lÞªÁÚ @  <)ú?d hlÞZ¾ { @  <*‚ú?d ¨lÞzK"… @  <+ƒú?d èlÞy`I @  <,„ú?d (mÞ©Yì¡ @  <-…ú?d hmÞY&Ø @  <.†ú?d ¨mÞyÓ& @  </‡ú?d èmÞDÃ/º @  <0ˆú?d (nÞÙ‡{ @  <1‰ú?d hnÞ)øu @  <2Šú?d ¨nÞ wü @  <3‹ú?d ènÞ W50 @  <4Œú?d (oÞÚ¹Ø @  <5ú?d hoÞ*`C¡ @  <6Žú?d ¨oÞ •A_ @  <7ú?d èoÞÿt&Ï @  <8ú?d (pÞAªš} @  <9‘ú?d hpÞ±Õ` @  <:’ú?d ¨pÞ‘ bú @  <;“ú?d èpÞ’z 6 @  <<”ú?d (qÞB2¬Þ @  <=•ú?d hqÞ²MV§ @  <>–ú?d ¨qÞ’¸TY @  <?—ú?d èqÞ©Nç @  <@˜ú?d (rÞíî& @  <A™ú?d hrÞ}’_ @  <Bšú?d ¨rÞ]g¡ @  <C›ú?d èrÞ^=Tm @  <Dœú?d (sÞŽuØ… @  <Eú?d hsÞ~ "ü @  <Fžú?d ¨sÞ^ÿ  @  <GŸú?d èsÞ6©~N @  <H ú?d (tÞ/çA @  <I¡ú?d htÞߘw8 @  <J¢ú?d ¨tÞÿmuÆ @  <K£ú?d ètÞü77  @  <L¤ú?d (uÞ,»â @  <M¥ú?d huÞÜA› @  <N¦ú?d ¨uÞüõCe @  <O§ú?d èuÞÁåxù @  <P¨ú?d (vÞ\¡Ø8 @  <Q©ú?d hvÞ¬Þ"A @  <Rªú?d ¨vÞŒ+ ¿ @  <S«ú?d èvÞqbs @  <T¬ú?d (wÞ_9î› @  <U­ú?d hwÞ¯Fâ @  <V®ú?d ¨wÞ³ @  <W¯ú?d èwÞzRqŒ @  <X°ú?d (xÞN­ý‘ @  <Y±ú?d hxÞ¾Òè @  <Z²ú?d ¨xÞž' @  <[³ú?d èxÞ}GÚ @  <\´ú?d (yÞM5Ë2 @  <]µú?d hyÞ½J1K @  <^¶ú?d ¨yÞ¿3µ @  <_·ú?d èyÞ±©/™ @  <`¸ú?d (zÞ,íX @  <a¹ú?d hzÞÜ’u! @  <bºú?d ¨zÞügwß @  <c»ú?d èzÞÿ=5 @  <d¼ú?d ({Þ/u¹û @  <e½ú?d h{Þß C‚ @  <f¾ú?d ¨{ÞÿÿA| @  <g¿ú?d è{Þgù ! @  <hÀú?d (|Þ~·ù. @  <iÁú?d h|ÞŽÈW @  <jÂú?d ¨|Þ®=© @  <kÃú?d è|Þ­gCe @  <lÄú?d (}Þ}/Ï @  <mÅú?d h}ÞP5ô @  <nÆú?d ¨}Þ­¥7  @  <oÇú?d è}Þµ – @  <pÈú?d (~Þ ñ¬W @  <qÉú?d h~ÞýŽV. @  <rÊú?d ¨~ÞÝ{TÐ @  <sËú?d è~ÞÞ! @  <tÌú?d (Þišô @  <uÍú?d hÞþ` @  <vÎú?d ¨ÞuЀÞ'Þãbs @  <wÏú?d èÞé«â6 @  <xÐú?d @€Þ‡B @  <yÑú?d €€ÞÕï @  <zÒú?d À€ÞWŸøÅ @  <{Óú?d Þ!? @  <|Ôú?d @Þ„6á @  <}Õú?d €ÞÖ–Ù¸ @  <~Öú?d ÀÞTÎf @  <×ú?d ‚Þ*•Sö @  <€Øú?d @‚Þ¨D( @  <Ùú?d €‚Þú«q @  <‚Úú?d À‚Þx޼¯ @  <ƒÛú?d ƒÞ) eU @  <„Üú?d @ƒÞ«œr‹ @  <…Ýú?d €ƒÞù‡Ò @  <†Þú?d ÀƒÞ{Š  @  <‡ßú?d „ÞˆŸ0‘ @  <ˆàú?d @„Þ 'O @  <‰áú?d €„ÞXÈ @  <Šâú?d À„ÞÚ„ßÈ @  <‹ãú?d …Þ‹2 @  <Œäú?d @…Þ –ì @  <åú?d €…Þ[þµ @  <Žæú?d À…ÞÙék @  <çú?d †ÞûÙeè @  <èú?d @†ÞyHr6 @  <‘éú?d €†Þ+So @  <’êú?d À†Þ©Âб @  <“ëú?d ‡ÞøASK @  <”ìú?d @‡ÞzÐD• @  <•íú?d €‡Þ(Ë«Ì @  <–îú?d À‡ÞªZ¼ @  <—ïú?d ˆÞéÕ@A @  <˜ðú?d @ˆÞkDWŸ @  <™ñú?d €ˆÞ9_¸Æ @  <šòú?d ÀˆÞ»Î¯ @  <›óú?d ‰ÞêMvâ @  <œôú?d @‰ÞhÜa< @  <õú?d €‰Þ:ÇŽe @  <žöú?d À‰Þ¸V™» @  <Ÿ÷ú?d ŠÞ‹•2ˆ @  < øú?d @ŠÞ %V @  <¡ùú?d €ŠÞ[Ê @  <¢úú?d ÀŠÞÙŽÝÑ @  <£ûú?d ‹Þˆ + @  <¤üú?d @‹Þ œõ @  <¥ýú?d €‹ÞX‡ü¬ @  <¦þú?d À‹ÞÚër @  <§ÿú?d ŒÞ»nE` @  <¨û?d @ŒÞ9ÿR¾ @  <©û?d €ŒÞkä½ç @  <ªû?d ÀŒÞéuª9 @  <«û?d Þ¸ösà @  <¬û?d @Þ:gd @  <­û?d €Þh|‹D @  <®û?d ÀÞê휚 @  <¯û?d ŽÞÈ( @  <°û?d @ŽÞJ¹Ç @  <± û?d €ŽÞ¢èž @  <² û?d ÀŽÞš3ÿ@ @  <³ û?d Þ˰&º @  <´ û?d @ÞI!1d @  <µ û?d €Þ:Þ= @  <¶û?d ÀÞ™«Éã @  <·û?d ÞP @  <¸û?d @ÞÒ”Á @  <¹û?d €Þ€ý˜ @  <ºû?d ÀÞêF @  <»û?d ‘ÞS3¼ @  <¼û?d @‘ÞÑ $b @  <½û?d €‘ÞƒË; @  <¾û?d À‘Þ†Üå @  <¿û?d ’ÞœBqD @  <Àû?d @’ÞÓfš @  <Áû?d €’ÞLȉà @  <Âû?d À’ÞÎYž @  <Ãû?d “ÞŸÚGç @  <Äû?d @“ÞKP9 @  <Åû?d €“ÞOP¿` @  <Æû?d À“ÞÍÁ¨¾ @  <Çû?d ”Þ>H# @  <È û?d @”Þ¼Ùý @  <É!û?d €”ÞîÂê¤ @  <Ê"û?d À”ÞlSýz @  <Ë#û?d •Þ=Ð$€ @  <Ì$û?d @•Þ¿A3^ @  <Í%û?d €•ÞíZÜ @  <Î&û?d À•ÞoËËÙ @  <Ï'û?d –ÞMGZ @  <Ð(û?d @–ÞÏŸP„ @  <Ñ)û?d €–Þ„¿Ý @  <Ò*û?d À–Þ¨ @  <Ó+û?d —ÞN–qù @  <Ô,û?d @—ÞÌf' @  <Õ-û?d €—Þž‰~ @  <Ö.û?d À—Þž  @  <×/û?d ˜Þ_bó @  <Ø0û?d @˜ÞÝ“u- @  <Ù1û?d €˜Þˆšt @  <Ú2û?d À˜Þ ª @  <Û3û?d ™Þ\šTP @  <Ü4û?d @™ÞÞ CŽ @  <Ý5û?d €™ÞŒ¬× @  <Þ6û?d À™Þ»  @  <ß7û?d šÞ=B: @  <à8û?d @šÞ¿Óä @  <á9û?d €šÞíÈè½ @  <â:û?d€ ÀšÞšãÅ @  =;û?d ›Þ«Xr @  =<û?d @›Þ)ÉeÈ @  ==û?d €›Þ¾›q| @  =>û?d À›Þ< f¢ @  =?û?d œÞña–T @  =@û?d @œÞsðŠ @  =Aû?d €œÞïY1© @  =Bû?d ÀœÞmÈ&w @  = Cû?d Þù` @  = Dû?d @Þ{“¾ @  = Eû?d €ÞìÁ  @  = Fû?d ÀÞnPÔ @  = Gû?d žÞ/†ýÍ @  =Hû?d @žÞ­ê @  =Iû?d €žÞœdÐ @  =Jû?d ÀžÞŽs @  =Kû?d ŸÞŠDQ @  =Lû?d @ŸÞÕFÇ @  =Mû?d €ŸÞŸ‡Rs @  =NûuРÞ?d ÀŸÞE­ @  =Oû?d  ÞÕß´ÿ @  =Pû?d X ÞWN£! @  =Qû?d ˜ ÞËç @  =Rû?d Ø ÞIvÜ @  =Sû?d ¡Þݼ&Ë @  =Tû?d X¡Þ_-1 @  =Uû?d ˜¡ÞÈ%¡ @  =Vû?d Ø¡ÞJî2 @  =Wû?d ¢Þ 8ßf @  =Xû?d X¢Þ‰©È¸ @  =Yû?d ˜¢Þ©§aË @  = Zû?d Ø¢Þ+6v @  =![û?d £Þ¿üT @  ="\û?d X£Þ=mCÜ @  =#]û?d ˜£Þª?Wh @  =$^û?d Ø£Þ(®@¶ @  =%_û?d ¤Þ•¥Q @  =&`û?d X¤Þ—² @  ='aû?d ˜¤Þ ­¬ @  =(bû?d ؤÞ‰<r @  =)cû?d ¥Þö7e @  =*dû?d X¥ÞŸg » @  =+eû?d ˜¥Þ54 @  =,fû?d Ø¥ÞФ#Ñ @  =-gû?d ¦ÞËrÎÈ @  =.hû?d X¦ÞIãÙ @  =/iû?d ˜¦ÞxëWÕ @  =0jû?d ئÞúz@  @  =1kû?d §Þn°b @  =2lû?d X§Þì!u @  =3mû?d ˜§Þ{sav @  =4nû?d اÞùâv¨ @  =5oû?d ¨ÞtßÕ @  =6pû?d X¨ÞöNÂ_ @  =7qû?d ˜¨Þjçr| @  =8rû?d بÞève¢ @  =9sû?d ©Þ|¼Gµ @  =:tû?d X©Þþ-Pk @  =;uû?d ˜©ÞiDß @  =<vû?d Ø©ÞëîS @  ==wû?d ªÞª8¾ @  =>xû?d XªÞ(©©Æ @  =?yû?d ˜ªÞ¦ ' @  =@zû?d تÞ$1ù @  =A{û?d «Þ°û3î @  =B|û?d X«Þ2j$0 @  =C}û?d ˜«Þ¥80„ @  =D~û?d Ø«Þ'©'Z @  =Eû?d ¬Þ÷ƒ> @  =F€û?d X¬Þu•”à @  =Gû?d ˜¬Þé<$à @  =H‚û?d جÞk­3 @  =Iƒû?d ­Þÿg  @  =J„û?d X­Þ}öÔ @  =K…û?d ˜­Þê¤` @  =L†û?d Ø­Þh5¾ @  =M‡û?d ®Þ)ãè§ @  =Nˆû?d X®Þ«rÿy @  =O‰û?d ˜®Þšzqº @  =PŠû?d Ø®Þëfd @  =Q‹û?d ¯ÞŒ!Ds @  =RŒû?d X¯Þ°S­ @  =Sû?d ˜¯Þ™âG @  =TŽû?d دÞsPÇ @  =Uû?d °ÞoÃA @  =Vû?d X°ÞžþÔŸ @  =W‘û?d ˜°ÞWd¼ @  =X’û?d ذÞ€Æsb @  =Y“û?d ±Þ Qu @  =Z”û?d X±Þ–F« @  =[•û?d ˜±ÞÏR @  =\–û?d رÞƒ^EÁ @  =]—û?d ²Þˆ¨Ø @  =^˜û?d X²Þ@¿ @  =_™û?d ˜²Þ`u @  =`šû?d زÞ↫ @  =a›û?d ³ÞvL#¼ @  =bœû?d X³ÞôÝ4b @  =cû?d ˜³Þc Ö @  =džû?d سÞá7 @  =eŸû?d ´ÞÜ%Òï @  =f û?d X´Þ^´Å1 @  =g¡û?d ˜´ÞÂu @  =h¢û?d Ø´Þ@ŒbÌ @  =i£û?d µÞÔF@Û @  =j¤û?d XµÞV×W @  =k¥û?d ˜µÞÁ…C± @  =l¦û?d صÞCTo @  =m§û?d ¶Þ¹v @  =n¨û?d X¶Þ€S®¨ @  =o©û?d ˜¶Þ±[ k @  =pªû?d ضÞ3Ê7µ @  =q«û?d ·Þ§¢ @  =r¬û?d X·Þ%‘| @  =s­û?d ˜·Þ²ÃÈ @  =t®û?d Ø·Þ0R @  =u¯û?d ¸Þ½o¢? @  =v°û?d X¸Þ?þµá @  =w±û?d ˜¸Þ£W @  =x²û?d ظÞ!Æ @  =y³û?d ¹Þµ 0  @  =z´û?d X¹Þ7'Õ @  ={µû?d ˜¹Þ Ï3a @  =|¶û?d عÞ"^$¿ @  =}·û?d ºÞcˆÉ¦ @  =~¸û?d XºÞáÞx @  =¹û?d ˜ºÞŒFA¨ @  =€ºû?d غÞ×Vv @  =»û?d »Þšta @  =‚¼û?d X»ÞŒc¿ @  =ƒ½û?d ˜»ÞÞw  @  =„¾û?d Ø»Þ O`Õ @  =…¿û?d ¼ÞÀ$# @  =†Àû?d X¼ÞBµ‡ý @  =‡Áû?d ˜¼ÞÞ7Þ @  =ˆÂû?d ؼÞ\  @  =‰Ãû?d ½ÞÈG @  =ŠÄû?d X½ÞJÖÉ @  =‹Åû?d ˜½ÞÝ„} @  =ŒÆû?d ؽÞ_£ @  =Çû?d ¾ÞÃûº @  =ŽÈû?d X¾ÞœRìd @  =Éû?d ˜¾Þ­Zb§ @  =Êû?d ؾÞ/Ëuy @  =‘Ëû?d ¿Þ»Wn @  =’Ìû?d X¿Þ9@° @  =“Íû?d ˜¿Þ®ÂT @uÐÀÞ  =”Îû?d ؿޔŸ @  =• Ïû?d 0ÀÞȦái @  =– Ðû?d pÀÞJ7ö· @  =— Ñû?d °ÀÞÖžF” @  =˜ Òû?d ðÀÞTQJ @  =™ Óû?d 0ÁÞÀÅs] @  =š Ôû?d pÁÞBTdƒ @  =› Õû?d °ÁÞÕp7 @  =œ Öû?d ðÁÞW—gé @  = ×û?d 0ÂÞAŠð @  =ž Øû?d pÂÞ”Ð. @  =Ÿ Ùû?d °ÂÞ´Þ4] @  =  Úû?d ðÂÞ6O#ƒ @  =¡ Ûû?d 0ÃÞ¢…” @  =¢ Üû?d pÃÞ J @  =£ Ýû?d °ÃÞ·Fþ @  =¤ Þû?d ðÃÞ5×  @  =¥ ßû?d 0ÄÞìðÇ @  =¦ àû?d pÄÞŠ}ç @  =§ áû?d °ÄÞÔW: @  =¨ âû?d ðÄÞ”E@ä @  =© ãû?d 0ÅÞbó @  =ª äû?d pÅÞ‚u- @  =« åû?d °ÅÞLa™ @  =¬ æû?d ðÅÞ—ÝvG @  =­ çû?d 0ÆÞÖ ›^ @  =® èû?d pÆÞTšŒ€ @  =¯ éû?d °ÆÞe’C @  =° êû?d ðÆÞç @  =± ëû?d 0ÇÞsÉ7Š @  =² ìû?d pÇÞñX T @  =³ íû?d °ÇÞf 4à @  =´ îû?d ðÇÞä›#> @  =µ ïû?d 0ÈÞi¦€ @  =¶ ðû?d pÈÞë7—É @  =· ñû?d °ÈÞwž'ê @  =¸ òû?d ðÈÞõ04 @  =¹ óû?d 0ÉÞaÅ# @  =º ôû?d pÉÞãTý @  =» õû?d °ÉÞtI @  =¼ öû?d ðÉÞö—— @  =½ ÷û?d 0ÊÞ·AëŽ @  =¾ øû?d pÊÞ5ÐüP @  =¿ ùû?d °ÊÞ»ÙS± @  =À úû?d ðÊÞ9HDo @  =Á ûû?d 0ËÞ­‚fx @  = üû?d pËÞ/q¦ @  =à ýû?d °ËÞ¸Ae @  =Ä þû?d ðËÞ:ÐrÌ @  =Å ÿû?d 0ÌÞ©¼2 @  =Æ ü?d pÌÞ+‚«ì @  =Ç ü?d °ÌÞ·+Ï @  =È ü?d ðÌÞ5º  @  =É ü?d 0ÍÞ¡p. @  =Ê ü?d pÍÞ#á9Ø @  =Ë ü?d °ÍÞ´³-l @  =Ì ü?d ðÍÞ6":² @  =Í ü?d 0ÎÞwô׫ @  =Î ü?d pÎÞõeÀu @  =Ï  ü?d °ÎÞÄmN¶ @  =Ð  ü?d ðÎÞFüYh @  =Ñ  ü?d 0ÏÞÒ6{ @  =Ò  ü?d pÏÞP§l¡ @  =Ó  ü?d °ÏÞÇõx @  =Ô ü?d ðÏÞEdoË @  =Õ ü?d 0ÐÞBxüM @  =Ö ü?d pÐÞÀéë“ @  =× ü?d °ÐÞ\@[° @  =Ø ü?d ðÐÞÞÑLn @  =Ù ü?d 0ÑÞJny @  =Ú ü?d pÑÞÈŠy§ @  =Û ü?d °ÑÞ_Øm @  =Ü ü?d ðÑÞÝIzÍ @  =Ý ü?d 0ÒÞœŸ—Ô @  =Þ ü?d pÒÞ€  @  =ß ü?d °ÒÞ>)y @  =à ü?d ðÒÞ¼‘>§ @  =á ü?d 0ÓÞ([° @  =â ü?d€ pÓÞkün @  > ü?d °ÓÞž ó @  > ü?d ðÓÞŸ·- @  > ü?d 0ÔÞg}©' @  >  ü?d pÔÞåì¾ù @  > !ü?d °ÔÞ·÷Q  @  > "ü?d ðÔÞ5fF~ @  > #ü?d 0ÕÞo; @  > $ü?d pÕÞí,Í @  > %ü?d °ÕÞ¿”Ô @  > &ü?d ðÕÞ=ÔJ @  > 'ü?d 0ÖÞ¹šÂ¾ @  > (ü?d pÖÞ; Õ` @  > )ü?d °ÖÞi:9 @  > *ü?d ðÖÞë-ç @  > +ü?d 0×ÞXnj @  > ,ü?d p×ÞžÉy´ @  > -ü?d °×ÞÌÒ–í @  > .ü?d ð×ÞNC3 @  > /ü?d 0ØÞ7Ù÷ @  > 0ü?d pØÞ„¦Î) @  > 1ü?d °ØÞÖ½!p @  > 2ü?d ðØÞT,6® @  > 3ü?d 0ÙÞTKà @  > 4ü?d pÙÞŒÅ\ @  > 5ü?d °ÙÞÞÞ³D @  > 6ü?d ðÙÞ\O¤š @  > 7ü?d 0ÚÞØÐ²n @  > 8ü?d pÚÞZA¥° @  > 9ü?d °ÚÞZJé @  > :ü?d ðÚÞŠË]7 @  > ;ü?d 0ÛÞl9  @  > <ü?d pÛÞî….Ô @  >! =ü?d °ÛÞ¼žÁ @  >" >ü?d ðÛÞ>ÖS @  ># ?ü?d 0ÜÞ6-ÝH @  >$ @ü?d pÜÞ´¼Ê– @  >% Aü?d °ÜÞæ§%Ï @  >& Bü?d ðÜÞd62 @  >' Cü?d 0ÝÞ>NO| @  >( Dü?d pÝÞ¼ßX¢ @  >) Eü?d °ÝÞîÄ·û @  >* Fü?d ðÝÞlU % @  >+ Gü?d 0ÞÞèʶÑ @  >, Hü?d pÞÞj[¡ @  >- Iü?d °ÞÞ8@NV @  >. Jü?d ðÞÞºÑYˆ @  >/ Kü?d 0ßÞM @  >0 Lü?d pßÞÏ™ Û @  >1 Mü?d uÐàÞ/°ßÞ‚â‚ @  >2 Nü?d ðßÞ&Ô)‰ @  >3Oü?d HàÞCû£¦ @  >4Pü?d ˆàÞc¡X @  >5Qü?d ÈàÞ“q[! @  >6Rü?d áÞC9×É @  >7Sü?d HáÞK˜1’ @  >8Tü?d ˆáÞkm3l @  >9Uü?d ÈáÞ›É @  >:Vü?d âÞViÔ @  >;Wü?d HâÞÈ? @  ><Xü?d ˆâÞ½éÊÁ @  >=Yü?d ÈâÞM–0¸ @  >>Zü?d ãÞÞ¼P @  >?[ü?d HãÞ‡ßEÉ @  >@\ü?d ˆãÞ§*G7 @  >A]ü?d ÈãÞWU½N @  >B^ü?d äÞNNA @  >C_ü?d HäÞ-¶´š @  >D`ü?d ˆäÞ C¶d @  >Eaü?d ÈäÞýFbü?d åÞ-tÀõ @  >Gcü?d HåÞ%Õ&® @  >Hdü?d ˆåÞ $P @  >Ieü?d ÈåÞõ_Þ) @  >Jfü?d æÞh~è @  >Kgü?d HæÞóQß @  >Lhü?d ˆæÞÓ¤Ýý @  >Miü?d ÈæÞ#Û'„ @  >Njü?d çÞó“«l @  >Okü?d HçÞV“s× @  >Plü?d ˆçÞvfq) @  >Qmü?d ÈçÞ†‹P @  >Rnü?d èÞ²æM @  >Soü?d HèÞLüÄJ @  >Tpü?d ˆèÞl Æ´ @  >Uqü?d ÈèÞœv<Í @  >Vrü?d éÞL>°% @  >Wsü?d HéÞDŸV~ @  >Xtü?d ˆéÞdjT€ @  >Yuü?d ÈéÞ”®ù @  >Zvü?d êÞ Q8 @  >[wü?d HêÞ’¯Ó @  >\xü?d ˆêÞ²î­- @  >]yü?d ÈêÞB‘WT @  >^zü?d ëÞ’ÙÛ¼ @  >_{ü?d HëÞ&ß$· @  >`|ü?d ˆëÞ*&I @  >a}ü?d ÈëÞöUÜ0 @  >b~ü?d ìÞï/? @  >cü?d HìÞa ”g @  >d€ü?d ˆìÞAÕ–™ @  >eü?d ÈìÞ±ªlà @  >f‚ü?d íÞaâà @  >gƒü?d HíÞiCS @  >h„ü?d ˆíÞI¶­ @  >i…ü?d ÈíÞ¹ÉþÔ @  >j†ü?d îÞ$^ @  >k‡ü?d HîÞ¿Çÿþ @  >lˆü?d ˆîÞŸ2ý @  >m‰ü?d ÈîÞoMy @  >nŠü?d ïÞ¿‹‘ @  >o‹ü?d HïÞS* @  >pŒü?d ˆïÞ:ðQÔ @  >qü?d ÈïÞÊ«­ @  >rŽü?d ðÞtQ @  >sü?d HðÞŠKÔ @  >tü?d ˆðÞª¾Öæ @  >u‘ü?d ÈðÞZÁ,Ÿ @  >v’ü?d ñÞЉ w @  >w“ü?d HñÞ‚(F, @  >x”ü?d ˆñÞ¢ÝDÒ @  >y•ü?d ÈñÞR¢¾« @  >z–ü?d òÞÏæj @  >{—ü?d HòÞT¬¿ @  >|˜ü?d ˆòÞtY½ @  >}™ü?d ÈòÞ„&G @  >~šü?d óÞTnËî @  >›ü?d HóÞ­9F @  >€œü?d ˆóÞ̸ @  >ü?d ÈóÞ}³úÁ @  >‚žü?d ôÞdý Î @  >ƒŸü?d HôÞPó @  >„ ü?d ˆôÞ'¥ñë @  >…¡ü?d ÈôÞ×Ú ’ @  >†¢ü?d õÞ’‡z @  >‡£ü?d HõÞ3a! @  >ˆ¤ü?d ˆõÞ/Æcß @  >‰¥ü?d ÈõÞß¹™¦ @  >Цü?d öÞBý9g @  >‹§ü?d HöÞÙ·˜Œ @  >Œ¨ü?d ˆöÞùBšr @  >©ü?d ÈöÞ =`  @  >Žªü?d ÷ÞÙuìã @  >«ü?d H÷Þ|u4X @  >¬ü?d ˆ÷Þ\€6¦ @  >‘­ü?d È÷Þ¬ÿÌß @  >’®ü?d øÞ˜@ @  >“¯ü?d HøÞfƒÅ @  >”°ü?d ˆøÞFï; @  >•±ü?d ÈøÞ¶{B @  >–²ü?d ùÞfØ÷ª @  >—³ü?d HùÞnyñ @  >˜´ü?d ˆùÞNŒ @  >™µü?d ÈùÞ¾óév @  >š¶ü?d úÞ#·I· @  >›·ü?d HúÞ¸ýè\ @  >œ¸ü?d ˆúÞ˜ê¢ @  >¹ü?d ÈúÞhwÛ @  >žºü?d ûÞ¸?œ3 @  >Ÿ»ü?d HûÞ 9c8 @  > ¼ü?d ˆûÞ,ÌaÆ @  >¡½ü?d ÈûÞܳ›¿ @  >¢¾ü?d üÞÅýh° @  >£¿ü?d HüÞV‡z @  >¤Àü?d ˆüÞvõ…„ @  >¥Áü?d ÈüÞ†Šý @  >¦Âü?d ýÞVÂó @  >§Ãü?d HýÞ^cN @  >¨Äü?d ˆýÞ~–° @  >©Åü?d ÈýÞŽéíÉ @  >ªÆü?d þÞ­M @  >«Çü?d HþÞˆçìã @  >¬Èü?d ˆþÞ¨î @  >­Éü?d ÈþÞXmd @  >®Êü?d ÿÞˆ%˜Œ @  >¯Ëü?d HÿÞ-%@7 @  >°Ìü?d ˆÿÞ ÐBÉ @  >±uÐßÍü?d ÈÿÞý¯¸° @  >²Îü?d ß²A @  >³Ïü?d `ßLSF @  >´Ðü?d  ßlôQ¸ @  >µÑü?d àßœ‹«Á @  >¶Òü?d ßLÃ') @  >·Óü?d `ßDbÁr @  >¸Ôü?d  ßd—ÃŒ @  >¹Õü?d àß”è9õ @  >ºÖü?d ß ¬™4 @  >»×ü?d `ß’æ8ß @  >¼Øü?d  ß²:! @  >½Ùü?d àßBlÀX @  >¾Úü?d ß’$L° @  >¿Ûü?d `߈%µ) @  >ÀÜü?d  ß¨Ð·× @  >ÁÝü?d àßX¯M® @  >ÂÞü?d ßAᾡ @  >Ãßü?d `ß"LDz @  >Äàü?d  ß¹F„ @  >Åáü?d àßòƼý @  >Æâü?d ß"Ž0 @  >Çãü?d `ß*/ÖN @  >Èäü?d  ß ÚÔ° @  >Éåü?d àßú¥.É @  >Êæü?d ßgᎠ@  >Ëçü?d `ßü«/ã @  >Ìèü?d  ßÜ^- @  >Íéü?d àß,!×d @  >Îêü?d ßüi[Œ @  >Ïëü?d `ßYiƒ7 @  >Ðìü?d  ßyœÉ @  >Ñíü?d à߉ã{° @  >Òîü?d ß½÷­ @  >Óïü?d `ßC4ª @  >Ôðü?d  ßcó6T @  >Õñü?d àß“ŒÌ- @  >Öòü?d ßCÄ@Å @  >×óü?d ` ßKe¦ž @  >Øôü?d   ßk¤` @  >Ùõü?d à ß›ï^ @  >Úöü?d ß«þØ @  >Û÷ü?d ` ßá_3 @  >Üøü?d   ß½]Í @  >Ýùü?d à ßMk§´ @  >Þúü?d ß#+\ @  >ßûü?d ` ß)%ÔW @  >àüü?d   ß ÐÖ© @  >áýü?d à ßù¯,Ð @  >âþü?d€ ß”"Ãy @  ?ÿü?d ` ß„?e @  ?ý?d   ߤÊgú @  ?ý?d à ß‘üfn @  ?ý?d ßA´ê† @  ?ý?d ` ߇§S§ @  ?ý?d   ß§RQY @  ?ý?d à ß™ŸôZ @  ?ý?d ßÛT› @  ? ý?d `ßZØ @  ? ý?d  ßz- c @  ?  ý?d àßO ÷ @  ?  ý?d ߟS @  ?  ý?d `ßY@8> @  ? ý?d  ßyµ:À @  ? ý?d àßêÙ¡# @  ?ý?d ßT‘ @  ?ý?d `ßoT%{ @  ?ý?d  ßO¡'… @  ?ý?d àßz—& @  ?ý?d ߪߪù @  ?ý?d `ßlÌØ @  ?ý?d  ßL9& @  ?ý?d àßrô´% @  ?ý?d ßï°ä @  ?ý?d `ß±³Nâ @  ?ý?d  ß‘FL @  ?ý?d àߤpMˆ @  ?ý?d ßt8Á` @  ?ý?d `ß²+xA @  ?ý?d  ß’Þz¿ @  ?ý?d àß´Æì @  ? ý?d ß ú5ã @  ?!ý?d `߯4Õ @  ?" ý?d  ßë6+ @  ?#!ý?d àߺÝ7¿ @  ?$"ý?d ßj•»W @  ?%#ý?d `߬†v @  ?&$ý?d  ßŒsˆ @  ?'%ý?d àß²¾¥‹ @  ?(&ý?d ß/úJ @  ?)'ý?d `ßqù_L @  ?*(ý?d  ßQ ]² @  ?+)ý?d àßd:\& @  ?,*ý?d ß´rÐÎ @  ?-+ý?d `ßraiï @  ?.,ý?d  ßR”k @  ?/-ý?d àßÁøðò @  ?0.ý?d ßõ|ï @  ?1/ý?d `ßÎTD @  ?20ý?d  ßî¡Fû @  ?31ý?d àßÛ—Go @  ?42ý?d ß ߡ @  ?53ý?d `ßÍÌr¦ @  ?64ý?d  ßí9pX @  ?75ý?d àßÓôÕ[ @  ?86ý?d ßN°uš @  ?97ý?d `ß³/œ @  ?:8ý?d  ß0F-b @  ?;9ý?d àßp,ö @  ?<:ý?d ßÕ8  @  ?=;ý?d `ß+? @  ?><ý?d  ß3ÞÁ @  ??=ý?d àß³¡ @  ?@>ý?d ßýR @  ?A?ý?d `ßPIF( @  ?B@ý?d  ßp¼DÖ @  ?CAý?d àßEŠEB @  ?DBý?d ß•Âɪ @  ?ECý?d `ßSÑp‹ @  ?FDý?d  ßs$ru @  ?GEý?d àßMé×v @  ?HFý?d ßЭw· @  ?IGý?d `ߎ®-± @  ?JHý?d  ß®[/O @  ?KIý?d àß›m.Û @  ?LJý?d ßK%¢3 @  ?MKý?d `ß6 @  ?NLý?d  ß­ÃìuÐ ß @  ?OMý?d àß>¯‚ @  ?PNý?d 8 ßO¤\i @  ?QOý?d x ßt÷dƒ @  ?RPý?d ¸ ßTf} @  ?SQý?d ø ßa4gé @  ?TRý?d 8!ß±|ë @  ?USý?d x!ßwoR  @  ?VTý?d ¸!ßWšPÞ @  ?WUý?d ø!ßiWõÝ @  ?XVý?d 8"ßôU @  ?YWý?d x"ߪ @  ?ZXý?d ¸"ߊå ä @  ?[Yý?d ø"ß¿Ó p @  ?\Zý?d 8#ßo›€˜ @  ?][ý?d x#ß©ˆ9¹ @  ?^\ý?d ¸#߉};G @  ?_]ý?d ø#ß ‡ @  ?`^ý?d 8$ßYt @  ?a_ý?d x$ß´½u- @  ?b`ý?d ¸$ß”HwÓ @  ?caý?d ø$ß¡~vG @  ?dbý?d 8%ßq6ú¯ @  ?ecý?d x%ß·%CŽ @  ?fdý?d ¸%ß—ÐAp @  ?geý?d ø%ß©äs @  ?hfý?d 8&ß4YD² @  ?igý?d x&ßjZ´ @  ?jhý?d ¸&ßJ¯J @  ?kiý?d ø&ß™Þ @  ?ljý?d 8'߯ё6 @  ?mký?d x'ßiÂ( @  ?nlý?d ¸'ßI7*é @  ?omý?d ø'ßÚ[±  @  ?pný?d 8(ßî¤= @  ?qoý?d x(ßÕ÷ý @  ?rpý?d ¸(ßõ @  ?sqý?d ø(ßÀ4— @  ?trý?d 8)ß|Š @  ?usý?d x)ßÖo3^ @  ?vtý?d ¸)ßöš1  @  ?wuý?d ø)ßÈW”£ @  ?xvý?d 8*ßU4b @  ?ywý?d x*ß nd @  ?zxý?d ¸*ß+ålš @  ?{yý?d ø*ßÓm @  ?|zý?d 8+ßΛáæ @  ?}{ý?d x+߈XÇ @  ?~|ý?d ¸+ß(}Z9 @  ?}ý?d ø+ßçFÐÉ @  ?€~ý?d 8,ßþ#Æ @  ?ý?d x,ßµzcs @  ?‚€ý?d ¸,ß•a @  ?ƒý?d ø,ß ¹` @  ?„‚ý?d 8-ßpñìñ @  ?…ƒý?d x-ß¶âUÐ @  ?†„ý?d ¸-ß–W. @  ?‡…ý?d ø-ߨÚò- @  ?ˆ†ý?d 8.ß5žRì @  ?‰‡ý?d x.ßkê @  ?Šˆý?d ¸.ßKh  @  ?‹‰ý?d ø.ß~^ € @  ?ŒŠý?d 8/ß®‡h @  ?‹ý?d x/ßh>I @  ?ŽŒý?d ¸/ßHð<· @  ?ý?d ø/ßÛœ§T @  ?Žý?d 80ßeBæ @  ?‘ý?d x0ß^#  @  ?’ý?d ¸0ß~ä!ò @  ?“‘ý?d ø0ßKÒ f @  ?”’ý?d 81ß›š¬Ž @  ?•“ý?d x1ß]‰¯ @  ?–”ý?d ¸1ß}|Q @  ?—•ý?d ø1ßC±²R @  ?˜–ý?d 82ßÞõ“ @  ?™—ý?d x2߀öH• @  ?š˜ý?d ¸2ß Jk @  ?›™ý?d ø2ß•5Kÿ @  ?œšý?d 83ßE}Ç @  ?›ý?d x3߃n~6 @  ?žœý?d ¸3ߣ›|È @  ?Ÿý?d ø3ß!ñÀ› @  ? žý?d 84ß8¿3” @  ?¡Ÿý?d x4ßž[2¢ @  ?¢ ý?d ¸4ß¾®0\ @  ?£¡ý?d ø4ß‹˜1È @  ?¤¢ý?d 85ß[н  @  ?¥£ý?d x5ßà @  ?¦¤ý?d ¸5ß½6ÿ @  ?§¥ý?d ø5߃û£ü @  ?¨¦ý?d 86ß¿= @  ?©§ý?d x6ß@¼Y; @  ?ª¨ý?d ¸6ß`I[Å @  ?«©ý?d ø6ßUZQ @  ?¬ªý?d 87ß…7Ö¹ @  ?­«ý?d x7ßC$o˜ @  ?®¬ý?d ¸7ßcÑmf @  ?¯­ý?d ø7ßð½ö… @  ?°®ý?d 88ßÄBz˜ @  ?±¯ý?d x8ßÿBr @  ?²°ý?d ¸8ßßä@Œ @  ?³±ý?d ø8ßêÒA @  ?´²ý?d 89ß:šÍð @  ?µ³ý?d x9ßü‰tÑ @  ?¶´ý?d ¸9ßÜ|v/ @  ?·µý?d ø9ßâ±Ó, @  ?¸¶ý?d 8:ßõsí @  ?¹·ý?d x:ß!ö)ë @  ?º¸ý?d ¸:ß+ @  ?»¹ý?d ø:ß45* @  ?¼ºý?d 8;ßä}¦i @  ?½»ý?d x;ß"nH @  ?¾¼ý?d ¸;ß›¶ @  ?¿½ý?d ø;ß.ö§w @  ?À¾ý?d 8<ß7¸Tx @  ?Á¿ý?d x<ßa @_ @  ?ÂÀý?d ¸<ßAùB¡ @  ?ÃÁý?d ø<ßtÏC5 @  ?ÄÂý?d 8=ߤ‡ÏÝ @  ?ÅÃý?d x=ßb”vü @  ?ÆÄý?d ¸=ßBat @  ?ÇÅý?d ø=ß|¬Ñ @  ?ÈÆý?d 8>ßáèqÀ @  ?ÉÇý?d x>ß¿ë+Æ @  ?ÊÈý?d ¸>ߟ)8 @  ?ËÉý?d ø>ߪ((¬ @  ?ÌÊý?d 8?ßz`¤D @  ?ÍËý?d x?ß¼se @  ?ÎÌý?duÐ@ß7 ¸?ßœ†› @  ?ÏÍý?d ø?ßrj÷ @  ?ЀÎý?d P@ß±ÆM8 @  ?Ñ€Ïý?d @ß(ñ`ò @  ?Ò€Ðý?d Ð@ߪ`w, @  ?Ó€Ñý?d AßÍíŽ @  ?Ô€Òý?d PAßOúP @  ?Õ€Óý?d Aß+iVQ @  ?Ö€Ôý?d ÐAß©øA @  ?×€Õý?d B߈àS“ @  ?Ø€Öý?d PBß qDM @  ?Ù€×ý?d Bßö k @  ?Ú€Øý?d ÐBßt‡µ @  ?Û€Ùý?d Cßh† @  ?Ü€Úý?d PCß‘ù‘É @  ?Ý€Ûý?d CßõŽ=È @  ?Þ€Üý?d ÐCßw* @  ?߀Ýý?d Dßnªr” @  ?à€Þý?d PDßì;eJ @  ?á€ßý?d Dßè»q\ @  ?â€àý?d€ ÐDߤ¤· @  @€áý?d Eß‚ v< @  @€âý?d PEß›aâ @  @€ãý?d Eß¡¥6 @  @€äý?d ÐEß#4!Ð @  @€åý?d FßÌžl¶ @  @€æý?d PFßN{h @  @€çý?d Fß|Úk4 @  @€èý?d ÐFßþK|ê @  @ €éý?d Gß\í¥ @  @ €êý?d PGßÞ| { @  @ €ëý?d GßB]— @  @ €ìý?d ÐGßýÓJI @  @ €íý?d Hß»Â+ó @  @€îý?d PHß9S<- @  @€ïý?d HßÃwp} @  @€ðý?d ÐHßAæg£ @  @€ñý?d Ißã@ì @  @€òý?d PIßaÑ2 @  @€óý?d IßÀïFÞ @  @€ôý?d ÐIßB~Q @  @€õý?d Jß­Ôf @  @€öý?d PJß/E ¸ @  @€÷ý?d Jßä @  @€øý?d ÐJߟ : @  @€ùý?d Kß=§mu @  @€úý?d PKß¿6z« @  @€ûý?d Kß-G @  @€üý?d ÐKßœ™:™ @  @€ýý?d Lß÷9$1 @  @€þý?d PLßu¨3ï @  @€ÿý?d Lß#î@y @  @ €þ?d ÐLß¡W§ @  @!€þ?d MßÙ6è @  @"€þ?d PMßH!6 @  @#€þ?d Mß vvÚ @  @$€þ?d ÐMߢça @  @%€þ?d NßMM,b @  @&€þ?d PNßÏÜ;¼ @  @'€þ?d Nßý +à @  @(€þ?d ÐNߘ<> @  @)€ þ?d OßÝ>]q @  @*€ þ?d POß_¯J¯ @  @+€ þ?d Oßþ‘C @  @,€ þ?d ÐOß|  @  @-€ þ?d Pß°0[ˆ @  @.€þ?d PPß2¡LV @  @/€þ?d PßÈ… @  @0€þ?d ÐPßJØ @  @1€þ?d Qßè²v— @  @2€þ?d PQßj#aI @  @3€þ?d QßË6¥ @  @4€þ?d ÐQßIŒ!{ @  @5€þ?d Rߦ&l @  @6€þ?d PRß$·{à @  @7€þ?d RßbkŸ @  @8€þ?d ÐRß”ó|A @  @9€þ?d Sß6U @  @:€þ?d PSß´Ä Ð @  @;€þ?d Sßú]< @  @<€þ?d ÐSß—kJâ @  @=€þ?d TßüËTJ @  @>€þ?d PTß~ZC” @  @?€þ?d TߦÈ: @  @@€ þ?d ÐTß$Yä @  @A€!þ?d U߆ÿa« @  @B€"þ?d PUßnvu @  @C€#þ?d UߥP!™ @  @D€$þ?d ÐUß'Á6G @  @E€%þ?d VßÈk{! @  @F€&þ?d PVßJúlÿ @  @G€'þ?d Vßx/|£ @  @H€(þ?d ÐVßú¾k} @  @I€)þ?d WßX 2 @  @J€*þ?d PWßÚ‰ì @  @K€+þ?d Wß{·J @  @L€,þ?d ÐWßù&]Þ @  @M€-þ?d Xß¿7þ?d P\ßq]$x @  @_€?þ?d \ß÷˜cU @  @`€@þ?d Ð\ßu t‹ @  @a€Aþ?d ]ßׯÄ @  @b€Bþ?d P]ßU> @  @c€Cþ?d ]ßôUö @  @d€Dþ?d Ð]ßv‘B( @  @e€Eþ?d ^ß™;N @  @f€Fþ?d P^ߪ @  @g€Gþ?d ^ß)Ì @  @h€Hþ?d Ð^ß«î @  @i€Iþ?d _ß H~] @  @j€Jþ?d P_ß‹Ùiƒ @  @k€Kþ?d _ß*ç>o @  @uÐ`ßl€Lþ?d Ð_ßÕöZÍ @  @mMþ?d (`ßàò @  @nNþ?d h`ß›q, @  @oOþ?d ¨`ßaUY| @  @pPþ?d è`ßãÄN¢ @  @qQþ?d (aßAb/í @  @rRþ?d haßÃó83 @  @sSþ?d ¨aßbÍoß @  @tTþ?d èaßà\x @  @uUþ?d (bßö5g @  @vVþ?d hbßg"¹ @  @wWþ?d ¨bß¿²2å @  @xXþ?d èbß=#%; @  @yYþ?d (cߟ…Dt @  @zZþ?d hcßSª @  @{[þ?d ¨cß¼*F @  @|\þ?d ècß>»˜ @  @}]þ?d (dßU 0 @  @~^þ?d hdß׊î @  @_þ?d ¨dßìN~q @  @€`þ?d èdßnßi¯ @  @aþ?d (eßÌyà @  @‚bþ?d heßNè> @  @ƒcþ?d ¨eßïÖHÒ @  @„dþ?d èeßmG_  @  @…eþ?d (fß‚íj @  @†fþ?d hfß|´ @  @‡gþ?d ¨fß2©è @  @ˆhþ?d èfß°86 @  @‰iþ?d (gßžcy @  @Šjþ?d hgßt§ @  @‹kþ?d ¨gß11#K @  @Œlþ?d ègß³ 4• @  @mþ?d (hßõ±U/ @  @Žnþ?d hhßw Bñ @  @oþ?d ¨hß¡ @  @pþ?d èhß• @  @‘qþ?d (iß­3x0 @  @’rþ?d hiß/¢oî @  @“sþ?d ¨iߎœ8 @  @”tþ?d èiß /Ü @  @•uþ?d (jßã§bº @  @–vþ?d hjßa6ud @  @—wþ?d ¨jßSãe8 @  @˜xþ?d èjßÑrræ @  @™yþ?d (kßsÔ© @  @šzþ?d hkßñEw @  @›{þ?d ¨kßP{S› @  @œ|þ?d èkßÒêDE @  @}þ?d (lß¹JZí @  @ž~þ?d hlß;ÛM3 @  @Ÿþ?d ¨lß Ø^Œ @  @ €þ?d èlß"IIR @  @¡þ?d (m߀ï( @  @¢‚þ?d hmß~?à @  @£ƒþ?d ¨mߣ@h/ @  @¤„þ?d èmß!Ññ @  @¥…þ?d (nßÎ{2— @  @¦†þ?d hnßLê%I @  @§‡þ?d ¨nß~?5 @  @¨ˆþ?d ènßü®"Ë @  @©‰þ?d (oß^C„ @  @ªŠþ?d hoßÜ™TZ @  @«‹þ?d ¨oß}§¶ @  @¬Œþ?d èoßÿ6h @  @­þ?d (pß3E} @  @®Žþ?d hpß±—R£ @  @¯þ?d ¨pßK³ó @  @°þ?d èpßÉ" - @  @±‘þ?d (qßk„hb @  @²’þ?d hqßé¼ @  @³“þ?d ¨qßH+(P @  @´”þ?d èqßʺ?Ž @  @µ•þ?d (rß%rè @  @¶–þ?d hrß§e6 @  @·—þ?d ¨rß•Tuj @  @¸˜þ?d èrßÅb´ @  @¹™þ?d (sßµcû @  @ºšþ?d hsß7ò% @  @»›þ?d ¨sß–ÌCÉ @  @¼œþ?d èsß]T @  @½þ?d (tßF:–j @  @¾ žþ?d htßÄ«´ @  @¿ Ÿþ?d ¨tß9Õ @  @À  þ?d ètßž¨ÂÄ @  @Á ¡þ?d (uß<£‹ @  @ ¢þ?d huß¾Ÿ´U @  @à £þ?d ¨uߡ㹠@  @Ä ¤þ?d èuß0ôg @  @Å ¥þ?d (vßrš¹ @  @Æ ¦þ?d hvßð ®ß @  @Ç §þ?d ¨vßÂÞ¾ƒ @  @È ¨þ?d èvß@O©] @  @É ©þ?d (wßâéÈ @  @Ê ªþ?d hwß`xßÌ @  @Ë «þ?d ¨wßÁFˆ  @  @Ì ¬þ?d èwßCןþ @  @Í ­þ?d (x߯þD @  @Î ®þ?d hx߇Wéš @  @Ï ¯þ?d ¨xß}s¥Ê @  @Ð °þ?d èxßÿâ² @  @Ñ ±þ?d (yß]DÓ[ @  @Ò ²þ?d hyßßÕÄ… @  @Ó ³þ?d ¨yß~ë“i @  @Ô ´þ?d èyßüz„· @  @Õ µþ?d (zßÐÉÑ @  @Ö ¶þ?d hzß‘AÞ @  @× ·þ?d ¨zߣ”ÎS @  @Ø ¸þ?d èzß!Ù @  @Ù ¹þ?d ({߃£¸Â @  @Ú ºþ?d h{ß2¯ @  @Û »þ?d ¨{ß  øð @  @Ü ¼þ?d è{ß"ï. @  @Ý ½þ?d (|ßI=ñ† @  @Þ ¾þ?d h|ßˬæX @  @ß ¿þ?d ¨|ßMi¡u @  @à Àþ?d è|ßÏø¶« @  @á Áþ?d (}ßm^×ä @  @â Âþ?d€ h}ß› Üœ @  A Ãþ?d ¨}ßÛsÃY @  A Äþ?d è}ßYâÔ‡ @  A Åþ?d (~ßsb  @  A Æþ?d h~ßñuÒ @  A Çþ?d ¨~ß ÷:ô @  A Èþ?d è~ßf-* @  A Éþ?d (ßãr @  A Êþ?d hßaãÁ @  A Ëþ?d ¨ßuЀß'”¨À @  A Ìþ?d èß¾ÂcË @  A Íþ?d @€ßgÛ—õ @  A Îþ?d €€ßG.•  @  A Ïþ?d À€ß|}­á @  AÐþ?d ߬5!  @  AÑþ?d @ß?Yºê @  AÒþ?d €ß¬¸ @  AÓþ?d ÀßÙ¿5 @  AÔþ?d ‚ßDû¡ô @  AÕþ?d @‚ßqÍ ` @  AÖþ?d €‚ßQ8¢ž @  A×þ?d À‚ß;ø˜ @  AØþ?d ƒßßstp @  AÙþ?d @ƒßá¾Ñs @  AÚþ?d €ƒßÁKÓ @  AÛþ?d ÀƒßXj¬ @  AÜþ?d „ß™£ @  AÝþ?d @„ß+ ˜7 @  AÞþ?d €„ß ÕšÉ @  Aßþ?d À„ß­1›ÿ @  Aàþ?d …ß}y @  Aáþ?d @…ßÿ«D @  A âþ?d €…ßßæ©º @  A!ãþ?d À…ßõ› @  A"äþ?d †ß„±°Z @  A#åþ?d @†ß±‡±Î @  A$æþ?d €†ß‘r³0 @  A%çþ?d À†ßÏqé6 @  A&èþ?d ‡ß9eÞ @  A'éþ?d @‡ß!ôÀÝ @  A(êþ?d €‡ßÂ# @  A)ëþ?d À‡ßÇ{ @  A*ìþ?d ˆßóí÷ @  A+íþ?d @ˆßÆÛö‹ @  A,îþ?d €ˆßæ.ôu @  A-ïþ?d ÀˆßÝ}ÌŸ @  A.ðþ?d ‰ß 5@w @  A/ñþ?d @‰ßžYÛ” @  A0òþ?d €‰ß¾¬Ùj @  A1óþ?d À‰ßx¿`K @  A2ôþ?d ŠßåûÀŠ @  A3õþ?d @ŠßÐÍÁ @  A4öþ?d €Šßð8Ãà @  A5÷þ?d ÀŠß®;™æ @  A6øþ?d ‹ß~s @  A7ùþ?d @‹ß@¾°  @  A8úþ?d €‹ß`K²ó @  A9ûþ?d À‹ß¦X Ò @  A:üþ?d Œß¿øÝ @  A;ýþ?d @ŒßŠ ùI @  A<þþ?d €ŒßªÕû· @  A=ÿþ?d ÀŒßžÀî @  A>ÿ?d ßNˆbæ @  A?ÿ?d @ßbåØ' @  A@ÿ?d €ßBÚÙ @  AAÿ?d Àß„cø @  ABÿ?d ŽßGÃ9 @  ACÿ?d @Žß,q­ @  ADÿ?d €Žß „ÀS @  AEÿ?d ÀŽßR‡šU @  AFÿ?d ߂Ͻ @  AG ÿ?d @ß¼³¾ @  AH ÿ?d €ßœ÷±@ @  AI ÿ?d ÀßZäa @  AJ ÿ?d ßä:´Ó @  AK ÿ?d @ßÑ µG @  ALÿ?d €ßñù·¹ @  AMÿ?d ÀßʪS @  ANÿ?d ‘ßâ» @  AOÿ?d @‘ß‰Ž˜X @  APÿ?d €‘ß©{š¦ @  AQÿ?d À‘ßoh#‡ @  ARÿ?d ’ßò,ƒF @  ASÿ?d @’ßÇ‚Ò @  ATÿ?d €’ßçï€, @  AUÿ?d À’ß¹ìÚ* @  AVÿ?d “ßi¤V @  AWÿ?d @“ßWióÁ @  AXÿ?d €“ßwœñ? @  AYÿ?d À“ß±H @  AZÿ?d ”ߨÁ» @  A[ÿ?d @”ß÷º… @  A\ÿ?d €”ß½¸{ @  A]ÿ?d À”ßæ¹M @  A^ ÿ?d •ßË®5¥ @  A_!ÿ?d @•ßIĉö @  A`"ÿ?d €•ßi1‹ @  Aa#ÿ?d À•߯"2) @  Ab$ÿ?d –ß2f’è @  Ac%ÿ?d @–ßP“| @  Ad&ÿ?d €–ß'¥‘‚ @  Ae'ÿ?d À–ßy¦Ë„ @  Af(ÿ?d —ß©îGl @  Ag)ÿ?d @—ß—#âo @  Ah*ÿ?d €—ß·Öà‘ @  Ai+ÿ?d À—ßqÅY° @  Aj,ÿ?d ˜ßE:Õ­ @  Ak-ÿ?d @˜ßp Ô9 @  Al.ÿ?d €˜ßPùÖÇ @  Am/ÿ?d À˜ßkªî- @  An0ÿ?d ™ß»âbÅ @  Ao1ÿ?d @™ß(Žù& @  Ap2ÿ?d €™ß{ûØ @  Aq3ÿ?d À™ßÎhBù @  Ar4ÿ?d šßS,â8 @  As5ÿ?d @šßf㬠@  At6ÿ?d €šßFïáR @  Au7ÿ?d Àšßì»T @  Av8ÿ?d ›ßȤ7¼ @  Aw9ÿ?d @›ßöi’¿ @  Ax:ÿ?d €›ßÖœA @  Ay;ÿ?d À›ß)` @  Az<ÿ?d œß ÁÚo @  A{=ÿ?d @œß<÷Ûû @  A|>ÿ?d €œßÙ @  A}?ÿ?d ÀœßJ¶Í" @  A~@ÿ?d ßšþAÊ @  AAÿ?d @ßUÅË: @  A€Bÿ?d €ßu0ÉÄ @  ACÿ?d Àß³#på @  A‚Dÿ?d žß.gÐ$ @  AƒEÿ?d @žßQѰ @  A„Fÿ?d €žß;¤ÓN @  A…Gÿ?d Àžße§‰H @  A†Hÿ?d Ÿßµï  @  A‡Iÿ?d @Ÿß‹" £ @  AˆJÿ?d €Ÿß«×¢] @  A‰KÿuРß?d ÀŸßmÄ| @  AŠLÿ?d  ß%Ï @  A‹ Mÿ?d X ß>[ @  AŒ Nÿ?d ˜ ß0Ë¥ @  A Oÿ?d Ø ß ˜"O @  AŽ Pÿ?d ¡ßÛЮ§ @  A Qÿ?d X¡ßH¼5D @  A Rÿ?d ˜¡ßhI7º @  A‘ Sÿ?d ء߮ZŽ› @  A’ Tÿ?d ¢ß3.Z @  A“ Uÿ?d X¢ß(/Î @  A” Vÿ?d ˜¢ß&Ý-0 @  A• Wÿ?d Ø¢ßxÞw6 @  A– Xÿ?d £ß¨–ûÞ @  A— Yÿ?d X£ß–[^Ý @  A˜ Zÿ?d ˜£ß¶®\# @  A™ [ÿ?d Ø£ßp½å @  Aš \ÿ?d ¤ßió  @  A› ]ÿ?d X¤ß\Å™ @  Aœ ^ÿ?d ˜¤ß|0g @  A _ÿ?d ؤßÚÔQ @  Až `ÿ?d ¥ß œ˜¹ @  AŸ aÿ?d X¥ßˆö$ê @  A  bÿ?d ˜¥ß¨& @  A¡ cÿ?d Ø¥ßnŸ5 @  A¢ dÿ?d ¦ßóT?ô @  A£ eÿ?d X¦ßÆb>` @  A¤ fÿ?d ˜¦ßæ—<ž @  A¥ gÿ?d ئ߸”f˜ @  A¦ hÿ?d §ßhÜêp @  A§ iÿ?d X§ßVOs @  A¨ jÿ?d ˜§ßväM @  A© kÿ?d اß°÷ô¬ @  Aª lÿ?d ¨ß„x± @  A« mÿ?d X¨ß±>y% @  A¬ nÿ?d ˜¨ß‘Ë{Û @  A­ oÿ?d بߪ˜C1 @  A® pÿ?d ©ßzÐÏÙ @  A¯ qÿ?d X©ßé¼T: @  A° rÿ?d ˜©ßÉIVÄ @  A± sÿ?d Ø©ßZïå @  A² tÿ?d ªß’O$ @  A³ uÿ?d Xªß§(N° @  A´ vÿ?d ˜ªß‡ÝLN @  Aµ wÿ?d تßÙÞH @  A¶ xÿ?d «ß –š  @  A· yÿ?d X«ß7[?£ @  A¸ zÿ?d ˜«ß®=] @  A¹ {ÿ?d Ø«ßѽ„| @  Aº |ÿ?d ¬ßÈóws @  A» }ÿ?d X¬ßýÅvç @  A¼ ~ÿ?d ˜¬ßÝ0t @  A½ ÿ?d جß–B4¬ @  A¾ €ÿ?d ­ßF ¸D @  A¿ ÿ?d X­ßjg… @  AÀ ‚ÿ?d ˜­ßJ’{ @  AÁ ƒÿ?d حߌ¹Z @  A „ÿ?d ®ßÅ› @  Aà …ÿ?d X®ß$ó @  AÄ †ÿ?d ˜®ßñ @  AÅ ‡ÿ?d Ø®ßZ@÷ @  AÆ ˆÿ?d ¯ßŠMÌ @  AÇ ‰ÿ?d X¯ß´€i @  AÈ Šÿ?d ˜¯ß”ukâ @  AÉ ‹ÿ?d دßRfÒà @  AÊ Œÿ?d °ßì¸nq @  AË ÿ?d X°ßÙŽoå @  AÌ Žÿ?d ˜°ßù{m @  AÍ ÿ?d ذßÂ(Uñ @  AÎ ÿ?d ±ß`Ù @  AÏ ‘ÿ?d X±ß Bú @  AÐ ’ÿ?d ˜±ß¡ù@ @  AÑ “ÿ?d رßgêù% @  AÒ ”ÿ?d ²ßú®Yä @  AÓ •ÿ?d X²ßϘXp @  AÔ –ÿ?d ˜²ßïmZŽ @  AÕ —ÿ?d زß±nˆ @  AÖ ˜ÿ?d ³ßa&Œ` @  A× ™ÿ?d X³ß_ë)c @  AØ šÿ?d ˜³ß+ @  AÙ ›ÿ?d سß¹ ’¼ @  AÚ œÿ?d ´ß Ca³ @  AÛ ÿ?d X´ß•u`' @  AÜ žÿ?d ˜´ßµ€bÙ @  AÝ Ÿÿ?d Ø´ßdcï @  AÞ  ÿ?d µßÃ,ï @  Aß ¡ÿ?d XµßAFST @  Aà ¢ÿ?d ˜µßa³Qª @  Aá £ÿ?d صß§ è‹ @  Aâ ¤ÿ?d€ ¶ßû£¿J @  B ¥ÿ?d X¶ß/Ôö÷ @  B ¦ÿ?d ˜¶ß!ô  @  B §ÿ?d ضß”kUâ @  B ¨ÿ?d ·ßD#Ù  @  B ©ÿ?d X·ß´\#s @  B ªÿ?d ˜·ß”©! @  B «ÿ?d Ø·ßœÇÖ @  B ¬ÿ?d ¸ß¨÷KË @  B ­ÿ?d X¸ßXˆ±² @  B ®ÿ?d ˜¸ßx}³L @  B ¯ÿ?d ظ߆gpK @  B °ÿ?d ¹ßV/ü£ @  B ±ÿ?d X¹ß¦PÚ @  B ²ÿ?d ˜¹ß†¥$ @  B ³ÿ?d عß#¥ÜŸ @  B ´ÿ?d ºß¾á|^ @  B µÿ?d XºßNž†' @  B ¶ÿ?d ˜ºßnk„Ù @  B ·ÿ?d غßõ!%2 @  B ¸ÿ?d »ß%i©Ú @  B ¹ÿ?d X»ßÕS£ @  B ºÿ?d ˜»ßõãQ] @  B »ÿ?d Ø»ßýB· @  B ¼ÿ?d ¼ßä D  @  B ½ÿ?d X¼ßs¾p @  B ¾ÿ?d ˜¼ß4†¼Ž @  B ¿ÿ?d ؼß§{SD @  B Àÿ?d ½ßw3߬ @  B Áÿ?d X½ß‡L%Õ @  B Âÿ?d ˜½ß§¹'+ @  B Ãÿ?d ؽß¿Ø  @  B Äÿ?d ¾ßŽûxá @  B! Åÿ?d X¾ß~„‚˜ @  B" Æÿ?d ˜¾ß^q€f @  B# Çÿ?d ؾßÅ;! @  B$ Èÿ?d ¿ßs­e @  B% Éÿ?d X¿ßå W @  B& Êÿ?d ˜¿ßÅùUâ @uÐÀß  B' Ëÿ?d Ø¿ßôŸol @  B(Ìÿ?d 0Àßo>> @  B)Íÿ?d pÀß`ÄG @  B*Îÿ?d °Àß@对 @  B+Ïÿ?d ðÀß¾ÿ¾ @  B,Ðÿ?d 0Áßn·‰V @  B-Ñÿ?d pÁßžÈs/ @  B.Òÿ?d °Áß¾=qÑ @  B/Óÿ?d ðÁß=©j @  B0Ôÿ?d 0Â߆y « @  B1Õÿ?d pÂßvóÒ @  B2Öÿ?d °ÂßVóñ, @  B3×ÿ?d ðÂß͹PÇ @  B4Øÿ?d 0ÃßñÜ/ @  B5Ùÿ?d pÃßíŽ&V @  B6Úÿ?d °ÃßÍ{$¨ @  B7Ûÿ?d ðÃßÅÚÂó @  B8Üÿ?d 0ÄßÜ”1ü @  B9Ýÿ?d pÄß,ëË… @  B:Þÿ?d °Äß É{ @  B;ßÿ?d ðÄßo³3  @  B<àÿ?d 0Åß¿û¿H @  B=áÿ?d pÅßO„E1 @  B>âÿ?d °ÅßoqGÏ @  B?ãÿ?d ðÅßup¾V @  B@äÿ?d 0Æßè4— @  BAåÿ?d pÆßKäî @  BBæÿ?d °Æß8¾æ @  BCçÿ?d ðÆß£ôGû @  BDèÿ?d 0Çßs¼Ë @  BEéÿ?d pÇ߃Ã1j @  BFêÿ?d °Çߣ63” @  BGëÿ?d ðÇß«—ÕÏ @  BHìÿ?d 0ÈߟhYÒ @  BIíÿ?d pÈßo£« @  BJîÿ?d °ÈßOâ¡U @  BKïÿ?d ðÈß±øbR @  BLðÿ?d 0Éßa°îº @  BMñÿ?d pÉß‘Ïà @  BNòÿ?d °Éß±:= @  BOóÿ?d ðÉß:Ά @  BPôÿ?d 0Ê߉~nG @  BQõÿ?d pÊßy”> @  BRöÿ?d °ÊßYô–À @  BS÷ÿ?d ðÊß¾7+ @  BTøÿ?d 0Ëßö»Ã @  BUùÿ?d pËßâ‰Aº @  BVúÿ?d °ËßÂ|CD @  BWûÿ?d ðËßÊÝ¥ @  BXüÿ?d 0ÌßÓ“V @  BYýÿ?d pÌß#ì¬i @  BZþÿ?d °Ìß®— @  B[ÿÿ?d ðÌßjK4 @  B\?d 0Íß@"ÇÜ @  B]?d pÍß°]=¥ @  B^?d °Íߨ?[ @  B_?d ðÍß$®ÀP @  B`?d 0Îß¹ê`‘ @  Ba?d pÎßI•šè @  Bb?d °Îßi`˜ @  Bc?d ðÎßò*9ý @  Bd?d 0Ïß"bµ @  Be ?d pÏßÒOl @  Bf ?d °ÏßòèM’ @  Bg ?d ðÏßúI«É @  Bh ?d 0ÐßD—{ @  Bi ?d pÐß´èí @  Bj?d °Ðß”ïü @  Bk?d ðÐßj,û @  Bl?d 0ÑߺO  @  Bm?d pÑßJ0Zj @  Bn?d °ÑßjÅX” @  Bo?d ðÑßÏÅ€/ @  Bp?d 0ÒßR î @  Bq?d pÒߢþÚ— @  Br?d °Òß‚ Øi @  Bs?d ðÒßAy‚ @  Bt?d 0ÓßÉ õj @  Bu?d pÓß9v @  Bv?d °Ó߃ í @  Bw?d ðÓß"ë¶ @  Bx?d 0Ôßl¹ @  By?d pÔßøâÀ @  Bz?d °Ôߨæà> @  B{?d ðÔß»Kå @  B| ?d 0Õßk–  @  B}!?d pÕß›|lt @  B~"?d °Õß»‰nŠ @  B#?d ðÕßBÞ§" @  B€$?d 0Ößßšã @  B%?d pÖß/åýš @  B‚&?d °Ößÿd @  Bƒ'?d ðÖß”Z^ @  B„(?d 0×ßDÒg @  B…)?d p×ß´m( @  B†*?d °×ß”˜*à @  B‡+?d ð×ßœ9Ì» @  Bˆ,?d 0Øß¨Æ@¦ @  B‰-?d pØßX¹ºß @  BŠ.?d °ØßxL¸! @  B‹/?d ðØß†V{& @  BŒ0?d 0ÙßV÷Î @  B1?d pÙߦa · @  BŽ2?d °Ù߆”I @  B3?d ðÙß#”×ò @  B4?d 0Úß¾Ðw3 @  B‘5?d pÚßN¯J @  B’6?d °ÚßnZ´ @  B“7?d ðÚßõ._ @  B”8?d 0Ûß%X¢· @  B•9?d pÛßÕ'XÎ @  B–:?d °ÛßõÒZ0 @  B—;?d ðÛßýs¼k @  B˜<?d 0Üßä=Od @  B™=?d pÜßBµ @  Bš>?d °Üß4··ã @  B›??d ðÜß§JX) @  Bœ@?d 0ÝßwÔÁ @  BA?d pÝ߇}.¸ @  BžB?d °Ýß§ˆ,F @  BŸC?d ðÝߎÓM @  B D?d 0ÞߎÊsŒ @  B¡E?d pÞß~µ‰õ @  B¢F?d °Þß^@‹  @  B£G?d ðÞßÅ *à @  B¤H?d 0ßßB¦ @  B¥I?d pßßå=\q @  B¦J?d uÐàß/°ßßÅÈ^ @  B§K?d ðßßÍi¸Ô @  B¨L?d HàßÔÍæ" @  B©M?d ˆàß†Ö { @  BªN?d ÈàßG¥ @  B«O?d áߨ„F” @  B¬P?d Háß*QJ @  B­Q?d ˆáßx¾ @  B®R?d ÈáßúŸ©Í @  B¯S?d âß@JÆi @  B°T?d HâßÂÛÑ· @  B±U?d ˆâßÀ>î @  B²V?d ÈâßQ)0 @  B³W?d ãßÛÂí @  B´X?d HãßYS3 @  BµY?d ˆãß Hëj @  B¶Z?d Èã߉Ùü´ @  B·[?d äß§þ> @  B¸\?d Häߘ6éà @  B¹]?d ˆäßÊ-¹ @  Bº^?d ÈäßH¼g @  B»_?d åßyÈpŠ @  B¼`?d HåßûYgT @  B½a?d ˆåß©Bˆ  @  B¾b?d Èåß+ÓŸÓ @  B¿c?d æß.ÑU @  BÀd?d Hæß¬–Æ‹ @  BÁe?d ˆæßþ)Ò @  BÂf?d Èæß|>  @  BÃg?d çßµÑ @  BÄh?d Hçß7 @  BÅi?d ˆçßeüV @  BÆj?d Èçßç”ëˆ @  BÇk?d èßY[– @  BÈl?d HèßÛÊÎ @  BÉm?d ˆè߉Ñn— @  BÊn?d Èèß @yI @  BËo?d éß§ƒ!x @  BÌp?d Héß%6¦ @  BÍq?d ˆéßw Ùÿ @  BÎr?d Èéßõ˜Î! @  BÏs?d êßOM¡… @  BÐt?d HêßÍܶ[ @  BÑu?d ˆêߟÇY @  BÒv?d ÈêßVNÜ @  BÓw?d ëßÔÅt @  BÔx?d HëßVTcß @  BÕy?d ˆëßOŒ† @  BÖz?d Èë߆ޛX @  B×{?d ìß ™Ò @  BØ|?d Hìß—1Ž  @  BÙ}?d ˆìßÅ*aU @  BÚ~?d ÈìßG»v‹ @  BÛ?d íß›YVå @  BÜ€?d HíßÈA; @  BÝ?d ˆíßKÓ®b @  BÞ‚?d ÈíßÉB¹¼ @  B߃?d îßb‘ñ¨ @  Bà„?d Hîßàæv @  Bá…?d ˆîß² / @  Bâ†?d€ ÈîßDIW @  C‡?d ïßl›p£ @  Cˆ?d Hïßî g} @  C‰?d ˆïßyXsÉ @  CŠ?d ÈïßûÉd @  C‹?d ðß•vZ @  CŒ?d Hð߃a„ @  C?d ˆð߭ѧ @  CŽ?d Èðß<Æy @  C ?d ñßô¶e¥ @  C ?d Hñßv'r{ @  C ‘?d ˆñßáufÏ @  C ’?d Èñßcäq @  C “?d òߺ"/ @  C”?d Hòß8³hñ @  C•?d ˆòß »æ2 @  C–?d Èòß‹*ñì @  C—?d ó߇ð0Ü @  C˜?d Hóßa' @  C™?d ˆóß’33¶ @  Cš?d Èóߢ$h @  C›?d ôßMny˜ @  Cœ?d HôßÏÿnF @  C?d ˆôßSVÞe @  Cž?d ÈôßÑÇÉ» @  CŸ?d õß%úS» @  C ?d Hõß§kDe @  C¡?d ˆõß09PÑ @  C¢?d Èõß²¨G @  C£?d ößknI1 @  C¤?d Hößéÿ^ï @  C¥?d ˆößÉñ÷œ @  C ¦?d ÈößK`àB @  C!§?d ÷ßGº!r @  C"¨?d H÷ßÅ+6¬ @  C#©?d ˆ÷ßRy" @  C$ª?d È÷ßÐè5Æ @  C%«?d øß •$ @  C&¬?d Høß"ú @  C'­?d ˆøß¾­°Ù @  C(®?d Èøß<<§ @  C)¯?d ùßU¶Û @  C*°?d Hùß×' @  C+±?d ˆùß@u± @  C,²?d ÈùßÂäo @  C-³?d úß"Q @  C.´?d Húß™³  @  C/µ?d ˆúߨ»‡L @  C0¶?d Èúß**’ @  C1·?d ûß&ðQ¢ @  C2¸?d HûߤaF| @  C3¹?d ˆûß33RÈ @  C4º?d Èûß±¢E @  C5»?d üßìnæ @  C6¼?d Hüßnÿ8 @  C7½?d ˆüßòV¿ @  C8¾?d ÈüßpǨÅ @  C9¿?d ýßtª'Ô @  C:À?d Hýßö;0  @  C;Á?d ˆýßai$¾ @  C<Â?d Èýßãø3` @  C=Ã?d þß:>=^ @  C>Ä?d Hþ߸¯*€ @  C?Å?d ˆþß6¦…a @  C@Æ?d Èþß´7’¿ @  CAÇ?d ÿ߸íS @  CBÈ?d Hÿß:|DQ @  CCÉ?d ˆÿß­.På @  CDuÐàÊ?d Èÿß/¿G; @  CEË?d àNGÃu @  CFÌ?d `àÌÖÔ« @  CGÍ?d  àPdˆ @  CHÎ?d ààÒîsV @  CIÏ?d à»dЊ @  CJÐ?d `à9õÇT @  CKÑ?d  à®§Óà @  CLÒ?d àà,6Ä> @  CMÓ?d àõðÊ @  CNÔ?d `àwaÝÞ @  COÕ?d  àFiS @  CPÖ?d ààÄøDà @  CQ×?d àÈ"…ó @  CRØ?d `àJ³’- @  CSÙ?d  àÝᆙ @  CTÚ?d àà_p‘G @  CUÛ?d à¼Ì· @  CVÜ?d `à€-Ûi @  CWÝ?d  à„kJ @  CXÞ?d ààž|” @  CYß?d àj(æ” @  CZà?d `àè¹ñJ @  C[á?d  àëåþ @  C\â?d ààýzò  @  C]ã?d à$¼ü @  C^ä?d `à¦-ëÀ @  C_å?d  à†#B³ @  C`æ?d àà²Um @  Caç?d àh”] @  Cbè?d `àŠùƒƒ @  Ccé?d  à«—7 @  Cdê?d ààŸ:€é @  Ceë?d àïG¢  @  Cfì?d `àmÖµÕ @  Cgí?d  àñö @  Chî?d ààsî( @  Ciï?d àd±ô @  Cjð?d ` à˜õ¦* @  Ckñ?d   à§²ž @  Clò?d à à6¥@ @  Cmó?d àTð«~ @  Cnô?d ` àÖa¼  @  Coõ?d   àçi2c @  Cpö?d à àeø%½ @  Cq÷?d ài"ä @  Crø?d ` àë³óS @  Csù?d   à|áçç @  Ctú?d à àþpð9 @  Cuû?d ࣼ­É @  Cvü?d ` à!-º @  Cwý?d   ང 4 @  Cxþ?d à à?ê @  Cyÿ?d àYÙ“e @  Cz?d ` àÛH„» @  C{?d   àL @  C|?d à à΋‡Ñ @  C}?d àM‰ï @  C~?d `à•Üž1 @  C?d  àøƒá @  C€?d ààz? @  C?d àvÈ× @  C‚?d `àôYÀÑ @  Cƒ ?d  àc Ôe @  C„ ?d ààášÃ» @  C… ?d àÆÑö @  C† ?d `à™WÆ( @  C‡ ?d  àþv  @  Cˆ?d àà‡oaÕ @  C‰?d àîå  @  CŠ?d `àltÕ× @  C‹?d  àû&Ác @  CŒ?d àày·Ö½ @  C?d à q؃ @  CŽ?d `à"àÏ] @  C?d  àèAž @  C?d àà‘yV@ @  C‘?d ࣗp @  C’?d `à2€® @  C“?d  àˆ`” @  C”?d àà ñƒÄ @  C•?d àW=Þ4 @  C–?d `àÕ¬Éê @  C—?d  àIyÉ @  C˜?d ààË”n @  C™?d à?©ô @  Cš ?d `à½8ãÉ @  C›!?d  à*j÷} @  Cœ"?d àà¨û࣠@  C#?d àq=î @  Cž$?d `àó¬ùC @  CŸ%?d  àÓ¢P0 @  C &?d ààQ3Gî @  C¡'?d à]é†Þ @  C¢(?d `àßx‘ @  C£)?d  àH*…´ @  C¤*?d ààÊ»’j @  C¥+?d àºÆ°ˆ @  C¦,?d `à8W§V @  C§-?d  à¤þu @  C¨.?d àà&o« @  C©/?d àOå£w @  Cª0?d `àÍt´© @  C«1?d  àZ&  @  C¬2?d ààØ··Ã @  C­3?d àq¹ý @  C®4?d `àƒà®# @  C¯5?d  à²è à @  C°6?d àà0y7> @  C±7?d à<£ö @  C²8?d `à¾2áÐ @  C³9?d  à)`õd @  C´:?d àà«ñ⺠@  Cµ;?d àö=¿J @  C¶<?d `àt¬¨” @  C·=?d  àè· @  C¸>?d ààj”i @  C¹??d ànù€x @  Cº@?d `àìh—¦ @  C»A?d  à{:ƒ @  C¼B?d ààù«”Ì @  C½C?d à mšò @  C¾D?d `à¢ü, @  C¿E?d  à,õ"Í @  CÀF?d àà®d5 @  CÁG?d ࢾô# @  CÂH?d `à /ãý @  CÃI?d  à·}÷IuÐ à @  CÄJ?d àà5ìà— @  CÅK?d 8 àe @  CÆL?d x à‚ô‡Ð @  CÇM?d ¸ à]7ó @  CÈN?d ø àœÌ - @  CÉO?d 8!àõFƒñ @  CÊP?d x!àw×”/ @  CËQ?d ¸!àà…€› @  CÌR?d ø!àb—E @  CÍS?d 8"à»Ò™{ @  CÎT?d x"à9CŽ¥ @  CÏU?d ¸"àKf @  CÐV?d ø"àŠÚ¸ @  CÑW?d 8#à†Öˆ @  CÒX?d x#à‘ÁV @  CÓY?d ¸#ઠ7 @  CÔ Z?d ø#à(•é @  CÕ [?d 8$àuYC @  CÖ \?d x$à÷ÈTÇ @  C× ]?d ¸$àkaää @  CØ ^?d ø$àéðó: @  CÙ _?d 8%àÍi: @  CÚ `?d x%àŸ\~ä @  CÛ a?d ¸%àjP @  CÜ b?d ø%àŠŸ}Ž @  CÝ c?d 8&àSYs° @  CÞ d?d x&àÑÈdn @  Cß e?d ¸&àñÆÍ @  Cà f?d ø&àsWÚà @  Cá g?d 8'àó @  Câ h?d€ x'à{J¤” @  D i?d ¸'à Yø  @  D j?d ø'àÈï× @  D k?d 8(à:ü6Ø @  D l?d x(à¸m! @  D m?d ¸(àêvÎ_ @  D n?d ø(àhçÙ @  D o?d 8)àÏß%' @  D p?d x)àMN2ù @  D q?d ¸)àUÝ  @  D r?d ø)àÄÊ~ @  D s?d 8*àK?­ @  D t?d x*àÚ(s @  D u?d ¸*àQÁÇ* @  D v?d ø*àÓPÐô @  D w?d 8+༙p^ @  D x?d x+à>g€ @  D y?d ¸+àlˆÙ @  D z?d ø+à @  D {?d 8,àv9 @  D |?d x,àô–.Ä @  D }?d ¸,à¦Á @  D ~?d ø,à$ÖC @  D ?d 8-àóRº @  D €?d x-àq”Ed @  D ?d ¸-à#ª= @  D ‚?d ø-ࡽã @  D ƒ?d 8.དH0 @  D „?d x.à?_î @  D …?d ¸.àm°· @  D †?d ø.ài @  D ‡?d 8/à‘E s @  D ˆ?d x/àÔ7­ @  D! ‰?d ¸/àAÏØô @  D" Š?d ø/àÃ^Ï* @  D# ‹?d 80àüK&Š @  D$ Œ?d x0à~Ú1T @  D% ?d ¸0à,ÁÞ  @  D& Ž?d ø0à®PÉÓ @  D' ?d 81à h5u @  D( ?d x1à‹ù"« @  D) ‘?d ¸1àÙâÍò @  D* ’?d ø1à[sÚ, @  D+ “?d 82àGü/ÿ @  D, ”?d x2àÅm8! @  D- •?d ¸2à—v×x @  D. –?d ø2àçÀ¦ @  D/ —?d 83àz.`  @  D0 ˜?d x3àø¿wÒ @  D1 ™?d ¸3ત˜‹ @  D2 š?d ø3à(5U @  D3 ›?d 84à°°)H @  D4 œ?d x4à2!>– @  D5 ?d ¸4à`:ÑÏ @  D6 ž?d ø4àâ«Æ @  D7 Ÿ?d 85àØ$k @  D8  ?d x5àZµµ @  D9 ¡?d ¸5à®ûì @  D: ¢?d ø5àŠ?ì2 @  D; £?d 86à–°á @  D< ¤?d x6à!? @  D= ¥?d ¸6àF:áf @  D> ¦?d ø6àÄ«ö¸ @  D? §?d 87àcw0 @  D@ ¨?d x7à–ò`î @  DA ©?d ¸7àÄé· @  DB ª?d ø7àFx˜i @  DC «?d 88àóLAf @  DD ¬?d x8àqÝV¸ @  DE ­?d ¸8à#ƹá @  DF ®?d ø8à¡W®? @  DG ¯?d 89àoR™ @  DH °?d x9à„þEG @  DI ±?d ¸9àÖåª @  DJ ²?d ø9àTt½À @  DK ³?d 8:àHûH @  DL ´?d x:àÊj_Í @  DM µ?d ¸:à˜q°” @  DN ¶?d ø:àà§J @  DO ·?d 8;àu)à @  DP ¸?d x;à÷¸> @  DQ ¹?d ¸;ॣÿg @  DR º?d ø;à'2è¹ @  DS »?d 8<à¿·N¤ @  DT ¼?d x<à=&Yz @  DU ½?d ¸<ào=¶# @  DV ¾?d ø<àí¬¡ý @  DW ¿?d 8=à'sq– @  DX À?d x=à¥âfH @  DY Á?d ¸=à÷ù‰ @  DZ Â?d ø=àuhžÏ @  D[ Ã?d 8>àiçk @  D\ Ä?d x>àëv| @  D] Å?d ¸>à¹m“› @  D^ Æ?d ø>à;ü„E @  D_ Ç?d 8?àE3_ @  D` È?d x?àÇ¢ @  Da É?duÐ@à7 ¸?à•¹ûØ @  Db Ê?d ø?à.ï0Ó @  DcË?d P@àlˆßý @  DdÌ?d @àL}Ý @  DeÍ?d Ð@à¼'z @  DfÎ?d AàlJ«’ @  DgÏ?d PAà™«Ì @  DhÐ?d Aà¹^Îü @  DiÑ?d ÐAàI!4… @  DjÒ?d BàÔe”D @  DkÓ?d PBà×?Öˆ @  DlÔ?d Bà÷ÊÔv @  DmÕ?d ÐBàµ. @  DnÖ?d Cà×ý¢ç @  Do×?d PCàêí™{ @  DpØ?d CàÊ›… @  DqÙ?d ÐCà:gaü @  DrÚ?d Dà#)’ó @  DsÛ?d PDà sÐ? @  DtÜ?d Dà†ÒÁ @  DuÝ?d ÐDàðù(¸ @  DvÞ?d Eà ±¤P @  Dwß?d PEàHçú @  Dxà?d Eàhøâ @  Dyá?d ÐEà˜m› @  Dzâ?d Fà)¢Z @  D{ã?d PFàsà– @  D|ä?d Fà&†âh @  D}å?d ÐFàÖù @  D~æ?d Gà±”ù @  Dç?d PGàgö¾v @  D€è?d GàG¼ˆ @  Dé?d ÐGà·|Fñ @  D‚ê?d HàƒƒÊì @  Dƒë?d PHà€Ùˆ  @  D„ì?d Hà ,ŠÞ @  D…í?d ÐHàPSp§ @  D†î?d Ià€üO @  D‡ï?d PIàuú›ß @  Dˆð?d IàU™! @  D‰ñ?d ÐIà¥pcX @  DŠò?d Jà84Ù @  D‹ó?d PJà;nU @  DŒô?d Jà›ƒ« @  Dõ?d ÐJàëäyÒ @  DŽö?d Kà;¬õ: @  D÷?d PKà¼Î¦ @  Dø?d Kà&IÌX @  D‘ù?d ÐKàÖ66! @  D’ú?d LàÏxÅ. @  D“û?d PLàÌ"‡â @  D”ü?d Làì×… @  D•ý?d ÐLà¨e @  D–þ?d MàÌàó @  D—ÿ?d PMà„eŒk @  D˜?d Mऎ• @  D™?d ÐMàTïtì @  Dš?d NàÉ«Ô- @  D›?d PNàÊñ–á @  Dœ?d Nàê” @  D?d ÐNà{nf @  Dž?d OàÊ3⎠@  DŸ?d POàæ%þ¢ @  D ?d OàÆÐü\ @  D¡ ?d ÐOà6¯% @  D¢ ?d Pàˆqº— @  D£ ?d PPà‹+ø[ @  D¤ ?d Pà«Þú¥ @  D¥ ?d ÐPà[¡Ü @  D¦?d Qà‹éŒ4 @  D§?d PQà~ë¤ @  D¨?d Qà^ýéZ @  D©?d ÐQஂ# @  Dª?d Rà3Ƴâ @  D«?d PRà0œñ. @  D¬?d RàióÐ @  D­?d ÐRàà © @  D®?d Sà0^…A @  D¯?d PSà N¾Ý @  D°?d Sà-»¼# @  D±?d ÐSàÝÄFZ @  D²?d TàÄŠµU @  D³?d PTàÇÐ÷™ @  D´?d Tàç%õg @  Dµ?d ÐTàZ @  D¶?d Uàǃö @  D·?d PUà¯Dݺ @  D¸ ?d Uà±ßD @  D¹!?d ÐUàÎ%= @  Dº"?d Và⊅ü @  D»#?d PVàáÐÇ0 @  D¼$?d VàÁ%ÅÎ @  D½%?d ÐVà1Z?· @  D¾&?d Wàá³_ @  D¿'?d PWàc©á @  DÀ(?d WàCö« @  DÁ)?d ÐW೉Qf @  DÂ*?d Xà‡vÝ{ @  DÃ+?d PXà„,Ÿ· @  DÄ,?d Xà¤ÙI @  DÅ-?d ÐXàT¦g0 @  DÆ.?d Yà„îëØ @  DÇ/?d PYàqŒH @  DÈ0?d YàQú޶ @  DÉ1?d ÐYà¡…tÏ @  DÊ2?d Zà<ÁÔ @  DË3?d PZà?›– @  DÌ4?d Zàn”< @  DÍ5?d ÐZàïnE @  DÎ6?d [à?Yâ­ @  DÏ7?d P[àIÙ1 @  DÐ8?d [à"¼ÛÏ @  DÑ9?d Ð[àÒÃ!¶ @  DÒ:?d \àËÒ¹ @  DÓ;?d P\àÈ×u @  DÔ<?d \àè"’‹ @  DÕ=?d Ð\à]hò @  DÖ>?d ]àÈä @  D×??d P]àP¯G @  DØ@?d ]àpæ­¹ @  DÙA?d Ð]à€™WÀ @  DÚB?d ^àÝ÷ @  DÛC?d P^à‡µÍ @  DÜD?d ^à>r·3 @  DÝE?d Ð^àÎ MJ @  DÞF?d _àEÁ¢ @  DßG?d P_à2SÝŽ @  DàH?d _à¦ßp @  DuÐ`àáI?d Ð_àÛùÜ @  Dâ J?d€ (`àêKkâ @  EK?d h`àPa @  EL?d ¨`à(¥cù @  EM?d è`à“bm @  EN?d (aàÍÛî… @  EO?d haàöˆÖo @  EP?d ¨aàÖ}Ô‘ @  EQ?d èaàè°q’ @  ER?d (bàuôÑS @  E S?d hbà³çhr @  E T?d ¨bà“jŒ @  E U?d èbà¦$k @  E V?d (càvlçð @  E W?d hcà(o½ö @  EX?d ¨càš¿ @  EY?d ècà›ö$ë @  EZ?d (dà‚¸×ä @  E[?d hdàD«nÅ @  E\?d ¨dàd^l; @  E]?d èdàQhm¯ @  E^?d (eà áG @  E_?d heà'Äàq @  E`?d ¨eà1â @  Ea?d èeà9üGŒ @  Eb?d (fसçM @  Ec?d hfàb«^l @  Ed?d ¨fàB^\’ @  Ee?d èfàwh] @  Ef?d (gà§ Ñî @  Eg?d hgàù#‹è @  Eh?d ¨gàÙÖ‰ @  Ei?d ègà[¼5E @  E j?d (hàoC¹X @  E!k?d hhà©Py @  E"l?d ¨hà‰¥‡ @  E#m?d èh༓ @  E$n?d (iàlÛû @  E%o?d hiàWˆ· @  E&p?d ¨iàw}µï @  E'q?d èiàI°ì @  E(r?d (jàÔô°- @  E)s?d hjàç  @  E*t?d ¨jà2 ò @  E+u?d èjà$ f @  E,v?d (kà×l†Ž @  E-w?d hkà‰o܈ @  E.x?d ¨kਗ਼Þv @  E/y?d èkà:öE• @  E0z?d (là#¸¶š @  E1{?d hlàå«» @  E2|?d ¨làÅ^ E @  E3}?d èlàðh Ñ @  E4~?d (mà €9 @  E5?d hmàkRÀŒ @  E6€?d ¨màK§Âr @  E7?d èmàujgq @  E8‚?d (nàè.ǰ @  E9ƒ?d hnà.=~‘ @  E:„?d ¨nàÈ|o @  E;…?d ènà;þ}û @  E<†?d (oàë¶ñ @  E=‡?d ho൵« @  E>ˆ?d ¨oà•@©ë @  E?‰?d èoà¹-* @  E@Š?d (pàó¯˜ @  EA‹?d hpàÁ๠@  EBŒ?d ¨pàáG @  EC?d èpàÔ#Ó @  EDŽ?d (qàk™; @  EE?d hqà?8¡Ñ @  EF?d ¨qàÍ£/ @  EG‘?d èqà!, @  EH’?d (rà¼D¦í @  EI“?d hràzWÌ @  EJ”?d ¨ràZ¢2 @  EK•?d èrào”¦ @  EL–?d (sà¿ÜN @  EM—?d hsàáßÊH @  EN˜?d ¨sàÁ*ȶ @  EO™?d èsàRFSU @  EPš?d (tàK Z @  EQ›?d htà{ @  ERœ?d ¨tà­î… @  ES?d ètà˜Ø @  ETž?d (uàH–ù @  EUŸ?d huàît—Ï @  EV ?d ¨uàΕ1 @  EW¡?d èuàðL02 @  EX¢?d (vàmó @  EY£?d hvà«)Ò @  EZ¤?d ¨và‹î+, @  E[¥?d èvà¾Ø*¸ @  E\¦?d (wàn¦P @  E]§?d hwà0“üV @  E^¨?d ¨wàfþ¨ @  E_©?d èwà’ Bû @  E`ª?d (xà¦óÎæ @  Ea«?d hxà`àwÇ @  Eb¬?d ¨xà@u9 @  Ec­?d èxàu#t­ @  Ed®?d (yà¥køE @  Ee¯?d hyàž8À¯ @  Ef°?d ¨yà¾ÍÂQ @  Eg±?d èyà€gR @  Eh²?d (zàDÇ“ @  Ei³?d hzàÛW~² @  Ej´?d ¨zàû¢|L @  Ekµ?d èzàΔ}Ø @  El¶?d ({àÜñ0 @  Em·?d h{à@ß«6 @  En¸?d ¨{à`*©È @  Eo¹?d è{àóF2+ @  Epº?d (|àêÁ$ @  Eq»?d h|à,x @  Er¼?d ¨|à îzû @  Es½?d è|à9Ø{o @  Et¾?d (}àé÷‡ @  Eu¿?d h}à¿$ã  @  EvÀ?d ¨}àŸÑá^ @  EwÁ?d è}à¡D] @  ExÂ?d (~à @  E„ Î?d @àEïà @  E… Ï?d €àrÂ* @  E† Ð?d ÀàãÕô @  E‡ Ñ?d ‚à"ûÇè @  Eˆ Ò?d @‚à jÐ6 @  E‰ Ó?d €‚àÄ|7 @  EŠ Ô?d À‚àFŒké @  E‹ Õ?d ƒà!cñK @  EŒ Ö?d @ƒà£òæ• @  E ×?d €ƒà_•©³ @  EŽ Ø?d Àƒàݾm @  E Ù?d „àÕ·Á_ @  E Ú?d @„àW&Ö @  E‘ Û?d €„à3Qz€ @  E’ Ü?d À„à±Àm^ @  E“ Ý?d …àÖ/÷ü @  E” Þ?d @…àT¾à" @  E• ß?d €…àP>ô4 @  E– à?d À…àÒ¯ãê @  E— á?d †àó·ñö @  E˜ â?d @†àq&æ( @  E™ ã?d €†àQJ) @  Eš ä?d À†à—À]÷ @  E› å?d ‡àð/ÇU @  Eœ æ?d @‡àr¾Ð‹ @  E ç?d €‡àŽÙŸ­ @  Ež è?d À‡à Hˆs @  EŸ é?d ˆà8L¯ã @  E  ê?d @ˆàºÝ¸= @  E¡ ë?d €ˆàÞª< @  E¢ ì?d Àˆà\;â @  E£ í?d ‰à;Ô™@ @  E¤ î?d @‰à¹EŽž @  E¥ ï?d €‰à r£T @  E¦ ð?d À‰à¢ã´Š @  E§ ñ?d Šàƒû¦– @  E¨ ò?d @Šàj±H @  E© ó?d €ŠàeI @  Eª ô?d ÀŠàçŒ — @  E« õ?d ‹à€c5 @  E¬ ö?d @‹àò‡ë @  E­ ÷?d €‹àþ•ÈÍ @  E® ø?d À‹à|ß @  E¯ ù?d Œàt· ! @  E° ú?d @Œàö&·ÿ @  E± û?d €Œà’Qþ @  E² ü?d ÀŒàÀ  @  E³ ý?d àw/–‚ @  E´ þ?d @àõ¾\ @  Eµ ÿ?d €àcÏÅ @  E¶ ?d Ààá^– @  E· ?d ŽàÀF„ @  E¸ ?d @ŽàBדÙ @  E¹ ?d €Žà& ?Ø @  Eº ?d ÀŽà¤1( @  E» ?d àÃÞ²¤ @  E¼ ?d @àAO¥z @  E½ ?d €à½(ê\ @  E¾ ?d Àà?¹ý‚ @  E¿  ?d à/›ì/ @  EÀ  ?d @à­ ûñ @  EÁ  ?d €àÉ}Wð @  E  ?d ÀàKì@. @  Eà  ?d ‘à,ÚŒ @  EÄ ?d @‘à®’ÍR @  EÅ ?d €‘à7¥à˜ @  EÆ ?d À‘àµ4÷F @  EÇ ?d ’à”,åZ @  EÈ ?d @’à½ò„ @  EÉ ?d €’àrÊ^… @  EÊ ?d À’àð[I[ @  EË ?d “à—´Óù @  EÌ ?d @“à%Ä' @  EÍ ?d €“àéB‹ @  EÎ ?d À“àkÓœß @  EÏ ?d ”àc`ãí @  EÐ ?d @”àáñô3 @  EÑ ?d €”à…†X2 @  EÒ ?d À”àOì @  EÓ ?d •à`øÕN @  EÔ ?d @•àâi @  EÕ ?d €•àæéÖ† @  EÖ  ?d À•àdxÁX @  E× !?d –àE`ÓD @  EØ "?d @–àÇñÄš @  EÙ #?d €–ࣆh› @  EÚ $?d À–à!E @  EÛ %?d —àFøåç @  EÜ &?d @—àÄiò9 @  EÝ '?d €—à8½ @  EÞ (?d À—ຟªÁ @  Eß )?d ˜àŽ›Q @  Eà *?d @˜à š @  Eá +?d €˜àh}6Ž @  Eâ ,?d€ À˜à+«ÖP @  F -?d ™à­Û @  F .?d @™à/” @  F /?d €™àsêÅ" @  F 0?d À™àñ{Òü @  F 1?d šàÑŸš @  F 2?d @šàœ@ˆD @  F 3?d €šà6…{? @  F 4?d Àšà´lá @  F 5?d ›à² ® @  F 6?d @›à”#p @  F 7?d €›à­ ®» @  F 8?d À›à/œ¹e @  F 9?d œàD<§Í @  F :?d @œàÆ­° @  F ;?d €œàÁÉ}ˆ @  F <?d ÀœàCXjV @  F =?d àáþ  @  F >?d @àcoÇ @  F ??d €àRöæ- @  F @?d ÀàÐgñó @  F A?d žà?ͼ• @  F B?d @žà½\«K @  F C?d €žà™X0 @  F D?d Àžà•Oî @  F E?d Ÿà7®.¡ @  F F?d @Ÿàµ?9 @  F G?d €ŸàŒ´ @  F HuРà?d ÀŸà€šj @  F I?d  à4¢u~ @  FJ?d X à¶3b  @  FK?d ˜ à Qˆ‹ @  F L?d Ø à"ÀŸU @  F!M?d ¡à€fþ @  F"N?d X¡à÷éÄ @  F#O?d ˜¡à^‰?ã @  F$P?d Ø¡àÜ(= @  F%Q?d ¢à3²e[ @  F&R?d X¢à±#r… @  F'S?d ˜¢àæþ @  F(T?d Ø¢à™w–  @  F)U?d £à;Ñ÷o @  F*V?d X£à¹@à± @  F+W?d ˜£à€nTz @  F,X?d Ø£àÿC¤ @  F-Y?d ¤ài_]  @  F.Z?d X¤àëÎJÒ @  F/[?d ˜¤à쪇I @  F0\?d ؤàn;— @  F1]?d ¥àÌñØ @  F2^?d X¥àN æ @  F3_?d ˜¥àÅ ý @  F4`?d Ø¥à T# @  F5a?d ¦àâþSE @  F6b?d X¦à`oD› @  F7c?d ˜¦àʪ·à @  F8d?d ئàH; > @  F9e?d §àêÁq @  F:f?d X§àh Ö¯ @  F;g?d ˜§àQ"bd @  F<h?d اàÓ³uº @  F=i?d ¨à•¢ @  F>j?d X¨à3Þ @  F?k?d ˜¨à¯Vïg @  F@l?d بà-Çø¹ @  FAm?d ©àa™ö @  FBn?d X©à ðŽ( @  FCo?d ˜©àQŽX @  FDp?d Ø©àÓOÑ @  FEq?d ªà<µ· @  FFr?d Xªà¾$i @  FGs?d ˜ªàáæ @  FHt?d تà–pñÌ @  FIu?d «à4Öƒ @  FJv?d X«à¶G‡] @  FKw?d ˜«ài3– @  FLx?d Ø«à ø$H @  FMy?d ¬àfX:à @  FNz?d X¬àäÉ-> @  FO{?d ˜¬àã­à¥ @  FP|?d جàa<÷{ @  FQ}?d ­àÚ–4 @  FR~?d X­àA ê @  FS?d ˜­àmT/’ @  FT€?d Ø­àïÅ8L @  FU?d ®àou* @  FV‚?d X®à‚þbô @  FWƒ?d ˜®à(;‘ @  FX„?d خપ†Q @  FY…?d ¯à ç @  FZ†?d X¯àŠðÀ @  F[‡?d ˜¯à³³D  @  F\ˆ?d دà1"SÕ @  F]‰?d °àýÀ @  F^Š?d X°àƒ @  F_‹?d ˜°àiáÿ5 @  F`Œ?d ذàëpèë @  Fa?d ±àIÖ‰¤ @  FbŽ?d X±àËGžz @  Fc?d ˜±à—9H] @  Fd?d رà¨_ƒ @  Fe‘?d ²àúå @  Ff’?d X²àx“; @  Fg“?d ˜²àÒVö@ @  Fh”?d زàPÇáž @  Fi•?d ³àòa€Ñ @  Fj–?d X³àpð— @  Fk—?d ˜³àIÞ#Ä @  Fl˜?d سàËO4 @  Fm™?d ´à ï*² @  Fnš?d X´à"~=l @  Fo›?d ˜´à%ð÷ @  Fpœ?d Ø´à§‹ç) @  Fq?d µà-†f @  Frž?d Xµà‡¼‘¸ @  FsŸ?d ˜µàFu~C @  Ft ?d صàÄäi @  Fu¡?d ¶à+N$û @  Fv¢?d X¶à©ß3% @  Fw£?d ˜¶àÀ^ @  Fx¤?d ضà‹×€ @  Fy¥?d ·à#-¶Ï @  Fz¦?d X·à¡¼¡ @  F{§?d ˜·à˜’Ú @  F|¨?d Ø·à @  F}©?d ¸à\c¾ @  F~ª?d X¸àÞƒt` @  F«?d ˜¸à…°¨è @  F€¬?d ظà!¿6 @  F­?d ¹à¥‡Þy @  F‚®?d X¹à'ɧ @  Fƒ¯?d ˜¹à{h€ @  F„°?d عàùù^ @  F…±?d ºàSE8 @  F†²?d Xºà”ÂRæ @  F‡³?d ˜ºà>¡ @  Fˆ´?d غ༖¶C @  F‰µ?d »à0×  @  Fж?d X»àœ¡ÀÒ @  F‹·?d ˜»à¥t @  FŒ¸?d Ø»à'cÇ @  F¹?d ¼àL¾}o @  FŽº?d X¼àÎ/j± @  F»?d ˜¼àÉK§* @  F¼?d ؼàKÚ°ô @  F‘½?d ½àé|Ñ» @  F’¾?d X½àkíÆe @  F“¿?d ˜½àZt< @  F”À?d ؽàØå+Q @  F•Á?d ¾à7Of7 @  F–Â?d X¾àµÞqé @  F—Ã?d ˜¾à‚’ @  F˜Ä?d ؾàŠ•L @  F™Å?d ¿à?,ô @  FšÆ?d X¿à½½ãÝ @  F›Ç?d ˜¿à„“W @uÐÀà  FœÈ?d Ø¿à?Åœ @  F É?d 0Àà)Û è @  Fž Ê?d pÀà«J76 @  FŸ Ë?d °Àà½(Ý @  F  Ì?d ðÀà?¹Êà @  F¡ Í?d 0Áૌ @  F¢ Î?d pÁà޼R @  F£ Ï?d °ÁàCðju @  F¤ Ð?d ðÁàÁa}« @  F¥ Ñ?d 0Âà.Ë0Í @  F¦ Ò?d pÂà¬Z' @  F§ Ó?d °ÂàŸÔh @  F¨ Ô?d ðÂà„ö @  F© Õ?d 0Ãà&¨¢ù @  Fª Ö?d pÃà¤9µ' @  F« ×?d °Ãàì @  F¬ Ø?d ðÃà†2 @  F­ Ù?d 0Äàt&š @  F® Ú?d pÄàö·D @  F¯ Û?d °ÄàñÓÒß @  F° Ü?d ðÄàsBÅ @  F± Ý?d 0ÅàÑä¤N @  F² Þ?d pÅàSu³ @  F³ ß?d °Åà’¼\k @  F´ à?d ðÅà-Kµ @  Fµ á?d 0Æàÿ‡Ó @  F¶ â?d pÆà}  @  F· ã?d °Æà×Óâv @  F¸ ä?d ðÆàUBõ¨ @  F¹ å?d 0Çà÷ä”ç @  Fº æ?d pÇàuuƒ9 @  F» ç?d °ÇàL[7ò @  F¼ è?d ðÇàÎÊ , @  F½ é?d 0ÈàˆÛA– @  F¾ ê?d pÈà JVH @  F¿ ë?d °Èà²/ºñ @  FÀ ì?d ðÈà0¾­/ @  FÁ í?d 0Éà’Ì` @  F î?d pÉà‰Û¾ @  Fà ï?d °ÉàL÷ ™ @  FÄ ð?d ðÉàÎfG @  FÅ ñ?d 0Êà!ÌW! @  FÆ ò?d pÊà£]@ÿ @  FÇ ó?d °Êà ˜³„ @  FÈ ô?d ðÊà‹ ¤Z @  FÉ õ?d 0Ëà)¯Å @  FÊ ö?d pËà«>ÒË @  FË ÷?d °Ëà’f @  FÌ ø?d ðËàqÞ @  FÍ ù?d 0Ìà{!ov @  FÎ ú?d pÌàù°x¨ @  FÏ û?d °ÌàþÔµ3 @  FÐ ü?d ðÌà|E¢í @  FÑ ý?d 0ÍàÞãâ @  FÒ þ?d pÍà\rÔ| @  FÓ ÿ?d °Íà3Cž @  FÔ ?d ðÍà±Ò@ @  FÕ ?d 0Îà^xJ& @  FÖ ?d pÎàÜé]ø @  F× ?d °Îàv,®ƒ @  FØ ?d ðÎàô½¹] @  FÙ ?d 0ÏàVØ @  FÚ ?d pÏàÔŠÏÌ @  FÛ ?d °Ïàí¤{ @  FÜ ?d ðÏào5lÙ @  FÝ  ?d 0Ðà£=Ì @  FÞ  ?d pÐà!”* @  Fß  ?d °Ðà7öÀ9 @  Fà  ?d ðÐàµg×ç @  Fá  ?d 0ÑàÁ¶¨ @  Fâ ?d€ pÑàᓽÐ @  G ?d °Ñà\¬#Þ @  G ?d ðÑàÞ=4 @  G ?d 0ÒàôÞ‚‹ @  G ?d pÒàvO•U @  G ?d °Òà89T @  G ?d ðÒà©.Š @  G ?d 0Óàü½¿ @  G ?d pÓà~,a @  G ?d °Óà‚KHG @  G ?d ðÓàÚ_™ @  G ?d 0Ôà®3ºÜ @  G ?d pÔà,¢­ @  G ?d °ÔàHÕ @  G ?d ðÔàÊDÝ @  G ?d 0Õà ñ @  G ?d pÕà‰`Ö @  G ?d °ÕààÀ @  G  ?d ðÕàq @  G !?d 0Öà%’´• @  G "?d pÖà§£K @  G #?d °ÖàÃtJ @  G $?d ðÖàAå” @  G %?d 0×à-ñ&¡ @  G &?d p×à¯`1 @  G '?d °×àS~Y @  G (?d ð×àÑ–i‡ @  G )?d 0ØàRÎóÐ @  G *?d pØàÐ_ä @  G +?d °Øà´(H @  G ,?d ðØà6¹_Ñ @  G -?d 0Ùàæ x´ @  G .?d pÙàd›oj @  G! /?d °Ùàý¬B  @  G" 0?d ðÙà=U~ @  G# 1?d 0ÚàUÞãõ @  G$ 2?d pÚà×Oô+ @  G% 3?d °Úà³8X* @  G& 4?d ðÚà1©Oô @  G' 5?d 0Ûà]½qÁ @  G( 6?d pÛàß,f @  G) 7?d °Ûà#K)9 @  G* 8?d ðÛà¡Ú>ç @  G+ 9?d 0Üà3Û¢ @  G, :?d pÜà¢Ì| @  G- ;?d °ÜàéÕ`} @  G. <?d ðÜàkDw£ @  G/ =?d 0Ýàªñwv @  G0 >?d pÝà(``¨ @  G1 ??d °Ýàܰa¯ @  G2 @?d ðÝà^!vq @  G3 A?d 0ÞàtÂÀú @  G4 B?d pÞàöS×$ @  G5 C?d °Þà’${% @  G6 D?d ðÞàµlû @  G7 E?d 0ßà|¡RÎ @  G8 F?d pßàþ0E @  G9 G?d uÐàà/°ßàW 6 @  G: H?d ðßà¹Á= @  G;I?d Hàà‰ @  G<J?d ˆàà7÷‹ @  G=K?d Èààñä2^ @  G>L?d áà!¬¾¶ @  G?M?d Háà Áw @  G@N?d ˆáà-4‰ @  GAO?d Èáàg>c @  GBP?d âà‹#ž¢ @  GCQ?d Hâྟ6 @  GDR?d ˆâàžàÈ @  GES?d ÈâàXó$é @  GFT?d ãàˆ»¨ @  GGU?d Hãà¶v  @  GHV?d ˆãà–ƒü @  GIW?d ÈãàÈ€Uú @  GJX?d äàÑΦõ @  GKY?d Häàäø§a @  GLZ?d ˆäàÄ ¥Ÿ @  GM[?d Èäྠ@  GN\?d åàÒVV @  GO]?d HåàA: µ @  GP^?d ˆåàaÏ K @  GQ_?d ÈåàÇ+} @  GR`?d æàZo¨¼ @  GSa?d HæàoY©( @  GTb?d ˆæàO¬«Ö @  GUc?d Èæà‰¿÷ @  GVd?d çàY÷ž @  GWe?d Hçàg:; @  GXf?d ˆçàGÏ9â @  GYg?d ÈçàÌcä @  GZh?d èà-3ïù @  G[i?d Hèàîm @  G\j?d ˆèà8ðì“ @  G]k?d ÈèàþãU² @  G^l?d éà.«ÙZ @  G_m?d Héà¬Áe  @  G`n?d ˆéàŒ4g÷ @  Gao?d Èéà·g_ @  Gbp?d êà*#ÿÜ @  Gcq?d HêàþH @  Gdr?d ˆêà?àü¶ @  Ges?d ÈêàùóE— @  Gft?d ëà)»É @  Ggu?d Hëàvl| @  Ghv?d ˆëà7ƒn‚ @  Giw?d Èëài€4„ @  Gjx?d ìàpÎÇ‹ @  Gky?d HìàEøÆ @  Glz?d ˆìàe Äá @  Gm{?d Èìà£}À @  Gn|?d íàsVñ( @  Go}?d Híàà:jË @  Gp~?d ˆíàÀÏh5 @  Gq?d Èíà‹½(€ @  Gr€?d îàùˆA @  Gs?d Hîà#ωÕ @  Gt‚?d ˆîà:‹+ @  Guƒ?d ÈîàÅ)2  @  Gv„?d ïàa¾â @  Gw…?d Hïà+¬á @  Gx†?d ˆïà Y @  Gy‡?d ÈïàUZC @  Gzˆ?d ðàë„ÿ« @  G{‰?d HðàÞ²þ? @  G|Š?d ˆðàþGüÁ @  G}‹?d Èðà8TEà @  G~Œ?d ñàèÉ @  G?d Hñà''Cø @  G€Ž?d ˆñàÒA @  G?d Èñà¦^ @  H ý?d ` á€A\' @  Hþ?d   á ´^Ù @  Hÿ?d à á÷²*ú @  H?d ájöŠ; @  H?d `ᚉpB @  H?d  áº|r¼ @  H?d àá¹&0p @  H?d áin¼˜ @  H?d `á™Fá @  H?d  á¹äD @  H?d àá)UAc @  H?d á—‹ýÑ @  H ?d `ágô¨ @  H ?d  áGV @  H ?d àáD[Gš @  H ?d á”Ër @  H ?d `ádl1  @  H?d  áD™3õ @  H?d àá ßM5 @  H ?d á›íô @  H!?d `á`ä @  H"?d  á@s @  H#?d àáCKW¿ @  H$?d á“ÛW @  H%?d `ác|!. @  H&?d  áC‰#Ð @  H'?d àáÓ8&¬ @  H(?d áÊvÕ£ @  H)?d `á: /Ú @  H*?d  áü-$ @  H+?d àá¦oè @  H,?d áÉîã @  H-?d `á9‘y @  H.?d  ád‡ @  H/?d àáÜ“{+ @  H0 ?d áA×Ûê @  H1!?d `ᱨ!“ @  H2"?d  á‘]#m @  H3#?d àá’a¡ @  H4$?d áBOíI @  H5%?d `á²00 @  H6&?d  á’ÅÎ @  H7'?d àát² @  H8(?d á6‹œ¯ @  H9)?d `áÆôfÖ @  H:*?d  áæd( @  H;+?d àáå[&ä @  H<,?d á5ª  @  H=-?d `áÅlPu @  H>.?d  áå™R‹ @  H?/?d àáØ*Ù @  H@0?d áŸœŠ @  HA1?d `áoãpa @  HB2?d  áOrŸ @  HC3?d àáLL0S @  HD4?d ᜼» @  HE5?d `ál{F @  HF6?d  áLŽD< @  HG7?d àáÜ?A@ @  HH8?d áÅq²O @  HI9?d `á5H6 @  HJ:?d  áûJÈ @  HK;?d àá¡ @  HL<?d áÆé„ì @  HM=?d `á6–~• @  HN>?d  ác|k @  HO??d àá#Ä Ö @  HP@?d á¾€© @  HQA?d `áNÿSn @  HRB?d  án Q @  HSC?d àámP\ @  HTD?d Ὗ´ @  HUE?d `áMgeÍ @  HVF?d  ám’g3uÐ á @  HWG?d àáý#bO @  HXH?d 8 áŒ(¼) @  HYI?d x á|WFP @  HZJ?d ¸ á\¢D® @  H[K?d ø á_øb @  H\L?d 8!á°ŠŠ @  H]M?d x!áÏpó @  H^N?d ¸!á_:r  @  H_O?d ø!á| Í @  H`P?d 8"á‹8¬  @  HaQ?d x"á{GVu @  HbR?d ¸"á[²T‹ @  HcS?d ø"áXèG @  HdT?d 8#ሠš¯ @  HeU?d x#áxß`Ö @  HfV?d ¸#áX*b( @  HgW?d ø#áÈ›gT @  HhX?d 8$áÑÕ”[ @  HiY?d x$á!ªn" @  HjZ?d ¸$á_lÜ @  Hk[?d ø$á. @  Hl\?d 8%áÒM¢ø @  Hm]?d x%á"2X @  Hn^?d ¸%áÇZ @  Ho_?d ø%áÇ0:Ó @  Hp`?d 8&áZtš @  Hqa?d x&᪠`k @  Hrb?d ¸&áŠþb• @  Hsc?d ø&ቤ Y @  Htd?d 8'áY쬱 @  Hue?d x'á©“VÈ @  Hvf?d ¸'á‰fT6 @  Hwg?d ø'á×QJ @  Hxh?d 8(á-(ÝW @  Hyi?d x(áÝW'. @  Hzj?d ¸(áý¢%Ð @  H{k?d ø(áþøg @  H|l?d 8)á.°ëô @  H}m?d x)áÞÏ @  H~n?d ¸)áþ:s @  Ho?d ø)áú-[ @  H€p?d 8*ágiûÑ @  Hq?d x*á—¨ @  H‚r?d ¸*á·ãV @  Hƒs?d ø*á´¹Aš @  H„t?d 8+ádñÍr @  H…u?d x+ᔎ7  @  H†v?d ¸+á´{5õ @  H‡w?d ø+á$Ê0‰ @  Hˆx?d 8,á=„Æ @  H‰y?d x,áÍû9ÿ @  HŠz?d ¸,áí; @  H‹{?d ø,áîTyÍ @  HŒ|?d 8-á>õ% @  H}?d x-áÎc\ @  HŽ~?d ¸-áî– ¢ @  H?d ø-áÆ÷, @  H€?d 8.á[³ŒL @  H‘?d x.á«Ìv5 @  H’‚?d ¸.á‹9tË @  H“ƒ?d ø.áˆc6 @  H”„?d 8/áX+ºï @  H•…?d x/á¨T@– @  H–†?d ¸/ሡBh @  H—‡?d ø/áG @  H˜ˆ?d 80á¦Îû¦ @  H™‰?d x0áV±ß @  HšŠ?d ¸0ávD! @  H›‹?d ø0áuAí @  HœŒ?d 81á¥VÍ @  H?d x1áU)7| @  HžŽ?d ¸1áuÜ5‚ @  HŸ?d ø1á<šKB @  H ?d 82á¡Þëƒ @  H¡‘?d x2áQ¡ú @  H¢’?d ¸2áqT @  H£“?d ø2árQÈ @  H¤”?d 83á¢FÝ  @  H¥•?d x3áR9'Y @  H¦–?d ¸3árÌ%§ @  H§—?d ø3áâ} Û @  H¨˜?d 84áû3ÓÔ @  H©™?d x4á L)­ @  Hªš?d ¸4á+¹+S @  H«›?d ø4á(ãiŸ @  H¬œ?d 85áø«åw @  H­?d x5áÔ @  H®ž?d ¸5á(!ð @  H¯Ÿ?d ø5áíÖ}\ @  H° ?d 86áp’Ý @  H±¡?d x6á€í'ä @  H²¢?d ¸6á % @  H³£?d ø6á£BgÖ @  H´¤?d 87ás ë> @  Hµ¥?d x7áƒuG @  H¶¦?d ¸7ᣀ¹ @  H·§?d ø7á31Å @  H¸¨?d 88áΚØ @  H¹©?d x8á÷±`¡ @  Hºª?d ¸8á×Db_ @  H»«?d ø8áÔ “ @  H¼¬?d 89áV¬{ @  H½­?d x9áô)V @  H¾®?d ¸9áÔÜTü @  H¿¯?d ø9á3,® @  HÀ°?d 8:á®ÙŒo @  HÁ±?d x:á^¦v @  H²?d ¸:á~Stè @  Hó?d ø:á} 6$ @  HÄ´?d 8;á­AºÌ @  Hŵ?d x;á]>@µ @  Hƶ?d ¸;á}ËBK @  HÇ·?d ø;áízG7 @  Hȸ?d 8<áô4´8 @  Hɹ?d x<áKNA @  Hʺ?d ¸<á$¾L¿ @  HË»?d ø<á'äs @  H̼?d 8=á÷¬‚› @  Hͽ?d x=áÓxâ @  Hξ?d ¸=á'&z @  HÏ¿?d ø=á¡ @  HÐÀ?d 8>áů` @  HÑÁ?d x>áºU @  HÒÂ?d ¸>á_OWç @  HÓÃ?d ø>á\+ @  HÔÄ?d 8?áŒ]™Ã @  HÕÅ?d x?á|"cº @  HÖÆ?duÐ@á7 ¸?á\×aD @  H×Ç?d ø?áÌfd8 @  HØÈ?d P@áÊÞ @  HÙÉ?d @á]Ñ1] @  HÚÊ?d Ð@áß@&ƒ @  HÛË?d AáŽÃÿy @  HÜÌ?d PAá Rè§ @  HÝÍ?d Aá^Iþ @  HÞÎ?d ÐAáÜØ  @  HßÏ?d BáŠKÙÿ @  HàÐ?d PBáÚÎ! @  HáÑ?d BáZÁ!x @  HâÒ?d€ ÐBᬓ* @  IÓ?d CáQ»Ó @  IÔ?d PCážÀ¬  @  IÕ?d Cá ’¸¹ @  IÖ?d ÐCዯg @  I×?d DáNß° @  IØ?d PDáÌNn @  IÙ?d DáPç¶M @  IÚ?d ÐDáÒv¡“ @  I Û?d EáF¼ƒ„ @  I Ü?d PEáÄ-”Z @  I Ý?d EáS€î @  I Þ?d ÐEáÑî—0 @  I ß?d Fáhß! @  Ià?d PFáêN6Ç @  Iá?d FáÛF¸ @  Iâ?d ÐFáYׯÚ @  Iã?d GáÍÍ @  Iä?d PGáOŒš @  Iå?d GáØÞާ @  Iæ?d ÐGáZO™y @  Iç?d Há²"X¼ @  Iè?d PHá0³Ob @  Ié?d Há¬ÿA @  Iê?d ÐHá.‹èŸ @  Ië?d IáºAʈ @  Iì?d PIá8ÐÝV @  Ií?d IᯂÉâ @  Iî?d ÐIá-Þ< @  Iï?d Já •QÉ @  Ið?d PJá‹F @  Iñ?d Já« ïd @  I ò?d ÐJá)›øº @  I!ó?d Ká½QÚ­ @  I"ô?d PKá?ÀÍs @  I#õ?d KᨒÙÇ @  I$ö?d ÐKá*Î @  I%÷?d LáïßpÎ @  I&ø?d PLámNg @  I'ù?d Láñç×3 @  I(ú?d ÐLásvÀí @  I)û?d Máç¼âú @  I*ü?d PMáe-õ$ @  I+ý?d Máòá @  I,þ?d ÐMápîöN @  I-ÿ?d Náé aÍ @  I.?d PNákv @  I/?d NáZ•øÐ @  I0?d ÐNáØï @  I1?d OáLÎÍ @  I2?d POáÎ_ÚÇ @  I3?d OáY Îs @  I4?d ÐOáۜ٭ @  I5?d Pá¹Ð(Ç @  I6?d PPá;A? @  I7 ?d Pá§è: @  I8 ?d ÐPá%y˜ä @  I9 ?d Qá±³ºó @  I: ?d PQá3"­- @  I; ?d Qá¤p¹™ @  I<?d ÐQá&á®G @  I=?d Rág!² @  I>?d PRá€ö6l @  I??d Ráÿ™ @  I@?d ÐRáŒnŽS @  IA?d S᤬D @  IB?d PSáš5»š @  IC?d Sá g¯. @  ID?d ÐSáö¸ð @  IE?d TáJ*' @  IF?d PTáÈ»ù @  IG?d TáT¡Ú @  IH?d ÐTáÖƒ¶ @  II?d UáBI” @  IJ?d PUáÀ؃Í @  IK?d UáWŠ—y @  IL?d ÐUáÕ€§ @  IM?d Vál*6Ž @  IN ?d PVáî»!P @  IO!?d Váß³¯“ @  IP"?d ÐVá]"¸M @  IQ#?d WáÉèšZ @  IR$?d PWáKy„ @  IS%?d WáÜ+™0 @  IT&?d ÐWá^ºŽî @  IU'?d Xá¶×O+ @  IV(?d PXá4FXõ @  IW)?d Xá¨ïèÖ @  IX*?d ÐXá*~ÿ @  IY+?d Yá¾´Ý @  IZ,?d PYá<%ÊÁ @  I[-?d Yá«wÞu @  I\.?d ÐYá)æÉ« @  I]/?d Zá `F^ @  I^0?d PZáñQ€ @  I_1?d Zá¯ÿøó @  I`2?d ÐZá-nï- @  Ia3?d [ṤÍ: @  Ib4?d P[á;5Úä @  Ic5?d [á¬gÎP @  Id6?d Ð[á.öÙŽ @  Ie7?d \áë*gY @  If8?d P\ái»p‡ @  Ig9?d \áõÀ¤ @  Ih:?d Ð\áwƒ×z @  Ii;?d ]áãIõm @  Ij<?d P]áaØâ³ @  Ik=?d ]áöŠö @  Il>?d Ð]átáÙ @  Im??d ^á=zBá @  In@?d P^á¿ëU? @  IoA?d ^áŽãÛü @  IpB?d Ð^á rÌ" @  IqC?d _ᘸî5 @  IrD?d P_á)ùë @  IsE?d _á{í_ @  IuÐ`átF?d Ð_á6-&T @  Iu G?d (`áTGÞ @  Iv H?d h`áÖÖÉÊ @  Iw I?d ¨`áJyé @  Ix J?d è`áÈîn7 @  Iy K?d (aá\$L  @  Iz L?d haáÞµ[þ @  I{ M?d ¨aáIçOJ @  I| N?d èaáËvX” @  I} O?d (báïð×a @  I~ P?d hbámaÀ¿ @  I Q?d ¨bá>_o @  I€ R?d èbႯH± @  I S?d (cáej¦ @  I‚ T?d hcá”ô}x @  Iƒ U?d ¨cá¦iÌ @  I„ V?d ècá7~ @  I… W?d (dáDëÀÅ @  I† X?d hdáÆz× @  I‡ Y?d ¨dáZÓg8 @  Iˆ Z?d èdáØBpæ @  I‰ [?d (eáLˆRñ @  IŠ \?d heáÎE/ @  I‹ ]?d ¨eáYKQ› @  IŒ ^?d èeáÛÚFE @  I _?d (fábëðl @  IŽ `?d hfáàzç² @  I a?d ¨fáÑriq @  I b?d èfáSã~¯ @  I‘ c?d (gáÇ)\¸ @  I’ d?d hgáE¸Kf @  I“ e?d ¨gáÒê_Ò @  I” f?d ègáP{H  @  I• g?d (há¸‰É @  I– h?d hhá:‡ž @  I— i?d ¨há¦..4 @  I˜ j?d èhá$¿9ê @  I™ k?d (iá°uý @  Iš l?d hiá2ä # @  I› m?d ¨i᥶— @  Iœ n?d èiá''I @  I o?d (já¡€¼ @  Iž p?d hjá0—b @  IŸ q?d ¨já¡>> @  I  r?d èjá#¯)Ï @  I¡ s?d (ká·e Ø @  I¢ t?d hká5ô @  I£ u?d ¨kᢦ² @  I¤ v?d èká 7l @  I¥ w?d (láåë¡» @  I¦ x?d hlágz¶e @  I§ y?d ¨láûÓF @  I¨ z?d èláyB˜ @  I© {?d (máíˆ3 @  Iª |?d hmáo$Q @  I« }?d ¨máøK0å @  I¬ ~?d èmázÚ'; @  I­ ?d (ná.}Б @  I® €?d hná¬ìÇO @  I¯ ?d ¨náäIŒ @  I° ‚?d ènáu^R @  I± ƒ?d (oá‹¿|E @  I² „?d hoá .k› @  I³ …?d ¨oáž|/ @  I´ †?d èoáíhñ @  Iµ ‡?d (pá~¡™› @  I¶ ˆ?d hpáü0ŽE @  I· ‰?d ¨pá`™>f @  I¸ Š?d èpáâ)¸ @  I¹ ‹?d (qáv ¯ @  Iº Œ?d hqáôSq @  I» ?d ¨qácÅ @  I¼ Ž?d èqáá @  I½ ?d (ráÅî @  I¾ ?d hráG‡‡0 @  I¿ ‘?d ¨ráÉŽ(Ñ @  IÀ ’?d èráK? @  IÁ “?d (sáßÕ @  I ”?d hsá]D Æ @  Ià •?d ¨sáÊr @  IÄ –?d èsáH‡ ¬ @  IÅ —?d (tá[·{ @  IÆ ˜?d htáÊ ¥ @  IÇ ™?d ¨tá“c† @  IÈ š?d ètáòX @  IÉ ›?d (uá…8%O @  IÊ œ?d huá©2‘ @  IË ?d ¨uáû&% @  IÌ ž?d èuáj1û @  IÍ Ÿ?d (vá«[‡Ò @  IÎ  ?d hvá)Ê  @  IÏ ¡?d ¨váÂÏ @  IÐ ¢?d èvášS  @  IÑ £?d (wá™+ @  IÒ ¤?d hwáŒ<Ø @  IÓ ¥?d ¨wáZ(l @  IÔ ¦?d èwá™Ë?² @  IÕ §?d (xáq¦þw @  IÖ ¨?d hxáó7é© @  I× ©?d ¨xáožYŠ @  IØ ª?d èxáíNT @  IÙ «?d (yáyÅlC @  IÚ ¬?d hyáûT{ @  IÛ ­?d ¨yálo) @  IÜ ®?d èyáî—x÷ @  IÝ ¯?d (záÊ÷ @  IÞ °?d hzáH€àÜ @  Iß ±?d ¨záhŽI¯ @  Ià ²?d èzáê^q @  Iá ³?d ({á~Õ|f @  Iâ ´?d€ h{á=œ¸ @  J µ?d ¨{áKÀ% @  J ¶?d è{áÉ×û @  J ·?d (|áÉ’Á @  J ¸?d h|áK…… @  J ¹?d ¨|ážjF @  J º?d è|á›}˜ @  J »?d (}áÁwõ @  J ¼?d h}áCæ+ @  J ½?d ¨}áýør @  J ¾?d è}á“lï¬ @  J ¿?d (~áD·y @  J À?d h~áÕ § @  J Á?d ¨~áÏÎOþ @  J Â?d è~áM_X  @  J Ã?d (Ẇ­ @  J Ä?d há8 s @  J Å?d ¨áuЀá'j ã* @  J Æ?d èáÑZ(! @  JÇ?d @€á¦?|` @  JÈ?d €€á†Ê~ž @  JÉ?d À€ávµ„ç @  JÊ?d á¦ý @  JË?d @á®\îT @  JÌ?d €áŽ©ìª @  JÍ?d Àá~ÖÓ @  JÎ?d ‚áã’¶ @  JÏ?d @‚áˆu @  JÐ?d €‚á=}wë @  JÑ?d À‚áÍ’ @  JÒ?d ƒáJz @  JÓ?d @ƒá©Lþq @  J Ô?d €ƒá‰¹ü @  J!Õ?d ÀƒáyÆö @  J"Ö?d „á`ˆõù @  J#×?d @„áûÂT @  J$Ø?d €„áÛ7Vì @  J%Ù?d À„á+H¬• @  J&Ú?d …áû } @  J'Û?d @…áó¡Æ& @  J(Ü?d €…áÓTÄØ @  J)Ý?d À…á#+>¡ @  J*Þ?d †á¾ož` @  J+ß?d @†áÝÂd» @  J,à?d €†áý7fE @  J-á?d À†á Hœ< @  J.â?d ‡áÝÔ @  J/ã?d @‡áxÈo @  J0ä?d €‡áXõÊ‘ @  J1å?d À‡á¨Š0è @  J2æ?d ˆáœu¼õ @  J3ç?d @ˆá? @  J4è?d €ˆá'Êà @  J5é?d Àˆá×µå™ @  J6ê?d ‰áýiq @  J7ë?d @‰á\* @  J8ì?d €‰á/©Ô @  J9í?d À‰áßÖw­ @  J:î?d ŠáB’×l @  J;ï?d @Šá¼ˆk @  J<ð?d €Šáœ}• @  J=ñ?d ÀŠálìì @  J>ò?d ‹á¼J` @  J?ó?d @‹á¦K™ @  J@ô?d €‹á†¾›c @  JAõ?d À‹ávÁa @  JBö?d Œáo’ @  JC÷?d @ŒáôÅ3þ @  JDø?d €ŒáÔ01 @  JEù?d ÀŒá$OËy @  JFú?d áôG‘ @  JGû?d @áü¦¡Ê @  JHü?d €áÜS£4 @  JIý?d Àá,,YM @  JJþ?d Žá±hùŒ @  JKÿ?d @Žá@4Ø @  JL?d €Žá`Á& @  JM?d ÀŽá¾ï_ @  JN?d á@öc· @  JO?d @áåö»  @  JP?d €áŹò @  JQ?d Àá5|C‹ @  JR?d á‹¢ÿ9 @  JS?d @áè^Ò @  JT?d €á0\, @  JU ?d ÀáÀb¦U @  JV ?d ‘á**½ @  JW ?d @‘á‹Ìæ @  JX ?d €‘á8~Î @  JY ?d À‘áÈ4a @  JZ?d ’áUE”  @  J[?d @’á«_W§ @  J\?d €’ዪUY @  J]?d À’á{Õ¯  @  J^?d “á«#È @  J_?d @“á›Üà @  J`?d €“á?nÞ= @  Ja?d À“áÏ$D @  Jb?d ”áÖ_×K @  Jc?d @”áMv  @  Jd?d €”ámàt^ @  Je?d À”៎' @  Jf?d •áM×Ï @  Jg?d @•áEvä” @  Jh?d €•áeƒæj @  Ji?d À•á•ü @  Jj?d –á¸¼Ò @  Jk?d @–ákF  @  Jl ?d €–áKàD÷ @  Jm!?d À–ở¾Ž @  Jn"?d —ák×2f @  Jo#?d @—áÎ×êÝ @  Jp$?d €—áî"è# @  Jq%?d À—á]Z @  Jr&?d ˜á*¢žG @  Js'?d @˜á±è?¬ @  Jt(?d €˜á‘=R @  Ju)?d À˜áabÇ+ @  Jv*?d ™á±*Kà @  Jw+?d @™á¹‹­˜ @  Jx,?d €™á™~¯f @  Jy-?d À™áiU @  Jz.?d šáôEõÞ @  J{/?d @šá _6Ù @  J|0?d €šá*ª4' @  J}1?d ÀšáÚÕÎ^ @  J~2?d ›á B¶ @  J3?d @›áóÊ‹ @  J€4?d €›áÓ?‰à @  J5?d À›á#@s™ @  J‚6?d œá:€– @  Jƒ7?d @œá¡D!} @  J„8?d €œá±#ƒ @  J…9?d ÀœáqÎÙú @  J†:?d ᡆU @  J‡;?d @á©'³I @  Jˆ<?d €á‰Ò±· @  J‰=?d Àáy­KÎ @  JŠ>?d žáäéë @  J‹??d @žáwÅ @  JŒ@?d €žáWá; @  JA?d Àžá§žüB @  JŽB?d ŸáwÖpª @  JC?d @ŸáÒÖ¨ @  JD?d €Ÿáò#ªï @  J‘EuРá?d ÀŸá\P– @  J’F?d  ásWŽð @  J“G?d X áè/ @  J”H?d ˜ áÈè-å @  J•I?d Ø á8—ל @  J–J?d ¡áèß[t @  J—K?d X¡áà~½/ @  J˜L?d ˜¡áÀ‹¿Ñ @  J™M?d Ø¡á0ôE¨ @  JšN?d ¢á­°åi @  J›O?d X¢áSª&n @  JœP?d ˜¢ás_$ @  JQ?d آრÞé @  JžR?d £áShR @  JŸS?d X£áçn­  @  J T?d ˜£áÇ›¯ô @  J¡U?d Ø£á7äU @  J¢V?d ¤á.ª¦‚ @  J£W?d X¤áµài @  J¤X?d ˜¤á•— @  J¥Y?d ؤáejÿî @  J¦Z?d ¥áµ"s @  J§[?d X¥á½ƒ•] @  J¨\?d ˜¥áv—£ @  J©]?d Ø¥ám mÚ @  Jª^?d ¦áðMÍ @  J«_?d X¦á“à7À @  J¬`?d ˜¦á³5> @  J­a?d ئáCjÏG @  J®b?d §á“"C¯ @  J¯c?d X§á6"› @  J°d?d ˜§á×™ê @  J±e?d اáæ¨c“ @  J²f?d ¨áÒWïŽ @  J³g?d X¨áINe @  J´h?d ˜¨áièL› @  Jµi?d بá™—¶â @  J¶j?d ©áIß:  @  J·k?d X©áA~ÜQ @  J¸l?d ˜©áa‹Þ¯ @  J¹m?d Ø©á‘ô$Ö @  Jºn?d ªá °„ @  J»o?d XªáòªG @  J¼p?d ˜ªáÒ_Eî @  J½q?d تá" ¿— @  J¾r?d «áòh3 @  J¿s?d X«áèiÊæ @  JÀt?d ˜«áÈœÈ @  JÁu?d Ø«á8ã2a @  JÂv?d ¬á!­Án @  JÃw?d X¬áºç`… @  JÄx?d ˜¬ášb{ @  JÅy?d جájm˜ @  JÆz?d ­áº%ê @  JÇ{?d X­á²„ò± @  JÈ|?d ˜­á’qðO @  JÉ}?d Ø­áb 6 @  JÊ~?d ®áÿJª÷ @  JË?d X®áqq¯ @  JÌ€?d ˜®áQ„Q @  JÍ?d Ø®á¡ûé( @  J΂?d ¯áq³eÀ @  Jσ?d X¯áÔ³½{ @  JЄ?d ˜¯áôF¿… @  JÑ…?d دá9Eü @  JÒ†?d °áºçùN @  JÓ‡?d X°á!­X¥ @  JÔˆ?d ˜°áXZ[ @  JÕ‰?d ذáñ' " @  JÖŠ?d ±á!o,Ê @  J׋?d X±á)ÎÊ‘ @  JØŒ?d ˜±á ;Èo @  JÙ?d رáùD2 @  JÚŽ?d ²ád’× @  JÛ?d X²ášQÐ @  JÜ?d ˜²áºïS. @  JÝ‘?d زáJ©W @  JÞ’?d ³ášØ%¿ @  Jß“?d X³á.ÞÚ´ @  Jà”?d ˜³á+ØJ @  Já•?d سáþT"3 @  Jâ–?d€ ´á“ÙÍš @  K—?d X´áÐø @  K ˜?d ˜´áðàús @  K ™?d Ø´áÅÖûç @  K š?d µážw @  K ›?d XµáÓÎ. @  K œ?d ˜µáóxÌÐ @  K ?d صá͵iÓ @  K ž?d ¶áPñÉ @  K Ÿ?d X¶áöÈ$ @  K  ?d ˜¶áÖàÊÚ @  K ¡?d ضáãÖËN @  K ¢?d ·á3žG¦ @  K £?d X·áõþ‡ @  K ¤?d ˜·áÕxüy @  K ¥?d Ø·áFgš @  K ¦?d ¸árëë‡ @  K §?d X¸á,è± @  K ¨?d ˜¸á ³ @  K ©?d ظá9+²ë @  K ª?d ¹áéc> @  K «?d X¹á/p‡" @  K ¬?d ˜¹á……Ü @  K ­?d عá1H ß @  K ®?d ºá¬ € @  K ¯?d Xºá—_¸ô @  K °?d ˜ºá·ªº  @  K ±?d غႜ»ž @  K ²?d »áRÔ7v @  K ³?d X»á”ÇŽW @  K ´?d ˜»á´2Œ© @  K µ?d Ø»á6X0ú @  K ¶?d ¼á/Ãõ @  K! ·?d X¼áq™ó @  K" ¸?d ˜¼áQà›  @  K# ¹?d ؼádÖš™ @  K$ º?d ½á´žq @  K% »?d X½ár¯P @  K& ¼?d ˜½áRx­® @  K' ½?d ؽálµ­ @  K( ¾?d ¾áññ¨l @  K) ¿?d X¾á§E¼K @  K* À?d ˜¾á‡°¾µ @  K+ Á?d ؾᲆ¿! @  K, Â?d ¿ábÎ3É @  K- Ã?d X¿á¤ÝŠè @  K. Ä?d ˜¿á„(ˆ @uÐÀá  K/ Å?d Ø¿á.ƒÏ  @  K0Æ?d 0ÀáJsžr @  K1Ç?d pÀápÄt @  K2È?d °Àá4…ÆŠ @  K3É?d ðÀá³Ç @  K4Ê?d 0ÁáÑûKö @  K5Ë?d pÁáèò× @  K6Ì?d °Áá7ð) @  K7Í?d ðÁá ÐU* @  K8Î?d 0Âá””õë @  K9Ï?d pÂá¯ÇÍ @  K:Ð?d °Âá2Ïÿ @  K;Ñ?d ðÂáºÎk @  K<Ò?d 0ÃájLBƒ @  K=Ó?d pÃá¬_û¢ @  K>Ô?d °Ãጪù\ @  K?Õ?d ðÃá ÇC @  K@Ö?d 0Äṉ°’ @  KA×?d pÄáçŠê” @  KBØ?d °ÄáÇèj @  KCÙ?d ðÄáòIéþ @  KDÚ?d 0Åá"e @  KEÛ?d pÅáäÜ7 @  KFÜ?d °ÅáÄçÞÉ @  KGÝ?d ðÅáú*{Ê @  KHÞ?d 0ÆágnÛ  @  KIß?d pÆáÁŠÚ= @  KJà?d °ÆááØÃ @  KKá?d ðÆáÔIÙW @  KLâ?d 0ÇáU¿ @  KMã?d pÇáÂìž @  KNä?d °Çáâçî` @  KOå?d ðÇáq‹uƒ @  KPæ?d 0ÈáEtùž @  KQç?d pÈáw£˜ @  KRè?d °Èá;‚¡f @  KSé?d ðÈá´ ò @  KTê?d 0ÉáÞü, @  KUë?d pÉáï•; @  KVì?d °Éá8—Å @  KWí?d ðÉá×2Æ @  KXî?d 0Êᛓ’ @  KYï?d pÊá Àªí @  KZð?d °Êá€5¨ @  K[ñ?d ðÊᵩ‡ @  K\ò?d 0ËáeK%o @  K]ó?d pËá£XœN @  K^ô?d °Ëჭž° @  K_õ?d ðËáÇ"ã @  K`ö?d 0Ìá‰Ñì @  Ka÷?d pÌáFŠ‹ê @  Kbø?d °Ìáf‰ @  Kcù?d ðÌáSIˆ€ @  Kdú?d 0Íáƒh @  Keû?d pÍáE½I @  Kfü?d °Íáeç¿· @  Kgý?d ðÍá[*´ @  Khþ?d 0ÎáÆnºu @  Kiÿ?d pÎáHž# @  Kj?d °Îá7½œÝ @  Kk?d ðÎá‹I @  Kl?d 0ÏáÒá @  Km?d pÏáШ€ @  Kn?d °Ïá4%ª~ @  Ko?d ðÏá§I1 @  Kp?d 0Ðá—/ @  Kq?d pÐáG”×) @  Kr?d °ÐágaÕ× @  Ks ?d ðÐáRWÔC @  Kt ?d 0Ñá‚X« @  Ku ?d pÑáD አ@  Kv ?d °Ñádùãt @  Kw ?d ðÑáZ4Fw @  Kx?d 0ÒáÇpæ¶ @  Ky?d pÒáü#Þ\ @  Kz?d °ÒáÜÖÜ¢ @  K{?d ðÒáéàÝ6 @  K|?d 0Óá9¨QÞ @  K}?d pÓáÿ»èÿ @  K~?d °ÓáßNê @  K?d ðÓáu`ñ @  K€?d 0Ôá ;“þ @  K?d pÔáW8Éø @  K‚?d °ÔáwÍË @  Kƒ?d ðÔáBûÊ’ @  K„?d 0Õá’³Fz @  K…?d pÕáT ÿ[ @  K†?d °ÕátUý¥ @  K‡?d ðÕáJ˜X¦ @  Kˆ?d 0Öá×Üøg @  K‰?d pÖáq8ùQ @  KŠ ?d °ÖáQÍû¯ @  K‹!?d ðÖádûú; @  KŒ"?d 0×á´³vÓ @  K#?d p×ár Ïò @  KŽ$?d °×áRUÍ  @  K%?d ð×áÁ9Vï @  K&?d 0ØáõÆÚò @  K‘'?d pØá«Å€ô @  K’(?d °Øá‹0‚  @  K“)?d ðØá¾ƒž @  K”*?d 0ÙánNv @  K•+?d pÙá¨]¶W @  K–,?d °Ùረ´© @  K—-?d ðÙá¶eª @  K˜.?d 0Úá+!±k @  K™/?d pÚár‰ @  Kš0?d °Úá0‡‹ @  K›1?d ðÚ᱊ë @  Kœ2?d 0ÛáÕù @  K3?d pÛáê¿" @  Kž4?d °Ûá3½Ü @  KŸ5?d ðÛá±u @  K 6?d 0Üá¨;ò€ @  K¡7?d pÜáö8¨† @  K¢8?d °ÜáÖͪx @  K£9?d ðÜáãû«ì @  K¤:?d 0Ýá3³' @  K¥;?d pÝáõ ž% @  K¦<?d °ÝáÕUœÛ @  K§=?d ðÝáë˜9Ø @  K¨>?d 0ÞávÜ™ @  K©??d pÞá h> @  Kª@?d °ÞáÀ @  K«A?d ðÞá5«ŽT @  K¬B?d 0ßáåã¼ @  K­C?d pßá#ð» @  K®D?d uÐàá/°ßá¹c @  K¯E?d ðßái"€ @  K°F?d Hàá‰Í|v @  K±G?d ˆàáuª3P @  K²H?d Èàá÷;$Ž @  K³I?d ááÔ¾, @  K´J?d HááE©ò @  KµK?d ˆááv2ó @  K¶L?d Èááô£- @  K·M?d âáÕ»1 @  K¸N?d HâáW*ï @  K¹O?d ˆâáÎ:% @  KºP?d ÈâáLŒ-û @  K»Q?d ãá+c·Y @  K¼R?d Hãá©ò ‡ @  K½S?d ˆãáÍ… † @  K¾T?d ÈãáOX @  K¿U?d äáø¦EH @  KÀV?d Häáz7R– @  KÁW?d ˆäá†P° @  KÂX?d ÈäáÁ n @  KÃY?d åác.Ì @  KÄZ?d Håáῇ @  KÅ[?d ˆåá…È+ @  KÆ\?d ÈåáY<Í @  KÇ]?d æá&A.Ñ @  KÈ^?d Hæá¤Ð9 @  KÉ_?d ˆæá P- @  KÊ`?d Èæá"Á:Ç @  KËa?d çáE. e @  KÌb?d HçáÇ¿·» @  KÍc?d ˆçá£Èº @  KÎd?d Èçá!Y d @  KÏe?d èá[ D @  KÐf?d Hèá†Êš @  KÑg?d ˆèáz­T¼ @  KÒh?d ÈèáøwÖ @  L ƒ?d ˆïáM : @  L „?d ÈïáÏ‘7ä @  L …?d ðá¡fñ @  L†?d Hðá0q/ @  L‡?d ˆðáD_“ @  Lˆ?d ÈðáœÕHM @  L‰?d ñá>s) @  LŠ?d Hñá¼â>Ü @  L‹?d ˆñáÜi0 @  LŒ?d ÈñáŸM~î @  L?d òápç3ˆ @  LŽ?d Hòáòv$V @  L?d ˆòá¥óVæ @  L?d Èòá'bA8 @  L‘?d óá…Ä w @  L’?d HóáU7© @  L“?d ˆóá¦k`E @  L”?d Èóá$úw› @  L•?d ôáOZi3 @  L–?d HôáÍË~í @  L—?d ˆôáC¹wá @  L ˜?d ÈôáÁ(`? @  L!™?d õácŽp @  L"š?d Hõáá® @  L#›?d ˆõá@!AB @  L$œ?d Èõá°Vœ @  L%?d öá-ú @  L&ž?d Höᯋ $ @  L'Ÿ?d ˆöáe¹GH @  L( ?d Èöáç(P– @  L)¡?d ÷áEŽ1Ù @  L*¢?d H÷áÇ& @  L+£?d ˆ÷áf!që @  L,¤?d È÷áä°f5 @  L-¥?d øá¢¡ @  L.¦?d Høá 0Q @  L/§?d ˆøá¿D>í @  L0¨?d Èøá=Õ)3 @  L1©?d ùáŸsH| @  L2ª?d Hùáâ_¢ @  L3«?d ˆùá¼ÜN @  L4¬?d Èùá>M @  L5­?d úáÑçRö @  L6®?d HúáSvE( @  L7¯?d ˆúáó7˜ @  L8°?d Èúá†b F @  L9±?d ûá$ÄA  @  L:²?d Hûá¦UV× @  L;³?d ˆûák; @  L<´?d Èûá…úå @  L=µ?d üáîZM @  L>¶?d HüálË“ @  L?·?d ˆüáL¾  @  L@¸?d ÈüáÎ/Ó @  LA¹?d ýál‰fœ @  LBº?d HýáîqB @  LC»?d ˆýáO&&® @  LD¼?d ÈýáÍ·1p @  LE½?d þá"| @  LF¾?d Hþá ŒkÈ @  LG¿?d ˆþášî5µ @  LHÀ?d Èþá"k @  LIÁ?d ÿáºÙC$ @  LJÂ?d Hÿá8HTú @  LKÃ?d ˆÿá™v @  LLuÐâÄ?d ÈÿáçÈ @  LMÅ?d âmø±x @  LNÆ?d `âïi¦¦ @  LOÇ?d  âpˆ @  LPÈ?d àâòŒŸÄ @  LQÉ?d âP*þ‹ @  LRÊ?d `âÒ»éU @  LSË?d  âs…¾¹ @  LTÌ?d àâñ©g @  LUÍ?d â¾ä @  LVÎ?d `âœ/óß @  LWÏ?d  â˪o @  LXÐ?d àâI;–± @  LYÑ?d âë÷þ @  LZÒ?d `âi à  @  L[Ó?d  âÈ2·Ì @  L\Ô?d àâJ£  @  L]Õ?d â!¾º @  L^Ö?d `⣒©d @  L_×?d  â-à h @  L`Ø?d àâ¯q·¶ @  LaÙ?d â ×Öù @  LbÚ?d `âFÁ' @  LcÛ?d  â.x–Ë @  LdÜ?d àâ¬é @  LeÝ?d âCCÌs @  LfÞ?d `âÁÒÛ­ @  Lgß?d  â àÁ @  Lhà?d àâ‰q‡ @  Liá?d â+׿P @  Ljâ?d `â©FñŽ @  Lkã?d  âx¦b @  Llä?d àâŠé±¼ @  Lmå?d âÌøÐ @  Lnæ?d `âNiÇØ @  Loç?d  âÑéd @  Lpè?d àâSŒþº @  Lqé?d âñ*Ÿõ @  Lrê?d ` âs»ˆ+ @  Lsë?d   âÒ…ßÇ @  Ltì?d à âPÈ @  Luí?d ⿾… @  Lvî?d ` â=/’¡ @  Lwï?d   âjªà @  Lxð?d à âè;÷Ï @  Lyñ?d âJ–€ @  Lzò?d ` âÈ ^ @  L{ó?d   âi2Ö² @  L|ô?d à âë£Ál @  L}õ?d â€ßÄ @  L~ö?d ` â’È @  L÷?d   âÁ±÷µ @  L€ø?d à âC àk @  Lù?d âá†$ @  L‚ú?d ` âc–ú @  Lƒû?d   âÂ)Á @  L„ü?d à â@¸ÖÈ @  L…ý?d ⯛® @  L†þ?d `â-ƒŒp @  L‡ÿ?d  âu@Ó“ @  Lˆ ?d àâ÷ÑÄM @  L‰ ?d âUw¥ @  LŠ ?d `â׿²Ü @  L‹ ?d  âvØå0 @  LŒ ?d àâôIòî @  L ?d â8y£û @  LŽ ?d `âºè´% @  L ?d  â%œš™ @  L ?d àâ§ G @  L‘ ?d â«ì @  L’ ?d `â‡:ûÖ @  L“ ?d  â&¬: @  L” ?d à⤕»ä @  L• ?d âK?ö‚ @  L– ?d `âÉ®á\ @  L— ?d  âž+“ì @  L˜ ?d à⺄2 @  L™ ?d â¾å} @  Lš ?d `â<ò£ @  L› ?d  â³¥O @  Lœ ?d àâ"²‘ @  L ?d ât‚¬9 @  Lž ?d `âö»ç @  LŸ ?d  âxa²ë @  L  ?d àâúð¥5 @  L¡ ?d âXVÄz @  L¢ ?d `âÚÇÓ¤ @  L£ ?d  â{ù„H @  L¤ ?d àâùh“– @  L¥ ?d âÂÞð @  L¦ ?d `â”SÉ. @  L§ ?d  â^a‚B @  L¨ ?d àâÜ𕜠@  L©! ?d â~VôÓ @  Lª" ?d `âüÇã  @  L«# ?d  â]ù´á @  L¬$ ?d àâßh£? @  L­% ?d â™yÂ… @  L®& ?d `âèÕ[ @  L¯' ?d  â„œûç @  L°( ?d àâ ì9 @  L±) ?d ⤫v @  L²* ?d `â&:š¨ @  L³+ ?d  â‡ÍD @  L´, ?d àâ•Úš @  Lµ- ?d âê?—ü @  L¶. ?d `âh®€" @  L·/ ?d  â?+ò’ @  L¸0 ?d à⽺åL @  L¹1 ?d â„ @  Lº2 ?d `â“Ý @  L»3 ?d  â<³Ä1 @  L¼4 ?d àâ¾"Óï @  L½5 ?d âÕ‚ÍG @  L¾6 ?d `âWÚ™ @  L¿7 ?d  âwfÕ @  LÀ8 ?d àâõ÷ÂÙ @  LÁ9 ?d âWQ£– @  LÂ: ?d `âÕÀ´H @  LÃ; ?d  âtþ㤠@  LÄ< ?d àâöoôz @  LÅ= ?d ⏠@  LÆ> ?d `â›T®Â @  LÇ? ?d  â¡6ð¿ @  LÈ@ ?d àâ#§ça @  LÉA ?d â†. @  LÊB ?d `â‘ð @  LËC ?d  â¢®ÆuÐ â @  LÌD ?d àâ ?Ñ @  LÍE ?d 8 â#Úâ @  LÎF ?d x â¡KõÝ @  LÏG ?d ¸ â>?Ûa @  LÐH ?d ø ⼮̿ @  LÑI ?d 8!â­ð @  LÒJ ?d x!✙º. @  LÓK ?d ¸!â=§í @  LÔL ?d ø!â¿6ú @  LÕM ?d 8"âPœ·z @  LÖN ?d x"âÒ  ¤ @  L×O ?d ¸"â…ˆÒ @  LØP ?d ø"âÅÊ @  LÙQ ?d 8#⥿¤… @  LÚR ?d x#â'.³[ @  LÛS ?d ¸#â†ä· @  LÜT ?d ø#âói @  LÝU ?d 8$âo!íÁ @  LÞV ?d x$âí°ú @  LßW ?d ¸$âcÂó @  LàX ?d ø$âáSäÍ @  LáY ?d 8%âCõ…‚ @  LâZ ?d€ x%âµ§Žú @  M[ ?d ¸%âõØ‘? @  M\ ?d ø%âwI†á @  M] ?d 8&â]ª0j @  M^ ?d x&âß;'´ @  M_ ?d ¸&âÛ»3¢ @  M` ?d ø&âY*$| @  Ma ?d 8'â5>I @  Mb ?d x'â·¯ — @  M c ?d ¸'âÓØ¡– @  M d ?d ø'âQI¶H @  M e ?d 8(âÒ, @  M f ?d x(âP€;Á @  M g ?d ¸(â¬çtç @  Mh ?d ø(â.vc9 @  Mi ?d 8)âïÃcì @  Mj ?d x)âmRt2 @  Mk ?d ¸)â %Ø3 @  Ml ?d ø)â‹´Ïí @  Mm ?d 8*â¡Wyf @  Mn ?d x*â#Æn¸ @  Mo ?d ¸*âºñCr @  Mp ?d ø*â8`T¬ @  Mq ?d 8+âTtj™ @  Mr ?d x+âÖå}G @  Ms ?d ¸+â²’ÑF @  Mt ?d ø+â0Ƙ @  Mu ?d 8,âžê#Ý @  Mv ?d x,â{4 @  Mw ?d ¸,âà{% @  Mx ?d ø,âblû @  My ?d 8-â²>Kž @  M z ?d x-â0¯\@ @  M!{ ?d ¸-âTØðA @  M"| ?d ø-âÖIçŸ @  M#} ?d 8.âüªQ @  M$~ ?d x.â~;FÊ @  M% ?d ¸.â—-_ @  M&€ ?d ø.â¼ @  M' ?d 8/ây¨:´ @  M(‚ ?d x/âû9-j @  M)ƒ ?d ¸/âŸNk @  M*„ ?d ø/âß–µ @  M+… ?d 80⦘ ?d ø4â¤:|© @  M?™ ?d 85âÚŽ]^ @  M@š ?d x5âXJ€ @  MA› ?d ¸5ââ5&ª @  Md¾ ?d x>â·‹1t @  Me¿ ?d ¸>âC[0s @  MfÀ ?d ø>âÁÊ'­ @  MgÁ ?d 8?â­Þ˜ @  Mh ?d x?â/OF @  Mià ?duÐ@â7 ¸?âK8¢G @  MjÄ ?d ø?âÉ©µ™ @  MkÅ ?d P@â½¢ï @  MlÆ ?d @âW @  MmÇ ?d Ð@âÃTA @  MnÈ ?d AâÍÿ @  MoÉ ?d PAâ€pV @  MpÊ ?d Aâ …Tâ @  MqË ?d ÐAâf–íà @  MrÌ ?d BâûÒM @  MsÍ ?d PBâÎäL– @  MtÎ ?d BâîNh @  MuÏ ?d ÐBâÕBv‚ @  MvÐ ?d Câ új @  MwÑ ?d PCâ;Ç_i @  MxÒ ?d Câ2]— @  MyÓ ?d ÐCâÝ!ä¶ @  MzÔ ?d DâÄo¹ @  M{Õ ?d PDâñY- @  M|Ö ?d DâѬÓ @  M}× ?d ÐDâ¯NÕ @  M~Ø ?d Eâ_çÂ= @  MÙ ?d PEâÜHÍ @  M€Ú ?d Eâ°)J3 @  MÛ ?d ÐEâv:ó @  M‚Ü ?d Fâë~SÓ @  MƒÝ ?d PFâÞHRG @  M„Þ ?d Fâþ½P¹ @  M…ß ?d ÐFâXYQ @  M†à ?d GâˆÝg @  M‡á ?d PGâ¶Üxd @  Mˆâ ?d Gâ–)zš @  M‰ã ?d ÐGâP:û @  MŠä ?d HâdÅO¦ @  M‹å ?d PHâQóN2 @  MŒæ ?d HâqLÌ @  Mç ?d ÐHâ/Ê @  MŽè ?d IâÿMš" @  Mé ?d PIâl!Á @  Mê ?d IâLÔ? @  M‘ë ?d ÐIâŠÇº @  M’ì ?d Jâƒß @  M“í ?d PJâ"µK @  M”î ?d Jâ@µ @  M•ï ?d ÐJâ9!_ @  M–ð ?d Kâé[­· @  M—ñ ?d PKâ×–´ @  M˜ò ?d Kâ÷c J @  M™ó ?d ÐKâ1p³k @  Mšô ?d Lâ(>@d @  M›õ ?d PLâAð @  Mœö ?d Lâ=ýC @  M÷ ?d ÐLâcþ @  Mžø ?d Mâ³¶•à @  MŸù ?d PMâ1Ü)³ @  M ú ?d Mâ)+M @  M¡û ?d ÐMâ×:’l @  M¢ü ?d NâJ~2­ @  M£ý ?d PNâH39 @  M¤þ ?d Nâ_½1Ç @  M¥ÿ ?d ÐNâÙŠ[ @  M¦ ?d Oâ ³ @  M§ ?d POâ78° @  M¨ ?d Oâú:N @  M© ?d ÐOâÑéƒo @  Mª ?d Pâo7?Ý @  M« ?d PPâZ>I @  M¬ ?d Pâzô<· @  M­ ?d ÐPâ$÷f± @  M® ?d Qâô¿êY @  M¯ ?d PQâgÓqº @  M° ?d QâG&sD @  M± ?d ÐQâ5Êe @  M² ?d Râqj¤ @  M³ ?d PRâ)Gk0 @  M´ ?d Râ ²iÎ @  Mµ ?d ÐRâ2áQ$ @  M¶ ?d Sââ©ÝÌ @  M· ?d PSâÜdxÏ @  M¸ ?d Sâü‘z1 @  M¹ ?d ÐSâ:‚à @  Mº ?d Tâ#Ì0 @  M» ?d PTâú1‹ @  M¼ ?d Tâ63u @  M½ ?d ÐTâh is @  M¾ ?d Uâ¸Då› @  M¿ ?d PUâ”)_Z @  MÀ ?d Uâ´Ü]¤ @  MÁ ?d ÐUârÏä… @  M ?d Vâï‹DD @  Mà ?d PVâÚ½EÐ @  MÄ ?d VâúHG. @  MÅ ?d ÐVâ\¬F @  MÆ ?d WâŒäÊð @  MÇ! ?d PWâ²)oó @  MÈ" ?d Wâ’Üm  @  MÉ# ?d ÐWâTÏÔ, @  MÊ$ ?d Xâ`0X1 @  MË% ?d PXâUY¥ @  MÌ& ?d Xâuó[[ @  MÍ' ?d ÐXâ+ð] @  MÎ( ?d Yâû¸µ @  MÏ) ?d PYâhÔV @  MÐ* ?d YâH!¨ @  MÑ+ ?d ÐYâŽ2­‰ @  MÒ, ?d Zâv H @  MÓ- ?d PZâ&@ Ü @  MÔ. ?d Zâµ" @  MÕ/ ?d ÐZâ=æ6È @  MÖ0 ?d [âí®º  @  M×1 ?d P[âÓc# @  MØ2 ?d [âó–Ý @  MÙ3 ?d Ð[â5…¤ü @  MÚ4 ?d \â,ËWó @  MÛ5 ?d P\âýVg @  MÜ6 ?d \â9T™ @  MÝ7 ?d Ð\âg Ÿ @  MÞ8 ?d ]â·C‚w @  Mß9 ?d P]â5)>$ @  Mà: ?d ]âÜ<Ú @  Má; ?d Ð]âÓÏ…û @  Mâ< ?d€ ^âÌÒ: @  N= ?d P^â[»›‡ @  N> ?d ^â{N™y @  N? ?d Ð^âè³v³ @  N@ ?d _â8ûú[ @  NA ?d P_âÈ„" @  NB ?d _âèqÜ @  NuÐ`âC ?d Ð_âàÐä‡ @  ND ?d (`â^(Q @  N E ?d h`â®W«f @  N F ?d ¨`⎢©˜ @  N G ?d è`âès @  N H ?d (aâÅ „› @  N I ?d haâ5ß~â @  NJ ?d ¨aâ*| @  NK ?d èaâ°*¤§ @  NL ?d (bâ-nf @  NM ?d hbâÝþ @  NN ?d ¨bâýäüá @  NO ?d èbâþ?æ @  NP ?d (câÓ¶³ @  NQ ?d hcâ#ÉIw @  NR ?d ¨câz ?d ¨mâøÑ  @  N?{ ?d èmââÐë9 @  N@| ?d (nâ”Kø @  NA} ?d hnâë± @  NB~ ?d ¨n⯳ @  NC ?d ènâ!%' @  ND€ ?d (oâñm„Ï @  NE ?d hoâ~¶ @  NF‚ ?d ¨oâ!ç|H @  NGƒ ?d èoâ)Fš @  NH„ ?d (pâ—˜&¡ @  NI… ?d hpâgçÜØ @  NJ† ?d ¨pâGÞ& @  NK‡ ?d èpâÜXÍ @  NLˆ ?d (qâ ó% @  NM‰ ?d hqâüo \ @  NNŠ ?d ¨qâÜš ¢ @  NO‹ ?d èqâyšÓ @  NPŒ ?d (râäÞsØ @  NQ ?d hr⡉¡ @  NRŽ ?d ¨râ4T‹_ @  NS ?d èrâÊNHX @  NT ?d (sâİ @  NU‘ ?d hsâêy>É @  NV’ ?d ¨sâÊŒ<7 @  NW“ ?d èsâÂ-Úl @  NX” ?d (tâÛc)c @  NY• ?d htâ+Ó @  NZ– ?d ¨tâ éÑä @  N[— ?d ètâ£p @  N\˜ ?d (uâ@ëüç @  N]™ ?d huâ°”ž @  N^š ?d ¨uâa` @  N_› ?d èuâ$gûk @  N`œ ?d (vâ¹#[ª @  Na ?d hvâI\¡Ó @  Nbž ?d ¨vâi©£- @  NcŸ ?d èvâ Yö @  Nd  ?d (wâÚLÕ @  Ne¡ ?d hwâ*3/g @  Nf¢ ?d ¨wâ Æ-™ @  Ng£ ?d èwâgË @  Nh¤ ?d (xâ6˜Gß @  Ni¥ ?d hxâÆç½¦ @  Nj¦ ?d ¨xâæ¿X @  Nk§ ?d èxâ}X³ @  Nl¨ ?d (yâ­’[ @  Nm© ?d hyâ]oh" @  Nnª ?d ¨yâ}šjÜ @  No« ?d èyâØš²g @  Np¬ ?d (zâEÞ¦ @  Nq­ ?d hzⵡèß @  Nr® ?d ¨zâ•Tê! @  Ns¯ ?d èzâkN)& @  Nt° ?d ({⻥Π@  Nu± ?d h{âKy_· @  Nv² ?d ¨{âkŒ]I @  Nw³ ?d è{âc-» @  Nx´ ?d (|âzcH @  Nyµ ?d h|⊲d @  Nz¶ ?d ¨|âªé°š @  N{· ?d è|â1£q @  N|¸ ?d (}âáë™ @  N}¹ ?d h}â”gà @  N~º ?d ¨}â1ae @  N» ?d è}âÈ6¬¶ @  N€¼ ?d (~âUr w @  N½ ?d h~⥠ö @  N‚¾ ?d ¨~â…øôð @  Nƒ¿ ?d è~â: @  N„À ?d (âÆM—Ò @  N…Á ?d hâ62m« @  N† ?d ¨âuЀâ'ÇoU @  N‡à ?d èâcæúr @  Nˆ€Ä ?d @€â X @  N‰€Å ?d €€â_C÷_ @  NŠ€Æ ?d À€âÝÒà @  N‹€Ç ?d âAÚ\ @  NŒ€È ?d @â–ÐÍ‚ @  N€É ?d €âÄË"Û @  NŽ€Ê ?d ÀâFZ5 @  N€Ë ?d ‚âüZ¡ @  N€Ì ?d @‚â~M @  N‘€Í ?d €‚â,¢& @  N’€Î ?d À‚â®”µø @  N“€Ï ?d ƒâWíÉ @  N”€Ð ?d @ƒâ€Æú @  N•€Ñ ?d €ƒâÒÝN @  N–€Ò ?d ÀƒâPL @  N—€Ó ?d „âÃ2 @  N˜€Ô ?d @„âA£Ä @  N™€Õ ?d €„â¸ø @  Nš€Ö ?d À„â‘)ïC @  N›€× ?d …âXºÕž @  Nœ€Ø ?d @…âÚ+Â@ @  N€Ù ?d €…âˆ0- @  Nž€Ú ?d À…â ¡:Ç @  NŸ€Û ?d †â¡rrÓ @  N €Ü ?d @†â#ãe  @  N¡€Ý ?d €†âqøŠT @  N¢€Þ ?d À†âóiŠ @  N£€ß ?d ‡âÂüg @  N¤€à ?d @‡â@Œë¹ @  N¥€á ?d €‡â—à @  N¦€â ?d À‡â> @  N§€ã ?d ˆâ.Én¦ @  N¨€ä ?d @ˆâ¬Xyx @  N©€å ?d €ˆâþC–! @  Nª€æ ?d Àˆâ|Òÿ @  N«€ç ?d ‰âµA»" @  N¬€è ?d @‰â7Ьü @  N­€é ?d €‰âeËC¥ @  N®€ê ?d À‰âçZT{ @  N¯€ë ?d Šâ];ß @  N°€ì ?d @Šâß, @  N±€í ?d €ŠâÃX @  N²€î ?d ÀŠâ”Ô† @  N³€ï ?d ‹â£WŒ· @  N´€ð ?d @‹â!Æ›i @  Nµ€ñ ?d €‹âsÝt0 @  N¶€ò ?d À‹âñLcî @  N·€ó ?d Œâb2ad @  N¸€ô ?d @Œâà£vº @  N¹€õ ?d €Œâ²¸™ã @  Nº€ö ?d ÀŒâ0)Ž= @  N»€÷ ?d âùº´à @  N¼€ø ?d @â{+£> @  N½€ù ?d €â)0Lg @  N¾€ú ?d Àâ«¡[¹ @  N¿€û ?d Žâ®u? @  NÀ€ü ?d @Žâ,äá @  NÁ€ý ?d €Žâ~ÿí¸ @  N€þ ?d ÀŽâünúf @  NÀÿ ?d â_ë @  NÄ€ ?d @âÝz˜Ú @  NÅ€ ?d €âawƒ @  NÆ€ ?d Àâ ð`] @  NÇ€ ?d â9-j @  NÈ€ ?d @â»:´ @  NÉ€ ?d €âé”Õí @  NÊ€ ?d ÀâkÂ3 @  NË€ ?d ‘⢖øî @  NÌ€ ?d @‘â ï0 @  NÍ€ ?d €‘âri @  N΀ ?d À‘âð· @  NÏ€ ?d ’âJXx @  NЀ ?d @’âÈÉoÍ @  NÑ€ ?d €’âšÒ€” @  NÒ€ ?d À’âC—J @  NÓ€ ?d “â´€Ï{ @  NÔ€ ?d @“â6Ø¥ @  NÕ€ ?d €“âd 7ü @  NÖ€ ?d À“âæ› " @  N×€ ?d ”âuå"¨ @  NØ€ ?d @”â÷t5v @  NÙ€ ?d €”â¥oÚ/ @  NÚ€ ?d À”â'þÍñ @  NÛ€ ?d •âîm÷, @  NÜ€ ?d @•âlüàò @  NÝ€ ?d €•â>ç« @  NÞ€ ?d À•â¼vu @  N߀ ?d –â¥Pa @  Nà€ ?d @–â•4G¿ @  Nဠ?d €–âÇ/¨æ @  N†?d€ À–â1}£ž @  O€ ?d —âáHŠZ @  O€ ?d @—âcÙ„ @  O€! ?d €—âô‹‰0 @  O€" ?d À—âvžî @  O€# ?d ˜âg¼  @  O€$ ?d @˜â„ö«Ò @  O€% ?d €˜â_ñ @  O€& ?d À˜âšÎ / @  O €' ?d ™â–Í @  O €( ?d @™â…ÚÁ @  O €) ?d €™âƒ×Îu @  O €* ?d À™âFÙ« @  O €+ ?d šâ؀ו @  O€, ?d @šâZÀK @  O€- ?d €šâkNˆ @  O€. ?d ÀšâéˆYV @  O€/ ?d ›â€úŠ @  O€0 ?d @›â“íT @  O€1 ?d €›â•Áùà @  O€2 ?d À›âPî> @  O€3 ?d œâJœ³Î @  O€4 ?d @œâÈ ¤ @  O€5 ?d €œâT¤3 @  O€6 ?d ÀœâÖ5í @  O€7 ?d âÚïÂÝ @  O€8 ?d @âX~Õ @  O€9 ?d €âÏ,Á· @  O€: ?d ÀâM½Öi @  O€; ?d žâ”{ØW @  O€< ?d @žâêω @  O€= ?d €žâ6äfú @  O €> ?d Àžâ´uq$ @  O!€? ?d Ÿâ°þ5 @  O"€@ ?d @Ÿâ2‰éë @  O#€A ?d €Ÿâ¥Ûý_ @  O$€B uРâ?d ÀŸâ'Jê @  O%€C ?d  âoCéd @  O&D ?d X âíÒþº @  O'E ?d ˜ âq{N™ @  O(F ?d Ø âóêYG @  O)G ?d ¡âÿ0˜w @  O*H ?d X¡â}¡© @  O+I ?d ˜¡âêó› @  O,J ?d Ø¡âhbŒÃ @  O-K ?d ¢â±¤‚ý @  O.L ?d X¢â35•# @  O/M ?d ˜¢â=à @  O0N ?d آ‬ > @  O1O ?d £âé&¯â @  O2P ?d X£âk·¸< @  O3Q ?d ˜£âü嬈 @  O4R ?d Ø£â~t»V @  O5S ?d ¤â#¸æ¦ @  O6T ?d X¤â¡)ñx @  O7U ?d ˜¤â=€A[ @  O8V ?d ؤâ¿V… @  O9W ?d ¥â³Ë—µ @  O:X ?d X¥â1Z€k @  O;Y ?d ˜¥â¦”ß @  O<Z ?d Ø¥â$™ƒ @  O=[ ?d ¦âý_? @  O>\ ?d X¦âΚá @  O?] ?d ˜¦âñÇ5 @  O@^ ?d ئâsV"Þ @  OA_ ?d §â‡k¸Þ @  OB` ?d X§âú¯ @  OCa ?d ˜§â’¨»´ @  ODb ?d اâ9¬j @  OEc ?d ¨â`DŽˆ @  OFd ?d X¨ââÕ™V @  OGe ?d ˜¨â~|)u @  OHf ?d بâüí>« @  OIg ?d ©âð7ÿ› @  OJh ?d X©âr¦èE @  OKi ?d ˜©âåôüñ @  OLj ?d Ø©âgeë/ @  OMk ?d ªâ¾£å @  ONl ?d Xªâ<2òÏ @  OOm ?d ˜ªâ :|  @  OPn ?d تâ«kÒ @  OQo ?d «âæ!È @  ORp ?d X«âd°ßÐ @  OSq ?d ˜«âóâËd @  OTr ?d Ø«âqsܺ @  OUs ?d ¬â,¿J @  OVt ?d X¬â®.–” @  OWu ?d ˜¬â2‡&· @  OXv ?d جâ°1i @  OYw ?d ­â¼ÌðY @  OZx ?d X­â>]ç‡ @  O[y ?d ˜­â©ó3 @  O\z ?d Ø­â+žäí @  O]{ ?d ®âòXêÓ @  O^| ?d X®âpÉý  @  O_} ?d ˜®âPÇT~ @  O`~ ?d Ø®âÒVC  @  Oa ?d ¯âËý˜# @  Ob€ ?d X¯âIlý @  Oc ?d ˜¯âÞ>›I @  Od‚ ?d دâ\¯Œ— @  Oeƒ ?d °â¦óžÚ @  Of„ ?d X°â$b‰ @  Og… ?d ˜°â¸Ë9' @  Oh† ?d ذâ:Z.ù @  Oi‡ ?d ±â6€ïÉ @  Ojˆ ?d X±â´ø @  Ok‰ ?d ˜±â#Cì£ @  OlŠ ?d رâ¡Òû} @  Om‹ ?d ²âxõC @  OnŒ ?d X²âú…â @  Oo ?d ˜²âËl^ @  OpŽ ?d زâI{€ @  Oq ?d ³â –Ø\ @  Or ?d X³â¢Ï‚ @  Os‘ ?d ˜³â5UÛ6 @  Ot’ ?d سâ·ÄÌè @  Ou“ ?d ´âê‘ @  Ov” ?d X´âh™†Æ @  Ow• ?d ˜´âô06å @  Ox– ?d Ø´âv¡!; @  Oy— ?d µâz{à  @  Oz˜ ?d Xµâøê÷Õ @  O{™ ?d ˜µâo¸ãa @  O|š ?d صâí)ô¿ @  O}› ?d ¶â4ïú @  O~œ ?d X¶â¶~í_ @  O ?d ˜¶âÛ!r @  O€ž ?d ضâY°eQ @  OŸ ?d ·â­ÿQ @  O‚  ?d X·â/è @  Oƒ¡ ?d ˜·â¸Nü; @  O„¢ ?d Ø·â:ßëå @  O…£ ?d ¸âJ¢É @  O†¤ ?d X¸âÈ3ÞÙ @  O‡¥ ?d ˜¸âTšnú @  Oˆ¦ ?d ظâÖ y$ @  O‰§ ?d ¹âÚѸ @  OЍ ?d X¹âX@¯Ê @  O‹© ?d ˜¹âÏ»~ @  OŒª ?d عâMƒ¬  @  O« ?d ºâ”E¢ž @  Oެ ?d XºâÔµ@ @  O­ ?d ˜ºâ'Ü;ƒ @  O® ?d غâ¥M,] @  O‘¯ ?d »âÌÇ @  O’° ?d X»âNV˜_ @  O“± ?d ˜»âÙŒë @  O”² ?d Ø»â[•›5 @  O•³ ?d ¼âYÆÅ @  O–´ ?d X¼â„ÈÑ @  O—µ ?d ˜¼âaa8 @  O˜¶ ?d ؼâšðvæ @  O™· ?d ½â–*·Ö @  Oš¸ ?d X½â»  @  O›¹ ?d ˜½âƒé´¼ @  Oœº ?d ؽâx£b @  O» ?d ¾âؾ­\ @  Ož¼ ?d X¾âZ/º‚ @  OŸ½ ?d ˜¾âz!ñ @  O ¾ ?d ؾâø°/ @  O¡¿ ?d ¿âüÝ‹> @  O¢À ?d X¿â~Lœà @  O£Á ?d ˜¿âéˆT @uÐÀâ  O¤ ?d Ø¿âkŸŠ @  O¥à ?d 0ÀâKý`' @  O¦Ä ?d pÀâÉlwù @  O§Å ?d °ÀâUÅÇÚ @  O¨Æ ?d ðÀâ×TÐ @  O©Ç ?d 0ÁâÛŽ4 @  OªÈ ?d pÁâYê @  O«É ?d °ÁâÎM^ @  O¬Ê ?d ðÁâLÜ€ @  O­Ë ?d 0Ââ• ¾ @  O®Ì ?d pÂâ‹` @  O¯Í ?d °Ââ&ƒ’£ @  O°Î ?d ðÂ⤅} @  O±Ï ?d 0Ãâ͘&¡ @  O²Ð ?d pÃâO 1 @  O³Ñ ?d °ÃâØ[%Ë @  O´Ò ?d ðÃâZÊ2 @  OµÓ ?d 0Äâoå @  O¶Ô ?d pÄâ…—x; @  O·Õ ?d °Äâ>È @  O¸Ö ?d ðÄâ›¯ßÆ @  O¹× ?d 0Åâ—uö @  OºØ ?d pÅâä ( @  O»Ù ?d °Åâ‚¶œ @  O¼Ú ?d ðÅâ' B @  O½Û ?d 0ÆâÙá| @  O¾Ü ?d pÆâ[p¢ @  O¿Ý ?d °ÆâÕy¼C @  OÀÞ ?d ðÆâWè« @  OÁß ?d 0Çâ£Õ1 @  OÂà ?d pÇâ!D&C @  OÃá ?d °Çâ¶2÷ @  OÄâ ?d ðÇâ4‡%) @  OÅã ?d 0ÈâDúË @  OÆä ?d pÈâÆk @  OÇå ?d °ÈâZ 6 @  OÈæ ?d ðÈâØS·è @  OÉç ?d 0ÉâÔ‰vØ @  OÊè ?d pÉâVa @  OËé ?d °ÉâÁJu² @  OÌê ?d ðÉâCÛbl @  OÍë ?d 0ÊâšlR @  OÎì ?d pÊâŒ{Œ @  OÏí ?d °Êâ)„õO @  OÐî ?d ðÊâ«â‘ @  OÑï ?d 0ËâŸAM @  OÒð ?d pËâ@V“ @  OÓñ ?d °Ëâ×\B' @  OÔò ?d ðËâUÍUù @  OÕó ?d 0Ìâ  @  OÖô ?d pÌâŠ× @  O×õ ?d °Ìâ9¯ô @  OØö ?d ðÌ┨¸* @  OÙ÷ ?d 0Íâ˜ry @  OÚø ?d pÍâãnÄ @  OÛù ?d °Íâ±zp @  OÜú ?d ðÍâ m® @  OÝû ?d 0ÎâÖæc @  OÞü ?d pÎâTwtN @  Oßý ?d °ÎâtyÝ= @  Oàþ ?d ðÎâöèÊã @  Oáÿ ?d 0Ïâ¬-{ú @  Oâ ?d€ pÏâEà€Ê @  P ?d °Ïâ3óÜW @  P ?d ðÏâ±bˉ @  P ?d 0ÐâŽw") @  P ?d pÐâ æ5÷ @  P ?d °Ðâ^ýÚ® @  P ?d ðÐâÜlÍp @  P ?d 0ÑâS: @  P ?d pÑ✕Dä @  P  ?d °ÑâÎŽ«½ @  P  ?d ðÑâL¼c @  P  ?d 0ÒâPI° @  P  ?d pÒâÒ^n @  P  ?d °Ò‱7 @  P ?d ðÒ⋦é @  P ?d 0Óâd¯ @  P ?d pÓ⊃sq @  P ?d °Óâؘœ( @  P ?d ðÓâZ ‹ö @  P ?d 0ÔâÂŒ-ë @  P ?d pÔâ@:5 @  P ?d °ÔâÕl @  P ?d ðÔâ—² @  P ?d 0ÕâRÿ\ø @  P ?d pÕâÐnK& @  P ?d °Õâ‚u¤ @  P ?d ðÕâ䳡 @  P ?d 0ÖâkFr @  P ?d pÖâ§=y @  P  ?d °Öâõ&b  @  P  ?d ðÖâw·uþ @  P  ?d 0×âñŸ©Ô @  P  ?d p×âs¾  @  P! ! ?d °×â!QS @  P" " ?d ð×⣄F @  P# # ?d 0Øâ°Ÿ‚ @  P$ $ ?d pØâ”!ˆ\ @  P% % ?d °ØâÆ:g @  P& & ?d ðØâD«pÛ @  P' ' ?d 0Ùâ†Ãî‘ @  P( ( ?d pÙâRùO @  P) ) ?d °ÙâVI @  P* * ?d ðÙâÔØÈ @  P+ + ?d 0ÚâÈWô @  P, , ?d pÚâJÆãÅ @  P- - ?d °ÚâÝ œ @  P. . ?d ðÚâšLB @  P/ / ?d 0ÛâÕÙ @  P0 0 ?d pÛâDÎÚ @  P1 1 ?d °Ûâ@_!ƒ @  P2 2 ?d ðÛâÂÎ6] @  P3 3 ?d 0ÜâZK@ @  P4 4 ?d pÜâØÚ‡ž @  P5 5 ?d °ÜâŠÁhÇ @  P6 6 ?d ðÜâP @  P7 7 ?d 0ÝâÊ8áS @  P8 8 ?d pÝâH©ö @  P9 9 ?d °Ýâ²Ô @  P: : ?d ðÝâ˜#  @  P; ; ?d 0ÞℬûÙ @  P< < ?d pÞâ=ì @  P= = ?d °ÞâT&^ @  P> > ?d ðÞâÖ·€ @  P? ? ?d 0ßâÈÛ) @  P@ @ ?d pßâŒYÌ÷ @  PA A ?d uÐàâ/°ßâÞB#® @  PB B ?d ðßâeè¥ @  PCC ?d Hàâý{ãA @  PDD ?d ˆàâÝŽá¿ @  PEE ?d Èàâ-ñÆ @  PFF ?d áâý¹—. @  PGG ?d Háâm’R @  PHH ?d ˆáâMý¬ @  PII ?d Èá⽂jÕ @  PJJ ?d ââ ÆÊ @  PKK ?d Hââ#œˆØ @  PLL ?d ˆââiŠ& @  PMM ?d Èââóp_ @  PNN ?d ãâ#^ü· @  POO ?d Hãâ{¥Ç @  PPP ?d ˆãâ[ë§9 @  PQQ ?d Èãâ«”]@ @  PRR ?d äâ²Ú®O @  PSS ?d Häâ±€ìƒ @  PTT ?d ˆäâ‘uî} @  PUU ?d Èäâa  @  PVV ?d åâ±B˜ì @  PWW ?d Håâ!ó @  PXX ?d ˆåâŸn @  PYY ?d Èåâñye @  PZZ ?d æâl=ÅÖ @  P[[ ?d Hæâog‡ @  P\\ ?d ˆæâO’…ä @  P]] ?d Èæâ¿í @  P^^ ?d çâo¥óu @  P__ ?d Hçâ»T´i @  P`` ?d ˆç⛡¶— @  Paa ?d ÈçâkÞLî @  Pbb ?d èâ_!Àó @  Pcc ?d Hèâ\{‚? @  Pdd ?d ˆèâ|Ž€Á @  Pee ?d ÈèâŒñz¸ @  Pff ?d éâ\¹öP @  Pgg ?d HéâÌó, @  Phh ?d ˆéâìýñÒ @  Pii ?d Èéâ‚ « @  Pjj ?d êâÆ«j @  Pkk ?d Hêâ‚œé¦ @  Pll ?d ˆêâ¢iëX @  Pmm ?d ÈêâR! @  Pnn ?d ëâ‚^É @  Poo ?d HëâÚĹ @  Ppp ?d ˆëâúëÆG @  Pqq ?d Èëâ ”<> @  Prr ?d ìâÚÏ1 @  Pss ?d Hìâ€ý @  Ptt ?d ˆìâ0u @  Puu ?d ÈìâÀ uz @  Pvv ?d íâBù’ @  Pww ?d Híâ€óüî @  Pxx ?d ˆíâ þ @  Pyy ?d ÈíâPyi @  Pzz ?d îâÍ=¤¨ @  P{{ ?d HîâÎgæd @  P|| ?d ˆîâî’äš @  P}} ?d Èîâíã @  P~~ ?d ïâÎ¥’  @  P ?d Hï⺓¢7 @  P€€ ?d ˆïâšf É @  P ?d ÈïâjZ° @  P‚‚ ?d ðâÔÇæ @  Pƒƒ ?d HðâפÎ @  P„„ ?d ˆðâ÷h¦0 @  P…… ?d Èðâ\I @  P†† ?d ñâ×_С @  P‡‡ ?d HñâGîÕÝ @  Pˆˆ ?d ˆñâg×# @  P‰‰ ?d Èñâ—d-Z @  PŠŠ ?d òâ › @  P‹‹ ?d Hòâ zÏW @  PŒŒ ?d ˆòâ)Í© @  P ?d ÈòâÙð7Ð @  PŽŽ ?d óâ ¸»8 @  P ?d HóâQøâH @  P ?d ˆóâq à¶ @  P‘‘ ?d ÈóârÏ @  P’’ ?d ôâ˜<éÀ @  P““ ?d Hôâ›f«  @  P”” ?d ˆô⻓©ò @  P•• ?d ÈôâKìS‹ @  P–– ?d õ⛤ßc @  P—— ?d Hõâ Ú @  P˜˜ ?d ˆõâ+àØá @  P™™ ?d ÈõâÛŸ"˜ @  Pšš ?d öâFÛ‚Y @  P›› ?d HöâEÀ• @  Pœœ ?d ˆöâetÂk @  P ?d Èöâ• 8 @  Pžž ?d ÷âEC´ú @  PŸŸ ?d H÷⑲óæ @  P   ?d ˆ÷â±Gñ @  P¡¡ ?d È÷âA8 a @  P¢¢ ?d øâuLJ| @  P££ ?d HøâvŰ @  P¤¤ ?d ˆøâVhÇN @  P¥¥ ?d Èøâ¦=7 @  P¦¦ ?d ùâv_±ß @  P§§ ?d Hùâæî´£ @  P¨¨ ?d ˆùâÆ¶] @  P©© ?d Èùâ6dL$ @  Pªª ?d úâ« ìå @  P«« ?d Húâ¨z®) @  P¬¬ ?d ˆúâˆ¬× @  P­­ ?d ÈúâxðV® @  P®® ?d û⨸ÚF @  P¯¯ ?d Hûâðøƒ6 @  P°° ?d ˆûâÐ È @  P±± ?d Èûâ r{± @  P²² ?d üâ9<ˆ¾ @  P³³ ?d Hüâ:fÊr @  P´´ ?d ˆüâ“ÈŒ @  Pµµ ?d Èüâêì2õ @  P¶¶ ?d ýâ:¤¾ @  P·· ?d Hý⪻a @  P¸¸ ?d ˆýâŠà¹Ÿ @  P¹¹ ?d ÈýâzŸCæ @  Pºº ?d þâçÛã' @  P»» ?d Hþâä¡ë @  P¼¼ ?d ˆþâÄt£ @  P½½ ?d Èþâ4 Yl @  P¾¾ ?d ÿâäCÕ„ @  P¿¿ ?d Hÿânå @  PÀÀ ?d ˆÿâNƒå @  PÁuÐãÁ ?d Èÿâ¾oyœ @  P ?d ãñÛQm @  PÃà ?d `ãò¡ @  PÄÄ ?d  ãÒt_ @  PÅÅ ?d àã" ë& @  PÆÆ ?d ãòCgÎ @  PÇÇ ?d `ãbòb² @  PÈÈ ?d  ãB`L @  PÉÉ ?d àã²xš5 @  PÊÊ ?d ã/<:ô @  PËË ?d `ã,fx8 @  PÌÌ ?d  ã “zÆ @  PÍÍ ?d àãü쀿 @  PÎÎ ?d ã,¤ W @  PÏÏ ?d `ãtäU' @  PÐÐ ?d  ãTWÙ @  PÑÑ ?d àã¤n­  @  PÒÒ ?d ã½ ^¯ @  PÓÓ ?d `ã¾zc @  PÔÔ ?d  ãž @  PÕÕ ?d àãnðää @  PÖÖ ?d 㾸h  @  P×× ?d `ã. mp @  PØØ ?d  ãüoŽ @  PÙÙ ?d àãþƒ•÷ @  PÚÚ ?d ãcÇ56 @  PÛÛ ?d `ã`wú @  PÜÜ ?d  ã@hu @  PÝÝ ?d àã°} @  PÞÞ ?d ã`_• @  Pßß ?d `ã´®D‰ @  Pàà ?d  ã”[Fw @  Páá ?d àãd$¼ @  Pââ ?d€ ã$,µ @  Qã ?d `ãÆ&P @  Qä ?d  ãæö$® @  Qå ?d àãÓÀ%: @  Qæ ?d ãˆ©Ò @  Qç ?d ` ã]‹óÔ @  Qè ?d   ã}~ñ* @  Qé ?d à ãC³T) @  Qê ?d ãÞ÷ôè @  Q ë ?d ` ãäMÉ @  Q ì ?d   ã8O7 @  Q í ?d à ã 'N£ @  Q î ?d ãÝoÂK @  Q ï ?d ` ãæ<ú¡ @  Qð ?d   ãÆÉø_ @  Qñ ?d à ãU¥c¼ @  Qò ?d ãLë³ @  Qó ?d ` ãŠø)’ @  Qô ?d   㪠+l @  Qõ ?d à ãŸ;*ø @  Qö ?d ãOs¦ @  Q÷ ?d ` ãpü @  Qø ?d   ã1…þè @  Qù ?d à ãH[ë @  Qú ?d ã’ û* @  Qû ?d `ãTB  @  Qü ?d  ãtê@õ @  Qý ?d àãAÜAa @  Qþ ?d ã‘”͉ @  Qÿ ?d `ã¥Ø0 @  Q ?d  ã…tÚÎ @  Q ?d àãf @  Q  ?d ã¹ÀÚ/ @  Q! ?d `ãÓc @  Q" ?d  ã_&að @  Q# ?d àãj`d @  Q$ ?d ãºXìŒ @  Q% ?d `ãä[¶Š @  Q& ?d  ãÄ®´t @  Q' ?d àãúcw @  Q( ?d ãg'±¶ @  Q) ?d `ã¡4— @  Q* ?d  ãÁ i @  Q+ ?d àã´÷ ý @  Q, ?d ãd¿‡ @  Q- ?d `ã_ì¿ÿ @  Q. ?d  ã½ @  Q/ ?d àãìu&â @  Q0 ?d ãõ;Õí @  Q1 ?d `ã3(lÌ @  Q2 ?d  ãÝn2 @  Q3 ?d àã&ëo¦ @  Q4 ?d ãö£ãN @  Q5 ?d `㨠¹H @  Q6 ?d  ãˆU»¶ @  Q7 ?d à㶘µ @  Q8 ?d ã+ܾt @  Q9 ?d `ãíÏU @  Q: ?d  ãÍ:« @  Q; ?d àãø ? @  Q< ?d ã(Dˆ× @  Q= ?d `㎠‰á @  Q> ?d  ã®U‹ @  Q?! ?d àã‚81Þ @  Q@" ?d ã¶Ç½Ã @  QA# ?d `ãpÔâ @  QB$ ?d  ãP! @  QC% ?d àãeˆ @  QD& ?d ãµ_‹` @  QE' ?d `ãë\Ñf @  QF( ?d  ã˩Ә @  QG) ?d àãõdv› @  QH* ?d ãh ÖZ @  QI+ ?d `ã®3o{ @  QJ, ?d  ãŽÆm… @  QK- ?d àã»ðl @  QL. ?d ãk¸àù @  QM/ ?d `ãPëØ @  QN0 ?d  ãpÚí @  QO1 ?d àããrA @  QP2 ?d ãú<² @  QQ3 ?d `ã ?d ã'Cï; @  Q]? ?d `ãq÷û @  Q^@ ?d  ãQùâuÐ ã @  Q_A ?d àãÓhE± @  Q`B ?d 8 ã¢c›× @  QaC ?d x ãdp"ö @  QbD ?d ¸ ãD…  @  QcE ?d ø ãq³!œ @  QdF ?d 8!ã¡û­t @  QeG ?d x!ãÿø÷r @  QfH ?d ¸!ãß õŒ @  QgI ?d ø!ãáÀP @  QhJ ?d 8"ã|„ðN @  QiK ?d x"㺗Io @  QjL ?d ¸"ãšbK‘ @  QkM ?d ø"ã¯TJ @  QlN ?d 8#ãÆí @  QmO ?d x#ãDOþ @  QnP ?d ¸#ãdºüù @  QoQ ?d ø#ã÷Ög @  QpR ?d 8$ã @  QqS ?d x$ã(‹-4 @  QrT ?d ¸$ã~/Ê @  QsU ?d ø$ã=H.^ @  QtV ?d 8%ãí¢¶ @  QuW ?d x%ã³ø° @  QvX ?d ¸%ã“öúN @  QwY ?d ø%ã­;_M @  QxZ ?d 8&ã0ÿŒ @  Qy[ ?d x&ãölF­ @  Qz\ ?d ¸&ãÖ™DS @  Q{] ?d ø&ãã¯EÇ @  Q|^ ?d 8'ã3çÉ/ @  Q}_ ?d x'ã•È @  Q~` ?d ¸'ãµöÊç @  Qa ?d ø'ãzÍ@ @  Q€b ?d 8(ãN2Ì  @  Qc ?d x(ãˆ!u+ @  Q‚d ?d ¸(ã¨ÔwÕ @  Qƒe ?d ø(ãâvA @  Q„f ?d 8)ãMªú© @  Q…g ?d x)ã© ¯ @  Q†h ?d ¸)ã3\¢Q @  Q‡i ?d ø)ã ‘R @  Qˆj ?d 8*ãÕ§“ @  Q‰k ?d x*ãVƲ @  QŠl ?d ¸*ãv3L @  Q‹m ?d ø*ãCØ @  QŒn ?d 8+ã“M‘0 @  Qo ?d x+ã¨©Ú @  QŽp ?d ¸+ãˆë«$ @  Qq ?d ø+ã‡0Ç @  Qr ?d 8,ãÉÃÈ @  Q‘s ?d x,ãÄÚzé @  Q’t ?d ¸,ãä/x @  Q“u ?d ø,ãÑyƒ @  Q”v ?d 8-ãQõk @  Q•w ?d x-ã_R¯m @  Q–x ?d ¸-ã§­“ @  Q—y ?d ø-ãAj @  Q˜z ?d 8.ãÜ.¨Q @  Q™{ ?d x.ã=p @  Qš| ?d ¸.ã:ÈŽ @  Q›} ?d ø.ãþ @  Qœ~ ?d 8/ãß¶žò @  Q ?d x/ã”ÄÞG @  Qž€ ?d ¸/ã´1ܹ @  QŸ ?d ø/ã6[`ê @  Q ‚ ?d 80㈅ÜX @  Q¡ƒ ?d x0ãN–ey @  Q¢„ ?d ¸0ãncg‡ @  Q£… ?d ø0ã[Uf @  Q¤† ?d 81ã‹êû @  Q¥‡ ?d x1ãÕ°ý @  Q¦ˆ ?d ¸1ãõë² @  Q§‰ ?d ø1ãË& @  Q¨Š ?d 82ãVb·Á @  Q©‹ ?d x2ãqà @  QªŒ ?d ¸2ã°„  @  Q« ?d ø2ã…² Š @  Q¬Ž ?d 83ãUúb @  Q­ ?d x3ãn©¹ˆ @  Q® ?d ¸3ãN\»v @  Q¯‘ ?d ø3ãÝ0 • @  Q°’ ?d 84ãÄ~Óš @  Q±“ ?d x4ãmj» @  Q²” ?d ¸4ã"˜hE @  Q³• ?d ø4ã®iÑ @  Q´– ?d 85ãÇæå9 @  Qµ— ?d x5ã™å¿? @  Q¶˜ ?d ¸5ã¹½Á @  Q·™ ?d ø5ã‡Ý @  Q¸š ?d 86㙸 @  Q¹› ?d x6ãÜŠ" @  Qºœ ?d ¸6ãüÜ @  Q» ?d ø6ãÉIH @  Q¼ž ?d 87㎠ @  Q½Ÿ ?d x7ã¿å– @  Q¾  ?d ¸7ãŸh @  Q¿¡ ?d ø7ã³}7© @  QÀ¢ ?d 88㇂»´ @  QÁ£ ?d x8ãA‘• @  Q¤ ?d ¸8ãadk @  QÃ¥ ?d ø8ãTRÿ @  QĦ ?d 89ã„ @  Qŧ ?d x9ãÚ× @  Qƨ ?d ¸9ãúìÕï @  QÇ© ?d ø9ãÄ!pì @  QȪ ?d 8:ãYeÐ- @  QÉ« ?d x:ãŸvi  @  Qʬ ?d ¸:㿃kò @  QË­ ?d ø:ãеjf @  QÌ® ?d 8;ãZýæŽ @  Qͯ ?d x;ãa®Þd @  Qΰ ?d ¸;ãA[Üš @  Qϱ ?d ø;ãÒ7Gy @  Qв ?d 8<ãËy´v @  Qѳ ?d x<ã j W @  QÒ´ ?d ¸<ã-Ÿ© @  QÓµ ?d ø<ã©= @  QÔ¶ ?d 8=ãÈá‚Õ @  QÕ· ?d x=ã–âØÓ @  QÖ¸ ?d ¸=ã¶Ú- @  Q×¹ ?d ø=ãˆÚ. @  Qغ ?d 8>ãžßï @  QÙ» ?d x>ãÓfÎ @  QÚ¼ ?d ¸>ãóxd0 @  QÛ½ ?d ø>ãÆNe¤ @  Qܾ ?d 8?ãéL @  QÝ¿ ?d x?ã@²ýk @  QÞÀ ?duÐ@ã7 ¸?ã`Gÿ• @  QßÁ ?d ø?ãâ-CÆ @  Qà ?d P@ã!ùú @  Qáà ?d @ãEöUû @  QâÄ ?d€ Ð@ã µ% @  RÅ ?d A『g® @  RÆ ?d PAãpp @  RÇ ?d Aã;1Ä» @  RÈ ?d ÐAã¹ Óe @  RÉ ?d BãV ž @  RÊ ?d PBãÔ›‰Ý @  RË ?d Bã~^z¦ @  RÌ ?d ÐBãüÏmx @  R Í ?d Cã^i 7 @  R Î ?d PCãÜøé @  R Ï ?d C〆ÍÎ @  R Ð ?d ÐCãÚ @  R Ñ ?d Dãi·Ä¸ @  RÒ ?d PDãë&Óf @  RÓ ?d DãìBý @  RÔ ?d ÐDãnÓ # @  RÕ ?d EãÌuhl @  RÖ ?d PEãNä² @  R× ?d EãwÊËy @  RØ ?d ÐEãõ[ܧ @  RÙ ?d Fãñ‘Á @  RÚ ?d PFã˜`† @  RÛ ?d Fã2¥ud @  RÜ ?d ÐFã°4bº @  RÝ ?d Gã’õ @  RÞ ?d PGã+ @  Rß ?d GãQÊûÐ @  Rà ?d ÐGãÓ[ì @  Rá ?d Hã•J´ @  Râ ?d PHãÛšj @  Rã ?d Hã¹pA @  R ä ?d ÐHãƒ(gŸ @  R!å ?d Iã!ŽÐ @  R"æ ?d PI㣠@  R#ç ?d Iãš1¥Å @  R$è ?d ÐIã ² @  R%é ?d Jã÷ ÿ} @  R&ê ?d PJãu›è£ @  R'ë ?d Jãß^Ø @  R(ì ?d ÐJã]Ï  @  R)í ?d KãÿimI @  R*î ?d PKã}øz— @  R+ï ?d Kã!†¬° @  R,ð ?d ÐK㣻n @  R-ñ ?d LãÈ·¥Æ @  R.ò ?d PLãJ&² @  R/ó ?d LãMBƒ @  R0ô ?d ÐLãÏÓh] @  R1õ ?d Mãmu  @  R2ö ?d PMãïäÌ @  R3÷ ?d MãÖʪ @  R4ø ?d ÐMãT[½Ù @  R5ù ?d Nã»ñð¿ @  R6ú ?d PNã9`ça @  R7û ?d Nã“¥ @  R8ü ?d ÐNã4Ä @  R9ý ?d Oã³’b‹ @  R:þ ?d POã1uU @  R;ÿ ?d Oãл @  R<?d ÐOãRˆ¬Ú @  R=?d P㞸ýÏ @  R>?d PPã)ê @  R??d Pã¤L¨ @  R@?d ÐPã&Ýv @  RA?d Qã„{p9 @  RB?d PQãêgç @  RC?d Qã?ÄÓ, @  RD?d ÐQã½UÄò @  RE ?d RãRÿ‰” @  RF ?d PRãÐnžJ @  RG ?d Rãz«m1 @  RH ?d ÐRãø:zï @  RI ?d SãZœ  @  RJ?d PSãØ ~ @  RK?d Sã„sÚY @  RL?d ÐSãâ͇ @  RM?d TãmBÓ/ @  RN?d PTãïÓÄñ @  RO?d Tãè· j @  RP?d ÐTãj&´ @  RQ?d UãÈ€û @  RR?d PUãJh% @  RS?d Uãs?Üî @  RT?d ÐUãñ®Ë0 @  RU?d Vã†V @  RV?d PV㜕‘ˆ @  RW?d Vã6Pbó @  RX?d ÐVã´Áu- @  RY?d Wãgb @  RZ?d PWã”ö¼ @  R[?d WãU?ìG @  R\ ?d ÐWã×®û™ @  R]!?d Xã‘¿š# @  R^"?d PXã.ý @  R_#?d XãLgÖ @  R`$?d ÐXã‡Ýp @  Ra%?d Yã%{G @  Rb&?d PYã§ê™ @  Rc'?d YãžÄ²R @  Rd(?d ÐYãU¥Œ @  Re)?d Zãóÿèê @  Rf*?d PZãqnÿ4 @  Rg+?d ZãÛ« O @  Rh,?d ÐZãY:‘ @  Ri-?d [ãûœzÞ @  Rj.?d P[ãy m @  Rk/?d [ã%s»' @  Rl0?d Ð[ã§â¬ù @  Rm1?d \ãÌB²Q @  Rn2?d P\ãNÓ¥ @  Ro3?d \ãI·h @  Rp4?d Ð\ãË&Ê @  Rq5?d ]ãi€… @  Rr6?d P]ãë [ @  Rs7?d ]ãÒ?½ @  Rt8?d Ð]ãP®ªN @  Ru9?d ^ã¿ç( @  Rv:?d P^ã=•ðö @  Rw;?d ^ã—P @  Rx<?d Ð^ãÁS @  Ry=?d _ã·gu @  Rz>?d P_ã5öb @  R{??d _ão˜( @  RuÐ`ã|@?d Ð_ã¿9S# @  R} A?d (`ãs/  @  R~ B?d h`ãñ¾Â @  R C?d ¨`ãªÀJ @  R€ D?d è`ã(×” @  R E?d (a㊺¶Û @  R‚ F?d haã+¡ @  Rƒ G?d ¨aã1Î @  R„ H?d èaã³” @  R… I?d (bã\>Ov @  R† J?d hbãÞ¯X¨ @  R‡ K?d ¨bãtj«Ó @  Rˆ L?d èbãöû¼  @  R‰ M?d (cãT]ÝB @  RŠ N?d hcãÖÌÊœ @  R‹ O?d ¨cãв» @  RŒ P?d ècã# e @  R Q?d (dãcƒÍ @  RŽ R?d hdãá @  R S?d ¨dãævψ @  R T?d èdãdçØV @  R‘ U?d (eãÆA¹ @  R’ V?d heãDЮÇ @  R“ W?d ¨eã}þ  @  R” X?d èeãÿo Ò @  R• Y?d (fãÅ@´ @  R– Z?d hfã’TWj @  R— [?d ¨fã8‘¤ @  R˜ \?d èfãº³Ï @  R™ ]?d (gã¦Ò€ @  Rš ^?d hgãš7Å^ @  R› _?d ¨gã[þ*¥ @  Rœ `?d ègãÙo={ @  R a?d (hãŸ~\Á @  Rž b?d hhãïK @  RŸ c?d ¨hã ¡4 @  R  d?d èh㉶ê @  R¡ e?d (iã+º×¥ @  R¢ f?d hiã©+À{ @  R£ g?d ¨iãt° @  R¤ h?d èiã”cn @  R¥ i?d (jãý>. @  R¦ j?d hjã¯9Ö @  R§ k?d ¨jãÕjÊ­ @  R¨ l?d èjãWûÝs @  R© m?d (kãõ]¼< @  Rª n?d hkãwÌ«â @  R« o?d ¨kã+²}Å @  R¬ p?d èkã©#j @  R­ q?d (lãƒt³ @  R® r?d hlã@cm @  R¯ s?d ¨lãGv®ö @  R° t?d èlãÅç¹( @  R± u?d (mãgAØg @  R² v?d hmãåÐϹ @  R³ w?d ¨mãÜþ{r @  R´ x?d èmã^ol¬ @  Rµ y?d (nã±Å!Ê @  R¶ z?d hnã3T6 @  R· {?d ¨n㙑Åo @  R¸ |?d ènãÒ± @  R¹ }?d (o㹦³þ @  Rº ~?d hoã;7¤  @  R» ?d ¨oãh X @  R¼ €?d èoã•ù† @  R½ ?d (pãYÉL“ @  R¾ ‚?d hpãÛX[M @  R¿ ƒ?d ¨pãc=·ô @  RÀ „?d èpãᬠ* @  RÁ …?d (qãC Áe @  R †?d hqãÁ›Ö» @  Rà ‡?d ¨qãøµbp @  RÄ ˆ?d èqãz$u® @  RÅ ‰?d (r㕎8È @  RÆ Š?d hrã/ @  RÇ ‹?d ¨rã½ÚÜm @  RÈ Œ?d èrã?K˳ @  RÉ ?d (sãíªü @  RÊ Ž?d hsã|½" @  RË ?d ¨sãCk @  RÌ ?d èsãÁ“|Û @  RÍ ‘?d (tãª3bs @  RÎ ’?d htã(¢u­ @  RÏ “?d ¨tã/Ƹ6 @  RÐ ”?d ètã­W¯è @  RÑ •?d (uãñΧ @  RÒ –?d huã`Ùy @  RÓ —?d ¨uã´Nm² @  RÔ ˜?d èuã6ßzl @  RÕ ™?d (vãÙu7  @  RÖ š?d hvã[ä Ô @  R× ›?d ¨vãñ!Ó¯ @  RØ œ?d èvãs°Äq @  RÙ ?d (wãÑ¥> @  RÚ ž?d hwãS‡²à @  RÛ Ÿ?d ¨wã’N] @  RÜ  ?d èwãßJÅ @  RÝ ¡?d (xãVÎ+ @  RÞ ¢?d hxãÔ_<¡ @  Rß £?d ¨xãÂ=ÖŠ @  Rà ¤?d èxã@¬ÁT @  Rá ¥?d (yãâ   @  Râ ¦?d€ hyãX«c @  S §?d ¨yãÌ7W @  S ¨?d èyãN¦@_ @  S ©?d (zãdEöÔ @  S ª?d hzãæÔá  @  S «?d ¨zã‚£M  @  S ¬?d èzã2ZÕ @  S ­?d ({ãl&dà @  S ®?d h{ãî·s> @  S ¯?d ¨{ãw€^ô @  S °?d è{ãõI* @  S ±?d (|ã[ø¬o @  S ²?d h|ãÙi»± @  S ³?d ¨|ã½° @  S ´?d è|ã?n @  S µ?d (}ãþ:» @  S ¶?d h}ã|«e @  S ·?d ¨}ã€ÌXC @  S ¸?d è}ã]O @  S ¹?d (~ã(¾ù @  S º?d h~ãª/îÈ @  S »?d ¨~ãÎXBÉ @  S ¼?d è~ãLÉU @  S ½?d (ã Ýk" @  S ¾?d hã¢L|ü @  S ¿?d ¨ãuЀã'Vœ}û @  S À?d èãÔ j% @  S Á?d @€ã ž @  S Â?d €€ã-áœå @  S Ã?d À€ãëò%Ä @  S Ä?d ã;º©, @  S Å?d @ã¹Ð @  S Æ?d €ã™% @  S! Ç?d ÀãÇ&M‡ @  S" È?d ‚ãZbíF @  S# É?d @‚ãoTìÒ @  S$ Ê?d €‚ãO¡î, @  S% Ë?d À‚㉲W  @  S& Ì?d ƒãYúÛå @  S' Í?d @ƒãg7~æ @  S( Î?d €ƒãGÂ| @  S) Ï?d Àƒã|‘Dò @  S* Ð?d „ãeß·ý @  S+ Ñ?d @„ãPé¶i @  S, Ò?d €„ãp´— @  S- Ó?d À„ã¶ ¶ @  S. Ô?d …ãfG^ @  S/ Õ?d @…ãõ+½ @  S0 Ö?d €…ãÕÞC @  S1 ×?d À…ã‹ÝBE @  S2 Ø?d †ã™â„ @  S3 Ù?d @†ã#¯ã @  S4 Ú?d €†ãZáî @  S5 Û?d À†ãÅIXÏ @  S6 Ü?d ‡ãÔ' @  S7 Ý?d @‡ã+Ìq$ @  S8 Þ?d €‡ã 9sÚ @  S9 ß?d À‡ã­Ýrì @  S: à?d ˆã™"þñ @  S; á?d @ˆã¬ÿe @  S< â?d €ˆãŒáý› @  S= ã?d ÀˆãJòDº @  S> ä?d ‰ãšºÈR @  S? å?d @‰ã¶×r“ @  S@ æ?d €‰ã–"pm @  SA ç?d À‰ãÈ!*k @  SB è?d ŠãUeŠª @  SC é?d @Šã`S‹> @  SD ê?d €Šã@¦‰À @  SE ë?d ÀŠã†µ0á @  SF ì?d ‹ãVý¼  @  SG í?d @‹ãh0  @  SH î?d €‹ãHÅô @  SI ï?d À‹ãs–# @  SJ ð?d ŒãjØÐ @  SK ñ?d @Œã_îÑ… @  SL ò?d €ŒãÓ{ @  SM ó?d ÀŒã¹jZ @  SN ô?d ãi@æ² @  SO õ?d @ãú,}Q @  SP ö?d €ãÚÙ¯ @  SQ ÷?d Àã„Ú%© @  SR ø?d Žãž…h @  SS ù?d @Žã,¨„ü @  ST ú?d €Žã ]† @  SU û?d ÀŽãÊN?# @  SV ü?d ã³Ë @  SW ý?d @ã$ËÈ @  SX þ?d €ã>6 @  SY ÿ?d Àã0+ @  SZ ?d ãŽõ½= @  S[ ?d @ã»Ã¼© @  S\ ?d €ã›6¾W @  S] ?d Àã]%v @  S^ ?d ‘ãm‹ž @  S_ ?d @‘ã7Í @  S` ?d €‘ã/ò53 @  Sa ?d À‘ãqño5 @  Sb ?d ’ãìµÏô @  Sc  ?d @’ãÙƒÎ` @  Sd  ?d €’ãùvÌž @  Se  ?d À’ã?eu¿ @  Sf  ?d “ãï-ùW @  Sg  ?d @“ãÑà\T @  Sh ?d €“ãñ^ª @  Si ?d À“ãÊFf@ @  Sj ?d ”ãÓ•O @  Sk ?d @”ãæ>”Û @  Sl ?d €”ãÆË–% @  Sm ?d À”ãØ/ @  Sn ?d •ãУì @  So ?d @•ãCü8 @  Sp ?d €•ãc :ñ @  Sq ?d À•ã= `÷ @  Sr ?d –ã NÀ6 @  Ss ?d @–ã•xÁ¢ @  St ?d €–ãµÃ\ @  Su ?d À–ãsžz} @  Sv ?d —ã£Öö• @  Sw ?d @—ãS– @  Sx ?d €—ã½îQh @  Sy ?d À—ã P^ @  Sz  ?d ˜ã/õÜC @  S{ !?d @˜ãÃÝ× @  S| "?d €˜ã:6ß) @  S} #?d À˜ãü%f @  S~ $?d ™ã,mêà @  S %?d @™ããV` @  S€ &?d €™ããbî @  S '?d À™ã 8è @  S‚ (?d šãä˜) @  Sƒ )?d @šã5Ò™½ @  S„ *?d €šã'›C @  S… +?d ÀšãÓ4"b @  S† ,?d ›ã|®Š @  S‡ -?d @›ã=± ‰ @  Sˆ .?d €›ãD w @  S‰ /?d À›ã&1 @  SŠ 0?d œã?YÂ’ @  S‹ 1?d @œã oà @  SŒ 2?d €œã*šÁø @  S 3?d Àœãì‰xÙ @  SŽ 4?d ã<Áô1 @  S 5?d @㯭oÒ @  S 6?d €ãXm, @  S‘ 7?d ÀãÑ[7* @  S’ 8?d žãL—ë @  S“ 9?d @žãy)– @  S” :?d €žãYÜ” @  S• ;?d ÀžãŸÏ-  @  S– <?d ŸãO‡¡H @  S— =?d @ŸãqJK @  S˜ >?d €ŸãQ¿µ @  S™ ?uРã?d ÀŸã ’ @  Sš @?d  ãvÌô @  S› A?d X ãC6Í` @  Sœ B?d ˜ ãcÃÏž @  S C?d Ø ã¥Ðv¿ @  Sž D?d ¡ãu˜úW @  SŸ E?d X¡ã÷òF @  S  F?d ˜¡ã×Dú @  S¡ G?d Ø¡ã‰ü @  S¢ H?d ¢ã@¾= @  S£ I?d X¢ã!v¿© @  S¤ J?d ˜¢ãƒ½W @  S¥ K?d Ø¢ãÇv @  S¦ L?d £ã؈ž @  S§ M?d X£ã)- @  S¨ N?d ˜£ã à/c @  S© O?d Ø£ã2³‰ @  Sª P?d ¤ã+ýä† @  S« Q?d X¤ãËå @  S¬ R?d ˜¤ã>>çì @  S­ S?d ؤãø-^Í @  S® T?d ¥ã(eÒ% @  S¯ U?d X¥ã» IÆ @  S° V?d ˜¥ã›üK8 @  S± W?d Ø¥ãÅÿ> @  S² X?d ¦ãX»±ÿ @  S³ Y?d X¦ãm°k @  S´ Z?d ˜¦ãMx²• @  Sµ [?d ئã‹k ´ @  S¶ \?d §ã[#‡\ @  S· ]?d X§ãeî"_ @  S¸ ^?d ˜§ãE ¡ @  S¹ _?d اããÿ!— @  Sº `?d ¨ã×­Š @  S» a?d X¨ãâ6¬ @  S¼ b?d ˜¨ãÂîà @  S½ c?d بãÐÁ @  S¾ d?d ©ãÔ˜›) @  S¿ e?d X©ãøõ!è @  SÀ f?d ˜©ãØ# @  SÁ g?d Ø©ã†y @  S h?d ªãGÙÑ @  Sà i?d Xªã.qØE @  SÄ j?d ˜ªã„Ú» @  SÅ k?d تãÈ—cš @  SÆ l?d «ãßïr @  SÇ m?d X«ã&Jq @  SÈ n?d ˜«ãçH @  SÉ o?d Ø«ã=´pe @  SÊ p?d ¬ã$úƒj @  SË q?d X¬ãÌ‚þ @  SÌ r?d ˜¬ã19€ @  SÍ s?d جã÷*9! @  SÎ t?d ­ã'bµÉ @  SÏ u?d X­ã´.* @  SÐ v?d ˜­ã”û,Ô @  SÑ w?d Ø­ãÊøvÒ @  SÒ x?d ®ãW¼Ö @  SÓ y?d X®ãbŠ×‡ @  SÔ z?d ˜®ãBÕy @  SÕ {?d Ø®ã„llX @  SÖ |?d ¯ãT$à° @  S× }?d X¯ãjéE³ @  SØ ~?d ˜¯ãJGM @  SÙ ?d دãnø @  SÚ €?d °ã¿°»J @  SÛ ?d X°ãІºÞ @  SÜ ‚?d ˜°ãªs¸  @  SÝ ƒ?d ذãl` @  SÞ „?d ±ã¼(é @  Sß …?d X±ã>B1º @  Sà †?d ˜±ã·3D @  Sá ‡?d رã@´iB @  Sâ ˆ?d€ ²ã[¦a: @  T ‰?d X²ãÑ(‡ @  T Š?d ˜²ã¯$*y @  T ‹?d زã¬~hµ @  T Œ?d ³ã|6ä] @  T ?d X³ãŒI$ @  T Ž?d ˜³ã¬¼Ú @  T ?d سãY]{J @  T ?d ´ã@ˆE @  T ‘?d X´ã°lr< @  T ’?d ˜´ã™p @  T “?d Ø´ã“Ã2 @  T ”?d µãC‹¾æ @  T •?d Xµã³ôDŸ @  T –?d ˜µã“Fa @  T —?d صã®}ý @  T ˜?d ¶ã3UÝ< @  T ™?d X¶ãÃ*'E @  T š?d ˜¶ããß%» @  T ›?d ضãà…gw @  T œ?d ·ã0ÍëŸ @  T ?d X·ãÀ²æ @  T ž?d ˜·ãàG @  T Ÿ?d Ø·ãˆMT @  T  ?d ¸ã¼îÁI @  T ¡?d X¸ãL‘;0 @  T ¢?d ˜¸ãld9Î @  T £?d ظão>{ @  T ¤?d ¹ã¿v÷ê @  T ¥?d X¹ãO “ @  T ¦?d ˜¹ãoüm @  T §?d عãCêA @  T ¨?d ºãÞ®³€ @  T! ©?d Xºã.ÑIù @  T" ª?d ˜ºã$K @  T# «?d غã ~ Ë @  T$ ¬?d »ãÝ6…# @  T% ­?d X»ã-IZ @  T& ®?d ˜»ã ¼}¤ @  T' ¯?d Ø»ãø]4 @  T( °?d ¼ãáé; @  T) ±?d X¼ãlB @  T* ²?d ˜¼ã1™¼ @  T+ ³?d ؼã2ÃSp @  T, ´?d ½ãâ‹ß˜ @  T- µ?d X½ãô%á @  T. ¶?d ˜½ã2' @  T/ ·?d ؽム@  T0 ¸?d ¾ã’U¼B @  T1 ¹?d X¾ãb*F; @  T2 º?d ˜¾ãBßDÅ @  T3 »?d ؾãA…  @  T4 ¼?d ¿ã‘ÍŠá @  T5 ½?d X¿ãa²p˜ @  T6 ¾?d ˜¿ãAGrf @uÐÀã  T7 ¿?d Ø¿ã"/; @  T8À?d 0ÀãFßSi @  T9Á?d pÀã¶ © @  T:Â?d °Àã–U«î @  T;Ã?d ðÀã•é" @  T<Ä?d 0ÁãEGeÊ @  T=Å?d pÁãµ8Ÿ³ @  T>Æ?d °Áã•ÍM @  T?Ç?d ðÁã܇ó @  T@È?d 0Â㊘'2 @  TAÉ?d pÂãzçÝK @  TBÊ?d °ÂãZßµ @  TCË?d ðÂãYHy @  TDÌ?d 0Ã㉑ @  TEÍ?d pÃãyëè @  TFÎ?d °ÃãYŠé @  TGÏ?d ðÃã¬kކ @  THÐ?d 0Äãµ%}‰ @  TIÑ?d pÄãEZ‡ð @  TJÒ?d °Äãe¯… @  TKÓ?d ðÄãfõÇ @  TLÔ?d 0Åã¶½K* @  TMÕ?d pÅãF±S @  TNÖ?d °Åãf7³­ @  TO×?d ðÅã['ˆ1 @  TPØ?d 0ÆãÆc(ð @  TQÙ?d pÆã6Ò‰ @  TRÚ?d °ÆãéÐw @  TSÛ?d ðÆã³’» @  TTÜ?d 0ÇãÅûS @  TUÝ?d pÇã5„ä* @  TVÞ?d °ÇãqæÔ @  TWß?d ðÇã}'¸˜ @  TXà?d 0ÈãIØ4… @  TYá?d pÈã¹§Îü @  TZâ?d °Èã™RÌ @  T[ã?d ðÈ㚎Π@  T\ä?d 0ÉãJ@& @  T]å?d pÉãº?ø_ @  T^æ?d °ÉãšÊú¡ @  T_ç?d ðÉã¶Üæ @  T`è?d 0Êã+˜FL @  Taé?d pÊãÛç¼5 @  Tbê?d °Êãû¾Ë @  Tcë?d ðÊãøHü @  Tdì?d 0Ëã(pï @  Teí?d pËãØŠ– @  Tfî?d °ËãøŠˆh @  Tgï?d ðËã kïø @  Thð?d 0Ìã%÷ @  Tiñ?d pÌãäZæŽ @  Tjò?d °Ìãįäp @  Tkó?d ðÌãÇõ¦¼ @  Tlô?d 0Íã½*T @  Tmõ?d pÍãçÂÐ- @  Tnö?d °ÍãÇ7ÒÓ @  To÷?d ðÍãú'éO @  Tpø?d 0ÎãgcIŽ @  Tqù?d pÎã—³÷ @  Trú?d °Îã·é±  @  Tsû?d ðÎã´³óÅ @  Ttü?d 0Ïãdû- @  Tuý?d pÏ㔄…T @  Tvþ?d °Ïã´q‡ª @  Twÿ?d ðÏã·SëÙ @  Tx?d 0Ðã Wk @  Ty?d pÐãùò­ @  Tz?d °ÐãÙ¯ì @  T{?d ðÐãÚ]í  @  T|?d 0Ñã aÈ @  T}?d pÑãúj›± @  T~?d °ÑãÚŸ™O @  T?d ðÑã»Ø³À @  T€?d 0Òã&œ @  T ?d pÒãÖãéx @  T‚ ?d °Òãöë† @  Tƒ ?d ðÒãõL©J @  T„ ?d 0Óã%%¢ @  T… ?d pÓãÕ{ßÛ @  T†?d °ÓãõŽÝ% @  T‡?d ðÓãoºµ @  Tˆ?d 0Ôã!Iº @  T‰?d pÔãé^³Ã @  TŠ?d °ÔãÉ«±= @  T‹?d ðÔãÊñóñ @  TŒ?d 0Õã¹ @  T?d pÕãêÆ…` @  TŽ?d °ÕãÊ3‡ž @  T?d ðÕã÷#¼ @  T?d 0Öãjgà @  T‘?d pÖãšæº @  T’?d °ÖãºíäD @  T“?d ðÖã¹·¦ˆ @  T”?d 0×ãiÿ*` @  T•?d p×㙀Р@  T–?d °×ã¹uÒç @  T—?d ð×ãÑ#Œ« @  T˜ ?d 0Øãåܶ @  T™!?d pØã£úÏ @  Tš"?d °Øã5Vø1 @  T›#?d ðØã6 ºý @  Tœ$?d 0ÙãæD6 @  T%?d pÙã;Ìl @  Tž&?d °Ùã6ÎÎ’ @  TŸ'?d ðÙãØÒ¾ @  T (?d 0Ú㇜r @  T¡)?d pÚãw㈠@  T¢*?d °ÚãWŠø @  T£+?d ðÚãTLÈ4 @  T¤,?d 0Ûã„DÜ @  T¥-?d pÛãt{¾¥ @  T¦.?d °ÛãT޼[ @  T§/?d ðÛã¡oÛË @  T¨0?d 0Üã¸!(Ä @  T©1?d pÜãH^Ò½ @  Tª2?d °Üãh«ÐC @  T«3?d ðÜãkñ’ @  T¬4?d 0Ý㻹g @  T­5?d pÝãKÆä @  T®6?d °Ýãk3æà @  T¯7?d ðÝãV#Ý| @  T°8?d 0ÞãËg}½ @  T±9?d pÞã;‡Ä @  T²:?d °Þãí…: @  T³;?d ðÞã·Çö @  T´<?d 0ßãÈÿK @  Tµ=?d pßã8€±g @  T¶>?d uÐàã/°ßãu³™ @  T·??d ðßãBÚ @  T¸@?d Hàã[~Aç @  T¹A?d ˆàã e®¾ @  TºB?d Èàã‹ô¹` @  T»C?d áãÚw`š @  T¼D?d HáãXæwD @  T½E?d ˆáã ý˜ @  T¾F?d Èáãˆlà @  T¿G?d âã¨"b @  TÀH?d Hâã—95¼ @  TÁI?d ˆâãÅ"Úå @  TÂJ?d ÈâãG³Í; @  TÃK?d ãã0Á @  TÄL?d Hã㔡 @  TÅM?d ˆããƺìF @  TÆN?d ÈããD+û˜ @  TÇO?d äã*xÙ @  TÈP?d Hä㨄o @  TÉQ?d ˆäãúŸ€^ @  TÊR?d Èäãx—€ @  TËS?d åã)Nz @  TÌT?d Håã«Y¤ @  TÍU?d ˆåãù¶ý @  TÎV?d Èåã{–¡# @  TÏW?d æãYS-  @  TÐX?d HæãÛÂ:~ @  TÑY?d ˆæã‰ÙÕ' @  TÒZ?d Èæã HÂù @  TÓ[?d çãZË @  TÔ\?d HçãØZ Ý @  TÕ]?d ˆçãŠAã„ @  TÖ^?d ÈçãÐôZ @  T×_?d èãÖè1Õ @  TØ`?d HèãTy&  @  TÙa?d ˆèãbÉR @  TÚb?d Èèã„óÞŒ @  TÛc?d éãÕpv @  TÜd?d HéãWᨠ@  TÝe?d ˆéãúÿñ @  TÞf?d Èéã‡kè/ @  Tßg?d êã´¨C @  Tàh?d Hêã69T @  Tái?d ˆêãd"»› @  Tâj?d€ Èêã’p°ã @  Uk?d ëã"²!0 @  Ul?d Hëã #6î @  Um?d ˆëã7q"Z @  Un?d Èëãµà5„ @  Uo?d ìãlé¿ @  Up?d Hìã—ýþa @  Uq?d ˆìã TNB @  Ur?d Èìã‰ÅYœ @  U s?d íã{‹ @  U t?d Hí㟞lU @  U u?d ˆíãÌxá @  U v?d ÈíãŠ]o? @  U w?d îãË‹‚& @  Ux?d HîãI•ø @  Uy?d ˆîãx; @  Uz?d Èîãúƒ å @  U{?d ïãnI.ò @  U|?d HïãìØ9, @  U}?d ˆïã{Š-˜ @  U~?d Èïãù:F @  U?d ðãŽ&ÑŸ @  U€?d Hðã ·ÆA @  U?d ˆðãvb @  U‚?d Èðãa¼ @  Uƒ?d ñã†EC« @  U„?d HñãÔTu @  U…?d ˆñ㓆@Á @  U†?d ÈñãW @  U‡?d òãPÁº @  Uˆ?d HòãÒP­Ø @  U‰?d ˆòãò^« @  U Š?d ÈòãpÏu @  U!‹?d óãä1b @  U"Œ?d Hóãf”&¼ @  U#?d ˆóãñÆ2 @  U$Ž?d ÈóãsW%Ö @  U%?d ôãÓÛùí @  U&?d HôãQJî3 @  U'‘?d ˆôãÍã^ @  U(’?d ÈôãOrIÎ @  U)“?d õãÛ¸kÙ @  U*”?d HõãY)| @  U+•?d ˆõãÎ{h³ @  U,–?d ÈõãLêm @  U-—?d öã <’t @  U.˜?d Höã­…ª @  U/™?d ˆöã¾¥ i @  U0š?d Èöã<4· @  U1›?d ÷ã¨þ>  @  U2œ?d H÷ã*o)~ @  U3?d ˆ÷ã½==Ê @  U4ž?d È÷ã?¬* @  U5Ÿ?d øã/&°á @  U6 ?d Høã­·§? @  U7¡?d ˆøã1 @  U8¢?d Èøã³Â @  U9£?d ùã'E"Õ @  U:¤?d Hùã¥Ô5  @  U;¥?d ˆùã2†!¿ @  U<¦?d Èùã°6a @  U=§?d úãñÁÛx @  U>¨?d HúãsP̦ @  U?©?d ˆúãýYcG @  U@ª?d ÈúãÈt™ @  UA«?d ûãëVŽ @  UB¬?d Hûãi“AP @  UC­?d ˆûãþÁUä @  UD®?d Èûã|PB: @  UE¯?d üãÜÜž @  UF°?d Hüã^M‰ß @  UG±?d ˆüãÂä9ü @  UH²?d Èüã@u." @  UI³?d ýãÔ¿ 5 @  UJ´?d HýãoéÇ> @  UK µ?d ˆýãø»ÓŠ @  UL ¶?d Èýãz*ÄT @  UM ·?d þã;ü)M @  UN ¸?d Hþã¹m>“ @  UO ¹?d ˆþãˆe°P @  UP º?d Èþã ô§Ž @  UQ »?d ÿãž>…™ @  UR ¼?d Hÿ㯒G @  US ½?d ˆÿã‹ý†ó @  UT uÐä¾?d Èÿã0«Mø @  UU¿?d äÑH\Ÿ @  UVÀ?d `äSÙKA @  UWÁ?d  äÏpûb @  UXÂ?d àäMáì¼ @  UYÃ?d äÙ+Ϋ @  UZÄ?d `ä[ºÙu @  U[Å?d  äÌèÍÁ @  U\Æ?d àäNyÚ @  U]Ç?d ä¯7 @  U^È?d `ä> Ø @  U_É?d  ä­0‰« @  U`Ê?d àä/¡žu @  UaË?d ä»k¼b @  UbÌ?d `ä9ú«¼ @  UcÍ?d  ä®¨¿ @  UdÎ?d àä,9¨Ö @  UeÏ?d 䌵tí @  UfÐ?d `ä$c3 @  UgÑ?d  ä’Ó @  UhÒ?d àäÄÎ @  UiÓ?d ä„ÖæÙ @  UjÔ?d `äGñ @  UkÕ?d  ä‘å³ @  UlÖ?d àä„òm @  Um×?d äRRt @  UnØ?d `äÐê @  UoÙ?d  äáˆi @  UpÚ?d àäcZ‘· @  UqÛ?d ä÷³  @  UrÜ?d `äu¤~ @  UsÝ?d  äâS°Ê @  UtÞ?d àä`§ @  Uuß?d äpH=á @  Uvà?d `äòÙ*? @  Uwá?d  änpš @  Uxâ?d àäìá @  Uyã?d äx+¯Õ @  Uzä?d ` äúº¸  @  U{å?d   äm謿 @  U|æ?d à äïy»a @  U}ç?d 䮯Vx @  U~è?d ` ä,>A¦ @  Ué?d   äAaÞv @  U€ê?d à äÃðɨ @  Uë?d äW:ë¿ @  U‚ì?d ` äÕ«üa @  Uƒí?d   äBùèÕ @  U„î?d à äÀhÿ  @  U…ï?d ä`ä#0 @  U†ð?d ` äâu4î @  U‡ñ?d   ä~Ü„Í @  Uˆò?d à äüM“ @  U‰ó?d äh‡± @  UŠô?d ` äê¦Ú @  U‹õ?d   ä}D²n @  UŒö?d à äÿÕ¥° @  U÷?d ä¾H© @  UŽø?d `ä<’_w @  Uù?d  ä šÑ´ @  Uú?d àä Æj @  U‘û?d äÁä} @  U’ü?d `ä™Pó£ @  U“ý?d  äç @  U”þ?d à䌓ðÉ @  U•ÿ?d ä„ÉN @  U–?d `äXY @  U—?d  äšñéá @  U˜?d àä`þ? @  U™?d 䌪Ü( @  Uš?d `ä;Ëö @  U›?d  ä™ißB @  Uœ?d àäøÈœ @  U?d äZ.%… @  Už?d `äØ¿2[ @  UŸ ?d  äø±›( @  U  ?d àäz Œö @  U¡ ?d äîê®á @  U¢ ?d `äl{¹? @  U£ ?d  äû)­‹ @  U¤?d àäy¸ºU @  U¥?d äÙ4fn @  U¦?d `ä[¥q° @  U§?d  äÇ Á“ @  U¨?d àäEÖM @  U©?d äÑWôZ @  Uª?d `äSÆã„ @  U«?d  äÄ”÷0 @  U¬?d àäFàî @  U­?d äÓ ÷ @  U®?d `ä…B) @  U¯?d  ä´J”ê @  U°?d àä6Ûƒ4 @  U±?d 䢡# @  U²?d `ä €¶ý @  U³?d  ä·Ò¢I @  U´?d àä5Cµ— @  Uµ?d ä%É/b @  U¶ ?d `ä§X8¼ @  U·!?d  ä;ñˆŸ @  U¸"?d àä¹`ŸA @  U¹#?d ä-ª½V @  Uº$?d `ä¯;ªˆ @  U»%?d  ä8i¾< @  U¼&?d àäºø©â @  U½'?d äû.Dû @  U¾(?d `äy¿S% @  U¿)?d  ä÷¶üÄ @  UÀ*?d àäu'ë @  UÁ+?d äáíÉ  @  UÂ,?d `äc|ÞÓ @  UÃ-?d  äô.Êg @  UÄ.?d àäv¿Ý¹ @  UÅ/?d äÖ3‚ @  UÆ0?d `äT¢\ @  UÇ1?d  äÈ ¦ @  UÈ2?d àäJ𱡠@  UÉ3?d äÞP“¶ @  UÊ4?d `ä\Á„h @  UË5?d  äË“Ü @  UÌ6?d àäI‡ @  UÍ7?d äÔj @  UÎ8?d `äŠE}Å @  UÏ9?d  ä»Mó @  UÐ:?d àä9ÜäØ @  UÑ;?d ä­ÆÏ @  UÒ<?d `ä/‡Ñ @  UÓ=?d  ä¸ÕÅ¥uÐ ä @  UÔ>?d àä:DÒ{ @  UÕ??d 8 äŸjä @  UÖ@?d x äû: @  U×A?d ¸ äR¨ @  UØB?d ø äÿÇ @  UÙC?d 8!ä— Ð @  UÚD?d x!䘊 @  UÛE?d ¸!ä‚Êžº @  UÜF?d ø!ä[‰d @  UÝG?d 8"äAd} @  UÞH?d x"äÃs£ @  UßI?d ¸"äãÚÐ @  UàJ?d ø"äaƒÍ @  UáK?d 8#äõIï @  UâL?d€ x#ä¶ŸÇ @  VM?d ¸#äÀŒSZ @  VN?d ø#äBD„ @  VO?d 8$ä'ØcR @  VP?d x$ä¥ItŒ @  VQ?d ¸$ä÷R›Õ @  VR?d ø$äuÃŒ  @  VS?d 8%ä/»ñf @  VT?d x%ä­*æ¸ @  V U?d ¸%äÿ1 á @  V V?d ø%ä} ? @  V W?d 8&äù?Ë @  V X?d x&ä{® @  V Y?d ¸&ä)µðL @  VZ?d ø&ä«$ç’ @  V[?d 8'ä\ý¤ @  V\?d x'äÞl³Á @  V]?d ¸'äŒw\˜ @  V^?d ø'äæKF @  V_?d 8(äÛ%*^ @  V`?d x(äY´=€ @  Va?d ¸(ä ¯ÒÙ @  Vb?d ø(ä‰>Å @  Vc?d 8)äÓF¸j @  Vd?d x)äQׯ´ @  Ve?d ¸)äÌ@í @  Vf?d ø)ä]W3 @  Vg?d 8*äÂAÇ @  Vh?d x*ä‡SV @  Vi?d ¸*äÕH¹@ @  Vj?d ø*äWÙ®ž @  Vk?d 8+ä±Ê£ @  V l?d x+ä3—Ý} @  V!m?d ¸+äaŒ2$ @  V"n?d ø+äã%ú @  V#o?d 8,䆨, @  V$p?d x,äIò @  V%q?d ¸,äVRú« @  V&r?d ø,äÔÃíu @  V's?d 8-䎻 @  V(t?d x-ä *‡Æ @  V)u?d ¸-ä^1hŸ @  V*v?d ø-äÜ A @  V+w?d 8.äX?iµ @  V,x?d x.äÚ®~k @  V-y?d ¸.䈵‘2 @  V.z?d ø.ä $†ì @  V/{?d 8/äýýÅa @  V0|?d x/älÒ¿ @  V1}?d ¸/ä-w=æ @  V2~?d ø/䝿*8 @  V3?d 80ä’:  @  V4€?d x0äŸ-Ò @  V5?d ¸0äÍ‹ @  V6‚?d ø0äO‰ÕU @  V7ƒ?d 81äñ¨8 @  V8„?d x1ä—`¿æ @  V9…?d ¸1äÅ{P¿ @  V:†?d ø1äGêGa @  V;‡?d 82äÃuQ• @  V<ˆ?d x2äAäFK @  V=‰?d ¸2äÿ© @  V>Š?d ø2ä‘n¾Ì @  V?‹?d 83äÙ¶Üc @  V@Œ?d x3ä['˽ @  VA?d ¸3ä <$ä @  VBŽ?d ø3ä‹­3: @  VC?d 84äîhì @  VD?d x4älù2 @  VE‘?d ¸4ä>âìk @  VF’?d ø4ä¼sûµ @  VG“?d 85äæ †Ø @  VH”?d x5ädš‘ @  VI•?d ¸5ä6~_ @  VJ–?d ø5ä´i @  VK—?d 86ä0u @  VL˜?d x6ä²h« @  VM™?d ¸6äà‡ò @  VNš?d ø6äb”, @  VO›?d 87ä•MÓ¡ @  VPœ?d x7äÜÄ @  VQ?d ¸7äEÇ+& @  VRž?d ø7äÇV<ø @  VSŸ?d 88ä•]à @  VT ?d x8äJ> @  VU¡?d ¸8äÂ¥g @  VV¢?d ø8ä@޲¹ @  VW£?d 89äöÏÔ @  VX¤?d x9ä˜gØ  @  VY¥?d ¸9äÊ|7S @  VZ¦?d ø9äHí  @  V[§?d 8:äÌr6y @  V\¨?d x:äNã!§ @  V]©?d ¸:äøÎþ @  V^ª?d ø:äžiÙ  @  V_«?d 8;äx¶½ @  V`¬?d x;äú'ªÃ @  Va­?d ¸;ä¨ä‘  @  Vl¸?d x>ä Õ @  Vm¹?d ¸>äAæŒ @  Vnº?d ø>äÔñR @  Vo»?d 8?ä4M²ß @  Vp¼?d x?ä¶Ü¥ @  Vq½?duÐ@ä7 ¸?ääÇJX @  Vr¾?d ø?äfV]† @  Vs¿?d P@ä´–® @  VtÀ?d @ä”cP @  VuÁ?d Ð@ädç) @  VvÂ?d Aä´TkÁ @  VwÃ?d PAä¼õš @  VxÄ?d Aäœd @  VyÅ?d ÐAälu @  VzÆ?d Bäñ;ÕÜ @  V{Ç?d PBäjqt7 @  V|È?d BäJ„vÉ @  V}É?d ÐBäºûŒ° @  V~Ê?d Cäj³X @  VË?d PCä“äÉð @  V€Ì?d Cä³Ë @  VÍ?d ÐCäCn1w @  V‚Î?d DäZ Âx @  VƒÏ?d PDä¤: @  V„Ð?d Dä„Ï @  V…Ñ?d ÐDät°ùø @  V†Ò?d E䤸u @  V‡Ó?d PEä¬Y“K @  VˆÔ?d E䌬‘µ @  V‰Õ?d ÐEä|ÓkÌ @  VŠÖ?d Fäá—Ë  @  V‹×?d PFäzÝjæ @  VŒØ?d FäZ(h @  VÙ?d ÐFäªW’a @  VŽÚ?d Gäz‰ @  VÛ?d PGä߯2 @  VÜ?d GäÿêÄÌ @  V‘Ý?d ÐGä•>µ @  V’Þ?d Hä;j²¨ @  V“ß?d PHäXÇHs @  V”à?d Häx2J @  V•á?d ÐHäˆM°ô @  V–â?d IäX< @  V—ã?d PIäP¤ÚG @  V˜ä?d IäpQع @  V™å?d ÐIä€."À @  Všæ?d Jäj‚ @  V›ç?d PJä† #ê @  Vœè?d Jä¦Õ! @  Vé?d ÐJäVªÛm @  Vžê?d Kä†âW… @  VŸë?d PKä2䨎 @  V ì?d Käªp @  V¡í?d ÐKäânP  @  V¢î?d Läû £ @  V£ï?d PLä:` @  V¤ð?d Lä%Ïbÿ @  V¥ñ?d ÐLäÕ°˜† @  V¦ò?d Mäøn @  V§ó?d PMä Yò5 @  V¨ô?d Mä-¬ðË @  V©õ?d ÐMäÝÓ ² @  Vªö?d Nä@—ªs @  V«÷?d PNäÛÝ ˜ @  V¬ø?d Näû( f @  V­ù?d ÐNä Wó @  V®ú?d OäÛ÷ @  V¯û?d POä~§L @  V°ü?d Oä^ꥲ @  V±ý?d ÐO䮕_Ë @  V²þ?d PäKãy @  V³ÿ?d PPäS58 @  V´?d PäsÀ:ö @  Vµ?d ÐP䃿À @  V¶?d QäS÷Lg @  V·?d PQä[Vª< @  V¸?d Qä{£¨Â @  V¹?d ÐQä‹ÜR» @  Vº?d Rä˜òz @  V»?d PRäÒS‘ @  V¼?d Rä­'Qo @  V½ ?d ÐRä]X« @  V¾ ?d Sä'þ @  V¿ ?d PSä—Þg @  VÀ ?d Sä·äÜ™ @  VÁ ?d ÐSäG›&à @  VÂ?d Tä^ÕÕï @  VÃ?d PTä Ïè @  VÄ?d Tä€: @  VÅ?d ÐTäpEîo @  VÆ?d Uä  b‡ @  VÇ?d PU䨬„Ü @  VÈ?d UäˆY†" @  VÉ?d ÐUäx&|[ @  VÊ?d VäåbÜš @  VË?d PVä~(}q @  VÌ?d Vä^Ý @  VÍ?d ÐV䮢…ö @  VÎ?d Wä~ê  @  VÏ?d PWäÛêÑ¥ @  VÐ?d WäûÓ[ @  VÑ?d ÐWä `)" @  VÒ?d Xä?Ÿ¥? @  VÓ?d PXä\2_ä @  VÔ ?d Xä|Ç] @  VÕ!?d ÐX䌸§c @  VÖ"?d Yä\ð+‹ @  V×#?d PYäTQÍÐ @  VØ$?d Yät¤Ï. @  VÙ%?d ÐYä„Û5W @  VÚ&?d Z䟕– @  VÛ'?d PZä‚Õ4} @  VÜ(?d Zä¢ 6ƒ @  VÝ)?d ÐZäR_Ìú @  VÞ*?d [ä‚@ @  Vß+?d P[ä6¿ @  Và,?d [ää½ç @  Vá-?d Ð[äæ›Gž @  Vâ.?d€ \䋨7 @  W/?d P\ä”M# @  W0?d \ä´¸!ç @  W1?d Ð\äŽ s @  W2?d ]äQƬ› @  W3?d P]ä—Õº @  W4?d ]ä· D @  W5?d Ð]ä‰í²G @  W6?d ^䩆 @  W 7?d P^äJªH€ @  W 8?d ^äj_J~ @  W 9?d Ð^ä_iKê @  W :?d _ä!Ç @  W ;?d P_äI2~# @  W<?d _äiÇ|Ý @  WuÐ`ä=?d Ð_äú«ç> @  W>?d (`äDSR¦ @  W??d h`äçF @  W@?d ¨`ä2D @  WA?d è`ä$Eë @  WB?d (aä×lÉ @  WC?d haäp" @  WD?d ¨aä1ŠrÜ @  WE?d èaäG×ß @  WF?d (bä’w @  WG?d hbäÌ- @  WH?d ¨bäìõ/æ @  WI?d èbäÙÃ.r @  WJ?d (cä ‹¢š @  WK?d hcäϘ» @  WL?d ¨cäïmE @  WM?d ècäm¥ @  W N?d (dätIV @  W!O?d hdäOnó @  W"P?d ¨däoïl  @  W#Q?d èdäZÙm™ @  W$R?d (e䊑áq @  W%S?d heäL‚XP @  W&T?d ¨eälwZ® @  W'U?d èeäRºÿ­ @  W(V?d (fäÏþ_l @  W)W?d hfä‘ýj @  W*X?d ¨fä±” @  W+Y?d èfä„> @  W,Z?d (gäTvŠè @  W-[?d hgä’e3É @  W.\?d ¨gä²17 @  W/]?d ègä!üªÔ @  W0^?d (hä&É @  W1_?d hhä³ç'ÿ @  W2`?d ¨hä“% @  W3a?d èhä¦$$• @  W4b?d (iävl¨} @  W5c?d hiä°\ @  W6d?d ¨i䊢 @  W7e?d èiä®G¶¡ @  W8f?d (jä3` @  W9g?d hjämLf @  W:h?d ¨jäMõN˜ @  W;i?d èjäxÃO  @  W<j?d (k䨋Ãä @  W=k?d hkän˜zÅ @  W>l?d ¨käNmx; @  W?m?d èkäbÂú @  W@n?d (lä{N1õ @  WAo?d hlä@  @  WBp?d ¨lä`è á @  WCq?d èläUÞ u @  WDr?d (mä…–† @  WEs?d hmäC…?¼ @  WFt?d ¨mäcp=B @  WGu?d èmä]½˜A @  WHv?d (näÀù8€ @  WIw?d hnäžúb† @  WJx?d ¨nä¾`x @  WKy?d ènä‹9aì @  WLz?d (oä[qí @  WM{?d hoäbT% @  WN|?d ¨oä½—VÛ @  WO}?d èoä.ûÍ8 @  WP~?d (pä%qŠ @  WQ?d hpäÛW1? @  WR€?d ¨päû¢3Á @  WS?d èpäΔ2U @  WT‚?d (qäܾ½ @  WUƒ?d hqäØÏœ @  WV„?d ¨qäø:b @  WW…?d èqäÆ÷ a @  WX†?d (rä[³  @  WY‡?d hrä°Z¦ @  WZˆ?d ¨rä%EXX @  W[‰?d èräsYÌ @  W\Š?d (säÀ;Õ$ @  W]‹?d hsä(l @  W^Œ?d ¨sä&Ýnû @  W_?d ès䤷Ҩ @  W`Ž?d (tä½ù!§ @  Wa?d ht䆪M @  Wb?d ¨tä¦_³ @  Wc‘?d ètä“i' @  Wd’?d (uäC!–Ï @  We“?d huä…2/î @  Wf”?d ¨uä¥Ç- @  Wg•?d èuä› ˆ @  Wh–?d (väN(Ò @  Wi—?d hväXMrÔ @  Wj˜?d ¨väx¸p* @  Wk™?d èväMŽq¾ @  Wlš?d (wäÆýV @  Wm›?d hwä[ÕDw @  Wnœ?d ¨wä{ F‰ @  Wo?d èwäèLÝj @  Wpž?d (xäܳQw @  WqŸ?d hxäzWPA @  Wr ?d ¨xäZ¢R¿ @  Ws¡?d èxäo”S+ @  Wt¢?d (yä¿Üßà @  Wu£?d hyäyÏfâ @  Wv¤?d ¨yäY:d @  Ww¥?d èyäg÷Á @  Wx¦?d (zäú³aÞ @  Wy§?d hz䤰;Ø @  Wz¨?d ¨zä„E9& @  W{©?d èzä±s8² @  W|ª?d ({äa;´Z @  W}«?d h{ä§( { @  W~¬?d ¨{ä‡Ý… @  W­?d è{äHæ…u @  W€®?d (|äQ¨vz @  W¯?d h|äjûN @  W‚°?d ¨|äJLn @  Wƒ±?d è|ä8Mú @  W„²?d (}ä¯pÁ @  W…³?d h}äicx3 @  W†´?d ¨}äI–zÍ @  W‡µ?d è}äw[ßÎ @  Wˆ¶?d (~äê @  W‰·?d h~ä´%  @  WЏ?d ¨~ä”é'÷ @  W‹¹?d è~ä¡ß&c @  WŒº?d (äq—ª‹ @  W»?d hä·„ª @  W޼?d ¨äuЀä'—qT @  W½?d è䊷 @  W¾?d @€äj£hà @  W‘¿?d €€äžsiÄ @  W’À?d À€äâ~ @  W“Á?d ä{ ä¸ @  W”Â?d @äùœóf @  W•Ã?d €äë_g @  W–Ä?d ÀäzH¹ @  W—Å?d ‚ä>bZ¥ @  W˜Æ?d @‚ä¼óM{ @  W™Ç?d €‚ä@”] @  WšÈ?d À‚äƒ @  W›É?d ƒä¥ê! @  WœÊ?d @ƒä'{˜ÿ @  WË?d €ƒäC 4þ @  WžÌ?d ÀƒäÁ#  @  WŸÍ?d „äØ({¢ @  W Î?d @„äZ¹l| @  W¡Ï?d €„äÃŽA¶ @  W¢Ð?d À„äAVh @  W£Ñ?d …ä&ðÌÊ @  W¤Ò?d @…ä¤aÛ @  W¥Ó?d €…äÀw @  W¦Ô?d À…äB‡`Ë @  W§Õ?d †äcŸr× @  W¨Ö?d @†äáe  @  W©×?d €†äi*/ @  WªØ?d À†äŸø=ñ @  W«Ù?d ‡äø§S @  W¬Ú?d @‡äz†° @  W­Û?d €‡äñŒ @  W®Ü?d À‡äœ` R @  W¯Ý?d ˆä¹b r @  W°Þ?d @ˆä;ó¬ @  W±ß?d €ˆä?sº @  W²à?d Àˆä½âd @  W³á?d ‰äÚ …Æ @  W´â?d @‰äXœ’ @  Wµã?d €‰ä<ë> @  W¶ä?d À‰ä¾z)Ç @  W·å?d ŠäŸb;Û @  W¸æ?d @Šäó, @  W¹ç?d €Šäá”c# @  Wºè?d ÀŠäctý @  W»é?d ‹äêî_ @  W¼ê?d @‹ä†{ù @  W½ë?d €‹äâ U€ @  W¾ì?d À‹ä`B^ @  W¿í?d Œä×/N @  WÀî?d @ŒäU¾  @  WÁï?d €Œä̉&Z @  WÂð?d ÀŒäN1„ @  WÃñ?d ä)÷«& @  WÄò?d @ä«f¼ø @  WÅó?d €äÏù @  WÆô?d ÀäM€' @  WÇõ?d Žäl˜; @  WÈö?d @Žäî å @  WÉ÷?d €ŽänMà @  WÊø?d ÀŽäÿZ @  WËù?d ä÷À¿ @  WÌú?d @äu×a @  WÍû?d €äö{` @  WÎü?d Àä“gl¾ @  WÏý?d ä?d X äQË @  X/??d ˜ ä‘’«Š @  X0@?d Ø ä¼T @  X1A?d ¡ä±¥Ý @  X2B?d X¡ä34ÊÅ @  X3C?d ˜¡ä’ ) @  X4D?d ء䛊÷ @  X5E?d ¢äÿ1Ç‘ @  X6F?d X¢ä} ÐO @  X7G?d ˜¢äOuÀ @  X8H?d Ø¢äÍä×Í @  X9I?d £äoB¶‚ @  X:J?d X£äíÓ¡\ @  X;K?d ˜£äLíö° @  X<L?d Ø£äÎ|án @  X=M?d ¤ä¥ÜÿÆ @  X>N?d X¤ä'Mè @  X?O?d ˜¤äbh…j @  X@P?d ؤäàù’´ @  XAQ?d ¥äB_óû @  XBR?d X¥äÀÎä% @  XCS?d ˜¥äað³É @  XDT?d Ø¥äãa¤ @  XEU?d ¦ä Ëéq @  XFV?d X¦äŽZþ¯ @  XGW?d ˜¦ä¼îó @  XHX?d ئä>ù- @  XIY?d §äœ¸˜b @  XJZ?d X§ä)¼ @  XK[?d ˜§ä¿ØP @  XL\?d اä=†ÏŽ @  XM]?d ¨ä{—®4 @  XN^?d X¨äù¹ê @  XO_?d ˜¨äž•Ìf @  XP`?d بäÛ¸ @  XQa?d ©ä¾¢º÷ @  XRb?d X©ä<3­) @  XSc?d ˜©ä úÅ @  XTd?d Ø©äœí @  XUe?d ªäð6 } @  XVf?d Xªär§·£ @  XWg?d ˜ªä@r§ÿ @  XXh?d تäÂã°! @  XYi?d «ä`EÑn @  XZj?d X«äâÔÆ° @  X[k?d ˜«äCê‘\ @  X\l?d Ø«äÁ{†‚ @  X]m?d ¬äªÛ˜* @  X^n?d X¬ä(Jô @  X_o?d ˜¬äÃhä @  X`p?d جäAùóÊ @  Xaq?d ­äã_’… @  Xbr?d X­äaÎ…[ @  Xcs?d ˜­äÀðÒ· @  Xdt?d Ø­äBaÅi @  Xeu?d ®ä­Ëˆ @  Xfv?d X®ä/ZŸÑ @  Xgw?d ˜®ä @  Xhx?d خ䟘S @  Xiy?d ¯ä=¸ù @  Xjz?d X¯ä¿)î @  Xk{?d ˜¯ä¹. @  Xl|?d د䜆®ð @  Xm}?d °äP¶ÿå @  Xn~?d X°äÒ'è; @  Xo?d ˜°äX"Ü4 @  Xp€?d ذäÚ³Ëê @  Xq?d ±äxª¥ @  Xr‚?d X±äú„½{ @  Xsƒ?d ˜±ä[ºê— @  Xt„?d رäÙ+ýI @  Xu…?d ²ä6°/ @  Xv†?d X²ä´§ñ @  Xw‡?d ˜²ä†Å·­ @  Xxˆ?d زäT s @  Xy‰?d ³ä¦òÁ< @  XzŠ?d X³ä$cÖâ @  X{‹?d ˜³ä…] @  X|Œ?d سäÌ–Ð @  X}?d ´ällˆx @  X~Ž?d X´äîýŸ¦ @  X?d ˜´äHŽÂå @  X€?d Ø´äÊÕ; @  X‘?d µäh¹´t @  X‚’?d Xµäê(£ª @  Xƒ“?d ˜µäKôF @  X„”?d صäɇ㘠@  X…•?d ¶ä&-®þ @  X†–?d X¶ä¤¼¹  @  X‡—?d ˜¶ä–i©| @  Xˆ˜?d ضäø¾¢ @  X‰™?d ·ä¶^ßí @  XŠš?d X·ä4ÏÈ3 @  X‹›?d ˜·ä•ñŸß @  XŒœ?d Ø·ä`ˆ @  X?d ¸äQqé» @  XŽž?d X¸äÓàþe @  XŸ?d ˜¸ä´s‹é @  X ?d ظä6âœ7 @  X‘¡?d ¹ä”Dýx @  X’¢?d X¹äÕê¦ @  X“£?d ˜¹ä·ë½J @  X”¤?d عä5zª” @  X•¥?d ºäÚÐçò @  X–¦?d XºäXAð, @  X—§?d ˜ºäj”àp @  X˜¨?d غäè÷® @  X™©?d »äJ£–á @  Xšª?d X»äÈ2? @  X›«?d ˜»äi ÖÓ @  Xœ¬?d Ø»äëÁ  @  X­?d ¼ä€=ߥ @  Xž®?d X¼ä¬È{ @  XŸ¯?d ˜¼ä鎣› @  X °?d ؼäk´E @  X¡±?d ½äÉ¹Õ  @  X¢²?d X½äK(ÂÔ @  X£³?d ˜½äê•8 @  X¤´?d ؽäh‡‚æ @  X¥µ?d ¾ä‡-Ï€ @  X¦¶?d X¾ä¼Ø^ @  X§·?d ˜¾ä7iÈ @  X¨¸?d ؾäµøßÜ @  X©¹?d ¿ä^¾“ @  Xªº?d X¿ä•Ï©M @  X«»?d ˜¿ä4ñþ¡ @uÐÀä  X¬¼?d Ø¿ä¶`é @  X­½?d 0Àä ~UŠ @  X®¾?d pÀä"ïBT @  X¯¿?d °Àäµ,"É @  X°À?d ðÀä7½5 @  X±Á?d 0Áä•TX @  X²Â?d pÁäŠC† @  X³Ã?d °Áä¶´j @  X´Ä?d ðÁä4%´ @  XµÅ?d 0ÂäÛNÒ @  X¶Æ?d pÂäYY  @  X·Ç?d °ÂäkËIP @  X¸È?d ðÂäéZ^Ž @  X¹É?d 0ÃäKü?Á @  XºÊ?d pÃäÉm( @  X»Ë?d °ÃähSó @  X¼Ì?d ðÃäêÂh- @  X½Í?d 0Ääbv… @  X¾Î?d pÄäóa[ @  X¿Ï?d °ÄäFÖ ) @  XÀÐ?d ðÄäÄG÷ @  XÁÑ?d 0Åäfáz¸ @  XÂÒ?d pÅääpmf @  XÃÓ?d °ÅäEN:Š @  XÄÔ?d ðÅäÇß-T @  XÅÕ?d 0Æä(u`2 @  XÆÖ?d pÆäªäwì @  XÇ×?d °Æä˜1g° @  XÈØ?d ðÆä pn @  XÉÙ?d 0Çä¸! @  XÊÚ?d pÇä:—ÿ @  XËÛ?d °Ç䛩Q @  XÌÜ?d ðÇä8FÍ @  XÍÝ?d 0Èä_)'w @  XÎÞ?d pÈäݸ0© @  XÏß?d °Èäº+E% @  XÐà?d ðÈä8ºRû @  XÑá?d 0Éäš3´ @  XÒâ?d pÉä$j @  XÓã?d °Éä¹³s† @  XÔä?d ðÉä;"dX @  XÕå?d 0ÊäÔˆ)> @  XÖæ?d pÊäV>à @  X×ç?d °ÊädÌ.¼ @  XØè?d ðÊäæ]9b @  XÙé?d 0ËäDûX- @  XÚê?d pËäÆjOó @  XÛë?d °ËägT @  XÜì?d ðËäåÅÁ @  XÝí?d 0ÌäŽei @  XÞî?d pÌä ô· @  Xßï?d °ÌäçÖmW @  Xàð?d ðÌäeGz‰ @  Xáñ?d 0ÍäÇáÆ @  Xâò?d€ pÍä1³¾ @  Yó?d °ÍäqÌ{ @  Yô?d ðÍäó]¥ @  Yõ?d 0ÎäÙ¾®. @  Yö?d pÎä[/¹ð @  Y÷?d °Îä§HöÖ @  Yø?d ðÎä%Ùá @  Yù?d 0ÏäIÍß= @  Yú?d pÏäË\Èã @  Y û?d °Ïä¯+dâ @  Y ü?d ðÏä-ºs< @  Y ý?d 0Ðä$ÃÙÄ @  Y þ?d pÐä¦RÎ @  Y ÿ?d °Ðä *ñ @  Y?d ðÐ䎻æË @  Y?d 0ÑäOæ @  Y?d pÑäÍŸñÀ @  Y?d °Ñä©è]Á @  Y?d ðÑä+yJ @  Y?d 0Òäšü” @  Y?d pÒäƒ ëJ @  Y?d °Òäl¤l @  Y?d ðÒäýý³² @  Y ?d 0Óä‘é‡ @  Y ?d pÓäxšY @  Y ?d °Óäw6X @  Y ?d ðÓäõž!† @  Y ?d 0Ôä[wÄà @  Y?d pÔäÙæÓ @  Y?d °Ôä@Ñþ× @  Y?d ðÔäÂ@é  @  Y?d 0ÕäóÎl @  Y ?d pÕäbÙ² @  Y!?d °Õäôu³ @  Y"?d ðÕäv„bm @  Y#?d 0Öä\gÔæ @  Y$?d pÖäÞöÃ8 @  Y%?d °Öä"‘Œ @  Y&?d ðÖä ›À @  Y'?d 0×äÌ¥õ @  Y(?d p×äN…²+ @  Y)?d °×ä*ò* @  Y*?d ð×ä¨c ô @  Y+?d 0Øä+;“£ @  Y,?d pØä©ª„} @  Y-?d °Øä­*k @  Y. ?d ðØä/»‡µ @  Y/!?d 0Ùäî‡` @  Y0"?d pÙälŸ¾ @  Y1#?d °Ùäè<¿ @  Y2$?d ðÙäŠy+a @  Y3%?d 0Úä šê @  Y4&?d pÚä" Š4 @  Y5'?d °ÚäÞlÅ @  Y6(?d ðÚä\ýÒÌ @  Y7)?d 0Ûä0éìù @  Y8*?d pÛä²xû' @  Y9+?d °ÛäÖW& @  Y:,?d ðÛäTž@ø @  Y;-?d 0Üäúw¥½ @  Y<.?d pÜäxæ²c @  Y=/?d °ÜäáÑŸ© @  Y>0?d ðÜäc@ˆw @  Y?1?d 0Ýäô©€ @  Y@2?d pÝäŸe¾^ @  YA3?d °Ýäû_ @  YB4?d ðÝäyƒ @  YC5?d 0ÞäS`³  @  YD6?d pÞäÑñ¤Ô @  YE7?d °Þä-–ëò @  YF8?d ðÞä¯ü, @  YG9?d 0ßäà@  YH:?d pßäA‚ÕÇ @  YI;?d uÐàä/°ßä%õyÆ @  YJ<?d ðßä§dn @  YK=?d Hàä g&¤ @  YL>?d ˆàä)’$Z @  YM??d Èàä&0} @  YN@?d áä¯n¼• @  YOA?d Háä<'v @  YPB?d ˆáä÷%ˆ @  YQC?d ÈáäÚ䜩 @  YRD?d âäG G5¹ @  YŒ~?d ˆðä²7G @  Y?d ÈðäUÀwò @  YŽ€?d ñä…ˆû @  Y?d Hñää`ù @  Y‚?d ˆñä6b @  Y‘ƒ?d ÈñäðÛ& @  Y’„?d òämF{ç @  Y“…?d HòäXpzs @  Y”†?d ˆòäx…x @  Y•‡?d Èòä&†"‹ @  Y–ˆ?d óäöήc @  Y—‰?d HóäÈ ` @  Y˜Š?d ˆóäèö ž @  Y™‹?d Èóä.å°¿ @  YšŒ?d ôä7«C° @  Y›?d HôäB$ @  YœŽ?d ˆôä"h@Ú @  Y?d Èôä;x0 @  Yž?d õäÉsôØ @  YŸ‘?d HõäKH‹ @  Y ’?d ˆõäkìJu @  Y¡“?d Èõä­ÿóT @  Y¢”?d öä0»S• @  Y£•?d HöäR @  Y¤–?d ˆöä%xPÿ @  Y¥—?d Èöä{{ ù @  Y¦˜?d ÷ä«3† @  Y§™?d H÷ä•þ# @  Y¨š?d ˆ÷äµ !ì @  Y©›?d È÷äs˜Í @  Yªœ?d øäGçÐ @  Y«?d HøärÑD @  Y¬ž?d ˆøäR$º @  Y­Ÿ?d ÈøäôÀŒ @  Y® ?d ùä$ˆšd @  Y¯¡?d Hùä·ä‡ @  Y°¢?d ˆùä—y @  Y±£?d ÈùäQºX @  Y²¤?d úäÌF™ @  Y³¥?d Húäùp  @  Y´¦?d ˆúäÙ…ó @  Yµ§?d Èú䇆Cõ @  Y¶¨?d ûäWÎÏ @  Y·©?d Hûäij @  Y¸ª?d ˆûäIöhà @  Y¹«?d ÈûäåÑÁ @  Yº¬?d üä–«"Î @  Y»­?d Hüä£#Z @  Y¼®?d ˆüäƒh!¤ @  Y½¯?d Èüä¸;N @  Y¾°?d ýähs•¦ @  Y¿±?d HýäD/g @  YÀ²?d ˆýädë-™ @  YÁ³?d Èý䢸”¸ @  Y´?d þä?¼4y @  Yõ?d Hþä Š5í @  YĶ?d ˆþä*7 @  YÅ·?d Èþät|m @  YƸ?d ÿä¤4áý @  Yǹ?d HÿäšùDþ @  YȺ?d ˆÿäº F @  YÉuÐå»?d Èÿä|ÿ! @  Yʼ?d å3«×Ð @  Y˽?d `åÖD @  Y̾?d  å&hÔº @  YÍ¿?d àåpÜÀ @  YÎÀ?d å ”Lu @  YÏÁ?d `å3ø×– @  YÐÂ?d  å Õh @  YÑÃ?d àåÕlI @  YÒÄ?d åHZ̈ @  YÓÅ?d `å}lÍ @  YÔÆ?d  å]™Ïâ @  YÕÇ?d àåš•ä @  YÖÈ?d åÓÒ  @  Y×É?d `åí¼ @  YØÊ?d  åÍê¾ñ @  YÙË?d àå ùÐ @  YÚÌ?d å·ôß @  YÛÍ?d `å'õK @  YÜÎ?d  åt÷µ @  YÝÏ?d àå<'Ï_ @  YÞÐ?d åìoC· @  YßÑ?d `ånÿä @  YàÒ?d  åNðý @  YáÓ?d àåˆãD; @  YâÔ?d€ åÔàú @  ZÕ?d `å—ZG @  ZÖ?d  å bX¹ @  Z×?d àå»(ùR @  ZØ?d åk`uº @  ZÙ?d `å›Ã @  ZÚ?d  å»ê= @  ZÛ?d àå³Kkf @  ZÜ?d 凴ç{ @  Z Ý?d `åwË @  Z Þ?d  åW>ü @  Z ß?d àå4“å' @  Z à?d åäÛiÏ @  Z á?d ` 夓¶ @  Zâ?d   å4Q‘H @  Zã?d à å‘QIó @  Zä?d å é2 @  Zå?d ` åüjK @  Zæ?d   åÜŸµ @  Zç?d à åGÕ°^ @  Zè?d å—<¶ @  Zé?d ` ågâÆÏ @  Zê?d   åGÄ1 @  Zë?d à åO¶"j @  Zì?d åVøÑe @  Zí?d ` 妇+ @  Zî?d   å†r)â @  Zï?d à åxhêå @  Zð?d å¨ f  @  Zñ?d ` åX_œt @  Zò?d   åxªžŠ @  Zó?d à å̬a @  Z ô?d åQèÁ@ @  Z!õ?d `å¡—;9 @  Z"ö?d  åb9Ç @  Z#÷?d àå(˜, @  Z$ø?d åÊ`Ä @  Z%ù?d `å:î½ @  Z&ú?d  åêìC @  Z'û?d àåK  @  Z(ü?d 嬕¶ª @  Z)ý?d `å\êLÓ @  Z*þ?d  å|N- @  Z+ÿ?d àåC y @  Z,?d å] ,‘ @  Z-?d `å­tÖè @  Z.?d  åÔ @  Z/?d àå( ­ @  Z0?d åµÅ¬l @  Z1?d `åEºV @  Z2?d  åeOTë @  Z3?d àåþõ @  Z4?d å.Myè @  Z5 ?d `åÞ2ƒ‘ @  Z6 ?d  åþÇo @  Z7 ?d àåöfg4 @  Z8 ?d åï(”; @  Z9 ?d `åWnB @  Z:?d  å?¢l¼ @  Z;?d àåÁ¸¯» @  Z<?d åð#S @  Z=?d `åáÙ* @  Z>?d  åÁzÛÔ @  Z??d àåÛ{"M @  Z@?d åF?‚Œ @  ZA?d `å¶@xõ @  ZB?d  å–µz  @  ZC?d àå ÿÛà @  ZD?d åÝ·W @  ZE?d `å-È­q @  ZF?d  å =¯ @  ZG?d àåœIÔ @  ZH?d å1cÅÉ @  ZI?d `åÁ?° @  ZJ?d  åáé=N @  ZK?d àå‚DÇ• @  ZL ?d åR K} @  ZM!?d `å¢s± @  ZN"?d  å‚†³ú @  ZO#?d àå'†kA @  ZP$?d åºÂË€ @  ZQ%?d `åJ½1ù @  ZR&?d  åjH3 @  ZS'?d àåñ’ì @  ZT(?d å!J @  ZU)?d `åÑ5ä} @  ZV*?d  åñÀæƒ @  ZW+?d àåùaØ @  ZX,?d åà/ó× @  ZY-?d `åP ® @  ZZ.?d  å0¥ P @  Z[/?d àåοÈW @  Z\0?d å÷D¿ @  Z]1?d `åÆ @  Z^2?d  åÎ}¼8 @  Z_3?d àåz{C3 @  Z`4?d åç?ãò @  Za5?d `å@‹ @  Zb6?d  å7µu @  Zc7?d àå¬ÿºž @  Zd8?d å|·6v @  Ze9?d `åŒÈÌ @  Zf:?d  å¬=ÎñuÐ å @  Zg;?d à夜(ª @  Zh<?d 8 åÕ—öÌ @  Zi=?d x å%è µ @  Zj>?d ¸ åK @  Zk??d ø å–àá @  Zl@?d 8!åF¨mi @  ZmA?d x!å¶×— @  ZnB?d ¸!å–"•î @  ZoC?d ø!å3"MU @  ZpD?d 8"å®fí” @  ZqE?d x"å^í @  ZrF?d ¸"å~ì @  ZsG?d ø"å妴ø @  ZtH?d 8#å5î8 @  ZuI?d x#åÅ‘Âi @  ZvJ?d ¸#åådÀ— @  ZwK?d ø#åíÅ&Ì @  ZxL?d 8$åô‹Õà @  ZyM?d x$åô/º @  ZzN?d ¸$å$-D @  Z{O?d ø$åÚîC @  Z|P?d 8%å Sb« @  Z}Q?d x%åú,˜Ò @  Z~R?d ¸%åÚÙš, @  ZS?d ø%å#ŽS„ @  Z€T?d 8&å¾ÊóE @  ZU?d x&åNµ < @  Z‚V?d ¸&åÀx¾ @  Zƒ€W?d ø&刊ÙU @  Z„€X?d 8'åXÂU½ @  Z…€Y?d x'娽¯Ä @  Z†€Z?d ¸'åˆH­: @  Z‡€[?d ø'å€éKa @  Zˆ€\?d 8(å´Ç| @  Z‰€]?d x(åDi= @  ZŠ€^?d ¸(ådœ?û @  Z‹€_?d ø(å1Å  @  ZŒ€`?d 8)å×yIÈ @  Z€a?d x)å'³± @  ZŽ€b?d ¸)åó±O @  Z€c?d ø)å¢óiô @  Z€d?d 8*å?·É5 @  Z‘€e?d x*åÏÈ3L @  Z’€f?d ¸*åï=1² @  Z“€g?d ø*åtwY @  Z”€h?d 8+å¤?± @  Z•€i?d x+åT@æÈ @  Z–€j?d ¸+åtµä6 @  Z—€k?d ø+å|m @  Z˜€l?d 8,åeZñb @  Z™€m?d x,å•%  @  Zš€n?d ¸,åµÐ å @  Z›€o?d ø,åKÊÊâ @  Zœ€p?d 8-囂F  @  Z€q?d x-åký¼s @  Zž€r?d ¸-åK¾ @  ZŸ€s?d ø-åÿA† @  Z €t?d 8.åbJáG @  Z¡€u?d x.å’5> @  Z¢€v?d ¸.å²ÀÀ @  Z£€w?d ø.å)Џ+ @  Z¤€x?d 8/åùÂ4à @  Z¥€y?d x/å ½Îº @  Z¦€z?d ¸/å)HÌD @  Z§€{?d ø/å!é* @  Z¨€|?d 80åŸ7–­ @  Z©€}?d x0åoHlÔ @  Zª€~?d ¸0åO½n* @  Z«€?d ø0åÁ†Õr @  Z¬€€?d 81åÎYš @  Z­€?d x1åá±£ã @  Z®€‚?d ¸1åÁD¡ @  Z¯€ƒ?d ø1ådDy¦ @  Z°€„?d 82åùÙg @  Z±€…?d x2å # @  Z²€†?d ¸2å)Š!à @  Z³€‡?d ø2å²À€  @  Z´€ˆ?d 83åbˆ ã @  Zµ€‰?d x3å’÷öš @  Z¶€Š?d ¸3å²ôd @  Z·€‹?d ø3庣? @  Z¸€Œ?d 84å£íá0 @  Z¹€?d x4åS’I @  Zº€Ž?d ¸4åsg· @  Z»€?d ø4å}Ú° @  Z¼€?d 85å]5VX @  Z½€‘?d x5å­J¬! @  Z¾€’?d ¸5å¿®ß @  Z¿€“?d ø5å—¾WF @  ZÀ€”?d 86å ú÷‡ @  ZÁ€•?d x6åú… þ @  Z€–?d ¸6åÚp @  ZÀ—?d ø6åA:®ë @  ZÄ€˜?d 87å‘r" @  ZÅ€™?d x7åa Øz @  ZÆ€š?d ¸7åAøÚ„ @  ZÇ€›?d ø7åIY<ß @  ZÈ€œ?d 88å}¦°Â @  ZÉ€?d x8åÙJ» @  ZÊ€ž?d ¸8å­,HE @  ZË€Ÿ?d ø8åβž @  ZÌ€ ?d 89åÉ>v @  ZÍ€¡?d x9åî¶Ä @  Z΀¢?d ¸9åÎCÆñ @  ZÏ€£?d ø9åkCJ @  ZЀ¤?d 8:åö¾‹ @  ZÑ€¥?d x:åxDò @  ZÒ€¦?d ¸:å&F  @  ZÓ€§?d ø:å½Ççç @  ZÔ€¨?d 8;åmk @  ZÕ€©?d x;åð‘v @  ZÖ€ª?d ¸;当ˆ @  Z×€«?d ø;嵤uÓ @  ZØ€¬?d 8<å¬ê†Ü @  ZÙ€­?d x<å\•|¥ @  ZÚ€®?d ¸<å|`~[ @  ZÛ€¯?d ø<å‚z½\ @  ZÜ€°?d 8=åR21´ @  ZÝ€±?d x=å¢MËÍ @  ZÞ€²?d ¸=傸É3 @  Z߀³?d ø=å6¾68 @  Zà€´?d 8>å«ú–ù @  Zဵ?d x>å[…l€ @  Z‶?d€ ¸>å³rØ @  [€·?d ø>åu¸› @  [€¸?d 8?å¥ðò @  [€¹?d x?åÆf @  [€º?duÐ@å7 ¸?å°3˜ @  [€»?d ø?å  ÞÅ @  [¼?d P@åÈ dù @  [½?d @åT¥ÔÚ @  [¾?d Ð@åÖ4à @  [ ¿?d AåÒYL @  [ À?d PAåPÈ[Ë @  [ Á?d AåÇšO @  [ Â?d ÐAåE X¡ @  [ Ã?d BåœÍVŸ @  [Ä?d PBå\AA @  [Å?d Bå/TÏ‚ @  [Æ?d ÐBå­ÅØ\ @  [Ç?d Cå¡l @  [È?d PCå#޲ @  [É?d Cå´Ü @  [Ê?d ÐCå6M Ø @  [Ë?d DåkP( @  [Ì?d PDåéGö @  [Í?d Dåu¹÷Õ @  [Î?d ÐDå÷(à  @  [Ï?d E垢C× @  [Ð?d PEå3T  @  [Ñ?d Eå‹a@½ @  [Ò?d ÐEå ðWc @  [Ó?d FåÐ6Y] @  [Ô?d PFåR§Nƒ @  [Õ?d Får©çð @  [ Ö?d ÐFåð8ð. @  [!×?d Gåüâ1 @  ["Ø?d PGå~s&À @  [#Ù?d Gåé!2t @  [$Ú?d ÐGåk°%ª @  [%Û?d HåÍH @  [&Ü?d PHå™\– @  ['Ý?d Håõ µ @  [(Þ?d ÐHå‡d·k @  [)ß?d IåsY-k @  [*à?d PIåñÈ:µ @  [+á?d Iåfš. @  [,â?d ÐIåä 9ß @  [-ã?d Jå=Í7á @  [.ä?d PJå¿\ ? @  [/å?d JåŽT®ü @  [0æ?d ÐJå Ź" @  [1ç?d Kåx @  [2è?d PK傎oÌ @  [3é?d KåÜ{x @  [4ê?d ÐKå—Ml¦ @  [5ë?d LåÊ1V @  [6ì?d PLåH&ˆ @  [7í?d LåÔ¹–« @  [8î?d ÐLåV(u @  [9ï?d Må?¢"© @  [:ð?d PMå½35w @  [;ñ?d Må*a!à @  [<ò?d ÐMå¨ð6 @  [=ó?d Nåq68# @  [>ô?d PNåó§/ý @  [?õ?d Nå}®€ @  [@ö?d ÐNåÿ?— @  [A÷?d OåóåVò @  [Bø?d POåqtA, @  [Cù?d Oåæ&U˜ @  [Dú?d ÐOåd·BF @  [Eû?d PåžëP  @  [Fü?d PPåzGÕ @  [Gý?d På€Ó÷ö @  [Hþ?d ÐPåBà( @  [Iÿ?d QåÖ¬[‚ @  [J?d PQåT=L\ @  [K?d QåÃoXè @  [L?d ÐQåAþO6 @  [M?d Rå˜8A @  [N?d PRå©VÖ @  [O?d Rå+¡Ø @  [P?d ÐRå©0ÏË @  [Q?d Så¥êû @  [R?d PSå'{% @  [S ?d Så°) ‘ @  [T ?d ÐSå2¸O @  [U ?d TåotG¿ @  [V ?d PTåíåPa @  [W ?d TåqLàB @  [X?d ÐTåóÝ÷œ @  [Y?d UåšWT@ @  [Z?d PUåÆCž @  [[?d Uå”W* @  [\?d ÐUå @ô @  []?d VåÔÃNÊ @  [^?d PVåVRY @  [_?d Våv\ðg @  [`?d ÐVåôÍç¹ @  [a?d Wåø&‰ @  [b?d PWåz†1W @  [c?d WåíÔ%ã @  [d?d ÐWåoE2= @  [e?d Xå8ß @  [f?d PXå© @  [g?d Xå·" @  [h?d ÐX僑 ü @  [i?d Yåw¬:ü @  [j ?d PYåõ=-" @  [k!?d Yåbo9– @  [l"?d ÐYåàþ.H @  [m#?d Zå98 v @  [n$?d PZ廩7¨ @  [o%?d Z务¹k @  [p&?d ÐZå0®µ @  [q'?d [åêo… @  [r(?d P[å†{x[ @  [s)?d [å)lï @  [t*?d Ð[哸{1 @  [u+?d \åÎt&Á @  [v,?d P\åLå1 @  [w-?d \åÐL< @  [x.?d Ð\åRÝ–â @  [y/?d ]å;W5> @  [z0?d P]幯"à @  [{1?d ]å.”6T @  [|2?d Ð]å¬!Š @  [}3?d ^åuÃ/´ @  [~4?d P^å÷R8j @  [5?d ^åš §º @  [€6?d Ð^地d @  [7?d _åFqT @  [‚8?d P_å–×fŠ @  [ƒ9?d _å…r> @  [uÐ`å„:?d Ð_åƒeà @  […;?d (`åyn~‡ @  [†<?d h`åûÿiY @  [‡=?d ¨`ågVÙz @  [ˆ>?d è`ååÇΤ @  [‰??d (aåáªAµ @  [Š@?d haåc;Vk @  [‹A?d ¨aåôiBß @  [ŒB?d èaåvøU @  [C?d (bå¯>[? @  [ŽD?d hbå-¯Lá @  [E?d ¨bå§Â" @  [F?d èbåž6Õü @  [‘G?d (cå’ìÌ @  [’H?d hcå} @  [“I?d ¨cå‡/¦ @  [”J?d ècå¾x @  [•K?d (dåXr]ˆ @  [–L?d hdåÚãJV @  [—M?d ¨dåFJúu @  [˜N?d èdåÄÛí« @  [™O?d (eå­QNw @  [šP?d heå/ÀY© @  [›Q?d ¨e帒M @  [œR?d èeå:Zà @  [S?d (fåãÅTý @  [žT?d hfåaTC# @  [ŸU?d ¨fåAZêP @  [ V?d èfåÃËýŽ @  [¡W?d (gåÏ<¾ @  [¢X?d hgåM€+` @  [£Y?d ¨gåÚÒ?Ô @  [¤Z?d ègåXC(  @  [¥[?d (hå(> è @  [¦\?d hh媯6 @  [§]?d ¨hå6­ @  [¨^?d èhå´—ºË @  [©_?d (iå@ª Ë @  [ª`?d hiåÂ;7 @  [«a?d ¨iåUi#¡ @  [¬b?d èiå×ø4 @  [­c?d (jå>:A @  [®d?d hj匯-Ÿ @  [¯e?d ¨jå½§£\ @  [°f?d èjå?6´‚ @  [±g?d (kå3ìu² @  [²h?d hkå±}bl @  [³i?d ¨kå&/vØ @  [´j?d èk夾a @  [µk?d (låùr<ö @  [¶l?d hlå{ã+( @  [·m?d ¨låçJ›  @  [¸n?d èlåeÛŒÕ @  [¹o?d (må Q/  @  [ºp?d hmåŽÀ8× @  [»q?d ¨må’,c @  [¼r?d èmå›;½ @  [½s?d (nåBÅ5ƒ @  [¾t?d hnåÀT"] @  [¿u?d ¨nåN]¼ @  [Àv?d ènåÌÌšb @  [Áw?d (oåÀ[R @  [Âx?d hoåB‡LŒ @  [Ãy?d ¨oåÕÕX8 @  [Äz?d èoåWDOæ @  [Å{?d (på­]« @  [Æ|?d hpå/‰Ju @  [Ç}?d ¨på³ úV @  [È~?d èpå1±íˆ @  [É?d (qå(6  @  [Ê€?d hq媋!Õ @  [Ë?d ¨qå=Ù5a @  [Ì‚?d èqå¿H"¿ @  [̓?d (råfŽ, @  [΄?d hråä;_ @  [Ï…?d ¨råÕµœ @  [І?d èråW†¢B @  [ч?d (så[\cr @  [Òˆ?d hsåÙÍt¬ @  [Ó‰?d ¨såNŸ` @  [ÔŠ?d èsåÌwÆ @  [Õ‹?d (tå‘Â*6 @  [ÖŒ?d htåS=è @  [×?d ¨tåúË @  [ØŽ?d ètå kš @  [Ù?d (uådá9É @  [Ú?d huåæp. @  [Û‘?d ¨uåq":£ @  [Ü’?d èuåó³-} @  [Ý“?d (vå*u#C @  [Þ”?d hvå¨ä4 @  [ß•?d ¨våˆêî @  [à–?d èvå {Š0 @  [á—?d (wå¡K @  [â˜?d€ hwåfôg @  \™?d ¨wåtu¨ú @  \š?d èwåöä¿$ @  \›?d (xåCÐf+ @  \œ?d hxåÁAqõ @  \?d ¨xå“Zž¬ @  \ž?d èxåˉr @  \Ÿ?d (yå+DL @  \ ?d hyå©Õ[Ö @  \ ¡?d ¨yåûδ @  \ ¢?d èyåy_£Q @  \ £?d (zåeÐV‚ @  \ ¤?d hzåçAA\ @  \ ¥?d ¨zåµZ® @  \¦?d èzå7˹Û @  \§?d ({åXq @  \¨?d h{åÚ“¯ @  \©?d ¨{刈áö @  \ª?d è{å ö( @  \«?d (|å’œP5 @  \¬?d h|å Gë @  \­?d ¨|åB¨² @  \®?d è|åÀ‡¿l @  \¯?d (}åg¿CÊ @  \°?d h}åå.T @  \±?d ¨}å·5»M @  \²?d è}å5¤¬“ @  \³?d (~å)+Y@ @  \´?d h~嫺Nž @  \µ?d ¨~åù¡¡Ç @  \¶?d è~å{0¶ @  \·?d (åÿ1 @  \ ¸?d hå‡n&Ý @  \!¹?d ¨åuЀå'ÕuÉ„ @  \"º?d èåWäÞZ @  \#»?d @€å¸‘i< @  \$¼?d €€å˜dk @  \%½?d À€åh‘» @  \&¾?d å¸SS @  \'¿?d @å UV @  \(À?d €å Tð @  \)Á?d Àåðß®‰ @  \*Â?d ‚åm›H @  \+Ã?d @‚ånÁL„ @  \,Ä?d €‚åN4Nz @  \-Å?d À‚å¾K´ @  \.Æ?d ƒån8ë @  \/Ç?d @ƒåSw @  \0È?d €ƒåsæ‰ @  \1É?d Àƒåƒ™ûð @  \2Ê?d „åš×ÿ @  \3Ë?d @„å™J3 @  \4Ì?d €„å¹xHÍ @  \5Í?d À„åI²´ @  \6Î?d …å™O>\ @  \7Ï?d @…ål®YÌ @  \8Ð?d €…åL[[2 @  \9Ñ?d À…å¼$¡K @  \:Ò?d †å!`Š @  \;Ó?d @†å":CF @  \<Ô?d €†åÏA¸ @  \=Õ?d À†åò°»Á @  \>Ö?d ‡å"ø7) @  \?×?d @‡å é-— @  \@Ø?d €‡å€/i @  \AÙ?d À‡åpcÕ @  \BÚ?d ˆåDœY  @  \CÛ?d @ˆåGÆÁ @  \DÜ?d €ˆåg3? @  \EÝ?d Àˆå—LãF @  \FÞ?d ‰åGo® @  \Gß?d @‰å/R1â @  \Hà?d €‰å§3 @  \Iá?d À‰åÿØÉe @  \Jâ?d Šåbœi¤ @  \Kã?d @ŠåaÆ+h @  \Lä?d €ŠåA3)– @  \Må?d ÀŠå±LÓï @  \Næ?d ‹åa_ @  \Oç?d @‹å\d› @  \Pè?d €‹å|áfe @  \Qé?d À‹åŒžœ @  \Rê?d Œå•Ðo @  \Së?d @Œå–Š-ß @  \Tì?d €Œå¶/! @  \Uí?d ÀŒåFÕX @  \Vî?d å–HY° @  \Wï?d @åc©>  @  \Xð?d €åC\<Þ @  \Yñ?d Àå³#Ƨ @  \Zò?d Žå.gff @  \[ó?d @Žå-=$ª @  \\ô?d €Žå È&T @  \]õ?d ÀŽåý·Ü- @  \^ö?d å-ÿPÅ @  \_÷?d @åéLé @  \`ø?d €å!N @  \aù?d ÀåÑc´n @  \bú?d åo½Ü @  \cû?d @ålçJ @  \dü?d €åLHî @  \eý?d Àå¼m²— @  \fþ?d ‘ål%> @  \gÿ?d @‘å–‚t¼ @  \h?d €‘å¶wvB @  \i?d À‘åFŒ; @  \j?d ’åÛL,ú @  \k?d @’åØn6 @  \l?d €’åøãlÈ @  \m?d À’圖± @  \n?d “åØÔY @  \o?d @“ååÄ!Å @  \p?d €“åÅ1#; @  \q ?d À“å5NÙB @  \r ?d ”å,*M @  \s ?d @”å/Zh @  \t ?d €”å¯j @  \u ?d À”åÿÐ @  \v?d •å/˜î @  \w?d @•åÚy{~ @  \x?d €•åúŒy€ @  \y?d À•å óƒù @  \z?d –å—·#8 @  \{?d @–å”íaô @  \|?d €–å´c  @  \}?d À–åDg™s @  \~?d —å”/› @  \?d @—åõh? @  \€?d €—åÕ=ê @  \?d À—å%âÇ“ @  \‚?d ˜åKŽ @  \ƒ?d @˜åG B @  \„?d €˜å2² ¼ @  \…?d À˜åÂÍñÅ @  \†?d ™å…}- @  \‡?d @™åzÓ#a @  \ˆ ?d €™åZ&!Ÿ @  \‰!?d À™åªYÛæ @  \Š"?d šå7{' @  \‹#?d @šå4G9ë @  \Œ$?d €šå²; @  \%?d ÀšåäÍÁl @  \Ž&?d ›å4…M„ @  \'?d @›å •v @  \(?d €›å)`tæ @  \‘)?d À›åÙŽŸ @  \’*?d œåÀQ} @  \“+?d @œåà ?\ @  \”,?d €œåãþ=¢ @  \•-?d ÀœåÇÛ @  \–.?d åÃÉK3 @  \—/?d @å6(,£ @  \˜0?d €åÝ.] @  \™1?d À忢Ô$ @  \š2?d žå{ætå @  \›3?d @žåx¼6) @  \œ4?d €žåXI4× @  \5?d Àžå¨6ή @  \ž6?d Ÿåx~BF @  \Ÿ7?d @ŸåTh^j @  \ 8?d €Ÿåt\” @  \¡9uРå?d ÀŸå„â¦í @  \¢:?d  åˆi ÷ @  \£€;?d X å‹3I; @  \¤€<?d ˜ å«ÆKÅ @  \¥€=?d Ø å[¹±¼ @  \¦€>?d ¡å‹ñ=T @  \§€??d X¡å÷v  @  \¨€@?d ˜¡å3t÷ @  \©€A?d Ø¡åÃ}ŽŽ @  \ª€B?d ¢å^9.O @  \«€C?d X¢å]clƒ @  \¬€D?d ˜¢å}–n} @  \­€E?d Ø¢åé” @  \®€F?d £å]¡ì @  \¯€G?d X£å`±#p @  \°€H?d ˜£å@D!Ž @  \±€I?d Ø£å°;Û÷ @  \²€J?d ¤å©u(ø @  \³€K?d X¤åª/j4 @  \´€L?d ˜¤åŠÚhÊ @  \µ€M?d ؤåz¥’³ @  \¶€N?d ¥åªí[ @  \·€O?d X¥å_ yË @  \¸€P?d ˜¥åù{5 @  \¹€Q?d Ø¥å†L @  \º€R?d ¦åÂ! @  \»€S?d X¦å˜cA @  \¼€T?d ˜¦å1ma¿ @  \½€U?d ئåÁ›Æ @  \¾€V?d §åZ. @  \¿€W?d X§å“K  @  \À€X?d ˜§å³¾n @  \Á€Y?d اåCÁõ @  \€Z?d ¨åw>y  @  \À[?d X¨åtd;Æ @  \Ä€\?d ˜¨åT‘98 @  \Å€]?d بå¤îÃA @  \Æ€^?d ©åt¦O© @  \Ç€_?d X©åðå @  \È€`?d ˜©å< @  \É€a?d Ø©åÌzéb @  \Ê€b?d ªåQ>I£ @  \Ë€c?d XªåRd o @  \Ì€d?d ˜ªår‘ ‘ @  \Í€e?d تå‚îóè @  \΀f?d «åR¦ @  \Ï€g?d X«åo¶Dœ @  \Ѐh?d ˜«åOCFb @  \Ñ€i?d Ø«å¿<¼ @  \Ò€j?d ¬å¦rO @  \Ó€k?d X¬å¥( Ø @  \Ô€l?d ˜¬å…Ý& @  \Õ€m?d جåu¢õ_ @  \Ö€n?d ­å¥êy· @  \×€o?d X­åP ' @  \Ø€p?d ˜­åpþÙ @  \Ù€q?d Ø­å€æ  @  \Ú€r?d ®åÅFa @  \Û€s?d X®åŸ­ @  \Ü€t?d ˜®å>jS @  \Ý€u?d Ø®åÎü* @  \Þ€v?d ¯å]p @  \߀w?d X¯å2Klî @  \à€x?d ˜¯å¾n @  \á€y?d دåâÁ”i @  \â€z?d€ °å(Ü4} @  ]€{?d X°åÊÇ>˜ @  ]€|?d ˜°åê2ñ¯ @  ]€€?d ˜±ådËóQ @  ]€?d رåZVR @  ]€‚?d ²åÇBö“ @  ] €ƒ?d X²åQO² @  ] €„?d ˜²å!¤ML @  ] €…?d زå’LØ @  ] €†?d ³åÄÚÀ0 @  ] €‡?d X³åšÙš6 @  ]€ˆ?d ˜³åº,˜È @  ]€‰?d سå)@+ @  ]€Š?d ´å0ð$ @  ]€‹?d X´åöI @  ]€Œ?d ˜´åÖèKû @  ]€?d Ø´åãÞJo @  ]€Ž?d µå3–Ƈ @  ]€?d XµåÅþm @  ]€?d ˜µå(0ü“ @  ]€‘?d صåýY @  ]€’?d ¶å‹¹ùQ @  ]€“?d X¶åMª@p @  ]€”?d ˜¶åm_BŽ @  ]€•?d ضåXiC @  ]€–?d ·åˆ!Ïò @  ]€—?d X·åÖ"•ô @  ]€˜?d ˜·åö×—  @  ]€™?d Ø·åt½+Y @  ] €š?d ¸å@B§D @  ]!€›?d X¸å†Qe @  ]"€œ?d ˜¸å¦¤› @  ]#€?d ظå“’ @  ]$€ž?d ¹åCÚ‘ç @  ]%€Ÿ?d X¹åå>Ñ @  ]&€ ?d ˜¹åÅË’/ @  ]'€¡?d عåû7, @  ](€¢?d ºåfB—í @  ])€£?d Xºå Q.Ì @  ]*€¤?d ˜ºå€¤,2 @  ]+€¥?d غåµ’-¦ @  ],€¦?d »åeÚ¡N @  ]-€§?d X»å;ÙûH @  ].€¨?d ˜»å,ù¶ @  ]/€©?d Ø»åˆ@bU @  ]0€ª?d ¼å‘‘Z @  ]1€«?d X¼åW({ @  ]2€¬?d ˜¼åwè*… @  ]3€­?d ؼåBÞ+ @  ]4€®?d ½å’–§ù @  ]5€¯?d X½å©ÅŸ @  ]6€°?d ˜½å‰0í @  ]7€±?d ؽå·ý8î @  ]8€²?d ¾å*¹˜/ @  ]9€³?d X¾åìª! @  ]:€´?d ˜¾åÌ_#ð @  ];€µ?d ؾåùi"d @  ]<€¶?d ¿å)!®Œ @  ]=€·?d X¿åw"ôŠ @  ]>€¸?d ˜¿åW×öt @uÐÀå  ]?€¹?d Ø¿å?ýã @  ]@ º?d 0Àå[ ²N @  ]A »?d pÀå o @  ]B ¼?d °Àå½ë ‘ @  ]C ½?d ðÀåˆÝ @  ]D ¾?d 0ÁåX•„í @  ]E ¿?d pÁå!Ê @  ]F À?d °Áå.Ô’4 @  ]G Á?d ðÁå77 @  ]H Â?d 0Âå]—ö @  ]I Ã?d pÂåKN.× @  ]J Ä?d °Âåk»,) @  ]K Å?d ðÂå^-½ @  ]L Æ?d 0ÃåŽÅ¡U @  ]M Ç?d pÃåÐÆûS @  ]N È?d °Ãåð3ù­ @  ]O É?d ðÃåc_bN @  ]P Ê?d 0Äåz‘A @  ]Q Ë?d pÄå¼(` @  ]R Ì?d °Äåœ÷*ž @  ]S Í?d ðÄå©Á+  @  ]T Î?d 0Ååy‰§â @  ]U Ï?d pÅåBÚŸ @  ]V Ð?d °Ååb/ö @  ]W Ñ?d ðÅå\â8õ @  ]X Ò?d 0ÆåÁ¦˜4 @  ]Y Ó?d pÆåµ! @  ]Z Ô?d °Æå'@#ë @  ][ Õ?d ðÆåv" @  ]\ Ö?d 0ÇåÂ>®— @  ]] ×?d pÇåœ=ô‘ @  ]^ Ø?d °Çå¼Èöo @  ]_ Ù?d ðÇå>¢J< @  ]` Ú?d 0Èå ]Æ! @  ]a Û?d pÈåÌN @  ]b Ü?d °Èåì»}þ @  ]c Ý?d ðÈåÙ|j @  ]d Þ?d 0Éå Åð‚ @  ]e ß?d pÉå¯!ñ´ @  ]f à?d °ÉåÔóJ @  ]g á?d ðÉå±VI @  ]h â?d 0Êå,]öˆ @  ]i ã?d pÊåêNO© @  ]j ä?d °ÊåÊ»MW @  ]k å?d ðÊåÿLà @  ]l æ?d 0Ëå/ÅÀ+ @  ]m ç?d pËåqÆš- @  ]n è?d °ËåQ3˜Ó @  ]o é?d ðËåÂ_0 @  ]p ê?d 0ÌåÛð? @  ]q ë?d pÌåI @  ]r ì?d °Ìå=÷Kà @  ]s í?d ðÌåÁJt @  ]t î?d 0Íå؉Ɯ @  ]u ï?d pÍåãÚþv @  ]v ð?d °ÍåÃ/üˆ @  ]w ñ?d ðÍåýâY‹ @  ]x ò?d 0Îå`¦ùJ @  ]y ó?d pÎ妵@k @  ]z ô?d °Îå†@B• @  ]{ õ?d ðÎå³vC @  ]| ö?d 0Ïåc>Ïé @  ]} ÷?d pÏå==•ï @  ]~ ø?d °ÏåÈ— @  ] ù?d ðÏåÒóá @  ]€ ú?d 0Ðål-¡S @  ] û?d pÐåª>r @  ]‚ ü?d °ÐåŠËŒ @  ]ƒ ý?d ðÐå¿ý @  ]„ þ?d 0Ñåoµ—ð @  ]… ÿ?d pÑ従³¦ @  ]† ?d °Ñåžf±X @  ]‡ ?d ðÑå «[ @  ]ˆ ?d 0Òå=ï´š @  ]‰ ?d pÒåûü » @  ]Š ?d °ÒåÛ E @  ]‹ ?d ðÒåî?Ñ @  ]Œ ?d 0Óå>w‚9 @  ] ?d pÓå`tØ? @  ]Ž ?d °Óå@ÚÁ @  ]  ?d ðÓåÓíA" @  ]  ?d 0ÔåÊ£²- @  ]‘  ?d pÔå °  @  ]’  ?d °Ôå,E ò @  ]“  ?d ðÔåsf @  ]” ?d 0ÕåÉ;„Ž @  ]• ?d pÕåòh¼d @  ]– ?d °ÕåÒ¾š @  ]— ?d ðÕåìP™ @  ]˜ ?d 0Öåq»X @  ]™ ?d pÖå·y @  ]š ?d °Öå—ò‡ @  ]› ?d ðÖå¢Ä @  ]œ ?d 0×årŒû @  ] ?d p×å,×ý @  ]ž ?d °×å zÕ @  ]Ÿ ?d ð×åŽiP @  ]  ?d 0ØåºïåM @  ]¡ ?d pØå|ü\l @  ]¢ ?d °Øå\ ^’ @  ]£ ?d ðØåi?_ @  ]¤ ?d 0Ùå¹wÓî @  ]¥ ?d pÙå“ÒØ @  ]¦  ?d °Ùå?fÐ& @  ]§ !?d ðÙå«u% @  ]¨ "?d 0ÚåœïÕä @  ]© #?d pÚåZülÅ @  ]ª $?d °Úåz n; @  ]« %?d ðÚåO?o¯ @  ]¬ &?d 0ÛåŸwãG @  ]­ '?d pÛåÁt¹A @  ]® (?d °Ûåỿ @  ]¯ )?d ðÛårí \ @  ]° *?d 0Üåk£ÓS @  ]± +?d pÜå­°jr @  ]² ,?d °ÜåEhŒ @  ]³ -?d ðÜå¸si @  ]´ .?d 0Ýåh;åð @  ]µ /?d pÝåShÝ @  ]¶ 0?d °Ýåsßä @  ]· 1?d ðÝåMPzç @  ]¸ 2?d 0ÞåÐÚ& @  ]¹ 3?d pÞåc @  ]º 4?d °Þå6òaù @  ]» 5?d ðÞåÄ`m @  ]¼ 6?d 0ßåÓŒì… @  ]½ 7?d pß嶃 @  ]¾ 8?d uÐàå/°ßå­z´} @  ]¿ 9?d ðßå¸ÐÒi @  ]À:?d Hàå¡tŒŸ @  ]Á;?d ˆàåÅ ž @  ]Â<?d ÈàåG’7@ @  ]Ã=?d áå }­â @  ]Ä>?d Háå¢ìº< @  ]Å??d ˆáåV<»; @  ]Æ@?d ÈáåÔ­¬å @  ]ÇA?d âåõµ¾ù @  ]ÈB?d Hâåw$©' @  ]ÉC?d ˆâåS& @  ]ÊD?d Èâå‘Âø @  ]ËE?d ãåö-ˆZ @  ]ÌF?d Hãåt¼Ÿ„ @  ]ÍG?d ˆãåˆÛТ @  ]ÎH?d Èãå JÇ| @  ]ÏI?d äåù¸N @  ]ÐJ?d Häå€h¯ @  ]ÑK?d ˆäåä‘ @  ]ÒL?d ÈäåfŽO @  ]ÓM?d ååaŽí @  ]ÔN?d Hååƒð™3 @  ]ÕO?d ˆååÇ´ù @  ]ÖP?d Èåå˜V£' @  ]×Q?d æå¹N±; @  ]ØR?d Hæå;ߦå @  ]ÙS?d ˆæå_¨ ä @  ]ÚT?d ÈæåÝ9: @  ]ÛU?d çåºÖ‡˜ @  ]ÜV?d Hçå8GF @  ]ÝW?d ˆçåÄ ß` @  ]ÞX?d ÈçåF±È¾ @  ]ßY?d èårµï. @  ]àZ?d Hèåð$øð @  ]á[?d ˆèå”STñ @  ]â\?d€ Èèå×…´/ @  ^]?d éåQ+f¤ @  ^^?d HéåÓºqz @  ^_?d ˆéåsž @  ^`?d Èéåâ‰_ @  ^a?d êåHÄ9 @  ^b?d HêåýÙÓç @  ^c?d ˆêåW œ @  ^d?d ÈêåÕ7B @  ^ e?d ëåw+V  @  ^ f?d HëåõºAÓ @  ^ g?d ˆëåÌ”õ @  ^ h?d ÈëåNâÆ @  ^ i?d ìå%¥ün @  ^j?d Hìå§4ë° @  ^k?d ˆìå P&+ @  ^l?d Èìå"Á1õ @  ^m?d íå€gPº @  ^n?d HíåöGd @  ^o?d ˆíå^ˆ‘C @  ^p?d Èíå܆ @  ^q?d îå3³Ëû @  ^r?d Hîå±"Ü% @  ^s?d ˆîåç/^ @  ^t?d Èîå™v8€ @  ^u?d ïå;ÐYÏ @  ^v?d Hïå¹AN @  ^w?d ˆïå€oúÚ @  ^x?d Èïåþí @  ^y?d ðåÎμ @  ^z?d HðåL_«Ï @  ^{?d ˆðåZ=Aä @  ^ |?d ÈðåجV: @  ^!}?d ñåz 7u @  ^"~?d Hñåø› « @  ^#?d ˆñåÔÄŽÓ @  ^$€?d ÈñåVU™  @  ^%?d òå¹ÿÔk @  ^&‚?d Hòå;nõ @  ^'ƒ?d ˆòå‘«0Î @  ^(„?d Èòå:' @  ^)…?d ó屜F_ @  ^*†?d Hóå3 Q @  ^+‡?d ˆóå #åJ @  ^,ˆ?d Èó刲ò” @  ^-‰?d ôåãì< @  ^.Š?d Hôåaƒûâ @  ^/‹?d ˆôåfç6y @  ^0Œ?d Èôåäv!§ @  ^1?d õåFÐ@è @  ^2Ž?d HõåÄAW6 @  ^3?d ˆõå˜? @  ^4?d Èõå®–Ï @  ^5‘?d öåõÛ© @  ^6’?d Höåw•Ìw @  ^7“?d ˆöåÝP?  @  ^8”?d Èöå_Á(Ò @  ^9•?d ÷åýgI @  ^:–?d H÷åö^C @  ^;—?d ˆ÷åFØêˆ @  ^<˜?d È÷åÄIýV @  ^=™?d øå‚Xœì @  ^>š?d HøåÉ‹2 @  ^?›?d ˆøå¸¬g‹ @  ^@œ?d Èøå:=pU @  ^A?d ù嘛 @  ^Bž?d Hùå Ä @  ^CŸ?d ˆùåÛÃé? @  ^D ?d ÈùåYRþá @  ^E¡?d úå¶ø³‡ @  ^F¢?d Húå4i¤Y @  ^G£?d ˆú垬W" @  ^H¤?d Èúå=@ü @  ^I¥?d ûå¾›!³ @  ^J¦?d Hûå< 6m @  ^K§?d ˆûå$‚¦ @  ^L¨?d Èû凵•x @  ^M©?d üåì‹Ð @  ^Nª?d Hüån„œ @  ^O«?d ˆüåiàQ• @  ^P¬?d ÈüåëqFK @  ^Q­?d ýåI×' @  ^R®?d HýåËF0Ú @  ^S¯?d ˆýå—8æý @  ^T°?d Èýå©ñ# @  ^U±?d þåú¼E @  ^V²?d Hþåx’«› @  ^W³?d ˆþåÒWXà @  ^X´?d ÈþåPÆO> @  ^Yµ?d ÿåò`.q @  ^Z¶?d Hÿåpñ9¯ @  ^[·?d ˆÿåIßd @  ^\uÐæ¸?d Èÿåò‰Fo @  ^] ¹?d æ„–ãß @  ^^ º?d `æô @  ^_ »?d  æe* @  ^` ¼?d àæ’ô ô @  ^a ½?d æ0Rh» @  ^b ¾?d `æ²Ãe @  ^c ¿?d  æƒZ… @  ^d À?d àæË’Q @  ^e Á?d æîaß7 @  ^f Â?d `ælðÈé @  ^g Ã?d  æÆ5;’ @  ^h Ä?d àæD¤,L @  ^i Å?d ææM @  ^j Æ?d `æd“ZÝ @  ^k Ç?d  æ]½î @  ^l È?d àæß,ùÈ @  ^m É?d æ´Œç` @  ^n Ê?d `æ6ð¾ @  ^o Ë?d  æ1y=% @  ^p Ì?d àæ³è*û @  ^q Í?d æNK´ @  ^r Î?d `æ“ß\j @  ^s Ï?d  æÏ¡ŠM @  ^t Ð?d àæM0“ @  ^u Ñ?d 梚Ðõ @  ^v Ò?d `æ Ç+ @  ^w Ó?d  æŠÎ4P @  ^x Ô?d àæ_#Ž @  ^y Õ?d æªùBÁ @  ^z Ö?d `æ(hU @  ^{ ×?d  æFáÔ @  ^| Ø?d àæ“×ö  @  ^} Ù?d æÕÆ—° @  ^~ Ú?d `æWW€n @  ^ Û?d  æ d\æ @  ^€ Ü?d àæŽõK8 @  ^ Ý?d æ,S*w @  ^‚ Þ?d ` æ®Â=© @  ^ƒ ß?d   æo ÒR @  ^„ à?d à æíšÅŒ @  ^… á?d æ0ˆê @  ^† â?d ` 怡Ÿ4 @  ^‡ ã?d   æ*dlO @  ^ˆ ä?d à æ¨õ{‘ @  ^‰ å?d æ SÞ @  ^Š æ?d ` æˆÂ  @  ^‹ ç?d   æ±ì¹Ë @  ^Œ è?d à æ3}® @  ^ é?d æXݰ½ @  ^Ž ê?d ` æÚL§c @  ^ ë?d   æÝ(jø @  ^ ì?d à æ_¹}& @  ^‘ í?d æýi @  ^’ î?d ` æŽ · @  ^“ ï?d   æ#ðÝ @  ^” ð?d à æ¡aÊN @  ^• ñ?d æNˇ( @  ^– ò?d `æÌZö @  ^— ó?d  æfŸc @  ^˜ ô?d àæätS @  ^™ õ?d æF¨ @  ^š ö?d `æÄ9 @  ^› ÷?d  æý¶  @  ^œ ø?d àæ†¡× @  ^ ù?d æ³¶ð @  ^ž ú?d `æ1'ç @  ^Ÿ û?d  æ'E 7 @  ^  ü?d àæ¥Ôé @  ^¡ ý?d ær{¦ @  ^¢ þ?d `æ…ãlx @  ^£ ÿ?d  æÖÛ—  @  ^¤ ?d àæTJ€Ò @  ^¥ ?d æ»àÍ´ @  ^¦ ?d `æ9qÚj @  ^§ ?d  æ“´) @  ^¨ ?d àæ%>Ï @  ^© ?d 泃_€ @  ^ª ?d `æ1H^ @  ^« ?d  æ<ü• @  ^¬ ?d àæŠ­ëK @  ^­  ?d æá õã @  ^®  ?d `æcœâ= @  ^¯  ?d  ædø/¦ @  ^°  ?d àææi8x @  ^±  ?d æDÏY7 @  ^² ?d `æÆ^Né @  ^³ ?d  æš ˜Î @  ^´ ?d àæ± @  ^µ ?d æ÷Âv @  ^¶ ?d `æuŠÕ¨ @  ^· ?d  æßO&Ó @  ^¸ ?d àæ]Þ1  @  ^¹ ?d æÿxPB @  ^º ?d `æ}éGœ @  ^» ?d  æDÇóW @  ^¼ ?d àæÆVä‰ @  ^½ ?d æ€G…3 @  ^¾ ?d `æÖ’í @  ^¿ ?d  æº³~T @  ^À ?d àæ8"iŠ @  ^Á ?d 暄Š@  ^ ?d `æ @  ^à ?d  æÙÜðà @  ^Ä  ?d àæ[Mç> @  ^Å !?d æ´çªX @  ^Æ "?d `æ6v½† @  ^Ç #?d  æœ³Ný @  ^È $?d àæ"Y# @  ^É %?d 漄8l @  ^Ê &?d `æ>/² @  ^Ë '?d  æ;›y @  ^Ì (?d àæ…ªŒ§ @  ^Í )?d æî ’ @  ^Î *?d `æl›…Ñ @  ^Ï +?d  ækÿHJ @  ^Ð ,?d àæén_” @  ^Ñ -?d æKÈ>Û @  ^Ò .?d `æÉY) @  ^Ó /?d  æ•'ÿ" @  ^Ô 0?d àæ¶èü @  ^Õ 1?d æø¥š @  ^Ö 2?d `æz²D @  ^× 3?d  æÐHA? @  ^Ø 4?d àæRÙVá @  ^Ù 5?d æð7® @  ^Ú 6?d `ærî p @  ^Û 7?d  æKÀ”»uÐ æ @  ^Ü 8?d àæð–_° @  ^Ý9?d 8 æóslq @  ^Þ:?d x æqâ{¯ @  ^ß;?d ¸ æg€‘„ @  ^à<?d ø æå†Z @  ^á=?d 8!æG·ç @  ^â>?d€ x!æ±åìm @  _??d ¸!æa=^® @  _@?d ø!æã¬Ip @  _A?d 8"æÉOÿû @  _B?d x"æKÞè% @  _C?d ¸"æ/©D$ @  _D?d ø"æ­8Sú @  _E?d 8#æÁ,mÏ @  _F?d x#æC½z @  _ G?d ¸#æ¿Ú57 @  _ H?d ø#æ=K"é @  _ I?d 8$擢Ǭ @  _ J?d x$æ3Ðr @  _ K?d ¸$æuD|s @  _L?d ø$æ÷Õk­ @  _M?d 8%æ6`kx @  _N?d x%æ´ñ|¦ @  _O?d ¸%æ-ÆQl @  _P?d ø%æ¯WF² @  _Q?d 8&æ…´ð9 @  _R?d x&æ%çç @  _S?d ¸&æcRKæ @  _T?d ø&æáÃ\8 @  _U?d 8'æ×b  @  _V?d x'æFuÓ @  _W?d ¸'æó!:õ @  _X?d ø'æq°-+ @  _Y?d 8(æòè·| @  _Z?d x(æpy ¢ @  _[?d ¸(æ £ @  _\?d ø(æ–Ÿ} @  _]?d 8)æF,< @  _ ^?d x)æĽ+Æ @  _!_?d ¸)æÀ=?Ð @  _"`?d ø)æB¬( @  _#a?d 8*æhOž… @  _$b?d x*æêÞ‰[ @  _%c?d ¸*掩%Z @  _&d?d ø*æ 82„ @  _'e?d 8+æ`, ± @  _(f?d x+æâ½o @  _)g?d ¸+æÚTI @  _*h?d ø+æœKC— @  _+i?d 8,æ2¢¦Ò @  _,j?d x,æ°3±  @  _-k?d ¸,æÔD  @  _.l?d ø,æVÕ Ó @  _/m?d 8-æ—`  @  _0n?d x-æñØ @  _1o?d ¸-æŒÆ0 @  _2p?d ø-æW'Ì @  _3q?d 8.æ$´‘G @  _4r?d x.æ¦%†™ @  _5s?d ¸.æÂR*˜ @  _6t?d ø.æ@Ã=F @  _7u?d 8/æ,×s @  _8v?d x/æ®F­ @  _9w?d ¸/æR![‹ @  _:x?d ø/æаLU @  _;y?d 80æÙÉæ­ @  _<z?d x0æ[Xñs @  _={?d ¸0æ?/]r @  _>|?d ø0æ½¾J¬ @  _?}?d 81æà k[ @  _@~?d x1æA›|… @  _A?d ¸1æ¨) @  _B€?d ø1æ*>Î @  _C?d 82æÿˆE @  _D‚?d x2æ‚nŸ› @  _Eƒ?d ¸2ææ3š @  _F„?d ø2ædˆ$D @  _G…?d 83æœq @  _H†?d x3æŠ ¯ @  _I‡?d ¸3ævjB‰ @  _Jˆ?d ø3æôûUW @  _K‰?d 84æZ° @  _LŠ?d x4æ؃§Ì @  _M‹?d ¸4æ¼ô Í @  _NŒ?d ø4æ>e @  _O?d 85æÿÐÆ @  _PŽ?d x5æ}A  @  _Q?d ¸5æäv&Ò @  _R?d ø5æfç1  @  _S‘?d 86æL‡‡ @  _T’?d x6æΕY @  _U“?d ¸6æªâæíæù @  _t²?d x>æo•ñ' @  _u³?d ¸>æ â]& @  _v´?d ø>æ‰sJø @  _wµ?d 8?æågtÍ @  _x¶?d x?ægöc @  _y·?duÐ@æ7 ¸?曑,5 @  _z¸?d ø?æ;ë @  _{¹?d P@æm — @  _|º?d @æMþ•c @  _}»?d Ð@æ‹í,B @  _~¼?d Aæ[¥ ª @  _½?d PA攞*Z @  _€¾?d Aæ´k(¤ @  _¿?d ÐAæâß<ƒ @  _‚À?d B曜B @  _ƒÁ?d PBæJ­Ö @  _„Â?d BæjXŸ( @  _…Ã?d ÐBæ¬K&  @  _†Ä?d Cæ|ªá @  _‡Å?d PCæBÎâ @  _ˆÆ?d Cæb;  @  _‰Ç?d ÐCæ<8W @  _ŠÈ?d Dæ%v¤ @  _‹É?d PDæ@¥ @  _ŒÊ?d Dæ0µ§ @  _Ë?d ÐDæö¦^ @  _ŽÌ?d Eæ&î’¶ @  _Í?d PE浂 U @  _Î?d Eæ•w « @  _‘Ï?d ÐEæ®$3A @  _’Ð?d Fæ3`“€ @  _“Ñ?d PFæV’ @  _”Ò?d Fæ&£ê @  _•Ó?d ÐFæà°)Ë @  _–Ô?d Gæ0ø¥# @  _—Õ?d PGæ5  @  _˜Ö?d Gæ.ÀÞ @  _™×?d ÐGæpÃXØ @  _šØ?d HæD<ÔÅ @  _›Ù?d PHæq ÕQ @  _œÚ?d HæQÿׯ @  _Û?d ÐHæ—ìnŽ @  _žÜ?d IæG¤âf @  _ŸÝ?d PIæÅÎ^5 @  _ Þ?d Iæå;\Ë @  _¡ß?d ÐIæCß]ý @  _¢à?d JæÞ›ý< @  _£á?d PJæë­ü¨ @  _¤â?d JæËXþV @  _¥ã?d ÐJæ KGw @  _¦ä?d KæÝËŸ @  _§å?d PKæãÎnœ @  _¨æ?d KæÃ;lb @  _©ç?d ÐKæ86d @  _ªè?d Læ„vÅk @  _«é?d PLæ±@Äÿ @  _¬ê?d Læ‘µÆ @  _­ë?d ÐLæW¦  @  _®ì?d Mæ‡îóÈ @  _¯í?d PMæ‚h+ @  _°î?d Mæ4wjÕ @  _±ï?d ÐMæ$R? @  _²ð?d Næ’`òþ @  _³ñ?d PNæ§Vój @  _´ò?d N懣ñ” @  _µó?d ÐNæA°Hµ @  _¶ô?d Oæ‘øÄ] @  _·õ?d POæ¯5a^ @  _¸ö?d OæÀc  @  _¹÷?d ÐOæÑÃ9¦ @  _ºø?d Pæo… @  _»ù?d PPæZ+„€ @  _¼ú?d PæzÞ†~ @  _½û?d ÐPæ¼Í?_ @  _¾ü?d Qæl…³· @  _¿ý?d PQæ@è v @  _Àþ?d Qæ` ˆ @  _Áÿ?d ÐQææ*+ @  _Â?d Ræ{n‹Õ @  _Ã?d PRæNXŠA @  _Ä?d Ræn­ˆ¿ @  _Å?d ÐR樾1ž @  _Æ?d Sæxö½v @  _Ç?d PSæF;u @  _È?d Sæf΋ @  _É?d ÐSæ8Í@ @  _Ê?d Tæ!ƒ³‚ @  _Ë ?d PTæµ² @  _Ì ?d Tæ4@°è @  _Í ?d ÐTæòS É @  _Î ?d Uæ"…! @  _Ï ?d PUæ±w @  _Ð?d Uæ‘‚< @  _Ñ?d ÐUæªÑ$Ö @  _Ò?d Væ7•„ @  _Ó?d PV棅ƒ @  _Ô?d Væ"V‡} @  _Õ?d ÐVæäE>\ @  _Ö?d Wæ4 ²´ @  _×?d PWæ À· @  _Ø?d Wæ*5I @  _Ù?d ÐWæt6OO @  _Ú?d Xæ@ÉÃR @  _Û?d PXæuÿÂÆ @  _Ü?d XæU À8 @  _Ý?d ÐXæ“y @  _Þ?d YæCQõñ @  _ß?d PYæÁ;I¢ @  _à?d YæáÎK\ @  _á?d ÐYæG*Jj @  _â ?d€ Zæâ‹ @  `!?d PZæ6gQ6 @  `"?d Zæ’SÈ @  `#?d ÐZæÈ @  `$?d [æÅ€ì @  `%?d P[æ5ÿg• @  `&?d [æ ek @  `'?d Ð[æ…»` @  `(?d \æœõ“ @  ` )?d P\ælŠia @  ` *?d \æLkŸ @  ` +?d Ð\æO%)S @  ` ,?d ]æŸm¥» @  ` -?d P]æo_ @  `.?d ]æOç]< @  `/?d Ð]æ§L @  `0?d ^æŠã¤ @  `1?d P^æzœ^ô @  `2?d ^æZi\  @  `3?d Ð^æY3Æ @  `4?d _æ‰{’. @  `5?d P_æyhW @  `6?d _æYñj© @  `uÐ`æ7?d Ð_æÉ@oÕ @  `8?d (`æw¸ÚM @  `9?d h`æ‡Ç 4 @  `:?d ¨`æ§2"Ê @  `;?d è`æ¤h` @  `<?d (aæt ìî @  `=?d haæ„_— @  `>?d ¨a椪i @  `??d èaæ€ Fd @  ` @?d (bæOæ¥ @  `!A?d hbæí0Ü @  `"B?d ¨bæÍÅ" @  `#C?d èbæΟ\î @  `$D?d (cæ×Ð @  `%E?d hcæî¨* @  `&F?d ¨cæÎ]( @  `'G?d ècæ^ì-ý @  `(H?d (dæG¢Þò @  `)I?d hdæ·Ý$‹ @  `*J?d ¨dæ—(&u @  `+K?d èdæ”rd¹ @  `,L?d (eæD:èQ @  `-M?d heæ´E( @  `.N?d ¨eæ”°Ö @  `/O?d èeæÌðI¦ @  `0P?d (fæQ´ég @  `1Q?d hfæ¡Ë @  `2R?d ¨fæ>à @  `3S?d èfæ‚dS, @  `4T?d (gæR,ßÄ @  `5U?d hgæ¢S%½ @  `6V?d ¨g悦'C @  `7W?d ègæ"? @  `8X?d (hæ&è®" @  `9Y?d hhæÖ—T[ @  `:Z?d ¨hæöbV¥ @  `;[?d èhæõ8i @  `<\?d (iæ%p˜ @  `=]?d hiæÕbø @  `>^?d ¨iæõú` @  `?_?d èiæ !ˆ @  `@`?d (jæHI @  `Aa?d hjæâ7{0 @  `Bb?d ¨jæÂÂyÎ @  `Cc?d èjæÁ˜; @  `Dd?d (kæзê @  `Ee?d hkæá¯M“ @  `Ff?d ¨kæÁZOm @  `Gg?d èkæQëJ @  `Hh?d (læH¥¹ @  `Ii?d hlæ¸ÚCg @  `Jj?d ¨læ˜/A™ @  `Kk?d èlæ›uU @  `Ll?d (mæK=½ @  `Mm?d hmæ»BuÄ @  `Nn?d ¨mæ›·w: @  `Oo?d èmæÃ÷.J @  `Pp?d (næ^³Ž‹ @  `Qq?d hnæ®Ìtò @  `Rr?d ¨næŽ9v  @  `Ss?d ènæc4À @  `Tt?d (oæ]+¸( @  `Uu?d hoæ­TBQ @  `Vv?d ¨oæ¡@¯ @  `Ww?d èoæEÓ @  `Xx?d (pæ£Îùa @  `Yy?d hpæS± @  `Zz?d ¨pæsDæ @  `[{?d èpæpC* @  `\|?d (qæ VÏ @  `]}?d hqæP)5» @  `^~?d ¨qæpÜ7E @  `_?d èqæI»1Ú @  ``€?d (ræÔÿ‘ @  `a?d hræ$€kb @  `b‚?d ¨ræuiœ @  `cƒ?d èræ/+P @  `d„?d (sæ×g§¸ @  `e…?d hsæ']Á @  `f†?d ¨sæí_? @  `g‡?d èsæ—\ZC @  `hˆ?d (t掩L @  `i‰?d htæ~mS5 @  `jŠ?d ¨tæ^˜QË @  `k‹?d ètæ] @  `lŒ?d (u抟ï @  `m?d huæ}õe– @  `nŽ?d ¨uæ]gh @  `o?d èuæ@> @  `p?d (v昞٠@  `q‘?d hvæh{d  @  `r’?d ¨væHŽf^ @  `s“?d èvæKÔ$’ @  `t”?d (w曜¨z @  `u•?d hwækãR @  `v–?d ¨wæKPý @  `w—?d èwæÛ§U @  `x˜?d (xæïXÙœ @  `y™?d hxæ'#å @  `zš?d ¨xæ?Ò! @  `{›?d èxæ<ˆc× @  `|œ?d (yæìÀï? @  `}?d hyæ¿F @  `~ž?d ¨yæA @  `ƒ£?d èzæë~| @  `„¤?d ({æ;6ðe @  `…¥?d h{æËI  @  `†¦?d ¨{æë¼â @  `‡§?d è{æ{ ž @  `ˆ¨?d (|æbCþ‘ @  `‰©?d h|æ’<è @  `Šª?d ¨|æ²É @  `‹«?d è|汓DÚ @  `Œ¬?d (}æaÛÈ2 @  `­?d h}摤2K @  `Ž®?d ¨}æ±Q0µ @  `¯?d è}æéiÅ @  `°?d (~ætUÉ @  `‘±?d h~æ„*3} @  `’²?d ¨~æ¤ß1ƒ @  `“³?d è~æ§…sO @  `”´?d (æwÍÿ§ @  `•µ?d hæ‡²Þ @  `–¶?d ¨æuЀæ'§G  @  `—·?d èæ7ö\ @  `˜¸?d @€æYHà( @  `™¹?d €€æ Sq @  `šº?d À€æ‰Â¯ @  `›»?d æØAÁU @  `œ¼?d @æZÐÖ‹ @  `½?d €æË9Ò @  `ž¾?d ÀæŠZ.  @  `Ÿ¿?d ‚æ±.Ë @  ` À?d @‚æ3¿ÜÀ @  `¡Á?d €‚æa¤3™ @  `¢Â?d À‚æã5$G @  `£Ã?d ƒæ²¶ý½ @  `¤Ä?d @ƒæ0'êc @  `¥Å?d €ƒæb<: @  `¦Æ?d Àƒæà­ä @  `§Ç?d „æëÃóI @  `¨È?d @„æiRä— @  `©É?d €„æ;I Î @  `ªÊ?d À„æ¹Ø @  `«Ë?d …æè[Åê @  `¬Ì?d @…æjÊÒ4 @  `­Í?d €…æ8Ñ=m @  `®Î?d À…æº@*³ @  `¯Ï?d †æýÕÄÜ @  `°Ð?d @†æDÓ @  `±Ñ?d €†æ-_<[ @  `²Ò?d À†æ¯Î+… @  `³Ó?d ‡æþMò @  `´Ô?d @‡æ|Üå¡ @  `µÕ?d €‡æ.Ç ø @  `¶Ö?d À‡æ¬V& @  `·×?d ˆæЉƒ™ @  `¸Ø?d @ˆæ”G @  `¹Ù?d €ˆæZ{ @  `ºÚ?d ÀˆæØ’lÀ @  `»Û?d ‰æ‰µ: @  `¼Ü?d @‰æ €¢ä @  `½Ý?d €‰æY›M½ @  `¾Þ?d À‰æÛ Zc @  `¿ß?d Šæ¾)¬ò @  `Àà?d @Šæ<¸», @  `Áá?d €Šæn£Tu @  `Ââ?d ÀŠæì2C« @  `Ãã?d ‹æ½±šQ @  `Ää?d @‹æ?  @  `Åå?d €‹æm;bÖ @  `Ææ?d À‹æïªu @  `Çç?d ŒæäÄ”¥ @  `Èè?d @ŒæfUƒ{ @  `Éé?d €Œæ4Nl" @  `Êê?d ÀŒæ¶ß{ü @  `Ëë?d æç\¢ @  `Ìì?d @æe͵Ø @  `Íí?d €æ7ÖZ @  `Îî?d ÀæµGM_ @  `Ïï?d ŽæòÒ£0 @  `Ðð?d @ŽæpC´î @  `Ññ?d €Žæ"X[· @  `Òò?d ÀŽæ ÉLi @  `Óó?d æñJ•“ @  `Ôô?d @æsÛ‚M @  `Õõ?d €æ!Àm @  `Öö?d Àæ£QzÊ @  `×÷?d æ¯ÔÚ @  `Øø?d @æ>à @  `Ùù?d €æß%,] @  `Úú?d Àæ]´;ƒ @  `Ûû?d ‘æ 7ây @  `Üü?d @‘æަõ§ @  `Ýý?d €‘æܽþ @  `Þþ?d À‘æ^,  @  `ßÿ?d ’æùé¬ @  `à?d @’æ…hþr @  `á?d €’æ×s+ @  `â?d€ À’æ!!S @  a?d “æ‘ã‹€ @  a?d @“ærœ^ @  a?d €“æ„ ˆê @  a?d À“江4 @  a?d ”æÃm!ã @  a?d @”æAü6= @  a ?d €”æÝU† @  a ?d À”æ_Ä‘À @  a  ?d •æË³× @  a  ?d @•æIŸ¤  @  a  ?d €•æÞͰ½ @  a ?d À•æ\\§c @  a ?d –æxÚ(– @  a?d @–æúK?H @  a?d €–æËC±‹ @  a?d À–æIÒ¦U @  a?d —æÝ„B @  a?d @—æ_‰“œ @  a?d €—æÈÛ‡( @  a?d À—æJJö @  a?d ˜æ¢'Q3 @  a?d @˜æ ¶Fí @  a?d €˜æ¼öÎ @  a?d À˜æ>Žá @  a?d ™æªDà @  a?d @™æ(ÕÔÙ @  a?d €™æ¿‡Àm @  a?d À™æ=׳ @  a?d šæ„'aš @  a ?d @šæ¶vD @  a!?d €šæ&¸ß7 @  a "?d Àšæ¤)Èé @  a!#?d ›æ0ãêþ @  a"$?d @›æ²rý  @  a#%?d €›æ% é” @  a$&?d À›æ§±þJ @  a%'?d œæbm@ @  a&(?d @œæàüWC @  a')?d €œæ|Uç` @  a(*?d ÀœæþÄð¾ @  a)+?d æjÒ© @  a*,?d @æèŸÅw @  a+-?d €æÍÑà @  a,.?d Àæý\Æ @  a-/?d žæÙÚIè @  a.0?d @žæ[K^6 @  a/1?d €žæjCÐõ @  a02?d ÀžæèÒÇ+ @  a13?d Ÿæ|å< @  a24?d @Ÿæþ‰òâ @  a35?d €ŸæiÛæV @  a46uРæ?d ÀŸæëJñˆ @  a57?d  æFÓb6 @  a68?d X æÄBuè @  a79?d ˜ æXëÅË @  a8:?d Ø æÚzÒ @  a9;?d ¡æN°ð @  a:<?d X¡æÌ!çÜ @  a;=?d ˜¡æ[sóh @  a<>?d Ø¡æÙâä¶ @  a=??d ¢æƒGŽ @  a>@?d X¢æPP @  a?A?d ˜¢æœÿ± @  a@B?d Ø¢æŠèo @  aAC?d £æŠ@Êx @  aBD?d X£æÑݦ @  aCE?d ˜£æŸƒÉ @  aDF?d Ø£æÞÌ @  aEG?d ¤æØÎ` @  aFH?d X¤æZ_wÅ @  aGI?d ˜¤æÆöÇæ @  aHJ?d ؤæDgÐ8 @  aIK?d ¥æЭò/ @  aJL?d X¥æR<åñ @  aKM?d ˜¥æÅnñE @  aLN?d Ø¥æGÿæ› @  aMO?d ¦æcyin @  aNP?d X¦æáè~° @  aOQ?d ˜¦æÐàðs @  aPR?d ئæRqç­ @  aQS?d §æƻź @  aRT?d X§æD*Òd @  aSU?d ˜§æÓxÆÐ @  aTV?d اæQéÑ @  aUW?d ¨æ¹„Ë @  aVX?d X¨æ; @  aWY?d ˜¨æ§¼·6 @  aXZ?d بæ%- è @  aY[?d ©æ±ç‚ÿ @  aZ\?d X©æ3v•! @  a[]?d ˜©æ¤$• @  a\^?d Ø©æ&µ–K @  a]_?d ªæŸ„ b @  a^`?d Xªæ7¼ @  a_a?d ˜ªæ=žÏ @  a`b?d ت濊‰ @  aac?d «æ+@« @  abd?d X«æ©Ñ¼Ø @  ace?d ˜«æ>ƒ¨l @  adf?d ث漿² @  aeg?d ¬æyÎe @  afh?d X¬æû_» @  agi?d ˜¬ægö¦˜ @  ahj?d جæåg±F @  aik?d ­æq­“Q @  ajl?d X­æó<„ @  akm?d ˜­ædn; @  aln?d Ø­ææÿ‡å @  amo?d ®æÂy @  anp?d X®æ@èÎ @  aoq?d ˜®æqà‘  @  apr?d Ø®æóq†Ó @  aqs?d ¯æg»¤Ä @  art?d X¯æå*³ @  asu?d ˜¯ærx§® @  atv?d دæðé°p @  auw?d °æ’¥A @  avx?d X°æ4VÄ @  awy?d ˜°æŒæç @  axz?d ذæ ñ9 @  ay{?d ±æšÆÓ. @  az|?d X±æWÄð @  a{}?d ˜±æÐD @  a|~?d رæ ”Çš @  a}?d ²æY300 @  a~€?d X²æÛ¢'î @  a?d ˜²æ¶ý¸> @  a€‚?d زæ4l¯à @  aƒ?d ³æ ¦÷ @  a‚„?d X³æ"7š) @  aƒ…?d ˜³æµeŽ @  a„†?d سæ7ô™C @  a…‡?d ´æò('” @  a†ˆ?d X´æp¹0J @  a‡‰?d ˜´æì€i @  aˆŠ?d Ø´æn—· @  a‰‹?d µæúKµ  @  aŠŒ?d XµæxÚ¢~ @  a‹?d ˜µæÊ @  aŒŽ?d صæm¡ @  a?d ¶æIŸ.á @  aŽ?d X¶æË9? @  a‘?d ˜¶æú·ü @  a’?d ضæx— " @  a‘“?d ·æì]‚5 @  a’”?d X·ænÌ•ë @  a“•?d ˜·æùž_ @  a”–?d Ø·æ{– @  a•—?d ¸æ“bWD @  a–˜?d X¸æó@š @  a—™?d ˜¸æZð¹ @  a˜š?d ظæËçg @  a™›?d ¹æ›Åp @  ašœ?d X¹æÒ® @  a›?d ˜¹æŽÂÆ @  aœž?d عæ SÑÄ @  aŸ?d ºæµbgí @  až ?d Xºæ7óp3 @  aŸ¡?d ˜ºæýÙ@ @  a ¢?d غæ•lΞ @  a¡£?d »æ¦ì‰ @  a¢¤?d X»æƒ7ûW @  a£¥?d ˜»æeïã @  a¤¦?d Ø»æ–ôø= @  a¥§?d ¼æS(Fê @  a¦¨?d X¼æѹQ4 @  a§©?d ˜¼æMá @  a¨ª?d ؼæÏöÉ @  a©«?d ½æ[KÔÞ @  aª¬?d X½æÙÚà @  a«­?d ˜½æNˆ×´ @  a¬®?d ؽæÌÀj @  a­¯?d ¾æèŸOŸ @  a®°?d X¾æjXA @  a¯±?d ˜¾æ[Ö‚ @  a°²?d ؾæÙ—Á\ @  a±³?d ¿æM]ãK @  a²´?d X¿æÏÌô• @  a³µ?d ˜¿æXžà! @uÐÀæ  a´¶?d Ø¿æãÈ+* @  aµ ·?d 0Àæ[ª7  @  a¶ ¸?d pÀæÙ; ~ @  a· ¹?d °ÀæE’] @  a¸ º?d ðÀæÇ‡ƒ @  a¹ »?d 0ÁæSÉ¥” @  aº ¼?d pÁæÑX²J @  a» ½?d °ÁæF ¦þ @  a¼ ¾?d ðÁæÄ›±  @  a½ ¿?d 0Âæú @  a¾ À?d pÂækÆ @  a¿ Á?d °Âæbª' @  aÀ Â?d ðÂæó½ù @  aÁ Ã?d 0Ãæ—9Ÿî @  a Ä?d pÃæ¨ˆ0 @  aà Å?d °Ãæ‚úœ„ @  aÄ Æ?d ðÃæk‹Z @  aÅ Ç?d 0Ŀŷ5 @  aÆ È?d pÄæG&"S @  aÇ É?d °ÄæÛ’p @  aÈ Ê?d ðÄæY…® @  aÉ Ë?d 0ÅæÍÔ§¹ @  aÊ Ì?d pÅæOE°g @  aË Í?d °ÅæØ¤Ó @  aÌ Î?d ðÅæZ†³  @  aÍ Ï?d 0Ææ~<ø @  aÎ Ð?d pÆæü‘+& @  aÏ Ñ?d °ÆæÍ™¥å @  aÐ Ò?d ðÆæO²; @  aÑ Ó?d 0ÇæÛÂ, @  aÒ Ô?d pÇæYS‡ò @  aÓ Õ?d °ÇæÎ“F @  aÔ Ö?d ðÇæL„˜ @  aÕ ×?d 0Èæ¤ýE] @  aÖ Ø?d pÈæ&lRƒ @  a× Ù?d °ÈæºÅâ  @  aØ Ú?d ðÈæ8Tõ~ @  aÙ Û?d 0Éæ¬ž×i @  aÚ Ü?d pÉæ.À· @  aÛ Ý?d °Éæ¹]Ô @  aÜ Þ?d ðÉæ;ÌÃÝ @  aÝ ß?d 0Êæ‚ýuô @  aÞ à?d pÊælb* @  aß á?d °Êæ bËY @  aà â?d ðÊæ¢ó܇ @  aá ã?d 0Ëæ69þ @  aâ ä?d€ pËæuïN @  b å?d °ËæüBÓ @  b æ?d ðËæmU  @  b ç?d 0Ìæø7 @  b è?d pÌæié @  b é?d °ÌæQrè° @  b ê?d ðÌæÓãÿn @  b ë?d 0Íæ‰›‚ @  b ì?d pÍæ •Ý @  b í?d °ÍæYz„ @  b î?d ðÍæÛ€mZ @  b ï?d 0Îæ:OB @  b ð?d pÎæ¸Þœ @  b ñ?d °ÎæêÅáÅ @  b ò?d ðÎæhTö @  b ó?d 0ÏæŸµ– @  b ô?d pÏæ¢H @  b õ?d °ÏæOM @  b ö?d ðÏæÍ–ZÏ @  b ÷?d 0Ðæj“PH @  b ø?d pÐæèG– @  b ù?d °Ðæº¨Ï @  b ú?d ðÐæ8ˆ¿ @  b û?d 0ÑæbðÂ| @  b ü?d pÑæàaÕ¢ @  b ý?d °Ñæ²z:û @  b þ?d ðÑæ0ë-% @  b ÿ?d 0ÒæâkKø @  b ?d pÒæ`ú\& @  b ?d °Òæ2á³ @  b ?d ðÒæ°p¤¡ @  b ?d 0ÓæV¯Àœ @  b ?d pÓæÔ>×B @  b! ?d °Óæ†%8 @  b" ?d ðÓæ´/Å @  b# ?d 0Ôæ!jÿ @  b$ ?d pÔæ†°}! @  b%  ?d °ÔæÔ«’x @  b&  ?d ðÔæV:…¦ @  b'  ?d 0Õæ BøË @  b(  ?d pÕæŽÓï @  b)  ?d °ÕæÜÈL @  b* ?d ðÕæ^Y’ @  b+ ?d 0Öæ¿–cŠ @  b, ?d pÖæ=tT @  b- ?d °Öæo›  @  b. ?d ðÖæíŒÓ @  b/ ?d 0׿TÏ^ @  b0 ?d p׿˜ÅØ€ @  b1 ?d °×æÊÞ7Ù @  b2 ?d ð׿HO  @  b3 ?d 0Øæek/ @  b4 ?d pØæçú ñ @  b5 ?d °Øæµá⨠@  b6 ?d ðØæ7põv @  b7 ?d 0Ùæmˆ @  b8 ?d pÙæÅ @  b9 ?d °Ù潂pœ @  b: ?d ðÙæ?gB @  b; ?d 0ÚæCk*† @  b<  ?d pÚæÁú=X @  b= !?d °Úæ“áÒ @  b> "?d ðÚæpÅß @  b? #?d 0ÛæY¨§p @  b@ $?d pÛæÛ9°® @  bA %?d °Ûæ‰"_÷ @  bB &?d ðÛæ ³H) @  bC '?d 0Üæ &  @  bD (?d pÜæ‰·Í @  bE )?d °ÜæÛ¬õ” @  bF *?d ðÜæY=âJ @  bG +?d 0ÝæEŸ' @  bH ,?d pÝæÔˆù @  bI -?d °ÝæÓÏg  @  bJ .?d ðÝæQ^p~ @  bK /?d 0Þæ°‘f @  bL 0?d pÞæ2¸ @  bM 1?d °Þæ`üá @  bN 2?d ðÞæâŠë? @  bO 3?d 0ßæS¨² @  bP 4?d pßæ—¿l @  bQ 5?d uÐàæ/°ßæÅÙP5 @  bR 6?d ðßæGHGë @  bS 7?d HàæG7¯( @  bT 8?d ˆàæg­Ö @  bU 9?d Èàæ—½W¯ @  bV :?d áæGõÛG @  bW ;?d HáæOT= @  bX <?d ˆáæo¡?â @  bY =?d ÈáæŸÞÅ› @  bZ >?d âæšeZ @  b[ ??d Hâæ‘gŠ @  b\ @?d ˆâæ±’ˆn @  b] A?d ÈâæAír @  b^ B?d ãæ‘¥þÿ @  b_ C?d Hãæ%£ô @  b` D?d ˆãæV  @  ba E?d Èãæõ)ùs @  bb F?d äæìg | @  bc G?d Häæw-«— @  bd H?d ˆäæWØ©i @  be I?d Èäæ§§S @  bf J?d åæwïßø @  bg K?d HåæN9£ @  bh L?d ˆåæ_»;] @  bi M?d È忝ÄÁ$ @  bj N?d ææ2€aå @  bk O?d HææÌš¢â @  bl P?d ˆææìo  @  bm Q?d ÈææZe @  bn R?d çæÌXÖ @  bo S?d HçæiX6 @  bp T?d ˆçæI­ È @  bq U?d Èçæ¹Òö± @  br V?d èæ-z¬ @  bs W?d HèægÛG @  bt X?d ˆèæ6’Ù¹ @  bu Y?d ÈèæÆí#À @  bv Z?d 鿥¯( @  bw [?d HéæIs @  bx \?d ˆéæ>ñK @  by ]?d ÈéæÎޱô @  bz ^?d êæSÊ5 @  b{ _?d Hêæ0gëî @  b| `?d ˆêæ’é @  b} a?d Èêæàíi @  b~ b?d ëæ0¥Ÿ @  b c?d HëæÉòV) @  b€ d?d ˆëæéT× @  b e?d Èëæx®® @  b‚ f?d ìæ6]¡ @  bƒ g?d Hìæ›|üJ @  b„ h?d ˆì滉þ´ @  b… i?d ÈìæKöÍ @  b† j?d íæ›¾ˆ% @  b‡ k?d Híæ“n~ @  bˆ l?d ˆíæ³êl€ @  b‰ m?d ÈíæC•–ù @  bŠ n?d îæÞÑ68 @  b‹ o?d Hîæ Ëõ? @  bŒ p?d ˆîæ>÷Á @  b q?d ÈîæðA ¸ @  bŽ r?d ïæ P @  b s?d Hïæ… Yë @  b t?d ˆïæ¥ü[ @  b‘ u?d ÈïæUƒ¡l @  b’ v?d ðæë]Þ @  b“ w?d Hðæp¼5 @  b” x?d ˆðæPâ¾Ë @  b• y?d Èðæ D² @  b– z?d ñæpÕÈZ @  b— {?d Hñæxt. @  b˜ |?d ˆñæX,ÿ @  b™ }?d Èñæ¨þÖ† @  bš ~?d òæ5ºvG @  b› ?d Hòæ»Í @  bœ €?d ˆòæ›tÏá @  b ?d Èòæk 5˜ @  bž ‚?d óæ»C¹p @  bŸ ƒ?d HóæEF{ @  b  „?d ˆóæ/°D… @  b¡ …?d ÈóæßϾü @  b¢ †?d ôæÆMó @  b£ ‡?d Hôæ]Ëì @  b¤ ˆ?d ˆôæ}>îæ @  b¥ ‰?d ÈôæAŸ @  b¦ Š?d õæ] ˜w @  b§ ‹?d HõæU¨~, @  b¨ Œ?d ˆõæu]|Ò @  b© ?d Èõæ…"†« @  bª Ž?d öæf&j @  b« ?d Höææ|åm @  b¬ ?d ˆöæƉç“ @  b­ ‘?d Èöæ6öê @  b® ’?d ÷æ澑 @  b¯ “?d H÷æC¾I¹ @  b° ”?d ˆ÷æcKKG @  b± •?d È÷æ“4±> @  b² –?d øæ§Ë=# @  b³ —?d Høæ<œÈ @  b´ ˜?d ˆøætž6 @  bµ ™?d Èøæì dO @  b¶ š?d ùæ @  bÉ ­?d ÈýæŠ%áG @  bÊ ®?d þæaA† @  bË ¯?d Hþæé{‚ @  bÌ °?d ˆþæÉŽ€ @  bÍ ±?d Èþæ9ñz @  bÎ ²?d ÿæé¹öî @  bÏ ³?d HÿæL¹.U @  bÐ ´?d ˆÿælL,« @  bÑ uÐçµ?d Èÿæ¥ô  @  bÒ¶?d çê@"ö @  bÓ·?d `çq ƒ @  bÔ¸?d  çQÿã @  bÕ¹?d àç¡€{š @  bÖº?d çqÈ÷r @  b×»?d `çyi) @  bؼ?d  çYœ× @  bÙ½?d àç©ãé® @  bÚ¾?d ç4§Io @  bÛ¿?d `ç§Z¦¥ @  bÜÀ?d  ç‡¯¤[ @  bÝÁ?d àçwÐ^" @  bÞÂ?d 秘ÒÊ @  bßÃ?d `çž-Á @  bàÄ?d  ç3k/? @  báÅ?d àçÃÕF @  bâÆ?d€ ç®™:ï @  cÇ?d `çÔ’Ó- @  cÈ?d  çôgÑÓ @  cÉ?d àçÁQÐG @  cÊ?d ç\¯ @  cË?d `ç× åŽ @  cÌ?d  ç÷ÿçp @  cÍ?d àçÉ2Bs @  cÎ?d çTvâ² @  c Ï?d `ço%ÚX @  c Ð?d  çOÐØ¦ @  c Ñ?d àçzæÙ2 @  c Ò?d 窮UÚ @  c Ó?d `çl½ìû @  cÔ?d  çLHî @  cÕ?d àçß$uæ @  cÖ?d çëÛùû @  c×?d `çµØ£ý @  cØ?d  ç•-¡ @  cÙ?d àç  — @  cÚ?d çpS, @  cÛ?d ` ç¶@•^ @  cÜ?d   ç–µ—  @  cÝ?d à ç¨x2£ @  cÞ?d ç5<’b @  cß?d ` ç“Ø“T @  cà?d   ç³-‘ª @  cá?d à ç†> @  câ?d çVSÖ @  cã?d ` ç@¥÷ @  cä?d   ç°µ§  @  cå?d à ç2ßZ @  c æ?d ç+‘èU @  c!ç?d ` çu’²S @  c"è?d   çUg°­ @  c#é?d à ç`Q±9 @  c$ê?d ç°=Ñ @  c%ë?d ` çv „ð @  c&ì?d   çVÿ† @  c'í?d à çh2#  @  c(î?d çõvƒÌ @  c)ï?d `çÎ%»& @  c*ð?d  çîйØ @  c+ñ?d àçÛæ¸L @  c,ò?d ç ®4¤ @  c-ó?d `çͽ… @  c.ô?d  çíH{ @  c/õ?d àç~$˜ @  c0ö?d çÀú¨* @  c1÷?d `çžùò, @  c2ø?d  ç¾ ðÒ @  c3ù?d àç‹:ñF @  c4ú?d ç[r}® @  c5û?d `çaÄ @  c6ü?d  ç½”Æq @  c7ý?d àçƒYcr @  c8þ?d çó @  c9ÿ?d `ç*Ö  @  c:?d  ç ýÔô @  c;?d àç?ËÕ` @  c<?d çïƒYˆ @  c=?d `ç)à© @  c>?d  ç eâW @  c??d àç%X– @  c@?d çd @  c]#?d `ç&—‡E @  c^$?d  çb…» @  c_%?d àç„9è @  c`&?d çFÊç @  ca'?d `çÃEá @  cb(?d  çã°’ @  cc)?d àçÖ†“‹ @  cd*?d çÎc @  ce+?d `çÀݦB @  cf,?d  çà(¤¼ @  cg-?d àçÞå¿ @  ch.?d çC¡¡~ @  ci/?d `çxò™” @  cj0?d  çX›j @  ck1?d àçm1šþ @  cl2?d ç½y @  cm3?d `ç{j¯7 @  cn4?d  ç[Ÿ­ÉuÐ ç @  co5?d àçµsEV @  cp€6?d 8 çÄx›0 @  cq€7?d x çš{Á6 @  cr€8?d ¸ 纎ÃÈ @  cs€9?d ø ç¸Â\ @  ct€:?d 8!ç_ðN´ @  cu€;?d x!ç™ã÷• @  cv€<?d ¸!ç¹õk @  cw€=?d ø!ç‡ÛPh @  cx€>?d 8"çŸð© @  cy€??d x"çL+äŽ @  cz€@?d ¸"çlÞæp @  c{€A?d ø"çYèçä @  c|€B?d 8#牠k  @  c}€C?d x#çO³Ò- @  c~€D?d ¸#çoFÐÓ @  c€E?d ø#ç }Z# @  c€€F?d 8$ç¹3©, @  c€G?d x$çç0ó* @  c‚€H?d ¸$çÇÅñÔ @  cƒ€I?d ø$çòóð@ @  c„€J?d 8%ç"»|¨ @  c…€K?d x%çä¨Å‰ @  c†€L?d ¸%çÄ]Çw @  c‡€M?d ø%çúbt @  cˆ€N?d 8&çgÔµ @  c‰€O?d x&ç\‡ú_ @  cŠ€P?d ¸&ç|rø¡ @  c‹€Q?d ø&çIDù5 @  cŒ€R?d 8'ç™ uÝ @  c€S?d x'ç_Ìü @  cŽ€T?d ¸'çêÎ @  c€U?d ø'çì†Uá @  c€V?d 8(çØyÙü @  c‘€W?d x(ç†zƒú @  c’€X?d ¸(ç¦ @  c“€Y?d ø(瓹€ @  c”€Z?d 8)çCñ x @  c•€[?d x)ç…âµY @  c–€\?d ¸)祷§ @  c—€]?d ø)ç›Ú¤ @  c˜€^?d 8*çž²e @  c™€_?d x*ç z³S @  cš€`?d ¸*瀱­ @  c›€a?d ø*çµ¹°9 @  cœ€b?d 8+çeñ<Ñ @  c€c?d x+ç£â…ð @  cž€d?d ¸+烇 @  cŸ€e?d ø+ç};] @  c €f?d 8,ç3ÈR @  c¡€g?d x,çF0’T @  c¢€h?d ¸,çfŪ @  c£€i?d ø,çSó‘> @  c¤€j?d 8-çƒ»Ö @  c¥€k?d x-çE¨¤÷ @  c¦€l?d ¸-çe]¦  @  c§€m?d ø-ç[  @  c¨€n?d 8.çÆÔ£Ë @  c©€o?d x.çý‡›! @  cª€p?d ¸.çÝr™ß @  c«€q?d ø.çèD˜K @  c¬€r?d 8/ç8 £ @  c­€s?d x/çþ­‚ @  c®€t?d ¸/çÞê¯| @  c¯€u?d ø/çM†4Ÿ @  c°€v?d 80çóXˆ- @  c±€w?d x0ç­[Ò+ @  c²€x?d ¸0ç®ÐÕ @  c³€y?d ø0縘ÑA @  c´€z?d 81çhÐ]© @  cµ€{?d x1ç®Ãäˆ @  c¶€|?d ¸1çŽ6æv @  c·€}?d ø1ç°ûCu @  c¸€~?d 82ç-¿ã´ @  c¹€?d x2çfÍ£ @  cº€€?d ¸2çF8¡ÿ @  c»€?d ø2çs k @  c¼€‚?d 83ç£F,ƒ @  c½€ƒ?d x3çeU•¢ @  c¾€„?d ¸3çE —\ @  c¿€…?d ø3çiÍ- @  cÀ€†?d 84çpƒÞ’ @  cÁ€‡?d x4ç.€„” @  c€ˆ?d ¸4çu†j @  cÀ‰?d ø4ç;C‡þ @  cÄ€Š?d 85çë  @  cÅ€‹?d x5ç-²7 @  cÆ€Œ?d ¸5ç í°É @  cÇ€?d ø5ç3 Ê @  cÈ€Ž?d 86ç®dµ  @  cÉ€?d x6ç•7á @  cÊ€?d ¸6çµÂ @  cË€‘?d ø6ç€ôŽ‹ @  cÌ€’?d 87çP¼c @  cÍ€“?d x7ç–¯»B @  c΀”?d ¸7ç¶Z¹¼ @  cÏ€•?d ø7ç%6"_ @  cЀ–?d 88çÉ®B @  cÑ€—?d x8çOÊôD @  cÒ€˜?d ¸8ço?öº @  cÓ€™?d ø8çZ ÷. @  cÔ€š?d 89çŠA{Æ @  cÕ€›?d x9çLRÂç @  cÖ€œ?d ¸9çl§À @  c×€?d ø9çRje @  cØ€ž?d 8:çÏ.ÅÛ @  cÙ€Ÿ?d x:çiÊÄí @  cÚ€ ?d ¸:çI?Æ @  cÛ€¡?d ø:ç| LJ @  cÜ€¢?d 8;ç¬AKo @  cÝ€£?d x;çjRòN @  cÞ€¤?d ¸;çJ§ð° @  c߀¥?d ø;çÈÍLã @  cà€¦?d 8<çу¿ì @  cဧ?d x<ç€åê @  c
?d€ ¸<ç)#O­ @  d€©?d ø<çýT @  d€ª?d 8=ç-Šø @  d€«?d x=ç.FÈ4 @  d€¬?d ¸=ç³ÊÊ @  d€­?d ø=çþÌ0³ @  d€®?d 8>çcˆr @  d€¯?d x>ç–i÷â @  d€°?d ¸>ç¶œõ @  d €±?d ø>çFãe @  d €²?d 8?ç–«ƒ @  d €³?d x?ç•ñÁA @  d €´?duÐ@ç7 ¸?çµÿ @  d €µ?d ø?ç8ûJº @  d¶?d P@çûWð† @  d·?d @çd#Þ: @  d¸?d Ð@çæ²Éä @  d¹?d AçD¨« @  dº?d PAçÆ…¿u @  d»?d Açg»è™ @  d¼?d ÐAçå*ÿG @  d½?d Bç €²! @  d¾?d PB爥ÿ @  d¿?d Bç²sû‚ @  dÀ?d ÐBç0âì\ @  dÁ?d Cç’D @  dÂ?d PCçÕšÍ @  dÃ?d Cç±ëÍ! @  dÄ?d ÐCç3zÚÿ @  dÅ?d DçXÚÄW @  dÆ?d PDçÚKÓ‰ @  dÇ?d DçT9Ú… @  d È?d ÐDçÖ¨Í[ @  d!É?d Eçt¬ @  d"Ê?d PEçöŸ»Ê @  d#Ë?d EçW¡ì& @  d$Ì?d ÐEçÕ0ûø @  d%Í?d Fç:š¶ž @  d&Î?d PFç¸ ¡@ @  d'Ï?d FçïŽÓð @  d(Ð?d ÐFçmÄ. @  d)Ñ?d GçϹ¥a @  d*Ò?d PGçM(²¿ @  d+Ó?d GçìåS @  d,Ô?d ÐGçn‡ò @  d-Õ?d Hç(–“7 @  d.Ö?d PH窄é @  d/×?d Hç5sªU @  d0Ø?d ÐHç·â½‹ @  d1Ù?d IçDÜÄ @  d2Ú?d PIç—ÕË @  d3Û?d Iç6ëœö @  d4Ü?d ÐIç´z‹( @  d5Ý?d Jç[ÐÆN @  d6Þ?d PJçÙAÑ @  d7ß?d Jçsšü @  d8à?d ÐJç‘â" @  d9á?d Kç3Dìm @  d:â?d PKç±Õû³ @  d;ã?d Kçë¬_ @  d<ä?d ÐKç’z» @  d=å?d LçùÚ¥) @  d>æ?d PLç{K²÷ @  d?ç?d Lç[>½i @  d@è?d ÐLçÙ¯ª· @  dAé?d Mç{ Ëø @  dBê?d PMçù˜Ü& @  dCë?d MçX¦‹Ê @  dDì?d ÐMçÚ7œ @  dEí?d Nç5Ñr @  dFî?d PNç· Ƭ @  dGï?d Nçà‰´ @  dHð?d ÐNçb£Â @  dIñ?d OçÀ¾Â @  dJò?d POçB/ÕS @  dKó?d Oçã‚¿ @  dLô?d ÐOça€•a @  dMõ?d Pç­°Ät @  dNö?d PPç/!Óª @  dO÷?d Pç°Uý @  dPø?d ÐPç2ÄêÈ @  dQù?d Qçb‹‡ @  dRú?d PQçóœY @  dSû?d Qç³Í˵ @  dTü?d ÐQç1\Ük @  dUý?d RçÞö‘  @  dVþ?d PRç\g†Ó @  dWÿ?d R綆ì @  dX?d ÐRç4ûË @  dY?d Sç–±š„ @  dZ?d PSç Z @  d[?d SçµÚ¶ @  d\?d ÐSç7Íh @  d]?d Tç\/ÓÀ @  d^?d PTçÞ¾Ä @  d_?d TçPÌÍ @  d`?d ÐTçÒ]ÚÌ @  da ?d Uçpû»ƒ @  db ?d PUçòj¬] @  dc ?d UçSTû± @  dd ?d ÐUçÑÅìo @  de ?d Vç>o¡  @  df?d PVç¼þ¶× @  dg?d Vçë{Äg @  dh?d ÐVçiêÓ¹ @  di?d WçËL²ö @  dj?d PWçIÝ¥( @  dk?d WçèãòÄ @  dl?d ÐWçjrå @  dm?d Xç,c„  @  dn?d PXç®ò“~ @  do?d Xç1†½Â @  dp?d ÐX糪 @  dq?d Yç±ËS @  dr?d PYç“ Ü @  ds?d Yç2‹a @  dt?d ÐYç°œ¿ @  du?d Zç_%ÑÙ @  dv?d PZçÝ´Æ @  dw?d Zç†k @  dx ?d ÐZ畚µ @  dy!?d [ç7±ûú @  dz"?d P[çµ ì$ @  d{#?d [ç»È @  d|$?d Ð[ç–¬ @  d}%?d \çý/²¾ @  d~&?d P\ç¾¥` @  d'?d \ç¼šÏ @  d€(?d Ð\ç>  @  d)?d ]眪ì^ @  d‚*?d P]ç;û€ @  dƒ+?d ]翬l @  d„,?d Ð]ç=”»² @  d…-?d ^çÒ>öÔ @  d†.?d P^çP¯á  @  d‡/?d ^ç*“º @  dˆ0?d Ð^ç…»„d @  d‰1?d _ç'å+ @  dŠ2?d P_祌òõ @  d‹3?d _ç²¥ @  duÐ`çŒ4?d Ð_ç†#²Ç @  d5?d (`çJ5êø @  dŽ6?d h`çȤý& @  d7?d ¨`çWÐÓš @  d8?d è`çÕAÄD @  d‘9?d (açwç¥  @  d’:?d haçõv²Õ @  d“;?d ¨açTHå9 @  d”<?d èaçÖÙòç @  d•=?d (bç9s¿ @  d–>?d hbç»â¨_ @  d—??d ¨bç€ö" @  d˜@?d èbçáü @  d™A?d (cç¡·€³ @  dšB?d hcç#&—m @  d›C?d ¨cç‚À @  dœD?d ècç‰×_ @  dE?d (dçk)É÷ @  džF?d hdçé¸Þ) @  dŸG?d ¨dçgÊ×% @  d H?d èdçå[Àû @  d¡I?d (eçGý¡´ @  d¢J?d heçÅl¶j @  d£K?d ¨eçdRᆠ@  d¤L?d èeçæÃöX @  d¥M?d (fç i»> @  d¦N?d hfç‹ø¬à @  d§O?d ¨fçÜ}ÞP @  d¨P?d èfç^ìÉŽ @  d©Q?d (gçüJ¨Á @  dªR?d hgç~Û¿ @  d«S?d ¨gçßåèó @  d¬T?d ègç]tÿ- @  d­U?d (hçež— @  d®V?d hhç™ô‰I @  d¯W?d ¨h瀧õ @  d°X?d èhç„°+ @  d±Y?d (iç&·Ñd @  d²Z?d hiç¤&ƺ @  d³[?d ¨iç‘V @  d´\?d èi燉†ˆ @  dµ]?d (jçh#Ëî @  d¶^?d hjçê²Ü0 @  d·_?d ¨jç €—\ @  d¸`?d èj碀‚ @  d¹a?d (kç·áÍ @  dºb?d hkç‚&ö @  d»c?d ¨kç#¡ÿ @  d¼d?d èk硉¶! @  d½e?d (lçÊ)¨‰ @  d¾f?d hlçH¸¿W @  d¿g?d ¨lçhͰÉ @  dÀh?d èlçê\§ @  dÁi?d (mçHúÆX @  dÂj?d hmçÊkц @  dÃk?d ¨mçkU†j @  dÄl?d èmçéÄ‘´ @  dÅm?d (nçnÜÒ @  dÆn?d hnç„ÿË  @  dÇo?d ¨nçÓz¹¼ @  dÈp?d ènçQë®b @  dÉq?d (oçóMÏ- @  dÊr?d hoçqÜØó @  dËs?d ¨oçÐâ @  dÌt?d èoçRs˜Á @  dÍu?d (pçžCÉÔ @  dÎv?d hpçÒÞ  @  dÏw?d ¨p烦ð¶ @  dÐx?d èpç7çh @  dÑy?d (q磑†' @  dÒz?d hqç!‘ù @  dÓ{?d ¨qç€>Æ @  dÔ|?d èqç¯ÑË @  dÕ}?d (rç휭 @  dÖ~?d hrço”‹s @  d×?d ¨rçH0œ @  dØ€?d èrçÊ¡–B @  dÙ?d (sçh÷  @  dÚ‚?d hsçê–àÓ @  dÛƒ?d ¨sçK¨·? @  dÜ„?d èsçÉ9 á @  dÝ…?d (t碙¾I @  dÞ†?d htç ©— @  d߇?d ¨tç®z › @  dàˆ?d ètç,ë·E @  dá‰?d (uçŽMÖ  @  dâŠ?d€ huçxÝr @  e‹?d ¨uç8`· @  eŒ?d èuçºñÕi @  e?d (vçcâ @  eŽ?d hvçƒt< @  e?d ¨vç‹´Yö @  e?d èvç %N( @  e‘?d (wçe1p @  e’?d hwçç gà @  e “?d ¨wçƒ×Ë @  e ”?d èwçFÜ @  e •?d (xç‚FK @  e –?d hxçQ• @  e —?d ¨xçüè³ @  e˜?d èxç~y m @  e™?d (yç¿Ì ¸ @  eš?d hyç=]f @  e›?d ¨yçY*²g @  eœ?d èyçÛ»¥¹ @  e?d (zçñX2 @  ež?d hzçsÉì @  eŸ?d ¨zçwIú @  e ?d èzçõØ$ @  e¡?d ({ç™Ì9 @  e¢?d h{ç].Ï @  e£?d ¨{ç*‚Î @  e¤?d è{çý»• @  e¥?d (|çSRpU @  e¦?d h|çÑÃg‹ @  e§?d ¨|ç-¤(­ @  e¨?d è|ç¯5?s @  e©?d (}ç† @  e ª?d h}çýÈ @  e!«?d ¨}ç™`£É @  e"¬?d è}çñ´ @  e#­?d (~ç1œ @  e$®?d h~糃B @  e%¯?d ¨~ç*´8ˆ @  e&°?d è~ç¨%/V @  e'±?d (çÄ1c @  e(²?d hçF ½ @  e)³?d ¨çuЀç'"ת¼ @  e*´?d èç F½b @  e+µ?d @€çy_I\ @  e,¶?d €€çYªK¢ @  e-·?d À€ç©¤ @  e.¸?d ç×áL @  e/¹?d @çD¯ @  e0º?d €çdxQ @  e1»?d Àç¢k½p @  e2¼?d ‚ç?/± @  e3½?d @‚ç % @  e4¾?d €‚ç*ìÛ @  e5¿?d À‚ç|X ü @  e6À?d ƒç¬† @  e7Á?d @ƒç’Ý# @  e8Â?d €ƒç²(!é @  e9Ã?d Àƒçt;˜È @  e:Ä?d „çmukÇ @  e;Å?d @„çXCjS @  e<Æ?d €„çx¶h­ @  e=Ç?d À„ç&µ2« @  e>È?d …çöý¾C @  e?É?d @…çÚ‚ @  e@Ê?d €…çúe| @  eAË?d À…ç:5 @  eKÕ?d @ˆç†;¡ @  eLÖ?d €ˆç¦ý9_ @  eM×?d ÀˆçøþcY @  eNØ?d ‰ç(¶ï± @  eOÙ?d @‰ç»ÚtR @  ePÚ?d €‰ç›/v¬ @  eQÛ?d À‰ç]<Ï @  eRÜ?d ŠçÀxoL @  eSÝ?d @ŠçõNnØ @  eTÞ?d €ŠçÕ»l& @  eUß?d ÀŠçs_m @  eVà?d ‹ç£áø @  eWá?d @‹çÚDû @  eXâ?d €‹ç½/F @  eYã?d À‹ç{<ÿ$ @  eZä?d Œçbr + @  e[å?d @ŒçWD ¿ @  e\æ?d €Œçw±A @  e]ç?d ÀŒç)²UG @  e^è?d çùúÙ¯ @  e_é?d @ç{eü @  e`ê?d €ç[eg @  eaë?d ÀçvÞ# @  ebì?d Žç2~â @  ecí?d @Žç5v @  edî?d €Žçñ}ˆ @  eeï?d ÀŽç.¢Eb @  efð?d çþêÉŠ @  egñ?d @çÀ'l‰ @  ehò?d €çàÒnw @  eió?d Àç&Á×V @  ejô?d ç˜kä @  ekõ?d @ç­)jp @  elö?d €çÜhŽ @  em÷?d ÀçÓß2ˆ @  enø?d ‘ç—¾` @  eoù?d @‘çû%ƒ @  epú?d €‘ç°'} @  eqû?d À‘çvž\ @  erü?d ’çëY> @  esý?d @’çÞo?  @  etþ?d €’çþš=÷ @  euÿ?d À’çÊ(N @  ev?d “çǤ¦ @  ew?d @“ç$ ¥ @  ex?d €“çÿ[ @  ey?d À“çÂìºz @  ez?d ”çÛ¢Iu @  e{?d @”çî”Há @  e|?d €”çÎaJ @  e}?d À”çb @  e~?d •ç@*œñ @  e ?d @•ç @  e€ ?d €•ç¯äÿ @  e ?d À•çi÷­Þ @  e‚ ?d –çô³  @  eƒ ?d @–çÁ… ‹ @  e„?d €–çápu @  e…?d À–çÚ#6Ÿ @  e†?d —ç kºw @  e‡?d @—ç4¦t @  eˆ?d €—çSŠ @  e‰?d À—çÒ@¤« @  eŠ?d ˜çæ¿(¶ @  e‹?d @˜çÓ‰)" @  eŒ?d €˜çó|+Ü @  e?d À˜ç­qÚ @  eŽ?d ™ç}7ý2 @  e?d @™çî[fÑ @  e?d €™çήd/ @  e‘?d À™ç½Ý @  e’?d šç•ù}Ï @  e“?d @šç Ï|[ @  e”?d €šç€:~¥ @  e•?d Àšç&Þ“ @  e– ?d ›çö–ó{ @  e—!?d @›çÈ[Vx @  e˜"?d €›çè®T† @  e™#?d À›ç.½í§ @  eš$?d œç7ó¨ @  e›%?d @œçÅ< @  eœ&?d €œç"0 @  e'?d Àœç|3GÄ @  ež(?d ç¬{Ë, @  eŸ)?d @ç.w @  e *?d €çäu @  e¡+?d ÀçÈ÷Ì  @  e¢,?d žçU³la @  e£-?d @žç`…mõ @  e¤.?d €žç@po  @  e¥/?d Àžç{#Wá @  e¦0?d Ÿç«kÛ  @  e§1?d @Ÿç•¦~  @  e¨2?d €ŸçµS|ô @  e©3uРç?d ÀŸçs@ÅÕ @  eª4?d  ç;ŒÇf @  e« 5?d X çºÆò @  e¬ 6?d ˜ ç.OÄ  @  e­ 7?d Ø çpLž  @  e® 8?d ¡ç â @  e¯ 9?d X¡ç3h‰ @  e° :?d ˜¡ç‹ÿ @  e± ;?d Ø¡çÕŽ2Þ @  e² <?d ¢çHÊ’ @  e³ =?d X¢ç}ü“‹ @  e´ >?d ˜¢ç] ‘u @  eµ ??d Ø¢ç ½…R @  e¶ @?d £çÛõ º @  e· A?d X£çå8¬¹ @  e¸ B?d ˜£çÅÍ®G @  e¹ C?d Ø£çÞf @  eº D?d ¤çäi @  e» E?d X¤ç/¦åý @  e¼ F?d ˜¤çSç @  e½ G?d ؤçQP½ @  e¾ H?d ¥ç1í @  e¿ I?d X¥ç­u‹, @  eÀ J?d ˜¥ç€‰Ò @  eÁ K?d Ø¥çK“0ó @  e L?d ¦çÖ×2 @  eà M?d X¦çãᑦ @  eÄ N?d ˜¦çÓX @  eÅ O?d ئçøG«² @  eÆ P?d §ç('Z @  eÇ Q?d X§ç‚Y @  eÈ R?d ˜§ç67€§ @  eÉ S?d اçð$9† @  eÊ T?d ¨çÄÛµ› @  eË U?d X¨çñí´ @  eÌ V?d ˜¨çѶñ @  eÍ W?d بçì÷ @  eÎ X?d ©ç_S` @  eÏ Y?d X©çÌ?ûü @  eÐ Z?d ˜©çìÊù @  eÑ [?d Ø©ç*Ù@# @  eÒ \?d ªç·àâ @  eÓ ]?d Xªç‚«áv @  eÔ ^?d ˜ªç¢^㈠@  eÕ _?d تçºâ¾ @  eÖ `?d «çÔònV @  e× a?d X«çê?ËU @  eØ b?d ˜«çÊÊÉ« @  eÙ c?d Ø«ç ÙpŠ @  eÚ d?d ¬ç—ƒ… @  eÛ e?d X¬ç ¡‚ @  eÜ f?d ˜¬çT€ï @  eÝ g?d جç^WÚé @  eÞ h?d ­çŽV @  eß i?d X­ç uêR @  eà j?d ˜­ç,€è¬ @  eá k?d Ø­çê“Q @  eâ l?d€ ®ç¶L @  f m?d X®çbçOñ @  f n?d ˜®çBM @  f o?d خ缎 @  f p?d ¯çl@à @  f q?d X¯çœ?ø™ @  f r?d ˜¯ç¼Êúg @  f s?d دç´k< @  f t?d °ç µ Ž @  f u?d X°çúÊZ÷ @  f v?d ˜°çÚ?X  @  f w?d ذçAuùâ @  f x?d ±ç‘=u  @  f y?d X±çaBs @  f z?d ˜±çA· @  f {?d رçä·U6 @  f |?d ²çyóõ÷ @  f }?d X²ç‰ŒŽ @  f ~?d ˜²ç©y p @  f ?d زç'B¶( @  f €?d ³ç÷ :À @  f ?d X³çuÀ¹ @  f ‚?d ˜³ç'€ÂG @  f ƒ?d سç/!$ @  f „?d ´ç6o× @  f …?d X´çÆ-j @  f †?d ˜´çæå/” @  f ‡?d Ø´ç}¯Ž @  f ˆ?d µç­ç— @  f ‰?d Xµç]˜øî @  f Š?d ˜µç}mú @  f ‹?d صçÉk @  f Œ?d ¶çT/¥Ú @  f! ?d X¶ç¤P_£ @  f" Ž?d ˜¶ç„¥]] @  f# ?d ضçz¿žZ @  f$ ?d ·çª÷² @  f% ‘?d X·çZˆèË @  f& ’?d ˜·çz}ê5 @  f' “?d Ø·çrÜ n @  f( ”?d ¸çF#€s @  f) •?d X¸ç¶\z  @  f* –?d ˜¸ç–©xô @  f+ —?d ظç ãÙ @  f, ˜?d ¹çÝ«U÷ @  f- ™?d X¹ç-Ô¯Ž @  f. š?d ˜¹ç !­p @  f/ ›?d عç¨!uË @  f0 œ?d ºç5eÕ  @  f1 ?d XºçÅ/s @  f2 ž?d ˜ºçåï- @  f3 Ÿ?d غç†B×V @  f4  ?d »çV [¾ @  f5 ¡?d X»ç¦u¡Ç @  f6 ¢?d ˜»ç†€£9 @  f7 £?d Ø»çŽ!Eb @  f8 ¤?d ¼ç—o¶m @  f9 ¥?d X¼çgL @  f: ¦?d ˜¼çGåNê @  f; §?d ؼçܯï @  f< ¨?d ½ç çcé @  f= ©?d X½çü˜™ @  f> ª?d ˜½çÜm›n @  f? «?d ؽçÆlb÷ @  f@ ¬?d ¾ç[(Â6 @  fA ­?d X¾ç«W8O @  fB ®?d ˜¾ç‹¢:± @  fC ¯?d ؾçu¸ù¶ @  fD °?d ¿ç¥ðu^ @  fE ±?d X¿çU' @  fF ²?d ˜¿çuzÙ @uÐÀç  fG ³?d Ø¿çD·W @  fH´?d 0Àç ìæ @  fIµ?d pÀçГ| @  fJ¶?d °Àçðf‚ @  fK·?d ðÀçk,¿i @  fL¸?d 0Áç»d3 @  fM¹?d pÁçKÉø @  fNº?d °ÁçkîË @  fO»?d ðÁçÎî½ @  fP¼?d 0ÂçSª³| @  fQ½?d pÂç£ÕI @  fR¾?d °Âçƒ Kû @  fS¿?d ðÂçݤ1 @  fTÀ?d 0ÃçÀ•(Ù @  fUÁ?d pÃç0êÒ  @  fVÂ?d °ÃçÐ^ @  fWÃ?d ðÃç¾6 @  fXÄ?d 0ÄçðÅ  @  fYÅ?d pÄçñ?s @  fZÆ?d °ÄçÑz= @  f[Ç?d ðÄçJ0œf @  f\È?d 0ÅçšxŽ @  f]É?d pÅçjê÷ @  f^Ê?d °ÅçJòè  @  f_Ë?d ðÅçþô @  f`Ì?d 0Æçc°·Ã @  faÍ?d pÆç“ÏMº @  fbÎ?d °Æç³:OD @  fcÏ?d ðÆçM ŒC @  fdÐ?d 0Ççh« @  feÑ?d pÇçmúÒ @  ffÒ?d °ÇçMâø, @  fgÓ?d ðÇçECw @  fhÔ?d 0Èçq¼’j @  fiÕ?d pÈçÃh @  fjÖ?d °Èç¡6jí @  fk×?d ðÈç:|Ë @  flØ?d 0Éçê4Gî @  fmÙ?d pÉçK½— @  fnÚ?d °Éç:¾¿i @  foÛ?d ðÉ矾gÒ @  fpÜ?d 0ÊçúÇ @  fqÝ?d pÊçò…=j @  frÞ?d °ÊçÒp?” @  fsß?d ðÊç±ÝÅO @  ftà?d 0Ëça•I§ @  fuá?d pËç‘ê³Þ @  fvâ?d °Ëç±±  @  fwã?d ðËç¹¾W{ @  fxä?d 0Ìç ð¤t @  fyå?d pÌçP^  @  fzæ?d °Ìçpz\ó @  f{ç?d ðÌçë0ý @  f|è?d 0Íç;xqð @  f}é?d pÍçË‹‰ @  f~ê?d °Íçëò‰w @  fë?d ðÍç¥@ß @  f€ì?d 0Îçáà @  fí?d pÎçžg @  f‚î?d °Îç_k™ @  fƒï?d ðÎç¡qÛž @  f„ð?d 0Ïçq9Wv @  f…ñ?d pÏçF­ @  f†ò?d °Ï硳¯ñ @  f‡ó?d ðÏç©Iª @  fˆô?d 0ÐçÌõ @  f‰õ?d pÐçç³a @  fŠö?d °ÐçÇF Ÿ @  f‹÷?d ðÐç\ ¬t @  fŒø?d 0ÑçŒD œ @  fù?d pÑç|;Úå @  fŽú?d °Ñç\ÎØ @  fû?d ðÑçùΠ @  fü?d 0ÒçdŠ a @  f‘ý?d pÒç”õZ @  f’þ?d °Òç´Xæ @  f“ÿ?d ðÒçôéß @  f” ?d 0Óç$¡Sg @  f• ?d pÓçÔÞ© @  f– ?d °Óçô+«à @  f— ?d ðÓçüŠM» @  f˜ ?d 0Ôçåľ´ @  f™ ?d pÔç»DÍ @  fš ?d °Ôç5NF3 @  f› ?d ðÔç®çØ @  fœ ?d 0Õç~Lk0 @  f ?d pÕçŽ3‘I @  fž ?d °Õç®Æ“· @  fŸ ?d ðÕçÀl¼ @  f  ?d 0Ö燄Ì} @  f¡ ?d pÖçwû6 @  f¢ ?d °ÖçW4ú @  f£ ?d ðÖç©÷ý @  f¤ ?d 0×çy\{ @  f¥ ?d p×ç‰#l @  f¦ ?d °×ç©Öƒ’ @  f§ ?d ð×ç¡weÉ @  f¨ ?d 0Øç•ˆéÔ @  f© ?d pØçe÷­ @  fª ?d °ØçES @  f« ?d ðØçÞH°¸ @  f¬ ?d 0Ùç ?d Èâçi˜‚Q @  fÓ€? ?d ã稼ö­ @  fÔ€@ ?d Hãç*-ás @  fÕ€A ?d ˆãçx6* @  fÖ€B ?d Èãçú§ô @  f×€C ?d äçiÙ~ @  fØ€D ?d HäçëH   @  fÙ€E ?d ˆäç¹Sãù @  fÚ€F ?d Èäç;Âô' @  fÛ€G ?d åçòQÎú @  fÜ€H ?d HåçpÀÙ$ @  fÝ€I ?d ˆåç"Û6} @  fÞ€J ?d Èåç J!£ @  f߀K ?d æç ™i· @  fà€L ?d Hæç‰~i @  fá€M ?d ˆæçÛ‘0 @  fâ€N ?d€ Èæç-AšH @  g€O ?d çç`ÊP @  g€P ?d HççâRŽ @  g€Q ?d ˆççu‰: @  g€R ?d Èçç÷‘žä @  g€S ?d èç‡ì¼ @  g€T ?d Hèç}«Ø @  g€U ?d ˆèç™Ôû @  g€V ?d ÈèçE % @  g €W ?d éçŸÍ @  g €X ?d Héç•ÚË @  g €Y ?d ˆéç\Î @  g €Z ?d Èéç€ÍÙ¡ @  g €[ ?d êçY ן @  g€\ ?d HêçÛšÀA @  g€] ?d ˆêçê’N‚ @  g€^ ?d ÈêçhY\ @  g€_ ?d ëçœ>Ã\ @  g€` ?d Hëç¯Ô‚ @  g€a ?d ˆëç‰ýÀ6 @  g€b ?d Èëç l×è @  g€c ?d ìçV Š @  g€d ?d HìçÔ1Æ @  g€e ?d ˆìçH˜-å @  g€f ?d ÈìçÊ :; @  g€g ?d íçÆÓû  @  g€h ?d HíçDBìÕ @  g€i ?d ˆíçÓøa @  g€j ?d ÈíçQï¿ @  g€k ?d îçˆGá @  g€l ?d Hîç Öö_ @  g€m ?d ˆîç*Ø_, @  g €n ?d Èîç¨IHò @  g!€o ?d ïçÁÃë. @  g"€p ?d HïçCRüð @  g#€q ?d ˆïçÔèD @  g$€r ?d ÈïçV‘ÿš @  g%€s ?d ðç¬Íí× @  g&€t ?d Hðç.\ú  @  g'€u ?d ˆðç²õJ* @  g(€v ?d Èðç0d]ô @  g)€w ?d ñç<¾œÄ @  g*€x ?d Hñç¾/‹ @  g+€y ?d ˆñç)}Ÿ® @  g,€z ?d Èñç«ìˆp @  g-€{ ?d òçr*†N @  g.€| ?d Hòç𻑠@  g/€} ?d ˆòçÁ³S @  g0€~ ?d ÈòçC" @  g1€ ?d óçZ‰Ó @  g2€€ ?d HóçØÄÐ @  g3€ ?d ˆóçOJÐd @  g4€‚ ?d ÈóçÍÛǺ @  g5€ƒ ?d ôçšJ @  g6€„ ?d Hô熔 @  g7€… ?d ˆôçŽ/=· @  g8€† ?d Èôç ¾*i @  g9€‡ ?d õçdëY @  g:€ˆ ?d Hõç‚õü‡ @  g;€‰ ?d ˆõç§è3 @  g<€Š ?d Èõç—6ÿí @  g=€‹ ?d öçNðñÓ @  g>€Œ ?d HöçÌaæ  @  g?€ ?d ˆöçBhIì @  g@€Ž ?d ÈöçÀù^2 @  gA€ ?d ÷ç©sýî @  gB€ ?d H÷ç+âê0 @  gC€‘ ?d ˆ÷ç¼°þ„ @  gD€’ ?d È÷ç>!éZ @  gE€“ ?d øçN\˸ @  gF€” ?d HøçÌÍÜf @  gG€• ?d ˆøçPdlE @  gH€– ?d ÈøçÒõ{› @  gI€— ?d ùçÞ/º« @  gJ€˜ ?d Hùç\¾­u @  gK€™ ?d ˆùçËì¹Á @  gL€š ?d ÈùçI}® @  gM€› ?d úç» ! @  gN€œ ?d Húç*·ÿ @  gO€ ?d ˆúç#"9< @  gP€ž ?d Èú硳.â @  gQ€Ÿ ?d ûçUŽ´â @  gR€  ?d Hûç×£< @  gS€¡ ?d ˆûç@M·ˆ @  gT€¢ ?d ÈûçÂÜ V @  gU€£ ?d üçŸý¦ @  gV€¤ ?d Hüçêx @  gW€¥ ?d ˆüç(Z[ @  gX€¦ ?d Èüç¹M… @  gY€§ ?d ýçcŒµ @  gZ€¨ ?d Hýçò›k @  g[€© ?d ˆýç ß @  g\€ª ?d Èýç˜1˜ @  g]€« ?d þçA÷–? @  g^€¬ ?d HþçÃfá @  g_€­ ?d ˆþçãh(’ @  g`€® ?d Èþçaù?L @  ga€¯ ?d ÿçsœ @  gb€° ?d HÿçŠâ‹N @  gc€± ?d ˆÿç°Ÿú @  gd€uÐè² ?d Èÿçâ¡ûX @  ge³ ?d è÷]t @  gf´ ?d `èfJª @  ggµ ?d  èÏú‰ @  gh¶ ?d àèƒ^íW @  gi· ?d è„,g @  gj¸ ?d `è ;¹ @  gk¹ ?d  èšG/  @  glº ?d àèÖ8Ó @  gm» ?d èÁ6í @  gn¼ ?d `èC!3 @  go½ ?d  èr‰¯ð @  gp¾ ?d àèð¸. @  gq¿ ?d èôu7? @  grÀ ?d `èvä á @  gsÁ ?d  èá¶4U @  gt ?d àèc'#‹ @  guà ?d è>ë~{ @  gvÄ ?d `è¼zi¥ @  gwÅ ?d  è ÓÙ† @  gxÆ ?d àè¢BÎX @  gyÇ ?d 讘h @  gzÈ ?d `è, ¶ @  g{É ?d  è»[  @  g|Ê ?d àè9ÊÜ @  g}Ë ?d èà â @  g~Ì ?d `èb< @  gÍ ?d  èÂì @  g€Î ?d àèSŠ2 @  gÏ ?d èäÙ)î @  g‚Ð ?d `èfH>0 @  gƒÑ ?d  èñ*„ @  g„Ò ?d àès‹=Z @  g…Ó ?d èö¸ @  g†Ô ?d `ègf @  g‡Õ ?d  èθE @  gˆÖ ?d àèŸ_¯› @  g‰× ?d è“…n« @  gŠØ ?d ` èyu @  g‹Ù ?d   è†FmÁ @  gŒÚ ?d à è×z @  gÛ ?d èÝt! @  gŽÜ ?d ` è_€cÿ @  gÝ ?d   ènˆí< @  gÞ ?d à èìúâ @  g‘ß ?d è$`â @  g’à ?d ` èšµw< @  g“á ?d   è çcˆ @  g”â ?d à èvtV @  g•ã ?d èÒº)¦ @  g–ä ?d ` èP+>x @  g—å ?d   èÌ‚Ž[ @  g˜æ ?d à èN™… @  g™ç ?d èBÉXµ @  gšè ?d ` èÀXOk @  g›é ?d   èW [ß @  gœê ?d à èÕ›L @  gë ?d è ]B? @  gžì ?d `èŽÌUá @  gŸí ?d  è®Âü’ @  g î ?d àè,SëL @  g¡ï ?d èEÙH @  g¢ð ?d `èÇH_N @  g£ñ ?d  èPKú @  g¤ò ?d àèÒ‹\$ @  g¥ó ?d è(×Ni @  g¦ô ?d `èªFY· @  g§õ ?d  è6ïé” @  g¨ö ?d àè´~þJ @  g©÷ ?d 踤?z @  gªø ?d `è:5(¤ @  g«ù ?d  è­g< @  g¬ú ?d àè/ö+Î @  g­û ?d èö0%ð @  g®ü ?d `èt¡2. @  g¯ý ?d  èE©¼í @  g°þ ?d àèÇ8«3 @  g±ÿ ?d è¡ô%¼ @  g²!?d `è#e2b @  g³!?d  è´7&Ö @  g´!?d àè6¦1 @  gµ!?d èkjlø @  g¶!?d `èéû{& @  g·!?d  èuRË @  g¸!?d àè÷ÃÜÛ @  g¹!?d èûë @  gº!?d `èyˆ 5 @  g» !?d  èîÚ @  g¼ !?d àèlK _ @  g½ !?d èµa @  g¾ !?d `è7¿ @  g¿ !?d  è¹¿^ @  gÀ!?d àè;„¨€ @  gÁ!?d èR \ @  gÂ!?d `èП‚ @  gÃ!?d  èGÍ6 @  gÄ!?d àèÅ\è @  gÅ!?d èµ!=  @  gÆ!?d `è7°*Ô @  gÇ!?d  è«š÷ @  gÈ!?d àè)ˆ) @  gÉ!?d è%RL @  gÊ!?d `è§Ã[Ç @  gË!?d  è0‘Os @  gÌ!?d àè²X­ @  gÍ!?d èkÆV“ @  gÎ!?d `èéWAM @  gÏ!?d  èØ_ÏŽ @  gÐ!?d àèZÎØP @  gÑ!?d è®óBP @  gÒ !?d `è,bUŽ @  gÓ!!?d  è»0A: @  gÔ"!?d àè9¡Vä @  gÕ#!?d èdm  @  gÖ$!?d `èæüÊ @  g×%!?d  èzU¬é @  gØ&!?d àèøÄ»7 @  gÙ'!?d èôz @  gÚ(!?d `èvmÙ @  gÛ)!?d  èáÝym @  gÜ*!?d àècLn³ @  gÝ+!?d 躊` @  gÞ,!?d `è8wS @  gß-!?d  èÞ  @  gà.!?d àèš„Éþ @  gá/!?d èój" @  gâ0!?d€ `èYi® @  h1!?d  è/53uÐ è @  h2!?d àè­‡"í @  h3!?d 8 è]G©™ @  h4!?d x èßÖ¾G @  h5!?d ¸ èÍQ @  h6!?d ø è\FÀ @  h7!?d 8!èÍ4ØŠ @  h8!?d x!èO¥ÏT @  h 9!?d ¸!è¾  @  h :!?d ø!èŸ/7Ó @  h ;!?d 8"胠 @  h !?d ø"èÑ»-Y @  h?!?d 8#è¶ÅÃÒ @  h@!?d x#è4TÔ  @  hA!?d ¸#èfO;U @  hB!?d ø#èäÞ,‹ @  hC!?d 8$è|[Š– @  hD!?d x$èþÊH @  hE!?d ¸$è¬Ñr @  hF!?d ø$è.@eÏ @  hG!?d 8%èì(û… @  hH!?d x%èn¹ì[ @  hI!?d ¸%è<¢ @  hJ!?d ø%è¾3Ü @  hK!?d 8&袼á @  hL!?d x&è -öÑ @  hM!?d ¸&èr6ˆ @  hN!?d ø&èð§V @  hO!?d 8'èë8ë  @  h P!?d x'èi©ü~ @  h!Q!?d ¸'è;²' @  h"R!?d ø'è¹#ù @  h#S!?d 8(è Ýö @  h$T!?d x(èކÊ( @  h%U!?d ¸(èÜ%q @  h&V!?d ø(è^ 2¯ @  h'W!?d 8)èœd¬å @  h(X!?d x)èõ»; @  h)Y!?d ¸)èLîTb @  h*Z!?d ø)èÎC¼ @  h+[!?d 8*èÒð¶o @  h,\!?d x*èPa¡± @  h-]!?d ¸*èzNè @  h.^!?d ø*è€ëY6 @  h/_!?d 8+èÅ¢¬ @  h0`!?d x+è•Tµr @  h1a!?d ¸+èÇOZ+ @  h2b!?d ø+èEÞMõ @  h3c!?d 8,èÝ[ëè @  h4d!?d x,è_Êü6 @  h5e!?d ¸,è Ño @  h6f!?d ø,è@± @  h7g!?d 8-èM(šû @  h8h!?d x-èϹ% @  h9i!?d ¸-è¢b| @  h:j!?d ø-è3u¢ @  h;k!?d 8.è¼€q @  h<l!?d x.è-—¯ @  h=m!?d ¸.èÓ6xö @  h>n!?d ø.èQ§o( @  h?o!?d 8/èä?ŒL @  h@p!?d x/èf®›’ @  hAq!?d ¸/è4µtË @  hBr!?d ø/è¶$c @  hCs!?d 80è‰1е @  hDt!?d x0è  k @  hEu!?d ¸0èY»r2 @  hFv!?d ø0èÛ*eì @  hGw!?d 81èBû¦ @  hHx!?d x1è›Óìx @  hIy!?d ¸1èÉÈ! @  hJz!?d ø1èKYÿ @  hK{!?d 82èWÖá, @  hL|!?d x2èÕGöò @  hM}!?d ¸2è‡\« @  hN~!?d ø2èÍu @  hO!?d 83èu´l @  hP€!?d x3èý䣲 @  hQ!?d ¸3è¯ÿLë @  hR‚!?d ø3è-n[5 @  hSƒ!?d 84èµëý( @  hT„!?d x4è7zêö @  hU…!?d ¸4èea¯ @  hV†!?d ø4èçðq @  hW‡!?d 85è%˜Œ; @  hXˆ!?d x5è§ ›å @  hY‰!?d ¸5èõt¼ @  hZŠ!?d ø5èwƒcb @  h[‹!?d 86èk –± @  h\Œ!?d x6èéo @  h]!?d ¸6軆n6 @  h^Ž!?d ø6è9yè @  h_!?d 87è"ˆœ @  h`!?d x7è ‹À @  ha‘!?d ¸7èòd™ @  hb’!?d ø7èp“sG @  hc“!?d 88èŧªH @  hd”!?d x8èG6½– @  he•!?d ¸8è-RÏ @  hf–!?d ø8è—¼E @  hg—!?d 89èUÔÛ[ @  hh˜!?d x9è×EÌ… @  hi™!?d ¸9è…^#Ü @  hjš!?d ø9èÏ4 @  hk›!?d 8:è@ÁÑ @  hlœ!?d x:è™ÑÖ @  hm!?d ¸:èËÊ9V @  hnž!?d ø:èI[.ˆ @  hoŸ!?d 8;èÞuÕ @  hp !?d x;è\äÂÌ @  hq¡!?d ¸;èÿ-• @  hr¢!?d ø;èŒn:K @  hs£!?d 8<èëœV @  ht¤!?d x<è–z‹ˆ @  hu¥!?d ¸<èÄadÑ @  hv¦!?d ø<èFðs @  hw§!?d 8=脘íE @  hx¨!?d x=è ú› @  hy©!?d ¸=èT @  hzª!?d ø=èÖƒ @  h{«!?d 8>èÊ ÷Ï @  h|¬!?d x>èHà @  h}­!?d ¸>è†H @  h~®!?d ø>蘖 @  h¯!?d 8?èÎÙËà @  h€°!?d x?èLHÜ @  h±!?duÐ@è7 ¸?èS3D @  h‚²!?d ø?èœÂ$š @  hƒ³!?d P@èޥ˴ @  h„´!?d @èþPÉJ @  h…µ!?d Ð@è/33 @  h†¶!?d AèÞg¿Û @  h‡·!?d PAèNÖº§ @  hˆ¸!?d Aèn#¸Y @  h‰¹!?d ÐAèž\B  @  hŠº!?d Bèâá @  h‹»!?d PBèB - @  hŒ¼!?d Bè ·¢Ó @  h½!?d ÐBèÐÈXª @  h޾!?d Cè€ÔB @  h¿!?d PCè5'¡ÿ @  hÀ!?d CèÒ£ @  h‘Á!?d ÐCèå­Yx @  h’Â!?d Dèüãªw @  h“Ã!?d PDèÿ¹è» @  h”Ä!?d DèßLêE @  h•Å!?d ÐDè/3< @  h–Æ!?d Eèÿ{œÔ @  h—Ç!?d PEèoÊ™¨ @  h˜È!?d EèO?›V @  h™É!?d ÐEè¿@a/ @  hšÊ!?d Fè"Áî @  h›Ë!?d PFè!^ƒ" @  hœÌ!?d Fè«Ü @  hÍ!?d ÐFèñÔ{¥ @  hžÎ!?d Gè!œ÷M @  hŸÏ!?d PGèhÚ‰ @  h Ð!?d GèH/‹s @  h¡Ñ!?d ÐGè¸Pq  @  h¢Ò!?d H茯ý @  h£Ó!?d PHèõ¿Û @  h¤Ô!?d H诽% @  h¥Õ!?d ÐHè_G\ @  h¦Ö!?d Iè7Ë´ @  h§×!?d PIè†ÎÈ @  h¨Ø!?d Iè?sÌ6 @  h©Ù!?d ÐIèÏ 6O @  hªÚ!?d JèRH–Ž @  h«Û!?d PJèQÔB @  h¬Ü!?d JèqçÖ¼ @  h­Ý!?d ÐJè˜,Å @  h®Þ!?d KèQР- @  h¯ß!?d PKè”'À @  h°à!?d Kè´Ò @  h±á!?d ÐKèD­8 @  h²â!?d Lè]ãË  @  h³ã!?d PLè^¹‰Å @  h´ä!?d Lè~L‹; @  hµå!?d ÐLèŽ3qB @  h¶æ!?d Mè^{ýª @  h·ç!?d PMèÎÊøÖ @  h¸è!?d Mèî?ú( @  h¹é!?d ÐMè@Q @  hºê!?d N胠 @  h»ë!?d PNè€^â\ @  h¼ì!?d N蠫ࢠ@  h½í!?d ÐNèPÔÛ @  h¾î!?d O耜–3 @  h¿ï!?d POègÝîa @  hÀð!?d OèG(ìŸ @  hÁñ!?d ÐOè·Wæ @  hÂò!?d Pè ‰ªT @  hÃó!?d PPè Óè˜ @  hÄô!?d Pè*&êf @  hÅõ!?d ÐPèÚY @  hÆö!?d Qè œ÷ @  hÇ÷!?d PQèš ™‹ @  hÈø!?d QèºU›u @  hÉù!?d ÐQèJ*a  @  hÊú!?d Rè×nÁÍ @  hËû!?d PRèÔ4ƒ @  hÌü!?d RèôÁÿ @  hÍý!?d ÐRè¾{† @  hÎþ!?d SèÔö÷n @  hÏÿ!?d PSè1Ò¶h @  hÐ"?d Sè'´– @  hÑ"?d ÐSèáXNï @  hÒ"?d Tèø½à @  hÓ"?d PTèûLÿ, @  hÔ"?d TèÛ¹ýÒ @  hÕ"?d ÐTè+Æ« @  hÖ"?d UèûŽ‹C @  h×"?d PUèk?Ž? @  hØ"?d UèKÊŒÁ @  hÙ "?d ÐU軵v¸ @  hÚ "?d Vè&ñÖy @  hÛ "?d PVè%«”µ @  hÜ "?d Vè^–K @  hÝ "?d ÐVèõ!l2 @  hÞ"?d Wè%iàÚ @  hß"?d PWèl/ž @  hà"?d WèLÚœä @  há"?d ÐWè¼¥f @  hâ"?d€ Xèü™ö& @  i"?d PXè‚üà @  i"?d Xè>wþ= @  i"?d ÐXè Aÿ© @  i"?d YèÛ sA @  i"?d PYè… )G @  i"?d Yè¥ÿ+¹ @  i"?d ÐYè›2Žº @  i"?d Zèv.{ @  i "?d PZèÀe—Z @  i "?d Zèà•¤ @  i "?d ÐZèÕ¦”0 @  i "?d [èîØ @  i "?d P[è£ î @  i "?d [èƒÿ @  i!"?d Ð[è“€ó @  i""?d \è Ýsü @  i#"?d P\èÏÎÊÝ @  i$"?d \èï;È# @  i%"?d Ð\èÚ É· @  i&"?d ]è EE_ @  i'"?d P]èTFY @  i("?d ]èt³§ @  i)"?d Ð]èJ~¸¤ @  i*"?d ^è×:e @  i+"?d P^è)¡D @  i,"?d ^è1Ü£º @  i-"?d Ð^èê¢. @  i."?d _èÔ¢.Æ @  i/"?d P_èïñ, @  i0"?d _èÏÒ @  iuÐ`è1"?d Ð_èMn¨ @  i 2"?d (`èó– @  i!3"?d h`è5…¤8 @  i"4"?d ¨`èp¦Æ @  i#5"?d è`è F§R @  i$6"?d (aèð+º @  i%7"?d haè® q¼ @  i&8"?d ¨aèŽøsB @  i'9"?d èaè°5ÖA @  i(:"?d (bè-qv€ @  i);"?d hbèëbÏ¡ @  i*<"?d ¨bèË—Í_ @  i+="?d èbèþ¡ÌË @  i,>"?d (cè.é@# @  i-?"?d hcèx]T @  i.@"?d ¨cèX¨Vú @  i/A"?d ècèËÄÍ @  i0B"?d (dèÒŠ> @  i1C"?d hd虇7 @  i2D"?d ¨dè4l…É @  i3E"?d èdèZ„] @  i4F"?d (eèѵ @  i5G"?d heèR³ @  i6H"?d ¨eè¯äPM @  i7I"?d èeè‘)õN @  i8J"?d (fè mU @  i9K"?d hfèÊ~ì® @  i:L"?d ¨fèê‹îP @  i;M"?d èfèß½ïÄ @  i<N"?d (gèõc, @  i=O"?d hgè4¦[Æ @  i>P"?d ¨gèSY8 @  i?Q"?d ègè8>ãù @  i@R"?d (hè Áoä @  iAS"?d hhèÊÒÖÅ @  iBT"?d ¨hèê'Ô; @  iCU"?d èhèßÕ¯ @  iDV"?d (ièYYG @  iEW"?d hièQZA @  iFX"?d ¨ièq¯¿ @  iGY"?d èièOb¤¼ @  iHZ"?d (jèÒ&} @  iI["?d hjè5½\ @  iJ\"?d ¨jè4À¿¢ @  iK]"?d èjèö¾6 @  iL^"?d (kèѾ2Þ @  iM_"?d hkèwZ3è @  iN`"?d ¨kèW¯1 @  iOa"?d èkèÄêõ @  iPb"?d (lèÝYú @  iQc"?d hlèžàÛ @  iRd"?d ¨lè;kâ% @  iSe"?d èlè]ã± @  iTf"?d (mèÞoY @  iUg"?d hmè€5_ @  iVh"?d ¨mè ã7¡ @  iWi"?d èmèž.’¢ @  iXj"?d (nèj2c @  iYk"?d hnèÅy‹B @  iZl"?d ¨nè匉¼ @  i[m"?d ènèкˆ( @  i\n"?d (oèòÀ @  i]o"?d hoè;¡<* @  i^p"?d ¨oèT>Ô @  i_q"?d èoè™>‚‡ @  i`r"?d (pè'à>5 @  ias"?d hpèáó‡ @  ibt"?d ¨pèÁ…ê @  icu"?d èpèô0„~ @  idv"?d (qè$x– @  iew"?d hqèz{R @  ifx"?d ¨qèZŽPn @  igy"?d èqèdCõm @  ihz"?d (rèùU¬ @  ii{"?d hrè?ì @  ij|"?d ¨rèáîs @  ik}"?d èrè*×ïç @  il~"?d (sèúŸc @  im"?d hsè±í#º @  in€"?d ¨sè‘!D @  io"?d èsètº§ @  ip‚"?d (tè:I¨ @  iqƒ"?d htèÝ)ð‰ @  ir„"?d ¨tèýÜòw @  is…"?d ètèÈêóã @  it†"?d (uè¢  @  iu‡"?d huèF¡%  @  ivˆ"?d ¨uèfT'ó @  iw‰"?d èuèX™‚ð @  ixŠ"?d (vèÅÝ"1 @  iy‹"?d hvèΛ @  izŒ"?d ¨vè#;™î @  i{"?d èvè ˜z @  i|Ž"?d (wèÆE’ @  i}"?d hwèý,x @  i~"?d ¨wèÝã.† @  i‘"?d èwèؤv @  i€’"?d (xè&'(k @  i“"?d hxèà4‘J @  i‚”"?d ¨xèÀÁ“´ @  iƒ•"?d èxèõ÷’  @  i„–"?d (yè%¿È @  i…—"?d hyè{¼DÎ @  i†˜"?d ¨yè[IF0 @  i‡™"?d èyèe„ã3 @  iˆš"?d (zèøÀCò @  i‰›"?d hzè>ÓúÓ @  iŠœ"?d ¨zè&ø- @  i‹"?d èzè+ù¹ @  iŒž"?d ({èûXuQ @  iŸ"?d h{è]¼tg @  iŽ "?d ¨{è}Iv™ @  i¡"?d è{èî%íz @  i¢"?d (|è÷ku @  i‘£"?d h|è1x§T @  i’¤"?d ¨|襪 @  i“¥"?d è|è$»¤> @  i”¦"?d (}èôó(Ö @  i•§"?d h}èªðrÐ @  i–¨"?d ¨}èŠp. @  i—©"?d è}è´ÈÕ- @  i˜ª"?d (~è)Œuì @  i™«"?d h~èïŸÌÍ @  iš¬"?d ¨~èÏjÎ3 @  i›­"?d è~èú\ϧ @  iœ®"?d (è*CO @  i¯"?d hèG{¥ @  iž°"?d ¨èuЀè'1²y[ @  iŸ±"?d èèŠÝ @  i  ²"?d @€èä¡û© @  i¡ ³"?d €€è€ÖW¨ @  i¢ ´"?d À€èG@v @  i£ µ"?d èe¨ÚÔ @  i¤ ¶"?d @èç9Í  @  i¥ ·"?d €è^‚, @  i¦ ¸"?d Àè™Ï•ò @  i§ ¹"?d ‚è¸×‡î @  i¨ º"?d @‚è:F0 @  i© »"?d €‚è^1<1 @  iª ¼"?d À‚èÜ +ï @  i« ½"?d ƒè»O±M @  i¬ ¾"?d @ƒè9Þ¦“ @  i­ ¿"?d €ƒèͧ” @  i® À"?d ÀƒèOŸ°J @  i¯ Á"?d „èG,Ïx @  i° Â"?d @„èŽئ @  i± Ã"?d €„è¡Êt§ @  i² Ä"?d À„è#[cy @  i³ Å"?d …èD´ùÛ @  i´ Æ"?d @…èÆ%î @  iµ Ç"?d €…è:B¡# @  i¶ È"?d À…è¸Ó¶ý @  i· É"?d †è™Ë¤á @  i¸ Ê"?d @†èZ³? @  i¹ Ë"?d €†è-> @  iº Ì"?d À†èý¼à @  i» Í"?d ‡èšS’B @  i¼ Î"?d @‡èÂ…œ @  i½ Ï"?d €‡èõ¨V @  i¾ Ð"?d À‡èd¿ˆ @  i¿ Ñ"?d ˆè™gžŠ @  iÀ Ò"?d @ˆèö‰T @  iÁ Ó"?d €ˆè%U @  i Ô"?d Àˆèý2‹ @  ià Õ"?d ‰èšÿ¨) @  iÄ Ö"?d @‰èn¿÷ @  iÅ ×"?d €‰èä ðÑ @  iÆ Ø"?d À‰èf˜ç @  iÇ Ù"?d ŠèG€õ @  iÈ Ú"?d @ŠèÅâÍ @  iÉ Û"?d €Šè¡fNÌ @  iÊ Ü"?d ÀŠè#÷Y @  iË Ý"?d ‹èDð @  iÌ Þ"?d @‹èƉÔn @  iÍ ß"?d €‹è Àx @  iÎ à"?d À‹è@˜×¦ @  iÏ á"?d ŒèH+¨” @  iÐ â"?d @Œèʺ¿J @  iÑ ã"?d €Œè®ÍK @  iÒ ä"?d ÀŒè,\• @  iÓ å"?d èK³ž7 @  iÔ æ"?d @èÉ"‰é @  iÕ ç"?d €è5EÆÏ @  iÖ è"?d Àè·ÔÑ @  i× é"?d Žè–Ìà  @  iØ ê"?d @Žè]ÔÓ @  iÙ ë"?d €Žèp*xÒ @  iÚ ì"?d ÀŽèò»o  @  iÛ í"?d è•Tõ® @  iÜ î"?d @èÅâp @  iÝ ï"?d €èŽòϺ @  iÞ ð"?d Àè cØd @  iß ñ"?d è²FÏ[ @  ià ò"?d @è0ר… @  iá ó"?d €èT t„ @  iâ ô"?d€ Àèv”Z @  j õ"?d ‘è‘ØFÑ @  j ö"?d @‘èIQ @  j ÷"?d €‘è*gåÄ @  j ø"?d À‘è¨öò @  j ù"?d ’èG\¿| @  j ú"?d @’èÅͨ¢ @  j û"?d €’èo[Ù @  j ü"?d À’èí™L @  j ý"?d “èO?-H @  j þ"?d @“èÍ®:– @  j ÿ"?d €“èž–Áâ @  j #?d À“èÖ< @  j #?d ”èw§È” @  j #?d @”èõ6ßJ @  j #?d €”èòRÑ @  j #?d À”èpà @  j #?d •è) _@ @  j#?d @•諚Hž @  j#?d €•è’´üU @  j#?d À•è%ë‹ @  j #?d –èÿ¦í @  j #?d @–è}±3 @  j #?d €–è×ÛBH @  j #?d À–èUJU– @  j #?d —è÷ì4Ù @  j#?d @—èu}# @  j#?d €—è)õ  @  j#?d À—è«’âþ @  j#?d ˜è탃D @  j#?d @˜èo”š @  j#?d €˜èyp~± @  j #?d À˜èûáio @  j!#?d ™èYG  @  j"#?d @™èÛÖþ @  j##?d €™èâø«5 @  j$#?d À™è`i¼ë @  j%#?d šèÃñ @  j&#?d @šè RæS @  j'#?d €šè§—( @  j(#?d Àšè%ö @  j)#?d ›è‡ c¹ @  j*#?d @›è1tg @  j+#?d €›èÄø›œ @  j, #?d À›èFiŒB @  j-!#?d œè-É’ê @  j."#?d @œè¯X…4 @  j/##?d €œè¨> @  j2&#?d @è š)à @  j3'#?d €è3´+ @  j4(#?d Àè±%Šõ @  j5)#?d žè^Ç“ @  j6*#?d @žèÜÐM @  j7+#?d €žèvÛ#6 @  j8,#?d ÀžèôJ4è @  j9-#?d ŸèVìU§ @  j:.#?d @ŸèÔ}By @  j;/#?d €Ÿèˆ”^ @  j<0#uРè?d ÀŸè ’ƒ€ @  j=1#?d  è w°A @  j>2#?d X è‹æ§Ÿ @  j?3#?d ˜ è3ƒK& @  j@4#?d Ø è±\ø @  jA5#?d ¡è´=· @  jB6#?d X¡è‘%*i @  jC7#?d ˜¡è¨ ž¢ @  jD8#?d Ø¡è*š‰| @  jE9#?d ¢èÅ0Ä @  jF:#?d X¢èG¡ÓÄ @  jG;#?d ˜¢èíd ¿ @  jH<#?d Ø¢èoõ7a @  jI=#?d £èÍSV. @  jJ>#?d X£èOÂAð @  jK?#?d ˜£è~[» @  jL@#?d Ø£èüʬÄ @  jMA#?d ¤è—j²l @  jNB#?d X¤èû¥² @  jOC#?d ˜¤èŸh) @  jPD#?d ؤè÷ @  jQE#?d ¥è2¨¸ @  jRF#?d X¥è°9 f @  jSG#?d ˜¥è‰½­ @  jTH#?d Ø¥è †ªs @  jUI#?d ¦èä,ç @  jVJ#?d X¦èf½ðË @  jWK#?d ˜¦èÌx° @  jXL#?d ئèNén @  jYM#?d §èìOu! @  jZN#?d X§ènÞbÿ @  j[O#?d ˜§è2 ´Ø @  j\P#?d اè°1£ @  j]Q#?d ¨èö ¼ @  j^R#?d X¨èt±Õb @  j_S#?d ˜¨èbÓ?I @  j`T#?d بèàB(— @  jaU#?d ©èBäIØ @  jbV#?d X©èÀu^ @  jcW#?d ˜©èù[êÍ @  jdX#?d Ø©è{Êý @  jeY#?d ªè”`°u @  jfZ#?d Xªèñ§« @  jg[#?d ˜ªè¼4TÐ @  jh\#?d تè>¥C @  ji]#?d «èœ"A @  jj^#?d X«è’5Ÿ @  jk_#?d ˜«èß[Úd @  jl`#?d Ø«è]Êͺ @  jma#?d ¬è6jÓ @  jnb#?d X¬è´ûÄÌ @  joc#?d ˜¬è³Ÿ W @  jpd#?d جè1‰ @  jqe#?d ­è“¨Æ @  jrf#?d X­è9h @  jsg#?d ˜­è(ÜÓ @  jth#?d Ø­èª†Ë  @  jui#?d ®èE,†k @  jvj#?d X®èǽ‘µ @  jwk#?d ˜®èmxbÎ @  jxl#?d Ø®èïéu @  jym#?d ¯èMO_ @  jzn#?d X¯èÏÞ @  j{o#?d ˜¯è“ Õ¦ @  j|p#?d دè1Âx @  j}q#?d °èÝ“m @  j~r#?d X°è_„³ @  js#?d ˜°è£X; @  j€t#?d ذè†2Oå @  ju#?d ±è$”.ª @  j‚v#?d X±è¦9t @  jƒw#?d ˜±èŸ+¿ @  j„x#?d ر躚a @  j…y#?d ²èò× @  j†z#?d X²èpÀÙ @  j‡{#?d ˜²èÚD3¢ @  jˆ|#?d زèXÕ$| @  j‰}#?d ³èúsE3 @  jŠ~#?d X³èxâRí @  j‹#?d ˜³èT½ü• @  jŒ€#?d سèÖ,ëK @  j#?d ´è½Œõã @  jŽ‚#?d X´è?â= @  jƒ#?d ˜´è8y/¦ @  j„#?d Ø´èºè8x @  j‘…#?d µèNY7 @  j’†#?d XµèšßNé @  j“‡#?d ˜µè£ñú" @  j”ˆ#?d صè!`íü @  j•‰#?d ¶èÎÊ š @  j–Š#?d X¶èL[·D @  j—‹#?d ˜¶èæžD? @  j˜Œ#?d ضèdSá @  j™#?d ·èÆ©2® @  jšŽ#?d X·èD8%p @  j›#?d ˜·èFóW @  jœ#?d Ø·èš×ä‰ @  j‘#?d ¸èÜÆ…3 @  jž’#?d X¸è^W’í @  jŸ“#?d ˜¸èH5xÆ @  j ”#?d ظèʤo @  j¡•#?d ¹èhW @  j¢–#?d X¹è꓉ @  j£—#?d ˜¹èÓ½­B @  j¤˜#?d عèQ,ºœ @  j¥™#?d ºè¾†÷ú @  j¦š#?d Xºè<à$ @  j§›#?d ˜ºè–Ò_ @  j¨œ#?d غèC @  j©#?d »è¶åeÎ @  jªž#?d X»è4tr @  j«Ÿ#?d ˜»èõ½ë @  j¬ #?d Ø»èw,Š5 @  j­¡#?d ¼èŒ” @  j®¢#?d X¼èžƒC @  j¯£#?d ˜¼è™yNØ @  j°¤#?d ؼèèY @  j±¥#?d ½è¹N8I @  j²¦#?d X½è;ß/— @  j³§#?d ˜½èñ›\ @  j´¨#?d ؽè€`Œ‚ @  jµ©#?d ¾èoÊÁä @  j¶ª#?d X¾èí[Ö: @  j·«#?d ˜¾èGž%A @  j¸¬#?d ؾèÅ2Ÿ @  j¹­#?d ¿èg©SÐ @  jº®#?d X¿èå8D @  j»¯#?d ˜¿è¹F’) @uÐÀè  j¼°#?d Ø¿èù~b" @  j½±#?d 0Àèï`Þ× @  j¾²#?d pÀèmñÉ  @  j¿³#?d °ÀèÕ”%° @  jÀ´#?d ðÀèW2n @  jÁµ#?d 0Áèõ£S! @  j¶#?d pÁèw2Dÿ @  j÷#?d °ÁèNð4 @  jĸ#?d ðÁèÌçê @  jŹ#?d 0Âè#'ªŒ @  jƺ#?d pÂè¡¶½R @  jÇ»#?d °Âè sN) @  jȼ#?d ðÂè‰âY÷ @  jɽ#?d 0Ãè+D8¸ @  jʾ#?d pÃè©Õ/f @  jË¿#?d °Ãè˜LÕŒ @  jÌÀ#?d ðÃèÝÂR @  jÍÁ#?d 0Äèq}Üú @  jÎÂ#?d pÄèóìË$ @  jÏÃ#?d °Äèôˆ¿ @  jÐÄ#?d ðÄèva @  jÑÅ#?d 0ÅèÔ¿p. @  jÒÆ#?d pÅèV.gð @  jÓÇ#?d °ÅèoÓ; @  jÔÈ#?d ðÅèí‘Äå @  jÕÉ#?d 0Æè;‰ƒ @  jÖÊ#?d pÆè€ªž] @  j×Ë#?d °Æè*om& @  jØÌ#?d ðÆè¨þzø @  jÙÍ#?d 0Çè X· @  jÚÎ#?d pÇèˆÉ i @  jÛÏ#?d °ÇèÔ·ÚN @  jÜÐ#?d ðÇèV&Í @  jÝÑ#?d 0Èè7¬* @  jÞÒ#?d pÈè’¦»ô @  jßÓ#?d °Èè„ÄQß @  jàÔ#?d ðÈèUF @  jáÕ#?d 0Éè¤ó'N @  jâÖ#?d€ pÉèR¡,6 @  k×#?d °ÉèŠÎÐÔ @  kØ#?d ðÉè_Ç  @  kÙ#?d 0Êè"¼q @  kÚ#?d pÊè -f_ @  kÛ#?d °ÊèÄZÊ^ @  kÜ#?d ðÊèFËÝ€ @  kÝ#?d 0Ëè*ßãµ @  kÞ#?d pËè¨Nôk @  k ß#?d °Ëè¬Îà} @  k à#?d ðËè._÷£ @  k á#?d 0Ì耶æ @  k â#?d pÌè'8 @  k ã#?d °ÌèfP©9 @  kä#?d ðÌèäÁ¾ç @  kå#?d 0Íè%t¾2 @  kæ#?d pÍè§å©ì @  kç#?d °Íè[‚æÊ @  kè#?d ðÍèÙñ @  ké#?d 0ÎèóðGŸ @  kê#?d pÎèqaPA @  kë#?d °Îèü@ @  kì#?d ðÎè—‡ëž @  kí#?d 0Ïèû“Õ« @  kî#?d pÏèyÂu @  kï#?d °Ïèà5ï¿ @  kð#?d ðÏèb¤øa @  kñ#?d 0ÐèkÝR™ @  kò#?d pÐèéLEG @  kó#?d °Ðè;éF @  kô#?d ðÐèªþ˜ @  kõ#?d 0ÑèßÙý @  k ö#?d pÑè]ˆÎ# @  k!÷#?d °Ñè¡ï @  k"ø#?d ðÑè#~–Û @  k#ù#?d 0Òè P @  k$ú#?d pÒè‹ 7Ž @  k%û#?d °Òèï{› @  k&ü#?d ðÒèmêŒQ @  k'ý#?d 0Óèþ²d @  k(þ#?d pÓèƒo¥º @  k)ÿ#?d °Óè)šµ @  k*$?d ðÓ諆k @  k+$?d 0Ôèoh. @  k,$?d pÔè‡þð @  k-$?d °Ôèã‰Óñ @  k.$?d ðÔèaÄ/ @  k/$?d 0Õè ­Äú @  k0$?d pÕè"<Ó$ @  k1$?d °ÕèÞ[œ @  k2$?d ðÕè\Ê‹Ü @  k3 $?d 0Öèv)=W @  k4 $?d pÖèô¸*‰ @  k5 $?d °Öèφˆ @  k6 $?d ðÖè^‘V @  k7 $?d 0×è~J¯c @  k8$?d p×èüÛ¸½ @  k9$?d °×èeì•w @  k:$?d ð×èç}‚© @  k;$?d 0Øèd%þ @  k<$?d pØèæ´  @  k=$?d °Øè‚ã! @  k>$?d ðØèR´ÿ @  k?$?d 0Ùè~æ• @  k@$?d pÙèüw‚Ö @  kA$?d °ÙèÍð @  kB$?d ðÙè‚Ú. @  kC$?d 0Úè¨bl¥ @  kD$?d pÚè*ó{{ @  kE$?d °ÚèN„×z @  kF$?d ðÚèÌÀ¤ @  kG$?d 0Ûè þ‘ @  kH$?d pÛè"éO @  kI$?d °Ûè&ýY @  kJ $?d ðÛè¤ê‡ @  kK!$?d 0Üè h @  kL"$?d pÜèˆù @  kM#$?d °Üè쎴 @  kN$$?d ðÜèn£Ã @  kO%$?d 0Ý诪£ @  kP&$?d pÝè-;´È @  kQ'$?d °ÝèÑ\ûî @  kR($?d ðÝèSÍì0 @  kS)$?d 0Þèy.Z» @  kT*$?d pÞèû¿Me @  kU+$?d °ÞèŸÈád @  kV,$?d ðÞèYöº @  kW-$?d 0ßèqMÈ @  kX.$?d pßèóÜßQ @  kY/$?d uÐàè/°ßèjëò› @  kZ0$?d ðßèèzåE @  k[1$?d HàèFy­ù @  k\2$?d ˆàèfŒ¯ @  k]3$?d Èàè Ÿ& @  k^4$?d áèpךÎ @  k_5$?d Háèò½& @  k`6$?d ˆáèÒH$c @  ka7$?d ÈáèŒK~e @  kb8$?d âèÞ¤ @  kc9$?d Hâè$9ß0 @  kd:$?d ˆâèÌÝÎ @  ke;$?d ÈâèÂßdï @  kf<$?d ãè—è @  kg=$?d Hãè,ZM @  kh>$?d ˆãè ¯Oú @  ki?$?d ÈãèZ[Ý @  kj@$?d äèCU¨Ò @  kkA$?d Häèvc©F @  klB$?d ˆäèV–«¸ @  kmC$?d Èäè…™ @  knD$?d åè@Ížq @  koE$?d HåèÓ¡’ @  kpF$?d ˆåèóTl @  kqG$?d Èåè­W]j @  krH$?d æè0ý« @  ksI$?d Hæè%ü? @  ktJ$?d ˆæè%ÐþÁ @  kuK$?d ÈæèãÃGà @  kvL$?d çè3‹Ë @  kwM$?d Hçè Fn  @  kxN$?d ˆçè-³lõ @  kyO$?d ÈçèàT @  kzP$?d èè"Ø @  k{Q$?d Hèè)Ù– @  k|R$?d ˆèè7ÜÛh @  k}S$?d ÈèèñÏbI @  k~T$?d éè!‡î¡ @  kU$?d Héèî¼dQ @  k€V$?d ˆéèÎIf¯ @  kW$?d ÈéèJ<© @  k‚X$?d êè œh @  kƒY$?d Hêè88ü @  k„Z$?d ˆêèÍŸ @  k…[$?d ÈêèÞÞ&# @  k†\$?d ëè–ªË @  k‡]$?d Hëè0[È @  kˆ^$?d ˆëè® 6 @  k‰_$?d Èëè¶J  @  kŠ`$?d ìè¯ÿ @  k‹a$?d Hìèš2þ› @  kŒb$?d ˆìèºÇüe @  kc$?d Èìè|ÔED @  kŽd$?d í謜ɬ @  ke$?d Híè?ðRO @  kf$?d ˆíèP± @  k‘g$?d ÈíèA · @  k’h$?d îèÜBªv @  k“i$?d Hîèét«â @  k”j$?d ˆîèÉ© @  k•k$?d Èîè’= @  k–l$?d ïèßÚœÕ @  k—m$?d Hïèá9Ö @  k˜n$?d ˆïèÁâ;( @  k™o$?d Èïèú±Â @  kšp$?d ðèDo¿p @  k›q$?d HðèqY¾ä @  kœr$?d ˆðèQ¬¼ @  ks$?d Èðè—¿; @  kžt$?d ñèG÷‰Ó @  kŸu$?d HñèÅ5€ @  k v$?d ˆñèåh7~ @  k¡w$?d Èñè»kmx @  k¢x$?d òè&/͹ @  k£y$?d HòèÌ- @  k¤z$?d ˆòè3ìÎÓ @  k¥{$?d Èòèõÿwò @  k¦|$?d óè%·û @  k§}$?d Hóèz^ @  k¨~$?d ˆóè;\ç @  k©$?d ÈóèpýR @  kª€$?d ôèi³ï] @  k«$?d Hôè\…îÉ @  k¬‚$?d ˆôè|pì7 @  k­ƒ$?d ÈôèºcU @  k®„$?d õèj+Ùþ @  k¯…$?d HõèùGB @  k°†$?d ˆõèÙ²@ã @  k±‡$?d Èõ臱å @  k²ˆ$?d öèõº$ @  k³‰$?d Höè/û° @  k´Š$?d ˆöè6¹N @  kµ‹$?d ÈöèÉ%o @  k¶Œ$?d ÷èmŒ‡ @  k·$?d H÷è' )„ @  k¸Ž$?d ˆ÷èU+z @  k¹$?d È÷è< @  kº$?d øèùŸ @  k»‘$?d Høè=Ïž @  k¼’$?d ˆøè:œç @  k½“$?d ÈøèÛ)%Æ @  k¾”$?d ùè a©. @  k¿•$?d Hùè' ï @  kÀ–$?d ˆùèù @  kÁ—$?d ÈùèYúK @  k˜$?d úèľëÖ @  kÙ$?d HúèñˆêB @  kÄš$?d ˆúèÑ}è¼ @  kÅ›$?d ÈúènQ @  kÆœ$?d ûèÇ&Ýu @  kÇ$?d Hûèùëxv @  kÈž$?d ˆûèÙzˆ @  kÉŸ$?d Èûèú{¾ @  kÊ $?d üèf´ˆ± @  kË¡$?d HüèS‚‰% @  kÌ¢$?d ˆüèsw‹Û @  kÍ£$?d Èüèµd2ú @  kΤ$?d ýèe,¾ @  kÏ¥$?d Hýèö@%ñ @  kЦ$?d ˆýèÖµ' @  kѧ$?d Èý舶}  @  kÒ¨$?d þèòÝÈ @  kÓ©$?d Hþè ÄÜ\ @  kÔª$?d ˆþè1Þ¢ @  kÕ«$?d ÈþèÆ"gƒ @  kÖ¬$?d ÿèjëk @  k×­$?d Hÿè(§Nh @  kØ®$?d ˆÿèRL– @  kÙuÐé¯$?d ÈÿèN @  kÚ€°$?d é5/ñ @  kÛ€±$?d `é4.e @  kÜ€²$?d  éö,› @  kÝ€³$?d àéÒ啺 @  kÞ€´$?d é­R @  k߀µ$?d `é€Ç¥ @  kà€¶$?d  é 2§ÿ @  k့$?d àéþ1ýù @  k‸$?d€ éå#õ @  l€¹$?d `é1T¼< @  l€º$?d  é¡¾Â @  l€»$?d àéûü @  l€¼$?d é³pæ @  l€½$?d `é2ÌŠŸ @  l€¾$?d  é9ˆa @  l€¿$?d àéŠ?Ã< @  l€À$?d é“q03 @  l €Á$?d `écÊJ @  l €Â$?d  éCûÈ´ @  l €Ã$?d àé@¡Šx @  l €Ä$?d éé @  l €Å$?d `é`–üé @  l€Æ$?d  é@cþ @  l€Ç$?d àé}sÅ‹ @  l€È$?d éà7eJ @  l€É$?d `éHŸ3 @  l€Ê$?d  é0½Í @  l€Ë$?d àé3çß @  l€Ì$?d éã¯Sé @  l€Í$?d `éЩ @  l€Î$?d  é3%«n @  l€Ï$?d àéÆÄÌþ @  l€Ð$?d éò;@ã @  l€Ñ$?d `éDºš @  l€Ò$?d  é"±¸d @  l€Ó$?d àé!ëú¨ @  l€Ô$?d éñ£v@ @  l€Õ$?d ` éÜŒ9 @  l€Ö$?d   é!)ŽÇ @  l€×$?d à é ?’ë @  l €Ø$?d é{2* @  l!€Ù$?d ` é`ÈS @  l"€Ú$?d   é@ñÊ­ @  l#€Û$?d à éC«ˆa @  l$€Ü$?d é“㉠@  l%€Ý$?d ` écœþð @  l&€Þ$?d   éCiü @  l'€ß$?d à é+?¢B @  l(€à$?d é2qQM @  l)€á$?d ` é«4 @  l*€â$?d   éâû©Ê @  l+€ã$?d à éá¡ë @  l,€ä$?d é1égî @  l-€å$?d ` éÁ–— @  l.€æ$?d   éácŸi @  l/€ç$?d à éÜs¤õ @  l0€è$?d éA74 @  l1€é$?d `é±HþM @  l2€ê$?d  é‘½ü³ @  l3€ë$?d àé’ç¾ @  l4€ì$?d éB¯2— @  l5€í$?d `é²ÐÈî @  l6€î$?d  é’%Ê @  l7€ï$?d àégÄ­€ @  l8€ð$?d éÙ2 @  l9€ñ$?d `é)eëK @  l:€ò$?d  é éµ @  l;€ó$?d àé Ê«y @  l<€ô$?d éÚ‚'‘ @  l=€õ$?d `é*ýÝè @  l>€ö$?d  é ß @  l?€÷$?d àéˆŨ @  l@€ø$?d é]ei @  lA€ù$?d `éå"Ÿ @  lB€ú$?d  éÅ×î @  lC€û$?d àéÆß" @  lD€ü$?d éÅSÊ @  lE€ý$?d `é溩³ @  lF€þ$?d  éÆO«M @  lG€ÿ$?d àé<èᎠ@  lH€%?d é%¦ @  lI€%?d `éÕÙèø @  lJ€%?d  éõ,ê @  lK€%?d àéöv¨Ê @  lL€%?d é&>$" @  lM€%?d `éÖAÞ[ @  lN€%?d  éö´Ü¥ @  lO€%?d àéˤç9 @  lP€%?d éVàGø @  lQ€ %?d `馟½ @  lR€ %?d  é†j¿ @  lS€ %?d àé…0ý³ @  lT€ %?d éUxq[ @  lU€ %?d `饋" @  lV€%?d  é…ò‰Ü @  lW€%?d àépîL @  lX€%?d éDìbQ @  lY€%?d `é´“˜( @  lZ€%?d  é”fšÖ @  l[€%?d àé—<Ø @  l\€%?d éGtTò @  l]€%?d `é· ®‹ @  l^€%?d  é—þ¬u @  l_€%?d àé»è°Y @  l`€%?d é&¬˜ @  la€%?d `éÖÓêá @  lb€%?d  éö&è @  lc€%?d àéõ|ªÓ @  ld€%?d é%4&; @  le€%?d `éÕKÜB @  lf€%?d  éõ¾Þ¼ @  lg€%?d àéè€ð @  lh€ %?d 鄦sÿ @  li€!%?d `étÙ‰† @  lj€"%?d  éT,‹x @  lk€#%?d àéWvÉ´ @  ll€$%?d é‡>E\ @  lm€%%?d `éwA¿% @  ln€&%?d  éW´½Û @  lo€'%?d àéj¤†G @  lp€(%?d é÷à&† @  lq€)%?d `éŸÜÿ @  lr€*%?d  é'jÞ @  ls€+%?d àé$0œÍ @  lt€,%?d éôx% @  lu€-%?d `éê\ @  lv€.%?d  é$òè¢uÐ é @  lw€/%?d à鬓üN @  lx0%?d 8 éݘ"( @  ly1%?d x é-çØQ @  lz2%?d ¸ é Ú¯ @  l{3%?d ø éH˜c @  l|4%?d 8!éÞ‹ @  l}5%?d x!é.îò @  l~6%?d ¸!éŠì  @  l7%?d ø!éoÍÆƒ @  l€8%?d 8"éò‰fB @  l9%?d x"éöœ; @  l‚:%?d ¸"é"žÅ @  lƒ;%?d ø"é!YÜ  @  l„<%?d 8#éñPá @  l…=%?d x#énª˜ @  l†>%?d ¸#é!›¨f @  l‡?%?d ø#é¹ã; @  lˆ@%?d 8$é Ó4 @  l‰A%?d x$éP¬êM @  lŠB%?d ¸$épYè³ @  l‹C%?d ø$ésª @  lŒD%?d 8%é£K&— @  lE%?d x%éS4Üî @  lŽF%?d ¸%ésÁÞ @  lG%?d ø%éNÑåŒ @  lH%?d 8&éÓ•EM @  l‘I%?d x&é#ê¿4 @  l’J%?d ¸&é½Ê @  l“K%?d ø&éEÿ @  l”L%?d 8'éÐ sî @  l•M%?d x'é r‰— @  l–N%?d ¸'釋i @  l—O%?d ø'éõfìù @  l˜P%?d 8(éÁ™`ä @  l™Q%?d x(é1æš @  lšR%?d ¸(é˜c @  l›S%?d ø(éIÚ¯ @  lœT%?d 8)éÂVG @  lU%?d x)é2~¬> @  lžV%?d ¸)é‹®À @  lŸW%?d ø)é>²ì @  l X%?d 8*é£Ù- @  l¡Y%?d x*éS¦èT @  l¢Z%?d ¸*ésSêª @  l£[%?d ø*ép ¨f @  l¤\%?d 8+é A$Ž @  l¥]%?d x+éP>Þ÷ @  l¦^%?d ¸+épËÜ  @  l§_%?d ø+é‚E @  l¨`%?d 8,éÓqJ @  l©a%?d x,éñ¬‹3 @  lªb%?d ¸,éÑY‰Í @  l«c%?d ø,éÒË @  l¬d%?d 8-éKGé @  l­e%?d x-éò4½ @  l®f%?d ¸-éÒÁ¿n @  l¯g%?d ø-éïÑ„ò @  l°h%?d 8.ér•$3 @  l±i%?d x.é‚êÞJ @  l²j%?d ¸.é¢Ü´ @  l³k%?d ø.é¡Ežx @  l´l%?d 8/éq  @  lµm%?d x/érèé @  l¶n%?d ¸/顇ê @  l·o%?d ø/éTf‡ @  l¸p%?d 80éê¸15 @  l¹q%?d x0éÇËL @  lºr%?d ¸0é:2ɲ @  l»s%?d ø0é9h‹~ @  l¼t%?d 81éé – @  l½u%?d x1é_ýï @  l¾v%?d ¸1é9ªÿ @  l¿w%?d ø1é»»å¯ @  lÀx%?d 82é&ÿEn @  lÁy%?d x2éÖ€¿ @  lÂz%?d ¸2éöu½é @  lÃ{%?d ø2éõ/ÿ% @  lÄ|%?d 83é%gsÍ @  lÅ}%?d x3éÕ‰´ @  lÆ~%?d ¸3éõí‹J @  lÇ%?d ø3ép-”… @  lÈ€%?d 84éicgŠ @  lÉ%?d x4é™ó @  lÊ‚%?d ¸4é¹éŸ  @  l˃%?d ø4麳ÝÁ @  lÌ„%?d 85éjûQ) @  lÍ…%?d x5éš„«P @  lΆ%?d ¸5éºq©® @  lχ%?d ø5é‡a’2 @  lЈ%?d 86é%2ó @  lщ%?d x6éêZÈŠ @  lÒŠ%?d ¸6éʯÊt @  lÓ‹%?d ø6éÉõˆ¸ @  lÔŒ%?d 87é½P @  lÕ%?d x7ééÂþ) @  lÖŽ%?d ¸7éÉ7ü× @  l×%?d ø7é<Ö›G @  lØ%?d 88é)Z @  lÙ‘%?d x8éøVí# @  lÚ’%?d ¸8騣ïÝ @  lÛ“%?d ø8éÛù­ @  lÜ”%?d 89é ±!ù @  lÝ•%?d x9éûÎÛ€ @  lÞ–%?d ¸9éÛ;Ù~ @  lß—%?d ø9é÷-ÅR @  là˜%?d 8:éjie“ @  lá™%?d x:隟ê @  lâš%?d€ ¸:éÎ ² @  m›%?d ø:é,;‹W @  mœ%?d 8;éüs¿ @  m%?d x;éÉE+ @  mž%?d ¸;éé°Õ @  mŸ%?d ø;éOTã @  m %?d 8<éVöì @  m¡%?d x<éh×Sï @  m¢%?d ¸<éH"Q @  m £%?d ø<éŽ1è0 @  m ¤%?d 8=é^ydØ @  m ¥%?d x=ékOeL @  m ¦%?d ¸=éKºg² @  m §%?d ø=é¹=´ @  m¨%?d 8>éˆýu @  m©%?d x>é‘– @  mª%?d ¸>é;dh @  m«%?d ø>éýw½I @  m¬%?d 8?é-?1¡ @  m­%?d x?é 05 @  m®%?duÐ@é7 ¸?é8ü2Ë @  m¯%?d ø?é¯ ! @  m°%?d P@éÀ° @  m±%?d @é\ª> @  m²%?d Ð@éÞ;à @  m³%?d AéJñ5÷ @  m´%?d PAéÈ`") @  mµ%?d Aé_26 @  m¶%?d ÐAéÝ£!C @  m·%?d BéœuÌZ @  m¸%?d PBéäÛ„ @  m¹%?d Bé>êr÷ @  m º%?d ÐBé¼{e) @  m!»%?d Cé(±G> @  m"¼%?d PCéª Pà @  m#½%?d Cé=rDT @  m$¾%?d ÐCé¿ãSŠ @  m%¿%?d Dérˆ£| @  m&À%?d PDéð´¢ @  m'Á%?d Dél° @  m(Â%?d ÐDéî!_ @  m)Ã%?d Eézë1H @  m*Ä%?d PEéøz&– @  m+Å%?d Eéo(2" @  m,Æ%?d ÐEéí¹%ü @  m-Ç%?d Fé¬oÈå @  m.È%?d PFé.þß; @  m/É%?d FéöQø @  m0Ê%?d ÐFégF& @  m1Ë%?d Gé ­d1 @  m2Ì%?d PG鋨%?d PJéO´¯ë @  m?Ù%?d JéÁ½  @  m@Ú%?d ÐJéC,Ô @  mAÛ%?d Ké׿5à @  mBÜ%?d PKéUw" @  mCÝ%?d KéÂ%6© @  mDÞ%?d ÐKé@´!w @  mEß%?d Lé}Ä @  mFà%?d PLéÿÓN @  mGá%?d Léc·cm @  mHâ%?d ÐLéá&t³ @  mIã%?d MéuìV¤ @  mJä%?d PMé÷}Az @  mKå%?d Mé`/UÎ @  mLæ%?d ÐMéâ¾B @  mMç%?d Né£h¯  @  mNè%?d PNé!ù¸× @  mOé%?d Néñ6 @  mPê%?d ÐNé’`!Ê @  mQë%?d OéªÝ @  mRì%?d POé„; @  mSí%?d Oéi· @  mTî%?d ÐO鑸i @  mUï%?d Pé–ä„ï @  mVð%?d PPéu“1 @  mWñ%?d PéˆÜ# @  mXò%?d ÐPé M4Ì @  mYó%?d Qéž‡Û @  mZô%?d PQé @  m[õ%?d Qé‹D± @  m\ö%?d ÐQé Õo @  m]÷%?d RéHïv @  m^ø%?d PRéÊ’ø¨ @  m_ù%?d RéêœQÛ @  m`ú%?d ÐRéh F @  maû%?d SéüÇd @  mbü%?d PSé~VsÌ @  mcý%?d Séégx @  mdþ%?d ÐSék•p¦ @  meÿ%?d Tév}´ë @  mf&?d PTéôì£5 @  mg&?d TéhE @  mh&?d ÐTéêÔÈ @  mi&?d Ué~&ß @  mj&?d PUéü1 @  mk&?d UékÝ%µ @  ml&?d ÐUééL2k @  mm&?d V騚ßr @  mn&?d PVé* Ȭ @  mo &?d VéFo @  mp &?d ÐVé™’Q± @  mq &?d Wé Xs¦ @  mr &?d PWéÉdx @  ms &?d Wé›pÌ @  mt&?d ÐWéš g @  mu&?d Xé7Ä; @  mv&?d PX镦Óå @  mw&?d Xé cÆ @  mx&?d ÐX鋞t @  my&?d YéTV @  mz&?d PYéÅAÑ @  m{&?d Yé —Ue @  m|&?d ÐYéˆB» @  m}&?d ZéÉЯ¢ @  m~&?d PZéKA¸| @  m&?d Zé&'¬ @  m€&?d ÐZé¤0r @  m&?d [é0Ee @  m‚&?d P[é²Ô» @  mƒ&?d [é%† @  m„&?d Ð[é§Ñ @  m…&?d \éš,ã6 @  m† &?d P\é½ôè @  m‡!&?d \é„DË @  mˆ"&?d Ð\é…S @  m‰#&?d ]é’Oq @  mŠ$&?d P]éÞfÜ @  m‹%&?d ]里rh @  mŒ&&?d Ð]ée¶ @  m'&?d ^éDˈ¯ @  mŽ(&?d P^éÆZŸq @  m)&?d ^é÷R² @  m*&?d Ð^éuÃl @  m‘+&?d _éá ${ @  m’,&?d P_éc˜3¥ @  m“-&?d _éôÊ' @  muÐ`é”.&?d Ð_é ÛC³ @  m•€/&?d (`é áÙ @  m–€0&?d h`éŽpÎÁ @  m—€1&?d ¨`éÙ~â @  m˜€2&?d è`éHi< @  m™€3&?d (aé‚K+ @  mš€4&?d haé†\õ @  m›€5&?d ¨aéAHA @  mœ€6&?d èaé“Ð_Ÿ @  m€7&?d (béÒ²† @  mž€8&?d hbéP—¥X @  mŸ€9&?d ¨bép™ + @  m €:&?d èbéòõ @  m¡€;&?d (céfÂ9â @  m¢€<&?d hcéäS.< @  m£€=&?d ¨cés:ˆ @  m¤€>&?d ècéñ-V @  m¥€?&?d (dé<ûÝ  @  m¦€@&?d hdé¾jÊ~ @  m§€A&?d ¨dé"Ãz] @  m¨€B&?d èdé Rmƒ @  m©€C&?d (eé4˜O” @  mª€D&?d heé¶ XJ @  m«€E&?d ¨eé![Lþ @  m¬€F&?d èeé£Ê[  @  m­€G&?d (féâ¶9 @  m®€H&?d hfé`¡ç @  m¯€I&?d ¨féQ…/$ @  m°€J&?d èféÓ8ú @  m±€K&?d (géGÞí @  m²€L&?d hgéÅO 3 @  m³€M&?d ¨géR‡ @  m´€N&?d ègéÐŒY @  mµ€O&?d (hé]±­p @  m¶€P&?d hhéß º® @  m·€Q&?d ¨héC‰  @  m¸€R&?d èhéÁS @  m¹€S&?d (iéUÒ?D @  mº€T&?d hié×C(š @  m»€U&?d ¨ié@<. @  m¼€V&?d èié€+ð @  m½€W&?d (jéƒVÆé @  m¾€X&?d hjéÇÑ7 @  m¿€Y&?d ¨jéÎ~Ö @  mÀ€Z&?d èjé _i @  mÁ€[&?d (k陕K @  m€\&?d hké\Á @  mÀ]&?d ¨kéŒVHu @  mÄ€^&?d èkéÇ_« @  mÅ€_&?d (lé3üºL @  mÆ€`&?d hlé±m­’ @  mÇ€a&?d ¨lé-ı @  mÈ€b&?d èlé¯U o @  mÉ€c&?d (mé;Ÿ(x @  mÊ€d&?d hmé¹?¦ @  mË€e&?d ¨mé.\+ @  mÌ€f&?d èmé¬Í<Ì @  mÍ€g&?d (néíÑÕ @  m΀h&?d hnéoŠÆ  @  mÏ€i&?d ¨né^‚HÈ @  mЀj&?d ènéÜ_ @  mÑ€k&?d (oéHÙ} @  mÒ€l&?d hoéÊHjß @  mÓ€m&?d ¨oé]~k @  mÔ€n&?d èoéß‹iµ @  mÕ€o&?d (p騗ú3 @  mÖ€p&?d hpéZíí @  m×€q&?d ¨péƯ]Î @  mØ€r&?d èpéD>J @  mÙ€s&?d (qéÐôh @  mÚ€t&?d hqéReÙ @  mÛ€u&?d ¨qéÅ7km @  mÜ€v&?d èqéG¦|³ @  mÝ€w&?d (rép‘ª @  mÞ€x&?d hré„á†t @  m߀y&?d ¨ré¤ï/ @  mà€z&?d èré&~8Ù @  má€{&?d (sé²´Î @  mâ€|&?d€ hséñbú @  n€}&?d ¨sé‡q¦ @  n€~&?d èséà±S @  n€&?d (téîÚ @  n€€&?d hté’•ù @  n€&?d ¨téÀŽ] @  n€‚&?d ètéBƒ @  n€ƒ&?d (uég|î @  n€„&?d huéšök0 @  n €…&?d ¨uéÈí„i @  n €†&?d èuéJ|“· @  n €‡&?d (véÎã…C @  n €ˆ&?d hvéLr’ @  n €‰&?d ¨véi}Ä @  n€Š&?d èvéœøj @  n€‹&?d (wék!)— @  n€Œ&?d hwéé°>I @  n€&?d ¨wé»«Ñ @  n€Ž&?d èwé9:ÆÎ @  n€&?d (xéqNž  @  n€&?d hxéó߉Ô @  n€‘&?d ¨xé¡Äf @  n€’&?d èxé#UqS @  n€“&?d (yéy- > @  n€”&?d hyéû¼à @  n€•&?d ¨yé©§ô¹ @  n€–&?d èyé+6ãg @  n€—&?d (z鯩õ“ @  n€˜&?d hzé-8âM @  n€™&?d ¨zé#  @  n€š&?d èzéý²Ê @  n€›&?d ({ém~÷ @  n €œ&?d h{é™üi) @  n!€&?d ¨{éËç†p @  n"€ž&?d è{éIv‘® @  n#€Ÿ&?d (|鱤 @  n$€ &?d h|é3•˜z @  n%€¡&?d ¨|éaŽw# @  n&€¢&?d è|éã`ý @  n'€£&?d (}é¹g @  n(€¤&?d h}é;ö N @  n)€¥&?d ¨}éiíå @  n*€¦&?d è}éë|òÉ @  n+€§&?d (~éoãä= @  n,€¨&?d h~éíróã @  n-€©&?d ¨~é¿iº @  n.€ª&?d è~é=ø d @  n/€«&?d (éÊ!Hé @  n0€¬&?d héH°_7 @  n1€­&?d ¨éuЀé'«°n @  n2€®&?d èéåºÔÌ @  n3¯&?d @€é÷âa @  n4°&?d €€é×zàŸ @  n5±&?d À€é'æ @  n6²&?d é÷M– @  n7³&?d @éÿìpU @  n8´&?d €éßr« @  n9µ&?d Àé/fˆÒ @  n:¶&?d ‚é²"( @  n;·&?d @‚é)h‰ø @  n<¸&?d €‚é ‹ @  n=¹&?d À‚éùâq @  n>º&?d ƒé)ªý— @  n?»&?d @ƒé3« @  n@¼&?d €ƒé^ð @  nA½&?d Àƒéã!ü‰ @  nB¾&?d „éúo† @  nC¿&?d @„éi’àL @  nDÀ&?d €„éIgâ² @  nEÁ&?d À„é¹Ë @  nFÂ&?d …éiP”# @  nGÃ&?d @…éañrx @  nHÄ&?d €…éAp† @  nIÅ&?d À…é±{Šÿ @  nJÆ&?d †é,?*> @  nKÇ&?d @†é·u‹Õ @  nLÈ&?d €†é—€‰+ @  nMÉ&?d À†égÿsR @  nNÊ&?d ‡é··ÿº @  nOË&?d @‡é·' @  nPÌ&?d €‡é2B%ÿ @  nQÍ&?d À‡éÂ=߆ @  nRÎ&?d ˆéöÂS› @  nSÏ&?d @ˆéØœ @  nTÐ&?d €ˆé(-’b @  nUÑ&?d ÀˆéØRh @  nVÒ&?d ‰éäó @  nWÓ&?d @‰é»¨ @  nXÔ&?d €‰é NV @  nYÕ&?d À‰éÐ1ú/ @  nZÖ&?d ŠéMuZî @  n[×&?d @ŠéÖ?û @  n\Ø&?d €ŠéöÊùû @  n]Ù&?d ÀŠéµ‚ @  n^Ú&?d ‹éÖýj @  n_Û&?d @‹ébûpa @  n`Ü&?d €‹éBrŸ @  naÝ&?d À‹é²qˆæ @  nbÞ&?d Œé«?{é @  ncß&?d @ŒéÈ’2 @  ndà&?d €ŒéègƒÌ @  neá&?d ÀŒéyµ @  nfâ&?d éÈPõ] @  ngã&?d @éÀñ @  nhä&?d €éàø @  niå&?d Àé{ë @  njæ&?d Žé?K@ @  nkç&?d @Žéuê« @  nlè&?d €Žé6€èU @  nmé&?d ÀŽéÆÿ, @  nnê&?d é·žÄ @  noë&?d @é³·F @  npì&?d €é“BD @  nqí&?d Àéc=¾ø @  nrî&?d éÝãJ @  nsï&?d @é#ùÁM @  ntð&?d €é ó @  nuñ&?d Àéós9Ê @  nvò&?d ‘é#;µ" @  nwó&?d @‘é+šSy @  nxô&?d €‘é oQ‡ @  nyõ&?d À‘éû«þ @  nzö&?d ’éfT ? @  n{÷&?d @’éýªÔ @  n|ø&?d €’éÝë¨* @  n}ù&?d À’é-”RS @  n~ú&?d “éýÜÞ» @  nû&?d @“é‹ @  n€ü&?d €“é$~í @  ný&?d À“éÔï” @  n‚þ&?d ”éÍO› @  nƒÿ&?d @”é<òÏ @  n„'?d €”éæð1 @  n…'?d À”éì™ H @  n†'?d •é<ц  @  n‡'?d @•é4p`û @  nˆ'?d €•é…b @  n‰'?d À•éäú˜| @  nŠ'?d –éy¾8½ @  n‹'?d @–éâô™V @  nŒ'?d €–雨 @  n '?d À–é2~aÑ @  nŽ '?d —éâ6í9 @  n '?d @—éG65‚ @  n '?d €—égÃ7| @  n‘ '?d À—é—¼Í @  n’'?d ˜é£CA @  n“'?d @˜é]Y‚ @  n”'?d €˜é}¬€á @  n•'?d À˜éÓz˜ @  n–'?d ™é]›öp @  n—'?d @™éU:+ @  n˜'?d €™éuÏÕ @  n™'?d À™é…°è¬ @  nš'?d šéôHm @  n›'?d @šéƒ¾é† @  nœ'?d €šé£Këx @  n'?d ÀšéS4 @  nž'?d ›éƒ|é @  nŸ'?d @›é7zbâ @  n '?d €›é` @  n¡'?d À›éçðše @  n¢'?d œéþ¾ij @  n£'?d @œé“± @  n¤ '?d €œé½æ‘O @  n¥!'?d ÀœéM™k6 @  n¦"'?d éÑçÞ @  n§#'?d @é•p… @  n¨$'?d €éµ…{ @  n©%'?d ÀéEúù @  nª&'?d žéؾYà @  n«''?d @žéCôø( @  n¬('?d €žécúÖ @  n­)'?d Àžé“~¯ @  n®*'?d ŸéC6ŒG @  n¯+'?d @Ÿéæ6Tü @  n°,'?d €ŸéÆÃV @  n±-'uРé?d ÀŸé6¼¬{ @  n².'?d  éG·r @  n³/'?d X é¹­± @  n´0'?d ˜ é™X³ä @  nµ1'?d Ø éi'I @  n¶2'?d ¡é¹oÅu @  n·3'?d X¡é±Î#. @  n¸4'?d ˜¡é‘;!Ð @  n¹5'?d Ø¡éaDÛ© @  nº6'?d ¢éü{h @  n»7'?d X¢égJÚƒ @  n¼8'?d ˜¢éG¿Ø} @  n½9'?d Ø¢é·À" @  n¾:'?d £égˆ®ì @  n¿;'?d X£é}‰Wu @  nÀ<'?d ˜£é]|U‹ @  nÁ='?d أ魯ò @  nÂ>'?d ¤é´M\ý @  nÃ?'?d X¤é'°³7 @  nÄ@'?d ˜¤éE±É @  nÅA'?d ؤé÷:K° @  nÆB'?d ¥é'rÇX @  nÇC'?d X¥é/Ó! @  nÈD'?d ˜¥é&#ý @  nÉE'?d Ø¥éÿYÙ„ @  nÊF'?d ¦ébyE @  nËG'?d X¦éùWØ® @  nÌH'?d ˜¦éÙ¢ÚP @  nÍI'?d ئé)Ý ) @  nÎJ'?d §éù•¬Á @  nÏK'?d X§é\•tz @  nÐL'?d ˜§é|`v„ @  nÑM'?d ا錌ý @  nÒN'?d ¨é¸àà @  nÓO'?d X¨éFúÃç @  nÔP'?d ˜¨éfÁ @  nÕQ'?d بé–p;` @  nÖR'?d ©éF8·ˆ @  n×S'?d X©éN™QÓ @  nØT'?d ˜©énlS- @  nÙU'?d ة鞩T @  nÚV'?d ªéW • @  nÛW'?d Xªé˜¨~ @  nÜX'?d ˜ªé¸èª€ @  nÝY'?d تéH—Pù @  nÞZ'?d «é˜ßÜ @  nß['?d X«é,Ù# @  nà\'?d ˜«é ,!ä @  ná]'?d Ø«éüSÛ @  nâ^'?d€ ¬é‘Þ44 @  o_'?d X¬é2†Æ @  o`'?d ˜¬é3Ç„8 @  oa'?d جéñ…¬ @  ob'?d ­éÖ¹ D @  oc'?d X­éª°e @  od'?d ˜­é0_²› @  oe'?d Ø­é’˜ @  of'?d ®é“Ö·Y @  o g'?d X®éÍÕí_ @  o h'?d ˜®éí ï¡ @  o i'?d Ø®éØî5 @  o j'?d ¯é^bÝ @  o k'?d X¯éÎMÛü @  ol'?d ˜¯éî¸Ù @  om'?d دé}ÔBá @  on'?d °éà þS @  oo'?d X°éøYƹ @  op'?d ˜°éجÄG @  oq'?d ذéíšÅÓ @  or'?d ±é=ÒI; @  os'?d X±éûÁð @  ot'?d ˜±éÛ4òä @  ou'?d رéåùWç @  ov'?d ²éx½÷& @  ow'?d X²é&¾­  @  ox'?d ˜²éK¯Þ @  oy'?d زé3}®J @  oz'?d ³éã5"¢ @  o{'?d X³é%&›ƒ @  o|'?d ˜³éÓ™} @  o}'?d س釹%. @  o ~'?d ´éž÷Ö! @  o!'?d X´éÕ…–” @  o"€'?d ˜´éõp”j @  o#'?d Ø´éÀF•þ @  o$‚'?d µé @  o%ƒ'?d XµéÖ 7 @  o&„'?d ˜µéöè¢É @  o'…'?d صéÈ%Ê @  o(†'?d ¶éUa§  @  o)‡'?d X¶é bý  @  o*ˆ'?d ˜¶é+—ÿó @  o+‰'?d ضé¡þg @  o,Š'?d ·éÎér @  o-‹'?d X·éúË® @  o.Œ'?d ˜·é(ÉP @  o/'?d Ø·é»cR³ @  o0Ž'?d ¸éœÞ® @  o1'?d X¸é´ÏæD @  o2'?d ˜¸é”:äº @  o3‘'?d ظé¡ å. @  o4’'?d ¹éqDiÆ @  o5“'?d X¹é·WÐç @  o6”'?d ˜¹é—¢Ò @  o7•'?d عé©ow @  o8–'?d ºé4+×Û @  o9—'?d Xºéj(Ý @  o:˜'?d ˜ºéJÝ# @  o;™'?d غé뎷 @  o<š'?d »é¯£_ @  o=›'?d X»éi°»~ @  o>œ'?d ˜»éIE¹€ @  o?'?d Ø»ée(A @  o@ž'?d ¼é|fðN @  oAŸ'?d X¼éÚ‚ñx @  oB '?d ˜¼éúwó† @  oC¡'?d ؼéÏAò @  oD¢'?d ½é ~ú @  oE£'?d X½éÙÇÛ @  oF¤'?d ˜½éùïÅ% @  oG¥'?d ؽéÇ"`& @  oH¦'?d ¾éZfÀç @  oI§'?d X¾éešá @  oJ¨'?d ˜¾é$˜ @  oK©'?d ؾ香‹ @  oLª'?d ¿éÁîc @  oM«'?d X¿éý¬B @  oN¬'?d ˜¿é'®¼ @uÐÀé  oO­'?d Ø¿éÉäF# @  oP€®'?d 0Àé­q @  oQ€¯'?d pÀé–G/› @  oR€°'?d °Àé¶²-e @  oS€±'?d ðÀ郄,ñ @  oT€²'?d 0ÁéSÌ  @  oU€³'?d pÁé•ß8 @  oV€´'?d °Áéµ*Æ @  oW€µ'?d ðÁé‹ç¾Å @  oX€¶'?d 0Âé£ @  oY€·'?d pÂéH D @  oZ€¸'?d °ÂéhUFü @  o[€¹'?d ðÂé]cGh @  o\€º'?d 0Ãé+Ë€ @  o]€»'?d pÃéK8r¡ @  o^€¼'?d °ÃékÍp_ @  o_€½'?d ðÃéé§Ì  @  o`€¾'?d 0Äéðé? @  oa€¿'?d pÄé¦]+$ @  ob€À'?d °Ä醨)Ú @  oc€Á'?d ðÄ鳞(N @  od€Â'?d 0ÅécÖ¤¦ @  oe€Ã'?d pÅé¥Å‡ @  of€Ä'?d °Åé…0y @  og€Å'?d ðÅé»ýºz @  oh€Æ'?d 0Æé&¹» @  oi€Ç'?d pÆéxº@½ @  oj€È'?d °ÆéXOBC @  ok€É'?d ðÆémyC× @  ol€Ê'?d 0Çé½1Ï? @  om€Ë'?d pÇé{"v @  on€Ì'?d °Çé[×tà @  oo€Í'?d ðÇéÈ»ï @  op€Î'?d 0ÈéüDc @  oq€Ï'?d pÈéÇ[ô @  or€Ð'?d °ÈéçâY  @  os€Ñ'?d ðÈéÒÔXž @  ot€Ò'?d 0ÉéœÔv @  ou€Ó'?d pÉéÄmW @  ov€Ô'?d °Ééäzo© @  ow€Õ'?d ðÉéڷʪ @  ox€Ö'?d 0ÊéGójk @  oy€×'?d pÊéð0m @  oz€Ø'?d °Êé92“ @  o{€Ù'?d ðÊé 33 @  o|€Ú'?d 0ËéÜ{¿ï @  o}€Û'?d pËéhÎ @  o~€Ü'?d °Ëé:0 @  o€Ý'?d ðËéõ¦ŽÀ @  o€€Þ'?d 0Ìéìè}Ï @  o€ß'?d pÌéJ |ù @  o‚€à'?d °Ìéjù~ @  oƒ€á'?d ðÌé_Ï“ @  o„€â'?d 0Íé‡ó{ @  o…€ã'?d pÍéI”JZ @  o†€ä'?d °ÍéiaH¤ @  o‡€å'?d ðÍéW¬í§ @  oˆ€æ'?d 0ÎéÊèMf @  o‰€ç'?d pÎé”ë` @  oŠ€è'?d °Îé´ž @  o‹€é'?d ðÎé(  @  oŒ€ê'?d 0ÏéQ`˜â @  o€ë'?d pÏé—s!à @  oŽ€ì'?d °Ïé·†#= @  o€í'?d ðÏé$ê¸Þ @  o€î'?d 0Ðéš4l @  o‘€ï'?d pÐé¡g<† @  o’€ð'?d °Ðé’>x @  o“€ñ'?d ðÐé´¤?ì @  o”€ò'?d 0Ñédì³ @  o•€ó'?d pÑé¢ÿ % @  o–€ô'?d °Ñé‚ Û @  o—€õ'?d ðÑé¼Ç­Ø @  o˜€ö'?d 0Òé!ƒ  @  o™€÷'?d pÒé€W @  oš€ø'?d °Òé_uUá @  o›€ù'?d ðÒéjCTu @  oœ€ú'?d 0Óéº Ø @  o€û'?d pÓé|a¼ @  ož€ü'?d °Óé\ícB @  oŸ€ý'?d ðÓéÞ‡ß @  o €þ'?d 0ÔéÇÉ, @  o¡€ÿ'?d pÔéïH @  o¢€(?d °Ôé6 ¶ @  o£€(?d ðÔé, " @  o¤€(?d 0ÕéÓd‡Ê @  o¥€(?d pÕéw>ë @  o¦€(?d °Õé5‚< @  o§€(?d ðÕé O™ @  o¨€(?d 0Öé– 9× @  o©€(?d pÖéÈcÑ @  oª€(?d °Öéèýa/ @  o«€ (?d ðÖéÝË`» @  o¬€ (?d 0×é ƒìS @  o­€ (?d p×éËUr @  o®€ (?d °×éëeWŒ @  o¯€ (?d ð×éx Ìo @  o°€(?d 0ØéLö@r @  o±€(?d pØéw¥x˜ @  o²€(?d °ØéWPzf @  o³€(?d ðØébf{ò @  o´€(?d 0Ùé².÷ @  oµ€(?d pÙét=N; @  o¶€(?d °ÙéTÈLÅ @  o·€(?d ðÙéjéÆ @  o¸€(?d 0Úé÷AI @  o¹€(?d pÚé©B @  oº€(?d °Ú鉷ÿ @  o»€(?d ðÚé¼k @  o¼€(?d 0ÛélÉœƒ @  o½€(?d pÛéªÚ%¢ @  o¾€(?d °ÛéŠ/'\ @  o¿€(?d ðÛé¦B @  oÀ€(?d 0Üé¿ n’ @  oÁ€(?d pÜéèo¤ @  o€ (?d °Üé9mZ @  oÀ!(?d ðÜé +lÎ @  oÄ€"(?d 0ÝéÜcà& @  oÅ€#(?d pÝépY @  oÆ€$(?d °Ýé:…[ù @  oÇ€%(?d ðÝéHþú @  oÈ€&(?d 0Þé™ ^; @  oÉ€'(?d pÞéÇ= @  oÊ€((?d °Þéçúà @  oË€)(?d ðÞéÒÌW @  oÌ€*(?d 0ßé„‹¿ @  oÍ€+(?d pßéÄ—2ž @  o΀,(?d uÐàé/°ßéäb0` @  oÏ€-(?d ðßé3I* @  oÐ .(?d Hàé*íZÜ @  oÑ /(?d ˆàé³Úw @  oÒ 0(?d Èàé1K`È @  oÓ 1(?d áéV¤új @  oÔ 2(?d HáéÔ5í´ @  oÕ 3(?d ˆáé°BAµ @  oÖ 4(?d Èáé2ÓVk @  o× 5(?d âéËDw @  oØ 6(?d Hâé‘ZS© @  oÙ 7(?d ˆâém= @  oÚ 8(?d Èâéï¬ Q @  oÛ 9(?d ãéˆC‘ó @  oÜ :(?d Hãé Ò†- @  oÝ ;(?d ˆãén¥*, @  oÞ <(?d Èãéì4=ò @  oß =(?d äéõep @  oà >(?d Häéwr® @  oá ?(?d ˆäéƒÀs© @  oâ @(?d€ Èäéj ˆ™ @  p A(?d åéì£Z @  p B(?d Håén2MÌ @  p C(?d ˆåéÏ   @  p D(?d ÈåéM þ @  p E(?d æé¢7@˜ @  p F(?d Hæé ¦WF @  p G(?d ˆæésG @  p H(?d ÈæéâPÄ @  p I(?d çé2D1‹ @  p J(?d Hçé°Õ&U @  p K(?d ˆçéëq¹ @  p L(?d Èçé“zfg @  p M(?d èéÕkÝ @  p N(?d HèéWú @  p O(?d ˆèé­Þ\S @  p P(?d Èèé/OK @  p Q(?d ééé* @  p R(?d Hééx= @  p S(?d ˆéé®Fjð @  p T(?d Èéé,×}. @  p U(?d êéÃ}0H @  p V(?d HêéAì'– @  p W(?d ˆêés97Ê @  p X(?d Èêéñ¨  @  p Y(?d ëéSA[ @  p Z(?d HëéÑŸV… @  p [(?d ˆëép¡i @  p \(?d Èëéò0· @  p ](?d ìé™ @  p ^(?d HìéÁ @  p _(?d ˆìém”Mý @  p `(?d ÈìéïZ# @  p! a(?d íéM£;l @  p" b(?d HíéÏ2,² @  p# c(?d ˆíén {^ @  p$ d(?d Èíéìl€ @  p% e(?d îé7!æ @  p& f(?d Hîé¦68 @  p' g(?d ˆîé³s&d @  p( h(?d Èîé1â1º @  p) i(?d ïé“DPõ @  p* j(?d HïéÕG+ @  p+ k(?d ˆïé°ëÇ @  p, l(?d Èïé2z @  p- m(?d ðéþJV  @  p. n(?d Hðé|ÛAÒ @  p/ o(?d ˆðé†ÿ ‚ @  p0 p(?d Èðén\ @  p1 q(?d ñé¦È{ @  p2 r(?d Hñé$YlÍ @  p3 s(?d ˆñé…g;! @  p4 t(?d Èñéö,ÿ @  p5 u(?d òéè\a™ @  p6 v(?d HòéjÍvG @  p7 w(?d ˆòéXf @  p8 x(?d ÈòéÚ‰qÅ @  p9 y(?d óéx/Š @  p: z(?d Hóéú¾T @  p; {(?d ˆóé[€P¸ @  p< |(?d ÈóéÙGf @  p= }(?d ôé²±YÎ @  p> ~(?d Hôé0 N @  p? (?d ˆôé$[= @  p@ €(?d Èô釵Lã @  pA (?d õé%-¬ @  pB ‚(?d Hõé§‚:r @  pC ƒ(?d ˆõé¼mž @  pD „(?d Èõé„-z@ @  pE …(?d öék‡7& @  pF †(?d Höéé ø @  pG ‡(?d ˆöéÛÃ0¤ @  pH ˆ(?d ÈöéYR'z @  pI ‰(?d ÷éûôF5 @  pJ Š(?d H÷éyeQë @  pK ‹(?d ˆ÷éØ[ @  pL Œ(?d È÷éZÊÙ @  pM (?d øéÛpc @  pN Ž(?d HøéžJg½ @  pO (?d ˆøédn+í @  pP (?d Èøéæÿ<3 @  pQ ‘(?d ùéDY]| @  pR ’(?d HùéÆÈJ¢ @  pS “(?d ˆùégöN @  pT ”(?d Èùéåg  @  pU •(?d úé ÍGö @  pV –(?d Húéˆ\P( @  pW —(?d ˆú麉@t @  pX ˜(?d Èúé8Wª @  pY ™(?d ûéš¾6å @  pZ š(?d Hûé/!; @  p[ ›(?d ˆûé¹v× @  p\ œ(?d Èûé;€a  @  p] (?d üéP ¡ @  p^ ž(?d HüéÒ±h @  p_ Ÿ(?d ˆüé¤$:C @  p`  (?d Èüé&µ- @  pa ¡(?d ýé„LÒ @  pb ¢(?d Hýé‚[  @  pc £(?d ˆýé§¼ à @  pd ¤(?d Èýé%-> @  pe ¥(?d þéʇVX @  pf ¦(?d HþéHA† @  pg §(?d ˆþézÃQÚ @  ph ¨(?d ÈþéøRF @  pi ©(?d ÿéZô'K @  pj ª(?d HÿéØe0• @  pk «(?d ˆÿéy[gy @  pl uÐê¬(?d Èÿé ¬r @  pm­(?d ê´ Â @  pn®(?d `ê6ƒ @  po¯(?d  ȩ̂RL @  pp°(?d àêN6E’ @  pq±(?d êì$Ý @  pr²(?d `ên3 @  ps³(?d  êÏ?dï @  pt´(?d àêM®s1 @  puµ(?d ê¢>W @  pv¶(?d `ê •)‰ @  pw·(?d  ê@9Õ @  px¸(?d àêÑ.  @  py¹(?d ê2wOD @  pzº(?d `ê°æXš @  p{»(?d  êØv @  p|¼(?d àê“I¨ @  p}½(?d êøé @  p~¾(?d `êzxÞ @  p¿(?d  ê±ì`P @  p€À(?d àê3}wŽ @  pÁ(?d ê‘ÛÁ @  p‚Â(?d `êJ @  pƒÃ(?d  ê²tVó @  p„Ä(?d àê0åA- @  p…Å(?d êßO K @  p†Æ(?d `ê]Þ• @  p‡Ç(?d  êo É @  pˆÈ(?d àêíš @  p‰É(?d êO<}X @  pŠÊ(?d `êÍ­j† @  p‹Ë(?d  êl“=j @  pŒÌ(?d àêî*´ @  pÍ(?d ê¨K @  pŽÎ(?d `ê*‚\Ð @  pÏ(?d  êЦ€ @  pÐ(?d àêR7^ @  p‘Ñ(?d êð‘f @  p’Ò(?d ` êrqÏ @  p“Ó(?d   êÓ>&# @  p”Ô(?d à êQ¯1ý @  p•Õ(?d ê¾|› @  p–Ö(?d ` ê<”kE @  p—×(?d   êA{ @  p˜Ø(?d à êŒÐlÇ @  p™Ù(?d ê.v ˆ @  pšÚ(?d ` ê¬çV @  p›Û(?d   ê ÙMº @  pœÜ(?d à êHZd @  pÝ(?d êäèDÌ @  pžÞ(?d ` êfyS @  pŸß(?d   êì. @  p à(?d à ê’}ð @  p¡á(?d ê0Ûw¿ @  p¢â(?d ` ê²J`a @  p£ã(?d   êt7 @  p¤ä(?d à ê‘å S @  p¥å(?d ê~Om5 @  p¦æ(?d `êüÞzë @  p§ç(?d  êÎ j· @  p¨è(?d àêLš}i @  p©é(?d êî<& @  pªê(?d `êl­ ø @  p«ë(?d  êÍ“\ @  p¬ì(?d àêOKÊ @  p­í(?d êƒ2ß @  p®î(?d `ê£  @  p¯ï(?d  êû‡AQ @  p°ð(?d àêyV @  p±ñ(?d êÛ°7À @  p²ò(?d `êY!  @  p³ó(?d  êøwò @  p´ô(?d àêzŽ`, @  pµõ(?d ê•$-J @  p¶ö(?d `êµ:” @  p·÷(?d  ê%`*È @  p¸ø(?d àê§ñ= @  p¹ù(?d êW\Y @  pºú(?d `ê‡ÆK‡ @  p»û(?d  ê&øk @  p¼ü(?d àê¤i µ @  p½ý(?d êÏÉ @  p¾þ(?d `êMXà @  p¿ÿ(?d  ê;Bâ @  pÀ)?d àê…ªU< @  pÁ)?d ê' 4s @  pÂ)?d `ê¥#­ @  pÃ)?d  ê£tA @  pÄ)?d àê†2cŸ @  pÅ)?d êi˜.ù @  pÆ)?d `êë 9' @  pÇ)?d  êÙÜ){ @  pÈ)?d àê[M>¥ @  pÉ )?d êùë_ê @  pÊ )?d `ê{zH4 @  pË )?d  êÚDØ @  pÌ )?d àêXÕ @  pÍ )?d êÄi¼ @  pÎ)?d `êœU~b @  pÏ)?d  êfq22 @  pÐ)?d àêäà%ì @  pÑ)?d êFFD£ @  pÒ)?d `êÄ×S} @  pÓ)?d  êeé‘ @  pÔ)?d àêçxO @  pÕ)?d êÒ^) @  pÖ)?d `êŠCI÷ @  p×)?d  ê¸–Y« @  pØ)?d àê:Nu @  pÙ)?d ꘡/: @  pÚ)?d `ê08ä @  pÛ)?d  ê»o @  pÜ)?d àê9ŸxÖ @  pÝ)?d êR?f~ @  pÞ)?d `êЮq  @  pß)?d  ê¦;#œ @  pà )?d àê$ª4B @  pá!)?d ê† U  @  pâ")?d€ `êp^^u @  q#)?d  ê0!A° @  q$)?d àê²°Vn @  q%)?d ê˜Sàå @  q&)?d `êÂ÷; @  q')?d  ê楸 @  q()?d àêd4¯Ã @  q))?d ê ‘ö @  q*)?d `êб†( @  q +)?d  êîÆ*)uÐ ê @  q ,)?d àêlW=÷ @  q -)?d 8 êªûõÛ @  q .)?d x ê(jâ @  q /)?d ¸ ê±]ÏÏ @  q0)?d ø ê3ÌØ @  q1)?d 8!êòyØÄ @  q2)?d x!êpèÏ @  q3)?d ¸!êŸc @  q4)?d ø!ê–tÅ @  q5)?d 8"ê¼íÂN @  q6)?d x"ê>|Õ @  q7)?d ¸"êš¶ @  q8)?d ø"ê@Šh @  q9)?d 8#ê,ž³] @  q:)?d x#ꮤƒ @  q;)?d ¸#êÊx‚ @  q<)?d ø#êHé\ @  q=)?d 8$êæú @  q>)?d x$êd‘íÇ @  q?)?d ¸$êAìÀ @  q@)?d ø$êÐû @  qA)?d 8%êÂcÜ{ @  q B)?d x%ê@òË¥ @  q!C)?d ¸%ê$…g¤ @  q"D)?d ø%ê¦pz @  q#E)?d 8&êŒ÷Æñ @  q$F)?d x&êfÑ/ @  q%G)?d ¸&êòž  @  q&H)?d ø&êp‰× @  q'I)?d 8'ê„·â @  q(J)?d x'êž < @  q)K)?d ¸'êúb = @  q*L)?d ø'êxóã @  q+M)?d 8(êû«´ @  q,N)?d x(êy:–j @  q-O)?d ¸(êà »  @  q.P)?d ø(êbœ¬~ @  q/Q)?d 8)ê£)¬« @  q0R)?d x)ê!¸»u @  q1S)?d ¸)êEÏt @  q2T)?d ø)êÇ^ª @  q3U)?d 8*êí½¶! @  q4V)?d x*êo,¡ÿ @  q5W)?d ¸*ê“KîÙ @  q6X)?d ø*êÚù @  q7Y)?d 8+ê}ÎÇ2 @  q8Z)?d x+êÿ_Ðì @  q9[)?d ¸+ê›(|í @  q:\)?d ø+ê¹k3 @  q;])?d 8,ê·PŽv @  q<^)?d x,ê5Á™¨ @  q=_)?d ¸,ê1A¾ @  q>`)?d ø,ê³Ðš` @  q?a)?d 8-êÍd»— @  q@b)?d x-êOõ¬I @  qAc)?d ¸-ê+‚H @  qBd)?d ø-ê©– @  qCe)?d 8.êƒð¡ @  qDf)?d x.êa¶Ã @  qEg)?d ¸.êýùå @  qFh)?d ø.ê—î; @  qGi)?d 8/êƒÐ @  qHj)?d x/ê‘ÇÐ @  qIk)?d ¸/êõekÑ @  qJl)?d ø/êwô| @  qKm)?d 80ê~Ö÷ @  qLn)?d x0êüÁ) @  qMo)?d ¸0êe+ìã @  qNp)?d ø0êçºû= @  qOq)?d 81ê&ûè @  qPr)?d x1ꤞì6 @  qQs)?d ¸1êÀé@7 @  qRt)?d ø1êBxWé @  qSu)?d 82êh›áb @  qTv)?d x2êê ö¼ @  qUw)?d ¸2êm¹š @  qVx)?d ø2ê”ü®D @  qWy)?d 83êøèq @  qXz)?d x3êzy‡¯ @  qY{)?d ¸3ê+® @  qZ|)?d ø3êœŸê©æ’ @  q„¦)?d x>ê+‡ñL @  q…§)?d ¸>ê×à¾j @  q†¨)?d ø>êUq©´ @  q‡©)?d 8?ê9e— @  qˆª)?d x?ê»ô€_ @  q‰«)?duÐ@ê7 ¸?ê߃,^ @  qЬ)?d ø?ê];€ @  q‹­)?d P@ê)—ö @  qŒ®)?d @ê ì• @  q¯)?d Ð@ê2¿­â @  qް)?d Aêâ÷!  @  q±)?d PAêq›ºé @  q²)?d AêQn¸ @  q‘³)?d ÐAê—}6 @  q’´)?d Bê 9¡÷ @  q“µ)?d PBê? c @  q”¶)?d Bêú¢ @  q•·)?d ÐBêAùø› @  q–¸)?d Cꑱts @  q—¹)?d PCê¯|Ñp @  q˜º)?d Cê‰ÓŽ @  q™»)?d ÐCêIšj¯ @  qš¼)?d DêPÔ™  @  q›½)?d PDêeâ˜4 @  qœ¾)?d DêEšÊ @  q¿)?d ÐD꣎í @  qžÀ)?d EêÃë @  qŸÁ)?d PEêA¾V @  q Â)?d Eêat¼¨ @  q¡Ã)?d ÐEê§g‰ @  q¢Ä)?d Fê:#¥H @  q£Å)?d PFê¤Ü @  q¤Æ)?d Fê/à¦" @  q¥Ç)?d ÐFêqãü$ @  q¦È)?d Gê¡«pÌ @  q§É)?d PGêŸfÕÏ @  q¨Ê)?d Gê¿“×1 @  q©Ë)?d ÐGêy€n @  qªÌ)?d HêMâ  @  q«Í)?d PHêxIã™ @  q¬Î)?d HêX¼ág @  q­Ï)?d ÐHêcïÙ @  q®Ð)?d Iê³§Ue @  q¯Ñ)?d PIê ËΆ @  q°Ò)?d Iê>Ìx @  q±Ó)?d ÐIêÆ-uY @  q²Ô)?d Jê[iÕ˜ @  q³Õ)?d PJên_Ô  @  q´Ö)?d JêNªÖò @  qµ×)?d ÐJꩌô @  q¶Ø)?d KêÀá @  q·Ù)?d PKêþ,¥ @  q¸Ú)?d KêÞÙ§á @  q¹Û)?d ÐKêÊÀ @  qºÜ)?d Lê„íÏ @  q»Ý)?d PLê4²ì[ @  q¼Þ)?d LêGî¥ @  q½ß)?d ÐLê²£ï“ @  q¾à)?d Mêbëc{ @  q¿á)?d PMêN†Ùº @  qÀâ)?d MênsÛD @  qÁã)?d ÐMê¨`be @  qÂä)?d Nê5$¤ @  qÃå)?d PNêÃ0 @  qÄæ)?d Nê çÁÎ @  qÅç)?d ÐNê~ä›È @  qÆè)?d Oꮬ  @  qÇé)?d POêa²# @  qÈê)?d Oê°”°Ý @  qÉë)?d ÐOêv‡ ü @  qÊì)?d PêÈYµN @  qËí)?d PPêýo´Ú @  qÌî)?d PêÝš¶$ @  qÍï)?d ÐPêæÉŽÎ @  qÎð)?d Qê6& @  qÏñ)?d PQê¥í™Å @  qÐò)?d Qê…›; @  qÑó)?d ÐQêC " @  qÒô)?d RêÞO‚Û @  qÓõ)?d PRêëyƒO @  qÔö)?d RêËŒ± @  qÕ÷)?d ÐRê•Û· @  qÖø)?d SêEÇW_ @  q×ù)?d PSê{ ò\ @  qØú)?d Sê[ÿð¢ @  qÙû)?d ÐSêìIƒ @  qÚü)?d Tê„¢ºŒ @  qÛý)?d PTê±”» @  qÜþ)?d Tê‘a¹æ @  qÝÿ)?d ÐTêV™z @  qÞ*?d UêÇ’ @  qß*?d PUêEt©Á @  qà*?d Uêe«? @  qá*?d ÐU꣒ @  qâ*?d€ Vêÿ‘Eß @  r*?d PVê+æ b @  r*?d Vê œ @  r*?d ÐVêY¯w @  r*?d Wê@#Ÿ @  r *?d PWê°nÙæ @  r *?d Wê›Û @  r *?d ÐWê˜:=C @  r *?d Xê¬Å±^ @  r  *?d PXê\ºK' @  r *?d Xê|OIÙ @  r *?d ÐXê‚UŠÞ @  r *?d YêR6 @  r *?d PYê¢büO @  r*?d Yê‚—þ± @  r*?d ÐYê'—&  @  r*?d ZêºÓ†Ë @  r*?d PZêJ¬|² @  r*?d ZêjY~L @  r*?d ÐZêñß§ @  r*?d [ê![SO @  r*?d P[êÑ$©6 @  r*?d [êñÑ«È @  r*?d Ð[êùpM“ @  r*?d \êà>¾œ @  r*?d P\êADå @  r*?d \ê0´F @  r*?d Ð\êS¼À @  r *?d ]êƒQ0( @  r!*?d P]ês.ÊQ @  r"*?d ]êSÛȯ @  r#*?d Ð]êçÝ7¤ @  r $*?d ^êz™—e @  r!%*?d P^êŠæm @  r"&*?d ^êªoâ @  r#'*?d Ð^ê1YÎ  @  r$(*?d _êáBá @  r%)*?d P_ên¸˜ @  r&**?d _ê1›ºf @  ruÐ`ê'+*?d Ð_ê9:\= @  r(,*?d (`ê‡Âé¥ @  r)-*?d h`êw½Ü @  r*.*?d ¨`êWH" @  r+/*?d è`ê©RÒ% @  r,0*?d (aêy^Í @  r-1*?d haê‰e¤´ @  r.2*?d ¨aꩦJ @  r/3*?d èaê ~ñ @  r04*?d (bê‘ÔÞ0 @  r15*?d hbêa«$I @  r26*?d ¨bêA^&· @  r37*?d èbêÚ‡\ @  r48*?d (cê \ ´ @  r59*?d hcêú#ñÍ @  r6:*?d ¨cêÚÖó3 @  r7;*?d ècêÒwh @  r8<*?d (dêË9æg @  r9=*?d hdê;F @  r:>*?d ¨dê³à @  r;?*?d èdêˆNñ* @  r<@*?d (eêX} @  r=A*?d heê¨y‡» @  r>B*?d ¨eꈌ…E @  r?C*?d èeê’|Ü @  r@D*?d (fêÉÜ @  rAE*?d hfêÿ¶&d @  rBF*?d ¨fêßC$š @  rCG*?d èfêD …q @  rDH*?d (gê”A ™ @  rEI*?d hgêd>óà @  rFJ*?d ¨gêDËñ @  rGK*?d ègêLjE @  rHL*?d (hêx•›X @  rIM*?d hhêˆêa! @  rJN*?d ¨hê¨cß @  rKO*?d èhêV Ø @  rLP*?d (iê†M,0 @  rMQ*?d hiêv2ÖI @  rNR*?d ¨iêVÇÔ· @  rOS*?d èiêóÇ  @  rPT*?d (jênƒ¬Í @  rQU*?d hjêžüV´ @  rRV*?d ¨jê¾ TJ @  rSW*?d èjê%Cõ¡ @  rTX*?d (kêõ yI @  rUY*?d hkêtƒ0 @  rVZ*?d ¨kê%Î @  rW[*?d èkê- g• @  rX\*?d (lê4n”š @  rY]*?d hlêÄnã @  rZ^*?d ¨lêääl @  r[_*?d èlê‡I–Æ @  r\`*?d (mêW. @  r]a*?d hmê§~àW @  r^b*?d ¨mꇋ⩠@  r_c*?d èmê3¢ @  r`d*?d (nê®É½c @  rae*?d hnê^¶G @  rbf*?d ¨nê~CEä @  rcg*?d ènêå ä @  rdh*?d (oê5Ahç @  rei*?d hoêÅ>’ž @  rfj*?d ¨oêåË` @  rgk*?d èoêíjv; @  rhl*?d (pêS´Ê‰ @  rim*?d hpê£Ë0ð @  rjn*?d ¨pêƒ>2 @  rko*?d èpê}$ñ  @  rlp*?d (qê­l}á @  rmq*?d hqê]‡˜ @  rnr*?d ¨qê}æ…f @  ros*?d èqêØæ]Ý @  rpt*?d (rêE¢ý @  rqu*?d hrêµÝe @  rrv*?d ¨rê•(› @  rsw*?d èrêb¤p @  rtx*?d (sêÞ*(˜ @  ruy*?d hsê.UÒá @  rvz*?d ¨sê Ð @  rw{*?d èsê6D @  rx|*?d (têOÅK @  ry}*?d htêï0?2 @  rz~*?d ¨têÏÅ=Ì @  r{*?d ètêAþ†” @  r|€*?d (uê‘¶ | @  r}*?d huêaÉð @  r~‚*?d ¨uêA<òû @  rƒ*?d èuê¸k;S @  r€„*?d (vê%/›’ @  r…*?d hvêÕPaë @  r‚†*?d ¨vêõ¥c @  rƒ‡*?d èvênïÂþ @  r„ˆ*?d (wê¾§N @  r…‰*?d hwêNØ´o @  r†Š*?d ¨wên-¶‘ @  r‡‹*?d èwêfŒPÊ @  rˆŒ*?d (xêRsÜ× @  r‰*?d hxê¢ &® @  rŠŽ*?d ¨xê‚ù$P @  r‹*?d èxê|ãçW @  rŒ*?d (yꬫk¿ @  r‘*?d hyê\Ô‘Æ @  rŽ’*?d ¨yê|!“8 @  r“*?d èyêÙ!Kƒ @  r”*?d (zêDeëB @  r‘•*?d hzê´; @  r’–*?d ¨zê”ïÅ @  r“—*?d èzꥲ. @  r”˜*?d ({êßí>Æ @  r•™*?d h{ê/’Ä¿ @  r–š*?d ¨{êgÆA @  r—›*?d è{êÆ  @  r˜œ*?d (|êˆÓ @  r™*?d h|êî÷)l @  ršž*?d ¨|êÎ+’ @  r›Ÿ*?d è|ê­¯ÑI @  rœ *?d (}ê}ç]¡ @  r¡*?d h}ê˜§Ø @  rž¢*?d ¨}ê­m¥& @  rŸ£*?d è}êkZ- @  r ¤*?d (~ê„/úì @  r¡¥*?d h~êtP• @  r¢¦*?d ¨~êT¥k @  r£§*?d è~êÏ @  r¤¨*?d (ê§/h @  r¥©*?d hêïØÕ @  r¦ª*?d ¨êuЀê'Ï-×ï @  r§«*?d èêÇŒ1´ @  r¨¬*?d @€ê©2ÓÀ @  r©­*?d €€êû)<™ @  rª®*?d À€êy¸+G @  r«¯*?d êÕ{sv @  r¬°*?d @êWêd¨ @  r­±*?d €êñ‹ñ @  r®²*?d Àê‡`œ/ @  r¯³*?d ‚ê=µó‹ @  r°´*?d @‚ê¿$äU @  r±µ*?d €‚êí?  @  r²¶*?d À‚êo®Ò @  r³·*?d ƒê¦=& @  r´¸*?d @ƒê$¬1Ñ @  rµ¹*?d €ƒêv·Þˆ @  r¶º*?d Àƒêô&ÉV @  r·»*?d „êgXËÜ @  r¸¼*?d @„êåÉÜ @  r¹½*?d €„ê·Ò3[ @  rº¾*?d À„ê5C$… @  r»¿*?d …êôgPy @  r¼À*?d @…êvöG§ @  r½Á*?d €…ê$í¨þ @  r¾Â*?d À…ê¦|¿  @  r¿Ã*?d †ê£¨ñ¦ @  rÀÄ*?d @†ê!9æx @  rÁÅ*?d €†ês" ! @  rÂÆ*?d À†êñ³ÿ @  rÃÇ*?d ‡ê8 $" @  rÄÈ*?d @‡êº±3ü @  rÅÉ*?d €‡êèªÜ¥ @  rÆÊ*?d À‡êj;Ë{ @  rÇË*?d ˆêÔô¶ã @  rÈÌ*?d @ˆêVe¡= @  rÉÍ*?d €ˆê~Nd @  rÊÎ*?d Àˆê†ïYº @  rËÏ*?d ‰ê*,‹ @  rÌÐ*?d @‰ê¨½U @  rÍÑ*?d €‰êú¦ù  @  rÎÒ*?d À‰êx7îÒ @  rÏÓ*?d ŠêÂâv @  rÐÔ*?d @Šê@s–¨ @  rÑÕ*?d €Šêhyñ @  rÒÖ*?d ÀŠêùn/ @  rÓ×*?d ‹êYjTò @  rÔØ*?d @‹êÛûC, @  rÕÙ*?d €‹ê‰à¬u @  rÖÚ*?d À‹ê q»« @  r×Û*?d Œê˜¹! @  rØÜ*?d @Œêž®ÿ @  rÙÝ*?d €ŒêH…A¦ @  rÚÞ*?d ÀŒêÊVx @  rÛß*?d êû`7• @  rÜà*?d @êyñ K @  rÝá*?d €ê+êÏ @  rÞâ*?d Àê©{ØÌ @  rßã*?d Žê¨Ø @  ràä*?d @Žê€9‡ @  ráå*?d €ŽêÒ"h_ @  râæ*?d€ ÀŽê$pc' @  sç*?d ê ¢Ó @  sè*?d @êŽ3  @  sé*?d €êa¹ @  sê*?d Àê›ðg @  së*?d êa¬* @  sì*?d @êã=ô @  sí*?d €ê”°× @  sî*?d Àêý§  @  s ï*?d ‘ê”Õ @  s ð*?d @‘ê  @  s ñ*?d €‘êL¿ @  s ò*?d À‘êÝa @  s ó*?d ’êÚ_ @  sô*?d @’êXŠ  @  sõ*?d €’êi‚‡B @  sö*?d À’êëœ @  s÷*?d “êçÉQ¬ @  sø*?d @“êeXFr @  sù*?d €“êò RÆ @  sú*?d À“êp›E @  sû*?d ”ê-Wè @  sü*?d @”ê¯Æ6 @  sý*?d €”ê3o¿ @  sþ*?d À”ê±þ¨Ë @  sÿ*?d •ê×2&D @  s+?d @•êU£1š @  s+?d €•êÂñ%. @  s+?d À•ê@`2ð @  s+?d –Ꙧ<Î @  s+?d @–ê7+ @  s+?d €–ê;9‚c @  s +?d À–깨•½ @  s!+?d —êµrT @  s"+?d @—ê7ãCS @  s# +?d €—ê ±Wç @  s$ +?d À—ê" @9 @  s% +?d ˜êR]bÛ @  s& +?d @˜êÐÌu @  s' +?d €˜êLeÅ& @  s(+?d À˜êÎôÒø @  s)+?d ™ê§~q$ @  s*+?d @™ê%ïfú @  s++?d €™ê²½rN @  s,+?d À™ê0,e @  s-+?d šêéêk® @  s.+?d @šêk{|p @  s/+?d €šêZsò³ @  s0+?d ÀšêØâåm @  s1+?d ›êÔ8$] @  s2+?d @›êV©3ƒ @  s3+?d €›êÁû'7 @  s4+?d À›êCj0é @  s5+?d œê¦m @  s6+?d @œêœ7zÇ @  s7+?d €œêžÊä @  s8+?d Àœê‚Ý: @  s9+?d êv2G: @  s: +?d @êô£Pä @  s;!+?d €êcñDP @  s<"+?d Àêá`SŽ @  s=#+?d žê8¦]° @  s>$+?d @žêº7Jn @  s?%+?d €žê4>å @  s@&+?d Àžê¶¯òQ @  sA'+?d Ÿêºu3a @  sB(+?d @Ÿê8ä$¿ @  sC)+?d €Ÿê¯¶0  @  sD*+uРê?d ÀŸê-''Õ @  sE++?d  êe.$0 @  sF€,+?d X êç¿3î @  sG€-+?d ˜ ê{ƒÍ @  sH€.+?d Ø êù‡” @  sI€/+?d ¡ê 7Ï @  sJ€0+?d X¡êœ  @  sK€1+?d ˜¡ê…Î4¥ @  sL€2+?d Ø¡ê_#{ @  sM€3+?d ¢êÞ™-E @  sN€4+?d X¢ê\:› @  sO€5+?d ˜¢êm´X @  sP€6+?d Ø¢êï‘£† @  sQ€7+?d £êãKb¶ @  sR€8+?d X£êaÚuh @  sS€9+?d ˜£êöˆaÜ @  sT€:+?d Ø£êtv @  sU€;+?d ¤ê)Õ+ò @  sV€<+?d X¤ê«D<, @  sW€=+?d ˜¤ê7íŒ @  sX€>+?d ؤêµ|›Ñ @  sY€?+?d ¥ê±À @  sZ€@+?d X¥ê3€ @  s[€A+?d ˜¥ê¤Òª @  s\€B+?d Ø¥ê&Ct @  s]€C+?d ¦êÿ…J @  s^€D+?d X¦ê}” @  s_€E+?d ˜¦ê]°ç @  s`€F+?d ئêß‹§9 @  sa€G+?d §êÓQf  @  sb€H+?d X§êQÀq× @  sc€I+?d ˜§êÆ’ec @  sd€J+?d اêDr½ @  se€K+?d ¨ê4~P_ @  sf€L+?d X¨ê¶ïG @  sg€M+?d ˜¨ê*F÷¢ @  sh€N+?d بê¨×à| @  si€O+?d ©êÁ]C  @  sj€P+?d X©êCÌT~ @  sk€Q+?d ˜©êÔž@Ê @  sl€R+?d Ø©êVW @  sm€S+?d ªêÉY* @  sn€T+?d Xªê XNô @  so€U+?d ˜ªêX @  sŽ€t+?d X²êk()† @  s€u+?d ˜²êZ §E @  s€v+?d زêر°› @  s‘€w+?d ³êÔkq« @  s’€x+?d X³êVúfu @  s“€y+?d ˜³êÁ¨rÁ @  s”€z+?d سêC9e @  s•€{+?d ´êõ8ï @  s–€|+?d X´êœd/1 @  s—€}+?d ˜´êÍŸ @  s˜€~+?d Ø´ê‚\ˆÌ @  s™€+?d µê›÷SO @  sš€€+?d XµêfD‘ @  s›€+?d ˜µêŽ4P% @  sœ€‚+?d صê ¥Gû @  s€ƒ+?d ¶êÕcIÅ @  sž€„+?d X¶êWò^ @  sŸ€…+?d ˜¶êwü÷h @  s €†+?d ضêõmà¶ @  s¡€‡+?d ·êù·!† @  s¢€ˆ+?d X·ê{&6X @  s£€‰+?d ˜·êìt"ì @  s¤€Š+?d Ø·ênå52 @  s¥€‹+?d ¸ê˜Ð @  s¦€Œ+?d X¸êœ  @  s§€+?d ˜¸ê °- @  s¨€Ž+?d ظê‚1§ó @  s©€+?d ¹êë»/ @  sª€+?d X¹êi*ñ @  s«€‘+?d ˜¹êþxE @  s¬€’+?d عê|é› @  s­€“+?d ºê¥/¥ @  s®€”+?d Xºê'¾ { @  s¯€•+?d ˜ºê¶‡¸ @  s°€–+?d غê”'f @  s±€—+?d »ê˜ýQV @  s²€˜+?d X»êlFˆ @  s³€™+?d ˜»ê>R< @  s´€š+?d Ø»ê¯Eâ @  sµ€›+?d ¼êRc @  s¶€œ+?d X¼êÐòÌ @  s·€+?d ˜¼êL[¿ï @  s¸€ž+?d ؼêÎʨ1 @  s¹€Ÿ+?d ½ê:÷21 @  sº€ +?d X½ê¸f%ï @  s»€¡+?d ˜½ê/41[ @  s¼€¢+?d ؽê­¥&… @  s½€£+?d ¾êtc(» @  s¾€¤+?d X¾êöò?e @  s¿€¥+?d ˜¾êxû„ @  sÀ€¦+?d ؾêúj‡Z @  sÁ€§+?d ¿êö°Fj @  s€¨+?d X¿êt!Q´ @  sÀ©+?d ˜¿êãsE @uÐÀê  sÄ€ª+?d Ø¿êaâRÞ @  sÅ€«+?d 0ÀêA­s @  sÆ€¬+?d pÀêú­ @  sÇ€­+?d °Àê_¨ Ž @  sÈ€®+?d ðÀêÝ9P @  sÉ€¯+?d 0Áê´³¾Œ @  sÊ€°+?d pÁê6"©R @  sË€±+?d °Áê¡p½æ @  sÌ€²+?d ðÁê#áª8 @  sÍ€³+?d 0Âêú'¤ @  s΀´+?d pÂêx¶³Ø @  sÏ€µ+?d °ÂêI¾= @  sЀ¶+?d ðÂêË/*Å @  sÑ€·+?d 0ÃêÇõëõ @  sÒ€¸+?d pÃêEdü+ @  sÓ€¹+?d °ÃêÒ6èŸ @  sÔ€º+?d ðÃêP§ÿA @  sÕ€»+?d 0Äê k¢± @  sÖ€¼+?d pÄêúµo @  s×€½+?d °ÄêSL @  sØ€¾+?d ðÄê‘Â’ @  sÙ€¿+?d 0Åꕯƒ @  sÚ€À+?d pÅê>Š] @  sÛ€Á+?d °Åê€lžé @  sÜ€Â+?d ðÅêý‰7 @  sÝ€Ã+?d 0ÆêÛ;‡  @  sÞ€Ä+?d pÆêYª× @  s߀Å+?d °Æêy¤9¤ @  sà€Æ+?d ðÆêû5.z @  sá€Ç+?d 0Çê÷ïïJ @  sâ€È+?d€ pÇêó(P- @  t€É+?d °Çê…; ° @  t€Ê+?d ðÇêªn @  t€Ë+?d 0È겞Âa @  t€Ì+?d pÈê0Õ¿ @  t€Í+?d °Èêb:æ @  t€Î+?d ðÈêà…-8 @  t€Ï+?d 0ÉêG½Ñž @  t€Ð+?d pÉêÅ,Æ@ @  t €Ñ+?d °Éê—7) @  t €Ò+?d ðÉê¦>Ç @  t €Ó+?d 0Êê )Ë @  t €Ô+?d pÊꋸÜÊ @  t €Õ+?d °ÊêÙ£3“ @  t€Ö+?d ðÊê[2$M @  t€×+?d 0Ëê4û„ç @  t€Ø+?d pËê¶j“9 @  t€Ù+?d °Ëêäq|` @  t€Ú+?d ðËêfàk¾ @  t€Û+?d 0ÌêþeÍ£ @  t€Ü+?d pÌê|ôÚ} @  t€Ý+?d °Ìê.ï5$ @  t€Þ+?d ðÌê¬~"ú @  t€ß+?d 0Íê–ñç€ @  t€à+?d pÍê`ð^ @  t€á+?d °ÍêF{ @  t€â+?d ðÍêÄêÙ @  t€ã+?d 0ÎêØeý  @  t€ä+?d pÎêZôêÔ @  t€å+?d °Îêï @  t€æ+?d ðÎêŠ~S @  t€ç+?d 0Ïêô±•I @  t €è+?d pÏêv ‚— @  t!€é+?d °Ïê$;mÎ @  t"€ê+?d ðÏꦪz @  t#€ë+?d 0Ðꙿ“° @  t$€ì+?d pÐê.„n @  t%€í+?d °ÐêI5k7 @  t&€î+?d ðÐêˤ|é @  t'€ï+?d 0Ñêlœ€O @  t(€ð+?d pÑêî —‘ @  t)€ñ+?d °Ñê¼xÈ @  t*€ò+?d ðÑê>‡o @  t+€ó+?d 0Òê"šÅ @  t,€ô+?d pÒê ™ @  t-€õ+?d °Òêò‚bB @  t.€ö+?d ðÒêpuœ @  t/€÷+?d 0ÓêÚÕ6 @  t0€ø+?d pÓêKÂè @  t1€ù+?d °ÓêÏP-± @  t2€ú+?d ðÓêMÁ:o @  t3€û+?d 0ÔêÕDœr @  t4€ü+?d pÔêWÕ‹¬ @  t5€ý+?d °ÔêÎdõ @  t6€þ+?d ðÔê‡_s+ @  t7€ÿ+?d 0Õê(H @  t8€,?d pÕê‘¹Š– @  t9€,?d °ÕêâeÏ @  t:€,?d ðÕêA3r @  t;€,?d 0Öê]¼‡Â @  t<€,?d pÖêß- @  t=€,?d °Öê6E @  t>€,?d ðÖê§h› @  t?€,?d 0×êßoé @  t@€,?d p×ê]þþÍ @  tA€ ,?d °×êå” @  tB€ ,?d ð×êtJ @  tC€ ,?d 0Øê8@ßE @  tD€ ,?d pØêºÑÈ› @  tE€ ,?d °ØêèÊ' @  tF€,?d ðØêj[0 @  tG€,?d 0ÙêÍc̺ @  tH€,?d pÙêOòÛd @  tI€,?d °Ùêé4= @  tJ€,?d ðÙêŸx#ã @  tK€,?d 0Úêƒ÷Ö0 @  tL€,?d pÚêfÁî @  tM€,?d °ÚêS}.· @  tN€,?d ðÚêÑì9i @  tO€,?d 0Ûê¾%™Ã @  tP€,?d pÛê<´Ž @  tQ€,?d °Ûên¯aD @  tR€,?d ðÛêì>vš @  tS€,?d 0Üêt»Ð‡ @  tT€,?d pÜêö*ÇY @  tU€,?d °Üê¤1( @  tV€,?d ðÜê& ?Þ @  tW€,?d 0Ýê/ú¤ @  tX€ ,?d pÝêž¾íz @  tY€!,?d °ÝêÌ¥# @  tZ€",?d ðÝêN4ý @  t[€#,?d 0ÞêR»à. @  t\€$,?d pÞêÐ*÷ð @  t]€%,?d °Þê‚1© @  t^€&,?d ðÞê w @  t_€',?d 0ßê~oˆm @  t`€(,?d pßêüþŸ³ @  ta€),?d uÐàê/°ßê®åpê @  tb€*,?d ðßêQôH @  tc+,?d HàêÉ›¬ @  td,,?d ˆàêénR @  te-,?d Èàêç+ @  tf.,?d áêÉYkà @  tg/,?d Háê<¸ S @  th0,?d ˆáêM­ @  ti1,?d Èáêì2ôÔ @  tj2,?d âêqvT @  tk3,?d Hâêr,Ù @  tl4,?d ˆâêRÙ' @  tm5,?d Èâꢦî^ @  tn6,?d ãêrîb¶ @  to7,?d HãêOþY* @  tp8,?d ˆãêo [Ô @  tq9,?d ÈãêŸt¡­ @  tr:,?d äê†:R¢ @  ts;,?d Häê…`n @  tt<,?d ˆä꥕ @  tu=,?d ÈäêUêèé @  tv>,?d åê…¢d @  tw?,?d Håê¤/\ @  tx@,?d ˆåê=Q-¢ @  tyA,?d ÈåêÍ.×Û @  tzB,?d æêPjw @  t{C,?d HæêS05Ö @  t|D,?d ˆæêsÅ7( @  t}E,?d 龐ļÍQ @  t~F,?d çêSòA¹ @  tG,?d Hçê2µk6 @  t€H,?d ˆçê@iÈ @  tI,?d Èçêâ?“± @  t‚J,?d èêÖÀ¬ @  tƒK,?d HèêÕš]` @  t„L,?d ˆèêõo_ž @  t…M,?d Èèê¥ç @  t†N,?d éêÕX) @  t‡O,?d Héê ¹NŸ @  tˆP,?d ˆéêLLa @  t‰Q,?d Èéêð3¶ @  tŠR,?d êêmwÙ @  t‹S,?d Hêên-T @  tŒT,?d ˆêêNØVë @  tU,?d Èêê¾§¬’ @  tŽV,?d ëênï z @  tW,?d HëêSÿæ @  tX,?d ˆëês  @  t‘Y,?d Èëêƒuãa @  t’Z,?d ìêš;n @  t“[,?d Hìê™aR¢ @  t”\,?d ˆìê¹”P\ @  t•],?d ÈìêIëª% @  t–^,?d íꙣ&Í @  t—_,?d Híêñõx @  t˜`,?d ˆíêÑz @  t™a,?d Èíê!€ @  tšb,?d îê¼; Ç @  t›c,?d Hîê¿ab  @  tœd,?d ˆî꟔`õ @  te,?d Èîêo뚌 @  tžf,?d ïê¿£d @  tŸg,?d Hïꓵ H @  t h,?d ˆïê³@¶ @  t¡i,?d ÈïêC?òÏ @  t¢j,?d ðêýáN} @  t£k,?d Hðêþ» ± @  t¤l,?d ˆðêÞNO @  t¥m,?d Èðê.1ô6 @  t¦n,?d ñêþyxÞ @  t§o,?d Hñê ˜N @  t¨p,?d ˆñê+m° @  t©q,?d ÈñêÛçÉ @  tªr,?d òêFVG @  t«s,?d HòêE Ä @  t¬t,?d ˆòêeù: @  t­u,?d ÈòꕆýC @  t®v,?d óêEÎq« @  t¯w,?d HóêxÞJ7 @  t°x,?d ˆóêX+HÉ @  t±y,?d Èóê¨T²° @  t²z,?d ôê±A¿ @  t³{,?d Hôê²@s @  t´|,?d ˆôê’µ @  tµ},?d ÈôêbÊûô @  t¶~,?d õ겂w @  t·,?d Hõê7BhÓ @  t¸€,?d ˆõê·j- @  t¹,?d ÈõêçÈT @  tº‚,?d öêzŒ0• @  t»ƒ,?d HöêyÖrY @  t¼„,?d ˆöêY#p§ @  t½…,?d Èöê©\ŠÞ @  t¾†,?d ÷êy6 @  t¿‡,?d H÷êûˆ @  tÀˆ,?d ˆ÷êÛðv @  tÁ‰,?d È÷ê+ä @  tŠ,?d øêph @  tË,?d Høê**Þ @  tÄŒ,?d ˆøê<ß(  @  tÅ,?d ÈøêÌ ÒY @  tÆŽ,?d ùêè^± @  tÇ,?d Hùêé 9! @  tÈ,?d ˆùêÉü;ß @  tÉ‘,?d Èùê9ƒÁ¦ @  tÊ’,?d úê¤Çag @  tË“,?d Húê§#« @  tÌ”,?d ˆúê‡h!U @  tÍ•,?d ÈúêwÛ, @  tΖ,?d ûê§_WÄ @  tÏ—,?d HûêšOlX @  tИ,?d ˆû꺺n¦ @  tÑ™,?d ÈûêJÅ”ß @  tÒš,?d üêS‹gÐ @  tÓ›,?d HüêPÑ% @  tÔœ,?d ˆüêp$'â @  tÕ,?d Èüê€[Ý› @  tÖž,?d ýêPQs @  tן,?d Hýê8E? @  tØ ,?d ˆýê° Á @  tÙ¡,?d ÈýêèÏ÷¸ @  tÚ¢,?d þêu‹Wy @  tÛ£,?d Hþêvѵ @  tܤ,?d ˆþêV$K @  tÝ¥,?d Èþê¦[í2 @  tÞ¦,?d ÿêvaÚ @  tß§,?d HÿêZ}ö @  tà¨,?d ˆÿêzð @  táuÐë©,?d Èÿꊅq @  tâª,?d€ ë±ø±& @  u«,?d `ëSã»Ã @  u¬,?d  ës¹= @  u­,?d àëF ¸© @  u®,?d ë–h4A @  u¯,?d `ë­; « @  u°,?d  ëÎU @  u±,?d à볫V @  u²,?d ë.G — @  u ³,?d `ëèT²¶ @  u ´,?d  ëÈ¡°H @  u µ,?d àëý—±Ü @  u ¶,?d ë-ß=4 @  u ·,?d `ësÜg2 @  u¸,?d  ëS)eÌ @  u¹,?d àëÀEþ/ @  uº,?d ëÙ  @  u»,?d `ë´ @  u¼,?d  ë?í¶ÿ @  u½,?d àë Û·k @  u¾,?d ëÚ“;ƒ @  u¿,?d `ëŒ'/¤ @  uÀ,?d  ë¬Ò-Z @  uÁ,?d àë’ˆY @  uÂ,?d ë[(˜ @  uÃ,?d `ëÉH‘¹ @  uÄ,?d  ë齓G @  uÅ,?d àëÜ‹’Ó @  uÆ,?d ë Ã; @  uÇ,?d `ëRÀD= @  uÈ,?d  ër5Fà @  uÉ,?d àëð_ú @  u Ê,?d ëÄ v @  u!Ë,?d `ë³Ï¬ @  u"Ì,?d  ë"FÍR @  u#Í,?d àëpÌÆ @  u$Î,?d ëÇ8@. @  u%Ï,?d ` ëükxÄ @  u&Ð,?d   ëÜžz: @  u'Ñ,?d à ëâSß9 @  u(Ò,?d ëø @  u)Ó,?d ` ë¹ÆÙ @  u*Ô,?d   ë™ñÄ' @  u+Õ,?d à ë¬Çų @  u,Ö,?d ë|I[ @  u-×,?d ` ë"Œ] @  u.Ø,?d   ëy£ @  u/Ù,?d à 둊@ @  u0Ú,?d ëˆ[yO @  u1Û,?d ` ëNHÀn @  u2Ü,?d   ën½Â @  u3Ý,?d à ë[‹Ã @  u4Þ,?d ë‹ÃOì @  u5ß,?d ` ë-'NÚ @  u6à,?d   ë ÒL$ @  u7á,?d à ë3é' @  u8â,?d ë®[Iæ @  u9ã,?d `ëhHðÇ @  u:ä,?d  ëH½ò9 @  u;å,?d àë}‹ó­ @  u<æ,?d ë­ÃE @  u=ç,?d `ëóÀ%C @  u>è,?d  ëÓ5'½ @  u?é,?d àëÿX| @  u@ê,?d ëA†!Î @  uAë,?d `뇕˜ï @  uBì,?d  ë§`š @  uCí,?d àë’V›… @  uDî,?d ëBm @  uEï,?d `ëyM/‡ @  uFð,?d  ëY¸-y @  uGñ,?d àëguˆz @  uHò,?d ëú1(» @  uIó,?d `ë<"‘š @  uJô,?d  ëדd @  uKõ,?d àë)á’ð @  uLö,?d ëù© @  uM÷,?d `맪D @  uNø,?d  ë‡_Fà @  uOù,?d àë3Ý @  uPú,?d ë }.  @  uQû,?d `ëËn—- @  uRü,?d  ë뛕Ó @  uSý,?d àëÞ­”G @  uTþ,?d ëå¯ @  uUÿ,?d `ë:ð  @  uV-?d  ëè @  uW-?d àë$Ȫë @  uX-?d 빌 * @  uY-?d `럳  @  uZ-?d  ë_j±õ @  u[-?d àëj\°a @  u\-?d ëº<‰ @  u]-?d `ëäf @  u^-?d  ëÄâdq @  u_ -?d àëFˆØ" @  u` -?d ërwT? @  ua -?d `ë´dí @  ub -?d  ë”‘ïà @  uc -?d àë¡§ît @  ud-?d ëqïbœ @  ue-?d `ëJ¼Zv @  uf-?d  ëjIXˆ @  ug-?d àëT„ý‹ @  uh-?d ëÉÀ]J @  ui-?d `ëÓäk @  uj-?d  ë/&æ• @  uk-?d àëç @  ul-?d ëÊXké @  um-?d `ë”[1ï @  un-?d  ë´®3 @  uo-?d àë'¨ò @  up-?d ë>Œ[ý @  uq-?d `ëøŸâÜ @  ur-?d  ëØjà" @  us-?d àëí\á¶ @  ut-?d ë=m^ @  uu-?d `ë›ðlh @  uv -?d  ë»n– @  uw!-?d àë…ÈË• @  ux"-?d ëŒkT @  uy#-?d `ëÞŸÒu @  uz$-?d  ëþjЋ @  u{%-?d àëË\Ñ @  u|&-?d ë]÷ @  u}'-?d `ëEñ @  u~(-?d  ëeâuÐ ë @  u)-?d àëªÙÿ @  u€*-?d 8 ëÛÒQ™ @  u+-?d x ëÁè¸ @  u‚,-?d ¸ ë=4êF @  uƒ--?d ø ëëÒ @  u„.-?d 8!ëØJg: @  u…/-?d x!ëã_Ð @  u†0-?d ¸!ëÃì]. @  u‡1-?d ø!ëý!ø- @  uˆ2-?d 8"ë`eXì @  u‰3-?d x"ë¦váÍ @  uŠ4-?d ¸"놃ã3 @  u‹5-?d ø"복⧠@  uŒ6-?d 8#ëcýnO @  u7-?d x#ë=þ4I @  uŽ8-?d ¸#ë 6· @  u9-?d ø#ëŽg­T @  u:-?d 8$ë—)^[ @  u‘;-?d x$ëQ:çz @  u’<-?d ¸$ëqÏå„ @  u“=-?d ø$ëDùä @  u”>-?d 8%ë”±hø @  u•?-?d x%ëÂ|ß @  u–@-?d ¸%ëâð~! @  u—A-?d ø%ëÜ=Û" @  u˜B-?d 8&ëAy{ã @  u™C-?d x&ë‡j @  ušD-?d ¸&ë§ŸÀ< @  u›E-?d ø&ë’©Á¨ @  uœF-?d 8'ëBáM@ @  uG-?d x'ëâF @  užH-?d ¸'ë<¸ @  uŸI-?d ø'ë¾}©ë @  u J-?d 8(늂%ö @  u¡K-?d x(ëL‘œ× @  u¢L-?d ¸(ëldž) @  u£M-?d ø(ëYRŸ½ @  u¤N-?d 8)ë‰U @  u¥O-?d x)ë²I+¿ @  u¦P-?d ¸)ë’¼)A @  u§Q-?d ø)ë¬qŒB @  u¨R-?d 8*ë15,ƒ @  u©S-?d x*ë÷&•¢ @  uªT-?d ¸*ë×Ó—\ @  u«U-?d ø*ëâå–È @  u¬V-?d 8+ë2­  @  u­W-?d x+ël®@& @  u®X-?d ¸+ëL[BØ @  u¯Y-?d ø+ëß7Ù; @  u°Z-?d 8,ëÆy*4 @  u±[-?d x,ëj“ @  u²\-?d ¸,ë Ÿ‘ë @  u³]-?d ø,ë© @  u´^-?d 8-ëÅá— @  uµ_-?d x-ëc¡ @  u¶`-?d ¸-ëCð_ @  u·a-?d ø-ë}=º\ @  u¸b-?d 8.ëày @  u¹c-?d x.ë&j£¼ @  uºd-?d ¸.럡B @  u»e-?d ø.ë3© Ö @  u¼f-?d 8/ëãá,> @  u½g-?d x/ë½âv8 @  u¾h-?d ¸/ëtÆ @  u¿i-?d ø/ë±zÎ @  uÀj-?d 80ë¤rµ @  uÁk-?d x0ëÉ·Ë” @  uÂl-?d ¸0ëéBÉj @  uÃm-?d ø0ëÜtÈþ @  uÄn-?d 81ë ë4v @  v£-?d x>ë •Æ @  v¤-?d ¸>ë*`’8 @  v¥-?d ø>ëÚhA @  v¦-?d 8?ë Wä© @  v§-?d x?ë‘EB @  v¨-?duÐ@ë7 ¸?ë±èG¼ @  v©-?d ø?ëA—½Å @  vª-?d P@ë‚;ù @  v«-?d @ë”YíÒ @  v ¬-?d Ð@ëÈú  @  v!­-?d Aë´n›C @  v"®-?d PAë6ÿŒ @  v#¯-?d AëjZº @  v$°-?d ÐAëèMd @  v%±-?d Bëº @  v&²-?d PBë…+Ü @  v'³-?d Bë/îä§ @  v(´-?d ÐBë­óy @  v)µ-?d CëÙ’6 @  v*¶-?d PCëH…è @  v+·-?d Cë´f1# @  v,¸-?d ÐCë6÷&ý @  v-¹-?d Dë]W8U @  v.º-?d PDë߯/‹ @  v/»-?d DëØ¢â @  v0¼-?d ÐDëZ3õÎ @  v1½-?d Eëø•” @  v2¾-?d PEëzƒ_ @  v3¿-?d EëKyµ @  v4À-?d ÐEëÉ nk @  v5Á-?d Fë&¦#  @  v6Â-?d PFë¤74Ó @  v7Ã-?d FëòǨ @  v8Ä-?d ÐFëŒcÐv @  v9Å-?d Gë.ű9 @  v:Æ-?d PGë¬T¦ç @  v;Ç-?d Gë•z, @  v<È-?d ÐGëëò @  v=É-?d HëQúdH @  v>Ê-?d PHëÓks– @  v?Ë-?d HëkŸ/ @  v@Ì-?d ÐHë韈ñ @  vAÍ-?d IëK9é¾ @  vBÎ-?d PIëɨþ` @  vCÏ-?d Ië•Ö(G @  vDÐ-?d ÐIëG?™ @  vEÑ-?d Jëøírÿ @  vFÒ-?d PJëz|e! @  vGÓ-?d Jëй–Z @  vHÔ-?d ÐJëR(„ @  vIÕ-?d KëðŽàË @  vJÖ-?d PKër÷ @  vK×-?d KëK1CÞ @  vLØ-?d ÐKëÉ T @  vMÙ-?d Lë¢J¨ @  vNÚ-?d PLë ‘]v @  vOÛ-?d Lë'õí @  vPÜ-?d ÐLë¥d‡3 @  vQÝ-?d MëÂæ| @  vRÞ-?d PMë…Sñ¢ @  vSß-?d MëDšY @  vTà-?d ÐMëÆ ‡ @  vUá-?d Në)¡Dá @  vVâ-?d PNë«0S? @  vWã-?d Nëõ D @  vXä-?d ÐNëƒd·š @  vYå-?d Oë!ÂÖÕ @  vZæ-?d POë£SÁ  @  v[ç-?d Oëš}uÀ @  v\è-?d ÐOëìb @  v]é-?d PëÔÜ3  @  v^ê-?d PPëVM$Õ @  v_ë-?d Pë@/Îþ @  v`ì-?d ÐPë¾٠ @  vaí-?d Që`¸o @  vbî-?d PQë≯± @  vcï-?d Që¾÷y– @  vdð-?d ÐQë¦Ä @  vk÷-?d Së` @  vlø-?d ÐSëâÑ @  vmù-?d Të‰!y @  vnú-?d PTë ° § @  voû-?d Të ÔÁ< @  vpü-?d ÐTëŽEÖâ @  vqý-?d Uë,ã·­ @  vrþ-?d PUë®r s @  vsÿ-?d UëOhn" @  vt.?d ÐUëÍùyü @  vu.?d Vë"S4š @  vv.?d PVë Â#D @  vw.?d Vë Ð? @  vx.?d ÐV눖Çá @  vy.?d Wë*0¦® @  vz.?d PW먡±p @  v{.?d Wë‘» @  v|.?d ÐWëe @  v} .?d XëUsß @  v~ .?d PXëמd @  v .?d X댭¸‰ @  v€ .?d ÐXë<¯W @  v .?d Y묚Π@  v‚.?d PYë. ÙÆ @  vƒ.?d Yëruá @  v„.?d ÐYëðä? @  v….?d ZëNUY @  v†.?d PZëßB‡ @  v‡.?d Zë7±ü @  vˆ.?d ÐZ뵋¦" @  v‰.?d [ë-Çm @  vŠ.?d P[땼г @  v‹.?d [묒dx @  vŒ.?d Ð[ë.s¦ @  v.?d \ëE£m @  vŽ.?d P\ëÇ2zÐ @  v.?d \ëÀV·K @  v.?d Ð\ëBÇ • @  v‘.?d ]ëàaÁÚ @  v’.?d P]ëbðÖ @  v“.?d ]ë£99ÿ @  v” .?d Ð]ë!¨.! @  v•!.?d ^ëÎcG @  v–".?d P^ëL“t™ @  v—#.?d ^ëæV‡â @  v˜$.?d Ð^ëdÇ< @  v™%.?d _ëÆañs @  vš&.?d P_ëDðæ­ @  v›'.?d _ë}ÞRf @  vuÐ`ëœ(.?d Ð_ëÿOE¸ @  v).?d (`ë3Y‡ @  vž*.?d h`ë±È Y @  vŸ+.?d ¨`맪àr @  v ,.?d è`ë%;÷¬ @  v¡-.?d (a뇖ã @  v¢..?d haë = @  v£/.?d ¨aëYrW @  v¤0.?d èaëÛã@Ä @  v¥1.?d (bë4I ¢ @  v¦2.?d hbë¶Ø| @  v§3.?d ¨bëé @  v¨4.?d èb람þÙ @  v©5.?d (cë<*Ÿ– @  vª6.?d hcë¾»ˆH @  v«7.?d ¨c뇕<ƒ @  v¬8.?d ècë+] @  v­9.?d (dën¤5õ @  v®:.?d hdëì5"+ @  v¯;.?d ¨dëëQï° @  v°<.?d èdëiÀøn @  v±=.?d (eëËf™! @  v²>.?d heëI÷Žÿ @  v³?.?d ¨eëxnt @  v´@.?d èeëúÿcË @  vµA.?d (fëU.­ @  v¶B.?d hfë—Ä9s @  v·C.?d ¨fë=Ê @  v¸D.?d èfë¿ÝÖ @  v¹E.?d (gë6¼™ @  vºF.?d hg럧«G @  v»G.?d ¨g릉Œ @  v¼H.?d ègë$R @  v½I.?d (hëb iè @  v¾J.?d hhëà˜~6 @  v¿K.?d ¨hëXý’ @  vÀL.?d èhëÚl…Q @  vÁM.?d (iëxÊä @  vÂN.?d hiëú[óÀ @  vÃO.?d ¨ië¦%%ç @  vÄP.?d èië$´29 @  vÅQ.?d (jëË_ @  vÆR.?d hjëIh @  vÇS.?d ¨jëãJ›ú @  vÈT.?d èjëaÛŒ$ @  vÉU.?d (këÃ}ík @  vÊV.?d hkëAìúµ @  vËW.?d ¨këxÂN~ @  vÌX.?d èkëúSY  @  vÍY.?d (lë‘óG @  vÎZ.?d hlëbPÖ @  vÏ[.?d ¨lëM @  vÐ\.?d èlë–—Š“ @  vÑ].?d (më41ëÜ @  vÒ^.?d hmë¶ ü @  vÓ_.?d ¨mëwiù @  vÔ`.?d èmëõø' @  vÕa.?d (nëRIA @  vÖb.?d hnë˜Ã^Ÿ @  v×c.?d ¨në2­ä @  vØd.?d ènë°—º: @  vÙe.?d (oë1Ûu @  vÚf.?d hoë Ì« @  vÛg.?d ¨o멎x` @  vÜh.?d èoë+o¾ @  vÝi.?d (pëç/>« @  vÞj.?d hpëe¾)u @  vßk.?d ¨pësÜÃ^ @  vàl.?d èpëñMÔ€ @  vám.?d (qëSëµÏ @  vân.?d€ hq륹¾· @  wo.?d ¨që† ¹ @  wp.?d èqëš7g @  wq.?d (rë°ôì @  wr.?d hrë2e–2 @  ws.?d ¨rëV:3 @  wt.?d èrëÔƒ-í @  wu.?d (së¸—Ø @  wv.?d hsë: @  w w.?d ¨sëÆaK  @  w x.?d èsëDð\þ @  w y.?d (tëê¹» @  w z.?d htëhˆ®e @  w {.?d ¨të ÿd @  w|.?d ètëŽnº @  w}.?d (uëOÛo @  w~.?d huëÍJ± @  w.?d ¨uë$\W$ @  w€.?d èuë¦Í@ú @  w.?d (vëŒ.öq @  w‚.?d hvë¿á¯ @  wƒ.?d ¨vëjÈM® @  w„.?d èvëèYZp @  w….?d (wë„MdE @  w†.?d hwëÜs› @  w‡.?d ¨wëú»<½ @  wˆ.?d èwëx*+c @  w‰.?d (xëûr±4 @  wŠ.?d hxëyã¦ê @  w‹.?d ¨xë” ë @  wŒ.?d èxëŸ5 @  w.?d (yëO¶:P @  w Ž.?d hyëÍ'-Ž @  w!.?d ¨yëTD @  w".?d èyëÖš @  w#‘.?d (zëüb¡ @  w$’.?d hzë~ó¶Ï @  w%“.?d ¨zë„Î @  w&”.?d èzë˜  @  w'•.?d ({ëô3% @  w(–.?d h{ëv$û @  w)—.?d ¨{ëŠ÷kÝ @  w*˜.?d è{ëf| @  w+™.?d (|릙F @  w,š.?d h|ë$Ž˜ @  w-›.?d ¨|ë@i"™ @  w.œ.?d è|ëÂø5G @  w/.?d (}ëM5’ @  w0ž.?d h}ëÜ"L @  w1Ÿ.?d ¨}ë…\6Z @  w2 .?d è}ëÍ!„ @  w3¡.?d (~ë-.— @  w4¢.?d h~믿€Ñ @  w5£.?d ¨~ëËÈ,Ð @  w6¤.?d è~ëIY; @  w7¥.?d (ë%M; @  w8¦.?d hë§Üå @  w9§.?d ¨ëuЀë'[»]à @  w:¨.?d èëàí–È @  w; ©.?d @€ë9ôbö @  w< ª.?d €€ë` @  w= «.?d À€ëßÙ) @  w> ¬.?d ëZUÁ @  w? ­.?d @ë#7ï @  w@ ®.?d €ëÂíþ @  wA ¯.?d Àë8‘Õ @  wB °.?d ‚ë¥ÕuÕ @  wC ±.?d @‚ëãtA @  wD ².?d €‚ë°v¿ @  wE ³.?d À‚ë2B`7 @  wF€´.?d ƒëâ ìß @  wG€µ.?d @ƒë˜€æu @  wH ¶.?d €ƒë¸uä‹ @  wI ·.?d Àƒëæv¾ @  wJ ¸.?d „ëÿ8M‚ @  wK ¹.?d @„ëÊL @  wL º.?d €„ëêûNè @  wM ».?d À„ë,è÷É @  wN ¼.?d …ëü {! @  wO ½.?d @…ëoÌà @  wP ¾.?d €…ëO9â< @  wQ ¿.?d À…ëö @  wR À.?d †ë½Š @  wSÁ.?d @†ëˆ8‹› @  wTÂ.?d €†ë¨Í‰e @  wUÃ.?d À†ënÞ0D @  wVÄ.?d ‡ë¾–¼¬ @  wWÅ.?d @‡ë€[¯ @  wXÆ.?d €‡ë ®Q @  wYÇ.?d À‡ëƒ-2+ @  wZ€È.?d ˆëó•Ÿ @  w[ É.?d @ˆëÆ£  @  w\ Ê.?d €ˆëæVõ @  w] Ë.?d Àˆë E«Ô @  w^ Ì.?d ‰ëð '< @  w_ Í.?d @‰ërg›o @  w` Î.?d €‰ëR’™‘ @  wa Ï.?d À‰ëiÁ¡{ @  wb Ð.?d Šëô…º @  wc Ñ.?d @ŠëÁ³. @  wd Ò.?d €ŠëáFÐ @  we Ó.?d ÀŠë'U»ñ @  wf Ô.?d ‹ë÷7 @  wg Õ.?d @‹ëÉÐ’ @  wh Ö.?d €‹ëé%ä @  wi ×.?d À‹ë·&Êâ @  wj Ø.?d Œë®h9í @  wk Ù.?d @Œë›^8y @  wl Ú.?d €Œë»«:‡ @  wm Û.?d ÀŒë}¸ƒ¦ @  wn Ü.?d ë­ðN @  wo Ý.?d @ë>œ”­ @  wp Þ.?d €ëi–S @  wq ß.?d À븗e @  wr à.?d Žë%É7¤ @  ws á.?d @Žëÿ60 @  wt â.?d €Žë0 4Î @  wu ã.?d ÀŽëöï @  wv ä.?d ë&Q @  ww å.?d @뜤 @  wx æ.?d €ë8i¦ú @  wy ç.?d Àëfjüü @  wz è.?d ëØ´@N @  w{ é.?d @ëí‚AÚ @  w| ê.?d €ëÍwC$ @  w} ë.?d Àë dú @  w~ ì.?d ‘ëÛ,ví @  w í.?d @‘ëü @  w€ î.?d €‘ë4âþã @  w ï.?d À‘ë±Æ  @  w‚ ð.?d ’ë’õfÈ @  wƒ ñ.?d @’ë§Ãg\ @  w„ ò.?d €’ë‡6e¢ @  w… ó.?d À’ëA%܃ @  w† ô.?d “ë‘mPk @  w‡ õ.?d @“믠õh @  wˆ ö.?d €“ëU÷– @  w‰ ÷.?d À“ëÑV­ @  wŠ ø.?d ”ëÈ^Ÿ @  w‹ ù.?d @”ëý._  @  wŒ ú.?d €”ëÝÛ]õ @  w û.?d À”ëÈäÔ @  wŽ ü.?d •ëË€h< @  w ý.?d @•ëXìóß @  w þ.?d €•ëxñ! @  w‘ ÿ.?d À•ëL ä˜ @  w’ /?d –ëÑHDY @  w“ /?d @–ëä~EÍ @  w” /?d €–ëÄ‹G3 @  w• /?d À–ë˜þ @  w– /?d —ëÒÐrú @  w— /?d @—ëì×ù @  w˜ /?d €—ëÌèÕ @  w™ /?d À—ë’ë @  wš /?d ˜ë¦ @  w›  /?d @˜ë“"ˆ @  wœ  /?d €˜ë³×v @  w  /?d À˜ëuĹW @  wž  /?d ™ë¥Œ5¿ @  wŸ  /?d @™ë'æ‰ì @  w  /?d €™ë‹ @  w¡ /?d À™ë<@³ø @  w¢ /?d šë¡9 @  w£ /?d @šë”2­ @  w¤ /?d €šë´ÇS @  w¥ /?d ÀšërÔ©r @  w¦ /?d ›ë¢œ%š @  w§ /?d @›ëœQ€™ @  w¨ /?d €›ë¼¤‚g @  w© /?d À›ëâ§Øa @  wª /?d œëûé+n @  w« /?d @œëÎß*ú @  w¬ /?d €œëî*( @  w­ /?d Àœë(9‘% @  w® /?d ëøqÍ @  w¯ /?d @ëk†. @  w° /?d €ëKè„Ð @  w± /?d Àëí …æ @  w²  /?d žëpH%' @  w³ !/?d @žëE~$³ @  w´ "/?d €žëe‹&M @  wµ #/?d Àžë£˜Ÿl @  w¶ $/?d ŸësЄ @  w· %/?d @ŸëM¶‡ @  w¸ &/?d €Ÿëmè´y @  w¹ '/uРë?d ÀŸë3ëî @  wº (/?d  ë{'ìÌ @  w»)/?d X ëNíX @  w¼*/?d ˜ ënäï¦ @  w½+/?d Ø ë¨÷V‡ @  w¾,/?d ¡ëx¿Úo @  w¿-/?d X¡ëTÒ`® @  wÀ./?d ˜¡ët'bP @  wÁ//?d Ø¡ëOtZº @  wÂ0/?d ¢ëÒ0ú{ @  wÃ1/?d X¢ëçûï @  wÄ2/?d ˜¢ëÇóù @  wÅ3/?d Ø¢ëà@0 @  wÆ4/?d £ëÑ¨ÌØ @  wÇ5/?d X£ëïeiÛ @  wÈ6/?d ˜£ëÏk% @  wÉ7/?d أ둓1# @  wÊ8/?d ¤ëˆÝÂ, @  wË9/?d X¤ë½ëø @  wÌ:/?d ˜¤ëÁF @  wÍ;/?d ؤë[ xg @  wÎ/?d ˜¥ë8Üm’ @  wÑ?/?d Ø¥ënhyµ @  wÒ@/?d ¦ëó,Ùt @  wÓA/?d X¦ëÆØà @  wÔB/?d ˜¦ëæïÚ @  wÕC/?d ئë üc? @  wÖD/?d §ëð´ï× @  w×E/?d X§ëÎyJÔ @  wØF/?d ˜§ëîŒH* @  wÙG/?d اë°, @  wÚH/?d ¨ë„pž1 @  wÛI/?d X¨ë±FŸ¥ @  wÜJ/?d ˜¨ë‘³[ @  wÝK/?d بëW $z @  wÞL/?d ©ë‡è¨’ @  wßM/?d X©ë‚Á @  wàN/?d ˜©ë%w? @  wáO/?d Ø©ë$.Õ @  wâP/?d€ ªë«úšF @  xQ/?d XªëÓû @  xR/?d ˜ªë_xÑ @  xS/?d تë\"“É @  xT/?d «ëŒj! @  xU/?d X«ë|åX @  xV/?d ˜«ë\àç¦ @  xW/?d Ø«ëÌQâÚ @  xX/?d ¬ëÕÕ @  x Y/?d X¬ë%`ë¬ @  x Z/?d ˜¬ë•éR @  x [/?d جëÏ«ž @  x \/?d ­ëÖ‡'v @  x ]/?d X­ë&øÝ @  x^/?d ˜­ë ßñ @  x_/?d Ø­ëÃú¿] @  x`/?d ®ë^¾œ @  xa/?d X®ë®Áåå @  xb/?d ˜®ëŽ4ç @  xc/?d Ø®ën¥× @  xd/?d ¯ë]&)? @  xe/?d X¯ë­YÓF @  xf/?d ˜¯ë¬Ñ¸ @  xg/?d دëÔÄ @  xh/?d °ë£Ãhv @  xi/?d X°ëS¼’ @  xj/?d ˜°ësIñ @  xk/?d ذëpÒ= @  xl/?d ±ë [^Õ @  xm/?d X±ëP$¤¬ @  xn/?d ˜±ëpѦR @  xo/?d رë9—Ø’ @  x p/?d ²ë¤ÓxS @  x!q/?d X²ëT¬‚* @  x"r/?d ˜²ëtY€Ô @  x#s/?d زëw @  x$t/?d ³ë§KNð @  x%u/?d X³ëW4´‰ @  x&v/?d ˜³ëwÁ¶w @  x'w/?d سëçp³  @  x(x/?d ´ëþ>@ @  x)y/?d X´ëAº} @  x*z/?d ˜´ë.´¸ƒ @  x+{/?d Ø´ë-îúO @  x,|/?d µëý¦v§ @  x-}/?d Xµë ÙŒÞ @  x.~/?d ˜µë-,Ž  @  x//?d صëM¯ @  x0€/?d ¶ë˜ Î @  x1/?d X¶ëhvõ· @  x2‚/?d ˜¶ëHƒ÷I @  x3ƒ/?d ضëKÙµ… @  x4„/?d ·ë›‘9m @  x5…/?d X·ëkîà @  x6†/?d ˜·ëKÁê @  x7‡/?d Ø·ë۪Ė @  x8ˆ/?d ¸ëïUH‹ @  x9‰/?d X¸ë*²ò @  x:Š/?d ˜¸ë?ß°  @  x;‹/?d ظë<…òÀ @  x<Œ/?d ¹ëìÍ~( @  x=/?d X¹ë²„Q @  x>Ž/?d ˜¹ëò @  x^®/?d °ÁëcO<  @  x_¯/?d ðÁë* BÌ @  x`°/?d 0Âë·Mâ  @  xa±/?d pÂëG2t @  xb²/?d °ÂëgÇŠ @  xc³/?d ðÂëdXF @  xd´/?d 0Ãë´ÕÔ® @  xeµ/?d pÃëDª.× @  xf¶/?d °Ãëd_,) @  xg·/?d ðÃëôî)U @  xh¸/?d 0Äëí ÚZ @  xi¹/?d pÄëß # @  xjº/?d °Äë=*"Ý @  xk»/?d ðÄë>p` @  xl¼/?d 0Åëî8ìù @  xm½/?d pÅëG€ @  xn¾/?d °Åë>²~ @  xo¿/?d ðÅë aà @  xpÀ/?d 0Æë–QÁ @  xqÁ/?d pÆëf.;{ @  xrÂ/?d °ÆëFÛ9… @  xsÃ/?d ðÆëE{I @  xtÄ/?d 0Çë•É÷¡ @  xuÅ/?d pÇëe¶ Ø @  xvÆ/?d °ÇëEC& @  xwÇ/?d ðÇëÕò Z @  xxÈ/?d 0Èëá †G @  xyÉ/?d pÈër|> @  xzÊ/?d °Èë1‡~À @  x{Ë/?d ðÈë2Ý<  @  x|Ì/?d 0Éëâ•°ä @  x}Í/?d pÉëêJ @  x~Î/?d °Éë2Hc @  xÏ/?d ðÉë6 @  x€Ð/?d 0Êë«L Á @  xÑ/?d pÊë[3Z¸ @  x‚Ò/?d °Êë{ÆXF @  xƒÓ/?d ðÊëxœŠ @  x„Ô/?d 0Ëë¨Ô–b @  x…Õ/?d pËëX«l @  x†Ö/?d °Ëëx^nå @  x‡×/?d ðËëèïk™ @  xˆØ/?d 0Ìëñ¡˜– @  x‰Ù/?d pÌëÞbï @  xŠÚ/?d °Ìë!+` @  x‹Û/?d ðÌë"q"Ý @  xŒÜ/?d 0Íëò9®5 @  xÝ/?d pÍëFTL @  xŽÞ/?d °Íë"³V² @  xß/?d ðÍëçD6 @  xà/?d 0Îëz–ß @  x‘á/?d pÎëŠl¦ @  x’â/?d °Î몊nX @  x“ã/?d ðÎë©Ð,” @  x”ä/?d 0Ïëy˜ | @  x•å/?d pÏë‰çZ @  x–æ/?d °Ïë©Xû @  x—ç/?d ðÏë9£]‡ @  x˜è/?d 0Ðë‡}á5 @  x™é/?d pÐëwL @  xšê/?d °ÐëW÷² @  x›ë/?d ðÐëT­[~ @  xœì/?d 0Ñë„å×– @  xí/?d pÑëtš-ï @  xžî/?d °ÑëTo/ @  xŸï/?d ðÑë)QÑ @  x ð/?d 0Òë€mñ @  x¡ñ/?d pÒëp i @  x¢ò/?d °ÒëPç — @  x£ó/?d ðÒëS½K[ @  x¤ô/?d 0Óëƒõdz @  x¥õ/?d pÓësŠ=Ê @  x¦ö/?d °ÓëS?4 @  x§÷/?d ðÓëÃÎ:H @  x¨ø/?d 0ÔëÚ€ÉG @  x©ù/?d pÔë*ÿ3> @  xªú/?d °Ôë 1À @  x«û/?d ðÔë Ps  @  x¬ü/?d 0ÕëÙÿä @  x­ý/?d pÕë)g @  x®þ/?d °Õë ’c @  x¯ÿ/?d ðÕë§Uð @  x°0?d 0Öë:Uõ1 @  x±0?d pÖëÊ*H @  x²0?d °Öëêß ¶ @  x³0?d ðÖëé…Oz @  x´0?d 0×ë9ÍÃ’ @  xµ0?d p×ëɲ9ë @  x¶0?d °×ëéG; @  x·0?d ð×ëyö>i @  x¸0?d 0ØëM ²t @  x¹ 0?d pØë½vH  @  xº 0?d °ØëƒJó @  x» 0?d ðØëžÙ? @  x¼ 0?d 0ÙëN‘„× @  x½ 0?d pÙë¾î~® @  x¾0?d °Ùëž|P @  x¿0?d ðÙëyZ @  xÀ0?d 0Úëä¤Ã @  xÁ0?d pÚëa^º @  xÂ0?d °Úë4”\D @  xÃ0?d ðÚë7Έ @  xÄ0?d 0Ûë熒` @  xÅ0?d pÛëùh @  xÆ0?d °Ûë7 jç @  xÇ0?d ðÛë§½o› @  xÈ0?d 0Üë¾óœ” @  xÉ0?d pÜëNŒfí @  xÊ0?d °Üënyd @  xË0?d ðÜëm#&ß @  xÌ0?d 0Ýë½kª7 @  xÍ0?d pÝëMPN @  xÎ0?d °ÝëmáR° @  xÏ0?d ðÝë¨2 @  xÐ 0?d 0Þë5R’Ý @  xÑ!0?d pÞëÅ-h¤ @  xÒ"0?d °ÞëåØjZ @  xÓ#0?d ðÞëæ‚(– @  xÔ$0?d 0ßë6ʤ~ @  xÕ%0?d pßëƵ^ @  xÖ&0?d uÐàë/°ßëæ@\ù @  x×'0?d ðßëvñY… @  xØ(0?d HàëoUs @  xÙ)0?d ˆàë=Nè* @  xÚ*0?d Èàë¿ßÿô @  xÛ+0?d áëî\& @  xÜ,0?d HáëlÍ1Ð @  xÝ-0?d ˆáë>ÖÞ‰ @  xÞ.0?d Èáë…€‚ @  xß /0?d âëÓÜ] @  xà 00?d HâëQ‚˃ @  xá 10?d ˆâë™$Ú @  xâ 20?d€ ÈâëõË/¢ @  y 30?d ãëE ¾q @  y 40?d Hãëǘ©¯ @  y 50?d ˆãëPʽ @  y 60?d ÈãëÒ[ªÅ @  y 70?d äë‡ @  y 80?d Häë•Ì @  y 90?d ˆäë ¿³ï @  y :0?d Èäë‹.¤1 @  y ;0?d åëä†& @  y <0?d Håëu‘ø @  y =0?d ˆåë '…L @  y >0?d Èå눶’’ @  y ?0?d æëÁ×1ª @  y @0?d HæëCF&t @  y A0?d ˆæërN¨· @  y B0?d Èæëðß¿i @  y C0?d çëd~ @  y D0?d Hçë愊  @  y E0?d ˆçëqÖž @  y F0?d ÈçëóG‰Ê @  y G0?d èë*H @  y H0?d Hèë™»_Ñ @  y I0?d ˆèëïò @  y J0?d Èè뇃ø, @  y K0?d éëIÚ; @  y L0?d Héë‘ØÍå @  y M0?d ˆéëŠÙQ @  y N0?d Èéë„Î @  y O0?d êë Az @  y P0?d Hêë" V¤ @  y Q0?d ˆêëÿ× @  y R0?d Èêë€“è  @  y! S0?d ëëYÊ @  y" T0?d Hëë–ÈÝÀ @  y# U0?d ˆëëšÉt @  y$ V0?d Èëëƒ Þª @  y% W0?d ìëF×`} @  y& X0?d HìëÄFw£ @  y' Y0?d ˆìëXïÇ€ @  y( Z0?d ÈìëÚ~Ð^ @  y) [0?d íëN´òI @  y* \0?d HíëÌ%å— @  y+ ]0?d ˆíë[wñ# @  y, ^0?d ÈíëÙææý @  y- _0?d îë`×PÔ @  y. `0?d HîëâFG  @  y/ a0?d ˆîëÓNÉÉ @  y0 b0?d ÈîëQßÞ @  y1 c0?d ïëÅü @  y2 d0?d HïëG„ëÞ @  y3 e0?d ˆïëÐÖÿj @  y4 f0?d ÈïëRGè´ @  y5 g0?d ðë0 Þ @  y6 h0?d Hð벚 @  y7 i0?d ˆðë.3¾# @  y8 j0?d Èð묢©ý @  y9 k0?d ñë8h‹ê @  y: l0?d Hñëºùœ4 @  y; m0?d ˆñë-«ˆ€ @  y< n0?d Èñë¯:Ÿ^ @  y= o0?d ò닼« @  y> p0?d Hòë -u @  y? q0?d ˆòë‡$¨” @  y@ r0?d Èò뵿J @  yA s0?d óë‘] @  yB t0?d Hóë @  yC u0?d ˆó넼ž7 @  yD v0?d Èóë-‰é @  yE w0?d ôëÃñ7> @  yF x0?d HôëA` à @  yG y0?d ˆôëÝÉà @  yH z0?d Èôë_X‡ @  yI {0?d õëË’¥  @  yJ |0?d HõëI²Ô @  yK }0?d ˆõëÞQ¦` @  yL ~0?d Èõë\À±¾ @  yM 0?d öëgF @  yN €0?d HöëŠöQÊ @  yO 0?d ˆöë»þß  @  yP ‚0?d Èöë9oÈ× @  yQ ƒ0?d ÷ë­¥êÀ @  yR „0?d H÷ë/4ý @  yS …0?d ˆ÷ë¸féª @  yT †0?d È÷ë:÷þt @  yU ‡0?d øëÒš?± @  yV ˆ0?d HøëP (o @  yW ‰0?d ˆøëÌ¢˜L @  yX Š0?d ÈøëN3’ @  yY ‹0?d ùëÚù­… @  yZ Œ0?d HùëXhº[ @  y[ 0?d ˆùëÏ:®ï @  y\ Ž0?d ÈùëM«¹1 @  y] 0?d úëi-6Ä @  y^ 0?d Húëë¼! @  y_ ‘0?d ˆúë˲ˆi @  y` ’0?d ÈúëI#Ÿ· @  ya “0?d ûëÝé½  @  yb ”0?d Hûë_xª~ @  yc •0?d ˆûëÈ*¾Ê @  yd –0?d ÈûëJ»© @  ye —0?d üëgà @  yf ˜0?d Hüë ö @  yg ™0?d ˆüë‘_°> @  yh š0?d ÈüëΧà @  yi ›0?d ý뇅÷ @  yj œ0?d Hýë•’) @  yk 0?d ˆýë’dž @  yl ž0?d ÈýëV‘C @  ym Ÿ0?d þë©g'j @  yn  0?d Hþë+ö0´ @  yo ¡0?d ˆþëþ¾w @  yp ¢0?d Èþë˜o©© @  yq £0?d ÿë ¥‹¾ @  yr ¤0?d HÿëŽ4œ` @  ys ¥0?d ˆÿëfˆÔ @  yt uÐì¦0?d Èÿë¢0Cß @  yu§0?d ìKd™ @  yv¨0?d `ìÉõ G @  yw©0?d  ìU\»d @  yxª0?d àì×ͬº @  yy«0?d ìCŽ­ @  yz¬0?d `ìÁ–™s @  y{­0?d  ìVÄÇ @  y|®0?d àìÔUš @  y}¯0?d ìðÓì @  y~°0?d `ìrB2 @  y±0?d  ìâ @  y€²0?d à쌊< @  y³0?d ì F¨+ @  y‚´0?d `ì‹×¿õ @  yƒµ0?d  ì…«A @  y„¶0?d àìž¼Ÿ @  y…·0?d ì[ÈH @  y†¸0?d `ìÙY– @  y‡¹0?d  ìE𥵠@  yˆº0?d àìÇa²k @  y‰»0?d ìS«| @  yм0?d `ìÑ:‡¢ @  y‹½0?d  ìFh“ @  yŒ¾0?d àìÄù„È @  y¿0?d ì˜'ð @  yŽÀ0?d `ì 0. @  yÁ0?d  ì>¾í @  yÂ0?d à켩3 @  y‘Ã0?d ì(Z‹$ @  y’Ä0?d `ìªËœú @  y“Å0?d  ì=™ˆN @  y”Æ0?d à쿟 @  y•Ç0?d ìWe^U @  y–È0?d `ìÕôI‹ @  y—É0?d  ìI]ù¨ @  y˜Ê0?d àìËÌîv @  y™Ë0?d ì_Ìa @  yšÌ0?d ` ìÝ—Û¿ @  y›Í0?d   ìJÅÏ  @  yœÎ0?d à ìÈTØÕ @  yÏ0?d ììÒW  @  yžÐ0?d ` ìnC@þ @  yŸÑ0?d   ìNMé @  y Ò0?d à ìÌÜþS @  y¡Ó0?d ìXÜD @  y¢Ô0?d ` ìڇ˚ @  y£Õ0?d   ìMÕß. @  y¤Ö0?d à ìÏDÈð @  y¥×0?d ì ˜v' @  y¦Ø0?d ` ìˆ aù @  y§Ù0?d   ì ÑÚ @  y¨Ú0?d à ì–1Æ @  y©Û0?d ìûä @  yªÜ0?d ` ì€jóÍ @  y«Ý0?d   ì8çy @  y¬Þ0?d à ì•©ð§ @  y­ß0?d ì,˜FŽ @  y®à0?d `ì® QP @  y¯á0?d  ìŸß“ @  y°â0?d àìÈM @  y±ã0?d ì‰ZêZ @  y²ä0?d `ì Ëý„ @  y³å0?d  ìœ™é0 @  y´æ0?d àìþî @  yµç0?d ì|D„ @  y¶è0?d `ìþÕZ @  y·é0?d  ìb|¨y @  y¸ê0?d àìàí¿§ @  y¹ë0?d ìt'° @  yºì0?d `ìö¶Šn @  y»í0?d  ìaäžÚ @  y¼î0?d àìãu‰ @  y½ï0?d ìÇóñ @  y¾ð0?d `ìEb/ @  y¿ñ0?d  ìËk¾Î @  yÀò0?d àìIú© @  yÁó0?d ìÝ0‹ @  yÂô0?d `ì_¡œÙ @  yÃõ0?d  ìÈóˆm @  yÄö0?d àìJbŸ³ @  yÅ÷0?d ì¾!d @  yÆø0?d `ì /6º @  yÇù0?d  ì‘††™ @  yÈú0?d àì‘G @  yÉû0?d ì‡Ý³P @  yÊü0?d `ìL¤Ž @  yËý0?d  ì’°: @  yÌþ0?d àì§ä @  yÍÿ0?d ì;OB @  yÎ1?d `ì¹Þœ @  yÏ1?d  ìˆÖœ_ @  yÐ1?d àì G‹ @  yÑ1?d ìž©– @  yÒ1?d `ì¾H @  yÓ1?d  ì‹Nªü @  yÔ1?d àì ß½" @  yÕ1?d ìá²|ç @  yÖ1?d `ìc#k9 @  y× 1?d  ìÿŠÛ @  yØ 1?d àì}ÌÄ @  yÙ 1?d ìéÑîÓ @  yÚ 1?d `ìk@ù  @  yÛ 1?d  ìüí¹ @  yÜ1?d àì~ƒúg @  yÝ1?d ìZu’ @  yÞ1?d `ìØ”bL @  yß1?d  ìøšË? @  yà1?d àìz Üá @  yá1?d ìîÁþö @  yâ1?d€ `ì­( @  z1?d  ìÛBµ @  z1?d àìY•Uk @  z1?d ìYQ @  z1?d `ìÛ‘ @  z1?d  ì‰ŠèÖ @  z1?d àì ÿ @  z1?d ìQc‚e @  z1?d `ìÓò•» @  z 1?d  ìézâ @  z 1?d àìxm< @  z 1?d ì ø @  z  1?d `ìý‘7& @  z !1?d  ì¯ŠØ @  z"1?d àì-Ï¡ @  z#1?d ìÚÂŒ, @  z$1?d `ìXS›ò @  z%1?d  ì Ht«uÐ ì @  z&1?d àìˆÙcu @  z'1?d 8 ìà & @  z(1?d x ìb˜ø @  z)1?d ¸ ì0ƒó¡ @  z*1?d ø ì²ä @  z+1?d 8!ìèj™ @  z,1?d x!ìjûŽÌ @  z-1?d ¸!ì8àa• @  z.1?d ø!ìºqvK @  z/1?d 8"ì[¾S @  z01?d x"ìÙ/ @  z11?d ¸"ì‹4úÔ @  z21?d ø"ì ¥í  @  z31?d 8#ìïz‰7 @  z 41?d x#ìmëžé @  z!51?d ¸#ì?ðq° @  z"61?d ø#ì½afn @  z#71?d 8$ì½ô#T @  z$81?d x$ì?e4Š @  z%91?d ¸$ìm~ÛÓ @  z&:1?d ø$ìïïÌ  @  z';1?d 8%ìµ—±` @  z(<1?d x%ì7¦¾ @  z)=1?d ¸%ìeIç @  z*>1?d ø%ìçŒ^9 @  z+?1?d 8&ìk¤ì @  z,@1?d x&ìé52 @  z-A1?d ¸&ì».þk @  z.B1?d ø&ì9¿éµ @  z/C1?d 8'ìÎfª8 @  z0D1?d x'ìL÷½æ @  z1E1?d ¸'ììR¿ @  z2F1?d ø'ìœ}Ea @  z3G1?d 8(ì±YI @  z4H1?d x(ì3Èh— @  z5I1?d ¸(ìaӇΠ@  z6J1?d ø(ìãB @  z7K1?d 8)ì¹:í} @  z8L1?d x)ì;«ú£ @  z9M1?d ¸)ìi°ú @  z:N1?d ø)ìë!$ @  z;O1?d 8*ì îv< @  z<P1?d x*ìˆaâ @  z=Q1?d ¸*ìÚdŽ» @  z>R1?d ø*ìXõ™e @  z?S1?d 8+ì-ûÊ @  z@T1?d x+ì’¼ì @  zAU1?d ¸+ìÀ§M @  zBV1?d ø+ìB6“ @  zCW1?d 8,ìB£Q© @  zDX1?d x,ìÀ2Fw @  zEY1?d ¸,ì’)©. @  zFZ1?d ø,츾ð @  zG[1?d 8-ìJÀà @  zH\1?d x-ìÈQÔC @  zI]1?d ¸-ìšJ; @  zJ^1?d ø-ìÛ,Ä @  zK_1?d 8.ìd£a @  zL`1?d x.ìæ2vÞ @  zMa1?d ¸.ì´)™‡ @  zNb1?d ø.ì6¸ŽY @  zOc1?d 8/ìÁaÍÔ @  zPd1?d x/ìCðÚ  @  zQe1?d ¸/ìë5S @  zRf1?d ø/ì“z" @  zSg1?d 80ì4(  @  zTh1?d x0ì¶î?Ô @  zUi1?d ¸0ìäõÐ @  zVj1?d ø0ìfdÇS @  zWk1?d 81ì<º> @  zXl1?d x1ì¾­à @  zYm1?d ¸1ìì–B¹ @  zZn1?d ø1ìnUg @  z[o1?d 82ìÈ! @  z\p1?d x2ì Y6¡ @  z]q1?d ¸2ì_BÙø @  z^r1?d ø2ìÝÓÎ& @  z_s1?d 83ì; ª @  z`t1?d x3칽Š@  zau1?d ¸3ìë†Rœ @  zbv1?d ø3ìiEB @  zcw1?d 84ìi‚x @  zdx1?d x4ìë¦ @  zey1?d ¸4ì¹øÿ @  zfz1?d ø4ì;™ï! @  zg{1?d 85ìaá’L @  zh|1?d x5ìãp…’ @  zi}1?d ¸5ì±kjË @  zj~1?d ø5ì3ú} @  zk1?d 86ì¢qR @  zl€1?d x6ì …fŒ @  zm1?d ¸6ìrž‰Õ @  zn‚1?d ø6ìðž  @  zoƒ1?d 87ìÖ݆ @  zp„1?d x7ì…GÊX @  zq…1?d ¸7ì×\% @  zr†1?d ø7ìUÍ2ß @  zs‡1?d 88ìxé÷ @  ztˆ1?d x8ìúx) @  zu‰1?d ¸8ì¨cðp @  zvŠ1?d ø8ì*òç® @  zw‹1?d 89ìpŠšÃ @  zxŒ1?d x9ìò @  zy1?d ¸9ì bD @  zzŽ1?d ø9ì"‘uš @  z{1?d 8:ìÃ^‚ @  z|1?d x:ìAÏ\ @  z}‘1?d ¸:ìÔù @  z~’1?d ø:ì‘EîÛ @  z“1?d 8;ì:˼E @  z€”1?d x;ì¸Z«› @  z•1?d ¸;ìêAD @  z‚–1?d ø;ìhÐS @  zƒ—1?d 8<ìhE& @  z„˜1?d x<ìêÔø @  z…™1?d ¸<ì¸Ïî¡ @  z†š1?d ø<ì:^ù @  z‡›1?d 8=ì`&„ @  zˆœ1?d x=ìâ·“Ì @  z‰1?d ¸=ì°¬|• @  zŠž1?d ø=ì2=kK @  z‹Ÿ1?d 8>ìNE& @  zŒ 1?d x>ìÌÔ1Q @  z¡1?d ¸>ìžÏÞ @  zŽ¢1?d ø>ì^ÉÖ @  z£1?d 8?ì뇊[ @  z¤1?d x?ìi… @  z‘¥1?duÐ@ì7 ¸?ì; rÜ @  z’¦1?d ø?ì€[¹× @  z“ §1?d P@ìZ,µÞ @  z” ¨1?d @ìzÙ·  @  z• ©1?d Ð@ìЦMY @  z– ª1?d AìZîÁ± @  z— «1?d PAìRO'ê @  z˜ ¬1?d Aìrº% @  z™ ­1?d ÐAì‚Åßm @  zš ®1?d Bì¬ @  z› ¯1?d PBì᛼« @  zœ °1?d BìÁn¾U @  z ±1?d ÐBì1D, @  zž ²1?d CìáYÈÄ @  zŸ ³1?d PCìU_7Ï @  z  ´1?d Cìuª51 @  z¡ µ1?d ÐCì…ÕÏH @  z¢ ¶1?d D윛 @  z± Å1?d ÐGì¤ÉìG @  z² Æ1?d Hì6`Z @  z³ Ç1?d PHì |Á± @  z´ È1?d Hì+‰ÃO @  zµ É1?d ÐHìÛö96 @  z¶ Ê1?d Iì ¾µÞ @  z· Ë1?d PIìS… @  z¸ Ì1?d Iì#êQ{ @  z¹ Í1?d ÐIìÓ•« @  zº Î1?d JìNÑ Ã @  z» Ï1?d PJì°ËÈÄ @  z¼ Ð1?d Jì>Ê: @  z½ Ñ1?d ÐJì`A0C @  z¾ Ò1?d Kì° ¼« @  z¿ Ó1?d PKìªE2 @  zÀ Ô1?d KìŠýGÌ @  zÁ Õ1?d ÐKìz‚½µ @  z Ö1?d LìcÌNº @  zà ×1?d PLìø†ïQ @  zÄ Ø1?d LìØsí¯ @  zÅ Ù1?d ÐLì( Ö @  zÆ Ú1?d MìøD›> @  zÇ Û1?d PMìðå}e @  zÈ Ü1?d MìЛ @  zÉ Ý1?d ÐMì o…â @  zÊ Þ1?d Nì½+%# @  zË ß1?d PNìÞ†ßø @  zÌ à1?d NìþsÝ @  zÍ á1?d ÐNì ' @  zÎ â1?d OìÞD«— @  zÏ ã1?d POì{Ds, @  zÐ ä1?d Oì[±qÒ @  zÑ å1?d ÐOì«Î‹« @  zÒ æ1?d Pì7 @  zÓ ç1?d PPìŽZ–ò @  zÔ è1?d P쮯”  @  zÕ é1?d ÐPì^Ðnu @  zÖ ê1?d Q쎘â @  z× ë1?d PQì†9Æ @  zØ ì1?d Qì¦Ì8 @  zÙ í1?d ÐQìV³üA @  zÚ î1?d RìË÷\€ @  zÛ ï1?d PRì5퟇ @  zÜ ð1?d Rìy @  zÝ ñ1?d ÐRìågg @  zÞ ò1?d Sì5/ëè @  zß ó1?d PSì)ã @  zà ô1?d Sì¡Ü @  zá õ1?d ÐSìQ£ìd @  zâ ö1?d€ Tì<.Í @  { ÷1?d PTìF%ê @  { ø1?d TìfÐèñ @  { ù1?d ÐTìSæée @  { ú1?d U샮e @  { û1?d PUìE½Ü¬ @  { ü1?d UìeHÞR @  { ý1?d ÐUì[…{Q @  { þ1?d VìÆÁÛ @  { ÿ1?d PVì@öû  @  { 2?d Vì`ùò @  { 2?d ÐVìU5øf @  { 2?d Wì…}tŽ @  { 2?d PWìCnͯ @  { 2?d Wìc›ÏQ @  { 2?d ÐWìð÷T² @  { 2?d XìÄد @  { 2?d PXìš ‚© @  { 2?d Xìºþ€W @  {  2?d ÐXìÈà @  {  2?d Yì_€ + @  {  2?d PY왓´  @  {  2?d Yì¹f¶ô @  {  2?d ÐY쇫÷ @  { 2?d Zìï³6 @  { 2?d PZì!¼‹Ü @  { 2?d ZìI‰" @  { 2?d ÐZì4ˆ¶ @  { 2?d [ìä7^ @  { 2?d P[ì"$½ @  { 2?d [ìÑ¿ @  { 2?d Ð[ì€»Ò @  { 2?d \ì™õðÝ @  {! 2?d P\ìÇöªÛ @  {" 2?d \ìç¨% @  {# 2?d Ð\ìÒ5©± @  {$ 2?d ]ì}%Y @  {% 2?d P]ìÄnœx @  {& 2?d ]ì䛞† @  {' 2?d Ð]ìÚV;… @  {( 2?d ^ìG›D @  {) 2?d P^ìáöšr @  {*  2?d ^ìÁ˜Œ @  {+ !2?d Ð^ìô5™ @  {, "2?d _ì$}ð @  {- #2?d P_ìân¬Ñ @  {. $2?d _ì›®/ @  {uÐ`ì/ %2?d Ð_ì°še @  {0€&2?d (`ì«H/ý @  {1€'2?d h`ìõKuû @  {2€(2?d ¨`ìÕ¾w @  {3€)2?d è`ìàˆv‘ @  {4€*2?d (aì0Àúy @  {5€+2?d haìöÓCX @  {6€,2?d ¨aìÖ&A¦ @  {7€-2?d èaìèëä¥ @  {8€.2?d (bìu¯Dd @  {9€/2?d hbìNü|Ž @  {:€02?d ¨bìn ~p @  {;€12?d èbì[?ä @  {<€22?d (cì‹wó  @  {=€32?d hcìMdJ- @  {>€42?d ¨cìm‘HÓ @  {?€52?d ècìAüò @  {@€62?d (dìX² @  {A€72?d hdì±[ @  {B€82?d ¨dì&DYå @  {C€92?d èdìrXq @  {D€:2?d (eìÃ:Ô™ @  {E€;2?d heì)m¸ @  {F€<2?d ¨eì%ÜoF @  {G€=2?d èeìÊE @  {H€>2?d (fì†Uj„ @  {I€?2?d hfìÐá~£ @  {J€@2?d ¨fìð|] @  {K€A2?d èfìÅ"}É @  {L€B2?d (gìjñ! @  {M€C2?d hgìÓyH @  {N€D2?d ¨gìóŒJþ @  {O€E2?d ègì`àÑ @  {P€F2?d (hìT] @  {Q€G2?d hhì  @  {R€H2?d ¨hì*éø @  {S€I2?d èhìßl @  {T€J2?d (iìÏ—ˆ„ @  {U€K2?d hiì „1¥ @  {V€L2?d ¨iì)q3[ @  {W€M2?d èiì¼–X @  {X€N2?d (jìŠø6™ @  {Y€O2?d hj챫s @  {Z€P2?d ¨jì‘^  @  {[€Q2?d èjì¤h  @  {\€R2?d (kìt ñ @  {]€S2?d hkì²38Ð @  {^€T2?d ¨kì’Æ:. @  {_€U2?d èk쬆} @  {`€V2?d (lì âur @  {a€W2?d hlìWá/t @  {b€X2?d ¨lìw-Š @  {c€Y2?d èlìB", @  {d€Z2?d (mì’j ö @  {e€[2?d hmìTy× @  {f€\2?d ¨mìtŒ) @  {g€]2?d èmìJA¾* @  {h€^2?d (nì×ë @  {i€_2?d hnìqáÝ @  {j€`2?d ¨nìQ# @  {k€a2?d ènìd"· @  {l€b2?d (oì´j_ @  {m€c2?d hoìry)~ @  {n€d2?d ¨oìRŒ+€ @  {o€e2?d èoìÁà°c @  {p€f2?d (pì> Ñ @  {q€g2?d hpì!=V× @  {r€h2?d ¨pìÈT) @  {s€i2?d èpì4þU½ @  {t€j2?d (qìä¶ÙU @  {u€k2?d hqì"¥`t @  {v€l2?d ¨qìPbŠ @  {w€m2?d èqì<lj @  {x€n2?d (rì¡ÙgH @  {y€o2?d hr욊_¢ @  {z€p2?d ¨rìº]\ @  {{€q2?d èrìI\È @  {|€r2?d (sì_Ð  @  {}€s2?d hsì™i @  {~€t2?d ¨sì¹çkÿ @  {€u2?d èsìvÜá @  {€€v2?d (tìo’ @  {€w2?d htì1‘H @  {‚€x2?d ¨tìdJø @  {ƒ€y2?d ètì$RKl @  {„€z2?d (uìôÇ„ @  {…€{2?d huì2 ~¥ @  {†€|2?d ¨uìü|[ @  {‡€}2?d èuì,1ÙX @  {ˆ€~2?d (vì±uy™ @  {‰€2?d hvìú9, @  {Š€€2?d ¨vìÚò;Ò @  {‹€2?d èvìïÄ:F @  {Œ€‚2?d (wì?Œ¶® @  {€ƒ2?d hwìùŸ @  {Ž€„2?d ¨wìÙj q @  {€…2?d èwìJ–’ @  {€†2?d (xì~ù @  {‘€‡2?d hxì ú@‰ @  {’€ˆ2?d ¨xìBw @  {“€‰2?d èxì59Cã @  {”€Š2?d (yìåqÏ  @  {•€‹2?d hyì#bv* @  {–€Œ2?d ¨yì—tÔ @  {—€2?d èyì=ZÑ× @  {˜€Ž2?d (zì q @  {™€2?d hzì›MIü @  {š€2?d ¨z컸K @  {›€‘2?d èz쎎J– @  {œ€’2?d ({ì^ÆÆ~ @  {€“2?d h{ì˜Õ_ @  {ž€”2?d ¨{ì¸ }¡ @  {Ÿ€•2?d è{ì:JÁò @  { €–2?d (|ì#2ý @  {¡€—2?d h|ì}hû @  {¢€˜2?d ¨|ì]òj @  {£€™2?d è|ìhÄk‘ @  {¤€š2?d (}츌çy @  {¥€›2?d h}ì~Ÿ^X @  {¦€œ2?d ¨}ì^j\¦ @  {§€2?d è}ì`§ù¥ @  {¨€ž2?d (~ìýãYd @  {©€Ÿ2?d h~ì[XR @  {ª€ 2?d ¨~ì{òZ¬ @  {«€¡2?d è~ìNÄ[8 @  {¬€¢2?d (잌×Ð @  {­€£2?d hìXŸnñ @  {®€¤2?d ¨ìuЀì'xjl @  {¯€¥2?d èì–†„ @  {°¦2?d @€ìø8fä @  {±§2?d €€ì_) @  {²¨2?d À€ì†Î> @  {³©2?d ìá!¤¾ @  {´ª2?d @ìc°³` @  {µ«2?d €ìÇa @  {¶¬2?d Àì…V¿ @  {·­2?d ‚ì¤N£ @  {¸®2?d @‚ì&ß } @  {¹¯2?d €‚ì¿è · @  {º°2?d À‚ì=y7i @  {»±2?d ƒìZ–­Ë @  {¼²2?d @ƒìغ @  {½³2?d €ƒì¼p @  {¾´2?d Àƒì>áÊ @  {¿µ2?d „ì‰S_Ú @  {À¶2?d @„ì ÂH @  {Á·2?d €„ì÷¥" @  {¸2?d À„ìu4ü @  {ù2?d …ìÛŠ^ @  {ĺ2?d @…ìJ€ @  {Å»2?d €…ìô=1 @  {Ƽ2?d À…ìv¬&_ @  {ǽ2?d †ìW´4C @  {Ⱦ2?d @†ìÕ%# @  {É¿2?d €†ì!õ"š @  {ÊÀ2?d À†ì£d5D @  {ËÁ2?d ‡ìÄ‹¯æ @  {ÌÂ2?d @‡ìF¸8 @  {ÍÃ2?d €‡ì"m9 @  {ÎÄ2?d À‡ì üç @  {ÏÅ2?d ˆì…þÇ @  {ÐÆ2?d @ˆìo @  {ÑÇ2?d €ˆìû[? @  {ÒÈ2?d Àˆìy™Lá @  {ÓÉ2?d ‰ìvÖC @  {ÔÊ2?d @‰ìœçÁ @  {ÕË2?d €‰ìømœ @  {ÖÌ2?d À‰ìzzB @  {×Í2?d Šì[h^ @  {ØÎ2?d @ŠìÙˆ€ @  {ÙÏ2?d €Šì@¿RJ @  {ÚÐ2?d ÀŠìÂ.E” @  {ÛÑ2?d ‹ì¥Áß6 @  {ÜÒ2?d @‹ì'PÈè @  {ÝÓ2?d €‹ìC'dé @  {ÞÔ2?d À‹ìÁ¶s7 @  {ßÕ2?d ŒìØ+µ @  {àÖ2?d @ŒìZ’3?d @œì’ E @  |?3?d €œì²|J‚ @  |@3?d Àœì0í]\ @  |A3?d ì’K< @  |B3?d @ìÚ+Í @  |C3?d €ì±ä|! @  |D3?d Àì3ukÿ @  |E3?d žìÜß&™ @  |F3?d @žì^N1G @  |G3?d €žì”|z+ @  |H 3?d Àžìímõ @  |I!3?d Ÿì´K º @  |J"3?d @Ÿì6Úd @  |K#3?d €Ÿì—äLˆ @  |L$3uРì?d ÀŸìu[V @  |M%3?d  ìh— @  |N&3?d X ì”I @  |O'3?d ˜ ì uQõ @  |P(3?d Ø ì‰äF+ @  |Q)3?d ¡ì+B'd @  |R*3?d X¡ì©Ó0º @  |S+3?d ˜¡ìígV @  |T,3?d Ø¡ìŠ|pˆ @  |U-3?d ¢ìeÖ=î @  |V.3?d X¢ìçG*0 @  |W/3?d ˜¢ì°ÂX€ @  |X03?d Ø¢ì2SO^ @  |Y13?d £ìõ. @  |Z23?d X£ìd9Ï @  |[33?d ˜£ì³Zn# @  |\43?d Ø£ì1Ëyý @  |]53?d ¤ìZkgU @  |^63?d X¤ìØúp‹ @  |_73?d ˜¤ìVˆy‡ @  |`83?d ؤìÔnY @  |a93?d ¥ìv¿ @  |b:3?d X¥ìô.È @  |c;3?d ˜¥ìUO$ @  |d<3?d Ø¥ì×Xú @  |e=3?d ¦ì8+œ @  |f>3?d X¦ìººB @  |g?3?d ˜¦ì€Ø\? @  |h@3?d ئìIKá @  |iA3?d §ì ï*® @  |jB3?d X§ì"~=p @  |kC3?d ˜§ìƒ@jœ @  |lD3?d اìÑ}B @  |mE3?d ¨ìGÀø @  |nF3?d X¨ìÅQ & @  |oG3?d ˜¨ìZ%%š @  |pH3?d بìØ´2D @  |qI3?d ©ìzS  @  |rJ3?d X©ìøƒDÕ @  |sK3?d ˜©ìY½9 @  |tL3?d Ø©ìÛ,ç @  |uM3?d ªì4†I @  |vN3?d Xªì¶^_ @  |wO3?d ˜ªìá’,ï @  |xP3?d تìc;1 @  |yQ3?d «ìÁ¥Z~ @  |zR3?d X«ìC4M  @  |{S3?d ˜«ìâ L @  ||T3?d Ø«ì`› ’ @  |}U3?d ¬ì ;: @  |~V3?d X¬ì‰ªä @  |W3?d ˜¬ìJ‰;K @  |€X3?d جìÈ,• @  |Y3?d ­ìj¾MÚ @  |‚Z3?d X­ìè/Z @  |ƒ[3?d ˜­ìI è @  |„\3?d Ø­ìË€6 @  |…]3?d ®ì$*WP @  |†^3?d X®ì¦»@Ž @  |‡_3?d ˜®ìl‰ â @  |ˆ`3?d Ø®ìî< @  |‰a3?d ¯ìL¾}s @  |Šb3?d X¯ìÎ/j­ @  |‹c3?d ˜¯ìo=A @  |Œd3?d دìí€*Ÿ @  |e3?d °ì!°{Š @  |Žf3?d X°ì£!lT @  |g3?d ˜°ì @  |œt3?d سìëjà @  |u3?d ´ìmKtH @  |žv3?d X´ìïÚc– @  |Ÿw3?d ˜´ìa¨jš @  | x3?d Ø´ìã9}D @  |¡y3?d µìAŸ  @  |¢z3?d XµìÃ Õ @  |£{3?d ˜µìb0\9 @  |¤|3?d صìà¡Kç @  |¥}3?d ¶ì  @  |¦~3?d X¶ìš_ @  |§3?d ˜¶ìª>° @  |¨€3?d ضì(¯ n @  |©3?d ·ìŠ m! @  |ª‚3?d X·ì˜zÿ @  |«ƒ3?d ˜·ì©¦- @  |¬„3?d Ø·ì+7:Í @  |­…3?d ¸ìm&[w @  |®†3?d X¸ìï·L© @  |¯‡3?d ˜¸ìpÃb @  |°ˆ3?d ظìòRuË @  |±‰3?d ¹ìPô„ @  |²Š3?d X¹ìÒeZ @  |³‹3?d ˜¹ìs[T¶ @  |´Œ3?d عìñÊCh @  |µ3?d ºì` @  |¶Ž3?d XºìœñÐ @  |·3?d ˜ºìËtk` @  |¸3?d غìIå|¾ @  |¹‘3?d »ìëCñ @  |º’3?d X»ìiÒ / @  |»“3?d ˜»ìÈì]à @  |¼”3?d Ø»ìJ}J @  |½•3?d ¼ì!ÝTµ @  |¾–3?d X¼ì£LCk @  |¿—3?d ˜¼ìƒ9Lõ @  |À˜3?d ؼì¨[+ @  |Á™3?d ½ì£:d @  |š3?d X½ì!Ÿ-º @  |Û3?d ˜½ì€¡zV @  |Äœ3?d ؽì0mˆ @  |Å3?d ¾ìíš î @  |Æž3?d X¾ìo 70 @  |ÇŸ3?d ˜¾ì¥9|\ @  |È 3?d ؾì'¨k‚ @  |É¡3?d ¿ì… Í @  |Ê¢3?d X¿ìŸ @  |Ë£3?d ˜¿ì¦¡Jÿ @uÐÀì  |̤3?d Ø¿ì$0]! @  |Í¥3?d 0Àì2.áÔ @  |Φ3?d pÀì°¿ö  @  |ϧ3?d °Àì/ËØ¶ @  |Ш3?d ðÀì­ZÏh @  |Ñ©3?d 0Áìü®' @  |Òª3?d pÁìm¹ù @  |Ó«3?d °Áì,Sî @  |Ô¬3?d ðÁì®ÂùË @  |Õ­3?d 0ÂìAh´­ @  |Ö®3?d pÂìÃù£s @  |ׯ3?d °Âì”|Ñà @  |ذ3?d ðÂìíÆ @  |Ù±3?d 0Ãì´K§R @  |Ú²3?d pÃì6Ú°Œ @  |Û³3?d °Ãì—äç` @  |Ü´3?d ðÃìuð¾ @  |ݵ3?d 0Äì~Õî @  |Þ¶3?d pÄìüDùÈ @  |ß·3?d °Äìr6ðÄ @  |à¸3?d ðÄìð§ç @  |á¹3?d 0ÅìR†U @  |âº3?d€ pÅì¤S- @  }»3?d °Åìä,’è @  }¼3?d ðÅìf½…6 @  }½3?d 0ÆìL^3½ @  }¾3?d pÆìÎÏ$c @  }¿3?d °Æì:%d @  }À3?d ðÆì¸Ž2º @  }Á3?d 0ÇìÔš  @  }Â3?d pÇìV Q @  } Ã3?d °Çì2|·P @  } Ä3?d ðÇì°í Ž @  } Å3?d 0Èì3µ:Ù @  } Æ3?d pÈì±$- @  } Ç3?d °ÈìMCb! @  }È3?d ðÈìÏÒuÿ @  }É3?d 0Éìgu* @  }Ê3?d pÉìŒöbô @  }Ë3?d °ÉìèÎõ @  }Ì3?d ðÉìjÙ+ @  }Í3?d 0Êì@óo  @  }Î3?d pÊìÂbx~ @  }Ï3?d °Êì[UU´ @  }Ð3?d ðÊìÙÄBj @  }Ñ3?d 0ËìµÐ|_ @  }Ò3?d pËì7Ak @  }Ó3?d °ËìS6Ç€ @  }Ô3?d ðËìѧÐ^ @  }Õ3?d 0ÌìN5 @  }Ö3?d pÌìýß"Å @  }×3?d °Ìì¸mã @  }Ø3?d ðÌìƒ)z= @  }Ù3?d 0ÍìSš]X @  } Ú3?d pÍìÑ J† @  }!Û3?d °Íìµ|æ‡ @  }"Ü3?d ðÍì7íñY @  }#Ý3?d 0ÎìGÒ @  }$Þ3?d pÎ쟟P  @  }%ß3?d °Îì›D @  }&à3?d ðÎìŽSÄ @  }'á3?d 0Ïìušmñ @  }(â3?d pÏì÷ z/ @  })ã3?d °Ïì“|Ö. @  }*ä3?d ðÏìíÁð @  }+å3?d 0Ðì”k @  },æ3?d pÐìš|Ö @  }-ç3?d °Ðìfb3ð @  }.è3?d ðÐìäó$. @  }/é3?d 0Ñì%F$û @  }0ê3?d pÑì§×3% @  }1ë3?d °ÑìàŸ$ @  }2ì3?d ðÑìA1ˆú @  }3í3?d 0ÒìkÒ>q @  }4î3?d pÒìéC)¯ @  }5ï3?d °Òìpte @  }6ð3?d ðÒìòå» @  }7ñ3?d 0Óìžñ-Ž @  }8ò3?d pÓì`:P @  }9ó3?d °Óìx–Q @  }:ô3?d ðÓìú† @  };õ3?d 0ÔìTodÊ @  }<ö3?d pÔìÖþs @  }=÷3?d °Ôì*™<2 @  }>ø3?d ðÔì¨+ì @  }?ù3?d 0ÕìÖ¼  @  }@ú3?d pÕìT-Å @  }Aû3?d °Õì0Z±Ä @  }Bü3?d ðÕì²Ë¦ @  }Cý3?d 0Öì˜(‘ @  }Dþ3?d pÖì¹O @  }Eÿ3?d °Öì°Á8@ @  }F4?d ðÖì2P/ž @  }G4?d 0×ì^D« @  }H4?d p×ìÜÕu @  }I4?d °×츢ªt @  }J4?d ð×ì:3½ª @  }K4?d 0Øì¹k'ý @  }L4?d pØì;ú0# @  }M4?d °ØìÇ @  }N4?d ðØìE hÛ @  }O 4?d 0Ù섹h @  }P 4?d pÙì(Ð @  }Q 4?d °Ùìb_ÓÑ @  }R 4?d ðÙìàÎÄ @  }S 4?d 0ÚìÊ-r„ @  }T4?d pÚìH¼eZ @  }U4?d °ÚìÑ‹H @  }V4?d ðÚìS_N @  }W4?d 0Ûì?a{ @  }X4?d pÛ콟v¥ @  }Y4?d °ÛìÙèÚ¤ @  }Z4?d ðÛì[yÍz @  }[4?d 0Üìõ(? @  }\4?d pÜìw?á @  }]4?d °Üì‹fpÇ @  }^4?d ðÜì ÷g @  }_4?d 0ÝìÙD@| @  }`4?d pÝì[ÕW¢ @  }a4?d °Ýì?¢û£ @  }b4?d ðÝì½3ì} @  }c4?d 0Þì—ÐZö @  }d4?d pÞìAM( @  }e4?d °ÞìÁY> @  }f 4?d ðÞì“PNà @  }g!4?d 0ßìÿDpÕ @  }h"4?d pßì}Õg  @  }i#4?d uÐàì/°ßì¢Ë  @  }j$4?d ðßì泯¨ @  }k€%4?d HàìH°ç @  }l€&4?d ˆàìhEåê @  }m€'4?d Èàì6F¿ì @  }n€(4?d áìæ3 @  }o€)4?d Háìub¨ç @  }p€*4?d ˆáìU—ª @  }q€+4?d Èáì“„8 @  }r€,4?d âìÀ³ù @  }s€-4?d Hâì;ö²m @  }t€.4?d ˆâì°“ @  }u€/4?d Èâì Pˆy @  }v€04?d ãìð‘ @  }w€14?d HãìÎÕ¡’ @  }x€24?d ˆãìî £l @  }y€34?d Èãì(3M @  }z€44?d äì1}éB @  }{€54?d HäìKèÖ @  }|€64?d ˆäì$¾ê( @  }}€74?d Èäìz½°. @  }~€84?d åìªõ<Æ @  }€94?d Håìeζ6 @  }€€:4?d ˆåìE;´È @  }€;4?d Èåìƒ( é @  }‚€<4?d æìl­( @  }ƒ€=4?d Hæì+Z¬¼ @  }„€>4?d ˆæì ¯®B @  }…€?4?d Èæì]ºe @  }†€@4?d çìS6 @  }‡€A4?d Hç쳞“Ž @  }ˆ€B4?d ˆçì“k‘p @  }‰€C4?d ÈçìUx(Q @  }Š€D4?d èìa‡¤L @  }‹€E4?d HèìT±¥Ø @  }Œ€F4?d ˆèìtD§& @  }€G4?d Èèì*Gý  @  }Ž€H4?d éìúqÈ @  }€I4?d Héìicê+ @  }€J4?d ˆéìI–èÕ @  }‘€K4?d Èéì…Qô @  }’€L4?d êìÁñ5 @  }“€M4?d Hêì'÷ð¡ @  }”€N4?d ˆêìò_ @  }•€O4?d ÈêìÚ4?d   í¼wv @  ~?Û4?d à í¦Žï @  ~@Ü4?d í;_.. @  ~AÝ4?d `íË ÔW @  ~BÞ4?d  íëÕÖ© @  ~Cß4?d àíˆx,r @  ~Dà4?d íX0 š @  ~Eá4?d `í¨OZã @  ~Fâ4?d  íˆºX @  ~Gã4?d à퀾F @  ~Hä4?d í>Åô @  ~Iå4?d `íκø @  ~Jæ4?d  íîOús @  ~Kç4?d àíu[˜ @  ~Lè4?d í¥M×p @  ~Mé4?d `íU2-  @  ~Nê4?d  íuÇ/÷ @  ~Oë4?d àíÐÇ÷L @  ~Pì4?d íMƒW @  ~Qí4?d `í½ü­ô @  ~Rî4?d  í ¯  @  ~Sï4?d àícl  @  ~Tð4?d í³[àå @  ~Uñ4?d `íC$œ @  ~Vò4?d  ícÑb @  ~Wó4?d àíkpþ9 @  ~Xô4?d ír> 6 @  ~Yõ4?d `í‚A÷O @  ~Zö4?d  í¢´õ± @  ~[÷4?d àí9þTZ @  ~\ø4?d íé¶Ø² @  ~]ù4?d `íÉ"Ë @  ~^ú4?d  í9< 5 @  ~_û4?d àí:ß> @  ~`ü4?d í~ÿ @  ~aý4?d `íà…† @  ~bþ4?d  íÀô‡x @  ~cÿ4?d àí1¨i, @  ~d5?d íáàåÄ @  ~e5?d `퟽ @  ~f5?d  í1jC @  ~g5?d àí9Ëû @  ~h5?d í 4w @  ~i5?d `íýK| @  ~j5?d  íݾ‚ @  ~k5?d àíFô.i @  ~l5?d í–¼¢ @  ~m 5?d `ífÃXø @  ~n 5?d  íF6Z @  ~o 5?d àíã6‚½ @  ~p 5?d í~r"| @  ~q 5?d `íŽ Ø @  ~r5?d  í®øÚû @  ~s5?d àíPâü @  ~t5?d 퀪• @  ~u5?d `ípÕom @  ~v5?d  íP m“ @  ~w5?d àíX‹È @  ~x5?d íAÏxÇ @  ~y5?d `í±°‚¾ @  ~z5?d  í‘E€@ @  ~{5?d àí !« @  ~|5?d íÚG­C @  ~}5?d `í*8W: @  ~~5?d  í ÍUÄ @  ~5?d àíóšœl @  ~€5?d ínÞ<­ @  ~5?d `íž¡ÆÔ @  ~‚5?d  í¾TÄ* @  ~ƒ5?d àíÝù>ñ @  ~„ 5?d í ±² @  ~…!5?d `íýÎH` @  ~†"5?d  íÝ;JžuÐ í @  ~‡#5?d àíÕš¬Å @  ~ˆ$5?d 8 í¤‘r£ @  ~‰%5?d x íTîˆÚ @  ~Š&5?d ¸ ítŠ$ @  ~‹'5?d ø íïQ+Ï @  ~Œ(5?d 8!í?§' @  ~)5?d x!íÏf]^ @  ~Ž*5?d ¸!íï“_  @  ~+5?d ø!íJ“‡ @  ~,5?d 8"í××'Ú @  ~‘-5?d x"í'¨Ý£ @  ~’.5?d ¸"í]ß] @  ~“/5?d ø"íùGZ @  ~”05?d 8#í)² @  ~•15?d x#íÙpjË @  ~–25?d ¸#íù…h5 @  ~—35?d ø#íñ$Žn @  ~˜45?d 8$íèj}a @  ~™55?d x$í‡ @  ~š65?d ¸$í8à…æ @  ~›75?d ø$í£ª$  @  ~œ85?d 8%ísâ¨å @  ~95?d x%íƒRœ @  ~ž:5?d ¸%í£hPb @  ~Ÿ;5?d ø%ín¯i @  ~ <5?d 8&íŠ*¨ @  ~¡=5?d x&ízUõÑ @  ~¢>5?d ¸&íZ ÷/ @  ~£?5?d ø&íÉ]å @  ~¤@5?d 8'í”  @  ~¥A5?d x'íéjnt @  ~¦B5?d ¸'íÉŸlŠ @  ~§C5?d ø'íÁ>ŠÑ @  ~¨D5?d 8(íõÁÌ @  ~©E5?d x(í¾üµ @  ~ªF5?d ¸(í%KþK @  ~«G5?d ø(í¾_  @  ~¬H5?d 8)ínIÓH @  ~­I5?d x)íž6)1 @  ~®J5?d ¸)í¾Ã+Ï @  ~¯K5?d ø)íÃót @  ~°L5?d 8*톇Sµ @  ~±M5?d x*ívø©Ì @  ~²N5?d ¸*íV «2 @  ~³O5?d ø*í¨h5 @  ~´P5?d 8+íx_äÝ @  ~µQ5?d x+íˆ ¤ @  ~¶R5?d ¸+í¨ÕZ @  ~·S5?d ø+í tú @  ~¸T5?d 8,í¹:  @  ~¹U5?d x,íIEów @  ~ºV5?d ¸,íi°ñ‰ @  ~»W5?d ø,íòúPb @  ~¼X5?d 8-í"²ÜŠ @  ~½Y5?d x-íÒÍ&ó @  ~¾Z5?d ¸-íò8$  @  ~¿[5?d ø-íè9Ý” @  ~À\5?d 8.íu}}U @  ~Á]5?d x.í…‡, @  ~Â^5?d ¸.í¥÷…Ò @  ~Ã_5?d ø.íÆZ  @  ~Ä`5?d 8/íóá @  ~Åa5?d x/íæm ˜ @  ~Æb5?d ¸/íƘ f @  ~Çc5?d ø/íÎ9í= @  ~Èd5?d 80ípçQ @  ~Ée5?d x0퀘«ö @  ~Êf5?d ¸0í m© @  ~Ëg5?d ø0í;'ã @  ~Ìh5?d 81íëo„  @  ~Íi5?d x1í~r @  ~Îj5?d ¸1í;å|Œ @  ~Ïk5?d ø1ížå¤7 @  ~Ðl5?d 82í¡ö @  ~Ñm5?d x2íóÞþ @  ~Òn5?d ¸2íÓ+üq @  ~Óo5?d ø2í-1?v @  ~Ôp5?d 83íýy³ž @  ~Õq5?d x3í Iç @  ~Ör5?d ¸3í-óK @  ~×s5?d ø3í%R­B @  ~Øt5?d 84í<^M @  ~Ùu5?d x4íÌc¤4 @  ~Úv5?d ¸4íì–¦Ê @  ~Ûw5?d ø4íwÜ! @  ~Üx5?d 85í§”‹É @  ~Ýy5?d x5íWëq° @  ~Þz5?d ¸5íwsN @  ~ß{5?d ø5íÃŒE @  ~à|5?d 86í^\,„ @  ~á}5?d x6í®#Öý @  ~â~5?d€ ¸6íúÈ¥ @  5?d ø6í•o;Ô @  €5?d 87íE'·< @  5?d x7íp¶¨ @  ‚5?d ¸7íPä´V @  ƒ5?d ø7í–÷ w @  „5?d 88í¢j @  …5?d x8íœÅ$i @  †5?d ¸8í¼0&— @   ‡5?d ø8íâ3|‘ @   ˆ5?d 89í2{ðy @   ‰5?d x9íMñí @   Š5?d ¸9í'¸ó @   ‹5?d ø9íá«J2 @  Œ5?d 8:í|ïêó @  5?d x:íïƒq @  Ž5?d ¸:íÏvsî @  5?d ø:íô%K @  5?d 8;í$mÇì @  ‘5?d x;í[Æx @  ’5?d ¸;í1®Ä† @  “5?d ø;í÷½}§ @  ”5?d 8<íîóލ @  •5?d x<íÐ>+« @  –5?d ¸<íðË)U @  —5?d ø<í®ÈsS @  ˜5?d 8=í~€ÿ» @  ™5?d x=íK¶þ/ @  š5?d ¸=íkCüÑ @  ›5?d ø=í­PEð @  œ5?d 8>í0å1 @  5?d x>í²~Yb @   ž5?d ¸>í’‹[œ @  !Ÿ5?d ø>í4oZª @  " 5?d 8?íä'ÖB @  #¡5?d x?íÑ×Ö @  $¢5?duÐ@í7 ¸?íñäÕ( @  %£5?d ø?í7÷l  @  &¤5?d P@íô[Ö5 @  '¥5?d @íhòf @  (¦5?d Ð@íêcqÈ @  )§5?d Aíæ¹°ø @  *¨5?d PAíd(§& @  +©5?d Aíóz³’ @  ,ª5?d ÐAíqë¤L @  -«5?d Bí¨-ªr @  .¬5?d PBí*¼½¬ @  /­5?d Bí´3o @  0®5?d ÐBí™%$± @  1¯5?d Cíð¯‡m @  2°5?d PCír>³ @  3±5?d Cíål„ @  4²5?d ÐCígý“Ù @  5³5?d Dí:1Î) @  6´5?d PDí¸ Ù÷ @  7µ5?d Dí$ iÔ @  8¶5?d ÐDí¦˜~  @  9·5?d EíªB¿: @  :¸5?d PEí(Ó¨ä @  ;¹5?d Eí¿¼P @  <º5?d ÐEí=«Ž @  =»5?d FíäÖ¥° @  >¼5?d PFífG²n @  ?½5?d FíèN @  @¾5?d ÐFíjß Q @  A¿5?d Gín²…@ @  BÀ5?d PGíì#’ž @  CÁ5?d Gí{q†* @  DÂ5?d ÐGíùà‘ô @  EÃ5?d H퉳 @  FÄ5?d PHí ¤È @  GÅ5?d Hí—¥ë @  HÆ5?d ÐHí45 @  IÇ5?d Iíî @  JÈ5?d PIí›ÕÛ @  KÉ5?d Ií -Áo @  LÊ5?d ÐIí޼ֱ @  MË5?d JíWzØ @  NÌ5?d PJíÕëÏQ @  OÍ5?d JíäãA’ @  PÎ5?d ÐJífrVL @  QÏ5?d Kíøõ @  RÐ5?d PKíiâN @  SÑ5?d Kí;öú @  TÒ5?d ÐK혪á$ @  UÓ5?d LíÅf¼Ô @  VÔ5?d PLíG÷«  @  WÕ5?d LíÛ^) @  XÖ5?d ÐLíYÏ ÷ @  Y×5?d MíUÍÇ @  ZØ5?d PMíׄÚ @  [Ù5?d Mí@Öέ @  \Ú5?d ÐMíÂGÙs @  ]Û5?d Ní×M @  ^Ü5?d PNí™À“ @  _Ý5?d Ní¹ià @  `Þ5?d ÐNí;~> @  aß5?d Oíϲä> @  bà5?d POíM#óà @  cá5?d OíÚqçT @  dâ5?d ÐOíXàðŠ @  eã5?d Pí¢¼âÇ @  fä5?d PPí -õ @  gå5?d Pí¼„E: @  hæ5?d ÐPí>Rä @  iç5?d Qí2Ï“Ô @  jè5?d PQí°^„  @  ké5?d Qí' ¾ @  lê5?d ÐQí¥‡` @  më5?d Rí|[‰^ @  nì5?d PRíþÊž€ @  oí5?d RíÏÂC @  pî5?d ÐRíMS @  qï5?d Sí$Ù¤A @  rð5?d PSí¦H³Ÿ @  sñ5?d Sí1§+ @  tò5?d ÐSí³‹°õ @  uó5?d TíîGí @  vô5?d PTílÖúÛ @  wõ5?d TíðJø @  xö5?d ÐTírî]& @  y÷5?d Uí~4œ @  zø5?d PUíü¥‹È @  {ù5?d Uík÷Ÿ| @  |ú5?d ÐUíéfˆ¢ @  }û5?d Ví0 †œ @  ~ü5?d PVí²1‘B @  ý5?d Víßn’ @  €þ5?d ÐVí]ÿL @  ÿ5?d W퉢æ @  ‚6?d PWí €µ8 @  ƒ6?d WíœÒ¡Œ @  „6?d ÐWíC¶R @  …6?d Xín>”° @  †6?d PXí쯃n @  ‡6?d Xíp3M @  ˆ6?d ÐXíò—$“ @  ‰6?d YíþMå£ @  Š6?d PYí|Üò} @  ‹ 6?d YíëŽæÉ @  Œ 6?d ÐYíiñ @   6?d Zí°Ùÿ) @  Ž 6?d PZí2Hè÷ @   6?d Zí@f4 @  6?d ÐZíÑqê @  ‘6?d [íè[Ò6 @  ’6?d P[íjÊÅè @  “6?d [íý˜Ñ\ @  ”6?d Ð[í Æ‚ @  •6?d \í"Å›r @  –6?d P\í TŒ¬ @  —6?d \í<ý< @  ˜6?d Ð\í¾l+Q @  ™6?d ]í²¶êa @  š6?d P]í0'ý¿ @  ›6?d ]í§ué  @  œ6?d Ð]í%äþÕ @  6?d ^íü"ðë @  ž6?d P^í~³ç5 @  Ÿ6?d ^í^½NF @   6?d Ð^íÜ,Y˜ @  ¡6?d _í(Ø @  ¢ 6?d P_íª€ÔF @  £!6?d _í=ÒÀò @  uÐ`í¤"6?d Ð_í¿C×, @  ¥#6?d (`íE9ÌK @  ¦$6?d h`íǨە @  §%6?d ¨`í[k¶ @  ¨&6?d è`íÙ|h @  ©'6?d (aíÕJ½X @  ª(6?d haíWÛª† @  «)6?d ¨aíÀ‰¾2 @  ¬*6?d èaíB©ì @  ­+6?d (bí›Þ§Ò @  ®,6?d hbíO°  @  ¯-6?d ¨bí(G>Ï @  °.6?d èbíªÖ) @  ±/6?d (cíÃ\ŠÍ @  ²06?d hcíAÍ @  ³16?d ¨cíÖŸ‰§ @  ´26?d ècíTžy @  µ36?d (dí ÂÉ @  ¶46?d hdí‹SÔW @  ·56?d ¨díúdt @  ¸66?d èdí•ksª @  ¹76?d (eí™±²š @  º86?d heí ¥D @  »96?d ¨eíŒr±ð @  ¼:6?d èeíã¦. @  ½;6?d (fí×%¨ @  ¾<6?d hfíU´¿Î @  ¿=6?d ¨fíÛ½/ @  À>6?d èfíY,ñ @  Á?6?d (gí]Aˆà @  Â@6?d hgíßП> @  ÃA6?d ¨gíH‚‹Š @  ÄB6?d ègíÊœT @  ÅC6?d (híºn¾¶ @  ÆD6?d hhí8ÿ©h @  ÇE6?d ¨hí¤VK @  ÈF6?d èhí&Ç• @  ÉG6?d (ií*Ï¥ @  ÊH6?d hií¨ŒØ{ @  ËI6?d ¨ií?ÞÌÏ @  ÌJ6?d èií½OÛ @  ÍK6?d (jíd‰Õ/ @  ÎL6?d hjíæÂñ @  ÏM6?d ¨jí×L2 @  ÐN6?d èjíU[ì @  ÑO6?d (kí< ø0 @  ÒP6?d hkí¾šïî @  ÓQ6?d ¨kí)ÈûZ @  ÔR6?d èkí«Yì„ @  ÕS6?d (líö•±t @  ÖT6?d hlít¦ª @  ×U6?d ¨líè­‰ @  ØV6?d èlíj<W @  ÙW6?d (mífæÀg @  ÚX6?d hmíäw×¹ @  ÛY6?d ¨mís%à  @  ÜZ6?d èmíñ´ÔÓ @  Ý[6?d (ní(rÚí @  Þ\6?d hníªãÍ3 @  ß]6?d ¨níŠíd@ @  à^6?d èní|sž @  á_6?d (oíüAéž @  â`6?d€ hoíÞ5jÇ @  €a6?d ¨oí¨&6Z @  €b6?d èoí*·!„ @  €c6?d (pí¢È$ @  €d6?d hpí—3ßú @  €e6?d ¨píÅ(0£ @  €f6?d èpíG¹'} @  €g6?d (qí…ѹ7 @  €h6?d hqí@®é @  € i6?d ¨qíU[A° @  € j6?d èqí×ÊVn @  € k6?d (ríËE£½ @  € l6?d hríIÔ´c @  € m6?d ¨ríÏ[: @  €n6?d èrí™^Lä @  €o6?d (sí“ÇŽ¢ @  €p6?d hsíV™| @  €q6?d ¨síCMv% @  €r6?d èsíÁÜaû @  €s6?d (tíYYÇæ @  €t6?d htíÛÈÐ8 @  €u6?d ¨tí‰Ó?a @  €v6?d ètí B(¿ @  €w6?d (uíÉ*¶õ @  €x6?d huíK»¡+ @  €y6?d ¨uí Nr @  €z6?d èuí›1Y¬ @  €{6?d (v퇾¬ @  €|6?d hví/»¡ @  €}6?d ¨víW4Tø @  €~6?d èvíÕ¥C& @  €6?d (wí¾Þ @  € €6?d hwí<ŠÉQ @  €!6?d ¨wín‘& @  €"‚6?d èwíì1Ö @  €#ƒ6?d (xíY4èÙ @  €$„6?d hxíÛ¥ÿ @  €%…6?d ¨x퉾^ @  €&†6?d èxí /€ @  €'‡6?d (yíÉG™Ê @  €(ˆ6?d hyíKÖŽ @  €)‰6?d ¨yíÍaM @  €*Š6?d èyí›\v“ @  €+‹6?d (zí‡Óƒ@ @  €,Œ6?d hzíB”ž @  €-6?d ¨zíWY{Ç @  €.Ž6?d èzíÕÈl @  €/6?d ({íßQ®_ @  €06?d h{í]À¹ @  €1‘6?d ¨{íÛVØ @  €2’6?d è{íJA @  €3“6?d (|íÏç @  €4”6?d h|í—^ðÅ @  €5•6?d ¨|íÅEœ @  €6–6?d è|íGÔB @  €7—6?d (}í…¼– @  €8˜6?d h}í-Ö @  €9™6?d ¨}íU6n @  €:š6?d è}í×§yQ @  €;›6?d (~íË(Œ‚ @  €<œ6?d h~íI¹›\ @  €=6?d ¨~í¢t @  €>ž6?d è~í™3cÛ @  €?Ÿ6?d (í±¹c @  €@ 6?d hí3®½ @  €A¡6?d ¨íuЀí'a–Aä @  €B¢6?d èíãV: @  €C£6?d @€í rá\ @  €D¤6?d €€í,‡ã¢ @  €E¥6?d À€íÜøÛ @  €F¦6?d í °•3 @  €G§6?d @íœO @  €H¨6?d €í¼ô’± @  €I©6?d ÀíL‹hÈ @  €Jª6?d ‚íÑÏÈ  @  €K«6?d @‚íÒ•ŠÅ @  €L¬6?d €‚íò`ˆ; @  €M­6?d À‚írB @  €N®6?d ƒíÒWþª @  €O¯6?d @ƒíŠ§Ú @  €P°6?d €ƒíªâ¥$ @  €Q±6?d ÀƒíZ_] @  €R²6?d „íCÓ¬R @  €S³6?d @„í@‰îž @  €T´6?d €„í`|ì` @  €Uµ6?d À„í @  €V¶6?d …í@Kšñ @  €W·6?d @…íÐúŸ @  €X¸6?d €…íðs @  €Y¹6?d À…ípg  @  €Zº6?d †í4ÇË @  €[»6?d @†ížn… @  €\¼6?d €†í¾›‡ù @  €]½6?d À†íNä}€ @  €^¾6?d ‡íž¬ñh @  €_¿6?d @‡íº £e @  €`À6?d €‡íšø¡› @  €aÁ6?d À‡íj‡[â @  €bÂ6?d ˆí^x×ÿ @  €cÃ6?d @ˆí]"•3 @  €dÄ6?d €ˆí}×—Í @  €eÅ6?d Àˆí¨m´ @  €fÆ6?d ‰í]àá\ @  €gÇ6?d @‰íÍQä  @  €hÈ6?d €‰íí¤æÞ @  €iÉ6?d À‰íÛ§ @  €jÊ6?d Ší€Ÿ¼f @  €kË6?d @ŠíƒÅþª @  €lÌ6?d €Ší£0üT @  €mÍ6?d ÀŠíSO- @  €nÎ6?d ‹íƒŠÅ @  €oÏ6?d @‹íÛGÓµ @  €pÐ6?d €‹íû²ÑK @  €qÑ6?d À‹í Í+2 @  €rÒ6?d ŒíƒØ= @  €sÓ6?d @ŒíÙšñ @  €tÔ6?d €Œí1,˜ @  €uÕ6?d ÀŒíÁSbv @  €vÖ6?d íîž @  €w×6?d @íªëâ @  €xØ6?d €í¡_é @  €yÙ6?d ÀíQ e @  €zÚ6?d ŽíÌd³¤ @  €{Û6?d @ŽíÏ>ñh @  €|Ü6?d €ŽíïËó– @  €}Ý6?d ÀŽí´ ï @  €~Þ6?d íÏü… @  €ß6?d @íV\ô¸ @  €€à6?d €ív©öF @  €á6?d Àí†Ö ? @  €‚â6?d í8° @  €ƒã6?d @í;RòA @  €„ä6?d €í§ð¿ @  €…å6?d ÀíëØ Æ @  €†æ6?d ‘í;†. @  €‡ç6?d @‘í«!ƒR @  €ˆè6?d €‘í‹Ô¬ @  €‰é6?d À‘í{«{Õ @  €Šê6?d ’íæïÛ @  €‹ë6?d @’íåµ™Ø @  €Œì6?d €’íÅ@›& @  €í6?d À’í5?a_ @  €Žî6?d “íåwí· @  €ï6?d @“í½7´Ç @  €ð6?d €“í¶9 @  €‘ñ6?d À“ím½L@ @  €’ò6?d ”ító¿O @  €“ó6?d @”íw©ýƒ @  €”ô6?d €”íW\ÿ} @  €•õ6?d À”í§# @  €–ö6?d •íwk‰ì @  €—÷6?d @•íçÚŒ @  €˜ø6?d €•íÇ/Žn @  €™ù6?d À•í7Pt @  €šú6?d –íªÔÖ @  €›û6?d @–í©N– @  €œü6?d €–퉻”ä @  €ý6?d À–íyÄn @  €žþ6?d —í©Œâu @  €Ÿÿ6?d @—íæ @  € 7?d €—íÏy³ @  €¡7?d À—í?Ia @  €¢7?d ˜í ùÅ| @  €£7?d @˜í£‡° @  €¤7?d €˜í(V…N @  €¥7?d À˜íØ)7 @  €¦7?d ™íaóß @  €§7?d @™í˜Ðö£ @  €¨7?d €™í¸%ô] @  €© 7?d À™íHZ$ @  €ª 7?d šíÕ®å @  €« 7?d @šíÖDì) @  €¬ 7?d €šíö±î× @  €­ 7?d Àšíή @  €®7?d ›íÖ†˜F @  €¯7?d @›íŽÆÁ6 @  €°7?d €›í®3ÃÈ @  €±7?d À›í^L9± @  €²7?d œíGʾ @  €³7?d @œíDXˆr @  €´7?d €œíd­ŠŒ @  €µ7?d Àœí”Òpõ @  €¶7?d íDšü @  €·7?d @íÔ+ùa @  €¸7?d €íôÞûŸ @  €¹7?d Àí¡æ @  €º7?d ží™å¡' @  €»7?d @žíš¿ãë @  €¼7?d €žíºJá @  €½7?d ÀžíJ5l @  €¾7?d Ÿíš}—„ @  €¿7?d @Ÿíà‹Ö  @  €À 7?d €ŸíÀ~Ôô @  €Á!7uРí?d ÀŸí0. @  €Â"7?d  íA ðë @  €Ã#7?d X íBP²' @  €Ä$7?d ˜ íb¥°Ù @  €Å%7?d Ø í’ÚJ  @  €Æ&7?d ¡íB’ÆH @  €Ç'7?d X¡íÒ#Ã4 @  €È(7?d ˜¡íòÖÁÊ @  €É)7?d Ø¡í©;³ @  €Ê*7?d ¢íŸí›r @  €Ë+7?d X¢íœ·Ù¾ @  €Ì,7?d ˜¢í¼BÛ@ @  €Í-7?d Ø¢íL=!9 @  €Î.7?d £íœu­Ñ @  €Ï/7?d X£íÄ5ô¡ @  €Ð07?d ˜£íäÀö_ @  €Ñ17?d Ø£í¿ & @  €Ò27?d ¤í ñÿ) @  €Ó37?d X¤í«½å @  €Ô47?d ˜¤í.^¿ @  €Õ57?d ؤíÞ!Eb @  €Ö67?d ¥íiÉŠ @  €×77?d X¥ížØÌö @  €Ø87?d ˜¥í¾-Î @  €Ù97?d Ø¥íNR4q @  €Ú:7?d ¦íÓ”° @  €Û;7?d X¦íÐLÖ| @  €Ü<7?d ˜¦íð¹Ô‚ @  €Ý=7?d ئíÆ.û @  €Þ>7?d §íÐŽ¢ @  €ß?7?d X§íô/ð @  €à@7?d ˜§íÔÚòà @  €áA7?d اí$¥™ @  €âB7?d€ ¨íd™˜" @  C7?d X¨í†‚’Ç @  D7?d ˜¨í¦w9 @  E7?d بí“A‘­ @  F7?d ©íC E @  G7?d X©í GC @  H7?d ˜©í=ÿE½ @  I7?d Ø©í2ྠ@  J7?d ªížv@ @   K7?d XªíXeù^ @   L7?d ˜ªíxû  @   M7?d تíM¦ú4 @   N7?d «íîvÜ @   O7?d X«í¦½N6 @  P7?d ˜«í†HLÈ @  Q7?d Ø«í$×+ @  R7?d ¬í j$$ @  S7?d X¬íÊy @  T7?d ˜¬íꌟû @  U7?d جíߺžo @  V7?d ­íò‡ @  W7?d X­íQñH @  X7?d ˜­íqJ @  Y7?d Ø­íOÉï| @  Z7?d ®íÒO½ @  [7?d X®ížöœ @  \7?d ˜®í4kôb @  ]7?d Ø®í]õö @  ^7?d ¯íÑy @  _7?d X¯íwñx( @  `7?d ˜¯íWzÖ @  a7?d دíÕnÆ… @   b7?d °ík°z7 @  !c7?d X°í­£Ã @  "d7?d ˜°íVÁè @  #e7?d ذí¸`À| @  $f7?d ±íh(L” @  %g7?d X±í6+’ @  &h7?d ˜±íÞl @  'i7?d رí(±o @  (j7?d ²íµW® @  )k7?d X²ísD¨ @  *l7?d ˜²íS±ªq @  +m7?d زíf‡«å @  ,n7?d ³í¶Ï'  @  -o7?d X³íœç @  .p7?d ˜³í­i @  /q7?d سí>†ú @  0r7?d ´í'Kuõ @  1s7?d X´íáXÌÔ @  2t7?d ˜´íÁ­Î* @  3u7?d Ø´íô›Ï¾ @  4v7?d µí$ÓCV @  5w7?d XµízÐP @  6x7?d ˜µíZ%® @  7y7?d صídè¾­ @  8z7?d ¶íù¬l @  9{7?d X¶í?¿§M @  :|7?d ˜¶íJ¥³ @  ;}7?d ضí*|¤' @  <~7?d ·íú4(Ï @  =7?d X·í±Fhz @  >€7?d ˜·í‘³j„ @  ?7?d Ø·í½ÞÐE @  @‚7?d ¸í‰!\X @  Aƒ7?d X¸íO2åy @  B„7?d ˜¸íoÇç‡ @  C…7?d ظíZñæ @  D†7?d ¹íйjû @  E‡7?d X¹íÔº0ý @  Fˆ7?d ˜¹íôO2 @  G‰7?d عíÊ‚— @  HŠ7?d ºíWÆ7Á @  I‹7?d Xºí‘ÕŽà @  JŒ7?d ˜ºí± Œ @  K7?d غ턊 @  LŽ7?d »íT^b @  M7?d X»ío 9ˆ @  N7?d ˜»íOø;v @  O‘7?d Ø»íÜ” • @  P’7?d ¼íÅÚSš @  Q“7?d X¼íÉê» @  R”7?d ˜¼í#<èE @  S•7?d ؼí éÑ @  T–7?d ½íÆBe9 @  U—7?d X½í˜A?? @  V˜7?d ˜½í¸´=Á @  W™7?d ؽí†y˜Â @  Xš7?d ¾í=8 @  Y›7?d X¾íÝ." @  Zœ7?d ˜¾íýÛƒÜ @  [7?d ؾíÈí‚H @  \ž7?d ¿í¥  @  ]Ÿ7?d X¿í¾A– @  ^ 7?d ˜¿íž´ h @uÐÀí  _¡7?d Ø¿íÞ±; @  `¢7?d 0Àíx.ài @  a£7?d pÀí¾=YH @  b¤7?d °ÀížÈ[¶ @  c¥7?d ðÀí«þZ" @  d¦7?d 0Áí{¶ÖÊ @  e§7?d pÁí%µŒÌ @  f¨7?d °Áí@Ž2 @  g©7?d ðÁí;+1 @  hª7?d 0Âí¦É‹ð @  i«7?d pÂí`Ú2Ñ @  j¬7?d °Âí@/0/ @  k­7?d ðÂíu1» @  l®7?d 0Ãí¥Q½S @  m¯7?d pÃíž…¹ @  n°7?d °Ãí¾÷‡G @  o±7?d ðÃí-›¤ @  p²7?d 0Äí4Õï« @  q³7?d pÄíòÆVŠ @  r´7?d °ÄíÒ3Tt @  sµ7?d ðÄíçUà @  t¶7?d 0Åí7MÙ @  u·7?d pÅíiNƒ @  v¸7?d °ÅíI»ð @  w¹7?d ðÅíwv$ó @  xº7?d 0Æíê2„2 @  y»7?d pÆí,!= @  z¼7?d °Æí Ô?í @  {½7?d ðÆí9â>y @  |¾7?d 0Çí骲‘ @  }¿7?d pÇí¿¦¶ @  ~À7?d °ÇíŸë¤H @  Á7?d ðÇíPÐ.¸ @  €Â7?d 0Èíd/¢¥ @  Ã7?d pÈí¢<„ @  ‚Ä7?d °Èí‚Éz @  ƒÅ7?d ðÈí·ÿî @  „Æ7?d 0Éíg·” @  …Ç7?d pÉí9´Î @  †È7?d °ÉíAÌþ @  ‡É7?d ðÉí'Œiý @  ˆÊ7?d 0ÊíºÈÉ< @  ‰Ë7?d pÊí|Ûp @  ŠÌ7?d °Êí\.rã @  ‹Í7?d ðÊíisw @  ŒÎ7?d 0Ëí¹PÿŸ @  Ï7?d pËí‚Çu @  ŽÐ7?d °Ëí¢öÅ‹ @  Ñ7?d ðËí1š^h @  Ò7?d 0Ìí(Ô­g @  ‘Ó7?d pÌíîÇF @  ’Ô7?d °ÌíÎ2¸ @  “Õ7?d ðÌíû, @  ”Ö7?d 0Íí+L›Ä @  •×7?d pÍíuOÁ @  –Ø7?d °ÍíUºÃ< @  —Ù7?d ðÍíkwf? @  ˜Ú7?d 0Îíö3Æþ @  ™Û7?d pÎí0 ß @  šÜ7?d °ÎíÕ}! @  ›Ý7?d ðÎí%ã|µ @  œÞ7?d 0Ïíõ«ð] @  ß7?d pÏíSOñk @  žà7?d °Ïísºó• @  Ÿá7?d ðÏíñÐOÆ @   â7?d 0ÐíOót @  ¡ã7?d pÐí‰JU @  ¢ä7?d °Ðí©èH« @  £å7?d ðÐíœÞI? @  ¤æ7?d 0ÑíL–Å× @  ¥ç7?d pÑí•ŸÑ @  ¦è7?d °Ñí2`/ @  §é7?d ðÑí ­8, @  ¨ê7?d 0Òí‘é˜í @  ©ë7?d pÒíWú!Ì @  ªì7?d °Òíw#2 @  «í7?d ðÒíB9"¦ @  ¬î7?d 0Óí’q®N @  ­ï7?d pÓí©"–¤ @  ®ð7?d °Óí‰×”Z @  ¯ñ7?d ðÓí»¹ @  °ò7?d 0Ôíõü¶ @  ±ó7?d pÔíÅæE— @  ²ô7?d °ÔíåGi @  ³õ7?d ðÔíÐ%Fý @  ´ö7?d 0ÕímÊ @  µ÷7?d pÕí^n @  ¶ø7?d °Õí~›’í @  ·ù7?d ðÕí@V7î @  ¸ú7?d 0ÖíÝ—/ @  ¹û7?d pÖí. @  ºü7?d °Öí;ô,ð @  »ý7?d ðÖíÂ-d @  ¼þ7?d 0×íÞŠ¡Œ @  ½ÿ7?d p×í¬…Ú @  ¾8?d °×í/Y‡$ @  ¿8?d ð×í4=å @  À8?d 0Øí7˱ø @  Á8?d pØíñØÙ @  Â8?d °ØíÑ- ' @  Ã8?d ðØíä ³ @  Ä8?d 0Ùí4S‡[ @  Å8?d pÙíjPÝ] @  Æ8?d °ÙíJ¥ß£ @  Ç 8?d ðÙíthz  @  È 8?d 0Úíé,Úa @  É 8?d pÚí/?c@ @  Ê 8?d °ÚíÊa¾ @  Ë 8?d ðÚí:ü`* @  Ì8?d 0Ûíê´ì @  Í8?d pÛíÑçÔ( @  Î8?d °ÛíñÖÖ @  Ï8?d ðÛíb~M5 @  Ð8?d 0Üí{0¾: @  Ñ8?d pÜí½# @  Ò8?d °ÜíÖå @  Ó8?d ðÜí¨àq @  Ô8?d 0Ýíx¨ˆ™ @  Õ8?d pÝí&«ÒŸ @  Ö8?d °Ýí^Ða @  ×8?d ðÝí8“ub @  Ø8?d 0Þí¥×Õ£ @  Ù8?d pÞícÄl‚ @  Ú8?d °ÞíC1n| @  Û8?d ðÞívoè @  Ü8?d 0ßí¦Oã @  Ý8?d pßí«â6 @  Þ 8?d uÐàí/°ßí ^àÈ @  ß!8?d ðßí¢4\› @  à"8?d Hàí»m @  á#8?d ˆàíßç®l @  â$8?d€ Èàíœ1N² @  ‚%8?d áퟜ9 @  ‚&8?d Há혋ç @  ‚'8?d ˆáí¡ ?, @  ‚(8?d Èáí#±(ò @  ‚)8?d âíÌe” @  ‚*8?d HâíNŠrJ @  ‚+8?d ˆâíäO1 @  ‚,8?d ÈâífÞ–ï @  ‚ -8?d ãíÄx÷  @  ‚ .8?d HãíFéà~ @  ‚ /8?d ˆãí—6Y @  ‚ 08?d Èãí˜!‡ @  ‚ 18?d äíó¦?/ @  ‚28?d Häíq7(ñ @  ‚38?d ˆäívSåj @  ‚48?d ÈäíôÂò´ @  ‚58?d åíVd“û @  ‚68?d HåíÔõ„% @  ‚78?d ˆåííÛ0î @  ‚88?d ÈåíoJ'0 @  ‚98?d æí€àjV @  ‚:8?d Hæíq}ˆ @  ‚;8?d ˆæí¨´Žó @  ‚<8?d Èæí*%™- @  ‚=8?d ç툃øb @  ‚>8?d Hçí ï¼ @  ‚?8?d ˆçí;‹V @  ‚@8?d Èçí¹ˆ @  ‚A8?d èíÿ c2 @  ‚B8?d Hèí}štì @  ‚C8?d ˆèíkøžÇ @  ‚ D8?d Èèíéi‰ @  ‚!E8?d éíKÏèV @  ‚"F8?d HéíÉ^ÿˆ @  ‚#G8?d ˆéíðpKC @  ‚$H8?d Èéírá\ @  ‚%I8?d êíKû @  ‚&J8?d HêíÚ% @  ‚'K8?d ˆêíµõ^ @  ‚(L8?d Èêí7Žâ€ @  ‚)M8?d ëí•(ƒÏ @  ‚*N8?d Hëí¹” @  ‚+O8?d ˆëíKÇB6 @  ‚,P8?d ÈëíÉVUè @  ‚-Q8?d ìí¢öK@ @  ‚.R8?d Hìí g\ž @  ‚/S8?d ˆìí'‘ @  ‚0T8?d Èìí¥’†Û @  ‚1U8?d íí4ç” @  ‚2V8?d Híí…¥ðJ @  ‚3W8?d ˆíí¼‹D @  ‚4X8?d Èíí>S_ @  ‚5Y8?d îíѰ9 @  ‚6Z8?d HîíS! ç @  ‚7[8?d ˆîíùäúœ @  ‚8\8?d Èîí{uíB @  ‚9]8?d ïíÙÓŒ  @  ‚:^8?d Hïí[B›Ó @  ‚;_8?d ˆïíš‹t( @  ‚<`8?d Èïícö @  ‚=a8?d ðíÔ*2ã @  ‚>b8?d HðíV»%= @  ‚?c8?d ˆðíîÞÉ„ @  ‚@d8?d ÈðílOÞZ @  ‚Ae8?d ñíÎé¿ @  ‚Bf8?d HñíLx¨Ë @  ‚Cg8?d ˆñíuV @  ‚Dh8?d Èñí÷Ç Þ @  ‚Ei8?d òímF¸ @  ‚Fj8?d HòíšüQf @  ‚Gk8?d ˆòí09¢ @  ‚Hl8?d Èòí²¨µÃ @  ‚Im8?d óíÔŒ @  ‚Jn8?d Hóí’ŸÃR @  ‚Ko8?d ˆóíÎáu @  ‚Lp8?d ÈóíLp« @  ‚Mq8?d ôí'Ð @  ‚Nr8?d Hôí¥A Ý @  ‚Os8?d ˆôí¢%ÆF @  ‚Pt8?d Èôí ´Ñ˜ @  ‚Qu8?d õí‚°× @  ‚Rv8?d Hõ탧  @  ‚Sw8?d ˆõí9­Â @  ‚Tx8?d Èõí»< @  ‚Uy8?d öíT–Iz @  ‚Vz8?d HöíÖ^¤ @  ‚W{8?d ˆöí|­ß @  ‚X|8?d ÈöíþSº @  ‚Y}8?d ÷í\õÛN @  ‚Z~8?d H÷íÞdÌ @  ‚[8?d ˆ÷íò;bè @  ‚\€8?d È÷ípªu6 @  ‚]8?d øí6»Œ @  ‚^‚8?d Høí´*R @  ‚_ƒ8?d ˆøí¢Héy @  ‚`„8?d Èøí Ùþ§ @  ‚a…8?d ù킟è @  ‚b†8?d Hùíîˆ6 @  ‚c‡8?d ˆùí9À<ý @  ‚dˆ8?d Èùí»Q+# @  ‚e‰8?d úíTûfE @  ‚fŠ8?d HúíÖjq› @  ‚g‹8?d ˆúí|¯‚à @  ‚hŒ8?d Èúíþ>•> @  ‚i8?d ûí\˜ôq @  ‚jŽ8?d HûíÞ ã¯ @  ‚k8?d ˆûí‚w5ˆ @  ‚l8?d Èûíæ"V @  ‚m‘8?d üíkF<þ @  ‚n’8?d Hüíé×+  @  ‚o“8?d ˆüíî³æ» @  ‚p”8?d Èüíl"ñe @  ‚q•8?d ýí΄* @  ‚r–8?d HýíL‡ô @  ‚s—8?d ˆýíu;3? @  ‚t˜8?d Èýí÷ª$á @  ‚u™8?d þíi‡ @  ‚vš8?d Hþíš‘~Y @  ‚w›8?d ˆþí0T" @  ‚xœ8?d Èþí²Åšü @  ‚y8?d ÿícû³ @  ‚zž8?d Hÿí’òìm @  ‚{Ÿ8?d ˆÿíS;– @  ‚|uÐî 8?d ÈÿíѪH @  ‚}¡8?d î§µ±ø @  ‚~¢8?d `î%$¦& @  ‚£8?d  î~z® @  ‚€¤8?d àîü†mp @  ‚¥8?d î^ ? @  ‚‚¦8?d `îܱá @  ‚ƒ§8?d  î埯* @  ‚„¨8?d àîg¸ô @  ‚…©8?d õ’ @  ‚†ª8?d `î 5âL @  ‚‡«8?d  î ð7 @  ‚ˆ¬8?d àî"aé @  ‚‰­8?d î€Çg¦ @  ‚Š®8?d `îVpx @  ‚‹¯8?d  î^(¦_ @  ‚Œ°8?d àîܹ± @  ‚±8?d î·¯) @  ‚޲8?d `î5ˆ¸÷ @  ‚³8?d  î2ìul @  ‚´8?d àî°}b² @  ‚‘µ8?d îÛý @  ‚’¶8?d `îJ# @  ‚“·8?d  î©d è @  ‚”¸8?d àî+õ·6 @  ‚•¹8?d îÄ_úP @  ‚–º8?d `îFÎíŽ @  ‚—»8?d  îì õ @  ‚˜¼8?d àînš + @  ‚™½8?d îÌ @  ƒ$9?d ø îÝ+áà @  ƒ%9?d 8!î ˜Æ… @  ƒ &9?d x!î Ñ[ @  ƒ!'9?d ¸!îsnž} @  ƒ"(9?d ø!îñÿ‰£ @  ƒ#)9?d 8"îÛ?( @  ƒ$*9?d x"îY(ö @  ƒ%+9?d ¸"î=ú„÷ @  ƒ&,9?d ø"î¿k“) @  ƒ'-9?d 8#îÓ­ @  ƒ(.9?d x#îQîºÂ @  ƒ)/9?d ¸#îÈÙ— @  ƒ*09?d ø#îJH€Ö @  ƒ+19?d 8$îä¡e“ @  ƒ,29?d x$îf0rM @  ƒ-39?d ¸$îGÞL @  ƒ.49?d ø$î€ÖÉ’ @  ƒ/59?d 8%îAcÉG @  ƒ069?d x%îÃòÞ™ @  ƒ179?d ¸%î?•‘¿ @  ƒ289?d ø%a @  ƒ399?d 8&î—ç0ê @  ƒ4:9?d x&îv'4 @  ƒ5;9?d ¸&îq‹5 @  ƒ6<9?d ø&îóœë @  ƒ7=9?d 8'¢Þ @  ƒ8>9?d x'îµ @  ƒ9?9?d ¸'îéÅ´ @  ƒ:@9?d ø'îkT£Ù @  ƒ;A9?d 8(Jò @  ƒ<€B9?d x(î], @  ƒ=€C9?d ¸(îsjñ- @  ƒ>€D9?d ø(îñûæó @  ƒ?€E9?d 8)îOÇ @  ƒ@€F9?d x)î ÞÐÚ @  ƒA€G9?d ¸)îñ¹Ÿü @  ƒB€H9?d ø)îs(ˆ" @  ƒC€I9?d 8*îYË>© @  ƒD€J9?d x*îÛZ)w @  ƒE€K9?d ¸*î¿-…v @  ƒF€L9?d ø*î=¼’¨ @  ƒG€M9?d 8+îQ¨¬ @  ƒH€N9?d x+îÓ9»C @  ƒI€O9?d ¸+îJ–‰ @  ƒJ€P9?d ø+îÈŸW @  ƒK€Q9?d 8,îfvd @  ƒL€R9?d x,îäçsÌ @  ƒM€S9?d ¸,î€ßÍ @  ƒN€T9?d ø,îÈ @  ƒO€U9?d 8-îÃ´ÈÆ @  ƒP€V9?d x-îA%ß @  ƒQ€W9?d ¸-î½B> @  ƒR€X9?d ø-î?Ó‡à @  ƒS€Y9?d 8.î01k @  ƒT€Z9?d x.î—¡&µ @  ƒU€[9?d ¸.îóÖŠ´ @  ƒV€\9?d ø.îqGj @  ƒW€]9?d 8/îS£_ @  ƒX€^9?d x/îŸÂ´ @  ƒY€_9?d ¸/î›B — @  ƒZ€`9?d ø/îÓ·I @  ƒ[€a9?d 80 @  ƒ\€b9?d x0î’; o @  ƒ]€c9?d ¸0îöL¦n @  ƒ^€d9?d ø0îtݱ° @  ƒ_€e9?d 81î¤n–Õ @  ƒ`€f9?d x1î&ÿ  @  ƒa€g9?d ¸1îÚ˜Î- @  ƒb€h9?d ø1îX Ùó @  ƒc€i9?d 82îrêox @  ƒd€j9?d x2îð{x¦ @  ƒe€k9?d ¸2î” Ô§ @  ƒf€l9?d ø2îÃy @  ƒg€m9?d 83îz‰ýL @  ƒh€n9?d x3îøê’ @  ƒi€o9?d ¸3îa/ÇX @  ƒj€p9?d ø3îã¾Ð† @  ƒk€q9?d 84îMW5à @  ƒl€r9?d x4îÏÆ" @  ƒm€s9?d ¸4î«±Ž @  ƒn€t9?d ø4î) ™Â @  ƒo€u9?d 85îè•™ @  ƒp€v9?d x5îjŽÉ @  ƒq€w9?d ¸5î–cÁï @  ƒr€x9?d ø5îòÖ1 @  ƒs€y9?d 86î>`º @  ƒt€z9?d x6î¼€wd @  ƒu€{9?d ¸6îØ÷Ûe @  ƒv€|9?d ø6îZfÌ» @  ƒw€}9?d 87î6ròŽ @  ƒx€~9?d x7î´ãåP @  ƒy€9?d ¸7î]õ°Å @  ƒz€€9?d ø7îßd§ @  ƒ{€9?d 88î\<=L @  ƒ|€‚9?d x8îÞ­*’ @  ƒ}€ƒ9?d ¸8îºÚ†“ @  ƒ~€„9?d ø8î8K‘M @  ƒ€…9?d 89€‹ @  ƒ€€†9?d x9î'8—U @  ƒ€‡9?d ¸9îÛ_Øs @  ƒ‚€ˆ9?d ø9îYÎÏ­ @  ƒƒ€‰9?d 8:îs-y& @  ƒ„€Š9?d x:îñ¼nø @  ƒ…€‹9?d ¸:î•ËÂù @  ƒ†€Œ9?d ø:îZÕ' @  ƒ‡€9?d 8;î{Në @  ƒˆ€Ž9?d x;îùßüÌ @  ƒ‰€9?d ¸;î`èÑ @  ƒŠ€9?d ø;îâyÆØ @  ƒ‹€‘9?d 8<îL# @  ƒŒ€’9?d x<îÎ4C @  ƒ€“9?d ¸<îªv˜B @  ƒŽ€”9?d ø<î(çœ @  ƒ€•9?d 8=îéRI @  ƒ€–9?d x=îkØ— @  ƒ‘€—9?d ¸=ױ @  ƒ’€˜9?d ø=î5Ào @  ƒ“€™9?d 8>î?Övä @  ƒ”€š9?d x>î½Ga: @  ƒ•€›9?d ¸>îÙ0Í; @  ƒ–€œ9?d ø>î[¡Úå @  ƒ—€9?d 8?î7µäÐ @  ƒ˜€ž9?d x?îµ$ó @  ƒ™€Ÿ9?duÐ@î7 ¸?ç @  ƒš€ 9?d ø?îNµƒº @  ƒ›¡9?d P@î:¾/Ì @  ƒœ¢9?d @îK-2 @  ƒ£9?d Ð@îÜX” @  ƒž¤9?d Aî û @  ƒŸ¥9?d PAîŽz¤¨ @  ƒ ¦9?d AV @  ƒ¡§9?d ÐAîðŒüP @  ƒ¢¨9?d BîmÈ\‘ @  ƒ£©9?d PBîXþ] @  ƒ¤ª9?d Bîx _û @  ƒ¥«9?d ÐBî¾æÚ @  ƒ¦¬9?d CînPj2 @  ƒ§­9?d PCîPÏ1 @  ƒ¨®9?d CîphÍÏ @  ƒ©¯9?d ÐCîK;õ% @  ƒª°9?d DîRu* @  ƒ«±9?d PDîgC¾ @  ƒ¬²9?d DîG¶@ @  ƒ­³9?d ÐDa @  ƒ®´9?d EîQí0‰ @  ƒ¯µ9?d PEî«j @  ƒ°¶9?d Eîât©” @  ƒ±·9?d ÐEî¼wó’ @  ƒ²¸9?d Fî!3SS @  ƒ³¹9?d PFîRÇ @  ƒ´º9?d Fî4ðP9 @  ƒµ»9?d ÐFîòãé @  ƒ¶¼9?d Gî"«eð @  ƒ·½9?d PGîfÀó @  ƒ¸¾9?d Gî<“  @  ƒ¹¿9?d ÐGîj'Ö* @  ƒºÀ9?d Hî^ØZ7 @  ƒ»Á9?d PHîkî[£ @  ƒ¼Â9?d HîKY] @  ƒ½Ã9?d ÐHîà| @  ƒ¾Ä9?d Iî]@l” @  ƒ¿Å9?d PIîq-ÖU @  ƒÀÆ9?d IîQØÔ« @  ƒÁÇ9?d ÐIîÛŽ­ @  ƒÂÈ9?d Jî’Ÿ.l @  ƒÃÉ9?d PJî§©/ø @  ƒÄÊ9?d Jî‡\- @  ƒÅË9?d ÐJîAO”' @  ƒÆÌ9?d Kî‘Ï @  ƒÇÍ9?d PKî¯Ê½Ì @  ƒÈÎ9?d Kî?¿2 @  ƒÉÏ9?d ÐKî´l‡Ø @  ƒÊÐ9?d Lî­"t× @  ƒËÑ9?d PLî˜uC @  ƒÌÒ9?d Lî¸áw½ @  ƒÍÓ9?d ÐLî~òΜ @  ƒÎÔ9?d MBt @  ƒÏÕ9?d PMî=ÖÙ— @  ƒÐÖ9?d Mî#Ûi @  ƒÑ×9?d ÐMîC o @  ƒÒØ9?d NîÞd!® @  ƒÓÙ9?d PNîëR : @  ƒÔÚ9?d Nî˧"Ä @  ƒÕÛ9?d ÐNî ´›å @  ƒÖÜ9?d OîÝü  @  ƒ×Ý9?d POîã1² @  ƒØÞ9?d OîÃİð @  ƒÙß9?d ÐOîe ±Æ @  ƒÚà9?d PîÛþ t @  ƒÛá9?d PPîîÈ à @  ƒÜâ9?d PîÎ= @  ƒÝã9?d ÐPî.·? @  ƒÞä9?d QîØf;× @  ƒßå9?d PQîZ ‡„ @  ƒàæ9?d Qîzù…z @  ƒáç9?d ÐQî$úß| @  ƒâè9?d€ Rî?è× @  „é9?d PRî럞¹ @  „ê9?d RîËjœG @  „ë9?d ÐRîÈ0Þ‹ @  „ì9?d SîxRc @  „í9?d PSîè¨ @  „î9?d SîÈòªä @  „ï9?d ÐSî=Ít @  „ð9?d Tî$]>{ @  „ ñ9?d PTîÔ"Ä @  „ ò9?d Tîôׯü @  „ ó9?d ÐTî÷„0 @  „ ô9?d Uî'ÅØ @  „ õ9?d PUî׺ò¡ @  „ö9?d Uî÷Oð_ @  „÷9?d ÐUîÊ_Ëà @  „ø9?d VîWk @  „ù9?d PVî§d‘{ @  „ú9?d V“… @  „û9?d ÐVî„ËÑI @  „ü9?d WîTƒ]¡ @  „ý9?d PWî¤ü§Ø @  „þ9?d Wî„ ¥& @  „ÿ9?d ÐWîÌŒÚÀ @  „:?d XîøsVÝ @  „:?d PXî ¬¤ @  „:?d Xî(ù®Z @  „:?d ÐXî+£ì– @  „:?d Yîûë`~ @  „:?d PYî ”š @  „:?d Yî+a˜ù @  „:?d ÐYîw„Õ @  „ :?d Zîš3$ @  „! :?d PZîjLÞm @  „" :?d ZîJ¹Ü“ @  „# :?d ÐZîIãž_ @  „$ :?d [· @  „% :?d P[îiÔèÎ @  „&:?d [îI!ê0 @  „':?d Ð[î¼À  @  „(:?d \~¯ @  „):?d P\îUñ„Ö @  „*:?d \îu†( @  „+:?d Ð\îv^Ää @  „,:?d ]î¦H  @  „-:?d P]îVi²u @  „.:?d ]îvœ°‹ @  „/:?d Ð]îKŒ‹ @  „0:?d ^îÖÈ+Ö @  „1:?d P^î&·Ñ¯ @  „2:?d ^îBÓQ @  „3:?d Ð^î‘ @  „4:?d _îÕPu @  „5:?d P_î%/ç  @  „6:?d _îÚåò @  „uÐ`î7:?d Ð_îTKgk @  „8  :?d (`îê³Òó @  „9 !:?d h`îÌ(Š @  „: ":?d ¨`î:9*t @  „; #:?d è`î9ch¸ @  „< $:?d (aîé+äP @  „= %:?d haîT) @  „> &:?d ¨aî9¡× @  „? ':?d èaî»°i @  „@ (:?d (bî&ô¦¨ @  „A ):?d hbîÖ‹\Ñ @  „B *:?d ¨bîö~^/ @  „C +:?d èbîõ$ã @  „D ,:?d (cî%l  @  „E -:?d hcîÕjr @  „F .:?d ¨cîõæhŒ @  „G /:?d ècî @  „H 0:?d (dîIü @  „I 1:?d hdîé6j @  „J 2:?d ¨dîÉÔ @  „K 3:?d èdîÊ™FX @  „L 4:?d (eîÑʰ @  „M 5:?d heîê®0É @  „N 6:?d ¨eîÊ[27 @  „O 7:?d èeî÷K « @  „P 8:?d (fîj©j @  „Q 9:?d hfîšpS @  „R ::?d ¨fQí @  „S ;:?d èfî¹ß! @  „T <:?d (gîi—ŸÉ @  „U =:?d hgî™èe° @  „V >:?d ¨gî¹gN @  „W ?:?d ègî!, @  „X @:?d (hîä  @  „Y A:?d hhîå›Zw @  „Z B:?d ¨hîÅnX‰ @  „[ C:?d èhîÆ4E @  „\ D:?d (iî|–­ @  „] E:?d hiîælÔ @  „^ F:?d ¨iîÆön* @  „_ G:?d èiîêàr @  „` H:?d (jîw¤ÒÇ @  „a I:?d hjî‡Û(¾ @  „b J:?d ¨jî§.*@ @  „c K:?d èjî¤thŒ @  „d L:?d (kît<äd @  „e M:?d hkî„C @  „f N:?d ¨kã @  „g O:?d èkîQW{s @  „h P:?d (lîHˆ| @  „i Q:?d hlî¸fr @  „j R:?d ¨lpû @  „k S:?d èlî›É27 @  „l T:?d (mîK¾ß @  „m U:?d hmî»þD¦ @  „n V:?d ¨mî› FX @  „o W:?d èmî¦}Ä @  „p X:?d (nî;_Ý @  „q Y:?d hnîË '| @  „r Z:?d ¨nîëÕ%‚ @  „s [:?d ènîègN @  „t \:?d (oî8Çë¦ @  „u ]:?d hoîȸß @  „v ^:?d ¨oîèM! @  „w _:?d èoî€Mm @  „x `:?d (pî>Åñß @  „y a:?d hpîκ ¦ @  „z b:?d ¨pîîO X @  „{ c:?d èpîíK” @  „| d:?d (qî=]Ç| @  „} e:?d hqîÍ"= @  „~ f:?d ¨qîí×?û @  „ g:?d èqîŒt @  „€ h:?d (rîÔµµ @  „ i:?d hrîá«OÌ @  „‚ j:?d ¨rîÁ^M2 @  „ƒ k:?d èrîÂþ @  „„ l:?d (sîLƒ @  „… m:?d hsîâ3yo @  „† n:?d ¨sîÂÆ{‘ @  „‡ o:?d èsî7' @  „ˆ p:?d (tî.iï @  „‰ q:?d htîÞw @  „Š r:?d ¨tîþ㉠@  „‹ s:?d ètîý¹UE @  „Œ t:?d (uî-ñÙ­ @  „ u:?d huîÝŽ#Ô @  „Ž v:?d ¨uîý{!* @  „ w:?d èuîÀk¶ @  „ x:?d (vî]/ºw @  „‘ y:?d hvî­P@ @  „’ z:?d ¨vî¥Bð @  „“ {:?d èvîŽÿ< @  „” |:?d (wî^·ŒÔ @  „• }:?d hwî®Èv­ @  „– ~:?d ¨wîŽ=tS @  „— :?d èwî ýkœ @  „˜ €:?d (xî?ç @  „™ :?d hxîÏ}ø @  „š ‚:?d ¨xîïˆ @  „› ƒ:?d èxîìÒ]Ê @  „œ „:?d (yî<šÑ" @  „ …:?d hyîÌå+[ @  „ž †:?d ¨yîì)¥ @  „Ÿ ‡:?d èyîÀ5‰ @  „  ˆ:?d (zî]B•H @  „¡ ‰:?d hzî­=o1 @  „¢ Š:?d ¨zîÈmÏ @  „£ ‹:?d èz/ @  „¤ Œ:?d ({î^Ú£ë @  „¥ :?d h{Y’ @  „¦ Ž:?d ¨{îŽP[l @  „§ :?d è{î{±<ü @  „¨ :?d (|îbÿÏó @  „© ‘:?d h|î’€5Š @  „ª ’:?d ¨|î²u7t @  „« “:?d è|î±/u¸ @  „¬ ”:?d (}îagùP @  „­ •:?d h}î‘) @  „® –:?d ¨}î±í× @  „¯ —:?d è}îŒý:K @  „° ˜:?d (~î¹šŠ @  „± ™:?d h~îáÆ`ó @  „² š:?d ¨~îÁ3b  @  „³ ›:?d è~îÂi Á @  „´ œ:?d (î!¬) @  „µ :?d hîâ^VP @  „¶ ž:?d ¨îuЀî'«T® @  „· Ÿ:?d èîªý â @  „¸  :?d @€îÄCè– @  „¹ ¡:?d €€î–XÏ @  „º ¢:?d À€îÉ @  „» £:?d îEJÉë @  „¼ ¤:?d @îÇÛÞ5 @  „½ ¥:?d €î•À1l @  „¾ ¦:?d ÀîQ&² @  „¿ §:?d ‚‹ @  „À ¨:?d @‚îœÍ @  „Á ©:?d €‚îZs” @  „ ª:?d À‚îØŽdJ @  „à «:?d ƒî‰ ½° @  „Ä ¬:?d @ƒî œªn @  „Å ­:?d €ƒîY‡E7 @  „Æ ®:?d ÀƒîÛRé @  „Ç ¯:?d „îµ(Ѩ @  „È °:?d @„î7¹Æv @  „É ±:?d €„îe¢)/ @  „Ê ²:?d À„îç3>ñ @  „Ë ³:?d …î¶°ç  @  „Ì ´:?d @…î4!ðÕ @  „Í µ:?d €…îf:Œ @  „Î ¶:?d À…îä«R @  „Ï ·:?d †îÆn„Ñ @  „Ð ¸:?d @†îDÿ“ @  „Ñ ¹:?d €†îä|V @  „Ò º:?d À†î”ukˆ @  „Ó »:?d ‡îÅö²r @  „Ô ¼:?d @‡îGg¥¬ @  „Õ ½:?d €‡î|Jõ @  „Ö ¾:?d À‡î—í]+ @  „× ¿:?d ˆî¹…µ @  „Ø À:?d @ˆî;šk @  „Ù Á:?d €ˆîiu2 @  „Ú Â:?d Àˆîëžbì @  „Û Ã:?d ‰îº» @  „Ü Ä:?d @‰î8Œ¬È @  „Ý Å:?d €‰îj—C‘ @  „Þ Æ:?d À‰îèTO @  „ß Ç:?d ŠîÛÅÿ| @  „à È:?d @ŠîYTè¢ @  „á É:?d €Šî Oû @  „â Ê:?d€ ÀŠîý ƒ @  … Ë:?d ‹îMßP @  … Ì:?d @‹îÏNŠŽ @  … Í:?d €‹îXž: @  … Î:?d À‹îÚ‰ä @  … Ï:?d ŒîzUß @  … Ð:?d @ŒîøB @  … Ñ:?d €Œîd9ò" @  … Ò:?d ÀŒîæ¨åü @  … Ó:?d îrbÇë @  … Ô:?d @îðóÐ5 @  … Õ:?d €îg¡Ä @  … Ö:?d Àîå0Ó_ @  … ×:?d Žî¤æ>F @  … Ø:?d @Žî&w)˜ @  … Ù:?d €Žî§[ @  … Ú:?d ÀŽî•î°… @  … Û:?d î$’’ @  … Ü:?d @…L @  … Ý:?d €îç‘ø @  … Þ:?d Àî–v†& @  … ß:?d î Ý,| @  … à:?d @îŽL;¢ @  … á:?d €îå‹ @  … â:?d Àîtœ_ @  … ã:?d ‘î¾¾H @  … ä:?d @‘î†/©– @  … å:?d €‘î}½" @  … æ:?d À‘î“ìªü @  … ç:?d ’îÒ:Gå @  … è:?d @’îP«P; @  … é:?d €’îp¥ùH @  … ê:?d À’îò4î– @  …! ë:?d “îfþÌ @  …" ì:?d @“îäoÛ_ @  …# í:?d €“îs=Ïë @  …$ î:?d À“îñ¬Ø5 @  …% ï:?d ”îQ  @  …& ð:?d @”îӱР@  …' ñ:?d €”îO£ó @  …( ò:?d À”î͉´- @  …) ó:?d •îYC–: @  …* ô:?d @•îÛÒä @  …+ õ:?d €•îL€•P @  …, ö:?d À•îÎ‚Ž @  …- ÷:?d –îÇo— @  …. ø:?d @–î VxI @  …/ ù:?d €–î<^öŠ @  …0 ú:?d À–î¾ÏáT @  …1 û:?d —î*ÃC @  …2 ü:?d @—î¨”Ô @  …3 ý:?d €—î?ÆÀ) @  …4 þ:?d À—î½W×÷ @  …5 ÿ:?d ˜î?,Y @  …6 ;?d @˜î½½NS @  …7 ;?d €˜î!þp @  …8 ;?d À˜î£…é® @  …9 ;?d ™î7O˹ @  …: ;?d @™îµÞÜg @  …; ;?d €™î"ŒÈÓ @  …< ;?d À™î ß  @  …= ;?d šîáË2 @  …> ;?d @šîcZ%Ê @  …?  ;?d €šîíSŠ+ @  …@  ;?d ÀšîoÂõ @  …A  ;?d ›îû¿â @  …B  ;?d @›îy™¨< @  …C  ;?d €›îî˼ˆ @  …D ;?d À›îlZ«V @  …E ;?d œîÌÖwm @  …F ;?d @œîNG`³ @  …G ;?d €œîÒîÐ @  …H ;?d ÀœîPÇN @  …I ;?d îĵåY @  …J ;?d @îF$ò‡ @  …K ;?d €îÑvæ3 @  …L ;?d ÀîSçñí @  …M ;?d žî1ô @  …N ;?d @žî  * @  …O ;?d €žî¡¨…é @  …P ;?d Àžî#9’7 @  …Q ;?d Ÿî·ó°  @  …R ;?d @Ÿî5b§þ @  …S ;?d €Ÿî¢0³J @  …T ;uРî?d ÀŸî ¡¤” @  …U ;?d  îL°Ï @  …V ;?d X îΉ§ @  …W!;?d ˜ îR 2 @  …X";?d Ø îбì @  …Y#;?d ¡îD{"û @  …Z$;?d X¡îÆê5% @  …[%;?d ˜¡îQ¸!‘ @  …\&;?d Ø¡îÓ)6O @  …]';?d ¢î’ÿÛV @  …^(;?d X¢în̈ @  …_);?d ˜¢î0`eû @  …`*;?d Ø¢î²ñr% @  …a+;?d £î&;P2 @  …b,;?d X£î¤ªGì @  …c-;?d ˜£î3øSX @  …d.;?d Ø£î±iD† @  …e/;?d ¤î嘽 @  …f0;?d X¤î“tc @  …g1;?d ˜¤îÝ?@ @  …h2;?d ؤîL(ž @  …i3;?d ¥î† ‰ @  …j4;?d X¥î›W @  …k5;?d ˜¥î E ã @  …l6;?d Ø¥îŽÔ= @  …m7;?d ¦îÏó$ @  …n8;?d X¦îM“äú @  …o9;?d ˜¦î|›j9 @  …p:;?d ئîþ }ç @  …q;;?d §îjÀ_ð @  …r<;?d X§îèQH. @  …s=;?d ˜§î\š @  …t>;?d اîý’KD @  …u?;?d ¨îHÄ  @  …v@;?d X¨îŸÙÓ~ @  …wA;?d ˜¨îpc] @  …xB;?d بîátƒ @  …yC;?d ©î+V” @  …zD;?d X©î—ºAJ @  …{E;?d ˜©îèUþ @  …|F;?d Ø©î‚yB  @  …}G;?d ªîï¯9 @  …~H;?d XªîA>¸ç @  …I;?d ˜ªî,a'7 @  …€J;?d تî®ð0é @  …K;?d «î::þ @  …‚L;?d X«î¸«  @  …ƒM;?d ˜«î/ù” @  …„N;?d Ø«î­hJ @  ……O;?d ¬î äÚq @  …†P;?d X¬îuͯ @  …‡Q;?d ˜¬îÜ}Œ @  …ˆR;?d جî‘MjR @  …‰S;?d ­î‡HE @  …ŠT;?d X­î‡_› @  …‹U;?d ˜­îDK/ @  …ŒV;?d Ø­î’Õ\ñ @  …W;?d ®îÓ±è @  …ŽX;?d X®îQ’¦6 @  …Y;?d ˜®î`š(õ @  …Z;?d Ø®îâ ?+ @  …‘[;?d ¯îvÁ< @  …’\;?d X¯îôP â @  …“];?d ˜¯îcV @  …”^;?d دîá“ ˆ @  …•_;?d °î{8£Ò @  …–`;?d X°îù©´  @  …—a;?d ˜°î\ÇØú @  …˜ b;?d ذîÞVÏ$ @  …™ c;?d ±îJœí3 @  …š d;?d X±îÈ úí @  …› e;?d ˜±î__îY @  …œ f;?d رîÝÎù‡ @  … g;?d ²îœž @  …ž h;?d X²î‰@ @  …Ÿ i;?d ˜²î>‡ª3 @  …  j;?d زî¼½í @  …¡ k;?d ³î(ÜŸú @  …¢ l;?d X³îªMˆ$ @  …£ m;?d ˜³î=œ @  …¤ n;?d س‹N @  …¥ o;?d ´îWu @  …¦ p;?d X´î“@« @  …§ q;?d ˜´î:ðˆ @  …¨ r;?d شçV @  …© s;?d µîaÅA @  …ª t;?d Xµî•ðÒŸ @  …« u;?d ˜µî¢Æ+ @  …¬ v;?d صî€3Ñõ @  …­ w;?d ¶îÁå<ì @  …® x;?d X¶îCt+2 @  …¯ y;?d ˜¶îr|¥ñ @  …° z;?d ضîðí²/ @  …± {;?d ·îd'8 @  …² |;?d X·î涇æ @  …³ };?d ˜·îqä“R @  …´ ~;?d Ø·îóu„Œ @  …µ ;?d ¸îi_ú @  …¶ €;?d X¸îŒøH$ @  …· ;?d ˜¸îQø @  …¸ ‚;?d ظî’ÀïÙ @  …¹ ƒ;?d ¹î ÍÎ @  …º „;?d X¹î„›Ú @  …» …;?d ˜¹îÉΤ @  …¼ †;?d عî‘XÙz @  …½ ‡;?d ºîÐŽ4c @  …¾ ˆ;?d XºîR#½ @  …¿ ‰;?d ˜ºîÜŒ\ @  …À Š;?d غî^‡›‚ @  …Á ‹;?d »îÊM¹• @  … Œ;?d X»îHÜ®K @  …à ;?d ˜»îߎºÿ @  …Ä Ž;?d Ø»î]­! @  …Å ;?d ¼îý“q @  …Æ ;?d X¼îfÄ @  …Ç ‘;?d ˜¼îã«Öç @  …È ’;?d ؼîa:Á9 @  …É “;?d ½îõðã. @  …Ê ”;?d X½îwaôð @  …Ë •;?d ˜½îà3àD @  …Ì –;?d ؽîb¢÷š @  …Í —;?d ¾î#tƒ @  …Î ˜;?d X¾î¡å ] @  …Ï ™;?d ˜¾î탞 @  …Ð š;?d ؾî|”@ @  …Ñ ›;?d ¿î†¶¶W @  …Ò œ;?d X¿î'¡‰ @  …Ó ;?d ˜¿î“uµ= @uÐÀî  …Ô ž;?d Ø¿î(#~6 @  …ÕŸ;?d 0Àîh¦9Œ @  …Ö ;?d pÀîê7.R @  …ס;?d °Àîvžžq @  …Ø¢;?d ðÀîô‰¯ @  …Ù£;?d 0Áî`Å«¸ @  …Ú¤;?d pÁîâT¼f @  …Û¥;?d °Áîu¨Ò @  …ܦ;?d ðÁî÷—¿  @  …ݧ;?d 0Âî¶AR @  …Þ¨;?d pÂî4ÐEË @  …ß©;?d °ÂîÞì¸ @  …àª;?d ðÂî–Oûf @  …á«;?d 0Ãî…Ùq @  …â¬;?d€ pÃîAS9¯ @  †­;?d °Ãî7@e2 @  †®;?d ðÃîµÑrì @  †¯;?d 0ÄîÐU: @  †°;?d pÄîR…Bä @  †±;?d °Äîž­½ @  †²;?d ðÄc @  †³;?d 0ÅîØwÇ @  †´;?d pÅîZæÐÐ @  † µ;?d °Åîý?‰ @  † ¶;?d ðÅîŠl(W @  † ·;?d 0Æîó>£ @  † ¸;?d pÆîŒb)} @  † ¹;?d °ÆîÞyÆ$ @  †º;?d ðÆî\èÑú @  †»;?d 0Çî«1’w @  †¼;?d pÇî) …© @  †½;?d °Çî{»jð @  †¾;?d ðÇîù*}. @  †¿;?d 0Èîܹ ' @  †À;?d pÈî^(ù @  †Á;?d °Èî 3ñ  @  †Â;?d ðÈæ~ @  †Ã;?d 0ÉîÔÚ› @  †Ä;?d pÉîVKŒÍ @  †Å;?d °ÉîPc” @  †Æ;?d ðÉî†ÁtJ @  †Ç;?d 0Êî^b¾ @  †È;?d pÊî€Ïu` @  †É;?d °ÊîÒÔš9 @  †Ê;?d ðÊîPEç @  †Ë;?d 0Ëî¶šéÚ @  † Ì;?d pËî4 þ @  †!Í;?d °Ëîf] @  †"Î;?d ðËîäƒ @  †#Ï;?d 0ÌîD!U @  †$Ð;?d pÌîÕ6‹ @  †%Ñ;?d °ÌîQÎÙÒ @  †&Ò;?d ðÌîÓ_Î  @  †'Ó;?d 0Íî‰'³a @  †(Ô;?d pÍî ¶¤¿ @  †)Õ;?d °ÍîY­Kæ @  †*Ö;?d ðÍîÛ<\8 @  †+×;?d 0Îî_£JÌ @  †,Ø;?d pÎîÝ2] @  †-Ù;?d °Îî)²K @  †.Ú;?d ðÎî ¸¥• @  †/Û;?d 0Ïîúaæ @  †0Ü;?d pÏîxðñÆ @  †1Ý;?d °Ïî*ëŸ @  †2Þ;?d ðÏî¨z A @  †3ß;?d 0Ðî÷˜Xö @  †4à;?d pÐîu O( @  †5á;?d °Ðî' q @  †6â;?d ðÐ·¯ @  †7ã;?d 0ÑîÿûÊ @  †8ä;?d pÑî}jÝ @  †9å;?d °Ñî/q2E @  †:æ;?d ðÑî­à%› @  †;ç;?d 0Òî)3o @  †<è;?d pÒî«î$± @  †=é;?d °ÒîùõËè @  †>ê;?d ðÒî{dÜ6 @  †?ë;?d 0Óî3¼¾™ @  †@ì;?d pÓî±-©G @  †Aí;?d °Óîã6F @  †Bî;?d ðÓîa§QÀ @  †Cï;?d 0Ôîbv @  †Dð;?d pÔî†óaÈ @  †Eñ;?d °ÔîÔ莑 @  †Fò;?d ðÔîVy™O @  †Gó;?d 0Õî ä" @  †Hô;?d pÕîŽóü @  †Iõ;?d °ÕîÜ‹¥ @  †Jö;?d ðÕî^ { @  †K÷;?d 0ÖîÚ… @  †Lø;?d pÖîX Q @  †Mù;?d °Öî å @  †Nú;?d ðÖòÖ @  †Oû;?d 0×îG±[ @  †Pü;?d p×îýÖ¦… @  †Qý;?d °×î¯ÍIÜ @  †Rþ;?d ð×î-\^ @  †Sÿ;?d 0ØîVg @  †T<?d pØîÔöÝ @  †U<?d °Øî†íì„ @  †V<?d ðØî|ûZ @  †W<?d 0Ùî^†7 @  †X<?d pÙîÜ•‘é @  †Y<?d °Ù~° @  †Z<?d ðÙî in @  †[<?d 0Úš @  †\<?d pÚî hD @  †] <?d °ÚîX ‡ @  †^ <?d ðÚîڛà @  †_ <?d 0Ûî<?d èîUÀ  @  †“?<?d HèîÆ=åZ @  †”@<?d ˆèîæÈç¤ @  †•A<?d Èèî·Ý @  †–B<?d éîÆÿ‘5 @  †—C<?d HéîÎ^wn @  †˜D<?d ˆéîî«u @  †™E<?d ÈéîÔé @  †šF<?d êîƒ/( @  †›G<?d HêîÚŽÃ @  †œH<?d ˆêî8/Œ= @  †I<?d ÈêîÈPvD @  †žJ<?d ëîú¬ @  †ŸK<?d Hë @  † L<?d ˆëîŒëY @  †¡M<?d Èëî|”ý  @  †¢N<?d ìîeÚ/ @  †£O<?d Hìî›ÀÍ( @  †¤P<?d ˆìî»5ÏÖ @  †¥Q<?d ÈìîKJ5¯ @  †¦R<?d íG @  †§S<?d Híî“£_ @  †¨T<?d ˆíî³V]â @  †©U<?d ÈíîC)§› @  †ªV<?d îîÞmZ @  †«W<?d HîîE'¦± @  †¬X<?d ˆîîeÒ¤O @  †­Y<?d Èîî•­^6 @  †®Z<?d ïîEåÒÞ @  †¯[<?d Hïîàå e @  †°\<?d ˆïîÀ› @  †±]<?d Èïî0oòâ @  †²^<?d ðîޱNP @  †³_<?d Hðîí´‹ @  †´`<?d ˆðîÍé¶u @  †µa<?d Èðî=–L  @  †¶b<?d ñîíÞÀä @  †·c<?d Hñîå&¿ @  †¸d<?d ˆñîÅŠ$A @  †¹e<?d Èñî5õÞ8 @  †ºf<?d ò~ù @  †»g<?d Hòî3ûß @  †¼h<?d ˆòîÝì @  †½i<?d Èòîãq'• @  †¾j<?d óî39«} @  †¿k<?d Hóî)8Rä @  †Àl<?d ˆóî ÍP @  †Ám<?d Èóîù²ªc @  †Ân<?d ôîàüYl @  †Ão<?d Hôîæšk @  †Äp<?d ˆôî>˜• @  †Åq<?d ÈôîÎlbì @  †Ær<?d õî$î @  †Çs<?d Hõî…_ @  †Èt<?d ˆõî6p ¡ @  †Éu<?d ÈõîÆðØ @  †Êv<?d öî[KP @  †Ëw<?d HöîÀñò @  †Ìx<?d ˆöîàôó  @  †Íy<?d Èöî‹ u @  †Îz<?d ÷îÀÃ… @  †Ï{<?d H÷îeÃ]& @  †Ð|<?d ˆ÷îE6_Ø @  †Ñ}<?d È÷îµI¥¡ @  †Ò~<?d øî¶)¼ @  †Ó<?d Høî’ä @  †Ô€<?d ˆøî/x @  †Õ<?d Èøîßjc @  †Ö‚<?d ùîOæ‹ @  †×ƒ<?d HùîîÐ @  †Ø„<?d ˆùî'. @  †Ù…<?d Èùî×døW @  †Ú†<?d úîJ X– @  †Û‡<?d HúîÑjù} @  †Üˆ<?d ˆúîñŸûƒ @  †Ý‰<?d Èúîàú @  †ÞŠ<?d ûîѨ @  †ß‹<?d Hûîe®r @  †àŒ<?d ˆûîE[pç @  †á<?d Èûîµ$Šž @  †âŽ<?d€ üîØ©e7 @  ‡<?d HüîÇòî @  ‡<?d ˆüîçìç @  ‡‘<?d ÈüîÒ1ís @  ‡’<?d ýîya› @  ‡“<?d HýîÄjغ @  ‡”<?d ˆýîäŸÚD @  ‡•<?d ÈýîÚRG @  ‡–<?d þîG߆ @  ‡ —<?d Hþî…€ @  ‡ ˜<?d ˆþî9à‡~ @  ‡ ™<?d Èþî Ö†ê @  ‡ š<?d ÿîÜž  @  ‡ ›<?d Hÿî³# @  ‡œ<?d ˆÿî:x±Ý @  ‡uÐï<?d Èÿî©*> @  ‡ž<?d ïæ Ï @  ‡Ÿ<?d `ï@Dù @  ‡ <?d  ï`± @  ‡¡<?d àïU‡“ @  ‡¢<?d ï…ÏŒ{ @  ‡£<?d `ïCÜ5Z @  ‡¤<?d  ïc)7¤ @  ‡¥<?d àï]ä’§ @  ‡¦<?d ïÀ 2f @  ‡§<?d `h` @  ‡¨<?d  ï¾Vjž @  ‡©<?d àï‹`k  @  ‡ª<?d ï[(çâ @  ‡«<?d `ï;^à @  ‡¬<?d  ï½Î\= @  ‡­<?d àï?¤àn @  ‡ ®<?d ï&êa @  ‡!¯<?d `ï¹+‹ @  ‡"°<?d  ï=L)u @  ‡#±<?d àïz(á @  ‡$²<?d ïØ2¤  @  ‡%³<?d `ï!( @  ‡&´<?d  ï>ÔÖ @  ‡'µ<?d àïºÕ @  ‡(¶<?d ï] @  ‡)·<?d `ïÃ^@ @  ‡*¸<?d  ïã«Bì @  ‡+¹<?d àïÖCx @  ‡,º<?d ïÕÏ @  ‡-»<?d `ïÀÆv± @  ‡.¼<?d  ïà3tO @  ‡/½<?d àïs_ï¬ @  ‡0¾<?d ïG c± @  ‡1¿<?d `ïw– @  ‡2À<?d  ï1áuh @  ‡3Á<?d àï×tü @  ‡4Â<?d ïÔŸø @  ‡5Ã<?d ` ïŒA5 @  ‡6Ä<?d   ï2yCË @  ‡7Å<?d à ï ´æÈ @  ‡8Æ<?d ï‘ðF  @  ‡9Ç<?d ` ïÏó @  ‡:È<?d   ïïñ @  ‡;É<?d à ïÚ0e @  ‡<Ê<?d ï x“ @  ‡=Ë<?d ` ïÌk*¬ @  ‡>Ì<?d   ïìž(R @  ‡?Í<?d à ïÀó’“ @  ‡@Î<?d ïÙ½aœ @  ‡AÏ<?d ` ïâîYv @  ‡BÐ<?d   ïÂ[ˆ @  ‡CÑ<?d à ï÷-Z @  ‡DÒ<?d ï'eÖô @  ‡EÓ<?d ` ïávoÕ @  ‡FÔ<?d   ïÁƒm+ @  ‡GÕ<?d à ïÿNÈ( @  ‡HÖ<?d ïb hé @  ‡I×<?d `ï< 2ï @  ‡JØ<?d  ïü0 @  ‡KÙ<?d àï)Ê1… @  ‡LÚ<?d ïù‚½m @  ‡MÛ<?d `ï?‘L @  ‡NÜ<?d  ïd² @  ‡OÝ<?d àïŒQ @  ‡PÞ<?d ï2Ö!ã @  ‡Qß<?d `ï”2 Õ @  ‡Rà<?d  ï´Ç"+ @  ‡Sá<?d àïñ#¿ @  ‡Tâ<?d ïQ¹¯W @  ‡Uã<?d `ï—ªv @  ‡Vä<?d  ï·_ˆ @  ‡Wå<?d à±‹ @  ‡Xæ<?d ïÖJ @  ‡Yç<?d `ïJÕKL @  ‡Zè<?d  ïj I² @  ‡[é<?d àï_H& @  ‡\ê<?d ï^ÄÎ @  ‡]ë<?d `ïIM}ï @  ‡^ì<?d  ïi¸ @  ‡_í<?d àïëÒÃB @  ‡`î<?d ïòœ0M @  ‡aï<?d `ïÉϧ @  ‡bð<?d  ïé: Y @  ‡cñ<?d àïÜ Í @  ‡dò<?d ï D‡% @  ‡eó<?d `ïÊW> @  ‡fô<?d  ïê¢<ú @  ‡gõ<?d àïÔo™ù @  ‡hö<?d ïI+98 @  ‡i÷<?d `ï(c> @  ‡jø<?d  ï7ÝaÀ @  ‡kù<?d àïë`T @  ‡lú<?d ïÒ£ì¼ @  ‡mû<?d `ï°U @  ‡nü<?d  ï4EWc @  ‡oý<?d àï§)Ì€ @  ‡pþ<?d ï“Ö@ @  ‡qÿ<?d `ï§ÃU$ @  ‡r=?d  ï‡6WÚ @  ‡s=?d àï²VN @  ‡t=?d ïbHÚ¦ @  ‡u=?d `ï¤[c‡ @  ‡v=?d  ï„®ay @  ‡w=?d àïºcÄz @  ‡x=?d ï''d» @  ‡y=?d `ïy$>½ @  ‡z=?d  ïYÑ=?d 8(ï ‚0Ê @  ‡±?=?d x(ï_6$í @  ‡²@=?d ¸(ïÃ& @  ‡³A=?d ø(ïJõ'‡ @  ‡´B=?d 8)ïš½«o @  ‡µC=?d x)ï\®N @  ‡¶D=?d ¸)ï|[° @  ‡·E=?d ø)ïB–µ³ @  ‡¸F=?d 8*ïßÒr @  ‡¹G=?d x*ïÑOt @  ‡ºH=?d ¸*ï¡$MŠ @  ‡»I=?d ø*ï”L @  ‡¼J=?d 8+ïDZÀö @  ‡½K=?d x+ï‚Iy× @  ‡¾L=?d ¸+{) @  ‡¿M=?d ø+ïŽÑÁè @  ‡ÀN=?d 8,ï—Ÿ2ç @  ‡ÁO=?d x,ï¬Ì  @  ‡ÂP=?d ¸,ïŒ9ó @  ‡ÃQ=?d ø,ï¹ g @  ‡ÄR=?d 8-ïiG… @  ‡ÅS=?d x-ï¯T<® @  ‡ÆT=?d ¸-ï¡>P @  ‡ÇU=?d ø-ï±l›S @  ‡ÈV=?d 8.ï,(;’ @  ‡ÉW=?d x.ïr+a” @  ‡ÊX=?d ¸.ïRÞcj @  ‡ËY=?d ø.ïgèbþ @  ‡ÌZ=?d 8/ï· î @  ‡Í[=?d x/ïq³W7 @  ‡Î\=?d ¸/ïQFUÉ @  ‡Ï]=?d ø/ïÂ*Î* @  ‡Ð^=?d 80ï|ôr˜ @  ‡Ñ_=?d x0ïÚs® @  ‡Ò`=?d ¸0ïúåqP @  ‡Óa=?d ø0ïÏÓpÄ @  ‡Ôb=?d 81ï›ü, @  ‡Õc=?d x1ïÙˆE  @  ‡Öd=?d ¸1ïù}Gó @  ‡×e=?d ø1ïǰâð @  ‡Øf=?d 82ïZôB1 @  ‡Ùg=?d x2ï÷7 @  ‡Úh=?d ¸2ï$É @  ‡Ûi=?d ø2ï4] @  ‡Üj=?d 83ïÁ|—µ @  ‡Ýk=?d x3ïo.” @  ‡Þl=?d ¸3ï'š,j @  ‡ßm=?d ø3ï¥ð9 @  ‡àn=?d 84ï¼¾c6 @  ‡áo=?d x4ï‡í[Ü @  ‡âp=?d€ ¸4ï‚Mp @  ˆq=?d ø4ï[õÍ @  ˆr=?d 85ˆ% @  ˆs=?d x5ïˆçÊé @  ˆt=?d ¸5ï¨È @  ˆu=?d ø5ïXm2n @  ˆv=?d 86ïÅ)’¯ @  ˆw=?d x6ïU˜—Ó @  ˆx=?d ¸6ïum•- @  ˆ y=?d ø6ï…oT @  ˆ z=?d 87ïUZã¼ @  ˆ {=?d x7ïV¡p @  ˆ |=?d ¸7ïvõ£Ž @  ˆ }=?d ø7Y÷ @  ˆ~=?d 88ï²uÕê @  ˆ=?d x8ïšôÅ @  ˆ€=?d ¸8ïºáö; @  ˆ=?d ø8ïJž B @  ˆ‚=?d 89ïšÖ€ª @  ˆƒ=?d x9Âf @  ˆ„=?d ¸9ï¹yÀ˜ @  ˆ…=?d ø9ïI:á @  ˆ†=?d 8:ïÔBš  @  ˆ‡=?d x:ïDóŸ\ @  ˆˆ=?d ¸:ïd¢ @  ˆ‰=?d ø:ï”ygÛ @  ˆŠ=?d 8;ïD1ë3 @  ˆ‹=?d x;ïGk©ÿ @  ˆŒ=?d ¸;ïgž« @  ˆ=?d ø;ï—áQx @  ˆŽ=?d 8<ïޝ¢w @  ˆ=?d x<ïÇéÜ· @  ˆ =?d ¸<ïçÞI @  ˆ!‘=?d ø<ïc$0 @  ˆ"’=?d 8=ïÇ+¨Ø @  ˆ#“=?d x=ïÄqê @  ˆ$”=?d ¸=ïä„èê @  ˆ%•=?d ø=ïû“ @  ˆ&–=?d 8>²R @  ˆ'—=?d x>ï·. @  ˆ(˜=?d ¸>ï9ûµÐ @  ˆ)™=?d ø>ïÉ„O© @  ˆ*š=?d 8?ïÌÃA @  ˆ+›=?d x?ï– @  ˆ,œ=?duÐ@ï7 ¸?ï:cƒs @  ˆ-=?d ø?ïÊy  @  ˆ.ž=?d P@ï °Ã6 @  ˆ/Ÿ=?d @ïn#¶º @  ˆ0 =?d Ð@ï첡d @  ˆ1¡=?d AïNÀ+ @  ˆ2¢=?d PAïÌ…×õ @  ˆ3£=?d Aïm»€ @  ˆ4¤=?d ÐAïï*—Ç @  ˆ5¥=?d Bï€Ú¡ @  ˆ6¦=?d PBï‚Í @  ˆ7§=?d Bï°ÄÝ# @  ˆ8¨=?d ÐBï2UÊý @  ˆ9©=?d Cïó«² @  ˆ:ª=?d PCïb¼l @  ˆ;«=?d Cï³\ë€ @  ˆ<¬=?d ÐCï1Íü^ @  ˆ=­=?d DïZmâö @  ˆ>®=?d PDïØüõ( @  ˆ?¯=?d DïÙ˜Z @  ˆ@°=?d ÐDïH„ @  ˆA±=?d Eï½îîË @  ˆB²=?d PEï?ù @  ˆC³=?d EïžA®ù @  ˆD´=?d ÐEïй' @  ˆEµ=?d FïózôA @  ˆF¶=?d PFïqë㟠@  ˆG·=?d FïC>óà @  ˆH¸=?d ÐFïÁ¯ä @  ˆI¹=?d Gïc …R @  ˆJº=?d PGïᘒŒ @  ˆK»=?d Gï@¦Å` @  ˆL¼=?d ÐGïÂ7Ò¾ @  ˆM½=?d Hï„&³ @  ˆN¾=?d PHï·¤Ú @  ˆO¿=?d Hï‘tÄG @  ˆPÀ=?d ÐHïåÓ™ @  ˆQÁ=?d Iï±C²Ö @  ˆRÂ=?d PIï3Ò¥ @  ˆSÃ=?d Iï’ìòä @  ˆTÄ=?d ÐIï}å: @  ˆUÅ=?d Jïÿר\ @  ˆVÆ=?d PJï}F¿‚ @  ˆWÇ=?d JïO“¯Þ @  ˆXÈ=?d ÐJï͸ @  ˆYÉ=?d Kïo¤ÙO @  ˆZÊ=?d PKïí5Α @  ˆ[Ë=?d KïL ™} @  ˆ\Ì=?d ÐKïÎšŽ£ @  ˆ]Í=?d Lï¥:  @  ˆ^Î=?d PLï'«‡Õ @  ˆ_Ï=?d Lï̉ì5 @  ˆ`Ð=?d ÐLïNûë @  ˆaÑ=?d Mï쾚¤ @  ˆbÒ=?d PMïn/z @  ˆcÓ=?d MïÏÚ– @  ˆdÔ=?d ÐMïM€ÍH @  ˆeÕ=?d Nï¢*€. @  ˆfÖ=?d PNï »—ð @  ˆg×=?d Nïn‡¬ @  ˆhØ=?d ÐNïÿr @  ˆiÙ=?d Oï2Yñ= @  ˆjÚ=?d POï°Èæã @  ˆkÛ=?d Oïö± @  ˆlÜ=?d ÐOï“g¦Ñ @  ˆmÝ=?d Pï_W÷Ä @  ˆnÞ=?d PPïÝÆà @  ˆoß=?d PïºU•– @  ˆpà=?d ÐPï8Ä‚H @  ˆqá=?d Qïšbã @  ˆrâ=?d PQïóôÙ @  ˆsã=?d Qï¹Í£5 @  ˆtä=?d ÐQï;\´ë @  ˆuå=?d RïÔöù @  ˆvæ=?d PRïVgîS @  ˆwç=?d Rïd²þ @  ˆxè=?d ÐRïæ#éÑ @  ˆyé=?d SïD…ˆž @  ˆzê=?d PSïÆŸ@ @  ˆ{ë=?d Sïg*Ȭ @  ˆ|ì=?d ÐSïå»ßr @  ˆ}í=?d TïŽÁÚ @  ˆ~î=?d PTï ŠÖ @  ˆï=?d Tïªù‹G @  ˆ€ð=?d ÐTï(hœ™ @  ˆñ=?d UïŠÎýÖ @  ˆ‚ò=?d PUï_ê @  ˆƒó=?d Uï©a½ä @  ˆ„ô=?d ÐUï+ðª: @  ˆ…õ=?d VïÄZç\ @  ˆ†ö=?d PVïFËð‚ @  ˆ‡÷=?d VïtàÞ @  ˆˆø=?d ÐVïö÷ @  ˆ‰ù=?d WïT)–O @  ˆŠú=?d PWïÖ¸‘ @  ˆ‹û=?d Wïw†Ö} @  ˆŒü=?d ÐWïõÁ£ @  ˆý=?d Xï³  @  ˆŽþ=?d PXï1—·Ç @  ˆÿ=?d Xïv×ãá @  ˆ>?d ÐXïôFô? @  ˆ‘>?d YïVà•p @  ˆ’>?d PYïÔq‚® @  ˆ“>?d YïuOÕB @  ˆ”>?d ÐYï÷Þœ @  ˆ•>?d Zïtú @  ˆ–>?d PZïšå˜$ @  ˆ—>?d Zï¨0ˆx @  ˆ˜>?d ÐZï*¡Ÿ¦ @  ˆ™ >?d [ïˆþé @  ˆš >?d P[ï –é7 @  ˆ› >?d [﫨¾Û @  ˆœ >?d Ð[ï)9© @  ˆ >?d \ïB™·­ @  ˆž>?d P\ïÀ s @  ˆŸ>?d \ï+*Ë“ @  ˆ >?d Ð\ï©»ÜM @  ˆ¡>?d ]ï ½ @  ˆ¢>?d P]ªÜ @  ˆ£>?d ]ï(²ý0 @  ˆ¤>?d Ð]ïª#êî @  ˆ¥>?d ^ïE‰§ˆ @  ˆ¦>?d P^ïǰV @  ˆ§>?d ^ïõÍ   @  ˆ¨>?d Ð^ïw\·Ô @  ˆ©>?d _ïÕúÖ› @  ˆª>?d P_ïWkÁE @  ˆ«>?d _ïöU–© @  ˆuÐ`ï¬>?d Ð_ïtÄw @  ˆ­>?d (`ï¸ÒÙH @  ˆ®>?d h`ï:CΖ @  ˆ¯>?d ¨`ï]л @  ˆ° >?d è`ïßA¬Ä @  ˆ±!>?d (aï}çÍ‹ @  ˆ²">?d haïÿvÚU @  ˆ³#>?d ¨aï^H¹ @  ˆ´$>?d èaïÜÙšg @  ˆµ%>?d (bï3s× @  ˆ¶&>?d hbï±âÀß @  ˆ·'>?d ¨bïƒ7Ѓ @  ˆ¸(>?d èbï¦Ç] @  ˆ¹)>?d (c @  ˆº*>?d hcï!‘±Ì @  ˆ»+>?d ¨cï€¯æ  @  ˆ¼,>?d ècï>ñþ @  ˆ½->?d (dïižïV @  ˆ¾.>?d hdïëøˆ @  ˆ¿/>?d ¨dï®*•ú @  ˆÀ0>?d èdï,»‚$ @  ˆÁ1>?d (eïŽãk @  ˆÂ2>?d heï Œôµ @  ˆÃ3>?d ¨eï­²£Y @  ˆÄ4>?d èeï/#´‡ @  ˆÅ5>?d (fïÀ‰ùá @  ˆÆ6>?d hfïBî? @  ˆÇ7>?d ¨fïpÍþc @  ˆÈ8>?d èfïò\é½ @  ˆÉ9>?d (gïPúˆò @  ˆÊ:>?d hgïÒkŸ, @  ˆË;>?d ¨gïsUÈÀ @  ˆÌ<>?d ègïñÄß @  ˆÍ=>?d (hï·Õ¾¤ @  ˆÎ>>?d hhï5D©z @  ˆÏ?>?d ¨hÉç @  ˆÐ@>?d èhï Þ9 @  ˆÑA>?d (iï‚°¿v @  ˆÒB>?d hiï!¨¨ @  ˆÓC>?d ¨iï¡ÿD @  ˆÔD>?d èiï#Žèš @  ˆÕE>?d (jïÌ$¥ü @  ˆÖF>?d hjïNµ²" @  ˆ×G>?d ¨jï|`¢~ @  ˆØH>?d èjïþñµ  @  ˆÙI>?d (kï\WÔï @  ˆÚJ>?d hkïÞÆÃ1 @  ˆÛK>?d ¨kïø”Ý @  ˆÜL>?d èkïýiƒ @  ˆÝM>?d (lï–É« @  ˆÞN>?d hlïXŠu @  ˆßO>?d ¨lïÿzá• @  ˆàP>?d èlï}ëöK @  ˆáQ>?d (mïßM— @  ˆâR>?d€ hmï)œ| @  ‰S>?d ¨mïi`ƒ¹ @  ‰T>?d èmïëñ”g @  ‰U>?d (nïÁ"ì @  ‰V>?d hnïCƒ52 @  ‰W>?d ¨nï¿äz @  ‰X>?d ènï=umÊ @  ‰Y>?d (oïQaSÿ @  ‰Z>?d hoïÓðD! @  ‰ [>?d ¨oï·‡è  @  ‰ \>?d èoï5ÿþ @  ‰ ]>?d (pï?d hpï¾þBØ @  ‰ _>?d ¨pïº~VÎ @  ‰`>?d èpï8ïA @  ‰a>?d (qïùZAÅ @  ‰b>?d hqï{ËV @  ‰c>?d ¨qï¼ú @  ‰d>?d èqï-íÄ @  ‰e>?d (rï·Î[O @  ‰f>?d hrï5_L‘ @  ‰g>?d ¨rïÉ8· @  ‰h>?d èrïK©i @  ‰i>?d (sï'½*\ @  ‰j>?d hsï¥,=‚ @  ‰k>?d ¨sïÁ[‘ƒ @  ‰l>?d èsïCʆ] @  ‰m>?d (tïí#c @  ‰n>?d htïo²tÆ @  ‰o>?d ¨tïö…Y  @  ‰p>?d ètïtNÒ @  ‰q>?d (u蠟i· @  ‰ r>?d huï&6~i @  ‰!s>?d ¨uïBAÒh @  ‰"t>?d èuïÀÐŶ @  ‰#u>?d (vïê3s= @  ‰$v>?d hvïh¢dã @  ‰%w>?d ¨vï”Å+Å @  ‰&x>?d èvïT< @  ‰'y>?d (wïz@. @  ‰(z>?d hwïøÑð @  ‰){>?d ¨w¹ñ @  ‰*|>?d èwï7®/ @  ‰+}>?d (xïo4x @  ‰,~>?d hxïþ#¦ @  ‰->?d ¨xïöèv3 @  ‰.€>?d èxïtyaí @  ‰/>?d (yïµÌa8 @  ‰0‚>?d hyï7]væ @  ‰1ƒ>?d ¨yïS*Úç @  ‰2„>?d èyïÑ»Í9 @  ‰3…>?d (zïûX{² @  ‰4†>?d hzïyÉll @  ‰5‡>?d ¨zï…®#J @  ‰6ˆ>?d èzï?4” @  ‰7‰>?d ({ïk+ ¡ @  ‰8Š>?d h{ïéº @  ‰9‹>?d ¨{ïͱ~ @  ‰:Œ>?d è{ï\¦  @  ‰;>?d (|Cå @  ‰<Ž>?d h|ï#$T; @  ‰=>?d ¨|ïºyñ @  ‰>>?d è|ï8‚n/ @  ‰?‘>?d (}ïF6OØ @  ‰@’>?d h}ïħX @  ‰A“>?d ¨}ï Ðô @  ‰B”>?d è}ï"AãÙ @  ‰C•>?d (~ï¢UR @  ‰D–>?d h~ïŠ3BŒ @  ‰E—>?d ¨~ïvT ª @  ‰F˜>?d è~ïôÅt @  ‰G™>?d (ï˜Ñ$A @  ‰Hš>?d hï@3Ÿ @  ‰I›>?d ¨ïuЀï'~7Ÿž @  ‰Jœ>?d èïü¦ˆ@ @  ‰K>?d @€ï%¿|~ @  ‰Lž>?d €€ïJ~€ @  ‰MŸ>?d À€ï£®¶ @  ‰N >?d ïsæó^ @  ‰O¡>?d @ïàŠh½ @  ‰P¢>?d €ïÀjC @  ‰Q£>?d ÀïlÓb @  ‰R¤>?d ‚ï›(s£ @  ‰S¥>?d @‚ï®r7 @  ‰T¦>?d €‚ïŽëpÉ @  ‰U§>?d À‚ïÐè*Ï @  ‰V¨>?d ƒï ¦' @  ‰W©>?d @ƒï>m$ @  ‰Xª>?d €ƒï˜Ú @  ‰Y«>?d ÀƒïØ‹¸û @  ‰Z¬>?d „ïÁÅKô @  ‰[­>?d @„ïôóJ` @  ‰\®>?d €„ïÔHž @  ‰]¯>?d À„ïïUpt @  ‰^°>?d …ï?üœ @  ‰_±>?d @…ï½w@Ï @  ‰`²>?d €…ï‚B1 @  ‰a³>?d À…ï[‘û @  ‰b´>?d †ïÆÕ[Ñ @  ‰cµ>?d @†ïóãZE @  ‰d¶>?d €†ïÓX» @  ‰e·>?d À†ï½ @  ‰f¸>?d ‡ï]]ŽU @  ‰g¹>?d @‡ïc+V @  ‰hº>?d €‡ïCe)¨ @  ‰i»>?d À‡ï…v‰ @  ‰j¼>?d ˆï±‰” @  ‰k½>?d @ˆï„¿ @  ‰l¾>?d €ˆï¤Jþ @  ‰m¿>?d Àˆïòþ Ù @  ‰nÀ>?d ‰ï"¶‡1 @  ‰oÁ>?d @‰ï±ÚÒ @  ‰pÂ>?d €‰ï‘/, @  ‰qÃ>?d À‰ïW<§  @  ‰rÄ>?d ŠïÊxÌ @  ‰sÅ>?d @ŠïÿNX @  ‰tÆ>?d €Šïß»¦ @  ‰uÇ>?d ÀŠï¸^  @  ‰vÈ>?d ‹ïQðÒH @  ‰wÉ>?d @‹ïo=wK @  ‰xÊ>?d €‹ïOÈuµ @  ‰yË>?d À‹ï‰ÛÌ” @  ‰zÌ>?d Œï•?› @  ‰{Í>?d @Œï¥£> @  ‰|Î>?d €Œï…V<ñ @  ‰}Ï>?d ÀŒï¾ @  ‰~Ð>?d ïnMˆó @  ‰Ñ>?d @ï¡v @  ‰€Ò>?d €ïƒý @  ‰Ó>?d ÀïG¹Ü @  ‰‚Ô>?d ŽïÚÔ @  ‰ƒÕ>?d @Žïï≠@  ‰„Ö>?d €ŽïÏw @  ‰…×>?d ÀŽï‘@q @  ‰†Ø>?d ïA\Ì™ @  ‰‡Ù>?d @ï‘iš @  ‰ˆÚ>?d €ï_dkd @  ‰‰Û>?d Àï™wÒE @  ‰ŠÜ>?d ï'©n÷ @  ‰‹Ý>?d @ïŸoc @  ‰ŒÞ>?d €ï2jm @  ‰ß>?d Àl« @  ‰Žà>?d ‘ïDÆàC @  ‰á>?d @‘ïת{  @  ‰â>?d €‘ï÷_y^ @  ‰‘ã>?d À‘ï1LÀ @  ‰’ä>?d ’ï¬`¾ @  ‰“å>?d @’ï™>a* @  ‰”æ>?d €’ï¹ËcÔ @  ‰•ç>?d À’ïçÈ9Ò @  ‰–è>?d “ï7€µ: @  ‰—é>?d @“ï M9 @  ‰˜ê>?d €“ï)¸Ç @  ‰™ë>?d À“ïï««æ @  ‰šì>?d ”ïöåXé @  ‰›í>?d @”ïÃÓY} @  ‰œî>?d €”ïã&[ƒ @  ‰ï>?d À”ïØuci @  ‰žð>?d •ï=ï @  ‰Ÿñ>?d @•ïŠWSÒ @  ‰ ò>?d €•甆Q, @  ‰¡ó>?d À•ïl±è  @  ‰¢ô>?d –ïñõHÌ @  ‰£õ>?d @–ïÄÃIX @  ‰¤ö>?d €–ïä6K¦ @  ‰¥÷>?d À–ïº5  @  ‰¦ø>?d —ïj}H @  ‰§ù>?d @—ïT°8K @  ‰¨ú>?d €—ïtE:µ @  ‰©û>?d À—ï²Vƒ” @  ‰ªü>?d ˜ï†©‰ @  ‰«ý>?d @˜ï³Ÿ @  ‰¬þ>?d €˜ï“j ã @  ‰­ÿ>?d À˜ï§Z @  ‰®??d ™ïw7•² @  ‰¯??d @™ïä[Q @  ‰°??d €™ïÄ® ¯ @  ‰±??d À™ï½µŽ @  ‰²??d šïŸùO @  ‰³??d @šïªÏÛ @  ‰´??d €šïŠ:% @  ‰µ??d ÀšïÔ9L# @  ‰¶??d ›ïqÀË @  ‰· ??d @›ï:¼eÈ @  ‰¸ ??d €›ïIg6 @  ‰¹ ??d À›ïÜZÞ @  ‰º ??d œïÅ- @  ‰» ??d @œïð",Œ @  ‰¼??d €œïÐ×.r @  ‰½??d Àœï넘 @  ‰¾??d ï;Ìšp @  ‰¿??d @ï¡ ± @  ‰À??d €ï7T"O @  ‰Á??d ÀïñG›n @  ‰Â??d žïl;¯ @  ‰Ã??d @žïY5:; @  ‰Ä??d €žïyÀ8Å @  ‰Å??d Àžï'Ãbà @  ‰Æ??d Ÿï÷‹î+ @  ‰Ç??d @ŸïÉFK( @  ‰È??d €Ÿïé³IÖ @  ‰É?uРï?d ÀŸï/ ð÷ @  ‰Ê??d  ïglòD @  ‰Ë ??d X ïRZóÐ @  ‰Ì ??d ˜ ïr¯ñ. @  ‰Í ??d Ø ïÔKð @  ‰Î  ??d ¡ï|ð @  ‰Ï !??d X¡ï—oç @  ‰Ð "??d ˜¡ï·šåí @  ‰Ñ #??d Ø¡ïq‰\Ì @  ‰Ò $??d ¢ïìÍü  @  ‰Ó %??d X¢ïÙûý™ @  ‰Ô &??d ˜¢ïùÿg @  ‰Õ '??d Ø¢ï§ ¥a @  ‰Ö (??d £ïwE)‰ @  ‰× )??d X£ïIˆŒŠ @  ‰Ø *??d ˜£ïi}Žt @  ‰Ù +??d Ø£ï¯n7U @  ‰Ú ,??d ¤ï¶ ÄZ @  ‰Û -??d X¤ïƒÅÎ @  ‰Ü .??d ˜¤ï£ãÇ0 @  ‰Ý /??d ؤÿÚ @  ‰Þ 0??d ¥ïHøs2 @  ‰ß 1??d X¥ïÊ’Ïa @  ‰à 2??d ˜¥ïêgÍŸ @  ‰á 3??d Ø¥ï,tt¾ @  ‰â 4??d€ ¦ïpw# @  Š 5??d X¦ï¤j @  Š 6??d ˜¦ï„õh< @  Š 7??d ئï¿É× @  Š 8??d §ïÏ÷E? @  Š 9??d X§ï?ˆ¿F @  Š :??d ˜§ï}½¸ @  Š ;??d اïÜ[ã @  Š ??d ˜¨ïó©/y @  Š ???d بï`TÀ³ @  Š @??d ©ï°L[ @  Š A??d X©ï@c¶" @  Š B??d ˜©ï`–´Ü @  Š C??d Ø©ïÅ–lg @  Š D??d ªïXÒ̦ @  Š E??d Xªï¨­6ß @  Š F??d ˜ªïˆX4! @  Š G??d تï•Ê @  Š H??d «ïÃZ" @  Š I??d X«ï3%ã[ @  Š J??d ˜«ïÐᥠ@  Š K??d Ø«ïqþ @  Š L??d ¬ï?ôñ @  Š M??d X¬ïò@ˆ @  Š N??d ˜¬ïÒµ v @  Š O??d جï,¯Ïq @  Š P??d ­ïüçC™ @  Š Q??d X­ï ˜¹à @  Š R??d ˜­ï,m» @  Š S??d Ø­ï˜kD @  Š T??d ®ï/äÔ @  Š! U??d X®ïõP­ @  Š" V??d ˜®ïÕ¥S @  Š# W??d Ø®ïNク @  Š$ X??d ¯ïž§1P @  Š% Y??d X¯ïnØË) @  Š& Z??d ˜¯ïN-É× @  Š' [??d دïFŒ/Œ @  Š( \??d °ïøR“> @  Š) ]??d X°ï-iG @  Š* ^??d ˜°ï(Øk¹ @  Š+ _??d ذïKu‘b @  Š, `??d ±ï›=Š @  Š- a??d X±ïkBçó @  Š. b??d ˜±ïK·å  @  Š/ c??d رïî·=¶ @  Š0 d??d ²ïsów @  Š1 e??d X²ïƒŒg @  Š2 f??d ˜²ï£yeð @  Š3 g??d زï83Ä @  Š4 h??d ³ïè{Hó @  Š5 i??d X³ï²Š @  Š6 j??d ˜³ï8ñ°t @  Š7 k??d سï0PV/ @  Š8 l??d ´ï)¥  @  Š9 m??d X´ïÙa_Y @  Š: n??d ˜´ïù”]§ @  Š; o??d ش  @  Š< p??d µïׯH @  Š= q??d Xµï'¹è1 @  Š> r??d ˜µïLêÏ @  Š? s??d صïMV @  Š@ t??d ¶ï€ ³— @  ŠA u??d X¶ïpvIî @  ŠB v??d ˜¶ïPƒK @  ŠC w??d ضïËÉêû @  ŠD x??d ·ïf @  ŠE y??d X·ïëþœj @  ŠF z??d ˜·ïË ž” @  ŠG {??d Ø·ïêxÏ @  ŠH |??d ¸ï÷UôÒ @  ŠI }??d X¸ï*« @  ŠJ ~??d ˜¸ï'ß U @  ŠK ??d ظï©ä·  @  ŠL €??d ¹ïy¬;å @  ŠM ??d X¹ï‰ÓÁœ @  ŠN ‚??d ˜¹ï©&Ãb @  ŠO ƒ??d عï &Ù @  ŠP „??d ºï‘b» @  ŠQ …??d XºïaAa @  ŠR †??d ˜ºïAèCŸ @  ŠS ‡??d غïÚ¢ât @  ŠT ˆ??d »ï ênœ @  ŠU ‰??d X»ïú•”å @  ŠV Š??d ˜»ïÚ`– @  ŠW ‹??d Ø»ïÒÁp@ @  ŠX Œ??d ¼ï˃O @  ŠY ??d X¼ï;ðy6 @  ŠZ Ž??d ˜¼ï{È @  Š[ ??d ؼïå¸Ï @  Š\ ??d ½ï5W4' @  Š] ‘??d X½ïÅ(Î^ @  Š^ ’??d ˜½ïåÝÌ  @  Š_ “??d ؽïQÛ3« @  Š` ”??d ¾ïÌŸ“j @  Ša •??d X¾ï<ài @  Šb –??d ˜¾ïkí @  Šc —??d ؾï‡_Ê @  Šd ˜??d ¿ïWFî @  Še ™??d X¿ï§h¼— @  Šf š??d ˜¿ï‡¾i @uÐÀï  Šg ›??d Ø¿ï¶û„ç @  Šhœ??d 0ÀïÒ Õµ @  Ši??d pÀï"t/Ì @  Šjž??d °Àï-2 @  ŠkŸ??d ðÀïa,×é @  Šl ??d 0Áï±d[ @  Šm¡??d pÁïA¡x @  Šn¢??d °Áïa @  Šo£??d ðÁïÄî{= @  Šp¤??d 0ÂïYªÛü @  Šq¥??d pÂï©Õ!… @  Šr¦??d °Âï‰ #{ @  Šs§??d ðÂïj‚ @  Št¨??d 0ÃïÂ"x @  Šu©??d pÃï2]ô @  Švª??d °Ãï¨öÿ @  Šw«??d ðÃï ¤ @  Šx¬??d 0ÄïGã« @  Šy­??d pÄïó8Ò @  Šz®??d °ÄïÓÍ, @  Š{¯??d ðÄï-ר+ @  Š|°??d 0ÅïýŸTà @  Š}±??d pÅï ஺ @  Š~²??d °Åï-¬D @  Š³??d ðÅïÔBeì @  Š€´??d 0ÆïIÅ- @  Šµ??d pÆï¹y?T @  Š‚¶??d °Æï™Œ=ª @  Šƒ·??d ðÆïÆœA @  Š„¸??d 0ÇïÒŽ© @  Š…¹??d pÇï"ñêÐ @  Š†º??d °Çïè. @  Š‡»??d ðÇï ¥u @  Šˆ¼??d 0Èï>Z‚h @  Š‰½??d pÈïÎ%x @  ŠŠ¾??d °ÈïîÐzï @  Š‹¿??d ðÈï}-•% @  ŠŒÀ??d 0Éï­eÍ @  ŠÁ??d pÉï]ã´ @  ŠŽÂ??d °Éï}ïáJ @  ŠÃ??d ðÉïØï9ñ @  ŠÄ??d 0ÊïE«™0 @  Š‘Å??d pÊïµÔcI @  Š’Æ??d °Êï•!a· @  Š“Ç??d ðÊïkÀ\ @  Š”È??d 0ËïÞ#L´ @  Š•É??d pËï.\¶Í @  Š–Ê??d °Ëï©´3 @  Š—Ë??d ðËïRh @  Š˜Ì??d 0ÌïF¡g @  Š™Í??d pÌïï9[ @  ŠšÎ??d °ÌïÏÌYà @  Š›Ï??d ðÌï1Öšç @  ŠœÐ??d 0Íïáž @  ŠÑ??d pÍïáìv @  ŠžÒ??d °Íï1îˆ @  ŠŸÓ??d ðÍï…ƒ @  Š Ô??d 0ÎïV±B @  Š¡Õ??d pÎïè)K; @  Š¢Ö??d °ÎïÈÜIÅ @  Š£×??d ðÎïS–è. @  Š¤Ø??d 0ÏïƒÞdÆ @  Š¥Ù??d pÏïs¡ž¿ @  Š¦Ú??d °ÏïSTœA @  Š§Û??d ðÏï[õz @  Š¨Ü??d 0Ðïå+ƨ @  Š©Ý??d pÐïT<Ñ @  ŠªÞ??d °Ðï5¡>/ @  Š«ß??d ðÐïV Äô @  Š¬à??d 0Ñï†DH @  Š­á??d pÑïv;²e @  Š®â??d °ÑïVΰ› @  Š¯ã??d ðÑïóÎh  @  Š°ä??d 0ÒïnŠÈá @  Š±å??d pÒïžõ2˜ @  Š²æ??d °Òï¾0f @  Š³ç??d ðÒï%J‘ @  Š´è??d 0Óïõe @  Šµé??d pÓï}ç @  Š¶ê??d °Óï%ˆåâ @  Š·ë??d ðÓï-)¹ @  Š¸ì??d 0Ôï4gð¶ @  Š¹í??d pÔïÄ Ï @  Šºî??d °Ôïäí1 @  Š»ï??d ðÔï÷Ë6 @  Š¼ð??d 0ÕïÊ¿GÞ @  Š½ñ??d pÕï:À½§ @  Š¾ò??d °Õï5¿Y @  Š¿ó??d ðÕï4FÀ @  ŠÀô??d 0Öïpæ @  ŠÁõ??d pÖïmx @  ŠÂö??d °ÖïMú† @  ŠÃ÷??d ðÖïÖ°¿m @  ŠÄø??d 0×ïø3… @  ŠÅù??d p×ïö‡Éü @  ŠÆú??d °×ïÖrË @  ŠÇû??d ð×ïÞÓ-Y @  ŠÈü??d 0Øïê,¡D @  ŠÉý??d pØïS[= @  ŠÊþ??d °Øï:¦Yà @  ŠËÿ??d ðØï‚øA @  ŠÌ@?d 0ÙïÁÊt© @  ŠÍ@?d pÙï1µŽÐ @  ŠÎ@?d °Ùï@Œ. @  ŠÏ@?d ðÙï´@T• @  ŠÐ@?d 0Úï)ôT @  ŠÑ@?d pÚïÙ{- @  ŠÒ@?d °ÚïùŽ Ó @  ŠÓ@?d ðÚïbÄ­8 @  ŠÔ@?d 0Ûﲌ!Ð @  ŠÕ @?d pÛïBóÛ© @  ŠÖ @?d °ÛïbÙW @  Š× @?d ðÛïj§?  @  ŠØ @?d 0ÜïséÌ @  ŠÙ @?d pÜ6z @  ŠÚ@?d °Üï£c4„ @  ŠÛ@?d ðÜï]y÷ƒ @  ŠÜ@?d 0Ýï1{k @  ŠÝ@?d pÝï}N @  ŠÞ@?d °Ýï]»ƒì @  Šß@?d ðÝïé½|ç @  Šà@?d 0ÞïtùÜ& @  Šá@?d pÞ&_ @  Šâ@?d€ °Þïа8 @  ‹@?d ðÞ請ÑÅ @  ‹@?d 0ßïzó]- @  ‹@?d pßïOÅ\¹ @  ‹@?d uÐàï/°ßïo0^G @  ‹@?d ðßï©#çf @  ‹@?d Hàï°‡¹ @  ‹@?d ˆàï,. ³ @  ‹@?d Èà﮿m @  ‹ @?d áïZ‚„m @  ‹  @?d HáïØ“³ @  ‹ !@?d ˆáïOA‡ @  ‹ "@?d ÈáïÍÐÙ @  ‹ #@?d âïžç @  ‹$@?d Hâï–‡‰9 @  ‹%@?d ˆâï§ú @  ‹&@?d Èâï%$ @  ‹'@?d ãï)ÄÑ @  ‹(@?d Hãï«UÆÊ @  ‹)@?d ˆãï<Ò~ @  ‹*@?d Èãï¾–Å  @  ‹+@?d äïãZ˜P @  ‹,@?d HäïaËŽ @  ‹-@?d ˆäïýb?­ @  ‹.@?d Èäïó(s @  ‹/@?d åïy‹¯ @  ‹0@?d Håï”èœq @  ‹1@?d ˆåﺈŠ@  ‹2@?d Èåï+Ÿ @  ‹3@?d æïXí‘% @  ‹4@?d HæïÚ|†û @  ‹5@?d ˆæïúr/ˆ @  ‹ 6@?d Èæïxã8V @  ‹!7@?d çït9ùf @  ‹"8@?d Hçïö¨î¸ @  ‹#9@?d ˆçïaúú  @  ‹$:@?d ÈçïãkíÒ @  ‹%;@?d èï“Ï0 @  ‹&<@?d Hèï‡Øî @  ‹'=@?d ˆèï.hÍ @  ‹(>@?d Èèï¿ @  ‹)?@?d éï Òð @  ‹*@@?d Héï‰CçÜ @  ‹+A@?d ˆéïóh @  ‹,B@?d Èéïœ€ä¶ @  ‹-C@?d êïEFêˆ @  ‹.D@?d HêïÇ×ýV @  ‹/E@?d ˆêïößs• @  ‹0F@?d ÈêïtNdK @  ‹1G@?d ëïx”¥{ @  ‹2H@?d Hëïú²¥ @  ‹3I@?d ˆëïmW¦ @  ‹4J@?d ÈëïïÆ±Ï @  ‹5K@?d ìï² ì? @  ‹6L@?d Hìï0›ûá @  ‹7M@?d ˆìï¬2K @  ‹8N@?d Èìï.£\ @  ‹9O@?d íïG)ÿÀ @  ‹:P@?d HíïŸè @  ‹;Q@?d ˆíïRêüª @  ‹<R@?d ÈíïÐ{ët @  ‹=S@?d îï ½åJ @  ‹>T@?d Hîï‹,ò” @  ‹?U@?d ˆîï%]u @  ‹@V@?d ÈîJ« @  ‹AW@?d ïï‹n‹› @  ‹BX@?d Hïï ÿœE @  ‹CY@?d ˆïïž­ˆñ @  ‹DZ@?d Èïï<Ÿ/ @  ‹E[@?d ðïæ`b @  ‹F\@?d Hðïdñš¼ @  ‹G]@?d ˆðïøX*Ÿ @  ‹H^@?d ÈðïzÉ=A @  ‹I_@?d ñïŽô§A @  ‹J`@?d Hñï e°Ÿ @  ‹Ka@?d ˆñï›7¤+ @  ‹Lb@?d Èñ靈õ @  ‹Mc@?d òïÀ`½Ë @  ‹Nd@?d HòïBñª @  ‹Oe@?d ˆòïsù$Ö @  ‹Pf@?d Èòïñh3 @  ‹Qg@?d óïý²ò8 @  ‹Rh@?d Hóï#åæ @  ‹Si@?d ˆóïèqñR @  ‹Tj@?d ÈóïjàæŒ @  ‹Uk@?d ôï7,»| @  ‹Vl@?d Hôïµ½¬¢ @  ‹Wm@?d ˆôï) @  ‹Xn@?d Èôï«… _ @  ‹Yo@?d õ糖 @  ‹Zp@?d Hõï@ž¿] @  ‹[q@?d ˆõï×Ì«é @  ‹\r@?d ÈõïU]¼7 @  ‹]s@?d ö²  @  ‹^t@?d Höï ¥× @  ‹_u@?d ˆöï. ¤ @  ‹`v@?d Èöﬕz @  ‹aw@?d ÷ï OÚJ @  ‹bx@?d H÷ï"ÞÍ” @  ‹cy@?d ˆ÷﵌٠ @  ‹dz@?d È÷ï7Îþ @  ‹e{@?d øïG`ì @  ‹f|@?d HøïÅñû @  ‹g}@?d ˆøïYXKá @  ‹h~@?d ÈøïÛÉ\? @  ‹i@?d ùïÂb‡¼ @  ‹j€@?d Hùï@ób @  ‹k@?d ˆùïס„Ö @  ‹l‚@?d ÈùïU0“ @  ‹mƒ@?d úïŒö6 @  ‹n„@?d HúïgŠè @  ‹o…@?d ˆúï?o+ @  ‹p†@?d Èúï½þõ @  ‹q‡@?d ûï±$ÒÅ @  ‹rˆ@?d Hûï3µÅ @  ‹s‰@?d ˆûï¤çѯ @  ‹tŠ@?d Èûï&vÆq @  ‹u‹@?d üï{º› @  ‹vŒ@?d Hüïù+Œ_ @  ‹w@?d ˆüïe‚<| @  ‹xŽ@?d Èüïç+¢ @  ‹y@?d ýˆ~ @  ‹z@?d Hýï Ÿ  @  ‹{‘@?d ˆýï›Z‹ @  ‹|’@?d ÈýïËœÊ @  ‹}“@?d þïÀ ’ô @  ‹~”@?d HþïBœ…* @  ‹•@?d ˆþï/Ãú @  ‹€–@?d Èþï­R $ @  ‹—@?d ÿï¡ˆÌ @  ‹‚˜@?d Hÿï#ÛÊ @  ‹ƒ™@?d ˆÿï´KÏ~ @  ‹„uÐðš@?d Èÿï6ÚØ  @  ‹…›@?d ð(} @  ‹†œ@?d `𪗠£ @  ‹‡@?d  ð6>¼€ @  ‹ˆž@?d à𴯫^ @  ‹‰Ÿ@?d ð@’1^ @  ‹Š @?d `ðÂ&€ @  ‹‹¡@?d  ðUQ24 @  ‹Œ¢@?d àð×À%ê @  ‹£@?d ð+Ô @  ‹Ž¤@?d `ðŒ—<  @  ‹¥@?d  ð½Ÿ²É @  ‹¦@?d àð?¥ @  ‹‘§@?d ð3Ôd' @  ‹’¨@?d `ð±Esù @  ‹“©@?d  ð&gM @  ‹”ª@?d àð¤†p“ @  ‹•«@?d ðùJ-c @  ‹–¬@?d `ð{Û:½ @  ‹—­@?d  ðçrŠž @  ‹˜®@?d àðeã@ @  ‹™¯@?d ð i>œ @  ‹š°@?d `ðŽø)B @  ‹›±@?d  ðª=ö @  ‹œ²@?d àð›;*( @  ‹³@?d ðBý$ @  ‹ž´@?d `ðÀl3È @  ‹Ÿµ@?d  ðàbš» @  ‹ ¶@?d àðbóe @  ‹¡·@?d ðn)LU @  ‹¢¸@?d `ðì¸[‹ @  ‹£¹@?d  ð{êO? @  ‹¤º@?d àðù{Xá @  ‹¥»@?d ð‰z @  ‹¦¼@?d `ð —mÝ @  ‹§½@?d  ð—>Ýþ @  ‹¨¾@?d àð¯Ê  @  ‹©¿@?d ðÂE1 @  ‹ªÀ@?d ` ð“SRï @  ‹«Á@?d   ðF[ @  ‹¬Â@?d à ð†Q… @  ‹­Ã@?d ð_V_» @  ‹®Ä@?d ` ðÝÇHe @  ‹¯Å@?d   ðìÏÆ¦ @  ‹°Æ@?d à ðn^Ñx @  ‹±Ç@?d ðb„H @  ‹²È@?d ` ðà– @  ‹³É@?d   ðwG" @  ‹´Ê@?d à ðõÖü @  ‹µË@?d ð¨Y  @  ‹¶Ì@?d ` ð*‹NÒ @  ‹·Í@?d   ð¶"þñ @  ‹¸Î@?d à ð4³é/ @  ‹¹Ï@?d ð]9Jó @  ‹ºÐ@?d ` ðߨ]- @  ‹»Ñ@?d   ðHúI™ @  ‹¼Ò@?d à ðÊk^G @  ‹½Ó@?d ð­Py @  ‹¾Ô@?d `𑨠@  ‹ÂØ@?d `ðï)v @  ‹ÃÙ@?d  ð„½= @  ‹ÄÚ@?d àð,* @  ‹ÅÛ@?d ðüp8Q @  ‹ÆÜ@?d `ð~á/ @  ‹ÇÝ@?d  ðâHŸ¬ @  ‹ÈÞ@?d àð`Ùˆr @  ‹Éß@?d ð”är @  ‹Êà@?d `ðu¬ @  ‹Ëá@?d  ð' @  ‹Ìâ@?d àð¶Æ @  ‹Íã@?d ðÚpø @  ‹Îä@?d `ðXá& @  ‹Ïå@?d  ðié‘å @  ‹Ðæ@?d àðëx†; @  ‹Ñç@?d ðç¢G  @  ‹Òè@?d `ðe3PÕ @  ‹Óé@?d  ðòaDa @  ‹Ôê@?d àðpðS¿ @  ‹Õë@?d ð-<O @  ‹Öì@?d `𯭑 @  ‹×í@?d  ð3©² @  ‹Øî@?d à𱕾l @  ‹Ùï@?d ðØ° @  ‹Úð@?d `ðZŽ n @  ‹Ûñ@?d  ðÍÜÚ @  ‹Üò@?d àðOM  @  ‹Ýó@?d ð–‹: @  ‹Þô@?d `ðä @  ‹ßõ@?d  ð4¹— @  ‹àö@?d àð¶…®I @  ‹á÷@?d ðº_oy @  ‹âø@?d€ `ð¾˜Ð @  Œù@?d  ðÈ‹Œƒ @  Œú@?d àðJ›] @  Œû@?d ðÿ.BR @  Œü@?d `ð}¿UŒ @  Œý@?d  ð/¤ºÕ @  Œþ@?d àð­5­  @  Œÿ@?d ðK|þ @  ŒA?d `ð‡Úk  @  Œ A?d  ðÕÁ„y @  Œ A?d àðWP“§ @  Œ A?d ðKßft @  Œ A?d `ðÉNqª @  Œ A?d  ð›Užó @  ŒA?d àðĉ- @  ŒA?d ðv )‡ @  ŒA?d `ðôœ>Y @  Œ A?d  ð¦‡Ñ @  Œ A?d àð$ÆÞ @  Œ A?d ð¼“`à @  Œ A?d `ð>w @  Œ A?d  ðl˜D @  ŒA?d àð @  ŒA?d ðI°s< @  ŒA?d `ðË!dâ @  ŒA?d  ð™:‹» @  ŒA?d àð«œe @  ŒA?d ð$i¶ @  ŒA?d `ð…µ~h @  ŒA?d  ð×®‘1 @  ŒA?d àðU?†ï @  ŒA?d ð+ðõ @  Œ A?d `ð©a+ @  Œ!A?d  ðûzùruÐ ð @  Œ"A?d àð@,2y @  Œ# A?d 8 ð°ì¹  @  Œ$ A?d x ð2}®Ó @  Œ% A?d ¸ ð`fAŠ @  Œ& A?d ø ðâ÷VT @  Œ' A?d 8!ðØx“. @  Œ(  A?d x!ðZé„ð @  Œ) !A?d ¸!ðòk© @  Œ* "A?d ø!ðŠc|w @  Œ+ #A?d 8"ð–쉤 @  Œ, $A?d x"ð}žz @  Œ- %A?d ¸"ðFfq# @  Œ. &A?d ø"ðÄ÷fý @  Œ/ 'A?d 8#ð«>ÆW @  Œ0 (A?d x#ð)¯Ñ‰ @  Œ1 )A?d ¸#ð{´>Ð @  Œ2 *A?d ø#ðù%) @  Œ3 +A?d 8$ða  @  Œ4 ,A?d x$ðã1˜Í @  Œ5 -A?d ¸$ð±*w” @  Œ6 .A?d ø$ð3»`J @  Œ7 /A?d 8%𔃜ì @  Œ8 0A?d x%ð‹2 @  Œ9 1A?d ¸%ðD dk @  Œ: 2A?d ø%ðƘsµ @  Œ; 3A?d 8&ðÚ†f @  Œ< 4A?d x&ðX†‘¸ @  Œ= 5A?d ¸&ð ~á @  Œ> 6A?d ø&ðˆ i? @  Œ? 7A?d 8'ðXÄè· @  Œ@ 8A?d x'ðÚUÿi @  ŒA 9A?d ¸'ðˆN0 @  ŒB :A?d ø'ð ßî @  ŒC ;A?d 8(ð¿ëÞá @  ŒD A?d ø(ðíð1¸ @  ŒG ?A?d 8)ð'/áÓ @  ŒH @A?d x)ð¥¾ö  @  ŒI AA?d ¸)ð÷¥T @  ŒJ BA?d ø)ðu4Š @  ŒK CA?d 8*ði»ûY @  ŒL DA?d x*ðë*ì‡ @  ŒM EA?d ¸*ð¹1Þ @  ŒN FA?d ø*ð;  @  ŒO GA?d 8+ðTi´ª @  ŒP HA?d x+ðÖø£t @  ŒQ IA?d ¸+ð„ãL- @  ŒR JA?d ø+ðr[ó @  ŒS KA?d 8,ðž÷ýî @  ŒT LA?d x,ðfê0 @  ŒU MA?d ¸,ðN}i @  ŒV NA?d ø,ðÌì· @  ŒW OA?d 8-ðkÔî @  ŒX PA?d x-ðéEùÏ @  ŒY QA?d ¸-ð»^– @  ŒZ RA?d ø-ð9ÏH @  Œ[ SA?d 8.ð%@ô› @  Œ\ TA?d x.ð§ÑãE @  Œ] UA?d ¸.ðõÊ  @  Œ^ VA?d ø.ðw[ @  Œ_ WA?d 8/ð ”œØ @  Œ` XA?d x/ð‹‹ @  Œa YA?d ¸/ðÙd_ @  Œb ZA?d ø/ð[s @  Œc [A?d 80ðdšš! @  Œd \A?d x0ðæ ÿ @  Œe ]A?d ¸0ð´b¦ @  Œf ^A?d ø0ð6ux @  Œg _A?d 81ð ° @  Œh `A?d x1ðŽŸ§Ü @  Œi aA?d ¸1ðÜ„H… @  Œj bA?d ø1ð^_[ @  Œk cA?d 82ðBšªˆ @  Œl dA?d x2ðÀ ½V @  Œm eA?d ¸2ð’R @  Œn fA?d ø2ðEÑ @  Œo gA?d 83ðHå{ @  Œp hA?d x3ðýÙò¥ @  Œq iA?d ¸3ð¯Âü @  Œr jA?d ø3ð-S " @  Œs kA?d 84ðµÖ¬? @  Œt lA?d x4ð7G»á @  Œu mA?d ¸4ðe\T¸ @  Œv nA?d ø4ðçÍCf @  Œw oA?d 85ð@õ¿À @  Œx pA?d x5ðÂd¨ @  Œy qA?d ¸5ðGG @  Œz rA?d ø5ðîP™ @  Œ{ sA?d 86ða¥J @  Œ| tA?d x6ðŒð²” @  Œ} uA?d ¸6ðÞë]Í @  Œ~ vA?d ø6ð\zJ @  Œ wA?d 87ðoäûª @  Œ€ xA?d x7ðíuìt @  Œ yA?d ¸7ð¿n- @  Œ‚ zA?d ø7ð=ÿó @  Œƒ {A?d 88ðˆËÍü @  Œ„ |A?d x8ð ZÚ" @  Œ… }A?d ¸8ðXA5{ @  Œ† ~A?d ø8ðÚÐ"¥ @  Œ‡ A?d 89ð ɦ\ @  Œˆ €A?d x9ðX±‚ @  Œ‰ A?d ¸9ðÝC^Û @  ŒŠ ‚A?d ø9ð_ÒI @  Œ‹ ƒA?d 8:ðC]¼Ö @  ŒŒ „A?d x:ðÁÌ« @  Œ …A?d ¸:ð“×DQ @  ŒŽ †A?d ø:ðFS @  Œ ‡A?d 8;ð~ó% @  Œ ˆA?d x;ðüäû @  Œ‘ ‰A?d ¸;ð® ¢ @  Œ’ ŠA?d ø;ð,”| @  Œ“ ‹A?d 8<ð´ºa @  Œ” ŒA?d x<ð6€­¿ @  Œ• A?d ¸<ðd›Bæ @  Œ– ŽA?d ø<ðæ U8 @  Œ— A?d 8=ðA2©ž @  Œ˜ A?d x=ðã¾@ @  Œ™ ‘A?d ¸=ð‘¸Q @  Œš ’A?d ø=ð)FÇ @  Œ› “A?d 8>𦳠@  Œœ ”A?d x>ð7¤Ê @  Œ •A?d ¸>ðß,K“ @  Œž –A?d ø>ð]½\M @  ŒŸ —A?d 8?ð#rÛW @  Œ  ˜A?d x?ð¡ã̉ @  Œ¡ ™A?duÐ@ð7 ¸?ðóø#Ð @  Œ¢ šA?d ø?ðH®èÛ @  Œ£›A?d P@ð Éõ @  Œ¤œA?d @ð*<  @  Œ¥A?d Ð@ðÚCÿr @  Œ¦žA?d Að sš @  Œ§ŸA?d PAðb]-Ö @  Œ¨ A?d AðB¨/( @  Œ©¡A?d ÐAð²×ÕQ @  Œª¢A?d Bð/“u @  Œ«£A?d PBð,É7\ @  Œ¬¤A?d Bð <5¢ @  Œ­¥A?d ÐBðüCÏÛ @  Œ®¦A?d Cð, C3 @  Œ¯§A?d PCðx¯ @  Œ°¨A?d Cð1îzQ @  Œ±©A?d ÐCðÁ‘€( @  Œ²ªA?d DðØßs' @  Œ³«A?d PDðÛ…1ë @  Œ´¬A?d Dðûp3 @  Œµ­A?d ÐDð Él @  Œ¶®A?d EðÛGE„ @  Œ·¯A?d PEð.¦" @  Œ¸°A?d EðS ê @  Œ¹±A?d ÐEðþ,Ú“ @  Œº²A?d FðchzR @  Œ»³A?d PFð`28ž @  Œ¼´A?d Fð@Ç:` @  Œ½µA?d ÐFð°¸À @  Œ¾¶A?d Gð`ðLñ @  Œ¿·A?d PGðâáVO @  ŒÀ¸A?d GðÂT± @  ŒÁ¹A?d ÐGð2k®È @  ŒÂºA?d Hð”"Õ @  ŒÃ»A?d PHðÎ` @  ŒÄ¼A?d Hð%;bç @  ŒÅ½A?d ÐHðÕD˜ž @  ŒÆ¾A?d Ið v @  ŒÇ¿A?d PIð _+ @  ŒÈÀA?d Ið½ÿ]Õ @  ŒÉÁA?d ÐIðM€§¬ @  ŒÊÂA?d JðÐÄm @  ŒËÃA?d PJðÓžE¡ @  ŒÌÄA?d JðókG_ @  ŒÍÅA?d ÐJð½& @  ŒÎÆA?d KðÓ\1Î @  ŒÏÇA?d PKðîL R @  ŒÐÈA?d Kðι¬ @  ŒÑÉA?d ÐKð>ÆòÕ @  ŒÒÊA?d Lð'ˆÚ @  ŒÓËA?d PLð$ÒC @  ŒÔÌA?d Lð'Aè @  ŒÕÍA?d ÐLðôX»‘ @  ŒÖÎA?d Mð$7y @  Œ×ÏA?d PMðÑñPé @  ŒØÐA?d MðñR @  ŒÙÑA?d ÐMð{¨n @  ŒÚÒA?d Nðœ?¯ @  ŒÛÓA?d PNðŸeJc @  ŒÜÔA?d Nð¿H @  ŒÝÕA?d ÐNðOï²ä @  ŒÞÖA?d OðŸ§>  @  Œß×A?d POð³±"  @  ŒàØA?d Oð“D Þ @  ŒáÙA?d ÐOðc;Ú§ @  ŒâÚA?d€ Pð©&z³ @  ÛA?d PPðK=pV @  ÜA?d PðkÈr¨ @  ÝA?d ÐPð^þs< @  ÞA?d Qð޶ÿÔ @  ßA?d PQð(Rþâ @  àA?d Qð§ü @  áA?d ÐQð6jY @  âA?d Rð«.ùÞ @   ãA?d PRðm=@ÿ @   äA?d RðMÈB @   åA?d ÐRðxþC• @   æA?d Sð¨¶Ï} @   çA?d PSðöµ•{ @  èA?d SðÖ@—… @  éA?d ÐSðE, f @  êA?d Tð\bÿi @  ëA?d PTðšqFH @  ìA?d Tðº„D¶ @  íA?d ÐTð²E" @  îA?d Uð_úÉÊ @  ïA?d PUðd©ñ  @  ðA?d UðD\óÞ @  ñA?d ÐUðz‘VÝ @  òA?d VðçÕö @  óA?d PVð!ÆO= @  ôA?d Vð3Mà @  õA?d ÐVð4LW @  öA?d WðäMÀ¿ @  ÷A?d PWðºNš¹ @  øA?d W𚻘G @  ùA?d ÐWðÑ$ @   úA?d Xð,.¨  @  !ûA?d PXðê=( @  "üA?d XðÊÈÖ @  #ýA?d ÐXðÿþB @  $þA?d Yð/¶žª @  %ÿA?d PYð©¾6 @  &B?d Yð‰t¼È @  'B?d ÐYð·¹Ë @  (B?d Zð*ý¹  @  )B?d PZðìî+ @  *B?d ZðÌÕ @  +B?d ÐZðù-A @  ,B?d [ð)e© @  -B?d P[ðwfÕ¯ @  .B?d [ðW“×Q @  / B?d Ð[ðÄÿL² @  0 B?d \ðݱ¿½ @  1 B?d P\𢜠@  2 B?d \ð;Wb @  3 B?d Ð\ðaö @  4B?d ]ðÞ)‰ @  5B?d P]ðåz±ô @  6B?d ]ðų  @  7B?d Ð]ðûB  @  8B?d ^ðf¶È @  9B?d P^ð é @  :B?d ^ð€à  @  ;B?d Ð^ðµÖ ƒ @  <B?d _ðež€k @  =B?d P_ð;Úm @  >B?d _ðhØ“ @  uÐ`ð?B?d Ð_ð7bR @  @B?d (`ð‰ý×Ê @  AB?d h`ðOînë @  BB?d ¨`ðol @  CB?d è`ðZ-m @  DB?d (aðŠeái @  EB?d hað,à_ @  F B?d ¨að tâ¡ @  G!B?d èað2¹G¢ @  H"B?d (bð¯ýçc @  I#B?d hbðiî^B @  J$B?d ¨bðI\¼ @  K%B?d èbð|-]( @  L&B?d (cð¬eÑÀ @  M'B?d hcðòf‹Æ @  N(B?d ¨cðÒ“‰8 @  O)B?d ècðAÿÛ @  P*B?d (dðX±áÔ @  Q+B?d hdðž¢Xõ @  R,B?d ¨dð¾WZ  @  S-B?d èdð‹a[Ÿ @  T.B?d (eð[)×w @  U/B?d heð`zï @  V0B?d ¨eð@íc @  W1B?d èeð~BH` @  X2B?d (fðãè¡ @  Y3B?d hfð%Q€ @  Z4B?d ¨fðàS~ @  [5B?d èfð0ÖRê @  \6B?d (gðàžÞ @  ]7B?d hg𾄠@  ^8B?d ¨gðžh†ú @  _9B?d ègð:© @  `:B?d (hð(ý¶´ @  a;B?d hhðîî• @  bB?d (ið+e€ @  e?B?d hið}Ñ”0 @  f@B?d ¨ið]$–Î @  gAB?d èiðcé3Í @  hBB?d (jðþ­“  @  iCB?d hjð8¾*- @  jDB?d ¨jðK(Ó @  kEB?d èjð-})G @  lFB?d (kðý5¥¯ @  mGB?d hkð£6ÿ© @  nHB?d ¨kðƒÃýW @  oIB?d èkð¯f´ @  pJB?d (lð á•» @  qKB?d hlðÏò,š @  rLB?d ¨lðï.d @  sMB?d èlðÚ1/ð @  tNB?d (mð y£ @  uOB?d hmð1*›ò @  vPB?d ¨mðß™  @  wQB?d èmð/< @  xRB?d (nð²VœÎ @  ySB?d hnðtE%ï @  zTB?d ¨nðT°' @  {UB?d ènða†&… @  |VB?d (oð±Îªm @  }WB?d hoðïÍðk @  ~XB?d ¨oðÏ8ò• @  YB?d èoðxe @  €ZB?d (pð¾ÝÄ× @  [B?d hpðxÎ}ö @  ‚\B?d ¨pðX; @  ƒ]B?d èpðm ~œ @  „^B?d (qð½Eòt @  …_B?d hqð¡óB @  †`B?d ¨qð;Tñ¼ @  ‡aB?d èqð™T¿ @  ˆbB?d (rð˜Ýô~ @  ‰cB?d hrð^ÎM_ @  ŠdB?d ¨rð~;O¡ @  ‹eB?d èrðK N5 @  ŒfB?d (sð›EÂÝ @  gB?d hsðÅF˜Û @  ŽhB?d ¨sð峚% @  iB?d èsðv߯ @  jB?d (tðo‘òÉ @  ‘kB?d htð©‚Kè @  ’lB?d ¨tð‰wI @  “mB?d ètð¼AH‚ @  ”nB?d (uðl Äj @  •oB?d huðWZü€ @  –pB?d ¨uðw¯þ~ @  —qB?d èuðIb[} @  ˜rB?d (vðÔ&û¼ @  ™sB?d hvð5B @  štB?d ¨vð2À@c @  ›uB?d èvðöA÷ @  œvB?d (wð×¾Í @  wB?d hwð‰½— @  žxB?d ¨wð©H•ç @  ŸyB?d èwð+")´ @   zB?d (xðÝ¥© @  ¡{B?d hxðÙΈ @  ¢|B?d ¨xðù;v @  £}B?d èxðÌ â @  ¤~B?d (yðE“  @  ¥B?d hyðW7Ó¿ @  ¦€B?d ¨yðwÂÑA @  §B?d èyðItB @  ¨‚B?d (zðÔKÔƒ @  ©ƒB?d hzðXm¢ @  ª„B?d ¨zð2­o\ @  «…B?d èzð›nÈ @  ¬†B?d ({ð×Óâ  @  ­‡B?d h{ð‰Ð¸& @  ®ˆB?d ¨{ð©%ºØ @  ¯‰B?d è{ð:I!; @  °ŠB?d (|ð#Ò4 @  ±‹B?d h|ðåk @  ²ŒB?d ¨|ðÅáië @  ³B?d è|ðð×h @  ´ŽB?d (}ð Ÿä— @  µB?d h}ðÌÜ} @  ¶B?d ¨}ð;9Þƒ @  ·‘B?d è}ðô{€ @  ¸’B?d (~ð˜°ÛA @  ¹“B?d h~ð^£b` @  º”B?d ¨~ð~V`ž @  »•B?d è~ðK`a  @  ¼–B?d (ð›(íâ @  ½—B?d hðÅ+·ä @  ¾˜B?d ¨ðuЀð'åÞµ @  ¿™B?d èðɳÛ @  ÀšB?d @€ð§ í¯ @  Á›B?d €€ðÃzA® @  ÂœB?d À€ðAëVp @  ÃB?d ð&ÌÒ @  ÄžB?d @ð¤•Û  @  ÅŸB?d €ð Ï @  Æ B?d Àð"„ØÄ @  Ç¡B?d ‚ðœÊØ @  È¢B?d @‚ð Ý @  É£B?d €‚ðåzq @  Ê¤B?d À‚ðgëfÙ @  Ë¥B?d ƒðü{ @  Ì¦B?d @ƒð‚•ë¥ @  Í§B?d €ƒð~ò¤ƒ @  Î¨B?d Àƒðüc³] @  Ï©B?d „ðôÐÌo @  ÐªB?d @„ðvAÛ± @  Ñ«B?d €„ð6w° @  Ò¬B?d À„ð§`n @  Ó­B?d …ð÷HúÌ @  Ô®B?d @…ðuÙí @  Õ¯B?d €…ðìîÀØ @  Ö°B?d À…ðn× @  ×±B?d †ðOgÅ @  Ø²B?d @†ðÍöÒÄ @  Ù³B?d €†ð©~Å @  Ú´B?d À†ð+i @  ÛµB?d ‡ðLÿó¹ @  Ü¶B?d @‡ðÎnäg @  Ý·B?d €‡ð2 «A @  Þ¸B?d À‡ð°˜¼Ÿ @  ß¹B?d ˆð„œ› @  àºB?d @ˆð ŒÑ @  á»B?d €ˆðbz Ð @  â¼B?d€ Àˆð!¬À @  Ž½B?d ‰ð§… @  Ž¾B?d @‰ð%“[ @  Ž¿B?d €‰ð ÿ± @  ŽÀB?d À‰ð–›èo @  ŽÁB?d Šðy1¥  @  ŽÂB?d @Šðû ²× @  ŽÃB?d €ŠðQeA¬ @  ŽÄB?d ÀŠðÓôVr @  Ž ÅB?d ‹ðqR7= @  Ž ÆB?d @‹ðóà ã @  Ž ÇB?d €‹ðÊí”( @  Ž ÈB?d À‹ðH|ƒö @  Ž ÉB?d Œð#Ü^ @  ŽÊB?d @Œð¡MŠ€ @  ŽËB?d €Œð¦)G @  ŽÌB?d ÀŒð$¸PÅ @  ŽÍB?d ð†1Š @  ŽÎB?d @ð&T @  ŽÏB?d €ðXñðs @  ŽÐB?d ÀðÚ`ç­ @  ŽÑB?d Žð5ʪË @  ŽÒB?d @Žð·[½ @  ŽÓB?d €ŽðžNn @  ŽÔB?d ÀŽðŸY° @  ŽÕB?d ð=©8ÿ @  ŽÖB?d @ð¿8/! @  Ž×B?d €ð†›ê @  ŽØB?d Àð‡Œ4 @  ŽÙB?d ðÈ·Ý! @  ŽÚB?d @ðJ&Êÿ @  ŽÛB?d €ð\D Ô @  Ž ÜB?d ÀðÞÕ7  @  Ž!ÝB?d ‘ð|sVE @  Ž"ÞB?d @‘ðþâA› @  Ž#ßB?d €‘ð?+®` @  Ž$àB?d À‘𽺹¾ @  Ž%áB?d ’ðRôØ @  Ž&âB?d @’ðÐã @  Ž'ãB?d €’ðzD} @  Ž(äB?d À’ðøÕ£ @  Ž)åB?d “ðZsfì @  Ž*æB?d @“ðØâq2 @  Ž+çB?d €“ðáÌÅù @  Ž,èB?d À“ðc]Ò' @  Ž-éB?d ”ðýÌ @  Ž.êB?d @”ðŠlÛQ @  Ž/ëB?d €”ðÊ @  Ž0ìB?d À”ð™ @  Ž1íB?d •ð­?`[ @  Ž2îB?d @•ð/®w… @  Ž3ïB?d €•ðsС¢ @  Ž4ðB?d À•ðñA¶| @  Ž5ñB?d –ðëû @  Ž6òB?d @–ðœzìÄ @  Ž7óB?d €–ð6¿¿ @  Ž8ôB?d À–ð´.a @  Ž9õB?d —ðˆi. @  Ž:öB?d @—ð”~ð @  Ž;÷B?d €—ð­7Ê; @  Ž<øB?d À—ð/¦Ýå @  Ž=ùB?d ˜ði·¼_ @  Ž>úB?d @˜ðë&« @  Ž?ûB?d €˜ðSCG8 @  Ž@üB?d À˜ðÑÒPæ @  ŽAýB?d ™ðst1© @  ŽBþB?d @™ðñå&w @  ŽCÿB?d €™ð¢ÝÝ @  ŽDC?d À™ð LÊÝ @  ŽEC?d šðÏæ‡» @  ŽFC?d @šðMwe @  ŽGC?d €šðç²c @  ŽHC?d Àšðe#tÀ @  ŽIC?d ›ðÇ… @  ŽJC?d @›ðEQ @  ŽKC?d €›ð|:¶š @  ŽLC?d À›ðþ«¡D @  ŽM C?d œð• ¿ì @  ŽN C?d @œðš¨2 @  ŽO C?d €œðþe© @  ŽP C?d Àœð’orw @  ŽQ C?d ð0É8 @  ŽRC?d @ð²Xæ @  ŽSC?d €ðî&ÒÁ @  ŽTC?d Àðl·Å @  ŽUC?d žðƒˆy @  ŽVC?d @žðŒŸ§ @  ŽWC?d €žð«IlÜ @  ŽXC?d Àžð)Ø{ @  ŽYC?d Ÿð‹~M @  ŽZC?d @Ÿð ï “ @  Ž[C?d €Ÿð0Á¹X @  Ž\CuРð?d ÀŸð²P®† @  Ž]C?d  ð±µG @  Ž^C?d X ð3$Š™ @  Ž_C?d ˜ ð%F`² @  Ž`C?d Ø ð§×wl @  ŽaC?d ¡ðq# @  ŽbC?d X¡ð‡àý @  ŽcC?d ˜¡ðF)î @  Žd C?d Ø¡ðĸùØ @  Že!C?d ¢ð+´¾ @  Žf"C?d X¢ð©ƒ£` @  Žg#C?d ˜¢ðFP @  Žh$C?d Ø¢ð×GÅ @  Ži%C?d £ð#q&Š @  Žj&C?d X£ð¡à1T @  Žk'C?d ˜£ð˜Î…Ÿ @  Žl(C?d Ø£ð_’A @  Žm)C?d ¤ðqÿŒé @  Žn*C?d X¤ðón›7 @  Žo+C?d ˜¤ðô V¬ @  Žp,C?d ؤðv›Ar @  Žq-C?d ¥ðÔ= = @  Žr.C?d X¥ðV¬7ã @  Žs/C?d ˜¥ð ÒáÄ @  Žt0C?d Ø¥ðˆCö @  Žu1C?d ¦ðgé»| @  Žv2C?d X¦ðåx¬¢ @  Žw3C?d ˜¦ðO½_Ù @  Žx4C?d ئðÍ,H @  Žy5C?d §ðoŠ)H @  Žz6C?d X§ðí>– @  Ž{7C?d ˜§ðÔ5Š] @  Ž|8C?d اðV¤ƒ @  Ž}9C?d ¨ðµü9 @  Ž~:C?d X¨ð’$ëç @  Ž;C?d ˜¨ðÉ7o @  Ž€C?d X©ðk±V  @  Žƒ?C?d ˜©ðZ(¬Ê @  Ž„@C?d Ø©ðع» @  Ž…AC?d ªð7ör @  Ž†BC?d Xªðµ‚ᬠ@  Ž‡CC?d ˜ªðG× @  ŽˆDC?d تðÖ  @  Ž‰EC?d «ð?pdF @  ŽŠFC?d X«ð½ás˜ @  Ž‹GC?d ˜«ð„ÏÇS @  ŽŒHC?d Ø«ð^Ð @  ŽIC?d ¬ðmþÎ% @  ŽŽJC?d X¬ðïoÙû @  ŽKC?d ˜¬ðè ` @  ŽLC?d جðjš¾ @  Ž‘MC?d ­ðÈ @  Ž¢^C?d X±ð°Àà @  Ž£_C?d ˜±ðq ý @  Ž¤`C?d رðó˜êÅ @  Ž¥aC?d ²ð2§£ @  Ž¦bC?d X²ðž£°} @  Ž§cC?d ˜²ð4fC @  Ž¨dC?d زð¶÷TØ @  Ž©eC?d ³ðQ5— @  ŽªfC?d X³ð–À"I @  Ž«gC?d ˜³ð¯î–‚ @  Ž¬hC?d سð-\ @  Ž­iC?d ´ðFߟô @  Ž®jC?d X´ðÄNˆ* @  Ž¯kC?d ˜´ðÃ*E± @  Ž°lC?d Ø´ðA»Ro @  Ž±mC?d µðã3  @  Ž²nC?d XµðaŒ$þ @  Ž³oC?d ˜µð=òòÙ @  Ž´pC?d صð¿cå @  ŽµqC?d ¶ðPɨa @  Ž¶rC?d X¶ðÒX¿¿ @  Ž·sC?d ˜¶ðxLÄ @  Ž¸tC?d ضðú [ @  Ž¹uC?d ·ðXª:U @  ŽºvC?d X·ðÚ;-‹ @  Ž»wC?d ˜·ðã™@ @  Ž¼xC?d Ø·ða„Žž @  Ž½yC?d ¸ð'•ï$ @  Ž¾zC?d X¸ð¥øú @  Ž¿{C?d ˜¸ðaC @  ŽÀ|C?d ظðŸð @  ŽÁ}C?d ¹ð=VbÒ @  ŽÂ~C?d X¹ð¿Çu  @  ŽÃC?d ˜¹ð“˜Ût @  ŽÄ€C?d عð ̪ @  ŽÅC?d ºðþ£Ì @  ŽÆ‚C?d Xºð|2– @  ŽÇƒC?d ˜ºðÖ÷ei @  ŽÈ„C?d غðTfr· @  ŽÉ…C?d »ðöÀø @  ŽÊ†C?d X»ðtQ& @  ŽË‡C?d ˜»ðM°í @  ŽÌˆC?d Ø»ðÏî§3 @  ŽÍ‰C?d ¼ð¤N¹› @  ŽÎŠC?d X¼ð&ß®E @  ŽÏ‹C?d ˜¼ð!»cÞ @  ŽÐŒC?d ؼð£*t @  ŽÑC?d ½ðŒO @  ŽÒŽC?d X½ðƒ‘ @  ŽÓC?d ˜½ðßcÔ¶ @  ŽÔC?d ؽð]òÃh @  ŽÕ‘C?d ¾ð²XŽ @  ŽÖ’C?d X¾ð0əР@  Ž×“C?d ˜¾ðš j« @  ŽØ”C?d ؾð}u @  ŽÙ•C?d ¿ðº;: @  ŽÚ–C?d X¿ð8ª ä @  ŽÛ—C?d ˜¿ð„¿/ @uÐÀ𠠎ܘC?d Ø¿ðºÒt$ @  ŽÝ ™C?d 0Àð¬ÌÈÑ @  ŽÞ šC?d pÀð.]ß @  Žß ›C?d °Àð8?5$ @  Žà œC?d ðÀðº®"ú @  Žá C?d 0ÁðCµ @  Žâ žC?d€ pÁðîZHÍ @   ŸC?d °ÁðÎÒï @    C?d ðÁðLCøÁ @   ¡C?d 0Âðf NJ @   ¢C?d pÂðä1Y” @   £C?d °Âð€Fõ• @   ¤C?d ðÂð×âK @   ¥C?d 0ÃðnÃÜ~ @   ¦C?d pÃðìRË  @   §C?d °Ãð5„† @   ¨C?d ðÃ𒤓X @   ©C?d 0Äð ÜC?d ðÐðâî  @  ? ÝC?d 0ÑðœµÏû @  @ ÞC?d pÑð$Ø% @  A ßC?d °Ñð¤Ì3 @  B àC?d ðÑð˜5Ûí @  C áC?d 0Òð²Ömf @  D âC?d pÒð0Gz¸ @  E ãC?d °ÒðT0Ö¹ @  F äC?d ðÒðÖ¡Ág @  G åC?d 0ÓðºµÿR @  H æC?d pÓð8$èŒ @  I çC?d °ÓðÄC§ª @  J èC?d ðÓðFÒ°t @  K éC?d 0Ôðè;U1 @  L êC?d pÔðjªBï @  M ëC?d °ÔðÝîî @  N ìC?d ðÔðŒLù0 @  O íC?d 0ÕðMùùå @  P îC?d pÕðÏhî; @  Q ïC?d °ÕðV_Ãñ @  R ðC?d ðÕðÔÎÔ/ @  S ñC?d 0Öðþ-b¤ @  T òC?d pÖð|¼uz @  U óC?d °ÖðËÙ{ @  V ôC?d ðÖðšZÎ¥ @  W õC?d 0×ðöNð @  X öC?d p×ðtßçN @  Y ÷C?d °×ðˆ¸¨h @  Z øC?d ð×ð )¿¶ @  [ ùC?d 0Øð‰q%á @  \ úC?d pØð à2? @  ] ûC?d °Øðo—ž> @  ^ üC?d ðØðí‰à @  _ ýC?d 0Ùð=µ®… @  ` þC?d pÙð¿$¹[ @  a ÿC?d °Ùð\†T @  b D?d ðÙð—Í‘Š @  c D?d 0Úð½.' @  d D?d pÚð?¿0ß @  e D?d °Úð[ÈœÞ @  f D?d ðÚðÙY‹ @  g D?d 0ÛðµMµ5 @  h D?d pÛð7Ü¢ë @  i D?d °ÛðË»íÍ @  j D?d ðÛðI*ú @  k  D?d 0ÜðçÃV @  l  D?d pÜðeRˆ @  m  D?d °Üð%¤‰ @  n  D?d ðÜðƒ´³W @  o  D?d 0ÝðB³‚ @  p D?d pÝðÀ¤\ @  q D?d °ÝðY§‰– @  r D?d ðÝðÛ6žH @  s D?d 0ÞðñÕ(à @  t D?d pÞðsD? @  u D?d °Þð3“ @  v D?d ðÞ𕢄 @  w D?d 0ßðù¶º÷ @  x D?d pßð{'­) @  y D?d uÐàð/°ßð‡@â @  z D?d ðßð<) @  {D?d Hàð’a¸ @  |D?d ˆàð²àcF @  }D?d ÈàðtóÚg @  ~D?d áð¤»V @  D?d Háðk€Ü @  €D?d ˆáðKuÞ @  D?d Èáðí‘ß· @  ‚ D?d âðpÕv @  ƒ!D?d HâðEã~â @  „"D?d ˆâðe| @  …#D?d Èâð£Å= @  †$D?d ãðsMIÕ @  ‡%D?d HãðM€ìÖ @  ˆ&D?d ˆãðmuî( @  ‰'D?d Èãð3v´. @  Š(D?d äð*8G! @  ‹)D?d HäðFµ @  Œ*D?d ˆäð?ûDK @  +D?d Èäðùèýj @  Ž,D?d åð) q‚ @  -D?d HåðºÌêa @  .D?d ˆåðš9èŸ @  ‘/D?d Èåð¡jÐu @  ’0D?d æð<.p´ @  “1D?d Hæð q  @  ”2D?d ˆæð)ísÞ @  •3D?d ÈæðïþÊÿ @  –4D?d çð?¶F @  —5D?d Hçð{ã @  ˜6D?d ˆçð!Žáê @  ™7D?d Èçð»ì @  š8D?d èðKr7ñ @  ›9D?d Hèð~D6e @  œ:D?d ˆèð^±4› @  ;D?d Èè𘢺 @  žD?d ˆéðêu¿ÿ @  ¡?D?d Èéð¼Á«Ø @  ¢@D?d êð!…  @  £AD?d Hêð³  @  ¤BD?d ˆêð4Fs @  ¥CD?d ÈêðòU±R @  ¦DD?d ëð"=º @  §ED?d HëðИ¹ @  ¨FD?d ˆëð<%šG @  ©GD?d Èëðb&ÀA @  ªHD?d ìð{h3N @  «ID?d HìðN^2Ú @  ¬JD?d ˆìðn«0$ @  ­KD?d Èì𨸉 @  ®LD?d íðxðí @  ¯MD?d Híð뜞 @  °ND?d ˆíðËiœð @  ±OD?d Èíðð:¤ @  ²PD?d îðm~Û @  ³QD?d HîðXHO @  ´RD?d ˆîðx½± @  µSD?d Èîð¾®¾ @  ¶TD?d ïðnæ2x @  ·UD?d HïðP+—{ @  ¸VD?d ˆïðpÞ•… @  ¹WD?d Èïð.Ýσ @  ºXD?d ððs1 @  »YD?d Hðð¥5r¥ @  ¼ZD?d ˆðð…Àp[ @  ½[D?d ÈððCÓÉz @  ¾\D?d ñð“›E’ @  ¿]D?d Hñð¿öÿS @  À^D?d ˆñðŸý­ @  Á_D?d Èñð9çü› @  Â`D?d òð¤£\Z @  ÃaD?d Hòð‘•]Î @  ÄbD?d ˆòð±`_0 @  ÅcD?d Èòðwsæ @  ÆdD?d óð§;jù @  ÇeD?d Hóð™öÏú @  ÈfD?d ˆóð¹Í @  ÉgD?d Èóðç— @  ÊhD?d ôðþNd  @  ËiD?d HôðËxe™ @  ÌjD?d ˆôðëgg @  ÍkD?d Èôð-žÞF @  ÎlD?d õðýÖR® @  ÏmD?d HõðnºÉM @  ÐnD?d ˆõðNO˳ @  ÑoD?d ÈõðuóY @  ÒpD?d öðèXS˜ @  ÓqD?d HöðÝnR  @  ÔrD?d ˆöðý›Pò @  ÕsD?d Èöð;ˆéÓ @  ÖtD?d ÷ðëÀe; @  ×uD?d H÷ðÕ À8 @  ØvD?d ˆ÷ðõøÂÆ @  ÙwD?d È÷ð«û˜À @  ÚxD?d øðŸÝ @  ÛyD?d Høðª2I @  ÜzD?d ˆøðŠÇ· @  Ý{D?d ÈøðLÔ®– @  Þ|D?d ùðœœ"~ @  ß}D?d Hùðöž- @  à~D?d ˆùð>œÓ @  áD?d ÈùðuqÜf @  â€D?d€ úðƒiI @  D?d HúðWÙô @  ‚D?d ˆúðwëÛ  @  ƒD?d Èúðt±™Æ @  „D?d ûð¤ù. @  …D?d HûðT†ïW @  †D?d ˆûðtsí© @  ‡D?d ÈûðäÂèÕ @  ˆD?d üðýŒÚ @   ‰D?d Hüð óᣠ@   ŠD?d ˆüð-ã] @   ‹D?d Èüð.\¡‘ @   ŒD?d ýðþ-y @   D?d Hýðk× @  ŽD?d ˆýð.žÕþ @  D?d ÈýðvÞŒŽ @  D?d þðëš,O @  ‘D?d HþðåÖ6 @  ’D?d ˆþð;ÔÈ @  “D?d Èþð8J– @  ”D?d ÿðèì @  •D?d Hÿð}à• @  –D?d ˆÿð8ˆâk @  uÐñ—D?d Èÿð‘þ; @   ˜D?d ñÞJ3 @   ™D?d `ñ.5éJ @   šD?d  ñÀë´ @   ›D?d àñ š©x @   œD?d ñÝÒ% @   D?d `ñ-­ßé @   žD?d  ñ XÝ @   ŸD?d àñÙ©š  @    D?d ñDí:Ê @  ! ¡D?d `ñ´’À³ @  " ¢D?d  ñ”gÂM @  # £D?d àñ—=€ @  $ ¤D?d ñGu i @  % ¥D?d `ñ· ö @  & ¦D?d  ñ—ÿôî @  ' §D?d àñNñ’ @  ( ¨D?d ñ @  ) ©D?d `ñîøä @  * ªD?d  ñΊú @  + «D?d àñÍиÖ @  , ¬D?d ñ˜4> @  - ­D?d `ñíçÎG @  . ®D?d  ñÍ̹ @  / ¯D?d àñ•R•É @  0 °D?d ñ5 @  1 ±D?d `ñøiÏq @  2 ²D?d  ñØœÍ @  3 ³D?d àñÛÆC @  4 ´D?d ñ Ž« @  5 µD?d `ñûñùÒ @  6 ¶D?d  ñÛû, @  7 ·D?d àñKµþP @  8 ¸D?d ñJrM @  9 ¹D?d `ñ5ˆ4 @  : ºD?d  ñ¯ÀŠÊ @  ; »D?d àñ¬šÈ @  < ¼D?d ñ|ÒDî @  = ½D?d ` ñŒ­¾— @  > ¾D?d   ñ¬X¼i @  ? ¿D?d à ñ&þèö @  @ ÀD?d ñ»ºH7 @  A ÁD?d ` ñKŲN @  B ÂD?d   ñk0°° @  C ÃD?d à ñhjò| @  D ÄD?d ñ¸"~” @  E ÅD?d ` ñH]„í @  F ÆD?d   ñh¨† @  G ÇD?d à ñøƒo @  H ÈD?d ñáWp` @  I ÉD?d ` ñ(Š @  J ÊD?d   ñ1݈ç @  K ËD?d à ñ2‡Ê+ @  L ÌD?d ñâÏFà @  M ÍD?d ` ñ°¼º @  N ÎD?d   ñ2E¾D @  O ÏD?d à ñjç4 @  P ÐD?d ñ÷AGõ @  Q ÑD?d `ñ>½Œ @  R ÒD?d  ñ'Ë¿r @  S ÓD?d àñ$‘ý¾ @  T ÔD?d ñôÙqV @  U ÕD?d `ñ¦‹/ @  V ÖD?d  ñ$S‰Ñ @  W ×D?d àñ´âŒ­ @  X ØD?d ñ <0 @  Y ÙD?d `ñúCÊf @  Z ÚD?d  ñڶȘ @  [ ÛD?d àñÙìŠT @  \ ÜD?d ñ ¤¼ @  ] ÝD?d `ñùÛüÅ @  ^ ÞD?d  ñÙ.þ; @  _ ßD?d àñ ß¹' @  ` àD?d ñ›æ @  a áD?d `ñ`ä㟠@  b âD?d  ñ@áa @  c ãD?d àñCK£­ @  d äD?d ñ“/E @  e åD?d `ñc|Õ< @  f æD?d  ñC‰× @  g çD?d àñÓ8Ò¾ @  h èD?d ñÊv!± @  i éD?d `ñ: ÛÈ @  j êD?d  ñüÙ6 @  k ëD?d àñ¦›ú @  l ìD?d ñÉî @  m íD?d `ñ9‘ík @  n îD?d  ñdï• @  o ïD?d àñA$¶å @  p ðD?d ñÜ`$ @  q ñD?d `ñ,ì] @  r òD?d  ñ êî£ @  s óD?d àñ°¬o @  t ôD?d ñßø ‡ @  u õD?d `ñ/‡Úþ @  v öD?d  ñrØ @  w ÷D?d àñŸÃÝ| @  x øD?d ñ«±¢3 @  ƒ E?d àñ=ëàÿ @  „ E?d ñí£l @  … E?d `ñÜ–n @  † E?d  ñ=)” @  ‡ E?d àñ­˜‘ì @  ˆ E?d ñ´Öbã @  ‰  E?d `ñD©˜š @  Š  E?d  ñd\šd @  ‹  E?d àñgب @  Œ  E?d ñ·NT@ @    E?d `ñG1®9 @  Ž E?d  ñgĬÇ @   E?d àñ?„õ· @   E?d ñ¢ÀUv @  ‘ E?d `ñR¿¯ @  ’ E?d  ñrJ­ñ @  “ E?d àñqï= @  ” E?d ñ¡XcÕ @  • E?d `ñQ'™¬ @  – E?d  ñqÒ›RuÐ ñ @  — E?d àñácž. @  ˜ E?d 8 ñh@H @  ™ E?d x ñ`º1 @  š E?d ¸ ñ@â¸Ï @  › E?d ø ñC¸ú @  œ E?d 8!ñ“ðvë @   E?d x!ñcŒ’ @  ž E?d ¸!ñCzŽl @  Ÿ E?d ø!ñ—‹Ép @     E?d 8"ñ Ïi± @  ¡ !E?d x"ñú°“È @  ¢ "E?d ¸"ñÚE‘6 @  £ #E?d ø"ñÙÓú @  ¤ $E?d 8#ñ W_ @  ¥ %E?d x#ñù(¥k @  ¦ &E?d ¸#ñÙݧ• @  § 'E?d ø#ñIl¢é @  ¨ (E?d 8$ñP"Qæ @  © )E?d x$ñ ]«Ÿ @  ª *E?d ¸$ñ€¨©a @  « +E?d ø$ñƒòë­ @  ¬ ,E?d 8%ñSºgE @  ­ -E?d x%ñ£Å< @  ® .E?d ¸%ñƒ0ŸÂ @  ¯ /E?d ø%ñÛpƲ @  ° 0E?d 8&ñF4fs @  ± 1E?d x&ñ¶Kœ  @  ² 2E?d ¸&ñ–¾žô @  ³ 3E?d ø&ñ•äÜ8 @  ´ 4E?d 8'ñE¬PÐ @  µ 5E?d x'ñµÓª© @  ¶ 6E?d ¸'ñ•&¨W @  · 7E?d ø'ñ—­+ @  ¸ 8E?d 8(ñ1h!6 @  ¹ 9E?d x(ñÁÛO @  º :E?d ¸(ñáâÙ± @  » ;E?d ø(ñ⸛} @  ¼ E?d ¸)ñâzï @  ¿ ?E?d ø)ñhÜ» @  À @E?d 8*ñõ˜L @  Á AE?d x*ñçá5 @   BE?d ¸*ñ%ãË @  à CE?d ø*ñ&H¡ @  Ä DE?d 8+ñö-ï @  Å EE?d x+ñ×– @  Æ FE?d ¸+ñ&ŠÕh @  Ç GE?d ø+ñ¶;Ð @  È HE?d 8,ñ¯u# @  É IE?d x,ñ_ Ùb @  Ê JE?d ¸,ñÿÛœ @  Ë KE?d ø,ñ|¥™P @  Ì LE?d 8-ñ¬í¸ @  Í ME?d x-ñ\’ïÁ @  Î NE?d ¸-ñ|gí? @  Ï OE?d ø-ñ$'´O @  Ð PE?d 8.ñ¹cŽ @  Ñ QE?d x.ñIî÷ @  Ò RE?d ¸.ñiéì  @  Ó SE?d ø.ñj³®Å @  Ô TE?d 8/ñºû"- @  Õ UE?d x/ñJ„ØT @  Ö VE?d ¸/ñjqÚª @  × WE?d ø/ñúÀßÖ @  Ø XE?d 80ñDcd @  Ù YE?d x0ñ´a™ @  Ú ZE?d ¸0ñ””›ã @  Û [E?d ø0ñ—ÎÙ/ @  Ü \E?d 81ñG†UÇ @  Ý ]E?d x1ñ·ù¯¾ @  Þ ^E?d ¸1ñ— ­@ @  ß _E?d ø1ñCýê\ @  à `E?d 82ñÞ¹J @  á aE?d x2ñ.ưä @  â bE?d€ ¸2ñz𮼠@  ‘ cE?d ø2ñ˜ë¤Y @  ‘ dE?d 83ñH£(± @  ‘ eE?d x3ñ}•)% @  ‘ fE?d ¸3ñ]`+Û @  ‘ gE?d ø3ñcqÝ @  ‘ hE?d 84ñ-‚Ò @  ‘ iE?d x4ñ$à'Ñ @  ‘ jE?d ¸4ñ%/ @  ‘ kE?d ø4ñœ @  ‘ lE?d 85ñNæ @  ‘ mE?d x5ñ'xr @  ‘ nE?d ¸5ñŒ @  ‘ oE?d ø5ñ<Þ+f @  ‘ pE?d 86ñ¡š‹§ @  ‘ qE?d x6ñ2öD @  ‘ rE?d ¸6ñº @  ‘ sE?d ø6ñÔ«› @  ‘ tE?d 87ñX's @  ‘ uE?d x7ñ1n&ç @  ‘ vE?d ¸7ñ›$ @  ‘ wE?d ø7ñO˜~ @  ‘ xE?d 88ñ{gò @  ‘ yE?d x8ñEªW @  ‘ zE?d ¸8ñe_Uÿ @  ‘ {E?d ø8ñ£LìÞ @  ‘ |E?d 89ñs`6 @  ‘ }E?d x9ñF2a¢ @  ‘ ~E?d ¸9ñfÇc\ @  ‘ E?d ø9ñ-µ#é @  ‘ €E?d 8:ñ°ñƒ( @  ‘ E?d x:ñ2›?{ @  ‘ ‚E?d ¸:ñn=… @  ‘! ƒE?d ø:ñÔ}„¤ @  ‘" „E?d 8;ñ5L @  ‘# …E?d x;ñ1 Ø @  ‘$ †E?d ¸;ñö & @  ‘% ‡E?d ø;ñOõQ  @  ‘& ˆE?d 8<ñV»¢/ @  ‘' ‰E?d x<ñhv, @  ‘( ŠE?d ¸<ñHƒÒ @  ‘) ‹E?d ø<ñ޼ó @  ‘* ŒE?d 8=ñ^Ø0 @  ‘+ E?d x=ñkî1 @  ‘, ŽE?d ¸=ñK3q @  ‘- E?d ø=ñpH › @  ‘. E?d 8>ñí «Z @  ‘/ ‘E?d x>ñ~`0¹ @  ‘0 ’E?d ¸>ñ^•2G @  ‘1 “E?d ø>ñ˜†‹f @  ‘2 ”E?d 8?ñHÎŽ @  ‘3 •E?d x?ñ}ø @  ‘4 –E?duÐ@ñ7 ¸?ñ] ä @  ‘5 —E?d ø?ñø`eâ @  ‘6˜E?d P@ñ;ÌßÞ @  ‘7™E?d @ñ§eoý @  ‘8šE?d Ð@ñ%ôx# @  ‘9›E?d Añ±>Z4 @  ‘:œE?d PAñ3¯Mê @  ‘;E?d Añ¤ýY^ @  ‘<žE?d ÐAñ&lN€ @  ‘=ŸE?d BñŸ]ø© @  ‘> E?d PBñÌïw @  ‘?¡E?d Bñ“Å@– @  ‘@¢E?d ÐBñTWH @  ‘A£E?d Cñ…žu_ @  ‘B¤E?d PCñb @  ‘C¥E?d Cñ]v5 @  ‘D¦E?d ÐCñÌaë @  ‘E§E?d Dñ×ß< @  ‘F¨E?d PDñUÈâ @  ‘G©E?d DñÉ(xÁ @  ‘HªE?d ÐDñK¹o @  ‘I«E?d EñßsM @  ‘J¬E?d PEñ]âZÖ @  ‘K­E?d EñʰNb @  ‘L®E?d ÐEñH!Y¼ @  ‘M¯E?d Fñl§ÖI @  ‘N°E?d PFñî6Á— @  ‘O±E?d Fñß>OT @  ‘P²E?d ÐFñ]¯XŠ @  ‘Q³E?d GñÉez @  ‘R´E?d PGñKômC @  ‘SµE?d Gñܦy÷ @  ‘T¶E?d ÐGñ^7n) @  ‘U·E?d Hñ¶Z¯ì @  ‘V¸E?d PHñ4˸2 @  ‘W¹E?d Hñ¨b @  ‘XºE?d ÐHñ*óÏ @  ‘Y»E?d Iñ¾9=Ø @  ‘Z¼E?d PIñ<¨* @  ‘[½E?d Iñ«ú>² @  ‘\¾E?d ÐIñ)k)l @  ‘]¿E?d Jñ` ŠT @  ‘^ÀE?d PJñ⛊ @  ‘_ÁE?d Jñ•4ù @  ‘`ÂE?d ÐJñ@#' @  ‘aÃE?d KñÔÎ0 @  ‘bÄE?d PKñV_î @  ‘cÅE?d KñÁ Z @  ‘dÆE?d ÐKñCœ„ @  ‘eÇE?d Lñ†@«S @  ‘fÈE?d PLñѼ @  ‘gÉE?d Lñ˜x ® @  ‘hÊE?d ÐLñép @  ‘iËE?d MñŽ#9g @  ‘jÌE?d PMñ ².¹ @  ‘kÍE?d Mñ›à:  @  ‘lÎE?d ÐMñq-Ó @  ‘mÏE?d Nñ=÷¢& @  ‘nÐE?d PNñ¿fµø @  ‘oÑE?d NñŽn;; @  ‘pÒE?d ÐNñ ÿ,å @  ‘qÓE?d Oñ˜5ò @  ‘rÔE?d POñ¤, @  ‘sÕE?d Oñö ˜ @  ‘tÖE?d ÐOñgF @  ‘u×E?d Pñm+ë, @  ‘vØE?d PPñïºüò @  ‘wÙE?d PñsLÑ @  ‘xÚE?d ÐPññ‚[ @  ‘yÛE?d QñeHy @  ‘zÜE?d PQñçÙnÆ @  ‘{ÝE?d Qñp‹zr @  ‘|ÞE?d ÐQñòm¬ @  ‘}ßE?d RñK+Û… @  ‘~àE?d PRñɺÌ[ @  ‘áE?d Rñ¤åS‹ @  ‘€âE?d ÐRñ&tDU @  ‘ãE?d Sñ²¾fB @  ‘‚äE?d PSñ0/qœ @  ‘ƒåE?d Sñ§}e( @  ‘„æE?d ÐSñ%ìrö @  ‘…çE?d Tñà0Ì! @  ‘†èE?d PTñb¡Ûÿ @  ‘‡éE?d TñþkÜ @  ‘ˆêE?d ÐTñ|™| @  ‘‰ëE?d UñèS^ @  ‘ŠìE?d PUñjÂIË @  ‘‹íE?d Uñý] @  ‘ŒîE?d ÐUñJ¡ @  ‘ïE?d Vñ[‡ÅT @  ‘ŽðE?d PVñÙÒŠ @  ‘ñE?d Vñè\I @  ‘òE?d ÐVñjK— @  ‘‘óE?d WñþEi€ @  ‘’ôE?d PWñ|Ô~^ @  ‘“õE?d Wñë†jê @  ‘”öE?d ÐWñi}4 @  ‘•÷E?d Xñz¼ñ @  ‘–øE?d PXñë«/ @  ‘—ùE?d XñŸB  @  ‘˜úE?d ÐXñÓ Ò @  ‘™ûE?d Yñ‰.Å @  ‘šüE?d PYñ ˆ9 @  ‘›ýE?d YñœÚ-¯ @  ‘œþE?d ÐYñK:q @  ‘ÿE?d Zñ‡©­ò @  ‘žF?d PZñ8º, @  ‘ŸF?d Zñ%6_ @  ‘ F?d ÐZñ§§ @  ‘¡F?d [ñ3m&– @  ‘¢F?d P[ñ±ü1H @  ‘£F?d [ñ&®%ü @  ‘¤F?d Ð[ñ¤?2" @  ‘¥F?d \ñaãŒõ @  ‘¦F?d P\ñãr›+ @  ‘§ F?d \ñÛ+ @  ‘¨ F?d Ð\ñýJ<Ö @  ‘© F?d ]ñi€Á @  ‘ª F?d P]ñë  @  ‘« F?d ]ñ|C« @  ‘¬F?d Ð]ñþÒ u @  ‘­F?d ^ñÚT…€ @  ‘®F?d P^ñXÅ’^ @  ‘¯F?d ^ñiÍ @  ‘°F?d Ð^ñë\ C @  ‘±F?d _ñ–)T @  ‘²F?d P_ñý>Š @  ‘³F?d _ñjU*> @  ‘uÐ`ñ´F?d Ð_ñ*mÚ5 @  ‘µF?d (`ñH"u @  ‘¶F?d h`ñÊ–5« @  ‘·F?d ¨`ñV?…ˆ @  ‘¸F?d è`ñÔ®’V @  ‘¹F?d (añ@d°A @  ‘ºF?d hañÂõ§Ÿ @  ‘»F?d ¨añU§³+ @  ‘¼F?d èañ×6¤õ @  ‘½F?d (bñnÜ @  ‘¾ F?d hbñì– @  ‘¿!F?d ¨bñbŸªã @  ‘À"F?d èbñà½= @  ‘Á#F?d (cñtÄŸ* @  ‘Â$F?d hcñöUˆô @  ‘Ã%F?d ¨cñaœ@ @  ‘Ä&F?d ècñã–‹ž @  ‘Å'F?d (dñ&J5I @  ‘Æ(F?d hdñ¤Û"— @  ‘Ç)F?d ¨dñ8r’´ @  ‘È*F?d èdñºã…j @  ‘É+F?d (eñ.)§} @  ‘Ê,F?d heñ¬¸°£ @  ‘Ë-F?d ¨eñ;ê¤ @  ‘Ì.F?d èeñ¹{³É @  ‘Í/F?d (fñý<< @  ‘Î0F?d hfñl+â @  ‘Ï1F?d ¨fñ.d¥! @  ‘Ð2F?d èfñ¬õ²ÿ @  ‘Ñ3F?d (gñ8?è @  ‘Ò4F?d hgñº®‡6 @  ‘Ó5F?d ¨gñ-ü“‚ @  ‘Ô6F?d ègñ¯m„\ @  ‘Õ7F?d (hñGE™ @  ‘Ö8F?d hhñÅ‘RG @  ‘×9F?d ¨hñY8âd @  ‘Ø:F?d èhñÛ©õº @  ‘Ù;F?d (iñOc×­ @  ‘ÚF?d èiñØ1à @  ‘Ý?F?d (jñ‘P`! @  ‘Þ@F?d hjñÁwÿ @  ‘ßAF?d ¨jñ3ÏÞŒ @  ‘àBF?d èjñ±^ÉR @  ‘áCF?d (kñ%”ëE @  ‘âDF?d€ hkñfB › @  ’EF?d ¨kñQW @  ’FF?d èkñ’À@Ø @  ’GF?d (lñ’Uâ @  ’HF?d hlñÄ< @  ’IF?d ¨lñBßýe @  ’JF?d èlñÀNê» @  ’KF?d (mñš6—Ö @  ’LF?d hmñ§€ @  ’ MF?d ¨mñJ¼oQ @  ’ NF?d èmñÈ-x @  ’ OF?d (nñ)â — @  ’ PF?d hnñ«sI @  ’ QF?d ¨nñùhô @  ’RF?d ènñ{ùãÎ @  ’SF?d (oñŒ  C @  ’TF?d hoñ±· @  ’UF?d ¨oñ\ªXÄ @  ’VF?d èoñÞ;O @  ’WF?d (pñy>E @  ’XF?d hpñû¯RC @  ’YF?d ¨pñ©´½ @  ’ZF?d èpñ+%ªÄ @  ’[F?d (qñq]ש @  ’\F?d hqñóÌÀw @  ’]F?d ¨qñ¡×/. @  ’^F?d èqñ#F8ð @  ’_F?d (rñ_>u4 @  ’`F?d hrñݯbê @  ’aF?d ¨rñ´³ @  ’bF?d èrñ %šm @  ’cF?d (sñëúþP @  ’ dF?d hsñikéŽ @  ’!eF?d ¨sñ;p× @  ’"fF?d èsñ¹á  @  ’#gF?d (tñ¹tT3 @  ’$hF?d htñ;åCí @  ’%iF?d ¨tñiþ¬´ @  ’&jF?d ètñëo»j @  ’'kF?d (uñ±Æ @  ’(lF?d huñ3†ÑÙ @  ’)mF?d ¨uña>€ @  ’*nF?d èuñã )^ @  ’+oF?d (vñÃ]F @  ’,pF?d hvñ€RJ˜ @  ’-qF?d ¨vñÒI¥Á @  ’.rF?d èvñPز @  ’/sF?d (wñ§ñ’ @  ’0tF?d hwñ%æL @  ’1uF?d ¨wñw‹  @  ’2vF?d èwñõË @  ’3wF?d (xñØ>$ã @  ’4xF?d hxñZ¯3= @  ’5yF?d ¨xñ´Üd @  ’6zF?d èxñŠ%˺ @  ’7{F?d (yñÐ]¶× @  ’8|F?d hyñRÌ¡  @  ’9}F?d ¨yñ×NP @  ’:~F?d èyñ‚FYŽ @  ’;F?d (zñ¨UÉ @  ’<€F?d hzñ‘9B @  ’=F?d ¨zñÃ"­N @  ’>‚F?d èzñA³º @  ’?ƒF?d ({ñ kØ? @  ’@„F?d h{ñ‹úÏá @  ’A…F?d ¨{ñÙá ¸ @  ’B†F?d è{ñ[p7f @  ’C‡F?d (|ñ[år\ @  ’DˆF?d h|ñÙte‚ @  ’E‰F?d ¨|ñ‹oŠÛ @  ’FŠF?d è|ñ þ @  ’G‹F?d (}ñS†àh @  ’HŒF?d h}ñÑ÷¶ @  ’IF?d ¨}ñƒ ï @  ’JŽF?d è}ñ1 @  ’KF?d (~ñàR{) @  ’LF?d h~ñbÃl÷ @  ’M‘F?d ¨~ñ0؃® @  ’N’F?d è~ñ²I”p @  ’O“F?d (ñE×ý @  ’P”F?d hñÇÀ# @  ’Q•F?d ¨ñuЀñ'•/z @  ’R–F?d èñj KØ @  ’S€—F?d @€ñn™ @  ’T€˜F?d €€ñ=›g @  ’U€™F?d À€ñÍäç @  ’V€šF?d ñ¬kö @  ’W€›F?d @ñ ­ @  ’X€œF?d €ñ5øS @  ’Y€F?d ÀñŇu* @  ’Z€žF?d ‚ñXÃÕë @  ’[€ŸF?d @‚ñ;n/0 @  ’\€ F?d €‚ñ›-Î @  ’]€¡F?d À‚ñëä×· @  ’^€¢F?d ƒñ;¬[_ @  ’_€£F?d @ƒñª¤T @  ’`€¤F?d €ƒñ¯_¦ª @  ’a€¥F?d Àƒñ_ \Ó @  ’b€¦F?d „ñFn¯Ü @  ’c€§F?d @„ñÝ$7 @  ’d€¨F?d €„ñýÑ É @  ’e€©F?d À„ñ ®ö° @  ’f€ªF?d …ñÝæzX @  ’g€«F?d @…ñÕGœ @  ’h€¬F?d €…ñõ²žý @  ’i€­F?d À…ñÍd„ @  ’j€®F?d †ñ˜‰ÄE @  ’k€¯F?d @†ñf“B @  ’l€°F?d €†ñFf¼ @  ’m€±F?d À†ñ¶ÿÅ @  ’n€²F?d ‡ñfQs- @  ’o€³F?d @‡ñÃQ«– @  ’p€´F?d €‡ñ㤩h @  ’q€µF?d À‡ñÛS @  ’r€¶F?d ˆñ'$ß  @  ’s€·F?d @ˆñ¼n~ç @  ’t€¸F?d €ˆñœ›| @  ’u€¹F?d Àˆñlä†` @  ’v€ºF?d ‰ñ¼¬ ˆ @  ’w€»F?d @‰ñ´ ìÓ @  ’x€¼F?d €‰ñ”øî- @  ’y€½F?d À‰ñd‡T @  ’z€¾F?d Šñùô• @  ’{€¿F?d @Šñj>[_ @  ’|€ÀF?d €ŠñJËY¡ @  ’}€ÁF?d ÀŠñº´£Ø @  ’~€ÂF?d ‹ñjü/0 @  ’€ÃF?d @‹ñ“«æ˜ @  ’€€ÄF?d €‹ñ³^äf @  ’€ÅF?d À‹ñC! @  ’‚€ÆF?d ŒñZoí @  ’ƒ€ÇF?d @ŒñÁ%Lû @  ’„€ÈF?d €ŒñáÐN @  ’…€ÉF?d ÀŒñ¯´| @  ’†€ÊF?d ñÁç8” @  ’‡€ËF?d @ñÉFÞÏ @  ’ˆ€ÌF?d €ñé³Ü1 @  ’‰€ÍF?d ÀñÌ&H @  ’Š€ÎF?d Žñ„ˆ†‰ @  ’‹€ÏF?d @Žñz’EŽ @  ’Œ€ÐF?d €ŽñZgGp @  ’€ÑF?d ÀŽñª½  @  ’Ž€ÒF?d ñzP1á @  ’€ÓF?d @ñßPéZ @  ’€ÔF?d €ñÿ¥ë¤ @  ’‘€ÕF?d ÀñÚÝ @  ’’€ÖF?d ñ±­o @  ’“€×F?d @ñ*N „ @  ’”€ØF?d €ñ »z @  ’•€ÙF?d ÀñúÄô @  ’–€ÚF?d ‘ñ*Œxë @  ’—€ÛF?d @‘ñ"-ž° @  ’˜€ÜF?d €‘ñØœN @  ’™€ÝF?d À‘ñò§f7 @  ’š€ÞF?d ’ñoãÆö @  ’›€ßF?d @’ñ N<- @  ’œ€àF?d €’ñ,»>Ó @  ’€áF?d À’ñÜÄĪ @  ’ž€âF?d “ñ ŒHB @  ’Ÿ€ãF?d @“ñ¸Š·I @  ’ €äF?d €“ñ˜µ· @  ’¡€åF?d À“ñhOÎ @  ’¢€æF?d ”ñqN¼Á @  ’£€çF?d @”ñê* @  ’¤€èF?d €”ñÊñÔ @  ’¥€éF?d À”ñ:Žå­ @  ’¦€êF?d •ñêÆiE @  ’§€ëF?d @•ñâg @  ’¨€ìF?d €•ñÂ’à @  ’©€íF?d À•ñ2íw™ @  ’ª€îF?d –ñ¯©×X @  ’«€ïF?d @–ñQ³_ @  ’¬€ðF?d €–ñqF¡ @  ’­€ñF?d À–ñ9ìØ @  ’®€òF?d —ñQq`0 @  ’¯€óF?d @—ñôq¸‹ @  ’°€ôF?d €—ñÔ„ºu @  ’±€õF?d À—ñ$û@  @  ’²€öF?d ˜ñÌ @  ’³€÷F?d @˜ñ‹Nmú @  ’´€øF?d €˜ñ«»o @  ’µ€ùF?d À˜ñ[Ä•} @  ’¶€úF?d ™ñ‹Œ• @  ’·€ûF?d @™ñƒ-ÿÎ @  ’¸€üF?d €™ñ£Øý0 @  ’¹€ýF?d À™ñS§I @  ’º€þF?d šñÎ㧈 @  ’»€ÿF?d @šñ?¿IÜ @  ’¼€G?d €šñJK" @  ’½€G?d Àšñï5±[ @  ’¾€G?d ›ñ?}=³ @  ’¿€G?d @›ñ%|Ä* @  ’À€G?d €›ñ‰ÆÔ @  ’Á€G?d À›ñõö<­ @  ’€G?d œñì¸Ï¢ @  ’ÀG?d @œñwònI @  ’Ä€G?d €œñWl· @  ’Å€ G?d Àœñ§x–Î @  ’Æ€ G?d ñw0& @  ’Ç€ G?d @ñ‘ü} @  ’È€ G?d €ñ_dþƒ @  ’É€ G?d Àñ¯ú @  ’Ê€G?d žñ2_¤; @  ’Ë€G?d @žñÌEg< @  ’Ì€G?d €žñì°e @  ’Í€G?d ÀžñÏŸ» @  ’΀G?d Ÿñ̇S @  ’Ï€G?d @Ÿñi‡Ëè @  ’ЀG?d €ŸñIrÉ @  ’Ñ€GuРñ?d ÀŸñ¹ 3o @  ’Ò€G?d  ñµ†žu @  ’ÓG?d X ñ.Ì?ž @  ’ÔG?d ˜ ñ9=` @  ’ÕG?d Ø ñþFÇ @  ’ÖG?d ¡ñ.Kñ @  ’×G?d X¡ñ&¯­ª @  ’ØG?d ˜¡ñZ¯T @  ’ÙG?d Ø¡ñö%U- @  ’ÚG?d ¢ñkaõì @  ’ÛG?d X¢ñÌ7 @  ’Ü G?d ˜¢ñ(9 É @  ’Ý!G?d Ø¢ñØF÷° @  ’Þ"G?d £ñ{X @  ’ß#G?d X£ñ¼„S @  ’à$G?d ˜£ñœý†­ @  ’á%G?d Ø£ñl‚|Ô @  ’â&G?d€ ¤ñ“} @  “'G?d X¤ñ{z¿ @  “(G?d ˜¤ñ[ñxA @  “)G?d ؤñnÇyÕ @  “*G?d ¥ñ¾õ= @  “+G?d X¥ñxœL @  “,G?d ˜¥ñXiNâ @  “-G?d Ø¥ñf¤ëá @  “.G?d ¦ñûàK  @  “ /G?d X¦ñÀ³sÊ @  “ 0G?d ˜¦ñàFq4 @  “ 1G?d ئñÕpp  @  “ 2G?d §ñ8üH @  “ 3G?d X§ñÃ+Ei @  “4G?d ˜§ñãÞG— @  “5G?d اñp²Üt @  “6G?d ¨ñDMPi @  “7G?d X¨ñN o @  “8G?d ˜¨ñ:»‘ @  “9G?d بñ  @  “:G?d ©ñßÅ…í @  “;G?d X©ñÖ<Ì @  “2 @  “=G?d Ø©ñî›1 @  “>G?d ªñšª;ð @  “?G?d XªñÌ/× @  “@G?d ˜ªñìë-) @  “AG?d تñÙÝ,½ @  “BG?d «ñ • U @  “CG?d X«ñ²j @  “€DG?d ˜«ñ’óhö @  “€EG?d Ø«ñ™Ô¥ @  “ €FG?d ¬ñ ×'ª @  “!€GG?d X¬ñWÔ}¬ @  “"€HG?d ˜¬ñw!R @  “#€IG?d جñB~Æ @  “$€JG?d ­ñ’_ò. @  “%€KG?d X­ñTLK @  “&€LG?d ˜­ñt¹Iñ @  “'€MG?d Ø­ñJtìò @  “(€NG?d ®ñ×0L3 @  “)€OG?d X®ñìctÙ @  “*€PG?d ˜®ñÌ–v' @  “+€QG?d Ø®ñù w³ @  “,€RG?d ¯ñ)èû[ @  “-€SG?d X¯ñïûBz @  “.€TG?d ˜¯ñÏ@„ @  “/€UG?d دñ\bÛg @  “0€VG?d °ñâ¼gÕ @  “1€WG?d X°ñ¼¿=Ó @  “2€XG?d ˜°ñœJ?- @  “3€YG?d ذñ©|>¹ @  “4€ZG?d ±ñy4²Q @  “5€[G?d X±ñ¿' p @  “6€\G?d ˜±ñŸÒ Ž @  “7€]G?d رñ¡¬ @  “8€^G?d ²ñ<[ L @  “9€_G?d X²ñš¿ z @  “:€`G?d ˜²ñºJ„ @  “;€aG?d زñ| @  “<€bG?d ³ñ_4‚ø @  “=€cG?d X³ñ™';Ù @  “>€dG?d ˜³ñ¹Ò9' @  “?€eG?d سñ•¿ƒæ @  “@€fG?d ´ñŒñpé @  “A€gG?d X´ñÒò*ï @  “B€hG?d ˜´ñò( @  “C€iG?d Ø´ñÇ1)… @  “D€jG?d µñy¥m @  “E€kG?d XµñÑjL @  “F€lG?d ˜µññŸ² @  “G€mG?d صñÏR»± @  “H€nG?d ¶ñRp @  “I€oG?d X¶ñiE#š @  “J€pG?d ˜¶ñI°!d @  “K€qG?d ضñ|† ð @  “L€rG?d ·ñ¬Î¬ @  “M€sG?d X·ñjÝ9 @  “N€tG?d ˜·ñJ(Ç @  “O€uG?d Ø·ñÙDŒ$ @  “P€vG?d ¸ñí»9 @  “Q€wG?d X¸ñ³¸Z? @  “R€xG?d ˜¸ñ“MXÁ @  “S€yG?d ظñ¦{YU @  “T€zG?d ¹ñv3Õ½ @  “U€{G?d X¹ñ° lœ @  “V€|G?d ˜¹ñÕnb @  “W€}G?d عñ®Ëa @  “X€~G?d ºñ3\k  @  “Y€G?d Xºñx.+ @  “Z€€G?d ˜ºñXÛ)ë @  “[€G?d غñmí( @  “\€‚G?d »ñ½¥¤— @  “]€ƒG?d X»ñ{¶¶ @  “^€„G?d ˜»ñ[CH @  “_€…G?d Ø»ñÙ)£ @  “`€†G?d ¼ñÀgP @  “a€‡G?d X¼ñžd  @  “b€ˆG?d ˜¼ñ¾‘ì @  “c€‰G?d ؼñ‹§ x @  “d€ŠG?d ½ñ[ï… @  “e€‹G?d X½ñü<± @  “f€ŒG?d ˜½ñ½ >O @  “g€G?d ؽñƒÄ›L @  “h€ŽG?d ¾ñ€; @  “i€G?d X¾ñ%Óg @  “j€G?d ˜¾ñ&™ @  “k€‘G?d ؾñ0  @  “l€’G?d ¿ñàXŒå @  “m€“G?d X¿ñ&K5Ä @  “n€”G?d ˜¿ñ¾7: @uÐÀñ  “o€•G?d Ø¿ñèRߥ @  “p–G?d 0ÀñŒ¢Ž÷ @  “q—G?d pÀñÒ¡Ôñ @  “r˜G?d °ÀñòTÖ @  “s™G?d ðÀñÇb×› @  “tšG?d 0Áñ*[s @  “u›G?d pÁñÑ9âR @  “vœG?d °ÁññÌଠ@  “wG?d ðÁñÏE¯ @  “xžG?d 0ÂñREån @  “yŸG?d pÂñô¡äX @  “z G?d °ÂñÔTæ¦ @  “{¡G?d ðÂñábç2 @  “|¢G?d 0Ãñ1*kÚ @  “}£G?d pÃñ÷9Òû @  “~¤G?d °Ãñ×ÌÐ @  “¥G?d ðÃñ÷Zõ @  “€¦G?d 0Äñ¹©ú @  “§G?d pÄñ_ºóü @  “‚¨G?d °ÄñOñ @  “ƒ©G?d ðÄñJyð– @  “„ªG?d 0Åñš1|~ @  “…«G?d pÅñ\"Å_ @  “†¬G?d °Åñ|×Ç¡ @  “‡­G?d ðÅñBb¢ @  “ˆ®G?d 0Æñß^Âc @  “‰¯G?d pÆñä ú‰ @  “аG?d °ÆñÄøøw @  “‹±G?d ðÆññÎùã @  “Œ²G?d 0Çñ!†u  @  “³G?d pÇñç•Ì* @  “Ž´G?d °ÇñÇ`ÎÔ @  “µG?d ðÇñT U7 @  “¶G?d 0Èñ`óÙ* @  “‘·G?d pÈñ>ðƒ, @  “’¸G?d °ÈñÒ @  ““¹G?d ðÈñ+3€F @  “”ºG?d 0Éñû{ ® @  “•»G?d pÉñ=hµ @  “–¼G?d °Éñ·q @  “—½G?d ðÉñ#Pr @  “˜¾G?d 0Êñ¾²³ @  “™¿G?d pÊñè ¦” @  “šÀG?d °ÊñÈU¤j @  “›ÁG?d ðÊñýc¥þ @  “œÂG?d 0Ëñ-+) @  “ÃG?d pËñë87 @  “žÄG?d °ËñËÍ’É @  “ŸÅG?d ðËñI§.š @  “ ÆG?d 0ÌñPéÝ• @  “¡ÇG?d pÌñꇓ @  “¢ÈG?d °Ìñ.…m @  “£ÉG?d ðÌñ)„ù @  “¤ÊG?d 0ÍñËa @  “¥ËG?d pÍñ r±0 @  “¦ÌG?d °Íñ-‡³Î @  “§ÍG?d ðÍñJÍ @  “¨ÎG?d 0Îñ޶  @  “©ÏG?d pÎñµ]Žæ @  “ªÐG?d °Îñ•¨Œ @  “«ÑG?d ðÎñ žŒ @  “¬ÒG?d 0ÏñpÖd @  “­ÓG?d pÏñ¶Å¸E @  “®ÔG?d °Ïñ–0º» @  “¯ÕG?d ðÏñ\!X @  “°ÖG?d 0Ðñ»‚ê @  “±×G?d pÐñåÇì @  “²ØG?d °ÐñÅtÅ @  “³ÙG?d ðÐñðBĆ @  “´ÚG?d 0Ññ Hn @  “µÛG?d pÑñæñO @  “¶ÜG?d °ÑñÆìó± @  “·ÝG?d ðÑñø!V² @  “¸ÞG?d 0Òñeeös @  “¹ßG?d pÒñÃ÷E @  “ºàG?d °Òñãtõ» @  “»áG?d ðÒñÖBô/ @  “¼âG?d 0Óñ xÇ @  “½ãG?d pÓñÀÁæ @  “¾äG?d °Óñàìà @  “¿åG?d ðÓñÌyÙ @  “ÀæG?d 0ÔñÕÏŠÖ @  “ÁçG?d pÔñ‹ÌÐÐ @  “ÂèG?d °Ôñ«9Ò. @  “ÃéG?d ðÔñžÓº @  “ÄêG?d 0ÕñNG_R @  “ÅëG?d pÕñˆTæs @  “ÆìG?d °Õñ¨¡ä @  “ÇíG?d ðÕñ–lAŽ @  “ÈîG?d 0Öñ (áO @  “ÉïG?d pÖñ0{Ù¥ @  “ÊðG?d °ÖñŽÛ[ @  “ËñG?d ðÖñ%¸ÚÏ @  “ÌòG?d 0×ñõðV' @  “ÍóG?d p×ñ3ãï @  “ÎôG?d °×ñíø @  “ÏõG?d ð×ñ€zv @  “ÐöG?d 0Øñ´…ú @  “Ñ÷G?d pØñꆠ @  “ÒøG?d °ØñÊs¢þ @  “ÓùG?d ðØñÿE£j @  “ÔúG?d 0Ùñ/ /‚ @  “ÕûG?d pÙñé–£ @  “ÖüG?d °ÙñÉë”] @  “×ýG?d ðÙñ÷&1^ @  “ØþG?d 0Úñjb‘Ÿ @  “ÙÿG?d pÚñ»DµÉ @  “ÚH?d °Úñ›±·7 @  “ÛH?d ðÚñ®‡¶£ @  “ÜH?d 0Ûñ~Ï:K @  “ÝH?d pÛñ¸Üƒj @  “ÞH?d °Ûñ˜)” @  “ßH?d ðÛñC=Ç @  “àH?d 0Üñ ÎÈ @  “áH?d pÜñ]”Î @  “âH?d€ °Üñû­>‰ @  ” H?d ðÜñ/Úw4 @  ” H?d 0Ýñÿ’ûÜ @  ” H?d pÝñüȹ @  ” H?d °ÝñÜ=»î @  ” H?d ðÝñ,BA— @  ”H?d 0Þñ±áV @  ”H?d pÞñDç†Æ @  ”H?d °Þñd„8 @  ” H?d ðÞñ”m~A @  ” H?d 0ßñD%ò© @  ” H?d pßñG°e @  ” H?d uÐàñ/°ßñgв› @  ” H?d ðßñ—õHâ @  ”H?d HàñŽQ @  ”H?d ˆàñ%8¨ @  ”H?d Èàñ“´/v @  ”H?d áñ1N9 @  ”H?d Háñ³ƒYç @  ”H?d ˆáñ½  @  ”H?d Èáñ,Õ @  ”H?d âñ†T³ @  ”H?d HâñýCm @  ”H?d ˆâñ7% @  ” H?d Èâñµ´ß @  ”!H?d ãñ~ @  ”"H?d Hãñ•ƒiN @  ”#H?d ˆãñ4½>¢ @  ”$H?d Èãñ¶,)| @  ”%H?d äñÝŒ7Ô @  ”&H?d Häñ_  @  ”'H?d ˆäñÑo) @  ” (H?d ÈäñSþ>Ø @  ”!)H?d åññX_— @  ”"*H?d HåñsÉHI @  ”#+H?d ˆåñÒ÷¥ @  ”$,H?d ÈåñPf{ @  ”%-H?d æñ¿ÌE @  ”&.H?d Hæñ=]Rà @  ”'/H?d ˆæñjØ s @  ”(0H?d ÈæñèI7­ @  ”)1H?d çñJïVâ @  ”*2H?d HçñÈ~A< @  ”+3H?d ˆçñi@Ð @  ”,4H?d ÈçñëÑ @  ”-5H?d èñ­À`´ @  ”.6H?d Hèñ/Qwj @  ”/7H?d ˆèñ°%YÖ @  ”08H?d Èèñ2´N @  ”19H?d éñ/G @  ”2:H?d Héñƒ8™ @  ”3;H?d ˆéñ³½ou @  ”4H?d Hêñ\" @  ”7?H?d ˆêñfu|n @  ”8@H?d Èêñääk° @  ”9AH?d ëñFB ÿ @  ”:BH?d HëñÄÓ! @  ”;CH?d ˆëñeíJÍ @  ”<DH?d Èëñç|] @  ”=EH?d ìñŒÜC» @  ”>FH?d HìñMTe @  ”?GH?d ˆìñ.8[û @  ”@HH?d Èìñ¬©L% @  ”AIH?d íñ-j @  ”BJH?d HíñŒž:´ @  ”CKH?d ˆíñ- mX @  ”DLH?d Èíñ¯1z† @  ”EMH?d îñ@›7à @  ”FNH?d Hîñ > @  ”GOH?d ˆîñ•RŽ @  ”HPH?d ÈîñEP @  ”IQH?d ïñµ¸$ @  ”JRH?d Hïñ7)3Á @  ”KSH?d ˆïñ–d- @  ”LTH?d Èïñ†só @  ”MUH?d ðñض"æ @  ”NVH?d HðñZ'58 @  ”OWH?d ˆðñÅS„ @  ”PXH?d ÈðñG Z @  ”QYH?d ññådm @  ”RZH?d HññgõzË @  ”S[H?d ˆññÆË-' @  ”T\H?d ÈññDZ:ù @  ”U]H?d òñ«ðwŸ @  ”V^H?d Hòñ)a`A @  ”W_H?d ˆòñãS+- @  ”X`H?d ÈòñaÂ<ó @  ”YaH?d óñÃd]¼ @  ”ZbH?d HóñAõJb @  ”[cH?d ˆóñàËŽ @  ”\dH?d ÈóñbZ P @  ”]eH?d ôñ úø @  ”^fH?d Hôñ‹k& @  ”_gH?d ˆôñ * @  ”`hH?d Èôñ‡ˆô @  ”aiH?d õñ%.|» @  ”bjH?d Hõñ§¿ke @  ”ckH?d ˆõñ<‰ @  ”dlH?d Èõñ„+W @  ”emH?d öñkºf1 @  ”fnH?d Höñé+qï @  ”goH?d ˆöñ¾®_ @  ”hpH?d Èöñ`4| @  ”•H?d òH‘Ì @  ”Ž–H?d `òÊî† @  ”—H?d  òUš¨® @  ”˜H?d àò× ¿p @  ”‘™H?d òu­Þ? @  ”’šH?d `ò÷<Éá @  ”“›H?d  òVž  @  ””œH?d àòÔ“‰Ó @  ”•H?d ò;9ĵ @  ”–žH?d `ò¹¨Ók @  ”—ŸH?d  òsš˜ @  ”˜ H?d àòñ Ù @  ”™¡H?d òS­î– @  ”š¢H?d `òÑ<ùH @  ”›£H?d  òp®¤ @  ”œ¤H?d àòò“¹z @  ”¥H?d ò™3§Ò @  ”ž¦H?d `ò¢°  @  ”Ÿ§H?d  ò•й @  ” ¨H?d àòA®Þ @  ”¡©H?d òµçÏ‘ @  ”¢ªH?d `ò7vØO @  ”£«H?d  ò–H£ @  ”¤¬H?d àòÙ˜} @  ”¥­H?d òûsÕ @  ”¦®H?d `òyâÂÅ @  ”§¯H?d  ò.g°u @  ”¨°H?d àò¬ö§« @  ”©±H?d òPÆä @  ”ª²H?d `òŒÁÑ: @  ”«³H?d  ò-ÿ†Ö @  ”¬´H?d àò¯n‘ @  ”­µH?d òéð² @  ”®¶H?d `òkîçl @  ”¯·H?d  òôšÉÐ @  ”°¸H?d àòv Þ @  ”±¹H?d òÔ­¿A @  ”²ºH?d ` òV<¨Ÿ @  ”³»H?d   ò÷ÿs @  ”´¼H?d à òu“è­ @  ”µ½H?d òš9¥Ë @  ”¶¾H?d ` ò¨² @  ”·¿H?d   ò"Êìh @  ”¸ÀH?d à ò [û¶ @  ”¹ÁH?d òýšù @  ”ºÂH?d ` ò€l' @  ”»ÃH?d   ò!RÚË @  ”¼ÄH?d à ò£ÃÍ @  ”½ÅH?d òÈcÓ½ @  ”¾ÆH?d ` òJòÄc @  ”¿ÇH?d   òj‡Ëý @  ”ÀÈH?d à òèÜ# @  ”ÁÉH?d òJ°½l @  ”ÂÊH?d ` òÈ!ª² @  ”ÃËH?d   òiý^ @  ”ÄÌH?d à òëŽê€ @  ”ÅÍH?d ò$§æ @  ”ÆÎH?d `ò†µ°8 @  ”ÇÏH?d  òÑ0ˆ @  ”ÈÐH?d àòS¡ÕV @  ”ÉÑH?d òñ´ @  ”ÊÒH?d `òs–£Ç @  ”ËÓH?d  òÒ¨ô+ @  ”ÌÔH?d àòP9ãõ @  ”ÍÕH?d òœ ²à @  ”ÎÖH?d `ò˜¥> @  ”Ï×H?d  òì‹‚ @  ”ÐØH?d àò}œ\ @  ”ÑÙH?d ò¡Ûý @  ”ÒÚH?d `ò#JêÍ @  ”ÓÛH?d  ò‚t½! @  ”ÔÜH?d àòåªÿ @  ”ÕÝH?d òïOç™ @  ”ÖÞH?d `òmÞðG @  ”×ßH?d  ò§ì»+ @  ”ØàH?d àò%}¬õ @  ”ÙáH?d ò‡Ûͺ @  ”ÚâH?d `òJÚd @  ”ÛãH?d  ò¤tˆ @  ”ÜäH?d àò&åšV @  ”ÝåH?d òME„þ @  ”ÞæH?d `òÏÔ“  @  ”ßçH?d  òA¦š, @  ”àèH?d àòÃ7ò @  ”áéH?d òa‘ì½ @  ”âêH?d€ `ò—ÃçÅ @  •ëH?d  ò×¼ø @  •ìH?d àòU-ïÞ @  •íH?d òÎYU @  •îH?d `òý_N‹ @  •ïH?d  òdhcA @  •ðH?d àòæùtŸ @  •ñH?d òŠíJª @  •òH?d `ò|]t @  • óH?d  òl ñu @  • ôH?d àòîšæ« @  • õH?d òmÂ|ü @  • öH?d `òïSk" @  • ÷H?d  ò4$ @  •øH?d àò‘¥3Ú @  •ùH?d òP3 @  •úH?d `òÒ$Ñ @  •ûH?d  ò¶öˆÐ @  •üH?d àò4gŸ @  •ýH?d ò„)… @  •þH?d `òœ>[ @  •ÿH?d  ò d> @  •I?d àòˆõ) @  •I?d òäá) @  •I?d `òfp÷ @  •I?d  ò¬ö @  •I?d àò€–»( @  •I?d ò.^m @  •I?d `ò¬îI³ @  •I?d  òP‰• @  •I?d àòÒK @  • I?d ò«6. @  •  I?d `ò€:!ð @  •! I?d  òäMñ @  •" I?d àòfÜš/ @  •# I?d òL?,¤ @  •$I?d `òή;z @  •%I?d  òW™° @  •&I?d àòÕn @  •'I?d ò¹?[ @  •(I?d `ò;(… @  •)I?d  ò_ú„„uÐ ò @  •*I?d àòÝk“Z @  •+I?d 8 òÇ[v @  •,I?d x ò™VL¨ @  •-I?d ¸ òe1Ž @  •.I?d ø òç P @  •/I?d 8!ò&… @  •0I?d x!ò¤„[ @  •1I?d ¸!òÀó¯Z @  •2I?d ø!òBb¸„ @  •3I?d 8"òh @  •4I?d x"òêÑ @  •5I?d ¸"òî Ç @  •6 I?d ø"òl @  •7!I?d 8#ò$, @  •8"I?d x#ò‚„3ò @  •9#I?d ¸#òæóŸó @  •:$I?d ø#òdbˆ- @  •;%I?d 8$òÊ‹mh @  •<&I?d x$òHz¶ @  •='I?d ¸$ò´}5 @  •>(I?d ø$ò6ì"N @  •?)I?d 8%òHX¹ @  •@*I?d x%òÊÉg @  •A+I?d ¸%ò®¾¸f @  •B,I?d ø%ò,/¯¸ @  •C-I?d 8&òÌ3 @  •D.I?d x&ò„]í @  •E/I?d ¸&òj#' @  •F0I?d ø&òŸû4ù @  •G1I?d 8'òóï Ì @  •H2I?d x'òq~ @  •I3I?d ¸'ò ± @  •J4I?d ø'ò—˜¦Í @  •K5I?d 8(òÀ<š @  •L6I?d x(ò–Q+D @  •M7I?d ¸(òj6db @  •N8I?d ø(òè§s¼ @  •O9I?d 8)ò)si @  •P:I?d x)ò«ƒd· @  •Q;I?d ¸)òÏôȶ @  •RI?d x*òå~= @  •U?I?d ¸*òÇ: @  •V@I?d ø*ò“Vhä @  •WAI?d 8+òÿBVÑ @  •XBI?d x+ò}ÓA @  •YCI?d ¸+ò¤í @  •ZDI?d ø+ò›5úÐ @  •[EI?d 8,ò5Ü• @  •\FI?d x,ò·MK @  •]GI?d ¸,òK*Gm @  •^HI?d ø,òÉ»P³ @  •_II?d 8-òwÖ @  •`JI?d x-ò›™` @  •aKI?d ¸-òÿîÌ  @  •bLI?d ø-ò}Û× @  •cMI?d 8.òWœm\ @  •dNI?d x.òÕ z‚ @  •eOI?d ¸.òL:WH @  •fPI?d ø.òΫ@– @  •gQI?d 8/ò¢¿~£ @  •hRI?d x/ò .i} @  •iSI?d ¸/òDYÅ| @  •jTI?d ø/òÆÈÒ¢ @  •kUI?d 80òϱxZ @  •lVI?d x0òM o„ @  •mWI?d ¸0ò±G ¢ @  •nXI?d ø0ò3Ö7| @  •oYI?d 81òòc7© @  •pZI?d x1òpò w @  •q[I?d ¸1ò…Œv @  •r\I?d ø1ò–›¨ @  •s]I?d 82ò¼÷-# @  •t^I?d x2ò>f:ý @  •u_I?d ¸2ò:æ.ë @  •v`I?d ø2ò¸w95 @  •waI?d 83òÔc @  •xbI?d x3òVòÞ @  •ycI?d ¸3ò2…¼ß @  •zdI?d ø3ò°« @  •{eI?d 84òýND @  •|fI?d x4òœlYš @  •}gI?d ¸4ò` ¼ @  •~hI?d ø4òâšb @  •iI?d 85òx¤ @  •€jI?d x5òýéz @  •kI?d ¸5ò™ž«{ @  •‚lI?d ø5ò¼¥ @  •ƒmI?d 86ò1ì . @  •„nI?d x6ò³}ð @  •…oI?d ¸6ò*J0: @  •†pI?d ø6ò¨Û'ä @  •‡qI?d 87òÄÏÑ @  •ˆrI?d x7òF^ @  •‰sI?d ¸7ò")¢ @  •ŠtI?d ø7ò ¸µÐ @  •‹uI?d 88ò#à/‡ @  •ŒvI?d x8ò¡q8Y @  •wI?d ¸8ò]w @  •ŽxI?d ø8ò߇`¡ @  •yI?d 89ò2`t @  •zI?d x9òœ£wª @  •‘{I?d ¸9òøÔÛ« @  •’|I?d ø9òzEÌu @  •“}I?d 8:òP¦zþ @  •”~I?d x:òÒ7m  @  ••I?d ¸:ò;!8µ @  •–€I?d ø:ò¹°/k @  •—I?d 8;òÕ¤^ @  •˜‚I?d x;òW5€ @  •™ƒI?d ¸;ò3Bª @  •š„I?d ø;ò±Ó½_ @  •›…I?d 8<ò:X @  •œ†I?d x<ò«OÄ @  •‡I?d ¸<òaÌâ @  •žˆI?d ø<òã]< @  •Ÿ‰I?d 8=ò3î0Y @  • ŠI?d x=ò±'‡ @  •¡‹I?d ¸=òÕ‹† @  •¢ŒI?d ø=òW™œX @  •£I?d 8>ò}z*Ó @  •¤ŽI?d x>òÿë=  @  •¥I?d ¸>òfÜÇ @  •¦I?d ø>òäM @  •§‘I?d 8?òˆY9, @  •¨’I?d x?ò È.ò @  •©“I?duÐ@ò7 ¸?òn¿‚ó @  •ª”I?d ø?òì.•- @  •«•I?d P@ò˜%9[ @  •¬–I?d @ò¸Ð;¥ @  •­—I?d Ð@òæÓa£ @  •®˜I?d Aò6›íK @  •¯™I?d PAò¥÷v¨ @  •°šI?d Aò…tV @  •±›I?d ÐAòCÍw @  •²œI?d BòÞUm¶ @  •³I?d PBòëcl" @  •´žI?d BòË–nÜ @  •µŸI?d ÐBòmroê @  •¶ I?d Cò½:ã @  •·¡I?d PCòƒ÷F @  •¸¢I?d Cò£Dÿ @  •¹£I?d ÐCòeýÞ @  •º¤I?d Dò|_Ñ @  •»¥I?d PDòIiE @  •¼¦I?d Dòiœ » @  •½§I?d ÐDò7ŸW½ @  •¾¨I?d Eòç×ÛU @  •¿©I?d PEò˺a” @  •ÀªI?d EòëOcj @  •Á«I?d ÐEò-\ÚK @  •¬I?d Fò°zŠ @  •íI?d PFò….{ @  •Ä®I?d Fò¥Ûyà @  •ůI?d ÐFòžˆA  @  •ưI?d GòNÀÍâ @  •DZI?d PGòp há @  •ȲI?d GòPøj @  •ɳI?d ÐGò–ëÓ> @  •Ê´I?d Hò¢_# @  •˵I?d PHò—"^· @  •̶I?d Hò·×\I @  •Í·I?d ÐHòéÔO @  •θI?d Iò9œŠ§ @  •ϹI?d PIòªðD @  •кI?d IòŠº @  •Ñ»I?d ÐIòLª› @  •Ò¼I?d JòÑR Z @  •Ó½I?d PJòäd Î @  •Ô¾I?d JòÄ‘ 0 @  •Õ¿I?d ÐJò’% @  •ÖÀI?d KòBm‘ÿ @  •×ÁI?d PKò| 4ü @  •ØÂI?d Kò\U6 @  •ÙÃI?d ÐKòšF# @  •ÚÄI?d Lòƒ|, @  •ÛÅI?d PLò¶>}¸ @  •ÜÆI?d Lò–ËF @  •ÝÇI?d ÐLòÈÈ%@ @  •ÞÈI?d Mò€©¨ @  •ßÉI?d PMòšêû @  •àÊI?d Mòº @  •áËI?d ÐMò| ®$ @  •âÌI?d€ Nò ùå @  –ÍI?d PNòôx°X @  –ÎI?d NòÔ²¦ @  –ÏI?d ÐNò*—q¡ @  –ÐI?d OòúßýI @  –ÑI?d POò  0 @  –ÒI?d Oò*UÎ @  –ÓI?d ÐOò"ôã• @  –ÔI?d Pòœ*_' @  – ÕI?d PPòlU¥^ @  – ÖI?d PòL §  @  – ×I?d ÐPò×êK @  – ØI?d Qò¢Š£ @  – ÙI?d PQò÷ÝpÚ @  –ÚI?d Qò×(r$ @  –ÛI?d ÐQòr(ªŸ @  –ÜI?d Ròïl ^ @  –ÝI?d PRòð' @  –ÞI?d Rò?æòÙ @  –ßI?d ÐRò\K @  –àI?d SòŒ„ê @  –áI?d PSò||~“ @  –âI?d Sò\‰|m @  –ãI?d ÐSòT(š6 @  –äI?d TòMfi9 @  –åI?d PTò½“@ @  –æI?d Tò쑾 @  –çI?d ÐTò¦0U @  –èI?d UòÖî¼½ @  –éI?d PUò&‘FÄ @  –êI?d UòdD: @  –ëI?d ÐUò²b»1 @  – ìI?d Vò/&ð @  –!íI?d PVòßYበ@  –"îI?d Vòÿ¬ãw @  –#ïI?d ÐVò¶ p @  –$ðI?d WòÑþ¬˜ @  –%ñI?d PWò!Vá @  –&òI?d WòtT @  –'óI?d ÐWò Õ²D @  –(ôI?d Xò=*>Y @  –)õI?d PXòÍUÄ  @  –*öI?d Xòí ÆÞ @  –+÷I?d ÐXòvêg5 @  –,øI?d Yò¦¢ëÝ @  –-ùI?d PYòVݤ @  –.úI?d Yòv(Z @  –/ûI?d ÐYòÓ(Ëá @  –0üI?d ZòNlk  @  –1ýI?d PZò¾‘Y @  –2þI?d Zòžæ“§ @  –3ÿI?d ÐZòݘHÖ @  –4J?d [ò ÐÄ> @  –5J?d P[òý¯>G @  –6J?d [òÝZ<¹ @  –7J?d Ð[òÕûÚâ @  –8J?d \ò̵)í @  –9J?d P\ò<ÊÓ” @  –:J?d \ò?Ñj @  –;J?d Ð\ò‡up @  –<J?d ]òW=üi @  –= J?d P]ò§B @  –> J?d ]ò‡·î @  –? J?d Ð]ò¶ýw @  –@ J?d ^òò]¶ @  –A J?d P^òð§Ï @  –BJ?d ^òÐx¥1 @  –CJ?d Ð^ò.bf6 @  –DJ?d _òþ*êÞ @  –EJ?d P_òU§ @  –FJ?d _ò. Y @  –uÐ`òGJ?d Ð_ò&ô @  –HJ?d (`ò˜ùAš @  –IJ?d h`òh†»ã @  –JJ?d ¨`òHs¹ @  –KJ?d è`òÓ9ö @  –LJ?d (aòq” @  –MJ?d haòóng @  –NJ?d ¨aòÓûl™ @  –OJ?d èaòvû´" @  –PJ?d (bòë¿ã @  –QJ?d hbòÀîš @  –RJ?d ¨bò;5ìd @  –SJ?d èbòX˜¿ @  –T J?d (còˆÐšW @  –U!J?d hcòx¯`. @  –V"J?d ¨còXZbÐ @  –W#J?d ècòPû„‹ @  –X$J?d (dòIµw„ @  –Y%J?d hdò¹Êý @  –Z&J?d ¨dò™? @  –['J?d èdòu.è @  –\(J?d (eòÒ=¢ @  –])J?d heò"BXy @  –^*J?d ¨eò·Z‡ @  –_+J?d èeò¶±¥Œ @  –`,J?d (fò+õM @  –a-J?d hfòÛŠÿ4 @  –b.J?d ¨fòûýÊ @  –c/J?d èfòe>Í @  –d0J?d (gòÕ-²% @  –e1J?d hgò%RH\ @  –f2J?d ¨gò§J¢ @  –g3J?d ègò ¬ù @  –h4J?d (hò9ù ä @  –i5J?d hhòɆÚ @  –j6J?d ¨hòésØc @  –k7J?d èhòr9yˆ @  –l8J?d (iò¢qõ` @  –m9J?d hiòR @  –n:J?d ¨iòrû ç @  –o;J?d èiò×ûÕ\ @  –pJ?d ¨jòš5 @  –s?J?d èjò ÈbÐ @  –t@J?d (kòÙ€î8 @  –uAJ?d hkò)ÿA @  –vBJ?d ¨kò ¿ @  –wCJ?d èkò«ðä @  –xDJ?d (lòåë @  –yEJ?d hlòèšù’ @  –zFJ?d ¨lòÈoûl @  –{GJ?d èlòS%Z‡ @  –|HJ?d (mòƒmÖo @  –}IJ?d hmòs, @  –~JJ?d ¨mòSç.è @  –KJ?d èmòª°ç@ @  –€LJ?d (nò7ôG @  –MJ?d hnòÇ‹½ø @  –‚NJ?d ¨nòç~¿ @  –ƒOJ?d ènòd| @  –„PJ?d (oòÉ,ðé @  –…QJ?d hoò9S  @  –†RJ?d ¨oò¦n @  –‡SJ?d èoòî5 @  –ˆTJ?d (pò¯ÙR‡ @  –‰UJ?d hpò_¦¨þ @  –ŠVJ?d ¨pòSª @  –‹WJ?d èpòä ë @  –ŒXJ?d (qò4Q‡ @  –YJ?d hqòÄ.}z @  –ŽZJ?d ¨qòäÛ„ @  –[J?d èqòAÛ§? @  –\J?d (ròÜŸþ @  –‘]J?d hrò,àý‡ @  –’^J?d ¨rò ÿy @  –“_J?d èròo¸¢ @  –”`J?d (sò¿ð‰J @  –•aJ?d hsòOs3 @  ––bJ?d ¨sòozqÍ @  –—cJ?d èsògÛ—– @  –˜dJ?d (tò~•d™ @  –™eJ?d htòŽêžà @  –šfJ?d ¨tò®œ @  –›gJ?d ètò5U=õ @  –œhJ?d (uòå± @  –iJ?d huòbKd @  –žjJ?d ¨uò5—Iš @  –ŸkJ?d èuò‘¶‘ @  – lJ?d (vòÕP @  –¡mJ?d hvòìªì) @  –¢nJ?d ¨vòÌ_î× @  –£oJ?d èvò2E-Ð @  –¤pJ?d (wòâ ¡8 @  –¥qJ?d hwòr[A @  –¦rJ?d ¨wò2‡Y¿ @  –§sJ?d èwò:&¿ä @  –¨tJ?d (xòÙ3ù @  –©uJ?d hxòþ¦É€ @  –ªvJ?d ¨xòÞSË~ @  –«wJ?d èxòEj• @  –¬xJ?d (yò•Qæ} @  –­yJ?d hyòe. @  –®zJ?d ¨yòEÛú @  –¯{J?d èyòàÛÆA @  –°|J?d (zò}Ÿf€ @  –±}J?d hzòàœù @  –²~J?d ¨zò­ž @  –³J?d èzò#.%_ @  –´€J?d ({òóf©· @  –µJ?d h{òSÎ @  –¶‚J?d ¨{ò#ìQ0 @  –·ƒJ?d è{ò+M·k @  –¸„J?d (|ò2Dd @  –¹…J?d h|òÂ|¾ @  –º†J?d ¨|ò≼ã @  –»‡J?d è|òyà @  –¼ˆJ?d (}ò©‹‘à @  –½‰J?d h}òYôk™ @  –¾ŠJ?d ¨}òyig @  –¿‹J?d è}òcþ @  –ÀŒJ?d (~òþD0? @  –ÁJ?d h~ò;ÊF @  –ÂŽJ?d ¨~ò.Îȸ @  –ÃJ?d è~òÐÔ ¿ @  –ÄJ?d (òœ‡W @  –Å‘J?d hòðã}. @  –Æ’J?d ¨òuЀò'ÐÐ @  –Ç“J?d èòápE^ @  –È ”J?d @€òΧ* @  –É •J?d €€òÝÕHs @  –Ê –J?d À€ò_D_­ @  –Ë —J?d ò–×ep @  –Ì ˜J?d @òFr® @  –Í ™J?d €òF]÷ @  –Î šJ?d ÀòÄÌŠ) @  –Ï ›J?d ‚ò~å @  –Ð œJ?d @‚òüˆòS @  –Ñ J?d €‚ò®“  @  –Ò žJ?d À‚ò, Ô @  –Ó ŸJ?d ƒòvk9 @  –Ô  J?d @ƒòŸç|ç @  –Õ ¡J?d €ƒòÍü“¾ @  –Ö ¢J?d ÀƒòOm„` @  –× £J?d „ò܆ê @  –Ø ¤J?d @„ò^‚‘4 @  –Ù ¥J?d €„ò ™~m @  –Ú ¦J?d À„òŽi³ @  –Û §J?d …òG›Sn @  –Ü ¨J?d @…òÅ D° @  –Ý ©J?d €…ò—«é @  –Þ ªJ?d À…ò€¼7 @  –ß «J?d †ò¾Sô# @  –à ¬J?d @†ò<Âãý @  –á ­J?d €†ònÙ ¤ @  –â ®J?d€ À†ò˜‹Ü @  — ¯J?d ‡òÕ Ä @  — °J?d @‡òW˜ @  — ±J?d €‡òÀÊ® @  — ²J?d À‡òB[p @  — ³J?d ˆò2&!’ @  — ´J?d @ˆò°·6L @  — µJ?d €ˆò,†o @  — ¶J?d Àˆò®‘± @  — ·J?d ‰ò¢UP @  — ¸J?d @‰ò ÄG_ @  — ¹J?d €‰ò·–Së @  — ºJ?d À‰ò5D5 @  — »J?d ŠòìÁJ  @  — ¼J?d @ŠònP]Õ @  — ½J?d €Šò_XÓ @  — ¾J?d ÀŠòÝÉÄÈ @  — ¿J?d ‹òÙ¤KÙ @  — ÀJ?d @‹ò[5\ @  — ÁJ?d €‹òÌgH³ @  — ÂJ?d À‹òNö_m @  — ÃJ?d Œò: @  — ÄJ?d @Œò‘«C @  — ÅJ?d €Œò ¥` @  — ÆJ?d ÀŒò“²¾ @  — ÇJ?d òƒIsŽ @  — ÈJ?d @òØdP @  — ÉJ?d €ò–Špä @  — ÊJ?d Àòg: @  — ËJ?d ŽòÍÝi @  — ÌJ?d @ŽòOL~Ú @  — ÍJ?d €ŽòoBש @  — ÎJ?d ÀŽòíÓÀw @  —! ÏJ?d ò„Yc« @  —" ÐJ?d @òÈtu @  —# ÑJ?d €ò‘š`Á @  —$ ÒJ?d Àò w @  —% ÓJ?d òéWeR @  —& ÔJ?d @òkÆrŒ @  —' ÕJ?d €ò÷o¯ @  —( ÖJ?d ÀòuþÕq @  —) ×J?d ‘òy$A @  —* ØJ?d @‘òûµŸ @  —+ ÙJ?d €‘òlç+ @  —, ÚJ?d À‘òîvõ @  —- ÛJ?d ’ò7°Ë @  —. ÜJ?d @’òµ! @  —/ ÝJ?d €’ò„)—Ö @  —0 ÞJ?d À’ò¸€ @  —1 ßJ?d “òò… @  —2 àJ?d @“òp Ö @  —3 áJ?d €“òçFb @  —4 âJ?d À“òe×¼ @  —5 ãJ?d ”ò8SL @  —6 äJ?d @”òºŠD’ @  —7 åJ?d €”ò&#ô± @  —8 æJ?d À”ò¤²ão @  —9 çJ?d •ò¨h"_ @  —: èJ?d @•ò*ù5 @  —; éJ?d €•ò½«!5 @  —< êJ?d À•ò?:6ë @  —= ëJ?d –òæü8Õ @  —> ìJ?d @–òdm/  @  —? íJ?d €–òêd€ê @  —@ îJ?d À–òhõ—4 @  —A ïJ?d —ò4è @  —B ðJ?d @—òƒî#6 @  —C ñJ?d €—ò¼7‚ @  —D òJ?d À—ò–- \ @  —E óJ?d ˜òæP¾ @  —F ôJ?d @˜òdÁ` @  —G õJ?d €˜òøh¥C @  —H öJ?d À˜òzù² @  —I ÷J?d ™òv#s­ @  —J øJ?d @™òô²ds @  —K ùJ?d €™òcàpÇ @  —L úJ?d À™òáqg @  —M ûJ?d šò8·i' @  —N üJ?d @šòº&~ù @  —O ýJ?d €šò‹.ð: @  —P þJ?d Àšò ¿çä @  —Q ÿJ?d ›òosik @  —R K?d @›òíâ~µ @  —S K?d €›òz°j @  —T K?d À›òø!}ß @  —U K?d œò¥í / @  —V K?d @œò'|7ñ @  —W K?d €œò»Õ‡Ò @  —X K?d Àœò9D  @  —Y K?d ò5žQ< @  —Z K?d @ò·Fâ @  —[  K?d €ò ]RV @  —\  K?d Àò¢ÌEˆ @  —]  K?d žò{ K¶ @  —^  K?d @žòù›\h @  —_  K?d €žòÙ•õ @  —` K?d Àžò[âÅ @  —a K?d Ÿò2ŽA @  —b K?d @Ÿò°VÇ @  —c K?d €Ÿò'MBs @  —d KuРò?d ÀŸò¥ÜU­ @  —e K?d  òU%4 @  —f K?d X òÄ2ê @  —g K?d ˜ òŽm‚É @  —h K?d Ø ò ü• @  —i K?d ¡ò&T' @  —j K?d X¡ò‚·Cù @  —k K?d ˜¡òåWM @  —l K?d Ø¡ò—t@“ @  —m K?d ¢òN²N­ @  —n K?d X¢òÌ#Ys @  —o K?d ˜¢òý+×° @  —p K?d Ø¢òºÀn @  —q K?d £ò‹‡Zn @  —r  K?d X£ò M° @  —s !K?d ˜£òžDY @  —t "K?d Ø£òÕNÚ @  —u #K?d ¤òA* @  —v $K?d X¤òÈô @  —w %K?d ˜¤ò_!´× @  —x &K?d ؤòݰ£  @  —y 'K?d ¥òÑjb9 @  —z (K?d X¥òSûuç @  —{ )K?d ˜¥òÄ©aS @  —| *K?d Ø¥òF8v @  —} +K?d ¦òŸþx³ @  —~ ,K?d X¦òoom @  — -K?d ˜¦òp0ð½ @  —€ .K?d ئòò¡çc @  — /K?d §ò›+D¿ @  —‚ 0K?d X§òºSa @  —ƒ 1K?d ˜§òŽèGÕ @  —„ 2K?d اò yP  @  —… 3K?d ¨ò|ré @  —† 4K?d X¨òþ•e7 @  —‡ 5K?d ˜¨òb<Õ @  —ˆ 6K?d بòà­ÂÊ @  —‰ 7K?d ©òìwú @  —Š 8K?d X©ònæ$ @  —‹ 9K?d ˜©òù´ @  —Œ :K?d Ø©ò{%N @  — ;K?d ªò¢ãp @  —Ž K?d تò“ë—³ @  —‘ ?K?d «ò—†¢ @  —’ @K?d X«ò| @  —“ AK?d ˜«ò‚EÈ @  —” BK?d Ø«òÔ  @  —• CK?d ¬ò]Qæ @  —– DK?d X¬ò߉F8 @  —— EK?d ˜¬òC ö @  —˜ FK?d جòÁ±áÅ @  —™ GK?d ­òÍk õ @  —š HK?d X­òOú7+ @  —› IK?d ˜­òب#Ÿ @  —œ JK?d Ø­òZ94A @  — KK?d ®òƒÿ: @  —ž LK?d X®òn-¡ @  —Ÿ MK?d ˜®ò!`„Ò @  —  NK?d Ø®ò£ñ“  @  —¡ OK?d ¯òÊ{0Ð @  —¢ PK?d X¯òHê' @  —£ QK?d ˜¯ò߸3º @  —¤ RK?d دò])$d @  —¥ SK?d °ò§u6) @  —¦ TK?d X°ò%ä!÷ @  —§ UK?d ˜°ò¹M‘Ô @  —¨ VK?d ذò;܆  @  —© WK?d ±ò7G: @  —ª XK?d X±òµ—Pä @  —« YK?d ˜±ò"ÅDP @  —¬ ZK?d رò TSŽ @  —­ [K?d ²òy’]° @  —® \K?d X²òûJn @  —¯ ]K?d ˜²òÊ Ä­ @  —° ^K?d زòHšÓs @  —± _K?d ³ò¼§Is @  —² `K?d X³ò>6^­ @  —³ aK?d ˜³ò©dJ @  —´ bK?d سò+õ]Ç @  —µ cK?d ´òv97 @  —¶ dK?d X´òô¨é @  —· eK?d ˜´òh§Ê @  —¸ fK?d Ø´òê° @  —¹ gK?d µòæJq$ @  —º hK?d XµòdÛfú @  —» iK?d ˜µòó‰rN @  —¼ jK?d صòqe @  —½ kK?d ¶ò¨Þk® @  —¾ lK?d X¶ò*O|p @  —¿ mK?d ˜¶ò¤FÓ‘ @  —À nK?d ضò&×ÄO @  —Á oK?d ·òO]g“ @  — pK?d X·òÍÌpM @  —à qK?d ˜·òZždù @  —Ä rK?d Ø·òØs' @  —Å sK?d ¸ò¨rQÅ @  —Æ tK?d X¸ò*ãF @  —Ç uK?d ˜¸ò¶Jö8 @  —È vK?d ظò4Ûáæ @  —É wK?d ¹ò8 Ö @  —Ê xK?d X¹òº7 @  —Ë yK?d ˜¹ò-Â#¼ @  —Ì zK?d عò¯S4b @  —Í {K?d ºòv•:\ @  —Î |K?d Xºòô-‚ @  —Ï }K?d ˜ºòÅ £A @  —Ð ~K?d غòG´Ÿ @  —Ñ K?d »ò^6o @  —Ò €K?d X»òܧx @  —Ó K?d ˜»òKõlv @  —Ô ‚K?d Ø»òÉd{¨ @  —Õ ƒK?d ¼ò”¨&X @  —Ö „K?d X¼ò91† @  —× …K?d ˜¼òŠ¥ @  —Ø †K?d ؼò–{ @  —Ù ‡K?d ½òÛWK @  —Ú ˆK?d X½ò†J@• @  —Û ‰K?d ˜½òT! @  —Ü ŠK?d ؽò“‰Cÿ @  —Ý ‹K?d ¾òJOMÁ @  —Þ ŒK?d X¾òÈÞZ @  —ß K?d ˜¾òèÐól @  —à ŽK?d ؾòjAä² @  —á K?d ¿òËGn @  —â K?d€ X¿ò©ÀDâ @  ˜ ‘K?d ˜¿òßÓ @uÐÀò  ˜ ’K?d Ø¿òd…Ót @  ˜“K?d 0Àò¾×4 @  ˜”K?d pÀò/Àê @  ˜•K?d °ÀòQ4/³ @  ˜–K?d ðÀòÓ¥8m @  ˜—K?d 0Áòͦ' @  ˜˜K?d pÁò“\±ù @  ˜ ™K?d °ÁòÁG^  @  ˜ šK?d ðÁòCÖI~ @  ˜ ›K?d 0Âò_Y¼­ @  ˜ œK?d pÂòÝÈ«s @  ˜ K?d °ÂòÓD* @  ˜žK?d ðÂò BSô @  ˜ŸK?d 0Ãòšl¨n @  ˜ K?d pÃòý¿° @  ˜¡K?d °ÃòJæPé @  ˜¢K?d ðÃòÈwG7 @  ˜£K?d 0ÄòPòá* @  ˜¤K?d pÄòÒcöô @  ˜¥K?d °Äò€x­ @  ˜¦K?d ðÄòés @  ˜§K?d 0ÅòÀ9 @  ˜¨K?d pÅòB‡ç @  ˜©K?d °Åò h¾ @  ˜ªK?d ðÅò’š` @  ˜«K?d 0ÆòŽг @  ˜¬K?d pÆò „m @  ˜­K?d °Æò^Ÿr4 @  ˜®K?d ðÆòÜeê @  ˜¯K?d 0ÇòÇ‘€ @  ˜ °K?d pÇòE— @  ˜!±K?d °Çòx› @  ˜"²K?d ðÇò•ŠoE @  ˜#³K?d 0Èò ¾¶J @  ˜$´K?d pÈò¢/¡” @  ˜%µK?d °Èòð4NÍ @  ˜&¶K?d ðÈòr¥Y @  ˜'·K?d 0Éò°ÍÇY @  ˜(¸K?d pÉò2\Ї @  ˜)¹K?d °Éò`G?Þ @  ˜*ºK?d ðÉòâÖ( @  ˜+»K?d 0ÊòþYÝÓ @  ˜,¼K?d pÊò|ÈÊ  @  ˜-½K?d °Êò.Ó%T @  ˜.¾K?d ðÊò¬B2Š @  ˜/¿K?d 0ËòË<Ü @  ˜0ÀK?d pËòI­Ëß @  ˜1ÁK?d °Ëò¶$† @  ˜2ÂK?d ðËò™'3X @  ˜3ÃK?d 0Ìò¢•E @  ˜4ÄK?d pÌòƒ3‚› @  ˜5ÅK?d °ÌòÑ(m @  ˜6ÆK?d ðÌòS¹z @  ˜7ÇK?d 0Íò‘ÑäV @  ˜8ÈK?d pÍò@óˆ @  ˜9ÉK?d °ÍòA[Ñ @  ˜:ÊK?d ðÍòÃÊ  @  ˜;ËK?d 0ÎòßEþÜ @  ˜<ÌK?d pÎò]Ôé @  ˜=ÍK?d °ÎòÏ[ @  ˜>ÎK?d ðÎò^… @  ˜?ÏK?d 0Ïò8Æòá @  ˜@ÐK?d pÏòºWå? @  ˜AÑK?d °ÏòèL f @  ˜BÒK?d ðÏòjݸ @  ˜CÓK?d 0ÐòUÈô @  ˜DÔK?d pÐò×YãÆ @  ˜EÕK?d °Ðò…B Ÿ @  ˜FÖK?d ðÐòÓA @  ˜G×K?d 0ÑòÅ»…  @  ˜HØK?d pÑòG*’Õ @  ˜IÙK?d °Ñò1}Œ @  ˜JÚK?d ðÑò— jR @  ˜KÛK?d 0Òò‹/Ÿ @  ˜LÜK?d pÒò ¾ˆ_ @  ˜MÝK?d °Òò[¥g @  ˜NÞK?d ðÒòÙ4pØ @  ˜OßK?d 0ÓòN‹B @  ˜PàK?d pÓòÌ‹œœ @  ˜QáK?d °ÓòžsÅ @  ˜RâK?d ðÓòd @  ˜SãK?d 0Ôò„„ @  ˜TäK?d pÔòÕØ @  ˜UåK?d °ÔòT: @  ˜VæK?d ðÔòÖŸ-_ @  ˜WçK?d 0Õò÷³ @  ˜XèK?d pÕò–f¤Ë @  ˜YéK?d °ÕòÄ}K’ @  ˜ZêK?d ðÕòFì\L @  ˜[ëK?d 0ÖòZc©Ÿ @  ˜\ìK?d pÖòØò¾A @  ˜]íK?d °ÖòŠéQ @  ˜^îK?d ðÖòxFÆ @  ˜_ïK?d 0×òç£0 @  ˜`ðK?d p×ò‘v´î @  ˜añK?d °×òÃm[· @  ˜bòK?d ð×òAüLi @  ˜cóK?d 0ØòôÈ•f @  ˜dôK?d pØòvY‚¸ @  ˜eõK?d °Øò$Bmá @  ˜föK?d ðØò¦Óz? @  ˜g÷K?d 0Ùòd»äu @  ˜høK?d pÙòæ*ó« @  ˜iùK?d °Ùò´1ò @  ˜júK?d ðÙò6  , @  ˜kûK?d 0Úò*/þÿ @  ˜lüK?d pÚò¨¾é! @  ˜mýK?d °Úòú¥x @  ˜nþK?d ðÚòx4¦ @  ˜oÿK?d 0ÛòAâÁ% @  ˜pL?d pÛòÃsÖû @  ˜qL?d °Ûò‘h9¢ @  ˜rL?d ðÛòù.| @  ˜sL?d 0Üò‹|ˆa @  ˜tL?d pÜò ퟿ @  ˜uL?d °Üò[öpæ @  ˜vL?d ðÜòÙgg8 @  ˜wL?d 0Ýòùr @  ˜xL?d pÝò™žî¬ @  ˜y L?d °ÝòË…õ @  ˜z L?d ðÝòI+ @  ˜{ L?d 0ÞòU›ãø @  ˜| L?d pÞò× ô& @  ˜} L?d °Þò… @  ˜~L?d ðÞò€ ¡ @  ˜L?d 0ßòQNßô @  ˜€L?d pßòÓßÈ* @  ˜L?d uÐàò/°ßòÄ's @  ˜‚L?d ðßòU0­ @  ˜ƒL?d Hàò›:;I @  ˜„L?d ˆàò»Ï9· @  ˜…L?d ÈàòK°ÃÎ @  ˜†L?d áò›øO& @  ˜‡L?d Háò IJZ @  ˜ˆL?d ˆáò+¼H¤ @  ˜‰L?d ÈáòÛòÝ @  ˜ŠL?d âòF‡ @  ˜‹L?d HâòEÝPÐ @  ˜ŒL?d ˆâòe(R. @  ˜L?d Èâò•W¨W @  ˜ŽL?d ãòE$¿ @  ˜L?d Hãò€èD @  ˜ L?d ˆãò Fí @  ˜‘!L?d ÈãòPb¼” @  ˜’"L?d äòI,O› @  ˜“#L?d HäòJv W @  ˜”$L?d ˆäòjƒ© @  ˜•%L?d ÈäòšüõÐ @  ˜–&L?d åòJ´y8 @  ˜—'L?d HåòÚ|D @  ˜˜(L?d ˆåòúð~º @  ˜™)L?d Èåò „à @  ˜š*L?d æò—Ë$ @  ˜›+L?d Hæò”‘fÎ @  ˜œ,L?d ˆæò´dd0 @  ˜-L?d ÈæòDžI @  ˜ž.L?d çò”S¡ @  ˜Ÿ/L?d HçòÝla @  ˜ 0L?d ˆçòýànŸ @  ˜¡1L?d Èçò Ÿ”æ @  ˜¢2L?d èò9`û @  ˜£3L?d Hèò::Z7 @  ˜¤4L?d ˆèòÏXÉ @  ˜¥5L?d Èèòê°¢° @  ˜¦6L?d éò:ø.X @  ˜§7L?d HéòªI+$ @  ˜¨8L?d ˆéòм)Ú @  ˜©9L?d ÈéòzÃÓ£ @  ˜ª:L?d êòç‡sb @  ˜«;L?d HêòäÝ1® @  ˜¬L?d ëòäEÁ @  ˜¯?L?d HëòѸ0| @  ˜°@L?d ˆëòñM2‚ @  ˜±AL?d Èëò2Èû @  ˜²BL?d ìò|;ô @  ˜³CL?d Hìò&y8 @  ˜´DL?d ˆìò;Ó{Æ @  ˜µEL?d Èìòˬ¿ @  ˜¶FL?d íòä W @  ˜·GL?d Híò‹U+ @  ˜¸HL?d ˆíò«  Õ @  ˜¹IL?d Èíò[ßð¬ @  ˜ºJL?d îòÆ›Pm @  ˜»KL?d HîòÅÁ¡ @  ˜¼LL?d ˆîòå4_ @  ˜½ML?d ÈîòKê& @  ˜¾NL?d ïòÅfÎ @  ˜¿OL?d Hïò"Bœ @  ˜ÀPL?d ˆïò·b @  ˜ÁQL?d ÈïòòÈæ @  ˜ÂRL?d ðòLZ© @  ˜ÃSL?d HðòOLe @  ˜ÄTL?d ˆðòo¹› @  ˜ÅUL?d ÈðòŸÆàâ @  ˜ÆVL?d ñòOŽl  @  ˜ÇWL?d Hñòß?iv @  ˜ÈXL?d ˆñòÿÊkˆ @  ˜ÉYL?d Èñòµ‘ñ @  ˜ÊZL?d òò’ñ10 @  ˜Ë[L?d Hòò‘«sü @  ˜Ì\L?d ˆòò±^q @  ˜Í]L?d ÈòòA!‹{ @  ˜Î^L?d óò‘i“ @  ˜Ï_L?d HóòTžg? @  ˜Ð`L?d ˆóòtkeÁ @  ˜ÑaL?d Èóò„Ÿ¸ @  ˜ÒbL?d ôòZl· @  ˜ÓcL?d Hôòž.{ @  ˜ÔdL?d ˆôò¾õ,… @  ˜ÕeL?d ÈôòNŠÖü @  ˜ÖfL?d õòžÂZ @  ˜×gL?d Hõòs_h @  ˜ØhL?d ˆõò.†]– @  ˜ÙiL?d ÈõòÞù§ï @  ˜ÚjL?d öòC½. @  ˜ÛkL?d Höò@çEâ @  ˜ÜlL?d ˆöò`G @  ˜ÝmL?d Èöòm½e @  ˜ÞnL?d ÷ò@%1 @  ˜ßoL?d H÷ò cOM @  ˜àpL?d ˆ÷ò)–M³ @  ˜áqL?d È÷òÙé·Ê @  ˜ârL?d€ øò™Õ'q @  ™sL?d Høò{Î-” @  ™tL?d ˆøò[;/j @  ™uL?d Èøòn .þ @  ™vL?d ùò¾E¢ @  ™wL?d HùòàFø @  ™xL?d ˆùòÀ³úî @  ™yL?d Èùòþ~_í @  ™zL?d úòc:ÿ, @  ™ {L?d Húò¥)F  @  ™ |L?d ˆúò…ÜDó @  ™ }L?d Èúò°êEg @  ™ ~L?d ûò`¢É @  ™ L?d Hûò+Љ: @  ™€L?d ˆûò %‹Ä @  ™L?d Èûò˜I' @  ™‚L?d üòã( @  ™ƒL?d HüòGZ  @  ™„L?d ˆüògáX÷ @  ™…L?d ÈüòR×Yc @  ™†L?d ýò‚ŸÕ‹ @  ™‡L?d HýòÜœ @  ™ˆL?d ˆýòüis @  ™‰L?d Èýò¤(p @  ™ŠL?d þò_àˆ± @  ™‹L?d Hþò™ó1 @  ™ŒL?d ˆþò¹3n @  ™L?d ÈþòŒ02ú @  ™ŽL?d ÿò\x¾ @  ™L?d Hÿòg+†ø @  ™L?d ˆÿòGÞ„ @  ™uÐó‘L?d Èÿòüsä€ @  ™ ’L?d ó³ÇÌq @  ™! “L?d `óuÔuP @  ™" ”L?d  óU!w® @  ™# •L?d àó`v: @  ™$ –L?d ó°_úÒ @  ™% —L?d `óî\ Ô @  ™& ˜L?d  óΩ¢* @  ™' ™L?d àóðd) @  ™( šL?d óm §è @  ™) ›L?d `ó«3É @  ™* œL?d  ó‹Æ7 @  ™+ L?d àó¾ð£ @  ™, žL?d ón¸‘K @  ™- ŸL?d `óÈ\} @  ™.  L?d  óè©’ƒ @  ™/ ¡L?d àó{Å ` @  ™0 ¢L?d ób‹úo @  ™1 £L?d `ó¤˜CN @  ™2 ¤L?d  ó„mA° @  ™3 ¥L?d àó±[@$ @  ™4 ¦L?d óaÌÌ @  ™5 §L?d `ó?–Ê @  ™6 ¨L?d  óå”4 @  ™7 ©L?d àó!(17 @  ™8 ªL?d ó¼l‘ö @  ™9 «L?d `óz(× @  ™: ¬L?d  óZŠ*) @  ™; ­L?d àóo¼+½ @  ™< ®L?d ó¿ô§U @  ™= ¯L?d `ó„§Ÿ¿ @  ™> °L?d  ó¤RA @  ™? ±L?d àóˆ?'€ @  ™@ ²L?d ó¼À« @  ™A ³L?d `ózÓ¼ @  ™B ´L?d  óZ&B @  ™C µL?d àóoÖ @  ™D ¶L?d ó¿X> @  ™E ·L?d ` óá[Ç8 @  ™F ¸L?d   óÁ®ÅÆ @  ™G ¹L?d à óÿc`Å @  ™H ºL?d ób'À @  ™I »L?d ` ó¤4y% @  ™J ¼L?d   ó„Á{Û @  ™K ½L?d à ó±÷zO @  ™L ¾L?d óa¿ö§ @  ™M ¿L?d ` ó7 †@  ™N ÀL?d   óþà~ @  ™O ÁL?d à ó„’{ @  ™P ÂL?d ó܈’ @  ™Q ÃL?d ` ó[Ï1³ @  ™R ÄL?d   ó{:3M @  ™S ÅL?d à óN 2Ù @  ™T ÆL?d óžD¾1 @  ™U ÇL?d ` óÀGä7 @  ™V ÈL?d   óà²æÉ @  ™W ÉL?d à óÞCÊ @  ™X ÊL?d óC;ã  @  ™Y ËL?d `ó…(Z* @  ™Z ÌL?d  ó¥ÝXÔ @  ™[ ÍL?d àóëY@ @  ™\ ÎL?d ó@£Õ¨ @  ™] ÏL?d `ó{ðíB @  ™^ ÐL?d  ó[ï¼ @  ™_ ÑL?d àóÙoSï @  ™` ÒL?d óg±ï] @  ™a ÓL?d `ó¡¢V| @  ™b ÔL?d  óWT‚ @  ™c ÕL?d àó´aU @  ™d ÖL?d ód)Ùþ @  ™e ×L?d `ó:*ƒø @  ™f ØL?d  óß @  ™g ÙL?d àó$$ @  ™h ÚL?d ó¹V„Ä @  ™i ÛL?d `óE=å @  ™j ÜL?d  ó_°? @  ™k ÝL?d àój†> @  ™l ÞL?d óºÎ²g @  ™m ßL?d `ó*³Q @  ™n àL?d  ó<ß±¯ @  ™o áL?d àó¯³*L @  ™p âL?d ó¶ýÙC @  ™q ãL?d `ópî`b @  ™r äL?d  óPbœ @  ™s åL?d àóe-c @  ™t æL?d óµeïà @  ™u çL?d `óëfµæ @  ™v èL?d  óË“· @  ™w éL?d àóõ^ @  ™x êL?d óh²Ú @  ™y ëL?d `ó® û @  ™z ìL?d  óŽü  @  ™{ íL?d àó»Ê‘ @  ™| îL?d ók‚„y @  ™} ïL?d `óPѼ“ @  ™~ ðL?d  óp$¾m @  ™ ñL?d àó¿4 @  ™€ òL?d ó‹à¸€ @  ™ óL?d `óMó¡ @  ™‚ ôL?d  óm_ @  ™ƒ õL?d àóX0Ë @  ™„ öL?d óˆxŽ# @  ™… ÷L?d `óÖ{Ô% @  ™† øL?d  óöŽÖÛ @  ™‡ ùL?d àóÈCsØ @  ™ˆ úL?d óUÓ @  ™‰ ûL?d `ó“j8 @  ™Š üL?d  ó³áhÆ @  ™‹ ýL?d àó†×iR @  ™Œ þL?d óVŸåº @  ™ ÿL?d `óbŠð @  ™Ž M?d  óBòý @  ™ M?d àóÑi @  ™ M?d óÈ]š @  ™‘ M?d `óN#0 @  ™’ M?d  ó.»!Î @  ™“ M?d àó Z @  ™” M?d óËŬ² @  ™• M?d `ó•Æö´ @  ™– M?d  óµ3ôJ @  ™—  M?d àó‹þQI @  ™˜  M?d óºñˆ @  ™™  M?d `óЩH© @  ™š  M?d  óð\JW @  ™›  M?d àóÅjKà @  ™œ M?d ó"Ç+ @  ™ M?d `ó.qÿÁ @  ™ž M?d  ó„ý?uÐ ó @  ™Ÿ M?d àóµ)¹ @  ™ M?d 8 óÄ"Cß @  ™¡M?d x ó1úþ @  ™¢M?d ¸ ó"Äø @  ™£M?d ø óòù” @  ™¤M?d 8!óǺu| @  ™¥M?d x!ó™¹/z @  ™¦M?d ¸!ó¹L-„ @  ™§M?d ø!󇈇 @  ™¨M?d 8"óÅ(F @  ™©M?d x"óÜÖ‘g @  ™ªM?d ¸"óü#“™ @  ™«M?d ø"óÉ’  @  ™¬M?d 8#ó]å @  ™­M?d x#ó¿¹Ó @  ™® M?d ¸#óŸL- @  ™¯!M?d ø#ó †Î @  ™°"M?d 8$ónuÁ @  ™±#M?d x$óÓ}Ìà @  ™²$M?d ¸$óóˆÎ @  ™³%M?d ø$óƾϊ @  ™´&M?d 8%óöCb @  ™µ'M?d x%óHõd @  ™¶(M?d ¸%óhš @  ™·)M?d ø%óV;™ @  ™¸*M?d 8&óˉX @  ™¹+M?d x&ó š§y @  ™º,M?d ¸&ó-o¥‡ @  ™»-M?d ø&óY¤ @  ™¼.M?d 8'óÈ(û @  ™½/M?d x'óóB @  ™¾0M?d ¸'óÓ·ï @  ™¿1M?d ø'óÿÚ¨. @  ™À2M?d 8(óË%$3 @  ™Á3M?d x(ó 6 @  ™Â4M?d ¸(ó-ßì @  ™Ã5M?d ø(óõžx @  ™Ä6M?d 8)óȽ @  ™Å7M?d x)ó–¾H– @  ™Æ8M?d ¸)ó¶KJh @  ™Ç9M?d ø)óˆ†ïk @  ™È:M?d 8*óÂOª @  ™É;M?d x*óÓÑö‹ @  ™ÊM?d 8+óZy  @  ™Í?M?d x+ó@îm. @  ™Î@M?d ¸+ó`oÐ @  ™ÏAM?d ø+óówô3 @  ™ÐBM?d 8,óê9< @  ™ÑCM?d x,ó,*¾ @  ™ÒDM?d ¸,ó ß¼ã @  ™ÓEM?d ø,ó9é½w @  ™ÔFM?d 8-óé¡1Ÿ @  ™ÕGM?d x-ó·¢k™ @  ™ÖHM?d ¸-ó—Wig @  ™×IM?d ø-ó©šÌd @  ™ØJM?d 8.ó4Þl¥ @  ™ÙKM?d x.óòÍÕ„ @  ™ÚLM?d ¸.óÒ8×z @  ™ÛMM?d ø.óçÖî @  ™ÜNM?d 8/ó7FZ @  ™ÝOM?d x/ó bì @  ™ÞPM?d ¸/ó,à` @  ™ßQM?d ø/ó®ŠÜA @  ™àRM?d 80óT`ó @  ™áSM?d x0óÖGÙÒ @  ™âTM?d€ ¸0ó7õ,, @  šUM?d ø0óã‚e‘ @  šVM?d 81ó3Êéy @  šWM?d x1ó¨€H’ @  šXM?d ¸1óˆuJl @  šYM?d ø1óx ° @  šZM?d 82óåNÔ @  š[M?d x2óíïö @  š\M?d ¸2óÍôq @  š ]M?d ø2ó=e @  š ^M?d 83óí-‚à @  š _M?d x3óŽ€x; @  š `M?d ¸3ó®uzÅ @  š aM?d ø3ó^ €¼ @  šbM?d 84óGDs³ @  šcM?d x4óâD« @  šdM?d ¸4ó±©ö @  šeM?d ø4ó2ÎS @  šfM?d 85óâ†ßg @  šgM?d x5óyÌ~Œ @  šhM?d ¸5óY9|r @  šiM?d ø5ó©F†  @  šjM?d 86ó4&Ê @  škM?d x6ó<£À‘ @  šlM?d ¸6óVÂo @  šmM?d ø6óì)8 @  šnM?d 87óóx”7 @  š7‹M?d x>óp5àl @  š8ŒM?d ¸>óPÀâ’ @  š9M?d ø>ó ¿ë @  š:ŽM?d 8?óp÷” @  š;M?d x?óŽíW @  š<M?duÐ@ó7 ¸?ó®Uú @  š=‘M?d ø?ó^g¯ƒ @  š>’M?d P@óË¿ @  š?“M?d @ó%®ù @  š@”M?d Ð@ó§?îØ @  šA•M?d Aó™— @  šB–M?d PAó‡˜I @  šC—M?d Aó¾&,‚ @  šD˜M?d ÐAó<·;\ @  šE™M?d BóÓv: @  šFšM?d PBóQŒaä @  šG›M?d BóûI’Ÿ @  šHœM?d ÐBóyØ…A @  šIM?d CóÛ~ä @  šJžM?d PCóYïóÐ @  šKŸM?d Có˜&+ @  šL M?d ÐCó· õ @  šM¡M?d Dóq] @  šN¢M?d PDóó†ƒ @  šO£M?d DóôâÏ @  šP¤M?d ÐDóvsØÆ @  šQ¥M?d EóÔÕ¹‰ @  šR¦M?d PEóVD®W @  šS§M?d Eóojœ @  šT¨M?d ÐEóíû B @  šU©M?d FóQ@$ @  šVªM?d PFó€ÀWú @  šW«M?d Fó*¤ @  šX¬M?d ÐF󨔳_ @  šY­M?d Gó 2Ò @  šZ®M?d PGóˆ£ÅÎ @  š[¯M?d GóÔÝé @  š\°M?d ÐGóVL7 @  š]±M?d Hó]e @  š^²M?d PHó’ÌrS @  š_³M?d H󄮘x @  š`´M?d ÐHó?¦ @  šaµM?d Ió¤™îé @  šb¶M?d PIó&ù7 @  šc·M?d Ió&Mü @  šd¸M?d ÐIó·Z" @  še¹M?d JórD @  šfºM?d PJóðŒš @  šg»M?d JóZIóá @  šh¼M?d ÐJóØØä? @  ši½M?d Kóz~…p @  šj¾M?d PKóøï’® @  šk¿M?d KóÉvhD @  šlÀM?d ÐKóKçš @  šmÁM?d Ló Ga2 @  šnÂM?d PLó¢Övì @  šoÃM?d Ló¥²»w @  špÄM?d ÐLó'#¬© @  šqÅM?d Mó……Íæ @  šrÆM?d PMóÚ8 @  šsÇM?d Mó>:nó @  štÈM?d ÐMó¼«y- @  šuÉM?d NóS4K @  švÊM?d PNóÑ#• @  šwËM?d Nó{UÐî @  šxÌM?d ÐNóùÄÇ0 @  šyÍM?d Oó[b¦ @  šzÎM?d POóÙó±¡ @  š{ÏM?d Oó…g† @  š|ÐM?d ÐOópX @  š}ÑM?d PóË,!M @  š~ÒM?d PPóI½6“ @  šÓM?d PóŽê @  š€ÔM?d ÐPóýÅ @  šÕM?d Qó2¹œŠ @  š‚ÖM?d PQó°(‹T @  šƒ×M?d Qó‰?Ÿ @  š„ØM?d ÐQó —(A @  š…ÙM?d Róä=e' @  š†ÚM?d PRóf¬rù @  š‡ÛM?d RóÌi‚ @  šˆÜM?d ÐRóNø–\ @  š‰ÝM?d Sóì^÷ @  šŠÞM?d PSónÏàÍ @  š‹ßM?d Só¯6 @  šŒàM?d ÐSó-—è @  šáM?d TóF7@ @  šŽâM?d PTóĦž @  šãM?d TóÃÂÜ @  šäM?d ÐTóASËÛ @  š‘åM?d Uóãõª” @  š’æM?d PUóad½J @  š“çM?d UóXJ  @  š”èM?d ÐUóÚÛ_ @  š•éM?d Vó5qS9 @  š–êM?d PVó·àDç @  š—ëM?d Vó%·œ @  š˜ìM?d ÐVóŸ´ B @  š™íM?d Wó=Á  @  ššîM?d PWó¿ƒÖÓ @  š›ïM?d Wóãýô @  šœðM?d ÐWóal* @  šñM?d Xó'}v @  šžòM?d PXó¥ìaN @  šŸóM?d X󳎋e @  š ôM?d ÐXó1œ» @  š¡õM?d Yó“¹ýô @  š¢öM?d PYó(ê* @  š£÷M?d Yó(^á @  š¤øM?d ÐYóª—I? @  š¥ùM?d ZóE=Y @  š¦úM?d PZóǬ‡ @  š§ûM?d Zómiàü @  š¨üM?d ÐZóïø÷" @  š©ýM?d [óM^–m @  šªþM?d P[óÏϳ @  š«ÿM?d [ó.ÕOâ @  š¬N?d Ð[ó¬DX< @  š­N?d \óÇäF” @  š®N?d P\óEuQJ @  š¯N?d \óBœÑ @  š°N?d Ð\óÀ€‹ @  š±N?d ]ób&ê@ @  š²N?d P]óà·ýž @  š³N?d ]óÙ™IU @  š´N?d Ð]ó[^‹ @  šµ N?d ^ó´¢í @  š¶ N?d P^ó633 @  š· N?d ^óœö÷H @  š¸ N?d Ð^ógà– @  š¹ N?d _ó¼ÁÙ @  šºN?d P_ó>P– @  š»N?d _ób.@  @  šuÐ`ó¼N?d Ð_óÙx‹+ @  š½ N?d (`ónÓ @  š¾ N?d h`ó—ÿÄÊ @  š¿ N?d ¨`ó/š(s @  šÀ N?d è`ó­ ?­ @  šÁ N?d (aó­^â @  š N?d haóN?d hkó¢ì¹ @  › ?N?d ¨kóVÀí¾ @  › @N?d èkóÔQú` @  › AN?d (lóz¸% @  › BN?d hlóø)û @  › CN?d ¨lóœ^¤ú @  › DN?d èlóϳ$ @  › EN?d (móßz³ñ @  › FN?d hmó]ë¤/ @  › GN?d ¨mó¡Œë  @  › HN?d èmó#ü× @  › IN?d (nó þJ\ @  › JN?d hnó‹o]‚ @  › KN?d ¨nóïñƒ @  › LN?d ènóm‰æ] @  › MN?d (oóØh @  › NN?d hoóƒ ϶ @  › ON?d ¨oó;â| @  › PN?d èoó˜ªõ¢ @  › QN?d (pó‘Ó_Z @  › RN?d hpóBH„ @  › SN?d ¨pów5ä… @  › TN?d èpóõ¤ó[ @  › UN?d (qó%Ô> @  › VN?d hqó§†Ãà @  ›! WN?d ¨qó[áŒÆ @  ›" XN?d èqóÙp› @  ›# YN?d (róó“-“ @  ›$ ZN?d hróq:M @  ›% [N?d ¨róu–L @  ›& \N?d èró—ä’ @  ›' ]N?d (sóûð¿§ @  ›( ^N?d hsóya¨y @  ›) _N?d ¨só}á¼o @  ›* `N?d èsóÿp«± @  ›+ aN?d (tóQ™Nô @  ›, bN?d htóÓY* @  ›- cN?d ¨tó·õ+ @  ›. dN?d ètó5îâõ @  ›/ eN?d (uóô[â  @  ›0 fN?d huóvÊõþ @  ›1 gN?d ¨uóŠ­ºØ @  ›2 hN?d èuó<­ @  ›3 iN?d (vó"ß @  ›4 jN?d hvó N S @  ›5 kN?d ¨vóÄ9 R @  ›6 lN?d èvóF¨·Œ @  ›7 mN?d (wó*¼‰¹ @  ›8 nN?d hwó¨-žg @  ›9 oN?d ¨wó1³­ @  ›: pN?d èw󳋤s @  ›; qN?d (xó0Ó>$ @  ›< rN?d hxó²B)ú @  ›= sN?d ¨xóÖ5…û @  ›> tN?d èxóT¤’% @  ›? uN?d (yó*³Ò @  ›@ vN?d hyó¨¤  @  ›A wN?d ¨yóTæë* @  ›B xN?d èyóÖwüô @  ›C yN?d (zóü”J @  ›D zN?d hzó~]¡ @  ›E {N?d ¨zórñ  @  ›F |N?d èzó˜ãæ~ @  ›G }N?d ({óô÷ØK @  ›H ~N?d h{óvfÏ• @  ›I N?d ¨{óŸpš @  ›J €N?d è{óáÞ @  ›K N?d (|ó³h› @  ›L ‚N?d h|ó1™E @  ›M ƒN?d ¨|óUîÓD @  ›N „N?d è|ó×Äš @  ›O …N?d (}óÊÄO @  ›P †N?d h}ó”[Ó‘ @  ›Q ‡N?d ¨}óh<œ· @  ›R ˆN?d è}óê­‹i @  ›S ‰N?d (~óÀN=â @  ›T ŠN?d h~óBß*< @  ›U ‹N?d ¨~ó&¨†= @  ›V ŒN?d è~ó¤9‘ã @  ›W N?d (óÈ-¯Ö @  ›X ŽN?d hóJ¼¸ @  ›Y N?d ¨óuЀó'Ó‹• @  ›Z N?d èóhÝ^É @  ›[‘N?d @€ó±Äª÷ @  ›\’N?d €€ó‘1¨  @  ›]“N?d À€óW"( @  ›^”N?d ó‡jÀ @  ›_•N?d @ó!“ @  ›`–N?d €ó%õ#m @  ›a—N?d Àó{öyk @  ›b˜N?d ‚óæ²Ùª @  ›c™N?d @‚óÓ„Ø> @  ›dšN?d €‚óóqÚÀ @  ›e›N?d À‚ó5bcá @  ›fœN?d ƒóå*ï  @  ›gN?d @ƒóÛçJ  @  ›hžN?d €ƒóûHô @  ›iŸN?d Àƒó]öI @  ›j N?d „óD¸ºÍ @  ›k¡N?d @„óqŽ»Y @  ›l¢N?d €„óQ{¹§ @  ›m£N?d À„ó—h† @  ›n¤N?d …óG Œn @  ›o¥N?d @…óÔL @  ›p¦N?d €…óô¹s @  ›q§N?d À…óªºOu @  ›r¨N?d †ó7þï´ @  ›s©N?d @†óÈî  @  ›tªN?d €†ó"=ìÞ @  ›u«N?d À†óä.Uÿ @  ›v¬N?d ‡ó4fÙ @  ›w­N?d @‡ó «| @  ›x®N?d €‡ó*^~ê @  ›y¯N?d À‡ó F @  ›z°N?d ˆó%òÊ @  ›{±N?d @ˆóÄˉ @  ›|²N?d €ˆó01Éw @  ›}³N?d Àˆóö"pV @  ›~´N?d ‰ó&jü¾ @  ›µN?d @‰óéQvN @  ›€¶N?d €‰óɤt° @  ›·N?d À‰ó—§.¶ @  ›‚¸N?d Šó ãŽw @  ›ƒ¹N?d @Šó?Õã @  ›„ºN?d €Šó  @  ›…»N?d ÀŠóÙ34< @  ›†¼N?d ‹ó {¸Ô @  ›‡½N?d @‹ó7¶× @  ›ˆ¾N?d €‹óC) @  ›‰¿N?d À‹óA÷  @  ›ŠÀN?d ŒóX¹ø @  ›‹ÁN?d @Œómù• @  ›ŒÂN?d €ŒóMzûk @  ›ÃN?d ÀŒó‹iBJ @  ›ŽÄN?d ó[!΢ @  ›ÅN?d @óÈMUA @  ›ÆN?d €óè¸W¿ @  ›‘ÇN?d Àó¶» ¹ @  ›’ÈN?d Žó+ÿ­x @  ›“ÉN?d @Žóɬì @  ›”ÊN?d €Žó><® @  ›•ËN?d ÀŽóø/3 @  ›–ÌN?d ó(g›Û @  ›—ÍN?d @óª>Ø @  ›˜ÎN?d €ó6_<& @  ›™ÏN?d Àó Ì @  ›šÐN?d ó³Ò¸~ @  ››ÑN?d @ó†ä¹ê @  ›œÒN?d €ó¦» @  ›ÓN?d Àó`5 @  ›žÔN?d ‘ó°JŽÝ @  ›ŸÕN?d @‘ó2 2Ž @  › ÖN?d €‘óÕ0p @  ›¡×N?d À‘óLÖjv @  ›¢ØN?d ’óÑ’Ê· @  ›£ÙN?d @’óä¤Ë# @  ›¤ÚN?d €’óÄQÉÝ @  ›¥ÛN?d À’óBpü @  ›¦ÜN?d “óÒ ü @  ›§ÝN?d @“óìÇY @  ›¨ÞN?d €“óÌ2[é @  ›©ßN?d À“ójÖZß @  ›ªàN?d ”ós˜©Ð @  ›«áN?d @”óF®¨D @  ›¬âN?d €”óf[ªº @  ›­ãN?d À”ó H› @  ›®äN?d •ópŸs @  ›¯åN?d @•óãl @  ›°æN?d €•óÙn @  ›±çN?d À•óš\h @  ›²èN?d –óÞü© @  ›³éN?d @–ó5èý= @  ›´êN?d €–óÿà @  ›µëN?d À–óÓFâ @  ›¶ìN?d —óFÊ  @  ›·íN?d @—ó=‹o  @  ›¸îN?d €—ó~m÷ @  ›¹ïN?d À—ó&-U @  ›ºðN?d ˜óÒÙ @  ›»ñN?d @˜ó'䨔 @  ›¼òN?d €˜óÚj @  ›½óN?d À˜óÁcK @  ›¾ôN?d ™óJï£ @  ›¿õN?d @™ó='Ub @  ›ÀöN?d €™óÒWœ @  ›Á÷N?d À™óCÑ š @  ›ÂøN?d šóÞ•­[ @  ›ÃùN?d @šó룬Ï @  ›ÄúN?d €šóËV®1 @  ›ÅûN?d Àšó E @  ›ÆüN?d ›óÝ ›ø @  ›ÇýN?d @›óãÀ>û @  ›ÈþN?d €›óÃ5< @  ›ÉÿN?d À›ó÷ )¼ @  ›ÊO?d œóînÚ³ @  ›ËO?d @œóÛXÛ' @  ›ÌO?d €œóû­ÙÙ @  ›ÍO?d Àœó=¾`ø @  ›ÎO?d óíöì @  ›ÏO?d @ó~šwó @  ›ÐO?d €ó^ou  @  ›ÑO?d Àól/  @  ›ÒO?d žó(Ê @  ›Ó O?d @žó¨Ž^ @  ›Ô O?d €žóˆëŒ  @  ›Õ O?d ÀžóNø5 @  ›Ö O?d Ÿóž°¹i @  ›× O?d @Ÿó }j @  ›ØO?d €Ÿó€ˆ” @  ›ÙOuРó?d ÀŸó»Û&~ @  ›ÚO?d  óÊÐø @  ›ÛO?d X óÿæùŒ @  ›ÜO?d ˜ óßûr @  ›ÝO?d Ø óBS @  ›ÞO?d ¡óÉHλ @  ›ßO?d X¡óK"rè @  ›àO?d ˜¡ók×p @  ›áO?d Ø¡ó5Ô* @  ›âO?d€ ¢ó.Æ"h @  œO?d X¢óú±kÕ @  œO?d ˜¢óÚDi+ @  œO?d Ø¢óÙ+ç @  œO?d £ó V§ @  œO?d X£óù)]v @  œO?d ˜£óÙÜ_ˆ @  œO?d Ø£ó±ŠÄ @  œ O?d ¤ó¨ÄòË @  œ !O?d X¤óX»² @  œ "O?d ˜¤óxN L @  œ #O?d ؤó{H€ @  œ $O?d ¥ó«\Äh @  œ %O?d X¥ó[#> @  œ&O?d ˜¥ó{Ö<ï @  œ'O?d Ø¥óFÆs @  œ(O?d ¦óÛ‚§² @  œ)O?d X¦ó+ý]Ë @  œ*O?d ˜¦ó _5 @  œ+O?d ئóRù @  œ,O?d §óØ‘ @  œ-O?d X§ó(ekh @  œ.O?d ˜§ói– @  œ/O?d اóýq @  œ0O?d ¨óÉŽ‚ @  œ1O?d X¨ó9ñxb @  œ2O?d ˜¨ózœ @  œ3O?d بó^8P @  œ4O?d ©óÊ´¸ @  œ5O?d X©ó:iNÁ @  œ6O?d ˜©óœL? @  œ7O?d Ø©ó6ŠP @  œ 8O?d ªó«ÎðÒ @  œ!9O?d Xªó[± « @  œ":O?d ˜ªó{DU @  œ#;O?d تóxJ™ @  œ$O?d ˜«óxÜ>ö @  œ'?O?d Ø«óàÚu« @  œ(@O?d ¬óù”†¤ @  œ)AO?d X¬ó ë|Ý @  œ*BO?d ˜¬ó)~# @  œ+CO?d جó*D<ï @  œ,DO?d ­óú ° @  œ-EO?d X­ó sJ~ @  œ.FO?d ˜­ó*†H€ @  œ/GO?d Ø­ó–s @  œ0HO?d ®óŠÒÓÝ @  œ1IO?d X®óz­)¤ @  œ2JO?d ˜®óZX+Z @  œ3KO?d Ø®óYi– @  œ4LO?d ¯ó‰Jå~ @  œ5MO?d X¯óy5 @  œ6NO?d ˜¯óYÀù @  œ7OO?d دó¬!zi @  œ8PO?d °óÿÆÛ @  œ9QO?d X°óâ€<¢ @  œ:RO?d ˜°óÂu>\ @  œ;SO?d ذóÁ/| @  œ<TO?d ±ógðx @  œ=UO?d X±óá  @  œ>VO?d ˜±óÁíÿ @  œ?WO?d رóCüA @  œ@XO?d ²óÞ¸²€ @  œAYO?d X²ó.ÇHù @  œBZO?d ˜²ó2J @  œC[O?d زó hË @  œD\O?d ³óÝ „# @  œE]O?d X³ó-_~Z @  œF^O?d ˜³ó ª|¤ @  œG_O?d سóeü"è @  œH`O?d ´ó|²Ñç @  œIaO?d X´óŒÍ+ž @  œJbO?d ˜´ó¬8)` @  œKcO?d Ø´ó¯bk¬ @  œLdO?d µó*çD @  œMeO?d XµóU= @  œNfO?d ˜µó¯ Ã @  œOgO?d صó’°$_ @  œPhO?d ¶óô„ž @  œQiO?d X¶óÿ‹~ç @  œRjO?d ˜¶óß~| @  œSkO?d ضóÜ$>Õ @  œTlO?d ·ó l²= @  œUmO?d X·óüHD @  œVnO?d ˜·óÜæJº @  œWoO?d Ø·ó)-* @  œXpO?d ¸óø¡7 @  œYqO?d X¸óí‡[N @  œZrO?d ˜¸óÍrY° @  œ[sO?d ظóÎ(| @  œ\tO?d ¹ó`—” @  œ]uO?d X¹óîmí @  œ^vO?d ˜¹óÎêo @  œ_wO?d عóâüs? @  œ`xO?d ºó¸Óþ @  œayO?d XºóÇ)‡ @  œbzO?d ˜ºó¯2+y @  œc{O?d غó¬hiµ @  œd|O?d »ó| å] @  œe}O?d X»óŒ_$ @  œf~O?d ˜»ó¬ªÚ @  œgO?d Ø»ó)j @  œh€O?d ¼ó0$ñ @  œiO?d X¼óÀ[ c @  œj‚O?d ˜¼óà®  @  œkƒO?d ؼóãôKQ @  œl„O?d ½ó3¼Ç¹ @  œm…O?d X½óÃÃ=À @  œn†O?d ˜½óã6?> @  œo‡O?d ؽóÞ&¢ @  œpˆO?d ¾óCb¤c @  œq‰O?d X¾ó³^ @  œrŠO?d ˜¾ó“è\ä @  œs‹O?d ؾó²( @  œtŒO?d ¿ó@ú’À @  œuO?d X¿ó°…h¹ @  œvŽO?d ˜¿ópjG @uÐÀó  œwO?d Ø¿óe‘ × @  œxO?d 0Àóa\… @  œy‘O?d pÀóñ¦ü @  œz’O?d °ÀóÑë¤ @  œ{“O?d ðÀóÒ±æÎ @  œ|”O?d 0Áóùj& @  œ}•O?d pÁóò†_ @  œ~–O?d °ÁóÒs’¡ @  œ—O?d ðÁó³4¸. @  œ€˜O?d 0Âó.pï @  œ™O?d pÂóÞâ– @  œ‚šO?d °Âóþúàh @  œƒ›O?d ðÂóý ¢¤ @  œ„œO?d 0Ãó-è.L @  œ…O?d pÃóÝ—Ô5 @  œ†žO?d °ÃóýbÖË @  œ‡ŸO?d ðÃó•4ˆ‡ @  œˆ O?d 0ÄóŒz{ˆ @  œ‰¡O?d pÄó|ñ @  œŠ¢O?d °Äó\ðƒ @  œ‹£O?d ðÄó_ªÁà @  œŒ¤O?d 0ÅóâM+ @  œ¥O?d pÅó·R @  œŽ¦O?d °Åó_hµ¬ @  œ§O?d ðÅóbxŽ0 @  œ¨O?d 0Æóÿ<.ñ @  œ‘©O?d pÆóCÔˆ @  œ’ªO?d °Æó/¶Öv @  œ“«O?d ðÆó,씺 @  œ”¬O?d 0Çóü¤R @  œ•­O?d pÇó Ûâ+ @  œ–®O?d °Çó,.àÕ @  œ—¯O?d ðÇóÙχE @  œ˜°O?d 0Èóí0 X @  œ™±O?d pÈóOñ! @  œš²O?d °Èó=ºóß @  œ›³O?d ðÈó>à± @  œœ´O?d 0Éóî¨=û @  œµO?d pÉó×Ç‚ @  œž¶O?d °Éó>"Å| @  œŸ·O?d ðÉó4ÙP @  œ ¸O?d 0Êópy‘ @  œ¡¹O?d pÊóƒè @  œ¢ºO?d °Êó_ú @  œ£»O?d ðÊó\ ÃÚ @  œ¤¼O?d 0ËóŒèO2 @  œ¥½O?d pËó|—µK @  œ¦¾O?d °Ëó\b·µ @  œ§¿O?d ðËóÄdüè @  œ¨ÀO?d 0ÌóÝ*ç @  œ©ÁO?d pÌó-Uõž @  œªÂO?d °Ìó  ÷` @  œ«ÃO?d ðÌóúµ¬ @  œ¬ÄO?d 0ÍóÞ²9D @  œ­ÅO?d pÍó.ÍÃ= @  œ®ÆO?d °Íó8Áà @  œ¯ÇO?d ðÍó3(ú_ @  œ°ÈO?d 0Îó®lZž @  œ±ÉO?d pÎó^ ç @  œ²ÊO?d °Îó~æ¢ @  œ³ËO?d ðÎó}¼àÕ @  œ´ÌO?d 0Ïó­ôl= @  œµÍO?d pÏó]‹–D @  œ¶ÎO?d °Ïó}~”º @  œ·ÏO?d ðÏóˆŸó* @  œ¸ÐO?d 0Ðó6AO˜ @  œ¹ÑO?d pÐóÆ>µá @  œºÒO?d °ÐóæË· @  œ»ÓO?d ðÐóå‘õÓ @  œ¼ÔO?d 0Ñó5Ùy; @  œ½ÕO?d pÑóŦƒB @  œ¾ÖO?d °ÑóåS¼ @  œ¿×O?d ðÑógB› @  œÀØO?d 0Òóú;à @  œÁÙO?d pÒó yÁº @  œÂÚO?d °Òó*ŒÃD @  œÃÛO?d ðÒó)Öˆ @  œÄÜO?d 0Óóùž ` @  œÅÝO?d pÓó á÷ @  œÆÞO?d °Óó)õç @  œÇßO?d ðÓóAB«« @  œÈàO?d 0ÔóX X¤ @  œÉáO?d pÔó¨s¢Ý @  œÊâO?d °Ô󈆠# @  œËãO?d ðÔó‹Üâï @  œÌäO?d 0Õó[”n @  œÍåO?d pÕó«ë”~ @  œÎæO?d °Õó‹–€ @  œÏçO?d ðÕó¶­ @  œÐèO?d 0Öó+J Ý @  œÑéO?d pÖóÛ5÷¤ @  œÒêO?d °ÖóûÀõZ @  œÓëO?d ðÖóøš·– @  œÔìO?d 0×ó(Ò;~ @  œÕíO?d p×óØ­Á @  œÖîO?d °×óøXÃù @  œ×ïO?d ð×ó ¹¤i @  œØðO?d 0Øó9F(t @  œÙñO?d pØóÉ9Ò  @  œÚòO?d °ØóéÌÐó @  œÛóO?d ðØóê–’? @  œÜôO?d 0Ùó:Þ× @  œÝõO?d pÙóÊ¡ä® @  œÞöO?d °ÙóêTæP @  œß÷O?d ðÙóÆBú| @  œàøO?d 0Úó[Z½ @  œáùO?d pÚó«y Ä @  œâúO?d€ °ÚóÿO¾œ @  ûO?d ðÚóT´y @  üO?d 0ÛóÍ8‘ @  ýO?d pÛóø*9 @  þO?d °ÛóØß;û @  ÿO?d ðÛóOò @  P?d 0Üó ûý @  P?d pÜó2Ì^þ @  P?d °Üó9\ @   P?d ðÜóÔ*å! @   P?d 0ÝóbiÉ @   P?d pÝó1Th] @   P?d °Ýó¡j£ @   P?d ðÝóO¢0¥ @  P?d 0ÞóÒæd @   P?d pÞóAŠ ‡ @   P?d °Þóa y @   P?d ðÞó§l°X @   P?d 0ßów$<° @   P?d pßóB=$ @  P?d uÐàó/°ßóbç?Ú @  P?d ðßóY´0 @  P?d Hàó@YÆ @  P?d ˆàóܹéå @  P?d Èàó^(þ; @  P?d áóÊâÜ, @  P?d HáóHsËò @  P?d ˆáóß!ßF @  P?d Èáó]°È˜ @  P?d âóf% @  P?d Hâóž÷2_ @  P?d ˆâó¾ù›, @   P?d Èâó8P?d Hêó?÷S! @  ?9P?d ˆêó±þüÀ @  @:P?d Èêó3oë @  A;P?d ëó§¥É  @  BP?d Èëó0÷ݽ @  E?P?d ìóýœ-K @  F@P?d Hìó :• @  GAP?d ˆìó㤊¶ @  HBP?d Èìóa5h @  ICP?d íóõÿ¿ @  JDP?d Híówn¨¡ @  KEP?d ˆíóà<¼ @  LFP?d Èíób­«Ë @  MGP?d îó#{FÒ @  NHP?d Hîó¡êQ  @  OIP?d ˆîóâßÏ @  PJP?d ÈîósÈ @  QKP?d ïó†¹ê @  RLP?d Hïó(ýØ @  SMP?d ˆïó“zél @  TNP?d Èïóëþ² @  UOP?d ðó÷m4 @  VPP?d Hðó”fzê @  WQP?d ˆðóÏÊÉ @  XRP?d ÈðóŠ^Ý @  YSP?d ñó”ÿ @  ZTP?d HñóœèÞ @  [UP?d ˆñó Wüj @  \VP?d Èñó‰Æë´ @  ]WP?d òóÈ­ @  ^XP?d HòóJs @  _YP?d ˆòój¸ @  `ZP?d Èòóè¯Þ @  a[P?d óó|ÔÉ @  b\P?d HóóþEš @  c]P?d ˆóóiŽ£ @  d^P?d Èóó놙} @  e_P?d ôóÖ½|š @  f`P?d HôóT,kD @  gaP?d ˆôóÈ…Ûg @  hbP?d ÈôóJ̹ @  icP?d õóÞÞî® @  jdP?d Hõó\Oùp @  keP?d ˆõóËíÄ @  lfP?d ÈõóIŒú @  mgP?d öóZ @  nhP?d HöóŠËÝ @  oiP?d ˆöó»ÃŽ @  pjP?d Èöó9R™À @  qkP?d ÷ó­˜»× @  rlP?d H÷ó/ ¬  @  smP?d ˆ÷ó¸[¸½ @  tnP?d È÷ó:ʯc @  uoP?d øó·÷ J @  vpP?d Høó5f” @  wqP?d ˆøó©Ï«· @  xrP?d Èøó+^¼i @  ysP?d ù󿔞~ @  ztP?d Hùó=‰  @  {uP?d ˆùóªW @  |vP?d Èùó(ÆŠÊ @  }wP?d úóigÓ @  ~xP?d Húóëp  @  yP?d ˆúó†ÞïÝ @  €zP?d ÈúóOø @  {P?d ûó…Ú @  ‚|P?d HûóÍÊ @  ƒ}P?d ˆûó…FÙ~ @  „~P?d Èûó×Π @  …P?d üó×zjÄ @  †€P?d HüóUë} @  ‡P?d ˆüóÉBÍ9 @  ˆ‚P?d ÈüóKÓÚç @  ‰ƒP?d ýóßøð @  Š„P?d Hýó]ˆï. @  ‹…P?d ˆýóÊÚûš @  Œ†P?d ÈýóHKìD @  ‡P?d þó ] @  ŽˆP?d Hþó‹ ƒ @  ‰P?d ˆþóº˜@ @  ŠP?d Èþó8•ž @  ‘‹P?d ÿó¬_­‰ @  ’ŒP?d Hÿó.κW @  “P?d ˆÿ󹜮ã @  ”uÐôŽP?d Èÿó; ¹= @  •P?d ô· „— @  –P?d `ô5˜“I @  —‘P?d  ô©1#j @  ˜’P?d àô+ 4´ @  ™“P?d ô¿j£ @  š”P?d `ô=û} @  ›•P?d  ôª©É @  œ–P?d àô(8 @  —P?d ôiîï @  ž˜P?d `ôëøÐ @  Ÿ™P?d  ôËqQ£ @   šP?d àôIàF} @  ¡›P?d ôÝ*dj @  ¢œP?d `ô_»s´ @  £P?d  ôÈég @  ¤žP?d àôJxpÞ @  ¥ŸP?d ôwC•9 @  ¦ P?d `ôõÒ‚ç @  §¡P?d  ôi{2Ä @  ¨¢P?d àôëê% @  ©£P?d ô   @  ª¤P?d `ôý±Ó @  «¥P?d  ôjãg @  ¬¦P?d àôèr¹ @  ­§P?d ô©¤þ  @  ®¨P?d `ô+5é~ @  ¯©P?d  ô=g½ @  °ªP?d àô˜¬pc @  ±«P?d ô fRt @  ²¬P?d `ôŽ÷Eª @  ³­P?d  ô¥Q @  ´®P?d àô›4FÀ @  µ¯P?d ô åé @  ¶°P?d `ô”˜ò7 @  ·±P?d  ô1B @  ¸²P?d àôŠ UÊ @  ¹³P?d ôjwÝ @  º´P?d ` ôœû` @  »µP?d   ô ©t· @  ¼¶P?d à ô‰8ci @  ½·P?d ôÈîŽp @  ¾¸P?d ` ôJ™® @  ¿¹P?d   ôÄv6O @  ÀºP?d à ôFç!‘ @  Á»P?d ôÒ-† @  Â¼P?d ` ôP¼X @  Ã½P?d   ôÇîì @  Ä¾P?d à ôE2 @  Å¿P?d ôˆçÄ @  ÆÀP?d ` ô …ð @  ÇÁP?d   ô–,@9 @  ÈÂP?d à ô½Wç @  ÉÃP?d ô€wuð @  ÊÄP?d ` ôæb. @  ËÅP?d   ô•´vš @  ÌÆP?d à ô%aD @  ÍÇP?d ôVóŒ] @  ÎÈP?d `ôÔb›ƒ @  ÏÉP?d  ôåj@ @  ÐÊP?d àôgûž @  ÑËP?d ôó1 ‰ @  ÒÌP?d `ôq 7W @  ÓÍP?d  ôæò#ã @  ÔÎP?d àôdc4= @  ÕÏP?d ôc§» @  ÖÐP?d `ôáî°e @  ×ÑP?d  ô}GF @  ØÒP?d àôÿÖ˜ @  ÙÓP?d ôk5 @  ÚÔP?d `ôé"Q @  ÛÕP?d  ô~ß6å @  ÜÖP?d àôüN!; @  Ý×P?d ô½˜Ì" @  ÞØP?d `ô? Ûü @  ßÙP?d  ôr @  àÚP?d àô–eQ @  áÛP?d ô \GF @  âÜP?d€ `ôJЧ˜ @  žÝP?d  ô<™û @  žÞP?d àô¾ìÛ @  žßP?d ôFzòÑ @  žàP?d `ôÄëå @  žáP?d  ô–ð V @  žâP?d àôaˆ @  žãP?d ôN`å @  žäP?d `ô̈w; @  ž åP?d  ôž“˜b @  ž æP?d àô¼ @  ž çP?d ô˜™H @  ž èP?d `ô Ž– @  ž éP?d  ôHaÏ @  žêP?d àôʆv @  žëP?d ô=_5œ @  žìP?d `ô¿Î"B @  žíP?d  ôíÕÍ @  žîP?d àôoDÚÅ @  žïP?d ô'0‚ @  žðP?d `ô¥¡•ß @  žñP?d  ô÷ºz† @  žòP?d àôu+mX @  žóP?d ô/S5 @  žôP?d `ô­Âë @  žõP?d  ôÿÙè² @  žöP?d àô}Hÿl @  ž÷P?d ôù×é˜ @  žøP?d `ô{FþF @  žùP?d  ô)] @  žúP?d àô«ÌÁ @  žûP?d ôMbü @  ž üP?d `ôÏ‚u" @  ž!ýP?d  ô™š{ @  ž"þP?d àô¥ @  ž#ÿP?d ôu‹‡  @  ž$Q?d `ô÷þ @  ž%Q?d  ô¥§ @  ž&Q?d àô'hy @  ž'Q?d ô}è @  ž(Q?d `ôÿyÊ @  ž)Q?d  ô­bí“ @  ž*Q?d àô/óúM @  ž+Q?d ô«lì¹ @  ž,Q?d `ô)ýûg @  ž- Q?d  ô{æ> @  ž. Q?d àôùwà @  ž/ Q?d ô®@m @  ž0 Q?d `ôŒ?W³ @  ž1 Q?d  ôÞ$¸êuÐ ô @  ž2Q?d àô\µ¯4 @  ž3Q?d 8 ôQ5¥‹ @  ž4Q?d x ôÓ¤²U @  ž5Q?d ¸ ô¿]  @  ž6Q?d ø ô.JÒ @  ž7Q?d 8!ôYV7¿ @  ž8Q?d x!ôÛÇ a @  ž9Q?d ¸!ô‰ÜÏ8 @  ž:Q?d ø!ô MØæ @  ž;Q?d 8"ôÒÎ @  ž<Q?d x"ô CÙÌ @  ž=Q?d ¸"ô_X6• @  ž>Q?d ø"ôÝÉ!K @  ž?Q?d 8#ô•Cä @  ž@Q?d x#ô€T: @  žAQ?d ¸#ôE›»c @  žBQ?d ø#ôÇ ¬½ @  žCQ?d 8$ô?x²· @  žD Q?d x$ô½é¥i @  žE!Q?d ¸$ôïòJ0 @  žF"Q?d ø$ômc]î @  žG#Q?d 8%ô7 ƒ @  žH$Q?d x%ôµŠ7] @  žI%Q?d ¸%ôç‘Ø @  žJ&Q?d ø%ôeÏÚ @  žK'Q?d 8&ôáŸÙ. @  žL(Q?d x&ôcÎð @  žM)Q?d ¸&ô1!© @  žN*Q?d ø&ô³„6w @  žO+Q?d 8'ôD]uú @  žP,Q?d x'ôÆÌb$ @  žQ-Q?d ¸'ô”×} @  žR.Q?d ø'ôFš£ @  žS/Q?d 8(ô^2Âg @  žT0Q?d x(ôÜ£Õ¹ @  žU1Q?d ¸(ôޏ:à @  žV2Q?d ø(ô )-> @  žW3Q?d 8)ôVQPS @  žX4Q?d x)ôÔÀG @  žY5Q?d ¸)ô†Û¨Ô @  žZ6Q?d ø)ôJ¿  @  ž[7Q?d 8*ô€Õ©þ @  ž\8Q?d x*ôD¾  @  ž]9Q?d ¸*ôP_Qy @  ž^:Q?d ø*ôÒÎF§ @  ž_;Q?d 8+ô4"š @  ž`Q?d ø+ôf Íà @  žc?Q?d 8,ôn(ÆØ @  žd@Q?d x,ôì¹Ñ @  žeAQ?d ¸,ô¾¢>_ @  žfBQ?d ø,ô<3) @  žgCQ?d 8-ôfKTì @  žhDQ?d x-ôäÚC2 @  žiEQ?d ¸-ô¶Á¬k @  žjFQ?d ø-ô4P»µ @  žkGQ?d 8.ô°Ï­A @  žlHQ?d x.ô2^ºŸ @  žmIQ?d ¸.ô`EUÆ @  žnJQ?d ø.ôâÔB @  žoKQ?d 8/ô • @  žpLQ?d x/ô—œK @  žqMQ?d ¸/ôŇù @  žrNQ?d ø/ôGîÌ @  žsOQ?d 80ô…C†§ @  žtPQ?d x0ôÒ‘y @  žuQQ?d ¸0ôUÉ~  @  žvRQ?d ø0ô×Xiþ @  žwSQ?d 81ô “ @  žxTQ?d x1ô±M @  žyUQ?d ¸1ô]ªì @  žzVQ?d ø1ôß;ûÊ @  ž{WQ?d 82ô[¤í> @  ž|XQ?d x2ôÙ5úà @  ž}YQ?d ¸2ô‹.¹ @  ž~ZQ?d ø2ô ¿g @  ž[Q?d 83ô¢1Pù @  ž€\Q?d x3ô  G' @  ž]Q?d ¸3ôr»¨~ @  ž‚^Q?d ø3ôð*¿  @  žƒ_Q?d 84ôX¡ª @  ž„`Q?d x4ôŠÉ¶t @  ž…aQ?d ¸4ôØÒY- @  ž†bQ?d ø4ôZCNó @  ž‡cQ?d 85ô;3ž @  žˆdQ?d x5ô‚ª$@ @  ž‰eQ?d ¸5ôбË @  žŠfQ?d ø5ôR ÜÇ @  ž‹gQ?d 86ôÖ¿Ê3 @  žŒhQ?d x6ôT.Ýí @  žiQ?d ¸6ô52´ @  žŽjQ?d ø6ô„¤%j @  žkQ?d 87ôs}fç @  žlQ?d x7ôñìq9 @  ž‘mQ?d ¸7ô£÷ž` @  ž’nQ?d ø7ô!f‰¾ @  ž“oQ?d 88ôiÑz @  ž”pQ?d x8ôëƒÆ¤ @  ž•qQ?d ¸8ô¹˜)ý @  ž–rQ?d ø8ô; ># @  ž—sQ?d 89ôaqCN @  ž˜tQ?d x9ôãàT @  ž™uQ?d ¸9ô±û»É @  žšvQ?d ø9ô3j¬ @  ž›wQ?d 8:ô·õºã @  žœxQ?d x:ô5d­= @  žyQ?d ¸:ôgBd @  žžzQ?d ø:ôåîUº @  žŸ{Q?d 8;ô11‡ @  ž |Q?d x;ô &Y @  ž¡}Q?d ¸;ôÓ»É @  ž¢~Q?d ø;ôQ*ÞÞ @  ž£Q?d 8<ôDÎW @  ž¤€Q?d x<ôÆ_–‰ @  ž¥Q?d ¸<ô”DyÐ @  ž¦‚Q?d ø<ôÕn @  ž§ƒQ?d 8=ôL­c @  ž¨„Q?d x=ôÎ<½ @  ž©…Q?d ¸=ôœ'ëä @  žª†Q?d ø=ô¶ü: @  ž«‡Q?d 8>ôš)êÎ @  ž¬ˆQ?d x>ô¸ý @  ž­‰Q?d ¸>ôJ£I @  ž®ŠQ?d ø>ôÈ2— @  ž¯‹Q?d 8?ô?ëF @  ž°ŒQ?d x?ô½zQÄ @  ž±Q?duÐ@ô7 ¸?ôïa¾ @  ž²ŽQ?d ø?ôT7u– @  ž³ Q?d P@ôës @  ž´ Q?d @ôËå @  žµ ‘Q?d Ð@ô;šãô @  ž¶ ’Q?d AôëÒo @  ž· “Q?d PAôãs‰G @  ž¸ ”Q?d AôÆ‹¹ @  ž¹ •Q?d ÐAô3ùqÀ @  žº –Q?d Bô®½Ñ @  ž» —Q?d PBô5÷pê @  ž¼ ˜Q?d Bôr @  ž½ ™Q?d ÐBôå}ˆm @  ž¾ šQ?d Cô55… @  ž¿ ›Q?d PCô/4ý @  žÀ œQ?d CôÁÿâ @  žÁ Q?d ÐCôÿ¾› @  ž žQ?d Dôæðö” @  žà ŸQ?d PDô…] O @  žÄ  Q?d Dô¥¨± @  žÅ ¡Q?d ÐDôU×ôÈ @  žÆ ¢Q?d Eô…Ÿx  @  žÇ £Q?d PEô>ž{ @  žÈ ¤Q?d Eô­Ëœ… @  žÉ ¥Q?d ÐEô]´fü @  žÊ ¦Q?d FôÀðÆ= @  žË §Q?d PFô[ºgÖ @  žÌ ¨Q?d Fô{Oe( @  žÍ ©Q?d ÐFô‹0ŸQ @  žÎ ªQ?d Gô[x¹ @  žÏ «Q?d PGôþxË @  žÐ ¬Q?d GôÞÉü @  žÑ ­Q?d ÐGô.ò3… @  žÒ ®Q?d Hô ¿˜ @  žÓ ¯Q?d PHôä|Ÿ @  žÔ °Q?d HôÄâ~a @  žÕ ±Q?d ÐHô4„ @  žÖ ²Q?d IôäÕð @  ž× ³Q?d PIôìtî« @  žØ ´Q?d IôÌìU @  žÙ µQ?d ÐIô<þ, @  žÚ ¶Q?d Jô¡º¶í @  žÛ ·Q?d PJô:ð @  žÜ ¸Q?d Jôø @  žÝ ¹Q?d ÐJôêzï @  žÞ ºQ?d Kô:2ci @  žß »Q?d PKôŽ4œb @  žà ¼Q?d Kô®Ážœ @  žá ½Q?d ÐKô^¾då @  žâ ¾Q?d€ Lô33‹L @  Ÿ ¿Q?d PLôA,¯ @  Ÿ ÀQ?d Lôaz.Q @  Ÿ ÁQ?d ÐLôTL/Å @  Ÿ ÂQ?d Mô„£- @  Ÿ ÃQ?d PMôB  @  Ÿ ÄQ?d Môbâò @  Ÿ ÅQ?d ÐMô\/½ñ @  Ÿ ÆQ?d NôÁk0 @  Ÿ ÇQ?d PNôŸhG6 @  Ÿ ÈQ?d Nô¿EÈ @  Ÿ ÉQ?d ÐNôŠ«D\ @  Ÿ ÊQ?d OôZãÈ´ @  Ÿ ËQ?d POôœðq• @  Ÿ ÌQ?d Oô¼sk @  Ÿ ÍQ?d ÐOô/ièˆ @  Ÿ ÎQ?d Pô‘·T: @  Ÿ ÏQ?d PPôªälÐ @  Ÿ ÐQ?d PôŠn. @  Ÿ ÑQ?d ÐPô¿'oº @  Ÿ ÒQ?d QôooãR @  Ÿ ÓQ?d PQô©|Zs @  Ÿ ÔQ?d Qô‰‰X @  Ÿ ÕQ?d ÐQô·DýŽ @  Ÿ ÖQ?d Rô*]O @  Ÿ ×Q?d PRôtI @  Ÿ ØQ?d RôTö· @  Ÿ ÙQ?d ÐRôaÀ# @  Ÿ ÚQ?d Sô±ˆˆË @  Ÿ ÛQ?d PSôw›1ê @  Ÿ ÜQ?d SôWn3 @  Ÿ ÝQ?d ÐSôÕG @  Ÿ ÞQ?d TôÌJ|H @  Ÿ! ßQ?d PTôj®}~ @  Ÿ" àQ?d TôJ[€ @  Ÿ# áQ?d ÐTôm~ @  Ÿ$ âQ?d Uô¯%òü @  Ÿ% ãQ?d PUôi6KÝ @  Ÿ& äQ?d UôIÃI# @  Ÿ' åQ?d ÐUôwì  @  Ÿ( æQ?d VôêJLá @  Ÿ) çQ?d PVô´Iç @  Ÿ* èQ?d Vô”¼ @  Ÿ+ éQ?d ÐVô¡Š @  Ÿ, êQ?d Wôq™e @  Ÿ- ëQ?d PWô·Ñ D @  Ÿ. ìQ?d Wô—$"º @  Ÿ/ íQ?d ÐWôH¹Y @  Ÿ0 îQ?d Xô0·5D @  Ÿ1 ïQ?d PXô ä ® @  Ÿ2 ðQ?d Xô+P @  Ÿ3 ñQ?d ÐXô'Ä @  Ÿ4 òQ?d YôÎo‚, @  Ÿ5 óQ?d PYô|;  @  Ÿ6 ôQ?d Yô(‰9ó @  Ÿ7 õQ?d ÐYôDœð @  Ÿ8 öQ?d Zô‹<1 @  Ÿ9 ÷Q?d PZôÕf7 @  Ÿ: øQ?d ZôõödÉ @  Ÿ; ùQ?d ÐZôÀÀe] @  Ÿ< úQ?d [ôˆéµ @  Ÿ= ûQ?d P[ôÖ›P” @  Ÿ> üQ?d [ôönRj @  Ÿ? ýQ?d Ð[ôÚè« @  Ÿ@ þQ?d \ôÃM¤ @  ŸA ÿQ?d P\ôEz;8 @  ŸB R?d \ôe9Æ @  ŸC R?d Ð\ôP¹8R @  ŸD R?d ]ô€ñ´º @  ŸE R?d P]ôFâ › @  ŸF R?d ]ôfe @  ŸG R?d Ð]ôXÚªf @  ŸH R?d ^ôÅž § @  ŸI R?d P^ô›P¡ @  ŸJ R?d ^ô»hR_ @  ŸK  R?d Ð^ôŽ^SË @  ŸL  R?d _ô^ß# @  ŸM  R?d P_ô˜f @  ŸN  R?d _ô¸ðdü @  ŸuÐ`ôO  R?d Ð_ô[#Ê @  ŸPR?d (`ô¬£–R @  ŸQR?d h`ô—𮸠@  ŸRR?d ¨`ô·¬F @  ŸSR?d è`ô‚3­Ò @  ŸTR?d (aôR{!: @  ŸUR?d haô”h˜ @  ŸVR?d ¨aô´šå @  ŸWR?d èaôŠP?æ @  ŸXR?d (bôŸ' @  ŸYR?d hbôIÅ! @  ŸZR?d ¨bôiâÇß @  Ÿ[R?d èbô\ÔÆK @  Ÿ\R?d (côŒœJ£ @  Ÿ]R?d hcôJó‚ @  Ÿ^R?d ¨côjzñ| @  Ÿ_R?d ècôèM/ @  Ÿ`R?d (dôñ^¾  @  ŸaR?d hdôWº¿ @  Ÿb R?d ¨dôwO½è @  Ÿc!R?d èdôBy¼| @  Ÿd"R?d (eô’10” @  Ÿe#R?d heôT"‰µ @  Ÿf$R?d ¨eôt׋K @  Ÿg%R?d èeôJ.H @  Ÿh&R?d (fô×^މ @  Ÿi'R?d hfô‰]Ô @  Ÿj(R?d ¨fô©¨Öq @  Ÿk)R?d èfôœž×å @  Ÿl*R?d (gôLÖ[  @  Ÿm+R?d hgôŠÅâ, @  Ÿn,R?d ¨gôª0àÒ @  Ÿo-R?d ègô9\{1 @  Ÿp.R?d (hô £÷, @  Ÿq/R?d hhô6ðÏÆ @  Ÿr0R?d ¨hôÍ8 @  Ÿs1R?d èhô#3̬ @  Ÿt2R?d (iôó{@D @  Ÿu3R?d hiô5hùe @  Ÿv4R?d ¨iôû› @  Ÿw5R?d èiô+P^˜ @  Ÿx6R?d (jô¶þY @  Ÿy7R?d hjôè¤_ @  Ÿz8R?d ¨jôÈ⦡ @  Ÿ{9R?d èjôýÔ§5 @  Ÿ|:R?d (kô-œ+Ý @  Ÿ};R?d hkôë’ü @  Ÿ~R?d (lôéý @  Ÿ?R?d hlôK»ýÚ @  Ÿ‚@R?d ¨lôkNÿ$ @  ŸƒAR?d èlô^xþ° @  Ÿ„BR?d (môŽ0rX @  Ÿ…CR?d hmôH#Ëy @  Ÿ†DR?d ¨môhÖɇ @  Ÿ‡ER?d èmôVl„ @  ŸˆFR?d (nôË_ÌE @  Ÿ‰GR?d hnô•\–C @  ŸŠHR?d ¨nôµ©”½ @  Ÿ‹IR?d ènô€Ÿ•) @  ŸŒJR?d (oôP×Á @  ŸKR?d hoô–Ä à @  ŸŽLR?d ¨oô¶1¢ @  ŸMR?d èoô%]9ý @  ŸNR?d (pô›ƒ…O @  Ÿ‘OR?d hpô Ð½¥ @  Ÿ’PR?d ¨pô€%¿[ @  Ÿ“QR?d èpôµ¾Ï @  Ÿ”RR?d (qôe[2' @  Ÿ•SR?d hqô£H‹ @  Ÿ–TR?d ¨qôƒ½‰ø @  Ÿ—UR?d èqô½p,û @  Ÿ˜VR?d (rô 4Œ: @  Ÿ™WR?d hrô~7Ö< @  ŸšXR?d ¨rô^ÂÔ @  Ÿ›YR?d èrôkôÕV @  ŸœZR?d (sô»¼Y¾ @  Ÿ[R?d hsô}¯àŸ @  Ÿž\R?d ¨sô]Zâa @  ŸŸ]R?d èsôß0^2 @  Ÿ ^R?d (tôÆ~­= @  Ÿ¡_R?d htô`š¬  @  Ÿ¢`R?d ¨tô@o®õ @  Ÿ£aR?d ètôuY¯a @  Ÿ¤bR?d (uô¥#‰ @  Ÿ¥cR?d huôcš¨ @  Ÿ¦dR?d ¨uôC÷˜V @  Ÿ§eR?d èuô}:=U @  Ÿ¨fR?d (vôà~” @  Ÿ©gR?d hvô¾}Ç’ @  ŸªhR?d ¨vôžˆÅl @  Ÿ«iR?d èvô«¾Äø @  Ÿ¬jR?d (wô{öH @  Ÿ­kR?d hwô½åñ1 @  Ÿ®lR?d ¨wôóÏ @  Ÿ¯mR?d èwô|h, @  Ÿ°nR?d (xô:ƒä1 @  Ÿ±oR?d hxôÐÜÛ @  Ÿ²pR?d ¨xô!%Þ% @  Ÿ³qR?d èxôß± @  Ÿ´rR?d (yôÄ[SY @  ŸµsR?d hyôHêx @  Ÿ¶tR?d ¨yô"½è† @  Ÿ·uR?d èyôpM… @  Ÿ¸vR?d (zô4íD @  Ÿ¹wR?d hzôß7·B @  ŸºxR?d ¨zôÿµ¼ @  Ÿ»yR?d èzôÊô´( @  Ÿ¼zR?d ({ô¼8À @  Ÿ½{R?d h{ôܯá @  Ÿ¾|R?d ¨{ôüZƒ @  Ÿ¿}R?d è{ôÐ79Þ @  ŸÀ~R?d (|ôÉyÊÑ @  ŸÁR?d h|ô‚ Šd @  ŸÂ€R?d ¨|ô¢þˆš @  ŸÃR?d è|ô—ȉ @  ŸÄ‚R?d (}ôG€æ @  ŸÅƒR?d h}ô“¼Ç @  ŸÆ„R?d ¨}ô¡f¾9 @  ŸÇ…R?d è}ôŸ«: @  ŸÈ†R?d (~ôï»û @  ŸÉ‡R?d h~ô\ìáý @  ŸÊˆR?d ¨~ô|ã @  ŸË‰R?d è~ôI/â— @  ŸÌŠR?d (ô™gn @  ŸÍ‹R?d hô_t×^ @  ŸÎŒR?d ¨ôuЀô'Õ  @  ŸÏR?d èôÕ*’– @  ŸÐ ŽR?d @€ô»”pâ @  ŸÑ R?d €€ô"£]( @  ŸÒ R?d À€ô 2Jö @  ŸÓ ‘R?d ôÇÝÐT @  ŸÔ ’R?d @ôELÇŠ @  ŸÕ “R?d €ô!;k‹ @  ŸÖ ”R?d Àô£ª|U @  Ÿ× •R?d ‚ô‚²nI @  ŸØ –R?d @‚ô#y— @  ŸÙ —R?d €‚ôüD6± @  ŸÚ ˜R?d À‚ô~Õ!o @  ŸÛ ™R?d ƒô:»Í @  ŸÜ šR?d @ƒô›«¬ @  ŸÝ ›R?d €ƒôÿÜ @  ŸÞ œR?d Àƒô}MÌ @  Ÿß R?d „ôdøON @  Ÿà žR?d @„ôæiX @  Ÿá ŸR?d €„ôâéL† @  Ÿâ  R?d€ À„ôX©x @    ¡R?d …ôÞ¨{ó @    ¢R?d @…ô\9l- @    £R?d €…ôý;Á @    ¤R?d À…ô–, @    ¥R?d †ô  @    ¿R?d €Œô¯Ïy  @    ÀR?d ÀŒô-^nÓ @   ! ÁR?d ôøœ @   " ÂR?d @ô iB @   # ÃR?d €ô¬WO® @   $ ÄR?d Àô.ÆXp @   % ÅR?d ŽôÁl @   & ÆR?d @ŽôCýÈ @   ' ÇR?d €Žôq(” @   ( ÈR?d ÀŽôó¹J @   ) ÉR?d ôQd @   * ÊR?d @ôÓŽsÛ @   + ËR?d €ôr°$7 @   , ÌR?d Àôð!3é @   - ÍR?d ô<bü @   . ÎR?d @ô¾€u" @   / ÏR?d €ôD¤9r @   0 ÐR?d ÀôÆ5.¬ @   1 ÑR?d ‘ôd“Oã @   2 ÒR?d @‘ôæX= @   3 ÓR?d €‘ôG<Ñ @   4 ÔR?d À‘ôÅ­ @   5 ÕR?d ’ô*Ui @   6 ÖR?d @’ô¨–B· @   7 ×R?d €’ôšCRë @   8 ØR?d À’ôÒE5 @   9 ÙR?d “ôºt$z @   : ÚR?d @“ô8å3¤ @   ; ÛR?d €“ô™ÛdH @   < ÜR?d À“ôJs– @   = ÝR?d ”ôpêm> @   > ÞR?d @”ôò{zà @   ? ßR?d €”ô*é.N @   @ àR?d À”ô¨x9 @   A áR?d •ô ÞXß @   B âR?d @•ôˆOO @   C ãR?d €•ô)qí @   D äR?d À•ô«à3 @   E åR?d –ôDJBU @   F æR?d @–ôÆÛU‹ @   G çR?d €–ôôE× @   H èR?d À–ôvŸR  @   I éR?d —ôÔ93F @   J êR?d @—ôV¨$˜ @   K ëR?d €—ô÷–st @   L ìR?d À—ôudª @   M íR?d ˜ô3 @   N îR?d @˜ô±‡Î @   O ïR?d €˜ôK£^ž @   P ðR?d À˜ôÉ2I@ @   Q ñR?d ™ôk”( @   R òR?d @™ôé?Ñ @   S óR?d €™ôH;h= @   T ôR?d À™ôʪã @   U õR?d šô%2… @   V öR?d @šô§‘%[ @   W ÷R?d €šô•D5 @   X øR?d ÀšôÕ"Ù @   Y ùR?d ›ôµsC– @   Z úR?d @›ô7âTH @   [ ûR?d €›ô–ܤ @   \ üR?d À›ôMz @   ] ýR?d œôí Ò @   ^ þR?d @œôý|  @   _ ÿR?d €œô[¿ @   ` S?d Àœô›‰La @   a S?d ô9/-. @   b S?d @ô»¾:ð @   c S?d €ô€m @   d S?d Àô˜z @   e S?d žôw»7¤ @   f S?d @žôõ* z @   g S?d €žôÇÿ0& @   h S?d ÀžôEn'ø @   i  S?d ŸôçÈF· @   j  S?d @ŸôeYQi @   k  S?d €ŸôÄg… @   l  SuРô?d ÀŸôFö[ @   m  S?d  ôE"š @   n S?d X ôÇ‚5D @   o S?d ˜ ô=¦y @   p S?d Ø ô¿7nÊ @   q S?d ¡ô‘… @   r S?d X¡ôŸ[ @   s S?d ˜¡ô>>O· @   t S?d Ø¡ô¼¯Xi @   u S?d ¢ôS @   v S?d X¢ôÑ”Ñ @   w S?d ˜¢ôãA @   x S?d Ø¢ôaÐS @   y S?d £ôÃvd @   z S?d X£ôAçs @   { S?d ˜£ôàÙ$. @   | S?d Ø£ôbH3ð @   } S?d ¤ô è-X @   ~ S?d X¤ô‹y:† @    S?d ˜¤ô°½^ @   €  S?d ؤô2,IÇ @    !S?d ¥ôŠ(ˆ @   ‚ "S?d X¥ô?V @   ƒ #S?d ˜¥ô³%hº @   „ $S?d Ø¥ôÊÚDd @   …%S?d ¦ô%p  @   †&S?d X¦ô§áÜ @   ‡'S?d ˜¦ô•4€ @   ˆ(S?d ئô¥^ @   ‰)S?d §ôµx @   Š*S?d X§ô7’oÏ @   ‹+S?d ˜§ô–¬8# @   Œ,S?d اô=/ý @   -S?d ¨ôR,NG @   Ž.S?d X¨ôнY™ @   /S?d ˜¨ô*™É @   0S?d بô¨ @   ‘1S?d ©ô ®cX @   ’2S?d X©ôˆ?t† @   “3S?d ˜©ô)#j @   ”4S?d Ø©ô«4´ @   •5S?d ªôD:yÒ @   –6S?d XªôÆ«n  @   —7S?d ˜ªôô~~P @   ˜8S?d تôvïiŽ @   ™9S?d «ôÔIÁ @   š:S?d X«ôVØ @   ›;S?d ˜«ô÷æHó @   œS?d X¬ôœFV[ @   Ÿ?S?d ˜¬ôƒv @    @S?d جô˜¨ @   ¡AS?d ­ô:´gç @   ¢BS?d X­ô¸%p9 @   £CS?d ˜­ô'Õ @   ¤DS?d Ø­ô›Š0  @   ¥ES?d ®ôt }m @   ¦FS?d X®ôö±j³ @   §GS?d ˜®ôÄdzï @   ¨HS?d Ø®ôFõm1 @   ©IS?d ¯ôäS ~ @   ªJS?d X¯ôf  @   «KS?d ˜¯ôÇüLL @   ¬LS?d دôEm[’ @   ­MS?d °ô‰] ‡ @   ®NS?d X°ô ÌY @   ¯OS?d ˜°ôñèQ  @   °PS?d ذôsyF× @   ±QS?d ±ôÑß'˜ @   ²RS?d X±ôSN0F @   ³SS?d ˜±ôòpgª @   ´TS?d رôpápt @   µUS?d ²ôŸK= @   ¶VS?d X²ôÚ*Ì @   ·WS?d ˜²ô/: @   ¸XS?d زô­ž-N @   ¹YS?d ³ô8L @   ºZS?d X³ô©[ß @   »[S?d ˜³ô,— 3 @   ¼\S?d سô®í @   ½]S?d ´ôŦE @   ¾^S?d X´ôG7› @   ¿_S?d ˜´ôŸ¥F5 @   À`S?d Ø´ô4Që @   ÁaS?d µô¿’0¤ @   ÂbS?d Xµô='z @   ÃcS?d ˜µôœ=p– @   ÄdS?d صô¬gH @   ÅeS?d ¶ôñ*. @   ÆfS?d X¶ôs—=ð @   ÇgS?d ˜¶ôAB-¬ @   ÈhS?d ضôÃÓ:r @   ÉiS?d ·ôau[= @   ÊjS?d X·ôãäLã @   ËkS?d ˜·ôBÚ @   ÌlS?d Ø·ôÀK Ñ @   ÍmS?d ¸ô†Zmk @   ÎnS?d X¸ôËzµ @   ÏoS?d ˜¸ôþï6å @   ÐpS?d ظô|~!; @   ÑqS?d ¹ôÞØ@t @   ÒrS?d X¹ô\IWª @   ÓsS?d ˜¹ôýwF @   ÔtS?d عôæ˜ @   ÕuS?d ºôLZþ @   ÖvS?d XºôÝM  @   ×wS?d ˜ºô ]| @   ØxS?d غô¢™J¢ @   ÙyS?d »ô?+í @   ÚzS?d X»ô‚®<3 @   Û{S?d ˜»ô#kß @   Ü|S?d Ø»ô¡| @   Ý}S?d ¼ôÊ¡b© @   Þ~S?d X¼ôH0uw @   ßS?d ˜¼ôÓ3fÈ @   à€S?d ؼôQ¢q @   áS?d ½ôóY @   â‚S?d€ X½ôV! @  ¡ƒS?d ˜½ôE)ä @  ¡„S?d ؽôǸ: @  ¡…S?d ¾ôí[¥± @  ¡†S?d X¾ôoʲo @  ¡‡S?d ˜¾ô“­ýI @  ¡ˆS?d ؾô<ê— @  ¡‰S?d ¿ô}(Ô¢ @  ¡ŠS?d X¿ôÿ¹Ã| @  ¡ ‹S?d ˜¿ô›Îo} @uÐÀô  ¡ ŒS?d Ø¿ôâ1C£ @  ¡ S?d 0Àô1f» @  ¡ ŽS?d pÀô³÷e @  ¡ S?d °Àô*À>¯ @  ¡ S?d ðÀô¨Q)q @  ¡ ‘S?d 0Áôiä)¤ @  ¡ ’S?d pÁôëu>z @  ¡ “S?d °Áô’{ @  ¡ ”S?d ðÁô “…¥ @  ¡ •S?d 0Âô'p3. @  ¡ –S?d pÂô¥á$ð @  ¡ —S?d °ÂôY†kÖ @  ¡ ˜S?d ðÂôÛ| @  ¡ ™S?d 0Ãô·B= @  ¡ šS?d pÃô5’Uã @  ¡ ›S?d °ÃôQåùâ @  ¡ œS?d ðÃôÓtî< @  ¡ S?d 0Äô} y @  ¡ žS?d pÄôÿ § @  ¡ ŸS?d °ÄôûŒ± @  ¡  S?d ðÄôyo @  ¡ ¡S?d 0Åô©®8  @  ¡ ¢S?d pÅô+?/Ô @  ¡! £S?d °ÅôOHƒÕ @  ¡" ¤S?d ðÅôÍÙ”  @  ¡# ¥S?d 0Æôç:"€ @  ¡$ ¦S?d pÆôe«5^ @  ¡% §S?d °Æô™Ìzx @  ¡& ¨S?d ðÆô]m¦ @  ¡' ©S?d 0ÇôwIS“ @  ¡( ªS?d pÇôõØDM @  ¡) «S?d °Çô‘¯èL @  ¡* ¬S?d ðÇô>ÿ’ @  ¡+ ­S?d 0ÈôfeÅ @  ¡, ®S?d pÈô÷r @  ¡- ¯S?d °Èô‹À_Ñ @  ¡. °S?d ðÈô QH @  ¡/ ±S?d 0ÉôÈäHÚ @  ¡0 ²S?d pÉôJu_ @  ¡1 ³S?d °Éô.ó @  ¡2 ´S?d ðÉô¬“äÛ @  ¡3 µS?d 0Êô†pRP @  ¡4 ¶S?d pÊôáEŽ @  ¡5 ·S?d °Êôø† ¨ @  ¡6 ¸S?d ðÊôzv @  ¡7 ¹S?d 0Ëô#C @  ¡8 ºS?d pËô”’4 @  ¡9 »S?d °Ëôð嘜 @  ¡: ¼S?d ðËôrtB @  ¡; ½S?d 0ÌôÜj @  ¡< ¾S?d pÌô^ }Ù @  ¡= ¿S?d °ÌôªÜ|Þ @  ¡> ÀS?d ðÌô(Mk @  ¡? ÁS?d 0ÍôVùJ÷ @  ¡@ ÂS?d pÍôÔh]) @  ¡A ÃS?d °Íô°ñ( @  ¡B ÄS?d ðÍô2Žæö @  ¡C ÅS?d 0ÎômP} @  ¡D ÆS?d pÎôšüG£ @  ¡E ÇS?d °Îôf›… @  ¡F ÈS?d ðÎôä [ @  ¡G ÉS?d 0Ïôˆ!n @  ¡H ÊS?d pÏô 6° @  ¡I ËS?d °Ïônøš± @  ¡J ÌS?d ðÏôìio @  ¡K ÍS?d 0Ðôå'— @  ¡L ÎS?d pÐôg0I @  ¡M ÏS?d °Ðôþ¶ƒ @  ¡N ÐS?d ðÐô|' ] @  ¡O ÑS?d 0Ñô½’ ˆ @  ¡P ÒS?d pÑô?V @  ¡Q ÓS?d °Ñô[t±W @  ¡R ÔS?d ðÑôÙ妉 @  ¡S ÕS?d 0Òôó @  ¡T ÖS?d pÒôq—Ü @  ¡U ×S?d °ÒôðHú @  ¡V ØS?d ðÒôa_$ @  ¡W ÙS?d 0Óôcua @  ¡X ÚS?d pÓôáävÏ @  ¡Y ÛS?d °Óô…“ÚÎ @  ¡Z ÜS?d ðÓôÍ @  ¡[ ÝS?d 0Ôô©ë(U @  ¡\ ÞS?d pÔô+z?‹ @  ¡] ßS?d °Ôô/ú+ @  ¡^ àS?d ðÔô­k ù @  ¡b äS?d ðÕô¯·' @  ¡c åS?d 0Öô3L¬ @  ¡d æS?d pÖô±Ýr @  ¡e çS?d °ÖôMºYT @  ¡f èS?d ðÖôÏ+NŠ @  ¡g éS?d 0×ô£?p¿ @  ¡h êS?d p×ô!®ga @  ¡i ëS?d °×ôEÙË` @  ¡j ìS?d ð×ôÇHܾ @  ¡k íS?d 0ØôDFé @  ¡l îS?d pØôÆQ7 @  ¡m ïS?d °Øô_¶|ý @  ¡n ðS?d ðØôÝ'k# @  ¡o ñS?d 0Ùô’kö @  ¡p òS?d pÙôž|( @  ¡q óS?d °ÙôútÐ) @  ¡r ôS?d ðÙôxåÇ÷ @  ¡s õS?d 0ÚôRq| @  ¡t öS?d pÚôЗf¢ @  ¡u ÷S?d °Úô,ð)„ @  ¡v øS?d ðÚô®a>Z @  ¡w ùS?d 0ÛôÂuo @  ¡x úS?d pÛô@ä± @  ¡y ûS?d °Ûô$“»° @  ¡z üS?d ðÛôŸÅp» @  ¡{ýS?d 0Üô1,•þ @  ¡|þS?d pÜô³½‚  @  ¡}ÿS?d °ÜôŽ/ @  ¡~T?d ðÜô›Tªñ @  ¡T?d 0Ýô¶»7 @  ¡€T?d pÝô„'¬é @  ¡T?d °ÝôàPè @  ¡‚T?d ðÝôbÁ6 @  ¡ƒT?d 0ÞôH"¡½ @  ¡„T?d pÞôʳ¶c @  ¡…T?d °Þô6ÔùE @  ¡†T?d ðÞô´Eî› @  ¡‡ T?d 0ßôØQЮ @  ¡ˆ T?d pßôZÀÇp @  ¡‰ T?d uÐàô/°ßô>·kq @  ¡Š T?d ðßô¼&|¯ @  ¡‹ T?d Hàô%4 @  ¡ŒT?d ˆàô2Ð6í @  ¡T?d Èàô ƒ @  ¡ŽT?d áôÙË‚ï @  ¡T?d HáôJ§  @  ¡T?d ˆáôjRò @  ¡‘T?d Èáô¬A¢Ó @  ¡’T?d âô1 @  ¡“T?d Hâô3† @  ¡”T?d ˆâô$Æx @  ¡•T?d ÈâôzÅ[~ @  ¡–T?d ãôª×– @  ¡—T?d Hãô”@r• @  ¡˜T?d ˆãô´µpk @  ¡™T?d Èãôr¦ÉJ @  ¡šT?d äôkè:E @  ¡›T?d Häô^Þ;Ñ @  ¡œT?d ˆäô~+9/ @  ¡T?d ÈäôØÏ8 @  ¡ž T?d åô‡´ñ @  ¡Ÿ!T?d HåôŠí¢ @  ¡ "T?d ˆåôª \ @  ¡¡#T?d Èåôl ³} @  ¡¢$T?d æôñO¼ @  ¡£%T?d HæôÄy( @  ¡¤&T?d ˆæôäŒÖ @  ¡¥'T?d ÈæôºJÐ @  ¡¦(T?d çôjÇÆ8 @  ¡§)T?d HçôT c; @  ¡¨*T?d ˆçôtÿaÅ @  ¡©+T?d Èçô²ìØä @  ¡ª,T?d èô†Tù @  ¡«-T?d Hèô³%Um @  ¡¬.T?d ˆèô“ÐW“ @  ¡­/T?d Èèô¨ƒoy @  ¡®0T?d éôxËã‘ @  ¡¯1T?d Héôë§xr @  ¡°2T?d ˆéôËRzŒ @  ¡±3T?d Èéô Aí @  ¡²4T?d êôcl @  ¡³5T?d Hêô¥3bø @  ¡´6T?d ˆêô…Æ` @  ¡µ7T?d ÈêôÛÅ: @  ¡¶8T?d ëô ¶è @  ¡·9T?d Hëô5@ë @  ¡¸:T?d ˆëôµ @  ¡¹;T?d ÈëôÓ¦¨4 @  ¡ºT?d ˆìôß+XQ @  ¡½?T?d Èìô‰ŸLv @  ¡¾@T?d íôY×Àž @  ¡¿AT?d Híôuºz_ @  ¡ÀBT?d ˆíôUOx¡ @  ¡ÁCT?d Èíô“\Á€ @  ¡ÂDT?d îôaA @  ¡ÃET?d Hîô;.`Õ @  ¡ÄFT?d ˆîôÛb+ @  ¡ÅGT?d ÈîôEØ8- @  ¡ÆHT?d ïô•´Å @  ¡ÇIT?d Hïô«]Æ @  ¡ÈJT?d ˆïô‹¨8 @  ¡ÉKT?d ÈïôM»ª @  ¡ÊLT?d ðôóe« @  ¡ËMT?d HðôÆS? @  ¡ÌNT?d ˆðôæ¦Á @  ¡ÍOT?d ÈðôÝõ-+ @  ¡ÎPT?d ñô ½¡Ã @  ¡ÏQT?d HñôžÑ:  @  ¡ÐRT?d ˆñô¾$8Þ @  ¡ÑST?d Èñôx7ÿ @  ¡ÒTT?d òôås!> @  ¡ÓUT?d HòôÐE ª @  ¡ÔVT?d ˆòôð°"T @  ¡ÕWT?d Èòô®³xR @  ¡ÖXT?d óô~ûôº @  ¡×YT?d Hóô@6Q¹ @  ¡ØZT?d ˆóô`ÃSG @  ¡Ù[T?d Èóô¦Ðêf @  ¡Ú\T?d ôô¿ži @  ¡Û]T?d HôôЍý @  ¡Ü^T?d ˆôôª] @  ¡Ý_T?d Èôô ¹5 @  ¡Þ`T?d õôÜñ—Ý @  ¡ßaT?d Hõô^›+Ž @  ¡àbT?d ˆõô~n)p @  ¡ácT?d Èõô¸}Q @  ¡âdT?d€ öôä~Ç @  ¢eT?d Höô0 Ž- @  ¢fT?d ˆöôüŒÓ @  ¢gT?d Èöô‹¶-8 @  ¢hT?d ÷ô[þ¡Ð @  ¢iT?d H÷ô«[© @  ¢jT?d ˆ÷ô‹tYW @  ¢kT?d È÷ôƒÕ¿  @  ¢lT?d øô·*3 @  ¢ mT?d HøôGUÉh @  ¢ nT?d ˆøôg Ë– @  ¢ oT?d Èøô™º‘ @  ¢ pT?d ùôIò„y @  ¢ qT?d Hùô¹~ @  ¢rT?d ˆùô™x|þ @  ¢sT?d Èùô)‡ @  ¢{T?d ÈûôâŸÏÜ @  ¢|T?d üôûÑ<Ó @  ¢}T?d Hüô ®Æª @  ¢~T?d ˆüô+[ÄT @  ¢T?d Èüô¥`  @  ¢€T?d ýôu(óä @  ¢T?d Hýô…W  @  ¢‚T?d ˆýô¥¢ c @  ¢ƒT?d Èýô¤ôh @  ¢ „T?d þôŒàT© @  ¢!…T?d Hþô|Ÿ®Ð @  ¢"†T?d ˆþô\j¬. @  ¢#‡T?d ÈþôÇ Å @  ¢$ˆT?d ÿôh- @  ¢%‰T?d Hÿôç{T @  ¢&ŠT?d ˆÿôÇâyª @  ¢'uÐõ‹T?d ÈÿôÏCŸñ @  ¢(ŒT?d õ€÷· @  ¢)T?d `õpˆMy @  ¢*ŽT?d  õP}O‡ @  ¢+T?d àõ®gŒ€ @  ¢,T?d õ~/h @  ¢-‘T?d `õŽPú @  ¢.’T?d  õ®¥øï @  ¢/“T?d àõ ¥ T @  ¢0”T?d õ–ပ @  ¢1•T?d `õfžzì @  ¢2–T?d  õFkx @  ¢3—T?d àõÝ!Ùù @  ¢4˜T?d õ iU @  ¢5™T?d `õý¯h @  ¢6šT?d  õÝã­– @  ¢7›T?d àõÕBKÍ @  ¢8œT?d õÌ ¸Â @  ¢9T?d `õ¢T?d  õéÎñ @  ¢?£T?d àõeè7h @  ¢@¤T?d õø¬—© @  ¢A¥T?d `õÓmÐ @  ¢B¦T?d  õ(&o. @  ¢C§T?d àõ³lÎÅ @  ¢D¨T?d õc$B- @  ¢E©T?d `õ“[¸T @  ¢FªT?d  õ³®ºª @  ¢G«T?d àõ»\ñ @  ¢H¬T?d õðÐì @  ¢I­T?d `õ*• @  ¢J®T?d  õ_z(k @  ¢K¯T?d àõ¡`ël @  ¢L°T?d õq(g„ @  ¢M±T?d ` õWý @  ¢N²T?d   õ¡¢Ÿ @  ¢O³T?d à õ¢G¸ @  ¢P´T?d õ™æçy @  ¢QµT?d ` õi™ @  ¢R¶T?d   õIlþ @  ¢S·T?d à õÒ&¾ @  ¢T¸T?d õn2ý @  ¢U¹T?d ` õòÈ„ @  ¢VºT?d   õÒäÊz @  ¢W»T?d à õÚE,! @  ¢X¼T?d õà ß. @  ¢Y½T?d ` õ3t%W @  ¢Z¾T?d   õ'© @  ¢[¿T?d à õ€|Èc @  ¢\ÀT?d õP4D‹ @  ¢]ÁT?d ` õ K¾ò @  ¢^ÂT?d   õ€¾¼  @  ¢_ÃT?d à õ4¸C @  ¢`ÄT?d õ©üãÆ @  ¢aÅT?d `õYƒ¿ @  ¢bÆT?d  õyvA @  ¢cÇT?d àõâ<ºª @  ¢dÈT?d õ2t6B @  ¢eÉT?d `õ Ì; @  ¢fÊT?d  õâþÎÅ @  ¢gËT?d àõê_(ž @  ¢hÌT?d õT”, @  ¢iÍT?d `õ¤þnU @  ¢jÎT?d  õ„ l« @  ¢kÏT?d àõz¯¬ @  ¢lÐT?d õªY#D @  ¢mÑT?d `õZ&Ù= @  ¢nÒT?d  õzÓÛà @  ¢oÓT?d àõßÓx @  ¢pÔT?d õB—£¹ @  ¢qÕT?d `õ²èYÀ @  ¢rÖT?d  õ’[> @  ¢s×T?d àõ WúÕ @  ¢tØT?d õÙv= @  ¢uÙT?d `õ)`ŒD @  ¢vÚT?d  õ •Žº @  ¢wÛT?d àõ4há @  ¢xÜT?d õz›î @  ¢yÝT?d `õèa— @  ¢zÞT?d  õÈðci @  ¢{ßT?d àõ«]™² @  ¢|àT?d õ{Z @  ¢}áT?d `õ‹jï# @  ¢~âT?d  õ«ŸíÝ @  ¢ãT?d àõRÈ$u @  ¢€äT?d õÏŒ„´ @  ¢åT?d `õ?ó~Í @  ¢‚æT?d  õ|3 @  ¢ƒçT?d àõ„LÝØ @  ¢„èT?d õTQ0 @  ¢…éT?d `õ¤{«I @  ¢†êT?d  õ„Ž©· @  ¢‡ëT?d àõŒ/Oì @  ¢ˆìT?d õ¸ÐÃñ @  ¢‰íT?d `õH¯9ˆ @  ¢ŠîT?d  õhZ;v @  ¢‹ïT?d àõ–@øq @  ¢ŒðT?d õFt™ @  ¢ñT?d `õ¶wŽà @  ¢ŽòT?d  õ–‚Œ @  ¢óT?d àõ3‚T¥ @  ¢ôT?d õ®Æôd @  ¢‘õT?d `õ^¹ @  ¢’öT?d  õ~L ã @  ¢“÷T?d àõå­ @  ¢”øT?d õ5N!à @  ¢•ùT?d `õÅ1Û™ @  ¢–úT?d  õåÄÙg @  ¢—ûT?d àõíe?< @  ¢˜üT?d õô+Ì3 @  ¢™ýT?d `õT6J @  ¢šþT?d  õ$¡4´ @  ¢›ÿT?d àõÕýÚà @  ¢œU?d õµV @  ¢U?d `õõʬq @  ¢žU?d  õÕ?® @  ¢ŸU?d àõa9Q„ @  ¢ U?d õü}ñE @  ¢¡U?d `õ  < @  ¢¢U?d  õ,÷  @  ¢£U?d àõ·½¨) @  ¢¤U?d õgõ$Á @  ¢¥ U?d `õ—ŠÞ¸ @  ¢¦ U?d  õ·ÜFuÐ õ @  ¢§ U?d àõ¿Þ: @  ¢¨ U?d 8 õÎÕä{ @  ¢© U?d x õ>ª @  ¢ªU?d ¸ õ_ü @  ¢«U?d ø õàEßû @  ¢¬U?d 8!õ0 S @  ¢­U?d x!õÀr©j @  ¢®U?d ¸!õà‡«” @  ¢¯U?d ø!õE‡s/ @  ¢°U?d 8"õØÃÓî @  ¢±U?d x"õ(¼)— @  ¢²U?d ¸"õI+i @  ¢³U?d ø"õ“Š‚ @  ¢´U?d 8#õCKj @  ¢µU?d x#õ³4ü @  ¢¶U?d ¸#õ“Áþí @  ¢·U?d ø#õ›`¶ @  ¢¸U?d 8$õ‚.ë¹ @  ¢¹U?d x$õrQÀ @  ¢ºU?d ¸$õR¤> @  ¢»U?d ø$õ1 éå @  ¢¼ U?d 8%õáAe  @  ¢½!U?d x%õ>Ÿt @  ¢¾"U?d ¸%õ1ËŠ @  ¢¿#U?d ø%õ+Êd @  ¢À$U?d 8&õ¶ŽÄÒ @  ¢Á%U?d x&õFñ>« @  ¢Â&U?d ¸&õfU?d ¸,õ]£tÒ @  ¢Û?U?d ø,õÎ^› @  ¢Ü@U?d 8-õð @  ¢ÝAU?d x-õîií‰ @  ¢ÞBU?d ¸-õΜïw @  ¢ßCU?d ø-õzš| @  ¢àDU?d 8.õçÞ°½ @  ¢áEU?d x.õ¡JÄ @  ¢âFU?d€ ¸.õC—Tœ @  £GU?d ø.õ9œ½^ @  £HU?d 8/õéÔ1¶ @  £IU?d x/õÜâ0" @  £JU?d ¸/õü2Ü @  £KU?d ø/õ:‹ý @  £LU?d 80õ„Ú7O @  £MU?d x0õº’L @  £NU?d ¸0õšâ² @  £ OU?d ø0õ¡±¨X @  £ PU?d 81õqù$° @  £ QU?d x1õDÏ%$ @  £ RU?d ¸1õd:'Ú @  £ SU?d ø1õ¢)žû @  £TU?d 82õ?m>: @  £UU?d x2õ¬¥Ù @  £VU?d ¸2õŒô§' @  £WU?d ø2õÒ÷ý! @  £XU?d 83õ¿qÉ @  £YU?d x3õ7‰p] @  £ZU?d ¸3õ|r£ @  £[U?d ø3õÑoË‚ @  £\U?d 84õÈ!8 @  £]U?d x4õöìŽ @  £^U?d ¸4õÖŸp @  £_U?d ø4õpýžF @  £`U?d 85õ µ® @  £aU?d x5õ•ƒ: @  £bU?d ¸5õŒ±Í @  £ cU?d ø5õJ¢t0 @  £ dU?d 86õ׿Ôñ @  £ eU?d x6õUŒh¢ @  £ fU?d ¸6õuyj\ @  £! gU?d ø6õ+z0Z @  £" hU?d 87õû2¼² @  £# iU?d x7õν& @  £$ jU?d ¸7õîñ¿Ø @  £% kU?d ø7õ(âù @  £& lU?d 88õŠä @  £' mU?d x8õ"Ð/ç @  £( nU?d ¸8õ%- @  £) oU?d ø8õ9vó @  £* pU?d 89õé>™ @  £+ qU?d x9õܘ @  £, rU?d ¸9õüýšq @  £- sU?d ø9õ:î#P @  £. tU?d 8:õ§ªƒ‘ @  £/ uU?d x:õ4Ær @  £0 vU?d ¸:õ3Œ @  £1 wU?d ø:õJ0@Š @  £2 xU?d 8;õšxÌb @  £3 yU?d x;õ¯NÍö @  £4 zU?d ¸;õ»Ï @  £5 {U?d ø;õI¨v) @  £6 |U?d 8<õPæ…& @  £7 }U?d x<õn+ % @  £8 ~U?d ¸<õNÞ"Û @  £9 U?d ø<õ¬bn @  £: €U?d 8=õÕäî† @  £; U?d x=õàÒï @  £< ‚U?d ¸=õÀ'íì @  £= ƒU?d ø=õ4TÍ @  £> „U?d 8>õ›pô  @  £? …U?d x>õ·NÍ @  £@ †U?d ¸>õ—èL3 @  £A ‡U?d ø>õÉë5 @  £B ˆU?d 8?õ£šÝ @  £C ‰U?d x?õ,•›I @  £D ŠU?duÐ@õ7 ¸?õ `™· @  £E ‹U?d ø?õÊs – @  £F ŒU?d P@õ ßšª @  £G U?d @õ•v*‰ @  £H ŽU?d Ð@õç=W @  £I U?d Aõ~mž‹ @  £J U?d PAõüü‰U @  £K ‘U?d Aõk®á @  £L ’U?d ÐAõé?Š? @  £M “U?d Bõ0ù„ @  £N ”U?d PBõ²h“ß @  £O •U?d Bõƒ` @  £P –U?d ÐBõñ  @  £Q —U?d Cõ +Ëò @  £R ˜U?d PCõºÜ, @  £S ™U?d CõèȘ @  £T šU?d ÐCõšyßF @  £U ›U?d Dõǵ‚¶ @  £V œU?d PDõE$•h @  £W U?d DõÙ%K @  £X žU?d ÐDõ[2• @  £Y ŸU?d Eõ¯!¨• @  £Z  U?d PEõ-°¿K @  £[ ¡U?d Eõºâ«ÿ @  £\ ¢U?d ÐEõ8s¼! @  £] £U?d Fõáµ² @  £^ ¤U?d PFõc$¥Á @  £_ ¥U?d FõC* ² @  £` ¦U?d ÐFõÁ»l @  £a §U?d GõÍaÚ\ @  £b ¨U?d PGõOðÍ‚ @  £c ©U?d GõØ¢Ù6 @  £d ªU?d ÐGõZ3Îè @  £e «U?d Hõ*Nì  @  £f ¬U?d PHõ¨ßûÔ @  £g ­U?d Hõ4vK÷ @  £h ®U?d ÐHõ¶ç\) @  £i ¯U?d Iõßmÿõ @  £j °U?d PIõ]üè+ @  £k ±U?d IõÊ®üŸ @  £l ²U?d ÐIõH?ëA @  £m ³U?d Jõ‘ùå @  £n ´U?d PJõhò¡ @  £o µU?d Jõ"`|b @  £p ¶U?d ÐJõ ñk¼ @  £q ·U?d Kõ¬+ªŒ @  £r ¸U?d PKõ.º½R @  £s ¹U?d Kõ¹è©æ @  £t ºU?d ÐKõ;y¾8 @  £u »U?d LõfµãÈ @  £v ¼U?d PLõä$ô @  £w ½U?d LõxD5 @  £x ¾U?d ÐLõúSë @  £y ¿U?d MõþqÜú @  £z ÀU?d PMõ|àË$ @  £{ ÁU?d Mõë²ß @  £| ÂU?d ÐMõi#ÈN @  £} ÃU?d Nõ°åÆp @  £~ ÄU?d PNõ2tÑ® @  £ ÅU?d Nõ_+N~ @  £€ ÆU?d ÐNõݺY  @  £ ÇU?d OõÑ`˜ @  £‚ ÈU?d POõSñN @  £ƒ ÉU?d OõÄ£›ú @  £„ ÊU?d ÐOõF2Œ$ @  £… ËU?d Põ¼nži @  £† ÌU?d PPõ>ÿ‰· @  £‡ ÍU?d Põ¢V9” @  £ˆ ÎU?d ÐPõ Ç.J @  £‰ ÏU?d QõIM– @  £Š ÐU?d PQõËÜšH @  £‹ ÑU?d Qõ\ŽŽü @  £Œ ÒU?d ÐQõÞ™" @  £ ÓU?d RõÙ— @  £Ž ÔU?d PRõ…H€Â @  £ ÕU?d Rõ´@ @  £ ÖU?d ÐRõ6Ñß @  £‘ ×U?d Sõ: Øï @  £’ ØU?d PSõ¸šÏ1 @  £“ ÙU?d Sõ/ÈÛ… @  £” ÚU?d ÐSõ­YÌ[ @  £• ÛU?d Tõð•‘« @  £– ÜU?d PTõr†u @  £— ÝU?d Tõî­6V @  £˜ ÞU?d ÐTõl @  £ØV?d èdõQ(ãà @  £ÙV?d (eõ¥yà @  £Ú V?d heõ'„n> @  £Û!V?d ¨eõ°ÖzŠ @  £Ü"V?d èeõ2GmT @  £Ý#V?d (fõëcj @  £Þ$V?d hfõit´ @  £ß%V?d ¨fõIÝÇ @  £à&V?d èfõËÊ @  £á'V?d (gõÇU ) @  £â(V?d€ hgõÃ’´N @  ¤)V?d ¨gõµèÓ @  ¤*V?d ègõ7ÿ  @  ¤+V?d (hõ‚$& @  ¤,V?d hhõµ1Ü @  ¤-V?d ¨hõR®Þ… @  ¤.V?d èhõÐ?É[ @  ¤/V?d (iõw5ý @  ¤0V?d hiõõ–"# @  ¤ 1V?d ¨iõ§Íz @  ¤ 2V?d èiõ%Ú¤ @  ¤ 3V?d (jõ9“/w @  ¤ 4V?d hjõ»8© @  ¤ 5V?d ¨jõé×ð @  ¤6V?d èjõkˆÀ. @  ¤7V?d (kõA`„ @  ¤8V?d hkõ†ÐwZ @  ¤9V?d ¨kõÔ˘ @  ¤:V?d èkõVZÝ @  ¤;V?d (lõÎß)À @  ¤ @  ¤=V?d ¨lõUÑG @  ¤>V?d èlõœÄÆ™ @  ¤?V?d (mõVò @  ¤@V?d hmõÔŠ, @  ¤AV?d ¨mõ†‘îu @  ¤BV?d èmõù« @  ¤CV?d (nõ x @  ¤DV?d hnõš¦ @  ¤EV?d ¨nõÈôÿ @  ¤FV?d ènõJ”ã! @  ¤GV?d (oõ4[d; @  ¤ HV?d hoõ¶Êså @  ¤!IV?d ¨oõäÑœ¼ @  ¤"JV?d èoõf@‹b @  ¤#KV?d (põYUb @  ¤$LV?d hpõÛÄu @  ¤%MV?d ¨põ‰ßšE @  ¤&NV?d èpõ N› @  ¤'OV?d (qõ¬vq= @  ¤(PV?d hqõ.çfã @  ¤)QV?d ¨qõ|ü‰º @  ¤*RV?d èqõþmžd @  ¤+SV?d (rõââk· @  ¤,TV?d hrõ`s|i @  ¤-UV?d ¨rõ2h“0 @  ¤.VV?d èrõ°ù„î @  ¤/WV?d (sõß0$D @  ¤0XV?d hsõ]¡3š @  ¤1YV?d ¨sõºÜà @  ¤2ZV?d èsõ+Ë @  ¤3[V?d (tõ®m @  ¤4\V?d htõ—?zÞ @  ¤5]V?d ¨tõÅ$•‡ @  ¤6^V?d ètõGµ‚Y @  ¤7_V?d (uõ}:G# @  ¤8`V?d huõÿ«Pý @  ¤9aV?d ¨uõ­°¿¤ @  ¤:bV?d èuõ/!¨z @  ¤;cV?d (võ3®]© @  ¤<dV?d hvõ±?Jw @  ¤=eV?d ¨võã$¥. @  ¤>fV?d èvõaµ²ð @  ¤?gV?d (wõ±}3x @  ¤@hV?d hwõ3ì$¦ @  ¤AiV?d ¨wõa÷Ëÿ @  ¤BjV?d èwõãfÜ! @  ¤CkV?d (xõVR. @  ¤DlV?d hxõÔÃð @  ¤EmV?d ¨xõ†Øý© @  ¤FnV?d èxõIêw @  ¤GoV?d (yõ£qÑ @  ¤HpV?d hyõ!à @  ¤IqV?d ¨yõsûîV @  ¤JrV?d èyõñjùˆ @  ¤KsV?d (zõíå [ @  ¤LtV?d hzõot… @  ¤MuV?d ¨zõ=oôÜ @  ¤NvV?d èzõ¿þã @  ¤OwV?d ({õÐ7C¨ @  ¤PxV?d h{õR¦Tv @  ¤QyV?d ¨{õ½»/ @  ¤RzV?d è{õ‚,¬ñ @  ¤S{V?d (|õ© ì @  ¤T|V?d h|õ˜82 @  ¤U}V?d ¨|õÊ#òk @  ¤V~V?d è|õH²åµ @  ¤WV?d (}õŸ«aL @  ¤X€V?d h}õ:v’ @  ¤YV?d ¨}õO!™Ë @  ¤Z‚V?d è}õͰŽ @  ¤[ƒV?d (~õÑ?{Æ @  ¤\„V?d h~õS®l @  ¤]…V?d ¨~õµƒA @  ¤^†V?d è~õƒ$”Ÿ @  ¤_‡V?d (õýë… @  ¤`ˆV?d hõz[ @  ¤a‰V?d ¨õuЀõ'-aë @  ¤bŠV?d èõÒp  @  ¤c€‹V?d @€õ=8Æ @  ¤d€ŒV?d €€õð:8 @  ¤e€V?d À€õíÀA @  ¤f€ŽV?d õ=ÇL© @  ¤g€V?d @õÈ&+9 @  ¤h€V?d €õèÓ)Ç @  ¤i€‘V?d Àõ¬Ó¾ @  ¤j€’V?d ‚õ…ès @  ¤k€“V?d @‚õ†²1³ @  ¤l€”V?d €‚õ¦G3M @  ¤m€•V?d À‚õV8É4 @  ¤n€–V?d ƒõ†pEÜ @  ¤o€—V?d @ƒõ»`~@ @  ¤p€˜V?d €ƒõ›•|¾ @  ¤q€™V?d Àƒõkê†Ç @  ¤r€šV?d „õr¤uÈ @  ¤s€›V?d @„õqþ7 @  ¤t€œV?d €„õQ 5ú @  ¤u€V?d À„õ¡tσ @  ¤v€žV?d …õqW?d ­õŠ’q¥ @  ¥5 ?W?d X­õÜ&e‚ @  ¥6 @W?d ˜­õüÓg| @  ¥7 AW?d Ø­õ @  ¥8 BW?d ®õ_Zb¾ @  ¥9 CW?d X®õ™IÛŸ @  ¥: DW?d ˜®õ¹¼Ùa @  ¥; EW?d Ø®õŒŠØõ @  ¥< FW?d ¯õ\ÂT @  ¥= GW?d X¯õÁ @  ¥> HW?d ˜¯õ"4 å @  ¥? IW?d دõY¶$ @  ¥@ JW?d °õ°‡ – @  ¥A KW?d X°õv”³· @  ¥B LW?d ˜°õVa±I @  ¥C MW?d ذõcW°Ý @  ¥D NW?d ±õ³<5 @  ¥E OW?d X±õˆLß @  ¥F PW?d ˜±õ¨¹! @  ¥G QW?d رõ–t£" @  ¥H RW?d ²õ 0ã @  ¥I SW?d X²õÍ#ºÂ @  ¥J TW?d ˜²õíÖ¸< @  ¥K UW?d زõØà¹¨ @  ¥L VW?d ³õ¨5@ @  ¥M WW?d X³õV«oF @  ¥N XW?d ˜³õv^m¸ @  ¥O YW?d سõå2ö[ @  ¥P ZW?d ´õü|T @  ¥Q [W?d X´õ:o¼u @  ¥R \W?d ˜´õ𾋠@  ¥S ]W?d Ø´õ/¬¿ @  ¥T ^W?d µõÿä3÷ @  ¥U _W?d XµõY2Á @  ¥V `W?d ˜µõyõ0? @  ¥W aW?d صõG8•< @  ¥X bW?d ¶õÚ|5ý @  ¥Y cW?d X¶õoŒÜ @  ¥Z dW?d ˜¶õ<šŽ" @  ¥[ eW?d ضõ ¬¶ @  ¥\ fW?d ·õÙä^ @  ¥] gW?d X·õ‡çYX @  ¥^ hW?d ˜·õ§[¦ @  ¥_ iW?d Ø·õ%xçõ @  ¥` jW?d ¸õ‡kè @  ¥a kW?d X¸õ×”ÒÉ @  ¥b lW?d ˜¸õ÷aÐ7 @  ¥c mW?d ظõÂWÑ£ @  ¥d nW?d ¹õ]K @  ¥e oW?d X¹õ)Le¡ @  ¥f pW?d ˜¹õ ¹g_ @  ¥g qW?d عõ7tÂ\ @  ¥h rW?d ºõª0b @  ¥i sW?d Xºõl#Û¼ @  ¥j tW?d ˜ºõLÖÙB @  ¥k uW?d غõyàØÖ @  ¥l vW?d »õ©¨T> @  ¥m wW?d X»õ÷«8 @  ¥n xW?d ˜»õ×^ Æ @  ¥o yW?d Ø»õD2—% @  ¥p zW?d ¼õ]|d* @  ¥q {W?d X¼õ›oÝ  @  ¥r |W?d ˜¼õ»šßõ @  ¥s }W?d ؼõެÞa @  ¥t ~W?d ½õ^äR‰ @  ¥u W?d X½õ–< @  ¥v €W?d ˜½õ5c @  ¥w W?d ؽõ ®µÁ @  ¥x ‚W?d ¾õ–ê @  ¥y ƒW?d X¾õPù¬! @  ¥z „W?d ˜¾õp ®ß @  ¥{ …W?d ؾõE:¯K @  ¥| †W?d ¿õ•r#£ @  ¥} ‡W?d X¿õËqy¥ @  ¥~ ˆW?d ˜¿õë„{[ @uÐÀõ  ¥ ‰W?d Ø¿õx-~ @  ¥€ŠW?d 0Àõyˆ|, @  ¥‹W?d pÀõ¿›Å  @  ¥‚ŒW?d °ÀõŸnÇó @  ¥ƒW?d ðÀõªXÆg @  ¥„ŽW?d 0ÁõzJ @  ¥…W?d pÁõACre @  ¥†W?d °Áõa¶p› @  ¥‡‘W?d ðÁõ_{Õ˜ @  ¥ˆ’W?d 0ÂõÂ?uY @  ¥‰“W?d pÂõ,Ìx @  ¥Š”W?d °Âõ$ÙΆ @  ¥‹•W?d ðÂõïÏ @  ¥Œ–W?d 0ÃõÁ§Cú @  ¥—W?d pÃõŸ¤ü @  ¥Ž˜W?d °Ãõ¿Q @  ¥™W?d ðÃõ,=€á @  ¥šW?d 0Äõ5ssî @  ¥‘›W?d pÄõó`ÊÏ @  ¥’œW?d °ÄõÓ•È1 @  ¥“W?d ðÄõæ£É¥ @  ¥”žW?d 0Åõ6ëEM @  ¥•ŸW?d pÅõD{ @  ¥– W?d °Åõ°úF… @  ¥—¡W?d ðÅõŽ7ㆠ@  ¥˜¢W?d 0ÆõsCG @  ¥™£W?d pÆõÕ`úf @  ¥š¤W?d °Æõõ•ø˜ @  ¥›¥W?d ðÆõÀ£ù  @  ¥œ¦W?d 0Çõëuä @  ¥§W?d pÇõNè/â @  ¥ž¨W?d °Çõn- @  ¥Ÿ©W?d ðÇõìw‘O @  ¥ ªW?d 0Èõ؈R @  ¥¡«W?d pÈõ›¤s @  ¥¢¬W?d °Èõ>n¦ @  ¥£­W?d ðÈõ X§ @  ¥¤®W?d 0ÉõÛ+ñ @  ¥¥¯W?d pÉõàC @  ¥¦°W?d °ÉõÀ¶å @  ¥§±W?d ðÉõþ{´æ @  ¥¨²W?d 0Êõc?' @  ¥©³W?d pÊõ¥,­ @  ¥ª´W?d °Êõ…Ù¯ø @  ¥«µW?d ðÊõ°ï®l @  ¥¬¶W?d 0Ëõ`§"„ @  ¥­·W?d pËõ>¤x‚ @  ¥®¸W?d °ËõQz| @  ¥¯¹W?d ðËõ=០@  ¥°ºW?d 0Ìõ”s @  ¥±»W?d pÌõR`«± @  ¥²¼W?d °Ìõr•©O @  ¥³½W?d ðÌõG£¨Û @  ¥´¾W?d 0Íõ—ë$3 @  ¥µ¿W?d pÍõÁ_0 @  ¥¶ÀW?d °Íõáª2ê @  ¥·ÁW?d ðÍõßg—é @  ¥¸ÂW?d 0ÎõB#7( @  ¥¹ÃW?d pÎõ„0Ž  @  ¥ºÄW?d °Îõ¤ÅŒ÷ @  ¥»ÅW?d ðÎõ‘óc @  ¥¼ÆW?d 0ÏõA»‹ @  ¥½ÇW?d pÏõ¸[ @  ¥¾ÈW?d °Ïõ?MYs @  ¥¿ÉW?d ðÏõ ã² @  ¥ÀÊW?d 0Ðõ­þ_ @  ¥ÁËW?d pÐõkíæ! @  ¥ÂÌW?d °ÐõKäß @  ¥ÃÍW?d ðÐõ~.åK @  ¥ÄÎW?d 0Ñõ®fi£ @  ¥ÅÏW?d pÑõ•5QI @  ¥ÆÐW?d °ÑõµÀS· @  ¥ÇÑW?d ðÑõ‹ ö´ @  ¥ÈÒW?d 0ÒõIVu @  ¥ÉÓW?d pÒõÐZïT @  ¥ÊÔW?d °Òõð¯íª @  ¥ËÕW?d ðÒõÅ™ì> @  ¥ÌÖW?d 0ÓõÑ`Ö @  ¥Í×W?d pÓõKÒ:Ð @  ¥ÎØW?d °Óõk'8. @  ¥ÏÙW?d ðÓõøK£Í @  ¥ÐÚW?d 0ÔõáP @  ¥ÑÛW?d pÔõ'éã @  ¥ÒÜW?d °Ôõãë @  ¥ÓÝW?d ðÔõ2Õê‰ @  ¥ÔÞW?d 0Õõâfa @  ¥ÕßW?d pÕõDygW @  ¥ÖàW?d °ÕõdŒe© @  ¥×áW?d ðÕõZAÀª @  ¥ØâW?d 0ÖõÇ`k @  ¥ÙãW?d pÖõÙJ @  ¥ÚäW?d °Öõ!ãÛ´ @  ¥ÛåW?d ðÖõÕÚ  @  ¥ÜæW?d 0×õÄVÈ @  ¥ÝçW?d p×õšž Î @  ¥ÞèW?d °×õºk0 @  ¥ßéW?d ð×õ8²c @  ¥àêW?d 0Øõ þ>~ @  ¥áëW?d pØõÊí‡_ @  ¥âìW?d€ °Øõ+_r¡ @  ¦íW?d ðØõÿ(; @  ¦îW?d 0Ùõ/`·ô @  ¦ïW?d pÙõÑztó @  ¦ðW?d °Ùõñv  @  ¦ñW?d ðÙõðŒt @  ¦òW?d 0Úõœ´,µ @  ¦óW?d pÚõ”Êî @  ¦ôW?d °Úõ´àÈ @  ¦ õW?d ðÚõDŸ2i @  ¦ öW?d 0Ûõ”×¾ @  ¦ ÷W?d pÛõj @  ¦ øW?d °Ûõ/h” @  ¦ ùW?d ðÛõßçí @  ¦úW?d 0ÜõÆYâ @  ¦ûW?d pÜõcYÌY @  ¦üW?d °ÜõC¬Î§ @  ¦ýW?d ðÜõ³Ó4Þ @  ¦þW?d 0Ýõc›¸6 @  ¦ÿW?d pÝõwôg @  ¦X?d °ÝõWes @  ¦X?d ðÝõ§~Ÿ  @  ¦X?d 0Þõ::?Ë @  ¦X?d pÞõ2›Ù @  ¦X?d °ÞõnÛn @  ¦X?d ðÞõâ! @  ¦X?d 0ßõ2Y­ÿ @  ¦X?d pßõ©  @  ¦X?d uÐàõ/°ßõ‰æê @  ¦ X?d ðßõy™ô“ @  ¦ X?d Hàõ`=ªe @  ¦ X?d ˆàõv_@N @  ¦  X?d ÈàõôÎW @  ¦! X?d áõVh6ß @  ¦"X?d HáõÔù! @  ¦#X?d ˆáõˆ‡÷& @  ¦$X?d Èáõ àø @  ¦%X?d âõå¼­ž @  ¦&X?d Hâõg-º@ @  ¦'X?d ˆâõÍèI; @  ¦(X?d ÈâõOy^å @  ¦)X?d ãõíß?ª @  ¦*X?d HãõoN(t @  ¦+X?d ˆãõV`œ¿ @  ¦,X?d ÈãõÔñ‹a @  ¦-X?d äõ¿Q•É @  ¦.X?d Häõ=À‚ @  ¦/X?d ˆäõ:¤OŒ @  ¦0X?d Èäõ¸5XR @  ¦1X?d åõ“9 @  ¦2X?d Håõ˜.à @  ¦3X?d ˆåõYËÁ8 @  ¦4 X?d ÈåõÛZÖæ @  ¦5!X?d æõ4𛀠@  ¦6"X?d Hæõ¶aŒ^ @  ¦7#X?d ˆæõ¤% @  ¦8$X?d Èæõž5hû @  ¦9%X?d çõ<“ ´ @  ¦:&X?d Hçõ¾j @  ¦;'X?d ˆçõ‡,ª¡ @  ¦<(X?d Èçõ½½ @  ¦=)X?d èõC¬ÜÅ @  ¦>*X?d HèõÁ=Ë @  ¦?+X?d ˆèõyX'¢ @  ¦@,X?d ÈèõûÉ0| @  ¦A-X?d éõYoQ3 @  ¦B.X?d HéõÛþFí @  ¦C/X?d ˆéõ‡€Ê @  ¦D0X?d Èéõ‡ @  ¦E1X?d êõê»Êr @  ¦F2X?d Hêõh*ݬ @  ¦G3X?d ˆêõÂï.× @  ¦H4X?d Èêõ@~9  @  ¦I5X?d ëõâØXF @  ¦J6X?d Hëõ`IO˜ @  ¦K7X?d ˆëõYgûS @  ¦L8X?d ÈëõÛöì @  ¦M9X?d ìõ°Vò% @  ¦N:X?d Hìõ2Çåû @  ¦O;X?d ˆìõ5£(` @  ¦PX?d Híõ—I/ @  ¦S?X?d ˆíõ¦œ³Å @  ¦T@X?d Èíõ$ ¤ @  ¦UAX?d îõ˧é} @  ¦VBX?d HîõI6þ£ @  ¦WCX?d ˆîõãó Ø @  ¦XDX?d Èîõab @  ¦YEX?d ïõÃÄ{I @  ¦ZFX?d HïõAUl— @  ¦[GX?d ˆïõx{Ø\ @  ¦\HX?d ÈïõúêÏ‚ @  ¦]IX?d ðõ6Úž— @  ¦^JX?d Hðõ´K‰I @  ¦_KX?d ˆðõ¢)cb @  ¦`LX?d Èðõ ¸t¼ @  ¦aMX?d ñõ‚ó @  ¦bNX?d Hñõ- @  ¦cOX?d ˆñõ\ñÔ  @  ¦dPX?d ÈñõÞ`ÃÔ @  ¦eQX?d òõ1ÊŽ² @  ¦fRX?d Hòõ³[™l @  ¦gSX?d ˆòõžj @  ¦hTX?d Èòõ›}É @  ¦iUX?d óõ9©† @  ¦jVX?d Hóõ»8 X @  ¦kWX?d ˆóõ‚¿“ @  ¦lXX?d Èóõ‡¨M @  ¦mYX?d ôõk'¶å @  ¦nZX?d Hôõé¶¡; @  ¦o[X?d ˆôõîÒl  @  ¦p\X?d ÈôõlC{~ @  ¦q]X?d õõÎå1 @  ¦r^X?d HõõLt ï @  ¦s_X?d ˆõõ½â @  ¦t`X?d Èõõ,õÊ @  ¦uaX?d öõà†¸¬ @  ¦vbX?d Höõb¯r @  ¦wcX?d ˆöõÈÒ\  @  ¦xdX?d ÈöõJCK× @  ¦yeX?d ÷õèå*˜ @  ¦zfX?d H÷õjt=F @  ¦{gX?d ˆ÷õSZ‰ @  ¦|hX?d È÷õÑËžS @  ¦}iX?d øõ—Úÿé @  ¦~jX?d HøõKè7 @  ¦kX?d ˆøõNx4¿ @  ¦€lX?d ÈøõÌé#a @  ¦mX?d ùõnOB. @  ¦‚nX?d HùõìÞUð @  ¦ƒoX?d ˆùõ° ƒ× @  ¦„pX?d Èùõ21”  @  ¦…qX?d úõÝ›Ùo @  ¦†rX?d Húõ_ α @  ¦‡sX?d ˆúõõÏ=Ê @  ¦ˆtX?d Èúõw^* @  ¦‰uX?d ûõÕøK[ @  ¦ŠvX?d HûõWi\… @  ¦‹wX?d ˆûõnGèN @  ¦ŒxX?d ÈûõìÖÿ @  ¦yX?d üõ‡vá8 @  ¦ŽzX?d Hüõçöæ @  ¦{X?d ˆüõƒ;} @  ¦|X?d Èüõ€,£ @  ¦‘}X?d ýõ"´Mì @  ¦’~X?d Hýõ %Z2 @  ¦“X?d ˆýõŒzôJ @  ¦”€X?d Èýõëã” @  ¦•X?d þõáA®ò @  ¦–‚X?d Hþõcй, @  ¦—ƒX?d ˆþõÉJW @  ¦˜„X?d ÈþõK„]‰ @  ¦™…X?d ÿõé"<Æ @  ¦š†X?d Hÿõk³+ @  ¦›‡X?d ˆÿõRŸÓ @  ¦œuÐöˆX?d ÈÿõÐ ˆ  @  ¦‰X?d ö¦-½ @  ¦žŠX?d `ö$‚:c @  ¦Ÿ‹X?d  ö2àÐH @  ¦ ŒX?d àö°qÇ– @  ¦¡X?d öצÙ @  ¦¢ŽX?d `öF± @  ¦£X?d  öÌ8g  @  ¦¤X?d àöN©pþ @  ¦¥‘X?d ö¡=˜ @  ¦¦’X?d `ö#’*F @  ¦§“X?d  ö‰WÙ= @  ¦¨”X?d àö ÆÎã @  ¦©•X?d ö©`¯¬ @  ¦ª–X?d `ö+ñ¸r @  ¦«—X?d  öß ¹ @  ¦¬˜X?d àöNg @  ¦­™X?d öûîÏ @  ¦®šX?d `öy @  ¦¯›X?d  ö~ߊ @  ¦°œX?d àöüŠÈT @  ¦±X?d ö^,© @  ¦²žX?d `öܽ¾Å @  ¦³ŸX?d  ötQ> @  ¦´ X?d àöŸåFà @  ¦µ¡X?d öpO † @  ¦¶¢X?d `öòÞX @  ¦·£X?d  öXï# @  ¦¸¤X?d àöÚŠøý @  ¦¹¥X?d öx,™² @  ¦º¦X?d `öú½Žl @  ¦»§X?d  öÓ:§ @  ¦¼¨X?d àöA-y @  ¦½©X?d öLà @  ¦¾ªX?d `ö…‚[ @  ¦¿«X?d  ö=ç·¤ @  ¦À¬X?d àö¿v z @  ¦Á­X?d öÐÁ5 @  ¦Â®X?d ` öŸAÖë @  ¦Ã¯X?d   öÃ?Ì @  ¦Ä°X?d à öA® @  ¦Å±X?d ö®Zt @  ¦Æ²X?d ` ö,•Mª @  ¦Ç³X?d   ö†P¾Ñ @  ¦È´X?d à öÁ© @  ¦ÉµX?d ö¦gÈ@ @  ¦Ê¶X?d ` ö$ößž @  ¦Ë·X?d   öØkU @  ¦Ì¸X?d à öŸI|‹ @  ¦Í¹X?d öôéb# @  ¦ÎºX?d ` övxuý @  ¦Ï»X?d   öq¸f @  ¦Ð¼X?d à öó¯¸ @  ¦Ñ½X?d öQ+Î÷ @  ¦Ò¾X?d ` öÓºÙ) @  ¦Ó¿X?d   öâ##à @  ¦ÔÀX?d à ö`²4 @  ¦ÕÁX?d öy{ @  ¦ÖÂX?d `ö ‰n¥ @  ¦×ÃX?d  ö§LÞ @  ¦ØÄX?d àö%ÝŠ @  ¦ÙÅX?d ö‡{ëO @  ¦ÚÆX?d `öêü‘ @  ¦ÛÇX?d  ö<ÄHZ @  ¦ÜÈX?d àö¾U_„ @  ¦ÝÉX?d öre‘ @  ¦ÞÊX?d `öðôO @  ¦ßËX?d  öæ–ód @  ¦àÌX?d àödäº @  ¦áÍX?d öÆ¡…õ @  ¦âÎX?d€ `ö0óŽ @  §ÏX?d  ö̃ @  §ÐX?d àö]] @  §ÑX?d ö%¾±Ö @  §ÒX?d `ö§/¦ @  §ÓX?d  öÃX  @  §ÔX?d àöAÉ× @  §ÕX?d ö-Ý#â @  §ÖX?d `ö¯L4< @  § ×X?d  öS+{ @  § ØX?d àöѺlÄ @  § ÙX?d öS‰ @  § ÚX?d `öýž_ @  § ÛX?d  ö™µ2^ @  §ÜX?d àö$%€ @  §ÝX?d öÚ‘%U @  §ÞX?d `öX2‹ @  §ßX?d  ö\€& @  §àX?d àöÞ1C @  §áX?d öôò‡È @  §âX?d `övc @  §ãX?d  ö< @  §äX?d àö…+É @  §åX?d öü‘ü @  §æX?d `ö~" @  §çX?d  ö‚gM @  §èX?d àööZÚ @  §éX?d öƒ®À @  §êX?d `ö?×S @  §ëX?d  öeH{R @  §ìX?d àöçÙlŒ @  §íX?d ö7jKé @  § îX?d `öµû\7 @  §!ïX?d  ö,Ìqý @  §"ðX?d àö®]f# @  §#ñX?d ö„¾Ð¨ @  §$òX?d `ö/Çv @  §%óX?d  öbXkw @  §&ôX?d àöàÉ|© @  §'õX?d öŒÝBœ @  §(öX?d `öLUB @  §)÷X?d  öò+d @  §*øX?d àöpº º @  §+ùX?d öÞSèÿ @  §,úX?d `ö\Âÿ! @  §-ûX?d  ö8µS  @  §.üX?d àöº$Dþ @  §/ýX?d ö{‘D+ @  §0þX?d `öùSõ @  §1ÿX?d  öoqSl @  §2Y?d àöíàD² @  §3Y?d öÇò9 @  §4Y?d `öE’åç @  §5Y?d  ö!åIæ @  §6Y?d àö£t^8 @  §7Y?d öÏ``  @  §8Y?d `öMñwÓ @  §9Y?d  ö±–8õuÐ ö @  §:Y?d àö3/+ @  §; Y?d 8 öõ«ç @  §< Y?d x öw:ðÙ @  §= Y?d ¸ öM\Ø @  §> Y?d ø ö‘ÜK @  §? Y?d 8!öïhjñ @  §@Y?d x!ömù}/ @  §AY?d ¸!öôÎPå @  §BY?d ø!öv_G; @  §CY?d 8"ö\¼ñ° @  §DY?d x"öÞ-æn @  §EY?d ¸"öºZJo @  §FY?d ø"ö8Ë]± @  §GY?d 8#öTßc„ @  §HY?d x#öÖNtZ @  §IY?d ¸#ö*);| @  §JY?d ø#ö¨¸,¢ @  §KY?d 8$öQÉç @  §LY?d x$ö„ÀÞ9 @  §MY?d ¸$öà·r8 @  §NY?d ø$öb&eæ @  §OY?d 8%ö£“e3 @  §PY?d x%ö!rí @  §QY?d ¸%ö%‚fû @  §R Y?d ø%ö§q% @  §S!Y?d 8&öðÇ® @  §T"Y?d x&öaÐp @  §U#Y?d ¸&ök|q @  §V$Y?d ø&öé‡k¯ @  §W%Y?d 8'ö…“Uš @  §X&Y?d x'öBD @  §Y'Y?d ¸'öûe b @  §Z(Y?d ø'öyô¼ @  §[)Y?d 8(öú¬€ë @  §\*Y?d x(öx=—5 @  §]+Y?d ¸(öJ;4 @  §^,Y?d ø(öžÛ,ê @  §_-Y?d 8)öNh  @  §`.Y?d x)öÌùQ @  §a/Y?d ¸)öUÎ1› @  §b0Y?d ø)ö×_&E @  §c1Y?d 8*öý¼Î @  §d2Y?d x*ö-‡ @  §e3Y?d ¸*öZ+ @  §f4Y?d ø*ö™Ë<Ï @  §g5Y?d 8+öõßú @  §h6Y?d x+öwN$ @  §i7Y?d ¸+ö‹)Z @  §j8Y?d ø+ö ¸MÜ @  §k9Y?d 8,ö§Q¨™ @  §l:Y?d x,ö%À¿G @  §m;Y?d ¸,öA·F @  §nY?d x-ö€“ @  §q?Y?d ¸-ötÒ” @  §r@Y?d ø-ööCJ @  §sAY?d 8.öÜ ³Á @  §tBY?d x.ö^1¤ @  §uCY?d ¸.ö:F @  §vDY?d ø.ö¸×À @  §wEY?d 8/öÔÃ!õ @  §xFY?d x/öVR6+ @  §yGY?d ¸/öª5y  @  §zHY?d ø/ö(¤nÓ @  §{IY?d 80ö!ÝÄ+ @  §|JY?d x0ö£LÓõ @  §}KY?d ¸0öÇ;ô @  §~LY?d ø0öEªh* @  §MY?d 81öØHyì @  §€NY?d x1öZÙn2 @  §OY?d ¸1öÃîCø @  §‚PY?d ø1öAT& @  §ƒQY?d 82ökœâ­ @  §„RY?d x2öé õs @  §…SY?d ¸2özYr @  §†TY?d ø2öëN¬ @  §‡UY?d 83öcÿp™ @  §ˆVY?d x3öángG @  §‰WY?d ¸3ö (a @  §ŠXY?d ø3öŸ˜?¿ @  §‹YY?d 84ö1qÚú @  §ŒZY?d x4ö³àÍ$ @  §[Y?d ¸4ö×—a% @  §Ž\Y?d ø4öUvû @  §]Y?d 85ö”³v. @  §^Y?d x5ö"að @  §‘_Y?d ¸5ö¢uæ @  §’`Y?d ø5ö3b8 @  §“aY?d 86öºÐÔ³ @  §”bY?d x6ö8AÃm @  §•cY?d ¸6ö\6ol @  §–dY?d ø6öÞ§x² @  §—eY?d 87ö²³F‡ @  §˜fY?d x7ö0"QY @  §™gY?d ¸7öÌE @  §šhY?d ø7öNÔ ¡ @  §›iY?d 88öÍŒ“ö @  §œjY?d x8öO„( @  §kY?d ¸8ö+j() @  §žlY?d ø8ö©û?÷ @  §ŸmY?d 89öyH’ @  § nY?d x9öûÙL @  §¡oY?d ¸9öbî"† @  §¢pY?d ø9öà5X @  §£qY?d 8:öÊœƒÓ @  §¤rY?d x:öH ”  @  §¥sY?d ¸:ö,z8  @  §¦tY?d ø:ö®ë/Ò @  §§uY?d 8;öÂÿç @  §¨vY?d x;ö@n9 @  §©wY?d ¸;ö¼ I @  §ªxY?d ø;ö>˜^Á @  §«yY?d 8<öq»„ @  §¬zY?d x<öà¬Z @  §­{Y?d ¸<öv—[ @  §®|Y?d ø<öô… @  §¯}Y?d 8=ö5³P @  §°~Y?d x=ö·"Ž @  §±Y?d ¸=ö^4U @  §²€Y?d ø=öÜ¥BÅ @  §³Y?d 8>ööFôN @  §´‚Y?d x>öt×ã @  §µƒY?d ¸>ö O‘ @  §¶„Y?d ø>ö’1XO @  §·…Y?d 8?öþ%fz @  §¸†Y?d x?ö|´q¤ @  §¹‡Y?duÐ@ö7 ¸?ö€Ó>‚ @  §ºˆY?d ø?öB)\ @  §»‰Y?d P@övI…* @  §¼ŠY?d @öV¼‡Ô @  §½‹Y?d Ð@ö¯>õ @  §¾ŒY?d Aö@ç² @  §¿Y?d PAölŠÜ @  §ÀŽY?d AöL " @  §ÁY?d ÐAöw,2È @  §ÂY?d Böêh’  @  §Ã‘Y?d PBöß^“ @  §Ä’Y?d Böÿ«‘c @  §Å“Y?d ÐBö9¸(B @  §Æ”Y?d Cöé𤪠@  §Ç•Y?d PCö×=© @  §È–Y?d Cö÷ÈW @  §É—Y?d ÐCö©ËYQ @  §Ê˜Y?d Dö°…ª^ @  §Ë™Y?d PDö…³«Ê @  §ÌšY?d Dö¥F©4 @  §Í›Y?d ÐDöcU @  §ÎœY?d Eö³œý @  §ÏY?d PEö q @  §ÐžY?d Eö„à @  §ÑŸY?d ÐEö¦`Ö @  §Ò Y?d Fö;$¤ @  §Ó¡Y?d PFö¥ƒ @  §Ô¢Y?d Fö.ç§} @  §Õ£Y?d ÐFöèô\ @  §Ö¤Y?d Gö8¼’´ @  §×¥Y?d PGöq7· @  §Ø¦Y?d Gö&„5I @  §Ù§Y?d ÐGöx‡oO @  §Ú¨Y?d HöLxãR @  §Û©Y?d PHöyNâÆ @  §ÜªY?d HöY»à8 @  §Ý«Y?d ÐHöŸ¨Y @  §Þ¬Y?d IöOàÕñ @  §ß­Y?d PIöÍŠi¢ @  §à®Y?d Iöík\ @  §á¯Y?d ÐIöÖ,S¶ @  §â°Y?d€ Jöcòç% @  ¨±Y?d PJö·…®˜ @  ¨²Y?d Jö—p¬f @  ¨³Y?d ÐJö”*îª @  ¨´Y?d KöDbbB @  ¨µY?d PKö´˜; @  ¨¶Y?d Kö”èšÅ @  ¨·Y?d ÐKöYŸ¹ @  ¨¸Y?d Löl¶ @  ¨ ¹Y?d PLöíh–Ï @  ¨ ºY?d LöÍ”1 @  ¨ »Y?d ÐLöÎÇÖý @  ¨ ¼Y?d MöZ @  ¨ ½Y?d PMöîð l @  ¨¾Y?d Mö΢’ @  ¨¿Y?d ÐMöû¢×/ @  ¨ÀY?d Nöfæwî @  ¨ÁY?d PNö–™— @  ¨ÂY?d Nö¶li @  ¨ÃY?d ÐNöµ6Í¥ @  ¨ÄY?d Oöe~AM @  ¨ÅY?d POö•»4 @  ¨ÆY?d Oöµô¹Ê @  ¨ÇY?d ÐOö%E¼¶ @  ¨ÈY?d Pö›› @  ¨ÉY?d PPökäú} @  ¨ÊY?d PöKøƒ @  ¨ËY?d ÐPöHKºO @  ¨ÌY?d Qö˜6§ @  ¨ÍY?d PQöh|ÌÞ @  ¨ÎY?d QöH‰Î  @  ¨ÏY?d ÐQöϰà @  ¨ ÐY?d Röœ‹! @  ¨!ÑY?d PRölôêX @  ¨"ÒY?d RöLè¦ @  ¨#ÓY?d ÐRöO[ªj @  ¨$ÔY?d SöŸ&‚ @  ¨%ÕY?d PSöolÜû @  ¨&ÖY?d SöO™Þ @  ¨'×Y?d ÐSöß(Ûy @  ¨(ØY?d TöÆf(v @  ¨)ÙY?d PTö6Ò @  ¨*ÚY?d TöìÐñ @  ¨+ÛY?d ÐTö¶’= @  ¨,ÜY?d UöÅþÕ @  ¨-ÝY?d PUö5ä¬ @  ¨.ÞY?d UötæR @  ¨/ßY?d ÐUöЃ†þ @  ¨0àY?d VöMÇ&? @  ¨1áY?d PVö½¸ÜF @  ¨2âY?d VöMÞ¸ @  ¨3ãY?d ÐVöžœt @  ¨4äY?d WöN_œ @  ¨5åY?d PWö¾ êå @  ¨6æY?d WöžÕè @  ¨7çY?d ÐWödíg @  ¨8èY?d Xö:›az @  ¨9éY?d PXöÊä› @  ¨:êY?d Xöê™ý @  ¨;ëY?d ÐXöéKÛ1 @  ¨<ìY?d Yö9WÙ @  ¨=íY?d PYöÉ|­  @  ¨>îY?d Yö鉯^ @  ¨?ïY?d ÐYöÈ×  @  ¨@ðY?d Zö“ŒwÍ @  ¨AñY?d PZöcó´ @  ¨BòY?d ZöCJ @  ¨CóY?d ÐZö@\͆ @  ¨DôY?d [öAn @  ¨EõY?d P[ö`k» @  ¨FöY?d [ö@ž¹é @  ¨G÷Y?d Ð[öÐ/¼• @  ¨HøY?d \öÉaOš @  ¨IùY?d P\ö9µã @  ¨JúY?d \öë· @  ¨KûY?d Ð\ö±õÑ @  ¨LüY?d ]öÊùy9 @  ¨MýY?d P]öA_• @  ¨N þY?d ]ö#´]k @  ¨O ÿY?d Ð]öÆm @  ¨P Z?d ^ö[Ô¼¬ @  ¨Q Z?d P^ö««FÕ @  ¨R Z?d ^ö‹^D+ @  ¨S Z?d Ð^öˆç @  ¨T Z?d _öXLŠ @  ¨U Z?d P_ö¨3pv @  ¨V Z?d _öˆÆrˆ @  ¨uÐ`öW Z?d Ð_ö!°«! @  ¨XZ?d (`öŸH¹ @  ¨Y Z?d h`öo7äÀ @  ¨Z Z?d ¨`öOÂæ> @  ¨[ Z?d è`öL˜¤ò @  ¨\ Z?d (aöœÐ( @  ¨] Z?d haöl¯Òc @  ¨^Z?d ¨aöLZÐ @  ¨_Z?d èaö®] @  ¨`Z?d (bö˜Xœ @  ¨aZ?d hböh'ôå @  ¨bZ?d ¨böHÒö @  ¨cZ?d èböKˆ´× @  ¨dZ?d (cö›À8? @  ¨eZ?d hcök¿ÂF @  ¨fZ?d ¨cöKJÀ¸ @  ¨gZ?d ècöÛûÅÄ @  ¨hZ?d (döµ6Ë @  ¨iZ?d hdö2Ê̲ @  ¨jZ?d ¨dö?ÎL @  ¨kZ?d èdöeŒ€ @  ¨lZ?d (eöÁ-h @  ¨mZ?d heö1Rú @  ¨nZ?d ¨eö§øï @  ¨oZ?d èeöÔP˜C @  ¨p Z?d (föI8‚ @  ¨q!Z?d hfö¹kÂû @  ¨r"Z?d ¨fö™žÀ @  ¨s#Z?d èföšÄ‚É @  ¨t$Z?d (göJŒ! @  ¨u%Z?d hgöºóôX @  ¨v&Z?d ¨göšö¦ @  ¨w'Z?d ègö ·óÚ @  ¨x(Z?d (hö>HÇ @  ¨y)Z?d hhöÎ7…¾ @  ¨z*Z?d ¨höî‡@ @  ¨{+Z?d èhöí˜ÅŒ @  ¨|,Z?d (iö=ÐId @  ¨}-Z?d hiöͯ³ @  ¨~.Z?d ¨iöíZ±ã @  ¨/Z?d èiöéMù€ @  ¨€0Z?d (jöt YA @  ¨1Z?d hjö„v£8 @  ¨‚2Z?d ¨jö¤ƒ¡Æ @  ¨ƒ3Z?d èjö§Ùã  @  ¨„4Z?d (köw‘oâ @  ¨…5Z?d hkö‡î•› @  ¨†6Z?d ¨kö§—e @  ¨‡7Z?d èkö7ª’ @  ¨ˆ8Z?d (lö.äa @  ¨‰9Z?d hlöÞ››o @  ¨Š:Z?d ¨löþn™‘ @  ¨‹;Z?d èlöý4Û] @  ¨ŒZ?d ¨möýö¯2 @  ¨?Z?d èmöÈQÚ @  ¨@Z?d (nöUzN @  ¨‘AZ?d hnö¥j€7 @  ¨’BZ?d ¨nö…Ÿ‚É @  ¨“CZ?d ènö†ÅÀ @  ¨”DZ?d (oöVLí @  ¨•EZ?d hoö¦ò¶” @  ¨–FZ?d ¨oö†´j @  ¨—GZ?d èoö¶± @  ¨˜HZ?d (pö¨h ¤ @  ¨™IZ?d hpöX÷Ý @  ¨šJZ?d ¨pöxâõ# @  ¨›KZ?d èpö{¸·ï @  ¨œLZ?d (qö«ð; @  ¨MZ?d hqö[Á~ @  ¨žNZ?d ¨qö{zÀ @  ¨ŸOZ?d èqö2<½@ @  ¨ PZ?d (rö¯x @  ¨¡QZ?d hrö_çø @  ¨¢RZ?d ¨röòå @  ¨£SZ?d èrö|¨§Ê @  ¨¤TZ?d (sö¬à+" @  ¨¥UZ?d hsö\ŸÑ[ @  ¨¦VZ?d ¨sö|jÓ¥ @  ¨§WZ?d èsöìÛÖÙ @  ¨¨XZ?d (töõ•%Ö @  ¨©YZ?d htöê߯ @  ¨ªZZ?d ¨tö%ÝQ @  ¨«[Z?d ètö&EŸ @  ¨¬\Z?d (uöö u @  ¨­]Z?d huöré  @  ¨®^Z?d ¨uö&‡ëò @  ¨¯_Z?d èuöãp‹^ @  ¨°`Z?d (vö~4+Ÿ @  ¨±aZ?d hvöŽKÑæ @  ¨²bZ?d ¨vö®¾Ó @  ¨³cZ?d èvö­ä‘Ô @  ¨´dZ?d (wö}¬< @  ¨µeZ?d hwöÓçE @  ¨¶fZ?d ¨wö­&å» @  ¨·gZ?d èwö=—àÇ @  ¨¸hZ?d (xö hlÚ @  ¨¹iZ?d hxöù–£ @  ¨ºjZ?d ¨xöÙâ”] @  ¨»kZ?d èxöÚ¸Ö‘ @  ¨¼lZ?d (yö ðZy @  ¨½mZ?d hyöú  @  ¨¾nZ?d ¨yöÚz¢þ @  ¨¿oZ?d èyö=;Ú¬ @  ¨ÀpZ?d (zö zm @  ¨ÁqZ?d hzöP€ @  ¨ÂrZ?d ¨zöpõ‚ê @  ¨ÃsZ?d èzös¯À& @  ¨ÄtZ?d ({ö£çLÎ @  ¨ÅuZ?d h{öS˜¶· @  ¨ÆvZ?d ¨{ösm´I @  ¨ÇwZ?d è{öãܱ5 @  ¨ÈxZ?d (|öú’B: @  ¨ÉyZ?d h|ö í¸C @  ¨ÊzZ?d ¨|ö*º½ @  ¨Ë{Z?d è|ö)Bøq @  ¨Ì|Z?d (}öù t™ @  ¨Í}Z?d h}ö uŽà @  ¨Î~Z?d ¨}ö)€Œ @  ¨ÏZ?d è}öá­1 @  ¨Ð€Z?d (~öœ¥ ð @  ¨ÑZ?d h~ölÚ÷‰ @  ¨Ò‚Z?d ¨~öL/õw @  ¨ÓƒZ?d è~öOu·» @  ¨Ô„Z?d (öŸ=;S @  ¨Õ…Z?d höoBÁ* @  ¨Ö†Z?d ¨öuЀö'O·ÃÔ @  ¨×‡Z?d èößƨ @  ¨ØˆZ?d @€ö±¸$Ü @  ¨Ù‰Z?d €€öã£Ë… @  ¨ÚŠZ?d À€öa2Ü[ @  ¨Û‹Z?d ö0±¡ @  ¨ÜŒZ?d @ö²  @  ¨ÝZ?d €öà;ý& @  ¨ÞŽZ?d Àöbªêø @  ¨ßZ?d ‚ö49#' @  ¨àZ?d @‚ö¶¨4ù @  ¨á‘Z?d €‚öä³Û  @  ¨â’Z?d€ À‚öáÐØ @  ©“Z?d ƒö¢#A  @  ©”Z?d @ƒö ²VÕ @  ©•Z?d €ƒö·àBa @  ©–Z?d Àƒö5qU¿ @  ©—Z?d „öð­ëh @  ©˜Z?d @„ör<ü¶ @  ©™Z?d €„öî•L• @  ©šZ?d À„öl[K @  © ›Z?d …öøÎy\ @  © œZ?d @…öz_n‚ @  © Z?d €…öí z6 @  © žZ?d À…öoœmè @  © ŸZ?d †öÖ­ÛÁ @  © Z?d @†öT<Ì @  ©¡Z?d €†öe4BÜ @  ©¢Z?d À†öç¥U @  ©£Z?d ‡ösow @  ©¤Z?d @‡öñþ`Ë @  ©¥Z?d €‡öf¬t @  ©¦Z?d À‡öä=c¡ @  ©§Z?d ˆö P¢d @  ©¨Z?d @ˆöŽÁµº @  ©©Z?d €ˆöh™ @  ©ªZ?d ÀˆöùG @  ©«Z?d ‰ö30P @  ©¬Z?d @‰ö†¢'Ž @  ©­Z?d €‰öð3: @  ©®Z?d À‰ö“a$ä @  ©¯Z?d Šö·ç« @  ©°Z?d @Šö5v¼Ï @  ©±Z?d €Šöx¼ @  © ²Z?d ÀŠö—éb @  ©!³Z?d ‹ö# u @  ©"´Z?d @‹ö²7« @  ©#µZ?d €‹öà# @  ©$¶Z?d À‹ö”q4Á @  ©%·Z?d ŒöQ­Š @  ©&¸Z?d @ŒöÓ<È @  ©'¹Z?d €ŒöO•-ë @  ©(ºZ?d ÀŒöÍ:5 @  ©)»Z?d öYÎ" @  ©*¼Z?d @öÛ_ü @  ©+½Z?d €öL H @  ©,¾Z?d ÀöΜ – @  ©-¿Z?d Žö‡ý¯® @  ©.ÀZ?d @Žöl¸p @  ©/ÁZ?d €Žö4d6³ @  ©0ÂZ?d ÀŽö¶õ!m @  ©1ÃZ?d ö"?z @  ©2ÄZ?d @ö ®¤ @  ©3ÅZ?d €ö7ü @  ©4ÆZ?d ÀöµmÎ @  ©5ÇZ?d ö×!æ¤ @  ©6ÈZ?d @öU°ñz @  ©7ÉZ?d €öÉAY @  ©8ÊZ?d ÀöKˆV‡ @  ©9ËZ?d ‘ößBt @  ©:ÌZ?d @‘ö]ÓcN @  ©;ÍZ?d €‘öÊwú @  ©<ÎZ?d À‘öH`$ @  ©=ÏZ?d ’öl–ïÑ @  ©>ÐZ?d @’öîø @  ©?ÑZ?d €’ö`Wî @  ©@ÒZ?d À’öâŸ@0 @  ©AÓZ?d “övUb' @  ©BÔZ?d @“öôÄuù @  ©CÕZ?d €“öc–aM @  ©DÖZ?d À“öáv“ @  ©E×Z?d ”ö$ÛÈD @  ©FØZ?d @”ö¦Jßš @  ©GÙZ?d €”ö:ão¹ @  ©HÚZ?d À”ö¸rxg @  ©IÛZ?d •ö,¸Zp @  ©JÜZ?d @•ö®)M® @  ©KÝZ?d €•ö9{Y @  ©LÞZ?d À•ö»êNÄ @  ©MßZ?d –öÛøí @  ©NàZ?d @–ö€Jï3 @  ©OáZ?d €–ö±Bað @  ©PâZ?d À–ö3Óv. @  ©QãZ?d —ö§T9 @  ©RäZ?d @—ö%ˆCç @  ©SåZ?d €—ö²ÚWS @  ©TæZ?d À—ö0K@ @  ©UçZ?d ˜öØ&H @  ©VèZ?d @˜öZ·–– @  ©WéZ?d €˜öÆ&µ @  ©XêZ?d À˜öD1k @  ©YëZ?d ™öÐE| @  ©ZìZ?d @™öRÔ¢ @  ©[íZ?d €™öņ @  ©\îZ?d À™öGÈ @  ©]ïZ?d šöc‘ˆ= @  ©^ðZ?d @šöáŸã @  ©_ñZ?d €šöÁ6 @  ©`òZ?d ÀšöCŸ!N @  ©aóZ?d ›ö×UY @  ©bôZ?d @›öUć @  ©cõZ?d €›ö–3 @  ©döZ?d À›ö@í @  ©e÷Z?d œö…Û©: @  ©føZ?d @œöJ¾ä @  ©gùZ?d €œö›ãÇ @  ©húZ?d Àœör @  ©iûZ?d ö¸; @  ©jüZ?d @ö),Ð @  ©kýZ?d €ö˜{8d @  ©lþZ?d Àöê/º @  ©mÿZ?d žö1* @  ©n[?d @žö³»šÂ @  ©o[?d €žö‚³ @  ©p[?d Àžö"ß @  ©q[?d Ÿö”è!È @  ©r[?d @Ÿöy6 @  ©s[?d €Ÿö+"¢ @  ©t[uРö?d ÀŸöº5| @  ©u[?d  ö—äz @  ©v [?d X öumÉ @  ©w  [?d ˜ ö‰ÜÝê @  ©x  [?d Ø ö MÊ4 @  ©y  [?d ¡öŸ‡è# @  ©z  [?d X¡öÿý @  ©{  [?d ˜¡öŠDëI @  ©| [?d Ø¡öÕü— @  ©} [?d ¢ö,Ssb @  ©~ [?d X¢ö®Âd¼ @  © [?d ˜¢öÃûl @  ©€ [?d Ø¢öA ì² @  © [?d £öÕÆÎ¥ @  ©‚ [?d X£öWWÙ{ @  ©ƒ [?d ˜£öÀÍÏ @  ©„ [?d Ø£öB”Ú @  ©… [?d ¤ö‡HdÆ @  ©† [?d X¤öÙs @  ©‡ [?d ˜¤ö™pÃ; @  ©ˆ [?d ؤöáÔå @  ©‰ [?d ¥ö+öò @  ©Š [?d X¥ö ºá, @  ©‹ [?d ˜¥öšèõ˜ @  ©Œ [?d Ø¥öyâF @  © [?d ¦ö¡HTo @  ©Ž  [?d X¦ö#ÙC± @  © ![?d ˜¦öÑÍr @  © "[?d ئö@Ú¬ @  ©‘ #[?d §öŠø» @  ©’ $[?d X§ö†ïe @  ©“ %[?d ˜§öIûÑ @  ©” &[?d اö“Øì @  ©• '[?d ¨ö{µ-Ê @  ©– ([?d X¨öù$: @  ©— )[?d ˜¨öeŠ7 @  ©˜ *[?d بöçé @  ©™ +[?d ©ösÖ¿þ @  ©š ,[?d X©öñG¨  @  ©› -[?d ˜©öf¼” @  ©œ .[?d Ø©öä„«J @  © /[?d ªöÀ$¿ @  ©ž 0[?d XªöB“3a @  ©Ÿ 1[?d ˜ªöbš @  ©  2[?d تöà Ì @  ©¡ 3[?d «ötƯÛ @  ©¢ 4[?d X«ööW¸ @  ©£ 5[?d ˜«öa¬± @  ©¤ 6[?d Ø«öã”»o @  ©¥ 7[?d ¬ö&H¸ @  ©¦ 8[?d X¬ö¤Ùf @  ©§ 9[?d ˜¬ö8p¢E @  ©¨ :[?d جöºáµ› @  ©© ;[?d ­ö.+—Œ @  ©ª <[?d X­ö¬º€R @  ©« =[?d ˜­ö;è”æ @  ©¬ >[?d Ø­ö¹yƒ8 @  ©­ ?[?d ®öð  @  ©® @[?d X®ör‰7Þ @  ©¯ A[?d ˜®öC¹ @  ©° B[?d Ø®öÁ®Ã @  ©± C[?d ¯öUÚŒÔ @  ©² D[?d X¯ö×K›  @  ©³ E[?d ˜¯ö@¾ @  ©´ F[?d دöˆ˜` @  ©µ G[?d °ö Äi  @  ©¶ H[?d X°ö"U~Ô @  ©· I[?d ˜°ö¾üÎ÷ @  ©¸ J[?d ذö @  ©º L[?d X±ö*6ìà @  ©» M[?d ˜±ö½døT @  ©¼ N[?d رö?õïŠ @  ©½ O[?d ²ös` @  ©¾ P[?d X²ö™âw¡ @  ©¿ Q[?d ˜²öëØ@ @  ©À R[?d زö•zÏž @  ©Á S[?d ³ö°í‰ @  © T[?d X³öƒ!úW @  ©à U[?d ˜³ösîã @  ©Ä V[?d سö–âù= @  ©Å W[?d ´öS>Gê @  ©Æ X[?d X´öѯP4 @  ©Ç Y[?d ˜´öMà @  ©È Z[?d Ø´öÏ—÷É @  ©É [[?d µö[]ÕÞ @  ©Ê \[?d XµöÙÌ @  ©Ë ][?d ˜µöNžÖ´ @  ©Ì ^[?d صöÌÁj @  ©Í _[?d ¶öu>wC @  ©Î `[?d X¶ö÷¯` @  ©Ï a[?d ˜¶öƧî^ @  ©Ð b[?d ضöD6ù€ @  ©Ñ c[?d ·öÐüÛ— @  ©Ò d[?d X·öRmÌI @  ©Ó e[?d ˜·öÅ?Øý @  ©Ô f[?d Ø·öG®Ï# @  ©Õ g[?d ¸ö¯Ãæ @  ©Ö h[?d X¸ö-R8 @  ©× i[?d ˜¸ö±û© @  ©Ø j[?d ظö3j¾Å @  ©Ù k[?d ¹ö§ œÒ @  ©Ú l[?d X¹ö%1‹  @  ©Û m[?d ˜¹ö²cŸ¸ @  ©Ü n[?d عö0òˆf @  ©Ý o[?d ºöt“ @  ©Þ p[?d Xºö–åM @  ©ß q[?d ˜ºö¶ë¹> @  ©à r[?d غö4z®à @  ©á s[?d »ö °Œ÷ @  ©â t[?d€ X»öãfl) @  ª u[?d ˜»ö•u0´ @  ª v[?d Ø»öä'j @  ª w[?d ¼öqbP @  ª x[?d X¼ö•àuŽ @  ª y[?d ˜¼öÇûš× @  ª z[?d ؼöEj  @  ª {[?d ½öðd @  ª |[?d X½öƒçº @  ª }[?d ˜½öϘã @  ª ~[?d ؽöM = @  ª [?d ¾öÜçz @  ª €[?d X¾ö^v¤ @  ª [?d ˜¾ö mëý @  ª ‚[?d ؾöŽüü# @  ª ƒ[?d ¿öy%¿® @  ª „[?d X¿öû´¨p @  ª …[?d ˜¿ö©¯G) @uÐÀö  ª †[?d Ø¿öùŒ" @  ª‡[?d 0ÀöoÒkE @  ªˆ[?d pÀöíC|› @  ª‰[?d °Àö¿X“ @  ªŠ[?d ðÀö=É„ @  ª‹[?d 0Áög±ùq @  ªŒ[?d pÁöå î¯ @  ª[?d °Áö·;ö @  ªŽ[?d ðÁö5ª( @  ª[?d 0ÂöÔeb0 @  ª[?d pÂöVôuî @  ª‘[?d °Âöïš· @  ª’[?d ðÂö†~i @  ª“[?d 0Ãö`¡éT @  ª ”[?d pÃöâ0þŠ @  ª!•[?d °Ãö°+Ó @  ª"–[?d ðÃö2º  @  ª#—[?d 0Äö2/C7 @  ª$˜[?d pÄö°¾Té @  ª%™[?d °Äö⥻° @  ª&š[?d ðÄö`4¬n @  ª'›[?d 0Åö:LÑ @  ª(œ[?d pÅö¸ÝÆÝ @  ª)[?d °ÅöêÆ)„ @  ª*ž[?d ðÅöhW>Z @  ª+Ÿ[?d 0Æö/sž @  ª, [?d pÆö–¾d@ @  ª-¡[?d °ÆöÄ¥‹ @  ª.¢[?d ðÆöF4œÇ @  ª/£[?d 0Çö±íßJ @  ª0¤[?d pÇö3|È” @  ª1¥[?d °Çöag'Í @  ª2¦[?d ðÇöãö0 @  ª3§[?d 0ÈöÎÒ ; @  ª4¨[?d pÈöLCå @  ª5©[?d °ÈöXò¼ @  ª6ª[?d ðÈöœÉåb @  ª7«[?d 0ÉöƱ˜ @  ª8¬[?d pÉöD Ñ @  ª9­[?d °Éö;`ˆ @  ª:®[?d ðÉö”ªwV @  ª;¯[?d 0ÊöueN @  ª<°[?d pÊö÷ô @  ª=±[?d °Êö¥ïûÉ @  ª>²[?d ðÊö'~ì @  ª?³[?d 0Ëöo¦Ž¸ @  ª@´[?d pËöí7™f @  ªAµ[?d °Ëö¿,v? @  ªB¶[?d ðËö=½aá @  ªC·[?d 0Ìö=($Û @  ªD¸[?d pÌö¿¹3 @  ªE¹[?d °Ìöí¢Ü\ @  ªFº[?d ðÌöo3Ë‚ @  ªG»[?d 0Íö5K¶ï @  ªH¼[?d pÍö·Ú¡1 @  ªI½[?d °ÍöåÁNh @  ªJ¾[?d ðÍögPY¶ @  ªK¿[?d 0Îöëxc @  ªLÀ[?d pÎöié½ @  ªMÁ[?d °Îö;òùä @  ªNÂ[?d ðÎö¹cî: @  ªOÃ[?d 0ÏöNº­· @  ªPÄ[?d pÏöÌ+ºi @  ªQÅ[?d °Ïöž0U0 @  ªRÆ[?d ðÏö¡Bî @  ªSÇ[?d 0Ðö»¤Hi @  ªTÈ[?d pÐö95_· @  ªUÉ[?d °Ðök.°î @  ªVÊ[?d ðÐöé¿§0 @  ªWË[?d 0Ñö³ÇÚ] @  ªXÌ[?d pÑö1V̓ @  ªYÍ[?d °ÑöcM"Ú @  ªZÎ[?d ðÑöáÜ5 @  ª[Ï[?d 0ÒöA @  ª\Ð[?d pÒö‚‚V @  ª]Ñ[?d °ÒöЙ¹› @  ª^Ò[?d ðÒöR®E @  ª_Ó[?d 0Óö´×Êx @  ª`Ô[?d pÓö6Fݦ @  ªaÕ[?d °Óöd]2ÿ @  ªbÖ[?d ðÓöæÌ%! @  ªc×[?d 0ÔöæY` @  ªdØ[?d pÔödÈwÅ @  ªeÙ[?d °Ôö6Ó˜œ @  ªfÚ[?d ðÔö´BB @  ªgÛ[?d 0Õöî:ò/ @  ªhÜ[?d pÕöl«åñ @  ªiÝ[?d °Õö>° ¨ @  ªjÞ[?d ðÕö¼!v @  ªkß[?d 0ÖöÀYP² @  ªlà[?d pÖöBÈGl @  ªmá[?d °ÖöÓ¨5 @  ªnâ[?d ðÖö’B¿ë @  ªoã[?d 0×öe›üf @  ªpä[?d p×öç ë¸ @  ªqå[?d °×öµá @  ªræ[?d ð×ö7€? @  ªsç[?d 0Øö¤) @  ªtè[?d pØö˜5>É @  ªué[?d °ØöÊ.Ñ @  ªvê[?d ðØöH¿ÆN @  ªwë[?d 0ÙöÇ»# @  ªxì[?d pÙöV¬ý @  ªyí[?d °ÙöÂMC¤ @  ªzî[?d ðÙö@ÜTz @  ª{ï[?d 0Úö¡ b @  ª|ð[?d pÚö#‚7¼ @  ª}ñ[?d °Úöq™Øå @  ª~ò[?d ðÚöóÏ; @  ªó[?d 0ÛöX†¥ @  ª€ô[?d pÛöÚŠ{ @  ªõ[?d °Ûöˆ e" @  ª‚ö[?d ðÛö rü @  ªƒ÷[?d 0Üö 7Æ @  ª„ø[?d pÜöˆ™  @  ª…ù[?d °ÜöÚ‚ÏA @  ª†ú[?d ðÜöXØŸ @  ª‡û[?d 0Ýök¥ò @  ªˆü[?d pÝö€ú², @  ª‰ý[?d °ÝöÒá]u @  ªŠþ[?d ðÝöPpJ« @  ª‹ÿ[?d 0Þö‚ð,v @  ªŒ\?d pÞöa;¨ @  ª\?d °ÞöRzÔñ @  ªŽ\?d ðÞöÐëÃ/ @  ª\?d 0ßö'2€¢ @  ª\?d pßö¥£—| @  ª‘\?d uÐàö/°ßö÷¸x% @  ª’\?d ðßöu)oû @  ª“\?d HàöuV‡8 @  ª”\?d ˆàöU£…Æ @  ª• \?d Èàö¥Ü¿ @  ª– \?d áöu”óW @  ª— \?d Háö}5  @  ª˜ \?d ˆáö]Àò @  ª™ \?d Èáö­¿í‹ @  ªš\?d âö0ûMJ @  ª›\?d HâöÎáŽM @  ªœ\?d ˆâö @  ª\?d ÈâökvÊ @  ªž\?d ãöÎ#ú" @  ªŸ\?d Hãöz%) @  ª \?d ˆãöZÐ× @  ª¡\?d Èãöª¯ý® @  ª¢\?d äö³á¡ @  ª£\?d Häö(«¯J @  ª¤\?d ˆäö^­´ @  ª¥\?d Èäöø!WÍ @  ª¦\?d åö(iÛ% @  ª§\?d Håö È=~ @  ª¨\?d ˆåö=?€ @  ª©\?d ÈåöðBÅù @  ªª\?d æöme8 @  ª«\?d Hæö«Ÿã @  ª¬ \?d ˆæö.^ @  ª­!\?d ÈæöÞ!gd @  ª®"\?d çöiëŒ @  ª¯#\?d Hçö«i37 @  ª°$\?d ˆçö‹œ1É @  ª±%\?d Èçö{ã˰ @  ª²&\?d èöOG­ @  ª³'\?d HèöÔVæF @  ª´(\?d ˆèöô£ä¸ @  ªµ)\?d ÈèöÜÁ @  ª¶*\?d éöÔ”’) @  ª·+\?d HéöÜ5tr @  ª¸,\?d ˆéöüÀvŒ @  ª¹-\?d Èéö ¿Œõ @  ªº.\?d êö‘û,4 @  ª»/\?d Hêöoáï3 @  ª¼0\?d ˆêöOíÍ @  ª½1\?d Èêö¿k´ @  ª¾2\?d ëöo#›\ @  ª¿3\?d Hëöu"bÅ @  ªÀ4\?d ˆëöU×`; @  ªÁ5\?d Èëö¥¨šB @  ªÂ6\?d ìö¼æiM @  ªÃ7\?d Hìö'¬È¦ @  ªÄ8\?d ˆìöYÊX @  ªÅ9\?d Èìö÷&0! @  ªÆ:\?d íö'n¼É @  ªÇ;\?d Híö/ÏZ’ @  ªÈ<\?d ˆíö:Xl @  ªÉ=\?d ÈíöÿE¢ @  ªÊ>\?d îöbÔ @  ªË?\?d Hîöñüí @  ªÌ@\?d ˆîöÑ ïà @  ªÍA\?d Èîö!v™ @  ªÎB\?d ïöñ>™q @  ªÏC\?d HïöT>AÊ @  ªÐD\?d ˆïötËC4 @  ªÑE\?d Èïö„´¹M @  ªÒF\?d ðö:jÿ @  ªÓG\?d Hðö¡ ¤ @  ªÔH\?d ˆðöÕ¦ê @  ªÕI\?d Èðöqª\“ @  ªÖJ\?d ñö¡âÐ{ @  ª×K\?d Hñö©C6  @  ªØL\?d ˆñö‰¶4Þ @  ªÙM\?d ÈñöyÉΧ @  ªÚN\?d òöänf @  ªÛO\?d Hòö—­a @  ªÜP\?d ˆòö:b¯Ÿ @  ªÝQ\?d ÈòöÊUæ @  ªÞR\?d óöUÙ @  ªßS\?d Hóö®S& @  ªàT\?d ˆóöަ$û @  ªáU\?d Èóö~ÙÞ‚ @  ªâV\?d€ ôöT1+ @  «W\?d Hôöi_Øé @  «X\?d ˆôöIªÚ @  «Y\?d Èôö|œÛƒ @  «Z\?d õö¬ÔWk @  «[\?d HõöjÇîJ @  «\\?d ˆõöJ2ì´ @  «]\?d ÈõötÿI· @  «^\?d ööé»év @  « _\?d HööO_è@ @  « `\?d ˆööoªê¾ @  « a\?d ÈööZœë* @  « b\?d ÷öŠÔg @  « c\?d H÷öLÇÞã @  «d\?d ˆ÷öl2Ü @  «e\?d È÷öÿ^Gþ @  «f\?d øöË¡Ëã @  «g\?d Høö•¢‘å @  «h\?d ˆøöµW“ @  «i\?d Èøö€a’ @  «j\?d ùöP)g @  «k\?d Hùö–:§F @  «l\?d ˆùö¶Ï¥¸ @  «m\?d Èùöˆ» @  «n\?d úöF z @  «o\?d Húö.˜ @  «p\?d ˆúöàšn @  «q\?d Èúö;Ö›ú @  «r\?d ûöëž @  «s\?d Hûö-®3 @  «t\?d ˆûö x¬Í @  «u\?d Èûöž @  « v\?d üö–\ã‘ @  «!w\?d HüöÈ_¹— @  «"x\?d ˆüö誻i @  «#y\?d ÈüöÝœºý @  «$z\?d ýö Ô6 @  «%{\?d HýöËÇ4 @  «&|\?d ˆýöë2Ê @  «'}\?d ÈýöÕÿ(É @  «(~\?d þöH»ˆ @  «)\?d HþöÉȽ @  «*€\?d ˆþö#<ÊC @  «+\?d Èþö Ë× @  «,‚\?d ÿöÆBG? @  «-ƒ\?d HÿöQþ @  «.„\?d ˆÿö ¤üà @  «/uÐ÷…\?d Èÿö³Èg @  «0†\?d ÷ü|Oò @  «1‡\?d `÷¢ô @  «2ˆ\?d  ÷‚Š  @  «3‰\?d à÷·¼ž @  «4Š\?d ÷gôšv @  «5‹\?d `÷¡ç#W @  «6Œ\?d  ÷!© @  «7\?d à÷¿ß„ª @  «8Ž\?d ÷"›$k @  «9\?d `÷È @  «:\?d  ÷9= @  «;‘\?d à÷ ë @  «<’\?d ÷ÜC“ @  «=“\?d `÷P*" @  «>”\?d  ÷:¥(Ü @  «?•\?d à÷È’ @  «@–\?d ÷†a @  «A—\?d `÷Q…; @  «B˜\?d  ÷qp9ê @  «C™\?d à÷DF8~ @  «Dš\?d ÷”´– @  «E›\?d `÷R · @  «Fœ\?d  ÷rèI @  «G\?d à÷L%ªJ @  «Hž\?d ÷Ña ‹ @  «IŸ\?d `÷w… ½ @  «J \?d  ÷Wp C @  «K¡\?d à÷bF× @  «L¢\?d ÷²„? @  «M£\?d `÷t= @  «N¤\?d  ÷Tè?à @  «O¥\?d à÷Ç„¤ @  «P¦\?d ÷ó{( @  «Q§\?d `÷­xr @  «R¨\?d  ÷pæ @  «S©\?d à÷¸»qr @  «Tª\?d ÷hóýš @  «U«\?d ` ÷®àD» @  «V¬\?d   ÷ŽFE @  «W­\?d à ÷°ØãF @  «X®\?d ÷-œC‡ @  «Y¯\?d ` ÷Ï{m @  «Z°\?d   ÷6:y“ @  «[±\?d à ÷ x @  «\²\?d ÷ÓDôï @  «]³\?d ` ÷WMÎ @  «^´\?d   ÷5¢O0 @  «_µ\?d à ÷·Èóc @  «`¶\?d ÷®†l @  «a·\?d ` ÷ð…Zj @  «b¸\?d   ÷ÐpX” @  «c¹\?d à ÷åFY @  «dº\?d ÷5Õè @  «e»\?d ` ÷ólÉ @  «f¼\?d   ÷Óèn7 @  «g½\?d à ÷í%Ë4 @  «h¾\?d ÷pakõ @  «i¿\?d `÷&ÕÒ @  «jÀ\?d  ÷ }, @  «kÁ\?d à÷3|¸ @  «lÂ\?d ÷ã^ðP @  «mÃ\?d `÷%MIq @  «nÄ\?d  ÷¸K @  «oÅ\?d à÷–ÔÐl @  «pÆ\?d ÷( lÞ @  «qÇ\?d `÷v 6Ø @  «rÈ\?d  ÷Vü4& @  «sÉ\?d à÷cÊ5² @  «tÊ\?d ÷³‚¹Z @  «uË\?d `÷u‘{ @  «vÌ\?d  ÷Ud… @  «wÍ\?d à÷k©§† @  «xÎ\?d ÷öíG @  «yÏ\?d `÷;?­ @  «zÐ\?d  ÷íK=S @  «{Ñ\?d à÷Ø}<Ç @  «|Ò\?d ÷5°/ @  «}Ó\?d `÷Î&  @  «~Ô\?d  ÷îÓ ð @  «Õ\?d à÷!è @  «€Ö\?d ÷8¦r @  «×\?d `÷f¥(  @  «‚Ø\?d  ÷FP*÷ @  «ƒÙ\?d à÷sf+c @  «„Ú\?d ÷£.§‹ @  «…Û\?d `÷e=ª @  «†Ü\?d  ÷EÈT @  «‡Ý\?d à÷{¹W @  «ˆÞ\?d ÷æA– @  «‰ß\?d `÷@¥  @  «Šà\?d  ÷`P^ @  «‹á\?d à÷UfÊ @  «Œâ\?d ÷….—" @  «ã\?d `÷C=. @  «Žä\?d  ÷cÈ,ý @  «å\?d à÷𤷠@  «æ\?d ÷Ä[; @  «‘ç\?d `÷šXa @  «’è\?d  ÷º­cû @  «“é\?d à÷›bo @  «”ê\?d ÷_Óî‡ @  «•ë\?d `÷™ÀW¦ @  «–ì\?d  ÷¹5UX @  «—í\?d à÷‡øð[ @  «˜î\?d ÷¼Pš @  «™ï\?d `÷!ïhp @  «šð\?d  ÷jŽ @  «›ñ\?d à÷4,k @  «œò\?d ÷ädçò @  «ó\?d `÷"w^Ó @  «žô\?d  ÷‚\- @  «Ÿõ\?d à÷€èà~ @  « ö\?d ÷™¦q @  «¡÷\?d `÷Ç¥Iw @  «¢ø\?d  ÷çPK‰ @  «£ù\?d à÷ÒfJ @  «¤ú\?d ÷.Æõ @  «¥û\?d `÷Ä=Ô @  «¦ü\?d  ÷äÈ}* @  «§ý\?d à÷ÚØ) @  «¨þ\?d ÷GAxè @  «©ÿ\?d `÷sTmQ @  «ª]?d  ÷S¡o¯ @  ««]?d à÷f—n; @  «¬]?d ÷¶ßâÓ @  «­]?d `÷pÌ[ò @  «®]?d  ÷P9Y uÐ ÷ @  «¯]?d à÷ÃUÂï @  «°]?d 8 ÷²^‰ @  «±]?d x ÷ì]F @  «²]?d ¸ ÷̨Dq @  «³ ]?d ø ÷ùžEå @  «´ ]?d 8!÷)ÖÉ  @  «µ ]?d x!÷ïÅp, @  «¶ ]?d ¸!÷Ï0rÒ @  «· ]?d ø!÷ñý×Ñ @  «¸]?d 8"÷l¹w @  «¹]?d x"÷WêOú @  «º]?d ¸"÷wM @  «»]?d ø"÷B)L @  «¼]?d 8#÷’aÀx @  «½]?d x#÷TryY @  «¾]?d ¸#÷t‡{§ @  «¿]?d ø#÷XêÁf @  «À]?d 8$÷A¤2i @  «Á]?d x$÷§ho @  «Â]?d ¸$÷?Rj‘ @  «Ã]?d ø$÷ dk @  «Ä]?d 8%÷Ú,çí @  «Å]?d x%÷?^Ì @  «Æ]?d ¸%÷<Ê\2 @  «Ç]?d ø%÷ù1 @  «È]?d 8&÷ŸCYð @  «É]?d x&÷9§XÆ @  «Ê ]?d ¸&÷RZ8 @  «Ë!]?d ø&÷,d[¬ @  «Ì"]?d 8'÷ü,×D @  «Í#]?d x'÷:?ne @  «Î$]?d ¸'÷Êl› @  «Ï%]?d ø'÷‰¦÷x @  «Ð&]?d 8(÷½Y{e @  «Ñ']?d x(÷ãZ!c @  «Ò(]?d ¸(÷ï# @  «Ó)]?d ø(÷ö™"  @  «Ô*]?d 8)÷&Ñ®á @  «Õ+]?d x)÷àÂÀ @  «Ö,]?d ¸)÷À7> @  «×-]?d ø)÷þú°= @  «Ø.]?d 8*÷c¾ü @  «Ù/]?d x*÷Xí( @  «Ú0]?d ¸*÷x*è @  «Û1]?d ø*÷M.+| @  «Ü2]?d 8+÷f§” @  «Ý3]?d x+÷[uµ @  «Þ4]?d ¸+÷{€K @  «ß5]?d ø+÷ùê  @  «à6]?d 8,÷à¤S @  «á7]?d x,÷¾§  @  «â8]?d€ ¸,÷£V @  ¬9]?d ø,÷Ìsêë @  ¬:]?d 8-÷;f @  ¬;]?d x-÷a$Ï @  ¬<]?d ¸-÷?”&1 @  ¬=]?d ø-÷ÏëÜH @  ¬>]?d 8.÷R¯|‰ @  ¬?]?d x.÷Ê©7Ô @  ¬@]?d ¸.÷ê\5* @  ¬ A]?d ø.÷#ÏS @  ¬ B]?d 8/÷ÊkC» @  ¬ C]?d x/÷É1w @  ¬ D]?d ¸/÷éĉ @  ¬ E]?d ø/÷»ùð @  ¬F]?d 80÷§eEB @  ¬G]?d x0÷šu~Þ @  ¬H]?d ¸0÷º€|  @  ¬I]?d ø0÷Jÿ†Y @  ¬J]?d 81÷š· ± @  ¬K]?d x1÷™íH} @  ¬L]?d ¸1÷¹Jƒ @  ¬M]?d ø1÷Ig°ú @  ¬N]?d 82÷Ô#; @  ¬O]?d x2÷!Âw« @  ¬P]?d ¸2÷7uU @  ¬Q]?d ø2÷ñH, @  ¬R]?d 83÷!Ä @  ¬S]?d x3÷"ZA @  ¬T]?d ¸3÷¯Cö @  ¬U]?d ø3÷òй @  ¬V]?d 84÷ëžJ€ @  ¬W]?d x4÷LjV¬ @  ¬ X]?d ¸4÷ç}TR @  ¬!Y]?d ø4÷®+ @  ¬"Z]?d 85÷ÇJ"à @  ¬#[]?d x5÷Ä` @  ¬$\]?d ¸5÷äåbñ @  ¬%]]?d ø5÷š˜ˆ @  ¬&^]?d 86÷‰Þ8I @  ¬'_]?d x6÷áˆf @  ¬(`]?d ¸6÷Á}dû @  ¬)a]?d ø6÷1ž‚ @  ¬*b]?d 87÷áJj @  ¬+c]?d x7÷âP¦ @  ¬,d]?d ¸7÷ÂåRX @  ¬-e]?d ø7÷2š¨! @  ¬.f]?d 88÷e$< @  ¬/g]?d x8÷;u  @  ¬0h]?d ¸8÷€^ @  ¬1i]?d ø8÷ëÿç' @  ¬2j]?d 89÷;·kÏ @  ¬3k]?d x9÷8í) @  ¬4l]?d ¸9÷+ý @  ¬5m]?d ø9÷ègÑ„ @  ¬6n]?d 8:÷u#qE @  ¬7o]?d x:÷€ÂÕ @  ¬8p]?d ¸:÷ 7+ @  ¬9q]?d ø:÷PHîR @  ¬:r]?d 8;÷€bº @  ¬;s]?d x;÷ƒZ v @  ¬<t]?d ¸;÷£¯"ˆ @  ¬=u]?d ø;÷SÐØñ @  ¬>v]?d 8<÷Jž+þ @  ¬?w]?d x<÷È1@ @  ¬@x]?d ¸<÷èz3¾ @  ¬Ay]?d ø<÷ÉÇ @  ¬Bz]?d 8=÷ÈME/ @  ¬C{]?d x=÷Ëã @  ¬D|]?d ¸=÷ëâ @  ¬E}]?d ø=÷ÿd @  ¬F~]?d 8>÷†Ù_¥ @  ¬G]?d x>÷@j @  ¬H€]?d ¸>÷#ìB” @  ¬I]?d ø>÷Ó“¸í @  ¬J‚]?d 8?÷Û4 @  ¬Kƒ]?d x?÷vÉ @  ¬L„]?duÐ@÷7 ¸?÷ tt7 @  ¬M…]?d ø?÷­‹ý2 @  ¬N€†]?d P@÷n'G @  ¬O€‡]?d @÷ñSi² @  ¬P€ˆ]?d Ð@÷sÂ~l @  ¬Q€‰]?d A÷Ñd# @  ¬R€Š]?d PA÷Sõý @  ¬S€‹]?d A÷òË_ @  ¬T€Œ]?d ÐA÷pZHÏ @  ¬U€]?d B÷Ÿð© @  ¬V€Ž]?d PB÷aw @  ¬W€]?d B÷Jä`Ç @  ¬X€]?d ÐB÷Èuw @  ¬Y€‘]?d C÷jÓV @  ¬Z€’]?d PC÷èBˆ @  ¬[€“]?d C÷I|Vd @  ¬\€”]?d ÐC÷ËíAº @  ¬]€•]?d D÷ M_ @  ¬^€–]?d PD÷"ÜHÌ @  ¬_€—]?d D÷¬®AÀ @  ¬`€˜]?d ÐD÷.?V @  ¬a€™]?d E÷Œ™7Q @  ¬b€š]?d PE÷  @  ¬c€›]?d E÷¯6wc @  ¬d€œ]?d ÐE÷-§`½ @  ¬e€]?d F÷ -Û @  ¬f€ž]?d PF÷@œ: @  ¬g€Ÿ]?d F÷Š®qi @  ¬h€ ]?d ÐF÷?f· @  ¬i€¡]?d G÷ª™ø @  ¬j€¢]?d PG÷(& @  ¬k€£]?d G÷‰6GÊ @  ¬l€¤]?d ÐG÷ §P @  ¬m€¥]?d H÷M¶1® @  ¬n€¦]?d PH÷Ï'&p @  ¬o€§]?d H÷PSÌ @  ¬p€¨]?d ÐH÷Ò @  ¬q€©]?d I÷pd~] @  ¬r€ª]?d PI÷òõiƒ @  ¬s€«]?d I÷SË>o @  ¬t€¬]?d ÐI÷ÑZ)± @  ¬u€­]?d J÷>ðd× @  ¬v€®]?d PJ÷¼as  @  ¬w€¯]?d J÷ëä¹ @  ¬x€°]?d ÐJ÷iug @  ¬y€±]?d K÷ËÓw( @  ¬z€²]?d PK÷IB`ö @  ¬{€³]?d K÷è|7 @  ¬|€´]?d ÐK÷jí Ä @  ¬}€µ]?d L÷M>l @  ¬~€¶]?d PL÷ƒÜ)² @  ¬€·]?d L÷@ÿ @  ¬€€¸]?d ÐL÷Ânà @  ¬€¹]?d M÷`È`Œ @  ¬‚€º]?d PM÷âYwR @  ¬ƒ€»]?d M÷Cg ¾ @  ¬„€¼]?d ÐM÷Áö7` @  ¬…€½]?d N÷.\z @  ¬†€¾]?d PN÷¬ÍmØ @  ¬‡€¿]?d N÷–¯3¥ @  ¬ˆ€À]?d ÐN÷>${ @  ¬‰€Á]?d O÷¶˜E4 @  ¬Š€Â]?d PO÷4 Rê @  ¬‹€Ã]?d O÷•7 @  ¬Œ€Ä]?d ÐO÷¦Ø @  ¬€Å]?d P÷Û–CÍ @  ¬Ž€Æ]?d PP÷YT @  ¬€Ç]?d P÷Æsz¯ @  ¬€È]?d ÐP÷Dâmq @  ¬‘€É]?d Q÷æD > @  ¬’€Ê]?d PQ÷dÕà @  ¬“€Ë]?d Q÷ÅëL  @  ¬”€Ì]?d ÐQ÷Gz[Ò @  ¬•€Í]?d R÷¨Ð´ @  ¬–€Î]?d PR÷*Aj @  ¬—€Ï]?d R÷}ÄsÚ @  ¬˜€Ð]?d ÐR÷ÿUd @  ¬™€Ñ]?d S÷]óK @  ¬š€Ò]?d PS÷ßb• @  ¬›€Ó]?d S÷~\Ey @  ¬œ€Ô]?d ÐS÷üÍR§ @  ¬€Õ]?d T÷—mL @  ¬ž€Ö]?d PT÷ü[Ñ @  ¬Ÿ€×]?d T÷›ŽRÝ @  ¬ €Ø]?d ÐT÷E @  ¬¡€Ù]?d U÷»¹$L @  ¬¢€Ú]?d PU÷9(3’ @  ¬£€Û]?d U÷˜d~ @  ¬¤€Ü]?d ÐU÷‡s  @  ¬¥€Ý]?d V÷õ->Æ @  ¬¦€Þ]?d PV÷w¼) @  ¬§€ß]?d V÷½Žbt @  ¬¨€à]?d ÐV÷?uª @  ¬©€á]?d W÷¹å @  ¬ª€â]?d PW÷(; @  ¬«€ã]?d W÷¾T× @  ¬¬€ä]?d ÐW÷<‡C  @  ¬­€å]?d X÷z–"³ @  ¬®€æ]?d PX÷ø5m @  ¬¯€ç]?d X÷gsÑ @  ¬°€è]?d ÐX÷åâ  @  ¬±€é]?d Y÷GDm@ @  ¬²€ê]?d PY÷ÅÕzž @  ¬³€ë]?d Y÷dë-r @  ¬´€ì]?d ÐY÷æz:¬ @  ¬µ€í]?d Z÷ ÐwÊ @  ¬¶€î]?d PZ÷‹A` @  ¬·€ï]?d Z÷ÜĤ @  ¬¸€ð]?d ÐZ÷^Uz @  ¬¹€ñ]?d [÷üód5 @  ¬º€ò]?d P[÷~bsë @  ¬»€ó]?d [÷ß\$ @  ¬¼€ô]?d Ð[÷]Í3Ù @  ¬½€õ]?d \÷6m-q @  ¬¾€ö]?d P\÷´ü:¯ @  ¬¿€÷]?d \÷”‰51 @  ¬À€ø]?d Ð\÷"ï @  ¬Á€ù]?d ]÷´¾C  @  ¬€ú]?d P]÷6/T~ @  ¬Àû]?d ]÷—’ @  ¬Ä€ü]?d Ð]÷€L @  ¬Å€ý]?d ^÷ú*Y* @  ¬Æ€þ]?d P^÷x»Nô @  ¬Ç€ÿ]?d ^÷’Z$2 @  ¬È€^?d Ð^÷Ë3ì @  ¬É€^?d _÷²mR£ @  ¬Ê€^?d P_÷0üE} @  ¬Ë€^?d _÷‘‘ @  ¬uÐ`÷Ì€^?d Ð_÷nÓv3 @  ¬Í^?d (`÷¢Å.  @  ¬Î^?d h`÷ T9Ò @  ¬Ï^?d ¨`÷¿ n @  ¬Ð^?d è`÷=±° @  ¬Ñ ^?d (a÷Ÿaÿ @  ¬Ò ^?d ha÷†v! @  ¬Ó ^?d ¨a÷¼¸!Í @  ¬Ô ^?d èa÷>)6 @  ¬Õ ^?d (b÷у{u @  ¬Ö^?d hb÷Sl« @  ¬×^?d ¨b÷— @  ¬Ø^?d èb÷† Å @  ¬Ù^?d (c÷$ hŠ @  ¬Ú^?d hc÷¦1T @  ¬Û^?d ¨c÷(¸ @  ¬Ü^?d èc÷…ž?f @  ¬Ý^?d (d÷î>!Î @  ¬Þ^?d hd÷l¯6 @  ¬ß^?d ¨d÷âÝ? @  ¬à^?d èd÷`L( @  ¬á^?d (e÷ÂêI @  ¬â^?d€ he÷4¸Bõ @  ­^?d ¨e÷tÇ]0 @  ­^?d èe÷öVJî @  ­^?d (f÷ܵüe @  ­^?d hf÷^$ë» @  ­^?d ¨f÷Z¤ÿ­ @  ­ ^?d èf÷Ø5ès @  ­!^?d (g÷´!ÖF @  ­"^?d hg÷6°Á˜ @  ­ #^?d ¨g÷RÇm™ @  ­ $^?d èg÷ÐVzG @  ­ %^?d (h÷Sà @  ­ &^?d hh÷ÑŸ÷Î @  ­ '^?d ¨h÷-ø¸è @  ­(^?d èh÷¯i¯6 @  ­)^?d (i÷nܯã @  ­*^?d hi÷ìM¸= @  ­+^?d ¨i÷ˆ:< @  ­,^?d èi÷ «â @  ­-^?d (j÷ Hµi @  ­.^?d hj÷¢Ù¢· @  ­/^?d ¨j÷;î} @  ­0^?d èj÷¹˜£ @  ­1^?d (k÷Õk¦– @  ­2^?d hk÷Wú±H @  ­3^?d ¨k÷3I @  ­4^?d èk÷± — @  ­5^?d (l÷õïÒ @  ­6^?d hl÷dø  @  ­7^?d ¨l÷a·* @  ­8^?d èl÷ã’ ô @  ­9^?d (m÷3!‡‘ @  ­ :^?d hm÷±°O @  ­!;^?d ¨m÷ÕÇ^?d hn÷ÿ$ŠÅ @  ­%?^?d ¨n÷ ô‹Â @  ­&@^?d èn÷‰eœ @  ­'A^?d (o÷åq¢) @  ­(B^?d ho÷gàµ÷ @  ­)C^?d ¨o÷—ö @  ­*D^?d èo÷( @  ­+E^?d (p÷ˆ¤Ð @  ­,F^?d hp÷ î³ @  ­-G^?d ¨p÷ö‰ü( @  ­.H^?d èp÷tëö @  ­/I^?d (q÷µ­ë# @  ­0J^?d hq÷7<üý @  ­1K^?d ¨q÷SKPü @  ­2L^?d èq÷ÑÚG" @  ­3M^?d (r÷û9ñ© @  ­4N^?d hr÷y¨æw @  ­5O^?d ¨r÷àŸË½ @  ­6P^?d èr÷bÜc @  ­7Q^?d (s÷âV @  ­8R^?d hs÷Œ‹õˆ @  ­9S^?d ¨s÷èüY‰ @  ­:T^?d ès÷jmNW @  ­;U^?d (t÷Ä„« @  ­<V^?d ht÷F¼Ì @  ­=W^?d ¨t÷ºróê @  ­>X^?d èt÷8ãä4 @  ­?Y^?d (u÷FWÅà @  ­@Z^?d hu÷ÄÆÒ @  ­A[^?d ¨u÷ ±~ @  ­B\^?d èu÷" i @  ­C]^?d (v÷ÃßI @  ­D^^?d hv÷ŠRÈ— @  ­E_^?d ¨v÷ŽÒÜ @  ­F`^?d èv÷ CË_ @  ­Ga^?d (w÷`Wõj @  ­Hb^?d hw÷âÆâ´ @  ­Ic^?d ¨w÷†±Nµ @  ­Jd^?d èw÷ Yk @  ­Ke^?d (x÷‡xÃ< @  ­Lf^?d hx÷éÔâ @  ­Mg^?d ¨x÷ùŽ›Ä @  ­Nh^?d èx÷{Œ @  ­Oi^?d (y÷ºªŒÏ @  ­Pj^?d hy÷8;› @  ­Qk^?d ¨y÷\L7 @  ­Rl^?d èy÷ÞÝ Î @  ­Sm^?d (z÷ô>–E @  ­Tn^?d hz÷v¯› @  ­Uo^?d ¨z÷Q @  ­Vp^?d èz÷m » @  ­Wq^?d ({÷…º @  ­Xr^?d h{÷ƒŒ’d @  ­Ys^?d ¨{÷çû>e @  ­Zt^?d è{÷ej)» @  ­[u^?d (|÷˃Ìþ @  ­\v^?d h|÷IÛ  @  ­]w^?d ¨|÷µu” @  ­^x^?d è|÷7äƒØ @  ­_y^?d (}÷çW¤½ @  ­`z^?d h}÷eƳc @  ­a{^?d ¨}÷±b @  ­b|^?d è}÷ƒ ¼ @  ­c}^?d (~÷©Ã¾7 @  ­d~^?d h~÷+R©é @  ­e^?d ¨~÷ÂDü| @  ­f€^?d è~÷@Õë¢ @  ­g^?d (÷,ÁÕ— @  ­h‚^?d h÷®PÂI @  ­iƒ^?d ¨÷uЀ÷'Ê'nH @  ­j„^?d è÷H¶y– @  ­k…^?d @€÷‘¯¨ @  ­l†^?d €€÷±ZV @  ­m‡^?d À€÷ïYÕP @  ­nˆ^?d ÷?Y¸ @  ­o‰^?d @÷¬}Â[ @  ­pŠ^?d €÷ŒˆÀ¥ @  ­q‹^?d À÷J›y„ @  ­rŒ^?d ‚÷×ßÙE @  ­s^?d @‚÷âéØÑ @  ­tŽ^?d €‚÷ÂÚ/ @  ­u^?d À‚÷ùOâÅ @  ­v^?d ƒ÷)n- @  ­w‘^?d @ƒ÷ÊË. @  ­x’^?d €ƒ÷7?ÉÐ @  ­y“^?d Àƒ÷ñ,pñ @  ­z”^?d „÷èbƒþ @  ­{•^?d @„÷ÝT‚j @  ­|–^?d €„÷ý¡€” @  ­}—^?d À„÷£¢Ú’ @  ­~˜^?d …÷sêVz @  ­™^?d @…÷¼ÑÜŠ @  ­€š^?d €…÷œ$Þt @  ­›^?d À…÷Z7gU @  ­‚œ^?d †÷ÇsÇ” @  ­ƒ^?d @†÷òEÆ @  ­„ž^?d €†÷Ò°Äþ @  ­…Ÿ^?d À†÷tTÅÈ @  ­† ^?d ‡÷¤I  @  ­‡¡^?d @‡÷šÑì# @  ­ˆ¢^?d €‡÷º$îÝ @  ­‰£^?d À‡÷|7Wü @  ­Š¤^?d ˆ÷HÈÛá @  ­‹¥^?d @ˆ÷}þÚu @  ­Œ¦^?d €ˆ÷] Ø‹ @  ­§^?d Àˆ÷‚ @  ­Ž¨^?d ‰÷Ó@e @  ­©^?d @‰÷@,•† @  ­ª^?d €‰÷`Ù—x @  ­‘«^?d À‰÷Ÿ òŒ @  ­’ ¬^?d Š÷IRM @  ­“ ­^?d @Š÷7SÙ @  ­” ®^?d €Š÷ŠQ' @  ­• ¯^?d ÀŠ÷,ÙiÍ @  ­– °^?d ‹÷ü‘å% @  ­— ±^?d @‹÷Â\@& @  ­˜ ²^?d €‹÷â©BØ @  ­™ ³^?d À‹÷$ºûù @  ­š ´^?d Œ÷=ôö @  ­› µ^?d @Œ÷ b @  ­œ ¶^?d €Œ÷(7 œ @  ­ ·^?d ÀŒ÷v4Qš @  ­ž ¸^?d ÷¦|Ýr @  ­Ÿ ¹^?d @÷$a! @  ­  º^?d €÷ãcß @  ­¡ »^?d À÷ÂðÚþ @  ­¢ ¼^?d Ž÷_´z? @  ­£ ½^?d @Ž÷j‚{« @  ­¤ ¾^?d €Ž÷JwyU @  ­¥ ¿^?d ÀŽ÷Ãmr @  ­¦ À^?d ÷̋ᚠ@  ­§ Á^?d @÷òFD™ @  ­¨ Â^?d €÷Ò³Fg @  ­© Ã^?d À÷ ÿF @  ­ª Ä^?d ÷ª~Cô @  ­« Å^?d @÷ŸHB` @  ­¬ Æ^?d €÷¿½@ž @  ­­ Ç^?d À÷ᾘ @  ­® È^?d ‘÷1ö–p @  ­¯ É^?d @‘÷¢š “ @  ­° Ê^?d €‘÷‚om @  ­± Ë^?d À‘÷D|¶L @  ­² Ì^?d ’÷Ù8 @  ­³ Í^?d @’÷ì @  ­´ Î^?d €’÷Ìûç @  ­µ Ï^?d À’÷÷¨-  @  ­¶ Ð^?d “÷'à¡å @  ­· Ñ^?d @“÷-æ @  ­¸ Ò^?d €“÷9Ø @  ­¹ Ó^?d À“÷ÿË¿9 @  ­º Ô^?d ”÷æ…L6 @  ­» Õ^?d @”÷Ó³M¢ @  ­¼ Ö^?d €”÷óFO\ @  ­½ ×^?d À”÷­EZ @  ­¾ Ø^?d •÷} ™² @  ­¿ Ù^?d @•÷Q`#s @  ­À Ú^?d €•÷q•! @  ­Á Û^?d À•÷·†˜¬ @  ­ Ü^?d –÷*Â8m @  ­à Ý^?d @–÷ô9ù @  ­Ä Þ^?d €–÷?; @  ­Å ß^?d À–÷™å:1 @  ­Æ à^?d —÷I­¶Ù @  ­Ç á^?d @—÷w`Ú @  ­È â^?d €—÷W•$ @  ­É ã^?d À—÷‘†¨ @  ­Ê ä^?d ˜÷¥y$ @  ­Ë å^?d @˜÷O%Œ @  ­Ì æ^?d €˜÷°º'r @  ­Í ç^?d À˜÷î¹}t @  ­Î è^?d ™÷>ññœ @  ­Ï é^?d @™÷­j @  ­Ð ê^?d €™÷hh @  ­Ñ ë^?d À™÷K{Ñ  @  ­Ò ì^?d š÷Ö?qa @  ­Ó í^?d @š÷ã põ @  ­Ô î^?d €š÷Ãür  @  ­Õ ï^?d Àš÷ø¯Já @  ­Ö ð^?d ›÷(çÆ  @  ­× ñ^?d @›÷*c  @  ­Ø ò^?d €›÷6ßaô @  ­Ù ó^?d À›÷ðÌØÕ @  ­Ú ô^?d œ÷é‚+Ú @  ­Û õ^?d @œ÷Ü´*N @  ­Ü ö^?d €œ÷üA(° @  ­Ý ÷^?d Àœ÷¢Br¶ @  ­Þ ø^?d ÷r þ^ @  ­ß ù^?d @÷ð`B  @  ­à ú^?d €÷Е@ó @  ­á û^?d À÷†ùÒ @  ­â ü^?d€ ž÷J…® @  ® ý^?d @ž÷žòç® @  ® þ^?d €ž÷¾åP @  ® ÿ^?d Àž÷O[  @  ® _?d Ÿ÷Ÿ‡ì @  ® _?d @Ÿ÷ol}• @  ® _?d €Ÿ÷O™k @  ® _uР÷?d ÀŸ÷G8™0 @  ® _?d  ÷63GV @  ® _?d X ÷ÆL½/ @  ® _?d ˜ ÷湿Ñ @  ® _?d Ø ÷}ó: @  ® _?d ¡÷­»’Ò @  ®  _?d X¡÷]Äh« @  ®  _?d ˜¡÷}1jU @  ®  _?d Ø¡÷Ø1²î @  ®  _?d ¢÷Eu/ @  ®  _?d X¢÷µ èV @  ® _?d ˜¢÷•ÿê¨ @  ® _?d Ø¢÷kå)¯ @  ® _?d £÷»­¥G @  ® _?d X£÷KÒ_> @  ® _?d ˜£÷k']À @  ® _?d Ø£÷c†»› @  ® _?d ¤÷zÈH” @  ® _?d X¤÷Š·²í @  ® _?d ˜¤÷ªB° @  ® _?d ؤ÷1ø @  ® _?d ¥÷á@ @  ® _?d X¥÷?gi @  ® _?d ˜¥÷1Êe— @  ® _?d Ø¥÷…Ìšœ @  ® _?d ¦÷ˆ:] @  ®! _?d X¦÷è÷À$ @  ®" _?d ˜¦÷ÈÂÚ @  ®# _?d ئ÷«¯8 @  ®$  _?d §÷{ç´é @  ®% !_?d X§÷‹˜N @  ®& "_?d ˜§÷«mLn @  ®' #_?d ا÷£Ìª5 @  ®( $_?d ¨÷—3&( @  ®) %_?d X¨÷gLÜQ @  ®* &_?d ˜¨÷G¹Þ¯ @  ®+ '_?d ب÷ÜóD @  ®, (_?d ©÷ »ó¬ @  ®- )_?d X©÷üÄ Õ @  ®. *_?d ˜©÷Ü1 + @  ®/ +_?d Ø©÷y1Ó @  ®0 ,_?d ª÷äusQ @  ®1 -_?d Xª÷ ‰( @  ®2 ._?d ˜ª÷4ÿ‹Ö @  ®3 /_?d ت÷ÊåHÑ @  ®4 0_?d «÷­Ä9 @  ®5 1_?d X«÷êÒ>@ @  ®6 2_?d ˜«÷Ê'<¾ @  ®7 3_?d Ø«÷†Úå @  ®8 4_?d ¬÷ÛÈ)ê @  ®9 5_?d X¬÷+·Ó“ @  ®: 6_?d ˜¬÷ BÑm @  ®; 7_?d ج÷p† @  ®< 8_?d ­÷@@ün @  ®= 9_?d X­÷°? @  ®> :_?d ˜­÷Êé @  ®? ;_?d Ø­÷ŠËýp @  ®@ <_?d ®÷]± @  ®A =_?d X®÷çð§È @  ®B >_?d ˜®÷Ç¥6 @  ®C ?_?d Ø®÷TøJü @  ®D @_?d ¯÷„°Æ @  ®E A_?d X¯÷tÏ“ @  ®G C_?d د÷\›ØÈ @  ®H D_?d °÷âEdz @  ®I E_?d X°÷:ž @  ®J F_?d ˜°÷2Ïœý @  ®K G_?d ذ÷©…= @  ®L H_?d ±÷yͱþ @  ®M I_?d X±÷‰²K‡ @  ®N J_?d ˜±÷©GIy @  ®O K_?d ر÷ G‘ @  ®P L_?d ²÷‘1 @  ®Q M_?d X²÷a|Ëz @  ®R N_?d ˜²÷A‰É„ @  ®S O_?d ز÷¿“ ƒ @  ®T P_?d ³÷oÛ†k @  ®U Q_?d X³÷Ÿ¤| @  ®V R_?d ˜³÷¿Q~ì @  ®W S_?d س÷·ð˜· @  ®X T_?d ´÷®¾k¸ @  ®Y U_?d X´÷^Á‘Á @  ®Z V_?d ˜´÷~4“? @  ®[ W_?d Ø´÷å~2Ô @  ®\ X_?d µ÷56¾< @  ®] Y_?d Xµ÷ÅIDE @  ®^ Z_?d ˜µ÷å¼F» @  ®_ [_?d ص÷Qº¹° @  ®` \_?d ¶÷Ìþq @  ®a ]_?d X¶÷<ã @  ®b ^_?d ˜¶÷táö @  ®c __?d ض÷Ù- @  ®d `_?d ·÷¯‘—Å @  ®e a_?d X·÷_îm¼ @  ®f b_?d ˜·÷oB @  ®g c_?d Ø·÷wº‰ @  ®h d_?d ¸÷CE @  ®i e_?d X¸÷³:ÿ} @  ®j f_?d ˜¸÷“Ïýƒ @  ®k g_?d ظ÷…\h @  ®l h_?d ¹÷ØÍЀ @  ®m i_?d X¹÷(²*ù @  ®n j_?d ˜¹÷G( @  ®o k_?d ع÷­Gð¼ @  ®p l_?d º÷0P} @  ®q m_?d Xº÷À|ª @  ®r n_?d ˜º÷à‰¨ú @  ®s o_?d غ÷“ký @  ®t p_?d »÷ÎÛç @  ®u q_?d X»÷>¤l @  ®v r_?d ˜»÷Q’ @  ®w s_?d Ø»÷ðùÉ @  ®x t_?d ¼÷¾ Æ @  ®y u_?d X¼÷ÿÁð¿ @  ®z v_?d ˜¼÷ß4òA @  ®{ w_?d ؼ÷D~Sª @  ®| x_?d ½÷”6ßB @  ®} y_?d X½÷dI%; @  ®~ z_?d ˜½÷D¼'Å @  ® {_?d ؽ÷½ëîm @  ®€ |_?d ¾÷ ¯N¬ @  ® }_?d X¾÷ÐдÕ @  ®‚ ~_?d ˜¾÷ð%¶+ @  ®ƒ _?d ؾ÷~ s @  ®„ €_?d ¿÷®V› @  ®… _?d X¿÷^){â @  ®† ‚_?d ˜¿÷~Üy @uÐÀ÷  ®‡ ƒ_?d Ø¿÷OºC’ @  ®ˆ„_?d 0À÷+JÀ @  ®‰…_?d pÀ÷Û5è¹ @  ®Š†_?d °À÷ûÀêG @  ®‹‡_?d ðÀ÷`ŠK¬ @  ®Œˆ_?d 0Á÷°ÂÇD @  ®‰_?d pÁ÷@½== @  ®ŽŠ_?d °Á÷`H?à @  ®‹_?d ðÁ÷ÅHçx @  ®Œ_?d 0Â÷X G¹ @  ®‘_?d pÂ÷¨s½À @  ®’Ž_?d °Â÷ˆ†¿> @  ®“_?d ðÂ÷vœ|9 @  ®”_?d 0Ã÷¦ÔðÑ @  ®•‘_?d pÃ÷V« ¨ @  ®–’_?d °Ã÷v^V @  ®—“_?d ðÃ÷~ÿî  @  ®˜”_?d 0Ä÷g± @  ®™•_?d pÄ÷—Îç{ @  ®š–_?d °Ä÷·;å… @  ®›—_?d ðÄ÷,qDn @  ®œ˜_?d 0Å÷ü9Ȇ @  ®™_?d pÅ÷ F2ÿ @  ®žš_?d °Å÷,³0 @  ®Ÿ›_?d ðÅ÷˜µÏ  @  ® œ_?d 0Æ÷ñoË @  ®¡_?d pÆ÷õŽ•² @  ®¢ž_?d °Æ÷Õ{—L @  ®£Ÿ_?d ðÆ÷¶Öm— @  ®¤ _?d 0Ç÷fžá @  ®¥¡_?d pÇ÷–á @  ®¦¢_?d °Ç÷¶ø @  ®§£_?d ðÇ÷¾µÿ£ @  ®¨¤_?d 0È÷ŠJs¾ @  ®©¥_?d pÈ÷z5‰Ç @  ®ª¦_?d °È÷ZÀ‹9 @  ®«§_?d ðÈ÷ÁŠ*Ò @  ®¬¨_?d 0É÷¦: @  ®­©_?d pÉ÷á½\C @  ®®ª_?d °É÷ÁH^½ @  ®¯«_?d ðÉ÷dH† @  ®°¬_?d 0Ê÷ù &Ç @  ®±­_?d pÊ÷ sܾ @  ®²®_?d °Ê÷)†Þ@ @  ®³¯_?d ðÊ÷לG @  ®´°_?d 0Ë÷Ô‘¯ @  ®µ±_?d pË÷÷«kÖ @  ®¶²_?d °Ë÷×^i( @  ®·³_?d ðË÷ßÿs @  ®¸´_?d 0Ì÷Ʊ|| @  ®¹µ_?d pÌ÷6Ά @  ®º¶_?d °Ì÷;„û @  ®»·_?d ðÌ÷q% @  ®¼¸_?d 0Í÷]9©ø @  ®½¹_?d pÍ÷­FS @  ®¾º_?d °Í÷³Q @  ®¿»_?d ðÍ÷—²¨æ @  ®À¼_?d 0Î÷ ö' @  ®Á½_?d pÎ÷ú‰ò^ @  ®Â¾_?d °Î÷Ú|ð  @  ®Ã¿_?d ðÎ÷Ij @  ®ÄÀ_?d 0Ï÷™É“‚ @  ®ÅÁ_?d pÏ÷i¶iû @  ®ÆÂ_?d °Ï÷ICk @  ®ÇÃ_?d ðÏ÷Aâ^ @  ®ÈÄ_?d 0Ð÷ÿ<1ì @  ®ÉÅ_?d pÐ÷CË• @  ®ÊÆ_?d °Ð÷/¶Ék @  ®ËÇ_?d ðÐ÷´üh€ @  ®ÌÈ_?d 0Ñ÷d´äh @  ®ÍÉ_?d pÑ÷”Ë @  ®ÎÊ_?d °Ñ÷´>ï @  ®ÏË_?d ðÑ÷>ÄT @  ®ÐÌ_?d 0Ò÷Œzd• @  ®ÑÍ_?d pÒ÷|žì @  ®ÒÎ_?d °Ò÷\ðœ @  ®ÓÏ_?d ðÒ÷¢ê_ @  ®ÔÐ_?d 0Ó÷r¢Óý @  ®ÕÑ_?d pÓ÷‚Ý)„ @  ®ÖÒ_?d °Ó÷¢(+z @  ®×Ó_?d ðÓ÷ª‰Í! @  ®ØÔ_?d 0Ô÷³Ç>. @  ®ÙÕ_?d pÔ÷C¸ÄW @  ®ÚÖ_?d °Ô÷cMÆ© @  ®Û×_?d ðÔ÷øgB @  ®ÜØ_?d 0Õ÷(Oëª @  ®ÝÙ_?d pÕ÷Ø0Ó @  ®ÞÚ_?d °Õ÷øÅ- @  ®ßÛ_?d ðÕ÷LÃì& @  ®àÜ_?d 0Ö÷чLç @  ®áÝ_?d pÖ÷!ø¶ž @  ®âÞ_?d€ °Ö÷uΨÆ @  ¯ß_?d ðÖ÷÷"4 @  ¯à_?d 0×÷'j–Ü @  ¯á_?d p×÷\—H @  ¯â_?d °×÷2©•¶ @  ¯ã_?d ð×÷ôº,— @  ¯ä_?d 0Ø÷ÀE Š @  ¯å_?d pØ÷þˆ‰ @  ¯æ_?d °Ø÷Þ}w @  ¯ ç_?d ðØ÷€~]q @  ¯ è_?d 0Ù÷P6Ñ™ @  ¯ é_?d pÙ÷eÐ  @  ¯ ê_?d °Ù÷EõÒó @  ¯ ë_?d ðÙ÷ƒækÒ @  ¯ì_?d 0Ú÷¢Ë @  ¯í_?d pÚ÷ÎPð @  ¯î_?d °Ú÷­;R @  ¯ï_?d ðÚ÷–hjä @  ¯ð_?d 0Û÷F æ  @  ¯ñ_?d pÛ÷sç˜ @  ¯ò_?d °Û÷Sãåf @  ¯ó_?d ðÛ÷•ð\G @  ¯ô_?d 0Ü÷Œ¾¯H @  ¯õ_?d pÜ÷²s K @  ¯ö_?d °Ü÷’†µ @  ¯÷_?d ðÜ÷Ì…R³ @  ¯ø_?d 0Ý÷ÍÞ[ @  ¯ù_?d pÝ÷)ûßÏ @  ¯ú_?d °Ý÷ Ý1 @  ¯û_?d ðÝ÷Ïd @  ¯ü_?d 0Þ÷RYÄÑ @  ¯ý_?d pÞ÷Ð3x‚ @  ¯ þ_?d °Þ÷ðÆz| @  ¯!ÿ_?d ðÞ÷ufø @  ¯"`?d 0ß÷¥.Š @  ¯#`?d pß÷‹„ @  ¯$`?d uÐà÷/°ß÷°í‰z @  ¯%`?d ðß÷vþ0[ @  ¯&`?d Hà÷oZn­ @  ¯'`?d ˆà÷óóÞŽ @  ¯(`?d Èà÷qbÉP @  ¯)`?d á÷}¸` @  ¯*`?d Há÷ÿ)¾ @  ¯+ `?d ˆá÷h{  @  ¯, `?d Èá÷êêÔ @  ¯- `?d â÷3,ê @  ¯. `?d Hâ÷±½4 @  ¯/ `?d ˆâ÷€µ‹÷ @  ¯0`?d Èâ÷$œ) @  ¯1`?d ã÷k®?õ @  ¯2`?d Hã÷é?(+ @  ¯3`?d ˆã÷~m<Ÿ @  ¯4`?d Èã÷üü+A @  ¯5`?d ä÷¡0v± @  ¯6`?d Hä÷#¡ao @  ¯7`?d ˆä÷¿ÑL @  ¯8`?d Èä÷=™Æ’ @  ¯9`?d å÷1C¢ @  ¯:`?d Hå÷³Ò| @  ¯;`?d ˆå÷$€È @  ¯<`?d Èå÷¦ @  ¯=`?d æ÷×( @  ¯>`?d Hæ÷ýF ö @  ¯?`?d ˆæ÷sO¥ @  ¯@`?d Èæ÷ñÞ²É @  ¯A`?d ç÷ã(É @  ¯B `?d Hç÷‡r? @  ¯C!`?d ˆç÷ +£ @  ¯D"`?d Èç÷’±<} @  ¯E#`?d è÷âÌŸ @  ¯F$`?d Hè÷`] A @  ¯G%`?d ˆè÷üô¹b @  ¯H&`?d Èè÷~e®¼ @  ¯I'`?d é÷r¿oŒ @  ¯J(`?d Hé÷ð.xR @  ¯K)`?d ˆé÷g|læ @  ¯L*`?d Èé÷åí{8 @  ¯M+`?d ê÷<+u @  ¯N,`?d Hê÷¾ºbØ @  ¯O-`?d ˆê÷²ì @  ¯P.`?d Èê÷ #ûÅ @  ¯Q/`?d ë÷d©X @  ¯R0`?d Hë÷æ8OÇ @  ¯S1`?d ˆë÷qj[s @  ¯T2`?d Èë÷óûL­ @  ¯U3`?d ì÷®7] @  ¯V4`?d Hì÷,¦ƒ @  ¯W5`?d ˆì÷°¶  @  ¯X6`?d Èì÷2ž¡~ @  ¯Y7`?d í÷>D`N @  ¯Z8`?d Hí÷¼Õw @  ¯[9`?d ˆí÷+‡c$ @  ¯\:`?d Èí÷©tú @  ¯];`?d î÷pÐzÄ @  ¯^<`?d Hî÷òAm @  ¯_=`?d ˆî÷ÒOÄi @  ¯`>`?d Èî÷PÞÓ· @  ¯a?`?d ï÷T³\¦ @  ¯b@`?d Hï÷Ö"Kx @  ¯cA`?d ˆï÷Ap_Ì @  ¯dB`?d Èï÷ÃáH @  ¯eC`?d ð÷9½Z_ @  ¯fD`?d Hð÷»,M @  ¯gE`?d ˆð÷'…ý¢ @  ¯hF`?d Èð÷¥ê| @  ¯iG`?d ñ÷©Î+L @  ¯jH`?d Hñ÷+_<’ @  ¯kI`?d ˆñ÷¼ (& @  ¯lJ`?d Èñ÷>œ?ø @  ¯mK`?d ò÷çZ1Æ @  ¯nL`?d Hò÷eË& @  ¯oM`?d ˆò÷TèÛ @  ¯pN`?d Èò÷ÖR¿ @  ¯qO`?d ó÷¿ØÙ @  ¯rP`?d Hó÷=I  @  ¯sQ`?d ˆó÷ª³ @  ¯tR`?d Èó÷(Šm @  ¯uS`?d ô÷uFU @  ¯vT`?d Hô÷÷×BC @  ¯wU`?d ˆô÷k~ò` @  ¯xV`?d Èô÷éïå¾ @  ¯yW`?d õ÷å5$Ž @  ¯zX`?d Hõ÷g¤3P @  ¯{Y`?d ˆõ÷ðö'ä @  ¯|Z`?d Èõ÷rg0: @  ¯}[`?d ö÷«¡> @  ¯~\`?d Hö÷)0)Ú @  ¯]`?d ˆö÷Do¶  @  ¯€^`?d Èö÷Æþ¡Ô @  ¯_`?d ÷÷2Ã;Ô @  ¯‚``?d H÷÷°R,  @  ¯ƒa`?d ˆ÷÷'8¾ @  ¯„b`?d È÷÷¥‘/` @  ¯…c`?d ø÷Õì ‚ @  ¯†d`?d Hø÷W}\ @  ¯‡e`?d ˆø÷ËÔª @  ¯ˆf`?d Èø÷IE½¡ @  ¯‰g`?d ù÷EŸ|‘ @  ¯Šh`?d Hù÷ÇkO @  ¯‹i`?d ˆù÷P\û @  ¯Œj`?d Èù÷ÒÍh% @  ¯k`?d ú÷ f @  ¯Žl`?d Hú÷‰šqÅ @  ¯m`?d ˆú÷¸’ÿ @  ¯n`?d Èú÷:èØ @  ¯‘o`?d û÷S‰K @  ¯’p`?d Hû÷Ñ\Ú @  ¯“q`?d ˆû÷FJHn @  ¯”r`?d Èû÷ÄÛ_° @  ¯•s`?d ü÷™@ @  ¯–t`?d Hü÷†ž @  ¯—u`?d ˆü÷‡/¥½ @  ¯˜v`?d Èü÷¾²c @  ¯™w`?d ý÷ dsS @  ¯šx`?d Hý÷‹õd @  ¯›y`?d ˆý÷§p9 @  ¯œz`?d Èý÷ž6gç @  ¯{`?d þ÷GðiÙ @  ¯ž|`?d Hþ÷Åa~ @  ¯Ÿ}`?d ˆþ÷åo×t @  ¯ ~`?d Èþ÷gþÀª @  ¯¡`?d ÿ÷~U) @  ¯¢€`?d Hÿ÷üÄ ÷ @  ¯£`?d ˆÿ÷k–C @  ¯¤uÐø‚`?d Èÿ÷é @  ¯¥ƒ`?d øQ©± @  ¯¦„`?d `ø–À¾o @  ¯§…`?d  ø iL @  ¯¨†`?d àøˆø’ @  ¯©‡`?d ø„"Ø¢ @  ¯ªˆ`?d `ø³Ï| @  ¯«‰`?d  ø‘áÛÈ @  ¯¬Š`?d àøpÌ @  ¯­‹`?d øʶÂ( @  ¯®Œ`?d `øH'Õö @  ¯¯`?d  øy/[5 @  ¯°Ž`?d àøû¾Lë @  ¯±`?d ø’4ï7 @  ¯²`?d `ø¥øé @  ¯³‘`?d  ø‡÷ì] @  ¯´’`?d àøfûƒ @  ¯µ“`?d øXª¦s @  ¯¶”`?d `øÚ;±­ @  ¯·•`?d  øF’Ž @  ¯¸–`?d àøÄP @  ¯¹—`?d øÈÙ×` @  ¯º˜`?d `øJHÀ¾ @  ¯»™`?d  øÝÔ  @  ¯¼š`?d àø_‹ÃÔ @  ¯½›`?d ø†MÍê @  ¯¾œ`?d `øÜÚ4 @  ¯¿`?d  øŠÕuÕ @  ¯Àž`?d àøDb  @  ¯ÁŸ`?d øüyø  @  ¯Â `?d `ø~èïÕ @  ¯Ã¡`?d  øéºûa @  ¯Ä¢`?d àøk+ì¿ @  ¯Å£`?d øVÎ] @  ¯Æ¤`?d `ø™ÇÙƒ @  ¯Ç¥`?d  øni  @  ¯È¦`?d àø‡ÿ~~ @  ¯É§`?d ø‹%¿N @  ¯Ê¨`?d ` ø ´¨ @  ¯Ë©`?d   øžæ¼$ @  ¯Ìª`?d à øw«ú @  ¯Í«`?d øű¥Ä @  ¯Î¬`?d ` øG ² @  ¯Ï­`?d   øv(<Ù @  ¯Ð®`?d à øô¹+ @  ¯Ñ¯`?d ø3ˆÛ @  ¯Ò°`?d ` ø¢Ÿ @  ¯Ó±`?d   øˆð‹± @  ¯Ô²`?d à ø aœo @  ¯Õ³`?d øW­ÁŸ @  ¯Ö´`?d ` øÕ<ÖA @  ¯×µ`?d   øI•fb @  ¯Ø¶`?d à øËq¼ @  ¯Ù·`?d øÇÞ°Œ @  ¯Ú¸`?d ` øEO§R @  ¯Û¹`?d   øÒ³æ @  ¯Üº`?d à øPŒ¤8 @  ¯Ý»`?d ø‰Jª @  ¯Þ¼`?d `ø Û½Ø @  ¯ß½`?d  ø+Õ« @  ¯à¾`?d àø©Du @  ¯á¿`?d ø­)Œd @  ¯âÀ`?d€ `øDäwT @  °Á`?d  ø2÷+É @  °Â`?d àø°f< @  °Ã`?d øsÕ· @  °Ä`?d `ø âÂi @  °Å`?d  ø_ù-0 @  °Æ`?d àøÝh:î @  °Ç`?d ø¤¤ @  °È`?d `ø‘³z @  ° É`?d  øÏŠ\# @  ° Ê`?d àøMKý @  ° Ë`?d øQ”¾. @  ° Ì`?d `øÓ©ð @  ° Í`?d  øF© @  °Î`?d àøQw @  °Ï`?d ø “1 @  °Ð`?d `ø‹‡„ï @  °Ñ`?d  øÙœk¶ @  °Ò`?d àø[ |h @  °Ó`?d øÈÚu @  °Ô`?d `øAÍ« @  °Õ`?d  ø"ò @  °Ö`?d àø‘“5, @  °×`?d øSû«f @  °Ø`?d `øÑj¼¸ @  °Ù`?d  øƒqSá @  °Ú`?d àøàD? @  °Û`?d øo±ì @  °Ü`?d `øŸþ¦2 @  °Ý`?d  øÍåIk @  °Þ`?d àøOt^µ @  °ß`?d øÉ\‚Ÿ @  ° à`?d `øKÍ•A @  °!á`?d  øÖz @  °"â`?d àø›GmÆ @  °#ã`?d ø.s´É @  °$ä`?d `ø¬â£ @  °%å`?d  øþùLN @  °&æ`?d àø|h[ @  °'ç`?d ø¾ÅÚ @  °(è`?d `ø<‘Ò @  °)é`?d  ønŠ=] @  °*ê`?d àøì*ƒ @  °+ë`?d øð”ßP @  °,ì`?d `ørÈŽ @  °-í`?d  ø '× @  °.î`?d àø¢0  @  °/ï`?d ø¨òO @  °0ð`?d `ø*‡å‘ @  °1ñ`?d  øxœ È @  °2ò`?d àøú  @  °3ó`?d øbˆ»  @  °4ô`?d `øà¬Õ @  °5õ`?d  ø²CŒ @  °6ö`?d àø0“TR @  °7÷`?d øòûÊ @  °8ø`?d `øpjÝÆ @  °9ù`?d  ø"q2Ÿ @  °:ú`?d àø à%A @  °;û`?d ø¼oÐ’ @  °<ü`?d `ø>þÇL @  °=ý`?d  ølå( @  °>þ`?d àøît?Ë @  °?ÿ`?d øTªñü @  °@a?d `øÖ;æ" @  °Aa?d  ø„ {uÐ ø @  °Ba?d àø{1mÙ @  °C€a?d 8 ø‹ñæ­ @  °D€a?d x ø `ñs @  °E€a?d ¸ ø[{* @  °F€a?d ø øÙê ô @  °G€a?d 8!ø‚—¾ @  °H€a?d x!ø™€` @  °I€ a?d ¸!øËo9 @  °J€ a?d ø!øI™xç @  °K€ a?d 8"øU4 @  °L€ a?d x"øׇšê @  °M€ a?d ¸"ø…œu³ @  °N€a?d ø"ø bm @  °O€a?d 8#ø ” + @  °P€a?d x#ø·õ @  °Q€a?d ¸#øÝX¬ @  °R€a?d ø#ø_Or @  °S€a?d 8$øÇ éo @  °T€a?d x$øE›þ± @  °U€a?d ¸$ø€è @  °V€a?d ø$ø•6 @  °W€a?d 8%øWy˜| @  °X€a?d x%øÕè¢ @  °Y€a?d ¸%ø‡ó`û @  °Z€a?d ø%øbw% @  °[€a?d 8&øí‚ö @  °\€a?d x&ø›|•( @  °]€a?d ¸&øÉgzq @  °^€a?d ø&øKöm¯ @  °_€a?d 8'øÍÞ±… @  °`€ a?d x'øOO¦[ @  °a€!a?d ¸'øTI @  °b€"a?d ø'øŸÅ^Ü @  °c€#a?d 8(ø*ñ‡Ó @  °d€$a?d x(ø¨`  @  °e€%a?d ¸(øú{T @  °f€&a?d ø(øxêhŠ @  °g€'a?d 8)øº‚öÀ @  °h€(a?d x)ø8á @  °i€)a?d ¸)øjG @  °j€*a?d ø)øè™™ @  °k€+a?d 8*øôìJ @  °l€,a?d x*øv‡û” @  °m€-a?d ¸*ø$œÍ @  °n€.a?d ø*ø¦  @  °o€/a?d 8+ø¬”ÁU @  °p€0a?d x+ø.Ö‹ @  °q€1a?d ¸+ø|9Ò @  °r€2a?d ø+øþ.  @  °s€3a?d 8,øf ˆ @  °t€4a?d x,ø䛟Ï @  °u€5a?d ¸,ø¶€p– @  °v€6a?d ø,ø4gH @  °w€7a?d 8-øöyù @  °x€8a?d x-øtèîÜ @  °y€9a?d ¸-ø&ó… @  °z€:a?d ø-ø¤b[ @  °{€;a?d 8.ø¸í㈠@  °|€a?d ø.øêö Ñ @  °€?a?d 8/øÑßóI @  °€€@a?d x/øSNä— @  °€Aa?d ¸/øU Î @  °‚€Ba?d ø/øƒÄ @  °ƒ€Ca?d 80ø¼Ñõ° @  °„€Da?d x0ø>@ân @  °…€Ea?d ¸0øl[ 7 @  °†€Fa?d ø0øîÊé @  °‡€Ga?d 81ø,¢„£ @  °ˆ€Ha?d x1ø®3“} @  °‰€Ia?d ¸1øü(|$ @  °Š€Ja?d ø1ø~¹kú @  °‹€Ka?d 82øb6ž) @  °Œ€La?d x2ø৉÷ @  °€Ma?d ¸2ø²¼f® @  °Ž€Na?d ø2ø0-qp @  °€Oa?d 83ø:´³6 @  °€Pa?d x3ø¸%¤è @  °‘€Qa?d ¸3øê>K± @  °’€Ra?d ø3øh¯\o @  °“€Sa?d 84øð*úr @  °”€Ta?d x4ør»í¬ @  °•€Ua?d ¸4ø  õ @  °–€Va?d ø4ø¢1+ @  °—€Wa?d 85ø`Y‹a @  °˜€Xa?d x5øâÈœ¿ @  °™€Ya?d ¸5ø°Ósæ @  °š€Za?d ø5ø2Bd8 @  °›€[a?d 86ø.Í‘ë @  °œ€\a?d x6ø¬\†5 @  °€]a?d ¸6øþGil @  °ž€^a?d ø6ø|Ö~² @  °Ÿ€_a?d 87øúþ¢˜ @  ° €`a?d x7øxoµF @  °¡€aa?d ¸7ø*tZ @  °¢€ba?d ø7ø¨åMÁ @  °£€ca?d 88øÑ”Î @  °¤€da?d x8øŸ@ƒ @  °¥€ea?d ¸8øÍ[lI @  °¦€fa?d ø8øOÊ{— @  °§€ga?d 89ø¢åÝ @  °¨€ha?d x9ø3ò @  °©€ia?d ¸9ø](Z @  °ª€ja?d ø9øß¹ „ @  °«€ka?d 8:øÃ6ÿW @  °¬€la?d x:øA§è‰ @  °­€ma?d ¸:ø¼Ð @  °®€na?d ø:ø‘- @  °¯€oa?d 8;ø›´ÒH @  °°€pa?d x;ø%Å– @  °±€qa?d ¸;øK>*Ï @  °²€ra?d ø;øɯ= @  °³€sa?d 8<øQ*›  @  °´€ta?d x<øÓ»ŒÒ @  °µ€ua?d ¸<ø c‹ @  °¶€va?d ø<ø1tU @  °·€wa?d 8=øÁYê @  °¸€xa?d x=øCÈýÁ @  °¹€ya?d ¸=øÓ˜ @  °º€za?d ø=ø“BF @  °»€{a?d 8>øÍð• @  °¼€|a?d x>ø \çK @  °½€}a?d ¸>ø_G @  °¾€~a?d ø>øÝÖÌ @  °¿€a?d 8?øo„÷ @  °À€€a?d x?øšþ“) @  °Á€a?duÐ@ø7 ¸?øÈå|p @  °€‚a?d ø?ø7ôÒ @  °Ãƒa?d P@øu“÷ü @  °Ä„a?d @øUfõ @  °Å…a?d Ð@ø¥{ @  °Æ†a?d AøuQƒ“ @  °Ç‡a?d PAøåà†ï @  °Èˆa?d AøÅ„ @  °É‰a?d ÐAø5j~h @  °ÊŠa?d Bø¨.Þ© @  °Ë‹a?d PBø«tœe @  °ÌŒa?d Bø‹ž› @  °Ía?d ÐBø{þdâ @  °ÎŽa?d Cø«¶è  @  °Ïa?d PCøóö±z @  °Ða?d CøÓ³„ @  °Ñ‘a?d ÐCø#|Iý @  °Ò’a?d Dø:2ºò @  °Ó“a?d PDø9hø> @  °Ô”a?d DøúÀ @  °Õ•a?d ÐDøéâ¹ @  °Ö–a?d Eø9ªŒQ @  °×—a?d PEø©‰- @  °Ø˜a?d Eø‰î‹Ó @  °Ù™a?d ÐEøy‘qª @  °Úša?d FøäÕÑk @  °Û›a?d PFøç“§ @  °Üœa?d FøÇz‘Y @  °Ýa?d ÐFø7k  @  °Þža?d GøçMçÈ @  °ßŸa?d PGø3¼ Ô @  °à a?d GøI¢* @  °á¡a?d ÐGøã6XS @  °â¢a?d€ Hø£ Èè @  ±£a?d PHøA  @  ±¤a?d HøaäÀó @  ±¥a?d ÐHøTÒÁg @  ±¦a?d Iø„šM @  ±§a?d PIøÚ™‰ @  ±¨a?d Iøúlw @  ±©a?d ÐIøÄ¡°t @  ±ªa?d JøYåµ @  ± «a?d PJøŸö©” @  ± ¬a?d Jø¿«j @  ± ­a?d ÐJøŠ5ªþ @  ± ®a?d KøZ}& @  ± ¯a?d PKøa.ü @  ±°a?d KøAÛ @  ±±a?d ÐKøÒ·‡á @  ±²a?d LøËùtî @  ±³a?d PLø êÍÏ @  ±´a?d Lø-Ï1 @  ±µa?d ÐLø)Î¥ @  ±¶a?d MøÈaBM @  ±·a?d PMø–bK @  ±¸a?d Mø¶—µ @  ±¹a?d ÐMøˆZ¿¶ @  ±ºa?d Nøw @  ±»a?d PNøÓ ¦V @  ±¼a?d Nø󸤍 @  ±½a?d ÐNøÆÎ¥< @  ±¾a?d Oø†)Ô @  ±¿a?d POø@2=ó @  ±Àa?d Oø`Ç?  @  ±Áa?d ÐOøâ­ƒ^ @  ± Âa?d Pø\s?ì @  ±!Ãa?d PPøš`†Í @  ±"Äa?d Pøº•„3 @  ±#Åa?d ÐPø£…§ @  ±$Æa?d Qø_ë O @  ±%Ça?d PQøèSI @  ±&Èa?d Qø!Q· @  ±'Éa?d ÐQøÐô´ @  ±(Êa?d Rø‚”Tu @  ±)Ëa?d PRøD‡íT @  ±*Ìa?d Rødrïª @  ±+Ía?d ÐRøQDî> @  ±,Îa?d Sø bÖ @  ±-Ïa?d PSøº_Z< @  ±.Ða?d SøšªX @  ±/Ña?d ÐSø ÆÃ! @  ±0Òa?d Tøˆ0. @  ±1Óa?d PTøÖ›‰ @  ±2Ôa?d Tøön‹ñ @  ±3Õa?d ÐTøÃXŠe @  ±4Öa?d Uø @  ±5×a?d PUøM\‹ @  ±6Øa?d Uømæ^u @  ±7Ùa?d ÐUøS+ûv @  ±8Úa?d VøÎo[· @  ±9Ûa?d PVø|â– @  ±:Üa?d Vø(‰àh @  ±;Ýa?d ÐVø¿áü @  ±<Þa?d WøÍ÷m @  ±=ßa?d PWøkl" @  ±>àa?d WøKænÜ @  ±?áa?d ÐWøg‹Ô @  ±@âa?d XøStX @  ±Aãa?d PXø•gá! @  ±Bäa?d Xøµ’ãß @  ±Cåa?d ÐXø€¤âK @  ±Dæa?d YøPìn£ @  ±Eça?d PYøï4¥ @  ±Fèa?d Yø.6[ @  ±Géa?d ÐYøדX @  ±Hêa?d Zø“3™ @  ±Iëa?d PZøK€Š¸ @  ±Jìa?d ZøkuˆF @  ±Kía?d ÐZø^C‰Ò @  ±Lîa?d [øŽ : @  ±Mïa?d P[øµX=Ð @  ±Nða?d [ø•­?. @  ±Oña?d Ð[øÁ¤Í @  ±Pòa?d \øW @  ±Qóa?d P\øÙœîã @  ±Rôa?d \øùiì @  ±Sõa?d Ð\øÌ_í‰ @  ±Töa?d ]øaa @  ±U÷a?d P]øB;g @  ±Vøa?d ]øbá9™ @  ±Wùa?d Ð]ø\,œš @  ±Xúa?d ^øÁh<[ @  ±Yûa?d P^ø{…z @  ±Züa?d ^ø'އ„ @  ±[ýa?d Ð^ø¸† @  ±\þa?d _øÂð ø @  ±]ÿa?d P_øDÇ*d @  ±^b?d _ød2(š @  ±uÐ`ø_b?d Ð_øæX”É @  ±`b?d (`øX !Q @  ±ab?d h`øž³˜p @  ±bb?d ¨`ø¾FšŽ @  ±cb?d è`ø‹p› @  ±db?d (aø[8ò @  ±eb?d haø;Mô @  ±fb?d ¨aø%ÎO  @  ±g b?d èaøê  @  ±h b?d (bø†GJÈ @  ±i b?d hbø@Tóé @  ±j b?d ¨bø`¡ñ @  ±k b?d èbøU—ðƒ @  ±lb?d (cø…ß|k @  ±mb?d hcø¾ŒD @  ±nb?d ¨cøžyF @  ±ob?d ècø Ýœ @  ±pb?d (dø[.“ @  ±qb?d hdøÒH—² @  ±rb?d ¨døò½•L @  ±sb?d èdøÇ‹”Ø @  ±tb?d (eøÃ0 @  ±ub?d heøIÀB6 @  ±vb?d ¨eøi5@È @  ±wb?d èeøWøåË @  ±xb?d (føʼE  @  ±yb?d hfø ¯ü+ @  ±zb?d ¨fø,ZþÕ @  ±{b?d èfølÿA @  ±|b?d (gøÉ$s© @  ±}b?d hgøoÀrŸ @  ±~ b?d ¨gøO5pa @  ±!b?d ègø€ú‘ @  ±€"b?d (hø´ñvŒ @  ±#b?d hhørâÏ­ @  ±‚$b?d ¨høRÍS @  ±ƒ%b?d èhøg!ÌÇ @  ±„&b?d (iø·i@/ @  ±…'b?d hiøéj) @  ±†(b?d ¨iøÉŸ× @  ±‡)b?d èiø÷R½Ô @  ±ˆ*b?d (jøj @  ±‰+b?d hjø¬¤4 @  ±Š,b?d ¨jøŒð¦Ê @  ±‹-b?d èjø¹Æ§^ @  ±Œ.b?d (køiŽ+¶ @  ±/b?d hkøRÝ\ @  ±Ž0b?d ¨kør(¢ @  ±1b?d èkøáDŠA @  ±2b?d (løø yN @  ±‘3b?d hlø>Ào @  ±’4b?d ¨løì‘ @  ±“5b?d èlø+Úà @  ±”6b?d (møû’Oí @  ±•7b?d hmø¥‘ë @  ±–8b?d ¨mø…d @  ±—9b?d èmø»©² @  ±˜:b?d (nø&í× @  ±™;b?d hnøàþ«ö @  ±šb?d (oø%u$t @  ±?b?d hoøsÁ0S @  ±ž@b?d ¨oøS42­ @  ±ŸAb?d èoøÑ^Žþ @  ± Bb?d (pøo€2L @  ±¡Cb?d hpø©“‹m @  ±¢Db?d ¨pø‰f‰“ @  ±£Eb?d èpø¼Pˆ @  ±¤Fb?d (qølï @  ±¥Gb?d hqø2^é @  ±¦Hb?d ¨qøî\ @  ±§Ib?d èqø,#ù @  ±¨Jb?d (rø±gYÕ @  ±©Kb?d hrøwtàô @  ±ªLb?d ¨røWâ  @  ±«Mb?d èrøb·ãž @  ±¬Nb?d (sø²ÿov @  ±­Ob?d hsø‰¬Wœ @  ±®Pb?d ¨sø©YUb @  ±¯Qb?d èsø:5Î @  ±°Rb?d (tø#{=Ž @  ±±Sb?d htøåh„¯ @  ±²Tb?d ¨tøņQ @  ±³Ub?d ètøð«‡Å @  ±´Vb?d (uø ã - @  ±µWb?d huø~àQ+ @  ±¶Xb?d ¨uø^SÕ @  ±·Yb?d èuø`ØöÖ @  ±¸Zb?d (vøýœV @  ±¹[b?d hvø;ï6 @  ±º\b?d ¨vøzíÈ @  ±»]b?d èvø.Lì\ @  ±¼^b?d (wøþ`´ @  ±½_b?d hwøXàa‚ @  ±¾`b?d ¨wøxc| @  ±¿ab?d èwøTxÙ½ @  ±Àbb?d (xø`‡U  @  ±Ácb?d hxø¦”ì @  ±Âdb?d ¨xø†aî @  ±Ãeb?d èxø³Wïë @  ±Äfb?d (yøcc @  ±Ågb?d hyø=9 @  ±Æhb?d ¨yøé;û @  ±Çib?d èyø#$žø @  ±Èjb?d (zø¾`>9 @  ±Ékb?d hzøxs‡ @  ±Êlb?d ¨zøX†…æ @  ±Ëmb?d èzøm°„r @  ±Ìnb?d ({ø½øš @  ±Íob?d h{ø†«0p @  ±Îpb?d ¨{ø¦^2Ž @  ±Ïqb?d è{ø52©m @  ±Ðrb?d (|ø,|Zb @  ±Ñsb?d h|øêoãC @  ±Òtb?d ¨|øÊšá½ @  ±Óub?d è|øÿ¬à) @  ±Ôvb?d (}ø/älÁ @  ±Õwb?d h}øqç6Ç @  ±Öxb?d ¨}øQ49 @  ±×yb?d è}øoß‘: @  ±Øzb?d (~øò›1û @  ±Ù{b?d h~ø4ˆˆÚ @  ±Ú|b?d ¨~ø}Š$ @  ±Û}b?d è~ø!K‹° @  ±Ü~b?d (øñX @  ±Ýb?d høºqGí @  ±Þ€b?d ¨øuЀø'š„E @  ±ßb?d èøenŠ< @  ±à€‚b?d @€ø ÐhH @  ±á€ƒb?d €€øo§ÄI @  ±â€„b?d€ À€ø,q$— @  ²€…b?d øªßö @  ²€†b?d @ø(Ná @  ²€‡b?d €ø`U  @  ²€ˆb?d Àø“ñB× @  ²€‰b?d ‚ø|[± @  ²€Šb?d @‚øþÊo @  ²€‹b?d €‚øTë @  ²€Œb?d À‚øÖžüÊ @  ² €b?d ƒøt8… @  ² €Žb?d @ƒøö©Š[ @  ² €b?d €ƒøª×\| @  ² €b?d Àƒø(FK¢ @  ² €‘b?d „øCæU  @  ²€’b?d @„øÁwBÔ @  ²€“b?d €„øÆO @  ²€”b?d À„øD‚˜‘ @  ²€•b?d …øæ$ùÞ @  ²€–b?d @…ødµî @  ²€—b?d €…ø]›ZË @  ²€˜b?d À…øß M @  ²€™b?d †ø0 s @  ²€šb?d @†ø²1­ @  ²€›b?d €†øôäÖ @  ²€œb?d À†øšeó @  ²€b?d ‡ø8Ã’G @  ²€žb?d @‡øºR…™ @  ²€Ÿb?d €‡ø{›jb @  ²€ b?d À‡øù }¼ @  ²€¡b?d ˆø¿ @  ²€¢b?d @ˆø=Š Ø @  ²€£b?d €ˆø+èáó @  ² €¤b?d Àˆø©yö- @  ²!€¥b?d ‰ø ß—b @  ²"€¦b?d @‰ø‰N€¼ @  ²#€§b?d €‰ø°`4w @  ²$€¨b?d À‰ø2ñ#© @  ²%€©b?d ŠøÝ[nÏ @  ²&€ªb?d @Šø_Êy @  ²'€«b?d €ŠøõŠj @  ²(€¬b?d ÀŠøwž´ @  ²)€­b?d ‹øÕ8üû @  ²*€®b?d @‹øW©ë% @  ²+€¯b?d €‹ø ×= @  ²,€°b?d À‹ø‰F*Ü @  ²-€±b?d Œøâæ4t @  ².€²b?d @Œø`w#ª @  ²/€³b?d €Œøgî1 @  ²0€´b?d ÀŒøå‚ùï @  ²1€µb?d øG$˜  @  ²2€¶b?d @øŵ~ @  ²3€·b?d €øü›;µ @  ²4€¸b?d Àø~ ,k @  ²5€¹b?d Žø‘ a  @  ²6€ºb?d @Žø1vÓ @  ²7€»b?d €Žø¹ô…¨ @  ²8€¼b?d ÀŽø;e’v @  ²9€½b?d ø™Ãó9 @  ²:€¾b?d @øRäç @  ²;€¿b?d €ø*Ë  @  ²<€Àb?d Àø¨Z Ó @  ²=€Áb?d ødjXÆ @  ²>€Âb?d @øæûO @  ²?€Ãb?d €ø^ž£¡ @  ²@€Äb?d ÀøÜ´ @  ²A€Åb?d ‘ø~©Õ0 @  ²B€Æb?d @‘øü8Âî @  ²C€Çb?d €‘øÅv% @  ²D€Èb?d À‘øG‡aû @  ²E€Éb?d ’ø¨-, @  ²F€Êb?d @’ø*¼;C @  ²G€Ëb?d €’ø€yÈ8 @  ²H€Ìb?d À’øèßæ @  ²I€Íb?d “ø N¾© @  ²J€Îb?d @“ø"ß©w @  ²K€Ïb?d €“ø~¡P @  ²L€Ðb?d À“øü0hŽ @  ²M€Ñb?d ”ø—v& @  ²N€Òb?d @”øaø @  ²O€Ób?d €”øe¬c @  ²P€Ôb?d À”øô»½ @  ²Q€Õb?d •ø2RÚò @  ²R€Öb?d @•ø°ÃÍ, @  ²S€×b?d €•ø‰íyç @  ²T€Øb?d À•ø |n9 @  ²U€Ùb?d –øäÖ#_ @  ²V€Úb?d @–øfG4 @  ²W€Ûb?d €–øÌ‚Çú @  ²X€Üb?d À–øNÐ$ @  ²Y€Ýb?d —øìµ±k @  ²Z€Þb?d @—øn$¦µ @  ²[€ßb?d €—ø¯íIN @  ²\€àb?d À—ø-|^ @  ²]€áb?d ˜økm?* @  ²^€âb?d @˜øéü(ô @  ²_€ãb?d €˜øÿžÂß @  ²`€äb?d À˜ø}Õ @  ²a€åb?d ™øß©´N @  ²b€æb?d @™ø]8£ @  ²c€çb?d €™ød[ @  ²d€èb?d À™ø懅 @  ²e€éb?d šø -Mã @  ²f€êb?d @šø‹¼Z= @  ²g€ëb?d €šø!y©F @  ²h€ìb?d Àšø£è¾˜ @  ²i€íb?d ›øNß× @  ²j€îb?d @›øƒßÈ  @  ²k€ïb?d €›øß¡. @  ²l€ðb?d À›ø]0 ð @  ²m€ñb?d œø6X @  ²n€òb?d @œø´† @  ²o€ób?d €œø³eÍ @  ²p€ôb?d Àœø1ôÚà @  ²q€õb?d ø“R»Œ @  ²r€öb?d @øìR @  ²s€÷b?d €ø(í™ @  ²t€øb?d Àøª|G @  ²u€ùb?d žøEÖB! @  ²v€úb?d @žøÇGUÿ @  ²w€ûb?d €žøm‚¦„ @  ²x€üb?d Àžøï±Z @  ²y€ýb?d ŸøMµÐ @  ²z€þb?d @ŸøÏ$ÇË @  ²{€ÿb?d €Ÿøœ<¿ @  ²|€cuРø?d ÀŸø+a @  ²}€c?d  ø`èkÜ @  ²~c?d X øây| @  ²c?d ˜ ø¹J Š @  ²€c?d Ø ø;Û·T @  ²c?d ¡ø™}Ö @  ²‚c?d X¡øìÁÅ @  ²ƒc?d ˜¡ø"Âu @  ²„c?d Ø¡ø SbÐ @  ²… c?d ¢øOù/¶ @  ²† c?d X¢øÍh8h @  ²‡ c?d ˜¢øg­Ë @  ²ˆ c?d Ø¢øå<ÜÍ @  ²‰ c?d £øG𽂠@  ²Šc?d X£øüÌv‰ @  ²‹ c?d ˜£ø ² ® @  ²Œ c?d Ø£ø"#·p @  ² c?d ¤øIƒ©Ø @  ²Ž c?d X¤øË¾ @  ² c?d ˜¤øÌvs @  ² c?d ؤøNçdC @  ²‘ c?d ¥øìA  @  ²’ c?d X¥ønÐÒ @  ²“ c?d ˜¥øWþ¦ @  ²” c?d Ø¥øÕo±Ç @  ²• c?d ¦ø:Åü¡ @  ²– c?d X¦ø¸Të @  ²— c?d ˜¦ø‘ @  ²˜ c?d ئøÚ @  ²™ c?d §ø2¦n• @  ²š c?d X§ø°7yK @  ²› c?d ˜§øqþ–° @  ²œ  c?d اøóon @  ² !c?d ¨øµ~àÔ @  ²ž "c?d X¨ø7ï÷  @  ²Ÿ #c?d ˜¨ø!! @  ²  $c?d بø£ ÿ @  ²¡ %c?d ©øºk° @  ²¢ &c?d X©øƒ+|n @  ²£ 'c?d ˜©øºÈ¥ @  ²¤ (c?d Ø©ø8”ß{ @  ²¥ )c?d ªø×>’ @  ²¦ *c?d XªøU¯…à @  ²§ +c?d ˜ªøÿjv¸ @  ²¨ ,c?d تø}ûaf @  ²© -c?d «øß]) @  ²ª .c?d X«ø]Ì÷ @  ²« /c?d ˜«ø²ÁÐ @  ²¬ 0c?d Ø«øƒ#Ö @  ²­ 1c?d ¬øèƒÈ¦ @  ²® 2c?d X¬øjßx @  ²¯ 3c?d ˜¬ømvã @  ²° 4c?d جøïç= @  ²± 5c?d ­øMAdr @  ²² 6c?d X­øÏÐs¬ @  ²³ 7c?d ˜­øöþÇg @  ²´ 8c?d Ø­øtoй @  ²µ 9c?d ®ø›Åß @  ²¶ :c?d X®øTŠ @  ²· ;c?d ˜®ø³‘yz @  ²¸ c?d X¯ø75 @  ²» ?c?d ˜¯ø ®âß @  ²¼ @c?d دø¢?õ @  ²½ Ac?d °øn¤ @  ²¾ Bc?d X°øìž³Ê @  ²¿ Cc?d ˜°øTû_s @  ²À Dc?d ذøÖjH­ @  ²Á Ec?d ±øtÌ)â @  ² Fc?d X±øö]>< @  ²à Gc?d ˜±øÏsŠ÷ @  ²Ä Hc?d رøMâ) @  ²Å Ic?d ²ø¢HÐO @  ²Æ Jc?d X²ø ÙÇ‘ @  ²Ç Kc?d ˜²øŠ4ê @  ²È Lc?d زø#4 @  ²É Mc?d ³øª+B{ @  ²Ê Nc?d X³ø(ºU¥ @  ²Ë Oc?d ˜³øtă‚ @  ²Ì Pc?d سøöU”\ @  ²Í Qc?d ´øõŠô @  ²Î Rc?d X´ød* @  ²Ï Sc?d ˜´øP± @  ²Ð Tc?d Ø´øš‘Go @  ²Ñ Uc?d µø87&  @  ²Ò Vc?d Xµøº¦1þ @  ²Ó Wc?d ˜µøƒˆ…5 @  ²Ô Xc?d صø’ë @  ²Õ Yc?d ¶øî³ß @  ²Ö Zc?d X¶øl"ÈS @  ²× [c?d ˜¶øÆç;( @  ²Ø \c?d ضøDv,ö @  ²Ù ]c?d ·øæÐM¹ @  ²Ú ^c?d X·ødAZg @  ²Û _c?d ˜·ø¥ˆµœ @  ²Ü `c?d Ø·ø'¢B @  ²Ý ac?d ¸øaÃø @  ²Þ bc?d X¸øã™Ô& @  ²ß cc?d ˜¸øõû>  @  ²à dc?d ظøwj)Ó @  ²á ec?d ¹øÕÌHœ @  ²â fc?d€ X¹ø#žCä @  ³ gc?d ˜¹øûñ¿ @  ³ hc?d عøy`¨Ø @  ³ ic?d ºøSƒS @  ³ jc?d XºøÑ  @  ³ kc?d ˜ºøµe¥Œ @  ³ lc?d غø7ô²R @  ³ mc?d »ø[àŒg @  ³ nc?d X»øÙq›¹ @  ³ oc?d ˜»ø@F¶s @  ³ pc?d Ø»øÂס­ @  ³ qc?d ¼øl>Dè @  ³ rc?d X¼øî¯S6 @  ³ sc?d ˜¼øŠØÿ7 @  ³ tc?d ؼøIèé @  ³ uc?d ½øÉüè< @  ³ vc?d X½øKmÿâ @  ³ wc?d ˜½ø· °Ä @  ³ xc?d ؽø5›§ @  ³ yc?d ¾øx‘ @  ³ zc?d X¾øéO @  ³ {c?d ˜¾øùžªN @  ³ |c?d ؾø{½ @  ³ }c?d ¿øƒ¥ @  ³ ~c?d X¿ø•Š”{ @  ³ c?d ˜¿ø|œÁî @uÐÀø  ³ €c?d Ø¿øþ Ö0 @  ³ c?d 0Àø-Z‘( @  ³ ‚c?d pÀø¯Ë†ö @  ³ ƒc?d °Àø˼*÷ @  ³ „c?d ðÀøI-=) @  ³ …c?d 0Áø™žL @  ³ †c?d pÁø ’ @  ³! ‡c?d °ÁøçhB´ @  ³" ˆc?d ðÁøeùUj @  ³# ‰c?d 0ÂøOãá @  ³$ Šc?d pÂøÍ‹ô? @  ³% ‹c?d °Âø©üX> @  ³& Œc?d ðÂø+mOà @  ³' c?d 0ÃøGyqÕ @  ³( Žc?d pÃøÅèf  @  ³) c?d °Ãø\ßKÁ @  ³* c?d ðÃøÞN\ @  ³+ ‘c?d 0Äøp§¹Z @  ³, ’c?d pÄøò6®„ @  ³- “c?d °Äø–A… @  ³. ”c?d ðÄøÐ[ @  ³/ •c?d 0ÅøÕeŽ @  ³0 –c?d pÅøWôP @  ³1 —c?d °Åø«“Mv @  ³2 ˜c?d ðÅø)Z¨ @  ³3 ™c?d 0Æøáì# @  ³4 šc?d pÆøpûý @  ³5 ›c?d °ÆøåWü @  ³6 œc?d ðÆøg–@" @  ³7 c?d 0Çø ‚~ @  ³8 žc?d pÇø‰iÉ @  ³9 Ÿc?d °Çø“}ß @  ³:  c?d ðÇøj @  ³; ¡c?d 0ÈøŒZðV @  ³< ¢c?d pÈøËçˆ @  ³= £c?d °Èøj¼K‰ @  ³> ¤c?d ðÈøè-\W @  ³? ¥c?d 0Éø–™}  @  ³@ ¦c?d pÉøj~ @  ³A §c?d °Éøèo%X @  ³B ¨c?d ðÉøjþ2† @  ³C ©c?d 0Êø@„  @  ³D ªc?d pÊøÂŒ“Ó @  ³E «c?d °Êø¦û?Ò @  ³F ¬c?d ðÊø$j(  @  ³G ­c?d 0ËøH~9 @  ³H ®c?d pËøÊïç @  ³I ¯c?d °ËøSØ,- @  ³J °c?d ðËøÑI;ó @  ³K ±c?d 0Ìø Þ¶ @  ³L ²c?d pÌøý1Éh @  ³M ³c?d °Ìø™Fei @  ³N ´c?d ðÌø×r· @  ³O µc?d 0ÍøÚbrb @  ³P ¶c?d pÍøXóe¼ @  ³Q ·c?d °Íø¤”*š @  ³R ¸c?d ðÍø&=D @  ³S ¹c?d 0Îø æ‹Ï @  ³T ºc?d pÎøŽwœ @  ³U »c?d °Îøê0 @  ³V ¼c?d ðÎøh‘'Î @  ³W ½c?d 0Ïø…û @  ³X ¾c?d pÏø†% @  ³Y ¿c?d °ÏørÄ" @  ³Z Àc?d ðÏøðUü @  ³[ Ác?d 0Ðøù,² @  ³\ Âc?d pÐø{½¥Ú @  ³] Ãc?d °ÐøÊ Û @  ³^ Äc?d ðÐø[ @  ³_ Åc?d 0ÑøMè9` @  ³` Æc?d pÑøÏy.¾ @  ³a Çc?d °Ñø3a˜ @  ³b Èc?d ðÑø±vF @  ³c Éc?d 0Òø›lÀÍ @  ³d Êc?d pÒøý× @  ³e Ëc?d °Òø}Š{ @  ³f Ìc?d ðÒøÿlÌ @  ³g Íc?d 0Óø“Rù @  ³h Îc?d pÓøžE' @  ³i Ïc?d °Óøˆ©hí @  ³j Ðc?d ðÓø 83 @  ³k Ñc?d 0Ôø¤Ñšv @  ³l Òc?d pÔø&@¨ @  ³m Óc?d °ÔøB7!© @  ³n Ôc?d ðÔøÀ¦6w @  ³o Õc?d 0Õø6¢ @  ³p Öc?d pÕøƒ‚!| @  ³q ×c?d °ÕøånZ @  ³r Øc?d ðÕøýty„ @  ³s Ùc?d 0Öø×—Ï @  ³t Úc?d pÖøUØÑ @  ³u Ûc?d °Öø1qtÐ @  ³v Üc?d ðÖø³àc @  ³w Ýc?d 0×øßô]; @  ³x Þc?d p×ø]eJå @  ³y ßc?d °×øYå^ó @  ³z àc?d ð×øÛtI- @  ³{ ác?d 0ØøX,Óz @  ³| âc?d pØøڽĤ @  ³} ãc?d °Øø¾Êh¥ @  ³~ äc?d ðØø<[{ @  ³ åc?d 0Ùø¡¹n½ @  ³€ æc?d pÙø#(yc @  ³ çc?d °ÙøßO6E @  ³‚ èc?d ðÙø]Þ!› @  ³ƒ éc?d 0Úøw=— @  ³„ êc?d pÚøõ¬€Î @  ³… ëc?d °Úø‘Û,Ï @  ³† ìc?d ðÚøJ; @  ³‡ íc?d 0Ûø^$ @  ³ˆ îc?d pÛøýÏú @  ³‰ ïc?d °Ûødø?0 @  ³Š ðc?d ðÛøæi(î @  ³‹ ñc?d 0ÜøH€Í« @  ³Œ òc?d pÜøÊÚu @  ³ óc?d °Üø®fvt @  ³Ž ôc?d ðÜø,÷aª @  ³ õc?d 0ÝøíBa @  ³ öc?d pÝøoÓv¡ @  ³‘ ÷c?d °Ýø“´9‡ @  ³’ øc?d ðÝø%.Y @  ³“ ùc?d 0Þø;ƘÒ @  ³” úc?d pÞø¹W  @  ³• ûc?d °ÞøÝ #  @  ³– üc?d ðÞø_±4Ó @  ³— ýc?d 0ßø3¥ æ @  ³˜ þc?d pßø±48 @  ³™ ÿc?d uÐàø/°ßøL"7 @  ³š d?d ðßø é< @  ³›d?d Hàø¡€ @  ³œd?d ˆàø.ì£~ @  ³d?d Èàøèÿ_ @  ³žd?d áø8·–· @  ³Ÿd?d HáøºÝ*ä @  ³ d?d ˆáøš(( @  ³¡d?d ÈáøÄ+r @  ³¢d?d âøYoÒÝ @  ³£ d?d HâølYÓI @  ³¤ d?d ˆâøL¬Ñ· @  ³¥ d?d ÈâøŠ¿h– @  ³¦ d?d ãøZ÷ä~ @  ³§ d?d Hãød:A} @  ³¨d?d ˆãøDÏCƒ @  ³©d?d Èãøœ{i @  ³ªd?d äøfÒˆf @  ³«d?d HäøSä‰ò @  ³¬d?d ˆäøs‹  @  ³­d?d Èäøµ2- @  ³®d?d åøeJ¾Å @  ³¯d?d Håøö&%& @  ³°d?d ˆåøÖÓ'Ø @  ³±d?d ÈåøˆÐ}Þ @  ³²d?d æø”Ý @  ³³d?d Hæø ¢Ü‹ @  ³´d?d ˆæøWÞu @  ³µd?d ÈæøÆDgT @  ³¶d?d çø ë¼ @  ³·d?d Hçø(ÁN¿ @  ³¸d?d ˆçø4LA @  ³¹d?d Èçø®ÐMw @  ³º d?d èøš/Áj @  ³»!d?d Hèø¯Àþ @  ³¼"d?d ˆèøì @  ³½#d?d ÈèøIÿ{! @  ³¾$d?d éø™·÷É @  ³¿%d?d HéøµÚM @  ³À&d?d ˆéø•/Oö @  ³Á'd?d ÈéøË,ð @  ³Â(d?d êøVhµ1 @  ³Ã)d?d Hêøc^´¥ @  ³Ä*d?d ˆêøC«¶[ @  ³Å+d?d Èêø…¸z @  ³Æ,d?d ëøUðƒ’ @  ³Ç-d?d Hëøk=&‘ @  ³È.d?d ˆëøKÈ$o @  ³É/d?d Èëøp›… @  ³Ê0d?d ìøiÕïŠ @  ³Ë1d?d Hìø\ãî @  ³Ì2d?d ˆìø|ìà @  ³Í3d?d ÈìøºUÁ @  ³Î4d?d íøjMÙ) @  ³Ï5d?d Híøù!BÊ @  ³Ð6d?d ˆíøÙÔ@4 @  ³Ñ7d?d Èíø‡×2 @  ³Ò8d?d îø“ºó @  ³Ó9d?d Hîø/¥»g @  ³Ô:d?d ˆîøP¹™ @  ³Õ;d?d ÈîøÉC¸ @  ³Öd?d ˆïø3+­ @  ³Ù?d?d ÈïøQ‡?Š @  ³Ú@d?d ðøïYƒ8 @  ³ÛAd?d HðøÚo‚¬ @  ³ÜBd?d ˆðøúš€R @  ³ÝCd?d Èðø<‰9s @  ³ÞDd?d ñøìÁµ› @  ³ßEd?d Hñøn« È @  ³àFd?d ˆñøN^ 6 @  ³áGd?d Èñø]Q0 @  ³âHd?d€ òø OYH @  ´Id?d Hòøß8õ @  ´Jd?d ˆòøÿÍ  @  ´Kd?d Èòøü—PÇ @  ´Ld?d óø,ßÜ/ @  ´Md?d HóøÜ &V @  ´Nd?d ˆóøüU$¨ @  ´Od?d Èóø ´C8 @  ´Pd?d ôøú°7 @  ´ Qd?d Hôøà…JN @  ´ Rd?d ˆôøÀpH° @  ´ Sd?d ÈôøÃ* | @  ´ Td?d õøb†” @  ´ Ud?d Hõøã|í @  ´Vd?d ˆõøÃè~ @  ´Wd?d ÈõøþøE @  ´Xd?d öøc¼åN @  ´Yd?d Höø“Ã7 @  ´Zd?d ˆöø³6É @  ´[d?d Èöø°l_ @  ´\d?d ÷ø`$Óí @  ´]d?d H÷ø[)” @  ´^d?d ˆ÷ø°®+j @  ´_d?d È÷øØøu& @  ´`d?d øøìù; @  ´ad?d HøøxB @  ´bd?d ˆøø<¼ @  ´cd?d Èøø?×Cp @  ´dd?d ùøïŸÏ˜ @  ´ed?d Hùøà5á @  ´fd?d ˆùø?7 @  ´gd?d Èùø+3 @  ´ hd?d úøŽG‹ò @  ´!id?d Húø~8q‹ @  ´"jd?d ˆúø^Ísu @  ´#kd?d Èúø]—1¹ @  ´$ld?d ûøß½Q @  ´%md?d Hûø} G( @  ´&nd?d ˆûø]UEÖ @  ´'od?d Èûø¨´"F @  ´(pd?d üø±úÑI @  ´)qd?d HüøA…+0 @  ´*rd?d ˆüøap)Î @  ´+sd?d Èüøb*k @  ´,td?d ýø²bçê @  ´-ud?d HýøB“ @  ´.vd?d ˆýøbèm @  ´/wd?d Èýø_ø$ñ @  ´0xd?d þø¼„0 @  ´1yd?d Hþø2Ã~I @  ´2zd?d ˆþø6|· @  ´3{d?d Èþøl>{ @  ´4|d?d ÿøÁ$²“ @  ´5}d?d Hÿø1[Hê @  ´6~d?d ˆÿø®J @  ´7uÐùd?d Èÿø”nUÛ @  ´8€d?d ùÛÚ}* @  ´9d?d `ù+¥‡S @  ´:‚d?d  ù P…­ @  ´;ƒd?d àù Ça @  ´<„d?d ùØBK‰ @  ´=…d?d `ù(=±ð @  ´>†d?d  ùȳ @  ´?‡d?d àùŠÙ©° @  ´@ˆd?d ù q @  ´A‰d?d `ùçâó @  ´BŠd?d  ùÇñö @  ´C‹d?d àùÄM³: @  ´DŒd?d ù?Ò @  ´Ed?d `ùäzÅ« @  ´FŽd?d  ùÄÇU @  ´Gd?d àù1n Å @  ´Hd?d ù( SÊ @  ´I‘d?d `ùØ_©³ @  ´J’d?d  ùøª«M @  ´K“d?d àùûðé @  ´L”d?d ù+¸ei @  ´M•d?d `ùÛÇŸ @  ´N–d?d  ùû2î @  ´O—d?d àùÆ"¦r @  ´P˜d?d ù[f³ @  ´Q™d?d `ù«üÊ @  ´Ršd?d  ù‹ìþ4 @  ´S›d?d àùˆ¶¼ø @  ´Tœd?d ùXþ0 @  ´Ud?d `ù¨Êi @  ´Vžd?d  ùˆtÈ— @  ´WŸd?d àùà"–Û @  ´X d?d ùÔÝÆ @  ´Y¡d?d `ù$¢à¿ @  ´Z¢d?d  ùWâA @  ´[£d?d àù   @  ´\¤d?d ù×E,e @  ´]¥d?d ` ù':Ö @  ´^¦d?d   ùÏÔâ @  ´_§d?d à ù+ÙÈÎ @  ´`¨d?d ù¶h @  ´a©d?d ` ùFâ’v @  ´bªd?d   ùfˆ @  ´c«d?d à ùeMÒD @  ´d¬d?d ùµ^¬ @  ´e­d?d ` ùEz¤Õ @  ´f®d?d   ùe¦+ @  ´g¯d?d à ùnÁ» @  ´h°d?d ù‰ 2´ @  ´i±d?d ` ùy_ÈÍ @  ´j²d?d   ùYªÊ3 @  ´k³d?d à ùZðˆÿ @  ´l´d?d ùЏ @  ´mµd?d ` ùzÇþn @  ´n¶d?d   ùZ2ü @  ´o·d?d à ùg"Ç  @  ´p¸d?d ùúfgÍ @  ´q¹d?d `ù ´ @  ´rºd?d  ù*ìŸJ @  ´s»d?d àù)¶Ý† @  ´t¼d?d ùùþQn @  ´u½d?d `ù « @  ´v¾d?d  ù)t©é @  ´w¿d?d àù±râ´ @  ´xÀd?d ù¬^ @  ´yÁd?d `ùÿÓ¤ @  ´zÂd?d  ùß&¦ @  ´{Ãd?d àùÜ|äM @  ´|Äd?d ù 4h¥ @  ´}Åd?d `ùüK’Ü @  ´~Æd?d  ùܾ" @  ´Çd?d àù½ùº­ @  ´€Èd?d ù ½l @  ´Éd?d `ùÐÂà @  ´‚Êd?d  ùð7âë @  ´ƒËd?d àùóm ' @  ´„Ìd?d ù#%,Ï @  ´…Íd?d `ùÓZÖ¶ @  ´†Îd?d  ùó¯ÔH @  ´‡Ïd?d àùN³Ø @  ´ˆÐd?d ù@× @  ´‰Ñd?d `ùﺮ @  ´ŠÒd?d  ùÏŠ¸P @  ´‹Ód?d àùÌÐúœ @  ´ŒÔd?d ù˜vt @  ´Õd?d `ùìçŒ  @  ´ŽÖd?d  ùÌŽó @  ´×d?d àùñµo @  ´Ød?d ùlF® @  ´‘Ùd?d `ùœ9ï× @  ´’Úd?d  ù¼Ìí) @  ´“Ûd?d àù¿–¯å @  ´”Üd?d ùoÞ#  @  ´•Ýd?d `ùŸ¡Ùt @  ´–Þd?d  ù¿TÛŠ @  ´—ßd?d àù×…Æ @  ´˜àd?d ùãý Û @  ´™ád?d `ù‚ó¢ @  ´šâd?d  ù3wñ\ @  ´›ãd?d àù0-³ @  ´œäd?d ùàe?x @  ´åd?d `ùÅ @  ´žæd?d  ù0ïÇÿ @  ´Ÿçd?d àùùÛÓ @  ´ èd?d ù½{ @  ´¡éd?d `ùqÂk @  ´¢êd?d  ùQ7ƒ• @  ´£ëd?d àùRmÁY @  ´¤ìd?d ù‚%M± @  ´¥íd?d `ùrZ·È @  ´¦îd?d  ùR¯µ6 @  ´§ïd?d àù§NÒ¦ @  ´¨ðd?d ù¾!© @  ´©ñd?d `ùNÛÐ @  ´ªòd?d  ùnŠÙ. @  ´«ód?d àùmЛâ @  ´¬ôd?d ù½˜  @  ´­õd?d `ùMçís @  ´®öd?d  ùmï @  ´¯÷d?d àùPÔ @  ´°ød?d ùÍFtÐ @  ´±ùd?d `ù=9Ž© @  ´²úd?d  ùÌŒW @  ´³ûd?d àù–Λ @  ´´üd?d ùÎÞBs @  ´µýd?d `ù>¡¸  @  ´¶þd?d  ùTºôuÐ ù @  ´·ÿd?d àùÝ4,â @  ´¸ e?d 8 ù¬?ò„ @  ´¹ e?d x ù\@ý @  ´º e?d ¸ ù|µ  @  ´» e?d ø ùïHÏ @  ´¼ e?d 8!ù¯§Ä' @  ´½ e?d x!ù_Ø>^ @  ´¾ e?d ¸!ù-<  @  ´¿ e?d ø!ùý<& @  ´À e?d 8"ù`x†ß @  ´Á  e?d x"ù|¦ @  ´  e?d ¸"ù°ò~X @  ´à  e?d ø"ù³¨<” @  ´Ä  e?d 8#ùcà°| @  ´Å  e?d x#ù“ŸJ @  ´Æ e?d ¸#ù³jHû @  ´Ç e?d ø#ùF‹/k @  ´È e?d 8$ù_ÅÜd @  ´É e?d x$ù¯º& @  ´Ê e?d ¸$ùO$ã @  ´Ë e?d ø$ùŒf/ @  ´Ì e?d 8%ù\]êÇ @  ´Í e?d x%ù¬"¾ @  ´Î e?d ¸%ùŒ×@ @  ´Ï e?d ø%ù±Ç)Ü @  ´Ð e?d 8&ù,ƒ‰ @  ´Ñ e?d x&ùÜüsd @  ´Ò e?d ¸&ùü qš @  ´Ó e?d ø&ùÿS3V @  ´Ô e?d 8'ù/¿¾ @  ´Õ e?d x'ùßdEÇ @  ´Ö e?d ¸'ùÿ‘G9 @  ´× e?d ø'ù—Çu @  ´Ø  e?d 8(ù£8•h @  ´Ù !e?d x(ùSGo @  ´Ú "e?d ¸(ùs²mï @  ´Û #e?d ø(ùpè/# @  ´Ü $e?d 8)ù  £Ë @  ´Ý %e?d x)ùPßY² @  ´Þ &e?d ¸)ùp*[L @  ´ß 'e?d ø)ù\e?d ¸/ùZ‰% @  µ ?e?d ø/ùXî @  µ @e?d 80ùæ0!° @  µ Ae?d x0ùØý„³ @  µ Be?d ¸0ùø†M @  µ Ce?d ø0ù>?l @  µ De?d 81ùîS³„ @  µ Ee?d x1ùÛe² @  µ Fe?d ¸1ùû°î @  µ Ge?d ø1ù¥“êè @  µ He?d 82ù8×J) @  µ Ie?d x2ùº½öz @  µ Je?d ¸2ùšHô„ @  µ! Ke?d ø2ù\[M¥ @  µ" Le?d 83ùŒÁM @  µ# Me?d x3ù¹%ÀÙ @  µ$ Ne?d ¸3ù™ÐÂ' @  µ% Oe?d ø3ù¢ƒúÍ @  µ& Pe?d 84ù»Í  @  µ' Qe?d x4ù…¬Á @  µ( Re?d ¸4ù¥õ®? @  µ) Se?d ø4ùcæ @  µ* Te?d 85ù³®›ö @  µ+ Ue?d x5ù†˜šb @  µ, Ve?d ¸5ù¦m˜œ @  µ- We?d ø5ùønš @  µ. Xe?d 86ùe*b[ @  µ/ Ye?d x6ùöFù¸ @  µ0 Ze?d ¸6ùÖ³ûF @  µ1 [e?d ø6ù Bg @  µ2 \e?d 87ùÀèÎ @  µ3 ]e?d x7ùõÞÏ @  µ4 ^e?d ¸7ùÕ+Íå @  µ5 _e?d ø7ùsÏÌÓ @  µ6 `e?d 88ùG0@Î @  µ7 ae?d x8ùyýåÍ @  µ8 be?d ¸8ùYç3 @  µ9 ce?d ø8ùŸ^ @  µ: de?d 89ùOSÒú @  µ; ee?d x9ùzeÓn @  µ< fe?d ¸9ùZÑ @  µ= ge?d ø9ù“‹– @  µ> he?d 8:ù™×+W @  µ? ie?d x:ùµº‘– @  µ@ je?d ¸:ù•O“h @  µA ke?d ø:ùS\*I @  µB le?d 8;ùƒ¦¡ @  µC me?d x;ù¶"§5 @  µD ne?d ¸;ù–×¥Ë @  µE oe?d ø;ù­„! @  µF pe?d 8<ù´Ên. @  µG qe?d x<ùŠË- @  µH re?d ¸<ùªòÉÓ @  µI se?d ø<ùlápò @  µJ te?d 8=ù¼©ü @  µK ue?d x=ù‰ŸýŽ @  µL ve?d ¸=ù©jÿp @  µM we?d ø=ù÷i¥v @  µN xe?d 8>ùj-· @  µO ye?d x>ùùAžT @  µP ze?d ¸>ùÙ´œª @  µQ {e?d ø>ù§%‹ @  µR |e?d 8?ùÏï©c @  µS }e?d x?ùúÙ¨÷ @  µT ~e?duÐ@ù7 ¸?ùÚ,ª  @  µU e?d ø?ù¨™6i @  µV€e?d P@ùk5ŒU @  µWe?d @ù÷œ«6 @  µk•e?d Eù©ù"§ @  µl–e?d ÐEù+h5y @  µm—e?d Fùj¾Ø` @  µn˜e?d PFùè/Ͼ @  µo™e?d FùÙ'A} @  µpše?d ÐFù[¶V£ @  µq›e?d GùÏ|t´ @  µrœe?d PGùMícj @  µse?d GùÚ¿wÞ @  µtže?d ÐGùX.` @  µuŸe?d HùH¤úõ @  µv e?d PHùÊ5í+ @  µw¡e?d HùVœ] @  µx¢e?d ÐHùÔ JÖ @  µy£e?d Iù@ÇhÁ @  µz¤e?d PIùÂV @  µ{¥e?d IùUk« @  µ|¦e?d ÐIùו|u @  µ}§e?d Jù–C‘l @  µ~¨e?d PJùÒ†² @  µ©e?d Jùyb @  µ€ªe?d ÐJùû¼ @  µ«e?d KùoÖ,« @  µ‚¬e?d PKùíG;u @  µƒ­e?d Kùz/Á @  µ„®e?d ÐKùø„8 @  µ…¯e?d LùXä$ @  µ†°e?d PLùÚ™óú @  µ‡±e?d LùF0CÙ @  µˆ²e?d ÐLùÄ¡T @  µ‰³e?d MùPkv @  µŠ´e?d PMùÒúaÎ @  µ‹µe?d MùE¨uz @  µŒ¶e?d ÐMùÇ9b¤ @  µ·e?d Nù†ï½ @  µŽ¸e?d PNù~˜c @  µ¹e?d Nù5v  @  µºe?d ÐNù·ç~ @  µ‘»e?d Où#-#i @  µ’¼e?d POù¡¼4· @  µ“½e?d Où6î  @  µ”¾e?d ÐOù´7Ý @  µ•¿e?d PùÞ„ˆ– @  µ–Àe?d PPù\ŸH @  µ—Áe?d PùÀ¼/k @  µ˜Âe?d ÐPùB-8µ @  µ™Ãe?d QùÖç¢ @  µšÄe?d PQùTv | @  µ›Åe?d QùÃ$È @  µœÆe?d ÐQùAµ @  µÇe?d Rùcã @  µžÈe?d PRù‚òôÑ @  µŸÉe?d Rù¢ü]¢ @  µ Êe?d ÐRù mJ| @  µ¡Ëe?d Sù´§hk @  µ¢Ìe?d PSù66µ @  µ£Íe?d Sù¡dk @  µ¤Îe?d ÐSù#õ|ß @  µ¥Ïe?d Tùƒy ä @  µ¦Ðe?d PTùè·: @  µ§Ñe?d TùA @  µ¨Òe?d ÐTùÐÇ @  µ©Óe?d Uù‹2Ð @  µªÔe?d PUù ‹% @  µ«Õe?d UùžÙ1º @  µ¬Öe?d ÐUùH&d @  µ­×e?d Vù]žË} @  µ®Øe?d PVùßÜ£ @  µ¯Ùe?d VùîR` @  µ°Úe?d ÐVùl–E¾ @  µ±Ûe?d Wùø\g© @  µ²Üe?d PWùzÍpw @  µ³Ýe?d WùíŸdà @  µ´Þe?d ÐWùos @  µµße?d Xù„éè @  µ¶àe?d PXùýþ6 @  µ·áe?d Xùa¼N @  µ¸âe?d ÐXùã-YË @  µ¹ãe?d Yùwç{Ü @  µºäe?d PYùõvl @  µ»åe?d Yùb$x¶ @  µ¼æe?d ÐYùàµoh @  µ½çe?d Zù¡c‚q @  µ¾èe?d PZù#ò•¯ @  µ¿ée?d Zù­û:N @  µÀêe?d ÐZù/j- @  µÁëe?d [ù» ‡ @  µÂìe?d P[ù91Y @  µÃíe?d [ù®c í @  µÄîe?d Ð[ù,ò3 @  µÅïe?d \ùŒ~Ç @  µÆðe?d P\ùïÐÖ @  µÇñe?d \ù’F`õ @  µÈòe?d Ð\ù×w+ @  µÉóe?d ]ù„U< @  µÊôe?d P]ùŒBâ @  µËõe?d ]ù‘ÞVV @  µÌöe?d Ð]ùOAˆ @  µÍ÷e?d ^ùR™¬‘ @  µÎøe?d P^ùлO @  µÏùe?d ^ùá5Œ @  µÐúe?d Ð^ùc‘"R @  µÑûe?d _ù÷[E @  µÒüe?d P_ùuÊ› @  µÓýe?d _ùâ˜/ @  µuÐ`ùÔþe?d Ð_ù‰g @  µÕ€ÿe?d (`ù§×åW @  µÖ€f?d h`ù%Fò‰ @  µ×€f?d ¨`ù¹ïBª @  µØ€f?d è`ù;~Ut @  µÙ€f?d (aù¯´wc @  µÚ€f?d haù-%`½ @  µÛ€f?d ¨aùºwt  @  µÜ€f?d èaù8æc× @  µÝ€f?d (bùy0ŽÎ @  µÞ€f?d hbùû¡™ @  µ߀ f?d ¨bùÛ¯0c @  µà€ f?d èbùY>'½ @  µá€ f?d (cùÍôª @  µâ€ f?d€ hcùŽ"åt @  ¶€ f?d ¨cùø1¹é @  ¶€f?d ècùz ®7 @  ¶€f?d (dùe‰á @  ¶€f?d hdùôž? @  ¶€f?d ¨dùÏïqf @  ¶€f?d èdùM~f¸ @  ¶€f?d (eùÕ @  ¶€f?d heù•—  @  ¶ €f?d ¨eùÇŒãR @  ¶ €f?d èeùEôŒ @  ¶ €f?d (fùÁ‚âx @  ¶ €f?d hfùCõ¦ @  ¶ €f?d ¨fùÿ @  ¶€f?d èfù“™ ! @  ¶€f?d (gùd@N¬ @  ¶€f?d hgùæÑYr @  ¶€f?d ¨gù´Ê¶+ @  ¶€f?d ègù6[¡õ @  ¶€f?d (hùã˜Àí @  ¶€ f?d hhùa ×3 @  ¶€!f?d ¨hù38j @  ¶€"f?d èhù±ƒ/´ @  ¶€#f?d (iùëûRÙ @  ¶€$f?d hiùijE @  ¶€%f?d ¨iù;qª^ @  ¶€&f?d èiù¹à½€ @  ¶€'f?d (jù=«t @  ¶€(f?d hjù¿î¼ª @  ¶€)f?d ¨jùíõSó @  ¶€*f?d èjùodD- @  ¶€+f?d (kù‰»  @  ¶ €,f?d hkù *7Î @  ¶!€-f?d ¨kùY1Ø— @  ¶"€.f?d èkùÛ ÏI @  ¶#€/f?d (lù¾eèŸ @  ¶$€0f?d hlù<ôÿA @  ¶%€1f?d ¨lùnï @  ¶&€2f?d èlùì~Æ @  ¶'€3f?d (mù¶z« @  ¶(€4f?d hmù4—mu @  ¶)€5f?d ¨mùfŒ‚, @  ¶*€6f?d èmùä•ò @  ¶+€7f?d (nù`‚ƒ @  ¶,€8f?d hnùâ”Ø @  ¶-€9f?d ¨nù°{ @  ¶.€:f?d ènù2™l_ @  ¶/€;f?d (oùÅ@/Ò @  ¶0€f?d èoù—[À‹ @  ¶3€?f?d (pù8é„- @  ¶4€@f?d hpùºx“ó @  ¶5€Af?d ¨pùèc|ª @  ¶6€Bf?d èpùjòkt @  ¶7€Cf?d (qù0Š @  ¶8€Df?d hqù²Ç @  ¶9€Ef?d ¨qùàîž @  ¶:€Ff?d èqùb‘ù@ @  ¶;€Gf?d (rùæï´ @  ¶<€Hf?d hrùdŸøj @  ¶=€If?d ¨rù6„3 @  ¶>€Jf?d èrù´í @  ¶?€Kf?d (sùüÍbB @  ¶@€Lf?d hsù~\uœ @  ¶A€Mf?d ¨sù,GšÅ @  ¶B€Nf?d èsù®Ö @  ¶C€Of?d (tùËªÍ @  ¶D€Pf?d htùI‚½ @  ¶E€Qf?d ¨tù™RJ @  ¶F€Rf?d ètù™E” @  ¶G€Sf?d (uùÃp8ù @  ¶H€Tf?d huùAá/' @  ¶I€Uf?d ¨uùúÀ~ @  ¶J€Vf?d èuù‘k×  @  ¶K€Wf?d (vùôÁT @  ¶L€Xf?d hvù—eÖŠ @  ¶M€Yf?d ¨vùÅ~9Ó @  ¶N€Zf?d èvùGï.  @  ¶O€[f?d (wù°6m€ @  ¶P€\f?d hwù2§z^ @  ¶Q€]f?d ¨wù`¼• @  ¶R€^f?d èwùâ-‚Ù @  ¶S€_f?d (xù7îãÁ @  ¶T€`f?d hxùµô @  ¶U€af?d ¨xùçdF @  ¶V€bf?d èxùeõ ˜ @  ¶W€cf?d (yù?qõ @  ¶X€df?d hyù½f+ @  ¶Y€ef?d ¨yùï‰r @  ¶Z€ff?d èyùm–ž¬ @  ¶[€gf?d (zùé ˆX @  ¶\€hf?d hzùk˜Ÿ† @  ¶]€if?d ¨zù9ƒpß @  ¶^€jf?d èzù»g @  ¶_€kf?d ({ù]Í< @  ¶`€lf?d h{ùß\â @  ¶a€mf?d ¨{ùGû» @  ¶b€nf?d è{ùÖìe @  ¶c€of?d (|ùj˳ @  ¶d€pf?d h|ùè‚Üm @  ¶e€qf?d ¨|ùº™34 @  ¶f€rf?d è|ù8$ê @  ¶g€sf?d (}ùbpY‡ @  ¶h€tf?d h}ùàáNY @  ¶i€uf?d ¨}ù²ú¡ @  ¶j€vf?d è}ù0k¶Þ @  ¶k€wf?d (~ù´ô * @  ¶l€xf?d h~ù6e·ô @  ¶m€yf?d ¨~ùd~X­ @  ¶n€zf?d è~ùæïOs @  ¶o€{f?d (ù6 þ @  ¶p€|f?d hù“§  @  ¶q€}f?d ¨ùuЀù'Á¼ôy @  ¶r€~f?d èù>­Û @  ¶sf?d @€ù\¹Þ) @  ¶t€f?d €€ù|LÜ× @  ¶uf?d À€ùŒ3&® @  ¶v‚f?d ù\{ªF @  ¶wƒf?d @ùTÚL @  ¶x„f?d €ùt/Nã @  ¶y…f?d Àù„P´š @  ¶z†f?d ‚ù[ @  ¶{‡f?d @‚ù‚^µ° @  ¶|ˆf?d €‚ù¢«·N @  ¶}‰f?d À‚ùRÔM7 @  ¶~Šf?d ƒù‚œÁß @  ¶‹f?d @ƒù{Ëw @  ¶€Œf?d €ƒù[> ‰ @  ¶f?d Àƒù«Aðð @  ¶‚Žf?d „ù²ÿ @  ¶ƒf?d @„ùLÀø @  ¶„f?d €„ùlà @  ¶…‘f?d À„ùœŸ8 @  ¶†’f?d …ùL×´— @  ¶‡“f?d @…ùDvRÌ @  ¶ˆ”f?d €…ùdƒP2 @  ¶‰•f?d À…ù”üªK @  ¶Š–f?d †ù ¸ Š @  ¶‹—f?d @†ù’ò«a @  ¶Œ˜f?d €†ù²©Ÿ @  ¶™f?d À†ùBxSæ @  ¶Žšf?d ‡ù’0ß @  ¶›f?d @‡ù70µ @  ¶œf?d €‡ùÅK @  ¶‘f?d À‡ùçºÿ2 @  ¶’žf?d ˆùÓEs/ @  ¶“Ÿf?d @ˆù°è‰ô @  ¶” f?d €ˆù‹  @  ¶•¡f?d Àˆù`bqs @  ¶–¢f?d ‰ù°*ý› @  ¶—£f?d @‰ù¸‹À @  ¶˜¤f?d €‰ù˜~> @  ¶™¥f?d À‰ùhãG @  ¶š¦f?d ŠùõEC† @  ¶›§f?d @Šùnâm @  ¶œ¨f?d €ŠùNúà“ @  ¶©f?d ÀŠù¾…ê @  ¶žªf?d ‹ùnÍ– @  ¶Ÿ«f?d @‹ùÚËi  @  ¶ ¬f?d €‹ùú>k÷ @  ¶¡­f?d À‹ù A‘Ž @  ¶¢®f?d Œùb @  ¶£¯f?d @Œùí¡† @  ¶¤°f?d €ŒùÍà£x @  ¶¥±f?d ÀŒù=ŸY @  ¶¦²f?d ùí×Õé @  ¶§³f?d @ùåv3² @  ¶¨´f?d €ùŃ1L @  ¶©µf?d Àù5üË5 @  ¶ª¶f?d Žù¨¸kô @  ¶«·f?d @Žù3òÊ @  ¶¬¸f?d €ŽùÈá @  ¶­¹f?d ÀŽùãx2˜ @  ¶®ºf?d ù30¾p @  ¶¯»f?d @ù–0fË @  ¶°¼f?d €ù¶Åd5 @  ¶±½f?d ÀùFºžL @  ¶²¾f?d ùød"þ @  ¶³¿f?d @ùk™Í4 @  ¶´Àf?d €ùKlÏÊ @  ¶µÁf?d Àù»5³ @  ¶¶Âf?d ‘ùk[¹[ @  ¶·Ãf?d @‘ùcú_ @  ¶¸Äf?d €‘ùC]þ @  ¶¹Åf?d À‘ù³p§‡ @  ¶ºÆf?d ’ù.4F @  ¶»Çf?d @’ùµ~¦­ @  ¶¼Èf?d €’ù•‹¤S @  ¶½Éf?d À’ùeô^* @  ¶¾Êf?d “ùµ¼Ò @  ¶¿Ëf?d @“ù¯½+[ @  ¶ÀÌf?d €“ùH)¥ @  ¶ÁÍf?d À“ù7ÓÜ @  ¶ÂÎf?d ”ùfy Ó @  ¶ÃÏf?d @”ù˜cãÔ @  ¶ÄÐf?d €”ù¸–á* @  ¶ÅÑf?d À”ùHéS @  ¶ÆÒf?d •ù˜¡—» @  ¶ÇÓf?d @•ùqà @  ¶ÈÔf?d €•ù°õs @  ¶ÉÕf?d À•ù@Љg @  ¶ÊÖf?d –ùÝÎ)¦ @  ¶Ë×f?d @–ùF„ˆM @  ¶ÌØf?d €–ùfqг @  ¶ÍÙf?d À–ù–pÊ @  ¶ÎÚf?d —ùFFü" @  ¶ÏÛf?d @—ùãF$™ @  ¶ÐÜf?d €—ùó&g @  ¶ÑÝf?d À—ù3ÌÜ @  ¶ÒÞf?d ˜ù3P @  ¶Óßf?d @˜ùdžªØ @  ¶Ôàf?d €˜ùDk¨& @  ¶Õáf?d À˜ù´R_ @  ¶Öâf?d ™ùd\Þ· @  ¶×ãf?d @™ùlý8ì @  ¶Øäf?d €™ùL: @  ¶Ùåf?d À™ù¼wÀk @  ¶Úæf?d šù!3`ª @  ¶Ûçf?d @šùºyÁA @  ¶Üèf?d €šùšŒÃ¿ @  ¶Ýéf?d Àšùjó9Æ @  ¶Þêf?d ›ùº»µ. @  ¶ßëf?d @›ù½J% @  ¶àìf?d €›ù.HHÛ @  ¶áíf?d À›ùÞ7²¢ @  ¶âîf?d€ œù³º]  @  ·ïf?d @œù¬áÖ% @  ·ðf?d €œùŒÔÛ @  ·ñf?d Àœù¹"ÕO @  ·òf?d ùijY§ @  ·óf?d @ù¯yà† @  ·ôf?d €ùŒâx @  ·õf?d Àù±AG{ @  ·öf?d žù,çº @  · ÷f?d @žùr½¼ @  · øf?d €žùRó¿B @  · ùf?d ÀžùgžÖ @  · úf?d Ÿù·2> @  · ûf?d @Ÿùqž‹ @  ·üf?d €ŸùQk‰á @  ·ýfuРù?d ÀŸù @  ·þf?d  ù³ Ìd @  ·ÿf?d X ù‡ÙÝ @  ·g?d ˜ ù§ìÛ# @  ·g?d Ø ù’ÚÚ· @  ·g?d ¡ùB’V_ @  ·g?d X¡ù„ï~ @  ·g?d ˜¡ù¤tí€ @  ·g?d Ø¡ùš¹Hƒ @  ·g?d ¢ùýèB @  ·g?d X¢ùYþ²D @  ·g?d ˜¢ùy °º @  · g?d Ø¢ùL=±. @  · g?d £ùœu=Æ @  · g?d X£ùZf„ç @  · g?d ˜£ùz“† @  · g?d Ø£ùøù:J @  · g?d ¤ùá·ÉE @  ·!g?d X¤ùÚäñ¯ @  ·"g?d ˜¤ùúóQ @  ·#g?d ؤùÏ'òÅ @  ·$g?d ¥ùo~- @  ·%g?d X¥ùÙ|Ç  @  ·&g?d ˜¥ùù‰Åò @  ·'g?d Ø¥ùÇD`ñ @  ·(g?d ¦ùZÀ0 @  ·)g?d X¦ùš6 @  ·*g?d ˜¦ù$ö˜È @  ·+g?d ئùÀ™\ @  ·,g?d §ùÁˆ´ @  ·-g?d X§ù›¬• @  ·.g?d ˜§ù'n®k @  ·/g?d اù´5ˆ @  ·0g?d ¨ù€ý¹• @  ·1g?d X¨ù&¸£ @  ·2 g?d ˜¨ùìº] @  ·3!g?d بù3Ú»É @  ·4"g?d ©ùã’7! @  ·5#g?d X©ù%Ž @  ·6$g?d ˜©ùtŒþ @  ·7%g?d Ø©ù;¹)ý @  ·8&g?d ªù¦ý‰< @  ·9'g?d XªùøþÓ: @  ·:(g?d ˜ªùØ ÑÄ @  ·;)g?d تùí=ÐP @  ·<*g?d «ù=u\¸ @  ·=+g?d X«ùûfå™ @  ·>,g?d ˜«ùÛ“çg @  ·?-g?d Ø«ù÷þ]¦ @  ·@.g?d ¬ùî°®© @  ·A/g?d X¬ùÕã–C @  ·B0g?d ˜¬ùõ”½ @  ·C1g?d جùÀ •) @  ·D2g?d ­ùhÁ @  ·E3g?d X­ùÖ{ à @  ·F4g?d ˜­ùöŽ¢ @  ·G5g?d Ø­ùÈC @  ·H6g?d ®ùU§Ü @  ·I7g?d X®ù ýÚ @  ·J8g?d ˜®ù+ñÿ$ @  ·K9g?d Ø®ùÇþ° @  ·L:g?d ¯ùÎrX @  ·M;g?d X¯ùœËy @  ·Ng?d °ùÛîÖ @  ·Q?g?d X°ùSoúñ @  ·R@g?d ˜°ùsšø @  ·SAg?d ذùF¬ù› @  ·TBg?d ±ù–äus @  ·UCg?d X±ùP÷ÌR @  ·VDg?d ˜±ùpά @  ·WEg?d رùNÏk¯ @  ·XFg?d ²ùÓ‹Ën @  ·YGg?d X²ùˆ‘h @  ·ZHg?d ˜²ù­}“– @  ·[Ig?d زù˜K’ @  ·\Jg?d ³ùHê @  ·]Kg?d X³ùŽ§Ë @  ·^Lg?d ˜³ù®å¥5 @  ·_Mg?d سù,f @  ·`Ng?d ´ù5Áêi @  ·aOg?d X´ù’Òƒ @  ·bPg?d ˜´ù.gÐ} @  ·cQg?d Ø´ùQÑé @  ·dRg?d µùË] @  ·eSg?d Xµù ä  @  ·fTg?d ˜µù-ÿæÞ @  ·gUg?d صù2CÝ @  ·hVg?d ¶ùŽvã @  ·iWg?d X¶ùÐu¹ @  ·jXg?d ˜¶ùð€»ä @  ·kYg?d ضùŶºp @  ·lZg?d ·ùþ6˜ @  ·m[g?d X·ùÓí¹ @  ·n\g?d ˜·ùóG @  ·o]g?d Ø·ù`t¤ @  ·p^g?d ¸ùT‹š¹ @  ·q_g?d X¸ùòo› @  ·r`g?d ˜¸ùÒš™q @  ·sag?d ظù笘å @  ·tbg?d ¹ù7ä  @  ·ucg?d X¹ùñ÷­, @  ·vdg?d ˜¹ùÑ¯Ò @  ·weg?d عùïÏ Ñ @  ·xfg?d ºùr‹ª @  ·ygg?d Xºù,ˆð @  ·zhg?d ˜ºù }òè @  ·{ig?d غù9Kó| @  ·|jg?d »ùé” @  ·}kg?d X»ù/Ƶ @  ·~lg?d ˜»ùåÄK @  ·mg?d Ø»ùÀÞN» @  ·€ng?d ¼ùÙ½´ @  ·og?d X¼ùâÃ…^ @  ·‚pg?d ˜¼ùÂ6‡  @  ·ƒqg?d ؼù÷†4 @  ·„rg?d ½ù'H Ü @  ·…sg?d X½ùá[³ý @  ·†tg?d ˜½ùÁ®± @  ·‡ug?d ؽùÿc @  ·ˆvg?d ¾ùb'´Á @  ·‰wg?d X¾ù<$îÇ @  ·Šxg?d ˜¾ùÑì9 @  ·‹yg?d ؾù)çí­ @  ·Œzg?d ¿ùù¯aE @  ·{g?d X¿ù?¼Ød @  ·Ž|g?d ˜¿ùIÚš @uÐÀù  ·}g?d Ø¿ùŒ%Ay @  ·~g?d 0ÀùèÕ+ @  ·‘g?d pÀù£§Pž @  ·’€g?d °ÀùƒRR` @  ·“g?d ðÀù¶dSô @  ·”‚g?d 0Áùf,ß @  ·•ƒg?d pÁù ?f= @  ·–„g?d °Áù€Êdà @  ·—…g?d ðÁù¾ÁÀ @  ·˜†g?d 0Âù#Ca @  ·™‡g?d pÂù}@; @  ·šˆg?d °Âù]µ9ù @  ·›‰g?d ðÂùhƒ8m @  ·œŠg?d 0Ãù¸Ë´… @  ·‹g?d pÃù~Ø ¤ @  ·žŒg?d °Ãù^-Z @  ·Ÿg?d ðÃùÜG³  @  · Žg?d 0ÄùÅ @ @  ·¡g?d pÄùþZxì @  ·¢g?d °ÄùÞ¯z @  ·£‘g?d ðÄùë™{† @  ·¤’g?d 0Åù;Ñ÷n @  ·¥“g?d pÅùýÂNO @  ·¦”g?d °ÅùÝ7L± @  ·§•g?d ðÅùãúé² @  ·¨–g?d 0Æù~¾Is @  ·©—g?d pÆù ½u @  ·ª˜g?d °ÆùH‹ @  ·«™g?d ðÆù5~ @  ·¬šg?d 0Çùå6œ÷ @  ·­›g?d pÇù#%%Ö @  ·®œg?d °ÇùÐ'( @  ·¯g?d ðÇù¼¼Ë @  ·°žg?d 0Èù¤C0Ö @  ·±Ÿg?d pÈù§1à @  ·² g?d °Èù"R3 @  ·³¡g?d ðÈùd2Š @  ·´¢g?d 0ÉùÇ,¾b @  ·µ£g?d pÉù?C @  ·¶¤g?d °Éù!ʽ @  ··¥g?d ðÉù ¾ @  ·¸¦g?d 0Êù‚C @  ·¹§g?d pÊùÜ@Zy @  ·º¨g?d °ÊùüµX‡ @  ·»©g?d ðÊùɃY @  ·¼ªg?d 0ËùËÕû @  ·½«g?d pËùߨlÚ @  ·¾¬g?d °Ëùÿ-n$ @  ·¿­g?d ðËùÓ@Ôå @  ·À®g?d 0ÌùÊ'ê @  ·Á¯g?d pÌùñ] @  ·Â°g?d °ÌùѨþ @  ·Ã±g?d ðÌùäžj @  ·Ä²g?d 0Íù4Ö‚ @  ·Å³g?d pÍùòÅ)£ @  ·Æ´g?d °ÍùÒ0+] @  ·Çµg?d ðÍùìýŽ^ @  ·È¶g?d 0Îùq¹.Ÿ @  ·É·g?d pÎù/ºt™ @  ·Ê¸g?d °ÎùOvg @  ·Ë¹g?d ðÎù:ywó @  ·Ìºg?d 0Ïùê1û @  ·Í»g?d pÏù,"B: @  ·Î¼g?d °Ïù ×@Ä @  ·Ï½g?d ðÏùŸ»Û' @  ·Ð¾g?d 0Ðù!eg• @  ·Ñ¿g?d pÐùwÑs² @  ·ÒÀg?d °ÐùW$qL @  ·ÓÁg?d ðÐùbpØ @  ·ÔÂg?d 0Ñù²Zü0 @  ·ÕÃg?d pÑùtIE @  ·ÖÄg?d °ÑùT¼Gï @  ·×Åg?d ðÑùjqâì @  ·ØÆg?d 0Òù÷5B- @  ·ÙÇg?d pÒù©6+ @  ·ÚÈg?d °Òù‰ÃÕ @  ·ÛÉg?d ðÒù¼õA @  ·ÜÊg?d 0Óùl½—© @  ·ÝËg?d pÓùª®.ˆ @  ·ÞÌg?d °ÓùŠ[,v @  ·ßÍg?d ðÓù1% @  ·àÎg?d 0Ôùc* @  ·áÏg?d pÔù*,[À @  ·âÐg?d€ °Ôù"CMl @  ¸Ñg?d ðÔùö4Ñ @  ¸Òg?d 0Õù&|ˆ9 @  ¸Óg?d pÕù%&Êõ @  ¸Ôg?d °ÕùÓÈ  @  ¸Õg?d ðÕùõ¬2r @  ¸Ög?d 0Öùhè’³ @  ¸×g?d pÖùøY—Ï @  ¸Øg?d °Öùج•1 @  ¸ Ùg?d ðÖù(ÓoH @  ¸ Úg?d 0×ùø›ã  @  ¸ Ûg?d p×ùûÁ¡l @  ¸ Üg?d °×ùÛ4£’ @  ¸ Ýg?d ð×ù+KYë @  ¸Þg?d 0Øù´Õö @  ¸ßg?d pØùÚCµZ @  ¸àg?d °Øùú¶·¤ @  ¸ág?d ðØù ÉMÝ @  ¸âg?d 0ÙùÚÁ5 @  ¸ãg?d pÙùÙÛƒù @  ¸äg?d °Ùùù. @  ¸åg?d ðÙù Q{~ @  ¸æg?d 0Úù”Û¿ @  ¸çg?d pÚù¤Þà @  ¸èg?d °Úù$QÜ= @  ¸ég?d ðÚùÔ.&D @  ¸êg?d 0Ûùfª¬ @  ¸ëg?d pÛù<è` @  ¸ìg?d °ÛùZI™â @  ¸€íg?d ðÛùª6c› @  ¸€îg?d 0Üù³x” @  ¸€ïg?d pÜùú>îT @  ¸ €ðg?d °ÜùÚËìª @  ¸!€ñg?d ðÜù*´Ó @  ¸"€òg?d 0Ýùúüš; @  ¸#€óg?d pÝùù¦Ø÷ @  ¸$€ôg?d °ÝùÙSÚ  @  ¸%€õg?d ðÝù), p @  ¸&€ög?d 0Þù´h€± @  ¸'€÷g?d pÞù$Ù…Í @  ¸(€øg?d °Þù,‡3 @  ¸)€ùg?d ðÞùôS}J @  ¸*€úg?d 0ßù$ñ¢ @  ¸+€ûg?d pßù'A³n @  ¸,€üg?d uÐàù/°ßù´± @  ¸-€ýg?d ðßù³Œä@ @  ¸. þg?d Hàùª(º¶ @  ¸/ ÿg?d ˆàùºyêZ @  ¸0 h?d Èàù8èý„ @  ¸1 h?d áùšNœË @  ¸2 h?d Háùß‹ @  ¸3 h?d ˆáù¹áÜù @  ¸4 h?d Èáù;pË' @  ¸5 h?d âùÔÚ†A @  ¸6 h?d HâùVK‘Ÿ @  ¸7 h?d ˆâùdžÃ @  ¸8 h?d Èâùæ– @  ¸9  h?d ãùD©÷R @  ¸:  h?d HãùÆ8àŒ @  ¸;  h?d ˆãùg·` @  ¸<  h?d Èãùå— ¾ @  ¸=  h?d äùŽ7¾ @  ¸> h?d Häù ¦©È @  ¸? h?d ˆäùIƒÄº @  ¸@ h?d ÈäùËÓd @  ¸A h?d åùi´²+ @  ¸B h?d Håùë%¥õ @  ¸C h?d ˆåùJò @  ¸D h?d ÈåùÈŠåÇ @  ¸E h?d æù' ¨¡ @  ¸F h?d Hæù¥±¿ @  ¸G h?d ˆæù—d¯# @  ¸H h?d Èæùõ¸ý @  ¸I h?d çù·SÙ² @  ¸J h?d Hçù5ÂÎl @  ¸K h?d ˆçù”ü™€ @  ¸L h?d ÈçùmŽ^ @  ¸M h?d èùP|ïä @  ¸N h?d HèùÒíø: @  ¸O h?d ˆèùµ~¶ @  ¸P  h?d Èèù7ïšh @  ¸Q !h?d éù•Iû' @  ¸R "h?d HéùØìù @  ¸S #h?d ˆéù¶æ» @  ¸T $h?d Èéù4w¬Ë @  ¸U %h?d êùÛÝá­ @  ¸V &h?d HêùYLös @  ¸W 'h?d ˆêùk™æ/ @  ¸X (h?d Èêùéññ @  ¸Y )h?d ëùK®¾ @  ¸Z *h?d HëùÉ?‡` @  ¸[ +h?d ˆëùhÐŒ @  ¸\ ,h?d ÈëùêÇR @  ¸] -h?d ìù0Ùú @  ¸^ .h?d Hìù¡Î$ @  ¸_ /h?d ˆìù胥Ä @  ¸` 0h?d Èìùj² @  ¸a 1h?d íùÈ´ÓU @  ¸b 2h?d HíùJ%Ä‹ @  ¸c 3h?d ˆíùë“g @  ¸d 4h?d ÈíùiŠ„¹ @  ¸e 5h?d îù† Éß @  ¸f 6h?d Hîù±Þ @  ¸g 7h?d ˆîù6dÎ] @  ¸h 8h?d Èîù´õÙƒ @  ¸i 9h?d ïùS¸Ì @  ¸j :h?d Hïù”¯ @  ¸k ;h?d ˆïù5üøþ @  ¸l h?d HðùùÌ©ë @  ¸o ?h?d ˆðùnÉv @  ¸p @h?d ÈðùìžÞ¨ @  ¸q Ah?d ñùN8¿ç @  ¸r Bh?d HñùÌ©¨9 @  ¸s Ch?d ˆñùm—ÿÕ @  ¸t Dh?d Èñùïè  @  ¸u Eh?d òù¬¥m @  ¸v Fh?d Hòù‚=²³ @  ¸w Gh?d ˆòù°è¢ï @  ¸x Hh?d Èòù2yµ1 @  ¸y Ih?d óùßÔ~ @  ¸z Jh?d HóùNà @  ¸{ Kh?d ˆóù³p”L @  ¸| Lh?d Èóù1გ @  ¸} Mh?d ôùZA: @  ¸~ Nh?d HôùØÐŠä @  ¸ Oh?d ˆôù~£×§ @  ¸€ Ph?d Èôùü2Ày @  ¸ Qh?d õù^”¡6 @  ¸‚ Rh?d Hõùܶè @  ¸ƒ Sh?d ˆõù};á @  ¸„ Th?d ÈõùÿªöÚ @  ¸… Uh?d öù»¼ @  ¸† Vh?d Höù’‘¬b @  ¸‡ Wh?d ˆöù D¼> @  ¸ˆ Xh?d Èöù"Õ«à @  ¸‰ Yh?d ÷ù€sʯ @  ¸Š Zh?d H÷ùâÝq @  ¸‹ [h?d ˆ÷ù£ÜŠ @  ¸Œ \h?d È÷ù!MC @  ¸ ]h?d øùg\üù @  ¸Ž ^h?d HøùåÍë' @  ¸ _h?d ˆøù‚^ž« @  ¸ `h?d Èøùωu @  ¸‘ ah?d ùù¢iè: @  ¸’ bh?d Hùù øÿä @  ¸“ ch?d ˆùùƨ @  ¸” dh?d ÈùùW¿Ö @  ¸• eh?d úùìýò° @  ¸– fh?d Húùnlån @  ¸— gh?d ˆúù\¹õ2 @  ¸˜ hh?d ÈúùÞ(âì @  ¸™ ih?d ûù|Žƒ£ @  ¸š jh?d Hûùþ”} @  ¸› kh?d ˆûù_!Ñ @  ¸œ lh?d ÈûùݰÔO @  ¸ mh?d üù¶Êç @  ¸ž nh?d Hüù4Ý9 @  ¸Ÿ oh?d ˆüùߣ¶Ù @  ¸  ph?d Èüù]2¡ @  ¸¡ qh?d ýùÿ”ÀH @  ¸¢ rh?d Hýù}×– @  ¸£ sh?d ˆýùÜ;€z @  ¸¤ th?d Èýù^ª—¤ @  ¸¥ uh?d þù±Ú @  ¸¦ vh?d Hþù3‘Í @  ¸§ wh?d ˆþùDÝ@ @  ¸¨ xh?d ÈþùƒÕÊž @  ¸© yh?d ÿù!s«Ñ @  ¸ª zh?d Hÿù£â¼ @  ¸« {h?d ˆÿùÜëã @  ¸¬ uÐú|h?d Èÿù¹Š è @  ¸­}h?d úÏ•…X @  ¸®~h?d `úM’† @  ¸¯h?d  úǦ‰ @  ¸°€h?d àúE±W @  ¸±h?d úç6Ð @  ¸²‚h?d `úe§ÇÆ @  ¸³ƒh?d  úÄ™* @  ¸´„h?d àúF‡ô @  ¸µ…h?d ú©¢Ê’ @  ¸¶†h?d `ú+3ÝL @  ¸·‡h?d  úæÍ @  ¸¸ˆh?d àú›wÚÎ @  ¸¹‰h?d ú9Ñ» @  ¸ºŠh?d `ú»@¬_ @  ¸»‹h?d  ú~û³ @  ¸¼Œh?d àú˜ïìm @  ¸½h?d úóOòÅ @  ¸¾Žh?d `úqÞå @  ¸¿h?d  ú4ûˆi @  ¸Àh?d àú¶jŸ· @  ¸Á‘h?d úÌþø @  ¸Â’h?d `ú–]é& @  ¸Ã“h?d  ú7c¾Ê @  ¸Ä”h?d àúµò© @  ¸Å•h?d úZXär @  ¸Æ–h?d `úØÉó¬ @  ¸Ç—h?d  úêãð @  ¸È˜h?d àúhô. @  ¸É™h?d úÊ+•a @  ¸Êšh?d `úHº‚¿ @  ¸Ë›h?d  úé„ÕS @  ¸Ìœh?d àúk @  ¸Íh?d ú-£7 @  ¸Îžh?d `ú¯•´é @  ¸ÏŸh?d  úÈÁe @  ¸Ð h?d àúJ—Ö» @  ¸Ñ¡h?d úè1·ô @  ¸Ò¢h?d ` új  * @  ¸Ó£h?d   úËž÷Æ @  ¸Ô¤h?d à úIà @  ¸Õ¥h?d ú¦¥­~ @  ¸Ö¦h?d ` ú$4º  @  ¸×§h?d   úáªü @  ¸Ø¨h?d à ú”p½" @  ¸Ù©h?d ú6ÖÜm @  ¸Úªh?d ` ú´G˳ @  ¸Û«h?d   úyœ_ @  ¸Ü¬h?d à ú—è‹ @  ¸Ý­h?d úüH•) @  ¸Þ®h?d ` ú~Ù‚÷ @  ¸ß¯h?d   ú•ûé @  ¸à°h?d à újþÉ @  ¸á±h?d úµÌŸ† @  ¸â²h?d€ ` úCž”þ @  ¹³h?d   úá‹; @  ¹´h?d à úpœå @  ¹µh?d ú«“*n @  ¹¶h?d `ú)=° @  ¹·h?d  úÕer– @  ¹¸h?d àúWôeH @  ¹¹h?d ú;à[} @  ¹ºh?d `ú¹qL£ @  ¹ »h?d  úÝࢠ@  ¹ ¼h?d àú_—÷| @  ¹ ½h?d úVî]„ @  ¹ ¾h?d `úÔJZ @  ¹ ¿h?d  ú ¯K] @  ¹Àh?d àú¢>\ƒ @  ¹Áh?d úc‹\V @  ¹Âh?d `úáKˆ @  ¹Ãh?d  ú…mç‰ @  ¹Äh?d àúüðW @  ¹Åh?d ú-FÜ @  ¹Æh?d `ú¯ŽQ @  ¹Çh?d  úSé$ @  ¹Èh?d àúÑx ú @  ¹Éh?d ú½l7Ï @  ¹Êh?d `ú?ý  @  ¹Ëh?d  ú[ŠŒ @  ¹Ìh?d àúٛΠ@  ¹Íh?d úwò~‹ @  ¹Îh?d `úõciU @  ¹Ïh?d  úlTDŸ @  ¹Ðh?d àúîÅSA @  ¹Ñh?d ú>vt$ @  ¹ Òh?d `ú¼çcú @  ¹!Óh?d  úØÏû @  ¹"Ôh?d àúZØ% @  ¹#Õh?d úpân® @  ¹$Öh?d `úòsyp @  ¹%×h?d  ú6V @  ¹&Øh?d àúŒ…!ˆ @  ¹'Ùh?d úà‘½ @  ¹(Úh?d `úbc @  ¹)Ûh?d  úw¤b @  ¹*Üh?d àú„æ³¼ @  ¹+Ýh?d ú¾)ë @  ¹,Þh?d `ú…/>5 @  ¹-ßh?d  ú¯*# @  ¹.àh?d àú>=ý @  ¹/áh?d ú‹=( @  ¹0âh?d `ú@*ö @  ¹1ãh?d  ú$m†÷ @  ¹2äh?d àú¦ü‘) @  ¹3åh?d úŒ'¢ @  ¹4æh?d `úŽ0| @  ¹5çh?d  úòéZ @  ¹6èh?d àúpxh„ @  ¹7éh?d úlV± @  ¹8êh?d `úžýAo @  ¹9ëh?d  úúŠín @  ¹:ìh?d àúxú° @  ¹;íh?d úÖòõ @  ¹<îh?d `úTc+ @  ¹=ïh?d  úÍT%á @  ¹>ðh?d àúOÅ2? @  ¹?ñh?d ú1qÈ @  ¹@òh?d `ú³à @  ¹Aóh?d  ú×—¨ @  ¹Bôh?d àúU¿É @  ¹Cõh?d úå B @  ¹Döh?d `úýtœ @  ¹E÷h?d  úQº @  ¹Føh?d àúƒ‚Fd @  ¹Gùh?d úï–xQ @  ¹Húh?d `úmo @  ¹Iûh?d  ú pÃŽuÐ ú @  ¹Jüh?d àúöa§, @  ¹K€ýh?d 8 ú0Ío @  ¹L€þh?d x ú²\xÞ @  ¹M€ÿh?d ¸ ú$-xG @  ¹N€i?d ø ú¦¼o™ @  ¹O€i?d 8!úg oL @  ¹P€i?d x!úå˜x’ @  ¹Q€i?d ¸!úïÔ“ @  ¹R€i?d ø!ú~ÃM @  ¹S€i?d 8"ú)uÆ @  ¹T€i?d x"ú« b @  ¹U€i?d ¸"úWk-> @  ¹V€i?d ø"úÕú:à @  ¹W€ i?d 8#ú¹îÕ @  ¹X€ i?d x#ú;  @  ¹Y€ i?d ¸#ú_¿  @  ¹Z€ i?d ø#úÝ™¨Ô @  ¹[€ i?d 8$úspM‘ @  ¹\€i?d x$úñáZO @  ¹]€i?d ¸$úhÖw… @  ¹^€i?d ø$úêG`[ @  ¹_€i?d 8%ú:ôG> @  ¹`€i?d x%ú¸ePà @  ¹a€i?d ¸%úÜüá @  ¹b€i?d ø%ú^ƒë? @  ¹c€i?d 8&út`]´ @  ¹d€i?d x&úöñJj @  ¹e€i?d ¸&ú –L @  ¹f€i?d ø&úˆ’ @  ¹g€i?d 8'úä,§ @  ¹h€i?d x'úf‚;y @  ¹i€i?d ¸'úõ—x @  ¹j€i?d ø'ú€d€¦ @  ¹k€i?d 8(ú<ñ @  ¹l€i?d x(ú­ / @  ¹m€i?d ¸(ú…-9 @  ¹n€ i?d ø(ú¼ç @  ¹o€!i?d 8)úÆ 2 @  ¹p€"i?d x)úD˜ì @  ¹q€#i?d ¸)ú ïµí @  ¹r€$i?d ø)ú¢~¢3 @  ¹s€%i?d 8*úˆ¸ @  ¹t€&i?d x*ú f @  ¹u€'i?d ¸*úökL@ @  ¹v€(i?d ø*útú[ž @  ¹w€)i?d 8+úîe« @  ¹x€*i?d x+úšru @  ¹y€+i?d ¸+úþÞt @  ¹z€,i?d ø+ú|™Éª @  ¹{€-i?d 8,úÒp,ï @  ¹|€.i?d x,úPá;1 @  ¹}€/i?d ¸,úÉÖû @  ¹~€0i?d ø,úKG% @  ¹€1i?d 8-úÖ¥ã @  ¹€€2i?d x-úT4= @  ¹€3i?d ¸-ú0C«< @  ¹‚€4i?d ø-ú²Ò¼â @  ¹ƒ€5i?d 8.ú˜1 i @  ¹„€6i?d x.ú · @  ¹…€7i?d ¸.úæÇR‘ @  ¹†€8i?d ø.údVEO @  ¹‡€9i?d 8/úB{z @  ¹ˆ€:i?d x/úŠÓl¤ @  ¹‰€;i?d ¸/úî¤À¥ @  ¹Š€i?d x0úçÝj] @  ¹€?i?d ¸0ú kZ @  ¹Ž€@i?d ø0ú‘œ|„ @  ¹€Ai?d 81úP)|Q @  ¹€Bi?d x1úÒ¸k @  ¹‘€Ci?d ¸1ú¶ÏÇŽ @  ¹’€Di?d ø1ú4^ÐP @  ¹“€Ei?d 82ú½fÛ @  ¹”€Fi?d x2úœ,q @  ¹•€Gi?d ¸2ú`K># @  ¹–€Hi?d ø2úâÚ)ý @  ¹—€Ii?d 83úŽÎÈ @  ¹˜€Ji?d x3ú _ @  ¹™€Ki?d ¸3úh(¬ @  ¹š€Li?d ø3úê¹»É @  ¹›€Mi?d 84úDP^Œ @  ¹œ€Ni?d x4úÆÁIR @  ¹€Oi?d ¸4ú_öd˜ @  ¹ž€Pi?d ø4úÝgsF @  ¹Ÿ€Qi?d 85ú ÔT# @  ¹ €Ri?d x5úECý @  ¹¡€Si?d ¸5úë2ïü @  ¹¢€Ti?d ø5úi£ø" @  ¹£€Ui?d 86úC@N© @  ¹¤€Vi?d x6úÁÑYw @  ¹¥€Wi?d ¸6ú=¶Q @  ¹¦€Xi?d ø6ú¿' @  ¹§€Yi?d 87úÓ3?º @  ¹¨€Zi?d x7úQ¢(d @  ¹©€[i?d ¸7ú5Õ„e @  ¹ª€\i?d ø7ú·D“» @  ¹«€]i?d 88ú4 ì @  ¹¬€^i?d x8ú¶2 @  ¹­€_i?d ¸8ú² $ @  ¹®€`i?d ø8ú0œú @  ¹¯€ai?d 89úñ)/ @  ¹°€bi?d x9ús¸ ñ @  ¹±€ci?d ¸9úϦð @  ¹²€di?d ø9ú•^±. @  ¹³€ei?d 8:ú¿½¥ @  ¹´€fi?d x:ú=,{ @  ¹µ€gi?d ¸:úÁK_] @  ¹¶€hi?d ø:úCÚHƒ @  ¹·€ii?d 8;ú/Îv¶ @  ¹¸€ji?d x;ú­_ah @  ¹¹€ki?d ¸;úÉ(Íi @  ¹º€li?d ø;úK¹Ú· @  ¹»€mi?d 8<úåP?ò @  ¹¼€ni?d x<úgÁ(, @  ¹½€oi?d ¸<úþöæ @  ¹¾€pi?d ø<ú|g8 @  ¹¿€qi?d 8=úÓ3Ï @  ¹À€ri?d x=ú€B$ @  ¹Á€si?d ¸=úä5ˆ @  ¹€ti?d ø=úf¤ŸÎ @  ¹Àui?d 8>úLG)E @  ¹Ä€vi?d x>úÎÖ>› @  ¹Å€wi?d ¸>ú2±q½ @  ¹Æ€xi?d ø>ú° fc @  ¹Ç€yi?d 8?úÜ4XV @  ¹È€zi?d x?ú^¥Oˆ @  ¹É€{i?duÐ@ú7 ¸?ú:Ò㉠@  ¹Ê€|i?d ø?úÅÇ+ @  ¹Ë}i?d P@ú±È+] @  ¹Ì~i?d @ú‘=)£ @  ¹Íi?d Ð@úÚOi @  ¹Î€i?d Aú åþ @  ¹Ïi?d PAú™k~ @  ¹Ð‚i?d Aú¹ž|ã @  ¹Ñƒi?d ÐAúÅ @  ¹Ò„i?d BúâÉe @  ¹Ó…i?d PBú×ÿd— @  ¹Ô†i?d Bú÷ fi @  ¹Õ‡i?d ÐBú©  @  ¹Ýi?d ÐDú–´fÔ @  ¹Þi?d EúFüê< @  ¹ß‘i?d PEúÄ–Vo @  ¹à’i?d EúäcT‘ @  ¹á“i?d ÐEú"pí° @  ¹â”i?d€ Fú~sºq @  º•i?d PFúªóÌ @  º–i?d FúŠññ2 @  º—i?d ÐFú»PÙ @  º˜i?d GúÁóÜ1 @  º™i?d PGú1Œ&H @  ºši?d Gúy$¶ @  º›i?d ÐGúØÂí @  ºœi?d Hú-'Nð @  º i?d PHúÝX´‰ @  º ži?d Húý­¶w @  º Ÿi?d ÐHúžL¬ @  º  i?d IúNHÀD @  º ¡i?d PIú¾7:= @  º¢i?d IúžÂ8à @  º£i?d ÐIú;Âàx @  º¤i?d Jú¦†@¹ @  º¥i?d PJúVùºÀ @  º¦i?d Júv ¸> @  º§i?d ÐJúíFÕ @  º¨i?d Kú=•= @  º©i?d PKúÍqoD @  ºªi?d Kúí„mº @  º«i?d ÐKúå%‹á @  º¬i?d Lúükxî @  º­i?d PLú ‚— @  º®i?d Lú,á€i @  º¯i?d ÐLúÒûCn @  º°i?d Mú³Ï† @  º±i?d PMúòÌ5ÿ @  º²i?d MúÒ97 @  º³i?d ÐMúf?È  @  º ´i?d Núû{hË @  º!µi?d PNú ’² @  º"¶i?d Nú+ñL @  º#·i?d ÐNú°»1§ @  º$¸i?d Oú`ó½O @  º%¹i?d POúŒG6 @  º&ºi?d Oú°yEÈ @  º'»i?d ÐOú¸Ø£“ @  º(¼i?d Pú! @  º)½i?d PPúöyåX @  º*¾i?d PúÖŒç¦ @  º+¿i?d ÐPúEql @  º,Ài?d Qú•9„„ @  º-Ái?d PQúeF~ý @  º.Âi?d QúE³| @  º/Ãi?d ÐQú೤¸ @  º0Äi?d Rú}÷y @  º1Åi?d PRúˆþ @  º2Æi?d Rú­}üþ @  º3Çi?d ÐRú67] @  º4Èi?d SúæÑý @  º5Éi?d PSú+„ @  º6Êi?d Sú6õ)z @  º7Ëi?d ÐSú>TÏ! @  º8Ìi?d Tú'<. @  º9Íi?d PTú×eÆW @  º:Îi?d Tú÷Ä© @  º;Ïi?d ÐTú Š® @  º<Ði?d UúÙ‹F @  º=Ñi?d PUú)½q? @  º>Òi?d Uú HsÁ @  º?Ói?d ÐUúIŠX @  º@Ôi?d VúŽ *™ @  ºAÕi?d PVú~rÐà @  ºBÖi?d Vú^‡Ò @  ºC×i?d ÐVúÅÍsõ @  ºDØi?d Wú…ÿ @  ºEÙi?d PWúåúd @  ºFÚi?d WúÅš @  ºGÛi?d ÐWúÍ®áÁ @  ºHÜi?d XúùQmÜ @  ºIÝi?d PXú .—¥ @  ºJÞi?d Xú)Û•[ @  ºKßi?d ÐXúJvo€ @  ºLài?d Yúš>ãh @  ºMái?d PYújA @  ºNâi?d YúJ´ï @  ºOãi?d ÐYúï´ÃT @  ºPäi?d Zúrðc• @  ºQåi?d PZú‚™ì @  ºRæi?d Zú¢z› @  ºSçi?d ÐZú90:ù @  ºTèi?d [úéx¶ @  ºUéi?d P[úLh @  ºVêi?d [ú9òN– @  ºWëi?d Ð[ú1S¨Í @  ºXìi?d \ú([ @  ºYíi?d P\úØb¡» @  ºZîi?d \úø—£E @  º[ïi?d Ð\ú`B @  º\ði?d ]úÖÅìª @  º]ñi?d P]ú&ºÓ @  º^òi?d ]úO- @  º_ói?d Ð]ú²Ië& @  º`ôi?d ^ú/ Kç @  ºaõi?d P^úßr±ž @  ºböi?d ^úÿ‡³` @  ºc÷i?d Ð^údÍ‹ @  ºdøi?d _ú´…žc @  ºeùi?d P_úDúd @  ºfúi?d _údfä @  ºuÐ`úgûi?d Ð_úl®€¿ @  ºhüi?d (`úÒV5' @  ºiýi?d h`ú")Ï^ @  ºjþi?d ¨`úÜÍ  @  ºkÿi?d è`úA¢Ñ @  ºlj?d (aú‘êš9 @  ºmj?d haúa•`@ @  ºnj?d ¨aúA`b¾ @  ºoj?d èaúä`º @  ºpj?d (búy$Ä @  ºqj?d hbú‰[འ@  ºrj?d ¨bú©®âC @  ºsj?d èbú2äC¨ @  ºtj?d (cúâ¬Ï@ @  ºu j?d hcúÓ59 @  ºv j?d ¨cú2&7Ç @  ºw j?d ècú:‡Ñœ @  ºx j?d (dú#É"“ @  ºy j?d hdúÓ¶Øê @  ºzj?d ¨dúóCÚ @  º{j?d èdú Y @  º|j?d (eúÝ•û @  º}j?d heú-no‚ @  º~j?d ¨eú ›m| @  ºj?d èeúô̤Ô @  º€j?d (fúiˆ @  ºj?d hfú™÷þl @  º‚j?d ¨fú¹ü’ @  ºƒj?d èfú"H]y @  º„j?d (gúòÑ‘ @  º…j?d hgú+è @  º†j?d ¨gú"Š) @  º‡j?d ègú*+ÏM @  ºˆj?d (húÔCP @  º‰j?d hhú) @  ºŠj?d ¨húÎ^»× @  º‹j?d èhú­óA  @  ºŒ j?d (iú}»Íä @  º!j?d hiúÄ7 @  ºŽ"j?d ¨iú­15c @  º#j?d èiú1íØ @  º$j?d (jú•uM @  º‘%j?d hjúe ·` @  º’&j?d ¨júEÿµž @  º“'j?d èjúÞµu @  º”(j?d (kúý˜ @  º•)j?d hkúþ‚bä @  º–*j?d ¨kúÞw` @  º—+j?d èkúÖÖ†A @  º˜,j?d (lúϘuN @  º™-j?d hlú?ç7 @  ºš.j?d ¨lúÉ @  º›/j?d èlúáNÎ @  ºœ0j?d (mú1@Â& @  º1j?d hmúÁ?8_ @  ºž2j?d ¨múáÊ:¡ @  ºŸ3j?d èmúUÌŪ @  º 4j?d (núȈek @  º¡5j?d hnú8÷Ÿ @  º¢6j?d ¨núì @  º£7j?d ènúƒH< @  º¤8j?d (oúS°ï @  º¥9j?d hoú£J– @  º¦:j?d ¨oúƒŠHh @  º§;j?d èoú‹+®3 @  º¨j?d ¨púåê @  º«?j?d èpúv‚Ì @  º¬@j?d (qú¦Ê‰$ @  º­Aj?d hqúVµs] @  º®Bj?d ¨qúv@q£ @  º¯Cj?d èqúÓ@© @  º°Dj?d (rúN Ù @  º±Ej?d hrú¾{ó  @  º²Fj?d ¨rúžŽñ^ @  º³Gj?d èrúÄPµ @  º´Hj?d (súÕŒÜ] @  ºµIj?d hsú%ó&$ @  º¶Jj?d ¨sú$Ú @  º·Kj?d èsú §Â @  º¸Lj?d (túé1Ž @  º¹Mj?d htúä–Ë÷ @  ººNj?d ¨túÄcÉ  @  º»Oj?d ètú:y  @  º¼Pj?d (uúê1†æ @  º½Qj?d huúN|Ÿ @  º¾Rj?d ¨uú:»~a @  º¿Sj?d èuú º‡ø @  ºÀTj?d (vú½þ'9 @  ºÁUj?d hvúMÝ@ @  ºÂVj?d ¨vúmtß¾ @  ºÃWj?d èvúö>~U @  ºÄXj?d (wú&vò½ @  ºÅYj?d hwúÖ Ä @  ºÆZj?d ¨wúöü : @  ºÇ[j?d èwúþ]ìa @  ºÈ\j?d (xúÊ¢`| @  ºÉ]j?d hxú:Ýš @  ºÊ^j?d ¨xú(˜û @  ºË_j?d èxúy…b  @  ºÌ`j?d (yú©ÍîÈ @  ºÍaj?d hyúY²± @  ºÎbj?d ¨yúyGO @  ºÏcj?d èyúÜGÎô @  ºÐdj?d (zúAn5 @  ºÑej?d hzú±|”L @  ºÒfj?d ¨zú‘‰–² @  ºÓgj?d èzú Ã7Y @  ºÔhj?d ({úÚ‹»± @  ºÕij?d h{ú*ôAÈ @  ºÖjj?d ¨{ú C6 @  º×kj?d è{ú ¥m @  ºØlj?d (|úîVb @  ºÙmj?d h|ú둬 @  ºÚnj?d ¨|úËd®å @  ºÛoj?d è|ú5~mâ @  ºÜpj?d (}úå6á  @  ºÝqj?d h}úIs @  ºÞrj?d ¨}ú5¼ @  ºßsj?d è}úºæ† @  ºàtj?d (~úþFG @  ºáuj?d h~úì¼> @  ºâvj?d€ ¨~ú¸·¢f @  »wj?d è~ú¼K¤ @  »xj?d (úôÇL @  »yj?d hú'ÂÆØ @  »zj?d ¨úuЀú'7Ä& @  »{j?d èúÁ$} @  »|j?d @€ú¯šŸs @  »}j?d €€ú33/P @  »~j?d À€ú±¢8Ž @  » j?d ú¨ ã  @  » €j?d @ú*˜ôÓ @  » j?d €ú½Êàg @  » ‚j?d Àú?[÷¹ @  » ƒj?d ‚úæù‡ @  »„j?d @‚úd îY @  »…j?d €‚úU`š @  »†j?d À‚úוwD @  »‡j?d ƒúÛO¶t @  »ˆj?d @ƒúYÞ¡ª @  »‰j?d €ƒúÎŒµ @  »Šj?d ÀƒúL¢À @  »‹j?d „úÑÿ0 @  »Œj?d @„ú“@èî @  »j?d €„úéXÍ @  »Žj?d À„úxO @  »j?d …úäòìÏ @  »j?d @…úfcû @  »‘j?d €…úñ1ï¥ @  »’j?d À…ús ø{ @  »“j?d †úªföE @  »”j?d @†ú(÷á› @  »•j?d €†úùHè @  » –j?d À†úŠh_6 @  »!—j?d ‡ú†²ž @  »"˜j?d @‡ú#‰Ø @  »#™j?d €‡ú“ql @  »$šj?d À‡úàŠ² @  »%›j?d ˆúa¨P @  »&œj?d @ˆúã ¿Ž @  »'j?d €ˆú¥­ @  »(žj?d Àˆúý4s @  »)Ÿj?d ‰ú ‚s @  »* j?d @‰ú‹˜•­ @  »+¡j?d €‰úÊ @  »,¢j?d À‰úž[–Ç @  »-£j?d ŠúG˜ù @  ».¤j?d @ŠúÅ ' @  »/¥j?d €Šúôä @  »0¦j?d ÀŠúv•: @  »1§j?d ‹úzO×  @  »2¨j?d @‹úøÞÀÔ @  »3©j?d €‹úoŒÔ` @  »4ªj?d À‹úíþ @  »5«j?d Œú°ÑžN @  »6¬j?d @Œú2@‰ @  »7­j?d €Œú®é9³ @  »8®j?d ÀŒú,x.m @  »9¯j?d úEò± @  »:°j?d @úÇcšo @  »;±j?d €úP1ŽÛ @  »<²j?d ÀúÒ ™ @  »=³j?d Žú f—; @  »>´j?d @Žú‰÷€å @  »?µj?d €Žúþ/ @  »@¶j?d ÀŽú…o8Ú @  »A·j?d ú‰µùê @  »B¸j?d @ú $î4 @  »C¹j?d €úœvú€ @  »Dºj?d Àúçí^ @  »E»j?d úä»ÿ @  »F¼j?d @úf*èÍ @  »G½j?d €úúƒXî @  »H¾j?d ÀúxO0 @  »I¿j?d ‘ú|À! @  »JÀj?d @‘úþî×ÿ @  »KÁj?d €‘úi¼ÃK @  »LÂj?d À‘úë-Ô• @  »MÃj?d ’ú2ëÚ« @  »NÄj?d @’ú°zÍu @  »OÅj?d €’úrC¶ @  »PÆj?d À’úãTh @  »QÇj?d “ú9•X @  »RÈj?d @“ú¨‚† @  »SÉj?d €“úú–2 @  »TÊj?d À“ú˜kì @  »UËj?d ”úŧÜ @  »VÌj?d @”úG6Ë @  »WÍj?d €”úÛŸ{á @  »XÎj?d À”úYl? @  »YÏj?d •ú0„Ïã @  »ZÐj?d @•ú²Ø= @  »[Ñj?d €•ú%G̉ @  »\Òj?d À•ú§ÖÛW @  »]Ój?d –ú~Õi @  »^Ôj?d @–úü· @  »_Õj?d €–úÜkÄ @  »`Öj?d À–ú^| @  »a×j?d —úRĽ* @  »bØj?d @—úÐUªô @  »cÙj?d €—úG¾@ @  »dÚj?d À—úÅ–©ž @  »eÛj?d ˜úµë‹| @  »fÜj?d @˜ú7zœ¢ @  »gÝj?d €˜ú«Ó, @  »hÞj?d À˜ú)B;_ @  »ißj?d ™úÝ¡_ @  »jàj?d @™ú_î¶ @  »káj?d €™úȼ¢5 @  »lâj?d À™úJ-µë @  »mãj?d šú“ë»Õ @  »näj?d @šúz¬  @  »oåj?d €šú r"È @  »pæj?d Àšú¢ã5 @  »qçj?d ›ú®9ô& @  »rèj?d @›ú,¨ãø @  »séj?d €›ú»ú÷L @  »têj?d À›ú9kà’ @  »uëj?d œúd§½b @  »vìj?d @œúæ6ª¼ @  »wíj?d €œúzŸŸ @  »xîj?d Àœúø A @  »yïj?d ú‘„® @  »zðj?d @ú¹C @  »{ñj?d €ú„G­÷ @  »|òj?d ÀúÖº) @  »}ój?d žúß´ @  »~ôj?d @žú]£É @  »õj?d €žú0Þ< @  »€öj?d Àžú²O+Ç @  »÷j?d Ÿú¾•ê÷ @  »‚øj?d @Ÿú<ý) @  »ƒùj?d €Ÿú«Vé @  »„újuРú?d ÀŸú)ÇþC @  »…ûj?d  úNŽÚ @  »†üj?d X úžß™ @  »‡ýj?d ˜ úv)' @  »ˆþj?d Ø ú€ç>ù @  »‰ÿj?d ¡úæ+°v @  »Šk?d X¡údº§¨ @  »‹k?d ˜¡úóè³ @  »Œk?d Ø¡úqy¤Â @  »k?d ¢ú¨¿ªü @  »Žk?d X¢ú*.½" @  »k?d ˜¢ú&3á @  »k?d Ø¢ú™·$? @  »‘k?d £ú•må @  »’k?d X£úüòÑ @  »“ k?d ˜£ú€®æe @  »” k?d Ø£ú?ñ» @  »• k?d ¤ú_ó¬K @  »– k?d X¤úÝb»• @  »— k?d ˜¤úAË ¶ @  »˜k?d ؤúÃZh @  »™k?d ¥úªÐ¿´ @  »šk?d X¥ú(A¨j @  »›k?d ˜¥ú¿¼Þ @  »œk?d Ø¥ú=‚« @  »k?d ¦úäD¥> @  »žk?d X¦úfÕ²à @  »Ÿk?d ˜¦úFÛ“ @  » k?d ئúÄJ M @  »¡k?d §úÈÍ} @  »¢k?d X§úJÚ£ @  »£k?d ˜§úÝSÎ @  »¤k?d اú_ÂÙÉ @  »¥k?d ¨ú/¿û+ @  »¦k?d X¨ú­.ìõ @  »§k?d ˜¨ú1‡\Ö @  »¨k?d بú³K @  »©k?d ©úG+Ñ @  »ª k?d X©úźÆÖ @  »«!k?d ˜©úRèÒb @  »¬"k?d Ø©úÐyż @  »­#k?d ªú ¿Ë‚ @  »®$k?d Xªú‹.Ü\ @  »¯%k?d ˜ªúº&RŸ @  »°&k?d تú8·EA @  »±'k?d «ú4m„q @  »²(k?d X«ú¶ü“¯ @  »³)k?d ˜«ú!®‡ @  »´*k?d Ø«ú£?Å @  »µ+k?d ¬úþóÍ5 @  »¶,k?d X¬ú|bÚë @  »·-k?d ˜¬úàËjÈ @  »¸.k?d جúbZ} @  »¹/k?d ­ú ÐÞÊ @  »º0k?d X­ú‰AÉ @  »»1k?d ˜­úÝ  @  »¼2k?d Ø­úœ‚Ê~ @  »½3k?d ®úEDÄ@ @  »¾4k?d X®úÇÕÓž @  »¿5k?d ˜®úIÜ| @  »À6k?d Ø®úËMk¡ @  »Á7k?d ¯úÇ—ª‘ @  »Â8k?d X¯úE½O @  »Ã9k?d ˜¯úÒT©û @  »Ä:k?d دúPž% @  »Å;k?d °úª™¬h @  »Æk?d ذú60K @  »É?k?d ±ú2]“Z @  »Ê@k?d X±ú°Ì„„ @  »ËAk?d ˜±ú'ž0 @  »ÌBk?d رú¥‡î @  »ÍCk?d ²ú|ɉÐ @  »ÎDk?d X²úþXž @  »ÏEk?d ˜²úÏPÍ @  »ÐFk?d زúMÁ @  »ÑGk?d ³úAÆ# @  »ÒHk?d X³úÊÑý @  »ÓIk?d ˜³úTØÅI @  »ÔJk?d سúÖIÒ— @  »ÕKk?d ´ú‹…g @  »ÖLk?d X´ú ˜¹ @  »×Mk?d ˜´ú•½(š @  »ØNk?d Ø´ú,?D @  »ÙOk?d µú~¦œ˜ @  »ÚPk?d Xµúü7‹F @  »ÛQk?d ˜µúkeŸò @  »ÜRk?d صúéôˆ, @  »ÝSk?d ¶ú02† @  »ÞTk?d X¶ú²£‘Ì @  »ßUk?d ˜¶ú’­8¿ @  »àVk?d ضú–k?d ðÆú}îîú @  ¼?—k?d 0Çú­&or @  ¼@˜k?d pÇú/·x¬ @  ¼A™k?d °Çú}¬—õ @  ¼Bšk?d ðÇúÿ=€+ @  ¼C›k?d 0ÈúJ Y$ @  ¼Dœk?d pÈúȘNú @  ¼Ek?d °Èúšƒ¡£ @  ¼Fžk?d ðÈú¶} @  ¼GŸk?d 0Éú"s @  ¼H k?d pÉú  dÙ @  ¼I¡k?d °Éúò‹€ @  ¼J¢k?d ðÉúp†œ^ @  ¼K£k?d 0Êúl i @  ¼L¤k?d pÊúî˜~S @  ¼M¥k?d °Êú¼ƒ‘  @  ¼N¦k?d ðÊú>†Ô @  ¼O§k?d 0ËúQÛ&~ @  ¼P¨k?d pËúÓJ1  @  ¼Q©k?d °ËúQÞù @  ¼Rªk?d ðËúÀÉ' @  ¼S«k?d 0Ìú›Eo: @  ¼T¬k?d pÌúÔxä @  ¼U­k?d °ÌúKÏ—½ @  ¼V®k?d ðÌúÉ^€c @  ¼W¯k?d 0Íúnf|Å @  ¼X°k?d pÍúì÷k @  ¼Y±k?d °Íú¾ì„B @  ¼Z²k?d ðÍú<}“œ @  ¼[³k?d 0Îú òfO @  ¼\´k?d pÎú¢cq‘ @  ¼]µk?d °ÎúðxžÈ @  ¼^¶k?d ðÎúré‰ @  ¼_·k?d 0Ïú &  @  ¼`¸k?d pÏúŽ·Ò @  ¼a¹k?d °Ïúܬö‹ @  ¼bºk?d ðÏú^=áU @  ¼c»k?d 0Ðúa(õ @  ¼d¼k?d pÐúã¹+ @  ¼e½k?d °Ðú±¢ðr @  ¼f¾k?d ðÐú33ç¬ @  ¼g¿k?d 0Ñúùì7Ç @  ¼hÀk?d pÑú{}  @  ¼iÁk?d °Ñú)fÏ@ @  ¼jÂk?d ðÑú«÷Øž @  ¼kÃk?d 0Òú·x-M @  ¼lÄk?d pÒú5é:“ @  ¼mÅk?d °ÒúgòÕÊ @  ¼nÆk?d ðÒúåc @  ¼oÇk?d 0ÓúŠªb¾ @  ¼pÈk?d pÓú;u` @  ¼qÉk?d °ÓúZ š9 @  ¼rÊk?d ðÓúرç @  ¼sËk?d 0Ôú@4+ú @  ¼tÌk?d pÔúÂ¥<$ @  ¼uÍk?d °Ôú¾Ó} @  ¼vÎk?d ðÔú/Ä£ @  ¼wÏk?d 0Õúµ8 @  ¼xÐk?d pÕú7†/Û @  ¼yÑk?d °ÕúeÀ‚ @  ¼zÒk?d ðÕúç ×\ @  ¼{Ók?d 0Öúûƒ" @  ¼|Ôk?d pÖúy5Q @  ¼}Õk?d °Öú+ Ú @  ¼~Ök?d ðÖú©˜ÍÖ @  ¼×k?d 0×úš|o @  ¼€Øk?d p×ú—k± @  ¼Ùk?d °×úJŒ„è @  ¼‚Úk?d ð×úÈ“6 @  ¼ƒÛk?d 0Øú})J9 @  ¼„Ük?d pØúÿ¸]ç @  ¼…Ýk?d °Øú­£²¾ @  ¼†Þk?d ðØú/2¥` @  ¼‡ßk?d 0Ùú½` @  ¼ˆàk?d pÙú—,wÄ @  ¼‰ák?d °ÙúÅ7˜ @  ¼Šâk?d ðÙúG¦C @  ¼‹ãk?d 0Úú[)z @  ¼Œäk?d pÚúÙ¸mN @  ¼åk?d °Úú‹£‚ @  ¼Žæk?d ðÚú 2•É @  ¼çk?d 0Ûúfû5c @  ¼èk?d pÛúäj"½ @  ¼‘ék?d °Ûú¶qÍä @  ¼’êk?d ðÛú4àÚ: @  ¼“ëk?d 0Üú¬e|' @  ¼”ìk?d pÜú.ôkù @  ¼•ík?d °Üú|ï„  @  ¼–îk?d ðÜúþ~“~ @  ¼—ïk?d 0ÝúYFoØ @  ¼˜ðk?d pÝúÛ×x @  ¼™ñk?d °Ýú‰Ì—_ @  ¼šòk?d ðÝú ]€ @  ¼›ók?d 0ÞúÒuR @  ¼œôk?d pÞú•CbŒ @  ¼õk?d °ÞúÇXÕ @  ¼žök?d ðÞúEÉš  @  ¼Ÿ÷k?d 0ßú; @  ¼ øk?d pßú¹— Ï @  ¼¡ùk?d uÐàú/°ßúëŒå– @  ¼¢úk?d ðßúPÚ. @  ¼£ ûk?d Hàúȵ%y @  ¼¤ ük?d ˆàúè@'‡ @  ¼¥ ýk?d Èàú?Ýþ @  ¼¦ þk?d áúÈwQ @  ¼§ ÿk?d HáúÙ$C @  ¼¨ l?d ˆáú.,&½ @  ¼© l?d ÈáúÞSÜÄ @  ¼ª l?d âúC| @  ¼« l?d Hâú@M>É @  ¼¬ l?d ˆâú`¸<7 @  ¼­ l?d Èâú©› @  ¼®l?d ãúyH–s @  ¼¯l?d HãúDX­ï @  ¼°l?d ˆãúd­¯ @  ¼± l?d Èãú”ÒUh @  ¼² l?d äúœ¦g @  ¼³ l?d HäúŽÆä« @  ¼´ l?d ˆäú®3æU @  ¼µ l?d Èäú^L, @  ¼¶l?d åúŽÄ @  ¼·l?d Håú{å÷T @  ¼¸l?d ˆåú[õª @  ¼¹l?d Èåú«oÓ @  ¼ºl?d æú6+¯ @  ¼»l?d Hæú5qíÞ @  ¼¼l?d ˆæú„ï  @  ¼½l?d ÈæúåûY @  ¼¾l?d çú5³™± @  ¼¿l?d Hçú·¢ƒ @  ¼Àl?d ˆçú—Wñ @  ¼Ál?d Èçúg({ˆ @  ¼Âl?d èúS×÷• @  ¼Ãl?d HèúPµY @  ¼Äl?d ˆèúpx·§ @  ¼Ål?d Èèú€MÞ @  ¼Æl?d éúPOÁ6 @  ¼Çl?d Héú8Ÿz @  ¼È l?d ˆéúì„ @  ¼É!l?d Èéúè“gý @  ¼Ê"l?d êúu×Ç< @  ¼Ë#l?d Hêúv…ð @  ¼Ì$l?d ˆêúVx‡ @  ¼Í%l?d Èêú¦}w @  ¼Î&l?d ëúvOñŸ @  ¼Ï'l?d HëúK_Ê @  ¼Ð(l?d ˆëúkªÈý @  ¼Ñ)l?d Èëú›Õ2„ @  ¼Ò*l?d ìú‚›Á‹ @  ¼Ó+l?d HìúÁƒG @  ¼Ô,l?d ˆìú¡4¹ @  ¼Õ-l?d ÈìúQK{À @  ¼Ö.l?d íú÷( @  ¼×/l?d Híút⸠@  ¼Ø0l?d ˆíúT’F @  ¼Ù1l?d Èíú¤hh? @  ¼Ú2l?d îú9,Èþ @  ¼Û3l?d Hîú:vŠ2 @  ¼Ü4l?d ˆîúƒˆÌ @  ¼Ý5l?d Èîúêürµ @  ¼Þ6l?d ïú:´þ] @  ¼ß7l?d Hïú¢âq @  ¼à8l?d ˆïú6Wà @  ¼á9l?d ÈïúÆ(ö @  ¼â:l?d€ ðú 5ºâ @  ½;l?d Hðúî.° @  ½l?d ñú+¥?… @  ½?l?d Hñú}+¢ @  ½@l?d ˆñú]ä)\ @  ½Al?d Èñúc)Œ_ @  ½Bl?d òúþm,ž @  ½ Cl?d Hòú8~•¿ @  ½ Dl?d ˆòú‹—A @  ½ El?d Èòú-½–Õ @  ½ Fl?d óúýõ= @  ½ Gl?d Hóú£ö@; @  ½Hl?d ˆóúƒBÅ @  ½Il?d ÈóúoÙ& @  ½Jl?d ôú !*) @  ½Kl?d HôúÏ2“ @  ½Ll?d ˆôúïÇ‘ö @  ½Ml?d ÈôúÚñb @  ½Nl?d õú ¹Š @  ½Ol?d Hõú1ê$` @  ½Pl?d ˆõú&ž @  ½Ql?d Èõú/Òƒ @  ½Rl?d öú²–#\ @  ½Sl?d Höút…š} @  ½Tl?d ˆöúTp˜ƒ @  ½Ul?d ÈöúaF™ @  ½Vl?d ÷ú±ÿ @  ½Wl?d H÷úï Où @  ½Xl?d ˆ÷úÏøM @  ½Yl?d È÷úM’ñT @  ½ Zl?d øúym}I @  ½![l?d Høú¿~Äh @  ½"\l?d ˆøúŸ‹Æ– @  ½#]l?d Èøúª½Ç @  ½$^l?d ùúzõKê @  ½%_l?d HùúÜJÜ @  ½&`l?d ˆùúüäH" @  ½'al?d ÈùúÂ)í! @  ½(bl?d úú_mMà @  ½)cl?d Húú™~ôÁ @  ½*dl?d ˆúú¹‹ö? @  ½+el?d ÈúúŒ½÷« @  ½,fl?d ûú\õ{C @  ½-gl?d Hûúö!E @  ½.hl?d ˆûú"#» @  ½/il?d Èûú±o¸X @  ½0jl?d üú¨!KW @  ½1kl?d Hüún2òv @  ½2ll?d ˆüúNÇðˆ @  ½3ml?d Èüú{ññ @  ½4nl?d ýú«¹}ô @  ½5ol?d HýúêE @  ½6pl?d ˆýú°Gà @  ½7ql?d ÈýúŽÒâã @  ½8rl?d þú–B" @  ½9sl?d HþúÕ…û @  ½:tl?d ˆþúõpùý @  ½;ul?d ÈþúÀFøi @  ½<vl?d ÿút @  ½=wl?d HÿúN .‡ @  ½>xl?d ˆÿúnø,y @  ½?uÐûyl?d ÈÿúB•–¸ @  ½@zl?d û !¾I @  ½A{l?d `ûË2h @  ½B|l?d  ûëÇ– @  ½C}l?d àûÞñ @  ½D~l?d û¹ˆê @  ½El?d `ûEËÈ_ @  ½F€l?d  ûe>Ê¡ @  ½Gl?d àû[óo¢ @  ½H‚l?d ûÆ·Ïc @  ½Iƒl?d `û¤vB @  ½J„l?d  û Qt¼ @  ½K…l?d àûgu( @  ½L†l?d ûÅ/ùÀ @  ½M‡l?d `û›,£Æ @  ½Nˆl?d  û»Ù¡8 @  ½O‰l?d àû(µ:Û @  ½PŠl?d û1ûÉÔ @  ½Q‹l?d `û÷èpõ @  ½RŒl?d  û×r  @  ½Sl?d àûâ+sŸ @  ½TŽl?d û2cÿw @  ½Ul?d `û 0Ç @  ½Vl?d  û)ÅÅc @  ½W‘l?d àû`` @  ½X’l?d ûŠLÀ¡ @  ½Y“l?d `ûL_y€ @  ½Z”l?d  ûlª{~ @  ½[•l?d àûYœzê @  ½\–l?d û‰Ôö @  ½]—l?d `û×׬ @  ½^˜l?d  û÷"®ú @  ½_™l?d àûuH© @  ½`šl?d ûA·ž´ @  ½a›l?d `û‡¤'• @  ½bœl?d  û§Q%k @  ½cl?d àû’g$ÿ @  ½džl?d ûB/¨ @  ½eŸl?d ` ûäË©! @  ½f l?d   ûÄ>«ß @  ½g¡l?d à ûúóÜ @  ½h¢l?d ûg·® @  ½i£l?d ` û¡¤< @  ½j¤l?d   ûQ @  ½k¥l?d à û´gV @  ½l¦l?d ûd/˜¾ @  ½m§l?d ` û:,¸ @  ½n¨l?d   ûÙÀF @  ½o©l?d à û‰µ[¥ @  ½pªl?d ûû¨ª @  ½q«l?d ` ûVè‹ @  ½r¬l?d   ûvu @  ½s­l?d à ûC+á @  ½t®l?d û“cž  @  ½u¯l?d ` û¨0¦ã @  ½v°l?d   ûˆÅ¤ @  ½w±l?d à û¶ @  ½x²l?d û+L¡ß @  ½y³l?d `ûí_þ @  ½z´l?d  ûͪ @  ½{µl?d àûøœ” @  ½|¶l?d û(Ô—| @  ½}·l?d `ûv×Íz @  ½~¸l?d  ûV"Ï„ @  ½¹l?d àû™Et @  ½€ºl?d û'ÇùÆ @  ½»l?d `ûáÔ@ç @  ½‚¼l?d  ûÁ!B @  ½ƒ½l?d àûôC @  ½„¾l?d û$_Ïe @  ½…¿l?d `ûrëÛB @  ½†Àl?d  ûRÙ¼ @  ½‡Ál?d àûlÓ|¿ @  ½ˆÂl?d ûñ—Ü~ @  ½‰Ãl?d `û7„e_ @  ½ŠÄl?d  ûqg¡ @  ½‹Ål?d àû"Gf5 @  ½ŒÆl?d ûòêÝ @  ½Çl?d `û¬ °Û @  ½ŽÈl?d  ûŒù²% @  ½Él?d àû•)Æ @  ½Êl?d ûÛÚÉ @  ½‘Ël?d `ûÀÈcè @  ½’Ìl?d  ûà=a @  ½“Íl?d àûÕ `‚ @  ½”Îl?d ûCìj @  ½•Ïl?d `û>Ô€ @  ½–Ðl?d  ûåÖ~ @  ½—Ñl?d àû (s} @  ½˜Òl?d û½lÓ¼ @  ½™Ól?d `û{j @  ½šÔl?d  û[Šhc @  ½›Õl?d àûn¼i÷ @  ½œÖl?d û¾ôå @  ½×l?d `ûà÷¿ @  ½žØl?d  ûÀ½ç @  ½ŸÙl?d àûBh´ @  ½ Úl?d ûv—© @  ½¡Ûl?d `û°„4ˆ @  ½¢Ül?d  ûq6v @  ½£Ýl?d àû¥G7â @  ½¤Þl?d ûu»  @  ½¥ßl?d `ûÓëº< @  ½¦àl?d  ûó¸Â @  ½§ál?d àûÍÓÁ @  ½¨âl?d ûP—½ @  ½©ãl?d `û–„! @  ½ªäl?d  û¶qß @  ½«ål?d àûƒGK @  ½¬æl?d ûS‹£ @  ½­çl?d `û Ñ¥ @  ½®èl?d  û-ùÓ[ @  ½¯él?d àû¾•H¸ @  ½°êl?d û§Û»· @  ½±ël?d `ûaÈ– @  ½²ìl?d  ûA=h @  ½³íl?d àût ü @  ½´îl?d û¤C @  ½µïl?d `ûŸµþ @  ½¶ðl?d  û¿å· @  ½·ñl?d àû( @  ½¸òl?d ûl²Â @  ½¹ól?d `ûÚ ã @  ½ºôl?d  ûúŠ  @  ½»õl?d àûϼ‰ @  ½¼öl?d ûô„a @  ½½÷l?d `ûA÷Þg @  ½¾øl?d  ûaÜ™uÐ û @  ½¿ùl?d àûMofX @  ½Àúl?d 8 û @  ½Áûl?d x ûúw @  ½Âül?d ¸ ûÚ‚á @  ½Ãýl?d ø ûï´u @  ½Äþl?d 8!û?üŽ @  ½Åÿl?d x!û é›$ @  ½Æm?d ¸!û+™Ú @  ½Çm?d ø!ûÑ<Ù @  ½Èm?d 8"ûˆ•œ @  ½Ém?d x"ûN†%9 @  ½Êm?d ¸"ûns'Ç @  ½Ëm?d ø"û[E&S @  ½Ìm?d 8#û‹ ª» @  ½Ím?d x#ûÕð½ @  ½Îm?d ¸#ûõûòC @  ½Ï m?d ø#ûf—i  @  ½Ð m?d 8$ûÙš¯ @  ½Ñ m?d x$û¹Ê#Ž @  ½Ò m?d ¸$û™?!p @  ½Ó m?d ø$û¬ ä @  ½Ôm?d 8%û|A¬  @  ½Õm?d x%ûG”æ @  ½Öm?d ¸%ûgç– @  ½×m?d ø%ûY*3 @  ½Øm?d 8&ûÄn“Ú @  ½Ùm?d x&û}*û @  ½Úm?d ¸&û"ˆ( @  ½Ûm?d ø&û¾)‘ @  ½Üm?d 8'ûÇö¥y @  ½Ým?d x'û™õÿ @  ½Þm?d ¸'û¹ý @  ½ßm?d ø'û;jAÒ @  ½àm?d 8(û•ÍÏ @  ½ám?d x(ûɆtî @  ½âm?d€ ¸(û(4 @  ¾m?d ø(ûüCÈ­ @  ¾m?d 8)û, DE @  ¾m?d x)ûO¦¾ž @  ¾ m?d ¸)ûoS¼` @  ¾!m?d ø)ûŸ,F @  ¾"m?d 8*ûhæØ @  ¾#m?d x*û Ƀ @  ¾$m?d ¸*û*<} @  ¾ %m?d ø*ûÚCø @  ¾ &m?d 8+û tì @  ¾ 'm?d x+û‘AÕ @  ¾ (m?d ¸+û±´×ù @  ¾ )m?d ø+ûAË-€ @  ¾*m?d 8,ûX…Þ @  ¾+m?d x,ûý…4 @  ¾,m?d ¸,ûÝpÊ @  ¾-m?d ø,û-þ³ @  ¾.m?d 8-ûýGr[ @  ¾/m?d x-û]±\ @  ¾0m?d ¸-û#¨³¢ @  ¾1m?d ø-ûÓ×IÛ @  ¾2m?d 8.ûN“é @  ¾3m?d x.ûF2A @  ¾4m?d ¸.ûfÇ ¿ @  ¾5m?d ø.û–¸÷Æ @  ¾6m?d 8/ûFð{. @  ¾7m?d x/ûݺÚÅ @  ¾8m?d ¸/ûýOØ; @  ¾9m?d ø/û 0"B @  ¾:m?d 80û³îžð @  ¾;m?d x0ûèaû @  ¾ m?d 81û*” @  ¾#?m?d x1û”×ú^ @  ¾$@m?d ¸1û´"ø  @  ¾%Am?d ø1ûD]Ù @  ¾&Bm?d 82ûÙ¢ @  ¾'Cm?d x2ûѸDC @  ¾(Dm?d ¸2ûñMF½ @  ¾)Em?d ø2û2¼Ä @  ¾*Fm?d 83ûÑz0, @  ¾+Gm?d x3ûJ0‘Ç @  ¾,Hm?d ¸3ûjÅ“9 @  ¾-Im?d ø3ûšºi@ @  ¾.Jm?d 84ûƒôšO @  ¾/Km?d x4û&ôBô @  ¾0Lm?d ¸4û@  @  ¾1Mm?d ø4ûö~ºs @  ¾2Nm?d 85û&66› @  ¾3Om?d x5ûØ,õœ @  ¾4Pm?d ¸5ûøÙ÷b @  ¾5Qm?d ø5û¦  @  ¾6Rm?d 86û•â­Ú @  ¾7Sm?d x6ûCK @  ¾8Tm?d ¸6û½¶I @  ¾9Um?d ø6ûMɳ @  ¾:Vm?d 87û?î @  ¾;Wm?d x7ûËž @  ¾<Xm?d ¸7û&>œû @  ¾=Ym?d ø7ûÖAf‚ @  ¾>Zm?d 88ûâ¾êŸ @  ¾?[m?d x8ûø¿ @  ¾@\m?d ¸8ûØJø @  ¾A]m?d ø8û(5ë @  ¾B^m?d 89ûø}gi @  ¾C_m?d x9û›Ð² @  ¾D`m?d ¸9û»%ŸL @  ¾Eam?d ø9ûKZe5 @  ¾Fbm?d 8:ûÖÅô @  ¾Gcm?d x:ûÞ¿#¯ @  ¾Hdm?d ¸:ûþJ!Q @  ¾Iem?d ø:û5Û( @  ¾Jfm?d 8;ûÞ}WÀ @  ¾Kgm?d x;ûE7ö+ @  ¾Lhm?d ¸;ûeÂôÕ @  ¾Mim?d ø;û•½¬ @  ¾Njm?d 8<ûŒóý£ @  ¾Okm?d x<û)ó% @  ¾Plm?d ¸<û 'æ @  ¾Qmm?d ø<ûùyÝŸ @  ¾Rnm?d 8=û)1Qw @  ¾Som?d x=û×+’p @  ¾Tpm?d ¸=û÷ÞŽ @  ¾Uqm?d ø=û¡j÷ @  ¾Vrm?d 8>ûšåÊ6 @  ¾Wsm?d x>û’D,m @  ¾Xtm?d ¸>û²±.“ @  ¾Yum?d ø>ûBÎÔê @  ¾Zvm?d 8?û’†X @  ¾[wm?d x?û Ìùé @  ¾\xm?duÐ@û7 ¸?û)9û @  ¾]ym?d ø?û¤Ær @  ¾^€zm?d P@ûgjÈ. @  ¾_€{m?d @ûq" @  ¾`€|m?d Ð@ûó™5Û @  ¾a€}m?d AûQ?T” @  ¾b€~m?d PAûÓ®CJ @  ¾c€m?d Aûÿñí2 @  ¾d€€m?d ÐAû}`úì @  ¾e€m?d Bû’Ê·Š @  ¾f€‚m?d PBû[ T @  ¾g€ƒm?d BûºžS/ @  ¾h€„m?d ÐBû8Dñ @  ¾i€…m?d Cûš©%¾ @  ¾j€†m?d PCû82` @  ¾k€‡m?d Cû!†« @  ¾l€ˆm?d ÐCû£‡‘u @  ¾m€‰m?d DûÈ'Ý @  ¾n€Šm?d PDûJ¶˜ @  ¾o€‹m?d DûMÒU˜ @  ¾p€Œm?d ÐDûÏCBF @  ¾q€m?d Eûmå#  @  ¾r€Žm?d PEûït4× @  ¾s€m?d Eû³ âð @  ¾t€m?d ÐEû1›õ. @  ¾u€‘m?d FûÞ1¸H @  ¾v€’m?d PFû\ ¯– @  ¾w€“m?d Fûöe\í @  ¾x€”m?d ÐFûtôK3 @  ¾y€•m?d GûÖR*| @  ¾z€–m?d PGûTÃ=¢ @  ¾{€—m?d Gûmí‰i @  ¾|€˜m?d ÐGûï|ž· @  ¾}€™m?d Hû©mÿ  @  ¾~€šm?d PHû+üèÓ @  ¾€›m?d HûpÏ4[ @  ¾€€œm?d ÐHûò^#… @  ¾€m?d IûPøBÊ @  ¾‚€žm?d PIûÒiU @  ¾ƒ€Ÿm?d Iû ºï @  ¾„€ m?d ÐIû‘1­1 @  ¾…€¡m?d Jû~›àW @  ¾†€¢m?d PJûü ÷‰ @  ¾‡€£m?d JûVÏò @  ¾ˆ€¤m?d ÐJûÔ^, @  ¾‰€¥m?d Kûvørc @  ¾Š€¦m?d PKûôie½ @  ¾‹€§m?d KûÍGÑv @  ¾Œ€¨m?d ÐKûOÖÆ¨ @  ¾€©m?d Lû$vØ @  ¾Ž€ªm?d PLû¦çÏÞ @  ¾€«m?d Lû¡ƒE @  ¾€¬m?d ÐLû#› @  ¾‘€­m?d Mû´tÔ @  ¾’€®m?d PMû%c  @  ¾“€¯m?d Mû_[µ- @  ¾”€°m?d ÐMûÝÊ¢ó @  ¾•€±m?d Nû2`ï• @  ¾–€²m?d PNû°ñøK @  ¾—€³m?d Nû4 0 @  ¾˜€´m?d ÐNû˜¥î @  ¾™€µm?d Oû:}¡ @  ¾š€¶m?d POû¸’j @  ¾›€·m?d Oû¼Þ´ @  ¾œ€¸m?d ÐOû-Éj @  ¾€¹m?d PûϘ @  ¾ž€ºm?d PPûMŒ¡ @  ¾Ÿ€»m?d Pû[îeŠ @  ¾ €¼m?d ÐPûÙrT @  ¾¡€½m?d Qû{Ù @  ¾¢€¾m?d PQûùHÅ @  ¾£€¿m?d QûÈÑþ/ @  ¾¤€Àm?d ÐQûJ@éñ @  ¾¥€Ám?d Rû¥ê¤— @  ¾¦€Âm?d PRû'{³I @  ¾§€Ãm?d Rû¾@2 @  ¾¨€Äm?d ÐRû/Wì @  ¾©€Åm?d Sû­‰6£ @  ¾ª€Æm?d PSû/!} @  ¾«€Çm?d Sû6•¶ @  ¾¬€Èm?d ÐSû”§‚h @  ¾­€Ém?d TûÿœÀ @  ¾®€Êm?d PTû}–‹ @  ¾¯€Ëm?d TûzòF… @  ¾°€Ìm?d ÐTûøcQ[ @  ¾±€Ím?d UûZÅ0 @  ¾²€Îm?d PUûØT'Ê @  ¾³€Ïm?d Uû„*ñí @  ¾´€Ðm?d ÐUû»æ3 @  ¾µ€Ñm?d Vûé«U @  ¾¶€Òm?d PVûk€¼‹ @  ¾·€Óm?d VûÁEOð @  ¾¸€Ôm?d ÐVûCÔX. @  ¾¹€Õm?d Wûár9a @  ¾º€Öm?d PWûcã.¿ @  ¾»€×m?d WûZÍšt @  ¾¼€Øm?d ÐWûØ\ª @  ¾½€Ùm?d XûžMì @  ¾¾€Úm?d PXûÜûÎ @  ¾¿€Ûm?d Xû¤¹w @  ¾À€Üm?d ÐXû&(© @  ¾Á€Ým?d Yû„Žaæ @  ¾€Þm?d PYûv8 @  ¾Àßm?d YûÇ֙à @  ¾Ä€àm?d ÐYûEGŽ @  ¾Å€ám?d ZûªíÃ{ @  ¾Æ€âm?d PZû(|Ô¥ @  ¾Ç€ãm?d Zû‚¹'Þ @  ¾È€äm?d ÐZû(0 @  ¾É€åm?d [û¢ŽQO @  ¾Ê€æm?d P[û F‘ @  ¾Ë€çm?d [û1òZ @  ¾Ì€èm?d Ð[û› å„ @  ¾Í€ém?d \ûðû, @  ¾΀êm?d P\ûr‘ìò @  ¾Ï€ëm?d \ûuõ!i @  ¾Ѐìm?d Ð\û÷d6· @  ¾Ñ€ím?d ]ûUÂWø @  ¾Ò€îm?d P]û×S@& @  ¾Ó€ïm?d ]û‹-– @  ¾Ô€ðm?d Ð]û ¼ß @  ¾Õ€ñm?d ^ûæ̹ @  ¾Ö€òm?d P^ûd‡Ûg @  ¾×€óm?d ^ûÎB( @  ¾Ø€ôm?d Ð^ûLÓ? @  ¾Ù€õm?d _ûîu^ @  ¾Ú€öm?d P_ûläIS @  ¾Û€÷m?d _ûUÊý˜ @  ¾uÐ`ûÜ€øm?d Ð_ûªÛ™: @  ¾Ýùm?d (`ûfÍÁ @  ¾Þúm?d h`ûä\ÖÛ @  ¾ßûm?d ¨`ûò><ð @  ¾àüm?d è`ûp¯+. @  ¾áým?d (aûÒ Ja @  ¾âþm?d€ haû$[A @  ¿ÿm?d ¨aû$Ça @  ¿n?d èaû¦‘п @  ¿n?d (bûŒrf4 @  ¿n?d hbûãqê @  ¿n?d ¨bûj”Ýë @  ¿n?d èbûèÊ5 @  ¿n?d (cû„ô @  ¿n?d hcû€ãÞ @  ¿ n?d ¨cûúç¬ø @  ¿ n?d ècûxv»& @  ¿  n?d (dûÖŸ^c @  ¿  n?d hdûTI½ @  ¿  n?d ¨dû0yå¼ @  ¿ n?d èdû²èòb @  ¿ n?d (eûs]ò· @  ¿n?d heûñÌåi @  ¿n?d ¨eûhûÈ£ @  ¿n?d èeûêjß} @  ¿n?d (fûÀ‰iö @  ¿n?d hfûB~( @  ¿n?d ¨fû&oÒ) @  ¿n?d èfû¤þÅ÷ @  ¿n?d (gûÈêû @  ¿n?d hgûJ{ì @  ¿n?d ¨gû¶£: @  ¿n?d ègû4´ä @  ¿n?d (hû·Õ.³ @  ¿n?d hhû5D9m @  ¿n?d ¨hûQ3•l @  ¿n?d èhûÓ¢‚² @  ¿n?d (iû¥× @  ¿ n?d hiû€²  @  ¿!n?d ¨iû…¦ @  ¿" n?d èiû‘±Á @  ¿#!n?d (jû-rJ @  ¿$"n?d hjû¯ã” @  ¿%#n?d ¨jûË”¼• @  ¿&$n?d èjûI«K @  ¿'%n?d (kû%•~ @  ¿(&n?d hkû§€‚  @  ¿)'n?d ¨kû[ç͆ @  ¿*(n?d èkûÙvÚX @  ¿+)n?d (lûwŸ? @  ¿,*n?d hlûõ(à @  ¿-+n?d ¨lû‘y„ @  ¿.,n?d èlûè“ @  ¿/-n?d (mûÒ]“É @  ¿0.n?d hmûPÌ„ @  ¿1/n?d ¨mûÉû©Ý @  ¿20n?d èmûKj¾ @  ¿31n?d (nûa‰ˆ @  ¿42n?d hnûãV @  ¿53n?d ¨nû‡o³W @  ¿64n?d ènûþ¤‰ @  ¿75n?d (oûiêš¼ @  ¿86n?d hoûë{b @  ¿97n?d ¨oûÂD @  ¿:8n?d èoû•Õš @  ¿;9n?d (pûœôb @  ¿<:n?d hpûeh¼ @  ¿=;n?d ¨pûzĽ @  ¿>n?d hqû¦åJ @  ¿A?n?d ¨qûðväM @  ¿B@n?d èqûrçó“ @  ¿CAn?d (rûXE @  ¿DBn?d hrûÚ•RÆ @  ¿ECn?d ¨rû¾âþÇ @  ¿FDn?d èrûüQ @  ¿SQn?d (vûÿJÚ @  ¿TRn?d hvû–n] @  ¿USn?d ¨vûòñ @  ¿VTn?d èvûpˆæÛ @  ¿WUn?d (wûœØî @  ¿XVn?d hwûž Ï0 @  ¿YWn?d ¨wûbj€ @  ¿ZXn?d èwûàû—È @  ¿[Yn?d (xûc£ Ÿ @  ¿\Zn?d hxûá2A @  ¿][n?d ¨xû…E¶@ @  ¿^\n?d èxûÔ¡ž @  ¿_]n?d (yû×g†û @  ¿`^n?d hyûUö‘% @  ¿a_n?d ¨yûQv…3 @  ¿b`n?d èyûÓç’í @  ¿can?d (zûù$f @  ¿dbn?d hzû{•3¸ @  ¿ecn?d ¨zû⟹ @  ¿fdn?d èzûsˆg @  ¿gen?d ({ûñg¶R @  ¿hfn?d h{ûsö¡Œ @  ¿ign?d ¨{û‘îª @  ¿jhn?d è{û ùt @  ¿kin?d (|û£é1 @  ¿ljn?d h|û!x ï @  ¿mkn?d ¨|ûE§î @  ¿nln?d è|ûÇž°0 @  ¿omn?d (}û+°å @  ¿pnn?d h}û„º§; @  ¿qon?d ¨}ûŠñ @  ¿rpn?d è}ûŸ/ @  ¿sqn?d (~ûµÿ+¤ @  ¿trn?d h~û7n^ @  ¿Ø Ön?d €—û+^<  @  ¿Ù ×n?d À—ûu]f¦ @  ¿Ú Øn?d ˜ûA¢ê» @  ¿Û Ùn?d @˜ût”ë/ @  ¿Ü Ún?d €˜ûTaéÑ @  ¿Ý Ûn?d À˜û’rPð @  ¿Þ Ün?d ™ûB:Ü @  ¿ß Ýn?d @™ûÀP`K @  ¿à Þn?d €™ûà¥bµ @  ¿á ßn?d À™ûFAcƒ @  ¿â àn?d€ šûµ‹w @  À án?d @šûaüHÊ @  À ân?d €šûA J4 @  À ãn?d ÀšûBSø @  À än?d ›û’„ @  À ån?d @›ûbd~i @  À æn?d €›ûB‘|— @  À çn?d À›ûÒ yë @  À èn?d œûËnŠä @  À én?d @œû;p @  À ên?d €œûärc @  À ën?d Àœû¾0¯ @  À ìn?d ûÈö¼G @  À ín?d @û8‰F> @  À în?d €û|DÀ @  À ïn?d Àû@<° @  À ðn?d žûÝx½q @  À ñn?d @žû-G @  À òn?d €žû òEö @  À ón?d Àžû¨: @  À ôn?d ŸûÞà‹Ò @  À õn?d @Ÿû.Ÿq« @  À ön?d €ŸûjsU @  À ÷nuРû?d ÀŸûžÛv) @  À øn?d  ûïШO @  À ùn?d X û¯R6 @  À ún?d ˜ û?ZPÈ @  À ûn?d Ø û< @  À ün?d ¡ûìHžì @  À ýn?d X¡û7d• @  À þn?d ˜¡û<Âfk @  À ÿn?d Ø¡ûzÂ5ø @  À o?d ¢û熕9 @  À! o?d X¢ûùo@ @  À" o?d ˜¢û7 m¾ @  À# o?d Ø¢û4V/r @  À$ o?d £û䣚 @  À% o?d X£ûaYã @  À& o?d ˜£û4”[ @  À' o?d Ø£û¤%^a @  À( o?d ¤û½k­n @  À)  o?d X¤ûMW @  À*  o?d ˜¤ûmáUé @  À+  o?d ؤûn»% @  À,  o?d ¥û¾ó›Í @  À-  o?d X¥ûNŒa´ @  À. o?d ˜¥ûnycJ @  À/ o?d Ø¥û69:: @  À0 o?d ¦û«}šû @  À1 o?d X¦û[`‚ @  À2 o?d ˜¦û{÷b| @  À3 o?d ئûx­ ° @  À4 o?d §û¨å¬X @  À5 o?d X§ûXšV! @  À6 o?d ˜§ûxoTß @  À7 o?d اûèÞQ£ @  À8 o?d ¨ûÜ!ݾ @  À9 o?d X¨û,^'Ç @  À: o?d ˜¨û «%9 @  À; o?d بûñgõ @  À< o?d ©ûß¹ë @  À= o?d X©û/Æd @  À> o?d ˜©û3š @  À? o?d Ø©ûuÅR @  À@  o?d ªûèòÕ @  ÀA !o?d Xªûþ¬ @  ÀB "o?d ˜ªû8 R @  ÀC #o?d تû;QHž @  ÀD $o?d «ûëÄv @  ÀE %o?d X«ûf> @  ÀF &o?d ˜«û;“<ñ @  ÀG 'o?d Ø«û«"9 @  ÀH (o?d ¬û²lÊ‚ @  ÀI )o?d X¬ûB0û @  ÀJ *o?d ˜¬ûbæ2 @  ÀK +o?d جûa¼pÉ @  ÀL ,o?d ­û±ôü! @  ÀM -o?d X­ûA‹X @  ÀN .o?d ˜­ûa~¦ @  ÀO /o?d Ø­û9>]Ö @  ÀP 0o?d ®û¤zý @  ÀQ 1o?d X®ûTn @  ÀR 2o?d ˜®ûtð @  ÀS 3o?d Ø®ûwªG\ @  ÀT 4o?d ¯û§âË´ @  ÀU 5o?d X¯ûW1Í @  ÀV 6o?d ˜¯ûwh33 @  ÀW 7o?d دûçÙ6O @  ÀX 8o?d °ûYŠý @  ÀY 9o?d X°û©xp„ @  ÀZ :o?d ˜°û‰rz @  À[ ;o?d ذûŠ×0¶ @  À\ o?d ˜±ûŠDÙ @  À_ ?o?d رû®´Ô @  À` @o?d ²û3ð¶ @  Àa Ao?d X²ûÃLl @  Àb Bo?d ˜²ûãzN’ @  Àc Co?d زûà ^ @  Àd Do?d ³û0h€¶ @  Àe Eo?d X³ûÀzÏ @  Àf Fo?d ˜³ûàâx1 @  Àg Go?d سûpS}M @  Àh Ho?d ´ûiŽB @  Ài Io?d X´û™bt; @  Àj Jo?d ˜´û¹—vÅ @  Àk Ko?d Ø´ûºÍ4  @  Àl Lo?d µûj…¸á @  Àm Mo?d XµûšúB˜ @  Àn No?d ˜µûº@f @  Ào Oo?d صûâO @  Àp Po?d ¶û ¹× @  Àq Qo?d X¶ûtC® @  Àr Ro?d ˜¶û¯AP @  Às So?d ضû¬Ûœ @  Àt To?d ·û|“t @  Àu Uo?d X·ûŒìu  @  Àv Vo?d ˜·û¬wó @  Àw Wo?d Ø·û<¨r @  Àx Xo?d ¸ûWþ’ @  Ày Yo?d X¸ûø(ë @  Àz Zo?d ˜¸ûØÝ @  À{ [o?d ظûÛ‡DÙ @  À| \o?d ¹û ÏÈ1 @  À} ]o?d X¹ûû°2H @  À~ ^o?d ˜¹ûÛE0¶ @  À _o?d عûBåA  @  À€ `o?d ºûß¡áÈ @  À ao?d Xºû/Þ± @  À‚ bo?d ˜ºû+O @  Àƒ co?d غû q[ƒ @  À„ do?d »ûÜ9×k @  À… eo?d X»û,F- @  À† fo?d ˜»û ³/ì @  À‡ go?d Ø»ûœ* @  Àˆ ho?d ¼û…LÙŸ @  À‰ io?d X¼ûu3#æ @  ÀŠ jo?d ˜¼ûUÆ! @  À‹ ko?d ؼûVœcÔ @  ÀŒ lo?d ½û†Ôï< @  À mo?d X½ûv«E @  ÀŽ no?d ˜½ûV^» @  À oo?d ؽûNË @  À po?d ¾û“Zî  @  À‘ qo?d X¾ûc%s @  À’ ro?d ˜¾ûCÐ @  À“ so?d ؾû@ŠTA @  À” to?d ¿ûÂØ© @  À• uo?d X¿û`½"Ð @  À– vo?d ˜¿û@H . @uÐÀû  À— wo?d Ø¿ûÐù%R @  À˜ xo?d 0Àû´ t @  À™ yo?d pÀûDvŽy @  Àš zo?d °ÀûdƒŒ‡ @  À› {o?d ðÀûgÙÎK @  Àœ |o?d 0Áû·‘B£ @  À }o?d pÁûGî¸Ú @  Àž ~o?d °Áûgº$ @  ÀŸ o?d ðÁû^|¼» @  À  €o?d 0ÂûÃ8z @  À¡ o?d pÂû3Gæ @  À¢ ‚o?d °Âû²äý @  À£ ƒo?d ðÂûè¦1 @  À¤ „o?d 0ÃûÀ *Ù @  À¥ …o?d pÃû0ßР @  À¦ †o?d °Ãû*Ò^ @  À§ ‡o?d ðÃû€›×" @  À¨ ˆo?d 0Äû™Õ$- @  À© ‰o?d pÄûiªÞT @  Àª Šo?d °ÄûI_ܪ @  À« ‹o?d ðÄûJžf @  À¬ Œo?d 0ÅûšMŽ @  À­ o?d pÅûj2è÷ @  À® Žo?d °ÅûJÇê  @  À¯ o?d ðÅû‡³y @  À° o?d 0Æûø @  À± ‘o?d pÆû¼éÁ @  À² ’o?d °Æû_Ië? @  À³ “o?d ðÆû\©ó @  À´ ”o?d 0ÇûŒ[% @  Àµ •o?d pÇû|$ßb @  À¶ –o?d °Çû\ÑÝœ @  À· —o?d ðÇûÌ`Øà @  À¸ ˜o?d 0ÈûøŸTý @  À¹ ™o?d pÈû஄ @  Àº šo?d °Èû(¬z @  À» ›o?d ðÈû+Oî¶ @  À¼ œo?d 0Éûûb^ @  À½ o?d pÉû x˜' @  À¾ žo?d °Éû+šÙ @  À¿ Ÿo?d ðÉûQ{ÛW @  ÀÀ  o?d 0ÊûÌ?{– @  ÀÁ ¡o?d pÊû<@ï @  À ¢o?d °Êûµƒ @  Àà £o?d ðÊûïÁÝ @  ÀÄ ¤o?d 0ËûϧM5 @  ÀÅ ¥o?d pËû?Ø·L @  ÀÆ ¦o?d °Ëû-µ² @  ÀÇ §o?d ðËûœ°Î @  ÀÈ ¨o?d 0Ìû–ÒCÁ @  ÀÉ ©o?d pÌûf­¹¸ @  ÀÊ ªo?d °ÌûFX»F @  ÀË «o?d ðÌûEùŠ @  ÀÌ ¬o?d 0Íû•Jub @  ÀÍ ­o?d pÍûe5 @  ÀÎ ®o?d °ÍûEÀå @  ÀÏ ¯o?d ðÍû€Ô• @  ÀÐ °o?d 0Îû€ÄtT @  ÀÑ ±o?d pÎûp»Ž- @  ÀÒ ²o?d °ÎûPNŒÓ @  ÀÓ ³o?d ðÎûSÎ @  ÀÔ ´o?d 0Ïûƒ\B÷ @  ÀÕ µo?d pÏûs#¸Ž @  ÀÖ ¶o?d °ÏûSÖºp @  À× ·o?d ðÏûÃg¿  @  ÀØ ¸o?d 0Ðû}¹¾ @  ÀÙ ¹o?d pÐûÆùÇ @  ÀÚ ºo?d °Ðû­3û9 @  ÀÛ »o?d ðÐû®i¹õ @  ÀÜ ¼o?d 0Ñû~!5 @  ÀÝ ½o?d pÑûŽ^Ïd @  ÀÞ ¾o?d °Ñû®«Íš @  Àß ¿o?d ðÑûŠ Ÿ— @  Àà Ào?d 0ÒûN?V @  Àá Áo?d pÒûç1Å/ @  Àâ Âo?d€ °Òû³Ûw @  Á Ão?d ðÒûQÑ’ @  Á Äo?d 0ÓûT]z @  Á Åo?d pÓû´b\î @  Á Æo?d °Óû”—^ @  Á Ço?d ðÓûÊ” @  Á Èo?d 0ÔûÓÚ÷ @  Á Éo?d pÔûíR @  Á Êo?d °ÔûÍâPä @  Á Ëo?d ðÔû ñéÅ @  Á Ìo?d 0ÕûÛ¹e- @  Á Ío?d pÕûîd¹ @  Á Îo?d °ÕûÎzfG @  Á Ïo?d ðÕûõ)^­ @  Á Ðo?d 0Öûhmþl @  Á Ño?d pÖûûe @  Á Òo?d °ÖûÛôgq @  Á Óo?d ðÖûçÞP @  Á Ôo?d 0×ûͯR¸ @  Á Õo?d p×ûø™S, @  Á Öo?d °×ûØlQÒ @  Á ×o?d ð×û†o Ô @  Á Øo?d 0Øû²‡É @  Á Ùo?d pØûŒ]"Ê @  Á Úo?d °Øû¬¨ 4 @  Á Ûo?d ðØûj»™ @  Á Üo?d 0Ùûºóý @  Á Ýo?d pÙûÅi @  Á Þo?d °Ùû¯0— @  Á ßo?d ðÙû Ô¡ @  Á ào?d 0Úû”·` @  Á áo?d pÚûú 3 @  Á âo?d °Úû6 Í @  Á! ão?d ðÚûð°ì @  Á" äo?d 0Ûû T< @  Á# åo?d pÛûb= @  Á$ æo?d °Ûû5—?n @  Á% ço?d ðÛûk”eh @  Á& èo?d 0ÜûrÚ–g @  Á' éo?d pÜûL3d @  Á( êo?d °Üûlâ1š @  Á) ëo?d ðÜûªñˆ» @  Á* ìo?d 0Ýûz¹S @  Á+ ío?d pÝûOÇ @  Á, îo?d °Ýûoz9 @  Á- ïo?d ðÝûT)?Ó @  Á. ðo?d 0ÞûÉmŸ @  Á/ ño?d pÞûZñ @  Á0 òo?d °Þûzô @  Á1 óo?d ðÞû¼ç¿. @  Á2 ôo?d 0ßûl¯3Æ @  Á3 õo?d pßûY™2R @  Á4 öo?d uÐàû/°ßûyl0¬ @  Á5 ÷o?d ðßû'ojª @  Á6 øo?d Hàû>Ë4\ @  Á7 ùo?d ˆàû¢b„ @  Á8 úo?d Èàû ó“¡ @  Á9 ûo?d áû´9±¶ @  Á: üo?d Háû6¨¦h @  Á; ýo?d ˆáû¡ú²Ü @  Á< þo?d Èáû#k¥ @  Á= ÿo?d âûñ.! @  Á> p?d Hâûs¿6Ê @  Á? p?d ˆâûý¶™+ @  Á@ p?d Èâû'Žõ @  ÁA p?d ãûëí¬â @  ÁB p?d Hãûi|»< @  ÁC p?d ˆãûþ.¯ˆ @  ÁD p?d Èãû|¿¸V @  ÁE p?d äû¹c @  ÁF p?d Häû;ò_ @  ÁG  p?d ˆäû§[¡| @  ÁH  p?d Èäû%ʶ¢ @  ÁI  p?d åû±”µ @  ÁJ  p?d Håû3‘ƒk @  ÁK  p?d ˆåû¤Ã—ß @  ÁL p?d Èåû&R€ @  ÁM p?d æûÔô @  ÁN p?d Hæû€E* @  ÁO p?d ˆæû±M–é @  ÁP p?d Èæû3Ü7 @  ÁQ p?d çû§£  @  ÁR p?d Hçû%‡´þ @  ÁS p?d ˆçû²Õ J @  ÁT p?d Èçû0D·” @  ÁU p?d èûØ)vQ @  ÁV p?d HèûZ¸a @  ÁW p?d ˆèûÆѬ @  ÁX p?d ÈèûD€Ær @  ÁY p?d éûÐJäe @  ÁZ p?d HéûRÛó» @  Á[ p?d ˆéûʼnç @  Á\ p?d ÈéûGðÑ @  Á] p?d êûþ)Fø @  Á^  p?d Hêû|¸Q& @  Á_ !p?d ˆêû\¶øU @  Á` "p?d ÈêûÞ'ï‹ @  Áa #p?d ëûJíÍœ @  Áb $p?d HëûÈ|ÚB @  Ác %p?d ˆëû_.Îö @  Ád &p?d ÈëûÝ¿Ù( @  Áe 'p?d ìûcgÿ @  Áf (p?d Hìûšòp! @  Ág )p?d ˆìû[À @  Áh *p?d Èìû„Ê×Ü @  Ái +p?d íûõË @  Áj ,p?d Híû’‘â @  Ák -p?d ˆíûÃö¡ @  Ál .p?d Èíû‡Rá @  Ám /p?d îû£ÔnŠ @  Án 0p?d Hîû!EyT @  Áo 1p?d ˆîûM÷— @  Áp 2p?d Èîû’ÜàI @  Áq 3p?d ïûÂ^ @  Ár 4p?d Hïû„‡Õ€ @  Ás 5p?d ˆïûÕÁ4 @  Át 6p?d Èïû‘DÖê @  Áu 7p?d ðûó'€ @  Áv 8p?d Hðûq™0^ @  Áw 9p?d ˆðûí0€} @  Áx :p?d Èðûo¡—£ @  Áy ;p?d ñûûkµ´ @  Áz p?d Èñûl9¡ @  Á} ?p?d òû%X8 @  Á~ @p?d Hòû§Éæ @  Á Ap?d ˆòûÊ–Š6 @  Á€ Bp?d ÈòûHè @  Á Cp?d óûÜÍ¿ÿ @  Á‚ Dp?d Hóû^\¨! @  Áƒ Ep?d ˆóûɼ• @  Á„ Fp?d ÈóûKŸ«K @  Á… Gp?d ôûŽCœ @  Á† Hp?d Hôû ÒB @  Á‡ Ip?d ˆôû{²a @  Áˆ Jp?d Èôû꥿ @  Á‰ Kp?d õû† ‡¨ @  ÁŠ Lp?d Hõû±v @  Á‹ Mp?d ˆõû“ã„ @  ÁŒ Np?d Èõûr“ @  Á Op?d öû5ôé @  ÁŽ Pp?d Höû·e 7 @  Á Qp?d ˆöû†m…ô @  Á Rp?d Èöûü’* @  Á‘ Sp?d ÷û6°= @  Á’ Tp?d H÷û§§ã @  Á“ Up?d ˆ÷û…õ³W @  Á” Vp?d È÷ûd¤‰ @  Á• Wp?d øûï eL @  Á– Xp?d Høûm˜r’ @  Á— Yp?d ˆøûñ1± @  Á˜ Zp?d Èøûs Õo @  Á™ [p?d ùûçj÷x @  Áš \p?d Hùûeûঠ@  Á› ]p?d ˆùûò©ô @  Áœ ^p?d Èùûp8ãÌ @  Á _p?d úûÉ Uå @  Áž `p?d HúûK˜B; @  ÁŸ ap?d ˆúûk–ëH @  Á  bp?d Èúûéü– @  Á¡ cp?d ûû}ÍÞ @  Á¢ dp?d Hûûÿ\É_ @  Á£ ep?d ˆûûhÝë @  Á¤ fp?d ÈûûêŸÊ5 @  Á¥ gp?d üû/Ctâ @  Á¦ hp?d Hüû­Òc< @  Á§ ip?d ˆüû1{Ó @  Á¨ jp?d Èüû³êÄÁ @  Á© kp?d ýû' æÖ @  Áª lp?d Hýû¥±ñ @  Á« mp?d ˆýû2ãå¼ @  Á¬ np?d Èýû°ròb @  Á­ op?d þû”ô}— @  Á® pp?d HþûejI @  Á¯ qp?d ˆþû'mäŠ @  Á° rp?d Èþû¥üóT @  Á± sp?d ÿû16ÑC @  Á² tp?d Hÿû³§Æ @  Á³ up?d ˆÿû$õÒ) @  Á´ uÐüvp?d Èÿû¦dÅ÷ @  Áµ wp?d üO0š± @  Á¶ xp?d `üÍ¡o @  Á· yp?d  üQ=L @  Á¸ zp?d àüÓ™*’ @  Á¹ {p?d üGS… @  Áº |p?d `üÅÂ[ @  Á» }p?d  üR ï @  Á¼ ~p?d àüÐ1 @  Á½ p?d ü„¦ë› @  Á¾ €p?d `ü7üE @  Á¿ p?d  üˆ>S¤ @  ÁÀ ‚p?d àü ¯Dz @  ÁÁ ƒp?d üžefm @  Á „p?d `üôq³ @  Áà …p?d  ü‹¦e @  ÁÄ †p?d àü 7rÙ @  ÁÅ ‡p?d üÌëÌ @  ÁÆ ˆp?d `üNzÛÐ @  ÁÇ ‰p?d  üÒÓkó @  ÁÈ Šp?d àüPB|- @  ÁÉ ‹p?d üĈ^: @  ÁÊ Œp?d `üFIä @  ÁË p?d  üÑK]P @  ÁÌ Žp?d àüSÚJŽ @  ÁÍ p?d üw\Å{ @  ÁÎ p?d `üõÍÒ¥ @  ÁÏ ‘p?d  üÄÅ\f @  ÁÐ ’p?d àüFTK¸ @  ÁÑ “p?d üÒži¯ @  ÁÒ ”p?d `üP~q @  ÁÓ •p?d  üÇ]jÅ @  ÁÔ –p?d àüEÌ} @  ÁÕ —p?d ü­¡¼Þ @  ÁÖ ˜p?d `ü/0« @  Á× ™p?d  ü³™# @  ÁØ šp?d àü1 ý @  ÁÙ ›p?d ü¥Â.ê @  ÁÚ œp?d ` ü'S94 @  ÁÛ p?d   ü°-€ @  ÁÜ žp?d à ü2:^ @  ÁÝ Ÿp?d ü‹¡Œw @  ÁÞ  p?d ` ü 0›© @  Áß ¡p?d   ü)>2Ú @  Áà ¢p?d à ü«¯% @  Áá £p?d ü?e @  Áâ ¤p?d€ ` ü|³çÍ @  Â ¥p?d   ü  »P @  Â ¦p?d à üˆ1¬Ž @  Â §p?d üˆ¤é´ @  Â ¨p?d ` ü 5þj @  Â ©p?d   üX.3 @  Â ªp?d à üÚ¿í @  Â «p?d ü€Ç{€ @  Â ¬p?d ` üVl^ @  Â ­p?d   üPMƒ @  Â ®p?d à üÒܔ٠@  Â ¯p?d ü3àÁ @  Â °p?d `ü±‚÷ @  Â ±p?d  üã™F @  Â ²p?d àüa˜ @  Â ³p?d ü–ÑL @  Â ´p?d `ü@[Ë @  Â µp?d  üF[´’ @  Â ¶p?d àüÄÊ£L @  Â ·p?d ücÏ©Ë @  Â ¸p?d `üá^¾ @  Â ¹p?d  ü³EQL @  Â ºp?d àü1ÔF’ @  Â »p?d ük¬;ÿ @  Â ¼p?d `üé=,! @  Â ½p?d  ü»&Ãx @  Â ¾p?d àü9·Ô¦ @  Â ¿p?d üµŸŒs @  Â Àp?d `ü7›­ @  Â Áp?d  üetô @  Â Âp?d àüç„c* @  Â Ãp?d ü[ @  Â Äp?d `üƒÊÉ @  Â! Åp?d  üÑÑÿ @  Â" Æp?d àüS@èN @  Â# Çp?d üSÕ­t @  Â$ Èp?d `üÑDºª @  Â% Ép?d  üƒ_Uó @  Â& Êp?d àüÎB- @  Â' Ëp?d ü[¶?@ @  Â( Ìp?d `üÙ'(ž @  Â) Íp?d  ü‹<ÇÇ @  Â* Îp?d àü ­Ð @  Â+ Ïp?d üèb¤ @  Â, Ðp?d `üjó³ß @  Â- Ñp?d  ü8è\† @  Â. Òp?d àüºyKX @  Â/ Óp?d üM Õ @  Â0 Ôp?d `üÏ1  @  Â1 Õp?d  ü*ðR @  Â2 Öp?d àü»çŒ @  Â3 ×p?d ü2ŸÝ¤ @  Â4 Øp?d `ü°Êz @  Â5 Ùp?d  üâ%# @  Â6 Úp?d àü`„2ý @  Â7 Ûp?d ü:üO @  Â8 Üp?d `ü¸mXN @  Â9 Ýp?d  üêv· @  Â: Þp?d àühç É @  Â; ßp?d üŸí  @  Â< àp?d `ü–úÓ @  Â= áp?d  üÄŠ @  Â> âp?d àüF„T @  Â? ãp?d ü\`û @  Â@ äp?d `üŒÍw% @  ÂA åp?d  üÞÖ˜| @  ÂB æp?d àü\G¢ @  ÂC çp?d ü\Òʘ @  ÂD èp?d `üÞCÝF @  ÂE ép?d  üŒX2 @  ÂF êp?d àüÉ%Á @  ÂG ëp?d üT±X¬ @  ÂH ìp?d `üÖ Or @  ÂI íp?d  ü„; + @  ÂJ îp?d àüª·õ @  ÂK ïp?d üçeÃí @  ÂL ðp?d `üeôÔ3 @  ÂM ñp?d  ü7ï;j @  ÂN òp?d àüµ~,´ @  ÂO óp?d üB§o9 @  ÂP ôp?d `üÀ6xç @  ÂQ õp?d  ü’-—¾uÐ ü @  ÂR öp?d àü){\µ @  ÂS÷p?d 8 üA«4æ @  ÂTøp?d x üÃ:#8 @  ÂUùp?d ¸ ü‘!Ìa @  ÂVúp?d ø ü°Û¿ @  ÂWûp?d 8!üIȦÒ @  ÂXüp?d x!üËY±  @  ÂYýp?d ¸!ü™B^U @  ÂZþp?d ø!üÓI‹ @  Â[ÿp?d 8"üõZÀ @  Â\q?d x"üwË @  Â]q?d ¸"ü%ÐèG @  Â^q?d ø"ü§Aÿ™ @  Â_q?d 8#üAž›¤ @  Â`q?d x#üÃŒz @  Âaq?d ¸#ü‘c# @  Âbq?d ø#ü…tý @  Âcq?d 8$ü1Ç @  Âdq?d x$ü‘& @  Âe q?d ¸$üÚÉ@ @  Âf q?d ø$üA Þž @  Âg q?d 8%üs£ó @  Âh q?d x%ü™â´- @  Âi q?d ¸%üËù[t @  Âjq?d ø%üIhLª @  Âkq?d 8&ü¨§8² @  Âlq?d x&ü*6/l @  Âmq?d ¸&üx-À5 @  Ânq?d ø&üú¼×ë @  Âoq?d 8'ü e”f @  Âpq?d x'üôƒ¸ @  Âqq?d ¸'üÝïlá @  Ârq?d ø'ü_~{? @  Âsq?d 8(ürZA @  Âtq?d x(üðËVÉ @  Âuq?d ¸(ü¢Ð¹ @  Âvq?d ø(ü A®N @  Âwq?d 8)üz9Ó# @  Âxq?d x)üø¨Äý @  Âyq?d ¸)üª³+¤ @  Âzq?d ø)ü("H@ @  Â’€6q?d ø/üί_ž @  Â“€7q?d 80üiªU @  Â”€8q?d x0üë;BÇ @  Â•€9q?d ¸0ü¹ ­ž @  Â–€:q?d ø0ü;±º@ @  Â—€;q?d 81üaÉÇ- @  Â˜€q?d ø1ü3Ò(t @  Â›€?q?d 82ü¿úp¡ @  Âœ€@q?d x2ü=kg @  Â€Aq?d ¸2üopˆ& @  Âž€Bq?d ø2üíáŸø @  ÂŸ€Cq?d 83ü >ûÅ @  Â €Dq?d x3ü‰¯ì @  Â¡€Eq?d ¸3üÛ´B @  Â¢€Fq?d ø3üY%œ @  Â£€Gq?d 84üY°Q¦ @  Â¤€Hq?d x4üÛ!Fx @  Â¥€Iq?d ¸4ü‰:©! @  Â¦€Jq?d ø4ü «¾ÿ @  Â§€Kq?d 85üQÓÃ’ @  Â¨€Lq?d x5üÓBÔL @  Â©€Mq?d ¸5üY; @  Âª€Nq?d ø5üÈ,Ë @  Â«€Oq?d 86üâXÓ @  Â¬€Pq?d x6ü`–O  @  Â­€Qq?d ¸6ü2 T @  Â®€Rq?d ø6ü°·Š @  Â¯€Sq?d 87üGÅô @  Â°€Tq?d x7üÅTãÙ @  Â±€Uq?d ¸7ü—O € @  Â²€Vq?d ø7üÞ^ @  Â³€Wq?d 88ü8ú!v @  Â´€Xq?d x8üºk6¨ @  Âµ€Yq?d ¸8üèpÙñ @  Â¶€Zq?d ø8üjáÎ/ @  Â·€[q?d 89ü0™³B @  Â¸€\q?d x9ü²¤œ @  Â¹€]q?d ¸9üàKÅ @  Âº€^q?d ø9üb‚\ @  Â»€_q?d 8:üúß @  Â¼€`q?d x:üœk @  Â½€aq?d ¸:üÎpéX @  Â¾€bq?d ø:üLáþ† @  Â¿€cq?d 8;ü9œ) @  ÂÀ€dq?d x;ü†¨‹÷ @  ÂÁ€eq?d ¸;üÔ³d® @  Â€fq?d ø;üV"sp @  ÂÀgq?d 8<üV·6J @  ÂÄ€hq?d x<üÔ&!” @  ÂÅ€iq?d ¸<ü†=ÎÍ @  ÂÆ€jq?d ø<ü¬Ù @  ÂÇ€kq?d 8=ü^Ô¤~ @  ÂÈ€lq?d x=üÜE³  @  ÂÉ€mq?d ¸=üŽ^\ù @  ÂÊ€nq?d ø=ü ÏK' @  ÂË€oq?d 8>üí?? @  ÂÌ€pq?d x>üo‘(á @  ÂÍ€qq?d ¸>ü=ŠÇ¸ @  Â΀rq?d ø>ü¿Ðf @  ÂÏ€sq?d 8?üH“ë @  ÂЀtq?d x?üÊS„5 @  ÂÑ€uq?duÐ@ü7 ¸?ü˜Hkl @  ÂÒ€vq?d ø?ü^žÓ @  ÂÓ wq?d P@ü„éß @  ÂÔ xq?d @ü¤Ýì @  ÂÕ yq?d Ð@üTc'• @  ÂÖ zq?d Aü„+«} @  Â× {q?d PAüŒŠM& @  ÂØ |q?d Aü¬OØ @  ÂÙ }q?d ÐAü\µ¡ @  ÂÚ ~q?d BüÁD` @  ÂÛ q?d PBüO®8 @  ÂÜ €q?d BüoЬÆ @  ÂÝ q?d ÐBüŸõV¿ @  ÂÞ ‚q?d CüO½ÚW @  Âß ƒq?d PCüû»%\ @  Âà „q?d CüÛN'¢ @  Âá …q?d ÐCü+1ÝÛ @  Ââ †q?d€ DüF¼2r @  Ã ‡q?d PDü<·Û° @  Ã ˆq?d DüBÙN @  Ã ‰q?d ÐDü)tØÚ @  Ã Šq?d Eüù¨  @  Ã šq?d Iü˜v$â @  Ã ›q?d PIü^eà @  Ã œq?d Iü~Ÿ= @  Ã q?d ÐIü@]:> @  Ã žq?d JüÝšÿ @  Ã Ÿq?d PJü{ý›É @  Ã  q?d Jü[™7 @  Ã ¡q?d ÐJün>˜£ @  Ã ¢q?d Kü¾vK @  Ã £q?d PKüxe­j @  Ã ¤q?d KüX¯” @  Ã ¥q?d ÐKüÚúÇ @  Ã ¦q?d LüôàÈ @  Ã! §q?d PLü·ºÎ @  Ã" ¨q?d Lü½B¸0 @  Ã# ©q?d ÐLüˆt¹¤ @  Ã$ ªq?d MüX<5L @  Ã% «q?d PMüž/Œm @  Ã& ¬q?d Mü¾ÚŽ“ @  Ã' ­q?d ÐMü€+ @  Ã( ®q?d NüS‹Q @  Ã) ¯q?d PNü&³» @  Ã* °q?d Nüõ±E @  Ã+ ±q?d ÐNü3ðÑ @  Ã, ²q?d Oüã‹<9 @  Ã- ³q?d POü%˜… @  Ã. ´q?d Oüm‡æ @  Ã/ µq?d ÐOü– @  Ã0 ¶q?d Pü(ß · @  Ã1 ·q?d PPüvÜú± @  Ã2 ¸q?d PüV)øO @  Ã3 ¹q?d ÐPücùÛ @  Ã4 ºq?d Qü³Wu3 @  Ã5 »q?d PQüuDÌ @  Ã6 ¼q?d QüU±Îì @  Ã7 ½q?d ÐQük|kï @  Ã8 ¾q?d Rüö8Ë. @  Ã9 ¿q?d PRü Œß  @  Ã: Àq?d Rü€yÝ÷ @  Ã; Áq?d ÐRüµOÜc @  Ã< Âq?d SüeP‹ @  Ã= Ãq?d PSü£éª @  Ã> Äq?d SüƒáëT @  Ã? Åq?d ÐSü¯ŒQ• @  Ã@ Æq?d Tü¶Â¢š @  ÃA Çq?d PTüèÁøœ @  ÃB Èq?d TüÈ4úb @  ÃC Éq?d ÐTüýûö @  ÃD Êq?d Uü-Jw @  ÃE Ëq?d PUüëYÎ? @  ÃF Ìq?d UüˬÌÁ @  ÃG Íq?d ÐUüõai @  ÃH Îq?d Vüh%É @  ÃI Ïq?d PVüSvñé @  ÃJ Ðq?d Vüsƒó @  ÃK Ñq?d ÐVüFµòƒ @  ÃL Òq?d Wü–ý~k @  ÃM Óq?d PWüPîÇJ @  ÃN Ôq?d WüpÅ´ @  ÃO Õq?d ÐWüãw^W @  ÃP Öq?d Xü׈ÒJ @  ÃQ ×q?d PXü‰‹ˆL @  ÃR Øq?d Xü©~в @  ÃS Ùq?d ÐXüœH‹& @  ÃT Úq?d YüLÎ @  ÃU Ûq?d PYüоï @  ÃV Üq?d Yüªæ¼ @  ÃW Ýq?d ÐYü”+ @  ÃX Þq?d Zü o¹Ó @  ÃY ßq?d PZü¯‹¸å @  ÃZ àq?d Zü~º @  Ã[ áq?d ÐZüºH» @  Ã\ âq?d [üj7g @  Ã] ãq?d P[ü¬ŽF @  Ã^ äq?d [üŒæŒ¸ @  Ã_ åq?d Ð[üŒ0ë @  Ã` æq?d \üÂÃä @  Ãa çq?d P\üIÁ™â @  Ãb èq?d \üi4› @  Ãc éq?d Ð\ü\šˆ @  Ãd êq?d ]üŒJ` @  Ãe ëq?d P]üJY¯A @  Ãf ìq?d ]üj¬­¿ @  Ãg íq?d Ð]üTa¼ @  Ãh îq?d ^üÉ%¨} @  Ãi ïq?d P^üòv— @  Ãj ðq?d ^üÒƒ’i @  Ãk ñq?d Ð^ü絓ý @  Ãl òq?d _ü7ý @  Ãm óq?d P_üñî¦4 @  Ãn ôq?d _üÑ¤Ê @  ÃuÐ`üo õq?d Ð_ü{°ãü @  Ãpöq?d (`üÅHVd @  Ãq÷q?d h`ü›K b @  Ãrøq?d ¨`ü»¾œ @  Ãsùq?d è`üŽˆ @  Ãtúq?d (aü^Àƒà @  Ãuûq?d haü˜Ó:Á @  Ãvüq?d ¨aü¸&8? @  Ãwýq?d èaü†ë< @  Ãxþq?d (bü¯=ý @  Ãyÿq?d hbü˜a @  Ãzr?d ¨bü½mŸ @  Ã{r?d èbüˆ[  @  Ã|r?d (cüX’ã @  Ã}r?d hcüž+ @  Ã~r?d ¨cü¾õ)< @  Ãr?d ècüqΣÌ @  Ã€r?d (düh€Pà @  Ãr?d hdü6ƒ Å @  Ã‚r?d ¨düv; @  Ãƒ r?d èdü#@ ¯ @  Ã„ r?d (eüó…G @  Ã… r?d heü5˜ @  Ã‡ r?d èeü+#›› @  Ãˆr?d (fü¶g;Z @  Ã‰r?d hfü4° @  ÃŠr?d ¨fü­ÁN @  Ã‹r?d èfü˜÷Ú @  ÃŒr?d (güH¿Œ2 @  Ãr?d hgüެ5 @  ÃŽr?d ¨gü®Y7í @  Ãr?d ègü=5¬ @  Ãr?d (hü Ê  @  Ã‘r?d hhüWÉz @  Ã’r?d ¨hüw @  Ã#r?d hkürQ| @  Ãž$r?d ¨küR¤~á @  ÃŸ%r?d èküÐβ @  Ã &r?d (lüÉ€1½ @  Ã¡'r?d hlü—ƒk» @  Ã¢(r?d ¨lü·viE @  Ã£)r?d èlü‚@hÑ @  Ã¤*r?d (müRä9 @  Ã¥+r?d hmü”] @  Ã¦,r?d ¨mü´î_æ @  Ã§-r?d èmüŠ#úå @  Ã¨.r?d (nügZ$ @  Ã©/r?d hnü,4bÎ @  Ãª0r?d ¨nü Á`0 @  Ã«1r?d ènü9÷a¤ @  Ã¬2r?d (oüé¿íL @  Ã­3r?d hoü/¬Tm @  Ã®4r?d ¨oüYV“ @  Ã¯5r?d èoüœ5Íp @  Ã°6r?d (pü"ëq @  Ã±7r?d hpü|è+Ä @  Ã²8r?d ¨pü\): @  Ã³9r?d èpüi+(® @  Ã´:r?d (qü¹c¤F @  Ãµ;r?d hqüpg @  Ã¶r?d (rüü [ @  Ã¹?r?d hrüª¸| @  Ãº@r?d ¨rüŠM ‚ @  Ã»Ar?d èrü¿{  @  Ã¼Br?d (süo3þ @  Ã½Cr?d hsü© 8ß @  Ã¾Dr?d ¨sü‰Õ:! @  Ã¿Er?d èsü¥¸€à @  ÃÀFr?d (tü¼ösï @  ÃÁGr?d htüâõ)é @  ÃÂHr?d ¨tüÂ+ @  ÃÃIr?d ètü÷6*ƒ @  ÃÄJr?d (uü'~¦k @  ÃÅKr?d huüámJ @  ÃÆLr?d ¨uüÁ˜´ @  ÃÇMr?d èuüÿU¸· @  ÃÈNr?d (vübv @  ÃÉOr?d hvüYB œ @  ÃÊPr?d ¨vüy·"b @  ÃËQr?d èvüL#ö @  ÃÌRr?d (wüœÉ¯ @  ÃÍSr?d hwüZÚ? @  ÃÎTr?d ¨wüz/Á @  ÃÏUr?d èwüéC" @  ÃÐVr?d (xüݼ? @  ÃÑWr?d hxüƒ¿Y9 @  ÃÒXr?d ¨xü£J[Ç @  ÃÓYr?d èxü–|ZS @  ÃÔZr?d (yüF4Ö» @  ÃÕ[r?d hyü€'oš @  ÃÖ\r?d ¨yü Òmd @  Ã×]r?d èyüžÈg @  ÃØ^r?d (zü[h¦ @  ÃÙ_r?d hzü¥¿i @  ÃÚ`r?d ¨zü…Jkn @  ÃÛar?d èzü°|jú @  ÃÜbr?d ({ü`4æ @  ÃÝcr?d h{ü¦'_3 @  ÃÞdr?d ¨{ü†Ò]Í @  Ãßer?d è{ü¸áž @  Ãàfr?d (|üö‘ @  Ãágr?d h|üCõH— @  Ãâhr?d€ ¨|üåVâÐ @  Äir?d è|ü1!«m @  Äjr?d (}üái'… @  Äkr?d h}üâ3eI @  Älr?d ¨}üÂÆg· @  Ämr?d è}ü2¹Î @  Änr?d (~ü¯ý= @  Äor?d h~üZZŸ @  Äpr?d ¨~üzéXa @  Ä qr?d è~üŠ–¢ @  Ä rr?d (üZÞ.ð @  Ä sr?d hüY„l< @  Ä tr?d ¨üuЀü'yqn @  Ä ur?d èü‰”» @  Ävr?d @€üç°vÏ @  Äwr?d €€üxÄXs @  Äxr?d À€üúUO­ @  Äyr?d üXó.â @  Äzr?d @üÚb9< @  Ä{r?d €ü{\nÐ @  Ä|r?d ÀüùÍy @  Ä}r?d ‚üg4h @  Ä~r?d @‚ü”ö#¶ @  Är?d €‚ü³R)Y @  Ä€r?d À‚ü1Ã>‡ @  Är?d ƒü“e_È @  Ä‚r?d @ƒüôH @  Äƒr?d €ƒü°Êú @  Ä„r?d Àƒü2[$ @  Ä…r?d „üYûŒ @  Ä†r?d @„üÛjR @  Ä‡r?d €„üU^ @  Ä ˆr?d À„ü׉€ @  Ä!‰r?d …üu/~Ï @  Ä"Šr?d @…ü÷¾i @  Ä#‹r?d €…üV€>ý @  Ä$Œr?d À…üÔ)# @  Ä%r?d †ü;»dE @  Ä&Žr?d @†ü¹*s› @  Ä'r?d €†üî¯+ @  Ä(r?d À†ül>õ @  Ä)‘r?d ‡üΘwº @  Ä*’r?d @‡üL `d @  Ä+“r?d €‡üí77ˆ @  Ä,”r?d À‡üo¦ V @  Ä-•r?d ˆü)·Aì @  Ä.–r?d @ˆü«&V2 @  Ä/—r?d €ˆü4RxŽ @  Ä0˜r?d Àˆü¶ÃoP @  Ä1™r?d ‰üe @  Ä2šr?d @‰ü–ôÁ @  Ä3›r?d €‰ü7ÊN- @  Ä4œr?d À‰üµ[Yó @  Ä5r?d ŠüZñ• @  Ä6žr?d @ŠüØ`K @  Ä7Ÿr?d €ŠüRH' @  Ä8 r?d ÀŠüÃ_ù @  Ä9¡r?d ‹ü2e>¶ @  Ä:¢r?d @‹ü°ô)h @  Ä;£r?d €‹üÊ~„ @  Ä<¤r?d À‹ü“[iZ @  Ä=¥r?d Œüøûwò @  Ä>¦r?d @Œüzj`, @  Ä?§r?d €ŒüZo² @  Ä@¨r?d ÀŒüØŽxl @  ÄA©r?d üz(# @  ÄBªr?d @üø¹ý @  ÄC«r?d €üY‡Y @  ÄD¬r?d ÀüÛNÏ @  ÄE­r?d Žü4¼© @  ÄF®r?d @Žü¶-w @  ÄG¯r?d €Žüá¨fÇ @  ÄH°r?d ÀŽüc9q @  ÄI±r?d üÁŸV @  ÄJ²r?d @üCˆ @  ÄK³r?d €üâ0Pd @  ÄL´r?d Àü`¡Gº @  ÄMµr?d ü¬‘¯ @  ÄN¶r?d @ü.q @  ÄO·r?d €ü±t/Í @  ÄP¸r?d Àü3å8 @  ÄQ¹r?d ‘ü‘CY\ @  ÄRºr?d @‘üÒN‚ @  ÄS»r?d €‘ü²ìn @  ÄT¼r?d À‘ü0}° @  ÄU½r?d ’üß×CÖ @  ÄV¾r?d @’ü]FT @  ÄW¿r?d €’üg$ u @  ÄXÀr?d À’ü嵫 @  ÄYÁr?d “üG|ä @  ÄZÂr?d @“üÅ‚k: @  Ä[Ãr?d €“üd¼<Ö @  Ä\Är?d À“üæ-+ @  Ä]År?d ”ü5  @  Ä^Ær?d @”ü"~ @  Ä_Çr?d €”ün+r @  Ä`Èr?d À”üÿ<¬ @  ÄaÉr?d •ü¡Y]ã @  ÄbÊr?d @•ü#ÈJ= @  ÄcËr?d €•ü‚öÑ @  ÄdÌr?d À•üg  @  ÄeÍr?d –üïÍGi @  ÄfÎr?d @–üm\P· @  ÄgÏr?d €–ü:Ù" @  ÄhÐr?d À–ü¸H5Ù @  ÄiÑr?d —üîT– @  ÄjÒr?d @—ü˜CH @  ÄkÓr?d €—ü9A¤ @  ÄlÔr?d À—ü»Ðz @  ÄmÕr?d ˜üýÁbÀ @  ÄnÖr?d @˜üPu @  Äo×r?d €˜üà$[¢ @  ÄpØr?d À˜übµL| @  ÄqÙr?d ™üÀ-3 @  ÄrÚr?d @™üB‚:í @  ÄsÛr?d €™üã¼m @  ÄtÜr?d À™üa-zß @  ÄuÝr?d šüއ7¹ @  ÄvÞr?d @šü  g @  Äwßr?d €šüÆ$k  @  Äxàr?d ÀšüDµ|Õ @  Äyár?d ›üæš @  Äzâr?d @›üd‚ D @  Ä{ãr?d €›üż]¨ @  Ä|är?d À›üG-Jv @  Ä}år?d œü,TÞ @  Ä~ær?d @œü®C @  Äçr?d €œüm?|¯ @  Ä€èr?d Àœüï®kq @  Äér?d üM > @  Ä‚êr?d @üÏ™à @  Äƒër?d €ün§J  @  Ä„ìr?d Àüì6]Ò @  Ä…ír?d žüœ´ @  Ä†îr?d @žü j @  Ä‡ïr?d €žüÖˆuÚ @  Äˆðr?d ÀžüTb @  Ä‰ñr?d Ÿüö¿K @  ÄŠòr?d @Ÿüt.• @  Ä‹ór?d €ŸüÕCy @  ÄŒôruРü?d ÀŸüWT§ @  Äõr?d  üTdgf @  ÄŽör?d X üÖõp¸ @  Ä÷r?d ˜ üI^ @  Äør?d Ø üËIÚ @  Ä‘ùr?d ¡üi¶(• @  Ä’úr?d X¡üë'?K @  Ä“ûr?d ˜¡üJh§ @  Ä”ür?d Ø¡üȈy @  Ä•ýr?d ¢ü'"2 @  Ä–þr?d X¢ü¥³%Á @  Ä—ÿr?d ˜¢üýpz" @  Ä˜s?d Ø¢üámü @  Ä™s?d £üÝG ³ @  Äšs?d X£ü_Öm @  Ä›s?d ˜£üþèL @  Äœs?d Ø£ü|y[_ @  Äs?d ¤üÙE÷ @  Äžs?d X¤ü•HR) @  ÄŸs?d ˜¤ü:[% @  Ä s?d ؤü™«Lû @  Ä¡ s?d ¥ü; -´ @  Ä¢ s?d X¥ü¹œ:j @  Ä£ s?d ˜¥ü¢m† @  Ä¤ s?d Ø¥üš3zX @  Ä¥ s?d ¦üu™7> @  Ä¦s?d X¦ü÷ à @  Ä§s?d ˜¦ü RP @  Ä¨s?d ئü"EŽ @  Ä©s?d §ü€º$Á @  Äªs?d X§ü+3 @  Ä«s?d ˜§ü£dó @  Ä¬s?d اü!„s- @  Ä­s?d ¨üg•— @  Ä®s?d X¨üåI @  Ä¯s?d ˜¨üzp+õ @  Ä°s?d بüøá<+ @  Ä±s?d ©üZG]d @  Ä²s?d X©üØÖJº @  Ä³s?d ˜©üyèV @  Ä´s?d Ø©üûy ˆ @  Äµs?d ªüÓGî @  Ä¶s?d Xªü–BP0 @  Ä·s?d ˜ªü\p\ @  Ä¸ s?d تüÞá ‚ @  Ä¹!s?d «ü|GmÍ @  Äº"s?d X«üþÖz @  Ä»#s?d ˜«ü_è-ÿ @  Ä¼$s?d Ø«üÝy:! @  Ä½%s?d ¬ü¶Ù$‰ @  Ä¾&s?d X¬ü4H3W @  Ä¿'s?d ˜¬ü=<É @  ÄÀ(s?d جü–¬+ @  ÄÁ)s?d ­ü4 JX @  ÄÂ*s?d X­ü¶›]† @  ÄÃ+s?d ˜­ü¥ j @  ÄÄ,s?d Ø­ü•4´ @  ÄÅ-s?d ®üzžPÒ @  ÄÆ.s?d X®üøG  @  ÄÇ/s?d ˜®ü¯Š5¼ @  ÄÈ0s?d Ø®ü-"b @  ÄÉ1s?d ¯ü½C- @  ÄÊ2s?d X¯ü ,Tó @  ÄË3s?d ˜¯ü¬ @  ÄÌ4s?d دü.ƒÁ @  ÄÍ5s?d °üâ³EÔ @  ÄÎ6s?d X°ü`"R  @  ÄÏ7s?d ˜°üÿV|¶ @  ÄÐ8s?d ذü}Çkh @  ÄÑ9s?d ±üßa ' @  ÄÒ:s?d X±ü]ðù @  ÄÓ;s?d ˜±üüÎJ @  ÄÔs?d X²üds @  Ä×?s?d ˜²ü)Y @  ÄØ@s?d زü«—NÐ @  ÄÙAs?d ³ü 1/Ÿ @  ÄÚBs?d X³ü‹ 8A @  ÄÛCs?d ˜³ü*žo­ @  ÄÜDs?d سü¨xs @  ÄÝEs?d ´üïfÛ @  ÄÞFs?d X´üA>q @  ÄßGs?d ˜´üÏLx  @  ÄàHs?d Ø´üMÝo× @  ÄáIs?d µüï{˜ @  ÄâJs?d€ Xµü)à @  ÅKs?d ˜µüYV% @  ÅLs?d صüÛÇ û @  ÅMs?d ¶üñ$»p @  ÅNs?d X¶üsµ¬® @  ÅOs?d ˜¶üê‚d @  ÅPs?d ضüh–º @  ÅQs?d ·ü¨ @  ÅRs?d X·ü†–¿Q @  Å Ss?d ˜·üâáP @  Å Ts?d Ø·ü`pŽ @  Å Us?d ¸üã(žÙ @  Å Vs?d X¸üa¹‰ @  Å Ws?d ˜¸üÞÆ! @  ÅXs?d ظüOÑÿ @  ÅYs?d ¹üÞúÑ* @  ÅZs?d X¹ü\kÆô @  Å[s?d ˜¹ü8jõ @  Å\s?d عüº}+ @  Å]s?d ºünË  @  Å^s?d XºüÿÜ~ @  Å_s?d ˜ºüÈh @  Å`s?d غü”îß¶ @  Åas?d »üøúრ@  Åbs?d X»üzkö] @  Åcs?d ˜»üZ\ @  Åds?d Ø»üœM‚ @  Åes?d ¼ü2d¨Ç @  Åfs?d X¼ü°õ¿ @  Ågs?d ˜¼üL’ð? @  Åhs?d ؼüÎçá @  Åis?d ½ü°À„ @  Å js?d X½üœ!×Z @  Å!ks?d ˜½üøV{[ @  Å"ls?d ؽüzÇl… @  Å#ms?d ¾üP$Ú @  Å$ns?d X¾üÒµÍÐ @  Å%os?d ˜¾üK‚à @  Å&ps?d ؾüÉ÷Ä @  Å'qs?d ¿ü¥Éñ @  Å(rs?d X¿ü'–Þ/ @  Å)ss?d ˜¿üCár. @uÐÀü  Å*ts?d Ø¿ü¼ðŒ @  Å+€us?d 0Àüo§Q” @  Å,€vs?d pÀüí6FJ @  Å-€ws?d °ÀüQ l @  Å.€xs?d ðÀü“À² @  Å/€ys?d 0ÁüRug @  Å0€zs?d pÁüÐä ¹ @  Å1€{s?d °Áü´“¥¸ @  Å2€|s?d ðÁü6²f @  Å3€}s?d 0Âüáí @  Å4€~s?d pÂüžp3 @  Å5€s?d °ÂüwfF¦ @  Å6€€s?d ðÂüõ÷Qx @  Å7€s?d 0Ãü™ãoM @  Å8€‚s?d pÃürx“ @  Å9€ƒs?d °ÃüÔ’ @  Å:€„s?d ðÃüý”ÃL @  Å;€…s?d 0ÄüS}&  @  Å<€†s?d pÄüÑì1× @  Å=€‡s?d °Äü-‹~ñ @  Å>€ˆs?d ðÄü¯i/ @  Å?€‰s?d 0ÅüÑ®HØ @  Å@€Šs?d pÅüS?_ @  ÅA€‹s?d °Åü7Hó @  ÅB€Œs?d ðÅüµÙäÙ @  ÅC€s?d 0ÆüŸ:RR @  ÅD€Žs?d pÆü«EŒ @  ÅE€s?d °Æü„œhF @  ÅF€s?d ðÆü ˜ @  ÅG€‘s?d 0ÇüjA­ @  ÅH€’s?d pÇüèˆVs @  ÅI€“s?d °ÇüŒÿúr @  ÅJ€”s?d ðÇüní¬ @  ÅK€•s?d 0Èü6wû @  ÅL€–s?d pÈü§`% @  ÅM€—s?d °ÈüóÀ/ @  ÅN€˜s?d ðÈüqQ8Ý @  ÅO€™s?d 0Éü°ä8 @  ÅP€šs?d pÉü2u/Ö @  ÅQ€›s?d °ÉüVƒ× @  ÅR€œs?d ðÉüÔ“”  @  ÅS€s?d 0Êüþp"‚ @  ÅT€žs?d pÊü|á5\ @  ÅU€Ÿs?d °Êüxa!J @  ÅV€ s?d ðÊüúð6” @  ÅW€¡s?d 0Ëü–ä¡ @  ÅX€¢s?d pËüu @  ÅY€£s?d °Ëüp³~ @  ÅZ€¤s?d ðËüò“¤  @  Å[€¥s?d 0Ìü\zAå @  Å\€¦s?d pÌüÞëV; @  Å]€§s?d °Ìü"Œ @  Å^€¨s?d ðÌü Ã @  Å_€©s?d 0Íüp®)¦ @  Å`€ªs?d pÍüò?>x @  Åa€«s?d °Íü–H’y @  Åb€¬s?d ðÍüÙ…§ @  Åc€­s?d 0Îü>:3, @  Åd€®s?d pÎü¼«$ò @  Åe€¯s?d °Îü%œ 8 @  Åf€°s?d ðÎü§ æ @  Åg€±s?d 0ÏüË Ó @  Åh€²s?d pÏüIˆ7  @  Åi€³s?d °Ïü-ÿ›  @  Åj€´s?d ðÏü¯nŒÒ @  Åk€µs?d 0Ðü¦&* @  Ål€¶s?d pÐü$†1ô @  Åm€·s?d °ÐüØá~Ò @  Ån€¸s?d ðÐüZpi  @  Åo€¹s?d 0Ñü›ÅiÙ @  Åp€ºs?d pÑüT~ @  Åq€»s?d °Ñü}#Ò @  År€¼s?d ðÑüÿ²ÅØ @  Ås€½s?d 0ÒüÕQsS @  Åt€¾s?d pÒüWÀd @  Åu€¿s?d °Òü£eŠ @  Åv€Às?d ðÒü!rT @  Åw€Ás?d 0ÓüM•La @  Åx€Âs?d pÓüÏ[¿ @  Åy€Ãs?d °Óü«s÷¾ @  Åz€Äs?d ðÓü)âà` @  Å{€Ås?d 0Ôü‡ % @  Å|€Æs?d pÔüšû @  Å}€Çs?d °Ôüùý]Ý @  Å~€Ès?d ðÔü{lJ @  Å€És?d 0ÕüæŽ[Å @  Å€€Ês?d pÕüdL @  Å€Ës?d °Õühà @  Å‚€Ìs?d ðÕü‚ù÷Ä @  Åƒ€Ís?d 0Öü¨AO @  Å„€Îs?d pÖü*‹V‘ @  Å…€Ïs?d °Öü³¼{[ @  Å†€Ðs?d ðÖü1-l… @  Å‡€Ñs?d 0×ü]9R° @  Åˆ€Òs?d p×üߨEn @  Å‰€Ós?d °×ü»ßéo @  ÅŠ€Ôs?d ð×ü9Nþ± @  Å‹€Õs?d 0Øüºdæ @  ÅŒ€Ös?d pØü8‡s8 @  Å€×s?d °ØüÄà< @  ÅŽ€Øs?d ðØüFq+À @  Å€Ùs?d 0Ùü‡Ä+ @  Å€Ús?d pÙüU<Ë @  Å‘€Ûs?d °Ùüa"Ê @  Å’€Üs?d ðÙü㳇 @  Å“€Ýs?d 0ÚüÉP1Ÿ @  Å”€Þs?d pÚüKÁ&A @  Å•€ßs?d °ÚüOA2W @  Å–€às?d ðÚüÍÐ%‰ @  Å—€ás?d 0Ûü¡Ä¼ @  Å˜€âs?d pÛü#U b @  Å™€ãs?d °ÛüG" c @  Åš€äs?d ðÛüų·½ @  Å›€ås?d 0ÜükZRø @  Åœ€æs?d pÜüéËE& @  Å€çs?d °Üü¬  @  Åž€ès?d ðÜü—=Þ @  ÅŸ€és?d 0ÝüGŽ:» @  Å €ês?d pÝüÅ-e @  Å¡€ës?d °Ýü¡hd @  Å¢€ìs?d ðÝü#ù–º @  Å£€ís?d 0Þü  1 @  Å¤€îs?d pÞü‹‹7ï @  Å¥€ïs?d °Þü¼% @  Å¦€ðs?d ðÞü- û @  Å§€ñs?d 0ßüü93Î @  Å¨€òs?d pßü~¨$ @  Å©€ós?d uÐàü/°ßü߈ @  Åª€ôs?d ðßüåÎì³ @  Å«õs?d HàüKͤ @  Å¬ös?d ˆàük8¦ñ @  Å­÷s?d Èàü5;ü÷ @  Å®øs?d áüåsp @  Å¯ùs?d Háüvëü @  Å°ús?d ˆáüVêé @  Å±ûs?d ÈáüùP# @  Å²üs?d âü ½ðâ @  Å³ýs?d Hâü8‹ñv @  Å´þs?d ˆâü~óˆ @  Åµÿs?d ÈâübÙ§ @  Å¶t?d ãüÀ*UO @  Å·t?d HãüþçðL @  Å¸t?d ˆãüÞò² @  Å¹t?d ÈãüK“ @  Åºt?d äüO¸œ @  Å»t?d Häü4y¹ @  Å¼t?d ˆäüŒ»ö @  Å½t?d ÈäüJáð @  Å¾t?d åüšÇm @  Å¿ t?d Håü¶ª×Ù @  ÅÀ t?d ˆåü–_Õ' @  ÅÁ t?d ÈåüPLl @  Å t?d æüÍÌÇ @  Åà t?d Hæüø>ÍS @  ÅÄt?d ˆæüØËÏ­ @  ÅÅt?d Èæüã˜÷G @  ÅÆt?d çü3Ð{¯ @  ÅÇt?d Hçü Þ¬ @  ÅÈt?d ˆçü-èÜR @  ÅÉt?d Èçüëûes @  ÅÊt?d èüßén @  ÅËt?d Hèüê2èú @  ÅÌt?d ˆèüÊÇê @  ÅÍt?d Èèü”İ @  ÅÎt?d éüDŒ<ê @  ÅÏt?d Héü×à§  @  ÅÐt?d ˆéü÷¥÷ @  ÅÑt?d Èéü1Ö @  ÅÒt?d êü¬B¼ @  ÅÓt?d Hêü™t½ƒ @  ÅÔt?d ˆêü¹¿} @  ÅÕt?d Èêüe¾K @  ÅÖ t?d ëüÏ-2£ @  Å×!t?d Hëüñà—  @  ÅØ"t?d ˆëüÑ•^ @  ÅÙ#t?d Èëü, @  ÅÚ$t?d ìüHßp @  ÅÛ%t?d Hìü;~Þä @  ÅÜ&t?d ˆìü‹Ü @  ÅÝ't?d ÈìüEˆ† @  ÅÞ(t?d íü•À ô @  Åß)t?d Híüª¶§ @  Åà*t?d ˆíü7_´Y @  Åá+t?d ÈíüñL x @  Åâ,t?d€ îü­OZ¹ @  Æ-t?d Hîüy8 @  Æ.t?d ˆîüYÍú @  Æ/t?d Èîü§×Òý @  Æ0t?d ïüwŸ^ @  Æ1t?d Hïü‡à¤l @  Æ2t?d ˆïü§¦’ @  Æ3t?d Èïü¯´@É @  Æ4t?d ðüjü{ @  Æ 5t?d Hðüá @  Æ 6t?d ˆðüÁàü @  Æ 7t?d ÈðüZª¥ @  Æ 8t?d ñüŠâ)ÿ @  Æ 9t?d HñüzÓ† @  Æ:t?d ˆñüZhÑx @  Æ;t?d Èñüÿh à @  Æt?d ˆòü²¦Q… @  Æ?t?d Èòü![¾O @  Æ@t?d óüñ2§ @  ÆAt?d HóülÈÞ @  ÆBt?d ˆóü!™Ê  @  ÆCt?d Èóü)8,{ @  ÆDt?d ôü0vßt @  ÆEt?d HôüÀ %  @  ÆFt?d ˆôüàü'ó @  ÆGt?d Èôü{¶† @  ÆHt?d õü«þ ð @  ÆIt?d Hõü[ð‰ @  ÆJt?d ˆõü{tòw @  ÆKt?d ÈõüÏr | @  Æ Lt?d öüR6­½ @  Æ!Mt?d Höü¢IWÄ @  Æ"Nt?d ˆöü‚¼U: @  Æ#Ot?d Èöü|¦–= @  Æ$Pt?d ÷ü¬îÕ @  Æ%Qt?d H÷ü\‘ଠ@  Æ&Rt?d ˆ÷ü|dâR @  Æ'St?d È÷ütÅ  @  Æ(Tt?d øü@:ˆ @  Æ)Ut?d Høü°Erm @  Æ*Vt?d ˆøü°p“ @  Æ+Wt?d Èøü úÑx @  Æ,Xt?d ùüÛ²] @  Æ-Yt?d Hùü+ͧé @  Æ.Zt?d ˆùü 8¥ @  Æ/[t?d Èùü®8}¬ @  Æ0\t?d úü3|Ým @  Æ1]t?d HúüÃ' @  Æ2^t?d ˆúüãö%ê @  Æ3_t?d Èúü€[ß1 @  Æ4`t?d ûüPSÙ @  Æ5at?d Hûü l©  @  Æ6bt?d ˆûü€™«^ @  Æ7ct?d Èûüˆ8M @  Æ8dt?d üü‘v¾  @  Æ9et?d Hüüa Ds @  Æ:ft?d ˆüüAüF @  Æ;gt?d ÈüüÚ¶çf @  Æ<ht?d ýü þkŽ @  Æ=it?d Hýüú‘÷ @  Æ>jt?d ˆýüÚt“  @  Æ?kt?d ÈýüÀuj @  Æ@lt?d þü]1ÊQ @  ÆAmt?d Hþü­N0( @  ÆBnt?d ˆþü»2Ö @  ÆCot?d Èþüs¡ñÑ @  ÆDpt?d ÿü£é}9 @  ÆEqt?d HÿüS–‡@ @  ÆFrt?d ˆÿüsc…¾ @  ÆGuÐýst?d Èÿü{Âcå @  ÆHtt?d ý4vK @  ÆIut?d `ýÄ ±m @  ÆJvt?d  ýäü³“ @  ÆKwt?d àý¶x @  ÆLxt?d ý¯þž @  ÆMyt?d `ý_dé @  ÆNzt?d  ýtf @  ÆO{t?d àýÚt¾¬ @  ÆP|t?d ýG0m @  ÆQ}t?d `ý·Oä @  ÆR~t?d  ý—ºæê @  ÆSt?d àý]² @  ÆT€t?d ýÉÉÑZ @  ÆUt?d `ý9¶+# @  ÆV‚t?d  ýC)Ý @  ÆWƒt?d àýâφ @  ÆX„t?d ý¬<‰ @  ÆY…t?d `ýøÓÆð @  ÆZ†t?d  ýØ&Ä @  Æ[‡t?d àýCleå @  Æ\ˆt?d ý“$é  @  Æ]‰t?d `ýc[t @  Æ^Št?d  ýC®Š @  Æ_‹t?d àý÷¨î @  Æ`Œt?d ýjìN@ @  Æat?d `ýš“´9 @  ÆbŽt?d  ýºf¶Ç @  Æct?d àýD|uÀ @  Ædt?d ý”4ù( @  Æe‘t?d `ýdKQ @  Æf’t?d  ýD¾¯ @  Æg“t?d àýLçô @  Æh”t?d ýxàké @  Æi•t?d `ýˆŸ‘ @  Æj–t?d  ý¨j“n @  Æk—t?d àý3 2… @  Æl˜t?d ýãh¾m @  Æm™t?d ` ýD @  Ænšt?d   ý3âFê @  Æo›t?d à ý–âžQ @  Æpœt?d ý ¦> @  Æqt?d ` ýûÙÄé @  Æržt?d   ýÛ,Æ @  ÆsŸt?d à ý¸<Ì @  Æt t?d ýhɰ$ @  Æu¡t?d ` ý˜¶J] @  Æv¢t?d   ý¸CH£ @  Æw£t?d à ý°â®ø @  Æx¤t?d ý©¬]÷ @  Æy¥t?d ` ýYÓ§Ž @  Æz¦t?d   ýy&¥p @  Æ{§t?d à ýâl› @  Æ|¨t?d ý2$ˆs @  Æ}©t?d ` ýÂ[r  @  Æ~ªt?d   ýâ®pô @  Æ«t?d à ýù¹\ @  Æ€¬t?d ý†½ @  Æ­t?d `ývÂãä @  Æ‚®t?d  ýV7á @  Æƒ¯t?d àý¨-" @  Æ„°t?d ýxe®õ @  Æ…±t?d `ýˆTŒ @  Æ†²t?d  ý¨ïVr @  Æ‡³t?d àý N°) @  Æˆ´t?d ý › @  Æ‰µt?d `ýîïöâ @  ÆŠ¶t?d  ýÎô @  Æ‹·t?d àýUPU÷ @  ÆŒ¸t?d ý…Ù @  Æ¹t?d `ýug#f @  ÆŽºt?d  ýU’!˜ @  Æ»t?d àýð’ù# @  Æ¼t?d ýmÖYâ @  Æ‘½t?d `ý©£› @  Æ’¾t?d  ý½\¡e @  Æ“¿t?d àý.¡N¯ @  Æ”Àt?d ýþéÂG @  Æ•Át?d `ý–8> @  Æ–Ât?d  ý.c:À @  Æ—Ãt?d àý&ÂÜ› @  Æ˜Ät?d ý?Œ/” @  Æ™Åt?d `ýÏóÕí @  ÆšÆt?d  ýï× @  Æ›Çt?d àýtLvø @  ÆœÈt?d ý¤ú @  ÆÉt?d `ýT{i @  ÆžÊt?d  ýtŽ— @  ÆŸËt?d àýÀˆýœ @  Æ Ìt?d ý]Ì]] @  Æ¡Ít?d `ý­³§$ @  Æ¢Ît?d  ýF¥Ú @  Æ£Ït?d àýs\fÝ @  Æ¤Ðt?d ý£ê5 @  Æ¥Ñt?d `ýSkL @  Æ¦Òt?d  ýsž² @  Æ§Ót?d àý{?ôé @  Æ¨Ôt?d ýOÀxô @  Æ©Õt?d `ý¿¿‚ @  ÆªÖt?d  ýŸJ€s @  Æ«×t?d àý!˜ @  Æ¬Øt?d ýÔH­p @  Æ­Ùt?d `ý$7W  @  Æ®Út?d  ýÂU÷ @  Æ¯Ût?d àý¡ÂL @  Æ°Üt?d ý<†- @  Æ±Ýt?d `ýÌù×ô @  Æ²Þt?d  ýì Õ  @  Æ³ßt?d àý¡/Ñ @  Æ´àt?d ý_é£9 @  Æµát?d `ý¯–Y@ @  Æ¶ât?d  ýc[¾ @  Æ·ãt?d àý‡Â½å @  Æ¸ät?d ýžŒNê @  Æ¹åt?d `ýnó´“ @  Æºæt?d  ýN¶m @  Æ»çt?d àýÕL† @  Æ¼èt?d ý›n @  Æ½ét?d `ýõ{a @  Æ¾êt?d  ýÕŽcé @  Æ¿ët?d àýÏšp @  ÆÀìt?d ýRË:± @  ÆÁít?d `ý¢´ÀÈ @  ÆÂît?d  ý‚AÂ6 @  ÆÃït?d àý|[1 @  ÆÄðt?d ý¬Ù @  ÆÅñt?d `ý\lw  @  ÆÆòt?d  ý|™u^uÐ ý @  ÆÇót?d àýMÿOÐ @  ÆÈ ôt?d 8 ý<ô‘¶ @  ÆÉ õt?d x ýÌ‹kÏ @  ÆÊ öt?d ¸ ýì~i1 @  ÆË ÷t?d ø ýw4ÈÚ @  ÆÌ øt?d 8!ý§|D2 @  ÆÍ ùt?d x!ýW¾K @  ÆÎ út?d ¸!ýwö¼µ @  ÆÏ ût?d ø!ýÒöd @  ÆÐ üt?d 8"ýO²ÄÏ @  ÆÑ ýt?d x"ý¿Í>¶ @  ÆÒ þt?d ¸"ýŸ8u?d ¸2ý×#·  @  Ç1 ?u?d ø2ý—£- @  Ç2 @u?d 83ýQß/Å @  Ç3 Au?d x3ýdé.Q @  Ç4 Bu?d ¸3ýD,¯ @  Ç5 Cu?d ø3ý‚•Ž @  Ç6 Du?d 84ý›Af @  Ç7 Eu?d x4ý¥ŒÃ‚ @  Ç8 Fu?d ¸4ý…yÁ| @  Ç9 Gu?d ø4ýÛz›z @  Ç: Hu?d 85ý 2’ @  Ç; Iu?d x5ý> @  Ç< Ju?d ¸5ýñø @  Ç= Ku?d ø5ýØâ­Ù @  Ç> Lu?d 86ýE¦  @  Ç? Mu?d x6ýiË·Ù @  Ç@ Nu?d ¸6ýI>µ' @  ÇA Ou?d ø6ýrmÍ @  ÇB Pu?d 87ý¢%% @  ÇC Qu?d x7ý—± @  ÇD Ru?d ¸7ý·æO @  ÇE Su?d ø7ýqõ»n @  ÇF Tu?d 88ýE 7s @  ÇG Uu?d x8ý{Ç’p @  ÇH Vu?d ¸8ý[2Ž @  ÇI Wu?d ø8ý1ʈ @  ÇJ Xu?d 89ýÕyF` @  ÇK Yu?d x9ýàOGô @  ÇL Zu?d ¸9ýÀºE  @  ÇM [u?d ø9ý©ü+ @  ÇN \u?d 8:ý›í\ê @  ÇO ]u?d x:ýÇ  @  ÇP ^u?d ¸:ý(tÅ÷ @  ÇQ _u?d ø:ýŽÄÁ @  ÇR `u?d 8;ý^ØH) @  ÇS au?d x;ýkîI½ @  ÇT bu?d ¸;ýKKC @  ÇU cu?d ø;ýòb @  ÇV du?d 8<ý”Fm @  ÇW eu?d x<ýª‹¤n @  ÇX fu?d ¸<ýŠ~¦ @  ÇY gu?d ø<ýÔ}ü– @  ÇZ hu?d 8=ý5p~ @  Ç[ iu?d x=ý1qê @  Ç\ ju?d ¸=ýös @  Ç] ku?d ø=ý×åÊ5 @  Ç^ lu?d 8>ýJ¡jô @  Ç_ mu?d x>ýÈËÖ§ @  Ç` nu?d ¸>ýè>ÔY @  Ça ou?d ø>ýÓmì³ @  Çb pu?d 8?ý%`[ @  Çc qu?d x?ý6aÏ @  Çd ru?duÐ@ý7 ¸?ýæc1 @  Çe su?d ø?ýÐõÚ @  Çf tu?d P@ýY`, @  Çg uu?d @ýðÐ @  Çh vu?d Ð@ý aÇÑ @  Çi wu?d Aý»á @  Çj xu?d PAýƒ*? @  Çk yu?d Aýx‹ @  Çl zu?d ÐAý–éU @  Çm {u?d BýO/k @  Çn |u?d PBý; µ @  Ço }u?d Býü¶…v @  Çp ~u?d ÐBý~'’¨ @  Çq u?d CýgŒI+ @  Çr €u?d PCýå^õ @  Çs u?d CýrOJA @  Çt ‚u?d ÐCýðÞ]Ÿ @  Çu ƒu?d Dý­o @  Çv „u?d PDý/ƒ± @  Çw …u?d Dý³*§’ @  Çx †u?d ÐDý1»°L @  Çy ‡u?d Eý=aq| @  Çz ˆu?d PEý¿ðf¢ @  Ç{ ‰u?d Eý(¢r @  Ç| Šu?d ÐEýª3eÈ @  Ç} ‹u?d Fýsõkö @  Ç~ Œu?d PFýñd|( @  Ç u?d Fýœ;ãø @  Ç€ Žu?d ÐFýªô& @  Ç u?d Gýw Wú @  Ç‚ u?d PGýõ±@$ @  Çƒ ‘u?d GýbãT @  Ç„ ’u?d ÐGýàrCN @  Ç… “u?d Hýa¬ @  Ç† ”u?d PHýžvr @  Ç‡ •u?d HýŽ7ÆQ @  Çˆ –u?d ÐHý ¦Ñ @  Ç‰ —u?d Iý|¿ @  ÇŠ ˜u?d PIý‚ía @  Ç‹ ™u?d Iý¿Õ @  ÇŒ šu?d ÐIý—.  @  Ç ›u?d JýNè 5 @  ÇŽ œu?d PJýÌyë @  Ç u?d Jýýq“( @  Ç žu?d ÐJýà„ö @  Ç‘ Ÿu?d Ký‹Ýö @  Ç’  u?d PKý L ( @  Ç“ ¡u?d Kýžœ @  Ç” ¢u?d ÐKý B @  Ç• £u?d LýACW² @  Ç– ¤u?d PLýÃÒ@l @  Ç— ¥u?d Lý_{ðO @  Ç˜ ¦u?d ÐLýÝêç‘ @  Ç™ §u?d MýÑ0&¡ @  Çš ¨u?d PMýS¡1 @  Ç› ©u?d MýÄó%Ë @  Çœ ªu?d ÐMýFb2 @  Ç «u?d NýŸ¤<+ @  Çž ¬u?d PNý5+õ @  ÇŸ ­u?d Ný=;‚† @  Ç  ®u?d ÐNý¿ª•X @  Ç¡ ¯u?d OýÖ 6„ @  Ç¢ °u?d POýT±!Z @  Ç£ ±u?d OýÃã5î @  Ç¤ ²u?d ÐOýAr"0 @  Ç¥ ³u?d Pý».0} @  Ç¦ ´u?d PPý9¿'£ @  Ç§ µu?d Pý¥—€ @  Ç¨ ¶u?d ÐPý'‡€^ @  Ç© ·u?d Qý+]An @  Çª ¸u?d PQý©ÌV° @  Ç« ¹u?d Qý>žB @  Ç¬ ºu?d ÐQý¼UÚ @  Ç­ »u?d RýeÉ[ä @  Ç® ¼u?d PRýçXL: @  Ç¯ ½u?d RýÖPÂù @  Ç° ¾u?d ÐRýTÁÕ' @  Ç± ¿u?d SýP¬Z6 @  Ç² Àu?d PSýÒ=Mè @  Ç³ Áu?d SýEoY\ @  Ç´ Âu?d ÐSýÇþN‚ @  Çµ Ãu?d Týš2r @  Ç¶ Äu?d PTý£¬ @  Ç· Åu?d Tý„ ´ @  Ç¸ Æu?d ÐTý›£Q @  Ç¹ Çu?d Uý Aba @  Çº Èu?d PUýˆÐu¿ @  Ç» Éu?d Uý‚a  @  Ç¼ Êu?d ÐUývÕ @  Ç½ Ëu?d VýDÕxë @  Ç¾ Ìu?d PVýÆDo5 @  Ç¿ Íu?d VýHMÀÔ @  ÇÀ Îu?d ÐVýÊÜ×  @  ÇÁ Ïu?d Wý£VtÖ @  Ç Ðu?d PWý!Çc @  Çà Ñu?d Wý¶•w¼ @  ÇÄ Òu?d ÐWý4`b @  ÇÅ Óu?d XýDyB€ @  ÇÆ Ôu?d PXýÆèU^ @  ÇÇ Õu?d XýZAå} @  ÇÈ Öu?d ÐXýØÐò£ @  ÇÉ ×u?d YýÔ 3“ @  ÇÊ Øu?d PYýV›$M @  ÇË Ùu?d YýÁÉ0ù @  ÇÌ Úu?d ÐYýCX'' @  ÇÍ Ûu?d Zýšž) @  ÇÎ Üu?d PZý>Ç @  ÇÏ Ýu?d Zý)° @  ÇÐ Þu?d ÐZý«–§Ú @  ÇÑ ßu?d [ý_«=Ú @  ÇÒ àu?d P[ýÝ:* @  ÇÓ áu?d [ýJh>° @  ÇÔ âu?d Ð[ýÈù)n @  ÇÕ ãu?d \ý•5tž @  ÇÖ äu?d P\ý¤c@ @  Ç× åu?d \ý‹ Óc @  ÇØ æu?d Ð\ý œÄ½ @  ÇÙ çu?d ]ýF @  ÇÚ èu?d P]ý‡×S @  ÇÛ éu?d ]ý…ç @  ÇÜ êu?d Ð]ý’9 @  ÇÝ ëu?d ^ýKÒ @  ÇÞ ìu?d P^ýÉCÙ @  Çß íu?d ^ýéM¡ª @  Çà îu?d Ð^ýkܶt @  Çá ïu?d _ýV¨ @  Çâ ðu?d€ P_ý¨]$ @  È ñu?d _ýÞNJ¹ @  ÈuÐ`ý òu?d Ð_ý\ß]g @  È óu?d (`ýcì½í @  È ôu?d h`ýá}ª3 @  È õu?d ¨`ý³fEj @  È öu?d è`ý1÷R´ @  È ÷u?d (aýóŸÌþ @  È øu?d haýqÛ  @  È ùu?d ¨aý#4y @  È úu?d èaý¡„#§ @  È ûu?d (bý½ Öt @  È üu?d hbý?šÁª @  È ýu?d ¨bým.ó @  È þu?d èbýï9- @  È ÿu?d (cýXíã @  È v?d hcýÚ|ôà @  È v?d ¨cýˆgš @  È v?d ècý ö D @  È v?d (dý’sªY @  È v?d hdý⽇ @  È v?d ¨dýBùRÞ @  È v?d èdýÀhE @  È v?d (eýÛJ @  È v?d heý€‘Ì” @  È  v?d ¨eýÒŠ#Í @  È  v?d èeýP4 @  È  v?d (fýL”ÁÀ @  È  v?d hfýÎÖ @  È  v?d ¨fýœ9G @  È v?d èfý.™ @  È v?d (gýËo @  È v?d hgý‡Ü± @  È! v?d ¨gýÕš3è @  È" v?d ègýW $6 @  È# v?d (hýâ?ý9 @  È$ v?d hhý`®êç @  È% v?d ¨hý2µ¾ @  È& v?d èhý°$` @  È' v?d (iýrLŒ* @  È( v?d hiýðÝ›ô @  È) v?d ¨iý¢Æt­ @  È* v?d èiý Wcs @  È+ v?d (jý<Ø–  @  È, v?d hjý¾I~ @  È- v?d ¨jýìRn' @  È. v?d èjýnÃyù @  È/ v?d (kýùí‚c @  È0  v?d hký{|•½ @  È1 !v?d ¨ký)gzä @  È2 "v?d èký«öm: @  È3 #v?d (lý3sË' @  È4 $v?d hlý±âÜù @  È5 %v?d ¨lýãù3  @  È6 &v?d èlýah$~ @  È7 'v?d (mý£º4 @  È8 (v?d hmý!‘­ê @  È9 )v?d ¨mýsŠB³ @  È: *v?d èmýñUm @  È; +v?d (nýí” ¾ @  È< ,v?d hnýo·` @  È= -v?d ¨ný=X9 @  È> .v?d èný¿Oç @  È? /v?d (oý ¬ƒ @  È@ 0v?d hoýˆ†»] @  ÈA 1v?d ¨oýÚT @  ÈB 2v?d èoýX CÚ @  ÈC 3v?d (pýgªz @  ÈD 4v?d hpý刽¤ @  ÈE 5v?d ¨pý·“Rý @  ÈF 6v?d èpý5E# @  ÈG 7v?d (qý÷jÛi @  ÈH 8v?d hqýuûÌ· @  ÈI 9v?d ¨qý'à#î @  ÈJ :v?d èqý¥q40 @  ÈK ;v?d (rý¹þÁã @  ÈL v?d èrýëå.º @  ÈO ?v?d (sýŒ›À1 @  ÈP @v?d hsý ×ï @  ÈQ Av?d ¨sý\8¶ @  ÈR Bv?d èsýÞ€/h @  ÈS Cv?d (týF‰u @  ÈT Dv?d htýÄ”ž« @  ÈU Ev?d ¨tý–qò @  ÈV Fv?d ètýf, @  ÈW Gv?d (uýÖvøf @  ÈX Hv?d huýTçï¸ @  ÈY Iv?d ¨uýüá @  ÈZ Jv?d èuý„m? @  È[ Kv?d (vý˜ââì @  È\ Lv?d hvýsõ2 @  È] Mv?d ¨výHhk @  È^ Nv?d èvýÊù µ @  È_ Ov?d (wýÑfèC @  È` Pv?d hwýS÷ÿ @  Èa Qv?d ¨wýìÄ @  Èb Rv?d èwýƒ} @  Èc Sv?d (xý6IÞ @  Èd Tv?d hxý´ØÉË @  Èe Uv?d ¨xýæÃ&’ @  Èf Vv?d èxýdR1L @  Èg Wv?d (yý¦:¯ @  Èh Xv?d hyý$«¸Ø @  Èi Yv?d ¨yýv°W @  Èj Zv?d èyýô!@_ @  Èk [v?d (zý讵Œ @  Èl \v?d hzýj?¢R @  Èm ]v?d ¨zý8$M  @  Èn ^v?d èzýºµZÕ @  Èo _v?d ({ý-›¡O @  Èp `v?d h{ý¯ ¶‘ @  Èq av?d ¨{ýýYÈ @  Èr bv?d è{ý€N @  Ès cv?d (|ýçè  @  Èt dv?d h|ýe”ÿÕ @  Èu ev?d ¨|ý7Œ @  Èv fv?d è|ýµR @  Èw gv?d (}ýwv™ @  Èx hv?d h}ýõçŽÆ @  Èy iv?d ¨}ý§üaŸ @  Èz jv?d è}ý%mvA @  È{ kv?d (~ý9⃒ @  È| lv?d h~ý»s”L @  È} mv?d ¨~ýéh{ @  È~ nv?d è~ýkùlË @  È ov?d (ý=7¿ž @  È€ pv?d hý¿¦¨@ @  È qv?d ¨ýuЀý'í½G @  È‚ rv?d èý”BkÇ @  Èƒsv?d @€ý{7Ü¡ @  È„tv?d €€ý[ÂÞ_ @  È…uv?d À€ý«½$& @  È†vv?d ý{õ¨Î @  È‡wv?d @ýëD­² @  Èˆxv?d €ý˱¯L @  È‰yv?d Àý;ÎU5 @  ÈŠzv?d ‚ý¦Šõô @  È‹{v?d @‚ý¥Ð·8 @  ÈŒ|v?d €‚ý…%µÆ @  È}v?d À‚ýuZO¿ @  ÈŽ~v?d ƒý¥ÃW @  Èv?d @ƒýsâx @  È€v?d €ƒý­†à† @  È‘v?d Àƒý]ùÿ @  È’‚v?d „ýD·éð @  È“ƒv?d @„ýGí«< @  È”„v?d €„ýg©Â @  È•…v?d À„ý—gS» @  È–†v?d …ýG/ßS @  È—‡v?d @…ýמÚ/ @  È˜ˆv?d €…ý÷kØÑ @  È™‰v?d À…ý"¨ @  ÈšŠv?d †ýšP‚i @  È›‹v?d @†ý™ À¥ @  ÈœŒv?d €†ý¹ÿÂ[ @  Èv?d À†ýI€8" @  ÈžŽv?d ‡ý™È´Ê @  ÈŸv?d @‡ýÐŽÊ  @  È v?d €‡ýð{Èô @  È¡‘v?d À‡ý2 @  È¢’v?d ˆý4û¾ @  È£“v?d @ˆý7¡ü\ @  È¤”v?d €ˆýTþ¢ @  È¥•v?d Àˆýç+Û @  È¦–v?d ‰ý7cˆ3 @  È§—v?d @‰ý§ÒO @  È¨˜v?d €‰ý‡'± @  È©™v?d À‰ýwXuÈ @  Èªšv?d ŠýêÕ  @  È«›v?d @ŠýéF—Å @  È¬œv?d €Šýɳ•; @  È­v?d ÀŠý9ÌoB @  È®žv?d ‹ýé„㪠@  È¯Ÿv?d @‹ý,sƒ @  È° v?d €‹ý †ø @  È±¡v?d À‹ýüù{ @  È²¢v?d Œýå·ˆŽ @  È³£v?d @ŒýæíÊB @  È´¤v?d €ŒýÆȼ @  Èµ¥v?d ÀŒý6g2Å @  È¶¦v?d ýæ/¾- @  È·§v?d @ývž»Q @  È¸¨v?d €ýVk¹¯ @  È¹©v?d Àý¦CÖ @  Èºªv?d Žý;Pã @  È»«v?d @Žý8 ¡Û @  È¼¬v?d €Žýÿ£% @  È½­v?d ÀŽýè€Y\ @  È¾®v?d ý8ÈÕ´ @  È¿¯v?d @ý߉­æ @  ÈÀ°v?d €ýÿ|¯ @  ÈÁ±v?d ÀýUa @  È²v?d ý±ÝéÓ @  Èóv?d @ý²‡« @  ÈÄ´v?d €ý’r©á @  Èŵv?d Àýb S˜ @  Èƶv?d ‘ý²Eßp @  ÈÇ·v?d @‘ý"ôÚ  @  Èȸv?d €‘ýØò @  Èɹv?d À‘ýò~"‹ @  Èʺv?d ’ýo:‚J @  ÈË»v?d @’ýl`À† @  È̼v?d €’ýL•Âx @  Èͽv?d À’ý¼ê8 @  Èξv?d “ýl¢´é @  ÈÏ¿v?d @“ýYÁT @  ÈÐÀv?d €“ýyðê @  ÈÑÁv?d À“ý‰9Ó @  ÈÒÂv?d ”ýÁÊÜ @  ÈÓÃv?d @”ý“›ˆ @  ÈÔÄv?d €”ý³nŠî @  ÈÕÅv?d À”ýCp— @  ÈÖÆv?d •ý“Yü @  È×Çv?d @•ýèù @  ÈØÈv?d €•ý#ûý @  ÈÙÉv?d À•ýÓb„ @  ÈÚÊv?d –ýN&¡E @  ÈÛËv?d @–ýM|㉠@  ÈÜÌv?d €–ým‰áw @  ÈÝÍv?d À–ýö @  ÈÞÎv?d —ýM¾—æ @  ÈßÏv?d @—ýøé& @  ÈàÐv?d €—ý$ ëØ @  ÈáÑv?d À—ýÔr¡ @  ÈâÒv?d€ ˜ý”N @  ÉÓv?d @˜ývU‹ÿ @  ÉÔv?d €˜ýV ‰ @  ÉÕv?d À˜ýc–ˆ• @  ÉÖv?d ™ý³Þ} @  É×v?d @™ýíÝ^{ @  ÉØv?d €™ýÍ(\… @  ÉÙv?d À™ýóåù† @  ÉÚv?d šýn¡YG @  É Ûv?d @šý¨²àf @  É Üv?d €šýˆG☠@  É Ýv?d Àšý½qã  @  É Þv?d ›ým9oä @  É ßv?d @›ýËÝnÒ @  Éàv?d €›ýë(l, @  Éáv?d À›ýxD÷Ï @  Éâv?d œýa À @  Éãv?d @œý§½á @  Éäv?d €œý‡ì¿ @  Éåv?d Àœý²Ú¾‹ @  Éæv?d ýb’2c @  Éçv?d @ý<‘he @  Éèv?d €ýdj› @  Éév?d Àý"©Ï˜ @  Éêv?d žý¿íoY @  Éëv?d @žýyþÖx @  Éìv?d €žýY Ô† @  Éív?d Àžýl=Õ @  Éîv?d Ÿý¼uYú @  Éïv?d @Ÿý‡&a @  Éðv?d €Ÿý§Ócî @  ÉñvuРý?d ÀŸý%¹ß½ @  É òv?d  ý–æ @  É!óv?d X ýP_/ @  É"ôv?d ˜ ýpý]Ñ @  É#õv?d Ø ýEË\E @  É$öv?d ¡ý•ƒÐ­ @  É%÷v?d X¡ýË€Š« @  É&øv?d ˜¡ýëuˆU @  É'ùv?d Ø¡ýÕ¸-V @  É(úv?d ¢ýHü— @  É)ûv?d X¢ýŽï4¶ @  É*üv?d ˜¢ý®6H @  É+ýv?d Ø¢ý›,7Ü @  É,þv?d £ýKd»4 @  É-ÿv?d X£ýq® @  É.w?d ˜£ý_„¬s @  É/w?d Ø£ýÌè7 @  É0w?d ¤ýզğ @  É1w?d X¤ýµ}¾ @  É2w?d ˜¤ý3@@ @  É3w?d ؤýv~Ô @  É4w?d ¥ýÖ>ò< @  É5w?d X¥ýˆ=¨: @  É6w?d ˜¥ý¨ÈªÄ @  É7 w?d Ø¥ý–Ç @  É8 w?d ¦ý A¯ @  É9 w?d X¦ýÍR' @  É: w?d ˜¦ýí§Ù @  É; w?d ئýØ‘M @  É<w?d §ýÙ™¥ @  É=w?d X§ý3Š¡O @  É>w?d ˜§ý£± @  É?w?d اý?p @  É@w?d ¨ý í•m @  ÉAw?d X¨ýÍþ,L @  ÉBw?d ˜¨ýí .² @  ÉCw?d بýØ=/& @  ÉDw?d ©ýu£Î @  ÉEw?d X©ýVvùÈ @  ÉFw?d ˜©ývƒû6 @  ÉGw?d Ø©ýHN^5 @  ÉHw?d ªýÕ þô @  ÉIw?d XªýGÕ @  ÉJw?d ˜ªý3ìE+ @  ÉKw?d تýÚD¿ @  ÉLw?d «ýÖ’ÈW @  ÉMw?d X«ýpvÉa @  ÉN w?d ˜«ýPƒËŸ @  ÉO!w?d Ø«ýÃïP| @  ÉP"w?d ¬ýÚ¡£s @  ÉQ#w?d X¬ý²R @  ÉR$w?d ˜¬ýw?d ³ýý³™† @  Ém?w?d X³ý«¡ @  Én@w?d ˜³ý‹ò_ @  ÉoAw?d سýž¼ @  ÉpBw?d ´ýÐç³ @  ÉqCw?d X´ýÇÃ^’ @  ÉrDw?d ˜´ýç6\l @  ÉsEw?d Ø´ýÒ]ø @  ÉtFw?d µýHÑ @  ÉuGw?d Xµý\K‹ @  ÉvHw?d ˜µý|¾‰è @  ÉwIw?d صýBs,ë @  ÉxJw?d ¶ýß7Œ* @  ÉyKw?d X¶ý$5  @  ÉzLw?d ˜¶ý9Ñ7õ @  É{Mw?d ضý ç6a @  É|Nw?d ·ýܯº‰ @  É}Ow?d X·ýçü‚c @  É~Pw?d ˜·ýÇ € @  ÉQw?d Ø·ý2 m @  É€Rw?d ¸ý<͆p @  ÉSw?d X¸ýúÞ?Q @  É‚Tw?d ˜¸ýÚ+=¯ @  ÉƒUw?d ظýï<; @  É„Vw?d ¹ý?U°Ó @  É…Ww?d X¹ýaVêÕ @  É†Xw?d ˜¹ýA£è+ @  É‡Yw?d عýnM( @  ÉˆZw?d ºýâ*íé @  É‰[w?d Xºý$9TÈ @  ÉŠ\w?d ˜ºýÌV6 @  É‹]w?d غý1úW¢ @  ÉŒ^w?d »ýá²ÛJ @  É_w?d X»ýGVÚ| @  ÉŽ`w?d ˜»ýg£Ø‚ @  Éaw?d Ø»ýôÏCa @  Ébw?d ¼ýí°n @  É‘cw?d X¼ý+’ O @  É’dw?d ˜¼ý g ± @  É“ew?d ؼý>Q % @  É”fw?d ½ýî†Í @  É•gw?d X½ý°ÜË @  É–hw?d ˜½ýïÞ5 @  É—iw?d ؽý®"{6 @  É˜jw?d ¾ý3fÛ÷ @  É™kw?d X¾ýõubÖ @  Éšlw?d ˜¾ýÕ€`( @  É›mw?d ؾýà¶a¼ @  Éœnw?d ¿ý0þíT @  Éow?d X¿ý ­Õ¾ @  Éžpw?d ˜¿ý+X×@ @uÐÀý  ÉŸqw?d Ø¿ýõ·Æ @  É  rw?d 0Àýôæ” @  É¡ sw?d pÀý2_µ @  É¢ tw?d °Àýã]K @  É£ uw?d ðÀý'Õ\ß @  É¤ vw?d 0Áý÷Ð7 @  É¥ ww?d pÁý©žŠ1 @  É¦ xw?d °Áý‰kˆÏ @  É§ yw?d ðÁý·¦-Ì @  É¨ zw?d 0Âý*â  @  É© {w?d pÂýìñ4, @  Éª |w?d °ÂýÌ6Ò @  É« }w?d ðÂýù27F @  É¬ ~w?d 0Ãý)z»® @  É­ w?d pÃýbû @  É® €w?d °ÃýBýùå @  É¯ w?d ðÃýÑ‘b @  É° ‚w?d 0ÄýÈß‘  @  É± ƒw?d pÄýÌ(( @  É² „w?d °Äý.9*Ö @  É³ …w?d ðÄý+B @  É´ †w?d 0ÅýËG§ª @  Éµ ‡w?d pÅý•Dý¬ @  É¶ ˆw?d °Åýµ±ÿR @  É· ‰w?d ðÅý‹|ZQ @  É¸ Šw?d 0Æý8ú @  É¹ ‹w?d pÆýÐ+C± @  Éº Œw?d °ÆýðÞAO @  É» w?d ðÆýÅè@Û @  É¼ Žw?d 0Çý Ì3 @  É½ w?d pÇý.óôÙ @  É¾ w?d °Çýö' @  É¿ ‘w?d ðÇý"kLæ @  ÉÀ ’w?d 0Èý”Àû @  ÉÁ “w?d pÈýЇyÚ @  É ”w?d °Èýðr{$ @  Éà •w?d ðÈýÅDz° @  ÉÄ –w?d 0Éý öX @  ÉÅ —w?d pÉýK¬^ @  ÉÆ ˜w?d °Éýkú®  @  ÉÇ ™w?d ðÉýU7 £ @  ÉÈ šw?d 0ÊýÈs«b @  ÉÉ ›w?d pÊý`C @  ÉÊ œw?d °Êý.•½ @  ÉË w?d ðÊý£) @  ÉÌ žw?d 0ËýËëÁ @  ÉÍ Ÿw?d pËýmœ÷ @  ÉÎ  w?d °ËýMúž  @  ÉÏ ¡w?d ðËýÞ–ê @  ÉÐ ¢w?d 0ÌýÇØöå @  ÉÑ £w?d pÌýËOÄ @  ÉÒ ¤w?d °Ìý!>M: @  ÉÓ ¥w?d ðÌýL® @  ÉÔ ¦w?d 0ÍýÄ@ÀF @  ÉÕ §w?d pÍýšCš@ @  ÉÖ ¨w?d °Íýº¶˜¾ @  É× ©w?d ðÍý„{=½ @  ÉØ ªw?d 0Îý?| @  ÉÙ «w?d pÎýß,$] @  ÉÚ ¬w?d °ÎýÿÙ&£ @  ÉÛ ­w?d ðÎýÊï'7 @  ÉÜ ®w?d 0Ïý§«ß @  ÉÝ ¯w?d pÏý!ô“5 @  ÉÞ °w?d °Ïý‘Ë @  Éß ±w?d ðÏýƒk-˜ @  Éà ²w?d 0Ðý=µ‘* @  Éá ³w?d pÐýû¦(  @  Éâ ´w?d€ °ÐýÝõ @  Ê µw?d ðÐýÎc”H @  Ê ¶w?d 0Ñý+  @  Ê ·w?d pÑý…a¹K @  Ê ¸w?d °Ñý¥”»µ @  Ê ¹w?d ðÑýUëAÌ @  Ê ºw?d 0Òýȯá  @  Ê »w?d pÒýÀV @  Ê ¼w?d °Òýàû¨ @  Ê ½w?d ðÒý„ÿÑ @  Ê ¾w?d 0ÓýÀÌs9 @  Ê ¿w?d pÓýS1œó @  Ê Àw?d °ÓýsÄž  @  Ê Áw?d ðÓýƒ»dt @  Ê Âw?d 0Ôýšõ—{ @  Ê Ãw?d pÔý?õOÀ @  Ê Äw?d °ÔýM> @  Ê Åw?d ðÔýï·G @  Ê Æw?d 0Õý?7;¯ @  Ê Çw?d pÕý¤}šD @  Ê Èw?d °Õý„ˆ˜º @  Ê Éw?d ðÕýt÷bà @  Ê Êw?d 0Öýé³Â @  Ê Ëw?d pÖýá$Y @  Ê Ìw?d °ÖýÁç&§ @  Ê Íw?d ðÖý1˜ÜÞ @  Ê Îw?d 0×ýáÐP6 @  Ê Ïw?d p×ýÊ“1 @  Ê Ðw?d °×ý??‘Ï @  Ê Ñw?d ð×ýÏ@k¶ @  Ê Òw?d 0Øýû¿ç« @  Ê Ów?d pØýO¹  @  Ê Ôw?d °ØýoL^ @  Ê! Õw?d ðØýŸ3à' @  Ê" Öw?d 0ÙýO{lÏ @  Ê# ×w?d pÙýÔ1Í$ @  Ê$ Øw?d °ÙýôÄÏÚ @  Ê% Ùw?d ðÙý»5£ @  Ê& Úw?d 0Úý™ÿ•b @  Ê' Ûw?d pÚý‘^s9 @  Ê( Üw?d °Úý±«qÇ @  Ê) Ýw?d ðÚýAÔ‹¾ @  Ê* Þw?d 0Ûý‘œV @  Ê+ ßw?d pÛýò1ý @  Ê, àw?d °ÛýÒÄÿs @  Ê- áw?d ðÛý"»  @  Ê. âw?d 0Üý;õö @  Ê/ ãw?d pÜýžõ.¾ @  Ê0 äw?d °Üý¾,@ @  Ê1 åw?d ðÜýNÖ9 @  Ê2 æw?d 0Ýýž7ZÑ @  Ê3 çw?d pÝý}û: @  Ê4 èw?d °Ýý%ˆùÄ @  Ê5 éw?d ðÝýÕ÷½ @  Ê6 êw?d 0ÞýH³£| @  Ê7 ëw?d pÞý@E' @  Ê8 ìw?d °Þý`çGÙ @  Ê9 íw?d ðÞý˜½  @  Ê: îw?d 0ßý@Ð1H @  Ê; ïw?d pßý¾ÊòO @  Ê< ðw?d uÐàý/°ßýž?ð± @  Ê= ñw?d ðßýW‡Ö @  Ê>òw?d HàýN#ˆë @  Ê?ów?d ˆàýöFdR @  Ê@ôw?d Èàýt×sŒ @  ÊAõw?d áýÖqà @  ÊBöw?d HáýTà @  ÊC÷w?d ˆáýmαÖ @  ÊDøw?d Èáýï_¦ @  ÊEùw?d âýõën @  ÊFúw?d Hâý‚dü° @  ÊGûw?d ˆâý(¡Ë @  ÊHüw?d Èâýª0 @  ÊIýw?d ãý–yZ @  ÊJþw?d HãýŠn„ @  ÊKÿw?d ˆãý< ¤ @  ÊLx?d Èãý¾³Á @  ÊMx?d äýÕ=­i @  ÊNx?d HäýW¬º· @  ÊOx?d ˆäýPÈw, @  ÊPx?d ÈäýÒY`ò @  ÊQx?d åýpÿ½ @  ÊRx?d Håýònc @  ÊSx?d ˆåýË@¢¨ @  ÊTx?d ÈåýIѵv @  ÊU x?d æý¦{ø @  ÊV x?d Hæý$êïÎ @  ÊW x?d ˆæýŽ/µ @  ÊX x?d Èæý ¾ k @  ÊY x?d çý®j$ @  ÊZx?d Hçý,‰}ú @  Ê[x?d ˆçýp÷«Ý @  Ê\x?d Èçýòf¼ @  Ê]x?d èý´wݹ @  Ê^x?d Hèý6æÊg @  Ê_x?d ˆèý „ L @  Ê`x?d Èèý¢7’ @  Êax?d éý³VÝ @  Êbx?d Héý‚"A @  Êcx?d ˆéý» õÈ @  Êdx?d Èéý9â @  Êex?d êýÖ7¯p @  Êfx?d HêýT¦¸® @  Êgx?d ˆêýþcKÕ @  Êhx?d Èêý|ò\  @  Êix?d ëýÞT=D @  Êjx?d Hëý\Å*š @  Êkx?d ˆëý Åa @  Êl x?d ÈëýÒ¿ @  Êm!x?d ìýt=Ì @  Ên"x?d Hìýö¬ÛÉ @  Êo#x?d ˆìýñÈR @  Êp$x?d ÈìýsYŒ @  Êq%x?d íýÑÿ`à @  Êr&x?d HíýSnw @  Ês'x?d ˆíýj@ÃÖ @  Êt(x?d ÈíýèÑÔ @  Êu)x?d îý{™n @  Êv*x?d Hîý…ꎰ @  Êw+x?d ˆîý//}Ë @  Êx,x?d Èîý­¾j @  Êy-x?d ïý Z @  Êz.x?d Hïý‰„ @  Ê{/x?d ˆïýÑ÷Ê£ @  Ê|0x?d ÈïýSfÝ} @  Ê}1x?d ðýŸVŒh @  Ê~2x?d HðýÇ›¶ @  Ê3x?d ˆðýFôG> @  Ê€4x?d ÈðýÄePà @  Ê5x?d ñýfÃ1¯ @  Ê‚6x?d HñýäR&q @  Êƒ7x?d ˆñýÝ|’º @  Ê„8x?d Èñý_í…d @  Ê…9x?d òý°GÈ @  Ê†:x?d Hòý2ÖßÜ @  Ê‡;x?d ˆòý˜,§ @  Êˆx?d Hóý:µMè @  Ê‹?x?d ˆóý ,· @  ÊŒ@x?d Èóý‰½ Ü @  ÊAx?d ôýâ¾t @  ÊŽBx?d Hôý`Œ©ª @  ÊCx?d ˆôýgèd1 @  ÊDx?d Èôýåysï @  Ê‘Ex?d õýGß  @  Ê’Fx?d HõýÅN~ @  Ê“Gx?d ˆõýü`±µ @  Ê”Hx?d Èõý~ñ¦k @  Ê•Ix?d öý‘[ë  @  Ê–Jx?d HöýÊüÓ @  Ê—Kx?d ˆöý¹¨ @  Ê˜Lx?d Èöý;žv @  Ê™Mx?d ÷ý™8y9 @  ÊšNx?d H÷ý©nç @  Ê›Ox?d ˆ÷ýG׸À @  ÊœPx?d È÷ýÅF¯ @  ÊQx?d øýƒWΤ @  ÊžRx?d HøýÆÙz @  ÊŸSx?d ˆøý¤3Q @  Ê Tx?d Èøý•5$ @  Ê¡Ux?d ùý7“EÀ @  Ê¢Vx?d HùýµR @  Ê£Wx?d ˆùýŒ,æÕ @  Ê¤Xx?d Èùý½ñ  @  Ê¥Yx?d úýá¼m @  Ê¦Zx?d Húýc†«³ @  Ê§[x?d ˆúýÉCXÈ @  Ê¨\x?d ÈúýKÒO @  Ê©]x?d ûýét.Y @  Êª^x?d Hûýkå9‡ @  Ê«_x?d ˆûýª,Ö| @  Ê¬`x?d Èûý(½Á¢ @  Ê­ax?d üýCß  @  Ê®bx?d HüýÁŒÈÔ @  Ê¯cx?d ˆüýÆèO @  Ê°dx?d ÈüýDy‘ @  Ê±ex?d ýýæßsÞ @  Ê²fx?d HýýdNd @  Ê³gx?d ˆýý]`ÐË @  Ê´hx?d ÈýýßñÇ @  Êµix?d þý0[Šs @  Ê¶jx?d Hþý²Ê­ @  Ê·kx?d ˆþýnÖ @  Ê¸lx?d Èþýšžy @  Ê¹mx?d ÿý88G @  Êºnx?d Hÿýº©™ @  Ê»ox?d ˆÿýæ×Ù¾ @  Ê¼uÐþpx?d ÈÿýdFÎ` @  Ê½qx?d þYkÐ @  Ê¾rx?d `þÈ| @  Ê¿sx?d  þ(­· @  ÊÀtx?d àþª<‡i @  ÊÁux?d þšæ& @  ÊÂvx?d `þŠ ñø @  ÊÃwx?d  þ³%E3 @  ÊÄxx?d àþ1´Rí @  ÊÅyx?d þÞ‹ @  ÊÆzx?d `þ\U @  ÊÇ{x?d  þöJû. @  ÊÈ|x?d àþtÛìð @  ÊÉ}x?d þÖ}¿ @  ÊÊ~x?d `þTìša @  ÊËx?d  þx³4 @  ÊÌ€x?d àþú"#Ç @  ÊÍx?d þ‘‚=o @  Ê΂x?d `þ*± @  Êσx?d  þwç* @  ÊЄx?d àþ–æðô @  ÊÑ…x?d þ4@‘» @  ÊÒ†x?d `þ¶Ñ†e @  ÊÓ‡x?d  þÿ2® @  ÊÔˆx?d àþ n%p @  ÊÕ‰x?d þâÄh @  ÊÖŠx?d `þ`UÈ @  Ê׋x?d  þÊŒ³ @  ÊØŒx?d àþH›m @  ÊÙx?d þê§ú" @  ÊÚŽx?d `þh6íü @  ÊÛx?d  þ4H;Û @  ÊÜx?d àþ¶Ù, @  ÊÝ‘x?d þðÈM¿ @  ÊÞ’x?d `þrYZa @  Êß“x?d  þd;°J @  Êà”x?d àþ檧” @  Êá•x?d þD ÆÛ @  Êâ–x?d€ ` þ²^Í£ @  Ë—x?d   þj11A @  Ë˜x?d à þè &Ÿ @  Ë™x?d þÂC @  Ëšx?d ` þ@Ò‡Ê @  Ë›x?d   þ$¥+Ë @  Ëœx?d à þ¦4< @  Ëx?d þÊ   @  Ëžx?d ` þH±þ @  Ë Ÿx?d   þL1è @  Ë  x?d à þΠ6 @  Ë ¡x?d þ`Iós @  Ë ¢x?d ` þâØä­ @  Ë £x?d   þ†¯H¬ @  Ë¤x?d à þ>_r @  Ë¥x?d þÅ‹_§ @  Ë¦x?d ` þGHy @  Ë§x?d   þ»}_ @  Ë¨x?d à þ9ì @  Ë©x?d þ¦  @  Ëªx?d `þ‘ž±Ô @  Ë«x?d  þõéÕ @  Ë¬x?d àþwx  @  Ë­x?d þl4> @  Ë®x?d `þ™ý#à @  Ë¯x?d  þÊ* @  Ë°x?d àþ‚[ô @  Ë±x?d þ‹"³  @  Ë²x?d `þ ³¤Ò @  Ë³x?d  þmÄÓ @  Ë´x?d àþïU  @  Ëµx?d þ?æ8h @  Ë ¶x?d `þ½w/¶ @  Ë!·x?d  þA` @  Ë"¸x?d àþÃwN @  Ë#¹x?d þébÁÅ @  Ë$ºx?d `þkóÖ @  Ë%»x?d  þ„z @  Ë&¼x?d àþmÄ @  Ë'½x?d þáSñ @  Ë(¾x?d `þcD/ @  Ë)¿x?d  þ—@E( @  Ë*Àx?d àþÑRö @  Ë+Áx?d þ»8·³ @  Ë,Âx?d `þ9© m @  Ë-Ãx?d  þ]Þ l @  Ë.Äx?d àþßO² @  Ë/Åx?d þúg @  Ë0Æx?d `þœk ¹ @  Ë1Çx?d  þ` CŸ @  Ë2Èx?d àþâTA @  Ë3Éx?d þÈ~âÊ @  Ë4Êx?d `þJïõ @  Ë5Ëx?d  þ.˜Y @  Ë6Ìx?d àþ¬ NË @  Ë7Íx?d þÀpþ @  Ë8Îx?d `þBŒg  @  Ë9Ïx?d  þÛ»Jê @  Ë:Ðx?d àþY*]4 @  Ë;Ñx?d þÚrÇc @  Ë<Òx?d `þXãн @  Ë=Óx?d  þ<”|¼ @  Ë>Ôx?d àþ¾kb @  Ë?Õx?d þÀ±J• @  Ë@Öx?d `þB ]K @  ËA×x?d  þ¾Gm @  ËBØx?d àþ<Ö³ @  ËCÙx?d þ5³8 @  ËDÚx?d `þ”¤¤æ @  ËEÛx?d  þðÓç @  ËFÜx?d àþrB9 @  ËGÝx?d þV!  @  ËHÞx?d `þœÇ6Ò @  ËIßx?d  þ˜G"Ä @  ËJàx?d àþÖ5 @  ËKáx?d þ´?Ð_ @  ËLâx?d `þ6®Ç @  ËMãx?d  þRÙk€ @  ËNäx?d àþÐH|^ @  ËOåx?d þý|‹ @  ËPæx?d `þ“lkU @  ËQçx?d  þo $s @  ËRèx?d àþíš3­ @  ËSéx?d þÇy…& @  ËTêx?d `þEè’ø @  ËUëx?d  þ!Ÿ>ù @  ËVìx?d àþ£)' @  ËWíx?d þÏ @  ËXîx?d `þM‹Ì @  ËYïx?d  þÔ¼-uÐ þ @  ËZðx?d àþV-:Ø @  Ë[ñx?d 8 þòô @  Ë\òx?d x þå* @  Ë]óx?d ¸ þvgI+ @  Ë^ôx?d ø þôö^õ @  Ë_õx?d 8!þ$Ey @  Ë`öx?d x!þ¦ÔnN @  Ëa÷x?d ¸!þZ³!h @  Ëbøx?d ø!þØ"6¶ @  Ëcùx?d 8"þòÁ€= @  Ëdúx?d x"þpP—ã @  Ëeûx?d ¸"þ';â @  Ëfüx?d ø"þ–¶,< @  Ëgýx?d 8#þú¢  @  Ëhþx?d x#þx3× @  Ëiÿx?d ¸#þîBN @  Ëjy?d ø#þlÓ @  Ëky?d 8$þÂ:÷Õ @  Ëly?d x$þ@«à  @  Ëmy?d ¸$þ$ÜL  @  Ëny?d ø$þ¦M[Ô @  Ëoy?d 8%þgø[ @  Ëpy?d x%þåiLß @  Ëqy?d ¸%þù @  Ëry?d ø%þ›Ÿ' @  Ës y?d 8&þ±|¢¬ @  Ët y?d x&þ3íµr @  Ëu y?d ¸&þWšs @  Ëv y?d ø&þÕ ­ @  Ëw y?d 8'þ¹0˜ @  Ëxy?d x'þ;Ž'F @  Ëyy?d ¸'þ¢¹ Œ @  Ëzy?d ø'þ (R @  Ë{y?d 8(þ£p‡ @  Ë|y?d x(þ!áÛ @  Ë}y?d ¸(þE–<Ú @  Ë~y?d ø(þÇ+ @  Ëy?d 8)þZå: @  Ë€y?d x)þØt- @  Ëy?d ¸)þ$b: @  Ë‚y?d ø)þ¦‚uä @  Ëƒy?d 8*þŒaÃo @  Ë„y?d x*þðÔ± @  Ë…y?d ¸*þj‡x° @  Ë†y?d ø*þèon @  Ë‡y?d 8+þ„Q[ @  Ëˆy?d x+þ“F… @  Ë‰y?d ¸+þR“ @  ËŠ y?d ø+þ€‚EM @  Ë‹!y?d 8,þ.k  @  ËŒ"y?d x,þ¬ú·Ö @  Ë#y?d ¸,þÈ× @  ËŽ$y?d ø,þJ  @  Ë%y?d 8-þ‹© Ü @  Ë&y?d x-þ 8 @  Ë‘'y?d ¸-þõ_T$ @  Ë’(y?d ø-þwÎCú @  Ë“)y?d 8.þ]-õq @  Ë”*y?d x.þ߼⯠@  Ë•+y?d ¸.þ»ËN® @  Ë–,y?d ø.þ9ZYp @  Ë—-y?d 8/þUNgE @  Ë˜.y?d x/þ×ßp› @  Ë™/y?d ¸/þNè]Q @  Ëš0y?d ø/þÌyJ @  Ë›1y?d 80þÅàw @  Ëœ2y?d x0þG‘÷© @  Ë3y?d ¸0þ#æ[¨ @  Ëž4y?d ø0þ¡wLv @  ËŸ5y?d 81þqÄk @  Ë 6y?d x1þóU|Í @  Ë¡7y?d ¸1þ23ë @  Ë¢8y?d ø1þ£$5 @  Ë£9y?d 82þ§@’¾ @  Ë¤:y?d x2þ%Ñ…` @  Ë¥;y?d ¸2þA¦)a @  Ë¦¿ @  Ë§=y?d 83þ¯#Š @  Ë¨>y?d x3þ-²T @  Ë©?y?d ¸3þÙbS @  Ëª@y?d ø3þ[ó @  Ë«Ay?d 84þõäÈ @  Ë¬By?d x4þw‹ó @  Ë­Cy?d ¸4þü_ @  Ë®Dy?d ø4þ‘mHÉ @  Ë¯Ey?d 85þPØH @  Ë°Fy?d x5þÒI_ @  Ë±Gy?d ¸5þ..ä @  Ë²Hy?d ø5þ¬¿: @  Ë³Iy?d 86þ†\±± @  Ë´Jy?d x6þͦo @  ËµKy?d ¸6þ`º n @  Ë¶Ly?d ø6þâ+° @  Ë·My?d 87þŽ?#… @  Ë¸Ny?d x7þ ®4[ @  Ë¹Oy?d ¸7þ•™‘ @  ËºPy?d ø7þO @  Ë»Qy?d 88þ”P” @  Ë¼Ry?d x8þÁƒÆ @  Ë½Sy?d ¸8þr¶/Ç @  Ë¾Ty?d ø8þð'8 @  Ë¿Uy?d 89þŽ“î @  ËÀVy?d x9þ 0 @  ËÁWy?d ¸9þðeA @  ËÂXy?d ø9þrôVÈ @  ËÃYy?d 8:þXàC @  ËÄZy?d x:þÚ†÷ @  ËÅ[y?d ¸:þ¾ñ[œ @  ËÆ\y?d ø:þ<`LB @  ËÇ]y?d 8;þPtrw @  ËÈ^y?d x;þÒåe© @  ËÉ_y?d ¸;þÖeq¿ @  ËÊ`y?d ø;þTôfa @  ËËay?d 8<þúƒ$ @  ËÌby?d x<þxŒ”ú @  ËÍcy?d ¸<þû8û @  ËÎdy?d ø<þžj/% @  ËÏey?d 8=þ_ß/ð @  ËÐfy?d x=þÝN8. @  ËÑgy?d ¸=þ!)w @  ËÒhy?d ø=þ£¸`Ö @  ËÓiy?d 8>þ‰[Ö] @  ËÔjy?d x>þ ÊÁƒ @  ËÕky?d ¸>þo½m‚ @  ËÖly?d ø>þí,z\ @  Ë×my?d 8?þ8Di @  ËØny?d x?þ©S· @  ËÙoy?duÐ@þ7 ¸?þšž~} @  ËÚpy?d ø?þi£ @  ËÛqy?d P@þlÅÕ @  ËÜry?d @þLñÇ+ @  ËÝsy?d Ð@þŠâ~  @  ËÞty?d AþZªòâ @  Ëßuy?d PAþØÀN± @  Ëàvy?d Aþø5LO @  Ëáwy?d ÐAþ¦6I @  Ëâxy?d€ Bþ½$1 @  Ìyy?d PBþiSWŒ @  Ìzy?d BþI¦Ur @  Ì{y?d ÐBþJü¾ @  Ì|y?d Cþš´›V @  Ì}y?d PCþjËa/ @  Ì~y?d CþJ>cÑ @  Ìy?d ÐCþÏþ| @  Ì€y?d DþÖ° @  Ì y?d PDþ&Ïuh @  Ì ‚y?d Dþ:w– @  Ì ƒy?d ÐDþ`5Z @  Ì „y?d EþÕ(¹² @  Ì …y?d PEþ%WCË @  Ì†y?d Eþ¢A5 @  Ì‡y?d ÐEþ8²z© @  Ìˆy?d Fþ¥öÚh @  Ì‰y?d PFþU‰  @  ÌŠy?d Fþu|"ï @  Ì‹y?d ÐFþv&`# @  ÌŒy?d Gþ¦nìË @  Ìy?d PGþV² @  ÌŽy?d GþväL @  Ìy?d ÐGþƒsÜ @  Ìy?d Hþ·úÿÁ @  Ì‘y?d PHþG…¸ @  Ì’y?d HþgpF @  Ì“y?d ÐHþd*EŠ @  Ì”y?d Iþ´bÉb @  Ì•y?d PIþD3 @  Ì–y?d Iþdè1å @  Ì—y?d ÐIþHþ-É @  Ì ˜y?d JþÕº @  Ì!™y?d PJþ%Åwq @  Ì"šy?d Jþ0u @  Ì#›y?d ÐJþj7C @  Ì$œy?d KþÖ"»« @  Ì%y?d PKþ&]AÒ @  Ì&žy?d Kþ¨C, @  Ì'Ÿy?d ÐKþnþ` @  Ì( y?d Lþw°îo @  Ì)¡y?d PLþ‡Ï @  Ì*¢y?d Lþ§:è @  Ì+£y?d ÐLþ¤`T$ @  Ì,¤y?d Mþt(ØÌ @  Ì-¥y?d PMþ„W"µ @  Ì.¦y?d Mþ¤¢ K @  Ì/§y?d ÐMþ™²× @  Ì0¨y?d Nþö» @  Ì1©y?d PNþô‰Ao @  Ì2ªy?d NþÔ|C‘ @  Ì3«y?d ÐNþ×&] @  Ì4¬y?d Oþnµ @  Ì5­y?d POþ÷wÌ @  Ì6®y?d Oþ×äu2 @  Ì7¯y?d ÐOþ"¢ @  Ì8°y?d PþœÛ® @  Ì9±y?d PPþl¤Ti @  Ì:²y?d PþLQV— @  Ì;³y?d ÐPþO [ @  Ì<´y?d QþŸC˜³ @  Ì=µy?d PQþo¶y?d QþOÉ`4 @  Ì?·y?d ÐQþÍØzŠ @  Ì@¸y?d RþPœÚK @  ÌA¹y?d PRþ ã 2 @  ÌBºy?d Rþ€"Ì @  ÌC»y?d ÐRþƒL` @  ÌD¼y?d SþSìè @  ÌE½y?d PSþ£{‘ @  ÌF¾y?d SþƒŽo @  ÌG¿y?d ÐSþˆ_2 @  ÌHÀy?d TþƬ= @  ÌIÁy?d PTþò¹VD @  ÌJÂy?d TþÒLTº @  ÌKÃy?d ÐTþÑv @  ÌLÄy?d Uþ^šž @  ÌMÅy?d PUþñ!`ç @  ÌNÆy?d UþÑÔb @  ÌOÇy?d ÐUþìÄY… @  ÌPÈy?d Vþq€ùD @  ÌQÉy?d PVþÿ= @  ÌRÊy?d Vþ¡ à @  ÌSËy?d ÐVþ¢PC @  ÌTÌy?d WþrÏç @  ÌUÍy?d PWþ‚g5ž @  ÌVÎy?d Wþ¢’7` @  ÌWÏy?d ÐWþWsPð @  ÌXÐy?d XþcŒÜí @  ÌYÑy?d PXþ“ó&” @  ÌZÒy?d Xþ³$j @  Ì[Óy?d ÐXþ°\f¦ @  Ì\Ôy?d Yþ`êN @  Ì]Õy?d PYþk7 @  Ì^Öy?d Yþ°žÉ @  Ì_×y?d ÐYþœˆå @  Ì`Øy?d ZþÌ®$ @  ÌaÙy?d PZþñ³T] @  ÌbÚy?d ZþÑFV£ @  ÌcÛy?d ÐZþÒo @  ÌdÜy?d [þT˜‡ @  ÌeÝy?d P[þò+bþ @  ÌfÞy?d [þÒÞ` @  Ìgßy?d Ð[þºˆ>L @  Ìhày?d \þ£ÆÍC @  Ìiáy?d P\þS¹7: @  Ìjây?d \þsL5Ä @  Ìkãy?d Ð\þpw @  Ìläy?d ]þ ^ûà @  Ìmåy?d P]þP!™ @  Ìnæy?d ]þpÔg @  Ìoçy?d Ð]þMÄ8û @  Ìpèy?d ^þЀ˜: @  Ìqéy?d P^þ ÿbC @  Ìrêy?d ^þ `½ @  Ìsëy?d Ð^þP"q @  Ìtìy?d _þÓ®™ @  Ìuíy?d P_þ#gTà @  Ìvîy?d _þ’V @  ÌuÐ`þwïy?d Ð_þ‹óBò @  Ìx€ðy?d (`þ5 ÷j @  Ìy€ñy?d h`þÅt  @  Ìz€òy?d ¨`þåí @  Ì{€óy?d è`þæÛM! @  Ì|€ôy?d (aþ6“ÁÉ @  Ì}€õy?d haþÆì;° @  Ì~€öy?d ¨aþæ9N @  Ì€÷y?d èaþ‡^Á @  Ì€€øy?d (bþ³ @  Ì€ùy?d hbþêeIy @  Ì‚€úy?d ¨bþÊK‡ @  Ìƒ€ûy?d èbþÉÊ K @  Ì„€üy?d (cþ‚…£ @  Ì…€ýy?d hcþéýÚ @  Ì†€þy?d ¨cþÉ}$ @  Ì‡€ÿy?d ècþ @  Ìˆ€z?d (dþ˜ÃñÍ @  Ì‰€z?d hdþh¼ ´ @  ÌŠ€z?d ¨dþHI J @  Ì‹€z?d èdþKK† @  ÌŒ€z?d (eþ›[Çn @  Ì€z?d heþk$= @  ÌŽ€z?d ¨eþKÑ?é @  Ì€z?d èeþvÁu @  Ì€z?d (fþë…¤´ @  Ì‘€ z?d hfþú^Í @  Ì’€ z?d ¨fþ;\3 @  Ì“€ z?d èfþ8Uÿ @  Ì”€ z?d (gþè’ @  Ì•€ z?d hgþbhn @  Ì–€z?d ¨gþ8—j @  Ì—€z?d ègþÍv  @  Ì˜€z?d (hþù‰ @  Ì™€z?d hhþ ö{d @  Ìš€z?d ¨hþ)yš @  Ì›€z?d èhþ*Y;V @  Ìœ€z?d (iþú·¾ @  Ì€z?d hiþ nMÇ @  Ìž€z?d ¨iþ*›O9 @  ÌŸ€z?d èiþS @  Ì €z?d (jþ›ÉóÔ @  Ì¡€z?d hjþk¶ ­ @  Ì¢€z?d ¨jþKC S @  Ì£€z?d èjþHIŸ @  Ì¤€z?d (kþ˜QÅw @  Ì¥€z?d hkþh.? @  Ì¦€z?d ¨kþHÛ=ð @  Ì§€z?d èkþ c¼ @  Ì¨€ z?d (lþ9ó @  Ì©€!z?d hlþɼjÊ @  Ìª€"z?d ¨lþéIh4 @  Ì«€#z?d èlþê*ø @  Ì¬€$z?d (mþ:[¦ @  Ì­€%z?d hmþÊ$\i @  Ì®€&z?d ¨mþêÑ^— @  Ì¯€'z?d èmþ×Áe  @  Ì°€(z?d (nþJ…ÅÊ @  Ì±€)z?d hnþºú?³ @  Ì²€*z?d ¨nþš=M @  Ì³€+z?d ènþ™U @  Ì´€,z?d (oþIói @  Ìµ€-z?d hoþ¹b  @  Ì¶€.z?d ¨oþ™— î @  Ì·€/z?d èoþlvl~ @  Ì¸€0z?d (pþÒ¨ÐÌ @  Ì¹€1z?d hpþ"×*µ @  Ìº€2z?d ¨pþ"(K @  Ì»€3z?d èpþxj‡ @  Ì¼€4z?d (qþÑ0æo @  Ì½€5z?d hqþ!O @  Ì¾€6z?d ¨qþºè @  Ì¿€7z?d èqþƒ«V @  ÌÀ€8z?d (rþ珞 @  ÌÁ€9z?d hrþî^î @  Ì€:z?d ¨rþÎe\ @  ÌÀ;z?d èrþÍ?Ü @  ÌÄ€z?d ¨sþÍýj³ @  ÌÇ€?z?d èsþUû!î @  ÌÈ€@z?d (tþLµÒá @  ÌÉ€Az?d htþ¼Ê(˜ @  ÌÊ€Bz?d ¨tþœ?*f @  ÌË€Cz?d ètþŸehª @  ÌÌ€Dz?d (uþO-äB @  ÌÍ€Ez?d huþ¿R; @  Ì΀Fz?d ¨uþŸ§Å @  ÌÏ€Gz?d èuþ¢·'Y @  ÌЀHz?d (vþ?ó‡˜ @  ÌÑ€Iz?d hvþÏŒ}á @  ÌÒ€Jz?d ¨vþïy @  ÌÓ€Kz?d èvþì#=Ó @  ÌÔ€Lz?d (wþ< @  Í€\z?d ({þÙ¥²Ô @  Í€]z?d h{þ쓳@ @  Í€^z?d ¨{þÌf±¾ @  Í€_z?d è{þj‚°ˆ @  Í€`z?d (|þsÌC‡ @  Í€az?d h|þMæ„ @  Í€bz?d ¨|þmôäz @  Í €cz?d è|þ«ç][ @  Í €dz?d (}þ{¯Ñ³ @  Í €ez?d h}þN™Ð' @  Í €fz?d ¨}þnlÒÙ @  Í €gz?d è}þ0oˆß @  Í€hz?d (~þ­+( @  Í€iz?d h~þ>G³ý @  Í€jz?d ¨~þ²± @  Í€kz?d è~þØ¡" @  Í€lz?d (þé„Ê @  Í€mz?d hþ=ß…^ @  Í€nz?d ¨þuЀþ'*‡  @  Í€oz?d èþ[ùÌ6 @  Ípz?d @€þ5G.B @  Íqz?d €€þ©îža @  Írz?d À€þ+‰¿ @  Ísz?d þ¿µ«¨ @  Ítz?d @þ=$¼v @  Íuz?d €þªv¨Â @  Ívz?d Àþ(ç¿ @  Íwz?d ‚þi1R @  Íxz?d @‚þë EÛ @  Íyz?d €‚þË®ì¨ @  Í zz?d À‚þI?ûv @  Í!{z?d ƒþÝõÙa @  Í"|z?d @ƒþ_dο @  Í#}z?d €ƒþÈ6Ú  @  Í$~z?d ÀƒþJ§ÍÕ @  Í%z?d „þš i± @  Í&€z?d @„þ›~o @  Í'z?d €„þ„2ÎL @  Í(‚z?d À„þ£Ù’ @  Í)ƒz?d …þ’iû… @  Í*„z?d @…þøì[ @  Í+…z?d €…þ‡ªøï @  Í,†z?d À…þ;ï1 @  Í-‡z?d †þDí( @  Í.ˆz?d @†þÆ|ö @  Í/‰z?d €†þ÷t›5 @  Í0Šz?d À†þuåŒë @  Í1‹z?d ‡þá/®ü @  Í2Œz?d @‡þc¾¹" @  Í3z?d €‡þôì­– @  Í4Žz?d À‡þv}ºH @  Í5z?d ˆþû@a @  Í6z?d @ˆþyÑ¿ @  Í7‘z?d €ˆþåx¾œ @  Í8’z?d Àˆþgé©B @  Í9“z?d ‰þó#‹U @  Í:”z?d @‰þq²œ‹ @  Í;•z?d €‰þæàˆ? @  Í<–z?d À‰þdqŸá @  Í=—z?d Šþ%§rø @  Í>˜z?d @Šþ§6e& @  Í?™z?d €Šþ)?ÊÇ @  Í@šz?d ÀŠþ«®Ý @  ÍA›z?d ‹þ?dÿ @  ÍBœz?d @‹þ½õèÐ @  ÍCz?d €‹þ*§üd @  ÍDžz?d À‹þ¨6ëº @  ÍEŸz?d Œþ• ] @  ÍF z?d @Œþœƒ @  ÍG¡z?d €Œþ‹5©  @  ÍH¢z?d ÀŒþ ¤¾~ @  ÍI£z?d þnœi @  ÍJ¤z?d @þÿ‹· @  ÍK¥z?d €þˆ­Ÿ @  ÍL¦z?d Àþ <ˆÝ @  ÍM§z?d ŽþKêeÄ @  ÍN¨z?d @ŽþÉ{r @  ÍO©z?d €ŽþøsüÙ @  ÍPªz?d ÀŽþzâë @  ÍQ«z?d þî(É @  ÍR¬z?d @þl¹ÞÎ @  ÍS­z?d €þûëÊz @  ÍT®z?d Àþyzݤ @  ÍU¯z?d þ~fN" @  ÍV°z?d @þü÷Yü @  ÍW±z?d €þ`^éß @  ÍX²z?d ÀþâÏþ @  ÍY³z?d ‘þvÜ @  ÍZ´z?d @‘þô”ËÈ @  Í[µz?d €‘þcÆß| @  Í\¶z?d À‘þáWÈ¢ @  Í]·z?d ’þ %» @  Í^¸z?d @’þ"2e @  Í_¹z?d €’þ› @  Í`ºz?d À’þ€ŒÈ @  Ía»z?d “þE®ß @  Íb¼z?d @“þ–Ô¹ @  Íc½z?d €“þ†­µ @  Íd¾z?d À“þƒºk @  Íe¿z?d ”þN|J @  ÍfÀz?d @”þÌí]C @  ÍgÁz?d €”þPDí` @  ÍhÂz?d À”þÒÕú¾ @  ÍiÃz?d •þFØ© @  ÍjÄz?d @•þÄŽÏw @  ÍkÅz?d €•þSÜÛà @  ÍlÆz?d À•þÑMÌ @  ÍmÇz?d –þ›! @  ÍnÈz?d @–þ 6Ú @  ÍoÉz?d €–þ#¸ @  ÍpÊz?d À–þ¡“¯Ç @  ÍqËz?d —þ5YÐ @  ÍrÌz?d @—þ·Èš @  ÍsÍz?d €—þ šŽº @  ÍtÎz?d À—þ¢ ™d @  ÍuÏz?d ˜þ/6:M @  ÍvÐz?d @˜þ­§-“ @  ÍwÑz?d €˜þ1° @  ÍxÒz?d À˜þ³ŸŠn @  ÍyÓz?d ™þ'U¨y @  ÍzÔz?d @™þ¥Ä¿§ @  Í{Õz?d €™þ2–« @  Í|Öz?d À™þ°¼Í @  Í}×z?d šþñÑQÔ @  Í~Øz?d @šþs@F  @  ÍÙz?d €šþÙÚ @  Í€Úz?d ÀšþœŽÎ @  ÍÛz?d ›þDì @  Í‚Üz?d @›þŠÕûÍ @  ÍƒÝz?d €›þ‡ïy @  Í„Þz?d À›þŸø§ @  Í…ßz?d œþ¢-@ @  Í†àz?d @œþ ¼ ž @  Í‡áz?d €œþ¼º½ @  Íˆâz?d Àœþ>„­c @  Í‰ãz?d þªNt @  ÍŠäz?d @þ(ߘª @  Í‹åz?d €þ¿Œ @  ÍŒæz?d Àþ=›À @  Íçz?d žþ|ÊvÙ @  ÍŽèz?d @žþþ[a @  Íéz?d €žþÏSïÄ @  Íêz?d ÀžþMÂø @  Í‘ëz?d ŸþÙÚ  @  Í’ìz?d @Ÿþ[™ÍÓ @  Í“íz?d €ŸþÌËÙg @  Í”îzuРþ?d ÀŸþNZι @  Í•ïz?d  þ†“?ë @  Í–ðz?d X þ(5 @  Í—ñz?d ˜ þ˜«˜ @  Í˜òz?d Ø þ:È @  Í™óz?d ¡þŽð­ß @  Íšôz?d X¡þ aº @  Í›õz?d ˜¡þ›3®µ @  Íœöz?d Ø¡þ¢¹k @  Í÷z?d ¢þXtTr @  Ížøz?d X¢þÚåC¬ @  ÍŸùz?d ˜¢þúëêß @  Í úz?d Ø¢þxzý @  Í¡ûz?d £þì°ß @  Í¢üz?d X£þn!ÈÈ @  Í£ýz?d ˜£þùsÜ| @  Í¤þz?d Ø£þ{âË¢ @  Í¥ÿz?d ¤þÔ(:Ê @  Í¦{?d X¤þV¹- @  Í§{?d ˜¤þÊ7 @  Í¨{?d ؤþHŠé @  Í©{?d ¥þÜK¨þ @  Íª{?d X¥þ^Ú¿  @  Í«{?d ˜¥þɈ«” @  Í¬{?d Ø¥þK¼J @  Í­{?d ¦þ ÏQS @  Í®{?d X¦þˆ^F @  Í¯ {?d ˜¦þ¹VÈN @  Í° {?d ئþ;Çß @  Í± {?d §þ¯ ý‡ @  Í² {?d X§þ-œêY @  Í³ {?d ˜§þºÎþí @  Í´{?d اþ8_é3 @  Íµ{?d ¨þµbJ @  Í¶{?d X¨þ7ó]Ä @  Í·{?d ˜¨þ«Zíç @  Í¸{?d بþ)Ëú9 @  Í¹{?d ©þ½Ø. @  Íº{?d X©þ?Ïð @  Í»{?d ˜©þ¨ÂÛD @  Í¼{?d Ø©þ*SÌš @  Í½{?d ªþk…!ƒ @  Í¾{?d Xªþé6] @  Í¿{?d ˜ªþg™¼ @  ÍÀ{?d تþ匎b @  ÍÁ{?d «þqF¬u @  ÍÂ{?d X«þó×»« @  ÍÃ{?d ˜«þd…¯ @  ÍÄ{?d Ø«þæ¸Á @  ÍÅ{?d ¬þÛ/]& @  ÍÆ {?d X¬þY¾Jø @  ÍÇ!{?d ˜¬þÅúÛ @  ÍÈ"{?d جþG†í @  ÍÉ#{?d ­þÓLÏ @  ÍÊ${?d X­þQÝØÌ @  ÍË%{?d ˜­þÆÌx @  ÍÌ&{?d Ø­þDÛ¦ @  ÍÍ'{?d ®þÈ6¿ @  ÍÎ({?d X®þ‡Y!a @  ÍÏ){?d ˜®þ¶Q¯¢ @  ÍÐ*{?d Ø®þ4À¸| @  ÍÑ+{?d ¯þ  šk @  ÍÒ,{?d X¯þ"›µ @  ÍÓ-{?d ˜¯þµÉ™ @  ÍÔ.{?d دþ7XŽß @  ÍÕ/{?d °þ0DY @  ÍÖ0{?d X°þ²Õ ‡ @  Í×1{?d ˜°þ.|º¤ @  ÍØ2{?d ذþ¬í­z @  ÍÙ3{?d ±þ8'm @  ÍÚ4{?d X±þº¶˜³ @  ÍÛ5{?d ˜±þ-äŒ @  ÍÜ6{?d رþ¯u›Ù @  ÍÝ7{?d ²þî£vÀ @  ÍÞ8{?d X²þl2a @  Íß9{?d ˜²þL<Èm @  Íà:{?d زþέ߳ @  Íá;{?d ³þZgý¤ @  Íâ<{?d€ X³þ±z @  Î={?d ˜³þo¢Aç @  Î>{?d سþí3V9 @  Î?{?d ´þå]" @  Î@{?d X´þg€Jü @  ÎA{?d ˜´þ5›¥¥ @  ÎB{?d Ø´þ· ²{ @  ÎC{?d µþírÏ @  ÎD{?d XµþoãØÈ @  Î E{?d ˜µþ=ø7‘ @  Î F{?d صþ¿i O @  Î G{?d ¶þ;ö6» @  Î H{?d X¶þ¹g!e @  Î I{?d ˜¶þë|Î< @  ÎJ{?d ضþiíÙâ @  ÎK{?d ·þž4šo @  ÎL{?d X·þ¥± @  ÎM{?d ˜·þN¾bè @  ÎN{?d Ø·þÌ/u6 @  ÎO{?d ¸þ„[-ò @  ÎP{?d X¸þÊ:, @  ÎQ{?d ˜¸þTÑÕu @  ÎR{?d ظþÖ@« @  ÎS{?d ¹þŒ8¿Æ @  ÎT{?d X¹þ©¨ @  ÎU{?d ˜¹þ\²GA @  ÎV{?d عþÞ#PŸ @  ÎW{?d ºþZ¼Fk @  ÎX{?d XºþØ-Qµ @  ÎY{?d ˜ºþŠ6¾ì @  ÎZ{?d غþ§©2 @  Î[{?d »þîxÍ @  Î \{?d X»þléÚÑ @  Î!]{?d ˜»þ>ò5ˆ @  Î"^{?d Ø»þ¼c"V @  Î#_{?d ¼þD<\ @  Î$`{?d X¼þÆ€+‚ @  Î%a{?d ˜¼þ”›ÄÛ @  Î&b{?d ؼþ Ó @  Î'c{?d ½þLr®h @  Î(d{?d X½þÎã¹¶ @  Î)e{?d ˜½þœøVï @  Î*f{?d ؽþiA1 @  Î+g{?d ¾þšöWÅ @  Î,h{?d X¾þg@ @  Î-i{?d ˜¾þJ|¯B @  Î.j{?d ؾþÈí¸œ @  Î/k{?d ¿þ?4û @  Î0l{?d X¿þ½¥ìÏ @  Î1m{?d ˜¿þï¾– @uÐÀþ  Î2n{?d Ø¿þm/H @  Î3o{?d 0ÀþuT‘à @  Î4p{?d pÀþ÷ņ @  Î5q{?d °Àþ¥ÞiD @  Î6r{?d ðÀþ'O~š @  Î7s{?d 0Áþ}7÷ @  Î8t{?d pÁþÿ¦) @  Î9u{?d °Áþ­½ûp @  Î:v{?d ðÁþ/,ì® @  Î;w{?d 0Âþ«³úZ @  Î<x{?d pÂþ)"í„ @  Î=y{?d °Âþ{9Ý @  Î>z{?d ðÂþù¨ @  Î?{{?d 0Ãþ±pw¬ @  Î@|{?d pÃþ3á`r @  ÎA}{?d °Ãþaú+ @  ÎB~{?d ðÃþãk˜õ @  ÎC{?d 0ÄþöÇ| @  ÎD€{?d pÄþtТ @  ÎE{?d °Äþ&?û @  ÎF‚{?d ðÄþ¤”(% @  ÎGƒ{?d 0ÅþþìUH @  ÎH„{?d pÅþ|}B– @  ÎI…{?d °Åþ.f­Ï @  ÎJ†{?d ðÅþ¬÷º @  ÎK‡{?d 0Æþ(h¬å @  ÎLˆ{?d pÆþªù»; @  ÎM‰{?d °ÆþøâTb @  ÎNŠ{?d ðÆþzsC¼ @  ÎO‹{?d 0Çþª1 @  ÎPŒ{?d pÇþ;ï @  ÎQ{?d °Çþ] ø¶ @  ÎRŽ{?d ðÇþß±ïh @  ÎS{?d 0Èþ—Å·¬ @  ÎT{?d pÈþT r @  ÎU‘{?d °ÈþGOO+ @  ÎV’{?d ðÈþÅÞXõ @  ÎW“{?d 0ÉþŸ¦%˜ @  ÎX”{?d pÉþ72F @  ÎY•{?d °ÉþO,Ý @  ÎZ–{?d ðÉþͽÊÁ @  Î[—{?d 0ÊþI"Ü5 @  Î\˜{?d pÊþ˳Ëë @  Î]™{?d °Êþ™¨$² @  Î^š{?d ðÊþ93l @  Î_›{?d 0ËþýæWQ @  Î`œ{?d pËþw@ @  Îa{?d °Ëþ-l¯Ö @  Îbž{?d ðËþ¯ý¸ @  ÎcŸ{?d 0ÌþW¦ @  Îd {?d pÌþÕ±Ü @  Îe¡{?d °Ìþ‡^… @  Îf¢{?d ðÌþ”I[ @  Îg£{?d 0Íþ_ì46 @  Îh¤{?d pÍþÝ}#è @  Îi¥{?d °Íþf̱ @  Îj¦{?d ðÍþ ÷Ûo @  Îk§{?d 0Îþ‰hÍ› @  Îl¨{?d pÎþ ùÚE @  Îm©{?d °ÎþYâ5 @  Înª{?d ðÎþÛs" @  Îo«{?d 0Ïþ,ªaO @  Îp¬{?d pÏþ®;v‘ @  Îq­{?d °Ïþü ™È @  Îr®{?d ðÏþ~±Ž @  Îs¯{?d 0Ðþ¼äæ} @  Ît°{?d pÐþ>uñ£ @  Îu±{?d °Ðþlnú @  Îv²{?d ðÐþîÿ $ @  Îw³{?d 0Ñþ´‡tI @  Îx´{?d pÑþ6c— @  Îyµ{?d °Ñþd ŒÎ @  Îz¶{?d ðÑþ望 @  Î{·{?d 0Òþbä @  Î|¸{?d pÒþà’š: @  Î}¹{?d °Òþ²‰uc @  Î~º{?d ðÒþ0b½ @  Î»{?d 0Óþ›–0# @  Î€¼{?d pÓþ'ý @  Î½{?d °ÓþKȤ @  Î‚¾{?d ðÓþÉßz @  Îƒ¿{?d 0ÔþÁ¯Ôa @  Î„À{?d pÔþC>ÿ @  Î…Á{?d °Ôþ%,æ @  Î†Â{?d ðÔþ“´;8 @  Î‡Ã{?d 0ÕþÉÌFU @  ÎˆÄ{?d pÕþK]Q‹ @  Î‰Å{?d °ÕþF¾Ò @  ÎŠÆ{?d ðÕþ›×©  @  Î‹Ç{?d 0ÖþH¿ø @  ÎŒÈ{?d pÖþÙ¨& @  ÎÉ{?d °ÖþÏÂG @  ÎŽÊ{?d ðÖþMSP¡ @  ÎË{?d 0×þºŠ, @  ÎÌ{?d p×þ8ò @  Î‘Í{?d °×þjë« @  Î’Î{?d ð×þè‘üu @  Î“Ï{?d 0Øþ å¤± @  Î”Ð{?d pØþ"t³o @  Î•Ñ{?d °Øþpo\6 @  Î–Ò{?d ðØþòþKè @  Î—Ó{?d 0Ùþ¨†6… @  Î˜Ô{?d pÙþ*![ @  Î™Õ{?d °Ùþx Î @  ÎšÖ{?d ðÙþúÙÜ @  Î›×{?d 0Úþ~Ï( @  ÎœØ{?d pÚþü“Øö @  ÎÙ{?d °Úþ®ˆ7¯ @  ÎžÚ{?d ðÚþ, q @  ÎŸÛ{?d 0ÛþÊÆDL @  Î Ü{?d pÛþHWS’ @  Î¡Ý{?d °ÛþL¼Ë @  Î¢Þ{?d ðÛþ˜Ý« @  Î£ß{?d 0Üþ`¯µ @  Î¤à{?d pÜþâ>¢Á @  Î¥á{?d °Üþ°%M˜ @  Î¦â{?d ðÜþ2´ZF @  Î§ã{?d 0ÝþhÌ'+ @  Î¨ä{?d pÝþê]0õ @  Î©å{?d °Ýþ¸F߬ @  Îªæ{?d ðÝþ:×Èr @  Î«ç{?d 0Þþ¾HÞ† @  Î¬è{?d pÞþ<ÙÉX @  Î­é{?d °ÞþnÂ& @  Î®ê{?d ðÞþìS1ß @  Î¯ë{?d 0ßþŠrR @  Î°ì{?d pßþ™eŒ @  Î±í{?d uÐàþ/°ßþËŠÕ @  Î²î{?d ðßþI‘  @  Î³ï{?d Hàþ,¾$ @  Î´ð{?d ˆàþ KÚ @  Îµñ{?d Èàþü4ï£ @  Î¶ò{?d áþ,|cK @  Î·ó{?d Háþ$Ý… @  Î¸ô{?d ˆáþ(‡î @  Î¹õ{?d ÈáþôW}— @  Îºö{?d âþiÝV @  Î»÷{?d HâþòY|½ @  Î¼ø{?d ˆâþÒ¬~C @  Î½ù{?d Èâþ"Ó„: @  Î¾ú{?d ãþò›Ò @  Î¿û{?d HãþèšñK @  ÎÀü{?d ˆãþÈoóµ @  ÎÁý{?d Èãþ8 Ì @  ÎÂþ{?d äþ!^úà @  ÎÃÿ{?d Häþì + @  ÎÄ|?d ˆäþÌþ)ÿ @  ÎÅ|?d Èäþ<Ó† @  ÎÆ|?d åþìÉ_n @  ÎÇ|?d Håþäh¹5 @  ÎÈ|?d ˆåþÄ»Ë @  ÎÉ|?d Èåþ4âA² @  ÎÊ|?d æþ©¦ás @  ÎË|?d Hæþ2ì@˜ @  ÎÌ|?d ˆæþBf @  ÎÍ |?d Èæþâf¸ @  ÎÎ |?d çþ2.4÷ @  ÎÏ |?d Hçþ—.ìL @  ÎÐ |?d ˆçþ·Ûî² @  ÎÑ |?d ÈçþG¤Ë @  ÎÒ|?d èþs[˜Ö @  ÎÓ|?d HèþA[Ñ @  ÎÔ|?d ˆèþ­´Y/ @  ÎÕ|?d Èèþ]Ë£V @  ÎÖ|?d éþƒ/¾ @  Î×|?d Héþ…"Éå @  ÎØ|?d ˆéþ¥×Ë @  ÎÙ|?d ÈéþU¨1b @  ÎÚ|?d êþÈì‘£ @  ÎÛ|?d HêþS¦0H @  ÎÜ|?d ˆêþsS2¶ @  ÎÝ|?d Èêþƒ,ÈÏ @  ÎÞ|?d ëþSdD' @  Îß|?d Hëþçb», @  Îà|?d ˆëþÇ—¹Ò @  Îá|?d Èëþ7èC« @  Îâ|?d€ ìþZe¬ @  Ï|?d Hìþ؉ð @  Ï |?d ˆìþø| @  Ï!|?d ÈìþÍJš @  Ï"|?d íþ‘r @  Ï#|?d HíþÛ(S @  Ï$|?d ˆíþûä*­ @  Ï%|?d ÈíþÅ)® @  Ï&|?d îþXm/o @  Ï '|?d Hîþnui @  Ï (|?d ˆîþ&›w— @  Ï )|?d Èîþ­v @  Ï *|?d ïþÃåúë @  Ï +|?d HïþöCÊ @  Ï,|?d ˆïþ%A4 @  Ï-|?d Èïþ¶oÚ× @  Ï.|?d ðþ±fe @  Ï/|?d Hðþ3â^ @  Ï0|?d ˆðþ\q @  Ï1|?d Èðþ&!]å @  Ï2|?d ñþöiÑ  @  Ï3|?d Hñþ0zh, @  Ï4|?d ˆñþjÒ @  Ï5|?d Èñþ.BÏÑ @  Ï6|?d òþ³o @  Ï7|?d Hòþí5 @  Ï8|?d ˆòþÍð7è @  Ï9|?d ÈòþøÆ6| @  Ï:|?d óþ(Žº” @  Ï;|?d Hóþîµ @  Ï<|?d ˆóþÎhK @  Ï=|?d ÈóþL½ @  Ï >|?d ôþULN @  Ï!?|?d HôþøZ0 @  Ï"@|?d ˆôþ# XÎ @  Ï#A|?d Èôþ;YZ @  Ï$B|?d õþÆsÕ² @  Ï%C|?d Hõþ`l“ @  Ï&D|?d ˆõþ •nm @  Ï'E|?d ÈõþXËn @  Ï(F|?d öþƒk¯ @  Ï)G|?d HöþÝ1© @  Ï*H|?d ˆöþýê3W @  Ï+I|?d ÈöþÈÜ2à @  Ï,J|?d ÷þ”¾+ @  Ï-K|?d H÷þÞ‡  @  Ï.L|?d ˆ÷þþrô @  Ï/M|?d È÷þmž @  Ï0N|?d øþYá  @  Ï1O|?d Høþb²*à @  Ï2P|?d ˆøþBG( @  Ï3Q|?d Èøþwq)Š @  Ï4R|?d ùþ§9¥b @  Ï5S|?d Hùþa*C @  Ï6T|?d ˆùþAß½ @  Ï7U|?d Èùþ»¾ @  Ï8V|?d úþâV @  Ï9W|?d Húþ¼UAy @  Ï:X|?d ˆúþœ C‡ @  Ï;Y|?d Èúþ©–B @  Ï<Z|?d ûþyÞÎû @  Ï=[|?d Hûþ¿ÍwÚ @  Ï>\|?d ˆûþŸ8u$ @  Ï?]|?d Èûþ³UÏå @  Ï@^|?d üþª<ê @  ÏA_|?d Hüþ ÿ=Ü @  ÏB`|?d ˆüþ, ?" @  ÏCa|?d Èüþ<>¶ @  ÏDb|?d ýþÉt²^ @  ÏEc|?d Hýþg  @  ÏFd|?d ˆýþ/’  @  ÏGe|?d Èýþ_¬‚ @  ÏHf|?d þþŒ C @  ÏIg|?d HþþÒVE @  ÏJh|?d ˆþþòíT» @  ÏKi|?d ÈþþÇÛU/ @  ÏLj|?d ÿþ“ÙÇ @  ÏMk|?d HÿþÑ€`æ @  ÏNl|?d ˆÿþñub @  ÏOuÐÿm|?d Èÿþbùû @  ÏPn|?d ÿ-­Ñ  @  ÏQo|?d `ÿþéà @  ÏRp|?d  ÿ6 ë @  ÏSq|?d àÿ=êŠ @  ÏTr|?d ÿÓufb @  ÏUs|?d `ÿfßC @  ÏVt|?d  ÿ5“ݽ @  ÏWu|?d àÿ ^x¾ @  ÏXv|?d ÿ–Ø @  ÏYw|?d `ÿÈ‚y @  ÏZx|?d  ÿè쀇 @  Ï[y|?d àÿÝÚ @  Ï\z|?d ÿ ’ û @  Ï]{|?d `ÿË´Ú @  Ï^||?d  ÿët¶$ @  Ï_}|?d àÿi w @  Ï`~|?d ÿpPùx @  Ïa|?d `ÿ;"¹Í @  Ïb€|?d  ÿ×»3 @  Ïc|?d àÿ.ầ @  Ïd‚|?d ÿþ©6O @  Ïeƒ|?d `ÿ8ºn @  Ïf„|?d  ÿO @  Ïg…|?d àÿ&‚(“ @  Ïh†|?d ÿ»ÆˆR @  Ïi‡|?d `ÿåÅÒT @  Ïjˆ|?d  ÿÅ0Ъ @  Ïk‰|?d àÿðÑ> @  ÏlŠ|?d ÿ N]Ö @  Ïm‹|?d `ÿæ]ä÷ @  ÏnŒ|?d  ÿƨæ  @  Ïo|?d àÿUÄ}ê @  ÏpŽ|?d ÿa;ñ÷ @  Ïq|?d `ÿZhÉ @  Ïr|?d  ÿzËã @  Ïs‘|?d àÿO«Êw @  Ït’|?d ÿŸãFŸ @  Ïu“|?d ` ÿYðÿ¾ @  Ïv”|?d   ÿyý@ @  Ïw•|?d à ÿGÈXC @  Ïx–|?d ÿÚŒø‚ @  Ïy—|?d ` ÿ„¢„ @  Ïz˜|?d   ÿ¤z z @  Ï{™|?d à ÿ‘L¡î @  Ï|š|?d ÿA- @  Ï}›|?d ` ÿ‡”' @  Ï~œ|?d   ÿ§â–Ù @  Ï|?d à ÿhÙ) @  Ï€ž|?d ÿq—ï& @  ÏŸ|?d ` ÿ×sî @  Ï‚ |?d   ÿ÷†ìî @  Ïƒ¡|?d à ÿ°íz @  Ï„¢|?d ÿøa’ @  Ï…£|?d ` ÿÔëØ³ @  Ï†¤|?d   ÿôÚM @  Ï‡¥|?d à ÿÊÓN @  Ïˆ¦|?d ÿW—ß @  Ï‰§|?d `ÿ ”…‰ @  ÏЍ|?d  ÿ)a‡w @  Ï‹©|?d àÿW†ã @  ÏŒª|?d ÿÌ  @  Ï«|?d `ÿ ³* @  Ïެ|?d  ÿ*ù±Ô @  Ï­|?d àÿ¹•*7 @  Ï®|?d ÿK–… @  Ï‘¯|?d `ÿ<®o @  Ï’°|?d  ÿí¬‘ @  Ï“±|?d àÿ)Û­ @  Ï”²|?d ÿù“!í @  Ï•³|?d `ÿ?€˜Ì @  Ï–´|?d  ÿuš2 @  Ï—µ|?d àÿ!¸?1 @  Ï˜¶|?d ÿ¼üŸð @  Ï™·|?d `ÿâÿÅö @  Ïš¸|?d  ÿ Ç @  Ï›¹|?d àÿ÷<Æœ @  Ïœº|?d ÿ'tJt @  Ï»|?d `ÿágóU @  Ïž¼|?d  ÿÁ’ñ« @  ÏŸ½|?d àÿCøMø @  Ï ¾|?d ÿZ¶¾÷ @  Ï¡¿|?d `ÿ ªÐ @  Ï¢À|?d  ÿ,÷¨. @  Ï£Á|?d àÿÁ©º @  Ï¤Â|?d ÿɉ%R @  Ï¥Ã|?d `ÿšœs @  Ï¦Ä|?d  ÿ/ož @  Ï§Å|?d àÿ¢;Ž @  Ï¨Æ|?d ÿŒæ›O @  Ï©Ç|?d `ÿÒåÁI @  ÏªÈ|?d  ÿò÷ @  Ï«É|?d àÿÇ&Â# @  Ï¬Ê|?d ÿnNË @  Ï­Ë|?d `ÿÑ}÷ê @  Ï®Ì|?d  ÿñˆõ @  Ï¯Í|?d àÿbän÷ @  Ï°Î|?d ÿVâê @  Ï±Ï|?d `ÿmHÚ @  Ï²Ð|?d  ÿM½Øþ @  Ï³Ñ|?d àÿx‹Ùj @  Ï´Ò|?d ÿ¨ÃU‚ @  ÏµÓ|?d `ÿnÐì£ @  Ï¶Ô|?d  ÿN%î] @  Ï·Õ|?d àÿpèK^ @  Ï¸Ö|?d ÿí¬ëŸ @  Ï¹×|?d `ÿ³¯±™ @  ÏºØ|?d  ÿ“Z³g @  Ï»Ù|?d àÿ¦l²ó @  Ï¼Ú|?d ÿv$> @  Ï½Û|?d `ÿ°7‡: @  Ï¾Ü|?d  ÿÂ…Ä @  Ï¿Ý|?d àÿ¼¯? @  ÏÀÞ|?d ÿ¥áÌ  @  ÏÁß|?d `ÿÍ< @  ÏÂà|?d  ÿ#ðÏ @  ÏÃá|?d àÿÆÎV @  ÏÄâ|?d ÿÆŽB¾ @  ÏÅã|?d `ÿûŸ @  ÏÆä|?d  ÿ hùa @  ÏÇå|?d àÿ¥\b @  ÏÈæ|?d ÿƒáü£ @  ÏÉç|?d `ÿÝ⦥ @  ÏÊè|?d  ÿý¤[ @  ÏËé|?d àÿÈ!¥Ï @  ÏÌê|?d ÿi)' @  ÏÍë|?d `ÿÞz @  ÏÎì|?d  ÿþ’øuÐ ÿ @  ÏÏí|?d àÿmã  @  ÏÐî|?d 8 ÿè×} @  ÏÑï|?d x ÿ'»ï— @  ÏÒð|?d ¸ ÿNíi @  ÏÓñ|?d ø ÿ2xìý @  ÏÔò|?d 8!ÿâ0` @  ÏÕó|?d x!ÿ$#Ù4 @  ÏÖô|?d ¸!ÿÖÛÊ @  Ï×õ|?d ø!ÿ:~É @  ÏØö|?d 8"ÿ§_Þ @  ÏÙ÷|?d x"ÿù\„ @  ÏÚø|?d ¸"ÿÙ©†ð @  ÏÛù|?d ø"ÿ쟇d @  ÏÜú|?d 8#ÿ<× Œ @  ÏÝû|?d x#ÿúIJ­ @  ÏÞü|?d ¸#ÿÚ1°S @  Ïßý|?d ø#ÿX[  @  Ïàþ|?d 8$ÿAÿ @  Ïáÿ|?d x$ÿuê¶ @  Ïâ}?d€ ¸$ÿ>©¦ @  Ð}?d ø$ÿêÞM @  Ð}?d 8%ÿ:–Áó @  Ð}?d x%ÿ9̃? @  Ð}?d ¸%ÿ9Á @  Ð}?d ø%ÿéF{¸ @  Ð}?d 8&ÿtÛy @  Ð}?d x&ÿä³Þ @  Ð}?d ¸&ÿÄFÜû @  Ð  }?d ø&ÿ49&‚ @  Ð  }?d 8'ÿäqªj @  Ð  }?d x'ÿç+è¦ @  Ð  }?d ¸'ÿÇÞêX @  Ð  }?d ø'ÿ7¡! @  Ð}?d 8(ÿ^œ< @  Ð}?d x(ÿ[ÅL @  Ð}?d ¸(ÿ{ëDz @  Ð}?d ø(ÿ‹”=Ë @  Ð}?d 8)ÿ[ܱ# @  Ð}?d x)ÿX†óï @  Ð}?d ¸)ÿxsñ @  Ð}?d ø)ÿˆ h @  Ð}?d 8*ÿH«© @  Ð}?d x*ÿ…ù®Õ @  Ð}?d ¸*ÿ¥ ¬+ @  Ð}?d ø*ÿUsVR @  Ð}?d 8+ÿ…;Úº @  Ð}?d x+ÿ†a˜v @  Ð}?d ¸+ÿ¦”šˆ @  Ð}?d ø+ÿVë`ñ @  Ð}?d 8,ÿO¥“þ @  Ð}?d x,ÿ›TÔâ @  Ð  }?d ¸,ÿ»¡Ö @  Ð!!}?d ø,ÿKÞ,e @  Ð""}?d 8-ÿ›–  @  Ð##}?d x-ÿ˜ÌâA @  Ð$$}?d ¸-ÿ¸9à¿ @  Ð%%}?d ø-ÿHFÆ @  Ð&&}?d 8.ÿÕº @  Ð''}?d x.ÿE³¿{ @  Ð((}?d ¸.ÿeF½… @  Ð))}?d ø.ÿ•9Gü @  Ð**}?d 8/ÿEqË @  Ð++}?d x/ÿF+‰Ø @  Ð,,}?d ¸/ÿfÞ‹& @  Ð--}?d ø/ÿ–¡q_ @  Ð..}?d 80ÿ(Íí @  Ð//}?d x0ÿp?” @  Ð00}?d ¸0ÿPÊ–c @  Ð11}?d ø0ÿ µl @  Ð22}?d 81ÿpýàò @  Ð33}?d x1ÿs§¢> @  Ð44}?d ¸1ÿSR À @  Ð55}?d ø1ÿ£-Z¹ @  Ð66}?d 82ÿ>iúx @  Ð77}?d x2ÿ®Øÿ @  Ð88}?d ¸2ÿŽ-ýú @  Ð99}?d ø2ÿ~Rƒ @  Ð::}?d 83ÿ®‹k @  Ð;;}?d x3ÿ­@ɧ @  Ð<<}?d ¸3ÿµËY @  Ð==}?d ø3ÿ}Ê1  @  Ð>>}?d 84ÿd„Â/ @  Ð??}?d x4ÿî"–° @  Ð@@}?d ¸4ÿÎ×”N @  ÐAA}?d ø4ÿ>¨n7 @  ÐBB}?d 85ÿîàâß @  ÐCC}?d x5ÿíº  @  ÐDD}?d ¸5ÿÍO¢í @  ÐEE}?d ø5ÿ=0X” @  ÐFF}?d 86ÿ tøU @  ÐGG}?d x6ÿ0Åý) @  ÐHH}?d ¸6ÿ0ÿ× @  ÐII}?d ø6ÿàO® @  ÐJJ}?d 87ÿ0‰F @  ÐKK}?d x7ÿ3]ËŠ @  ÐLL}?d ¸7ÿ¨Ét @  ÐMM}?d ø7ÿã×3  @  ÐNN}?d 88ÿ×(¿ @  ÐOO}?d x8ÿhæ` @  ÐPP}?d ¸8ÿ¯äž @  ÐQQ}?d ø8ÿ_âç @  ÐRR}?d 89ÿª’ @  ÐSS}?d x9ÿŒðÐà @  ÐTT}?d ¸9ÿ¬Ò= @  ÐUU}?d ø9ÿ\z(D @  ÐVV}?d 8:ÿÁ>ˆ… @  ÐWW}?d x:ÿQù @  ÐXX}?d ¸:ÿqz @  ÐYY}?d ø:ÿu~ @  ÐZZ}?d 8;ÿQMù– @  Ð[[}?d x;ÿR»Z @  Ð\\}?d ¸;ÿr⹤ @  Ð]]}?d ø;ÿ‚CÝ @  Ð^^}?d 8<ÿ›Ó°Ò @  Ð__}?d x<ÿO"÷Î @  Ð``}?d ¸<ÿo×õ0 @  Ðaa}?d ø<ÿŸ¨I @  Ðbb}?d 8=ÿOàƒ¡ @  Ðcc}?d x=ÿLºÁm @  Ðdd}?d ¸=ÿlOÓ @  Ðee}?d ø=ÿœ09ê @  Ðff}?d 8>ÿt™+ @  Ðgg}?d x>ÿ‘ÅœW @  Ðhh}?d ¸>ÿ±0ž© @  Ðii}?d ø>ÿAOdÐ @  Ðjj}?d 8?ÿ‘è8 @  Ðkk}?d x?ÿ’]ªô @  Ðll}?duÐ@ÿ7 ¸?ÿ²¨¨  @  Ðmm}?d ø?ÿB×Rs @  Ðnn}?d P@ÿ{èO @  Ðoo}?d @ÿ{_¤ @  Ðpp}?d Ð@ÿùγÁ @  Ðqq}?d Aÿ[hÒŽ @  Ðrr}?d PAÿÙùÅP @  Ðss}?d AÿxÇ’¼ @  Ðtt}?d ÐAÿúV…b @  Ðuu}?d BÿüÈ @  Ðvv}?d PBÿ—mßÚ @  Ðww}?d Bÿ¥¸Ï† @  Ðxx}?d ÐBÿ')ØX @  Ðyy}?d Cÿ…¹ @  Ðzz}?d PCÿ®É @  Ð{{}?d Cÿ¦ ù% @  Ð||}?d ÐCÿ$±îû @  Ð}}}?d DÿOðS @  Ð~~}?d PDÿÍ€ç @  Ð}?d DÿÒ‘ @  Ð€€}?d ÐDÿ™CÕO @  Ð}?d Eÿ;å´ @  Ð‚‚}?d PEÿ¹t£Þ @  Ðƒƒ}?d EÿJô2 @  Ð„„}?d ÐEÿšÛãì @  Ð……}?d Fÿuq®Š @  Ð††}?d PFÿ÷à¹T @  Ð‡‡}?d FÿÅ5© @  Ðˆˆ}?d ÐFÿG¤¾Ö @  Ð‰‰}?d Gÿåß™ @  ÐŠŠ}?d PGÿg“ÈG @  Ð‹‹}?d GÿÆ­Ÿ« @  ÐŒŒ}?d ÐGÿD<ˆu @  Ð}?d Hÿ-éÏ @  ÐŽŽ}?d PHÿ€¼þ @  Ð}?d Hÿz˜²A @  Ð}?d ÐHÿø ¥Ÿ @  Ð‘‘}?d IÿZ¯ÄÐ @  Ð’’}?d PIÿØ>Ó @  Ð““}?d Iÿy„â @  Ð””}?d ÐIÿû‘“< @  Ð••}?d Jÿ;ÞZ @  Ð––}?d PJÿ–ªÉ„ @  Ð——}?d Jÿ¤ÙØ @  Ð˜˜}?d ÐJÿ&îÎ @  Ð™™}?d Kÿ„H¯I @  Ðšš}?d PKÿÙ¸— @  Ð››}?d Kÿ§çï{ @  Ðœœ}?d ÐKÿ%vø¥ @  Ð}?d LÿNÖæ  @  Ðžž}?d PLÿÌGñÓ @  ÐŸŸ}?d LÿºÒ£ï @  Ð  }?d ÐLÿ8C´1 @  Ð¡¡}?d MÿšåÕ~ @  Ð¢¢}?d PMÿt  @  Ð££}?d Mÿ¹J•L @  Ð¤¤}?d ÐMÿ;Û‚’ @  Ð¥¥}?d NÿÔqÏô @  Ð¦¦}?d PNÿVàØ* @  Ð§§}?d Nÿd5Èv @  Ð¨¨}?d ÐNÿæ¤ß¨ @  Ð©©}?d OÿD¾ç @  Ðªª}?d POÿÆ“©9 @  Ð««}?d Oÿg­þÕ @  Ð¬¬}?d ÐOÿå<é  @  Ð­­}?d Pÿ) ¸ @  Ð®®}?d PPÿ«¯À @  Ð¯¯}?d PÿQ¹ã @  Ð°°}?d ÐPÿÓ(ôN @  Ð±±}?d QÿqŽ• @  Ð²²}?d PQÿó‚ß @  Ð³³}?d QÿR!Õ3 @  Ð´´}?d ÐQÿаÂí @  Ðµµ}?d Rÿ?‹ @  Ð¶¶}?d PRÿ½‹˜U @  Ð··}?d Rÿ^ˆ  @  Ð¸¸}?d ÐRÿ ÏŸ× @  Ð¹¹}?d Sÿ¯iþ˜ @  Ðºº}?d PSÿ-øéF @  Ð»»}?d SÿŒÆ¾ª @  Ð¼¼}?d ÐSÿW©t @  Ð½½}?d Tÿe÷·Ü @  Ð¾¾}?d PTÿçf  @  Ð¿¿}?d TÿϤá½ @  ÐÀÀ}?d ÐTÿM5öc @  ÐÁÁ}?d Uÿï“—, @  ÐÂÂ}?d PUÿm€ò @  ÐÃÃ}?d UÿÌ<× @  ÐÄÄ}?d ÐUÿN­ÀÀ @  ÐÅÅ}?d Vÿ¡¦ @  ÐÆÆ}?d PVÿ#–šx @  ÐÇÇ}?d VÿCŠ$ @  ÐÈÈ}?d ÐVÿ“Òú @  ÐÉÉ}?d Wÿ1tüµ @  ÐÊÊ}?d PWÿ³åëk @  ÐËË}?d WÿÛ¼‡ @  ÐÌÌ}?d ÐWÿJ«Y @  ÐÍÍ}?d XÿÖ[Êã @  ÐÎÎ}?d PXÿTÊÝ= @  ÐÏÏ}?d Xÿ®î‘m @  ÐÐÐ}?d ÐXÿ,†³ @  ÐÑÑ}?d YÿŽÙçü @  ÐÒÒ}?d PYÿ Hð" @  ÐÓÓ}?d Yÿ­v§Î @  ÐÔÔ}?d ÐYÿ/ç° @  ÐÕÕ}?d ZÿÀMýv @  ÐÖÖ}?d PZÿBÜê¨ @  Ð××}?d Zÿp úô @  ÐØØ}?d ÐZÿò˜í* @  ÐÙÙ}?d [ÿP>Œe @  ÐÚÚ}?d P[ÿÒ¯›» @  ÐÛÛ}?d [ÿs‘ÌW @  ÐÜÜ}?d Ð[ÿñÛ‰ @  ÐÝÝ}?d \ÿš Å! @  ÐÞÞ}?d P\ÿ1Òÿ @  Ðßß}?d \ÿn¤€Ã @  Ðàà}?d Ð\ÿì5— @  Ðáá}?d ]ÿN“öR @  Ðââ}?d€ P]ÿ¸Áý* @  Ñã}?d ]ÿø¾âï @  Ñä}?d Ð]ÿz/õ1 @  Ñå}?d ^ÿPÌCº @  Ñæ}?d P^ÿÒ]Td @  Ñç}?d ^ÿ.:B @  Ñè}?d Ð^ÿ¬« œ @  Ñé}?d _ÿÀ¿2© @  Ñê}?d P_ÿB.%w @  Ñ ë}?d _ÿ&Y‰v @  ÑuÐ`ÿ ì}?d Ð_ÿB} @  Ñ í}?d (`ÿ”Pᯠ@  Ñ î}?d h`ÿÁöq @  Ñ ï}?d ¨`ÿöÛ» @  Ñ ð}?d è`ÿ gÌe @  Ñ ñ}?d (aÿÌÒ̰ @  Ñ ò}?d haÿNCÛn @  Ñ ó}?d ¨aÿ*4wo @  Ñ ô}?d èaÿ¨¥`± @  Ñ õ}?d (bÿ‚FÖ: @  Ñ ö}?d hbÿ×Áä @  Ñ ÷}?d ¨bÿü°ŽÂ @  Ñ ø}?d èbÿ~!™ @  Ñ ù}?d (cÿ5§) @  Ñ ú}?d hcÿ¤°÷ @  Ñ û}?d ¨cÿôÓö @  Ñ ü}?d ècÿvB ( @  Ñ ý}?d (dÿØ«îm @  Ñ þ}?d hdÿZ:ù³ @  Ñ ÿ}?d ¨dÿ~iÌ @  Ñ ~?d èdÿüøÛÑ @  Ñ ~?d (eÿ,Kü´ @  Ñ ~?d heÿ®Úëj @  Ñ! ~?d ¨eÿÊ­Gk @  Ñ" ~?d èeÿH @  Ñ$ ~?d hfÿàNñà @  Ñ% ~?d ¨fÿ)¾Æ @  Ñ& ~?d èfÿ§uÍ @  Ñ' ~?d (gÿËkKø @  Ñ( ~?d hgÿIú\& @  Ñ) ~?d ¨gÿ-ð' @  Ñ* ~?d ègÿ¯çù @  Ñ+ ~?d (hÿ,D}® @  Ñ,~?d hhÿ®Õjp @  Ñ-~?d ¨hÿ7âGº @  Ñ.~?d èhÿµsPd @  Ñ/~?d (iÿtÆP± @  Ñ0~?d hiÿöWGo @  Ñ1~?d ¨iÿ’ ën @  Ñ2~?d èiÿ±ü° @  Ñ3~?d (jÿ:RJ; @  Ñ4~?d hjÿ¸Ã]å @  Ñ5~?d ¨jÿD¤Ã @  Ñ6~?d èjÿÆ5 @  Ñ7~?d (kÿª!;( @  Ñ8~?d hkÿ(°,ö @  Ñ9~?d ¨kÿLÇ€÷ @  Ñ:~?d èkÿÎV—) @  Ñ;~?d (lÿ`¿rl @  Ñ<~?d hlÿâ.e² @  Ñ=~?d ¨lÿæ®q¤ @  Ñ> ~?d èlÿd?fz @  Ñ?!~?d (mÿ‹G @  Ñ@"~?d hmÿ˜PS @  ÑA#~?d ¨mÿümüR @  ÑB$~?d èmÿ~üëŒ @  ÑC%~?d (nÿT] @  ÑD&~?d hnÿÖŽJÙ @  ÑE'~?d ¨nÿ*éÿ @  ÑF(~?d ènÿ¨x! @  ÑG)~?d (oÿÄl, @  ÑH*~?d hoÿFý;Ê @  ÑI+~?d ¨oÿ"Š—Ë @  ÑJ,~?d èoÿ € @  ÑK-~?d (pÿ©b*í @  ÑL.~?d hpÿ+ó=3 @  ÑM/~?d ¨pÿ²Äù @  ÑN0~?d èpÿ0U' @  ÑO1~?d (qÿñàò @  ÑP2~?d hqÿsq, @  ÑQ3~?d ¨qÿ¼- @  ÑR4~?d èqÿ•—«ó @  ÑS5~?d (rÿ¿tx @  ÑT6~?d hrÿ=å ¦ @  ÑU7~?d ¨rÿÁ‚E€ @  ÑV8~?d èrÿCR^ @  ÑW9~?d (sÿ/lk @  ÑX:~?d hsÿ­–{µ @  ÑY;~?d ¨sÿÉá×´ @  ÑZ<~?d èsÿKpÀj @  Ñ[=~?d (tÿå™%/ @  Ñ\>~?d htÿg2ñ @  Ñ]?~?d ¨tÿ“Ø3ö @  Ñ^@~?d ètÿI$( @  Ñ_A~?d (uÿÁúM @  Ñ`B~?d huÿCk“ @  ÑaC~?d ¨uÿ'¸’ @  ÑbD~?d èuÿ¥¯L @  ÑcE~?d (vÿnÇ @  ÑdF~?d hvÿ ÿ @  ÑeG~?d ¨vÿñ˜A? @  ÑfH~?d èvÿs Vá @  ÑgI~?d (wÿhÔ @  ÑhJ~?d hwÿŒ  @  ÑiK~?d ¨wÿùûÓ  @  ÑjL~?d èwÿ{jÄÕ @  ÑkM~?d (xÿø2^‚ @  ÑlN~?d hxÿz£I\ @  ÑmO~?d ¨xÿã”d– @  ÑnP~?d èxÿasH @  ÑoQ~?d (yÿ °s @  ÑpR~?d hyÿ"!dC @  ÑqS~?d ¨yÿFVÈB @  ÑrT~?d èyÿÄÇßœ @  ÑsU~?d (zÿî$i @  ÑtV~?d hzÿlµ~É @  ÑuW~?d ¨zÿÒ1ï @  ÑvX~?d èzÿC&1 @  ÑwY~?d ({ÿ~W @  ÑxZ~?d h{ÿüÆÚ @  Ñy[~?d ¨{ÿ˜±£Û @  Ñz\~?d è{ÿ ´ @  Ñ{]~?d (|ÿ´ÉQ@ @  Ñ|^~?d h|ÿ6XFž @  Ñ}_~?d ¨|ÿ2ØRˆ @  Ñ~`~?d è|ÿ°IEV @  Ña~?d (}ÿ-«T @  Ñ€b~?d h}ÿ¯:CN @  Ñc~?d ¨}ÿËMïO @  Ñ‚d~?d è}ÿIÜø‘ @  Ñƒe~?d (~ÿc?N @  Ñ„f~?d h~ÿá®YÄ @  Ñ…g~?d ¨~ÿÉâ @  Ñ†h~?d è~ÿŸX< @  Ñ‡i~?d (ÿóL?  @  Ñˆj~?d hÿqÝ(× @  Ñ‰k~?d ¨ÿuЀÿ'ª„Ö @  ÑŠl~?d èÿ—;“ @  Ñ‹m~?d @€ÿN"g6 @  ÑŒn~?d €€ÿn×eÈ @  Ño~?d À€ÿU„]" @  ÑŽp~?d ÿ…ÌÑÊ @  Ñq~?d @ÿ J) @  Ñr~?d €ÿ6UH× @  Ñ‘s~?d ÀÿðFñö @  Ñ’t~?d ‚ÿmQ7 @  Ñ“u~?d @‚ÿX4P£ @  Ñ”v~?d €‚ÿxÁR] @  Ñ•w~?d À‚ÿ&Â[ @  Ñ–x~?d ƒÿöŠ„³ @  Ñ—y~?d @ƒÿÈG!° @  Ñ˜z~?d €ƒÿè²#N @  Ñ™{~?d Àƒÿ.¡šo @  Ñš|~?d „ÿ7ïi` @  Ñ›}~?d @„ÿÙhô @  Ñœ~~?d €„ÿ",j  @  Ñ~?d À„ÿi^*¿ @  Ñž€~?d …ÿ¹¦W @  ÑŸ~?d @…ÿ;| @  Ñ ‚~?d €…ÿ‰ú @  Ñ¡ƒ~?d À…ÿÝš¡Û @  Ñ¢„~?d †ÿ@Þ @  Ñ£…~?d @†ÿuèŽ @  Ñ¤†~?d €†ÿUp @  Ñ¥‡~?d À†ÿ Xv @  Ñ¦ˆ~?d ‡ÿÛVÔž @  Ñ§‰~?d @‡ÿå›q @  Ñ¨Š~?d €‡ÿÅnsc @  Ñ©‹~?d À‡ÿ}ÊB @  ÑªŒ~?d ˆÿ7‚F_ @  Ñ«~?d @ˆÿ´GË @  Ñ¬Ž~?d €ˆÿ"AE5 @  Ñ­~?d Àˆÿ}ß @  Ñ®~?d ‰ÿÉZñ7 @  Ñ¯‘~?d @‰ÿZ6jÔ @  Ñ°’~?d €‰ÿzÃh* @  Ñ±“~?d À‰ÿ¼ÐÑ  @  Ñ²”~?d Šÿ!”qÊ @  Ñ³•~?d @Šÿ¢p^ @  Ñ´–~?d €Šÿ4Wr  @  Ñµ—~?d ÀŠÿjT(¦ @  Ñ¶˜~?d ‹ÿº¤N @  Ñ·™~?d @‹ÿ„ÑM @  Ñ¸š~?d €‹ÿ¤$³ @  Ñ¹›~?d À‹ÿb7º’ @  Ñºœ~?d Œÿ{yI @  Ñ»~?d @ŒÿNOH  @  Ñ¼ž~?d €ŒÿnºJ÷ @  Ñ½Ÿ~?d ÀŒÿñ™— @  Ñ¾  ~?d ÿ!Ñü @  Ñ¿ ¡~?d @ÿ ¼¡= @  ÑÀ ¢~?d €ÿ-I£Ã @  ÑÁ £~?d ÀÿëZâ @  Ñ ¤~?d Žÿvº# @  Ñà ¥~?d @ŽÿC(»· @  ÑÄ ¦~?d €ŽÿcݹI @  ÑÅ §~?d ÀŽÿ=ÞãO @  ÑÆ ¨~?d ÿí–o§ @  ÑÇ ©~?d @ÿÓ[ʤ @  ÑÈ ª~?d €ÿó®ÈZ @  ÑÉ «~?d Àÿ5½q{ @  ÑÊ ¬~?d ÿ‹cÍÉ @  ÑË ­~?d @ÿ¾UÌ] @  ÑÌ ®~?d €ÿž Î£ @  ÑÍ ¯~?d Àÿ¥óöI @  ÑÎ °~?d ‘ÿu»z¡ @  ÑÏ ±~?d @‘ÿæ×áB @  ÑÐ ²~?d €‘ÿÆ"ã¼ @  ÑÑ ³~?d À‘ÿ1Z @  ÑÒ ´~?d ’ÿuú\ @  ÑÓ µ~?d @’ÿ¨CûÈ @  ÑÔ ¶~?d €’ÿˆ¶ù6 @  ÑÕ ·~?d À’ÿÖµ£0 @  ÑÖ ¸~?d “ÿý/Ø @  Ñ× ¹~?d @“ÿ80ŠÛ @  ÑØ º~?d €“ÿň% @  ÑÙ »~?d À“ÿÞÖ1 @  ÑÚ ¼~?d ”ÿǘ  @  ÑÛ ½~?d @”ÿò®ÃŸ @  ÑÜ ¾~?d €”ÿÒ[Áa @  ÑÝ ¿~?d À”ÿ„ïÕF @  ÑÞ À~?d •ÿT§Y® @  Ñß Á~?d @•ÿÖÍåý @  Ñà Â~?d €•ÿö8ç @  Ñá Ã~?d À•ÿ0+^" @  Ñâ Ä~?d€ –ÿl( ã @  Ò Å~?d @–ÿ¸_@^ @  Ò Æ~?d €–ÿ˜ªB  @  Ò Ç~?d À–ÿàãK @  Ò È~?d —ÿÓ¨o£ @  Ò É~?d @—ÿ#וÚ @  Ò Ê~?d €—ÿ"—$ @  Ò Ë~?d À—ÿ ƒq @  Ò Ì~?d ˜ÿ?|ýb @  Ò Í~?d @˜ÿÏ @  Ò Î~?d €˜ÿïöå @  Ò Ï~?d À˜ÿìÆâ @  Ò Ð~?d ™ÿÁ¤J  @  Ò Ñ~?d @™ÿ1Û°s @  Ò Ò~?d €™ÿ.² @  Ò Ó~?d À™ÿ´.j6 @  Ò Ô~?d šÿ)jÊ÷ @  Ò Õ~?d @šÿÙ0Ž @  Ò Ö~?d €šÿùà2p @  Ò ×~?d Àšÿbª“› @  Ò Ø~?d ›ÿ²âs @  Ò Ù~?d @›ÿBå  @  Ò Ú~?d €›ÿbhçô @  Ò Û~?d À›ÿjɯ @  Ò Ü~?d œÿs‡ò  @  Ò Ý~?d @œÿƒøÙ @  Ò Þ~?d €œÿ£ ' @  Ò ß~?d ÀœÿÀ ðü @  Ò à~?d ÿè| @  Ò á~?d @ÿà—†m @  Ò â~?d €ÿÀb„“ @  Ò ã~?d Àÿtd{˜ @  Ò ä~?d žÿé ÛY @  Ò! å~?d @žÿ_!  @  Ò" æ~?d €žÿ9ª#Þ @  Ò# ç~?d Àžÿ¢à‚5 @  Ò$ è~?d Ÿÿr¨Ý @  Ò% é~?d @Ÿÿ‚×ô¤ @  Ò& ê~?d €Ÿÿ¢"öZ @  Ò' ë~uРÿ?d ÀŸÿªƒ @  Ò( ì~?d  ÿâO² @  Ò)í~?d X ÿ0èË @  Ò*î~?d ˜ ÿ2Åê5 @  Ò+ï~?d Ø ÿÌß)2 @  Ò,ð~?d ¡ÿ—¥Ú @  Ò-ñ~?d X¡ÿìè_£ @  Ò.ò~?d ˜¡ÿÌ]] @  Ò/ó~?d Ø¡ÿi…æ @  Ò0ô~?d ¢ÿôY%' @  Ò1õ~?d X¢ÿ&ß^ @  Ò2ö~?d ˜¢ÿ$ÓÝ  @  Ò3÷~?d Ø¢ÿ¿™|K @  Ò4ø~?d £ÿoÑð£ @  Ò5ù~?d X£ÿŸ® Ú @  Ò6ú~?d ˜£ÿ¿[$ @  Ò7û~?d Ø£ÿ·úî @  Ò8ü~?d ¤ÿ®´p @  Ò9ý~?d X¤ÿ^Ëç  @  Ò:þ~?d ˜¤ÿ~>å÷ @  Ò;ÿ~?d ؤÿb £ @  Ò<?d ¥ÿ_*‡K @  Ò=?d X¥ÿ¯U}2 @  Ò>?d ˜¥ÿ Ì @  Ò??d Ø¥ÿ•¡†U @  Ò@?d ¦ÿå&” @  ÒA?d X¦ÿøšÜí @  ÒB?d ˜¦ÿØoÞ @  ÒC?d ئÿC%ø @  ÒD?d §ÿ“mó @  ÒE ?d X§ÿc i @  ÒF ?d ˜§ÿCç — @  ÒG ?d اÿKFíÌ @  ÒH ?d ¨ÿ¹aÑ @  ÒI ?d X¨ÿÆ›¨ @  ÒJ?d ˜¨ÿ¯3™V @  ÒK?d بÿQ)ZQ @  ÒL?d ©ÿaÖ¹ @  ÒM?d X©ÿq,À @  ÒN?d ˜©ÿQë.> @  ÒO?d Ø©ÿôëö… @  ÒP?d ªÿi¯VD @  ÒQ?d Xªÿ™Ð¬= @  ÒR?d ˜ªÿ¹%®Ã @  ÒS?d تÿ"o( @  ÒT?d «ÿò'ƒÀ @  ÒU?d X«ÿXy¹ @  ÒV?d ˜«ÿ"­{G @  ÒW?d Ø«ÿ*  @  ÒX?d ¬ÿ3Bn @  ÒY?d X¬ÿÃ=”j @  ÒZ?d ˜¬ÿãÈ–” @  Ò[?d جÿ€elO @  Ò\ ?d ­ÿP-à§ @  Ò]!?d X­ÿ RÞ @  Ò^"?d ˜­ÿ€§  @  Ò_#?d Ø­ÿ4¡ç+ @  Ò`$?d ®ÿ©åGê @  Òa%?d X®ÿY𽓠@  Òb&?d ˜®ÿyo¿m @  Òc'?d Ø®ÿâ%† @  Òd(?d ¯ÿ2m’n @  Òe)?d X¯ÿÂh @  Òf*?d ˜¯ÿâçjé @  Òg+?d دÿêFŒ² @  Òh,?d °ÿT˜0 @  Òi-?d X°ÿ¤çÊy @  Òj.?d ˜°ÿ„ȇ @  Òk/?d ذÿz € @  Òl0?d ±ÿª@‡h @  Òm1?d X±ÿZ?} @  Òn2?d ˜±ÿzÊï @  Òo3?d رÿßʧT @  Òp4?d ²ÿBŽ• @  Òq5?d X²ÿ²ñýì @  Òr6?d ˜²ÿ’ÿ @  Òs7?d زÿ N^ù @  Òt8?d ³ÿÙÒ @  Òu9?d X³ÿ)y(h @  Òv:?d ˜³ÿ Œ*– @  Òw;?d سÿ-ÌÍ @  Òx<?d ´ÿc? @  Òy=?d X´ÿèÅ» @  Òz>?d ˜´ÿÈéÇE @  Ò{??d Ø´ÿ[( @  Ò|@?d µÿ‹\¤g @  Ò}A?d Xµÿ{#^ @  Ò~B?d ˜µÿ[Ö\à @  ÒC?d صÿ¢•H @  Ò€D?d ¶ÿ?Å5‰ @  ÒE?d X¶ÿϺÏð @  Ò‚F?d ˜¶ÿïOÍ @  ÒƒG?d ضÿtlå @  Ò„H?d ·ÿ¤Mà  @  Ò…I?d X·ÿT2t @  Ò†J?d ˜·ÿtÇŠ @  Ò‡K?d Ø·ÿ|fþÑ @  ÒˆL?d ¸ÿH™rÌ @  Ò‰M?d X¸ÿ¸æˆµ @  ÒŠN?d ˜¸ÿ˜ŠK @  Ò‹O?d ظÿf IL @  ÒŒP?d ¹ÿ¶AŤ @  ÒQ?d X¹ÿF>?Ý @  ÒŽR?d ˜¹ÿfË=# @  ÒS?d عÿÃËå˜ @  ÒT?d ºÿ^EY @  Ò‘U?d Xºÿ®ð¿  @  Ò’V?d ˜ºÿŽ½Þ @  Ò“W?d غÿO5 @  Ò”X?d »ÿÅÝ @  Ò•Y?d X»ÿ5xj¤ @  Ò–Z?d ˜»ÿhZ @  Ò—[?d Ø»ÿ,Ž @  Ò˜\?d ¼ÿb} @  Ò™]?d X¼ÿô‡w @  Òš^?d ˜¼ÿÔè…‰ @  Ò›_?d ؼÿ·ER @  Òœ`?d ½ÿg óº @  Òa?d X½ÿ—r à @  Òžb?d ˜½ÿ·‡ = @  ÒŸc?d ؽÿô6 @  Ò d?d ¾ÿžÅT÷ @  Ò¡e?d X¾ÿnº®Ž @  Ò¢f?d ˜¾ÿNO¬p @  Ò£g?d ؾÿÕ › @  Ò¤h?d ¿ÿMs @  Ò¥i?d X¿ÿõ2{  @  Ò¦j?d ˜¿ÿÕÇyô @uÐÀÿ  Ò§k?d Ø¿ÿÝfŸ¯ @  Ò¨l?d 0Àÿ¹–Îý @  Ò©m?d pÀÿIé4„ @  Òªn?d °Àÿi6z @  Ò«o?d ðÀÿ—õ} @  Ò¬p?d 0ÁÿGNy• @  Ò­q?d pÁÿ·1ƒì @  Ò®r?d °Áÿ—Ä @  Ò¯s?d ðÁÿ2ÄY© @  Ò°t?d 0Âÿ¯€ùh @  Ò±u?d pÂÿ_ÿ @  Ò²v?d °Âÿ ï @  Ò³w?d ðÂÿä@  @  Ò´x?d 0Ãÿ4,ì @  Òµy?d pÃÿÄwÖ• @  Ò¶z?d °Ãÿä‚Ôk @  Ò·{?d ðÃÿì#20 @  Ò¸|?d 0ÄÿõmÁ? @  Ò¹}?d pÄÿ;F @  Òº~?d °Äÿ%ç9¸ @  Ò»?d ðÄÿ«Ü‚à @  Ò¼€?d 0Åÿ{” @  Ò½?d pÅÿ‹ëôq @  Ò¾‚?d °Åÿ«ö @  Ò¿ƒ?d ðÅÿ± @  ÒÀ„?d 0Æÿ,[¯× @  ÒÁ…?d pÆÿÜ$U® @  Ò†?d °ÆÿüÑWP @  ÒÇ?d ðÆÿg›ö» @  ÒĈ?d 0Çÿ·ÓzS @  Òʼn?d pÇÿG¬€* @  ÒÆŠ?d °ÇÿgY‚Ô @  ÒÇ‹?d ðÇÿoød @  ÒÈŒ?d 0Èÿ[è’ @  ÒÉ?d pÈÿ«xë @  ÒÊŽ?d °Èÿ‹ @  ÒË?d ðÈÿu—Ó @  ÒÌ?d 0Éÿ¥ß_ú @  ÒÍ‘?d pÉÿU ¥ƒ @  ÒÎ’?d °ÉÿuU§} @  ÒÏ“?d ðÉÿÐUÆ @  ÒД?d 0ÊÿMß @  ÒÑ•?d pÊÿ½n%~ @  ÒÒ–?d °Êÿ›'€ @  ÒÓ—?d ðÊÿцk @  ÒÔ˜?d 0ËÿÖ™ ƒ @  ÒÕ™?d pËÿ&æðú @  ÒÖš?d °Ëÿò @  Ò×›?d ðËÿ²_ @  ÒØœ?d 0ÌÿüçP @  ÒÙ?d pÌÿçƒ) @  ÒÚž?d °ÌÿÇv× @  ÒÛŸ?d ðÌÿ¤Ûå  @  ÒÜ ?d 0Íÿt“iä @  ÒÝ¡?d pÍÿ„ì“ @  ÒÞ¢?d °Íÿ¤‘c @  Òߣ?d ðÍÿnh @  Òà¤?d 0Îÿ[Ω @  Òá¥?d pÎÿ}$4Ð @  Òâ¦?d€ °Îÿ)*ˆ @  Ó§?d ðÎÿSÃJ @  Ó¨?d 0ÏÿƒQO¢ @  Ó©?d pÏÿ¶gN6 @  Óª?d °Ïÿ–’LÈ @  Ó«?d ðÏÿPõé @  Ó¬?d 0Ðÿî_I[ @  Ó­?d pÐÿÐ’ìX @  Ó®?d °Ðÿðgî¦ @  Ó ¯?d ðÐÿË4ÖL @  Ó °?d 0Ñÿ|Z¤ @  Ó ±?d pÑÿ.J[0 @  Ó ²?d °Ñÿ¿YÎ @  Ó ³?d ðÑÿȬàï @  Ó´?d 0ÒÿUè@. @  Óµ?d pÒÿÆ„ÛÍ @  Ó¶?d °ÒÿæqÙ3 @  Ó·?d ðÒÿ¸rƒ5 @  Ó¸?d 0Óÿh:Ý @  Ó¹?d pÓÿ] I @  Óº?d °Óÿ}ù · @  Ó»?d ðÓÿ»êµ– @  Ó¼?d 0Ôÿ¢¤F™ @  Ó½?d pÔÿœiãš @  Ó¾?d °Ôÿ¼œád @  Ó¿?d ðÔÿê(õC @  ÓÀ?d 0Õÿ:`y« @  ÓÁ?d pÕÿVx? @  ÓÂ?d °Õÿ/£zÁ @  ÓÃ?d ðÕÿé°Ãà @  ÓÄ?d 0Öÿtôc! @  ÓÅ?d pÖÿöžßr @  Ó Æ?d °ÖÿÖkÝŒ @  Ó!Ç?d ðÖÿˆh‡Š @  Ó"È?d 0×ÿX b @  Ó#É?d p×ÿm ö @  Ó$Ê?d °×ÿMã @  Ó%Ë?d ð×ÿ‹ð±) @  Ó&Ì?d 0Øÿ¿=4 @  Ó'Í?d pØÿ˜7 @  Ó(Î?d °Øÿ¡7šÉ @  Ó)Ï?d ðØÿšd¢# @  Ó*Ð?d 0ÙÿJ,.Ë @  Ó+Ñ?d pÙÿ/_ @  Ó,Ò?d °Ùÿ_ï-¡ @  Ó-Ó?d ðÙÿ™ü”€ @  Ó.Ô?d 0Úÿ¸4A @  Ó/Õ?d pÚÿ—Ô¯¢ @  Ó0Ö?d °Úÿ·!­\ @  Ó1×?d ðÚÿé"÷Z @  Ó2Ø?d 0Ûÿ9j{² @  Ó3Ù?d pÛÿ \z& @  Ó4Ú?d °Ûÿ,©xØ @  Ó5Û?d ðÛÿêºÁù @  Ó6Ü?d 0Üÿóô2ö @  Ó7Ý?d pÜÿÍ9—õ @  Ó8Þ?d °ÜÿíÌ•  @  Ó9ß?d ðÜÿK(”= @  Ó:à?d 0Ýÿ›`Õ @  Ó;á?d pÝÿ®VA @  Ó<â?d °ÝÿŽ£¿ @  Ó=ã?d ðÝÿH°¢ž @  Ó>ä?d 0ÞÿÕô_ @  Ó?å?d pÞÿù™¸ž @  Ó@æ?d °ÞÿÙlº` @  ÓAç?d ðÞÿ‡oàf @  ÓBè?d 0ßÿW'lŽ @  ÓCé?d pßÿbm @  ÓDê?d uÐàÿ/°ßÿBäoä @  ÓEë?d ðßÿ„÷ÖÅ @  ÓFì?d HàÿSˆ3 @  ÓGí?d ˆàÿú8 @  ÓHî?d Èàÿƒk/Î @  ÓIï?d áÿêጠ@  ÓJð?d Háÿhp›Ì @  ÓKñ?d ˆáÿÿ"x @  ÓLò?d Èáÿ}³˜¦ @  ÓMó?d âÿ¤u–˜ @  ÓNô?d Hâÿ&äF @  ÓOõ?d ˆâÿì… @  ÓPö?d Èâÿ•}[ @  ÓQ÷?d ãÿ™§Ùk @  ÓRø?d Hãÿ6ε @  ÓSù?d ˆãÿŒdÚ @  ÓTú?d ÈãÿõÍß @  ÓUû?d äÿS9/ @  ÓVü?d HäÿѨ‡ñ @  ÓWý?d ˆäÿM7Ò @  ÓXþ?d ÈäÿÏ  @  ÓYÿ?d åÿ®(ê @  ÓZ€?d Håÿ™??4 @  Ó[€?d ˆåÿm+€ @  Ó\€?d ÈåÿŒü<^ @  Ó]€?d æÿU:2` @  Ó^€?d Hæÿ׫%¾ @  Ó_€?d ˆæÿ÷¥ŒÍ @  Ó`€?d Èæÿu4› @  Óa€?d çÿyîZ# @  Ób€?d HçÿûMý @  Óc €?d ˆçÿl-YI @  Ód €?d Èçÿî¼N— @  Óe €?d èÿžÁlu @  Óf €?d HèÿP{« @  Óg €?d ˆèÿ€ùˈ @  Óh€?d ÈèÿhÜV @  Ói€?d éÿk⊠@  Ój€?d HéÿéshT @  Ók€?d ˆéÿ~!|à @  Ól€?d Èéÿü°k> @  Óm€?d êÿ%ve @  Ón€?d Hêÿ§çrÞ @  Óo€?d ˆêÿ–ïü @  Óp€?d Èêÿ~ëà @  Óq€?d ëÿ¤*ó @  Ór€?d Hëÿš5=- @  Ós€?d ˆëÿ g)™ @  Ót€?d Èëÿö>G @  Óu€?d ìÿÒ:c· @  Óv€?d HìÿP«ti @  Ów€?d ˆìÿÌÄJ @  Óx€?d ÈìÿN“Ó” @  Óy€?d íÿº®I” @  Óz €?d Híÿ8?^J @  Ó{!€?d ˆíÿ¯mJþ @  Ó|"€?d Èíÿ-ü]  @  Ó}#€?d îÿô:S @  Ó~$€?d Hîÿv«DÀ @  Ó%€?d ˆîÿôÛ @  Ó€&€?d Èîÿ™eÌÎ @  Ó'€?d ïÿ•¿ þ @  Ó‚(€?d Hïÿ.  @  Óƒ)€?d ˆïÿ€|” @  Ó„*€?d ÈïÿíJ @  Ó…+€?d ðÿø±  @  Ó†,€?d Hðÿz Ù @  Ó‡-€?d ˆðÿ扬ú @  Óˆ.€?d Èðÿd»$ @  Ó‰/€?d ñÿ ’ø @  ÓŠ0€?d Hñÿ& @  Ó‹1€?d ˆñÿQ’ @  ÓŒ2€?d ÈñÿšÀ L @  Ó3€?d òÿCr @  ÓŽ4€?d HòÿÁ—¬ @  Ó5€?d ˆòÿðŸ›o @  Ó6€?d ÈòÿrŒ± @  Ó‘7€?d óÿ~ÔM @  Ó’8€?d HóÿüEZ_ @  Ó“9€?d ˆóÿkNë @  Ó”:€?d Èóÿé†Y5 @  Ó•;€?d ôÿ´JÅ @  Ó–<€?d Hôÿ6Û @  Ó—=€?d ˆôÿªr£8 @  Ó˜>€?d Èôÿ(ã´æ @  Ó™?€?d õÿ,Ž;÷ @  Óš@€?d Hõÿ®,) @  Ó›A€?d ˆõÿ9M8 @  ÓœB€?d Èõÿ»Ü/C @  ÓC€?d öÿb!} @  ÓžD€?d Höÿà‹6£ @  ÓŸE€?d ˆöÿÀ…ŸÐ @  Ó F€?d ÈöÿBˆ @  Ó¡G€?d ÷ÿNÎI> @  Ó¢H€?d H÷ÿÌ_^à @  Ó£I€?d ˆ÷ÿ[ JT @  Ó¤J€?d È÷ÿÙœ]Š @  Ó¥K€?d øÿ©áh @  Ó¦L€?d Høÿ+ph¶ @  Ó§M€?d ˆøÿ·ÙØ• @  Ó¨N€?d Èøÿ5HÏK @  Ó©O€?d ùÿ\Âl— @  ÓªP€?d HùÿÞS{I @  Ó«Q€?d ˆùÿIoý @  Ó¬R€?d ÈùÿËx# @  Ó­S€?d úÿVv @  Ó®T€?d HúÿÇaà @  Ó¯U€?d ˆúÿ¡Ïï @  Ó°V€?d Èúÿ#^øÞ @  Ó±W€?d ûÿ/„9î @  Ó²X€?d Hûÿ­.0 @  Ó³Y€?d ˆûÿ:G:„ @  Ó´Z€?d Èûÿ¸Ö-Z @  Óµ[€?d üÿåpª @  Ó¶\€?d Hüÿg‹gt @  Ó·]€?d ˆüÿû"×W @  Ó¸^€?d Èüÿy³À‰ @  Ó¹_€?d ýÿŽZ‰ @  Óº`€?d HýÿMW @  Ó»a€?d ˆýÿ˜MYã @  Ó¼b€?d ÈýÿÜN= @  Ó½c€?d þÿÃ@ @  Ó¾d€?d HþÿA‹WÝ @  Ó¿e€?d ˆþÿÏ‚ø< @  ÓÀf€?d ÈþÿMïâ @  ÓÁg€?d ÿÿAÉ.Ò @  ÓÂh€?d HÿÿÃX9  @  ÓÃi€?d ˆÿÿT -¸ @  ÓÄpgbackrest-release-2.24/test/data/filecopy.table.bin000066400000000000000000040000001362531507100224630ustar00rootroot00000000000000˜Î| À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8Éâbk~uÈáœÂÇàÆ>Á ÆßËÓ"ÅÞ§^£^ÄÝšœ©BÃÜùqnpÂÛ‘Ñ@ÁÚSYÐqÀÙ)è`*¿ØÃ5Ã\¾×V~,½ÖCiäd¼Õ™™Û»ÔŸ_;ºÓ2k¹ÒmÂl¸Ñ4Ýq·ÐõoíB¶ÏWBµÎ£¼|m´ÍÌQr³ÌF°k5²ËD>K±Ê˜àzN°ÉCI¯Èm­k®ÇVfRp­ÆO,¬ÅgD«ÄW,ªÃ——[W©ÂõQT5¨Á,6MU§ÀÑõé$¦¿’¥¾G×H¤½Љ F£¼Í/ƒZ¢»þÚ¸E¡ºæ²< ¹*œçCŸ¸Bsígž·,7yM¶,O#œµÞ/¸@›´#V³Kš³´*™²F`˜±({B—°b¢ –¯_~x"•®4-)”­š"5“¬ؘ-’«B^U‘ª?[Rg©e1:P¨ÿ9Å]ާlK0¦¾Œ¥+Šu4‹¤Æ¡q2Š£àÄÁ‰¢å^> ˆ¡V‡ GñD;†ŸIüU…žêv[ „£“›ƒœ»ûU‚›¹onfšýƒ˜ €™dC5'˜ áÅ~—©Ðo}–MéW<|•ú78 {”¡z“2\Yy’óNx‘\µNw‡lvóŠKuŽÂÒEtró“TsŒBhÎnr‹ÓL7qŠSs'Ap‰Ó¯O)oˆ¦=Êtn‡1†om†F+7'l…Å5•Sk„˜g²Rjƒœbè i‚‰¶Lh¤]©$g€Ž”Š$f0›"e~¦£8md}V¸Ë-c|¯Ž¨db{æný'azîb`y=Ão_x¿Q^w!pZ]v³g\uõØ‘F[tªn=dZs"EYrM‰¯ XqŽWp°¶kSVoð¹ Un€lTmn¸~ESl,f·9Rk!zÖHQj„Piá5!Oh™%ÔNg«ÈNMf®¬ÞLeô .Kd b“]Jcçí“2IbþM¦.Ha7pômG`€ ¯,F_¿4;EE^?^îBD] ålC\ÔúsMB[ûÌ¢AZ Š£@Y/- ?XqFhm>W‘ !=V¨Oâ<<U•à»L;TPÿHi:S^Z+s9Rö 8QAþì 7PÃð7K6Oþ™ËA5Nâ3fC4MK^‚3L‡T,2KáOÿ\1J3[V0I¥¯f/Húð5.GÇR€K-FöO˜v,EÖ…Ôf+DfMä*C>­ `)B÷+(AáNÊ7'@ëÍün&?D‘K;%>—[wc$=·ËFB#<‰p";8^!:vs€E 9Ýe¬ 8µ%/7J‰ì@6ŸÒ¦H5\[4šió'3ø92_^¼A1x’µ20uEÉ/xœ].—au-â87=,DU'+lœ F*¯óf)ÇRF(`œE'¸¢÷ &ÞsÎ; %…’OE $RsÙh #´ðf "J‡ˆK!4¶, »vÛ)”Î>Aìûs¬HùgMg«.,ê“=';O¦¸fKÿ¯ùþ§Ê'ý°¢Ÿü"kslû‚µ#ú_zU[ù_‰4ø“ ÇO÷»"Ž6ö¬úU/õ2ÙÎMô }àñWó  —oò ÷P¦Pñ 蔃 ð ÛrLïeÃS$î+óLí;Ÿüpìq#<ëù=궸IFéó©ï/èÂ9À1} À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8«âÝMT=ªákÿ\©àÕ0>¨ß"Ý@d§Þƒû9¦Ý$+;¥ÜÒîÖ ¤Û,À¨?£Ú!zu-¢Ùë{t¡Ø§0 ) × <ŸÖ?Ds;žÕ¿ÆÔ×°,BœÓÊía›Òž‹9šÑÊ~7™ÐzÄå ˜Ï= *—Î7,¡(–ÍŽ®xh•ÌzºZk”ËâÜ1“Êʽõ<’ɺ“ªl‘ÈI~¢PÇ4¼`Ævê”1ŽÅÁ^OÄÙØŒÃ¼IP‹ÂM|#"ŠÁâÓ‰ÀPîiYˆ¿òVˆq‡¾‡µ †½çi‘ …¼…›„»’hƒº«Ô9‚¹“qF#¸Bð!q€·uê“Q¶vKqC~µÕæ­ }´O)/T|³azê{²ÊÝz±í©¢y°Ãf{6x¯0Þùmw®Ãð‚+v­Àºåuu¬¿÷oXt«••5sªD©;r©‡^Dq¨[½hp§ºyXo¦t£:-n¥ö¹Òm¤lªnl£[¹Ð'k¢Þà…lj¡h„ØKi mÇìZhŸüYgž;)¿Kfñ±ŠjeœŤ¥nd›6~©^cšº Wb™l tfa˜%Ušt`—ц4_– Ýs^•cŒ8]”§¤O\“šS[’*MUgZ‘@Ë7Yqæ‰X-ƒ#mWŽ|Ð:V6™+WUŒ:Ó DT‹‰ÃÉYSŠO?KR‰eëUQˆNc¢aP‡êiO†m‚N…&<"M„î…DLƒâÆ,PK‚,[J{©—gI€7 é$H?KdG~Ô÷F}Y›1E|½DaD{éƒ"Cz`À£jByÂÕ <Axx½\@wr‰ìZ?v9ÆlH>ušgÙ=t)m<sü]gq;r‡Â0t:q:á“59pó¯)8oóá;X7n#Jì 6mÕ^We5l:ô\o4kúdÕE3jM›h82iK=f?1h+ø…80g6:‹D/fÖÊ"".esp·S-d«½C+,c'°+b¦±T*aÞm·)`õ(_Ì¢1h'^ùnÃ&]Nç6%%\¿¡=$[í6·#Z‰£Öj"YÝU>D!XI]X W=ü:NV9ÞUî1DT®PHS”àôR—§)Qåô:P¸`O(yL=N‡Ãî,Mï¶ö/LÏlO KõkJurCI·\H‹|GG°FÌRÕvEÌOŒ D2.ý CÚ¢c Bæþó A¦.U @=ã*? 8 >Åו1=²ý˜p<¤®.;K§›:Ê`)9[ü+85Nê7ìvÿ6؈‰þ5éÈ[ ý4Üò3ü3î±cû2—!ú1ÉÊ0ù0Y ý/ø/pb9÷.zD³ö-å€(õ,ŒxËQô+ÅW$ó*ë\d\ò)¿,» ñ(}€Wvð'ò¯¹ï&çP˜î%Œ“-2í$¿‹8ì#ÚÆçë"áVo#ê!Œy,1é f²Mèz0úççà8GæI²cåY±äJÄv*ãƒØpâKÄoá£ùCàéj..ßR;‹vÞ(øÝ–¥“3Ü'S*LÛO†jÚ@'|Ùä}{^صìŽ×-RCÖ ÍKGÕ HkÔ ø¬ªHÓ ØÛ"Ò ñì)DÑU„cRÐ аÏ«<¾ÎF_Ít=k,Ìg&uˤ,)aÊkN3è”} À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8âO6Œám,‹à•F5Šß?˜U‰Þs„ ˆÝ›X­‡Ü³ÉU†Û¶Õ2J…ÚFÌÁ5„ÙþúɃ،š¿h‚×ñÜ~5Ö`½€Õh·ëÔ5"~Ó•Ûbr}ÒˆÁi|Ñ0/Û'{аVQzÏofyÎu¹îxÍö_€9wÌîÄ )vË&uÊ‚Y¬]tÉxí}PsÈ žqrÇçû”fqÆçÿ4 pÅðïboÄíãÇ=nÃðÕìWmÂù lÁúíb4kÀ wj¿½B Ci¾T !Bh½¸ÿ>g¼)ϨXf»UïBeºåš d¹#ãÓTc¸T¿Ib·„ a¶à‰·l`µm‚q_´å„]^³ëåŒ/]²ºuì!\±¹ŠS[°®ª=Z¯n3þ]Y®tš SX­ukÃOW¬úJ%V«šñLnUª‘íHGT©®÷S¨ùÍ(R§ö½}(Q¦÷ãLP¥óõd O¤êIXN£<]?JM¢§awiL¡ëg8K ”™aJŸÿ0ÞAIž5ó/HìÔGœÄ.dF›a‚|EšCíQ_D™çÐïC˜Ÿ'´&B—õ£*=A–² £O@•+ú ?”<Ï»i>“LÖ#;=’E„2w<‘9Óxd;t#´8:Ù<ò[9Žä}z8ÜaR7Œ¡ÙE6‹›/Ë5Š'^):4‰"h3ˆ •G2‡º†Ä1†L(#0…ÿá /„¨éÛ_.ƒ¨0™'-‚¶J,Ä]+€ýåT*Óšv-)~Â’¸(}ó>K'|ÃîýR&{NI'"%z5X‚@$ys-©#x¹h¤J"we6!væ  uüBtزoslG@rVUþ[q—Áa"p8croHâä`n¶—^Smš·&l»kNkl×d8jºùDi &{'h1g¥‹¿ffI—eÎdªÃéIcáCÐQ b̈ B aä ¦ `@®Q _tÝÆp ^åš¼ ]OÁT6\•t¸N[Ï!,Z#›Y¶laEXƒWyVfV­:z U@…CWÿT4äÍþS OrýRá½8FüQ?gûP¹&yúOIÀùùNà½ÒøMƒ•ð&÷LZ¦FöK»õJÃŽrôIøbóHúÇÕòGgçm=ñFMÙA7ðEƵC@ïDÑ"îCX?zHíBÿvìAÂ~Yë@ßh"ê? ïUé>Á¹#è=ÞW ç<Ažóæ;aÍ#å: 2ç$ä9M’2ã8Er5aâ7ŸÇ`%á6_Ç à5—8sß4TàÕ_Þ3—ý>+Ý2¼½IÜ16%¾bÛ0ð­èrÚ/Ë»Ù.¿~Ø-aC@×,ÎsÖ+\;:IÕ*«úVÔ)4¦ÇSÓ(—ãK=Ò'ö-ýeÑ&ÇBZAÐ%þ[Ï$wÖk&Î#éù/ Í"uÕnÌ!a·Ë Ônû;ʬÐ!wÉÕi¥[ÈôŸ'_ÇÏ‚Í9Æiþ»vÅíÊö Ä­9ÂLÃK{À<ÂÈ]]ÁÛJëAÀOMt¿§ã‹/¾ðÅ¥D½w@K¼j¨j»±2 ºc_yE¹¶¹{(¸ æ'S· ÅWî ¶ µƒ2hµ lcm´ ˆ^ƒX³}W‘?²ÞH*!±8^d°vu´ ¯j[®S8én­,‹G4¬àb Tø} À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8o⛸ná˜h0màŽ[@lß>ÃñrkÞ:2JjÝØÐ;iܵZ-hÛüÍ2qgÚÑ{#fÙ©´ý1eØÛÝhd×X9óOcÖ²Ô(nbÕgÐ aÔY˜ò^`Ó<7#_Ò6­_^ÑVì’(]ÐÁ›‹#\Ïãe[ÎAöZÍë,ỶÓéXË •;WÊ/¦ðtVÉa?UÈSË;TÇíü\SÆÆ1&,RÅxIPQÄÏÌ PÃ]‰UOÂØ+l]NÁþ¥UMÀ‰hÚEL¿>Æ4PK¾¾\­J½ :OrI¼{òTH»wÖeFGº÷s ;F¹ ÒVE¸ÿ46hD·vVC¶1_”)Bµ¬_6A´{/Ík@³¶Ùq?²ö|>±Õ Àn=°”P<¯¡ôq;®¼üE.:­kM9¬M&¦Y8«A¢ô7ªX/ë6©Û{·b5¨Û4/R4§i¨Ð 3¦ ƒj2¥L],1¤Ô´°P0£™e7 /¢@º÷8.¡~ÂÀJ- ÃÓßG,ŸG}M+žÆD7*a{¸()œx5eU(›€j:\'šè«=-&™üˆÖ1%˜ûna$—=ð.#–îµâ%"•¤¢Bt!”ƒ¦º! “t•¢’$z@‘) TÎi{ZQŽ×":r>$nŒeû<‹ï†Š:ŒÚo‰ÈèÑ%ˆ•‡U3‡Û\†Ô%›j…Uòï„Ö%<ƒù3°b‚kü{bX' €ÎxMo “ï?R ~xc°r }|¬Ž# |…ür{ЃuzÓó yWó`dx”–5 wz @v‹~È3uZ©t [nvsžÉ(*ÿrÆ#@þqâ#{ ýpí‹Püo$P4ûn7Fuúm)ùlZ“úIøk4nÿ÷jôVl2öi?•e-õh/øM ôgÛñêófꉩiòeuÍeñd*O˜jðcØ q8ïbꈬ#îaQ̾Kí`‡sWì_§ôbtë^nÙšê]. ¡ é\7óUáTˆpÒPàSñu ßRªq1"ÞQyÔb9ÝPÊPCaÜOØbÛN¨Uò[ÚMþ”ÙL çiØKe*×JUŸñ:ÖI»*èÕH°6ˆÔGé71ÓFŠØîpÒEÙ‚ÙÑDÊ­3XÐCB(&ÏBãò#4ÎAß}ÒIÍ@lˆ Ì?Ù&çË>c(>TÊ=ß‹É<:íácÈ;Ý¿ø&Ç:ô!Æ9¶I1Å8fØ0Ä7TõŸIÃ6”ÅÁ3Â5œoÁ4'¹ "À3¦-ç6¿2ЦT¾1°R®D½0ÿaÎo¼/ðp1».ÄòØXº-Ißþf¹,i.ù¸+B¶¹ ·*1æ. ¶)×Gälµ(HÏ9P´'H°oJ³&õ#ëa²%ë/a±$ÕŸi°# Ì<¯"|éÉl®!j©‰ ­  Í:.¬†hE-« Q»iª7˜2©v{+n¨ À›=§ˆ„½t¦W<“¥-<’'¤î+t£>ÿ9¢wú”T¡§_N> @"5#Ÿêó cžµ‚Ï'Âwœ‚<O›ùÏ]š ’zJ ™ úzµ0˜ èÉô5— á#ù – ]ŸØA•s0”ëW®H“nÚÌ’köß‘i’7bö€„?]쎃*Ør8[~ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8Qâp„ÉPᣳ"bOà^ËËvNß ú¡>MÞbϧ1LÝvÊ!KÜËyVJÛ±¶IÚ‹mrHÙé– GØ.LBFF×à¶ÇvEÖ¾x:DÕZ:lCÔÜŒ0]BÓ ZQAÒÌ-ÑX@ÑÕF ?б÷N>ÏØÿÄ#=ξ:ºr<ÍÎ zl;Ì+ÝØr:Ë_†w]9ÊÔÏM8Éíƒ7Èeò+6Ç*¯Ån5Æßï4ÅFJj3ľmf.2Ãg]S1Â@äz00Á[UU/À=:_.¿°’--¾î~’&,½ââV+¼ƒþ5*»4hÛr)º+$Ê<(¹ÔÖ)'¸*—&·²‘S`%¶Ž Ð:$µF#Z#´ZB"³ô- 5!² ˆ ±ã€ÓX°­¶!(¯]´B®úøª­¬ïTa¬ú“KD««ö>VªŸè” ©O@&¨kA_@§yzÇ*¦×aÏ9¥c¬šP¤(žXk£Ëè¢mÖn.¡[1© -®¾oŸºªì* ž·¾Æ ¯ì2 œ0>DY ›x&¬S šG;f™ýw©6˜X€]—šrÄ–讀R•w$¤!”Fwê “º{i’é‡(:‘[>ÿc´,HþO–¡?ýŽ ÀVü¬S4ûŒ@µßú‹'WùŠxr}cø‰)úf÷ˆPp¤6ö‡G–æ6õ†÷Õ+"ô…Íl¯bó„b±_ òƒ³+‚ñ‚¥fð~Á‹dÞHî=,P=í~i{-ì}3Æš"ë| :Ðmê{¬’v`éz fD[èyà[m;çxSpæw5ºT`åvŽ0±^äuE°FãtVËN!âs™…¼qárõçw^àq¸`ø)ßpáÁ)Þoå˜òvÝn4uì1Üm7 &Ûlב^ Úk0Ü–,ÙjSÎDØiƒ—*K×håä†,ÖgDª©Õf'úÌsÔeäƒ Ód)¿Ù1ÒchÚÇ(ÑbF^HÐaV:C&Ï`†µFÎ_¼|ì2Í^%ô‹>Ì]@Þb2Ë\X—œgÊ[×?%rÉZS¿ñSÈYßñ)ÇXàî?ÆWô>*dÅVP\Û^ÄUžþ‹nÃT‹¤úGÂSãº^ÁR„AoÀQ×À¦¿P”V¾O™U½N&a‚X¼MSŽiL»LK÷ºKͨ$&¹J[1“N¸Ia}·Hd¶GÀKµFÍÑàK´EÑ„– ³DKèGY²CYÉq±B1Úì^°AݧR¯@cy…B®?NHœC­>í²¦U¬=J¸ª=«<÷P3ª;^ýf©:½LB¨9B„¯G§8jš/¦7Ay ¥6€v¤5³ãSD£4Ü&¢3€æëi¡2±óY" 1»x* Ÿ0¸¡Ež/X¸]2.÷ð uœ-I*Èg›,²½T9š+›Ž™*4#Ò:˜)HúnX—(uËòh–'to6•& >ß#”%n@õD“$öã!J’#ä‘P‘"ðˆá5!ÁÚ U÷|Ž2ßeŽ5”rŒ¶`¥b‹ôyÍJŠ{+B‰(eHˆ·JO‡A1/o†™,” …ðù!„E÷1uƒÈD¦d‚XÏ1gÃT €o ³¦Ž>p~\ß}q}ö,| jWX{ %ÚÐz ¿cy ¨»4x ‹ý#w~¸‚cv¼¬Žu~·tÞ"GEsšÓ r`ê7Gq‹| p * %`¾~ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ83 âX12 áí¥ß#1 à0SŽu0 ß~àñ / Þ§=. ÝØ- Ü1DÀ,, ۱÷F+ Úæ* Ùy¹d) ØÃH%_( וÃ.' ÖÔ}5& Õ˜˜¢K% Ôtˆ`$ Ó9¿b# ÒI" ÑL|øi! ÐV@n Ïð»Nj ÎjÓ«s ͤŸð@ Ì’Sú  Ë ›NF ÊøÓ* É5r2 Èñ­  Ç*pî  Æòû Å®[H7 Ä|òO Ñ&f$ Â×’ö] Á=¶[ ÀL0gW ¿dwœm ¾ò ½¸â? ¼íÈ^ »pÔO º¥9–. ¹,°‚ ¸";¸% ·›ûóI ¶”ûŽ µ(  ´4V´k ³uúU ²à<‚m ±_¶O- °^hT^ ¯`8]-ÿ®†§þ­\uQý¬ ª <ü«ó‡åûªBvýú©S)›Iù¨­3ø§aiãj÷¦Ö\‡Pö¥aI…jõ¤DŠ4Dô£r¯gó¢ +ÄGò¡”…ñ xhÔðŸŸÑ$<ïžåKîÁ^EKíœN™J)ì› Ò×[뚘´óê™úšé˜g9uUè—Ê#ç–G÷Pæ•ÔŸd>å”´ Ûnä“%@ã’Ù3â‘ó5 áU"ògà“³lmߎÿ 7Þ¶;jÝŒE ýcÜ‹â O&ÛŠ|`IpÚ‰L\Î?و߮&؇dA-`׆TÁ"Ö…±x¯,Õ„úF»XÔƒmYŸ Ó‚€,9Ò·Ä:Ñ€Q8ÚÐ §©,Ï~(ªQ:Î}Tþ/Í|¢˜bÌ{._dËz²7ÿgÊy“™ÉxÌ $,ÈwƆaVÇvû1'Æu²­¥aÅt,vhOÄsEïû Ãré‡JMÂqŸ¡ìtÁpN©o Ào8^Ñ¿n:H'q¾mù­.$½lÅUÖv¼k»jù= ºikú4q¹hjúq¸gçÄ!·f1Lv&¶eC©öµdµúo´cvÅP³bŽór²aýÍßp±`iG&°_(M¯^¡Zf(®]“‡f­\J ;8¬[í°«Z˜œgªYô³A©Xšù¨W¶¡5§VÉ%[¦UŒh±Q¥T÷EŒ¤S±)y<£ReYÅ¢QUv\¡Prœ0 O") aŸNp!žMZ[¡L­$ªœKyë›J;®¾JšI'å°`™HÊ£\˜G»ÆæL—F´µƒ–E{Pv•D ~*”C~w€*“B\syH’AZõ6‘@Çïì?´©È>vЍvŽ=0À¼m<R ¤ Œ;âúÞ`‹:RÎX-Š9<},‰8¾ïÞeˆ7O‡6'ìM†5£JK2…4?H+„3CÄïƒ2TUU‚1A 0taX€/îö5.A2~-†Ó.},GiÄ^|+€{ u{*t/-Cz)¬¼Ay(­»h"x'6Ò8jw&Ã×-v%³¾ju$·‡“t#§É°1s"ã‚7r!—Ãeq a $ p”ÉoÝñc@nDø\Um$Ÿ5rl:ÒvUkçÀÆUj¥“3iØÏ#häJü3gO¿+Tf'L¹eÏSÄ8df(Tcù“¬Pbî029a§!§`ŸY@4_87S^ ›¬‚?] Ó¿¤R\ =ñ)P[ êH hZ ú¿ß.YJ¥TXÒ[sWÏv<3V XcnUFÀŒ%TO‰¸!S¹e7UR¥ü- ! À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8 â‚]Ú á±D. àË‹µO ß/-.' ÞŒæ ÝÍ= Ü»=o Û•H¢L Ú7FÈ ÙrÄ Øä]*\ ×€w+s Öa®—K Õr4Á  Ô¢ïÀZ Ó]a ÒñIY Ñx× ÐêE  ϱ%E Î>|Çu ÍB({Aÿ Ìá½,þ ËND-ý Ê8Ž}jü ÉyHËkû È:HÝú ÇJúù Æ>Õkø Å“zÖ÷ ÄâÖðtö ÃSÄáiõ Â0^'ô Áþ†šó Às¤&/ò ¿ë×y1ñ ¾–¾R5ð ½HXPï ¼±~­gî »¸bÒ í ºª¼Jì ¹r)iOë ¸݇jê ·Mˆ3é ¶d׬*è µ)£Cç ´sæ ³\ËBå ²9ï‹ä ±¨±Å;ã °Ðûtbâ ¯ï7šrá ® .3Nà ­h p7ß ¬…dÞ «3DƒNÝ ª;Ë+wÜ ©¨ÍÛ ¨#?Ú §ëLóÙ ¦b ®bØ ¥äOVb× ¤à»:Ö £E¿mÕ ¢h\}TÔ ¡+à=VÓ  :íAÒ Ÿß[€)Ñ ž7®aÐ ?UDÏ œÚnjÎ › ]4Í šR¼$Ì ™´ýKË ˜‘1„!Ê — Ý_É –ð(+È •ÊýsMÇ ”ŒcÅVÆ “JK'Å ’žÈdÄ ‘hò+à Û§ Ö}åvÁ Ž-Òy7À lÂ~a¿ Œ=D0¾ ‹O~8u½ ŠFV޼ ‰?K3» ˆ Ám>º ‡àÉl¹ †{óØ ¸ …µÓ²[· „ Ò,¶ ƒ‰ý*µ ‚ó1ÜP´ ú—½(³ €6² +åbe± ~1—½j° }&k ¯ |{¿ål® {F<­ zÃÚå ¬ yÇÇEK« xz< ª w¥Ýï © v,zá_¨ u$qÀ+§ to£¦ sÇ-e¥ r;´Àj¤ qoyË#£ pÆ@¡F¢ oÝçv9¡ n&lðI  mÑ…[tŸ lD½Ê6ž k( ú! jÃWE%œ iVðY› h²@š gò†Z™ fÁ¡Ö ˜ e:Z— d…l– cÇà®b• bÉ”55” aÞx“ `±¹²o’ _*Q©.‘ ^b$ðt ]´÷Ÿ! \ ü2Ž [ýõ Zšá™bŒ YV_T‹ X7ÎvŠ Wdàþq‰ VêP58ˆ U¾|b‡ Tív† S]ÌI1… RI¡Q„ QõN{Iƒ P™*¬‚ Oýaö' N .O€ MíÏT L}X~ KÑdiB} J•ßO| IÔW={ Hm-ez GúT]y FH9ZEx E§ý¡Tw D»1jv CŸCŒu B{…½t AýÁNs @Ûârr ?E'úaq >ª;6p =7>¤Uo <çÂn ;6•Ðgm :kXl 97–k 8có‡Sj 7„ëi 6·lh 5 21Lg 4Ä¡.f 3L?)e 2è´šqd 1¬îÑ%c 0æe®Fb /<ɬ a .Wðõ` -¼%_ ,dñqT^ +œŠ¼/] *¹.3o\ )Æ ‹[ (â-a,Z '¨õÍ>Y &+xä:X %ùW $üÞ V #6òø.U "ã×T !f>S  ^dáMR 㨠EQ Ë/L9P °²‚O Ó¡HN Þ‰lM €ó)L VÁVK ÉvƒOJ kq‡_I $ÌQH ³ËG fm¡YF ¬ëídE TþÛ D Щˆ+C ×kp/B ¼ùnLA ]!(#@  žçæC?  ¸\[>  9e0=  š%ÜL<  È4B; ¦ùî3: ö…ë 9 7áG8 œòÕd7 Ø!MX6 lI5 ›([4 ®±^MÈ„ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8÷ âêaö áZ«0.õ àäR>ô ßßµ >ó Þ‘ÞY;ò ݼ{ñ Üû²kð ÛµP&ï ÚzSîî Ù7Î1&í ØL$/ì ×Mï9që ÖIßCê Õ’¨&é Ô|—ÙZè Óµ µnç Òë«+]æ ѺCeå Ð#)6Rä ÏîT¾pã ΋Tâ ÍR ù]á Ì+³®1à ËÇú\ß Ê‰=Þ É)Ñ Ý È–ý Ü ÇÞ79Û Æf©ÙÚ ÅitÙ ÄV»4Ø Ã¡RÉ#× ÂÉ` jÖ Á'× Õ ÀäB¤IÔ ¿Ü<Ó ¾iÒ ½Ä8€EÑ ¼hÀ4nÐ »,øéÏ ºïPˆYÎ ¹º{ Í ¸ÒW`Ì ·“›_LË ¶§ @Ê µxqËlÉ ´’à~È ³üê¢cÇ ²….ïKÆ ±ÑrkÅ °á?Ä ¯jX3à ®Âä  ­â£*Á ¬€ÉÙLÀ «°QÜ)¿ ª»fo¾ ©”(ât½ ¨ˆ²³U¼ §ÅêEb» ¦8œº ¥Õñã¹ ¤½£ZQ¸ £íÒÏT· ¢{¾I¶ ¡ $µ  ta=´ ŸÙÙd³ žÔ{-c² ®D-e± œ[ ‰° ›\µ( ¯ š@® ™ZzÊ ­ ˜»à/¬ —«9³S« –óBÜ ª •ÁWB(© ”9I“$¨ “Ö_§ ’ŽJ¦ ‘À¿k¥ ê"ë]¤ Y=n£ Ž@ºr2¢ ì4-O¡ Œ(3^K  ‹ýÐ Ÿ Š[ŒDUž ‰²ÀÏA ˆGëœ ‡K]B› †ZÇÏrš …™6M™ „yq’6˜ ƒ¢M¦*— ‚K",– ưE0• €~dO`” xÆV“ ~šÅ%’ }ºôZ‘ |[Ž}T {hÙžc zgË#wŽ y@cž xrð/Œ wØl|‹ v³åéTŠ ux‰'‰ t2Gª1ˆ sü@†S‡ r™.Y† qýí½… pé%ß"„ oBéQ%ƒ n‘<q‚ mvrŽ löks€ k/A jX5F~ ijAê:} hÒëp | g¹y)H{ fRw 5z e³ÀLy d"}ŒAx cÒï\9w b,ë4 v a}ªZu `8‡t _2€§8s ^›‚[r ]+ßLq \öè~4p [^§no ZŽê)n Yùføm X¦¹Nl W¶¤ck V÷ƒ..j U4Yì"i T§0h S>°Ü3g RlEÕf Qs³Pe PL_)d O Ý]c NyŽ:b MŒÜ€8a L=CÐ` KŸ§Au_ JÊß^ I +$] H–üœ\ G€ãr[ F‡iMrZ E¥Ò1<Y D´·Õ7X CúþÂIW B⻉!V A¡Ý+U @;—(T ? ¸”cS >õ"R =ý†Q <褟 P ;×l†(O :wÿgN 9r`+M 8£òGL 7¹g‡qK 6ÇJ 5ŸgVI 4òPÀ H 3ëË-.G 2VÎ÷UF 1ÀÑgE 0DÊ VD /e‚<C .s¡2B -¬A , «¤n@ +™B2 ? *™U > )ð½ A= (Ëc ;< 'jŠ(; &¨: %±ø 9 $¾gšE8 #Ö—*57 "v‡è6 !?©×e5  $õB4 ¶@¤q3 ûž¼$2 vعl1 3ãÉW0 H£­m/ ªL. ¶›0- ÇÇf, ÝÛW+ I-”8* 1Î$) ¦•VO( ×hu' M05& &²`S% vNE$ ÛÏn(# …VÕo"  í-!  ÌrZF   ·X  .§ø&  M/ Ζ%Z ì³\ : RøV ³ki ÀÚy D A ®ÎpMðç À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8Ù âæÜ\Ø átÉÁ × àÛ¡C`Ö ßÁ¾=sÕ Þ ÍqÔ ÝZ "Ó ÜyŠç`Ò ÛŰ]lÑ Ú"ê–FÐ Ù¶ÚÏÏ ØD„‘GÎ ×=ÂeÍ Ö†&Ì ÕÅ~Ë Ô¹¿æ9Ê ÓÖœvoÉ ÒÂ,È Ñº…§Ç ÐäEï,Æ Ï…%³Å Î.”^=Ä Íxü¤$à Ìz¢’ ËVÁÂlÁ ÊÉ+À ÉLv(¿ Èšp?¾ Ç>€©G½ Æy«¦¼ ÅO‚A» ÄjB©jº Ã%²T¹ Âkæ¸ Á€–!H· ÀG4V¶ ¿D³µ ¾8µÀH´ ½ïI³ ¼,Ì$² »å'1E± º0´È° ¹‰1¯ ¸„–´>® ·°Æ­ ¶«|`¬ µþ9?7« ´òV‡Bª ³”Ý© ²…~<¨ ±mIJ§ ° ƒ ¦ ¯×fÑG¥ ®®Ð¤ ­-6RT£ ¬Q'R-¢ «‹?£?¡ ªÓTÏ   ©çÞ#uŸ ¨ÕÑ5Tž §TùQ ¦²¾›0œ ¥髇"› ¤Þ4wš £'t3 ™ ¢Gu–v˜ ¡„t@—  ƒW– ŸR• ž“ûNC” »xj“ œa‘|’ ›€*8c‘ šÔ‰BH ™†\u ˜¾ZtNŽ —2mK –rHöqŒ •… =:‹ ”‰ZîŠ “µ²âk‰ ’¾ òjˆ ‘Þà5‡ †?† "% L… ŽZá‚J„ iÜc/ƒ Œ¶£b‚ ‹ï²t Š5 ˆD€ ‰ë%®1 ˆu{S ~ ‡‹Jh$} †¢Ê&#| …Zù¿6{ „d„L,z ƒõçsy ‚ñ°Ztx Á\Ùcw €ñHtv eLWu ~-16"t }ÛÈ G‹Œ= F$;u< Eï²; DŒJ»Q: C#RB9 BM:¹ 8 AÉüA7 @?Y q6 ?qçb5 >ÊÕ24 =NJ-(3 <ÉïðQ2 ;HŸ=1 :ºOõ0 9z:Ó</ 8ü|i. 7îE- 6,if, 5è–+ 4×û 0* 3\Àƒ5) 2[P ( 1ãGE@' 0kí& /å›;;% .<$h$ -ÿ‘o# ,ôYÐ5" +'=×m! *t£1 )¹ä' (þÙB 'ìÑøX &¡ê.l %Ä7¿ $äŒm" #Ý¿  "´H& !ñÝH  ¦ö Í*˜ •ú7 Oµ L¶ã* :ãׯ+§ Îc^%¦ ̓A ¥ Ìé‘BB¤ Ëßññf£ Êrއ¢ Éω °VÙ¹`ˆ ¯„S5‡ ®­ˆïf† ­U@… ¬Ï/„ «L Sƒ ªt1Ðn‚ ©_B  ¨Wø € §”ÑG ¦±xôm~ ¥ ‰[} ¤S¶!| £ᨣn{ ¢*¤Ez ¡R Ry  d²RDx Ÿé‚TRw ž©ž‘v Ëc“?u œ½ ä t ›_²>As ší€r ™KAXq ˜`"1_p —È2Ç'o –{ö9Sn •„eÐLm ”™kˆ8l “Ê_k ’Þ™WNj ‘=„¶ i j1#!h ahœUg Ž¥·hHf ºŒ% e Œõ»çjd ‹bþ&c Š­]Kb ‰·¸9a ˆ“@&` ‡Ñc†v_ †‚_z^ …,GÜF] „}öP*\ ƒ4;…j[ ‚©~QZ ˜N¿Y €-bpFX I€ˆ6W ~ÞâŒ9V }rs+U |þ#CYT {$âtUS zÏJÊR yܼ`Q x/[tfP w]À\kO v¥_®uN u\çÑM t³˜ï=L s}ÅðoK r—`ƒOJ q±¤ýI pl@êaH oDj!G n ÃrF m=¹/1E lÎ\ãD kÜúC j5£=$B igtVA hSm5L@ gM¸*"? fƒÙ“l> eå§‘%= dÙ$< c^õ; bºÿgB: a»îZ9 `KðzT8 _º”M[7 ^¢(K&6 ]"gâF5 \ô6f4 [s£3 Z7ñç2 YÓs¢N1 X©'m-0 W)š½/ VÄ„?. Uôñ(- T…, SSF.+ R£u#* Q.‡º0) Pu½† ( O05`' Nò & Mgc¤!% Lˆ´ú<$ Kçê# JãGa" InÅ£&! HEsKu G%XžQ F*<_Z EMê¹ D%°= CÿO^ BZEl A)‰˜  @Å Ml ?/ ¨ >ëuú2 =!§“ <ÉŠkZ ;W* :Y 9¦3{ 8©ìn 7qÔj 6_~Î 5â‘T 4݈’ 3sÔC1 2&qÈ# 1îv 0¨€# /!+ß  .„¯Ã7 -ïV ,¢ ý +¾ïw *EzC )øˆ‘l (3î ')ÑDsÿ &4$ªþ %ê›0ý $<…8iü #éOVû ">§ÓQú !¤f¹Tù fr2ø ÝÐ$÷ Nuö "WðUõ öAsô étó GIâlò 5kñ ”KØð ì=ÀTï ¼ ¹0î Î.°í ËS)ì Féë Š>T>ê Ž‘à é âè Æ¿K(ç ÕeJæ ¨¡å ¬P¿rä àjGã ÄdçXâ '+ [á îK à LhB4ß ­ˆyUÞ —Ý ‚<+$Ü `ˆ-Û ’DLÚ DP·S@®€ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8 âhÆVœ áFÚ0› à•aš ß·)½™ ÞôÄÊC˜ ݇ -— Üénó_– Û1â|u• Ú aD” Ùë`“ ØÄÛ’ ×Xn* ‘ Ö‰2 ÕÊkv Ô(1îŽ Ó¸ÕVa Ò!\Œ ÑzÀU‹ Ð% «%Š ÏÙ›Æc‰ Î'Ë-ˆ Íôå©h‡ Ìa’[0† Ë«£Ú… ʧ44„ ÉøN°-ƒ ÈÔÛºk‚ Ç;q Æ:­Æ?€ Åê¾D Ät‹úQ~ ÃÙ> B} ÂEd| Á9„÷3{ ÀÍNÿ+z ¿ÂvƒEy ¾|á_x ½þ Õ^w ¼mtgv »´!77u ºëðÊEt ¹úTÓs ¸0Ñqpr ·HÂgHq ¶®ùtp µ®®c5o ´“Ê«;n ³AËm ²fïô'l ±0¹64k °x k3j ¯hƒði ®L±¦4h ­iC«g ¬×[U"f «˜ù‘e ª¾5ed ©êª'c ¨›C¬=b §`óta ¦Ï=W` ¥:_ ¤ ð ^ £YžÁ] ¢¾LK\ ¡ÎÔ_D[  UEUZ ŸÈó©(Y ž X s± XW œ„äú=V ›¢Â˜tU šLïùT ™";S ˜µ÷» R —màC^Q –H¿n P •buO ”Ê£•YN “ÿkM ’ä›ÅvL ‘Æ¿0K ‘»ÐkJ ³·I Ž«¡ÁH íÒàqG ŒýIUF ‹]ÇagE ŠsÞGD ‰a<©C ˆTé^B ‡vŸ?8A †}˜ìI@ …>¯ßH? „.²@> ƒõ¢"= ‚º·U+< áæÙs; €D£äa: qî¦9 ~(¦F8 }Âì7 |íÊÜg6 {ߢë*5 z:cŸ-4 yRæF3 x¢<®2 wIçŸs1 v~ å0 u¼ÝÕ(/ tnDi. s0ä°]- rb$þ, q£|%q+ p·/;* oNn•$) nÒ_*( mœ r5' l µx& k¤Óž% jã7òL$ ic # hrÃn" gˆ‰J'! f„÷‰ e"Û D d±ÿò7 cHÉ® bº$3- aBá÷^ `„·ÿ* _I» ^Èò‚L ]›ä•b \Å4eø =WeJ÷ <4Qö ;ˆ·-Sõ :Œ96Fô 9G½4ó 8Ôjvò 7Foñ 6ùÒ‹Rð 5`îÄï 4ÏRî 3¢¿,í 2`=ì 1Rg­)ë 0ü)Rê /]» :é .az%qè -áË‘dç ,…$P6æ +UÑÙaå *ésÚä )hk\ã (x,)â 'ö°bá &õû=à %Ú>Eß $fLúÞ #¢Ÿ\nÝ "$ó QÜ !µEN"Û ÁuOAÚ >PÙ ÊÍ.Ø ºv× ´àETÖ F6Ç0Õ gYÔ t|XYÓ w#:Ò WBÌ%Ñ ÿc½vÐ |)Ô(Ï ¦fm*Î ÷dZÍ ñ€½/Ì òõË Ø–½Ê  ©KÉ øW·PÈ ¹óÇ Ý´­8Æ óÂwÅ r;ÖOÄ žÝæ à ø` S¸”FÁ µßÙAÀ °šáp¿ á) -¾ 梚?½ ëw¼ ¼»Ø$h À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8 âוE ~ áæ§úQ} à*–=b| ßZþet{ ÞIÜgz ÝÈßry ÜlìíJx ÛnKëOw ÚׯPv Ù4.>u ØÍÂmt ×K 5ps ÖóU;Dr ÕÌÈq ÔøýÙp Ój·9Lo Ò…5ñhn ÑíÞZm ÐÒl Ïu¡tk Î&—Ë&j Í,¶¬Ii ̬2"h ˆä\g ÊKèÜvf ÉÝrF5e Èå˶bd ǤÏ+Jc Æ!RùAb Å °wa Äq`­v` Ã}+_ Â_/b^ Áa¶ÊM] Àîx)\ ¿Ú[ ¾ò¬–;Z ½8Ø¿ Y ¼¡Ö^YX »ŒOWW ºAR(qV ¹Ê<ùNU ¸T [jT ·ˆ27oS ¶|* -R µ ³#Q ´™®©,P ³”|RO ²ÆGC3N ±¦æMM °m‰wkL ¯ FâAK ®áaJJ ­)Í!dI ¬Ÿ¬pH «§±,G ª¼´‚jF ©Ý?SE ¨3´JD §£&ä2C ¦lä}$B ¥ªâ(A ¤Ž­Ò\@ £ÂÎK? ¢o 4> ¡¶9¸=  9Nì4< Ÿfñ¹[; ž÷Í: ×™e 9 œ8Öìc8 ›¸ñ7 šMì!6 ™IZZG5 ˜ïƒB4 —l*ÆQ3 –Cÿòf2 •ó[ÆV1 ”¤ž:^0 “&•–h/ ’Å„. ‘B¼U- .zH, :IT+ Žm¬Ôp* Ã^) Œt©2Y( ‹Žž7' Šq7Á.& ‰"YÑ!% ˆ GM$ ‡©©™P# †¡ ®" …Øs@! „‰€-  ƒ¬¯- ‚¿ë  b´†* €.¯o >úÛ ~Н_ }ï{’ |Ê/™6 {á{[G zïœW yû»üb xÇÁj wþ‘u v.ײS ubâäV t%g  s‹Ïô\ rÕ£¶  q?+  pÇ3W;  oT69  nPíÒe  mQPa7  la kÉ!]U j¸"  i<™,  h )l: g™ˆ4` fT/6 e'`Üb dÚâ5 c€¹Dpÿ bØ, Bþ a?3pRý `t^xQü _§ŸSû ^è +<ú ]ÏÒJù \ðÏSø [è„@Y÷ ZÍäIö Ye=Üõ Xù–uUô W£›ómó VŒ>.Iò Uæ]6lñ TÄ›!ð S¶Kï RíC~<î Quãõí PPÞNì OˆËuë NЗ>,ê MÇ{`Té L©øðè KèÃ#"ç J#Ù2Næ Iù\ÅNå H¾÷Q*ä G˜. =ã FN3Ï â Ešñ§Zá D [Ìà C1¹)ß BWEÞ A¦V¦Ý @ŒC¹;Ü ?0 ZÛ >#ˆ;Ú =µ²ó?Ù <îíÊØ ;(Ý‹× :Ù’ãAÖ 9Ít`Õ 8àÿULÔ 7 ¹­tÓ 6ø¸/Ò 5N¸§Ñ 41 tÐ 3fx,Ï 2¦ßìNÎ 1ˆµ³qÍ 0ßfºlÌ /çÓ Ë .¤¢-Ê -°/aCÉ ,*`oÈ +ŠªÇ *ª)ö-Æ )$šßFÅ (‹ÓSÄ ':Knà &CßbD %f&Á $¤Ý5eÀ #VvZ3¿ "¤ÇSB¾ !×$ûr½ BUV¼ ÙEü"» ݳEuº Ü´‹¹ IqkC¸ ÎmkD· ³¼0¶ ’G®.µ Ù¨ ´ ’¡¯³ ¨lðE² ¨ZY± †¥ƒ6° ½ ÒD¯ ä†k® .7Y)­ ½I¬ ŒPl« kª Æ'(© þjôi¨ Œƒà6§ áº|¦ %Ï-¥ y\ ¤ íh£ ÃÐM¢ ÍLpi¡ DÈ:T  ÊWŸ ùëtž 6É;t À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8a â±ÛÚR` áñCE_ àLjUG^ ßMd­,] Þ!l=\ Ýñ±[ Üw/uZ ÛÞ§êCY Ú—‡¥lX ÙL·ÑW Øšâ¥ZV ×Y¡U Öšº T Õ\ÏèXS ÔJ¢Ž8R Óü+Q ÒJ‡ôcP ÑîjçQO ÐWõ#8N Ïœ–ÕhM Î8ä‚!L Í?Ë ,K ÌœûmJ ˨½ž7I ÊS³0H ÉÐ_èAG ȳCF Çì°ˆE Æxƒ²D ÅÉâ_9C Äàó B Ãcw-&A ÂΧA@ ÁEy£?? À×ð³.> ¿DXˆ7= ¾nýA< ½*P]t; ¼CYz`: » .S9 º2±Lk8 ¹>½7 ¸EKHX6 ·‹)ôW5 ¶Ü)l4 µ\ËÜ]3 ´8£ k2 ³®„Tr1 ²¶†d00 ±* / °/ïr. ¯ºa- ®7 r, ­Ì›3++ ¬æÅk* «¢*) ªWÜ5-( ©øÐ® ' ¨åД & § ºe% ¦ûÎo$ ¥Àú…C# ¤Œ¯n" £‹O} ! ¢×{a-  ¡¬4Œ1  “CN Ÿecs6 žøž  F½^ œÄvñq ›¦‡X š,ËÈ  ™é¡q ˜Sd —dë q –¦Dx- •!y÷^ ”¬éšv “&`€F ’à±» ‘5“»G ª°‰l jeX  ŽuS3u  íÌb  Œ7Ñ•  ‹Bа>  Šý•T ‰$jD> ˆ‰An ‡pf †é~$ …ßå"= „ŠPo2 ƒr¬#n ‚´•{( úà»fÿ €¡€·;þ Q«ílý ~ÚzôQü }ÛbPû |Sr&ú {Çsóù zCÏ(Dø y3¡$÷ x·•¥qö w€x-^õ v@Ç;Nô uwVß.ó t|C,Qò sÆÛ‹/ñ rÀÓ½Ið q¼ãr ï pã˜ÏHî o3ƒ‚6í nð6ÂPì mû†Hë l¸J¥Gê kªw"é j;ë(è i©31ç hå.£3æ gwf6å f*P§ä eéBã dÒ+l2â cc~Ã2á b fÇà aÄg;ß `ÿ©{FÞ _?Ý ^˜']3Ü ] `M!Û \rƒÚ [Ãê0]Ù Zòm.Ø Y@?ÆB× X5 Ö Wzë¯Õ V·W\Ô U¿_¹FÓ TãÖñ]Ò SP;Ñ RÌ@æ0Ð QÐHÏ PzÌfÎ OaŒJ.Í N×g Ì M‡Ë L¨ fÊ KÄ„éÉ JãvÈ IU¿ïgÇ H¥ÎÿcÆ GÈeYÅ Fp!.Ä E ¢:nà Ddh}c C óûLÁ B,ö À AÝI.%¿ @•}&¾ ?ÕÐaM½ >/†dj¼ =ÏÆòL» <¿µ/Pº ;x‚n¹ :‰¼¤]¸ 9Di}=· 8—¨ó7¶ 7*ÆIµ 6óÓ´ 59©]³ 4^$² 3k´›± 2ø!W° 1kµ‹O¯ 0¹v?® /‹}­ .ÇEq¬ -SäOu« ,Jª +·“:© *å!Î9¨ )—Àúl§ (d‘Ñl¦ 'd>[X¥ &á«0f¤ %…O>£ $ ^~&¢ #V¹Ý1¡ "¯Wÿ1  !4bÀPŸ ¯gtž ·öZ Fžƒfœ {L²› ßm°Nš `öˆ™ QJª'˜ …€Q— ®½$– ˆj7• ’” ¨öL“ ±7[:’ å–™?‘ Û{U fÀ[A óÔ“rŽ ص²6 nÂ;Œ ˆZ&‹ S÷DŠ w¨X‰ ·Êˆ Þr‚.‡ ZàÜ1† ‹òR4… ÖÆO „ ÔóLƒ @ž«4‚ øç>N ïWra€ ›bµa¸× À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8C âè;ùWB áΰ,A àñ\î@ ßôâK? ÞM08> ÝV := ÜM¢\< ÛikD; Úò!T: ÙM›™a9 ØÖ 8 ׌û­k7 Ö5û„6 Õ"“€L5 Ô QEe4 Ó›OåM3 ÒΓ7#2 цY0t1 Ѓu0 Ï W¡+/ ÎNxÁ:. Íç®f- Ì^áàI, ËæS:3+ ʸ:2* ɧ„ß#) ÈbÝ-P( ǸµV4' ƃv±k& ÅÎÅ)% ÄHà‰0$ ÃòXé # ÂP÷”k" ÁëšY! Àh)£e  ¿Åúj ¾È>] ½@F>r ¼UFf9 »fºŠ_ º C ¹ñÖ¹5 ¸ªh ·›?ÕG ¶TÿH) µ…‹Jh ´„Ìo= ³ÁÐËn ²8án9 ±/÷ü  °¯ öX ¯h$‡ ®/å{f ­¶\&  ¬ƒ BZ  «ÿC  ª$¢c/  ©•'  ¨pÕÌ §È^ ¦~b¯4 ¥]Ù§N ¤‹Ã{ £:2𠢨fs ¡(wšj  ¿~”1 Ÿ¬¡étÿ ž(¦)/þ eo¬ý œå"Yü ›|ôtrû šœ×p ú ™ü²Sù ˜se ø —“²1÷ –LªÛ.ö •TÕrõ ”ÇÕô “Ѽç1ó ’¦¶1ò ‘ú¬ô2ñ ä­z$ð 0Ìj#ï Ž’NÓmî îò"3í ŒCD?ì ‹“ÑGë ŠI¥iê ‰Z,é ˆZL@è ‡C04ç †ƒÏRæ …cà+å „{G;Fä ƒ,YZuã ‚Ñp;â [è-á €Ç‘Çà «Eê3ß ~È+qnÞ }ê\ÎCÝ |ehÜ { ©óQÛ z¯œ­]Ú yÃ1(eÙ x‚ûÜØ w{)t× vTÃñaÖ u®ZÕ tím Ô sÐÙKÓ rgòV<Ò qöNhÑ p \[Ð oÿ5&Ï n×=³@Î m{³éÍ l޾„Ì kÓ5Ë jÁPÊ i¢y5É hÈ|eÈ gWAªTÇ fc£ÛfÆ e 8SÅ deÇ’YÄ cT‹†Ã b‘w¬6 aÞÈ.OÁ `FXCÀ _¿‚}¿ ^:TV]¾ ]¢Oç½ \†­6¼ [4¯¹`» Zon6º Yjáû8¹ Xr¼f¸ W„é¥S· V°»¿¶ UöSµ T/Q%*´ Si¼T³ RÚ'² Q%irH± Pqw}° O%# ¯ Nì)^9® MëØ„i­ L 0¶G¬ K8pLs« J?j%ª I§D¼L© Hñ Mr¨ GU_§ FŽTÜX¦ E‡þc ¥ DÇ«;¤ CÒô.£ B£i¢ A¤)@¡ @9iœ]  ?9ÒsŸ >2uævž =`Pt <¥Ð2qœ ;ëÆ&› :¹%<š 9˜§J™ 8T˜€)˜ 7Gÿj— 6ÖÖpk– 5 |èX• 4øØ o” 3ì¶“ 29?’ 1…2.,‘ 0øˆ¢: /²MG= .¬nõCŽ -c/r ,GbÿŒ +1æo=‹ *„kŠ )jég‰ (ÿP©#ˆ '¼_­>‡ &䉋† %jR¸r… $™È3„ #cqlƒ "q'x@‚ !` _hŸ€ G\ P c:Y~  ²‹&} —{t| r&Ñ{ ÁÛkVz H°ÍGy Pº“x »ê¹Nw Ò<ÔIv r¦ÞBu #÷IYt †…Is ØWn_r ”¨?q këG<p {ˆ…o Jûn ÝæKm 1•Æl \$h,k †…]Oj ”’&(i $@å h FºO#g ù*@2f ||Je >ûÑid )_gc ºbmb RJISà:‚ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8%â&ͪ$á¼ú4p#àÄ´"ßgŽh!Þ‰Œ½c Ý}%ܯ0ŸdÛÐA„bÚÁ»FÙG–i,Ø‘ª n×FÖHä2Õìš|ÔJ\3vÓ—:HaÒZ°²RÑT 3ЭPRÏ‘¬5"Îqu¼cÍfD'ÌFÂMË7Ê|4 ÊgòFC ÉÊ㪠È1Ñ R ÇÆÊá ÆÓÀl\Å”bÈRÄáž $þ>B Â2nw ÁÛÄqÀ¹ñþ¿¹J9¾\ L½gš58ÿ¼@+¯kþ»zý²>ýºFqü¹¥Ž[û¸üJ ú·°=~Hù¶‘~ÿ6øµöPg÷´ƒ÷ö³É}0õ²â)¬"ô±¯— +ó°Jêç ò¯:«?/ñ®þ¶2[ð­|ޢﬥYî«¡'e2íªø¶s)ì©zvë¨å¿öcê§‚*Ré¦bôPFè¥ÝW‘)ç¤áxfæ£z#> 墦Ú$%ä¡QëþYã x³¿ âŸâí ážhè\>à›!ßœ}²¨5Þ›O(Ýš‘Ž$Ü™Ž?Û˜-°†9Ú—Èz‚Ù–'TDؕԉ [×”•#Ö“¨¢jÕ’°tGÔ‘Í EÓ5²ÏLÒ]Í(ÑŽ…»dTÐhaZÏŒ¼û£E΋ãÈ~NÍŠ:)0̉he:ˈ5çbʇèÐ;Ɇ8}lÈ…´õy Ç„´uƃÄ×7Å‚ê¢ÄÝ+ÔsÀdäyOÂàÌÁ~‰ÈbÀ}x$i¿|!ì>f¾{J ½zñú L¼yYº›U»xIõ"Zºwl¨çP¹v$¸u± P·ts`Ò¶sSåAµrHä)´qÌ'¤i³pŸ'_Z²o¢òå±n.8*°m¶“> ¯lÔ'Íb®kRÑKl­jÏêø5¬i[?mV«hæ`”<ªgt9jd©fɆ h¨e%Øß§d`‡ó>¦cÒ"Õ¥bT ¤aì¿3£`÷‡Ã&¢_?¼D¡^†½}G ]É1£Ÿ\µ;ž[…ænrZ4¥ŠAœY˜çÒ<›XùG3šWÐÃm™Vi½ok˜U¦Ìc+—T´Q;–S¥ñ/#•RŸl?”Qê“ O“PÎ^N’OÜÒ!5‘Næ<{LMyè_ Llp·/ŽK[EÄHJ’L•eŒIÁˆ´:‹H²v%ŠG÷c8b‰FÑ^ hˆEtÇâ ‡DÛ.GV†C™…C…Be–Èb„A.V ƒ@>S ‚?kDL>“ NF€=hau<žY?~;eu»K}:.¾˜H|9R{±{8rì1z7ÄË?Hy6I-cx5ÉQ-cw4×’áv3ÃDJ u2W¥t1Uvî s0pbjr/‹÷¶q.æ/p-ª{8lo,H“M#n+šè\m*ð½àIl) ê“k(5ñ j'¼Åƒ$i&ÅO h%­Ø&@g$ÖEè9f#d+„e"šÉGd!×…Q c sÌê b/?Èqa:£è,`;#¨7_GÏ^jòX]Jƹ\S´ôE[ë8^?ZEãXYÆú‡`X‚°(rWSâßVyó#vUoÚ#gTÆzgSBøžWRLG£Qº½W"P ¨¨¹ O ~G¡nN 3ø\%M ‘¹ypL pðÿBKåÑaJª™Ë I£TpHÿ¿–.Gñ^™ FkuLEvžUD8=xLž‚ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8â 2%Qá|Êèà„,_Bßv"ÂDÞÉîrÝ¡o $ܾÒ[Û¿a:ÿÚ7½#þÙ>Æ/ýØ0Iígü×WWûÖÈPocúÕ§œ(]ùÔB*eøÓ[lÛe÷ÒÏeH1öÑÁ˜m&õЖçF ôÏËd^óÎÁ0XòÍEÎñÌ1Nº$ðË'=ïÊùöÅîÉwœ;íÈ,VŠ!ìÇäЦWëÆ„½À êÅßõéÄ…T,MèÃ’c ç³@0æÁã¼¾åÀ¸OfAä¿ ¼³l㾇8ã⽨(ËJá¼ެ‚à» tÝCߺOŒCÞ¹Š¬Ä Ý¸Ï] iÜ·mxÉtÛ¶Ö6à+Úµ€ô¼>Ù´Ä„”XسÉ.JײrEÖ±Q© Õ°Ö|ª9Ô¯š`±RÓ®Kk fÒ­º±~ Ѭûz*[ЫºT1ϪóÞzΩw”ͨ^|z ̧òA“v˦[žÅÊ¥¢—m/ɤÚS2BÈ£©²Ç¢[„ÛÆ¡»ÐmÅ |1WÄŸ~X;4ÞY§>¾ Áœ9ªòQÀ›âœøE¿š³ V¾™Oic*½˜¨ó4¼—œüX»–€ùpº•skëK¹”ó±n¸“eÂöi·’BѶ‘Ë+0µŸy¼n´5±¸4³ŽÇf9q²ß–H±Œ¶=Ú&°‹1¯ŠÁØÎ ®‰¼xBR­ˆî`4¬‡²Im«†F’ª…É,—K©„-¶1¨ƒÝ¿Õ_§‚·’f¦xsL¥€EB~Y¤wž{8£~QŠÙ+¢}ê@'¡|8©Ã) {¥StŸzÎ1žy6GxêHœw7‰›vl).šu×zxW™tÆÜor˜sÐ$N`—rUø'6–qÀu&&•psÞ ”oÆ5a“n+Ç=’mûXÍK‘lêÖñRkS»jve°?ŽiMUÿ_h„|’;Œgiçñ)‹f­:\Še¶!y\‰d˜}Wˆc@u.‡b&…™ †aZï1…`>õ·„_«¼.ƒ^Ñ«m‚]!zY\‹Å+€[²Ì*ZÊòd~YCKh}XUîN |W›˜E{Vƒ‚P!zUgILyTQ±oRxSŽVALwR£Þ”_vQ„®F9uPÜ^*tOØ )sN…ó rM›(jqLŠj^PpK ~¾oJ<¨ÄnIÎîNVmHÑiš#lGÑ7$.kFœß;jE>žKiD€^hC{üigB=Äx;fA;hs,e@ ÷d?jCc>8.@b=G¨¯:a<]Þ@`;.î˜K_:À€úF^9P;6]8J{Çi\7ô¿DL[6cêcZ5Í)Y4²÷>X3“‰6W2ÿº)-V1AÝ7U0„ãOT/y ”mS.`mcfR-¼EqQ,:¨YiP+kÖLO*?RoN)“í1OM(Ï·ÅL'4JK&L%J%Å« jI$Z÷fH#ÓS’oG"ΓcF!Øð|?E  &Û#D Ô±kCˆ»êjB W;`AäY@ÌTëq?ì’†I>|xžP=BÈ-<Ïa-;ÍÛ4c:rß"9™Û]8†EË67á ,6È…ÓU5>a:4õh3}½ÕV2 §º'1 šL>0 *²¢G/ “¡ ?.   Ú-¹Ð[,-ŒÈ+ÂÝŒ*‚Ÿ&)Æ-·K(øo'PÉÇK&cÕ:Hƒ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8éâLMbèá‹ Rçà$,æßÖéWvåÞu&fäÝ…4ãÜÝá\eâÛÆÚ±%áÚ÷Õ "àÙ }¡nߨ܃5kÞ×5À'nÝÖ­ iÜÕý!¬ ÛÔck6ÚÓ"ÂãÙÒ«ØÑ¬¦>×ÐU¢KTÖÏ‚Œ‡:Õκ˜žWÔÍóuÓÌ~‰CÒˆ¾kÑÊ…ĶDÐɆä;XÏÈ£ÎÎÇ®°[cÍÆÆú&ÌÅ’²\!ËıQÌ'ÊÃv¯*cÉÂè©/cÈÁž ¸nÇÀøûÆ¿Wšt@žAwÄ½Òøðmüëê±1»Á©+Áº_f—À¹Þa‰a¿¸ÑTñj¾·ŠT&O½¶ú46r¼µ·qÅ;»´γÍ<º³€ˆYK¹²òˆ=^¸±aÖ@·°D2¶¯¤¦cµ®nmôE´­÷8='³¬†âïM²«Ö§X±ªÀéC°©þ„§s¯¨ý^;®§Pß1)­¦ªœb5¬¥ÜI0«¤}§/Rª£»"©¢È@\¨¡&£?§ m¯Â¦ŸÍ+•^¥žs’Yh¤ ^G£œðè[7¢›Ô¥¦-¡šäÀˆf ™ã+/Ÿ˜¼ Xž—z¬Ü&–Ã|½Tœ•lC-s›”|…š“Nv]r™’ó*r˜‘ Ê —Ä%–˜Y™d•Ž7ã][”ˆñ}Q“ŒØH’‹p 㑊TèD>‰ë‚E ˆÒË7Nއ§†¨>KŒ…Wð7‹„#`øŠƒA0át‰‚²¤)ˆa&š>‡€ÝB9'†Ÿì²:…~'ð X„}Õ0ƒ|N‚{j¬?zWú£Q€yOñ`xþ&Ç ~wuš•Y}vy|uo»{t1²7]zsZÑ} yrÖzÞ&xq•fÝ:wpÀ˜GvoÆØzAun3 9tmîÅ»slŸÒàBrk;[+qjæn<7pizÇGohöÀäung “Mmf¥_ÔleÂÍ“Lkddí§MjcLžeib9ÊÄ]ha= g`†çdf_½Û^e^ŸÁ-d]Éíc\líä1b[âóCoaZÖØJ`Yÿív_XD|“s^WÛÍj]VšÔe^\UšKZ"[T›T=ZS6™\YRb]¤'XQÒJÜ5WP'šÏuVOøAÑ^UNë´QTM$ ™,SLD.î,RK#÷Þ`QJÕgsPI4óP)OH^² wNG’§k MFˆ—fLE]°ž.KDd9FJC}îeEIB‰1}hHA½ÓwG@P‚¯]F?œ?³5E>óÎ×fD=Ý,2C< ærB;·‘²!A:ö*ˆ@9©09Q?8„†²->7ŠžÌ=68‚ëq<5È ?;4è/ÿ]:3i¯@92Ëó\[816I70´ã16/ä‡ h5.P£%%4-;3,ÅØó`2+BT=^1*­ï:0)‚H/(×gQ.' ©ž -&ÔW=,%ÏÁ++$+ì^*#ìñÉ2)"ʘÕ*(!sƒ+' þÇ:&<=%E%èV¤$õÚ¬!#3Ÿ5k"kŒ»!pBƒV »|s&¢ÏÒâ1ý©#ä Èµ›%æÿ†j³ë$¤ØE.¯ ã>cßP@ ÃÖq =}Õ  ¡Fã -ï*  6F¦%à<è8è øë ¸ÿh3 í½üo ïå\ ‹©Þ íUpdƒ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8ËâÜ 5YÊásê6&Éà¹;LÈßÖ×AÇÞ8ékÆÝsÃPÅÜ!2×<ÄÛýÃÚØF×hÂÙYgnÁØÕ•H:À×ÌxáP¿Öý Î ¾ÕU ZX½ÔçÄ@¼Óä©»Òìs«ºÑÅ!) ¹Ðø¼Ìm¸ÏžLk·Îüç‹E¶Í—"LhµÌÜám´Ëzg³Ê$ÊŠL²É\t¢±Èê9n°ÇÒ5"-¯ÆE&~®Å£æ¯o­ÄE;¬ÃÌ5]«Â;wƒ1ªÁF˾&©À𣨿;èÏh§¾›Q!_¦½ÈÊh6¥¼(@¤» Îõ£º\ñÕo¢¹€$Y¡¸É‘ ·ï$Ÿ¶h™®Ežµ?Å›6´ëñœ³Nõ”›²ÉÍÒ;š±aš€™°Á0ÞM˜¯‚ß$0—®sXÁ–­mË •¬b.t”«R”h“ªN$’©Eç󑨌,Ii§z„Va¦io,>Ž¥ÿÑO¤Ü‘\Œ£#é?‹¢ª Ó>Š¡'mÍE‰ ËÉ(ˆŸƒ+G‡žlmÈ=†¨”^…œA<Ù„›C±jƒšƒu‚™Š`¶P˜.‘Hj€—¤'–v‹þq~•‰W‘ }”XìG|“Gî­ {’îÕô`z‘AÃAyñ,3x XŽswŽk³ÜtvK{:TuŒÆûT-t‹œ]%sŠÝ ýXr‰ZùTqˆžòùNp‡iàxuo†TX²Ln…´¸ÄCm„ìWlƒÝnk‚ºÿjlÊçAi€OGR?h*ÿLJg~¢Jf}·oX.e|qhd{ür‘ccziíUby¤9·]axŽßbV`w/Pf_v›Ò"^uL•Ù]tTq·O\sΜd[rÕ£kCZq§)'VYpZ\9FXoÏUÙOWnnsrVm85‘OUlýþ>MTks¿¹ZSj8GRiê95 Qh|ˆY^Pg;Î UOfú¸¿;Ne!mLMdËÖŠ/Lc‘”í4KbÛL{nJa—×ùI`ŽäIH_”2F^G^£š OF]pËæE\n“. D[å_ÒfCZ $å:BYBJ‰OAXÚ+™@WΗk5?Vw…£:>U­ÛÅp=Trµb<SâÇj;R9ºéZ:Q"»Ým9PÑVš8OùC¹7Nÿ2JG6MÅ B5L÷Ê•s4KýÇq*3Jð«F2Iüfì1Hp÷%0Gh$Ò/F¥h'U.E4ÿ-D|š>b,CF5+BôÐŽ8*A¥Âý/)@%ŸQ(?½Î`'>g;7V&=,ÝÚ4%< 49P$;;Œy#:ËÄå"9-ä!8Zâ 7q7G6s!Ü5PŽº'44‹-h3@v0C2#ˆ“&1¾%Æ70 Y/kØ.#D”r-úc©a,ŽÐñ+‡ðØ?*V’ú3)<øî(íÉ'_NòD&@Â7]%Ö×@2 $!S6 #6–ÀO "=üP !ùÁ<  ³šÊ,¯½PaõÞO03à=¦e[! EºÂ, èƒf<@V3?áIÿ-'þveg0ý?Ÿð ,w ï˜PzXî(Mí„ûõ?ìl>ë˜=}sêÕÞÏS˜Çƒ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8­â§¶h¬áúdð«à-CZªßŠ›O©Þ‘„b ¨Ý×Ƀ§ÜkY)1¦Ûm¦1a¥Ú_×Ðf¤ÙXûj£ØñÜI+¢×—}…¡ÖÊ ™\ ÕsvŸÔ+P$žÓõØgÒ–¿bœÑRºø ›Ðl×VšÏ4舙ÎHÕâ&˜Í.¦1-—̬F9–˱•Ê¢&±-”ÉqÃS“ÈþWÏ’Ça‡L ‘Æ9YÊ ÅðÁNEÄï"³sŽÃ‘ žÂhtÃoŒÁU f‹ÀB$rf#‰¾x†è%ˆ½òA>‡¼|Éç5†»ÉYKH…ºŽZƒ „¹riÓƒ¸lÁ£q‚·ÔÇ1L¶éGIu€µÙ•´ˆ~³b×Ù}² yK]|±>ÅZR{°,ÐwSz¯—ÂÛ&y®Œ¶vx­—$¹\w¬³Nmvv«AŸd#uª8ÂøIt©*¶2s¨røÎ r§§áagq¦‡áÀLp¥˜§ o¤s]ärn£D]Lm¢݆#@l¡ äâVk §<´djŸ¯ÀÒTiž„—¾0h ` gœ],ÝMf›º&‡8eš‰µ¿d™“+…Zc˜LÆ Db—‡posa–ϰ1`•KÐë,_”6›—%^“r¶o6]’±EÚR\‘–?ôm[ä¤'ZJtQSYŽ_bÀX¥$·CWŒϦ•V‹tÌYUІÜ*]T‰Ùâ'Sˆ4³kR‡CßcQ†»"¹DP…iyO„YÞ^Nƒ.Z†bM‚†L$&LœÜŸDK€S”õJÊmoI~ªTH}Ê”jG|mô›kF{Ù…EzÂz|)Dyö4CxQÕ×MBw^ŽÎqAv™GQ@u ïØ.?t®Ë>sfe¾v=r7Ý3[<q?w"[;p{Í»=:oÏ)09nÜÁ]8m÷Ãm7l[ðNe6kDýÆ\5jT¤24iËž±O3h¥»2gŒ\hY1fãÀm0e}>/dÛÅ[.c»Ûì--b2K<,aˆ“+`]Ñ*_ed)^A(]kþfT'\±—ãD&[e€ã.%Zhk#=$Y±åþ#XÑßc"W2M¾Q!Vj¦ÚJ UMËÞ*Tì—9Sg[ +R"/–tQ„ N(Ps%BOÚÞúNØÿYMQLŸã DK‘‹qPJéqÔYI¤0²uH±* uG&å%?FåÞ(UES2óGD^Ë*C`|O B ÂI Aò¥Ÿ& @ÎÍ  ?¢™- >“C=ÿ±ä%<”4C;6²šb:GÓYK9ƒ$88Gµ»7KÐ6,0~-5hŽ´ÿ4ôÉ/`þ3HP›sý2«™„Eü1ãÓr,û0;$4ú/Gx ù.§sþ2ø-ûFE÷,áô™Rö+ÁŒ®õ*¿Q‰ ô)]ø-ó(È ò'H~¬ñ&Ò¸fuð%m%|ï$Î’[0î#Þs”7í"ï\ì!ίqpë ùLFêÌtÞ+é¸rÀQè ò çðüÞIæFˆ‰+åXä¥ äÞ&ãÖ6âäs1ὈeBàö¼3ß Áv?Þd!÷;Ý<ô©pÜ?ÜÊeÛf).ÚææOÙ<õ%Ø ƒü%× ùr¤Ö vÓÜÕ ŠÓè.Ô [ôÓz†LÒôDÒ=Ñ~¦UkÐÿv7ÏÏ}hÎ"2³ZÍ=±ÌþØZ;À*„ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8â6ê?Žás–¦à(ŒßÁü# ‹Þ5dD5ŠÝßR‰Üñó%1ˆÛ%‡Ú€ÎZ0†ÙäœHt…Øw–„×/#Á ƒÖH`l ‚Õ°IÔOûm€ÓoVâÒ²MÝ$~ÑôÚM(}Ð *_.|ÏëbN{Έ7JzÍÿ¹]AyÌÞcGxËÃö(wÊ`¾vÉ R¦tuÈp)¬;tÇTÀÈbsÆbKNnrÅ ú&qĽõOdpÃvíoÂ>Æ—anÁ'EùfmÀÏœ3Ol¿¥D=k¾¤-[j½ë4i¼‰ëh»R«™&gºš<Üff¹ÆàOme¸¢gûd·Ù Š c¶ÿYdbµ˜t­Ea´dÀ¸I`³Æ~ýM_²l£&^± 7d]° ÿÍK\¯r‰P[®žû\AZ­½¥ÖY¬¥-€dX« ’mWª¾XV©P#²U¨–^®uT§ì]2_S¦âÓ—<R¥–DŒtQ¤¦ä7P£˜ZQO¢§ Ë N¡Á± M ŒO‡jLŸ/ù“4KžtBlDJQ<Ñ&Iœ°CžH›Á2RZGšÈPöF™ ‡ƒDE˜uÝ:D—7\C–,Ñ©B•YP·\A”¹/@“ú.°L?’lÚ">‘PY÷F=Ín>c<’iï,;Žÿ2´u:T ÎO9ŒuÇô8‹Ñ<[7ŠnãOO6‰"5ˆFy(4‡Iærb3†ï£Àh2…å2ý1„ Æ^0ƒx;mN/‚MêM.:¶C-€µõ ,³£Oa+~ŠëÚ*}¦PPF)|LUK ({‘ÓÏi'zݵÙ$&y!…T%x~‘,$w16/J#víGÝ9"uiºm2!t-T§` sÚ2 mrQºxHqxdpp¢úo.öXWnç&~mu­Òl‹W|mk%‘dj —i`F h= jgxhSf˜ÃHEeÒ²Rdø…w-c›óÏcb±'Û%aØøÚQ `gNA _ù«@+ ^Éšv! ]0ÈûB \B£U[¬àQZ/Ù§YkôXXv½`W©òCV”*aU´ï6MT½%VS#XUhÿR‘=òþQ§ô'ýP¢2aüOÂ)¡ûNc£;úM*eaùLçp¨_øK™5yl÷JÈ>öIkMaõHvdôGýc®XóF!­kòE !ÒRñD4¥Ë"ðC¸ÐqïB^d0îA7>uí@çýÒLì?ÌFë>ïS(ê=ýjäsé<¨1Xhè;ÄêMç:ýjÿnæ9O††å8U¬eä7öÏ pã6#²D:â5œýSá4€%Cà3ϧ†vß2Cå!tÞ1xµâvÝ0ÚL.+Ü/ÊøÛ.bú`#Ú-}‘uÙ,¿gØ+ÊF‹\×*IvÕlÖ)_U?Õ(ɾâ5Ô'i£qÓ&Ãm"Ò%ýÃ$Ñ$Ñý$Ð#òÖÍ`Ï"7+êLÎ!ê&$PÍ u}©UÌ㾞QËåÊY«ÑTÉÈ«`È/*vÇ+hwPÆ>ÅuªÇhÄTžó:ÃÓJW–ÁôZXKÀyã)d¿»S¾]ÝÒ,½¯B¼—G >»2»º »ý]n¹ ˆ¨&¸ àfør· N&f¶ ÍŸµ˜‘L´€Õ8³ŇO²ç~L±|Y$ °Tr¯é&?K®Ò×è„ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8qâ'ÌQpáÇrKoà¡änß+îqmÞShblÝ…âV5kÜPë?jÛý#ú7iÚ”¹o9hÙ´QgØ]{ f×í¹ TeÖp*`dÕ*®ó`cÔ:fübÓZâ aÒï7[C`ÑëÀB\_ÐÞûÅI^ÏL²]ηidj\ÍP¡F[Ì[xLZË:sA\YʆyDXÉ‘*g3WÈr†jVÇ^dUUÆÄüITÅ4–´SľÑ8;RÃü2óWQÂtžePÁ€RÃPOÀÛÐ#1N¿VØTM¾ñ¼sL½œËÔ7K¼ž¨ÛJ»§“—\IºC»7H¹3a`6G¸²SMF· 2TE¶;v˜DµN9ï!C´|¶Q9B³Üë¨>A²4ëi@±ŽZ+?°…o/>¯|ö"=®N¯Q<­u0;¬È€vi:«‚»Jf9ªÍ-8©=ðKg7¨ÁŒ+6§Ç]Œ95¦Á‹Ë4¥>«a3¤ bÏ&2£Æ€1¢)ÜT0¡@™„p/ ·/Â<.ŸI)…-žW,kÛ°X+œô?†*›-C;B)šøêÇ(™d"+'˜™Uà&—_%V%–â0$•î[Ò #”Îf9"“·ôðZ!’??²Q ‘™T^µ â̇íaލ–)wŠ*ŒÂ.L‹dÆVŠ|d€R‰ƒ ¶/ˆ§û¼‡£ÅJ†¯éÎ …à\€-„e*ôJƒFW>‚èˆçWLèF[€Téþ*a—M ~sðè? }‘¹™[ |”íZ' {™`Ø9 zHÌFry«ù x‘·ëFwcULv®°U3u5¦ptë?stKúfrñQjq+y·ÿp YÎþo¢2c ýn Àß&üm?!iûl]h DúkÙž5NùjÓ#ç"øiÇ2r\÷h>/Œ0ögj}­EõføgÎLôeÖâfódðX7òc¾'P ñbØ÷]ðaÃÚ"ï`–s<&î_Úí^Hˆ`ì]éóLë\="jê[åJñ%éZýÜíPèY\¥NçXa–F æW:ùCåVDT¦YäUÖqW%ãTiò+QâSN³쪔@Ì=¬—Ë<„´ªÊ;Âã\ É:åŸkÈ9Џ$_Ç8КšiÆ7õ4ŸcÅ6¹¸2Ä5žºÆWÃ4 U­Â3é—-Á2_ÎwÀ1­(øk¿0™E62¾/WH½.Èþ(O¼-wT»,ðÓFº+”[D¹*ã¢l¸)K§Íp·(Œj^¶'Cv76µ&²«R´%{ÈYO³$*)²#4æu±"ÂhB°!'ãGn¯ ßì!®(Ç73­”F§'¬ù»0«òÜ÷ª!°©Ñÿ¤,¨1àÓ§ìßñI¦Ð R¥@€ãW¤\Àê$£Pæ,_¢\wÐZ¡å)Ï !ÃkUŸdMž4àÍ ”¦^œ ¤ÀL› ‚&&]š  ,X6™ ™–"˜ —×õ 4–špúS•¹_É ”2 “9²ùS’˜¡X‘“œ Få…fhñ„ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8SâóŽ_IRá·|QàGHSPß|Ž"pOÞÑm,aNÝh}¿kMÜ™ÌLÛ³ KÚk!@0JÙýŸIØC½À7H×3XpGÖ rFÕT_²fEÔB1'DÓ{Î{6CÒ-®ï BÑï1AÐ&6˜@Ïáþ 6?ÎõÇF>ÍôN:=Ì=Û&g<ËcÓ78;ÊùC$:ÉÓ‡ 9ÈpÁb.8ÇÔ(SN7Æ3²G6Å®¬C5Ä•% $4Ãv”rP3ÂFÝ…+2Áß^É%1ÀãÁW0¿_V/¾ý[;.½›,è-¼på†J,»77+ºý(;*¹îñCH)¸ñ›'I(·…<ž;'¶'±ÂE&µ>¦Wm%´U˜ã'$³LCb#²»Bb"±1{ÍK!°¤·F ¯’ôÉ ®û;½­iS[¬óÕ «%~%Mª i1<©Á'¨?F*§½±Ým¦hcóR¥¶Zyu¤“fp£)¡L¢á–a¡G•2N ­y“ ŸÆCbžŸ—âjóB œF+e ›w€ÒP šÇ@ ™³‰S ˜/¤º—ÛßZ–1ë •%±KS”¨‹þ“|ÆxT’5?6‘;ø?bžâôÕQÍ?ÿŽÈéÞþ2‘ëYýŒæzß"ü‹ãK‰EûŠYEaKú‰‰<,ùˆ*ß…tø‡?QR÷†ÔÃùö…LÑZ"õ„{˜ AôƒS]󂨑…Zò,†P ñ€Çlð(ï~ºF÷vî}”†%í|GÜ=ì{ìÒ×ëzžðGêy ‡¤7éx3và>èwµ¸Ñ-çvïq;æum'ô0åtÝãƒPäs`xmãrraCâqlå>!ápðÖíàoå1‹Pßn×KŠÞm\ÒnÝl¹9HÜkôEÛj´xÚiÞ +RÙhÄLz<Øg¹.×f£Ó ?ÖeO½7Õdœ‹°FÔczu@ÓbrÓŽ Òaì@GÑ`ßÎ-TÐ_ÍsXÏ^|jAÎ]=UsÍ\¹ð,WÌ[ÌåËZiÊYÇNì ÉXØhƒTÈW„ø&ÇVú¬ÈdÆUqþD/ÅTpªŠPÄSp jÃR•™´ÂQ’˜&ÁP,1RÀO½ë°@¿N¨Y V¾MÛ†Cm½LW§”¼Kû,a»J;: ºIu:½¹H —^¸G"íÊu·FÝ>..¶E°JiBµD ?}c´C¤ó¤(³BÙX:²A£yºN±@ƒò°?F–K'¯>"Ô?b®=ò¡@I­<õÑ<¬;Œ$¦j«:Ì5Y ª9fj>%©8n£M¨7mÐòq§6Ýd¦5Ýz*¥4`?¹a¤3×A9I£2êÒ;G¢1Q>D¡0fD8 /¬ålŸ. L#Zž-âl×,ßú”œ+ኛ*—ÄMš)lÂ-™(­M˜'8K‰—&×ñV–%þÅ•$p²'”#“ÂÆ“"9°c’!!uç.‘ Q°a•CÏn&lç(Žަ’m¶Œ_ù›%‹Š®ŠB\)#‰ ‘9ˆ·ŒJ‡òÒsZ†uO…qý„>]Rƒ±…V/‚„×D4Íê~i€‡k˜EJqH-~ sÌœ]} —3=| _D;H{ •ÐÖz ƒ{Àty¨n UxDÃÅlw} H(vnpuB=L(tì‰lsûrÂrJ8T… À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ85â%4áËô„'3à}Î32ß1©ÇH1Þºûv0ÝŒ³ /ܺ§H.ÛFŽz%-Ú£oÆt,Ù'Y¬a+ØÏVYB*×·S)Ö?Fo(Õ>ƒ¸3'Ô|{qf&ÓIœ %ÒËC$ÑñcíE#ÐX1Þ>"Ïçͧ!ÎC?5L ÍÒ®`ÌÀÞ~1ËV KÊPR©ÉÅãÄÈRÕNÇÝ AeÆJfÅLùõMÄ,÷ë8ÃΈCÂÉξ'ÁñxÀv ¿º+Q¾è;"#½“Ë0^¼wËVZ»ìksf ºš­›i ¹‘Ó  ¸; ·D.ªa ¶5LØgµ‹„ ´ñsóE³ ým&²®¸íp±GódU°'ƒ^b¯ì()®ÁM­ûú¹ÿ¬A½3þ«sÅ%ýª¬w°+ü©pŽ@û¨°)U,ú§KðÁ"ù¦‚*7&ø¥;~Ð%÷¤W÷gCö£7sMõ¢Ñ.gô¡ãà$ó Cô_nòŸücä3ñžù±Êkðæ÷µKO\Gî›Vñíš\þì™°˜Èuë˜Rº¶ê—OjAé–ÝòË&è•«Ägç”ù E;æ“ÂÄoå’…s_ä‘,ˆ¤Kãè{¡DâNºg'áŽO?bàýddjߌÃ/~pÞ‹a‡îÝŠ„EW܉t«„ÛˆóŒVÚ‡s‡ùOÙ†3A×5Ø…tC*ׄÌÖHVÖƒ mJ3Õ‚êÂ$Ô]ü©"Ó€L¨½cÒ£2ÙcÑ~‹Ü·-Ð}KÉHÏ|YpcÎ{G`ÉSÍzÓ¥üNÌy¨9(+ËxA%Êw÷<.Év%¡d_ÈuÌÖfÇtØ#+Æs7M-XÅrÝ›`ÄqëªrQÃpŒ.ÂoîPYÁny PÀmN„ùi¿lmŽ”)¾kR“A½jAþâG¼ivL,»h¨Dæpºg'ÔŒ¹f‰S³¸eoÚž3·dÁXÂF¶cG$ì7µbÒ³'l´aL]ô³`ŸÙh²_D$Q±^,9q°]\H8¯\*¤M®[¸®¿ ­Zƒ,ùB¬YP»„«XBãªWîS7©Vï;¨UíüåP§T«.*¦SïtJ¥Rr‹e¤Q=.[;£P€¼/¢OiÍy¡N †" Mî«}tŸLh¡âGžK*VEJö"™&œI9jG=›Hf3šGCÃüD™Fº¬>˜EuûÍ+—D§Jƒ7–CŽ£•B¸'!”ACNV?“@ñ’?sŠBP‘>Ù†„l=Úc7<vË¥Ž;•ØÁ;:a¦IŒ9Uzi)‹8C¹^TŠ7ÿ3&v‰6zq€Oˆ5m”èe‡4oÄN†3 R!j…21¨D„1’és2ƒ0ÀÌ=‚/òïõS.øˆäM€-.7› ,´V~+³óÑX}*œCÐu|)ò2{(›xy z'©#y&TC¦ x%dbow$u²ƒv#¬ÁHu"j[Jt!?!–Cs ý¾œ2rD®Â0qy½Õ&p!åqkoR³˜^nbYmÚœQlÕ¸«ek,b'jq³”\i<ì£LhÜPg’T,f?L„<e™ôÄ[dÔˆ13c>ÕŸAbE)Hla’‡ ` Â$ _ {XK^ Ž,'R] œdÁs\ 7|L[™d% Z¨Á9Yù4[%X5%#KW¯~V&­DUÅcÀTÛm`>`·… À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8âžÿ*Ná³X„dà,õnßÂ]3?Þ¹ö ÝàM[Ü24Ûæ]'pÚLó&;ÙtHñ_ ØjÇub ×­`^ Öq l Õ6ïE# Ô d¸6Ó6’NÒkÆÑHÚgÐXÌ0Ï­.P=Î`y¯bÍBþ9U̲í‰ËDŽ|ÿÊ º>þÉ6¨8ýȇýjüÇbs!sûƵALúÅJF_ùͦ øÃÜ¡÷÷ÂûawKöÁL§¼]õÀÀÞ ô¿Ò, ó¾”îiLò½ÊvKñ¼|–± 𻞒È0ïºÛ†jî¹4Ø/?í¸ ÛJì·9oQNë¶ËÕ"êµW]Fé´Þ¸dè³¾~«:ç²è`áæ±­ÇRå°ú@Æ!ä¯ë2_ã®8D"â­$KZᬽ$“à«©Ú+BߪوÜcÞ©<âØ Ý¨«\{fܧڟ =Û¦O¹ÎÚ¥j&Ù¤ÃöØ£)5\+×¢·¸RÖ¡3¨¿6Õ V–iÔŸö[¡Óž‰ƒ%XÒHR·EÑœ‘–"]ЛÉk5Ïšh°Î™¶q~͘[ôÎ`Ì—ë _Ë–o½{AÊ•ÉaðÉ”Â=åÈ“Í äÇ’Þh¥;Æ‘׉ä>Å]ÆŸNÄý+LÃŽJVpmÂBºÁŒýæRÀ‹éÒ&¿Šî¼?n¾‰AY\@½ˆ¾Ü9¼‡&¨_»†³J̺…ç®lD¹„Óžò¸ƒÁðæl·‚ª¸ÏU¶ ØçCµ€eY´5´Àð;³~àO)²}Û$¤X±|n œ2°{Z«Û4¯zFH8:®y’’ÞN­xK­$F¬w¡³—$«v대MªuìG6Q©tp×yE¨sNÿ®f§rŒÇ©H¦q݃åH¥p‘{p¤oJmF£n“°¢m¼¸‰¡lA õd kǤ—ŸjŽ+žiÖÁÛkhRyµFœgòí›f>ŠÒešeÆZ@L™d[—27˜cé ß—b-ˆà–aŠÈET•`R T ”_…8ak“^•Ük’]Ü óZ‘\’ìe[¤” Z§^ŽY_ù#lX1pSVŒWœ!^‹V^€ŒŠU’çÉs‰T½imˆSBZ ‡RJj5:†QÖÆñ]…P aÝX„OËtƒN->/^‚MjrOpLu¿?€Kœ u J™7 ~IŒ²ªq}H–ê_|GUéòK{F™Ò_1zEÑb"ZyD–”‹xC§ã´&wBõëÙ5vAw“–%u@w¦tt?ðGËs>4•Yr=¯,þpq<s¸‚6p; xŒo:y—cn9Ÿ¿Ym8à¡Ógl7&€k6I}”9j5çLwi49d h3~õ:g2¨øvf1ž‚Ã_e0WI68d/ºQc.Ò:Fjb-ç ¢Da,ÊŒ$`+DâK1_*ôßJ@^)Ňû](¾Tg;\'ñîª [&ÜvH$Z% •*bY$0=@!X#¤-W"B 7CV!Æ ¬ U }#~IT)?S¯³f RÔ/ùSQ*jî)PäR]OVŸ* NùT\XMâ,Q]LË­vK?Ä´JœžÖ7I&¬æHÿ=%GÌÛ²lFp<ÉjE‹S--DŽXú8CôÀWB AB‘A …!m@ ñŸ5? é¤èW> žSrP=ÀE `<×fon;Þtó:j/”9‡ÆZ8‘.7îzu6ª‡ºlˆ† À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8ùâ‘$ü øá7+q1÷à犕#öß8ø¸aõÞ|ó-môÝ_ê¤óÜ`èòÛÖJÕ^ñÚ)3#ðÙ=òcBïØjø¤7î×gÚíÖãŠçTìÕGø…ëÔÞ[•vêÓÌ=éÒ™õ¨èÑÊ·é[çÐyý»UæÏÑ£7qåÎ?hEcäÍÄÀàfãÌë²UâËÎHÇJáÊå4]àÉWvVßÈÉ*ÞÇÜòÝÆ…ƒ]hÜÅy¦^ÛÄ©ÀÚÃXÀx6Ù¼Ëx;ØÁˆ ð ×ÀØÛÐ_Ö¿¦¨XÕ¾5K·sÔ½#¾¹6Ó¼kR0'Ò»ÂÄ~jѺXû±dй#0ϸ‰:zηMÉ5Ͷ®–j̵¤«Ë´SÔ—@ʳÈå¦É²ŠãÙoȱ´ÐfǰæðámƯq~Å®ß‹Ê Ä­“A$친C« BJÁªÒNeÀ©œ¶e¿¨3òB¾§,Ãä1½¦½nU¼¥ ôh»¤€xÝMº£# -¹¢Rén$¸¡³)· :ê]^¶Ÿt†8 µžËV=I´HæFn³œ8ŠW²›A®è.±šuýA=°™t*p¯˜Ä gl®—æ°kO­–‹T"¬•Ÿ—¼Q«”âˆú#ª“Ä[W©’ÖDF\¨‘R¯ÌI§¹3L¦ÖÝì6¥Ž¿ü5¤]ÐU£ŒÕOÐH¢‹¦Ri3¡ŠÞGæ ‰’sŸˆ«Þ<[ž‡§Kû'†Î –Cœ…ÍZÆ$›„ÜÌ÷Ešƒßb6™‚èZW˜ò—Lg—€;i)–ЍT•~Óè1”}Ãó5^“|}5·9’{à e‘zêÕüMy&uªx(q+Žwq$áAvÉæ«lŒumcQ‹t_D ŠsgY%‰r‘ïψqj|m‡p"Re†om“…n=êE„mĽ\8ƒlúbO‚k7 _jDD€iÞƒv6hË9Y~gï§_(}fä“ìD|eéÈàU{d£fizc_²º<yb¯G6xaw0iBw` ÓWv_Cœ.Cu^Ù9t]WÀ s\Œ¸š9r[y± qZ]"4%pYtNCQoX”œ6nWÉRGmVþ}“=lUùýkTÿØ<7jSu‚<iR_U’'hQû1qT=þŒ_S<f±´LR;“6UQ:vЯP9NÚž!O8ʦN7ˆûV,M6dø dL5ÃtG K4S ^J3YÐÈ@I2½Á«8H1u{G0››XF/*ÃËOE."”a'D-‰3C, 2V\B+t¢`A*ÄôZ@)Ÿù?(26J#>'î€,=&·žk<%øV#;$%ú`:#>¦.9"»¨í>8! y%qÐ$ ê’\L# BlC=" )½t.! ‘{  •Ñ(wÊ×úBOŒ=âãž[…I~?Dë©vT­ö"þß”Lâwˆ°}† À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8Ûâ¬Õ*LÚáPŸ`\Ùà+f{ØßÄ4+×ÞÔ{}ÖݘWÍ#ÕÜ¿™ygÔÛ&û?aÓÚ DWJÒÙ¦¸sÑØ×U†IÐ×f¢®hÏÖ%_ê=ÎÕAÓŒ$ÍÔ6{ŽÌÓ7mËÒj‹dÊÑ aOÉÐRÅ8gÈÏáèÇγ£ÆÍ·$ CÅÌß—^ÄË5¾NÃÊ…CaÂÉ~¦itÁÈ3˜HOÀÇl¦o¿Æc¤îh¾ÅÎÐM½ÄnûæE¼ÃèGö »Â}#ã@ºÁ’¢ãq¹Àˆð:¸¿­s1·¾÷¦«P¶½÷jµ¼O¥¹´»:6ÞX³º¶Í5²¹•‚ù$±¸/' M°·íL}&¯¶×G(®µ)?­´åài'¬³‰6 o«²YQ\ª±› .$©°Æ-0¨¯~0ùD§®1á¨%¦­Ìca¥¬«v¤«ñ£ª{ ¢©¤Éw¡¨ü>¾E §z\øGŸ¦«í ž¥Üì8K¤ãS;]œ£Ïp›¢›û7!š¡ì/G™ ^o¹˜Ÿ½o—ž˜a)5–º¶õi•œ ¾ ”›“iP“š¾:Ñ’™ á2‘˜Iv—N¥S–Ð\q5Ž•K@;”ĘÜ>Œ“Û ‹’iS»uŠ‘(eÿE‰|ÁƒEˆD·‡Ž‚ÊèU†]93u…Œòh:„‹ 9¸:ƒŠ“²¿k‚‰!æºqˆ—œòa€‡B0³t†Añ*~…÷O }„q3ìl|ƒÞŠj){‚T¢z¤Lù&y€²õDcxøØ%w~ü{$Zv}–Pu|‹ý<t{p)³isz5D¥try½¿ sqxŠ ¬Upwõ;govဵnu›Çpmt_ó»HlsRYkr¥.Lgjq†GipúåƒYhoâ0gnɆs fmýŸã?el1ûOdkQBncjßô¹Gbi LæKahÐüÆ`gcf–_f¤­^eÍæòE]d,)[=\cN>bc[b¨d DZa­_2Y`zú›X_Œæ¦gW^Îå¢RV]ÍÑdU\æˆT[@>VSZÜ>XnRYïlÏ\QX–ÜàLPWç"OVõ˜ÆNU@×5MTX½µvLSÃLKRU•>JQýE IPÛójBHOygGN?_oFMgäEL€{fDK|Ž#GCJýžßGBIª 9AH7Ñp:@GTÚ?F%‚è>EÉ(*=DÕCÆM<C™S;BÞ Å7:A­(79@¦] S8?Žqšs7>ñ&B6=÷¯l.5<ª+] 4;L9qK3:ùÓT29W«K187Üf#072à3/6êÕX:.5[w]-4è©° ,3Ü«++2àšv!*1tV>)0ù~!#(/ °;('.jÙj3&-|oq-%,E½² $+¨›0#*Þ'!7")·H!(SIA ' …%&¡O™i%(L$uH.w#O0`;"»•*[!®­3% ãE=j¥Iþo™QSºç4] (ÇD( l/RÜø†=Jå/*E­{Üž;t.B äŠ >~pp  6ë |£ål [óˆÁ=ežÛ…m I s (Üñe Ô#œ Lä WÌïk•OŒ%Q9.ÿlšhþÆšúQýl~XHü$û±ÑÏJú‹U5ðà† À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8½âñ}=¼áø?)»à|`×%ºßº¾xm¹ÞÉ}¸ÝNˆ¯+·Ü9¼0G¶Ûæ<ú5µÚªÑm4´ÙB 2:³Ø2ؼ²×}7‰r±Ö#ýB%°Õ&ŸkU¯Ô• m®ÓÊ‹'­ÒpÜd=¬Ñ–W§ «ÐþµyMªÏ •óJ©ÎÓšh¨Íõ\§Ì[AT¦ËT]Òd¥ÊÅ9\q¤ÉÆO@£È¸ —p¢Ç¥U¡Æð ÅŒ8KŸÄ4à6 žÃ7Ý9GÂ/>’œÁ.l]q›ÀH&š¿âX¸T™¾£Jwn˜½÷›þ —¼´d=%–»-.9•º# ͆2“¸ç)„’·Xzít‘¶¶Âµÿµ]_´ÌôFQ޳PÛ¦i²ƒBŒ± B h‹°ÎçmН¿uȉ®/bhbˆ­UBò‡¬œÐpk†«! \…ªÃ(Í?„©™”^%ƒ¨p9ÉK‚§̦}0¦ïM¦5€¥¤·Úñ ~£Ly8}¢‹!æ|¡ŠfI{ /ôz/zŸv]5yžØ Eox¨+ìiwœF–3v›Æ<7ušV €t™è\s˜Œ…¦#r—f{•%q–|Cp•ÂF\`o”K¡ôrn“Ä¢ym’Úß·l‘¯‹õYk#9jB FiŽ’­ZKh<FgŒ°zÈGf‹÷OeŠªÚífd‰j1º<cˆÌ‹b‡£hÌta†{æ( `…,t¨_„…”^ƒ™¾D]‚³í9!\†\Ä<[€0ÇZÐ XY~Q!lOX}]ü9W|:KÆjV{ñ" lUzlþuQTyÊÒ:SxnÖ)Rw¸ú¡*Qvçf¤ZPu›ÿOt¡iìNsÌ1á6MrÞšLq ‘°@Kp^[yuJoš+ <InXõYVHmFI GlâIùvFkWiEjîJ‘0DiéWãCh…ã7lBggáŸ>Afz¤]@e—¼C?dä€÷B>c¡±a@=b5Ïd<aÓ¯Âb;`Ö}d:_a’Z9^ñ‘ù;8]qxF07\Õ´IB6[´Ô&5ZâÿW4YX×3X‘µ!2W5Ã#1V~7d 0Ulq?/Tnj8.S‚FÅI-RÇ/Œa,Qkj+P¸uG<*ORƒ8d)NX’²Q(Mùño'L¶Tt&K‡ý&i%JoÑt!$Iî&2)#HƒôÝr"GØhB!Fb­U EejWDË,SCÓ< BâÉ&Ae 64@ŒÝ7?=Ž%> kP=V\r1<r;ÇÊM3:!s9–¸yY8¬^[b7ü„Ô76¹ÐU5WìgE4ÊÐ} 3u@‰t 2À¸ 1¾gD 0Ñ`g /Ð(Á_ .Š ¡M-“"K,~m+–h2*‹9ºJ)qs( Ð]A'D¡K&/G¡0%dŒãÿ$Gó iþ#¤£ý"×'[ü!5û]û  úÇAùV;ÿ*øNÚ"÷(Hö0ÔEõÜç^ôVróó1´V*òD$ÇWñ–l¯,ð ML@ï¤ßo îðê,0í5‹ûmì>ÑöëËxiêó·nIéVhè ” Rç ‰, :æ ûˆNvå BÜbä ©Cz"ãHåÌYâ‹·ýáŽø;àÞ ßtœÞæã=ÝßÙû2Ü™abdD‡ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8Ÿâsêržá Îeà4’Kiœßu' >›ÞpÊSšÝ%ã9X™Üâ:h˜Û¾_9t—Ú’--–ÙV•ØAØ,”×û~v“Öì¢É;’Õ¶ÒéC‘Ôé4’1ÓöK ÒèýP3ŽÑº¥[бþžgŒÏÙ¼ÓR‹ÎP-jqŠÍĦ ‰ÌaMˆË"îåH‡Êåé͆É2+è…ÈÌnä"„ljä?ƒÆjÆf‚Åñ%:DÄÚ±I€Ã¡KJ4Âø]J~Á¯}À’€ÎM|¿V¤ÆV{¾Q +z½Œ)jQy¼­aGx»å-wºi Rv¹[$`u¸ÔëDt·õV¿1s¶ÍÔ˜rµ/6/q´Fá p³Õ²Wo²j 'n±íW†^m°wo7l¯-?„(k®à¼Jj­/"Úi¬V&h«[l9gªÇ=Wf©ÛÜßUe¨¯ónd§É5|2c¦ùÇï2b¥Ë8a¤_±]`££M¹1_¢üñ:]^¡ë™s] ©…e\ŸúÇ\t[ž#»–vZR°r^YœÝ.`X›t«I Wš-‹OV™âDµU˜¯uT—¾“0S–Å‚'R•YP2Q”—e¡ P“Wi((=€ôê-<¯MV;~Ä‚ç:}#˜yJ9|Å5+8{Ιo7zVÛe6yVì]5x'.z4w‰µlG3vLJR2uOj1te¡UT0sˆ¶Ú/ràh´.q\a2-pÙ×,oiܧ$+n˜!g$*mÇQ )lD1 (kš¹!'jà6[&i²öèa%h\FV$gÌz i#f$ØId"e£ò`q!dÓåK c4´ëb“æ@aÑæé@`êÙ!N_õ|­f^ÖÓ[]oÝ\"\§kõ[” nZ Ö¹ Y× X$¨LjWÄ_o@VoCë`U„ô!T°ÞÊSw BkRÄûù QPôm P%«— O ‡­ N°ÏO( M’Î\! L1èÖBKKùKiJ²ÔtIºçì[H½§:Gð#^FF XE<ìû DKnÿFCýÈ)ÿBʤK\þA{üÄ+ý@O¸Vü?s5e=û>e£ú=ÐUåù<oŒW+ø;E €A÷:hfZ#ö9$XHõ8¤1ô7ù¶Þló6Dˆúò5ž" ñ4RuªRð3¹tL ï2`€¤Eî1’ppní0Ú2 7ì/fj96ë.°½#ê-w”^é,QLè+Žv.ç*ªÛÌæ)€»>å(¥I”vä'rW.ã&rÛå%â%Ðq:á$N€FJà#Xoæß"õ!Þ!»ÒSÝ © Ü!‘XMÛhƒÀVÚSü4ZÙ0‰ÛØoC±-××›]4Öv^˜Õ¦A4ÔŠ®Ó=6IÒ¿˜o[ÑßÕuKÐûkÏŽÀ²JÎc2"PÍ׬]aÌgµ|lË͸RZÊ  –Ò9É ÷Ø/È 7a«LÇ tŽcÆ Ö×Y[Å$"F[Älÿú|ÂÏX©mÁTÆØ Àô÷þ=¿ÌGt¾°@/@§‡ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8â@p €á:a%#àáŒëV~ß_/}Þº Û |Ýóñ{Ü ôBzÛðAØ*yÚ ™xÙô£wØÖ|:vv×mÐÿKuÖhSŠgtÕRÝvsÔÌñ/rÓà8¤nqÒ/vØgpÑݧöIoÐÐAHmnÏGþhmÎƒ‘Ž?lÍ–'òhkÌú§-jËéØAiÊíGhÉ3ûJgȹù9fÇÛ×7reÆ[³¶WdÅ©=ªCcÄ'„ˆ8bÃ1¯Fha€WJ`ÁÛ™ù8_À‡ c^¿Ê[8Z]¾ééX\½P,[¼YÓ+Z»¯ÌÎBYº4O&X¹ƒü’vW¸XV·ˆ®pU¶#žTµ7¸0]S´÷[R³èwoIQ²Zh P±9VO°Mu÷gN¯šL­uM®©q!L­à}áYK¬LJ«Ò~LIª¾zjH©ò…mG¨´S¯9F§+˜¥fE¦)æ_.D¥M~ÄvC¤.(¦B£·G2A¢ò¯ 2@¡ülP7? °e.>Ÿ:±¿:=žjå<–ðu,;œVÈÀ&:›i-9š`^Žg8™!à67˜w·¿n6—;ºÊ<5–Þ¡ÈR4•×p;t3”š–­X2“¿]ð 1’œZ0‘m÷/N-n.—Ó'L-Ž!þœf,Z£Í+Œ^~Ï*‹”{Ô)ŠÊ)%?(‰gi :'ˆýoÿa&‡rêMs%†[Î#D$…1O‹D#„â"ƒ·’o!‚’‡O1 ï€äèþU_ÍO~6&<}5|ãg|öÞ5{%¤Ã*zBÒZy Ú¹qx¡·R[wDØFvGÔ u-Ÿ—JtqÄ•sùÈò rL®qô‰Â]p9UX9oŽ‚Èb n ÞH m÷¨äO l—Ÿ  kVÓ C j /2miË thk]kog¢ÏBLfŸÇ;eízódÔ©[c<¼·Xbã=a®Q#ÿ`¸hîþ_‚Yý^ò©c ü]ý¯Z;û\„€¦Fú[$ާùZY™WøYt»÷X¬B2öWL . õVáé+ôU~Î.óTÁÐKòS¾ž3ñRd|äðQA@©`ïP÷â½IîO9:ÑíNë èYìMËÌrëLë ×JêKi_ï éJ,Y8 èI~âwmçHϹ`hæGbŸ¹1åF !<äE%©Æ7ãD„SÉ>âCÔý­+áB¼VíàA»LÉUß@Œ•èAÞ?ίñpÝ>¤=÷ZÜ=hë5Û<x¢šXÚ; ûjKÙ:“š\Ø9/±9×8Œ—“7Ö7#pÕ6R$Ô5[\bÓ4ÈO“`Ò3*BÑ2V2ÁÐ1*d'NÏ0NÄ/2Î/‚®ø8Í.Ÿ¹“hÌ-m»”TË,š9Ä/Ê+ÊM´OÉ*uSV1È)©š0Ç(Ýß%jÆ'6‘sÅ&iRÙ!Ä%Êš5`Ã$Hüú`Â#î:1Á"£rÀ!|-ý ¿ V W¾—BŒ½}aQ¼Iñ`T»c׺p':c¹óJb¸ ÐlL·[·o¶ï µ))›[´œëk³ÜT²ÔþD±‹>É\°áœÐT¯èt4 ®Õkß­øg>#¬ ð¼_v« íÄ\ª ?Ââ © @¾À¨ Eð §î(®&¦{¨¥²‹ce¤ËÎýT£—-Ú¢€`{b¡ÿ_2  °+;h ˆ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8câÓ¡KDbá¾ÖÖ$aàõdÛ'`߸š)_Þ!sïC^ݦüÕ3]Üdß~_\ÛAyÊ[Ú;f‘LZÙÑ[ÊTYØ}„X×^ogWÖ÷&³+VÕÇùcUÔv´›MTÓnn4ASÒ]¤¨RÑÿHÅAQÐä¡ÂqPÏ—½i[OÎô(oNÍÌÛcMÌëÜæcLËh>Ú+KʈqKYJÉY\YIÈ€¼I@HÇlK¢TGÆ,óÆ)Fʬ›,EÄmüó+DÃ’±Cž÷XBÁOü:kAÀSÄPA@¿àù$1?¾j*z^>½“ƒ´ =¼ÃpF<»ÝlW\;ºÙ4):¹aÕ¿9¸èØÓ8·‰L´a7¶¾"Q]6µvkÖ 5´Š`§F4³Åzt"3² ´óI2±Æ^j1°¬t¸n0¯Œê,C/®EþM%.­ナ -¬èÆb,«&©+ªÛe•/*©Æ®)¨ÿN®((§a'¦I´K&¥”î7%¤Èa–P$£¾ý÷&#¢æÑÀ "¡À@œ6! ‰Þ ŸŒ½"žºâÒXa/¼sœô“ƒB›Q|˜>š¢F¤.™rmý ˜þë —ú§Ü:–kK9•r.~S”šñ*“ÉÆ’ÓÇE‘Éð-d¤hœW)ؤ ޲*R!O Œk0S ‹Ë€ Š«Z/? ‰âNõg ˆI“´5‡]K¼$†7Â-+…!ú„ tƒXž ‚òþT¼íW#€™½Ô6if:ÿ~¿èEþ}‚&†4ý|Q‹#ü{¨2ýjûz¶LúyŒQÄ>ùxá ëøwíQ2÷vŸfmöuO=ù=õtÛô_&ôsªïk$órÁ>òq‚b„ñp ªDðo<­ª1ïnv«èîm:°pbílbìkMsëjªŒÇ<êiArºéh½Ö¢ègß­ çfÃ0<æeå÷ZådÀêþJäcœ‹Ä:ãbý˜uUâa—Ná`jämà_JPQß^z¡_Þ]ÅÒü[Ý\È$[Ü[4ÉÛZîêV0ÚY‘d'IÙXñ ØWõ 7a×VŽþõ+ÖUX’ÛÕTœ‚÷VÔS…%ŽWÓR KÑoÒQÓänYÑP»;ßFÐO)0«lÏN#©%ÎM@“FFÍLÌtÌKËÞ7ËJ@C¿VÊI×Oá9ÉHWÆLÈGe7lÇFèÆE©S°HÅD„µDÄCæN%ÃBœ&ãÂAS—çÁ@N¹smÀ?`Ð×E¿>Øç¥+¾=7Àê½<§× ¼;øsUF»:f1º9¹ŽKe¹8Yˆ? ¸7 mK·6KÛ?%¶5É1¾tµ4Êé®´3ä&³2DÁÅ3²1z¨˜±0—÷Úo°/ÄDq ¯.ä¼f®-¹|$:­,­§F¬+Ù SU«*ïÍ_4ª)u©(áŒ4¨'3\§&-Í.¦%1.2¥$˜)ç ¤#;ê@K£"{Cw]¢!ùˆ[¡ W)8 ß†\Ÿ4îîkžO¬ÁŸë<œùŒÉH›n³ @šê¶ ™@ƒî:˜hÀ"—…pø@–PA•K·€ ”€|T*“yX’Þz¶5‘½ÿ9'ØiʮĎ 7‘B øõÆ Œ íš3‹ hj~LŠ °÷]‰jªjˆÑÖÁZ‡¶nìK†€Ä“)…äÀ@„›;ñƒäžÏf‚}>mˆ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8Eâh{¢VDá™fÔ3CàÌØ#BßÇáJAÞ\ c@Ý1v?ܸ¨>ÛǃÆ2=Úf¿ŸR<ÙÿÔj;Ø3Ç>:×¥Áâ=9Öî í!8Õx ó7Ô¨ý`6Óp×ð=5Òöc²>4ÑÛ/=3Ðë>ë72Ï 0f&1ÎdŽÎ\0Ír a /Ì »Ž&.ËVxcZ-ÊÅfÓ,ɸÂ+ÈBù?*Ç‹'¿.)Æ¿ŒJ(ÅÊpÖ'ÄØì´G&álÁ %Â>jüG$Á[ß%#À³V8G"¿” G0!¾ËÁh# ½ã=¼“5k»Àý¼ºȲW¹» Ô<¸ýNT·~]2[¶‚;v:µÍÖç#´„˜³é3L²v5|W±yž‰-°m w¯k®­ÍÃo­èø $¬#U«9ÓIZ ªùÉ´/ ©xŸk ¨³Î?^ § A> ¦š@¥} ¯"¤;£©]µ¢¡ súE  G<Ÿ Ä«ž¯À Øô`.ÿœÃB×7þ›”þµsýš9Ð]ü™0x30û˜ùÄ,Uú—˜*"ù–V5¡Cø• ޱO÷”}¿tö“hUõ’Ídû4ô‘…Sóù*}$òrúyñŽïÂkðœö¹`˜?sî‹Ü=©híŠë+ì‰6Á;ëˆ/v‚ê‡ãûôH. =b|s Ÿ<l @ž;ÎâÅf:Á4>fœ9n‰–?›8tÞXlš7ß/ªp™6elg˜5ÒUP$—4 ÐG–3¸K•2•¬Æ;”1œ]À1“0ÜÕv’/'ËÑ0‘.˜¹4-N%,±QŽ+°Ü¢l*ÂLŒŒ)©0M<‹(&„KŠ'naU‰&†^—!ˆ%4m™‡$w.†#0hE…",§•5„!_Ýkƒ aã>T‚,¦¸>¡Ûj€þoZ˜¢q~â˜Él}±ÉO|¢ˆH{Â%Ú(zb´óy==¿_x¬w'â—Fvmáô u¤‹tÈè]VsuNwVrèpÇ'qR4Âp àBo ‹Ì!n S2>m #Òµl ò¢ê<k^ê`FjWöQiZ9Ph÷«†gÏ<1fÿ”newƒrQdbaÏS¸Ðˆ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8' âqð& áS;2% à t<$ ßòMKV# ÞñßXc" ݶ~)1! Ü `& ÛÎñK) ÚwD´d ÙÄPm Ø;q ×—;Ó" ÖÐî# Õ–Wf Ô;©#s Ó89( Ò‘m¡  Ñá˜BI Ðözù^ Ï'‡gZ Ζ õ2 ÍjJ ̹´Å- Ë,tX Ê}’P. É0‘< Ȉlil ÇóbV< ÆG,~ Å•/8 Ä]}i Ã#·Ú9 ÂaÆF ÁS‰HK ÀàAë/ ¿#î : ¾?ΪC ½NO0 ¼ɶÚ »àáAÿº«€žIþ¹nOO$ý¸\&å&ü·à–Æû¶¶EúµYá)ù´BRd,ø³izo=÷²JŽMö±Þãõ°nÒ¡,ô¯i–œ$ó®š×Åò­‰†ihñ¬¤›$ð«‰Ã/iïªè•/î©óP:4í¨–öJì§# ÙJë¦4éLiê¥ w4é¤Cuï è£=Ø ç¢»æ¡’†wå Z72$äŸ^ÅÉ㞢bŸ]â[ûÀhᜄâûà›Ëé×9ßšiÑÎUÞ™ª9tݘžØ—ZÜ—›—FÛ–‚“Ú•dAÙ”û§ÍØ“á‹æh×’CÍRpÖ‘åßm;ÕÅúw Ô¨Ë)ÓŽ ðU9Ò±Þ\ÑŒòÌ Ð‹Å p[ÏŠÀû"BΉŒÚ+͈à“é@̇õB]ˆõ»–Ê…±‚ É„ä4_ȃ¶õÓÇ‚ð#yÆþϦ2Å€Úv^Ä×xÇ#Ã~ò)òÂ}‚Ì÷Á|-¥uVÀ{Î9ˆM¿zó'¦`¾y:—C½x ƒ®n¼w-Šâ!»v!dºu\•L¹t‘n]¸s1%‡F·rEï¶q°&µpÛª ´oÜcU³nòâü²mfá{j±l䌆°kÉ~\¯j—ÃC®i/Ý6­hpiu¬g?ÆÂ«fÁòÈgªeædg,©dܨc?çl§b ¦´¦aXª @¥`©g‡D¤_#„Ÿ<£^8‡4¢]ó _¡\/JV [ÆÃ>ŸZ²$žYŠ'"X©;œWðvO›VÐl}JšU áà6™TJÜ;˜Si2$—R!Í –Q¸d•P÷Ö”:”O(ø5“NÏ8U’MµßZ‘L¸¢â]KWý€Jn²IFŽI+ IHcGòhŒG¨Gr‹FÚ¾² ŠEƒü/V‰Do×_(ˆCéµJZ‡BÊq„ †A¶Y(1…@ôÍÅ]„?È.ùlƒ>Ûâe‚=¥"ö3<µ€;(¬ÕL:ºNÑN~9¬È}8Ý,6|7hMK&{6çP*z5Y¼w$y4qÜÒ`x3ùhªNw2éb9v1C[ëVu0pénNt/w ·Ps.G]•r-Œ—àq,ôIÄp+ÅþgKo*QLO<n)àJÂm(9p·Il'ñœ)k&¸Š«Jj%¹mni$õ{ºsh#×Àg"ÚÚ{Bf!O«Ï)e ßid³f cëgZ\b­ø†uaKŸ9`R†(_ ,®Q^„ôe]ö®<\î>ÛR[pLKbZ/ç Y‰;Xqwà_WûýUBVãQŽ9UƒÖò=T‚òb@S;߯OR ÿQ ŒŽ°P `¯±O (TL?N òRMü´-L¶³ê4Kß6ñ+J¦ÐêIIñL#H'to)GdתDFe¹kà3‰ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8 ! âB¿/d! ᬫV! àìêÆ! ßöûM! ÞÇ‹ä'! Ý-ß8! ÜCíÿ,! Û0˵! ÚWÞ¨/! ÙvÜŽ^ÿ Øïpþ צý·/ý Ö¢ù¯$ü Õájvû Ô„ Çú Ón;]ù ÒÏ+1ø ÑÎlÿi÷ ЄrIö ÏõÆ õ ÎÊ /ô Í¡™ùgó Ìz 6'ò ËÿŠ¿ñ ÊQPbHð ÉM2¿Gï ÈŒžAî ÇÕYÑ í ÆÍ™'ì Å›%ôkë Äð‚Sê ÃL¥4é Âå,.è Á¾ŸÜ[ç À³,û æ ¿—À.å ¾Öwä ½ͤ¦Eã ¼Müâ »°t&wá ºÔâÞ9à ¹2§xZß ¸!ÝðÞ ·Šª>Ý ¶}€\Ü µ·Gý&Û ´úéÈÚ ³ÚºŠ Ù ²jõ:Ø ±}~®X× °zºŸ`Ö ¯ËwJÕ ®PI—Ô ­,­VÓ ¬sì} Ò «}ö=Ñ ª¿d% Ð ©ñ ƒÏ ¨äÚ„.Î §A(eÍ ¦¶È=Ì ¥2ÛnË ¤˜ olÊ £M_ýÉ ¢èžeSÈ ¡æŠRÇ  {huÆ Ÿ% †Å žùÁÇ Ä ë9¹4à œ—5a ›JWjrÁ š¾-uÀ ™k))f¿ ˜5á*¾ —8Âõ;½ –²q=c¼ •|ÿO2» ”_” 7º “9òª¹ ’-59¸ ‘N¸ò · X‹Ì¶ Óæ;Yµ Žm‡6´ s0o³ Œ˜ ² ‹~<À± Š;›ðL° ‰±gß6¯ ˆª¯+® ‡h¦Ê%­ †Jhu¬ …²ðä« „Òëʪ ƒÂ~ßJ© ‚ìYÂF¨ Í®@§ €–†¦ ¯þ’¥ ~ÌÁ6¤ }#Br£ |º!‰G¢ {æû79¡ z¹·ë  yÊÆoŸ xÙ-Õž wy’C vO^npœ uÜ--› táfÞš sZâW™ rá® J˜ q׫Ñ— p;Ë/J– oï`Ç'• nFØ?"” mæGbO“ lÔ Êi’ kÒô%'‘ jgÿi iø¾F h–ºÿ Ž g‡}ËG fÄ*XJŒ eC²QP‹ d,bY,Š c=[/6‰ bÄ½í ˆ ar®y#‡ `õp?@† _æ§¾t… ^kJVo„ ]¦ë÷Nƒ \ Îb4‚ [@ÌŽ6 ZÅÿv€ YÈåÜN X—´3~ Wô{]} V0ÁÂY| U OBo{ Tá z SòMÙ"y R‘gÇlx QSrw PÔ25v OswOru N€Hø3t MÝaƒgs L<:&r KàÔJq J2($/p ISœã2o H[rn G‡Ï(m FôcFl Eº³ßk DH~%mj CÞ©d i BøX+h AN}hg @ÙÙ[@f ?+~Ç8e >áŸOd =D|»\c <¨³Úb ;у0]a :—¸Ol` 9]§;_ 8Õd| ^ 7?sé6] 6yçz\ 5Ì“[ 4× ÜdZ 3„­qY 2ÔÎ >X 1>åDW 08=)WV / ÆY`U .©9_8T -è1x_S ,…úa/R +«XûQ *Ô;µcP )¡g’O (>å8N '¡Jÿ9M &³O¼TL %úd¨K $d>CJ #Ü ÇiI "m™ÝH !”ñÕZG ‚Êì5F ¤iE ­W¡gD êh>C û´PB YEf5A v,9@  ežq? gùBI> ]÷= ÷X>K< ™÷; åF„: 3œæT9 ”Ì… 8 NŸæn7 Ì÷06 þàc5 Šør4 ä’Ï3 møs2 3ñµ)1 î« 50 E€/ zöm. ÖÕ*b- Œ_c, pž_+ YCÚ3* \n&) è-jj( ft¹n—‰ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8ë!!ât‘uDê!!ábÏRé!!à™8< è!!ßåñèç!!Þ/Cs æ!!ÝàU8Tå!!ܦyƒä!!Û3¿(gã!!ÚßËÝLâ!!Ù°Ÿá!!Øgí_à!!×õKìß!!ÖÇ7=bÞ!!ÕR¢¦]Ý!!ÔжrÜ!!ÓfþlÛ!!ÒÃÔÈoÚ!!ÑŒaÖÙ!!Ð2¤$8Ø!!Ïv3w×!!ÎwécHÖ!!Ín9IeÕ!!̽ïöÔ!!Ëý0r[Ó!!ÊŒ wÒ!!É^Y YÑ!!È…­cÐ!!ǃÈZÏ!!Æv:›`Î!!Å»¸F1Í!!ÄäæcÌ!!ߌ5Ë!!Â3Ú[FÊ!!Á¸v9/É!!À> ›tÈ!!¿ü€Ç!!¾ŠZÆ!!½ÉãÅ!!¼ÌѨÄ!!»êñJÃ!!ºÉ ˜Â!!¹KÙÁ!!¸j)‘À!!·²etl¿!!¶ae¾!!µþTºc½!!´âÁÙ4¼!!³L5áo»!!² ¨=º!!±ÄþJ¹!!°ºC&s¸!!¯zL'd·!!®â³^e¶!!­^*"µ!!¬xEún´!!«t–W³!!ªè²§o²!!©ÊÆf2±!!¨5œdA°!!§çš+¯!!¦ˆr b®!!¥+`a­!!¤P''8¬!!£7ÂÛ)«!!¢¸ìÞ'ª!!¡)C·e©!! 0Fר!!Ÿžž3§!!žMPn¦!!µ†Ï¥!!œ€V`D¤!!›;Y"£!!š‡}û¢!!™mh ¡!!˜Уš7 !!—BÀglŸ!!–êH&ž!!•Wþa!!”’…ðsœ!!“šS¶P›!!’âÞç[š!!‘\Q™!!›bl˜!!nI—!!Žv ­)–!!®~“<•!!Œ?Ž(R”!!‹™D“!!ŠBè{G’!!‰ ,:W‘!!ˆ—j!!‡Q°D8!!†s9Ž!!…(x¥I!!„|Œ!!ƒ¢âuk‹!!‚܆knŠ!!z¿‰!!€–Ûsfˆ!!6(L‡!!~/ i†!!}îS*…!!|F+ôa„!!{EQɃ!!zƒ³/k‚!!y²àÑL!!x°Î¬o€!!wO‰‘L!!v@P!!G§,0O!!FBšþ_N!!E‰­@M!!Dµ‡8L!!Caþ(JK!!BòÆJ!!A[3GLI!!@T5î#H!!?]¤»G!!>vœEF!!=HÄPE!!<{í•-D!!;®±…SC!!:)4QB!!9u ƒ<A!!8‚iN@!!7á×~0?!!6Z>8h>!!5L =!!4b7®7½ª*!!!9_J)!! âJ[a(!!oXLi'!!ó×Åv&!!áGh%!!,™$!!F,µ #!!ö€K"!!6W.!!!4p !!ía!!ó%W!!PiP^!!–ÌíZ!!~Ýý!!<ë–d!!ïÎ5+!!Üwƒl!!Z€ N!!k®n!! à H!! ‹þô!! œÕ¤!! ¥ =!! –7T !!ÒfÐf!!GL!!+S\!!ÓÛS !!²Ãä !!Ïø“ !!G=ÏJ !!ÜýHp0ú‰ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8Í""âÂýÆÌ""áb¯Ë""ài2 Ê""ßÖXÉ""ÞôRWÈ""Ý”Çæ9Ç""Üe}E Æ""ÛÛºHAÅ""Ú‚N5(Ä""ÙF¶X`Ã""Øù 6hÂ""סm CÁ""Ö• @+À""Õ<‘'"¿""ÔPXÛ]¾""Ó[N‰U½""Ò^ÚA¼""Ñæ~»""Иà%º""Ï`&eP¹""ΞJ=P¸""ÍÁ#PQ·""Ì[Ä(¶""ËöéNµ""ÊEMÏ6´""ÉãŒ`³""È@k.²""ÇK‚æ*±""Æå°""Å{‰P¯""Ä1.›H®""Ãì€_5­""Âd’.¬""ÁÕþ[P«""Àq“WKª""¿A9 ©""¾y±¨""½["$§""¼âAHP¦""»âtJ\¥""º±5¤""¹¼{F£""¸P©z\¢""·:æìL¡""¶»Æ‚W ""µ4r\FŸ""´Ámq0ž""³!̪h""²~/w>œ""±×PýJ›""°bS(š""¯§`î9™""®|Ö€˜""­xD»>—""¬·b_–""«ùÊè •""ªË§F”""©Å‘&“""¨è€Y’""§,"»[‘""¦ôP""¥\Ãto""¤|=aŽ""£!ɇ""¢Ã…ª>Œ""¡R85'‹"" `‹÷<Š""Ÿ0˜œ,‰""žnÙ?fˆ""&Æ9 ‡""œ’_w†""›uÃ`_…""šIÁe„""™7ƒ""˜yx{‚""—šŽ f""–¶Bå€""•ë°©\""”jW@~""“ÖΈ}""’Zz|0|""‘Œ±Í`{""ñ‘ Rz""ƒ ˜y""ެÓIox""òÐþ8w""Œßv)v""‹žv!bu""Š­ \Lt""‰½¸Aas""ˆ±4³qr""‡õQl8q""†™=Ê0p""…)I:o""„ÂÑÅRn""ƒ’í m""‚äò*8l"":Ž2k""€žÌÌ,j""øßi""~%®h""}u(ç`g""|üJåBf""{fNéve""zfô8d""y[7c""x~$¶%b""wßs\a""v‘6-,`""u‘L¿V_""tåг)^""sÖnä!]""ràq¹h\""qþÀ [""p£(0\Z""o]( Y""nEZØcX""m"R‘?W""lîÕ£gV""k·¸ïU""j#{w0T""i†ëª7S""h3Ü\R""gP¼Q""fEVÝP""eˆ  O""dô´v\N""cìÜK1M""b´L""a(8CK""`û^/;J""_¿VúI""^4®RH""]oïÝ G""\è)3QF""[‡€Ü E""Zü$Ú D""Yík,FC""Xù6ÞPB""WºÇH A""V±n;e@""Uè¨?""T3Úé<>""SÒ‘[=""R¹úh,<""QÖž;""Pº:""O¡èO9""NÿÖ8""Mgêø/7""L„8I.6""K+»5""JA•Í54""IªÔ<3""H/{92""GZ ÇG1""FtXø0""EÍ|[/""DðRm.""CUñJr-""B˜¢g,""AŒoQ/+""@×ÀüA*""?ˆ³ÑG)"">rÊ(""=û½ '""<ŽÝ31&"";C]‘%"":<‘&X$""9'6@#""8‡”D"""7ßYª !""6/©t[ ""5±K ""4±ùÖ>""3,íµS""2‚ÿ„ ""1¸Äöc""0iŸ!""/ã?”t"".'é`q""-ÚĪh"", uO""+æ""$~0N0""#‘äÐ """¥M. ""!Ûö6 "" úÕ ""/mr ""¾À*""|J3h""»o23""]7|N""ã÷[""Ö}I$""-ôB""¼¾""/Æ""úÈRÿ!"#„2þ!"ŸS&ý!"‘oËiü!".8*0û!"د%ú!"?Í$ ù!"¤Ï4ø!" ÄÝU/÷!" |Œ‘ö!" ´ø%õ!" ‘Ífnô!" í©ó!" ^ÊTò!"#” ñ!"Iý²ð!"£Ápï!"–3 î!"ë7Û-í!"Bà ì!"~ %X]Š À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8¯##â½0%9®##á^¡¦­##ày3K¬##ß|£ 0«##Þ ª)ª##Ýòü–%©##ÜC$&¨##ÛÌ·?K§##Ú¢<~p¦##ÙcÁd¥##Ø¢O¤##×ñã"#£##Öiqf¢##Õ_ÂI¡##Ô/ ##Ón¥>Ÿ##ÒÕÎlhž##Ѥӕ##ÐÖÂi œ##ÏL»E›##Îéˆvoš##Íf.|b™##Ì“þG*˜##Ëôj5—##Êå>–##Éì³K9•##È’™u*”##Ç}Õ¬“##ƽv¤=’##Å»À1‘##Ć„h##Ã@„##ÂS‹Ô_Ž##Á‡6~%##À:„| Œ##¿>†ýT‹##¾PTN,Š##½à]¿‰##¼*GZsˆ##»±X[M‡##ºùã‚.†##¹¥X…##¸p´„##·ûWr'ƒ##¶¹$‹X‚##µÜ[†##´˜V;2€##³ˆ>±"##²»ÞT~##±p(#!}##°¹‘s|##¯j” :{##®€ïtQz##­§Þ1hy##¬ìZõ x##«hiZw##ª.ÑÜrv##©ƒrêou##¨uã]t##§|é5s##¦¼Ã!Ir##¥OCq##¤=up##£× o##¢6vepn##¡Z&½m## ÓØXl##ŸŸ(Vk##žæ rQj##¢ni##œ@¤TGh##›þ‹g##šY$f##™”ìµve##˜c•lld##—1æÙ5c##–"g_b##•'.a##”Ь=`##“PÞ~[_##’ðÌãF^##‘Gw*]##}9/\##†I[##Žx¡ŠlZ##j|@Y##Œó2hX##‹²ç¼=W##ŠÆ®È&V##‰õ'KU##ˆvà7T##‡¨¾J>S##†ImÖIR##…¬v€sQ##„Æ3)P##ƒ—æ<O##‚t¬€'N##ýÄ bM##€_ëÓL##èaJK##~¼þIJ##}¬KÔGI##|šŠÙH##{(Â^eG##zrÛNF##y;gT[E##x`9œ.D##wÑ2èC##v8õiAB##u¾ùûSA##tÒ¤h,@##sØÚþt?##r˜9"5>##q½Õ=##p$X<##oƹÍ.;##n£a­b:##mþñ¤9##l<¥8##k„³_7##jªº¶6##iÊýÌ:5##h¨ø4##g²†™/3##f8ÊÿK2##e•\>1##d8ûh 0##c¾TT/##bA7.##a³35>-##`M÷‡8,##_”_Õ[+##^:p…0*##]_·º-)##\ȈÂ6(##[ ¨f'##Zrê&##Y¢ÓÕQ%##X"µN$##W`® C###V&ÀÙ"##U¾ç’!##T²Úà ##SÒT##Rqï]1##Q&y;##Pв((##O…Ýù##NT7î##Mr C##Lv‹œJ##KøÇRI##J‘Çf##I¥÷ïM##H{‹0$##G«Ÿàn##FÁ]N&##E„[iD##D?ÇÌ##C­kn3##Byï ##Aî?Í ##@ÌÖ% ##?šÇ ##>[EÐ ##=&I"\ ##< ç;##;£WM##:|ü2##9B:"?##8­Ó¿&##7S@…##6LŒjU##5`X##4HaaU##3ìd.ÿ"#2ÒÖŠ þ"#1©P\ý"#0æ’/ü"#/\ÑHû"#.ái@Tú"#-Ñ'âsù"#,|<"%ø"#+æ»Wn÷"#*䙡'ö"#)÷ÃüVõ"#(lØSô"#'†jó"#& ˜¹6ò"#%R‡ÿñ"#$â”[ð"##߯gï"#"’Ž2nî"#!¦!&@í"# ù@mXì"#·†=ë"#ª5&)ê"#_túsé"#õƒ¿&è"#)Óvç"#õAí`æ"# XEå"# sY:ä"#`z'ã"#»‰8â"#0LFpá"#Ý¿và"#ugïNß"#7?Þ"#=Ræ2Ý"#߯®#Ü"#ûA]Û"#ì@LÚ"# … [EÙ"# zãCØ"# ЧÁ4×"# í+C Ö"# QBÕ"#2ñ¹[Ô"#*œ(FÓ"#¾ŒÒ"#<kEÑ"#æNYÐ"#Û ¬0Ï"#üëÿÎ"#›`¨[˜ÀŠ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8‘$$âVÀ¡0$$áÅ.($$હ²Ž$$ß]µjL$$Þßö4Œ$$Ýk‹$$ܪ wŠ$$Û"© o‰$$Ú,«(ˆ$$Ù<ä¼i‡$$Ø©HJC†$$×ñ6À…$$Öÿ­À/„$$ÕKZ3ƒ$$ÔÕzV‚$$ÓWwíB$$Ò™€÷8€$$Ñpw¬I$$ÐX5ª)~$$Ïf–—L}$$Îv^e|$$ͳlóR{$$Ì z$$˧å}y$$Êþjurx$$Éómw$$ÈÅŸÀ>v$$ÇÄ~åju$$Ʀát$$ÅÄÒÉs$$Ä»ñýJr$$Ãùžl[q$$·ãOjp$$ÁIço$$À²?Ln$$¿ìÉ=m$$¾ØUBl$$½n%T k$$¼y`Â+j$$»&õêi$$º=6ü9h$$¹]î8g$$¸Õõz3f$$·§Êde$$¶²mOqd$$µª]Î c$$´ÿACb$$³3~•ca$$²ú¬Ù[`$$±¤\ìM_$$°[v>^$$¯ÐxŠV]$$®µ•³W\$$­m¢X[$$¬áÙòFZ$$«:ìY$$ª÷/U\X$$©Íö.W$$¨ çV$$§¬Öf-U$$¦ ƒ¯T$$¥,¨0S$$¤G_ÝR$$£Ë0-Q$$¢‡ÇOP$$¡D;?O$$ si]N$$Ÿàâj,M$$ž1ƒJL$$r‰K$$œP“¥YJ$$›•ÿ(MI$$š¬H$$™+˜¬&G$$˜¨ˆÅJF$$—ï¹ E$$–±D*(D$$•[yŒBC$$”Ø%B$$“*4OA$$’ïZnm@$$‘îÓ('?$$îž—>$${©#P=$$Žu92<$$à ü;$$Œ1óÝ^:$$‹LYî.9$$ŠõIG8$$‰Üxg7$$ˆew‰6$$‡Aý´f5$$†¥6…W4$$…Ù×F3$$„X°Ò2$$ƒ¨"\#1$$‚+ãk0$$X‹ m/$$€ãúI.$$œšt-$$~o]j,$$}%ûø2+$$|ìvc*$${-%e)$$zzç·u($$yM9'$$x¦{Û_&$$w‡Û"%$$vl²SL$$$uëÇ u#$$t;)íl"$$ss±J!$$rwa%l $$q&Ñn$$pJJ{h$$o)­J$$në´$$mT o$$lçád$$k´àÇ"$$j7B$$ia2çN$$héLâJ$$gý)4$$fðA*R$$eÿ¸þ%$$dÓ–P$$cw§~n$$bé-Ÿg$$ajè$$`¯ 6r$$_AÌ:t $$^ª§v4 $$] û_q $$\‡=¿ $$[ôÖÜR $$Zàð3$$Y¼Gða$$XK{#-$$Wø /$$Vrfû$$U-—Qu$$T)û,$$SN´Úh$$R"ci$$QöÏ£pÿ#$PC_jþ#$O7v"Zý#$NÌ‹_ü#$M…C³8û#$LÊ'Oú#$K:ÂRù#$Jq„òsø#$Ié“ã$÷#$HäÔÇZö#$Gy.áZõ#$F•5ô#$E®ê”9ó#$DÇš}sò#$C©õ™jñ#$BÀÔÀYð#$A¥Öï#$@ºŽ{Tî#$?¶dÏXí#$>¾ E>ì#$=ˉ5ë#$<©[¹%ê#$;èïé#$:IáôXè#$9x/ç#$8Ïæ#$7$FVå#$6 45 ä#$52¿–2ã#$4 éôuâ#$3ëìùá#$2Ùà#$1¾h1ß#$0mN Þ#$/â þ Ý#$.Sö;Ü#$-à“7*Û#$,VûnÚ#$+øUÙ#$*Ô„fØ#$)7ê2!×#$(²'™^Ö#$'m½0BÕ#$&í© WÔ#$%¸õ¦rÓ#$$îfÒ#$# pñÑ#$"Q.Ç9Ð#$!ïwÏ#$  3Î#$Ö3:Í#$‚%%­Yç=+=%%¬ú¤/<%%«ÞW;%%ªòÔh:%%©·I9%%¨«ÉDZ8%%§Ÿb¦7%%¦œz`6%%¥V‡{@5%%¤QÃ34%%£Œ*R3%%¢Ù2%%¡±ç/P1%% ˆñb0%%ŸØ×ÏC/%%žZ}|(.%%XîÒ)-%%œ ;,%%›̃+%%šÿ‘"(*%%™lñ—G)%%˜&‡Š&(%%—^ª(h'%%–Tf>&%%•ׯa%%%”¹+@o$%%“Ä#ÈN#%%’[Ô7"%%‘olÛ,!%%Vâ‚* %%3þ0%%Žg·Þ9%%j•"]%%Œ4ÜG,%%‹SaîJ%%Š}r`%%‰TBÉ%%ˆž¥a%%‡ P%%†×k¢%%%…NýÈZ%%„ of%%ƒ§×>N%%‚Wj³'%%0$9%%€8Ï”4%%R±ø %%~Y\°%%}3«Ø> %%|áØ.l %%{¡{/7 %%zâ1 %%yO×( %%x¤p%%wÓf%%v{¦ÂT%%uK¿dB%%tnAE$%%sFjÖ%%rI2j%%qìà•D%%páV¶%%oê%fÿ$%nìæsþ$%mà™~ý$%l´O aü$%kp"Rû$%j}j\kú$%iP¨Où$%hŽ–ø$%g0(™N÷$%f÷’3ö$%eOéP-õ$%dnªô$%c¹ºó$%bÖÇm7ò$%a¸ñlñ$%`plÿð$%_·t¶Aï$%^ɦ5î$%]’[í$%\ýüF>ì$%[ˆö“ë$%ZÓÄ›3ê$%YYS¹-é$%X!>ŽBè$%W6<ìMç$%VC hOæ$%U‚ôäVå$%Td ä$%Sô^ ã$%Rÿ_åGâ$%QQmiá$%P`šà$%O|Ä!ß$%NcÃWÞ$%Md§»ZÝ$%Lâm 3Ü$%KMBÃÛ$%JY©oJÚ$%I?AûhÙ$%HÁï4Ø$%GñÙZ×$%FyµmÖ$%Ehäí#Õ$%D•L»Ô$%CçìlÓ$%BêîJ7Ò$%AÝþ.4Ñ$%@ºwoÐ$%?“ÒÏ$%>¿&&Ë/¼5=&&ÊÑG,d<&&É+ åT;&&È«À :&&Çbè’/9&&Æ6™ˆ<8&&Å?¤,7&&ÄûI6&&ÃìxÞ5&&ÂLnùi4&&ÁT &3&&Àò|ÉJ2&&¿)Þ 1&&¾±3Ð 0&&½ùå”/&&¼Ùä• .&&»wÝ]-&&ºK+¼Y,&&¹Tj±p+&&¸Zž *&&·b5×K)&&¶›øn(&&µ#³º='&&´ú6Ó1&&&³$¬Û%&&²³­‡F$&&±{SMl#&&° ÉÙ-"&&¯­OG!&&®}íD2 &&­ô8!h&&¬„¬_+&&«o_™4&&ªõr\&&©l…QT&&¨eàI&&§J ª&&¦óCà9&&¥¨Ùsj&&¤úJI&&£#[]&&¢£Ž:&&¡ø–4;&& PÂ}v&&ŸœP(:&&ž®N-&&…&&œºØ¼Q&&›èõä &&šAϸ &&™7›E &&˜hþ &&—îîQ &&–p™hn&&•w»<&&”w7g&&“¬”mv&&’þe:&&‘$î<&&ƒð&&"át&&ŽÿÅÄO&&»CNÿ%&Œ Oþ%&‹ªæçoý%&ŠzAqü%&‰¾š #û%&ˆP$•Mú%&‡Ï|úSù%&†K9eø%&…ù÷%&„Ó,Ó]ö%&ƒÒGBõ%&‚JH&ô%&ʳcbó%&€á ¡_ò%&ÆX)ñ%&~C?að%&}ƒY! ï%&|‹kî%&{StÑ'í%&zÇyhNì%&yè~Të%&xÔ aê%&wĘ0oé%&v€³è%&uSI*ç%&t)”}Zæ%&sð×\<å%&rò^dä%&qkÙáDã%&p£‘Vâ%&oTsWá%&nžyÒ3à%&mKxyrß%&lZÂR"Þ%&kªX¬=Ý%&jºã5Ü%&iP+?Û%&hûã\mÚ%&gýxñ"Ù%&f·D%wØ%&e ¥r×%&d&ZÜYÖ%&c„ƒ2fÕ%&b†tPÔ%&a]²SÓ%&`EaH+Ò%&_ñ^ÅaÑ%&^½sî4Ð%&]˜p˜Ï%&\~üë=Î%&[umVÍ%&Zg ËQÌ%&YϸÑ6Ë%&X›³Ê%&WÍ‹=É%&Vîô=È%&U¾º›Ç%&TíÈ]Æ%&SÂ~L Å%&RÍ_Ä%&Q¹¾M[Ã%&Pú°¿4Â%&Oô´[mÁ%&N‘”q=À%&M + Z¿%&L¯…G¾%&K¼j½%&J™z?¼%&Iñjíq»%&HײJ@º%&G2Áò¹%&Fƒ˜¢"¸%&Eɧ\·%&D?"ê:¶%&C•©reµ%&B >‘´%&A­ð¯³%&@qbÙ#²%&?¹’¶U±%&>0û<°%&=¯C¯%&<hpºA®%&;×;?­%&:áWçp¬%&9ÜÝLv«%&8£˜ÀWª%&7,vÓ/©%&6ñZŒ¨%&53 ³§%&4ÇaÂO¦%&3Ù>é¥%&2(*ܤ%&1ðìQ£%&0D¬Ö%¢%&/Õ)[+¡%&.q°y %&-¾1ÍLŸ%&,åKIž%&+g¹œ.%&*nÒJOœ%&) î9›%&(ó2>Mš%&'í‚e4™%&&)ý_˜%&%’1:&—%&$$G™A–%&#æ?@•%&"|‰âO”%&!¿“%& Q"ü’%&Y¿Ã'‘%&Íh %&‹&£B%&47´3Ž%&µáA%&ë‚ÀqŒ%&pŽ V‹%&e¨FWŠ%&°Ø`‰%& t [ˆ%&ÖÛ u‡%&”&Hl†%&S”¶i…%&€ir7„%&†?Pƒ%&ïqY‚%& ‹c%&Oó·t€%& ×@%& t”X~%& Oå}%& å¡"R|%& `'{%&ÉÏjz%&B½ðy%&Äq>­&'Xô®¬&'WÿC«&'VytäNª&'U‚ópf©&'TùY¨&'SNÜA§&'R߃?¦&'Qùü´¥&'PÓŠh¤&'Ok Üa£&'N*/5¢&'MÅ•2¡&'L©;ÌI &'Kå+C Ÿ&'Jã ž&'I0kÞ*&'H;ñ“cœ&'G²­ÔX›&'FôŠjš&'EVº ™&'D•än˜&'C „>D—&'BmâƒV–&'ABög'•&'@?‘+”&'?4 É3“&'>˜1ïT’&'=`b‘&'<ÚÓŸ.&';lŠE&':ÄãÂfŽ&'9ý”s&'8‡û¥2Œ&'7+_ ‹&'6¡o1LŠ&'5ÿ ¤‰&'4GÖ†Pˆ&'3t ™/‡&'2áf»R†&'1ò õ5…&'0Â΄&'/3þë*ƒ&'.Qµò&‚&'-yÐí&',ªÎä€&'+ö*&'*,q&'äŽyp&'™„ºYo&'[¹wBn&'ˆï2m&'ã·3l&'-b˜k&'9%j&'UÈ‘i&'±>‰h&'®hÏ'g&'¡Xf&'J’Wpe&'ˆ/ d&'@S$tc&'=ð^b&' Å+>a&' óÀÓY`&' SmO_&' ýÊÂ)^&' ÉÚ^]]&'˜ \&'°)‡ [&'©)ŽZ&'ío+OY&'ßuX&'~±Þ9W&'B`kEV&'}!3e8MŒ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8((âw¶^h((á¨6E2((àx#¶((ßE‰ìa((Þ>"((Ý`%?((ÜÏú>((ÛÑA¢_((ÚÉxk((Ù‹ÞiH((Øt{ ,((×Ùr` ((ÖÞ[ h ((Õ*ž%/ ((Ô¡!{ ((Ó`I¸v ((ÒÑ¥-((ÑEaN((ÐR~uo((Ï( 1((ÎÅrb((ÍúN((Ì[»Â((Ëâ€aL((Ê‹¨{%((ɾ™’uÿ'(Èr¹!þ'(Ç4[(ý'(Æ`?8ü'(Åwßòû'(Ä«8û ú'(Ã2-rù'(Âk25ø'(ÁXWÆT÷'(Àv„ò"ö'(¿mV£9õ'(¾VfâJô'(½DºÅmó'(¼\Æ”3ò'(»ï_ ñ'(º­”Wð'(¹Jqtï'(¸9QžQî'(·}¦ˆhí'(¶Y€ì'(µZT7ë'(´ËBê'(³¨ »sé'(²€‚»cè'(±X/YVç'(°ÌL]æ'(¯ãñµå'(®o:Öjä'(­µeã'(¬pÇ]+â'(«WMS!á'(ª_ZZWà'(©ûÙß'(¨ˆ¶bnÞ'(§.ÆÝ'(¦ ­½Ü'(¥Ruj/Û'(¤»<µZÚ'(£þoÇMÙ'(¢ñã Ø'(¡2^b,×'( Ö'(ŸfKƒ?Õ'(ž–£1Ô'(é¬6Ó'(œ¶]ö0Ò'(›0AfÑ'(šñTrÐ'(™ÝüŠÏ'(˜oÛEaÎ'(—°¢úÍ'(–ÛeJÌ'(•¶/(Ë'(”ÝÀ][Ê'(“NÉ'(’ꈸbÈ'(‘/+-uÇ'(r¾aÆ'(í‚IÅ'(Ž=ï@:Ä'(uíLÃ'(ŒÎ*&*Â'(‹1H”?Á'(Šî,S À'(‰6Aø>¿'(ˆriF4¾'(‡Ñ+,½'(†Q„†%¼'(…‰ÞR.»'(„í߸Gº'(ƒœ9–A¹'(‚œº0¸'(ý:—F·'(€°íŒ¶'(f3&'µ'(~!(E;´'(}Ù`k³'(|Á(û²'({A²¢m±'(z+3G°'(y¹«&9¯'(xÓuÒ ®'(w>i½s­'(vÌ:œ<¬'(u­)f]«'(t)f­cª'(sÒ›5©'(rñ;ì:¨'(qýÐ@D§'(pHÂ\¦'(o ;âq¥'(n‡Àù¤'(m˜}cb£'(l¿ÞM ¢'(kßï\V¡'(jå¼q '(iéŠóŸ'(h!…¨[ž'(gµÞ%['(fë#"œ'(eï¤!›'(dìK 3š'(c7@f™'(bÜR ˜'(a× Wo—'(`¥ +"–'(_à ØD•'(^ÖÉmF”'(] C“'(\m<ÐL’'([ÄU«J‘'(ZíÀs'(Y&à¡:'(XŽ'(Wúžf#'(V¼íy"Œ'(U,•l‹'(T‰mqŠ'(Så”?@‰'(RvG2ˆ'(Q°Ø.4‡'(PM\”f†'(O§dÒ2…'(N³ÀñH„'(MÕSZƒ'(L½þéq‚'(K0r5'(Jþúe€'(I2à†Z'(HÉ’(~'(Gµœ)}'(F&m|'(E¿ç:{'(D‘Dz'(Cûœ¯=y'(BWé(x'(AžVVw'(@sa=ov'(?øru'(> Ft'(=G\.s'(<¯R›:r'(;òeYPq'(:jò'p'(9èÙgo'(8pÅ)n'(7×ìoYm'(6¶[dl'(5Ú”ß<k'(4—ÌàPj'(3Ï?ªvi'(2ü«rbh'(1x:ag'(0êù8f'(/ƒNpe'(.×ìˆd'(-‹cc'(,hßd b'(+H^ï;a'(*N·d`'()´gjd_'(($ 8\^'('‰U/]'(&hþ\'(%óôd['($ˆÏ§EZ'(#ïâ&-Y'("ƒíÖX'(!,]W'( bµ\8V'('Î[mU'(Ýý;qT'(Çä÷IS'(‚ Ë&R'(“™í5Q'(2é}P'(–ÄãcO'(@ N'(çlædM'(Þ|¢QL'(XÜfK'(åEŒ>J'(y]OI'(¡±IH'(_Ûº G'(o F'("ÏRE'(kdá)D'( ´ 0 C'( %ÒìVB'( Åa5A'( ŸÿkR@'( 0yn?'(Mã`>'(% \='(p)U<'(\^Î_;'(Áÿk:'([³°9'(O›c8'(›dše`°Œ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8û()âèD†pú()á¤ÜS\ù()ày£»eø()ß…›n÷()Þΰ&jö()Ý´õ()Üj-© ô()Ûnd5ó()ÚK=3nò()Ù:iK)ñ()ؼWð()×=Ô4ï()ÖÖDÖYî()ÕXbHí()Ôíë_Oì()Ó0‹(ë()ÒJK0sê()Ñáu[é()Ðüÿè()Ïpxj<ç()Î3¼¾`æ()ÍN*±å()̹q*ä()ËÔ6åã()Ê”v¹^â()ɺº Lá()ÈTã#^à()Çò‰Nß()ÆrP^<Þ()Åý^l_Ý()ÄbEl&Ü()Ãc©hÛ()ÂÖ¿biÚ()ÁÅœ¸IÙ()ÀntdØ()¿_L5×()¾i]%Ö()½0X“WÕ()¼UšxTV()=·ÿ1U()<=p>,T();…`S():uxLR()9ãE^Q()8zU¦:P()7Ý'ÁO()6[Ì5N()5´ƒ£LM()4ƒÛE+L()3=øxLK()2½"e&J()1ù<79I()0ChWH()/P HG().ä6sF()-"()%îF8^=()$ôØc<()#Ôe„%;()"YßyP:()!at9() }Bàn8()‚}A7()A‡Ð.6()Zæ.E5() [ïO4()˜äÀs3()âÂx(2()Æe8e1()Zà°Q0()Ãöˆ`/()÷`>&.()‰2Di-()úüEl,()l U+()·6=*()!Š, )()ŽN4d(()ë'()€üæt&() /™±d%() +¡W$() :›I&#() Ü®ql"() ñ"&!()u¼g; ()â_US()–g¾ ()’Ï;f()W·Ù-()Öaa() 8E()#\±)ˆ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8Ý)*â–DœZÜ)*áUUzÛ)*àѦj Ú)*ßoF@Ù)*ÞØïJØ)*ÝÁA'O×)*Ü{ÉŠqÖ)*Ûæ×TÕ)*Ú•Ub6Ô)*ÙðÔFÓ)*Øù¥ßsÒ)*׬ Ñ)*Öx¼hÐ)*Õ“¸9Ï)*ÔþÅ )Î)*Óã—¸ Í)*ÒýWcÌ)*Ñ]¨–lË)*бŽJÊ)*ÏÑEÉ)*Î4ÕŒ+È)*Íߥ mÇ)*Ìò9iÆ)*ˈ|ïÅ)*Êg¿DÄ)*ÉË-¤$Ã)*ÈVñ¤VÂ)*Çí]Á)*Æ7«[À)*Å &ža¿)*ÄwÏ"c¾)*Ã&(V½)*Â|e/¼)*ÁùxH»)*ÀôæðEº)*¿ò«d6¹)*¾,ìĸ)*½‹º¶*·)*¼ìÅqW¶)*»”©Vµ)*ºxæ÷U´)*¹fíÜ:³)*¸z4l²)*·”$YG±)*¶OàL°)*µ¡±«3¯)*´Þz_M®)*³,O­)*²)Ó A¬)*±&ŸºT«)*°írA"ª)*¯­X©)*®Ö>J(¨)*­IÄ•D§)*¬1€<¦)*«Ü^¥)*ª•4.@¤)*©5_Y)*^A¥X)*]-JPW)*\$1V)*[ðñ{ U)*Z˜R 5T)*YЇCpS)*XùJQQR)*Wæ¥qXQ)*VëàuP)*UƒÇu[O)*T1ÿ½ N)*S¾òêJM)*RXc=L)*Qò~ˆIK)*PŒ¦sJ)*Oõ‰LRI)*NÀϼH)*MXÄCG)*LÞþ+F)*Ka°z9E)*J§*ªRD)*I“Ù C)*HüÛëWB)*GH2õWA)*F$_~@)*EdÇç_?)*D'¸ªW>)*C²:ÇC=)*Bšr_M<)*AÓC`;)*@°8:)*?R³¡9)*>•‹eU8)*=T#&7)*<ö:`36)*;±@äS5)*:@0˜q4)*9vm3)*8µ¦³K2)*7Òøõ*1)*6po0)*5?k:/)*41rzN.)*3bLb-)*22¯Ë2,)*1ÿ»á/+)*0jN&*)*/_³wT))*.çÁOh()*-KFá')*,dhÄX&)*+^Œêq%)**nÔf$)*)˜¨9o#)*( zJ")*'s¸ìP!)*&ÉTˆ )*%StJB)*$©ŠŽ$)*#H¿½>)*">L07)*!µ'Kp)* [ wR)*äJ)*€À+)*€·„=)*û™0)*n7¢F)*¨þN)*w’H)* ±S)*R¡û2)* eŸ)*2¶˜)*øý;)*Ò‰U )*ŽÇ> )*Ë#m )*üÞèr )*ˆÉšm )*ÝËB/)* ËSÀ`)* = q)* ûUç)* ÏS±\)* Í™55)*È-^,)*)K)*( )*õöx+ÿ(*ìF|cþ(*Z¯5ý(*¡§ŠDü(*ÛTò°v À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8¿*+⺅C¾*+á›ð!½*+àåÝ«[¼*+ßzX »*+ÞE—º*+ÝhÍj¹*+ÜQÝ0¸*+ÛF,ÌA·*+Új»b¶*+ÙB­SKµ*+Ø¢ˆk:´*+×5ŽC³*+Ö1@Y²*+ÕÇÖ˱*+Ô\ƒ °*+ÓÏ :¯*+ÒvÍe®*+Ñâéµm­*+Ð0±¬*+Ï7Ý9«*+ÎOéDª*+Íîf-©*+̬¡¹¨*+Ënª q§*+Ê$üÿ,¦*+ɾºp¥*+ÈHÁ½¤*+Ç»$£*+Æ1Ñ€¢*+ÅK óv¡*+Äç?9 *+Ã@¶p9Ÿ*+“«ž*+Á|kh*+Às›lPœ*+¿À¬T›*+¾ÿJ½š*+½Ã7¿\™*+¼££`˜*+»5-—*+º1Ii–*+¹Û±Ÿ+•*+¸Ù :”*+·cõ6“*+¶Q f’*+µ{-Ž‘*+´ÎêW!*+³?G¾K*+²‘˜)Ž*+±Ƀ*+°‹x#$Œ*+¯âÒHJ‹*+®Êþb_Š*+­ízω*+¬%éLSˆ*+«iøû‡*+ªéžP†*+©ýJ…*+¨ÔÃÊ"„*+§ñ®E]ƒ*+¦·^st‚*+¥khZ*+¤Í®9`€*+£Ó’´%*+¢~ W_~*+¡°÷âj}*+   L|*+Ÿɱñ`{*+ž²š«jz*+È…öRy*+œ[¶6\x*+›®;Jw*+šЍ9+v*+™^Ýq'u*+˜”žut*+—VÝ+s*+–èÀ+`r*+•¼!Ôq*+”³Îš'p*+“°Á„Vo*+’H^Vn*+‘žýSm*+½}1nl*+agVk*+Ž`%fCj*+(žL5i*+Œ“Èf]h*+‹œÎŽjg*+ŠF€Â f*+‰j[pe*+ˆ$”Atd*+‡ä˾Nc*+†íÛ8(b*+…KŒla*+„¶JP`*+ƒ´›u_*+‚þ\7^*+Ußp]*+€mûº\*+_™ [*+~>ݼ'Z*+}ýØÄ4Y*+|13LX*+{xæ‘vW*+zv°{>V*+yØ|@WU*+x]‡BT*+w9ÿ¦ S*+vrÃ}R*+uÑF Q*+tó׈_P*+sçë$<O*+r=l#;N*+q”ßä8M*+pÍÑ5pL*+oÄê PK*+nâŠJ*+m)möJI*+lx΂mH*+kbH9IG*+j}maF*+iIµE*+h.BªuD*+g9mÓ)C*+fîTlB*+eaš VA*+dFàp@*+cù‘ÓV?*+b:"I>*+ap¶+G=*+`êÁ›K<*+_ÅŠ`(;*+^ˆ¼~m:*+]AH(l9*+\_Or8*+[<±Ô47*+Zf¹ÂT6*+YHJ1[5*+XF»S!4*+W‹kŽ=3*+VÙøX\2*+U^ø£&1*+T®$C0*+SxLb/*+R²ÁZ$.*+Q£d?%-*+PL°¿Y,*+O€i†B+*+N¬í¾`**+Mp…Íe)*+L4šÄJ(*+KC¦™7'*+Jéî•&*+I̧ %*+Hòù(0$*+G$\#*+FJ`~ "*+EÖP´)!*+DÐ7 *+CQ¯Á *+BèâP*+A© ©V*+@¬¿F-*+?K ª8*+>ÛŽe*+=Ò*+<öõ€*+;ÛM4*+:oå v*+9èVåq*+8qQŸq*+7awBq*+6¬6I*+5vIå*+4+eŒ*+31ì Y*+2÷ ¶;*+1ܾ'k *+0Lc÷n *+/iG%) *+.‡–7S *+-hòº+ *+,Q¬p*++Å&Jt*+*‚G‹*+)©t*+(ŒI *+'ùDòc*+&íVP*+%fVÄ+*+$¥ƒ°j*+#‚8ÿ)+"Í~C?þ)+!Ùª(ý)+ U)%ü)+A1û)+cÃEú)+ 3Ñù)+jÊø)+nË÷)+< œoö)+úºSõ)+5¶hô)+zÞt ó)+ÒdYò)+N:šñ)+åHað)+Ãï)+U(ðî)+äp+,¥g:=+,~]ÏÚ<<+,}]É6P;+,|•8:+,{¼ ¥9+,z]eÅ8+,yþw7+,xç>Q>6+,wš""5+,v¢A!s4+,u Þ×3+,t0‡C2+,s¡B¢ 1+,r”{¦10+,q++]/+,p³Ö-.+,oÝ U-+,nñ¬H,+,môÛìN++,lDB*+,k úwJ)+,jˆQ(+,ißr‹F ü*,=þû*,<Y$ú*,;råB(ù*,::ýGjø*,9BÙpo÷*,8ÿÂö*,7Xalõ*,6DIô*,5/qWó*,4ËdÜò*,3G!Kñ*,2Q4É#ð*,1^#ï*,0蹓Eî*,/µYí*,.“^Ö&ì*,-¾Lµ@ë*,,Ký(jê*,+öT[é*,*ñbåDè*,)°Ü–ç*,(È'æ*,'Ï•?å*,&€ë0ä*,%®³,ã*,$i.â*,#jŠmqá*,"AÕGà*,!;üÑ?ß*, ãü¹gÞ*,õ\Ý*,U•ýÜ*,ßÔ Û*,^æÚ*,»8uÙ*,2•^&Ø*,åk×*,³ó„VÖ*,É"Ç2Õ*,ÞÐÃTÔ*,mǸÓ*,_ûìGÒ*,œ#p Ñ*,ËÒ‚QÐ*,)mÞÏ*,j§e'Î*,ü¶BÍ*,Í}sÌ*, › ’dË*, Œ.Q4Ê*, ë“OÉ*, šðàKÈ*, U¨©qÇ*,œ>g8Æ*,«‰³6Å*,©ð[Ä*,.(’>Ã*,‡³ Â*,ìßcÁ*,åfÔ À*,Ëå\=Ž À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8ƒ,-â’áR‚,-áXŸ,),-à|Afh€,-ßú 0.,-Þ k$~,-Ý‹},-Ü'¯€|,-Û²Üs{,-Úµ¼ÔLz,-Ù¸ˆLy,-Ø1¦+x,-×"̪w,-ÖÂov,-Õßn;)u,-ԉ܀=t,-Óà¡es,-Ò¢2.&r,-Ñ¡úCq,-ÐAª p,-ÏÌŒVo,-Îþj#n,-Íhaá m,-̬ªYl,-ËñT«[k,-ÊùAj,-É8ã;5i,-ÈbÂÏih,-Ç\ÈQg,-Æt[5`f,-Å5b„e,-ÄXI¡Qd,-Ø@å#c,-ÂO4b,-Áe¶LXa,-ÀÓñ¯`,-¿Wް_,-¾abz:^,-½‹-H],-¼ʉ\\,-»“ð);[,-ºö‰½TZ,-¹R7äY,-¸™ƒ_KX,-·2 ç W,-¶>< V,-µéá<;U,-´Ÿ÷ RT,-³Õ9âFS,-²£#aVR,-±ØH,Q,-°  tP,-¯ ª¢>O,-®oäBN,-­t8n$M,-¬Ž&iL,-«ܺfK,-ªÃ,-0“¥Z=,-œúg<,-›ÄiÖJ;,-š v:,-™¯¡"9,-˜’¼/8,-—h–`37,-–ER\6,-•Ç®ßJ5,-”µÈ J4,-“—y¾3,-’iøQ<2,-‘¬ÌžO1,-~ÇL0,-Ò›ŠR/,-ޱ°gO.,-aÆÅ-,-Œ™]Úf,,-‹çì+,-ŠH2ÏH*,-‰ì‹),-ˆÌ)(,-‡í‡$',-†ïÒ·R&,-…è²J%,-„#â0[$,-ƒ5â#,-‚ŠùGL",-¦Xì?!,-€Ô† ,-e+Ï,-~˜Î[,-}J_ÝV,-|2­Å,-{«ø«B,-zjãF+,-yÊ¡f[,-x³a‹`,-w¯ØRD,-v^¶,-u ¡q,-tö,B,-s—ðü`,-rû7,-qQ5,-p9Òåb,-oʯ{?,-n(,F,-mˆqN` ,-lÐÈ^ ,-k[ªªG ,-j!­ + ,-ixU ,-hÊ9),-gºð54,-f‰‚ u,-e}‰D,-daÝû,-c%Îx,,-b‰TS[,-aŠ9Þ/,-`3~ ,-_qŸ"ÿ+-^à{–+þ+-]gŸ”7ý+-\÷*VYü+-[ºž)^û+-ZlëØLú+-Y«efù+-X—â%ø+-WÇYÆ$÷+-V tjqö+-Uû¤+ õ+-T^²Luô+-S1ñ7ó+-R½ fò+-Q°`—ñ+-PúzªXð+-O¼·uï+-NgÄD5î+-MÌPií+-L’p*ì+-KfP në+-Jz‰2Wê+-IM°äé+-HY:%è+-Gd´'Iç+-FóÈ&7æ+-EÖ7SVå+-DòOo(ä+-Cµ0Bã+-Bª½Gâ+-AËrªCá+-@z7à+-?&q¢Dß+->úGñaÞ+-=LYljÝ+-<#¼\Ü+-;¦‘(Û+-:ž…êkÚ+-9œÑ/lÙ+-8i;¯&Ø+-7Üsy9×+-6ö{VÖ+-5­QµrÕ+-47|VÔ+-3I?‰gÓ+-2J0ˆDÒ+-1.*APÑ+-0*¡5KÐ+-/q>Ï+-.Q[l(Î+--EÀœ(Í+-,=ÏHÌ+-+Õ Ë+-*Y{óAÊ+-)‚oFÉ+-(sd¸ È+-'Û§+lÇ+-&-z RÆ+-%&qú[Å+-$ž¬. Ä+-#„àÚ6Ã+-"ѾîXÂ+-!/CËCÁ+- IÔ_À+-U¶Þ9¿+-®g·u¾+-‡~ g½+-=Vc¼+-Áq2»+-¦UÙMº+-¼}/+¹+-¥î2Z¸+-­Ð.·+-d!-.¶+- ï:µ+-žS´+-I(³+-ÛÎÔ'²+-åà˜"±+-ó^×l°+-<†a¯+-ìØÞ]®+- ‹Í²­+- £ˆd¬+- }gýL«+- U‰Fkª+- L‡ó;©+->ûü`¨+-©™0§+-U² ¦+-oý˜>¥+-+H-.Ń=eRG-.Ä[*RF-.ÃhËkE-.‡ì›D-.Ái,ßRC-.À:íBB-.¿U×âkA-.¾ëöç@-.½fÝ;?-.¼SŸ[S>-.»ãA¦=-.ºß”;R<-.¹£Õð ;-.¸¸Ã:-.·‹}êV9-.¶fÕ”8-.µõµ7-.´[ To6-.³æQ5-.²¦x-4-.±ÛÝY 3-.°”ÑÂB2-.¯ßnØ1-.®WÜØ0-.­‘ÚQ/-.¬g 6.-.«_õF--.ªm ·v,-.©Pû +-.¨Ô¼'s*-.§Z¤J)-.¦ûPÉI(-.¥ñ‘¨?'-.¤U‘!(&-.£2©î%-.¢~5÷J$-.¡ùÓ#-. 8‡"-.ŸIwe!-.ž:e×` -.°ÉjE-.œ+.ã-.›T«†r-.š<”‘u-.™âCk-.˜0Ì^-.—€Û:5-.–MrZ-.•€,úc-.”Q¼Ì-.“È -.’„•¶k-.‘Ôh-.xs_-.÷mG-.Ž—YR-.”ø,-.Œ‹ÙK-.‹ì°, -.ŠU>~6 -.‰ã*3 -.ˆ+É‚" -.‡ɧÚ5 -.†sðæk-.…]½!-.„0r-.ƒv€µ\-.‚¾n-.RRJ-.€Ü”P-.æM†e-.~sÉG-.}hÕ ÿ,.|$¤ºþ,.{¼¸V@ý,.zu‹Ñü,.y®nrû,.x/n&ú,.w†ÒJù,.vý*yoø,.uÂ{ä÷,.tP3Ò'ö,.sŒ'$õ,.røºÄô,.qaß 2ó,.pm(Lsò,.o«hF&ñ,.nÀé¯mð,.m¨®ƒï,.lÀç î,.kŒ–£í,.jpÎÍ>ì,.iÏ që,.h™6s:ê,.gýo1é,.fžº£è,.eßK(ç,.dše! æ,.c×H/å,.bÝ8Cä,.asû¾/ã,.`©ËQâ,._·¸á,.^ô“à,.]uÉèß,.\™èÞ,.[ï5=Ý,.Z±CŽÜ,.Ym£‰Û,.X5Ñÿ"Ú,.WqÜJÙ,.VÊÀØ,.Uïçül×,.T “†(Ö,.SLæ³fÕ,.R¡‰;Ô,.QÄyÈ[Ó,.P뀶Ò,.O4S mÑ,.N8tëOÐ,.MòÛÏ,.Lóóe=Î,.Ks^œ/Í,.J0åuÌ,.I»3(Ë,.Hc Ê,.GǼKÉ,.FÊ%È,.E'þ—SÇ,.D3‡TÆ,.C&¼ÀsÅ,.Bg»Ä,.AMàâ8Ã,.@+ dÂ,.? JÁ,.>Ä…ZÀ,.= ö^¿,.<ºI5¾,.;AÔç.½,.:¢âi¼,.9F}8-»,.8QpU"º,.7}n¡¹,.6M^l1¸,.5Z­óC·,.4beýI¶,.3mʹEµ,.2ŒÝ ´,.1ù¤—³,.0A_¦/²,./ÅO ±,..ÁŠQ °,.-8À=+¯,.,TŒ,®,.+ißF)­,.*¹ýUd¬,.); ­&«,.(²fjnª,.'Û¡|(©,.&§–Ü3¨,.%ÇR¤§,.$ú°»¦,.#|îìL¥,."‰Zˆ"¤,.! ¦R£,. IÃÎ/¢,.‚E¨^¡,.~õ ,.t`2dŸ,.ðc’ ž,.$þ^,.ø²sœ,.öV—U›,.ÙEš,.á'èb™,.Χ8˜,.iÀe5—,.,k–,.ƃÃb•,.8F ”,.Ÿh“,.µUøj’,.X?@X‘,.V>,. Ô³Þ,. ¶ 2Ž,. Þ[Ù;,. ”jŒ,. êÆR‹,.áðÀŠ,.,<%^‰,.>ŒQpˆ,.ð/K4‡,.1+†,.©;…,.±A„,.ÕöÑBh À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8G./â*ŒNiF./á_Ò×5E./àED./ßG»SC./Þw8 B./ÝŒkÂ"A./ÜñËh@./Û´öÜ8?./ÚHRø5>./Ù¾ä=./ØxG8<./×ò7;./Ö²Ñgn:./Õb>¥?9./ÔÑ¢'s8./Ó ^7./ÒògT&6./Ñ{#(5./Ð=š504./Ï)ÿ}F3./Îuúò2./ÍkÆ1./Ì€º~0./Ëy~W/./ÊýÃì5../ÉÆIr&-./Èùy,./ÇXò?1+./Æc¥*./ÅÚä0K)./Ä–$Ð(./ÃãÐúK'./ÂæÍŸ(&./ÁmŽi%./ÀVƒk,$./¿Ä¡K#./¾D­ÿc"./½4çK!./¼;Û• ./»:ô«u./º §[%./¹q×o./¸>ã;./·¦±J./¶pÖP./µUÿS./´Í…ç-./³Èü W./²)5./±ÒÓ%./°©Dÿ/./¯Zª$./®n–XR./­ºBg./¬!÷O./«¤Ñ¬./ªc2Í./©1~4 ./¨ÂÍo ./§Úß1 ./¦ó‘" ./¥Kw$ ./¤ŽM./£"ÀDT./¢=ÀŽ./¡"0X./ ˆÆúJ./Ÿ M‰e./ž'@4&./&þó./œü:./›fõÿ-/š¥š†Vþ-/™è÷Å^ý-/˜Ù¿˜Yü-/—§mz9û-/–OVÊ9ú-/•ú±Áù-/”¸ 'ø-/“«§Àl÷-/’dÑDö-/‘ïÓò?õ-/:²ÚLô-/ÊÄ«Mó-/ŽVÒtGò-/Ɔñ-/Œâ—rað-/‹äë"eï-/Š-íî-/‰­.mí-/ˆòŒPì-/‡ÐêEë-/†ØŠèê-/…l±³>é-/„™ùI è-/ƒ3;ç-/‚úïÜ1æ-/cÈCå-/€ f¶)V¢-/=:€V¡-/<Á¥˜3 -/;JÅz4Ÿ-/:Àî·<ž-/9ùCÇ6-/8JˆAœ-/7q[¥O›-/6Õ\ ;š-/5ÿ3)™-/4¨ÿv˜-/3ìWÁd—-/2S¶õQ–-/1Àêu•-/0SªÅ4”-///ÒM“-/.YÕ9A’-/-%¦©‘-/,²O¸*-/+Ü‘ÞQ-/*¬ËßRŽ-/)Q|ó-/(4Œ!Œ-/'óíG‹-/&°¸šgŠ-/%|^¥K‰-/$S³Ô ˆ-/#õþèL‡-/" £ª†-/!שּׂ!…-/ Æ;„-/ñ®!ƒ-/^KÈ‚-/Èõt-/Ñ0j€-/O'Hd-/#{ïr~-/LTV/}-/È[.@|-/é˜M{-/«i7z-/—ÓÁy-/™­û/x-/$¡#w-/¸ê°4v-/-,u-/|Å#t-/}×fs-/xnÿ,r-/ aÓÄ!q-/ §Ð0p-/ ¸Ý—>o-/ ¡WŽn-/ ¸ÁžLm-/ :sl-/¼¹±k-/\»ú3j-/dš\ci-/-ø­3h-/F1mg-/‘aåf-/ÿ¤if À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8)/0âš9S(/0áØŠ '/0àþ¾_&/0ßóÛ_4%/0ÞèÔ$/0ÝH0#/0Üq>e"/0ÛÉ#u!/0ÚlÊÒ/ /0Ù[ì-A/0؃³Ä2/0×T€eH/0ÖdutW/0Õ¯ÿVc/0Ô¬´Þ]/0Ó%¿¸ /0ÒñªZ/0Ñv@Î/0Ðþ?/0ÏîiN/0ήNÌ.0…yÏq-Ë.0„øG[Ê.0ƒ%NHÉ.0‚‹%_È.0f†îYÇ.0€Tq÷Æ.0ÿ¸#&Å.0~EƒU5Ä.0}ý&p`Ã.0|ž±LBÂ.0{…-ŒAÁ.0zwÜù/À.0yûŒC¿.0xgÖ¸1¾.0w!pY&½.0v“7P¼.0u\„B».0tXôNº.0sjó'¹.0rÝ3C¸.0qQdf·.0p”µ½ ¶.0o‰@æ8µ.0n³ C´.0mŒšvq³.0lJ#ñ5².0kHT±.0j3sMr°.0iˆØQ¯.0hÏe£M®.0g)6J­.0fîb‚E¬.0eU¢«.0dÀ³V,ª.0cŒG9©.0b"™$¨.0aVÞ¼2§.0`a› [¦.0_¿éþj¥.0^†Jv0¤.0]œJõu£.0\WÓ¢.0[Ul  ¡.0ZæûŠj .0Y bjfŸ.0XÈ{Ož.0W²Ÿ@.0VM¿…vœ.0U:7å^›.0TÕ=jš.0S†œM ™.0RÃ"˜.0Q¯|—.0P?õ–.0Ofÿ¾f•.0NY»^v”.0MÂJŸ'“.0LKâs’.0K V(‘.0J™ @.0I>0.0Hhiߎ.0Gb .0Foæ>pŒ.0EjiÏp‹.0D)@*UŠ.0Ca­Ï0‰.0BГFˆ.0AÆäL\‡.0@¢’+[†.0?1ÞÕ&….0>¶Nj „.0=‰ž ƒ.0<ðZ1‚.0;4\{*.0:¾6g€.09ŽlËg.08Ýa¥;~.07Ç"8l}.06œ™!<|.05Í"#j{.04GXz.0372:3y.02¯‡Sx.01|f‹Rw.00K`v.0/OeGNu.0.(ÕÏ^t.0- f¨Ms.0,¡ì7 r.0+7îƒ3q.0*Ͻ÷6p.0)þ“E$o.0(9oŒ.n.0' 9o?m.0&™Õˆnl.0%cïpk.0$À®ÙLj.0# I¦Ri.0"–âPh.0!Ž :g.0 £°lf.0‚†$Xe.0Væ¹0d.0ÿÅ@c.0WŽ fb.0÷§ra.0ñÒ©+`.0Ó·H_.0£ßd^.0egç].0›ÏW\.0ˬ,[.0©$JZ.0`¶A;Y.0S%ñjX.0·¢W.0®xDV.0ñæK+U.0=¨°T.0 ¢ì']S.0 ÿ~÷R.0 ¾nQ.0 eRò,P.0 Ô¯5O.0LËiN.0ú‹âM.0TY0L.02¥LK.0ü[+]J.0£óoI.09#Ó H.0¤ië+¸É À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8 01â¢Ç(4 01áÌrö 01àªß¦R01ß-Mú01Þ¾V{W01ÝE~01Üy äY01Û`8301Ú¦I@01Ù W>701Ø6î˜k01×/óKYÿ/1Ö†=ÒRþ/1Õ?ý/1ÔØBNnü/1ÓÈË~Pû/1Ò_Ú6-ú/1Ñs$ù/1ЊP.ø/1ÏA'$=÷/1δ 8Eö/1Íɧ+õ/1Ìwgð(ô/1ËÜ&'ó/1Ê@ËÔTò/1ÉfÜhñ/1Èvð/1ÇË'ï/1ƺó€î/1ÅEvñRí/1Ä,ÎÎ=ì/1Ãtz.ë/1°°;ê/1Áf`(Dé/1À´ÔK;è/1¿]HPç/1¾Æ/12£û&Å/1œ‚–5sÄ/1›È;NYÃ/1šö{Â/1™ò Á/1˜…ÄZWÀ/1—Ä%{b¿/1–¤” ¾/1•r^ì½/1”R‡S¼/1“L-»/1’<-º/1‘¹kT¹/1 ?n¸/1çÁe ·/1Že\$_¶/1]ƒ¤µ/1Œ2` C´/1‹f¦L³/1Šút" ²/1‰ªt‹g±/1ˆ…Óo(°/1‡…4Ø+¯/1†r®/1…xr9­/1„~å%%¬/1ƒÆÌ†«/1‚a¢Qª/1|©/1€á·lb¨/1ô \§/1~­¦/1}w,f¥/1|Cwó¤/1{Sd6%£/1zNŠ¢/1yfn8¡/1xpžf /1w“Ü-TŸ/1v6ìiž/1uš¯*v/1tðÅ6œ/1sUD¢ ›/1rT£0lš/1qÖšk™/1pµõT˜/1oÿµ—/1nc¢·l–/1mˆ·R•/1láÒ˜#”/1kuÔX“/1j ú¢l’/1i M3f‘/1hO²/1g×A—Z/1f—_Ž/1e}H©/1dä¨O,Œ/1cC·¶l‹/1bæƒ2wŠ/1aRÔus‰/1`Û|-Zˆ/1_ÇÜ~h‡/1^Aí+c†/1]1¥º@…/1\ãÅÏ„/1[»A&ƒ/1ZÜ ŠF‚/1Yׂq/1X¢'€/1Wß§w\/1VF ú ~/1U.áA}/1T âI/|/1SUíY{/1R`ˆvz/1Q,vÖy/1Pw¸fx/1OîÍ7w/1N{J]v/1MÔ›4u/1Lm…ÍQt/1K5¸ s/1Jöµ-r/1IŠš>oq/1Hó˜G.p/1GÔs„io/1F—X¬n/1E‘h0m/1Dg:‰l/1C§³k/1BçIj/1Aª×ri/1@å¯Rh/1?†«#=g/1>U+fqf/1= C^e/1<+ád/1;ýùGac/1:‘vwb/19tçºSa/18?Å--`/17ð²(_/16ÎξB^/15tls-]/148 ’i\/13qºàa[/12°ðÁZ/11I]2Y/10€ÜŸ9X/1/Fa>KW/1.Þcm-V/1-ã~ÄYU/1,B³ùZT/1+!ÖÞS/1*òA’`R/1)bÄmuQ/1(l9ûVP/1'xE.wO/1&€ÅN/1%½öKpM/1$:$:3L/1#‹Ï[JK/1"V@BJ/1!ÙÓPMI/1 m€B5H/1X1G/1z`vF/1¤×[+E/1¾44D/1¡W’UC/1¦üB/1ÊìïvA/1¸<¾5@/1]¨X?/1Ä{±>/1î¬t7=/1ðÝ@(!ôC0/1ôEŸL//1h¶ Q./1`ä]-/1O,/1þ$+/1_jN*/1ʨæ à, À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8í02âÉì02á(,î^ë02à½ßAaê02ßþ¶ré02Þ¤%2fè02Ýí:&ç02Ü¢½!Cæ02Û}Î02Ãzé Í02ƒšñoÌ02ÁФMË02À[ùó.Ê02¿i±P#É02¾-¥|(È02½”d>Ç02¼8¿†nÆ02»› 5JÅ02ºxa Ä02¹³.YeÃ02¸ŒJÉnÂ02·j4%Á02¶0-:À02µÃÿ¿02´ýb' ¾02³F´\½02²©Žè6¼02± #F#»02°÷Lu?º02¯NêÖK¹02®¿R²v¸02­`ýÞY·02¬áå—H¶02«UD#µ02ª†ê]e´02©ö(<7³02¨À+*>²02§äê¶ ±02¦ƒ°02¥É-—I¯02¤¼+i®02£é L­02¢£ÿž$¬02¡Ç(¨g«02 /†ÿ+ª02Ÿ‘/}U©02ž€¨02†- §02œS¡R¦02›X‹r¥02šƒ,+¤02™ÊJ±^£02˜" ¢02—éûÔT¡02–eP 02•òÓ^Ÿ02”Ogž02“Y8Gb02’LdÉ#œ02‘—ãË\›02m?š02jLnS™02ŽÙ¦¶k˜02ë¼[—02Œ•nO\–02‹¢ÿ¦X•02Šs%"3”02‰÷‘Èk“02ˆ(jÁ’02‡h®®.‘02†&.ø$02…õë‚02„ëb¡ Ž02ƒdWF02‚«%(IŒ02ªõÑ"‹02€ÜÛŠ02Ä ³#‰02~7Uˆ02}Fœ%k‡02|6„õV†02{™ªŒM…02z°EL„02y0Ç+4ƒ02xš”¼7‚02w¿`Se02v¥oM:€02u¸‚702tì3_~02sâ«G}02r¼ÐJh|02q‚Ûi{02pÕqTnz02o7§y02nx+oUx02mžp¼gw02lz•å=v02k wsu02jÑcÐFt02i3~>s02h|K r02g^ÖUq02fJZ/p02eBuo02d‡{Cn02cçu%m02b¦wÐDl02a;Ôëk02`ŽóCj02_jgªi02^–VÙ\h02]½É"g02\ÿÐf02[ïx. e02Z‹ëqd02Yà|:c02XÓ,Kb02WÄWòia02VüÚlF`02Ujì$m_02T ÎqP^02S…);U]02R °©\02Q8˜[02P¾¥_LZ02Om´ûPY02NÌ ì X02MG§$W02LŽ¿›mV02K½™/hU02Jè·ã`T02I:Þ=S02HƒÖZR02Gc@ Q02F›‰40P02EV³4O02DY’·XN02C<&=M02B¤H)L02Aˆ^)!K02@jåiJ02?§Ýª<I02>zeë(H02=™•G02<LãF02;Ç“!E02:ä51D029iÔ[C028·‰€B027wEghA026`<{Y@025ÕÌÙI?024ƃÛ>023œã9=022kˆá\<021wޏ';020߈•Z:02/ò/902._óø:802-Sá]]702,9ÃÔU602+…wÈV502*Ÿè>W402).·U302( B™(202'_ Dj102&±¡G 002%Ð3Ž7/02$Ó¾KK.02#þÇÒc-02"so,02!KLzS+02 Š‘Ç"*02²ÑÉ!)029÷Ç[(02³w‡ '02žÖd&02m„Ñ?%02 ,.$02ãPÜF#02°Á‹_"02Ĭ—!02iØ-d 02P‰XX02¼šƒV02\ï,02/õc02;mt02Õ×RQ02Úf[02´ø02  Ô02 {5/.02 @o0d02 }¹I02 9¢@h02ŒNø02³mª02Â:P?02‡o02t6 A02\»©M 02éçn 02×@ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8Ï13âZ_ Î13áŽTw Í13àe*Ì13ßÍ2?&Ë13Þ±Úw>Ê13Ý»ÜÛDÉ13Ü w‰ È13Ûä¿b4Ç13Úr\cÆ13Ù>4•!Å13ØVÌÄ13׊sf2Ã13ÖJQç5Â13ÕñH1Á13Ô"~4rÀ13Ó}æZb¿13Òï˜K_¾13Ñ|%>½13ÐR­nK¼13Ï£<Ñr»13γDoº13ÍüJl3¹13ÌrïÏ(¸13Ë¡#ÜA·13Ê"¬¿3¶13ÉÏkt7µ13ÈØi7´13Ç«çU³13Æÿ :²13ÅS¾º±13Ä“Ÿoi°13ÃÀm¯13ÂÝ 5E®13ÁÂZ\­13À¾»µ¬13¿Í «13¾IYª13½ÏÖ)b©13¼ŽóK,¨13»éè™0§13ºõvãb¦13¹dƒå¥13¸g‰g7¤13·ÍþÁJ£13¶D¢13µ4¡13´+9ì 13³Lð¯cŸ13²S7¶-ž13±Ub13°0MJœ13¯µÈE›13®Ú2âvš13­£‘h™13¬„Kr ˜13«wÄi—13ªÏ`:–13©É¯&•13¨Ü-”13§rÞl"“13¦vD»B’13¥Ђ ‘13¤ÏMS13£ó;13¢yIŽ13¡ïxÁ.13 ?»þTŒ13Ÿ_+w(‹13žÛó{vŠ13)pf%‰13œógpˆ13›(x!‡13šbÓÿd†13™L‡X…13˜¢ÅÕ3„13—µç ,ƒ13–ÈÊX‚13•Õjv13”£®€13“@#_13’{ÃU~13‘É¥X}13iV;|13cnxb{13ŽÓ¶VIz13¼ÅøZy13Œ_|ƒ^x13‹]tw13ŠSi)[v13‰HY u13ˆ£mUFt13‡eQ›s13†VzÌ r13…à‹‹$q13„ÐËV]p13ƒqRo13‚{/n13K˜/m13€ÞËD/l13³{Z^k13~Ç0œ7j13}6lmi13|†F[h13{¬ë^8g13z„P5tf13yÌîë4e13xšDòd13w‡Hkc13vZ§É]b13uŽm>8a13t³¬Ì#`13sé-_13rºO^13qÒ7“W]13pòô\13ou4‰L[13nhðwZ13m#}>Y13lº¨­-X13kíŽSW13jñÞ9V13iÄáÉ!U13h•z!T13g<ú.S13fÌFlR13e»€¾-Q13d<¥Â"P13c`1VHO13bN®1oN13a§ój9M13`-5ÙL13_ÙrvK13^²¯pJ13]ºW•&I13\§l%H13[üÊUG13ZrÛWNF13Y kéQE13XÔ/ÔqD13WA¾¶0C13VÔZï(B13UâoCA13T÷)@13SErû9?13RiÛÃW>13Qìb­<=13Pº‹Û<13O{Øv#;13N&DC(:13MöÆã 913LXþ2813K´Õt^713J÷n¹,613IÛ,ñj513Hø7 413GkÕï#313FkfÂ5213E”E`113D3ü|E013C4iôo/13Bõ×@.13AsqyS-13@2Q,13?¶§E+13>HsO*13=иJ)13<(l+[(13;/¡'13:7ú(&139ñ&e.%138-ǘ$137Ž|)f#136yÁàb"135((¦c!134‹æ 133îM4132Æj131ÄÄ÷130#n˜h13/rA13.ÿë_V13-}eX>13,³ÝS24Îb6kAœ24Íòüo›24ÌõIš24ËÌVºB™24Êîä ˜24ÉÌù¯-—24ÈÓy–24Çbˆ¬H•24Æ £”24Å~#Z“24Ä×&³J’24ÃÚþ±-‘24Âüs324Á(Êÿ24À÷v¸DŽ24¿#Pâ24¾ Å,vŒ24½ +‹24¼R«ºHŠ24»iÒN‰24ºž8lˆ24¹ÞÁ·V‡24¸jóÄ5†24·P«…24¶©7øQ„24µ?ÊYƒ24´Xïß(‚24³æL24²É‚ª`€24±œŒ°\24°MJ  ~24¯•sæu}24®í$e|24­Iûí{24¬̃@0z24«£ùm8y24ª¹í x24©‚C¬/w24¨‹õ.uv24§8¡&iu24¦‚…&t24¥¯\³6s24¤ä/`r24£ÚM‘/q24¢™p24¡ëÙ¡o24 Ñ8]2n24Ÿï[Z'm24žm6l24s}8ik24œ´u j24›Oii24š5Š¿h24™+)kg24˜÷¬Qf24—¡Q«>e24–uÛä3d24•¼ödCc24”¼›¬ b24“3£ùaa24’¯Ân`24‘ãçd_24Èï¥E^24J¶,]24Ž á \24J@”[24Œ˜t:Z24‹àY24о X24‰ܘ{>W24ˆT…÷V24‡¨Ë3nU24†”ê!T24…ùAFS24„ ©itR24ƒ+ÑãdQ24‚}\ÃZP24]OZ@O24€;æLN24޼CM24~>óxdL24}‰L¢K24|VjŒJ24{”ÌI=I24z¶á»[H24y<¶› G24xåµþ4F24wBÌ IE24v yØKD24u¸LúC24tk³SB24sdü BA24rtÕW@24q~¯E?24p3wi>24oÁúh=24nJ­n<24m;“.s;24l,[$:24kV†924jIÕÐ824i[ן9724h ¶ÿp624gh†ü3524f{yÿb424e«Y4324dðê–V224c_Î124bðS024a²™ª /24`È#0+.24_ª&/'-24^Óþ,24]´ð +24\®K*24[t›)24Z.Ñø8(24Y-i'24X×Í,&24W©|Ì %24VD )<$24Uì—wN#24T0ÊO"24Sf¨Ae!24R4-šM 24Qø~m24PáeÖU24OóŽ\24Nò½]V24MѺP24L·cT24Kàâ `24JàñÕM24Iõ\ð<24Hx/›T24G«øK24F‹ý-X24E>QìH24D—> c24CtÉç+24Bß.Äh24A­o? 24@üä24?`é€ 24>ìv-I 24=A|f 24<œ] 24;…T,/ 24:éñT249ê‹U248x‘71247ÞöN246¸jÝ2458‚Y244…Bk243A1Ah242T 241Nÿ140<,:Dþ14/o‰mý14.ñ%äü14-š™Rû14,h³n ú14+ÃFÝù14*ió÷[ø14):Þ® ÷14(…"`ö14'4F,õ14&_¶]Wô14%éÎÌBó14$x¹ ò14#€EC_ñ14"ÀŒGNð14!zb/ï14 Ãì²#î14g"í14™Okì14±{xë14 W*uê14 ûóé142ª­Tè14@$ëNç14Y´±>æ14wÍÑå142­aBä14uôN ã14$â14ôxÌ á14(8à14z%Öhß14ª»bÞ14-ßÝ14X;×mÜ14 -iõvÛ14 >ÚðÚ14 R¿±/Ù14 Û»†+Ø14 ›1U×14žzBÖ14ßPoÕ14)ÖºkÔ14þê›TÓ14½X;Ò14ZjF4Ñ14â2Ð14q:XV‘ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8“35âå&’35á¡tî ‘35àîZ”N35ßQÔ(35Þ_x MŽ35Ý>Ð"e35Üí$Œ35Û|¶ÿ@‹35Ú˜·ÃŠ35ÙÔ‘1‰35Ø(!ˆ35×:Ði‡35ÖðúC†35Õ>Õ°"…35Ô ì­[„35ÓÐ[ƒ35Ò±\ZT‚35Ñ»?Cs35ÐY•Òl€35Ï)d'35ÎP×À,~35Íeº}35Ì ãÁ |35Ë›"Hc{35Ê¡#Az35ɘ ey35ÈY{uDx35ÇTt÷ew35ÆÈw_qv35ÅàZ„u35Ä¿!"t35ÕA¯ts35ÂB5r35Á°§`q35Àb¹…p35¿âÁ o35¾¦_Kn35½‰æ m35¼xŽâl35»^çYk35ºä*#sj35¹Ææ¡ui35¸0xñ#h35·Ù¾g9g35¶ ŒEf35µO@ _e35´¼Îted35³‡Íõ,c35²kh‚Fb35±U0Ma35°¬¢`35¯´H®@_35®cÕØU^35­ïÞV]35¬B§Ò\35«MCUR[35ªV´vkZ35©y ñ,Y35¨•RÕWX35§4ÊåsW35¦œ^ŸYV35¥—°$U35¤1ˆ)pT35£`Î)S35¢ HR35¡IÄÔpQ35 kÇ\cP35ŸG1:O35ž6òøN35±;v!M35œ.ždL35› l»9K35š8Ú0J35™àˆ;I35˜„(KH35—?–G35–ã×F35•gž\E35”l!SD35“¶ÔC35’óîtnB35‘-aqA35r¡Û!@35’ƒ?35Ž˜¾+>35Éi=35Œ¸„µq<35‹"~Æn;35ŠÜU‡J:35‰†»$3935ˆB¼835‡<Ž0735†‘h635…éWŠv535„õšé<435ƒÂhxR335‚ÒÛa235¹‹æA135€œL035,sL/35~xõ•h.35}M7)-35|í{Èe,35{3›+35zýóh"*35yµåË2)35xšC(35w-¸I'35vsC!&35u>T%35tD.[$35sÞ\ñj#35r•¢kF"35q©ú/!35p]¡ 35ovÔ„335níÄ35m2É>35l < k35k Åø35j*¼#35i~g35hG‰Új35gC¼%435f×…®35e<£8r35d©¦Û35cæ·h35bA*†P35aËŠ…#35`>2à]35_EZQ35^PC®35]8–ü2 35\™}< 35[Ð; 35ZB¢® 35Y[]qc 35Xé9Q/35W–za-35V©EÑI35U›÷3+35T»ía35SÎæ35R¼Uj35Q+l¨A35PU,°?35OMÿ–ÿ25N±žÔþ25M¾¢fý25LYÐS&ü25K>Ìfû25JBŒîfú25I z×où25HšJ.ø25Gða{v÷25Fûx²!ö25Eݯ‹Yõ25D¨¾.ô25Cüc¥vó25B{G×ò25Aœã*ñ25@«ÜÙ>ð25?€›Änï25>öóM!î25=>´&í25<ç•Wì25;¬»‚[ë25:² ê259NBé258S©Bè257Šwê6ç256Þ¡Éæ255VOE å254Ê5lJä253oVÓ ã252zÍÓ&â251NCPá250ôÂxUà25/s0>+ß25.ÅÅévÞ25-Mê±-Ý25,¤ì8Ü25+R¾¨gÛ25*%NÚ25)¼ùóKÙ25(IH½GØ25'ÿ¨B"×25&bh´<Ö25%¢}ÚÕ25$P‡Ë7Ô25#û?H%Ó25"¨• Ò25!m(ÙÑ25 ™ÁÐ25JÌ=Ï25‹œ` Î25™SæRÍ25—hÙÌ25(4ëYË25p4‰aÊ25¿d"É25ÀÕ³cÈ25oKö Ç25ܧpÆ25|Ç^qÅ25{'.Ä251ËrÃ25ˆÐŽPÂ25§ØÆ'Á25Ï×ñiÀ25sA¿25=}ÂV¾25 è†Ãc½25  vë¼25 Xâ+»25 Z‘?º25 §ÊâC¹25¯µ¬a¸25g(l·25’izq¶25â^òµ25b:‡ ´25ÆoÊC³25â‹x ²25F<€¹‘ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8u46âd§s$t46á9¦ó s46àÚd›Rr46ß÷¼aq46Þ‰Ê%p46Ý–6_o46Ü‘ <n46Û„[[Jm46Új††Fl46ÙnÂ9k46ØQ¯j46×£h5mi46ÖÙaIh46Õv¬Rg46ÔH#÷Yf46Ó–¹de46Òý¡Ed46ÑzãÙc46ÐÄEDZb46Ï~Ï(a46ΟVËa`46ÍyØ%_46ÌrAK`^46ËÌ…‘?]46Êg®,c\46É€º/[46Èh5M?Z46Ç¿´^4Y46ÆÁ¼KX46ÅS”4$W46ÄòÖ_<V46Ãmí9U46®o!`T46ÁD÷šjS46Àâ‹®%R46¿âQQ46¾+{¯P46½¦wKO46¼3Y¬.N46»DZ†PM46º_Ô•gL46¹ÛU\ K46¸ZE>J46·xgÞ[I46¶_CæCH46µÍ?>G46´Ñ¿t F46³™-y,E46²Û D1D46±KmTC46° "0B46¯ÒÐ9"A46®¾.@46­ñ†C?46¬dPD>46«¨ùÍ.=46ª¾‘FI<46©¡;46¨Ìq4o:46§Tž1946¦¤¸H;846¥®súH746¤‹’>646£©l?546¢|ëQ446¡<c#346 Ò©5#246Ÿd]^?146žG7ë046XP%/46œmlH=.46›çl· -46š|¦«<,46™™VL+46˜¦§iQ*46—Æm)46–òÙ (46•‡æ‹-'46”ŒŸ›s&46“P %46’9¯ï9$46‘/-d#46n€õ!"46hX–b!46Ž3‰ q 46NCa\46ŒÜÏ646‹jó846Šq|W46‰þ9&46ˆÉŸ(t46‡ûK -46†—‹Dn46…Ph46„×V?b46ƒ³46‚ôÜw46z:u46€öð46`Ê346~ÛðÙ_46}áf'h46|AYƒ146{¶>% 46z™z}? 46yÁÝ# 46x:  46wêbu 46vNËÑj46uqpn46tšcJd46sÐêŽN46rç9Xj46qÑÉ<46p<Ç+46oÉ•õ846nÞÆ[46m¾•ÿ36l¢ç!;þ36kv0ü)ý36j‡+/ü36iy û36h$‰ÿAú36gãl·[ù36f[5™Vø36e\°Yd÷36d½-wö36c”D õ36bžIAô36a$ó36`æKò36_%`›:ñ36^Fì©(ð36]"˜¥ ï36\|†7 î36[¯«®Aí36ZщA0ì36YÈ™˜ ë36XOÿ¹ê36W~àBé36V‰ÊKè36U{’€'ç36TC®Ç"æ36S¤b1å36RB n7ä36QÏ2ã36P'B uâ36Og*•Rá36N7«ŸXà36M)Z /ß36LR;2_Þ36K£-©JÝ36Jì³,Ü36IÈlÛTÛ36H&?@KÚ36GÇ"UKÙ36F½fOØ36E§£ˆv×36Du¡“6Ö36Cy}ÛQÕ36BÎů_Ô36Aül@>Ó36@©Ùc0Ò36?—Ô0^Ñ36>Q¢™TÐ36=³€ÔuÏ36<`¬ô0Î36;S©þÍ36:?c‚fÌ369Õo`Ë368;ưpÊ367lºbÉ3668HgÈ365s•Ç364÷õŽ3Æ363Ûs\Å362™È9Ä361þçþEÃ360ƒ˜jÂ36/“}ö Á36. nVÀ36-ŠÎV ¿36,}‚žv¾36+V]”X½36* ü36)~/íK»36(RÁº36'D}rt¹36&ÙÝØ¸36%xȈo·36$Ï£w!¶36#7ñ~µ36"«^Ü`´36!öìÄ1³36 7(<-²36ýøš@±36tR°36Š?»G¯36wƒ®36Ó¨c­36x\p¬36Ç6i«36tÄ.ª36^¨9 ©36ÚE¨36ø¡Åd§36Å„«h¦36ŠÑ+¥36ôy¨C¤36Š´A`£36¢36µ¤÷ ¡36È“ 36 ÿR±*Ÿ36 ÜÒCž36 ņ36 ¥Q5œ36 ÚLn›36uÙúRš36¡ìY™36Íi¬˜36ÙJèf—36]xK–36®eA •36Ïr"”36¬|¶\¨’ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8W57â$¼ZV57ᪿ¢#U57àðÃyT57ßx£Q=S57ÞÕUR57݈ä³lQ57ÜÿbhP57ÛêqÌO57ÚdË,N57Ù ÌtM57Ø„aLkL57ׂÙoK57ÖÈ>OgJ57Õ¾Œ9ZI57Ôl6?7H57ÓQq/G57ÒÎEž1F57Ñ4ànE57ÐÕÜ LD57Ϫ*JC57ÎWQ>\B57ÍÞPåjA57Ì8Ew5@57ˤœ W?57Ê’‹N>57ÉT– =57È|i­<57ǧ¯<;57Æ,f:57ÅÅM ?957Ä¡9857ì³757˜QE657Áisû%557ÀxÔéK457¿)9357¾#Åè?257½îík157¼e¤µ(057»áE[/57ºIÊ| .57¹ÆÔ-57¸7f],57·wÍU+57¶ðF›(*57µ8¹”?)57´{(Z=(57³¶/©^'57²Û¿¡&57±÷[X%57°ßd³$57¯³´3#57®LÅä"57­ã®Ö%!57¬(3]T 57«ëÛÃK57ª(ù957©·¯B:57¨ nZ57§€éh57¦,Òq57¥9Z>p57¤3ØþG57£pÁú 57¢EBH]57¡ŠzX57 ÃëR57ŸA057ž¤#Š]57žÏ¢57œÌ¢*)57›Ò’/57šÖ!­_57™Þ}Ñ 57˜û¤Å 57—:«'A 57–]ùò, 57•„œ4\ 57”ÕÊõI57“( n 57’«Zv;57‘üIf57‹ (57`}VH57޼µœ$57pƒ57Œåe‹h57‹§t†ÿ47Š‹³¥?þ47‰ÍCeaý47ˆL@ê ü47‡½Î×eû47†óöú47…©ñgù47„­iÝrø47ƒú,÷47‚åêÃqö47$°åoõ47€vÜbô47Ò’÷-ó47~ÈA+/ò47}î$Y ñ47|×ëÌð47{œv…ï47zhî47ywœÆ2í47xdtgnì47w4î„ë47vÙA¾ ê47uÙ[é47t‰—\è47sJqUjç47r@”uAæ47q’ñ å47p{«Wä47oAã47nåcªQâ47m"&á47l\ÈÑeà47kÎxQß47jÚ+oNÞ47i¢â1Ý47hù/jÜ47gïèp]Û47fÄšlÚ47eˆ¹÷Ù47dŽæW%Ø47cXÌC×47b\nº@Ö47aˆK?sÕ47`ú¦*Ô47_,Ë¥Ó47^m zÒ47]`ã;\Ñ47\8–S'Ð47[K*HÏ47ZžZÎ47Y‹_NÍ47X—ø":Ì47Wdž-Ë47V™€£Ê47Uƒ÷¥NÉ47TÎÅTÈ47S,S_,Ç47R5Â|3Æ47Qd‰ÚOÅ47P¸ z&Ä47Oë¦Ã47N=Šì/Â47M¹åÍ4Á47L¾ ^À47KëÖ3h¿47JÞÛ«;¾47Iˆ?8g½47H`8¼47G°BÁ(»47F,ßr9º47E/N)¹47D±¡-¸47C0£0·47B«ÄX¶47AšW$1µ47@ôȇ`´47?! !I³47>ˆ3J²47=­6±47<´1l°47;ŠŸ[¯47:ðràp®479•²b­478ÁžI¬477mÁyd«476M5)ª475jЯ:©474tFå¨473×Õ2§472'ÿí¦471ÿºáh¥470YkÓ¤47/RGî>£47.ÛWp¢47-6hn¡47,‹Ô0 47+-™êŸ47*[`Å-ž47)ZÓÊ47(—%Urœ47'ü;^ ›47&ì¿Gš47%í²s™47$;nÂF˜47#ø £—47"Ùb&^–47!G’‚L•47 mØ´:”47³’Ée“47¼WZ’47 0ï"‘47NëUA47ƒ±f 47Æ_‰GŽ47WbÏV47ùz”^Œ47/òˆ_‹47CÑÁŠ47u9‰47Åkˆ47ÕK5X‡47#±¿o†47#—#…47ÇrÓ„47­m]ƒ47ÚA@‚47 1P!47 –Ë€47 _$g$47 mOA>~47 Ì×u}47ÀaÑ9|47ôv8{47¦ŠŒz47ôouqy47‹\$Lx47&d’ow47Œ:(2v47̧ÅÐ’ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8968â\¨Xu868á$<¢768àŽ[ƒ668߯c<]568ÞɹR468Ý×iu+368ÜÎûrQ268Ûgˆ168ÚÞ¿¹g068ÙÒJ‘/68ØÀôkd.68×óJU;-68Ö¡›®,68Õ4Š+68ÔYëJ*68ÓÎw¦\)68ÒP(68Ñz]‘b'68Ðæ»<&68Ïq22%68οì$68ÍÔn#68Ì5À# "68ËMQt,!68Ê8—[ 68ɤ³c68È.Ò—V68ÇÉ„%M68Æ¿_68Åg68Ä;·368ÕD68Â[Ï%68Á¶…Cj68ÀøgÉ 68¿b€968¾ù=ñ:68½ü°á168¼§®VUÚ58ƒ®~Å Ù58‚0I6Ø58Ÿ 5E×58€ÚÇIÖ58m Z'Õ58~³ÉAÔ58}™Œê3Ó58|Be‡gÒ58{á7WnÑ58zÈ%Ð58yr:¼(Ï58x#0JÎ58wìé)nÍ58vi‚…Ì58uYé¨.Ë58tެZÊ58sßfp É58rÙíaÈ58qÇ2ØrÇ58p´9Ù2Æ58o S__Å58nžÆ%Ä58m?\88Ã58l¾moÂ58k¦ÊZÁ58jØ’£>À58i/Éä¿58hÔä?!¾58gçÇg½58frp‚s¼58eŸ !»58d83Nº58cÂ>Ĺ58bìC4¸58axMÝ·58`+97¶58_Ñ%ßIµ58^чÅ.´58]Ï*Ë>³58\¿2'$²58[Û®0±58Z ¸6%°58Yɇ¯58X^=Ïe®58WНJp­58V€gñC¬58UÈ ¸ «58T+ÁÌNª58S9©58R(M¨58QtqÖq§58Páå'g¦58OøãóB¥58Nf]Êp¤58M8ˆf£58LÒåÇ8¢58KñN¡58J½ì—  58I4DŸ58HJÞ“ž58G°1¾d58F³\í œ58E$ëU8›58D–™ñNš58C²Š1™58B§YM^˜58A\¢ro—58@ó·%–58?öØ” •58>År””58=õ “58<}—’58;€œ!,‘58:IHËN589–/Y588_î}!Ž587G¥cA586Ÿ‰Û6Œ585¶ã+T‹584Xp›Š58304 ‰582  ˆ581R­Ÿ‡580%þ+ †58/uM¸"…58.ÑKðY„58-¡©'ƒ58,¦1~4‚58+O58*ç0€58)&‡sX58(˜Ì~58'™>˜Q}58&}%>Q|58%;‹´V{58$¿Ò z58#²€¸=y58"–/ÞUx58!Üw58 yÓýv58Ej¨du58­b 1t58çiµ=s58 ®£ r58£g q58÷¥;"p58©ž‡Do58ï4È.n58oU½,m58¨ÏSl58Ãûk58 Ê'wj58˜Z‰Ui58õäh58ˆð·Yg58Яoef58Ãüà:e58ºx"d58 >@Sc58 õ¶B b58 è<Î*a58 ©a5`58 Ý M6_58ÅE^58ˤ…]58¥[Ö\58ìvðe[589­º<Z58PYkhY58o CcX58’ý}:ã’ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ879â…¹379áe¸Ç79à0ƒ":79ßÖÀŠJ79Þ…N79Ýpv¿,79ÜZo³979Û€ ”579Ú‘ƒ!879Ù¢,"79Øæzžt79×ëÓ679Ö¯Xƒt79Õ¬s›E 79Ôg‰[ 79Ó­}Á$ 79Òt?E 79Ñ1s8. 79ИØ479ÏŸa79Î1ªO79Í>ñ&79Ìæ>k+79ËÐÌ779Ê£79Ér—279ȘO?79Ç}&ÿ69ÆR|n+þ69Å$)ª%ý69ı1/ü69ïRd`û69ÂȾw/ú69Á¿ c ù69À}Q×ø69¿mñ÷69¾Þ†Ókö69½·BŸõ69¼š9+8ô69»§¯êó69ºógÆ$ò69¹:/ñ69¸ƒØâ6ð69·ÛÁOï69¶7^\î69µ5Q-í69´©ygì69³V¦ÕZë69²ÿÈèê69±üYç é69°8Ä36è69¯aqƒVç69®›×æ69­sÄ på69¬7\ènä69«ì¹Áeã69ª ’(â69©sÛ¤á69¨fß%nà69§¤½?Bß69¦\þgmÞ69¥ñ$:"Ý69¤2OÜ69£ªQ†Û69¢áÅÚ69¡Å¢mpÙ69 ƒÇûWØ69Ÿ7×èN×69žÅnjÖ69`2( Õ69œ$k=]Ô69›ñ :LÓ69š©¦.Ò69™N¼‘ Ñ69˜WõØ_Ð69—áK¼Ï69–6ShÎ69•®7YÍ69”â¡$Ì69“žëš8Ë69’÷REsÊ69‘Æ“_=É69)©Ð^È69uK#Ç69ŽS2áhÆ69Ä€CUÅ69Œ†nÑnÄ69‹}h<Ã69Šqr#Â69‰tºëKÁ69ˆpPèiÀ69‡²¬áV¿69† u ¾69…mòTV½69„(À5¼69ƒªÖA»69‚4_º69#•ÓN¹69€áh¸69ÒMÔ·69~\·Q¶69}Ö®«Sµ69|š¿–c´69{!]ê³69zý^k²69y©Õ¡±69xÅýOo°69w—ûT¯69v·`']®69uWâw^­69tuÖÿP¬69sÞÝùO«69rrõ³Kª69qe( ©69p“š¯+¨69oÖÉÂ,§69n­Ñ1¦69m´å"¥69l ¬kI¤69kfXÆC£69jd¯vB¢69i^“¡69hŠŽ!! 69ggȘ?Ÿ69fm¾õOž69e"^69d–jfOœ69c-zÀ_›69bÇ Rtš69a=Q5™69`8"s1˜69_;ÀÌ?—69^¾E‚_–69]ñéô\•69\\óÏ”69[€\“69Zò° ’69YmØ‘69X"%69WÙ‚- 69VåìÃŽ69U®rG69TKCJ$Œ69Sœ+ñ‹69R¸¬ñNŠ69QæÉ‰69P˱ŒZˆ69OGK@e‡69N­˜¤W†69MNØ5…69LÜɤ"„69KýæÝƒ69J–3Ó:‚69I…5:69HÐñgg€69G?Øjg69F=¥a~69EY1:}69DõWM.|69CŠK…4{69BŸè,z69AG̳Ky69@ßÌü%x69?>D&Hw69>ÿàD<v69=î×÷u69<]ÜXt69;†‚s69:‰ÂIur699 Æ2q698ŽÓ`p697IUko696W•¶on695É\€m694Ñ š;l693qõæ`k692ÔáZ(j691Âc´$i690k›Bh69/°±ÆTg69.s®:rf69-VX¥_e69,-‰«d69+VïJc69*GôdPb69)wØ6-a69(J€9`69'³Y€,_69&ÙyH ^69%®ÏY]69$«~ˆ\69#Aï÷[[69"HënZ69!ñôY69 àgÍ3X69æZÂ(W69e©ã V69JeÈXU69‹FŸ*T69@mA S69¼ E:R69Äv˜DQ69wGn/P69äŸÏO69ö[jN69ªåM69tKL69$ÄÉJK69OI¯)J69½+ZI69ƒ(BH69¿œ'G69d@F69 µDª\E69  o€D69 ”šä#C69 Ÿ^îB69 œôƒVA69Û÷@69—†(?69f4`J>69º¹h=69`‡*(<69a$â];69ŒK!:69––:R8F“ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8ý7:âp…;>ü7:áBi$û7:à‰!bú7:ß̲ô?ù7:ÞWG¦Uø7:ÝA;ª!÷7:Ül­Çö7:Ûÿ\`eõ7:ÚTŒsHô7:ÙÝæó7:Ø—ú{<ò7:×>É¢-ñ7:ÖG¹ð7:Õ-lmï7:Ô²þÃAî7:Ó³dí7:Òe!oì7:Ñ{øë7:Ðl¡/ê7:Ϭ|/é7:Îÿ2øvè7:Í9F»+ç7:Ìo˜ æ7:Ëw£på7:Ê3%ä7:É\ºbHã7:È塬[â7:ÇSL¼ á7:Æÿ“;à7:ÅÚ¶$ß7:Ä6[NiÞ7:ãf|uÝ7:Âê`øEÜ7:ÁHæY@Û7:À`-<Ú7:¿X~{gÙ7:¾ìBlPØ7:½ŽZßi×7:¼gbä(Ö7:»ÃÐÕ7:º–- Ô7:¹jŽ%Ó7:¸‹^cÒ7:·“è/hÑ7:¶&›Ð7:µ6ïË+Ï7:´GW vÎ7:³[c¥?Í7:²|p5Ì7:±3ï©bË7:°ƒI»7: ñ—>º7:ŸÖ›5¹7:žø,Ö_¸7:ýÓÕ·7:œ‹øñ.¶7:›Ùµ7:šDóŒ´7:™UoH7³7:˜L%Ei²7:—ÌËW±7:–º~–°7:•hv¯7:”ú-®7:“ôtã3­7:’-½7¬7:‘)‹Õ_«7:õù ª7:&j-7©7:޶z.¨7:†ªb§7:ŒÃÖúQ¦7:‹›·F¥7:Š•yY¤7:‰.¤äg£7:ˆý¢7:‡^Öv¡7:†“Ñ9 7:…p¶gŸ7:„¡Zž7:ƒ„·‡17:‚Ù¥â`œ7:ôGÁ:›7:€K‡©š7:öSÇF™7:~¸t~u˜7:}7ßn—7:|¶Gÿ&–7:{x»°%•7:zšð±!”7:y7½ÎU“7:x­Ñã:’7:wÅèX‘7:vç>˜S7:uõŽ37:tÿzUŽ7:sçw7:rsÍ1Œ7:qoO+‹7:pa'h\Š7:o¶s†^‰7:nl©ˆ7:m•ÆKa‡7:lå ºB†7:k½!ÙY…7:j›ÒÝ.„7:i«l1ƒ7:h¼¬º_‚7:g7:f–€7:e®¦S7:d90Þ*~7:cãQ}7:b:gx<|7:aþÿ{7:`@ Èz7:_@¹ÍOy7:^œ,-Mx7:]~fHw7:\Ë}bv7:[Ôæþ?u7:ZP~6t7:Y¹ÎUs7:XÆ"“Er7:Wßë±Sq7:VòÀp7:U¿_ko7:T¦¿³n7:S½0|Jm7:R¦ l7:QÌôQrk7:PÑgÌj7:O®{<i7:Núóm2h7:M:Ÿˆ.g7:L Tqf7:KŒ¸^'e7:J\d7:I+ c7:HÕ}ÖSb7:G³R9ca7:Fr?`7:E$2Þ_7:D¢Ùˆq^7:CúAàc]7:Bxe9\7:A—N[7:@uÏeZ7:?ÇE. Y7:>. /FX7:=¯¬ZW7:<X¡qV7:;q&º%U7::8Ü”T7:96÷hQS7:8:,þ8R7:7ÄUz.Q7:6SkP7:5Ù^—O7:4ìȯ.N7:3UÇ:M7:2Òä?L7:1–\ydK7:0­¦\BJ7:/m; I7:.%Cv H7:-ñ)eG7:,·Î½JF7:+a"E7:*œZIlD7:)°Kø7C7:( æhB7:'x‘l*A7:&¬` Z@7:%ßWñ"?7:$…v>7:#±Ú+=7:"•ág<7:!c T ;7: ¹Â:7:½yu 97:ÙÒU87:Ø`8 77:7Žñc67:tPN57:¨qK]47:`Íf37:Ö w27:9û‹017:òèV07:VlA/7:¦  o.7:dÅÔ4-7:pD,7:¼7iT+7:µ‡7*7:Ä9u)7:U<p(7: ƒÅ'7: P$^0&7: $ÉÜA%7: "U$7: 1µôE#7:ò+"7:û@1.!7:Kv‰ 7:"æÀk7:ø7:Øû'_7:Šáq,7:á´¿i`©“ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8ß8;âP¸RÞ8;á·Ý8;à]o4!Ü8;ß\@Û8;ÞX" vÚ8;ÝмÃÙ8;ÜB8#Ø8;Û›¿2×8;ÚøÏò\Ö8;Ù‹]Õ8;ØTjXÔ8;×ó â.Ó8;ÖG ”Ò8;ÕþúÒEÑ8;ÔbáÓnÐ8;Ó©i‹JÏ8;Òý$apÎ8;Ñ?Vù>Í8;ÐØUÌ8;ÏéÏ-Ë8;ηH‰!Ê8;ÍÞ4lÉ8;ÌŸ!È8;ËáTgÇ8;Êåä‹[Æ8;ÉØÝ/RÅ8;È6m}(Ä8;ÇA:„cÃ8;Æ…Ð\Â8;Ånë,Á8;Ä|£EÀ8;ÃôÃL¿8;Â_s8¾8;Á²p½8;Àœ,c¼8;¿I‡LC»8;¾×€6º8;½&?Í3¹8;¼»0g¸8;»Æ.·8;ºÕƒ÷N¶8;¹T»Lµ8;¸¼C7´8;·3>;³8;¶j§L²8;µ#‹Ú/±8;´Òd67°8;³U3b¯8;²ˆ p®8;±úÏè­8;°Ú0 ¬8;¯Ö¾j1«8;®ùãª8;­7U')©8;¬«°Ö>¨8;«¤>=o§8;ªSä”l¦8;©2“Çr¥8;¨Ūà¤8;§‘É2£8;¦¥ú²¢8;¥îÜ2@¡8;¤Û»¦` 8;£€!FŸ8;¢¶ÅŸFž8;¡ó\_/8; ŽVå+œ8;ŸѺõ›8;žQO \š8;fÁáA™8;œun˜8;›7P¹—8;šS™–8;™m1i•8;˜ÌΔ8;—a“8;–›}j’8;•Ø”M'‘8;”9$'X8;“³â:c8;’€hŽ8;‘¢oX8;+¢ÉiŒ8;T9'‹8;ŽäÈ3Š8;y±DC‰8;Œß“\Qˆ8;‹Âb\‡8;Š˜X†8;‰ÖaãT…8;ˆµ¡Á&„8;‡ÇKƒ8;†8«Èp‚8;…è^G18;„‡)<€8;ƒä ª>8;‚¢¡‰J~8;')9a}8;€[±(|8;ÿQH{8;~(ÎAz8;}l™fy8;|k±x8;{f„Ÿw8;zÒG4lv8;yôÍïSu8;x´„‚ t8;wè.e&s8;vרz6r8;u–´ q8;tˆÔ¦pp8;s«Fú@o8;r¿jR$n8;q²ð„&m8;pv9çLl8;o"~›Nk8;nì¬ebj8;mÆ®si8;l y 5h8;kÿ‰M g8;jžJP[f8;iÍÖ¯le8;håŠ1d8;gT 2c8;fFQó]b8;e`”80a8;d‰Y-`8;c‰¢7_8;bk^8;aTÙÄ!]8;`­} 8\8;_­£.,[8;^5¸šqZ8;]xG÷2Y8;\±ÿ X8;[êÏEW8;Z%uV8;YÐu U8;X`îó,T8;W+öµlS8;V×ÝïRR8;U×ã!JQ8;T6¡HkP8;S€ìLO8;RÆ×T;N8;QnnPM8;PûL8;Oí"VK8;Ni{^J8;M@6&@I8;L÷8øQH8;KKª1)G8;J‡…¼F8;I§PRE8;HËFD8;G½®»[C8;FK“ÍB8;E5€¼ A8;DÛ¸Ì@@8;Cgñqj?8;Bµ_'>8;A56©=8;@ü£ <8;?KŸË+;8;>["‚:8;=“/§98;<‹*Û88;;ñÂô'78;:F†»-68;9‰žZ58;8öTm48;7;]38;6 Í28;5Ç™Ú18;4ˆ{ñ308;3ÙHr\/8;2Œ8.8;1Ôb P-8;0õé,8;/ebf+8;.¹°i1*8;-Pè¥P)8;,€c”$(8;+Éj6*'8;*\Qºg&8;)–Zp%8;(âõî$8;'ä5‘#8;&_’["8;%¦‚#;!8;$jM`J 8;#Ò©Ér8;"Ù§\g8;!itj8; Àtð8;jóÂd8;M=!L8; 68;ûm‡&8; )¸'8;y’:K8;.OÈ]8;³uGI8;7W)8;¡Z8;´¬[8;ã^RX8;æºâH8;² 8;¥•¯* 8;žÎA 8;îE3 8;ô*!` 8; 뜳+ 8; ètG8; x)J8; ~ûƒ8; ;W8;y|fJ8;DIþ_8;ÌnüJ8;Ùõ,8;5Ù_8;o´™ÿ7;Ë~Hþ7;¿èTˆ ” À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8Á9<âUüleÀ9<ádëÚV¿9<à÷‹ò¾9<߃«{t½9<ÞGì:N¼9<ÝgØ¡O»9<ÜàÅÚXº9<ÛÄÎ4¹9<Ú@ÌF¸9<Ùg¬rv·9<Ø8K¯D¶9<×<ö µ9<Ö'÷?´9<Õ­5^o³9<ÔÊôr²9<Óˆ´RA±9<Òfâö]°9<ÑFÿ¯9<ÐöÂ|n®9<Ïø @­9<Î(0é¬9<ÍÆÚÎ5«9<Ì,^Ã9ª9<˨yq©9<Êt‹B¨9<ɲV¢R§9<Ȭš•j¦9<ÇɈÀ ¥9<ÆÞQD¤9<Å™rE£9<ÄÛÇH¢9<ÃÑä&h¡9<ÂÿŸ 9<ÁG†*Ÿ9<À¢å ž9<¿ƒÜl9<¾&ÀÕœ9<½y­Y›9<¼‹XTgš9<»:ÜÕ9™9<ºZ…{6˜9<¹Š©†L—9<¸<Ûš–9<·…Úu•9<¶HSg”9<µ„â‘]“9<´’… J’9<³nÃV‘9<²â 9<±0è­89<°ËÀÜŽ9<¯˜¥ 9<®±úxjŒ9<­z›V^‹9<¬ã äŠ9<«KëÊ!‰9<ªÔˆˆ9<©(%‡9<¨ÆA.O†9<§ )S…9<¦|se<„9<¥r“Aƒ9<¤/ÿ…L‚9<£š¶hf9<¢j‡°!€9<¡(Ì899< ÷N)~9<Ÿìw5F}9<ž("#|9<¯Í{9<œþ;(z9<›Ô×7y9<šBV;x9<™¸Œ>+w9<˜ó€Î+v9<—Ù#Fku9<–e|Pt9<•`]s9<”£zr9<“…Z¦vq9<’jEp9<‘Q¹»o9<µ Án9<e®Hm9<ަ–ÎOl9<Ðy‰Xk9<Œ…=ÒIj9<‹Ç—”2i9<Š—H``h9<‰T®ì0g9<ˆÝ£f9<‡âP2Me9<† Æsd9<…3Mc9<„£ž=b9<ƒ~£°Ra9<‚ ¤`9<õh€_9<€ívú^9<L©€b]9<~¾ìãV\9<}F2t[9<|à‘ Z9<{jÆGY9<zS øQX9<y“ãpW9<x5!ÌTV9<wß9 QU9<vá¯(CT9<uSÝómS9<tÑLåoR9<sòsQ9<rª¶"GP9<qå'm%O9<pàevN9<oÞþ9M9<n8Å^oL9<m1åK9<lë•ñ+J9<kµ÷-I9<jK¢[4H9<iÖb‹jG9<h?²F9<gŠü!E9<fþ"ltD9<e­5š.C9<d,¶4B9<c½ŽË*A9<b7Ò.@9<a¨þ ?9<`lxV>9<_T&Õ=9<^óç9"<9<]MBÍh;9<\39xi:9<[sæì99<Z²Ç}N89<Yã× ^79<X[X69<WÇ=lF59<V¨&Ñ&49<Uë$xJ39<T94u29<SË·è)19<R­öC-09<Q¯Ö+]/9<Pôü}h.9<OƒÍ0\-9<N倿[,9<MÇ›8+9<LvE*9<KÁ¥E)9<JØÓTm(9<I’³X'9<Húc•c&9<GA” I%9<Fv¹ýv$9<Eè)¸#9<DQ ‰K"9<Câéü!9<B´®ùu 9<Aiàd9<@!’9<?€M!9<>šzO9<=Paj 9<<eùÆ9<;ì‰9<:;±<79<9#\ã 9<8‹H9<7Ýt9<6?.49<5Š]ê9<4×N 89<3*½HH9<2ÊUl9<1à5â/9<0 ˆY9</$ÛyH 9<.<‡|B 9<-äȘ! 9<,ÇÕå& 9<+—?´# 9<*ëêX9<):ÝO9<(ðMu9<'”ÏX9<&4ô9<%26Þ]9<$Áhj9<#4­¬T9<"„îJ9<!Ð(ÿ8< †þ8<¯ð=ý8<DcKü8<Bãû8<^€»6ú8<^BT:ù8<åÁägø8<@¡0÷8<´};ö8<!Lõ8<Á~ô8<÷¾ó8<Écfò8<¤(0ñ8<¤B›dð8<)¿7ï8<^”!î8<¤GÈí8<Çqã?ì8< µ/>Në8< §¶œ%ê8< ˆêé8< Ý*é:è8< ¾ænç8<Òf–Væ8<ÿõ|7å8<®GMä8<ñÜwfã8<¥&Sâ8<ÖýR8á8<»oú=à8<Ùþ×f°o” À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8£:=â Ð¢:=á`9ù;¡:=àbW :=ßßoñgŸ:=ÞMblž:=Ýâbþt:=ÜÉß0œ:=Ûî" :›:=Ú[ü Kš:=ÙTúL ™:=ØIòçT˜:=×¾s”5—:=Öû½p[–:=ÕhìƒO•:=ÔxqÝn”:=Ó÷V“:=ÒÜÔÀ’:=ÑÈçl‘:=Ð06::=Ïý=Ô:=Î⢎:=Íöô£:=ÌŒÇDJŒ:=ËCü¾‹:=Ê XŠ:=ÉØg>‰:=ÈGôN ˆ:=Ç"ú;e‡:=Æ&·Ý†:=Å,œØ…:=Ä)±„:=ÃÀôŃ:=Âk*G‚:=Á3“TY:=Àî7€:=¿`?ú1:=¾‡fð)~:=½t‡’'}:=¼£ÄW\|:=»ˆy{:=ºXÐ%z:=¹ády:=¸E–ì=x:=·úŸyw:=¶ŒÃGv:=µa©õu:=´Ñç¼St:=³Þ*"hs:=²6%ãlr:=±:A–q:=°q ÅCp:=¯Ÿ:{Yo:=®õ{½ n:=­tïÜ m:=¬û›¥tl:=«ߦjk:=ªò Š%j:=©Xvi:=¨øH*Uh:=§eVMrg:=¦Åã7f:=¥õ±ò-e:=¤ªšé]d:=£²+0c:=¢¬,d/b:=¡¢fa:= ¼ØL`:=ŸêÝv_:=ž·€^:=¾óV]:=œX†ÂN\:=›^0˜ [:=šU‚Ö4Z:=™åìö;Y:=˜(Lò'X:=—­€ÖVW:=–+H V:=•—¦&RU:=”m ]$T:=“–êgS:=’EYXR:=‘üè7Q:=£2 \P:=iÝ-O:=Žƒbˆ]N:=áC/\M:=Œæ]ëL:=‹Œ^r*K:=Š'ÈWJ:=‰—7'I:=ˆ»»cH:=‡h™³"G:=†IÄuF:=…4jNE:=„õ°?D:=ƒÂNíC:=‚†¯þ B:=úãmA:=€’ëé<@:=½Y?:=~l<">:=}s™Ë=:=|6xÛo<:={¨•5U;:=zºÔ®/::=y‘9M9:=x@`y28:=w”Áp7:=vSáMq6:=uq™ªc5:=tóK’.4:=s.ð0*3:=ryL•Q2:=qÁ‚w1:=p0 ò0:=o÷3/:=nàg.:=mäZéd-:=lÑ¢,:=k˜5+:=j¹©(*:=i³/=):=hr|[Z(:=g‡ÊÖZ':=f„kA&:=eû`©I%:=d0÷8U$:=cÊ(+#:=b§üJ":=aR*!:=`†6x` :=_Ä:D:=^¹XRZ:=]¤>Ú":=\i5¼":=[%§Î6:=Z?ìèR:=YÎZF:=X¡uƒA:=W$ñG:=VøL:=U2]¶.:=Tþä>:=S‚H:=Ráeªr:=QLD>+:=P%a:=OH#ˆF:=N*I@<:=MP :=L&¥îQ :=K3ÛE :=J2+ùr :=Iv² :=HWÓ:=G¶[U:=FnMâu:=E¥+:=DC†ÓA:=CÈlß:=BfG:=Aâ÷=:=@\a!:=?“±ƒ#ÿ9=>eæ&Gþ9==šníSý9=<„Å€lü9=;ûË û9=:Ö ï3ú9=9oÍù9=8% Þ5ø9=7v˜Ëj÷9=6Q‹A3ö9=5³46]õ9=4\çwô9=3™B",ó9=2!3fò9=1Ú'Dñ9=0!Ïkð9=/÷nnï9=.ëƒQTî9=-°‰âÚxH„;>áÞ‰P.ƒ;>àFµ½‚;>ß´¥Z;>ÞÎÔÐT€;>ÝYóDR;>Ü×É]/~;>ÛŒCÊK};>Úð˜M|;>ÙÙWNt{;>Øí5¨0z;>×ìÎËey;>ÖãçÏ=x;>ÕMƒw;>Ա̳kv;>Ó*I@u;>ÒZòCt;>ÑÅQus;>Е@Ur;>ÏðGIq;>ΈK&p;>Í&ylo;>ÌÛ…CPn;>Ë pm;>ÊMê,l;>ÉÁ–kNk;>ÈNP(j;>ÇT¼-$i;>ÆÚ– h;>ÅÀ g;>Ä[ZòZf;>Ã&Ó©(e;>ÂIµPd;>ÁíU®Bc;>ÀÜo2gb;>¿B‘ a;>¾iZ´`;>½þE2_;>¼Ÿ "^;>»^ú^];>ºöo~6\;>¹¡² -[;>¸;–MqZ;>·¹ž&Y;>¶óÿJ6X;>µìQ˜mW;>´•ëV;>³jϨ=U;>²«†OT;>±n[rS;>°V;-R;>¯Š á,Q;>®ÙŽëhP;>­ï×O;>¬A¿wkN;>«ùÁ4VM;>ª1¼ÔAL;>©ÎK;>¨øõp@J;>§i›"[I;>¦°Ì+H;>¥oDG;>¤J÷¬8F;>£η®GE;>¢„ûù=D;>¡Þií4C;> £eB;>ŸfïA;>ž*ür@;>þî¶d?;>œÇ[âd>;>›=Ñî=;>š­F‹n<;>™NDµ;;>˜$–¤:;>—ˆÄ×o9;>–AË’8;>•&A®v7;>”Vym6;>“ z$"5;>’”`¼4;>‘ùfc+3;>Iáž82;>á̶1;>ŽèÆ870;>´ð\k/;>ŒÌÃ.;>‹È´ç]-;>ŠÜ•ÂK,;>‰‰ñ,(+;>ˆ¤u"*;>‡ã¨[);>†ëœQ(;>…l¿';>„+4ÊY&;>ƒk !%;>‚×Ó&9$;>¥(c#;>€ŸÈB/";>ÊX c!;>~P}y-a;>|Ïq;>{%éu;>z X\;>yýè+;>x2Kj_;>w!å£s;>v‘àñV;>u\¦?\;>tÖ,»`;>s³“ ;>r4`k;>q•„wD;>pá”(t;>o ¦†P;>n×Zš;>mwnÌd;>l©r;;>kú€ãg ;>jèâM ;>i³¶ ;>h·tJ ;>gÎ1u0 ;>f•MÎA;>e† gY;>d~6ýh;>c OM;>bT€7 ;>a&EKE;>`±Ãh;>_+º­n;>^k Õ;>]æS[ÿ:>\òÊ~þ:>[í»é_ý:>Zlœo6ü:>YÖ¤*û:>XI¸èú:>WÞLìIù:>VKhø:>UB¨C÷:>TÓ’ö:>SðÙõ:>R¾)Ý$ô:>Qi&\ó:>Px•ò:>OÝmì.ñ:>NÚ…éð:>Mõù»ï:>LC ™fî:>K϶mí:>J]Tì:>I2ýë:>HO­>ê:>G‰Ò´ké:>F1‹/Oè:>EXñ±#ç:>D[…Á[æ:>C*Z¿å:>Bº:v@ä:>A–7o ã:>@9ï.Xâ:>?~â á:>>¯Iä$à:>=&Tß:><£MÞ:>;ã¸cÝ:>:‹2KÜ:>9¤ÚmÛ:>8 ºÙ9Ú:>7[x;MÙ:>6ƒœnØ:>5il¶×:>4xøÄÖ:>3áO&mÕ:>24¨oÔ:>1ƒ/ŽoÓ:>0šõˆ?Ò:>/ c±pÑ:>.×0Ô?Ð:>-€GÏ:>,€»õUÎ:>+•ž_Í:>*GÌ:>)÷ûË:>(.MóÊ:>'1p<É:>&žJqZÈ:>%ÄMRNÇ:>$ñþÅ1Æ:>#"çÀ_Ä:>!ÉÚDÃ:> ÛrUFÂ:>!ú`8Á:>‘óÀ:>›ó[V¿:>‚)ß)¾:>0NE<½:>„%tv¼:>¢M#9»:>ãvGº:>¢Âu¹:>ÚËC¸:>õ\l ·:>GZ-¶:>†e,vµ:>«þ¹/´:>‰z>o³:>Ч»²:>B¦kW±:> a°:> ‰ú:¯:> fѪO®:> ùÔ® ­:> Yç¿7¬:> i“Ö8«:>2ª ª:>bò6©:>Ý_Çe¨:>ÓÉ d§:>ay5U¦:>Ň_'¥:>ŒÕÑC¤:>?/g6• À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8g<?âùPnf<?á;2\e<?à¤M/%d<?ßÐeç-c<?ÞE‹÷Cb<?ÝüçWa<?ÜÍ`A`<?ÛÝÍ_<?ÚÉ^:^<?Ùú–‰]<?Ø:ºòV\<?×zNk1[<?Ö¶8Z<?Õ_VY<?Ô8j¶$X<?ÓáKuFW<?Ò{V<?ÑÈ0œpU<?Ðü½?ZT<?ÏÍ£S<?ÎÙ»ScR<?ÍÕžQ<?̸;‰uP<?Ëa”˜,O<?ÊcÖN N<?É?bXM<?È4M" L<?Ç;M"ZK<?Æ;—?J<?Å­wI<?Ä@€QH<?Ã)ë/@G<?Âõ:šKF<?Á§ùÔDE<?À¦D<?¿hy*3C<?¾3ä1B<?½ÔÉ·A<?¼£ë1@<?»Nµò?<?ºxàP><?¹Û¥œF=<?¸Bä´ <<?· þø3;<?¶äû?:<?µoÍO+9<?´å!kc8<?³]ß§g7<?²ïtH 6<?±ìè H5<?°f%P4<?¯w'»63<?®¬þO2<?­9ü&1<?¬-Gv 0<?«(b'/<?ªgË.<?©$4< -<?¨úÌÐX,<?§îãœv+<?¦r+*<?¥™²3)<?¤%æ‰1(<?£Áo'<?¢t£'&<?¡/;î %<? Å$<?Ÿå.?#<?ž\}œ`"<?ÇÙ¨a!<?œ ess <?›Øu\<?š÷©\><?™ÓªšX<?˜»pÃG<?—†°Í<?–€X<?•ù8Ê<?”÷¹WN<?“xáÂM<?’?êPA<?‘,½^s<?JàD<?„u#W<?ŽÒ÷[<?:<?Œ.äÆE<?‹y´c<?Š VðW<?‰`²% <?ˆÉýE <?‡° <?†& <?…öª›% <?„Ç3U<?ƒæc<?‚ÔQ‡"<?þG§<?€Ø]<?ƒ<?~Ð/L#<?}9ºØ<?|Ê<?{pùŽ&ÿ;?zSR“:þ;?yÁ7ù,ý;?xŠ«@ü;?w zGû;?vºâ®Pú;?uÊ.Rù;?t.~7ø;?s»ca÷;?rZÅoö;?qAÍ õ;?pV‘\ô;?oY×-bó;?nÿP3ò;?mÍ1¨ ñ;?l°J†Kð;?k}¥ÞDï;?j;­î;?iÒRwí;?hÅòsì;?g–²àoë;?f"Yê;?eÉãué;?d·˜rè;?cQJxç;?b.¬kæ;?aŸ7^tå;?`f–zfä;?__Êòsã;?^çûzWâ;?]\a_á;?\á]à;?[KÛNjß;?ZéSÞ;?YƲeÝ;?XÙ üÜ;?WþmfÛ;?Vo_aZÚ;?Uí3s5Ù;?TewPØ;?SîÔ ×;?RBÁEÖ;?Q‰óégÕ;?P©Œ§Ô;?O?ÖeÓ;?N’„˜Ò;?MÞ÷,Ñ;?L¸("HÐ;?K¤Žd Ï;?J¯ùbÎ;?Iü$DuÍ;?Hà)~tÌ;?GÑ¢Ñ[Ë;?FšÓR Ê;?EyouÉ;?DêG3/È;?CÏuÓnÇ;?B¸;ãÆ;?A 5tÅ;?@~ÇÙÄ;??š´adÃ;?>Tx† Â;?= œnÁ;?<rÑRZÀ;?; 4d¿;?:U.Q ¾;?9ìi¾Q½;?8™öz¼;?7oqŒM»;?6ª·çfº;?5ÜR_¹;?4Wõbm¸;?3Âd W·;?2÷nQ`¶;?1Ë(Îaµ;?0È´´;?/ì‰i^³;?..þ«²;?-¼—J±;?,Åø#°;?+ÞêÆ7¯;?*aQñj®;?)ÈDDv­;?(çZž,¬;?'Ëñ´«;?&_=ŒXª;?%á¿'©;?$P®ùW¨;?#·/§;?"µP#s¦;?!cRs¥;? (ã ¤;?Ký‡£;?ÅÚJc¢;?†g”¡;?q¹M ;?æPú4Ÿ;?AF bž;?½r^.;?_Wœ;?èRÇ›;?ä<6vš;?‹Ì” ™;?ùMl9˜;? åç—;?*"R–;? ÖJ•;?'‘M;”;?P§O“;?ZÚWV’;? ýG $‘;? ö( ;? •_45G=@àüŸF=@ߦ¬)UE=@ÞÛ¬cD=@Ýâ·wsC=@Ü»åæ?B=@Û£ ÂA=@Úc€( @=@ÙeåB?=@Ø»î~r>=@×ÌéÈ==@Ö[q±<=@ÕQnAq;=@Ô.þK@:=@Óßbv:9=@Ò¯-Z8=@ÑØ|Z7=@Ð¹Ì j6=@Ï9ŽsL5=@Îþ˜)4=@ÍXòër3=@Ì ·¸02=@Ëõ\·1=@ʆ`s0=@ɸ%;/=@Èþ ?.=@Ç¢ÓF-=@Æóags,=@ÅŸm^+=@ÄW&æh*=@ùuî )=@Âþ‘Ð(=@Áã\'=@ÀêÆB&=@¿9Œ¡%=@¾€7Oh$=@½V” u#=@¼çÅx"=@»–*•n!=@º t^, =@¹j€==@¸ž²J=@·|¢pR=@¶¡@çk=@µU{]=@´&* G=@³v30=@²ÚãÜ:=@±anUn=@°0׺=@¯=@©^±­0=@¨K"U=@§9ìxR =@¦ oÃg =@¥>C‰N =@¤ή« =@£Æ/ =@¢š?C)=@¡”Æk=@ PZ^^=@Ÿè ïp=@žM ®H=@~E;=@œøªâ#=@›Že#Q=@šÇÓ‹ =@™Hþldÿ<@˜UxÐ þ<@—+ Ë;ý<@–{1ž"ü<@•ÄO€Pû<@”G\aú<@“Ò§j9ù<@’ÜÜø<@‘ÞE&÷<@þÆ"ö<@í°¢õ<@ŽŒÍ÷-ô<@˜ 3%ó<@Œšóèqò<@‹‹ÿžcñ<@оÕ@ð<@‰ >™ï<@ˆk=ÍFî<@‡Úi”Kí<@†¤F%ì<@…:|ukë<@„v?5ê<@ƒ°2‰/é<@‚G:óEè<@Ó#Eç<@€ðõ Mæ<@¿NÀnå<@~¶q¯ ä<@}°@«6ã<@|8íRFâ<@{œZöGá<@zÍÌÎAà<@y¼…1ß<@xä°i'Þ<@w¨i`Ý<@v5s£5Ü<@uhª€eÛ<@tÁ©£Ú<@s¢+:Ù<@rQ ToØ<@qyqÉt×<@pSQïÖ<@obŽAÕ<@nÚÞH\Ô<@mµOkÓ<@l ÂÑÒ<@käÿÀkÑ<@jhΈXÐ<@i0URÏ<@he*ŽÎ<@gódòlÍ<@fóA‚%Ì<@e£¾gË<@dÀбYÊ<@c‡hNÉ<@b£s8È<@a@µaÇ<@`†am(Æ<@_«î;Å<@^ãlÄ<@]¨0ÍÃ<@\¹©Œ Â<@[$C›XÁ<@Z\ÝsÀ<@Y{š9¿<@XçsÅI¾<@W’Gi½<@V2bm¼<@UGÌ»<@TPÚJº<@SPªÅ-¹<@R ’€¸<@QÅ/Õ·<@P⟼$¶<@Oör½gµ<@N%çÆ´<@MïzA³<@LÕ2U²<@KtýËb±<@J= -°<@IÂÿª&¯<@H3”@®<@GlVON­<@F†¥.¬<@EPC«<@Dû%ª<@CŒºs©<@B]A…!¨<@Aß0 §<@@`b¦<@?½Äv¥<@>Kçê¤<@==££^£<@<=ÏÕ¢<@;Ê•®T¡<@:düñB <@9 §µ0Ÿ<@8Bmž<@7LJœ?<@6§9œ<@5Š>«p›<@4n š<@3ª³ø'™<@2¡H˜<@1ó2xZ—<@0wŠ–<@/°}0'•<@.²ín”<@-½Õ‡.“<@,Ai‹O’<@+ÑPñU‘<@*AâÑE*>Aáè·Mo)>Aà·T#(>Aß,Ù'>AÞlÜò?&>AÝÒéŠS%>AÜ¥ÏW1$>AÛ<ãÂ*#>AÚî4">AÙÄH‡N!>AØx”ko >A×PÄ.>AÖ7æ>5>AÕáÛÊ>AÔ¡ø¼f>AÓNâ96>AÒ^l”>AÑôUÃ*>AÐñÖ>AÏ,xD>AÎ!Òé#>AÍú¶4C>AÌ{×N>AË3ü³^>AÊײª>AÉЧÍs>AÈo€Š^>AÇdUZ>AÆÚa¨%>AÅ^žE >AÄnY[L >AÃÌä7C >AÂ}ÛZ/ >AÁåþÈF >AÀ_ð¶G>A¿.ù/>A¾ÐËœ>A½àZ>A¼ÄâŒ2>A»âÍ)>AºbH>A¹–¸ n>A¸ëA·è—:vÿ=A¶ƒlhþ=Aµ­¢ù;ý=A´] '2ü=A³0êQBû=A²ÓƒÙú=A±÷³8ù=A°±>)1ø=A¯îik<÷=A®#ŠAö=A­¬Ã¶õ=A¬Ã{)ô=A«ÄâŠó=AªöE%Nò=A©_"ìñ=A¨£ ú ð=A§¦Yï=A¦’‚Cî=A¥ŠZ’í=A¤mˆ¶rì=A£Nâ*ë=A¢3,(ê=A¡~iædé=A jªØYè=AŸîýrç=AžS¸½@æ=A.¾!;å=Aœcv">ä=A›¥^Cã=Ašµ4â=A™ÑHCá=A˜‹ŒDà=A—S&ß=A–Ú 5Þ=A•fëHqÝ=A”«(Ü=A“å­£AÛ=A’ÓC¿mÚ=A‘{rÙ=A*îA<Ø=A_!ÿ"×=A޶Ç?Ö=Adír^Õ=AŒ!ØÔ=A‹èÈ´kÓ=AŠÍŸ¨Ò=A‰°gÑ=Aˆ¡%^Ð=A‡D4NsÏ=A†u»›TÎ=A…ïÐ Í=A„äˇ7Ì=Aƒ%5¹Ë=A‚+±($Ê=A<ì¶É=A€‹†QÈ=A®Yz&Ç=A~ í4Æ=A}‘-ß:Å=A|feMÄ=A{À/PWÃ=Az÷½XEÂ=Ay%5JÁ=AxÓmñÀ=Awõ²j¿=Av’§‰¾=AuzÄëm½=Atº¿a¼=Ast"ÀJ»=ArPýàQº=AqÆ”U¹=Ap=In¸=AoÎÜGK·=An—MÊ[¶=Am()µ=AlG¬ ´=Ak‰ÿ³=Aj¥ˆ+²=Ai²ýTP±=Ah_hÆ;°=AgO†âD¯=AfÃÝ`®=Ae©ßЭ=Adš­h5¬=Ac}ëãt«=Ab wÿ`ª=Aaúí¦©=A`”‡JP¨=A_[mÒT§=A^š¼l¦=A]ô0e¥=A\ìÁ^B¤=A[MÜQ£=AZ“vF¢=AYZ=;¡=AX;EPe =AWÿ/Ÿ=AV*Ç ž=AUô¾’'=AT7ÙQ8œ=AS‚ ™›=AR0Ûopš=AQ7!E ™=AP‡0¸=˜=AO N:U—=ANb3]T–=AM”Bp4•=AL)+ÿA”=AKU–T]“=AJï­f’=AI·ˆõ"‘=AH´Øy=AGFª.c=AFˆü/Ž=AE¡¿Á=ADéc™$Œ=ACÅ - ‹=AB_~ !Š=AA VåL‰=A@o«sˆ=A?™¶ß‡=A>a7$4†=A=’„#$…=A<Æ›Ác„=A;utwƒ=A:/v0‚=A9G†½==A8çÓân€=A7§¦q=A6ÃwX.~=A5¸ .}=A4ûƒ@|=A3"5{=A2Ô-z=A1óíG y=A0ä";x=A/ 1>nw=A.¥FøDv=A-r¢ u=A,¡½ÚMt=A+©å~s=A*. $kr=A)­ígq=A(\F•>p=A'ÃòÙ"o=A&AÕÖtn=A%I¡éNm=A$Uòîpl=A#ÆÇ@k=A">Áj=A!ݺ…ei=A Ò®S.h=Aì¬g=Acó!f=A&e=A4Êd=Aˆcôcc=Aƒeb=AçÖ@a=A¬¶L`=A¡ê"_=A,6ï^=A –Î6]=A>jú\=AÇä6[=AM;…;Z=ArgkY=Alsc X=Aü`yAW=AD+V=A Œ¤"]U=A L3<T=A k-JHS=A ÓkLjR=A 9áfQ=Am” )P=A{ –nO=A ‚(6N=Ax7i M=Aô¬"OL=ARðIrK=Az¬’CJ=AS™Ox_– À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8 ?BâŸÑP ?Bá‰VÞ ?BàJC?X ?Bßh ¤ ?BÞ¾”‚?BÝ=9?BÜ…,D[?BÛÛÿœ?BÚ'S9?BÙcc§Q?BØçÖl?B×Übç[?BÖ»ä<?BÕéÝ4ÿ>BÔaš%þ>BÓOüný>BÒ~‘qqü>BÑRã_û>BÐŒb*Oú>BÏæÂ5ù>BÎ+ ø>BÍ × ÷>BÌÎLö>BËp…8%õ>BÊ‚-`+ô>Bɇ&Fó>BÈõl-ò>BÇk²@ñ>BƧG±*ð>BÅ1ïï>BÄ«Î,=î>BÃ7Xâhí>BÂËÁ[ì>BÁ .*ë>BÀãt•-ê>B¿ã”åé>B¾ÂÛè>B½!Éœ ç>B¼ó„üæ>B»K„‡5å>Bº¨[Ãä>B¹ÿïø7ã>B¸ÆM6â>B·kšEá>B¶j!¡:à>BµÄ²=ß>B´ÞÑÞ>B³—Îm<Ý>B²B¸SÜ>B±€‹ JÛ>B°®·,Ú>B¯ž9^Ù>B®Š=ßPØ>B­G¥[9×>B¬{¬PoÖ>B«{Õ>BªÞ»tÔ>B©Ã}Ó>B¨ÀwIHÒ>B§qƒ9Ñ>B¦f-³Ð>B¥ Ï>B¤SãL;Î>B£è,vÍ>B¢÷kNÌ>B¡Á«ø#Ë>B ï£kÊ>BŸËщ`É>BžylÈ>Bõ(9NÇ>Bœ…pvÆ>B›Bš”btÄ>B™„ÐoÃ>B˜©ûK%Â>B—ÓæhuÁ>B–‚íßaÀ>B•B§æL¿>B” ¶¾>B“¤*l½>B’öávp¼>B‘Ñœ‘j»>B#!øeº>Bs¿3¹>BŽi鿏>B¸.B]·>BŒU— L¶>B‹nÌ¥Yµ>BŠ\äs´>B‰#×F*³>Bˆ4ít²>B‡~=±>B†¦4´°>B…’7T¯>B„ù®>Bƒ+.ú­>B‚G>/¬>Bûzå«>B€EOOaª>B=¬3%©>B~`ZáP¨>B}„’Ÿ§>B|”Y!¦>B{ÁZv¥>Bz–ð ¤>BygèšO£>BxSƲe¢>BwÞnël¡>BvKY¥S >Bu¯ZŸ>Bt€ñ1ž>Bs‚·<>Brh³ªLœ>Bqkòµ›>Bp¿é^š>Boû°v;™>Bn[Þæ`˜>Bm2ÀÄ!—>BlP,î[–>BkßãS`•>Bj|¢’ ”>Bi‹ü˜]“>Bh…㯒>Bg{º‘>BfJj_>Beþ5Ýh>Bdærà,Ž>Bc ’ë >Bbš´9CŒ>Ba¼¯Z‹>B`©R¤Š>B_žÞ¼Q‰>B^äoˆ>B]-*I‡>B\nI§†>B[¡»:…>BZ#+s„>BY¤®XIƒ>BX^}¹f‚>BWÉ9î>BVGøäF€>BU“±t>BTeôU~>BSm4}>BR¨|>BQëþ$={>BP«¾Vz>BO}ú’y>BN¶2x>BMÄÊuw>BLY¤[v>BKœØu>BJAdut>BI†As>BH•'Qr>BG?û~Uq>BFc£%p>BE$JfIo>BDb?Gn>BCüi²hm>BB½Àbl>BA|á¯1k>B@/•Aj>B?cÔ©Wi>B>v4Mh>B=Ê.„>g>B<CÒ¶(f>B;Ré<\e>B:^¶sd>B9H~=ic>B8cÙ 9b>B7Úõ°5a>B6ë¬U`>B5zõÝ_>B4Â}«1^>B3“­q]>B25áò'\>B1æèhX[>B0#Ž$Z>B/µYY>B.ƒÀ&X>B-Ó¾›HW>B,kÿ+V>B+åU>B*#TšdT>B)qݨS>B(Ý»7OR>B'g«&4Q>B&h›^P>B%åñÌKO>B$ÍÔœ'N>B#XìV M>B"jÿ°[L>B!ef‘K>B !ó.J>B¿ -hI>Blx<H>Bûç®6G>Bï#F>B„TøCE>BC“D>BêãB!C>BxB>Bq=;7A>BD¨ g@>BÛ(xP?>BpM>>B€_™=>Bc(BX<>BPc¾J;>BI Z:>B‚LwW9>B°þ6[8>B ú*V$7>B $àâG6>B ¼¨s05>B  TC 4>B ÷Éj3>B›Ö‰ 2>B1DT1>B{†Qg0>Bhn %/>B8~™R.>B«r¹j->Bø¶=,>B&®yo¸Â– À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8ï?CâߪXî?Cá1aÜí?Cà芕qì?Cßt´Fë?CÞ§yFê?CÝp'®té?CܰüOè?CÛŽaÑPç?CÚgÿEæ?CÙØg5å?CØ{ÀÓ'ä?Cמnó\ã?CÖ”ÂÇ.â?CÕ‰µiá?CÔïˆCCà?CÓÌê`ß?CÒp—Þ?CÑ}Œ<Ý?CЯsLÜ?CÏ¢•sÛ?CÎ]D%Ú?CÍ@—œ`Ù?CÌžÈ=Ø?CË©²f×?CÊžTµÖ?CÉÓŸ5Õ?CȹNÓ,Ô?CÇÅm XÓ?CÆì'@ Ò?CÅxlÙÑ?CÄC5Ð?CÃj&Ú@Ï?CŠð˜4Î?CÁx÷tÍ?CÀÄd.Ì?C¿7ÝlË?C¾ (™/Ê?C½Ø€ZÉ?C¼¡ý(È?C»È$W_Ç?CºDMŸÆ?C¹òžï5Å?C¸¯å¯Ä?C·È7EÃ?C¶¦‚SÂ?Cµqw·Á?C´«EÀ?C³T7¿?C² Íf"¾?C±opå1½?C°|ÙWU¼?C¯´Ó¨*»?C®¡BçJº?C­Ê(¹?C¬ïµÞ9¸?C«ÙzÊ4·?Cªç +q¶?C©Bâùµ?C¨ªÞÜ"´?C§•›A³?C¦îvU²?C¥£+\8±?C¤¦ v°?C£oMñ>¯?C¢nσD®?C¡ì.{K­?C –ßC¬?CŸA—wG«?Cž”3Sª?C!–Cj©?Cœ?§E¨?C›{©Á8§?CšØŒ¢Y¦?C™=nø¥?C˜« «v¤?C—ĤK:£?C–Q>†[¢?C•®:¸¡?C”Ø»; ?C“lónŸ?C’ÎÁ3^ž?C‘²°O<?Cűÿgœ?CÈÇ›?CŽä°š?C®Óä™?CŒ0œí˜?C‹fv/—?CŠTf¹;–?C‰G¶a•?CˆÛŠ%/”?C‡~„“?C†5ð k’?C…¹o0>‘?C„iKGr?Cƒ-ÌAt?C‚Y1oŽ?Cæ“ÑP?C€(XÐŒ?Cн‹?C~H ¡Š?C}ÛЮ2‰?C|ÐL9ˆ?C{èV‡?Czíç.†?Cyüåòb…?Cxì|lv„?CwãDÈcƒ?Cvà º,‚?Cu&Ÿúu?Ct§Ûó€?CsúH?CrÎÿ<~?CqÞH}?Cp˜+/|?Co~θf{?CnZa[z?Cm)él'y?Cl‰ëix?CkÕ£4%w?CjÐêÝmv?Ci#¯*hu?Ch st?Cg¸ns?Cf`t4Fr?Ceƒ·u!q?Cdtqrp?CcBtTo?CbŠ0@n?CaLWFm?C`G§Xl?C_4µhk?C^ï j?C]ÔÊŽMi?C\'ÿ h?C[ Bg?CZÙ86f?CYÆÝqe?CX·ñUJ?C=a!®I?C<Î=v\H?C;BÆ•QG?C:oÒéF?C9«×Å&E?C8lØðD?C7Ú+C?C6Ó´TIB?C5þ‹%gA?C4\v >@?C38Ã-??C2D3#>?C1ÚV=?C0ÅÄj,?C ¤ ?Câ]×W?CÌ(t?C°² U?Ca0w,?CF.?CºEí'?Cõ}6à%— À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8Ñ@Dâu uÐ@Dáo¿@DÐ vÂZ¾@DÏrò—[½@Dη&-i¼@DÍ—E;u»@DÌ€ßÈ`º@DËÖ½¹@DÊòÞ_o¸@DÉTD·@DÈ@‡A¶@DÇk!µ@DÆ L¯0´@DÅ•uг@DÄKRxG²@DÃÿú;±@DÂ`Øn°@DÁ8vU¯@DÀ’äR®@D¿9.7)­@D¾àM¬@D½5]«@D¼Y0 lª@D»…ú»%©@DºS®LX¨@D¹1b§@D¸yQv¦@D·At6 ¥@D¶èg8¤@DµG)£@D´ E}`¢@D³³bh ¡@D²-% @D±uļ\Ÿ@D°ñ¦rž@D¯âhX@D®¥fÛœ@D­,›ÂZ›@D¬–O¾Fš@D«‡O>_™@Dª³‹ŒL˜@D©ªŒü'—@D¨ ÑÞ?–@D§áék•@D¦5”@D¥H®7i“@D¤q¨8’@D£'>mS‘@D¢")C@D¡\q+w@D à‘c4Ž@DŸ[·Æc@DžâìE"Œ@DQ,Ø ‹@Dœ þŸ&Š@D›:K‰@Dšœ*ˆ@D™_ˆ M‡@D˜7Ãî#†@D—6©*…@D–íâ5#„@D••€Àƒ@D”ÀO™‚@D“LP)%@D’Ð]áV€@D‘Å B@DK_~@D«Ò}@DŽz6|@DëÂÁ{@DŒg~_z@D‹>ØWy@DŠuïàx@D‰Ö¶ÜMw@Dˆ,ÇA3v@D‡ óã7u@D†&”&t@D…=²8s@D„G¬ r@DƒÇö—Vq@D‚{„åTp@De‹*o@D€O¹&=n@DÏFeNm@D~2$îVl@D}¬ ËPk@D|Ûv''j@D{é*¬vi@Dzr¥Ô)h@Dy¢B. g@Dxuµf@Dw &Bue@DvŶ$d@Duû׌rc@Dt7Êb@Ds²²9a@DrKü `@Dq`êÒi_@Dp¶À¨u^@Doce“-]@DnuÓà \@Dm[¸H[@Dlêv–$Z@Dkh2SY@Dj°"Î'X@DiÅqW@DhÆFÚV@Dg^1¬FU@Df™L[T@De¸Ú³kS@Ddx=qR@Dc«=€Q@Db\ÕÒJP@Da¤C‘cO@D`ôÏ='N@D_IwWM@D^:dö&L@D]:4ùK@D\tuœ^J@D[ÑÈ+I@DZÜOsH@DYyq¸G@DXŸïwaF@DW˜;bE@DV°Û€iD@DU à,!C@DTü…›:B@DSè*®RA@DRêò^@@DQ&eð,?@DPyîü>@DO ×ã.=@DNà8ê <@DMÓì*;@DL£IX::@DKR…WX9@DJ~ÑÂ8@DI \$7@DHçó:-6@DGï‚T5@DF\á 4@DEÔ-3@DD·xV2@DCÜj1@DBißš<0@DAº›D /@D@Õ«p.@D?håcr-@D>]¨ß ,@D=úäA+@D<2·…A*@D;ʇ)@D:É)m*(@D9ÿK@'@D8 '&@D7ȰÒ%@D6¶]p9$@D5Ö « #@D4o<±I"@D3Ý?0!@D2F, @D1¥•+V@D0j!Ák@D/ŽGÈ?@D.VD@D-–Iü@D,j‘+@D+Vv9@D*°úz@D)f%@D(8¡?u@D'I½…-@D&jB°g@D%ûe36@D$=ĵq@D#ŽlA@D"^ód@D!Û§,.@D 7.Þ0@D“´q @D1Úv @D2¨: @D´ ©` @Dyš @DI±Ú@D?ñô@DXWD@DÙb @Dô¤@DÊ:»j@Dr²‚;@D·xsC@DPzçB@DÔ×ÄUÿ?D#¶«þ?DÇXQý?DåNü?D X+÷*û?D WIl;ú?D gÑ*Mù?D ©·ªø?D <; ?÷?D 3ö?Di´C&õ?DžrÎ ô?Db‰Có?DÊ_Žò?DËÒ˜ñ?D©Íµð?D†£/‰— À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8³AEâÆág%²AEáž´‹±AEàHŒ,°AEßЛ"'¯AEÞóWM&®AE݇f+­AEÜí©ç#¬AEÛT>K«AEÚTA§4ªAEÙÆFß©AEØË =_¨AE×g%§AEÖýmL¦AEÕBXã¥AEÔ|€ ¤AEÓ)-¬£AEÒýx¸V¢AEÑ ú[¡AEÐ<T AEÏû·^ŸAEÎ+Šv%žAEÍrèeAEÌ“÷:œAEËaoDp›AEÊ`ÈšAEÉiæ)™AEÈPÑM˜AEÇd—AEÆ*J¶R–AEÅikÎ8•AEÄn\‚<”AEÃõÙzu“AEªðsX’AEÁŒár‘AEÀãñ:AE¿ŸÚDRAE¾3¹§mŽAE½'c!AE¼‰—6cŒAE»ÄÙ”‹AEºÉlw-ŠAE¹ˆµY]‰AE¸a’ˆAE·Ô@ñH‡AE¶Es`"†AEµq °(…AE´í0Ò&„AE³ÁY=ƒAE²àoŽ5‚AE±ɧ©PAE°h;U€AE¯Ê®g,AE®´…[~AE­)*ð}AE¬Ks"|AE«]dü{AEª?0†MzAE©­äyAE¨•›ÌBxAE§5qTwAE¦¾WvAE¥âz;uAE¤è?rtAE£ /sAE¢Y¼ rAE¡¼"hYqAE ×CfpAEŸnß^oAEž_ŠÆjnAEâÜmAEœ² 8nlAE›õ¿»[kAEšCBù:jAE™¢TgiAE˜æ"hAE—CF<\gAE–‘ÄWjfAE•$^MeAE”šò^dAE“Á& cAE’·‡YlbAE‘?­CaAEô `AE¶O‰D_AEŽêŸ;^AEž:p ]AEŒÆ\eK\AE‹ ÀJp[AEŠïi¨4ZAE‰³ ½YAEˆ"°fYXAE‡²ø`QWAE†‰¾0VAE…VÅ×UAE„öÒ TAEƒêp#$SAE‚],×eRAEõf`QAE€¼fgPAEjÊ OAE~¼3BNAE}¸ MAE| °œ9LAE{òUKAEz$õsJAEyÆöKIAEx©ÀtHAEwz1aGAEvl):XFAEuZEEAEt—ÅgvDAEs8Ð'CAErUƒ BAEqáè¹sAAEpî†Yp@AEoßaŠB?AEn°dýO>AEm<¨C=AElèäô_qAE= ?£v AE<³âú' AE;ìÿ‡: AE:I3F AE9-õP_ AE8X¬½AE7c´MAE6†ì&VAE56úúAE4~cAE3½$<.AE2ôí7AE1Ú,QUAE0ôyLAE/\1)ÿ@E.Lû17þ@E-¤+ìý@E,ùUkü@E+ËòîBû@E*T—äsú@E)ð¿Iù@E(o«v@ø@E'ë&°T÷@E&Ñ5mö@E%†Â`"õ@E$8Is'ô@E#Hñ]ó@E"¹eò@E!\)F ñ@E ³¸×Fð@E`—6ï@EÀ  0î@E‡ß?í@E“SÊ8ì@E¹c„oë@E§* ê@E!Føvé@E¢<è@EÉÇê'ç@EB‰CAæ@E¤Êö2å@EʤøXä@E˜Óëã@EŽ1â@EPèŒ8á@EAÌà4à@Eœxkß@EO(=Þ@E +9 hÝ@E \GxÜ@E ip4Û@E ÃI Ú@E éèÙ@E²Ý<-Ø@EˆD×@Eh‚4Ö@EÜ-Õ@E–ÆÔ@EY|.Ó@Eœ±ÛQÒ@E+7ø0ì— À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8•BFâ³[5”BFáÅKHt“BFàhÒ¡G’BFß”‘l‘BFޙɨCBFÝý²™lBFÜRêoŽBFÛ£‡'BFÚ/ WŒBFÙ‡/ h‹BFØÊ3Ë_ŠBF×¢1•‰BFÖ˜Ò>ˆBFÕ˜/‡BFÔœ3F^†BFÓúг*…BFÒ´ø¼t„BFÑAÅn)ƒBFаIO‚BFϳ‰kBFÎ{q[€BFÍöWBFÌúT70~BFË5}BFÊÂ\ó"|BFÉÊ›${BFÈá¬ÝLzBFLJÆyBFƺãExBFÅ€å¯"wBFÄ®ó((vBFÃÊ­uBFÂ,‚Ÿ0tBFÁj³=RsBFÀA§ürBF¿’&!qBF¾ΟpBF½ËN›oBF¼=ò>nBF»ŒátFmBFºî8)lBF¹¶30kBF¸’„)jBF·žIiBF¶`²2hBFµZn×4gBF´JL RfBF³o£ eBF²ÆçžEdBF±•"ñJcBF°¹4â:bBF¯íTÐBaBF®Y-šX`BF­1¹_BF¬¬B^BF«£Õ,!]BFª³uvH\BF©aÇ-*[BF¨q'ÓPZBF§÷ï5(YBF¦T÷EiXBF¥CÔ MWBF¤Þ"± VBF£™[~UBF¢œ®<TBF¡vì–vSBF U·dTRBFŸBRPFQBFžÜ͘aPBFˆæ¾OBFœ†OðNBF›QËMBFšUþWuLBF™¬·âkKBF˜T‘³8JBF—`Cm(IBF–”nfHBF•µ)¯GBF”GÎöEFBF“Ù’ÎEBF’<‰ŒiDBF‘ˆ{Ï!CBFAQCBBF¶Wm7ABFŽ~×ÑG@BFJ<_?BFŒ2BG>BF‹»…@ =BFŠ d883ëðAF=ï4ïAF<5÷+/îAF;20s8íAF:§›bìAF9…mFëAF8ñz-êAF7mȇ éAF6çïèAF5‚a çAF4%MÌæAF3Ð,¶ åAF2òÎIäAF12ãN4ãAF0 «7âAF/F5=áAF. óØKàAF-ÛüCßAF,ˆæHÞAF+&[FeÝAF*&é.oÜAF)ôÄ ÛAF(>¨6^ÚAF'|§³9ÙAF&œ3ÈdØAF%Q­…p×AF$ýï®)ÖAF#·ö¿KÕAF"÷.–FÔAF!à¹ÓAF 2‚ÍQÒAF—­EÑAFÙ‡”IÐAF±qô_ÏAF@µE ÎAF;ÓBÍAFž)h3ÌAFo­XpËAFG{»ÊAFÃNÉAFqLÈAFòý²GÇAFÂÝJÆAF»¼‘IÅAF(„«_ÄAF2®Ê%ÃAF½â)tÂAFå+È]ÁAFµ§JÀAF ”µ}p¿AF è²¾AF ªA{5½AF X%n¼AF íŽæd»AF~·ºAFå<¹AFZ~ï)¸AFÜõ·AF…(q¶AFð—èµAF Z@´AF¤iXO˜ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8wCGâfQøfvCGáÈk+uCGà CotCGß|ð_/sCGÞsArCGÝnÆqCGÜi‰1JpCGÛTÐ"RoCGÚ)Ú>lnCGÙßô¶mCGØi o0lCG׃ÄÞYkCGÖòuÂ#jCGÕ¿•XiCGÔ}YGhCGÓã_-gCGÒ°C9;fCGÑÌÉ(2eCGÐSɳdCGÏŤ9cCGÎ 1bCGÍHš¯[aCGÌ0Ûx8`CGËÕÌ0_CGÊt3>^CGÉÇa]CGÈž7O\CGÇñ˜¥+[CGÆD,øZCGÅÃåYCGÄȸîSXCGÃé`˜7WCGÂU’aVCGÁGÞgUCGÀûc\TCG¿Ë!fSCG¾DI½RCG½‰”z7QCG¼ëƳ!PCG»§`OCGºí*fNCG¹«ŸOMCG¸hG…LCG·• KCG¶RÌJCGµO³0ICG´*¯[HCG³êA•GCG²¯ FCG± Ã9:ECG°•&+DCG¯4PCCG®ÔfœBCG­hyt2ACG¬Ô ÊX@CG«‚šm?CGªƒ5 >CG©>¸N=CG¨)tìN CGpù¥­GCGo»mñnCGnÿQJCGmZKOCGl¦GCGkìøÿBGj,ü¶JþBGi6fà9ýBGhâOdüBGgЖNûBGf`BQúBGeÔh3ùBGd\eA6øBGc.̧P÷BGbR§á[öBGa9+üõBG`_/­pôBG_*ŒvóBG^š©UòBG]eùfñBG\©DtðBG[‹ÊþLïBGZ¬ ÎîBGY§O`íBGXÔ@f1ìBGWjŸjëBGVßp/êBGUan,EéBGTë}ö@èBGS#ÈçBGRË€¯@æBGQžîÒoåBGPip'äBGOY‹.ãBGN.OYâBGMpž  áBGL xë.àBGKÀUsßBGJÖ·ø_ÞBGI¬:1ÝBGH»jUÜBGG2vuÛBGFƒUhNÚBGE#:E.ÙBGDÏ00WØBGC'¯]×BGBžÜeÖBGAú5¤ ÕBG@€G ÔBG?sŒCÓBG>¹ì:PÒBG=*µÑBG<¶‰˜ÐBG;B‘d"ÏBG:È©EÎBG9rfocÍBG8~‘¨)ÌBG7SáœsËBG6—í|ÊBG5N#YHÉBG4xNnÈBG3¸'$ÇBG2pŸykÆBG1¤ÊÏÅBG0 uÕvÄBG/#9ÃBG.šzÝ$ÂBG-ü_ætÁBG,ZU[ÀBG+¤Aƒ_¿BG*‹êZ¾BG)—ÄEa½BG(bÙz ¼BG'[:˜h»BG&…¸ž?ºBG%Õú‹L¹BG$¦gøZ¸BG#Ž¢O"·BG"AÝž1¶BG!±eµBG Yéó'´BGw[Ö-³BG:ËE²BGC·^/±BGÄ“ño°BGt\¸H¯BGÛxò^®BG0…X­BGÛ’¬BGÞYŽi«BGÞTªBGÔƒ½T©BG¯F„¨BGW|@c§BG ä'l¦BG ï¥BG¾an$¤BGöÌ<£BGquÞ¢BG Ã$ðp¡BG Bh? BG 0D¥hŸBG  §!žBG r$KBG´ÒŸ œBG÷O›BG“íšBG'J l™BG4M‘q˜BGÊÈ—BGE–BGÆÊo€²˜ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8YDHâ¾ïW>XDHá1ªÍ WDHàÓÜ÷VDHßà ±UDHÞSÖŒ7TDHÝæÊMSDHÜ2­&SRDHÛõEQSQDHÚ·;PDHÙ2îDODHØI6 NDH×ɉcgMDHÖÅ@vLDHÕµÅ?KDHÔ…³7JDHÓxo IDHÒí¿‡<HDHÑðùGDHзY&,FDHÏf€d!EDHÎñsDDH͸—CDHÌcéBDHË0½,ADHÊO¬Ú<@DHÉ'»l`?DHÈ`‡•>DHÇô¹]u=DHÆe?!DHªV-[ DH©vï¦mDH¨Ü• DH§ÎLDH¦ XãFDH¥H­e)DH¤i…tDH£€×:fDH¢Ð[ÓDH¡{w‡$DH ²*&DHŸÈmDHžÁöVDHÛWDHœôX“rDH›­(q8DHšʆ=RDH™¯hýDH˜@ª½DH—A–O_ DH–g·  DH•h[ïN DH”;"¨ DH“lî L DH’–ÓIDH‘ZuþCDHÙª*DH d? DHŽÛyºQDH+M¶%DHŒ€4DH‹A_DHŠl—Ã&DH‰”heXÿCHˆ«#çOþCH‡‹ÞWýCH†xQ’üCH…î •OûCH„ÎÂ@úCHƒîQùCH‚¸íÆDøCH™Í]F÷CH€Ô¨# öCHõ„õCH~OTÄôCH}Eð•bóCH|n~³6òCH{ˆ„#jñCHzG±ñ ðCHy×â*ïCHxt§FîCHwü\7/íCHvÒZìCHuá@ßKëCHtK_!êCHs‰œ“>éCHryièCHqô‹ôçCHpóWNæCHo×8[CåCHn¿I(väCHmì/íRãCHlW±­5âCHkáFáCHjÓ=àCHi¾RßCHh½QÍÞCHgpc@ÝCHf5 Î ÜCHe5‰èpÛCHd3ÙcrÚCHc¤øA&ÙCHbIy™AØCHaLà ×CH`¥ _ÖCH_ÇcÖÕCH^þ>¤VÔCH]–›¯ ÓCH\|#ÒCH[LèïSÑCHZˆç$ÐCHY&ÇýqÏCHX¯GØ ÎCHWIR¾=ÍCHVbE›YÌCHUW‰jËCHTû¾CHG»Á[½CHFëO/¼CHE¦Œ Q»CHDÿp>ºCHCƒÃ/¹CHB¡TA¸CHAoWR·CH@Eçe¶CH?²V´µCH>‘§ý^´CH=[ݳ(³CH<› F²CH;¼É^^±CH:Ãb°CH9XR£h¯CH8M©‚M®CH7»î|3­CH6!³h¬CH5[yl«CH4'ÏpªCH3X7*M©CH2Ð>†]¨CH1ç‡O§CH0¹m¿¦CH/%ù¼a¥CH.¦×?¤CH-h3£CH,m•€¢CH+ùÍ÷¡CH*œàf CH)˜%§=ŸCH(‘9QžCH'hŽÁvCH&ëKœCH%ï¦Nc›CH$>ÂhAšCH#ÜJ >™CH"~[j˜CH!ê Ü<—CH JÒ3–CHÕÝž•CH˜[Q”CHCâ©T“CHo Ü’CH'\‘CH7Ÿ:RCHòñXCH” ŽCHÉt@CHŠ:€ŒCH@ã@‹CHŸÉjKŠCH«Ùþr‰CHÖÙ¯ˆCH™Áh‡CH¹cEI­á-ÂLEI¬H»\EI«ÎTbdEIªر EI©Œà;EI¨༇5EI§ó¤m!ÿDI¦ÛëˆþDI¥¢+ ýDI¤°ÝSüDI£[=£VûDI¢Ì…K,úDI¡îF»ùDI Ž!ueøDIŸ¤V¯(÷DIžqÿÀköDIÆð4õDIœEè4vôDI›êeäóDIš‚©,òDI™²ñDI˜ϼmðDI—-EIïDI–tl|îDI•¤BG íDI”¥–R`ìDI“f^š4ëDI’ Ó"êDI‘·¨G0éDIÙÅ{!èDIú¸…QçDIŽ|»BæDI,‹Ú åDIŒî—Ú.äDI‹å Î_ãDIŠB WâDI‰=»\,áDIˆìˆÅDàDI‡B@ßDI†ÖTÞDI…i"?ÝDI„ͯchÜDIƒ'/œÛDI‚|Û/ ÚDIÈ0W1ÙDI€^°)ØDI†™Üb×DI~DGñ$ÖDI}EÒ‚ZÕDI|l]ÔDI{Tø`=ÓDIz‹©5 ÒDIy*KubÑDIxˆBä_ÐDIw¢UÏDIv˜Æ©_ÎDIuîí 0ÍDItŒ˜ÌDIsë‚HËDIr®ÀÁdÊDIq­:¡ÉDIp !«"ÈDIo#o"ZÇDInêê‚ÆDIm±Ü}ÅDIlù ÄDIkÂñqSÃDIjh?}OÂDIiÓ£ÁDIh²&íNÀDIg®àxP¿DIfœò¾DIe 7½DIdÉÀ!Q¼DIcõÕˆ4»DIbƒée ºDIaÄbF¹DI`k-P¸DI_ðâÅ^·DI^º(MQ¶DI]ñ´'µDI\ÌI²T´DI[|›S+³DIZ’„˲DIYšTÙ/±DIX‚ ùA°DIW„Û&¯DIV?Á~B®DIUà]}­DITÊ×%¬DIS‹QŸ «DIRÂãSsªDIQZD- ©DIP*W?¨DIO(F(§DINI16*¦DIM&øe¥DILË„¤DIK¹ò9v£DIJ6&æ]¢DII®§à¡DIH泌v DIG§KŸaŸDIF€•¦*žDIE¯ü¾ DIDŠù%—DI>^0R$–DI=1õØ$•DI<ú%`”DI;=Úb“DI:Z'd’DI9¢«{/‘DI8|¥„hDI7´oß7DI6_ŽDI5­…ªDI4aŽ»BŒDI3šV K‹DI2§,mŠDI1_³)‰DI0ÂÁ#ˆDI/Ò1+‡DI.ïeµ.†DI-`·Ùc…DI,ÔÒâv„DI+n|sƒDI*.¦od‚DI)6·ÍkDI(`€DI'íúÐDI&Pa©~DI%ÄÝ1}DI$nÂ|DI#!¢QF{DI"HzDI!ó7p\yDI Cûž<xDIO‡­8wDI×a~7vDIXz1uDI’+‹qtDI¦·°,sDI…rDIÎÚbqDIRuYlpDI‚K‡BoDIr³nDI]/mDI”K'lDIÔúAkDI3rjDI¸ž7iDI¼“„+hDI`‹n2gDI2¥ŸvfDI  eDI s_mdDI B«ž^cDI æU$VbDI  ß·KaDI}Db`DI.SF_DIó{Î,^DI|]‡5]DIߦ² \DIÍT—C[DIÖñ$ZDI뀊 Ðx™ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8FJâ$Fº!FJáHáØFJàkèý.FJßëµq?FJÞ¥/ÕYFJÝnÓ¦@FJÜ=ä6FJÛ*–/FJÚäÔ–mFJٮߔFJؼÿÜNFJ×)Ü\5FJÖÐ>‘FJÕ¾Ü(FJÔð[LFJÓÌAÜ] FJÒhß; FJÑL"Jc FJÐSè‡^ FJϘÔíN FJÎ6ö§FJÍ/ ?FJÌI_éFJ˹dtFJÊ”|ZVFJÉ´[uFJÈ×1aFJÇAF¤!FJƃ³/FJÅRÜÿEJÄŒÌ*þEJÃ8$~YýEJ£E9:üEJÁý¨ŒeûEJÀNxúEJ¿z™Ì*ùEJ¾Š’EJøEJ½î]O4÷EJ¼n*aWöEJ»»ø98õEJºÞ49aôEJ¹ý"´8óEJ¸9ð6`òEJ·‘ê1ñEJ¶U‘]RðEJµ¤ñF`ïEJ´yí‰vîEJ³ÑžHcíEJ²,¢ZìEJ±D¹çëEJ°Ou3êEJ¯}†y éEJ®zF{`èEJ­•—çEJ¬áÑEæEJ«S6¶4åEJª1EcEäEJ©GßAHãEJ¨µº nâEJ§J†jMáEJ¦í ØUàEJ¥ u<ßEJ¤ê«ðPÞEJ£)¬lÝEJ¢tGÜEJ¡_®sKÛEJ  ¡JÚEJŸÏ™ ÙEJž½KJØEJq­×EJœ‚œ8OÖEJ›Ú£N/ÕEJš¨%Œ]ÔEJ™”’%wÓEJ˜‹7–2ÒEJ—…†JfÑEJ–ŤÐEJ•54¢WÏEJ”‚)D0ÎEJ“™¥(OÍEJ’Ê¢5ÌEJ‘¸ÝûËEJœHioÊEJ'Å+ÉEJŽdæÚOÈEJš†9BÇEJŒžÞ=ÆEJ‹æR.oÅEJŠZÒžiÄEJ‰&°˜1ÃEJˆ`n¯sÂEJ‡ÃôkFÁEJ†ô-!ÀEJ…‹ý|¿EJ„=<¾EJƒ¥|; ½EJ‚Oñ'¼EJšûó+»EJ€M‘:ºEJ6ý¹EJ~ÉuV8¸EJ}íHO·EJ|Oîs¶EJ{#3wnµEJzÍ€q´EJyW—)R³EJx]6²EJwö³±-±EJvj-"°EJuÉKH¯EJtýðôV®EJs£öÜ ­EJrT‹V<¬EJqÂ/-«EJp‰”eªEJo~'âW©EJn?HÐO¨EJmw_E §EJl‡x´r¦EJk—Ý2#¥EJj ¼j¤EJiÔp2n£EJh¥·j ¢EJgwwò¡EJf< U EJe„A ŸEJdWhFžEJcl`]EJbÐÓjœEJa`‡õa›EJ`æ¬DšEJ_¦ÖA™EJ^èdýT˜EJ]øhÄ!—EJ\!Öp8–EJ[ÏC•EJZìi)0”EJY8¾“EJXùVòM’EJWÇ6#‘EJVuT'VEJUü.Å)EJTöõŽEJSÖ÷©[EJR •TŒEJQ5×X‹EJPöBc\ŠEJO¨j,‰EJNm7sˆEJM³‚‡EJLò%ȆEJK“Ø­o…EJJ˜dÝi„EJI “qƒEJH Œ¿H‚EJG!4*EJFµ»o€EJEö‹¨[EJD3¿?~EJC*C¾)}EJBx"ø |EJAî×µs{EJ@„¤zEJ?ØK.yEJ> “ÐhxEJ=éIJwEJ<VmvEJ;%3uEJ:ÃPÌ;tEJ9ý'-$sEJ8­ÔbsrEJ7Ÿð²qqEJ69µeLpEJ5 UT:oEJ4ßH|vnEJ3£÷'mEJ2¤‘ü\lEJ1C;áWkEJ0·DÕjEJ/Ù^biEJ.7ÚhEJ-ѯjgEJ,sLî&fEJ+w0³KeEJ*kN#UdEJ))”LdcEJ(îDVbEJ'Š çiaEJ&i°N`EJ%E{›B_EJ$¦B!^EJ#Ÿjÿr]EJ"âDå \EJ!œÏ&b[EJ ‰QZEJç_ÊPYEJ%YXEJ.åHWEJxòØVEJ$ôNAUEJÃýNTEJ¤9SEJÀ;lrREJ n$QEJdWTPEJ› ›OEJb^"NEJÊ2šYMEJ*FLEJæ( lKEJf¦©SJEJ£š\=IEJfõ|@HEJ KL×9GEJ ˆ»¤lFEJ áÕqbEEJ ª*œDEJ ©¨CEJäÉÌHBEJß’æRAEJb6¶7@EJ )6?EJÝà­W>EJüxP1=EJwÇ óFKÖý>¥NòFKÕ¿Û©6ñFKÔ9¼óaðFKÓ2ËD=ïFKÒçC.TîFKѼ—KíFKÐ6ŸmìFKÏŸ[&ëFKÎ&,GêFKÍì|ƒNéFKÌ—ÆšbèFKË¢çFKÊVR–dæFKÉL»]IåFKÈïš-äFKÇlÎãFKÆ¡ÅÁ<âFKÅ ¶f/áFKÄÀàFKÃiË2ßFKÂh®(8ÞFKÁ¼([-ÝFKÀ99UÜFK¿ [^ÛFK¾žBÚFK½XSsPÙFK¼7‘gØFK»¬ÿ‹`×FKºõ%ÖFK¹ ³”_ÕFK¸I?¥SÔFK·Ës`ÓFK¶×+±YÒFKµvÿ[ÑFK´ü¿`GÐFK³HèNÏFK²œ¡kÎFK±I"–ÍFK°)ÁÌFK¯ƒž@ËFK®–¾"aÊFK­K =ÉFK¬2(PÈFK«êƒSÇFKª«õ› ÆFK©ÍiuÅFK¨iRŠtÄFK§86ö ÃFK¦¤›snÂFK¥E{š]ÁFK¤0ÈTÀFK£Ë8Q¿FK¢;оFK¡á»Å½FK f xn¼FKŸÕ2ì'»FKž@^n+ºFKÞƒ¹FKœbÀæ ¸FK›M¤·FKšI‡ã¶FK™Ô?I=µFK˜ÏG5A´FK—C© ³FK–Ù]ð²FK•²Ê(±FK”@¿F3°FK“¨;¯FK’²÷¨4®FK‘½„­FKòî«g¬FK¬:¡ «FKŽ ¡ ªFK‹ùóQ©FKŒ€Å,V¨FK‹s¿¥§FKŠ`1ö¦FK‰$×ï¥FKˆ¶c,¤FK‡Ùbp£FK† ñA¢FK…PXP¡FK„eÀÀY FKƒfëakŸFK‚ ñŒPžFKO.ôfFK€rrœFKóÜÉ›FK~ÎV šFK}ŽÓF™FK|~ͤI˜FK{¸×oq—FKzúáX+–FKyªj•FKxP˜O”FKwÀI#N“FKv:Wk’FKuƒ¡Â1‘FKt&MŒJFKs½'FKrœlŽFKqgõ·FKp, ª.ŒFKo-Vû ‹FKn+ÈýJŠFKm\î[FK>Fñ ZFK=HYFK<Ÿ/ÔPXFK;"/WWFK:eq+XVFK9Û8øEUFK8 ÉñKTFK7wç÷QSFK6‚*jRFK5 ™ðQFK4-ùc.PFK3˜[­WOFK2‘: tNFK1¡Ø9MFK0‘Í¡;LFK/Æ'jKFK.«´ôJFK-´óTIFK,Ì¿THFK+¥9GFK*ÉUjCFFK)-:oEFK(ÊtJDFK')öCFK&Á[FK!ŸÁX=FK »þ¥d÷lGLmÿæ”kGLlajGLk@ oiGLjžÿ>hGLiÃßNgGLh§HÌfGLgB+IeGLfШdGLeó¥?cGLd3T<bGLcáy aGLb1Ř=`GLa„YZ#_GL`n£ì0^GL_]dÂ&]GL^C½Z\GL]3Òß5[GL\”\7WZGL[ÂÙ©iYGLZkè$XGLYœì»CWGLX¦8)<VGLWcÔ÷QUGLVIÖäTGLUVÝŽFSGLTX_RGLS€%ã]QGLRg-ƒ"PGLQµT"OGLPŠD:gNGLO)K?MGLNúÜÊ;LGLMP;þKGLLn÷>YJGLKÂr¶8IGLJó6‘0HGLI´6éMGGLHkpAFGLGµÇEGLFÁàDGLE®ú³CGLD¬ÑÂQBGLCÕ`ÖAGLBkªÒ?@GLA;eBr?GL@È›ÀF>GL?WýHh=GL>È»÷âC1GL2» ˆ]0GL19 GL¦íÙLGLÌEæ7GL®†WGLˆÑŸGL`?ÄHGL¡š,GLÓcŽ(GL±ÍÇGL˜AèVGL½k¢GL‚ŽC_GLƒ¡sZGLÝÏqGL'à GL…bÎ GL)%; GLÈþ!6 GL S+¿E GL 6y,^ GL Ö¿a GL  ÛOGL –XGLຓGL/£WGLÿê lGL<-GLÙäöGL³/C#GL*Ò ]GLmâ`¢š À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8ÃHM☠•sÂHMá9‘%ÁHMàC«oÀHM߀üio¿HMÞCöDM¾HMÝð£]½HMÜÊž1¼HMÛE _b»HMÚh+1vºHMÙ†"ü¹HMØ] )¸HM×bó7·HMÖŠ &E¶HMÕV˜ µHMÔÍÈ>´HMÓYû³HMÒð4R^²HMÑIƒØ)±HMÐô‚:°HMÏ¿ik>¯HMÎl±®HMÍÑ!Ô ­HMÌ Ý ¬HMËM{÷$«HMÊ{+¾^ªHMÉcuþg©HMÈæ-r¨HMÇ›ô§HMÆ1èA¦HMÅ#Öªm¥HMÄǀŤHMà +£HMÂJ×O¢HMÁS‹¡HMÀµkË= HM¿þ}bŸHM¾ˆj§^žHM½Dn¢HM¼&¯S9œHM»>>›HMºü¬ NšHM¹ÈUs™HM¸Óã_p˜HM·0C—HM¶ff{9–HMµEJð•HM´e &?”HM³0Ëæ“HM²Ý'"’HM±#aD.‘HM°³Œd1HM¯šïYHM®VŠK$ŽHM­©û=HM¬gM…$ŒHM«à6.?‹HMª3Þ&ŠHM©Âëü ‰HM¨ÓsʈHM§Ûô<‡HM¦Úþ(†HM¥tõ¼…HM¤c5•=„HM£Jí›dƒHM¢Ë´–*‚HM¡pý((HM ÙÎÇ(€HMŸ\i HMžHUÌ>~HM]Yà0}HMœ2¾E|HM›Ëžî {HMšbƒ-FzHM™™o[yHM˜Ì÷xHM—6›”wHM–hÜþivHM•A«áuHM”}Ò·etHM“¿ûl?sHM’ÌÖø rHM‘ ‘&qHM·Lj5pHMwçR\oHMŽw•lnHM¥aˆmHMŒ Ãc:lHM‹FakHMŠè€ cjHM‰_CsiHMˆ´9•vhHM‡¥Â0gHM†©Ô[UfHM…ó7leHM„qÔ;dHMƒIX- cHM‚)<’`bHM| oaHM€O2‹R`HM}¶Ý3_HM~ûièa^HM}¥¸Ù`]HM|þœ÷\HM{,è˜,[HMz&Q¦hZHMyŠêJjYHMx¸\+XHMw¨à‘*WHMvuÔèVHMutA‘PUHMt¯ THMsUƒÛ$SHMr’"ÇRHMqëáQHMpk$ï!PHMo\¼u OHMn½t´.NHMm­DV>MHMlf ¿aLHMkYÛF2KHMj´=çJHMiÁ)aIHMh$lHHMga|.KGHMfÊ,FHMeö¨ìCEHMdú¹×.DHMc«…´,CHMbŸ4 BHMaª çhAHM`~æ,@HM_ÏO5?HM^~ûho>HM]tFâ=HM\s‹†;HMZbc:HMYE¯¶Q9HMXŸ1 8HMWåBY7HMVàÊ06HMUöWVf5HMTë^ì4HMS7fQ3HMRU cc2HMQ½sÎZ1HMPô¯ë 0HMOc-£s/HMNùo .HMM¥ž–-HML;TX=,HMKTUîI+HMJ÷q5*HMI(r7()HMHfÂV(HMGžv'HMFu ¸6&HMEP@&=%HMD-w$HMC±±O#HMB+¦³p"HMA Ó!HM@[öÈ3 HM?‹T1HM>^ĵ'HM=.p'HM<Þ>…HM;ö0 HM:dì HM9¨mn1HM85†VVHM7©¸xHM6¢MóHM5-SHM4CJ›jHM3ñpõfHM2Äl_:HM1OU HM0(ÙJ6HM/¤E¶MHM.®À²BHM-â  HM,î’—- HM+Ùg¾5 HM*³ü´h HM)fV HM(ñ1ÂvHM'ÃëÒ^HM&%.¨CHM%#-^HM$U»QHM#*_?HM"¬¢ƒhHM!.†Ã HM "LÏHMh“–ÿGMÉßþGM5eLcýGMÁ>þ*üGM»×sûGM {.úGM7ùGMg)øGM±p3÷GMh¦)\öGMó8FJõGMÉ—ª0ôGM!»ÞcóGM¡ä×TòGM÷)!ñGM¶² ðGMÔXô ïGM`y¡#îGM ØgNíGM èÉ16ìGM ðâ ëGM òç½êGM ÍÂéGMn0CèGMúIçGMw²læGM(5ŽåGMÏ+äGMCíJãGMc¦ªâGMíz¸'ˆ› À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8¥INâK å%¤INáÚ‘åP£INà&PZ¢INßí³ ¡INÞ$9=k INÝ¥¥gŸINÜZa/žINÛ1žÙ#INÚ¹¶a,œINÙ/ D›INØÂZÊ!šIN×U# <™INÖÕí·^˜INÕ_ò0—INÔüÇÕ7–INÓ s•INÒò.a[”INѧ%ž“INЫÛjf’INÏýž‘INÎè ñXINÍ.BÌINÌ‘ ¯TŽIN˃ÓOCINÊs sŒINÉg‹P‹INÈ?€’ŠINÇžF >‰INÆt pˆINÅÑfa‡INÄÓK †INÃ^û1…INµìÝ\„INÁàiƒINÀ“‡Q‚IN¿óšcGIN¾JîC;€IN½Êl‰bIN¼oC~IN»c'Šg}INººÕŠ\|IN¹bh™ {IN¸Y[7zIN·½qâbyIN¶mW1xINµU¢7wIN´m4  vIN³õCUuIN²¿«â8tIN±~™žQsIN°l’£(rIN¯d:¡qIN®º!YpIN­*_SoIN¬DS½4nIN«Öm›>mINªòlIN©nb$kIN¨Ëú;jIN§ÕSiIN¦%ˆhIN¥ÄÊagIN¤ÊñßAfIN£ÂQzeIN¢Æ&œ.dIN¡ÈÄ3fcIN „WTEbINŸæZïJaINž—þ`IN o«l_INœ ÌRc^IN›ý÷Ýp]INšö¤ÉR\IN™M5^[IN˜P=BVZIN—x[÷RYIN–•ŠŠ[XIN•ð.72WIN”ˆýŸ,VIN“[qA#UIN’ÃwEBTIN‘CzLSIN {XRINåGóGQINŽ7àJPINÖP[OINŒ sšNIN‹Ü™ß+MINŠRÝÙLIN‰0Ÿ*KINˆLõJIN‡YgCfIIN†þ7ûXHIN…ÁáRGIN„>Ž[GFINƒß_âZEIN‚¹-5`DINw|ÞOCIN€Û"Ò^BIN3V AIN~Êá@IN}?IN|­º›>IN{~Ýw=INznªÏYINRŶé¬9IN=å  ÿHN<4®«KþHN;æÏy>ýHN:p–¥güHN9ÃrûHN8I,¦?úHN7ˆÄ'sùHN6,=˜øHN5.ñ9÷HN4åT¹TöHN39¹Q õHN2ÜFdôHN1…]t!óHN0¯Ì%òHN/+Ì3ñHN.FÃ:ðHN-‡ý®aïHN,иHîHN+\0™-íHN*îgêeìHN)é­_ëHN(c>+êHN' ÁÈéHN&öÙ„9èHN%)¶úfçHN$¼0ŽRæHN#ÖÓ0åHN"ýv²8äHN!&‡6ãHN 0ùšcâHN4­hráHNt àHN%_PßHN›7 vÞHNèe³kÝHNã…éWÜHN;ŸÛHN£onÚHNò|qÙHNR>6LØHN_÷D3×HNŠ€€rÖHNË:0ÕHN@š9 ÔHN(c:ÓHN@¦IbÒHNê&×`ÑHN™)úrÐHN çª@`ÏHN ùñ„ÎHN O¦!IÍHN ò'(&ÌHN 9O;ËHNã$pAÊHN!TÉHN,?H.ÈHN–©xÇHN¦nË2ÆHNÉ]=ÅHN°{ÄHN z;°h› À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8‡JO☢k†JOá5G……JOàn-¤„JOßU*þYƒJOÞ_Jé‚JOÝ ÈDWJOÜì”Y%€JOÛÙmJOÚ¦~`~JOÙçãQ}JOØŽZÌB|JO×ÓB${JOÖþ•3uzJOÕAÙ™yJOÔŸ§Ã,xJOÓŽ™RwJOÒipvJOÑÁŒè(uJOбÅfqtJOÏæÙgsJOή6d7rJOÍDZqJOÌ-‹TfpJO˳DÄoJOÊÇÛXnJOÉæa`mJOÈõçZlJOÇ ™'kJOÆlϰ jJOÅh}ÔciJOÄËòFhJOÃDxƒgJOÂÖÑufJOÁbù”/eJOÀi•¤4dJO¿†Ã&cJO¾~µûmbJO½iA«JaJO¼JÀM*`JO»ºcZ^_JOº„ååS^JO¹M2?]JO¸3/–L\JO·püàt[JO¶´_bZJOµÞÛYJO´Ýg!XJO³§ôÌ'WJO²ê¹hVJO±© [UJO°¹}„TJO¯üñŸSJO®Aü}5RJO­F)ÄQJO¬œã6PJO«»B1OJOªz’ßUNJO©­ InMJO¨@:XLJO§)ëbpKJO¦“€8eJJO¥iù‰IJO¤ÛvTHJO£PÍÌOGJO¢å×Î8FJO¡ÿç.aEJO :—ìrDJOŸÃQ¡CJOžæïúmBJOýÒPbAJOœ‡4Ä@JO›}:V?JOš˜ T>JO™T»H=JO˜“”¿n1JOŒzœ)P0JO‹Q;²\/JOŠ‹ .JO‰Ø@A-JOˆNtN,JO‡C³k+JO†„µðT*JO…Û"j)JO„ÊT(JOƒ!†-)'JO‚Œij&JO=Ä›%JO€<±u$JOÑrÀ#JO~dÁG"JO}3´>@!JO||°^ JO{‹wJOzˆOd6JOy_uLJOx ˜IJOwµ`r>JOvˈñsJOu{"ˆ*JOt·é‹cJOsáË!JOr¥½ÛKJOqp6ÅJOp ±{+JOo{ƒAJOnÓàí5JOm¢[™JOlÇc@JOkØkÚjJOjTÕcJOiråh) JOh-}‹8 JOgb/Ã+ JOfÂ*çv JOeØzC JOdähP+JOcH©RJObÙTJOa ýÓ4JO`PŠE0JO_ÙRlJO^«dÚ JO]!b;JO\kj-JO[Ó‚'oÿIOZ•%¹OþIOY£ ÷`ýIOXþ RüIOWê¼ÒRûIOV×øáUúIOUG³ÆCùIOTÕ®ØløIOS*:> ÷IORé aöIOQjUâõIOPx¼9ôIOOûIBóIONNÐù!òIOM‘áúñIOL«îN2ðIOKñï8ïIOJ°N·)îIOIU GlíIOH~ÆrìIOGz>$ëIOFÿ&AêIOEÜÿ±méIODøŽc"èIOCÿCƒ çIOB^˜ù*æIOA/( åIO@nèØfäIO?ØuèãIO>з9âIO=ÈôkáIO<Õw àIO;«ütßIO:Í ÞIO9·WUÝIO8¢/]ÜIO7­¾£KÛIO6«]ïYÚIO5kYöOÙIO4²} ØIO3¡àÃ×IO2rÖIO1èntaÕIO0QúÔIO/\taÓIO.ß&ydÒIO-Uw==ÑIO,s)Ÿ7ÐIO+7=yÏIO*V!+ÎIO)¢Zö ÍIO(‚‚ÚÌIO'¿¢3ËIO&}g¸BÊIO%ÉfYÉIO$‘ïßÈIO#†"ÇIO"¢ë‡[ÆIO!¦ólKÅIO ’lÄIOâgÑ<ÃIOúãVÂIO ¶ÁIO–ZìÀIO æ¦6¿IO Ž›+¾IO©H9 ½IOû@ŸB¼IO }+;»IOOÔ UºIOʢŹIOQÆÉ¸IO¿¤·IOÜ0t¶IOû6òIµIOéJ~)´IO¨éÿ^³IOÿn²IO ÑΨ-±IO µºž°IO Vݳn¯IO %‡s>®IO ¸¯¶t­IOnϬIO÷D§)«IO' ªIOë¨I©IOƒ$4$¨IOÀƒ¶§IO¬;¦IOåq\]ØË› À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8iKPâ{ hKPáOnÊugKPà» 'fKP߈9teKPÞ– {dKPÝ<5WXcKPÜO“^bKPÛÂ9aKPÚì#Š=`KPÙ-{É$_KPØò÷Ï9^KP×I0‚]KPÖwÈ>c\KPÕx#u[KPÔðÖZKPÓ~¡7YKPÒò` XKPÑOÜÓWKPЧ¸VKPÏßù3UKPÎ;K×9TKPÍlÈSKPÌOoüRKPËB© 4QKPÊ+{ŸPKPÉ÷öÙOKPÈ“o^NKPÇX#&%MKPÆèû@LKPÅ!€(KKPÄt²+JKPà "IKP¸ÍN^HKPÁ~_éEGKPÀ9qÚmFKP¿Ô©UEKP¾PÍDKP½!¬ÊXCKP¼йmvBKP»£óAKPº¶FÀ8@KP¹y â;?KP¸Y¬>KP·ù&U=KP¶†`ÃiœŸKPŒïz‰tKP‹~Å!&KPŠÊ7KP‰îKPˆDÂjKP‡†i( KP†Ș01 KP…@hU KP„ßYj) KPƒ0W/ KP‚«ó:lKP®CåKP€eΞ[KP¯EQ<KP~cmhKP}² KP|›¹œrKP{€˜òMKPz,®ÙjKPyÖ‘÷lÿJPxð ¢uþJPwpÿ<ýJPv¯äþ_üJPuLˆß ûJPtÓùu#úJPs~ùJPrÑ<)øJPq íe)÷JPp.²[öJPoè£"õJPn6fhôJPm]{_óJPl`•2òJPkÎdñJPj%[ðJPiÝÛlTïJPh¦É4vîJPgIhÙíJPf•P!ìJPe1… ëJPdöíJêJPcû­é/éJPbKÖ­*èJPaÔ·ìPçJP` ê@æJP_âhzåJP^cü äJP]Å'¥ãJP\‹…OâJP[½ê.áJPZ&­ø àJPY¢ÃgßJPXœÉIÞJPW2ÒçWÝJPV|ß\ÜJPUÉ EqÛJPTP`»ÚJPSè˜ãÙJPRÔþ7ØJPQ,é×JPPˆ"Ã[ÖJPO´—™ÕJPNÜChÔJPM‚Í]UÓJPLÛ˜eÒJPKܰ9YÑJPJIÓ3ÐJPIv³¯hÏJPH.!.ÎJPG™î›hÍJPFåÓ ZÌJPEFÒ6qËJPDè!5fÊJPChm3ÉJPBp»Þ9ÈJPANøD;ÇJP@Rq*BÆJP?¦¥)`ÅJP>ŸâoÄJP=îø^ÃJP<!!ÐÂJP;ônF,ÁJP:'9´ ÀJP9Ó¼9¿JP8âq,T¾JP7”F+J½JP6ô…G9¼JP5# Û^»JP4` V-ºJP3 ƒd3¹JP2Q¥­¸JP1Ue·JP0ْʶJP/'d"µJP.9ú@"´JP-eyŠs³JP,­ª+²JP+¯x¶A±JP*ߢ°JP)éÇ4¯JP(±Ìf®JP'}fÙI­JP&ÕX7¬JP%š)ð*«JP$>EªJP#Ê©êP©JP"¯}˜B¨JP!dþgZ§JP †„YK¦JPªŸ›C¥JPÇÍCS¤JPMøËl£JP‘OO¢JP“†¾8¡JPßÊ'] JP¾ú†lŸJP4<ÕžJPÔãJPÒe-GœJPZµð&›JPGð™šJPQl™JPËîY[˜JPt­u—JPSn–JPŠÀW•JPÔ™çd”JP Åv.n“JP ý«O?’JP  ÿ;‘JP EýsJP 7¬NJPeÖšŽJP £]JPê?_ŒJP²% b‹JPD%‘ŠJPr2v‰JP0$ˆJP8 ÃU/œ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8KLQâ` JLQáÔWfILQà%•ƒCHLQß•ÑéFGLQÞÔŒ«ZFLQÝN= PELQÜ|£1DLQÛù YCLQÚ$æ“SBLQÙgð®rALQØo&@LQ×»²n?LQÖ¶#8 >LQÕ“ip=LQÔ‚c34N4LQËéÛå#3LQÊ/u2LQÉ™ ë 1LQÈ ô0LQÇvÜ9/LQÆ‹/ão.LQÅ›4¨ -LQÄIš :,LQÃËÇUE+LQ¬ *LQÁ×ë®j)LQÀ.Ë(LQ¿Û‚'LQ¾*ë«s&LQ½G¥5%LQ¼‰zhU$LQ»h3%R#LQº±Ìve"LQ¹àò !LQ¸9ãE LQ·ÎyÎLQ¶«XLQµœ©FLQ´#!ZLQ³«î¸_LQ²¸ LQ±„PvLQ°Þ÷Y*LQ¯m¹ý_LQ®>xÃlLQ­Â1IBLQ¬ÉÛñLQ«æŽWLQªq=LQ©…_kLQ¨-ÖCvLQ§¿g*LQ¦›#üLQ¥rB”F LQ¤²™Š/ LQ£$Ž LQ¢­”8n LQ¡{[W LQ Qœé"LQŸ·†!LQžddGLQ©êuJLQœ/P• LQ›ãR¨ILQš5!ÐrLQ™9I+LQ˜«ì‚8LQ—þ§Ô&ÿKQ– ñ&þKQ•Ÿf[ýKQ”Íö^5üKQ“"“W#ûKQ’F% úKQ‘ZF_ùKQ£Ý QøKQ±‘4÷KQ޳À /öKQC¦õKQŒ`¤€XôKQ‹Oå_óKQŠê;…VòKQ‰»“¯/ñKQˆ b8rðKQ‡w•l ïKQ†ÄA‘OîKQ…®²dOíKQ„Ò…Û^ìKQƒëܱLëKQ‚Ÿl÷êKQ¨E©OéKQ€’gñèKQOñtçKQ~t]ÛNæKQ}‘ªXåKQ|8f%äKQ{6yûKãKQz‘H"âKQy iRTáKQx2E«hàKQwêñbßKQvXòØQÞKQu°0NMÝKQt~IIÜKQs•'ŽkÛKQri™:0ÚKQq_Íe6ÙKQpQé3ØKQoe·[F×KQnYhV;ÖKQm¥Ñ(ÕKQlAÏâdÔKQks¦LÓKQjöåSWÒKQi^¯Ó"ÑKQh¤£Æ"ÐKQgÙdßÏKQfFm?ÎKQe*@2ÍKQdYuÀ7ÌKQc±;ËKQb3èÍÊKQaQ¥3ÉKQ`IéËcÈKQ_>äßÇKQ^b_;ÆKQ],‘4ÅKQ\È…ZÄKQ[§êR2ÃKQZ³vyÂKQY‚]ÁKQXk¨ƒÀKQWÃ^€]¿KQVF—¾KQU|½KQTC¦¤7¼KQSva»KQRùDrºKQQ¬p ¹KQP#|®X¸KQOåUsf·KQN®¾²H¶KQMâBµKQLÏR)´KQKtT³KQJOý›Z²KQIzc”±KQHƒTB°KQGñ”1-¯KQF÷Wd®KQEY$­KQDÕ[¥%¬KQCõ—#u«KQBƒ{oªKQAXÃ/©KQ@:°¨KQ?Yw §KQ>x1¦KQ=‚³(?¥KQ<;BϤKQ;ð«.£KQ:;u¢KQ9L,h¡KQ8¸Û% KQ7Cµ43ŸKQ6 žKQ5—5Œ,KQ4áùeœKQ3!£Ñ ›KQ2ýE›9šKQ1A\Ÿ™KQ0S!=˜KQ/’Ñsk—KQ.“¶¨^–KQ-UŸ½•KQ,ý”KQ+^hj-“KQ*ƒ 0’KQ)'_9>‘KQ(9ŒKQ'TvKQ&Y5Õ ŽKQ%¸—mKQ$»ç“UŒKQ#¦ of‹KQ"¥ÑiuŠKQ!¸œW‰KQ ÉrfˆKQˆn`‡KQG6ß@†KQïg…KQp‡ˆm„KQø[JBƒKQ4©‘d‚KQé…pKQb»Î*€KQ÷s: KQ™ƒ&j~KQ 1üh}KQ äåE|KQl]E{KQ­9,/zKQÁ³c'yKQõÓSYxKQ5N>1wKQÑ“vKQ u2KuKQ C/Þ%tKQ KïksKQ Î)d2rKQ c5ªqKQF2pKQ²½›oKQZãnnKQë,umKQ‡Ö1wlKQc `kKQpZ½jKQ/³ R(’œ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8-MRâ"øY,MRჹw+MRàf@E*MRß$‰)MRÞÊû:(MRÝ—zBR'MRÜÒ´5 &MRÛíóÃu%MRÚØÜ„;$MRÙ âA#MRØß<"MR× köC!MRÖcóŽC MRÕ)X"vMRÔÓÊãLR˜®ºØYâLR—OòitáLR–“¾ÓuàLR•0OßLR”T 4ÞLR“ Ê:ÝLR’ïÜLR‘ô|*tÛLR™Ž9ÚLRµ–WÙLRŽœ¦ZØLR‹üóS×LRŒ…(T?ÖLR‹arâÕLRŠ4mLÔLR‰U.âÓLRˆ„,=nÒLR‡7xndÑLR†îZpDÐLR…"-p@ÏLR„ã.nÎLRƒ¥µF4ÍLR‚k ÌLRìŒLËLR€ ZZÊLR’›,ÉLR~ltž;ÈLR}õ¨x:ÇLR|߯LR{O»ß:ÅLRzà‘ó?ÄLRy~*‰RÃLRxûåe@ÂLRw†­ ;ÁLRv¡=ÀLRu`#7¿LRtïw;¾LRs[ìïr½LRráàƒ¼LRq’0Ð\»LRp09?ºLRo±)ÄH¹LRn Ȇ¸LRm/úq-·LRlÜÙÚ¶LRkHP4_µLRjfg§D´LRibÿÌ-³LRhSIJ²LRgI¥)±LRf·[5°LRe÷¡!¯LRd[ì®LRcÚ¯U­LRb¬ã@¬LRa«EZ«LR`²}™%ªLR_¹¾©LR^«ºq¨LR]`‰®+§LR\Ui¯q¦LR[Zäé¥LRZ_‰KN¤LRY›ÂV £LRX—5Î9¢LRWÃHƒ¡LRVB‹ LRU\Û ŸLRT+ê¶3žLRS/KõGLRR…hIUœLRQÇ›LRPÖOé-šLROÄ ˆ™LRNÉ&`˜LRMznCd—LRLô4–LRKÂ}4•LRJ¬ƒ§o”LRI\§Þ4“LRHDÞrp’LRGÝáV‘LRFx‰sKLREY© 4LRD'–0ŽLRCcó$@LRB–.’_ŒLRAQˆ q‹LR@ÇãDŠLR?»ÆÐl‰LR>”˜TˆLR=º¦Xh‡LR<ÃBQB†LR;œ@ÈE…LR:c„LR9:Z-ƒLR8˜òL‚LR7P‹ËLLR6×=€LR5*âï!LR4Zû ~LR3Á\Á5}LR27uü(|LR1\uÛ@{LR0ÐT zLR/­d‚+yLR.Í~ÑkxLR-˜óŠWwLR,Øw@;vLR+ÏóÅuLR*ä± `tLR)ë4h<sLR(¶ùË&rLR'–N qLR&îKpLR%Õ¡*6oLR$œà9nLR#ÜûöimLR"Pô‡lLR! Ñ!kLR ÷ƒ*jLReSÐiLRŸ’WhLR‰è#$gLRâûpfLRˈ5eLRcçÕWdLRn*cLR÷¿2bLRªËaLRò)p`LRþfP_LRòWm+^LRФ¯t]LRŽŠ?L\LR6¥þ)[LRÕ€wgZLRÿŠ SYLRµÕnXLR íÖ vWLR Ž/iVLR ÏRUULR 'ºïgTLR ßëÖgSLRy¤HRLRç¦ìXQLR…­¢PLRŽ>¾$OLRäww?NLRë · MLRn>ÊLLRn›[Põœ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8NSâÿN±gNSá+Þ* NSàh NSßü¨. NSÞ|–F NSÝÍvP NSÜ‘Ä<`NSÛ r5NSÚíÂ!NSÙ’G¥NSØCë[oNS×8âk%NSÖÝ0œ9NSÕÐ[˜NSÔõhTFNSÓÀÿMSÒe;JmþMSÑQ°‚ýMSÐ% ·üMSÏOñûMSÎ x­úMSÍÈÚ$ùMSÌ+3×øMSËôí%÷MSÊÆžöMSÉú^õMSÈc±âjôMSÇЀ! óMSƈÑ%òMSÅ‹¸‘ñMSÄÃðMSæ¨9ïMS¯S[îMSÁ²…þníMSÀkxEìMS¿r¬ëMS¾ß³.êMS½þ|—QéMS¼Æg=èMS»´tëTçMSºµª>LæMS¹tÃ\åMS¸C MVäMS·¡ãMS¶i´ƒâMSµ¥¸Ñ)áMS´žoÉàMS³ÖëXUßMS²18ÕÞMS±]4lÝMS°dÜMS¯, öRÛMS®áÀ ÚMS­Í­kÙMS¬ã?2ØMS«öø×MSªŠ~Ã`ÖMS©ØøPTÕMS¨»QTpÔMS§…ý]cÓMS¦Üø§2ÒMS¥bÑ9ÑMS¤—ÁÜkÐMS£=§JÏMS¢ÓÑÏ]ÎMS¡mŸjÍMS «%×JÌMSŸ*Óx3ËMSžIÒXÊMSRÙWÉMSœrûÓuÈMS›š #0ÇMSš Û?@ÆMS™žT{,ÅMS˜|1RÄMS—“\`>ÃMS–t€üÂMS•AÏìÁMS”sÏ>AÀMS“Á?¿MS’[SQ`¾MS‘J㡽MSœ'¶ ¼MS Wþr»MSŽNê ºMS¸~$U¹MSŒ:`Ù¸MS‹›t·MSŠüÿ¨!¶MS‰Z€XµMSˆî϶n´MS‡ŸåÆ_³MS†“Ÿ1²MS…*2=±MS„‘uv°MSƒ¨þV*¯MS‚#½Fe®MSYš3j­MS€¹kÚ4¬MS¯\kL«MS~GD™ªMS}Ó¦XI©MS|ØÐ¨MS{v~ß§MSz)Ô~¦MSy;be ¥MSx!!Wt¤MSwpSG£MSvæÑ%¢MSu(ìœ!¡MSth™^ MSsPˆdŸMSr»”·žMSqä<ÇBMSpÑö$\œMSo‹Í„ ›MSn»~{3šMSmàsô5™MSlEä˜MSk\®9—MSjËìz&–MSiÄym•MShd‡`”MSgç”H“MSf ,’MSe7{A ‘MSdï&²lMSct`ÛMSbVšRŽMSaæX·bMS`‘„š4ŒMS_ÐŹ‹MS^ªÒÙ+ŠMS]ãuk‰MS\Uñ½ˆMS[¹—M‡MSZUæÉZ†MSYù4ºR…MSXº¾(„MSW•~8ƒMSVmWå ‚MSU„ðÌRMST€™c€MSS0Ç2MSR)¾K~MSQð‚0&}MSPuˆ |MSO_d™q{MSN‡yzMSMQ; yMSLNÞÅOxMSKäW2wMSJ¾”MZvMSIÖèETuMSH÷ÌtMSG’<†qsMSF%¹Ü0rMSE Îú qMSDãov[pMSCAà<oMSB<†Ý6nMSA®/&mMS@{ÔûlMS?ðQxUkMS>#×*jMS=]P9)iMS<²ZØ$hMS;ÀÒK"gMS:‹ÝÔEfMS9ƒ]'MeMS8z0dMS7=²cMS6[2CbMS5ªhYaMS4»ÒÇv`MS3Êíç_MS2Ûû¶^MS1$á5o]MS0†Ó!\MS/1Ã|g[MS.“:ˆ,ZMS-w‰µrYMS,ëUf XMS++ìü_WMS*²/i#VMS)ï3ÑUMS(°ÌTMS'ã¼1kSMS&ÍÛRJRMS%4aG5QMS$Æ»ä+PMS#KÈšXOMS" rNMS!ø^MMS >÷Ÿ0LMSÍP‹KMSÑšZJMS-‘æNIMS«ìfiHMSNM"@GMS(+¦ FMS†cçMEMS‚Q DMS‘D™.CMS´®±BBMS–ñ‘AMSºûIj@MS©Ìo&?MS‘¦­B>MS˜S&=MSFmZªNT›A2©4©NTš‘iÛN¨NT™Š3*§NT˜JBs¦NT—ý;0w¥NT–ßhÃ"¤NT•`äè £NT”~\}?¢NT“Þ–'¡NT’ýݨu NT‘BŸÌRŸNTœHžNTuÜKNTŽù˜„ŠlLNT=ÑSaCKNT< ÷8"JNT;¬*ÂpINT:RkáHHNT9&T|GNT8Ó…reFNT7ýÌ«ENT6À­rDNT5öõõCNT4%M BNT3'V†ANT2ª*¶@NT1W?ú5?NT0{UU >NT/ï¦7=NT.͈cNTšÄ«%NT´¾4NTd¬=%NT‡ÊLNT¶–ANT“+ » À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8ÓOUâ–x#ÒOUá†"ëGÑOUà-)ÀÐOUߥúA ÏOUÞT%¤ ÎOUÝ[šQ^ÍOUÜ‘µrWÌOUÛªCËOUÚ?CYYÊOUÙ5.ÓBÉOUØ:X=ÈOU× Ú|UÇOUÖª,iÆOUÕ¦“.ÅOUÔIãpuÄOUÓ~ûJÃOUÒ±XöÂOUÑa£Ñ ÁOUÐl&ëÀOUÏÿü%a¿OUÎH÷Y¾OUÍÎ<<½OUÌG¶zQ¼OUËèóœN»OUÊÞNP4ºOUÉÿ/V¹OUÈ]hãe¸OUÇ;ܾ·OUÆ(=-¶OUÅɧµOUĬAÕ+´OUÃð6³OUÂ2ýF<²OUÁÒ"¤1±OUÀÙ)°OU¿©°–f¯OU¾Wø®OU½\‡Ÿ­OU¼o– V¬OU»5iÜ«OUºŠj@ªOU¹2`Ä©OU¸ÁŠAW¨OU·,Å•/§OU¶VM*¦OUµè?Ÿh¥OU´ÕH¤OU³²ï£OU²@ç*¢OU±ž¦ä<¡OU°¸F« OU¯aƒ ŸOU®ïÄëžOU­H rOU¬‰ï_œOU«£r‘›OUªÖòb9šOU©UŸ;U™OU¨.c˜OU§9&÷—OU¦Ö_–K–OU¥Ú²fq•OU¤ÛÑfh”OU£ˆàåL“OU¢µË«,’OU¡·Qe‘OU :vOUŸçíOUžÒkKŽOU=6\GOUœtrÐ#ŒOU›^<Ô‹OUšܦ\[ŠOU™ÙÞ×e‰OU˜„­^ˆOU—¤]—‡OU–Ðÿ·=†OU•s.9 …OU”ú¨Z „OU“·]OUlAä¥$\OUk0Àô [OUj(3$ZOUi8üù4YOUhMv9XOUgX +WOUf>´ÑVOUeRâUsUOUdYbDNTOUcsî˜SOUb›èOTROUaØçRQOU`.‘:POU_)ÚoOOU^’H NOU]žŠMMOU\Ž”ˆDLOU[ðÌ KOUZâtþJOUY Ì¢IOUX9þ¸HOUWbQ×GOUVO–FOUU=aº^EOUT)¶DOUS)ÒçPCOURí¶BOUQÛE.jAOUP“ áT@OUO„Om?OUNÏ3¼>OUM|áf=OUL1´H¼G.OU=nÈå3-OU<¶±Hc,OU;€#'+OU:“Bn*OU9ü047)OU89dVc(OU7dä?'OU6Pª²H&OU5NϽ$%OU4•[ OUÎIÝCOUçsÄ(OUAQLOU 9OU½ˆrOUuý½?OU|î{OUÒ=OU]0ÈFOUá±É2ÿNUŠ—CdþNU »·ö,ýNU §­JpüNU ´*;ûNU Cy³múNU Ñ¥Î`ùNUmJ˜iøNU–hª ÷NUâÑ <öNU©·ÁPõNU·÷qôNU–&q&óNURY“QòNU2"PaÈž À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8µPV⢠Q´PVáܨ³PVà(ã`(²PVߘ$û±PVÞšõ«=°PVÝ0L¹%¯PVÜsȇd®PVÛ9Äì­PVÚG‹ ¬PVÙ‰JS«PVØKêœ3ªPV×¥¤2t©PVÖKù¨PVÕæ!iO§PVÔ–¸E@¦PVÓ™¹<¥PVÒ'­eq¤PVÑ[¿’N£PVÐU(w ¢PVÏÏPéY¡PVÎWSV PVÍÁ„RQŸPVÌÖÅ%NžPVËLb2WPVÊÄtz-œPVÉ jû5›PVÈ>اBšPVǧž ™PVÆ-ä!l˜PVÅ÷ fY—PVÄÈo=–PVà ù ?•PVÂóz2R”PVÁø–§“PVÀ%ð¨$’PV¿a1¿'‘PV¾+.PV½q?=PV¼îm…YŽPV»`6Ž PVº¶.9ŒPV¹e\i[‹PV¸ ìì3ŠPV·²ÓPVkÒðM=PVjŠ6ƒ,2ÇTPV=`»öjPV<UÄYPV;Ùi_O PV:ãƒB PV9~&¨ PV8ãom PV7ìny PV6µcPV5ùÂŒPV4JT PV3¶A PV2nX%PV1R˜rCPV00úZ6PV/oPV.”#³,PV-h„»*ÿOV,kxEþOV+ÞT‡DýOV*ê]WüOV)=дdûOV(ÚÞQ`úOV'ÌÚÄùOV&{º øOV%ÕÑ f÷OV$øNRuöOV#‡LÐlõOV"ç FôOV! .óOV s|òOVY˜gñOV}7´LðOV™.CïOVÃ%YîOV÷ÉíOVl\*ìOV ãOëOV¢ƒZpêOVÿ?CéOV‹þ¥oèOVøzTçOVÒOaæOVVÐÒ,åOV¾t¿äOVÈuŸ ãOV¬£i*âOV¶ba_áOV~&d àOV .<–WßOV  k[ÞOV ƒ’ÝOV «UÜOV ¡zqÛOVÔ¨ÚOVôoÙOV½êÿØOVì¿@G×OVGT\ÖOV¾N¥@ÕOVë’XÔOVÙj•D‚ž À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8—QWâ$Dq–QWáç#v •QWàDm#”QWßñ“QWÞöé~’QWÝG)w‘QWÜSÂQWÛ“ò QWÚnÈ`bŽQWÙÓá1QWØu¢ûFŒQW×V‹QWÖ(b­lŠQWÕÔÄìt‰QWÔ½å:0ˆQWÓz‡QWÒ gu†QWÑ>…ä…QWÐvuB„QWÏÕ=û4ƒQWÎfUí‚QWÍç2uQWÌÿ{„V€QWËóº!QWÊÕU~ ~QWÉÛà©8}QWÈò¬t|QWÇÿ  ${QWÆêT»azQWÅŠ©*yQWÄÿ M'xQWÃ3<YwQWÂñÍ,evQWÁýy#uQWÀžðKtQW¿d÷îsQW¾ضÈrQW½8ØFqQW¼äÉ9pQW»`´H oQWºòj<nQW¹¡qDImQW¸P.Ý%lQW·èUkQW¶Èñ wjQWµ`ViQW´˜]LhQW³6)@gQW²×/÷fQW±,yDeQW°ÖU¬UdQW¯s.mcQW®°³hbQW­$›ÚaQW¬¢-$`QW«ÕH¦__QWªñ$N^QW©h‘rI]QW¨ös\QW§¸<[QW¦™á±<ZQW¥ ÔYQW¤•K3BXQW£Ö=PWQW¢%_°VQW¡e¬kHUQW F§ZRTQWŸx€SQWžFÓ« RQW|»gQQWœ¡]PQW›ä°^OQWšÙlINQW™Ñ͆MQW˜P²LQW—“Èô6KQW–§0_ JQW•Û“äIQW”`g¢aHQW“d•GQW’èúRFQW‘²ºÑ7EQWsŒáHDQWQW‰þ"p=QWˆ#a>=6QWÊ4Õa5QW€i|"4QWa¶Q"3QW~£òN2QW}>LJ1QW|Ý`ÝU0QW{FKw/QWz*'.QWy,¼Í-QWx3õ‡L,QWwD/wq+QWvÁ?,*QWu®¬Ð))QWtñœq?(QWsÞ€íI'QWr~?h&QWqÚ{&n%QWpg2]$QWoû#QWnÊô/E"QWm×Sùi!QWl¦© QWk¤L QWj!ÉÈQWiõÁvCQWhÅoÆeQWg0ã(fQWfZ=2QWe}ŽCQWdCtQ[QWc¾"nQWb&B†CQWa+Ä/OQW`„é©CQW_]§× QW^¯òAQW]±¤UQW\ê$=QW[ææ QWZkäKQWY…H·" QWXR’2 QWWãRgY QWV/ë8 QWUµ€H QWTwN,QWS‚7gQWR‡ö(QWQŽr™*QWPæõoQWOPã$QWN·Š0fQWM xh<QWLýÈ»1QWKïyÕÿPWJæg9þPWIIá‚RýPWHîn× üPWGP7ÏûPWFVàòFúPWE°! ùPWD:ÍùOøPWCÉš®7÷PWB= öPWAÓØÏeõPW@JQèEôPW?-­ 4óPW>E”+ òPW=Ž¡mñPW<”SðPW;ˆQ²iïPW:VÛaîPW9:qº`íPW8l×,ìPW7¬] IëPW6.ŠêPW5èÛöéPW4Õ¼nèPW37çPW2×{ž;æPW1Æ}'3åPW0 ]jäPW/Ç[QãPW.;/+âPW-³{nVáPW, þ àPW+•ÄŸrßPW*ò ÞPW)ÖRëuÝPW(þ =ÜPW'EDÛPW&ÿ.vÚPW%gˆ_aÙPW$ÝûhØPW#êûeP×PW"D¤\ÖPW!¼¯z+ÕPW ™=,XÔPW½Ö®ÓPW8Z¡0ÒPWZ&‘iÑPWMÛ<ÐPW©}øÏPW2C0AÎPWƒ(à*ÍPW‚QÌPW÷vËPWô=ÊPWÖW•;ÉPWü¯ëÈPWÿxaÇPW‹møÆPWWŸîÅPWÅ]GÄPW¥ßÄ/ÃPWÁzÞJÂPW ,LH ÁPW Æ”5ÀPW fOs¿PW Ö·w¾PW ¯ áR½PWü}¼PW3´%»PWÙC»ºPWÂ-=¹PWQRoo¸PWÐmõE·PW„ér¶PW?«Ðe0åž À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8yRXâ¿ >xRXáÆ ywRX๞ädvRXßZ2§tuRXÞ±ôNtRXÝàmsRXÜ œä&rRXÛž”*<qRXÚ¸³}3pRXÙœæ_oRXØöø4nRX×ÉipmRXÖl£klRXÕ:†'KkRXÔðSmBjRXÓY1=iRXÒ1‡6#hRXÑC/÷ gRXÐX‰ÀXfRXÏË4%eRXÎY´ hdRXÍä±B cRXÌblI bRXËÓ»kaRXÊLÛY>`RXÉ÷®ý6_RXÈ÷ý,B^RXÇᯣ]RXÆìMO\RXÅ'™![RXÄÖ÷Ÿ*ZRXÃeoÌYRXƒºGXRXÁÙ0ÉOWRXÀN–ÂMVRX¿ŠÉURX¾(NÓXTRX½pIŒ>SRX¼¨›ŒRRX»ïÝ«:QRXº0k kPRX¹»¬`ORX¸Ùš-NRX·Þ‹.MRX¶ ÿð'LRXµ¬$v4KRX´<Œ[JRX³f›7uIRX²ë#HRX±t×}OGRX°hëFRX¯†8„sERX®˜jBDRX­kQMCRX¬ÛŽ)BRX«j+¶7ARXª 4æ^@RX©ðÖ“ ?RX¨ L9S>RX§‡Ÿ€F=RX¦ò7Q#RX†Kx[RX…9 #RX„• ´)RXƒxPRX‚žnÊ;RXY\dRX€#¨RX"å RX~:µ\RX}éÖíRX| ë”iRX{ÌRXzkoYRXy‡Ñ&>RXx¤ØCRXw]?´m RXv°‹äu RXu2­ RXtº×N RXs®-÷ RXr8SRXq¾ëû@RXpÏ_ë%RXoÛkMRXní›z9RXmP‚…ZRXlb$RXkô‘*RXjà LRXi5¦mhÿQXhZȤiþQXgÓq ýQXf›Et^üQXeE<ûQXdU^î>úQXc|‰½-ùQXbE¤ËøQXa9e]t÷QX`Ž­öQX_*¥ÄMõQX^~û2ôQX]„n+óQX\k )BòQX[ćbñQXZ×Ùw?ðQXY¤Ñ*(ïQXX£g îQXW^íríQXVdÞ?ìQXUûë ëQXTßaATêQXSÁ™éQXRÒOèQXQ~q›BçQXPƺFIæQXOÞ§èåQXNu9=äQXMàOìãQXL´¿"8âQXKðš9áQXJš`ù àQXIDƒ-ßQXH}§YCÞQXG¼¶0ÝQXFРÁ4ÜQXEÆAÛQXDdûÚQXC“<1ÙQXB»i@BØQXA”ug×QX@¾› ÖQX?qËÊFÕQX>­Ó+cÔQX=ÇÎþÓQX<j\çBÒQX;ÕÀCÑQX:@Ø_ÐQX9§{ˆÏQX8"ü«ÎQX7¢qE:ÍQX6*œ–ÌQX5`ð¥ËQX4ûô‡3ÊQX3ò;ÎoÉQX2ñûaÈQX1æjZ6ÇQX0*|ûMÆQX/žÚÿ*ÅQX.FïòÄQX-p< ÃQX,r‡FÂQX+{8xPÁQX*sv‹oÀQX)`“¿QX(»À¦¾QX'µ …½QX&b·»v¼QX%ІÐ!»QX$]Ž¡%ºQX#I2«r¹QX"æ4I¸QX!øÉÑh·QX oã¶QX×ÃkµQX†Š²1´QXÃà^0³QX³%²QXžf<%±QX~ßñ °QX  ¯QX§|½®QX6ôý ­QXoôC ¬QXct«QXÈ¿Ò!ªQXSµ—Q©QX {g-¨QXº?ðB§QX+ç\¦QXËJ°/¥QXüYµ¤QX m‚D£QX ÀwÑ1¢QX ¾hl¡QX þö  QX êÍ tŸQXXUžQX…QXêQ‡œQXdX4›QXCÃÇnšQX\™QXr?7˜QXD"ºJXHŸ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8[SYâWaGZSYáÔ‰KYSYà×?æXSYß9­-WSYÞ=-VSYÝC£öIUSYÜΰ9TSYÛS.9SSYÚ yPARSYÙôžY(QSYØ®¨‰-PSY×qÈOSYÖpB=NSYÕ;(ÇdMSYÔŸìQNLSYÓéÌKSYÒ1á‰JSYјÆISYÐ̱n%HSYÏn]8=GSYÎXÀ7FSYÍ2äqESYÌ­¹$DSYËOÖCSYÊ]œ•hBSYÉßÊ82ASYÈ…d°e@SYÇèóÖ,?SYÆ·‚ã>SYż9=SYÄqI%-SY´;Ë“X,SY³Ã‡N+SY²“W;O*SY±™a+)SY°¿£$(SY¯µ@2'SY®ÔG~&SY­΂!^%SY¬Ê$SY«u¨¾;#SYª(HU!"SY©\ô+!SY¨wªW SY§ïlå[SY¦êISY¥ݬ\SY¤]­–JSY£¯–SY¢^7SY¡‘~›GSY Dh-8SYŸ™WSVSYžVµù%SY2íSYœÊ@`SY›—#,SYšiaðfSY™ËèSY˜-"ñTSY—F/¶SY–t †fSY•¢i- SY”ts* SY“ÜÕú SY’Ä# SY‘ñ´'= SYë{;SY_3õCSYŽ¥:Ì<SYÆ=FbSYŒÿýf4SY‹9o¥<SYŠS«SY‰˜‘ý!SYˆ’¿NSY‡;÷²ÿRY†¦%þRY…Ì.ûýRY„k=žAüRYƒÅBaXûRY‚<É¡!úRYc@ùRY€ϪvmøRY:² q÷RY~Ê72+öRY}þWò]õRY|ïhNôRY{#2:eóRYzWoÏòRYyЏí'ñRYxBOxNðRYw—7‹IïRYvÝOñ îRYuSdíRYtñY¿ìRYsfzRVëRYrLz[êRYq%Ò*0éRYp`5ŽèRYomË&çRYn¬êšQæRYmeliåRYl¦¯V+äRYkßï-oãRYj"tâRYiÆSáRYhÐMJNàRYg»÷äCßRYfùŽXÞRYeYÚ]$ÝRYdõ+ bÜRYc«Ë'ÛRYbG¿CiÚRYaÐR„ÙRY`K©£"ØRY_§™-=×RY^§è"KÖRY]dPz&ÕRY\àâÁÔRY[¿Ëy@ÓRYZ­hüÒRYY0,aÑRYX¦ÝËGÐRYWxiÔ*ÏRYVÆØ%dÎRYUÌÊHÍRYTEÄFÌRYSÞ®4ËRYRy{ÅUÊRYQû\ZtÉRYPƯLÈRYOÌŽ¢YÇRYNL|ÆRYMàÅRYL¢ã ÄRYK_‡=0ÃRYJ6+ú,ÂRYIvsì)ÁRYHÄ_úXÀRYGŽNÃ0¿RYF¯O2¾RYE&Ù›R½RYD·(¼RYC %,»RYB(þ–;ºRYAåì^s¹RY@ƶk&¸RY?è© ·RY>¸ç}¶RY=°æÊ,µRY<‚ão´RY;5“]j³RY:iKg¦RY-™Â,n¥RY,™»xN¤RY+§pls£RY*cXÒn¢RY)Ÿ†^¡RY(×L›+ RY'r‰9ŸRY&ýÚžRY%ѨþRY$ÚnªœRY#@áí0›RY".ájšRY!dÖp™RY Ï.û˜RY‚èU—RYH/Ä/–RY?Àáp•RYÃÚ”RY!K“RY†!ý ’RYh<¦‘RYÏ–Œ8RY¦GnRY\4÷aŽRY2–—sRYî“™:ŒRYÀMi‹RY<ù>ŠRY%¾ÇA‰RYTÒû ˆRY«k‡RY5þv†RY û4H…RY Ð#ÑG„RY ñΘhƒRY ¡?f‚RY ¤œ"RY˜€RY½L]RY£7S~RYÅž }RYq²ò|RY¬‹U{RYÎ4AzRYO€«Ÿ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8=TZ⬊Å=fV$TZÉcTN #TZȠ͢a"TZÇðÂ]!TZÆñŸu TZÅi_'TZÄAÂíETZÛgTZÂt1]TZÁ?VúbTZÀß©7TZ¿ aTTZ¾¨üV/TZ½!åTZ¼ Ü&TZ»'gTZºì&qTZ¹E„DTZ¸Nßæ6TZ·×9«'TZ¶Þµ‡TTZµ#PÀ:TZ´¶ªDTZ³¦èã TZ²À2A TZ±ìÅ TZ°ÆÐ¿ TZ¯„:ä' TZ®‰¾ŽTZ­0WM"TZ¬¦Õÿ3TZ«N7._TZªrH}TZ©6»C:TZ¨®”¥LTZ§U€TZ¦õtATZ¥)ZÿSZ¤¼uâ/þSZ£gÐòýSZ¢–Y£3üSZ¡܈83ûSZ …í4úSZŸ£iï>ùSZžŽ øSZÅà×Q÷SZœ¶G¶0öSZ›ífIõSZšhm2gôSZ™+#\sóSZ˜ ½6ZòSZ—8Í£FñSZ–c±äpðSZ•ÊJ“)ïSZ”à$îSZ“<ø,íSZ’cˆìSZ‘• ¨aëSZÞøkêSZ;–éSZ޽ÐèSZo®ñpçSZŒ¡¢ˆæSZ‹ÈvåSZŠAÚëoäSZ‰«(²iãSZˆ™žYUâSZ‡¤š8áSZ†k¦…&àSZ…á€ßsßSZ„dß:KÞSZƒóƒékÝSZ‚Æú/)ÜSZ>8KZÛSZ€ì!9ÚSZÿ4×7ÙSZ~\ÛaØSZ}‹¸4×SZ|öÃefÖSZ{0 Ž ÕSZzÈqwÔSZyVr£0ÓSZxXµEÒSZw&¹·WÑSZvgC ÐSZuKž±ÏSZt_“H%ÎSZs(€'oÍSZr×þ×MÌSZqnÞ]qËSZpšx ÊSZo FYÉSZn-ÔÈSZmô ÇSZl…½R"ÆSZk´5Q7ÅSZj@‚,CÄSZi¸±¯XÃSZh)Y•dÂSZgx¶Ñ1ÁSZf†¯JÀSZe&;%h¿SZdb°]¾SZcÇYŽh½SZbâÄ¥o¼SZaaýÞP»SZ` §HºSZ_,gLA¹SZ^ÄF2¸SZ] QÂ5·SZ\Ø~DR¶SZ[¡Lõ!µSZZï.˜´SZY Î.³SZXÈ%o2²SZW>W±SZVs3@°SZUïH +¯SZTŽd®SZS7¸~:­SZRA Xp¬SZQ¥þ6b«SZP±"*˜SZ=Ëgv#—SZ<Ùº»f–SZ;°×~•SZ:™wôe”SZ9ØÜN“SZ8°ã4/’SZ7<{‘SZ6¯Òý1SZ5éãSZ4/xIŽSZ3Ç×m/SZ2ñÞ!ŒSZ1N}c'‹SZ0ïU.nŠSZ/ìSºB‰SZ./tØ2ˆSZ-‡RM‡SZ,Xw9=†SZ+KÿÞ+…SZ*¾§ð„SZ)ʃ…>ƒSZ(—ko9‚SZ'ެ[ASZ& B@e€SZ%R¡ SZ$cuQ?~SZ#z¼£}SZ"¹$ðp|SZ!ˆÇB{SZ IÓœ zSZK«ySZ2„·4xSZÞl_wSZÿ‡HvSZ]üc`uSZ*ž†LtSZÇÚQ-sSZ!àM3rSZæúqSZù½öjpSZͱ"oSZÙu8nSZBmSZÀklSZh­ kSZ”Ü€jSZätùiSZɪIhSZ ‡éugSZ ³'¥ifSZ 1Ê9eSZ ÁÕzPdSZ FÊl,cSZ+7 bSZ…œVaSZ˜H`SZÛô¿s_SZ1}yGC U[ÌøK6U[Ëí+,U[ÊûìÈ5U[ÉiûÀ,U[ÈâN.U[ÇÏZÎ^U[Æ#U[ű`SU[ÄÕ2K?U[éYÜmÿT[Ân:•KþT[Á®ùýT[ÀÅì]"üT[¿ªóKUûT[¾¤ë ^úT[½êæGùT[¼mô¶øT[»6)Ð"÷T[º«F@öT[¹bXÜvõT[¸PÏôT[·öF·JóT[¶¢rSkòT[µq`~nñT[´Fò‚ðT[³ê® ïT[²†EV;îT[±j±lsíT[°ÉÎXìT[¯º!ëT[®DŒ~ êT[­Š éT[¬ q1uèT[«+&0NçT[ªJ㬠æT[©Í1éQåT[¨ú'ƒäT[§uRm,ãT[¦¦vËâT[¥%9J)áT[¤äl~KàT[£ÄÚ~mßT[¢ ¢)/ÞT[¡Ûp­QÝT[ <ÿ”QÜT[ŸmÂ<;ÛT[ž?øŸÚT[ 0ÙT[œ3ÙØT[›µdÄl×T[šÀåˆ ÖT[™’ƒ†&ÕT[˜¯T4:ÔT[—¸ÃµaÓT[–é(3ÒT[•ÝÔKÑT[” tzmÐT[“nCœÏT[’&%îeÎT[‘:»Î ÍT[ %¾#ÌT[úƒ6ËT[ŽEÄwÊT[??H#ÉT[Œ1þ¬.ÈT[‹Õ$uTÇT[Š'»JÆT[‰Õ‚nmÅT[ˆy$XÄT[‡â/‚ÃT[†+VqÂT[… qÁT[„ˆÛéÀT[ƒžs"k¿T[‚œx J¾T[1Ï„M½T[€:é;6¼T[Š'»T[~KÞ¼oºT[}¡é¯U¹T[|2¸T[{¶!·T[z¨ü“j¶T[yÒè%µT[x˜ãpk´T[w{׋³T[v¶C“%²T[u縫c±T[tb²m°T[s+j/¯T[rôŠñ ®T[qÍåu­T[pçûÖ¬T[opŸ"«T[n`PªT[m\t8©T[lD?†s¨T[kE‹›8§T[jºëMs¦T[i†}S^¥T[hZèÍl¤T[g}·3£T[fnù&¢T[eU šE¡T[ddŠæ4 T[cQü7ŸT[bæ„ýTžT[a˜“ÁWT[`„«¶VœT[_C(´N›T[^ù€QbšT[]2§ ™T[\ofÍ,˜T[[-%Q—T[ZTR zT[=½;%yT[<lZ-xT[;u#, wT[:¿@%vT[9…€E.uT[8}ËEtT[7nBfrsT[6ßjRErT[5œB0XqT[4W‹<8pT[3ãÔ†oT[2éÈ< nT[1n2mT[0çéöKlT[/ewFkT[.¦ï UjT[-çîÏiT[,$s—$hT[+»Ÿ]HgT[*”,–6fT[)MÊ]keT[(Ï · dT['ÍR‰acT[&,xê^bT[%<laT[$Î.˜[`T[#ÓJ\[_T["<Ǽ=^T[!t]T[ ¸ƒ$[\T[ 0&[T[þ>ývZT[ŽJvYT[ô9–;XT[Pâ*WT[¦©(`VT[åÎÐdUT[·):TT[ý•Ë5ST[³yóMRT[éX"'QT[ü~Å:PT[ƒEû:OT[ÇÖA3NT[û&0MT[A¤ß!LT[ëO° KT[RVo\JT[ ÖT[*˜\Ðq  À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8V\âgü‘5V\á…nÿU\௠FþU\ßôJ`IýU\ÞÕ+ÕmüU\Ý4OûU\ÜÑ~EúU\ÛêÐÝ]ùU\Ú§?-HøU\ÙÜ÷U\ØøöoöU\×ë}œõU\ÖDDSôU\ÕdbBóU\Ô¶‘òU\Ó;ðLñU\Ò÷®©DðU\Ñûü¥[ïU\ÐÂN9TîU\Ïæ ‘aíU\Î"fìU\Í´ í#ëU\ÌTF êU\Ë|÷éU\ÊëeèU\ÉiÒoçU\ÈèÕ,SæU\ÇX£aMåU\ÆYÕ,äU\Åë­äãU\ÄH‚Þ)âU\ÃsEgcáU\Â1íÎàU\Á™‰nßU\À$ÌEÞU\¿êZ÷ÝU\¾oÕÜU\½Îï=AÛU\¼×leÚU\»¼Á)ÙU\º¾“Í'ØU\¹””-×U\¸×Ç ÖU\·Ÿ¦ÕU\¶IîtÔU\µM!!ÓU\´y5šoÒU\³5NZÑU\²Ùë?WÐU\±EL0ÏU\°‘ÇsVÎU\¯¥­vÍU\®ÉˆÌU\­ëãiËU\¬”µ$)ÊU\«“õ8FÉU\ªýBÈU\©ü'HOÇU\¨!ƒ#ÆU\§æ#û*ÅU\¦¹TK[ÄU\¥®Œô2ÃU\¤Ny!_ÂU\£G’×ÁU\¢+´gÀU\¡Vp=:¿U\ ‚"¾U\Ÿ²§«T½U\ž\p¼U\ÖØ‡7»U\œäù…ºU\›·ô&!¹U\šäÞÛ/¸U\™¿o·U\˜ŽýA¶U\—  µU\–?õA´U\•jðM?³U\”~mÚ²U\“3ÒõW±U\’E@Ä(°U\‘¦SÆc¯U\øZM®U\6£„8­U\ŽÚ  h¬U\—!Q«U\Œ‚Ôµ"ªU\‹*m}M©U\ŠCg2k¨U\‰b(Äg§U\ˆ—>C¦U\‡rÂsK¥U\†„lC¤U\…øä$£U\„4¤üd¢U\ƒw m¡U\‚GÍ  U\<=¾aŸU\€έ%DžU\Xû~oU\~òù«œU\}$œ›U\|(÷äšU\{ØÊ;™U\z€.˜U\y$¡)F—U\x¦Å–U\w ·V`•U\v%°‰”U\uØ­I“U\t!Úš ’U\s1ug‘U\rÌÜ[rU\qzj~sU\p´ÎÎŽU\o°"U\nTN]ŒU\m @'2‹U\l“.n ŠU\kФ¾‰U\jß»²$ˆU\iŸ5+‡U\h?²¬]†U\g `¤0…U\f°ô„U\e÷f>ƒU\dªò|E‚U\cffi(U\bJCZ€U\a©.‰+U\`/š\~U\_Ã¥i}U\^¤ùÉa|U\]êðC{U\\K¸«uzU\[töæDyU\ZÿðŸ/xU\YµŒ±vwU\XêÜ»UvU\WJ&uU\V e#tU\U¨RsU\T[b¦QrU\S?9WqU\R$ipU\Q”"ÝZoU\Po´nU\O…©V=mU\NA„t lU\MóŒxckU\L‘†G9jU\KÒïCkiU\Jî@hU\IHKnZgU\Hb]bfU\GÁÛÈReU\F¬·a dU\EÄócU\DÀ<CbU\C1¢gaU\BÉô@`U\A*©_U\@Ξ/k^U\?1ã]U\>ùP\U\=–¿/v[U\<Š­`fZU\;êÝU YU\:©'ŽZXU\9AÙiGWU\8¹DÙKVU\7ð¹<UU\6ƒ{oTU\5ÇÓþmSU\4ÿÏ„FRU\3 HPQU\2SžhMPU\1*vq$OU\0ô"NU\/n(fMU\.LdILU\-IÏVKU\,qîæJU\+-ù€>IU\*›“ :HU\)a=iHGU\(Ÿ©FU\'{7õ/EU\&ûŽ4PDU\%–"v*CU\$b ¨sBU\#ÓÅ$AU\"$!X@U\!7s5l?U\ ¦é·->U\û =U\í—¡×V]ÖŠeÖV]Õ÷ÒœdÕV]Ô7·tÔV]Ó[õÖ0ÓV]ÒÝoVÒV]Ñư×ÑV]Ð=@yEÐV]Ï\i«DÏV]έؚOÎV]Í×èòÍV]̯@^NÌV]Ëgvv(ËV]Ê”cÒ@ÊV]É_ÍLÉV]Ȳåº:ÈV]ÇcÙ·ÇV]Æ£k-UÆV]ÅA©GÅV]ÄkÀÛÄV]ÃrQ€ÃV]Â1ó> ÂV]ÁË  hÁV]À †ÀV]¿£™m¿V]¾„Ï^r¾V]½‡‹Ìi½V]¼ûq®¼V]»’ñj»V]ºò}O:ºV]¹çÑÉr¹V]¸÷$RA¸V]·.aH·V]¶cF^¶V]µq8eµV]´I“b´V]³šà8³V]²lr6²V]±eW†-±V]°­¼‚m°V]¯Fb$'¯V]®BVN®V]­›á­V]¬µ$ñd¬V]«1Š(«V]ªp‡ÕnªV]©­8Gj©V]¨÷¬w¨V]§2­C§V]¦ÔMj;¦V]¥ Hq'¥V]¤f_¡o¤V]£äÚ£V]¢HÐvm¢V]¡…Ž}&¡V] #1ëg V]ŸòÝYŸV]ž” }/žV]4 V]œšÌ²(œV]›Ä $i›V]šÍnƒšV]™†²OS™V]˜O]˜V]—˜Èe%—V]–WšÅ.–V]•¹ñ 5•V]”Óq“B”V]“Ó N“V]’#ÒeV’V]‘Ûñk‘V]‘Ñh9V];&V]Ž,îð ŽV]€ßqV]Œ9q>(ŒV]‹=m(+‹V]ŠÙêÜ.ŠV]‰Wd O‰V]ˆÌNAKˆV]‡Âi%‡V]†X 01†V]…áÐ#I…V]„îF%%„V]ƒVòeƒV]‚ð6n‚V]ýÐ]V]€W¥ÜV€V]ГŽ=V]~HYÌl~V]}®˜L}V]|µ¾ |V]{4:Sf{V]z.Š$zV]yV]ö'yV]xÅêZxV]w„wwV]v•³ÜUvV]uÂ*×MuV]tAÌMtV]sC*0sV]råìbrV]qŠå¾>qV]p×±2upV]oïþUoV]n.•CnV]mâ ÓOmV]lq²WlV]kM kV]jÿWpjV]ië}iV]hÔ"jhV]g®HCgV]fïO#RfV]eß݉>eV]dþL@dV]c!§0cV]bÇ7:hbV]aC÷C aV]`Õm1`V]_y_V]^å•(^V]]^õ_[]V]\oOK \V][ª‡[V]ZÁ=OIZV]YÀ0 YV]XBX’IXV]Wƒp²%WV]VÝÑ cVV]U¸æ[UV]T;%-2TV]Sö× SV]R\äñrRV]Qõ_%QV]P}övPV]Oµ9OV]NâHc1NV]M…4ÿTMV]LC^ãLV]Ký=]RKV]JüÁ/'JV]IõØ9IV]Ha5HV]GÏÎ{!GV]F:…MFV]E»UüEV]D@ovDV]C´ÁaCV]B^õjYBV]A¼sCMAV]@¤ccq@V]?;ü"?V]>·>V]=l=V]<gõ2Íœ#;V]:&‚Z :V]9Šq6;9V]8Hߺj8V]7åùW7V]6\–Ÿ6V]5EÎ 5V]4yu! 4V]3EÐ<93V]2\1k2V]1÷Á!1V]0ÔµÑ00V]/åž;V/V].‰rÏ-.V]-NG-V],ùÜT,V]+.ó³+V]*Ü2Æb*V])I 1)V](È"B"(V]'dµùb'V]&\ôÆ!&V]%JÌ+)%V]$I“g$V]#"çn6#V]"¼2;"V]!7ÔHq!V] ÓÞ{g V]^~©eV]F¡õVV]Ýå´nV]÷0V]A‡@V]-Û–(V]Ëì]V]l„çIV]Z˜PV]1LÒV]‚G?cV]pkV]/½õV]oã}jV]†0aV]ìÁæ8V][(V]rzr[V] ¯e~c V] ed§Z V] ww V] íE V] ~êKp V]UœrV]:¡bV]*¤.eV]Ø€mV]Oœ(FV]ÀѾLV]ð2SV]÷Œüo 8¡ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8ÅW^â i BÄW^á$ ?ÃW^àH‰*ÂW^ß ¶f ÁW^Þëû8+ÀW^Ý¿3]a¿W^Ü:X7`¾W^Û¹.Y½W^Ú÷ê"?¼W^Ùr§W»W^ØýéÌfºW^×áØ€;¹W^ÖŒF5¸W^Õ)‘¶·W^Ô¤t¶W^ÓP§W^ÄÜɦW^Ö³¹5¥W^Â'(Ó¤W^Áˆua@£W^ÀÏñd#¢W^¿1x@I¡W^¾ÉH:" W^½ÈSŸW^¼¼Á–ižW^»¢W^ºæ½q8œW^¹ÔX_›W^¸ÑÈ>šW^·<žH™W^¶À¨ÐP˜W^µá>9.—W^´Ðþpr–W^³«zo•W^²±"Ë”W^±º!;“W^°©†ÄM’W^¯ K·7‘W^®†¦òkW^­“Tò+W^¬UeŽW^«¶ùÑW^ªÓCUŒW^©‡,:'‹W^¨ÅƒŠW^§×Çb‰W^¦ØÐf*ˆW^¥:»U‡W^¤ÇÁT†W^£öCÈA…W^¢À,'„W^¡žÔƒW^ vJßV‚W^Ÿ³6˜W^žã)TG€W^æh€ W^œDÝ9<~W^›©³Žg}W^š°E|W^™ï‰d{W^˜l3ÝLzW^—.aJyW^–0nxW^•Ý5]wW^”ˆà/vW^“kIPuW^’4~ tW^‘2Ò!sW^Kæ˜(rW^Ь ]qW^Ž€äMpW^ÎÌ_oW^Œð†„jnW^‹; áCmW^Š®ïtlW^‰‹ß=kW^ˆšCvjW^‡â Ô_iW^†zŽv7hW^…¿·µngW^„€bfW^ƒ ŠÄveW^‚$¶JdW^á^LcW^€ní“YbW^9 ûVaW^~ÒLps`W^}TSÕ+_W^|=€±^W^{ÿ;]W^z¿,j\W^yVêÜf[W^x¦€ZW^wEZDYW^vâÍ·<XW^uëUWW^tÆ„°'VW^scö’:UW^r•°#KTW^q|­´@SW^pß¹ÑiRW^oE  QW^nqFbPW^mf§i-OW^l+ÓDNW^kÌÎ4MW^jQ¤LW^iPâKW^hc'ëtJW^gn˜ç7IW^f›¯ÿ#HW^eð«¿GW^džœ0FW^cë‘ðjEW^b¼($PDW^aš¾-CW^`ü‰I<BW^_Ó6V8AW^^•åÞ8@W^]ç) +?W^\ìo™ >W^[ ¼Ñ%=W^Zt%*s å W^=Ä'W^<Fü' W^;öD(W^:Ѫ‡IW^9é­5W^8ùšc1W^7'5pW^6ëšW^5 ¾Ž W^45 »W^3 .’W^2"¼¢W^1> VvW^0êf’7W^/µZW^.&ð¶YW^-÷S‰.W^,ÒP;*W^+* W^*=dZ" W^)JùD+ W^(Á© W^'J%% W^&âÇqW^%Ú§gW^$+W^#ŽYW^"¢RZW^!"§•W^ ¯,å W^}\PW^óÕAW^5§¯JÿV^ü=ÒmþV^ʈPýV^%N -üV^íÜÔ%ûV^ÐzkúV^álûùV^é•!nøV^÷–š÷V^ [5GöV^m²Ï1õV^ŸôV^ñ óV^ãLÍ/òV^!Û7/ñV^ºï. ðV^ ‡ë+vïV^ Cká(îV^ óÒŒtíV^ J«²0ìV^ ç•k[ëV^Gúñ$êV^s¿éV^8U èV^à±sçV^Þò"OæV^$Šu7åV^.2ö8äV^{k6H›¡ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8§X_â0_×.¦X_á:¦ñZ¥X_àYR8"¤X_߬ß_B£X_Þò™¶A¢X_݈/!¡X_Ü´Ûz( X_Û>àömŸX_ÚbמX_Ùì«gX_Øñó!8œX_×ÐUÀt›X_ÖmÕãEšX_Õ €AN™X_Ô@%¹o˜X_Ó…d›i—X_Òƒîhp–X_Ñ©l»N•X_ÐîE E”X_ÏÌ©“X_ÎOÄ;^’X_Íð_á‘X_Ì¿é9X_ËØNX_ÊÓËW1ŽX_É*¿e"X_Èw e_ŒX_Ç£Úó‹X_ÆC;!ŠX_Å1Â\=‰X_ĉßq ˆX_íc‡X_ÂH ;†X_ÁÚÉ…X_À÷å„X_¿´MõJƒX_¾y&X‚X_½ÉO8X_¼MìÔ5€X_»5 LX_ºJÇ!~X_¹åa}X_¸0|X_·ç~S{X_¶‰%UzX_µ—¸ý yX_´–‘$xX_³·Î¿XwX_²Y<µgvX_±þå(CuX_°ÊØUtX_¯3ÁcsX_®(¿GrX_­”* qX_¬¦¨fpX_«1ñcoX_ª|*nX_©FG"mX_¨ûlX_§‘ÃÃ4kX_¦éµ!$jX_¥¯i iX_¤ŒÈIhX_£“R{EgX_¢a7æ[fX_¡.HYeX_ ga dX_ŸC† cX_žJ>bX_hxôKaX_œ¥oE`X_›–Ù~E_X_š\â ^X_™ú ?[]X_˜Qæì.\X_—Òêƒs[X_–=~0ZX_•˜ÌXYX_”©çXX_“&{QXWX_’âQŸrVX_‘yŸ8?UX_ÇðTX_ë6[3SX_Ž~®uRX__F DQX_ŒöáPX_‹…LœCOX_Š]%uNX_‰kåMX_ˆH1bLX_‡V÷ÛUKX_†Nr¸&JX_…][ègIX_„-ñZ0HX_ƒ±ÚFGX_‚äB×BFX_ÿ|a@EX_€žÆDX_³¿ôGCX_~ –ì?BX_}«÷;AX_|Eó‘@X_{Š‹¹?X_z¼ûÀ*>X_y¸­„M=X_x)æœp‹:òOX_=hàÎWX_<(ñ’;X_;C?–IÿW_:Ää—$þW_9×&1ýW_8›%üW_72 m0ûW_6AÒCQúW_5ü=PVùW_4‹1{gøW_32mˆ[÷W_2—’GöW_1EL õW_0_º-ôW_/£ëå!óW_.­CêòW_-ä)m;ñW_,;‹¹RðW_+äÒ>"ïW_*¿FîW_)$Ó©ZíW_(…Þ®`ìW_'ʰBëW_&ŠX{>êW_%ãW•OéW_$RŸ–-èW_#·(`çW_"ULcæW_!·„G9åW_ #̾SäW_Hû[ãW_¤û63âW_l áW_¨%q;àW_‘k`kßW_ϘWÞW_žo /ÝW_§o'@ÜW_ùðlÛW_e«FÚW_îë.^ÙW_Î-ØW_ó:—e×W_ð•—nÖW_5É‚iÕW_gôaFÔW_ÇáfÓW_%¹ŸlÒW_ LEoÑW_ _ˆÅ8ÐW_ öSÀ&ÏW_ ˜z.ÎW_ ¢†ÍW_x¥áhÌW_Ó^ˆUËW_Ž 27ÊW_š®„kÉW_”Ái ÈW_QÇW_‰ÆW_ ²RIpþ¡ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8‰Y`â2Ì6ˆY`á&²Z%‡Y`à퓲N†Y`ß쥅Y`Þ¤it„Y`ÝÛ>$:ƒY`ÜX“`S‚Y`ÛÄ-Y`Ú(¡üE€Y`Ù[¶IlY`Ø×V~Y`׫ÿO}Y`Ö»á²0|Y`ÕMÂhM{Y`Ô¤j“hzY`ÓD$\dyY`ÒdÎÅ2xY`ÑW¤pfwY`Ðt¹&vY`ÏãiuY`Î.ßUOtY`ÍðÚgsY`Ì^¼–'rY`Ë Ñ[*qY`Ê>„…dpY`É:$_<oY`ÈæíUnY`ǵ…¯CmY`ÆP†lY`Å]æUkY`Ä2ê%mjY`ÃGBÇpiY`‚Üw(hY`ÁUŽgY`À“z+fY`¿ßTGeY`¾³1]kdY`½ýpL^cY`¼®Ñ%NbY`»‹‰2maY`º Ô–;`Y`¹È·_Y`¸øÔ¡^^Y`·wQŒC]Y`¶êó¢\Y`µMÆ"[Y`´ÏjI>ZY`³€»\YY`²)ÅXY`±ó\m5WY`°„êcVY`¯#ú$UY`®BlUTY`­%,mbSY`¬£KRY`«ˆþÕ QY`ªêI7PY`©çˆOY`¨„/¿MNY`§ ؃ MY`¦š€n-LY`¥!•—XKY`¤´#MEJY`££¥XIY`¢^·f HY`¡—AcDGY` 0pFY`Ÿ'<`uEY`ž\œµ"DY`å¼nECY`œ“´BY`›)@oAY`šß´Ie@Y`™«\?Y`˜¨æB>Y`—iÌ{r=Y`–$•=bY`wÞpY`v+±ùMY`uœ¦ï2Y`té'ÊY`sõ‚˜OY`r%ĬLY`qþ,ðY`p¶žhY`o[\“vY`nÑYÍY`m¡È$UY`lŠeY`kV7uY`j¡P,4Y`i9f‚<Y`h„ôqcY`g‹Îô Y`fâÐqV Y`e'>5 Y`d¡¢2 Y`c 8n Y`bER„JY`a¬Mˆ=Y``²|ã7Y`_³ŒdY`^bÀ/Y`]´W–mY`\ +Y`[g/ZY`Z¢»¢%Y`YÏÀ ÿX`X6¶RWþX`W5–uýX`Vxvx]üX`UëúÙûX`T@ä/@úX`SÊûNMùX`R-Ó"øX`Qjy1÷X`PÑJöX`O{¶ýõX`Nxø ôX`MP« )óX`LÑB“òX`K‚7ñX`JW)F]ðX`I]¶X.ïX`HéFˆZîX`GÚDo_íX`FâÊaìX`EõaOlëX`DV£T6êX`Cµ2-]éX`BK‚èX`Aý¸‚AçX`@‡žz9æX`?û«-åX`>œóGäX`=9TãX`<1 =!âX`;lA'áX`:WÞ¾%àX`9K»xCßX`8õÝf5ÞX`7®z)ÝX`6¾'·ÜX`5*z¶ÛX`4ù°J<ÚX`3±°ZvÙX`2ò€ØX`1€3-_×X`0ª iÖX`/êõÀÕX`.ùüBÔX`-s pZÓX`,-Ïä:ÒX`+}x uÑX`*{ÊÃCÐX`)ôxneÏX`(…¡)ÎX`'-MÍX`&ªÔÌ]ÌX`%X~lËX`$.”²#ÊX`#P XÉX`"ê°ÄpÈX`!LJjÇX` Ƀn ÆX`§² ÅX`â ‡pÄX`æåùTÃX`wCiÂX`¨c•ÁX`Œ“Á2ÀX`Ëc°&¿X`¶]K¾X` ’½X`ku¼X`xST»X`©º ºX`*ü¿ ¹X`‡1¸X`7ç/·X`½º?¶X`{1%EµX`÷U¬´X` 8ê«L³X` øÖñK²X` N}&?±X` J¤¡°X` ,·H4¯X`ÿL X®X`ZDÀ­X`maxr¬X`áIH «X`† žKªX`D¢P©X`jÔ!¨X`ã1ª.°a¢ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8kZaâË)]jZaáE§ÙiZaàCÅkshZaß²Á-EgZaÞ¨“rnfZaÝ]‹–eZaÜ^–óGdZaÛ¯D/cZaÚu@bZaÙ8RRaZaØ 1 `Za׺:õ_ZaÖ5˜BJ^ZaÕ¹H.u]ZaÔó[ñ\ZaÓÃFäq[ZaÒ*k˜ZZaÑUª—?YZaУ‘Ï2XZaÏ>Ð$WZaÎùuVZaÍÙ¼µ UZaÌ7êTZaË­©XSZaÊ~¾YRZaÉV³ž)QZaÈh¦1 PZaLj½1OZaÆ×P“.NZaÅÆFÄfMZaÄk³RLZaÃg üKZaž§œ JZaÁå9ÕoIZaÀS¿otHZa¿åã-?GZa¾WW:FZa½&Ø mEZa¼¢%DZa»KÊ$CZaººÜBZa¹fk8 AZa¸ÈÞ@Za·qå“O?Za¶Ý•n>ZaµžEL=Za´ µ?ÝYaTžÿíFÜYaSŸ[Ž0ÛYaR>¿”ÚYaQ2ò"ÙYaP‰T-!ØYaO“T×YaN*[jÖYaM:?%ÕYaL]4,ÔYaK*°+ÓYaJœlÁeÒYaI‡ä@ÑYaHxGATÐYaGbò-ÏYaFÔ¥*ÎYaEÏÄÁÍYaD(¾EDÌYaC¡Ä®oËYaB»þ‰GÊYaA )jeÉYa@Áí8KÈYa?»¿rÇYa>¬vRÆYa=(ä† ÅYa<RÛ7ÄYa;ÑëDÃYa:ÒéCÂYa9ƒŠšAÁYa8)ƒ9ÀYa7¢ Ê*¿Ya6fÂÖ"¾Ya5l Ë4½Ya4a¼Ya3#97>»Ya2—¸ ºYa1O!¹Ya0½^(¸Ya/×ïP·Ya.f™¶Ya-Œì…bµYa,²d¤N´Ya+:z“O³Ya*´^Õ²Ya)©‚9±Ya(9ÈI°Ya'3u•1¯Ya&ZmJ®Ya%)V­Ya$àÖu$¬Ya#ŽL«Ya"_²eªYa!˜ ²A©Ya +²ã:¨YaÛ_ §YaUަ=¦Ya \vm¥Ya¨“â ¤Ya/ÜK£YaÈâYa¼u=¡YaŒi YaCÕ[ŸYadv(žYaÇ…ŽeYa|ØœYaTþ2›Ya±®nšYa}d=™YaMrK˜Yac€;9—YaذK–Ya  â$•Ya ²u”Ya }u\“Ya ”¼Gf’Ya 3Bj‘YaSž Ya`¢uYa¾v«BŽYaGaùYYaÕÛŒYa„RL‹YaC{ ŠYaê¢DØÄ¢ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8M[bâ£ÂL[báñW§NK[bàâ[ÀVJ[bßyÞ: I[bÞdDpH[bÝÐzG[bÜ‚ï²F[bÛ€¯÷=E[bÚji D[bÙ~‰õFC[bØm:…MB[b×x¡ü>A[bÖ«Ë@@[bÕϺ|J?[bÔmûs>[bÓ;j¥7=[bÒÃÓg<[bÑ! u%;[bÐZm;:[bÏ’B9[bÎu¬Œ!8[b͉ډl7[bÌÅü66[bË¡p¡U5[bÊÊ8Þ4[bÉùG[3[bÈõ ¶W2[bÇvuYT1[bÆ7ž0[bÅe5Í2/[bÄÔ$º .[båć-[bÂŒ§ÖU,[bÁá @+[bÀ÷î‡*[b¿ä”2)[b¾g`¶ ([b½úò0'[b¼ ¨g&[b»ñ ¢A%[bºÓû)$[b¹#[b¸ ¦ˆ:"[b·p#& ![b¶ ÏÞY [bµL„4V[b´3¤ms[b³0=Ëa[b²¬^è[b±F°‚AF[b¯ÔÏ C[b®¿¡«P[b­û_êR[b¬«ù u[b«TWº>[bªüÁ©F[b©Õè$[b¨¡PŸ3[b§rr[b¦Ù!,T[b¥Ã×NW[b¤®i5u[b£§È# [b¢«€ê3 [b¡ôˆÊN [b ÑœA [bŸuçIB [bž/þÈ*[bv‰Ÿd[bœæf[b›cl9t[bš‘D_ [b™¿µ‰[[b˜=î [b—Û%Io[b–Ÿ%LR[b•´T-ÿZb”®+ŠþZb“Ø"ý7ýZb’À£lüZb‘†EŒjûZb(j5EúZbjJñùZbŽž@ øZb$8P÷ZbŒ³ öZb‹ŠO“8õZbЏGòGôZb‰Þ †SóZbˆÄœòZb‡1d0ñZb†Wd#ðZb…ºàj&ïZb„Ö†aYîZbƒ6-ÖhíZb‚ÄŠ$ìZb[*2TëZb€Ž€0;êZbÌ%Å-éZb~åD@DèZb}(EÅ"çZb|&YKgæZb{´²K(åZbz= äZby‰ÏVãZbx-ú¾SâZbwÇOáZbvôç7àZbu(z3(ßZbt¯LýiÞZbsU»±ZÝZbr‡§K^ÜZbqÚ2lÛZbp·CÖÚZbovââJÙZbnbÜEØZbmÕÊ.×ZblƲ|(ÖZbk‡8ŽÕZbjǵ!0ÔZbi Pá`ÓZbhZ8NÒZbgà½Ã1ÑZbföUiÐZbe{\/ÏZbd¨¬¥-ÎZbc÷øqmÍZbbvåñÌZbaf;kËZb`¦`¯=ÊZb_0’ôÉZb^ µ‡ÈZb]B|ÇZb\‡LÂKÆZb[W!$fÅZbZ•÷çÄZbY€‹+ÃZbXJ‡'ÂZbWž÷jTÁZbV fAÀZbU u¿ZbTžwÛS¾ZbSÅh½ZbR«ýìc¼ZbQãIAO»ZbP°/f"ºZbOÜ7íg¹ZbN lÞu¸ZbM¼öÐ>·ZbL+°‹@¶ZbKæ‹“uµZbJúw^´ZbIà¿I³ZbH9²ZbGþð, ±ZbF sl°ZbEAq:¯ZbDQ˜Â/®ZbCEç2k­ZbB]v¬ZbA 3-«Zb@©ÙgGªZb?²'™*©Zb>ßÉh¨Zb=Ì6 §Zb<>ל>¦Zb;÷“²A¥Zb:e­£a¤Zb9x×¼)£Zb8€¢Zb7¡´-¡Zb6õ Zb5»-šŸZb4`)8hžZb3ÐY5sZb2Õq˜PœZb1õÌÊZ›Zb0°‡a'šZb/&àJ™Zb.¨ŽW˜Zb-L„¸n—Zb,­zuq–Zb+ KR•Zb*ÚHËS”Zb)÷3f“Zb(¬ìŸS’Zb'¿#@‘Zb&åêVZb%HzZb$œ Ë#ŽZb#ªòKZb"Óž;ŒZb!' 1'‹Zb tä1cŠZbK'‰Zb³È5ˆZbÅÿ߇Zb÷#A†ZbÖ ï3…ZbƒÎ©„ZbDæ*sƒZb. ²<‚Zb&CZbæO7+€Zbl\m ZbÒÓK~Zb®‘MP}ZbM<<|Zbd—Þ/{Zbyù zZb’‡CyZbq;íxZb ¶F\ wZb h°àuvZb %‹RuZb IÂOtZb crQsZb"ªªTrZb9Œ BqZbG;&>pZbu”ÏsoZb6¢ƒ_nZbñ‡‡mZb îhlZb®äQN(£ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8/\câ³Iy?.\cá?Q-\càãø1,\cßö²ÏH+\cÞk<# *\cÝ~Óá")\cܨ©ã,(\cÛi2&-'\cÚ…:Qi&\cÙm^k0%\cØWÜ $\c×ü*î)#\cÖ„‰)"\cÕLy%!\cÔÉ A! \cÓ[Ûo\cÒX‰ÂT\cÑãpghŠ[c=øm'‰[c<ŽB§Cˆ[c;Ûþ²S‡[c:4J@+†[c9 Ø+h…[c8ò/ÁN„[c7aêʃ[c6e5;l‚[c5ƒ? S[c4óÎ[n€[c3“y4[c2–>X~[c1;y}[c0)lÌ2|[c/(3Â,{[c.„áz[c-8l+y[c,fµIBx[c+ÓB;Ow[c*µgþ v[c)Þ Au[c(æû t[c'RnF#s[c&_À¥)r[c%Š‹ˆAq[c$f!Zp[c#h¹^0o[c"?L9n[c!±[om[c <ëõRl[cr´k[cÄ·ej[c…þ°Ri[céÎñh[cÓ_ug[c£6&sf[co„ìre[cn¯¤d[cÒ»]c[cí”9rb[cí“âVa[ci¡S`[cn D+_[cY] ^[cñÿ ][cîa\[c°26[[cƒ-Z[c ‡§*Y[c îFxEX[c bíaW[c áÐeV[c [p?U[cíà`@T[cöš|pS[cK?sR[cKõaQ[c,bžTP[c7Ú`$O[cVù> N[c·ìD(‹£ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8]dâž³:F]dáææ8]dàá€í[]dßèèî^ ]dÞÅ,  ]dÝu[Î ]dÜbi´` ]dÛû – ]dÚ,ø¹t]dÙÐké9]dØP2-I]d׆æ¼P]dÖ¯Xø*]dÕC•4]dÔ8ÈŠ9]dÓŽW:U]dÒù–"]dÑ´Òÿ\dÐj`þ\dÏþd/ý\dÎ+,Yü\dÍ2 vû\dÌ03K>ú\dËüAGù\dÊÒhø\dÉÚV‘÷\dÈ\ B7ö\dÇ—èõ\dÆ`·Uô\dÅÏ“aó\dÄ,¡Î0ò\dö^^ñ\dÂ!×Ü0ð\dÁl%Yï\dÀ†puî\d¿Ê‹rí\d¾I÷Iì\d½‘ýÊ&ë\d¼«Ÿ2ê\d»§ý#é\dº!ñè\d¹ ç\d¸N2æ\d· •óLå\d¶/œ‡ä\dµ&¸)ã\d´ŒÏlâ\d³(Èjá\d²æ.à\d±æ}”aß\d°ÍÅîgÞ\d¯/ÆÝ\d®IÉ‹cÜ\d­Vܹ%Û\d¬ ÿÚ\d«CeÌiÙ\dªÄŠ:Ø\d©Œ wM×\d¨cŠOfÖ\d§_•knÕ\d¦¯¼#0Ô\d¥ÀåNÓ\d¤0ßF`Ò\d£WKj-Ñ\d¢".ÕSÐ\d¡õ¥NÏ\d  HÎ\dŸ¢y‚XÍ\džpêÙÌ\deË\dœYóÊ Ê\d›39É\dšÞ‡È\d™(ž¯dÇ\d˜”Y#XÆ\d—õÅ\d–?ŒìrÄ\d•¥Qq Ã\d”IbÙÂ\d“¸;Á\d’H>uÀ\d‘wé4B¿\dǾ\døôp½\dŽ‘åßb¼\d’½9»\dŒßÚ|º\d‹d‰ÙB¹\dŠÞMS¸\d‰£zj·\dˆ/¶$¶\d‡Xq¹µ\d†uEr´\d…;É¡³\d„8–\²\dƒ€Hˆr±\d‚…+Ë6°\d·x*¯\d€J†·K®\dolÜU­\d~¿d ¬\d}1éP«\d|lLEXª\d{ÅŒÇ\©\dzè¥øh¨\dyï²M§\dxÐ¥¦\dw‡‰±V¥\dv h ¤\duÒ Ú7£\dt(òs¢\ds–PI¡\drå—ŠV \dq|??Ÿ\dp&xmž\do-\ \dn5Djœ\dm<ôGc›\dl5Ó´4š\dk…Ü™™\dj™Z˜\diô€¸s—\dh CX–\dgÁòv•\df¶1 R”\de¶ 2“\dd6ÂÐ&’\dcS$X‘\dbÂRo\daf,\d`´ÌtŽ\d_úkw4\d^G×-Œ\d]~D“ ‹\d\õæ«AŠ\d[aG‰\dZæjIAˆ\dYþ,wZ‡\dX_—=<†\dWrL…\dVì…X„\dU¬sjRƒ\dTpÇ‚\dS¸;„6\dRFÎÔ"€\dQê(0 \dPø‡b~\dO°gÐ}\dN6[íF|\dMAæ18{\dLe-wtz\dKéky\dJ=O¬!x\dIjÌobw\dHçþ!Pv\dG¡rqu\dFô·®!t\dE¹Ÿqs\dD3Zr\dCÈz-Sq\dBÒYvp\dA…o9jo\d@jn\d?æºFm\d>˜m@l\d=öMj^k\d<?Mj\d;s*9i\d:$òh\d9³·ag\d8Nqf\d74Í"e\d6f¥•/d\d5‡žÖc\d4À²2Kb\d3–f!a\d2³ax:`\d1¶6U*_\d0KÎŽ^\d/MïO*]\d.—…\\d-ü`[\d,±CZ\d+œpÄ'Y\d*vÁ@X\d)ÊÙ·UW\d(?V\d',ѶEU\d&KóÆrT\d%ŒW‰gS\d$Ãõa`R\d#ëžÇZQ\d"íº)P\d!Ë– O\d ä5=EN\d$OUM\då)x\L\dNõkcK\dr™?J\dÞê&WI\dMs1H\d{zwmG\ds®NF\dÏ>‘E\dÓГ@D\d |Ý C\dK˜uB\dfr(A\d³ŸÏ@\dO½i?\dL‚Ô]>\dgºöe=\d†à{H<\d 7».e;\d 14:\d J×?r9\d z&Z8\d |<&7\dhoŠ\6\d_Tÿ5\dŸUÏ=4\dµ*ËT3\diŠ2\dɲd"1\d)5T&0\d–ÔYPÀ  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8ó]eâëlyMò]eáX‡ñ]e๥{eð]eßI”Etï]eÞ­o2î]eÝBTí]eÜ«7é*ì]eÛÉF=oë]eÚ Xì ê]eÙe»“,é]eؘ—;è]e×ïðç]eÖµy(æ]eÕ‰‚#Oå]eÔÎqqä]eÓ_ÉÒ/ã]eÒY_â]eÑòÓdá]eÐrøUIà]eÏì ‚lß]eΡ©‡@Þ]eÍý2§Ý]eÌކeÜ]eËV Û]eÊœEtÚ]eÉ ¯ºÙ]eÈQò&Ø]eǸªl×]eÆ}L#Ö]eÅõbwlÕ]eÄC¥7Ô]eáliPÓ]eªä]Ò]eÁwQtTÑ]eÀž\\IÐ]e¿åOg:Ï]e¾3üÎ]e½F‹uÍ]e¼<®¥3Ì]e»û“fË]eºTÊ]e¹ª©cÉ]e¸è¶Q$È]e·±ÜoÇ]e¶/AgÆ]eµúX Å]e´íd²]Ä]e³l‰ËiÃ]e²P*‘#Â]e±uÅ®FÁ]e°P}ûÀ]e¯Jz)¿]e®`hc¾]e­’ßËQ½]e¬ Qg¼]e«ä.¨!»]eªÆ£gº]e©\E°1¹]e¨v—\4¸]e§d¤J·]e¦KJ“¶]e¥ÌUfZµ]e¤ ´]e£ÆÈ|#³]e¢CUYQ²]e¡XàK±]e ©¡Á°]eŸ•¼¯]ežò qq®]e8˜1G­]eœ7DBB¬]e›£s «]ešÔ(žsª]e™Õ¼ø©]e˜Ä*¨]e—ët§]e–Ãcý`¦]e•wŸ¥]e” Ðb¤]e“¢Lq£]e’Ø{Z¢]e‘½1e,¡]eD£^9 ]e|RÀAŸ]eŽŽ­]až]eªÇ 5]eŒn+dœ]e‹Ÿ!‹›]eŠû#š]e‰©Õ+Q™]eˆb” C˜]e‡…Lb—]e†‰ –]e…ªÃ;3•]e„'»”]eƒ/Àœ=“]e‚fjËP’]eqÅ6‘]e€Þä¯H]eOïýe]e~cÉJŽ]e}a‡I+]e|ß“~pŒ]e{(v‹]ezí0-Š]eyM\r‰]ex¦Ûˆ]ew»Uæf‡]eva[½3†]eu_Új6…]etÂþí7„]es™…»ƒ]er.=B‚]eqšÛ½]ep»tT€]eoï‹ÒC]en™Ìƒ~]emÄUU}]el>!µQ|]ek‹y8{]ej!ÕHz]ei¶ÐÏy]ehhîEx]egYÔ¥Bw]efEí¥Yv]ee¬+]u]edQo"lt]ecbs]eb .2cr]ea|]fq]e`pï´lp]e_RúÕKo]e^N.Nun]e]‘Xum]e\k‰Mdl]e[W+€=k]eZ볞>j]eYGÍ¥Ri]eXùVø.h]eWÉÕg]eV0Vckf]eU(#04e]eT‹^|;d]eS@  uc]eR£ohb]eQJeAa]eP°þRi`]eO ç²Q_]eN£lB^]eM‡PåA]]eL#«i\]eKÈy[]eJrw_-Z]eI¼d›_Y]eHù¸MX]eG.rØnW]eFŸƒ.qV]eEÕ¼NU]eD¦³ƒlT]eC»3\S]eB.ÃMR]eAßj’nQ]e@æ¾^P]e?÷Î7O]e>¦d¹6N]e=#¼§M]e<]Ô‡L]e;#Þœ#K]e: x^J]e9ÑÇýqI]e8> »VH]e7ðÉølG]e6'öBF]e5A’qE]e4!M D]e3ó»¼C]e2¦äèuB]e1)®m'A]e0ê[=_@]e/Üó<?]e.Ù…>]e-hº =]e,À›õ.<]e+D™¼5;]e*u¢e:]e)2{2v9]e(‡¾T8]e'ãOÒY7]e&¦Nn/6]e%ÇÜ&u5]e$ÕÂÓ/4]e#7Tµ^3]e"8Ù72]e!ÃHM1]e ™.F)0]eƒ†/]e Ee*.]e‹ ¿-]eåfD,]e&Õ´h+]eª³/*]eý^\)]ea¨«`(]e4X9,']e›<ßr&]ee\%]eô´.$]eËÐõ8#]eÕç"]e‚¡-U!]exý ]eÑÓþU]eKÙ¢]e ´ø/]e ½Úg3]e 9%Ð ]e Œ,ÄF]e ¿uc]eþ)]epŽîG]eÖM=]eóY]e%o5]eµ¼$]e¶±"]eކxQ¤ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8Õ^f⤗åeÔ^fá°ÎÁ>Ó^fàù˜öOÒ^fߢ÷`Ñ^fÞ›… Ð^fÝ&þrrÏ^fÜhY<Î^fÛ‘Ø>AÍ^fÚôzÎ@Ì^fÙ¡ù‹Ë^fØÂq‚LÊ^f×9îjÉ^fÖiUÈ^fÕR1ÃÇ^fÔ‰Ìö Æ^fÓQ]>Å^fÒLrÄ^fÑSfDRÃ^fЃÊNEÂ^fÏFõ%:Á^fÎyšlÀ^fÍ~x±¿^f̨2²[¾^fË-Ý i½^fÊ¢’-¼^fɬ¦[»^fÈFøÎº^fÇ¿–?D¹^fÆrÒ¢K¸^fÅq‰f·^fÄ]M¶^fáõíµ^fÂ3<4´^fÁÓ.¹T³^fÀ›ž$²^f¿ W|@±^f¾2ƒ¤1°^f½Ç•Í(¯^f¼Ïúñk®^f»»ÿM­^fº“$lo¬^f¹p@¿0«^f¸¯B÷Iª^f·ü«-T©^f¶Ãæ ¨^fµ6úçE§^f´Dp¦^f³ ì7¥^f²ÚË×>¤^f±R-£^f°žV©U¢^f¯KQ!¡^f®Ü僠^f­—† Ÿ^f¬çäÑfž^f«ä#;^fªžÙœ^f©1{›^f¨ª9ò;š^f§ÑÜ´F™^f¦>M2˜^f¥AÂÉ*—^f¤w…W–^f£põj•^f¢ «#”^f¡Ôs“^f <ð¿K’^fŸwÄ[‘^fž3—0^f^º2;^fœ ½Ž^f›—x>^fšk}ØŒ^f™xH‹^f˜m%[Š^f—ÿI0`‰^f–\.ˆ^f•ŠÈ¦B‡^f”iJxY†^f“ŽzÖ…^f’(l„^f‘ÐUƒ^fde1‚^føé•K^fŽù@=g€^f·ÉVS^fŒ8êfv~^f‹Í„@}^fŠ.qcX|^f‰iw({^fˆËùdfz^f‡ûa>y^f†¡µx^f…1ú´[w^f„Ë5v^fƒ)(†>u^f‚¡ oBt^fÝ5s^f€kZ¥Xr^fœŒXq^f~óe_^fl+UQ^^fk3Ö]^fjÈ`s \^fišÿ¯ [^fh/âWZ^fgx‚d@Y^ffîEX^feîI¨W^fd½a]V^fc-U^fbéŒh\T^faØå•YS^f`t99UR^f_ˆu|Q^f^xZP^f]FŠÜO^f\ÖÇ% N^f[MfÅM^fZ€” kL^fY4…ÝK^fX£ÍýsJ^fW2Ú RI^fVUëyH^fU}CcG^fTpŠtF^fSárÝ>E^fR$rPZD^fQð´[^C^fP*™LB^fOVÝRXA^fNË[@^fMg+¥F?^fLÁ³q>^fKPrD@=^fJ ¥Ÿh<^fI@˜¯;^fHº´ƒZ:^fG‹ec9^fFQu)8^fEå{€7^fDÙO6^fCaìW5^fB`‹…W4^fA-¯\63^f@²AŒ[2^f?+ˆ€e1^f>ʼnñ*0^f=¢BH/^f<ª,ý.^f;Nº-^f:Þ-™d,^f9%Šše+^f8ÂWµT*^f7s ÒM)^f6YeH+(^f5€a.'^f4·íyi&^f3Δý%^f2è¢$^f1Ãíó#^f0Q°Ô]"^f/¶Ÿ†!^f.\;U ^f-Ã(a^f,–Qö\^f+¡:^f*;Ûo^^f)Õ8W^f(ú)R^f'¤Í¾H^f&†„0#^f%c*¶^f$®i•s^f#5—:i^f"h%k ^f!ÿC>^f €[ƒN^fwÏÚ^fèä/^f„6˜(^fŒö–;^fk!Ç ^fÌ$R: ^fBö†> ^f½²[ ^fŠÐJ) ^f—¾^fôÿ…c^f}x^^f2—?^^ffgî'^fŽt^f!âÅ5^fÞxP^fˆM”^f Áóÿ]f „ hþ]f – ±ý]f N´Ò3ü]f —“Ñrû]fõ÷^Lú]fQ+1ù]fûK ø]fžjQ5÷]f´;·ö]fñéÅpõ]fMV_ô]fû$ë% ´¤ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8·_gâià$¶_gáíEúbµ_gàÖ6½S´_gߌŒ¦'³_gÞQˆm²_gÝ…5º5±_gÜccNK°_gÛÞn‡¯_gÚé–ò ®_gÙf GG­_gØ Z~=¬_g×ÚœÈ)«_gÖö y[ª_gÕ1Bœ©_gÔ{ü]¨_gÓê×§_gÒú 1¦_gÑJvX¥_gÐ4,!¤_gÏL{j£_gάX@¢_gÍñ.¡_gÌùÓ' _gË싟_gÊ […!ž_gÉTª_gÈoÙÌ3œ_gÇu+¡›_gÆƶíoš_gÅŽâZ™_gÄ-wÒ8˜_gÃÜç³W—_gœ¾§l–_gÁQ•_gÀ(½S”_g¿r¬Y“_g¾œžÇ’_g½þY‘_g¼¿¨>N_g»Ž_n_gºo|cŽ_g¹îâ(_g¸`4ìCŒ_g·è6¡@‹_g¶ÜÅZŠ_gµú±›‰_g´Úkápˆ_g³AÆ=‡_g²ÕH†_g±Cþ…_g°¤xdC„_g¯ÀáÌ%ƒ_g®RHÞd‚_g­ål$_g¬}Úó]€_g«+0ä_gªN1ò ~_g©áQ P}_g¨FHY|_g§éÎ9{_g¦ñðoez_g¥ÝuÏy_g¤µ*&x_g£*§w_g¢³b; v_g¡*c†Ou_g ´ t_gŸޤs_gžŽq9r_gÐ\%q_gœ¯Ys*p_g›‡Eb"o_gšÛÏQEn_g™f‚P?m_g˜_õFl_g—’šÿk_g–%ý²cj_g•—iã^i_g”Ü\—qh_g“û†ig_g’ðMU$f_g‘¿ø÷e_gC›?d_g'ú]c_gŽ–Nzb_gœˆÓ a_gŒä{%`_g‹döíh__gŠïôåa^_g‰jÒ4>]_gˆ5¤\_g‡ÆÞÈQ[_g†)”Z_g…Š[Õ+Y_g„våX_gƒ%RÓbW_g‚œñL7V_gã›\U_g€ßÞ_jT_gÀ mS_g~õT@WR_g}IkXbQ_g|zz¢RP_g{I5R(O_gz@ÓRN_gyw‰G_M_gxµÑ"L_gw–aqK_gv§Ž:J_gudŸRI_gtÑ_x*H_gsÉÉ=G_gr)ª}F_gq¦;1E_gpCœä8D_go2ìÁ(C_gn­'##B_gmz=^A_gl/RÚT@_gk(?_gj@¿ ,>_giªÜs_=_ghPÐãH<_ggUö%;_gfíý½k:_ge”›#9_gdE©o8_gc–ÅuA7_gbî±Z6_ga–s5_g`Ej4_g_¬î.3_g^ R…2_g]…j1_g\”c´0_g[/§X/_gZÐm¹$._gY˜4G-_gX?6éF,_gWÝå2t+_gVô¹!N*_gU*árp)_gT‡-¬(_gS÷QñR'_gRùê&_gQÈòR%_gP.K$_gO„#_gN:~u1"_gM… œl!_gLØÙn> _gK3×E_g=ûõµ5_g<ðà½_g;ó¼'_g:¤ÛGp_g9é«M _g8W¸†o _g7þûer _g61öZb _g5¾ÎÝ) _g4ô#Ô_g3umGr_g2ŽtŽ _g1}¸¶U_g0¬ËÌK_g/þË*_g.È–°_g-¥ _g,}]P_g+e:£@ÿ^g*K?þ^g)â=ý^g(N¸<ü^g'cW¸Gû^g&"roú^g%¿1wù^g$)jh$ø^g#´æ£A÷^g"WÑmXö^g!Z¹jõ^g èíUô^g@ûó^gW®£<ò^gÜ‹G;ñ^gœ÷j/ð^g¦suï^gㆆbî^g˜é¨Eí^g Ø‘jì^g½Igë^g0ZO ê^gwÿR)é^gÉ¡z&è^gôølç^g´!Tæ^g&Â2å^g‹£Qä^gbðB8ã^gZËâ^g o:Fá^g ‚f=à^g ³‡¼6ß^g ì-EÞ^g ÐŒ@Ý^g:íO#Ü^gm‹{-Û^g(îÃÚ^g ¤ä0Ù^gËøM%Ø^gÖR:×^gÆ«.Ö^g öCXÈ¥ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8™`hâmV˜`háâå²v—`hàæ«H(–`hßló@•`hÞ¼dl”`hÝö±"V“`hÜuKˆl’`hÛ`e‹+‘`hÚ^wQ`hÙl5ÑB`hØDø±Ž`h×3Ù˜`hÖÍ_aŒ`hÕ1‘a‹`hÔ*ÓZuŠ`hÓ÷ª\‰`hÒs<õ3ˆ`hÑ.6‡`hÐ#)=)†`hÏyµÕ%…`hÎ"Þ¨7„`hÍàù?ƒ`hÌè%‚`hË8 m`hÊ«fr3€`hÉ›Î_e`hȧý€_~`hÇŸÎ%m}`hÆI|`hÅl‰¦3{`hÄ®…z`hÃ÷ry`hÂÝ)N x`hÁð[Iw`hÀ÷;îv`h¿¥VÙ@u`h¾˜:ÑSt`h½ ·)s`h¼mÙ&r`h»,2îjq`hºžiþXp`h¹ûáo`h¸šsn`h·Ö´m`h¶½T-l`hµ%¥J?k`h´ÓÇ2j`h³ú†i`h²âãœuh`h±D¨y`g`h°¤° f`h¯êhOAe`h®5®† d`h­MÖú,c`h¬‘ b`h« ,‚=a`hª™ÌW``h©;tÚ+_`h¨ñHj^`h§Ÿ5N]`h¦_X)\`h¥¾‹á0[`h¤ »bZ`h£7gª@Y`h¢Xç¿lX`h¡î¹l]W`h ŠéÿV`hŸlœ`U`hžj@îGT`hr÷ S`hœ#˜zZR`h›È´úSQ`hšV:eP`h™âˆ^HO`h˜ÇqIN`h—ÄÍðM`h–CUã@L`h•mƒIK`h”iânJ`h“ùzM4I`h’úòSH`h‘CbëTG`hX]A3F`h(:FE`hŽ´ £D`hU+iYC`hŒw™JB`h‹˜ÁWEA`hЬ‚@`h‰3½<9?`hˆöwQc>`h‡WŒã_=`h†f8W;<`h…­;`h„®}ª&:`hƒëJ§ 9`h‚„y~8`hƒw7`h€Iž6`h¢)k5`h~±Ë%4`h}@3`h|Äíˆ 2`h{’lF1`hzŸ3{0`hytí#w/`hxZë.`hwJÚ• -`hv€Æl,`hu&¹%+`ht  *`hsæã¸ )`hrXHD(`hqÆ Q'`hp 3Ör&`hoÜ€B%`hn©çV$`hmç¹\#`hl£Ý;Y"`hkUÔ!`hjÍu `hiÚv¤^`hhª99`hgzí¯.`hf˜df`he*¢`hd¢F `hcâíŠ!`hbÒ?g`ha‰·j`h`Þ1 ``h_óDO`h^¡Û  `h]P”š `h\8”*`h[Tír`hZôå] `hY4kþl`hXª¼‰ `hWš# _ `hV—O¦X `hUë3' `hTÙD `hSs|Ç `hRYC\q`hQ&yya`hPx’z``hOUú=`hN5w`hMÈúÌq`hL«¡ÐW`hKS+kF`hJCïuo`hI— ÿ_hHצ¦'þ_hG¶-ÙDý_hFXZ¿(ü_hEšQ‡û_hDP 8ú_hC³LÓù_hBg­`ø_hAŽV÷_h@æq°$ö_h?L‚»õ_h>\®<ô_h=ªË4ó_h<ª0‘fò_h;ZV†"ñ_h:Xð_h9 e‹[ï_h8ÁÞôLî_h7#ÓÞVí_h6E< -ì_h5´_Ô'ë_h4û}‚ê_h3II4é_h2 DNè_h1°+ãeç_h0ªìw\æ_h/ÇADå_h.† Wä_h-+™97ã_h,{„Äâ_h+Áœ*á_h*'B oà_h)=Uß_h(²Ý¸ Þ_h'¤ ìÝ_h&38¦*Ü_h%uFPYÛ_h$ÍnXjÚ_h#+[PÙ_h"1ïÈUØ_h!ã[g×_h ¢å_ Ö_hìëTÕ_hgŽs Ô_hžË Ó_h™ ÇLÒ_hyÜ®4Ñ_hÇ(~.Ð_h  %Ï_h(U\>Î_hB‡ùoÍ_h¨¯QÌ_hJæÔ)Ë_hYðOÊ_hC¦À É_h* ŒcÈ_hS>%Ç_hM}%Æ_hùÝïNÅ_hëa?Ä_h >/¥ Ã_h ÚããÂ_h ƒ4!^Á_h  ±®`À_h =+ž*¿_h×2ɾ_h¡€Q½_hDW‡¼_hê>»_hyEû/º_h/ݹ_h|ͦF¸_hZðz¥ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8{aiâ‘M]zaiá´$yaiàKŸ@xaißáÄ waiÞ}a=MvaiÝ`wÙ.uaiÜÁ#UtaiÛy×sEsaiÚÆtÓBraiÙN9qaiØ(ÙFqpai×—l-oaiÖ9 #naiÕT0_maiÔb7(laiÓhHigkaiÒ#¨C1jaiÑ$iaiÐçïNfhaiÏÏÔÕbgaiÎôÏrfaiÍ)ž²^eaiÌ<‚ñ@daiË=LcaiÊAÍÓ#baiÉuàaaiÈŽúnR`aiÇh,–_aiÆÎæq^aiÅŠ‘©]aiÄŸ¹«\aiï÷ˆS[ai æDZaiÁë'8YaiÀ ‘Ö+Xai¿ŠÉWai¾™–;cVai½¤ÕUai¼Q’bKTai»/¦;Saiºâ-Rai¹Ô¨8Qai¸5É:vPai·˜„ì2Oai¶1ˆÊ-Naiµã;9pMai´€XLai³Tg£EKai²‹SÉJai±¾QœIai°”Rä!Hai¯á’D[Gai®çÐÞ:Fai­Æ¡Ñ"Eai¬ƒÖ<Dai«Ù =!Caiª§ù­Bai©iÅAAai¨É ]@ai§ƒ3?ai¦ê>ÂC>ai¥´‘s =ai¤f²'­”ò[Ö`i=€·í Õ`i<ä=OÔ`i;Iþ$ Ó`i:åtiTÒ`i9ø±ˆ0Ñ`i8TR -Ð`i7,ð,Ï`i6òÑ?:Î`i5Ë™\WÍ`i4y'U8Ì`i3âä"Ë`i2·˜kvÊ`i1%0ÓÉ`i01ÅÙ È`i/9aÇ`i.Å8mÆ`i-²ShÅ`i,7¥“5Ä`i+8Ã88Ã`i*^µQvÂ`i)S¼fÁ`i(Îý-7À`i' à,¿`i&”hŸH¾`i%Üíø[½`i$ßb¼`i#µ)"k»`i"ÒZ³$º`i!é±Ýv¹`i ½áI¸`ic–ÍR·`i›Ö¹C¶`iì‹‘µ`iõ?ºR´`i¸„bjà Å/=bjÂ5ÓP”EëajpØÅmêajoV)A:éajnc`'èajmþzuçajlÍõXYæajkS©â!åajj¡@+]äaji+lãajh Uíuâajg-Ø8áajfë9Ä>àajekO×ßajdŽÅ5Þajc;߬(Ýajb¾Ÿm Üaja´›kqÛaj`-¿—é9¸aj=QÄŒ·aj<õÍH¶aj;aMö<µaj:Àïl´aj9ТM³aj8’&²aj7La@u±aj6ö`°aj5¥Ê¯aj4U™S®aj3|':­aj2y1a¬aj1×ü0«aj0ÈbFYªaj/j2k©aj.E¨aj-«vJ)§aj,\²@!¦aj+€*Æ#¥aj*ñÁv¤aj)¶¸>£aj(¡·ÀZ¢aj'µ0ý_¡aj&øÄIK aj%‘ñ%Ÿaj$mG©Bžaj#cX?aj"½A²iœaj!8›¡<›aj :Wšaj^Þ(t™aj‘UÓ˜aj%P²q—ajÎÍÛ–ajt5än•ajÙ° 1”ají´ “ajöÓ¦!’ajz9Ç‘aj,-*/aj~hSaj´X)7Žaj¦majVKWYŒajìû/‹ajmñIŠaj¯~q‰ajº´Ó'ˆaj ¥¸½Y‡aj ß;@†aj <%¯…aj ¾\¤j„aj ÆšTƒajHéS‚aj•¾ñ ajÔC©€aj5¬ajS…S_~aj_÷¾l}aj¦EÎ*|ajëX½\XA¦ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8?ckâ”›>ckáŸÎ=ckà”§n ck°!™Ö` ck¯¤o ck®нWc ck­¼J„\ ck¬s¼ck«Â÷pckª5¢|mck© Äº!ck¨س´ck§`"œ ck¦òâ™Ick¥`={ ck¤¹ë=ck£¡–oÿbk¢}-’eþbk¡+)ýbk gÉÖ übkŸâ¶‚iûbkž²~¤púbkpê#]ùbkœH…>øbk›€ëX÷bkšUT«öbk™&+[õbk˜÷–hôbk——’³hóbk–Åzë1òbk•<¬^ñbk”‘$¤ðbk“«@ Pïbk’9»#îbk‘dNRíbk/ýZQìbkÇ3–iëbkއ<=fêbkÔÔ6sébkŒêiB\èbk‹Õà_çbkŠ®uVOæbk‰xv9 åbkˆÓüåFäbk‡Pà¿Qãbk†ã£âbk…cœ×ábk„:Í8dàbkƒ› Esßbk‚x2¥/Þbk÷rè$Ýbk€Óný*Übkšþ¸Ûbk~–xUÚbk}è*9Ùbk|!é‚XØbk{¾U-×bkz`D¥JÖbky¹~ƒÕbkxnQÔbkwÎYÓbkvñý:Òbku,ÖQÑbkt|׿uÐbksr¼0ÏbkrÝ¥JÎbkq\¼YUÍbkpÝÉS Ìbko²¼\Ëbkn%_à#ÊbkmróSÉbklƒúÈbkk])ÌtÇbkj”fPcÆbkiq`2Åbkh§¼dÄbkgH-!Ãbkfêýg\ÂbkeCZP?ÁbkdÇ›GHÀbkcÞ3ì¿bkbÜp¥F¾bkaëåi½bk`y©k6¼bk_\@K?»bk^ˆlºeºbk]gjÿ>¹bk\¸{S<¸bk[F Æh·bkZ¶!»U¶bkYÚ—½=µbkXžŠcZ´bkW‘ÕA ³bkVOıÜy`šbk=ÞwËu™bk<¨b˜bk;%LyK—bk:Šg¶?–bk9}oÖ9•bk8ü^”bk7%ÛNf“bk6êQIf’bk5*{i‘bk4y¯‹!bk3m“/ bk2ŒÝÇAŽbk1 vbk0€G:Œbk/“ç¬$‹bk. ÀEŠbk-vÉØa‰bk,ʧyiˆbk+y,`‡bk*jcÁ,†bk)¥o¾p…bk(©?ûb„bk'èL†hƒbk&yÐ%S‚bk%RßIabk$Ûkb€bk# Zbk"aö'~bk!Æàa}bk švÇe|bkŒ{bkT6zbk+¤ÁKybk(ÈŸdxbke Pwbk’±ÂJvbkÒ0'lubk¬+ÃDtbk}¾[sbkU'rbkY˜qbkíß*lpbkùõobkëelnbk —+mbkÉÓh2lbk’“åkbk f5jbk $Ìðoibk Ѐšhbk ‚ªp;gbk ,Ÿ˜fbk U`±ebk á#ddbkX¹ËLcbkòè!Sbbk‹abk‡4È`bkÕù\p_bkrd‚E^bknÒ€¤¦ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8!dlâo“Üi dlá*G+dlà´÷QdlßÅü•KdlÞO}ú(dlÝû9±qdlÜCaQUdlÛô:idlÚs!@+dlÙ2H"dlØ C@dl×¥’VLdlÖB(LdlÕ¨ˆwedlÔÿy³\dlÓxNê$dlÒ_WàdlÑýï·dlÐK‰ÆgdlÏ!€—F dlΘ? dlÍ„n dlÌô©B dlËÙžI dlʵ½wdlÉ;lÓdlÈ?]SdlÇ‘9‡dlÆ€KƒMdlÅLR#CdlÄ£¯¥dlé–FdlÂÛ]fddlÁ¹h{WÿclÀ‚/zmþcl¿Nõ6ýcl¾‡qFücl½F 3ûcl¼öÜ÷(úcl»Î"Vùclº2mUMøcl¹a"R÷cl¸¦¬Øföcl·†ó='õcl¶I1—VôclµŠûTócl´-YY4òcl³>k~?ñcl²eÔxðcl±=wpïcl°-îîcl¯¾|õícl®XÏ Wìcl­¹”Õ%ëcl¬š"$êcl«$„ðéclª»´…Fècl©òÀ9çcl¨íaæcl§×´dclB•E“€clAý™¤vcl@^á¨e~cl?eC~F}cl>†ln|cl=¶ä€{cl<£Óv zcl;£-;ycl:4 Ï xcl9jû¿swcl8¥mçvcl7ÏÌë'ucl6±E[tcl5éÁ'scl4sü“rcl3Î^qcl2åš¿pcl1«É8ocl0•d·Pncl/Øv1mcl.húclcl-»„Vkcl,´2Ôjcl+ ›icl*{vhcl)‚:agcl(NOfcl'^È ecl&Bý¬odcl%|Ýccl$uÐÊubcl#/–J4acl"w-•`cl!¨ü'R_cl Âo:^clÉá2]cl‚Û±\cl9lì[cla5F,ZcldÐ]Ycl¸kzXcl¼â[^Wcl\ÐW Vclâ06HUcl„TclÉFScl9Ž9Rcl $ŽQclCLPclÚôhqOcl$Ø’`Ncl[„xLMcl¶ˆ :Lcl 2Œî-Kcl ½,¯?Jcl ¨²UIcl @Ñ£hHcl Ñþ*4Gclè‹‹Fclgb;EclÖGDclÍÓ¢#CclmºxqBclø÷èLAcl&!vL@clŠ*¨§ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8emâGÿ@ emá sŠiemà'ãem߬MPÿdmÞ•?/þdmÝå­oýdmÜö1a^üdmÛ$7ûdmÚ¿5çAúdmÙà­¢@ùdmغTIødm×wÝk÷dmÖ«ô-AödmÕ,ÚtõdmÔ¢â'ôdmÓÞEPódmÒ*¡REòdmÑ'lšNñdmÐeßg\ðdmÏä • ïdmγjUîdmÍÙ&çídmÌf·žvìdmËNMhëdmÊÑÊbêdmÉrE#.édmÈÈ[mèdmÇ\yÀ(çdmÆœ½DædmʼnA¾jådmÄÈSiädmÛE_0ãdm‹3[bâdmÁ5©k&ádmÀµ¯ëhàdm¿•¯NGßdm¾&ÜÅ-Þdm½„¾Ýdm¼FcFeÜdm»¬R?MÛdmº6MªvÚdm¹9¼`KÙdm¸p”µYØdm·ÍBQh×dm¶U‹‡/Ödmµ{ Ã:Õdm´yúßjÔdm³F—½:Ódm²tùepÒdm±¸€KÑdm°~æ+ Ðdm¯f¹PÏdm®ð &Îdm­õq{HÍdm¬……0fÌdm«uQN9Ëdmª[=›`Êdm©?®ä"Édm¨DE¢6Èdm§{V^Çdm¦þ cÆdm¥âèBÅdm¤æ)©>Ädm£õƒ Ãdm¢aÛoÂdm¡ +-KÁdm Oà=YÀdmŸx¼W¿dmžàÊI¾dm §å½dmœ<ál•dmt- “6”dmsò)³8“dmrðÓR’dmqšðº‘dmpb&IadmoºáØdmn7Ê(ŽdmmÍåñdmlJº‡vŒdmk7+-‹dmj‘h­ ŠdmiPÂnY‰dmhbæ‡+ˆdmg;#2‡dmf…1Î=†dmed’áp…dmdZx"+„dmcJ òƒdmbÃKA‚dmaô–edm`a’>v€dm_VÍ2Ndm^\ãln~dm]¬»Õ2}dm\ùÖa|dm[òg3{dmZ![[zdmY/ÂFydmXÍìÐaxdmWsãn8wdmVOhÛvdmU“ØudmT‘—ŸNtdmS6ò,?sdmR“M&lrdmQ”@WRqdmPo»†pdmOÏ´ÔrodmN<zendmMú÷mdmLÔ/£ldmKUî¿ekdmJË jdmIþçÛ1idmHá•hdmG:‘Û gdmFLÏ•/fdmEfá¼edmDè¡éddmC‰NjcdmB˜G.!bdmA´ÖhCadm@Èg‘c`dm?jÏ;_dm>ª.°N^dm=…Ê]dm<%»ËH\dm;=ì"[dm:¹Ææ+Zdm98ÑøHYdm8âßaXdm7 äRWdm6bç#Vdm5ûê}sUdm4Ç6¦+Tdm3Ã,‡pSdm2XÃdRdm1uW£mQdm0û„1qPdm/æ¶ïvOdm..gxNdm-×ÛüFMdm,tX¿^Ldm+‘“úqKdm*²FJdm){HykIdm(RïñHdm'ŠÙ|<Gdm&Í-ÄhFdm%4_¶QEdm$ú!½Ddm#. ^]Cdm" <îkBdm!C|HAdm D¨oi@dmñÃ+?dmÌ—cf>dmì}w=dm¬ñ9¤en¡*€+£en s΢enŸò­P¡enžOyZ encn–kŸenœ÷ýhžen›@enš’;ÛIœen™ÿG ›en˜æ—šen—œ£öl™en–*Õ;˜en•!ÍçD—en”åßo–en“isv•en’;K”en‘®m$“enðk’enÚûÕo‘enŽp;-enjOenŒd(ÈGŽen‹¶»F%enŠݪ‹VŒen‰ß ;‹enˆŽÝ§Šen‡͉ ;‰en†‹éË8ˆen…€;Z‡en„n¿Xd†enƒ 3ìd…en‚Û è/„en˜mƒen€úC°_‚en3ÆtEen~Ñ2»!€en}øµD[en|5¨ð~en{õ+T}enzÕÀ"H|enyÅ^aB{enx·WuzenwÁ§^;yenv”%qxenu6r†Jwentyî˜ vens²ÓdRuenr>ì‰ntenqí©senpwÓ (reno¹Yôqenn%úppenmåH» oenl)Þž!nenk!kmenjôõ@leniq¢ kenh_^ýMjengJKienf¥òR*heneÑ&ëOgendï;fenc¨Û¨aeenbÌùçidenaŽkcen`ý„@ben_ÛšÖDaen^#õ!`en]pÝÄ9_en\>h9V^en[Ä ]enZ1Í~H\enYå*[enXG¹Å.ZenWâQ³YenVø2SXenUŒz%hWenT;W*VenS…’•fUenRÇ¡Ê"TenQ’ŠRSenP‹]RenOÙ¨TQenNïRz PenMmüOenL±V£DNenKt?a.MenJi…mLenIŽËGuKenHr[ÙEJenGýªß?IenFÁ8]HenE aÐGenDª½$!FenCð^%EenBÞ,hDenA@¿Cen@ÆÒeBen?Ü]Aen>?¤{h@en=½‚©+?en<Ìó3U>en;O{Ë)=en:‡_“N!en5·KT en!^en©)o5enØöaen÷°oenýo\en~˜ÇZen|enÒauen~t±#enQÚQ5en&$¿4enųáQen>÷©@enzÃÆjenD=Ten›‚.en }´en zêen t<W en 62‚5 en 5pU enÁ5³ en^ ›$ enÏLìens|€senÔÁ9en^›þMen« ]en1[øÍ§ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8ÇfoâFu¬sÆfoá¼FÅfoàA tbÄfoß%wZeÃfoÞY‡†#ÂfoÝÛˆÚ:ÁfoÜêA>ÀfoÛ!¿Žu¿foÚYPi¾foÙÿ2½foØ\+a¼fo×as~P»fo֣İ#ºfoÕTžÏQ¹foÔ@N¸foÓÊmcY·foÒ‹±O?¶foÑ5çÝpµfoÐWP´foϧFÞn³foΛÖR²foÍá:±foÌï÷}°foËöéjt¯foÊx÷?®foɾº[­foÈ€ƒJ¬fodž„n?«foÆ_µÒ]ªfoÅ1Â-©foÄBjB]¨foÃ!þQ§foÂbS>V¦foÁf—™'¥foÀ<5<'¤fo¿9\-%£fo¾ÚÿH¢fo½Ê( ¡fo¼Å“| fo»ŸåÑŸfoº|TNžfo¹Bfo¸!æ/<œfo·Øê‚A›fo¶Èìšfoµ :¦™fo´sRI˜fo³äþ¦G—fo²L–fo±u rM•fo°¸N`m”fo¯$E¡U“fo®Â*Qq’fo­0wù‘fo¬óiç)fo«˜óˆfoª^óuŽfo©Ò½gfo¨E®aYŒfo§>·€O‹fo¦ÎNŠfo¥ÛÒ¨5‰fo¤æ\K^ˆfo£)÷1‡fo¢ŒgV†fo¡q …fo tȰ„foŸ:Þí/ƒfožNhs‚fo½:foœ}“×S€fo›¤ýEfoš@4øs~fo™¬‰!}fo˜e,¥o|fo—ãB{fo–òÔszfo•þEÖryfo”,D|Qxfo“öš›?wfo’³ WSvfo‘‡×fPufo1Û¹+tfo*7ÈpsfoŽÒrfo!¬ qfoŒTÙ\pfo‹<œ%ofoŠOŠFnfo‰hÛ¸#mfoˆYîjhlfo‡¥ kfo†OÿÎVjfo…tP.Bifo„µ.` hfoƒQ‰!&gfo‚#8L ffo·Áv efo€½ÞKSdfo©j.cfo~~fwbfo}içM2afo|?e‘L`fo{\²é1_foz#¾ê$^foyfzt]fox¶ÑÇg\fowûæ84[fovK<Zfou¦lYfotÅ¿áXfos‰fÄYWforµ¿T1Vfoq/:UfopÕ]kRTfoo³o«pSfonñ*=Rfomë‘ÙqQfolÆáf4Pfok^Cˆ)OfojpDNfoiä<&Mfohîp×sLfogþu­0KfofQâ!JfoeÿléIfod”> JHfocya|iGfob9[ÿFfoaT÷ý Efo`j™©XDfo_!HÃMCfo^E)c Bfo]Ù~ÂOAfo\¥tWA@fo[(kçg?foZ>…T>foYe²f=foX6'W ¾Ôrr"fo=”£ÚQ!fo<òCG fo;YÔ”fo:$¼fo9–¯+fo8a—5fo7ð\fo6ÂR˜fo5É<Ç&fo4êÏrfo34$¢Efo2> *fo1 J.fo0OÛñ]fo/·'Hfo.N¾Ï fo-€ö-Efo,°ÂÏ,fo+¼ÎôKfo*)òMfo)*„Ê4 fo(È‚È fo'¯þ­\ fo&1yr fo%~­ë fo$›Ó fo#ònfo"ÓÙ© fo!æÃÆ1fo +¢VLfoeÞZfou2fop­àfoI3Yfo0Ǥÿeo¾CþeoE$ÐýeoÛ}üeoÂ+Dûeo°’ïsúeo  µDùeoåÜå^øeo`Å÷eo½‹J$öeoÏäÃõeoù­dôeo‘ƒ5óeoV˜_oòeo †Ò:oñeo ôK,-ðeo {‡‹gïeo ú Xîeo JÕÜíeo+¨<ìeo>ýˆëeo¬gwqêeoµ£teéeoÇmÈ!èeolm*çeoqØÝvæeoºôu0 1¨ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8©gpâ^=þ¨gpá:®GX§gpàl, ¦gpßu?¥gpÞ nô ¤gpÝî3°M£gpÜTl¢gpÛ<¿4¡gpÚŠ¡A gpÙL~]/ŸgpØ–K(žgp×dzÒgpÖEžuœgpÕ;kŒV›gpÔŽ÷CšgpÓããJ#™gpÒ2M˜gpÑÕËL—gpпG3–gpÏè—àC•gpΉÝV”gpÍTÍ|*“gpÌ<.p)’gpËÍ:Ý1‘gpÊäVÎAgpÉ Ç™3gpÈV­¾^ŽgpÇ•Tj=gpÆã[~ŒgpÅ-Mí"‹gpÄ™±;iŠgpÃV\>‰gpÂ@S7ˆgpÁ%̱3‡gpÀ³ÄI†gp¿䮿 …gp¾d’š „gp½‚/=ƒgp¼{¼d‚gp»&'C+gpºàç'€gp¹‡¿ôHgp¸Õ}I~gp·bN`[}gp¶:9?R|gpµ¹bn{gp´$œ zgp³.¢7ygp²KÇbmxgp±jìcwgp°­ipvgp¯½¢À$ugp®p ä_tgp­3û msgp¬v!TJrgp«Odqgpª%k-pgp©(`Ñ;ogp¨ü6dKngp§Œ“›?mgp¦¡Ïblgp¥så‰5kgp¤¤ç‰kjgp£5‘“+igp¢Â9'hgp¡«†” ggp i†ÖfgpŸ>ÿŒXegpž¢Gdgpóü)cgpœQ=hYbgp›¦%½CagpšMëm`gp™þãQ_gp˜=²HO^gp—# ]gp–mLÿ\gp•¹!a[gp”kÄ1Zgp“$¢HYgp’úXgp‘yš$WgpG¢QVgp!€[UgpŽ ð?TgpNÁ‚SgpŒS_50Rgp‹™kµdQgpŠS7PPgp‰‰QÚOgpˆè?GKNgp‡Þ<7Mgp†±«rLgp…ù`õ^Kgp„Ì ½ Jgpƒ„οEIgp‚©x‚nHgpv‰¬Ggp€íUZvFgp[ÀHEgp~¦vt$Dgp}4?„Cgp|hªkBgp{*NSAgpz¯±äP@gpyƒç/?gpx·Ú t>gpwÞ»’/=gpv¿YgpJŸŠsgpI»ƒn!gpH•ø‚pgpGæA gpF‡nØ) gpE߉úN gpD]_¬H gpCT« gpB4õAgpA &‰gp@ Ç®igp?²+ƒ gp>!4'gp=­CQgp<;Ýô_gp;Üäògp:@Éhgp9F]| ÿfp8Þ¦(þfp7€ ýfp6’ýwüfp5à¸Zûfp45U¡Gúfp3¹&Nhùfp2Ç1uøfp1ÿ?æ ÷fp0à€ .öfp/E3tKõfp.$V=1ôfp-iNCDófp,dgEòfp+žv.1ñfp*4©Ënðfp)µnˆ!ïfp(£Hopîfp'2ÃÆífp&«”ù ìfp%P9#0ëfp$Kx˜êfp#É}4éfp"뵊hèfp![ƒŸçfp xâÃ#æfpEAåfpm*`äfpôxRãfpÿ=Êâfp±Çš]áfp´ó9gàfpÙZ¥#ßfpX@:ÞfpÙj_,Ýfpð¬¼\Üfp6»;ÛfpØ¥D:ÚfpГ½)ÙfpÛ}ÞQØfpwÆû`×fp-Ï Öfp†ßÕfp69­LÔfp bõÞ#Ófp úÁô7Òfp æSÑfp  ÚŽÐfp TL@ÏfpçJ.Îfp)_±PÍfpeÎ>ÌfpðôøËfp ç¹Êfp¦–IZÉfpí«/Èfp‚ö€HH”¨ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8‹hqâ 8U"Šhqáy<¨]‰hqàŒÜarˆhqßLmvW‡hqÞ2ƒá[†hqÝ*FÆL…hqÜÒ£â=„hqÛ+¨•PƒhqÚrÈÒ‚hqÙ³7P hqØŽð´ €hq×¦ÊØ hqÖ¨eÅ5~hqÕ«fA}hqÔîÉ|hqÓ<Ú‹ {hqÒÊr]zhqÑR@×yhqÐe‚¾IxhqϽÙPTwhqÎ,;2vhqÍñ6uhq̘KthqË÷C&XshqÊ{ÇàfrhqÉÎEkqhqÈ&¡ìWphqdžpá:ohqÆ_̓QnhqÅkùxumhqÄ¥P£mlhqÃÁ^BkhqÂG¹ÆjhqÁb–›%ihqÀyÉ“hhq¿ÛK ghq¾¹}ó=fhq½l’1ehq¼œ·àFdhq»Ìýùchqº fÀMbhq¹ãå?ahq¸·”~k`hq·m‹9)_hq¶àëÈZ^hqµ‰¸]hq´×ë:\hq³ 5! [hq²%™Ú_Zhq±MoÍYhq°&XLXhq¯5‹A7Whq®œßEGVhq­É<Uhq¬Т9Thq«õVÿ+Shqªo6ÁRhq©»;©YQhq¨á³sDPhq§žnoOhq¦$@²sNhq¥CºHMhq¤H•€(Lhq£?r°mKhq¢©¬Ý^Jhq¡Yñ6_Ihq k· ;HhqŸíù9Ghqžš[Fhq¹™ûEhqœý°Dhq›žÚ†$ChqšÆQ\Bhq™ ÆUAhq˜–3lf@hq—Ô¶§Q?hq–v„->hq•Š|5'=hq”çpQ4ɹægq=ÝA»Cågq<$¿Nägq;b ‡&ãgq:Ú[”aâgq9¾š:ágq8Zœ{@àgq7`ßgq6kÞnÞgq5Y V"Ýgq4hž) Ügq3°ÎÛgq2«~½pÚgq1ýÿ=>Ùgq0*·ÖKØgq/JF×gq.Sdh$Ögq-²¤{5Õgq,-@Ôgq+å3aÓgq*È"cÒgq)ôl?Ñgq(w¡í*Ðgq'´JfÏgq&z¯¹Îgq%ñ¦œ8Ígq$*bäHÌgq#T„ Ëgq"¨Ú»oÊgq!ká[]Égq ÄJÈgqfA?cÇgqz\YÆgqf:êMÅgqA]ÄgqÉËÃgqRνCÂgq%Ágq¨ñUWÀgqe.Cm¿gq­"Î(¾gqk2!B½gqÛŒ-,¼gqa8¦p»gq©›Õºgqw[¹gqš0i¸gqnÄ~:·gqé™I¶gq 9¶åEµgq n’16´gq ™t³gq zn².²gq …ކi±gq‹»e°gq%¡5¯gqI`@®gq¾¾b­gqAÞœ9¬gqA™| «gqhgÿªgq¬hsp÷¨ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8mirâCNyclirá'øµkiràâ¤-Njirß \iirÞ»shirÝŒëgirܰ™8firÛ eirÚÒ†Å@dirÙÐ ;cirØ{Gbir×·ð$airÖá“=Z`irÕ%S_irÔ<<`1^irÓìòûh]irÒê ¢\irÑe6ô6[irЫ¯O.ZirÏdÂÌrYirέNNXirÍ õ4WirÌ ¡hVirË‘1_=UirÊùî(TirÉ3‹vtSirÈ7ÃkRirÇ„ ¹JQirÆÙÁPirÅioCOirÄt=J!NirÃ'MpMir =BLirÁV¹?KirÀmgÐGJir¿ÿòIir¾»ø~EHir½ßdPGir¼": Fir»kÕEirºïXDir¹ô»f[Cir¸{sÅjBir·ô4whAir¶;It@irµÖ™¡q?ir´AC¬:>ir³†Û !=ir²·¬Û_ÛhrPåC%ÚhrO¢m]ÙhrN mtØhrM>–žq×hrL*¦90ÖhrKäô!FÕhrJe=DÔhrI ƒ‘PÓhrH’_JÒhrGç›+JÑhrF–¦P0ÐhrEït…sÏhrDû¢Q&ÎhrC9dÕEÍhrB–´ÌhrAâ «rËhr@ßì·Êhr?p?#Éhr>ì‚8Èhr=¸rqÇhr<bEqÆhr;’<3rÅhr:$þ­NÄhr9Â/°9Ãhr8.1WÂhr72ì[Áhr6Ú|tÀhr5ÿ¿hr4s]ë1¾hr3Œ¢¤ ½hr2Ïp¼hr1ßâÚ*»hr0wÇÔ,ºhr/<K.¹hr.ØX-¸hr- ·ÝV·hr,R)Ts¶hr+}5)qµhr*ŠÜ@ ´hr)£~³M³hr(íøÙ#²hr'\Ö°a±hr&YVÑq°hr%–Û*¯hr$[wD®hr#&­ªU­hr"Ý´(:¬hr!OÈz«hr o7/)ªhrqC…=©hrkºÄ"¨hr>2•7§hrd 0¦hròR<¥hr°éh<¤hr2ï:£hr¿"¦W¢hr†7Øf¡hrF"Bt hr”zŸhroXžhr“êñghr‘tœhrn¤,M›hrë„,2šhr[·‹3™hr€Úœ6˜hr ¯ª %—hr ‘jsÑl¾È9=jsÐø­‡)Eøis‹áR ÷isŠwVMöis‰$ÂñFõisˆ…6îiôis‡ƒ.óis†ljQòis…"l\ñis„£Ýmqðisƒqr~)ïis‚×{]]îisع  íis€gETìis’' ëis~ê=œ-êis}Eü·Géis|+Gèis{þ“tçiszñõ½æisyû!ÚåisxðÖ… äisw>ãŒOãisvÓVâisuº¸©ráistÛÜEàissË3qFßisrç¶><ÞisqÐEDÝisp<ƒ(nÜiso-ú-ÛisnT†gÚism,‚uÙisl\b™Øiskóhte×isjê¼lÖisicÊ‘NÕishà7Ö3Ôisgùë'ÓisfL„45ÒiseË#ÍdÑisd Á•LÐiscETT=Ïisbî:VÎisa!If Íis`fàúÌis_ë©'Ëis^Tú,Êis]0%4Éis\Q$pÈis[³¦fBÇisZ(˜¹vÆisY6²%ÅisXcѰ ÄisW~3ÃisVÒk6ÂisU ÌËÁisTD~OÀisSº³D¿isRÊ…¿S¾isQžêÛo½isPÑ `¼isOë»isN‡BźisMø+=A¹isL1ž1¸isKyðÐD·isJF]¶isI¨>FµisH“Ì‹R´isGÄo³isFÜ“²isEèw/@±isDÝsY7°isCfB¯isBÌÖ¡V®isA6Oüd­is@Ýì8¬is?¡óÈa«is>!°ªis=ØžK©is<QÕµ8¨is;ŸC§is:dDÜe¦is9Wå¥is8zÍÑZ¤is7N&(£is6AÚA%¢is5ðí×V¡is4è¦p is3·š­QŸis2¨gžis1ÙYKis0ÿM©Gœis/æ);›is.âåß'šis-þ•b™is,æ·zi˜is+}!—is*9”«7–is)«T\•is()P¼7”is'ØA¶C“is&5Ã`’is%§¸’I‘is$&yÙ&is#,wlis"..LLŽis!â[Gis P)ŒiséšFL‹istîk\ŠisùÏÐ0‰is¦à`ˆisMöµ=‡is¿ØY†is‰ßù…is/;B/„is‰ÓÉJƒisÙÙöf‚isžÀ$is¸L €is Âì+is÷"y#~isÅI\}is'ÂäH|isÑÏb{isňé*zis ;cWyis çYö`xis `æ*kwis ³Î(vis ‚+_euis²ÈÜtisðQêksisx|tris!+³VqisÛXûBpisE“ois‡%bnisWâwoÀ½© À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ81ktâU˜\0ktá '»%/ktàÓµ²X.ktßgCö:-ktÞ¼›E,ktÝ€¾æ+ktÜyuÞ*ktÛpÖ`)ktÚPü* (ktÙ51Îd'ktØŒõ·N&ktצ*Ð>%ktÖŒht$ktÕÿä?#ktÔuŒòV"ktÓžó]!ktÒ¿bNZ ktÑclÙVktÐaëÝktÏ<ÎñktÎIZ„kktÍq@:UktÌÓ kt˫ʲLktÊ•ÌPMktÉ:Z1ktÈæ#;ktÇIÈæBktÆ1"ktÅÓjktÄ,“t!ktÃîË¡!ktÂN£UWktÁR÷ËTktÀîÍ2kt¿MÕ¸\ kt¾1Vñp kt½DØE kt¼äà_ kt»ªeB ktº©ÈYdkt¹Œx=kt¸02_kt·n^¶kt¶@'.ktµ kt´¼²Hkt³ƒ”\Ckt²¦Šbkt±ð>Ù7ÿjt°oþjt¯žÑýjt®Üséüjt­â )eûjt¬Ħw7újt«Kj ùjtª*Jéøjt©ß›!÷jt¨5r!öjt§"Dõjt¦¹x}ôjt¥Ù/ÞCójt¤ÿ‘¿fòjt£bÒqñjt¢"5[ðjt¡ªõÑïjt hôXKîjtŸ†ð`.íjtž›£!.ìjtWdKëjtœzDzZêjt›;j£JéjtšMúPèjt™ú^çjt˜²?ÖHæjt—½båjt–ù Ääjt•Ës<ãjt”c™xKâjt“{¹Cájt’Ëï/àjt‘=‚ð ßjtÚ|^ÞjtµtÝjtŽ·Â?VÜjtå ÚÛjtŒ-c-`Újt‹ZÙjtŠ%# Øjt‰D™ÉT×jtˆ#FÖjt‡¹ªàÕjt†·Ž`Ôjt…UœíOÓjt„˜my&ÒjtƒœD¯,Ñjt‚æå_Ðjt;Ïjt€ ½ãJÎjtaͳZÍjt~ jÌ;Ìjt}\IîrËjt|ˆ*ÍÊjt{x†$Éjtz%6JÈjtyæË™8ÇjtxZ|‡Æjtw~‹@HÅjtv¶<‚WÄjtu&ˆAÃjtt¡-_\Âjts…[p2Ájtr…Sæ*ÀjtqóqµH¿jtpc ‡¾jto¯¼åG½jtnÁç¹¼jtméÉc »jtläSŠtºjtkk ul¹jtjžûk¸jtiÍ=M8·jth!Ñœi¶jtgJT3µjtfFJ=g´jte†Ý=&³jtdY²jtc­2±jtbº¤;°jta°+O¯jt`Ø¢æX®jt_{ñE­jt^7E¸(¬jt]¢òh@«jt\5üþ ªjt[§xõ©jtZ1#MX¨jtY3ù4L§jtXÝñc¦jtW1á%¥jtV¡Ã¡¤jtU­»©£jtT"»è¢jtSÕ*6Z¡jtR3Šû@ jtQyÖ# ŸjtPËüJžjtOTozjtN\¿œjtM=<›jtLJ;ØšjtKrT§8™jtJ‡‡EH˜jtI›ó^C—jtH‹ÂˆQ–jtG™1 b•jtF·Îa”jtEàÖ “jtDÖ #’jtC‹È^$‘jtByÂr&jtA6°}jt@EõF Žjt?‘ÌÂ&jt>qcQ_Œjt=—ÿ8‹jt<ÉŠjt;þA;3‰jt:’5“5ˆjt906mO‡jt8&)†jt7Ì,¡3…jt6zÅãI„jt5¨äăjt4 .¥‚jt3Þ.jt2«»i€jt1´æSjt0 4¢~jt/êþ+U}jt."-k|jt-¯Û®6{jt,ç%T^zjt+ïéo]yjt*ÐÅXxjt)«®²Gwjt(Ã'Š>vjt'ôîo=ujt&få˜Ztjt%žY sjt$FÓrjt#è‰åvqjt"Åàa0pjt!Cò|Gojt DZ®njtr!,mjtoalljt™xÜ=kjtï,jjtÇòijt¶p‰hjtgÕ™igjtÁþû#fjtœªbejtŒÍ>"djtWGQcjtÔæÞbjt2¬ajt$X\`jt[ì(P_jtm n^jt¡8½ ]jt”ŸU\jt Š+!luÕM·a luÔÄÉøQluÓé–F3luÒ2ÅŽaluÑ/[]uluеÉOluÏE .MÿkuÎÔ1QþkuͶ7.ýkuÌ–v‰`üku˦^îMûkuÊûÕgúkuÉÚ¥vùkuȆH>gøkuÇz`E\÷kuÆónfökuÅ»$\DõkuÄÎÁtôkuì…ƒ/óku¯ý†CòkuÁl\ÃñkuÀjKeJðku¿]Ý"2ïku¾¨¨%Jîku½\w`Víku¼0ÇvOìku»®$Ïmëkuº·§Mêku¹ŸU*éku¸UøPjèku·U‡eçku¶†"ækuµ•ÑSåku´4š²Zäku³í¹`ãku²[I,$âku±¡Ú‘!áku°­(Úcàku¯-³Bßku®tí=Þku­½ŠaÝku¬ ªå]Üku«€u: ÛkuªÊŒ6Úku©Ë#â"Ùku¨«2ù^Øku§cmë6×ku¦ 'ÕÖku¥be¾XÕku¤BÎS\Ôku£R dÓku¢ÄGÓHÒku¡h:kÑku -ªáYÐkuŸúŒSÏkuž¥ÏOÎku‘Ä!%ÍkuœY,~Ìku›a´hËkušƒ|LÊku™¿õÉku˜"íg Èku—.̧ Çku–9¹¤/Æku•“¿ 9Åku”?%¼'Äku“.–é Ãku’‡úÙZÂku‘ñÀÁku ’Àkušþ²2¿kuŽóýâP¾kuU†;½kuŒÔÖv#¼ku‹g³€P»kuоü "ºku‰IÍ:¹kuˆ!3ÍQ¸ku‡»š¦f·ku†œë¶ku…3úNhµku„$ ¸.´kuƒËÃ|l³ku‚i˜'²kuœå¿4±ku€ ë P°kuDª5¯ku~HÕ®ku}šÊ3d­ku|?Ǭku{UDÚq«kuz…Ð^ªkuyÁ|H©kuxï:!]¨kuw #»§kuv Y|U¦kuuO‡û$¥kut!ùV¤kusíû&(£kurþ3)¢kuq¸ªÄX¡kupÅ'< kuo‹JbŸkun–‰öžkumŠ <kulFéuœkukö›2›kuj­C…mškuií̳`™kuh•î7˜kugÒí£—kufÊa'L–kueˆ¸-q•kud*Øn”kuc%³]“kubŽê’kuaµc‘ku`T©&ku_¹—0"ku^ú"Žku]¯™¹=ku\g ¹Œku[z­UO‹kuZ„ü5jŠkuYŸ³%8‰kuXê)d ˆkuW]U-‡kuVQçs†kuUhâÇ"…kuT(Ôê„kuSré°(ƒkuR!!Î?‚kuQ:²5ikuPEÊ®€kuO’']kuNÞYì&~kuMYG5}kuLnùâq|kuKÛUáR{kuJ#kŒzkuI lö=ykuH§©juxkuG¥ä©ewkuFúCYvkuE$·”0ukuD½ 7tkuCÕ™ïlskuBðºì\rkuAVN%`qku@RŽw pku?›à.oku>+1¹Jnku=ÇéÈSmku<ŽƒñDlku;fŸà<kku:N`=<jku9‚ÛÑ^iku8õˆjhku7ßýlJgku6GU/Zfku5íµê&eku4-'dku3ŽsYcku2]XIBbku1ì¯caku0%Ââb`ku/˜@K_ku.5ܨ^ku-`ì3]ku,3@¬T\ku+~&[ku*åè[Zku)ƒòÕDYku(…' .Xku'%‰cWku&4ÝJVku%ÉNUku$ƒ x_Tku#UÚé.Sku"*lRku!Š8ä0Qku  ñF`PkuÅ‘Ø Okuy‰‹Nku nCku¶:cBkuÃ4ö.AkuÎëÉm@ku·UÆQ?kuO<9O>ku °MÖ=ku ø†­n&âlvÏðTÇ;álvήîpqàlvÍPItMßlv̯YšmÞlvË#(ÝlvÊ~z^>ÜlvɉkoÛlvÈ2ÚlvÇé£mÙlvÆÖûã`ØlvÅeS¿×lvÄ+ZðgÖlvüÚÕlvÂXw ÔlvÁÑ á#ÓlvÀ‡³X Òlv¿ks5Ñlv¾fí}dÐlv½hŸ gÏlv¼š¼Îlv»‘ûm9ÍlvºqCÌlv¹\Æ EËlv¸ýÊœIÊlv·ÈvVÉlv¶Ü Èlvµ9ÕÇlv´””OÆlv³áKe&Ålv²¾»¾Älv±evÿOÃlv°AbEÂlv¯!éMIÁlv®ÒÎÀlv­&Údu¿lv¬[ð£¾lv«•jwH½lvª³‡¼lv©ÌUõm»lv¨¾I,ºlv§Ò? [¹lv¦ ܹ¸lv¥ZLD·lv¤}œ·q¶lv£; ÇKµlv¢j´˜6´lv¡¨m³lv Ѷ4²lvŸÖñ+±lvžè-$°lvÁgè2¯lvœ”Äg®lv›n=Ñc­lvš»(¬lv™Äõ5«lv˜~3÷ªlv—ûR×m©lv–yà ¨lv•.²µv§lv” P8X¦lv“f¦4¥lv’“§é@¤lv‘I3G£lvÅø©4¢lv=øÓ=¡lvŽsÂÝf lv.äŸlvŒ× KCžlv‹àk³*lvоy;[œlv‰d‘R8›lvˆU7‡`šlv‡ÒÏ'>™lv†ï—v ˜lv…_ôIV—lv„9Ï–lvƒ”ˆ •lv‚7•n”lv?iΓlv€BÁ>;’lvy„r7‘lv~B¬å lv}ÐÎë1lv|ð Ú\Žlv{„ü`1lvzJÜW'ŒlvyOw‹lvx[ŸŠlvwÝFRP‰lvvœ Ì5ˆlvu…‡lvt×2w†lvsV¯…lvr¨‹W„lvq6ÊŃlvpfk¾q‚lvo’V*<lvnÐHÞ9€lvmrø lvl‹ÈaA~lvkì©}lvjtùÛ*|lviöB= {lvh˜'zlvgZÕíylvf(zê^xlveúeBwlvdR•Gvlvc½‰"7ulvbþPntlvaròR slv`‰ÎQrlv_¾CºPqlv^…ò“ plv]¡ôbUolv\)úÁnlv[m);NmlvZ³žàHllvYÕú™klvXÙUPjlvWF[¶2ilvVÝ€¯0hlvU¡7l`glvTï׌flvSÄ`elvRfTdlvQóÛÅfclvP"þqblvOäžÊalvNþ)RW`lvM”…$7_lvLT=2m^lvK$î(]lvJÎ\ˆ"\lvIžšÔ[lvHÔ£1ZlvGjðÇ'YlvFü¨YXlvEà¢,>WlvD4Š\VlvC@ dUlvBì“ôuTlvAç­ sSlv@”Iø4Rlv?]Ž3Qlv>îU‚ Plv=Tÿ'Olv<häuNlv;mC*Mlv:ø KLlv9d5gKlv8Vƒ)*Jlv7ǼNIlv6;"O Hlv5üüGlv46˜ Flv3‚vR7Elv2õ±sDlv1sœÙ:Clv0õÍ&Blv/äd.Alv.Å(œ@lv-¶¢][?lv,än>lv+döq=lv*¡…°jp±mw¼2A8%°mw»£†n¯mwºðéÂU®mw¹οBX­mw¸ÆB¬mw·ƒ±Ö«mw¶yÄÆªmwµHo<©mw´T§on¨mw³ü:þ,§mw²ˆ½v¦mw±Y)e¥mw°yÔ#¤mw¯ ÿsB£mw®É/År¢mw­®‚k¡mw¬feÎ1 mw«£ÀoŸmwªC”,žmw©Xv€1mw¨”tœmw§£K ›mw¦¥.™ošmw¥¢q,™mw¤Üp˜mw£U/ín—mw¢¡¢_ –mw¡‘)•mw žÅ¹”mwŸ„ºŸ“mwžˆ{’mwd+D‘mwœŽ÷º+mw›l8ì<mwšUû{?Žmw™Ì¸mw˜0žœ!Œmw—|þb‹mw–À±—)Šmw•û}_ ‰mw”ƒfÚ$ˆmw“hR8G‡mw’€i†mw‘tºÖ…mwº™¥„mw&oEƒmwŽÁ î>‚mwïMmwŒ, j€mw‹ ýHmwгÛ9~mw‰r¶£P}mwˆÇi|mw‡Pÿ«{mw†Ϧ zmw…J#¡iymw„¶i3ixmwƒ|õswmw‚Žùˆvmw;DÄ8umw€õVZtmw—ãÄTsmw~¯rmw}Ã×%qmw|<šOpmw{×q³Somwz VTnmwy5 =mmwxù¶#>lmwwXó”Ykmwvj„jmwu¬imwt®¸’6hmwsj;fgmwr³-Lfmwq«ªWemwp–Öodmwo!#¥cmwn[§f>bmwmvgamwlØ~m-`mwkcÜp8_mwjpçü/^mwi|ƒ¥v]mwh™)®\mwgäææ#[mwf½)[Zmwe{%o0Ymwd'%ÛXmwc÷©ù0Wmwb+*4Vmwa35Umw`ZIu9Tmw_7<1(Smw^¶iâGRmw]zQmw\ÞºPmw[´¢öqOmwZË›(NmwYë -MmwXª:#LmwWú(KmwV[<JmwU;&ImwTÔGËUHmwS‘ y,GmwRP—&IFmwQyô=nEmwPI8miDmwOøÊõCmwN¬" `BmwM\ý-AmwLɲÂ)@mwKŒ ?mwJ¿Y>mwI˜tU=mwH½Á <Þé2mw=óC¥_1mw< hôN0mw;Ë5OP/mw:Œ:h.mw9¨Àüs-mw8,FyI,mw7Ê¢+mw6² JT*mw5YçÂ^)mw4HfA:(mw3WÌ0C'mw2ÎÑ &mw1í¨o;%mw00¬hS$mw/"ŠT#mw.œ5p"mw-«®ƒK!mw,Ï>  mw+úm¤hmw*ÍœYmw)ÈH%mw()š2mw'\¡«gmw&y$Änmw%I%W8mw$šxpmw#zNImw"ñx4mw!fÑ1*mw ø†bumwp<Ð(mwcK nmwb;-RmwŸïÕmwÆ„˜Xmwöµ²mwÒòëa mw‚5–L mw[> mw‹%Q mw[Qv mw'´ýfmw®CI0mwQsÿ(mw„ýämwPãRmw£[!mwÞ¥žimw ·÷Smw ÐN 6mw p¤hÿlw P‹¹-þlw àxqýlwÂ4inülwÿÕzWûlw14Þúlw4/FFùlw€[ølw§´¨ ÷lwÇ2ölw—K5#xJ« À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8¹nxâÖz#¸nxáe²'·nxàûR?¶nxßæêqµnxÞ—¤J´nxÝc…™,³nxÜ„¸Û²nxÛ-É$+±nxÚUž%>°nxÙìÝe ¯nxØv‹(®nx×Jo'K­nxÖÀ-×]¬nxÕÓõ›+«nxÔÝgªnxÓQy¡-©nxÒíªµ¨nxÑÁˆ§nxÐ÷G1#¦nxÏxCb+¥nxÎ÷_¤nxÍ É#R£nxÌÖˆú/¢nx˯9¥@¡nxÊ?_Tq nxÉhÓòŸnxÈ4*ç5žnxÇy«RnxÆ®*Ì œnxÅ‰Ä E›nxÄPÉ-šnxÃð)™nxÂÎog˜nxÁ™“¸—nxÀb2– –nx¿ko[a•nx¾{©e”nx½˜Úu“nx¼¶=ü ’nx» Ã3j‘nxº+DÄ"nx¹£)Âhnx¸.&=[Žnx·o´50nx¶æJæŒnxµZÖ—^‹nx´Y1p Šnx³sûˆg‰nx²Ê:.fˆnx±ëCH‡nx°£Nr†nx¯IºP…nx®ÌýX„nx­nµƒnx¬z¾ ‚nx«ÆÑ¨nxª¹¨&€nx©¬ùhnx¨)Ĩ%~nx§¾Ä}nx¦ºT¥2|nx¥¸5J{nx¤‹§rznx£c”A(ynx¢‹¬D$xnx¡ÊW wnx ´1_SvnxŸL«runxžl*çYtnx¨osnxœÝœörnx›¼#Äiqnxš¼ÞÛXpnx™ÓãÚsonx˜ƒÅ%nnx—rã’mnx–/Ÿolnx•n²b9knx”Ñ@!ljnx“€inx’©sghnx‘4™•UgnxͪaEfnx,\9enx޵ ádnxÏ©ãcnxŒ¡5pbnx‹û§banxŠð¤j5`nx‰pŽ^ _nxˆ0 R ^nx‡WÀc ]nx†-;m\nx…Ã3‡k[nx„¯öLZnxƒ‡ôÎ(Ynx‚^Án$Xnx¡‰ï6Wnx€&¯´cVnx°šXgUnx~V]É:Tnx} MQSnx|¦ þCRnx{KûH9QnxzB´;Pnxy¨d˜cOnxx¡6§*Nnxw¯YMnxvN$ILnxu§‹Knxt³iâGJnxs}.InxrŒ´>Hnxqÿ~+Gnxpj\@Fnxo¹d~EnxnÞ˜®[Dnxm+×dCnxlË2FoBnxk™ä+AnxjDY@nximi?nxh¨]5>nxg¦(lD=nxfdrG^ÛqnxBWÉMCnxA ¾óBnx@b1jnx?““jcnx>¤(=nx=¦É»qnx<ØS2nx;#;œvnx:æsD<nx9¦plnx8‡ÁQ-nx7X‡Ö% nx6”•L nx5pS6 nx4×aÈ nx3ÛG] nx2V‘<nx1‘]:nx0S-";nx/I[nx.T>(nx-X*bLnx,Y!@nx+SÓP2nx*Ö¯Vnx)Ø/ÿmx(÷Úþmx'…v\ýmx&ìAÔümx%—–3Eûmx$Ü,Çúmx#ÃÉWùmx"hµËømx!¼ûo÷mx »?8Sömx€aÁ=õmxÀUw5ômx1wèómxœyJIòmxìmñmxpêðmxnïmx%îmx¹¸76ímxÂùìmxEe Hëmxˆ®pRêmx ˆsémxæmxÿ Zåmx‚z Eämx XIÖ"ãmx @Üu0âmx QÍ/`ámx *‘uàmx {ôÜ3ßmx¨I•Þmx) ñ>Ýmx/ág?ÜmxÅnÛmxŠàÚmxèç??Ùmxý¥:ØmxŠÈO8 ­« À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8›oyâžg}\šoyá~øZ=™oyà¹g˜oyßìq?@—oyÞ4µªa–oyÝøúXv•oyÜ®çöv”oyÛYS “oyÚÍã R’oyÙ5jF‘oyØó³ÂVoy×iU[aoyÖ+ÎMfŽoyÕ½ŠdoyÔSiäNŒoyÓÓ^r‹oyÒ¼+¶ŠoyÑ :(‰oyÐ!¼BˆoyÏPí:P‡oyÎaÇ“l†oyÍ6(…oyÌè/p „oyËiƒƒoyÊiMl‚oyÉKFpoyÈ<ËÂA€oyÇN1ÿ%oyÆxïÚ]~oyÅìR^}oyÄ¢\v|oyòõ={oyÂJ×åRzoyÁÁðyoyÀ=~@xoy¿Û³WUwoy¾+¸#voy½yhŒ0uoy¼fáÅ,toy»c"{hsoyº ERWroy¹5)^Vqoy¸ìvpoy·$kooy¶óãunoyµH/Ì&moy´í´¢/loy³lÒ°(koy²©º2joy±è“3ioy°h½ÊDhoy¯Ñ]Ugoy®¨è»foy­œ}ˆeoy¬T2öLdoy«°¢YcoyªÔVBboy© s¥Zaoy¨ªÔˆ!`oy§ÅùœA_oy¦Ñm ^oy¥âï»\]oy¤ukõR\oy£o·Ãt[oy¢•}mrZoy¡ĵñYoy uÒ‘(XoyŸȈr2Woyžo·oPVoy1LMUoyœN6VToy›íIccSoyš5ʯWRoy™ÌPàbQoy˜/Ú;Poy—“ 3MOoy–Ÿ¼GkNoy•Ü`DsMoy”©oy“Ù<ßTKoy’hÿ×,Joy‘Ì?B2Ioy}+HoyŒÌN$GoyŽÉ&FFoy4S†iEoyŒpÛ8Doy‹ñÚGCoyŠN^8OBoy‰Éx<AoyˆO"Ýe@oy‡bñÞ ?oy†L„a>oy…²µC=oy„úä1LoyH)25oyGŠ’Ö9ÿnyFlÆþnyE]¡ ýnyD“J ünyCð¿ËpûnyB£¯ôdúnyAX/òSùny@E:AJøny?í<[÷ny>Jföny=¼#'Oõny<ý¥Œôny;FY2óny:"R–Iòny9X]Ý ñny8×ìŽ!ðny7ì”·kïny6¯-€;îny5N³6,íny4Mèí+ìny3hï†"ëny2G2ºEêny1ÛIény0wO³Gèny/.£hçny.߬Ìæny-ЊÑ@åny,Ô….räny+·JìSãny*FÚ)âny)Ìa%2ány(zÿ‹,àny'|šjßny&º…MÞny%·÷0Ýny$«…Š&Üny#¶r™JÛny"ËxŠdÚny!‰ªOrÙny ð–ÎØnyF9D4×nyšÑÖny¤H¯ Õnyp$ÊÔny6QUÓny©Ã’EÒny‰ÍlÑnyŸ¬É?ÐnyF>ùÏny²]Înyrã¤Ínyñ3 RÌny7LTËnyûë±nÊny§ÄáÉnyZªmÈny(öCÇny‹{÷Æny $ @Åny ;K`'Äny ÉtoÃny Ü×Âny Û3sÁnyѨlÀny§éA¿nyì9C¾ny"op+½nyÆÛÊG¼ny„?F0»nyíØ¾lºnyKâTlȬ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8}pzâé êP|pzá–ýE{pzàí.izpz߸™0ypzÞâ„@8xpzÝ/¢w<wpzÜ¡‹NvpzÛ¾ªõ[upzÚþþÓJtpzÙ¬!–XspzØÐÒYKrpz×µ•6qpzÖ»ÏÇ,ppzÕí$2opzÔžÿ"npzÓ†ºæmpzÒ»b¢AlpzÑKaZkpzЭmjpzÏÅÞnipzÎ2Pž hpzÍlsÞOgpz̨ófpzËÑ0œbepzÊè¶õdpzÉznltcpzÈÿŒŒ<bpzÇyï)apzÆÞ‚4`pzÅ +‰4_pzÄ,)^ ^pzÃ1‡Ó ]pzÂ!½ \pzÁ½Œ§,[pzÀ·ŒÀXZpz¿#n€SYpz¾27ÙhXpz½U+mWpz¼î×›Vpz»úI>UpzºñQÎ+Tpz¹â­¼Spz¸d•–Rpz·5áQpz¶1V0hPpzµS¾¤Opz´ØLÕNpz³õÈJMpz²¥ñsLpz±BŽh8Kpz°°6fJpz¯a³75Ipz®ƒ¼èKHpz­œÍ¼ Gpz¬Ò£&Fpz«p/pz£þ6r1=pz¢‹é;h1pz–;­è0pz•–R¢G/pz”Euá[.pz“·ñ¹>-pz’¾eµc,pz‘i_[+pz(*pz!âq)pzŽþu”A(pzÜA 'pzŒ$=«3&pz‹ðï"-%pzŠÜlX$pz‰ÞUÚ=#pzˆ2(K"pz‡êvl!pz†ãFè pz…³Spz„É4ÃepzƒSž]pz‚Ln!pz)lKpz€¢8óSpz§„o(pz~[ÒRGpz}„qëipz|`tápz{u­Y pzzÖ) pzyÆ Ÿ9pzxö\¼8pzw„OdApzvØ€"[pzu1 ‚pzt(â‘/pzsªØi pzróÊ pzq±aQh pzpïã6> pzo†q pznÏùÔ<pzmF{mpzl½‚0Ypzk$ùcpzjúò!pzi€ªnpzh!BÌpzgJ5pzfÉD2pze È½ÿozd²W« þozcY[4pýozbΙ²üoza[=aûoz`GŽúoz_æ$ù<ùoz^®Gâdøoz]™þwL÷oz\äÒHöoz[QnÚ:õozZí²UôozYÅP:8óozX]mÒòozW.ïozT»ôÑ*îozSmYíozRãg|+ìozQ©üeHëozPQ—v2êozO«”÷PéozNLlKèozM¡–»açozL·F\æozKjX¨cåozJ·e<äozI DcãozHÝòÓ+âozG¾F9áozFÑ. àozE•£ßozDK¦VÞozCéï=ÝozBo§sÜozA®¥KDÛoz@fÔ[kÚoz?]Ù*Ùoz>«uûmØoz=º“˜×oz<ô)Öoz;¿t˜cÕoz:©7ƒQÔoz9çì‘JÓoz8sG}>Òoz7@“XÑoz6“¬ùÐoz5Œ¡YÏoz4¶iJÎoz37gºQÍoz2^$‡tÌoz1¯”ðGËoz0¨qækÊoz/à§¡^Éoz.ßU%Èoz-‚=8pÇoz,eÔ7Æoz+FµÅoz*°Þ8LÄoz)Ib0 Ãoz(¬JÕYÂoz'è¹QPÁoz&%}H#Àoz%d¥Z¿oz$‚ÈÈI¾oz#ΈI½oz"Ä…M¼oz!¬@ÃZ»oz iØÿºozìc ¹ozðJ6¸oz ¨«U·ozM-%¶oz“‹%pµozT@˜7´ozaO\³oz_Öz²oz\Ùt8±oz³ûO\°ozÕ'¯oz‰ ]®oz~|å­ozµš"¬oz&Èãr«ozSBÍ&ªozV*6"©ozÒ^ÿ#¨oz D¤+§oz ™þ ¦oz Ǹs¥oz $y`¤oz I¥zG£ozfñˆ¢ozCõP¡ozau < ozÖ;fŸozªõˆHžozÃ"CozšPx$œoz\ĉ"ðs¬ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8_q{âÕŽáh^q{áûz‹L]q{àŒ6 \q{ß_ùAO[q{ÞÃlrZq{Ý¢[”AYq{ÜÃ{ZXq{Û÷$ÎgWq{Ú¥J¢RVq{ÙØ'mUq{Ø7ÐÐ5Tq{×>Ü Sq{Öy¢`Rq{Õ˜b*Qq{Ô_ 'Pq{Ó㳋Oq{ÒB iYNq{ÑL˜.Mq{ÐcžJLq{Ï4ÅQKq{ÎÙ°]Jq{Í~^Iq{Ìd§ >Hq{Ëi‡Ž)Gq{Ê ûótFq{É&wtEq{È!À`Dq{Çaî'Cq{Æ˲LFBq{Å.K(sAq{ÄžÉ#&@q{Ãv•Ÿ?q{Â8¢¬Q>q{ÁêW×>=q{ÀOÊûkÄ(A)q{¬H[Á@(q{«¿ ÛM'q{ª[ÄË-&q{©òd%q{¨Â$õ$q{§T­,#q{¦ö¨{!"q{¥µ‚^!q{¤(_Ù$ q{£mZfGq{¢íFåOq{¡/í,q{  ‡~Oq{Ÿ”6‰ q{žØâ q{"ŸŽ&q{œˆ¦_q{›ÉüYq{šH¥u:q{™Ìmºdq{˜Æjóq{—H_Ù?q{–ŸŒ'q{•Ù“Qq{”>»‚lq{“ûq{’ù9–q{‘‘íI q{'1–j q{>žä q{Žâÿ\ q{UææS q{ŒüçåLq{‹§q{Šü_”Bq{‰ ³¨q{ˆ,¾Óq{‡‰âJQq{†Ǿœq{…Ä!oq{„bgoq{ƒY\/ÿp{‚=Lßþp{éçï(ýp{€ ·8üp{z#+ûp{~ÙNcúp{}»9!rùp{|’,Føp{{ÚÑq÷p{z-m.=öp{yìj&9õp{x 8ŒJôp{wœäóp{vàYlNòp{u¬Ím#ñp{tÛ~š ðp{s»/çfïp{r¯í·5îp{qÒJ¯íp{pAJ4=ìp{oÚX>ëp{nX†Rêp{mï4=3ép{lÛ|€pèp{kshçp{jFô æp{iŽçåp{h'cYäp{gmBvVãp{fÔwBOâp{ey-Fáp{dMíxnàp{c.fñkßp{bîÖ<Þp{aP-=Ýp{` |,\Üp{_ØG²hÛp{^Ìò4Úp{]' Ùp{\ö¡E'Øp{[ˆ)×p{Z ¥ïaÖp{Y]j'Õp{XÁù+jÔp{W%¾º^Óp{VþsëdÒp{U4ë Ñp{Tzå²)Ðp{SÕ”y#Ïp{RzÄ\Îp{QQ÷ Íp{PpóÌp{Oå Ëp{N©@1(Êp{MÀî˜`Ép{LLÈp{KØEË+Çp{JFªÚ7Æp{I®5Åp{H é2_Äp{G¥¥†ZÃp{Fi‘V Âp{EýÛK1Áp{D"êÄÀp{C7:ZK¿p{BÁD:¾p{AöT&O½p{@â¥lA¼p{?ÿCU »p{> L"ºp{=™7'¹p{<Ï"§6¸p{;ææ4·p{:_Šh9¶p{9¸Å@`µp{8¬Ø5´p{7)ßqA³p{6Žo޲p{5(л±p{4Õ$† °p{3•O‰\¯p{2§hûX®p{1?/­p{0˜í¬p{/ÒŽ›s«p{.zD¾(ªp{-Ÿs©p{,·ðÍC¨p{+¡˜‰T§p{*CþÞ ¦p{)# ç-¥p{(„»ÁJ¤p{'3ë15£p{&<—)¢p{%,)Ô7¡p{$U”í  p{#Á”tŸp{"ë>Ú,žp{!HnEAp{ /µãKœp{$/›p{:Aô=šp{ñ›M™p{:¢bE˜p{6?,o—p{*V²[–p{‚L•p{Tºë6”p{ù³:“p{‚ûõ=’p{•£+R‘p{üHœKp{Õm•\p{ÅÐÑŽp{ù“p{žÍ/Œp{Ù?jK‹p{[=iŠp{ ”ãæ‰p{ ÝÇ ˆp{ §âK‡p{ çuÕ†p{ W’í…p{ÞVD+„p{z–,,ƒp{Aêù ‚p{ ºÝ?p{’ß6(€p{Æà p{-Q~p{X}u׬ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8Ar|â~@r|á³Ý¿[?r|àÿt–>r|ßä{öm=r|ÞˆQùq|šä0…&øq|™äóxN÷q|˜™£’3öq|—$õ,fõq|–x ¹ôq|•C’óq|”•ÖÞ2òq|“ÔP­Mñq|’¬ŽcWðq|‘ñsÕ]ïq|i´ËJîq|Ь_*íq|Ž7n+ìq|óóNëq|Œ0Üêq|‹æIéq|Šî_ èq|‰p‘…Hçq|ˆIR#æq|‡ñBé+åq|†A„œräq|…§?Š3ãq|„ «‘âq|ƒ‘;jáq|‚@¿àq|Šé…_ßq|€ þ©Þq|Ï]›Ýq|~‹/ Üq|}9òIÛq||j»R Úq|{ÀÏ7Ùq|zlç¿MØq|yU$×q|xŽN3Öq|w¤OA*Õq|v—„d;Ôq|u£ö>LÓq|tkœáÒq|sÛá-Ñq|rÚžq|?Aq|>X÷¶œq|=H‰0›q|<xTsšq|;‘pE™q|:!mD˜q|9D«V —q|8%Öe–q|7öaÿ@•q|6…‘ÄM”q|5]H^“q|4šp8’q|3g?‘E‘q|2MH:q|1 dz q|0ð£ÊŽq|/™%1q|.çýT>Œq|-·x=p‹q|,TY·Šq|+F\‰q|*ݦPˆq|)wÍÔ‡q|(èHÌ9†q|'Pi16…q|&­¤>„q|%½¤>ƒq|$œR‚q|#ú”aq|"÷? €q|!P¹A!q| v"" ~q|Wú{H}q|&ùO|q|JÍýR{q|ÿÏVzq|+ myq|¿­ÇIxq|"Žwq|gÇŽvq|R3uq|×G$tq|p6ösq|w›Æ,rq|9¯Úqq|8úZYpq|9¿Âoq|À?nnq| ßø.mq|ÙÑìolq| Ü‹âkq| _iÅLjq| ÑTAiq| ɼy;hq| +8çrgq|´åÙZfq|¬>1Teq|ÆÛ4dq|K^K1cq|‹×rVbq| ­ø7aq|*2~H`q|*éY/@:­ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8#s}â•êk"s}á h!s}àt=Ž s}ßèÉps}Þ aŒ4s}ݲÙEs}ÜGBs}Û¼’?hs}ÚLžGvs}ÙòÉx-s}Øá2yds}×Ó0Ãms}Ö† s}Õn¨–Fs}Ô^`as}ÓÀ)rs}Ò=€oPs}Ñ>õs}ÐZƒËss}Ï×x¬&s}Î0n<s}ͤdÞ s}̶ó\ s}˹ 7 s}Ê3çôA s}ɘns s}Ȳ`ê:s}Ç"•s}Æ‘‚vs}Ť‹»ds}Ä×¢Û#s}Æ–× s}ÂÿP\s}Á³êOs}ÀÇ͇Rs}¿Mb‚Cÿr}¾fÇFþr}½Täþgýr}¼Ü_Æür}»ym„ûr}ºÒCXúr}¹rŠâùr}¸ÎÒb ør}·Z,÷r}¶1¼\mör}µÅÜjKõr}´¶Ð“uôr}³eÃ)ór}²>å¼Pòr}±µíañr}° …O ðr}¯G$Yïr}®qGîr}­´ï#ír}¬?`sìr}«È_9ër}ª›!têr}© idMér}¨Jï[èr}§|úªiçr}¦¤:ªær}¥ƒ&Kår}¤¿\…1är}£²îŽãr}¢\ # âr}¡s}¾aár} q¼?àr}Ÿí¥B>ßr}ž‚ ¦PÞr}ii]Ýr}œª.WsÜr}›Ã}asÛr}šAb»'Úr}™ Š-8Ùr}˜YÎØr}—Ì´™C×r}–‡‹ãqÖr}•²¦Õr}”D‚sÔr}“öÀcKÓr}’D ÎÒr}‘l)aeÑr}?y. Ðr}`I¿ Ïr}޳è7!Îr}úÕû%Ír}ŒÆK¦TÌr}‹„ v Ër}Ši.ºDÊr}‰5ÈÉr}ˆ½%8Èr}‡ñßPgÇr}†¹âBÆr}…LsüFÅr}„A€PÄr}ƒoŽBÃr}‚ñÜÂr}-ØYÁr}€B !BÀr}¾¶zT¿r}~(^5¾r}}¡¤);½r}|j`“V¼r}{uAW[»r}z‚’=ºr}yYk' ¹r}x‡2&&¸r}w‘Ê&·r}v¼8p¶r}uØìG/µr}t¶G5B´r}sãà ³r}r¹@)D²r}qE7hZ±r}pš‘N0°r}o/HÁ¯r}n;wX®r}m‘¾ÝC­r}lÇ–†I¬r}kwâžT«r}j|>ûEªr}iq¾^h©r}h°_H¨r}gJè!w§r}f[–ä5¦r}e9çem¥r}d,+w¤r}c3ºÒ3£r}bß%z$¢r}a¢f÷¡r}`Têu r}_³Yt.=~r}=?ÉR>}r}<Eµ2|r};Ãå„${r}:™¿ zr}9i³syr}8® xr}7•Gì4wr}6¼¨]vr}5?ó„gur}4!G-`tr}3›6Nusr}2ôæÃerr}1mHcqr}0Sj·=pr}/ã) /or}.@Dã%nr}-Ov>mr},Flr}+îKh0kr}*ßaOjr})“´øir}(I \Chr}'-õ­ugr}&\æffr}%n:er}$gh.dr}#V £"cr}"ÎZÉabr}!†îTar} ™*+`r}±H˜_r}¯/“2^r}¬Ò76]r}47{\r}üåN[r}®]¡Zr}POºYr}s”ôKXr}ù^Wr}K ÁVr}ntUr}IÌ–7Tr}½º6Sr}Ó(e=Rr}ôx!Qr}Ϥ&`Pr}QŒ°lOr}2+DNr} d?Mr} ¥ÓAdLr} ï}éPKr} ìGJr} ¬!5Ir}ÆßEGHr}°QCDGr}ϧ¦#Fr}ᓯPEr}?®nDr}1ICr}×åZ"Br}iZ(lh­ À  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8 ‡8‡8à†8À†8 †8€†8`†8@†8 †8†8à…8À…8 …8€…8`…8@…8 …8…8à„8À„8 „8€„8`„8@„8 „8„8àƒ8Àƒ8t~âHt~áýŸ¬$t~àaƒ¯.t~ß‹t~ހȦqt~ÝƯŽ&ÿs~ÜÎryrþs~Û³[ýs~ÚÍíZmüs~Ù¡3lûs~ؾÈY.ús~×êDrùs~Öw46øs~Õ.ç ÷s~Ô©öÙAös~ÓbßBõs~ÒÙc—-ôs~Ñur+0ós~Ðð )9òs~ÏD ìVñs~Î]+q^ðs~ÍšßSIïs~Ì(kOîs~Ë5‘¹sís~Êß|#=ìs~ÉF`i:ës~È”U2ês~Ç,À³nés~Æ÷KNès~ň&,çs~Ä]¥næs~Û‹~,ås~Â~k;*äs~Á›Ó ãs~À³¬¾ âs~¿c8óás~¾øUi0às~½,VFßs~¼^ÇY-Þs~»â<rÝs~º ¥þ5Üs~¹á<Ûs~¸AN³0Ús~·ò¨ŠjÙs~¶U»iØs~µ4„®×s~´X¶ Ös~³•ìàMÕs~²ÛïHÔs~±V¾ gÓs~°0ã€Òs~¯).íaÑs~®ºb0 Ðs~­ÎÇÏs~¬ ;¶AÎs~«³P¥EÍs~ªO Ìs~©ÍÜËs~¨ϾÊs~§[TeÉs~¦ëÈs~¥Â-„fÇs~¤èÞ¿ Æs~£3HÅs~¢£íNÄs~¡†VxÃs~ Ï_Âs~Ÿ­›5Ás~žŒD}GÀs~Îå¿s~œ¡îOA¾s~›­©B½s~š;^·¼s~™ Ê»s~˜ÓPÔ`ºs~—À*Ú¹s~–=ô?¸s~•É-á·s~”d `F¶s~“î@8^µs~’›[ÚZ´s~‘c¯´i³s~‰ò6 ²s~¦À=±s~Ž~Gl°s~šnÙ;¯s~Œä‘–E®s~‹ôSK2­s~Š÷¯ñ¬s~‰ %À«s~ˆsuEYªs~‡õ}Ød©s~†—¨s~…a}h§s~„®+¦s~ƒdQ¥s~‚ú¥0J¤s~7²@£s~€tRk¢s~Þ³Ó¡s~~“‡e s~}“$K"Ÿs~|ÚÓ Yžs~{{Çws~zð FVœs~y #óF›s~x[µ¯Lšs~w/ñX™s~v-f<6˜s~uîàS—s~teN>–s~s“µ•s~räûÍt”s~qï“[“s~p$¨_o’s~o‹óÐ9‘s~n¢¾ç7s~mØlÖ4s~lr;PŽs~kÆNs~jíœ^pŒs~iíýg‹s~hà»)9Šs~g’K{u‰s~fgvLˆs~eÞ62b‡s~d¦%†s~cò\E…s~b¤—L=„s~aá-6Iƒs~`tþ"‚s~_Tˆs~^£—:C€s~]ΰs~\c*~s~[À$Št}s~ZÞ¼¶|s~YZ[p{s~XÊAðzs~Wš°"ys~V†HVxs~UuÊ£Yws~Tn¡ï$vs~SZý:us~RMY«#ts~QL;‰:ss~P Ë`rs~O ø˜!qs~Nëc­;ps~Mos_os~L"žZTns~KZårms~Jªv±Ils~I-Nks~Hy¥uPjs~GK%Pis~F9Ÿå$hs~E8 Sgs~D~^"fs~CŒCÄ9es~B=–ûds~A6Ãæcs~@øÕZPbs~?ãæEas~>ðó``s~=ÄJ”1_s~<öâ™Y^s~;C Én]s~:>Õ»\s~9U ‚8[s~8,£hkZs~7Â}KYs~6(qø5Xs~5"ú›aWs~4P‡gQVs~3­`Us~2`kvTs~1šûWSs~0~îsDRs~/‘Ê@Qs~.Å¢ÁPs~- …-Os~,á?£!Ns~+^òÁpMs~*ÇyG)Ls~)A-¦tKs~(4šÆ-Js~'­ïVbIs~&ûu MHs~%áºwGs~$”Ÿ`Fs~#Z#K7Es~"FÏ…Ds~!4‹ÆCs~ ì·cBs~­çÌ As~†uØ@s~ ×!?s~ý`>s~|ë¥u=s~-š‰3s~°Ò&2s~gD51s~YŸT0s~  ¦2$/s~ *XûB.s~ &>-s~ E·œ',s~ SßN+s~î·*s~¡R¾)s~›ëñ(s~`vØA's~mÿþJ&s~˜ç¸%s~®î$s~KàiBPô­0@  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8 ž8ž8à8À8 8€8`8@8 88àœ8Àœ8 œ8€œ8`œ8@œ8 œ8œ8à›8À›8 ›8€›8`›8@›8 ›8›8àš8Àš8 š8€š8`š8@š8 š8š8à™8À™8 ™8€™8`™8@™8 ™8™8à˜8À˜8 ˜8€˜8`˜8@˜8 ˜8˜8à—8À—8 —8€—8`—8@—8 —8—8à–8À–8 –8€–8`–8@–8 –8–8à•8À•8 •8€•8`•8@•8 •8•8à”8À”8 ”8€”8`”8@”8 ”8”8à“8À“8 “8€“8`“8@“8 “8“8à’8À’8 ’8€’8`’8@’8 ’8’8à‘8À‘8 ‘8€‘8`‘8@‘8 ‘8‘8à8À8 8€8`8@8 88à8À8 8€8`8@8 88àŽ8ÀŽ8 Ž8€Ž8`Ž8@Ž8 Ž8Ž8à8À8 8€8`8@8 88àŒ8ÀŒ8 Œ8€Œ8`Œ8@Œ8 Œ8Œ8à‹8À‹8 ‹8€‹8`‹8@‹8 ‹8‹8àŠ8ÀŠ8 Š8€Š8`Š8@Š8 Š8Š8à‰8À‰8 ‰8€‰8`‰8@‰8 ‰8‰8àˆ8Àˆ8 ˆ8€ˆ8`ˆ8@ˆ8 ˆ8ˆ8à‡8À‡8 ‡8€‡8`‡8@‡8ËtÆéÝ>ÊtÅ©òMGÉtĵcÈtÃYC ?ÇtÂÖF@"ÆtÁéïc^ÅtÀ,M)9Ät¿ª!Ãt¾á‘Ât½ª$K[Át¼*óÙIÀt»¬(m¿tº[ëp/¾t¹Nɧl½t¸wË#¼t·¢o#E»t¶”€MfºtµL›¹t´{ˆv¸t³È I·t²ó¾«p¶t±™lƒµt°³Ÿ7´t¯˜MÙq³t®ïØëD²t­„ín±t¬[†ˆT°t«7 1¯tª¾©ÉT®t©£õ¨l­t¨¦…X¬t§&:w«t¦Ò« %ªt¥Ŷ©t¤.öá¨t£½.–§t¢ÖÒ>¦t¡‚¼U¥t ï¸O¤tŸ5ñ#£tžO9Ú+¢tÛ½gT¡tœ5]I t›¸ƒaŸtš¹HZžt™+Èt˜'ÿÐEœt—Ì}­›t–XÝ$ št•á—n™t”ch,˜t“[v—t’ª'Í:–t‘/²È•t=ÇP”t¸Îº@“tŽÅ×Ú=’t¸$_‘tŒ‘ç"t‹™÷TtŠÐI›GŽt‰ÀÈStˆøC&qŒt‡}w$‹t†ƒ=Št…¬Í(‰t„Î Æ(ˆtƒÓä®'‡t‚3ƒ9)†tÓq…t€ÿ“Ú„t—½ŒAƒt~"u N‚t} .öst|²€t{í^â`tzÒy™o~tyFûO}tx·®zg|twýkR {tv7p73ztuæ°Ÿ*ytt>·XxtsóìGqwtrin#;vtq†6q5utp'¶Ótto-h`stnçÚyrtmìSFqtl S[ptk»Ì##otj€=¯ntiLv"ImthGçrltg;žjktfyÞÿujte»(.itdÔPÔhtcœYâ^gtbðÆ#ftaõùet`­Ú%dt_5ª`dct^8´\bt]J©åCat\5Dp`t[Õ Gc_tZ‹Ê^tYÑýÚ<]tXßÁÐ*\tWD%9[tV}Ö±fZtU˜F#YtTË6tSXtS<š?RWtRž[÷VtQ$^µNUtPŒTtO,¢‹kStNƒ®¤/RtMTÝãQtLtYr'PtKCŸDOtJÓ+XJNtIŒø¾DMtHgM–LtGÝ„KtFËôa JtEàêïmItD–¬9HtC»›6GtB¼E½FtA¼—*YEt@úøjDt?c:KCt>:(Bt=dFÂ3At<öKv8@t;ÌÛY?t:S»^M>t9GºŠ=t8xtæ\`.3t.EÁ>2t-èôèY1t,Üåãs0t+÷¦:3/t*Á]:.t)‡öÛ -t(FlKU,t'…üJ+t&#¥2X*t%Ú¨W)t$»×B(t#YŸ§t't"y1&t!›³67%t m‚ W$tnªuE#t™]"t®‘ë0!tR'*t tì8tM<tÒ›'Xt’J{>tˆòâRt½ã\tvNýYtº˜½\tc4ægt·…£+tÏçeatb½±1tŠž† t&ñ‹t Tïft °Î$Ut ²–ft dåÞ,t lWnu tTç$ tÊ™ÀZ tY/& t ê  tëtcÏbt‹(ÓPt¿ð&pgbackrest-release-2.24/test/data/page.bin000066400000000000000000000200001362531507100204750ustar00rootroot00000000000000€ÿ™P@  àŸ8ÀŸ8 Ÿ8€Ÿ8`Ÿ8@Ÿ8 Ÿ8Ÿ8àž8Àž8 ž8€ž8`ž8@ž8¶µ ´ ³ ² ± °¯®­¬«ª©pgbackrest-release-2.24/test/define.yaml000066400000000000000000000616731362531507100203210ustar00rootroot00000000000000# ********************************************************************************************************************************** # Test Definition # # Contains definitions for all unit and integration tests. # # The definitions consist of modules and tests. Modules group together tests that are related and allow common settings for all the # tests. Every module and test must have a name. Tests must also have a total. If this total does not match the actual number of # runs in a test then an error will be thrown. # # Most options can be set for modules and tests (test option will override module option if both are set): # * db - determines if the test will be run against multiple db versions # * coverage - determines coverage for the test # full - the module/test provides full coverage for the code module # partial - the module/test provides partial coverage for the code module # noCode - the code module should not contain any coverable code. If it does an error will be thrown. # * define - defines for C code (will also be applied to the test harness) # * define-test - defines for the test harness # * debugUnitSuppress - don't define DEBUG_UNIT for unit tests -- this is used to test unit test debugging macros # * binReq - is the pgbackrest binary required for this test? # * containerReq - is this test required to run in a container? # # Some options are unique to tests: # * total - total runs in the test # * vm - VMs that the test will be run on # * include - modules to include directly into test.c (all files in coverage are automatically included) # This is useful when a module's internal data needs to be manipulated for testing but no coverage is added by the test. # ********************************************************************************************************************************** # ********************************************************************************************************************************** # Unit tests # ********************************************************************************************************************************** unit: # ******************************************************************************************************************************** - name: common test: # ---------------------------------------------------------------------------------------------------------------------------- - name: error total: 8 define-test: -DNO_ERROR -DNO_LOG -DNO_STACK_TRACE -DNO_MEM_CONTEXT coverage: common/error: full common/error.auto: noCode # ---------------------------------------------------------------------------------------------------------------------------- - name: assert-on total: 1 define-test: -DNO_LOG -DNO_STACK_TRACE -DNO_MEM_CONTEXT coverage: common/assert: noCode # ---------------------------------------------------------------------------------------------------------------------------- - name: assert-off total: 1 define: -DNDEBUG define-test: -DNO_LOG -DNO_STACK_TRACE -DNO_MEM_CONTEXT debugUnitSuppress: true coverage: common/assert: noCode # ---------------------------------------------------------------------------------------------------------------------------- - name: stack-trace total: 4 define-test: -DNO_LOG -DNO_STACK_TRACE -DNO_MEM_CONTEXT coverage: common/stackTrace: full # ---------------------------------------------------------------------------------------------------------------------------- - name: mem-context total: 7 define-test: -DNO_MEM_CONTEXT -DNO_LOG coverage: common/memContext: full # ---------------------------------------------------------------------------------------------------------------------------- - name: time total: 3 define-test: -DNO_ERROR -DNO_LOG coverage: common/time: full # ---------------------------------------------------------------------------------------------------------------------------- - name: fork total: 1 define-test: -DNO_LOG coverage: common/fork: full # ---------------------------------------------------------------------------------------------------------------------------- - name: log total: 5 define-test: -DNO_LOG coverage: common/log: full # ---------------------------------------------------------------------------------------------------------------------------- - name: debug-off total: 2 define: -DNDEBUG define-test: -DNO_LOG debugUnitSuppress: true coverage: common/debug: full # ---------------------------------------------------------------------------------------------------------------------------- - name: debug-on total: 4 coverage: common/debug: full # ---------------------------------------------------------------------------------------------------------------------------- - name: object total: 1 coverage: common/object: noCode # ---------------------------------------------------------------------------------------------------------------------------- - name: lock total: 2 coverage: common/lock: full # ---------------------------------------------------------------------------------------------------------------------------- - name: exit total: 3 coverage: common/exit: full # ---------------------------------------------------------------------------------------------------------------------------- - name: wait total: 1 coverage: common/wait: full # ---------------------------------------------------------------------------------------------------------------------------- - name: type-convert total: 10 coverage: common/type/convert: full # ---------------------------------------------------------------------------------------------------------------------------- - name: type-list total: 4 coverage: common/type/list: full # ---------------------------------------------------------------------------------------------------------------------------- - name: type-string total: 26 coverage: common/type/string: full common/type/stringList: full # ---------------------------------------------------------------------------------------------------------------------------- - name: type-buffer total: 6 coverage: common/type/buffer: full # ---------------------------------------------------------------------------------------------------------------------------- - name: type-variant total: 13 coverage: common/type/variant: full common/type/variantList: full # ---------------------------------------------------------------------------------------------------------------------------- - name: type-mcv total: 1 coverage: common/type/mcv: full # ---------------------------------------------------------------------------------------------------------------------------- - name: type-json total: 11 coverage: common/type/json: full # ---------------------------------------------------------------------------------------------------------------------------- - name: type-key-value total: 2 coverage: common/type/keyValue: full # ---------------------------------------------------------------------------------------------------------------------------- - name: type-xml total: 1 coverage: common/type/xml: full # ---------------------------------------------------------------------------------------------------------------------------- - name: user total: 1 coverage: common/user: full # ---------------------------------------------------------------------------------------------------------------------------- - name: io total: 4 coverage: common/io/bufferRead: full common/io/bufferWrite: full common/io/filter/buffer: full common/io/filter/filter: full common/io/filter/group: full common/io/filter/sink: full common/io/filter/size: full common/io/handleRead: full common/io/handleWrite: full common/io/io: full common/io/read: full common/io/write: full # ---------------------------------------------------------------------------------------------------------------------------- - name: io-tls total: 4 containerReq: true coverage: common/io/tls/client: full # ---------------------------------------------------------------------------------------------------------------------------- - name: io-http total: 6 coverage: common/io/http/cache: full common/io/http/client: full common/io/http/common: full common/io/http/header: full common/io/http/query: full # ---------------------------------------------------------------------------------------------------------------------------- - name: compress-gzip total: 4 coverage: common/compress/gzip/common: full common/compress/gzip/compress: full common/compress/gzip/decompress: full # ---------------------------------------------------------------------------------------------------------------------------- - name: crypto total: 3 coverage: common/crypto/cipherBlock: full common/crypto/common: full common/crypto/hash: full # ---------------------------------------------------------------------------------------------------------------------------- - name: exec total: 1 coverage: common/exec: full # ---------------------------------------------------------------------------------------------------------------------------- - name: encode total: 1 coverage: common/encode: full common/encode/base64: full # ---------------------------------------------------------------------------------------------------------------------------- - name: reg-exp total: 3 coverage: common/regExp: full # ---------------------------------------------------------------------------------------------------------------------------- - name: ini total: 4 coverage: common/ini: full # ******************************************************************************************************************************** - name: postgres test: # ---------------------------------------------------------------------------------------------------------------------------- - name: client total: 1 coverage: postgres/client: full # ---------------------------------------------------------------------------------------------------------------------------- - name: interface total: 8 coverage: postgres/interface: full # ---------------------------------------------------------------------------------------------------------------------------- - name: page-checksum total: 3 coverage: postgres/pageChecksum: full # ******************************************************************************************************************************** - name: config test: # ---------------------------------------------------------------------------------------------------------------------------- - name: define total: 2 coverage: config/define: full config/define.auto: noCode # ---------------------------------------------------------------------------------------------------------------------------- - name: config total: 4 coverage: config/config: full config/config.auto: noCode # ---------------------------------------------------------------------------------------------------------------------------- - name: parse total: 4 coverage: config/parse: full config/parse.auto: noCode # ---------------------------------------------------------------------------------------------------------------------------- - name: load total: 4 coverage: config/load: full # ---------------------------------------------------------------------------------------------------------------------------- - name: exec total: 1 coverage: config/exec: full # ---------------------------------------------------------------------------------------------------------------------------- - name: protocol total: 1 coverage: config/protocol: full # ******************************************************************************************************************************** - name: storage test: # ---------------------------------------------------------------------------------------------------------------------------- - name: cifs total: 1 coverage: storage/cifs/storage: full storage/posix/storage: full storage/helper: full include: - storage/storage # ---------------------------------------------------------------------------------------------------------------------------- - name: posix total: 20 containerReq: true coverage: storage/posix/read: full storage/posix/storage: full storage/posix/write: full storage/helper: full storage/read: full storage/storage: full storage/write: full # ---------------------------------------------------------------------------------------------------------------------------- - name: remote total: 12 containerReq: true binReq: true coverage: storage/remote/read: full storage/remote/protocol: full storage/remote/storage: full storage/remote/write: full storage/helper: full storage/storage: full include: - storage/read - storage/write # ---------------------------------------------------------------------------------------------------------------------------- - name: s3 total: 3 coverage: storage/s3/read: full storage/s3/storage: full storage/s3/write: full storage/helper: full storage/storage: full # ******************************************************************************************************************************** - name: protocol test: # ---------------------------------------------------------------------------------------------------------------------------- - name: protocol total: 9 containerReq: true binReq: true coverage: protocol/client: full protocol/command: full protocol/helper: full protocol/parallel: full protocol/parallelJob: full protocol/server: full # ******************************************************************************************************************************** - name: info test: # ---------------------------------------------------------------------------------------------------------------------------- - name: info total: 3 coverage: info/info: full # ---------------------------------------------------------------------------------------------------------------------------- - name: info-pg total: 2 coverage: info/infoPg: full # ---------------------------------------------------------------------------------------------------------------------------- - name: info-archive total: 2 coverage: info/infoArchive: full # ---------------------------------------------------------------------------------------------------------------------------- - name: info-backup total: 2 coverage: info/infoBackup: full # ---------------------------------------------------------------------------------------------------------------------------- - name: manifest total: 6 coverage: info/manifest: full # ******************************************************************************************************************************** - name: db test: # ---------------------------------------------------------------------------------------------------------------------------- - name: db total: 3 containerReq: true binReq: true coverage: db/db: full db/helper: full db/protocol: full # ******************************************************************************************************************************** - name: command test: # ---------------------------------------------------------------------------------------------------------------------------- - name: archive-common total: 8 coverage: command/archive/common: full # ---------------------------------------------------------------------------------------------------------------------------- - name: archive-get total: 5 binReq: true coverage: command/archive/common: full command/archive/get/file: full command/archive/get/get: full command/archive/get/protocol: full # ---------------------------------------------------------------------------------------------------------------------------- - name: archive-push total: 4 binReq: true coverage: command/archive/common: full command/archive/push/file: full command/archive/push/protocol: full command/archive/push/push: full # ---------------------------------------------------------------------------------------------------------------------------- - name: backup-common total: 3 coverage: command/backup/common: full command/backup/pageChecksum: full # ---------------------------------------------------------------------------------------------------------------------------- - name: backup total: 10 binReq: true coverage: command/backup/backup: full command/backup/file: full command/backup/protocol: full include: - info/manifest - storage/storage # ---------------------------------------------------------------------------------------------------------------------------- - name: check total: 4 containerReq: true coverage: command/check/common: full command/check/check: full # ---------------------------------------------------------------------------------------------------------------------------- - name: command total: 1 coverage: command/command: full # ---------------------------------------------------------------------------------------------------------------------------- - name: control total: 3 coverage: command/control/common: full command/control/start: full command/control/stop: full # ---------------------------------------------------------------------------------------------------------------------------- - name: expire total: 7 coverage: command/expire/expire: full # ---------------------------------------------------------------------------------------------------------------------------- - name: help total: 4 coverage: command/help/help: full # ---------------------------------------------------------------------------------------------------------------------------- - name: info total: 3 coverage: command/info/info: full # ---------------------------------------------------------------------------------------------------------------------------- - name: local total: 1 coverage: command/local/local: full # ---------------------------------------------------------------------------------------------------------------------------- - name: remote total: 1 coverage: command/remote/remote: full # ---------------------------------------------------------------------------------------------------------------------------- - name: restore total: 12 containerReq: true binReq: true coverage: command/restore/file: full command/restore/protocol: full command/restore/restore: full include: - common/user - info/infoBackup - info/manifest # ---------------------------------------------------------------------------------------------------------------------------- - name: stanza total: 5 coverage: command/stanza/common: full command/stanza/create: full command/stanza/upgrade: full command/stanza/delete: full # ---------------------------------------------------------------------------------------------------------------------------- - name: storage total: 1 coverage: command/storage/list: full # ********************************************************************************************************************************** # Integration tests # # Integration tests are not run in a container. They are expected to create their own containers since most integration runs will # create more than one. For this reason each run is executed individually. # ********************************************************************************************************************************** integration: # ******************************************************************************************************************************** - name: mock test: # ---------------------------------------------------------------------------------------------------------------------------- - name: stanza total: 2 # ---------------------------------------------------------------------------------------------------------------------------- - name: expire total: 2 # ---------------------------------------------------------------------------------------------------------------------------- - name: archive total: 2 # ---------------------------------------------------------------------------------------------------------------------------- - name: archive-stop total: 2 # ---------------------------------------------------------------------------------------------------------------------------- - name: all total: 2 # ******************************************************************************************************************************** - name: real db: true test: # ---------------------------------------------------------------------------------------------------------------------------- - name: all total: 6 # ********************************************************************************************************************************** # Performance tests # # Performance tests run in a single container but are more like integration tests than unit tests since they call the pgbackrest # executable directly. # ********************************************************************************************************************************** performance: # ******************************************************************************************************************************** - name: performance test: # ---------------------------------------------------------------------------------------------------------------------------- - name: archive-perl total: 1 test: # ---------------------------------------------------------------------------------------------------------------------------- - name: type total: 3 pgbackrest-release-2.24/test/expect/000077500000000000000000000000001362531507100174565ustar00rootroot00000000000000pgbackrest-release-2.24/test/expect/mock-all-001.log000066400000000000000000007160051362531507100221670ustar00rootroot00000000000000run 001 - rmt 0, s3 0, enc 0, delta 1 ===================================== > [CONTAINER-EXEC] db-master [BACKREST-BIN] version ------------------------------------------------------------------------------------------------------------------------------------ [BACKREST-NAME-VERSION] > [CONTAINER-EXEC] db-master [BACKREST-BIN] help version ------------------------------------------------------------------------------------------------------------------------------------ [BACKREST-NAME-VERSION] - 'version' command help Get version. Displays installed pgBackRest version. stanza-create db - create required data for stanza (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --no-online stanza-create ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-create command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: stanza-create command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/archive/db/archive.info ----------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [db] db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" full backup - create pg_stat link, pg_clog dir (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --manifest-save-threshold=3 --buffer-size=[BUFFER-SIZE] --checksum-page --process-max=1 --repo1-type=cifs --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --checksum-page --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --manifest-save-threshold=3 --no-online --pg1-path=[TEST_PATH]/db-master/db/base --process-max=1 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --repo1-type=cifs --stanza=db --start-fast --type=full P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P01 INFO: backup file [TEST_PATH]/db-master/db/base/base/32768/33001 (64KB, 33%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b P00 WARN: invalid page checksums found in file [TEST_PATH]/db-master/db/base/base/32768/33001 at pages 0, 3-5, 7 P01 INFO: backup file [TEST_PATH]/db-master/db/base/base/32768/44000_init (32KB, 49%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 INFO: backup file [TEST_PATH]/db-master/db/base/base/32768/33000.32767 (32KB, 66%) checksum 6e99b589e550e68e934fd235ccba59fe5b592a9e P01 INFO: backup file [TEST_PATH]/db-master/db/base/base/32768/33000 (32KB, 83%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 INFO: backup file [TEST_PATH]/db-master/db/base/base/16384/17000 (16KB, 91%) checksum e0101dd8ffb910c9c202ca35b5f828bcb9697bed P00 WARN: invalid page checksum found in file [TEST_PATH]/db-master/db/base/base/16384/17000 at page 1 P01 INFO: backup file [TEST_PATH]/db-master/db/base/global/pg_control (8KB, 95%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c P01 INFO: backup file [TEST_PATH]/db-master/db/base/base/1/12000 (8KB, 99%) checksum 22c98d248ff548311eda88559e4a8405ed77c003 P01 INFO: backup file [TEST_PATH]/db-master/db/base/postgresql.conf (21B, 99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807 P01 INFO: backup file [TEST_PATH]/db-master/db/base/pg_hba.conf (9B, 99%) checksum dd4cea0cae348309f9de28ad4ded8ee2cc2e6d5b P01 INFO: backup file [TEST_PATH]/db-master/db/base/pg_stat/global.stat (5B, 99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877 P01 INFO: backup file [TEST_PATH]/db-master/db/base/base/32768/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: backup file [TEST_PATH]/db-master/db/base/base/16384/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: backup file [TEST_PATH]/db-master/db/base/base/1/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: backup file [TEST_PATH]/db-master/db/base/PG_VERSION (3B, 100%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: backup file [TEST_PATH]/db-master/db/base/special-!_.*'()&!@;:+,? (0B, 100%) P00 INFO: full backup size = 192KB P00 INFO: new backup label = [BACKUP-FULL-1] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-type=cifs --stanza=db P00 INFO: option 'repo1-retention-archive' is not set - archive logs will not be expired P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y start-fast=y + supplemental file: [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest ----------------------------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-FULL-1]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="full" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=true option-compress=false option-compress-level=3 option-compress-level-network=3 option-delta=false option-hardlink=false option-online=false option-process-max=1 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base","type":"path"} pg_data/pg_hba.conf={"file":"pg_hba.conf","path":"../pg_config","type":"link"} pg_data/pg_stat={"path":"../pg_stat","type":"link"} pg_data/postgresql.conf={"file":"postgresql.conf","path":"../pg_config","type":"link"} [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","size":[SIZE],"timestamp":[TIMESTAMP-1],"user":false} pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","group":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","checksum-page":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/44000_init={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_hba.conf={"checksum":"dd4cea0cae348309f9de28ad4ded8ee2cc2e6d5b","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=false mode="0600" user="[USER-1]" [target:link] pg_data/pg_hba.conf={"destination":"../pg_config/pg_hba.conf"} pg_data/pg_stat={"destination":"../pg_stat"} pg_data/postgresql.conf={"destination":"../pg_config/postgresql.conf"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_dynshmem={} pg_data/pg_notify={} pg_data/pg_replslot={} pg_data/pg_serial={} pg_data/pg_snapshots={} pg_data/pg_stat={} pg_data/pg_stat_tmp={} pg_data/pg_subtrans={} pg_data/pg_tblspc={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" stop all stanzas (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --force stop ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stop command begin [BACKREST-VERSION]: --config=[TEST_PATH]/db-master/pgbackrest.conf --force --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo P00 INFO: stop command end: completed successfully full backup - global stop (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=full P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 ERROR: [062]: stop file exists for all stanzas P00 INFO: backup command end: aborted with exception [062] stop db stanza (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db stop ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stop command begin [BACKREST-VERSION]: --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: stop command end: completed successfully stop db stanza (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db stop ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stop command begin [BACKREST-VERSION]: --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 WARN: stop file already exists for stanza db P00 INFO: stop command end: completed successfully full backup - stanza stop (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=full P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 ERROR: [062]: stop file exists for stanza db P00 INFO: backup command end: aborted with exception [062] start db stanza (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db start ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: start command begin [BACKREST-VERSION]: --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: start command end: completed successfully start all stanzas (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf start ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: start command begin [BACKREST-VERSION]: --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo P00 INFO: start command end: completed successfully start all stanzas (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf start ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: start command begin [BACKREST-VERSION]: --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo P00 WARN: stop file does not exist P00 INFO: start command end: completed successfully full backup - resume (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --force --checksum-page --delta --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --checksum-page --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --delta --exclude=postgresql.auto.conf --exclude=pg_log/ --exclude=pg_log2 --exclude=apipe --force --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=full P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 WARN: backup '[BACKUP-FULL-1]' missing manifest removed from backup.info P00 WARN: --no-online passed and postmaster.pid exists but --force was passed so backup will continue though it looks like the postmaster is running and the backup will probably not be consistent P00 INFO: exclude '[TEST_PATH]/db-master/db/base/apipe' from backup using 'apipe' exclusion P00 INFO: exclude contents of '[TEST_PATH]/db-master/db/base/pg_log' from backup using 'pg_log/' exclusion P00 INFO: exclude '[TEST_PATH]/db-master/db/base/pg_log2' from backup using 'pg_log2' exclusion P00 INFO: exclude '[TEST_PATH]/db-master/db/base/postgresql.auto.conf' from backup using 'postgresql.auto.conf' exclusion P00 WARN: resumable backup [BACKUP-FULL-2] of same type exists -- remove invalid files and resume P00 DETAIL: remove file '[TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/file.tmp' from resumed backup (missing in manifest) P00 DETAIL: remove file '[TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/pg_data/PG_VERSION' from resumed backup (no checksum in resumed manifest) P00 DETAIL: remove file '[TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/pg_data/special-!_.*'()&!@;:+,?' from resumed backup (zero size) P01 DETAIL: checksum resumed file [TEST_PATH]/db-master/db/base/base/32768/33001 (64KB, 33%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b P01 DETAIL: checksum resumed file [TEST_PATH]/db-master/db/base/base/32768/44000_init (32KB, 49%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: checksum resumed file [TEST_PATH]/db-master/db/base/base/32768/33000.32767 (32KB, 66%) checksum 6e99b589e550e68e934fd235ccba59fe5b592a9e P01 DETAIL: checksum resumed file [TEST_PATH]/db-master/db/base/base/32768/33000 (32KB, 83%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: checksum resumed file [TEST_PATH]/db-master/db/base/base/16384/17000 (16KB, 91%) checksum e0101dd8ffb910c9c202ca35b5f828bcb9697bed P01 DETAIL: checksum resumed file [TEST_PATH]/db-master/db/base/global/pg_control (8KB, 95%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c P01 DETAIL: checksum resumed file [TEST_PATH]/db-master/db/base/base/1/12000 (8KB, 99%) checksum 22c98d248ff548311eda88559e4a8405ed77c003 P01 DETAIL: checksum resumed file [TEST_PATH]/db-master/db/base/postgresql.conf (21B, 99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807 P01 DETAIL: checksum resumed file [TEST_PATH]/db-master/db/base/pg_hba.conf (9B, 99%) checksum dd4cea0cae348309f9de28ad4ded8ee2cc2e6d5b P01 INFO: backup file [TEST_PATH]/db-master/db/base/changecontent.txt (7B, 99%) checksum 238a131a3e8eb98d1fc5b27d882ca40b7618fd2a P01 DETAIL: checksum resumed file [TEST_PATH]/db-master/db/base/pg_stat/global.stat (5B, 99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877 P01 INFO: backup file [TEST_PATH]/db-master/db/base/changetime.txt (4B, 99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d P01 DETAIL: checksum resumed file [TEST_PATH]/db-master/db/base/base/32768/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: checksum resumed file [TEST_PATH]/db-master/db/base/base/16384/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: checksum resumed file [TEST_PATH]/db-master/db/base/base/1/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: backup file [TEST_PATH]/db-master/db/base/PG_VERSION (3B, 100%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: backup file [TEST_PATH]/db-master/db/base/zero_from_start (0B, 100%) P01 INFO: backup file [TEST_PATH]/db-master/db/base/special-!_.*'()&!@;:+,? (0B, 100%) P00 INFO: full backup size = 192KB P00 INFO: new backup label = [BACKUP-FULL-2] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: option 'repo1-retention-archive' is not set - archive logs will not be expired P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y exclude=postgresql.auto.conf exclude=pg_log/ exclude=pg_log2 exclude=apipe start-fast=y + supplemental file: [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest ----------------------------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-FULL-2]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="full" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=true option-compress=false option-compress-level=3 option-compress-level-network=3 option-delta=true option-hardlink=false option-online=false option-process-max=1 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base","type":"path"} pg_data/pg_hba.conf={"file":"pg_hba.conf","path":"../pg_config","type":"link"} pg_data/pg_stat={"path":"../pg_stat","type":"link"} pg_data/postgresql.conf={"file":"postgresql.conf","path":"../pg_config","type":"link"} [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","size":[SIZE],"timestamp":[TIMESTAMP-1],"user":false} pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","group":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","checksum-page":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/44000_init={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"238a131a3e8eb98d1fc5b27d882ca40b7618fd2a","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_hba.conf={"checksum":"dd4cea0cae348309f9de28ad4ded8ee2cc2e6d5b","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=false mode="0600" user="[USER-1]" [target:link] pg_data/pg_hba.conf={"destination":"../pg_config/pg_hba.conf"} pg_data/pg_stat={"destination":"../pg_stat"} pg_data/postgresql.conf={"destination":"../pg_config/postgresql.conf"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={"group":false,"mode":"0777","user":false} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_dynshmem={} pg_data/pg_log={} pg_data/pg_notify={} pg_data/pg_replslot={} pg_data/pg_serial={} pg_data/pg_snapshots={} pg_data/pg_stat={} pg_data/pg_stat_tmp={} pg_data/pg_subtrans={} pg_data/pg_tblspc={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" restore delta, backup '[BACKUP-FULL-2]' - add and delete files (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --set=[BACKUP-FULL-2] --link-all --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: restore command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --link-all --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --set=[BACKUP-FULL-2] --stanza=db P00 INFO: restore backup set [BACKUP-FULL-2] P00 WARN: unknown user in backup manifest mapped to '[USER-2]' P00 WARN: unknown group in backup manifest mapped to '[GROUP-2]' P00 DETAIL: check '[TEST_PATH]/db-master/db/base' exists P00 DETAIL: check '[TEST_PATH]/db-master/db/pg_config' exists P00 DETAIL: check '[TEST_PATH]/db-master/db/pg_stat' exists P00 DETAIL: remove 'global/pg_control' so cluster will not start if restore does not complete P00 INFO: remove invalid files/links/paths from '[TEST_PATH]/db-master/db/base' P00 DETAIL: update ownership for '[TEST_PATH]/db-master/db/base' P00 DETAIL: remove special file '[TEST_PATH]/db-master/db/base/apipe' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base/backup_label.old' P00 DETAIL: update mode for '[TEST_PATH]/db-master/db/base/base' to 0700 P00 DETAIL: update ownership for '[TEST_PATH]/db-master/db/base/base/1/PG_VERSION' P00 DETAIL: update mode for '[TEST_PATH]/db-master/db/base/base/1/PG_VERSION' to 0660 P00 DETAIL: update ownership for '[TEST_PATH]/db-master/db/base/base/16384/PG_VERSION' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base/base/32768/44000' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base/base/32768/t333_44000' P00 DETAIL: remove invalid path '[TEST_PATH]/db-master/db/base/base/pgsql_tmp' P00 DETAIL: remove invalid path '[TEST_PATH]/db-master/db/base/deleteme' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base/global/pg_internal.init' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base/pg_dynshmem/anything.tmp' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base/pg_log/logfile' P00 DETAIL: remove invalid path '[TEST_PATH]/db-master/db/base/pg_log2' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base/pg_notify/anything.tmp' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base/pg_replslot/anything.tmp' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base/pg_serial/anything.tmp' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base/pg_snapshots/anything.tmp' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base/pg_stat_tmp/anything.tmp' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base/pg_subtrans/anything.tmp' P00 DETAIL: remove invalid link '[TEST_PATH]/db-master/db/base/postgresql.auto.conf' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base/postgresql.auto.conf.tmp' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base/postmaster.opts' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base/recovery.conf' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base/recovery.done' P00 INFO: remove invalid files/links/paths from '[TEST_PATH]/db-master/db/pg_stat' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base/pg_clog' P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/33001 - exists and matches backup (64KB, 33%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/44000_init - exists and matches backup (32KB, 49%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/33000.32767 - exists and matches backup (32KB, 66%) checksum 6e99b589e550e68e934fd235ccba59fe5b592a9e P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/33000 - exists and matches backup (32KB, 83%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 INFO: restore file [TEST_PATH]/db-master/db/base/base/16384/17000 (16KB, 91%) checksum e0101dd8ffb910c9c202ca35b5f828bcb9697bed P01 INFO: restore file [TEST_PATH]/db-master/db/base/global/pg_control.pgbackrest.tmp (8KB, 95%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/1/12000 - exists and matches backup (8KB, 99%) checksum 22c98d248ff548311eda88559e4a8405ed77c003 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/postgresql.conf - exists and matches backup (21B, 99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/pg_hba.conf - exists and matches backup (9B, 99%) checksum dd4cea0cae348309f9de28ad4ded8ee2cc2e6d5b P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/changecontent.txt - exists and matches backup (7B, 99%) checksum 238a131a3e8eb98d1fc5b27d882ca40b7618fd2a P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/pg_stat/global.stat - exists and matches backup (5B, 99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/changetime.txt - exists and matches backup (4B, 99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/16384/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/1/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/PG_VERSION - exists and matches backup (3B, 100%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/zero_from_start - exists and is zero size (0B, 100%) P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/special-!_.*'()&!@;:+,? - exists and is zero size (0B, 100%) P00 INFO: write [TEST_PATH]/db-master/db/base/recovery.conf P00 DETAIL: sync path '[TEST_PATH]/db-master/db/pg_config' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/base' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/base/1' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/base/16384' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/base/32768' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_clog' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_dynshmem' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_log' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_notify' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_replslot' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_serial' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_snapshots' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_stat' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_stat_tmp' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_subtrans' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_tblspc' P00 INFO: restore global/pg_control (performed last to ensure aborted restores cannot be started) P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/global' P00 INFO: restore command end: completed successfully + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' restore delta, backup '[BACKUP-FULL-2]' - fix permissions (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --set=[BACKUP-FULL-2] --link-all --log-level-console=detail --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: restore command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --link-all --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --set=[BACKUP-FULL-2] --stanza=db P00 INFO: restore backup set [BACKUP-FULL-2] P00 WARN: unknown user in backup manifest mapped to '[USER-1]' P00 WARN: unknown group in backup manifest mapped to '[GROUP-1]' P00 DETAIL: check '[TEST_PATH]/db-master/db/base' exists P00 DETAIL: check '[TEST_PATH]/db-master/db/pg_config' exists P00 DETAIL: check '[TEST_PATH]/db-master/db/pg_stat' exists P00 DETAIL: remove 'global/pg_control' so cluster will not start if restore does not complete P00 INFO: remove invalid files/links/paths from '[TEST_PATH]/db-master/db/base' P00 DETAIL: update ownership for '[TEST_PATH]/db-master/db/base/base/1/PG_VERSION' P00 DETAIL: update ownership for '[TEST_PATH]/db-master/db/base/base/16384/PG_VERSION' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base/recovery.conf' P00 INFO: remove invalid files/links/paths from '[TEST_PATH]/db-master/db/pg_stat' P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/33001 - exists and matches backup (64KB, 33%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/44000_init - exists and matches backup (32KB, 49%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/33000.32767 - exists and matches backup (32KB, 66%) checksum 6e99b589e550e68e934fd235ccba59fe5b592a9e P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/33000 - exists and matches backup (32KB, 83%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/16384/17000 - exists and matches backup (16KB, 91%) checksum e0101dd8ffb910c9c202ca35b5f828bcb9697bed P01 INFO: restore file [TEST_PATH]/db-master/db/base/global/pg_control.pgbackrest.tmp (8KB, 95%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/1/12000 - exists and matches backup (8KB, 99%) checksum 22c98d248ff548311eda88559e4a8405ed77c003 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/postgresql.conf - exists and matches backup (21B, 99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/pg_hba.conf - exists and matches backup (9B, 99%) checksum dd4cea0cae348309f9de28ad4ded8ee2cc2e6d5b P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/changecontent.txt - exists and matches backup (7B, 99%) checksum 238a131a3e8eb98d1fc5b27d882ca40b7618fd2a P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/pg_stat/global.stat - exists and matches backup (5B, 99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/changetime.txt - exists and matches backup (4B, 99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/16384/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/1/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/PG_VERSION - exists and matches backup (3B, 100%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/zero_from_start - exists and is zero size (0B, 100%) P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/special-!_.*'()&!@;:+,? - exists and is zero size (0B, 100%) P00 INFO: write [TEST_PATH]/db-master/db/base/recovery.conf P00 DETAIL: sync path '[TEST_PATH]/db-master/db/pg_config' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/base' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/base/1' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/base/16384' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/base/32768' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_clog' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_dynshmem' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_log' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_notify' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_replslot' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_serial' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_snapshots' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_stat' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_stat_tmp' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_subtrans' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_tblspc' P00 INFO: restore global/pg_control (performed last to ensure aborted restores cannot be started) P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/global' P00 INFO: restore command end: completed successfully + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' restore delta, backup '[BACKUP-FULL-2]' - fix broken symlink (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --set=[BACKUP-FULL-2] --link-all --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: restore command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --link-all --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --set=[BACKUP-FULL-2] --stanza=db P00 INFO: restore backup set [BACKUP-FULL-2] P00 WARN: unknown user in backup manifest mapped to current user P00 WARN: unknown group in backup manifest mapped to current group P00 DETAIL: check '[TEST_PATH]/db-master/db/base' exists P00 DETAIL: check '[TEST_PATH]/db-master/db/pg_config' exists P00 DETAIL: check '[TEST_PATH]/db-master/db/pg_stat' exists P00 DETAIL: remove 'global/pg_control' so cluster will not start if restore does not complete P00 INFO: remove invalid files/links/paths from '[TEST_PATH]/db-master/db/base' P00 DETAIL: remove link '[TEST_PATH]/db-master/db/base/pg_stat' because destination changed P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base/recovery.conf' P00 INFO: remove invalid files/links/paths from '[TEST_PATH]/db-master/db/pg_stat' P00 DETAIL: create symlink '[TEST_PATH]/db-master/db/base/pg_stat' to '../pg_stat' P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/33001 - exists and matches backup (64KB, 33%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/44000_init - exists and matches backup (32KB, 49%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/33000.32767 - exists and matches backup (32KB, 66%) checksum 6e99b589e550e68e934fd235ccba59fe5b592a9e P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/33000 - exists and matches backup (32KB, 83%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/16384/17000 - exists and matches backup (16KB, 91%) checksum e0101dd8ffb910c9c202ca35b5f828bcb9697bed P01 INFO: restore file [TEST_PATH]/db-master/db/base/global/pg_control.pgbackrest.tmp (8KB, 95%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/1/12000 - exists and matches backup (8KB, 99%) checksum 22c98d248ff548311eda88559e4a8405ed77c003 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/postgresql.conf - exists and matches backup (21B, 99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/pg_hba.conf - exists and matches backup (9B, 99%) checksum dd4cea0cae348309f9de28ad4ded8ee2cc2e6d5b P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/changecontent.txt - exists and matches backup (7B, 99%) checksum 238a131a3e8eb98d1fc5b27d882ca40b7618fd2a P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/pg_stat/global.stat - exists and matches backup (5B, 99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/changetime.txt - exists and matches backup (4B, 99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/16384/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/1/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/PG_VERSION - exists and matches backup (3B, 100%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/zero_from_start - exists and is zero size (0B, 100%) P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/special-!_.*'()&!@;:+,? - exists and is zero size (0B, 100%) P00 INFO: write [TEST_PATH]/db-master/db/base/recovery.conf P00 DETAIL: sync path '[TEST_PATH]/db-master/db/pg_config' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/base' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/base/1' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/base/16384' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/base/32768' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_clog' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_dynshmem' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_log' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_notify' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_replslot' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_serial' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_snapshots' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_stat' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_stat_tmp' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_subtrans' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_tblspc' P00 INFO: restore global/pg_control (performed last to ensure aborted restores cannot be started) P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/global' P00 INFO: restore command end: completed successfully + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' restore delta, force, backup '[BACKUP-FULL-2]' - restore links as directories (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --force --set=[BACKUP-FULL-2] --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: restore command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --force --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --set=[BACKUP-FULL-2] --stanza=db P00 INFO: restore backup set [BACKUP-FULL-2] P00 WARN: file link 'pg_hba.conf' will be restored as a file at the same location P00 WARN: contents of directory link 'pg_stat' will be restored in a directory at the same location P00 WARN: file link 'postgresql.conf' will be restored as a file at the same location P00 WARN: unknown user in backup manifest mapped to current user P00 WARN: unknown user 'bogus' in backup manifest mapped to current user P00 WARN: unknown group in backup manifest mapped to current group P00 WARN: unknown group 'bogus' in backup manifest mapped to current group P00 DETAIL: check '[TEST_PATH]/db-master/db/base' exists P00 DETAIL: remove 'global/pg_control' so cluster will not start if restore does not complete P00 INFO: remove invalid files/links/paths from '[TEST_PATH]/db-master/db/base' P00 DETAIL: remove invalid link '[TEST_PATH]/db-master/db/base/pg_hba.conf' P00 DETAIL: remove invalid link '[TEST_PATH]/db-master/db/base/pg_stat' P00 DETAIL: remove invalid link '[TEST_PATH]/db-master/db/base/postgresql.conf' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base/recovery.conf' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base/pg_stat' P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/33001 - exists and matches size 65536 and modification time [MODIFICATION-TIME-1] (64KB, 33%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/44000_init - exists and matches size 32768 and modification time [MODIFICATION-TIME-1] (32KB, 49%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/33000.32767 - exists and matches size 32768 and modification time [MODIFICATION-TIME-1] (32KB, 66%) checksum 6e99b589e550e68e934fd235ccba59fe5b592a9e P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/33000 - exists and matches size 32768 and modification time [MODIFICATION-TIME-1] (32KB, 83%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/16384/17000 - exists and matches size 16384 and modification time [MODIFICATION-TIME-1] (16KB, 91%) checksum e0101dd8ffb910c9c202ca35b5f828bcb9697bed P01 INFO: restore file [TEST_PATH]/db-master/db/base/global/pg_control.pgbackrest.tmp (8KB, 95%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/1/12000 - exists and matches size 8192 and modification time [MODIFICATION-TIME-1] (8KB, 99%) checksum 22c98d248ff548311eda88559e4a8405ed77c003 P01 INFO: restore file [TEST_PATH]/db-master/db/base/postgresql.conf (21B, 99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807 P01 INFO: restore file [TEST_PATH]/db-master/db/base/pg_hba.conf (9B, 99%) checksum dd4cea0cae348309f9de28ad4ded8ee2cc2e6d5b P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/changecontent.txt - exists and matches size 7 and modification time [MODIFICATION-TIME-1] (7B, 99%) checksum 238a131a3e8eb98d1fc5b27d882ca40b7618fd2a P01 INFO: restore file [TEST_PATH]/db-master/db/base/pg_stat/global.stat (5B, 99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/changetime.txt - exists and matches size 4 and modification time [MODIFICATION-TIME-1] (4B, 99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/32768/PG_VERSION - exists and matches size 3 and modification time [MODIFICATION-TIME-1] (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/16384/PG_VERSION - exists and matches size 3 and modification time [MODIFICATION-TIME-1] (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/base/1/PG_VERSION - exists and matches size 3 and modification time [MODIFICATION-TIME-1] (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/PG_VERSION - exists and matches size 3 and modification time [MODIFICATION-TIME-1] (3B, 100%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/zero_from_start - exists and matches size 0 and modification time [MODIFICATION-TIME-1] (0B, 100%) P01 DETAIL: restore file [TEST_PATH]/db-master/db/base/special-!_.*'()&!@;:+,? - exists and matches size 0 and modification time [MODIFICATION-TIME-1] (0B, 100%) P00 INFO: write [TEST_PATH]/db-master/db/base/recovery.conf P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/base' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/base/1' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/base/16384' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/base/32768' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_clog' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_dynshmem' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_log' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_notify' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_replslot' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_serial' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_snapshots' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_stat' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_stat_tmp' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_subtrans' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/pg_tblspc' P00 INFO: restore global/pg_control (performed last to ensure aborted restores cannot be started) P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base/global' P00 INFO: restore command end: completed successfully + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' incr backup - add tablespace 1 (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 INFO: last backup label = [BACKUP-FULL-2], version = [VERSION-1] P00 WARN: incr backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2] P01 INFO: backup file [TEST_PATH]/db-master/db/base/badchecksum.txt (11B, 50%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51 P01 INFO: backup file [TEST_PATH]/db-master/db/base/changesize.txt (4B, 68%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d P01 INFO: backup file [TEST_PATH]/db-master/db/base/zerosize.txt (0B, 68%) P01 INFO: backup file [TEST_PATH]/db-master/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt (7B, 100%) checksum 14c44cef6287269b08d41de489fd492bb9fc795d P00 WARN: page misalignment in file [TEST_PATH]/db-master/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt: file size 7 is not divisible by page size 8192 P00 DETAIL: reference pg_data/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/1/12000 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/1/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/16384/17000 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/16384/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33000 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33000.32767 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33001 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/44000_init to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/changecontent.txt to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/changetime.txt to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/global/pg_control to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/pg_stat/global.stat to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/postgresql.conf to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/special-!_.*'()&!@;:+,? to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/zero_from_start to [BACKUP-FULL-2] P00 INFO: incr backup size = 22B P00 INFO: new backup label = [BACKUP-INCR-1] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: option 'repo1-retention-archive' is not set - archive logs will not be expired P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y start-fast=y + supplemental file: [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-1]/backup.manifest ----------------------------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-INCR-1]" backup-prior="[BACKUP-FULL-2]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="incr" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=true option-compress=false option-compress-level=3 option-compress-level-network=3 option-delta=false option-hardlink=false option-online=false option-process-max=1 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base","type":"path"} pg_tblspc/1={"path":"[TEST_PATH]/db-master/db/tablespace/ts1","tablespace-id":"1","tablespace-name":"ts1","type":"link"} [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"master":false,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"mode":"0660","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"master":false,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"master":false,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","checksum-page":true,"master":false,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"master":false,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/44000_init={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"master":false,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"238a131a3e8eb98d1fc5b27d882ca40b7618fd2a","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changesize.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt={"checksum":"14c44cef6287269b08d41de489fd492bb9fc795d","checksum-page":false,"master":false,"size":[SIZE],"timestamp":[TIMESTAMP-2]} [target:file:default] group="[GROUP-1]" master=true mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/1={"destination":"[TEST_PATH]/db-master/db/tablespace/ts1"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={"mode":"0777"} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_dynshmem={} pg_data/pg_log={} pg_data/pg_notify={} pg_data/pg_replslot={} pg_data/pg_serial={} pg_data/pg_snapshots={} pg_data/pg_stat={} pg_data/pg_stat_tmp={} pg_data/pg_subtrans={} pg_data/pg_tblspc={} pg_tblspc={"mode":"0777"} pg_tblspc/1={} pg_tblspc/1/[TS_PATH-1]={} pg_tblspc/1/[TS_PATH-1]/16384={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" incr backup - resume and add tablespace 2 (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --process-max=1 --delta --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --delta --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --process-max=1 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 WARN: backup '[BACKUP-INCR-1]' missing manifest removed from backup.info P00 INFO: last backup label = [BACKUP-FULL-2], version = [VERSION-1] P00 WARN: incr backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2] P00 WARN: resumable backup [BACKUP-INCR-2] of same type exists -- remove invalid files and resume P00 DETAIL: remove file '[TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]/pg_data/changesize.txt' from resumed backup (mismatched size) P00 DETAIL: remove file '[TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]/pg_data/zerosize.txt' from resumed backup (zero size) P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/base/32768/33001 (64KB, 33%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/base/32768/44000_init (32KB, 49%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/base/32768/33000.32767 (32KB, 66%) checksum 6e99b589e550e68e934fd235ccba59fe5b592a9e P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/base/32768/33000 (32KB, 83%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/base/16384/17000 (16KB, 91%) checksum e0101dd8ffb910c9c202ca35b5f828bcb9697bed P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/global/pg_control (8KB, 95%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/base/1/12000 (8KB, 99%) checksum 22c98d248ff548311eda88559e4a8405ed77c003 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/postgresql.conf (21B, 99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807 P00 WARN: resumed backup file pg_data/badchecksum.txt does not have expected checksum f927212cd08d11a42a666b2f04235398e9ceeb51. The file will be recopied and backup will continue but this may be an issue unless the resumed backup path in the repository is known to be corrupted. NOTE: this does not indicate a problem with the PostgreSQL page checksums. P01 INFO: backup file [TEST_PATH]/db-master/db/base/badchecksum.txt (11B, 99%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51 P01 INFO: backup file [TEST_PATH]/db-master/db/base/changesize.txt (9B, 99%) checksum 3905d5be2ec8d67f41435dab5e0dcda3ae47455d P01 INFO: backup file [TEST_PATH]/db-master/db/base/changecontent.txt (7B, 99%) checksum a094d94583e209556d03c3c5da33131a065f1689 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/pg_stat/global.stat (5B, 99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/changetime.txt (4B, 99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/base/32768/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/base/16384/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/base/1/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: backup file [TEST_PATH]/db-master/db/base/zerosize.txt (0B, 99%) P01 INFO: backup file [TEST_PATH]/db-master/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt (7B, 99%) checksum d85de07d6421d90aa9191c11c889bfde43680f0f P00 WARN: page misalignment in file [TEST_PATH]/db-master/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt: file size 7 is not divisible by page size 8192 P01 INFO: backup file [TEST_PATH]/db-master/db/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578 P00 WARN: page misalignment in file [TEST_PATH]/db-master/db/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt: file size 7 is not divisible by page size 8192 P00 DETAIL: reference pg_data/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/1/12000 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/1/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/16384/17000 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/16384/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33000 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33000.32767 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33001 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/44000_init to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/changetime.txt to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/global/pg_control to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/pg_stat/global.stat to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/postgresql.conf to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/special-!_.*'()&!@;:+,? to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/zero_from_start to [BACKUP-FULL-2] P00 INFO: incr backup size = 192KB P00 INFO: new backup label = [BACKUP-INCR-2] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: option 'repo1-retention-archive' is not set - archive logs will not be expired P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y start-fast=y + supplemental file: [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]/backup.manifest ----------------------------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-INCR-2]" backup-prior="[BACKUP-FULL-2]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="incr" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=true option-compress=false option-compress-level=3 option-compress-level-network=3 option-delta=true option-hardlink=false option-online=false option-process-max=1 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base","type":"path"} pg_tblspc/1={"path":"[TEST_PATH]/db-master/db/tablespace/ts1","tablespace-id":"1","tablespace-name":"ts1","type":"link"} pg_tblspc/11={"path":"[TEST_PATH]/db-master/db/tablespace/ts11","tablespace-id":"11","tablespace-name":"ts11","type":"link"} pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2","tablespace-id":"2","tablespace-name":"ts2","type":"link"} [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/44000_init={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"a094d94583e209556d03c3c5da33131a065f1689","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changesize.txt={"checksum":"3905d5be2ec8d67f41435dab5e0dcda3ae47455d","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"master":true,"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt={"checksum":"d85de07d6421d90aa9191c11c889bfde43680f0f","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=false mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/1={"destination":"[TEST_PATH]/db-master/db/tablespace/ts1"} pg_data/pg_tblspc/11={"destination":"[TEST_PATH]/db-master/db/tablespace/ts11"} pg_data/pg_tblspc/2={"destination":"[TEST_PATH]/db-master/db/tablespace/ts2"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={"mode":"0777"} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_dynshmem={} pg_data/pg_log={} pg_data/pg_notify={} pg_data/pg_replslot={} pg_data/pg_serial={} pg_data/pg_snapshots={} pg_data/pg_stat={} pg_data/pg_stat_tmp={} pg_data/pg_subtrans={} pg_data/pg_tblspc={} pg_tblspc={"mode":"0777"} pg_tblspc/1={} pg_tblspc/1/[TS_PATH-1]={} pg_tblspc/1/[TS_PATH-1]/16384={} pg_tblspc/11={} pg_tblspc/11/[TS_PATH-1]={} pg_tblspc/2={} pg_tblspc/2/[TS_PATH-1]={} pg_tblspc/2/[TS_PATH-1]/32768={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" diff backup - drop tablespace 11 (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --process-max=1 --delta --type=diff --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --delta --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --process-max=1 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=diff P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 INFO: last backup label = [BACKUP-FULL-2], version = [VERSION-1] P00 WARN: diff backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2] P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/base/32768/33001 (64KB, 33%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/base/32768/44000_init (32KB, 49%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/base/32768/33000.32767 (32KB, 66%) checksum 6e99b589e550e68e934fd235ccba59fe5b592a9e P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/base/32768/33000 (32KB, 83%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/base/16384/17000 (16KB, 91%) checksum e0101dd8ffb910c9c202ca35b5f828bcb9697bed P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/global/pg_control (8KB, 95%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/base/1/12000 (8KB, 99%) checksum 22c98d248ff548311eda88559e4a8405ed77c003 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/postgresql.conf (21B, 99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807 P01 INFO: backup file [TEST_PATH]/db-master/db/base/badchecksum.txt (11B, 99%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51 P01 INFO: backup file [TEST_PATH]/db-master/db/base/changecontent.txt (7B, 99%) checksum a094d94583e209556d03c3c5da33131a065f1689 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/pg_stat/global.stat (5B, 99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/changetime.txt (4B, 99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/base/32768/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/base/16384/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/base/1/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: backup file [TEST_PATH]/db-master/db/base/zerosize.txt (0B, 99%) P01 INFO: backup file [TEST_PATH]/db-master/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt (7B, 99%) checksum d85de07d6421d90aa9191c11c889bfde43680f0f P00 WARN: page misalignment in file [TEST_PATH]/db-master/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt: file size 7 is not divisible by page size 8192 P01 INFO: backup file [TEST_PATH]/db-master/db/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578 P00 WARN: page misalignment in file [TEST_PATH]/db-master/db/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt: file size 7 is not divisible by page size 8192 P00 DETAIL: reference pg_data/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/1/12000 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/1/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/16384/17000 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/16384/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33000 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33000.32767 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33001 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/44000_init to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/changetime.txt to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/global/pg_control to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/pg_stat/global.stat to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/postgresql.conf to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/special-!_.*'()&!@;:+,? to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/zero_from_start to [BACKUP-FULL-2] P00 INFO: diff backup size = 192KB P00 INFO: new backup label = [BACKUP-DIFF-1] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: option 'repo1-retention-archive' is not set - archive logs will not be expired P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y start-fast=y + supplemental file: [TEST_PATH]/db-master/repo/backup/db/[BACKUP-DIFF-1]/backup.manifest ----------------------------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-DIFF-1]" backup-prior="[BACKUP-FULL-2]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="diff" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=true option-compress=false option-compress-level=3 option-compress-level-network=3 option-delta=true option-hardlink=false option-online=false option-process-max=1 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base","type":"path"} pg_tblspc/1={"path":"[TEST_PATH]/db-master/db/tablespace/ts1","tablespace-id":"1","tablespace-name":"ts1","type":"link"} pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2","tablespace-id":"2","tablespace-name":"ts2","type":"link"} [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/44000_init={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"a094d94583e209556d03c3c5da33131a065f1689","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"master":true,"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt={"checksum":"d85de07d6421d90aa9191c11c889bfde43680f0f","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=false mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/1={"destination":"[TEST_PATH]/db-master/db/tablespace/ts1"} pg_data/pg_tblspc/2={"destination":"[TEST_PATH]/db-master/db/tablespace/ts2"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={"mode":"0777"} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_dynshmem={} pg_data/pg_log={} pg_data/pg_notify={} pg_data/pg_replslot={} pg_data/pg_serial={} pg_data/pg_snapshots={} pg_data/pg_stat={} pg_data/pg_stat_tmp={} pg_data/pg_subtrans={} pg_data/pg_tblspc={} pg_tblspc={"mode":"0777"} pg_tblspc/1={} pg_tblspc/1/[TS_PATH-1]={} pg_tblspc/1/[TS_PATH-1]/16384={} pg_tblspc/2={} pg_tblspc/2/[TS_PATH-1]={} pg_tblspc/2/[TS_PATH-1]/32768={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" restore, backup '[BACKUP-DIFF-1]', remap - remap all paths (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --set=[BACKUP-DIFF-1] --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: restore command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base-2 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --set=[BACKUP-DIFF-1] --stanza=db --tablespace-map=1=[TEST_PATH]/db-master/db/tablespace/ts1-2 --tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2 P00 INFO: restore backup set [BACKUP-DIFF-1] P00 INFO: remap data directory to '[TEST_PATH]/db-master/db/base-2' P00 INFO: map tablespace 'pg_tblspc/1' to '[TEST_PATH]/db-master/db/tablespace/ts1-2' P00 INFO: map tablespace 'pg_tblspc/2' to '[TEST_PATH]/db-master/db/tablespace/ts2-2' P00 DETAIL: check '[TEST_PATH]/db-master/db/base-2' exists P00 DETAIL: check '[TEST_PATH]/db-master/db/tablespace/ts1-2/[TS_PATH-1]' exists P00 DETAIL: check '[TEST_PATH]/db-master/db/tablespace/ts2-2/[TS_PATH-1]' exists P00 DETAIL: update mode for '[TEST_PATH]/db-master/db/base-2' to 0777 P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/1' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/16384' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/32768' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/global' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/pg_clog' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/pg_dynshmem' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/pg_log' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/pg_notify' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/pg_replslot' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/pg_serial' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/pg_snapshots' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/pg_stat' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/pg_stat_tmp' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/pg_subtrans' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/pg_tblspc' P00 DETAIL: create symlink '[TEST_PATH]/db-master/db/base-2/pg_tblspc/1' to '[TEST_PATH]/db-master/db/tablespace/ts1-2' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/1/[TS_PATH-1]/16384' P00 DETAIL: create symlink '[TEST_PATH]/db-master/db/base-2/pg_tblspc/2' to '[TEST_PATH]/db-master/db/tablespace/ts2-2' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768' P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/32768/33001 (64KB, 33%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/32768/44000_init (32KB, 49%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/32768/33000.32767 (32KB, 66%) checksum 6e99b589e550e68e934fd235ccba59fe5b592a9e P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/32768/33000 (32KB, 83%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/16384/17000 (16KB, 91%) checksum e0101dd8ffb910c9c202ca35b5f828bcb9697bed P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/global/pg_control.pgbackrest.tmp (8KB, 95%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/1/12000 (8KB, 99%) checksum 22c98d248ff548311eda88559e4a8405ed77c003 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/postgresql.conf (21B, 99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/badchecksum.txt (11B, 99%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/changecontent.txt (7B, 99%) checksum a094d94583e209556d03c3c5da33131a065f1689 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/pg_stat/global.stat (5B, 99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/changetime.txt (4B, 99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/32768/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/16384/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/1/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/zerosize.txt (0B, 99%) P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/zero_from_start (0B, 99%) P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/special-!_.*'()&!@;:+,? (0B, 99%) P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt (7B, 99%) checksum d85de07d6421d90aa9191c11c889bfde43680f0f P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578 P00 INFO: write [TEST_PATH]/db-master/db/base-2/recovery.conf P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/1' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/16384' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/32768' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_clog' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_dynshmem' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_log' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_notify' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_replslot' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_serial' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_snapshots' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_stat' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_stat_tmp' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_subtrans' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/1' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/1/[TS_PATH-1]' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/1/[TS_PATH-1]/16384' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/2' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768' P00 INFO: restore global/pg_control (performed last to ensure aborted restores cannot be started) P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/global' P00 INFO: restore command end: completed successfully + supplemental file: [TEST_PATH]/db-master/db/base-2/recovery.conf ------------------------------------------------------------------ # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' restore delta, backup '[BACKUP-DIFF-1]', remap - ensure file in tblspc root remains after --delta (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --set=[BACKUP-DIFF-1] --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: restore command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base-2 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --set=[BACKUP-DIFF-1] --stanza=db --tablespace-map=1=[TEST_PATH]/db-master/db/tablespace/ts1-2 --tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2 P00 INFO: restore backup set [BACKUP-DIFF-1] P00 INFO: remap data directory to '[TEST_PATH]/db-master/db/base-2' P00 INFO: map tablespace 'pg_tblspc/1' to '[TEST_PATH]/db-master/db/tablespace/ts1-2' P00 INFO: map tablespace 'pg_tblspc/2' to '[TEST_PATH]/db-master/db/tablespace/ts2-2' P00 DETAIL: check '[TEST_PATH]/db-master/db/base-2' exists P00 DETAIL: check '[TEST_PATH]/db-master/db/tablespace/ts1-2/[TS_PATH-1]' exists P00 DETAIL: check '[TEST_PATH]/db-master/db/tablespace/ts2-2/[TS_PATH-1]' exists P00 DETAIL: remove 'global/pg_control' so cluster will not start if restore does not complete P00 INFO: remove invalid files/links/paths from '[TEST_PATH]/db-master/db/base-2' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base-2/recovery.conf' P00 INFO: remove invalid files/links/paths from '[TEST_PATH]/db-master/db/tablespace/ts1-2/[TS_PATH-1]' P00 INFO: remove invalid files/links/paths from '[TEST_PATH]/db-master/db/tablespace/ts2-2/[TS_PATH-1]' P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/32768/33001 - exists and matches backup (64KB, 33%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/32768/44000_init - exists and matches backup (32KB, 49%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/32768/33000.32767 - exists and matches backup (32KB, 66%) checksum 6e99b589e550e68e934fd235ccba59fe5b592a9e P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/32768/33000 - exists and matches backup (32KB, 83%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/16384/17000 - exists and matches backup (16KB, 91%) checksum e0101dd8ffb910c9c202ca35b5f828bcb9697bed P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/global/pg_control.pgbackrest.tmp (8KB, 95%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/1/12000 - exists and matches backup (8KB, 99%) checksum 22c98d248ff548311eda88559e4a8405ed77c003 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/postgresql.conf - exists and matches backup (21B, 99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/badchecksum.txt - exists and matches backup (11B, 99%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/changecontent.txt - exists and matches backup (7B, 99%) checksum a094d94583e209556d03c3c5da33131a065f1689 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/pg_stat/global.stat - exists and matches backup (5B, 99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/changetime.txt - exists and matches backup (4B, 99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/32768/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/16384/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/1/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/zerosize.txt - exists and is zero size (0B, 99%) P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/zero_from_start - exists and is zero size (0B, 99%) P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/special-!_.*'()&!@;:+,? - exists and is zero size (0B, 99%) P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt - exists and matches backup (7B, 99%) checksum d85de07d6421d90aa9191c11c889bfde43680f0f P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt - exists and matches backup (7B, 100%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578 P00 INFO: write [TEST_PATH]/db-master/db/base-2/recovery.conf P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/1' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/16384' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/32768' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_clog' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_dynshmem' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_log' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_notify' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_replslot' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_serial' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_snapshots' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_stat' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_stat_tmp' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_subtrans' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/1' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/1/[TS_PATH-1]' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/1/[TS_PATH-1]/16384' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/2' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768' P00 INFO: restore global/pg_control (performed last to ensure aborted restores cannot be started) P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/global' P00 INFO: restore command end: completed successfully + supplemental file: [TEST_PATH]/db-master/db/base-2/recovery.conf ------------------------------------------------------------------ # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' incr backup - add files and remove tablespace 2 (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --process-max=1 --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2 --process-max=1 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 INFO: last backup label = [BACKUP-DIFF-1], version = 0.00 P00 WARN: incr backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-DIFF-1] P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/base/base2.txt (5B, 38%) checksum 09b5e31766be1dba1ec27de82f975c1b6eea2a92 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt (8B, 100%) checksum e324463005236d83e6e54795dbddd20a74533bf3 P00 WARN: page misalignment in file [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt: file size 8 is not divisible by page size 8192 P00 DETAIL: reference pg_data/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/badchecksum.txt to [BACKUP-DIFF-1] P00 DETAIL: reference pg_data/base/1/12000 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/1/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/16384/17000 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/16384/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33000 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33000.32767 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33001 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/44000_init to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/changecontent.txt to [BACKUP-DIFF-1] P00 DETAIL: reference pg_data/changetime.txt to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/global/pg_control to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/pg_stat/global.stat to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/postgresql.conf to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/special-!_.*'()&!@;:+,? to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/zero_from_start to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/zerosize.txt to [BACKUP-DIFF-1] P00 DETAIL: reference pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt to [BACKUP-DIFF-1] P00 INFO: incr backup size = 13B P00 INFO: new backup label = [BACKUP-INCR-3] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: option 'repo1-retention-archive' is not set - archive logs will not be expired P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base-2 [db:restore] tablespace-map=1=[TEST_PATH]/db-master/db/tablespace/ts1-2 tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2 [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y start-fast=y + supplemental file: [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-3]/backup.manifest ----------------------------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-INCR-3]" backup-prior="[BACKUP-DIFF-1]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="incr" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=true option-compress=false option-compress-level=3 option-compress-level-network=3 option-delta=false option-hardlink=false option-online=false option-process-max=1 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base-2","type":"path"} pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2-2","tablespace-id":"2","tablespace-name":"ts2","type":"link"} [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"reference":"[BACKUP-DIFF-1]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/44000_init={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/base2.txt={"checksum":"09b5e31766be1dba1ec27de82f975c1b6eea2a92","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"a094d94583e209556d03c3c5da33131a065f1689","master":true,"reference":"[BACKUP-DIFF-1]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"master":true,"reference":"[BACKUP-DIFF-1]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"reference":"[BACKUP-DIFF-1]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt={"checksum":"e324463005236d83e6e54795dbddd20a74533bf3","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=false mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/2={"destination":"[TEST_PATH]/db-master/db/tablespace/ts2-2"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={"mode":"0777"} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_dynshmem={} pg_data/pg_log={} pg_data/pg_notify={} pg_data/pg_replslot={} pg_data/pg_serial={} pg_data/pg_snapshots={} pg_data/pg_stat={} pg_data/pg_stat_tmp={} pg_data/pg_subtrans={} pg_data/pg_tblspc={} pg_tblspc={"mode":"0777"} pg_tblspc/2={} pg_tblspc/2/[TS_PATH-1]={} pg_tblspc/2/[TS_PATH-1]/32768={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-1]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-1]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" incr backup - update files (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 INFO: last backup label = [BACKUP-INCR-3], version = [VERSION-1] P00 WARN: incr backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-INCR-3] P00 WARN: file 'base/16384/17000' has same timestamp as prior but different size, enabling delta checksum P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/32768/33001 (64KB, 36%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/32768/44000_init (32KB, 54%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/32768/33000.32767 (32KB, 72%) checksum 6e99b589e550e68e934fd235ccba59fe5b592a9e P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/32768/33000 (32KB, 90%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/global/pg_control (8KB, 95%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/1/12000 (8KB, 99%) checksum 22c98d248ff548311eda88559e4a8405ed77c003 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/postgresql.conf (21B, 99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/badchecksum.txt (11B, 99%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/base/16384/17000 (8B, 99%) checksum 9a53d532e27785e681766c98516a5e93f096a501 P00 WARN: page misalignment in file [TEST_PATH]/db-master/db/base-2/base/16384/17000: file size 8 is not divisible by page size 8192 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/changecontent.txt (7B, 99%) checksum a094d94583e209556d03c3c5da33131a065f1689 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/pg_stat/global.stat (5B, 99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/base2.txt (5B, 99%) checksum 09b5e31766be1dba1ec27de82f975c1b6eea2a92 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/changetime.txt (4B, 99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/32768/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/16384/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/1/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt (8B, 99%) checksum e324463005236d83e6e54795dbddd20a74533bf3 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578 P00 DETAIL: reference pg_data/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/badchecksum.txt to [BACKUP-DIFF-1] P00 DETAIL: reference pg_data/base/1/12000 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/1/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/16384/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33000 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33000.32767 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33001 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/44000_init to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/base2.txt to [BACKUP-INCR-3] P00 DETAIL: reference pg_data/changecontent.txt to [BACKUP-DIFF-1] P00 DETAIL: reference pg_data/changetime.txt to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/global/pg_control to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/pg_stat/global.stat to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/postgresql.conf to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/special-!_.*'()&!@;:+,? to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/zero_from_start to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/zerosize.txt to [BACKUP-DIFF-1] P00 DETAIL: reference pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt to [BACKUP-DIFF-1] P00 DETAIL: reference pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt to [BACKUP-INCR-3] P00 INFO: incr backup size = 176KB P00 INFO: new backup label = [BACKUP-INCR-4] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: option 'repo1-retention-archive' is not set - archive logs will not be expired P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base-2 [db:restore] tablespace-map=1=[TEST_PATH]/db-master/db/tablespace/ts1-2 tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2 [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y start-fast=y + supplemental file: [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-4]/backup.manifest ----------------------------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-INCR-4]" backup-prior="[BACKUP-INCR-3]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="incr" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=true option-compress=false option-compress-level=3 option-compress-level-network=3 option-delta=true option-hardlink=false option-online=false option-process-max=1 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base-2","type":"path"} pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2-2","tablespace-id":"2","tablespace-name":"ts2","type":"link"} [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"reference":"[BACKUP-DIFF-1]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"9a53d532e27785e681766c98516a5e93f096a501","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/44000_init={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/base2.txt={"checksum":"09b5e31766be1dba1ec27de82f975c1b6eea2a92","reference":"[BACKUP-INCR-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"a094d94583e209556d03c3c5da33131a065f1689","master":true,"reference":"[BACKUP-DIFF-1]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"master":true,"reference":"[BACKUP-DIFF-1]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"reference":"[BACKUP-DIFF-1]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt={"checksum":"e324463005236d83e6e54795dbddd20a74533bf3","checksum-page":false,"reference":"[BACKUP-INCR-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=false mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/2={"destination":"[TEST_PATH]/db-master/db/tablespace/ts2-2"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={"mode":"0777"} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_dynshmem={} pg_data/pg_log={} pg_data/pg_notify={} pg_data/pg_replslot={} pg_data/pg_serial={} pg_data/pg_snapshots={} pg_data/pg_stat={} pg_data/pg_stat_tmp={} pg_data/pg_subtrans={} pg_data/pg_tblspc={} pg_tblspc={"mode":"0777"} pg_tblspc/2={} pg_tblspc/2/[TS_PATH-1]={} pg_tblspc/2/[TS_PATH-1]/32768={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-1]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-1]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-INCR-3]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-1]","[BACKUP-INCR-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" diff backup - updates since last full (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --process-max=1 --delta --type=diff --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --delta --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2 --process-max=1 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=diff P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 INFO: last backup label = [BACKUP-FULL-2], version = [VERSION-1] P00 WARN: diff backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2] P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/32768/33001 (64KB, 36%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/32768/44000_init (32KB, 54%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/32768/33000.32767 (32KB, 72%) checksum 6e99b589e550e68e934fd235ccba59fe5b592a9e P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/32768/33000 (32KB, 90%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/global/pg_control (8KB, 95%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/1/12000 (8KB, 99%) checksum 22c98d248ff548311eda88559e4a8405ed77c003 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/postgresql.conf (21B, 99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/badchecksum.txt (11B, 99%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/base/16384/17000 (8B, 99%) checksum 9a53d532e27785e681766c98516a5e93f096a501 P00 WARN: page misalignment in file [TEST_PATH]/db-master/db/base-2/base/16384/17000: file size 8 is not divisible by page size 8192 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/changecontent.txt (7B, 99%) checksum a094d94583e209556d03c3c5da33131a065f1689 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/pg_stat/global.stat (5B, 99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/base/base2.txt (5B, 99%) checksum 09b5e31766be1dba1ec27de82f975c1b6eea2a92 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/changetime.txt (4B, 99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/32768/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/16384/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/1/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/zerosize.txt (0B, 99%) P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt (8B, 99%) checksum e324463005236d83e6e54795dbddd20a74533bf3 P00 WARN: page misalignment in file [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt: file size 8 is not divisible by page size 8192 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578 P00 WARN: page misalignment in file [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt: file size 7 is not divisible by page size 8192 P00 DETAIL: reference pg_data/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/1/12000 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/1/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/16384/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33000 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33000.32767 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33001 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/44000_init to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/changetime.txt to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/global/pg_control to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/pg_stat/global.stat to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/postgresql.conf to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/special-!_.*'()&!@;:+,? to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/zero_from_start to [BACKUP-FULL-2] P00 INFO: diff backup size = 176KB P00 INFO: new backup label = [BACKUP-DIFF-2] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: option 'repo1-retention-archive' is not set - archive logs will not be expired P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base-2 [db:restore] tablespace-map=1=[TEST_PATH]/db-master/db/tablespace/ts1-2 tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2 [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y start-fast=y + supplemental file: [TEST_PATH]/db-master/repo/backup/db/[BACKUP-DIFF-2]/backup.manifest ----------------------------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-DIFF-2]" backup-prior="[BACKUP-FULL-2]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="diff" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=true option-compress=false option-compress-level=3 option-compress-level-network=3 option-delta=true option-hardlink=false option-online=false option-process-max=1 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base-2","type":"path"} pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2-2","tablespace-id":"2","tablespace-name":"ts2","type":"link"} [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"9a53d532e27785e681766c98516a5e93f096a501","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/44000_init={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/base2.txt={"checksum":"09b5e31766be1dba1ec27de82f975c1b6eea2a92","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"a094d94583e209556d03c3c5da33131a065f1689","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"master":true,"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt={"checksum":"e324463005236d83e6e54795dbddd20a74533bf3","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=false mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/2={"destination":"[TEST_PATH]/db-master/db/tablespace/ts2-2"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={"mode":"0777"} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_dynshmem={} pg_data/pg_log={} pg_data/pg_notify={} pg_data/pg_replslot={} pg_data/pg_serial={} pg_data/pg_snapshots={} pg_data/pg_stat={} pg_data/pg_stat_tmp={} pg_data/pg_subtrans={} pg_data/pg_tblspc={} pg_tblspc={"mode":"0777"} pg_tblspc/2={} pg_tblspc/2/[TS_PATH-1]={} pg_tblspc/2/[TS_PATH-1]/32768={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-1]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-1]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-INCR-3]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-1]","[BACKUP-INCR-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" diff backup - remove files (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --process-max=1 --delta --type=diff --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --delta --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2 --process-max=1 --protocol-timeout=60 --repo1-hardlink --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=diff P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 INFO: last backup label = [BACKUP-FULL-2], version = [VERSION-1] P00 WARN: diff backup cannot alter compress option to 'true', reset to value in [BACKUP-FULL-2] P00 WARN: diff backup cannot alter hardlink option to 'true', reset to value in [BACKUP-FULL-2] P00 WARN: diff backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2] P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/32768/33001 (64KB, 36%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/32768/44000_init (32KB, 54%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/32768/33000.32767 (32KB, 72%) checksum 6e99b589e550e68e934fd235ccba59fe5b592a9e P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/32768/33000 (32KB, 90%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/global/pg_control (8KB, 95%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/1/12000 (8KB, 99%) checksum 22c98d248ff548311eda88559e4a8405ed77c003 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/postgresql.conf (21B, 99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/badchecksum.txt (11B, 99%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/changecontent.txt (7B, 99%) checksum a094d94583e209556d03c3c5da33131a065f1689 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/pg_stat/global.stat (5B, 99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/changetime.txt (4B, 99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/32768/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/16384/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/1/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/zerosize.txt (0B, 99%) P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt (12B, 99%) checksum dfcb8679956b734706cf87259d50c88f83e80e66 P00 WARN: page misalignment in file [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt: file size 12 is not divisible by page size 8192 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578 P00 WARN: page misalignment in file [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt: file size 7 is not divisible by page size 8192 P00 DETAIL: reference pg_data/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/1/12000 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/1/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/16384/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33000 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33000.32767 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/33001 to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/44000_init to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/base/32768/PG_VERSION to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/changetime.txt to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/global/pg_control to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/pg_stat/global.stat to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/postgresql.conf to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/special-!_.*'()&!@;:+,? to [BACKUP-FULL-2] P00 DETAIL: reference pg_data/zero_from_start to [BACKUP-FULL-2] P00 INFO: diff backup size = 176KB P00 INFO: new backup label = [BACKUP-DIFF-3] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: option 'repo1-retention-archive' is not set - archive logs will not be expired P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base-2 [db:restore] tablespace-map=1=[TEST_PATH]/db-master/db/tablespace/ts1-2 tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2 [global] buffer-size=[BUFFER-SIZE] compress=y compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-hardlink=y repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y start-fast=y + supplemental file: [TEST_PATH]/db-master/repo/backup/db/[BACKUP-DIFF-3]/backup.manifest ----------------------------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-DIFF-3]" backup-prior="[BACKUP-FULL-2]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="diff" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=true option-compress=false option-compress-level=3 option-compress-level-network=3 option-delta=true option-hardlink=false option-online=false option-process-max=1 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base-2","type":"path"} pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2-2","tablespace-id":"2","tablespace-name":"ts2","type":"link"} [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/44000_init={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"a094d94583e209556d03c3c5da33131a065f1689","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"master":true,"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt={"checksum":"dfcb8679956b734706cf87259d50c88f83e80e66","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=false mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/2={"destination":"[TEST_PATH]/db-master/db/tablespace/ts2-2"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={"mode":"0777"} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_dynshmem={} pg_data/pg_log={} pg_data/pg_notify={} pg_data/pg_replslot={} pg_data/pg_serial={} pg_data/pg_snapshots={} pg_data/pg_stat={} pg_data/pg_stat_tmp={} pg_data/pg_subtrans={} pg_data/pg_tblspc={} pg_tblspc={"mode":"0777"} pg_tblspc/2={} pg_tblspc/2/[TS_PATH-1]={} pg_tblspc/2/[TS_PATH-1]/32768={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-1]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-1]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-INCR-3]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-1]","[BACKUP-INCR-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" full backup - update file (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2 --protocol-timeout=60 --repo1-hardlink --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=full P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/base/32768/33001 (64KB, 36%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/base/32768/44000_init (32KB, 54%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/base/32768/33000.32767 (32KB, 72%) checksum 6e99b589e550e68e934fd235ccba59fe5b592a9e P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/base/32768/33000 (32KB, 90%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/global/pg_control (8KB, 95%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/base/1/12000 (8KB, 99%) checksum 22c98d248ff548311eda88559e4a8405ed77c003 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/postgresql.conf (21B, 99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/badchecksum.txt (11B, 99%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/base/16384/17000 (9B, 99%) checksum 7579ada0808d7f98087a0a586d0df9de009cdc33 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/changecontent.txt (7B, 99%) checksum a094d94583e209556d03c3c5da33131a065f1689 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/pg_stat/global.stat (5B, 99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/changetime.txt (4B, 99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/base/32768/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/base/16384/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/base/1/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/zerosize.txt (0B, 99%) P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/zero_from_start (0B, 99%) P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/special-!_.*'()&!@;:+,? (0B, 99%) P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt (12B, 99%) checksum dfcb8679956b734706cf87259d50c88f83e80e66 P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578 P00 INFO: full backup size = 176KB P00 INFO: new backup label = [BACKUP-FULL-3] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: option 'repo1-retention-archive' is not set - archive logs will not be expired P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base-2 [db:restore] tablespace-map=1=[TEST_PATH]/db-master/db/tablespace/ts1-2 tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2 [global] buffer-size=[BUFFER-SIZE] compress=y compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-hardlink=y repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y start-fast=y + supplemental file: [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-3]/backup.manifest ----------------------------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-FULL-3]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="full" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=false option-compress=true option-compress-level=3 option-compress-level-network=3 option-delta=false option-hardlink=true option-online=false option-process-max=1 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base-2","type":"path"} pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2-2","tablespace-id":"2","tablespace-name":"ts2","type":"link"} [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"7579ada0808d7f98087a0a586d0df9de009cdc33","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/44000_init={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"a094d94583e209556d03c3c5da33131a065f1689","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt={"checksum":"dfcb8679956b734706cf87259d50c88f83e80e66","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=false mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/2={"destination":"[TEST_PATH]/db-master/db/tablespace/ts2-2"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={"mode":"0777"} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_dynshmem={} pg_data/pg_log={} pg_data/pg_notify={} pg_data/pg_replslot={} pg_data/pg_serial={} pg_data/pg_snapshots={} pg_data/pg_stat={} pg_data/pg_stat_tmp={} pg_data/pg_subtrans={} pg_data/pg_tblspc={} pg_tblspc={"mode":"0777"} pg_tblspc/2={} pg_tblspc/2/[TS_PATH-1]={} pg_tblspc/2/[TS_PATH-1]/32768={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-1]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-1]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-INCR-3]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-1]","[BACKUP-INCR-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":true,"option-online":false} [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" expire full=1 (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --repo1-retention-full=1 --stanza=db expire ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-full=1 --stanza=db P00 INFO: expire full backup set: [BACKUP-FULL-2], [BACKUP-INCR-2], [BACKUP-DIFF-1], [BACKUP-INCR-3], [BACKUP-INCR-4], [BACKUP-DIFF-2], [BACKUP-DIFF-3] P00 INFO: remove expired backup [BACKUP-DIFF-3] P00 INFO: remove expired backup [BACKUP-DIFF-2] P00 INFO: remove expired backup [BACKUP-INCR-4] P00 INFO: remove expired backup [BACKUP-INCR-3] P00 INFO: remove expired backup [BACKUP-DIFF-1] P00 INFO: remove expired backup [BACKUP-INCR-2] P00 INFO: remove expired backup [BACKUP-FULL-2] P00 INFO: expire command end: completed successfully diff backup - add file (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --checksum-page --type=diff --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --checksum-page --compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2 --protocol-timeout=60 --repo1-hardlink --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=diff P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 INFO: last backup label = [BACKUP-FULL-3], version = [VERSION-1] P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/base/base2.txt (9B, 100%) checksum cafac3c59553f2cfde41ce2e62e7662295f108c0 P00 DETAIL: hardlink pg_data/PG_VERSION to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_data/badchecksum.txt to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_data/base/1/12000 to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_data/base/1/PG_VERSION to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_data/base/16384/17000 to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_data/base/16384/PG_VERSION to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_data/base/32768/33000 to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_data/base/32768/33000.32767 to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_data/base/32768/33001 to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_data/base/32768/44000_init to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_data/base/32768/PG_VERSION to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_data/changecontent.txt to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_data/changetime.txt to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_data/global/pg_control to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_data/pg_stat/global.stat to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_data/postgresql.conf to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_data/special-!_.*'()&!@;:+,? to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_data/zero_from_start to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_data/zerosize.txt to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt to [BACKUP-FULL-3] P00 DETAIL: hardlink pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt to [BACKUP-FULL-3] P00 INFO: diff backup size = 9B P00 INFO: new backup label = [BACKUP-DIFF-4] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: option 'repo1-retention-archive' is not set - archive logs will not be expired P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base-2 [db:restore] tablespace-map=1=[TEST_PATH]/db-master/db/tablespace/ts1-2 tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2 [global] buffer-size=[BUFFER-SIZE] compress=y compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-hardlink=y repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y start-fast=y + supplemental file: [TEST_PATH]/db-master/repo/backup/db/[BACKUP-DIFF-4]/backup.manifest ----------------------------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-DIFF-4]" backup-prior="[BACKUP-FULL-3]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="diff" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=false option-compress=true option-compress-level=3 option-compress-level-network=3 option-delta=false option-hardlink=true option-online=false option-process-max=1 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base-2","type":"path"} pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2-2","tablespace-id":"2","tablespace-name":"ts2","type":"link"} [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"7579ada0808d7f98087a0a586d0df9de009cdc33","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/44000_init={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/base2.txt={"checksum":"cafac3c59553f2cfde41ce2e62e7662295f108c0","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"a094d94583e209556d03c3c5da33131a065f1689","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt={"checksum":"dfcb8679956b734706cf87259d50c88f83e80e66","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=false mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/2={"destination":"[TEST_PATH]/db-master/db/tablespace/ts2-2"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={"mode":"0777"} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_dynshmem={} pg_data/pg_log={} pg_data/pg_notify={} pg_data/pg_replslot={} pg_data/pg_serial={} pg_data/pg_snapshots={} pg_data/pg_stat={} pg_data/pg_stat_tmp={} pg_data/pg_subtrans={} pg_data/pg_tblspc={} pg_tblspc={"mode":"0777"} pg_tblspc/2={} pg_tblspc/2/[TS_PATH-1]={} pg_tblspc/2/[TS_PATH-1]/32768={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":true,"option-online":false} [BACKUP-DIFF-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":["[BACKUP-FULL-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":true,"option-online":false} [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" restore delta, remap - selective restore 16384 (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --db-include=16384 --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: restore command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-include=16384 --delta --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base-2 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2 P00 INFO: restore backup set [BACKUP-DIFF-4] P00 INFO: map tablespace 'pg_tblspc/2' to '[TEST_PATH]/db-master/db/tablespace/ts2-2' P00 DETAIL: databases found for selective restore (1, 16384, 32768) P00 DETAIL: check '[TEST_PATH]/db-master/db/base-2' exists P00 DETAIL: check '[TEST_PATH]/db-master/db/tablespace/ts2-2/[TS_PATH-1]' exists P00 DETAIL: remove 'global/pg_control' so cluster will not start if restore does not complete P00 INFO: remove invalid files/links/paths from '[TEST_PATH]/db-master/db/base-2' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base-2/recovery.conf' P00 INFO: remove invalid files/links/paths from '[TEST_PATH]/db-master/db/tablespace/ts2-2/[TS_PATH-1]' P01 DETAIL: restore zeroed file [TEST_PATH]/db-master/db/base-2/base/32768/33001 (64KB, 36%) P01 DETAIL: restore zeroed file [TEST_PATH]/db-master/db/base-2/base/32768/44000_init (32KB, 54%) P01 DETAIL: restore zeroed file [TEST_PATH]/db-master/db/base-2/base/32768/33000.32767 (32KB, 72%) P01 DETAIL: restore zeroed file [TEST_PATH]/db-master/db/base-2/base/32768/33000 (32KB, 90%) P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/global/pg_control.pgbackrest.tmp (8KB, 95%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/1/12000 - exists and matches backup (8KB, 99%) checksum 22c98d248ff548311eda88559e4a8405ed77c003 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/postgresql.conf - exists and matches backup (21B, 99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/badchecksum.txt - exists and matches backup (11B, 99%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/base2.txt - exists and matches backup (9B, 99%) checksum cafac3c59553f2cfde41ce2e62e7662295f108c0 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/16384/17000 - exists and matches backup (9B, 99%) checksum 7579ada0808d7f98087a0a586d0df9de009cdc33 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/changecontent.txt - exists and matches backup (7B, 99%) checksum a094d94583e209556d03c3c5da33131a065f1689 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/pg_stat/global.stat - exists and matches backup (5B, 99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/changetime.txt - exists and matches backup (4B, 99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/32768/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/16384/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/1/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/zerosize.txt - exists and is zero size (0B, 99%) P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/zero_from_start - exists and is zero size (0B, 99%) P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/special-!_.*'()&!@;:+,? - exists and is zero size (0B, 99%) P01 DETAIL: restore zeroed file [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt (12B, 99%) P01 DETAIL: restore zeroed file [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100%) P00 INFO: write [TEST_PATH]/db-master/db/base-2/recovery.conf P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/1' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/16384' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/32768' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_clog' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_dynshmem' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_log' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_notify' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_replslot' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_serial' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_snapshots' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_stat' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_stat_tmp' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_subtrans' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/2' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768' P00 INFO: restore global/pg_control (performed last to ensure aborted restores cannot be started) P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/global' P00 INFO: restore command end: completed successfully + supplemental file: [TEST_PATH]/db-master/db/base-2/recovery.conf ------------------------------------------------------------------ # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' restore delta, remap - selective restore 32768 (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --db-include=32768 --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: restore command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-include=32768 --delta --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base-2 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2 P00 INFO: restore backup set [BACKUP-DIFF-4] P00 INFO: map tablespace 'pg_tblspc/2' to '[TEST_PATH]/db-master/db/tablespace/ts2-2' P00 DETAIL: databases found for selective restore (1, 16384, 32768) P00 DETAIL: check '[TEST_PATH]/db-master/db/base-2' exists P00 DETAIL: check '[TEST_PATH]/db-master/db/tablespace/ts2-2/[TS_PATH-1]' exists P00 DETAIL: remove 'global/pg_control' so cluster will not start if restore does not complete P00 INFO: remove invalid files/links/paths from '[TEST_PATH]/db-master/db/base-2' P00 DETAIL: remove invalid file '[TEST_PATH]/db-master/db/base-2/recovery.conf' P00 INFO: remove invalid files/links/paths from '[TEST_PATH]/db-master/db/tablespace/ts2-2/[TS_PATH-1]' P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/32768/33001 (64KB, 36%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/32768/44000_init (32KB, 54%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/32768/33000.32767 (32KB, 72%) checksum 6e99b589e550e68e934fd235ccba59fe5b592a9e P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/32768/33000 (32KB, 90%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/global/pg_control.pgbackrest.tmp (8KB, 95%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/1/12000 - exists and matches backup (8KB, 99%) checksum 22c98d248ff548311eda88559e4a8405ed77c003 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/postgresql.conf - exists and matches backup (21B, 99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/badchecksum.txt - exists and matches backup (11B, 99%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/base2.txt - exists and matches backup (9B, 99%) checksum cafac3c59553f2cfde41ce2e62e7662295f108c0 P01 DETAIL: restore zeroed file [TEST_PATH]/db-master/db/base-2/base/16384/17000 (9B, 99%) P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/changecontent.txt - exists and matches backup (7B, 99%) checksum a094d94583e209556d03c3c5da33131a065f1689 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/pg_stat/global.stat - exists and matches backup (5B, 99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/changetime.txt - exists and matches backup (4B, 99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/32768/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/16384/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/base/1/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/PG_VERSION - exists and matches backup (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/zerosize.txt - exists and is zero size (0B, 99%) P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/zero_from_start - exists and is zero size (0B, 99%) P01 DETAIL: restore file [TEST_PATH]/db-master/db/base-2/special-!_.*'()&!@;:+,? - exists and is zero size (0B, 99%) P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt (12B, 99%) checksum dfcb8679956b734706cf87259d50c88f83e80e66 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578 P00 INFO: write [TEST_PATH]/db-master/db/base-2/recovery.conf P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/1' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/16384' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/32768' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_clog' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_dynshmem' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_log' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_notify' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_replslot' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_serial' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_snapshots' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_stat' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_stat_tmp' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_subtrans' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/2' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768' P00 INFO: restore global/pg_control (performed last to ensure aborted restores cannot be started) P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/global' P00 INFO: restore command end: completed successfully + supplemental file: [TEST_PATH]/db-master/db/base-2/recovery.conf ------------------------------------------------------------------ # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' restore delta, remap, expect exit 80 - error on invalid id (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --log-level-console=warn --db-include=7777 --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ P00 ERROR: [080]: database to include '7777' does not exist restore delta, remap, expect exit 81 - error on system id (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --log-level-console=warn --db-include=1 --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ P00 ERROR: [081]: system databases (template0, postgres, etc.) are included by default restore, remap - no tablespace remap (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --tablespace-map-all=../../tablespace --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: restore command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base-2/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --tablespace-map-all=../../tablespace P00 INFO: restore backup set [BACKUP-DIFF-4] P00 INFO: remap data directory to '[TEST_PATH]/db-master/db/base-2/base' P00 INFO: map tablespace 'pg_tblspc/2' to '../../tablespace/ts2' P00 DETAIL: check '[TEST_PATH]/db-master/db/base-2/base' exists P00 DETAIL: check '[TEST_PATH]/db-master/db/base-2/tablespace/ts2/[TS_PATH-1]' exists P00 DETAIL: update mode for '[TEST_PATH]/db-master/db/base-2/base' to 0777 P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/base' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/base/1' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/base/16384' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/base/32768' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/global' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/pg_clog' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/pg_dynshmem' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/pg_log' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/pg_notify' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/pg_replslot' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/pg_serial' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/pg_snapshots' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/pg_stat' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/pg_stat_tmp' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/pg_subtrans' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/pg_tblspc' P00 DETAIL: create symlink '[TEST_PATH]/db-master/db/base-2/base/pg_tblspc/2' to '../../tablespace/ts2' P00 DETAIL: create path '[TEST_PATH]/db-master/db/base-2/base/pg_tblspc/2/[TS_PATH-1]/32768' P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/base/32768/33001 (64KB, 36%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/base/32768/44000_init (32KB, 54%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/base/32768/33000.32767 (32KB, 72%) checksum 6e99b589e550e68e934fd235ccba59fe5b592a9e P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/base/32768/33000 (32KB, 90%) checksum 7a16d165e4775f7c92e8cdf60c0af57313f0bf90 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/global/pg_control.pgbackrest.tmp (8KB, 95%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/base/1/12000 (8KB, 99%) checksum 22c98d248ff548311eda88559e4a8405ed77c003 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/postgresql.conf (21B, 99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/badchecksum.txt (11B, 99%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/base/base2.txt (9B, 99%) checksum cafac3c59553f2cfde41ce2e62e7662295f108c0 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/base/16384/17000 (9B, 99%) checksum 7579ada0808d7f98087a0a586d0df9de009cdc33 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/changecontent.txt (7B, 99%) checksum a094d94583e209556d03c3c5da33131a065f1689 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/pg_stat/global.stat (5B, 99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/changetime.txt (4B, 99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/base/32768/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/base/16384/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/base/1/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/zerosize.txt (0B, 99%) P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/zero_from_start (0B, 99%) P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/special-!_.*'()&!@;:+,? (0B, 99%) P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt (12B, 99%) checksum dfcb8679956b734706cf87259d50c88f83e80e66 P01 INFO: restore file [TEST_PATH]/db-master/db/base-2/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578 P00 INFO: write [TEST_PATH]/db-master/db/base-2/base/recovery.conf P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/base' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/base/1' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/base/16384' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/base/32768' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/pg_clog' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/pg_dynshmem' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/pg_log' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/pg_notify' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/pg_replslot' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/pg_serial' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/pg_snapshots' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/pg_stat' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/pg_stat_tmp' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/pg_subtrans' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/pg_tblspc' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/pg_tblspc/2' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/pg_tblspc/2/[TS_PATH-1]' P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/pg_tblspc/2/[TS_PATH-1]/32768' P00 INFO: restore global/pg_control (performed last to ensure aborted restores cannot be started) P00 DETAIL: sync path '[TEST_PATH]/db-master/db/base-2/base/global' P00 INFO: restore command end: completed successfully + supplemental file: [TEST_PATH]/db-master/db/base-2/base/recovery.conf ----------------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' > ls -1Rtr [TEST_PATH]/db-master/repo/backup/db/backup.history ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/backup/db/backup.history: [YEAR-1] [TEST_PATH]/db-master/repo/backup/db/backup.history/[YEAR-1]: [BACKUP-FULL-1].manifest.gz [BACKUP-FULL-2].manifest.gz [BACKUP-INCR-1].manifest.gz [BACKUP-INCR-2].manifest.gz [BACKUP-DIFF-1].manifest.gz [BACKUP-INCR-3].manifest.gz [BACKUP-INCR-4].manifest.gz [BACKUP-DIFF-2].manifest.gz [BACKUP-DIFF-3].manifest.gz [BACKUP-FULL-3].manifest.gz [BACKUP-DIFF-4].manifest.gz diff backup - option backup-standby reset - backup performed from master (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --log-level-console=info --backup-standby --type=diff --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: backup command begin [BACKREST-VERSION]: --backup-standby --buffer-size=[BUFFER-SIZE] --compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=info --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2/base --protocol-timeout=60 --repo1-hardlink --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=diff P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 WARN: option backup-standby is enabled but backup is offline - backups will be performed from the primary P00 INFO: last backup label = [BACKUP-FULL-3], version = [VERSION-1] P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/base/base/base2.txt (9B, 100%) checksum cafac3c59553f2cfde41ce2e62e7662295f108c0 P00 INFO: diff backup size = 9B P00 INFO: new backup label = [BACKUP-DIFF-5] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=info --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: option 'repo1-retention-archive' is not set - archive logs will not be expired P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base-2/base [db:restore] [global] buffer-size=[BUFFER-SIZE] compress=y compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-hardlink=y repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y start-fast=y + supplemental file: [TEST_PATH]/db-master/repo/backup/db/[BACKUP-DIFF-5]/backup.manifest ----------------------------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-DIFF-5]" backup-prior="[BACKUP-FULL-3]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="diff" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=false option-compress=true option-compress-level=3 option-compress-level-network=3 option-delta=false option-hardlink=true option-online=false option-process-max=1 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base-2/base","type":"path"} pg_tblspc/2={"path":"../../tablespace/ts2","tablespace-id":"2","tablespace-name":"ts2","type":"link"} [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"7579ada0808d7f98087a0a586d0df9de009cdc33","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/44000_init={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/base2.txt={"checksum":"cafac3c59553f2cfde41ce2e62e7662295f108c0","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"a094d94583e209556d03c3c5da33131a065f1689","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt={"checksum":"dfcb8679956b734706cf87259d50c88f83e80e66","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=false mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/2={"destination":"../../tablespace/ts2"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={"mode":"0777"} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_dynshmem={} pg_data/pg_log={} pg_data/pg_notify={} pg_data/pg_replslot={} pg_data/pg_serial={} pg_data/pg_snapshots={} pg_data/pg_stat={} pg_data/pg_stat_tmp={} pg_data/pg_subtrans={} pg_data/pg_tblspc={} pg_tblspc={"mode":"0777"} pg_tblspc/2={} pg_tblspc/2/[TS_PATH-1]={} pg_tblspc/2/[TS_PATH-1]/32768={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":true,"option-online":false} [BACKUP-DIFF-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":["[BACKUP-FULL-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":true,"option-online":false} [BACKUP-DIFF-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":["[BACKUP-FULL-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":true,"option-online":false} [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" pgbackrest-release-2.24/test/expect/mock-all-002.log000066400000000000000000004113711362531507100221660ustar00rootroot00000000000000run 002 - rmt 1, s3 1, enc 1, delta 0 ===================================== stanza-create db - create required data for stanza (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --no-online stanza-create ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /archive/db/archive.info --------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [cipher] cipher-pass=[CIPHER-PASS-2] [db] db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" full backup - create pg_stat link, pg_clog dir (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --manifest-save-threshold=3 --cmd-ssh=/usr/bin/ssh --pg1-port=9999 --pg1-socket-path=/test_socket_path --buffer-size=[BUFFER-SIZE] --checksum-page --process-max=1 --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 WARN: invalid page checksums found in file db-master:[TEST_PATH]/db-master/db/base/base/32768/33001 at pages 0, 3-5, 7 P00 WARN: invalid page checksum found in file db-master:[TEST_PATH]/db-master/db/base/base/16384/17000 at page 1 + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-cipher-pass=x repo1-cipher-type=aes-256-cbc repo1-path=/ repo1-s3-bucket=pgbackrest-dev repo1-s3-endpoint=s3.amazonaws.com repo1-s3-key=accessKey1 repo1-s3-key-secret=verySecretKey1 repo1-s3-region=us-east-1 repo1-s3-verify-ssl=n repo1-type=s3 [global:backup] archive-copy=y start-fast=y + supplemental file: /backup/db/[BACKUP-FULL-1]/backup.manifest --------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-FULL-1]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="full" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=true option-compress=false option-compress-level=3 option-compress-level-network=1 option-delta=false option-hardlink=false option-online=false option-process-max=1 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base","type":"path"} pg_data/pg_hba.conf={"file":"pg_hba.conf","path":"../pg_config","type":"link"} pg_data/pg_stat={"path":"../pg_stat","type":"link"} pg_data/postgresql.conf={"file":"postgresql.conf","path":"../pg_config","type":"link"} [cipher] cipher-pass=[CIPHER-PASS-3] [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","checksum-page":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_hba.conf={"checksum":"dd4cea0cae348309f9de28ad4ded8ee2cc2e6d5b","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=false mode="0600" user="[USER-1]" [target:link] pg_data/pg_hba.conf={"destination":"../pg_config/pg_hba.conf"} pg_data/pg_stat={"destination":"../pg_stat"} pg_data/postgresql.conf={"destination":"../pg_config/postgresql.conf"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_stat={} pg_data/pg_tblspc={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" full backup - resume (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --force --checksum-page --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 WARN: backup '[BACKUP-FULL-1]' missing manifest removed from backup.info P00 WARN: --no-online passed and postmaster.pid exists but --force was passed so backup will continue though it looks like the postmaster is running and the backup will probably not be consistent P00 WARN: resumable backup [BACKUP-FULL-2] of same type exists -- remove invalid files and resume + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-cipher-pass=x repo1-cipher-type=aes-256-cbc repo1-path=/ repo1-s3-bucket=pgbackrest-dev repo1-s3-endpoint=s3.amazonaws.com repo1-s3-key=accessKey1 repo1-s3-key-secret=verySecretKey1 repo1-s3-region=us-east-1 repo1-s3-verify-ssl=n repo1-type=s3 [global:backup] archive-copy=y exclude=postgresql.auto.conf exclude=pg_log/ exclude=pg_log2 exclude=apipe start-fast=y + supplemental file: /backup/db/[BACKUP-FULL-2]/backup.manifest --------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-FULL-2]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="full" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=true option-compress=false option-compress-level=3 option-compress-level-network=1 option-delta=false option-hardlink=false option-online=false option-process-max=2 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base","type":"path"} pg_data/pg_hba.conf={"file":"pg_hba.conf","path":"../pg_config","type":"link"} pg_data/pg_stat={"path":"../pg_stat","type":"link"} pg_data/postgresql.conf={"file":"postgresql.conf","path":"../pg_config","type":"link"} [cipher] cipher-pass=[CIPHER-PASS-3] [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"mode":"0660","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","checksum-page":true,"master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"238a131a3e8eb98d1fc5b27d882ca40b7618fd2a","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_hba.conf={"checksum":"dd4cea0cae348309f9de28ad4ded8ee2cc2e6d5b","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=true mode="0600" user="[USER-1]" [target:link] pg_data/pg_hba.conf={"destination":"../pg_config/pg_hba.conf"} pg_data/pg_stat={"destination":"../pg_stat"} pg_data/postgresql.conf={"destination":"../pg_config/postgresql.conf"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_log={} pg_data/pg_stat={} pg_data/pg_tblspc={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" restore delta, backup '[BACKUP-FULL-2]' - add and delete files (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --set=[BACKUP-FULL-2] --link-all --cmd-ssh=/usr/bin/ssh --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --cmd-ssh=/usr/bin/ssh --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' restore delta, backup '[BACKUP-FULL-2]' - fix broken symlink (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --set=[BACKUP-FULL-2] --link-all --compress-level-network=0 --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --compress-level-network=0 --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' restore delta, force, backup '[BACKUP-FULL-2]' - restore links as directories (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --force --set=[BACKUP-FULL-2] --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ P00 WARN: file link 'pg_hba.conf' will be restored as a file at the same location P00 WARN: contents of directory link 'pg_stat' will be restored in a directory at the same location P00 WARN: file link 'postgresql.conf' will be restored as a file at the same location P00 WARN: unknown user 'bogus' in backup manifest mapped to current user P00 WARN: unknown group 'bogus' in backup manifest mapped to current group + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' incr backup - add tablespace 1 (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 WARN: incr backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2] P00 WARN: page misalignment in file db-master:[TEST_PATH]/db-master/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt: file size 7 is not divisible by page size 8192 + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-cipher-pass=x repo1-cipher-type=aes-256-cbc repo1-path=/ repo1-s3-bucket=pgbackrest-dev repo1-s3-endpoint=s3.amazonaws.com repo1-s3-key=accessKey1 repo1-s3-key-secret=verySecretKey1 repo1-s3-region=us-east-1 repo1-s3-verify-ssl=n repo1-type=s3 [global:backup] archive-copy=y start-fast=y + supplemental file: /backup/db/[BACKUP-INCR-1]/backup.manifest --------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-INCR-1]" backup-prior="[BACKUP-FULL-2]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="incr" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=true option-compress=false option-compress-level=3 option-compress-level-network=1 option-delta=false option-hardlink=false option-online=false option-process-max=2 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base","type":"path"} pg_tblspc/1={"path":"[TEST_PATH]/db-master/db/tablespace/ts1","tablespace-id":"1","tablespace-name":"ts1","type":"link"} [cipher] cipher-pass=[CIPHER-PASS-3] [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"mode":"0660","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","checksum-page":true,"master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"238a131a3e8eb98d1fc5b27d882ca40b7618fd2a","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changesize.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt={"checksum":"14c44cef6287269b08d41de489fd492bb9fc795d","checksum-page":false,"master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} [target:file:default] group="[GROUP-1]" master=true mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/1={"destination":"[TEST_PATH]/db-master/db/tablespace/ts1"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_log={} pg_data/pg_stat={} pg_data/pg_tblspc={} pg_tblspc={} pg_tblspc/1={} pg_tblspc/1/[TS_PATH-1]={} pg_tblspc/1/[TS_PATH-1]/16384={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" incr backup - resume and add tablespace 2 (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --process-max=1 --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 WARN: backup '[BACKUP-INCR-1]' missing manifest removed from backup.info P00 WARN: incr backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2] P00 WARN: file 'changetime.txt' has timestamp earlier than prior backup, enabling delta checksum P00 WARN: resumable backup [BACKUP-INCR-2] of same type exists -- remove invalid files and resume P00 WARN: page misalignment in file db-master:[TEST_PATH]/db-master/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt: file size 7 is not divisible by page size 8192 P00 WARN: page misalignment in file db-master:[TEST_PATH]/db-master/db/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt: file size 7 is not divisible by page size 8192 + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-cipher-pass=x repo1-cipher-type=aes-256-cbc repo1-path=/ repo1-s3-bucket=pgbackrest-dev repo1-s3-endpoint=s3.amazonaws.com repo1-s3-key=accessKey1 repo1-s3-key-secret=verySecretKey1 repo1-s3-region=us-east-1 repo1-s3-verify-ssl=n repo1-type=s3 [global:backup] archive-copy=y start-fast=y + supplemental file: /backup/db/[BACKUP-INCR-2]/backup.manifest --------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-INCR-2]" backup-prior="[BACKUP-FULL-2]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="incr" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=true option-compress=false option-compress-level=3 option-compress-level-network=1 option-delta=true option-hardlink=false option-online=false option-process-max=1 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base","type":"path"} pg_tblspc/1={"path":"[TEST_PATH]/db-master/db/tablespace/ts1","tablespace-id":"1","tablespace-name":"ts1","type":"link"} pg_tblspc/11={"path":"[TEST_PATH]/db-master/db/tablespace/ts11","tablespace-id":"11","tablespace-name":"ts11","type":"link"} pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2","tablespace-id":"2","tablespace-name":"ts2","type":"link"} [cipher] cipher-pass=[CIPHER-PASS-3] [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"mode":"0660","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","checksum-page":true,"master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"a094d94583e209556d03c3c5da33131a065f1689","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changesize.txt={"checksum":"3905d5be2ec8d67f41435dab5e0dcda3ae47455d","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt={"checksum":"d85de07d6421d90aa9191c11c889bfde43680f0f","checksum-page":false,"master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=true mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/1={"destination":"[TEST_PATH]/db-master/db/tablespace/ts1"} pg_data/pg_tblspc/11={"destination":"[TEST_PATH]/db-master/db/tablespace/ts11"} pg_data/pg_tblspc/2={"destination":"[TEST_PATH]/db-master/db/tablespace/ts2"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_log={} pg_data/pg_stat={} pg_data/pg_tblspc={} pg_tblspc={} pg_tblspc/1={} pg_tblspc/1/[TS_PATH-1]={} pg_tblspc/1/[TS_PATH-1]/16384={} pg_tblspc/11={} pg_tblspc/11/[TS_PATH-1]={} pg_tblspc/2={} pg_tblspc/2/[TS_PATH-1]={} pg_tblspc/2/[TS_PATH-1]/32768={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" diff backup - drop tablespace 11 (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --process-max=1 --type=diff --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 WARN: diff backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2] P00 WARN: file 'changetime.txt' has timestamp earlier than prior backup, enabling delta checksum P00 WARN: page misalignment in file db-master:[TEST_PATH]/db-master/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt: file size 7 is not divisible by page size 8192 P00 WARN: page misalignment in file db-master:[TEST_PATH]/db-master/db/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt: file size 7 is not divisible by page size 8192 + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-cipher-pass=x repo1-cipher-type=aes-256-cbc repo1-path=/ repo1-s3-bucket=pgbackrest-dev repo1-s3-endpoint=s3.amazonaws.com repo1-s3-key=accessKey1 repo1-s3-key-secret=verySecretKey1 repo1-s3-region=us-east-1 repo1-s3-verify-ssl=n repo1-type=s3 [global:backup] archive-copy=y start-fast=y + supplemental file: /backup/db/[BACKUP-DIFF-1]/backup.manifest --------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-DIFF-1]" backup-prior="[BACKUP-FULL-2]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="diff" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=true option-compress=false option-compress-level=3 option-compress-level-network=1 option-delta=true option-hardlink=false option-online=false option-process-max=1 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base","type":"path"} pg_tblspc/1={"path":"[TEST_PATH]/db-master/db/tablespace/ts1","tablespace-id":"1","tablespace-name":"ts1","type":"link"} pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2","tablespace-id":"2","tablespace-name":"ts2","type":"link"} [cipher] cipher-pass=[CIPHER-PASS-3] [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"mode":"0660","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","checksum-page":true,"master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"a094d94583e209556d03c3c5da33131a065f1689","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changesize.txt={"checksum":"3905d5be2ec8d67f41435dab5e0dcda3ae47455d","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt={"checksum":"d85de07d6421d90aa9191c11c889bfde43680f0f","checksum-page":false,"master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=true mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/1={"destination":"[TEST_PATH]/db-master/db/tablespace/ts1"} pg_data/pg_tblspc/2={"destination":"[TEST_PATH]/db-master/db/tablespace/ts2"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_log={} pg_data/pg_stat={} pg_data/pg_tblspc={} pg_tblspc={} pg_tblspc/1={} pg_tblspc/1/[TS_PATH-1]={} pg_tblspc/1/[TS_PATH-1]/16384={} pg_tblspc/2={} pg_tblspc/2/[TS_PATH-1]={} pg_tblspc/2/[TS_PATH-1]/32768={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" restore, backup '[BACKUP-DIFF-1]', remap - remap all paths (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --set=[BACKUP-DIFF-1] --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base-2/recovery.conf ------------------------------------------------------------------ # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' restore delta, backup '[BACKUP-DIFF-1]', remap - ensure file in tblspc root remains after --delta (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --set=[BACKUP-DIFF-1] --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base-2/recovery.conf ------------------------------------------------------------------ # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' incr backup - add files and remove tablespace 2 (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --process-max=1 --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 WARN: incr backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-DIFF-1] P00 WARN: page misalignment in file db-master:[TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt: file size 8 is not divisible by page size 8192 + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base-2 [db:restore] tablespace-map=1=[TEST_PATH]/db-master/db/tablespace/ts1-2 tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2 [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base-2 [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-cipher-pass=x repo1-cipher-type=aes-256-cbc repo1-path=/ repo1-s3-bucket=pgbackrest-dev repo1-s3-endpoint=s3.amazonaws.com repo1-s3-key=accessKey1 repo1-s3-key-secret=verySecretKey1 repo1-s3-region=us-east-1 repo1-s3-verify-ssl=n repo1-type=s3 [global:backup] archive-copy=y start-fast=y + supplemental file: /backup/db/[BACKUP-INCR-3]/backup.manifest --------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-INCR-3]" backup-prior="[BACKUP-DIFF-1]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="incr" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=true option-compress=false option-compress-level=3 option-compress-level-network=1 option-delta=false option-hardlink=false option-online=false option-process-max=1 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base-2","type":"path"} pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2-2","tablespace-id":"2","tablespace-name":"ts2","type":"link"} [cipher] cipher-pass=[CIPHER-PASS-3] [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"reference":"[BACKUP-DIFF-1]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/base2.txt={"checksum":"09b5e31766be1dba1ec27de82f975c1b6eea2a92","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"a094d94583e209556d03c3c5da33131a065f1689","master":true,"reference":"[BACKUP-DIFF-1]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changesize.txt={"checksum":"3905d5be2ec8d67f41435dab5e0dcda3ae47455d","master":true,"reference":"[BACKUP-DIFF-1]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"master":true,"reference":"[BACKUP-DIFF-1]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"reference":"[BACKUP-DIFF-1]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt={"checksum":"e324463005236d83e6e54795dbddd20a74533bf3","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=false mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/2={"destination":"[TEST_PATH]/db-master/db/tablespace/ts2-2"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_log={} pg_data/pg_stat={} pg_data/pg_tblspc={} pg_tblspc={} pg_tblspc/2={} pg_tblspc/2/[TS_PATH-1]={} pg_tblspc/2/[TS_PATH-1]/32768={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-1]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-1]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" incr backup - update files (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 WARN: incr backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-INCR-3] P00 WARN: file 'base/16384/17000' has same timestamp as prior but different size, enabling delta checksum P00 WARN: page misalignment in file db-master:[TEST_PATH]/db-master/db/base-2/base/16384/17000: file size 8 is not divisible by page size 8192 + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base-2 [db:restore] tablespace-map=1=[TEST_PATH]/db-master/db/tablespace/ts1-2 tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2 [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base-2 [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-cipher-pass=x repo1-cipher-type=aes-256-cbc repo1-path=/ repo1-s3-bucket=pgbackrest-dev repo1-s3-endpoint=s3.amazonaws.com repo1-s3-key=accessKey1 repo1-s3-key-secret=verySecretKey1 repo1-s3-region=us-east-1 repo1-s3-verify-ssl=n repo1-type=s3 [global:backup] archive-copy=y start-fast=y + supplemental file: /backup/db/[BACKUP-INCR-4]/backup.manifest --------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-INCR-4]" backup-prior="[BACKUP-INCR-3]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="incr" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=true option-compress=false option-compress-level=3 option-compress-level-network=1 option-delta=true option-hardlink=false option-online=false option-process-max=2 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base-2","type":"path"} pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2-2","tablespace-id":"2","tablespace-name":"ts2","type":"link"} [cipher] cipher-pass=[CIPHER-PASS-3] [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"reference":"[BACKUP-DIFF-1]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"9a53d532e27785e681766c98516a5e93f096a501","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/base2.txt={"checksum":"09b5e31766be1dba1ec27de82f975c1b6eea2a92","reference":"[BACKUP-INCR-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"a094d94583e209556d03c3c5da33131a065f1689","master":true,"reference":"[BACKUP-DIFF-1]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changesize.txt={"checksum":"3905d5be2ec8d67f41435dab5e0dcda3ae47455d","master":true,"reference":"[BACKUP-DIFF-1]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"master":true,"reference":"[BACKUP-DIFF-1]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"reference":"[BACKUP-DIFF-1]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt={"checksum":"e324463005236d83e6e54795dbddd20a74533bf3","checksum-page":false,"reference":"[BACKUP-INCR-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=false mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/2={"destination":"[TEST_PATH]/db-master/db/tablespace/ts2-2"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_log={} pg_data/pg_stat={} pg_data/pg_tblspc={} pg_tblspc={} pg_tblspc/2={} pg_tblspc/2/[TS_PATH-1]={} pg_tblspc/2/[TS_PATH-1]/32768={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-1]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-1]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-INCR-3]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-1]","[BACKUP-INCR-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" diff backup - updates since last full (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --process-max=1 --type=diff --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 WARN: diff backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2] P00 WARN: file 'base/16384/17000' has same timestamp as prior but different size, enabling delta checksum P00 WARN: page misalignment in file db-master:[TEST_PATH]/db-master/db/base-2/base/16384/17000: file size 8 is not divisible by page size 8192 P00 WARN: page misalignment in file db-master:[TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt: file size 8 is not divisible by page size 8192 P00 WARN: page misalignment in file db-master:[TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt: file size 7 is not divisible by page size 8192 + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base-2 [db:restore] tablespace-map=1=[TEST_PATH]/db-master/db/tablespace/ts1-2 tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2 [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base-2 [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-cipher-pass=x repo1-cipher-type=aes-256-cbc repo1-path=/ repo1-s3-bucket=pgbackrest-dev repo1-s3-endpoint=s3.amazonaws.com repo1-s3-key=accessKey1 repo1-s3-key-secret=verySecretKey1 repo1-s3-region=us-east-1 repo1-s3-verify-ssl=n repo1-type=s3 [global:backup] archive-copy=y start-fast=y + supplemental file: /backup/db/[BACKUP-DIFF-2]/backup.manifest --------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-DIFF-2]" backup-prior="[BACKUP-FULL-2]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="diff" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=true option-compress=false option-compress-level=3 option-compress-level-network=1 option-delta=true option-hardlink=false option-online=false option-process-max=1 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base-2","type":"path"} pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2-2","tablespace-id":"2","tablespace-name":"ts2","type":"link"} [cipher] cipher-pass=[CIPHER-PASS-3] [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"9a53d532e27785e681766c98516a5e93f096a501","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/base2.txt={"checksum":"09b5e31766be1dba1ec27de82f975c1b6eea2a92","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"a094d94583e209556d03c3c5da33131a065f1689","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changesize.txt={"checksum":"3905d5be2ec8d67f41435dab5e0dcda3ae47455d","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt={"checksum":"e324463005236d83e6e54795dbddd20a74533bf3","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=false mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/2={"destination":"[TEST_PATH]/db-master/db/tablespace/ts2-2"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_log={} pg_data/pg_stat={} pg_data/pg_tblspc={} pg_tblspc={} pg_tblspc/2={} pg_tblspc/2/[TS_PATH-1]={} pg_tblspc/2/[TS_PATH-1]/32768={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-1]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-1]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-INCR-3]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-1]","[BACKUP-INCR-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" diff backup - remove files (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --process-max=1 --type=diff --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 WARN: diff backup cannot alter compress option to 'true', reset to value in [BACKUP-FULL-2] P00 WARN: diff backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2] P00 WARN: file 'changetime.txt' has timestamp earlier than prior backup, enabling delta checksum P00 WARN: page misalignment in file db-master:[TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt: file size 12 is not divisible by page size 8192 P00 WARN: page misalignment in file db-master:[TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt: file size 7 is not divisible by page size 8192 + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base-2 [db:restore] tablespace-map=1=[TEST_PATH]/db-master/db/tablespace/ts1-2 tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2 [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base-2 [global] buffer-size=[BUFFER-SIZE] compress=y compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-cipher-pass=x repo1-cipher-type=aes-256-cbc repo1-path=/ repo1-s3-bucket=pgbackrest-dev repo1-s3-endpoint=s3.amazonaws.com repo1-s3-key=accessKey1 repo1-s3-key-secret=verySecretKey1 repo1-s3-region=us-east-1 repo1-s3-verify-ssl=n repo1-type=s3 [global:backup] archive-copy=y start-fast=y + supplemental file: /backup/db/[BACKUP-DIFF-3]/backup.manifest --------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-DIFF-3]" backup-prior="[BACKUP-FULL-2]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="diff" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=true option-compress=false option-compress-level=3 option-compress-level-network=1 option-delta=true option-hardlink=false option-online=false option-process-max=1 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base-2","type":"path"} pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2-2","tablespace-id":"2","tablespace-name":"ts2","type":"link"} [cipher] cipher-pass=[CIPHER-PASS-3] [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"mode":"0660","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","checksum-page":true,"master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","checksum-page":true,"master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"a094d94583e209556d03c3c5da33131a065f1689","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changesize.txt={"checksum":"3905d5be2ec8d67f41435dab5e0dcda3ae47455d","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt={"checksum":"dfcb8679956b734706cf87259d50c88f83e80e66","checksum-page":false,"master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=true mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/2={"destination":"[TEST_PATH]/db-master/db/tablespace/ts2-2"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_log={} pg_data/pg_stat={} pg_data/pg_tblspc={} pg_tblspc={} pg_tblspc/2={} pg_tblspc/2/[TS_PATH-1]={} pg_tblspc/2/[TS_PATH-1]/32768={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-1]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-1]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-INCR-3]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-1]","[BACKUP-INCR-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" full backup - update file (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base-2 [db:restore] tablespace-map=1=[TEST_PATH]/db-master/db/tablespace/ts1-2 tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2 [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base-2 [global] buffer-size=[BUFFER-SIZE] compress=y compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-cipher-pass=x repo1-cipher-type=aes-256-cbc repo1-path=/ repo1-s3-bucket=pgbackrest-dev repo1-s3-endpoint=s3.amazonaws.com repo1-s3-key=accessKey1 repo1-s3-key-secret=verySecretKey1 repo1-s3-region=us-east-1 repo1-s3-verify-ssl=n repo1-type=s3 [global:backup] archive-copy=y start-fast=y + supplemental file: /backup/db/[BACKUP-FULL-3]/backup.manifest --------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-FULL-3]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="full" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=false option-compress=true option-compress-level=3 option-compress-level-network=1 option-delta=false option-hardlink=false option-online=false option-process-max=2 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base-2","type":"path"} pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2-2","tablespace-id":"2","tablespace-name":"ts2","type":"link"} [cipher] cipher-pass=[CIPHER-PASS-4] [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"mode":"0660","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"7579ada0808d7f98087a0a586d0df9de009cdc33","master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"a094d94583e209556d03c3c5da33131a065f1689","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changesize.txt={"checksum":"3905d5be2ec8d67f41435dab5e0dcda3ae47455d","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt={"checksum":"dfcb8679956b734706cf87259d50c88f83e80e66","master":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=true mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/2={"destination":"[TEST_PATH]/db-master/db/tablespace/ts2-2"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_log={} pg_data/pg_stat={} pg_data/pg_tblspc={} pg_tblspc={} pg_tblspc/2={} pg_tblspc/2/[TS_PATH-1]={} pg_tblspc/2/[TS_PATH-1]/32768={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-1]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-1]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-INCR-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-INCR-3]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-1]","[BACKUP-INCR-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false} [BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false} [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" expire full=1 (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --repo1-retention-full=1 --stanza=db expire ------------------------------------------------------------------------------------------------------------------------------------ diff backup - add file (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --checksum-page --type=diff --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base-2 [db:restore] tablespace-map=1=[TEST_PATH]/db-master/db/tablespace/ts1-2 tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2 [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base-2 [global] buffer-size=[BUFFER-SIZE] compress=y compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-cipher-pass=x repo1-cipher-type=aes-256-cbc repo1-path=/ repo1-s3-bucket=pgbackrest-dev repo1-s3-endpoint=s3.amazonaws.com repo1-s3-key=accessKey1 repo1-s3-key-secret=verySecretKey1 repo1-s3-region=us-east-1 repo1-s3-verify-ssl=n repo1-type=s3 [global:backup] archive-copy=y start-fast=y + supplemental file: /backup/db/[BACKUP-DIFF-4]/backup.manifest --------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-DIFF-4]" backup-prior="[BACKUP-FULL-3]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="diff" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=false option-compress=true option-compress-level=3 option-compress-level-network=1 option-delta=false option-hardlink=false option-online=false option-process-max=2 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base-2","type":"path"} pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2-2","tablespace-id":"2","tablespace-name":"ts2","type":"link"} [cipher] cipher-pass=[CIPHER-PASS-4] [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"7579ada0808d7f98087a0a586d0df9de009cdc33","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/base2.txt={"checksum":"cafac3c59553f2cfde41ce2e62e7662295f108c0","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"a094d94583e209556d03c3c5da33131a065f1689","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changesize.txt={"checksum":"3905d5be2ec8d67f41435dab5e0dcda3ae47455d","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt={"checksum":"dfcb8679956b734706cf87259d50c88f83e80e66","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=false mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/2={"destination":"[TEST_PATH]/db-master/db/tablespace/ts2-2"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_log={} pg_data/pg_stat={} pg_data/pg_tblspc={} pg_tblspc={} pg_tblspc/2={} pg_tblspc/2/[TS_PATH-1]={} pg_tblspc/2/[TS_PATH-1]/32768={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":["[BACKUP-FULL-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false} [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" restore delta, remap - selective restore 16384 (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --db-include=16384 --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base-2/recovery.conf ------------------------------------------------------------------ # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' restore delta, remap - selective restore 32768 (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --db-include=32768 --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base-2/recovery.conf ------------------------------------------------------------------ # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' restore delta, remap, expect exit 80 - error on invalid id (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --log-level-console=warn --db-include=7777 --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ P00 ERROR: [080]: database to include '7777' does not exist restore delta, remap, expect exit 81 - error on system id (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --log-level-console=warn --db-include=1 --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ P00 ERROR: [081]: system databases (template0, postgres, etc.) are included by default restore, remap - no tablespace remap (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --tablespace-map-all=../../tablespace --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base-2/base/recovery.conf ----------------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' diff backup - option backup-standby reset - backup performed from master (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --log-level-console=info --backup-standby --type=diff --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: backup command begin [BACKREST-VERSION]: --backup-standby --buffer-size=[BUFFER-SIZE] --compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/backup/lock --log-level-console=info --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-master/db/base-2/base --process-max=2 --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db --start-fast --type=diff P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 WARN: option backup-standby is enabled but backup is offline - backups will be performed from the primary P00 INFO: last backup label = [BACKUP-FULL-3], version = [VERSION-1] P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base-2/base/base/base2.txt (9B, 100%) checksum cafac3c59553f2cfde41ce2e62e7662295f108c0 P00 INFO: diff backup size = 9B P00 INFO: new backup label = [BACKUP-DIFF-5] P00 INFO: http statistics:[HTTP-STATISTICS] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/backup/pgbackrest.conf --lock-path=[TEST_PATH]/backup/lock --log-level-console=info --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db P00 INFO: option 'repo1-retention-archive' is not set - archive logs will not be expired P00 INFO: http statistics:[HTTP-STATISTICS] P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base-2/base [db:restore] [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base-2/base [global] buffer-size=[BUFFER-SIZE] compress=y compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=warn log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-cipher-pass=x repo1-cipher-type=aes-256-cbc repo1-path=/ repo1-s3-bucket=pgbackrest-dev repo1-s3-endpoint=s3.amazonaws.com repo1-s3-key=accessKey1 repo1-s3-key-secret=verySecretKey1 repo1-s3-region=us-east-1 repo1-s3-verify-ssl=n repo1-type=s3 [global:backup] archive-copy=y start-fast=y + supplemental file: /backup/db/[BACKUP-DIFF-5]/backup.manifest --------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup] backup-label="[BACKUP-DIFF-5]" backup-prior="[BACKUP-FULL-3]" backup-timestamp-copy-start=[TIMESTAMP] backup-timestamp-start=[TIMESTAMP] backup-timestamp-stop=[TIMESTAMP] backup-type="diff" [backup:db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [backup:option] option-archive-check=false option-archive-copy=true option-backup-standby=false option-buffer-size=[BUFFER-SIZE] option-checksum-page=false option-compress=true option-compress-level=3 option-compress-level-network=1 option-delta=false option-hardlink=false option-online=false option-process-max=2 [backup:target] pg_data={"path":"[TEST_PATH]/db-master/db/base-2/base","type":"path"} pg_tblspc/2={"path":"../../tablespace/ts2","tablespace-id":"2","tablespace-name":"ts2","type":"link"} [cipher] cipher-pass=[CIPHER-PASS-4] [target:file] pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/17000={"checksum":"7579ada0808d7f98087a0a586d0df9de009cdc33","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000={"checksum":"7a16d165e4775f7c92e8cdf60c0af57313f0bf90","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33000.32767={"checksum":"6e99b589e550e68e934fd235ccba59fe5b592a9e","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/base/base2.txt={"checksum":"cafac3c59553f2cfde41ce2e62e7662295f108c0","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changecontent.txt={"checksum":"a094d94583e209556d03c3c5da33131a065f1689","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changesize.txt={"checksum":"3905d5be2ec8d67f41435dab5e0dcda3ae47455d","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/changetime.txt={"checksum":"88087292ed82e26f3eb824d0bffc05ccf7a30f8d","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/global/pg_control={"checksum":"4c77c900f7af0d9ab13fa9982051a42e0b637f6c","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_data/special-!_.*'()&!@;:+,?={"master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zero_from_start={"master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_data/zerosize.txt={"master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt={"checksum":"dfcb8679956b734706cf87259d50c88f83e80e66","reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]} [target:file:default] group="[GROUP-1]" master=false mode="0600" user="[USER-1]" [target:link] pg_data/pg_tblspc/2={"destination":"../../tablespace/ts2"} [target:link:default] group="[GROUP-1]" user="[USER-1]" [target:path] pg_data={} pg_data/base={} pg_data/base/1={} pg_data/base/16384={} pg_data/base/32768={} pg_data/global={} pg_data/pg_clog={} pg_data/pg_log={} pg_data/pg_stat={} pg_data/pg_tblspc={} pg_tblspc={} pg_tblspc/2={} pg_tblspc/2/[TS_PATH-1]={} pg_tblspc/2/[TS_PATH-1]/32768={} [target:path:default] group="[GROUP-1]" mode="0700" user="[USER-1]" [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":["[BACKUP-FULL-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false} [BACKUP-DIFF-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":["[BACKUP-FULL-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false} [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" pgbackrest-release-2.24/test/expect/mock-archive-001.log000066400000000000000000000647401362531507100230420ustar00rootroot00000000000000run 001 - rmt 0, s3 0, enc 1 ============================ > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 ERROR: [055]: unable to load info file '[TEST_PATH]/db-master/repo/archive/db/archive.info' or '[TEST_PATH]/db-master/repo/archive/db/archive.info.copy': FileMissingError: unable to open missing file '[TEST_PATH]/db-master/repo/archive/db/archive.info' for read FileMissingError: unable to open missing file '[TEST_PATH]/db-master/repo/archive/db/archive.info.copy' for read HINT: archive.info cannot be opened but is required to push/get WAL segments. HINT: is archive_command configured correctly in postgresql.conf? HINT: has a stanza-create been performed? HINT: use --no-archive-check to disable archive checks during backup if you have an alternate archiving scheme. P00 INFO: archive-push command end: aborted with exception [055] > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get 000000010000000100000001 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [000000010000000100000001, [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 ERROR: [055]: unable to load info file '[TEST_PATH]/db-master/repo/archive/db/archive.info' or '[TEST_PATH]/db-master/repo/archive/db/archive.info.copy': FileMissingError: unable to open missing file '[TEST_PATH]/db-master/repo/archive/db/archive.info' for read FileMissingError: unable to open missing file '[TEST_PATH]/db-master/repo/archive/db/archive.info.copy' for read HINT: archive.info cannot be opened but is required to push/get WAL segments. HINT: is archive_command configured correctly in postgresql.conf? HINT: has a stanza-create been performed? HINT: use --no-archive-check to disable archive checks during backup if you have an alternate archiving scheme. P00 INFO: archive-get command end: aborted with exception [055] stanza-create db - stanza create (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --no-online stanza-create ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-create command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: stanza-create command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/archive/db/archive.info ----------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [cipher] cipher-pass=[CIPHER-PASS-2] [db] db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push --compress [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001] --buffer-size=[BUFFER-SIZE] --compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: pushed WAL file '000000010000000100000001' to the archive P00 INFO: archive-push command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get 700000007000000070000000 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [700000007000000070000000, [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: unable to find 700000007000000070000000 in the archive P00 INFO: archive-get command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get 000000010000000100000001 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [000000010000000100000001, [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: found 000000010000000100000001 in the archive P00 INFO: archive-get command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push --compress --archive-async --process-max=2 [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002 ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --archive-async --buffer-size=[BUFFER-SIZE] --compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --process-max=2 --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --spool-path=[TEST_PATH]/db-master/spool --stanza=db P00 INFO: pushed WAL file '000000010000000100000002' to the archive asynchronously P00 INFO: archive-push command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push --archive-async [TEST_PATH]/db-master/db/base/pg_xlog/00000002.history ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/00000002.history] --archive-async --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --spool-path=[TEST_PATH]/db-master/spool --stanza=db P00 INFO: pushed WAL file '00000002.history' to the archive asynchronously P00 INFO: archive-push command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get 000000010000000100000001 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [000000010000000100000001, [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 ERROR: [044]: unable to retrieve the archive id for database version '9.4' and system-id '1000000000000000094' P00 INFO: archive-get command end: aborted with exception [044] > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002 ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 ERROR: [044]: PostgreSQL version 9.4, system-id 1000000000000000094 do not match stanza version 9.4, system-id 5000900090001855000 HINT: are you archiving to the correct stanza? P00 INFO: archive-push command end: aborted with exception [044] > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get 000000010000000100000001 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [000000010000000100000001, [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 ERROR: [044]: unable to retrieve the archive id for database version '9.4' and system-id '1000000000000000094' P00 INFO: archive-get command end: aborted with exception [044] stop db stanza (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db stop ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stop command begin [BACKREST-VERSION]: --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: stop command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002 ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 ERROR: [062]: stop file exists for stanza db P00 INFO: archive-push command end: aborted with exception [062] > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get 000000010000000100000001 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [000000010000000100000001, [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 ERROR: [062]: stop file exists for stanza db P00 INFO: archive-get command end: aborted with exception [062] start db stanza (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db start ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: start command begin [BACKREST-VERSION]: --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: start command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002 ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 WARN: WAL file '000000010000000100000002' already exists in the archive with the same checksum HINT: this is valid in some recovery scenarios but may also indicate a problem. P00 INFO: pushed WAL file '000000010000000100000002' to the archive P00 INFO: archive-push command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002 ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 ERROR: [045]: WAL file '000000010000000100000002' already exists in the archive P00 INFO: archive-push command end: aborted with exception [045] > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get --archive-async --repo-type=cifs --archive-timeout=5 000000010000000100000002 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [000000010000000100000002, [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG] --archive-async --archive-timeout=5 --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --repo1-type=cifs --spool-path=[TEST_PATH]/db-master/spool --stanza=db P00 INFO: found 000000010000000100000002 in the archive P00 INFO: archive-get command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get --archive-async 00000001.history [TEST_PATH]/db-master/db/base/pg_xlog/00000001.history ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [00000001.history, [TEST_PATH]/db-master/db/base/pg_xlog/00000001.history] --archive-async --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --spool-path=[TEST_PATH]/db-master/spool --stanza=db P00 INFO: unable to find 00000001.history in the archive P00 INFO: archive-get command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get --archive-async 00000002.history [TEST_PATH]/db-master/db/base/pg_xlog/00000002.history ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [00000002.history, [TEST_PATH]/db-master/db/base/pg_xlog/00000002.history] --archive-async --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --spool-path=[TEST_PATH]/db-master/spool --stanza=db P00 INFO: found 00000002.history in the archive P00 INFO: archive-get command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: pushed WAL file '000000010000000100000002.partial' to the archive P00 INFO: archive-push command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 WARN: WAL file '000000010000000100000002.partial' already exists in the archive with the same checksum HINT: this is valid in some recovery scenarios but may also indicate a problem. P00 INFO: pushed WAL file '000000010000000100000002.partial' to the archive P00 INFO: archive-push command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 ERROR: [045]: WAL file '000000010000000100000002.partial' already exists in the archive P00 INFO: archive-push command end: aborted with exception [045] pgbackrest-release-2.24/test/expect/mock-archive-002.log000066400000000000000000000675601362531507100230460ustar00rootroot00000000000000run 002 - rmt 1, s3 1, enc 0 ============================ > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 ERROR: [055]: unable to load info file '/archive/db/archive.info' or '/archive/db/archive.info.copy': FileMissingError: raised from remote-0 protocol on 'backup': unable to open '/archive/db/archive.info': No such file or directory FileMissingError: raised from remote-0 protocol on 'backup': unable to open '/archive/db/archive.info.copy': No such file or directory HINT: archive.info cannot be opened but is required to push/get WAL segments. HINT: is archive_command configured correctly in postgresql.conf? HINT: has a stanza-create been performed? HINT: use --no-archive-check to disable archive checks during backup if you have an alternate archiving scheme. P00 INFO: archive-push command end: aborted with exception [055] > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get 000000010000000100000001 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [000000010000000100000001, [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 ERROR: [055]: unable to load info file '/archive/db/archive.info' or '/archive/db/archive.info.copy': FileMissingError: raised from remote-0 protocol on 'backup': unable to open '/archive/db/archive.info': No such file or directory FileMissingError: raised from remote-0 protocol on 'backup': unable to open '/archive/db/archive.info.copy': No such file or directory HINT: archive.info cannot be opened but is required to push/get WAL segments. HINT: is archive_command configured correctly in postgresql.conf? HINT: has a stanza-create been performed? HINT: use --no-archive-check to disable archive checks during backup if you have an alternate archiving scheme. P00 INFO: archive-get command end: aborted with exception [055] stanza-create db - stanza create (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --no-online stanza-create ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-create command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=/ --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db P00 DETAIL: tls statistics:[TLS-STATISTICS] P00 INFO: http statistics:[HTTP-STATISTICS] P00 INFO: stanza-create command end: completed successfully + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /archive/db/archive.info --------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [db] db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push --cmd-ssh=/usr/bin/ssh --compress [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001] --buffer-size=[BUFFER-SIZE] --cmd-ssh=/usr/bin/ssh --compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 INFO: pushed WAL file '000000010000000100000001' to the archive P00 INFO: archive-push command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get 700000007000000070000000 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [700000007000000070000000, [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 INFO: unable to find 700000007000000070000000 in the archive P00 INFO: archive-get command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get 000000010000000100000001 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [000000010000000100000001, [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 INFO: found 000000010000000100000001 in the archive P00 INFO: archive-get command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push --compress --archive-async --process-max=2 [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002 ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --archive-async --buffer-size=[BUFFER-SIZE] --compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --process-max=2 --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --spool-path=[TEST_PATH]/db-master/spool --stanza=db P00 INFO: pushed WAL file '000000010000000100000002' to the archive asynchronously P00 INFO: archive-push command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push --archive-async [TEST_PATH]/db-master/db/base/pg_xlog/00000002.history ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/00000002.history] --archive-async --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --spool-path=[TEST_PATH]/db-master/spool --stanza=db P00 INFO: pushed WAL file '00000002.history' to the archive asynchronously P00 INFO: archive-push command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get 000000010000000100000001 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [000000010000000100000001, [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 ERROR: [044]: unable to retrieve the archive id for database version '9.4' and system-id '1000000000000000094' P00 INFO: archive-get command end: aborted with exception [044] > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002 ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 ERROR: [044]: PostgreSQL version 9.4, system-id 1000000000000000094 do not match stanza version 9.4, system-id 5000900090001855000 HINT: are you archiving to the correct stanza? P00 INFO: archive-push command end: aborted with exception [044] > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get 000000010000000100000001 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [000000010000000100000001, [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 ERROR: [044]: unable to retrieve the archive id for database version '9.4' and system-id '1000000000000000094' P00 INFO: archive-get command end: aborted with exception [044] stop db stanza (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db stop ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stop command begin [BACKREST-VERSION]: --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 INFO: stop command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002 ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 ERROR: [062]: stop file exists for stanza db P00 INFO: archive-push command end: aborted with exception [062] > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get 000000010000000100000001 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [000000010000000100000001, [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 ERROR: [062]: stop file exists for stanza db P00 INFO: archive-get command end: aborted with exception [062] start db stanza (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db start ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: start command begin [BACKREST-VERSION]: --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 INFO: start command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002 ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 WARN: WAL file '000000010000000100000002' already exists in the archive with the same checksum HINT: this is valid in some recovery scenarios but may also indicate a problem. P00 INFO: pushed WAL file '000000010000000100000002' to the archive P00 INFO: archive-push command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002 ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 ERROR: [045]: WAL file '000000010000000100000002' already exists in the archive P00 INFO: archive-push command end: aborted with exception [045] > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get --cmd-ssh=/usr/bin/ssh --archive-async --archive-timeout=5 000000010000000100000002 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [000000010000000100000002, [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG] --archive-async --archive-timeout=5 --buffer-size=[BUFFER-SIZE] --cmd-ssh=/usr/bin/ssh --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --spool-path=[TEST_PATH]/db-master/spool --stanza=db P00 INFO: found 000000010000000100000002 in the archive P00 INFO: archive-get command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get --archive-async 00000001.history [TEST_PATH]/db-master/db/base/pg_xlog/00000001.history ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [00000001.history, [TEST_PATH]/db-master/db/base/pg_xlog/00000001.history] --archive-async --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --spool-path=[TEST_PATH]/db-master/spool --stanza=db P00 INFO: unable to find 00000001.history in the archive P00 INFO: archive-get command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get --archive-async 00000002.history [TEST_PATH]/db-master/db/base/pg_xlog/00000002.history ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [00000002.history, [TEST_PATH]/db-master/db/base/pg_xlog/00000002.history] --archive-async --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --spool-path=[TEST_PATH]/db-master/spool --stanza=db P00 INFO: found 00000002.history in the archive P00 INFO: archive-get command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 INFO: pushed WAL file '000000010000000100000002.partial' to the archive P00 INFO: archive-push command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 WARN: WAL file '000000010000000100000002.partial' already exists in the archive with the same checksum HINT: this is valid in some recovery scenarios but may also indicate a problem. P00 INFO: pushed WAL file '000000010000000100000002.partial' to the archive P00 INFO: archive-push command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 ERROR: [045]: WAL file '000000010000000100000002.partial' already exists in the archive P00 INFO: archive-push command end: aborted with exception [045] pgbackrest-release-2.24/test/expect/mock-archive-stop-001.log000066400000000000000000000103621362531507100240140ustar00rootroot00000000000000run 001 - rmt 0, cmp 0, error version, s3 0, enc 1 ================================================== stanza-create db - create required data for stanza (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --no-online stanza-create ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-create command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: stanza-create command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/archive/db/archive.info ----------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [cipher] cipher-pass=[CIPHER-PASS-2] [db] db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --archive-push-queue-max=33554432 --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 ------------------------------------------------------------------------------------------------------------------------------------ > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --archive-push-queue-max=33554432 --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002 ------------------------------------------------------------------------------------------------------------------------------------ P00 ERROR: [044]: PostgreSQL version 9.4, system-id 1000000000000000094 do not match stanza version 8.0, system-id 1000000000000000094 HINT: are you archiving to the correct stanza? > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --archive-push-queue-max=33554432 --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000003 ------------------------------------------------------------------------------------------------------------------------------------ P00 ERROR: [044]: PostgreSQL version 9.4, system-id 1000000000000000094 do not match stanza version 8.0, system-id 1000000000000000094 HINT: are you archiving to the correct stanza? > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --archive-push-queue-max=33554432 --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000004 --repo1-host=bogus ------------------------------------------------------------------------------------------------------------------------------------ P00 WARN: dropped WAL file '000000010000000100000004' because archive queue exceeded 32MB > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --archive-push-queue-max=33554432 --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000005 ------------------------------------------------------------------------------------------------------------------------------------ pgbackrest-release-2.24/test/expect/mock-archive-stop-002.log000066400000000000000000000105211362531507100240120ustar00rootroot00000000000000run 002 - rmt 1, cmp 1, error connect, s3 1, enc 0 ================================================== stanza-create db - create required data for stanza (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --no-online stanza-create ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-create command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=/ --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db P00 DETAIL: tls statistics:[TLS-STATISTICS] P00 INFO: http statistics:[HTTP-STATISTICS] P00 INFO: stanza-create command end: completed successfully + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [db] db-catalog-version=201409291 db-control-version=942 db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /archive/db/archive.info --------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [db] db-id=1 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --archive-push-queue-max=33554432 --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 ------------------------------------------------------------------------------------------------------------------------------------ > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --archive-push-queue-max=33554432 --stanza=db --repo1-host=bogus archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002 ------------------------------------------------------------------------------------------------------------------------------------ P00 ERROR: [125]: remote-0 process on 'bogus' terminated unexpectedly [255]: ssh: Could not resolve hostname bogus: Name or service not known > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --archive-push-queue-max=33554432 --stanza=db --repo1-host=bogus archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000003 ------------------------------------------------------------------------------------------------------------------------------------ P00 ERROR: [125]: remote-0 process on 'bogus' terminated unexpectedly [255]: ssh: Could not resolve hostname bogus: Name or service not known > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --archive-push-queue-max=33554432 --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000004 --repo1-host=bogus ------------------------------------------------------------------------------------------------------------------------------------ P00 WARN: dropped WAL file '000000010000000100000004' because archive queue exceeded 32MB > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --archive-push-queue-max=33554432 --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000005 ------------------------------------------------------------------------------------------------------------------------------------ pgbackrest-release-2.24/test/expect/mock-expire-001.log000066400000000000000000007407721362531507100227230ustar00rootroot00000000000000run 001 - simple, enc 0, s3 0 ============================= * full backup: label = [BACKUP-FULL-1], start = 000000010000000000000000, stop = 000000010000000000000002 * incr backup: label = [BACKUP-INCR-1], prior = [BACKUP-FULL-1], start = 000000010000000000000006, stop = 0000000100000000000000FB ==================================================================================================================================== + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000000","backup-archive-stop":"000000010000000000000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000006","backup-archive-stop":"0000000100000000000000FB","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-1]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-1] [BACKUP-INCR-1] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000000: 000000010000000000000000-0000000000000000000000000000000000000000.gz 000000010000000000000001-0000000000000000000000000000000000000000 000000010000000000000002-0000000000000000000000000000000000000000.gz 000000010000000000000003-0000000000000000000000000000000000000000.gz 000000010000000000000004-0000000000000000000000000000000000000000 000000010000000000000005-0000000000000000000000000000000000000000.gz 000000010000000000000006-0000000000000000000000000000000000000000.gz 000000010000000000000007-0000000000000000000000000000000000000000 000000010000000000000008-0000000000000000000000000000000000000000.gz 000000010000000000000009-0000000000000000000000000000000000000000 00000001000000000000000A-0000000000000000000000000000000000000000.gz 00000001000000000000000B-0000000000000000000000000000000000000000 00000001000000000000000C-0000000000000000000000000000000000000000.gz 00000001000000000000000D-0000000000000000000000000000000000000000 00000001000000000000000E-0000000000000000000000000000000000000000.gz 00000001000000000000000F-0000000000000000000000000000000000000000 000000010000000000000010-0000000000000000000000000000000000000000.gz 000000010000000000000011-0000000000000000000000000000000000000000 000000010000000000000012-0000000000000000000000000000000000000000.gz 000000010000000000000013-0000000000000000000000000000000000000000 000000010000000000000014-0000000000000000000000000000000000000000.gz 000000010000000000000015-0000000000000000000000000000000000000000 000000010000000000000016-0000000000000000000000000000000000000000.gz 000000010000000000000017-0000000000000000000000000000000000000000 000000010000000000000018-0000000000000000000000000000000000000000.gz 000000010000000000000019-0000000000000000000000000000000000000000 00000001000000000000001A-0000000000000000000000000000000000000000.gz 00000001000000000000001B-0000000000000000000000000000000000000000 00000001000000000000001C-0000000000000000000000000000000000000000.gz 00000001000000000000001D-0000000000000000000000000000000000000000 00000001000000000000001E-0000000000000000000000000000000000000000.gz 00000001000000000000001F-0000000000000000000000000000000000000000 000000010000000000000020-0000000000000000000000000000000000000000.gz 000000010000000000000021-0000000000000000000000000000000000000000 000000010000000000000022-0000000000000000000000000000000000000000.gz 000000010000000000000023-0000000000000000000000000000000000000000 000000010000000000000024-0000000000000000000000000000000000000000.gz 000000010000000000000025-0000000000000000000000000000000000000000 000000010000000000000026-0000000000000000000000000000000000000000.gz 000000010000000000000027-0000000000000000000000000000000000000000 000000010000000000000028-0000000000000000000000000000000000000000.gz 000000010000000000000029-0000000000000000000000000000000000000000 00000001000000000000002A-0000000000000000000000000000000000000000.gz 00000001000000000000002B-0000000000000000000000000000000000000000 00000001000000000000002C-0000000000000000000000000000000000000000.gz 00000001000000000000002D-0000000000000000000000000000000000000000 00000001000000000000002E-0000000000000000000000000000000000000000.gz 00000001000000000000002F-0000000000000000000000000000000000000000 000000010000000000000030-0000000000000000000000000000000000000000.gz 000000010000000000000031-0000000000000000000000000000000000000000 000000010000000000000032-0000000000000000000000000000000000000000.gz 000000010000000000000033-0000000000000000000000000000000000000000 000000010000000000000034-0000000000000000000000000000000000000000.gz 000000010000000000000035-0000000000000000000000000000000000000000 000000010000000000000036-0000000000000000000000000000000000000000.gz 000000010000000000000037-0000000000000000000000000000000000000000 000000010000000000000038-0000000000000000000000000000000000000000.gz 000000010000000000000039-0000000000000000000000000000000000000000 00000001000000000000003A-0000000000000000000000000000000000000000.gz 00000001000000000000003B-0000000000000000000000000000000000000000 00000001000000000000003C-0000000000000000000000000000000000000000.gz 00000001000000000000003D-0000000000000000000000000000000000000000 00000001000000000000003E-0000000000000000000000000000000000000000.gz 00000001000000000000003F-0000000000000000000000000000000000000000 000000010000000000000040-0000000000000000000000000000000000000000.gz 000000010000000000000041-0000000000000000000000000000000000000000 000000010000000000000042-0000000000000000000000000000000000000000.gz 000000010000000000000043-0000000000000000000000000000000000000000 000000010000000000000044-0000000000000000000000000000000000000000.gz 000000010000000000000045-0000000000000000000000000000000000000000 000000010000000000000046-0000000000000000000000000000000000000000.gz 000000010000000000000047-0000000000000000000000000000000000000000 000000010000000000000048-0000000000000000000000000000000000000000.gz 000000010000000000000049-0000000000000000000000000000000000000000 00000001000000000000004A-0000000000000000000000000000000000000000.gz 00000001000000000000004B-0000000000000000000000000000000000000000 00000001000000000000004C-0000000000000000000000000000000000000000.gz 00000001000000000000004D-0000000000000000000000000000000000000000 00000001000000000000004E-0000000000000000000000000000000000000000.gz 00000001000000000000004F-0000000000000000000000000000000000000000 000000010000000000000050-0000000000000000000000000000000000000000.gz 000000010000000000000051-0000000000000000000000000000000000000000 000000010000000000000052-0000000000000000000000000000000000000000.gz 000000010000000000000053-0000000000000000000000000000000000000000 000000010000000000000054-0000000000000000000000000000000000000000.gz 000000010000000000000055-0000000000000000000000000000000000000000 000000010000000000000056-0000000000000000000000000000000000000000.gz 000000010000000000000057-0000000000000000000000000000000000000000 000000010000000000000058-0000000000000000000000000000000000000000.gz 000000010000000000000059-0000000000000000000000000000000000000000 00000001000000000000005A-0000000000000000000000000000000000000000.gz 00000001000000000000005B-0000000000000000000000000000000000000000 00000001000000000000005C-0000000000000000000000000000000000000000.gz 00000001000000000000005D-0000000000000000000000000000000000000000 00000001000000000000005E-0000000000000000000000000000000000000000.gz 00000001000000000000005F-0000000000000000000000000000000000000000 000000010000000000000060-0000000000000000000000000000000000000000.gz 000000010000000000000061-0000000000000000000000000000000000000000 000000010000000000000062-0000000000000000000000000000000000000000.gz 000000010000000000000063-0000000000000000000000000000000000000000 000000010000000000000064-0000000000000000000000000000000000000000.gz 000000010000000000000065-0000000000000000000000000000000000000000 000000010000000000000066-0000000000000000000000000000000000000000.gz 000000010000000000000067-0000000000000000000000000000000000000000 000000010000000000000068-0000000000000000000000000000000000000000.gz 000000010000000000000069-0000000000000000000000000000000000000000 00000001000000000000006A-0000000000000000000000000000000000000000.gz 00000001000000000000006B-0000000000000000000000000000000000000000 00000001000000000000006C-0000000000000000000000000000000000000000.gz 00000001000000000000006D-0000000000000000000000000000000000000000 00000001000000000000006E-0000000000000000000000000000000000000000.gz 00000001000000000000006F-0000000000000000000000000000000000000000 000000010000000000000070-0000000000000000000000000000000000000000.gz 000000010000000000000071-0000000000000000000000000000000000000000 000000010000000000000072-0000000000000000000000000000000000000000.gz 000000010000000000000073-0000000000000000000000000000000000000000 000000010000000000000074-0000000000000000000000000000000000000000.gz 000000010000000000000075-0000000000000000000000000000000000000000 000000010000000000000076-0000000000000000000000000000000000000000.gz 000000010000000000000077-0000000000000000000000000000000000000000 000000010000000000000078-0000000000000000000000000000000000000000.gz 000000010000000000000079-0000000000000000000000000000000000000000 00000001000000000000007A-0000000000000000000000000000000000000000.gz 00000001000000000000007B-0000000000000000000000000000000000000000 00000001000000000000007C-0000000000000000000000000000000000000000.gz 00000001000000000000007D-0000000000000000000000000000000000000000 00000001000000000000007E-0000000000000000000000000000000000000000.gz 00000001000000000000007F-0000000000000000000000000000000000000000 000000010000000000000080-0000000000000000000000000000000000000000.gz 000000010000000000000081-0000000000000000000000000000000000000000 000000010000000000000082-0000000000000000000000000000000000000000.gz 000000010000000000000083-0000000000000000000000000000000000000000 000000010000000000000084-0000000000000000000000000000000000000000.gz 000000010000000000000085-0000000000000000000000000000000000000000 000000010000000000000086-0000000000000000000000000000000000000000.gz 000000010000000000000087-0000000000000000000000000000000000000000 000000010000000000000088-0000000000000000000000000000000000000000.gz 000000010000000000000089-0000000000000000000000000000000000000000 00000001000000000000008A-0000000000000000000000000000000000000000.gz 00000001000000000000008B-0000000000000000000000000000000000000000 00000001000000000000008C-0000000000000000000000000000000000000000.gz 00000001000000000000008D-0000000000000000000000000000000000000000 00000001000000000000008E-0000000000000000000000000000000000000000.gz 00000001000000000000008F-0000000000000000000000000000000000000000 000000010000000000000090-0000000000000000000000000000000000000000.gz 000000010000000000000091-0000000000000000000000000000000000000000 000000010000000000000092-0000000000000000000000000000000000000000.gz 000000010000000000000093-0000000000000000000000000000000000000000 000000010000000000000094-0000000000000000000000000000000000000000.gz 000000010000000000000095-0000000000000000000000000000000000000000 000000010000000000000096-0000000000000000000000000000000000000000.gz 000000010000000000000097-0000000000000000000000000000000000000000 000000010000000000000098-0000000000000000000000000000000000000000.gz 000000010000000000000099-0000000000000000000000000000000000000000 00000001000000000000009A-0000000000000000000000000000000000000000.gz 00000001000000000000009B-0000000000000000000000000000000000000000 00000001000000000000009C-0000000000000000000000000000000000000000.gz 00000001000000000000009D-0000000000000000000000000000000000000000 00000001000000000000009E-0000000000000000000000000000000000000000.gz 00000001000000000000009F-0000000000000000000000000000000000000000 0000000100000000000000A0-0000000000000000000000000000000000000000.gz 0000000100000000000000A1-0000000000000000000000000000000000000000 0000000100000000000000A2-0000000000000000000000000000000000000000.gz 0000000100000000000000A3-0000000000000000000000000000000000000000 0000000100000000000000A4-0000000000000000000000000000000000000000.gz 0000000100000000000000A5-0000000000000000000000000000000000000000 0000000100000000000000A6-0000000000000000000000000000000000000000.gz 0000000100000000000000A7-0000000000000000000000000000000000000000 0000000100000000000000A8-0000000000000000000000000000000000000000.gz 0000000100000000000000A9-0000000000000000000000000000000000000000 0000000100000000000000AA-0000000000000000000000000000000000000000.gz 0000000100000000000000AB-0000000000000000000000000000000000000000 0000000100000000000000AC-0000000000000000000000000000000000000000.gz 0000000100000000000000AD-0000000000000000000000000000000000000000 0000000100000000000000AE-0000000000000000000000000000000000000000.gz 0000000100000000000000AF-0000000000000000000000000000000000000000 0000000100000000000000B0-0000000000000000000000000000000000000000.gz 0000000100000000000000B1-0000000000000000000000000000000000000000 0000000100000000000000B2-0000000000000000000000000000000000000000.gz 0000000100000000000000B3-0000000000000000000000000000000000000000 0000000100000000000000B4-0000000000000000000000000000000000000000.gz 0000000100000000000000B5-0000000000000000000000000000000000000000 0000000100000000000000B6-0000000000000000000000000000000000000000.gz 0000000100000000000000B7-0000000000000000000000000000000000000000 0000000100000000000000B8-0000000000000000000000000000000000000000.gz 0000000100000000000000B9-0000000000000000000000000000000000000000 0000000100000000000000BA-0000000000000000000000000000000000000000.gz 0000000100000000000000BB-0000000000000000000000000000000000000000 0000000100000000000000BC-0000000000000000000000000000000000000000.gz 0000000100000000000000BD-0000000000000000000000000000000000000000 0000000100000000000000BE-0000000000000000000000000000000000000000.gz 0000000100000000000000BF-0000000000000000000000000000000000000000 0000000100000000000000C0-0000000000000000000000000000000000000000.gz 0000000100000000000000C1-0000000000000000000000000000000000000000 0000000100000000000000C2-0000000000000000000000000000000000000000.gz 0000000100000000000000C3-0000000000000000000000000000000000000000 0000000100000000000000C4-0000000000000000000000000000000000000000.gz 0000000100000000000000C5-0000000000000000000000000000000000000000 0000000100000000000000C6-0000000000000000000000000000000000000000.gz 0000000100000000000000C7-0000000000000000000000000000000000000000 0000000100000000000000C8-0000000000000000000000000000000000000000.gz 0000000100000000000000C9-0000000000000000000000000000000000000000 0000000100000000000000CA-0000000000000000000000000000000000000000.gz 0000000100000000000000CB-0000000000000000000000000000000000000000 0000000100000000000000CC-0000000000000000000000000000000000000000.gz 0000000100000000000000CD-0000000000000000000000000000000000000000 0000000100000000000000CE-0000000000000000000000000000000000000000.gz 0000000100000000000000CF-0000000000000000000000000000000000000000 0000000100000000000000D0-0000000000000000000000000000000000000000.gz 0000000100000000000000D1-0000000000000000000000000000000000000000 0000000100000000000000D2-0000000000000000000000000000000000000000.gz 0000000100000000000000D3-0000000000000000000000000000000000000000 0000000100000000000000D4-0000000000000000000000000000000000000000.gz 0000000100000000000000D5-0000000000000000000000000000000000000000 0000000100000000000000D6-0000000000000000000000000000000000000000.gz 0000000100000000000000D7-0000000000000000000000000000000000000000 0000000100000000000000D8-0000000000000000000000000000000000000000.gz 0000000100000000000000D9-0000000000000000000000000000000000000000 0000000100000000000000DA-0000000000000000000000000000000000000000.gz 0000000100000000000000DB-0000000000000000000000000000000000000000 0000000100000000000000DC-0000000000000000000000000000000000000000.gz 0000000100000000000000DD-0000000000000000000000000000000000000000 0000000100000000000000DE-0000000000000000000000000000000000000000.gz 0000000100000000000000DF-0000000000000000000000000000000000000000 0000000100000000000000E0-0000000000000000000000000000000000000000.gz 0000000100000000000000E1-0000000000000000000000000000000000000000 0000000100000000000000E2-0000000000000000000000000000000000000000.gz 0000000100000000000000E3-0000000000000000000000000000000000000000 0000000100000000000000E4-0000000000000000000000000000000000000000.gz 0000000100000000000000E5-0000000000000000000000000000000000000000 0000000100000000000000E6-0000000000000000000000000000000000000000.gz 0000000100000000000000E7-0000000000000000000000000000000000000000 0000000100000000000000E8-0000000000000000000000000000000000000000.gz 0000000100000000000000E9-0000000000000000000000000000000000000000 0000000100000000000000EA-0000000000000000000000000000000000000000.gz 0000000100000000000000EB-0000000000000000000000000000000000000000 0000000100000000000000EC-0000000000000000000000000000000000000000.gz 0000000100000000000000ED-0000000000000000000000000000000000000000 0000000100000000000000EE-0000000000000000000000000000000000000000.gz 0000000100000000000000EF-0000000000000000000000000000000000000000 0000000100000000000000F0-0000000000000000000000000000000000000000.gz 0000000100000000000000F1-0000000000000000000000000000000000000000 0000000100000000000000F2-0000000000000000000000000000000000000000.gz 0000000100000000000000F3-0000000000000000000000000000000000000000 0000000100000000000000F4-0000000000000000000000000000000000000000.gz 0000000100000000000000F5-0000000000000000000000000000000000000000 0000000100000000000000F6-0000000000000000000000000000000000000000.gz 0000000100000000000000F7-0000000000000000000000000000000000000000 0000000100000000000000F8-0000000000000000000000000000000000000000.gz 0000000100000000000000F9-0000000000000000000000000000000000000000 0000000100000000000000FA-0000000000000000000000000000000000000000.gz 0000000100000000000000FB-0000000000000000000000000000000000000000 0000000100000000000000FC-0000000000000000000000000000000000000000.gz 0000000100000000000000FD-0000000000000000000000000000000000000000 0000000100000000000000FE-0000000000000000000000000000000000000000.gz Nothing to expire > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config="[TEST_PATH]/db-master/pgbackrest.conf" --stanza=db --log-level-console=detail --repo1-retention-full=1 --repo1-retention-diff=1 --repo1-retention-archive-type=full --repo1-retention-archive=1 expire ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-archive=1 --repo1-retention-archive-type=full --repo1-retention-diff=1 --repo1-retention-full=1 --stanza=db P00 DETAIL: archive retention on backup [BACKUP-FULL-1], archiveId = 9.2-1, start = 000000010000000000000000 P00 DETAIL: no archive to remove, archiveId = 9.2-1 P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000000","backup-archive-stop":"000000010000000000000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000006","backup-archive-stop":"0000000100000000000000FB","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-1]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-1] [BACKUP-INCR-1] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000000: 000000010000000000000000-0000000000000000000000000000000000000000.gz 000000010000000000000001-0000000000000000000000000000000000000000 000000010000000000000002-0000000000000000000000000000000000000000.gz 000000010000000000000003-0000000000000000000000000000000000000000.gz 000000010000000000000004-0000000000000000000000000000000000000000 000000010000000000000005-0000000000000000000000000000000000000000.gz 000000010000000000000006-0000000000000000000000000000000000000000.gz 000000010000000000000007-0000000000000000000000000000000000000000 000000010000000000000008-0000000000000000000000000000000000000000.gz 000000010000000000000009-0000000000000000000000000000000000000000 00000001000000000000000A-0000000000000000000000000000000000000000.gz 00000001000000000000000B-0000000000000000000000000000000000000000 00000001000000000000000C-0000000000000000000000000000000000000000.gz 00000001000000000000000D-0000000000000000000000000000000000000000 00000001000000000000000E-0000000000000000000000000000000000000000.gz 00000001000000000000000F-0000000000000000000000000000000000000000 000000010000000000000010-0000000000000000000000000000000000000000.gz 000000010000000000000011-0000000000000000000000000000000000000000 000000010000000000000012-0000000000000000000000000000000000000000.gz 000000010000000000000013-0000000000000000000000000000000000000000 000000010000000000000014-0000000000000000000000000000000000000000.gz 000000010000000000000015-0000000000000000000000000000000000000000 000000010000000000000016-0000000000000000000000000000000000000000.gz 000000010000000000000017-0000000000000000000000000000000000000000 000000010000000000000018-0000000000000000000000000000000000000000.gz 000000010000000000000019-0000000000000000000000000000000000000000 00000001000000000000001A-0000000000000000000000000000000000000000.gz 00000001000000000000001B-0000000000000000000000000000000000000000 00000001000000000000001C-0000000000000000000000000000000000000000.gz 00000001000000000000001D-0000000000000000000000000000000000000000 00000001000000000000001E-0000000000000000000000000000000000000000.gz 00000001000000000000001F-0000000000000000000000000000000000000000 000000010000000000000020-0000000000000000000000000000000000000000.gz 000000010000000000000021-0000000000000000000000000000000000000000 000000010000000000000022-0000000000000000000000000000000000000000.gz 000000010000000000000023-0000000000000000000000000000000000000000 000000010000000000000024-0000000000000000000000000000000000000000.gz 000000010000000000000025-0000000000000000000000000000000000000000 000000010000000000000026-0000000000000000000000000000000000000000.gz 000000010000000000000027-0000000000000000000000000000000000000000 000000010000000000000028-0000000000000000000000000000000000000000.gz 000000010000000000000029-0000000000000000000000000000000000000000 00000001000000000000002A-0000000000000000000000000000000000000000.gz 00000001000000000000002B-0000000000000000000000000000000000000000 00000001000000000000002C-0000000000000000000000000000000000000000.gz 00000001000000000000002D-0000000000000000000000000000000000000000 00000001000000000000002E-0000000000000000000000000000000000000000.gz 00000001000000000000002F-0000000000000000000000000000000000000000 000000010000000000000030-0000000000000000000000000000000000000000.gz 000000010000000000000031-0000000000000000000000000000000000000000 000000010000000000000032-0000000000000000000000000000000000000000.gz 000000010000000000000033-0000000000000000000000000000000000000000 000000010000000000000034-0000000000000000000000000000000000000000.gz 000000010000000000000035-0000000000000000000000000000000000000000 000000010000000000000036-0000000000000000000000000000000000000000.gz 000000010000000000000037-0000000000000000000000000000000000000000 000000010000000000000038-0000000000000000000000000000000000000000.gz 000000010000000000000039-0000000000000000000000000000000000000000 00000001000000000000003A-0000000000000000000000000000000000000000.gz 00000001000000000000003B-0000000000000000000000000000000000000000 00000001000000000000003C-0000000000000000000000000000000000000000.gz 00000001000000000000003D-0000000000000000000000000000000000000000 00000001000000000000003E-0000000000000000000000000000000000000000.gz 00000001000000000000003F-0000000000000000000000000000000000000000 000000010000000000000040-0000000000000000000000000000000000000000.gz 000000010000000000000041-0000000000000000000000000000000000000000 000000010000000000000042-0000000000000000000000000000000000000000.gz 000000010000000000000043-0000000000000000000000000000000000000000 000000010000000000000044-0000000000000000000000000000000000000000.gz 000000010000000000000045-0000000000000000000000000000000000000000 000000010000000000000046-0000000000000000000000000000000000000000.gz 000000010000000000000047-0000000000000000000000000000000000000000 000000010000000000000048-0000000000000000000000000000000000000000.gz 000000010000000000000049-0000000000000000000000000000000000000000 00000001000000000000004A-0000000000000000000000000000000000000000.gz 00000001000000000000004B-0000000000000000000000000000000000000000 00000001000000000000004C-0000000000000000000000000000000000000000.gz 00000001000000000000004D-0000000000000000000000000000000000000000 00000001000000000000004E-0000000000000000000000000000000000000000.gz 00000001000000000000004F-0000000000000000000000000000000000000000 000000010000000000000050-0000000000000000000000000000000000000000.gz 000000010000000000000051-0000000000000000000000000000000000000000 000000010000000000000052-0000000000000000000000000000000000000000.gz 000000010000000000000053-0000000000000000000000000000000000000000 000000010000000000000054-0000000000000000000000000000000000000000.gz 000000010000000000000055-0000000000000000000000000000000000000000 000000010000000000000056-0000000000000000000000000000000000000000.gz 000000010000000000000057-0000000000000000000000000000000000000000 000000010000000000000058-0000000000000000000000000000000000000000.gz 000000010000000000000059-0000000000000000000000000000000000000000 00000001000000000000005A-0000000000000000000000000000000000000000.gz 00000001000000000000005B-0000000000000000000000000000000000000000 00000001000000000000005C-0000000000000000000000000000000000000000.gz 00000001000000000000005D-0000000000000000000000000000000000000000 00000001000000000000005E-0000000000000000000000000000000000000000.gz 00000001000000000000005F-0000000000000000000000000000000000000000 000000010000000000000060-0000000000000000000000000000000000000000.gz 000000010000000000000061-0000000000000000000000000000000000000000 000000010000000000000062-0000000000000000000000000000000000000000.gz 000000010000000000000063-0000000000000000000000000000000000000000 000000010000000000000064-0000000000000000000000000000000000000000.gz 000000010000000000000065-0000000000000000000000000000000000000000 000000010000000000000066-0000000000000000000000000000000000000000.gz 000000010000000000000067-0000000000000000000000000000000000000000 000000010000000000000068-0000000000000000000000000000000000000000.gz 000000010000000000000069-0000000000000000000000000000000000000000 00000001000000000000006A-0000000000000000000000000000000000000000.gz 00000001000000000000006B-0000000000000000000000000000000000000000 00000001000000000000006C-0000000000000000000000000000000000000000.gz 00000001000000000000006D-0000000000000000000000000000000000000000 00000001000000000000006E-0000000000000000000000000000000000000000.gz 00000001000000000000006F-0000000000000000000000000000000000000000 000000010000000000000070-0000000000000000000000000000000000000000.gz 000000010000000000000071-0000000000000000000000000000000000000000 000000010000000000000072-0000000000000000000000000000000000000000.gz 000000010000000000000073-0000000000000000000000000000000000000000 000000010000000000000074-0000000000000000000000000000000000000000.gz 000000010000000000000075-0000000000000000000000000000000000000000 000000010000000000000076-0000000000000000000000000000000000000000.gz 000000010000000000000077-0000000000000000000000000000000000000000 000000010000000000000078-0000000000000000000000000000000000000000.gz 000000010000000000000079-0000000000000000000000000000000000000000 00000001000000000000007A-0000000000000000000000000000000000000000.gz 00000001000000000000007B-0000000000000000000000000000000000000000 00000001000000000000007C-0000000000000000000000000000000000000000.gz 00000001000000000000007D-0000000000000000000000000000000000000000 00000001000000000000007E-0000000000000000000000000000000000000000.gz 00000001000000000000007F-0000000000000000000000000000000000000000 000000010000000000000080-0000000000000000000000000000000000000000.gz 000000010000000000000081-0000000000000000000000000000000000000000 000000010000000000000082-0000000000000000000000000000000000000000.gz 000000010000000000000083-0000000000000000000000000000000000000000 000000010000000000000084-0000000000000000000000000000000000000000.gz 000000010000000000000085-0000000000000000000000000000000000000000 000000010000000000000086-0000000000000000000000000000000000000000.gz 000000010000000000000087-0000000000000000000000000000000000000000 000000010000000000000088-0000000000000000000000000000000000000000.gz 000000010000000000000089-0000000000000000000000000000000000000000 00000001000000000000008A-0000000000000000000000000000000000000000.gz 00000001000000000000008B-0000000000000000000000000000000000000000 00000001000000000000008C-0000000000000000000000000000000000000000.gz 00000001000000000000008D-0000000000000000000000000000000000000000 00000001000000000000008E-0000000000000000000000000000000000000000.gz 00000001000000000000008F-0000000000000000000000000000000000000000 000000010000000000000090-0000000000000000000000000000000000000000.gz 000000010000000000000091-0000000000000000000000000000000000000000 000000010000000000000092-0000000000000000000000000000000000000000.gz 000000010000000000000093-0000000000000000000000000000000000000000 000000010000000000000094-0000000000000000000000000000000000000000.gz 000000010000000000000095-0000000000000000000000000000000000000000 000000010000000000000096-0000000000000000000000000000000000000000.gz 000000010000000000000097-0000000000000000000000000000000000000000 000000010000000000000098-0000000000000000000000000000000000000000.gz 000000010000000000000099-0000000000000000000000000000000000000000 00000001000000000000009A-0000000000000000000000000000000000000000.gz 00000001000000000000009B-0000000000000000000000000000000000000000 00000001000000000000009C-0000000000000000000000000000000000000000.gz 00000001000000000000009D-0000000000000000000000000000000000000000 00000001000000000000009E-0000000000000000000000000000000000000000.gz 00000001000000000000009F-0000000000000000000000000000000000000000 0000000100000000000000A0-0000000000000000000000000000000000000000.gz 0000000100000000000000A1-0000000000000000000000000000000000000000 0000000100000000000000A2-0000000000000000000000000000000000000000.gz 0000000100000000000000A3-0000000000000000000000000000000000000000 0000000100000000000000A4-0000000000000000000000000000000000000000.gz 0000000100000000000000A5-0000000000000000000000000000000000000000 0000000100000000000000A6-0000000000000000000000000000000000000000.gz 0000000100000000000000A7-0000000000000000000000000000000000000000 0000000100000000000000A8-0000000000000000000000000000000000000000.gz 0000000100000000000000A9-0000000000000000000000000000000000000000 0000000100000000000000AA-0000000000000000000000000000000000000000.gz 0000000100000000000000AB-0000000000000000000000000000000000000000 0000000100000000000000AC-0000000000000000000000000000000000000000.gz 0000000100000000000000AD-0000000000000000000000000000000000000000 0000000100000000000000AE-0000000000000000000000000000000000000000.gz 0000000100000000000000AF-0000000000000000000000000000000000000000 0000000100000000000000B0-0000000000000000000000000000000000000000.gz 0000000100000000000000B1-0000000000000000000000000000000000000000 0000000100000000000000B2-0000000000000000000000000000000000000000.gz 0000000100000000000000B3-0000000000000000000000000000000000000000 0000000100000000000000B4-0000000000000000000000000000000000000000.gz 0000000100000000000000B5-0000000000000000000000000000000000000000 0000000100000000000000B6-0000000000000000000000000000000000000000.gz 0000000100000000000000B7-0000000000000000000000000000000000000000 0000000100000000000000B8-0000000000000000000000000000000000000000.gz 0000000100000000000000B9-0000000000000000000000000000000000000000 0000000100000000000000BA-0000000000000000000000000000000000000000.gz 0000000100000000000000BB-0000000000000000000000000000000000000000 0000000100000000000000BC-0000000000000000000000000000000000000000.gz 0000000100000000000000BD-0000000000000000000000000000000000000000 0000000100000000000000BE-0000000000000000000000000000000000000000.gz 0000000100000000000000BF-0000000000000000000000000000000000000000 0000000100000000000000C0-0000000000000000000000000000000000000000.gz 0000000100000000000000C1-0000000000000000000000000000000000000000 0000000100000000000000C2-0000000000000000000000000000000000000000.gz 0000000100000000000000C3-0000000000000000000000000000000000000000 0000000100000000000000C4-0000000000000000000000000000000000000000.gz 0000000100000000000000C5-0000000000000000000000000000000000000000 0000000100000000000000C6-0000000000000000000000000000000000000000.gz 0000000100000000000000C7-0000000000000000000000000000000000000000 0000000100000000000000C8-0000000000000000000000000000000000000000.gz 0000000100000000000000C9-0000000000000000000000000000000000000000 0000000100000000000000CA-0000000000000000000000000000000000000000.gz 0000000100000000000000CB-0000000000000000000000000000000000000000 0000000100000000000000CC-0000000000000000000000000000000000000000.gz 0000000100000000000000CD-0000000000000000000000000000000000000000 0000000100000000000000CE-0000000000000000000000000000000000000000.gz 0000000100000000000000CF-0000000000000000000000000000000000000000 0000000100000000000000D0-0000000000000000000000000000000000000000.gz 0000000100000000000000D1-0000000000000000000000000000000000000000 0000000100000000000000D2-0000000000000000000000000000000000000000.gz 0000000100000000000000D3-0000000000000000000000000000000000000000 0000000100000000000000D4-0000000000000000000000000000000000000000.gz 0000000100000000000000D5-0000000000000000000000000000000000000000 0000000100000000000000D6-0000000000000000000000000000000000000000.gz 0000000100000000000000D7-0000000000000000000000000000000000000000 0000000100000000000000D8-0000000000000000000000000000000000000000.gz 0000000100000000000000D9-0000000000000000000000000000000000000000 0000000100000000000000DA-0000000000000000000000000000000000000000.gz 0000000100000000000000DB-0000000000000000000000000000000000000000 0000000100000000000000DC-0000000000000000000000000000000000000000.gz 0000000100000000000000DD-0000000000000000000000000000000000000000 0000000100000000000000DE-0000000000000000000000000000000000000000.gz 0000000100000000000000DF-0000000000000000000000000000000000000000 0000000100000000000000E0-0000000000000000000000000000000000000000.gz 0000000100000000000000E1-0000000000000000000000000000000000000000 0000000100000000000000E2-0000000000000000000000000000000000000000.gz 0000000100000000000000E3-0000000000000000000000000000000000000000 0000000100000000000000E4-0000000000000000000000000000000000000000.gz 0000000100000000000000E5-0000000000000000000000000000000000000000 0000000100000000000000E6-0000000000000000000000000000000000000000.gz 0000000100000000000000E7-0000000000000000000000000000000000000000 0000000100000000000000E8-0000000000000000000000000000000000000000.gz 0000000100000000000000E9-0000000000000000000000000000000000000000 0000000100000000000000EA-0000000000000000000000000000000000000000.gz 0000000100000000000000EB-0000000000000000000000000000000000000000 0000000100000000000000EC-0000000000000000000000000000000000000000.gz 0000000100000000000000ED-0000000000000000000000000000000000000000 0000000100000000000000EE-0000000000000000000000000000000000000000.gz 0000000100000000000000EF-0000000000000000000000000000000000000000 0000000100000000000000F0-0000000000000000000000000000000000000000.gz 0000000100000000000000F1-0000000000000000000000000000000000000000 0000000100000000000000F2-0000000000000000000000000000000000000000.gz 0000000100000000000000F3-0000000000000000000000000000000000000000 0000000100000000000000F4-0000000000000000000000000000000000000000.gz 0000000100000000000000F5-0000000000000000000000000000000000000000 0000000100000000000000F6-0000000000000000000000000000000000000000.gz 0000000100000000000000F7-0000000000000000000000000000000000000000 0000000100000000000000F8-0000000000000000000000000000000000000000.gz 0000000100000000000000F9-0000000000000000000000000000000000000000 0000000100000000000000FA-0000000000000000000000000000000000000000.gz 0000000100000000000000FB-0000000000000000000000000000000000000000 0000000100000000000000FC-0000000000000000000000000000000000000000.gz 0000000100000000000000FD-0000000000000000000000000000000000000000 0000000100000000000000FE-0000000000000000000000000000000000000000.gz * full backup: label = [BACKUP-FULL-2], start = 000000010000000100000000, stop = 000000010000000100000002 ==================================================================================================================================== + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000000","backup-archive-stop":"000000010000000000000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000006","backup-archive-stop":"0000000100000000000000FB","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-1]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000100000000","backup-archive-stop":"000000010000000100000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-1] [BACKUP-INCR-1] [BACKUP-FULL-2] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000000: 000000010000000000000000-0000000000000000000000000000000000000000.gz 000000010000000000000001-0000000000000000000000000000000000000000 000000010000000000000002-0000000000000000000000000000000000000000.gz 000000010000000000000003-0000000000000000000000000000000000000000.gz 000000010000000000000004-0000000000000000000000000000000000000000 000000010000000000000005-0000000000000000000000000000000000000000.gz 000000010000000000000006-0000000000000000000000000000000000000000.gz 000000010000000000000007-0000000000000000000000000000000000000000 000000010000000000000008-0000000000000000000000000000000000000000.gz 000000010000000000000009-0000000000000000000000000000000000000000 00000001000000000000000A-0000000000000000000000000000000000000000.gz 00000001000000000000000B-0000000000000000000000000000000000000000 00000001000000000000000C-0000000000000000000000000000000000000000.gz 00000001000000000000000D-0000000000000000000000000000000000000000 00000001000000000000000E-0000000000000000000000000000000000000000.gz 00000001000000000000000F-0000000000000000000000000000000000000000 000000010000000000000010-0000000000000000000000000000000000000000.gz 000000010000000000000011-0000000000000000000000000000000000000000 000000010000000000000012-0000000000000000000000000000000000000000.gz 000000010000000000000013-0000000000000000000000000000000000000000 000000010000000000000014-0000000000000000000000000000000000000000.gz 000000010000000000000015-0000000000000000000000000000000000000000 000000010000000000000016-0000000000000000000000000000000000000000.gz 000000010000000000000017-0000000000000000000000000000000000000000 000000010000000000000018-0000000000000000000000000000000000000000.gz 000000010000000000000019-0000000000000000000000000000000000000000 00000001000000000000001A-0000000000000000000000000000000000000000.gz 00000001000000000000001B-0000000000000000000000000000000000000000 00000001000000000000001C-0000000000000000000000000000000000000000.gz 00000001000000000000001D-0000000000000000000000000000000000000000 00000001000000000000001E-0000000000000000000000000000000000000000.gz 00000001000000000000001F-0000000000000000000000000000000000000000 000000010000000000000020-0000000000000000000000000000000000000000.gz 000000010000000000000021-0000000000000000000000000000000000000000 000000010000000000000022-0000000000000000000000000000000000000000.gz 000000010000000000000023-0000000000000000000000000000000000000000 000000010000000000000024-0000000000000000000000000000000000000000.gz 000000010000000000000025-0000000000000000000000000000000000000000 000000010000000000000026-0000000000000000000000000000000000000000.gz 000000010000000000000027-0000000000000000000000000000000000000000 000000010000000000000028-0000000000000000000000000000000000000000.gz 000000010000000000000029-0000000000000000000000000000000000000000 00000001000000000000002A-0000000000000000000000000000000000000000.gz 00000001000000000000002B-0000000000000000000000000000000000000000 00000001000000000000002C-0000000000000000000000000000000000000000.gz 00000001000000000000002D-0000000000000000000000000000000000000000 00000001000000000000002E-0000000000000000000000000000000000000000.gz 00000001000000000000002F-0000000000000000000000000000000000000000 000000010000000000000030-0000000000000000000000000000000000000000.gz 000000010000000000000031-0000000000000000000000000000000000000000 000000010000000000000032-0000000000000000000000000000000000000000.gz 000000010000000000000033-0000000000000000000000000000000000000000 000000010000000000000034-0000000000000000000000000000000000000000.gz 000000010000000000000035-0000000000000000000000000000000000000000 000000010000000000000036-0000000000000000000000000000000000000000.gz 000000010000000000000037-0000000000000000000000000000000000000000 000000010000000000000038-0000000000000000000000000000000000000000.gz 000000010000000000000039-0000000000000000000000000000000000000000 00000001000000000000003A-0000000000000000000000000000000000000000.gz 00000001000000000000003B-0000000000000000000000000000000000000000 00000001000000000000003C-0000000000000000000000000000000000000000.gz 00000001000000000000003D-0000000000000000000000000000000000000000 00000001000000000000003E-0000000000000000000000000000000000000000.gz 00000001000000000000003F-0000000000000000000000000000000000000000 000000010000000000000040-0000000000000000000000000000000000000000.gz 000000010000000000000041-0000000000000000000000000000000000000000 000000010000000000000042-0000000000000000000000000000000000000000.gz 000000010000000000000043-0000000000000000000000000000000000000000 000000010000000000000044-0000000000000000000000000000000000000000.gz 000000010000000000000045-0000000000000000000000000000000000000000 000000010000000000000046-0000000000000000000000000000000000000000.gz 000000010000000000000047-0000000000000000000000000000000000000000 000000010000000000000048-0000000000000000000000000000000000000000.gz 000000010000000000000049-0000000000000000000000000000000000000000 00000001000000000000004A-0000000000000000000000000000000000000000.gz 00000001000000000000004B-0000000000000000000000000000000000000000 00000001000000000000004C-0000000000000000000000000000000000000000.gz 00000001000000000000004D-0000000000000000000000000000000000000000 00000001000000000000004E-0000000000000000000000000000000000000000.gz 00000001000000000000004F-0000000000000000000000000000000000000000 000000010000000000000050-0000000000000000000000000000000000000000.gz 000000010000000000000051-0000000000000000000000000000000000000000 000000010000000000000052-0000000000000000000000000000000000000000.gz 000000010000000000000053-0000000000000000000000000000000000000000 000000010000000000000054-0000000000000000000000000000000000000000.gz 000000010000000000000055-0000000000000000000000000000000000000000 000000010000000000000056-0000000000000000000000000000000000000000.gz 000000010000000000000057-0000000000000000000000000000000000000000 000000010000000000000058-0000000000000000000000000000000000000000.gz 000000010000000000000059-0000000000000000000000000000000000000000 00000001000000000000005A-0000000000000000000000000000000000000000.gz 00000001000000000000005B-0000000000000000000000000000000000000000 00000001000000000000005C-0000000000000000000000000000000000000000.gz 00000001000000000000005D-0000000000000000000000000000000000000000 00000001000000000000005E-0000000000000000000000000000000000000000.gz 00000001000000000000005F-0000000000000000000000000000000000000000 000000010000000000000060-0000000000000000000000000000000000000000.gz 000000010000000000000061-0000000000000000000000000000000000000000 000000010000000000000062-0000000000000000000000000000000000000000.gz 000000010000000000000063-0000000000000000000000000000000000000000 000000010000000000000064-0000000000000000000000000000000000000000.gz 000000010000000000000065-0000000000000000000000000000000000000000 000000010000000000000066-0000000000000000000000000000000000000000.gz 000000010000000000000067-0000000000000000000000000000000000000000 000000010000000000000068-0000000000000000000000000000000000000000.gz 000000010000000000000069-0000000000000000000000000000000000000000 00000001000000000000006A-0000000000000000000000000000000000000000.gz 00000001000000000000006B-0000000000000000000000000000000000000000 00000001000000000000006C-0000000000000000000000000000000000000000.gz 00000001000000000000006D-0000000000000000000000000000000000000000 00000001000000000000006E-0000000000000000000000000000000000000000.gz 00000001000000000000006F-0000000000000000000000000000000000000000 000000010000000000000070-0000000000000000000000000000000000000000.gz 000000010000000000000071-0000000000000000000000000000000000000000 000000010000000000000072-0000000000000000000000000000000000000000.gz 000000010000000000000073-0000000000000000000000000000000000000000 000000010000000000000074-0000000000000000000000000000000000000000.gz 000000010000000000000075-0000000000000000000000000000000000000000 000000010000000000000076-0000000000000000000000000000000000000000.gz 000000010000000000000077-0000000000000000000000000000000000000000 000000010000000000000078-0000000000000000000000000000000000000000.gz 000000010000000000000079-0000000000000000000000000000000000000000 00000001000000000000007A-0000000000000000000000000000000000000000.gz 00000001000000000000007B-0000000000000000000000000000000000000000 00000001000000000000007C-0000000000000000000000000000000000000000.gz 00000001000000000000007D-0000000000000000000000000000000000000000 00000001000000000000007E-0000000000000000000000000000000000000000.gz 00000001000000000000007F-0000000000000000000000000000000000000000 000000010000000000000080-0000000000000000000000000000000000000000.gz 000000010000000000000081-0000000000000000000000000000000000000000 000000010000000000000082-0000000000000000000000000000000000000000.gz 000000010000000000000083-0000000000000000000000000000000000000000 000000010000000000000084-0000000000000000000000000000000000000000.gz 000000010000000000000085-0000000000000000000000000000000000000000 000000010000000000000086-0000000000000000000000000000000000000000.gz 000000010000000000000087-0000000000000000000000000000000000000000 000000010000000000000088-0000000000000000000000000000000000000000.gz 000000010000000000000089-0000000000000000000000000000000000000000 00000001000000000000008A-0000000000000000000000000000000000000000.gz 00000001000000000000008B-0000000000000000000000000000000000000000 00000001000000000000008C-0000000000000000000000000000000000000000.gz 00000001000000000000008D-0000000000000000000000000000000000000000 00000001000000000000008E-0000000000000000000000000000000000000000.gz 00000001000000000000008F-0000000000000000000000000000000000000000 000000010000000000000090-0000000000000000000000000000000000000000.gz 000000010000000000000091-0000000000000000000000000000000000000000 000000010000000000000092-0000000000000000000000000000000000000000.gz 000000010000000000000093-0000000000000000000000000000000000000000 000000010000000000000094-0000000000000000000000000000000000000000.gz 000000010000000000000095-0000000000000000000000000000000000000000 000000010000000000000096-0000000000000000000000000000000000000000.gz 000000010000000000000097-0000000000000000000000000000000000000000 000000010000000000000098-0000000000000000000000000000000000000000.gz 000000010000000000000099-0000000000000000000000000000000000000000 00000001000000000000009A-0000000000000000000000000000000000000000.gz 00000001000000000000009B-0000000000000000000000000000000000000000 00000001000000000000009C-0000000000000000000000000000000000000000.gz 00000001000000000000009D-0000000000000000000000000000000000000000 00000001000000000000009E-0000000000000000000000000000000000000000.gz 00000001000000000000009F-0000000000000000000000000000000000000000 0000000100000000000000A0-0000000000000000000000000000000000000000.gz 0000000100000000000000A1-0000000000000000000000000000000000000000 0000000100000000000000A2-0000000000000000000000000000000000000000.gz 0000000100000000000000A3-0000000000000000000000000000000000000000 0000000100000000000000A4-0000000000000000000000000000000000000000.gz 0000000100000000000000A5-0000000000000000000000000000000000000000 0000000100000000000000A6-0000000000000000000000000000000000000000.gz 0000000100000000000000A7-0000000000000000000000000000000000000000 0000000100000000000000A8-0000000000000000000000000000000000000000.gz 0000000100000000000000A9-0000000000000000000000000000000000000000 0000000100000000000000AA-0000000000000000000000000000000000000000.gz 0000000100000000000000AB-0000000000000000000000000000000000000000 0000000100000000000000AC-0000000000000000000000000000000000000000.gz 0000000100000000000000AD-0000000000000000000000000000000000000000 0000000100000000000000AE-0000000000000000000000000000000000000000.gz 0000000100000000000000AF-0000000000000000000000000000000000000000 0000000100000000000000B0-0000000000000000000000000000000000000000.gz 0000000100000000000000B1-0000000000000000000000000000000000000000 0000000100000000000000B2-0000000000000000000000000000000000000000.gz 0000000100000000000000B3-0000000000000000000000000000000000000000 0000000100000000000000B4-0000000000000000000000000000000000000000.gz 0000000100000000000000B5-0000000000000000000000000000000000000000 0000000100000000000000B6-0000000000000000000000000000000000000000.gz 0000000100000000000000B7-0000000000000000000000000000000000000000 0000000100000000000000B8-0000000000000000000000000000000000000000.gz 0000000100000000000000B9-0000000000000000000000000000000000000000 0000000100000000000000BA-0000000000000000000000000000000000000000.gz 0000000100000000000000BB-0000000000000000000000000000000000000000 0000000100000000000000BC-0000000000000000000000000000000000000000.gz 0000000100000000000000BD-0000000000000000000000000000000000000000 0000000100000000000000BE-0000000000000000000000000000000000000000.gz 0000000100000000000000BF-0000000000000000000000000000000000000000 0000000100000000000000C0-0000000000000000000000000000000000000000.gz 0000000100000000000000C1-0000000000000000000000000000000000000000 0000000100000000000000C2-0000000000000000000000000000000000000000.gz 0000000100000000000000C3-0000000000000000000000000000000000000000 0000000100000000000000C4-0000000000000000000000000000000000000000.gz 0000000100000000000000C5-0000000000000000000000000000000000000000 0000000100000000000000C6-0000000000000000000000000000000000000000.gz 0000000100000000000000C7-0000000000000000000000000000000000000000 0000000100000000000000C8-0000000000000000000000000000000000000000.gz 0000000100000000000000C9-0000000000000000000000000000000000000000 0000000100000000000000CA-0000000000000000000000000000000000000000.gz 0000000100000000000000CB-0000000000000000000000000000000000000000 0000000100000000000000CC-0000000000000000000000000000000000000000.gz 0000000100000000000000CD-0000000000000000000000000000000000000000 0000000100000000000000CE-0000000000000000000000000000000000000000.gz 0000000100000000000000CF-0000000000000000000000000000000000000000 0000000100000000000000D0-0000000000000000000000000000000000000000.gz 0000000100000000000000D1-0000000000000000000000000000000000000000 0000000100000000000000D2-0000000000000000000000000000000000000000.gz 0000000100000000000000D3-0000000000000000000000000000000000000000 0000000100000000000000D4-0000000000000000000000000000000000000000.gz 0000000100000000000000D5-0000000000000000000000000000000000000000 0000000100000000000000D6-0000000000000000000000000000000000000000.gz 0000000100000000000000D7-0000000000000000000000000000000000000000 0000000100000000000000D8-0000000000000000000000000000000000000000.gz 0000000100000000000000D9-0000000000000000000000000000000000000000 0000000100000000000000DA-0000000000000000000000000000000000000000.gz 0000000100000000000000DB-0000000000000000000000000000000000000000 0000000100000000000000DC-0000000000000000000000000000000000000000.gz 0000000100000000000000DD-0000000000000000000000000000000000000000 0000000100000000000000DE-0000000000000000000000000000000000000000.gz 0000000100000000000000DF-0000000000000000000000000000000000000000 0000000100000000000000E0-0000000000000000000000000000000000000000.gz 0000000100000000000000E1-0000000000000000000000000000000000000000 0000000100000000000000E2-0000000000000000000000000000000000000000.gz 0000000100000000000000E3-0000000000000000000000000000000000000000 0000000100000000000000E4-0000000000000000000000000000000000000000.gz 0000000100000000000000E5-0000000000000000000000000000000000000000 0000000100000000000000E6-0000000000000000000000000000000000000000.gz 0000000100000000000000E7-0000000000000000000000000000000000000000 0000000100000000000000E8-0000000000000000000000000000000000000000.gz 0000000100000000000000E9-0000000000000000000000000000000000000000 0000000100000000000000EA-0000000000000000000000000000000000000000.gz 0000000100000000000000EB-0000000000000000000000000000000000000000 0000000100000000000000EC-0000000000000000000000000000000000000000.gz 0000000100000000000000ED-0000000000000000000000000000000000000000 0000000100000000000000EE-0000000000000000000000000000000000000000.gz 0000000100000000000000EF-0000000000000000000000000000000000000000 0000000100000000000000F0-0000000000000000000000000000000000000000.gz 0000000100000000000000F1-0000000000000000000000000000000000000000 0000000100000000000000F2-0000000000000000000000000000000000000000.gz 0000000100000000000000F3-0000000000000000000000000000000000000000 0000000100000000000000F4-0000000000000000000000000000000000000000.gz 0000000100000000000000F5-0000000000000000000000000000000000000000 0000000100000000000000F6-0000000000000000000000000000000000000000.gz 0000000100000000000000F7-0000000000000000000000000000000000000000 0000000100000000000000F8-0000000000000000000000000000000000000000.gz 0000000100000000000000F9-0000000000000000000000000000000000000000 0000000100000000000000FA-0000000000000000000000000000000000000000.gz 0000000100000000000000FB-0000000000000000000000000000000000000000 0000000100000000000000FC-0000000000000000000000000000000000000000.gz 0000000100000000000000FD-0000000000000000000000000000000000000000 0000000100000000000000FE-0000000000000000000000000000000000000000.gz [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000001: 000000010000000100000000-0000000000000000000000000000000000000000.gz 000000010000000100000001-0000000000000000000000000000000000000000 000000010000000100000002-0000000000000000000000000000000000000000.gz 000000010000000100000003-0000000000000000000000000000000000000000.gz 000000010000000100000004-0000000000000000000000000000000000000000 000000010000000100000005-0000000000000000000000000000000000000000.gz Expire oldest full backup, archive expire falls on segment major boundary > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config="[TEST_PATH]/db-master/pgbackrest.conf" --stanza=db --log-level-console=detail --repo1-retention-full=1 --repo1-retention-diff=1 --repo1-retention-archive-type=full --repo1-retention-archive=1 expire ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-archive=1 --repo1-retention-archive-type=full --repo1-retention-diff=1 --repo1-retention-full=1 --stanza=db P00 INFO: expire full backup set: [BACKUP-FULL-1], [BACKUP-INCR-1] P00 INFO: remove expired backup [BACKUP-INCR-1] P00 INFO: remove expired backup [BACKUP-FULL-1] P00 DETAIL: archive retention on backup [BACKUP-FULL-2], archiveId = 9.2-1, start = 000000010000000100000000 P00 DETAIL: remove archive: archiveId = 9.2-1, start = 0000000100000000, stop = 0000000100000000 P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000100000000","backup-archive-stop":"000000010000000100000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-2] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000001: 000000010000000100000000-0000000000000000000000000000000000000000.gz 000000010000000100000001-0000000000000000000000000000000000000000 000000010000000100000002-0000000000000000000000000000000000000000.gz 000000010000000100000003-0000000000000000000000000000000000000000.gz 000000010000000100000004-0000000000000000000000000000000000000000 000000010000000100000005-0000000000000000000000000000000000000000.gz * diff backup: label = [BACKUP-DIFF-1], prior = [BACKUP-FULL-2], start = 000000010000000100000006, stop = 000000010000000100000008 * diff backup: label = [BACKUP-DIFF-2], prior = [BACKUP-DIFF-1], start = 00000001000000010000000C, stop = 00000001000000020000000C ==================================================================================================================================== + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000100000000","backup-archive-stop":"000000010000000100000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000100000006","backup-archive-stop":"000000010000000100000008","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000010000000C","backup-archive-stop":"00000001000000020000000C","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-1]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-2] [BACKUP-DIFF-1] [BACKUP-DIFF-2] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000001: 000000010000000100000000-0000000000000000000000000000000000000000.gz 000000010000000100000001-0000000000000000000000000000000000000000 000000010000000100000002-0000000000000000000000000000000000000000.gz 000000010000000100000003-0000000000000000000000000000000000000000.gz 000000010000000100000004-0000000000000000000000000000000000000000 000000010000000100000005-0000000000000000000000000000000000000000.gz 000000010000000100000006-0000000000000000000000000000000000000000.gz 000000010000000100000007-0000000000000000000000000000000000000000 000000010000000100000008-0000000000000000000000000000000000000000.gz 000000010000000100000009-0000000000000000000000000000000000000000.gz 00000001000000010000000A-0000000000000000000000000000000000000000 00000001000000010000000B-0000000000000000000000000000000000000000.gz 00000001000000010000000C-0000000000000000000000000000000000000000.gz 00000001000000010000000D-0000000000000000000000000000000000000000 00000001000000010000000E-0000000000000000000000000000000000000000.gz 00000001000000010000000F-0000000000000000000000000000000000000000 000000010000000100000010-0000000000000000000000000000000000000000.gz 000000010000000100000011-0000000000000000000000000000000000000000 000000010000000100000012-0000000000000000000000000000000000000000.gz 000000010000000100000013-0000000000000000000000000000000000000000 000000010000000100000014-0000000000000000000000000000000000000000.gz 000000010000000100000015-0000000000000000000000000000000000000000 000000010000000100000016-0000000000000000000000000000000000000000.gz 000000010000000100000017-0000000000000000000000000000000000000000 000000010000000100000018-0000000000000000000000000000000000000000.gz 000000010000000100000019-0000000000000000000000000000000000000000 00000001000000010000001A-0000000000000000000000000000000000000000.gz 00000001000000010000001B-0000000000000000000000000000000000000000 00000001000000010000001C-0000000000000000000000000000000000000000.gz 00000001000000010000001D-0000000000000000000000000000000000000000 00000001000000010000001E-0000000000000000000000000000000000000000.gz 00000001000000010000001F-0000000000000000000000000000000000000000 000000010000000100000020-0000000000000000000000000000000000000000.gz 000000010000000100000021-0000000000000000000000000000000000000000 000000010000000100000022-0000000000000000000000000000000000000000.gz 000000010000000100000023-0000000000000000000000000000000000000000 000000010000000100000024-0000000000000000000000000000000000000000.gz 000000010000000100000025-0000000000000000000000000000000000000000 000000010000000100000026-0000000000000000000000000000000000000000.gz 000000010000000100000027-0000000000000000000000000000000000000000 000000010000000100000028-0000000000000000000000000000000000000000.gz 000000010000000100000029-0000000000000000000000000000000000000000 00000001000000010000002A-0000000000000000000000000000000000000000.gz 00000001000000010000002B-0000000000000000000000000000000000000000 00000001000000010000002C-0000000000000000000000000000000000000000.gz 00000001000000010000002D-0000000000000000000000000000000000000000 00000001000000010000002E-0000000000000000000000000000000000000000.gz 00000001000000010000002F-0000000000000000000000000000000000000000 000000010000000100000030-0000000000000000000000000000000000000000.gz 000000010000000100000031-0000000000000000000000000000000000000000 000000010000000100000032-0000000000000000000000000000000000000000.gz 000000010000000100000033-0000000000000000000000000000000000000000 000000010000000100000034-0000000000000000000000000000000000000000.gz 000000010000000100000035-0000000000000000000000000000000000000000 000000010000000100000036-0000000000000000000000000000000000000000.gz 000000010000000100000037-0000000000000000000000000000000000000000 000000010000000100000038-0000000000000000000000000000000000000000.gz 000000010000000100000039-0000000000000000000000000000000000000000 00000001000000010000003A-0000000000000000000000000000000000000000.gz 00000001000000010000003B-0000000000000000000000000000000000000000 00000001000000010000003C-0000000000000000000000000000000000000000.gz 00000001000000010000003D-0000000000000000000000000000000000000000 00000001000000010000003E-0000000000000000000000000000000000000000.gz 00000001000000010000003F-0000000000000000000000000000000000000000 000000010000000100000040-0000000000000000000000000000000000000000.gz 000000010000000100000041-0000000000000000000000000000000000000000 000000010000000100000042-0000000000000000000000000000000000000000.gz 000000010000000100000043-0000000000000000000000000000000000000000 000000010000000100000044-0000000000000000000000000000000000000000.gz 000000010000000100000045-0000000000000000000000000000000000000000 000000010000000100000046-0000000000000000000000000000000000000000.gz 000000010000000100000047-0000000000000000000000000000000000000000 000000010000000100000048-0000000000000000000000000000000000000000.gz 000000010000000100000049-0000000000000000000000000000000000000000 00000001000000010000004A-0000000000000000000000000000000000000000.gz 00000001000000010000004B-0000000000000000000000000000000000000000 00000001000000010000004C-0000000000000000000000000000000000000000.gz 00000001000000010000004D-0000000000000000000000000000000000000000 00000001000000010000004E-0000000000000000000000000000000000000000.gz 00000001000000010000004F-0000000000000000000000000000000000000000 000000010000000100000050-0000000000000000000000000000000000000000.gz 000000010000000100000051-0000000000000000000000000000000000000000 000000010000000100000052-0000000000000000000000000000000000000000.gz 000000010000000100000053-0000000000000000000000000000000000000000 000000010000000100000054-0000000000000000000000000000000000000000.gz 000000010000000100000055-0000000000000000000000000000000000000000 000000010000000100000056-0000000000000000000000000000000000000000.gz 000000010000000100000057-0000000000000000000000000000000000000000 000000010000000100000058-0000000000000000000000000000000000000000.gz 000000010000000100000059-0000000000000000000000000000000000000000 00000001000000010000005A-0000000000000000000000000000000000000000.gz 00000001000000010000005B-0000000000000000000000000000000000000000 00000001000000010000005C-0000000000000000000000000000000000000000.gz 00000001000000010000005D-0000000000000000000000000000000000000000 00000001000000010000005E-0000000000000000000000000000000000000000.gz 00000001000000010000005F-0000000000000000000000000000000000000000 000000010000000100000060-0000000000000000000000000000000000000000.gz 000000010000000100000061-0000000000000000000000000000000000000000 000000010000000100000062-0000000000000000000000000000000000000000.gz 000000010000000100000063-0000000000000000000000000000000000000000 000000010000000100000064-0000000000000000000000000000000000000000.gz 000000010000000100000065-0000000000000000000000000000000000000000 000000010000000100000066-0000000000000000000000000000000000000000.gz 000000010000000100000067-0000000000000000000000000000000000000000 000000010000000100000068-0000000000000000000000000000000000000000.gz 000000010000000100000069-0000000000000000000000000000000000000000 00000001000000010000006A-0000000000000000000000000000000000000000.gz 00000001000000010000006B-0000000000000000000000000000000000000000 00000001000000010000006C-0000000000000000000000000000000000000000.gz 00000001000000010000006D-0000000000000000000000000000000000000000 00000001000000010000006E-0000000000000000000000000000000000000000.gz 00000001000000010000006F-0000000000000000000000000000000000000000 000000010000000100000070-0000000000000000000000000000000000000000.gz 000000010000000100000071-0000000000000000000000000000000000000000 000000010000000100000072-0000000000000000000000000000000000000000.gz 000000010000000100000073-0000000000000000000000000000000000000000 000000010000000100000074-0000000000000000000000000000000000000000.gz 000000010000000100000075-0000000000000000000000000000000000000000 000000010000000100000076-0000000000000000000000000000000000000000.gz 000000010000000100000077-0000000000000000000000000000000000000000 000000010000000100000078-0000000000000000000000000000000000000000.gz 000000010000000100000079-0000000000000000000000000000000000000000 00000001000000010000007A-0000000000000000000000000000000000000000.gz 00000001000000010000007B-0000000000000000000000000000000000000000 00000001000000010000007C-0000000000000000000000000000000000000000.gz 00000001000000010000007D-0000000000000000000000000000000000000000 00000001000000010000007E-0000000000000000000000000000000000000000.gz 00000001000000010000007F-0000000000000000000000000000000000000000 000000010000000100000080-0000000000000000000000000000000000000000.gz 000000010000000100000081-0000000000000000000000000000000000000000 000000010000000100000082-0000000000000000000000000000000000000000.gz 000000010000000100000083-0000000000000000000000000000000000000000 000000010000000100000084-0000000000000000000000000000000000000000.gz 000000010000000100000085-0000000000000000000000000000000000000000 000000010000000100000086-0000000000000000000000000000000000000000.gz 000000010000000100000087-0000000000000000000000000000000000000000 000000010000000100000088-0000000000000000000000000000000000000000.gz 000000010000000100000089-0000000000000000000000000000000000000000 00000001000000010000008A-0000000000000000000000000000000000000000.gz 00000001000000010000008B-0000000000000000000000000000000000000000 00000001000000010000008C-0000000000000000000000000000000000000000.gz 00000001000000010000008D-0000000000000000000000000000000000000000 00000001000000010000008E-0000000000000000000000000000000000000000.gz 00000001000000010000008F-0000000000000000000000000000000000000000 000000010000000100000090-0000000000000000000000000000000000000000.gz 000000010000000100000091-0000000000000000000000000000000000000000 000000010000000100000092-0000000000000000000000000000000000000000.gz 000000010000000100000093-0000000000000000000000000000000000000000 000000010000000100000094-0000000000000000000000000000000000000000.gz 000000010000000100000095-0000000000000000000000000000000000000000 000000010000000100000096-0000000000000000000000000000000000000000.gz 000000010000000100000097-0000000000000000000000000000000000000000 000000010000000100000098-0000000000000000000000000000000000000000.gz 000000010000000100000099-0000000000000000000000000000000000000000 00000001000000010000009A-0000000000000000000000000000000000000000.gz 00000001000000010000009B-0000000000000000000000000000000000000000 00000001000000010000009C-0000000000000000000000000000000000000000.gz 00000001000000010000009D-0000000000000000000000000000000000000000 00000001000000010000009E-0000000000000000000000000000000000000000.gz 00000001000000010000009F-0000000000000000000000000000000000000000 0000000100000001000000A0-0000000000000000000000000000000000000000.gz 0000000100000001000000A1-0000000000000000000000000000000000000000 0000000100000001000000A2-0000000000000000000000000000000000000000.gz 0000000100000001000000A3-0000000000000000000000000000000000000000 0000000100000001000000A4-0000000000000000000000000000000000000000.gz 0000000100000001000000A5-0000000000000000000000000000000000000000 0000000100000001000000A6-0000000000000000000000000000000000000000.gz 0000000100000001000000A7-0000000000000000000000000000000000000000 0000000100000001000000A8-0000000000000000000000000000000000000000.gz 0000000100000001000000A9-0000000000000000000000000000000000000000 0000000100000001000000AA-0000000000000000000000000000000000000000.gz 0000000100000001000000AB-0000000000000000000000000000000000000000 0000000100000001000000AC-0000000000000000000000000000000000000000.gz 0000000100000001000000AD-0000000000000000000000000000000000000000 0000000100000001000000AE-0000000000000000000000000000000000000000.gz 0000000100000001000000AF-0000000000000000000000000000000000000000 0000000100000001000000B0-0000000000000000000000000000000000000000.gz 0000000100000001000000B1-0000000000000000000000000000000000000000 0000000100000001000000B2-0000000000000000000000000000000000000000.gz 0000000100000001000000B3-0000000000000000000000000000000000000000 0000000100000001000000B4-0000000000000000000000000000000000000000.gz 0000000100000001000000B5-0000000000000000000000000000000000000000 0000000100000001000000B6-0000000000000000000000000000000000000000.gz 0000000100000001000000B7-0000000000000000000000000000000000000000 0000000100000001000000B8-0000000000000000000000000000000000000000.gz 0000000100000001000000B9-0000000000000000000000000000000000000000 0000000100000001000000BA-0000000000000000000000000000000000000000.gz 0000000100000001000000BB-0000000000000000000000000000000000000000 0000000100000001000000BC-0000000000000000000000000000000000000000.gz 0000000100000001000000BD-0000000000000000000000000000000000000000 0000000100000001000000BE-0000000000000000000000000000000000000000.gz 0000000100000001000000BF-0000000000000000000000000000000000000000 0000000100000001000000C0-0000000000000000000000000000000000000000.gz 0000000100000001000000C1-0000000000000000000000000000000000000000 0000000100000001000000C2-0000000000000000000000000000000000000000.gz 0000000100000001000000C3-0000000000000000000000000000000000000000 0000000100000001000000C4-0000000000000000000000000000000000000000.gz 0000000100000001000000C5-0000000000000000000000000000000000000000 0000000100000001000000C6-0000000000000000000000000000000000000000.gz 0000000100000001000000C7-0000000000000000000000000000000000000000 0000000100000001000000C8-0000000000000000000000000000000000000000.gz 0000000100000001000000C9-0000000000000000000000000000000000000000 0000000100000001000000CA-0000000000000000000000000000000000000000.gz 0000000100000001000000CB-0000000000000000000000000000000000000000 0000000100000001000000CC-0000000000000000000000000000000000000000.gz 0000000100000001000000CD-0000000000000000000000000000000000000000 0000000100000001000000CE-0000000000000000000000000000000000000000.gz 0000000100000001000000CF-0000000000000000000000000000000000000000 0000000100000001000000D0-0000000000000000000000000000000000000000.gz 0000000100000001000000D1-0000000000000000000000000000000000000000 0000000100000001000000D2-0000000000000000000000000000000000000000.gz 0000000100000001000000D3-0000000000000000000000000000000000000000 0000000100000001000000D4-0000000000000000000000000000000000000000.gz 0000000100000001000000D5-0000000000000000000000000000000000000000 0000000100000001000000D6-0000000000000000000000000000000000000000.gz 0000000100000001000000D7-0000000000000000000000000000000000000000 0000000100000001000000D8-0000000000000000000000000000000000000000.gz 0000000100000001000000D9-0000000000000000000000000000000000000000 0000000100000001000000DA-0000000000000000000000000000000000000000.gz 0000000100000001000000DB-0000000000000000000000000000000000000000 0000000100000001000000DC-0000000000000000000000000000000000000000.gz 0000000100000001000000DD-0000000000000000000000000000000000000000 0000000100000001000000DE-0000000000000000000000000000000000000000.gz 0000000100000001000000DF-0000000000000000000000000000000000000000 0000000100000001000000E0-0000000000000000000000000000000000000000.gz 0000000100000001000000E1-0000000000000000000000000000000000000000 0000000100000001000000E2-0000000000000000000000000000000000000000.gz 0000000100000001000000E3-0000000000000000000000000000000000000000 0000000100000001000000E4-0000000000000000000000000000000000000000.gz 0000000100000001000000E5-0000000000000000000000000000000000000000 0000000100000001000000E6-0000000000000000000000000000000000000000.gz 0000000100000001000000E7-0000000000000000000000000000000000000000 0000000100000001000000E8-0000000000000000000000000000000000000000.gz 0000000100000001000000E9-0000000000000000000000000000000000000000 0000000100000001000000EA-0000000000000000000000000000000000000000.gz 0000000100000001000000EB-0000000000000000000000000000000000000000 0000000100000001000000EC-0000000000000000000000000000000000000000.gz 0000000100000001000000ED-0000000000000000000000000000000000000000 0000000100000001000000EE-0000000000000000000000000000000000000000.gz 0000000100000001000000EF-0000000000000000000000000000000000000000 0000000100000001000000F0-0000000000000000000000000000000000000000.gz 0000000100000001000000F1-0000000000000000000000000000000000000000 0000000100000001000000F2-0000000000000000000000000000000000000000.gz 0000000100000001000000F3-0000000000000000000000000000000000000000 0000000100000001000000F4-0000000000000000000000000000000000000000.gz 0000000100000001000000F5-0000000000000000000000000000000000000000 0000000100000001000000F6-0000000000000000000000000000000000000000.gz 0000000100000001000000F7-0000000000000000000000000000000000000000 0000000100000001000000F8-0000000000000000000000000000000000000000.gz 0000000100000001000000F9-0000000000000000000000000000000000000000 0000000100000001000000FA-0000000000000000000000000000000000000000.gz 0000000100000001000000FB-0000000000000000000000000000000000000000 0000000100000001000000FC-0000000000000000000000000000000000000000.gz 0000000100000001000000FD-0000000000000000000000000000000000000000 0000000100000001000000FE-0000000000000000000000000000000000000000.gz [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 000000010000000200000000-0000000000000000000000000000000000000000 000000010000000200000001-0000000000000000000000000000000000000000.gz 000000010000000200000002-0000000000000000000000000000000000000000 000000010000000200000003-0000000000000000000000000000000000000000.gz 000000010000000200000004-0000000000000000000000000000000000000000 000000010000000200000005-0000000000000000000000000000000000000000.gz 000000010000000200000006-0000000000000000000000000000000000000000 000000010000000200000007-0000000000000000000000000000000000000000.gz 000000010000000200000008-0000000000000000000000000000000000000000 000000010000000200000009-0000000000000000000000000000000000000000.gz 00000001000000020000000A-0000000000000000000000000000000000000000 00000001000000020000000B-0000000000000000000000000000000000000000.gz 00000001000000020000000C-0000000000000000000000000000000000000000 00000001000000020000000D-0000000000000000000000000000000000000000.gz 00000001000000020000000E-0000000000000000000000000000000000000000 00000001000000020000000F-0000000000000000000000000000000000000000.gz Expire oldest full backup > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config="[TEST_PATH]/db-master/pgbackrest.conf" --stanza=db --log-level-console=detail --repo1-retention-full=1 --repo1-retention-diff=1 --repo1-retention-archive-type=full --repo1-retention-archive=1 expire ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-archive=1 --repo1-retention-archive-type=full --repo1-retention-diff=1 --repo1-retention-full=1 --stanza=db P00 INFO: expire diff backup [BACKUP-DIFF-1] P00 INFO: remove expired backup [BACKUP-DIFF-1] P00 DETAIL: archive retention on backup [BACKUP-FULL-2], archiveId = 9.2-1, start = 000000010000000100000000 P00 DETAIL: no archive to remove, archiveId = 9.2-1 P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000100000000","backup-archive-stop":"000000010000000100000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000010000000C","backup-archive-stop":"00000001000000020000000C","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-1]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-2] [BACKUP-DIFF-2] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000001: 000000010000000100000000-0000000000000000000000000000000000000000.gz 000000010000000100000001-0000000000000000000000000000000000000000 000000010000000100000002-0000000000000000000000000000000000000000.gz 000000010000000100000003-0000000000000000000000000000000000000000.gz 000000010000000100000004-0000000000000000000000000000000000000000 000000010000000100000005-0000000000000000000000000000000000000000.gz 000000010000000100000006-0000000000000000000000000000000000000000.gz 000000010000000100000007-0000000000000000000000000000000000000000 000000010000000100000008-0000000000000000000000000000000000000000.gz 000000010000000100000009-0000000000000000000000000000000000000000.gz 00000001000000010000000A-0000000000000000000000000000000000000000 00000001000000010000000B-0000000000000000000000000000000000000000.gz 00000001000000010000000C-0000000000000000000000000000000000000000.gz 00000001000000010000000D-0000000000000000000000000000000000000000 00000001000000010000000E-0000000000000000000000000000000000000000.gz 00000001000000010000000F-0000000000000000000000000000000000000000 000000010000000100000010-0000000000000000000000000000000000000000.gz 000000010000000100000011-0000000000000000000000000000000000000000 000000010000000100000012-0000000000000000000000000000000000000000.gz 000000010000000100000013-0000000000000000000000000000000000000000 000000010000000100000014-0000000000000000000000000000000000000000.gz 000000010000000100000015-0000000000000000000000000000000000000000 000000010000000100000016-0000000000000000000000000000000000000000.gz 000000010000000100000017-0000000000000000000000000000000000000000 000000010000000100000018-0000000000000000000000000000000000000000.gz 000000010000000100000019-0000000000000000000000000000000000000000 00000001000000010000001A-0000000000000000000000000000000000000000.gz 00000001000000010000001B-0000000000000000000000000000000000000000 00000001000000010000001C-0000000000000000000000000000000000000000.gz 00000001000000010000001D-0000000000000000000000000000000000000000 00000001000000010000001E-0000000000000000000000000000000000000000.gz 00000001000000010000001F-0000000000000000000000000000000000000000 000000010000000100000020-0000000000000000000000000000000000000000.gz 000000010000000100000021-0000000000000000000000000000000000000000 000000010000000100000022-0000000000000000000000000000000000000000.gz 000000010000000100000023-0000000000000000000000000000000000000000 000000010000000100000024-0000000000000000000000000000000000000000.gz 000000010000000100000025-0000000000000000000000000000000000000000 000000010000000100000026-0000000000000000000000000000000000000000.gz 000000010000000100000027-0000000000000000000000000000000000000000 000000010000000100000028-0000000000000000000000000000000000000000.gz 000000010000000100000029-0000000000000000000000000000000000000000 00000001000000010000002A-0000000000000000000000000000000000000000.gz 00000001000000010000002B-0000000000000000000000000000000000000000 00000001000000010000002C-0000000000000000000000000000000000000000.gz 00000001000000010000002D-0000000000000000000000000000000000000000 00000001000000010000002E-0000000000000000000000000000000000000000.gz 00000001000000010000002F-0000000000000000000000000000000000000000 000000010000000100000030-0000000000000000000000000000000000000000.gz 000000010000000100000031-0000000000000000000000000000000000000000 000000010000000100000032-0000000000000000000000000000000000000000.gz 000000010000000100000033-0000000000000000000000000000000000000000 000000010000000100000034-0000000000000000000000000000000000000000.gz 000000010000000100000035-0000000000000000000000000000000000000000 000000010000000100000036-0000000000000000000000000000000000000000.gz 000000010000000100000037-0000000000000000000000000000000000000000 000000010000000100000038-0000000000000000000000000000000000000000.gz 000000010000000100000039-0000000000000000000000000000000000000000 00000001000000010000003A-0000000000000000000000000000000000000000.gz 00000001000000010000003B-0000000000000000000000000000000000000000 00000001000000010000003C-0000000000000000000000000000000000000000.gz 00000001000000010000003D-0000000000000000000000000000000000000000 00000001000000010000003E-0000000000000000000000000000000000000000.gz 00000001000000010000003F-0000000000000000000000000000000000000000 000000010000000100000040-0000000000000000000000000000000000000000.gz 000000010000000100000041-0000000000000000000000000000000000000000 000000010000000100000042-0000000000000000000000000000000000000000.gz 000000010000000100000043-0000000000000000000000000000000000000000 000000010000000100000044-0000000000000000000000000000000000000000.gz 000000010000000100000045-0000000000000000000000000000000000000000 000000010000000100000046-0000000000000000000000000000000000000000.gz 000000010000000100000047-0000000000000000000000000000000000000000 000000010000000100000048-0000000000000000000000000000000000000000.gz 000000010000000100000049-0000000000000000000000000000000000000000 00000001000000010000004A-0000000000000000000000000000000000000000.gz 00000001000000010000004B-0000000000000000000000000000000000000000 00000001000000010000004C-0000000000000000000000000000000000000000.gz 00000001000000010000004D-0000000000000000000000000000000000000000 00000001000000010000004E-0000000000000000000000000000000000000000.gz 00000001000000010000004F-0000000000000000000000000000000000000000 000000010000000100000050-0000000000000000000000000000000000000000.gz 000000010000000100000051-0000000000000000000000000000000000000000 000000010000000100000052-0000000000000000000000000000000000000000.gz 000000010000000100000053-0000000000000000000000000000000000000000 000000010000000100000054-0000000000000000000000000000000000000000.gz 000000010000000100000055-0000000000000000000000000000000000000000 000000010000000100000056-0000000000000000000000000000000000000000.gz 000000010000000100000057-0000000000000000000000000000000000000000 000000010000000100000058-0000000000000000000000000000000000000000.gz 000000010000000100000059-0000000000000000000000000000000000000000 00000001000000010000005A-0000000000000000000000000000000000000000.gz 00000001000000010000005B-0000000000000000000000000000000000000000 00000001000000010000005C-0000000000000000000000000000000000000000.gz 00000001000000010000005D-0000000000000000000000000000000000000000 00000001000000010000005E-0000000000000000000000000000000000000000.gz 00000001000000010000005F-0000000000000000000000000000000000000000 000000010000000100000060-0000000000000000000000000000000000000000.gz 000000010000000100000061-0000000000000000000000000000000000000000 000000010000000100000062-0000000000000000000000000000000000000000.gz 000000010000000100000063-0000000000000000000000000000000000000000 000000010000000100000064-0000000000000000000000000000000000000000.gz 000000010000000100000065-0000000000000000000000000000000000000000 000000010000000100000066-0000000000000000000000000000000000000000.gz 000000010000000100000067-0000000000000000000000000000000000000000 000000010000000100000068-0000000000000000000000000000000000000000.gz 000000010000000100000069-0000000000000000000000000000000000000000 00000001000000010000006A-0000000000000000000000000000000000000000.gz 00000001000000010000006B-0000000000000000000000000000000000000000 00000001000000010000006C-0000000000000000000000000000000000000000.gz 00000001000000010000006D-0000000000000000000000000000000000000000 00000001000000010000006E-0000000000000000000000000000000000000000.gz 00000001000000010000006F-0000000000000000000000000000000000000000 000000010000000100000070-0000000000000000000000000000000000000000.gz 000000010000000100000071-0000000000000000000000000000000000000000 000000010000000100000072-0000000000000000000000000000000000000000.gz 000000010000000100000073-0000000000000000000000000000000000000000 000000010000000100000074-0000000000000000000000000000000000000000.gz 000000010000000100000075-0000000000000000000000000000000000000000 000000010000000100000076-0000000000000000000000000000000000000000.gz 000000010000000100000077-0000000000000000000000000000000000000000 000000010000000100000078-0000000000000000000000000000000000000000.gz 000000010000000100000079-0000000000000000000000000000000000000000 00000001000000010000007A-0000000000000000000000000000000000000000.gz 00000001000000010000007B-0000000000000000000000000000000000000000 00000001000000010000007C-0000000000000000000000000000000000000000.gz 00000001000000010000007D-0000000000000000000000000000000000000000 00000001000000010000007E-0000000000000000000000000000000000000000.gz 00000001000000010000007F-0000000000000000000000000000000000000000 000000010000000100000080-0000000000000000000000000000000000000000.gz 000000010000000100000081-0000000000000000000000000000000000000000 000000010000000100000082-0000000000000000000000000000000000000000.gz 000000010000000100000083-0000000000000000000000000000000000000000 000000010000000100000084-0000000000000000000000000000000000000000.gz 000000010000000100000085-0000000000000000000000000000000000000000 000000010000000100000086-0000000000000000000000000000000000000000.gz 000000010000000100000087-0000000000000000000000000000000000000000 000000010000000100000088-0000000000000000000000000000000000000000.gz 000000010000000100000089-0000000000000000000000000000000000000000 00000001000000010000008A-0000000000000000000000000000000000000000.gz 00000001000000010000008B-0000000000000000000000000000000000000000 00000001000000010000008C-0000000000000000000000000000000000000000.gz 00000001000000010000008D-0000000000000000000000000000000000000000 00000001000000010000008E-0000000000000000000000000000000000000000.gz 00000001000000010000008F-0000000000000000000000000000000000000000 000000010000000100000090-0000000000000000000000000000000000000000.gz 000000010000000100000091-0000000000000000000000000000000000000000 000000010000000100000092-0000000000000000000000000000000000000000.gz 000000010000000100000093-0000000000000000000000000000000000000000 000000010000000100000094-0000000000000000000000000000000000000000.gz 000000010000000100000095-0000000000000000000000000000000000000000 000000010000000100000096-0000000000000000000000000000000000000000.gz 000000010000000100000097-0000000000000000000000000000000000000000 000000010000000100000098-0000000000000000000000000000000000000000.gz 000000010000000100000099-0000000000000000000000000000000000000000 00000001000000010000009A-0000000000000000000000000000000000000000.gz 00000001000000010000009B-0000000000000000000000000000000000000000 00000001000000010000009C-0000000000000000000000000000000000000000.gz 00000001000000010000009D-0000000000000000000000000000000000000000 00000001000000010000009E-0000000000000000000000000000000000000000.gz 00000001000000010000009F-0000000000000000000000000000000000000000 0000000100000001000000A0-0000000000000000000000000000000000000000.gz 0000000100000001000000A1-0000000000000000000000000000000000000000 0000000100000001000000A2-0000000000000000000000000000000000000000.gz 0000000100000001000000A3-0000000000000000000000000000000000000000 0000000100000001000000A4-0000000000000000000000000000000000000000.gz 0000000100000001000000A5-0000000000000000000000000000000000000000 0000000100000001000000A6-0000000000000000000000000000000000000000.gz 0000000100000001000000A7-0000000000000000000000000000000000000000 0000000100000001000000A8-0000000000000000000000000000000000000000.gz 0000000100000001000000A9-0000000000000000000000000000000000000000 0000000100000001000000AA-0000000000000000000000000000000000000000.gz 0000000100000001000000AB-0000000000000000000000000000000000000000 0000000100000001000000AC-0000000000000000000000000000000000000000.gz 0000000100000001000000AD-0000000000000000000000000000000000000000 0000000100000001000000AE-0000000000000000000000000000000000000000.gz 0000000100000001000000AF-0000000000000000000000000000000000000000 0000000100000001000000B0-0000000000000000000000000000000000000000.gz 0000000100000001000000B1-0000000000000000000000000000000000000000 0000000100000001000000B2-0000000000000000000000000000000000000000.gz 0000000100000001000000B3-0000000000000000000000000000000000000000 0000000100000001000000B4-0000000000000000000000000000000000000000.gz 0000000100000001000000B5-0000000000000000000000000000000000000000 0000000100000001000000B6-0000000000000000000000000000000000000000.gz 0000000100000001000000B7-0000000000000000000000000000000000000000 0000000100000001000000B8-0000000000000000000000000000000000000000.gz 0000000100000001000000B9-0000000000000000000000000000000000000000 0000000100000001000000BA-0000000000000000000000000000000000000000.gz 0000000100000001000000BB-0000000000000000000000000000000000000000 0000000100000001000000BC-0000000000000000000000000000000000000000.gz 0000000100000001000000BD-0000000000000000000000000000000000000000 0000000100000001000000BE-0000000000000000000000000000000000000000.gz 0000000100000001000000BF-0000000000000000000000000000000000000000 0000000100000001000000C0-0000000000000000000000000000000000000000.gz 0000000100000001000000C1-0000000000000000000000000000000000000000 0000000100000001000000C2-0000000000000000000000000000000000000000.gz 0000000100000001000000C3-0000000000000000000000000000000000000000 0000000100000001000000C4-0000000000000000000000000000000000000000.gz 0000000100000001000000C5-0000000000000000000000000000000000000000 0000000100000001000000C6-0000000000000000000000000000000000000000.gz 0000000100000001000000C7-0000000000000000000000000000000000000000 0000000100000001000000C8-0000000000000000000000000000000000000000.gz 0000000100000001000000C9-0000000000000000000000000000000000000000 0000000100000001000000CA-0000000000000000000000000000000000000000.gz 0000000100000001000000CB-0000000000000000000000000000000000000000 0000000100000001000000CC-0000000000000000000000000000000000000000.gz 0000000100000001000000CD-0000000000000000000000000000000000000000 0000000100000001000000CE-0000000000000000000000000000000000000000.gz 0000000100000001000000CF-0000000000000000000000000000000000000000 0000000100000001000000D0-0000000000000000000000000000000000000000.gz 0000000100000001000000D1-0000000000000000000000000000000000000000 0000000100000001000000D2-0000000000000000000000000000000000000000.gz 0000000100000001000000D3-0000000000000000000000000000000000000000 0000000100000001000000D4-0000000000000000000000000000000000000000.gz 0000000100000001000000D5-0000000000000000000000000000000000000000 0000000100000001000000D6-0000000000000000000000000000000000000000.gz 0000000100000001000000D7-0000000000000000000000000000000000000000 0000000100000001000000D8-0000000000000000000000000000000000000000.gz 0000000100000001000000D9-0000000000000000000000000000000000000000 0000000100000001000000DA-0000000000000000000000000000000000000000.gz 0000000100000001000000DB-0000000000000000000000000000000000000000 0000000100000001000000DC-0000000000000000000000000000000000000000.gz 0000000100000001000000DD-0000000000000000000000000000000000000000 0000000100000001000000DE-0000000000000000000000000000000000000000.gz 0000000100000001000000DF-0000000000000000000000000000000000000000 0000000100000001000000E0-0000000000000000000000000000000000000000.gz 0000000100000001000000E1-0000000000000000000000000000000000000000 0000000100000001000000E2-0000000000000000000000000000000000000000.gz 0000000100000001000000E3-0000000000000000000000000000000000000000 0000000100000001000000E4-0000000000000000000000000000000000000000.gz 0000000100000001000000E5-0000000000000000000000000000000000000000 0000000100000001000000E6-0000000000000000000000000000000000000000.gz 0000000100000001000000E7-0000000000000000000000000000000000000000 0000000100000001000000E8-0000000000000000000000000000000000000000.gz 0000000100000001000000E9-0000000000000000000000000000000000000000 0000000100000001000000EA-0000000000000000000000000000000000000000.gz 0000000100000001000000EB-0000000000000000000000000000000000000000 0000000100000001000000EC-0000000000000000000000000000000000000000.gz 0000000100000001000000ED-0000000000000000000000000000000000000000 0000000100000001000000EE-0000000000000000000000000000000000000000.gz 0000000100000001000000EF-0000000000000000000000000000000000000000 0000000100000001000000F0-0000000000000000000000000000000000000000.gz 0000000100000001000000F1-0000000000000000000000000000000000000000 0000000100000001000000F2-0000000000000000000000000000000000000000.gz 0000000100000001000000F3-0000000000000000000000000000000000000000 0000000100000001000000F4-0000000000000000000000000000000000000000.gz 0000000100000001000000F5-0000000000000000000000000000000000000000 0000000100000001000000F6-0000000000000000000000000000000000000000.gz 0000000100000001000000F7-0000000000000000000000000000000000000000 0000000100000001000000F8-0000000000000000000000000000000000000000.gz 0000000100000001000000F9-0000000000000000000000000000000000000000 0000000100000001000000FA-0000000000000000000000000000000000000000.gz 0000000100000001000000FB-0000000000000000000000000000000000000000 0000000100000001000000FC-0000000000000000000000000000000000000000.gz 0000000100000001000000FD-0000000000000000000000000000000000000000 0000000100000001000000FE-0000000000000000000000000000000000000000.gz [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 000000010000000200000000-0000000000000000000000000000000000000000 000000010000000200000001-0000000000000000000000000000000000000000.gz 000000010000000200000002-0000000000000000000000000000000000000000 000000010000000200000003-0000000000000000000000000000000000000000.gz 000000010000000200000004-0000000000000000000000000000000000000000 000000010000000200000005-0000000000000000000000000000000000000000.gz 000000010000000200000006-0000000000000000000000000000000000000000 000000010000000200000007-0000000000000000000000000000000000000000.gz 000000010000000200000008-0000000000000000000000000000000000000000 000000010000000200000009-0000000000000000000000000000000000000000.gz 00000001000000020000000A-0000000000000000000000000000000000000000 00000001000000020000000B-0000000000000000000000000000000000000000.gz 00000001000000020000000C-0000000000000000000000000000000000000000 00000001000000020000000D-0000000000000000000000000000000000000000.gz 00000001000000020000000E-0000000000000000000000000000000000000000 00000001000000020000000F-0000000000000000000000000000000000000000.gz * full backup: label = [BACKUP-FULL-3], start = 000000010000000200000010, stop = 000000010000000200000012 * diff backup: label = [BACKUP-DIFF-3], prior = [BACKUP-FULL-3], start = 000000010000000200000016, stop = 000000010000000200000018 * incr backup: label = [BACKUP-INCR-2], prior = [BACKUP-DIFF-3], start = 00000001000000020000001A, stop = 00000001000000020000001C ==================================================================================================================================== + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000100000000","backup-archive-stop":"000000010000000100000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000010000000C","backup-archive-stop":"00000001000000020000000C","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-1]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000010","backup-archive-stop":"000000010000000200000012","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000016","backup-archive-stop":"000000010000000200000018","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000001A","backup-archive-stop":"00000001000000020000001C","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-3]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-2] [BACKUP-DIFF-2] [BACKUP-FULL-3] [BACKUP-DIFF-3] [BACKUP-INCR-2] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000001: 000000010000000100000000-0000000000000000000000000000000000000000.gz 000000010000000100000001-0000000000000000000000000000000000000000 000000010000000100000002-0000000000000000000000000000000000000000.gz 000000010000000100000003-0000000000000000000000000000000000000000.gz 000000010000000100000004-0000000000000000000000000000000000000000 000000010000000100000005-0000000000000000000000000000000000000000.gz 000000010000000100000006-0000000000000000000000000000000000000000.gz 000000010000000100000007-0000000000000000000000000000000000000000 000000010000000100000008-0000000000000000000000000000000000000000.gz 000000010000000100000009-0000000000000000000000000000000000000000.gz 00000001000000010000000A-0000000000000000000000000000000000000000 00000001000000010000000B-0000000000000000000000000000000000000000.gz 00000001000000010000000C-0000000000000000000000000000000000000000.gz 00000001000000010000000D-0000000000000000000000000000000000000000 00000001000000010000000E-0000000000000000000000000000000000000000.gz 00000001000000010000000F-0000000000000000000000000000000000000000 000000010000000100000010-0000000000000000000000000000000000000000.gz 000000010000000100000011-0000000000000000000000000000000000000000 000000010000000100000012-0000000000000000000000000000000000000000.gz 000000010000000100000013-0000000000000000000000000000000000000000 000000010000000100000014-0000000000000000000000000000000000000000.gz 000000010000000100000015-0000000000000000000000000000000000000000 000000010000000100000016-0000000000000000000000000000000000000000.gz 000000010000000100000017-0000000000000000000000000000000000000000 000000010000000100000018-0000000000000000000000000000000000000000.gz 000000010000000100000019-0000000000000000000000000000000000000000 00000001000000010000001A-0000000000000000000000000000000000000000.gz 00000001000000010000001B-0000000000000000000000000000000000000000 00000001000000010000001C-0000000000000000000000000000000000000000.gz 00000001000000010000001D-0000000000000000000000000000000000000000 00000001000000010000001E-0000000000000000000000000000000000000000.gz 00000001000000010000001F-0000000000000000000000000000000000000000 000000010000000100000020-0000000000000000000000000000000000000000.gz 000000010000000100000021-0000000000000000000000000000000000000000 000000010000000100000022-0000000000000000000000000000000000000000.gz 000000010000000100000023-0000000000000000000000000000000000000000 000000010000000100000024-0000000000000000000000000000000000000000.gz 000000010000000100000025-0000000000000000000000000000000000000000 000000010000000100000026-0000000000000000000000000000000000000000.gz 000000010000000100000027-0000000000000000000000000000000000000000 000000010000000100000028-0000000000000000000000000000000000000000.gz 000000010000000100000029-0000000000000000000000000000000000000000 00000001000000010000002A-0000000000000000000000000000000000000000.gz 00000001000000010000002B-0000000000000000000000000000000000000000 00000001000000010000002C-0000000000000000000000000000000000000000.gz 00000001000000010000002D-0000000000000000000000000000000000000000 00000001000000010000002E-0000000000000000000000000000000000000000.gz 00000001000000010000002F-0000000000000000000000000000000000000000 000000010000000100000030-0000000000000000000000000000000000000000.gz 000000010000000100000031-0000000000000000000000000000000000000000 000000010000000100000032-0000000000000000000000000000000000000000.gz 000000010000000100000033-0000000000000000000000000000000000000000 000000010000000100000034-0000000000000000000000000000000000000000.gz 000000010000000100000035-0000000000000000000000000000000000000000 000000010000000100000036-0000000000000000000000000000000000000000.gz 000000010000000100000037-0000000000000000000000000000000000000000 000000010000000100000038-0000000000000000000000000000000000000000.gz 000000010000000100000039-0000000000000000000000000000000000000000 00000001000000010000003A-0000000000000000000000000000000000000000.gz 00000001000000010000003B-0000000000000000000000000000000000000000 00000001000000010000003C-0000000000000000000000000000000000000000.gz 00000001000000010000003D-0000000000000000000000000000000000000000 00000001000000010000003E-0000000000000000000000000000000000000000.gz 00000001000000010000003F-0000000000000000000000000000000000000000 000000010000000100000040-0000000000000000000000000000000000000000.gz 000000010000000100000041-0000000000000000000000000000000000000000 000000010000000100000042-0000000000000000000000000000000000000000.gz 000000010000000100000043-0000000000000000000000000000000000000000 000000010000000100000044-0000000000000000000000000000000000000000.gz 000000010000000100000045-0000000000000000000000000000000000000000 000000010000000100000046-0000000000000000000000000000000000000000.gz 000000010000000100000047-0000000000000000000000000000000000000000 000000010000000100000048-0000000000000000000000000000000000000000.gz 000000010000000100000049-0000000000000000000000000000000000000000 00000001000000010000004A-0000000000000000000000000000000000000000.gz 00000001000000010000004B-0000000000000000000000000000000000000000 00000001000000010000004C-0000000000000000000000000000000000000000.gz 00000001000000010000004D-0000000000000000000000000000000000000000 00000001000000010000004E-0000000000000000000000000000000000000000.gz 00000001000000010000004F-0000000000000000000000000000000000000000 000000010000000100000050-0000000000000000000000000000000000000000.gz 000000010000000100000051-0000000000000000000000000000000000000000 000000010000000100000052-0000000000000000000000000000000000000000.gz 000000010000000100000053-0000000000000000000000000000000000000000 000000010000000100000054-0000000000000000000000000000000000000000.gz 000000010000000100000055-0000000000000000000000000000000000000000 000000010000000100000056-0000000000000000000000000000000000000000.gz 000000010000000100000057-0000000000000000000000000000000000000000 000000010000000100000058-0000000000000000000000000000000000000000.gz 000000010000000100000059-0000000000000000000000000000000000000000 00000001000000010000005A-0000000000000000000000000000000000000000.gz 00000001000000010000005B-0000000000000000000000000000000000000000 00000001000000010000005C-0000000000000000000000000000000000000000.gz 00000001000000010000005D-0000000000000000000000000000000000000000 00000001000000010000005E-0000000000000000000000000000000000000000.gz 00000001000000010000005F-0000000000000000000000000000000000000000 000000010000000100000060-0000000000000000000000000000000000000000.gz 000000010000000100000061-0000000000000000000000000000000000000000 000000010000000100000062-0000000000000000000000000000000000000000.gz 000000010000000100000063-0000000000000000000000000000000000000000 000000010000000100000064-0000000000000000000000000000000000000000.gz 000000010000000100000065-0000000000000000000000000000000000000000 000000010000000100000066-0000000000000000000000000000000000000000.gz 000000010000000100000067-0000000000000000000000000000000000000000 000000010000000100000068-0000000000000000000000000000000000000000.gz 000000010000000100000069-0000000000000000000000000000000000000000 00000001000000010000006A-0000000000000000000000000000000000000000.gz 00000001000000010000006B-0000000000000000000000000000000000000000 00000001000000010000006C-0000000000000000000000000000000000000000.gz 00000001000000010000006D-0000000000000000000000000000000000000000 00000001000000010000006E-0000000000000000000000000000000000000000.gz 00000001000000010000006F-0000000000000000000000000000000000000000 000000010000000100000070-0000000000000000000000000000000000000000.gz 000000010000000100000071-0000000000000000000000000000000000000000 000000010000000100000072-0000000000000000000000000000000000000000.gz 000000010000000100000073-0000000000000000000000000000000000000000 000000010000000100000074-0000000000000000000000000000000000000000.gz 000000010000000100000075-0000000000000000000000000000000000000000 000000010000000100000076-0000000000000000000000000000000000000000.gz 000000010000000100000077-0000000000000000000000000000000000000000 000000010000000100000078-0000000000000000000000000000000000000000.gz 000000010000000100000079-0000000000000000000000000000000000000000 00000001000000010000007A-0000000000000000000000000000000000000000.gz 00000001000000010000007B-0000000000000000000000000000000000000000 00000001000000010000007C-0000000000000000000000000000000000000000.gz 00000001000000010000007D-0000000000000000000000000000000000000000 00000001000000010000007E-0000000000000000000000000000000000000000.gz 00000001000000010000007F-0000000000000000000000000000000000000000 000000010000000100000080-0000000000000000000000000000000000000000.gz 000000010000000100000081-0000000000000000000000000000000000000000 000000010000000100000082-0000000000000000000000000000000000000000.gz 000000010000000100000083-0000000000000000000000000000000000000000 000000010000000100000084-0000000000000000000000000000000000000000.gz 000000010000000100000085-0000000000000000000000000000000000000000 000000010000000100000086-0000000000000000000000000000000000000000.gz 000000010000000100000087-0000000000000000000000000000000000000000 000000010000000100000088-0000000000000000000000000000000000000000.gz 000000010000000100000089-0000000000000000000000000000000000000000 00000001000000010000008A-0000000000000000000000000000000000000000.gz 00000001000000010000008B-0000000000000000000000000000000000000000 00000001000000010000008C-0000000000000000000000000000000000000000.gz 00000001000000010000008D-0000000000000000000000000000000000000000 00000001000000010000008E-0000000000000000000000000000000000000000.gz 00000001000000010000008F-0000000000000000000000000000000000000000 000000010000000100000090-0000000000000000000000000000000000000000.gz 000000010000000100000091-0000000000000000000000000000000000000000 000000010000000100000092-0000000000000000000000000000000000000000.gz 000000010000000100000093-0000000000000000000000000000000000000000 000000010000000100000094-0000000000000000000000000000000000000000.gz 000000010000000100000095-0000000000000000000000000000000000000000 000000010000000100000096-0000000000000000000000000000000000000000.gz 000000010000000100000097-0000000000000000000000000000000000000000 000000010000000100000098-0000000000000000000000000000000000000000.gz 000000010000000100000099-0000000000000000000000000000000000000000 00000001000000010000009A-0000000000000000000000000000000000000000.gz 00000001000000010000009B-0000000000000000000000000000000000000000 00000001000000010000009C-0000000000000000000000000000000000000000.gz 00000001000000010000009D-0000000000000000000000000000000000000000 00000001000000010000009E-0000000000000000000000000000000000000000.gz 00000001000000010000009F-0000000000000000000000000000000000000000 0000000100000001000000A0-0000000000000000000000000000000000000000.gz 0000000100000001000000A1-0000000000000000000000000000000000000000 0000000100000001000000A2-0000000000000000000000000000000000000000.gz 0000000100000001000000A3-0000000000000000000000000000000000000000 0000000100000001000000A4-0000000000000000000000000000000000000000.gz 0000000100000001000000A5-0000000000000000000000000000000000000000 0000000100000001000000A6-0000000000000000000000000000000000000000.gz 0000000100000001000000A7-0000000000000000000000000000000000000000 0000000100000001000000A8-0000000000000000000000000000000000000000.gz 0000000100000001000000A9-0000000000000000000000000000000000000000 0000000100000001000000AA-0000000000000000000000000000000000000000.gz 0000000100000001000000AB-0000000000000000000000000000000000000000 0000000100000001000000AC-0000000000000000000000000000000000000000.gz 0000000100000001000000AD-0000000000000000000000000000000000000000 0000000100000001000000AE-0000000000000000000000000000000000000000.gz 0000000100000001000000AF-0000000000000000000000000000000000000000 0000000100000001000000B0-0000000000000000000000000000000000000000.gz 0000000100000001000000B1-0000000000000000000000000000000000000000 0000000100000001000000B2-0000000000000000000000000000000000000000.gz 0000000100000001000000B3-0000000000000000000000000000000000000000 0000000100000001000000B4-0000000000000000000000000000000000000000.gz 0000000100000001000000B5-0000000000000000000000000000000000000000 0000000100000001000000B6-0000000000000000000000000000000000000000.gz 0000000100000001000000B7-0000000000000000000000000000000000000000 0000000100000001000000B8-0000000000000000000000000000000000000000.gz 0000000100000001000000B9-0000000000000000000000000000000000000000 0000000100000001000000BA-0000000000000000000000000000000000000000.gz 0000000100000001000000BB-0000000000000000000000000000000000000000 0000000100000001000000BC-0000000000000000000000000000000000000000.gz 0000000100000001000000BD-0000000000000000000000000000000000000000 0000000100000001000000BE-0000000000000000000000000000000000000000.gz 0000000100000001000000BF-0000000000000000000000000000000000000000 0000000100000001000000C0-0000000000000000000000000000000000000000.gz 0000000100000001000000C1-0000000000000000000000000000000000000000 0000000100000001000000C2-0000000000000000000000000000000000000000.gz 0000000100000001000000C3-0000000000000000000000000000000000000000 0000000100000001000000C4-0000000000000000000000000000000000000000.gz 0000000100000001000000C5-0000000000000000000000000000000000000000 0000000100000001000000C6-0000000000000000000000000000000000000000.gz 0000000100000001000000C7-0000000000000000000000000000000000000000 0000000100000001000000C8-0000000000000000000000000000000000000000.gz 0000000100000001000000C9-0000000000000000000000000000000000000000 0000000100000001000000CA-0000000000000000000000000000000000000000.gz 0000000100000001000000CB-0000000000000000000000000000000000000000 0000000100000001000000CC-0000000000000000000000000000000000000000.gz 0000000100000001000000CD-0000000000000000000000000000000000000000 0000000100000001000000CE-0000000000000000000000000000000000000000.gz 0000000100000001000000CF-0000000000000000000000000000000000000000 0000000100000001000000D0-0000000000000000000000000000000000000000.gz 0000000100000001000000D1-0000000000000000000000000000000000000000 0000000100000001000000D2-0000000000000000000000000000000000000000.gz 0000000100000001000000D3-0000000000000000000000000000000000000000 0000000100000001000000D4-0000000000000000000000000000000000000000.gz 0000000100000001000000D5-0000000000000000000000000000000000000000 0000000100000001000000D6-0000000000000000000000000000000000000000.gz 0000000100000001000000D7-0000000000000000000000000000000000000000 0000000100000001000000D8-0000000000000000000000000000000000000000.gz 0000000100000001000000D9-0000000000000000000000000000000000000000 0000000100000001000000DA-0000000000000000000000000000000000000000.gz 0000000100000001000000DB-0000000000000000000000000000000000000000 0000000100000001000000DC-0000000000000000000000000000000000000000.gz 0000000100000001000000DD-0000000000000000000000000000000000000000 0000000100000001000000DE-0000000000000000000000000000000000000000.gz 0000000100000001000000DF-0000000000000000000000000000000000000000 0000000100000001000000E0-0000000000000000000000000000000000000000.gz 0000000100000001000000E1-0000000000000000000000000000000000000000 0000000100000001000000E2-0000000000000000000000000000000000000000.gz 0000000100000001000000E3-0000000000000000000000000000000000000000 0000000100000001000000E4-0000000000000000000000000000000000000000.gz 0000000100000001000000E5-0000000000000000000000000000000000000000 0000000100000001000000E6-0000000000000000000000000000000000000000.gz 0000000100000001000000E7-0000000000000000000000000000000000000000 0000000100000001000000E8-0000000000000000000000000000000000000000.gz 0000000100000001000000E9-0000000000000000000000000000000000000000 0000000100000001000000EA-0000000000000000000000000000000000000000.gz 0000000100000001000000EB-0000000000000000000000000000000000000000 0000000100000001000000EC-0000000000000000000000000000000000000000.gz 0000000100000001000000ED-0000000000000000000000000000000000000000 0000000100000001000000EE-0000000000000000000000000000000000000000.gz 0000000100000001000000EF-0000000000000000000000000000000000000000 0000000100000001000000F0-0000000000000000000000000000000000000000.gz 0000000100000001000000F1-0000000000000000000000000000000000000000 0000000100000001000000F2-0000000000000000000000000000000000000000.gz 0000000100000001000000F3-0000000000000000000000000000000000000000 0000000100000001000000F4-0000000000000000000000000000000000000000.gz 0000000100000001000000F5-0000000000000000000000000000000000000000 0000000100000001000000F6-0000000000000000000000000000000000000000.gz 0000000100000001000000F7-0000000000000000000000000000000000000000 0000000100000001000000F8-0000000000000000000000000000000000000000.gz 0000000100000001000000F9-0000000000000000000000000000000000000000 0000000100000001000000FA-0000000000000000000000000000000000000000.gz 0000000100000001000000FB-0000000000000000000000000000000000000000 0000000100000001000000FC-0000000000000000000000000000000000000000.gz 0000000100000001000000FD-0000000000000000000000000000000000000000 0000000100000001000000FE-0000000000000000000000000000000000000000.gz [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 000000010000000200000000-0000000000000000000000000000000000000000 000000010000000200000001-0000000000000000000000000000000000000000.gz 000000010000000200000002-0000000000000000000000000000000000000000 000000010000000200000003-0000000000000000000000000000000000000000.gz 000000010000000200000004-0000000000000000000000000000000000000000 000000010000000200000005-0000000000000000000000000000000000000000.gz 000000010000000200000006-0000000000000000000000000000000000000000 000000010000000200000007-0000000000000000000000000000000000000000.gz 000000010000000200000008-0000000000000000000000000000000000000000 000000010000000200000009-0000000000000000000000000000000000000000.gz 00000001000000020000000A-0000000000000000000000000000000000000000 00000001000000020000000B-0000000000000000000000000000000000000000.gz 00000001000000020000000C-0000000000000000000000000000000000000000 00000001000000020000000D-0000000000000000000000000000000000000000.gz 00000001000000020000000E-0000000000000000000000000000000000000000 00000001000000020000000F-0000000000000000000000000000000000000000.gz 000000010000000200000010-0000000000000000000000000000000000000000.gz 000000010000000200000011-0000000000000000000000000000000000000000 000000010000000200000012-0000000000000000000000000000000000000000.gz 000000010000000200000013-0000000000000000000000000000000000000000.gz 000000010000000200000014-0000000000000000000000000000000000000000 000000010000000200000015-0000000000000000000000000000000000000000.gz 000000010000000200000016-0000000000000000000000000000000000000000.gz 000000010000000200000017-0000000000000000000000000000000000000000 000000010000000200000018-0000000000000000000000000000000000000000.gz 000000010000000200000019-0000000000000000000000000000000000000000.gz 00000001000000020000001A-0000000000000000000000000000000000000000.gz 00000001000000020000001B-0000000000000000000000000000000000000000 00000001000000020000001C-0000000000000000000000000000000000000000.gz 00000001000000020000001D-0000000000000000000000000000000000000000.gz Expire oldest diff backup, archive expire does not fall on major segment boundary > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config="[TEST_PATH]/db-master/pgbackrest.conf" --stanza=db --log-level-console=detail --repo1-retention-full=1 --repo1-retention-diff=1 --repo1-retention-archive-type=diff --repo1-retention-archive=1 expire ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-archive=1 --repo1-retention-archive-type=diff --repo1-retention-diff=1 --repo1-retention-full=1 --stanza=db P00 INFO: expire full backup set: [BACKUP-FULL-2], [BACKUP-DIFF-2] P00 INFO: remove expired backup [BACKUP-DIFF-2] P00 INFO: remove expired backup [BACKUP-FULL-2] P00 DETAIL: archive retention on backup [BACKUP-FULL-3], archiveId = 9.2-1, start = 000000010000000200000010, stop = 000000010000000200000012 P00 DETAIL: archive retention on backup [BACKUP-DIFF-3], archiveId = 9.2-1, start = 000000010000000200000016 P00 DETAIL: remove archive: archiveId = 9.2-1, start = 0000000100000001, stop = 00000001000000020000000F P00 DETAIL: remove archive: archiveId = 9.2-1, start = 000000010000000200000013, stop = 000000010000000200000015 P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000010","backup-archive-stop":"000000010000000200000012","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000016","backup-archive-stop":"000000010000000200000018","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000001A","backup-archive-stop":"00000001000000020000001C","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-3]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-3] [BACKUP-DIFF-3] [BACKUP-INCR-2] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 000000010000000200000010-0000000000000000000000000000000000000000.gz 000000010000000200000011-0000000000000000000000000000000000000000 000000010000000200000012-0000000000000000000000000000000000000000.gz 000000010000000200000016-0000000000000000000000000000000000000000.gz 000000010000000200000017-0000000000000000000000000000000000000000 000000010000000200000018-0000000000000000000000000000000000000000.gz 000000010000000200000019-0000000000000000000000000000000000000000.gz 00000001000000020000001A-0000000000000000000000000000000000000000.gz 00000001000000020000001B-0000000000000000000000000000000000000000 00000001000000020000001C-0000000000000000000000000000000000000000.gz 00000001000000020000001D-0000000000000000000000000000000000000000.gz * diff backup: label = [BACKUP-DIFF-4], prior = [BACKUP-INCR-2], start = 00000001000000020000001E, stop = 000000010000000200000020 ==================================================================================================================================== + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000010","backup-archive-stop":"000000010000000200000012","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000016","backup-archive-stop":"000000010000000200000018","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000001A","backup-archive-stop":"00000001000000020000001C","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-3]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000001E","backup-archive-stop":"000000010000000200000020","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-INCR-2]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-3] [BACKUP-DIFF-3] [BACKUP-INCR-2] [BACKUP-DIFF-4] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 000000010000000200000010-0000000000000000000000000000000000000000.gz 000000010000000200000011-0000000000000000000000000000000000000000 000000010000000200000012-0000000000000000000000000000000000000000.gz 000000010000000200000016-0000000000000000000000000000000000000000.gz 000000010000000200000017-0000000000000000000000000000000000000000 000000010000000200000018-0000000000000000000000000000000000000000.gz 000000010000000200000019-0000000000000000000000000000000000000000.gz 00000001000000020000001A-0000000000000000000000000000000000000000.gz 00000001000000020000001B-0000000000000000000000000000000000000000 00000001000000020000001C-0000000000000000000000000000000000000000.gz 00000001000000020000001D-0000000000000000000000000000000000000000.gz 00000001000000020000001E-0000000000000000000000000000000000000000.gz 00000001000000020000001F-0000000000000000000000000000000000000000 000000010000000200000020-0000000000000000000000000000000000000000.gz 000000010000000200000021-0000000000000000000000000000000000000000.gz 000000010000000200000022-0000000000000000000000000000000000000000 000000010000000200000023-0000000000000000000000000000000000000000.gz Expire oldest diff backup (cascade to incr) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config="[TEST_PATH]/db-master/pgbackrest.conf" --stanza=db --log-level-console=detail --repo1-retention-full=1 --repo1-retention-diff=1 --repo1-retention-archive-type=diff --repo1-retention-archive=1 expire ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-archive=1 --repo1-retention-archive-type=diff --repo1-retention-diff=1 --repo1-retention-full=1 --stanza=db P00 INFO: expire diff backup set: [BACKUP-DIFF-3], [BACKUP-INCR-2] P00 INFO: remove expired backup [BACKUP-INCR-2] P00 INFO: remove expired backup [BACKUP-DIFF-3] P00 DETAIL: archive retention on backup [BACKUP-FULL-3], archiveId = 9.2-1, start = 000000010000000200000010, stop = 000000010000000200000012 P00 DETAIL: archive retention on backup [BACKUP-DIFF-4], archiveId = 9.2-1, start = 00000001000000020000001E P00 DETAIL: remove archive: archiveId = 9.2-1, start = 000000010000000200000016, stop = 00000001000000020000001D P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000010","backup-archive-stop":"000000010000000200000012","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000001E","backup-archive-stop":"000000010000000200000020","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-INCR-2]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-3] [BACKUP-DIFF-4] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 000000010000000200000010-0000000000000000000000000000000000000000.gz 000000010000000200000011-0000000000000000000000000000000000000000 000000010000000200000012-0000000000000000000000000000000000000000.gz 00000001000000020000001E-0000000000000000000000000000000000000000.gz 00000001000000020000001F-0000000000000000000000000000000000000000 000000010000000200000020-0000000000000000000000000000000000000000.gz 000000010000000200000021-0000000000000000000000000000000000000000.gz 000000010000000200000022-0000000000000000000000000000000000000000 000000010000000200000023-0000000000000000000000000000000000000000.gz * incr backup: label = [BACKUP-INCR-3], prior = [BACKUP-DIFF-4], start = 000000010000000200000024, stop = 000000010000000200000026 ==================================================================================================================================== + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000010","backup-archive-stop":"000000010000000200000012","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000001E","backup-archive-stop":"000000010000000200000020","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-INCR-2]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000024","backup-archive-stop":"000000010000000200000026","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-4]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-3] [BACKUP-DIFF-4] [BACKUP-INCR-3] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 000000010000000200000010-0000000000000000000000000000000000000000.gz 000000010000000200000011-0000000000000000000000000000000000000000 000000010000000200000012-0000000000000000000000000000000000000000.gz 00000001000000020000001E-0000000000000000000000000000000000000000.gz 00000001000000020000001F-0000000000000000000000000000000000000000 000000010000000200000020-0000000000000000000000000000000000000000.gz 000000010000000200000021-0000000000000000000000000000000000000000.gz 000000010000000200000022-0000000000000000000000000000000000000000 000000010000000200000023-0000000000000000000000000000000000000000.gz 000000010000000200000024-0000000000000000000000000000000000000000.gz 000000010000000200000025-0000000000000000000000000000000000000000 000000010000000200000026-0000000000000000000000000000000000000000.gz 000000010000000200000027-0000000000000000000000000000000000000000.gz 000000010000000200000028-0000000000000000000000000000000000000000 000000010000000200000029-0000000000000000000000000000000000000000.gz Expire archive based on newest incr backup > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config="[TEST_PATH]/db-master/pgbackrest.conf" --stanza=db --log-level-console=detail --repo1-retention-full=1 --repo1-retention-diff=1 --repo1-retention-archive-type=incr --repo1-retention-archive=1 expire ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-archive=1 --repo1-retention-archive-type=incr --repo1-retention-diff=1 --repo1-retention-full=1 --stanza=db P00 DETAIL: archive retention on backup [BACKUP-FULL-3], archiveId = 9.2-1, start = 000000010000000200000010, stop = 000000010000000200000012 P00 DETAIL: archive retention on backup [BACKUP-DIFF-4], archiveId = 9.2-1, start = 00000001000000020000001E, stop = 000000010000000200000020 P00 DETAIL: archive retention on backup [BACKUP-INCR-3], archiveId = 9.2-1, start = 000000010000000200000024 P00 DETAIL: remove archive: archiveId = 9.2-1, start = 000000010000000200000021, stop = 000000010000000200000023 P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000010","backup-archive-stop":"000000010000000200000012","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000001E","backup-archive-stop":"000000010000000200000020","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-INCR-2]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000024","backup-archive-stop":"000000010000000200000026","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-4]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-3] [BACKUP-DIFF-4] [BACKUP-INCR-3] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 000000010000000200000010-0000000000000000000000000000000000000000.gz 000000010000000200000011-0000000000000000000000000000000000000000 000000010000000200000012-0000000000000000000000000000000000000000.gz 00000001000000020000001E-0000000000000000000000000000000000000000.gz 00000001000000020000001F-0000000000000000000000000000000000000000 000000010000000200000020-0000000000000000000000000000000000000000.gz 000000010000000200000024-0000000000000000000000000000000000000000.gz 000000010000000200000025-0000000000000000000000000000000000000000 000000010000000200000026-0000000000000000000000000000000000000000.gz 000000010000000200000027-0000000000000000000000000000000000000000.gz 000000010000000200000028-0000000000000000000000000000000000000000 000000010000000200000029-0000000000000000000000000000000000000000.gz * full backup: label = [BACKUP-FULL-4], start = 00000001000000020000002A, stop = 00000001000000020000002C * diff backup: label = [BACKUP-DIFF-5], prior = [BACKUP-FULL-4], start = 000000010000000200000030, stop = 000000010000000200000032 * full backup: label = [BACKUP-FULL-5], start = 000000010000000200000036, stop = 000000010000000200000038 ==================================================================================================================================== + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000010","backup-archive-stop":"000000010000000200000012","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000001E","backup-archive-stop":"000000010000000200000020","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-INCR-2]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000024","backup-archive-stop":"000000010000000200000026","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-4]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000002A","backup-archive-stop":"00000001000000020000002C","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000030","backup-archive-stop":"000000010000000200000032","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-4]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000036","backup-archive-stop":"000000010000000200000038","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-3] [BACKUP-DIFF-4] [BACKUP-INCR-3] [BACKUP-FULL-4] [BACKUP-DIFF-5] [BACKUP-FULL-5] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 000000010000000200000010-0000000000000000000000000000000000000000.gz 000000010000000200000011-0000000000000000000000000000000000000000 000000010000000200000012-0000000000000000000000000000000000000000.gz 00000001000000020000001E-0000000000000000000000000000000000000000.gz 00000001000000020000001F-0000000000000000000000000000000000000000 000000010000000200000020-0000000000000000000000000000000000000000.gz 000000010000000200000024-0000000000000000000000000000000000000000.gz 000000010000000200000025-0000000000000000000000000000000000000000 000000010000000200000026-0000000000000000000000000000000000000000.gz 000000010000000200000027-0000000000000000000000000000000000000000.gz 000000010000000200000028-0000000000000000000000000000000000000000 000000010000000200000029-0000000000000000000000000000000000000000.gz 00000001000000020000002A-0000000000000000000000000000000000000000.gz 00000001000000020000002B-0000000000000000000000000000000000000000 00000001000000020000002C-0000000000000000000000000000000000000000.gz 00000001000000020000002D-0000000000000000000000000000000000000000.gz 00000001000000020000002E-0000000000000000000000000000000000000000 00000001000000020000002F-0000000000000000000000000000000000000000.gz 000000010000000200000030-0000000000000000000000000000000000000000.gz 000000010000000200000031-0000000000000000000000000000000000000000 000000010000000200000032-0000000000000000000000000000000000000000.gz 000000010000000200000033-0000000000000000000000000000000000000000.gz 000000010000000200000034-0000000000000000000000000000000000000000 000000010000000200000035-0000000000000000000000000000000000000000.gz 000000010000000200000036-0000000000000000000000000000000000000000.gz 000000010000000200000037-0000000000000000000000000000000000000000 000000010000000200000038-0000000000000000000000000000000000000000.gz 000000010000000200000039-0000000000000000000000000000000000000000.gz 00000001000000020000003A-0000000000000000000000000000000000000000 00000001000000020000003B-0000000000000000000000000000000000000000.gz Expire diff treating full as diff > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config="[TEST_PATH]/db-master/pgbackrest.conf" --stanza=db --log-level-console=detail --repo1-retention-full=2 --repo1-retention-diff=1 --repo1-retention-archive-type=diff --repo1-retention-archive=1 expire ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-archive=1 --repo1-retention-archive-type=diff --repo1-retention-diff=1 --repo1-retention-full=2 --stanza=db P00 INFO: expire full backup set: [BACKUP-FULL-3], [BACKUP-DIFF-4], [BACKUP-INCR-3] P00 INFO: expire diff backup [BACKUP-DIFF-5] P00 INFO: remove expired backup [BACKUP-DIFF-5] P00 INFO: remove expired backup [BACKUP-INCR-3] P00 INFO: remove expired backup [BACKUP-DIFF-4] P00 INFO: remove expired backup [BACKUP-FULL-3] P00 DETAIL: archive retention on backup [BACKUP-FULL-4], archiveId = 9.2-1, start = 00000001000000020000002A, stop = 00000001000000020000002C P00 DETAIL: archive retention on backup [BACKUP-FULL-5], archiveId = 9.2-1, start = 000000010000000200000036 P00 DETAIL: remove archive: archiveId = 9.2-1, start = 000000010000000200000010, stop = 000000010000000200000029 P00 DETAIL: remove archive: archiveId = 9.2-1, start = 00000001000000020000002D, stop = 000000010000000200000035 P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000002A","backup-archive-stop":"00000001000000020000002C","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000036","backup-archive-stop":"000000010000000200000038","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-4] [BACKUP-FULL-5] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 00000001000000020000002A-0000000000000000000000000000000000000000.gz 00000001000000020000002B-0000000000000000000000000000000000000000 00000001000000020000002C-0000000000000000000000000000000000000000.gz 000000010000000200000036-0000000000000000000000000000000000000000.gz 000000010000000200000037-0000000000000000000000000000000000000000 000000010000000200000038-0000000000000000000000000000000000000000.gz 000000010000000200000039-0000000000000000000000000000000000000000.gz 00000001000000020000003A-0000000000000000000000000000000000000000 00000001000000020000003B-0000000000000000000000000000000000000000.gz * full backup: label = [BACKUP-FULL-6], start = 00000001000000020000003C, stop = 00000001000000020000003E * diff backup: label = [BACKUP-DIFF-6], prior = [BACKUP-FULL-6], start = 000000010000000200000042, stop = 000000010000000200000044 * diff backup: label = [BACKUP-DIFF-7], prior = [BACKUP-DIFF-6], start = 000000010000000200000048, stop = 00000001000000020000004A ==================================================================================================================================== + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000002A","backup-archive-stop":"00000001000000020000002C","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000036","backup-archive-stop":"000000010000000200000038","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-6]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000003C","backup-archive-stop":"00000001000000020000003E","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-6]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000042","backup-archive-stop":"000000010000000200000044","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-6]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-7]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000048","backup-archive-stop":"00000001000000020000004A","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-6]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-4] [BACKUP-FULL-5] [BACKUP-FULL-6] [BACKUP-DIFF-6] [BACKUP-DIFF-7] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 00000001000000020000002A-0000000000000000000000000000000000000000.gz 00000001000000020000002B-0000000000000000000000000000000000000000 00000001000000020000002C-0000000000000000000000000000000000000000.gz 000000010000000200000036-0000000000000000000000000000000000000000.gz 000000010000000200000037-0000000000000000000000000000000000000000 000000010000000200000038-0000000000000000000000000000000000000000.gz 000000010000000200000039-0000000000000000000000000000000000000000.gz 00000001000000020000003A-0000000000000000000000000000000000000000 00000001000000020000003B-0000000000000000000000000000000000000000.gz 00000001000000020000003C-0000000000000000000000000000000000000000.gz 00000001000000020000003D-0000000000000000000000000000000000000000 00000001000000020000003E-0000000000000000000000000000000000000000.gz 00000001000000020000003F-0000000000000000000000000000000000000000.gz 000000010000000200000040-0000000000000000000000000000000000000000 000000010000000200000041-0000000000000000000000000000000000000000.gz 000000010000000200000042-0000000000000000000000000000000000000000.gz 000000010000000200000043-0000000000000000000000000000000000000000 000000010000000200000044-0000000000000000000000000000000000000000.gz 000000010000000200000045-0000000000000000000000000000000000000000.gz 000000010000000200000046-0000000000000000000000000000000000000000 000000010000000200000047-0000000000000000000000000000000000000000.gz 000000010000000200000048-0000000000000000000000000000000000000000.gz 000000010000000200000049-0000000000000000000000000000000000000000 00000001000000020000004A-0000000000000000000000000000000000000000.gz 00000001000000020000004B-0000000000000000000000000000000000000000.gz 00000001000000020000004C-0000000000000000000000000000000000000000 00000001000000020000004D-0000000000000000000000000000000000000000.gz Expire diff with repo-retention-archive with warning repo-retention-diff not set > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config="[TEST_PATH]/db-master/pgbackrest.conf" --stanza=db --log-level-console=detail --repo1-retention-archive-type=diff --repo1-retention-archive=1 expire ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-archive=1 --repo1-retention-archive-type=diff --stanza=db P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 WARN: option 'repo1-retention-diff' is not set for 'repo1-retention-archive-type=diff' HINT: to retain differential backups indefinitely (without warning), set option 'repo1-retention-diff' to the maximum. P00 DETAIL: archive retention on backup [BACKUP-FULL-4], archiveId = 9.2-1, start = 00000001000000020000002A, stop = 00000001000000020000002C P00 DETAIL: archive retention on backup [BACKUP-FULL-5], archiveId = 9.2-1, start = 000000010000000200000036, stop = 000000010000000200000038 P00 DETAIL: archive retention on backup [BACKUP-FULL-6], archiveId = 9.2-1, start = 00000001000000020000003C, stop = 00000001000000020000003E P00 DETAIL: archive retention on backup [BACKUP-DIFF-6], archiveId = 9.2-1, start = 000000010000000200000042, stop = 000000010000000200000044 P00 DETAIL: archive retention on backup [BACKUP-DIFF-7], archiveId = 9.2-1, start = 000000010000000200000048 P00 DETAIL: remove archive: archiveId = 9.2-1, start = 000000010000000200000039, stop = 00000001000000020000003B P00 DETAIL: remove archive: archiveId = 9.2-1, start = 00000001000000020000003F, stop = 000000010000000200000041 P00 DETAIL: remove archive: archiveId = 9.2-1, start = 000000010000000200000045, stop = 000000010000000200000047 P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000002A","backup-archive-stop":"00000001000000020000002C","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000036","backup-archive-stop":"000000010000000200000038","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-6]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000003C","backup-archive-stop":"00000001000000020000003E","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-6]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000042","backup-archive-stop":"000000010000000200000044","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-6]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-7]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000048","backup-archive-stop":"00000001000000020000004A","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-6]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-4] [BACKUP-FULL-5] [BACKUP-FULL-6] [BACKUP-DIFF-6] [BACKUP-DIFF-7] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 00000001000000020000002A-0000000000000000000000000000000000000000.gz 00000001000000020000002B-0000000000000000000000000000000000000000 00000001000000020000002C-0000000000000000000000000000000000000000.gz 000000010000000200000036-0000000000000000000000000000000000000000.gz 000000010000000200000037-0000000000000000000000000000000000000000 000000010000000200000038-0000000000000000000000000000000000000000.gz 00000001000000020000003C-0000000000000000000000000000000000000000.gz 00000001000000020000003D-0000000000000000000000000000000000000000 00000001000000020000003E-0000000000000000000000000000000000000000.gz 000000010000000200000042-0000000000000000000000000000000000000000.gz 000000010000000200000043-0000000000000000000000000000000000000000 000000010000000200000044-0000000000000000000000000000000000000000.gz 000000010000000200000048-0000000000000000000000000000000000000000.gz 000000010000000200000049-0000000000000000000000000000000000000000 00000001000000020000004A-0000000000000000000000000000000000000000.gz 00000001000000020000004B-0000000000000000000000000000000000000000.gz 00000001000000020000004C-0000000000000000000000000000000000000000 00000001000000020000004D-0000000000000000000000000000000000000000.gz * full backup: label = [BACKUP-FULL-7], start = 00000001000000020000004E, stop = 000000010000000200000050 * full backup: label = [BACKUP-FULL-8], start = 000000010000000200000054, stop = 000000010000000200000056 ==================================================================================================================================== + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000002A","backup-archive-stop":"00000001000000020000002C","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000036","backup-archive-stop":"000000010000000200000038","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-6]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000003C","backup-archive-stop":"00000001000000020000003E","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-6]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000042","backup-archive-stop":"000000010000000200000044","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-6]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-7]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000048","backup-archive-stop":"00000001000000020000004A","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-6]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-7]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000004E","backup-archive-stop":"000000010000000200000050","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-8]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000054","backup-archive-stop":"000000010000000200000056","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-4] [BACKUP-FULL-5] [BACKUP-FULL-6] [BACKUP-DIFF-6] [BACKUP-DIFF-7] [BACKUP-FULL-7] [BACKUP-FULL-8] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 00000001000000020000002A-0000000000000000000000000000000000000000.gz 00000001000000020000002B-0000000000000000000000000000000000000000 00000001000000020000002C-0000000000000000000000000000000000000000.gz 000000010000000200000036-0000000000000000000000000000000000000000.gz 000000010000000200000037-0000000000000000000000000000000000000000 000000010000000200000038-0000000000000000000000000000000000000000.gz 00000001000000020000003C-0000000000000000000000000000000000000000.gz 00000001000000020000003D-0000000000000000000000000000000000000000 00000001000000020000003E-0000000000000000000000000000000000000000.gz 000000010000000200000042-0000000000000000000000000000000000000000.gz 000000010000000200000043-0000000000000000000000000000000000000000 000000010000000200000044-0000000000000000000000000000000000000000.gz 000000010000000200000048-0000000000000000000000000000000000000000.gz 000000010000000200000049-0000000000000000000000000000000000000000 00000001000000020000004A-0000000000000000000000000000000000000000.gz 00000001000000020000004B-0000000000000000000000000000000000000000.gz 00000001000000020000004C-0000000000000000000000000000000000000000 00000001000000020000004D-0000000000000000000000000000000000000000.gz 00000001000000020000004E-0000000000000000000000000000000000000000.gz 00000001000000020000004F-0000000000000000000000000000000000000000 000000010000000200000050-0000000000000000000000000000000000000000.gz 000000010000000200000051-0000000000000000000000000000000000000000.gz 000000010000000200000052-0000000000000000000000000000000000000000 000000010000000200000053-0000000000000000000000000000000000000000.gz 000000010000000200000054-0000000000000000000000000000000000000000.gz 000000010000000200000055-0000000000000000000000000000000000000000 000000010000000200000056-0000000000000000000000000000000000000000.gz 000000010000000200000057-0000000000000000000000000000000000000000.gz 000000010000000200000058-0000000000000000000000000000000000000000 000000010000000200000059-0000000000000000000000000000000000000000.gz Expire full with repo-retention-archive with warning repo-retention-full not set > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config="[TEST_PATH]/db-master/pgbackrest.conf" --stanza=db --log-level-console=detail --repo1-retention-archive-type=full --repo1-retention-archive=1 expire ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-archive=1 --repo1-retention-archive-type=full --stanza=db P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 DETAIL: archive retention on backup [BACKUP-FULL-4], archiveId = 9.2-1, start = 00000001000000020000002A, stop = 00000001000000020000002C P00 DETAIL: archive retention on backup [BACKUP-FULL-5], archiveId = 9.2-1, start = 000000010000000200000036, stop = 000000010000000200000038 P00 DETAIL: archive retention on backup [BACKUP-FULL-6], archiveId = 9.2-1, start = 00000001000000020000003C, stop = 00000001000000020000003E P00 DETAIL: archive retention on backup [BACKUP-DIFF-6], archiveId = 9.2-1, start = 000000010000000200000042, stop = 000000010000000200000044 P00 DETAIL: archive retention on backup [BACKUP-DIFF-7], archiveId = 9.2-1, start = 000000010000000200000048, stop = 00000001000000020000004A P00 DETAIL: archive retention on backup [BACKUP-FULL-7], archiveId = 9.2-1, start = 00000001000000020000004E, stop = 000000010000000200000050 P00 DETAIL: archive retention on backup [BACKUP-FULL-8], archiveId = 9.2-1, start = 000000010000000200000054 P00 DETAIL: remove archive: archiveId = 9.2-1, start = 00000001000000020000004B, stop = 00000001000000020000004D P00 DETAIL: remove archive: archiveId = 9.2-1, start = 000000010000000200000051, stop = 000000010000000200000053 P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000002A","backup-archive-stop":"00000001000000020000002C","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000036","backup-archive-stop":"000000010000000200000038","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-6]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000003C","backup-archive-stop":"00000001000000020000003E","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-6]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000042","backup-archive-stop":"000000010000000200000044","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-6]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-7]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000048","backup-archive-stop":"00000001000000020000004A","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-6]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-7]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000004E","backup-archive-stop":"000000010000000200000050","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-8]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000054","backup-archive-stop":"000000010000000200000056","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-4] [BACKUP-FULL-5] [BACKUP-FULL-6] [BACKUP-DIFF-6] [BACKUP-DIFF-7] [BACKUP-FULL-7] [BACKUP-FULL-8] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 00000001000000020000002A-0000000000000000000000000000000000000000.gz 00000001000000020000002B-0000000000000000000000000000000000000000 00000001000000020000002C-0000000000000000000000000000000000000000.gz 000000010000000200000036-0000000000000000000000000000000000000000.gz 000000010000000200000037-0000000000000000000000000000000000000000 000000010000000200000038-0000000000000000000000000000000000000000.gz 00000001000000020000003C-0000000000000000000000000000000000000000.gz 00000001000000020000003D-0000000000000000000000000000000000000000 00000001000000020000003E-0000000000000000000000000000000000000000.gz 000000010000000200000042-0000000000000000000000000000000000000000.gz 000000010000000200000043-0000000000000000000000000000000000000000 000000010000000200000044-0000000000000000000000000000000000000000.gz 000000010000000200000048-0000000000000000000000000000000000000000.gz 000000010000000200000049-0000000000000000000000000000000000000000 00000001000000020000004A-0000000000000000000000000000000000000000.gz 00000001000000020000004E-0000000000000000000000000000000000000000.gz 00000001000000020000004F-0000000000000000000000000000000000000000 000000010000000200000050-0000000000000000000000000000000000000000.gz 000000010000000200000054-0000000000000000000000000000000000000000.gz 000000010000000200000055-0000000000000000000000000000000000000000 000000010000000200000056-0000000000000000000000000000000000000000.gz 000000010000000200000057-0000000000000000000000000000000000000000.gz 000000010000000200000058-0000000000000000000000000000000000000000 000000010000000200000059-0000000000000000000000000000000000000000.gz * incr backup: label = [BACKUP-INCR-4], prior = [BACKUP-FULL-8], start = 00000001000000020000005A, stop = 00000001000000020000005C ==================================================================================================================================== + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000002A","backup-archive-stop":"00000001000000020000002C","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000036","backup-archive-stop":"000000010000000200000038","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-6]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000003C","backup-archive-stop":"00000001000000020000003E","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-6]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000042","backup-archive-stop":"000000010000000200000044","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-6]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-7]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000048","backup-archive-stop":"00000001000000020000004A","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-6]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-7]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000004E","backup-archive-stop":"000000010000000200000050","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-8]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000054","backup-archive-stop":"000000010000000200000056","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000005A","backup-archive-stop":"00000001000000020000005C","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-8]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-4] [BACKUP-FULL-5] [BACKUP-FULL-6] [BACKUP-DIFF-6] [BACKUP-DIFF-7] [BACKUP-FULL-7] [BACKUP-FULL-8] [BACKUP-INCR-4] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 00000001000000020000002A-0000000000000000000000000000000000000000.gz 00000001000000020000002B-0000000000000000000000000000000000000000 00000001000000020000002C-0000000000000000000000000000000000000000.gz 000000010000000200000036-0000000000000000000000000000000000000000.gz 000000010000000200000037-0000000000000000000000000000000000000000 000000010000000200000038-0000000000000000000000000000000000000000.gz 00000001000000020000003C-0000000000000000000000000000000000000000.gz 00000001000000020000003D-0000000000000000000000000000000000000000 00000001000000020000003E-0000000000000000000000000000000000000000.gz 000000010000000200000042-0000000000000000000000000000000000000000.gz 000000010000000200000043-0000000000000000000000000000000000000000 000000010000000200000044-0000000000000000000000000000000000000000.gz 000000010000000200000048-0000000000000000000000000000000000000000.gz 000000010000000200000049-0000000000000000000000000000000000000000 00000001000000020000004A-0000000000000000000000000000000000000000.gz 00000001000000020000004E-0000000000000000000000000000000000000000.gz 00000001000000020000004F-0000000000000000000000000000000000000000 000000010000000200000050-0000000000000000000000000000000000000000.gz 000000010000000200000054-0000000000000000000000000000000000000000.gz 000000010000000200000055-0000000000000000000000000000000000000000 000000010000000200000056-0000000000000000000000000000000000000000.gz 000000010000000200000057-0000000000000000000000000000000000000000.gz 000000010000000200000058-0000000000000000000000000000000000000000 000000010000000200000059-0000000000000000000000000000000000000000.gz 00000001000000020000005A-0000000000000000000000000000000000000000.gz 00000001000000020000005B-0000000000000000000000000000000000000000 00000001000000020000005C-0000000000000000000000000000000000000000.gz 00000001000000020000005D-0000000000000000000000000000000000000000.gz 00000001000000020000005E-0000000000000000000000000000000000000000 00000001000000020000005F-0000000000000000000000000000000000000000.gz Expire no archive with warning since repo-retention-archive not set for INCR > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config="[TEST_PATH]/db-master/pgbackrest.conf" --stanza=db --log-level-console=detail --repo1-retention-full=1 --repo1-retention-diff=1 --repo1-retention-archive-type=incr expire ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-archive-type=incr --repo1-retention-diff=1 --repo1-retention-full=1 --stanza=db P00 WARN: WAL segments will not be expired: option 'repo1-retention-archive-type=incr' but option 'repo1-retention-archive' is not set P00 INFO: expire full backup [BACKUP-FULL-4] P00 INFO: expire full backup [BACKUP-FULL-5] P00 INFO: expire full backup set: [BACKUP-FULL-6], [BACKUP-DIFF-6], [BACKUP-DIFF-7] P00 INFO: expire full backup [BACKUP-FULL-7] P00 INFO: remove expired backup [BACKUP-FULL-7] P00 INFO: remove expired backup [BACKUP-DIFF-7] P00 INFO: remove expired backup [BACKUP-DIFF-6] P00 INFO: remove expired backup [BACKUP-FULL-6] P00 INFO: remove expired backup [BACKUP-FULL-5] P00 INFO: remove expired backup [BACKUP-FULL-4] P00 INFO: option 'repo1-retention-archive' is not set - archive logs will not be expired P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-8]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000054","backup-archive-stop":"000000010000000200000056","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000005A","backup-archive-stop":"00000001000000020000005C","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-8]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-8] [BACKUP-INCR-4] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 00000001000000020000002A-0000000000000000000000000000000000000000.gz 00000001000000020000002B-0000000000000000000000000000000000000000 00000001000000020000002C-0000000000000000000000000000000000000000.gz 000000010000000200000036-0000000000000000000000000000000000000000.gz 000000010000000200000037-0000000000000000000000000000000000000000 000000010000000200000038-0000000000000000000000000000000000000000.gz 00000001000000020000003C-0000000000000000000000000000000000000000.gz 00000001000000020000003D-0000000000000000000000000000000000000000 00000001000000020000003E-0000000000000000000000000000000000000000.gz 000000010000000200000042-0000000000000000000000000000000000000000.gz 000000010000000200000043-0000000000000000000000000000000000000000 000000010000000200000044-0000000000000000000000000000000000000000.gz 000000010000000200000048-0000000000000000000000000000000000000000.gz 000000010000000200000049-0000000000000000000000000000000000000000 00000001000000020000004A-0000000000000000000000000000000000000000.gz 00000001000000020000004E-0000000000000000000000000000000000000000.gz 00000001000000020000004F-0000000000000000000000000000000000000000 000000010000000200000050-0000000000000000000000000000000000000000.gz 000000010000000200000054-0000000000000000000000000000000000000000.gz 000000010000000200000055-0000000000000000000000000000000000000000 000000010000000200000056-0000000000000000000000000000000000000000.gz 000000010000000200000057-0000000000000000000000000000000000000000.gz 000000010000000200000058-0000000000000000000000000000000000000000 000000010000000200000059-0000000000000000000000000000000000000000.gz 00000001000000020000005A-0000000000000000000000000000000000000000.gz 00000001000000020000005B-0000000000000000000000000000000000000000 00000001000000020000005C-0000000000000000000000000000000000000000.gz 00000001000000020000005D-0000000000000000000000000000000000000000.gz 00000001000000020000005E-0000000000000000000000000000000000000000 00000001000000020000005F-0000000000000000000000000000000000000000.gz * full backup: label = [BACKUP-FULL-9], start = 000000010000000200000060, stop = 000000010000000200000062 * diff backup: label = [BACKUP-DIFF-8], prior = [BACKUP-FULL-9], start = 000000010000000200000066, stop = 000000010000000200000068 * diff backup: label = [BACKUP-DIFF-9], prior = [BACKUP-DIFF-8], start = 00000001000000020000006C, stop = 00000001000000020000006E ==================================================================================================================================== + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-8]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000054","backup-archive-stop":"000000010000000200000056","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000005A","backup-archive-stop":"00000001000000020000005C","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-8]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-9]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000060","backup-archive-stop":"000000010000000200000062","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-8]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000066","backup-archive-stop":"000000010000000200000068","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-9]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-9]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000006C","backup-archive-stop":"00000001000000020000006E","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-8]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-8] [BACKUP-INCR-4] [BACKUP-FULL-9] [BACKUP-DIFF-8] [BACKUP-DIFF-9] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 00000001000000020000002A-0000000000000000000000000000000000000000.gz 00000001000000020000002B-0000000000000000000000000000000000000000 00000001000000020000002C-0000000000000000000000000000000000000000.gz 000000010000000200000036-0000000000000000000000000000000000000000.gz 000000010000000200000037-0000000000000000000000000000000000000000 000000010000000200000038-0000000000000000000000000000000000000000.gz 00000001000000020000003C-0000000000000000000000000000000000000000.gz 00000001000000020000003D-0000000000000000000000000000000000000000 00000001000000020000003E-0000000000000000000000000000000000000000.gz 000000010000000200000042-0000000000000000000000000000000000000000.gz 000000010000000200000043-0000000000000000000000000000000000000000 000000010000000200000044-0000000000000000000000000000000000000000.gz 000000010000000200000048-0000000000000000000000000000000000000000.gz 000000010000000200000049-0000000000000000000000000000000000000000 00000001000000020000004A-0000000000000000000000000000000000000000.gz 00000001000000020000004E-0000000000000000000000000000000000000000.gz 00000001000000020000004F-0000000000000000000000000000000000000000 000000010000000200000050-0000000000000000000000000000000000000000.gz 000000010000000200000054-0000000000000000000000000000000000000000.gz 000000010000000200000055-0000000000000000000000000000000000000000 000000010000000200000056-0000000000000000000000000000000000000000.gz 000000010000000200000057-0000000000000000000000000000000000000000.gz 000000010000000200000058-0000000000000000000000000000000000000000 000000010000000200000059-0000000000000000000000000000000000000000.gz 00000001000000020000005A-0000000000000000000000000000000000000000.gz 00000001000000020000005B-0000000000000000000000000000000000000000 00000001000000020000005C-0000000000000000000000000000000000000000.gz 00000001000000020000005D-0000000000000000000000000000000000000000.gz 00000001000000020000005E-0000000000000000000000000000000000000000 00000001000000020000005F-0000000000000000000000000000000000000000.gz 000000010000000200000060-0000000000000000000000000000000000000000.gz 000000010000000200000061-0000000000000000000000000000000000000000 000000010000000200000062-0000000000000000000000000000000000000000.gz 000000010000000200000063-0000000000000000000000000000000000000000.gz 000000010000000200000064-0000000000000000000000000000000000000000 000000010000000200000065-0000000000000000000000000000000000000000.gz 000000010000000200000066-0000000000000000000000000000000000000000.gz 000000010000000200000067-0000000000000000000000000000000000000000 000000010000000200000068-0000000000000000000000000000000000000000.gz 000000010000000200000069-0000000000000000000000000000000000000000.gz 00000001000000020000006A-0000000000000000000000000000000000000000 00000001000000020000006B-0000000000000000000000000000000000000000.gz 00000001000000020000006C-0000000000000000000000000000000000000000.gz 00000001000000020000006D-0000000000000000000000000000000000000000 00000001000000020000006E-0000000000000000000000000000000000000000.gz 00000001000000020000006F-0000000000000000000000000000000000000000.gz 000000010000000200000070-0000000000000000000000000000000000000000 000000010000000200000071-0000000000000000000000000000000000000000.gz Expire no archive with warning since neither repo-retention-archive nor repo-retention-diff is set > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config="[TEST_PATH]/db-master/pgbackrest.conf" --stanza=db --log-level-console=detail --repo1-retention-archive-type=diff expire ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-archive-type=diff --stanza=db P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 WARN: WAL segments will not be expired: option 'repo1-retention-archive-type=diff' but neither option 'repo1-retention-archive' nor option 'repo1-retention-diff' is set P00 INFO: option 'repo1-retention-archive' is not set - archive logs will not be expired P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-8]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000054","backup-archive-stop":"000000010000000200000056","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000005A","backup-archive-stop":"00000001000000020000005C","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-8]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-9]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000060","backup-archive-stop":"000000010000000200000062","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-8]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000066","backup-archive-stop":"000000010000000200000068","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-9]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-9]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000006C","backup-archive-stop":"00000001000000020000006E","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-8]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-8] [BACKUP-INCR-4] [BACKUP-FULL-9] [BACKUP-DIFF-8] [BACKUP-DIFF-9] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 00000001000000020000002A-0000000000000000000000000000000000000000.gz 00000001000000020000002B-0000000000000000000000000000000000000000 00000001000000020000002C-0000000000000000000000000000000000000000.gz 000000010000000200000036-0000000000000000000000000000000000000000.gz 000000010000000200000037-0000000000000000000000000000000000000000 000000010000000200000038-0000000000000000000000000000000000000000.gz 00000001000000020000003C-0000000000000000000000000000000000000000.gz 00000001000000020000003D-0000000000000000000000000000000000000000 00000001000000020000003E-0000000000000000000000000000000000000000.gz 000000010000000200000042-0000000000000000000000000000000000000000.gz 000000010000000200000043-0000000000000000000000000000000000000000 000000010000000200000044-0000000000000000000000000000000000000000.gz 000000010000000200000048-0000000000000000000000000000000000000000.gz 000000010000000200000049-0000000000000000000000000000000000000000 00000001000000020000004A-0000000000000000000000000000000000000000.gz 00000001000000020000004E-0000000000000000000000000000000000000000.gz 00000001000000020000004F-0000000000000000000000000000000000000000 000000010000000200000050-0000000000000000000000000000000000000000.gz 000000010000000200000054-0000000000000000000000000000000000000000.gz 000000010000000200000055-0000000000000000000000000000000000000000 000000010000000200000056-0000000000000000000000000000000000000000.gz 000000010000000200000057-0000000000000000000000000000000000000000.gz 000000010000000200000058-0000000000000000000000000000000000000000 000000010000000200000059-0000000000000000000000000000000000000000.gz 00000001000000020000005A-0000000000000000000000000000000000000000.gz 00000001000000020000005B-0000000000000000000000000000000000000000 00000001000000020000005C-0000000000000000000000000000000000000000.gz 00000001000000020000005D-0000000000000000000000000000000000000000.gz 00000001000000020000005E-0000000000000000000000000000000000000000 00000001000000020000005F-0000000000000000000000000000000000000000.gz 000000010000000200000060-0000000000000000000000000000000000000000.gz 000000010000000200000061-0000000000000000000000000000000000000000 000000010000000200000062-0000000000000000000000000000000000000000.gz 000000010000000200000063-0000000000000000000000000000000000000000.gz 000000010000000200000064-0000000000000000000000000000000000000000 000000010000000200000065-0000000000000000000000000000000000000000.gz 000000010000000200000066-0000000000000000000000000000000000000000.gz 000000010000000200000067-0000000000000000000000000000000000000000 000000010000000200000068-0000000000000000000000000000000000000000.gz 000000010000000200000069-0000000000000000000000000000000000000000.gz 00000001000000020000006A-0000000000000000000000000000000000000000 00000001000000020000006B-0000000000000000000000000000000000000000.gz 00000001000000020000006C-0000000000000000000000000000000000000000.gz 00000001000000020000006D-0000000000000000000000000000000000000000 00000001000000020000006E-0000000000000000000000000000000000000000.gz 00000001000000020000006F-0000000000000000000000000000000000000000.gz 000000010000000200000070-0000000000000000000000000000000000000000 000000010000000200000071-0000000000000000000000000000000000000000.gz + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-8]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000054","backup-archive-stop":"000000010000000200000056","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000005A","backup-archive-stop":"00000001000000020000005C","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-8]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-9]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000060","backup-archive-stop":"000000010000000200000062","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-8]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000066","backup-archive-stop":"000000010000000200000068","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-9]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-9]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000006C","backup-archive-stop":"00000001000000020000006E","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-8]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-8] [BACKUP-INCR-4] [BACKUP-FULL-9] [BACKUP-DIFF-8] [BACKUP-DIFF-9] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 00000001000000020000002A-0000000000000000000000000000000000000000.gz 00000001000000020000002B-0000000000000000000000000000000000000000 00000001000000020000002C-0000000000000000000000000000000000000000.gz 000000010000000200000036-0000000000000000000000000000000000000000.gz 000000010000000200000037-0000000000000000000000000000000000000000 000000010000000200000038-0000000000000000000000000000000000000000.gz 00000001000000020000003C-0000000000000000000000000000000000000000.gz 00000001000000020000003D-0000000000000000000000000000000000000000 00000001000000020000003E-0000000000000000000000000000000000000000.gz 000000010000000200000042-0000000000000000000000000000000000000000.gz 000000010000000200000043-0000000000000000000000000000000000000000 000000010000000200000044-0000000000000000000000000000000000000000.gz 000000010000000200000048-0000000000000000000000000000000000000000.gz 000000010000000200000049-0000000000000000000000000000000000000000 00000001000000020000004A-0000000000000000000000000000000000000000.gz 00000001000000020000004E-0000000000000000000000000000000000000000.gz 00000001000000020000004F-0000000000000000000000000000000000000000 000000010000000200000050-0000000000000000000000000000000000000000.gz 000000010000000200000054-0000000000000000000000000000000000000000.gz 000000010000000200000055-0000000000000000000000000000000000000000 000000010000000200000056-0000000000000000000000000000000000000000.gz 000000010000000200000057-0000000000000000000000000000000000000000.gz 000000010000000200000058-0000000000000000000000000000000000000000 000000010000000200000059-0000000000000000000000000000000000000000.gz 00000001000000020000005A-0000000000000000000000000000000000000000.gz 00000001000000020000005B-0000000000000000000000000000000000000000 00000001000000020000005C-0000000000000000000000000000000000000000.gz 00000001000000020000005D-0000000000000000000000000000000000000000.gz 00000001000000020000005E-0000000000000000000000000000000000000000 00000001000000020000005F-0000000000000000000000000000000000000000.gz 000000010000000200000060-0000000000000000000000000000000000000000.gz 000000010000000200000061-0000000000000000000000000000000000000000 000000010000000200000062-0000000000000000000000000000000000000000.gz 000000010000000200000063-0000000000000000000000000000000000000000.gz 000000010000000200000064-0000000000000000000000000000000000000000 000000010000000200000065-0000000000000000000000000000000000000000.gz 000000010000000200000066-0000000000000000000000000000000000000000.gz 000000010000000200000067-0000000000000000000000000000000000000000 000000010000000200000068-0000000000000000000000000000000000000000.gz 000000010000000200000069-0000000000000000000000000000000000000000.gz 00000001000000020000006A-0000000000000000000000000000000000000000 00000001000000020000006B-0000000000000000000000000000000000000000.gz 00000001000000020000006C-0000000000000000000000000000000000000000.gz 00000001000000020000006D-0000000000000000000000000000000000000000 00000001000000020000006E-0000000000000000000000000000000000000000.gz 00000001000000020000006F-0000000000000000000000000000000000000000.gz 000000010000000200000070-0000000000000000000000000000000000000000 000000010000000200000071-0000000000000000000000000000000000000000.gz Use oldest full backup for archive retention > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config="[TEST_PATH]/db-master/pgbackrest.conf" --stanza=db --log-level-console=detail --repo1-retention-full=10 --repo1-retention-diff=10 --repo1-retention-archive-type=full --repo1-retention-archive=10 expire ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-archive=10 --repo1-retention-archive-type=full --repo1-retention-diff=10 --repo1-retention-full=10 --stanza=db P00 INFO: full backup total < 10 - using oldest full backup for 9.2-1 archive retention P00 DETAIL: archive retention on backup [BACKUP-FULL-8], archiveId = 9.2-1, start = 000000010000000200000054 P00 DETAIL: remove archive: archiveId = 9.2-1, start = 00000001000000020000002A, stop = 000000010000000200000050 P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-8]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000054","backup-archive-stop":"000000010000000200000056","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000005A","backup-archive-stop":"00000001000000020000005C","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-8]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-9]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000060","backup-archive-stop":"000000010000000200000062","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-8]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000200000066","backup-archive-stop":"000000010000000200000068","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-9]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-9]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000020000006C","backup-archive-stop":"00000001000000020000006E","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-8]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-8] [BACKUP-INCR-4] [BACKUP-FULL-9] [BACKUP-DIFF-8] [BACKUP-DIFF-9] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000002: 000000010000000200000054-0000000000000000000000000000000000000000.gz 000000010000000200000055-0000000000000000000000000000000000000000 000000010000000200000056-0000000000000000000000000000000000000000.gz 000000010000000200000057-0000000000000000000000000000000000000000.gz 000000010000000200000058-0000000000000000000000000000000000000000 000000010000000200000059-0000000000000000000000000000000000000000.gz 00000001000000020000005A-0000000000000000000000000000000000000000.gz 00000001000000020000005B-0000000000000000000000000000000000000000 00000001000000020000005C-0000000000000000000000000000000000000000.gz 00000001000000020000005D-0000000000000000000000000000000000000000.gz 00000001000000020000005E-0000000000000000000000000000000000000000 00000001000000020000005F-0000000000000000000000000000000000000000.gz 000000010000000200000060-0000000000000000000000000000000000000000.gz 000000010000000200000061-0000000000000000000000000000000000000000 000000010000000200000062-0000000000000000000000000000000000000000.gz 000000010000000200000063-0000000000000000000000000000000000000000.gz 000000010000000200000064-0000000000000000000000000000000000000000 000000010000000200000065-0000000000000000000000000000000000000000.gz 000000010000000200000066-0000000000000000000000000000000000000000.gz 000000010000000200000067-0000000000000000000000000000000000000000 000000010000000200000068-0000000000000000000000000000000000000000.gz 000000010000000200000069-0000000000000000000000000000000000000000.gz 00000001000000020000006A-0000000000000000000000000000000000000000 00000001000000020000006B-0000000000000000000000000000000000000000.gz 00000001000000020000006C-0000000000000000000000000000000000000000.gz 00000001000000020000006D-0000000000000000000000000000000000000000 00000001000000020000006E-0000000000000000000000000000000000000000.gz 00000001000000020000006F-0000000000000000000000000000000000000000.gz 000000010000000200000070-0000000000000000000000000000000000000000 000000010000000200000071-0000000000000000000000000000000000000000.gz pgbackrest-release-2.24/test/expect/mock-expire-002.log000066400000000000000000003317331362531507100227150ustar00rootroot00000000000000run 002 - stanzaUpgrade, enc 0, s3 0 ==================================== * full backup: label = [BACKUP-FULL-1], start = 000000010000000000000000, stop = 000000010000000000000002 * incr backup: label = [BACKUP-INCR-1], prior = [BACKUP-FULL-1], start = 000000010000000000000006, stop = 000000010000000000000008 * full backup: label = [BACKUP-FULL-2], start = 00000001000000000000000C, stop = 00000001000000000000000E ==================================================================================================================================== + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000000","backup-archive-stop":"000000010000000000000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000006","backup-archive-stop":"000000010000000000000008","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-1]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000000000000C","backup-archive-stop":"00000001000000000000000E","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-1] [BACKUP-INCR-1] [BACKUP-FULL-2] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000000: 000000010000000000000000-0000000000000000000000000000000000000000.gz 000000010000000000000001-0000000000000000000000000000000000000000 000000010000000000000002-0000000000000000000000000000000000000000.gz 000000010000000000000003-0000000000000000000000000000000000000000.gz 000000010000000000000004-0000000000000000000000000000000000000000 000000010000000000000005-0000000000000000000000000000000000000000.gz 000000010000000000000006-0000000000000000000000000000000000000000.gz 000000010000000000000007-0000000000000000000000000000000000000000 000000010000000000000008-0000000000000000000000000000000000000000.gz 000000010000000000000009-0000000000000000000000000000000000000000.gz 00000001000000000000000A-0000000000000000000000000000000000000000 00000001000000000000000B-0000000000000000000000000000000000000000.gz 00000001000000000000000C-0000000000000000000000000000000000000000.gz 00000001000000000000000D-0000000000000000000000000000000000000000 00000001000000000000000E-0000000000000000000000000000000000000000.gz 00000001000000000000000F-0000000000000000000000000000000000000000.gz 000000010000000000000010-0000000000000000000000000000000000000000 000000010000000000000011-0000000000000000000000000000000000000000.gz Create backups in current db version > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config="[TEST_PATH]/db-master/pgbackrest.conf" --stanza=db --log-level-console=detail --repo1-retention-archive-type=diff expire ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-archive-type=diff --stanza=db P00 WARN: option repo1-retention-full is not set, the repository may run out of space HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum. P00 WARN: WAL segments will not be expired: option 'repo1-retention-archive-type=diff' but neither option 'repo1-retention-archive' nor option 'repo1-retention-diff' is set P00 INFO: option 'repo1-retention-archive' is not set - archive logs will not be expired P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000000","backup-archive-stop":"000000010000000000000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000006","backup-archive-stop":"000000010000000000000008","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-1]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000000000000C","backup-archive-stop":"00000001000000000000000E","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201204301 db-control-version=922 db-id=1 db-system-id=1000000000000000092 db-version="9.2" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-1] [BACKUP-INCR-1] [BACKUP-FULL-2] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000000: 000000010000000000000000-0000000000000000000000000000000000000000.gz 000000010000000000000001-0000000000000000000000000000000000000000 000000010000000000000002-0000000000000000000000000000000000000000.gz 000000010000000000000003-0000000000000000000000000000000000000000.gz 000000010000000000000004-0000000000000000000000000000000000000000 000000010000000000000005-0000000000000000000000000000000000000000.gz 000000010000000000000006-0000000000000000000000000000000000000000.gz 000000010000000000000007-0000000000000000000000000000000000000000 000000010000000000000008-0000000000000000000000000000000000000000.gz 000000010000000000000009-0000000000000000000000000000000000000000.gz 00000001000000000000000A-0000000000000000000000000000000000000000 00000001000000000000000B-0000000000000000000000000000000000000000.gz 00000001000000000000000C-0000000000000000000000000000000000000000.gz 00000001000000000000000D-0000000000000000000000000000000000000000 00000001000000000000000E-0000000000000000000000000000000000000000.gz 00000001000000000000000F-0000000000000000000000000000000000000000.gz 000000010000000000000010-0000000000000000000000000000000000000000 000000010000000000000011-0000000000000000000000000000000000000000.gz * full backup: label = [BACKUP-FULL-3], start = 000000010000000000000000, stop = 000000010000000000000002 * incr backup: label = [BACKUP-INCR-2], prior = [BACKUP-FULL-3], start = 000000010000000000000006, stop = 0000000100000000000000FB * full backup: label = [BACKUP-FULL-4], start = 0000000100000000000000FF, stop = 000000010000000100000001 * diff backup: label = [BACKUP-DIFF-1], prior = [BACKUP-FULL-4], start = 000000010000000100000005, stop = 000000010000000100000007 ==================================================================================================================================== + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000000","backup-archive-stop":"000000010000000000000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000006","backup-archive-stop":"000000010000000000000008","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-1]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000000000000C","backup-archive-stop":"00000001000000000000000E","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000000","backup-archive-stop":"000000010000000000000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":2,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000006","backup-archive-stop":"0000000100000000000000FB","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":2,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"0000000100000000000000FF","backup-archive-stop":"000000010000000100000001","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":2,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000100000005","backup-archive-stop":"000000010000000100000007","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-4]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":2,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201306121 db-control-version=937 db-id=2 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} 2={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-1] [BACKUP-INCR-1] [BACKUP-FULL-2] [BACKUP-FULL-3] [BACKUP-INCR-2] [BACKUP-FULL-4] [BACKUP-DIFF-1] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000000: 000000010000000000000000-0000000000000000000000000000000000000000.gz 000000010000000000000001-0000000000000000000000000000000000000000 000000010000000000000002-0000000000000000000000000000000000000000.gz 000000010000000000000003-0000000000000000000000000000000000000000.gz 000000010000000000000004-0000000000000000000000000000000000000000 000000010000000000000005-0000000000000000000000000000000000000000.gz 000000010000000000000006-0000000000000000000000000000000000000000.gz 000000010000000000000007-0000000000000000000000000000000000000000 000000010000000000000008-0000000000000000000000000000000000000000.gz 000000010000000000000009-0000000000000000000000000000000000000000.gz 00000001000000000000000A-0000000000000000000000000000000000000000 00000001000000000000000B-0000000000000000000000000000000000000000.gz 00000001000000000000000C-0000000000000000000000000000000000000000.gz 00000001000000000000000D-0000000000000000000000000000000000000000 00000001000000000000000E-0000000000000000000000000000000000000000.gz 00000001000000000000000F-0000000000000000000000000000000000000000.gz 000000010000000000000010-0000000000000000000000000000000000000000 000000010000000000000011-0000000000000000000000000000000000000000.gz [TEST_PATH]/db-master/repo/archive/db/9.3-2: [TEST_PATH]/db-master/repo/archive/db/9.3-2/0000000100000000: 000000010000000000000000-0000000000000000000000000000000000000000.gz 000000010000000000000001-0000000000000000000000000000000000000000 000000010000000000000002-0000000000000000000000000000000000000000.gz 000000010000000000000003-0000000000000000000000000000000000000000.gz 000000010000000000000004-0000000000000000000000000000000000000000 000000010000000000000005-0000000000000000000000000000000000000000.gz 000000010000000000000006-0000000000000000000000000000000000000000.gz 000000010000000000000007-0000000000000000000000000000000000000000 000000010000000000000008-0000000000000000000000000000000000000000.gz 000000010000000000000009-0000000000000000000000000000000000000000 00000001000000000000000A-0000000000000000000000000000000000000000.gz 00000001000000000000000B-0000000000000000000000000000000000000000 00000001000000000000000C-0000000000000000000000000000000000000000.gz 00000001000000000000000D-0000000000000000000000000000000000000000 00000001000000000000000E-0000000000000000000000000000000000000000.gz 00000001000000000000000F-0000000000000000000000000000000000000000 000000010000000000000010-0000000000000000000000000000000000000000.gz 000000010000000000000011-0000000000000000000000000000000000000000 000000010000000000000012-0000000000000000000000000000000000000000.gz 000000010000000000000013-0000000000000000000000000000000000000000 000000010000000000000014-0000000000000000000000000000000000000000.gz 000000010000000000000015-0000000000000000000000000000000000000000 000000010000000000000016-0000000000000000000000000000000000000000.gz 000000010000000000000017-0000000000000000000000000000000000000000 000000010000000000000018-0000000000000000000000000000000000000000.gz 000000010000000000000019-0000000000000000000000000000000000000000 00000001000000000000001A-0000000000000000000000000000000000000000.gz 00000001000000000000001B-0000000000000000000000000000000000000000 00000001000000000000001C-0000000000000000000000000000000000000000.gz 00000001000000000000001D-0000000000000000000000000000000000000000 00000001000000000000001E-0000000000000000000000000000000000000000.gz 00000001000000000000001F-0000000000000000000000000000000000000000 000000010000000000000020-0000000000000000000000000000000000000000.gz 000000010000000000000021-0000000000000000000000000000000000000000 000000010000000000000022-0000000000000000000000000000000000000000.gz 000000010000000000000023-0000000000000000000000000000000000000000 000000010000000000000024-0000000000000000000000000000000000000000.gz 000000010000000000000025-0000000000000000000000000000000000000000 000000010000000000000026-0000000000000000000000000000000000000000.gz 000000010000000000000027-0000000000000000000000000000000000000000 000000010000000000000028-0000000000000000000000000000000000000000.gz 000000010000000000000029-0000000000000000000000000000000000000000 00000001000000000000002A-0000000000000000000000000000000000000000.gz 00000001000000000000002B-0000000000000000000000000000000000000000 00000001000000000000002C-0000000000000000000000000000000000000000.gz 00000001000000000000002D-0000000000000000000000000000000000000000 00000001000000000000002E-0000000000000000000000000000000000000000.gz 00000001000000000000002F-0000000000000000000000000000000000000000 000000010000000000000030-0000000000000000000000000000000000000000.gz 000000010000000000000031-0000000000000000000000000000000000000000 000000010000000000000032-0000000000000000000000000000000000000000.gz 000000010000000000000033-0000000000000000000000000000000000000000 000000010000000000000034-0000000000000000000000000000000000000000.gz 000000010000000000000035-0000000000000000000000000000000000000000 000000010000000000000036-0000000000000000000000000000000000000000.gz 000000010000000000000037-0000000000000000000000000000000000000000 000000010000000000000038-0000000000000000000000000000000000000000.gz 000000010000000000000039-0000000000000000000000000000000000000000 00000001000000000000003A-0000000000000000000000000000000000000000.gz 00000001000000000000003B-0000000000000000000000000000000000000000 00000001000000000000003C-0000000000000000000000000000000000000000.gz 00000001000000000000003D-0000000000000000000000000000000000000000 00000001000000000000003E-0000000000000000000000000000000000000000.gz 00000001000000000000003F-0000000000000000000000000000000000000000 000000010000000000000040-0000000000000000000000000000000000000000.gz 000000010000000000000041-0000000000000000000000000000000000000000 000000010000000000000042-0000000000000000000000000000000000000000.gz 000000010000000000000043-0000000000000000000000000000000000000000 000000010000000000000044-0000000000000000000000000000000000000000.gz 000000010000000000000045-0000000000000000000000000000000000000000 000000010000000000000046-0000000000000000000000000000000000000000.gz 000000010000000000000047-0000000000000000000000000000000000000000 000000010000000000000048-0000000000000000000000000000000000000000.gz 000000010000000000000049-0000000000000000000000000000000000000000 00000001000000000000004A-0000000000000000000000000000000000000000.gz 00000001000000000000004B-0000000000000000000000000000000000000000 00000001000000000000004C-0000000000000000000000000000000000000000.gz 00000001000000000000004D-0000000000000000000000000000000000000000 00000001000000000000004E-0000000000000000000000000000000000000000.gz 00000001000000000000004F-0000000000000000000000000000000000000000 000000010000000000000050-0000000000000000000000000000000000000000.gz 000000010000000000000051-0000000000000000000000000000000000000000 000000010000000000000052-0000000000000000000000000000000000000000.gz 000000010000000000000053-0000000000000000000000000000000000000000 000000010000000000000054-0000000000000000000000000000000000000000.gz 000000010000000000000055-0000000000000000000000000000000000000000 000000010000000000000056-0000000000000000000000000000000000000000.gz 000000010000000000000057-0000000000000000000000000000000000000000 000000010000000000000058-0000000000000000000000000000000000000000.gz 000000010000000000000059-0000000000000000000000000000000000000000 00000001000000000000005A-0000000000000000000000000000000000000000.gz 00000001000000000000005B-0000000000000000000000000000000000000000 00000001000000000000005C-0000000000000000000000000000000000000000.gz 00000001000000000000005D-0000000000000000000000000000000000000000 00000001000000000000005E-0000000000000000000000000000000000000000.gz 00000001000000000000005F-0000000000000000000000000000000000000000 000000010000000000000060-0000000000000000000000000000000000000000.gz 000000010000000000000061-0000000000000000000000000000000000000000 000000010000000000000062-0000000000000000000000000000000000000000.gz 000000010000000000000063-0000000000000000000000000000000000000000 000000010000000000000064-0000000000000000000000000000000000000000.gz 000000010000000000000065-0000000000000000000000000000000000000000 000000010000000000000066-0000000000000000000000000000000000000000.gz 000000010000000000000067-0000000000000000000000000000000000000000 000000010000000000000068-0000000000000000000000000000000000000000.gz 000000010000000000000069-0000000000000000000000000000000000000000 00000001000000000000006A-0000000000000000000000000000000000000000.gz 00000001000000000000006B-0000000000000000000000000000000000000000 00000001000000000000006C-0000000000000000000000000000000000000000.gz 00000001000000000000006D-0000000000000000000000000000000000000000 00000001000000000000006E-0000000000000000000000000000000000000000.gz 00000001000000000000006F-0000000000000000000000000000000000000000 000000010000000000000070-0000000000000000000000000000000000000000.gz 000000010000000000000071-0000000000000000000000000000000000000000 000000010000000000000072-0000000000000000000000000000000000000000.gz 000000010000000000000073-0000000000000000000000000000000000000000 000000010000000000000074-0000000000000000000000000000000000000000.gz 000000010000000000000075-0000000000000000000000000000000000000000 000000010000000000000076-0000000000000000000000000000000000000000.gz 000000010000000000000077-0000000000000000000000000000000000000000 000000010000000000000078-0000000000000000000000000000000000000000.gz 000000010000000000000079-0000000000000000000000000000000000000000 00000001000000000000007A-0000000000000000000000000000000000000000.gz 00000001000000000000007B-0000000000000000000000000000000000000000 00000001000000000000007C-0000000000000000000000000000000000000000.gz 00000001000000000000007D-0000000000000000000000000000000000000000 00000001000000000000007E-0000000000000000000000000000000000000000.gz 00000001000000000000007F-0000000000000000000000000000000000000000 000000010000000000000080-0000000000000000000000000000000000000000.gz 000000010000000000000081-0000000000000000000000000000000000000000 000000010000000000000082-0000000000000000000000000000000000000000.gz 000000010000000000000083-0000000000000000000000000000000000000000 000000010000000000000084-0000000000000000000000000000000000000000.gz 000000010000000000000085-0000000000000000000000000000000000000000 000000010000000000000086-0000000000000000000000000000000000000000.gz 000000010000000000000087-0000000000000000000000000000000000000000 000000010000000000000088-0000000000000000000000000000000000000000.gz 000000010000000000000089-0000000000000000000000000000000000000000 00000001000000000000008A-0000000000000000000000000000000000000000.gz 00000001000000000000008B-0000000000000000000000000000000000000000 00000001000000000000008C-0000000000000000000000000000000000000000.gz 00000001000000000000008D-0000000000000000000000000000000000000000 00000001000000000000008E-0000000000000000000000000000000000000000.gz 00000001000000000000008F-0000000000000000000000000000000000000000 000000010000000000000090-0000000000000000000000000000000000000000.gz 000000010000000000000091-0000000000000000000000000000000000000000 000000010000000000000092-0000000000000000000000000000000000000000.gz 000000010000000000000093-0000000000000000000000000000000000000000 000000010000000000000094-0000000000000000000000000000000000000000.gz 000000010000000000000095-0000000000000000000000000000000000000000 000000010000000000000096-0000000000000000000000000000000000000000.gz 000000010000000000000097-0000000000000000000000000000000000000000 000000010000000000000098-0000000000000000000000000000000000000000.gz 000000010000000000000099-0000000000000000000000000000000000000000 00000001000000000000009A-0000000000000000000000000000000000000000.gz 00000001000000000000009B-0000000000000000000000000000000000000000 00000001000000000000009C-0000000000000000000000000000000000000000.gz 00000001000000000000009D-0000000000000000000000000000000000000000 00000001000000000000009E-0000000000000000000000000000000000000000.gz 00000001000000000000009F-0000000000000000000000000000000000000000 0000000100000000000000A0-0000000000000000000000000000000000000000.gz 0000000100000000000000A1-0000000000000000000000000000000000000000 0000000100000000000000A2-0000000000000000000000000000000000000000.gz 0000000100000000000000A3-0000000000000000000000000000000000000000 0000000100000000000000A4-0000000000000000000000000000000000000000.gz 0000000100000000000000A5-0000000000000000000000000000000000000000 0000000100000000000000A6-0000000000000000000000000000000000000000.gz 0000000100000000000000A7-0000000000000000000000000000000000000000 0000000100000000000000A8-0000000000000000000000000000000000000000.gz 0000000100000000000000A9-0000000000000000000000000000000000000000 0000000100000000000000AA-0000000000000000000000000000000000000000.gz 0000000100000000000000AB-0000000000000000000000000000000000000000 0000000100000000000000AC-0000000000000000000000000000000000000000.gz 0000000100000000000000AD-0000000000000000000000000000000000000000 0000000100000000000000AE-0000000000000000000000000000000000000000.gz 0000000100000000000000AF-0000000000000000000000000000000000000000 0000000100000000000000B0-0000000000000000000000000000000000000000.gz 0000000100000000000000B1-0000000000000000000000000000000000000000 0000000100000000000000B2-0000000000000000000000000000000000000000.gz 0000000100000000000000B3-0000000000000000000000000000000000000000 0000000100000000000000B4-0000000000000000000000000000000000000000.gz 0000000100000000000000B5-0000000000000000000000000000000000000000 0000000100000000000000B6-0000000000000000000000000000000000000000.gz 0000000100000000000000B7-0000000000000000000000000000000000000000 0000000100000000000000B8-0000000000000000000000000000000000000000.gz 0000000100000000000000B9-0000000000000000000000000000000000000000 0000000100000000000000BA-0000000000000000000000000000000000000000.gz 0000000100000000000000BB-0000000000000000000000000000000000000000 0000000100000000000000BC-0000000000000000000000000000000000000000.gz 0000000100000000000000BD-0000000000000000000000000000000000000000 0000000100000000000000BE-0000000000000000000000000000000000000000.gz 0000000100000000000000BF-0000000000000000000000000000000000000000 0000000100000000000000C0-0000000000000000000000000000000000000000.gz 0000000100000000000000C1-0000000000000000000000000000000000000000 0000000100000000000000C2-0000000000000000000000000000000000000000.gz 0000000100000000000000C3-0000000000000000000000000000000000000000 0000000100000000000000C4-0000000000000000000000000000000000000000.gz 0000000100000000000000C5-0000000000000000000000000000000000000000 0000000100000000000000C6-0000000000000000000000000000000000000000.gz 0000000100000000000000C7-0000000000000000000000000000000000000000 0000000100000000000000C8-0000000000000000000000000000000000000000.gz 0000000100000000000000C9-0000000000000000000000000000000000000000 0000000100000000000000CA-0000000000000000000000000000000000000000.gz 0000000100000000000000CB-0000000000000000000000000000000000000000 0000000100000000000000CC-0000000000000000000000000000000000000000.gz 0000000100000000000000CD-0000000000000000000000000000000000000000 0000000100000000000000CE-0000000000000000000000000000000000000000.gz 0000000100000000000000CF-0000000000000000000000000000000000000000 0000000100000000000000D0-0000000000000000000000000000000000000000.gz 0000000100000000000000D1-0000000000000000000000000000000000000000 0000000100000000000000D2-0000000000000000000000000000000000000000.gz 0000000100000000000000D3-0000000000000000000000000000000000000000 0000000100000000000000D4-0000000000000000000000000000000000000000.gz 0000000100000000000000D5-0000000000000000000000000000000000000000 0000000100000000000000D6-0000000000000000000000000000000000000000.gz 0000000100000000000000D7-0000000000000000000000000000000000000000 0000000100000000000000D8-0000000000000000000000000000000000000000.gz 0000000100000000000000D9-0000000000000000000000000000000000000000 0000000100000000000000DA-0000000000000000000000000000000000000000.gz 0000000100000000000000DB-0000000000000000000000000000000000000000 0000000100000000000000DC-0000000000000000000000000000000000000000.gz 0000000100000000000000DD-0000000000000000000000000000000000000000 0000000100000000000000DE-0000000000000000000000000000000000000000.gz 0000000100000000000000DF-0000000000000000000000000000000000000000 0000000100000000000000E0-0000000000000000000000000000000000000000.gz 0000000100000000000000E1-0000000000000000000000000000000000000000 0000000100000000000000E2-0000000000000000000000000000000000000000.gz 0000000100000000000000E3-0000000000000000000000000000000000000000 0000000100000000000000E4-0000000000000000000000000000000000000000.gz 0000000100000000000000E5-0000000000000000000000000000000000000000 0000000100000000000000E6-0000000000000000000000000000000000000000.gz 0000000100000000000000E7-0000000000000000000000000000000000000000 0000000100000000000000E8-0000000000000000000000000000000000000000.gz 0000000100000000000000E9-0000000000000000000000000000000000000000 0000000100000000000000EA-0000000000000000000000000000000000000000.gz 0000000100000000000000EB-0000000000000000000000000000000000000000 0000000100000000000000EC-0000000000000000000000000000000000000000.gz 0000000100000000000000ED-0000000000000000000000000000000000000000 0000000100000000000000EE-0000000000000000000000000000000000000000.gz 0000000100000000000000EF-0000000000000000000000000000000000000000 0000000100000000000000F0-0000000000000000000000000000000000000000.gz 0000000100000000000000F1-0000000000000000000000000000000000000000 0000000100000000000000F2-0000000000000000000000000000000000000000.gz 0000000100000000000000F3-0000000000000000000000000000000000000000 0000000100000000000000F4-0000000000000000000000000000000000000000.gz 0000000100000000000000F5-0000000000000000000000000000000000000000 0000000100000000000000F6-0000000000000000000000000000000000000000.gz 0000000100000000000000F7-0000000000000000000000000000000000000000 0000000100000000000000F8-0000000000000000000000000000000000000000.gz 0000000100000000000000F9-0000000000000000000000000000000000000000 0000000100000000000000FA-0000000000000000000000000000000000000000.gz 0000000100000000000000FB-0000000000000000000000000000000000000000 0000000100000000000000FC-0000000000000000000000000000000000000000.gz 0000000100000000000000FD-0000000000000000000000000000000000000000 0000000100000000000000FE-0000000000000000000000000000000000000000.gz 0000000100000000000000FF-0000000000000000000000000000000000000000.gz [TEST_PATH]/db-master/repo/archive/db/9.3-2/0000000100000001: 000000010000000100000000-0000000000000000000000000000000000000000 000000010000000100000001-0000000000000000000000000000000000000000.gz 000000010000000100000002-0000000000000000000000000000000000000000.gz 000000010000000100000003-0000000000000000000000000000000000000000 000000010000000100000004-0000000000000000000000000000000000000000.gz 000000010000000100000005-0000000000000000000000000000000000000000.gz 000000010000000100000006-0000000000000000000000000000000000000000 000000010000000100000007-0000000000000000000000000000000000000000.gz 000000010000000100000008-0000000000000000000000000000000000000000.gz 000000010000000100000009-0000000000000000000000000000000000000000 00000001000000010000000A-0000000000000000000000000000000000000000.gz Upgrade stanza and expire only earliest db backup and archive > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config="[TEST_PATH]/db-master/pgbackrest.conf" --stanza=db --log-level-console=detail --repo1-retention-full=3 --repo1-retention-archive-type=full expire ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-archive-type=full --repo1-retention-full=3 --stanza=db P00 INFO: expire full backup set: [BACKUP-FULL-1], [BACKUP-INCR-1] P00 INFO: remove expired backup [BACKUP-INCR-1] P00 INFO: remove expired backup [BACKUP-FULL-1] P00 DETAIL: archive retention on backup [BACKUP-FULL-2], archiveId = 9.2-1, start = 00000001000000000000000C P00 DETAIL: remove archive: archiveId = 9.2-1, start = 000000010000000000000000, stop = 00000001000000000000000B P00 DETAIL: archive retention on backup [BACKUP-FULL-3], archiveId = 9.3-2, start = 000000010000000000000000 P00 DETAIL: no archive to remove, archiveId = 9.3-2 P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000000000000C","backup-archive-stop":"00000001000000000000000E","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000000","backup-archive-stop":"000000010000000000000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":2,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000006","backup-archive-stop":"0000000100000000000000FB","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":2,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"0000000100000000000000FF","backup-archive-stop":"000000010000000100000001","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":2,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000100000005","backup-archive-stop":"000000010000000100000007","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-4]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":2,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201306121 db-control-version=937 db-id=2 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} 2={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-2] [BACKUP-FULL-3] [BACKUP-INCR-2] [BACKUP-FULL-4] [BACKUP-DIFF-1] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000000: 00000001000000000000000C-0000000000000000000000000000000000000000.gz 00000001000000000000000D-0000000000000000000000000000000000000000 00000001000000000000000E-0000000000000000000000000000000000000000.gz 00000001000000000000000F-0000000000000000000000000000000000000000.gz 000000010000000000000010-0000000000000000000000000000000000000000 000000010000000000000011-0000000000000000000000000000000000000000.gz [TEST_PATH]/db-master/repo/archive/db/9.3-2: [TEST_PATH]/db-master/repo/archive/db/9.3-2/0000000100000000: 000000010000000000000000-0000000000000000000000000000000000000000.gz 000000010000000000000001-0000000000000000000000000000000000000000 000000010000000000000002-0000000000000000000000000000000000000000.gz 000000010000000000000003-0000000000000000000000000000000000000000.gz 000000010000000000000004-0000000000000000000000000000000000000000 000000010000000000000005-0000000000000000000000000000000000000000.gz 000000010000000000000006-0000000000000000000000000000000000000000.gz 000000010000000000000007-0000000000000000000000000000000000000000 000000010000000000000008-0000000000000000000000000000000000000000.gz 000000010000000000000009-0000000000000000000000000000000000000000 00000001000000000000000A-0000000000000000000000000000000000000000.gz 00000001000000000000000B-0000000000000000000000000000000000000000 00000001000000000000000C-0000000000000000000000000000000000000000.gz 00000001000000000000000D-0000000000000000000000000000000000000000 00000001000000000000000E-0000000000000000000000000000000000000000.gz 00000001000000000000000F-0000000000000000000000000000000000000000 000000010000000000000010-0000000000000000000000000000000000000000.gz 000000010000000000000011-0000000000000000000000000000000000000000 000000010000000000000012-0000000000000000000000000000000000000000.gz 000000010000000000000013-0000000000000000000000000000000000000000 000000010000000000000014-0000000000000000000000000000000000000000.gz 000000010000000000000015-0000000000000000000000000000000000000000 000000010000000000000016-0000000000000000000000000000000000000000.gz 000000010000000000000017-0000000000000000000000000000000000000000 000000010000000000000018-0000000000000000000000000000000000000000.gz 000000010000000000000019-0000000000000000000000000000000000000000 00000001000000000000001A-0000000000000000000000000000000000000000.gz 00000001000000000000001B-0000000000000000000000000000000000000000 00000001000000000000001C-0000000000000000000000000000000000000000.gz 00000001000000000000001D-0000000000000000000000000000000000000000 00000001000000000000001E-0000000000000000000000000000000000000000.gz 00000001000000000000001F-0000000000000000000000000000000000000000 000000010000000000000020-0000000000000000000000000000000000000000.gz 000000010000000000000021-0000000000000000000000000000000000000000 000000010000000000000022-0000000000000000000000000000000000000000.gz 000000010000000000000023-0000000000000000000000000000000000000000 000000010000000000000024-0000000000000000000000000000000000000000.gz 000000010000000000000025-0000000000000000000000000000000000000000 000000010000000000000026-0000000000000000000000000000000000000000.gz 000000010000000000000027-0000000000000000000000000000000000000000 000000010000000000000028-0000000000000000000000000000000000000000.gz 000000010000000000000029-0000000000000000000000000000000000000000 00000001000000000000002A-0000000000000000000000000000000000000000.gz 00000001000000000000002B-0000000000000000000000000000000000000000 00000001000000000000002C-0000000000000000000000000000000000000000.gz 00000001000000000000002D-0000000000000000000000000000000000000000 00000001000000000000002E-0000000000000000000000000000000000000000.gz 00000001000000000000002F-0000000000000000000000000000000000000000 000000010000000000000030-0000000000000000000000000000000000000000.gz 000000010000000000000031-0000000000000000000000000000000000000000 000000010000000000000032-0000000000000000000000000000000000000000.gz 000000010000000000000033-0000000000000000000000000000000000000000 000000010000000000000034-0000000000000000000000000000000000000000.gz 000000010000000000000035-0000000000000000000000000000000000000000 000000010000000000000036-0000000000000000000000000000000000000000.gz 000000010000000000000037-0000000000000000000000000000000000000000 000000010000000000000038-0000000000000000000000000000000000000000.gz 000000010000000000000039-0000000000000000000000000000000000000000 00000001000000000000003A-0000000000000000000000000000000000000000.gz 00000001000000000000003B-0000000000000000000000000000000000000000 00000001000000000000003C-0000000000000000000000000000000000000000.gz 00000001000000000000003D-0000000000000000000000000000000000000000 00000001000000000000003E-0000000000000000000000000000000000000000.gz 00000001000000000000003F-0000000000000000000000000000000000000000 000000010000000000000040-0000000000000000000000000000000000000000.gz 000000010000000000000041-0000000000000000000000000000000000000000 000000010000000000000042-0000000000000000000000000000000000000000.gz 000000010000000000000043-0000000000000000000000000000000000000000 000000010000000000000044-0000000000000000000000000000000000000000.gz 000000010000000000000045-0000000000000000000000000000000000000000 000000010000000000000046-0000000000000000000000000000000000000000.gz 000000010000000000000047-0000000000000000000000000000000000000000 000000010000000000000048-0000000000000000000000000000000000000000.gz 000000010000000000000049-0000000000000000000000000000000000000000 00000001000000000000004A-0000000000000000000000000000000000000000.gz 00000001000000000000004B-0000000000000000000000000000000000000000 00000001000000000000004C-0000000000000000000000000000000000000000.gz 00000001000000000000004D-0000000000000000000000000000000000000000 00000001000000000000004E-0000000000000000000000000000000000000000.gz 00000001000000000000004F-0000000000000000000000000000000000000000 000000010000000000000050-0000000000000000000000000000000000000000.gz 000000010000000000000051-0000000000000000000000000000000000000000 000000010000000000000052-0000000000000000000000000000000000000000.gz 000000010000000000000053-0000000000000000000000000000000000000000 000000010000000000000054-0000000000000000000000000000000000000000.gz 000000010000000000000055-0000000000000000000000000000000000000000 000000010000000000000056-0000000000000000000000000000000000000000.gz 000000010000000000000057-0000000000000000000000000000000000000000 000000010000000000000058-0000000000000000000000000000000000000000.gz 000000010000000000000059-0000000000000000000000000000000000000000 00000001000000000000005A-0000000000000000000000000000000000000000.gz 00000001000000000000005B-0000000000000000000000000000000000000000 00000001000000000000005C-0000000000000000000000000000000000000000.gz 00000001000000000000005D-0000000000000000000000000000000000000000 00000001000000000000005E-0000000000000000000000000000000000000000.gz 00000001000000000000005F-0000000000000000000000000000000000000000 000000010000000000000060-0000000000000000000000000000000000000000.gz 000000010000000000000061-0000000000000000000000000000000000000000 000000010000000000000062-0000000000000000000000000000000000000000.gz 000000010000000000000063-0000000000000000000000000000000000000000 000000010000000000000064-0000000000000000000000000000000000000000.gz 000000010000000000000065-0000000000000000000000000000000000000000 000000010000000000000066-0000000000000000000000000000000000000000.gz 000000010000000000000067-0000000000000000000000000000000000000000 000000010000000000000068-0000000000000000000000000000000000000000.gz 000000010000000000000069-0000000000000000000000000000000000000000 00000001000000000000006A-0000000000000000000000000000000000000000.gz 00000001000000000000006B-0000000000000000000000000000000000000000 00000001000000000000006C-0000000000000000000000000000000000000000.gz 00000001000000000000006D-0000000000000000000000000000000000000000 00000001000000000000006E-0000000000000000000000000000000000000000.gz 00000001000000000000006F-0000000000000000000000000000000000000000 000000010000000000000070-0000000000000000000000000000000000000000.gz 000000010000000000000071-0000000000000000000000000000000000000000 000000010000000000000072-0000000000000000000000000000000000000000.gz 000000010000000000000073-0000000000000000000000000000000000000000 000000010000000000000074-0000000000000000000000000000000000000000.gz 000000010000000000000075-0000000000000000000000000000000000000000 000000010000000000000076-0000000000000000000000000000000000000000.gz 000000010000000000000077-0000000000000000000000000000000000000000 000000010000000000000078-0000000000000000000000000000000000000000.gz 000000010000000000000079-0000000000000000000000000000000000000000 00000001000000000000007A-0000000000000000000000000000000000000000.gz 00000001000000000000007B-0000000000000000000000000000000000000000 00000001000000000000007C-0000000000000000000000000000000000000000.gz 00000001000000000000007D-0000000000000000000000000000000000000000 00000001000000000000007E-0000000000000000000000000000000000000000.gz 00000001000000000000007F-0000000000000000000000000000000000000000 000000010000000000000080-0000000000000000000000000000000000000000.gz 000000010000000000000081-0000000000000000000000000000000000000000 000000010000000000000082-0000000000000000000000000000000000000000.gz 000000010000000000000083-0000000000000000000000000000000000000000 000000010000000000000084-0000000000000000000000000000000000000000.gz 000000010000000000000085-0000000000000000000000000000000000000000 000000010000000000000086-0000000000000000000000000000000000000000.gz 000000010000000000000087-0000000000000000000000000000000000000000 000000010000000000000088-0000000000000000000000000000000000000000.gz 000000010000000000000089-0000000000000000000000000000000000000000 00000001000000000000008A-0000000000000000000000000000000000000000.gz 00000001000000000000008B-0000000000000000000000000000000000000000 00000001000000000000008C-0000000000000000000000000000000000000000.gz 00000001000000000000008D-0000000000000000000000000000000000000000 00000001000000000000008E-0000000000000000000000000000000000000000.gz 00000001000000000000008F-0000000000000000000000000000000000000000 000000010000000000000090-0000000000000000000000000000000000000000.gz 000000010000000000000091-0000000000000000000000000000000000000000 000000010000000000000092-0000000000000000000000000000000000000000.gz 000000010000000000000093-0000000000000000000000000000000000000000 000000010000000000000094-0000000000000000000000000000000000000000.gz 000000010000000000000095-0000000000000000000000000000000000000000 000000010000000000000096-0000000000000000000000000000000000000000.gz 000000010000000000000097-0000000000000000000000000000000000000000 000000010000000000000098-0000000000000000000000000000000000000000.gz 000000010000000000000099-0000000000000000000000000000000000000000 00000001000000000000009A-0000000000000000000000000000000000000000.gz 00000001000000000000009B-0000000000000000000000000000000000000000 00000001000000000000009C-0000000000000000000000000000000000000000.gz 00000001000000000000009D-0000000000000000000000000000000000000000 00000001000000000000009E-0000000000000000000000000000000000000000.gz 00000001000000000000009F-0000000000000000000000000000000000000000 0000000100000000000000A0-0000000000000000000000000000000000000000.gz 0000000100000000000000A1-0000000000000000000000000000000000000000 0000000100000000000000A2-0000000000000000000000000000000000000000.gz 0000000100000000000000A3-0000000000000000000000000000000000000000 0000000100000000000000A4-0000000000000000000000000000000000000000.gz 0000000100000000000000A5-0000000000000000000000000000000000000000 0000000100000000000000A6-0000000000000000000000000000000000000000.gz 0000000100000000000000A7-0000000000000000000000000000000000000000 0000000100000000000000A8-0000000000000000000000000000000000000000.gz 0000000100000000000000A9-0000000000000000000000000000000000000000 0000000100000000000000AA-0000000000000000000000000000000000000000.gz 0000000100000000000000AB-0000000000000000000000000000000000000000 0000000100000000000000AC-0000000000000000000000000000000000000000.gz 0000000100000000000000AD-0000000000000000000000000000000000000000 0000000100000000000000AE-0000000000000000000000000000000000000000.gz 0000000100000000000000AF-0000000000000000000000000000000000000000 0000000100000000000000B0-0000000000000000000000000000000000000000.gz 0000000100000000000000B1-0000000000000000000000000000000000000000 0000000100000000000000B2-0000000000000000000000000000000000000000.gz 0000000100000000000000B3-0000000000000000000000000000000000000000 0000000100000000000000B4-0000000000000000000000000000000000000000.gz 0000000100000000000000B5-0000000000000000000000000000000000000000 0000000100000000000000B6-0000000000000000000000000000000000000000.gz 0000000100000000000000B7-0000000000000000000000000000000000000000 0000000100000000000000B8-0000000000000000000000000000000000000000.gz 0000000100000000000000B9-0000000000000000000000000000000000000000 0000000100000000000000BA-0000000000000000000000000000000000000000.gz 0000000100000000000000BB-0000000000000000000000000000000000000000 0000000100000000000000BC-0000000000000000000000000000000000000000.gz 0000000100000000000000BD-0000000000000000000000000000000000000000 0000000100000000000000BE-0000000000000000000000000000000000000000.gz 0000000100000000000000BF-0000000000000000000000000000000000000000 0000000100000000000000C0-0000000000000000000000000000000000000000.gz 0000000100000000000000C1-0000000000000000000000000000000000000000 0000000100000000000000C2-0000000000000000000000000000000000000000.gz 0000000100000000000000C3-0000000000000000000000000000000000000000 0000000100000000000000C4-0000000000000000000000000000000000000000.gz 0000000100000000000000C5-0000000000000000000000000000000000000000 0000000100000000000000C6-0000000000000000000000000000000000000000.gz 0000000100000000000000C7-0000000000000000000000000000000000000000 0000000100000000000000C8-0000000000000000000000000000000000000000.gz 0000000100000000000000C9-0000000000000000000000000000000000000000 0000000100000000000000CA-0000000000000000000000000000000000000000.gz 0000000100000000000000CB-0000000000000000000000000000000000000000 0000000100000000000000CC-0000000000000000000000000000000000000000.gz 0000000100000000000000CD-0000000000000000000000000000000000000000 0000000100000000000000CE-0000000000000000000000000000000000000000.gz 0000000100000000000000CF-0000000000000000000000000000000000000000 0000000100000000000000D0-0000000000000000000000000000000000000000.gz 0000000100000000000000D1-0000000000000000000000000000000000000000 0000000100000000000000D2-0000000000000000000000000000000000000000.gz 0000000100000000000000D3-0000000000000000000000000000000000000000 0000000100000000000000D4-0000000000000000000000000000000000000000.gz 0000000100000000000000D5-0000000000000000000000000000000000000000 0000000100000000000000D6-0000000000000000000000000000000000000000.gz 0000000100000000000000D7-0000000000000000000000000000000000000000 0000000100000000000000D8-0000000000000000000000000000000000000000.gz 0000000100000000000000D9-0000000000000000000000000000000000000000 0000000100000000000000DA-0000000000000000000000000000000000000000.gz 0000000100000000000000DB-0000000000000000000000000000000000000000 0000000100000000000000DC-0000000000000000000000000000000000000000.gz 0000000100000000000000DD-0000000000000000000000000000000000000000 0000000100000000000000DE-0000000000000000000000000000000000000000.gz 0000000100000000000000DF-0000000000000000000000000000000000000000 0000000100000000000000E0-0000000000000000000000000000000000000000.gz 0000000100000000000000E1-0000000000000000000000000000000000000000 0000000100000000000000E2-0000000000000000000000000000000000000000.gz 0000000100000000000000E3-0000000000000000000000000000000000000000 0000000100000000000000E4-0000000000000000000000000000000000000000.gz 0000000100000000000000E5-0000000000000000000000000000000000000000 0000000100000000000000E6-0000000000000000000000000000000000000000.gz 0000000100000000000000E7-0000000000000000000000000000000000000000 0000000100000000000000E8-0000000000000000000000000000000000000000.gz 0000000100000000000000E9-0000000000000000000000000000000000000000 0000000100000000000000EA-0000000000000000000000000000000000000000.gz 0000000100000000000000EB-0000000000000000000000000000000000000000 0000000100000000000000EC-0000000000000000000000000000000000000000.gz 0000000100000000000000ED-0000000000000000000000000000000000000000 0000000100000000000000EE-0000000000000000000000000000000000000000.gz 0000000100000000000000EF-0000000000000000000000000000000000000000 0000000100000000000000F0-0000000000000000000000000000000000000000.gz 0000000100000000000000F1-0000000000000000000000000000000000000000 0000000100000000000000F2-0000000000000000000000000000000000000000.gz 0000000100000000000000F3-0000000000000000000000000000000000000000 0000000100000000000000F4-0000000000000000000000000000000000000000.gz 0000000100000000000000F5-0000000000000000000000000000000000000000 0000000100000000000000F6-0000000000000000000000000000000000000000.gz 0000000100000000000000F7-0000000000000000000000000000000000000000 0000000100000000000000F8-0000000000000000000000000000000000000000.gz 0000000100000000000000F9-0000000000000000000000000000000000000000 0000000100000000000000FA-0000000000000000000000000000000000000000.gz 0000000100000000000000FB-0000000000000000000000000000000000000000 0000000100000000000000FC-0000000000000000000000000000000000000000.gz 0000000100000000000000FD-0000000000000000000000000000000000000000 0000000100000000000000FE-0000000000000000000000000000000000000000.gz 0000000100000000000000FF-0000000000000000000000000000000000000000.gz [TEST_PATH]/db-master/repo/archive/db/9.3-2/0000000100000001: 000000010000000100000000-0000000000000000000000000000000000000000 000000010000000100000001-0000000000000000000000000000000000000000.gz 000000010000000100000002-0000000000000000000000000000000000000000.gz 000000010000000100000003-0000000000000000000000000000000000000000 000000010000000100000004-0000000000000000000000000000000000000000.gz 000000010000000100000005-0000000000000000000000000000000000000000.gz 000000010000000100000006-0000000000000000000000000000000000000000 000000010000000100000007-0000000000000000000000000000000000000000.gz 000000010000000100000008-0000000000000000000000000000000000000000.gz 000000010000000100000009-0000000000000000000000000000000000000000 00000001000000010000000A-0000000000000000000000000000000000000000.gz * full backup: label = [BACKUP-FULL-5], start = 000000010000000000000000, stop = 000000010000000000000002 ==================================================================================================================================== + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"00000001000000000000000C","backup-archive-stop":"00000001000000000000000E","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000000","backup-archive-stop":"000000010000000000000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":2,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000006","backup-archive-stop":"0000000100000000000000FB","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":2,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"0000000100000000000000FF","backup-archive-stop":"000000010000000100000001","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":2,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000100000005","backup-archive-stop":"000000010000000100000007","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-4]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":2,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000000","backup-archive-stop":"000000010000000000000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":3,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201707211 db-control-version=1002 db-id=3 db-system-id=1000000000000000100 db-version="10" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} 2={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} 3={"db-catalog-version":201707211,"db-control-version":1002,"db-system-id":1000000000000000100,"db-version":"10"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-2] [BACKUP-FULL-3] [BACKUP-INCR-2] [BACKUP-FULL-4] [BACKUP-DIFF-1] [BACKUP-FULL-5] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/10-3: [TEST_PATH]/db-master/repo/archive/db/10-3/0000000100000000: 000000010000000000000000-0000000000000000000000000000000000000000.gz 000000010000000000000001-0000000000000000000000000000000000000000 000000010000000000000002-0000000000000000000000000000000000000000.gz 000000010000000000000003-0000000000000000000000000000000000000000.gz 000000010000000000000004-0000000000000000000000000000000000000000 000000010000000000000005-0000000000000000000000000000000000000000.gz [TEST_PATH]/db-master/repo/archive/db/9.2-1: [TEST_PATH]/db-master/repo/archive/db/9.2-1/0000000100000000: 00000001000000000000000C-0000000000000000000000000000000000000000.gz 00000001000000000000000D-0000000000000000000000000000000000000000 00000001000000000000000E-0000000000000000000000000000000000000000.gz 00000001000000000000000F-0000000000000000000000000000000000000000.gz 000000010000000000000010-0000000000000000000000000000000000000000 000000010000000000000011-0000000000000000000000000000000000000000.gz [TEST_PATH]/db-master/repo/archive/db/9.3-2: [TEST_PATH]/db-master/repo/archive/db/9.3-2/0000000100000000: 000000010000000000000000-0000000000000000000000000000000000000000.gz 000000010000000000000001-0000000000000000000000000000000000000000 000000010000000000000002-0000000000000000000000000000000000000000.gz 000000010000000000000003-0000000000000000000000000000000000000000.gz 000000010000000000000004-0000000000000000000000000000000000000000 000000010000000000000005-0000000000000000000000000000000000000000.gz 000000010000000000000006-0000000000000000000000000000000000000000.gz 000000010000000000000007-0000000000000000000000000000000000000000 000000010000000000000008-0000000000000000000000000000000000000000.gz 000000010000000000000009-0000000000000000000000000000000000000000 00000001000000000000000A-0000000000000000000000000000000000000000.gz 00000001000000000000000B-0000000000000000000000000000000000000000 00000001000000000000000C-0000000000000000000000000000000000000000.gz 00000001000000000000000D-0000000000000000000000000000000000000000 00000001000000000000000E-0000000000000000000000000000000000000000.gz 00000001000000000000000F-0000000000000000000000000000000000000000 000000010000000000000010-0000000000000000000000000000000000000000.gz 000000010000000000000011-0000000000000000000000000000000000000000 000000010000000000000012-0000000000000000000000000000000000000000.gz 000000010000000000000013-0000000000000000000000000000000000000000 000000010000000000000014-0000000000000000000000000000000000000000.gz 000000010000000000000015-0000000000000000000000000000000000000000 000000010000000000000016-0000000000000000000000000000000000000000.gz 000000010000000000000017-0000000000000000000000000000000000000000 000000010000000000000018-0000000000000000000000000000000000000000.gz 000000010000000000000019-0000000000000000000000000000000000000000 00000001000000000000001A-0000000000000000000000000000000000000000.gz 00000001000000000000001B-0000000000000000000000000000000000000000 00000001000000000000001C-0000000000000000000000000000000000000000.gz 00000001000000000000001D-0000000000000000000000000000000000000000 00000001000000000000001E-0000000000000000000000000000000000000000.gz 00000001000000000000001F-0000000000000000000000000000000000000000 000000010000000000000020-0000000000000000000000000000000000000000.gz 000000010000000000000021-0000000000000000000000000000000000000000 000000010000000000000022-0000000000000000000000000000000000000000.gz 000000010000000000000023-0000000000000000000000000000000000000000 000000010000000000000024-0000000000000000000000000000000000000000.gz 000000010000000000000025-0000000000000000000000000000000000000000 000000010000000000000026-0000000000000000000000000000000000000000.gz 000000010000000000000027-0000000000000000000000000000000000000000 000000010000000000000028-0000000000000000000000000000000000000000.gz 000000010000000000000029-0000000000000000000000000000000000000000 00000001000000000000002A-0000000000000000000000000000000000000000.gz 00000001000000000000002B-0000000000000000000000000000000000000000 00000001000000000000002C-0000000000000000000000000000000000000000.gz 00000001000000000000002D-0000000000000000000000000000000000000000 00000001000000000000002E-0000000000000000000000000000000000000000.gz 00000001000000000000002F-0000000000000000000000000000000000000000 000000010000000000000030-0000000000000000000000000000000000000000.gz 000000010000000000000031-0000000000000000000000000000000000000000 000000010000000000000032-0000000000000000000000000000000000000000.gz 000000010000000000000033-0000000000000000000000000000000000000000 000000010000000000000034-0000000000000000000000000000000000000000.gz 000000010000000000000035-0000000000000000000000000000000000000000 000000010000000000000036-0000000000000000000000000000000000000000.gz 000000010000000000000037-0000000000000000000000000000000000000000 000000010000000000000038-0000000000000000000000000000000000000000.gz 000000010000000000000039-0000000000000000000000000000000000000000 00000001000000000000003A-0000000000000000000000000000000000000000.gz 00000001000000000000003B-0000000000000000000000000000000000000000 00000001000000000000003C-0000000000000000000000000000000000000000.gz 00000001000000000000003D-0000000000000000000000000000000000000000 00000001000000000000003E-0000000000000000000000000000000000000000.gz 00000001000000000000003F-0000000000000000000000000000000000000000 000000010000000000000040-0000000000000000000000000000000000000000.gz 000000010000000000000041-0000000000000000000000000000000000000000 000000010000000000000042-0000000000000000000000000000000000000000.gz 000000010000000000000043-0000000000000000000000000000000000000000 000000010000000000000044-0000000000000000000000000000000000000000.gz 000000010000000000000045-0000000000000000000000000000000000000000 000000010000000000000046-0000000000000000000000000000000000000000.gz 000000010000000000000047-0000000000000000000000000000000000000000 000000010000000000000048-0000000000000000000000000000000000000000.gz 000000010000000000000049-0000000000000000000000000000000000000000 00000001000000000000004A-0000000000000000000000000000000000000000.gz 00000001000000000000004B-0000000000000000000000000000000000000000 00000001000000000000004C-0000000000000000000000000000000000000000.gz 00000001000000000000004D-0000000000000000000000000000000000000000 00000001000000000000004E-0000000000000000000000000000000000000000.gz 00000001000000000000004F-0000000000000000000000000000000000000000 000000010000000000000050-0000000000000000000000000000000000000000.gz 000000010000000000000051-0000000000000000000000000000000000000000 000000010000000000000052-0000000000000000000000000000000000000000.gz 000000010000000000000053-0000000000000000000000000000000000000000 000000010000000000000054-0000000000000000000000000000000000000000.gz 000000010000000000000055-0000000000000000000000000000000000000000 000000010000000000000056-0000000000000000000000000000000000000000.gz 000000010000000000000057-0000000000000000000000000000000000000000 000000010000000000000058-0000000000000000000000000000000000000000.gz 000000010000000000000059-0000000000000000000000000000000000000000 00000001000000000000005A-0000000000000000000000000000000000000000.gz 00000001000000000000005B-0000000000000000000000000000000000000000 00000001000000000000005C-0000000000000000000000000000000000000000.gz 00000001000000000000005D-0000000000000000000000000000000000000000 00000001000000000000005E-0000000000000000000000000000000000000000.gz 00000001000000000000005F-0000000000000000000000000000000000000000 000000010000000000000060-0000000000000000000000000000000000000000.gz 000000010000000000000061-0000000000000000000000000000000000000000 000000010000000000000062-0000000000000000000000000000000000000000.gz 000000010000000000000063-0000000000000000000000000000000000000000 000000010000000000000064-0000000000000000000000000000000000000000.gz 000000010000000000000065-0000000000000000000000000000000000000000 000000010000000000000066-0000000000000000000000000000000000000000.gz 000000010000000000000067-0000000000000000000000000000000000000000 000000010000000000000068-0000000000000000000000000000000000000000.gz 000000010000000000000069-0000000000000000000000000000000000000000 00000001000000000000006A-0000000000000000000000000000000000000000.gz 00000001000000000000006B-0000000000000000000000000000000000000000 00000001000000000000006C-0000000000000000000000000000000000000000.gz 00000001000000000000006D-0000000000000000000000000000000000000000 00000001000000000000006E-0000000000000000000000000000000000000000.gz 00000001000000000000006F-0000000000000000000000000000000000000000 000000010000000000000070-0000000000000000000000000000000000000000.gz 000000010000000000000071-0000000000000000000000000000000000000000 000000010000000000000072-0000000000000000000000000000000000000000.gz 000000010000000000000073-0000000000000000000000000000000000000000 000000010000000000000074-0000000000000000000000000000000000000000.gz 000000010000000000000075-0000000000000000000000000000000000000000 000000010000000000000076-0000000000000000000000000000000000000000.gz 000000010000000000000077-0000000000000000000000000000000000000000 000000010000000000000078-0000000000000000000000000000000000000000.gz 000000010000000000000079-0000000000000000000000000000000000000000 00000001000000000000007A-0000000000000000000000000000000000000000.gz 00000001000000000000007B-0000000000000000000000000000000000000000 00000001000000000000007C-0000000000000000000000000000000000000000.gz 00000001000000000000007D-0000000000000000000000000000000000000000 00000001000000000000007E-0000000000000000000000000000000000000000.gz 00000001000000000000007F-0000000000000000000000000000000000000000 000000010000000000000080-0000000000000000000000000000000000000000.gz 000000010000000000000081-0000000000000000000000000000000000000000 000000010000000000000082-0000000000000000000000000000000000000000.gz 000000010000000000000083-0000000000000000000000000000000000000000 000000010000000000000084-0000000000000000000000000000000000000000.gz 000000010000000000000085-0000000000000000000000000000000000000000 000000010000000000000086-0000000000000000000000000000000000000000.gz 000000010000000000000087-0000000000000000000000000000000000000000 000000010000000000000088-0000000000000000000000000000000000000000.gz 000000010000000000000089-0000000000000000000000000000000000000000 00000001000000000000008A-0000000000000000000000000000000000000000.gz 00000001000000000000008B-0000000000000000000000000000000000000000 00000001000000000000008C-0000000000000000000000000000000000000000.gz 00000001000000000000008D-0000000000000000000000000000000000000000 00000001000000000000008E-0000000000000000000000000000000000000000.gz 00000001000000000000008F-0000000000000000000000000000000000000000 000000010000000000000090-0000000000000000000000000000000000000000.gz 000000010000000000000091-0000000000000000000000000000000000000000 000000010000000000000092-0000000000000000000000000000000000000000.gz 000000010000000000000093-0000000000000000000000000000000000000000 000000010000000000000094-0000000000000000000000000000000000000000.gz 000000010000000000000095-0000000000000000000000000000000000000000 000000010000000000000096-0000000000000000000000000000000000000000.gz 000000010000000000000097-0000000000000000000000000000000000000000 000000010000000000000098-0000000000000000000000000000000000000000.gz 000000010000000000000099-0000000000000000000000000000000000000000 00000001000000000000009A-0000000000000000000000000000000000000000.gz 00000001000000000000009B-0000000000000000000000000000000000000000 00000001000000000000009C-0000000000000000000000000000000000000000.gz 00000001000000000000009D-0000000000000000000000000000000000000000 00000001000000000000009E-0000000000000000000000000000000000000000.gz 00000001000000000000009F-0000000000000000000000000000000000000000 0000000100000000000000A0-0000000000000000000000000000000000000000.gz 0000000100000000000000A1-0000000000000000000000000000000000000000 0000000100000000000000A2-0000000000000000000000000000000000000000.gz 0000000100000000000000A3-0000000000000000000000000000000000000000 0000000100000000000000A4-0000000000000000000000000000000000000000.gz 0000000100000000000000A5-0000000000000000000000000000000000000000 0000000100000000000000A6-0000000000000000000000000000000000000000.gz 0000000100000000000000A7-0000000000000000000000000000000000000000 0000000100000000000000A8-0000000000000000000000000000000000000000.gz 0000000100000000000000A9-0000000000000000000000000000000000000000 0000000100000000000000AA-0000000000000000000000000000000000000000.gz 0000000100000000000000AB-0000000000000000000000000000000000000000 0000000100000000000000AC-0000000000000000000000000000000000000000.gz 0000000100000000000000AD-0000000000000000000000000000000000000000 0000000100000000000000AE-0000000000000000000000000000000000000000.gz 0000000100000000000000AF-0000000000000000000000000000000000000000 0000000100000000000000B0-0000000000000000000000000000000000000000.gz 0000000100000000000000B1-0000000000000000000000000000000000000000 0000000100000000000000B2-0000000000000000000000000000000000000000.gz 0000000100000000000000B3-0000000000000000000000000000000000000000 0000000100000000000000B4-0000000000000000000000000000000000000000.gz 0000000100000000000000B5-0000000000000000000000000000000000000000 0000000100000000000000B6-0000000000000000000000000000000000000000.gz 0000000100000000000000B7-0000000000000000000000000000000000000000 0000000100000000000000B8-0000000000000000000000000000000000000000.gz 0000000100000000000000B9-0000000000000000000000000000000000000000 0000000100000000000000BA-0000000000000000000000000000000000000000.gz 0000000100000000000000BB-0000000000000000000000000000000000000000 0000000100000000000000BC-0000000000000000000000000000000000000000.gz 0000000100000000000000BD-0000000000000000000000000000000000000000 0000000100000000000000BE-0000000000000000000000000000000000000000.gz 0000000100000000000000BF-0000000000000000000000000000000000000000 0000000100000000000000C0-0000000000000000000000000000000000000000.gz 0000000100000000000000C1-0000000000000000000000000000000000000000 0000000100000000000000C2-0000000000000000000000000000000000000000.gz 0000000100000000000000C3-0000000000000000000000000000000000000000 0000000100000000000000C4-0000000000000000000000000000000000000000.gz 0000000100000000000000C5-0000000000000000000000000000000000000000 0000000100000000000000C6-0000000000000000000000000000000000000000.gz 0000000100000000000000C7-0000000000000000000000000000000000000000 0000000100000000000000C8-0000000000000000000000000000000000000000.gz 0000000100000000000000C9-0000000000000000000000000000000000000000 0000000100000000000000CA-0000000000000000000000000000000000000000.gz 0000000100000000000000CB-0000000000000000000000000000000000000000 0000000100000000000000CC-0000000000000000000000000000000000000000.gz 0000000100000000000000CD-0000000000000000000000000000000000000000 0000000100000000000000CE-0000000000000000000000000000000000000000.gz 0000000100000000000000CF-0000000000000000000000000000000000000000 0000000100000000000000D0-0000000000000000000000000000000000000000.gz 0000000100000000000000D1-0000000000000000000000000000000000000000 0000000100000000000000D2-0000000000000000000000000000000000000000.gz 0000000100000000000000D3-0000000000000000000000000000000000000000 0000000100000000000000D4-0000000000000000000000000000000000000000.gz 0000000100000000000000D5-0000000000000000000000000000000000000000 0000000100000000000000D6-0000000000000000000000000000000000000000.gz 0000000100000000000000D7-0000000000000000000000000000000000000000 0000000100000000000000D8-0000000000000000000000000000000000000000.gz 0000000100000000000000D9-0000000000000000000000000000000000000000 0000000100000000000000DA-0000000000000000000000000000000000000000.gz 0000000100000000000000DB-0000000000000000000000000000000000000000 0000000100000000000000DC-0000000000000000000000000000000000000000.gz 0000000100000000000000DD-0000000000000000000000000000000000000000 0000000100000000000000DE-0000000000000000000000000000000000000000.gz 0000000100000000000000DF-0000000000000000000000000000000000000000 0000000100000000000000E0-0000000000000000000000000000000000000000.gz 0000000100000000000000E1-0000000000000000000000000000000000000000 0000000100000000000000E2-0000000000000000000000000000000000000000.gz 0000000100000000000000E3-0000000000000000000000000000000000000000 0000000100000000000000E4-0000000000000000000000000000000000000000.gz 0000000100000000000000E5-0000000000000000000000000000000000000000 0000000100000000000000E6-0000000000000000000000000000000000000000.gz 0000000100000000000000E7-0000000000000000000000000000000000000000 0000000100000000000000E8-0000000000000000000000000000000000000000.gz 0000000100000000000000E9-0000000000000000000000000000000000000000 0000000100000000000000EA-0000000000000000000000000000000000000000.gz 0000000100000000000000EB-0000000000000000000000000000000000000000 0000000100000000000000EC-0000000000000000000000000000000000000000.gz 0000000100000000000000ED-0000000000000000000000000000000000000000 0000000100000000000000EE-0000000000000000000000000000000000000000.gz 0000000100000000000000EF-0000000000000000000000000000000000000000 0000000100000000000000F0-0000000000000000000000000000000000000000.gz 0000000100000000000000F1-0000000000000000000000000000000000000000 0000000100000000000000F2-0000000000000000000000000000000000000000.gz 0000000100000000000000F3-0000000000000000000000000000000000000000 0000000100000000000000F4-0000000000000000000000000000000000000000.gz 0000000100000000000000F5-0000000000000000000000000000000000000000 0000000100000000000000F6-0000000000000000000000000000000000000000.gz 0000000100000000000000F7-0000000000000000000000000000000000000000 0000000100000000000000F8-0000000000000000000000000000000000000000.gz 0000000100000000000000F9-0000000000000000000000000000000000000000 0000000100000000000000FA-0000000000000000000000000000000000000000.gz 0000000100000000000000FB-0000000000000000000000000000000000000000 0000000100000000000000FC-0000000000000000000000000000000000000000.gz 0000000100000000000000FD-0000000000000000000000000000000000000000 0000000100000000000000FE-0000000000000000000000000000000000000000.gz 0000000100000000000000FF-0000000000000000000000000000000000000000.gz [TEST_PATH]/db-master/repo/archive/db/9.3-2/0000000100000001: 000000010000000100000000-0000000000000000000000000000000000000000 000000010000000100000001-0000000000000000000000000000000000000000.gz 000000010000000100000002-0000000000000000000000000000000000000000.gz 000000010000000100000003-0000000000000000000000000000000000000000 000000010000000100000004-0000000000000000000000000000000000000000.gz 000000010000000100000005-0000000000000000000000000000000000000000.gz 000000010000000100000006-0000000000000000000000000000000000000000 000000010000000100000007-0000000000000000000000000000000000000000.gz 000000010000000100000008-0000000000000000000000000000000000000000.gz 000000010000000100000009-0000000000000000000000000000000000000000 00000001000000010000000A-0000000000000000000000000000000000000000.gz Upgrade the stanza, create full back - earliest db orphaned archive removed and earliest full backup and archive in previous db version removed > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config="[TEST_PATH]/db-master/pgbackrest.conf" --stanza=db --log-level-console=detail --repo1-retention-full=2 --repo1-retention-archive-type=full expire ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-archive-type=full --repo1-retention-full=2 --stanza=db P00 INFO: expire full backup [BACKUP-FULL-2] P00 INFO: expire full backup set: [BACKUP-FULL-3], [BACKUP-INCR-2] P00 INFO: remove expired backup [BACKUP-INCR-2] P00 INFO: remove expired backup [BACKUP-FULL-3] P00 INFO: remove expired backup [BACKUP-FULL-2] P00 INFO: remove archive path: [TEST_PATH]/db-master/repo/archive/db/9.2-1 P00 DETAIL: archive retention on backup [BACKUP-FULL-4], archiveId = 9.3-2, start = 0000000100000000000000FF P00 DETAIL: remove archive: archiveId = 9.3-2, start = 000000010000000000000000, stop = 0000000100000000000000FE P00 DETAIL: archive retention on backup [BACKUP-FULL-5], archiveId = 10-3, start = 000000010000000000000000 P00 DETAIL: no archive to remove, archiveId = 10-3 P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"0000000100000000000000FF","backup-archive-stop":"000000010000000100000001","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":2,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000100000005","backup-archive-stop":"000000010000000100000007","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-4]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":2,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000000","backup-archive-stop":"000000010000000000000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":3,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201707211 db-control-version=1002 db-id=3 db-system-id=1000000000000000100 db-version="10" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} 2={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} 3={"db-catalog-version":201707211,"db-control-version":1002,"db-system-id":1000000000000000100,"db-version":"10"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-4] [BACKUP-DIFF-1] [BACKUP-FULL-5] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/10-3: [TEST_PATH]/db-master/repo/archive/db/10-3/0000000100000000: 000000010000000000000000-0000000000000000000000000000000000000000.gz 000000010000000000000001-0000000000000000000000000000000000000000 000000010000000000000002-0000000000000000000000000000000000000000.gz 000000010000000000000003-0000000000000000000000000000000000000000.gz 000000010000000000000004-0000000000000000000000000000000000000000 000000010000000000000005-0000000000000000000000000000000000000000.gz [TEST_PATH]/db-master/repo/archive/db/9.3-2: [TEST_PATH]/db-master/repo/archive/db/9.3-2/0000000100000000: 0000000100000000000000FF-0000000000000000000000000000000000000000.gz [TEST_PATH]/db-master/repo/archive/db/9.3-2/0000000100000001: 000000010000000100000000-0000000000000000000000000000000000000000 000000010000000100000001-0000000000000000000000000000000000000000.gz 000000010000000100000002-0000000000000000000000000000000000000000.gz 000000010000000100000003-0000000000000000000000000000000000000000 000000010000000100000004-0000000000000000000000000000000000000000.gz 000000010000000100000005-0000000000000000000000000000000000000000.gz 000000010000000100000006-0000000000000000000000000000000000000000 000000010000000100000007-0000000000000000000000000000000000000000.gz 000000010000000100000008-0000000000000000000000000000000000000000.gz 000000010000000100000009-0000000000000000000000000000000000000000 00000001000000010000000A-0000000000000000000000000000000000000000.gz * full backup: label = [BACKUP-FULL-6], start = 000000010000000000000006, stop = 000000010000000000000008 ==================================================================================================================================== + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"0000000100000000000000FF","backup-archive-stop":"000000010000000100000001","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":2,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-DIFF-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000100000005","backup-archive-stop":"000000010000000100000007","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-4]","backup-reference":[],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":2,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000000","backup-archive-stop":"000000010000000000000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":3,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-6]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000006","backup-archive-stop":"000000010000000000000008","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":3,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201707211 db-control-version=1002 db-id=3 db-system-id=1000000000000000100 db-version="10" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} 2={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} 3={"db-catalog-version":201707211,"db-control-version":1002,"db-system-id":1000000000000000100,"db-version":"10"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-4] [BACKUP-DIFF-1] [BACKUP-FULL-5] [BACKUP-FULL-6] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/10-3: [TEST_PATH]/db-master/repo/archive/db/10-3/0000000100000000: 000000010000000000000000-0000000000000000000000000000000000000000.gz 000000010000000000000001-0000000000000000000000000000000000000000 000000010000000000000002-0000000000000000000000000000000000000000.gz 000000010000000000000003-0000000000000000000000000000000000000000.gz 000000010000000000000004-0000000000000000000000000000000000000000 000000010000000000000005-0000000000000000000000000000000000000000.gz 000000010000000000000006-0000000000000000000000000000000000000000.gz 000000010000000000000007-0000000000000000000000000000000000000000 000000010000000000000008-0000000000000000000000000000000000000000.gz 000000010000000000000009-0000000000000000000000000000000000000000.gz 00000001000000000000000A-0000000000000000000000000000000000000000 00000001000000000000000B-0000000000000000000000000000000000000000.gz [TEST_PATH]/db-master/repo/archive/db/9.3-2: [TEST_PATH]/db-master/repo/archive/db/9.3-2/0000000100000000: 0000000100000000000000FF-0000000000000000000000000000000000000000.gz [TEST_PATH]/db-master/repo/archive/db/9.3-2/0000000100000001: 000000010000000100000000-0000000000000000000000000000000000000000 000000010000000100000001-0000000000000000000000000000000000000000.gz 000000010000000100000002-0000000000000000000000000000000000000000.gz 000000010000000100000003-0000000000000000000000000000000000000000 000000010000000100000004-0000000000000000000000000000000000000000.gz 000000010000000100000005-0000000000000000000000000000000000000000.gz 000000010000000100000006-0000000000000000000000000000000000000000 000000010000000100000007-0000000000000000000000000000000000000000.gz 000000010000000100000008-0000000000000000000000000000000000000000.gz 000000010000000100000009-0000000000000000000000000000000000000000 00000001000000010000000A-0000000000000000000000000000000000000000.gz Expire all archive last full backup through pitr > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config="[TEST_PATH]/db-master/pgbackrest.conf" --stanza=db --log-level-console=detail --repo1-retention-full=3 --repo1-retention-diff=1 --repo1-retention-archive-type=diff --repo1-retention-archive=1 expire ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-archive=1 --repo1-retention-archive-type=diff --repo1-retention-diff=1 --repo1-retention-full=3 --stanza=db P00 INFO: expire diff backup [BACKUP-DIFF-1] P00 INFO: remove expired backup [BACKUP-DIFF-1] P00 DETAIL: archive retention on backup [BACKUP-FULL-4], archiveId = 9.3-2, start = 0000000100000000000000FF P00 DETAIL: no archive to remove, archiveId = 9.3-2 P00 DETAIL: archive retention on backup [BACKUP-FULL-5], archiveId = 10-3, start = 000000010000000000000000, stop = 000000010000000000000002 P00 DETAIL: archive retention on backup [BACKUP-FULL-6], archiveId = 10-3, start = 000000010000000000000006 P00 DETAIL: remove archive: archiveId = 10-3, start = 000000010000000000000003, stop = 000000010000000000000005 P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"0000000100000000000000FF","backup-archive-stop":"000000010000000100000001","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":2,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000000","backup-archive-stop":"000000010000000000000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":3,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-6]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000006","backup-archive-stop":"000000010000000000000008","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":3,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201707211 db-control-version=1002 db-id=3 db-system-id=1000000000000000100 db-version="10" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} 2={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} 3={"db-catalog-version":201707211,"db-control-version":1002,"db-system-id":1000000000000000100,"db-version":"10"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-4] [BACKUP-FULL-5] [BACKUP-FULL-6] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/10-3: [TEST_PATH]/db-master/repo/archive/db/10-3/0000000100000000: 000000010000000000000000-0000000000000000000000000000000000000000.gz 000000010000000000000001-0000000000000000000000000000000000000000 000000010000000000000002-0000000000000000000000000000000000000000.gz 000000010000000000000006-0000000000000000000000000000000000000000.gz 000000010000000000000007-0000000000000000000000000000000000000000 000000010000000000000008-0000000000000000000000000000000000000000.gz 000000010000000000000009-0000000000000000000000000000000000000000.gz 00000001000000000000000A-0000000000000000000000000000000000000000 00000001000000000000000B-0000000000000000000000000000000000000000.gz [TEST_PATH]/db-master/repo/archive/db/9.3-2: [TEST_PATH]/db-master/repo/archive/db/9.3-2/0000000100000000: 0000000100000000000000FF-0000000000000000000000000000000000000000.gz [TEST_PATH]/db-master/repo/archive/db/9.3-2/0000000100000001: 000000010000000100000000-0000000000000000000000000000000000000000 000000010000000100000001-0000000000000000000000000000000000000000.gz 000000010000000100000002-0000000000000000000000000000000000000000.gz 000000010000000100000003-0000000000000000000000000000000000000000 000000010000000100000004-0000000000000000000000000000000000000000.gz 000000010000000100000005-0000000000000000000000000000000000000000.gz 000000010000000100000006-0000000000000000000000000000000000000000 000000010000000100000007-0000000000000000000000000000000000000000.gz 000000010000000100000008-0000000000000000000000000000000000000000.gz 000000010000000100000009-0000000000000000000000000000000000000000 00000001000000010000000A-0000000000000000000000000000000000000000.gz + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"0000000100000000000000FF","backup-archive-stop":"000000010000000100000001","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":2,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000000","backup-archive-stop":"000000010000000000000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":3,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-6]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000006","backup-archive-stop":"000000010000000000000008","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":3,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201707211 db-control-version=1002 db-id=3 db-system-id=1000000000000000100 db-version="10" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} 2={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} 3={"db-catalog-version":201707211,"db-control-version":1002,"db-system-id":1000000000000000100,"db-version":"10"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-4] [BACKUP-FULL-5] [BACKUP-FULL-6] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/10-3: [TEST_PATH]/db-master/repo/archive/db/10-3/0000000100000000: 000000010000000000000000-0000000000000000000000000000000000000000.gz 000000010000000000000001-0000000000000000000000000000000000000000 000000010000000000000002-0000000000000000000000000000000000000000.gz 000000010000000000000006-0000000000000000000000000000000000000000.gz 000000010000000000000007-0000000000000000000000000000000000000000 000000010000000000000008-0000000000000000000000000000000000000000.gz 000000010000000000000009-0000000000000000000000000000000000000000.gz 00000001000000000000000A-0000000000000000000000000000000000000000 00000001000000000000000B-0000000000000000000000000000000000000000.gz [TEST_PATH]/db-master/repo/archive/db/9.3-2: [TEST_PATH]/db-master/repo/archive/db/9.3-2/0000000100000000: 0000000100000000000000FF-0000000000000000000000000000000000000000.gz [TEST_PATH]/db-master/repo/archive/db/9.3-2/0000000100000001: 000000010000000100000000-0000000000000000000000000000000000000000 000000010000000100000001-0000000000000000000000000000000000000000.gz 000000010000000100000002-0000000000000000000000000000000000000000.gz 000000010000000100000003-0000000000000000000000000000000000000000 000000010000000100000004-0000000000000000000000000000000000000000.gz 000000010000000100000005-0000000000000000000000000000000000000000.gz 000000010000000100000006-0000000000000000000000000000000000000000 000000010000000100000007-0000000000000000000000000000000000000000.gz 000000010000000100000008-0000000000000000000000000000000000000000.gz 000000010000000100000009-0000000000000000000000000000000000000000 00000001000000010000000A-0000000000000000000000000000000000000000.gz Expire all archive except for the current database > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config="[TEST_PATH]/db-master/pgbackrest.conf" --stanza=db --log-level-console=detail --repo1-retention-full=2 --repo1-retention-archive-type=full expire ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-archive-type=full --repo1-retention-full=2 --stanza=db P00 INFO: expire full backup [BACKUP-FULL-4] P00 INFO: remove expired backup [BACKUP-FULL-4] P00 INFO: remove archive path: [TEST_PATH]/db-master/repo/archive/db/9.3-2 P00 DETAIL: archive retention on backup [BACKUP-FULL-5], archiveId = 10-3, start = 000000010000000000000000 P00 DETAIL: no archive to remove, archiveId = 10-3 P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000000","backup-archive-stop":"000000010000000000000002","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":3,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [BACKUP-FULL-6]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":"000000010000000000000006","backup-archive-stop":"000000010000000000000008","backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":3,"option-archive-check":true,"option-archive-copy":false,"option-backup-standby":false,"option-checksum-page":true,"option-compress":true,"option-hardlink":false,"option-online":true} [db] db-catalog-version=201707211 db-control-version=1002 db-id=3 db-system-id=1000000000000000100 db-version="10" [db:history] 1={"db-catalog-version":201204301,"db-control-version":922,"db-system-id":1000000000000000092,"db-version":"9.2"} 2={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} 3={"db-catalog-version":201707211,"db-control-version":1002,"db-system-id":1000000000000000100,"db-version":"10"} [backrest] backrest-checksum="[CHECKSUM]" > ls [TEST_PATH]/db-master/repo/backup/db | grep -v "backup.*" ------------------------------------------------------------------------------------------------------------------------------------ [BACKUP-FULL-5] [BACKUP-FULL-6] > ls -R [TEST_PATH]/db-master/repo/archive/db | grep -v "archive.info" ------------------------------------------------------------------------------------------------------------------------------------ [TEST_PATH]/db-master/repo/archive/db: [TEST_PATH]/db-master/repo/archive/db/10-3: [TEST_PATH]/db-master/repo/archive/db/10-3/0000000100000000: 000000010000000000000000-0000000000000000000000000000000000000000.gz 000000010000000000000001-0000000000000000000000000000000000000000 000000010000000000000002-0000000000000000000000000000000000000000.gz 000000010000000000000006-0000000000000000000000000000000000000000.gz 000000010000000000000007-0000000000000000000000000000000000000000 000000010000000000000008-0000000000000000000000000000000000000000.gz 000000010000000000000009-0000000000000000000000000000000000000000.gz 00000001000000000000000A-0000000000000000000000000000000000000000 00000001000000000000000B-0000000000000000000000000000000000000000.gz pgbackrest-release-2.24/test/expect/mock-stanza-001.log000066400000000000000000000772051362531507100227210ustar00rootroot00000000000000run 001 - remote 0, s3 0, enc 0 =============================== stanza-create db - fail on missing control file (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --no-online --log-level-file=[LOG-LEVEL-FILE] stanza-create ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-create command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 ERROR: [055]: unable to open missing file '[TEST_PATH]/db-master/db/base/global/pg_control' for read P00 INFO: stanza-create command end: aborted with exception [055] stanza-upgrade db - fail on stanza not initialized since archive.info is missing (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --no-online stanza-upgrade ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-upgrade command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 ERROR: [055]: unable to load info file '[TEST_PATH]/db-master/repo/archive/db/archive.info' or '[TEST_PATH]/db-master/repo/archive/db/archive.info.copy': FileMissingError: unable to open missing file '[TEST_PATH]/db-master/repo/archive/db/archive.info' for read FileMissingError: unable to open missing file '[TEST_PATH]/db-master/repo/archive/db/archive.info.copy' for read HINT: archive.info cannot be opened but is required to push/get WAL segments. HINT: is archive_command configured correctly in postgresql.conf? HINT: has a stanza-create been performed? HINT: use --no-archive-check to disable archive checks during backup if you have an alternate archiving scheme. P00 INFO: stanza-upgrade command end: aborted with exception [055] stanza-create db - successfully create the stanza (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --no-online stanza-create ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-create command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: stanza-create command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [db] db-catalog-version=201306121 db-control-version=937 db-id=1 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/archive/db/archive.info ----------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [db] db-id=1 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" stanza-create db - do not fail on rerun of stanza-create - info files exist and DB section ok (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --no-online stanza-create ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-create command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: stanza 'db' already exists and is valid P00 INFO: stanza-create command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [db] db-catalog-version=201306121 db-control-version=937 db-id=1 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/archive/db/archive.info ----------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [db] db-id=1 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" stanza-create db - fail on database mismatch and warn force option deprecated (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --no-online --force stanza-create ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-create command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --force --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 WARN: option --force is no longer supported P00 ERROR: [028]: backup and archive info files exist but do not match the database HINT: is this the correct stanza? HINT: did an error occur during stanza-upgrade? P00 INFO: stanza-create command end: aborted with exception [028] + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [db] db-catalog-version=201306121 db-control-version=937 db-id=1 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/archive/db/archive.info ----------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [db] db-id=1 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" stanza-upgrade db - already up to date (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --no-online stanza-upgrade ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-upgrade command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: stanza 'db' is already up to date P00 INFO: stanza-upgrade command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [db] db-catalog-version=201306121 db-control-version=937 db-id=1 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/archive/db/archive.info ----------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [db] db-id=1 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001] --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: pushed WAL file '000000010000000100000001' to the archive P00 INFO: archive-push command end: completed successfully stanza-create db - fail on archive info file missing from non-empty dir (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --no-online stanza-create ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-create command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 ERROR: [055]: backup.info exists but archive.info is missing HINT: this may be a symptom of repository corruption! P00 INFO: stanza-create command end: aborted with exception [055] + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [db] db-catalog-version=201306121 db-control-version=937 db-id=1 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002 ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: pushed WAL file '000000010000000100000002' to the archive P00 INFO: archive-push command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --archive-push-queue-max=33554432 --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 ------------------------------------------------------------------------------------------------------------------------------------ P00 ERROR: [044]: PostgreSQL version 9.4, system-id 1000000000000000094 do not match stanza version 9.3, system-id 1000000000000000093 HINT: are you archiving to the correct stanza? stanza-upgrade db - successful upgrade creates additional history (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --no-online stanza-upgrade ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-upgrade command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: stanza-upgrade command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [db] db-catalog-version=201409291 db-control-version=942 db-id=2 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} 2={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/archive/db/archive.info ----------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [db] db-id=2 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-id":1000000000000000093,"db-version":"9.3"} 2={"db-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get 000000010000000100000002 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [000000010000000100000002, [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG] --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: found 000000010000000100000002 in the archive P00 INFO: archive-get command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --archive-push-queue-max=33554432 --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 ------------------------------------------------------------------------------------------------------------------------------------ full backup - create first full backup (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --repo1-retention-full=2 --no-online --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-full=2 --stanza=db --start-fast --type=full P01 INFO: backup file [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG (16MB, 33%) checksum 488ba4b8b98acc510bce86b8f16e3c1ed9886a29 P01 INFO: backup file [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002 (16MB, 66%) checksum 488ba4b8b98acc510bce86b8f16e3c1ed9886a29 P01 INFO: backup file [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 (16MB, 99%) checksum e40de8cea99dd469c3efb47f5f33a73c7390fb9c P01 INFO: backup file [TEST_PATH]/db-master/db/base/global/pg_control (8KB, 100%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c P01 INFO: backup file [TEST_PATH]/db-master/db/base/pg_xlog/archive_status/000000010000000100000002.ready (0B, 100%) P01 INFO: backup file [TEST_PATH]/db-master/db/base/pg_xlog/archive_status/000000010000000100000001.ready (0B, 100%) P00 INFO: full backup size = 48MB P00 INFO: new backup label = [BACKUP-FULL-1] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-full=2 --stanza=db P00 INFO: remove archive path: [TEST_PATH]/db-master/repo/archive/db/9.3-1 P00 INFO: full backup total < 2 - using oldest full backup for 9.4-2 archive retention P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y start-fast=y stanza-upgrade db - successfully upgrade (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --no-online stanza-upgrade ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-upgrade command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: stanza-upgrade command end: completed successfully + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":2,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false} [db] db-catalog-version=201510051 db-control-version=942 db-id=3 db-system-id=1000000000000000095 db-version="9.5" [db:history] 1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} 2={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} 3={"db-catalog-version":201510051,"db-control-version":942,"db-system-id":1000000000000000095,"db-version":"9.5"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/archive/db/archive.info ----------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [db] db-id=3 db-system-id=1000000000000000095 db-version="9.5" [db:history] 1={"db-id":1000000000000000093,"db-version":"9.3"} 2={"db-id":1000000000000000094,"db-version":"9.4"} 3={"db-id":1000000000000000095,"db-version":"9.5"} [backrest] backrest-checksum="[CHECKSUM]" stanza-upgrade db - upgrade fails with mismatched db-ids (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --no-online stanza-upgrade ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-upgrade command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 ERROR: [028]: backup info file and archive info file do not match archive: id = 2, version = 9.5, system-id = 1000000000000000095 backup : id = 3, version = 9.5, system-id = 1000000000000000095 HINT: this may be a symptom of repository corruption! P00 INFO: stanza-upgrade command end: aborted with exception [028] + supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info --------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":2,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false} [db] db-catalog-version=201510051 db-control-version=942 db-id=3 db-system-id=1000000000000000095 db-version="9.5" [db:history] 1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} 2={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} 3={"db-catalog-version":201510051,"db-control-version":942,"db-system-id":1000000000000000095,"db-version":"9.5"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: [TEST_PATH]/db-master/repo/archive/db/archive.info ----------------------------------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [db] db-id=1 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --archive-push-queue-max=33554432 --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 ------------------------------------------------------------------------------------------------------------------------------------ diff backup - diff changed to full backup (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --repo1-retention-full=2 --no-online --type=diff --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-full=2 --stanza=db --start-fast --type=diff P00 WARN: no prior backup exists, diff backup has been changed to full P01 INFO: backup file [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG (16MB, 33%) checksum 488ba4b8b98acc510bce86b8f16e3c1ed9886a29 P01 INFO: backup file [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002 (16MB, 66%) checksum 488ba4b8b98acc510bce86b8f16e3c1ed9886a29 P01 INFO: backup file [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 (16MB, 99%) checksum 65b64687e7bfd1a918c6144f84a133f03e50ac57 P01 INFO: backup file [TEST_PATH]/db-master/db/base/global/pg_control (8KB, 100%) checksum 4969435f3b36bfaa0f5a486bef97f1988a135520 P01 INFO: backup file [TEST_PATH]/db-master/db/base/pg_xlog/archive_status/000000010000000100000002.ready (0B, 100%) P01 INFO: backup file [TEST_PATH]/db-master/db/base/pg_xlog/archive_status/000000010000000100000001.ready (0B, 100%) P00 INFO: full backup size = 48MB P00 INFO: new backup label = [BACKUP-FULL-2] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --repo1-retention-full=2 --stanza=db P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y start-fast=y stanza-delete db - fail on missing stop file (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db stanza-delete ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-delete command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 ERROR: [055]: stop file does not exist for stanza 'db' HINT: has the pgbackrest stop command been run on this server for this stanza? P00 INFO: stanza-delete command end: aborted with exception [055] db must not exist for successful delete > list backup ------------------------------------------------------------------------------------------------------------------------------------ db db must not exist for successful delete > list archive ------------------------------------------------------------------------------------------------------------------------------------ db stop db stanza (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db stop ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stop command begin [BACKREST-VERSION]: --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: stop command end: completed successfully stanza-delete db - successfully delete the stanza (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db stanza-delete ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-delete command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db P00 INFO: stanza-delete command end: completed successfully db must not exist for successful delete > list backup ------------------------------------------------------------------------------------------------------------------------------------ db must not exist for successful delete > list archive ------------------------------------------------------------------------------------------------------------------------------------ pgbackrest-release-2.24/test/expect/mock-stanza-002.log000066400000000000000000001164211362531507100227140ustar00rootroot00000000000000run 002 - remote 1, s3 1, enc 1 =============================== stanza-create db - fail on missing control file (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --no-online --log-level-file=[LOG-LEVEL-FILE] stanza-create ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-create command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db P00 ERROR: [055]: raised from remote-0 protocol on 'db-master': unable to open missing file '[TEST_PATH]/db-master/db/base/global/pg_control' for read P00 INFO: stanza-create command end: aborted with exception [055] stanza-upgrade db - fail on stanza not initialized since archive.info is missing (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --no-online stanza-upgrade ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-upgrade command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db P00 ERROR: [055]: unable to load info file '/archive/db/archive.info' or '/archive/db/archive.info.copy': FileMissingError: unable to open '/archive/db/archive.info': No such file or directory FileMissingError: unable to open '/archive/db/archive.info.copy': No such file or directory HINT: archive.info cannot be opened but is required to push/get WAL segments. HINT: is archive_command configured correctly in postgresql.conf? HINT: has a stanza-create been performed? HINT: use --no-archive-check to disable archive checks during backup if you have an alternate archiving scheme. P00 DETAIL: tls statistics:[TLS-STATISTICS] P00 INFO: http statistics:[HTTP-STATISTICS] P00 INFO: stanza-upgrade command end: aborted with exception [055] stanza-create db - successfully create the stanza (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --no-online stanza-create ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-create command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db P00 DETAIL: tls statistics:[TLS-STATISTICS] P00 INFO: http statistics:[HTTP-STATISTICS] P00 INFO: stanza-create command end: completed successfully + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201306121 db-control-version=937 db-id=1 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /archive/db/archive.info --------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [cipher] cipher-pass=[CIPHER-PASS-2] [db] db-id=1 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" stanza-create db - do not fail on rerun of stanza-create - info files exist and DB section ok (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --no-online stanza-create ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-create command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db P00 INFO: stanza 'db' already exists and is valid P00 DETAIL: tls statistics:[TLS-STATISTICS] P00 INFO: http statistics:[HTTP-STATISTICS] P00 INFO: stanza-create command end: completed successfully + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201306121 db-control-version=937 db-id=1 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /archive/db/archive.info --------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [cipher] cipher-pass=[CIPHER-PASS-2] [db] db-id=1 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" stanza-create db - fail on database mismatch and warn force option deprecated (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --no-online --force stanza-create ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-create command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --force --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db P00 WARN: option --force is no longer supported P00 ERROR: [028]: backup and archive info files exist but do not match the database HINT: is this the correct stanza? HINT: did an error occur during stanza-upgrade? P00 DETAIL: tls statistics:[TLS-STATISTICS] P00 INFO: http statistics:[HTTP-STATISTICS] P00 INFO: stanza-create command end: aborted with exception [028] + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201306121 db-control-version=937 db-id=1 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /archive/db/archive.info --------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [cipher] cipher-pass=[CIPHER-PASS-2] [db] db-id=1 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" stanza-upgrade db - already up to date (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --no-online stanza-upgrade ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-upgrade command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db P00 INFO: stanza 'db' is already up to date P00 DETAIL: tls statistics:[TLS-STATISTICS] P00 INFO: http statistics:[HTTP-STATISTICS] P00 INFO: stanza-upgrade command end: completed successfully + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201306121 db-control-version=937 db-id=1 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /archive/db/archive.info --------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [cipher] cipher-pass=[CIPHER-PASS-2] [db] db-id=1 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 INFO: pushed WAL file '000000010000000100000001' to the archive P00 INFO: archive-push command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002 ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 INFO: pushed WAL file '000000010000000100000002' to the archive P00 INFO: archive-push command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --archive-push-queue-max=33554432 --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 ------------------------------------------------------------------------------------------------------------------------------------ P00 ERROR: [044]: PostgreSQL version 9.4, system-id 1000000000000000094 do not match stanza version 9.3, system-id 1000000000000000093 HINT: are you archiving to the correct stanza? stanza-upgrade db - successful upgrade creates additional history (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --no-online stanza-upgrade ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-upgrade command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db P00 DETAIL: tls statistics:[TLS-STATISTICS] P00 INFO: http statistics:[HTTP-STATISTICS] P00 INFO: stanza-upgrade command end: completed successfully + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201409291 db-control-version=942 db-id=2 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} 2={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /archive/db/archive.info --------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [cipher] cipher-pass=[CIPHER-PASS-2] [db] db-id=2 db-system-id=1000000000000000094 db-version="9.4" [db:history] 1={"db-id":1000000000000000093,"db-version":"9.3"} 2={"db-id":1000000000000000094,"db-version":"9.4"} [backrest] backrest-checksum="[CHECKSUM]" > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get 000000010000000100000002 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: archive-get command begin [BACKREST-VERSION]: [000000010000000100000002, [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db P00 INFO: found 000000010000000100000002 in the archive P00 INFO: archive-get command end: completed successfully > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --archive-push-queue-max=33554432 --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 ------------------------------------------------------------------------------------------------------------------------------------ full backup - create first full backup (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --repo1-retention-full=2 --no-online --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-retention-full=2 --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db --start-fast --type=full P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG (16MB, 33%) checksum 488ba4b8b98acc510bce86b8f16e3c1ed9886a29 P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002 (16MB, 66%) checksum 488ba4b8b98acc510bce86b8f16e3c1ed9886a29 P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 (16MB, 99%) checksum e40de8cea99dd469c3efb47f5f33a73c7390fb9c P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/global/pg_control (8KB, 100%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/pg_xlog/archive_status/000000010000000100000002.ready (0B, 100%) P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/pg_xlog/archive_status/000000010000000100000001.ready (0B, 100%) P00 INFO: full backup size = 48MB P00 INFO: new backup label = [BACKUP-FULL-1] P00 DETAIL: tls statistics:[TLS-STATISTICS] P00 INFO: http statistics:[HTTP-STATISTICS] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/backup/pgbackrest.conf --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-retention-full=2 --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db P00 INFO: remove archive path: /archive/db/9.3-1 P00 INFO: full backup total < 2 - using oldest full backup for 9.4-2 archive retention P00 DETAIL: tls statistics:[TLS-STATISTICS] P00 INFO: http statistics:[HTTP-STATISTICS] P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-cipher-pass=x repo1-cipher-type=aes-256-cbc repo1-path=/ repo1-s3-bucket=pgbackrest-dev repo1-s3-endpoint=s3.amazonaws.com repo1-s3-key=accessKey1 repo1-s3-key-secret=verySecretKey1 repo1-s3-region=us-east-1 repo1-s3-verify-ssl=n repo1-type=s3 [global:backup] archive-copy=y start-fast=y stanza-upgrade db - successfully upgrade (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --no-online stanza-upgrade ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-upgrade command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db P00 DETAIL: tls statistics:[TLS-STATISTICS] P00 INFO: http statistics:[HTTP-STATISTICS] P00 INFO: stanza-upgrade command end: completed successfully + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":2,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false} [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201510051 db-control-version=942 db-id=3 db-system-id=1000000000000000095 db-version="9.5" [db:history] 1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} 2={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} 3={"db-catalog-version":201510051,"db-control-version":942,"db-system-id":1000000000000000095,"db-version":"9.5"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /archive/db/archive.info --------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [cipher] cipher-pass=[CIPHER-PASS-2] [db] db-id=3 db-system-id=1000000000000000095 db-version="9.5" [db:history] 1={"db-id":1000000000000000093,"db-version":"9.3"} 2={"db-id":1000000000000000094,"db-version":"9.4"} 3={"db-id":1000000000000000095,"db-version":"9.5"} [backrest] backrest-checksum="[CHECKSUM]" stanza-upgrade db - upgrade fails with mismatched db-ids (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --no-online stanza-upgrade ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-upgrade command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db P00 ERROR: [028]: backup info file and archive info file do not match archive: id = 2, version = 9.5, system-id = 1000000000000000095 backup : id = 3, version = 9.5, system-id = 1000000000000000095 HINT: this may be a symptom of repository corruption! P00 DETAIL: tls statistics:[TLS-STATISTICS] P00 INFO: http statistics:[HTTP-STATISTICS] P00 INFO: stanza-upgrade command end: aborted with exception [028] + supplemental file: /backup/db/backup.info ------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [backup:current] [BACKUP-FULL-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":2,"option-archive-check":false,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false} [cipher] cipher-pass=[CIPHER-PASS-1] [db] db-catalog-version=201510051 db-control-version=942 db-id=3 db-system-id=1000000000000000095 db-version="9.5" [db:history] 1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":1000000000000000093,"db-version":"9.3"} 2={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":1000000000000000094,"db-version":"9.4"} 3={"db-catalog-version":201510051,"db-control-version":942,"db-system-id":1000000000000000095,"db-version":"9.5"} [backrest] backrest-checksum="[CHECKSUM]" + supplemental file: /archive/db/archive.info --------------------------------------------- [backrest] backrest-format=5 backrest-version="[VERSION-1]" [cipher] cipher-pass=[CIPHER-PASS-2] [db] db-id=1 db-system-id=1000000000000000093 db-version="9.3" [db:history] 1={"db-id":1000000000000000093,"db-version":"9.3"} [backrest] backrest-checksum="[CHECKSUM]" > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --archive-push-queue-max=33554432 --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 ------------------------------------------------------------------------------------------------------------------------------------ diff backup - diff changed to full backup (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --repo1-retention-full=2 --no-online --type=diff --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-retention-full=2 --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db --start-fast --type=diff P00 WARN: no prior backup exists, diff backup has been changed to full P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG (16MB, 33%) checksum 488ba4b8b98acc510bce86b8f16e3c1ed9886a29 P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002 (16MB, 66%) checksum 488ba4b8b98acc510bce86b8f16e3c1ed9886a29 P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 (16MB, 99%) checksum 65b64687e7bfd1a918c6144f84a133f03e50ac57 P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/global/pg_control (8KB, 100%) checksum 4969435f3b36bfaa0f5a486bef97f1988a135520 P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/pg_xlog/archive_status/000000010000000100000002.ready (0B, 100%) P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/pg_xlog/archive_status/000000010000000100000001.ready (0B, 100%) P00 INFO: full backup size = 48MB P00 INFO: new backup label = [BACKUP-FULL-2] P00 DETAIL: tls statistics:[TLS-STATISTICS] P00 INFO: http statistics:[HTTP-STATISTICS] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/backup/pgbackrest.conf --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-retention-full=2 --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db P00 DETAIL: tls statistics:[TLS-STATISTICS] P00 INFO: http statistics:[HTTP-STATISTICS] P00 INFO: expire command end: completed successfully + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-cipher-pass=x repo1-cipher-type=aes-256-cbc repo1-path=/ repo1-s3-bucket=pgbackrest-dev repo1-s3-endpoint=s3.amazonaws.com repo1-s3-key=accessKey1 repo1-s3-key-secret=verySecretKey1 repo1-s3-region=us-east-1 repo1-s3-verify-ssl=n repo1-type=s3 [global:backup] archive-copy=y start-fast=y stanza-delete db - fail on missing stop file (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db stanza-delete ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-delete command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db P00 ERROR: [055]: stop file does not exist for stanza 'db' HINT: has the pgbackrest stop command been run on this server for this stanza? P00 DETAIL: tls statistics:[TLS-STATISTICS] P00 INFO: http statistics:[HTTP-STATISTICS] P00 INFO: stanza-delete command end: aborted with exception [055] db must not exist for successful delete > list backup ------------------------------------------------------------------------------------------------------------------------------------ db db must not exist for successful delete > list archive ------------------------------------------------------------------------------------------------------------------------------------ db stop db stanza (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db stop ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stop command begin [BACKREST-VERSION]: --config=[TEST_PATH]/backup/pgbackrest.conf --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db P00 INFO: stop command end: completed successfully stanza-delete db - successfully delete the stanza (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db stanza-delete ------------------------------------------------------------------------------------------------------------------------------------ P00 INFO: stanza-delete command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db P00 DETAIL: tls statistics:[TLS-STATISTICS] P00 INFO: http statistics:[HTTP-STATISTICS] P00 INFO: stanza-delete command end: completed successfully db must not exist for successful delete > list backup ------------------------------------------------------------------------------------------------------------------------------------ db must not exist for successful delete > list archive ------------------------------------------------------------------------------------------------------------------------------------ pgbackrest-release-2.24/test/expect/real-all-001.log000066400000000000000000000421641362531507100221570ustar00rootroot00000000000000run 001 - bkp 0, sby 0, dst db-master, cmp 0, s3 0, enc 0 ========================================================= stanza-create db - main create stanza info files (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db stanza-create ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on missing archive.info file (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ full backup - fail on archive_mode=off (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on archive_mode=off (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ full backup - fail on invalid archive_command (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on invalid archive_command (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on archive timeout when archive-check=n (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=0.1 --no-archive-check --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - verify success (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=5 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on archive mismatch after upgrade (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on archive timeout (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on backup info mismatch (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=5 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - verify success after backup (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=5 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ stanza-create db - fail on backup info file missing from non-empty dir (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db stanza-create ------------------------------------------------------------------------------------------------------------------------------------ stanza-create db - fail on database mismatch with directory (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --pg1-path=[TEST_PATH]/db-master/db/testbase/ stanza-create ------------------------------------------------------------------------------------------------------------------------------------ stanza-create db - successfully create stanza files to be upgraded (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --pg1-path=[TEST_PATH]/db-master/db/testbase/ --no-online --force stanza-create ------------------------------------------------------------------------------------------------------------------------------------ stanza-upgrade db - upgrade stanza files online (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db stanza-upgrade ------------------------------------------------------------------------------------------------------------------------------------ full backup - fail on backup lock exists (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ full backup - update during backup (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --buffer-size=[BUFFER-SIZE] --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg1-socket-path=[TEST_PATH]/db-master/db [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y start-fast=y stop all stanzas (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf stop ------------------------------------------------------------------------------------------------------------------------------------ incr backup - attempt backup when stopped (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ start all stanzas (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf start ------------------------------------------------------------------------------------------------------------------------------------ incr backup - fail on archive_mode=always (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ incr backup - update during backup (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stop-auto --buffer-size=[BUFFER-SIZE] --delta --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg1-socket-path=[TEST_PATH]/db-master/db [global] archive-async=y buffer-size=[BUFFER-SIZE] compress=n compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y start-fast=y check db - check command with tablespace (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=5 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ restore, type 'default', expect exit 38 - postmaster running (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --link-all --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ restore, type 'default', expect exit 40 - path not empty (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --link-all --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ restore, type 'default' (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --db-include=test2 --db-include=test3 --buffer-size=[BUFFER-SIZE] --link-all --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' restore, force, backup '[BACKUP-FULL-1]', type 'immediate', target-action=promote (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --force --set=[BACKUP-FULL-1] --type=immediate --link-all --target-action=promote --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' recovery_target = 'immediate' recovery_target_action = 'promote' restore, force, backup '[BACKUP-INCR-1]', type 'xid', target '[XID-TARGET-1]', target-action=promote (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --force --set=[BACKUP-INCR-1] --tablespace-map-all=../../tablespace --type=xid --target="[XID-TARGET-1]" --link-all --target-action=promote --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' recovery_target_xid = '[XID-TARGET-1]' recovery_target_action = 'promote' restore, type 'preserve' (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --type=preserve --link-all --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' recovery_target_xid = '[XID-TARGET-1]' recovery_target_action = 'promote' restore delta, type 'time', target '[TIMESTAMP-TARGET-1]', target-action=promote (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --type=time --target="[TIMESTAMP-TARGET-1]" --link-all --target-action=promote --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' recovery_target_time = '[TIMESTAMP-TARGET-1]' recovery_target_action = 'promote' restore delta, backup '[BACKUP-INCR-1]', type 'xid', target '[XID-TARGET-1]', exclusive, target-action=promote (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --set=[BACKUP-INCR-1] --type=xid --target="[XID-TARGET-1]" --target-exclusive --link-all --target-action=promote --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' recovery_target_xid = '[XID-TARGET-1]' recovery_target_inclusive = 'false' recovery_target_action = 'promote' restore delta, force, type 'name', target 'backrest', target-action=promote (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --force --type=name --target="backrest" --link-all --target-action=promote --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' recovery_target_name = 'backrest' recovery_target_action = 'promote' restore delta, backup '[BACKUP-INCR-1]', type 'standby', timeline '4' (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --set=[BACKUP-INCR-1] --type=standby --target-timeline="4" --link-all --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' standby_mode = 'on' recovery_target_timeline = '4' incr backup - fail on --no-online (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ incr backup - succeed on --no-online with --force (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --force --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg1-socket-path=[TEST_PATH]/db-master/db [global] archive-async=y buffer-size=[BUFFER-SIZE] compress=n compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y start-fast=y pgbackrest-release-2.24/test/expect/real-all-002.log000066400000000000000000000241561362531507100221610ustar00rootroot00000000000000run 002 - bkp 0, sby 1, dst db-master, cmp 0, s3 0, enc 0 ========================================================= stanza-create db - main create stanza info files (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db stanza-create ------------------------------------------------------------------------------------------------------------------------------------ full backup - update during backup (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --buffer-size=[BUFFER-SIZE] --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg1-socket-path=[TEST_PATH]/db-master/db pg2-host=bogus pg2-host-cmd=[BACKREST-BIN] pg2-host-config=[TEST_PATH]/db-standby/pgbackrest.conf pg2-host-user=[USER-1] pg2-path=[TEST_PATH]/db-standby/db/base pg8-host=db-standby pg8-host-cmd=[BACKREST-BIN] pg8-host-config=[TEST_PATH]/db-standby/pgbackrest.conf pg8-host-user=[USER-1] pg8-path=[TEST_PATH]/db-standby/db/base [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y start-fast=y + supplemental file: [TEST_PATH]/db-standby/pgbackrest.conf ----------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-standby/db/base pg1-port=6544 pg1-socket-path=[TEST_PATH]/db-standby/db [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-standby/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-standby/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-host=db-master repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/db-master/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-standby/spool restore, type 'standby', remap - restore backup on replica (db-standby host) > [CONTAINER-EXEC] db-standby [BACKREST-BIN] --config=[TEST_PATH]/db-standby/pgbackrest.conf --recovery-option="primary_conninfo=host=db-master port=6543 user=replicator" --type=standby --link-map="pg_xlog=[TEST_PATH]/db-standby/db/pg_xlog" --link-all --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-standby/db/base/recovery.conf ----------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] primary_conninfo = 'host=db-master port=6543 user=replicator' restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-standby/pgbackrest.conf --stanza=db archive-get %f "%p"' standby_mode = 'on' full backup - backup from standby, failure to access at least one standby (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --pg8-host=bogus --backup-standby --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ full backup - backup from standby (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --repo1-retention-full=1 --backup-standby --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg1-socket-path=[TEST_PATH]/db-master/db pg2-host=bogus pg2-host-cmd=[BACKREST-BIN] pg2-host-config=[TEST_PATH]/db-standby/pgbackrest.conf pg2-host-user=[USER-1] pg2-path=[TEST_PATH]/db-standby/db/base pg8-host=db-standby pg8-host-cmd=[BACKREST-BIN] pg8-host-config=[TEST_PATH]/db-standby/pgbackrest.conf pg8-host-user=[USER-1] pg8-path=[TEST_PATH]/db-standby/db/base [global] archive-async=y buffer-size=[BUFFER-SIZE] compress=n compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y start-fast=y + supplemental file: [TEST_PATH]/db-standby/pgbackrest.conf ----------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-standby/db/base pg1-port=6544 pg1-socket-path=[TEST_PATH]/db-standby/db [db:restore] [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-standby/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-standby/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-host=db-master repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/db-master/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-standby/spool check db - verify check command on standby (db-standby host) > [CONTAINER-EXEC] db-standby [BACKREST-BIN] --config=[TEST_PATH]/db-standby/pgbackrest.conf --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ incr backup - update during backup (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stop-auto --buffer-size=[BUFFER-SIZE] --delta --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg1-socket-path=[TEST_PATH]/db-master/db pg2-host=bogus pg2-host-cmd=[BACKREST-BIN] pg2-host-config=[TEST_PATH]/db-standby/pgbackrest.conf pg2-host-user=[USER-1] pg2-path=[TEST_PATH]/db-standby/db/base pg8-host=db-standby pg8-host-cmd=[BACKREST-BIN] pg8-host-config=[TEST_PATH]/db-standby/pgbackrest.conf pg8-host-user=[USER-1] pg8-path=[TEST_PATH]/db-standby/db/base [global] archive-async=y buffer-size=[BUFFER-SIZE] compress=n compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/db-master/repo spool-path=[TEST_PATH]/db-master/spool [global:backup] archive-copy=y start-fast=y + supplemental file: [TEST_PATH]/db-standby/pgbackrest.conf ----------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-standby/db/base pg1-port=6544 pg1-socket-path=[TEST_PATH]/db-standby/db [db:restore] [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 db-timeout=45 lock-path=[TEST_PATH]/db-standby/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-standby/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-host=db-master repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/db-master/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-standby/spool restore, type 'default' (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --buffer-size=[BUFFER-SIZE] --link-all --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' restore, force, backup '[BACKUP-FULL-1]', type 'immediate', target-action=promote (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --force --set=[BACKUP-FULL-1] --type=immediate --link-all --target-action=promote --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' recovery_target = 'immediate' recovery_target_action = 'promote' restore delta, type 'time', target '[TIMESTAMP-TARGET-1]', target-action=promote (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --type=time --target="[TIMESTAMP-TARGET-1]" --link-all --target-action=promote --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' recovery_target_time = '[TIMESTAMP-TARGET-1]' recovery_target_action = 'promote' pgbackrest-release-2.24/test/expect/real-all-003.log000066400000000000000000000237161362531507100221630ustar00rootroot00000000000000run 003 - bkp 0, sby 1, dst db-standby, cmp 0, s3 0, enc 0 ========================================================== stanza-create db - main create stanza info files (db-standby host) > [CONTAINER-EXEC] db-standby [BACKREST-BIN] --config=[TEST_PATH]/db-standby/pgbackrest.conf --stanza=db stanza-create ------------------------------------------------------------------------------------------------------------------------------------ full backup - update during backup (db-standby host) > [CONTAINER-EXEC] db-standby [BACKREST-BIN] --config=[TEST_PATH]/db-standby/pgbackrest.conf --buffer-size=[BUFFER-SIZE] --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg1-socket-path=[TEST_PATH]/db-master/db [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-host=db-standby repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/db-standby/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/db-standby/pgbackrest.conf ----------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-standby/db/base pg1-port=6544 pg1-socket-path=[TEST_PATH]/db-standby/db pg2-host=bogus pg2-host-cmd=[BACKREST-BIN] pg2-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg2-host-user=[USER-1] pg2-path=[TEST_PATH]/db-master/db/base pg8-host=db-master pg8-host-cmd=[BACKREST-BIN] pg8-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg8-host-user=[USER-1] pg8-path=[TEST_PATH]/db-master/db/base [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-standby/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-standby/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/db-standby/repo spool-path=[TEST_PATH]/db-standby/spool [global:backup] archive-copy=y start-fast=y restore, type 'standby', remap - restore backup on replica (db-standby host) > [CONTAINER-EXEC] db-standby [BACKREST-BIN] --config=[TEST_PATH]/db-standby/pgbackrest.conf --recovery-option="primary_conninfo=host=db-master port=6543 user=replicator" --type=standby --link-map="pg_xlog=[TEST_PATH]/db-standby/db/pg_xlog" --link-all --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-standby/db/base/recovery.conf ----------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] primary_conninfo = 'host=db-master port=6543 user=replicator' restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-standby/pgbackrest.conf --stanza=db archive-get %f "%p"' standby_mode = 'on' full backup - backup from standby, failure to reach master (db-standby host) > [CONTAINER-EXEC] db-standby [BACKREST-BIN] --config=[TEST_PATH]/db-standby/pgbackrest.conf --pg8-host=bogus --backup-standby --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ full backup - backup from standby (db-standby host) > [CONTAINER-EXEC] db-standby [BACKREST-BIN] --config=[TEST_PATH]/db-standby/pgbackrest.conf --repo1-retention-full=1 --backup-standby --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg1-socket-path=[TEST_PATH]/db-master/db [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-host=db-standby repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/db-standby/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/db-standby/pgbackrest.conf ----------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-standby/db/base pg1-port=6544 pg1-socket-path=[TEST_PATH]/db-standby/db pg2-host=bogus pg2-host-cmd=[BACKREST-BIN] pg2-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg2-host-user=[USER-1] pg2-path=[TEST_PATH]/db-master/db/base pg8-host=db-master pg8-host-cmd=[BACKREST-BIN] pg8-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg8-host-user=[USER-1] pg8-path=[TEST_PATH]/db-master/db/base [db:restore] [global] archive-async=y buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-standby/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-standby/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/db-standby/repo spool-path=[TEST_PATH]/db-standby/spool [global:backup] archive-copy=y start-fast=y incr backup - update during backup (db-standby host) > [CONTAINER-EXEC] db-standby [BACKREST-BIN] --config=[TEST_PATH]/db-standby/pgbackrest.conf --stop-auto --buffer-size=[BUFFER-SIZE] --delta --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg1-socket-path=[TEST_PATH]/db-master/db [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-host=db-standby repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/db-standby/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/db-standby/pgbackrest.conf ----------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-standby/db/base pg1-port=6544 pg1-socket-path=[TEST_PATH]/db-standby/db pg2-host=bogus pg2-host-cmd=[BACKREST-BIN] pg2-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg2-host-user=[USER-1] pg2-path=[TEST_PATH]/db-master/db/base pg8-host=db-master pg8-host-cmd=[BACKREST-BIN] pg8-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg8-host-user=[USER-1] pg8-path=[TEST_PATH]/db-master/db/base [db:restore] [global] archive-async=y buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-standby/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-standby/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/db-standby/repo spool-path=[TEST_PATH]/db-standby/spool [global:backup] archive-copy=y start-fast=y restore, type 'default' (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --buffer-size=[BUFFER-SIZE] --link-all --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' restore, force, backup '[BACKUP-FULL-1]', type 'immediate', target-action=promote (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --force --set=[BACKUP-FULL-1] --type=immediate --link-all --target-action=promote --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' recovery_target = 'immediate' recovery_target_action = 'promote' restore delta, type 'time', target '[TIMESTAMP-TARGET-1]', target-action=promote (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --type=time --target="[TIMESTAMP-TARGET-1]" --link-all --target-action=promote --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' recovery_target_time = '[TIMESTAMP-TARGET-1]' recovery_target_action = 'promote' pgbackrest-release-2.24/test/expect/real-all-004.log000066400000000000000000000413621362531507100221610ustar00rootroot00000000000000run 004 - bkp 1, sby 0, dst backup, cmp 1, s3 0, enc 1 ====================================================== stanza-create db - main create stanza info files (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db stanza-create ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on missing archive.info file (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ full backup - fail on archive_mode=off (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on archive_mode=off (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on archive_mode=off (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ full backup - fail on invalid archive_command (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on invalid archive_command (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on invalid archive_command (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on archive timeout when archive-check=n (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=0.1 --no-archive-check --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - verify success (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=5 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - verify success (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=5 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on archive mismatch after upgrade (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on archive mismatch after upgrade (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on archive timeout (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on archive timeout (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on backup info mismatch (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=5 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on backup info mismatch (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=5 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - verify success after backup (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=5 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - verify success after backup (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=5 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ stanza-create db - fail on backup info file missing from non-empty dir (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db stanza-create ------------------------------------------------------------------------------------------------------------------------------------ stanza-create db - fail on database mismatch with directory (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --pg1-path=[TEST_PATH]/db-master/db/testbase/ stanza-create ------------------------------------------------------------------------------------------------------------------------------------ stanza-create db - successfully create stanza files to be upgraded (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --pg1-path=[TEST_PATH]/db-master/db/testbase/ --no-online --force stanza-create ------------------------------------------------------------------------------------------------------------------------------------ stanza-upgrade db - upgrade stanza files online (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db stanza-upgrade ------------------------------------------------------------------------------------------------------------------------------------ full backup - update during backup (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --buffer-size=[BUFFER-SIZE] --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg1-socket-path=[TEST_PATH]/db-master/db [global] buffer-size=[BUFFER-SIZE] compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 [global] buffer-size=[BUFFER-SIZE] compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-cipher-pass=x repo1-cipher-type=aes-256-cbc repo1-path=[TEST_PATH]/backup/repo [global:backup] archive-copy=y start-fast=y stop all stanzas (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf stop ------------------------------------------------------------------------------------------------------------------------------------ incr backup - attempt backup when stopped (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ start all stanzas (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf start ------------------------------------------------------------------------------------------------------------------------------------ incr backup - update during backup (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stop-auto --buffer-size=[BUFFER-SIZE] --delta --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg1-socket-path=[TEST_PATH]/db-master/db [global] buffer-size=[BUFFER-SIZE] compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 [global] archive-async=y buffer-size=[BUFFER-SIZE] compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-cipher-pass=x repo1-cipher-type=aes-256-cbc repo1-path=[TEST_PATH]/backup/repo [global:backup] archive-copy=y start-fast=y check db - check command with tablespace (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=5 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ restore, type 'default' (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --buffer-size=[BUFFER-SIZE] --link-all --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' restore delta, type 'time', target '[TIMESTAMP-TARGET-1]', target-action=promote (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --type=time --target="[TIMESTAMP-TARGET-1]" --link-all --target-action=promote --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' recovery_target_time = '[TIMESTAMP-TARGET-1]' recovery_target_action = 'promote' incr backup - fail on --no-online (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ incr backup - succeed on --no-online with --force (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --force --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg1-socket-path=[TEST_PATH]/db-master/db [global] buffer-size=[BUFFER-SIZE] compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 [global] archive-async=y buffer-size=[BUFFER-SIZE] compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-cipher-pass=x repo1-cipher-type=aes-256-cbc repo1-path=[TEST_PATH]/backup/repo [global:backup] archive-copy=y start-fast=y stop all stanzas (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf stop ------------------------------------------------------------------------------------------------------------------------------------ stop db stanza (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db stop ------------------------------------------------------------------------------------------------------------------------------------ stanza-delete db - delete stanza with --force when pgbackrest on pg host not accessible (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --force stanza-delete ------------------------------------------------------------------------------------------------------------------------------------ start all stanzas (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf start ------------------------------------------------------------------------------------------------------------------------------------ start all stanzas (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf start ------------------------------------------------------------------------------------------------------------------------------------ pgbackrest-release-2.24/test/expect/real-all-005.log000066400000000000000000000305761362531507100221670ustar00rootroot00000000000000run 005 - bkp 1, sby 1, dst backup, cmp , s3 0, enc 0 ===================================================== stanza-create db - main create stanza info files (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db stanza-create ------------------------------------------------------------------------------------------------------------------------------------ full backup - update during backup (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --buffer-size=[BUFFER-SIZE] --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg1-socket-path=[TEST_PATH]/db-master/db [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/db-standby/pgbackrest.conf ----------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-standby/db/base pg1-port=6544 pg1-socket-path=[TEST_PATH]/db-standby/db [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-standby/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-standby/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-standby/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg2-host=bogus pg2-host-cmd=[BACKREST-BIN] pg2-host-config=[TEST_PATH]/db-standby/pgbackrest.conf pg2-host-user=[USER-1] pg2-path=[TEST_PATH]/db-standby/db/base pg8-host=db-standby pg8-host-cmd=[BACKREST-BIN] pg8-host-config=[TEST_PATH]/db-standby/pgbackrest.conf pg8-host-user=[USER-1] pg8-path=[TEST_PATH]/db-standby/db/base pg8-port=6544 [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/backup/repo [global:backup] archive-copy=y start-fast=y restore, type 'standby', remap - restore backup on replica (db-standby host) > [CONTAINER-EXEC] db-standby [BACKREST-BIN] --config=[TEST_PATH]/db-standby/pgbackrest.conf --recovery-option="primary_conninfo=host=db-master port=6543 user=replicator" --type=standby --link-map="pg_xlog=[TEST_PATH]/db-standby/db/pg_xlog" --link-all --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-standby/db/base/recovery.conf ----------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] primary_conninfo = 'host=db-master port=6543 user=replicator' restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-standby/pgbackrest.conf --stanza=db archive-get %f "%p"' standby_mode = 'on' full backup - backup from standby, failure to access at least one standby (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --pg8-host=bogus --backup-standby --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ full backup - backup from standby (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --repo1-retention-full=1 --backup-standby --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg1-socket-path=[TEST_PATH]/db-master/db [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/db-standby/pgbackrest.conf ----------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-standby/db/base pg1-port=6544 pg1-socket-path=[TEST_PATH]/db-standby/db [db:restore] [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-standby/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-standby/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-standby/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg2-host=bogus pg2-host-cmd=[BACKREST-BIN] pg2-host-config=[TEST_PATH]/db-standby/pgbackrest.conf pg2-host-user=[USER-1] pg2-path=[TEST_PATH]/db-standby/db/base pg8-host=db-standby pg8-host-cmd=[BACKREST-BIN] pg8-host-config=[TEST_PATH]/db-standby/pgbackrest.conf pg8-host-user=[USER-1] pg8-path=[TEST_PATH]/db-standby/db/base pg8-port=6544 [global] archive-async=y buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/backup/repo [global:backup] archive-copy=y start-fast=y check db - verify check command on standby (db-standby host) > [CONTAINER-EXEC] db-standby [BACKREST-BIN] --config=[TEST_PATH]/db-standby/pgbackrest.conf --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ incr backup - update during backup (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stop-auto --buffer-size=[BUFFER-SIZE] --delta --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg1-socket-path=[TEST_PATH]/db-master/db [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/db-standby/pgbackrest.conf ----------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-standby/db/base pg1-port=6544 pg1-socket-path=[TEST_PATH]/db-standby/db [db:restore] [global] buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-standby/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-standby/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-standby/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg2-host=bogus pg2-host-cmd=[BACKREST-BIN] pg2-host-config=[TEST_PATH]/db-standby/pgbackrest.conf pg2-host-user=[USER-1] pg2-path=[TEST_PATH]/db-standby/db/base pg8-host=db-standby pg8-host-cmd=[BACKREST-BIN] pg8-host-config=[TEST_PATH]/db-standby/pgbackrest.conf pg8-host-user=[USER-1] pg8-path=[TEST_PATH]/db-standby/db/base pg8-port=6544 [global] archive-async=y buffer-size=[BUFFER-SIZE] compress=n compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n protocol-timeout=60 repo1-path=[TEST_PATH]/backup/repo [global:backup] archive-copy=y start-fast=y restore, type 'default' (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --buffer-size=[BUFFER-SIZE] --link-all --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' restore, force, backup '[BACKUP-FULL-1]', type 'immediate', target-action=promote (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --force --set=[BACKUP-FULL-1] --type=immediate --link-all --target-action=promote --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' recovery_target = 'immediate' recovery_target_action = 'promote' restore delta, type 'time', target '[TIMESTAMP-TARGET-1]', target-action=promote (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --type=time --target="[TIMESTAMP-TARGET-1]" --link-all --target-action=promote --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' recovery_target_time = '[TIMESTAMP-TARGET-1]' recovery_target_action = 'promote' pgbackrest-release-2.24/test/expect/real-all-006.log000066400000000000000000000315161362531507100221630ustar00rootroot00000000000000run 006 - bkp 1, sby 0, dst backup, cmp 1, s3 1, enc 0 ====================================================== stanza-create db - main create stanza info files (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db stanza-create ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on missing archive.info file (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ full backup - fail on archive_mode=off (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on archive_mode=off (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on archive_mode=off (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ full backup - fail on invalid archive_command (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on invalid archive_command (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on invalid archive_command (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on archive timeout when archive-check=n (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=0.1 --no-archive-check --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - verify success (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=5 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - verify success (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=5 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on archive mismatch after upgrade (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on archive mismatch after upgrade (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on archive timeout (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on archive timeout (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=0.1 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on backup info mismatch (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=5 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - fail on backup info mismatch (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=5 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - verify success after backup (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --archive-timeout=5 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ check db - verify success after backup (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=5 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ stanza-create db - fail on backup info file missing from non-empty dir (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db stanza-create ------------------------------------------------------------------------------------------------------------------------------------ stanza-create db - fail on database mismatch with directory (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --pg1-path=[TEST_PATH]/db-master/db/testbase/ stanza-create ------------------------------------------------------------------------------------------------------------------------------------ stanza-create db - successfully create stanza files to be upgraded (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --pg1-path=[TEST_PATH]/db-master/db/testbase/ --no-online --force stanza-create ------------------------------------------------------------------------------------------------------------------------------------ stanza-upgrade db - upgrade stanza files online (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db stanza-upgrade ------------------------------------------------------------------------------------------------------------------------------------ full backup - update during backup (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --buffer-size=[BUFFER-SIZE] --type=full --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg1-socket-path=[TEST_PATH]/db-master/db [global] buffer-size=[BUFFER-SIZE] compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 [global] buffer-size=[BUFFER-SIZE] compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-path=/ repo1-s3-bucket=pgbackrest-dev repo1-s3-endpoint=s3.amazonaws.com repo1-s3-key=accessKey1 repo1-s3-key-secret=verySecretKey1 repo1-s3-region=us-east-1 repo1-s3-verify-ssl=n repo1-type=s3 [global:backup] archive-copy=y start-fast=y incr backup - update during backup (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stop-auto --buffer-size=[BUFFER-SIZE] --delta --stanza=db backup ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/pgbackrest.conf ---------------------------------------------------------- [db] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 pg1-socket-path=[TEST_PATH]/db-master/db [global] buffer-size=[BUFFER-SIZE] compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/db-master/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/db-master/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-host=backup repo1-host-cmd=[BACKREST-BIN] repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf repo1-host-user=[USER-1] spool-path=[TEST_PATH]/db-master/spool + supplemental file: [TEST_PATH]/backup/pgbackrest.conf ------------------------------------------------------- [db] pg1-host=db-master pg1-host-cmd=[BACKREST-BIN] pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf pg1-host-user=[USER-1] pg1-path=[TEST_PATH]/db-master/db/base pg1-port=6543 [global] archive-async=y buffer-size=[BUFFER-SIZE] compress-level=3 compress-level-network=1 db-timeout=45 lock-path=[TEST_PATH]/backup/lock log-level-console=detail log-level-file=[LOG-LEVEL-FILE] log-level-stderr=off log-path=[TEST_PATH]/backup/log log-subprocess=[LOG-SUBPROCESS] log-timestamp=n process-max=2 protocol-timeout=60 repo1-path=/ repo1-s3-bucket=pgbackrest-dev repo1-s3-endpoint=s3.amazonaws.com repo1-s3-key=accessKey1 repo1-s3-key-secret=verySecretKey1 repo1-s3-region=us-east-1 repo1-s3-verify-ssl=n repo1-type=s3 [global:backup] archive-copy=y start-fast=y check db - check command with tablespace (backup host) > [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=5 --stanza=db check ------------------------------------------------------------------------------------------------------------------------------------ restore, type 'default' (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --buffer-size=[BUFFER-SIZE] --link-all --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --buffer-size=[BUFFER-SIZE] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' restore delta, type 'time', target '[TIMESTAMP-TARGET-1]', target-action=promote (db-master host) > [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --delta --type=time --target="[TIMESTAMP-TARGET-1]" --link-all --target-action=promote --stanza=db restore ------------------------------------------------------------------------------------------------------------------------------------ + supplemental file: [TEST_PATH]/db-master/db/base/recovery.conf ---------------------------------------------------------------- # Recovery settings generated by pgBackRest restore on [TIMESTAMP] restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get %f "%p"' recovery_target_time = '[TIMESTAMP-TARGET-1]' recovery_target_action = 'promote' pgbackrest-release-2.24/test/lib/000077500000000000000000000000001362531507100167345ustar00rootroot00000000000000pgbackrest-release-2.24/test/lib/pgBackRestTest/000077500000000000000000000000001362531507100216215ustar00rootroot00000000000000pgbackrest-release-2.24/test/lib/pgBackRestTest/Common/000077500000000000000000000000001362531507100230515ustar00rootroot00000000000000pgbackrest-release-2.24/test/lib/pgBackRestTest/Common/BuildTest.pm000066400000000000000000000246211362531507100253130ustar00rootroot00000000000000#################################################################################################################################### # Build Binaries and Auto-Generate Code #################################################################################################################################### package pgBackRestTest::Common::BuildTest; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; # use Cwd qw(abs_path); use Exporter qw(import); our @EXPORT = qw(); use pgBackRest::Common::Log; use pgBackRest::Common::String; #################################################################################################################################### # VM hash keywords #################################################################################################################################### use constant BUILD_AUTO_H => 'build.auto.h'; push @EXPORT, qw(BUILD_AUTO_H); #################################################################################################################################### # Save contents to a file if the file is missing or the contents are different. This saves write IO and prevents the timestamp from # changing. #################################################################################################################################### sub buildPutDiffers { my $oStorage = shift; my $strFile = shift; my $strContentNew = shift; # Attempt to load the file my $bSave = true; my $oFile = $oStorage->openRead($strFile, {bIgnoreMissing => true}); # If file was found see if the content is the same if (defined($oFile)) { my $strContentFile = ${$oStorage->get($oFile)}; if ((defined($strContentFile) ? $strContentFile : '') eq (defined($strContentNew) ? $strContentNew : '')) { $bSave = false; } } # Save if the contents are different or missing if ($bSave) { $oStorage->put($oStorage->openWrite($strFile, {bPathCreate => true}), $strContentNew); } # Was the file saved? return $bSave; } push @EXPORT, qw(buildPutDiffers); #################################################################################################################################### # Find last modification time in a list of directories, with optional filters #################################################################################################################################### sub buildLastModTime { my $oStorage = shift; my $strBasePath = shift; my $rstrySubPath = shift; my $strPattern = shift; my $lTimestampLast = 0; foreach my $strSubPath (defined($rstrySubPath) ? @{$rstrySubPath} : ('')) { my $hManifest = $oStorage->manifest($strBasePath . ($strSubPath eq '' ? '' : "/${strSubPath}")); foreach my $strFile (sort(keys(%{$hManifest}))) { next if (defined($strPattern) && $strFile !~ /$strPattern/); if ($hManifest->{$strFile}{type} eq 'f' && $hManifest->{$strFile}{modification_time} > $lTimestampLast) { $lTimestampLast = $hManifest->{$strFile}{modification_time}; } } } if ($lTimestampLast == 0) { confess &log(ERROR, "no files found"); } return $lTimestampLast; } push @EXPORT, qw(buildLastModTime); #################################################################################################################################### # Build a dependency tree for C files #################################################################################################################################### sub buildDependencyTree { my $oStorage = shift; my $rhDependencyTree = {}; # Iterate all files foreach my $strFile (sort(keys(%{$oStorage->manifest('src')}))) { # Only process non-auto files if ($strFile =~ /^[A-Za-z0-9\/]+\.(c|h)$/) { buildDependencyTreeSub($oStorage, $rhDependencyTree, $strFile, true, undef, ['src', 'libc']); } } return $rhDependencyTree; } push @EXPORT, qw(buildDependencyTree); sub buildDependencyTreeSub { my $oStorage = shift; my $rhDependencyTree = shift; my $strFile = shift; my $bErrorOnBuildHeaderMissing = shift; my $strBasePath = shift; my $rstryPath = shift; if (!defined($rhDependencyTree->{$strFile})) { $rhDependencyTree->{$strFile} = {}; # Load file contents my $rstrContent; foreach my $strPath (@{$rstryPath}) { $rstrContent = $oStorage->get( $oStorage->openRead( (defined($strBasePath) ? "${strBasePath}/" : '') . ($strPath ne '' ? "${strPath}/" : '') . "${strFile}", {bIgnoreMissing => true})); if (defined($rstrContent) || $strFile eq BUILD_AUTO_H) { $rhDependencyTree->{$strFile}{path} = $strPath; last; } } if ($strFile ne BUILD_AUTO_H) { if (!defined($rstrContent)) { confess &log(ERROR, "unable to find ${strFile} in " . $oStorage->pathGet($strBasePath) . " + [" . join(', ', @{$rstryPath}) . "]"); } # Process includes my $rhInclude = {}; my $first = true; foreach my $strInclude ($$rstrContent =~ /^\s*\#include [\"\<].+[\"\>]\s*$/mg) { if ($bErrorOnBuildHeaderMissing && $first && $strFile =~ /\.c/ && trim($strInclude) ne ('#include "' . BUILD_AUTO_H . '"')) { confess &log(ERROR, "'" . BUILD_AUTO_H . "' must be included first in '${strFile}'"); } if (trim($strInclude) =~ /^\#include \"/) { $strInclude = (split('"', $strInclude))[1]; $rhInclude->{$strInclude} = true; buildDependencyTreeSub( $oStorage, $rhDependencyTree, $strInclude, $bErrorOnBuildHeaderMissing, $strBasePath, $rstryPath); foreach my $strIncludeSub (@{$rhDependencyTree->{$strInclude}{include}}) { $rhInclude->{$strIncludeSub} = true; } } $first = false; } my @stryInclude = sort(keys(%{$rhInclude})); $rhDependencyTree->{$strFile}{include} = \@stryInclude; } } } push @EXPORT, qw(buildDependencyTreeSub); #################################################################################################################################### # Build Makefile object compile rules #################################################################################################################################### sub buildMakefileObjectCompile { # Assign function parameters, defaults, and log debug info my ( $strOperation, $oStorage, $rhOption, ) = logDebugParam ( __PACKAGE__ . '::buildMakefile', \@_, {name => 'oStorage'}, {name => 'rhOption', optional => true}, ); my $rhDependencyTree = buildDependencyTree($oStorage); my $strMakefile; foreach my $strFile (sort(keys(%{$rhDependencyTree}))) { if ($strFile =~ /^[A-Za-z0-9\/]+\.c$/) { my $strObject = substr($strFile, 0, length($strFile) - 1) . 'o'; my $strDepend = "${strFile}"; foreach my $strInclude (@{$rhDependencyTree->{$strFile}{include}}) { $strDepend .= ' ' . ($oStorage->exists("src/${strInclude}") || $strInclude eq BUILD_AUTO_H ? '' : '../libc/') . $strInclude; } $strMakefile .= (defined($strMakefile) ? "\n" : '') . "${strObject}: ${strDepend}\n" . "\t\$(CC) \$(CPPFLAGS) \$(CFLAGS) \$(CMAKE)" . (defined($rhOption->{$strObject}) ? ' ' . $rhOption->{$strObject} : '') . " -c ${strFile} -o ${strObject}\n"; } } return $strMakefile; } push @EXPORT, qw(buildMakefileObjectCompile); #################################################################################################################################### # Update a Makefile with object compile rules #################################################################################################################################### sub buildMakefile { # Assign function parameters, defaults, and log debug info my ( $strOperation, $oStorage, $strMakefile, $rhOption, ) = logDebugParam ( __PACKAGE__ . '::buildMakefile', \@_, {name => 'oStorage'}, {name => 'strMakeFile'}, {name => 'rhOption', optional => true}, ); # Trim off the end where the object compile is my $strHeader = 'Compile rules'; $strMakefile =~ s/^\#.*${strHeader}(.|\s)+//mg; # Add object compile section $strMakefile .= "# $strHeader\n" . ('#' x 132) . "\n" . buildMakefileObjectCompile($oStorage, {rhOption => $rhOption}); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strMakefile', value => $strMakefile}, ); } push @EXPORT, qw(buildMakefile); #################################################################################################################################### # Load the C library and check pointer size #################################################################################################################################### sub buildLoadLibC { # Load the module dynamically require pgBackRest::LibC; pgBackRest::LibC->import(qw(:debug)); # Load shared object require XSLoader; XSLoader::load('pgBackRest::LibC', '999'); # Do a basic test to make sure it installed correctly if (libcUvSize() != 8) { confess &log(ERROR, 'UVSIZE in test library does not equal 8'); } } push @EXPORT, qw(buildLoadLibC); 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Common/CodeCountTest.pm000066400000000000000000000171101362531507100261320ustar00rootroot00000000000000#################################################################################################################################### # Classify files and generate code totals #################################################################################################################################### package pgBackRestTest::Common::CodeCountTest; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Exporter qw(import); our @EXPORT = qw(); use pgBackRest::Common::Log; use pgBackRestTest::Common::ExecuteTest; #################################################################################################################################### # Scan all files and assign types #################################################################################################################################### sub codeCountScan { my $oStorage = shift; my $strBasePath = shift; # Load YAML require YAML::XS; YAML::XS->import(qw(Load Dump)); my $hCodeCount = {}; # Build manifest of all files my $hManifest = $oStorage->manifest($strBasePath); my $strYamlDetail = undef; foreach my $strFile (sort(keys(%{$hManifest}))) { # Only interested in files next if $hManifest->{$strFile}{type} ne 'f'; # Only exclude these directories/files entirely next if ($strFile =~ '^\.' || $strFile =~ '\.DS_Store$' || $strFile =~ '\.gitignore$' || $strFile =~ '\.md$' || $strFile =~ '\.log$' || $strFile eq 'LICENSE' || $strFile =~ '^doc/example/' || $strFile =~ '^doc/output/' || $strFile =~ '^doc/resource/fake\-cert' || $strFile =~ '\.png$' || $strFile =~ '\.eps$' || $strFile =~ '\.cache$' || $strFile =~ '^doc/site/' || $strFile eq 'libc/typemap' || $strFile eq 'test/Vagrantfile' || $strFile =~ '^test/\.vagrant/' || $strFile =~ '^test/certificate/' || $strFile =~ '^test/code-count/' || $strFile =~ '^test/coverage/' || $strFile =~ '^test/data/' || $strFile =~ '^test/docker/' || $strFile =~ '^test/expect/' || $strFile =~ '^test/lint/' || $strFile =~ '^test/package/' || $strFile =~ '^test/patch/' || $strFile =~ '^test/profile/' || $strFile eq 'test/scratch.txt' || $strFile eq 'test/src/valgrind.suppress' || $strFile eq 'test/src/lcov.conf'); # Classify the source file my $strClass = 'test/harness'; if ($strFile =~ '^doc/xml/' || $strFile eq 'doc/manifest.xml') { $strClass = 'doc/source'; } elsif ($strFile =~ '^doc/' || $strFile =~ '^doc/resource/') { $strClass = 'doc/core'; } elsif ($strFile =~ '^build/' || $strFile =~ '^libc/build/' || $strFile eq 'libc/Makefile.PL' || $strFile eq 'src/Makefile.in' || $strFile eq 'src/configure' || $strFile eq 'src/configure.ac') { $strClass = 'build'; } elsif ($strFile =~ '^test/lib/pgBackRestTest/Module/' || $strFile =~ '^test/src/module/' || $strFile =~ '^libc/t/') { $strClass = 'test/module'; } elsif ($strFile =~ '^src/') { $strClass = 'core'; } # Append auto if an auto-generated file if ($strFile =~ '\.auto\..$' | $strFile =~ 'Auto\.pm$') { $strClass .= '/auto'; } # Force unrecognized file types my $strForceLang = undef; my $strType = undef; if ($strFile =~ '\.xs$') { $strType = 'xs'; $strForceLang = 'XS'; } elsif ($strFile =~ '\.h$' || $strFile =~ '\.h\.in$' || $strFile =~ '\.xsh$') { $strType = 'c/h'; $strForceLang = 'C/C++ Header'; } elsif ($strFile =~ '\.c$') { $strType = 'c'; $strForceLang = 'C'; } elsif ($strFile =~ '\.t$' || $strFile =~ '\.pl$' || $strFile =~ '\.pm$' || $strFile =~ '\.PL$') { $strType = 'perl'; $strForceLang = 'Perl'; } elsif ($strFile =~ '\.yaml$') { $strType = 'yaml'; $strForceLang = 'YAML'; } elsif ($strFile =~ 'Makefile\.in$' || $strFile =~ '^src\/configure') { $strType = 'make'; $strForceLang = 'make'; } elsif ($strFile =~ '\.xml$') { $strType = 'xml'; $strForceLang = 'XML'; } elsif ($strFile =~ '\.css$') { $strType = 'css'; $strForceLang = 'CSS'; } elsif ($strFile =~ '\.dtd$') { $strType = 'dtd'; $strForceLang = 'DTD'; } elsif ($strFile =~ '\.tex$') { $strType = 'latex'; $strForceLang = 'Latex'; } else { confess &log(ERROR, "unable to map type for ${strFile}"); } # Load the file counts my $strYaml = executeTest( "cloc --yaml ${strBasePath}/${strFile}" . " --read-lang-def=${strBasePath}/test/code-count/code.def" . " --force-lang='${strForceLang}'", {bSuppressStdErr => true}); # Error if the file was ignored if ($strYaml =~ '1 file ignored') { confess &log(ERROR, "file type for ${strBasePath}/${strFile} not recognized:\n${strYaml}"); } # Clean out extraneous keys my $hFileCount = Load($strYaml); delete($hFileCount->{header}); delete($hFileCount->{SUM}); # There should only be one key - the file type if (keys(%{$hFileCount}) != 1) { confess &log(ERROR, "more than one file type in ${strBasePath}/${strFile}:\n" . Dump($hFileCount)); } # Translate type my ($strTypeRaw) = keys(%{$hFileCount}); $hFileCount = $hFileCount->{$strTypeRaw}; # Append to yaml file $strYamlDetail .= (defined($strYamlDetail) ? "\n" : '') . "${strFile}:\n" . " class: ${strClass}\n" . " type: ${strType}\n"; # Summarize $hCodeCount->{$strClass}{$strType}{code} += $hFileCount->{code}; $hCodeCount->{$strClass}{$strType}{comment} += $hFileCount->{comment}; $hCodeCount->{$strClass}{total}{code} += $hFileCount->{code}; $hCodeCount->{$strClass}{total}{comment} += $hFileCount->{comment}; $hCodeCount->{total}{code} += $hFileCount->{code}; $hCodeCount->{total}{comment} += $hFileCount->{comment}; } # Save the file $oStorage->put( 'test/code-count/file-type.yaml', "# File types for source files in the project\n" . $strYamlDetail); # Reload the file to make sure there aren't any formatting issues Load(${$oStorage->get('test/code-count/file-type.yaml')}); # Display code count summary &log(INFO, "code count summary:\n" . Dump($hCodeCount)); } push @EXPORT, qw(codeCountScan); 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Common/ContainerTest.pm000077500000000000000000000733641362531507100262110ustar00rootroot00000000000000#################################################################################################################################### # ContainerTest.pm - Build containers for testing and documentation #################################################################################################################################### package pgBackRestTest::Common::ContainerTest; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess longmess); use English '-no_match_vars'; use Cwd qw(abs_path); use Digest::SHA qw(sha1_hex); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use Getopt::Long qw(GetOptions); use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Version; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::VmTest; #################################################################################################################################### # User/group definitions #################################################################################################################################### use constant TEST_USER => getpwuid($UID) . ''; push @EXPORT, qw(TEST_USER); use constant TEST_USER_ID => $UID; use constant TEST_GROUP => getgrgid((getpwnam(TEST_USER))[3]) . ''; push @EXPORT, qw(TEST_GROUP); use constant TEST_GROUP_ID => getgrnam(TEST_GROUP) . ''; #################################################################################################################################### # Cert file constants #################################################################################################################################### use constant CERT_FAKE_PATH => '/etc/fake-cert'; use constant CERT_FAKE_CA => CERT_FAKE_PATH . '/ca.crt'; push @EXPORT, qw(CERT_FAKE_CA); use constant CERT_FAKE_SERVER => CERT_FAKE_PATH . '/server.crt'; push @EXPORT, qw(CERT_FAKE_SERVER); use constant CERT_FAKE_SERVER_KEY => CERT_FAKE_PATH . '/server.key'; push @EXPORT, qw(CERT_FAKE_SERVER_KEY); #################################################################################################################################### # Container Debug - speeds container debugging by splitting each section into a separate intermediate container #################################################################################################################################### use constant CONTAINER_DEBUG => false; #################################################################################################################################### # Store cache container checksums #################################################################################################################################### my $hContainerCache; #################################################################################################################################### # Container repo - defines the Docker repository where the containers will be located #################################################################################################################################### sub containerRepo { return PROJECT_EXE . qw(/) . 'test'; } push @EXPORT, qw(containerRepo); #################################################################################################################################### # Section header #################################################################################################################################### sub sectionHeader { return (CONTAINER_DEBUG ? "\n\nRUN \\\n" : " && \\\n\n"); } #################################################################################################################################### # Write the Docker container #################################################################################################################################### sub containerWrite { my $oStorageDocker = shift; my $strTempPath = shift; my $strOS = shift; my $strTitle = shift; my $strImageParent = shift; my $strImage = shift; my $strCopy = shift; my $strScript = shift; my $bForce = shift; my $strTag = containerRepo() . ":${strImage}"; $strScript = "# ${strTitle} Container\n" . "FROM ${strImageParent}" . (defined($strCopy) ? "\n\n${strCopy}" : '') . (defined($strScript) && $strScript ne ''? "\n\nRUN echo '" . (CONTAINER_DEBUG ? 'DEBUG' : 'OPTIMIZED') . " BUILD'" . $strScript : ''); # Search for the image in the cache my $strScriptSha1; my $bCached = false; if ($strImage =~ /\-base$/) { $strScriptSha1 = sha1_hex($strScript); foreach my $strBuild (reverse(keys(%{$hContainerCache}))) { if (defined($hContainerCache->{$strBuild}{$strOS}) && $hContainerCache->{$strBuild}{$strOS} eq $strScriptSha1) { &log(INFO, "Using cached ${strTag}-${strBuild} image (${strScriptSha1}) ..."); $strScript = "# ${strTitle} Container\n" . "FROM ${strTag}-${strBuild}"; $bCached = true; } } } if (!$bCached) { &log(INFO, "Building ${strTag} image" . (defined($strScriptSha1) ? " (${strScriptSha1})" : '') . ' ...'); } # Write the image $oStorageDocker->put("${strTempPath}/${strImage}", trim($strScript) . "\n"); executeTest('docker build' . (defined($bForce) && $bForce ? ' --no-cache' : '') . " -f ${strTempPath}/${strImage} -t ${strTag} ${strTempPath}", {bSuppressStdErr => true}); } #################################################################################################################################### # User/group creation #################################################################################################################################### sub groupCreate { my $strOS = shift; my $strName = shift; my $iId = shift; return "groupadd -g${iId} ${strName}"; } sub userCreate { my $strOS = shift; my $strName = shift; my $iId = shift; my $strGroup = shift; my $oVm = vmGet(); if ($$oVm{$strOS}{&VM_OS_BASE} eq VM_OS_BASE_RHEL) { return "adduser -g${strGroup} -u${iId} -n ${strName}"; } elsif ($$oVm{$strOS}{&VM_OS_BASE} eq VM_OS_BASE_DEBIAN) { return "adduser --uid=${iId} --ingroup=${strGroup} --disabled-password --gecos \"\" ${strName}"; } confess &log(ERROR, "unable to create user for os '${strOS}'"); } #################################################################################################################################### # Setup SSH #################################################################################################################################### sub sshSetup { my $strOS = shift; my $strUser = shift; my $strGroup = shift; my $bControlMaster = shift; my $strUserPath = $strUser eq 'root' ? "/${strUser}" : "/home/${strUser}"; my $strScript = sectionHeader() . "# Setup SSH\n" . " mkdir ${strUserPath}/.ssh && \\\n" . " echo '-----BEGIN RSA PRIVATE KEY-----' > ${strUserPath}/.ssh/id_rsa && \\\n" . " echo 'MIICXwIBAAKBgQDR0yJsZW5d5LcqteiOtv8d+FFeFFHDPI0VTcTOdMn1iDiIP1ou' >> ${strUserPath}/.ssh/id_rsa && \\\n" . " echo 'X3Q2OyNjsBaDbsRJd+sp9IRq1LKX3zsBcgGZANwm0zduuNEPEU94ajS/uRoejIqY' >> ${strUserPath}/.ssh/id_rsa && \\\n" . " echo '/XkKOpnEF6ZbQ2S7TaE4sWeGLvba7kUFs0QTOO+N+nV2dMbdqZf6C8lazwIDAQAB' >> ${strUserPath}/.ssh/id_rsa && \\\n" . " echo 'AoGBAJXa6xzrnFVmwgK5BKzYuX/YF5TPgk2j80ch0ct50buQXH/Cb0/rUH5i4jWS' >> ${strUserPath}/.ssh/id_rsa && \\\n" . " echo 'T6Hy/DFUehnuzpvV6O9auTOhDs3BhEKFRuRLn1nBwTtZny5Hh+cw7azUCEHFCJlz' >> ${strUserPath}/.ssh/id_rsa && \\\n" . " echo 'makCrVbgawtno6oU/pFgQm1FcxD0f+Me5ruNcLHqUZsPQwkRAkEA+8pG+ckOlz6R' >> ${strUserPath}/.ssh/id_rsa && \\\n" . " echo 'AJLIHedmfcrEY9T7sfdo83bzMOz8H5soUUP4aOTLJYCla1LO7JdDnXMGo0KxaHBP' >> ${strUserPath}/.ssh/id_rsa && \\\n" . " echo 'l8j5zDmVewJBANVVPDJr1w37m0FBi37QgUOAijVfLXgyPMxYp2uc9ddjncif0063' >> ${strUserPath}/.ssh/id_rsa && \\\n" . " echo '0Wc0FQefoPszf3CDrHv/RHvhHq97jXDwTb0CQQDgH83NygoS1r57pCw9chzpG/R0' >> ${strUserPath}/.ssh/id_rsa && \\\n" . " echo 'aMEiSPhCvz757fj+qT3aGIal2AJ7/2c/gRZvwrWNETZ3XIZOUKqIkXzJLPjBAkEA' >> ${strUserPath}/.ssh/id_rsa && \\\n" . " echo 'wnP799W2Y8d4/+VX2pMBkF7lG7sSviHEq1sP2BZtPBRQKSQNvw3scM7XcGh/mxmY' >> ${strUserPath}/.ssh/id_rsa && \\\n" . " echo 'yx0qpqfKa8SKbNgI1+4iXQJBAOlg8MJLwkUtrG+p8wf69oCuZsnyv0K6UMDxm6/8' >> ${strUserPath}/.ssh/id_rsa && \\\n" . " echo 'cbvfmvODulYFaIahaqHWEZoRo5CLYZ7gN43WHPOrKxdDL78=' >> ${strUserPath}/.ssh/id_rsa && \\\n" . " echo '-----END RSA PRIVATE KEY-----' >> ${strUserPath}/.ssh/id_rsa && \\\n" . " echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDR0yJsZW5d5LcqteiOtv8d+FFeFFHDPI0VTcTOdMn1iDiIP1ouX3Q2OyNjsBaDbsRJd+sp9I" . "Rq1LKX3zsBcgGZANwm0zduuNEPEU94ajS/uRoejIqY/XkKOpnEF6ZbQ2S7TaE4sWeGLvba7kUFs0QTOO+N+nV2dMbdqZf6C8lazw== " . "user\@pgbackrest-test' > ${strUserPath}/.ssh/authorized_keys && \\\n" . " echo 'Host *' > ${strUserPath}/.ssh/config && \\\n" . " echo ' StrictHostKeyChecking no' >> ${strUserPath}/.ssh/config && \\\n"; if ($bControlMaster) { $strScript .= " echo ' ControlMaster auto' >> ${strUserPath}/.ssh/config && \\\n" . " echo ' ControlPath /tmp/\%r\@\%h:\%p' >> ${strUserPath}/.ssh/config && \\\n" . " echo ' ControlPersist 30' >> ${strUserPath}/.ssh/config && \\\n"; } $strScript .= " chown -R ${strUser}:${strGroup} ${strUserPath}/.ssh && \\\n" . " chmod 700 ${strUserPath}/.ssh && \\\n" . " chmod 600 ${strUserPath}/.ssh/*"; return $strScript; } #################################################################################################################################### # Cert Setup #################################################################################################################################### sub certSetup { my $strOS = shift; my $strScript = sectionHeader() . "# Generate fake certs\n" . " mkdir -p -m 755 /etc/fake-cert && \\\n" . " cd /etc/fake-cert && \\\n" . " openssl genrsa -out ca.key 2048 && \\\n" . " openssl req -new -x509 -extensions v3_ca -key ca.key -out ca.crt -days 99999 \\\n" . " -subj \"/C=US/ST=Country/L=City/O=Organization/CN=pgbackrest.org\" && \\\n" . " openssl genrsa -out server.key 2048 && \\\n" . " openssl req -new -key server.key -out server.csr \\\n" . " -subj \"/C=US/ST=Country/L=City/O=Organization/CN=*.pgbackrest.org\" && \\\n" . " openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 99999 \\\n" . " -sha256 && \\\n" . " chmod 644 /etc/fake-cert/* && \\\n"; my $rhVm = vmGet(); if ($rhVm->{$strOS}{&VM_OS_BASE} eq VM_OS_BASE_RHEL) { if ($strOS eq VM_CO6) { $strScript .= " update-ca-trust enable && \\\n"; } $strScript .= " cp /etc/fake-cert/pgbackrest-test-ca.crt /etc/pki/ca-trust/source/anchors && \\\n" . " update-ca-trust extract"; } elsif ($rhVm->{$strOS}{&VM_OS_BASE} eq VM_OS_BASE_DEBIAN) { $strScript .= " cp /etc/fake-cert/pgbackrest-test-ca.crt /usr/local/share/ca-certificates && \\\n" . " update-ca-certificates"; } else { confess &log(ERROR, "unable to install certificate for $rhVm->{$strOS}{&VM_OS_BASE}"); } return $strScript; } #################################################################################################################################### # Entry point setup #################################################################################################################################### sub entryPointSetup { my $strOS = shift; my $strScript = "\n\n# Start SSH when container starts\n" . 'ENTRYPOINT '; my $oVm = vmGet(); if ($oVm->{$strOS}{&VM_OS_BASE} eq VM_OS_BASE_RHEL || $strOS eq VM_U12) { $strScript .= '/usr/sbin/sshd -D'; } else { $strScript .= 'service ssh restart && bash'; } return $strScript; } #################################################################################################################################### # Build containers #################################################################################################################################### sub containerBuild { my $oStorageDocker = shift; my $strVm = shift; my $bVmForce = shift; # Create temp path my $strTempPath = $oStorageDocker->pathGet('test/.vagrant/docker'); $oStorageDocker->pathCreate($strTempPath, {strMode => '0770', bIgnoreExists => true, bCreateParent => true}); # Load container definitions from yaml require YAML::XS; YAML::XS->import(qw(Load)); $hContainerCache = Load(${$oStorageDocker->get($oStorageDocker->pathGet('test/container.yaml'))}); # Remove old images on force if ($bVmForce) { my $strRegExp = '^' . containerRepo(); if ($strVm ne 'all') { $strRegExp .= "\:${strVm}-"; } executeTest("rm -f ${strTempPath}/" . ($strVm eq 'all' ? '*' : "${strVm}-*")); imageRemove("${strRegExp}.*"); } # VM Images ################################################################################################################################ my $oVm = vmGet(); foreach my $strOS ($strVm eq 'all' ? VM_LIST : ($strVm)) { my $oOS = $oVm->{$strOS}; my $bDocBuild = false; # Deprecated OSs can only be used to build packages my $bDeprecated = $oVm->{$strOS}{&VM_DEPRECATED} ? true : false; # Base image ########################################################################################################################### my $strImageParent = "$$oVm{$strOS}{&VM_IMAGE}"; my $strImage = "${strOS}-base"; my $strCopy = undef; #--------------------------------------------------------------------------------------------------------------------------- my $strScript = sectionHeader() . "# Install packages\n"; if ($$oVm{$strOS}{&VM_OS_BASE} eq VM_OS_BASE_RHEL) { if ($strOS eq VM_CO6 || $strOS eq VM_CO7) { $strScript .= " yum -y install epel-release && \\\n"; } $strScript .= " yum -y update && \\\n" . " yum -y install openssh-server openssh-clients wget sudo valgrind git \\\n" . " perl perl-Digest-SHA perl-DBD-Pg perl-YAML-LibYAML openssl \\\n" . " gcc make perl-ExtUtils-MakeMaker perl-Test-Simple openssl-devel perl-ExtUtils-Embed rpm-build \\\n" . " zlib-devel libxml2-devel lz4-devel"; if ($strOS eq VM_CO6) { $strScript .= ' perl-Time-HiRes perl-parent perl-JSON'; } else { $strScript .= ' perl-JSON-PP'; } } else { $strScript .= " export DEBCONF_NONINTERACTIVE_SEEN=true DEBIAN_FRONTEND=noninteractive && \\\n" . " apt-get update && \\\n" . " apt-get -y install openssh-server wget sudo gcc make valgrind git \\\n" . " libdbd-pg-perl libhtml-parser-perl libssl-dev libperl-dev \\\n" . " libyaml-libyaml-perl tzdata devscripts lintian libxml-checker-perl txt2man debhelper \\\n" . " libppi-html-perl libtemplate-perl libtest-differences-perl zlib1g-dev libxml2-dev pkg-config"; if ($strOS eq VM_U12) { $strScript .= ' libperl5.14'; } else { $strScript .= ' libjson-pp-perl liblz4-dev'; } } # If no specific version of lcov is requested then install the default package if (!defined($oVm->{$strOS}{&VMDEF_LCOV_VERSION})) { $strScript .= ' lcov'; } #--------------------------------------------------------------------------------------------------------------------------- $strScript .= sectionHeader() . "# Regenerate SSH keys\n" . " rm -f /etc/ssh/ssh_host_rsa_key* && \\\n" . " ssh-keygen -t rsa -b 1024 -f /etc/ssh/ssh_host_rsa_key"; if ($$oVm{$strOS}{&VM_OS_BASE} eq VM_OS_BASE_DEBIAN) { $strScript .= sectionHeader() . "# Fix root tty\n" . " sed -i 's/^mesg n/tty -s \\&\\& mesg n/g' /root/.profile"; $strScript .= sectionHeader() . "# Suppress dpkg interactive output\n" . " rm /etc/apt/apt.conf.d/70debconf"; if ($strOS eq VM_U12) { $strScript .= sectionHeader() . "# Create run directory required by SSH (not created automatically on Ubuntu 12.04)\n" . " mkdir -p /var/run/sshd"; } } #--------------------------------------------------------------------------------------------------------------------------- my $strCertPath = 'test/certificate'; my $strCertName = 'pgbackrest-test'; $strCopy = '# Copy Test Certificates'; foreach my $strFile ('-ca.crt', '.crt', '.key') { $oStorageDocker->copy("${strCertPath}/${strCertName}${strFile}", "${strTempPath}/${strCertName}${strFile}"); $strCopy .= "\nCOPY ${strCertName}${strFile} " . CERT_FAKE_PATH . "/${strCertName}${strFile}"; } $strScript .= certSetup($strOS); #--------------------------------------------------------------------------------------------------------------------------- if (defined($oVm->{$strOS}{&VMDEF_LCOV_VERSION})) { my $strLCovVersion = $oVm->{$strOS}{&VMDEF_LCOV_VERSION}; my $strLCovPath = "/root/lcov-${strLCovVersion}"; $strScript .= sectionHeader() . "# Build lcov ${strLCovVersion}\n" . " wget -q -O - https://github.com/linux-test-project/lcov/releases/download/v${strLCovVersion}/" . "lcov-${strLCovVersion}.tar.gz | tar zx -C /root && \\\n" . " make -C ${strLCovPath} install && \\\n" . " rm -rf ${strLCovPath}"; } #--------------------------------------------------------------------------------------------------------------------------- if (!$bDeprecated) { $strScript .= sectionHeader() . "# Install PostgreSQL packages\n"; if ($$oVm{$strOS}{&VM_OS_BASE} eq VM_OS_BASE_RHEL) { $strScript .= " rpm --import http://yum.postgresql.org/RPM-GPG-KEY-PGDG && \\\n"; if ($strOS eq VM_CO6) { $strScript .= " rpm -ivh \\\n" . " http://yum.postgresql.org/9.1/redhat/rhel-6-x86_64/pgdg-centos91-9.1-6.noarch.rpm \\\n" . " http://yum.postgresql.org/9.2/redhat/rhel-6-x86_64/pgdg-centos92-9.2-8.noarch.rpm \\\n" . " https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-6-x86_64/" . "pgdg-redhat-repo-latest.noarch.rpm && \\\n"; } elsif ($strOS eq VM_CO7) { $strScript .= " rpm -ivh \\\n" . " http://yum.postgresql.org/9.2/redhat/rhel-7-x86_64/pgdg-centos92-9.2-3.noarch.rpm \\\n" . " https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/" . "pgdg-redhat-repo-latest.noarch.rpm && \\\n"; } elsif ($strOS eq VM_F30) { $strScript .= " rpm -ivh \\\n" . " https://download.postgresql.org/pub/repos/yum/reporpms/F-30-x86_64/" . "pgdg-fedora-repo-latest.noarch.rpm && \\\n"; } $strScript .= " yum -y install postgresql-devel"; } else { $strScript .= " echo 'deb http://apt.postgresql.org/pub/repos/apt/ " . $$oVm{$strOS}{&VM_OS_REPO} . '-pgdg main' . "' >> /etc/apt/sources.list.d/pgdg.list && \\\n" . " wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - && \\\n" . " apt-get update && \\\n" . " apt-get install -y postgresql-common libpq-dev && \\\n" . " sed -i 's/^\\#create\\_main\\_cluster.*\$/create\\_main\\_cluster \\= false/' " . "/etc/postgresql-common/createcluster.conf"; } if (defined($oOS->{&VM_DB}) && @{$oOS->{&VM_DB}} > 0) { $strScript .= sectionHeader() . "# Install PostgreSQL\n"; if ($$oVm{$strOS}{&VM_OS_BASE} eq VM_OS_BASE_RHEL) { $strScript .= " yum -y install"; } else { $strScript .= " apt-get install -y"; } # Construct list of databases to install foreach my $strDbVersion (@{$oOS->{&VM_DB}}) { if ($$oVm{$strOS}{&VM_OS_BASE} eq VM_OS_BASE_RHEL) { my $strDbVersionNoDot = $strDbVersion; $strDbVersionNoDot =~ s/\.//; $strScript .= " postgresql${strDbVersionNoDot}-server"; } else { $strScript .= " postgresql-${strDbVersion}"; } } } } #--------------------------------------------------------------------------------------------------------------------------- if ($$oVm{$strOS}{&VM_OS_BASE} eq VM_OS_BASE_DEBIAN) { $strScript .= sectionHeader() . "# Cleanup\n"; $strScript .= " apt-get clean"; } containerWrite( $oStorageDocker, $strTempPath, $strOS, 'Base', $strImageParent, $strImage, $strCopy, $strScript, $bVmForce); # Build image ########################################################################################################################### $strImageParent = containerRepo() . ":${strOS}-base"; $strImage = "${strOS}-build"; $strCopy = undef; $strScript = sectionHeader() . "# Create test user\n" . ' ' . groupCreate($strOS, TEST_GROUP, TEST_GROUP_ID) . " && \\\n" . ' ' . userCreate($strOS, TEST_USER, TEST_USER_ID, TEST_GROUP); # Fetch package source if ($$oVm{$strOS}{&VM_OS_BASE} eq VM_OS_BASE_DEBIAN) { $strScript .= sectionHeader() . "# Install pgBackRest package source\n" . " git clone https://salsa.debian.org/postgresql/pgbackrest.git /root/package-src"; } else { # Fetching specific files is fragile but even a shallow clone of the entire pgrpms repo is very expensive. Using # 'git archive' does not seem to work: access denied or repository not exported: /git/pgrpms.git. $strScript .= sectionHeader() . "# Install pgBackRest package source\n" . " mkdir /root/package-src && \\\n" . " wget -O /root/package-src/pgbackrest-conf.patch " . "'https://git.postgresql.org/gitweb/?p=pgrpms.git;a=blob_plain;" . "f=rpm/redhat/master/pgbackrest/master/pgbackrest-conf.patch;hb=refs/heads/master' && \\\n" . " wget -O /root/package-src/pgbackrest-libxmlinclude.patch " . "'https://git.postgresql.org/gitweb/?p=pgrpms.git;a=blob_plain;" . "f=rpm/redhat/master/pgbackrest/master/pgbackrest-libxmlinclude.patch;hb=refs/heads/master' && \\\n" . " wget -O /root/package-src/pgbackrest.spec " . "'https://git.postgresql.org/gitweb/?p=pgrpms.git;a=blob_plain;" . "f=rpm/redhat/master/pgbackrest/master/pgbackrest.spec;hb=refs/heads/master'"; } $strScript .= entryPointSetup($strOS); containerWrite($oStorageDocker, $strTempPath, $strOS, 'Build', $strImageParent, $strImage, $strCopy, $strScript, $bVmForce); # Test image ######################################################################################################################## if (!$bDeprecated) { $strImageParent = containerRepo() . ":${strOS}-base"; $strImage = "${strOS}-test"; $strCopy = undef; $strScript = ''; #--------------------------------------------------------------------------------------------------------------------------- $strScript .= sectionHeader() . "# Create banner to make sure pgBackRest ignores it\n" . " echo '***********************************************' > /etc/issue.net && \\\n" . " echo 'Sample banner to make sure banners are skipped.' >> /etc/issue.net && \\\n" . " echo '' >> /etc/issue.net && \\\n" . " echo 'More banner after a blank line.' >> /etc/issue.net && \\\n" . " echo '***********************************************' >> /etc/issue.net && \\\n" . " echo 'Banner /etc/issue.net' >> /etc/ssh/sshd_config"; $strScript .= sectionHeader() . "# Create test user\n" . ' ' . groupCreate($strOS, TEST_GROUP, TEST_GROUP_ID) . " && \\\n" . ' ' . userCreate($strOS, TEST_USER, TEST_USER_ID, TEST_GROUP) . " && \\\n" . ' mkdir -m 750 /home/' . TEST_USER . "/test && \\\n" . ' chown ' . TEST_USER . ':' . TEST_GROUP . ' /home/' . TEST_USER . "/test"; $strScript .= sectionHeader() . "# Configure sudo\n"; if ($$oVm{$strOS}{&VM_OS_BASE} eq VM_OS_BASE_RHEL) { $strScript .= " echo '%" . TEST_GROUP . " ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/" . TEST_GROUP . " && \\\n" . " sed -i 's/^Defaults requiretty\$/\\# Defaults requiretty/' /etc/sudoers"; } else { $strScript .= " echo '%" . TEST_GROUP . " ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers"; } $strScript .= sshSetup($strOS, TEST_USER, TEST_GROUP, $$oVm{$strOS}{&VM_CONTROL_MASTER}); $strScript .= sectionHeader() . "# Make " . TEST_USER . " home dir readable\n" . ' chmod g+r,g+x /home/' . TEST_USER; $strScript .= entryPointSetup($strOS); containerWrite( $oStorageDocker, $strTempPath, $strOS, 'Test', $strImageParent, $strImage, $strCopy, $strScript, $bVmForce); } } &log(INFO, "Build Complete"); } push @EXPORT, qw(containerBuild); #################################################################################################################################### # containerRemove # # Remove containers that match a regexp. #################################################################################################################################### sub containerRemove { my $strRegExp = shift; foreach my $strContainer (sort(split("\n", trim(executeTest('docker ps -a --format "{{.Names}}"'))))) { if ($strContainer =~ $strRegExp) { executeTest("docker rm -f ${strContainer}", {bSuppressError => true}); } } } push @EXPORT, qw(containerRemove); #################################################################################################################################### # imageRemove # # Remove images that match a regexp. #################################################################################################################################### sub imageRemove { my $strRegExp = shift; foreach my $strImage (sort(split("\n", trim(executeTest('docker images --format "{{.Repository}}:{{.Tag}}"'))))) { if ($strImage =~ $strRegExp) { &log(INFO, "Removing ${strImage} image..."); executeTest("docker rmi -f ${strImage}"); } } } 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Common/CoverageTest.pm000066400000000000000000000537041362531507100260130ustar00rootroot00000000000000#################################################################################################################################### # Generate C Coverage Report #################################################################################################################################### package pgBackRestTest::Common::CoverageTest; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Version; use BackRestDoc::Html::DocHtmlBuilder; use BackRestDoc::Html::DocHtmlElement; #################################################################################################################################### # Generate an lcov configuration file #################################################################################################################################### sub coverageLCovConfigGenerate { my $oStorage = shift; my $strOutFile = shift; my $bCoverageSummary = shift; my $strBranchFilter = 'OBJECT_DEFINE_[A-Z0-9_]+\(|\s{4}[A-Z][A-Z0-9_]+\([^\?]*\)|\s{4}(ASSERT|assert|switch\s)\(|\{\+{0,1}' . ($bCoverageSummary ? 'uncoverable_branch' : 'uncover(ed|able)_branch'); my $strLineFilter = '\{\+{0,1}uncover' . ($bCoverageSummary ? 'able' : '(ed|able)') . '[^_]'; my $strConfig = "# LCOV Settings\n" . "\n" . "# Specify if branch coverage data should be collected and processed\n" . "lcov_branch_coverage=1\n" . "\n" . "# Specify the regular expression of lines to exclude from branch coverage\n" . "#\n" . '# OBJECT_DEFINE_[A-Z0-9_]+\( - exclude object definitions' . "\n" . '# \s{4}[A-Z][A-Z0-9_]+\([^\?]*\) - exclude macros that do not take a conditional parameter and are not themselves a parameter' . "\n" . '# ASSERT/(|assert\( - exclude asserts since it usually not possible to trigger both branches' . "\n" . '# switch \( - lcov requires default: to show complete coverage but --Wswitch-enum enforces all enum values be present' . "\n" . "lcov_excl_br_line=${strBranchFilter}\n" . "\n" . "# Specify the regular expression of lines to exclude\n" . "lcov_excl_line=${strLineFilter}\n" . "\n" . "# Coverage rate limits\n" . "genhtml_hi_limit = 100\n" . "genhtml_med_limit = 90\n" . "\n" . "# Width of line coverage field in source code view\n" . "genhtml_line_field_width = 9\n"; # Write configuration file $oStorage->put($strOutFile, $strConfig); } push @EXPORT, qw(coverageLCovConfigGenerate); #################################################################################################################################### # Generate a C coverage report #################################################################################################################################### sub coverageGenerate { my $oStorage = shift; my $strCoveragePath = shift; my $strOutFile = shift; # Track missing coverage my $rhCoverage = {}; # Find all lcov files in the coverage path my $rhManifest = $oStorage->manifest($strCoveragePath); foreach my $strFileCov (sort(keys(%{$rhManifest}))) { if ($strFileCov =~ /\.lcov$/) { my $strCoverage = ${$oStorage->get("${strCoveragePath}/${strFileCov}")}; # Show that the file is part of the coverage report even if there is no missing coverage my $strFile = substr($strFileCov, 0, length($strFileCov) - 5) . '.c'; $rhCoverage->{$strFile} = undef; my $iBranchLine = -1; my $iBranch = undef; my $iBranchIdx = -1; my $iBranchPart = undef; foreach my $strLine (split("\n", $strCoverage)) { # Check branch coverage if ($strLine =~ /^BRDA\:/) { my @stryData = split("\,", substr($strLine, 5)); if (@stryData < 4) { confess &log(ERROR, "'${strLine}' should have four fields"); } my $strBranchLine = sprintf("%09d", $stryData[0]); if ($iBranchLine != $stryData[0]) { $iBranchLine = $stryData[0]; $iBranch = $stryData[1]; $iBranchIdx = 0; $iBranchPart = 0; } elsif ($iBranch != $stryData[1]) { if ($iBranchPart != 1) { confess &log(ERROR, "line ${iBranchLine}, branch ${iBranch} does not have two parts"); } $iBranch = $stryData[1]; $iBranchIdx++; $iBranchPart = 0; } else { $iBranchPart++; } $rhCoverage->{$strFile}{line}{$strBranchLine}{branch}{$iBranchIdx}{$iBranchPart} = $stryData[3] eq '-' || $stryData[3] eq '0' ? false : true; } # Check line coverage if ($strLine =~ /^DA\:/) { my @stryData = split("\,", substr($strLine, 3)); if (@stryData < 2) { confess &log(ERROR, "'${strLine}' should have two fields"); } my $strBranchLine = sprintf("%09d", $stryData[0]); if ($stryData[1] eq '0') { $rhCoverage->{$strFile}{line}{$strBranchLine}{statement} = 0; } } } } } # Remove branch coverage on lines that are completely covered foreach my $strFile (sort(keys(%{$rhCoverage}))) { foreach my $iLine (sort(keys(%{$rhCoverage->{$strFile}{line}}))) { if (defined($rhCoverage->{$strFile}{line}{$iLine}{branch})) { # We'll assume the line is completely covered my $bCovered = true; foreach my $iBranch (sort(keys(%{$rhCoverage->{$strFile}{line}{$iLine}{branch}}))) { foreach my $iBranchPart (sort(keys(%{$rhCoverage->{$strFile}{line}{$iLine}{branch}{$iBranch}}))) { if (!$rhCoverage->{$strFile}{line}{$iLine}{branch}{$iBranch}{$iBranchPart}) { $bCovered = false; } } } if ($bCovered) { # &log(WARN, "removed branch coverage for ${strFile} line ${iLine}"); if (defined($rhCoverage->{$strFile}{line}{$iLine}{statement})) { delete($rhCoverage->{$strFile}{line}{$iLine}{branch}); } else { delete($rhCoverage->{$strFile}{line}{$iLine}); } } } } } # Remove line when no lines are uncovered foreach my $strFile (sort(keys(%{$rhCoverage}))) { my $bCovered = true; foreach my $iLine (sort(keys(%{$rhCoverage->{$strFile}{line}}))) { $bCovered = false; last; } if ($bCovered) { delete($rhCoverage->{$strFile}{line}); } } # Report on the entire function if any lines in the function are uncovered foreach my $strFile (sort(keys(%{$rhCoverage}))) { if (defined($rhCoverage->{$strFile}{line})) { my $strC = ${$oStorage->get("${strCoveragePath}/${strFile}")}; my @stryC = split("\n", $strC); foreach my $iLine (sort(keys(%{$rhCoverage->{$strFile}{line}}))) { # Run back to the beginning of the function comment for (my $iLineIdx = $iLine; $iLineIdx >= 0; $iLineIdx--) { if (!defined($rhCoverage->{$strFile}{line}{sprintf("%09d", $iLineIdx)})) { $rhCoverage->{$strFile}{line}{sprintf("%09d", $iLineIdx)} = undef; } last if ($stryC[$iLineIdx - 1] =~ '^\/\*'); } # Run forward to the end of the function for (my $iLineIdx = $iLine; $iLineIdx < @stryC; $iLineIdx++) { if (!defined($rhCoverage->{$strFile}{line}{sprintf("%09d", $iLineIdx)})) { $rhCoverage->{$strFile}{line}{sprintf("%09d", $iLineIdx)} = undef; } last if ($stryC[$iLineIdx - 1] eq '}'); } } } } # Build html my $strTitle = PROJECT_NAME . ' Coverage Report'; my $strDarkRed = '#580000'; my $strGray = '#555555'; my $strDarkGray = '#333333'; my $oHtml = new BackRestDoc::Html::DocHtmlBuilder( PROJECT_NAME, $strTitle, undef, undef, undef, true, true, "html\n" . "{\n" . " background-color: ${strGray};\n" . " font-family: Avenir, Corbel, sans-serif;\n" . " color: white;\n" . " font-size: 12pt;\n" . " margin-top: 8px;\n" . " margin-left: 1\%;\n" . " margin-right: 1\%;\n" . " width: 98\%;\n" . "}\n" . "\n" . "body\n" . "{\n" . " margin: 0px auto;\n" . " padding: 0px;\n" . " width: 100\%;\n" . " text-align: justify;\n" . "}\n" . ".title\n" . "{\n" . " width: 100\%;\n" . " text-align: center;\n" . " font-size: 200\%;\n" . "}\n" . "\n" . ".list-table\n" . "{\n" . " width: 100\%;\n" . "}\n" . "\n" . ".list-table-caption\n" . "{\n" . " margin-top: 1em;\n" . " font-size: 130\%;\n" . " margin-bottom: .25em;\n" . "}\n" . "\n" . ".list-table-caption::after\n" . "{\n" . " content: \"Modules Tested for Coverage:\";\n" . "}\n" . "\n" . ".list-table-header-file\n" . "{\n" . " padding-left: .5em;\n" . " padding-right: .5em;\n" . " background-color: ${strDarkGray};\n" . " width: 100\%;\n" . "}\n" . "\n" . ".list-table-row-uncovered\n" . "{\n" . " background-color: ${strDarkRed};\n" . " color: white;\n" . " width: 100\%;\n" . "}\n" . "\n" . ".list-table-row-file\n" . "{\n" . " padding-left: .5em;\n" . " padding-right: .5em;\n" . "}\n" . "\n" . ".report-table\n" . "{\n" . " width: 100\%;\n" . "}\n" . "\n" . ".report-table-caption\n" . "{\n" . " margin-top: 1em;\n" . " font-size: 130\%;\n" . " margin-bottom: .25em;\n" . "}\n" . "\n" . ".report-table-caption::after\n" . "{\n" . " content: \" report:\";\n" . "}\n" . "\n" . ".report-table-header\n" . "{\n" . "}\n" . "\n" . ".report-table-header-line, .report-table-header-branch, .report-table-header-code\n" . "{\n" . " padding-left: .5em;\n" . " padding-right: .5em;\n" . " background-color: ${strDarkGray};\n" . "}\n" . "\n" . ".report-table-header-code\n" . "{\n" . " width: 100\%;\n" . "}\n" . "\n" . ".report-table-row-dot-tr, .report-table-row\n" . "{\n" . " font-family: \"Courier New\", Courier, monospace;\n" . "}\n" . "\n" . ".report-table-row-dot-skip\n" . "{\n" . " height: 1em;\n" . " padding-top: .25em;\n" . " padding-bottom: .25em;\n" . " text-align: center;\n" . "}\n" . "\n" . ".report-table-row-line, .report-table-row-branch, .report-table-row-branch-uncovered," . " .report-table-row-code, .report-table-row-code-uncovered\n" . "{\n" . " padding-left: .5em;\n" . " padding-right: .5em;\n" . "}\n" . "\n" . ".report-table-row-line\n" . "{\n" . " text-align: right;\n" . "}\n" . "\n" . ".report-table-row-branch, .report-table-row-branch-uncovered\n" . "{\n" . " text-align: right;\n" . " white-space: nowrap;\n" . "}\n" . "\n" . ".report-table-row-branch-uncovered\n" . "{\n" . " background-color: ${strDarkRed};\n" . " color: white;\n" . "}\n" . "\n" . ".report-table-row-code, .report-table-row-code-uncovered\n" . "{\n" . " white-space: pre;\n" . "}\n" . "\n" . ".report-table-row-code-uncovered\n" . "{\n" . " background-color: ${strDarkRed};\n" . " color: white;\n" . "}\n"); $oHtml->bodyGet()->addNew(HTML_DIV, 'title', {strContent => $strTitle}); # Build the file list table my $oTable = $oHtml->bodyGet()->addNew(HTML_TABLE, 'list-table'); $oTable->addNew(HTML_DIV, 'list-table-caption'); my $oHeader = $oTable->addNew(HTML_TR, 'list-table-header'); $oHeader->addNew(HTML_TH, 'list-table-header-file', {strContent => 'FILE'}); foreach my $strFile (sort(keys(%{$rhCoverage}))) { my $oRow = $oTable->addNew(HTML_TR, 'list-table-row-' . (defined($rhCoverage->{$strFile}{line}) ? 'uncovered' : 'covered')); $oRow->addNew(HTML_TD, 'list-table-row-file', {strContent => $strFile}); } # Report on files that are missing coverage foreach my $strFile (sort(keys(%{$rhCoverage}))) { if (defined($rhCoverage->{$strFile}{line})) { # Build the file report table $oTable = $oHtml->bodyGet()->addNew(HTML_TABLE, 'report-table'); $oTable->addNew(HTML_DIV, 'report-table-caption', {strContent => "${strFile}"}); $oHeader = $oTable->addNew(HTML_TR, 'report-table-header'); $oHeader->addNew(HTML_TH, 'report-table-header-line', {strContent => 'LINE'}); $oHeader->addNew(HTML_TH, 'report-table-header-branch', {strContent => 'BRANCH'}); $oHeader->addNew(HTML_TH, 'report-table-header-code', {strContent => 'CODE'}); my $strC = ${$oStorage->get("${strCoveragePath}/${strFile}")}; my @stryC = split("\n", $strC); my $iLastLine = undef; foreach my $strLine (sort(keys(%{$rhCoverage->{$strFile}{line}}))) { if (defined($iLastLine) && $strLine != $iLastLine + 1) { my $oRow = $oTable->addNew(HTML_TR, 'report-table-row-dot'); $oRow->addNew(HTML_TD, 'report-table-row-dot-skip', {strExtra => 'colspan="3"'}); } $iLastLine = $strLine; my $iLine = int($strLine); my $oRow = $oTable->addNew(HTML_TR, 'report-table-row'); $oRow->addNew(HTML_TD, 'report-table-row-line', {strContent => $iLine}); my $strBranch; # Show missing branch coverage if (defined($rhCoverage->{$strFile}{line}{$strLine}{branch}) && !defined($rhCoverage->{$strFile}{line}{$strLine}{statement})) { my $iBranchIdx = 0; foreach my $iBranch (sort(keys(%{$rhCoverage->{$strFile}{line}{$strLine}{branch}}))) { $strBranch .= '[' . ($rhCoverage->{$strFile}{line}{$strLine}{branch}{$iBranch}{0} ? '+' : '-') . ' ' . ($rhCoverage->{$strFile}{line}{$strLine}{branch}{$iBranch}{1} ? '+' : '-') . ']'; if ($iBranchIdx == 1) { $strBranch .= '
    '; $iBranchIdx = 0; } else { $strBranch .= ' '; $iBranchIdx++; } } } $oRow->addNew( HTML_TD, 'report-table-row-branch' . (defined($strBranch) ? '-uncovered' : ''), {strContent => $strBranch}); # Color code based on coverage my $bUncovered = defined($rhCoverage->{$strFile}{line}{$strLine}{branch}) || defined($rhCoverage->{$strFile}{line}{$strLine}{statement}); $oRow->addNew( HTML_TD, 'report-table-row-code' . ($bUncovered ? '-uncovered' : ''), {bPre => true, strContent => $stryC[$strLine - 1]}); } } } # Write coverage report $oStorage->put($strOutFile, $oHtml->htmlGet()); } push @EXPORT, qw(coverageGenerate); #################################################################################################################################### # Generate a C coverage summary for the documentation #################################################################################################################################### sub coverageDocSummaryGenerateValue { my $iHit = shift; my $iFound = shift; if (!defined($iFound) || !defined($iHit) || $iFound == 0) { return "---"; } my $fPercent = $iHit * 100 / $iFound; my $strPercent; if ($fPercent == 100) { $strPercent = '100.0'; } elsif ($fPercent > 99.99) { $strPercent = '99.99'; } else { $strPercent = sprintf("%.2f", $fPercent); } return "${iHit}/${iFound} (${strPercent}%)"; } sub coverageDocSummaryGenerate { my $oStorage = shift; my $strCoveragePath = shift; my $strOutFile = shift; # Track coverage summary my $rhSummary; # Find all lcov files in the coverage path my $rhManifest = $oStorage->manifest($strCoveragePath); foreach my $strFileCov (sort(keys(%{$rhManifest}))) { next if $strFileCov =~ /^test\//; if ($strFileCov =~ /\.lcov$/) { my $strCoverage = ${$oStorage->get("${strCoveragePath}/${strFileCov}")}; my $strModule = dirname($strFileCov); foreach my $strLine (split("\n", $strCoverage)) { # Get Line Coverage if ($strLine =~ /^LF\:/) { $rhSummary->{$strModule}{line}{found} += substr($strLine, 3) + 0; $rhSummary->{zzztotal}{line}{found} += substr($strLine, 3) + 0; } if ($strLine =~ /^LH\:/) { $rhSummary->{$strModule}{line}{hit} += substr($strLine, 3) + 0; $rhSummary->{zzztotal}{line}{hit} += substr($strLine, 3) + 0; } # Get Function Coverage if ($strLine =~ /^FNF\:/) { $rhSummary->{$strModule}{function}{found} += substr($strLine, 4) + 0; $rhSummary->{zzztotal}{function}{found} += substr($strLine, 4) + 0; } if ($strLine =~ /^FNH\:/) { $rhSummary->{$strModule}{function}{hit} += substr($strLine, 4) + 0; $rhSummary->{zzztotal}{function}{hit} += substr($strLine, 4) + 0; } # Get Branch Coverage if ($strLine =~ /^BRF\:/) { $rhSummary->{$strModule}{branch}{found} += substr($strLine, 4) + 0; $rhSummary->{zzztotal}{branch}{found} += substr($strLine, 4) + 0; } if ($strLine =~ /^BRH\:/) { $rhSummary->{$strModule}{branch}{hit} += substr($strLine, 4) + 0; $rhSummary->{zzztotal}{branch}{hit} += substr($strLine, 4) + 0; } } } } # use Data::Dumper;confess Dumper($rhSummary); my $strSummary; foreach my $strModule (sort(keys(%{$rhSummary}))) { my $rhModuleData = $rhSummary->{$strModule}; $strSummary .= (defined($strSummary) ? "\n\n" : '') . "\n" . " " . ($strModule eq 'zzztotal' ? 'TOTAL' : $strModule) . "\n" . " " . coverageDocSummaryGenerateValue($rhModuleData->{function}{hit}, $rhModuleData->{function}{found}) . "\n" . " " . coverageDocSummaryGenerateValue($rhModuleData->{branch}{hit}, $rhModuleData->{branch}{found}) . "\n" . " " . coverageDocSummaryGenerateValue($rhModuleData->{line}{hit}, $rhModuleData->{line}{found}) . "\n" . ""; } # Write coverage report $oStorage->put($strOutFile, $strSummary); } push @EXPORT, qw(coverageDocSummaryGenerate); 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Common/DefineTest.pm000066400000000000000000000317761362531507100254570ustar00rootroot00000000000000#################################################################################################################################### # DefineTest.pm - Defines all tests that can be run #################################################################################################################################### package pgBackRestTest::Common::DefineTest; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRestTest::Common::VmTest; ################################################################################################################################ # Test definition constants # # Documentation for these constants is in test/define.yaml. ################################################################################################################################ use constant TESTDEF_INTEGRATION => 'integration'; push @EXPORT, qw(TESTDEF_INTEGRATION); use constant TESTDEF_PERFORMANCE => 'performance'; push @EXPORT, qw(TESTDEF_PERFORMANCE); use constant TESTDEF_UNIT => 'unit'; push @EXPORT, qw(TESTDEF_UNIT); use constant TESTDEF_MODULE => 'module'; push @EXPORT, qw(TESTDEF_MODULE); use constant TESTDEF_NAME => 'name'; push @EXPORT, qw(TESTDEF_NAME); use constant TESTDEF_TEST => 'test'; push @EXPORT, qw(TESTDEF_TEST); use constant TESTDEF_DB => 'db'; push @EXPORT, qw(TESTDEF_DB); use constant TESTDEF_CONTAINER => 'container'; push @EXPORT, qw(TESTDEF_CONTAINER); use constant TESTDEF_CONTAINER_REQUIRED => 'containerReq'; push @EXPORT, qw(TESTDEF_CONTAINER_REQUIRED); use constant TESTDEF_COVERAGE => 'coverage'; push @EXPORT, qw(TESTDEF_COVERAGE); use constant TESTDEF_EXPECT => 'expect'; push @EXPORT, qw(TESTDEF_EXPECT); use constant TESTDEF_C => 'c'; push @EXPORT, qw(TESTDEF_C); use constant TESTDEF_DEFINE => 'define'; push @EXPORT, qw(TESTDEF_DEFINE); use constant TESTDEF_DEFINE_TEST => 'define-test'; push @EXPORT, qw(TESTDEF_DEFINE_TEST); use constant TESTDEF_DEBUG_UNIT_SUPPRESS => 'debugUnitSuppress'; push @EXPORT, qw(TESTDEF_DEBUG_UNIT_SUPPRESS); use constant TESTDEF_INCLUDE => 'include'; push @EXPORT, qw(TESTDEF_INCLUDE); use constant TESTDEF_INDIVIDUAL => 'individual'; push @EXPORT, qw(TESTDEF_INDIVIDUAL); use constant TESTDEF_TOTAL => 'total'; push @EXPORT, qw(TESTDEF_TOTAL); use constant TESTDEF_TYPE => 'type'; push @EXPORT, qw(TESTDEF_TYPE); use constant TESTDEF_BIN_REQ => 'binReq'; push @EXPORT, qw(TESTDEF_BIN_REQ); use constant TESTDEF_VM => 'vm'; push @EXPORT, qw(TESTDEF_VM); use constant TESTDEF_COVERAGE_FULL => 'full'; push @EXPORT, qw(TESTDEF_COVERAGE_FULL); use constant TESTDEF_COVERAGE_PARTIAL => 'partial'; push @EXPORT, qw(TESTDEF_COVERAGE_PARTIAL); use constant TESTDEF_COVERAGE_NOCODE => 'noCode'; push @EXPORT, qw(TESTDEF_COVERAGE_NOCODE); #################################################################################################################################### # Process normalized data into a more queryable form #################################################################################################################################### my $hTestDefHash; # An easier way to query hash version of the above my @stryModule; # Ordered list of modules my $hModuleTest; # Ordered list of tests for each module my $hCoverageType; # Coverage type for each code module (full/partial) my $hCoverageList; # Tests required for full code module coverage (if type full) sub testDefLoad { my $strDefineYaml = shift; # Load test definitions from yaml require YAML::XS; YAML::XS->import(qw(Load)); my $hTestDef = Load($strDefineYaml); # Iterate each test type foreach my $strModuleType (TESTDEF_UNIT, TESTDEF_INTEGRATION, TESTDEF_PERFORMANCE) { my $hModuleType = $hTestDef->{$strModuleType}; my $bExpect = false; # By default don't run expect tests my $bContainer = true; # By default run tests in a single container my $bIndividual = false; # By default runs are all executed in the same container if ($strModuleType eq TESTDEF_INTEGRATION) { $bExpect = true; # Integration tests run expect tests $bContainer = false; # Integration tests can run in multiple containers $bIndividual = true; # Integration tests can change containers on each run } # Iterate each module foreach my $hModule (@{$hModuleType}) { # Push the module onto the ordered list my $strModule = $hModule->{&TESTDEF_NAME}; push(@stryModule, $strModule); # Iterate each test my @stryModuleTest; foreach my $hModuleTest (@{$hModule->{&TESTDEF_TEST}}) { # Push the test on the order list my $strTest = $hModuleTest->{&TESTDEF_NAME}; push(@stryModuleTest, $strTest); # Resolve variables that can be set in the module or the test foreach my $strVar ( TESTDEF_DEFINE, TESTDEF_DEFINE_TEST, TESTDEF_DEBUG_UNIT_SUPPRESS, TESTDEF_DB, TESTDEF_BIN_REQ, TESTDEF_VM, TESTDEF_CONTAINER_REQUIRED) { $hTestDefHash->{$strModule}{$strTest}{$strVar} = coalesce( $hModuleTest->{$strVar}, $hModule->{$strVar}, $strVar eq TESTDEF_VM ? undef : false); # Make false = 0 for debugging if ($strVar ne TESTDEF_VM && $hTestDefHash->{$strModule}{$strTest}{$strVar} eq '') { $hTestDefHash->{$strModule}{$strTest}{$strVar} = false; } } # Set module type variables $hTestDefHash->{$strModule}{$strTest}{&TESTDEF_TYPE} = $strModuleType; $hTestDefHash->{$strModule}{$strTest}{&TESTDEF_C} = $strModuleType ne TESTDEF_INTEGRATION && $strTest !~ /perl$/ ? true : false; $hTestDefHash->{$strModule}{$strTest}{&TESTDEF_INTEGRATION} = $strModuleType eq TESTDEF_INTEGRATION ? true : false; $hTestDefHash->{$strModule}{$strTest}{&TESTDEF_EXPECT} = $bExpect; $hTestDefHash->{$strModule}{$strTest}{&TESTDEF_CONTAINER} = $bContainer; $hTestDefHash->{$strModule}{$strTest}{&TESTDEF_INDIVIDUAL} = $bIndividual; # Set test count $hTestDefHash->{$strModule}{$strTest}{&TESTDEF_TOTAL} = $hModuleTest->{&TESTDEF_TOTAL}; # If this is a C test then add the test module to coverage if ($hModuleTest->{&TESTDEF_C}) { my $strTestFile = "module/${strModule}/${strTest}Test"; $hModuleTest->{&TESTDEF_COVERAGE}{$strTestFile} = TESTDEF_COVERAGE_FULL; } # Concatenate coverage for modules and tests foreach my $hCoverage ($hModule->{&TESTDEF_COVERAGE}, $hModuleTest->{&TESTDEF_COVERAGE}) { foreach my $strCodeModule (sort(keys(%{$hCoverage}))) { if (defined($hTestDefHash->{$strModule}{$strTest}{&TESTDEF_COVERAGE}{$strCodeModule})) { confess &log(ASSERT, "${strCodeModule} is defined for coverage in both module ${strModule} and test ${strTest}"); } $hTestDefHash->{$strModule}{$strTest}{&TESTDEF_COVERAGE}{$strCodeModule} = $hCoverage->{$strCodeModule}; # Build coverage type hash and make sure coverage type does not change if (!defined($hCoverageType->{$strCodeModule})) { $hCoverageType->{$strCodeModule} = $hCoverage->{$strCodeModule}; } elsif ($hCoverageType->{$strCodeModule} ne $hCoverage->{$strCodeModule}) { confess &log(ASSERT, "cannot mix coverage types for ${strCodeModule}"); } # Add to coverage list push(@{$hCoverageList->{$strCodeModule}}, {strModule=> $strModule, strTest => $strTest}); } } # Set include list $hTestDefHash->{$strModule}{$strTest}{&TESTDEF_INCLUDE} = $hModuleTest->{&TESTDEF_INCLUDE}; } $hModuleTest->{$strModule} = \@stryModuleTest; } } } push @EXPORT, qw(testDefLoad); #################################################################################################################################### # testDefModuleList #################################################################################################################################### sub testDefModuleList { return @stryModule; } push @EXPORT, qw(testDefModuleList); #################################################################################################################################### # testDefModule #################################################################################################################################### sub testDefModule { my $strModule = shift; if (!defined($hTestDefHash->{$strModule})) { confess &log(ASSERT, "unable to find module ${strModule}"); } return $hTestDefHash->{$strModule}; } push @EXPORT, qw(testDefModule); #################################################################################################################################### # testDefModuleTestList #################################################################################################################################### sub testDefModuleTestList { my $strModule = shift; if (!defined($hModuleTest->{$strModule})) { confess &log(ASSERT, "unable to find module ${strModule}"); } return @{$hModuleTest->{$strModule}}; } push @EXPORT, qw(testDefModuleTestList); #################################################################################################################################### # testDefModuleTest #################################################################################################################################### sub testDefModuleTest { my $strModule = shift; my $strModuleTest = shift; if (!defined($hTestDefHash->{$strModule}{$strModuleTest})) { confess &log(ASSERT, "unable to find module ${strModule}, test ${strModuleTest}"); } return $hTestDefHash->{$strModule}{$strModuleTest}; } push @EXPORT, qw(testDefModuleTest); #################################################################################################################################### # testDefCoverageType #################################################################################################################################### sub testDefCoverageType { return $hCoverageType; } push @EXPORT, qw(testDefCoverageType); #################################################################################################################################### # testDefCoverageList #################################################################################################################################### sub testDefCoverageList { return $hCoverageList; } push @EXPORT, qw(testDefCoverageList); 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Common/ExecuteTest.pm000066400000000000000000000261631362531507100256610ustar00rootroot00000000000000#################################################################################################################################### # ExecuteTest.pm - Module to execute external commands #################################################################################################################################### package pgBackRestTest::Common::ExecuteTest; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use IO::Select; use IPC::Open3; use POSIX ':sys_wait_h'; use Symbol 'gensym'; use pgBackRest::Common::Io::Handle; use pgBackRest::Common::Io::Buffered; use pgBackRest::Common::Log; use pgBackRest::Common::Wait; #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Class name # Create the class hash my $self = {}; bless $self, $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{strCommand}, my $oParam ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'strCommand'}, {name => 'oParam', required => false} ); # Load params foreach my $strParam (sort(keys(%$oParam))) { $self->{$strParam} = $$oParam{$strParam}; } # Set defaults $self->{bSuppressError} = defined($self->{bSuppressError}) ? $self->{bSuppressError} : false; $self->{bSuppressStdErr} = defined($self->{bSuppressStdErr}) ? $self->{bSuppressStdErr} : false; $self->{bOutLogOnError} = defined($self->{bOutLogOnError}) ? $self->{bOutLogOnError} : true; $self->{bShowOutput} = defined($self->{bShowOutput}) ? $self->{bShowOutput} : false; $self->{bShowOutputAsync} = defined($self->{bShowOutputAsync}) ? $self->{bShowOutputAsync} : false; $self->{iExpectedExitStatus} = defined($self->{iExpectedExitStatus}) ? $self->{iExpectedExitStatus} : 0; $self->{iRetrySeconds} = defined($self->{iRetrySeconds}) ? $self->{iRetrySeconds} : undef; $self->{bLogOutput} = defined($self->{bLogOutput}) ? $self->{bLogOutput} : true; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # begin #################################################################################################################################### sub begin { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->begin'); $self->{strErrorLog} = ''; $self->{strOutLog} = ''; if (defined($self->{oTestLog})) { if (defined($self->{strComment})) { $self->{strFullLog} = $self->{oTestLog}->regExpAll($self->{strComment}) . "\n"; } $self->{strFullLog} .= '> ' . $self->{oTestLog}->regExpAll($self->{strCommand}) . "\n" . ('-' x '132') . "\n"; } &log(DETAIL, "executing command: $self->{strCommand}"); # Execute the command $self->{hError} = gensym; $self->{pId} = open3(undef, $self->{hOut}, $self->{hError}, $self->{strCommand}); # Create buffered read object $self->{oIo} = new pgBackRest::Common::Io::Buffered(new pgBackRest::Common::Io::Handle('exec test', $self->{hOut}), 0, 65536); # Create buffered error object $self->{oIoError} = new pgBackRest::Common::Io::Buffered( new pgBackRest::Common::Io::Handle('exec test', $self->{hError}), 0, 65536); # Record start time and set process timeout $self->{iProcessTimeout} = 300; $self->{iProcessTimeoutTotal} = 4; $self->{lTimeLast} = time(); if (!defined($self->{hError})) { confess 'STDERR handle is undefined'; } return logDebugReturn($strOperation); } #################################################################################################################################### # endRetry #################################################################################################################################### sub endRetry { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $bWait ) = logDebugParam ( __PACKAGE__ . '->endRetry', \@_, {name => 'bWait', required => false, default => true, trace => true} ); # Drain the output and error streams and look for test points while(waitpid($self->{pId}, WNOHANG) == 0) { my $bFound = false; # Error if process has been running longer than timeout if (time() - $self->{lTimeLast} > $self->{iProcessTimeout}) { if ($self->{iProcessTimeoutTotal} > 0) { &log(WARN, "process has been running for $self->{iProcessTimeout} seconds with no output"); $self->{iProcessTimeoutTotal}--; $self->{lTimeLast} = time(); } else { confess &log(ASSERT, "timeout waiting for process to complete: $self->{strCommand}"); } } # Drain the stdout stream and look for test points while (defined(my $strLine = $self->{oIo}->readLine(true, false))) { $self->{lTimeLast} = time(); $self->{strOutLog} .= "${strLine}\n"; $bFound = true; if ($self->{bShowOutputAsync}) { syswrite(*STDOUT, " ${strLine}\n") } } # Drain the stderr stream while (defined(my $strLine = $self->{oIoError}->readLine(true, false))) { $self->{strErrorLog} .= "${strLine}\n"; } if (!$bWait) { return; } if (!$bFound) { waitHiRes(.05); } } # Check the exit status my $iExitStatus = ${^CHILD_ERROR_NATIVE} >> 8; # Drain the stdout stream while (defined(my $strLine = $self->{oIo}->readLine(true, false))) { $self->{strOutLog} .= "${strLine}\n"; if ($self->{bShowOutputAsync}) { syswrite(*STDOUT, " ${strLine}\n") } } # Drain the stderr stream while (defined(my $strLine = $self->{oIoError}->readLine(true, false))) { $self->{strErrorLog} .= "${strLine}\n"; } # Pass the log to the LogTest object if (defined($self->{oLogTest})) { if (defined($self->{strErrorLog}) && $self->{strErrorLog} ne '') { $self->{strOutLog} .= "STDERR:\n" . $self->{strErrorLog}; } $self->{oLogTest}->logAdd($self->{strCommand}, $self->{strComment}, $self->{bLogOutput} ? $self->{strOutLog} : undef); } # If an error was expected then return success if that error occurred if ($self->{iExpectedExitStatus} != 0 && $iExitStatus == $self->{iExpectedExitStatus}) { return $iExitStatus; } if ($iExitStatus != 0 || ($self->{iExpectedExitStatus} != 0 && $iExitStatus != $self->{iExpectedExitStatus})) { if ($self->{bSuppressError}) { &log(DEBUG, "suppressed error was ${iExitStatus}"); $self->{strErrorLog} = ''; } else { if (defined($self->{iRetrySeconds})) { $self->{bRetry} = true; return; } else { confess &log(ERROR, "command '$self->{strCommand}' returned " . $iExitStatus . ($self->{iExpectedExitStatus} != 0 ? ", but $self->{iExpectedExitStatus} was expected" : '') . "\n" . ($self->{strOutLog} ne '' && $self->{bOutLogOnError} ? "STDOUT (last 10,000 characters):\n" . substr( $self->{strOutLog}, length($self->{strOutLog}) > 10000 ? length($self->{strOutLog}) - 10000 : 0) : '') . ($self->{strErrorLog} ne '' ? "STDERR:\n$self->{strErrorLog}" : '')); } } } if ($self->{strErrorLog} ne '' && !$self->{bSuppressStdErr} && !$self->{bSuppressError}) { confess &log(ERROR, "STDOUT:\n$self->{strOutLog}\n\noutput found on STDERR:\n$self->{strErrorLog}"); } if ($self->{bShowOutput}) { print "output:\n$self->{strOutLog}\n"; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'iExitStatus', value => $iExitStatus, trace => true} ); } #################################################################################################################################### # end #################################################################################################################################### sub end { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $bWait ) = logDebugParam ( __PACKAGE__ . '->end', \@_, {name => 'bWait', required => false, default => true, trace => true} ); # If retry is not defined then run endRetry() one time my $iExitStatus; if (!defined($self->{iRetrySeconds})) { $iExitStatus = $self->endRetry($bWait); } # Else loop until success or timeout else { my $oWait = waitInit($self->{iRetrySeconds}); do { $self->{bRetry} = false; $self->begin(); $iExitStatus = $self->endRetry($bWait); if ($self->{bRetry}) { &log(TRACE, 'error executing statement - retry'); } } while ($self->{bRetry} && waitMore($oWait)); if ($self->{bRetry}) { $self->begin(); $iExitStatus = $self->endRetry($bWait); } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'iExitStatus', value => $iExitStatus, trace => true} ); } #################################################################################################################################### # executeTest #################################################################################################################################### sub executeTest { my $strCommand = shift; my $oParam = shift; my $oExec = new pgBackRestTest::Common::ExecuteTest($strCommand, $oParam); $oExec->begin(); $oExec->end(); return $oExec->{strOutLog}; } push @EXPORT, qw(executeTest); 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Common/FileTest.pm000066400000000000000000000253211362531507100251310ustar00rootroot00000000000000#################################################################################################################################### # CommonTest.pm - Common globals used for testing #################################################################################################################################### package pgBackRestTest::Common::FileTest; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Cwd qw(abs_path cwd); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use File::Copy qw(move); use File::Path qw(remove_tree); use IO::Select; use IPC::Open3; use POSIX ':sys_wait_h'; use Symbol 'gensym'; use pgBackRest::Common::Ini; use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Common::Wait; use pgBackRest::Config::Config; use pgBackRest::Manifest; use pgBackRest::Storage::Base; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::HostGroupTest; use pgBackRestTest::Common::LogTest; use pgBackRestTest::Common::RunTest; use pgBackRestTest::Common::VmTest; use pgBackRestTest::Env::Host::HostBaseTest; use pgBackRestTest::Env::Host::HostBackupTest; use pgBackRestTest::Env::Host::HostDbCommonTest; use pgBackRestTest::Env::Host::HostDbTest; use pgBackRestTest::Env::Host::HostS3Test; #################################################################################################################################### # testLinkCreate # # Create a symlink #################################################################################################################################### sub testLinkCreate { my $strLink = shift; my $strDestination = shift; # Create the file symlink($strDestination, $strLink) or confess "unable to link ${strLink} to ${strDestination}"; } push(@EXPORT, qw(testLinkCreate)); #################################################################################################################################### # testPathMode # # Set mode of an existing path. #################################################################################################################################### sub testPathMode { my $strPath = shift; my $strMode = shift; # Set the mode chmod(oct($strMode), $strPath) or confess 'unable to set mode ${strMode} for ${strPath}'; } push(@EXPORT, qw(testPathMode)); #################################################################################################################################### # testPathRemove # # Remove a path and all subpaths. #################################################################################################################################### sub testPathRemove { my $strPath = shift; my $bSuppressError = shift; executeTest('rm -rf ' . $strPath, {bSuppressError => $bSuppressError}); } push(@EXPORT, qw(testPathRemove)); #################################################################################################################################### # testFileCreate # # Create a file specifying content, mode, and time. #################################################################################################################################### sub testFileCreate { my $strFile = shift; my $strContent = shift; my $lTime = shift; my $strMode = shift; # Open the file and save strContent to it my $hFile = shift; open($hFile, '>', $strFile) or confess "unable to open ${strFile} for writing"; if (defined($strContent) && $strContent ne '') { syswrite($hFile, $strContent) or confess "unable to write to ${strFile}: $!"; } close($hFile); # Set the time if (defined($lTime)) { utime($lTime, $lTime, $strFile) or confess 'unable to set time ${lTime} for ${strPath}'; } # Set the mode chmod(oct(defined($strMode) ? $strMode : '0600'), $strFile) or confess 'unable to set mode ${strMode} for ${strFile}'; } push(@EXPORT, qw(testFileCreate)); #################################################################################################################################### # testFileRemove # # Remove a file. #################################################################################################################################### sub testFileRemove { my $strFile = shift; unlink($strFile) or confess "unable to remove ${strFile}: $!"; } push(@EXPORT, qw(testFileRemove)); #################################################################################################################################### # forceStorageMode - force mode on a file or path #################################################################################################################################### sub forceStorageMode { # Assign function parameters, defaults, and log debug info my ( $strOperation, $oStorage, $strPathExp, $strMode, $bRecurse ) = logDebugParam ( __PACKAGE__ . '::forceStorageMode', \@_, {name => 'oStorage'}, {name => 'strPathExp'}, {name => 'strMode'}, {name => 'bRecurse', optional => true, default => false}, ); # Mode commands are ignored on S3 if ($oStorage->type() ne STORAGE_S3) { executeTest('chmod ' . ($bRecurse ? '-R ' : '') . "${strMode} " . $oStorage->pathGet($strPathExp)); } # Return from function and log return values if any return logDebugReturn($strOperation); } push(@EXPORT, qw(forceStorageMode)); #################################################################################################################################### # forceStorageMove - force move a directory or file #################################################################################################################################### sub forceStorageMove { # Assign function parameters, defaults, and log debug info my ( $strOperation, $oStorage, $strSourcePathExp, $strDestinationPathExp, $bRecurse, ) = logDebugParam ( __PACKAGE__ . '->forceStorageMove', \@_, {name => 'oStorage'}, {name => 'strSourcePathExp'}, {name => 'strDestinationPathExp'}, {name => 'bRecurse', optional => true, default => true}, ); # If S3 then use storage commands to remove if ($oStorage->type() eq STORAGE_S3) { if ($bRecurse) { my $rhManifest = $oStorage->manifest($strSourcePathExp); foreach my $strName (sort(keys(%{$rhManifest}))) { if ($rhManifest->{$strName}{type} eq 'f') { $oStorage->put( new pgBackRest::Storage::StorageWrite( $oStorage, pgBackRest::LibC::StorageWrite->new( $oStorage->{oStorageC}, "${strDestinationPathExp}/${strName}", 0, undef, undef, 0, true, false)), ${$oStorage->get( new pgBackRest::Storage::StorageRead( $oStorage, pgBackRest::LibC::StorageRead->new( $oStorage->{oStorageC}, "${strSourcePathExp}/${strName}", false)))}); $oStorage->remove("${strSourcePathExp}/${strName}"); } } } else { $oStorage->put($strDestinationPathExp, ${$oStorage->get($strSourcePathExp)}); $oStorage->remove($strSourcePathExp); } } # Else remove using filesystem commands else { executeTest('mv ' . $oStorage->pathGet($strSourcePathExp) . ' ' . $oStorage->pathGet($strDestinationPathExp)); } # Return from function and log return values if any return logDebugReturn($strOperation); } push(@EXPORT, qw(forceStorageMove)); #################################################################################################################################### # forceStorageOwner - force ownership on a file or path #################################################################################################################################### sub forceStorageOwner { # Assign function parameters, defaults, and log debug info my ( $strOperation, $oStorage, $strPathExp, $strOwner, $bRecurse ) = logDebugParam ( __PACKAGE__ . '::forceStorageOwner', \@_, {name => 'oStorage'}, {name => 'strPathExp'}, {name => 'strOwner'}, {name => 'bRecurse', optional => true, default => false}, ); # Owner commands are ignored on S3 if ($oStorage->type() ne STORAGE_S3) { executeTest('chown ' . ($bRecurse ? '-R ' : '') . "${strOwner} " . $oStorage->pathGet($strPathExp)); } # Return from function and log return values if any return logDebugReturn($strOperation); } push(@EXPORT, qw(forceStorageOwner)); #################################################################################################################################### # forceStorageRemove - force remove a file or path from storage #################################################################################################################################### sub forceStorageRemove { # Assign function parameters, defaults, and log debug info my ( $strOperation, $oStorage, $strPathExp, $bRecurse ) = logDebugParam ( __PACKAGE__ . '->forceStorageRemove', \@_, {name => 'oStorage'}, {name => 'strPathExp'}, {name => 'bRecurse', optional => true, default => false}, ); # If S3 then use storage commands to remove if ($oStorage->type() eq STORAGE_S3) { my $oInfo = $oStorage->info($strPathExp, {bIgnoreMissing => true}); if (defined($oInfo) && $oInfo->{type} eq 'f') { $oStorage->remove($strPathExp); } else { $oStorage->pathRemove($strPathExp, {bRecurse => true}); } } else { executeTest('rm -f' . ($bRecurse ? 'r ' : ' ') . $oStorage->pathGet($strPathExp)); } # Return from function and log return values if any return logDebugReturn($strOperation); } push(@EXPORT, qw(forceStorageRemove)); 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Common/HostGroupTest.pm000066400000000000000000000141071362531507100262040ustar00rootroot00000000000000#################################################################################################################################### # HostGroupTest.pm - Encapsulate a group of docker containers for testing #################################################################################################################################### package pgBackRestTest::Common::HostGroupTest; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Cwd qw(abs_path); use Exporter qw(import); our @EXPORT = qw(); use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRestTest::Common::ExecuteTest; #################################################################################################################################### # Global host group variable #################################################################################################################################### my $oHostGroup; #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Class name # Create the class hash my $self = {}; bless $self, $class; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->new'); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self, trace => true} ); } #################################################################################################################################### # hostAdd #################################################################################################################################### sub hostAdd { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oHost, $rstryHostName, ) = logDebugParam ( __PACKAGE__ . '->hostAdd', \@_, {name => 'oHost'}, {name => 'rstryHostName', optional => true}, ); $self->{host}{$oHost->{strName}} = $oHost; if ($oHost->hostUpdateGet()) { $oHost->executeSimple("echo \"\" >> /etc/hosts", undef, 'root', {bLoadEnv => false}); $oHost->executeSimple("echo \"# Test Hosts\" >> /etc/hosts", undef, 'root', {bLoadEnv => false}); } my $strHostList = $oHost->{strName} . (defined($rstryHostName) ? ' ' . join(' ', @{$rstryHostName}) : ''); # Iterate hosts to add IP mappings foreach my $strOtherHostName (sort(keys(%{$self->{host}}))) { my $oOtherHost = $self->{host}{$strOtherHostName}; if ($strOtherHostName ne $oHost->{strName}) { # Add this host IP to all hosts if ($oOtherHost->hostUpdateGet()) { $oOtherHost->executeSimple( "echo \"$oHost->{strIP} ${strHostList}\" >> /etc/hosts", undef, 'root', {bLoadEnv => false}); } # Add all other host IPs to this host if ($oHost->hostUpdateGet()) { $oHost->executeSimple( "echo \"$oOtherHost->{strIP} ${strOtherHostName}\" >> /etc/hosts", undef, 'root', {bLoadEnv => false}); } } } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # hostGet #################################################################################################################################### sub hostGet { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strName, $bIgnoreMissing, ) = logDebugParam ( __PACKAGE__ . '->hostGet', \@_, {name => 'strName', trace => true}, {name => 'bIgnoreMissing', default => false, trace => true}, ); my $oHost = $self->{host}{$strName}; if (!defined($oHost) && !$bIgnoreMissing) { confess &log(ERROR, "host ${strName} does not exist"); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oHost', value => $oHost} ); } #################################################################################################################################### # removeAll #################################################################################################################################### sub removeAll { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->removeAll'); my $iTotal = 0; foreach my $strHostName (sort(keys(%{$self->{host}}))) { ${$self->{host}}{$strHostName}->remove(); delete($self->{host}{$strHostName}); $iTotal++; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'iTotal', value => $iTotal} ); } #################################################################################################################################### # hostGroupGet # # Get the global host group object. #################################################################################################################################### sub hostGroupGet { if (!defined($oHostGroup)) { $oHostGroup = new pgBackRestTest::Common::HostGroupTest(); } return $oHostGroup; } push @EXPORT, qw(hostGroupGet); 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Common/HostTest.pm000066400000000000000000000245721362531507100251760ustar00rootroot00000000000000#################################################################################################################################### # HostTest.pm - Encapsulate a docker host for testing #################################################################################################################################### package pgBackRestTest::Common::HostTest; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Cwd qw(abs_path); use Exporter qw(import); our @EXPORT = qw(); use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRestTest::Common::ExecuteTest; #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Class name # Create the class hash my $self = {}; bless $self, $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{strName}, $self->{strContainer}, $self->{strImage}, $self->{strUser}, $self->{strOS}, $self->{stryMount}, $self->{strOption}, $self->{strParam}, $self->{bHostUpdate}, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'strName', trace => true}, {name => 'strContainer', trace => true}, {name => 'strImage', trace => true}, {name => 'strUser', trace => true}, {name => 'strOS', trace => true}, {name => 'stryMount', required => false, trace => true}, {name => 'strOption', required => false, trace => true}, {name => 'strParam', required => false, trace => true}, {name => 'bHostUpdate', required => false, trace => true, default => true}, ); executeTest("docker rm -f $self->{strContainer}", {bSuppressError => true}); executeTest("docker run -itd -h $self->{strName} --name=$self->{strContainer}" . (defined($self->{strOption}) ? ' ' . $self->{strOption} : '') . (defined($self->{stryMount}) ? ' -v ' . join(' -v ', @{$self->{stryMount}}) : '') . " $self->{strImage} " . (defined($self->{strParam}) ? ' ' . $self->{strParam} : ''), {bSuppressStdErr => true}); # Get IP Address $self->{strIP} = trim(executeTest("docker inspect --format '\{\{ .NetworkSettings.IPAddress \}\}' $self->{strContainer}")); $self->{bActive} = true; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self, trace => true} ); } #################################################################################################################################### # remove #################################################################################################################################### sub remove { my $self = shift; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->remove'); if ($self->{bActive}) { executeTest("docker rm -f $self->{strContainer}", {bSuppressError => true}); $self->{bActive} = false; } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # execute #################################################################################################################################### sub execute { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strCommand, $oParam, $strUser, $bLoadEnv, $bBashWrap, ) = logDebugParam ( __PACKAGE__ . '->execute', \@_, {name => 'strCommand'}, {name => 'oParam', required => false}, {name => 'strUser', required => false}, {name => 'bLoadEnv', optional => true, default => true}, {name => 'bBashWrap', optional => true, default => true}, ); # Set the user if (!defined($strUser)) { $strUser = $self->{strUser}; } $strCommand =~ s/'/'\\''/g; my $oExec = new pgBackRestTest::Common::ExecuteTest( "docker exec -u ${strUser} $self->{strContainer}" . ($bBashWrap ? " bash" . ($bLoadEnv ? ' -l' : '') . " -c '${strCommand}'" : " ${strCommand}"), $oParam); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oExec', value => $oExec, trace => true} ); } #################################################################################################################################### # executeSimple #################################################################################################################################### sub executeSimple { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strCommand, $oParam, $strUser, $bLoadEnv, $bBashWrap, ) = logDebugParam ( __PACKAGE__ . '->executeSimple', \@_, {name => 'strCommand', trace => true}, {name => 'oParam', required=> false, trace => true}, {name => 'strUser', required => false, trace => true}, {name => 'bLoadEnv', optional => true, default => true, trace => true}, {name => 'bBashWrap', optional => true, default => true}, ); my $oExec = $self->execute($strCommand, $oParam, $strUser, {bLoadEnv => $bLoadEnv}); $oExec->begin(); $oExec->end(); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strOutLog', value => $oExec->{strOutLog}, trace => true} ); } #################################################################################################################################### # copyTo #################################################################################################################################### sub copyTo { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strSource, $strDestination, $strOwner, $strMode ) = logDebugParam ( __PACKAGE__ . '->copyTo', \@_, {name => 'strSource'}, {name => 'strDestination'}, {name => 'strOwner', required => false}, {name => 'strMode', required => false} ); executeTest("docker cp ${strSource} $self->{strContainer}:${strDestination}"); if (defined($strOwner)) { $self->executeSimple("chown ${strOwner} ${strDestination}", undef, 'root'); } if (defined($strMode)) { $self->executeSimple("chmod ${strMode} ${strDestination}", undef, 'root'); } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # copyFrom #################################################################################################################################### sub copyFrom { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strSource, $strDestination ) = logDebugParam ( __PACKAGE__ . '->copyFrom', \@_, {name => 'strSource'}, {name => 'strDestination'} ); executeTest("docker cp $self->{strContainer}:${strSource} ${strDestination}"); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # hostUpdateGet #################################################################################################################################### sub hostUpdateGet { my $self = shift; return $self->{bHostUpdate}; } #################################################################################################################################### # ipGet #################################################################################################################################### sub ipGet { my $self = shift; return $self->{strIP}; } #################################################################################################################################### # nameGet #################################################################################################################################### sub nameGet { my $self = shift; return $self->{strName}; } #################################################################################################################################### # nameTest #################################################################################################################################### sub nameTest { my $self = shift; my $strName = shift; return $self->{strName} eq $strName; } #################################################################################################################################### # userGet #################################################################################################################################### sub userGet { my $self = shift; return $self->{strUser}; } #################################################################################################################################### # Getters #################################################################################################################################### sub container {shift->{strContainer}} 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Common/JobTest.pm000066400000000000000000001060551362531507100247700ustar00rootroot00000000000000#################################################################################################################################### # JobTest.pm - Run a test job and monitor progress #################################################################################################################################### package pgBackRestTest::Common::JobTest; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Cwd qw(abs_path); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname basename); use POSIX qw(ceil); use Time::HiRes qw(gettimeofday); use pgBackRest::DbVersion; use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Version; use pgBackRestTest::Common::BuildTest; use pgBackRestTest::Common::ContainerTest; use pgBackRestTest::Common::CoverageTest; use pgBackRestTest::Common::DefineTest; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::ListTest; use pgBackRestTest::Common::RunTest; use pgBackRestTest::Common::VmTest; #################################################################################################################################### # Has the C build directory been initialized yet? #################################################################################################################################### my $rhBuildInit = undef; #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Class name # Create the class hash my $self = {}; bless $self, $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{oStorageTest}, $self->{strBackRestBase}, $self->{strTestPath}, $self->{oTest}, $self->{bDryRun}, $self->{strVmHost}, $self->{bVmOut}, $self->{iVmIdx}, $self->{iVmMax}, $self->{iTestIdx}, $self->{iTestMax}, $self->{strLogLevel}, $self->{strLogLevelTest}, $self->{strLogLevelTestFile}, $self->{bLogForce}, $self->{bShowOutputAsync}, $self->{bNoCleanup}, $self->{iRetry}, $self->{bValgrindUnit}, $self->{bCoverageUnit}, $self->{bCoverageSummary}, $self->{bOptimize}, $self->{bBackTrace}, $self->{bProfile}, $self->{iScale}, $self->{strTimeZone}, $self->{bDebug}, $self->{bDebugTestTrace}, $self->{iBuildMax}, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oStorageTest'}, {name => 'strBackRestBase'}, {name => 'strTestPath'}, {name => 'oTest'}, {name => 'bDryRun'}, {name => 'strVmHost'}, {name => 'bVmOut'}, {name => 'iVmIdx'}, {name => 'iVmMax'}, {name => 'iTestIdx'}, {name => 'iTestMax'}, {name => 'strLogLevel'}, {name => 'strLogLevelTest'}, {name => 'strLogLevelTestFile'}, {name => 'bLogForce'}, {name => 'bShowOutputAsync'}, {name => 'bNoCleanup'}, {name => 'iRetry'}, {name => 'bValgrindUnit'}, {name => 'bCoverageUnit'}, {name => 'bCoverageSummary'}, {name => 'bOptimize'}, {name => 'bBackTrace'}, {name => 'bProfile'}, {name => 'iScale'}, {name => 'strTimeZone', required => false}, {name => 'bDebug'}, {name => 'bDebugTestTrace'}, {name => 'iBuildMax'}, ); # Set try to 0 $self->{iTry} = 0; # Setup the path where gcc coverage will be performed $self->{strGCovPath} = "$self->{strTestPath}/gcov-$self->{oTest}->{&TEST_VM}-$self->{iVmIdx}"; $self->{strDataPath} = "$self->{strTestPath}/data-$self->{iVmIdx}"; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self, trace => true} ); } #################################################################################################################################### # run #################################################################################################################################### sub run { my $self = shift; # Assign function parameters, defaults, and log debug info (my $strOperation) = logDebugParam (__PACKAGE__ . '->run', \@_,); # Start the test timer my $fTestStartTime = gettimeofday(); # Was the job run? my $bRun = false; # Should the job be run? $self->{iTry}++; if ($self->{iTry} <= ($self->{iRetry} + 1)) { if ($self->{iTry} != 1 && $self->{iTry} == ($self->{iRetry} + 1)) { $self->{strLogLevel} = lc(DEBUG); } my $strTest = sprintf( 'P%0' . length($self->{iVmMax}) . 'd-T%0' . length($self->{iTestMax}) . 'd/%0' . length($self->{iTestMax}) . "d - ", $self->{iVmIdx} + 1, $self->{iTestIdx} + 1, $self->{iTestMax}) . 'vm=' . $self->{oTest}->{&TEST_VM} . ', module=' . $self->{oTest}->{&TEST_MODULE} . ', test=' . $self->{oTest}->{&TEST_NAME} . (defined($self->{oTest}->{&TEST_RUN}) ? ', run=' . join(',', sort(@{$self->{oTest}->{&TEST_RUN}})) : '') . (defined($self->{oTest}->{&TEST_DB}) ? ', pg-version=' . $self->{oTest}->{&TEST_DB} : '') . ($self->{iTry} > 1 ? ' (retry ' . ($self->{iTry} - 1) . ')' : ''); my $strImage = 'test-' . $self->{iVmIdx}; my $strDbVersion = (defined($self->{oTest}->{&TEST_DB}) ? $self->{oTest}->{&TEST_DB} : PG_VERSION_94); $strDbVersion =~ s/\.//; &log($self->{bDryRun} && !$self->{bVmOut} || $self->{bShowOutputAsync} ? INFO : DETAIL, "${strTest}" . (!($self->{bDryRun} || !$self->{bVmOut}) || $self->{bShowOutputAsync} ? "\n" : '')); my $strVmTestPath = '/home/' . TEST_USER . "/test/${strImage}"; my $strHostTestPath = "$self->{strTestPath}/${strImage}"; # Don't create the container if this is a dry run unless output from the VM is required. Ouput can be requested # to get more information about the specific tests that will be run. if (!$self->{bDryRun} || $self->{bVmOut}) { # Create host test directory $self->{oStorageTest}->pathCreate($strHostTestPath, {strMode => '0770'}); # Create gcov directory my $bGCovExists = true; if ($self->{oTest}->{&TEST_C} && !$self->{oStorageTest}->pathExists($self->{strGCovPath})) { $self->{oStorageTest}->pathCreate($self->{strGCovPath}, {strMode => '0770'}); $bGCovExists = false; } # Create data directory if ($self->{oTest}->{&TEST_C} && !$self->{oStorageTest}->pathExists($self->{strDataPath})) { $self->{oStorageTest}->pathCreate($self->{strDataPath}, {strMode => '0770'}); } if ($self->{oTest}->{&TEST_CONTAINER}) { if ($self->{oTest}->{&TEST_VM} ne VM_NONE) { executeTest( 'docker run -itd -h ' . $self->{oTest}->{&TEST_VM} . "-test --name=${strImage}" . " -v ${strHostTestPath}:${strVmTestPath}" . ($self->{oTest}->{&TEST_C} ? " -v $self->{strGCovPath}:$self->{strGCovPath}" : '') . ($self->{oTest}->{&TEST_C} ? " -v $self->{strDataPath}:$self->{strDataPath}" : '') . " -v $self->{strBackRestBase}:$self->{strBackRestBase} " . containerRepo() . ':' . $self->{oTest}->{&TEST_VM} . "-test", {bSuppressStdErr => true}); } # If testing C code copy source files to the test directory if ($self->{oTest}->{&TEST_C}) { # If this is the first build, then rsync files if (!$rhBuildInit->{$self->{oTest}->{&TEST_VM}}{$self->{iVmIdx}}) { executeTest( 'rsync -rt --delete --exclude=*.o --exclude=test.c --exclude=test.gcno --exclude=LibC.h --exclude=xs' . ' --exclude=test --exclude=buildflags --exclude=testflags --exclude=harnessflags' . ' --exclude=build.auto.h --exclude=build.auto.h.in --exclude=Makefile --exclude=Makefile.in' . ' --exclude=configure --exclude=configure.ac' . " $self->{strBackRestBase}/src/ $self->{strGCovPath} && " . "rsync -t $self->{strBackRestBase}/libc/LibC.h $self->{strGCovPath} && " . "rsync -rt --delete $self->{strBackRestBase}/libc/xs/ $self->{strGCovPath}/xs && " . "rsync -rt --delete --exclude=*.o $self->{strBackRestBase}/test/src/ $self->{strGCovPath}/test"); } # Build directory has been initialized $rhBuildInit->{$self->{oTest}->{&TEST_VM}}{$self->{iVmIdx}} = true; } # If testing Perl code (or C code that calls the binary) install binary if ($self->{oTest}->{&TEST_VM} ne VM_NONE && (!$self->{oTest}->{&TEST_C} || $self->{oTest}->{&TEST_BIN_REQ})) { jobInstallC($self->{strBackRestBase}, $self->{oTest}->{&TEST_VM}, $strImage); } } } # Create run parameters my $strCommandRunParam = ''; foreach my $iRunIdx (@{$self->{oTest}->{&TEST_RUN}}) { $strCommandRunParam .= ' --run=' . $iRunIdx; } # Create command my $strCommand; if ($self->{oTest}->{&TEST_C}) { $strCommand = ($self->{oTest}->{&TEST_VM} ne VM_NONE ? 'docker exec -i -u ' . TEST_USER . " ${strImage} " : '') . "bash -l -c '" . "cd $self->{strGCovPath} && " . "make -j $self->{iBuildMax} -s 2>&1 &&" . ($self->{oTest}->{&TEST_VM} ne VM_CO6 && $self->{bValgrindUnit} && $self->{oTest}->{&TEST_TYPE} ne TESTDEF_PERFORMANCE ? " valgrind -q --gen-suppressions=all --suppressions=$self->{strGCovPath}/test/valgrind.suppress" . " --leak-check=full --leak-resolution=high --error-exitcode=25" : '') . " ./test.bin 2>&1'"; } else { $strCommand = ($self->{oTest}->{&TEST_CONTAINER} ? 'docker exec -i -u ' . TEST_USER . " ${strImage} " : '') . abs_path($0) . " --test-path=${strVmTestPath}" . " --vm-host=$self->{strVmHost}" . " --vm=$self->{oTest}->{&TEST_VM}" . " --vm-id=$self->{iVmIdx}" . " --module=" . $self->{oTest}->{&TEST_MODULE} . ' --test=' . $self->{oTest}->{&TEST_NAME} . $strCommandRunParam . (defined($self->{oTest}->{&TEST_DB}) ? ' --pg-version=' . $self->{oTest}->{&TEST_DB} : '') . ($self->{strLogLevel} ne lc(INFO) ? " --log-level=$self->{strLogLevel}" : '') . ($self->{strLogLevelTestFile} ne lc(TRACE) ? " --log-level-test-file=$self->{strLogLevelTestFile}" : '') . ' --pgsql-bin=' . $self->{oTest}->{&TEST_PGSQL_BIN} . ($self->{strTimeZone} ? " --tz='$self->{strTimeZone}'" : '') . ($self->{bLogForce} ? ' --log-force' : '') . ($self->{bDryRun} ? ' --dry-run' : '') . ($self->{bDryRun} ? ' --vm-out' : '') . ($self->{bNoCleanup} ? " --no-cleanup" : ''); } if (!$self->{bDryRun} || $self->{bVmOut}) { # If testing C code if ($self->{oTest}->{&TEST_C}) { my $hTest = (testDefModuleTest($self->{oTest}->{&TEST_MODULE}, $self->{oTest}->{&TEST_NAME})); my $hTestCoverage = $hTest->{&TESTDEF_COVERAGE}; my @stryCFile; foreach my $strFile (sort(keys(%{$self->{oStorageTest}->manifest($self->{strGCovPath})}))) { my $strFileNoExt = substr($strFile, 0, length($strFile) - 2); # Skip all files except .c files (including .auto.c) next if $strFile !~ /(?{$strFileNoExt}) && !grep(/^$strFileNoExt$/, @{$hTest->{&TESTDEF_INCLUDE}}) && $strFile !~ /^test\/module\/[^\/]*\/.*Test\.c$/) { push(@stryCFile, "${strFile}"); } } # Generate list of C files to include for testing my $strTestDepend = ''; my $strTestFile = "test/module/$self->{oTest}->{&TEST_MODULE}/" . testRunName($self->{oTest}->{&TEST_NAME}, false) . 'Test.c'; my $strCInclude; foreach my $strFile (sort(keys(%{$hTestCoverage}), @{$hTest->{&TESTDEF_INCLUDE}})) { # Don't include the test file as it is already included below next if $strFile =~ /Test$/; # Don't any auto files as they are included in their companion C files next if $strFile =~ /auto$/; # Include the C file if it exists my $strCIncludeFile = "${strFile}.c"; # If the C file does not exist use the header file instead if (!$self->{oStorageTest}->exists("$self->{strGCovPath}/${strCIncludeFile}")) { # Error if code was expected if ($hTestCoverage->{$strFile} ne TESTDEF_COVERAGE_NOCODE) { confess &log(ERROR, "unable to find source file '$self->{strGCovPath}/${strCIncludeFile}'"); } $strCIncludeFile = "${strFile}.h"; } $strCInclude .= (defined($strCInclude) ? "\n" : '') . "#include \"${strCIncludeFile}\""; $strTestDepend .= " ${strCIncludeFile}"; } # Update C test file with test module my $strTestC = ${$self->{oStorageTest}->get("$self->{strGCovPath}/test/test.c")}; if (defined($strCInclude)) { $strTestC =~ s/\{\[C\_INCLUDE\]\}/$strCInclude/g; } else { $strTestC =~ s/\{\[C\_INCLUDE\]\}//g; } $strTestC =~ s/\{\[C\_TEST\_INCLUDE\]\}/\#include \"$strTestFile\"/g; $strTestDepend .= " ${strTestFile}"; # Build dependencies for the test file my $rhDependencyTree = {}; buildDependencyTreeSub( $self->{oStorageTest}, $rhDependencyTree, $strTestFile, false, $self->{strGCovPath}, ['', 'test']); foreach my $strDepend (@{$rhDependencyTree->{$strTestFile}{include}}) { $strTestDepend .= ' ' . ($rhDependencyTree->{$strDepend}{path} ne '' ? $rhDependencyTree->{$strDepend}{path} . '/' : '') . $strDepend; } # Determine where the project exe is located my $strProjectExePath = $self->{oTest}->{&TEST_VM} eq VM_NONE ? "$self->{strBackRestBase}/test/.vagrant/bin/$self->{oTest}->{&TEST_VM}/src/" . PROJECT_EXE : PROJECT_EXE; # Is this test running in a container? my $strContainer = $self->{oTest}->{&TEST_VM} eq VM_NONE ? 'false' : 'true'; # What test path should be passed to C? Containers always have their test path at ~/test but when running with # vm=none it should be in a subdirectory of the current directory. my $strTestPathC = $self->{oTest}->{&TEST_VM} eq VM_NONE ? $strHostTestPath : $strVmTestPath; # Set globals $strTestC =~ s/\{\[C\_TEST\_CONTAINER\]\}/$strContainer/g; $strTestC =~ s/\{\[C\_TEST\_PROJECT\_EXE\]\}/$strProjectExePath/g; $strTestC =~ s/\{\[C\_TEST\_PATH\]\}/$strTestPathC/g; $strTestC =~ s/\{\[C\_TEST\_DATA_PATH\]\}/$self->{strDataPath}/g; $strTestC =~ s/\{\[C\_TEST\_IDX\]\}/$self->{iVmIdx}/g; $strTestC =~ s/\{\[C\_TEST\_REPO_PATH\]\}/$self->{strBackRestBase}/g; $strTestC =~ s/\{\[C\_TEST\_SCALE\]\}/$self->{iScale}/g; # Set timezone if (defined($self->{strTimeZone})) { $strTestC =~ s/\{\[C\_TEST\_TZ\]\}/setenv\("TZ", "$self->{strTimeZone}", true\);/g; } else { $strTestC =~ s/\{\[C\_TEST\_TZ\]\}/\/\/ No timezone specified/g; } # Set default log level my $strLogLevelTestC = "logLevel" . ucfirst($self->{strLogLevelTest}); $strTestC =~ s/\{\[C\_LOG\_LEVEL\_TEST\]\}/$strLogLevelTestC/g; # Initialize tests my $strTestInit; for (my $iTestIdx = 1; $iTestIdx <= $hTest->{&TESTDEF_TOTAL}; $iTestIdx++) { my $bSelected = false; if (!defined($self->{oTest}->{&TEST_RUN}) || @{$self->{oTest}->{&TEST_RUN}} == 0 || grep(/^$iTestIdx$/, @{$self->{oTest}->{&TEST_RUN}})) { $bSelected = true; } $strTestInit .= (defined($strTestInit) ? "\n " : '') . sprintf("hrnAdd(%3d, %8s);" , $iTestIdx, ($bSelected ? 'true' : 'false')); } $strTestC =~ s/\{\[C\_TEST\_LIST\]\}/$strTestInit/g; buildPutDiffers($self->{oStorageTest}, "$self->{strGCovPath}/test.c", $strTestC); # Create build.auto.h my $strBuildAutoH = ""; buildPutDiffers($self->{oStorageTest}, "$self->{strGCovPath}/" . BUILD_AUTO_H, $strBuildAutoH); # Determine which warnings are available my $strWarningFlags = '-Werror -Wfatal-errors -Wall -Wextra -Wwrite-strings -Wconversion -Wformat=2' . ' -Wformat-nonliteral -Wstrict-prototypes -Wpointer-arith -Wvla' . ($self->{oTest}->{&TEST_VM} eq VM_U16 || $self->{oTest}->{&TEST_VM} eq VM_U18 ? ' -Wformat-signedness' : '') . ($self->{oTest}->{&TEST_VM} eq VM_U18 ? ' -Wduplicated-branches -Wduplicated-cond' : '') . # This is theoretically a portability issue but a compiler that does not treat NULL and false as 0 is crazy ' -Wno-missing-field-initializers'; # Flags that are common to all builds my $strCommonFlags = '-I. -Itest -std=c99 -fPIC -g -Wno-clobbered -D_POSIX_C_SOURCE=200809L -D_FILE_OFFSET_BITS=64' . ' `pkg-config libxml-2.0 --cflags`' . ($self->{bProfile} ? " -pg" : '') . ' -I`pg_config --includedir`' . ($self->{oTest}->{&TEST_DEBUG_UNIT_SUPPRESS} ? '' : " -DDEBUG_UNIT") . (vmWithBackTrace($self->{oTest}->{&TEST_VM}) && $self->{bBackTrace} ? ' -DWITH_BACKTRACE' : '') . ($self->{oTest}->{&TEST_CDEF} ? " $self->{oTest}->{&TEST_CDEF}" : '') . (vmCoverageC($self->{oTest}->{&TEST_VM}) && $self->{bCoverageUnit} ? ' -DDEBUG_COVERAGE' : '') . ($self->{bDebug} && $self->{oTest}->{&TEST_TYPE} ne TESTDEF_PERFORMANCE ? '' : ' -DNDEBUG') . ($self->{bDebugTestTrace} && $self->{bDebug} ? ' -DDEBUG_TEST_TRACE' : '') . ($self->{oTest}->{&TEST_VM} eq VM_CO6 ? ' -DDEBUG_EXEC_TIME' : ''); # Flags used to build harness files my $strHarnessFlags = '-O2' . ($self->{oTest}->{&TEST_VM} ne VM_U12 ? ' -ftree-coalesce-vars' : '') . ($self->{oTest}->{&TEST_CTESTDEF} ? " $self->{oTest}->{&TEST_CTESTDEF}" : ''); buildPutDiffers( $self->{oStorageTest}, "$self->{strGCovPath}/harnessflags", "${strCommonFlags} ${strWarningFlags} ${strHarnessFlags}"); # Flags used to build test.c my $strTestFlags = ($self->{bDebug} ? '-DDEBUG_TEST_TRACE ' : '') . ($self->{oTest}->{&TEST_VM} eq VM_F30 ? '-O2' : '-O0') . ($self->{oTest}->{&TEST_VM} ne VM_U12 ? ' -ftree-coalesce-vars' : '') . (vmCoverageC($self->{oTest}->{&TEST_VM}) && $self->{bCoverageUnit} ? ' -fprofile-arcs -ftest-coverage' : '') . ($self->{oTest}->{&TEST_CTESTDEF} ? " $self->{oTest}->{&TEST_CTESTDEF}" : ''); buildPutDiffers( $self->{oStorageTest}, "$self->{strGCovPath}/testflags", "${strCommonFlags} ${strWarningFlags} ${strTestFlags}"); # Flags used to build all other files my $strBuildFlags = ($self->{bOptimize} || $self->{oTest}->{&TEST_VM} eq VM_F30 ? '-O2' : '-O0' . ($self->{oTest}->{&TEST_VM} ne VM_U12 ? ' -ftree-coalesce-vars' : '')); buildPutDiffers( $self->{oStorageTest}, "$self->{strGCovPath}/buildflags", "${strCommonFlags} ${strWarningFlags} ${strBuildFlags}"); # Build the Makefile my $strMakefile = "CC=gcc\n" . "COMMONFLAGS=${strCommonFlags}\n" . "WARNINGFLAGS=${strWarningFlags}\n" . "BUILDFLAGS=${strBuildFlags}\n" . "HARNESSFLAGS=${strHarnessFlags}\n" . "TESTFLAGS=${strTestFlags}\n" . "LDFLAGS=-lcrypto -lssl -lxml2 -lz" . (vmCoverageC($self->{oTest}->{&TEST_VM}) && $self->{bCoverageUnit} ? " -lgcov" : '') . (vmWithBackTrace($self->{oTest}->{&TEST_VM}) && $self->{bBackTrace} ? ' -lbacktrace' : '') . "\n" . "SRCS=" . join(' ', @stryCFile) . "\n" . "OBJS=\$(SRCS:.c=.o)\n" . "\n" . "test: \$(OBJS) test.o\n" . "\t\$(CC) -o test.bin \$(OBJS) test.o" . ($self->{bProfile} ? " -pg" : '') . " \$(LDFLAGS)\n" . "\n" . "test.o: testflags test.c${strTestDepend}\n" . "\t\$(CC) \$(COMMONFLAGS) \$(WARNINGFLAGS) \$(TESTFLAGS) -c test.c\n"; # Build C file dependencies foreach my $strCFile (@stryCFile) { my $bHarnessFile = $strCFile =~ /^test\// ? true : false; buildDependencyTreeSub( $self->{oStorageTest}, $rhDependencyTree, $strCFile, !$bHarnessFile, $self->{strGCovPath}, ['', 'test']); $strMakefile .= "\n" . substr($strCFile, 0, length($strCFile) - 2) . ".o:" . ($bHarnessFile ? " harnessflags" : " buildflags") . " $strCFile"; foreach my $strDepend (@{$rhDependencyTree->{$strCFile}{include}}) { $strMakefile .= ' ' . ($rhDependencyTree->{$strDepend}{path} ne '' ? $rhDependencyTree->{$strDepend}{path} . '/' : '') . $strDepend; } $strMakefile .= "\n" . "\t\$(CC) \$(COMMONFLAGS) \$(WARNINGFLAGS)" . ($strCFile =~ /^test\// ? " \$(HARNESSFLAGS)" : " \$(BUILDFLAGS)") . " -c $strCFile -o " . substr($strCFile, 0, length($strCFile) - 2) . ".o\n"; } buildPutDiffers($self->{oStorageTest}, $self->{strGCovPath} . "/Makefile", $strMakefile); } my $oExec = new pgBackRestTest::Common::ExecuteTest( $strCommand, {bSuppressError => true, bShowOutputAsync => $self->{bShowOutputAsync}}); $oExec->begin(); $self->{oProcess} = { exec => $oExec, test => $strTest, start_time => $fTestStartTime, }; $bRun = true; } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bRun', value => $bRun, trace => true} ); } #################################################################################################################################### # end #################################################################################################################################### sub end { my $self = shift; # Assign function parameters, defaults, and log debug info (my $strOperation) = logDebugParam (__PACKAGE__ . '->run', \@_,); # Is the job done? my $bDone = false; my $bFail = false; my $oExecDone = $self->{oProcess}{exec}; my $strTestDone = $self->{oProcess}{test}; my $iTestDoneIdx = $self->{oProcess}{idx}; my $iExitStatus = $oExecDone->end($self->{iVmMax} == 1); if (defined($iExitStatus)) { my $strImage = 'test-' . $self->{iVmIdx}; if ($self->{bShowOutputAsync}) { syswrite(*STDOUT, "\n"); } # If C code generate profile info if ($iExitStatus == 0 && $self->{oTest}->{&TEST_C} && $self->{bProfile}) { executeTest( ($self->{oTest}->{&TEST_VM} ne VM_NONE ? 'docker exec -i -u ' . TEST_USER . " ${strImage} " : '') . "gprof $self->{strGCovPath}/test.bin $self->{strGCovPath}/gmon.out > $self->{strGCovPath}/gprof.txt"); $self->{oStorageTest}->pathCreate("$self->{strBackRestBase}/test/profile", {strMode => '0750', bIgnoreExists => true}); $self->{oStorageTest}->copy( "$self->{strGCovPath}/gprof.txt", "$self->{strBackRestBase}/test/profile/gprof.txt"); } # If C code generate coverage info if ($iExitStatus == 0 && $self->{oTest}->{&TEST_C} && vmCoverageC($self->{oTest}->{&TEST_VM}) && $self->{bCoverageUnit}) { # Generate a list of files to cover my $hTestCoverage = (testDefModuleTest($self->{oTest}->{&TEST_MODULE}, $self->{oTest}->{&TEST_NAME}))->{&TESTDEF_COVERAGE}; my @stryCoveredModule; foreach my $strModule (sort(keys(%{$hTestCoverage}))) { push (@stryCoveredModule, $strModule); } push( @stryCoveredModule, "module/$self->{oTest}->{&TEST_MODULE}/" . testRunName($self->{oTest}->{&TEST_NAME}, false) . 'Test'); # Generate coverage reports for the modules my $strLCovConf = $self->{strBackRestBase} . '/test/.vagrant/code/lcov.conf'; coverageLCovConfigGenerate($self->{oStorageTest}, $strLCovConf, $self->{bCoverageSummary}); my $strLCovExeBase = "lcov --config-file=${strLCovConf}"; my $strLCovOut = $self->{strGCovPath} . '/test.lcov'; my $strLCovOutTmp = $self->{strGCovPath} . '/test.tmp.lcov'; executeTest( ($self->{oTest}->{&TEST_VM} ne VM_NONE ? 'docker exec -i -u ' . TEST_USER . " ${strImage} " : '') . "${strLCovExeBase} --capture --directory=$self->{strGCovPath} --o=${strLCovOut}"); # Generate coverage report for each module foreach my $strModule (@stryCoveredModule) { my $strModuleName = testRunName($strModule, false); my $strModuleOutName = $strModuleName; my $bTest = false; if ($strModuleOutName =~ /^module/mg) { $strModuleOutName =~ s/^module/test/mg; $bTest = true; } # Disable branch coverage for test files my $strLCovExe = $strLCovExeBase; if ($bTest) { $strLCovExe .= ' --rc lcov_branch_coverage=0'; } # Generate lcov reports my $strModulePath = $self->{strBackRestBase} . "/test/.vagrant/code/${strModuleOutName}"; my $strLCovFile = "${strModulePath}.lcov"; my $strLCovTotal = $self->{strBackRestBase} . "/test/.vagrant/code/all.lcov"; executeTest( "${strLCovExe} --extract=${strLCovOut} */${strModuleName}.c --o=${strLCovOutTmp}"); # Combine with prior run if there was one if ($self->{oStorageTest}->exists($strLCovFile)) { my $strCoverage = ${$self->{oStorageTest}->get($strLCovOutTmp)}; $strCoverage =~ s/^SF\:.*$/SF:$strModulePath\.c/mg; $self->{oStorageTest}->put($strLCovOutTmp, $strCoverage); executeTest( "${strLCovExe} --add-tracefile=${strLCovOutTmp} --add-tracefile=${strLCovFile} --o=${strLCovOutTmp}"); } # Update source file my $strCoverage = ${$self->{oStorageTest}->get($strLCovOutTmp)}; if (defined($strCoverage)) { if (!$bTest && $hTestCoverage->{$strModule} eq TESTDEF_COVERAGE_NOCODE) { confess &log(ERROR, "module '${strModule}' is marked 'no code' but has code"); } # Get coverage info my $iTotalLines = (split(':', ($strCoverage =~ m/^LF:.*$/mg)[0]))[1] + 0; my $iCoveredLines = (split(':', ($strCoverage =~ m/^LH:.*$/mg)[0]))[1] + 0; my $iTotalBranches = 0; my $iCoveredBranches = 0; if ($strCoverage =~ /^BRF\:/mg && $strCoverage =~ /^BRH\:/mg) { # If this isn't here the statements below fail -- huh? my @match = $strCoverage =~ m/^BRF\:.*$/mg; $iTotalBranches = (split(':', ($strCoverage =~ m/^BRF:.*$/mg)[0]))[1] + 0; $iCoveredBranches = (split(':', ($strCoverage =~ m/^BRH:.*$/mg)[0]))[1] + 0; } # Report coverage if this is not a test or if the test does not have complete coverage if (!$bTest || $iTotalLines != $iCoveredLines || $iTotalBranches != $iCoveredBranches) { # Fix source file name $strCoverage =~ s/^SF\:.*$/SF:$strModulePath\.c/mg; $self->{oStorageTest}->put($strLCovFile, $strCoverage); if ($self->{oStorageTest}->exists($strLCovTotal)) { executeTest( "${strLCovExe} --add-tracefile=${strLCovFile} --add-tracefile=${strLCovTotal} --o=${strLCovTotal}"); } else { $self->{oStorageTest}->copy($strLCovFile, $strLCovTotal) } } else { $self->{oStorageTest}->remove($strLCovFile); } } else { if ($hTestCoverage->{$strModule} ne TESTDEF_COVERAGE_NOCODE) { confess &log(ERROR, "module '${strModule}' is marked 'code' but has no code"); } } } } # Record elapsed time my $fTestElapsedTime = ceil((gettimeofday() - $self->{oProcess}{start_time}) * 100) / 100; # Output error if ($iExitStatus != 0) { &log(ERROR, "${strTestDone} (err${iExitStatus}-${fTestElapsedTime}s)" . (defined($oExecDone->{strOutLog}) && !$self->{bShowOutputAsync} ? ":\n\n" . trim($oExecDone->{strOutLog}) . "\n" : ''), undef, undef, 4); $bFail = true; } # Output success else { &log(INFO, "${strTestDone} (${fTestElapsedTime}s)". ($self->{bVmOut} && !$self->{bShowOutputAsync} ? ":\n\n" . trim($oExecDone->{strOutLog}) . "\n" : ''), undef, undef, 4); } if (!$self->{bNoCleanup}) { my $strHostTestPath = "$self->{strTestPath}/${strImage}"; if ($self->{oTest}->{&TEST_VM} ne VM_NONE) { containerRemove("test-$self->{iVmIdx}"); } executeTest("rm -rf ${strHostTestPath}"); } $bDone = true; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bDone', value => $bDone, trace => true}, {name => 'bFail', value => $bFail, trace => true} ); } #################################################################################################################################### # Install C binary #################################################################################################################################### sub jobInstallC { my $strBasePath = shift; my $strVm = shift; my $strImage = shift; my $oVm = vmGet(); my $strBuildPath = "${strBasePath}/test/.vagrant/bin/${strVm}"; my $strBuildLibCPath = "${strBuildPath}/libc"; my $strBuildBinPath = "${strBuildPath}/src"; executeTest( "docker exec -i -u root ${strImage} bash -c '" . "cp ${strBuildBinPath}/" . PROJECT_EXE . ' /usr/bin/' . PROJECT_EXE . ' && ' . 'chmod 755 /usr/bin/' . PROJECT_EXE . "'"); } push(@EXPORT, qw(jobInstallC)); 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Common/ListTest.pm000066400000000000000000000235371362531507100251740ustar00rootroot00000000000000#################################################################################################################################### # ListTest.pm - Creates a list of tests to be run based on input criteria #################################################################################################################################### package pgBackRestTest::Common::ListTest; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRestTest::Common::DefineTest; use pgBackRestTest::Common::VmTest; ################################################################################################################################ # Test constants ################################################################################################################################ use constant TEST_DB => 'db'; push @EXPORT, qw(TEST_DB); use constant TEST_C => 'c'; push @EXPORT, qw(TEST_C); use constant TEST_CDEF => 'cdef'; push @EXPORT, qw(TEST_CDEF); use constant TEST_CTESTDEF => 'ctestdef'; push @EXPORT, qw(TEST_CTESTDEF); use constant TEST_CONTAINER => 'container'; push @EXPORT, qw(TEST_CONTAINER); use constant TEST_DEBUG_UNIT_SUPPRESS => TESTDEF_DEBUG_UNIT_SUPPRESS; push @EXPORT, qw(TEST_DEBUG_UNIT_SUPPRESS); use constant TEST_MODULE => 'module'; push @EXPORT, qw(TEST_MODULE); use constant TEST_NAME => 'test'; push @EXPORT, qw(TEST_NAME); use constant TEST_BIN_REQ => 'bin-req'; push @EXPORT, qw(TEST_BIN_REQ); use constant TEST_PGSQL_BIN => 'pgsql-bin'; push @EXPORT, qw(TEST_PGSQL_BIN); use constant TEST_INTEGRATION => 'integration'; push @EXPORT, qw(TEST_INTEGRATION); use constant TEST_TYPE => 'type'; push @EXPORT, qw(TEST_TYPE); use constant TEST_RUN => 'run'; push @EXPORT, qw(TEST_RUN); use constant TEST_VM => 'os'; push @EXPORT, qw(TEST_VM); #################################################################################################################################### # testListGet #################################################################################################################################### sub testListGet { my $strVm = shift; my $stryModule = shift; my $stryModuleTest = shift; my $iyModuleTestRun = shift; my $strDbVersion = shift; my $bCoverageOnly = shift; my $bCOnly = shift; my $bContainerOnly = shift; my $oyVm = vmGet(); my $oyTestRun = []; if ($strVm ne 'all' && !defined($${oyVm}{$strVm})) { confess &log(ERROR, "${strVm} is not a valid VM"); } my @stryTestOS = VM_LIST; if ($strVm ne 'all') { @stryTestOS = ($strVm); } foreach my $strTestOS (@stryTestOS) { foreach my $strModule (testDefModuleList()) { my $hModule = testDefModule($strModule); if (@{$stryModule} == 0 || grep(/^$strModule$/i, @{$stryModule})) { foreach my $strModuleTest (testDefModuleTestList($strModule)) { my $hTest = testDefModuleTest($strModule, $strModuleTest); if (@{$stryModuleTest} == 0 || grep(/^$strModuleTest$/i, @{$stryModuleTest})) { my $iDbVersionMin = -1; my $iDbVersionMax = -1; # Database versions to test if (defined($hTest->{&TESTDEF_DB}) && $hTest->{&TESTDEF_DB}) { $iDbVersionMin = 0; $iDbVersionMax = @{$$oyVm{$strTestOS}{&VM_DB_TEST}} - 1; } my $bFirstDbVersion = true; # Skip this test if it can't run on this VM next if (defined($hTest->{&TESTDEF_VM}) && grep(/^$strTestOS$/i, @{$hTest->{&TESTDEF_VM}}) == 0); # Skip this test if only C tests are requested and this is not a C test next if ($bCOnly && !$hTest->{&TESTDEF_C}); # Skip this test if it is integration and vm=none next if ($strVm eq VM_NONE && $hTest->{&TESTDEF_TYPE} eq TESTDEF_INTEGRATION); # Skip this test if it is not C and vm=none. Perl tests require libc which is not supported. next if ($strVm eq VM_NONE && !$hTest->{&TESTDEF_C}); # Skip this test if a container is required and vm=none. next if ($strVm eq VM_NONE && $hTest->{&TESTDEF_CONTAINER_REQUIRED}); # Skip this if it does not require a container and container only tests are required. next if ($bContainerOnly && $hTest->{&TESTDEF_C} && !$hTest->{&TESTDEF_CONTAINER_REQUIRED}); for (my $iDbVersionIdx = $iDbVersionMax; $iDbVersionIdx >= $iDbVersionMin; $iDbVersionIdx--) { if ($iDbVersionIdx == -1 || $strDbVersion eq 'all' || $strDbVersion eq 'minimal' || ($strDbVersion ne 'all' && $strDbVersion eq ${$$oyVm{$strTestOS}{&VM_DB_TEST}}[$iDbVersionIdx])) { # Individual tests will be each be run in a separate container. This is the default. my $bTestIndividual = !defined($hTest->{&TESTDEF_INDIVIDUAL}) || $hTest->{&TESTDEF_INDIVIDUAL} ? true : false; my $iTestRunMin = $bTestIndividual ? 1 : -1; my $iTestRunMax = $bTestIndividual ? $hTest->{&TESTDEF_TOTAL} : -1; for (my $iTestRunIdx = $iTestRunMin; $iTestRunIdx <= $iTestRunMax; $iTestRunIdx++) { # Skip this run if a list was provided and this test is not in the list next if ( $bTestIndividual && @{$iyModuleTestRun} != 0 && !grep(/^$iTestRunIdx$/i, @{$iyModuleTestRun})); # Skip this run if only coverage tests are requested and this test does not provide coverage next if ($bCoverageOnly && !defined($hTest->{&TESTDEF_COVERAGE})); my $strDbVersion = $iDbVersionIdx == -1 ? undef : ${$$oyVm{$strTestOS}{&VM_DB_TEST}}[$iDbVersionIdx]; my $strPgSqlBin = $$oyVm{$strTestOS}{&VMDEF_PGSQL_BIN}; if (defined($strDbVersion)) { $strPgSqlBin =~ s/\{\[version\]\}/$strDbVersion/g; } else { $strPgSqlBin =~ s/\{\[version\]\}/9\.4/g; } my $oTestRun = { &TEST_TYPE => $hTest->{&TESTDEF_TYPE}, &TEST_VM => $strTestOS, &TEST_C => coalesce($hTest->{&TESTDEF_C}, $hModule->{&TESTDEF_C}, false), &TEST_CDEF => $hTest->{&TESTDEF_DEFINE}, &TEST_CTESTDEF => $hTest->{&TESTDEF_DEFINE_TEST}, &TEST_DEBUG_UNIT_SUPPRESS => $hTest->{&TEST_DEBUG_UNIT_SUPPRESS}, &TEST_CONTAINER => defined($hTest->{&TESTDEF_CONTAINER}) ? $hTest->{&TESTDEF_CONTAINER} : $hModule->{&TESTDEF_CONTAINER}, &TEST_PGSQL_BIN => $strPgSqlBin, &TEST_BIN_REQ => $hTest->{&TESTDEF_BIN_REQ}, &TEST_INTEGRATION => $hTest->{&TESTDEF_INTEGRATION}, &TEST_MODULE => $strModule, &TEST_NAME => $strModuleTest, &TEST_RUN => $iTestRunIdx == -1 ? (@{$iyModuleTestRun} == 0 ? undef : $iyModuleTestRun) : [$iTestRunIdx], &TEST_DB => $strDbVersion }; push(@{$oyTestRun}, $oTestRun); } $bFirstDbVersion = false; } } } } } } } return $oyTestRun; } push @EXPORT, qw(testListGet); 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Common/LogTest.pm000066400000000000000000000473201362531507100247760ustar00rootroot00000000000000#################################################################################################################################### # LogTest.pm - Capture the output of commands to compare them with an expected version #################################################################################################################################### package pgBackRestTest::Common::LogTest; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Cwd qw(abs_path); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use pgBackRest::Common::Log; use pgBackRest::Version; use pgBackRestTest::Common::ContainerTest; use pgBackRestTest::Common::ExecuteTest; #################################################################################################################################### # Expect log cache for supplemental files so they are only added to expect logs when they have changed #################################################################################################################################### my $hyExpectCache = undef; #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Class name # Create the class hash my $self = {}; bless $self, $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{strModule}, $self->{strTest}, $self->{iRun}, $self->{bForce}, $self->{strComment}, $self->{strCommandMain}, $self->{strPgSqlBin}, $self->{strTestPath}, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'strModule', trace => true}, {name => 'strTest', trace => true}, {name => 'iRun', trace => true}, {name => 'bForce', trace => true}, {name => 'strComment', trace => true}, {name => 'strCommandMain', trace => true}, {name => 'strPgSqlBin', required => false, trace => true}, {name => 'strTestPath', trace => true}, ); # Initialize the test log $self->{strLog} = 'run ' . sprintf('%03d', $self->{iRun}) . ' - ' . $self->{strComment}; $self->{strLog} .= "\n" . ('=' x length($self->{strLog})) . "\n"; # Initialize the filename $self->{strFileName} = sprintf("expect/$self->{strModule}-$self->{strTest}-%03d.log", $self->{iRun}); # Initialize the replacement hash $self->{oReplaceHash} = {}; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self, trace => true} ); } #################################################################################################################################### # logAdd #################################################################################################################################### sub logAdd { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strCommand, $strComment, $strLog ) = logDebugParam ( __PACKAGE__ . '->logAdd', \@_, {name => 'strCommand', trace => true}, {name => 'strComment', required => false, trace => true}, {name => 'strLog', required => false, trace => true} ); $self->{strLog} .= "\n"; if (defined($strComment)) { $self->{strLog} .= $self->regExpReplaceAll($strComment) . "\n"; } $self->{strLog} .= '> ' . $self->regExpReplaceAll($strCommand) . "\n" . ('-' x '132') . "\n"; # Make sure there is a log before trying to output it if (defined($strLog)) { # Do replacements on each line of the log foreach my $strLine (split("\n", $strLog)) { # Remove timestamp from log line $strLine =~ s/^[0-9]{4}-[0-1][0-9]-[0-3][0-9] [0-2][0-9]:[0-6][0-9]:[0-6][0-9]\.[0-9]{3} //; # Don't include test points in the final log if ($strLine !~ /^ TEST/) { # Remove spaces that provided padding for the timetamp $strLine =~ s/^ //; # Remove any final CRs $strLine =~ s/\r$//; # Do other replacements $strLine = $self->regExpReplaceAll($strLine); # Add to the log $self->{strLog} .= "${strLine}\n"; } } } # Return from function and log return values if any logDebugReturn($strOperation); } #################################################################################################################################### # supplementalAdd #################################################################################################################################### sub supplementalAdd { my $self = shift; my $strFileName = shift; my $strComment = shift; my $strContent = shift; # Get content if it is not defined if (!defined($strContent)) { open(my $hFile, '<', $strFileName) or confess &log(ERROR, "unable to open ${strFileName} for appending to test log"); while (my $strLine = readline($hFile)) { $strContent .= $strLine; } close($hFile); } # Only ouput when the content of this file has changed if (!defined($hyExpectCache->{$strFileName}) || $hyExpectCache->{$strFileName} ne $strContent) { # $hyExpectCache->{$strFileName} = $strContent; my $strHeader = "+ supplemental file: " . $self->regExpReplaceAll($strFileName); if (defined($strComment)) { $self->{strLog} .= "\n" . $self->regExpReplaceAll($strComment) . "\n" . ('=' x '132') . "\n"; } $self->{strLog} .= "\n${strHeader}\n" . ('-' x length($strHeader)) . "\n"; if (length($strContent) > 0) { foreach my $strLine (split("\n", $strContent)) { $self->{strLog} .= $self->regExpReplaceAll($strLine) . "\n"; } } } } #################################################################################################################################### # logWrite #################################################################################################################################### sub logWrite { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strBasePath, $strTestPath, $strFileName ) = logDebugParam ( __PACKAGE__ . '->logWrite', \@_, {name => 'strBasePath', trace => true}, {name => 'strTestPath', trace => true}, {name => 'strFileName', default => $self->{strFileName}, trace => true} ); my $strReferenceLogFile = "${strBasePath}/test/${strFileName}"; my $strTestLogFile; if ($self->{bForce}) { $strTestLogFile = $strReferenceLogFile; } else { my $strTestLogPath = "${strTestPath}/expect"; if (!-e $strTestLogPath) { mkdir($strTestLogPath, 0750) or confess "unable to create expect log path ${strTestLogPath}"; } $strTestLogFile = "${strTestPath}/${strFileName}"; } open(my $hFile, '>', $strTestLogFile) or confess "unable to open expect log file '${strTestLogFile}': $!"; syswrite($hFile, $self->{strLog}) or confess "unable to write expect log file '${strTestLogFile}': $!"; close($hFile); if (!$self->{bForce}) { executeTest("diff ${strReferenceLogFile} ${strTestLogFile}"); } # Return from function and log return values if any logDebugReturn($strOperation); } #################################################################################################################################### # regExpReplace #################################################################################################################################### sub regExpReplace { my $self = shift; my $strLine = shift; my $strType = shift; my $strExpression = shift; my $strToken = shift; my $bIndex = shift; my @stryReplace = ($strLine =~ /$strExpression/g); foreach my $strReplace (@stryReplace) { my $iIndex; my $strTypeReplacement; my $strReplacement; if (!defined($bIndex) || $bIndex) { if (defined($strToken)) { my @stryReplacement = ($strReplace =~ /$strToken/g); if (@stryReplacement != 1) { my $strError = "'${strToken}'"; if (@stryReplacement == 0) { confess &log(ASSERT, $strError . " is not a sub-regexp of '${strExpression}' or" . " matches " . @stryReplacement . " times on {[${strReplace}]}"); } confess &log( ASSERT, $strError . " matches '${strExpression}' " . @stryReplacement . " times on '${strReplace}': " . join(',', @stryReplacement)); } $strReplacement = $stryReplacement[0]; } else { $strReplacement = $strReplace; } if (defined($strType)) { if (defined(${$self->{oReplaceHash}}{$strType}{$strReplacement})) { $iIndex = ${$self->{oReplaceHash}}{$strType}{$strReplacement}{index}; } else { if (!defined(${$self->{oReplaceHash}}{$strType}{index})) { ${$self->{oReplaceHash}}{$strType}{index} = 1; } $iIndex = ${$self->{oReplaceHash}}{$strType}{index}++; ${$self->{oReplaceHash}}{$strType}{$strReplacement}{index} = $iIndex; } } } $strTypeReplacement = defined($strType) ? "[${strType}" . (defined($iIndex) ? "-${iIndex}" : '') . ']' : ''; if (defined($strToken)) { $strReplacement = $strReplace; $strReplacement =~ s/$strToken/$strTypeReplacement/; } else { $strReplacement = $strTypeReplacement; } $strReplace =~ s/\//\\\//g; $strReplace =~ s/\+/\\\+/g; $strLine =~ s/$strReplace/$strReplacement/g; } return $strLine; } #################################################################################################################################### # regExpReplaceAll # # Replaces dynamic test output so that the expected test output can be verified against actual test output. #################################################################################################################################### sub regExpReplaceAll { my $self = shift; my $strLine = shift; my $strBinPath = dirname(dirname(abs_path($0))) . '/bin'; # Replace the exe path/file with sh ' prepended my $strLineBefore = $strLine; $strLine =~ s/bash -l -c '$self->{strCommandMain}/[BACKREST-BIN]/g; # Replace the final ' if the previous expression made changes if ($strLine ne $strLineBefore) { $strLine =~ s/'$//g; } # Replace the exe path/file with sh ' prepended $strLine =~ s/$self->{strCommandMain}/[BACKREST-BIN]/g; # Replace the test path $strLine =~ s/$self->{strTestPath}/[TEST_PATH]/g; # Replace the pgsql path (if exists) if (defined($self->{strPgSqlBin})) { $strLine =~ s/$self->{strPgSqlBin}/[PGSQL_BIN_PATH]/g; } $strLine = $self->regExpReplace($strLine, 'BACKREST-NAME-VERSION', '^' . PROJECT_NAME . ' ' . PROJECT_VERSION, undef, false); $strLine = $self->regExpReplace( $strLine, 'BACKREST-VERSION', ' begin ' . PROJECT_VERSION . '\:', PROJECT_VERSION, false); $strLine = $self->regExpReplace($strLine, undef, '^docker exec -u [a-z]* test-[0-9]+\-', 'test-[0-9]+\-', false); $strLine = $self->regExpReplace($strLine, 'CONTAINER-EXEC', '^docker exec -u [a-z]*', '^docker exec -u [a-z]*', false); $strLine = $self->regExpReplace($strLine, 'PROCESS-ID', 'sent term signal to process [0-9]+', '[0-9]+$', false); $strLine = $self->regExpReplace($strLine, 'YEAR', 'backup\.history\/20[0-9]{2}', '20[0-9]{2}$'); $strLine = $self->regExpReplace($strLine, 'BACKUP-INCR', '[0-9]{8}\-[0-9]{6}F\_[0-9]{8}\-[0-9]{6}I'); $strLine = $self->regExpReplace($strLine, 'BACKUP-DIFF', '[0-9]{8}\-[0-9]{6}F\_[0-9]{8}\-[0-9]{6}D'); $strLine = $self->regExpReplace($strLine, 'BACKUP-FULL', '[0-9]{8}\-[0-9]{6}F'); $strLine = $self->regExpReplace( $strLine, 'BACKUP-EXPR', 'strExpression \= \_[0-9]{8}\-[0-9]{6}', '\_[0-9]{8}\-[0-9]{6}$', false); $strLine = $self->regExpReplace($strLine, 'TLS-STATISTICS', 'tls statistics\:.*$', '[^\:]+$', false); $strLine = $self->regExpReplace($strLine, 'HTTP-STATISTICS', 'http statistics\:.*$', '[^\:]+$', false); $strLine = $self->regExpReplace($strLine, 'GROUP', 'strGroup = [^ \n,\[\]]+', '[^ \n,\[\]]+$'); $strLine = $self->regExpReplace($strLine, 'GROUP', 'unknown group in backup manifest mapped to \'[^\']+', '[^\']+$'); $strLine = $self->regExpReplace($strLine, 'GROUP', 'group"[ ]{0,1}:[ ]{0,1}"[^"]+', '[^"]+$'); $strLine = $self->regExpReplace($strLine, 'GROUP', 'group=\"[^"]+', '[^"]+$'); $strLine = $self->regExpReplace($strLine, 'GROUP', 'group for .* was not mapped to a name\, set to .+$', '[^ ]+$'); $strLine = $self->regExpReplace($strLine, 'GROUP', 'set ownership [^\:]+:[^ ]+', '[^\:]+$'); $strLine = $self->regExpReplace($strLine, 'GROUP', TEST_USER . '\, ' . TEST_GROUP, '[^ ]+$'); $strLine = $self->regExpReplace($strLine, 'USER', 'strRemoteHostUser = [^ \n,\[\]]+', '[^ \n,\[\]]+$'); $strLine = $self->regExpReplace($strLine, 'USER', 'unknown user in backup manifest mapped to \'[^\']+', '[^\']+$'); $strLine = $self->regExpReplace($strLine, 'USER', 'strUser = [^ \n,\[\]]+', '[^ \n,\[\]]+$'); $strLine = $self->regExpReplace($strLine, 'USER', 'user"[ ]{0,1}:[ ]{0,1}"[^"]+', '[^"]+$'); $strLine = $self->regExpReplace($strLine, 'USER', 'user=\"[^"]+', '[^"]+$'); $strLine = $self->regExpReplace($strLine, 'USER', '^pg-host-user=.+$', '[^=]+$'); $strLine = $self->regExpReplace($strLine, 'USER', 'user for .* was not mapped to a name\, set to .+$', '[^ ]+$'); $strLine = $self->regExpReplace($strLine, 'USER', 'set ownership [^\:]+', '[^ ]+$'); $strLine = $self->regExpReplace($strLine, 'USER', 'cannot be used for restore\, set to .+$', '[^ ]+$'); $strLine = $self->regExpReplace($strLine, 'USER', '-user=[a-z0-9_]+', '[^=]+$'); $strLine = $self->regExpReplace($strLine, 'USER', '[^ ]+\@db\-master', '^[^\@]+'); $strLine = $self->regExpReplace($strLine, 'USER', '[\( ]{1}' . TEST_USER . '[\,\)]{1}', TEST_USER); $strLine = $self->regExpReplace($strLine, 'CIPHER-PASS', '^cipher\-pass\=.+$', '[^\=]+$'); $strLine = $self->regExpReplace($strLine, 'PORT', 'db[1-9]{0,1}-port=[0-9]+', '[0-9]+$'); # Replace year when it falls on a single line when executing ls -1R $strLine = $self->regExpReplace($strLine, 'YEAR', '^20[0-9]{2}$'); # Replace year when it is the last part of a path when executing ls -1R $strLine = $self->regExpReplace($strLine, 'YEAR', 'history\/20[0-9]{2}\:$', '20[0-9]{2}'); my $strTimestampRegExp = "[0-9]{4}-[0-1][0-9]-[0-3][0-9] [0-2][0-9]:[0-6][0-9]:[0-6][0-9]"; $strLine = $self->regExpReplace($strLine, 'TS_PATH', "PG\\_[0-9]\\.[0-9]\\_[0-9]{9}"); my $strProjectVersion = PROJECT_VERSION; $strProjectVersion =~ s/\./\\./g; $strLine = $self->regExpReplace($strLine, 'VERSION', "version[\"]{0,1}[ ]{0,1}[\:\=)]{1}[ ]{0,1}[\"]{0,1}" . $strProjectVersion, $strProjectVersion . '$'); $strLine = $self->regExpReplace($strLine, 'TIMESTAMP', 'timestamp"[ ]{0,1}:[ ]{0,1}[0-9]{10}','[0-9]{10}$'); $strLine = $self->regExpReplace($strLine, 'TIMESTAMP', "timestamp-[a-z-]+[\"]{0,1}[ ]{0,1}[\:\=)]{1}[ ]{0,1}[\"]{0,1}[0-9]{10}", '[0-9]{10}$', false); $strLine = $self->regExpReplace($strLine, 'TIMESTAMP', "start\" : [0-9]{10}", '[0-9]{10}$', false); $strLine = $self->regExpReplace($strLine, 'TIMESTAMP', "stop\" : [0-9]{10}", '[0-9]{10}$', false); $strLine = $self->regExpReplace($strLine, 'TIMESTAMP', TEST_GROUP . '\, [0-9]{10}', '[0-9]{10}$', false); $strLine = $self->regExpReplace( $strLine, 'TIMESTAMP', 'generated by pgBackRest restore on .*$', '[0-9]{4}\-[0-9]{2}\-[0-9]{2} [0-9]{2}\:[0-9]{2}\:[0-9]{2}$', false); $strLine = $self->regExpReplace($strLine, 'SIZE', "size\"[ ]{0,1}:[ ]{0,1}[0-9]+", '[0-9]+$', false); $strLine = $self->regExpReplace($strLine, 'DELTA', "delta\"[ ]{0,1}:[ ]{0,1}[0-9]+", '[0-9]+$', false); $strLine = $self->regExpReplace( $strLine, 'TIMESTAMP-STR', "timestamp start\/stop: $strTimestampRegExp / $strTimestampRegExp", "${strTimestampRegExp} / ${strTimestampRegExp}\$", false); $strLine = $self->regExpReplace($strLine, 'CHECKSUM', 'checksum=[\"]{0,1}[0-f]{40}', '[0-f]{40}$', false); $strLine = $self->regExpReplace($strLine, 'LOG-LEVEL-FILE', 'log-level-file=[a-z]+', '[a-z]+$', false); $strLine = $self->regExpReplace($strLine, 'LOG-SUBPROCESS', 'log-subprocess=[a-z]+', '[a-z]+$', false); $strLine = $self->regExpReplace($strLine, '', ' --log-subprocess', undef, false); $strLine = $self->regExpReplace($strLine, '', ' --no-log-subprocess', undef, false); $strLine = $self->regExpReplace($strLine, 'BUFFER-SIZE', 'buffer-size=[0-9a-z]+', '[0-9a-z]+$', false); $strLine = $self->regExpReplace($strLine, 'REMOTE-PROCESS-TERMINATED-MESSAGE', 'remote process terminated.*: (ssh.*|no output from terminated process)$', '(ssh.*|no output from terminated process)$', false); # Full test time-based recovery $strLine = $self->regExpReplace($strLine, 'TIMESTAMP-TARGET', "\\, target \\'.*UTC", "[^\\']+UTC\$"); $strLine = $self->regExpReplace($strLine, 'TIMESTAMP-TARGET', " \\-\\-target\\=\\\".*UTC", "[^\\\"]+UTC\$"); $strLine = $self->regExpReplace($strLine, 'TIMESTAMP-TARGET', "^recovery_target_time \\= \\'.*UTC", "[^\\']+UTC\$"); $strLine = $self->regExpReplace($strLine, 'TIMESTAMP-TARGET', "\\, target \\'.*\\+00", "[^\\']+\\+00\$"); $strLine = $self->regExpReplace($strLine, 'TIMESTAMP-TARGET', " \\-\\-target\\=\\\".*\\+00", "[^\\\"]+\\+00\$"); $strLine = $self->regExpReplace($strLine, 'TIMESTAMP-TARGET', "^recovery_target_time \\= \\'.*\\+00", "[^\\']+\\+00\$"); # Full test xid-based recovery (this expressions only work when time-based expressions above have already been applied $strLine = $self->regExpReplace($strLine, 'XID-TARGET', "\\, target \\'[0-9]+", "[0-9]+\$"); $strLine = $self->regExpReplace($strLine, 'XID-TARGET', " \\-\\-target\\=\\\"[0-9]+", "[0-9]+\$"); $strLine = $self->regExpReplace($strLine, 'XID-TARGET', "^recovery_target_xid \\= \\'[0-9]+", "[0-9]+\$"); $strLine = $self->regExpReplace( $strLine, 'MODIFICATION-TIME', '(' . (substr(time(), 0, 5) - 1) . '[0-9]{5}|' . substr(time(), 0, 5) . '[0-9]{5})', '^[0-9]{10}$'); return $strLine; } 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Common/RunTest.pm000066400000000000000000000462671362531507100250320ustar00rootroot00000000000000#################################################################################################################################### # RunTest.pm - All tests are inherited from this object #################################################################################################################################### package pgBackRestTest::Common::RunTest; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Common::Wait; use pgBackRest::Storage::Base; use pgBackRest::Storage::Storage; use pgBackRest::Version; use pgBackRestTest::Common::BuildTest; use pgBackRestTest::Common::DefineTest; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::LogTest; use pgBackRestTest::Common::VmTest; #################################################################################################################################### # Constant to use when bogus data is required #################################################################################################################################### use constant BOGUS => 'bogus'; push @EXPORT, qw(BOGUS); #################################################################################################################################### # The current test run that is executing. Only a single run should ever occur in a process to prevent various cleanup issues from # affecting the next run. Of course multiple subtests can be executed in a single run. #################################################################################################################################### my $oTestRun; my $oStorage; #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Class name # Create the class hash my $self = {}; bless $self, $class; # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->new'); # Initialize run counter $self->{iRun} = 0; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self, trace => true} ); } #################################################################################################################################### # initModule # # Empty init sub in case the ancestor class does not declare one. #################################################################################################################################### sub initModule {} #################################################################################################################################### # initTest # # Empty init sub in case the ancestor class does not declare one. #################################################################################################################################### sub initTest {} #################################################################################################################################### # cleanTest # # Delete all files in test directory. #################################################################################################################################### sub cleanTest { my $self = shift; executeTest('rm -rf ' . $self->testPath() . '/*'); } #################################################################################################################################### # cleanModule # # Empty final sub in case the ancestor class does not declare one. #################################################################################################################################### sub cleanModule {} #################################################################################################################################### # process #################################################################################################################################### sub process { my $self = shift; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{strVm}, $self->{iVmId}, $self->{strBasePath}, $self->{strTestPath}, $self->{strBackRestExeC}, $self->{strBackRestExeHelper}, $self->{strPgBinPath}, $self->{strPgVersion}, $self->{strModule}, $self->{strModuleTest}, $self->{iyModuleTestRun}, $self->{bOutput}, $self->{bDryRun}, $self->{bCleanup}, $self->{bLogForce}, $self->{strLogLevelTestFile}, $self->{strPgUser}, $self->{strGroup}, ) = logDebugParam ( __PACKAGE__ . '->process', \@_, {name => 'strVm'}, {name => 'iVmId'}, {name => 'strBasePath'}, {name => 'strTestPath'}, {name => 'strBackRestExeC'}, {name => 'strBackRestExeHelper'}, {name => 'strPgBinPath', required => false}, {name => 'strPgVersion', required => false}, {name => 'strModule'}, {name => 'strModuleTest'}, {name => 'iModuleTestRun', required => false}, {name => 'bOutput'}, {name => 'bDryRun'}, {name => 'bCleanup'}, {name => 'bLogForce'}, {name => 'strLogLevelTestFile'}, {name => 'strPgUser'}, {name => 'strGroup'}, ); # Init will only be run on first test, clean/init on subsequent tests $self->{bFirstTest} = true; # Initialize test storage $oStorage = new pgBackRest::Storage::Storage(STORAGE_LOCAL, {strPath => $self->testPath()}); # Generate backrest exe $self->{strBackRestExe} = defined($self->{strBackRestExeC}) ? $self->{strBackRestExeC} : $self->{strBackRestExeHelper}; projectBinSet($self->{strBackRestExe}); # Init, run, and end the test(s) $self->initModule(); $self->run(); $self->end(); $self->cleanModule(); # Make sure the correct number of tests ran my $hModuleTest = testDefModuleTest($self->{strModule}, $self->{strModuleTest}); if ($hModuleTest->{&TESTDEF_TOTAL} != $self->runCurrent()) { confess &log(ASSERT, "expected $hModuleTest->{&TESTDEF_TOTAL} tests to run but $self->{iRun} ran"); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self, trace => true} ); } #################################################################################################################################### # begin #################################################################################################################################### sub begin { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strDescription, $bExpect, ) = logDebugParam ( __PACKAGE__ . '->begin', \@_, {name => 'strDescription'}, {name => 'bExpect', required => false}, ); # Save the previous expect log $self->end(); # If bExpect is defined then it is an override of the default $self->{bExpect} = false; if ($self->vm() eq VM_EXPECT) { if (defined($bExpect)) { $self->{bExpect} = $bExpect; } # Else get the default expect setting else { $self->{bExpect} = (testDefModuleTest($self->{strModule}, $self->{strModuleTest}))->{&TESTDEF_EXPECT}; } } # Increment the run counter; $self->{iRun}++; # Return if this test should not be run if (@{$self->{iyModuleTestRun}} != 0 && !grep(/^$self->{iRun}$/i, @{$self->{iyModuleTestRun}})) { return false; } # Output information about test to run &log(INFO, 'run ' . sprintf('%03d', $self->runCurrent()) . ' - ' . $strDescription); if ($self->isDryRun()) { return false; } # Create an ExpectTest object if ($self->doExpect()) { $self->{oExpect} = new pgBackRestTest::Common::LogTest( $self->module(), $self->moduleTest(), $self->runCurrent(), $self->doLogForce(), $strDescription, $self->{strBackRestExe}, $self->pgBinPath(), $self->testPath()); &log(INFO, ' expect log: ' . $self->{oExpect}->{strFileName}); } if (!$self->{bFirstTest}) { $self->cleanTest(); } $self->initTest(); $self->{bFirstTest} = false; return true; } #################################################################################################################################### # end #################################################################################################################################### sub end { my $self = shift; # Save the previous test log if (defined($self->expect())) { $self->expect()->logWrite($self->basePath(), $self->testPath()); delete($self->{oExpect}); } } #################################################################################################################################### # testResult #################################################################################################################################### sub testResult { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $fnSub, $strExpected, $strDescription, $iWaitSeconds, $strLogExpect, $strLogLevel, ) = logDebugParam ( __PACKAGE__ . '::testResult', \@_, {name => 'fnSub', trace => true}, {name => 'strExpected', required => false, trace => true}, {name => 'strDescription', trace => true}, {name => 'iWaitSeconds', optional => true, default => 0, trace => true}, {name => 'strLogExpect', optional => true, trace => true}, {name => 'strLogLevel', optional => true, default => WARN, trace => true}, ); &log(INFO, ' ' . $strDescription); my $strActual; my $bWarnValid = true; my $oWait = waitInit($iWaitSeconds); my $bDone = false; # Save the current log levels and set the file level to strLogLevel, console to off, and timestamp false my ($strLogLevelFile, $strLogLevelConsole, $strLogLevelStdErr, $bLogTimestamp) = logLevel(); logLevelSet($strLogLevel, OFF, undef, false); # Clear the cache for this test logFileCacheClear(); my @stryResult; do { eval { @stryResult = ref($fnSub) eq 'CODE' ? $fnSub->() : $fnSub; if (@stryResult <= 1) { $strActual = ${logDebugBuild($stryResult[0])}; } else { $strActual = ${logDebugBuild(\@stryResult)}; } # Restore the log level logLevelSet($strLogLevelFile, $strLogLevelConsole, $strLogLevelStdErr, $bLogTimestamp); return true; } or do { # Restore the log level logLevelSet($strLogLevelFile, $strLogLevelConsole, $strLogLevelStdErr, $bLogTimestamp); if (!isException(\$EVAL_ERROR)) { confess "unexpected standard Perl exception" . (defined($EVAL_ERROR) ? ": ${EVAL_ERROR}" : ''); } confess &logException($EVAL_ERROR); }; if ($strActual ne (defined($strExpected) ? $strExpected : "[undef]")) { if (!waitMore($oWait)) { confess "expected:\n" . (defined($strExpected) ? "\"${strExpected}\"" : '[undef]') . "\nbut actual was:\n" . (defined($strActual) ? "\"${strActual}\"" : '[undef]'); } } else { $bDone = true; } } while (!$bDone); # If we get here then test any warning message if (defined($strLogExpect)) { my $strLogMessage = trim(logFileCache()); # Strip leading Process marker and whitespace from each line $strLogMessage =~ s/^(P[0-9]{2})*\s+//mg; # If the expected message does not exactly match the logged message or is not at least contained in it, then error if (!($strLogMessage eq $strLogExpect || $strLogMessage =~ $strLogExpect)) { confess &log(ERROR, "the log message:\n$strLogMessage\ndoes not match or does not contain the expected message:\n" . $strLogExpect); } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'result', value => \@stryResult, trace => true} ); } #################################################################################################################################### # testException #################################################################################################################################### sub testException { my $self = shift; my $fnSub = shift; my $iCodeExpected = shift; my $strMessageExpected = shift; # Output first line of the error message &log(INFO, " [${iCodeExpected}] " . (defined($strMessageExpected) ? (split('\n', $strMessageExpected))[0] : 'undef error message')); my $bError = false; my $strError = "exception ${iCodeExpected}, " . (defined($strMessageExpected) ? "'${strMessageExpected}'" : '[UNDEF]') . " was expected"; eval { logDisable(); $fnSub->(); logEnable(); return true; } or do { logEnable(); if (!isException(\$EVAL_ERROR)) { confess "${strError} but actual was standard Perl exception" . (defined($EVAL_ERROR) ? ": ${EVAL_ERROR}" : ''); } if (!($EVAL_ERROR->code() == $iCodeExpected && (!defined($strMessageExpected) && !defined($EVAL_ERROR->message()) || (defined($strMessageExpected) && defined($EVAL_ERROR->message()) && ($EVAL_ERROR->message() eq $strMessageExpected || $EVAL_ERROR->message() =~ "^${strMessageExpected}" || $EVAL_ERROR->message() =~ "^${strMessageExpected} at "))))) { confess "${strError} but actual was " . $EVAL_ERROR->code() . ', ' . (defined($EVAL_ERROR->message()) ? qw{'} . $EVAL_ERROR->message() . qw{'} : '[UNDEF]'); } $bError = true; }; if (!$bError) { confess "${strError} but no exception was thrown"; } } #################################################################################################################################### # testRunName # # Create module/test names by upper-casing the first letter and then inserting capitals after each -. #################################################################################################################################### sub testRunName { my $strName = shift; my $bInitCapFirst = shift; $bInitCapFirst = defined($bInitCapFirst) ? $bInitCapFirst : true; my $bFirst = true; my @stryName = split('\-', $strName); $strName = undef; foreach my $strPart (@stryName) { $strName .= ($bFirst && $bInitCapFirst) || !$bFirst ? ucfirst($strPart) : $strPart; $bFirst = false; } return $strName; } push @EXPORT, qw(testRunName); #################################################################################################################################### # testRun #################################################################################################################################### sub testRun { # Assign function parameters, defaults, and log debug info my ( $strOperation, $strModule, $strModuleTest, ) = logDebugParam ( __PACKAGE__ . '::testRun', \@_, {name => 'strModule', trace => true}, {name => 'strModuleTest', trace => true}, ); # Error if the test run is already defined - only one run per process is allowed if (defined($oTestRun)) { confess &log(ASSERT, 'a test run has already been created in this process'); } my $strModuleName = 'pgBackRestTest::Module::' . testRunName($strModule) . '::' . testRunName($strModule) . testRunName($strModuleTest) . 'Test'; $oTestRun = eval("require ${strModuleName}; ${strModuleName}->import(); return new ${strModuleName}();") or do {confess $EVAL_ERROR}; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oRun', value => $oTestRun, trace => true} ); } push @EXPORT, qw(testRun); #################################################################################################################################### # testRunGet #################################################################################################################################### sub testRunGet { return $oTestRun; } push @EXPORT, qw(testRunGet); #################################################################################################################################### # storageTest - get the storage for the current test #################################################################################################################################### sub storageTest { return $oStorage; } push(@EXPORT, qw(storageTest)); #################################################################################################################################### # Getters #################################################################################################################################### sub archBits {return vmArchBits(shift->{strVm})} sub backrestExe {return shift->{strBackRestExe}} sub basePath {return shift->{strBasePath}} sub dataPath {return shift->basePath() . '/test/data'} sub doCleanup {return shift->{bCleanup}} sub doExpect {return shift->{bExpect}} sub doLogForce {return shift->{bLogForce}} sub logLevelTestFile {return shift->{strLogLevelTestFile}} sub group {return shift->{strGroup}} sub isDryRun {return shift->{bDryRun}} sub expect {return shift->{oExpect}} sub module {return shift->{strModule}} sub moduleTest {return shift->{strModuleTest}} sub pgBinPath {return shift->{strPgBinPath}} sub pgUser {return shift->{strPgUser}} sub pgVersion {return shift->{strPgVersion}} sub runCurrent {return shift->{iRun}} sub stanza {return 'db'} sub testPath {return shift->{strTestPath}} sub vm {return shift->{strVm}} sub vmId {return shift->{iVmId}} 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Common/Storage.pm000066400000000000000000000506371362531507100250260ustar00rootroot00000000000000#################################################################################################################################### # Implements storage functionality using drivers. #################################################################################################################################### package pgBackRestTest::Common::Storage; use parent 'pgBackRest::Storage::Base'; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use File::Basename qw(dirname); use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Storage::Base; #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathBase, $oDriver, $bAllowTemp, $strTempExtension, $strDefaultPathMode, $strDefaultFileMode, $lBufferMax, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'strPathBase'}, {name => 'oDriver'}, {name => 'bAllowTemp', optional => true, default => true}, {name => 'strTempExtension', optional => true, default => 'tmp'}, {name => 'strDefaultPathMode', optional => true, default => '0750'}, {name => 'strDefaultFileMode', optional => true, default => '0640'}, {name => 'lBufferMax', optional => true}, ); # Create class my $self = $class->SUPER::new({lBufferMax => $lBufferMax}); bless $self, $class; $self->{strPathBase} = $strPathBase; $self->{oDriver} = $oDriver; $self->{bAllowTemp} = $bAllowTemp; $self->{strTempExtension} = $strTempExtension; $self->{strDefaultPathMode} = $strDefaultPathMode; $self->{strDefaultFileMode} = $strDefaultFileMode; # Set temp extension in driver $self->driver()->tempExtensionSet($self->{strTempExtension}) if $self->driver()->can('tempExtensionSet'); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # exists - check if file exists #################################################################################################################################### sub exists { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strFileExp, ) = logDebugParam ( __PACKAGE__ . '->exists', \@_, {name => 'strFileExp'}, ); # Check exists my $bExists = $self->driver()->exists($self->pathGet($strFileExp)); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bExists', value => $bExists} ); } #################################################################################################################################### # info - get information for path/file #################################################################################################################################### sub info { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathFileExp, $bIgnoreMissing, ) = logDebugParam ( __PACKAGE__ . '::fileStat', \@_, {name => 'strPathFileExp'}, {name => 'bIgnoreMissing', optional => true, default => false}, ); # Stat the path/file my $oInfo = $self->driver()->info($self->pathGet($strPathFileExp), {bIgnoreMissing => $bIgnoreMissing}); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oInfo', value => $oInfo, trace => true} ); } #################################################################################################################################### # linkCreate - create a link #################################################################################################################################### sub linkCreate { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strSourcePathFileExp, $strDestinationLinkExp, $bHard, $bRelative, $bPathCreate, $bIgnoreExists, ) = logDebugParam ( __PACKAGE__ . '->linkCreate', \@_, {name => 'strSourcePathFileExp'}, {name => 'strDestinationLinkExp'}, {name => 'bHard', optional=> true, default => false}, {name => 'bRelative', optional=> true, default => false}, {name => 'bPathCreate', optional=> true, default => true}, {name => 'bIgnoreExists', optional => true, default => false}, ); # Get source and destination paths my $strSourcePathFile = $self->pathGet($strSourcePathFileExp); my $strDestinationLink = $self->pathGet($strDestinationLinkExp); # Generate relative path if requested if ($bRelative) { # Determine how much of the paths are common my @strySource = split('/', $strSourcePathFile); my @stryDestination = split('/', $strDestinationLink); while (defined($strySource[0]) && defined($stryDestination[0]) && $strySource[0] eq $stryDestination[0]) { shift(@strySource); shift(@stryDestination); } # Add relative path sections $strSourcePathFile = ''; for (my $iIndex = 0; $iIndex < @stryDestination - 1; $iIndex++) { $strSourcePathFile .= '../'; } # Add path to source $strSourcePathFile .= join('/', @strySource); logDebugMisc ( $strOperation, 'apply relative path', {name => 'strSourcePathFile', value => $strSourcePathFile, trace => true} ); } # Create the link $self->driver()->linkCreate( $strSourcePathFile, $strDestinationLink, {bHard => $bHard, bPathCreate => $bPathCreate, bIgnoreExists => $bIgnoreExists}); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # list - list all files/paths in path #################################################################################################################################### sub list { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathExp, $strExpression, $strSortOrder, $bIgnoreMissing, ) = logDebugParam ( __PACKAGE__ . '->list', \@_, {name => 'strPathExp', required => false}, {name => 'strExpression', optional => true}, {name => 'strSortOrder', optional => true, default => 'forward'}, {name => 'bIgnoreMissing', optional => true, default => false}, ); # Get file list my $rstryFileList = $self->driver()->list( $self->pathGet($strPathExp), {strExpression => $strExpression, bIgnoreMissing => $bIgnoreMissing}); # Apply expression if defined if (defined($strExpression)) { @{$rstryFileList} = grep(/$strExpression/i, @{$rstryFileList}); } # Reverse sort if ($strSortOrder eq 'reverse') { @{$rstryFileList} = sort {$b cmp $a} @{$rstryFileList}; } # Normal sort else { @{$rstryFileList} = sort @{$rstryFileList}; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'stryFileList', value => $rstryFileList} ); } #################################################################################################################################### # manifest - build path/file/link manifest starting with base path and including all subpaths #################################################################################################################################### sub manifest { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathExp, $strFilter, ) = logDebugParam ( __PACKAGE__ . '->manifest', \@_, {name => 'strPathExp'}, {name => 'strFilter', optional => true, trace => true}, ); my $hManifest = $self->driver()->manifest($self->pathGet($strPathExp), {strFilter => $strFilter}); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'hManifest', value => $hManifest, trace => true} ); } #################################################################################################################################### # move - move path/file #################################################################################################################################### sub move { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strSourcePathFileExp, $strDestinationPathFileExp, $bPathCreate, ) = logDebugParam ( __PACKAGE__ . '->move', \@_, {name => 'strSourcePathExp'}, {name => 'strDestinationPathExp'}, {name => 'bPathCreate', optional => true, default => false, trace => true}, ); # Set operation variables $self->driver()->move( $self->pathGet($strSourcePathFileExp), $self->pathGet($strDestinationPathFileExp), {bPathCreate => $bPathCreate}); # Return from function and log return values if any return logDebugReturn ( $strOperation ); } #################################################################################################################################### # openRead - open file for reading #################################################################################################################################### sub openRead { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $xFileExp, $bIgnoreMissing, ) = logDebugParam ( __PACKAGE__ . '->openRead', \@_, {name => 'xFileExp'}, {name => 'bIgnoreMissing', optional => true, default => false}, ); # Open the file my $oFileIo = $self->driver()->openRead($self->pathGet($xFileExp), {bIgnoreMissing => $bIgnoreMissing}); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oFileIo', value => $oFileIo, trace => true}, ); } #################################################################################################################################### # openWrite - open file for writing #################################################################################################################################### sub openWrite { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $xFileExp, $strMode, $strUser, $strGroup, $lTimestamp, $bAtomic, $bPathCreate, ) = logDebugParam ( __PACKAGE__ . '->openWrite', \@_, {name => 'xFileExp'}, {name => 'strMode', optional => true, default => $self->{strDefaultFileMode}}, {name => 'strUser', optional => true}, {name => 'strGroup', optional => true}, {name => 'lTimestamp', optional => true}, {name => 'bAtomic', optional => true, default => false}, {name => 'bPathCreate', optional => true, default => false}, ); # Open the file my $oFileIo = $self->driver()->openWrite($self->pathGet($xFileExp), {strMode => $strMode, strUser => $strUser, strGroup => $strGroup, lTimestamp => $lTimestamp, bPathCreate => $bPathCreate, bAtomic => $bAtomic}); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oFileIo', value => $oFileIo, trace => true}, ); } #################################################################################################################################### # owner - change ownership of path/file #################################################################################################################################### sub owner { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathFileExp, $strUser, $strGroup ) = logDebugParam ( __PACKAGE__ . '->owner', \@_, {name => 'strPathFileExp'}, {name => 'strUser', required => false}, {name => 'strGroup', required => false} ); # Set ownership $self->driver()->owner($self->pathGet($strPathFileExp), {strUser => $strUser, strGroup => $strGroup}); # Return from function and log return values if any return logDebugReturn ( $strOperation ); } #################################################################################################################################### # pathCreate - create path #################################################################################################################################### sub pathCreate { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathExp, $strMode, $bIgnoreExists, $bCreateParent, ) = logDebugParam ( __PACKAGE__ . '->pathCreate', \@_, {name => 'strPathExp'}, {name => 'strMode', optional => true, default => $self->{strDefaultPathMode}}, {name => 'bIgnoreExists', optional => true, default => false}, {name => 'bCreateParent', optional => true, default => false}, ); # Create path $self->driver()->pathCreate( $self->pathGet($strPathExp), {strMode => $strMode, bIgnoreExists => $bIgnoreExists, bCreateParent => $bCreateParent}); # Return from function and log return values if any return logDebugReturn ( $strOperation ); } #################################################################################################################################### # pathExists - check if path exists #################################################################################################################################### sub pathExists { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathExp, ) = logDebugParam ( __PACKAGE__ . '->pathExists', \@_, {name => 'strPathExp'}, ); # Check exists my $bExists = $self->driver()->pathExists($self->pathGet($strPathExp)); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bExists', value => $bExists} ); } #################################################################################################################################### # pathGet - resolve a path expression into an absolute path #################################################################################################################################### sub pathGet { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathExp, # File that that needs to be translated to a path $bTemp, # Return the temp file name ) = logDebugParam ( __PACKAGE__ . '->pathGet', \@_, {name => 'strPathExp', required => false, trace => true}, {name => 'bTemp', optional => true, default => false, trace => true}, ); # Path and file to be returned my $strPath; my $strFile; # Is this an absolute path type? my $bAbsolute = false; if (defined($strPathExp) && index($strPathExp, qw(/)) == 0) { $bAbsolute = true; $strPath = $strPathExp; } # Else it must be relative else { $strPath = $self->pathBase(); $strFile = $strPathExp; } # Make sure a temp file is valid for this type and file if ($bTemp) { # Error when temp files are not allowed if (!$self->{bAllowTemp}) { confess &log(ASSERT, "temp file not supported for storage '" . $self->pathBase() . "'"); } # The file must be defined if (!$bAbsolute) { if (!defined($strFile)) { confess &log(ASSERT, 'file part must be defined when temp file specified'); } } } # Combine path and file $strPath .= defined($strFile) ? ($strPath =~ /\/$/ ? '' : qw{/}) . "${strFile}" : ''; # Add temp extension $strPath .= $bTemp ? ".$self->{strTempExtension}" : ''; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strPath', value => $strPath, trace => true} ); } #################################################################################################################################### # Sync path so newly added file entries are not lost #################################################################################################################################### sub pathSync { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathExp, ) = logDebugParam ( __PACKAGE__ . '->pathSync', \@_, {name => 'strPathExp'}, ); $self->driver()->pathSync($self->pathGet($strPathExp)); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # remove - remove path/file #################################################################################################################################### sub remove { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $xstryPathFileExp, $bIgnoreMissing, $bRecurse, ) = logDebugParam ( __PACKAGE__ . '->remove', \@_, {name => 'xstryPathFileExp'}, {name => 'bIgnoreMissing', optional => true, default => true}, {name => 'bRecurse', optional => true, default => false, trace => true}, ); # Evaluate expressions for all files my @stryPathFileExp; if (ref($xstryPathFileExp)) { foreach my $strPathFileExp (@{$xstryPathFileExp}) { push(@stryPathFileExp, $self->pathGet($strPathFileExp)); } } # Remove path(s)/file(s) my $bRemoved = $self->driver()->remove( ref($xstryPathFileExp) ? \@stryPathFileExp : $self->pathGet($xstryPathFileExp), {bIgnoreMissing => $bIgnoreMissing, bRecurse => $bRecurse}); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bRemoved', value => $bRemoved} ); } #################################################################################################################################### # Getters #################################################################################################################################### sub pathBase {shift->{strPathBase}} sub driver {shift->{oDriver}} sub cipherType {undef} sub cipherPassUser {undef} 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Common/StoragePosix.pm000066400000000000000000000747001362531507100260460ustar00rootroot00000000000000#################################################################################################################################### # Posix Storage # # Implements storage functions for Posix-compliant file systems. #################################################################################################################################### package pgBackRestTest::Common::StoragePosix; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(basename dirname); use Fcntl qw(:mode); use File::stat qw{lstat}; use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::Storage::Base; use pgBackRestTest::Common::StoragePosixRead; use pgBackRestTest::Common::StoragePosixWrite; #################################################################################################################################### # Package name constant #################################################################################################################################### use constant STORAGE_POSIX_DRIVER => __PACKAGE__; push @EXPORT, qw(STORAGE_POSIX_DRIVER); #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Create the class hash my $self = {}; bless $self, $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{bFileSync}, $self->{bPathSync}, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'bFileSync', optional => true, default => true}, {name => 'bPathSync', optional => true, default => true}, ); # Set default temp extension $self->{strTempExtension} = 'tmp'; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self, trace => true} ); } #################################################################################################################################### # exists - check if a path or file exists #################################################################################################################################### sub exists { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strFile, ) = logDebugParam ( __PACKAGE__ . '->exists', \@_, {name => 'strFile', trace => true}, ); # Does the path/file exist? my $bExists = true; my $oStat = lstat($strFile); # Use stat to test if file exists if (defined($oStat)) { # Check that it is actually a file $bExists = !S_ISDIR($oStat->mode) ? true : false; } else { # If the error is not entry missing, then throw error if (!$OS_ERROR{ENOENT}) { logErrorResult(ERROR_FILE_EXISTS, "unable to test if file '${strFile}' exists", $OS_ERROR); } $bExists = false; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bExists', value => $bExists, trace => true} ); } #################################################################################################################################### # info - get information for path/file #################################################################################################################################### sub info { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPathFile, $bIgnoreMissing, ) = logDebugParam ( __PACKAGE__ . '->info', \@_, {name => 'strFile', trace => true}, {name => 'bIgnoreMissing', optional => true, default => false, trace => true}, ); # Stat the path/file my $oInfo = lstat($strPathFile); # Check for errors if (!defined($oInfo)) { if (!($OS_ERROR{ENOENT} && $bIgnoreMissing)) { logErrorResult($OS_ERROR{ENOENT} ? ERROR_FILE_MISSING : ERROR_FILE_OPEN, "unable to stat '${strPathFile}'", $OS_ERROR); } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oInfo', value => $oInfo, trace => true} ); } #################################################################################################################################### # linkCreate #################################################################################################################################### sub linkCreate { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strSourcePathFile, $strDestinationLink, $bHard, $bPathCreate, $bIgnoreExists, ) = logDebugParam ( __PACKAGE__ . '->linkCreate', \@_, {name => 'strSourcePathFile', trace => true}, {name => 'strDestinationLink', trace => true}, {name => 'bHard', optional=> true, default => false, trace => true}, {name => 'bPathCreate', optional=> true, default => true, trace => true}, {name => 'bIgnoreExists', optional => true, default => false, trace => true}, ); if (!($bHard ? link($strSourcePathFile, $strDestinationLink) : symlink($strSourcePathFile, $strDestinationLink))) { my $strMessage = "unable to create link '${strDestinationLink}'"; # If parent path or source is missing if ($OS_ERROR{ENOENT}) { # Check if source is missing if (!$self->exists($strSourcePathFile)) { confess &log(ERROR, "${strMessage} because source '${strSourcePathFile}' does not exist", ERROR_FILE_MISSING); } if (!$bPathCreate) { confess &log(ERROR, "${strMessage} because parent does not exist", ERROR_PATH_MISSING); } # Create parent path $self->pathCreate(dirname($strDestinationLink), {bIgnoreExists => true, bCreateParent => true}); # Create link $self->linkCreate($strSourcePathFile, $strDestinationLink, {bHard => $bHard}); } # Else if link already exists elsif ($OS_ERROR{EEXIST}) { if (!$bIgnoreExists) { confess &log(ERROR, "${strMessage} because it already exists", ERROR_PATH_EXISTS); } } else { logErrorResult(ERROR_PATH_CREATE, ${strMessage}, $OS_ERROR); } } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # linkDestination - get destination of symlink #################################################################################################################################### sub linkDestination { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strLink, ) = logDebugParam ( __PACKAGE__ . '->linkDestination', \@_, {name => 'strLink', trace => true}, ); # Get link destination my $strLinkDestination = readlink($strLink); # Check for errors if (!defined($strLinkDestination)) { logErrorResult( $OS_ERROR{ENOENT} ? ERROR_FILE_MISSING : ERROR_FILE_OPEN, "unable to get destination for link ${strLink}", $OS_ERROR); } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strLinkDestination', value => $strLinkDestination, trace => true} ); } #################################################################################################################################### # list - list all files/paths in path #################################################################################################################################### sub list { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPath, $bIgnoreMissing, ) = logDebugParam ( __PACKAGE__ . '->list', \@_, {name => 'strPath', trace => true}, {name => 'bIgnoreMissing', optional => true, default => false, trace => true}, ); # Working variables my @stryFileList; my $hPath; # Attempt to open the path if (opendir($hPath, $strPath)) { @stryFileList = grep(!/^(\.|\.\.)$/m, readdir($hPath)); close($hPath); } # Else process errors else { # Ignore the error if the file is missing and missing files should be ignored if (!($OS_ERROR{ENOENT} && $bIgnoreMissing)) { logErrorResult($OS_ERROR{ENOENT} ? ERROR_FILE_MISSING : ERROR_FILE_OPEN, "unable to read path '${strPath}'", $OS_ERROR); } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'stryFileList', value => \@stryFileList, ref => true, trace => true} ); } #################################################################################################################################### # manifest - build path/file/link manifest starting with base path and including all subpaths #################################################################################################################################### sub manifest { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPath, $bIgnoreMissing, $strFilter, ) = logDebugParam ( __PACKAGE__ . '->manifest', \@_, {name => 'strPath', trace => true}, {name => 'bIgnoreMissing', optional => true, default => false, trace => true}, {name => 'strFilter', optional => true, trace => true}, ); # Generate the manifest my $hManifest = {}; $self->manifestRecurse($strPath, undef, 0, $hManifest, $bIgnoreMissing, $strFilter); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'hManifest', value => $hManifest, trace => true} ); } sub manifestRecurse { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPath, $strSubPath, $iDepth, $hManifest, $bIgnoreMissing, $strFilter, ) = logDebugParam ( __PACKAGE__ . '::manifestRecurse', \@_, {name => 'strPath', trace => true}, {name => 'strSubPath', required => false, trace => true}, {name => 'iDepth', default => 0, trace => true}, {name => 'hManifest', required => false, trace => true}, {name => 'bIgnoreMissing', required => false, default => false, trace => true}, {name => 'strFilter', required => false, trace => true}, ); # Set operation and debug strings my $strPathRead = $strPath . (defined($strSubPath) ? "/${strSubPath}" : ''); my $hPath; # If this is the top level stat the path to discover if it is actually a file my $oPathInfo = $self->info($strPathRead, {bIgnoreMissing => $bIgnoreMissing}); if (defined($oPathInfo)) { # If the initial path passed is a file then generate the manifest for just that file if ($iDepth == 0 && !S_ISDIR($oPathInfo->mode())) { $hManifest->{basename($strPathRead)} = $self->manifestStat($strPathRead); } # Else read as a normal directory else { # Get a list of all files in the path (including .) my @stryFileList = @{$self->list($strPathRead, {bIgnoreMissing => $iDepth != 0})}; unshift(@stryFileList, '.'); my $hFileStat = $self->manifestList($strPathRead, \@stryFileList, $strFilter); # Loop through all subpaths/files in the path foreach my $strFile (keys(%{$hFileStat})) { my $strManifestFile = $iDepth == 0 ? $strFile : ($strSubPath . ($strFile eq qw(.) ? '' : "/${strFile}")); $hManifest->{$strManifestFile} = $hFileStat->{$strFile}; # Recurse into directories if ($hManifest->{$strManifestFile}{type} eq 'd' && $strFile ne qw(.)) { $self->manifestRecurse($strPath, $strManifestFile, $iDepth + 1, $hManifest); } } } } # Return from function and log return values if any return logDebugReturn($strOperation); } sub manifestList { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPath, $stryFile, $strFilter, ) = logDebugParam ( __PACKAGE__ . '->manifestList', \@_, {name => 'strPath', trace => true}, {name => 'stryFile', trace => true}, {name => 'strFilter', required => false, trace => true}, ); my $hFileStat = {}; foreach my $strFile (@{$stryFile}) { if ($strFile ne '.' && defined($strFilter) && $strFilter ne $strFile) { next; } $hFileStat->{$strFile} = $self->manifestStat("${strPath}" . ($strFile eq qw(.) ? '' : "/${strFile}")); if (!defined($hFileStat->{$strFile})) { delete($hFileStat->{$strFile}); } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'hFileStat', value => $hFileStat, trace => true} ); } sub manifestStat { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strFile, ) = logDebugParam ( __PACKAGE__ . '->manifestStat', \@_, {name => 'strFile', trace => true}, ); # Stat the path/file, ignoring any that are missing my $oStat = $self->info($strFile, {bIgnoreMissing => true}); # Generate file data if stat succeeded (i.e. file exists) my $hFile; if (defined($oStat)) { # Check for regular file if (S_ISREG($oStat->mode)) { $hFile->{type} = 'f'; # Get size $hFile->{size} = $oStat->size; # Get modification time $hFile->{modification_time} = $oStat->mtime; } # Check for directory elsif (S_ISDIR($oStat->mode)) { $hFile->{type} = 'd'; } # Check for link elsif (S_ISLNK($oStat->mode)) { $hFile->{type} = 'l'; $hFile->{link_destination} = $self->linkDestination($strFile); } # Not a recognized type else { confess &log(ERROR, "${strFile} is not of type directory, file, or link", ERROR_FILE_INVALID); } # Get user name $hFile->{user} = getpwuid($oStat->uid); # Get group name $hFile->{group} = getgrgid($oStat->gid); # Get mode if ($hFile->{type} ne 'l') { $hFile->{mode} = sprintf('%04o', S_IMODE($oStat->mode)); } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'hFile', value => $hFile, trace => true} ); } #################################################################################################################################### # move - move path/file #################################################################################################################################### sub move { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strSourceFile, $strDestinationFile, $bPathCreate, ) = logDebugParam ( __PACKAGE__ . '->move', \@_, {name => 'strSourceFile', trace => true}, {name => 'strDestinationFile', trace => true}, {name => 'bPathCreate', default => false, trace => true}, ); # Get source and destination paths my $strSourcePathFile = dirname($strSourceFile); my $strDestinationPathFile = dirname($strDestinationFile); # Move the file if (!rename($strSourceFile, $strDestinationFile)) { my $strMessage = "unable to move '${strSourceFile}'"; # If something is missing determine if it is the source or destination if ($OS_ERROR{ENOENT}) { if (!$self->exists($strSourceFile)) { logErrorResult(ERROR_FILE_MISSING, "${strMessage} because it is missing"); } if ($bPathCreate) { # Attempt to create the path - ignore exists here in case another process creates it first $self->pathCreate($strDestinationPathFile, {bCreateParent => true, bIgnoreExists => true}); # Try move again $self->move($strSourceFile, $strDestinationFile); } else { logErrorResult(ERROR_PATH_MISSING, "${strMessage} to missing path '${strDestinationPathFile}'"); } } # Else raise the error else { logErrorResult(ERROR_FILE_MOVE, "${strMessage} to '${strDestinationFile}'", $OS_ERROR); } } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # openRead - open file for reading #################################################################################################################################### sub openRead { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strFile, $bIgnoreMissing, ) = logDebugParam ( __PACKAGE__ . '->openRead', \@_, {name => 'strFile', trace => true}, {name => 'bIgnoreMissing', optional => true, default => false, trace => true}, ); my $oFileIO = new pgBackRestTest::Common::StoragePosixRead($self, $strFile, {bIgnoreMissing => $bIgnoreMissing}); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oFileIO', value => $oFileIO, trace => true}, ); } #################################################################################################################################### # openWrite - open file for writing #################################################################################################################################### sub openWrite { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strFile, $strMode, $strUser, $strGroup, $lTimestamp, $bPathCreate, $bAtomic, ) = logDebugParam ( __PACKAGE__ . '->openWrite', \@_, {name => 'strFile', trace => true}, {name => 'strMode', optional => true, trace => true}, {name => 'strUser', optional => true, trace => true}, {name => 'strGroup', optional => true, trace => true}, {name => 'lTimestamp', optional => true, trace => true}, {name => 'bPathCreate', optional => true, trace => true}, {name => 'bAtomic', optional => true, trace => true}, ); my $oFileIO = new pgBackRestTest::Common::StoragePosixWrite( $self, $strFile, {strMode => $strMode, strUser => $strUser, strGroup => $strGroup, lTimestamp => $lTimestamp, bPathCreate => $bPathCreate, bAtomic => $bAtomic, bSync => $self->{bFileSync}}); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oFileIO', value => $oFileIO, trace => true}, ); } #################################################################################################################################### # owner - change ownership of path/file #################################################################################################################################### sub owner { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strFilePath, $strUser, $strGroup, ) = logDebugParam ( __PACKAGE__ . '->owner', \@_, {name => 'strFilePath', trace => true}, {name => 'strUser', optional => true, trace => true}, {name => 'strGroup', optional => true, trace => true}, ); # Only proceed if user or group was specified if (defined($strUser) || defined($strGroup)) { my $strMessage = "unable to set ownership for '${strFilePath}'"; my $iUserId; my $iGroupId; # If the user or group is not defined then get it by stat'ing the file. This is because the chown function requires that # both user and group be set. my $oStat = $self->info($strFilePath); if (!defined($strUser)) { $iUserId = $oStat->uid; } if (!defined($strGroup)) { $iGroupId = $oStat->gid; } # Lookup user if specified if (defined($strUser)) { $iUserId = getpwnam($strUser); if (!defined($iUserId)) { logErrorResult(ERROR_FILE_OWNER, "${strMessage} because user '${strUser}' does not exist"); } } # Lookup group if specified if (defined($strGroup)) { $iGroupId = getgrnam($strGroup); if (!defined($iGroupId)) { logErrorResult(ERROR_FILE_OWNER, "${strMessage} because group '${strGroup}' does not exist"); } } # Set ownership on the file if the user or group would be changed if ($iUserId != $oStat->uid || $iGroupId != $oStat->gid) { if (!chown($iUserId, $iGroupId, $strFilePath)) { logErrorResult(ERROR_FILE_OWNER, "${strMessage}", $OS_ERROR); } } } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # pathCreate - create path #################################################################################################################################### sub pathCreate { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPath, $strMode, $bIgnoreExists, $bCreateParent, ) = logDebugParam ( __PACKAGE__ . '->pathCreate', \@_, {name => 'strPath', trace => true}, {name => 'strMode', optional => true, default => '0750', trace => true}, {name => 'bIgnoreExists', optional => true, default => false, trace => true}, {name => 'bCreateParent', optional => true, default => false, trace => true}, ); # Attempt to create the directory if (!mkdir($strPath, oct($strMode))) { my $strMessage = "unable to create path '${strPath}'"; # If parent path is missing if ($OS_ERROR{ENOENT}) { if (!$bCreateParent) { confess &log(ERROR, "${strMessage} because parent does not exist", ERROR_PATH_MISSING); } # Create parent path $self->pathCreate(dirname($strPath), {strMode => $strMode, bIgnoreExists => true, bCreateParent => $bCreateParent}); # Create path $self->pathCreate($strPath, {strMode => $strMode, bIgnoreExists => true}); } # Else if path already exists elsif ($OS_ERROR{EEXIST}) { if (!$bIgnoreExists) { confess &log(ERROR, "${strMessage} because it already exists", ERROR_PATH_EXISTS); } } else { logErrorResult(ERROR_PATH_CREATE, ${strMessage}, $OS_ERROR); } } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # pathExists - check if path exists #################################################################################################################################### sub pathExists { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPath, ) = logDebugParam ( __PACKAGE__ . '->pathExists', \@_, {name => 'strPath', trace => true}, ); # Does the path/file exist? my $bExists = true; my $oStat = lstat($strPath); # Use stat to test if path exists if (defined($oStat)) { # Check that it is actually a path $bExists = S_ISDIR($oStat->mode) ? true : false; } else { # If the error is not entry missing, then throw error if (!$OS_ERROR{ENOENT}) { logErrorResult(ERROR_FILE_EXISTS, "unable to test if path '${strPath}' exists", $OS_ERROR); } $bExists = false; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bExists', value => $bExists, trace => true} ); } #################################################################################################################################### # pathSync - perform fsync on path #################################################################################################################################### sub pathSync { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPath, ) = logDebugParam ( __PACKAGE__ . '->pathSync', \@_, {name => 'strPath', trace => true}, ); open(my $hPath, "<", $strPath) or confess &log(ERROR, "unable to open '${strPath}' for sync", ERROR_PATH_OPEN); open(my $hPathDup, ">&", $hPath) or confess &log(ERROR, "unable to duplicate '${strPath}' handle for sync", ERROR_PATH_OPEN); $hPathDup->sync() or confess &log(ERROR, "unable to sync path '${strPath}'", ERROR_PATH_SYNC); close($hPathDup); close($hPath); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # remove - remove path/file #################################################################################################################################### sub remove { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $xstryPathFile, $bIgnoreMissing, $bRecurse, ) = logDebugParam ( __PACKAGE__ . '->remove', \@_, {name => 'xstryPathFile', trace => true}, {name => 'bIgnoreMissing', optional => true, default => false, trace => true}, {name => 'bRecurse', optional => true, default => false, trace => true}, ); # Working variables my $bRemoved = true; # Remove a tree if ($bRecurse) { my $oManifest = $self->manifest($xstryPathFile, {bIgnoreMissing => true}); # Iterate all files in the manifest foreach my $strFile (sort({$b cmp $a} keys(%{$oManifest}))) { # remove directory if ($oManifest->{$strFile}{type} eq 'd') { my $xstryPathFileRemove = $strFile eq '.' ? $xstryPathFile : "${xstryPathFile}/${strFile}"; if (!rmdir($xstryPathFileRemove)) { # Throw error if this is not an ignored missing path if (!($OS_ERROR{ENOENT} && $bIgnoreMissing)) { logErrorResult(ERROR_PATH_REMOVE, "unable to remove path '${strFile}'", $OS_ERROR); } } } # Remove file else { $self->remove("${xstryPathFile}/${strFile}", {bIgnoreMissing => true}); } } } # Only remove the specified file else { foreach my $strFile (ref($xstryPathFile) ? @{$xstryPathFile} : ($xstryPathFile)) { if (unlink($strFile) != 1) { $bRemoved = false; # Throw error if this is not an ignored missing file if (!($OS_ERROR{ENOENT} && $bIgnoreMissing)) { logErrorResult( $OS_ERROR{ENOENT} ? ERROR_FILE_MISSING : ERROR_FILE_OPEN, "unable to remove file '${strFile}'", $OS_ERROR); } } } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'bRemoved', value => $bRemoved, trace => true} ); } #################################################################################################################################### # Getters/Setters #################################################################################################################################### sub className {STORAGE_POSIX_DRIVER} sub tempExtension {shift->{strTempExtension}} sub tempExtensionSet {my $self = shift; $self->{strTempExtension} = shift} 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Common/StoragePosixRead.pm000066400000000000000000000060411362531507100266330ustar00rootroot00000000000000#################################################################################################################################### # Posix File Read #################################################################################################################################### package pgBackRestTest::Common::StoragePosixRead; use parent 'pgBackRest::Common::Io::Handle'; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Fcntl qw(O_RDONLY); use pgBackRest::Common::Exception; use pgBackRest::Common::Log; #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oDriver, $strName, $bIgnoreMissing, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oDriver', trace => true}, {name => 'strName', trace => true}, {name => 'bIgnoreMissing', optional => true, default => false, trace => true}, ); # Open the file my $fhFile; if (!sysopen($fhFile, $strName, O_RDONLY)) { if (!($OS_ERROR{ENOENT} && $bIgnoreMissing)) { logErrorResult($OS_ERROR{ENOENT} ? ERROR_FILE_MISSING : ERROR_FILE_OPEN, "unable to open '${strName}'", $OS_ERROR); } undef($fhFile); } # Create IO object if open succeeded my $self; if (defined($fhFile)) { # Set file mode to binary binmode($fhFile); # Create the class hash $self = $class->SUPER::new("'${strName}'", $fhFile); bless $self, $class; # Set variables $self->{oDriver} = $oDriver; $self->{strName} = $strName; $self->{fhFile} = $fhFile; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self, trace => true} ); } #################################################################################################################################### # close - close the file #################################################################################################################################### sub close { my $self = shift; if (defined($self->handle())) { # Close the file close($self->handle()); undef($self->{fhFile}); # Close parent $self->SUPER::close(); } return true; } #################################################################################################################################### # Getters #################################################################################################################################### sub handle {shift->{fhFile}} sub name {shift->{strName}} 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Common/StoragePosixWrite.pm000066400000000000000000000153701362531507100270570ustar00rootroot00000000000000#################################################################################################################################### # Posix File Write #################################################################################################################################### package pgBackRestTest::Common::StoragePosixWrite; use parent 'pgBackRest::Common::Io::Handle'; use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Fcntl qw(O_RDONLY O_WRONLY O_CREAT O_TRUNC); use File::Basename qw(dirname); use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::Common::Io::Handle; use pgBackRest::Storage::Base; #################################################################################################################################### # CONSTRUCTOR #################################################################################################################################### sub new { my $class = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oDriver, $strName, $strMode, $strUser, $strGroup, $lTimestamp, $bPathCreate, $bAtomic, $bSync, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oDriver', trace => true}, {name => 'strName', trace => true}, {name => 'strMode', optional => true, trace => true}, {name => 'strUser', optional => true, trace => true}, {name => 'strGroup', optional => true, trace => true}, {name => 'lTimestamp', optional => true, trace => true}, {name => 'bPathCreate', optional => true, default => false, trace => true}, {name => 'bAtomic', optional => true, default => false, trace => true}, {name => 'bSync', optional => true, default => true, trace => true}, ); # Create the class hash my $self = $class->SUPER::new("'${strName}'"); bless $self, $class; # Set variables $self->{oDriver} = $oDriver; $self->{strName} = $strName; $self->{strMode} = $strMode; $self->{strUser} = $strUser; $self->{strGroup} = $strGroup; $self->{lTimestamp} = $lTimestamp; $self->{bPathCreate} = $bPathCreate; $self->{bAtomic} = $bAtomic; $self->{bSync} = $bSync; # If atomic create temp filename if ($self->{bAtomic}) { # Create temp file name $self->{strNameTmp} = "$self->{strName}." . $self->{oDriver}->tempExtension(); } # Open file on first write to avoid creating extraneous files on error $self->{bOpened} = false; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self, trace => true} ); } #################################################################################################################################### # open - open the file #################################################################################################################################### sub open { my $self = shift; # Get the file name my $strFile = $self->{bAtomic} ? $self->{strNameTmp} : $self->{strName}; # Open the file if (!sysopen( $self->{fhFile}, $strFile, O_WRONLY | O_CREAT | O_TRUNC, oct(defined($self->{strMode}) ? $self->{strMode} : '0666'))) { # If the path does not exist create it if requested if ($OS_ERROR{ENOENT} && $self->{bPathCreate}) { $self->{oDriver}->pathCreate(dirname($strFile), {bIgnoreExists => true, bCreateParent => true}); $self->{bPathCreate} = false; return $self->open(); } logErrorResult($OS_ERROR{ENOENT} ? ERROR_PATH_MISSING : ERROR_FILE_OPEN, "unable to open '${strFile}'", $OS_ERROR); } # Set file mode to binary binmode($self->{fhFile}); # Set the owner $self->{oDriver}->owner($strFile, {strUser => $self->{strUser}, strGroup => $self->{strGroup}}); # Set handle $self->handleWriteSet($self->{fhFile}); # Mark file as opened $self->{bOpened} = true; return true; } #################################################################################################################################### # write - write data to a file #################################################################################################################################### sub write { my $self = shift; my $rtBuffer = shift; # Open file if it is not open already $self->open() if !$self->opened(); return $self->SUPER::write($rtBuffer); } #################################################################################################################################### # close - close the file #################################################################################################################################### sub close { my $self = shift; if (defined($self->handle())) { # Sync the file if ($self->{bSync}) { $self->handle()->sync(); } # Close the file close($self->handle()); undef($self->{fhFile}); # Get current filename my $strCurrentName = $self->{bAtomic} ? $self->{strNameTmp} : $self->{strName}; # Set the modification time if (defined($self->{lTimestamp})) { utime(time(), $self->{lTimestamp}, $strCurrentName) or logErrorResult(ERROR_FILE_WRITE, "unable to set time for '${strCurrentName}'", $OS_ERROR); } # Move the file from temp to final if atomic if ($self->{bAtomic}) { $self->{oDriver}->move($strCurrentName, $self->{strName}); } # Set result $self->resultSet(COMMON_IO_HANDLE, $self->{lSize}); # Close parent $self->SUPER::close(); } return true; } #################################################################################################################################### # Close the handle if it is open (in case close() was never called) #################################################################################################################################### sub DESTROY { my $self = shift; if (defined($self->handle())) { CORE::close($self->handle()); undef($self->{fhFile}); } } #################################################################################################################################### # Getters #################################################################################################################################### sub handle {shift->{fhFile}} sub opened {shift->{bOpened}} sub name {shift->{strName}} 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Common/VmTest.pm000066400000000000000000000460201362531507100246330ustar00rootroot00000000000000#################################################################################################################################### # VmTest.pm - Vm constants and data #################################################################################################################################### package pgBackRestTest::Common::VmTest; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::DbVersion; #################################################################################################################################### # VM hash keywords #################################################################################################################################### use constant VM_ARCH => 'arch'; push @EXPORT, qw(VM_ARCH); use constant VM_DB => 'db'; push @EXPORT, qw(VM_DB); use constant VM_DB_TEST => 'db-test'; push @EXPORT, qw(VM_DB_TEST); use constant VMDEF_DEBUG_INTEGRATION => 'debug-integration'; push @EXPORT, qw(VMDEF_DEBUG_INTEGRATION); use constant VM_CONTROL_MASTER => 'control-master'; push @EXPORT, qw(VM_CONTROL_MASTER); # Will coverage testing be run for C? use constant VMDEF_COVERAGE_C => 'coverage-c'; use constant VM_DEPRECATED => 'deprecated'; push @EXPORT, qw(VM_DEPRECATED); use constant VM_IMAGE => 'image'; push @EXPORT, qw(VM_IMAGE); use constant VM_OS => 'os'; push @EXPORT, qw(VM_OS); use constant VM_OS_BASE => 'os-base'; push @EXPORT, qw(VM_OS_BASE); use constant VM_OS_REPO => 'os-repo'; push @EXPORT, qw(VM_OS_REPO); use constant VMDEF_PGSQL_BIN => 'pgsql-bin'; push @EXPORT, qw(VMDEF_PGSQL_BIN); use constant VMDEF_LCOV_VERSION => 'lcov-version'; push @EXPORT, qw(VMDEF_LCOV_VERSION); use constant VMDEF_WITH_BACKTRACE => 'with-backtrace'; push @EXPORT, qw(VMDEF_WITH_BACKTRACE); #################################################################################################################################### # Valid OS base List #################################################################################################################################### use constant VM_OS_BASE_DEBIAN => 'debian'; push @EXPORT, qw(VM_OS_BASE_DEBIAN); use constant VM_OS_BASE_RHEL => 'rhel'; push @EXPORT, qw(VM_OS_BASE_RHEL); #################################################################################################################################### # Valid OS list #################################################################################################################################### use constant VM_OS_CENTOS => 'centos'; push @EXPORT, qw(VM_OS_CENTOS); use constant VM_OS_DEBIAN => 'debian'; push @EXPORT, qw(VM_OS_DEBIAN); use constant VM_OS_UBUNTU => 'ubuntu'; push @EXPORT, qw(VM_OS_DEBIAN); #################################################################################################################################### # Valid architecture list #################################################################################################################################### use constant VM_ARCH_I386 => 'i386'; push @EXPORT, qw(VM_ARCH_I386); use constant VM_ARCH_AMD64 => 'amd64'; push @EXPORT, qw(VM_ARCH_AMD64); #################################################################################################################################### # Valid VM list #################################################################################################################################### use constant VM_ALL => 'all'; push @EXPORT, qw(VM_ALL); use constant VM_NONE => 'none'; push @EXPORT, qw(VM_NONE); use constant VM_CO6 => 'co6'; push @EXPORT, qw(VM_CO6); use constant VM_CO7 => 'co7'; push @EXPORT, qw(VM_CO7); use constant VM_F30 => 'f30'; push @EXPORT, qw(VM_F30); use constant VM_U12 => 'u12'; push @EXPORT, qw(VM_U12); use constant VM_U14 => 'u14'; push @EXPORT, qw(VM_U14); use constant VM_U16 => 'u16'; push @EXPORT, qw(VM_U16); use constant VM_U18 => 'u18'; push @EXPORT, qw(VM_U18); use constant VM_U19 => 'u19'; push @EXPORT, qw(VM_U19); use constant VM_D8 => 'd8'; push @EXPORT, qw(VM_D8); use constant VM_D9 => 'd9'; push @EXPORT, qw(VM_D9); # Defines the vm that will be used for expect testing use constant VM_EXPECT => VM_CO7; push @EXPORT, qw(VM_EXPECT); # Defines the host VM (the VM that the containers run in) use constant VM_HOST_DEFAULT => VM_U18; push @EXPORT, qw(VM_HOST_DEFAULT); # VM aliases for run matrices (numbered oldest to newest) use constant VM1 => VM_CO6; push @EXPORT, qw(VM1); use constant VM2 => VM_U12; push @EXPORT, qw(VM2); use constant VM3 => VM_CO7; push @EXPORT, qw(VM3); use constant VM4 => VM_U18; push @EXPORT, qw(VM4); # List of default test VMs use constant VM_LIST => (VM2, VM1, VM3, VM4); push @EXPORT, qw(VM_LIST); my $oyVm = { # None &VM_NONE => { &VM_OS_BASE => VM_OS_BASE_DEBIAN, &VM_OS => VM_OS_UBUNTU, &VM_ARCH => VM_ARCH_AMD64, &VMDEF_COVERAGE_C => true, &VMDEF_PGSQL_BIN => '/usr/lib/postgresql/{[version]}/bin', &VM_DB => [ PG_VERSION_10, ], &VM_DB_TEST => [ PG_VERSION_10, ], }, # CentOS 6 &VM_CO6 => { &VM_OS_BASE => VM_OS_BASE_RHEL, &VM_OS => VM_OS_CENTOS, &VM_IMAGE => 'centos:6', &VM_ARCH => VM_ARCH_AMD64, &VMDEF_PGSQL_BIN => '/usr/pgsql-{[version]}/bin', &VM_DB => [ PG_VERSION_91, PG_VERSION_92, PG_VERSION_94, PG_VERSION_95, PG_VERSION_96, PG_VERSION_10, PG_VERSION_11, PG_VERSION_12, ], &VM_DB_TEST => [ PG_VERSION_91, PG_VERSION_92, PG_VERSION_94, PG_VERSION_95, PG_VERSION_10, ], }, # CentOS 7 &VM_CO7 => { &VM_OS_BASE => VM_OS_BASE_RHEL, &VM_OS => VM_OS_CENTOS, &VM_IMAGE => 'centos:7', &VM_ARCH => VM_ARCH_AMD64, &VMDEF_PGSQL_BIN => '/usr/pgsql-{[version]}/bin', &VMDEF_DEBUG_INTEGRATION => false, &VM_DB => [ PG_VERSION_92, PG_VERSION_94, PG_VERSION_95, PG_VERSION_96, PG_VERSION_10, PG_VERSION_11, PG_VERSION_12, ], &VM_DB_TEST => [ PG_VERSION_96, ], }, # Fedora 30 &VM_F30 => { &VM_OS_BASE => VM_OS_BASE_RHEL, &VM_OS => VM_OS_CENTOS, &VM_IMAGE => 'fedora:30', &VM_ARCH => VM_ARCH_AMD64, &VMDEF_PGSQL_BIN => '/usr/pgsql-{[version]}/bin', &VMDEF_DEBUG_INTEGRATION => false, &VM_DB => [ PG_VERSION_94, PG_VERSION_95, PG_VERSION_96, PG_VERSION_10, PG_VERSION_11, PG_VERSION_12, ], &VM_DB_TEST => [ PG_VERSION_11, ], }, # Debian 8 &VM_D8 => { &VM_OS_BASE => VM_OS_BASE_DEBIAN, &VM_OS => VM_OS_DEBIAN, &VM_OS_REPO => 'jessie', &VM_IMAGE => 'debian:8', &VM_ARCH => VM_ARCH_AMD64, &VMDEF_PGSQL_BIN => '/usr/lib/postgresql/{[version]}/bin', &VM_DB => [ PG_VERSION_84, PG_VERSION_90, PG_VERSION_91, PG_VERSION_92, PG_VERSION_93, PG_VERSION_94, PG_VERSION_95, PG_VERSION_96, PG_VERSION_10, PG_VERSION_11, ], &VM_DB_TEST => [ PG_VERSION_95, ], }, # Debian 9 &VM_D9 => { &VM_OS_BASE => VM_OS_BASE_DEBIAN, &VM_OS => VM_OS_DEBIAN, &VM_OS_REPO => 'stretch', &VM_IMAGE => 'debian:9', &VM_ARCH => VM_ARCH_AMD64, &VMDEF_PGSQL_BIN => '/usr/lib/postgresql/{[version]}/bin', &VM_DB_TEST => [ PG_VERSION_92, PG_VERSION_93, PG_VERSION_94, PG_VERSION_95, PG_VERSION_96, PG_VERSION_10, PG_VERSION_11, PG_VERSION_12, ], &VM_DB_TEST => [ PG_VERSION_96, ], }, # Ubuntu 12.04 &VM_U12 => { &VM_OS_BASE => VM_OS_BASE_DEBIAN, &VM_OS => VM_OS_UBUNTU, &VM_OS_REPO => 'precise', &VM_IMAGE => 'i386/ubuntu:12.04', &VM_ARCH => VM_ARCH_I386, &VMDEF_PGSQL_BIN => '/usr/lib/postgresql/{[version]}/bin', &VM_DB => [ PG_VERSION_83, PG_VERSION_84, PG_VERSION_90, PG_VERSION_91, PG_VERSION_92, PG_VERSION_93, ], &VM_DB_TEST => [ PG_VERSION_83, PG_VERSION_84, PG_VERSION_90, PG_VERSION_93, ], }, # Ubuntu 14.04 &VM_U14 => { &VM_OS_BASE => VM_OS_BASE_DEBIAN, &VM_OS => VM_OS_UBUNTU, &VM_OS_REPO => 'trusty', &VM_IMAGE => 'ubuntu:14.04', &VM_ARCH => VM_ARCH_AMD64, &VMDEF_PGSQL_BIN => '/usr/lib/postgresql/{[version]}/bin', &VM_DB => [ PG_VERSION_84, PG_VERSION_90, PG_VERSION_91, PG_VERSION_92, PG_VERSION_93, PG_VERSION_94, PG_VERSION_95, PG_VERSION_96, PG_VERSION_10, PG_VERSION_11, PG_VERSION_12, ], &VM_DB => [ PG_VERSION_94, ], }, # Ubuntu 16.04 &VM_U16 => { &VM_OS_BASE => VM_OS_BASE_DEBIAN, &VM_OS => VM_OS_UBUNTU, &VM_OS_REPO => 'xenial', &VM_IMAGE => 'ubuntu:16.04', &VM_ARCH => VM_ARCH_AMD64, &VMDEF_PGSQL_BIN => '/usr/lib/postgresql/{[version]}/bin', &VMDEF_WITH_BACKTRACE => true, &VM_DB => [ PG_VERSION_91, PG_VERSION_92, PG_VERSION_93, PG_VERSION_94, PG_VERSION_95, PG_VERSION_96, PG_VERSION_10, PG_VERSION_11, PG_VERSION_12, ], &VM_DB_TEST => [ PG_VERSION_94, PG_VERSION_95, ], }, # Ubuntu 18.04 &VM_U18 => { &VM_OS_BASE => VM_OS_BASE_DEBIAN, &VM_OS => VM_OS_UBUNTU, &VM_OS_REPO => 'bionic', &VM_IMAGE => 'ubuntu:18.04', &VM_ARCH => VM_ARCH_AMD64, &VMDEF_COVERAGE_C => true, &VMDEF_PGSQL_BIN => '/usr/lib/postgresql/{[version]}/bin', &VMDEF_WITH_BACKTRACE => true, &VM_DB => [ PG_VERSION_93, PG_VERSION_94, PG_VERSION_95, PG_VERSION_96, PG_VERSION_10, PG_VERSION_11, PG_VERSION_12, ], &VM_DB_TEST => [ PG_VERSION_11, PG_VERSION_12, ], }, # Ubuntu 19.04 &VM_U19 => { &VM_OS_BASE => VM_OS_BASE_DEBIAN, &VM_OS => VM_OS_UBUNTU, &VM_OS_REPO => 'disco', &VM_IMAGE => 'ubuntu:19.04', &VM_ARCH => VM_ARCH_AMD64, &VMDEF_COVERAGE_C => true, &VMDEF_PGSQL_BIN => '/usr/lib/postgresql/{[version]}/bin', &VMDEF_LCOV_VERSION => '1.14', &VMDEF_WITH_BACKTRACE => true, &VM_DB => [ PG_VERSION_94, PG_VERSION_95, PG_VERSION_96, PG_VERSION_10, PG_VERSION_11, PG_VERSION_12, ], &VM_DB_TEST => [ PG_VERSION_12, ], }, }; #################################################################################################################################### # Set VM_DB_TEST to VM_DB if it is not defined so it doesn't have to be checked everywhere #################################################################################################################################### foreach my $strVm (sort(keys(%{$oyVm}))) { if (!defined($oyVm->{$strVm}{&VM_DB_TEST})) { $oyVm->{$strVm}{&VM_DB_TEST} = $oyVm->{$strVm}{&VM_DB}; } } #################################################################################################################################### # Verify that each version of PostgreSQL is represented in one and only one default VM #################################################################################################################################### foreach my $strPgVersion (versionSupport()) { my $strVmPgVersionRun; my $bVmCoverageC = false; foreach my $strVm (VM_LIST) { if (vmCoverageC($strVm)) { $bVmCoverageC = true; } foreach my $strVmPgVersion (@{$oyVm->{$strVm}{&VM_DB_TEST}}) { if ($strPgVersion eq $strVmPgVersion) { if (defined($strVmPgVersionRun)) { confess &log(ASSERT, "PostgreSQL $strPgVersion is already configured to run on default vm $strVm"); } $strVmPgVersionRun = $strVm; } } } my $strErrorSuffix = 'is not configured to run on a default vm'; if (!$bVmCoverageC) { confess &log(ASSERT, "C coverage ${strErrorSuffix}"); } if (!defined($strVmPgVersionRun)) { confess &log(ASSERT, "PostgreSQL ${strPgVersion} ${strErrorSuffix}"); } } #################################################################################################################################### # vmValid #################################################################################################################################### sub vmValid { my $strVm = shift; if (!defined($oyVm->{$strVm})) { confess &log(ERROR, "no definition for vm '${strVm}'", ERROR_OPTION_INVALID_VALUE); } } push @EXPORT, qw(vmValid); #################################################################################################################################### # Which vm to use for the test matrix. If one of the standard four, then use that, else use VM4. #################################################################################################################################### sub vmTest { my $strVm = shift; if (grep(/^$strVm$/, VM_LIST)) { return $strVm; } return VM4; } push @EXPORT, qw(vmTest); #################################################################################################################################### # vmGet #################################################################################################################################### sub vmGet { return $oyVm; } push @EXPORT, qw(vmGet); #################################################################################################################################### # vmBaseTest #################################################################################################################################### sub vmBaseTest { my $strVm = shift; my $strDistroTest = shift; return $oyVm->{$strVm}{&VM_OS_BASE} eq $strDistroTest ? true : false; } push @EXPORT, qw(vmBaseTest); #################################################################################################################################### # vmCoverageC #################################################################################################################################### sub vmCoverageC { my $strVm = shift; return $oyVm->{$strVm}{&VMDEF_COVERAGE_C} ? true : false; } push @EXPORT, qw(vmCoverageC); #################################################################################################################################### # Get vm architecture bits #################################################################################################################################### sub vmArchBits { my $strVm = shift; return ($oyVm->{$strVm}{&VM_ARCH} eq VM_ARCH_AMD64 ? 64 : 32); } push @EXPORT, qw(vmArchBits); #################################################################################################################################### # Does the VM support libbacktrace? #################################################################################################################################### sub vmWithBackTrace { my $strVm = shift; return ($oyVm->{$strVm}{&VMDEF_WITH_BACKTRACE} ? true : false); } push @EXPORT, qw(vmWithBackTrace); #################################################################################################################################### # Will integration tests be run in debug mode? #################################################################################################################################### sub vmDebugIntegration { my $strVm = shift; return (defined($oyVm->{$strVm}{&VMDEF_DEBUG_INTEGRATION}) ? $oyVm->{$strVm}{&VMDEF_DEBUG_INTEGRATION} : true); } push @EXPORT, qw(vmDebugIntegration); 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Env/000077500000000000000000000000001362531507100223515ustar00rootroot00000000000000pgbackrest-release-2.24/test/lib/pgBackRestTest/Env/ConfigEnvTest.pm000066400000000000000000000135271362531507100254350ustar00rootroot00000000000000#################################################################################################################################### # ConfigCommonTest.pm - Common code for Config unit tests #################################################################################################################################### package pgBackRestTest::Env::ConfigEnvTest; use parent 'pgBackRestTest::Common::RunTest'; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Getopt::Long qw(GetOptions); use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::Config::Config; use pgBackRest::LibC qw(:test); use pgBackRest::Version; use pgBackRestTest::Common::RunTest; use constant CONFIGENVTEST => 'ConfigEnvTest'; #################################################################################################################################### # Is the option secure? #################################################################################################################################### sub optionTestSecure { my $self = shift; my $strOption = shift; return (cfgDefOptionSecure(cfgOptionId($strOption)) ? true : false); } sub optionTestSet { my $self = shift; my $iOptionId = shift; my $strValue = shift; $self->{&CONFIGENVTEST}{option}{cfgOptionName($iOptionId)} = $strValue; } sub optionTestSetBool { my $self = shift; my $iOptionId = shift; my $bValue = shift; $self->{&CONFIGENVTEST}{boolean}{cfgOptionName($iOptionId)} = defined($bValue) ? $bValue : true; } sub optionTestClear { my $self = shift; my $iOptionId = shift; delete($self->{&CONFIGENVTEST}{option}{cfgOptionName($iOptionId)}); delete($self->{&CONFIGENVTEST}{boolean}{cfgOptionName($iOptionId)}); } sub configTestClear { my $self = shift; my $rhConfig = $self->{&CONFIGENVTEST}; delete($self->{&CONFIGENVTEST}); return $rhConfig; } sub configTestSet { my $self = shift; my $rhConfig = shift; $self->{&CONFIGENVTEST} = $rhConfig; } #################################################################################################################################### # Write all secure options to a config file #################################################################################################################################### sub configFileWrite { my $self = shift; my $strConfigFile = shift; my $rhConfig = shift; my $strConfig = "[global]\n"; if (defined($rhConfig->{boolean})) { foreach my $strOption (sort(keys(%{$rhConfig->{boolean}}))) { if ($self->optionTestSecure($strOption)) { $strConfig .= "${strOption}=" . ($rhConfig->{boolean}{$strOption} ? 'y' : 'n') . "\n"; } } } if (defined($rhConfig->{option})) { foreach my $strOption (sort(keys(%{$rhConfig->{option}}))) { if ($self->optionTestSecure($strOption)) { $strConfig .= "${strOption}=$rhConfig->{option}{$strOption}\n"; } } } storageTest()->put($strConfigFile, $strConfig); } #################################################################################################################################### # Write all non-secure options to the command line #################################################################################################################################### sub commandTestWrite { my $self = shift; my $strCommand = shift; my $strConfigFile = shift; my $rhConfig = shift; my @szyParam = (); # Add boolean options if (defined($rhConfig->{boolean})) { foreach my $strOption (sort(keys(%{$rhConfig->{boolean}}))) { if (!$self->optionTestSecure($strOption)) { if ($rhConfig->{boolean}{$strOption}) { push(@szyParam, "--${strOption}"); } else { push(@szyParam, "--no-${strOption}"); } } } } # Add non-boolean options if (defined($rhConfig->{option})) { foreach my $strOption (sort(keys(%{$rhConfig->{option}}))) { if (!$self->optionTestSecure($strOption)) { push(@szyParam, "--${strOption}=$rhConfig->{option}{$strOption}"); } } } # Add config file push(@szyParam, '--' . cfgOptionName(CFGOPT_CONFIG) . "=${strConfigFile}"); # Add command push(@szyParam, $strCommand); return @szyParam; } #################################################################################################################################### # Load the configuration #################################################################################################################################### sub configTestLoad { my $self = shift; my $iCommandId = shift; # A config file is required to store secure options before they can be parsed my $strConfigFile = $self->testPath() . '/pgbackrest.test.conf'; $self->configFileWrite($strConfigFile, $self->{&CONFIGENVTEST}); my @stryArg = $self->commandTestWrite(cfgCommandName($iCommandId), $strConfigFile, $self->{&CONFIGENVTEST}); my $strConfigJson = cfgParseTest(projectBin(), join('|', @stryArg)); $self->testResult( sub {configLoad(false, projectBin(), cfgCommandName($iCommandId), \$strConfigJson)}, true, 'config load: ' . join(" ", @stryArg)); } 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Env/ExpireEnvTest.pm000066400000000000000000000537631362531507100254720ustar00rootroot00000000000000#################################################################################################################################### # ExpireCommonTest.pm - Common code for expire tests #################################################################################################################################### package pgBackRestTest::Env::ExpireEnvTest; use parent 'pgBackRestTest::Env::HostEnvTest'; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use File::Basename qw(basename); use pgBackRest::Archive::Info; use pgBackRest::Backup::Common; use pgBackRest::Backup::Info; use pgBackRest::Common::Ini; use pgBackRest::Common::Log; use pgBackRest::Config::Config; use pgBackRest::Db; use pgBackRest::DbVersion; use pgBackRest::Manifest; use pgBackRest::Protocol::Storage::Helper; use pgBackRest::Storage::Helper; use pgBackRest::Version; use pgBackRestTest::Env::HostEnvTest; use pgBackRestTest::Env::Host::HostBaseTest; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::FileTest; use pgBackRestTest::Common::RunTest; #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Class name # Create the class hash my $self = {}; bless $self, $class; # Assign function parameters, defaults, and log debug info ( my $strOperation, $self->{oHostBackup}, $self->{strBackRestExe}, $self->{oStorageRepo}, $self->{oLogTest}, $self->{oRunTest}, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oHostBackup', required => false, trace => true}, {name => 'strBackRestExe', trace => true}, {name => 'oStorageRepo', trace => true}, {name => 'oLogTest', required => false, trace => true}, {name => 'oRunTest', required => false, trace => true}, ); $self->{strVm} = $self->{oRunTest}->vm(); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self} ); } #################################################################################################################################### # stanzaSet - set the local stanza object #################################################################################################################################### sub stanzaSet { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strStanza, $strDbVersion, $bStanzaUpgrade, ) = logDebugParam ( __PACKAGE__ . '->stanzaSet', \@_, {name => 'strStanza'}, {name => 'strDbVersion'}, {name => 'bStanzaUpgrade'}, ); # Assign variables my $oStanza = {}; my $oArchiveInfo = {}; my $oBackupInfo = {}; my $bEncrypted = defined($self->{oStorageRepo}->cipherType()); my $iArchiveDbId = 1; my $iBackupDbId = 1; # If we're not upgrading, then create the info files if (!$bStanzaUpgrade) { $oArchiveInfo = new pgBackRest::Archive::Info($self->{oStorageRepo}->pathGet(STORAGE_REPO_ARCHIVE), false, {bIgnoreMissing => true, strCipherPassSub => $bEncrypted ? ENCRYPTION_KEY_ARCHIVE : undef}); $oBackupInfo = new pgBackRest::Backup::Info($self->{oStorageRepo}->pathGet(STORAGE_REPO_BACKUP), false, false, {bIgnoreMissing => true, strCipherPassSub => $bEncrypted ? ENCRYPTION_KEY_MANIFEST : undef}); } # Else get the info data from disk else { $oArchiveInfo = new pgBackRest::Archive::Info($self->{oStorageRepo}->pathGet(STORAGE_REPO_ARCHIVE), {strCipherPassSub => $bEncrypted ? ENCRYPTION_KEY_ARCHIVE : undef}); $oBackupInfo = new pgBackRest::Backup::Info($self->{oStorageRepo}->pathGet(STORAGE_REPO_BACKUP), {strCipherPassSub => $bEncrypted ? ENCRYPTION_KEY_MANIFEST : undef}); } my ($oDb) = dbObjectGet(); if (cfgOption(CFGOPT_ONLINE)) { # If the pg-path in pgbackrest.conf does not match the pg_control then this will error alert the user to fix pgbackrest.conf $oDb->configValidate(); } # Get the database info for the stanza (my $strVersion, $$oStanza{iControlVersion}, $$oStanza{iCatalogVersion}, $$oStanza{ullDbSysId}) = $oDb->info(); $$oStanza{strDbVersion} = $strDbVersion; if ($bStanzaUpgrade) { $iArchiveDbId = $oArchiveInfo->dbHistoryIdGet() + 1; $iBackupDbId = $oBackupInfo->dbHistoryIdGet() + 1; } $oArchiveInfo->dbSectionSet($$oStanza{strDbVersion}, $$oStanza{ullDbSysId}, $iArchiveDbId); $oArchiveInfo->save(); $oBackupInfo->dbSectionSet($$oStanza{strDbVersion}, $$oStanza{iControlVersion}, $$oStanza{iCatalogVersion}, $$oStanza{ullDbSysId}, $iBackupDbId); $oBackupInfo->save(); # Get the archive and directory paths for the stanza $$oStanza{strArchiveClusterPath} = $self->{oStorageRepo}->pathGet(STORAGE_REPO_ARCHIVE) . '/' . ($oArchiveInfo->archiveId()); $$oStanza{strBackupClusterPath} = $self->{oStorageRepo}->pathGet(STORAGE_REPO_BACKUP); storageRepo()->pathCreate($$oStanza{strArchiveClusterPath}, {bCreateParent => true}); $self->{oStanzaHash}{$strStanza} = $oStanza; # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # stanzaCreate #################################################################################################################################### sub stanzaCreate { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strStanza, $strDbVersion, ) = logDebugParam ( __PACKAGE__ . '->stanzaCreate', \@_, {name => 'strStanza'}, {name => 'strDbVersion'}, ); my $strDbVersionTemp = $strDbVersion; $strDbVersionTemp =~ s/\.//; my $strDbPath = cfgOption(CFGOPT_PG_PATH); # Create the test path for pg_control storageTest()->pathCreate(($strDbPath . '/' . DB_PATH_GLOBAL), {bIgnoreExists => true}); # Generate pg_control for stanza-create $self->controlGenerate($strDbPath, $strDbVersion); executeTest('chmod 600 ' . $strDbPath . '/' . DB_FILE_PGCONTROL); # Create the stanza repo paths if they don't exist if (!cfgOptionTest(CFGOPT_REPO_TYPE, CFGOPTVAL_REPO_TYPE_S3)) { storageTest()->pathCreate( cfgOption(CFGOPT_REPO_PATH) . "/archive/$strStanza", {bIgnoreExists => true, bCreateParent => true}); storageTest()->pathCreate( cfgOption(CFGOPT_REPO_PATH) . "/backup/$strStanza", {bIgnoreExists => true, bCreateParent => true}); } # Create the stanza and set the local stanza object $self->stanzaSet($strStanza, $strDbVersion, false); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # stanzaUpgrade #################################################################################################################################### sub stanzaUpgrade { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strStanza, $strDbVersion, ) = logDebugParam ( __PACKAGE__ . '->stanzaUpgrade', \@_, {name => 'strStanza'}, {name => 'strDbVersion'}, ); my $strDbVersionTemp = $strDbVersion; $strDbVersionTemp =~ s/\.//; # Remove pg_control storageTest()->remove(cfgOption(CFGOPT_PG_PATH) . '/' . DB_FILE_PGCONTROL); # Copy pg_control for stanza-upgrade $self->controlGenerate(cfgOption(CFGOPT_PG_PATH), $strDbVersion); executeTest('chmod 600 ' . cfgOption(CFGOPT_PG_PATH) . '/' . DB_FILE_PGCONTROL); $self->stanzaSet($strStanza, $strDbVersion, true); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # backupCreate #################################################################################################################################### sub backupCreate { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strStanza, $strType, $lTimestamp, $iArchiveBackupTotal, $iArchiveBetweenTotal ) = logDebugParam ( __PACKAGE__ . '->backupCreate', \@_, {name => 'strStanza'}, {name => 'strType'}, {name => 'lTimestamp'}, {name => 'iArchiveBackupTotal', default => 3}, {name => 'iArchiveBetweenTotal', default => 3} ); my $oStanza = $self->{oStanzaHash}{$strStanza}; my ($strArchiveStart, $strArchiveStop); if ($iArchiveBackupTotal != -1) { ($strArchiveStart, $strArchiveStop) = $self->archiveCreate($strStanza, $iArchiveBackupTotal); } # Create the manifest my $oLastManifest = $strType ne CFGOPTVAL_BACKUP_TYPE_FULL ? $$oStanza{oManifest} : undef; my $strBackupLabel = backupLabelFormat($strType, defined($oLastManifest) ? $oLastManifest->get(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_LABEL) : undef, $lTimestamp); my $strBackupClusterSetPath = "$$oStanza{strBackupClusterPath}/${strBackupLabel}"; storageRepo()->pathCreate($strBackupClusterSetPath); &log(INFO, "create backup ${strBackupLabel}"); # Get passphrase (returns undefined if repo not encrypted) to access the manifest my $strCipherPassManifest = (new pgBackRest::Backup::Info($self->{oStorageRepo}->pathGet(STORAGE_REPO_BACKUP)))->cipherPassSub(); my $strCipherPassBackupSet; # If repo is encrypted then get passphrase for accessing the backup files from the last manifest if it exists provide one if (defined($strCipherPassManifest)) { $strCipherPassBackupSet = (defined($oLastManifest)) ? $oLastManifest->cipherPassSub() : ENCRYPTION_KEY_BACKUPSET; } my $strManifestFile = "$$oStanza{strBackupClusterPath}/${strBackupLabel}/" . FILE_MANIFEST; my $oManifest = new pgBackRest::Manifest($strManifestFile, {bLoad => false, strDbVersion => PG_VERSION_93, iDbCatalogVersion => $self->dbCatalogVersion(PG_VERSION_93), strCipherPass => $strCipherPassManifest, strCipherPassSub => $strCipherPassBackupSet}); # Store information about the backup into the backup section $oManifest->set(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_LABEL, undef, $strBackupLabel); $oManifest->boolSet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_ARCHIVE_CHECK, undef, true); $oManifest->boolSet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_ARCHIVE_COPY, undef, false); $oManifest->boolSet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_BACKUP_STANDBY, undef, false); $oManifest->set(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_ARCHIVE_START, undef, $strArchiveStart); $oManifest->set(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_ARCHIVE_STOP, undef, $strArchiveStop); $oManifest->boolSet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_CHECKSUM_PAGE, undef, true); $oManifest->boolSet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_COMPRESS, undef, true); $oManifest->numericSet(INI_SECTION_BACKREST, INI_KEY_FORMAT, undef, REPOSITORY_FORMAT); $oManifest->boolSet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_HARDLINK, undef, false); $oManifest->boolSet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_ONLINE, undef, true); $oManifest->numericSet(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_TIMESTAMP_START, undef, $lTimestamp); $oManifest->numericSet(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_TIMESTAMP_STOP, undef, $lTimestamp); $oManifest->set(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_TYPE, undef, $strType); $oManifest->set(INI_SECTION_BACKREST, INI_KEY_VERSION, undef, PROJECT_VERSION); if ($strType ne CFGOPTVAL_BACKUP_TYPE_FULL) { if (!defined($oLastManifest)) { confess &log(ERROR, "oLastManifest must be defined when strType = ${strType}"); } push(my @stryReference, $oLastManifest->get(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_LABEL)); $oManifest->set(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_PRIOR, undef, $stryReference[0]); } $oManifest->save(); $$oStanza{oManifest} = $oManifest; # Add the backup to info my $oBackupInfo = new pgBackRest::Backup::Info($$oStanza{strBackupClusterPath}, false); $oBackupInfo->check($$oStanza{strDbVersion}, $$oStanza{iControlVersion}, $$oStanza{iCatalogVersion}, $$oStanza{ullDbSysId}); $oBackupInfo->add($oManifest); # Create the backup description string if (defined($$oStanza{strBackupDescription})) { $$oStanza{strBackupDescription} .= "\n"; } $$oStanza{strBackupDescription} .= "* ${strType} backup: label = ${strBackupLabel}" . (defined($oLastManifest) ? ', prior = ' . $oLastManifest->get(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_LABEL) : '') . (defined($strArchiveStart) ? ", start = ${strArchiveStart}, stop = ${strArchiveStop}" : ', not online'); if ($iArchiveBetweenTotal != -1) { $self->archiveCreate($strStanza, $iArchiveBetweenTotal); } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # archiveNext #################################################################################################################################### sub archiveNext { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strArchive, $bSkipFF ) = logDebugParam ( __PACKAGE__ . '->archiveNext', \@_, {name => 'strArchive', trace => true}, {name => 'bSkipFF', trace => true} ); # Break archive log into components my $lTimeline = hex(substr($strArchive, 0, 8)); my $lMajor = hex(substr($strArchive, 8, 8)); my $lMinor = hex(substr($strArchive, 16, 8)); # Increment the minor component (and major when needed) $lMinor += 1; if ($bSkipFF && $lMinor == 255 || !$bSkipFF && $lMinor == 256) { $lMajor += 1; $lMinor = 0; } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strArchiveNext', value => uc(sprintf("%08x%08x%08x", $lTimeline, $lMajor, $lMinor)), trace => true} ); } #################################################################################################################################### # archiveCreate #################################################################################################################################### sub archiveCreate { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strStanza, $iArchiveTotal ) = logDebugParam ( __PACKAGE__ . '->archiveCreate', \@_, {name => 'strStanza'}, {name => 'iArchiveTotal'} ); my $oStanza = $self->{oStanzaHash}{$strStanza}; my $iArchiveIdx = 0; my $bSkipFF = $$oStanza{strDbVersion} <= PG_VERSION_92; my $strArchive = defined($$oStanza{strArchiveLast}) ? $self->archiveNext($$oStanza{strArchiveLast}, $bSkipFF) : '000000010000000000000000'; # Get passphrase (returns undefined if repo not encrypted) to access the archive files my $strCipherPass = (new pgBackRest::Archive::Info($self->{oStorageRepo}->pathGet(STORAGE_REPO_ARCHIVE)))->cipherPassSub(); push(my @stryArchive, $strArchive); do { my $strPath = "$$oStanza{strArchiveClusterPath}/" . substr($strArchive, 0, 16); storageRepo()->pathCreate($strPath, {bIgnoreExists => true}); my $strFile = "${strPath}/${strArchive}-0000000000000000000000000000000000000000" . ($iArchiveIdx % 2 == 0 ? '.gz' : ''); storageRepo()->put($strFile, 'ARCHIVE', {strCipherPass => $strCipherPass}); $iArchiveIdx++; if ($iArchiveIdx < $iArchiveTotal) { $strArchive = $self->archiveNext($strArchive, $bSkipFF); } } while ($iArchiveIdx < $iArchiveTotal); push(@stryArchive, $strArchive); $$oStanza{strArchiveLast} = $strArchive; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'stryArchive', value => \@stryArchive} ); } #################################################################################################################################### # supplementalLog #################################################################################################################################### sub supplementalLog { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strStanza ) = logDebugParam ( __PACKAGE__ . '->supplementalLog', \@_, {name => 'strStanza'} ); my $oStanza = $self->{oStanzaHash}{$strStanza}; if (defined($self->{oLogTest})) { $self->{oLogTest}->supplementalAdd( $self->{oHostBackup}->repoPath() . "/backup/${strStanza}/backup.info", $$oStanza{strBackupDescription}, ${storageRepo->get($self->{oHostBackup}->repoPath() . "/backup/${strStanza}/backup.info")}); # Output backup list $self->{oLogTest}->logAdd( 'ls ' . $self->{oHostBackup}->repoPath() . "/backup/${strStanza} | grep -v \"backup.*\"", undef, join("\n", grep(!/^backup\.info.*$/i, storageRepo()->list("backup/${strStanza}")))); # Output archive manifest my $rhManifest = storageRepo()->manifest(STORAGE_REPO_ARCHIVE); my $strManifest; my $strPrefix = ''; foreach my $strEntry (sort(keys(%{$rhManifest}))) { # Skip files next if $strEntry eq ARCHIVE_INFO_FILE || $strEntry eq ARCHIVE_INFO_FILE . INI_COPY_EXT; if ($rhManifest->{$strEntry}->{type} eq 'd') { $strEntry = storageRepo()->pathGet(STORAGE_REPO_ARCHIVE) . ($strEntry eq '.' ? '' : "/${strEntry}"); # &log(WARN, "DIR $strEntry"); $strManifest .= (defined($strManifest) ? "\n" : '') . "${strEntry}:\n"; $strPrefix = $strEntry; } else { # &log(WARN, "FILE $strEntry"); $strManifest .= basename($strEntry) . "\n"; } } $self->{oLogTest}->logAdd( 'ls -R ' . $self->{oHostBackup}->repoPath() . "/archive/${strStanza} | grep -v \"archive.info\"", undef, $strManifest); } return logDebugReturn($strOperation); } #################################################################################################################################### # process #################################################################################################################################### sub process { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strStanza, $iExpireFull, $iExpireDiff, $strExpireArchiveType, $iExpireArchive, $strDescription ) = logDebugParam ( __PACKAGE__ . '->process', \@_, {name => 'strStanza'}, {name => 'iExpireFull', required => false}, {name => 'iExpireDiff', required => false}, {name => 'strExpireArchiveType'}, {name => 'iExpireArchive', required => false}, {name => 'strDescription'} ); my $oStanza = $self->{oStanzaHash}{$strStanza}; $self->supplementalLog($strStanza); undef($$oStanza{strBackupDescription}); my $strCommand = $self->{strBackRestExe} . ' --' . cfgOptionName(CFGOPT_CONFIG) . '="' . $self->{oHostBackup}->backrestConfig() . '"' . ' --' . cfgOptionName(CFGOPT_STANZA) . '=' . $strStanza . ' --' . cfgOptionName(CFGOPT_LOG_LEVEL_CONSOLE) . '=' . lc(DETAIL); if (defined($iExpireFull)) { $strCommand .= ' --repo1-retention-full=' . $iExpireFull; } if (defined($iExpireDiff)) { $strCommand .= ' --repo1-retention-diff=' . $iExpireDiff; } if (defined($strExpireArchiveType)) { if (defined($iExpireArchive)) { $strCommand .= ' --repo1-retention-archive-type=' . $strExpireArchiveType . ' --repo1-retention-archive=' . $iExpireArchive; } else { $strCommand .= ' --repo1-retention-archive-type=' . $strExpireArchiveType; } } $strCommand .= ' expire'; $self->{oHostBackup}->executeSimple($strCommand, {strComment => $strDescription, oLogTest => $self->{oLogTest}}); $self->supplementalLog($strStanza); # Return from function and log return values if any return logDebugReturn($strOperation); } 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Env/Host/000077500000000000000000000000001362531507100232665ustar00rootroot00000000000000pgbackrest-release-2.24/test/lib/pgBackRestTest/Env/Host/HostBackupTest.pm000066400000000000000000002521711362531507100265370ustar00rootroot00000000000000#################################################################################################################################### # HostBackupTest.pm - Backup host #################################################################################################################################### package pgBackRestTest::Env::Host::HostBackupTest; use parent 'pgBackRestTest::Env::Host::HostBaseTest'; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use Fcntl ':mode'; use File::Basename qw(dirname); use File::stat qw{lstat}; use Storable qw(dclone); use pgBackRest::Archive::Info; use pgBackRest::Backup::Common; use pgBackRest::Backup::Info; use pgBackRest::Common::Exception; use pgBackRest::Common::Ini; use pgBackRest::Common::Log; use pgBackRest::Config::Config; use pgBackRest::DbVersion; use pgBackRest::Manifest; use pgBackRest::Protocol::Storage::Helper; use pgBackRest::Version; use pgBackRest::Storage::Base; use pgBackRestTest::Env::Host::HostBaseTest; use pgBackRestTest::Env::Host::HostS3Test; use pgBackRestTest::Common::ContainerTest; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::HostGroupTest; use pgBackRestTest::Common::RunTest; #################################################################################################################################### # Host defaults #################################################################################################################################### use constant HOST_PATH_LOCK => 'lock'; push @EXPORT, qw(HOST_PATH_LOCK); use constant HOST_PATH_LOG => 'log'; push @EXPORT, qw(HOST_PATH_LOG); use constant HOST_PATH_REPO => 'repo'; use constant HOST_PROTOCOL_TIMEOUT => 10; push @EXPORT, qw(HOST_PROTOCOL_TIMEOUT); #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Class name # Assign function parameters, defaults, and log debug info my ( $strOperation, $oParam, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oParam', required => false, trace => true}, ); # If params are not passed my $oHostGroup = hostGroupGet(); my ($strName, $strImage, $strUser); if (!defined($$oParam{strName}) || $$oParam{strName} eq HOST_BACKUP) { $strName = HOST_BACKUP; $strImage = containerRepo() . ':' . testRunGet()->vm() . '-test'; } else { $strName = $$oParam{strName}; $strImage = $$oParam{strImage}; } $strUser = testRunGet()->pgUser(); # Create the host my $self = $class->SUPER::new($strName, {strImage => $strImage, strUser => $strUser}); bless $self, $class; # If repo is on local filesystem then set the repo-path locally if ($oParam->{bRepoLocal}) { $self->{strRepoPath} = $self->testRunGet()->testPath() . "/$$oParam{strBackupDestination}/" . HOST_PATH_REPO; } # Else on KV store and repo will be in root else { $self->{strRepoPath} = '/'; } # Create the repo-path if on a local filesystem if ($$oParam{strBackupDestination} eq $self->nameGet() && $oParam->{bRepoLocal}) { storageTest()->pathCreate($self->repoPath(), {strMode => '0770'}); } # Set log/lock paths $self->{strLogPath} = $self->testPath() . '/' . HOST_PATH_LOG; storageTest()->pathCreate($self->{strLogPath}, {strMode => '0770'}); $self->{strLockPath} = $self->testPath() . '/' . HOST_PATH_LOCK; # Set conf file $self->{strBackRestConfig} = $self->testPath() . '/' . PROJECT_CONF; # Set LogTest object $self->{oLogTest} = $$oParam{oLogTest}; # Set synthetic $self->{bSynthetic} = defined($$oParam{bSynthetic}) && $$oParam{bSynthetic} ? true : false; # Set the backup destination $self->{strBackupDestination} = $$oParam{strBackupDestination}; # Default hardlink to false $self->{bHardLink} = false; # By default there is no bogus host $self->{bBogusHost} = false; # Create a placeholder hash for file munging $self->{hInfoFile} = {}; # Set whether repo should be encrypted or not $self->{bRepoEncrypt} = defined($$oParam{bRepoEncrypt}) ? $$oParam{bRepoEncrypt} : false; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self, trace => true} ); } #################################################################################################################################### # backupBegin #################################################################################################################################### sub backupBegin { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strType, $strComment, $oParam, ) = logDebugParam ( __PACKAGE__ . '->backupBegin', \@_, {name => 'strType', trace => true}, {name => 'strComment', trace => true}, {name => 'oParam', required => false, trace => true}, ); # Set defaults my $oExpectedManifest = defined($$oParam{oExpectedManifest}) ? $$oParam{oExpectedManifest} : undef; $strComment = "${strType} backup" . (defined($strComment) ? " - ${strComment}" : '') . ' (' . $self->nameGet() . ' host)'; &log(INFO, " $strComment"); # Execute the backup command my $oExecuteBackup = $self->execute( $self->backrestExe() . ' --config=' . $self->backrestConfig() . (defined($oExpectedManifest) ? " --no-online" : '') . (defined($$oParam{strOptionalParam}) ? " $$oParam{strOptionalParam}" : '') . (defined($$oParam{bStandby}) && $$oParam{bStandby} ? " --backup-standby" : '') . (defined($oParam->{strRepoType}) ? " --repo1-type=$oParam->{strRepoType}" : '') . ($strType ne 'incr' ? " --type=${strType}" : '') . ' --stanza=' . (defined($oParam->{strStanza}) ? $oParam->{strStanza} : $self->stanza()) . ' backup', {strComment => $strComment, iExpectedExitStatus => $$oParam{iExpectedExitStatus}, oLogTest => $self->{oLogTest}, bLogOutput => $self->synthetic()}); $oExecuteBackup->begin(); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'oExecuteBackup', value => $oExecuteBackup, trace => true}, ); } #################################################################################################################################### # backupEnd #################################################################################################################################### sub backupEnd { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strType, $oExecuteBackup, $oParam, $bManifestCompare, ) = logDebugParam ( __PACKAGE__ . '->backupEnd', \@_, {name => 'strType', trace => true}, {name => 'oExecuteBackup', trace => true}, {name => 'oParam', required => false, trace => true}, {name => 'bManifestCompare', required => false, default => true, trace => true}, ); # Set defaults my $oExpectedManifest = defined($$oParam{oExpectedManifest}) ? dclone($$oParam{oExpectedManifest}) : undef; my $iExitStatus = $oExecuteBackup->end(); return if ($oExecuteBackup->{iExpectedExitStatus} != 0); # If an alternate stanza was specified if (defined($oParam->{strStanza})) { confess &log(ASSERT, 'if an alternate stanza is specified it must generate an error - the remaining code will not be aware of the stanza'); } my $strBackup = $self->backupLast(); # If a real backup then load the expected manifest from the actual manifest. An expected manifest can't be generated perfectly # because a running database is always in flux. Even so, it allows us test many things. if (!$self->synthetic()) { $oExpectedManifest = iniParse( ${storageRepo()->get( storageRepo()->openRead( 'backup/' . $self->stanza() . "/${strBackup}/" . FILE_MANIFEST, {strCipherPass => $self->cipherPassManifest()}))}); } # Make sure tablespace links are correct if ($self->hasLink()) { if ($strType eq CFGOPTVAL_BACKUP_TYPE_FULL || $self->hardLink()) { my $hTablespaceManifest = storageRepo()->manifest( STORAGE_REPO_BACKUP . "/${strBackup}/" . MANIFEST_TARGET_PGDATA . '/' . DB_PATH_PGTBLSPC); # Remove . and .. delete($hTablespaceManifest->{'.'}); delete($hTablespaceManifest->{'..'}); # Iterate file links for my $strFile (sort(keys(%{$hTablespaceManifest}))) { # Make sure the link is in the expected manifest my $hManifestTarget = $oExpectedManifest->{&MANIFEST_SECTION_BACKUP_TARGET}{&MANIFEST_TARGET_PGTBLSPC . "/${strFile}"}; if (!defined($hManifestTarget) || $hManifestTarget->{&MANIFEST_SUBKEY_TYPE} ne MANIFEST_VALUE_LINK || $hManifestTarget->{&MANIFEST_SUBKEY_TABLESPACE_ID} ne $strFile) { confess &log(ERROR, "'${strFile}' is not in expected manifest as a link with the correct tablespace id"); } # Make sure the link really is a link if ($hTablespaceManifest->{$strFile}{type} ne 'l') { confess &log(ERROR, "'${strFile}' in tablespace directory is not a link"); } # Make sure the link destination is correct my $strLinkDestination = '../../' . MANIFEST_TARGET_PGTBLSPC . "/${strFile}"; if ($hTablespaceManifest->{$strFile}{link_destination} ne $strLinkDestination) { confess &log(ERROR, "'${strFile}' link should reference '${strLinkDestination}' but actually references " . "'$hTablespaceManifest->{$strFile}{link_destination}'"); } } # Iterate manifest targets for my $strTarget (sort(keys(%{$oExpectedManifest->{&MANIFEST_SECTION_BACKUP_TARGET}}))) { my $hManifestTarget = $oExpectedManifest->{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}; my $strTablespaceId = $hManifestTarget->{&MANIFEST_SUBKEY_TABLESPACE_ID}; # Make sure the target exists as a link on disk if ($hManifestTarget->{&MANIFEST_SUBKEY_TYPE} eq MANIFEST_VALUE_LINK && defined($strTablespaceId) && !defined($hTablespaceManifest->{$strTablespaceId})) { confess &log(ERROR, "target '${strTarget}' does not have a link at '" . DB_PATH_PGTBLSPC. "/${strTablespaceId}'"); } } } # Else there should not be a tablespace directory at all elsif (storageRepo()->pathExists(STORAGE_REPO_BACKUP . "/${strBackup}/" . MANIFEST_TARGET_PGDATA . '/' . DB_PATH_PGTBLSPC)) { confess &log(ERROR, 'backup must be full or hard-linked to have ' . DB_PATH_PGTBLSPC . ' directory'); } } # Check that latest link exists unless repo links are disabled my $strLatestLink = storageRepo()->pathGet(STORAGE_REPO_BACKUP . qw{/} . LINK_LATEST); my $bLatestLinkExists = storageRepo()->exists($strLatestLink); if ((!defined($oParam->{strRepoType}) || $oParam->{strRepoType} eq CFGOPTVAL_REPO_TYPE_POSIX) && $self->hasLink()) { my $strLatestLinkDestination = readlink($strLatestLink); if ($strLatestLinkDestination ne $strBackup) { confess &log(ERROR, "'" . LINK_LATEST . "' link should be '${strBackup}' but is '${strLatestLinkDestination}"); } } elsif ($bLatestLinkExists) { confess &log(ERROR, "'" . LINK_LATEST . "' link should not exist"); } # Only do compare for synthetic backups since for real backups the expected manifest *is* the actual manifest. if ($self->synthetic()) { # Compare only if expected to do so if ($bManifestCompare) { # Set backup type in the expected manifest ${$oExpectedManifest}{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_TYPE} = $strType; $self->backupCompare($strBackup, $oExpectedManifest); } } # Add files to expect log if (defined($self->{oLogTest}) && (!defined($$oParam{bSupplemental}) || $$oParam{bSupplemental})) { my $oHostGroup = hostGroupGet(); if (defined($oHostGroup->hostGet(HOST_DB_MASTER, true))) { $self->{oLogTest}->supplementalAdd($oHostGroup->hostGet(HOST_DB_MASTER)->testPath() . '/' . PROJECT_CONF); } if (defined($oHostGroup->hostGet(HOST_DB_STANDBY, true))) { $self->{oLogTest}->supplementalAdd($oHostGroup->hostGet(HOST_DB_STANDBY)->testPath() . '/' . PROJECT_CONF); } if (defined($oHostGroup->hostGet(HOST_BACKUP, true))) { $self->{oLogTest}->supplementalAdd($oHostGroup->hostGet(HOST_BACKUP)->testPath() . '/' . PROJECT_CONF); } if ($self->synthetic() && $bManifestCompare) { $self->{oLogTest}->supplementalAdd( storageRepo()->pathGet(STORAGE_REPO_BACKUP . "/${strBackup}/" . FILE_MANIFEST), undef, ${storageRepo()->get( storageRepo()->openRead( STORAGE_REPO_BACKUP . "/${strBackup}/" . FILE_MANIFEST, {strCipherPass => $self->cipherPassManifest()}))}); $self->{oLogTest}->supplementalAdd( storageRepo()->pathGet(STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO), undef, ${storageRepo->get(STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO)}); } } # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strBackup', value => $strBackup, trace => true}, ); } #################################################################################################################################### # backup #################################################################################################################################### sub backup { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strType, $strComment, $oParam, $bManifestCompare, ) = logDebugParam ( __PACKAGE__ . '->backup', \@_, {name => 'strType'}, {name => 'strComment'}, {name => 'oParam', required => false}, {name => 'bManifestCompare', required => false, default => true}, ); my $oExecuteBackup = $self->backupBegin($strType, $strComment, $oParam); my $strBackup = $self->backupEnd($strType, $oExecuteBackup, $oParam, $bManifestCompare); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'strBackup', value => $strBackup}, ); } #################################################################################################################################### # backupCompare #################################################################################################################################### sub backupCompare { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strBackup, $oExpectedManifest, ) = logDebugParam ( __PACKAGE__ . '->backupCompare', \@_, {name => 'strBackup', trace => true}, {name => 'oExpectedManifest', trace => true}, ); ${$oExpectedManifest}{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_LABEL} = $strBackup; my $oActualManifest = new pgBackRest::Manifest( storageRepo()->pathGet(STORAGE_REPO_BACKUP . "/${strBackup}/" . FILE_MANIFEST), {strCipherPass => $self->cipherPassManifest()}); ${$oExpectedManifest}{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_TIMESTAMP_START} = $oActualManifest->get(MANIFEST_SECTION_BACKUP, &MANIFEST_KEY_TIMESTAMP_START); ${$oExpectedManifest}{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_TIMESTAMP_STOP} = $oActualManifest->get(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_TIMESTAMP_STOP); ${$oExpectedManifest}{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_TIMESTAMP_COPY_START} = $oActualManifest->get(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_TIMESTAMP_COPY_START); ${$oExpectedManifest}{&INI_SECTION_BACKREST}{&INI_KEY_CHECKSUM} = $oActualManifest->get(INI_SECTION_BACKREST, INI_KEY_CHECKSUM); ${$oExpectedManifest}{&INI_SECTION_BACKREST}{&INI_KEY_FORMAT} = REPOSITORY_FORMAT + 0; if (defined($oExpectedManifest->{&INI_SECTION_CIPHER}) && defined($oExpectedManifest->{&INI_SECTION_CIPHER}{&INI_KEY_CIPHER_PASS}) && $oActualManifest->test(INI_SECTION_CIPHER, INI_KEY_CIPHER_PASS)) { $oExpectedManifest->{&INI_SECTION_CIPHER}{&INI_KEY_CIPHER_PASS} = $oActualManifest->get(INI_SECTION_CIPHER, INI_KEY_CIPHER_PASS); } # Update the expected manifest with whether the --delta option was used or not to perform the backup. $oExpectedManifest->{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_DELTA} = $oActualManifest->boolGet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_DELTA) ? INI_TRUE : INI_FALSE; my $strSectionPath = $oActualManifest->get(MANIFEST_SECTION_BACKUP_TARGET, MANIFEST_TARGET_PGDATA, MANIFEST_SUBKEY_PATH); foreach my $strFileKey ($oActualManifest->keys(MANIFEST_SECTION_TARGET_FILE)) { # Determine repo size if compression or encryption is enabled my $bCompressed = $oExpectedManifest->{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_COMPRESS}; if ($bCompressed || (defined($oExpectedManifest->{&INI_SECTION_CIPHER}) && defined($oExpectedManifest->{&INI_SECTION_CIPHER}{&INI_KEY_CIPHER_PASS}))) { my $lRepoSize = $oActualManifest->test(MANIFEST_SECTION_TARGET_FILE, $strFileKey, MANIFEST_SUBKEY_REFERENCE) ? $oActualManifest->numericGet(MANIFEST_SECTION_TARGET_FILE, $strFileKey, MANIFEST_SUBKEY_REPO_SIZE, false) : (storageRepo()->info(STORAGE_REPO_BACKUP . "/${strBackup}/${strFileKey}" . ($bCompressed ? '.gz' : '')))->{size}; if (defined($lRepoSize) && $lRepoSize != $oExpectedManifest->{&MANIFEST_SECTION_TARGET_FILE}{$strFileKey}{&MANIFEST_SUBKEY_SIZE}) { $oExpectedManifest->{&MANIFEST_SECTION_TARGET_FILE}{$strFileKey}{&MANIFEST_SUBKEY_REPO_SIZE} = $lRepoSize; } } # If the backup does not have page checksums then no need to compare if (!$oExpectedManifest->{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_CHECKSUM_PAGE}) { delete($oExpectedManifest->{&MANIFEST_SECTION_TARGET_FILE}{$strFileKey}{&MANIFEST_SUBKEY_CHECKSUM_PAGE}); delete($oExpectedManifest->{&MANIFEST_SECTION_TARGET_FILE}{$strFileKey}{&MANIFEST_SUBKEY_CHECKSUM_PAGE_ERROR}); } # Else make sure things that should have checks do have checks elsif ($oActualManifest->test(MANIFEST_SECTION_TARGET_FILE, $strFileKey, MANIFEST_SUBKEY_CHECKSUM_PAGE) != isChecksumPage($strFileKey)) { confess "check-page actual for ${strFileKey} is " . ($oActualManifest->test(MANIFEST_SECTION_TARGET_FILE, $strFileKey, MANIFEST_SUBKEY_CHECKSUM_PAGE) ? 'set' : '[undef]') . ' but isChecksumPage() says it should be ' . (isChecksumPage($strFileKey) ? 'set' : 'undef') . '.'; } } $self->manifestDefault($oExpectedManifest); my $strTestPath = $self->testPath(); storageTest()->put("${strTestPath}/actual.manifest", iniRender($oActualManifest->{oContent})); storageTest()->put("${strTestPath}/expected.manifest", iniRender($oExpectedManifest)); executeTest("diff ${strTestPath}/expected.manifest ${strTestPath}/actual.manifest"); storageTest()->remove("${strTestPath}/expected.manifest"); storageTest()->remove("${strTestPath}/actual.manifest"); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # manifestDefault #################################################################################################################################### sub manifestDefault { my $self = shift; my $oExpectedManifest = shift; # Set defaults for subkeys that tend to repeat foreach my $strSection (&MANIFEST_SECTION_TARGET_FILE, &MANIFEST_SECTION_TARGET_PATH, &MANIFEST_SECTION_TARGET_LINK) { foreach my $strSubKey (&MANIFEST_SUBKEY_USER, &MANIFEST_SUBKEY_GROUP, &MANIFEST_SUBKEY_MODE, &MANIFEST_SUBKEY_MASTER) { my %oDefault; my $iSectionTotal = 0; next if !defined($oExpectedManifest->{$strSection}); foreach my $strFile (keys(%{$oExpectedManifest->{$strSection}})) { my $strValue = $oExpectedManifest->{$strSection}{$strFile}{$strSubKey}; if (defined($strValue)) { if (defined($oDefault{$strValue})) { $oDefault{$strValue}++; } else { $oDefault{$strValue} = 1; } } $iSectionTotal++; } my $strMaxValue; my $iMaxValueTotal = 0; foreach my $strValue (sort(keys(%oDefault))) { if ($oDefault{$strValue} > $iMaxValueTotal) { $iMaxValueTotal = $oDefault{$strValue}; $strMaxValue = $strValue; } } if (defined($strMaxValue) > 0 && $iMaxValueTotal > $iSectionTotal * MANIFEST_DEFAULT_MATCH_FACTOR) { if ($strSubKey eq MANIFEST_SUBKEY_MASTER) { $oExpectedManifest->{"${strSection}:default"}{$strSubKey} = $strMaxValue ? JSON::PP::true : JSON::PP::false; } else { $oExpectedManifest->{"${strSection}:default"}{$strSubKey} = $strMaxValue; } foreach my $strFile (keys(%{$oExpectedManifest->{$strSection}})) { if (defined($oExpectedManifest->{$strSection}{$strFile}{$strSubKey}) && $oExpectedManifest->{$strSection}{$strFile}{$strSubKey} eq $strMaxValue) { delete($oExpectedManifest->{$strSection}{$strFile}{$strSubKey}); } } } } } } #################################################################################################################################### # backupLast #################################################################################################################################### sub backupLast { my $self = shift; my @stryBackup = storageRepo()->list( STORAGE_REPO_BACKUP, {strExpression => '[0-9]{8}-[0-9]{6}F(_[0-9]{8}-[0-9]{6}(D|I)){0,1}', strSortOrder => 'reverse'}); if (!defined($stryBackup[0])) { confess 'no backup was found: ' . join(@stryBackup, ', '); } return $stryBackup[0]; } #################################################################################################################################### # check #################################################################################################################################### sub check { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strComment, $oParam, ) = logDebugParam ( __PACKAGE__ . '->check', \@_, {name => 'strComment'}, {name => 'oParam', required => false}, ); $strComment = 'check ' . $self->stanza() . ' - ' . $strComment . ' (' . $self->nameGet() . ' host)'; &log(INFO, " $strComment"); $self->executeSimple( $self->backrestExe() . ' --config=' . $self->backrestConfig() . (defined($$oParam{iTimeout}) ? " --archive-timeout=$$oParam{iTimeout}" : '') . (defined($$oParam{strOptionalParam}) ? " $$oParam{strOptionalParam}" : '') . ' --stanza=' . $self->stanza() . ' check', {strComment => $strComment, iExpectedExitStatus => $$oParam{iExpectedExitStatus}, oLogTest => $self->{oLogTest}, bLogOutput => $self->synthetic()}); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # expire #################################################################################################################################### sub expire { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oParam, ) = logDebugParam ( __PACKAGE__ . '->check', \@_, {name => 'oParam', required => false}, ); my $strComment = 'expire' . (defined($$oParam{iRetentionFull}) ? " full=$$oParam{iRetentionFull}" : '') . (defined($$oParam{iRetentionDiff}) ? " diff=$$oParam{iRetentionDiff}" : '') . ' (' . $self->nameGet() . ' host)'; &log(INFO, " ${strComment}"); # Determine whether or not to expect an error my $oHostGroup = hostGroupGet(); $self->executeSimple( $self->backrestExe() . ' --config=' . $self->backrestConfig() . (defined($$oParam{iRetentionFull}) ? " --repo1-retention-full=$$oParam{iRetentionFull}" : '') . (defined($$oParam{iRetentionDiff}) ? " --repo1-retention-diff=$$oParam{iRetentionDiff}" : '') . ' --stanza=' . $self->stanza() . ' expire', {strComment => $strComment, iExpectedExitStatus => $$oParam{iExpectedExitStatus}, oLogTest => $self->{oLogTest}, bLogOutput => $self->synthetic()}); } #################################################################################################################################### # info #################################################################################################################################### sub info { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strComment, $oParam, ) = logDebugParam ( __PACKAGE__ . '->info', \@_, {name => 'strComment'}, {name => 'oParam', required => false}, ); $strComment = 'info' . (defined($$oParam{strStanza}) ? " $$oParam{strStanza} stanza" : ' all stanzas') . ' - ' . $strComment . ' (' . $self->nameGet() . ' host)'; &log(INFO, " $strComment"); $self->executeSimple( $self->backrestExe() . ' --config=' . $self->backrestConfig() . ' --log-level-console=warn' . (defined($$oParam{strStanza}) ? " --stanza=$$oParam{strStanza}" : '') . (defined($$oParam{strOutput}) ? " --output=$$oParam{strOutput}" : '') . ' info', {strComment => $strComment, oLogTest => $self->{oLogTest}, bLogOutput => $self->synthetic()}); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # stanzaCreate #################################################################################################################################### sub stanzaCreate { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strComment, $oParam, ) = logDebugParam ( __PACKAGE__ . '->stanzaCreate', \@_, {name => 'strComment'}, {name => 'oParam', required => false}, ); $strComment = 'stanza-create ' . $self->stanza() . ' - ' . $strComment . ' (' . $self->nameGet() . ' host)'; &log(INFO, " $strComment"); $self->executeSimple( $self->backrestExe() . ' --config=' . $self->backrestConfig() . ' --stanza=' . $self->stanza() . (defined($$oParam{strOptionalParam}) ? " $$oParam{strOptionalParam}" : '') . ' stanza-create', {strComment => $strComment, iExpectedExitStatus => $$oParam{iExpectedExitStatus}, oLogTest => $self->{oLogTest}, bLogOutput => $self->synthetic()}); if (storageRepo()->exists('backup/' . $self->stanza() . qw{/} . FILE_BACKUP_INFO)) { # If the info file was created, then add it to the expect log if (defined($self->{oLogTest}) && $self->synthetic()) { $self->{oLogTest}->supplementalAdd( storageRepo()->pathGet('backup/' . $self->stanza() . qw{/} . FILE_BACKUP_INFO), undef, ${storageRepo()->get(STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO)}); } # Get the passphrase for accessing the manifest file $self->{strCipherPassManifest} = (new pgBackRest::Backup::Info(storageRepo()->pathGet('backup/' . $self->stanza())))->cipherPassSub(); } if (storageRepo()->exists('archive/' . $self->stanza() . qw{/} . ARCHIVE_INFO_FILE)) { # If the info file was created, then add it to the expect log if (defined($self->{oLogTest}) && $self->synthetic()) { $self->{oLogTest}->supplementalAdd( storageRepo()->pathGet('archive/' . $self->stanza() . qw{/} . ARCHIVE_INFO_FILE), undef, ${storageRepo()->get(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE)}); } # Get the passphrase for accessing the archived files $self->{strCipherPassArchive} = (new pgBackRest::Archive::Info(storageRepo()->pathGet('archive/' . $self->stanza())))->cipherPassSub(); } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # stanzaUpgrade #################################################################################################################################### sub stanzaUpgrade { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strComment, $oParam, ) = logDebugParam ( __PACKAGE__ . '->stanzaUpgrade', \@_, {name => 'strComment'}, {name => 'oParam', required => false}, ); $strComment = 'stanza-upgrade ' . $self->stanza() . ' - ' . $strComment . ' (' . $self->nameGet() . ' host)'; &log(INFO, " $strComment"); $self->executeSimple( $self->backrestExe() . ' --config=' . $self->backrestConfig() . ' --stanza=' . $self->stanza() . (defined($$oParam{strOptionalParam}) ? " $$oParam{strOptionalParam}" : '') . ' stanza-upgrade', {strComment => $strComment, iExpectedExitStatus => $$oParam{iExpectedExitStatus}, oLogTest => $self->{oLogTest}, bLogOutput => $self->synthetic()}); # If the info file was created, then add it to the expect log if (defined($self->{oLogTest}) && $self->synthetic() && storageRepo()->exists('backup/' . $self->stanza() . qw{/} . FILE_BACKUP_INFO)) { $self->{oLogTest}->supplementalAdd( storageRepo()->pathGet('backup/' . $self->stanza() . qw{/} . FILE_BACKUP_INFO), undef, ${storageRepo()->get(STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO)}); } if (defined($self->{oLogTest}) && $self->synthetic() && storageRepo()->exists('archive/' . $self->stanza() . qw{/} . ARCHIVE_INFO_FILE)) { $self->{oLogTest}->supplementalAdd( storageRepo()->pathGet('archive/' . $self->stanza() . qw{/} . ARCHIVE_INFO_FILE), undef, ${storageRepo()->get(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE)}); } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # stanzaDelete #################################################################################################################################### sub stanzaDelete { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strComment, $oParam, ) = logDebugParam ( __PACKAGE__ . '->stanzaDelete', \@_, {name => 'strComment'}, {name => 'oParam', required => false}, ); $strComment = 'stanza-delete ' . $self->stanza() . ' - ' . $strComment . ' (' . $self->nameGet() . ' host)'; &log(INFO, " $strComment"); $self->executeSimple( $self->backrestExe() . ' --config=' . $self->backrestConfig() . ' --stanza=' . $self->stanza() . (defined($$oParam{strOptionalParam}) ? " $$oParam{strOptionalParam}" : '') . ' stanza-delete', {strComment => $strComment, iExpectedExitStatus => $$oParam{iExpectedExitStatus}, oLogTest => $self->{oLogTest}, bLogOutput => $self->synthetic()}); if (defined($self->{oLogTest}) && $self->synthetic()) { $self->{oLogTest}->logAdd( 'list backup', $self->stanza() . ' must not exist for successful delete', join("\n", storageRepo()->list('backup'))); $self->{oLogTest}->logAdd( 'list archive', $self->stanza() . ' must not exist for successful delete', join("\n", storageRepo()->list('archive'))); } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # start #################################################################################################################################### sub start { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oParam, ) = logDebugParam ( __PACKAGE__ . '->start', \@_, {name => 'oParam', required => false}, ); my $strComment = 'start' . (defined($$oParam{strStanza}) ? " $$oParam{strStanza} stanza" : ' all stanzas') . ' (' . $self->nameGet() . ' host)'; &log(INFO, " $strComment"); $self->executeSimple( $self->backrestExe() . ' --config=' . $self->backrestConfig() . (defined($$oParam{strStanza}) ? " --stanza=$$oParam{strStanza}" : '') . ' start', {strComment => $strComment, oLogTest => $self->{oLogTest}, bLogOutput => $self->synthetic()}); } #################################################################################################################################### # stop #################################################################################################################################### sub stop { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oParam, ) = logDebugParam ( __PACKAGE__ . '->stop', \@_, {name => 'oParam', required => false}, ); my $strComment = 'stop' . (defined($$oParam{strStanza}) ? " $$oParam{strStanza} stanza" : ' all stanzas') . ' (' . $self->nameGet() . ' host)'; &log(INFO, " $strComment"); $self->executeSimple( $self->backrestExe() . ' --config=' . $self->backrestConfig() . (defined($$oParam{strStanza}) ? " --stanza=$$oParam{strStanza}" : '') . (defined($$oParam{bForce}) && $$oParam{bForce} ? ' --force' : '') . ' stop', {strComment => $strComment, oLogTest => $self->{oLogTest}, bLogOutput => $self->synthetic()}); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # configCreate #################################################################################################################################### sub configCreate { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $oParam, ) = logDebugParam ( __PACKAGE__ . '->stop', \@_, {name => 'oParam', required => false}, ); my %oParamHash; my $strStanza = $self->stanza(); my $oHostGroup = hostGroupGet(); my $oHostBackup = $oHostGroup->hostGet($self->backupDestination()); my $oHostDbMaster = $oHostGroup->hostGet(HOST_DB_MASTER); my $oHostDbStandby = $oHostGroup->hostGet(HOST_DB_STANDBY, true); my $bArchiveAsync = defined($$oParam{bArchiveAsync}) ? $$oParam{bArchiveAsync} : false; # General options # ------------------------------------------------------------------------------------------------------------------------------ $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_LOG_LEVEL_CONSOLE)} = lc(DETAIL); $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_LOG_LEVEL_FILE)} = testRunGet()->logLevelTestFile(); $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_LOG_LEVEL_STDERR)} = lc(OFF); $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_LOG_SUBPROCESS)} = testRunGet()->logLevelTestFile() eq lc(OFF) ? 'n' : 'y'; $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_LOG_TIMESTAMP)} = 'n'; $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_BUFFER_SIZE)} = '64k'; $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_LOG_PATH)} = $self->logPath(); $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_LOCK_PATH)} = $self->lockPath(); $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_PROTOCOL_TIMEOUT)} = 60; $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_DB_TIMEOUT)} = 45; # Set to make sure that changing the default works and to speed compression for testing $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_COMPRESS_LEVEL)} = 3; # Only set network compress level if there is more than one host if ($oHostBackup != $oHostDbMaster) { $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_COMPRESS_LEVEL_NETWORK)} = 1; } if (defined($$oParam{bCompress}) && !$$oParam{bCompress}) { $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_COMPRESS)} = 'n'; } if ($self->isHostBackup()) { if ($self->repoEncrypt()) { $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_REPO_CIPHER_TYPE)} = CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC; $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_REPO_CIPHER_PASS)} = 'x'; } $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_REPO_PATH)} = $self->repoPath(); # S3 settings if ($oParam->{bS3}) { $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_REPO_TYPE)} = CFGOPTVAL_REPO_TYPE_S3; $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_REPO_S3_KEY)} = HOST_S3_ACCESS_KEY; $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_REPO_S3_KEY_SECRET)} = HOST_S3_ACCESS_SECRET_KEY; $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_REPO_S3_BUCKET)} = HOST_S3_BUCKET; $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_REPO_S3_ENDPOINT)} = HOST_S3_ENDPOINT; $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_REPO_S3_REGION)} = HOST_S3_REGION; $oParamHash{&CFGDEF_SECTION_GLOBAL}{'repo1-s3-verify-ssl'} = 'n'; } if (defined($$oParam{bHardlink}) && $$oParam{bHardlink}) { $self->{bHardLink} = true; $oParamHash{&CFGDEF_SECTION_GLOBAL . ':' . cfgCommandName(CFGCMD_BACKUP)}{cfgOptionName(CFGOPT_REPO_HARDLINK)} = 'y'; } $oParamHash{&CFGDEF_SECTION_GLOBAL . ':' . cfgCommandName(CFGCMD_BACKUP)}{cfgOptionName(CFGOPT_ARCHIVE_COPY)} = 'y'; $oParamHash{&CFGDEF_SECTION_GLOBAL . ':' . cfgCommandName(CFGCMD_BACKUP)}{cfgOptionName(CFGOPT_START_FAST)} = 'y'; } # Host specific options # ------------------------------------------------------------------------------------------------------------------------------ # If this is the backup host if ($self->isHostBackup()) { my $oHostDb1 = $oHostDbMaster; my $oHostDb2 = $oHostDbStandby; if ($self->nameTest(HOST_DB_STANDBY)) { $oHostDb1 = $oHostDbStandby; $oHostDb2 = $oHostDbMaster; } if ($self->nameTest(HOST_BACKUP)) { $oParamHash{$strStanza}{cfgOptionName(CFGOPT_PG_HOST)} = $oHostDb1->nameGet(); $oParamHash{$strStanza}{cfgOptionName(CFGOPT_PG_HOST_USER)} = $oHostDb1->userGet(); $oParamHash{$strStanza}{cfgOptionName(CFGOPT_PG_HOST_CMD)} = $oHostDb1->backrestExe(); $oParamHash{$strStanza}{cfgOptionName(CFGOPT_PG_HOST_CONFIG)} = $oHostDb1->backrestConfig(); # Port can't be configured for a synthetic host if (!$self->synthetic()) { $oParamHash{$strStanza}{cfgOptionName(CFGOPT_PG_PORT)} = $oHostDb1->pgPort(); } } $oParamHash{$strStanza}{cfgOptionName(CFGOPT_PG_PATH)} = $oHostDb1->dbBasePath(); if (defined($oHostDb2)) { # Add an invalid replica to simulate more than one replica. A warning should be thrown by dbObjectGet when a stanza is # created and a valid replica should be chosen. my $iInvalidReplica = 2; $oParamHash{$strStanza}{cfgOptionName(cfgOptionIdFromIndex(CFGOPT_PG_HOST, $iInvalidReplica))} = BOGUS; $oParamHash{$strStanza}{cfgOptionName(cfgOptionIdFromIndex(CFGOPT_PG_HOST_USER, $iInvalidReplica))} = $oHostDb2->userGet(); $oParamHash{$strStanza}{cfgOptionName(cfgOptionIdFromIndex(CFGOPT_PG_HOST_CMD, $iInvalidReplica))} = $oHostDb2->backrestExe(); $oParamHash{$strStanza}{cfgOptionName(cfgOptionIdFromIndex(CFGOPT_PG_HOST_CONFIG, $iInvalidReplica))} = $oHostDb2->backrestConfig(); $oParamHash{$strStanza}{cfgOptionName(cfgOptionIdFromIndex(CFGOPT_PG_PATH, $iInvalidReplica))} = $oHostDb2->dbBasePath(); # Set a flag so we know there's a bogus host $self->{bBogusHost} = true; # Set a valid replica to the last possible index to ensure skipping indexes does not make a difference. my $iValidReplica = cfgOptionIndexTotal(CFGOPT_PG_PATH); $oParamHash{$strStanza}{cfgOptionName(cfgOptionIdFromIndex(CFGOPT_PG_HOST, $iValidReplica))} = $oHostDb2->nameGet(); $oParamHash{$strStanza}{cfgOptionName(cfgOptionIdFromIndex(CFGOPT_PG_HOST_USER, $iValidReplica))} = $oHostDb2->userGet(); $oParamHash{$strStanza}{cfgOptionName(cfgOptionIdFromIndex(CFGOPT_PG_HOST_CMD, $iValidReplica))} = $oHostDb2->backrestExe(); $oParamHash{$strStanza}{cfgOptionName(cfgOptionIdFromIndex(CFGOPT_PG_HOST_CONFIG, $iValidReplica))} = $oHostDb2->backrestConfig(); $oParamHash{$strStanza}{cfgOptionName(cfgOptionIdFromIndex(CFGOPT_PG_PATH, $iValidReplica))} = $oHostDb2->dbBasePath(); # Only test explicit ports on the backup server. This is so locally configured ports are also tested. if (!$self->synthetic() && $self->nameTest(HOST_BACKUP)) { $oParamHash{$strStanza}{cfgOptionName(cfgOptionIdFromIndex(CFGOPT_PG_PORT, $iValidReplica))} = $oHostDb2->pgPort(); } } } # If this is a database host if ($self->isHostDb()) { $oParamHash{$strStanza}{cfgOptionName(CFGOPT_PG_PATH)} = $self->dbBasePath(); if (!$self->synthetic()) { $oParamHash{$strStanza}{cfgOptionName(CFGOPT_PG_SOCKET_PATH)} = $self->pgSocketPath(); $oParamHash{$strStanza}{cfgOptionName(CFGOPT_PG_PORT)} = $self->pgPort(); } if ($bArchiveAsync) { $oParamHash{&CFGDEF_SECTION_GLOBAL . ':' . cfgCommandName(CFGCMD_ARCHIVE_PUSH)}{cfgOptionName(CFGOPT_ARCHIVE_ASYNC)} = 'y'; } $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_SPOOL_PATH)} = $self->spoolPath(); # If the the backup host is remote if (!$self->isHostBackup()) { $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_REPO_HOST)} = $oHostBackup->nameGet(); $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_REPO_HOST_USER)} = $oHostBackup->userGet(); $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_REPO_HOST_CMD)} = $oHostBackup->backrestExe(); $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_REPO_HOST_CONFIG)} = $oHostBackup->backrestConfig(); $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_LOG_PATH)} = $self->logPath(); $oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_LOCK_PATH)} = $self->lockPath(); } } # Write out the configuration file storageTest()->put($self->backrestConfig(), iniRender(\%oParamHash, true)); } #################################################################################################################################### # configUpdate - update configuration with new options #################################################################################################################################### sub configUpdate { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $hParam, ) = logDebugParam ( __PACKAGE__ . '->configUpdate', \@_, {name => 'hParam'}, ); # Load db config file my $oConfig = iniParse(${storageTest()->get($self->backrestConfig())}, {bRelaxed => true}); # Load params foreach my $strSection (keys(%{$hParam})) { foreach my $strKey (keys(%{$hParam->{$strSection}})) { $oConfig->{$strSection}{$strKey} = $hParam->{$strSection}{$strKey}; } } storageTest()->put($self->backrestConfig(), iniRender($oConfig, true)); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # manifestMunge # # Allows for munging of the manifest while making it appear to be valid. This is used to create various error conditions that # should be caught by the unit tests. #################################################################################################################################### sub manifestMunge { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strBackup, $hParam, $bCache, ) = logDebugParam ( __PACKAGE__ . '->manifestMunge', \@_, {name => 'strBackup'}, {name => '$hParam'}, {name => 'bCache', default => true}, ); $self->infoMunge(storageRepo()->pathGet(STORAGE_REPO_BACKUP . "/${strBackup}/" . FILE_MANIFEST), $hParam, $bCache, true); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # manifestRestore #################################################################################################################################### sub manifestRestore { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strBackup, $bSave, ) = logDebugParam ( __PACKAGE__ . '->manifestRestore', \@_, {name => 'strBackup'}, {name => 'bSave', default => true}, ); $self->infoRestore(storageRepo()->pathGet(STORAGE_REPO_BACKUP . "/${strBackup}/" . FILE_MANIFEST), $bSave); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # infoMunge # # With the file name specified (e.g. /repo/archive/db/archive.info) copy the current values from the file into the global hash and # update the file with the new values passed. Later, using infoRestore, the global variable will be used to restore the file to its # original state. #################################################################################################################################### sub infoMunge { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strFileName, $hParam, $bCache, $bManifest, ) = logDebugParam ( __PACKAGE__ . '->infoMunge', \@_, {name => 'strFileName'}, {name => 'hParam'}, {name => 'bCache', default => true}, {name => 'bManifest', default => false}, ); # If the original file content does not exist then load it if (!defined($self->{hInfoFile}{$strFileName})) { $self->{hInfoFile}{$strFileName} = new pgBackRest::Common::Ini($strFileName, {oStorage => storageRepo(), strCipherPass => !$bManifest ? storageRepo()->cipherPassUser() : $self->cipherPassManifest()}); } # Make a copy of the original file contents my $oMungeIni = new pgBackRest::Common::Ini( $strFileName, {bLoad => false, strContent => iniRender($self->{hInfoFile}{$strFileName}->{oContent}), oStorage => storageRepo(), strCipherPass => !$bManifest ? storageRepo()->cipherPassUser() : $self->cipherPassManifest()}); # Load params foreach my $strSection (keys(%{$hParam})) { foreach my $strKey (keys(%{$hParam->{$strSection}})) { if (ref($hParam->{$strSection}{$strKey}) eq 'HASH') { foreach my $strSubKey (keys(%{$hParam->{$strSection}{$strKey}})) { # Munge the copy with the new parameter values if (defined($hParam->{$strSection}{$strKey}{$strSubKey})) { $oMungeIni->set($strSection, $strKey, $strSubKey, $hParam->{$strSection}{$strKey}{$strSubKey}); } else { $oMungeIni->remove($strSection, $strKey, $strSubKey); } } } else { # Munge the copy with the new parameter values if (defined($hParam->{$strSection}{$strKey})) { $oMungeIni->set($strSection, $strKey, undef, $hParam->{$strSection}{$strKey}); } else { $oMungeIni->remove($strSection, $strKey); } } } } # Save the munged data to the file $oMungeIni->save(); # Clear the cache is requested if (!$bCache) { delete($self->{hInfoFile}{$strFileName}); } # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # infoRestore # # With the file name specified (e.g. /repo/archive/db/archive.info) use the original file contents in the global hash to restore the # file to its original state after modifying the values with infoMunge. #################################################################################################################################### sub infoRestore { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strFileName, $bSave, ) = logDebugParam ( __PACKAGE__ . '->infoRestore', \@_, {name => 'strFileName'}, {name => 'bSave', default => true}, ); # If the original file content exists in the global hash, then save it to the file if (defined($self->{hInfoFile}{$strFileName})) { if ($bSave) { # Save the munged data to the file $self->{hInfoFile}{$strFileName}->{bModified} = true; $self->{hInfoFile}{$strFileName}->save(); } } else { confess &log(ASSERT, "There is no original data cached for $strFileName. infoMunge must be called first."); } # Remove the element from the hash delete($self->{hInfoFile}{$strFileName}); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # configRecovery #################################################################################################################################### sub configRecovery { my $self = shift; my $oHostBackup = shift; my $oRecoveryHashRef = shift; # Get stanza my $strStanza = $self->stanza(); # Load db config file my $oConfig = iniParse(${storageTest->get($self->backrestConfig())}, {bRelaxed => true}); # Rewrite recovery options my @stryRecoveryOption; foreach my $strOption (sort(keys(%$oRecoveryHashRef))) { push (@stryRecoveryOption, "${strOption}=${$oRecoveryHashRef}{$strOption}"); } if (@stryRecoveryOption) { $oConfig->{$strStanza}{cfgOptionName(CFGOPT_RECOVERY_OPTION)} = \@stryRecoveryOption; } # Save db config file storageTest()->put($self->backrestConfig(), iniRender($oConfig, true)); } #################################################################################################################################### # configRemap #################################################################################################################################### sub configRemap { my $self = shift; my $oRemapHashRef = shift; my $oManifestRef = shift; # Get stanza name my $strStanza = $self->stanza(); # Load db config file my $oConfig = iniParse(${storageTest()->get($self->backrestConfig())}, {bRelaxed => true}); # Load backup config file my $oRemoteConfig; my $oHostBackup = !$self->standby() && !$self->nameTest($self->backupDestination()) ? hostGroupGet()->hostGet($self->backupDestination()) : undef; if (defined($oHostBackup)) { $oRemoteConfig = iniParse(${storageTest()->get($oHostBackup->backrestConfig())}, {bRelaxed => true}); } # Rewrite recovery section delete($oConfig->{"${strStanza}:restore"}{cfgOptionName(CFGOPT_TABLESPACE_MAP)}); my @stryTablespaceMap; foreach my $strRemap (sort(keys(%$oRemapHashRef))) { my $strRemapPath = ${$oRemapHashRef}{$strRemap}; if ($strRemap eq MANIFEST_TARGET_PGDATA) { $oConfig->{$strStanza}{cfgOptionName(CFGOPT_PG_PATH)} = $strRemapPath; ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{&MANIFEST_TARGET_PGDATA}{&MANIFEST_SUBKEY_PATH} = $strRemapPath; if (defined($oHostBackup)) { $oRemoteConfig->{$strStanza}{cfgOptionName(CFGOPT_PG_PATH)} = $strRemapPath; } } else { my $strTablespaceOid = (split('\/', $strRemap))[1]; push (@stryTablespaceMap, "${strTablespaceOid}=${strRemapPath}"); ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strRemap}{&MANIFEST_SUBKEY_PATH} = $strRemapPath; ${$oManifestRef}{&MANIFEST_SECTION_TARGET_LINK}{MANIFEST_TARGET_PGDATA . "/${strRemap}"}{destination} = $strRemapPath; } } if (@stryTablespaceMap) { $oConfig->{"${strStanza}:restore"}{cfgOptionName(CFGOPT_TABLESPACE_MAP)} = \@stryTablespaceMap; } # Save db config file storageTest()->put($self->backrestConfig(), iniRender($oConfig, true)); # Save backup config file (but not if this is the standby which is not the source of backups) if (defined($oHostBackup)) { storageTest()->put($oHostBackup->backrestConfig(), iniRender($oRemoteConfig, true)); } } #################################################################################################################################### # restore #################################################################################################################################### sub restore { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strComment, $strBackup, $rhExpectedManifest, $rhRemapHash, $bDelta, $bForce, $strType, $strTarget, $bTargetExclusive, $strTargetAction, $strTargetTimeline, $rhRecoveryHash, $iExpectedExitStatus, $strOptionalParam, $bTablespace, $strUser, $strBackupExpected, ) = logDebugParam ( __PACKAGE__ . '->restore', \@_, {name => 'strComment', required => false}, {name => 'strBackup'}, {name => 'rhExpectedManifest', optional => true}, {name => 'rhRemapHash', optional => true}, {name => 'bDelta', optional => true, default => false}, {name => 'bForce', optional => true, default => false}, {name => 'strType', optional => true}, {name => 'strTarget', optional => true}, {name => 'bTargetExclusive', optional => true, default => false}, {name => 'strTargetAction', optional => true}, {name => 'strTargetTimeline', optional => true}, {name => 'rhRecoveryHash', optional => true}, {name => 'iExpectedExitStatus', optional => true}, {name => 'strOptionalParam', optional => true}, {name => 'bTablespace', optional => true}, {name => 'strUser', optional => true}, {name => 'strBackupExpected', optional => true}, ); # Build link map options my $strLinkMap; foreach my $strTarget (sort(keys(%{$self->{hLinkRemap}}))) { $strLinkMap .= " --link-map=\"${strTarget}=${$self->{hLinkRemap}}{$strTarget}\""; } $strComment = 'restore' . ($bDelta ? ' delta' : '') . ($bForce ? ', force' : '') . ($strBackup ne cfgDefOptionDefault(CFGCMD_RESTORE, CFGOPT_SET) ? ", backup '${strBackup}'" : '') . # This does not output 'default' for synthetic tests to make expect logs match up (may change later) ($strType ? ", type '${strType}'" : (defined($rhExpectedManifest) ? '' : ", type 'default'")) . ($strTarget ? ", target '${strTarget}'" : '') . ($strTargetTimeline ? ", timeline '${strTargetTimeline}'" : '') . ($bTargetExclusive ? ', exclusive' : '') . (defined($strTargetAction) && $strTargetAction ne cfgDefOptionDefault(CFGCMD_RESTORE, CFGOPT_TARGET_ACTION) ? ', ' . cfgOptionName(CFGOPT_TARGET_ACTION) . "=${strTargetAction}" : '') . (defined($rhRemapHash) ? ', remap' : '') . (defined($iExpectedExitStatus) ? ", expect exit ${iExpectedExitStatus}" : '') . (defined($strComment) ? " - ${strComment}" : '') . ' (' . $self->nameGet() . ' host)'; &log(INFO, " ${strComment}"); # Get the backup host my $oHostGroup = hostGroupGet(); my $oHostBackup = defined($oHostGroup->hostGet(HOST_BACKUP, true)) ? $oHostGroup->hostGet(HOST_BACKUP) : $self; # Load the expected manifest if it was not defined my $oExpectedManifest = undef; if (!defined($rhExpectedManifest)) { if (!defined($strBackupExpected)) { $strBackupExpected = $strBackup eq 'latest' ? $oHostBackup->backupLast() : $strBackup; } # Load the manifest my $oExpectedManifest = new pgBackRest::Manifest( storageRepo()->pathGet( STORAGE_REPO_BACKUP . qw{/} . $strBackupExpected. qw{/} . FILE_MANIFEST), {strCipherPass => $oHostBackup->cipherPassManifest()}); $rhExpectedManifest = $oExpectedManifest->{oContent}; # Remap links in the expected manifest foreach my $strTarget (sort(keys(%{$self->{hLinkRemap}}))) { my $strDestination = ${$self->{hLinkRemap}}{$strTarget}; my $strTarget = 'pg_data/' . $strTarget; my $strTargetPath = $strDestination; # If this link is to a file then the specified path must be split into file and path parts if ($oExpectedManifest->isTargetFile($strTarget)) { $strTargetPath = dirname($strTargetPath); # Error when the path is not deep enough to be valid if (!defined($strTargetPath)) { confess &log(ERROR, "${strDestination} is not long enough to be target for ${strTarget}"); } # Set the file part $oExpectedManifest->set( MANIFEST_SECTION_BACKUP_TARGET, $strTarget, MANIFEST_SUBKEY_FILE, substr($strDestination, length($strTargetPath) + 1)); # Set the link target $oExpectedManifest->set( MANIFEST_SECTION_TARGET_LINK, $strTarget, MANIFEST_SUBKEY_DESTINATION, $strDestination); } else { # Set the link target $oExpectedManifest->set(MANIFEST_SECTION_TARGET_LINK, $strTarget, MANIFEST_SUBKEY_DESTINATION, $strTargetPath); } # Set the target path $oExpectedManifest->set(MANIFEST_SECTION_BACKUP_TARGET, $strTarget, MANIFEST_SUBKEY_PATH, $strTargetPath); } } # Get the backup host if (defined($rhRemapHash)) { $self->configRemap($rhRemapHash, $rhExpectedManifest); } if (defined($rhRecoveryHash)) { $self->configRecovery($oHostBackup, $rhRecoveryHash); } # Create the restore command $self->executeSimple( $self->backrestExe() . ' --config=' . $self->backrestConfig() . ($bDelta ? ' --delta' : '') . ($bForce ? ' --force' : '') . ($strBackup ne cfgDefOptionDefault(CFGCMD_RESTORE, CFGOPT_SET) ? " --set=${strBackup}" : '') . (defined($strOptionalParam) ? " ${strOptionalParam} " : '') . (defined($strType) && $strType ne CFGOPTVAL_RESTORE_TYPE_DEFAULT ? " --type=${strType}" : '') . (defined($strTarget) ? " --target=\"${strTarget}\"" : '') . (defined($strTargetTimeline) ? " --target-timeline=\"${strTargetTimeline}\"" : '') . ($bTargetExclusive ? ' --target-exclusive' : '') . (defined($strLinkMap) ? $strLinkMap : '') . ($self->synthetic() ? '' : ' --link-all') . (defined($strTargetAction) && $strTargetAction ne cfgDefOptionDefault(CFGCMD_RESTORE, CFGOPT_TARGET_ACTION) ? ' --' . cfgOptionName(CFGOPT_TARGET_ACTION) . "=${strTargetAction}" : '') . ' --stanza=' . $self->stanza() . ' restore', {strComment => $strComment, iExpectedExitStatus => $iExpectedExitStatus, oLogTest => $self->{oLogTest}, bLogOutput => $self->synthetic()}, $strUser); if (!defined($iExpectedExitStatus)) { $self->restoreCompare($strBackup, dclone($rhExpectedManifest), $bTablespace); if (defined($self->{oLogTest})) { $self->{oLogTest}->supplementalAdd( $rhExpectedManifest->{&MANIFEST_SECTION_BACKUP_TARGET}{&MANIFEST_TARGET_PGDATA}{&MANIFEST_SUBKEY_PATH} . "/recovery.conf"); } } } #################################################################################################################################### # restoreCompare #################################################################################################################################### sub restoreCompare { my $self = shift; my $strBackup = shift; my $oExpectedManifestRef = shift; my $bTablespace = shift; my $strTestPath = $self->testPath(); # Get the backup host my $oHostGroup = hostGroupGet(); my $oHostBackup = defined($oHostGroup->hostGet(HOST_BACKUP, true)) ? $oHostGroup->hostGet(HOST_BACKUP) : $self; # Load the last manifest if it exists my $oLastManifest = undef; if (defined(${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_PRIOR})) { my $oExpectedManifest = new pgBackRest::Manifest( storageRepo()->pathGet( STORAGE_REPO_BACKUP . qw{/} . ($strBackup eq 'latest' ? $oHostBackup->backupLast() : $strBackup) . '/'. FILE_MANIFEST), {strCipherPass => $oHostBackup->cipherPassManifest()}); # Get the --delta option from the backup manifest so the actual manifest can be built the same way for comparison $$oExpectedManifestRef{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_DELTA} = $oExpectedManifest->get(MANIFEST_SECTION_BACKUP_OPTION, &MANIFEST_KEY_DELTA); $oLastManifest = new pgBackRest::Manifest( storageRepo()->pathGet( STORAGE_REPO_BACKUP . qw{/} . ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_PRIOR} . qw{/} . FILE_MANIFEST), {strCipherPass => $oHostBackup->cipherPassManifest()}); } # Generate the tablespace map for real backups my $oTablespaceMap = undef; if (!$self->synthetic()) { # Tablespace_map file is not restored in versions >= 9.5 because it interferes with internal remapping features. if (${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_DB_VERSION} >= PG_VERSION_95) { delete(${$oExpectedManifestRef}{&MANIFEST_SECTION_TARGET_FILE}{MANIFEST_TARGET_PGDATA . '/tablespace_map'}); } foreach my $strTarget (keys(%{${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}})) { if (defined(${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}{&MANIFEST_SUBKEY_TABLESPACE_ID})) { my $iTablespaceId = ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}{&MANIFEST_SUBKEY_TABLESPACE_ID}; $$oTablespaceMap{$iTablespaceId} = ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}{&MANIFEST_SUBKEY_TABLESPACE_NAME}; } } } # Generate the actual manifest my $strDbClusterPath = ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{&MANIFEST_TARGET_PGDATA}{&MANIFEST_SUBKEY_PATH}; if (defined($bTablespace) && !$bTablespace) { foreach my $strTarget (keys(%{${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}})) { if ($$oExpectedManifestRef{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}{&MANIFEST_SUBKEY_TYPE} eq MANIFEST_VALUE_LINK && defined($$oExpectedManifestRef{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}{&MANIFEST_SUBKEY_TABLESPACE_ID})) { my $strRemapPath; my $iTablespaceName = $$oExpectedManifestRef{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}{&MANIFEST_SUBKEY_TABLESPACE_NAME}; $strRemapPath = "../../tablespace/${iTablespaceName}"; $$oExpectedManifestRef{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}{&MANIFEST_SUBKEY_PATH} = $strRemapPath; $$oExpectedManifestRef{&MANIFEST_SECTION_TARGET_LINK}{MANIFEST_TARGET_PGDATA . "/${strTarget}"} {&MANIFEST_SUBKEY_DESTINATION} = $strRemapPath; } } } my $oActualManifest = new pgBackRest::Manifest( "${strTestPath}/" . FILE_MANIFEST, {bLoad => false, strDbVersion => $oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_DB_VERSION}, iDbCatalogVersion => $oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_CATALOG}, oStorage => storageTest()}); # Build the actual manifest using the delta setting that was actually used by the latest backup if one exists $oActualManifest->build(storageTest(), $strDbClusterPath, $oLastManifest, false, $oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_DELTA}, $oTablespaceMap); $oActualManifest->boolSet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_DELTA, undef, $oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_DELTA}); my $strSectionPath = $oActualManifest->get(MANIFEST_SECTION_BACKUP_TARGET, MANIFEST_TARGET_PGDATA, MANIFEST_SUBKEY_PATH); foreach my $strName ($oActualManifest->keys(MANIFEST_SECTION_TARGET_FILE)) { # If synthetic match checksum errors since they can't be verified here if ($self->synthetic) { my $bChecksumPage = $oExpectedManifestRef->{&MANIFEST_SECTION_TARGET_FILE}{$strName}{&MANIFEST_SUBKEY_CHECKSUM_PAGE}; if (defined($bChecksumPage)) { $oActualManifest->boolSet(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_CHECKSUM_PAGE, $bChecksumPage); if (!$bChecksumPage && defined($oExpectedManifestRef->{&MANIFEST_SECTION_TARGET_FILE}{$strName}{&MANIFEST_SUBKEY_CHECKSUM_PAGE_ERROR})) { $oActualManifest->set( MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_CHECKSUM_PAGE_ERROR, $oExpectedManifestRef->{&MANIFEST_SECTION_TARGET_FILE}{$strName}{&MANIFEST_SUBKEY_CHECKSUM_PAGE_ERROR}); } } } # Else if page checksums are enabled make sure the correct files are being checksummed else { if ($oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_CHECKSUM_PAGE}) { if (defined($oExpectedManifestRef->{&MANIFEST_SECTION_TARGET_FILE}{$strName}{&MANIFEST_SUBKEY_CHECKSUM_PAGE}) != isChecksumPage($strName)) { confess "check-page actual for ${strName} is " . ($oActualManifest->test(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_CHECKSUM_PAGE) ? 'set' : '[undef]') . ' but isChecksumPage() says it should be ' . (isChecksumPage($strName) ? 'set' : '[undef]') . '.'; } # Because the page checksum flag is copied to incr and diff from the previous backup but further processing is not # done, they can't be expected to match so delete them. delete($oExpectedManifestRef->{&MANIFEST_SECTION_TARGET_FILE}{$strName}{&MANIFEST_SUBKEY_CHECKSUM_PAGE}); $oActualManifest->remove(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_CHECKSUM_PAGE); } } if (!$self->synthetic()) { $oActualManifest->set( MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_SIZE, ${$oExpectedManifestRef}{&MANIFEST_SECTION_TARGET_FILE}{$strName}{size}); } # Remove repo-size from the manifest. ??? This could be improved to get actual sizes from the backup. $oActualManifest->remove(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_REPO_SIZE); delete($oExpectedManifestRef->{&MANIFEST_SECTION_TARGET_FILE}{$strName}{&MANIFEST_SUBKEY_REPO_SIZE}); if ($oActualManifest->get(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_SIZE) != 0) { my $oStat = lstat($oActualManifest->dbPathGet($strSectionPath, $strName)); # When performing a selective restore, the files for the database(s) that are not restored are still copied but as empty # sparse files (blocks == 0). If the file is not a sparse file or is a link, then get the actual checksum for comparison if ($oStat->blocks > 0 || S_ISLNK($oStat->mode)) { my ($strHash) = storageTest()->hashSize($oActualManifest->dbPathGet($strSectionPath, $strName)); $oActualManifest->set( MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_CHECKSUM, $strHash); # If the delta option was set, it is possible that the checksum on the file changed from the last manifest. If so, # then the file was expected to be copied by the backup and therefore the reference would have been removed. if ($oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_DELTA}) { # If the actual checksum and last manifest checksum don't match, remove the reference if (defined($oLastManifest) && $oLastManifest->test(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_CHECKSUM) && $strHash ne $oLastManifest->get(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_CHECKSUM)) { $oActualManifest->remove(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_REFERENCE); } } } else { # If there is a sparse file, remove the checksum and reference since they may or may not match. In this case, it is # not important to check them since it is known that the file was intentionally not restored. $oActualManifest->remove(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_CHECKSUM); delete(${$oExpectedManifestRef}{&MANIFEST_SECTION_TARGET_FILE}{$strName}{&MANIFEST_SUBKEY_CHECKSUM}); $oActualManifest->remove(MANIFEST_SECTION_TARGET_FILE, $strName, MANIFEST_SUBKEY_REFERENCE); delete(${$oExpectedManifestRef}{&MANIFEST_SECTION_TARGET_FILE}{$strName}{&MANIFEST_SUBKEY_REFERENCE}); } } } # If PostgreSQL >= 12 don't compare postgresql.auto.conf since it will have recovery settings written into it if (${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_DB_VERSION} >= PG_VERSION_12) { delete($oExpectedManifestRef->{&MANIFEST_SECTION_TARGET_FILE}{'pg_data/postgresql.auto.conf'}); $oActualManifest->remove(MANIFEST_SECTION_TARGET_FILE, 'pg_data/postgresql.auto.conf'); } # If the link section is empty then delete it and the default section if (keys(%{${$oExpectedManifestRef}{&MANIFEST_SECTION_TARGET_LINK}}) == 0) { delete($$oExpectedManifestRef{&MANIFEST_SECTION_TARGET_LINK}); delete($$oExpectedManifestRef{&MANIFEST_SECTION_TARGET_LINK . ':default'}); } # Set actual to expected for settings that always change from backup to backup $oActualManifest->set(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_ARCHIVE_CHECK, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_ARCHIVE_CHECK}); $oActualManifest->set(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_ARCHIVE_COPY, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_ARCHIVE_COPY}); $oActualManifest->set(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_BACKUP_STANDBY, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_BACKUP_STANDBY}); $oActualManifest->set(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_BUFFER_SIZE, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_BUFFER_SIZE}); $oActualManifest->set(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_COMPRESS, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_COMPRESS}); $oActualManifest->set(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_COMPRESS_LEVEL, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_COMPRESS_LEVEL}); $oActualManifest->set(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_COMPRESS_LEVEL_NETWORK, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_COMPRESS_LEVEL_NETWORK}); $oActualManifest->set(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_HARDLINK, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_HARDLINK}); $oActualManifest->set(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_ONLINE, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_ONLINE}); $oActualManifest->set(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_PROCESS_MAX, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_PROCESS_MAX}); $oActualManifest->boolSet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_DELTA, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_DELTA}); $oActualManifest->set(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_DB_VERSION, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_DB_VERSION}); $oActualManifest->numericSet(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_CONTROL, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_CONTROL}); $oActualManifest->numericSet(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_CATALOG, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_CATALOG}); $oActualManifest->numericSet(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_SYSTEM_ID, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_SYSTEM_ID}); $oActualManifest->numericSet(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_DB_ID, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_DB_ID}); $oActualManifest->set(INI_SECTION_BACKREST, INI_KEY_VERSION, undef, ${$oExpectedManifestRef}{&INI_SECTION_BACKREST}{&INI_KEY_VERSION}); # Copy passphrase if one exists if (defined($oExpectedManifestRef->{&INI_SECTION_CIPHER}) && defined($oExpectedManifestRef->{&INI_SECTION_CIPHER}{&INI_KEY_CIPHER_PASS})) { $oActualManifest->set(INI_SECTION_CIPHER, INI_KEY_CIPHER_PASS, undef, $oExpectedManifestRef->{&INI_SECTION_CIPHER}{&INI_KEY_CIPHER_PASS}); } # This option won't be set in the actual manifest delete($oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_CHECKSUM_PAGE}); if ($self->synthetic()) { $oActualManifest->remove(MANIFEST_SECTION_BACKUP); delete($oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP}); } else { $oActualManifest->set( INI_SECTION_BACKREST, INI_KEY_CHECKSUM, undef, $oExpectedManifestRef->{&INI_SECTION_BACKREST}{&INI_KEY_CHECKSUM}); $oActualManifest->set( MANIFEST_SECTION_BACKUP, MANIFEST_KEY_LABEL, undef, $oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_LABEL}); $oActualManifest->set( MANIFEST_SECTION_BACKUP, MANIFEST_KEY_TIMESTAMP_COPY_START, undef, $oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_TIMESTAMP_COPY_START}); $oActualManifest->set( MANIFEST_SECTION_BACKUP, MANIFEST_KEY_TIMESTAMP_START, undef, $oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_TIMESTAMP_START}); $oActualManifest->set( MANIFEST_SECTION_BACKUP, MANIFEST_KEY_TIMESTAMP_STOP, undef, $oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_TIMESTAMP_STOP}); $oActualManifest->set( MANIFEST_SECTION_BACKUP, MANIFEST_KEY_TYPE, undef, $oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_TYPE}); $oActualManifest->set(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_LSN_START, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_LSN_START}); $oActualManifest->set(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_LSN_STOP, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_LSN_STOP}); if (defined(${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_ARCHIVE_START})) { $oActualManifest->set(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_ARCHIVE_START, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_ARCHIVE_START}); } if (${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_ARCHIVE_STOP}) { $oActualManifest->set(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_ARCHIVE_STOP, undef, ${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_ARCHIVE_STOP}); } } # Check that archive status exists in the manifest for an online backup my $strArchiveStatusPath = MANIFEST_TARGET_PGDATA . qw{/} . $oActualManifest->walPath() . qw{/} . DB_PATH_ARCHIVESTATUS; if ($oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_ONLINE} && !defined($oExpectedManifestRef->{&MANIFEST_SECTION_TARGET_PATH}{$strArchiveStatusPath})) { confess &log(ERROR, "${strArchiveStatusPath} expected for online backup", ERROR_ASSERT); } # Delete the list of DBs delete($$oExpectedManifestRef{&MANIFEST_SECTION_DB}); $self->manifestDefault($oExpectedManifestRef); storageTest()->put("${strTestPath}/actual.manifest", iniRender($oActualManifest->{oContent})); storageTest()->put("${strTestPath}/expected.manifest", iniRender($oExpectedManifestRef)); executeTest("diff ${strTestPath}/expected.manifest ${strTestPath}/actual.manifest"); storageTest()->remove("${strTestPath}/expected.manifest"); storageTest()->remove("${strTestPath}/actual.manifest"); } #################################################################################################################################### # Getters #################################################################################################################################### sub backrestConfig {return shift->{strBackRestConfig}} sub backupDestination {return shift->{strBackupDestination}} sub backrestExe {return testRunGet()->backrestExe()} sub bogusHost {return shift->{bBogusHost}} sub hardLink {return shift->{bHardLink}} sub hasLink {storageRepo()->capability(STORAGE_CAPABILITY_LINK)} sub isFS {storageRepo()->type() ne STORAGE_S3} sub isHostBackup {my $self = shift; return $self->backupDestination() eq $self->nameGet()} sub isHostDbMaster {return shift->nameGet() eq HOST_DB_MASTER} sub isHostDbStandby {return shift->nameGet() eq HOST_DB_STANDBY} sub isHostDb {my $self = shift; return $self->isHostDbMaster() || $self->isHostDbStandby()} sub lockPath {return shift->{strLockPath}} sub logPath {return shift->{strLogPath}} sub repoPath {return shift->{strRepoPath}} sub repoEncrypt {return shift->{bRepoEncrypt}} sub stanza {return testRunGet()->stanza()} sub synthetic {return shift->{bSynthetic}} sub cipherPassManifest {return shift->{strCipherPassManifest}} sub cipherPassArchive {return shift->{strCipherPassArchive}} 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Env/Host/HostBaseTest.pm000066400000000000000000000101311362531507100261700ustar00rootroot00000000000000#################################################################################################################################### # HostBackupTest.pm - Backup host #################################################################################################################################### package pgBackRestTest::Env::Host::HostBaseTest; use parent 'pgBackRestTest::Common::HostTest'; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Cwd qw(abs_path); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use pgBackRest::Common::Log; use pgBackRest::Protocol::Storage::Helper; use pgBackRest::Version; use pgBackRestTest::Common::ContainerTest; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::JobTest; use pgBackRestTest::Common::RunTest; use pgBackRestTest::Common::VmTest; #################################################################################################################################### # Host constants #################################################################################################################################### use constant HOST_BASE => 'base'; push @EXPORT, qw(HOST_BASE); use constant HOST_DB_MASTER => 'db-master'; push @EXPORT, qw(HOST_DB_MASTER); use constant HOST_DB_STANDBY => 'db-standby'; push @EXPORT, qw(HOST_DB_STANDBY); use constant HOST_BACKUP => 'backup'; push @EXPORT, qw(HOST_BACKUP); use constant HOST_S3 => 's3-server'; push @EXPORT, qw(HOST_S3); #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Class name # Assign function parameters, defaults, and log debug info my ( $strOperation, $strName, $oParam, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'strName', default => HOST_BASE, trace => true}, {name => 'oParam', required => false, trace => true}, ); my $strTestPath = testRunGet()->testPath() . ($strName eq HOST_BASE ? '' : "/${strName}"); storageTest()->pathCreate($strTestPath, {strMode => '0770'}); # Create the host my $strProjectPath = dirname(dirname(abs_path($0))); my $strContainer = 'test-' . testRunGet()->vmId() . "-$strName"; my $self = $class->SUPER::new( $strName, $strContainer, $$oParam{strImage}, $$oParam{strUser}, testRunGet()->vm(), ["${strProjectPath}:${strProjectPath}", "${strTestPath}:${strTestPath}" ,dirname(dirname($strTestPath)) . '/cover_db:' . dirname(dirname($strTestPath)) . '/cover_db']); bless $self, $class; # Set test path $self->{strTestPath} = $strTestPath; # Set permissions on the test path $self->executeSimple('chown -R ' . $self->userGet() . ':'. TEST_GROUP . ' ' . $self->testPath(), undef, 'root'); # Install bin and Perl C Library jobInstallC(testRunGet()->basePath(), $self->{strOS}, $strContainer); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self, trace => true} ); } #################################################################################################################################### # Getters #################################################################################################################################### sub testPath {return shift->{strTestPath}} 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Env/Host/HostDbCommonTest.pm000066400000000000000000000176161362531507100270330ustar00rootroot00000000000000#################################################################################################################################### # HostDbTest.pm - Database host #################################################################################################################################### package pgBackRestTest::Env::Host::HostDbCommonTest; use parent 'pgBackRestTest::Env::Host::HostBackupTest'; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use Storable qw(dclone); use pgBackRest::Common::Exception; use pgBackRest::Common::Ini; use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Common::Wait; use pgBackRest::Config::Config; use pgBackRest::DbVersion; use pgBackRest::Manifest; use pgBackRest::Protocol::Storage::Helper; use pgBackRest::Version; use pgBackRestTest::Env::Host::HostBackupTest; use pgBackRestTest::Env::Host::HostBaseTest; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::HostGroupTest; use pgBackRestTest::Common::RunTest; #################################################################################################################################### # Test WAL size #################################################################################################################################### use constant PG_WAL_SIZE_TEST => 16777216; #################################################################################################################################### # Host defaults #################################################################################################################################### use constant HOST_PATH_SPOOL => 'spool'; use constant HOST_PATH_DB => 'db'; use constant HOST_PATH_DB_BASE => 'base'; #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Class name # Assign function parameters, defaults, and log debug info my ( $strOperation, $oParam, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oParam', required => false, trace => true}, ); # Get host group my $oHostGroup = hostGroupGet(); # Is standby? my $bStandby = defined($$oParam{bStandby}) && $$oParam{bStandby} ? true : false; my $self = $class->SUPER::new( { strName => $bStandby ? HOST_DB_STANDBY : HOST_DB_MASTER, strImage => $$oParam{strImage}, strBackupDestination => $$oParam{strBackupDestination}, oLogTest => $$oParam{oLogTest}, bSynthetic => $$oParam{bSynthetic}, bRepoLocal => $oParam->{bRepoLocal}, bRepoEncrypt => $oParam->{bRepoEncrypt}, }); bless $self, $class; # Set parameters $self->{bStandby} = $bStandby; $self->{strDbPath} = $self->testPath() . '/' . HOST_PATH_DB; $self->{strDbBasePath} = $self->dbPath() . '/' . HOST_PATH_DB_BASE; $self->{strTablespacePath} = $self->dbPath() . '/tablespace'; storageTest()->pathCreate($self->dbBasePath(), {strMode => '0700', bCreateParent => true}); $self->{strSpoolPath} = $self->testPath() . '/' . HOST_PATH_SPOOL; storageTest()->pathCreate($self->spoolPath()); # Initialize linkRemap Hashes $self->{hLinkRemap} = {}; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self, trace => true} ); } #################################################################################################################################### # archivePush #################################################################################################################################### sub archivePush { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strWalPath, $strArchiveTestFile, $iArchiveNo, $iExpectedError, $bAsync, $strOptionalParam, ) = logDebugParam ( __PACKAGE__ . '->archivePush', \@_, {name => 'strWalPath'}, {name => 'strArchiveTestFile', required => false}, {name => 'iArchiveNo', required => false}, {name => 'iExpectedError', required => false}, {name => 'bAsync', default => true}, {name => 'strOptionalParam', required => false}, ); my $strSourceFile; if (defined($strArchiveTestFile)) { $strSourceFile = "${strWalPath}/" . uc(sprintf('0000000100000001%08x', $iArchiveNo)); storageTest()->copy($strArchiveTestFile, storageTest()->openWrite($strSourceFile, {bPathCreate => true})); storageTest()->pathCreate("${strWalPath}/archive_status/", {bIgnoreExists => true, bCreateParent => true}); storageTest()->put("${strWalPath}/archive_status/" . uc(sprintf('0000000100000001%08x', $iArchiveNo)) . '.ready'); } $self->executeSimple( $self->backrestExe() . ' --config=' . $self->backrestConfig() . ' --log-level-console=warn --archive-push-queue-max=' . int(2 * PG_WAL_SIZE_TEST) . ' --stanza=' . $self->stanza() . (defined($iExpectedError) && $iExpectedError == ERROR_UNKNOWN ? ' --repo1-host=bogus' : '') . ($bAsync ? '' : ' --no-archive-async') . " archive-push" . (defined($strSourceFile) ? " ${strSourceFile}" : '') . (defined($strOptionalParam) ? " ${strOptionalParam}" : ''), {iExpectedExitStatus => $iExpectedError, oLogTest => $self->{oLogTest}, bLogOutput => $self->synthetic()}); # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # linkRemap #################################################################################################################################### sub linkRemap { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strTarget, $strDestination ) = logDebugParam ( __PACKAGE__ . '->linkRemap', \@_, {name => 'strTarget'}, {name => 'strDestination'}, ); ${$self->{hLinkRemap}}{$strTarget} = $strDestination; # Return from function and log return values if any return logDebugReturn($strOperation); } #################################################################################################################################### # Getters #################################################################################################################################### sub dbPath {return shift->{strDbPath};} sub dbBasePath { my $self = shift; my $iIndex = shift; return $self->{strDbBasePath} . (defined($iIndex) ? "-${iIndex}" : ''); } sub spoolPath {return shift->{strSpoolPath}} sub standby {return shift->{bStandby}} sub tablespacePath { my $self = shift; my $iTablespace = shift; my $iIndex = shift; return $self->{strTablespacePath} . (defined($iTablespace) ? "/ts${iTablespace}" . (defined($iIndex) ? "-${iIndex}" : '') : ''); } 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Env/Host/HostDbSyntheticTest.pm000066400000000000000000000676531362531507100275630ustar00rootroot00000000000000#################################################################################################################################### # HostDbTest.pm - Database host #################################################################################################################################### package pgBackRestTest::Env::Host::HostDbSyntheticTest; use parent 'pgBackRestTest::Env::Host::HostDbCommonTest'; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use Fcntl ':mode'; use File::Basename qw(basename dirname); use File::stat; use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Common::Wait; use pgBackRest::DbVersion; use pgBackRest::Manifest; use pgBackRest::Protocol::Storage::Helper; use pgBackRest::Version; use pgBackRestTest::Env::Host::HostBackupTest; use pgBackRestTest::Env::Host::HostBaseTest; use pgBackRestTest::Env::Host::HostDbCommonTest; use pgBackRestTest::Common::ContainerTest; use pgBackRestTest::Common::FileTest; use pgBackRestTest::Common::RunTest; #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Class name # Assign function parameters, defaults, and log debug info my ( $strOperation, $oParam, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oParam', required => false, trace => true}, ); my $self = $class->SUPER::new( { strImage => containerRepo() . ':' . testRunGet()->vm() . "-test", strBackupDestination => $$oParam{strBackupDestination}, oLogTest => $$oParam{oLogTest}, bSynthetic => true, bStandby => $$oParam{bStandby}, bRepoLocal => $oParam->{bRepoLocal}, bRepoEncrypt => $oParam->{bRepoEncrypt}, }); bless $self, $class; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self, trace => true} ); } #################################################################################################################################### # dbFileCreate # # Create a file specifying content, mode, and time. #################################################################################################################################### sub dbFileCreate { my $self = shift; my $oManifestRef = shift; my $strTarget = shift; my $strFile = shift; my $strContent = shift; my $lTime = shift; my $strMode = shift; # Check that strTarget is a valid my $strPath = ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}{&MANIFEST_SUBKEY_PATH}; if (!defined($strPath)) { confess &log(ERROR, "${strTarget} not a valid target: \n" . Dumper(${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET})); } # Get tablespace path if this is a tablespace my $strPgPath; if ($$oManifestRef{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_DB_VERSION} >= PG_VERSION_90 && index($strTarget, DB_PATH_PGTBLSPC . '/') == 0) { my $iCatalog = ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_CATALOG}; $strPgPath = 'PG_' . ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_DB_VERSION} . "_${iCatalog}"; } # Create actual file location my $strPathFile = $strPath . (defined($strPgPath) ? "/${strPgPath}" : '') . "/${strFile}"; if (index($strPathFile, '/') != 0) { $strPathFile = ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{&MANIFEST_TARGET_PGDATA}{&MANIFEST_SUBKEY_PATH} . '/' . (defined(dirname($strPathFile)) ? dirname($strPathFile) : '') . "/${strPathFile}"; } # Create the file testFileCreate($strPathFile, $strContent, $lTime, $strMode); # Return path to created file return $strPathFile; } #################################################################################################################################### # dbFileRemove #################################################################################################################################### sub dbFileRemove { my $self = shift; my $oManifestRef = shift; my $strTarget = shift; my $strFile = shift; my $bIgnoreMissing = shift; # Get actual path location my $strDbFile = $self->manifestDbPathGet($oManifestRef, $strTarget, $strFile); # Remove the file if (!(defined($bIgnoreMissing) && $bIgnoreMissing && !(-e $strDbFile))) { testFileRemove($strDbFile); } return $strDbFile; } #################################################################################################################################### # dbLinkCreate # # Create a file specifying content, mode, and time. #################################################################################################################################### sub dbLinkCreate { my $self = shift; my $oManifestRef = shift; my $strTarget = shift; my $strFile = shift; my $strDestination = shift; # Create actual file location my $strDbFile = $self->manifestDbPathGet($oManifestRef, $strTarget, $strFile); # Create the file testLinkCreate($strDbFile, $strDestination); # Return path to created file return $strDbFile; } #################################################################################################################################### # manifestDbPathGet # # Get the db path based on the target and file passed. #################################################################################################################################### sub manifestDbPathGet { my $self = shift; my $oManifestRef = shift; my $strTarget = shift; my $strFile = shift; # Determine the manifest key my $strDbPath = ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}{&MANIFEST_SUBKEY_PATH}; # If target is a tablespace and pg version >= 9.0 if (defined(${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}{&MANIFEST_SUBKEY_TABLESPACE_ID}) && $$oManifestRef{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_DB_VERSION} >= PG_VERSION_90) { my $iCatalog = ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_CATALOG}; $strDbPath .= '/PG_' . ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_DB_VERSION} . "_${iCatalog}"; } $strDbPath .= defined($strFile) ? "/${strFile}" : ''; return $strDbPath; } #################################################################################################################################### # manifestFileCreate # # Create a file specifying content, mode, and time and add it to the manifest. #################################################################################################################################### sub manifestFileCreate { my $self = shift; my $oManifestRef = shift; my $strTarget = shift; my $strFile = shift; my $strContent = shift; my $strChecksum = shift; my $lTime = shift; my $strMode = shift; my $bMaster = shift; my $strChecksumPageError = shift; # Determine the manifest key my $strManifestKey = $self->manifestKeyGet($oManifestRef, $strTarget, $strFile); # Create the file my $strPathFile = $self->dbFileCreate($oManifestRef, $strTarget, $strFile, $strContent, $lTime, $strMode); # Stat the file my $oStat = lstat($strPathFile); ${$oManifestRef}{&MANIFEST_SECTION_TARGET_FILE}{$strManifestKey}{&MANIFEST_SUBKEY_GROUP} = getgrgid($oStat->gid); ${$oManifestRef}{&MANIFEST_SECTION_TARGET_FILE}{$strManifestKey}{&MANIFEST_SUBKEY_USER} = getpwuid($oStat->uid); ${$oManifestRef}{&MANIFEST_SECTION_TARGET_FILE}{$strManifestKey}{&MANIFEST_SUBKEY_MODE} = sprintf('%04o', S_IMODE($oStat->mode)); ${$oManifestRef}{&MANIFEST_SECTION_TARGET_FILE}{$strManifestKey}{&MANIFEST_SUBKEY_TIMESTAMP} = $oStat->mtime; ${$oManifestRef}{&MANIFEST_SECTION_TARGET_FILE}{$strManifestKey}{&MANIFEST_SUBKEY_SIZE} = $oStat->size; ${$oManifestRef}{&MANIFEST_SECTION_TARGET_FILE}{$strManifestKey}{&MANIFEST_SUBKEY_MASTER} = defined($bMaster) ? ($bMaster ? JSON::PP::true : JSON::PP::false) : JSON::PP::false; delete(${$oManifestRef}{&MANIFEST_SECTION_TARGET_FILE}{$strManifestKey}{&MANIFEST_SUBKEY_REFERENCE}); my $bChecksumPage = defined($strChecksumPageError) ? false : (isChecksumPage($strManifestKey) ? true : undef); if (defined($bChecksumPage)) { $oManifestRef->{&MANIFEST_SECTION_TARGET_FILE}{$strManifestKey}{&MANIFEST_SUBKEY_CHECKSUM_PAGE} = $bChecksumPage ? JSON::PP::true : JSON::PP::false; if (!$bChecksumPage && $strChecksumPageError ne '0') { my @iyChecksumPageError = eval($strChecksumPageError); $oManifestRef->{&MANIFEST_SECTION_TARGET_FILE}{$strManifestKey}{&MANIFEST_SUBKEY_CHECKSUM_PAGE_ERROR} = \@iyChecksumPageError; } else { delete($oManifestRef->{&MANIFEST_SECTION_TARGET_FILE}{$strManifestKey}{&MANIFEST_SUBKEY_CHECKSUM_PAGE_ERROR}); } } if (defined($strChecksum)) { ${$oManifestRef}{&MANIFEST_SECTION_TARGET_FILE}{$strManifestKey}{checksum} = $strChecksum; } } #################################################################################################################################### # manifestFileRemove # # Remove a file from disk and (optionally) the manifest. #################################################################################################################################### sub manifestFileRemove { my $self = shift; my $oManifestRef = shift; my $strTarget = shift; my $strFile = shift; # Determine the manifest key my $strManifestKey = $self->manifestKeyGet($oManifestRef, $strTarget, $strFile); # Remove the file $self->dbFileRemove($oManifestRef, $strTarget, $strFile, true); # Remove from manifest delete(${$oManifestRef}{&MANIFEST_SECTION_TARGET_FILE}{$strManifestKey}); } #################################################################################################################################### # manifestKeyGet # # Get the manifest key based on the target and file/path/link passed. #################################################################################################################################### sub manifestKeyGet { my $self = shift; my $oManifestRef = shift; my $strTarget = shift; my $strFile = shift; # Determine the manifest key my $strManifestKey = $strTarget; # If target is a tablespace and pg version >= 9.0 if (defined(${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}{&MANIFEST_SUBKEY_TABLESPACE_ID}) && $$oManifestRef{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_DB_VERSION} >= PG_VERSION_90) { my $iCatalog = ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_CATALOG}; $strManifestKey .= '/PG_' . ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_DB_VERSION} . "_${iCatalog}"; } $strManifestKey .= (defined($strFile) ? "/$strFile" : ''); return $strManifestKey; } #################################################################################################################################### # manifestLinkCreate # # Create a link and add it to the manifest. #################################################################################################################################### sub manifestLinkCreate { my $self = shift; my $oManifestRef = shift; my $strPath = shift; my $strFile = shift; my $strDestination = shift; my $bMaster = shift; # Determine the manifest key my $strManifestKey = $self->manifestKeyGet($oManifestRef, $strPath, $strFile); # Load target ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strManifestKey}{&MANIFEST_SUBKEY_PATH} = $strDestination; ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strManifestKey}{&MANIFEST_SUBKEY_TYPE} = MANIFEST_VALUE_LINK; # Create the link my $strDbFile = $self->dbLinkCreate($oManifestRef, $strPath, $strFile, $strDestination); # Stat the link my $oStat = lstat($strDbFile); # Check for errors in stat if (!defined($oStat)) { confess 'unable to stat ${strDbFile}'; } # Load file into manifest ${$oManifestRef}{&MANIFEST_SECTION_TARGET_LINK}{$strManifestKey}{&MANIFEST_SUBKEY_GROUP} = getgrgid($oStat->gid); ${$oManifestRef}{&MANIFEST_SECTION_TARGET_LINK}{$strManifestKey}{&MANIFEST_SUBKEY_USER} = getpwuid($oStat->uid); ${$oManifestRef}{&MANIFEST_SECTION_TARGET_LINK}{$strManifestKey}{&MANIFEST_SUBKEY_DESTINATION} = $strDestination; # Stat what the link is pointing to my $strDestinationFile = $strDestination; if (index($strDestinationFile, '/') != 0) { $strDestinationFile = ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{&MANIFEST_TARGET_PGDATA}{&MANIFEST_SUBKEY_PATH} . '/' . (defined(dirname($strPath)) ? dirname($strPath) : '') . "/${strDestination}"; } $oStat = lstat($strDestinationFile); my $strSection = MANIFEST_SECTION_TARGET_PATH; if (S_ISREG($oStat->mode)) { $strSection = MANIFEST_SECTION_TARGET_FILE; ${$oManifestRef}{$strSection}{$strManifestKey}{&MANIFEST_SUBKEY_SIZE} = $oStat->size; ${$oManifestRef}{$strSection}{$strManifestKey}{&MANIFEST_SUBKEY_TIMESTAMP} = $oStat->mtime; (${$oManifestRef}{$strSection}{$strManifestKey}{&MANIFEST_SUBKEY_CHECKSUM}) = storageTest()->hashSize($strDestinationFile); ${$oManifestRef}{$strSection}{$strManifestKey}{&MANIFEST_SUBKEY_MASTER} = defined($bMaster) ? ($bMaster ? JSON::PP::true : JSON::PP::false) : JSON::PP::false; ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strManifestKey}{&MANIFEST_SUBKEY_FILE} = basename(${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strManifestKey}{&MANIFEST_SUBKEY_PATH}); ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strManifestKey}{&MANIFEST_SUBKEY_PATH} = dirname(${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strManifestKey}{&MANIFEST_SUBKEY_PATH}); } # Allow a link to a link to be created to test that backrest errors out correctly elsif (S_ISLNK($oStat->mode)) { $strSection = MANIFEST_SECTION_TARGET_LINK; ${$oManifestRef}{$strSection}{$strManifestKey}{&MANIFEST_SUBKEY_DESTINATION} = $strDestination; } elsif (!S_ISDIR($oStat->mode)) { confess &log(ASSERT, "unrecognized file type for file $strDestinationFile"); } ${$oManifestRef}{$strSection}{$strManifestKey}{&MANIFEST_SUBKEY_GROUP} = getgrgid($oStat->gid); ${$oManifestRef}{$strSection}{$strManifestKey}{&MANIFEST_SUBKEY_USER} = getpwuid($oStat->uid); ${$oManifestRef}{$strSection}{$strManifestKey}{&MANIFEST_SUBKEY_MODE} = sprintf('%04o', S_IMODE($oStat->mode)); } #################################################################################################################################### # manifestLinkMap # # Remap links to new directories/files #################################################################################################################################### sub manifestLinkMap { my $self = shift; my $oManifestRef = shift; my $strTarget = shift; my $strDestination = shift; if ($$oManifestRef{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}{&MANIFEST_SUBKEY_TYPE} ne MANIFEST_VALUE_LINK) { confess "cannot map target ${strTarget} because it is not a link"; } if (defined($$oManifestRef{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}{&MANIFEST_SUBKEY_TABLESPACE_ID})) { confess "tablespace ${strTarget} cannot be remapped with this function"; } if (defined($strDestination)) { confess "GENERAL LINK REMAP NOT IMPLEMENTED"; } else { delete($$oManifestRef{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}); delete($$oManifestRef{&MANIFEST_SECTION_TARGET_LINK}{$strTarget}); } } #################################################################################################################################### # manifestLinkRemove # # Create a link and add it to the manifest. #################################################################################################################################### sub manifestLinkRemove { my $self = shift; my $oManifestRef = shift; my $strPath = shift; my $strFile = shift; # Delete the link my $strDbFile = $self->dbFileRemove($oManifestRef, $strPath, $strFile); # Determine the manifest key my $strManifestKey = $self->manifestKeyGet($oManifestRef, $strPath, $strFile); # Delete from manifest delete(${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strManifestKey}); delete(${$oManifestRef}{&MANIFEST_SECTION_TARGET_LINK}{$strManifestKey}); delete(${$oManifestRef}{&MANIFEST_SECTION_TARGET_FILE}{$strManifestKey}); delete(${$oManifestRef}{&MANIFEST_SECTION_TARGET_PATH}{$strManifestKey}); } #################################################################################################################################### # manifestPathCreate # # Create a path specifying mode and add it to the manifest. #################################################################################################################################### sub manifestPathCreate { my $self = shift; my $oManifestRef = shift; my $strPath = shift; my $strSubPath = shift; my $strMode = shift; # Determine the manifest key my $strManifestKey = $self->manifestKeyGet($oManifestRef, $strPath, $strSubPath); # Create the db path my $strDbPath = $self->dbPathCreate($oManifestRef, $strPath, $strSubPath, defined($strMode) ? $strMode : '0700'); # Stat the file my $oStat = lstat($strDbPath); # Check for errors in stat if (!defined($oStat)) { confess 'unable to stat ${strSubPath}'; } # Load file into manifest my $strSection = MANIFEST_SECTION_TARGET_PATH; ${$oManifestRef}{$strSection}{$strManifestKey}{&MANIFEST_SUBKEY_GROUP} = getgrgid($oStat->gid); ${$oManifestRef}{$strSection}{$strManifestKey}{&MANIFEST_SUBKEY_USER} = getpwuid($oStat->uid); ${$oManifestRef}{$strSection}{$strManifestKey}{&MANIFEST_SUBKEY_MODE} = sprintf('%04o', S_IMODE($oStat->mode)); } #################################################################################################################################### # manifestReference # # Update all files that do not have a reference with the supplied reference. #################################################################################################################################### sub manifestReference { my $self = shift; my $oManifestRef = shift; my $strReference = shift; my $bClear = shift; # Set prior backup if (defined($strReference)) { ${$oManifestRef}{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_PRIOR} = $strReference; } else { delete(${$oManifestRef}{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_PRIOR}); } # Find all file sections foreach my $strSectionFile (sort(keys(%$oManifestRef))) { # Skip non-file sections if ($strSectionFile !~ /\:file$/) { next; } foreach my $strFile (sort(keys(%{${$oManifestRef}{$strSectionFile}}))) { if (!defined($strReference)) { delete(${$oManifestRef}{$strSectionFile}{$strFile}{&MANIFEST_SUBKEY_REFERENCE}); } elsif (defined($bClear) && $bClear) { if (defined(${$oManifestRef}{$strSectionFile}{$strFile}{&MANIFEST_SUBKEY_REFERENCE}) && ${$oManifestRef}{$strSectionFile}{$strFile}{&MANIFEST_SUBKEY_REFERENCE} ne $strReference) { delete(${$oManifestRef}{$strSectionFile}{$strFile}{&MANIFEST_SUBKEY_REFERENCE}); } } elsif (!defined(${$oManifestRef}{$strSectionFile}{$strFile}{&MANIFEST_SUBKEY_REFERENCE})) { ${$oManifestRef}{$strSectionFile}{$strFile}{&MANIFEST_SUBKEY_REFERENCE} = $strReference; } } } } #################################################################################################################################### # manifestTablespaceCreate # # Create a tablespace specifying mode and add it to the manifest. #################################################################################################################################### sub manifestTablespaceCreate { my $self = shift; my $oManifestRef = shift; my $iOid = shift; my $strMode = shift; # Load linked path into manifest my $strLinkPath = $self->tablespacePath($iOid); my $strTarget = MANIFEST_TARGET_PGTBLSPC . "/${iOid}"; my $oStat = lstat($strLinkPath); ${$oManifestRef}{&MANIFEST_SECTION_TARGET_PATH}{$strTarget}{&MANIFEST_SUBKEY_GROUP} = getgrgid($oStat->gid); ${$oManifestRef}{&MANIFEST_SECTION_TARGET_PATH}{$strTarget}{&MANIFEST_SUBKEY_USER} = getpwuid($oStat->uid); ${$oManifestRef}{&MANIFEST_SECTION_TARGET_PATH}{$strTarget}{&MANIFEST_SUBKEY_MODE} = sprintf('%04o', S_IMODE($oStat->mode)); # Create the tablespace path if it does not exist my $strTablespacePath = $strLinkPath; my $strPathTarget = $strTarget; if ($$oManifestRef{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_DB_VERSION} >= PG_VERSION_90) { my $iCatalog = ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_CATALOG}; my $strTablespaceId = 'PG_' . ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_DB_VERSION} . "_${iCatalog}"; $strTablespacePath .= "/${strTablespaceId}"; $strPathTarget .= "/${strTablespaceId}"; } if (!-e $strTablespacePath) { storageTest()->pathCreate($strTablespacePath, {strMode => defined($strMode) ? $strMode : '0700'}); } # Load tablespace path into manifest $oStat = lstat($strTablespacePath); ${$oManifestRef}{&MANIFEST_SECTION_TARGET_PATH}{&MANIFEST_TARGET_PGTBLSPC} = ${$oManifestRef}{&MANIFEST_SECTION_TARGET_PATH}{&MANIFEST_TARGET_PGDATA}; ${$oManifestRef}{&MANIFEST_SECTION_TARGET_PATH}{$strPathTarget}{&MANIFEST_SUBKEY_GROUP} = getgrgid($oStat->gid); ${$oManifestRef}{&MANIFEST_SECTION_TARGET_PATH}{$strPathTarget}{&MANIFEST_SUBKEY_USER} = getpwuid($oStat->uid); ${$oManifestRef}{&MANIFEST_SECTION_TARGET_PATH}{$strPathTarget}{&MANIFEST_SUBKEY_MODE} = sprintf('%04o', S_IMODE($oStat->mode)); # Create the link in DB_PATH_PGTBLSPC my $strLink = $self->dbBasePath() . '/' . DB_PATH_PGTBLSPC . "/${iOid}"; symlink($strLinkPath, $strLink) or confess "unable to link ${strLink} to ${strLinkPath}"; # Load link into the manifest $oStat = lstat($strLink); my $strLinkTarget = MANIFEST_TARGET_PGDATA . "/${strTarget}"; ${$oManifestRef}{&MANIFEST_SECTION_TARGET_LINK}{$strLinkTarget}{&MANIFEST_SUBKEY_GROUP} = getgrgid($oStat->gid); ${$oManifestRef}{&MANIFEST_SECTION_TARGET_LINK}{$strLinkTarget}{&MANIFEST_SUBKEY_USER} = getpwuid($oStat->uid); ${$oManifestRef}{&MANIFEST_SECTION_TARGET_LINK}{$strLinkTarget}{&MANIFEST_SUBKEY_DESTINATION} = $strLinkPath; # Load tablespace target into the manifest ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}{&MANIFEST_SUBKEY_PATH} = $strLinkPath; ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}{&MANIFEST_SUBKEY_TYPE} = MANIFEST_VALUE_LINK; ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}{&MANIFEST_SUBKEY_TABLESPACE_ID} = $iOid; ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}{&MANIFEST_SUBKEY_TABLESPACE_NAME} = "ts${iOid}"; } #################################################################################################################################### # manifestTablespaceDrop # # Drop a tablespace add remove it from the manifest. #################################################################################################################################### sub manifestTablespaceDrop { my $self = shift; my $oManifestRef = shift; my $iOid = shift; my $iIndex = shift; # Remove tablespace path/file/link from manifest my $strTarget = DB_PATH_PGTBLSPC . "/${iOid}"; # Remove manifest path, link, target delete(${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}); delete(${$oManifestRef}{&MANIFEST_SECTION_TARGET_LINK}{&MANIFEST_TARGET_PGDATA . "/${strTarget}"}); delete(${$oManifestRef}{&MANIFEST_SECTION_TARGET_PATH}{$strTarget}); # Remove nested manifest files and paths foreach my $strSection (&MANIFEST_SECTION_TARGET_PATH, &MANIFEST_SECTION_TARGET_FILE) { foreach my $strFile (keys(%{${$oManifestRef}{$strSection}})) { if (index($strFile, "${strTarget}/") == 0) { delete($$oManifestRef{$strSection}{$strFile}); } } } # Drop the link in DB_PATH_PGTBLSPC testFileRemove($self->dbBasePath($iIndex) . "/${strTarget}"); } #################################################################################################################################### # dbPathCreate # # Create a path specifying mode. #################################################################################################################################### sub dbPathCreate { my $self = shift; my $oManifestRef = shift; my $strTarget = shift; my $strSubPath = shift; my $strMode = shift; # Create final file location my $strFinalPath = ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_TARGET}{$strTarget}{&MANIFEST_SUBKEY_PATH}; # Get tablespace path if this is a tablespace if ($$oManifestRef{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_DB_VERSION} >= PG_VERSION_90 && index($strTarget, DB_PATH_PGTBLSPC . '/') == 0) { my $iCatalog = ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_CATALOG}; $strFinalPath .= '/PG_' . ${$oManifestRef}{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_DB_VERSION} . "_${iCatalog}"; } $strFinalPath .= (defined($strSubPath) ? "/${strSubPath}" : ''); # Create the path if (!(-e $strFinalPath)) { storageTest()->pathCreate($strFinalPath, {strMode => $strMode}); } return $strFinalPath; } #################################################################################################################################### # dbPathMode # # Change the mode of a path. #################################################################################################################################### sub dbPathMode { my $self = shift; my $oManifestRef = shift; my $strTarget = shift; my $strPath = shift; my $strMode = shift; # Get the db path my $strDbPath = $self->manifestDbPathGet($oManifestRef, $strTarget, $strPath); testPathMode($strDbPath, $strMode); return $strDbPath; } #################################################################################################################################### # dbPathRemove # # Remove a path. #################################################################################################################################### sub dbPathRemove { my $self = shift; my $oManifestRef = shift; my $strTarget = shift; my $strPath = shift; # Get the db path my $strDbPath = $self->manifestDbPathGet($oManifestRef, $strTarget, $strPath); # Create the path testPathRemove($strDbPath); return $strDbPath; } 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Env/Host/HostDbTest.pm000066400000000000000000000443551362531507100256620ustar00rootroot00000000000000#################################################################################################################################### # HostDbTest.pm - Database host #################################################################################################################################### package pgBackRestTest::Env::Host::HostDbTest; use parent 'pgBackRestTest::Env::Host::HostDbCommonTest'; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use DBI; use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(basename); use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Common::Wait; use pgBackRest::DbVersion; use pgBackRest::Manifest; use pgBackRest::Protocol::Storage::Helper; use pgBackRest::Version; use pgBackRestTest::Env::Host::HostBackupTest; use pgBackRestTest::Env::Host::HostBaseTest; use pgBackRestTest::Env::Host::HostDbCommonTest; use pgBackRestTest::Common::ContainerTest; use pgBackRestTest::Common::RunTest; #################################################################################################################################### # Db defaults #################################################################################################################################### use constant HOST_DB_DEFAULT => 'postgres'; use constant HOST_DB_TIMEOUT => 30; #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Class name # Assign function parameters, defaults, and log debug info my ( $strOperation, $oParam, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, {name => 'oParam', required => false, trace => true}, ); # Get db version my $strDbVersion = testRunGet()->pgVersion(); my $self = $class->SUPER::new( { strImage => containerRepo() . ':' . testRunGet()->vm() . "-test", strBackupDestination => $$oParam{strBackupDestination}, oLogTest => $$oParam{oLogTest}, bStandby => $$oParam{bStandby}, bRepoLocal => $oParam->{bRepoLocal}, bRepoEncrypt => $oParam->{bRepoEncrypt}, }); bless $self, $class; # Set parameters $self->{strPgSocketPath} = $self->dbPath(); $self->{iPgPort} = defined($$oParam{bStandby}) && $$oParam{bStandby} ? 6544 : 6543; $self->{strPgLogPath} = $self->testPath(); $self->{strPgLogFile} = $self->pgLogPath() . '/postgresql.log'; # Get Db version if (defined($strDbVersion)) { my $strOutLog = $self->executeSimple($self->pgBinPath() . '/postgres --version'); my @stryVersionToken = split(/ /, $strOutLog); @stryVersionToken = split(/\./, $stryVersionToken[2]); my $strDbVersionActual = trim($stryVersionToken[0]) . (defined($stryVersionToken[1]) && trim($stryVersionToken[0]) < 10 ? '.' . trim($stryVersionToken[1]) : ''); # Warn if this is a devel/alpha/beta version my $strVersionRegExp = '(devel|((alpha|beta|rc)[0-9]+))$'; if ($strDbVersionActual =~ /$strVersionRegExp/) { my $strDevVersion = $strDbVersionActual; $strDbVersionActual =~ s/$strVersionRegExp//; $strDevVersion = substr($strDevVersion, length($strDbVersionActual)); if (!defined($$oParam{bStandby}) || !$$oParam{bStandby}) { &log(WARN, "Testing against ${strDbVersionActual} ${strDevVersion} version"); } } # Don't run unit tests for unsupported versions my @stryVersionSupport = versionSupport(); if ($strDbVersionActual < $stryVersionSupport[0]) { confess &log(ERROR, "only PostgreSQL version $stryVersionSupport[0] and up are supported"); } if ($strDbVersion ne $strDbVersionActual) { confess &log(ERROR, "actual database version ${strDbVersionActual} does not match expected version ${strDbVersion}"); } } # Create wal directory storageTest()->pathCreate($self->dbPath() . '/pg_' . $self->walId(), {strMode => '0700'}); # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self, trace => true} ); } #################################################################################################################################### # sqlConnect #################################################################################################################################### sub sqlConnect { my $self = shift; my $hParam = shift; # Set defaults my $iTimeout = defined($$hParam{iTimeout}) ? $$hParam{iTimeout} : HOST_DB_TIMEOUT; my $strDb = defined($$hParam{strDb}) ? $$hParam{strDb} : HOST_DB_DEFAULT; # If not connected if (!defined($self->{db}{$strDb}{hDb})) { # Retry until connection is successful my $oWait = waitInit($iTimeout); do { # Connect to the db (whether it is local or remote) $self->{db}{$strDb}{hDb} = DBI->connect( "dbi:Pg:dbname=${strDb};port=" . $self->pgPort() . ';host=' . $self->pgSocketPath(), $self->userGet(), undef, {AutoCommit => 0, RaiseError => 0, PrintError => 0}); return $self->{db}{$strDb}{hDb} if $self->{db}{$strDb}{hDb}; } while (!defined($self->{db}{$strDb}{hDb}) && waitMore($oWait)); # Error if unable to connect if (!defined($self->{db}{$strDb}{hDb})) { confess &log(ERROR, "unable to connect to PostgreSQL after ${iTimeout} second(s):\n" . $DBI::errstr, ERROR_DB_CONNECT); } } return $self->{db}{$strDb}{hDb}; } #################################################################################################################################### # sqlDisconnect #################################################################################################################################### sub sqlDisconnect { my $self = shift; my $hParam = shift; foreach my $strDb (keys(%{$self->{db}})) { if (defined($$hParam{$strDb}) && $$hParam{$strDb} ne $strDb) { next; } if (defined($self->{db}{$strDb}{hDb})) { $self->{db}{$strDb}{hDb}->disconnect(); undef($self->{db}{$strDb}{hDb}); } } } #################################################################################################################################### # sqlExecute #################################################################################################################################### sub sqlExecute { my $self = shift; my $strSql = shift; my $hParam = shift; # Set defaults my $bCheckPoint = defined($$hParam{bCheckPoint}) ? $$hParam{bCheckPoint} : false; my $bCommit = defined($$hParam{bCommit}) ? $$hParam{bCommit} : true; # Get the db handle my $hDb = $self->sqlConnect({strDb => $$hParam{strDb}}); # Set autocommit on/off $hDb->{AutoCommit} = defined($$hParam{bAutoCommit}) ? ($$hParam{bAutoCommit} ? true : false) : false; # Log and execute the statement &log(DETAIL, "SQL: ${strSql}"); my $hStatement = $hDb->prepare($strSql); $hStatement->execute() or confess &log(ERROR, "Unable to execute: ${strSql}\n" . $DBI::errstr); $hStatement->finish(); if ($bCommit && !$hDb->{AutoCommit}) { $self->sqlCommit(); } # Perform a checkpoint if requested if ($bCheckPoint) { $self->sqlExecute('checkpoint', {bCommit => false, bCheckPoint => false}); } # Set autocommit off $hDb->{AutoCommit} = 0; } #################################################################################################################################### # sqlSelect #################################################################################################################################### sub sqlSelect { my $self = shift; my $strSql = shift; my $hParam = shift; # Get the db handle my $hDb = $self->sqlConnect({strDb => $$hParam{strDb}}); # Log and execute the statement &log(DEBUG, (defined($$hParam{strDb}) ? "DB: $$hParam{strDb}, " : "") . "SQL: ${strSql}"); my $hStatement = $hDb->prepare($strSql); $hStatement = $hDb->prepare($strSql); $hStatement->execute() or confess &log(ERROR, "Unable to execute: ${strSql}\n" . $DBI::errstr); my @oyRow = $hStatement->fetchrow_array(); $hStatement->finish(); return @oyRow; } #################################################################################################################################### # sqlSelectOne #################################################################################################################################### sub sqlSelectOne { my $self = shift; my $strSql = shift; my $hParam = shift; return ($self->sqlSelect($strSql, $hParam))[0]; } #################################################################################################################################### # sqlSelectOneTest #################################################################################################################################### sub sqlSelectOneTest { my $self = shift; my $strSql = shift; my $strExpectedValue = shift; my $hParam = shift; # Set defaults my $iTimeout = defined($$hParam{iTimeout}) ? $$hParam{iTimeout} : HOST_DB_TIMEOUT; my $lStartTime = time(); my $strActualValue; do { $self->sqlConnect($hParam); $strActualValue = $self->sqlSelectOne($strSql, $hParam); if (defined($strActualValue) && $strActualValue eq $strExpectedValue) { return; } $self->sqlDisconnect(); } while (defined($iTimeout) && (time() - $lStartTime) <= $iTimeout); confess &log( ERROR, "expected value '${strExpectedValue}' from '${strSql}' but actual was '" . (defined($strActualValue) ? $strActualValue : '[undef]') . "'"); } #################################################################################################################################### # sqlCommit #################################################################################################################################### sub sqlCommit { my $self = shift; my $hParam = shift; my $bCheckPoint = defined($$hParam{bCheckPoint}) ? $$hParam{bCheckPoint} : false; $self->sqlExecute('commit', {bCommit => false, bCheckPoint => $bCheckPoint}); } #################################################################################################################################### # sqlWalRotate #################################################################################################################################### sub sqlWalRotate { my $self = shift; $self->sqlExecute('select pg_switch_' . $self->walId() . '()', {bCommit => false, bCheckPoint => false}); } #################################################################################################################################### # clusterCreate # # Create the PostgreSQL cluster and start it. #################################################################################################################################### sub clusterCreate { my $self = shift; my $hParam = shift; # Set defaults my $strWalPath = defined($$hParam{strWalPath}) ? $$hParam{strWalPath} : $self->dbPath() . '/pg_' . $self->walId(); # Don't link WAL directory for versions < 9.2 because some recovery scenarios won't work $self->executeSimple( $self->pgBinPath() . '/initdb ' . ($self->pgVersion() >= PG_VERSION_93 ? ' -k' : '') . ($self->pgVersion() >= PG_VERSION_92 ? ' --' . $self->walId() . "dir=${strWalPath}" : '') . ($self->pgVersion() >= PG_VERSION_11 ? ' --wal-segsize=1' : '') . ' --pgdata=' . $self->dbBasePath() . ' --auth=trust'); if (!$self->standby() && $self->pgVersion() >= PG_VERSION_HOT_STANDBY) { $self->executeSimple( "echo 'host replication replicator db-standby trust' >> " . $self->dbBasePath() . '/pg_hba.conf'); } $self->clusterStart( {bHotStandby => $$hParam{bHotStandby}, bArchive => $$hParam{bArchive}, bArchiveAlways => $$hParam{bArchiveAlways}, bArchiveInvalid => $$hParam{bArchiveInvalid}}); if (!$self->standby() && $self->pgVersion() >= PG_VERSION_HOT_STANDBY) { $self->sqlExecute("create user replicator replication", {bCommit =>true}); } } #################################################################################################################################### # clusterStart # # Start the PostgreSQL cluster with various test options. #################################################################################################################################### sub clusterStart { my $self = shift; my $hParam = shift; # Set defaults my $bHotStandby = defined($$hParam{bHotStandby}) ? $$hParam{bHotStandby} : false; my $bArchive = defined($$hParam{bArchive}) ? $$hParam{bArchive} : true; my $bArchiveAlways = defined($$hParam{bArchiveAlways}) ? $$hParam{bArchiveAlways} : false; my $bArchiveInvalid = defined($$hParam{bArchiveInvalid}) ? $$hParam{bArchiveInvalid} : false; my $bArchiveEnabled = defined($$hParam{bArchiveEnabled}) ? $$hParam{bArchiveEnabled} : true; # Make sure postgres is not running if (-e $self->dbBasePath() . '/postmaster.pid') { confess 'postmaster.pid exists'; } # Create the archive command my $strArchive = $self->backrestExe() . ' --stanza=' . ($bArchiveInvalid ? 'bogus' : $self->stanza()) . ' --config=' . $self->backrestConfig() . ' archive-push %p'; # Start the cluster my $strCommand = $self->pgBinPath() . '/pg_ctl start -o "-c port=' . $self->pgPort() . ($self->pgVersion() < PG_VERSION_95 ? ' -c checkpoint_segments=1' : ''); if ($bArchiveEnabled) { if ($self->pgVersion() >= PG_VERSION_95 && $bArchiveAlways) { $strCommand .= " -c archive_mode=always"; } else { $strCommand .= " -c archive_mode=on"; } } else { $strCommand .= " -c archive_mode=off"; } if ($bArchive) { $strCommand .= " -c archive_command='${strArchive}'"; } else { $strCommand .= " -c archive_command=true"; } if ($self->pgVersion() >= PG_VERSION_90) { $strCommand .= ' -c wal_level=hot_standby -c hot_standby=' . ($bHotStandby ? 'on' : 'off'); } $strCommand .= ($self->pgVersion() >= PG_VERSION_HOT_STANDBY ? ' -c max_wal_senders=3' : '') . ' -c listen_addresses=\'*\'' . ' -c log_directory=\'' . $self->pgLogPath() . "'" . ' -c log_filename=\'' . basename($self->pgLogFile()) . "'" . ' -c log_rotation_age=0' . ' -c log_rotation_size=0' . ' -c log_error_verbosity=verbose' . ' -c unix_socket_director' . ($self->pgVersion() < PG_VERSION_93 ? 'y=\'' : 'ies=\'') . $self->dbPath() . '\'"' . ' -D ' . $self->dbBasePath() . ' -l ' . $self->pgLogFile() . ' -s'; $self->executeSimple($strCommand); # Connect user session $self->sqlConnect(); } #################################################################################################################################### # clusterStop # # Stop the PostgreSQL cluster and optionally check for errors in the server log. #################################################################################################################################### sub clusterStop { my $self = shift; my $hParam = shift; # Set defaults my $bIgnoreLogError = defined($$hParam{bIgnoreLogError}) ? $$hParam{bIgnoreLogError} : false; # Disconnect user session $self->sqlDisconnect(); # Grep for errors in postgresql.log - this is done first because we want to ignore any errors that happen during shutdown if (!$bIgnoreLogError && storageTest()->exists($self->pgLogFile())) { $self->executeSimple( 'grep -v "FATAL\: 57P03\: the database system is starting up" ' . $self->pgLogFile() . ' | grep "ERROR\|FATAL"', {iExpectedExitStatus => 1}); } # If postmaster process is running then stop the cluster if (-e $self->dbBasePath() . '/' . DB_FILE_POSTMASTERPID) { $self->executeSimple($self->pgBinPath() . '/pg_ctl stop -D ' . $self->dbBasePath() . ' -w -s -m fast'); } # Remove the log file storageTest()->remove($self->pgLogFile(), {bIgnoreMissing => true}); } #################################################################################################################################### # clusterRestart # # Restart the PostgreSQL cluster. #################################################################################################################################### sub clusterRestart { my $self = shift; my $hParam = shift; $self->clusterStop($hParam); $self->clusterStart($hParam); } #################################################################################################################################### # Getters #################################################################################################################################### sub walId {return shift->pgVersion() >= PG_VERSION_10 ? 'wal' : 'xlog'} sub pgBinPath {return testRunGet()->pgBinPath()} sub pgLogFile {return shift->{strPgLogFile}} sub pgLogPath {return shift->{strPgLogPath}} sub pgPort {return shift->{iPgPort}} sub pgSocketPath {return shift->{strPgSocketPath}} sub pgVersion {return testRunGet()->pgVersion()} 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Env/Host/HostS3Test.pm000066400000000000000000000072311362531507100256120ustar00rootroot00000000000000#################################################################################################################################### # S3 Test Host #################################################################################################################################### package pgBackRestTest::Env::Host::HostS3Test; use parent 'pgBackRestTest::Common::HostTest'; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Cwd qw(abs_path); use Exporter qw(import); our @EXPORT = qw(); use File::Basename qw(dirname); use Storable qw(dclone); use pgBackRest::Backup::Common; use pgBackRest::Common::Exception; use pgBackRest::Common::Ini; use pgBackRest::Common::Log; use pgBackRest::Common::Wait; use pgBackRest::Config::Config; use pgBackRest::Manifest; use pgBackRest::Protocol::Storage::Helper; use pgBackRest::Version; use pgBackRestTest::Env::Host::HostBaseTest; use pgBackRestTest::Common::ContainerTest; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::HostGroupTest; use pgBackRestTest::Common::RunTest; #################################################################################################################################### # S3 defaults #################################################################################################################################### use constant HOST_S3_ACCESS_KEY => 'accessKey1'; push @EXPORT, qw(HOST_S3_ACCESS_KEY); use constant HOST_S3_ACCESS_SECRET_KEY => 'verySecretKey1'; push @EXPORT, qw(HOST_S3_ACCESS_SECRET_KEY); use constant HOST_S3_BUCKET => 'pgbackrest-dev'; push @EXPORT, qw(HOST_S3_BUCKET); use constant HOST_S3_ENDPOINT => 's3.amazonaws.com'; push @EXPORT, qw(HOST_S3_ENDPOINT); use constant HOST_S3_REGION => 'us-east-1'; push @EXPORT, qw(HOST_S3_REGION); #################################################################################################################################### # new #################################################################################################################################### sub new { my $class = shift; # Class name # Assign function parameters, defaults, and log debug info my ( $strOperation, ) = logDebugParam ( __PACKAGE__ . '->new', \@_, ); # Create the host my $strProjectPath = dirname(dirname(abs_path($0))); my $strFakeCertPath = "${strProjectPath}/doc/resource/fake-cert"; my $self = $class->SUPER::new( HOST_S3, 'test-' . testRunGet()->vmId() . '-s3-server', 'minio/minio:RELEASE.2019-10-12T01-39-57Z', 'root', 'u18', ["${strFakeCertPath}/s3-server.crt:/root/.minio/certs/public.crt:ro", "${strFakeCertPath}/s3-server.key:/root/.minio/certs/private.key:ro"], '-e MINIO_REGION=' . HOST_S3_REGION . ' -e MINIO_DOMAIN=' . HOST_S3_ENDPOINT . ' -e MINIO_BROWSER=off' . ' -e MINIO_ACCESS_KEY=' . HOST_S3_ACCESS_KEY . ' -e MINIO_SECRET_KEY=' . HOST_S3_ACCESS_SECRET_KEY, 'server /data --address :443', false); bless $self, $class; # Return from function and log return values if any return logDebugReturn ( $strOperation, {name => 'self', value => $self, trace => true} ); } 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Env/HostEnvTest.pm000066400000000000000000000461771362531507100251540ustar00rootroot00000000000000#################################################################################################################################### # FullCommonTest.pm - Common code for backup tests #################################################################################################################################### package pgBackRestTest::Env::HostEnvTest; use parent 'pgBackRestTest::Env::ConfigEnvTest'; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use Exporter qw(import); our @EXPORT = qw(); use Storable qw(dclone); use pgBackRest::Archive::Common; use pgBackRest::Common::Log; use pgBackRest::Config::Config; use pgBackRest::DbVersion; use pgBackRest::LibC qw(:crypto); use pgBackRest::Protocol::Storage::Helper; use pgBackRestTest::Env::Host::HostBackupTest; use pgBackRestTest::Env::Host::HostBaseTest; use pgBackRestTest::Env::Host::HostDbCommonTest; use pgBackRestTest::Env::Host::HostDbTest; use pgBackRestTest::Env::Host::HostDbSyntheticTest; use pgBackRestTest::Env::Host::HostS3Test; use pgBackRestTest::Common::ContainerTest; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::HostGroupTest; use pgBackRestTest::Common::RunTest; #################################################################################################################################### # Constants #################################################################################################################################### use constant ENCRYPTION_KEY_ARCHIVE => 'archive'; push @EXPORT, qw(ENCRYPTION_KEY_ARCHIVE); use constant ENCRYPTION_KEY_MANIFEST => 'manifest'; push @EXPORT, qw(ENCRYPTION_KEY_MANIFEST); use constant ENCRYPTION_KEY_BACKUPSET => 'backupset'; push @EXPORT, qw(ENCRYPTION_KEY_BACKUPSET); #################################################################################################################################### # setup #################################################################################################################################### sub setup { my $self = shift; my $bSynthetic = shift; my $oLogTest = shift; my $oConfigParam = shift; # Start S3 server first since it takes the longest #------------------------------------------------------------------------------------------------------------------------------- my $oHostS3; if ($oConfigParam->{bS3}) { $oHostS3 = new pgBackRestTest::Env::Host::HostS3Test(); } # Get host group my $oHostGroup = hostGroupGet(); # Create the backup host my $strBackupDestination; my $bHostBackup = defined($$oConfigParam{bHostBackup}) ? $$oConfigParam{bHostBackup} : false; my $oHostBackup = undef; my $bRepoEncrypt = defined($$oConfigParam{bRepoEncrypt}) ? $$oConfigParam{bRepoEncrypt} : false; if ($bHostBackup) { $strBackupDestination = defined($$oConfigParam{strBackupDestination}) ? $$oConfigParam{strBackupDestination} : HOST_BACKUP; $oHostBackup = new pgBackRestTest::Env::Host::HostBackupTest( {strBackupDestination => $strBackupDestination, bSynthetic => $bSynthetic, oLogTest => $oLogTest, bRepoLocal => !$oConfigParam->{bS3}, bRepoEncrypt => $bRepoEncrypt}); $oHostGroup->hostAdd($oHostBackup); } else { $strBackupDestination = defined($$oConfigParam{strBackupDestination}) ? $$oConfigParam{strBackupDestination} : HOST_DB_MASTER; } # Create the db-master host my $oHostDbMaster = undef; if ($bSynthetic) { $oHostDbMaster = new pgBackRestTest::Env::Host::HostDbSyntheticTest( {strBackupDestination => $strBackupDestination, oLogTest => $oLogTest, bRepoLocal => !$oConfigParam->{bS3}, bRepoEncrypt => $bRepoEncrypt}); } else { $oHostDbMaster = new pgBackRestTest::Env::Host::HostDbTest( {strBackupDestination => $strBackupDestination, oLogTest => $oLogTest, bRepoLocal => !$oConfigParam->{bS3}, bRepoEncrypt => $bRepoEncrypt}); } $oHostGroup->hostAdd($oHostDbMaster); # Create the db-standby host my $oHostDbStandby = undef; if (defined($$oConfigParam{bStandby}) && $$oConfigParam{bStandby}) { $oHostDbStandby = new pgBackRestTest::Env::Host::HostDbTest( {strBackupDestination => $strBackupDestination, bStandby => true, oLogTest => $oLogTest, bRepoLocal => !$oConfigParam->{bS3}}); $oHostGroup->hostAdd($oHostDbStandby); } # Finalize S3 server #------------------------------------------------------------------------------------------------------------------------------- if (defined($oHostS3)) { $oHostGroup->hostAdd($oHostS3, {rstryHostName => ['pgbackrest-dev.s3.amazonaws.com', 's3.amazonaws.com']}); } # Create db master config $oHostDbMaster->configCreate({ strBackupSource => $$oConfigParam{strBackupSource}, bCompress => $$oConfigParam{bCompress}, bHardlink => $bHostBackup ? undef : $$oConfigParam{bHardLink}, bArchiveAsync => $$oConfigParam{bArchiveAsync}, bS3 => $$oConfigParam{bS3}}); # Create backup config if backup host exists if (defined($oHostBackup)) { $oHostBackup->configCreate({ bCompress => $$oConfigParam{bCompress}, bHardlink => $$oConfigParam{bHardLink}, bS3 => $$oConfigParam{bS3}}); } # If backup host is not defined set it to db-master else { $oHostBackup = $strBackupDestination eq HOST_DB_MASTER ? $oHostDbMaster : $oHostDbStandby; } # Create db-standby config if (defined($oHostDbStandby)) { $oHostDbStandby->configCreate({ strBackupSource => $$oConfigParam{strBackupSource}, bCompress => $$oConfigParam{bCompress}, bHardlink => $bHostBackup ? undef : $$oConfigParam{bHardLink}, bArchiveAsync => $$oConfigParam{bArchiveAsync}}); } # Set options needed for storage helper $self->optionTestSet(CFGOPT_PG_PATH, $oHostDbMaster->dbBasePath()); $self->optionTestSet(CFGOPT_REPO_PATH, $oHostBackup->repoPath()); $self->optionTestSet(CFGOPT_STANZA, $self->stanza()); # Configure the repo to be encrypted if required if ($bRepoEncrypt) { $self->optionTestSet(CFGOPT_REPO_CIPHER_TYPE, CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC); $self->optionTestSet(CFGOPT_REPO_CIPHER_PASS, 'x'); } # Set S3 options if (defined($oHostS3)) { $self->optionTestSet(CFGOPT_REPO_TYPE, CFGOPTVAL_REPO_TYPE_S3); $self->optionTestSet(CFGOPT_REPO_S3_KEY, HOST_S3_ACCESS_KEY); $self->optionTestSet(CFGOPT_REPO_S3_KEY_SECRET, HOST_S3_ACCESS_SECRET_KEY); $self->optionTestSet(CFGOPT_REPO_S3_BUCKET, HOST_S3_BUCKET); $self->optionTestSet(CFGOPT_REPO_S3_ENDPOINT, HOST_S3_ENDPOINT); $self->optionTestSet(CFGOPT_REPO_S3_REGION, HOST_S3_REGION); $self->optionTestSet(CFGOPT_REPO_S3_HOST, $oHostS3->ipGet()); $self->optionTestSetBool(CFGOPT_REPO_S3_VERIFY_TLS, false); } $self->configTestLoad(CFGCMD_ARCHIVE_PUSH); # Create S3 bucket if (defined($oHostS3)) { storageRepo()->{oStorageC}->bucketCreate(); } return $oHostDbMaster, $oHostDbStandby, $oHostBackup, $oHostS3; } #################################################################################################################################### # Generate database system id for the db version #################################################################################################################################### sub dbSysId { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPgVersion, ) = logDebugParam ( __PACKAGE__ . '->dbSysId', \@_, {name => 'strPgVersion', trace => true}, ); return (1000000000000000000 + ($strPgVersion * 10)); } #################################################################################################################################### # Get database catalog version for the db version #################################################################################################################################### sub dbCatalogVersion { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPgVersion, ) = logDebugParam ( __PACKAGE__ . '->sysId', \@_, {name => 'strPgVersion', trace => true}, ); my $hCatalogVersion = { &PG_VERSION_83 => 200711281, &PG_VERSION_84 => 200904091, &PG_VERSION_90 => 201008051, &PG_VERSION_91 => 201105231, &PG_VERSION_92 => 201204301, &PG_VERSION_93 => 201306121, &PG_VERSION_94 => 201409291, &PG_VERSION_95 => 201510051, &PG_VERSION_96 => 201608131, &PG_VERSION_10 => 201707211, &PG_VERSION_11 => 201806231, &PG_VERSION_12 => 201909212, }; if (!defined($hCatalogVersion->{$strPgVersion})) { confess &log(ASSERT, "no catalog version defined for pg version ${strPgVersion}"); } return $hCatalogVersion->{$strPgVersion}; } #################################################################################################################################### # Get database control version for the db version #################################################################################################################################### sub dbControlVersion { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPgVersion, ) = logDebugParam ( __PACKAGE__ . '->dbControlVersion', \@_, {name => 'strPgVersion', trace => true}, ); my $hControlVersion = { &PG_VERSION_83 => 833, &PG_VERSION_84 => 843, &PG_VERSION_90 => 903, &PG_VERSION_91 => 903, &PG_VERSION_92 => 922, &PG_VERSION_93 => 937, &PG_VERSION_94 => 942, &PG_VERSION_95 => 942, &PG_VERSION_96 => 960, &PG_VERSION_10 => 1002, &PG_VERSION_11 => 1100, &PG_VERSION_12 => 1201, }; if (!defined($hControlVersion->{$strPgVersion})) { confess &log(ASSERT, "no control version defined for pg version ${strPgVersion}"); } return $hControlVersion->{$strPgVersion}; } #################################################################################################################################### # Generate control file content #################################################################################################################################### sub controlGenerateContent { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPgVersion, ) = logDebugParam ( __PACKAGE__ . '->controlGenerateContent', \@_, {name => 'strPgVersion', trace => true}, ); my $tControlContent = pack('Q', $self->dbSysId($strPgVersion)); $tControlContent .= pack('L', $self->dbControlVersion($strPgVersion)); $tControlContent .= pack('L', $self->dbCatalogVersion($strPgVersion)); # Offset to page size by architecture bits and version my $rhOffsetToPageSize = { 32 => { '8.3' => 96 - length($tControlContent), '8.4' => 104 - length($tControlContent), '9.0' => 140 - length($tControlContent), '9.1' => 140 - length($tControlContent), '9.2' => 156 - length($tControlContent), '9.3' => 180 - length($tControlContent), '9.4' => 188 - length($tControlContent), '9.5' => 200 - length($tControlContent), '9.6' => 200 - length($tControlContent), '10' => 200 - length($tControlContent), '11' => 192 - length($tControlContent), '12' => 196 - length($tControlContent), }, 64 => { '8.3' => 112 - length($tControlContent), '8.4' => 112 - length($tControlContent), '9.0' => 152 - length($tControlContent), '9.1' => 152 - length($tControlContent), '9.2' => 168 - length($tControlContent), '9.3' => 192 - length($tControlContent), '9.4' => 200 - length($tControlContent), '9.5' => 216 - length($tControlContent), '9.6' => 216 - length($tControlContent), '10' => 216 - length($tControlContent), '11' => 208 - length($tControlContent), '12' => 212 - length($tControlContent), }, }; # Fill up to page size and set page size $tControlContent .= ('C' x $rhOffsetToPageSize->{$self->archBits()}{$strPgVersion}); $tControlContent .= pack('L', 8192); # Fill up to wal segment size and set wal segment size $tControlContent .= ('C' x 8); $tControlContent .= pack('L', 16 * 1024 * 1024); # Pad bytes $tControlContent .= ('C' x (8192 - length($tControlContent))); return \$tControlContent; } #################################################################################################################################### # Generate control file and write to disk #################################################################################################################################### sub controlGenerate { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strDbPath, $strPgVersion, ) = logDebugParam ( __PACKAGE__ . '->controlGenerate', \@_, {name => 'strDbPath', trace => true}, {name => 'strPgVersion', trace => true}, ); storageTest()->put("${strDbPath}/global/pg_control", $self->controlGenerateContent($strPgVersion)); } #################################################################################################################################### # walSegment # # Generate name of WAL segment from component parts. #################################################################################################################################### sub walSegment { my $self = shift; my $iTimeline = shift; my $iMajor = shift; my $iMinor = shift; return uc(sprintf('%08x%08x%08x', $iTimeline, $iMajor, $iMinor)); } #################################################################################################################################### # Generate WAL file content #################################################################################################################################### sub walGenerateContent { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPgVersion, $iSourceNo, ) = logDebugParam ( __PACKAGE__ . '->walGenerateContent', \@_, {name => 'strPgVersion', trace => true}, {name => 'iSourceNo', optional => true, default => 1, trace => true}, ); # Get WAL magic for the PG version my $hWalMagic = { &PG_VERSION_83 => hex('0xD062'), &PG_VERSION_84 => hex('0xD063'), &PG_VERSION_90 => hex('0xD064'), &PG_VERSION_91 => hex('0xD066'), &PG_VERSION_92 => hex('0xD071'), &PG_VERSION_93 => hex('0xD075'), &PG_VERSION_94 => hex('0xD07E'), &PG_VERSION_95 => hex('0xD087'), &PG_VERSION_96 => hex('0xD093'), &PG_VERSION_10 => hex('0xD097'), &PG_VERSION_11 => hex('0xD098'), &PG_VERSION_12 => hex('0xD101'), }; my $tWalContent = pack('S', $hWalMagic->{$strPgVersion}); # Indicate that the long header is present $tWalContent .= pack('S', 2); # Add junk (H for header) for the bytes that won't be read by the tests my $iOffset = 12 + ($strPgVersion >= PG_VERSION_93 ? testRunGet()->archBits() / 8 : 0); $tWalContent .= ('H' x $iOffset); # Add the system identifier $tWalContent .= pack('Q', $self->dbSysId($strPgVersion)); # Add the source number to produce WAL segments with different checksums $tWalContent .= pack('S', $iSourceNo); # Pad out to the required size (B for body) $tWalContent .= ('B' x (PG_WAL_SEGMENT_SIZE - length($tWalContent))); return \$tWalContent; } #################################################################################################################################### # Generate WAL file content checksum #################################################################################################################################### sub walGenerateContentChecksum { my $self = shift; # Assign function parameters, defaults, and log debug info my ( $strOperation, $strPgVersion, $hParam, ) = logDebugParam ( __PACKAGE__ . '->walGenerateContent', \@_, {name => 'strPgVersion', trace => true}, {name => 'hParam', required => false, trace => true}, ); return cryptoHashOne('sha1', ${$self->walGenerateContent($strPgVersion, $hParam)}); } #################################################################################################################################### # walGenerate # # Generate a WAL segment and ready file for testing. #################################################################################################################################### sub walGenerate { my $self = shift; my $strWalPath = shift; my $strPgVersion = shift; my $iSourceNo = shift; my $strWalSegment = shift; my $bPartial = shift; my $bChecksum = shift; my $bReady = shift; my $rtWalContent = $self->walGenerateContent($strPgVersion, {iSourceNo => $iSourceNo}); my $strWalFile = "${strWalPath}/${strWalSegment}" . ($bChecksum ? '-' . cryptoHashOne('sha1', $rtWalContent) : '') . (defined($bPartial) && $bPartial ? '.partial' : ''); # Put the WAL segment and the ready file storageTest()->put($strWalFile, $rtWalContent); if (!defined($bReady) || $bReady) { storageTest()->put("${strWalPath}/archive_status/${strWalSegment}.ready"); } return $strWalFile; } #################################################################################################################################### # walRemove # # Remove WAL file and ready file. #################################################################################################################################### sub walRemove { my $self = shift; my $strWalPath = shift; my $strWalFile = shift; storageTest()->remove("$self->{strWalPath}/${strWalFile}"); storageTest()->remove("$self->{strWalPath}/archive_status/${strWalFile}.ready"); } 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Module/000077500000000000000000000000001362531507100230465ustar00rootroot00000000000000pgbackrest-release-2.24/test/lib/pgBackRestTest/Module/Mock/000077500000000000000000000000001362531507100237375ustar00rootroot00000000000000pgbackrest-release-2.24/test/lib/pgBackRestTest/Module/Mock/MockAllTest.pm000066400000000000000000001526641362531507100264750ustar00rootroot00000000000000#################################################################################################################################### # Test All Commands on Mock Data #################################################################################################################################### package pgBackRestTest::Module::Mock::MockAllTest; use parent 'pgBackRestTest::Env::HostEnvTest'; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use File::Basename qw(basename dirname); use pgBackRest::Archive::Info; use pgBackRest::Backup::Common; use pgBackRest::Backup::Info; use pgBackRest::DbVersion; use pgBackRest::Common::Exception; use pgBackRest::Common::Ini; use pgBackRest::Common::Log; use pgBackRest::Common::Wait; use pgBackRest::Config::Config; use pgBackRest::InfoCommon; use pgBackRest::LibC qw(:checksum); use pgBackRest::Manifest; use pgBackRest::Protocol::Storage::Helper; use pgBackRest::Storage::Helper; use pgBackRest::Version; use pgBackRestTest::Common::ContainerTest; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::FileTest; use pgBackRestTest::Common::RunTest; use pgBackRestTest::Common::VmTest; use pgBackRestTest::Env::Host::HostBackupTest; use pgBackRestTest::Env::Host::HostS3Test; use pgBackRestTest::Env::HostEnvTest; #################################################################################################################################### # Build PostgreSQL pages for testing #################################################################################################################################### sub pageBuild { my $tPageSource = shift; my $iBlockNo = shift; my $iWalId = shift; my $iWalOffset = shift; my $tPage = defined($iWalId) ? pack('I', $iWalId) . pack('I', $iWalOffset) . substr($tPageSource, 8) : $tPageSource; my $iChecksum = pageChecksum($tPage, $iBlockNo, length($tPage)); return substr($tPage, 0, 8) . pack('S', $iChecksum) . substr($tPage, 10); } #################################################################################################################################### # run #################################################################################################################################### sub run { my $self = shift; foreach my $rhRun ( {vm => VM1, remote => false, s3 => true, encrypt => false, delta => true}, {vm => VM1, remote => true, s3 => false, encrypt => true, delta => false}, {vm => VM2, remote => false, s3 => false, encrypt => true, delta => true}, {vm => VM2, remote => true, s3 => true, encrypt => false, delta => false}, {vm => VM3, remote => false, s3 => false, encrypt => false, delta => true}, {vm => VM3, remote => true, s3 => true, encrypt => true, delta => false}, {vm => VM4, remote => false, s3 => false, encrypt => false, delta => false}, {vm => VM4, remote => true, s3 => true, encrypt => true, delta => true}, ) { # Only run tests for this vm next if ($rhRun->{vm} ne vmTest($self->vm())); # Increment the run, log, and decide whether this unit test should be run my $bRemote = $rhRun->{remote}; my $bS3 = $rhRun->{s3}; my $bEncrypt = $rhRun->{encrypt}; my $bDeltaBackup = $rhRun->{delta}; # Increment the run, log, and decide whether this unit test should be run if (!$self->begin("rmt ${bRemote}, s3 ${bS3}, enc ${bEncrypt}, delta ${bDeltaBackup}")) {next} # Create hosts, file object, and config my ($oHostDbMaster, $oHostDbStandby, $oHostBackup, $oHostS3) = $self->setup( true, $self->expect(), {bHostBackup => $bRemote, bCompress => false, bS3 => $bS3, bRepoEncrypt => $bEncrypt}); # If S3 set process max to 2. This seems like the best place for parallel testing since it will help speed S3 processing # without slowing down the other tests too much. if ($bS3) { $oHostBackup->configUpdate({&CFGDEF_SECTION_GLOBAL => {cfgOptionName(CFGOPT_PROCESS_MAX) => 2}}); $oHostDbMaster->configUpdate({&CFGDEF_SECTION_GLOBAL => {cfgOptionName(CFGOPT_PROCESS_MAX) => 2}}); # Reduce log level to warn because parallel tests do not create deterministic logs $oHostBackup->configUpdate({&CFGDEF_SECTION_GLOBAL => {cfgOptionName(CFGOPT_LOG_LEVEL_CONSOLE) => lc(WARN)}}); $oHostDbMaster->configUpdate({&CFGDEF_SECTION_GLOBAL => {cfgOptionName(CFGOPT_LOG_LEVEL_CONSOLE) => lc(WARN)}}); } # Get base time my $lTime = time() - 10000; # Build the manifest my %oManifest; $oManifest{&INI_SECTION_BACKREST}{&INI_KEY_VERSION} = PROJECT_VERSION; $oManifest{&INI_SECTION_BACKREST}{&INI_KEY_FORMAT} = REPOSITORY_FORMAT; $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_ARCHIVE_CHECK} = JSON::PP::false; $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_ARCHIVE_COPY} = JSON::PP::true; $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_BACKUP_STANDBY} = JSON::PP::false; $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_BUFFER_SIZE} = 16384; $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_CHECKSUM_PAGE} = JSON::PP::true; $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_COMPRESS} = JSON::PP::false; $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_COMPRESS_LEVEL} = 3; $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_COMPRESS_LEVEL_NETWORK} = $bRemote ? 1 : 3; $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_HARDLINK} = JSON::PP::false; $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_ONLINE} = JSON::PP::false; $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_PROCESS_MAX} = $bS3 ? 2 : 1; $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_DELTA} = JSON::PP::false; if ($bEncrypt) { $oManifest{&INI_SECTION_CIPHER}{&INI_KEY_CIPHER_PASS} = 'REPLACEME'; } $oManifest{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_CATALOG} = 201409291; $oManifest{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_CONTROL} = 942; $oManifest{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_SYSTEM_ID} = 1000000000000000094; $oManifest{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_DB_VERSION} = PG_VERSION_94; $oManifest{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_DB_ID} = 1; $oManifest{&MANIFEST_SECTION_BACKUP_TARGET}{&MANIFEST_TARGET_PGDATA}{&MANIFEST_SUBKEY_PATH} = $oHostDbMaster->dbBasePath(); $oManifest{&MANIFEST_SECTION_BACKUP_TARGET}{&MANIFEST_TARGET_PGDATA}{&MANIFEST_SUBKEY_TYPE} = MANIFEST_VALUE_PATH; $oHostDbMaster->manifestPathCreate(\%oManifest, MANIFEST_TARGET_PGDATA); $oHostDbMaster->manifestFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_FILE_PGVERSION, PG_VERSION_94, '184473f470864e067ee3a22e64b47b0a1c356f29', $lTime, undef, true); # Load sample page my $tBasePage = ${storageLocal()->get($self->dataPath() . '/page.bin')}; my $iBasePageChecksum = 0x1B99; # Create base path $oHostDbMaster->manifestPathCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'base'); $oHostDbMaster->manifestPathCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'base/1'); $oHostDbMaster->manifestFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'base/1/12000', $tBasePage, '22c98d248ff548311eda88559e4a8405ed77c003', $lTime); $oHostDbMaster->manifestFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'base/1/' . DB_FILE_PGVERSION, PG_VERSION_94, '184473f470864e067ee3a22e64b47b0a1c356f29', $lTime, '660'); if (!$bRemote) { $oHostDbMaster->executeSimple( 'chown 7777 ' . $oHostDbMaster->dbBasePath() . '/base/1/' . DB_FILE_PGVERSION, undef, 'root'); $oManifest{&MANIFEST_SECTION_TARGET_FILE}{MANIFEST_TARGET_PGDATA . '/base/1/' . DB_FILE_PGVERSION} {&MANIFEST_SUBKEY_USER} = INI_FALSE; } my $tPageInvalid17000 = $tBasePage . $tBasePage; $oHostDbMaster->manifestPathCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'base/16384'); $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGDATA, 'base/16384/17000', $tPageInvalid17000, 'e0101dd8ffb910c9c202ca35b5f828bcb9697bed', $lTime, undef, undef, '1'); $oHostDbMaster->manifestFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'base/16384/' . DB_FILE_PGVERSION, PG_VERSION_94, '184473f470864e067ee3a22e64b47b0a1c356f29', $lTime); if (!$bRemote) { $oHostDbMaster->executeSimple( 'chown :7777 ' . $oHostDbMaster->dbBasePath() . '/base/16384/' . DB_FILE_PGVERSION, undef, 'root'); $oManifest{&MANIFEST_SECTION_TARGET_FILE}{MANIFEST_TARGET_PGDATA . '/base/16384/' . DB_FILE_PGVERSION} {&MANIFEST_SUBKEY_GROUP} = INI_FALSE; } $oHostDbMaster->manifestPathCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'base/32768'); my $tPageValid = pageBuild($tBasePage, 0) . pageBuild($tBasePage, 1) . pageBuild($tBasePage, 2) . pageBuild($tBasePage, 0, 0xFFFFFFFF, 0xFFFFFFFF); $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGDATA, 'base/32768/33000', $tPageValid, '7a16d165e4775f7c92e8cdf60c0af57313f0bf90', $lTime); my $iBlockOffset = 32767 * 131072; my $tPageValidSeg32767 = pageBuild($tBasePage, $iBlockOffset + 0) . pageBuild($tBasePage, $iBlockOffset + 1) . ("\0" x 8192) . pageBuild($tBasePage, 0, 0xFFFFFFFF, 0xFFFFFFFF); $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGDATA, 'base/32768/33000.32767', $tPageValidSeg32767, '6e99b589e550e68e934fd235ccba59fe5b592a9e', $lTime); my $tPageInvalid33001 = pageBuild($tBasePage, 1) . pageBuild($tBasePage, 1) . pageBuild($tBasePage, 2) . pageBuild($tBasePage, 0) . pageBuild($tBasePage, 0) . pageBuild($tBasePage, 0) . pageBuild($tBasePage, 6) . pageBuild($tBasePage, 0); $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGDATA, 'base/32768/33001', $tPageInvalid33001, '6bf316f11d28c28914ea9be92c00de9bea6d9a6b', $lTime, undef, undef, '0, [3, 5], 7'); $oHostDbMaster->manifestFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'base/32768/' . DB_FILE_PGVERSION, PG_VERSION_94, '184473f470864e067ee3a22e64b47b0a1c356f29', $lTime); # Create global path $oHostDbMaster->manifestPathCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'global'); $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGDATA, DB_FILE_PGCONTROL, '[replaceme]', $self->archBits() == 32 ? '8107e546c59c72a8c1818fc3610d7cc1e5623660' : '4c77c900f7af0d9ab13fa9982051a42e0b637f6c', $lTime - 100, undef, true); # Copy pg_control $self->controlGenerate($oHostDbMaster->dbBasePath(), PG_VERSION_94); utime($lTime - 100, $lTime - 100, $oHostDbMaster->dbBasePath() . '/' . DB_FILE_PGCONTROL) or confess &log(ERROR, "unable to set time"); $oManifest{&MANIFEST_SECTION_TARGET_FILE}{MANIFEST_TARGET_PGDATA . '/' . DB_FILE_PGCONTROL} {&MANIFEST_SUBKEY_SIZE} = 8192; # Create tablespace path $oHostDbMaster->manifestPathCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_PATH_PGTBLSPC); # Create paths/files to ignore if (!$bRemote) { # Create temp dir and file that will be ignored $oHostDbMaster->dbPathCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'base/' . DB_FILE_PREFIX_TMP); $oHostDbMaster->dbFileCreate( \%oManifest, MANIFEST_TARGET_PGDATA, 'base/' . DB_FILE_PREFIX_TMP . '/' . DB_FILE_PREFIX_TMP . '.1', 'IGNORE'); # Create pg_dynshmem dir and file - only file will be ignored $oHostDbMaster->manifestPathCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_PATH_PGDYNSHMEM); $oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_PATH_PGDYNSHMEM . '/anything.tmp', 'IGNORE'); # Create pg_notify dir and file - only file will be ignored $oHostDbMaster->manifestPathCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_PATH_PGNOTIFY); $oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_PATH_PGNOTIFY . '/anything.tmp', 'IGNORE'); # Create pg_replslot dir and file - only file will be ignored $oHostDbMaster->manifestPathCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_PATH_PGREPLSLOT); $oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_PATH_PGREPLSLOT . '/anything.tmp', 'IGNORE'); # Create pg_serial dir and file - only file will be ignored $oHostDbMaster->manifestPathCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_PATH_PGSERIAL); $oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_PATH_PGSERIAL . '/anything.tmp', 'IGNORE'); # Create pg_snapshots dir and file - only file will be ignored $oHostDbMaster->manifestPathCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_PATH_PGSNAPSHOTS); $oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_PATH_PGSNAPSHOTS . '/anything.tmp', 'IGNORE'); # Create pg_stat_tmp dir and file - only file will be ignored $oHostDbMaster->manifestPathCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_PATH_PGSTATTMP); $oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_PATH_PGSTATTMP . '/anything.tmp', 'IGNORE'); # Create pg_subtrans dir and file - only file will be ignored $oHostDbMaster->manifestPathCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_PATH_PGSUBTRANS); $oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_PATH_PGSUBTRANS . '/anything.tmp', 'IGNORE'); # More files to ignore $oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_FILE_POSTGRESQLAUTOCONFTMP, 'IGNORE'); $oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_FILE_POSTMASTEROPTS, 'IGNORE'); $oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_FILE_RECOVERYCONF, 'IGNORE'); $oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, DB_FILE_RECOVERYDONE, 'IGNORE'); $oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'global/' . DB_FILE_PGINTERNALINIT, 'IGNORE'); # Unlog and temp files to ignore (unlog _init will NOT be ignored) $oHostDbMaster->manifestFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'base/32768/44000_init', $tPageValid, '7a16d165e4775f7c92e8cdf60c0af57313f0bf90', $lTime); $oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'base/32768/44000', 'IGNORE'); $oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'base/32768/t333_44000', 'IGNORE'); } # Help and Version. These have complete unit tests, so here just make sure there is output from the command line. #--------------------------------------------------------------------------------------------------------------------------- if ($self->runCurrent() == 1) { $oHostDbMaster->executeSimple($self->backrestExe() . " version", {oLogTest => $self->expect()}); $oHostDbMaster->executeSimple($self->backrestExe() . " help version", {oLogTest => $self->expect()}); } # Full backup #--------------------------------------------------------------------------------------------------------------------------- my $strType = CFGOPTVAL_BACKUP_TYPE_FULL; my $strOptionalParam = '--manifest-save-threshold=3'; my $strTestPoint; # Create the archive info file $oHostBackup->stanzaCreate('create required data for stanza', {strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)}); # Create a link to postgresql.conf storageTest()->pathCreate($oHostDbMaster->dbPath() . '/pg_config', {strMode => '0700', bCreateParent => true}); testFileCreate( $oHostDbMaster->dbPath() . '/pg_config/postgresql.conf', "listen_addresses = *\n", $lTime - 100); testLinkCreate($oHostDbMaster->dbPath() . '/pg_config/postgresql.conf.link', './postgresql.conf'); $oHostDbMaster->manifestLinkCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'postgresql.conf', '../pg_config/postgresql.conf', true); # Create a link to pg_hba.conf testFileCreate( $oHostDbMaster->dbPath() . '/pg_config/pg_hba.conf', "CONTENTS\n", $lTime - 100); testLinkCreate($oHostDbMaster->dbPath() . '/pg_config/pg_hba.conf.link', './pg_hba.conf'); $oHostDbMaster->manifestLinkCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'pg_hba.conf', '../pg_config/pg_hba.conf', true); # Create stat directory link and file storageTest()->pathCreate($oHostDbMaster->dbPath() . '/pg_stat', {strMode => '0700', bCreateParent => true}); $oHostDbMaster->manifestLinkCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'pg_stat', '../pg_stat'); $oHostDbMaster->manifestFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA . '/pg_stat', 'global.stat', 'stats', 'e350d5ce0153f3e22d5db21cf2a4eff00f3ee877', $lTime - 100, undef, true); $oHostDbMaster->manifestPathCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'pg_clog'); # Create file with special characters $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGDATA, 'special-!_.*\'()&!@;:+,?', undef, undef, $lTime, undef, true); $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_PROCESS_MAX} = 1; my $strFullBackup = $oHostBackup->backup( $strType, 'create pg_stat link, pg_clog dir', {oExpectedManifest => \%oManifest, strOptionalParam => $strOptionalParam . # Pass ssh path to make sure it is used ($bRemote ? ' --' . cfgOptionName(CFGOPT_CMD_SSH) . '=/usr/bin/ssh' : '') . # Pass bogus ssh port to make sure it is passed through the protocol layer (it won't be used) ($bRemote ? ' --' . cfgOptionName(CFGOPT_PG_PORT) . '=9999' : '') . # Pass bogus socket path to make sure it is passed through the protocol layer (it won't be used) ($bRemote ? ' --' . cfgOptionName(CFGOPT_PG_SOCKET_PATH) . '=/test_socket_path' : '') . ' --' . cfgOptionName(CFGOPT_BUFFER_SIZE) . '=16384 --' . cfgOptionName(CFGOPT_CHECKSUM_PAGE) . ' --' . cfgOptionName(CFGOPT_PROCESS_MAX) . '=1', strRepoType => $bS3 ? undef : CFGOPTVAL_REPO_TYPE_CIFS, strTest => $strTestPoint, fTestDelay => 0}); $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_PROCESS_MAX} = $bS3 ? 2 : 1; $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_BUFFER_SIZE} = 65536; # Stop operations and make sure the correct error occurs #--------------------------------------------------------------------------------------------------------------------------- if (!$bS3) { # Test global stop $oHostDbMaster->stop({bForce => true}); $oHostBackup->backup( $strType, 'global stop', {oExpectedManifest => \%oManifest, iExpectedExitStatus => ERROR_STOP}); # Test stanza stop $oHostDbMaster->stop({strStanza => $oHostDbMaster->stanza()}); # This time a warning should be generated $oHostDbMaster->stop({strStanza => $oHostDbMaster->stanza()}); $oHostBackup->backup( $strType, 'stanza stop', {oExpectedManifest => \%oManifest, iExpectedExitStatus => ERROR_STOP}); $oHostDbMaster->start({strStanza => $self->stanza()}); $oHostDbMaster->start(); # This time a warning should be generated $oHostDbMaster->start(); } # Resume Full Backup #--------------------------------------------------------------------------------------------------------------------------- $strType = CFGOPTVAL_BACKUP_TYPE_FULL; # These files should never be backed up (this requires the next backup to do --force) testFileCreate($oHostDbMaster->dbBasePath() . '/' . DB_FILE_POSTMASTERPID, 'JUNK'); testFileCreate($oHostDbMaster->dbBasePath() . '/' . DB_FILE_BACKUPLABELOLD, 'JUNK'); testFileCreate($oHostDbMaster->dbBasePath() . '/' . DB_FILE_RECOVERYCONF, 'JUNK'); testFileCreate($oHostDbMaster->dbBasePath() . '/' . DB_FILE_RECOVERYDONE, 'JUNK'); # Create files in root tblspc paths that should not be copied or deleted. # This will be checked later after a --force restore. my $strDoNotDeleteFile = $oHostDbMaster->tablespacePath(1, 2) . '/donotdelete.txt'; storageTest()->pathCreate(dirname($strDoNotDeleteFile), {strMode => '0700', bCreateParent => true}); testFileCreate($strDoNotDeleteFile, 'DONOTDELETE-1-2'); storageTest()->pathCreate($oHostDbMaster->tablespacePath(1), {strMode => '0700', bCreateParent => true}); testFileCreate($oHostDbMaster->tablespacePath(1) . '/donotdelete.txt', 'DONOTDELETE-1'); storageTest()->pathCreate($oHostDbMaster->tablespacePath(2), {strMode => '0700', bCreateParent => true}); testFileCreate($oHostDbMaster->tablespacePath(2) . '/donotdelete.txt', 'DONOTDELETE-2'); storageTest()->pathCreate($oHostDbMaster->tablespacePath(2, 2), {strMode => '0700', bCreateParent => true}); testFileCreate($oHostDbMaster->tablespacePath(2, 2) . '/donotdelete.txt', 'DONOTDELETE-2-2'); storageTest()->pathCreate($oHostDbMaster->tablespacePath(11), {strMode => '0700', bCreateParent => true}); # Resume by copying the valid full backup over the last aborted full backup if it exists, or by creating a new path my $strResumeBackup = (storageRepo()->list( STORAGE_REPO_BACKUP, {strExpression => backupRegExpGet(true, true, true), strSortOrder => 'reverse'}))[0]; my $strResumeLabel = $strResumeBackup ne $strFullBackup ? $strResumeBackup : backupLabel(storageRepo(), $strType, undef, time()); my $strResumePath = storageRepo()->pathGet('backup/' . $self->stanza() . '/' . $strResumeLabel); forceStorageRemove(storageRepo(), $strResumePath, {bRecurse => true}); forceStorageMove(storageRepo(), 'backup/' . $self->stanza() . "/${strFullBackup}", $strResumePath); # Set ownership on base directory to bogus values if (!$bRemote) { $oHostDbMaster->executeSimple('chown 7777:7777 ' . $oHostDbMaster->dbBasePath(), undef, 'root'); $oHostDbMaster->executeSimple('chmod 777 ' . $oHostDbMaster->dbBasePath(), undef, 'root'); $oManifest{&MANIFEST_SECTION_TARGET_PATH}{&MANIFEST_TARGET_PGDATA}{&MANIFEST_SUBKEY_USER} = INI_FALSE; $oManifest{&MANIFEST_SECTION_TARGET_PATH}{&MANIFEST_TARGET_PGDATA}{&MANIFEST_SUBKEY_GROUP} = INI_FALSE; $oManifest{&MANIFEST_SECTION_TARGET_PATH}{&MANIFEST_TARGET_PGDATA}{&MANIFEST_SUBKEY_MODE} = '0777'; } $oHostBackup->manifestMunge( basename($strResumePath), {&MANIFEST_SECTION_BACKUP => {&MANIFEST_KEY_LABEL => $strResumeLabel}, &MANIFEST_SECTION_TARGET_FILE => {(&MANIFEST_TARGET_PGDATA . '/' . &DB_FILE_PGVERSION) => {&MANIFEST_SUBKEY_CHECKSUM => undef}}}, false); # Remove the main manifest so the backup appears aborted forceStorageRemove(storageRepo(), "${strResumePath}/" . FILE_MANIFEST); # Create a temp file in backup temp root to be sure it's deleted correctly my $strTempFile = "${strResumePath}/file.tmp"; if ($bS3) { storageRepo()->put($strTempFile, "TEMP"); } else { executeTest("touch ${strTempFile}", {bRemote => $bRemote}); } # Add zero-sized file $oHostDbMaster->manifestFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'zero_from_start', undef, undef, $lTime, undef, true); # Add files for testing backups when time changes but content doesn't, and when content changes but time and size don't $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGDATA, 'changetime.txt', 'SIZE', '88087292ed82e26f3eb824d0bffc05ccf7a30f8d', $lTime, undef, true); $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGDATA, 'changecontent.txt', 'CONTENT', '238a131a3e8eb98d1fc5b27d882ca40b7618fd2a', $lTime, undef, true); # Create files to be excluded with the --exclude option $oHostBackup->configUpdate( {(CFGDEF_SECTION_GLOBAL . ':backup') => {cfgOptionName(CFGOPT_EXCLUDE) => ['postgresql.auto.conf', 'pg_log/', 'pg_log2', 'apipe']}}); $oHostDbMaster->dbLinkCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'postgresql.auto.conf', '../pg_config/postgresql.conf', true); $oHostDbMaster->manifestPathCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'pg_log'); $oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'pg_log/logfile', 'IGNORE'); $oHostDbMaster->dbPathCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'pg_log2'); $oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'pg_log2/logfile', 'IGNORE'); executeTest('mkfifo ' . $oHostDbMaster->dbBasePath() . '/apipe'); $strFullBackup = $oHostBackup->backup( $strType, 'resume', {oExpectedManifest => \%oManifest, strOptionalParam => '--force --' . cfgOptionName(CFGOPT_CHECKSUM_PAGE) . ($bDeltaBackup ? ' --delta' : '')}); # Remove postmaster.pid so restore will succeed (the rest will be cleaned up by the delta) storageDb->remove($oHostDbMaster->dbBasePath() . '/' . DB_FILE_POSTMASTERPID); # Restore - tests various mode, extra files/paths, missing files/paths #--------------------------------------------------------------------------------------------------------------------------- # Munge permissions/modes on files that will be fixed by the restore if (!$bRemote) { $oHostDbMaster->executeSimple( "chown :7777 " . $oHostDbMaster->dbBasePath() . '/base/1/' . DB_FILE_PGVERSION, undef, 'root'); $oHostDbMaster->executeSimple( "chmod 600 " . $oHostDbMaster->dbBasePath() . '/base/1/' . DB_FILE_PGVERSION, undef, 'root'); } # Create a path and file that are not in the manifest $oHostDbMaster->dbPathCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'deleteme'); $oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'deleteme/deleteme.txt', 'DELETEME'); # Change path mode $oHostDbMaster->dbPathMode(\%oManifest, MANIFEST_TARGET_PGDATA, 'base', '0777'); # Remove a path $oHostDbMaster->dbPathRemove(\%oManifest, MANIFEST_TARGET_PGDATA, 'pg_clog'); # Remove a file $oHostDbMaster->dbFileRemove(\%oManifest, MANIFEST_TARGET_PGDATA, 'base/16384/17000'); # Restore will set invalid user and group to root since the base path user/group are also invalid if (!$bRemote) { $oManifest{&MANIFEST_SECTION_TARGET_PATH}{&MANIFEST_TARGET_PGDATA}{&MANIFEST_SUBKEY_USER} = 'root'; $oManifest{&MANIFEST_SECTION_TARGET_PATH}{&MANIFEST_TARGET_PGDATA}{&MANIFEST_SUBKEY_GROUP} = 'root'; $oManifest{&MANIFEST_SECTION_TARGET_FILE}{MANIFEST_TARGET_PGDATA . '/base/1/' . DB_FILE_PGVERSION} {&MANIFEST_SUBKEY_USER} = 'root'; $oManifest{&MANIFEST_SECTION_TARGET_FILE}{MANIFEST_TARGET_PGDATA . '/base/16384/' . DB_FILE_PGVERSION} {&MANIFEST_SUBKEY_GROUP} = 'root'; } $oHostDbMaster->restore( 'add and delete files', $strFullBackup, {rhExpectedManifest => \%oManifest, bDelta => true, strUser => !$bRemote ? 'root' : undef, strOptionalParam => ' --link-all' . ($bRemote ? ' --cmd-ssh=/usr/bin/ssh' : '')}); # Remove excludes now that they just create noise in the log $oHostBackup->configUpdate({(CFGDEF_SECTION_GLOBAL . ':backup') => {cfgOptionName(CFGOPT_EXCLUDE) => []}}); # Run again to fix permissions if (!$bRemote) { # Reset the base path user and group for the next restore so files will be reset to the base path user/group $oHostDbMaster->executeSimple( 'chown ' . TEST_USER . ':' . TEST_GROUP . ' ' . $oHostDbMaster->dbBasePath(), undef, 'root'); $oHostBackup->manifestMunge( $strFullBackup, {&MANIFEST_SECTION_TARGET_PATH => {&MANIFEST_TARGET_PGDATA => {&MANIFEST_SUBKEY_USER => undef, &MANIFEST_SUBKEY_GROUP => undef}}}, false); delete($oManifest{&MANIFEST_SECTION_TARGET_PATH}{&MANIFEST_TARGET_PGDATA}{&MANIFEST_SUBKEY_USER}); delete($oManifest{&MANIFEST_SECTION_TARGET_PATH}{&MANIFEST_TARGET_PGDATA}{&MANIFEST_SUBKEY_GROUP}); delete( $oManifest{&MANIFEST_SECTION_TARGET_FILE}{MANIFEST_TARGET_PGDATA . '/base/1/' . DB_FILE_PGVERSION} {&MANIFEST_SUBKEY_USER}); delete( $oManifest{&MANIFEST_SECTION_TARGET_FILE}{MANIFEST_TARGET_PGDATA . '/base/16384/' . DB_FILE_PGVERSION} {&MANIFEST_SUBKEY_GROUP}); $oHostDbMaster->restore( 'fix permissions', $strFullBackup, {rhExpectedManifest => \%oManifest, bDelta => true, strUser => 'root', strOptionalParam => ' --link-all --log-level-console=detail'}); # Fix and remove files that are now owned by root $oHostBackup->executeSimple('chown -R ' . TEST_USER . ':' . TEST_GROUP . ' ' . $oHostBackup->logPath(), undef, 'root'); $oHostDbMaster->executeSimple('rm -rf ' . $oHostDbMaster->lockPath() . '/*', undef, 'root'); } # Change an existing link to the wrong directory $oHostDbMaster->dbFileRemove(\%oManifest, MANIFEST_TARGET_PGDATA, 'pg_stat'); $oHostDbMaster->dbLinkCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'pg_stat', '../wrong'); $oHostDbMaster->restore( 'fix broken symlink', $strFullBackup, {rhExpectedManifest => \%oManifest, bDelta => true, strOptionalParam => ' --link-all' . ($bRemote ? ' --compress-level-network=0' : '')}); # Restore links as directories #--------------------------------------------------------------------------------------------------------------------------- # Munge the user to make sure it gets reset on the next run $oHostBackup->manifestMunge( $strFullBackup, {&MANIFEST_SECTION_TARGET_FILE => {&MANIFEST_FILE_PGCONTROL => {&MANIFEST_SUBKEY_USER => 'bogus', &MANIFEST_SUBKEY_GROUP => 'bogus'}}}, false); # Restore succeeds $oHostDbMaster->manifestLinkMap(\%oManifest, MANIFEST_TARGET_PGDATA . '/pg_stat'); $oHostDbMaster->manifestLinkMap(\%oManifest, MANIFEST_TARGET_PGDATA . '/postgresql.conf'); $oHostDbMaster->manifestLinkMap(\%oManifest, MANIFEST_TARGET_PGDATA . '/pg_hba.conf'); $oHostDbMaster->restore( 'restore links as directories', $strFullBackup, {rhExpectedManifest => \%oManifest, bDelta => true, bForce => true}); # No longer need pg_hba.conf since it is no longer a link and doesn't provide additional coverage $oHostDbMaster->manifestFileRemove(\%oManifest, MANIFEST_TARGET_PGDATA, 'pg_hba.conf'); # Incr backup #--------------------------------------------------------------------------------------------------------------------------- $strType = CFGOPTVAL_BACKUP_TYPE_INCR; $oHostDbMaster->manifestReference(\%oManifest, $strFullBackup); # Add tablespace 1 $oHostDbMaster->manifestTablespaceCreate(\%oManifest, 1); $oHostDbMaster->manifestPathCreate(\%oManifest, MANIFEST_TARGET_PGTBLSPC . '/1', '16384'); $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGTBLSPC . '/1', '16384/tablespace1.txt', 'TBLSPCB', '14c44cef6287269b08d41de489fd492bb9fc795d', $lTime - 100, undef, undef, false); $oHostDbMaster->manifestFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'badchecksum.txt', 'BADCHECKSUM', 'f927212cd08d11a42a666b2f04235398e9ceeb51', $lTime, undef, true); $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGDATA, 'changesize.txt', 'SIZE', '88087292ed82e26f3eb824d0bffc05ccf7a30f8d', $lTime, undef, true); $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGDATA, 'zerosize.txt', '', undef, $lTime - 100, undef, true); # Create temp dir and file that will be ignored if (!$bRemote) { $oHostDbMaster->dbPathCreate(\%oManifest, MANIFEST_TARGET_PGTBLSPC . '/1', DB_FILE_PREFIX_TMP); $oHostDbMaster->dbFileCreate( \%oManifest, MANIFEST_TARGET_PGTBLSPC . '/1', DB_FILE_PREFIX_TMP . '/' . DB_FILE_PREFIX_TMP . '.1', 'IGNORE'); } my $strBackup = $oHostBackup->backup($strType, 'add tablespace 1', {oExpectedManifest => \%oManifest}); # Resume Incr Backup #--------------------------------------------------------------------------------------------------------------------------- $strType = CFGOPTVAL_BACKUP_TYPE_INCR; # Create resumable backup from last backup $strResumeLabel = backupLabel(storageRepo(), $strType, substr($strBackup, 0, 16), time()); $strResumePath = storageRepo()->pathGet('backup/' . $self->stanza() . '/' . $strResumeLabel); forceStorageRemove(storageRepo(), $strResumePath); forceStorageMove(storageRepo(), 'backup/' . $self->stanza() . "/${strBackup}", $strResumePath); # Munge manifest so the resumed file in the repo appears to be bad if ($bEncrypt || $bRemote) { $oHostBackup->manifestMunge( basename($strResumePath), {&MANIFEST_SECTION_TARGET_FILE => {(&MANIFEST_TARGET_PGDATA . '/badchecksum.txt') => {&MANIFEST_SUBKEY_CHECKSUM => BOGUS}}}, false); } # Change contents of resumed file without changing size so it will throw a nasty error about the repo having been corrupted else { storageRepo()->put("${strResumePath}/pg_data/badchecksum.txt", 'BDDCHECKSUM'); } # Write correct label into resumable manifest $oHostBackup->manifestMunge( basename($strResumePath), {&MANIFEST_SECTION_BACKUP => {&MANIFEST_KEY_LABEL => $strResumeLabel}},false); # Change contents/size of a db file to make sure it recopies (and does not resume) $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGDATA, 'changesize.txt', 'SIZE+MORE', '3905d5be2ec8d67f41435dab5e0dcda3ae47455d', $lTime, undef, true); # Change contents/time of a db file to make sure it recopies (and does not resume) $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGTBLSPC . '/1', '16384/tablespace1.txt', 'TBLSPC1', 'd85de07d6421d90aa9191c11c889bfde43680f0f', $lTime, undef, undef, false); # Remove the main manifest so the backup appears aborted forceStorageRemove(storageRepo(), "${strResumePath}/" . FILE_MANIFEST); # Add tablespace 2 $oHostDbMaster->manifestTablespaceCreate(\%oManifest, 2); $oHostDbMaster->manifestPathCreate(\%oManifest, MANIFEST_TARGET_PGTBLSPC . '/2', '32768'); $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGTBLSPC . '/2', '32768/tablespace2.txt', 'TBLSPC2', 'dc7f76e43c46101b47acc55ae4d593a9e6983578', $lTime, undef, undef, false); # Make sure pg_internal.init is ignored in tablespaces $oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGTBLSPC . '/2', '32768/' . DB_FILE_PGINTERNALINIT, 'IGNORE'); # Also create tablespace 11 to be sure it does not conflict with path of tablespace 1 $oHostDbMaster->manifestTablespaceCreate(\%oManifest, 11); # Change only the time to be in the past on a valid file and update the timestamp in the expected manifest utime($lTime - 100, $lTime - 100, $oHostDbMaster->dbBasePath() . '/changetime.txt') or confess &log(ERROR, "unable to set time for file ".$oHostDbMaster->dbBasePath() . '/changetime.txt'); $oManifest{&MANIFEST_SECTION_TARGET_FILE}{'pg_data/changetime.txt'}{&MANIFEST_SUBKEY_TIMESTAMP} = $lTime - 100; # Change the content of the changecontent file to be the same size but leave the timestamp the same on the file storageDb()->put($oHostDbMaster->dbBasePath() . '/changecontent.txt', 'CHGCONT'); utime($lTime, $lTime, $oHostDbMaster->dbBasePath() . '/changecontent.txt') or confess &log(ERROR, "unable to set time for file ".$oHostDbMaster->dbBasePath() . '/changecontent.txt'); # The changecontent & changetime files have conditions that will force the delta option to be turned on which should result # in the reference of changecontent to be removed but the reference to changetime to stay since the checksum wouldn't change $oManifest{&MANIFEST_SECTION_TARGET_FILE}{'pg_data/changecontent.txt'}{&MANIFEST_SUBKEY_CHECKSUM} = "a094d94583e209556d03c3c5da33131a065f1689"; delete($oManifest{&MANIFEST_SECTION_TARGET_FILE}{'pg_data/changecontent.txt'}{&MANIFEST_SUBKEY_REFERENCE}); $oManifest{&MANIFEST_SECTION_TARGET_FILE}{'pg_data/changetime.txt'}{&MANIFEST_SUBKEY_TIMESTAMP} = $lTime - 100; $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_PROCESS_MAX} = 1; $strBackup = $oHostBackup->backup( $strType, 'resume and add tablespace 2', {oExpectedManifest => \%oManifest, strOptionalParam => '--' . cfgOptionName(CFGOPT_PROCESS_MAX) . '=1' . ($bDeltaBackup ? ' --delta' : '')}); $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_PROCESS_MAX} = $bS3 ? 2 : 1; if (!$bRemote) { # Remove the size-changed test file to avoid expect log churn $oHostDbMaster->manifestFileRemove(\%oManifest, MANIFEST_TARGET_PGDATA, 'changesize.txt'); } # Drop tablespace 11 #--------------------------------------------------------------------------------------------------------------------------- $strType = CFGOPTVAL_BACKUP_TYPE_DIFF; # Drop tablespace 11 $oHostDbMaster->manifestTablespaceDrop(\%oManifest, 11); $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_PROCESS_MAX} = 1; $strBackup = $oHostBackup->backup( $strType, 'drop tablespace 11', {oExpectedManifest => \%oManifest, strOptionalParam => '--' . cfgOptionName(CFGOPT_PROCESS_MAX) . '=1' . ($bDeltaBackup ? ' --delta' : '')}); $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_PROCESS_MAX} = $bS3 ? 2 : 1; # Restore #--------------------------------------------------------------------------------------------------------------------------- # Remap the base and tablespace paths my %oRemapHash; $oRemapHash{&MANIFEST_TARGET_PGDATA} = $oHostDbMaster->dbBasePath(2); storageTest()->pathCreate($oHostDbMaster->dbBasePath(2), {strMode => '0700', bCreateParent => true}); $oRemapHash{&MANIFEST_TARGET_PGTBLSPC . '/1'} = $oHostDbMaster->tablespacePath(1, 2); $oRemapHash{&MANIFEST_TARGET_PGTBLSPC . '/2'} = $oHostDbMaster->tablespacePath(2, 2); # At this point the $PG_DATA permissions have been reset to 0700 if (!$bRemote) { $oManifest{&MANIFEST_SECTION_TARGET_PATH}{&MANIFEST_TARGET_PGDATA}{&MANIFEST_SUBKEY_MODE} = '0777'; $oManifest{&MANIFEST_SECTION_TARGET_PATH}{&MANIFEST_TARGET_PGTBLSPC}{&MANIFEST_SUBKEY_MODE} = '0777'; } $oHostDbMaster->restore( 'remap all paths', $strBackup, {rhExpectedManifest => \%oManifest, rhRemapHash => \%oRemapHash}); # Restore (make sure file in root tablespace path is not deleted by --delta) #--------------------------------------------------------------------------------------------------------------------------- $oHostDbMaster->restore( 'ensure file in tblspc root remains after --delta', $strBackup, {rhExpectedManifest => \%oManifest, rhRemapHash => \%oRemapHash, bDelta => true}); if (!-e $strDoNotDeleteFile) { confess "${strDoNotDeleteFile} was deleted by --delta"; } # Incr Backup #--------------------------------------------------------------------------------------------------------------------------- $strType = CFGOPTVAL_BACKUP_TYPE_INCR; $oHostDbMaster->manifestReference(\%oManifest, $strBackup); $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGDATA, 'base/base2.txt', 'BASE2', '09b5e31766be1dba1ec27de82f975c1b6eea2a92', $lTime); $oHostDbMaster->manifestTablespaceDrop(\%oManifest, 1, 2); $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGTBLSPC . '/2', '32768/tablespace2b.txt', 'TBLSPC2B', 'e324463005236d83e6e54795dbddd20a74533bf3', $lTime, undef, undef, false); # Munge the version to make sure it gets corrected on the next run $oHostBackup->manifestMunge($strBackup, {&INI_SECTION_BACKREST => {&INI_KEY_VERSION => '0.00'}}, false); $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_PROCESS_MAX} = 1; $strBackup = $oHostBackup->backup( $strType, 'add files and remove tablespace 2', {oExpectedManifest => \%oManifest, strOptionalParam => '--' . cfgOptionName(CFGOPT_PROCESS_MAX) . '=1'}); $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_PROCESS_MAX} = $bS3 ? 2 : 1; # Incr Backup #--------------------------------------------------------------------------------------------------------------------------- $strType = CFGOPTVAL_BACKUP_TYPE_INCR; $oHostDbMaster->manifestReference(\%oManifest, $strBackup); $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGDATA, 'base/16384/17000', 'BASEUPDT', '9a53d532e27785e681766c98516a5e93f096a501', $lTime, undef, undef, false); # Perform the backup $strBackup =$oHostBackup->backup($strType, 'update files', {oExpectedManifest => \%oManifest}); # Diff Backup #--------------------------------------------------------------------------------------------------------------------------- $strType = CFGOPTVAL_BACKUP_TYPE_DIFF; $oHostDbMaster->manifestReference(\%oManifest, $strFullBackup, true); $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_PROCESS_MAX} = 1; $strBackup = $oHostBackup->backup( $strType, 'updates since last full', {oExpectedManifest => \%oManifest, strOptionalParam => '--' . cfgOptionName(CFGOPT_PROCESS_MAX) . '=1' . ($bDeltaBackup ? ' --delta' : '')}); $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_PROCESS_MAX} = $bS3 ? 2 : 1; # Diff Backup with files removed #--------------------------------------------------------------------------------------------------------------------------- $oHostDbMaster->manifestReference(\%oManifest, $strFullBackup, true); $strType = CFGOPTVAL_BACKUP_TYPE_DIFF; # Enable compression to ensure a warning is raised $oHostBackup->configUpdate({&CFGDEF_SECTION_GLOBAL => {cfgOptionName(CFGOPT_COMPRESS) => 'y'}}); # Enable hardlinks (except for s3) to ensure a warning is raised if (!$bS3) { $oHostBackup->configUpdate({&CFGDEF_SECTION_GLOBAL => {cfgOptionName(CFGOPT_REPO_HARDLINK) => 'y'}}); } $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_PROCESS_MAX} = 1; $oHostDbMaster->manifestFileRemove(\%oManifest, MANIFEST_TARGET_PGTBLSPC . '/2', '32768/tablespace2b.txt', true); $oHostDbMaster->manifestFileRemove(\%oManifest, MANIFEST_TARGET_PGDATA, 'base/base2.txt', true); $oHostDbMaster->manifestFileRemove(\%oManifest, MANIFEST_TARGET_PGDATA, 'base/16384/17000'); $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGTBLSPC . '/2', '32768/tablespace2c.txt', 'TBLSPCBIGGER', 'dfcb8679956b734706cf87259d50c88f83e80e66', $lTime, undef, undef, false); $oHostBackup->backup( $strType, 'remove files', {oExpectedManifest => \%oManifest, strOptionalParam => '--' . cfgOptionName(CFGOPT_PROCESS_MAX) . '=1' . ($bDeltaBackup ? ' --delta' : '')}); $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_PROCESS_MAX} = $bS3 ? 2 : 1; # Full Backup #--------------------------------------------------------------------------------------------------------------------------- $strType = CFGOPTVAL_BACKUP_TYPE_FULL; # Now the compression and hardlink changes will take effect $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_COMPRESS} = JSON::PP::true; if (!$bS3) { $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_HARDLINK} = JSON::PP::true; $oHostBackup->{bHardLink} = true; } $oHostDbMaster->manifestReference(\%oManifest); $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGDATA, 'base/16384/17000', 'BASEUPDT2', '7579ada0808d7f98087a0a586d0df9de009cdc33', $lTime, undef, undef, false); $oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_CHECKSUM_PAGE} = JSON::PP::false; $strFullBackup = $oHostBackup->backup( $strType, 'update file', {oExpectedManifest => \%oManifest}); # Call expire #--------------------------------------------------------------------------------------------------------------------------- $oHostBackup->expire({iRetentionFull => 1}); # Diff Backup #--------------------------------------------------------------------------------------------------------------------------- $strType = CFGOPTVAL_BACKUP_TYPE_DIFF; $oHostDbMaster->manifestReference(\%oManifest, $strFullBackup); $oHostDbMaster->manifestFileCreate( \%oManifest, MANIFEST_TARGET_PGDATA, 'base/base2.txt', 'BASE2UPDT', 'cafac3c59553f2cfde41ce2e62e7662295f108c0', $lTime, undef, undef, false); # Munge the prior manifest so that option-checksum-page is missing to be sure the logic works for backups before page # checksums were introduced $oHostBackup->manifestMunge( $strFullBackup, {&MANIFEST_SECTION_BACKUP_OPTION => {&MANIFEST_KEY_CHECKSUM_PAGE => undef}}, false); $strBackup = $oHostBackup->backup( $strType, 'add file', {oExpectedManifest => \%oManifest, strOptionalParam => '--' . cfgOptionName(CFGOPT_CHECKSUM_PAGE)}); # Selective Restore #--------------------------------------------------------------------------------------------------------------------------- # Remove mapping for tablespace 1 delete($oRemapHash{&MANIFEST_TARGET_PGTBLSPC . '/1'}); # Remove checksum to match zeroed files delete($oManifest{&MANIFEST_SECTION_TARGET_FILE}{'pg_data/base/32768/33000'}{&MANIFEST_SUBKEY_CHECKSUM}); delete($oManifest{&MANIFEST_SECTION_TARGET_FILE}{'pg_data/base/32768/33001'}{&MANIFEST_SUBKEY_CHECKSUM}); delete($oManifest{&MANIFEST_SECTION_TARGET_FILE}{'pg_tblspc/2/PG_9.4_201409291/32768/tablespace2.txt'} {&MANIFEST_SUBKEY_CHECKSUM}); delete($oManifest{&MANIFEST_SECTION_TARGET_FILE}{'pg_tblspc/2/PG_9.4_201409291/32768/tablespace2c.txt'} {&MANIFEST_SUBKEY_CHECKSUM}); $oHostDbMaster->restore( 'selective restore 16384', cfgDefOptionDefault(CFGCMD_RESTORE, CFGOPT_SET), {rhExpectedManifest => \%oManifest, rhRemapHash => \%oRemapHash, bDelta => true, strOptionalParam => '--db-include=16384'}); # Restore checksum values for next test $oManifest{&MANIFEST_SECTION_TARGET_FILE}{'pg_data/base/32768/33000'}{&MANIFEST_SUBKEY_CHECKSUM} = '7a16d165e4775f7c92e8cdf60c0af57313f0bf90'; $oManifest{&MANIFEST_SECTION_TARGET_FILE}{'pg_data/base/32768/33001'}{&MANIFEST_SUBKEY_CHECKSUM} = '6bf316f11d28c28914ea9be92c00de9bea6d9a6b'; $oManifest{&MANIFEST_SECTION_TARGET_FILE}{'pg_tblspc/2/PG_9.4_201409291/32768/tablespace2.txt'} {&MANIFEST_SUBKEY_CHECKSUM} = 'dc7f76e43c46101b47acc55ae4d593a9e6983578'; $oManifest{&MANIFEST_SECTION_TARGET_FILE}{'pg_tblspc/2/PG_9.4_201409291/32768/tablespace2c.txt'} {&MANIFEST_SUBKEY_CHECKSUM} = 'dfcb8679956b734706cf87259d50c88f83e80e66'; # Remove checksum to match zeroed file delete($oManifest{&MANIFEST_SECTION_TARGET_FILE}{'pg_data/base/16384/17000'}{&MANIFEST_SUBKEY_CHECKSUM}); $oHostDbMaster->restore( 'selective restore 32768', cfgDefOptionDefault(CFGCMD_RESTORE, CFGOPT_SET), {rhExpectedManifest => \%oManifest, rhRemapHash => \%oRemapHash, bDelta => true, strOptionalParam => '--db-include=32768'}); $oManifest{&MANIFEST_SECTION_TARGET_FILE}{'pg_data/base/16384/17000'}{&MANIFEST_SUBKEY_CHECKSUM} = '7579ada0808d7f98087a0a586d0df9de009cdc33'; $oHostDbMaster->restore( 'error on invalid id', cfgDefOptionDefault(CFGCMD_RESTORE, CFGOPT_SET), {rhExpectedManifest => \%oManifest, rhRemapHash => \%oRemapHash, bDelta => true, iExpectedExitStatus => ERROR_DB_MISSING, strOptionalParam => '--log-level-console=warn --db-include=7777'}); $oHostDbMaster->restore( 'error on system id', cfgDefOptionDefault(CFGCMD_RESTORE, CFGOPT_SET), {rhExpectedManifest => \%oManifest, rhRemapHash => \%oRemapHash, bDelta => true, iExpectedExitStatus => ERROR_DB_INVALID, strOptionalParam => '--log-level-console=warn --db-include=1'}); # Compact Restore #--------------------------------------------------------------------------------------------------------------------------- executeTest('rm -rf ' . $oHostDbMaster->dbBasePath(2) . "/*"); my $strDbPath = $oHostDbMaster->dbBasePath(2) . '/base'; storageTest()->pathCreate($strDbPath, {strMode => '0700'}); $oRemapHash{&MANIFEST_TARGET_PGDATA} = $strDbPath; delete($oRemapHash{&MANIFEST_TARGET_PGTBLSPC . '/2'}); $oHostDbMaster->restore( 'no tablespace remap', cfgDefOptionDefault(CFGCMD_RESTORE, CFGOPT_SET), {rhExpectedManifest => \%oManifest, rhRemapHash => \%oRemapHash, bTablespace => false, strOptionalParam => '--tablespace-map-all=../../tablespace'}); $oManifest{&MANIFEST_SECTION_BACKUP_TARGET}{'pg_tblspc/2'}{&MANIFEST_SUBKEY_PATH} = '../../tablespace/ts2'; $oManifest{&MANIFEST_SECTION_TARGET_LINK}{'pg_data/pg_tblspc/2'}{&MANIFEST_SUBKEY_DESTINATION} = '../../tablespace/ts2'; # Dump out history path at the end to verify all history files are being recorded. This test is only performed locally # because for some reason sort order is different when this command is executed via ssh (even though the content of the # directory is identical). #--------------------------------------------------------------------------------------------------------------------------- if (!$bRemote && !$bS3) { executeTest('ls -1Rtr ' . storageRepo()->pathGet('backup/' . $self->stanza() . '/' . PATH_BACKUP_HISTORY), {oLogTest => $self->expect(), bRemote => $bRemote}); } # Test backup from standby warning that standby not configured so option reset #--------------------------------------------------------------------------------------------------------------------------- if (!defined($oHostDbStandby)) { $strBackup = $oHostBackup->backup( $strType, 'option backup-standby reset - backup performed from master', {oExpectedManifest => \%oManifest, strOptionalParam => '--log-level-console=info --' . cfgOptionName(CFGOPT_BACKUP_STANDBY)}); } } } 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Module/Mock/MockArchiveStopTest.pm000066400000000000000000000151751362531507100302070ustar00rootroot00000000000000#################################################################################################################################### # Tests for archive-push command to make sure aync queue limits are implemented correctly #################################################################################################################################### package pgBackRestTest::Module::Mock::MockArchiveStopTest; use parent 'pgBackRestTest::Env::HostEnvTest'; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use File::Basename qw(dirname); use pgBackRest::Archive::Info; use pgBackRest::Backup::Info; use pgBackRest::DbVersion; use pgBackRest::Common::Exception; use pgBackRest::Common::Ini; use pgBackRest::Common::Log; use pgBackRest::Common::Wait; use pgBackRest::Config::Config; use pgBackRest::Manifest; use pgBackRest::Protocol::Storage::Helper; use pgBackRest::Storage::Helper; use pgBackRestTest::Env::HostEnvTest; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::RunTest; use pgBackRestTest::Common::VmTest; #################################################################################################################################### # run #################################################################################################################################### sub run { my $self = shift; # Generate test WAL file my $strWalTestFile = $self->testPath() . '/test-wal-' . PG_VERSION_94; my $strWalHash = $self->walGenerateContentChecksum(PG_VERSION_94); storageTest()->put($strWalTestFile, $self->walGenerateContent(PG_VERSION_94)); foreach my $rhRun ( {vm => VM1, remote => false, s3 => false, encrypt => false, compress => true, error => 0}, {vm => VM1, remote => true, s3 => true, encrypt => true, compress => false, error => 1}, {vm => VM2, remote => false, s3 => true, encrypt => false, compress => false, error => 0}, {vm => VM2, remote => true, s3 => false, encrypt => true, compress => true, error => 0}, {vm => VM3, remote => false, s3 => false, encrypt => true, compress => false, error => 0}, {vm => VM3, remote => true, s3 => true, encrypt => false, compress => true, error => 1}, {vm => VM4, remote => false, s3 => true, encrypt => true, compress => true, error => 0}, {vm => VM4, remote => true, s3 => false, encrypt => false, compress => false, error => 0}, ) { # Only run tests for this vm next if ($rhRun->{vm} ne vmTest($self->vm())); # Increment the run, log, and decide whether this unit test should be run my $bRemote = $rhRun->{remote}; my $bS3 = $rhRun->{s3}; my $bEncrypt = $rhRun->{encrypt}; my $bCompress = $rhRun->{compress}; my $iError = $rhRun->{error}; # Increment the run, log, and decide whether this unit test should be run if (!$self->begin("rmt ${bRemote}, cmp ${bCompress}, error " . ($iError ? 'connect' : 'version') . ", s3 ${bS3}, " . "enc ${bEncrypt}")) {next} # Create hosts, file object, and config my ($oHostDbMaster, $oHostDbStandby, $oHostBackup, $oHostS3) = $self->setup( true, $self->expect(), {bHostBackup => $bRemote, bCompress => $bCompress, bArchiveAsync => true, bS3 => $bS3, bRepoEncrypt => $bEncrypt}); # Create compression extension my $strCompressExt = $bCompress ? qw{.} . COMPRESS_EXT : ''; # Create the wal path my $strWalPath = $oHostDbMaster->dbBasePath() . '/pg_xlog'; storageTest()->pathCreate($strWalPath, {bCreateParent => true}); # Create the test path for pg_control and generate pg_control for stanza-create storageTest()->pathCreate($oHostDbMaster->dbBasePath() . '/' . DB_PATH_GLOBAL, {bCreateParent => true}); $self->controlGenerate($oHostDbMaster->dbBasePath(), PG_VERSION_94); # Create the archive info file $oHostBackup->stanzaCreate('create required data for stanza', {strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)}); # Push a WAL segment &log(INFO, ' push first WAL'); $oHostDbMaster->archivePush($strWalPath, $strWalTestFile, 1); # Break the database version of the archive info file if ($iError == 0) { $oHostBackup->infoMunge( storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE), {&INFO_ARCHIVE_SECTION_DB => {&INFO_ARCHIVE_KEY_DB_VERSION => '8.0'}, &INFO_ARCHIVE_SECTION_DB_HISTORY => {1 => {&INFO_ARCHIVE_KEY_DB_VERSION => '8.0'}}}); } # Push two more segments with errors to exceed archive-push-queue-max &log(INFO, ' push second WAL'); $oHostDbMaster->archivePush( $strWalPath, $strWalTestFile, 2, $iError ? ERROR_UNKNOWN : ERROR_ARCHIVE_MISMATCH); &log(INFO, ' push third WAL'); $oHostDbMaster->archivePush( $strWalPath, $strWalTestFile, 3, $iError ? ERROR_UNKNOWN : ERROR_ARCHIVE_MISMATCH); # Now this segment will get dropped &log(INFO, ' push fourth WAL'); $oHostDbMaster->archivePush($strWalPath, $strWalTestFile, 4, undef, undef, '--repo1-host=bogus'); # Fix the database version if ($iError == 0) { $oHostBackup->infoRestore(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE)); } #--------------------------------------------------------------------------------------------------------------------------- $self->testResult( sub {storageRepo()->list( STORAGE_REPO_ARCHIVE . qw{/} . PG_VERSION_94 . '-1/0000000100000001')}, "000000010000000100000001-${strWalHash}${strCompressExt}", 'segment 2-4 not pushed', {iWaitSeconds => 5}); #--------------------------------------------------------------------------------------------------------------------------- $oHostDbMaster->archivePush($strWalPath, $strWalTestFile, 5); $self->testResult( sub {storageRepo()->list( STORAGE_REPO_ARCHIVE . qw{/} . PG_VERSION_94 . '-1/0000000100000001')}, "(000000010000000100000001-${strWalHash}${strCompressExt}, " . "000000010000000100000005-${strWalHash}${strCompressExt})", 'segment 5 is pushed', {iWaitSeconds => 5}); } } 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Module/Mock/MockArchiveTest.pm000066400000000000000000000445571362531507100273470ustar00rootroot00000000000000#################################################################################################################################### # Mock Archive Tests #################################################################################################################################### package pgBackRestTest::Module::Mock::MockArchiveTest; use parent 'pgBackRestTest::Env::HostEnvTest'; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use File::Basename qw(dirname); use pgBackRest::Archive::Info; use pgBackRest::Backup::Info; use pgBackRest::DbVersion; use pgBackRest::Common::Exception; use pgBackRest::Common::Ini; use pgBackRest::Common::Log; use pgBackRest::Common::Wait; use pgBackRest::Config::Config; use pgBackRest::Manifest; use pgBackRest::Protocol::Storage::Helper; use pgBackRest::Storage::Helper; use pgBackRestTest::Env::HostEnvTest; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::RunTest; use pgBackRestTest::Common::VmTest; #################################################################################################################################### # archiveCheck # # Check that a WAL segment is present in the repository. #################################################################################################################################### sub archiveCheck { my $self = shift; my $strArchiveFile = shift; my $strArchiveChecksum = shift; my $bCompress = shift; my $strSpoolPath = shift; # Build the archive name to check for at the destination my $strArchiveCheck = PG_VERSION_94 . "-1/${strArchiveFile}-${strArchiveChecksum}"; if ($bCompress) { $strArchiveCheck .= '.gz'; } my $oWait = waitInit(5); my $bFound = false; do { $bFound = storageRepo()->exists(STORAGE_REPO_ARCHIVE . "/${strArchiveCheck}"); } while (!$bFound && waitMore($oWait)); if (!$bFound) { confess 'unable to find ' . storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . "/${strArchiveCheck}"); } if (defined($strSpoolPath)) { storageTest()->remove("${strSpoolPath}/archive/" . $self->stanza() . "/out/${strArchiveFile}.ok"); } } #################################################################################################################################### # run #################################################################################################################################### sub run { my $self = shift; my $strArchiveChecksum = $self->walGenerateContentChecksum(PG_VERSION_94, {iSourceNo => 2}); foreach my $rhRun ( {vm => VM1, remote => false, s3 => false, encrypt => false}, {vm => VM1, remote => true, s3 => true, encrypt => true}, {vm => VM2, remote => false, s3 => true, encrypt => false}, {vm => VM2, remote => true, s3 => false, encrypt => true}, {vm => VM3, remote => false, s3 => false, encrypt => true}, {vm => VM3, remote => true, s3 => true, encrypt => false}, {vm => VM4, remote => false, s3 => true, encrypt => true}, {vm => VM4, remote => true, s3 => false, encrypt => false}, ) { # Only run tests for this vm next if ($rhRun->{vm} ne vmTest($self->vm())); # Increment the run, log, and decide whether this unit test should be run my $bRemote = $rhRun->{remote}; my $bS3 = $rhRun->{s3}; my $bEncrypt = $rhRun->{encrypt}; if (!$self->begin("rmt ${bRemote}, s3 ${bS3}, enc ${bEncrypt}")) {next} # Create hosts, file object, and config my ($oHostDbMaster, $oHostDbStandby, $oHostBackup) = $self->setup( true, $self->expect(), {bHostBackup => $bRemote, bCompress => false, bS3 => $bS3, bRepoEncrypt => $bEncrypt}); # Reduce console logging to detail $oHostDbMaster->configUpdate({&CFGDEF_SECTION_GLOBAL => {cfgOptionName(CFGOPT_LOG_LEVEL_CONSOLE) => lc(DETAIL)}}); # Create the wal path my $strWalPath = $oHostDbMaster->dbBasePath() . '/pg_xlog'; storageTest()->pathCreate($strWalPath, {bCreateParent => true}); # Generate pg_control for stanza-create storageTest()->pathCreate($oHostDbMaster->dbBasePath() . '/' . DB_PATH_GLOBAL, {bCreateParent => true}); $self->controlGenerate($oHostDbMaster->dbBasePath(), PG_VERSION_94); # Create archive-push command my $strCommandPush = $oHostDbMaster->backrestExe() . ' --config=' . $oHostDbMaster->backrestConfig() . ' --stanza=' . $self->stanza() . ' ' . cfgCommandName(CFGCMD_ARCHIVE_PUSH); my $strCommandGet = $oHostDbMaster->backrestExe() . ' --config=' . $oHostDbMaster->backrestConfig() . ' --stanza=' . $self->stanza() . ' ' . cfgCommandName(CFGCMD_ARCHIVE_GET); #--------------------------------------------------------------------------------------------------------------------------- &log(INFO, ' archive.info missing'); my $strSourceFile1 = $self->walSegment(1, 1, 1); storageTest()->pathCreate("${strWalPath}/archive_status"); my $strArchiveFile1 = $self->walGenerate($strWalPath, PG_VERSION_94, 1, $strSourceFile1); $oHostDbMaster->executeSimple( $strCommandPush . " ${strWalPath}/${strSourceFile1}", {iExpectedExitStatus => ERROR_FILE_MISSING, oLogTest => $self->expect()}); $oHostDbMaster->executeSimple( $strCommandGet . " ${strSourceFile1} ${strWalPath}/RECOVERYXLOG", {iExpectedExitStatus => ERROR_FILE_MISSING, oLogTest => $self->expect()}); #--------------------------------------------------------------------------------------------------------------------------- $oHostBackup->stanzaCreate( 'stanza create', {strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)}); #--------------------------------------------------------------------------------------------------------------------------- &log(INFO, ' push first WAL'); my @stryExpectedWAL; my $strSourceFile = $self->walSegment(1, 1, 1); my $strArchiveFile = $self->walGenerate($strWalPath, PG_VERSION_94, 2, $strSourceFile); $oHostDbMaster->executeSimple( $strCommandPush . ($bRemote ? ' --cmd-ssh=/usr/bin/ssh' : '') . " --compress ${strWalPath}/${strSourceFile}", {oLogTest => $self->expect()}); push(@stryExpectedWAL, "${strSourceFile}-${strArchiveChecksum}.gz"); # Test that the WAL was pushed $self->archiveCheck($strSourceFile, $strArchiveChecksum, true); # Remove from archive_status storageTest()->remove("${strWalPath}/archive_status/${strSourceFile}.ready"); # Remove WAL storageTest()->remove("${strWalPath}/${strSourceFile}", {bIgnoreMissing => false}); #--------------------------------------------------------------------------------------------------------------------------- &log(INFO, ' get missing WAL'); $oHostDbMaster->executeSimple( $strCommandGet . " 700000007000000070000000 ${strWalPath}/RECOVERYXLOG", {iExpectedExitStatus => 1, oLogTest => $self->expect()}); #--------------------------------------------------------------------------------------------------------------------------- &log(INFO, ' get first WAL'); $oHostDbMaster->executeSimple( $strCommandGet . " ${strSourceFile} ${strWalPath}/RECOVERYXLOG", {oLogTest => $self->expect()}); # Check that the destination file exists if (storageDb()->exists("${strWalPath}/RECOVERYXLOG")) { my ($strActualChecksum) = storageDb()->hashSize("${strWalPath}/RECOVERYXLOG"); if ($strActualChecksum ne $strArchiveChecksum) { confess "recovered file hash '${strActualChecksum}' does not match expected '${strArchiveChecksum}'"; } } else { confess "archive file '${strWalPath}/RECOVERYXLOG' is not in destination"; } #--------------------------------------------------------------------------------------------------------------------------- &log(INFO, ' push second WAL'); # Generate second WAL segment $strSourceFile = $self->walSegment(1, 1, 2); $strArchiveFile = $self->walGenerate($strWalPath, PG_VERSION_94, 2, $strSourceFile); # Create a temp file to make sure it is deleted later (skip when S3 since it doesn't use temp files) my $strArchiveTmp; if (!$bS3) { # Should succeed when temp file already exists &log(INFO, ' succeed when tmp WAL file exists'); $strArchiveTmp = $oHostBackup->repoPath() . '/archive/' . $self->stanza() . '/' . PG_VERSION_94 . '-1/' . substr($strSourceFile, 0, 16) . "/${strSourceFile}-${strArchiveChecksum}." . COMPRESS_EXT . qw{.} . STORAGE_TEMP_EXT; storageTest()->put($strArchiveTmp, 'JUNK'); } # Push the WAL $oHostDbMaster->executeSimple( "${strCommandPush} --compress --archive-async --process-max=2 ${strWalPath}/${strSourceFile}", {oLogTest => $self->expect()}); push(@stryExpectedWAL, "${strSourceFile}-${strArchiveChecksum}." . COMPRESS_EXT); # Make sure the temp file no longer exists if it was created if (defined($strArchiveTmp)) { my $oWait = waitInit(5); my $bFound = true; do { $bFound = storageTest()->exists($strArchiveTmp); } while ($bFound && waitMore($oWait)); if ($bFound) { confess "${strArchiveTmp} should have been removed by archive command"; } } # Test that the WAL was pushed $self->archiveCheck($strSourceFile, $strArchiveChecksum, true, $oHostDbMaster->spoolPath()); # Remove from archive_status storageTest()->remove("${strWalPath}/archive_status/${strSourceFile}.ready"); # Remove from spool storageTest()->remove($oHostDbMaster->spoolPath() . '/archive/' . $self->stanza() . "/out/${strSourceFile}.ok"); #--------------------------------------------------------------------------------------------------------------------------- &log(INFO, ' push history file'); storageTest()->put("${strWalPath}/00000002.history", 'HISTORYDATA'); storageTest()->put("${strWalPath}/archive_status/00000002.history.ready", undef); $oHostDbMaster->executeSimple( "${strCommandPush} --archive-async ${strWalPath}/00000002.history", {oLogTest => $self->expect()}); if (!storageRepo()->exists(STORAGE_REPO_ARCHIVE . qw{/} . PG_VERSION_94 . '-1/00000002.history')) { confess 'unable to find history file in archive'; } storageTest()->remove("${strWalPath}/archive_status/00000002.history.ready"); #--------------------------------------------------------------------------------------------------------------------------- &log(INFO, ' db version mismatch error - archive-get unable to retrieve archiveId'); # db section and corresponding history munged $oHostBackup->infoMunge( storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE), {&INFO_ARCHIVE_SECTION_DB_HISTORY => {'1' => {&INFO_ARCHIVE_KEY_DB_VERSION => '8.0'}}}); $oHostDbMaster->executeSimple( $strCommandGet . " ${strSourceFile1} ${strWalPath}/RECOVERYXLOG", {iExpectedExitStatus => ERROR_ARCHIVE_MISMATCH, oLogTest => $self->expect()}); # Restore the file to its original condition $oHostBackup->infoRestore(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE)); #--------------------------------------------------------------------------------------------------------------------------- &log(INFO, ' db system-id mismatch error'); $oHostBackup->infoMunge( storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE), {&INFO_ARCHIVE_SECTION_DB => {&INFO_BACKUP_KEY_SYSTEM_ID => 5000900090001855000}, &INFO_ARCHIVE_SECTION_DB_HISTORY => {'1' => {&INFO_ARCHIVE_KEY_DB_ID => 5000900090001855000}}}); $oHostDbMaster->executeSimple( $strCommandPush . " ${strWalPath}/${strSourceFile}", {iExpectedExitStatus => ERROR_ARCHIVE_MISMATCH, oLogTest => $self->expect()}); $oHostDbMaster->executeSimple( $strCommandGet . " ${strSourceFile1} ${strWalPath}/RECOVERYXLOG", {iExpectedExitStatus => ERROR_ARCHIVE_MISMATCH, oLogTest => $self->expect()}); # Restore the file to its original condition $oHostBackup->infoRestore(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE)); #--------------------------------------------------------------------------------------------------------------------------- &log(INFO, ' stop'); $oHostDbMaster->stop({strStanza => $oHostDbMaster->stanza()}); $oHostDbMaster->executeSimple( $strCommandPush . " ${strWalPath}/${strSourceFile}", {iExpectedExitStatus => ERROR_STOP, oLogTest => $self->expect()}); $oHostDbMaster->executeSimple( $strCommandGet . " ${strSourceFile1} ${strWalPath}/RECOVERYXLOG", {iExpectedExitStatus => ERROR_STOP, oLogTest => $self->expect()}); $oHostDbMaster->start({strStanza => $oHostDbMaster->stanza()}); storageTest->remove("${strWalPath}/RECOVERYXLOG", {bIgnoreMissing => false}); #--------------------------------------------------------------------------------------------------------------------------- &log(INFO, ' WAL duplicate ok'); $oHostDbMaster->executeSimple($strCommandPush . " ${strWalPath}/${strSourceFile}", {oLogTest => $self->expect()}); #--------------------------------------------------------------------------------------------------------------------------- &log(INFO, ' WAL duplicate error'); $strArchiveFile = $self->walGenerate($strWalPath, PG_VERSION_94, 1, $strSourceFile); $oHostDbMaster->executeSimple( $strCommandPush . " ${strWalPath}/${strSourceFile}", {iExpectedExitStatus => ERROR_ARCHIVE_DUPLICATE, oLogTest => $self->expect()}); # Remove WAL storageTest()->remove("${strWalPath}/${strSourceFile}", {bIgnoreMissing => false}); #--------------------------------------------------------------------------------------------------------------------------- &log(INFO, " get second WAL (${strSourceFile})"); $oHostDbMaster->executeSimple( $strCommandGet . ($bRemote ? ' --cmd-ssh=/usr/bin/ssh' : '') . " --archive-async" . (!$bS3 ? " --repo-type=cifs" : '') . " --archive-timeout=5 ${strSourceFile} ${strWalPath}/RECOVERYXLOG", {oLogTest => $self->expect()}); # Check that the destination file exists if (storageDb()->exists("${strWalPath}/RECOVERYXLOG")) { my ($strActualChecksum) = storageDb()->hashSize("${strWalPath}/RECOVERYXLOG"); if ($strActualChecksum ne $strArchiveChecksum) { confess "recovered file hash '${strActualChecksum}' does not match expected '${strArchiveChecksum}'"; } } else { confess "archive file '${strWalPath}/RECOVERYXLOG' is not in destination"; } #--------------------------------------------------------------------------------------------------------------------------- &log(INFO, " get history file"); $oHostDbMaster->executeSimple( $strCommandGet . " --archive-async 00000001.history ${strWalPath}/00000001.history", {iExpectedExitStatus => 1, oLogTest => $self->expect()}); $oHostDbMaster->executeSimple( $strCommandGet . " --archive-async 00000002.history ${strWalPath}/00000002.history", {oLogTest => $self->expect()}); if (${storageDb()->get("${strWalPath}/00000002.history")} ne 'HISTORYDATA') { confess 'history contents do not match original'; } #--------------------------------------------------------------------------------------------------------------------------- &log(INFO, ' .partial WAL'); $strArchiveFile = $self->walGenerate($strWalPath, PG_VERSION_94, 2, "${strSourceFile}.partial"); $oHostDbMaster->executeSimple( $strCommandPush . " ${strWalPath}/${strSourceFile}.partial", {oLogTest => $self->expect()}); $self->archiveCheck("${strSourceFile}.partial", $strArchiveChecksum, false); push(@stryExpectedWAL, "${strSourceFile}.partial-${strArchiveChecksum}"); #--------------------------------------------------------------------------------------------------------------------------- &log(INFO, ' .partial WAL duplicate'); $oHostDbMaster->executeSimple( $strCommandPush . " ${strWalPath}/${strSourceFile}.partial", {oLogTest => $self->expect()}); $self->archiveCheck( "${strSourceFile}.partial", $strArchiveChecksum, false); #--------------------------------------------------------------------------------------------------------------------------- &log(INFO, ' .partial WAL with different checksum'); $strArchiveFile = $self->walGenerate($strWalPath, PG_VERSION_94, 1, "${strSourceFile}.partial"); $oHostDbMaster->executeSimple( $strCommandPush . " ${strWalPath}/${strSourceFile}.partial", {iExpectedExitStatus => ERROR_ARCHIVE_DUPLICATE, oLogTest => $self->expect()}); #--------------------------------------------------------------------------------------------------------------------------- $self->testResult( sub {storageRepo()->list(STORAGE_REPO_ARCHIVE . qw{/} . PG_VERSION_94 . '-1/0000000100000001')}, '(' . join(', ', @stryExpectedWAL) . ')', 'all WAL in archive', {iWaitSeconds => 5}); } } 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Module/Mock/MockExpireTest.pm000066400000000000000000000416621362531507100272140ustar00rootroot00000000000000#################################################################################################################################### # Tests for expire command #################################################################################################################################### package pgBackRestTest::Module::Mock::MockExpireTest; use parent 'pgBackRestTest::Env::HostEnvTest'; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use File::Basename qw(dirname); use Storable qw(dclone); use pgBackRest::Archive::Info; use pgBackRest::Backup::Info; use pgBackRest::DbVersion; use pgBackRest::Common::Exception; use pgBackRest::Common::Ini; use pgBackRest::Common::Log; use pgBackRest::Common::Wait; use pgBackRest::Config::Config; use pgBackRest::Manifest; use pgBackRest::Protocol::Storage::Helper; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::RunTest; use pgBackRestTest::Common::VmTest; use pgBackRestTest::Env::ExpireEnvTest; use pgBackRestTest::Env::Host::HostS3Test; use pgBackRestTest::Env::HostEnvTest; #################################################################################################################################### # initStanzaOption #################################################################################################################################### sub initStanzaOption { my $self = shift; my $strDbBasePath = shift; my $strRepoPath = shift; my $oHostS3 = shift; $self->optionTestSet(CFGOPT_STANZA, $self->stanza()); $self->optionTestSet(CFGOPT_PG_PATH, $strDbBasePath); $self->optionTestSet(CFGOPT_REPO_PATH, $strRepoPath); $self->optionTestSet(CFGOPT_LOG_PATH, $self->testPath()); $self->optionTestSetBool(CFGOPT_ONLINE, false); $self->optionTestSet(CFGOPT_DB_TIMEOUT, 5); $self->optionTestSet(CFGOPT_PROTOCOL_TIMEOUT, 6); if (defined($oHostS3)) { $self->optionTestSet(CFGOPT_REPO_TYPE, CFGOPTVAL_REPO_TYPE_S3); $self->optionTestSet(CFGOPT_REPO_S3_KEY, HOST_S3_ACCESS_KEY); $self->optionTestSet(CFGOPT_REPO_S3_KEY_SECRET, HOST_S3_ACCESS_SECRET_KEY); $self->optionTestSet(CFGOPT_REPO_S3_BUCKET, HOST_S3_BUCKET); $self->optionTestSet(CFGOPT_REPO_S3_ENDPOINT, HOST_S3_ENDPOINT); $self->optionTestSet(CFGOPT_REPO_S3_REGION, HOST_S3_REGION); $self->optionTestSet(CFGOPT_REPO_S3_HOST, $oHostS3->ipGet()); $self->optionTestSetBool(CFGOPT_REPO_S3_VERIFY_TLS, false); } } #################################################################################################################################### # run #################################################################################################################################### sub run { my $self = shift; use constant SECONDS_PER_DAY => 86400; my $lBaseTime = time() - (SECONDS_PER_DAY * 56); my $strDescription; foreach my $rhRun ( {vm => VM1, s3 => true, encrypt => false}, {vm => VM2, s3 => false, encrypt => true}, {vm => VM3, s3 => false, encrypt => false}, {vm => VM4, s3 => true, encrypt => true}, ) { # Only run tests for this vm next if ($rhRun->{vm} ne vmTest($self->vm())); # Increment the run, log, and decide whether this unit test should be run my $bS3 = $rhRun->{s3}; my $bEncrypt = $rhRun->{encrypt}; if ($bS3 && ($self->vm() eq VM3)) { confess &log("cannot configure s3 for expect log tests"); } ############################################################################################################################ if ($self->begin("simple, enc ${bEncrypt}, s3 ${bS3}")) { # Create hosts, file object, and config my ($oHostDbMaster, $oHostDbStandby, $oHostBackup, $oHostS3) = $self->setup( true, $self->expect(), {bS3 => $bS3, bRepoEncrypt => $bEncrypt}); $self->initStanzaOption($oHostDbMaster->dbBasePath(), $oHostBackup->{strRepoPath}, $oHostS3); $self->configTestLoad(CFGCMD_STANZA_CREATE); # Create the test object my $oExpireTest = new pgBackRestTest::Env::ExpireEnvTest( $oHostBackup, $self->backrestExe(), storageRepo(), $self->expect(), $self); $oExpireTest->stanzaCreate($self->stanza(), PG_VERSION_92); #----------------------------------------------------------------------------------------------------------------------- $strDescription = 'Nothing to expire'; $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_INCR, $lBaseTime += SECONDS_PER_DAY, 246); $oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_FULL, 1, $strDescription); #----------------------------------------------------------------------------------------------------------------------- $strDescription = 'Expire oldest full backup, archive expire falls on segment major boundary'; $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_FULL, 1, $strDescription); #----------------------------------------------------------------------------------------------------------------------- $strDescription = 'Expire oldest full backup'; $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY, 256); $oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_FULL, 1, $strDescription); #----------------------------------------------------------------------------------------------------------------------- $strDescription = 'Expire oldest diff backup, archive expire does not fall on major segment boundary'; $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY, undef, 0); $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_INCR, $lBaseTime += SECONDS_PER_DAY, undef, 0); $oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_DIFF, 1, $strDescription); #----------------------------------------------------------------------------------------------------------------------- $strDescription = 'Expire oldest diff backup (cascade to incr)'; $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_DIFF, 1, $strDescription); #----------------------------------------------------------------------------------------------------------------------- $strDescription = 'Expire archive based on newest incr backup'; $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_INCR, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_INCR, 1, $strDescription); #----------------------------------------------------------------------------------------------------------------------- $strDescription = 'Expire diff treating full as diff'; $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->process($self->stanza(), 2, 1, CFGOPTVAL_BACKUP_TYPE_DIFF, 1, $strDescription); #----------------------------------------------------------------------------------------------------------------------- $strDescription = 'Expire diff with repo-retention-archive with warning repo-retention-diff not set'; $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->process($self->stanza(), undef, undef, CFGOPTVAL_BACKUP_TYPE_DIFF, 1, $strDescription); #----------------------------------------------------------------------------------------------------------------------- $strDescription = 'Expire full with repo-retention-archive with warning repo-retention-full not set'; $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->process($self->stanza(), undef, undef, CFGOPTVAL_BACKUP_TYPE_FULL, 1, $strDescription); #----------------------------------------------------------------------------------------------------------------------- $strDescription = 'Expire no archive with warning since repo-retention-archive not set for INCR'; $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_INCR, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_INCR, undef, $strDescription); #----------------------------------------------------------------------------------------------------------------------- $strDescription = 'Expire no archive with warning since neither repo-retention-archive nor repo-retention-diff is set'; $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->process($self->stanza(), undef, undef, CFGOPTVAL_BACKUP_TYPE_DIFF, undef, $strDescription); #----------------------------------------------------------------------------------------------------------------------- $strDescription = 'Use oldest full backup for archive retention'; $oExpireTest->process($self->stanza(), 10, 10, CFGOPTVAL_BACKUP_TYPE_FULL, 10, $strDescription); } ############################################################################################################################ if ($self->begin("stanzaUpgrade, enc ${bEncrypt}, s3 ${bS3}")) { # Create hosts, file object, and config my ($oHostDbMaster, $oHostDbStandby, $oHostBackup, $oHostS3) = $self->setup( true, $self->expect(), {bS3 => $bS3, bRepoEncrypt => $bEncrypt}); $self->initStanzaOption($oHostDbMaster->dbBasePath(), $oHostBackup->{strRepoPath}, $oHostS3); $self->configTestLoad(CFGCMD_STANZA_CREATE); # Create the test object my $oExpireTest = new pgBackRestTest::Env::ExpireEnvTest( $oHostBackup, $self->backrestExe(), storageRepo(), $self->expect(), $self); $oExpireTest->stanzaCreate($self->stanza(), PG_VERSION_92); #----------------------------------------------------------------------------------------------------------------------- $strDescription = 'Create backups in current db version'; $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_INCR, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->process($self->stanza(), undef, undef, CFGOPTVAL_BACKUP_TYPE_DIFF, undef, $strDescription); #----------------------------------------------------------------------------------------------------------------------- $strDescription = 'Upgrade stanza and expire only earliest db backup and archive'; $oExpireTest->stanzaUpgrade($self->stanza(), PG_VERSION_93); $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_INCR, $lBaseTime += SECONDS_PER_DAY, 246); $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->process($self->stanza(), 3, undef, CFGOPTVAL_BACKUP_TYPE_FULL, undef, $strDescription); #----------------------------------------------------------------------------------------------------------------------- $strDescription = 'Upgrade the stanza, create full back - earliest db orphaned archive removed and earliest full backup ' . 'and archive in previous db version removed'; $oExpireTest->stanzaUpgrade($self->stanza(), PG_VERSION_10); $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->process($self->stanza(), 2, undef, CFGOPTVAL_BACKUP_TYPE_FULL, undef, $strDescription); #----------------------------------------------------------------------------------------------------------------------- $strDescription = 'Expire all archive last full backup through pitr'; $oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY); $oExpireTest->process($self->stanza(), 3, 1, CFGOPTVAL_BACKUP_TYPE_DIFF, 1, $strDescription); #----------------------------------------------------------------------------------------------------------------------- $strDescription = 'Expire all archive except for the current database'; $oExpireTest->process($self->stanza(), 2, undef, CFGOPTVAL_BACKUP_TYPE_FULL, undef, $strDescription); #----------------------------------------------------------------------------------------------------------------------- $self->optionTestClear(CFGOPT_DB_TIMEOUT); $self->optionTestClear(CFGOPT_PG_PATH); $self->optionTestClear(CFGOPT_ONLINE); $self->optionTestClear(CFGOPT_PROTOCOL_TIMEOUT); $self->optionTestSet(CFGOPT_REPO_RETENTION_FULL, 1); $self->optionTestSet(CFGOPT_REPO_RETENTION_DIFF, 1); $self->optionTestSet(CFGOPT_REPO_RETENTION_ARCHIVE_TYPE, CFGOPTVAL_BACKUP_TYPE_FULL); $self->optionTestSet(CFGOPT_REPO_RETENTION_ARCHIVE, 1); $self->configTestLoad(CFGCMD_EXPIRE); $strDescription = 'Expiration cannot occur due to info file db mismatch'; # Mismatched version $oHostBackup->infoMunge(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE), {&INFO_ARCHIVE_SECTION_DB => {&INFO_ARCHIVE_KEY_DB_VERSION => PG_VERSION_93, &INFO_ARCHIVE_KEY_DB_SYSTEM_ID => $self->dbSysId(PG_VERSION_95)}, &INFO_ARCHIVE_SECTION_DB_HISTORY => {'3' => {&INFO_ARCHIVE_KEY_DB_VERSION => PG_VERSION_93, &INFO_ARCHIVE_KEY_DB_ID => $self->dbSysId(PG_VERSION_95)}}}); # Restore the info file $oHostBackup->infoRestore(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE)); # Mismatched system ID $oHostBackup->infoMunge(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE), {&INFO_ARCHIVE_SECTION_DB => {&INFO_ARCHIVE_KEY_DB_SYSTEM_ID => 6999999999999999999}, &INFO_ARCHIVE_SECTION_DB_HISTORY => {'3' => {&INFO_ARCHIVE_KEY_DB_VERSION => PG_VERSION_95, &INFO_ARCHIVE_KEY_DB_ID => 6999999999999999999}}}); # Restore the info file $oHostBackup->infoRestore(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE)); } } } 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Module/Mock/MockStanzaTest.pm000066400000000000000000000353061362531507100272160ustar00rootroot00000000000000#################################################################################################################################### # Mock Stanza Module Tests #################################################################################################################################### package pgBackRestTest::Module::Mock::MockStanzaTest; use parent 'pgBackRestTest::Env::HostEnvTest'; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use File::Basename qw(dirname); use pgBackRest::Archive::Info; use pgBackRest::Backup::Info; use pgBackRest::Common::Exception; use pgBackRest::Common::Ini; use pgBackRest::Common::Log; use pgBackRest::Common::Wait; use pgBackRest::Config::Config; use pgBackRest::DbVersion; use pgBackRest::InfoCommon; use pgBackRest::Manifest; use pgBackRest::Protocol::Storage::Helper; use pgBackRest::Storage::Base; use pgBackRest::Storage::Helper; use pgBackRestTest::Env::HostEnvTest; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::FileTest; use pgBackRestTest::Common::RunTest; use pgBackRestTest::Common::VmTest; #################################################################################################################################### # run #################################################################################################################################### sub run { my $self = shift; # Archive and backup info file names my $strArchiveInfoFile = STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE; my $strArchiveInfoCopyFile = STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE . INI_COPY_EXT; my $strArchiveInfoOldFile = "${strArchiveInfoFile}.old"; my $strArchiveInfoCopyOldFile = "${strArchiveInfoCopyFile}.old"; my $strBackupInfoFile = STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO; my $strBackupInfoCopyFile = STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO . INI_COPY_EXT; my $strBackupInfoOldFile = "${strBackupInfoFile}.old"; my $strBackupInfoCopyOldFile = "${strBackupInfoCopyFile}.old"; foreach my $rhRun ( {vm => VM1, remote => false, s3 => false, encrypt => true}, {vm => VM1, remote => true, s3 => true, encrypt => false}, {vm => VM2, remote => false, s3 => true, encrypt => true}, {vm => VM2, remote => true, s3 => false, encrypt => false}, {vm => VM3, remote => false, s3 => false, encrypt => false}, {vm => VM3, remote => true, s3 => true, encrypt => true}, {vm => VM4, remote => false, s3 => true, encrypt => false}, {vm => VM4, remote => true, s3 => false, encrypt => true}, ) { # Only run tests for this vm next if ($rhRun->{vm} ne vmTest($self->vm())); # Increment the run, log, and decide whether this unit test should be run my $bRemote = $rhRun->{remote}; my $bS3 = $rhRun->{s3}; my $bEncrypt = $rhRun->{encrypt}; # Increment the run, log, and decide whether this unit test should be run if (!$self->begin("remote ${bRemote}, s3 ${bS3}, enc ${bEncrypt}")) {next} # Create hosts, file object, and config my ($oHostDbMaster, $oHostDbStandby, $oHostBackup, $oHostS3) = $self->setup( true, $self->expect(), {bHostBackup => $bRemote, bS3 => $bS3, bRepoEncrypt => $bEncrypt}); # Create the stanza $oHostBackup->stanzaCreate('fail on missing control file', {iExpectedExitStatus => ERROR_FILE_MISSING, strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_LOG_LEVEL_FILE) . '=info'}); # Generate pg_control for stanza-create storageDb()->pathCreate(($oHostDbMaster->dbBasePath() . '/' . DB_PATH_GLOBAL), {bCreateParent => true}); $self->controlGenerate($oHostDbMaster->dbBasePath(), PG_VERSION_93); # Fail stanza upgrade before stanza-create has been performed #-------------------------------------------------------------------------------------------------------------------------- $oHostBackup->stanzaUpgrade('fail on stanza not initialized since archive.info is missing', {iExpectedExitStatus => ERROR_FILE_MISSING, strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)}); # Create the stanza successfully without force #-------------------------------------------------------------------------------------------------------------------------- $oHostBackup->stanzaCreate('successfully create the stanza', {strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)}); # Rerun stanza-create and confirm it does not fail #-------------------------------------------------------------------------------------------------------------------------- $oHostBackup->stanzaCreate( 'do not fail on rerun of stanza-create - info files exist and DB section ok', {strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)}); # Stanza Create fails when not using force - database mismatch with pg_control file #-------------------------------------------------------------------------------------------------------------------------- # Change the database version by copying a new pg_control file $self->controlGenerate($oHostDbMaster->dbBasePath(), PG_VERSION_94); $oHostBackup->stanzaCreate('fail on database mismatch and warn force option deprecated', {iExpectedExitStatus => ERROR_FILE_INVALID, strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE)}); # Restore pg_control $self->controlGenerate($oHostDbMaster->dbBasePath(), PG_VERSION_93); # Perform a stanza upgrade which will indicate already up to date #-------------------------------------------------------------------------------------------------------------------------- $oHostBackup->stanzaUpgrade('already up to date', {strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)}); # Create the wal path my $strWalPath = $oHostDbMaster->dbBasePath() . '/pg_xlog'; storageDb()->pathCreate("${strWalPath}/archive_status", {bCreateParent => true}); # Stanza Create fails - missing archive.info from non-empty archive dir #-------------------------------------------------------------------------------------------------------------------------- # Generate WAL then push to get valid archive data in the archive directory my $strArchiveFile = $self->walSegment(1, 1, 1); my $strSourceFile = $self->walGenerate($strWalPath, PG_VERSION_93, 1, $strArchiveFile); my $strCommand = $oHostDbMaster->backrestExe() . ' --config=' . $oHostDbMaster->backrestConfig() . ' --stanza=db archive-push'; $oHostDbMaster->executeSimple($strCommand . " ${strSourceFile}", {oLogTest => $self->expect()}); # With data existing in the archive dir, move the info files and confirm failure forceStorageMove(storageRepo(), $strArchiveInfoFile, $strArchiveInfoOldFile, {bRecurse => false}); forceStorageMove(storageRepo(), $strArchiveInfoCopyFile, $strArchiveInfoCopyOldFile, {bRecurse => false}); if (!$bEncrypt) { $oHostBackup->stanzaCreate('fail on archive info file missing from non-empty dir', {iExpectedExitStatus => ERROR_FILE_MISSING, strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)}); } # Restore info files from copy forceStorageMove(storageRepo(), $strArchiveInfoOldFile, $strArchiveInfoFile, {bRecurse => false}); forceStorageMove(storageRepo(), $strArchiveInfoCopyOldFile, $strArchiveInfoCopyFile, {bRecurse => false}); # Just before upgrading push one last WAL on the old version to ensure it can be retrieved later #-------------------------------------------------------------------------------------------------------------------------- $strArchiveFile = $self->walSegment(1, 1, 2); $strSourceFile = $self->walGenerate($strWalPath, PG_VERSION_93, 1, $strArchiveFile); $oHostDbMaster->executeSimple($strCommand . " ${strSourceFile}", {oLogTest => $self->expect()}); # Fail on archive push due to mismatch of DB since stanza not upgraded #-------------------------------------------------------------------------------------------------------------------------- my $strArchiveTestFile = $self->testPath() . '/test-wal'; storageTest()->put($strArchiveTestFile, $self->walGenerateContent(PG_VERSION_94)); # Upgrade the DB by copying new pg_control $self->controlGenerate($oHostDbMaster->dbBasePath(), PG_VERSION_94); forceStorageMode(storageDb(), $oHostDbMaster->dbBasePath() . '/' . DB_FILE_PGCONTROL, '600'); # Fail on attempt to push an archive $oHostDbMaster->archivePush($strWalPath, $strArchiveTestFile, 1, ERROR_ARCHIVE_MISMATCH); # Perform a successful stanza upgrade noting additional history lines in info files for new version of the database #-------------------------------------------------------------------------------------------------------------------------- # Save a pre-upgrade copy of archive info fo testing db-id mismatch forceStorageMove(storageRepo(), $strArchiveInfoCopyFile, $strArchiveInfoCopyOldFile, {bRecurse => false}); $oHostBackup->stanzaUpgrade('successful upgrade creates additional history', {strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)}); # Make sure that WAL from the old version can still be retrieved #-------------------------------------------------------------------------------------------------------------------------- # Generate the old pg_control so it looks like the original db has been restored $self->controlGenerate($oHostDbMaster->dbBasePath(), PG_VERSION_93); # Attempt to get the last archive log that was pushed to this repo $oHostDbMaster->executeSimple( $oHostDbMaster->backrestExe() . ' --config=' . $oHostDbMaster->backrestConfig() . " --stanza=db archive-get ${strArchiveFile} " . $oHostDbMaster->dbBasePath() . '/pg_xlog/RECOVERYXLOG', {oLogTest => $self->expect()}); # Copy the new pg_control back so the tests can continue with the upgraded stanza $self->controlGenerate($oHostDbMaster->dbBasePath(), PG_VERSION_94); forceStorageMode(storageDb(), $oHostDbMaster->dbBasePath() . '/' . DB_FILE_PGCONTROL, '600'); # After stanza upgrade, make sure archives are pushed to the new db verion-id directory (9.4-2) #-------------------------------------------------------------------------------------------------------------------------- # Push a WAL segment so have a valid file in the latest DB archive dir only $oHostDbMaster->archivePush($strWalPath, $strArchiveTestFile, 1); $self->testResult( sub {storageRepo()->list(STORAGE_REPO_ARCHIVE . qw{/} . PG_VERSION_94 . '-2/0000000100000001')}, '000000010000000100000001-' . $self->walGenerateContentChecksum(PG_VERSION_94) . '.' . COMPRESS_EXT, 'check that WAL is in the archive at -2'); # Create the tablespace directory and perform a backup #-------------------------------------------------------------------------------------------------------------------------- storageTest()->pathCreate($oHostDbMaster->dbBasePath() . '/' . DB_PATH_PGTBLSPC); $oHostBackup->backup( 'full', 'create first full backup ', {strOptionalParam => '--repo1-retention-full=2 --no-' . cfgOptionName(CFGOPT_ONLINE)}, false); # Upgrade the stanza #-------------------------------------------------------------------------------------------------------------------------- # Copy pg_control for 9.5 $self->controlGenerate($oHostDbMaster->dbBasePath(), PG_VERSION_95); forceStorageMode(storageDb(), $oHostDbMaster->dbBasePath() . '/' . DB_FILE_PGCONTROL, '600'); $oHostBackup->stanzaUpgrade('successfully upgrade', {strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)}); # Copy archive.info and restore really old version forceStorageMove(storageRepo(), $strArchiveInfoFile, $strArchiveInfoOldFile, {bRecurse => false}); forceStorageRemove(storageRepo(), $strArchiveInfoCopyFile, {bRecurse => false}); forceStorageMove(storageRepo(), $strArchiveInfoCopyOldFile, $strArchiveInfoFile, {bRecurse => false}); # Confirm versions my $oArchiveInfo = new pgBackRest::Archive::Info(storageRepo()->pathGet('archive/' . $self->stanza())); my $oBackupInfo = new pgBackRest::Backup::Info(storageRepo()->pathGet('backup/' . $self->stanza())); $self->testResult(sub {$oArchiveInfo->test(INFO_ARCHIVE_SECTION_DB, INFO_ARCHIVE_KEY_DB_VERSION, undef, PG_VERSION_93)}, true, 'archive at old pg version'); $self->testResult(sub {$oBackupInfo->test(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_DB_VERSION, undef, PG_VERSION_95)}, true, 'backup at new pg version'); $oHostBackup->stanzaUpgrade( 'upgrade fails with mismatched db-ids', {iExpectedExitStatus => ERROR_FILE_INVALID, strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)}); # Restore archive.info forceStorageMove(storageRepo(), $strArchiveInfoOldFile, $strArchiveInfoFile, {bRecurse => false}); # Push a WAL and create a backup in the new DB to confirm diff changed to full #-------------------------------------------------------------------------------------------------------------------------- storageTest()->put($strArchiveTestFile, $self->walGenerateContent(PG_VERSION_95)); $oHostDbMaster->archivePush($strWalPath, $strArchiveTestFile, 1); # Test backup is changed from type=DIFF to FULL (WARN message displayed) my $oExecuteBackup = $oHostBackup->backupBegin('diff', 'diff changed to full backup', {strOptionalParam => '--repo1-retention-full=2 --no-' . cfgOptionName(CFGOPT_ONLINE)}); $oHostBackup->backupEnd('full', $oExecuteBackup, undef, false); # Delete the stanza #-------------------------------------------------------------------------------------------------------------------------- $oHostBackup->stanzaDelete('fail on missing stop file', {iExpectedExitStatus => ERROR_FILE_MISSING}); $oHostBackup->stop({strStanza => $self->stanza()}); $oHostBackup->stanzaDelete('successfully delete the stanza'); } } 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Module/Performance/000077500000000000000000000000001362531507100253075ustar00rootroot00000000000000pgbackrest-release-2.24/test/lib/pgBackRestTest/Module/Performance/PerformanceArchivePerlTest.pm000066400000000000000000000063551362531507100331040ustar00rootroot00000000000000#################################################################################################################################### # Archive Performance Tests #################################################################################################################################### package pgBackRestTest::Module::Performance::PerformanceArchivePerlTest; use parent 'pgBackRestTest::Common::RunTest'; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use English '-no_match_vars'; use Storable qw(dclone); use Time::HiRes qw(gettimeofday); use pgBackRest::Common::Log; use pgBackRest::Config::Config; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::RunTest; #################################################################################################################################### # initModule #################################################################################################################################### sub initModule { my $self = shift; $self->{strSpoolPath} = $self->testPath() . '/spool'; } #################################################################################################################################### # initTest #################################################################################################################################### sub initTest { my $self = shift; # Create spool path storageTest()->pathCreate($self->{strSpoolPath}, {bIgnoreExists => true, bCreateParent => true}); } #################################################################################################################################### # run #################################################################################################################################### sub run { my $self = shift; ################################################################################################################################ if ($self->begin("archive-push async (detect ok file)")) { #--------------------------------------------------------------------------------------------------------------------------- storageTest()->put( storageTest()->openWrite( 'spool/archive/' . $self->stanza() . '/out/000000010000000100000001.ok', {bPathCreate => true})); my $iRunTotal = 1; my $lTimeBegin = gettimeofday(); for (my $iIndex = 0; $iIndex < $iRunTotal; $iIndex++) { executeTest( $self->backrestExe() . ' --' . cfgOptionName(CFGOPT_STANZA) . '=' . $self->stanza() . ' --' . cfgOptionName(CFGOPT_ARCHIVE_ASYNC) . ' --' . cfgOptionName(CFGOPT_SPOOL_PATH) . '=' . $self->{strSpoolPath} . ' --' . cfgOptionName(CFGOPT_ARCHIVE_TIMEOUT) . '=1' . ' archive-push /pg_xlog/000000010000000100000001'); } &log(INFO, 'time per execution: ' . ((gettimeofday() - $lTimeBegin) / $iRunTotal)); } } 1; pgbackrest-release-2.24/test/lib/pgBackRestTest/Module/Real/000077500000000000000000000000001362531507100237315ustar00rootroot00000000000000pgbackrest-release-2.24/test/lib/pgBackRestTest/Module/Real/RealAllTest.pm000066400000000000000000001506601362531507100264530ustar00rootroot00000000000000#################################################################################################################################### # Test All Commands On PostgreSQL Clusters #################################################################################################################################### package pgBackRestTest::Module::Real::RealAllTest; use parent 'pgBackRestTest::Env::HostEnvTest'; #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess); use File::Basename qw(dirname); use pgBackRest::Archive::Info; use pgBackRest::Backup::Info; use pgBackRest::Db; use pgBackRest::DbVersion; use pgBackRest::Common::Exception; use pgBackRest::Common::Ini; use pgBackRest::Common::Log; use pgBackRest::Common::Wait; use pgBackRest::Config::Config; use pgBackRest::InfoCommon; use pgBackRest::Manifest; use pgBackRest::Protocol::Storage::Helper; use pgBackRest::Storage::Helper; use pgBackRest::Version; use pgBackRestTest::Common::ContainerTest; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::FileTest; use pgBackRestTest::Common::RunTest; use pgBackRestTest::Common::VmTest; use pgBackRestTest::Env::Host::HostBaseTest; use pgBackRestTest::Env::Host::HostBackupTest; use pgBackRestTest::Env::Host::HostDbTest; use pgBackRestTest::Env::HostEnvTest; use pgBackRestTest::Common::Storage; use pgBackRestTest::Common::StoragePosix; #################################################################################################################################### # run #################################################################################################################################### sub run { my $self = shift; foreach my $bS3 (false, true) { foreach my $bHostBackup ($bS3 ? (true) : (false, true)) { # Standby should only be tested for pg versions that support it foreach my $bHostStandby ($bS3 ? (false) : (false, true)) { # Master and standby backup destinations on need to be tested on one db version since it is not version specific foreach my $strBackupDestination ( $bS3 || $bHostBackup ? (HOST_BACKUP) : $bHostStandby ? (HOST_DB_MASTER, HOST_DB_STANDBY) : (HOST_DB_MASTER)) { my $bCompress = $bHostBackup && !$bHostStandby; my $bRepoEncrypt = ($bCompress && !$bS3) ? true : false; # Increment the run, log, and decide whether this unit test should be run my $hyVm = vmGet(); my $strDbVersionMostRecent = ${$hyVm->{$self->vm()}{&VM_DB_TEST}}[-1]; next if (!$self->begin( "bkp ${bHostBackup}, sby ${bHostStandby}, dst ${strBackupDestination}, cmp ${bCompress}, s3 ${bS3}, " . "enc ${bRepoEncrypt}", # Use the most recent db version on the expect vm for expect testing $self->vm() eq VM_EXPECT && $self->pgVersion() eq $strDbVersionMostRecent)); # Skip when s3 and host backup tests when there is more than one version of pg being tested and this is not the last one if (($bS3 || $bHostBackup) && (@{$hyVm->{$self->vm()}{&VM_DB_TEST}} > 1 && $strDbVersionMostRecent ne $self->pgVersion())) { &log(INFO, "skipped - this test is run this OS using PG ${strDbVersionMostRecent}"); next; } # Skip hot standby tests if the system does not support hot standby if ($bHostStandby && $self->pgVersion() < PG_VERSION_HOT_STANDBY) { &log(INFO, 'skipped - this version of PostgreSQL does not support hot standby'); next; } # Skip backup destinations other than backup host when standby except for one arbitrary db version if ($bHostStandby && $strBackupDestination ne HOST_BACKUP && $self->pgVersion() ne PG_VERSION_96) { &log(INFO, 'skipped - standby with backup destination other than backup host is tested on PG ' . PG_VERSION_96); next; } # Create hosts, file object, and config my ($oHostDbMaster, $oHostDbStandby, $oHostBackup, $oHostS3) = $self->setup( false, $self->expect(), {bHostBackup => $bHostBackup, bStandby => $bHostStandby, strBackupDestination => $strBackupDestination, bCompress => $bCompress, bArchiveAsync => false, bS3 => $bS3, bRepoEncrypt => $bRepoEncrypt}); # Only perform extra tests on certain runs to save time my $bTestLocal = $self->runCurrent() == 1; my $bTestExtra = $bTestLocal || $self->runCurrent() == 4 || ($self->runCurrent() == 6 && $self->pgVersion() eq PG_VERSION_96); # If S3 set process max to 2. This seems like the best place for parallel testing since it will help speed S3 processing # without slowing down the other tests too much. if ($bS3) { $oHostBackup->configUpdate({&CFGDEF_SECTION_GLOBAL => {cfgOptionName(CFGOPT_PROCESS_MAX) => 2}}); $oHostDbMaster->configUpdate({&CFGDEF_SECTION_GLOBAL => {cfgOptionName(CFGOPT_PROCESS_MAX) => 2}}); } $oHostDbMaster->clusterCreate(); # Create the stanza $oHostBackup->stanzaCreate('main create stanza info files'); # Get passphrase to access the Manifest file from backup.info - returns undefined if repo not encrypted my $strCipherPass = (new pgBackRest::Backup::Info(storageRepo()->pathGet(STORAGE_REPO_BACKUP)))->cipherPassSub(); # Create a manifest with the pg version to get version-specific paths my $oManifest = new pgBackRest::Manifest(BOGUS, {bLoad => false, strDbVersion => $self->pgVersion(), iDbCatalogVersion => $self->dbCatalogVersion($self->pgVersion()), strCipherPass => $strCipherPass, strCipherPassSub => $bRepoEncrypt ? ENCRYPTION_KEY_BACKUPSET : undef}); # Static backup parameters my $fTestDelay = 1; # Restore test string my $strDefaultMessage = 'default'; my $strFullMessage = 'full'; my $strStandbyMessage = 'standby'; my $strIncrMessage = 'incr'; my $strTimeMessage = 'time'; my $strXidMessage = 'xid'; my $strNameMessage = 'name'; my $strTimelineMessage = 'timeline'; # Create two new databases if ($bTestLocal) { $oHostDbMaster->sqlExecute('create database test1', {bAutoCommit => true}); $oHostDbMaster->sqlExecute('create database test2', {bAutoCommit => true}); } # Test check command and stanza create #--------------------------------------------------------------------------------------------------------------------------- if ($bTestExtra) { # In this section the same comment can be used multiple times so make it a variable that can be set once and reused my $strComment = undef; # Archive and backup info file names my $strArchiveInfoFile = STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE; my $strArchiveInfoCopyFile = STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE . INI_COPY_EXT; my $strArchiveInfoOldFile = "${strArchiveInfoFile}.old"; my $strArchiveInfoCopyOldFile = "${strArchiveInfoCopyFile}.old"; my $strBackupInfoFile = STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO; my $strBackupInfoCopyFile = STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO . INI_COPY_EXT; my $strBackupInfoOldFile = "${strBackupInfoFile}.old"; my $strBackupInfoCopyOldFile = "${strBackupInfoCopyFile}.old"; # Move the archive.info files to simulate missing file forceStorageMove(storageRepo(), $strArchiveInfoFile, $strArchiveInfoOldFile, {bRecurse => false}); forceStorageMove(storageRepo(), $strArchiveInfoCopyFile, $strArchiveInfoCopyOldFile, {bRecurse => false}); $oHostDbMaster->check( 'fail on missing archive.info file', {iTimeout => 0.1, iExpectedExitStatus => ERROR_FILE_MISSING}); # Backup.info was created earlier so restore archive info files forceStorageMove(storageRepo(), $strArchiveInfoOldFile, $strArchiveInfoFile, {bRecurse => false}); forceStorageMove(storageRepo(), $strArchiveInfoCopyOldFile, $strArchiveInfoCopyFile, {bRecurse => false}); # Check ERROR_ARCHIVE_DISABLED error $strComment = 'fail on archive_mode=off'; $oHostDbMaster->clusterRestart({bIgnoreLogError => true, bArchiveEnabled => false}); $oHostBackup->backup(CFGOPTVAL_BACKUP_TYPE_FULL, $strComment, {iExpectedExitStatus => ERROR_ARCHIVE_DISABLED}); $oHostDbMaster->check($strComment, {iTimeout => 0.1, iExpectedExitStatus => ERROR_ARCHIVE_DISABLED}); # If running the remote tests then also need to run check locally if ($bHostBackup) { $oHostBackup->check($strComment, {iTimeout => 0.1, iExpectedExitStatus => ERROR_ARCHIVE_DISABLED}); } # Check ERROR_ARCHIVE_COMMAND_INVALID error $strComment = 'fail on invalid archive_command'; $oHostDbMaster->clusterRestart({bIgnoreLogError => true, bArchive => false}); $oHostBackup->backup(CFGOPTVAL_BACKUP_TYPE_FULL, $strComment, {iExpectedExitStatus => ERROR_ARCHIVE_COMMAND_INVALID}); $oHostDbMaster->check($strComment, {iTimeout => 0.1, iExpectedExitStatus => ERROR_ARCHIVE_COMMAND_INVALID}); # If running the remote tests then also need to run check locally if ($bHostBackup) { $oHostBackup->check($strComment, {iTimeout => 0.1, iExpectedExitStatus => ERROR_ARCHIVE_COMMAND_INVALID}); } # When archive-check=n then ERROR_ARCHIVE_TIMEOUT will be raised instead of ERROR_ARCHIVE_COMMAND_INVALID # ??? But maybe we should error with the fact that that option is not valid $strComment = 'fail on archive timeout when archive-check=n'; $oHostDbMaster->check( $strComment, {iTimeout => 0.1, iExpectedExitStatus => ERROR_ARCHIVE_TIMEOUT, strOptionalParam => '--no-archive-check'}); # Stop the cluster ignoring any errors in the postgresql log $oHostDbMaster->clusterStop({bIgnoreLogError => true}); # Providing a sufficient archive-timeout, verify that the check command runs successfully. $strComment = 'verify success'; $oHostDbMaster->clusterStart(); $oHostDbMaster->check($strComment, {iTimeout => 5}); # If running the remote tests then also need to run check locally if ($bHostBackup) { $oHostBackup->check($strComment, {iTimeout => 5}); } # Check archive mismatch due to upgrade error $strComment = 'fail on archive mismatch after upgrade'; # load the archive info file and munge it for testing by breaking the database version $oHostBackup->infoMunge( storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE), {&INFO_ARCHIVE_SECTION_DB => {&INFO_ARCHIVE_KEY_DB_VERSION => '8.0'}, &INFO_ARCHIVE_SECTION_DB_HISTORY => {1 => {&INFO_ARCHIVE_KEY_DB_VERSION => '8.0'}}}); $oHostDbMaster->check($strComment, {iTimeout => 0.1, iExpectedExitStatus => ERROR_FILE_INVALID}); # If running the remote tests then also need to run check locally if ($bHostBackup) { $oHostBackup->check($strComment, {iTimeout => 0.1, iExpectedExitStatus => ERROR_FILE_INVALID}); } # Restore the file to its original condition $oHostBackup->infoRestore(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE)); # Check archive_timeout error when WAL segment is not found $strComment = 'fail on archive timeout'; $oHostDbMaster->clusterRestart({bIgnoreLogError => true, bArchiveInvalid => true}); $oHostDbMaster->check($strComment, {iTimeout => 0.1, iExpectedExitStatus => ERROR_ARCHIVE_TIMEOUT}); # If running the remote tests then also need to run check locally if ($bHostBackup) { $oHostBackup->check($strComment, {iTimeout => 0.1, iExpectedExitStatus => ERROR_ARCHIVE_TIMEOUT}); } # Restart the cluster ignoring any errors in the postgresql log $oHostDbMaster->clusterRestart({bIgnoreLogError => true}); # With a valid archive info, create the backup.info file by running a backup then munge the backup.info file. # Check backup mismatch error $strComment = 'fail on backup info mismatch'; # Load the backup.info file and munge it for testing by breaking the database version and system id $oHostBackup->infoMunge( storageRepo()->pathGet(STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO), {&INFO_BACKUP_SECTION_DB => {&INFO_BACKUP_KEY_DB_VERSION => '8.0', &INFO_BACKUP_KEY_SYSTEM_ID => 6999999999999999999}, &INFO_BACKUP_SECTION_DB_HISTORY => {1 => {&INFO_BACKUP_KEY_DB_VERSION => '8.0', &INFO_BACKUP_KEY_SYSTEM_ID => 6999999999999999999}}}); # Run the test $oHostDbMaster->check($strComment, {iTimeout => 5, iExpectedExitStatus => ERROR_FILE_INVALID}); # If running the remote tests then also need to run check locally if ($bHostBackup) { $oHostBackup->check($strComment, {iTimeout => 5, iExpectedExitStatus => ERROR_FILE_INVALID}); } # Restore the file to its original condition $oHostBackup->infoRestore(storageRepo()->pathGet(STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO)); # ??? Removed temporarily until manifest build can be brought back into the check command # Create a directory in pg_data location that is only readable by root to ensure manifest->build is called by check # my $strDir = $oHostDbMaster->dbBasePath() . '/rootreaddir'; # executeTest('sudo mkdir ' . $strDir); # executeTest("sudo chown root:root ${strDir}"); # executeTest("sudo chmod 400 ${strDir}"); # # $strComment = 'confirm master manifest->build executed'; # $oHostDbMaster->check($strComment, {iTimeout => 5, iExpectedExitStatus => ERROR_PATH_OPEN}); # executeTest("sudo rmdir ${strDir}"); # Providing a sufficient archive-timeout, verify that the check command runs successfully now with valid # archive.info and backup.info files $strComment = 'verify success after backup'; $oHostDbMaster->check($strComment, {iTimeout => 5}); # If running the remote tests then also need to run check locally if ($bHostBackup) { $oHostBackup->check($strComment, {iTimeout => 5}); } # Restart the cluster ignoring any errors in the postgresql log $oHostDbMaster->clusterRestart({bIgnoreLogError => true}); # Stanza Create #----------------------------------------------------------------------------------------------------------------------- # With data existing in the archive and backup directory, move info files and confirm failure forceStorageMove(storageRepo(), $strArchiveInfoFile, $strArchiveInfoOldFile, {bRecurse => false}); forceStorageMove(storageRepo(), $strArchiveInfoCopyFile, $strArchiveInfoCopyOldFile, {bRecurse => false}); forceStorageMove(storageRepo(), $strBackupInfoFile, $strBackupInfoOldFile, {bRecurse => false}); forceStorageMove(storageRepo(), $strBackupInfoCopyFile, $strBackupInfoCopyOldFile, {bRecurse => false}); $oHostBackup->stanzaCreate( 'fail on backup info file missing from non-empty dir', {iExpectedExitStatus => ERROR_PATH_NOT_EMPTY}); # Change the database version by copying a new pg_control file to a new pg-path to use for db mismatch test storageLocal()->pathCreate( $oHostDbMaster->dbPath() . '/testbase/' . DB_PATH_GLOBAL, {strMode => '0700', bIgnoreExists => true, bCreateParent => true}); $self->controlGenerate( $oHostDbMaster->dbPath() . '/testbase', $self->pgVersion() eq PG_VERSION_94 ? PG_VERSION_95 : PG_VERSION_94); # Run stanza-create online to confirm proper handling of configValidation error against new pg-path $oHostBackup->stanzaCreate('fail on database mismatch with directory', {strOptionalParam => ' --' . cfgOptionName(CFGOPT_PG_PATH) . '=' . $oHostDbMaster->dbPath() . '/testbase/', iExpectedExitStatus => ERROR_DB_MISMATCH}); # Remove the directories to be able to create the stanza forceStorageRemove(storageRepo(), STORAGE_REPO_BACKUP, {bRecurse => true}); forceStorageRemove(storageRepo(), STORAGE_REPO_ARCHIVE, {bRecurse => true}); # Stanza Upgrade - tests configValidate code - all other tests in synthetic integration tests #----------------------------------------------------------------------------------------------------------------------- # Run stanza-create offline to create files needing to be upgraded (using new pg-path) $oHostBackup->stanzaCreate('successfully create stanza files to be upgraded', {strOptionalParam => ' --' . cfgOptionName(CFGOPT_PG_PATH) . '=' . $oHostDbMaster->dbPath() . '/testbase/ --no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE)}); my $oArchiveInfo = new pgBackRest::Archive::Info(storageRepo()->pathGet('archive/' . $self->stanza())); my $oBackupInfo = new pgBackRest::Backup::Info(storageRepo()->pathGet('backup/' . $self->stanza())); # Read info files to confirm the files were created with a different database version if ($self->pgVersion() eq PG_VERSION_94) { $self->testResult(sub {$oArchiveInfo->test(INFO_ARCHIVE_SECTION_DB, INFO_ARCHIVE_KEY_DB_VERSION, undef, PG_VERSION_95)}, true, 'archive upgrade forced with pg mismatch'); $self->testResult(sub {$oBackupInfo->test(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_DB_VERSION, undef, PG_VERSION_95)}, true, 'backup upgrade forced with pg mismatch'); } else { $self->testResult(sub {$oArchiveInfo->test(INFO_ARCHIVE_SECTION_DB, INFO_ARCHIVE_KEY_DB_VERSION, undef, PG_VERSION_94)}, true, 'archive create forced with pg mismatch in prep for stanza-upgrade'); $self->testResult(sub {$oBackupInfo->test(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_DB_VERSION, undef, PG_VERSION_94)}, true, 'backup create forced with pg mismatch in prep for stanza-upgrade'); } # Run stanza-upgrade online with the default pg-path to correct the info files $oHostBackup->stanzaUpgrade('upgrade stanza files online'); # Reread the info files and confirm the result $oArchiveInfo = new pgBackRest::Archive::Info(storageRepo()->pathGet('archive/' . $self->stanza())); $oBackupInfo = new pgBackRest::Backup::Info(storageRepo()->pathGet('backup/' . $self->stanza())); $self->testResult(sub {$oArchiveInfo->test(INFO_ARCHIVE_SECTION_DB, INFO_ARCHIVE_KEY_DB_VERSION, undef, $self->pgVersion())}, true, 'archive upgrade online corrects db'); $self->testResult(sub {$oBackupInfo->test(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_DB_VERSION, undef, $self->pgVersion())}, true, 'backup upgrade online corrects db'); } # Full backup #--------------------------------------------------------------------------------------------------------------------------- # Create the table where test messages will be stored $oHostDbMaster->sqlExecute("create table test (message text not null)"); $oHostDbMaster->sqlWalRotate(); $oHostDbMaster->sqlExecute("insert into test values ('$strDefaultMessage')"); if ($bTestLocal) { # Acquire the backup advisory lock so it looks like a backup is running if (!$oHostDbMaster->sqlSelectOne('select pg_try_advisory_lock(' . DB_BACKUP_ADVISORY_LOCK . ')')) { confess 'unable to acquire advisory lock for testing'; } $oHostBackup->backup( CFGOPTVAL_BACKUP_TYPE_FULL, 'fail on backup lock exists', {iExpectedExitStatus => ERROR_LOCK_ACQUIRE}); # Release the backup advisory lock so the next backup will succeed if (!$oHostDbMaster->sqlSelectOne('select pg_advisory_unlock(' . DB_BACKUP_ADVISORY_LOCK . ')')) { confess 'unable to release advisory lock'; } } $oHostDbMaster->sqlExecute("update test set message = '$strFullMessage'"); # Required to set hint bits to be sent to the standby to make the heap match on both sides $oHostDbMaster->sqlSelectOneTest('select message from test', $strFullMessage); my $strFullBackup = $oHostBackup->backup( CFGOPTVAL_BACKUP_TYPE_FULL, 'update during backup', {strOptionalParam => ' --' . cfgOptionName(CFGOPT_BUFFER_SIZE) . '=16384'}); # Enabled async archiving $oHostBackup->configUpdate({&CFGDEF_SECTION_GLOBAL => {cfgOptionName(CFGOPT_ARCHIVE_ASYNC) => 'y'}}); # Kick out a bunch of archive logs to exercise async archiving. Only do this when compressed and remote to slow it # down enough to make it evident that the async process is working. if ($bTestExtra && $bCompress && $strBackupDestination eq HOST_BACKUP) { &log(INFO, ' multiple wal switches to exercise async archiving'); $oHostDbMaster->sqlExecute("create table wal_activity (id int)"); $oHostDbMaster->sqlWalRotate(); $oHostDbMaster->sqlExecute("insert into wal_activity values (1)"); $oHostDbMaster->sqlWalRotate(); $oHostDbMaster->sqlExecute("insert into wal_activity values (2)"); $oHostDbMaster->sqlWalRotate(); $oHostDbMaster->sqlExecute("insert into wal_activity values (3)"); $oHostDbMaster->sqlWalRotate(); $oHostDbMaster->sqlExecute("insert into wal_activity values (4)"); $oHostDbMaster->sqlWalRotate(); } # Setup replica #--------------------------------------------------------------------------------------------------------------------------- if ($bHostStandby) { my %oRemapHash; $oRemapHash{&MANIFEST_TARGET_PGDATA} = $oHostDbStandby->dbBasePath(); if ($oHostDbStandby->pgVersion() >= PG_VERSION_92) { $oHostDbStandby->linkRemap($oManifest->walPath(), $oHostDbStandby->dbPath() . '/' . $oManifest->walPath()); } $oHostDbStandby->restore( 'restore backup on replica', cfgDefOptionDefault(CFGCMD_RESTORE, CFGOPT_SET), {rhRemapHash => \%oRemapHash, strType => CFGOPTVAL_RESTORE_TYPE_STANDBY, strOptionalParam => ' --recovery-option="primary_conninfo=host=' . HOST_DB_MASTER . ' port=' . $oHostDbMaster->pgPort() . ' user=replicator"'}); $oHostDbStandby->clusterStart({bHotStandby => true}); # Make sure streaming replication is on $oHostDbMaster->sqlSelectOneTest( "select client_addr || '-' || state from pg_stat_replication", $oHostDbStandby->ipGet() . '/32-streaming'); # Check that the cluster was restored properly $oHostDbStandby->sqlSelectOneTest('select message from test', $strFullMessage); # Update message for standby $oHostDbMaster->sqlExecute("update test set message = '$strStandbyMessage'"); if ($oHostDbStandby->pgVersion() >= PG_VERSION_BACKUP_STANDBY) { # If there is only a master and a replica and the replica is the backup destination, then if pg2-host and pg3-host # are BOGUS, confirm failure to reach the master if (!$bHostBackup && $bHostStandby && $strBackupDestination eq HOST_DB_STANDBY) { my $strStandbyBackup = $oHostBackup->backup( CFGOPTVAL_BACKUP_TYPE_FULL, 'backup from standby, failure to reach master', {bStandby => true, iExpectedExitStatus => ERROR_DB_CONNECT, strOptionalParam => '--' . cfgOptionName(cfgOptionIdFromIndex(CFGOPT_PG_HOST, cfgOptionIndexTotal(CFGOPT_PG_PATH))) . '=' . BOGUS}); } else { my $strStandbyBackup = $oHostBackup->backup( CFGOPTVAL_BACKUP_TYPE_FULL, 'backup from standby, failure to access at least one standby', {bStandby => true, iExpectedExitStatus => ERROR_DB_CONNECT, strOptionalParam => '--' . cfgOptionName(cfgOptionIdFromIndex(CFGOPT_PG_HOST, cfgOptionIndexTotal(CFGOPT_PG_PATH))) . '=' . BOGUS}); } } my $strStandbyBackup = $oHostBackup->backup( CFGOPTVAL_BACKUP_TYPE_FULL, 'backup from standby', {bStandby => true, iExpectedExitStatus => $oHostDbStandby->pgVersion() >= PG_VERSION_BACKUP_STANDBY ? undef : ERROR_CONFIG, strOptionalParam => '--' . cfgOptionName(CFGOPT_REPO_RETENTION_FULL) . '=1'}); if ($oHostDbStandby->pgVersion() >= PG_VERSION_BACKUP_STANDBY) { $strFullBackup = $strStandbyBackup; } # ??? Removed temporarily until manifest build can be brought back into the check command # # Create a directory in pg_data location that is only readable by root to ensure manifest->build is called by check # my $strDir = $oHostDbStandby->dbBasePath() . '/rootreaddir'; # executeTest('sudo mkdir ' . $strDir); # executeTest("sudo chown root:root ${strDir}"); # executeTest("sudo chmod 400 ${strDir}"); # # my $strComment = 'confirm standby manifest->build executed'; # # # If there is an invalid host, the final error returned from check will be the inability to resolve the name which is # # an open error instead of a read error # if (!$oHostDbStandby->bogusHost()) # { # $oHostDbStandby->check($strComment, {iTimeout => 5, iExpectedExitStatus => ERROR_PATH_OPEN}); # } # else # { # $oHostDbStandby->check($strComment, {iTimeout => 5, iExpectedExitStatus => ERROR_FILE_READ}); # } # # # Remove the directory in pg_data location that is only readable by root # executeTest("sudo rmdir ${strDir}"); # Confirm the check command runs without error on a standby (when a bogus host is not configured) if (!$oHostDbStandby->bogusHost()) { $oHostDbStandby->check('verify check command on standby'); } # Shutdown the standby before creating tablespaces (this will error since paths are different) $oHostDbStandby->clusterStop({bIgnoreLogError => true}); } # Execute stop and make sure the backup fails #--------------------------------------------------------------------------------------------------------------------------- # Restart the cluster to check for any errors before continuing since the stop tests will definitely create errors and # the logs will to be deleted to avoid causing issues further down the line. if ($bTestExtra && !$bS3) { $oHostDbMaster->clusterRestart(); $oHostDbMaster->stop(); $oHostBackup->backup( CFGOPTVAL_BACKUP_TYPE_INCR, 'attempt backup when stopped', {iExpectedExitStatus => $oHostBackup == $oHostDbMaster ? ERROR_STOP : ERROR_DB_CONNECT}); $oHostDbMaster->start(); } # Setup the time targets #--------------------------------------------------------------------------------------------------------------------------- $oHostDbMaster->sqlExecute("update test set message = '$strTimeMessage'"); $oHostDbMaster->sqlWalRotate(); my $strTimeTarget = $oHostDbMaster->sqlSelectOne("select current_timestamp"); &log(INFO, " time target is ${strTimeTarget}"); # Incr backup - fail on archive_mode=always when version >= 9.5 #--------------------------------------------------------------------------------------------------------------------------- if ($bTestLocal && $oHostDbMaster->pgVersion() >= PG_VERSION_95) { # Set archive_mode=always $oHostDbMaster->clusterRestart({bArchiveAlways => true}); $oHostBackup->backup( CFGOPTVAL_BACKUP_TYPE_INCR, 'fail on archive_mode=always', {iExpectedExitStatus => ERROR_FEATURE_NOT_SUPPORTED}); # Reset the cluster to a normal state so the next test will work $oHostDbMaster->clusterRestart(); } # Incr backup #--------------------------------------------------------------------------------------------------------------------------- # Create a tablespace directory storageTest()->pathCreate($oHostDbMaster->tablespacePath(1), {strMode => '0700', bCreateParent => true}); # Also create it on the standby so replay won't fail if (defined($oHostDbStandby)) { storageTest()->pathCreate($oHostDbStandby->tablespacePath(1), {strMode => '0700', bCreateParent => true}); } $oHostDbMaster->sqlExecute( "create tablespace ts1 location '" . $oHostDbMaster->tablespacePath(1) . "'", {bAutoCommit => true}); $oHostDbMaster->sqlExecute("alter table test set tablespace ts1"); # Create a table in the tablespace that will not be modified again to be sure it does get full page writes in the WAL later $oHostDbMaster->sqlExecute("create table test_exists (id int) tablespace ts1", {bCommit => true, bCheckPoint => true}); # Create a table in the tablespace $oHostDbMaster->sqlExecute("create table test_remove (id int)"); $oHostDbMaster->sqlWalRotate(); $oHostDbMaster->sqlExecute("update test set message = '$strDefaultMessage'"); $oHostDbMaster->sqlWalRotate(); # Create a database in the tablespace and a table to check $oHostDbMaster->sqlExecute("create database test3 with tablespace ts1", {bAutoCommit => true}); $oHostDbMaster->sqlExecute( 'create table test3_exists (id int);' . 'insert into test3_exists values (1);', {strDb => 'test3', bAutoCommit => true}); if ($bTestLocal) { # Create a table in test1 to check - test1 will not be restored $oHostDbMaster->sqlExecute( 'create table test1_zeroed (id int);' . 'insert into test1_zeroed values (1);', {strDb => 'test1', bAutoCommit => true}); } # Start a backup so the next backup has to restart it. This test is not required for PostgreSQL >= 9.6 since backups # are run in non-exclusive mode. if ($bTestLocal && $oHostDbMaster->pgVersion() >= PG_VERSION_93 && $oHostDbMaster->pgVersion() < PG_VERSION_96) { $oHostDbMaster->sqlSelectOne("select pg_start_backup('test backup that will cause an error', true)"); # Verify that an error is returned if the backup is already running $oHostBackup->backup( CFGOPTVAL_BACKUP_TYPE_INCR, 'fail on backup already running', {iExpectedExitStatus => ERROR_DB_QUERY}); # Restart the cluster ignoring any errors in the postgresql log $oHostDbMaster->clusterRestart({bIgnoreLogError => true}); # Start a new backup to make the next test restart it $oHostDbMaster->sqlSelectOne("select pg_start_backup('test backup that will be restarted', true)"); } # Drop a table $oHostDbMaster->sqlExecute('drop table test_remove'); $oHostDbMaster->sqlWalRotate(); $oHostDbMaster->sqlExecute("update test set message = '$strIncrMessage'", {bCommit => true}); # Exercise --delta checksum option my $strIncrBackup = $oHostBackup->backup( CFGOPTVAL_BACKUP_TYPE_INCR, 'update during backup', {strOptionalParam => '--' . cfgOptionName(CFGOPT_STOP_AUTO) . ' --' . cfgOptionName(CFGOPT_BUFFER_SIZE) . '=32768 --delta'}); # Ensure the check command runs properly with a tablespace unless there is a bogus host if (!$oHostBackup->bogusHost()) { $oHostBackup->check( 'check command with tablespace', {iTimeout => 5}); } # Setup the xid target #--------------------------------------------------------------------------------------------------------------------------- my $strXidTarget = undef; if ($bTestLocal) { $oHostDbMaster->sqlExecute("update test set message = '$strXidMessage'", {bCommit => false}); $oHostDbMaster->sqlWalRotate(); $strXidTarget = $oHostDbMaster->sqlSelectOne("select txid_current()"); $oHostDbMaster->sqlCommit(); &log(INFO, " xid target is ${strXidTarget}"); } # Setup the name target #--------------------------------------------------------------------------------------------------------------------------- my $strNameTarget = 'backrest'; if ($bTestLocal) { $oHostDbMaster->sqlExecute("update test set message = '$strNameMessage'", {bCommit => true}); $oHostDbMaster->sqlWalRotate(); if ($oHostDbMaster->pgVersion() >= PG_VERSION_91) { $oHostDbMaster->sqlExecute("select pg_create_restore_point('${strNameTarget}')"); } &log(INFO, " name target is ${strNameTarget}"); } # Create a table and data in database test2 #--------------------------------------------------------------------------------------------------------------------------- # Initialize variables for SHA1 and path of the pg_filenode.map for the database that will not be restored my $strDb1TablePath; my $strDb1TableSha1; if ($bTestLocal) { $oHostDbMaster->sqlExecute( 'create table test (id int);' . 'insert into test values (1);' . 'create table test_ts1 (id int) tablespace ts1;' . 'insert into test_ts1 values (2);', {strDb => 'test2', bAutoCommit => true}); $oHostDbMaster->sqlWalRotate(); # Get the SHA1 and path of the table for the database that will not be restored $strDb1TablePath = $oHostDbMaster->dbBasePath(). "/base/" . $oHostDbMaster->sqlSelectOne("select oid from pg_database where datname='test1'") . "/" . $oHostDbMaster->sqlSelectOne("select relfilenode from pg_class where relname='test1_zeroed'", {strDb => 'test1'}); $strDb1TableSha1 = storageTest()->hashSize($strDb1TablePath); } # Restore (type = default) #--------------------------------------------------------------------------------------------------------------------------- if ($bTestLocal) { # Expect failure because postmaster.pid exists $oHostDbMaster->restore( 'postmaster running', cfgDefOptionDefault(CFGCMD_RESTORE, CFGOPT_SET), {iExpectedExitStatus => ERROR_POSTMASTER_RUNNING}); } $oHostDbMaster->clusterStop(); if ($bTestLocal) { # Expect failure because db path is not empty $oHostDbMaster->restore( 'path not empty', cfgDefOptionDefault(CFGCMD_RESTORE, CFGOPT_SET), {iExpectedExitStatus => ERROR_PATH_NOT_EMPTY}); } # Drop and recreate db path testPathRemove($oHostDbMaster->dbBasePath()); storageTest()->pathCreate($oHostDbMaster->dbBasePath(), {strMode => '0700'}); testPathRemove($oHostDbMaster->dbPath() . qw{/} . $oManifest->walPath()); storageTest()->pathCreate($oHostDbMaster->dbPath() . qw{/} . $oManifest->walPath(), {strMode => '0700'}); testPathRemove($oHostDbMaster->tablespacePath(1)); storageTest()->pathCreate($oHostDbMaster->tablespacePath(1), {strMode => '0700'}); # Now the restore should work $oHostDbMaster->restore( undef, cfgDefOptionDefault(CFGCMD_RESTORE, CFGOPT_SET), {strOptionalParam => ($bTestLocal ? ' --db-include=test2 --db-include=test3' : '') . ' --buffer-size=16384'}); # Test that the first database has not been restored since --db-include did not include test1 if ($bTestLocal) { my ($strSHA1, $lSize) = storageTest()->hashSize($strDb1TablePath); # Create a zeroed sparse file in the test directory that is the same size as the filenode.map. We need to use the # posix driver directly to do this because handles cannot be passed back from the C code. my $oStorageTrunc = new pgBackRestTest::Common::Storage($self->testPath(), new pgBackRestTest::Common::StoragePosix()); my $strTestTable = $self->testPath() . "/testtable"; my $oDestinationFileIo = $oStorageTrunc->openWrite($strTestTable); $oDestinationFileIo->open(); # Truncate to the original size which will create a sparse file. if (!truncate($oDestinationFileIo->handle(), $lSize)) { confess "unable to truncate '$strTestTable' with handle " . $oDestinationFileIo->handle(); } $oDestinationFileIo->close(); # Confirm the test filenode.map and the database test1 filenode.map are zeroed my ($strSHA1Test, $lSizeTest) = storageTest()->hashSize($strTestTable); $self->testResult(sub {($strSHA1Test eq $strSHA1) && ($lSizeTest == $lSize) && ($strSHA1 ne $strDb1TableSha1)}, true, 'database test1 not restored'); } $oHostDbMaster->clusterStart(); $oHostDbMaster->sqlSelectOneTest('select message from test', $bTestLocal ? $strNameMessage : $strIncrMessage); # Once the cluster is back online, make sure the database & table in the tablespace exists properly if ($bTestLocal) { $oHostDbMaster->sqlSelectOneTest('select id from test_ts1', 2, {strDb => 'test2'}); $oHostDbMaster->sqlDisconnect({strDb => 'test2'}); $oHostDbMaster->sqlSelectOneTest('select id from test3_exists', 1, {strDb => 'test3'}); $oHostDbMaster->sqlDisconnect({strDb => 'test3'}); } # The tablespace path should exist and have files in it my $strTablespacePath = $oHostDbMaster->tablespacePath(1); # Version <= 8.4 always places a PG_VERSION file in the tablespace if ($oHostDbMaster->pgVersion() <= PG_VERSION_84) { if (!storageLocal()->exists("${strTablespacePath}/" . DB_FILE_PGVERSION)) { confess &log(ASSERT, "unable to find '" . DB_FILE_PGVERSION . "' in tablespace path '${strTablespacePath}'"); } } # Version >= 9.0 creates a special path using the version and catalog number else { # Backup info will have the catalog number my $oBackupInfo = new pgBackRest::Common::Ini( storageRepo()->pathGet(STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO), {bLoad => false, strContent => ${storageRepo()->get(STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO)}}); # Construct the special path $strTablespacePath .= '/PG_' . $oHostDbMaster->pgVersion() . qw{_} . $oBackupInfo->get(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_CATALOG); # Check that path exists if (!storageLocal()->pathExists($strTablespacePath)) { confess &log(ASSERT, "unable to find tablespace path '${strTablespacePath}'"); } } # Make sure there are some files in the tablespace path (exclude PG_VERSION if <= 8.4 since that was tested above) if (grep(!/^PG\_VERSION$/i, storageLocal()->list($strTablespacePath)) == 0) { confess &log(ASSERT, "no files found in tablespace path '${strTablespacePath}'"); } # This table should exist to prove that the tablespace was restored. It has not been updated since it was created so it # should not be created by any full page writes. Once it is verified to exist it can be dropped. $oHostDbMaster->sqlSelectOneTest("select count(*) from test_exists", 0); $oHostDbMaster->sqlExecute('drop table test_exists'); # Now it should be OK to drop database test2 and test3 if ($bTestLocal) { $oHostDbMaster->sqlExecute('drop database test2', {bAutoCommit => true}); } # The test table lives in ts1 so it needs to be moved or dropped if ($oHostDbMaster->pgVersion() >= PG_VERSION_90) { $oHostDbMaster->sqlExecute('alter table test set tablespace pg_default'); } # Drop for older versions else { $oHostDbMaster->sqlExecute('drop table test'); } # And drop the tablespace $oHostDbMaster->sqlExecute('drop database test3', {bAutoCommit => true}); $oHostDbMaster->sqlExecute("drop tablespace ts1", {bAutoCommit => true}); # Restore (restore type = immediate, inclusive) #--------------------------------------------------------------------------------------------------------------------------- if (($bTestLocal || $bHostStandby) && $oHostDbMaster->pgVersion() >= PG_VERSION_94) { &log(INFO, ' testing recovery type = ' . CFGOPTVAL_RESTORE_TYPE_IMMEDIATE); $oHostDbMaster->clusterStop(); $oHostDbMaster->restore( undef, $strFullBackup, {bForce => true, strType => CFGOPTVAL_RESTORE_TYPE_IMMEDIATE, strTargetAction => 'promote'}); $oHostDbMaster->clusterStart(); $oHostDbMaster->sqlSelectOneTest( 'select message from test', ($bHostStandby ? $strStandbyMessage : $strFullMessage)); } # Restore (restore type = xid, inclusive) #--------------------------------------------------------------------------------------------------------------------------- my $strRecoveryFile = undef; if ($bTestLocal) { &log(INFO, ' testing recovery type = ' . CFGOPTVAL_RESTORE_TYPE_XID); $oHostDbMaster->clusterStop(); executeTest('rm -rf ' . $oHostDbMaster->dbBasePath() . "/*"); executeTest('rm -rf ' . $oHostDbMaster->dbPath() . qw{/} . $oManifest->walPath() . '/*'); $oHostDbMaster->restore( undef, $strIncrBackup, {bForce => true, strType => CFGOPTVAL_RESTORE_TYPE_XID, strTarget => $strXidTarget, strTargetAction => $oHostDbMaster->pgVersion() >= PG_VERSION_91 ? 'promote' : undef, strTargetTimeline => $oHostDbMaster->pgVersion() >= PG_VERSION_12 ? 'current' : undef, strOptionalParam => '--tablespace-map-all=../../tablespace', bTablespace => false}); # Save recovery file to test so we can use it in the next test $strRecoveryFile = $oHostDbMaster->pgVersion() >= PG_VERSION_12 ? 'postgresql.auto.conf' : DB_FILE_RECOVERYCONF; storageLocal()->copy( $oHostDbMaster->dbBasePath() . qw{/} . $strRecoveryFile, $self->testPath() . qw{/} . $strRecoveryFile); $oHostDbMaster->clusterStart(); $oHostDbMaster->sqlSelectOneTest('select message from test', $strXidMessage); $oHostDbMaster->sqlExecute("update test set message = '$strTimelineMessage'"); } # Restore (restore type = preserve, inclusive) #--------------------------------------------------------------------------------------------------------------------------- if ($bTestLocal) { &log(INFO, ' testing recovery type = ' . CFGOPTVAL_RESTORE_TYPE_PRESERVE); $oHostDbMaster->clusterStop(); executeTest('rm -rf ' . $oHostDbMaster->dbBasePath() . "/*"); executeTest('rm -rf ' . $oHostDbMaster->dbPath() . qw{/} . $oManifest->walPath() . '/*'); executeTest('rm -rf ' . $oHostDbMaster->tablespacePath(1) . "/*"); # Restore recovery file that was saved in last test storageLocal()->move($self->testPath . "/${strRecoveryFile}", $oHostDbMaster->dbBasePath() . "/${strRecoveryFile}"); # Also touch recovery.signal when required if ($oHostDbMaster->pgVersion() >= PG_VERSION_12) { storageDb()->put($oHostDbMaster->dbBasePath() . "/" . DB_FILE_RECOVERYSIGNAL); } $oHostDbMaster->restore( undef, cfgDefOptionDefault(CFGCMD_RESTORE, CFGOPT_SET), {strType => CFGOPTVAL_RESTORE_TYPE_PRESERVE}); $oHostDbMaster->clusterStart(); $oHostDbMaster->sqlSelectOneTest('select message from test', $strXidMessage); $oHostDbMaster->sqlExecute("update test set message = '$strTimelineMessage'"); } # Restore (restore type = time, inclusive, automatically select backup) - there is no exclusive time test because I can't # find a way to find the exact commit time of a transaction. #--------------------------------------------------------------------------------------------------------------------------- &log(INFO, ' testing recovery type = ' . CFGOPTVAL_RESTORE_TYPE_TIME); $oHostDbMaster->clusterStop(); $oHostDbMaster->restore( undef, cfgDefOptionDefault(CFGCMD_RESTORE, CFGOPT_SET), {bDelta => true, strType => CFGOPTVAL_RESTORE_TYPE_TIME, strTarget => $strTimeTarget, strTargetAction => $oHostDbMaster->pgVersion() >= PG_VERSION_91 ? 'promote' : undef, strTargetTimeline => $oHostDbMaster->pgVersion() >= PG_VERSION_12 ? 'current' : undef, strBackupExpected => $strFullBackup}); $oHostDbMaster->clusterStart(); $oHostDbMaster->sqlSelectOneTest('select message from test', $strTimeMessage); # Restore (restore type = xid, exclusive) #--------------------------------------------------------------------------------------------------------------------------- if ($bTestLocal) { &log(INFO, ' testing recovery type = ' . CFGOPTVAL_RESTORE_TYPE_XID); $oHostDbMaster->clusterStop(); $oHostDbMaster->restore( undef, $strIncrBackup, {bDelta => true, strType => CFGOPTVAL_RESTORE_TYPE_XID, strTarget => $strXidTarget, bTargetExclusive => true, strTargetAction => $oHostDbMaster->pgVersion() >= PG_VERSION_91 ? 'promote' : undef, strTargetTimeline => $oHostDbMaster->pgVersion() >= PG_VERSION_12 ? 'current' : undef}); $oHostDbMaster->clusterStart(); $oHostDbMaster->sqlSelectOneTest('select message from test', $strIncrMessage); } # Restore (restore type = name) #--------------------------------------------------------------------------------------------------------------------------- if ($bTestLocal && $oHostDbMaster->pgVersion() >= PG_VERSION_91) { &log(INFO, ' testing recovery type = ' . CFGOPTVAL_RESTORE_TYPE_NAME); $oHostDbMaster->clusterStop(); $oHostDbMaster->restore( undef, cfgDefOptionDefault(CFGCMD_RESTORE, CFGOPT_SET), {bDelta => true, bForce => true, strType => CFGOPTVAL_RESTORE_TYPE_NAME, strTarget => $strNameTarget, strTargetAction => 'promote', strTargetTimeline => $oHostDbMaster->pgVersion() >= PG_VERSION_12 ? 'current' : undef}); $oHostDbMaster->clusterStart(); $oHostDbMaster->sqlSelectOneTest('select message from test', $strNameMessage); } # Restore (restore type = default, timeline = created by type = xid, inclusive recovery) #--------------------------------------------------------------------------------------------------------------------------- if ($bTestLocal && $oHostDbMaster->pgVersion() >= PG_VERSION_84) { &log(INFO, ' testing recovery type = ' . CFGOPTVAL_RESTORE_TYPE_DEFAULT); $oHostDbMaster->clusterStop(); # The timeline to use for this test is subject to change based on tests being added or removed above. The best thing # would be to automatically grab the timeline after the restore, but since this test has been stable for a long time # it does not seem worth the effort to automate. $oHostDbMaster->restore( undef, $strIncrBackup, {bDelta => true, strType => $oHostDbMaster->pgVersion() >= PG_VERSION_90 ? CFGOPTVAL_RESTORE_TYPE_STANDBY : CFGOPTVAL_RESTORE_TYPE_DEFAULT, strTargetTimeline => 4}); $oHostDbMaster->clusterStart({bHotStandby => true}); $oHostDbMaster->sqlSelectOneTest('select message from test', $strTimelineMessage, {iTimeout => 120}); } # Stop clusters to catch any errors in the postgres log #--------------------------------------------------------------------------------------------------------------------------- $oHostDbMaster->clusterStop(); # Test no-online backups #--------------------------------------------------------------------------------------------------------------------------- if ($bTestExtra & !$bS3) { # Create a postmaster.pid file so it appears that the server is running storageTest()->put($oHostDbMaster->dbBasePath() . '/postmaster.pid', '99999'); # Incr backup - make sure a --no-online backup fails #----------------------------------------------------------------------------------------------------------------------- $oHostBackup->backup( CFGOPTVAL_BACKUP_TYPE_INCR, 'fail on --no-' . cfgOptionName(CFGOPT_ONLINE), {iExpectedExitStatus => ERROR_POSTMASTER_RUNNING, strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)}); # Incr backup - allow --no-online backup to succeed with --force #----------------------------------------------------------------------------------------------------------------------- $oHostBackup->backup( CFGOPTVAL_BACKUP_TYPE_INCR, 'succeed on --no-' . cfgOptionName(CFGOPT_ONLINE) . ' with --' . cfgOptionName(CFGOPT_FORCE), {strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE)}); } # Stanza-delete --force without access to pgbackrest on database host #--------------------------------------------------------------------------------------------------------------------------- if ($bTestExtra && !$bS3 && $bHostBackup) { # With stanza-delete --force, allow stanza to be deleted regardless of accessibility of database host if ($bHostBackup) { $oHostDbMaster->stop(); $oHostBackup->stop({strStanza => $self->stanza}); $oHostBackup->stanzaDelete("delete stanza with --force when pgbackrest on pg host not accessible", {strOptionalParam => ' --' . cfgOptionName(CFGOPT_FORCE)}); $oHostDbMaster->start(); $oHostBackup->start(); } } } } } } } 1; pgbackrest-release-2.24/test/src/000077500000000000000000000000001362531507100167555ustar00rootroot00000000000000pgbackrest-release-2.24/test/src/common/000077500000000000000000000000001362531507100202455ustar00rootroot00000000000000pgbackrest-release-2.24/test/src/common/harnessConfig.c000066400000000000000000000054571362531507100232150ustar00rootroot00000000000000/*********************************************************************************************************************************** Harness for Loading Test Configurations ***********************************************************************************************************************************/ #include "common/harnessDebug.h" #include "common/harnessLog.h" #include "common/harnessTest.h" #include "config/load.h" #include "config/parse.h" #include "storage/helper.h" #include "version.h" /**********************************************************************************************************************************/ void harnessCfgLoadRaw(unsigned int argListSize, const char *argList[]) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(UINT, argListSize); FUNCTION_HARNESS_PARAM(CHARPY, argList); FUNCTION_HARNESS_END(); // Free objects in storage helper storageHelperFree(); configParse(argListSize, argList, false); cfgLoadUpdateOption(); FUNCTION_HARNESS_RESULT_VOID(); } /**********************************************************************************************************************************/ void harnessCfgLoadRole(ConfigCommand commandId, ConfigCommandRole commandRoleId, const StringList *argListParam) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(ENUM, commandId); FUNCTION_HARNESS_PARAM(ENUM, commandRoleId); FUNCTION_HARNESS_PARAM(STRING_LIST, argListParam); FUNCTION_HARNESS_END(); // Make a copy of the arg list that we can modify StringList *argList = strLstDup(argListParam); // Set log path if valid if (cfgDefOptionValid(cfgCommandDefIdFromId(commandId), cfgDefOptLogPath)) strLstInsert(argList, 0, strNewFmt("--" CFGOPT_LOG_PATH "=%s", testDataPath())); // Set lock path if valid if (cfgDefOptionValid(cfgCommandDefIdFromId(commandId), cfgDefOptLockPath)) strLstInsert(argList, 0, strNewFmt("--" CFGOPT_LOCK_PATH "=%s/lock", testDataPath())); // Insert the command so it does not interfere with parameters strLstInsert(argList, 0, cfgCommandRoleNameParam(commandId, commandRoleId, COLON_STR)); // Insert the project exe strLstInsert(argList, 0, STRDEF(testProjectExe())); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); FUNCTION_HARNESS_RESULT_VOID(); } /**********************************************************************************************************************************/ void harnessCfgLoad(ConfigCommand commandId, const StringList *argListParam) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(ENUM, commandId); FUNCTION_HARNESS_PARAM(STRING_LIST, argListParam); FUNCTION_HARNESS_END(); harnessCfgLoadRole(commandId, cfgCmdRoleDefault, argListParam); FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/common/harnessConfig.h000066400000000000000000000023351362531507100232120ustar00rootroot00000000000000/*********************************************************************************************************************************** Harness for Loading Test Configurations ***********************************************************************************************************************************/ #include "config/config.h" /*********************************************************************************************************************************** Load a test configuration without any side effects There's no need to open log files, acquire locks, reset log levels, etc. ***********************************************************************************************************************************/ // Low-level version used in a few places to simulate special cases and error conditions. Most tests should use harnessCfgLoad(). void harnessCfgLoadRaw(unsigned int argListSize, const char *argList[]); // Automatically adds the exe, command (and role), lock-path, and log-path so executing the binary works locally or in a container. void harnessCfgLoad(ConfigCommand commandId, const StringList *argList); void harnessCfgLoadRole(ConfigCommand commandId, ConfigCommandRole commandRoleId, const StringList *argList); pgbackrest-release-2.24/test/src/common/harnessDebug.h000066400000000000000000000073761362531507100230450ustar00rootroot00000000000000/*********************************************************************************************************************************** C Debug Harness ***********************************************************************************************************************************/ #ifndef TEST_COMMON_HARNESS_DEBUG_H #define TEST_COMMON_HARNESS_DEBUG_H #ifdef NO_STACK_TRACE #define FUNCTION_HARNESS_INIT(exe) #define FUNCTION_HARNESS_BEGIN() #define FUNCTION_HARNESS_PARAM(typeMacroPrefix, param) #define FUNCTION_HARNESS_PARAM_P(typeMacroPrefix, param) #define FUNCTION_HARNESS_PARAM_PP(typeMacroPrefix, param) #define FUNCTION_HARNESS_END() #define FUNCTION_HARNESS_VOID() #define FUNCTION_HARNESS_ASSERT(condition) #define FUNCTION_HARNESS_RESULT(typeMacroPrefix, result) \ return result #define FUNCTION_HARNESS_RESULT_VOID(); #else #include "common/debug.h" #ifdef WITH_BACKTRACE #define FUNCTION_HARNESS_INIT(exe) \ stackTraceInit(exe) #else #define FUNCTION_HARNESS_INIT(exe) #endif #define FUNCTION_HARNESS_BEGIN() \ STACK_TRACE_PUSH(logLevelDebug); \ stackTraceParamLog() #define FUNCTION_HARNESS_PARAM(typeMacroPrefix, param) \ FUNCTION_LOG_PARAM(typeMacroPrefix, param) #define FUNCTION_HARNESS_PARAM_P(typeMacroPrefix, param) \ FUNCTION_LOG_PARAM_P(typeMacroPrefix, param) #define FUNCTION_HARNESS_PARAM_PP(typeMacroPrefix, param) \ FUNCTION_LOG_PARAM_PP(typeMacroPrefix, param) #define FUNCTION_HARNESS_END() #define FUNCTION_HARNESS_VOID() \ FUNCTION_HARNESS_BEGIN(); \ FUNCTION_HARNESS_END() #define FUNCTION_HARNESS_ASSERT(condition) \ do \ { \ if (!(condition)) \ THROW_FMT(AssertError, "function harness assertion '%s' failed", #condition); \ } \ while (0) #define FUNCTION_HARNESS_RESULT(typeMacroPrefix, result) \ STACK_TRACE_POP(false); \ return result \ #define FUNCTION_HARNESS_RESULT_VOID() \ STACK_TRACE_POP(false); #endif #endif pgbackrest-release-2.24/test/src/common/harnessFork.h000066400000000000000000000434441362531507100227140ustar00rootroot00000000000000/*********************************************************************************************************************************** Harness for Testing Using Fork Sometimes it is useful to use a child process for testing. This can be to test interaction with another process or to avoid polluting memory in the main process with something that can't easily be undone. The general form of the fork harness is: HARNESS_FORK_BEGIN() { // This block is required and can be repeated up to HARNESS_FORK_CHILD_MAX times. // // The first parameter is the expected exit code. If the child block does not have an explicit exit then it will automatically // exit on 0. // // The second parameter specifies whether pipes should be setup between the parent and child processes. These can be accessed // with the HARNESS_FORK_*() macros; HARNESS_FORK_CHILD_BEGIN(0, true) { // Child test code goes here } HARNESS_FORK_CHILD_END(); // This block is optional but generally useful HARNESS_FORK_PARENT_BEGIN() { // Parent test code goes here } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); If the child process does not explicitly exit in HARNESS_FORK_CHILD_BEGIN/END() then it will exit with 0 at HARNESS_FORK_END(). This harness is not intended for long-lived child processes. There should not be any code outside the HARNESS_FORK_CHILD_BEGIN/END() and HARNESS_FORK_PARENT_BEGIN/END() blocks. ***********************************************************************************************************************************/ #include #include #include /*********************************************************************************************************************************** Define the max number of child processes allowed ***********************************************************************************************************************************/ #define HARNESS_FORK_CHILD_MAX 4 /*********************************************************************************************************************************** Total number of child processes forked ***********************************************************************************************************************************/ #define HARNESS_FORK_PROCESS_TOTAL() \ HARNESS_FORK_processTotal /*********************************************************************************************************************************** Return the process index of the child (i.e. the index in the total) ***********************************************************************************************************************************/ #define HARNESS_FORK_PROCESS_IDX() \ HARNESS_FORK_processIdx /*********************************************************************************************************************************** Return the id of the child process, 0 if in the child process ***********************************************************************************************************************************/ #define HARNESS_FORK_PROCESS_ID(processIdx) \ HARNESS_FORK_processIdList[processIdx] /*********************************************************************************************************************************** Return the pipe for the child process ***********************************************************************************************************************************/ #define HARNESS_FORK_PIPE(processIdx) \ HARNESS_FORK_pipe[processIdx] /*********************************************************************************************************************************** Is the pipe required for this child process? ***********************************************************************************************************************************/ #define HARNESS_FORK_PIPE_REQUIRED(processIdx) \ HARNESS_FORK_pipeRequired[processIdx] /*********************************************************************************************************************************** Get read/write pipe handles ***********************************************************************************************************************************/ #define HARNESS_FORK_CHILD_READ_PROCESS(processIdx) \ HARNESS_FORK_PIPE(processIdx)[1][0] #define HARNESS_FORK_CHILD_READ() \ HARNESS_FORK_CHILD_READ_PROCESS(HARNESS_FORK_PROCESS_IDX()) #define HARNESS_FORK_CHILD_WRITE_PROCESS(processIdx) \ HARNESS_FORK_PIPE(processIdx)[0][1] #define HARNESS_FORK_CHILD_WRITE() \ HARNESS_FORK_CHILD_WRITE_PROCESS(HARNESS_FORK_PROCESS_IDX()) #define HARNESS_FORK_PARENT_READ_PROCESS(processIdx) \ HARNESS_FORK_PIPE(processIdx)[0][0] #define HARNESS_FORK_PARENT_WRITE_PROCESS(processIdx) \ HARNESS_FORK_PIPE(processIdx)[1][1] /*********************************************************************************************************************************** At the end of the HARNESS_FORK block the parent will wait for the child to exit. By default an exit code of 0 is expected but that can be modified when the child begins. ***********************************************************************************************************************************/ #define HARNESS_FORK_CHILD_EXPECTED_EXIT_STATUS(processIdx) \ HARNESS_FORK_expectedExitStatus[processIdx] /*********************************************************************************************************************************** Begin the fork block ***********************************************************************************************************************************/ #define HARNESS_FORK_BEGIN() \ do \ { \ unsigned int HARNESS_FORK_PROCESS_TOTAL() = 0; \ pid_t HARNESS_FORK_PROCESS_ID(HARNESS_FORK_CHILD_MAX) = {0}; \ int HARNESS_FORK_CHILD_EXPECTED_EXIT_STATUS(HARNESS_FORK_CHILD_MAX) = {0}; \ bool HARNESS_FORK_PIPE_REQUIRED(HARNESS_FORK_CHILD_MAX) = {0}; \ int HARNESS_FORK_PIPE(HARNESS_FORK_CHILD_MAX)[2][2] = {{{0}}}; /*********************************************************************************************************************************** Create a child process ***********************************************************************************************************************************/ #define HARNESS_FORK_CHILD_BEGIN(expectedExitStatus, pipeRequired) \ do \ { \ HARNESS_FORK_CHILD_EXPECTED_EXIT_STATUS(HARNESS_FORK_PROCESS_TOTAL()) = expectedExitStatus; \ \ if (pipeRequired) \ { \ HARNESS_FORK_PIPE_REQUIRED(HARNESS_FORK_PROCESS_TOTAL()) = true; \ \ THROW_ON_SYS_ERROR_FMT( \ pipe(HARNESS_FORK_PIPE(HARNESS_FORK_PROCESS_TOTAL())[0]) == -1, KernelError, \ "unable to create read pipe for child process %u", HARNESS_FORK_PROCESS_TOTAL()); \ THROW_ON_SYS_ERROR_FMT( \ pipe(HARNESS_FORK_PIPE(HARNESS_FORK_PROCESS_TOTAL())[1]) == -1, KernelError, \ "unable to create write pipe for child process %u", HARNESS_FORK_PROCESS_TOTAL()); \ } \ \ HARNESS_FORK_PROCESS_ID(HARNESS_FORK_PROCESS_TOTAL()) = forkSafe(); \ \ if (HARNESS_FORK_PROCESS_ID(HARNESS_FORK_PROCESS_TOTAL()) == 0) \ { \ unsigned int HARNESS_FORK_PROCESS_IDX() = HARNESS_FORK_PROCESS_TOTAL(); \ \ if (pipeRequired) \ { \ close(HARNESS_FORK_PARENT_READ_PROCESS(HARNESS_FORK_PROCESS_IDX())); \ close(HARNESS_FORK_PARENT_WRITE_PROCESS(HARNESS_FORK_PROCESS_IDX())); \ } #define HARNESS_FORK_CHILD_END() \ if (HARNESS_FORK_PIPE_REQUIRED(HARNESS_FORK_PROCESS_IDX())) \ { \ close(HARNESS_FORK_CHILD_READ()); \ close(HARNESS_FORK_CHILD_WRITE()); \ } \ \ exit(0); \ } \ \ HARNESS_FORK_PROCESS_TOTAL()++; \ } \ while (0) /*********************************************************************************************************************************** Process in the parent ***********************************************************************************************************************************/ #define HARNESS_FORK_PARENT_BEGIN() \ do \ { \ for (unsigned int processIdx = 0; processIdx < HARNESS_FORK_PROCESS_TOTAL(); processIdx++) \ { \ if (HARNESS_FORK_PIPE_REQUIRED(processIdx)) \ { \ close(HARNESS_FORK_CHILD_READ_PROCESS(processIdx)); \ close(HARNESS_FORK_CHILD_WRITE_PROCESS(processIdx)); \ } \ } #define HARNESS_FORK_PARENT_END() \ for (unsigned int processIdx = 0; processIdx < HARNESS_FORK_PROCESS_TOTAL(); processIdx++) \ { \ if (HARNESS_FORK_PIPE_REQUIRED(processIdx)) \ { \ close(HARNESS_FORK_PARENT_READ_PROCESS(processIdx)); \ close(HARNESS_FORK_PARENT_WRITE_PROCESS(processIdx)); \ } \ } \ } \ while (0) /*********************************************************************************************************************************** End the fork block and check exit status for all child processes ***********************************************************************************************************************************/ #define HARNESS_FORK_END() \ for (unsigned int processIdx = 0; processIdx < HARNESS_FORK_PROCESS_TOTAL(); processIdx++) \ { \ int processStatus; \ \ if (waitpid(HARNESS_FORK_PROCESS_ID(processIdx), &processStatus, 0) != HARNESS_FORK_PROCESS_ID(processIdx)) \ THROW_SYS_ERROR_FMT(AssertError, "unable to find child process %u", processIdx); \ \ if (WEXITSTATUS(processStatus) != HARNESS_FORK_CHILD_EXPECTED_EXIT_STATUS(processIdx)) \ THROW_FMT(AssertError, "child %u exited with error %d", processIdx, WEXITSTATUS(processStatus)); \ } \ } \ while (0) pgbackrest-release-2.24/test/src/common/harnessInfo.c000066400000000000000000000112061362531507100226700ustar00rootroot00000000000000/*********************************************************************************************************************************** Harness for Loading Test Configurations ***********************************************************************************************************************************/ #include #include "common/assert.h" #include "common/crypto/hash.h" #include "common/io/bufferRead.h" #include "common/io/filter/filter.intern.h" #include "common/type/json.h" #include "info/info.h" #include "version.h" #include "common/harnessDebug.h" #include "common/harnessInfo.h" /*********************************************************************************************************************************** Add header and checksum to an info file This prevents churn in headers and checksums in the unit tests. We purposefully do not use the checksum macros from the info module here as a cross-check of that code. ***********************************************************************************************************************************/ typedef struct HarnessInfoChecksumData { MemContext *memContext; // Mem context to use for storing data in this structure String *sectionLast; // The last section seen during load IoFilter *checksum; // Checksum calculated from the file } HarnessInfoChecksumData; static void harnessInfoChecksumCallback(void *callbackData, const String *section, const String *key, const String *value) { HarnessInfoChecksumData *data = (HarnessInfoChecksumData *)callbackData; // Calculate checksum if (data->sectionLast == NULL || !strEq(section, data->sectionLast)) { if (data->sectionLast != NULL) ioFilterProcessIn(data->checksum, BUFSTRDEF("},")); ioFilterProcessIn(data->checksum, BUFSTRDEF("\"")); ioFilterProcessIn(data->checksum, BUFSTR(section)); ioFilterProcessIn(data->checksum, BUFSTRDEF("\":{")); MEM_CONTEXT_BEGIN(data->memContext) { data->sectionLast = strDup(section); } MEM_CONTEXT_END(); } else ioFilterProcessIn(data->checksum, BUFSTRDEF(",")); ioFilterProcessIn(data->checksum, BUFSTR(jsonFromStr(key))); ioFilterProcessIn(data->checksum, BUFSTRDEF(":")); ioFilterProcessIn(data->checksum, BUFSTR(value)); } Buffer * harnessInfoChecksum(const String *info) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(STRING, info); FUNCTION_HARNESS_END(); Buffer *result = NULL; MEM_CONTEXT_TEMP_BEGIN() { // Initialize callback data HarnessInfoChecksumData data = { .memContext = MEM_CONTEXT_TEMP(), .checksum = cryptoHashNew(HASH_TYPE_SHA1_STR), }; // Create buffer with space for data, header, and checksum result = bufNew(strSize(info) + 256); bufCat(result, BUFSTRDEF("[backrest]\nbackrest-format=")); bufCat(result, BUFSTR(jsonFromUInt(REPOSITORY_FORMAT))); bufCat(result, BUFSTRDEF("\nbackrest-version=")); bufCat(result, BUFSTR(jsonFromStr(STRDEF(PROJECT_VERSION)))); bufCat(result, BUFSTRDEF("\n\n")); bufCat(result, BUFSTR(info)); // Generate checksum by loading ini file ioFilterProcessIn(data.checksum, BUFSTRDEF("{")); iniLoad(ioBufferReadNew(result), harnessInfoChecksumCallback, &data); ioFilterProcessIn(data.checksum, BUFSTRDEF("}}")); // Append checksum to buffer bufCat(result, BUFSTRDEF("\n[backrest]\nbackrest-checksum=")); bufCat(result, BUFSTR(jsonFromVar(ioFilterResult(data.checksum)))); bufCat(result, BUFSTRDEF("\n")); bufMove(result, memContextPrior()); } MEM_CONTEXT_TEMP_END(); FUNCTION_HARNESS_RESULT(BUFFER, result); } Buffer * harnessInfoChecksumZ(const char *info) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(STRINGZ, info); FUNCTION_HARNESS_END(); FUNCTION_HARNESS_RESULT(BUFFER, harnessInfoChecksum(STR(info))); } /*********************************************************************************************************************************** Test callback that logs the results to a string ***********************************************************************************************************************************/ void harnessInfoLoadNewCallback(void *callbackData, const String *section, const String *key, const String *value) { if (callbackData != NULL) strCatFmt((String *)callbackData, "[%s] %s=%s\n", strPtr(section), strPtr(key), strPtr(value)); } pgbackrest-release-2.24/test/src/common/harnessInfo.h000066400000000000000000000015231362531507100226760ustar00rootroot00000000000000/*********************************************************************************************************************************** Harness for Generating Test Info Files ***********************************************************************************************************************************/ #include "common/type/buffer.h" #include "info/info.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ Buffer *harnessInfoChecksum(const String *info); Buffer *harnessInfoChecksumZ(const char *info); void harnessInfoLoadNewCallback(void *callbackData, const String *section, const String *key, const String *value); pgbackrest-release-2.24/test/src/common/harnessLog.c000066400000000000000000000360421362531507100225230ustar00rootroot00000000000000/*********************************************************************************************************************************** Log Test Harness ***********************************************************************************************************************************/ #include #include #include #include #include #include "common/log.h" #include "common/memContext.h" #include "common/regExp.h" #include "common/type/stringList.h" #include "common/harnessDebug.h" #include "common/harnessTest.h" #ifndef NO_LOG /*********************************************************************************************************************************** Expose log internal data for unit testing/debugging ***********************************************************************************************************************************/ extern LogLevel logLevelFile; extern int logHandleFile; extern bool logFileBanner; extern void logAnySet(void); /*********************************************************************************************************************************** Default log level for testing ***********************************************************************************************************************************/ LogLevel logLevelTestDefault = logLevelOff; /*********************************************************************************************************************************** Name of file where logs are stored for testing ***********************************************************************************************************************************/ static char logFile[1024]; /*********************************************************************************************************************************** Buffer where log results are loaded for comparison purposes ***********************************************************************************************************************************/ char harnessLogBuffer[256 * 1024]; /*********************************************************************************************************************************** Open a log file -- centralized here for error handling ***********************************************************************************************************************************/ static int harnessLogOpen(const char *logFile, int flags, int mode) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(STRINGZ, logFile); FUNCTION_HARNESS_PARAM(INT, flags); FUNCTION_HARNESS_PARAM(INT, mode); FUNCTION_HARNESS_ASSERT(logFile != NULL); FUNCTION_HARNESS_END(); int result = open(logFile, flags, mode); if (result == -1) THROW_SYS_ERROR_FMT(FileOpenError, "unable to open log file '%s'", logFile); FUNCTION_HARNESS_RESULT(INT, result); } /*********************************************************************************************************************************** Initialize log for testing ***********************************************************************************************************************************/ void harnessLogInit(void) { FUNCTION_HARNESS_VOID(); logInit(logLevelTestDefault, logLevelOff, logLevelInfo, false, 99); logFileBanner = true; snprintf(logFile, sizeof(logFile), "%s/expect.log", testDataPath()); logHandleFile = harnessLogOpen(logFile, O_WRONLY | O_CREAT | O_TRUNC, 0640); logAnySet(); FUNCTION_HARNESS_RESULT_VOID(); } /*********************************************************************************************************************************** Change test log level This is info by default but it can sometimes be useful to set the log level to something else. ***********************************************************************************************************************************/ void harnessLogLevelSet(LogLevel logLevel) { logInit(logLevelTestDefault, logLevelOff, logLevel, false, 99); } /*********************************************************************************************************************************** Reset test log level Set back to info ***********************************************************************************************************************************/ void harnessLogLevelReset(void) { logInit(logLevelTestDefault, logLevelOff, logLevelInfo, false, 99); } /*********************************************************************************************************************************** Change default test log level Set the default log level for output to the console (for testing). ***********************************************************************************************************************************/ void harnessLogLevelDefaultSet(LogLevel logLevel) { logLevelTestDefault = logLevel; } /*********************************************************************************************************************************** Load log result from file into the log buffer ***********************************************************************************************************************************/ static void harnessLogLoad(const char *logFile) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(STRINGZ, logFile); FUNCTION_HARNESS_ASSERT(logFile != NULL); FUNCTION_HARNESS_END(); harnessLogBuffer[0] = 0; int handle = harnessLogOpen(logFile, O_RDONLY, 0); size_t totalBytes = 0; ssize_t actualBytes = 0; do { actualBytes = read(handle, harnessLogBuffer, sizeof(harnessLogBuffer) - totalBytes); if (actualBytes == -1) THROW_SYS_ERROR_FMT(FileOpenError, "unable to read log file '%s'", logFile); totalBytes += (size_t)actualBytes; } while (actualBytes != 0); if (close(handle) == -1) THROW_SYS_ERROR_FMT(FileOpenError, "unable to close log file '%s'", logFile); // Remove final linefeed if (totalBytes > 0) harnessLogBuffer[totalBytes - 1] = 0; FUNCTION_HARNESS_RESULT_VOID(); } /**********************************************************************************************************************************/ static struct { MemContext *memContext; // Mem context for log harness List *replaceList; // List of replacements } harnessLog; typedef struct HarnessLogReplace { const String *expression; RegExp *regExp; const String *expressionSub; RegExp *regExpSub; const String *replacement; StringList *matchList; bool version; } HarnessLogReplace; void hrnLogReplaceAdd(const char *expression, const char *expressionSub, const char *replacement, bool version) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(STRINGZ, expression); FUNCTION_HARNESS_PARAM(STRINGZ, expressionSub); FUNCTION_HARNESS_PARAM(STRINGZ, replacement); FUNCTION_HARNESS_PARAM(BOOL, version); FUNCTION_HARNESS_END(); FUNCTION_HARNESS_ASSERT(expression != NULL); FUNCTION_HARNESS_ASSERT(replacement != NULL); if (harnessLog.memContext == NULL) { MEM_CONTEXT_BEGIN(memContextTop()) { MEM_CONTEXT_NEW_BEGIN("HarnessLog") { harnessLog.memContext = MEM_CONTEXT_NEW(); } MEM_CONTEXT_NEW_END(); } MEM_CONTEXT_END(); } if (harnessLog.replaceList == NULL) { MEM_CONTEXT_BEGIN(harnessLog.memContext) { harnessLog.replaceList = lstNew(sizeof(HarnessLogReplace)); } MEM_CONTEXT_END(); } MEM_CONTEXT_BEGIN(lstMemContext(harnessLog.replaceList)) { HarnessLogReplace logReplace = { .expression = strNew(expression), .regExp = regExpNew(STRDEF(expression)), .expressionSub = expressionSub == NULL ? NULL : strNew(expressionSub), .regExpSub = expressionSub == NULL ? NULL : regExpNew(STRDEF(expressionSub)), .replacement = strNew(replacement), .matchList = strLstNew(), .version = version, }; lstAdd(harnessLog.replaceList, &logReplace); } MEM_CONTEXT_END(); FUNCTION_HARNESS_RESULT_VOID(); } /**********************************************************************************************************************************/ void hrnLogReplaceClear(void) { FUNCTION_HARNESS_VOID(); if (harnessLog.replaceList != NULL) lstClear(harnessLog.replaceList); FUNCTION_HARNESS_RESULT_VOID(); } /*********************************************************************************************************************************** Perform log replacements ***********************************************************************************************************************************/ static void hrnLogReplace(void) { FUNCTION_HARNESS_VOID(); // Proceed only if replacements have been defined if (harnessLog.replaceList != NULL) { MEM_CONTEXT_TEMP_BEGIN() { // Loop through all replacements for (unsigned int replaceIdx = 0; replaceIdx < lstSize(harnessLog.replaceList); replaceIdx++) { HarnessLogReplace *logReplace = lstGet(harnessLog.replaceList, replaceIdx); // Check for matches while (regExpMatch(logReplace->regExp, STRDEF(harnessLogBuffer))) { // Get the match String *match = regExpMatchStr(logReplace->regExp); // Find beginning of match char *begin = harnessLogBuffer + (regExpMatchPtr(logReplace->regExp) - harnessLogBuffer); // If there is a sub expression then evaluate it if (logReplace->regExpSub != NULL) { // The sub expression must match if (!regExpMatch(logReplace->regExpSub, match)) { THROW_FMT( AssertError, "unable to find sub expression '%s' in '%s' extracted with expresion '%s'", strPtr(logReplace->expressionSub), strPtr(match), strPtr(logReplace->expression)); } // Find beginning of match begin += regExpMatchPtr(logReplace->regExpSub) - strPtr(match); // Get the match match = regExpMatchStr(logReplace->regExpSub); } // Build replacement string. If versioned then append the version number. String *replace = strNewFmt("[%s", strPtr(logReplace->replacement)); if (logReplace->version) { unsigned int index = lstFindIdx((List *)logReplace->matchList, &match); if (index == LIST_NOT_FOUND) { index = strLstSize(logReplace->matchList); strLstAdd(logReplace->matchList, match); } strCatFmt(replace, "-%u", index + 1); } strCat(replace, "]"); // Find end of match and calculate size difference from replacement char *end = begin + strSize(match); int diff = (int)strSize(replace) - (int)strSize(match); // Make sure we won't overflow the buffer CHECK((size_t)((int)strlen(harnessLogBuffer) + diff) < sizeof(harnessLogBuffer) - 1); // Move data from end of string enough to make room for the replacement and copy replacement memmove(end + diff, end, strlen(end) + 1); memcpy(begin, strPtr(replace), strSize(replace)); } } } MEM_CONTEXT_TEMP_END(); } FUNCTION_HARNESS_RESULT_VOID(); } /*********************************************************************************************************************************** Compare log to a static string After the comparison the log is cleared so the next result can be compared. ***********************************************************************************************************************************/ void harnessLogResult(const char *expected) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(STRINGZ, expected); FUNCTION_HARNESS_ASSERT(expected != NULL); FUNCTION_HARNESS_END(); harnessLogLoad(logFile); hrnLogReplace(); expected = hrnReplaceKey(expected); if (strcmp(harnessLogBuffer, expected) != 0) { THROW_FMT( AssertError, "\n\nactual log:\n\n%s\n\nbut diff is (- remove from expected, + add to expected):\n\n%s", harnessLogBuffer, hrnDiff(expected, harnessLogBuffer)); } close(logHandleFile); logHandleFile = harnessLogOpen(logFile, O_WRONLY | O_CREAT | O_TRUNC, 0640); FUNCTION_HARNESS_RESULT_VOID(); } /*********************************************************************************************************************************** Compare log to a regexp After the comparison the log is cleared so the next result can be compared. ***********************************************************************************************************************************/ void harnessLogResultRegExp(const char *expression) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(STRINGZ, expression); FUNCTION_HARNESS_ASSERT(expression != NULL); FUNCTION_HARNESS_END(); regex_t regExp; TRY_BEGIN() { harnessLogLoad(logFile); // Compile the regexp and process errors int result = 0; if ((result = regcomp(®Exp, expression, REG_NOSUB | REG_EXTENDED)) != 0) { char buffer[4096]; regerror(result, NULL, buffer, sizeof(buffer)); THROW(FormatError, buffer); } // Do the match if (regexec(®Exp, harnessLogBuffer, 0, NULL, 0) != 0) THROW_FMT(AssertError, "\n\nexpected log regexp:\n\n%s\n\nbut actual log was:\n\n%s\n\n", expression, harnessLogBuffer); close(logHandleFile); logHandleFile = harnessLogOpen(logFile, O_WRONLY | O_CREAT | O_TRUNC, 0640); } FINALLY() { regfree(®Exp); } TRY_END(); FUNCTION_HARNESS_RESULT_VOID(); } /*********************************************************************************************************************************** Make sure nothing is left in the log after all tests have completed ***********************************************************************************************************************************/ void harnessLogFinal(void) { FUNCTION_HARNESS_VOID(); harnessLogLoad(logFile); hrnLogReplace(); if (strcmp(harnessLogBuffer, "") != 0) THROW_FMT(AssertError, "\n\nexpected log to be empty but actual log was:\n\n%s\n\n", harnessLogBuffer); FUNCTION_HARNESS_RESULT_VOID(); } #endif pgbackrest-release-2.24/test/src/common/harnessLog.h000066400000000000000000000025001362531507100225200ustar00rootroot00000000000000/*********************************************************************************************************************************** Log Test Harness ***********************************************************************************************************************************/ #ifndef TEST_COMMON_HARNESSLOG_H #define TEST_COMMON_HARNESSLOG_H #include #include "common/logLevel.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ // Add log replacement void hrnLogReplaceAdd(const char *expression, const char *expressionSub, const char *replacement, bool version); // Clear (remove) all log replacements void hrnLogReplaceClear(void); void harnessLogResult(const char *expected); void harnessLogResultRegExp(const char *expression); /*********************************************************************************************************************************** Setters ***********************************************************************************************************************************/ void harnessLogLevelReset(void); void harnessLogLevelSet(LogLevel logLevel); #endif pgbackrest-release-2.24/test/src/common/harnessPq.c000066400000000000000000000352401362531507100223610ustar00rootroot00000000000000/*********************************************************************************************************************************** Pq Test Harness ***********************************************************************************************************************************/ #ifndef HARNESS_PQ_REAL #include #include #include "common/type/json.h" #include "common/type/string.h" #include "common/type/variantList.h" #include "common/harnessPq.h" #include "common/harnessTest.h" /*********************************************************************************************************************************** Pq shim error prefix ***********************************************************************************************************************************/ #define PQ_ERROR_PREFIX "PQ SHIM ERROR" /*********************************************************************************************************************************** Script that defines how shim functions operate ***********************************************************************************************************************************/ HarnessPq harnessPqScript[1024]; bool harnessPqScriptDone = true; unsigned int harnessPqScriptIdx; // Is PQfinish scripting required? bool harnessPqStrict = false; // If there is a script failure change the behavior of cleanup functions to return immediately so the real error will be reported // rather than a bogus scripting error during cleanup bool harnessPqScriptFail; char harnessPqScriptError[4096]; /*********************************************************************************************************************************** Set pq script ***********************************************************************************************************************************/ void harnessPqScriptSet(HarnessPq *harnessPqScriptParam) { if (!harnessPqScriptDone) THROW(AssertError, "previous pq script has not yet completed"); if (harnessPqScriptParam[0].function == NULL) THROW(AssertError, "pq script must have entries"); // Copy records into local storage unsigned int copyIdx = 0; while (harnessPqScriptParam[copyIdx].function != NULL) { harnessPqScript[copyIdx] = harnessPqScriptParam[copyIdx]; copyIdx++; } harnessPqScript[copyIdx].function = NULL; harnessPqScriptDone = false; harnessPqScriptIdx = 0; } /**********************************************************************************************************************************/ void harnessPqScriptStrictSet(bool strict) { harnessPqStrict = strict; } /*********************************************************************************************************************************** Run pq script ***********************************************************************************************************************************/ static HarnessPq * harnessPqScriptRun(const char *function, const VariantList *param, HarnessPq *parent) { // If an error has already been thrown then throw the same error again if (harnessPqScriptFail) THROW(AssertError, harnessPqScriptError); // Convert params to json for comparison and reporting String *paramStr = param ? jsonFromVar(varNewVarLst(param)) : strNew(""); // Ensure script has not ended if (harnessPqScriptDone) { snprintf(harnessPqScriptError, sizeof(harnessPqScriptError), "pq script ended before %s (%s)", function, strPtr(paramStr)); TEST_LOG_FMT(PQ_ERROR_PREFIX ": %s", harnessPqScriptError); harnessPqScriptFail = true; THROW(AssertError, harnessPqScriptError); } // Get current script item HarnessPq *result = &harnessPqScript[harnessPqScriptIdx]; // Check that expected function was called if (strcmp(result->function, function) != 0) { snprintf( harnessPqScriptError, sizeof(harnessPqScriptError), "pq script [%u] expected function %s (%s) but got %s (%s)", harnessPqScriptIdx, result->function, result->param == NULL ? "" : result->param, function, strPtr(paramStr)); TEST_LOG_FMT(PQ_ERROR_PREFIX ": %s", harnessPqScriptError); harnessPqScriptFail = true; THROW(AssertError, harnessPqScriptError); } // Check that parameters match if ((param != NULL && result->param == NULL) || (param == NULL && result->param != NULL) || (param != NULL && result->param != NULL && !strEqZ(paramStr, result->param))) { snprintf( harnessPqScriptError, sizeof(harnessPqScriptError), "pq script [%u] function '%s', expects param '%s' but got '%s'", harnessPqScriptIdx, result->function, result->param ? result->param : "NULL", param ? strPtr(paramStr) : "NULL"); TEST_LOG_FMT(PQ_ERROR_PREFIX ": %s", harnessPqScriptError); harnessPqScriptFail = true; THROW(AssertError, harnessPqScriptError); } // Make sure the session matches with the parent as a sanity check if (parent != NULL && result->session != parent->session) { snprintf( harnessPqScriptError, sizeof(harnessPqScriptError), "pq script [%u] function '%s', expects session '%u' but got '%u'", harnessPqScriptIdx, result->function, result->session, parent->session); TEST_LOG_FMT(PQ_ERROR_PREFIX ": %s", harnessPqScriptError); harnessPqScriptFail = true; THROW(AssertError, harnessPqScriptError); } // Sleep if requested if (result->sleep > 0) sleepMSec(result->sleep); harnessPqScriptIdx++; if (harnessPqScript[harnessPqScriptIdx].function == NULL) harnessPqScriptDone = true; return result; } /*********************************************************************************************************************************** Shim for PQconnectdb() ***********************************************************************************************************************************/ PGconn *PQconnectdb(const char *conninfo) { return (PGconn *)harnessPqScriptRun(HRNPQ_CONNECTDB, varLstAdd(varLstNew(), varNewStrZ(conninfo)), NULL); } /*********************************************************************************************************************************** Shim for PQstatus() ***********************************************************************************************************************************/ ConnStatusType PQstatus(const PGconn *conn) { return (ConnStatusType)harnessPqScriptRun(HRNPQ_STATUS, NULL, (HarnessPq *)conn)->resultInt; } /*********************************************************************************************************************************** Shim for PQerrorMessage() ***********************************************************************************************************************************/ char *PQerrorMessage(const PGconn *conn) { return (char *)harnessPqScriptRun(HRNPQ_ERRORMESSAGE, NULL, (HarnessPq *)conn)->resultZ; } /*********************************************************************************************************************************** Shim for PQsetNoticeProcessor() ***********************************************************************************************************************************/ PQnoticeProcessor PQsetNoticeProcessor(PGconn *conn, PQnoticeProcessor proc, void *arg) { (void)conn; // Call the processor that was passed so we have coverage proc(arg, "test notice"); return NULL; } /*********************************************************************************************************************************** Shim for PQsendQuery() ***********************************************************************************************************************************/ int PQsendQuery(PGconn *conn, const char *query) { return harnessPqScriptRun(HRNPQ_SENDQUERY, varLstAdd(varLstNew(), varNewStrZ(query)), (HarnessPq *)conn)->resultInt; } /*********************************************************************************************************************************** Shim for PQconsumeInput() ***********************************************************************************************************************************/ int PQconsumeInput(PGconn *conn) { return harnessPqScriptRun(HRNPQ_CONSUMEINPUT, NULL, (HarnessPq *)conn)->resultInt; } /*********************************************************************************************************************************** Shim for PQisBusy() ***********************************************************************************************************************************/ int PQisBusy(PGconn *conn) { return harnessPqScriptRun(HRNPQ_ISBUSY, NULL, (HarnessPq *)conn)->resultInt; } /*********************************************************************************************************************************** Shim for PQgetCancel() ***********************************************************************************************************************************/ PGcancel * PQgetCancel(PGconn *conn) { return (PGcancel *)harnessPqScriptRun(HRNPQ_GETCANCEL, NULL, (HarnessPq *)conn); } /*********************************************************************************************************************************** Shim for PQcancel() ***********************************************************************************************************************************/ int PQcancel(PGcancel *cancel, char *errbuf, int errbufsize) { HarnessPq *harnessPq = harnessPqScriptRun(HRNPQ_CANCEL, NULL, (HarnessPq *)cancel); if (!harnessPq->resultInt) { strncpy(errbuf, harnessPq->resultZ, (size_t)errbufsize); errbuf[errbufsize - 1] = '\0'; } return harnessPq->resultInt; } /*********************************************************************************************************************************** Shim for PQfreeCancel() ***********************************************************************************************************************************/ void PQfreeCancel(PGcancel *cancel) { harnessPqScriptRun(HRNPQ_FREECANCEL, NULL, (HarnessPq *)cancel); } /*********************************************************************************************************************************** Shim for PQgetResult() ***********************************************************************************************************************************/ PGresult * PQgetResult(PGconn *conn) { if (!harnessPqScriptFail) { HarnessPq *harnessPq = harnessPqScriptRun(HRNPQ_GETRESULT, NULL, (HarnessPq *)conn); return harnessPq->resultNull ? NULL : (PGresult *)harnessPq; } return NULL; } /*********************************************************************************************************************************** Shim for PQresultStatus() ***********************************************************************************************************************************/ ExecStatusType PQresultStatus(const PGresult *res) { return (ExecStatusType)harnessPqScriptRun(HRNPQ_RESULTSTATUS, NULL, (HarnessPq *)res)->resultInt; } /*********************************************************************************************************************************** Shim for PQresultErrorMessage() ***********************************************************************************************************************************/ char * PQresultErrorMessage(const PGresult *res) { return (char *)harnessPqScriptRun(HRNPQ_RESULTERRORMESSAGE, NULL, (HarnessPq *)res)->resultZ; } /*********************************************************************************************************************************** Shim for PQntuples() ***********************************************************************************************************************************/ int PQntuples(const PGresult *res) { return harnessPqScriptRun(HRNPQ_NTUPLES, NULL, (HarnessPq *)res)->resultInt; } /*********************************************************************************************************************************** Shim for PQnfields() ***********************************************************************************************************************************/ int PQnfields(const PGresult *res) { return harnessPqScriptRun(HRNPQ_NFIELDS, NULL, (HarnessPq *)res)->resultInt; } /*********************************************************************************************************************************** Shim for PQgetisnull() ***********************************************************************************************************************************/ int PQgetisnull(const PGresult *res, int tup_num, int field_num) { return harnessPqScriptRun( HRNPQ_GETISNULL, varLstAdd(varLstAdd(varLstNew(), varNewInt(tup_num)), varNewInt(field_num)), (HarnessPq *)res)->resultInt; } /*********************************************************************************************************************************** Shim for PQftype() ***********************************************************************************************************************************/ Oid PQftype(const PGresult *res, int field_num) { return (Oid)harnessPqScriptRun(HRNPQ_FTYPE, varLstAdd(varLstNew(), varNewInt(field_num)), (HarnessPq *)res)->resultInt; } /*********************************************************************************************************************************** Shim for PQgetvalue() ***********************************************************************************************************************************/ char * PQgetvalue(const PGresult *res, int tup_num, int field_num) { return (char *)harnessPqScriptRun( HRNPQ_GETVALUE, varLstAdd(varLstAdd(varLstNew(), varNewInt(tup_num)), varNewInt(field_num)), (HarnessPq *)res)->resultZ; } /*********************************************************************************************************************************** Shim for PQclear() ***********************************************************************************************************************************/ void PQclear(PGresult *res) { if (!harnessPqScriptFail) harnessPqScriptRun(HRNPQ_CLEAR, NULL, (HarnessPq *)res); } /*********************************************************************************************************************************** Shim for PQfinish() ***********************************************************************************************************************************/ void PQfinish(PGconn *conn) { if (harnessPqStrict && !harnessPqScriptFail) harnessPqScriptRun(HRNPQ_FINISH, NULL, (HarnessPq *)conn); } #endif // HARNESS_PQ_REAL pgbackrest-release-2.24/test/src/common/harnessPq.h000066400000000000000000001666211362531507100223760ustar00rootroot00000000000000/*********************************************************************************************************************************** Pq Test Harness Scripted testing for PostgreSQL libpq so exact results can be returned for unit testing. See PostgreSQL client unit tests for usage examples. ***********************************************************************************************************************************/ #ifndef TEST_COMMON_HARNESS_PQ_H #define TEST_COMMON_HARNESS_PQ_H #ifndef HARNESS_PQ_REAL #include #include "common/macro.h" #include "common/time.h" #include "version.h" /*********************************************************************************************************************************** Function constants ***********************************************************************************************************************************/ #define HRNPQ_CANCEL "PQcancel" #define HRNPQ_CLEAR "PQclear" #define HRNPQ_CONNECTDB "PQconnectdb" #define HRNPQ_CONSUMEINPUT "PQconsumeInput" #define HRNPQ_ERRORMESSAGE "PQerrorMessage" #define HRNPQ_FINISH "PQfinish" #define HRNPQ_FREECANCEL "PQfreeCancel" #define HRNPQ_FTYPE "PQftype" #define HRNPQ_GETCANCEL "PQgetCancel" #define HRNPQ_GETISNULL "PQgetisnull" #define HRNPQ_GETRESULT "PQgetResult" #define HRNPQ_GETVALUE "PQgetvalue" #define HRNPQ_ISBUSY "PQisbusy" #define HRNPQ_NFIELDS "PQnfields" #define HRNPQ_NTUPLES "PQntuples" #define HRNPQ_RESULTERRORMESSAGE "PQresultErrorMessage" #define HRNPQ_RESULTSTATUS "PQresultStatus" #define HRNPQ_SENDQUERY "PQsendQuery" #define HRNPQ_STATUS "PQstatus" /*********************************************************************************************************************************** Macros for defining groups of functions that implement various queries and commands ***********************************************************************************************************************************/ #define HRNPQ_MACRO_OPEN(sessionParam, connectParam) \ {.session = sessionParam, .function = HRNPQ_CONNECTDB, .param = "[\"" connectParam "\"]"}, \ {.session = sessionParam, .function = HRNPQ_STATUS, .resultInt = CONNECTION_OK} #define HRNPQ_MACRO_SET_CLIENT_ENCODING(sessionParam) \ {.session = sessionParam, .function = HRNPQ_SENDQUERY, .param = "[\"set client_encoding = 'UTF8'\"]", .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_COMMAND_OK}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_SET_SEARCH_PATH(sessionParam) \ {.session = sessionParam, .function = HRNPQ_SENDQUERY, .param = "[\"set search_path = 'pg_catalog'\"]", .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_COMMAND_OK}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_VALIDATE_QUERY(sessionParam, versionParam, pgPathParam, archiveMode, archiveCommand) \ {.session = sessionParam, .function = HRNPQ_SENDQUERY, .param = \ "[\"select (select setting from pg_catalog.pg_settings where name = 'server_version_num')::int4," \ " (select setting from pg_catalog.pg_settings where name = 'data_directory')::text," \ " (select setting from pg_catalog.pg_settings where name = 'archive_mode')::text," \ " (select setting from pg_catalog.pg_settings where name = 'archive_command')::text\"]", \ .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 4}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_INT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[1]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[2]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[3]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = STRINGIFY(versionParam)}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,1]", .resultZ = pgPathParam}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,2]", .resultZ = archiveMode == NULL ? "on" \ : archiveMode}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,3]", .resultZ = archiveCommand == NULL ? PROJECT_BIN \ : archiveCommand}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_SET_APPLICATION_NAME(sessionParam) \ {.session = sessionParam, .function = HRNPQ_SENDQUERY, \ .param = strPtr(strNewFmt("[\"set application_name = '" PROJECT_NAME " [%s]'\"]", cfgCommandName(cfgCommand()))), \ .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_COMMAND_OK}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_IS_STANDBY_QUERY(sessionParam, standbyParam) \ {.session = sessionParam, .function = HRNPQ_SENDQUERY, .param = "[\"select pg_catalog.pg_is_in_recovery()\"]", .resultInt = 1},\ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_BOOL}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = STRINGIFY(standbyParam)}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_CREATE_RESTORE_POINT(sessionParam, lsnParam) \ {.session = sessionParam, \ .function = HRNPQ_SENDQUERY, .param = "[\"select pg_catalog.pg_create_restore_point('pgBackRest Archive Check')::text\"]", \ .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = lsnParam}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_WAL_SWITCH(sessionParam, walNameParam, walFileNameParam) \ {.session = sessionParam, .function = HRNPQ_SENDQUERY, \ .param = "[\"select pg_catalog.pg_" walNameParam "file_name(pg_catalog.pg_switch_" walNameParam "())::text\"]", \ .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = walFileNameParam}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_TIME_QUERY(sessionParam, timeParam) \ {.session = sessionParam, \ .function = HRNPQ_SENDQUERY, .param = "[\"select (extract(epoch from clock_timestamp()) * 1000)::bigint\"]", \ .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_INT}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,0]", \ .resultZ = strPtr(strNewFmt("%" PRId64, (int64_t)(timeParam)))}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_ADVISORY_LOCK(sessionParam, lockAcquiredParam) \ {.session = sessionParam, \ .function = HRNPQ_SENDQUERY, .param = "[\"select pg_catalog.pg_try_advisory_lock(12340078987004321)::bool\"]", \ .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_BOOL}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = cvtBoolToConstZ(lockAcquiredParam)}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_IS_IN_BACKUP(sessionParam, inBackupParam) \ {.session = sessionParam, \ .function = HRNPQ_SENDQUERY, .param = "[\"select pg_catalog.pg_is_in_backup()::bool\"]", \ .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_BOOL}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = cvtBoolToConstZ(inBackupParam)}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_START_BACKUP_83(sessionParam, lsnParam, walSegmentNameParam) \ {.session = sessionParam, \ .function = HRNPQ_SENDQUERY, \ .param = \ "[\"select lsn::text as lsn,\\n" \ " pg_catalog.pg_xlogfile_name(lsn)::text as wal_segment_name\\n" \ " from pg_catalog.pg_start_backup('pgBackRest backup started at ' || current_timestamp) as lsn\"]", \ .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 2}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[1]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = lsnParam}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,1]", .resultZ = walSegmentNameParam}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_START_BACKUP_84_95(sessionParam, startFastParam, lsnParam, walSegmentNameParam) \ {.session = sessionParam, \ .function = HRNPQ_SENDQUERY, \ .param = strPtr(strNewFmt( \ "[\"select lsn::text as lsn,\\n" \ " pg_catalog.pg_xlogfile_name(lsn)::text as wal_segment_name\\n" \ " from pg_catalog.pg_start_backup('pgBackRest backup started at ' || current_timestamp, %s) as lsn\"]", \ cvtBoolToConstZ(startFastParam))), \ .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 2}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[1]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = lsnParam}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,1]", .resultZ = walSegmentNameParam}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_START_BACKUP_96(sessionParam, startFastParam, lsnParam, walSegmentNameParam) \ {.session = sessionParam, \ .function = HRNPQ_SENDQUERY, \ .param = strPtr(strNewFmt( \ "[\"select lsn::text as lsn,\\n" \ " pg_catalog.pg_xlogfile_name(lsn)::text as wal_segment_name\\n" \ " from pg_catalog.pg_start_backup('pgBackRest backup started at ' || current_timestamp, %s, false) as lsn\"]", \ cvtBoolToConstZ(startFastParam))), \ .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 2}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[1]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = lsnParam}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,1]", .resultZ = walSegmentNameParam}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_START_BACKUP_GE_10(sessionParam, startFastParam, lsnParam, walSegmentNameParam) \ {.session = sessionParam, \ .function = HRNPQ_SENDQUERY, \ .param = strPtr(strNewFmt( \ "[\"select lsn::text as lsn,\\n" \ " pg_catalog.pg_walfile_name(lsn)::text as wal_segment_name\\n" \ " from pg_catalog.pg_start_backup('pgBackRest backup started at ' || current_timestamp, %s, false) as lsn\"]", \ cvtBoolToConstZ(startFastParam))), \ .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 2}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[1]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = lsnParam}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,1]", .resultZ = walSegmentNameParam}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_STOP_BACKUP_LE_95(sessionParam, lsnParam, walSegmentNameParam) \ {.session = sessionParam, \ .function = HRNPQ_SENDQUERY, \ .param = \ "[\"select lsn::text as lsn,\\n" \ " pg_catalog.pg_xlogfile_name(lsn)::text as wal_segment_name\\n" \ " from pg_catalog.pg_stop_backup() as lsn\"]", \ .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 2}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[1]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = lsnParam}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,1]", .resultZ = walSegmentNameParam}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_STOP_BACKUP_96(sessionParam, lsnParam, walSegmentNameParam, tablespaceMapParam) \ {.session = sessionParam, \ .function = HRNPQ_SENDQUERY, \ .param = \ "[\"select lsn::text as lsn,\\n" \ " pg_catalog.pg_xlogfile_name(lsn)::text as wal_segment_name,\\n" \ " labelfile::text as backuplabel_file,\\n" \ " spcmapfile::text as tablespacemap_file\\n" \ " from pg_catalog.pg_stop_backup(false)\"]", \ .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 4}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[1]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[2]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[3]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = lsnParam}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,1]", .resultZ = walSegmentNameParam}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,2]", .resultZ = "BACKUP_LABEL_DATA"}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,3]", \ .resultZ = tablespaceMapParam ? "TABLESPACE_MAP_DATA" : "\n"}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_STOP_BACKUP_GE_10(sessionParam, lsnParam, walSegmentNameParam, tablespaceMapParam) \ {.session = sessionParam, \ .function = HRNPQ_SENDQUERY, \ .param = \ "[\"select lsn::text as lsn,\\n" \ " pg_catalog.pg_walfile_name(lsn)::text as wal_segment_name,\\n" \ " labelfile::text as backuplabel_file,\\n" \ " spcmapfile::text as tablespacemap_file\\n" \ " from pg_catalog.pg_stop_backup(false, false)\"]", \ .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 4}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[1]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[2]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[3]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = lsnParam}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,1]", .resultZ = walSegmentNameParam}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,2]", .resultZ = "BACKUP_LABEL_DATA"}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,3]", \ .resultZ = tablespaceMapParam ? "TABLESPACE_MAP_DATA" : "\n"}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_DATABASE_LIST_1(sessionParam, databaseNameParam) \ {.session = sessionParam, \ .function = HRNPQ_SENDQUERY, \ .param = "[\"select oid::oid, datname::text, datlastsysoid::oid from pg_catalog.pg_database\"]", \ .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 3}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_INT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[1]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[2]", .resultInt = HRNPQ_TYPE_INT}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = STRINGIFY(16384)}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,1]", .resultZ = databaseNameParam}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,2]", .resultZ = STRINGIFY(13777)}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_TABLESPACE_LIST_0(sessionParam) \ {.session = sessionParam, \ .function = HRNPQ_SENDQUERY, .param = "[\"select oid::oid, spcname::text from pg_catalog.pg_tablespace\"]", \ .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 0}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 2}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_INT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[1]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_TABLESPACE_LIST_1(sessionParam, id1Param, name1Param) \ {.session = sessionParam, \ .function = HRNPQ_SENDQUERY, .param = "[\"select oid::oid, spcname::text from pg_catalog.pg_tablespace\"]", \ .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 2}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_INT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[1]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = strPtr(strNewFmt("%d", id1Param))}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,1]", .resultZ = name1Param}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_CHECKPOINT(sessionParam) \ {.session = sessionParam, .function = HRNPQ_SENDQUERY, .param = "[\"checkpoint\"]", .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_COMMAND_OK}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_REPLAY_TARGET_REACHED( \ sessionParam, walNameParam, lsnNameParam, targetLsnParam, targetReachedParam, replayLsnParam) \ {.session = sessionParam, \ .function = HRNPQ_SENDQUERY, \ .param = strPtr(strNewFmt( \ "[\"select replayLsn::text,\\n" \ " (replayLsn > '%s')::bool as targetReached\\n" \ " from pg_catalog.pg_last_" walNameParam "_replay_" lsnNameParam "() as replayLsn\"]", targetLsnParam)), \ .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 2}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[1]", .resultInt = HRNPQ_TYPE_BOOL}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = replayLsnParam}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,1]", .resultZ = cvtBoolToConstZ(targetReachedParam)}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_REPLAY_TARGET_REACHED_LE_96(sessionParam, targetLsnParam, targetReachedParam, reachedLsnParam) \ HRNPQ_MACRO_REPLAY_TARGET_REACHED(sessionParam, "xlog", "location", targetLsnParam, targetReachedParam, reachedLsnParam) #define HRNPQ_MACRO_REPLAY_TARGET_REACHED_GE_10(sessionParam, targetLsnParam, targetReachedParam, reachedLsnParam) \ HRNPQ_MACRO_REPLAY_TARGET_REACHED(sessionParam, "wal", "lsn", targetLsnParam, targetReachedParam, reachedLsnParam) #define HRNPQ_MACRO_CHECKPOINT_TARGET_REACHED(sessionParam, lsnNameParam, targetLsnParam, targetReachedParam, checkpointLsnParam) \ {.session = sessionParam, \ .function = HRNPQ_SENDQUERY, \ .param = strPtr(strNewFmt( \ "[\"select (checkpoint_" lsnNameParam " > '%s')::bool as targetReached,\\n" \ " checkpoint_" lsnNameParam "::text as checkpointLsn\\n" \ " from pg_catalog.pg_control_checkpoint()\"]", targetLsnParam)), \ .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 2}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_BOOL}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[1]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = cvtBoolToConstZ(targetReachedParam)}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,1]", .resultZ = checkpointLsnParam}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_CHECKPOINT_TARGET_REACHED_96(sessionParam, targetLsnParam, targetReachedParam, checkpointLsnParam) \ HRNPQ_MACRO_CHECKPOINT_TARGET_REACHED(sessionParam, "location", targetLsnParam, targetReachedParam, checkpointLsnParam) #define HRNPQ_MACRO_CHECKPOINT_TARGET_REACHED_GE_10(sessionParam, targetLsnParam, targetReachedParam, checkpointLsnParam) \ HRNPQ_MACRO_CHECKPOINT_TARGET_REACHED(sessionParam, "lsn", targetLsnParam, targetReachedParam, checkpointLsnParam) #define HRNPQ_MACRO_REPLAY_WAIT_LE_95(sessionParam, targetLsnParam) \ HRNPQ_MACRO_REPLAY_TARGET_REACHED_LE_96(sessionParam, targetLsnParam, true, "X/X"), \ HRNPQ_MACRO_CHECKPOINT(sessionParam) #define HRNPQ_MACRO_REPLAY_WAIT_96(sessionParam, targetLsnParam) \ HRNPQ_MACRO_REPLAY_TARGET_REACHED_LE_96(sessionParam, targetLsnParam, true, "X/X"), \ HRNPQ_MACRO_CHECKPOINT(sessionParam), \ HRNPQ_MACRO_CHECKPOINT_TARGET_REACHED_96(sessionParam, targetLsnParam, true, "X/X") #define HRNPQ_MACRO_REPLAY_WAIT_GE_10(sessionParam, targetLsnParam) \ HRNPQ_MACRO_REPLAY_TARGET_REACHED_GE_10(sessionParam, targetLsnParam, true, "X/X"), \ HRNPQ_MACRO_CHECKPOINT(sessionParam), \ HRNPQ_MACRO_CHECKPOINT_TARGET_REACHED_GE_10(sessionParam, targetLsnParam, true, "X/X") #define HRNPQ_MACRO_CLOSE(sessionParam) \ {.session = sessionParam, .function = HRNPQ_FINISH} #define HRNPQ_MACRO_DONE() \ {.function = NULL} /*********************************************************************************************************************************** Macros to simplify dbOpen() for specific database versions ***********************************************************************************************************************************/ #define HRNPQ_MACRO_OPEN_LE_91(sessionParam, connectParam, pgVersion, pgPathParam, archiveMode, archiveCommand) \ HRNPQ_MACRO_OPEN(sessionParam, connectParam), \ HRNPQ_MACRO_SET_SEARCH_PATH(sessionParam), \ HRNPQ_MACRO_SET_CLIENT_ENCODING(sessionParam), \ HRNPQ_MACRO_VALIDATE_QUERY(sessionParam, pgVersion, pgPathParam, archiveMode, archiveCommand) #define HRNPQ_MACRO_OPEN_GE_92(sessionParam, connectParam, pgVersion, pgPathParam, standbyParam, archiveMode, archiveCommand) \ HRNPQ_MACRO_OPEN(sessionParam, connectParam), \ HRNPQ_MACRO_SET_SEARCH_PATH(sessionParam), \ HRNPQ_MACRO_SET_CLIENT_ENCODING(sessionParam), \ HRNPQ_MACRO_VALIDATE_QUERY(sessionParam, pgVersion, pgPathParam, archiveMode, archiveCommand), \ HRNPQ_MACRO_SET_APPLICATION_NAME(sessionParam), \ HRNPQ_MACRO_IS_STANDBY_QUERY(sessionParam, standbyParam) // ??? This is really just a special case of the above and should be replaced by it #define HRNPQ_MACRO_OPEN_92(sessionParam, connectParam, pgPathParam, standbyParam, archiveMode, archiveCommand) \ HRNPQ_MACRO_OPEN_GE_92(sessionParam, connectParam, PG_VERSION_92, pgPathParam, standbyParam, archiveMode, archiveCommand) /*********************************************************************************************************************************** Data type constants ***********************************************************************************************************************************/ #define HRNPQ_TYPE_BOOL 16 #define HRNPQ_TYPE_INT 20 #define HRNPQ_TYPE_TEXT 25 /*********************************************************************************************************************************** Structure for scripting pq responses ***********************************************************************************************************************************/ typedef struct HarnessPq { unsigned int session; // Session number when multiple sessions are run concurrently const char *function; // Function call expected const char *param; // Params expected by the function for verification int resultInt; // Int result value const char *resultZ; // Zero-terminated result value bool resultNull; // Return null from function that normally returns a struct ptr TimeMSec sleep; // Sleep specified milliseconds before returning from function } HarnessPq; /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void harnessPqScriptSet(HarnessPq *harnessPqScriptParam); // Are we strict about requiring PQfinish()? Strict is a good idea for low-level testing of Pq code but is a nuissance for // higher-level testing since it can mask other errors. When not strict, PGfinish() is allowed at any time and does not need to be // scripted. void harnessPqScriptStrictSet(bool strict); #endif // HARNESS_PQ_REAL #endif pgbackrest-release-2.24/test/src/common/harnessStorage.c000066400000000000000000000066451362531507100234140ustar00rootroot00000000000000/*********************************************************************************************************************************** Storage Test Harness ***********************************************************************************************************************************/ #include #include "common/debug.h" #include "common/compress/gzip/decompress.h" #include "common/user.h" #include "storage/storage.h" #include "common/harnessStorage.h" /**********************************************************************************************************************************/ void hrnStorageInfoListCallback(void *callbackData, const StorageInfo *info) { HarnessStorageInfoListCallbackData *data = callbackData; if (data->rootPathOmit && info->type == storageTypePath && strEq(info->name, DOT_STR)) return; strCatFmt(data->content, "%s {", strPtr(info->name)); switch (info->type) { case storageTypeFile: { strCat(data->content, "file"); if (!data->sizeOmit) { uint64_t size = info->size; // If the file is compressed then decompress to get the real size if (data->fileCompressed) { ASSERT(data->storage != NULL); StorageRead *read = storageNewReadP( data->storage, data->path != NULL ? strNewFmt("%s/%s", strPtr(data->path), strPtr(info->name)) : info->name); ioFilterGroupAdd(ioReadFilterGroup(storageReadIo(read)), gzipDecompressNew(false)); size = bufUsed(storageGetP(read)); } strCatFmt(data->content, ", s=%" PRIu64, size); } break; } case storageTypeLink: { strCatFmt(data->content, "link, d=%s", strPtr(info->linkDestination)); break; } case storageTypePath: { strCat(data->content, "path"); break; } case storageTypeSpecial: { strCat(data->content, "special"); break; } } if (info->type != storageTypeSpecial) { if (info->type != storageTypeLink) { if (!data->modeOmit || (info->type == storageTypePath && data->modePath != info->mode) || (info->type == storageTypeFile && data->modeFile != info->mode)) { strCatFmt(data->content, ", m=%04o", info->mode); } } if (info->type == storageTypeFile) { if (!data->timestampOmit) strCatFmt(data->content, ", t=%" PRIu64, (uint64_t)info->timeModified); } if (!data->userOmit || userId() != info->userId) { if (info->user != NULL) { strCatFmt(data->content, ", u=%s", strPtr(info->user)); } else { strCatFmt(data->content, ", u=%d", (int)info->userId); } } if (!data->groupOmit || groupId() != info->groupId) { if (info->group != NULL) { strCatFmt(data->content, ", g=%s", strPtr(info->group)); } else { strCatFmt(data->content, ", g=%d", (int)info->groupId); } } } strCat(data->content, "}\n"); } pgbackrest-release-2.24/test/src/common/harnessStorage.h000066400000000000000000000042421362531507100234100ustar00rootroot00000000000000/*********************************************************************************************************************************** Storage Test Harness Helper functions for testing storage and related functions. ***********************************************************************************************************************************/ #ifndef TEST_COMMON_HARNESS_STORAGE_H #define TEST_COMMON_HARNESS_STORAGE_H /*********************************************************************************************************************************** Callback for formatting info list results ***********************************************************************************************************************************/ typedef struct HarnessStorageInfoListCallbackData { const Storage *storage; // Storage object when needed (e.g. fileCompressed = true) const String *path; // subpath when storage is specified String *content; // String where content should be added bool modeOmit; // Should the specified mode be ommitted? mode_t modeFile; // File to omit if modeOmit is true mode_t modePath; // Path mode to omit if modeOmit is true bool timestampOmit; // Should the timestamp be ommitted? bool userOmit; // Should the current user be ommitted? bool groupOmit; // Should the current group be ommitted? bool sizeOmit; // Should the size be ommitted bool rootPathOmit; // Should the root path be ommitted? bool fileCompressed; // Files will be decompressed to get size } HarnessStorageInfoListCallbackData; void hrnStorageInfoListCallback(void *callbackData, const StorageInfo *info); #endif pgbackrest-release-2.24/test/src/common/harnessTest.c000066400000000000000000000365671362531507100227350ustar00rootroot00000000000000/*********************************************************************************************************************************** C Test Harness ***********************************************************************************************************************************/ #include #include #include #include #include #include #include #include #include "common/harnessDebug.h" #include "common/harnessTest.h" #include "common/harnessLog.h" #define TEST_LIST_SIZE 64 typedef struct TestData { bool selected; } TestData; static TestData testList[TEST_LIST_SIZE]; static int testRun = 0; static int testTotal = 0; static bool testFirst = true; static uint64_t timeMSecBegin; static const char *testExeData = NULL; static const char *testProjectExeData = NULL; static bool testContainerData = false; static unsigned int testIdxData = 0; static uint64_t testScaleData = 1; static const char *testPathData = NULL; static const char *testDataPathData = NULL; static const char *testRepoPathData = NULL; static char testUserIdData[32]; static char testUserData[64]; static char testGroupIdData[32]; static char testGroupData[64]; /*********************************************************************************************************************************** Extern functions ***********************************************************************************************************************************/ #ifndef NO_LOG void harnessLogInit(void); void harnessLogFinal(void); #endif /*********************************************************************************************************************************** Initialize harness ***********************************************************************************************************************************/ void hrnInit( const char *testExe, const char *testProjectExe, bool testContainer, unsigned int testIdx, uint64_t testScale, const char *testPath, const char *testDataPath, const char *testRepoPath) { FUNCTION_HARNESS_VOID(); // Set test configuration testExeData = testExe; testProjectExeData = testProjectExe; testContainerData = testContainer; testIdxData = testIdx; testScaleData = testScale; testPathData = testPath; testDataPathData = testDataPath; testRepoPathData = testRepoPath; // Set test user id snprintf(testUserIdData, sizeof(testUserIdData), "%u", getuid()); // Set test user const char *testUserTemp = getpwuid(getuid())->pw_name; if (strlen(testUserTemp) > sizeof(testUserData) - 1) { fprintf(stderr, "ERROR: test user name must be less than %zu characters", sizeof(testUserData) - 1); fflush(stderr); exit(255); } strcpy(testUserData, testUserTemp); // Set test group id snprintf(testGroupIdData, sizeof(testGroupIdData), "%u", getgid()); // Set test group const char *testGroupTemp = getgrgid(getgid())->gr_name; if (strlen(testGroupTemp) > sizeof(testGroupData) - 1) { fprintf(stderr, "ERROR: test group name must be less than %zu characters", sizeof(testGroupData) - 1); fflush(stderr); exit(255); } strcpy(testGroupData, testGroupTemp); FUNCTION_HARNESS_RESULT_VOID(); } /*********************************************************************************************************************************** testAdd - add a new test ***********************************************************************************************************************************/ void hrnAdd(int run, bool selected) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(INT, run); FUNCTION_HARNESS_PARAM(BOOL, selected); FUNCTION_HARNESS_END(); if (run != testTotal + 1) { fprintf(stderr, "ERROR: test run %d is not in order\n", run); fflush(stderr); exit(255); } testList[testTotal].selected = selected; testTotal++; FUNCTION_HARNESS_RESULT_VOID(); } /*********************************************************************************************************************************** testBegin - should this test run? ***********************************************************************************************************************************/ bool testBegin(const char *name) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(STRINGZ, name); FUNCTION_HARNESS_ASSERT(name != NULL); FUNCTION_HARNESS_END(); bool result = false; testRun++; if (testList[testRun - 1].selected) { #ifndef NO_LOG if (!testFirst) { // Make sure there is nothing untested left in the log harnessLogFinal(); // Clear out the test directory so the next test starts clean char buffer[2048]; snprintf(buffer, sizeof(buffer), "%srm -rf %s/" "*", testContainer() ? "sudo " : "", testPath()); if (system(buffer) != 0) { fprintf(stderr, "ERROR: unable to clear test path '%s'\n", testPath()); fflush(stderr); exit(255); } // Clear out the data directory so the next test starts clean snprintf(buffer, sizeof(buffer), "%srm -rf %s/" "*", testContainer() ? "sudo " : "", testDataPath()); if (system(buffer) != 0) { fprintf(stderr, "ERROR: unable to clear data path '%s'\n", testDataPath()); fflush(stderr); exit(255); } // Clear any log replacements hrnLogReplaceClear(); } #endif // No longer the first test testFirst = false; if (testRun != 1) printf("\n"); printf("run %03d - %s\n", testRun, name); fflush(stdout); timeMSecBegin = testTimeMSec(); #ifndef NO_LOG // Initialize logging harnessLogInit(); #endif result = true; } FUNCTION_HARNESS_RESULT(BOOL, result); } /*********************************************************************************************************************************** testComplete - make sure all expected tests ran ***********************************************************************************************************************************/ void hrnComplete(void) { FUNCTION_HARNESS_VOID(); #ifndef NO_LOG // Make sure there is nothing untested left in the log harnessLogFinal(); #endif // Check that all tests ran if (testRun != testTotal) { fprintf(stderr, "ERROR: expected %d tests but %d were run\n", testTotal, testRun); fflush(stderr); exit(255); } FUNCTION_HARNESS_RESULT_VOID(); } /*********************************************************************************************************************************** Replace a substring with another string ***********************************************************************************************************************************/ static void hrnReplaceStr(char *string, size_t bufferSize, const char *substring, const char *replace) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(STRINGZ, string); FUNCTION_HARNESS_PARAM(SIZE, bufferSize); FUNCTION_HARNESS_PARAM(STRINGZ, substring); FUNCTION_HARNESS_PARAM(STRINGZ, replace); FUNCTION_HARNESS_END(); ASSERT(string != NULL); ASSERT(substring != NULL); // Find substring char *begin = strstr(string, substring); while (begin != NULL) { // Find end of substring and calculate replace size difference char *end = begin + strlen(substring); int diff = (int)strlen(replace) - (int)strlen(substring); // Make sure we won't overflow the buffer CHECK((size_t)((int)strlen(string) + diff) < bufferSize - 1); // Move data from end of string enough to make room for the replacement and copy replacement memmove(end + diff, end, strlen(end) + 1); memcpy(begin, replace, strlen(replace)); // Find next substring begin = strstr(begin + strlen(replace), substring); } FUNCTION_HARNESS_RESULT_VOID(); } /**********************************************************************************************************************************/ char harnessReplaceKeyBuffer[256 * 1024]; const char * hrnReplaceKey(const char *string) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(STRINGZ, string); FUNCTION_HARNESS_END(); ASSERT(string != NULL); // Make sure we won't overflow the buffer ASSERT(strlen(string) < sizeof(harnessReplaceKeyBuffer) - 1); strcpy(harnessReplaceKeyBuffer, string); hrnReplaceStr(harnessReplaceKeyBuffer, sizeof(harnessReplaceKeyBuffer), "{[path]}", testPath()); hrnReplaceStr(harnessReplaceKeyBuffer, sizeof(harnessReplaceKeyBuffer), "{[path-data]}", testDataPath()); hrnReplaceStr(harnessReplaceKeyBuffer, sizeof(harnessReplaceKeyBuffer), "{[user-id]}", testUserIdData); hrnReplaceStr(harnessReplaceKeyBuffer, sizeof(harnessReplaceKeyBuffer), "{[user]}", testUser()); hrnReplaceStr(harnessReplaceKeyBuffer, sizeof(harnessReplaceKeyBuffer), "{[group-id]}", testGroupIdData); hrnReplaceStr(harnessReplaceKeyBuffer, sizeof(harnessReplaceKeyBuffer), "{[group]}", testGroup()); hrnReplaceStr(harnessReplaceKeyBuffer, sizeof(harnessReplaceKeyBuffer), "{[project-exe]}", testProjectExe()); FUNCTION_HARNESS_RESULT(STRINGZ, harnessReplaceKeyBuffer); } /**********************************************************************************************************************************/ void hrnFileRead(const char *fileName, unsigned char *buffer, size_t bufferSize) { int result = open(fileName, O_RDONLY, 0660); if (result == -1) { fprintf(stderr, "ERROR: unable to open '%s' for read\n", fileName); fflush(stderr); exit(255); } ssize_t bufferRead = read(result, buffer, bufferSize); if (bufferRead == -1) { fprintf(stderr, "ERROR: unable to read '%s'\n", fileName); fflush(stderr); exit(255); } buffer[bufferRead] = 0; close(result); } /**********************************************************************************************************************************/ void hrnFileWrite(const char *fileName, const unsigned char *buffer, size_t bufferSize) { int result = open(fileName, O_WRONLY | O_CREAT | O_TRUNC, 0660); if (result == -1) { fprintf(stderr, "ERROR: unable to open '%s' for write\n", fileName); fflush(stderr); exit(255); } if (write(result, buffer, bufferSize) != (int)bufferSize) { fprintf(stderr, "ERROR: unable to write '%s'\n", fileName); fflush(stderr); exit(255); } close(result); } /**********************************************************************************************************************************/ char harnessDiffBuffer[256 * 1024]; const char * hrnDiff(const char *expected, const char *actual) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(STRINGZ, expected); FUNCTION_HARNESS_PARAM(STRINGZ, actual); FUNCTION_HARNESS_END(); ASSERT(actual != NULL); // Write expected file char expectedFile[1024]; snprintf(expectedFile, sizeof(expectedFile), "%s/diff.expected", testDataPath()); hrnFileWrite(expectedFile, (unsigned char *)expected, strlen(expected)); // Write actual file char actualFile[1024]; snprintf(actualFile, sizeof(actualFile), "%s/diff.actual", testDataPath()); hrnFileWrite(actualFile, (unsigned char *)actual, strlen(actual)); // Perform diff char command[2560]; snprintf(command, sizeof(command), "diff -u %s %s > %s/diff.result", expectedFile, actualFile, testDataPath()); if (system(command) == 2) { fprintf(stderr, "ERROR: unable to execute '%s'\n", command); fflush(stderr); exit(255); } // Read result char resultFile[1024]; snprintf(resultFile, sizeof(resultFile), "%s/diff.result", testDataPath()); hrnFileRead(resultFile, (unsigned char *)harnessDiffBuffer, sizeof(harnessDiffBuffer)); // Remove last linefeed from diff output harnessDiffBuffer[strlen(harnessDiffBuffer) - 1] = 0; FUNCTION_HARNESS_RESULT(STRINGZ, harnessDiffBuffer); } /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ const char * testExe(void) { FUNCTION_HARNESS_VOID(); FUNCTION_HARNESS_RESULT(STRINGZ, testExeData); } /**********************************************************************************************************************************/ const char * testProjectExe(void) { FUNCTION_HARNESS_VOID(); FUNCTION_HARNESS_RESULT(STRINGZ, testProjectExeData); } /**********************************************************************************************************************************/ bool testContainer(void) { FUNCTION_HARNESS_VOID(); FUNCTION_HARNESS_RESULT(BOOL, testContainerData); } /**********************************************************************************************************************************/ unsigned int testIdx(void) { FUNCTION_HARNESS_VOID(); FUNCTION_HARNESS_RESULT(UINT, testIdxData); } /**********************************************************************************************************************************/ uint64_t testScale(void) { FUNCTION_HARNESS_VOID(); FUNCTION_HARNESS_RESULT(UINT64, testScaleData); } /**********************************************************************************************************************************/ const char * testPath(void) { FUNCTION_HARNESS_VOID(); FUNCTION_HARNESS_RESULT(STRINGZ, testPathData); } /**********************************************************************************************************************************/ const char * testDataPath(void) { FUNCTION_HARNESS_VOID(); FUNCTION_HARNESS_RESULT(STRINGZ, testDataPathData); } /**********************************************************************************************************************************/ const char * testRepoPath(void) { FUNCTION_HARNESS_VOID(); FUNCTION_HARNESS_RESULT(STRINGZ, testRepoPathData); } /**********************************************************************************************************************************/ const char * testUser(void) { return testUserData; } /**********************************************************************************************************************************/ const char * testGroup(void) { return testGroupData; } /**********************************************************************************************************************************/ uint64_t testTimeMSec(void) { FUNCTION_HARNESS_VOID(); struct timeval currentTime; gettimeofday(¤tTime, NULL); FUNCTION_HARNESS_RESULT(UINT64, ((uint64_t)currentTime.tv_sec * 1000) + (uint64_t)currentTime.tv_usec / 1000); } /**********************************************************************************************************************************/ uint64_t testTimeMSecBegin(void) { FUNCTION_HARNESS_VOID(); FUNCTION_HARNESS_RESULT(UINT64, timeMSecBegin); } pgbackrest-release-2.24/test/src/common/harnessTest.h000066400000000000000000001256761362531507100227420ustar00rootroot00000000000000/*********************************************************************************************************************************** C Test Harness ***********************************************************************************************************************************/ #ifndef TEST_COMMON_HARNESS_H #define TEST_COMMON_HARNESS_H #include #include "common/debug.h" #include "common/error.h" /*********************************************************************************************************************************** Constants ***********************************************************************************************************************************/ #define BOGUS_STR "BOGUS" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ // Begin a test if this function returns true, otherwise the user has skipped it bool testBegin(const char *name); // Read a file (max 256k) into a buffer void hrnFileRead(const char *fileName, unsigned char *buffer, size_t bufferSize); // Write a buffer to a file void hrnFileWrite(const char *fileName, const unsigned char *buffer, size_t bufferSize); // Replace common test values in a string and return a buffer with the replacements. // // Note that the returned buffer will be overwritten with each call. Values that can be replaced are: // // {[path]} - the current test path // {[path-data]} - the current test data path // {[user-id]} - the current test user id // {[user]} - the current test user // {[group-id]} - the current test group id // {[group]} - the current test group // {[project-exe]} - the project exe const char *hrnReplaceKey(const char *string); // Diff two strings using command-line diff tool const char *hrnDiff(const char *actual, const char *expected); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ // Time in MS uint64_t testTimeMSec(void); // Time in MS at the beginning of the test run (since testBegin() was called) uint64_t testTimeMSecBegin(void); // The path and name of the test executable const char *testExe(void); // Path where test data is written const char *testPath(void); // Path to a copy of the repository const char *testRepoPath(void); // Test OS user const char *testUser(void); // Test OS group const char *testGroup(void); // Is this test running in a container? bool testContainer(void); // Location of the data path were the harness can write data that won't be visible to the test const char *testDataPath(void); // Get the 0-based index of the test. Useful for modifying resources like port numbers to avoid conflicts when running tests in // parallel. unsigned int testIdx(void); // Location of the project exe const char *testProjectExe(void); // For scaling performance tests uint64_t testScale(void); /*********************************************************************************************************************************** Maximum size of a formatted result in the TEST_RESULT macro. Strings don't count as they are output directly, so this only applies to the formatting of bools, ints, floats, etc. This should be plenty of room for any of those types. ***********************************************************************************************************************************/ #define TEST_RESULT_FORMAT_SIZE 128 /*********************************************************************************************************************************** Test that an expected error is actually thrown and error when it isn't ***********************************************************************************************************************************/ #define TEST_ERROR(statement, errorTypeExpected, errorMessageExpected) \ { \ bool TEST_ERROR_catch = false; \ \ printf( \ " %03u.%03us l%04d - expect %s: %s\n", (unsigned int)((testTimeMSec() - testTimeMSecBegin()) / 1000), \ (unsigned int)((testTimeMSec() - testTimeMSecBegin()) % 1000), __LINE__, errorTypeName(&errorTypeExpected), \ errorMessageExpected); \ fflush(stdout); \ \ TRY_BEGIN() \ { \ statement; \ } \ CATCH_ANY() \ { \ TEST_ERROR_catch = true; \ \ if (strcmp(errorMessage(), errorMessageExpected) != 0 || errorType() != &errorTypeExpected) \ THROW_FMT( \ AssertError, "EXPECTED %s: %s\n\n BUT GOT %s: %s\n\nTHROWN AT:\n%s", errorTypeName(&errorTypeExpected), \ errorMessageExpected, errorName(), errorMessage(), errorStackTrace()); \ } \ TRY_END(); \ \ if (!TEST_ERROR_catch) \ THROW_FMT( \ AssertError, "statement '%s' returned but error %s, '%s' was expected", #statement, errorTypeName(&errorTypeExpected), \ errorMessageExpected); \ } /*********************************************************************************************************************************** Test error with a formatted expected message ***********************************************************************************************************************************/ #define TEST_ERROR_FMT(statement, errorTypeExpected, ...) \ { \ char TEST_ERROR_FMT_buffer[8192]; \ \ if (snprintf(TEST_ERROR_FMT_buffer, sizeof(TEST_ERROR_FMT_buffer), __VA_ARGS__) >= (int)sizeof(TEST_ERROR_FMT_buffer)) \ THROW_FMT(AssertError, "error message needs more than the %zu characters available", sizeof(TEST_ERROR_FMT_buffer)); \ \ TEST_ERROR(statement, errorTypeExpected, TEST_ERROR_FMT_buffer); \ } /*********************************************************************************************************************************** Format the test type into the given buffer -- or return verbatim if char * ***********************************************************************************************************************************/ #define TEST_TYPE_FORMAT_VAR(value) \ char value##StrBuffer[TEST_RESULT_FORMAT_SIZE + 1]; \ char *value##Str = value##StrBuffer; #define TEST_TYPE_FORMAT_SPRINTF(format, value) \ if (snprintf((char *)value##Str, TEST_RESULT_FORMAT_SIZE + 1, format, value) > TEST_RESULT_FORMAT_SIZE) \ { \ THROW_FMT( \ AssertError, "formatted type '%" format "' needs more than the %d characters available", TEST_RESULT_FORMAT_SIZE); \ } #define TEST_TYPE_FORMAT(type, format, value) \ TEST_TYPE_FORMAT_VAR(value); \ TEST_TYPE_FORMAT_SPRINTF(format, value); #define TEST_TYPE_FORMAT_PTR(type, format, value) \ TEST_TYPE_FORMAT_VAR(value); \ \ if (value == NULL) \ value##Str = (char *)"NULL"; \ else if (strcmp(#type, "char *") == 0) \ value##Str = (char *)value; \ else \ TEST_TYPE_FORMAT_SPRINTF(format, value); /*********************************************************************************************************************************** Compare types ***********************************************************************************************************************************/ #define TEST_TYPE_COMPARE_STR(result, value, typeOp, valueExpected) \ if (value != NULL && valueExpected != NULL) \ result = strcmp((char *)value, (char *)valueExpected) typeOp 0; \ else \ result = value typeOp valueExpected; #define TEST_TYPE_COMPARE(result, value, typeOp, valueExpected) \ result = value typeOp valueExpected; /*********************************************************************************************************************************** Output information about the test ***********************************************************************************************************************************/ #define TEST_RESULT_INFO(...) \ printf( \ " %03u.%03us l%04d - ", (unsigned int)((testTimeMSec() - testTimeMSecBegin()) / 1000), \ (unsigned int)((testTimeMSec() - testTimeMSecBegin()) % 1000), __LINE__); \ printf(__VA_ARGS__); \ printf("\n"); \ fflush(stdout); /*********************************************************************************************************************************** Test the result of a statement and make sure it matches the expected value. This macro can test any C type given the correct parameters. ***********************************************************************************************************************************/ #define TEST_RESULT(statement, resultExpectedValue, type, format, formatMacro, typeOp, compareMacro, ...) \ { \ /* Assign expected result to a local variable */ \ const type TEST_RESULT_resultExpected = (type)(resultExpectedValue); \ \ /* Output test info */ \ TEST_RESULT_INFO(__VA_ARGS__); \ \ /* Format the expected result */ \ formatMacro(type, format, TEST_RESULT_resultExpected); \ \ /* Try to run the statement. Assign expected to result to silence compiler warning about uninitialized var. */ \ type TEST_RESULT_result = (type)TEST_RESULT_resultExpected; \ \ TRY_BEGIN() \ { \ TEST_RESULT_result = (type)(statement); \ } \ /* Catch any errors */ \ CATCH_ANY() \ { \ /* No errors were expected so error */ \ THROW_FMT( \ AssertError, "STATEMENT: %s\n\nTHREW %s: %s\n\nTHROWN AT:\n%s\n\nBUT EXPECTED RESULT:\n%s", \ #statement, errorName(), errorMessage(), errorStackTrace(), TEST_RESULT_resultExpectedStr); \ } \ TRY_END(); \ \ /* Test the type operator */ \ bool TEST_RESULT_resultOp = false; \ compareMacro(TEST_RESULT_resultOp, TEST_RESULT_result, typeOp, TEST_RESULT_resultExpected); \ \ /* If type operator test was not successful */ \ if (!TEST_RESULT_resultOp) \ { \ /* Format the actual result */ \ formatMacro(type, format, TEST_RESULT_result); \ \ /* Throw diff error */ \ if (strcmp(#type, "char *") == 0 && strstr(TEST_RESULT_resultStr, "\n") != NULL) \ { \ THROW_FMT( \ AssertError, \ "\n\nSTATEMENT: %s\n\nRESULT IS:\n%s\n\nBUT DIFF IS (- remove from expected, + add to expected):\n%s\n\n", \ #statement, TEST_RESULT_resultStr, hrnDiff(TEST_RESULT_resultExpectedStr, TEST_RESULT_resultStr)); \ } \ /* Throw error */ \ else \ { \ THROW_FMT( \ AssertError, "\n\nSTATEMENT: %s\n\nRESULT IS:\n%s\n\nBUT EXPECTED:\n%s\n\n", \ #statement, TEST_RESULT_resultStr, TEST_RESULT_resultExpectedStr); \ } \ } \ } /*********************************************************************************************************************************** Test that a void statement returns and does not throw an error ***********************************************************************************************************************************/ #define TEST_RESULT_VOID(statement, ...) \ { \ /* Output test info */ \ TEST_RESULT_INFO(__VA_ARGS__); \ \ TRY_BEGIN() \ { \ statement; \ } \ /* Catch any errors */ \ CATCH_ANY() \ { \ /* No errors were expected so error */ \ THROW_FMT( \ AssertError, "EXPECTED VOID RESULT FROM STATEMENT: %s\n\nBUT GOT %s: %s\n\nTHROWN AT:\n%s", #statement, errorName(), \ errorMessage(), errorStackTrace()); \ } \ TRY_END(); \ } /*********************************************************************************************************************************** Test that a statement does not error and assign it to the specified variable if not ***********************************************************************************************************************************/ #define TEST_ASSIGN(lValue, statement, ...) \ { \ /* Output test info */ \ TEST_RESULT_INFO(__VA_ARGS__); \ \ TRY_BEGIN() \ { \ lValue = statement; \ } \ /* Catch any errors */ \ CATCH_ANY() \ { \ /* No errors were expected so error */ \ THROW_FMT( \ AssertError, "EXPECTED ASSIGNMENT FROM STATEMENT: %s\n\nBUT GOT %s: %s\n\nTHROWN AT:\n%s", #statement, errorName(), \ errorMessage(), errorStackTrace()); \ } \ TRY_END(); \ } /*********************************************************************************************************************************** Macros to ease the use of common data types ***********************************************************************************************************************************/ #define TEST_RESULT_BOOL_PARAM(statement, resultExpected, typeOp, ...) \ TEST_RESULT(statement, resultExpected, bool, "%d", TEST_TYPE_FORMAT, typeOp, TEST_TYPE_COMPARE, __VA_ARGS__); #define TEST_RESULT_BOOL(statement, resultExpected, ...) \ TEST_RESULT_BOOL_PARAM(statement, resultExpected, ==, __VA_ARGS__); #define TEST_RESULT_CHAR_PARAM(statement, resultExpected, typeOp, ...) \ TEST_RESULT(statement, resultExpected, char, "%c", TEST_TYPE_FORMAT, typeOp, TEST_TYPE_COMPARE, __VA_ARGS__); #define TEST_RESULT_CHAR(statement, resultExpected, ...) \ TEST_RESULT_CHAR_PARAM(statement, resultExpected, ==, __VA_ARGS__); #define TEST_RESULT_CHAR_NE(statement, resultExpected, ...) \ TEST_RESULT_CHAR_PARAM(statement, resultExpected, !=, __VA_ARGS__); #define TEST_RESULT_DOUBLE_PARAM(statement, resultExpected, typeOp, ...) \ TEST_RESULT(statement, resultExpected, double, "%f", TEST_TYPE_FORMAT, typeOp, TEST_TYPE_COMPARE, __VA_ARGS__); #define TEST_RESULT_DOUBLE(statement, resultExpected, ...) \ TEST_RESULT_DOUBLE_PARAM(statement, resultExpected, ==, __VA_ARGS__); #define TEST_RESULT_INT_PARAM(statement, resultExpected, typeOp, ...) \ TEST_RESULT(statement, resultExpected, int64_t, "%" PRId64, TEST_TYPE_FORMAT, typeOp, TEST_TYPE_COMPARE, __VA_ARGS__); #define TEST_RESULT_INT(statement, resultExpected, ...) \ TEST_RESULT_INT_PARAM(statement, resultExpected, ==, __VA_ARGS__); #define TEST_RESULT_INT_NE(statement, resultExpected, ...) \ TEST_RESULT_INT_PARAM(statement, resultExpected, !=, __VA_ARGS__); #define TEST_RESULT_PTR_PARAM(statement, resultExpected, typeOp, ...) \ TEST_RESULT(statement, resultExpected, void *, "%p", TEST_TYPE_FORMAT_PTR, typeOp, TEST_TYPE_COMPARE, __VA_ARGS__); #define TEST_RESULT_PTR(statement, resultExpected, ...) \ TEST_RESULT_PTR_PARAM(statement, resultExpected, ==, __VA_ARGS__); #define TEST_RESULT_PTR_NE(statement, resultExpected, ...) \ TEST_RESULT_PTR_PARAM(statement, resultExpected, !=, __VA_ARGS__); #define TEST_RESULT_SIZE_PARAM(statement, resultExpected, typeOp, ...) \ TEST_RESULT(statement, resultExpected, size_t, "%zu", TEST_TYPE_FORMAT, typeOp, TEST_TYPE_COMPARE, __VA_ARGS__); #define TEST_RESULT_SIZE(statement, resultExpected, ...) \ TEST_RESULT_SIZE_PARAM(statement, resultExpected, ==, __VA_ARGS__); #define TEST_RESULT_SIZE_NE(statement, resultExpected, ...) \ TEST_RESULT_SIZE_PARAM(statement, resultExpected, !=, __VA_ARGS__); #define TEST_RESULT_Z_PARAM(statement, resultExpected, typeOp, ...) \ TEST_RESULT(statement, resultExpected, char *, "%s", TEST_TYPE_FORMAT_PTR, typeOp, TEST_TYPE_COMPARE_STR, __VA_ARGS__); #define TEST_RESULT_Z(statement, resultExpected, ...) \ TEST_RESULT_Z_PARAM(statement, resultExpected, ==, __VA_ARGS__); #define TEST_RESULT_Z_NE(statement, resultExpected, ...) \ TEST_RESULT_Z_PARAM(statement, resultExpected, !=, __VA_ARGS__); #define TEST_RESULT_STR(statement, resultExpected, ...) \ TEST_RESULT_Z(strPtr(statement), strPtr(resultExpected), __VA_ARGS__); #define TEST_RESULT_STR_Z(statement, resultExpected, ...) \ TEST_RESULT_Z(strPtr(statement), resultExpected, __VA_ARGS__); #define TEST_RESULT_Z_STR(statement, resultExpected, ...) \ TEST_RESULT_Z(statement, strPtr(resultExpected), __VA_ARGS__); #define TEST_RESULT_U16_HEX(statement, resultExpected, ...) \ TEST_RESULT(statement, resultExpected, uint16_t, "%04X", TEST_TYPE_FORMAT, ==, TEST_TYPE_COMPARE, __VA_ARGS__); #define TEST_RESULT_UINT_PARAM(statement, resultExpected, typeOp, ...) \ TEST_RESULT(statement, resultExpected, uint64_t, "%" PRIu64, TEST_TYPE_FORMAT, typeOp, TEST_TYPE_COMPARE, __VA_ARGS__); #define TEST_RESULT_UINT(statement, resultExpected, ...) \ TEST_RESULT_UINT_PARAM(statement, resultExpected, ==, __VA_ARGS__); #define TEST_RESULT_UINT_NE(statement, resultExpected, ...) \ TEST_RESULT_UINT_PARAM(statement, resultExpected, !=, __VA_ARGS__); /*********************************************************************************************************************************** Test system calls ***********************************************************************************************************************************/ #define TEST_SYSTEM(command) \ do \ { \ int TEST_SYSTEM_FMT_result = system(hrnReplaceKey(command)); \ \ if (TEST_SYSTEM_FMT_result != 0) \ { \ THROW_FMT( \ AssertError, "SYSTEM COMMAND: %s\n\nFAILED WITH CODE %d\n\nTHROWN AT:\n%s", hrnReplaceKey(command), \ TEST_SYSTEM_FMT_result, errorStackTrace()); \ } \ } while(0) #define TEST_SYSTEM_FMT(...) \ do \ { \ char TEST_SYSTEM_FMT_buffer[8192]; \ \ if (snprintf(TEST_SYSTEM_FMT_buffer, sizeof(TEST_SYSTEM_FMT_buffer), __VA_ARGS__) >= (int)sizeof(TEST_SYSTEM_FMT_buffer)) \ THROW_FMT(AssertError, "command needs more than the %zu characters available", sizeof(TEST_SYSTEM_FMT_buffer)); \ \ TEST_SYSTEM(TEST_SYSTEM_FMT_buffer); \ } while(0) /*********************************************************************************************************************************** Test log result ***********************************************************************************************************************************/ #define TEST_RESULT_LOG(expected) \ do \ { \ TRY_BEGIN() \ { \ harnessLogResult(expected); \ } \ CATCH_ANY() \ { \ THROW_FMT(AssertError, "LOG RESULT FAILED WITH:\n%s", errorMessage()); \ } \ TRY_END(); \ } while(0) #define TEST_RESULT_LOG_FMT(...) \ do \ { \ char TEST_RESULT_LOG_FMT_buffer[65536]; \ \ if (snprintf(TEST_RESULT_LOG_FMT_buffer, sizeof(TEST_RESULT_LOG_FMT_buffer), __VA_ARGS__) >= \ (int)sizeof(TEST_RESULT_LOG_FMT_buffer)) \ { \ THROW_FMT( \ AssertError, "expected result needs more than the %zu characters available", sizeof(TEST_RESULT_LOG_FMT_buffer)); \ } \ \ TEST_RESULT_LOG(TEST_RESULT_LOG_FMT_buffer); \ } while(0) /*********************************************************************************************************************************** Logging macros ***********************************************************************************************************************************/ #define TEST_LOG(message) \ do \ { \ printf( \ " %03u.%03us l%04d - %s\n", (unsigned int)((testTimeMSec() - testTimeMSecBegin()) / 1000), \ (unsigned int)((testTimeMSec() - testTimeMSecBegin()) % 1000), __LINE__, message); \ fflush(stdout); \ } while(0) #define TEST_LOG_FMT(format, ...) \ do \ { \ printf( \ " %03u.%03us l%04d - " format "\n", (unsigned int)((testTimeMSec() - testTimeMSecBegin()) / 1000), \ (unsigned int)((testTimeMSec() - testTimeMSecBegin()) % 1000), __LINE__, __VA_ARGS__); \ fflush(stdout); \ } while(0) /*********************************************************************************************************************************** Test title macro ***********************************************************************************************************************************/ #define TEST_TITLE(message) \ do \ { \ printf( \ " %03u.%03us l%04d - %s\n", (unsigned int)((testTimeMSec() - testTimeMSecBegin()) / 1000), \ (unsigned int)((testTimeMSec() - testTimeMSecBegin()) % 1000), __LINE__, message); \ fflush(stdout); \ } while(0) /*********************************************************************************************************************************** Is this a 64-bit system? If not then it is 32-bit since 16-bit systems are not supported. ***********************************************************************************************************************************/ #define TEST_64BIT() \ (sizeof(size_t) == 8) #endif pgbackrest-release-2.24/test/src/common/harnessTest.intern.h000066400000000000000000000016671362531507100242310ustar00rootroot00000000000000/*********************************************************************************************************************************** C Test Harness Internal ***********************************************************************************************************************************/ #ifndef TEST_COMMON_HARNESS_INTERN_H #define TEST_COMMON_HARNESS_INTERN_H #include "common/harnessTest.h" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void hrnInit( const char *testExe, const char *testProjectExe, bool testContainer, unsigned int testIdx, uint64_t testScale, const char *testPath, const char *testDataPath, const char *testRepoPath); void hrnAdd(int run, bool selected); void hrnComplete(void); #endif pgbackrest-release-2.24/test/src/common/harnessTls.c000066400000000000000000000163031362531507100225420ustar00rootroot00000000000000/*********************************************************************************************************************************** Tls Test Harness ***********************************************************************************************************************************/ #include #include #include #include #include #include #include "common/crypto/common.h" #include "common/error.h" #include "common/type/buffer.h" #include "common/wait.h" #include "common/harnessTest.h" #include "common/harnessTls.h" /*********************************************************************************************************************************** Test defaults ***********************************************************************************************************************************/ #define TLS_TEST_HOST "tls.test.pgbackrest.org" static int testServerSocket = 0; static SSL_CTX *testServerContext = NULL; static int testClientSocket = 0; static SSL *testClientSSL = NULL; /*********************************************************************************************************************************** Initialize TLS and listen on the specified port for TLS connections ***********************************************************************************************************************************/ void harnessTlsServerInit(unsigned int port, const char *serverCert, const char *serverKey) { // Add test hosts if (testContainer()) { if (system("echo \"127.0.0.1 " TLS_TEST_HOST "\" | sudo tee -a /etc/hosts > /dev/null") != 0) THROW(AssertError, "unable to add test host to /etc/hosts"); } // Initialize ssl and create a context cryptoInit(); const SSL_METHOD *method = SSLv23_method(); cryptoError(method == NULL, "unable to load TLS method"); testServerContext = SSL_CTX_new(method); cryptoError(testServerContext == NULL, "unable to create TLS context"); // Configure the context by setting key and cert cryptoError( SSL_CTX_use_certificate_file(testServerContext, serverCert, SSL_FILETYPE_PEM) <= 0, "unable to load server certificate"); cryptoError( SSL_CTX_use_PrivateKey_file(testServerContext, serverKey, SSL_FILETYPE_PEM) <= 0, "unable to load server private key"); // Create the socket struct sockaddr_in address; address.sin_family = AF_INET; address.sin_port = htons((uint16_t)port); address.sin_addr.s_addr = htonl(INADDR_ANY); if ((testServerSocket = socket(AF_INET, SOCK_STREAM, 0)) < 0) THROW_SYS_ERROR(AssertError, "unable to create socket"); // Set the address as reusable so we can bind again in the same process for testing int reuseAddr = 1; setsockopt(testServerSocket, SOL_SOCKET, SO_REUSEADDR, &reuseAddr, sizeof(reuseAddr)); // Bind the address. It might take a bit to bind if another process was recently using it so retry a few times. Wait *wait = waitNew(2000); int result; do { result = bind(testServerSocket, (struct sockaddr *)&address, sizeof(address)); } while (result < 0 && waitMore(wait)); if (result < 0) THROW_SYS_ERROR(AssertError, "unable to bind socket"); // Listen for client connections if (listen(testServerSocket, 1) < 0) THROW_SYS_ERROR(AssertError, "unable to listen on socket"); } /**********************************************************************************************************************************/ void harnessTlsServerInitDefault(void) { if (testContainer()) harnessTlsServerInit(harnessTlsTestPort(), TLS_CERT_TEST_CERT, TLS_CERT_TEST_KEY); else { harnessTlsServerInit( harnessTlsTestPort(), strPtr(strNewFmt("%s/" TEST_CERTIFICATE_PREFIX ".crt", testRepoPath())), strPtr(strNewFmt("%s/" TEST_CERTIFICATE_PREFIX ".key", testRepoPath()))); } } /*********************************************************************************************************************************** Expect an exact string from the client This is a very unforgiving function and short input will leave the server hanging. Definitely room for improvement here. ***********************************************************************************************************************************/ void harnessTlsServerExpect(const char *expected) { Buffer *buffer = bufNew(strlen(expected)); int readBytes = 0; // Read expected bytes do { int lastBytes = SSL_read(testClientSSL, bufRemainsPtr(buffer), (int)bufRemains(buffer)); readBytes += lastBytes; bufUsedSet(buffer, (size_t)readBytes); } while (bufRemains(buffer)); // Treat and ? characters as wildcards so variable elements (e.g. auth hashes) can be ignored String *actual = strNewBuf(buffer); for (unsigned int actualIdx = 0; actualIdx < strSize(actual); actualIdx++) { if (expected[actualIdx] == '?') ((char *)strPtr(actual))[actualIdx] = '?'; } // Error if actual does not match expected if (!strEqZ(actual, expected)) THROW_FMT(AssertError, "server expected '%s' but got '%s'", expected, strPtr(actual)); } /*********************************************************************************************************************************** Send a reply to the client ***********************************************************************************************************************************/ void harnessTlsServerReply(const char *reply) { SSL_write(testClientSSL, reply, (int)strlen(reply)); } /*********************************************************************************************************************************** Accept a TLS connection from the client ***********************************************************************************************************************************/ void harnessTlsServerAccept(void) { struct sockaddr_in addr; unsigned int len = sizeof(addr); testClientSocket = accept(testServerSocket, (struct sockaddr *)&addr, &len); if (testClientSocket < 0) THROW_SYS_ERROR(AssertError, "unable to accept socket"); testClientSSL = SSL_new(testServerContext); SSL_set_fd(testClientSSL, testClientSocket); cryptoError(SSL_accept(testClientSSL) <= 0, "unable to accept TLS connection"); } /*********************************************************************************************************************************** Close the connection ***********************************************************************************************************************************/ void harnessTlsServerClose(void) { SSL_free(testClientSSL); close(testClientSocket); } /**********************************************************************************************************************************/ const String *harnessTlsTestHost(void) { return strNew(testContainer() ? TLS_TEST_HOST : "localhost"); } /**********************************************************************************************************************************/ unsigned int harnessTlsTestPort(void) { return 44443 + testIdx(); } pgbackrest-release-2.24/test/src/common/harnessTls.h000066400000000000000000000050411362531507100225440ustar00rootroot00000000000000/*********************************************************************************************************************************** Tls Test Harness Simple TLS server for testing TLS client functionality. ***********************************************************************************************************************************/ #ifndef TEST_COMMON_HARNESS_TLS_H #define TEST_COMMON_HARNESS_TLS_H /*********************************************************************************************************************************** Path and prefix for test certificates ***********************************************************************************************************************************/ #define TEST_CERTIFICATE_PREFIX "test/certificate/pgbackrest-test" /*********************************************************************************************************************************** Tls test defaults ***********************************************************************************************************************************/ #define TLS_CERT_FAKE_PATH "/etc/fake-cert" #define TLS_CERT_TEST_CERT TLS_CERT_FAKE_PATH "/pgbackrest-test.crt" #define TLS_CERT_TEST_KEY TLS_CERT_FAKE_PATH "/pgbackrest-test.key" /*********************************************************************************************************************************** Functions ***********************************************************************************************************************************/ void harnessTlsServerInit(unsigned int port, const char *serverCert, const char *serverKey); // Initialize TLS with default parameters void harnessTlsServerInitDefault(void); void harnessTlsServerAccept(void); void harnessTlsServerExpect(const char *expected); void harnessTlsServerReply(const char *reply); void harnessTlsServerClose(void); /*********************************************************************************************************************************** Getters ***********************************************************************************************************************************/ // Hostname to use for testing -- this will vary based on whether the test is running in a container const String *harnessTlsTestHost(void); // Port to use for testing. This will be unique for each test running in parallel to avoid conflicts unsigned int harnessTlsTestPort(void); #endif pgbackrest-release-2.24/test/src/module/000077500000000000000000000000001362531507100202425ustar00rootroot00000000000000pgbackrest-release-2.24/test/src/module/command/000077500000000000000000000000001362531507100216605ustar00rootroot00000000000000pgbackrest-release-2.24/test/src/module/command/archiveCommonTest.c000066400000000000000000000436061362531507100254670ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Archive Common ***********************************************************************************************************************************/ #include #include "storage/helper.h" #include "storage/posix/storage.h" #include "common/harnessConfig.h" #include "common/harnessFork.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // Create default storage object for testing Storage *storageTest = storagePosixNew( strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); // ***************************************************************************************************************************** if (testBegin("archiveAsyncErrorClear() and archiveAsyncStatus()")) { StringList *argList = strLstNew(); strLstAdd(argList, strNewFmt("--spool-path=%s", testPath())); strLstAddZ(argList, "--archive-async"); strLstAddZ(argList, "--archive-timeout=1"); strLstAddZ(argList, "--stanza=db"); harnessCfgLoad(cfgCmdArchivePush, argList); // ------------------------------------------------------------------------------------------------------------------------- String *segment = strNew("000000010000000100000001"); TEST_RESULT_BOOL(archiveAsyncStatus(archiveModePush, segment, false), false, "directory and status file not present"); TEST_RESULT_BOOL(archiveAsyncStatus(archiveModeGet, segment, false), false, "directory and status file not present"); // ------------------------------------------------------------------------------------------------------------------------- mkdir(strPtr(strNewFmt("%s/archive", testPath())), 0750); mkdir(strPtr(strNewFmt("%s/archive/db", testPath())), 0750); mkdir(strPtr(strNewFmt("%s/archive/db/out", testPath())), 0750); TEST_RESULT_BOOL(archiveAsyncStatus(archiveModePush, segment, false), false, "status file not present"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("clear archive file errors"); const String *errorSegment = strNewFmt(STORAGE_SPOOL_ARCHIVE_OUT "/%s.error", strPtr(segment)); const String *errorGlobal = strNew(STORAGE_SPOOL_ARCHIVE_OUT "/global.error"); storagePutP(storageNewWriteP(storageSpoolWrite(), errorSegment), NULL); storagePutP(storageNewWriteP(storageSpoolWrite(), errorGlobal), NULL); TEST_RESULT_VOID(archiveAsyncErrorClear(archiveModePush, segment), "clear error"); TEST_RESULT_BOOL(storageExistsP(storageSpool(), errorSegment), false, " check segment error"); TEST_RESULT_BOOL(storageExistsP(storageSpool(), errorGlobal), false, " check global error"); // ------------------------------------------------------------------------------------------------------------------------- storagePutP( storageNewWriteP(storageSpoolWrite(), strNewFmt(STORAGE_SPOOL_ARCHIVE_OUT "/%s.ok", strPtr(segment))), BUFSTRDEF(BOGUS_STR)); TEST_ERROR( archiveAsyncStatus(archiveModePush, segment, false), FormatError, "000000010000000100000001.ok content must have at least two lines"); storagePutP( storageNewWriteP(storageSpoolWrite(), strNewFmt(STORAGE_SPOOL_ARCHIVE_OUT "/%s.ok", strPtr(segment))), BUFSTRDEF(BOGUS_STR "\n")); TEST_ERROR( archiveAsyncStatus(archiveModePush, segment, false), FormatError, "000000010000000100000001.ok message must be > 0"); storagePutP( storageNewWriteP(storageSpoolWrite(), strNewFmt(STORAGE_SPOOL_ARCHIVE_OUT "/%s.ok", strPtr(segment))), BUFSTRDEF(BOGUS_STR "\nmessage")); TEST_ERROR( archiveAsyncStatus(archiveModePush, segment, false), FormatError, "unable to convert base 10 string 'BOGUS' to int"); storagePutP(storageNewWriteP(storageSpoolWrite(), strNewFmt(STORAGE_SPOOL_ARCHIVE_OUT "/%s.ok", strPtr(segment))), NULL); TEST_RESULT_BOOL(archiveAsyncStatus(archiveModePush, segment, false), true, "ok file"); storagePutP( storageNewWriteP(storageSpoolWrite(), strNewFmt(STORAGE_SPOOL_ARCHIVE_OUT "/%s.ok", strPtr(segment))), BUFSTRDEF("0\nwarning")); TEST_RESULT_BOOL(archiveAsyncStatus(archiveModePush, segment, false), true, "ok file with warning"); harnessLogResult("P00 WARN: warning"); storagePutP( storageNewWriteP(storageSpoolWrite(), strNewFmt(STORAGE_SPOOL_ARCHIVE_OUT "/%s.ok", strPtr(segment))), BUFSTRDEF("25\nerror")); TEST_RESULT_BOOL(archiveAsyncStatus(archiveModePush, segment, false), true, "error status renamed to ok"); harnessLogResult( "P00 WARN: WAL segment '000000010000000100000001' was not pushed due to error [25] and was manually skipped: error"); TEST_RESULT_VOID( storageRemoveP( storageSpoolWrite(), strNewFmt(STORAGE_SPOOL_ARCHIVE_OUT "/%s.ok", strPtr(segment)), .errorOnMissing = true), "remove ok"); // ------------------------------------------------------------------------------------------------------------------------- storagePutP( storageNewWriteP(storageSpoolWrite(), strNewFmt(STORAGE_SPOOL_ARCHIVE_OUT "/%s.error", strPtr(segment))), bufNew(0)); TEST_ERROR( archiveAsyncStatus(archiveModePush, segment, true), AssertError, "status file '000000010000000100000001.error' has no content"); storagePutP( storageNewWriteP(storageSpoolWrite(), strNewFmt(STORAGE_SPOOL_ARCHIVE_OUT "/%s.error", strPtr(segment))), BUFSTRDEF("25\nmessage")); TEST_ERROR(archiveAsyncStatus(archiveModePush, segment, true), AssertError, "message"); TEST_RESULT_BOOL(archiveAsyncStatus(archiveModePush, segment, false), false, "suppress error"); // ------------------------------------------------------------------------------------------------------------------------- storagePutP( storageNewWriteP(storageSpoolWrite(), strNew(STORAGE_SPOOL_ARCHIVE_OUT "/global.error")), BUFSTRDEF("102\nexecute error")); TEST_ERROR(archiveAsyncStatus(archiveModePush, strNew("anyfile"), true), ExecuteError, "execute error"); } // ***************************************************************************************************************************** if (testBegin("archiveAsyncStatusErrorWrite() and archiveAsyncStatusOkWrite()")) { StringList *argList = strLstNew(); strLstAdd(argList, strNewFmt("--spool-path=%s", testPath())); strLstAddZ(argList, "--stanza=db"); strLstAddZ(argList, "--" CFGOPT_ARCHIVE_ASYNC); harnessCfgLoadRole(cfgCmdArchiveGet, cfgCmdRoleAsync, argList); String *walSegment = strNew("000000010000000100000001"); TEST_RESULT_VOID( archiveAsyncStatusErrorWrite(archiveModeGet, walSegment, 25, strNew("error message")), "write error"); TEST_RESULT_STR_Z( strNewBuf(storageGetP(storageNewReadP(storageTest, strNew("archive/db/in/000000010000000100000001.error")))), "25\nerror message", "check error"); TEST_RESULT_VOID( storageRemoveP(storageTest, strNew("archive/db/in/000000010000000100000001.error"), .errorOnMissing = true), "remove error"); TEST_RESULT_VOID( archiveAsyncStatusErrorWrite(archiveModeGet, NULL, 25, strNew("global error message")), "write global error"); TEST_RESULT_STR_Z( strNewBuf(storageGetP(storageNewReadP(storageTest, strNew("archive/db/in/global.error")))), "25\nglobal error message", "check global error"); TEST_RESULT_VOID( storageRemoveP(storageTest, strNew("archive/db/in/global.error"), .errorOnMissing = true), "remove global error"); TEST_RESULT_VOID( archiveAsyncStatusOkWrite(archiveModeGet, walSegment, NULL), "write ok file"); TEST_RESULT_STR_Z( strNewBuf(storageGetP(storageNewReadP(storageTest, strNew("archive/db/in/000000010000000100000001.ok")))), "", "check ok"); TEST_RESULT_VOID( storageRemoveP(storageTest, strNew("archive/db/in/000000010000000100000001.ok"), .errorOnMissing = true), "remove ok"); TEST_RESULT_VOID( archiveAsyncStatusOkWrite(archiveModeGet, walSegment, strNew("WARNING")), "write ok file with warning"); TEST_RESULT_STR_Z( strNewBuf(storageGetP(storageNewReadP(storageTest, strNew("archive/db/in/000000010000000100000001.ok")))), "0\nWARNING", "check ok warning"); TEST_RESULT_VOID( storageRemoveP(storageTest, strNew("archive/db/in/000000010000000100000001.ok"), .errorOnMissing = true), "remove ok"); } // ***************************************************************************************************************************** if (testBegin("walIsPartial()")) { TEST_RESULT_BOOL(walIsPartial(strNew("000000010000000100000001")), false, "not partial"); TEST_RESULT_BOOL(walIsPartial(strNew("FFFFFFFFFFFFFFFFFFFFFFFF.partial")), true, "partial"); } // ***************************************************************************************************************************** if (testBegin("walIsSegment()")) { TEST_RESULT_BOOL(walIsSegment(strNew("000000010000000100000001")), true, "wal segment"); TEST_RESULT_BOOL(walIsSegment(strNew("FFFFFFFFFFFFFFFFFFFFFFFF.partial")), true, "partial wal segment"); TEST_RESULT_BOOL(walIsSegment(strNew("0000001A.history")), false, "history file"); } // ***************************************************************************************************************************** if (testBegin("walPath()")) { const String *pgPath = storagePathP(storageTest, STRDEF("pg")); storagePathCreateP(storageTest, pgPath); TEST_RESULT_STR_Z(walPath(strNew("/absolute/path"), pgPath, strNew("test")), "/absolute/path", "absolute path"); THROW_ON_SYS_ERROR(chdir(strPtr(pgPath)) != 0, PathMissingError, "unable to chdir()"); TEST_RESULT_STR( walPath(strNew("relative/path"), pgPath, strNew("test")), strNewFmt("%s/relative/path", strPtr(pgPath)), "relative path"); const String *pgPathLink = storagePathP(storageTest, STRDEF("pg-link")); THROW_ON_SYS_ERROR_FMT( symlink(strPtr(pgPath), strPtr(pgPathLink)) == -1, FileOpenError, "unable to create symlink '%s' to '%s'", strPtr(pgPath), strPtr(pgPathLink)); THROW_ON_SYS_ERROR(chdir(strPtr(pgPath)) != 0, PathMissingError, "unable to chdir()"); TEST_RESULT_STR( walPath(strNew("relative/path"), pgPathLink, strNew("test")), strNewFmt("%s/relative/path", strPtr(pgPathLink)), "relative path"); THROW_ON_SYS_ERROR(chdir("/") != 0, PathMissingError, "unable to chdir()"); TEST_ERROR( walPath(strNew("relative/path"), pgPathLink, strNew("test")), AssertError, hrnReplaceKey("working path '/' is not the same path as '{[path]}/pg-link'")); TEST_ERROR( walPath(strNew("relative/path"), NULL, strNew("test")), OptionRequiredError, "option 'pg1-path' must be specified when relative wal paths are used\n" "HINT: is %f passed to test instead of %p?\n" "HINT: PostgreSQL may pass relative paths even with %p depending on the environment."); } // ***************************************************************************************************************************** if (testBegin("walSegmentFind()")) { // Load configuration to set repo-path and stanza StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=db"); strLstAdd(argList, strNewFmt("--repo-path=%s", testPath())); strLstAddZ(argList, "archive-get"); harnessCfgLoad(cfgCmdArchiveGet, argList); TEST_RESULT_PTR(walSegmentFind(storageRepo(), strNew("9.6-2"), strNew("123456781234567812345678"), 0), NULL, "no path"); storagePathCreateP(storageTest, strNew("archive/db/9.6-2/1234567812345678")); TEST_RESULT_PTR(walSegmentFind(storageRepo(), strNew("9.6-2"), strNew("123456781234567812345678"), 0), NULL, "no segment"); TEST_ERROR( walSegmentFind(storageRepo(), strNew("9.6-2"), strNew("123456781234567812345678"), 100), ArchiveTimeoutError, "WAL segment 123456781234567812345678 was not archived before the 100ms timeout\n" "HINT: check the archive_command to ensure that all options are correct (especially --stanza).\n" "HINT: check the PostgreSQL server log for errors."); // Check timeout by making the wal segment appear after 250ms HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, false) { sleepMSec(250); storagePutP( storageNewWriteP( storageTest, strNew( "archive/db/9.6-2/1234567812345678/123456781234567812345678-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")), NULL); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { TEST_RESULT_STR_Z( walSegmentFind(storageRepo(), strNew("9.6-2"), strNew("123456781234567812345678"), 1000), "123456781234567812345678-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "found segment"); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); storagePutP( storageNewWriteP( storageTest, strNew("archive/db/9.6-2/1234567812345678/123456781234567812345678-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.gz")), NULL); TEST_ERROR( walSegmentFind(storageRepo(), strNew("9.6-2"), strNew("123456781234567812345678"), 0), ArchiveDuplicateError, "duplicates found in archive for WAL segment 123456781234567812345678:" " 123456781234567812345678-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ", 123456781234567812345678-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.gz" "\nHINT: are multiple primaries archiving to this stanza?"); TEST_RESULT_PTR( walSegmentFind(storageRepo(), strNew("9.6-2"), strNew("123456781234567812345678.partial"), 0), NULL, "did not find partial segment"); } // ***************************************************************************************************************************** if (testBegin("walSegmentNext()")) { TEST_RESULT_STR_Z( walSegmentNext(strNew("000000010000000100000001"), 16 * 1024 * 1024, PG_VERSION_10), "000000010000000100000002", "get next"); TEST_RESULT_STR_Z( walSegmentNext(strNew("0000000100000001000000FE"), 16 * 1024 * 1024, PG_VERSION_93), "0000000100000001000000FF", "get next"); TEST_RESULT_STR_Z( walSegmentNext(strNew("0000009900000001000000FF"), 16 * 1024 * 1024, PG_VERSION_93), "000000990000000200000000", "get next overflow >= 9.3"); TEST_RESULT_STR_Z( walSegmentNext(strNew("0000000100000001000000FE"), 16 * 1024 * 1024, PG_VERSION_92), "000000010000000200000000", "get next overflow < 9.3"); TEST_RESULT_STR_Z( walSegmentNext(strNew("000000010000000100000003"), 1024 * 1024 * 1024, PG_VERSION_11), "000000010000000200000000", "get next overflow >= 11/1GB"); TEST_RESULT_STR_Z( walSegmentNext(strNew("000000010000006700000FFF"), 1024 * 1024, PG_VERSION_11), "000000010000006800000000", "get next overflow >= 11/1MB"); } // ***************************************************************************************************************************** if (testBegin("walSegmentRange()")) { TEST_RESULT_STR_Z( strLstJoin(walSegmentRange(strNew("000000010000000100000000"), 16 * 1024 * 1024, PG_VERSION_92, 1), "|"), "000000010000000100000000", "get single"); TEST_RESULT_STR_Z( strLstJoin(walSegmentRange(strNew("0000000100000001000000FD"), 16 * 1024 * 1024, PG_VERSION_92, 4), "|"), "0000000100000001000000FD|0000000100000001000000FE|000000010000000200000000|000000010000000200000001", "get range < 9.3"); TEST_RESULT_STR_Z( strLstJoin(walSegmentRange(strNew("0000000100000001000000FD"), 16 * 1024 * 1024, PG_VERSION_93, 4), "|"), "0000000100000001000000FD|0000000100000001000000FE|0000000100000001000000FF|000000010000000200000000", "get range >= 9.3"); TEST_RESULT_STR_Z( strLstJoin(walSegmentRange(strNew("000000080000000A00000000"), 1024 * 1024 * 1024, PG_VERSION_11, 8), "|"), "000000080000000A00000000|000000080000000A00000001|000000080000000A00000002|000000080000000A00000003|" "000000080000000B00000000|000000080000000B00000001|000000080000000B00000002|000000080000000B00000003", "get range >= 11/1GB"); TEST_RESULT_STR_Z( strLstJoin(walSegmentRange(strNew("000000070000000700000FFE"), 1024 * 1024, PG_VERSION_11, 4), "|"), "000000070000000700000FFE|000000070000000700000FFF|000000070000000800000000|000000070000000800000001", "get range >= 11/1MB"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/command/archiveGetTest.c000066400000000000000000001104371362531507100247530ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Archive Get Command ***********************************************************************************************************************************/ #include "common/compress/gzip/compress.h" #include "common/harnessConfig.h" #include "common/harnessFork.h" #include "common/io/bufferRead.h" #include "common/io/bufferWrite.h" #include "postgres/interface.h" #include "postgres/version.h" #include "storage/posix/storage.h" #include "common/harnessInfo.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); Storage *storageTest = storagePosixNew( strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); // Start a protocol server to test the protocol directly Buffer *serverWrite = bufNew(8192); IoWrite *serverWriteIo = ioBufferWriteNew(serverWrite); ioWriteOpen(serverWriteIo); ProtocolServer *server = protocolServerNew( strNew("test"), strNew("test"), ioBufferReadNew(bufNew(0)), serverWriteIo); bufUsedSet(serverWrite, 0); // ***************************************************************************************************************************** if (testBegin("archiveGetCheck()")) { // Load Parameters StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAdd(argList, strNewFmt("--pg1-path=%s/db", testPath())); harnessCfgLoad(cfgCmdArchiveGet, argList); // Create pg_control file storagePutP( storageNewWriteP(storageTest, strNew("db/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL)), pgControlTestToBuffer((PgControl){.version = PG_VERSION_10, .systemId = 0xFACEFACEFACEFACE})); // Control and archive info mismatch // ------------------------------------------------------------------------------------------------------------------------- storagePutP( storageNewWriteP(storageTest, strNew("repo/archive/test1/archive.info")), harnessInfoChecksumZ( "[db]\n" "db-id=1\n" "\n" "[db:history]\n" "1={\"db-id\":5555555555555555555,\"db-version\":\"9.4\"}\n")); TEST_ERROR( archiveGetCheck(strNew("876543218765432187654321"), cipherTypeNone, NULL), ArchiveMismatchError, "unable to retrieve the archive id for database version '10' and system-id '18072658121562454734'"); // Nothing to find in empty archive dir // ------------------------------------------------------------------------------------------------------------------------- storagePutP( storageNewWriteP(storageTest, strNew("repo/archive/test1/archive.info")), harnessInfoChecksumZ( "[db]\n" "db-id=3\n" "\n" "[db:history]\n" "1={\"db-id\":5555555555555555555,\"db-version\":\"9.4\"}\n" "2={\"db-id\":18072658121562454734,\"db-version\":\"10\"}\n" "3={\"db-id\":18072658121562454734,\"db-version\":\"9.6\"}\n" "4={\"db-id\":18072658121562454734,\"db-version\":\"10\"}")); TEST_RESULT_PTR( archiveGetCheck(strNew("876543218765432187654321"), cipherTypeNone, NULL).archiveFileActual, NULL, "no segment found"); // Write segment into an older archive path // ------------------------------------------------------------------------------------------------------------------------- storagePutP( storageNewWriteP( storageTest, strNew( "repo/archive/test1/10-2/8765432187654321/876543218765432187654321-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")), NULL); TEST_RESULT_STR_Z( archiveGetCheck(strNew("876543218765432187654321"), cipherTypeNone, NULL).archiveFileActual, "10-2/8765432187654321/876543218765432187654321-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "segment found"); // Write segment into an newer archive path // ------------------------------------------------------------------------------------------------------------------------- storagePutP( storageNewWriteP( storageTest, strNew( "repo/archive/test1/10-4/8765432187654321/876543218765432187654321-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb")), NULL); TEST_RESULT_STR_Z( archiveGetCheck(strNew("876543218765432187654321"), cipherTypeNone, NULL).archiveFileActual, "10-4/8765432187654321/876543218765432187654321-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", "newer segment found"); // Get history file // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_PTR( archiveGetCheck(strNew("00000009.history"), cipherTypeNone, NULL).archiveFileActual, NULL, "history file not found"); storagePutP(storageNewWriteP(storageTest, strNew("repo/archive/test1/10-4/00000009.history")), NULL); TEST_RESULT_STR_Z( archiveGetCheck(strNew("00000009.history"), cipherTypeNone, NULL).archiveFileActual, "10-4/00000009.history", "history file found"); } // ***************************************************************************************************************************** if (testBegin("archiveGetFile()")) { // Load Parameters StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAdd(argList, strNewFmt("--pg1-path=%s/db", testPath())); harnessCfgLoad(cfgCmdArchiveGet, argList); // Create pg_control file storagePutP( storageNewWriteP(storageTest, strNew("db/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL)), pgControlTestToBuffer((PgControl){.version = PG_VERSION_10, .systemId = 0xFACEFACEFACEFACE})); // Create archive.info storagePutP( storageNewWriteP(storageTest, strNew("repo/archive/test1/archive.info")), harnessInfoChecksumZ( "[db]\n" "db-id=1\n" "\n" "[db:history]\n" "1={\"db-id\":18072658121562454734,\"db-version\":\"10\"}")); // Nothing to copy // ------------------------------------------------------------------------------------------------------------------------- String *archiveFile = strNew("01ABCDEF01ABCDEF01ABCDEF"); String *walDestination = strNewFmt("%s/db/pg_wal/RECOVERYXLOG", testPath()); storagePathCreateP(storageTest, strPath(walDestination)); TEST_RESULT_INT( archiveGetFile(storageTest, archiveFile, walDestination, false, cipherTypeNone, NULL), 1, "WAL segment missing"); // Create a WAL segment to copy // ------------------------------------------------------------------------------------------------------------------------- Buffer *buffer = bufNew(16 * 1024 * 1024); memset(bufPtr(buffer), 0, bufSize(buffer)); bufUsedSet(buffer, bufSize(buffer)); storagePutP( storageNewWriteP( storageTest, strNew( "repo/archive/test1/10-1/01ABCDEF01ABCDEF/01ABCDEF01ABCDEF01ABCDEF-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")), buffer); TEST_RESULT_INT( archiveGetFile(storageTest, archiveFile, walDestination, false, cipherTypeNone, NULL), 0, "WAL segment copied"); TEST_RESULT_BOOL(storageExistsP(storageTest, walDestination), true, " check exists"); TEST_RESULT_INT(storageInfoP(storageTest, walDestination).size, 16 * 1024 * 1024, " check size"); storageRemoveP( storageTest, strNew("repo/archive/test1/10-1/01ABCDEF01ABCDEF/01ABCDEF01ABCDEF01ABCDEF-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), .errorOnMissing = true); storageRemoveP(storageTest, walDestination, .errorOnMissing = true); // Create a compressed WAL segment to copy // ------------------------------------------------------------------------------------------------------------------------- StorageWrite *infoWrite = storageNewWriteP(storageTest, strNew("repo/archive/test1/archive.info")); ioFilterGroupAdd( ioWriteFilterGroup(storageWriteIo(infoWrite)), cipherBlockNew(cipherModeEncrypt, cipherTypeAes256Cbc, BUFSTRDEF("12345678"), NULL)); storagePutP( infoWrite, harnessInfoChecksumZ( "[cipher]\n" "cipher-pass=\"worstpassphraseever\"\n" "\n" "[db]\n" "db-id=1\n" "\n" "[db:history]\n" "1={\"db-id\":18072658121562454734,\"db-version\":\"10\"}")); StorageWrite *destination = storageNewWriteP( storageTest, strNew( "repo/archive/test1/10-1/01ABCDEF01ABCDEF/01ABCDEF01ABCDEF01ABCDEF-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.gz")); IoFilterGroup *filterGroup = ioWriteFilterGroup(storageWriteIo(destination)); ioFilterGroupAdd(filterGroup, gzipCompressNew(3, false)); ioFilterGroupAdd( filterGroup, cipherBlockNew(cipherModeEncrypt, cipherTypeAes256Cbc, BUFSTRDEF("worstpassphraseever"), NULL)); storagePutP(destination, buffer); TEST_RESULT_INT( archiveGetFile( storageTest, archiveFile, walDestination, false, cipherTypeAes256Cbc, strNew("12345678")), 0, "WAL segment copied"); TEST_RESULT_BOOL(storageExistsP(storageTest, walDestination), true, " check exists"); TEST_RESULT_INT(storageInfoP(storageTest, walDestination).size, 16 * 1024 * 1024, " check size"); // Check protocol function directly // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAdd(argList, strNewFmt("--pg1-path=%s/db", testPath())); strLstAdd(argList, strNewFmt("--spool-path=%s/spool", testPath())); strLstAddZ(argList, "--" CFGOPT_ARCHIVE_ASYNC); strLstAddZ(argList, "--repo1-cipher-type=aes-256-cbc"); setenv("PGBACKREST_REPO1_CIPHER_PASS", "12345678", true); harnessCfgLoadRole(cfgCmdArchiveGet, cfgCmdRoleAsync, argList); unsetenv("PGBACKREST_REPO1_CIPHER_PASS"); storagePathCreateP(storageTest, strNew("spool/archive/test1/in")); VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewStr(archiveFile)); TEST_RESULT_BOOL( archiveGetProtocol(PROTOCOL_COMMAND_ARCHIVE_GET_STR, paramList, server), true, "protocol archive get"); TEST_RESULT_STR_Z(strNewBuf(serverWrite), "{\"out\":0}\n", "check result"); TEST_RESULT_BOOL( storageExistsP(storageTest, strNewFmt("spool/archive/test1/in/%s", strPtr(archiveFile))), true, " check exists"); bufUsedSet(serverWrite, 0); // Check invalid protocol function // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(archiveGetProtocol(strNew(BOGUS_STR), paramList, server), false, "invalid function"); } // ***************************************************************************************************************************** if (testBegin("queueNeed()")) { StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--archive-async"); strLstAdd(argList, strNewFmt("--spool-path=%s/spool", testPath())); harnessCfgLoad(cfgCmdArchiveGet, argList); size_t queueSize = 16 * 1024 * 1024; size_t walSegmentSize = 16 * 1024 * 1024; TEST_ERROR_FMT( queueNeed(strNew("000000010000000100000001"), false, queueSize, walSegmentSize, PG_VERSION_92), PathMissingError, "unable to list files for missing path '%s/spool/archive/test1/in'", testPath()); // ------------------------------------------------------------------------------------------------------------------------- storagePathCreateP(storageSpoolWrite(), strNew(STORAGE_SPOOL_ARCHIVE_IN)); TEST_RESULT_STR_Z( strLstJoin(queueNeed(strNew("000000010000000100000001"), false, queueSize, walSegmentSize, PG_VERSION_92), "|"), "000000010000000100000001|000000010000000100000002", "queue size smaller than min"); // ------------------------------------------------------------------------------------------------------------------------- queueSize = (16 * 1024 * 1024) * 3; TEST_RESULT_STR_Z( strLstJoin(queueNeed(strNew("000000010000000100000001"), false, queueSize, walSegmentSize, PG_VERSION_92), "|"), "000000010000000100000001|000000010000000100000002|000000010000000100000003", "empty queue"); // ------------------------------------------------------------------------------------------------------------------------- Buffer *walSegmentBuffer = bufNew(walSegmentSize); memset(bufPtr(walSegmentBuffer), 0, walSegmentSize); storagePutP( storageNewWriteP( storageSpoolWrite(), strNew(STORAGE_SPOOL_ARCHIVE_IN "/0000000100000001000000FE")), walSegmentBuffer); storagePutP( storageNewWriteP( storageSpoolWrite(), strNew(STORAGE_SPOOL_ARCHIVE_IN "/0000000100000001000000FF")), walSegmentBuffer); TEST_RESULT_STR_Z( strLstJoin(queueNeed(strNew("0000000100000001000000FE"), false, queueSize, walSegmentSize, PG_VERSION_92), "|"), "000000010000000200000000|000000010000000200000001", "queue has wal < 9.3"); TEST_RESULT_STR_Z( strLstJoin(storageListP(storageSpoolWrite(), strNew(STORAGE_SPOOL_ARCHIVE_IN)), "|"), "0000000100000001000000FE", "check queue"); // ------------------------------------------------------------------------------------------------------------------------- walSegmentSize = 1024 * 1024; queueSize = walSegmentSize * 5; storagePutP(storageNewWriteP(storageSpoolWrite(), strNew(STORAGE_SPOOL_ARCHIVE_IN "/junk")), BUFSTRDEF("JUNK")); storagePutP( storageNewWriteP( storageSpoolWrite(), strNew(STORAGE_SPOOL_ARCHIVE_IN "/000000010000000A00000FFE")), walSegmentBuffer); storagePutP( storageNewWriteP( storageSpoolWrite(), strNew(STORAGE_SPOOL_ARCHIVE_IN "/000000010000000A00000FFF")), walSegmentBuffer); TEST_RESULT_STR_Z( strLstJoin(queueNeed(strNew("000000010000000A00000FFD"), true, queueSize, walSegmentSize, PG_VERSION_11), "|"), "000000010000000B00000000|000000010000000B00000001|000000010000000B00000002", "queue has wal >= 9.3"); TEST_RESULT_STR_Z( strLstJoin(strLstSort(storageListP(storageSpool(), strNew(STORAGE_SPOOL_ARCHIVE_IN)), sortOrderAsc), "|"), "000000010000000A00000FFE|000000010000000A00000FFF", "check queue"); } // ***************************************************************************************************************************** if (testBegin("cmdArchiveGetAsync()")) { harnessLogLevelSet(logLevelDetail); StringList *argCleanList = strLstNew(); strLstAdd(argCleanList, strNewFmt("--pg1-path=%s/pg", testPath())); strLstAdd(argCleanList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAdd(argCleanList, strNewFmt("--spool-path=%s/spool", testPath())); strLstAddZ(argCleanList, "--" CFGOPT_ARCHIVE_ASYNC); strLstAddZ(argCleanList, "--stanza=test2"); harnessCfgLoadRole(cfgCmdArchiveGet, cfgCmdRoleAsync, argCleanList); TEST_ERROR(cmdArchiveGetAsync(), ParamInvalidError, "at least one wal segment is required"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("command must be run on the pg host"); StringList *argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_PG1_HOST "=host"); strLstAddZ(argList, "--" CFGOPT_PG1_PATH "=/pg"); strLstAddZ(argList, "--" CFGOPT_REPO1_PATH "=/repo"); strLstAddZ(argList, "--" CFGOPT_SPOOL_PATH "=/spool"); strLstAddZ(argList, "--" CFGOPT_ARCHIVE_ASYNC); strLstAddZ(argList, "--" CFGOPT_STANZA "=test2"); strLstAddZ(argList, "000000010000000100000001"); harnessCfgLoadRole(cfgCmdArchiveGet, cfgCmdRoleAsync, argList); TEST_ERROR(cmdArchiveGetAsync(), HostInvalidError, "archive-get command must be run on the PostgreSQL host"); // Create pg_control file and archive.info // ------------------------------------------------------------------------------------------------------------------------- storagePutP( storageNewWriteP(storageTest, strNew("pg/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL)), pgControlTestToBuffer((PgControl){.version = PG_VERSION_10, .systemId = 0xFACEFACEFACEFACE})); storagePutP( storageNewWriteP(storageTest, strNew("repo/archive/test2/archive.info")), harnessInfoChecksumZ( "[db]\n" "db-id=1\n" "\n" "[db:history]\n" "1={\"db-id\":18072658121562454734,\"db-version\":\"10\"}\n")); // Get a single segment // ------------------------------------------------------------------------------------------------------------------------- argList = strLstDup(argCleanList); strLstAddZ(argList, "000000010000000100000001"); harnessCfgLoadRole(cfgCmdArchiveGet, cfgCmdRoleAsync, argList); storagePathCreateP(storageSpoolWrite(), strNew(STORAGE_SPOOL_ARCHIVE_IN)); TEST_RESULT_VOID( storagePutP( storageNewWriteP( storageTest, strNew( "repo/archive/test2/10-1/0000000100000001/" "000000010000000100000001-abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd")), NULL), "normal WAL segment"); TEST_RESULT_VOID(cmdArchiveGetAsync(), "archive async"); harnessLogResult( "P00 INFO: get 1 WAL file(s) from archive: 000000010000000100000001\n" "P01 DETAIL: found 000000010000000100000001 in the archive"); TEST_RESULT_BOOL( storageExistsP(storageSpool(), strNew(STORAGE_SPOOL_ARCHIVE_IN "/000000010000000100000001")), true, "check 000000010000000100000001 in spool"); // Get multiple segments where some are missing or errored // ------------------------------------------------------------------------------------------------------------------------- argList = strLstDup(argCleanList); strLstAddZ(argList, "000000010000000100000001"); strLstAddZ(argList, "000000010000000100000002"); strLstAddZ(argList, "000000010000000100000003"); harnessCfgLoadRole(cfgCmdArchiveGet, cfgCmdRoleAsync, argList); storagePathCreateP(storageSpoolWrite(), strNew(STORAGE_SPOOL_ARCHIVE_IN)); TEST_RESULT_VOID( storagePutP( storageNewWriteP( storageTest, strNew( "repo/archive/test2/10-1/0000000100000001/" "000000010000000100000003-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")), NULL), "normal WAL segment"); TEST_RESULT_VOID( storagePutP( storageNewWriteP( storageTest, strNew( "repo/archive/test2/10-1/0000000100000001/" "000000010000000100000003-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb")), NULL), "duplicate WAL segment"); TEST_RESULT_VOID(cmdArchiveGetAsync(), "archive async"); harnessLogResult( "P00 INFO: get 3 WAL file(s) from archive: 000000010000000100000001...000000010000000100000003\n" "P01 DETAIL: found 000000010000000100000001 in the archive\n" "P01 DETAIL: unable to find 000000010000000100000002 in the archive\n" "P01 WARN: could not get 000000010000000100000003 from the archive (will be retried): " "[45] raised from local-1 protocol: duplicates found in archive for WAL segment 000000010000000100000003: " "000000010000000100000003-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, " "000000010000000100000003-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n" " HINT: are multiple primaries archiving to this stanza?"); TEST_RESULT_BOOL( storageExistsP(storageSpool(), strNew(STORAGE_SPOOL_ARCHIVE_IN "/000000010000000100000001")), true, "check 000000010000000100000001 in spool"); TEST_RESULT_BOOL( storageExistsP(storageSpool(), strNew(STORAGE_SPOOL_ARCHIVE_IN "/000000010000000100000002")), false, "check 000000010000000100000002 not in spool"); TEST_RESULT_BOOL( storageExistsP(storageSpool(), strNew(STORAGE_SPOOL_ARCHIVE_IN "/000000010000000100000002.ok")), true, "check 000000010000000100000002.ok in spool"); TEST_RESULT_BOOL( storageExistsP(storageSpool(), strNew(STORAGE_SPOOL_ARCHIVE_IN "/000000010000000100000003")), false, "check 000000010000000100000003 not in spool"); TEST_RESULT_BOOL( storageExistsP(storageSpool(), strNew(STORAGE_SPOOL_ARCHIVE_IN "/000000010000000100000003.error")), true, "check 000000010000000100000003.error in spool"); protocolFree(); // ------------------------------------------------------------------------------------------------------------------------- storageRemoveP( storageSpoolWrite(), strNew(STORAGE_SPOOL_ARCHIVE_IN "/000000010000000100000003.error"), .errorOnMissing = true); argList = strLstNew(); strLstAddZ(argList, "pgbackrest-bogus"); strLstAdd(argList, strNewFmt("--pg1-path=%s/pg", testPath())); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAdd(argList, strNewFmt("--spool-path=%s/spool", testPath())); strLstAddZ(argList, "--" CFGOPT_ARCHIVE_ASYNC); strLstAddZ(argList, "--stanza=test2"); strLstAddZ(argList, CFGCMD_ARCHIVE_GET ":" CONFIG_COMMAND_ROLE_ASYNC); strLstAddZ(argList, "000000010000000100000001"); strLstAddZ(argList, "000000010000000100000002"); strLstAddZ(argList, "000000010000000100000003"); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); TEST_ERROR( cmdArchiveGetAsync(), ExecuteError, "local-1 process terminated unexpectedly [102]: unable to execute 'pgbackrest-bogus': [2] No such file or directory"); harnessLogResult( "P00 INFO: get 3 WAL file(s) from archive: 000000010000000100000001...000000010000000100000003"); TEST_RESULT_BOOL( storageExistsP(storageSpool(), strNew(STORAGE_SPOOL_ARCHIVE_IN "/000000010000000100000001.error")), false, "check 000000010000000100000001.error not in spool"); TEST_RESULT_BOOL( storageExistsP(storageSpool(), strNew(STORAGE_SPOOL_ARCHIVE_IN "/000000010000000100000002.error")), false, "check 000000010000000100000002.error not in spool"); TEST_RESULT_BOOL( storageExistsP(storageSpool(), strNew(STORAGE_SPOOL_ARCHIVE_IN "/000000010000000100000003.error")), false, "check 000000010000000100000003.error not in spool"); TEST_RESULT_STR_Z( strNewBuf(storageGetP(storageNewReadP(storageSpool(), strNew(STORAGE_SPOOL_ARCHIVE_IN "/global.error")))), "102\nlocal-1 process terminated unexpectedly [102]: unable to execute 'pgbackrest-bogus': " "[2] No such file or directory", "check global error"); } // ***************************************************************************************************************************** if (testBegin("cmdArchiveGet()")) { TEST_TITLE("command must be run on the pg host"); StringList *argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_PG1_HOST "=host"); strLstAddZ(argList, "--" CFGOPT_PG1_PATH "=/pg"); strLstAddZ(argList, "--" CFGOPT_REPO1_PATH "=/repo"); strLstAddZ(argList, "--" CFGOPT_STANZA "=test2"); strLstAddZ(argList, "000000010000000100000001"); strLstAddZ(argList, "pg_wal/000000010000000100000001"); harnessCfgLoadRole(cfgCmdArchiveGet, cfgCmdRoleDefault, argList); TEST_ERROR(cmdArchiveGet(), HostInvalidError, "archive-get command must be run on the PostgreSQL host"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "pgbackrest-bogus"); // Break this until async tests are setup correctly strLstAddZ(argList, "--archive-timeout=1"); strLstAdd(argList, strNewFmt("--lock-path=%s/lock", testPath())); strLstAdd(argList, strNewFmt("--log-path=%s", testPath())); strLstAdd(argList, strNewFmt("--log-level-file=debug")); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "archive-get"); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, false) { TEST_ERROR(cmdArchiveGet(), ParamRequiredError, "WAL segment to get required"); } HARNESS_FORK_CHILD_END(); } HARNESS_FORK_END(); // ------------------------------------------------------------------------------------------------------------------------- StringList *argListTemp = strLstDup(argList); String *walSegment = strNew("000000010000000100000001"); strLstAdd(argListTemp, walSegment); harnessCfgLoadRaw(strLstSize(argListTemp), strLstPtr(argListTemp)); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, false) { TEST_ERROR(cmdArchiveGet(), ParamRequiredError, "path to copy WAL segment required"); } HARNESS_FORK_CHILD_END(); } HARNESS_FORK_END(); // ------------------------------------------------------------------------------------------------------------------------- storagePutP( storageNewWriteP(storageTest, strNew("db/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL)), pgControlTestToBuffer((PgControl){.version = PG_VERSION_10, .systemId = 0xFACEFACEFACEFACE})); storagePathCreateP(storageTest, strNewFmt("%s/db/pg_wal", testPath())); String *walFile = strNewFmt("%s/db/pg_wal/RECOVERYXLOG", testPath()); strLstAdd(argListTemp, walFile); strLstAdd(argListTemp, strNewFmt("--pg1-path=%s/db", testPath())); harnessCfgLoadRaw(strLstSize(argListTemp), strLstPtr(argListTemp)); // Test this in a fork so we can use different Perl options in later tests HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, false) { TEST_ERROR_FMT( cmdArchiveGet(), FileMissingError, "unable to load info file '%s/archive/test1/archive.info' or '%s/archive/test1/archive.info.copy':\n" "FileMissingError: " STORAGE_ERROR_READ_MISSING "\n" "FileMissingError: " STORAGE_ERROR_READ_MISSING "\n" "HINT: archive.info cannot be opened but is required to push/get WAL segments.\n" "HINT: is archive_command configured correctly in postgresql.conf?\n" "HINT: has a stanza-create been performed?\n" "HINT: use --no-archive-check to disable archive checks during backup if you have an alternate archiving" " scheme.", strPtr(cfgOptionStr(cfgOptRepoPath)), strPtr(cfgOptionStr(cfgOptRepoPath)), strPtr(strNewFmt("%s/archive/test1/archive.info", strPtr(cfgOptionStr(cfgOptRepoPath)))), strPtr(strNewFmt("%s/archive/test1/archive.info.copy", strPtr(cfgOptionStr(cfgOptRepoPath))))); } HARNESS_FORK_CHILD_END(); } HARNESS_FORK_END(); // ------------------------------------------------------------------------------------------------------------------------- argListTemp = strLstDup(argList); strLstAdd(argListTemp, strNewFmt("--pg1-path=%s/db", testPath())); strLstAddZ(argListTemp, "00000001.history"); strLstAdd(argListTemp, walFile); strLstAddZ(argListTemp, "--archive-async"); harnessCfgLoadRaw(strLstSize(argListTemp), strLstPtr(argListTemp)); // Test this in a fork so we can use different Perl options in later tests HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, false) { TEST_ERROR_FMT( cmdArchiveGet(), FileMissingError, "unable to load info file '%s/archive/test1/archive.info' or '%s/archive/test1/archive.info.copy':\n" "FileMissingError: " STORAGE_ERROR_READ_MISSING "\n" "FileMissingError: " STORAGE_ERROR_READ_MISSING "\n" "HINT: archive.info cannot be opened but is required to push/get WAL segments.\n" "HINT: is archive_command configured correctly in postgresql.conf?\n" "HINT: has a stanza-create been performed?\n" "HINT: use --no-archive-check to disable archive checks during backup if you have an alternate archiving" " scheme.", strPtr(cfgOptionStr(cfgOptRepoPath)), strPtr(cfgOptionStr(cfgOptRepoPath)), strPtr(strNewFmt("%s/archive/test1/archive.info", strPtr(cfgOptionStr(cfgOptRepoPath)))), strPtr(strNewFmt("%s/archive/test1/archive.info.copy", strPtr(cfgOptionStr(cfgOptRepoPath))))); } HARNESS_FORK_CHILD_END(); } HARNESS_FORK_END(); // Make sure the process times out when there is nothing to get // ------------------------------------------------------------------------------------------------------------------------- strLstAdd(argList, strNewFmt("--spool-path=%s/spool", testPath())); strLstAddZ(argList, "--archive-async"); strLstAdd(argList, walSegment); strLstAddZ(argList, "pg_wal/RECOVERYXLOG"); strLstAdd(argList, strNewFmt("--pg1-path=%s/db", testPath())); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); THROW_ON_SYS_ERROR(chdir(strPtr(cfgOptionStr(cfgOptPgPath))) != 0, PathMissingError, "unable to chdir()"); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, false) { TEST_RESULT_INT(cmdArchiveGet(), 1, "timeout getting WAL segment"); } HARNESS_FORK_CHILD_END(); } HARNESS_FORK_END(); harnessLogResult("P00 INFO: unable to find 000000010000000100000001 in the archive"); // Check for missing WAL // ------------------------------------------------------------------------------------------------------------------------- storagePutP( storageNewWriteP(storageSpoolWrite(), strNewFmt(STORAGE_SPOOL_ARCHIVE_IN "/%s.ok", strPtr(walSegment))), NULL); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, false) { TEST_RESULT_INT(cmdArchiveGet(), 1, "successful get of missing WAL"); } HARNESS_FORK_CHILD_END(); } HARNESS_FORK_END(); harnessLogResult("P00 INFO: unable to find 000000010000000100000001 in the archive"); TEST_RESULT_BOOL( storageExistsP(storageSpool(), strNewFmt(STORAGE_SPOOL_ARCHIVE_IN "/%s.ok", strPtr(walSegment))), false, "check OK file was removed"); // Write out a WAL segment for success // ------------------------------------------------------------------------------------------------------------------------- storagePutP( storageNewWriteP(storageSpoolWrite(), strNewFmt(STORAGE_SPOOL_ARCHIVE_IN "/%s", strPtr(walSegment))), BUFSTRDEF("SHOULD-BE-A-REAL-WAL-FILE")); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, false) { TEST_RESULT_INT(cmdArchiveGet(), 0, "successful get"); } HARNESS_FORK_CHILD_END(); } HARNESS_FORK_END(); TEST_RESULT_VOID(harnessLogResult("P00 INFO: found 000000010000000100000001 in the archive"), "check log"); TEST_RESULT_BOOL( storageExistsP(storageSpoolWrite(), strNewFmt(STORAGE_SPOOL_ARCHIVE_IN "/%s", strPtr(walSegment))), false, "check WAL segment was removed from source"); TEST_RESULT_BOOL(storageExistsP(storageTest, walFile), true, "check WAL segment was moved to destination"); storageRemoveP(storageTest, walFile, .errorOnMissing = true); // Write more WAL segments (in this case queue should be full) // ------------------------------------------------------------------------------------------------------------------------- strLstAddZ(argList, "--archive-get-queue-max=48"); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); String *walSegment2 = strNew("000000010000000100000002"); storagePutP( storageNewWriteP(storageSpoolWrite(), strNewFmt(STORAGE_SPOOL_ARCHIVE_IN "/%s", strPtr(walSegment))), BUFSTRDEF("SHOULD-BE-A-REAL-WAL-FILE")); storagePutP( storageNewWriteP(storageSpoolWrite(), strNewFmt(STORAGE_SPOOL_ARCHIVE_IN "/%s", strPtr(walSegment2))), BUFSTRDEF("SHOULD-BE-A-REAL-WAL-FILE")); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, false) { TEST_RESULT_INT(cmdArchiveGet(), 0, "successful get"); } HARNESS_FORK_CHILD_END(); } HARNESS_FORK_END(); TEST_RESULT_VOID(harnessLogResult("P00 INFO: found 000000010000000100000001 in the archive"), "check log"); TEST_RESULT_BOOL(storageExistsP(storageTest, walFile), true, "check WAL segment was moved"); // Make sure the process times out when it can't get a lock // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID( lockAcquire(cfgOptionStr(cfgOptLockPath), cfgOptionStr(cfgOptStanza), cfgLockType(), 30000, true), "acquire lock"); TEST_RESULT_VOID(lockClear(true), "clear lock"); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, false) { TEST_RESULT_INT(cmdArchiveGet(), 1, "timeout waiting for lock"); } HARNESS_FORK_CHILD_END(); } HARNESS_FORK_END(); harnessLogResult("P00 INFO: unable to find 000000010000000100000001 in the archive"); // ------------------------------------------------------------------------------------------------------------------------- strLstAddZ(argList, BOGUS_STR); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); TEST_ERROR(cmdArchiveGet(), ParamInvalidError, "extra parameters found"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/command/archivePushTest.c000066400000000000000000001115431362531507100251520ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Archive Push Command ***********************************************************************************************************************************/ #include "common/io/bufferRead.h" #include "common/io/bufferWrite.h" #include "common/io/handleRead.h" #include "common/io/handleWrite.h" #include "common/time.h" #include "postgres/version.h" #include "storage/posix/storage.h" #include "common/harnessConfig.h" #include "common/harnessFork.h" #include "common/harnessInfo.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // Create default storage object for testing Storage *storageTest = storagePosixNew( strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); // Start a protocol server to test the protocol directly Buffer *serverWrite = bufNew(8192); IoWrite *serverWriteIo = ioBufferWriteNew(serverWrite); ioWriteOpen(serverWriteIo); ProtocolServer *server = protocolServerNew( strNew("test"), strNew("test"), ioBufferReadNew(bufNew(0)), serverWriteIo); bufUsedSet(serverWrite, 0); // ***************************************************************************************************************************** if (testBegin("archivePushReadyList(), archivePushProcessList(), and archivePushDrop()")) { StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=db"); strLstAdd(argList, strNewFmt("--pg1-path=%s/db", testPath())); strLstAdd(argList, strNewFmt("--spool-path=%s/spool", testPath())); strLstAddZ(argList, "--" CFGOPT_ARCHIVE_ASYNC); harnessCfgLoadRole(cfgCmdArchivePush, cfgCmdRoleAsync, argList); storagePathCreateP(storagePgWrite(), strNew("pg_wal/archive_status")); storagePathCreateP(storageTest, strNew("spool/archive/db/out")); // Create ok files to indicate WAL that has already been archived storagePutP( storageNewWriteP(storageSpoolWrite(), strNew(STORAGE_SPOOL_ARCHIVE_OUT "/000000010000000100000001.ok")), NULL); storagePutP( storageNewWriteP(storageSpoolWrite(), strNew(STORAGE_SPOOL_ARCHIVE_OUT "/000000010000000100000003.ok")), NULL); storagePutP( storageNewWriteP(storageSpoolWrite(), strNew(STORAGE_SPOOL_ARCHIVE_OUT "/000000010000000100000004.ok")), NULL); storagePutP( storageNewWriteP(storageSpoolWrite(), strNew(STORAGE_SPOOL_ARCHIVE_OUT "/000000010000000100000005.error")), NULL); storagePutP( storageNewWriteP(storageSpoolWrite(), strNew(STORAGE_SPOOL_ARCHIVE_OUT "/000000010000000100000006.error")), NULL); storagePutP( storageNewWriteP(storageSpoolWrite(), strNew(STORAGE_SPOOL_ARCHIVE_OUT "/global.error")), NULL); // Create ready files for wal that still needs to be archived storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_wal/archive_status/000000010000000100000002.ready")), NULL); storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_wal/archive_status/000000010000000100000003.ready")), NULL); storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_wal/archive_status/000000010000000100000005.ready")), NULL); storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_wal/archive_status/000000010000000100000006.ready")), NULL); TEST_RESULT_STR_Z( strLstJoin(archivePushProcessList(strNewFmt("%s/db/pg_wal", testPath())), "|"), "000000010000000100000002|000000010000000100000005|000000010000000100000006", "ready list"); TEST_RESULT_STR_Z( strLstJoin(strLstSort(storageListP(storageSpool(), strNew(STORAGE_SPOOL_ARCHIVE_OUT)), sortOrderAsc), "|"), "000000010000000100000003.ok", "remaining status list"); // Test drop // ------------------------------------------------------------------------------------------------------------------------- StringList *argListDrop = strLstDup(argList); strLstAdd(argListDrop, strNewFmt("--archive-push-queue-max=%zu", (size_t)1024 * 1024 * 1024)); harnessCfgLoadRole(cfgCmdArchivePush, cfgCmdRoleAsync, argListDrop); // Write the files that we claim are in pg_wal Buffer *walBuffer = bufNew((size_t)16 * 1024 * 1024); bufUsedSet(walBuffer, bufSize(walBuffer)); memset(bufPtr(walBuffer), 0, bufSize(walBuffer)); pgWalTestToBuffer((PgWal){.version = PG_VERSION_10, .systemId = 0xFACEFACEFACEFACE}, walBuffer); storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_wal/000000010000000100000002")), walBuffer); storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_wal/000000010000000100000003")), walBuffer); storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_wal/000000010000000100000005")), walBuffer); storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_wal/000000010000000100000006")), walBuffer); // Queue max is high enough that no WAL will be dropped TEST_RESULT_BOOL( archivePushDrop(strNew("pg_wal"), archivePushProcessList(strNewFmt("%s/db/pg_wal", testPath()))), false, "wal is not dropped"); // Now set queue max low enough that WAL will be dropped argListDrop = strLstDup(argList); strLstAdd(argListDrop, strNewFmt("--archive-push-queue-max=%zu", (size_t)16 * 1024 * 1024 * 2)); harnessCfgLoadRole(cfgCmdArchivePush, cfgCmdRoleAsync, argListDrop); TEST_RESULT_BOOL( archivePushDrop(strNew("pg_wal"), archivePushProcessList(strNewFmt("%s/db/pg_wal", testPath()))), true, "wal is dropped"); } // ***************************************************************************************************************************** if (testBegin("archivePushCheck()")) { StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test"); strLstAdd(argList, strNewFmt("--pg1-path=%s/pg", testPath())); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); harnessCfgLoad(cfgCmdArchivePush, argList); // Check mismatched pg_control and archive.info // ------------------------------------------------------------------------------------------------------------------------- storagePutP( storageNewWriteP(storageTest, strNew("pg/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL)), pgControlTestToBuffer((PgControl){.version = PG_VERSION_96, .systemId = 0xFACEFACEFACEFACE})); // Create incorrect archive info storagePutP( storageNewWriteP(storageTest, strNew("repo/archive/test/archive.info")), harnessInfoChecksumZ( "[db]\n" "db-id=1\n" "\n" "[db:history]\n" "1={\"db-id\":5555555555555555555,\"db-version\":\"9.4\"}\n")); TEST_ERROR( archivePushCheck(cipherTypeNone, NULL), ArchiveMismatchError, "PostgreSQL version 9.6, system-id 18072658121562454734 do not match stanza version 9.4, system-id 5555555555555555555" "\nHINT: are you archiving to the correct stanza?"); // Fix the version storagePutP( storageNewWriteP(storageTest, strNew("repo/archive/test/archive.info")), harnessInfoChecksumZ( "[db]\n" "db-id=1\n" "\n" "[db:history]\n" "1={\"db-id\":5555555555555555555,\"db-version\":\"9.6\"}\n")); TEST_ERROR( archivePushCheck(cipherTypeNone, NULL), ArchiveMismatchError, "PostgreSQL version 9.6, system-id 18072658121562454734 do not match stanza version 9.6, system-id 5555555555555555555" "\nHINT: are you archiving to the correct stanza?"); // Fix archive info storagePutP( storageNewWriteP(storageTest, strNew("repo/archive/test/archive.info")), harnessInfoChecksumZ( "[db]\n" "db-id=1\n" "\n" "[db:history]\n" "1={\"db-id\":18072658121562454734,\"db-version\":\"9.6\"}\n")); ArchivePushCheckResult result = {0}; TEST_ASSIGN(result, archivePushCheck(cipherTypeNone, NULL), "get archive check result"); TEST_RESULT_UINT(result.pgVersion, PG_VERSION_96, "check pg version"); TEST_RESULT_UINT(result.pgSystemId, 0xFACEFACEFACEFACE, "check pg system id"); TEST_RESULT_UINT(result.pgWalSegmentSize, 16 * 1024 * 1024, "check wal segment size"); TEST_RESULT_STR_Z(result.archiveId, "9.6-1", "check archive id"); TEST_RESULT_STR_Z(result.archiveCipherPass, NULL, "check archive cipher pass (not set in this test)"); } // ***************************************************************************************************************************** if (testBegin("Synchronous cmdArchivePush(), archivePushFile() and archivePushProtocol()")) { TEST_TITLE("command must be run on the pg host"); StringList *argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_PG1_HOST "=host"); strLstAddZ(argList, "--" CFGOPT_PG1_PATH "=/pg"); strLstAddZ(argList, "--" CFGOPT_STANZA "=test2"); harnessCfgLoadRole(cfgCmdArchivePush, cfgCmdRoleDefault, argList); TEST_ERROR(cmdArchivePush(), HostInvalidError, "archive-push command must be run on the PostgreSQL host"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "--stanza=test"); harnessCfgLoad(cfgCmdArchivePush, argList); TEST_ERROR(cmdArchivePush(), ParamRequiredError, "WAL segment to push required"); // ------------------------------------------------------------------------------------------------------------------------- StringList *argListTemp = strLstDup(argList); strLstAddZ(argListTemp, "pg_wal/000000010000000100000001"); harnessCfgLoad(cfgCmdArchivePush, argListTemp); TEST_ERROR( cmdArchivePush(), OptionRequiredError, "option 'pg1-path' must be specified when relative wal paths are used" "\nHINT: is %f passed to archive-push instead of %p?" "\nHINT: PostgreSQL may pass relative paths even with %p depending on the environment."); // Create pg_control and archive.info // ------------------------------------------------------------------------------------------------------------------------- strLstAdd(argList, strNewFmt("--pg1-path=%s/pg", testPath())); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); argListTemp = strLstDup(argList); strLstAddZ(argListTemp, "pg_wal/000000010000000100000001"); harnessCfgLoad(cfgCmdArchivePush, argListTemp); storagePutP( storageNewWriteP(storageTest, strNew("pg/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL)), pgControlTestToBuffer((PgControl){.version = PG_VERSION_11, .systemId = 0xFACEFACEFACEFACE})); storagePutP( storageNewWriteP(storageTest, strNew("repo/archive/test/archive.info")), harnessInfoChecksumZ( "[db]\n" "db-id=1\n" "\n" "[db:history]\n" "1={\"db-id\":18072658121562454734,\"db-version\":\"11\"}\n")); // Generate WAL with incorrect headers and try to push them // ------------------------------------------------------------------------------------------------------------------------- Buffer *walBuffer1 = bufNew((size_t)16 * 1024 * 1024); bufUsedSet(walBuffer1, bufSize(walBuffer1)); memset(bufPtr(walBuffer1), 0, bufSize(walBuffer1)); pgWalTestToBuffer((PgWal){.version = PG_VERSION_10, .systemId = 0xFACEFACEFACEFACE}, walBuffer1); storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_wal/000000010000000100000001")), walBuffer1); THROW_ON_SYS_ERROR(chdir(strPtr(cfgOptionStr(cfgOptPgPath))) != 0, PathMissingError, "unable to chdir()"); TEST_ERROR( cmdArchivePush(), ArchiveMismatchError, strPtr( strNewFmt( "WAL file '%s/pg/pg_wal/000000010000000100000001' version 10, system-id 18072658121562454734 do not match" " stanza version 11, system-id 18072658121562454734", testPath()))); memset(bufPtr(walBuffer1), 0, bufSize(walBuffer1)); pgWalTestToBuffer((PgWal){.version = PG_VERSION_11, .systemId = 0xECAFECAFECAFECAF}, walBuffer1); storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_wal/000000010000000100000001")), walBuffer1); TEST_ERROR( cmdArchivePush(), ArchiveMismatchError, strPtr( strNewFmt( "WAL file '%s/pg/pg_wal/000000010000000100000001' version 11, system-id 17055110554209741999 do not match" " stanza version 11, system-id 18072658121562454734", testPath()))); // Generate valid WAL and push them // ------------------------------------------------------------------------------------------------------------------------- memset(bufPtr(walBuffer1), 0, bufSize(walBuffer1)); pgWalTestToBuffer((PgWal){.version = PG_VERSION_11, .systemId = 0xFACEFACEFACEFACE}, walBuffer1); storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_wal/000000010000000100000001")), walBuffer1); TEST_RESULT_VOID(cmdArchivePush(), "push the WAL segment"); harnessLogResult("P00 INFO: pushed WAL file '000000010000000100000001' to the archive"); TEST_RESULT_BOOL( storageExistsP( storageTest, strNewFmt( "repo/archive/test/11-1/0000000100000001/000000010000000100000001-%s.gz", TEST_64BIT() ? "3e5ecd22712f319b2420d5b901fd29f4f6be2336" : "6903dce7e3cd64ba9a6134056405eaeb8dedcd37")), true, "check repo for WAL file"); TEST_RESULT_VOID(cmdArchivePush(), "push the WAL segment again"); harnessLogResult( "P00 WARN: WAL file '000000010000000100000001' already exists in the archive with the same checksum\n" " HINT: this is valid in some recovery scenarios but may also indicate a problem.\n" "P00 INFO: pushed WAL file '000000010000000100000001' to the archive"); // Now create a new WAL buffer with a different checksum to test checksum errors Buffer *walBuffer2 = bufNew((size_t)16 * 1024 * 1024); bufUsedSet(walBuffer2, bufSize(walBuffer2)); memset(bufPtr(walBuffer2), 0xFF, bufSize(walBuffer2)); pgWalTestToBuffer((PgWal){.version = PG_VERSION_11, .systemId = 0xFACEFACEFACEFACE}, walBuffer2); storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_wal/000000010000000100000001")), walBuffer2); TEST_ERROR(cmdArchivePush(), ArchiveDuplicateError, "WAL file '000000010000000100000001' already exists in the archive"); // Save it to a new file instead argListTemp = strLstDup(argList); strLstAddZ(argListTemp, "pg_wal/000000010000000100000002"); harnessCfgLoad(cfgCmdArchivePush, argListTemp); storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_wal/000000010000000100000002")), walBuffer2); TEST_RESULT_VOID(cmdArchivePush(), "push the WAL segment"); harnessLogResult("P00 INFO: pushed WAL file '000000010000000100000002' to the archive"); TEST_RESULT_BOOL( storageExistsP( storageTest, strNewFmt( "repo/archive/test/11-1/0000000100000001/000000010000000100000002-%s.gz", TEST_64BIT() ? "edad2f5a9d8a03ee3c09e8ce92c771e0d20232f5" : "e7c81f5513e0c6e3f19b9dbfc450019165994dda")), true, "check repo for WAL file"); // Push a history file // ------------------------------------------------------------------------------------------------------------------------- argListTemp = strLstDup(argList); strLstAddZ(argListTemp, "pg_wal/00000001.history"); harnessCfgLoad(cfgCmdArchivePush, argListTemp); storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_wal/00000001.history")), BUFSTRDEF("FAKEHISTORY")); TEST_RESULT_VOID(cmdArchivePush(), "push a history file"); harnessLogResult("P00 INFO: pushed WAL file '00000001.history' to the archive"); TEST_RESULT_BOOL( storageExistsP(storageTest, strNew("repo/archive/test/11-1/00000001.history")), true, "check repo for history file"); // Check drop functionality // ------------------------------------------------------------------------------------------------------------------------- storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_wal/archive_status/000000010000000100000001.ready")), NULL); storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_wal/archive_status/000000010000000100000002.ready")), NULL); argListTemp = strLstDup(argList); strLstAddZ(argListTemp, "--archive-push-queue-max=16m"); strLstAddZ(argListTemp, "pg_wal/000000010000000100000002"); harnessCfgLoad(cfgCmdArchivePush, argListTemp); TEST_RESULT_VOID(cmdArchivePush(), "drop WAL file"); harnessLogResult("P00 WARN: dropped WAL file '000000010000000100000002' because archive queue exceeded 16MB"); argListTemp = strLstDup(argList); strLstAddZ(argListTemp, "--archive-push-queue-max=1GB"); strLstAddZ(argListTemp, "pg_wal/000000010000000100000002"); harnessCfgLoad(cfgCmdArchivePush, argListTemp); TEST_RESULT_VOID(cmdArchivePush(), "push WAL file again"); harnessLogResult( "P00 WARN: WAL file '000000010000000100000002' already exists in the archive with the same checksum\n" " HINT: this is valid in some recovery scenarios but may also indicate a problem.\n" "P00 INFO: pushed WAL file '000000010000000100000002' to the archive"); // Check protocol function directly // ------------------------------------------------------------------------------------------------------------------------- VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewStr(strNewFmt("%s/pg/pg_wal/000000010000000100000002", testPath()))); varLstAdd(paramList, varNewStrZ("11-1")); varLstAdd(paramList, varNewUInt64(PG_VERSION_11)); varLstAdd(paramList, varNewUInt64(0xFACEFACEFACEFACE)); varLstAdd(paramList, varNewStrZ("000000010000000100000002")); varLstAdd(paramList, varNewUInt64(cipherTypeNone)); varLstAdd(paramList, NULL); varLstAdd(paramList, varNewBool(false)); varLstAdd(paramList, varNewInt(6)); TEST_RESULT_BOOL( archivePushProtocol(PROTOCOL_COMMAND_ARCHIVE_PUSH_STR, paramList, server), true, "protocol archive put"); TEST_RESULT_STR_Z( strNewBuf(serverWrite), "{\"out\":\"WAL file '000000010000000100000002' already exists in the archive with the same checksum" "\\nHINT: this is valid in some recovery scenarios but may also indicate a problem.\"}\n", "check result"); bufUsedSet(serverWrite, 0); // Check invalid protocol function // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(archivePushProtocol(strNew(BOGUS_STR), paramList, server), false, "invalid function"); // Create a new encrypted repo to test encryption // ------------------------------------------------------------------------------------------------------------------------- storagePathRemoveP(storageTest, strNew("repo"), .errorOnMissing = true, .recurse = true); StorageWrite *infoWrite = storageNewWriteP(storageTest, strNew("repo/archive/test/archive.info")); ioFilterGroupAdd( ioWriteFilterGroup(storageWriteIo(infoWrite)), cipherBlockNew(cipherModeEncrypt, cipherTypeAes256Cbc, BUFSTRDEF("badpassphrase"), NULL)); storagePutP( infoWrite, harnessInfoChecksumZ( "[cipher]\n" "cipher-pass=\"badsubpassphrase\"\n" "\n" "[db]\n" "db-id=1\n" "\n" "[db:history]\n" "1={\"db-id\":18072658121562454734,\"db-version\":\"11\"}")); // Push encrypted WAL segment argListTemp = strLstDup(argList); strLstAddZ(argListTemp, "pg_wal/000000010000000100000002"); strLstAddZ(argListTemp, "--repo1-cipher-type=aes-256-cbc"); strLstAddZ(argListTemp, "--no-compress"); setenv("PGBACKREST_REPO1_CIPHER_PASS", "badpassphrase", true); harnessCfgLoad(cfgCmdArchivePush, argListTemp); unsetenv("PGBACKREST_REPO1_CIPHER_PASS"); TEST_RESULT_VOID(cmdArchivePush(), "push the WAL segment"); harnessLogResult("P00 INFO: pushed WAL file '000000010000000100000002' to the archive"); TEST_RESULT_BOOL( storageExistsP( storageTest, strNewFmt( "repo/archive/test/11-1/0000000100000001/000000010000000100000002-%s", TEST_64BIT() ? "edad2f5a9d8a03ee3c09e8ce92c771e0d20232f5" : "e7c81f5513e0c6e3f19b9dbfc450019165994dda")), true, "check repo for WAL file"); } // ***************************************************************************************************************************** if (testBegin("Asynchronous cmdArchivePush() and cmdArchivePushAsync()")) { harnessLogLevelSet(logLevelDetail); TEST_TITLE("command must be run on the pg host"); StringList *argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_PG1_HOST "=host"); strLstAddZ(argList, "--" CFGOPT_PG1_PATH "=/pg"); strLstAddZ(argList, "--" CFGOPT_SPOOL_PATH "=/spool"); strLstAddZ(argList, "--" CFGOPT_STANZA "=test2"); strLstAddZ(argList, "--" CFGOPT_ARCHIVE_ASYNC); harnessCfgLoadRole(cfgCmdArchivePush, cfgCmdRoleAsync, argList); TEST_ERROR(cmdArchivePush(), HostInvalidError, "archive-push command must be run on the PostgreSQL host"); // Call with a bogus exe name so the async process will error out and we can make sure timeouts work // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "pgbackrest-bogus"); strLstAddZ(argList, "--stanza=test"); strLstAddZ(argList, "--archive-async"); strLstAddZ(argList, "--archive-timeout=1"); strLstAdd(argList, strNewFmt("--lock-path=%s/lock", testPath())); strLstAdd(argList, strNewFmt("--spool-path=%s/spool", testPath())); strLstAdd(argList, strNewFmt("--pg1-path=%s/pg", testPath())); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAddZ(argList, "archive-push"); strLstAddZ(argList, "pg_wal/bogus"); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); storagePathCreateP(storageTest, cfgOptionStr(cfgOptPgPath)); THROW_ON_SYS_ERROR(chdir(strPtr(cfgOptionStr(cfgOptPgPath))) != 0, PathMissingError, "unable to chdir()"); TEST_ERROR( cmdArchivePush(), ArchiveTimeoutError, "unable to push WAL file 'bogus' to the archive asynchronously after 1 second(s)"); // Create pg_control and archive.info // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "--stanza=test"); strLstAddZ(argList, "--archive-async"); strLstAddZ(argList, "--no-compress"); strLstAdd(argList, strNewFmt("--spool-path=%s/spool", testPath())); strLstAdd(argList, strNewFmt("--pg1-path=%s/pg", testPath())); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAddZ(argList, "--log-subprocess"); storagePutP( storageNewWriteP(storageTest, strNew("pg/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL)), pgControlTestToBuffer((PgControl){.version = PG_VERSION_94, .systemId = 0xAAAABBBBCCCCDDDD})); storagePutP( storageNewWriteP(storageTest, strNew("repo/archive/test/archive.info")), harnessInfoChecksumZ( "[db]\n" "db-id=1\n" "\n" "[db:history]\n" "1={\"db-id\":12297848147757817309,\"db-version\":\"9.4\"}\n")); // Write out an error file that will be ignored on the first pass, then the async process will write a new one // ------------------------------------------------------------------------------------------------------------------------- StringList *argListTemp = strLstDup(argList); strLstAdd(argListTemp, strNewFmt("%s/pg/pg_xlog/000000010000000100000001", testPath())); harnessCfgLoad(cfgCmdArchivePush, argListTemp); storagePathCreateP(storagePgWrite(), strNew("pg_xlog/archive_status")); storagePutP( storageNewWriteP(storageSpoolWrite(), strNew(STORAGE_SPOOL_ARCHIVE_OUT "/000000010000000100000001.error")), BUFSTRDEF("25\nbogus error")); TEST_ERROR(cmdArchivePush(), AssertError, "no WAL files to process"); storageRemoveP(storageSpoolWrite(), strNew(STORAGE_SPOOL_ARCHIVE_OUT "/global.error"), .errorOnMissing = true); // Acquire a lock so the async process will not be able to run -- this will result in a timeout // ------------------------------------------------------------------------------------------------------------------------- argListTemp = strLstDup(argList); strLstAdd(argListTemp, strNewFmt("%s/pg/pg_xlog/000000010000000100000001", testPath())); strLstAddZ(argListTemp, "--archive-timeout=1"); harnessCfgLoad(cfgCmdArchivePush, argListTemp); THROW_ON_SYS_ERROR(chdir(strPtr(cfgOptionStr(cfgOptPgPath))) != 0, PathMissingError, "unable to chdir()"); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, true) { IoRead *read = ioHandleReadNew(strNew("child read"), HARNESS_FORK_CHILD_READ(), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("child write"), HARNESS_FORK_CHILD_WRITE()); ioWriteOpen(write); lockAcquire(cfgOptionStr(cfgOptLockPath), cfgOptionStr(cfgOptStanza), cfgLockType(), 30000, true); // Let the parent know the lock has been acquired and wait for the parent to allow lock release ioWriteStrLine(write, strNew("")); ioWriteFlush(write); ioReadLine(read); lockRelease(true); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { IoRead *read = ioHandleReadNew(strNew("parent read"), HARNESS_FORK_PARENT_READ_PROCESS(0), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("parent write"), HARNESS_FORK_PARENT_WRITE_PROCESS(0)); ioWriteOpen(write); // Wait for the child to acquire the lock ioReadLine(read); TEST_ERROR( cmdArchivePush(), ArchiveTimeoutError, "unable to push WAL file '000000010000000100000001' to the archive asynchronously after 1 second(s)"); // Notify the child to release the lock ioWriteLine(write, bufNew(0)); ioWriteFlush(write); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); // Actually push a WAL file // ------------------------------------------------------------------------------------------------------------------------- argListTemp = strLstDup(argList); strLstAdd(argListTemp, strNewFmt("%s/pg/pg_xlog/000000010000000100000001", testPath())); harnessCfgLoad(cfgCmdArchivePush, argListTemp); storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_xlog/archive_status/000000010000000100000001.ready")), NULL); Buffer *walBuffer1 = bufNew((size_t)16 * 1024 * 1024); bufUsedSet(walBuffer1, bufSize(walBuffer1)); memset(bufPtr(walBuffer1), 0xFF, bufSize(walBuffer1)); pgWalTestToBuffer((PgWal){.version = PG_VERSION_94, .systemId = 0xAAAABBBBCCCCDDDD}, walBuffer1); storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_xlog/000000010000000100000001")), walBuffer1); TEST_RESULT_VOID(cmdArchivePush(), "push the WAL segment"); harnessLogResult("P00 INFO: pushed WAL file '000000010000000100000001' to the archive asynchronously"); TEST_RESULT_BOOL( storageExistsP( storageTest, strNewFmt( "repo/archive/test/9.4-1/0000000100000001/000000010000000100000001-%s", TEST_64BIT() ? "f81d63dd5e258cd607534f3531bbd71442797e37" : "02d228126281e8e102b35a2737e45a0527946296")), true, "check repo for WAL file"); // Direct tests of the async function // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "--stanza=test"); strLstAddZ(argList, "--no-compress"); strLstAdd(argList, strNewFmt("--spool-path=%s/spool", testPath())); strLstAddZ(argList, "--" CFGOPT_ARCHIVE_ASYNC); strLstAdd(argList, strNewFmt("--pg1-path=%s/pg", testPath())); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAddZ(argList, "--log-subprocess"); harnessCfgLoadRole(cfgCmdArchivePush, cfgCmdRoleAsync, argList); TEST_ERROR(cmdArchivePushAsync(), ParamRequiredError, "WAL path to push required"); // Check that global.error is created // ------------------------------------------------------------------------------------------------------------------------- // Remove data from prior tests storagePathRemoveP(storageSpoolWrite(), STORAGE_SPOOL_ARCHIVE_OUT_STR, .recurse = true); storagePathCreateP(storageSpoolWrite(), STORAGE_SPOOL_ARCHIVE_OUT_STR); storagePathRemoveP(storageRepoWrite(), strNew(STORAGE_REPO_ARCHIVE "/9.4-1"), .recurse = true); storagePathCreateP(storageRepoWrite(), strNew(STORAGE_REPO_ARCHIVE "/9.4-1")); storagePathRemoveP(storagePgWrite(), strNew("pg_xlog/archive_status"), .recurse = true); storagePathCreateP(storagePgWrite(), strNew("pg_xlog/archive_status")); strLstAdd(argList, strNewFmt("%s/pg/pg_xlog", testPath())); harnessCfgLoadRole(cfgCmdArchivePush, cfgCmdRoleAsync, argList); TEST_ERROR(cmdArchivePushAsync(), AssertError, "no WAL files to process"); TEST_RESULT_STR_Z( strNewBuf(storageGetP(storageNewReadP(storageSpool(), strNew(STORAGE_SPOOL_ARCHIVE_OUT "/global.error")))), "25\nno WAL files to process", "check global.error"); TEST_RESULT_STR_Z( strLstJoin(strLstSort(storageListP(storageSpool(), strNew(STORAGE_SPOOL_ARCHIVE_OUT)), sortOrderAsc), "|"), "global.error", "check status files"); // Push WAL // ------------------------------------------------------------------------------------------------------------------------- // Recreate ready file for WAL 1 storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_xlog/archive_status/000000010000000100000001.ready")), NULL); // Create a ready file for WAL 2 but don't create the segment yet -- this will test the file error storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_xlog/archive_status/000000010000000100000002.ready")), NULL); TEST_RESULT_VOID(cmdArchivePushAsync(), "push WAL segments"); harnessLogResult( strPtr( strNewFmt( "P00 INFO: push 2 WAL file(s) to archive: 000000010000000100000001...000000010000000100000002\n" "P01 DETAIL: pushed WAL file '000000010000000100000001' to the archive\n" "P01 WARN: could not push WAL file '000000010000000100000002' to the archive (will be retried): " "[55] raised from local-1 protocol: " STORAGE_ERROR_READ_MISSING, strPtr(strNewFmt("%s/pg/pg_xlog/000000010000000100000002", testPath()))))); TEST_RESULT_BOOL( storageExistsP( storageTest, strNewFmt( "repo/archive/test/9.4-1/0000000100000001/000000010000000100000001-%s", TEST_64BIT() ? "f81d63dd5e258cd607534f3531bbd71442797e37" : "02d228126281e8e102b35a2737e45a0527946296")), true, "check repo for WAL 1 file"); TEST_RESULT_STR_Z( strLstJoin(strLstSort(storageListP(storageSpool(), strNew(STORAGE_SPOOL_ARCHIVE_OUT)), sortOrderAsc), "|"), "000000010000000100000001.ok|000000010000000100000002.error", "check status files"); // Create WAL 2 segment Buffer *walBuffer2 = bufNew((size_t)16 * 1024 * 1024); bufUsedSet(walBuffer2, bufSize(walBuffer2)); memset(bufPtr(walBuffer2), 0x0C, bufSize(walBuffer2)); pgWalTestToBuffer((PgWal){.version = PG_VERSION_94, .systemId = 0xAAAABBBBCCCCDDDD}, walBuffer2); storagePutP(storageNewWriteP(storagePgWrite(), strNew("pg_xlog/000000010000000100000002")), walBuffer2); argListTemp = strLstDup(argList); strLstAddZ(argListTemp, "--archive-push-queue-max=1gb"); harnessCfgLoadRole(cfgCmdArchivePush, cfgCmdRoleAsync, argListTemp); TEST_RESULT_VOID(cmdArchivePushAsync(), "push WAL segments"); harnessLogResult( "P00 INFO: push 1 WAL file(s) to archive: 000000010000000100000002\n" "P01 DETAIL: pushed WAL file '000000010000000100000002' to the archive"); TEST_RESULT_BOOL( storageExistsP( storageTest, strNewFmt( "repo/archive/test/9.4-1/0000000100000001/000000010000000100000002-%s", TEST_64BIT() ? "0aea6fa5d53500ce548b84a86bc3a29ae77fa048" : "408822a89ef44ef6740e785743bf1b870d8024a2")), true, "check repo for WAL 2 file"); TEST_RESULT_STR_Z( strLstJoin(strLstSort(storageListP(storageSpool(), strNew(STORAGE_SPOOL_ARCHIVE_OUT)), sortOrderAsc), "|"), "000000010000000100000001.ok|000000010000000100000002.ok", "check status files"); // Check that drop functionality works // ------------------------------------------------------------------------------------------------------------------------- // Remove status files storagePathRemoveP(storageSpoolWrite(), STORAGE_SPOOL_ARCHIVE_OUT_STR, .recurse = true); storagePathCreateP(storageSpoolWrite(), STORAGE_SPOOL_ARCHIVE_OUT_STR); argListTemp = strLstDup(argList); strLstAddZ(argListTemp, "--archive-push-queue-max=16m"); harnessCfgLoadRole(cfgCmdArchivePush, cfgCmdRoleAsync, argListTemp); TEST_RESULT_VOID(cmdArchivePushAsync(), "push WAL segments"); harnessLogResult( "P00 INFO: push 2 WAL file(s) to archive: 000000010000000100000001...000000010000000100000002\n" "P00 WARN: dropped WAL file '000000010000000100000001' because archive queue exceeded 16MB\n" "P00 WARN: dropped WAL file '000000010000000100000002' because archive queue exceeded 16MB"); TEST_RESULT_STR_Z( strNewBuf( storageGetP(storageNewReadP(storageSpool(), strNew(STORAGE_SPOOL_ARCHIVE_OUT "/000000010000000100000001.ok")))), "0\ndropped WAL file '000000010000000100000001' because archive queue exceeded 16MB", "check WAL 1 warning"); TEST_RESULT_STR_Z( strNewBuf( storageGetP(storageNewReadP(storageSpool(), strNew(STORAGE_SPOOL_ARCHIVE_OUT "/000000010000000100000002.ok")))), "0\ndropped WAL file '000000010000000100000002' because archive queue exceeded 16MB", "check WAL 2 warning"); TEST_RESULT_STR_Z( strLstJoin(strLstSort(storageListP(storageSpool(), strNew(STORAGE_SPOOL_ARCHIVE_OUT)), sortOrderAsc), "|"), "000000010000000100000001.ok|000000010000000100000002.ok", "check status files"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/command/backupCommonTest.c000066400000000000000000000366451362531507100253200ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Common Functions and Definitions for Backup and Expire Commands ***********************************************************************************************************************************/ #include "common/io/bufferWrite.h" #include "common/regExp.h" #include "common/type/json.h" #include "postgres/interface.h" #include "storage/posix/storage.h" /*********************************************************************************************************************************** Need these structures to mock up test data ***********************************************************************************************************************************/ typedef struct { uint32_t walid; // high bits uint32_t xrecoff; // low bits } PageWalRecPtr; typedef struct PageHeaderData { // LSN is member of *any* block, not only page-organized ones PageWalRecPtr pd_lsn; // Lsn for last change to this page uint16_t pd_checksum; // checksum uint16_t pd_flags; // flag bits, see below uint16_t pd_lower; // offset to start of free space uint16_t pd_upper; // offset to end of free space } PageHeaderData; /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("backupRegExp()")) { String *full = strNew("20181119-152138F"); String *incr = strNew("20181119-152138F_20181119-152152I"); String *diff = strNew("20181119-152138F_20181119-152152D"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR( backupRegExpP(0), AssertError, "assertion 'param.full || param.differential || param.incremental' failed"); // ------------------------------------------------------------------------------------------------------------------------- String *filter = backupRegExpP(.full = true); TEST_RESULT_STR_Z(filter, "^[0-9]{8}\\-[0-9]{6}F$", "full backup regex with anchors"); TEST_RESULT_BOOL(regExpMatchOne(filter, incr), false, " does not exactly match incr"); TEST_RESULT_BOOL(regExpMatchOne(filter, diff), false, " does not exactly match diff"); TEST_RESULT_BOOL(regExpMatchOne(filter, full), true, " exactly matches full"); // ------------------------------------------------------------------------------------------------------------------------- filter = backupRegExpP(.full = true, .incremental = true); TEST_RESULT_STR_Z( filter, "^[0-9]{8}\\-[0-9]{6}F(\\_[0-9]{8}\\-[0-9]{6}I){0,1}$", "full and optional incr backup regex with anchors"); TEST_RESULT_BOOL(regExpMatchOne(filter, incr), true, " match incr"); TEST_RESULT_BOOL(regExpMatchOne(filter, diff), false, " does not match diff"); TEST_RESULT_BOOL(regExpMatchOne(filter, full), true, " match full"); TEST_RESULT_BOOL( regExpMatchOne( filter, strNew("12341234-123123F_12341234-123123IG")), false, " does not match with trailing character"); TEST_RESULT_BOOL( regExpMatchOne( filter, strNew("A12341234-123123F_12341234-123123I")), false, " does not match with leading character"); // ------------------------------------------------------------------------------------------------------------------------- filter = backupRegExpP(.full = true, .differential = true); TEST_RESULT_STR_Z( filter, "^[0-9]{8}\\-[0-9]{6}F(\\_[0-9]{8}\\-[0-9]{6}D){0,1}$", "full and optional diff backup regex with anchors"); TEST_RESULT_BOOL(regExpMatchOne(filter, incr), false, " does not match incr"); TEST_RESULT_BOOL(regExpMatchOne(filter, diff), true, " match diff"); TEST_RESULT_BOOL(regExpMatchOne(filter, full), true, " match full"); // ------------------------------------------------------------------------------------------------------------------------- filter = backupRegExpP(.full = true, .incremental = true, .differential = true); TEST_RESULT_STR_Z( filter, "^[0-9]{8}\\-[0-9]{6}F(\\_[0-9]{8}\\-[0-9]{6}(D|I)){0,1}$", "full, optional diff and incr backup regex with anchors"); TEST_RESULT_BOOL(regExpMatchOne(filter, incr), true, " match incr"); TEST_RESULT_BOOL(regExpMatchOne(filter, diff), true, " match diff"); TEST_RESULT_BOOL(regExpMatchOne(filter, full), true, " match full"); // ------------------------------------------------------------------------------------------------------------------------- filter = backupRegExpP(.incremental = true, .differential = true, .noAnchorEnd = true); TEST_RESULT_STR_Z(filter, "^[0-9]{8}\\-[0-9]{6}F\\_[0-9]{8}\\-[0-9]{6}(D|I)", "diff and incr backup regex with anchors"); TEST_RESULT_BOOL(regExpMatchOne(filter, incr), true, " match incr"); TEST_RESULT_BOOL(regExpMatchOne(filter, diff), true, " match diff"); TEST_RESULT_BOOL(regExpMatchOne(filter, full), false, " does not match full"); TEST_RESULT_BOOL( regExpMatchOne( filter, strNew("A12341234-123123F_12341234-123123I")), false, " does not match with leading character"); // ------------------------------------------------------------------------------------------------------------------------- filter = backupRegExpP(.incremental = true); TEST_RESULT_STR_Z(filter, "^[0-9]{8}\\-[0-9]{6}F\\_[0-9]{8}\\-[0-9]{6}I$", "incr backup regex with anchors"); TEST_RESULT_BOOL(regExpMatchOne(filter, incr), true, " match incr"); TEST_RESULT_BOOL(regExpMatchOne(filter, diff), false, " does not match diff"); TEST_RESULT_BOOL(regExpMatchOne(filter, full), false, " does not match full"); // ------------------------------------------------------------------------------------------------------------------------- filter = backupRegExpP(.differential = true); TEST_RESULT_STR_Z(filter, "^[0-9]{8}\\-[0-9]{6}F\\_[0-9]{8}\\-[0-9]{6}D$", "diff backup regex with anchors"); TEST_RESULT_BOOL(regExpMatchOne(filter, incr), false, " does not match incr"); TEST_RESULT_BOOL(regExpMatchOne(filter, diff), true, " match diff"); TEST_RESULT_BOOL(regExpMatchOne(filter, full), false, " does not match full"); } // ***************************************************************************************************************************** if (testBegin("PageChecksum")) { TEST_RESULT_UINT(PG_SEGMENT_PAGE_DEFAULT, 131072, "check pages per segment"); // Test pages with all zeros (these are considered valid) // ------------------------------------------------------------------------------------------------------------------------- Buffer *buffer = bufNew(PG_PAGE_SIZE_DEFAULT * 3); Buffer *bufferOut = bufNew(0); bufUsedSet(buffer, bufSize(buffer)); memset(bufPtr(buffer), 0, bufSize(buffer)); *(PageHeaderData *)(bufPtr(buffer) + (PG_PAGE_SIZE_DEFAULT * 0x00)) = (PageHeaderData){.pd_upper = 0}; *(PageHeaderData *)(bufPtr(buffer) + (PG_PAGE_SIZE_DEFAULT * 0x01)) = (PageHeaderData){.pd_upper = 0}; *(PageHeaderData *)(bufPtr(buffer) + (PG_PAGE_SIZE_DEFAULT * 0x02)) = (PageHeaderData){.pd_upper = 0}; IoWrite *write = ioBufferWriteNew(bufferOut); ioFilterGroupAdd(ioWriteFilterGroup(write), pageChecksumNew(0, PG_SEGMENT_PAGE_DEFAULT, PG_PAGE_SIZE_DEFAULT, 0)); ioWriteOpen(write); ioWrite(write, buffer); ioWriteClose(write); TEST_RESULT_STR_Z( jsonFromVar(ioFilterGroupResult(ioWriteFilterGroup(write), PAGE_CHECKSUM_FILTER_TYPE_STR)), "{\"align\":true,\"valid\":true}", "all zero pages"); // Single checksum error // ------------------------------------------------------------------------------------------------------------------------- buffer = bufNew(PG_PAGE_SIZE_DEFAULT * 1); bufUsedSet(buffer, bufSize(buffer)); memset(bufPtr(buffer), 0, bufSize(buffer)); // Page 0 has bogus checksum *(PageHeaderData *)(bufPtr(buffer) + (PG_PAGE_SIZE_DEFAULT * 0x00)) = (PageHeaderData) { .pd_upper = 0x01, .pd_lsn = (PageWalRecPtr) { .walid = 0xF0F0F0F0, .xrecoff = 0xF0F0F0F0, }, }; write = ioBufferWriteNew(bufferOut); ioFilterGroupAdd( ioWriteFilterGroup(write), pageChecksumNewVar( varVarLst( jsonToVar( strNewFmt("[0,%u,%u,%" PRIu64 "]", PG_SEGMENT_PAGE_DEFAULT, PG_PAGE_SIZE_DEFAULT, 0xFACEFACE00000000))))); ioWriteOpen(write); ioWrite(write, buffer); ioWriteClose(write); TEST_RESULT_STR_Z( jsonFromVar(ioFilterGroupResult(ioWriteFilterGroup(write), PAGE_CHECKSUM_FILTER_TYPE_STR)), "{\"align\":true,\"error\":[0],\"valid\":false}", "single checksum error"); // Various checksum errors some of which will be skipped because of the LSN // ------------------------------------------------------------------------------------------------------------------------- buffer = bufNew(PG_PAGE_SIZE_DEFAULT * 8 - (PG_PAGE_SIZE_DEFAULT - 512)); bufUsedSet(buffer, bufSize(buffer)); memset(bufPtr(buffer), 0, bufSize(buffer)); // Page 0 has bogus checksum *(PageHeaderData *)(bufPtr(buffer) + (PG_PAGE_SIZE_DEFAULT * 0x00)) = (PageHeaderData) { .pd_upper = 0x01, .pd_lsn = (PageWalRecPtr) { .walid = 0xF0F0F0F0, .xrecoff = 0xF0F0F0F0, }, }; // Page 1 has bogus checksum but lsn above the limit *(PageHeaderData *)(bufPtr(buffer) + (PG_PAGE_SIZE_DEFAULT * 0x01)) = (PageHeaderData) { .pd_upper = 0x01, .pd_lsn = (PageWalRecPtr) { .walid = 0xFACEFACE, .xrecoff = 0x00000000, }, }; // Page 2 has bogus checksum *(PageHeaderData *)(bufPtr(buffer) + (PG_PAGE_SIZE_DEFAULT * 0x02)) = (PageHeaderData) { .pd_upper = 0x01, .pd_lsn = (PageWalRecPtr) { .xrecoff = 0x2, }, }; // Page 3 has bogus checksum *(PageHeaderData *)(bufPtr(buffer) + (PG_PAGE_SIZE_DEFAULT * 0x03)) = (PageHeaderData) { .pd_upper = 0x01, .pd_lsn = (PageWalRecPtr) { .xrecoff = 0x3, }, }; // Page 4 has bogus checksum *(PageHeaderData *)(bufPtr(buffer) + (PG_PAGE_SIZE_DEFAULT * 0x04)) = (PageHeaderData) { .pd_upper = 0x01, .pd_lsn = (PageWalRecPtr) { .xrecoff = 0x4, }, }; // Page 5 is zero *(PageHeaderData *)(bufPtr(buffer) + (PG_PAGE_SIZE_DEFAULT * 0x05)) = (PageHeaderData){.pd_upper = 0x00}; // Page 6 has bogus checksum *(PageHeaderData *)(bufPtr(buffer) + (PG_PAGE_SIZE_DEFAULT * 0x06)) = (PageHeaderData) { .pd_upper = 0x01, .pd_lsn = (PageWalRecPtr) { .xrecoff = 0x6, }, }; // Page 7 has bogus checksum (and is misaligned but large enough to test) *(PageHeaderData *)(bufPtr(buffer) + (PG_PAGE_SIZE_DEFAULT * 0x07)) = (PageHeaderData) { .pd_upper = 0x01, .pd_lsn = (PageWalRecPtr) { .xrecoff = 0x7, }, }; write = ioBufferWriteNew(bufferOut); ioFilterGroupAdd( ioWriteFilterGroup(write), pageChecksumNew(0, PG_SEGMENT_PAGE_DEFAULT, PG_PAGE_SIZE_DEFAULT, 0xFACEFACE00000000)); ioWriteOpen(write); ioWrite(write, buffer); ioWriteClose(write); TEST_RESULT_STR_Z( jsonFromVar(ioFilterGroupResult(ioWriteFilterGroup(write), PAGE_CHECKSUM_FILTER_TYPE_STR)), "{\"align\":false,\"error\":[0,[2,4],[6,7]],\"valid\":false}", "various checksum errors"); // Impossibly misaligned page // ------------------------------------------------------------------------------------------------------------------------- buffer = bufNew(256); bufUsedSet(buffer, bufSize(buffer)); memset(bufPtr(buffer), 0, bufSize(buffer)); *(PageHeaderData *)(bufPtr(buffer) + (PG_PAGE_SIZE_DEFAULT * 0x00)) = (PageHeaderData){.pd_upper = 0}; write = ioBufferWriteNew(bufferOut); ioFilterGroupAdd( ioWriteFilterGroup(write), pageChecksumNew(0, PG_SEGMENT_PAGE_DEFAULT, PG_PAGE_SIZE_DEFAULT, 0xFACEFACE00000000)); ioWriteOpen(write); ioWrite(write, buffer); ioWriteClose(write); TEST_RESULT_STR_Z( jsonFromVar(ioFilterGroupResult(ioWriteFilterGroup(write), PAGE_CHECKSUM_FILTER_TYPE_STR)), "{\"align\":false,\"valid\":false}", "misalignment"); // Two misaligned buffers in a row // ------------------------------------------------------------------------------------------------------------------------- buffer = bufNew(513); bufUsedSet(buffer, bufSize(buffer)); memset(bufPtr(buffer), 0, bufSize(buffer)); *(PageHeaderData *)(bufPtr(buffer) + (PG_PAGE_SIZE_DEFAULT * 0x00)) = (PageHeaderData){.pd_upper = 0}; write = ioBufferWriteNew(bufferOut); ioFilterGroupAdd( ioWriteFilterGroup(write), pageChecksumNew(0, PG_SEGMENT_PAGE_DEFAULT, PG_PAGE_SIZE_DEFAULT, 0xFACEFACE00000000)); ioWriteOpen(write); ioWrite(write, buffer); TEST_ERROR(ioWrite(write, buffer), AssertError, "should not be possible to see two misaligned pages in a row"); } // ***************************************************************************************************************************** if (testBegin("backupType() and backupTypeStr()")) { TEST_RESULT_UINT(backupType(strNew("full")), backupTypeFull, "backup type full"); TEST_RESULT_UINT(backupType(strNew("diff")), backupTypeDiff, "backup type diff"); TEST_RESULT_UINT(backupType(strNew("incr")), backupTypeIncr, "backup type incr"); TEST_ERROR(backupType(strNew("bogus")), AssertError, "invalid backup type 'bogus'"); TEST_RESULT_STR_Z(backupTypeStr(backupTypeFull), "full", "backup type str full"); TEST_RESULT_STR_Z(backupTypeStr(backupTypeDiff), "diff", "backup type str diff"); TEST_RESULT_STR_Z(backupTypeStr(backupTypeIncr), "incr", "backup type str incr"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/command/backupTest.c000066400000000000000000003654741362531507100241540ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Backup Command ***********************************************************************************************************************************/ #include #include "command/stanza/create.h" #include "command/stanza/upgrade.h" #include "common/io/bufferRead.h" #include "common/io/bufferWrite.h" #include "common/io/io.h" #include "storage/helper.h" #include "storage/posix/storage.h" #include "common/harnessConfig.h" #include "common/harnessPq.h" /*********************************************************************************************************************************** Page header structure use to create realistic pages for testing ***********************************************************************************************************************************/ typedef struct { uint32_t walid; // high bits uint32_t xrecoff; // low bits } PageWalRecPtr; typedef struct PageHeaderData { // LSN is member of *any* block, not only page-organized ones PageWalRecPtr pd_lsn; // Lsn for last change to this page uint16_t pd_checksum; // checksum uint16_t pd_flags; // flag bits, see below uint16_t pd_lower; // offset to start of free space uint16_t pd_upper; // offset to end of free space } PageHeaderData; /*********************************************************************************************************************************** Get a list of all files in the backup ***********************************************************************************************************************************/ typedef struct TestBackupValidateCallbackData { const Storage *storage; // Storage object when needed (e.g. fileCompressed = true) const String *path; // Subpath when storage is specified const Manifest *manifest; // Manifest check for files/links/paths String *content; // String where content should be added } TestBackupValidateCallbackData; void testBackupValidateCallback(void *callbackData, const StorageInfo *info) { TestBackupValidateCallbackData *data = callbackData; // Don't include . when it is a path (we'll still include it when it is a link so we can see the destination) if (info->type == storageTypePath && strEq(info->name, DOT_STR)) return; // Don't include backup.manifest or copy. We'll test that they are present elsewhere if (info->type == storageTypeFile && (strEqZ(info->name, BACKUP_MANIFEST_FILE) || strEqZ(info->name, BACKUP_MANIFEST_FILE INFO_COPY_EXT))) return; strCatFmt(data->content, "%s {", strPtr(info->name)); switch (info->type) { case storageTypeFile: { strCat(data->content, "file"); uint64_t size = info->size; const String *manifestName = info->name; // If the file is compressed then decompress to get the real size if (strEndsWithZ(info->name, "." GZIP_EXT)) { ASSERT(data->storage != NULL); StorageRead *read = storageNewReadP( data->storage, data->path != NULL ? strNewFmt("%s/%s", strPtr(data->path), strPtr(info->name)) : info->name); ioFilterGroupAdd(ioReadFilterGroup(storageReadIo(read)), gzipDecompressNew(false)); size = bufUsed(storageGetP(read)); manifestName = strSubN(info->name, 0, strSize(info->name) - strlen("." GZIP_EXT)); } strCatFmt(data->content, ", s=%" PRIu64, size); // Check against the manifest const ManifestFile *file = manifestFileFind(data->manifest, manifestName); if (size != file->size) THROW_FMT(AssertError, "'%s' size does match manifest", strPtr(manifestName)); if (info->size != file->sizeRepo) THROW_FMT(AssertError, "'%s' repo size does match manifest", strPtr(manifestName)); if (info->mode != 0640) THROW_FMT(AssertError, "'%s' mode is not 0640", strPtr(manifestName)); if (!strEqZ(info->user, testUser())) THROW_FMT(AssertError, "'%s' user should be '%s'", strPtr(manifestName), testUser()); if (!strEqZ(info->group, testGroup())) THROW_FMT(AssertError, "'%s' group should be '%s'", strPtr(manifestName), testGroup()); break; } case storageTypeLink: { strCatFmt(data->content, "link, d=%s", strPtr(info->linkDestination)); break; } case storageTypePath: { strCat(data->content, "path"); // Check against the manifest manifestPathFind(data->manifest, info->name); if (info->mode != 0750) THROW_FMT(AssertError, "'%s' mode is not 00750", strPtr(info->name)); if (!strEqZ(info->user, testUser())) THROW_FMT(AssertError, "'%s' user should be '%s'", strPtr(info->name), testUser()); if (!strEqZ(info->group, testGroup())) THROW_FMT(AssertError, "'%s' group should be '%s'", strPtr(info->name), testGroup()); break; } case storageTypeSpecial: { THROW_FMT(AssertError, "unexpected special file '%s'", strPtr(info->name)); break; } } strCat(data->content, "}\n"); } static String * testBackupValidate(const Storage *storage, const String *path) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(STORAGE, storage); FUNCTION_HARNESS_PARAM(STRING, path); FUNCTION_HARNESS_END(); String *result = strNew(""); MEM_CONTEXT_TEMP_BEGIN() { // Make sure both backup.manifest files exist if (!storageExistsP(storage, strNewFmt("%s/" BACKUP_MANIFEST_FILE, strPtr(path)))) THROW(AssertError, BACKUP_MANIFEST_FILE " is missing"); if (!storageExistsP(storage, strNewFmt("%s/" BACKUP_MANIFEST_FILE INFO_COPY_EXT, strPtr(path)))) THROW(AssertError, BACKUP_MANIFEST_FILE INFO_COPY_EXT " is missing"); // Build a list of files in the backup path and verify against the manifest Manifest *manifest = manifestLoadFile(storage, strNewFmt("%s/" BACKUP_MANIFEST_FILE, strPtr(path)), cipherTypeNone, NULL); TestBackupValidateCallbackData callbackData = { .storage = storage, .path = path, .content = result, .manifest = manifest, }; storageInfoListP(storage, path, testBackupValidateCallback, &callbackData, .recurse = true, .sortOrder = sortOrderAsc); } MEM_CONTEXT_TEMP_END(); FUNCTION_HARNESS_RESULT(STRING, result); } /*********************************************************************************************************************************** Generate pq scripts for versions of PostgreSQL ***********************************************************************************************************************************/ typedef struct TestBackupPqScriptParam { VAR_PARAM_HEADER; bool startFast; bool backupStandby; bool errorAfterStart; bool noWal; // Don't write test WAL segments bool walCompress; // Compress the archive files unsigned int walTotal; // Total WAL to write unsigned int timeline; // Timeline to use for WAL files } TestBackupPqScriptParam; #define testBackupPqScriptP(pgVersion, backupStartTime, ...) \ testBackupPqScript(pgVersion, backupStartTime, (TestBackupPqScriptParam){VAR_PARAM_INIT, __VA_ARGS__}) static void testBackupPqScript(unsigned int pgVersion, time_t backupTimeStart, TestBackupPqScriptParam param) { const char *pg1Path = strPtr(strNewFmt("%s/pg1", testPath())); const char *pg2Path = strPtr(strNewFmt("%s/pg2", testPath())); // If no timeline specified then use timeline 1 param.timeline = param.timeline == 0 ? 1 : param.timeline; // Read pg_control to get info about the cluster PgControl pgControl = pgControlFromFile(storagePg()); // Set archive timeout really small to save time on errors cfgOptionSet(cfgOptArchiveTimeout, cfgSourceParam, varNewDbl(.1)); uint64_t lsnStart = ((uint64_t)backupTimeStart & 0xFFFFFF00) << 28; uint64_t lsnStop = lsnStart + ((param.walTotal == 0 ? 0 : param.walTotal - 1) * pgControl.walSegmentSize) + (pgControl.walSegmentSize / 2); const char *lsnStartStr = strPtr(pgLsnToStr(lsnStart)); const char *walSegmentStart = strPtr(pgLsnToWalSegment(param.timeline, lsnStart, pgControl.walSegmentSize)); const char *lsnStopStr = strPtr(pgLsnToStr(lsnStop)); const char *walSegmentStop = strPtr(pgLsnToWalSegment(param.timeline, lsnStop, pgControl.walSegmentSize)); // Write WAL segments to the archive // ----------------------------------------------------------------------------------------------------------------------------- if (!param.noWal) { InfoArchive *infoArchive = infoArchiveLoadFile(storageRepo(), INFO_ARCHIVE_PATH_FILE_STR, cipherTypeNone, NULL); const String *archiveId = infoArchiveId(infoArchive); StringList *walSegmentList = pgLsnRangeToWalSegmentList( pgControl.version, param.timeline, lsnStart, lsnStop, pgControl.walSegmentSize); Buffer *walBuffer = bufNew((size_t)pgControl.walSegmentSize); bufUsedSet(walBuffer, bufSize(walBuffer)); memset(bufPtr(walBuffer), 0, bufSize(walBuffer)); pgWalTestToBuffer((PgWal){.version = pgControl.version, .systemId = pgControl.systemId}, walBuffer); const String *walChecksum = bufHex(cryptoHashOne(HASH_TYPE_SHA1_STR, walBuffer)); for (unsigned int walSegmentIdx = 0; walSegmentIdx < strLstSize(walSegmentList); walSegmentIdx++) { StorageWrite *write = storageNewWriteP( storageRepoWrite(), strNewFmt( STORAGE_REPO_ARCHIVE "/%s/%s-%s%s", strPtr(archiveId), strPtr(strLstGet(walSegmentList, walSegmentIdx)), strPtr(walChecksum), param.walCompress ? "." GZIP_EXT : "")); if (param.walCompress) ioFilterGroupAdd(ioWriteFilterGroup(storageWriteIo(write)), gzipCompressNew(1, false)); storagePutP(write, walBuffer); } } // ----------------------------------------------------------------------------------------------------------------------------- if (pgVersion == PG_VERSION_95) { ASSERT(!param.backupStandby); ASSERT(!param.errorAfterStart); harnessPqScriptSet((HarnessPq []) { // Connect to primary HRNPQ_MACRO_OPEN_GE_92(1, "dbname='postgres' port=5432", PG_VERSION_95, pg1Path, false, NULL, NULL), // Get start time HRNPQ_MACRO_TIME_QUERY(1, (int64_t)backupTimeStart * 1000), // Start backup HRNPQ_MACRO_ADVISORY_LOCK(1, true), HRNPQ_MACRO_IS_IN_BACKUP(1, false), HRNPQ_MACRO_START_BACKUP_84_95(1, param.startFast, lsnStartStr, walSegmentStart), HRNPQ_MACRO_DATABASE_LIST_1(1, "test1"), HRNPQ_MACRO_TABLESPACE_LIST_0(1), // Get copy start time HRNPQ_MACRO_TIME_QUERY(1, (int64_t)backupTimeStart * 1000 + 999), HRNPQ_MACRO_TIME_QUERY(1, (int64_t)backupTimeStart * 1000 + 1000), // Stop backup HRNPQ_MACRO_STOP_BACKUP_LE_95(1, lsnStopStr, walSegmentStop), // Get stop time HRNPQ_MACRO_TIME_QUERY(1, (int64_t)backupTimeStart * 1000 + 2000), HRNPQ_MACRO_DONE() }); } // ----------------------------------------------------------------------------------------------------------------------------- else if (pgVersion == PG_VERSION_96) { ASSERT(param.backupStandby); ASSERT(!param.errorAfterStart); harnessPqScriptSet((HarnessPq []) { // Connect to primary HRNPQ_MACRO_OPEN_GE_92(1, "dbname='postgres' port=5432", PG_VERSION_96, pg1Path, false, NULL, NULL), // Connect to standby HRNPQ_MACRO_OPEN_GE_92(2, "dbname='postgres' port=5433", PG_VERSION_96, pg2Path, true, NULL, NULL), // Get start time HRNPQ_MACRO_TIME_QUERY(1, (int64_t)backupTimeStart * 1000), // Start backup HRNPQ_MACRO_ADVISORY_LOCK(1, true), HRNPQ_MACRO_START_BACKUP_96(1, true, lsnStartStr, walSegmentStart), HRNPQ_MACRO_DATABASE_LIST_1(1, "test1"), HRNPQ_MACRO_TABLESPACE_LIST_0(1), // Wait for standby to sync HRNPQ_MACRO_REPLAY_WAIT_96(2, lsnStartStr), // Get copy start time HRNPQ_MACRO_TIME_QUERY(1, (int64_t)backupTimeStart * 1000 + 999), HRNPQ_MACRO_TIME_QUERY(1, (int64_t)backupTimeStart * 1000 + 1000), // Stop backup HRNPQ_MACRO_STOP_BACKUP_96(1, lsnStopStr, walSegmentStop, false), // Get stop time HRNPQ_MACRO_TIME_QUERY(1, (int64_t)backupTimeStart * 1000 + 2000), HRNPQ_MACRO_DONE() }); } // ----------------------------------------------------------------------------------------------------------------------------- else if (pgVersion == PG_VERSION_11) { ASSERT(!param.backupStandby); if (param.errorAfterStart) { harnessPqScriptSet((HarnessPq []) { // Connect to primary HRNPQ_MACRO_OPEN_GE_92(1, "dbname='postgres' port=5432", PG_VERSION_11, pg1Path, false, NULL, NULL), // Get start time HRNPQ_MACRO_TIME_QUERY(1, (int64_t)backupTimeStart * 1000), // Start backup HRNPQ_MACRO_ADVISORY_LOCK(1, true), HRNPQ_MACRO_START_BACKUP_GE_10(1, param.startFast, lsnStartStr, walSegmentStart), HRNPQ_MACRO_DATABASE_LIST_1(1, "test1"), HRNPQ_MACRO_TABLESPACE_LIST_1(1, 32768, "tblspc32768"), // Get copy start time HRNPQ_MACRO_TIME_QUERY(1, (int64_t)backupTimeStart * 1000 + 999), HRNPQ_MACRO_TIME_QUERY(1, (int64_t)backupTimeStart * 1000 + 1000), HRNPQ_MACRO_DONE() }); } else { harnessPqScriptSet((HarnessPq []) { // Connect to primary HRNPQ_MACRO_OPEN_GE_92(1, "dbname='postgres' port=5432", PG_VERSION_11, pg1Path, false, NULL, NULL), // Get start time HRNPQ_MACRO_TIME_QUERY(1, (int64_t)backupTimeStart * 1000), // Start backup HRNPQ_MACRO_ADVISORY_LOCK(1, true), HRNPQ_MACRO_START_BACKUP_GE_10(1, param.startFast, lsnStartStr, walSegmentStart), HRNPQ_MACRO_DATABASE_LIST_1(1, "test1"), HRNPQ_MACRO_TABLESPACE_LIST_1(1, 32768, "tblspc32768"), // Get copy start time HRNPQ_MACRO_TIME_QUERY(1, (int64_t)backupTimeStart * 1000 + 999), HRNPQ_MACRO_TIME_QUERY(1, (int64_t)backupTimeStart * 1000 + 1000), // Stop backup HRNPQ_MACRO_STOP_BACKUP_GE_10(1, lsnStopStr, walSegmentStop, false), // Get stop time HRNPQ_MACRO_TIME_QUERY(1, (int64_t)backupTimeStart * 1000 + 2000), HRNPQ_MACRO_DONE() }); } } else THROW_FMT(AssertError, "unsupported test version %u", pgVersion); // {uncoverable - no invalid versions in tests} }; /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // The tests expect the timezone to be UTC setenv("TZ", "UTC", true); Storage *storageTest = storagePosixNew( strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); // Start a protocol server to test the protocol directly Buffer *serverWrite = bufNew(8192); IoWrite *serverWriteIo = ioBufferWriteNew(serverWrite); ioWriteOpen(serverWriteIo); ProtocolServer *server = protocolServerNew(strNew("test"), strNew("test"), ioBufferReadNew(bufNew(0)), serverWriteIo); bufUsedSet(serverWrite, 0); const String *pgFile = strNew("testfile"); const String *missingFile = strNew("missing"); const String *backupLabel = strNew("20190718-155825F"); const String *backupPathFile = strNewFmt(STORAGE_REPO_BACKUP "/%s/%s", strPtr(backupLabel), strPtr(pgFile)); BackupFileResult result = {0}; VariantList *paramList = varLstNew(); // ***************************************************************************************************************************** if (testBegin("segmentNumber()")) { TEST_RESULT_UINT(segmentNumber(pgFile), 0, "No segment number"); TEST_RESULT_UINT(segmentNumber(strNewFmt("%s.123", strPtr(pgFile))), 123, "Segment number"); } // ***************************************************************************************************************************** if (testBegin("backupFile(), backupProtocol")) { // Load Parameters StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAdd(argList, strNewFmt("--pg1-path=%s/pg", testPath())); strLstAddZ(argList, "--repo1-retention-full=1"); harnessCfgLoad(cfgCmdBackup, argList); // Create the pg path storagePathCreateP(storagePgWrite(), NULL, .mode = 0700); // Pg file missing - ignoreMissing=true // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN( result, backupFile( missingFile, true, 0, NULL, false, 0, missingFile, false, false, 1, backupLabel, false, cipherTypeNone, NULL), "pg file missing, ignoreMissing=true, no delta"); TEST_RESULT_UINT(result.copySize + result.repoSize, 0, " copy/repo size 0"); TEST_RESULT_UINT(result.backupCopyResult, backupCopyResultSkip, " skip file"); // Check protocol function directly // ------------------------------------------------------------------------------------------------------------------------- // NULL, zero param values, ignoreMissing=true varLstAdd(paramList, varNewStr(missingFile)); // pgFile varLstAdd(paramList, varNewBool(true)); // pgFileIgnoreMissing varLstAdd(paramList, varNewUInt64(0)); // pgFileSize varLstAdd(paramList, NULL); // pgFileChecksum varLstAdd(paramList, varNewBool(false)); // pgFileChecksumPage varLstAdd(paramList, varNewUInt64(0)); // pgFileChecksumPageLsnLimit varLstAdd(paramList, varNewStr(missingFile)); // repoFile varLstAdd(paramList, varNewBool(false)); // repoFileHasReference varLstAdd(paramList, varNewBool(false)); // repoFileCompress varLstAdd(paramList, varNewUInt(0)); // repoFileCompressLevel varLstAdd(paramList, varNewStr(backupLabel)); // backupLabel varLstAdd(paramList, varNewBool(false)); // delta varLstAdd(paramList, NULL); // cipherSubPass TEST_RESULT_BOOL( backupProtocol(PROTOCOL_COMMAND_BACKUP_FILE_STR, paramList, server), true, "protocol backup file - skip"); TEST_RESULT_STR_Z(strNewBuf(serverWrite), "{\"out\":[3,0,0,null,null]}\n", " check result"); bufUsedSet(serverWrite, 0); // Pg file missing - ignoreMissing=false // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR_FMT( backupFile( missingFile, false, 0, NULL, false, 0, missingFile, false, false, 1, backupLabel, false, cipherTypeNone, NULL), FileMissingError, "unable to open missing file '%s/pg/missing' for read", testPath()); // Create a pg file to backup storagePutP(storageNewWriteP(storagePgWrite(), pgFile), BUFSTRDEF("atestfile")); // ------------------------------------------------------------------------------------------------------------------------- // No prior checksum, no compression, no pageChecksum, no delta, no hasReference // With the expected backupCopyResultCopy, unset the storageFeatureCompress bit for the storageRepo for code coverage uint64_t feature = storageRepo()->interface.feature; ((Storage *)storageRepo())->interface.feature = feature && ((1 << storageFeatureCompress) ^ 0xFFFFFFFFFFFFFFFF); TEST_ASSIGN( result, backupFile(pgFile, false, 9, NULL, false, 0, pgFile, false, false, 1, backupLabel, false, cipherTypeNone, NULL), "pg file exists, no repo file, no ignoreMissing, no pageChecksum, no delta, no hasReference"); ((Storage *)storageRepo())->interface.feature = feature; TEST_RESULT_UINT(result.copySize + result.repoSize, 18, " copy=repo=pgFile size"); TEST_RESULT_UINT(result.backupCopyResult, backupCopyResultCopy, " copy file"); TEST_RESULT_BOOL( (strEqZ(result.copyChecksum, "9bc8ab2dda60ef4beed07d1e19ce0676d5edde67") && storageExistsP(storageRepo(), backupPathFile) && result.pageChecksumResult == NULL), true, " copy file to repo success"); TEST_RESULT_VOID(storageRemoveP(storageRepoWrite(), backupPathFile), " remove repo file"); // ------------------------------------------------------------------------------------------------------------------------- // Test pagechecksum TEST_ASSIGN( result, backupFile( pgFile, false, 9, NULL, true, 0xFFFFFFFFFFFFFFFF, pgFile, false, false, 1, backupLabel, false, cipherTypeNone, NULL), "file checksummed with pageChecksum enabled"); TEST_RESULT_UINT(result.copySize + result.repoSize, 18, " copy=repo=pgFile size"); TEST_RESULT_UINT(result.backupCopyResult, backupCopyResultCopy, " copy file"); TEST_RESULT_BOOL( (strEqZ(result.copyChecksum, "9bc8ab2dda60ef4beed07d1e19ce0676d5edde67") && storageExistsP(storageRepo(), backupPathFile)), true," copy file to repo success"); TEST_RESULT_PTR_NE(result.pageChecksumResult, NULL, " pageChecksumResult is set"); TEST_RESULT_BOOL( varBool(kvGet(result.pageChecksumResult, VARSTRDEF("valid"))), false, " pageChecksumResult valid=false"); TEST_RESULT_VOID(storageRemoveP(storageRepoWrite(), backupPathFile), " remove repo file"); // Check protocol function directly // ------------------------------------------------------------------------------------------------------------------------- // pgFileSize, ignoreMissing=false, backupLabel, pgFileChecksumPage, pgFileChecksumPageLsnLimit paramList = varLstNew(); varLstAdd(paramList, varNewStr(pgFile)); // pgFile varLstAdd(paramList, varNewBool(false)); // pgFileIgnoreMissing varLstAdd(paramList, varNewUInt64(9)); // pgFileSize varLstAdd(paramList, NULL); // pgFileChecksum varLstAdd(paramList, varNewBool(true)); // pgFileChecksumPage varLstAdd(paramList, varNewUInt64(0xFFFFFFFFFFFFFFFF)); // pgFileChecksumPageLsnLimit varLstAdd(paramList, varNewStr(pgFile)); // repoFile varLstAdd(paramList, varNewBool(false)); // repoFileHasReference varLstAdd(paramList, varNewBool(false)); // repoFileCompress varLstAdd(paramList, varNewUInt(1)); // repoFileCompressLevel varLstAdd(paramList, varNewStr(backupLabel)); // backupLabel varLstAdd(paramList, varNewBool(false)); // delta varLstAdd(paramList, NULL); // cipherSubPass TEST_RESULT_BOOL( backupProtocol(PROTOCOL_COMMAND_BACKUP_FILE_STR, paramList, server), true, "protocol backup file - pageChecksum"); TEST_RESULT_STR_Z( strNewBuf(serverWrite), "{\"out\":[1,9,9,\"9bc8ab2dda60ef4beed07d1e19ce0676d5edde67\",{\"align\":false,\"valid\":false}]}\n", " check result"); bufUsedSet(serverWrite, 0); // ------------------------------------------------------------------------------------------------------------------------- // File exists in repo and db, checksum match, delta set, ignoreMissing false, hasReference - NOOP TEST_ASSIGN( result, backupFile( pgFile, false, 9, strNew("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"), false, 0, pgFile, true, false, 1, backupLabel, true, cipherTypeNone, NULL), "file in db and repo, checksum equal, no ignoreMissing, no pageChecksum, delta, hasReference"); TEST_RESULT_UINT(result.copySize, 9, " copy size set"); TEST_RESULT_UINT(result.repoSize, 0, " repo size not set since already exists in repo"); TEST_RESULT_UINT(result.backupCopyResult, backupCopyResultNoOp, " noop file"); TEST_RESULT_BOOL( (strEqZ(result.copyChecksum, "9bc8ab2dda60ef4beed07d1e19ce0676d5edde67") && storageExistsP(storageRepo(), backupPathFile) && result.pageChecksumResult == NULL), true, " noop"); // Check protocol function directly // ------------------------------------------------------------------------------------------------------------------------- // pgFileChecksum, hasReference, delta paramList = varLstNew(); varLstAdd(paramList, varNewStr(pgFile)); // pgFile varLstAdd(paramList, varNewBool(false)); // pgFileIgnoreMissing varLstAdd(paramList, varNewUInt64(9)); // pgFileSize varLstAdd(paramList, varNewStrZ("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67")); // pgFileChecksum varLstAdd(paramList, varNewBool(false)); // pgFileChecksumPage varLstAdd(paramList, varNewUInt64(0)); // pgFileChecksumPageLsnLimit varLstAdd(paramList, varNewStr(pgFile)); // repoFile varLstAdd(paramList, varNewBool(true)); // repoFileHasReference varLstAdd(paramList, varNewBool(false)); // repoFileCompress varLstAdd(paramList, varNewUInt(1)); // repoFileCompressLevel varLstAdd(paramList, varNewStr(backupLabel)); // backupLabel varLstAdd(paramList, varNewBool(true)); // delta varLstAdd(paramList, NULL); // cipherSubPass TEST_RESULT_BOOL( backupProtocol(PROTOCOL_COMMAND_BACKUP_FILE_STR, paramList, server), true, "protocol backup file - noop"); TEST_RESULT_STR_Z( strNewBuf(serverWrite), "{\"out\":[4,9,0,\"9bc8ab2dda60ef4beed07d1e19ce0676d5edde67\",null]}\n", " check result"); bufUsedSet(serverWrite, 0); // ------------------------------------------------------------------------------------------------------------------------- // File exists in repo and db, pg checksum mismatch, delta set, ignoreMissing false, hasReference - COPY TEST_ASSIGN( result, backupFile( pgFile, false, 9, strNew("1234567890123456789012345678901234567890"), false, 0, pgFile, true, false, 1, backupLabel, true, cipherTypeNone, NULL), "file in db and repo, pg checksum not equal, no ignoreMissing, no pageChecksum, delta, hasReference"); TEST_RESULT_UINT(result.copySize + result.repoSize, 18, " copy=repo=pgFile size"); TEST_RESULT_UINT(result.backupCopyResult, backupCopyResultCopy, " copy file"); TEST_RESULT_BOOL( (strEqZ(result.copyChecksum, "9bc8ab2dda60ef4beed07d1e19ce0676d5edde67") && storageExistsP(storageRepo(), backupPathFile) && result.pageChecksumResult == NULL), true, " copy"); // ------------------------------------------------------------------------------------------------------------------------- // File exists in repo and db, pg checksum same, pg size different, delta set, ignoreMissing false, hasReference - COPY TEST_ASSIGN( result, backupFile( pgFile, false, 8, strNew("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"), false, 0, pgFile, true, false, 1, backupLabel, true, cipherTypeNone, NULL), "db & repo file, pg checksum same, pg size different, no ignoreMissing, no pageChecksum, delta, hasReference"); TEST_RESULT_UINT(result.copySize + result.repoSize, 18, " copy=repo=pgFile size"); TEST_RESULT_UINT(result.backupCopyResult, backupCopyResultCopy, " copy file"); TEST_RESULT_BOOL( (strEqZ(result.copyChecksum, "9bc8ab2dda60ef4beed07d1e19ce0676d5edde67") && storageExistsP(storageRepo(), backupPathFile) && result.pageChecksumResult == NULL), true, " copy"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("resumed file is missing in repo but present in resumed manfest, recopy"); TEST_ASSIGN( result, backupFile( pgFile, false, 9, strNew("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"), false, 0, STRDEF(BOGUS_STR), false, false, 1, backupLabel, true, cipherTypeNone, NULL), "backup file"); TEST_RESULT_UINT(result.copySize + result.repoSize, 18, " copy=repo=pgFile size"); TEST_RESULT_UINT(result.backupCopyResult, backupCopyResultReCopy, " check copy result"); TEST_RESULT_BOOL( (strEqZ(result.copyChecksum, "9bc8ab2dda60ef4beed07d1e19ce0676d5edde67") && storageExistsP(storageRepo(), backupPathFile) && result.pageChecksumResult == NULL), true, " recopy"); // ------------------------------------------------------------------------------------------------------------------------- // File exists in repo and db, checksum not same in repo, delta set, ignoreMissing false, no hasReference - RECOPY TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageRepoWrite(), backupPathFile), BUFSTRDEF("adifferentfile")), "create different file (size and checksum) with same name in repo"); TEST_ASSIGN( result, backupFile( pgFile, false, 9, strNew("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"), false, 0, pgFile, false, false, 1, backupLabel, true, cipherTypeNone, NULL), " db & repo file, pgFileMatch, repo checksum no match, no ignoreMissing, no pageChecksum, delta, no hasReference"); TEST_RESULT_UINT(result.copySize + result.repoSize, 18, " copy=repo=pgFile size"); TEST_RESULT_UINT(result.backupCopyResult, backupCopyResultReCopy, " recopy file"); TEST_RESULT_BOOL( (strEqZ(result.copyChecksum, "9bc8ab2dda60ef4beed07d1e19ce0676d5edde67") && storageExistsP(storageRepo(), backupPathFile) && result.pageChecksumResult == NULL), true, " recopy"); // ------------------------------------------------------------------------------------------------------------------------- // File exists in repo but missing from db, checksum same in repo, delta set, ignoreMissing true, no hasReference - SKIP TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageRepoWrite(), backupPathFile), BUFSTRDEF("adifferentfile")), "create different file with same name in repo"); TEST_ASSIGN( result, backupFile( missingFile, true, 9, strNew("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"), false, 0, pgFile, false, false, 1, backupLabel, true, cipherTypeNone, NULL), " file in repo only, checksum in repo equal, ignoreMissing=true, no pageChecksum, delta, no hasReference"); TEST_RESULT_UINT(result.copySize + result.repoSize, 0, " copy=repo=0 size"); TEST_RESULT_UINT(result.backupCopyResult, backupCopyResultSkip, " skip file"); TEST_RESULT_BOOL( (result.copyChecksum == NULL && !storageExistsP(storageRepo(), backupPathFile) && result.pageChecksumResult == NULL), true, " skip and remove file from repo"); // ------------------------------------------------------------------------------------------------------------------------- // No prior checksum, compression, no page checksum, no pageChecksum, no delta, no hasReference TEST_ASSIGN( result, backupFile(pgFile, false, 9, NULL, false, 0, pgFile, false, true, 3, backupLabel, false, cipherTypeNone, NULL), "pg file exists, no checksum, no ignoreMissing, compression, no pageChecksum, no delta, no hasReference"); TEST_RESULT_UINT(result.copySize, 9, " copy=pgFile size"); TEST_RESULT_UINT(result.repoSize, 29, " repo compress size"); TEST_RESULT_UINT(result.backupCopyResult, backupCopyResultCopy, " copy file"); TEST_RESULT_BOOL( (strEqZ(result.copyChecksum, "9bc8ab2dda60ef4beed07d1e19ce0676d5edde67") && storageExistsP(storageRepo(), strNewFmt(STORAGE_REPO_BACKUP "/%s/%s.gz", strPtr(backupLabel), strPtr(pgFile))) && result.pageChecksumResult == NULL), true, " copy file to repo compress success"); // ------------------------------------------------------------------------------------------------------------------------- // Pg and repo file exist & match, prior checksum, compression, no page checksum, no pageChecksum, no delta, no hasReference TEST_ASSIGN( result, backupFile( pgFile, false, 9, strNew("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"), false, 0, pgFile, false, true, 3, backupLabel, false, cipherTypeNone, NULL), "pg file & repo exists, match, checksum, no ignoreMissing, compression, no pageChecksum, no delta, no hasReference"); TEST_RESULT_UINT(result.copySize, 9, " copy=pgFile size"); TEST_RESULT_UINT(result.repoSize, 29, " repo compress size"); TEST_RESULT_UINT(result.backupCopyResult, backupCopyResultChecksum, " checksum file"); TEST_RESULT_BOOL( (strEqZ(result.copyChecksum, "9bc8ab2dda60ef4beed07d1e19ce0676d5edde67") && storageExistsP(storageRepo(), strNewFmt(STORAGE_REPO_BACKUP "/%s/%s.gz", strPtr(backupLabel), strPtr(pgFile))) && result.pageChecksumResult == NULL), true, " compressed repo file matches"); // Check protocol function directly // ------------------------------------------------------------------------------------------------------------------------- // compression paramList = varLstNew(); varLstAdd(paramList, varNewStr(pgFile)); // pgFile varLstAdd(paramList, varNewBool(false)); // pgFileIgnoreMissing varLstAdd(paramList, varNewUInt64(9)); // pgFileSize varLstAdd(paramList, varNewStrZ("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67")); // pgFileChecksum varLstAdd(paramList, varNewBool(false)); // pgFileChecksumPage varLstAdd(paramList, varNewUInt64(0)); // pgFileChecksumPageLsnLimit varLstAdd(paramList, varNewStr(pgFile)); // repoFile varLstAdd(paramList, varNewBool(false)); // repoFileHasReference varLstAdd(paramList, varNewBool(true)); // repoFileCompress varLstAdd(paramList, varNewUInt(3)); // repoFileCompressLevel varLstAdd(paramList, varNewStr(backupLabel)); // backupLabel varLstAdd(paramList, varNewBool(false)); // delta varLstAdd(paramList, NULL); // cipherSubPass TEST_RESULT_BOOL( backupProtocol(PROTOCOL_COMMAND_BACKUP_FILE_STR, paramList, server), true, "protocol backup file - copy, compress"); TEST_RESULT_STR_Z( strNewBuf(serverWrite), "{\"out\":[0,9,29,\"9bc8ab2dda60ef4beed07d1e19ce0676d5edde67\",null]}\n", " check result"); bufUsedSet(serverWrite, 0); // ------------------------------------------------------------------------------------------------------------------------- // Create a zero sized file - checksum will be set but in backupManifestUpdate it will not be copied storagePutP(storageNewWriteP(storagePgWrite(), strNew("zerofile")), BUFSTRDEF("")); // No prior checksum, no compression, no pageChecksum, no delta, no hasReference TEST_ASSIGN( result, backupFile( strNew("zerofile"), false, 0, NULL, false, 0, strNew("zerofile"), false, false, 1, backupLabel, false, cipherTypeNone, NULL), "zero-sized pg file exists, no repo file, no ignoreMissing, no pageChecksum, no delta, no hasReference"); TEST_RESULT_UINT(result.copySize + result.repoSize, 0, " copy=repo=pgFile size 0"); TEST_RESULT_UINT(result.backupCopyResult, backupCopyResultCopy, " copy file"); TEST_RESULT_PTR_NE(result.copyChecksum, NULL, " checksum set"); TEST_RESULT_BOOL( (storageExistsP(storageRepo(), strNewFmt(STORAGE_REPO_BACKUP "/%s/zerofile", strPtr(backupLabel))) && result.pageChecksumResult == NULL), true, " copy zero file to repo success"); // Check invalid protocol function // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(backupProtocol(strNew(BOGUS_STR), paramList, server), false, "invalid function"); } // ***************************************************************************************************************************** if (testBegin("backupFile() - encrypt")) { // Load Parameters StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAdd(argList, strNewFmt("--pg1-path=%s/pg", testPath())); strLstAddZ(argList, "--repo1-retention-full=1"); strLstAddZ(argList, "--repo1-cipher-type=aes-256-cbc"); setenv("PGBACKREST_REPO1_CIPHER_PASS", "12345678", true); harnessCfgLoad(cfgCmdBackup, argList); unsetenv("PGBACKREST_REPO1_CIPHER_PASS"); // Create the pg path storagePathCreateP(storagePgWrite(), NULL, .mode = 0700); // Create a pg file to backup storagePutP(storageNewWriteP(storagePgWrite(), pgFile), BUFSTRDEF("atestfile")); // ------------------------------------------------------------------------------------------------------------------------- // No prior checksum, no compression, no pageChecksum, no delta, no hasReference TEST_ASSIGN( result, backupFile( pgFile, false, 9, NULL, false, 0, pgFile, false, false, 1, backupLabel, false, cipherTypeAes256Cbc, strNew("12345678")), "pg file exists, no repo file, no ignoreMissing, no pageChecksum, no delta, no hasReference"); TEST_RESULT_UINT(result.copySize, 9, " copy size set"); TEST_RESULT_UINT(result.repoSize, 32, " repo size set"); TEST_RESULT_UINT(result.backupCopyResult, backupCopyResultCopy, " copy file"); TEST_RESULT_BOOL( (strEqZ(result.copyChecksum, "9bc8ab2dda60ef4beed07d1e19ce0676d5edde67") && storageExistsP(storageRepo(), backupPathFile) && result.pageChecksumResult == NULL), true, " copy file to encrypted repo success"); // ------------------------------------------------------------------------------------------------------------------------- // Delta but pgMatch false (pg File size different), prior checksum, no compression, no pageChecksum, delta, no hasReference TEST_ASSIGN( result, backupFile( pgFile, false, 8, strNew("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"), false, 0, pgFile, false, false, 1, backupLabel, true, cipherTypeAes256Cbc, strNew("12345678")), "pg and repo file exists, pgFileMatch false, no ignoreMissing, no pageChecksum, delta, no hasReference"); TEST_RESULT_UINT(result.copySize, 9, " copy size set"); TEST_RESULT_UINT(result.repoSize, 32, " repo size set"); TEST_RESULT_UINT(result.backupCopyResult, backupCopyResultCopy, " copy file"); TEST_RESULT_BOOL( (strEqZ(result.copyChecksum, "9bc8ab2dda60ef4beed07d1e19ce0676d5edde67") && storageExistsP(storageRepo(), backupPathFile) && result.pageChecksumResult == NULL), true, " copy file (size missmatch) to encrypted repo success"); // ------------------------------------------------------------------------------------------------------------------------- // Check repo with cipher filter. // pg/repo file size same but checksum different, prior checksum, no compression, no pageChecksum, no delta, no hasReference TEST_ASSIGN( result, backupFile( pgFile, false, 9, strNew("1234567890123456789012345678901234567890"), false, 0, pgFile, false, false, 0, backupLabel, false, cipherTypeAes256Cbc, strNew("12345678")), "pg and repo file exists, repo checksum no match, no ignoreMissing, no pageChecksum, no delta, no hasReference"); TEST_RESULT_UINT(result.copySize, 9, " copy size set"); TEST_RESULT_UINT(result.repoSize, 32, " repo size set"); TEST_RESULT_UINT(result.backupCopyResult, backupCopyResultReCopy, " recopy file"); TEST_RESULT_BOOL( (strEqZ(result.copyChecksum, "9bc8ab2dda60ef4beed07d1e19ce0676d5edde67") && storageExistsP(storageRepo(), backupPathFile) && result.pageChecksumResult == NULL), true, " recopy file to encrypted repo success"); // Check protocol function directly // ------------------------------------------------------------------------------------------------------------------------- // cipherType, cipherPass paramList = varLstNew(); varLstAdd(paramList, varNewStr(pgFile)); // pgFile varLstAdd(paramList, varNewBool(false)); // pgFileIgnoreMissing varLstAdd(paramList, varNewUInt64(9)); // pgFileSize varLstAdd(paramList, varNewStrZ("1234567890123456789012345678901234567890")); // pgFileChecksum varLstAdd(paramList, varNewBool(false)); // pgFileChecksumPage varLstAdd(paramList, varNewUInt64(0)); // pgFileChecksumPageLsnLimit varLstAdd(paramList, varNewStr(pgFile)); // repoFile varLstAdd(paramList, varNewBool(false)); // repoFileHasReference varLstAdd(paramList, varNewBool(false)); // repoFileCompress varLstAdd(paramList, varNewUInt(0)); // repoFileCompressLevel varLstAdd(paramList, varNewStr(backupLabel)); // backupLabel varLstAdd(paramList, varNewBool(false)); // delta varLstAdd(paramList, varNewStrZ("12345678")); // cipherPass TEST_RESULT_BOOL( backupProtocol(PROTOCOL_COMMAND_BACKUP_FILE_STR, paramList, server), true, "protocol backup file - recopy, encrypt"); TEST_RESULT_STR_Z( strNewBuf(serverWrite), "{\"out\":[2,9,32,\"9bc8ab2dda60ef4beed07d1e19ce0676d5edde67\",null]}\n", " check result"); bufUsedSet(serverWrite, 0); } // ***************************************************************************************************************************** if (testBegin("backupLabelCreate()")) { const String *pg1Path = strNewFmt("%s/pg1", testPath()); const String *repoPath = strNewFmt("%s/repo", testPath()); StringList *argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); harnessCfgLoad(cfgCmdBackup, argList); time_t timestamp = 1575401652; String *backupLabel = backupLabelFormat(backupTypeFull, NULL, timestamp); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("assign label when no history"); storagePathCreateP(storageRepoWrite(), STRDEF(STORAGE_REPO_BACKUP "/backup.history/2019")); TEST_RESULT_STR(backupLabelCreate(backupTypeFull, NULL, timestamp), backupLabel, "create label"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("assign label when history is older"); storagePutP( storageNewWriteP( storageRepoWrite(), strNewFmt( STORAGE_REPO_BACKUP "/backup.history/2019/%s.manifest.gz", strPtr(backupLabelFormat(backupTypeFull, NULL, timestamp - 4)))), NULL); TEST_RESULT_STR(backupLabelCreate(backupTypeFull, NULL, timestamp), backupLabel, "create label"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("assign label when backup is older"); storagePutP( storageNewWriteP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s", strPtr(backupLabelFormat(backupTypeFull, NULL, timestamp - 2)))), NULL); TEST_RESULT_STR(backupLabelCreate(backupTypeFull, NULL, timestamp), backupLabel, "create label"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("advance time when backup is same"); storagePutP( storageNewWriteP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s", strPtr(backupLabelFormat(backupTypeFull, NULL, timestamp)))), NULL); TEST_RESULT_STR_Z(backupLabelCreate(backupTypeFull, NULL, timestamp), "20191203-193413F", "create label"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error when new label is in the past even with advanced time"); storagePutP( storageNewWriteP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s", strPtr(backupLabelFormat(backupTypeFull, NULL, timestamp + 1)))), NULL); TEST_ERROR( backupLabelCreate(backupTypeFull, NULL, timestamp), FormatError, "new backup label '20191203-193413F' is not later than latest backup label '20191203-193413F'\n" "HINT: has the timezone changed?\n" "HINT: is there clock skew?"); } // ***************************************************************************************************************************** if (testBegin("backupInit()")) { const String *pg1Path = strNewFmt("%s/pg1", testPath()); const String *repoPath = strNewFmt("%s/repo", testPath()); // Set log level to detail harnessLogLevelSet(logLevelDetail); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error when backup from standby is not supported"); StringList *argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--" CFGOPT_BACKUP_STANDBY); harnessCfgLoad(cfgCmdBackup, argList); TEST_ERROR( backupInit(infoBackupNew(PG_VERSION_91, 1000000000000000910, NULL)), ConfigError, "option 'backup-standby' not valid for PostgreSQL < 9.2"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("warn and reset when backup from standby used in offline mode"); // Create pg_control storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(pg1Path))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_92, .systemId = 1000000000000000920})); argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--" CFGOPT_BACKUP_STANDBY); strLstAddZ(argList, "--no-" CFGOPT_ONLINE); harnessCfgLoad(cfgCmdBackup, argList); TEST_RESULT_VOID(backupInit(infoBackupNew(PG_VERSION_92, 1000000000000000920, NULL)), "backup init"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptBackupStandby), false, " check backup-standby"); TEST_RESULT_LOG( "P00 WARN: option backup-standby is enabled but backup is offline - backups will be performed from the primary"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error when pg_control does not match stanza"); // Create pg_control storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(pg1Path))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_10, .systemId = 1000000000000001000})); argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--no-" CFGOPT_ONLINE); harnessCfgLoad(cfgCmdBackup, argList); TEST_ERROR( backupInit(infoBackupNew(PG_VERSION_11, 1000000000000001100, NULL)), BackupMismatchError, "PostgreSQL version 10, system-id 1000000000000001000 do not match stanza version 11, system-id 1000000000000001100\n" "HINT: is this the correct stanza?"); TEST_ERROR( backupInit(infoBackupNew(PG_VERSION_10, 1000000000000001100, NULL)), BackupMismatchError, "PostgreSQL version 10, system-id 1000000000000001000 do not match stanza version 10, system-id 1000000000000001100\n" "HINT: is this the correct stanza?"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("reset start-fast when PostgreSQL < 8.4"); // Create pg_control storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(pg1Path))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_83, .systemId = 1000000000000000830})); argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--no-" CFGOPT_ONLINE); strLstAddZ(argList, "--" CFGOPT_START_FAST); harnessCfgLoad(cfgCmdBackup, argList); TEST_RESULT_VOID(backupInit(infoBackupNew(PG_VERSION_83, 1000000000000000830, NULL)), "backup init"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptStartFast), false, " check start-fast"); TEST_RESULT_LOG("P00 WARN: start-fast option is only available in PostgreSQL >= 8.4"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("reset stop-auto when PostgreSQL < 9.3"); // Create pg_control storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(pg1Path))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_84, .systemId = 1000000000000000840})); argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--no-" CFGOPT_ONLINE); strLstAddZ(argList, "--" CFGOPT_STOP_AUTO); harnessCfgLoad(cfgCmdBackup, argList); TEST_RESULT_VOID(backupInit(infoBackupNew(PG_VERSION_84, 1000000000000000840, NULL)), "backup init"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptStopAuto), false, " check stop-auto"); TEST_RESULT_LOG("P00 WARN: stop-auto option is only available in PostgreSQL >= 9.3"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("reset checksum-page when the cluster does not have checksums enabled"); // Create pg_control storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(pg1Path))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_93, .systemId = PG_VERSION_93})); argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--" CFGOPT_CHECKSUM_PAGE); harnessCfgLoad(cfgCmdBackup, argList); harnessPqScriptSet((HarnessPq []) { // Connect to primary HRNPQ_MACRO_OPEN_GE_92(1, "dbname='postgres' port=5432", PG_VERSION_96, strPtr(pg1Path), false, NULL, NULL), HRNPQ_MACRO_DONE() }); TEST_RESULT_VOID(dbFree(backupInit(infoBackupNew(PG_VERSION_93, PG_VERSION_93, NULL))->dbPrimary), "backup init"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptChecksumPage), false, " check checksum-page"); TEST_RESULT_LOG( "P00 WARN: checksum-page option set to true but checksums are not enabled on the cluster, resetting to false"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("ok if cluster checksums are enabled and checksum-page is any value"); // Create pg_control with page checksums storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(pg1Path))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_93, .systemId = PG_VERSION_93, .pageChecksum = true})); argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--no-" CFGOPT_CHECKSUM_PAGE); harnessCfgLoad(cfgCmdBackup, argList); harnessPqScriptSet((HarnessPq []) { // Connect to primary HRNPQ_MACRO_OPEN_GE_92(1, "dbname='postgres' port=5432", PG_VERSION_96, strPtr(pg1Path), false, NULL, NULL), HRNPQ_MACRO_DONE() }); TEST_RESULT_VOID(dbFree(backupInit(infoBackupNew(PG_VERSION_93, PG_VERSION_93, NULL))->dbPrimary), "backup init"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptChecksumPage), false, " check checksum-page"); // Create pg_control without page checksums storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(pg1Path))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_93, .systemId = PG_VERSION_93})); harnessPqScriptSet((HarnessPq []) { // Connect to primary HRNPQ_MACRO_OPEN_GE_92(1, "dbname='postgres' port=5432", PG_VERSION_96, strPtr(pg1Path), false, NULL, NULL), HRNPQ_MACRO_DONE() }); TEST_RESULT_VOID(dbFree(backupInit(infoBackupNew(PG_VERSION_93, PG_VERSION_93, NULL))->dbPrimary), "backup init"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptChecksumPage), false, " check checksum-page"); } // ***************************************************************************************************************************** if (testBegin("backupTime()")) { const String *pg1Path = strNewFmt("%s/pg1", testPath()); const String *repoPath = strNewFmt("%s/repo", testPath()); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error when second does not advance after sleep"); StringList *argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); harnessCfgLoad(cfgCmdBackup, argList); // Create pg_control storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(pg1Path))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_93, .systemId = PG_VERSION_93})); harnessPqScriptSet((HarnessPq []) { // Connect to primary HRNPQ_MACRO_OPEN_GE_92(1, "dbname='postgres' port=5432", PG_VERSION_96, strPtr(pg1Path), false, NULL, NULL), // Don't advance time after wait HRNPQ_MACRO_TIME_QUERY(1, 1575392588998), HRNPQ_MACRO_TIME_QUERY(1, 1575392588999), HRNPQ_MACRO_DONE() }); BackupData *backupData = backupInit(infoBackupNew(PG_VERSION_93, PG_VERSION_93, NULL)); TEST_ERROR(backupTime(backupData, true), AssertError, "invalid sleep for online backup time with wait remainder"); dbFree(backupData->dbPrimary); } // ***************************************************************************************************************************** if (testBegin("backupResumeFind()")) { const String *repoPath = strNewFmt("%s/repo", testPath()); StringList *argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAddZ(argList, "--" CFGOPT_PG1_PATH "=/pg"); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--" CFGOPT_TYPE "=" BACKUP_TYPE_FULL); strLstAddZ(argList, "--no-" CFGOPT_COMPRESS); harnessCfgLoad(cfgCmdBackup, argList); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("cannot resume empty directory"); storagePathCreateP(storageRepoWrite(), STRDEF(STORAGE_REPO_BACKUP "/20191003-105320F")); TEST_RESULT_PTR(backupResumeFind((Manifest *)1, NULL), NULL, "find resumable backup"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("cannot resume when resume is disabled"); cfgOptionSet(cfgOptResume, cfgSourceParam, BOOL_FALSE_VAR); storagePutP( storageNewWriteP( storageRepoWrite(), STRDEF(STORAGE_REPO_BACKUP "/20191003-105320F/" BACKUP_MANIFEST_FILE INFO_COPY_EXT)), NULL); TEST_RESULT_PTR(backupResumeFind((Manifest *)1, NULL), NULL, "find resumable backup"); TEST_RESULT_LOG( "P00 WARN: backup '20191003-105320F' cannot be resumed: resume is disabled"); TEST_RESULT_BOOL( storagePathExistsP(storageRepo(), STRDEF(STORAGE_REPO_BACKUP "/20191003-105320F")), false, "check backup path removed"); cfgOptionSet(cfgOptResume, cfgSourceParam, BOOL_TRUE_VAR); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("cannot resume when pgBackRest version has changed"); Manifest *manifestResume = manifestNewInternal(); manifestResume->info = infoNew(NULL); manifestResume->data.backupType = backupTypeFull; manifestResume->data.backupLabel = STRDEF("20191003-105320F"); manifestResume->data.pgVersion = PG_VERSION_12; manifestTargetAdd(manifestResume, &(ManifestTarget){.name = MANIFEST_TARGET_PGDATA_STR, .path = STRDEF("/pg")}); manifestPathAdd(manifestResume, &(ManifestPath){.name = MANIFEST_TARGET_PGDATA_STR}); manifestFileAdd(manifestResume, &(ManifestFile){.name = STRDEF("pg_data/" PG_FILE_PGVERSION)}); manifestSave( manifestResume, storageWriteIo( storageNewWriteP( storageRepoWrite(), STRDEF(STORAGE_REPO_BACKUP "/20191003-105320F/" BACKUP_MANIFEST_FILE INFO_COPY_EXT)))); Manifest *manifest = manifestNewInternal(); manifest->data.backupType = backupTypeFull; manifest->data.backrestVersion = STRDEF("BOGUS"); TEST_RESULT_PTR(backupResumeFind(manifest, NULL), NULL, "find resumable backup"); TEST_RESULT_LOG( "P00 WARN: backup '20191003-105320F' cannot be resumed:" " new pgBackRest version 'BOGUS' does not match resumable pgBackRest version '" PROJECT_VERSION "'"); TEST_RESULT_BOOL( storagePathExistsP(storageRepo(), STRDEF(STORAGE_REPO_BACKUP "/20191003-105320F")), false, "check backup path removed"); manifest->data.backrestVersion = STRDEF(PROJECT_VERSION); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("cannot resume when backup labels do not match (resumable is null)"); manifest->data.backupType = backupTypeFull; manifest->data.backupLabelPrior = STRDEF("20191003-105320F"); manifestSave( manifestResume, storageWriteIo( storageNewWriteP( storageRepoWrite(), STRDEF(STORAGE_REPO_BACKUP "/20191003-105320F/" BACKUP_MANIFEST_FILE INFO_COPY_EXT)))); TEST_RESULT_PTR(backupResumeFind(manifest, NULL), NULL, "find resumable backup"); TEST_RESULT_LOG( "P00 WARN: backup '20191003-105320F' cannot be resumed:" " new prior backup label '' does not match resumable prior backup label '20191003-105320F'"); TEST_RESULT_BOOL( storagePathExistsP(storageRepo(), STRDEF(STORAGE_REPO_BACKUP "/20191003-105320F")), false, "check backup path removed"); manifest->data.backupLabelPrior = NULL; // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("cannot resume when backup labels do not match (new is null)"); manifest->data.backupType = backupTypeFull; manifestResume->data.backupLabelPrior = STRDEF("20191003-105320F"); manifestSave( manifestResume, storageWriteIo( storageNewWriteP( storageRepoWrite(), STRDEF(STORAGE_REPO_BACKUP "/20191003-105320F/" BACKUP_MANIFEST_FILE INFO_COPY_EXT)))); TEST_RESULT_PTR(backupResumeFind(manifest, NULL), NULL, "find resumable backup"); TEST_RESULT_LOG( "P00 WARN: backup '20191003-105320F' cannot be resumed:" " new prior backup label '20191003-105320F' does not match resumable prior backup label ''"); TEST_RESULT_BOOL( storagePathExistsP(storageRepo(), STRDEF(STORAGE_REPO_BACKUP "/20191003-105320F")), false, "check backup path removed"); manifestResume->data.backupLabelPrior = NULL; // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("cannot resume when compression does not match"); manifestResume->data.backupOptionCompress = true; manifestSave( manifestResume, storageWriteIo( storageNewWriteP( storageRepoWrite(), STRDEF(STORAGE_REPO_BACKUP "/20191003-105320F/" BACKUP_MANIFEST_FILE INFO_COPY_EXT)))); TEST_RESULT_PTR(backupResumeFind(manifest, NULL), NULL, "find resumable backup"); TEST_RESULT_LOG( "P00 WARN: backup '20191003-105320F' cannot be resumed:" " new compression 'false' does not match resumable compression 'true'"); TEST_RESULT_BOOL( storagePathExistsP(storageRepo(), STRDEF(STORAGE_REPO_BACKUP "/20191003-105320F")), false, "check backup path removed"); manifestResume->data.backupOptionCompress = false; } // ***************************************************************************************************************************** if (testBegin("backupJobResult()")) { // Set log level to detail harnessLogLevelSet(logLevelDetail); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("report job error"); ProtocolParallelJob *job = protocolParallelJobNew(VARSTRDEF("key"), protocolCommandNew(STRDEF("command"))); protocolParallelJobErrorSet(job, errorTypeCode(&AssertError), STRDEF("error message")); TEST_ERROR(backupJobResult((Manifest *)1, NULL, STRDEF("log"), strLstNew(), job, 0, 0, 0), AssertError, "error message"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("report host/100% progress on noop result"); // Create job that skips file job = protocolParallelJobNew(VARSTRDEF("pg_data/test"), protocolCommandNew(STRDEF("command"))); VariantList *result = varLstNew(); varLstAdd(result, varNewUInt64(backupCopyResultNoOp)); varLstAdd(result, varNewUInt64(0)); varLstAdd(result, varNewUInt64(0)); varLstAdd(result, NULL); varLstAdd(result, NULL); protocolParallelJobResultSet(job, varNewVarLst(result)); // Create manifest with file Manifest *manifest = manifestNewInternal(); manifestFileAdd(manifest, &(ManifestFile){.name = STRDEF("pg_data/test")}); TEST_RESULT_UINT( backupJobResult(manifest, STRDEF("host"), STRDEF("log-test"), strLstNew(), job, 0, 0, 0), 0, "log noop result"); TEST_RESULT_LOG("P00 DETAIL: match file from prior backup host:log-test (0B, 100%)"); } // Offline tests should only be used to test offline functionality and errors easily tested in offline mode // ***************************************************************************************************************************** if (testBegin("cmdBackup() offline")) { const String *pg1Path = strNewFmt("%s/pg1", testPath()); const String *repoPath = strNewFmt("%s/repo", testPath()); // Set log level to detail harnessLogLevelSet(logLevelDetail); // Replace backup labels since the times are not deterministic hrnLogReplaceAdd("[0-9]{8}-[0-9]{6}F_[0-9]{8}-[0-9]{6}I", NULL, "INCR", true); hrnLogReplaceAdd("[0-9]{8}-[0-9]{6}F_[0-9]{8}-[0-9]{6}D", NULL, "DIFF", true); hrnLogReplaceAdd("[0-9]{8}-[0-9]{6}F", NULL, "FULL", true); // Create pg_control storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(pg1Path))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_84, .systemId = 1000000000000000840})); // Create stanza StringList *argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--no-" CFGOPT_ONLINE); harnessCfgLoad(cfgCmdStanzaCreate, argList); cmdStanzaCreate(); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error when postmaster.pid exists"); argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--no-" CFGOPT_ONLINE); harnessCfgLoad(cfgCmdBackup, argList); storagePutP(storageNewWriteP(storagePgWrite(), PG_FILE_POSTMASTERPID_STR), BUFSTRDEF("PID")); TEST_ERROR( cmdBackup(), PostmasterRunningError, "--no-online passed but postmaster.pid exists - looks like the postmaster is running. Shutdown the postmaster and try" " again, or use --force."); TEST_RESULT_LOG("P00 WARN: no prior backup exists, incr backup has been changed to full"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("offline full backup"); argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--no-" CFGOPT_ONLINE); strLstAddZ(argList, "--no-" CFGOPT_COMPRESS); strLstAddZ(argList, "--" CFGOPT_FORCE); harnessCfgLoad(cfgCmdBackup, argList); storagePutP(storageNewWriteP(storagePgWrite(), STRDEF("postgresql.conf")), BUFSTRDEF("CONFIGSTUFF")); TEST_RESULT_VOID(cmdBackup(), "backup"); TEST_RESULT_LOG_FMT( "P00 WARN: no prior backup exists, incr backup has been changed to full\n" "P00 WARN: --no-online passed and postmaster.pid exists but --force was passed so backup will continue though it" " looks like the postmaster is running and the backup will probably not be consistent\n" "P01 INFO: backup file {[path]}/pg1/global/pg_control (8KB, 99%%) checksum %s\n" "P01 INFO: backup file {[path]}/pg1/postgresql.conf (11B, 100%%) checksum e3db315c260e79211b7b52587123b7aa060f30ab\n" "P00 INFO: full backup size = 8KB\n" "P00 INFO: new backup label = [FULL-1]", TEST_64BIT() ? "21e2ddc99cdf4cfca272eee4f38891146092e358" : "8bb70506d988a8698d9e8cf90736ada23634571b"); // Remove postmaster.pid storageRemoveP(storagePgWrite(), PG_FILE_POSTMASTERPID_STR, .errorOnMissing = true); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error when no files have changed"); argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--no-" CFGOPT_ONLINE); strLstAddZ(argList, "--" CFGOPT_COMPRESS); strLstAddZ(argList, "--" CFGOPT_REPO1_HARDLINK); strLstAddZ(argList, "--" CFGOPT_TYPE "=" BACKUP_TYPE_DIFF); harnessCfgLoad(cfgCmdBackup, argList); TEST_ERROR(cmdBackup(), FileMissingError, "no files have changed since the last backup - this seems unlikely"); TEST_RESULT_LOG( "P00 INFO: last backup label = [FULL-1], version = " PROJECT_VERSION "\n" "P00 WARN: diff backup cannot alter compress option to 'true', reset to value in [FULL-1]\n" "P00 WARN: diff backup cannot alter hardlink option to 'true', reset to value in [FULL-1]"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("offline incr backup to test unresumable backup"); argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--no-" CFGOPT_ONLINE); strLstAddZ(argList, "--no-" CFGOPT_COMPRESS); strLstAddZ(argList, "--" CFGOPT_CHECKSUM_PAGE); strLstAddZ(argList, "--" CFGOPT_TYPE "=" BACKUP_TYPE_INCR); harnessCfgLoad(cfgCmdBackup, argList); storagePutP(storageNewWriteP(storagePgWrite(), PG_FILE_PGVERSION_STR), BUFSTRDEF("VER")); TEST_RESULT_VOID(cmdBackup(), "backup"); TEST_RESULT_LOG( "P00 INFO: last backup label = [FULL-1], version = " PROJECT_VERSION "\n" "P00 WARN: incr backup cannot alter 'checksum-page' option to 'true', reset to 'false' from [FULL-1]\n" "P00 WARN: backup '[DIFF-1]' cannot be resumed: new backup type 'incr' does not match resumable backup type 'diff'\n" "P01 INFO: backup file {[path]}/pg1/PG_VERSION (3B, 100%) checksum c8663c2525f44b6d9c687fbceb4aafc63ed8b451\n" "P00 DETAIL: reference pg_data/global/pg_control to [FULL-1]\n" "P00 DETAIL: reference pg_data/postgresql.conf to [FULL-1]\n" "P00 INFO: incr backup size = 3B\n" "P00 INFO: new backup label = [INCR-1]"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("offline diff backup to test prior backup must be full"); argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--no-" CFGOPT_ONLINE); strLstAddZ(argList, "--no-" CFGOPT_COMPRESS); strLstAddZ(argList, "--" CFGOPT_TYPE "=" BACKUP_TYPE_DIFF); harnessCfgLoad(cfgCmdBackup, argList); sleepMSec(MSEC_PER_SEC - (timeMSec() % MSEC_PER_SEC)); storagePutP(storageNewWriteP(storagePgWrite(), PG_FILE_PGVERSION_STR), BUFSTRDEF("VR2")); TEST_RESULT_VOID(cmdBackup(), "backup"); TEST_RESULT_LOG( "P00 INFO: last backup label = [FULL-1], version = " PROJECT_VERSION "\n" "P01 INFO: backup file {[path]}/pg1/PG_VERSION (3B, 100%) checksum 6f1894088c578e4f0b9888e8e8a997d93cbbc0c5\n" "P00 DETAIL: reference pg_data/global/pg_control to [FULL-1]\n" "P00 DETAIL: reference pg_data/postgresql.conf to [FULL-1]\n" "P00 INFO: diff backup size = 3B\n" "P00 INFO: new backup label = [DIFF-2]"); } // ***************************************************************************************************************************** if (testBegin("cmdBackup() online")) { const String *pg1Path = strNewFmt("%s/pg1", testPath()); const String *repoPath = strNewFmt("%s/repo", testPath()); const String *pg2Path = strNewFmt("%s/pg2", testPath()); // Set log level to detail harnessLogLevelSet(logLevelDetail); // Replace percent complete and backup size since they can cause a lot of churn when files are added/removed hrnLogReplaceAdd(", [0-9]{1,3}%\\)", "[0-9]+%", "PCT", false); hrnLogReplaceAdd(" backup size = [0-9]+[A-Z]+", "[^ ]+$", "SIZE", false); // Replace checksums since they can differ between architectures (e.g. 32/64 bit) hrnLogReplaceAdd("\\) checksum [a-f0-9]{40}", "[a-f0-9]{40}$", "SHA1", false); // Backup start time epoch. The idea is to not have backup times (and therefore labels) ever change. Each backup added // should be separated by 100,000 seconds (1,000,000 after stanza-upgrade) but after the initial assignments this will only // be possible at the beginning and the end, so new backups added in the middle will average the start times of the prior // and next backup to get their start time. Backups added to the beginning of the test will need to subtract from the // epoch. #define BACKUP_EPOCH 1570000000 // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("online 9.5 resume uncompressed full backup"); time_t backupTimeStart = BACKUP_EPOCH; { // Create pg_control storagePutP( storageNewWriteP( storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(pg1Path)), .timeModified = backupTimeStart), pgControlTestToBuffer((PgControl){.version = PG_VERSION_95, .systemId = 1000000000000000950})); // Create stanza StringList *argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--no-" CFGOPT_ONLINE); harnessCfgLoad(cfgCmdStanzaCreate, argList); cmdStanzaCreate(); // Load options argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--" CFGOPT_TYPE "=" BACKUP_TYPE_FULL); strLstAddZ(argList, "--" CFGOPT_STOP_AUTO); strLstAddZ(argList, "--no-" CFGOPT_COMPRESS); strLstAddZ(argList, "--no-" CFGOPT_ARCHIVE_CHECK); harnessCfgLoad(cfgCmdBackup, argList); // Add files storagePutP( storageNewWriteP(storagePgWrite(), STRDEF("postgresql.conf"), .timeModified = backupTimeStart), BUFSTRDEF("CONFIGSTUFF")); storagePutP( storageNewWriteP(storagePgWrite(), PG_FILE_PGVERSION_STR, .timeModified = backupTimeStart), BUFSTRDEF(PG_VERSION_95_STR)); storagePathCreateP(storagePgWrite(), pgWalPath(PG_VERSION_95), .noParentCreate = true); // Create a backup manifest that looks like a halted backup manifest Manifest *manifestResume = manifestNewBuild(storagePg(), PG_VERSION_95, true, false, NULL, NULL); ManifestData *manifestResumeData = (ManifestData *)manifestData(manifestResume); manifestResumeData->backupType = backupTypeFull; const String *resumeLabel = backupLabelCreate(backupTypeFull, NULL, backupTimeStart); manifestBackupLabelSet(manifestResume, resumeLabel); // Copy a file to be resumed that has not changed in the repo storageCopy( storageNewReadP(storagePg(), PG_FILE_PGVERSION_STR), storageNewWriteP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/pg_data/PG_VERSION", strPtr(resumeLabel)))); strcpy( ((ManifestFile *)manifestFileFind(manifestResume, STRDEF("pg_data/PG_VERSION")))->checksumSha1, "06d06bb31b570b94d7b4325f511f853dbe771c21"); // Save the resume manifest manifestSave( manifestResume, storageWriteIo( storageNewWriteP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE INFO_COPY_EXT, strPtr(resumeLabel))))); // Run backup testBackupPqScriptP(PG_VERSION_95, backupTimeStart); TEST_RESULT_VOID(cmdBackup(), "backup"); TEST_RESULT_LOG( "P00 INFO: execute exclusive pg_start_backup(): backup begins after the next regular checkpoint completes\n" "P00 INFO: backup start archive = 0000000105D944C000000000, lsn = 5d944c0/0\n" "P00 WARN: resumable backup 20191002-070640F of same type exists -- remove invalid files and resume\n" "P01 INFO: backup file {[path]}/pg1/global/pg_control (8KB, [PCT]) checksum [SHA1]\n" "P01 INFO: backup file {[path]}/pg1/postgresql.conf (11B, [PCT]) checksum [SHA1]\n" "P01 DETAIL: checksum resumed file {[path]}/pg1/PG_VERSION (3B, [PCT]) checksum [SHA1]\n" "P00 INFO: full backup size = [SIZE]\n" "P00 INFO: execute exclusive pg_stop_backup() and wait for all WAL segments to archive\n" "P00 INFO: backup stop archive = 0000000105D944C000000000, lsn = 5d944c0/800000\n" "P00 INFO: new backup label = 20191002-070640F"); TEST_RESULT_STR_Z( testBackupValidate(storageRepo(), STRDEF(STORAGE_REPO_BACKUP "/latest")), ". {link, d=20191002-070640F}\n" "pg_data {path}\n" "pg_data/PG_VERSION {file, s=3}\n" "pg_data/global {path}\n" "pg_data/global/pg_control {file, s=8192}\n" "pg_data/pg_xlog {path}\n" "pg_data/postgresql.conf {file, s=11}\n", "compare file list"); } // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("online resumed compressed 9.5 full backup"); // Backup start time backupTimeStart = BACKUP_EPOCH + 100000; { // Load options StringList *argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--" CFGOPT_TYPE "=" BACKUP_TYPE_FULL); strLstAddZ(argList, "--" CFGOPT_STOP_AUTO); strLstAddZ(argList, "--" CFGOPT_REPO1_HARDLINK); strLstAddZ(argList, "--" CFGOPT_ARCHIVE_COPY); harnessCfgLoad(cfgCmdBackup, argList); // Create a backup manifest that looks like a halted backup manifest Manifest *manifestResume = manifestNewBuild(storagePg(), PG_VERSION_95, true, false, NULL, NULL); ManifestData *manifestResumeData = (ManifestData *)manifestData(manifestResume); manifestResumeData->backupType = backupTypeFull; manifestResumeData->backupOptionCompress = true; const String *resumeLabel = backupLabelCreate(backupTypeFull, NULL, backupTimeStart); manifestBackupLabelSet(manifestResume, resumeLabel); // File exists in cluster and repo but not in the resume manifest storagePutP( storageNewWriteP(storagePgWrite(), STRDEF("not-in-resume"), .timeModified = backupTimeStart), BUFSTRDEF("TEST")); storagePutP( storageNewWriteP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/pg_data/not-in-resume.gz", strPtr(resumeLabel))), NULL); // Remove checksum from file so it won't be resumed storagePutP( storageNewWriteP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/pg_data/global/pg_control.gz", strPtr(resumeLabel))), NULL); ((ManifestFile *)manifestFileFind(manifestResume, STRDEF("pg_data/global/pg_control")))->checksumSha1[0] = 0; // Size does not match between cluster and resume manifest storagePutP( storageNewWriteP(storagePgWrite(), STRDEF("size-mismatch"), .timeModified = backupTimeStart), BUFSTRDEF("TEST")); storagePutP( storageNewWriteP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/pg_data/size-mismatch.gz", strPtr(resumeLabel))), NULL); manifestFileAdd( manifestResume, &(ManifestFile){ .name = STRDEF("pg_data/size-mismatch"), .checksumSha1 = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", .size = 33}); // Time does not match between cluster and resume manifest storagePutP( storageNewWriteP(storagePgWrite(), STRDEF("time-mismatch"), .timeModified = backupTimeStart), BUFSTRDEF("TEST")); storagePutP( storageNewWriteP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/pg_data/time-mismatch.gz", strPtr(resumeLabel))), NULL); manifestFileAdd( manifestResume, &(ManifestFile){ .name = STRDEF("pg_data/time-mismatch"), .checksumSha1 = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", .size = 4, .timestamp = backupTimeStart - 1}); // Size is zero in cluster and resume manifest. ??? We'd like to remove this requirement after the migration. storagePutP(storageNewWriteP(storagePgWrite(), STRDEF("zero-size"), .timeModified = backupTimeStart), NULL); storagePutP( storageNewWriteP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/pg_data/zero-size.gz", strPtr(resumeLabel))), BUFSTRDEF("ZERO-SIZE")); manifestFileAdd( manifestResume, &(ManifestFile){.name = STRDEF("pg_data/zero-size"), .size = 0, .timestamp = backupTimeStart}); // Path is not in manifest storagePathCreateP(storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/pg_data/bogus_path", strPtr(resumeLabel))); // File is not in manifest storagePutP( storageNewWriteP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/pg_data/global/bogus", strPtr(resumeLabel))), NULL); // Save the resume manifest manifestSave( manifestResume, storageWriteIo( storageNewWriteP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE INFO_COPY_EXT, strPtr(resumeLabel))))); // Disable storageFeaturePath so paths will not be created before files are copied ((Storage *)storageRepoWrite())->interface.feature ^= 1 << storageFeaturePath; // Disable storageFeaturePathSync so paths will not be synced ((Storage *)storageRepoWrite())->interface.feature ^= 1 << storageFeaturePathSync; // Run backup testBackupPqScriptP(PG_VERSION_95, backupTimeStart); TEST_RESULT_VOID(cmdBackup(), "backup"); // Enable storage features ((Storage *)storageRepoWrite())->interface.feature |= 1 << storageFeaturePath; ((Storage *)storageRepoWrite())->interface.feature |= 1 << storageFeaturePathSync; TEST_RESULT_LOG( "P00 INFO: execute exclusive pg_start_backup(): backup begins after the next regular checkpoint completes\n" "P00 INFO: backup start archive = 0000000105D95D3000000000, lsn = 5d95d30/0\n" "P00 WARN: resumable backup 20191003-105320F of same type exists -- remove invalid files and resume\n" "P00 DETAIL: remove path '{[path]}/repo/backup/test1/20191003-105320F/pg_data/bogus_path' from resumed backup\n" "P00 DETAIL: remove file '{[path]}/repo/backup/test1/20191003-105320F/pg_data/global/bogus' from resumed backup" " (missing in manifest)\n" "P00 DETAIL: remove file '{[path]}/repo/backup/test1/20191003-105320F/pg_data/global/pg_control.gz' from resumed" " backup (no checksum in resumed manifest)\n" "P00 DETAIL: remove file '{[path]}/repo/backup/test1/20191003-105320F/pg_data/not-in-resume.gz' from resumed backup" " (missing in resumed manifest)\n" "P00 DETAIL: remove file '{[path]}/repo/backup/test1/20191003-105320F/pg_data/size-mismatch.gz' from resumed backup" " (mismatched size)\n" "P00 DETAIL: remove file '{[path]}/repo/backup/test1/20191003-105320F/pg_data/time-mismatch.gz' from resumed backup" " (mismatched timestamp)\n" "P00 DETAIL: remove file '{[path]}/repo/backup/test1/20191003-105320F/pg_data/zero-size.gz' from resumed backup" " (zero size)\n" "P01 INFO: backup file {[path]}/pg1/global/pg_control (8KB, [PCT]) checksum [SHA1]\n" "P01 INFO: backup file {[path]}/pg1/postgresql.conf (11B, [PCT]) checksum [SHA1]\n" "P01 INFO: backup file {[path]}/pg1/time-mismatch (4B, [PCT]) checksum [SHA1]\n" "P01 INFO: backup file {[path]}/pg1/size-mismatch (4B, [PCT]) checksum [SHA1]\n" "P01 INFO: backup file {[path]}/pg1/not-in-resume (4B, [PCT]) checksum [SHA1]\n" "P01 INFO: backup file {[path]}/pg1/PG_VERSION (3B, [PCT]) checksum [SHA1]\n" "P01 INFO: backup file {[path]}/pg1/zero-size (0B, [PCT])\n" "P00 INFO: full backup size = [SIZE]\n" "P00 INFO: execute exclusive pg_stop_backup() and wait for all WAL segments to archive\n" "P00 INFO: backup stop archive = 0000000105D95D3000000000, lsn = 5d95d30/800000\n" "P00 INFO: check archive for segment(s) 0000000105D95D3000000000:0000000105D95D3000000000\n" "P00 INFO: new backup label = 20191003-105320F"); TEST_RESULT_STR_Z( testBackupValidate(storageRepo(), STRDEF(STORAGE_REPO_BACKUP "/latest")), ". {link, d=20191003-105320F}\n" "pg_data {path}\n" "pg_data/PG_VERSION.gz {file, s=3}\n" "pg_data/global {path}\n" "pg_data/global/pg_control.gz {file, s=8192}\n" "pg_data/not-in-resume.gz {file, s=4}\n" "pg_data/pg_xlog {path}\n" "pg_data/pg_xlog/0000000105D95D3000000000.gz {file, s=16777216}\n" "pg_data/postgresql.conf.gz {file, s=11}\n" "pg_data/size-mismatch.gz {file, s=4}\n" "pg_data/time-mismatch.gz {file, s=4}\n" "pg_data/zero-size.gz {file, s=0}\n", "compare file list"); // Remove test files storageRemoveP(storagePgWrite(), STRDEF("not-in-resume"), .errorOnMissing = true); storageRemoveP(storagePgWrite(), STRDEF("size-mismatch"), .errorOnMissing = true); storageRemoveP(storagePgWrite(), STRDEF("time-mismatch"), .errorOnMissing = true); storageRemoveP(storagePgWrite(), STRDEF("zero-size"), .errorOnMissing = true); } // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("online resumed compressed 9.5 diff backup"); backupTimeStart = BACKUP_EPOCH + 200000; { StringList *argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--" CFGOPT_TYPE "=" BACKUP_TYPE_DIFF); strLstAddZ(argList, "--" CFGOPT_STOP_AUTO); strLstAddZ(argList, "--" CFGOPT_REPO1_HARDLINK); harnessCfgLoad(cfgCmdBackup, argList); // Load the previous manifest and null out the checksum-page option to be sure it gets set to false in this backup const String *manifestPriorFile = STRDEF(STORAGE_REPO_BACKUP "/latest/" BACKUP_MANIFEST_FILE); Manifest *manifestPrior = manifestNewLoad(storageReadIo(storageNewReadP(storageRepo(), manifestPriorFile))); ((ManifestData *)manifestData(manifestPrior))->backupOptionChecksumPage = NULL; manifestSave(manifestPrior, storageWriteIo(storageNewWriteP(storageRepoWrite(), manifestPriorFile))); // Create a backup manifest that looks like a halted backup manifest Manifest *manifestResume = manifestNewBuild(storagePg(), PG_VERSION_95, true, false, NULL, NULL); ManifestData *manifestResumeData = (ManifestData *)manifestData(manifestResume); manifestResumeData->backupType = backupTypeDiff; manifestResumeData->backupLabelPrior = manifestData(manifestPrior)->backupLabel; manifestResumeData->backupOptionCompress = true; const String *resumeLabel = backupLabelCreate(backupTypeDiff, manifestData(manifestPrior)->backupLabel, backupTimeStart); manifestBackupLabelSet(manifestResume, resumeLabel); // Reference in manifest storagePutP( storageNewWriteP(storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/pg_data/PG_VERSION.gz", strPtr(resumeLabel))), NULL); // Reference in resumed manifest storagePutP(storageNewWriteP(storagePgWrite(), STRDEF("resume-ref"), .timeModified = backupTimeStart), NULL); storagePutP( storageNewWriteP(storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/pg_data/resume-ref.gz", strPtr(resumeLabel))), NULL); manifestFileAdd( manifestResume, &(ManifestFile){.name = STRDEF("pg_data/resume-ref"), .size = 0, .reference = STRDEF("BOGUS")}); // Time does not match between cluster and resume manifest (but resume because time is in future so delta enabled). Note // also that the repo file is intenionally corrupt to generate a warning about corruption in the repository. storagePutP( storageNewWriteP(storagePgWrite(), STRDEF("time-mismatch2"), .timeModified = backupTimeStart + 100), BUFSTRDEF("TEST")); storagePutP( storageNewWriteP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/pg_data/time-mismatch2.gz", strPtr(resumeLabel))), NULL); manifestFileAdd( manifestResume, &(ManifestFile){ .name = STRDEF("pg_data/time-mismatch2"), .checksumSha1 = "984816fd329622876e14907634264e6f332e9fb3", .size = 4, .timestamp = backupTimeStart}); // Links are always removed on resume THROW_ON_SYS_ERROR( symlink( "..", strPtr(storagePathP(storageRepo(), strNewFmt(STORAGE_REPO_BACKUP "/%s/pg_data/link", strPtr(resumeLabel))))) == -1, FileOpenError, "unable to create symlink"); // Special files should not be in the repo TEST_SYSTEM_FMT( "mkfifo -m 666 %s", strPtr(storagePathP(storageRepo(), strNewFmt(STORAGE_REPO_BACKUP "/%s/pg_data/pipe", strPtr(resumeLabel))))); // Save the resume manifest manifestSave( manifestResume, storageWriteIo( storageNewWriteP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE INFO_COPY_EXT, strPtr(resumeLabel))))); // Run backup testBackupPqScriptP(PG_VERSION_95, backupTimeStart); TEST_RESULT_VOID(cmdBackup(), "backup"); // Check log TEST_RESULT_LOG( "P00 INFO: last backup label = 20191003-105320F, version = " PROJECT_VERSION "\n" "P00 INFO: execute exclusive pg_start_backup(): backup begins after the next regular checkpoint completes\n" "P00 INFO: backup start archive = 0000000105D9759000000000, lsn = 5d97590/0\n" "P00 WARN: file 'time-mismatch2' has timestamp in the future, enabling delta checksum\n" "P00 WARN: resumable backup 20191003-105320F_20191004-144000D of same type exists" " -- remove invalid files and resume\n" "P00 DETAIL: remove file '{[path]}/repo/backup/test1/20191003-105320F_20191004-144000D/pg_data/PG_VERSION.gz'" " from resumed backup (reference in manifest)\n" "P00 WARN: remove special file '{[path]}/repo/backup/test1/20191003-105320F_20191004-144000D/pg_data/pipe'" " from resumed backup\n" "P00 DETAIL: remove file '{[path]}/repo/backup/test1/20191003-105320F_20191004-144000D/pg_data/resume-ref.gz'" " from resumed backup (reference in resumed manifest)\n" "P01 DETAIL: match file from prior backup {[path]}/pg1/global/pg_control (8KB, [PCT]) checksum [SHA1]\n" "P01 DETAIL: match file from prior backup {[path]}/pg1/postgresql.conf (11B, [PCT]) checksum [SHA1]\n" "P00 WARN: resumed backup file pg_data/time-mismatch2 does not have expected checksum" " 984816fd329622876e14907634264e6f332e9fb3. The file will be recopied and backup will continue but this may be an" " issue unless the resumed backup path in the repository is known to be corrupted.\n" " NOTE: this does not indicate a problem with the PostgreSQL page checksums.\n" "P01 INFO: backup file {[path]}/pg1/time-mismatch2 (4B, [PCT]) checksum [SHA1]\n" "P01 DETAIL: match file from prior backup {[path]}/pg1/PG_VERSION (3B, [PCT]) checksum [SHA1]\n" "P01 INFO: backup file {[path]}/pg1/resume-ref (0B, [PCT])\n" "P00 DETAIL: hardlink pg_data/PG_VERSION to 20191003-105320F\n" "P00 DETAIL: hardlink pg_data/global/pg_control to 20191003-105320F\n" "P00 DETAIL: hardlink pg_data/postgresql.conf to 20191003-105320F\n" "P00 INFO: diff backup size = [SIZE]\n" "P00 INFO: execute exclusive pg_stop_backup() and wait for all WAL segments to archive\n" "P00 INFO: backup stop archive = 0000000105D9759000000000, lsn = 5d97590/800000\n" "P00 INFO: check archive for segment(s) 0000000105D9759000000000:0000000105D9759000000000\n" "P00 INFO: new backup label = 20191003-105320F_20191004-144000D"); // Check repo directory TEST_RESULT_STR_Z( testBackupValidate(storageRepo(), STRDEF(STORAGE_REPO_BACKUP "/latest")), ". {link, d=20191003-105320F_20191004-144000D}\n" "pg_data {path}\n" "pg_data/PG_VERSION.gz {file, s=3}\n" "pg_data/global {path}\n" "pg_data/global/pg_control.gz {file, s=8192}\n" "pg_data/pg_xlog {path}\n" "pg_data/postgresql.conf.gz {file, s=11}\n" "pg_data/resume-ref.gz {file, s=0}\n" "pg_data/time-mismatch2.gz {file, s=4}\n", "compare file list"); // Remove test files storageRemoveP(storagePgWrite(), STRDEF("resume-ref"), .errorOnMissing = true); storageRemoveP(storagePgWrite(), STRDEF("time-mismatch2"), .errorOnMissing = true); } // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("online 9.6 backup-standby full backup"); backupTimeStart = BACKUP_EPOCH + 1200000; { // Update pg_control storagePutP( storageNewWriteP( storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(pg1Path)), .timeModified = backupTimeStart), pgControlTestToBuffer((PgControl){.version = PG_VERSION_96, .systemId = 1000000000000000960})); // Update version storagePutP( storageNewWriteP(storagePgWrite(), PG_FILE_PGVERSION_STR, .timeModified = backupTimeStart), BUFSTRDEF(PG_VERSION_96_STR)); // Upgrade stanza StringList *argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--no-" CFGOPT_ONLINE); harnessCfgLoad(cfgCmdStanzaUpgrade, argList); cmdStanzaUpgrade(); // Load options argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG2_PATH "=%s", strPtr(pg2Path))); strLstAddZ(argList, "--" CFGOPT_PG2_PORT "=5433"); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--no-" CFGOPT_COMPRESS); strLstAddZ(argList, "--" CFGOPT_BACKUP_STANDBY); strLstAddZ(argList, "--" CFGOPT_START_FAST); strLstAddZ(argList, "--" CFGOPT_ARCHIVE_COPY); harnessCfgLoad(cfgCmdBackup, argList); // Create files to copy from the standby. The files will be zero-size on the primary and non-zero on the standby to test // that they were copied from the right place. storagePutP(storageNewWriteP(storagePgIdWrite(1), STRDEF(PG_PATH_BASE "/1/1"), .timeModified = backupTimeStart), NULL); storagePutP(storageNewWriteP(storagePgIdWrite(2), STRDEF(PG_PATH_BASE "/1/1")), BUFSTRDEF("DATA")); storagePutP( storageNewWriteP(storagePgIdWrite(1), STRDEF(PG_PATH_BASE "/1/2"), .timeModified = backupTimeStart), BUFSTRDEF("D")); storagePutP(storageNewWriteP(storagePgIdWrite(2), STRDEF(PG_PATH_BASE "/1/2")), BUFSTRDEF("DATA")); // Create a file on the primary that does not exist on the standby to test that the file is removed from the manifest storagePutP( storageNewWriteP(storagePgIdWrite(1), STRDEF(PG_PATH_BASE "/1/0"), .timeModified = backupTimeStart), BUFSTRDEF("DATA")); // Set log level to warn because the following test uses multiple processes so the log order will not be deterministic harnessLogLevelSet(logLevelWarn); // Run backup but error on archive check testBackupPqScriptP(PG_VERSION_96, backupTimeStart, .noWal = true, .backupStandby = true); TEST_ERROR( cmdBackup(), ArchiveTimeoutError, "WAL segment 0000000105DA69C000000000 was not archived before the 100ms timeout\n" "HINT: check the archive_command to ensure that all options are correct (especially --stanza).\n" "HINT: check the PostgreSQL server log for errors."); // Remove halted backup so there's no resume storagePathRemoveP(storageRepoWrite(), STRDEF(STORAGE_REPO_BACKUP "/20191016-042640F"), .recurse = true); // Run backup testBackupPqScriptP(PG_VERSION_96, backupTimeStart, .backupStandby = true, .walCompress = true); TEST_RESULT_VOID(cmdBackup(), "backup"); // Set log level back to detail harnessLogLevelSet(logLevelDetail); TEST_RESULT_LOG( "P00 WARN: no prior backup exists, incr backup has been changed to full"); TEST_RESULT_STR_Z( testBackupValidate(storageRepo(), STRDEF(STORAGE_REPO_BACKUP "/latest")), ". {link, d=20191016-042640F}\n" "pg_data {path}\n" "pg_data/PG_VERSION {file, s=3}\n" "pg_data/backup_label {file, s=17}\n" "pg_data/base {path}\n" "pg_data/base/1 {path}\n" "pg_data/base/1/1 {file, s=4}\n" "pg_data/base/1/2 {file, s=4}\n" "pg_data/global {path}\n" "pg_data/global/pg_control {file, s=8192}\n" "pg_data/pg_xlog {path}\n" "pg_data/pg_xlog/0000000105DA69C000000000 {file, s=16777216}\n" "pg_data/postgresql.conf {file, s=11}\n", "compare file list"); // Remove test files storagePathRemoveP(storagePgIdWrite(2), NULL, .recurse = true); storagePathRemoveP(storagePgWrite(), STRDEF("base/1"), .recurse = true); } // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("online 11 full backup with tablespaces and page checksums"); backupTimeStart = BACKUP_EPOCH + 2200000; { // Update pg_control storagePutP( storageNewWriteP( storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(pg1Path)), .timeModified = backupTimeStart), pgControlTestToBuffer( (PgControl){ .version = PG_VERSION_11, .systemId = 1000000000000001100, .pageChecksum = true, .walSegmentSize = 1024 * 1024})); // Update version storagePutP( storageNewWriteP(storagePgWrite(), PG_FILE_PGVERSION_STR, .timeModified = backupTimeStart), BUFSTRDEF(PG_VERSION_11_STR)); // Update wal path storagePathRemoveP(storagePgWrite(), pgWalPath(PG_VERSION_95)); storagePathCreateP(storagePgWrite(), pgWalPath(PG_VERSION_11), .noParentCreate = true); // Upgrade stanza StringList *argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--no-" CFGOPT_ONLINE); harnessCfgLoad(cfgCmdStanzaUpgrade, argList); cmdStanzaUpgrade(); // Load options argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--" CFGOPT_TYPE "=" BACKUP_TYPE_FULL); strLstAddZ(argList, "--" CFGOPT_REPO1_HARDLINK); strLstAddZ(argList, "--" CFGOPT_MANIFEST_SAVE_THRESHOLD "=1"); strLstAddZ(argList, "--" CFGOPT_ARCHIVE_COPY); harnessCfgLoad(cfgCmdBackup, argList); // Zeroed file which passes page checksums Buffer *relation = bufNew(PG_PAGE_SIZE_DEFAULT); memset(bufPtr(relation), 0, bufSize(relation)); bufUsedSet(relation, bufSize(relation)); *(PageHeaderData *)(bufPtr(relation) + (PG_PAGE_SIZE_DEFAULT * 0x00)) = (PageHeaderData){.pd_upper = 0}; storagePutP(storageNewWriteP(storagePgWrite(), STRDEF(PG_PATH_BASE "/1/1"), .timeModified = backupTimeStart), relation); // Zeroed file which will fail on alignment relation = bufNew(PG_PAGE_SIZE_DEFAULT + 1); memset(bufPtr(relation), 0, bufSize(relation)); bufUsedSet(relation, bufSize(relation)); *(PageHeaderData *)(bufPtr(relation) + (PG_PAGE_SIZE_DEFAULT * 0x00)) = (PageHeaderData){.pd_upper = 0}; storagePutP(storageNewWriteP(storagePgWrite(), STRDEF(PG_PATH_BASE "/1/2"), .timeModified = backupTimeStart), relation); // File with bad page checksums relation = bufNew(PG_PAGE_SIZE_DEFAULT * 4); memset(bufPtr(relation), 0, bufSize(relation)); *(PageHeaderData *)(bufPtr(relation) + (PG_PAGE_SIZE_DEFAULT * 0x00)) = (PageHeaderData){.pd_upper = 0xFF}; *(PageHeaderData *)(bufPtr(relation) + (PG_PAGE_SIZE_DEFAULT * 0x01)) = (PageHeaderData){.pd_upper = 0x00}; *(PageHeaderData *)(bufPtr(relation) + (PG_PAGE_SIZE_DEFAULT * 0x02)) = (PageHeaderData){.pd_upper = 0xFE}; *(PageHeaderData *)(bufPtr(relation) + (PG_PAGE_SIZE_DEFAULT * 0x03)) = (PageHeaderData){.pd_upper = 0xEF}; bufUsedSet(relation, bufSize(relation)); storagePutP(storageNewWriteP(storagePgWrite(), STRDEF(PG_PATH_BASE "/1/3"), .timeModified = backupTimeStart), relation); // File with bad page checksum relation = bufNew(PG_PAGE_SIZE_DEFAULT * 3); memset(bufPtr(relation), 0, bufSize(relation)); *(PageHeaderData *)(bufPtr(relation) + (PG_PAGE_SIZE_DEFAULT * 0x00)) = (PageHeaderData){.pd_upper = 0x00}; *(PageHeaderData *)(bufPtr(relation) + (PG_PAGE_SIZE_DEFAULT * 0x01)) = (PageHeaderData){.pd_upper = 0x08}; *(PageHeaderData *)(bufPtr(relation) + (PG_PAGE_SIZE_DEFAULT * 0x02)) = (PageHeaderData){.pd_upper = 0x00}; bufUsedSet(relation, bufSize(relation)); storagePutP(storageNewWriteP(storagePgWrite(), STRDEF(PG_PATH_BASE "/1/4"), .timeModified = backupTimeStart), relation); // Add a tablespace storagePathCreateP(storagePgWrite(), STRDEF(PG_PATH_PGTBLSPC)); THROW_ON_SYS_ERROR( symlink("../../pg1-tblspc/32768", strPtr(storagePathP(storagePg(), STRDEF(PG_PATH_PGTBLSPC "/32768")))) == -1, FileOpenError, "unable to create symlink"); storagePutP( storageNewWriteP( storageTest, strNewFmt("pg1-tblspc/32768/%s/1/5", strPtr(pgTablespaceId(PG_VERSION_11))), .timeModified = backupTimeStart), NULL); // Disable storageFeatureSymLink so tablespace (and latest) symlinks will not be created ((Storage *)storageRepoWrite())->interface.feature ^= 1 << storageFeatureSymLink; // Disable storageFeatureHardLink so hardlinks will not be created ((Storage *)storageRepoWrite())->interface.feature ^= 1 << storageFeatureHardLink; // Run backup testBackupPqScriptP(PG_VERSION_11, backupTimeStart, .walCompress = true, .walTotal = 3); TEST_RESULT_VOID(cmdBackup(), "backup"); // Reset storage features ((Storage *)storageRepoWrite())->interface.feature |= 1 << storageFeatureSymLink; ((Storage *)storageRepoWrite())->interface.feature |= 1 << storageFeatureHardLink; TEST_RESULT_LOG( "P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the next regular checkpoint completes\n" "P00 INFO: backup start archive = 0000000105DB5DE000000000, lsn = 5db5de0/0\n" "P01 INFO: backup file {[path]}/pg1/base/1/3 (32KB, [PCT]) checksum [SHA1]\n" "P00 WARN: invalid page checksums found in file {[path]}/pg1/base/1/3 at pages 0, 2-3\n" "P01 INFO: backup file {[path]}/pg1/base/1/4 (24KB, [PCT]) checksum [SHA1]\n" "P00 WARN: invalid page checksum found in file {[path]}/pg1/base/1/4 at page 1\n" "P01 INFO: backup file {[path]}/pg1/base/1/2 (8KB, [PCT]) checksum [SHA1]\n" "P00 WARN: page misalignment in file {[path]}/pg1/base/1/2: file size 8193 is not divisible by page size 8192\n" "P01 INFO: backup file {[path]}/pg1/global/pg_control (8KB, [PCT]) checksum [SHA1]\n" "P01 INFO: backup file {[path]}/pg1/base/1/1 (8KB, [PCT]) checksum [SHA1]\n" "P01 INFO: backup file {[path]}/pg1/postgresql.conf (11B, [PCT]) checksum [SHA1]\n" "P01 INFO: backup file {[path]}/pg1/PG_VERSION (2B, [PCT]) checksum [SHA1]\n" "P01 INFO: backup file {[path]}/pg1/pg_tblspc/32768/PG_11_201809051/1/5 (0B, [PCT])\n" "P00 INFO: full backup size = [SIZE]\n" "P00 INFO: execute non-exclusive pg_stop_backup() and wait for all WAL segments to archive\n" "P00 INFO: backup stop archive = 0000000105DB5DE000000002, lsn = 5db5de0/280000\n" "P00 DETAIL: wrote 'backup_label' file returned from pg_stop_backup()\n" "P00 INFO: check archive for segment(s) 0000000105DB5DE000000000:0000000105DB5DE000000002\n" "P00 INFO: new backup label = 20191027-181320F"); TEST_RESULT_STR_Z( testBackupValidate(storageRepo(), STRDEF(STORAGE_REPO_BACKUP "/20191027-181320F")), "pg_data {path}\n" "pg_data/PG_VERSION.gz {file, s=2}\n" "pg_data/backup_label.gz {file, s=17}\n" "pg_data/base {path}\n" "pg_data/base/1 {path}\n" "pg_data/base/1/1.gz {file, s=8192}\n" "pg_data/base/1/2.gz {file, s=8193}\n" "pg_data/base/1/3.gz {file, s=32768}\n" "pg_data/base/1/4.gz {file, s=24576}\n" "pg_data/global {path}\n" "pg_data/global/pg_control.gz {file, s=8192}\n" "pg_data/pg_tblspc {path}\n" "pg_data/pg_wal {path}\n" "pg_data/pg_wal/0000000105DB5DE000000000.gz {file, s=1048576}\n" "pg_data/pg_wal/0000000105DB5DE000000001.gz {file, s=1048576}\n" "pg_data/pg_wal/0000000105DB5DE000000002.gz {file, s=1048576}\n" "pg_data/postgresql.conf.gz {file, s=11}\n" "pg_tblspc {path}\n" "pg_tblspc/32768 {path}\n" "pg_tblspc/32768/PG_11_201809051 {path}\n" "pg_tblspc/32768/PG_11_201809051/1 {path}\n" "pg_tblspc/32768/PG_11_201809051/1/5.gz {file, s=0}\n", "compare file list"); // Remove test files storagePathRemoveP(storagePgWrite(), STRDEF("base/1"), .recurse = true); } // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error when pg_control not present"); backupTimeStart = BACKUP_EPOCH + 2300000; { // Load options StringList *argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--" CFGOPT_TYPE "=" BACKUP_TYPE_INCR); strLstAddZ(argList, "--" CFGOPT_REPO1_HARDLINK); harnessCfgLoad(cfgCmdBackup, argList); // Run backup testBackupPqScriptP(PG_VERSION_11, backupTimeStart, .errorAfterStart = true); TEST_ERROR( cmdBackup(), FileMissingError, "pg_control must be present in all online backups\n" "HINT: is something wrong with the clock or filesystem timestamps?"); // Check log TEST_RESULT_LOG( "P00 INFO: last backup label = 20191027-181320F, version = " PROJECT_VERSION "\n" "P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the next regular checkpoint completes\n" "P00 INFO: backup start archive = 0000000105DB764000000000, lsn = 5db7640/0"); // Remove partial backup so it won't be resumed (since it errored before any checksums were written) storagePathRemoveP( storageRepoWrite(), STRDEF(STORAGE_REPO_BACKUP "/20191027-181320F_20191028-220000I"), .recurse = true); } // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("online 11 incr backup with tablespaces"); backupTimeStart = BACKUP_EPOCH + 2400000; { // Load options StringList *argList = strLstNew(); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAdd(argList, strNewFmt("--" CFGOPT_REPO1_PATH "=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path))); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, "--" CFGOPT_TYPE "=" BACKUP_TYPE_INCR); strLstAddZ(argList, "--" CFGOPT_DELTA); strLstAddZ(argList, "--" CFGOPT_REPO1_HARDLINK); harnessCfgLoad(cfgCmdBackup, argList); // Update pg_control timestamp THROW_ON_SYS_ERROR( utime( strPtr(storagePathP(storagePg(), STRDEF("global/pg_control"))), &(struct utimbuf){.actime = backupTimeStart, .modtime = backupTimeStart}) != 0, FileWriteError, "unable to set time"); // Run backup. Make sure that the timeline selected converts to hexdecimal that can't be interpreted as decimal. testBackupPqScriptP(PG_VERSION_11, backupTimeStart, .timeline = 0x2C); TEST_RESULT_VOID(cmdBackup(), "backup"); TEST_RESULT_LOG( "P00 INFO: last backup label = 20191027-181320F, version = " PROJECT_VERSION "\n" "P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the next regular checkpoint completes\n" "P00 INFO: backup start archive = 0000002C05DB8EB000000000, lsn = 5db8eb0/0\n" "P00 WARN: a timeline switch has occurred since the 20191027-181320F backup, enabling delta checksum\n" "P01 DETAIL: match file from prior backup {[path]}/pg1/global/pg_control (8KB, [PCT]) checksum [SHA1]\n" "P01 DETAIL: match file from prior backup {[path]}/pg1/postgresql.conf (11B, [PCT]) checksum [SHA1]\n" "P01 DETAIL: match file from prior backup {[path]}/pg1/PG_VERSION (2B, [PCT]) checksum [SHA1]\n" "P00 DETAIL: hardlink pg_data/PG_VERSION to 20191027-181320F\n" "P00 DETAIL: hardlink pg_data/global/pg_control to 20191027-181320F\n" "P00 DETAIL: hardlink pg_data/postgresql.conf to 20191027-181320F\n" "P00 DETAIL: hardlink pg_tblspc/32768/PG_11_201809051/1/5 to 20191027-181320F\n" "P00 INFO: incr backup size = [SIZE]\n" "P00 INFO: execute non-exclusive pg_stop_backup() and wait for all WAL segments to archive\n" "P00 INFO: backup stop archive = 0000002C05DB8EB000000000, lsn = 5db8eb0/80000\n" "P00 DETAIL: wrote 'backup_label' file returned from pg_stop_backup()\n" "P00 INFO: check archive for segment(s) 0000002C05DB8EB000000000:0000002C05DB8EB000000000\n" "P00 INFO: new backup label = 20191027-181320F_20191030-014640I"); TEST_RESULT_STR_Z( testBackupValidate(storageRepo(), STRDEF(STORAGE_REPO_BACKUP "/latest")), ". {link, d=20191027-181320F_20191030-014640I}\n" "pg_data {path}\n" "pg_data/PG_VERSION.gz {file, s=2}\n" "pg_data/backup_label.gz {file, s=17}\n" "pg_data/base {path}\n" "pg_data/global {path}\n" "pg_data/global/pg_control.gz {file, s=8192}\n" "pg_data/pg_tblspc {path}\n" "pg_data/pg_tblspc/32768 {link, d=../../pg_tblspc/32768}\n" "pg_data/pg_wal {path}\n" "pg_data/postgresql.conf.gz {file, s=11}\n" "pg_tblspc {path}\n" "pg_tblspc/32768 {path}\n" "pg_tblspc/32768/PG_11_201809051 {path}\n" "pg_tblspc/32768/PG_11_201809051/1 {path}\n" "pg_tblspc/32768/PG_11_201809051/1/5.gz {file, s=0}\n", "compare file list"); // Remove test files storagePathRemoveP(storagePgWrite(), STRDEF("base/1"), .recurse = true); } } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/command/checkTest.c000066400000000000000000000645121362531507100237510ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Check Command ***********************************************************************************************************************************/ #include "postgres/version.h" #include "storage/helper.h" #include "storage/posix/storage.h" #include "storage/storage.intern.h" #include "command/stanza/create.h" #include "common/harnessConfig.h" #include "common/harnessInfo.h" #include "common/harnessPq.h" #include "info/infoArchive.h" #include "info/infoBackup.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // PQfinish() is strictly checked harnessPqScriptStrictSet(true); Storage *storageTest = storagePosixNew( strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); String *pg1 = strNew("pg1"); String *pg1Path = strNewFmt("%s/%s", testPath(), strPtr(pg1)); String *pg1PathOpt = strNewFmt("--pg1-path=%s", strPtr(pg1Path)); String *pg8 = strNew("pg8"); String *pg8Path = strNewFmt("%s/%s", testPath(), strPtr(pg8)); String *pg8PathOpt = strNewFmt("--pg8-path=%s", strPtr(pg8Path)); String *stanza = strNew("test1"); String *stanzaOpt = strNewFmt("--stanza=%s", strPtr(stanza)); StringList *argList = strLstNew(); // ***************************************************************************************************************************** if (testBegin("cmdCheck()")) { // Load Parameters argList = strLstNew(); strLstAdd(argList, stanzaOpt); strLstAdd(argList, pg1PathOpt); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAddZ(argList, "--archive-timeout=.5"); harnessCfgLoad(cfgCmdCheck, argList); // Set up harness to expect a failure to connect to the database harnessPqScriptSet((HarnessPq []) { {.function = HRNPQ_CONNECTDB, .param = "[\"dbname='postgres' port=5432\"]"}, {.function = HRNPQ_STATUS, .resultInt = CONNECTION_BAD}, {.function = HRNPQ_ERRORMESSAGE, .resultZ = "error"}, {.function = HRNPQ_FINISH}, {.function = NULL} }); TEST_ERROR_FMT(cmdCheck(), ConfigError, "no database found\nHINT: check indexed pg-path/pg-host configurations"); harnessLogResult( "P00 WARN: unable to check pg-1: [DbConnectError] unable to connect to 'dbname='postgres' port=5432': error"); // Standby only, repo local // ------------------------------------------------------------------------------------------------------------------------- harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_92(1, "dbname='postgres' port=5432", strPtr(pg1Path), true, NULL, NULL), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); TEST_ERROR(cmdCheck(), ConfigError, "primary database not found\nHINT: check indexed pg-path/pg-host configurations"); // Standby only, repo remote but more than one pg-path configured // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, stanzaOpt); strLstAdd(argList, pg1PathOpt); strLstAddZ(argList, "--pg8-path=/path/to/standby2"); strLstAddZ(argList, "--pg8-port=5433"); strLstAddZ(argList, "--repo1-host=repo.domain.com"); strLstAddZ(argList, "--archive-timeout=.5"); harnessCfgLoad(cfgCmdCheck, argList); // Two standbys found but no primary harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_92(1, "dbname='postgres' port=5432", "/pgdata", true, NULL, NULL), HRNPQ_MACRO_OPEN_92(8, "dbname='postgres' port=5433", "/pgdata", true, NULL, NULL), HRNPQ_MACRO_CLOSE(8), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); TEST_ERROR(cmdCheck(), ConfigError, "primary database not found\nHINT: check indexed pg-path/pg-host configurations"); // Standby only, repo remote but only one pg-path configured // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, stanzaOpt); strLstAdd(argList, pg1PathOpt); strLstAddZ(argList, "--repo1-host=repo.domain.com"); strLstAddZ(argList, "--archive-timeout=.5"); harnessCfgLoad(cfgCmdCheck, argList); harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_92(1, "dbname='postgres' port=5432", "/pgdata", true, NULL, NULL), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); // Only confirming we get passed the check for isRepoLocal || more than one pg-path configured TEST_ERROR_FMT( cmdCheck(), FileMissingError, "unable to open missing file '%s/global/pg_control' for read", strPtr(pg1Path)); // backup-standby set without standby // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, stanzaOpt); strLstAdd(argList, pg1PathOpt); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAddZ(argList, "--archive-timeout=.5"); strLstAddZ(argList, "--backup-standby"); harnessCfgLoad(cfgCmdCheck, argList); // Primary database connection ok harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_92(1, "dbname='postgres' port=5432", strPtr(pg1Path), false, NULL, NULL), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); TEST_ERROR_FMT( cmdCheck(), FileMissingError, "unable to open missing file '%s' for read", strPtr(strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(pg1Path)))); harnessLogResult( strPtr(strNewFmt("P00 WARN: option '%s' is enabled but standby is not properly configured", cfgOptionName(cfgOptBackupStandby)))); // Standby and primary database // ------------------------------------------------------------------------------------------------------------------------- // Create pg_control for standby storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(pg1))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_92, .systemId = 6569239123849665679})); argList = strLstNew(); strLstAdd(argList, stanzaOpt); strLstAdd(argList, pg1PathOpt); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAddZ(argList, "--archive-timeout=.5"); strLstAdd(argList, pg8PathOpt); strLstAddZ(argList, "--pg8-port=5433"); harnessCfgLoad(cfgCmdCheck, argList); // Standby database path doesn't match pg_control harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_92(1, "dbname='postgres' port=5432", testPath(), true, NULL, NULL), HRNPQ_MACRO_OPEN_92(8, "dbname='postgres' port=5433", strPtr(pg8Path), false, NULL, NULL), HRNPQ_MACRO_CLOSE(8), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); TEST_ERROR_FMT( cmdCheck(), DbMismatchError, "version '%s' and path '%s' queried from cluster do not match version '%s' and '%s'" " read from '%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL "'\n" "HINT: the pg1-path and pg1-port settings likely reference different clusters.", strPtr(pgVersionToStr(PG_VERSION_92)), testPath(), strPtr(pgVersionToStr(PG_VERSION_92)), strPtr(pg1Path), strPtr(pg1Path)); // Standby - Stanza has not yet been created // ------------------------------------------------------------------------------------------------------------------------- harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_92(1, "dbname='postgres' port=5432", strPtr(pg1Path), true, NULL, NULL), HRNPQ_MACRO_OPEN_92(8, "dbname='postgres' port=5433", strPtr(pg8Path), false, NULL, NULL), HRNPQ_MACRO_CLOSE(8), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); TEST_ERROR_FMT( cmdCheck(), FileMissingError, "unable to load info file '%s/repo/archive/test1/archive.info' or '%s/repo/archive/test1/archive.info.copy':\n" "FileMissingError: " STORAGE_ERROR_READ_MISSING "\n" "FileMissingError: " STORAGE_ERROR_READ_MISSING "\n" "HINT: archive.info cannot be opened but is required to push/get WAL segments.\n" "HINT: is archive_command configured correctly in postgresql.conf?\n" "HINT: has a stanza-create been performed?\n" "HINT: use --no-archive-check to disable archive checks during backup if you have an alternate archiving scheme.", testPath(), testPath(), strPtr(strNewFmt("%s/repo/archive/test1/archive.info", testPath())), strPtr(strNewFmt("%s/repo/archive/test1/archive.info.copy", testPath()))); // Standby - Stanza created // ------------------------------------------------------------------------------------------------------------------------- // Create pg_control for primary storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(pg8))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_92, .systemId = 6569239123849665679})); // Create info files storagePutP( storageNewWriteP(storageRepoWrite(), INFO_ARCHIVE_PATH_FILE_STR), harnessInfoChecksum( strNew( "[db]\n" "db-id=1\n" "db-system-id=6569239123849665679\n" "db-version=\"9.2\"\n" "\n" "[db:history]\n" "1={\"db-id\":6569239123849665679,\"db-version\":\"9.2\"}\n"))); storagePutP( storageNewWriteP(storageRepoWrite(), INFO_BACKUP_PATH_FILE_STR), harnessInfoChecksum( strNew( "[db]\n" "db-catalog-version=201608131\n" "db-control-version=920\n" "db-id=1\n" "db-system-id=6569239123849665679\n" "db-version=\"9.2\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201608131,\"db-control-version\":920,\"db-system-id\":6569239123849665679," "\"db-version\":\"9.2\"}\n"))); harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_92(1, "dbname='postgres' port=5432", strPtr(pg1Path), true, NULL, NULL), HRNPQ_MACRO_OPEN_92(8, "dbname='postgres' port=5433", strPtr(pg8Path), false, "off", NULL), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_CLOSE(8), HRNPQ_MACRO_DONE() }); // Error on primary but standby check ok TEST_ERROR_FMT(cmdCheck(), ArchiveDisabledError, "archive_mode must be enabled"); harnessLogResult("P00 INFO: switch wal not performed because this is a standby"); // Single primary // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, stanzaOpt); strLstAdd(argList, pg1PathOpt); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAddZ(argList, "--archive-timeout=.5"); harnessCfgLoad(cfgCmdCheck, argList); // Error when WAL segment not found harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_92(1, "dbname='postgres' port=5432", strPtr(pg1Path), false, NULL, NULL), HRNPQ_MACRO_CREATE_RESTORE_POINT(1, "1/1"), HRNPQ_MACRO_WAL_SWITCH(1, "xlog", "000000010000000100000001"), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); TEST_ERROR( cmdCheck(), ArchiveTimeoutError, "WAL segment 000000010000000100000001 was not archived before the 500ms timeout\n" "HINT: check the archive_command to ensure that all options are correct (especially --stanza).\n" "HINT: check the PostgreSQL server log for errors."); // Create WAL segment Buffer *buffer = bufNew(16 * 1024 * 1024); memset(bufPtr(buffer), 0, bufSize(buffer)); bufUsedSet(buffer, bufSize(buffer)); // WAL segment is found harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_92(1, "dbname='postgres' port=5432", strPtr(pg1Path), false, NULL, NULL), HRNPQ_MACRO_CREATE_RESTORE_POINT(1, "1/1"), HRNPQ_MACRO_WAL_SWITCH(1, "xlog", "000000010000000100000001"), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); storagePutP( storageNewWriteP( storageRepoWrite(), strNew(STORAGE_REPO_ARCHIVE "/9.2-1/000000010000000100000001-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")), buffer); TEST_RESULT_VOID(cmdCheck(), "check primary, WAL archived"); harnessLogResult( strPtr( strNewFmt( "P00 INFO: WAL segment 000000010000000100000001 successfully archived to '%s/repo/archive/test1/9.2-1/" "0000000100000001/000000010000000100000001-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'", testPath()))); // Primary == NULL (for test coverage) // ------------------------------------------------------------------------------------------------------------------------- DbGetResult dbGroup = {0}; TEST_RESULT_VOID(checkPrimary(dbGroup), "primary == NULL"); } // ***************************************************************************************************************************** if (testBegin("checkManifest()")) { argList = strLstNew(); strLstAdd(argList, stanzaOpt); strLstAdd(argList, pg1PathOpt); strLstAddZ(argList, "--pg5-host=localhost"); strLstAddZ(argList, "--pg5-path=/path/to/pg5"); strLstAdd(argList, strNewFmt("--pg5-host-user=%s", testUser())); harnessCfgLoad(cfgCmdCheck, argList); // Placeholder test for manifest TEST_ERROR( checkManifest(), UnknownError, "remote-0 process on 'localhost' terminated unexpectedly [127]: bash: pgbackrest: command not found"); } // ***************************************************************************************************************************** if (testBegin("checkDbConfig(), checkArchiveCommand()")) { // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR_FMT( checkArchiveCommand(NULL), ArchiveCommandInvalidError, "archive_command '[null]' must contain " PROJECT_BIN); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR_FMT( checkArchiveCommand(strNew("")), ArchiveCommandInvalidError, "archive_command '' must contain " PROJECT_BIN); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR_FMT( checkArchiveCommand(strNew("backrest")), ArchiveCommandInvalidError, "archive_command 'backrest' must contain " PROJECT_BIN); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(checkArchiveCommand(strNew("pgbackrest --stanza=demo archive-push %p")), true, "archive_command valid"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, stanzaOpt); strLstAdd(argList, pg1PathOpt); strLstAdd(argList, pg8PathOpt); strLstAddZ(argList, "--pg8-port=5433"); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); harnessCfgLoad(cfgCmdCheck, argList); DbGetResult db = {0}; harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_92(1, "dbname='postgres' port=5432", strPtr(pg1Path), false, NULL, NULL), HRNPQ_MACRO_OPEN_92(8, "dbname='postgres' port=5433", "/badpath", true, NULL, NULL), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_CLOSE(8), HRNPQ_MACRO_DONE() }); TEST_ASSIGN(db, dbGet(false, false, false), "get primary and standby"); TEST_RESULT_VOID(checkDbConfig(PG_VERSION_92, db.primaryId, db.primary, false), "valid db config"); // Version mismatch // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR_FMT( checkDbConfig(PG_VERSION_94, db.primaryId, db.primary, false), DbMismatchError, "version '%s' and path '%s' queried from cluster do not match version '%s' and '%s' read from '%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL "'\n" "HINT: the pg1-path and pg1-port settings likely reference different clusters.", strPtr(pgVersionToStr(PG_VERSION_92)), strPtr(pg1Path), strPtr(pgVersionToStr(PG_VERSION_94)), strPtr(pg1Path), strPtr(pg1Path)); // Path mismatch // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR_FMT( checkDbConfig(PG_VERSION_92, db.standbyId, db.standby, true), DbMismatchError, "version '%s' and path '%s' queried from cluster do not match version '%s' and '%s' read from '%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL "'\n" "HINT: the pg8-path and pg8-port settings likely reference different clusters.", strPtr(pgVersionToStr(PG_VERSION_92)), strPtr(dbPgDataPath(db.standby)), strPtr(pgVersionToStr(PG_VERSION_92)), strPtr(pg8Path), strPtr(pg8Path)); // archive-check=false // ------------------------------------------------------------------------------------------------------------------------- strLstAddZ(argList, "--no-archive-check"); harnessCfgLoad(cfgCmdCheck, argList); TEST_RESULT_VOID(checkDbConfig(PG_VERSION_92, db.primaryId, db.primary, false), "valid db config --no-archive-check"); // archive-check not valid for command // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, stanzaOpt); strLstAdd(argList, pg1PathOpt); strLstAdd(argList, pg8PathOpt); strLstAddZ(argList, "--pg8-port=5433"); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); harnessCfgLoad(cfgCmdStanzaCreate, argList); TEST_RESULT_VOID( checkDbConfig(PG_VERSION_92, db.primaryId, db.primary, false), "valid db config, archive-check not valid for command"); TEST_RESULT_VOID(dbFree(db.primary), "free primary"); TEST_RESULT_VOID(dbFree(db.standby), "free standby"); // archive_mode=always not supported // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, stanzaOpt); strLstAdd(argList, pg1PathOpt); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); harnessCfgLoad(cfgCmdCheck, argList); harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_92(1, "dbname='postgres' port=5432", strPtr(pg1Path), false, "always", NULL), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); TEST_ASSIGN(db, dbGet(true, true, false), "get primary"); TEST_ERROR_FMT( checkDbConfig(PG_VERSION_92, db.primaryId, db.primary, false), FeatureNotSupportedError, "archive_mode=always not supported"); TEST_RESULT_VOID(dbFree(db.primary), "free primary"); } // ***************************************************************************************************************************** if (testBegin("checkStanzaInfo(), checkStanzaInfoPg()")) { InfoArchive *archiveInfo = infoArchiveNew(PG_VERSION_96, 6569239123849665679, NULL); InfoPgData archivePg = infoPgData(infoArchivePg(archiveInfo), infoPgDataCurrentId(infoArchivePg(archiveInfo))); InfoBackup *backupInfo = infoBackupNew(PG_VERSION_96, 6569239123849665679, NULL); InfoPgData backupPg = infoPgData(infoBackupPg(backupInfo), infoPgDataCurrentId(infoBackupPg(backupInfo))); TEST_RESULT_VOID(checkStanzaInfo(&archivePg, &backupPg), "stanza info files match"); // Create a corrupted backup file - system id // ------------------------------------------------------------------------------------------------------------------------- backupInfo = infoBackupNew(PG_VERSION_96, 6569239123849665999, NULL); backupPg = infoPgData(infoBackupPg(backupInfo), infoPgDataCurrentId(infoBackupPg(backupInfo))); TEST_ERROR_FMT( checkStanzaInfo(&archivePg, &backupPg), FileInvalidError, "backup info file and archive info file do not match\n" "archive: id = 1, version = 9.6, system-id = 6569239123849665679\n" "backup : id = 1, version = 9.6, system-id = 6569239123849665999\n" "HINT: this may be a symptom of repository corruption!"); // Create a corrupted backup file - system id and version // ------------------------------------------------------------------------------------------------------------------------- backupInfo = infoBackupNew(PG_VERSION_95, 6569239123849665999, NULL); backupPg = infoPgData(infoBackupPg(backupInfo), infoPgDataCurrentId(infoBackupPg(backupInfo))); TEST_ERROR_FMT( checkStanzaInfo(&archivePg, &backupPg), FileInvalidError, "backup info file and archive info file do not match\n" "archive: id = 1, version = 9.6, system-id = 6569239123849665679\n" "backup : id = 1, version = 9.5, system-id = 6569239123849665999\n" "HINT: this may be a symptom of repository corruption!"); // Create a corrupted backup file - version // ------------------------------------------------------------------------------------------------------------------------- backupInfo = infoBackupNew(PG_VERSION_95, 6569239123849665679, NULL); backupPg = infoPgData(infoBackupPg(backupInfo), infoPgDataCurrentId(infoBackupPg(backupInfo))); TEST_ERROR_FMT( checkStanzaInfo(&archivePg, &backupPg), FileInvalidError, "backup info file and archive info file do not match\n" "archive: id = 1, version = 9.6, system-id = 6569239123849665679\n" "backup : id = 1, version = 9.5, system-id = 6569239123849665679\n" "HINT: this may be a symptom of repository corruption!"); // Create a corrupted backup file - db id // ------------------------------------------------------------------------------------------------------------------------- infoBackupPgSet(backupInfo, PG_VERSION_96, 6569239123849665679); backupPg = infoPgData(infoBackupPg(backupInfo), infoPgDataCurrentId(infoBackupPg(backupInfo))); TEST_ERROR_FMT( checkStanzaInfo(&archivePg, &backupPg), FileInvalidError, "backup info file and archive info file do not match\n" "archive: id = 1, version = 9.6, system-id = 6569239123849665679\n" "backup : id = 2, version = 9.6, system-id = 6569239123849665679\n" "HINT: this may be a symptom of repository corruption!"); // checkStanzaInfoPg // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "--no-online"); strLstAdd(argList, stanzaOpt); strLstAdd(argList, strNewFmt("--pg1-path=%s/%s", testPath(), strPtr(stanza))); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAddZ(argList, "--repo1-cipher-type=aes-256-cbc"); setenv("PGBACKREST_REPO1_CIPHER_PASS", "12345678", true); harnessCfgLoad(cfgCmdStanzaCreate, argList); // Create pg_control storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(stanza))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_96, .systemId = 6569239123849665679})); // Create info files TEST_RESULT_VOID(cmdStanzaCreate(), "stanza create - encryption"); // Version mismatch TEST_ERROR_FMT( checkStanzaInfoPg(storageRepo(), PG_VERSION_94, 6569239123849665679, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)), FileInvalidError, "backup and archive info files exist but do not match the database\n" "HINT: is this the correct stanza?\n" "HINT: did an error occur during stanza-upgrade?"); // SystemId mismatch TEST_ERROR_FMT( checkStanzaInfoPg(storageRepo(), PG_VERSION_96, 6569239123849665699, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cfgOptionStr(cfgOptRepoCipherPass)), FileInvalidError, "backup and archive info files exist but do not match the database\n" "HINT: is this the correct stanza?\n" "HINT: did an error occur during stanza-upgrade?"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/command/commandTest.c000066400000000000000000000152211362531507100243030ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Common Command Routines ***********************************************************************************************************************************/ #include #include #include "storage/storage.h" #include "version.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("cmdBegin() and cmdEnd()")) { cmdInit(); // ------------------------------------------------------------------------------------------------------------------------- cfgInit(); cfgCommandSet(cfgCmdArchiveGet, cfgCmdRoleDefault); cfgOptionValidSet(cfgOptCompress, true); cfgOptionSet(cfgOptCompress, cfgSourceParam, varNewBool(true)); StringList *commandParamList = strLstNew(); strLstAddZ(commandParamList, "param1"); cfgCommandParamSet(commandParamList); harnessLogLevelSet(logLevelInfo); TEST_RESULT_VOID(cmdBegin(true), "command begin with command parameter"); harnessLogResult( "P00 INFO: archive-get command begin " PROJECT_VERSION ": [param1] --compress"); strLstAddZ(commandParamList, "param 2"); cfgCommandParamSet(commandParamList); TEST_RESULT_VOID(cmdBegin(true), "command begin with command parameters"); harnessLogResult( "P00 INFO: archive-get command begin " PROJECT_VERSION ": [param1, \"param 2\"] --compress"); cfgInit(); cfgCommandSet(cfgCmdArchiveGet, cfgCmdRoleDefault); cfgOptionValidSet(cfgOptConfig, true); cfgOptionNegateSet(cfgOptConfig, true); cfgOptionSet(cfgOptConfig, cfgSourceParam, NULL); cfgOptionValidSet(cfgOptPgHost, true); cfgOptionSet(cfgOptPgHost, cfgSourceConfig, NULL); cfgOptionValidSet(cfgOptRepoHost, true); cfgOptionResetSet(cfgOptRepoHost, true); cfgOptionValidSet(cfgOptRepoPath, true); cfgOptionSet(cfgOptRepoPath, cfgSourceConfig, varNewStr(strNew("/path/to the/repo"))); cfgOptionValidSet(cfgOptRepoS3Key, true); cfgOptionSet(cfgOptRepoS3Key, cfgSourceConfig, varNewStr(strNew("SECRET-STUFF"))); cfgOptionValidSet(cfgOptCompress, true); cfgOptionValidSet(cfgOptDbInclude, true); StringList *list = strLstNew(); strLstAddZ(list, "db1"); strLstAddZ(list, "db2"); cfgOptionSet(cfgOptDbInclude, cfgSourceParam, varNewVarLst(varLstNewStrLst(list))); cfgOptionValidSet(cfgOptRecoveryOption, true); Variant *recoveryVar = varNewKv(kvNew()); KeyValue *recoveryKv = varKv(recoveryVar); kvPut(recoveryKv, varNewStr(strNew("standby_mode")), varNewStr(strNew("on"))); kvPut(recoveryKv, varNewStr(strNew("primary_conn_info")), varNewStr(strNew("blah"))); cfgOptionSet(cfgOptRecoveryOption, cfgSourceParam, recoveryVar); cfgCommandSet(cfgCmdRestore, cfgCmdRoleDefault); TEST_RESULT_VOID(cmdBegin(true), "command begin with option logging"); harnessLogResult( "P00 INFO: restore command begin " PROJECT_VERSION ": --no-config --db-include=db1 --db-include=db2" " --recovery-option=standby_mode=on --recovery-option=primary_conn_info=blah --reset-repo1-host" " --repo1-path=\"/path/to the/repo\" --repo1-s3-key="); cfgCommandSet(cfgCmdArchiveGet, cfgCmdRoleDefault); TEST_RESULT_VOID(cmdBegin(true), "command begin with limited option logging"); harnessLogResult( "P00 INFO: archive-get command begin " PROJECT_VERSION ": --no-config --reset-repo1-host" " --repo1-path=\"/path/to the/repo\" --repo1-s3-key="); TEST_RESULT_VOID(cmdBegin(false), "command begin no option logging"); harnessLogResult( "P00 INFO: archive-get command begin"); // Nothing should be logged for command begin when the log level is too low // ------------------------------------------------------------------------------------------------------------------------- harnessLogLevelSet(logLevelWarn); TEST_RESULT_VOID(cmdBegin(true), "command begin no logging"); // Nothing should be logged for command end when the log level is too low // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(cmdEnd(0, NULL), "command end no logging"); harnessLogLevelReset(); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(cmdEnd(25, strNew("aborted with exception [025]")), "command end with error"); harnessLogResult("P00 INFO: archive-get command end: aborted with exception [025]"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(cmdEnd(0, NULL), "command end with success"); harnessLogResult("P00 INFO: archive-get command end: completed successfully"); // Make sure time output is covered but don't do expect testing since the output is variable // ------------------------------------------------------------------------------------------------------------------------- cfgOptionValidSet(cfgOptLogTimestamp, true); cfgOptionSet(cfgOptLogTimestamp, cfgSourceParam, varNewBool(false)); TEST_RESULT_VOID(cmdEnd(0, NULL), "command end with success"); harnessLogResult("P00 INFO: archive-get command end: completed successfully"); cfgOptionSet(cfgOptLogTimestamp, cfgSourceParam, varNewBool(true)); tlsClientNew(strNew("BOGUS"), 443, 1000, true, NULL, NULL); httpClientNew(strNew("BOGUS"), 443, 1000, true, NULL, NULL); TEST_RESULT_VOID(cmdEnd(0, NULL), "command end with success"); hrnLogReplaceAdd("\\([0-9]+ms\\)", "[0-9]+", "TIME", false); TEST_RESULT_LOG( "P00 INFO: http statistics: objects 1, sessions 0, requests 0, retries 0, closes 0\n" "P00 INFO: archive-get command end: completed successfully ([TIME]ms)"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/command/controlTest.c000066400000000000000000000456271362531507100243620ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Command Control ***********************************************************************************************************************************/ #include "common/harnessConfig.h" #include "common/harnessFork.h" #include "common/io/handleRead.h" #include "common/io/handleWrite.h" #include "storage/posix/storage.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // Create default storage object for testing Storage *storageData = storagePosixNew( strNew(testDataPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); // ***************************************************************************************************************************** if (testBegin("lockStopFileName()")) { // Load configuration so lock path is set StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=db"); harnessCfgLoad(cfgCmdArchiveGet, argList); TEST_RESULT_STR_Z( lockStopFileName(NULL), hrnReplaceKey("{[path-data]}/lock/all" STOP_FILE_EXT), "stop file for all stanzas"); TEST_RESULT_STR_Z( lockStopFileName(strNew("db")), hrnReplaceKey("{[path-data]}/lock/db" STOP_FILE_EXT), "stop file for on stanza"); } // ***************************************************************************************************************************** if (testBegin("lockStopTest(), cmdStart()")) { StringList *argList = strLstNew(); harnessCfgLoad(cfgCmdStart, argList); TEST_RESULT_VOID(lockStopTest(), "no stop files without stanza"); TEST_RESULT_VOID(cmdStart(), " cmdStart - no stanza, no stop files"); harnessLogResult("P00 WARN: stop file does not exist"); TEST_RESULT_VOID(storagePutP(storageNewWriteP(storageData, strNew("lock/all" STOP_FILE_EXT)), NULL), "create stop file"); TEST_RESULT_VOID(cmdStart(), " cmdStart - no stanza, stop file exists"); TEST_RESULT_BOOL(storageExistsP(storageData, strNew("lock/all" STOP_FILE_EXT)), false, " stop file removed"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "--stanza=db"); harnessCfgLoad(cfgCmdStart, argList); TEST_RESULT_VOID(lockStopTest(), "no stop files with stanza"); TEST_RESULT_VOID(cmdStart(), " cmdStart - stanza, no stop files"); harnessLogResult("P00 WARN: stop file does not exist for stanza db"); storagePutP(storageNewWriteP(storageData, strNew("lock/all" STOP_FILE_EXT)), NULL); TEST_ERROR(lockStopTest(), StopError, "stop file exists for all stanzas"); storagePutP(storageNewWriteP(storageData, strNew("lock/db" STOP_FILE_EXT)), NULL); TEST_ERROR(lockStopTest(), StopError, "stop file exists for stanza db"); TEST_RESULT_VOID(cmdStart(), "cmdStart - stanza, stop file exists"); TEST_RESULT_BOOL(storageExistsP(storageData, strNew("lock/db" STOP_FILE_EXT)), false, " stanza stop file removed"); TEST_RESULT_BOOL(storageExistsP(storageData, strNew("lock/all" STOP_FILE_EXT)), true, " all stop file not removed"); } // ***************************************************************************************************************************** if (testBegin("cmdStop()")) { String *lockPath = strNewFmt("%s/lock", testDataPath()); StringList *argList = strLstNew(); harnessCfgLoad(cfgCmdStop, argList); TEST_RESULT_VOID(cmdStop(), "no stanza, create stop file"); StorageInfo info = {0}; TEST_ASSIGN(info, storageInfoP(storageData, lockPath), " get path info"); TEST_RESULT_INT(info.mode, 0770, " check path mode"); TEST_RESULT_BOOL( storageExistsP(storageData, strNewFmt("%s/all" STOP_FILE_EXT, strPtr(lockPath))), true, " all stop file created"); TEST_ASSIGN( info, storageInfoP(storageData, strNewFmt("%s/all" STOP_FILE_EXT, strPtr(lockPath))), " get file info"); TEST_RESULT_INT(info.mode, 0640, " check file mode"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(cmdStop(), "no stanza, stop file already exists"); harnessLogResult("P00 WARN: stop file already exists for all stanzas"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(storageRemoveP(storageData, strNew("lockpath/all" STOP_FILE_EXT)), "remove stop file"); TEST_RESULT_INT(system(strPtr(strNewFmt("chmod 444 %s", strPtr(lockPath)))), 0, "change perms"); TEST_ERROR_FMT( cmdStop(), FileOpenError, "unable to stat '%s/all.stop': [13] Permission denied", strPtr(lockPath)); TEST_RESULT_INT(system(strPtr(strNewFmt("chmod 700 %s", strPtr(lockPath)))), 0, "change perms"); TEST_RESULT_VOID( storagePathRemoveP(storageData, lockPath, .recurse = true, .errorOnMissing = true), " remove the lock path"); // ------------------------------------------------------------------------------------------------------------------------- String *stanzaStopFile = strNewFmt("%s/db" STOP_FILE_EXT, strPtr(lockPath)); strLstAddZ(argList, "--stanza=db"); harnessCfgLoad(cfgCmdStop, argList); TEST_RESULT_VOID(cmdStop(), "stanza, create stop file"); TEST_RESULT_BOOL(storageExistsP(storageData, stanzaStopFile), true, " stanza stop file created"); StringList *lockPathList = NULL; TEST_ASSIGN(lockPathList, storageListP(storageData, strNew("lock"), .errorOnMissing = true), " get file list"); TEST_RESULT_INT(strLstSize(lockPathList), 1, " only file in lock path"); TEST_RESULT_STR_Z(strLstGet(lockPathList, 0), "db" STOP_FILE_EXT, " stanza stop exists"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(cmdStop(), "stanza, stop file already exists"); harnessLogResult("P00 WARN: stop file already exists for stanza db"); TEST_RESULT_VOID(storageRemoveP(storageData, stanzaStopFile), " remove stop file"); // ------------------------------------------------------------------------------------------------------------------------- strLstAddZ(argList, "--force"); harnessCfgLoad(cfgCmdStop, argList); TEST_RESULT_VOID(cmdStop(), "stanza, create stop file, force"); TEST_RESULT_VOID(storageRemoveP(storageData, stanzaStopFile), " remove stop file"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageData, strNewFmt("%s/bad" LOCK_FILE_EXT, strPtr(lockPath)), .modeFile = 0222), NULL), "create a lock file that cannot be opened"); TEST_RESULT_VOID(cmdStop(), " stanza, create stop file but unable to open lock file"); harnessLogResult(strPtr(strNewFmt("P00 WARN: unable to open lock file %s/bad" LOCK_FILE_EXT, strPtr(lockPath)))); TEST_RESULT_VOID( storagePathRemoveP(storageData, lockPath, .recurse = true, .errorOnMissing = true), " remove the lock path"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageData, strNewFmt("%s/empty" LOCK_FILE_EXT, strPtr(lockPath))), NULL), "create empty lock file"); TEST_RESULT_VOID(cmdStop(), " stanza, create stop file, force - empty lock file"); TEST_RESULT_BOOL(storageExistsP(storageData, stanzaStopFile), true, " stanza stop file created"); TEST_RESULT_BOOL( storageExistsP(storageData, strNewFmt("%s/empty" LOCK_FILE_EXT, strPtr(lockPath))), false, " no other process lock, lock file was removed"); // empty lock file with another process lock, processId == NULL // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(storageRemoveP(storageData, stanzaStopFile), "remove stop file"); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageData, strNewFmt("%s/empty" LOCK_FILE_EXT, strPtr(lockPath))), NULL), " create empty lock file"); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, true) { IoRead *read = ioHandleReadNew(strNew("child read"), HARNESS_FORK_CHILD_READ(), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("child write"), HARNESS_FORK_CHILD_WRITE()); ioWriteOpen(write); int lockHandle = open(strPtr(strNewFmt("%s/empty" LOCK_FILE_EXT, strPtr(lockPath))), O_RDONLY, 0); TEST_RESULT_BOOL(lockHandle != -1, true, " file handle acquired"); TEST_RESULT_INT(flock(lockHandle, LOCK_EX | LOCK_NB), 0, " lock the empty file"); // Let the parent know the lock has been acquired and wait for the parent to allow lock release ioWriteStrLine(write, strNew("")); // All writes are buffered so need to flush because buffer is not full ioWriteFlush(write); // Wait for a linefeed from the parent ioWriteLine below ioReadLine(read); // Parent remove the file so just close the handle close(lockHandle); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { IoRead *read = ioHandleReadNew(strNew("parent read"), HARNESS_FORK_PARENT_READ_PROCESS(0), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("parent write"), HARNESS_FORK_PARENT_WRITE_PROCESS(0)); ioWriteOpen(write); // Wait for the child to acquire the lock ioReadLine(read); TEST_RESULT_VOID( cmdStop(), " stanza, create stop file, force - empty lock file with another process lock, processId == NULL"); TEST_RESULT_BOOL( storageExistsP(storageData, strNewFmt("%s/empty" LOCK_FILE_EXT, strPtr(lockPath))), false, " lock file was removed"); // Notify the child to release the lock ioWriteLine(write, bufNew(0)); ioWriteFlush(write); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); // not empty lock file with another process lock, processId size trimmed to 0 // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(storageRemoveP(storageData, stanzaStopFile), "remove stop file"); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageData, strNewFmt("%s/empty" LOCK_FILE_EXT, strPtr(lockPath))), BUFSTRDEF(" ")), " create non-empty lock file"); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, true) { IoRead *read = ioHandleReadNew(strNew("child read"), HARNESS_FORK_CHILD_READ(), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("child write"), HARNESS_FORK_CHILD_WRITE()); ioWriteOpen(write); int lockHandle = open(strPtr(strNewFmt("%s/empty" LOCK_FILE_EXT, strPtr(lockPath))), O_RDONLY, 0); TEST_RESULT_BOOL(lockHandle != -1, true, " file handle acquired"); TEST_RESULT_INT(flock(lockHandle, LOCK_EX | LOCK_NB), 0, " lock the non-empty file"); // Let the parent know the lock has been acquired and wait for the parent to allow lock release ioWriteStrLine(write, strNew("")); // All writes are buffered so need to flush because buffer is not full ioWriteFlush(write); // Wait for a linefeed from the parent ioWriteLine below ioReadLine(read); // Parent remove the file so just close the handle close(lockHandle); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { IoRead *read = ioHandleReadNew(strNew("parent read"), HARNESS_FORK_PARENT_READ_PROCESS(0), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("parent write"), HARNESS_FORK_PARENT_WRITE_PROCESS(0)); ioWriteOpen(write); // Wait for the child to acquire the lock ioReadLine(read); TEST_RESULT_VOID( cmdStop(), " stanza, create stop file, force - empty lock file with another process lock, processId size 0"); TEST_RESULT_BOOL( storageExistsP(storageData, strNewFmt("%s/empty" LOCK_FILE_EXT, strPtr(lockPath))), false, " lock file was removed"); // Notify the child to release the lock ioWriteLine(write, bufNew(0)); ioWriteFlush(write); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); // lock file with another process lock, processId is valid // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(storageRemoveP(storageData, stanzaStopFile), "remove stop file"); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, true) { IoRead *read = ioHandleReadNew(strNew("child read"), HARNESS_FORK_CHILD_READ(), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("child write"), HARNESS_FORK_CHILD_WRITE()); ioWriteOpen(write); TEST_RESULT_BOOL( lockAcquire(lockPath, cfgOptionStr(cfgOptStanza), 0, 30000, true), true," child process acquires lock"); // Let the parent know the lock has been acquired and wait for the parent to allow lock release ioWriteStrLine(write, strNew("")); // All writes are buffered so need to flush because buffer is not full ioWriteFlush(write); // Wait for a linefeed from the parent but it will not arrive before the process is terminated ioReadLine(read); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { IoRead *read = ioHandleReadNew(strNew("parent read"), HARNESS_FORK_PARENT_READ_PROCESS(0), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("parent write"), HARNESS_FORK_PARENT_WRITE_PROCESS(0)); ioWriteOpen(write); // Wait for the child to acquire the lock ioReadLine(read); TEST_RESULT_VOID( cmdStop(), " stanza, create stop file, force - lock file with another process lock, processId is valid"); harnessLogResult(strPtr(strNewFmt("P00 INFO: sent term signal to process %d", HARNESS_FORK_PROCESS_ID(0)))); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); // lock file with another process lock, processId is invalid // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(storageRemoveP(storageData, stanzaStopFile), "remove stop file"); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageData, strNewFmt("%s/badpid" LOCK_FILE_EXT, strPtr(lockPath))), BUFSTRDEF("-32768")), "create lock file with invalid PID"); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, true) { IoRead *read = ioHandleReadNew(strNew("child read"), HARNESS_FORK_CHILD_READ(), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("child write"), HARNESS_FORK_CHILD_WRITE()); ioWriteOpen(write); int lockHandle = open(strPtr(strNewFmt("%s/badpid" LOCK_FILE_EXT, strPtr(lockPath))), O_RDONLY, 0); TEST_RESULT_BOOL(lockHandle != -1, true, " file handle acquired"); TEST_RESULT_INT(flock(lockHandle, LOCK_EX | LOCK_NB), 0, " lock the badpid file"); // Let the parent know the lock has been acquired and wait for the parent to allow lock release ioWriteStrLine(write, strNew("")); // All writes are buffered so need to flush because buffer is not full ioWriteFlush(write); // Wait for a linefeed from the parent ioWriteLine below ioReadLine(read); // Remove the file and close the handle storageRemoveP(storageData, strNewFmt("%s/badpid" LOCK_FILE_EXT, strPtr(lockPath))); close(lockHandle); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { IoRead *read = ioHandleReadNew(strNew("parent read"), HARNESS_FORK_PARENT_READ_PROCESS(0), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("parent write"), HARNESS_FORK_PARENT_WRITE_PROCESS(0)); ioWriteOpen(write); // Wait for the child to acquire the lock ioReadLine(read); TEST_RESULT_VOID( cmdStop(), " stanza, create stop file, force - lock file with another process lock, processId is invalid"); harnessLogResult("P00 WARN: unable to send term signal to process -32768"); TEST_RESULT_BOOL(storageExistsP(storageData, stanzaStopFile), true, " stanza stop file not removed"); // Notify the child to release the lock ioWriteLine(write, bufNew(0)); ioWriteFlush(write); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/command/expireTest.c000066400000000000000000002060571362531507100241720ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Expire Command ***********************************************************************************************************************************/ #include "storage/posix/storage.h" #include "common/harnessConfig.h" #include "common/harnessInfo.h" /*********************************************************************************************************************************** Helper functions ***********************************************************************************************************************************/ void archiveGenerate( Storage *storageTest, String *archiveStanzaPath, const unsigned int start, unsigned int end, const char *archiveId, const char *majorWal) { // For simplicity, only allow 2 digits if (end > 99) end = 99; String *wal = NULL; for (unsigned int i = start; i <= end; i++) { if (i < 10) wal = strNewFmt("%s0000000%u-9baedd24b61aa15305732ac678c4e2c102435a09", majorWal, i); else wal = strNewFmt("%s000000%u-9baedd24b61aa15305732ac678c4e2c102435a09", majorWal, i); storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/%s/%s/%s", strPtr(archiveStanzaPath), archiveId, majorWal, strPtr(wal))), BUFSTRDEF(BOGUS_STR)); } } String * archiveExpectList(const unsigned int start, unsigned int end, const char *majorWal) { String *result = strNew(""); // For simplicity, only allow 2 digits if (end > 99) end = 99; String *wal = NULL; for (unsigned int i = start; i <= end; i++) { if (i < 10) wal = strNewFmt("%s0000000%u-9baedd24b61aa15305732ac678c4e2c102435a09", majorWal, i); else wal = strNewFmt("%s000000%u-9baedd24b61aa15305732ac678c4e2c102435a09", majorWal, i); if (strSize(result) == 0) strCat(result, strPtr(wal)); else strCatFmt(result, ", %s", strPtr(wal)); } return result; } /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); Storage *storageTest = storagePosixNew( strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); String *backupStanzaPath = strNew("repo/backup/db"); String *backupInfoFileName = strNewFmt("%s/backup.info", strPtr(backupStanzaPath)); String *archiveStanzaPath = strNew("repo/archive/db"); String *archiveInfoFileName = strNewFmt("%s/archive.info", strPtr(archiveStanzaPath)); StringList *argListBase = strLstNew(); strLstAddZ(argListBase, "--stanza=db"); strLstAdd(argListBase, strNewFmt("--repo1-path=%s/repo", testPath())); StringList *argListAvoidWarn = strLstDup(argListBase); strLstAddZ(argListAvoidWarn, "--repo1-retention-full=1"); // avoid warning String *backupInfoBase = strNew( "[backup:current]\n" "20181119-152138F={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\"," "\"backup-archive-start\":\"000000010000000000000002\",\"backup-archive-stop\":\"000000010000000000000002\"," "\"backup-info-repo-size\":2369186,\"backup-info-repo-size-delta\":2369186," "\"backup-info-size\":20162900,\"backup-info-size-delta\":20162900," "\"backup-timestamp-start\":1542640898,\"backup-timestamp-stop\":1542640911,\"backup-type\":\"full\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152800F={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\"," "\"backup-archive-start\":\"000000010000000000000004\",\"backup-archive-stop\":\"000000010000000000000004\"," "\"backup-info-repo-size\":2369186,\"backup-info-repo-size-delta\":2369186," "\"backup-info-size\":20162900,\"backup-info-size-delta\":20162900," "\"backup-timestamp-start\":1542640898,\"backup-timestamp-stop\":1542640911,\"backup-type\":\"full\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152800F_20181119-152152D={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\",\"backup-archive-start\":\"000000010000000000000005\"," "\"backup-archive-stop\":\"000000010000000000000005\",\"backup-info-repo-size\":2369186," "\"backup-info-repo-size-delta\":346,\"backup-info-size\":20162900,\"backup-info-size-delta\":8428," "\"backup-prior\":\"20181119-152800F\",\"backup-reference\":[\"20181119-152800F\"]," "\"backup-timestamp-start\":1542640912,\"backup-timestamp-stop\":1542640915,\"backup-type\":\"diff\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152800F_20181119-152155I={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\",\"backup-archive-start\":\"000000010000000000000006\"," "\"backup-archive-stop\":\"000000010000000000000006\",\"backup-info-repo-size\":2369186," "\"backup-info-repo-size-delta\":346,\"backup-info-size\":20162900,\"backup-info-size-delta\":8428," "\"backup-prior\":\"20181119-152800F_20181119-152152D\"," "\"backup-reference\":[\"20181119-152800F\",\"20181119-152800F_20181119-152152D\"]," "\"backup-timestamp-start\":1542640912,\"backup-timestamp-stop\":1542640915,\"backup-type\":\"incr\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152900F={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\"," "\"backup-archive-start\":\"000000010000000000000007\",\"backup-archive-stop\":\"000000010000000000000007\"," "\"backup-info-repo-size\":2369186,\"backup-info-repo-size-delta\":2369186," "\"backup-info-size\":20162900,\"backup-info-size-delta\":20162900," "\"backup-timestamp-start\":1542640898,\"backup-timestamp-stop\":1542640911,\"backup-type\":\"full\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152900F_20181119-152600D={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\",\"backup-archive-start\":\"000000010000000000000008\"," "\"backup-archive-stop\":\"000000010000000000000008\",\"backup-info-repo-size\":2369186," "\"backup-info-repo-size-delta\":346,\"backup-info-size\":20162900,\"backup-info-size-delta\":8428," "\"backup-prior\":\"20181119-152138F\",\"backup-reference\":[\"20181119-152900F\"]," "\"backup-timestamp-start\":1542640912,\"backup-timestamp-stop\":1542640915,\"backup-type\":\"diff\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "\n" "[db]\n" "db-catalog-version=201409291\n" "db-control-version=942\n" "db-id=1\n" "db-system-id=6625592122879095702\n" "db-version=\"9.4\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6625592122879095702," "\"db-version\":\"9.4\"}"); // ***************************************************************************************************************************** if (testBegin("expireBackup()")) { // Create backup.info storagePutP(storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksum(backupInfoBase)); InfoBackup *infoBackup = NULL; TEST_ASSIGN(infoBackup, infoBackupLoadFile(storageTest, backupInfoFileName, cipherTypeNone, NULL), "get backup.info"); // Create backup directories and manifest files String *full1 = strNew("20181119-152138F"); String *full2 = strNew("20181119-152800F"); String *full1Path = strNewFmt("%s/%s", strPtr(backupStanzaPath), strPtr(full1)); String *full2Path = strNewFmt("%s/%s", strPtr(backupStanzaPath), strPtr(full2)); // Load Parameters StringList *argList = strLstDup(argListAvoidWarn); harnessCfgLoad(cfgCmdExpire, argList); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/%s", strPtr(full1Path), BACKUP_MANIFEST_FILE)), BUFSTRDEF(BOGUS_STR)), "full1 put manifest"); TEST_RESULT_VOID( storagePutP( storageNewWriteP( storageTest, strNewFmt("%s/%s", strPtr(full1Path), BACKUP_MANIFEST_FILE ".copy")), BUFSTRDEF(BOGUS_STR)), "full1 put manifest copy"); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageTest, strNewFmt("%s/%s", strPtr(full1Path), "bogus")), BUFSTRDEF(BOGUS_STR)), "full1 put extra file"); TEST_RESULT_VOID(storagePathCreateP(storageTest, full2Path), "full2 empty"); String *backupExpired = strNew(""); TEST_RESULT_VOID(expireBackup(infoBackup, full1, backupExpired), "expire backup with both manifest files"); TEST_RESULT_BOOL( (strLstSize(storageListP(storageTest, full1Path)) && strLstExistsZ(storageListP(storageTest, full1Path), "bogus")), true, " full1 - only manifest files removed"); TEST_RESULT_VOID(expireBackup(infoBackup, full2, backupExpired), "expire backup with no manifest - does not error"); TEST_RESULT_STR_Z( strLstJoin(infoBackupDataLabelList(infoBackup, NULL), ", "), "20181119-152800F_20181119-152152D, 20181119-152800F_20181119-152155I, 20181119-152900F" ", 20181119-152900F_20181119-152600D", "only backups passed to expireBackup are removed from backup:current"); } // ***************************************************************************************************************************** if (testBegin("expireFullBackup()")) { // Create backup.info storagePutP(storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksum(backupInfoBase)); InfoBackup *infoBackup = NULL; TEST_ASSIGN(infoBackup, infoBackupLoadFile(storageTest, backupInfoFileName, cipherTypeNone, NULL), "get backup.info"); // Load Parameters StringList *argList = strLstDup(argListBase); harnessCfgLoad(cfgCmdExpire, argList); TEST_RESULT_UINT(expireFullBackup(infoBackup), 0, "retention-full not set"); harnessLogResult( "P00 WARN: option repo1-retention-full is not set, the repository may run out of space\n" " HINT: to retain full backups indefinitely (without warning), " "set option 'repo1-retention-full' to the maximum."); //-------------------------------------------------------------------------------------------------------------------------- strLstAddZ(argList, "--repo1-retention-full=2"); harnessCfgLoad(cfgCmdExpire, argList); TEST_RESULT_UINT(expireFullBackup(infoBackup), 1, "retention-full=2 - one full backup expired"); TEST_RESULT_UINT(infoBackupDataTotal(infoBackup), 5, " current backups reduced by 1 full - no dependencies"); TEST_RESULT_STR_Z( strLstJoin(infoBackupDataLabelList(infoBackup, NULL), ", "), "20181119-152800F, 20181119-152800F_20181119-152152D, 20181119-152800F_20181119-152155I" ", 20181119-152900F, 20181119-152900F_20181119-152600D", " remaining backups correct"); harnessLogResult("P00 INFO: expire full backup 20181119-152138F"); //-------------------------------------------------------------------------------------------------------------------------- argList = strLstDup(argListBase); strLstAddZ(argList, "--repo1-retention-full=1"); harnessCfgLoad(cfgCmdExpire, argList); TEST_RESULT_UINT(expireFullBackup(infoBackup), 3, "retention-full=1 - one full backup and dependencies expired"); TEST_RESULT_UINT(infoBackupDataTotal(infoBackup), 2, " current backups reduced by 1 full and dependencies"); TEST_RESULT_STR_Z( strLstJoin(infoBackupDataLabelList(infoBackup, NULL), ", "), "20181119-152900F, 20181119-152900F_20181119-152600D", " remaining backups correct"); harnessLogResult( "P00 INFO: expire full backup set: 20181119-152800F, 20181119-152800F_20181119-152152D, " "20181119-152800F_20181119-152155I"); //-------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_UINT(expireFullBackup(infoBackup), 0, "retention-full=1 - not enough backups to expire any"); TEST_RESULT_STR_Z( strLstJoin(infoBackupDataLabelList(infoBackup, NULL), ", "), "20181119-152900F, 20181119-152900F_20181119-152600D", " remaining backups correct"); } // ***************************************************************************************************************************** if (testBegin("expireDiffBackup()")) { // Create backup.info storagePutP(storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksum(backupInfoBase)); InfoBackup *infoBackup = NULL; TEST_ASSIGN(infoBackup, infoBackupLoadFile(storageTest, backupInfoFileName, cipherTypeNone, NULL), "get backup.info"); // Load Parameters StringList *argList = strLstDup(argListAvoidWarn); harnessCfgLoad(cfgCmdExpire, argList); TEST_RESULT_UINT(expireDiffBackup(infoBackup), 0, "retention-diff not set - nothing expired"); TEST_RESULT_UINT(infoBackupDataTotal(infoBackup), 6, " current backups not expired"); //-------------------------------------------------------------------------------------------------------------------------- // Add retention-diff StringList *argListTemp = strLstDup(argList); strLstAddZ(argListTemp, "--repo1-retention-diff=6"); harnessCfgLoad(cfgCmdExpire, argListTemp); TEST_RESULT_UINT(expireDiffBackup(infoBackup), 0, "retention-diff set - too soon to expire"); TEST_RESULT_UINT(infoBackupDataTotal(infoBackup), 6, " current backups not expired"); //-------------------------------------------------------------------------------------------------------------------------- strLstAddZ(argList, "--repo1-retention-diff=2"); harnessCfgLoad(cfgCmdExpire, argList); TEST_RESULT_UINT(expireDiffBackup(infoBackup), 2, "retention-diff set - full considered in diff"); TEST_RESULT_UINT(infoBackupDataTotal(infoBackup), 4, " current backups reduced by 1 diff and dependent increment"); TEST_RESULT_STR_Z( strLstJoin(infoBackupDataLabelList(infoBackup, NULL), ", "), "20181119-152138F, 20181119-152800F, 20181119-152900F, 20181119-152900F_20181119-152600D", " remaining backups correct"); harnessLogResult( "P00 INFO: expire diff backup set: 20181119-152800F_20181119-152152D, 20181119-152800F_20181119-152155I"); TEST_RESULT_UINT(expireDiffBackup(infoBackup), 0, "retention-diff=2 but no more to expire"); TEST_RESULT_UINT(infoBackupDataTotal(infoBackup), 4, " current backups not reduced"); //-------------------------------------------------------------------------------------------------------------------------- // Create backup.info with two diff - oldest to be expired - no "set:" storagePutP( storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksumZ( "[backup:current]\n" "20181119-152800F={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\"," "\"backup-archive-start\":\"000000010000000000000002\",\"backup-archive-stop\":\"000000010000000000000002\"," "\"backup-info-repo-size\":2369186,\"backup-info-repo-size-delta\":2369186," "\"backup-info-size\":20162900,\"backup-info-size-delta\":20162900," "\"backup-timestamp-start\":1542640898,\"backup-timestamp-stop\":1542640911,\"backup-type\":\"full\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152800F_20181119-152152D={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\",\"backup-archive-start\":\"000000010000000000000003\"," "\"backup-archive-stop\":\"000000010000000000000003\",\"backup-info-repo-size\":2369186," "\"backup-info-repo-size-delta\":346,\"backup-info-size\":20162900,\"backup-info-size-delta\":8428," "\"backup-prior\":\"20181119-152800F\",\"backup-reference\":[\"20181119-152800F\"]," "\"backup-timestamp-start\":1542640912,\"backup-timestamp-stop\":1542640915,\"backup-type\":\"diff\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152800F_20181119-152155D={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\",\"backup-archive-start\":\"000000010000000000000004\"," "\"backup-archive-stop\":\"000000010000000000000004\",\"backup-info-repo-size\":2369186," "\"backup-info-repo-size-delta\":346,\"backup-info-size\":20162900,\"backup-info-size-delta\":8428," "\"backup-prior\":\"20181119-152800F\",\"backup-reference\":[\"20181119-152800F\"]," "\"backup-timestamp-start\":1542640912,\"backup-timestamp-stop\":1542640915,\"backup-type\":\"diff\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "\n" "[db]\n" "db-catalog-version=201409291\n" "db-control-version=942\n" "db-id=1\n" "db-system-id=6625592122879095702\n" "db-version=\"9.4\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6625592122879095702," "\"db-version\":\"9.4\"}")); TEST_ASSIGN(infoBackup, infoBackupLoadFile(storageTest, backupInfoFileName, cipherTypeNone, NULL), "get backup.info"); // Load parameters argList = strLstDup(argListAvoidWarn); strLstAddZ(argList, "--repo1-retention-diff=1"); harnessCfgLoad(cfgCmdExpire, argList); TEST_RESULT_UINT(expireDiffBackup(infoBackup), 1, "retention-diff set - only oldest diff expired"); TEST_RESULT_UINT(infoBackupDataTotal(infoBackup), 2, " current backups reduced by one"); TEST_RESULT_STR_Z( strLstJoin(infoBackupDataLabelList(infoBackup, NULL), ", "), "20181119-152800F, 20181119-152800F_20181119-152155D", " remaining backups correct"); harnessLogResult( "P00 INFO: expire diff backup 20181119-152800F_20181119-152152D"); } // ***************************************************************************************************************************** if (testBegin("removeExpiredBackup()")) { // Create backup.info storagePutP( storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksumZ( "[backup:current]\n" "20181119-152138F={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\"," "\"backup-archive-start\":\"000000010000000000000002\",\"backup-archive-stop\":\"000000010000000000000002\"," "\"backup-info-repo-size\":2369186,\"backup-info-repo-size-delta\":2369186," "\"backup-info-size\":20162900,\"backup-info-size-delta\":20162900," "\"backup-timestamp-start\":1542640898,\"backup-timestamp-stop\":1542640911,\"backup-type\":\"full\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "\n" "[db]\n" "db-catalog-version=201409291\n" "db-control-version=942\n" "db-id=1\n" "db-system-id=6625592122879095702\n" "db-version=\"9.4\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6625592122879095702," "\"db-version\":\"9.4\"}")); InfoBackup *infoBackup = NULL; TEST_ASSIGN(infoBackup, infoBackupLoadFile(storageTest, backupInfoFileName, cipherTypeNone, NULL), "get backup.info"); // Create backup directories, manifest files and other path/file String *full = strNewFmt("%s/%s", strPtr(backupStanzaPath), "20181119-152100F"); String *diff = strNewFmt("%s/%s", strPtr(backupStanzaPath), "20181119-152100F_20181119-152152D"); String *otherPath = strNewFmt("%s/%s", strPtr(backupStanzaPath), "bogus"); String *otherFile = strNewFmt("%s/%s", strPtr(backupStanzaPath), "20181118-152100F_20181119-152152D.save"); String *full1 = strNewFmt("%s/%s", strPtr(backupStanzaPath), "20181119-152138F"); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageTest, strNewFmt("%s/%s", strPtr(full), "bogus")), BUFSTRDEF(BOGUS_STR)), "put file"); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageTest, strNewFmt("%s/%s", strPtr(full1), "somefile")), BUFSTRDEF(BOGUS_STR)), "put file"); TEST_RESULT_VOID(storagePathCreateP(storageTest, diff), "empty backup directory must not error on delete"); TEST_RESULT_VOID(storagePathCreateP(storageTest, otherPath), "other path must not be removed"); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageTest, otherFile), BUFSTRDEF(BOGUS_STR)), "directory look-alike file must not be removed"); // Load Parameters StringList *argList = strLstDup(argListBase); strLstAddZ(argList, "--repo1-retention-full=1"); harnessCfgLoad(cfgCmdExpire, argList); TEST_RESULT_VOID(removeExpiredBackup(infoBackup), "remove backups not in backup.info current"); harnessLogResult( "P00 INFO: remove expired backup 20181119-152100F_20181119-152152D\n" "P00 INFO: remove expired backup 20181119-152100F"); TEST_RESULT_STR_Z( strLstJoin(strLstSort(storageListP(storageTest, backupStanzaPath), sortOrderAsc), ", "), "20181118-152100F_20181119-152152D.save, 20181119-152138F, backup.info, bogus", " remaining file/directories correct"); //-------------------------------------------------------------------------------------------------------------------------- // Create backup.info without current backups storagePutP( storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksumZ( "[db]\n" "db-catalog-version=201409291\n" "db-control-version=942\n" "db-id=1\n" "db-system-id=6625592122879095702\n" "db-version=\"9.4\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6625592122879095702," "\"db-version\":\"9.4\"}")); TEST_ASSIGN(infoBackup,infoBackupLoadFile(storageTest, backupInfoFileName, cipherTypeNone, NULL), "get backup.info"); TEST_RESULT_VOID(removeExpiredBackup(infoBackup), "remove backups - backup.info current empty"); harnessLogResult("P00 INFO: remove expired backup 20181119-152138F"); TEST_RESULT_STR_Z( strLstJoin(strLstSort(storageListP(storageTest, backupStanzaPath), sortOrderAsc), ", "), "20181118-152100F_20181119-152152D.save, backup.info, bogus", " remaining file/directories correct"); } // ***************************************************************************************************************************** if (testBegin("removeExpiredArchive() & cmdExpire()")) { // Load Parameters StringList *argList = strLstDup(argListBase); harnessCfgLoad(cfgCmdExpire, argList); // Create backup.info without current backups storagePutP( storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksumZ( "[db]\n" "db-catalog-version=201409291\n" "db-control-version=942\n" "db-id=1\n" "db-system-id=6625592122879095702\n" "db-version=\"9.4\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6625592122879095702," "\"db-version\":\"9.4\"}")); InfoBackup *infoBackup = NULL; TEST_ASSIGN(infoBackup, infoBackupLoadFile(storageTest, backupInfoFileName, cipherTypeNone, NULL), "get backup.info"); TEST_RESULT_VOID(removeExpiredArchive(infoBackup), "archive retention not set"); harnessLogResult( "P00 WARN: option repo1-retention-full is not set, the repository may run out of space\n" " HINT: to retain full backups indefinitely (without warning), " "set option 'repo1-retention-full' to the maximum.\n" "P00 INFO: option 'repo1-retention-archive' is not set - archive logs will not be expired"); //-------------------------------------------------------------------------------------------------------------------------- // Set archive retention, archive retention type default but no current backups - code path test strLstAddZ(argList, "--repo1-retention-archive=4"); harnessCfgLoad(cfgCmdExpire, argList); TEST_RESULT_VOID(removeExpiredArchive(infoBackup), "archive retention set, retention type default, no current backups"); harnessLogResult( "P00 WARN: option repo1-retention-full is not set, the repository may run out of space\n" " HINT: to retain full backups indefinitely (without warning), " "set option 'repo1-retention-full' to the maximum."); //-------------------------------------------------------------------------------------------------------------------------- // Create backup.info with current backups spread over different timelines storagePutP(storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksumZ( "[backup:current]\n" "20181119-152138F={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\"," "\"backup-archive-start\":\"000000010000000000000002\",\"backup-archive-stop\":\"000000010000000000000002\"," "\"backup-info-repo-size\":2369186,\"backup-info-repo-size-delta\":2369186," "\"backup-info-size\":20162900,\"backup-info-size-delta\":20162900," "\"backup-timestamp-start\":1542640898,\"backup-timestamp-stop\":1542640911,\"backup-type\":\"full\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152800F={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\"," "\"backup-archive-start\":\"000000020000000000000002\",\"backup-archive-stop\":\"000000020000000000000002\"," "\"backup-info-repo-size\":2369186,\"backup-info-repo-size-delta\":2369186," "\"backup-info-size\":20162900,\"backup-info-size-delta\":20162900," "\"backup-timestamp-start\":1542640898,\"backup-timestamp-stop\":1542640911,\"backup-type\":\"full\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152800F_20181119-152152D={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\",\"backup-archive-start\":\"000000020000000000000004\"," "\"backup-archive-stop\":\"000000020000000000000005\",\"backup-info-repo-size\":2369186," "\"backup-info-repo-size-delta\":346,\"backup-info-size\":20162900,\"backup-info-size-delta\":8428," "\"backup-prior\":\"20181119-152800F\",\"backup-reference\":[\"20181119-152800F\"]," "\"backup-timestamp-start\":1542640912,\"backup-timestamp-stop\":1542640915,\"backup-type\":\"diff\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152800F_20181119-152155I={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\",\"backup-archive-start\":\"000000020000000000000007\"," "\"backup-archive-stop\":\"000000020000000000000007\",\"backup-info-repo-size\":2369186," "\"backup-info-repo-size-delta\":346,\"backup-info-size\":20162900,\"backup-info-size-delta\":8428," "\"backup-prior\":\"20181119-152800F_20181119-152152D\"," "\"backup-reference\":[\"20181119-152800F\",\"20181119-152800F_20181119-152152D\"]," "\"backup-timestamp-start\":1542640912,\"backup-timestamp-stop\":1542640915,\"backup-type\":\"incr\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152800F_20181119-152252D={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\",\"backup-archive-start\":\"000000020000000000000009\"," "\"backup-archive-stop\":\"000000020000000000000009\",\"backup-info-repo-size\":2369186," "\"backup-info-repo-size-delta\":346,\"backup-info-size\":20162900,\"backup-info-size-delta\":8428," "\"backup-prior\":\"20181119-152800F\",\"backup-reference\":[\"20181119-152800F\"]," "\"backup-timestamp-start\":1542640912,\"backup-timestamp-stop\":1542640915,\"backup-type\":\"diff\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152900F={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\"," "\"backup-archive-start\":\"000000010000000000000003\",\"backup-archive-stop\":\"000000010000000000000004\"," "\"backup-info-repo-size\":2369186,\"backup-info-repo-size-delta\":2369186," "\"backup-info-size\":20162900,\"backup-info-size-delta\":20162900," "\"backup-timestamp-start\":1542640898,\"backup-timestamp-stop\":1542640911,\"backup-type\":\"full\"," "\"db-id\":2,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152900F_20181119-152500I={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\",\"backup-archive-start\":\"000000010000000000000006\"," "\"backup-archive-stop\":\"000000010000000000000006\",\"backup-info-repo-size\":2369186," "\"backup-info-repo-size-delta\":346,\"backup-info-size\":20162900,\"backup-info-size-delta\":8428," "\"backup-prior\":\"20181119-152900F\",\"backup-reference\":[\"20181119-152900F\"]," "\"backup-timestamp-start\":1542640912,\"backup-timestamp-stop\":1542640915,\"backup-type\":\"diff\"," "\"db-id\":2,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "\n" "[db]\n" "db-catalog-version=201707211\n" "db-control-version=1002\n" "db-id=2\n" "db-system-id=6626363367545678089\n" "db-version=\"10\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6625592122879095702," "\"db-version\":\"9.4\"}\n" "2={\"db-catalog-version\":201707211,\"db-control-version\":1002,\"db-system-id\":6626363367545678089," "\"db-version\":\"10\"}\n")); TEST_ASSIGN(infoBackup, infoBackupLoadFile(storageTest, backupInfoFileName, cipherTypeNone, NULL), "get backup.info"); storagePutP( storageNewWriteP(storageTest, archiveInfoFileName), harnessInfoChecksumZ( "[db]\n" "db-id=2\n" "db-system-id=6626363367545678089\n" "db-version=\"10\"\n" "\n" "[db:history]\n" "1={\"db-id\":6625592122879095702,\"db-version\":\"9.4\"}\n" "2={\"db-id\":6626363367545678089,\"db-version\":\"10\"}")); TEST_RESULT_VOID(removeExpiredArchive(infoBackup), "no archive on disk"); //-------------------------------------------------------------------------------------------------------------------------- archiveGenerate(storageTest, archiveStanzaPath, 1, 10, "9.4-1", "0000000100000000"); archiveGenerate(storageTest, archiveStanzaPath, 1, 10, "9.4-1", "0000000200000000"); archiveGenerate(storageTest, archiveStanzaPath, 1, 10, "10-2", "0000000100000000"); TEST_RESULT_VOID(removeExpiredArchive(infoBackup), "archive retention type = full (default), repo1-retention-archive=4"); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "9.4-1", "0000000100000000")), sortOrderAsc), ", "), archiveExpectList(2, 10, "0000000100000000"), " only 9.4-1/0000000100000000/000000010000000000000001 removed"); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "9.4-1", "0000000200000000")), sortOrderAsc), ", "), archiveExpectList(1, 10, "0000000200000000"), " none removed from 9.4-1/0000000200000000 - crossing timelines to play through PITR"); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "10-2", "0000000100000000")), sortOrderAsc), ", "), archiveExpectList(3, 10, "0000000100000000"), " 000000010000000000000001 and 000000010000000000000002 removed from 10-2/0000000100000000"); harnessLogResult( "P00 INFO: full backup total < 4 - using oldest full backup for 9.4-1 archive retention\n" "P00 INFO: full backup total < 4 - using oldest full backup for 10-2 archive retention"); //-------------------------------------------------------------------------------------------------------------------------- argList = strLstDup(argListAvoidWarn); strLstAddZ(argList, "--repo1-retention-archive=2"); harnessCfgLoad(cfgCmdExpire, argList); TEST_RESULT_VOID(removeExpiredArchive(infoBackup), "archive retention type = full (default), repo1-retention-archive=2"); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "9.4-1", "0000000100000000")), sortOrderAsc), ", "), archiveExpectList(2, 2, "0000000100000000"), " only 9.4-1/0000000100000000/000000010000000000000002 remains in major wal 1"); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "9.4-1", "0000000200000000")), sortOrderAsc), ", "), archiveExpectList(2, 10, "0000000200000000"), " only 9.4-1/0000000200000000/000000010000000000000001 removed from major wal 2"); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "10-2", "0000000100000000")), sortOrderAsc), ", "), archiveExpectList(3, 10, "0000000100000000"), " none removed from 10-2/0000000100000000"); //-------------------------------------------------------------------------------------------------------------------------- argList = strLstDup(argListAvoidWarn); strLstAddZ(argList, "--repo1-retention-archive=1"); harnessCfgLoad(cfgCmdExpire, argList); TEST_RESULT_VOID(removeExpiredArchive(infoBackup), "archive retention type = full (default), repo1-retention-archive=1"); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "9.4-1", "0000000100000000")), sortOrderAsc), ", "), archiveExpectList(2, 2, "0000000100000000"), " only 9.4-1/0000000100000000/000000010000000000000002 remains in major wal 1"); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "9.4-1", "0000000200000000")), sortOrderAsc), ", "), archiveExpectList(2, 10, "0000000200000000"), " nothing removed from 9.4-1/0000000200000000 major wal 2 - each archiveId must have one backup to play through PITR"); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "10-2", "0000000100000000")), sortOrderAsc), ", "), archiveExpectList(3, 10, "0000000100000000"), " none removed from 10-2/0000000100000000"); //-------------------------------------------------------------------------------------------------------------------------- argList = strLstDup(argListAvoidWarn); strLstAddZ(argList, "--repo1-retention-archive=2"); strLstAddZ(argList, "--repo1-retention-archive-type=diff"); strLstAddZ(argList, "--repo1-retention-diff=2"); harnessCfgLoad(cfgCmdExpire, argList); TEST_RESULT_VOID( removeExpiredArchive(infoBackup), "full counts as differential and incremental associated with differential expires"); String *result = strNew(""); strCatFmt( result, "%s, %s, %s, %s", strPtr(archiveExpectList(2, 2, "0000000200000000")), strPtr(archiveExpectList(4, 5, "0000000200000000")), strPtr(archiveExpectList(7, 7, "0000000200000000")), strPtr(archiveExpectList(9, 10, "0000000200000000"))); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "9.4-1", "0000000100000000")), sortOrderAsc), ", "), archiveExpectList(2, 2, "0000000100000000"), " only 9.4-1/0000000100000000/000000010000000000000002 remains in major wal 1"); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "9.4-1", "0000000200000000")), sortOrderAsc), ", "), result, " all in-between removed from 9.4-1/0000000200000000 major wal 2 - last backup able to play through PITR"); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "10-2", "0000000100000000")), sortOrderAsc), ", "), archiveExpectList(3, 10, "0000000100000000"), " none removed from 10-2/0000000100000000"); //-------------------------------------------------------------------------------------------------------------------------- argList = strLstDup(argListAvoidWarn); strLstAddZ(argList, "--repo1-retention-archive=4"); strLstAddZ(argList, "--repo1-retention-archive-type=incr"); harnessCfgLoad(cfgCmdExpire, argList); // Regenerate archive archiveGenerate(storageTest, archiveStanzaPath, 1, 10, "9.4-1", "0000000200000000"); TEST_RESULT_VOID(removeExpiredArchive(infoBackup), "differential and full count as an incremental"); result = strNew(""); strCatFmt( result, "%s, %s, %s", strPtr(archiveExpectList(2, 2, "0000000200000000")), strPtr(archiveExpectList(4, 5, "0000000200000000")), strPtr(archiveExpectList(7, 10, "0000000200000000"))); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "9.4-1", "0000000100000000")), sortOrderAsc), ", "), archiveExpectList(2, 2, "0000000100000000"), " only 9.4-1/0000000100000000/000000010000000000000002 remains in major wal 1"); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "9.4-1", "0000000200000000")), sortOrderAsc), ", "), result, " incremental and after remain in 9.4-1/0000000200000000 major wal 2"); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "10-2", "0000000100000000")), sortOrderAsc), ", "), archiveExpectList(3, 10, "0000000100000000"), " none removed from 10-2/0000000100000000"); //-------------------------------------------------------------------------------------------------------------------------- argList = strLstDup(argListBase); strLstAddZ(argList, "--repo1-retention-full=2"); strLstAddZ(argList, "--repo1-retention-diff=3"); strLstAddZ(argList, "--repo1-retention-archive=2"); strLstAddZ(argList, "--repo1-retention-archive-type=diff"); harnessCfgLoad(cfgCmdExpire, argList); // Write backup.manifest so infoBackup reconstruct produces same results as backup.info on disk storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/20181119-152138F/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))), BUFSTRDEF("tmp")); storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/20181119-152800F/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))), BUFSTRDEF("tmp")); storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/20181119-152800F_20181119-152152D/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))), BUFSTRDEF("tmp")); storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/20181119-152800F_20181119-152155I/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))), BUFSTRDEF("tmp")); storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/20181119-152800F_20181119-152252D/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))), BUFSTRDEF("tmp")); storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/20181119-152900F/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))), BUFSTRDEF("tmp")); storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/20181119-152900F_20181119-152500I/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))), BUFSTRDEF("tmp")); TEST_RESULT_VOID(cmdExpire(), "expire last backup in archive sub path and remove sub path"); TEST_RESULT_BOOL( storagePathExistsP(storageTest, strNewFmt("%s/%s", strPtr(archiveStanzaPath), "9.4-1/0000000100000000")), false, " archive sub path removed"); harnessLogResult( "P00 INFO: expire full backup 20181119-152138F\n" "P00 INFO: remove expired backup 20181119-152138F"); //-------------------------------------------------------------------------------------------------------------------------- argList = strLstDup(argListAvoidWarn); strLstAddZ(argList, "--repo1-retention-archive=1"); harnessCfgLoad(cfgCmdExpire, argList); TEST_RESULT_VOID(cmdExpire(), "expire last backup in archive path and remove path"); TEST_RESULT_BOOL( storagePathExistsP(storageTest, strNewFmt("%s/%s", strPtr(archiveStanzaPath), "9.4-1")), false, " archive path removed"); harnessLogResult(strPtr(strNewFmt( "P00 INFO: expire full backup set: 20181119-152800F, 20181119-152800F_20181119-152152D, " "20181119-152800F_20181119-152155I, 20181119-152800F_20181119-152252D\n" "P00 INFO: remove expired backup 20181119-152800F_20181119-152252D\n" "P00 INFO: remove expired backup 20181119-152800F_20181119-152155I\n" "P00 INFO: remove expired backup 20181119-152800F_20181119-152152D\n" "P00 INFO: remove expired backup 20181119-152800F\n" "P00 INFO: remove archive path: %s/%s/9.4-1", testPath(), strPtr(archiveStanzaPath)))); TEST_ASSIGN(infoBackup, infoBackupLoadFile(storageTest, backupInfoFileName, cipherTypeNone, NULL), " get backup.info"); TEST_RESULT_UINT(infoBackupDataTotal(infoBackup), 2, " backup.info updated on disk"); TEST_RESULT_STR_Z( strLstJoin(strLstSort(infoBackupDataLabelList(infoBackup, NULL), sortOrderAsc), ", "), "20181119-152900F, 20181119-152900F_20181119-152500I", " remaining current backups correct"); //-------------------------------------------------------------------------------------------------------------------------- storagePutP(storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksumZ( "[backup:current]\n" "20181119-152138F={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\"," "\"backup-archive-start\":\"000000010000000000000002\",\"backup-archive-stop\":\"000000010000000000000002\"," "\"backup-info-repo-size\":2369186,\"backup-info-repo-size-delta\":2369186," "\"backup-info-size\":20162900,\"backup-info-size-delta\":20162900," "\"backup-timestamp-start\":1542640898,\"backup-timestamp-stop\":1542640911,\"backup-type\":\"full\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152800F={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\"," "\"backup-info-repo-size\":2369186,\"backup-info-repo-size-delta\":2369186," "\"backup-info-size\":20162900,\"backup-info-size-delta\":20162900," "\"backup-timestamp-start\":1542640898,\"backup-timestamp-stop\":1542640911,\"backup-type\":\"full\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152900F={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\"," "\"backup-archive-start\":\"000000010000000000000004\",\"backup-archive-stop\":\"000000010000000000000004\"," "\"backup-info-repo-size\":2369186,\"backup-info-repo-size-delta\":2369186," "\"backup-info-size\":20162900,\"backup-info-size-delta\":20162900," "\"backup-timestamp-start\":1542640898,\"backup-timestamp-stop\":1542640911,\"backup-type\":\"full\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "\n" "[db]\n" "db-catalog-version=201707211\n" "db-control-version=1002\n" "db-id=2\n" "db-system-id=6626363367545678089\n" "db-version=\"10\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6625592122879095702," "\"db-version\":\"9.4\"}\n" "2={\"db-catalog-version\":201707211,\"db-control-version\":1002,\"db-system-id\":6626363367545678089," "\"db-version\":\"10\"}\n")); TEST_ASSIGN(infoBackup, infoBackupLoadFile(storageTest, backupInfoFileName, cipherTypeNone, NULL), "get backup.info"); archiveGenerate(storageTest, archiveStanzaPath, 1, 5, "9.4-1", "0000000100000000"); argList = strLstDup(argListAvoidWarn); strLstAddZ(argList, "--repo1-retention-archive=2"); strLstAddZ(argList, "--repo1-retention-archive-type=full"); harnessCfgLoad(cfgCmdExpire, argList); TEST_RESULT_VOID( removeExpiredArchive(infoBackup), "backup selected for retention does not have archive-start so do nothing"); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "9.4-1", "0000000100000000")), sortOrderAsc), ", "), archiveExpectList(1, 5, "0000000100000000"), " nothing removed from 9.4-1/0000000100000000"); argList = strLstDup(argListAvoidWarn); strLstAddZ(argList, "--repo1-retention-archive=4"); strLstAddZ(argList, "--repo1-retention-archive-type=incr"); harnessCfgLoad(cfgCmdExpire, argList); TEST_RESULT_VOID( removeExpiredArchive(infoBackup), "full count as incr but not enough backups, retention set to first full"); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "9.4-1", "0000000100000000")), sortOrderAsc), ", "), archiveExpectList(2, 5, "0000000100000000"), " only removed archive prior to first full"); harnessLogResult( "P00 INFO: full backup total < 4 - using oldest full backup for 9.4-1 archive retention"); argList = strLstDup(argListAvoidWarn); strLstAddZ(argList, "--repo1-retention-archive=1"); strLstAddZ(argList, "--repo1-retention-archive-type=full"); harnessCfgLoad(cfgCmdExpire, argList); harnessLogLevelSet(logLevelDetail); TEST_RESULT_VOID( removeExpiredArchive(infoBackup), "backup earlier than selected for retention does not have archive-start"); harnessLogResult( "P00 DETAIL: archive retention on backup 20181119-152138F, archiveId = 9.4-1, start = 000000010000000000000002," " stop = 000000010000000000000002\n" "P00 DETAIL: archive retention on backup 20181119-152900F, archiveId = 9.4-1, start = 000000010000000000000004\n" "P00 DETAIL: remove archive: archiveId = 9.4-1, start = 000000010000000000000003, stop = 000000010000000000000003"); harnessLogLevelReset(); } // ***************************************************************************************************************************** if (testBegin("info files mismatch")) { // Load Parameters StringList *argList = strLstDup(argListBase); strLstAddZ(argList, "--repo1-retention-full=2"); harnessCfgLoad(cfgCmdExpire, argList); // archive.info has only current db with different db history id as backup.info //-------------------------------------------------------------------------------------------------------------------------- storagePutP(storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksumZ( "[backup:current]\n" "20181119-152138F={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\"," "\"backup-archive-start\":\"000000010000000000000002\",\"backup-archive-stop\":\"000000010000000000000002\"," "\"backup-info-repo-size\":2369186,\"backup-info-repo-size-delta\":2369186," "\"backup-info-size\":20162900,\"backup-info-size-delta\":20162900," "\"backup-timestamp-start\":1542640898,\"backup-timestamp-stop\":1542640911,\"backup-type\":\"full\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152800F={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\"," "\"backup-archive-start\":\"000000010000000000000004\",\"backup-archive-stop\":\"000000010000000000000004\"," "\"backup-info-repo-size\":2369186,\"backup-info-repo-size-delta\":2369186," "\"backup-info-size\":20162900,\"backup-info-size-delta\":20162900," "\"backup-timestamp-start\":1542640898,\"backup-timestamp-stop\":1542640911,\"backup-type\":\"full\"," "\"db-id\":2,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152900F={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\"," "\"backup-archive-start\":\"000000010000000000000006\",\"backup-archive-stop\":\"000000010000000000000006\"," "\"backup-info-repo-size\":2369186,\"backup-info-repo-size-delta\":2369186," "\"backup-info-size\":20162900,\"backup-info-size-delta\":20162900," "\"backup-timestamp-start\":1542640898,\"backup-timestamp-stop\":1542640911,\"backup-type\":\"full\"," "\"db-id\":2,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "\n" "[db]\n" "db-catalog-version=201707211\n" "db-control-version=1002\n" "db-id=2\n" "db-system-id=6626363367545678089\n" "db-version=\"10\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201409291,\"db-control-version\":1002,\"db-system-id\":6625592122879095702," "\"db-version\":\"10\"}\n" "2={\"db-catalog-version\":201707211,\"db-control-version\":1002,\"db-system-id\":6626363367545678089," "\"db-version\":\"10\"}\n")); // Write backup.manifest so infoBackup reconstruct produces same results as backup.info on disk and removeExpiredBackup // will find backup directories to remove storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/20181119-152138F/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))), BUFSTRDEF("tmp")); storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/20181119-152800F/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))), BUFSTRDEF("tmp")); storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/20181119-152900F/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))), BUFSTRDEF("tmp")); storagePutP( storageNewWriteP(storageTest, archiveInfoFileName), harnessInfoChecksumZ( "[db]\n" "db-id=1\n" "db-system-id=6626363367545678089\n" "db-version=\"10\"\n" "\n" "[db:history]\n" "1={\"db-id\":6626363367545678089,\"db-version\":\"10\"}")); // Create 10-1 and 10-2 although 10-2 is not realistic since the archive.info knows nothing about it - it is just to // confirm that nothing from disk is removed and it will also be used for the next test. archiveGenerate(storageTest, archiveStanzaPath, 1, 7, "10-1", "0000000100000000"); archiveGenerate(storageTest, archiveStanzaPath, 1, 7, "10-2", "0000000100000000"); TEST_ERROR(cmdExpire(), FormatError, "archive expiration cannot continue - archive and backup history lists do not match"); harnessLogResult( "P00 INFO: expire full backup 20181119-152138F\n" "P00 INFO: remove expired backup 20181119-152138F"); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "10-1", "0000000100000000")), sortOrderAsc), ", "), archiveExpectList(1, 7, "0000000100000000"), " none removed from 10-1/0000000100000000"); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "10-2", "0000000100000000")), sortOrderAsc), ", "), archiveExpectList(1, 7, "0000000100000000"), " none removed from 10-2/0000000100000000"); // archive.info old history db system id not the same as backup.info //-------------------------------------------------------------------------------------------------------------------------- storagePutP( storageNewWriteP(storageTest, archiveInfoFileName), harnessInfoChecksumZ( "[db]\n" "db-id=2\n" "db-system-id=6626363367545678089\n" "db-version=\"10\"\n" "\n" "[db:history]\n" "1={\"db-id\":6626363367545671234,\"db-version\":\"10\"}\n" "2={\"db-id\":6626363367545678089,\"db-version\":\"10\"}")); TEST_ERROR(cmdExpire(), FormatError, "archive expiration cannot continue - archive and backup history lists do not match"); // archive.info old history db version not the same as backup.info //-------------------------------------------------------------------------------------------------------------------------- storagePutP( storageNewWriteP(storageTest, archiveInfoFileName), harnessInfoChecksumZ( "[db]\n" "db-id=2\n" "db-system-id=6626363367545678089\n" "db-version=\"10\"\n" "\n" "[db:history]\n" "1={\"db-id\":6625592122879095702,\"db-version\":\"9.4\"}\n" "2={\"db-id\":6626363367545678089,\"db-version\":\"10\"}")); TEST_ERROR(cmdExpire(), FormatError, "archive expiration cannot continue - archive and backup history lists do not match"); // archive.info has only current db with same db history id as backup.info //-------------------------------------------------------------------------------------------------------------------------- storagePutP(storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksumZ( "[backup:current]\n" "20181119-152138F={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\"," "\"backup-archive-start\":\"000000010000000000000002\",\"backup-archive-stop\":\"000000010000000000000002\"," "\"backup-info-repo-size\":2369186,\"backup-info-repo-size-delta\":2369186," "\"backup-info-size\":20162900,\"backup-info-size-delta\":20162900," "\"backup-timestamp-start\":1542640898,\"backup-timestamp-stop\":1542640911,\"backup-type\":\"full\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152800F={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\"," "\"backup-archive-start\":\"000000010000000000000004\",\"backup-archive-stop\":\"000000010000000000000004\"," "\"backup-info-repo-size\":2369186,\"backup-info-repo-size-delta\":2369186," "\"backup-info-size\":20162900,\"backup-info-size-delta\":20162900," "\"backup-timestamp-start\":1542640898,\"backup-timestamp-stop\":1542640911,\"backup-type\":\"full\"," "\"db-id\":2,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152900F={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\"," "\"backup-archive-start\":\"000000010000000000000006\",\"backup-archive-stop\":\"000000010000000000000006\"," "\"backup-info-repo-size\":2369186,\"backup-info-repo-size-delta\":2369186," "\"backup-info-size\":20162900,\"backup-info-size-delta\":20162900," "\"backup-timestamp-start\":1542640898,\"backup-timestamp-stop\":1542640911,\"backup-type\":\"full\"," "\"db-id\":2,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "\n" "[db]\n" "db-catalog-version=201707211\n" "db-control-version=1002\n" "db-id=2\n" "db-system-id=6626363367545678089\n" "db-version=\"10\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201409291,\"db-control-version\":1002,\"db-system-id\":6625592122879095702," "\"db-version\":\"10\"}\n" "2={\"db-catalog-version\":201707211,\"db-control-version\":1002,\"db-system-id\":6626363367545678089," "\"db-version\":\"10\"}\n")); // Write backup.manifest so infoBackup reconstruct produces same results as backup.info on disk and removeExpiredBackup // will find backup directories to remove storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/20181119-152138F/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))), BUFSTRDEF("tmp")); storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/20181119-152800F/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))), BUFSTRDEF("tmp")); storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/20181119-152900F/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))), BUFSTRDEF("tmp")); storagePutP( storageNewWriteP(storageTest, archiveInfoFileName), harnessInfoChecksumZ( "[db]\n" "db-id=2\n" "db-system-id=6626363367545678089\n" "db-version=\"10\"\n" "\n" "[db:history]\n" "2={\"db-id\":6626363367545678089,\"db-version\":\"10\"}")); argList = strLstDup(argListBase); strLstAddZ(argList, "--repo1-retention-full=1"); harnessCfgLoad(cfgCmdExpire, argList); // Here, although backup 20181119-152138F of 10-1 will be expired, the WAL in 10-1 will not since the archive.info // does not know about that dir. Again, not really realistic since if it is on disk and reconstructed it would have. So // here we are testing that things on disk that we are not aware of are not touched. TEST_RESULT_VOID(cmdExpire(), "Expire archive that archive.info is aware of"); harnessLogResult( "P00 INFO: expire full backup 20181119-152138F\n" "P00 INFO: expire full backup 20181119-152800F\n" "P00 INFO: remove expired backup 20181119-152800F\n" "P00 INFO: remove expired backup 20181119-152138F"); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "10-1", "0000000100000000")), sortOrderAsc), ", "), archiveExpectList(1, 7, "0000000100000000"), " none removed from 10-1/0000000100000000"); TEST_RESULT_STR( strLstJoin(strLstSort(storageListP( storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "10-2", "0000000100000000")), sortOrderAsc), ", "), archiveExpectList(6, 7, "0000000100000000"), " all prior to 000000010000000000000006 removed from 10-2/0000000100000000"); } // ***************************************************************************************************************************** if (testBegin("archiveIdComparator()")) { StringList *list = strLstNewParam(archiveIdComparator); strLstAddZ(list, "10-4"); strLstAddZ(list, "11-10"); strLstAddZ(list, "9.6-1"); TEST_RESULT_STR_Z(strLstJoin(strLstSort(list, sortOrderAsc), ", "), "9.6-1, 10-4, 11-10", "sort ascending"); strLstAddZ(list, "9.4-2"); TEST_RESULT_STR_Z(strLstJoin(strLstSort(list, sortOrderDesc), ", "), "11-10, 10-4, 9.4-2, 9.6-1", "sort descending"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/command/helpTest.c000066400000000000000000000555101362531507100236220ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Help Command ***********************************************************************************************************************************/ #include "config/parse.h" #include "storage/posix/storage.h" #include "storage/storage.h" #include "version.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // Program name a version are used multiple times const char *helpVersion = PROJECT_NAME " " PROJECT_VERSION; // General help text is used in more than one test const char *generalHelp = strPtr(strNewFmt( "%s - General help\n" "\n" "Usage:\n" " pgbackrest [options] [command]\n" "\n" "Commands:\n" " archive-get Get a WAL segment from the archive.\n" " archive-push Push a WAL segment to the archive.\n" " backup Backup a database cluster.\n" " check Check the configuration.\n" " expire Expire backups that exceed retention.\n" " help Get help.\n" " info Retrieve information about backups.\n" " restore Restore a database cluster.\n" " stanza-create Create the required stanza data.\n" " stanza-delete Delete a stanza.\n" " stanza-upgrade Upgrade a stanza.\n" " start Allow pgBackRest processes to run.\n" " stop Stop pgBackRest processes from running.\n" " version Get version.\n" "\n" "Use 'pgbackrest help [command]' for more information.\n", helpVersion)); // ***************************************************************************************************************************** if (testBegin("helpRenderText()")) { TEST_RESULT_STR_Z(helpRenderText(strNew("this is a short sentence"), 0, false, 80), "this is a short sentence", "one line"); TEST_RESULT_STR_Z( helpRenderText(strNew("this is a short sentence"), 4, false, 14), "this is a\n" " short\n" " sentence", "three lines, no indent first"); TEST_RESULT_STR_Z( helpRenderText(strNew("This is a short paragraph.\n\nHere is another one."), 2, true, 16), " This is a\n" " short\n" " paragraph.\n" "\n" " Here is\n" " another one.", "two paragraphs, indent first"); } // ***************************************************************************************************************************** if (testBegin("helpRenderValue()")) { TEST_RESULT_STR_Z(helpRenderValue(varNewBool(true)), "y", "boolean y"); TEST_RESULT_STR_Z(helpRenderValue(varNewBool(false)), "n", "boolean n"); TEST_RESULT_STR_Z(helpRenderValue(varNewStrZ("test-string")), "test-string", "string"); TEST_RESULT_STR_Z(helpRenderValue(varNewDbl(1.234)), "1.234", "double"); TEST_RESULT_STR_Z(helpRenderValue(varNewInt(1234)), "1234", "int"); } // ***************************************************************************************************************************** if (testBegin("helpRender()")) { StringList *argList = NULL; // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "/path/to/pgbackrest"); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), "help from empty command line"); TEST_RESULT_STR_Z(helpRender(), generalHelp, " check text"); argList = strLstNew(); strLstAddZ(argList, "/path/to/pgbackrest"); strLstAddZ(argList, "help"); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), "help from help command"); TEST_RESULT_STR_Z(helpRender(), generalHelp, " check text"); // ------------------------------------------------------------------------------------------------------------------------- const char *commandHelp = strPtr(strNewFmt( "%s%s", helpVersion, " - 'version' command help\n" "\n" "Get version.\n" "\n" "Displays installed pgBackRest version.\n")); argList = strLstNew(); strLstAddZ(argList, "/path/to/pgbackrest"); strLstAddZ(argList, "help"); strLstAddZ(argList, "version"); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), "help for version command"); TEST_RESULT_STR_Z(helpRender(), commandHelp, " check text"); // This test is broken up into multiple strings because C99 does not require compilers to support const strings > 4095 bytes // ------------------------------------------------------------------------------------------------------------------------- commandHelp = strPtr(strNewFmt( "%s%s%s", helpVersion, " - 'restore' command help\n" "\n" "Restore a database cluster.\n" "\n" "This command is generally run manually, but there are instances where it might\n" "be automated.\n" "\n" "Command Options:\n" "\n" " --db-include restore only specified databases\n" " [current=db1, db2]\n" " --force force a restore [default=n]\n" " --link-all restore all symlinks [default=n]\n" " --link-map modify the destination of a symlink\n" " [current=/link1=/dest1, /link2=/dest2]\n" " --recovery-option set an option in recovery.conf\n" " --set backup set to restore [default=latest]\n" " --tablespace-map restore a tablespace into the specified\n" " directory\n" " --tablespace-map-all restore all tablespaces into the specified\n" " directory\n" " --target recovery target\n" " --target-action action to take when recovery target is\n" " reached [default=pause]\n" " --target-exclusive stop just before the recovery target is\n" " reached [default=n]\n" " --target-timeline recover along a timeline\n" " --type recovery type [default=default]\n" "\n" "General Options:\n" "\n" " --buffer-size buffer size for file operations\n" " [current=32768, default=4194304]\n" " --cmd-ssh path to ssh client executable [default=ssh]\n" " --compress use gzip file compression [default=y]\n" " --compress-level compression level for stored files\n" " [default=6]\n" " --compress-level-network compression level for network transfer when\n" " compress=n [default=3]\n" " --config pgBackRest configuration file\n" " [default=/etc/pgbackrest/pgbackrest.conf]\n" " --config-include-path path to additional pgBackRest configuration\n" " files [default=/etc/pgbackrest/conf.d]\n" " --config-path base path of pgBackRest configuration files\n" " [default=/etc/pgbackrest]\n" " --delta restore or backup using checksums [default=n]\n" " --lock-path path where lock files are stored\n" " [default=/tmp/pgbackrest]\n" " --neutral-umask use a neutral umask [default=y]\n" " --process-max max processes to use for compress/transfer\n" " [default=1]\n" " --protocol-timeout protocol timeout [default=1830]\n" " --stanza defines the stanza\n" "\n" "Log Options:\n" "\n" " --log-level-console level for console logging [default=warn]\n" " --log-level-file level for file logging [default=info]\n" " --log-level-stderr level for stderr logging [default=warn]\n" " --log-path path where log files are stored\n" " [default=/var/log/pgbackrest]\n" " --log-subprocess enable logging in subprocesses [default=n]\n" " --log-timestamp enable timestamp in logging [default=y]\n" "\n", "Repository Options:\n" "\n" " --repo-cipher-pass repository cipher passphrase\n" " [current=]\n" " --repo-cipher-type cipher used to encrypt the repository\n" " [current=aes-256-cbc, default=none]\n" " --repo-host repository host when operating remotely via\n" " SSH [current=backup.example.net]\n" " --repo-host-cmd pgBackRest exe path on the repository host\n" " --repo-host-config pgBackRest repository host configuration\n" " file\n" " [default=/etc/pgbackrest/pgbackrest.conf]\n" " --repo-host-config-include-path pgBackRest repository host configuration\n" " include path [default=/etc/pgbackrest/conf.d]\n" " --repo-host-config-path pgBackRest repository host configuration\n" " path [default=/etc/pgbackrest]\n" " --repo-host-port repository host port when repo-host is set\n" " --repo-host-user repository host user when repo-host is set\n" " [default=pgbackrest]\n" " --repo-path path where backups and archive are stored\n" " [default=/var/lib/pgbackrest]\n" " --repo-s3-bucket s3 repository bucket\n" " --repo-s3-ca-file s3 SSL CA File\n" " --repo-s3-ca-path s3 SSL CA Path\n" " --repo-s3-endpoint s3 repository endpoint\n" " --repo-s3-host s3 repository host\n" " --repo-s3-key s3 repository access key\n" " --repo-s3-key-secret s3 repository secret access key\n" " --repo-s3-port s3 repository port [default=443]\n" " --repo-s3-region s3 repository region\n" " --repo-s3-token s3 repository security token\n" " --repo-s3-uri-style s3 URI Style [default=host]\n" " --repo-s3-verify-tls verify S3 server certificate [default=y]\n" " --repo-type type of storage used for the repository\n" " [default=posix]\n" "\n" "Stanza Options:\n" "\n" " --pg-path postgreSQL data directory\n" "\n" "Use 'pgbackrest help restore [option]' for more information.\n")); argList = strLstNew(); strLstAddZ(argList, "/path/to/pgbackrest"); strLstAddZ(argList, "help"); strLstAddZ(argList, "restore"); strLstAddZ(argList, "--buffer-size=32768"); strLstAddZ(argList, "--repo1-cipher-type=aes-256-cbc"); setenv("PGBACKREST_REPO1_CIPHER_PASS", "supersecret", true); strLstAddZ(argList, "--repo1-host=backup.example.net"); strLstAddZ(argList, "--link-map=/link1=/dest1"); strLstAddZ(argList, "--link-map=/link2=/dest2"); strLstAddZ(argList, "--db-include=db1"); strLstAddZ(argList, "--db-include=db2"); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), "help for restore command"); unsetenv("PGBACKREST_REPO1_CIPHER_PASS"); TEST_RESULT_STR_Z(helpRender(), commandHelp, " check text"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "/path/to/pgbackrest"); strLstAddZ(argList, "help"); strLstAddZ(argList, "archive-push"); strLstAddZ(argList, "buffer-size"); strLstAddZ(argList, "buffer-size"); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), "parse too many options"); TEST_ERROR(helpRender(), ParamInvalidError, "only one option allowed for option help"); argList = strLstNew(); strLstAddZ(argList, "/path/to/pgbackrest"); strLstAddZ(argList, "help"); strLstAddZ(argList, "archive-push"); strLstAddZ(argList, BOGUS_STR); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), "parse bogus option"); TEST_ERROR(helpRender(), OptionInvalidError, "option 'BOGUS' is not valid for command 'archive-push'"); // ------------------------------------------------------------------------------------------------------------------------- const char *optionHelp = strPtr(strNewFmt( "%s - 'archive-push' command - 'buffer-size' option help\n" "\n" "Buffer size for file operations.\n" "\n" "Set the buffer size used for copy, compress, and uncompress functions. A\n" "maximum of 3 buffers will be in use at a time per process. An additional\n" "maximum of 256K per process may be used for zlib buffers.\n" "\n" "Size can be entered in bytes (default) or KB, MB, GB, TB, or PB where the\n" "multiplier is a power of 1024. For example, the case-insensitive value 32k (or\n" "32KB) can be used instead of 32768.\n" "\n" "Allowed values, in bytes, are 16384, 32768, 65536, 131072, 262144, 524288,\n" "1048576, 2097152, 4194304, 8388608, and 16777216.\n", helpVersion)); argList = strLstNew(); strLstAddZ(argList, "/path/to/pgbackrest"); strLstAddZ(argList, "help"); strLstAddZ(argList, "archive-push"); strLstAddZ(argList, "buffer-size"); TEST_RESULT_VOID( configParse(strLstSize(argList), strLstPtr(argList), false), "help for archive-push command, buffer-size option"); TEST_RESULT_STR(helpRender(), strNewFmt("%s\ndefault: 4194304\n", optionHelp), " check text"); strLstAddZ(argList, "--buffer-size=32768"); TEST_RESULT_VOID( configParse(strLstSize(argList), strLstPtr(argList), false), "help for archive-push command, buffer-size option"); TEST_RESULT_STR(helpRender(), strNewFmt("%s\ncurrent: 32768\ndefault: 4194304\n", optionHelp), " check text"); // ------------------------------------------------------------------------------------------------------------------------- optionHelp = strPtr(strNewFmt( "%s - 'archive-push' command - 'repo1-s3-host' option help\n" "\n" "S3 repository host.\n" "\n" "Connect to a host other than the end point. This is typically used for testing.\n", helpVersion)); argList = strLstNew(); strLstAddZ(argList, "/path/to/pgbackrest"); strLstAddZ(argList, "help"); strLstAddZ(argList, "archive-push"); strLstAddZ(argList, "repo1-s3-host"); TEST_RESULT_VOID( configParse(strLstSize(argList), strLstPtr(argList), false), "help for archive-push command, repo1-s3-host option"); TEST_RESULT_STR_Z(helpRender(), optionHelp, " check text"); strLstAddZ(argList, "--repo1-type=s3"); strLstAddZ(argList, "--repo1-s3-host=s3-host"); TEST_RESULT_VOID( configParse(strLstSize(argList), strLstPtr(argList), false), "help for archive-push command, repo1-s3-host option"); TEST_RESULT_STR(helpRender(), strNewFmt("%s\ncurrent: s3-host\n", optionHelp), " check text"); // ------------------------------------------------------------------------------------------------------------------------- optionHelp = strPtr(strNewFmt( "%s - 'archive-push' command - 'repo-cipher-pass' option help\n" "\n" "Repository cipher passphrase.\n" "\n" "Passphrase used to encrypt/decrypt files of the repository.\n" "\n" "current: \n", helpVersion)); argList = strLstNew(); strLstAddZ(argList, "/path/to/pgbackrest"); strLstAddZ(argList, "help"); strLstAddZ(argList, "--repo1-cipher-type=aes-256-cbc"); setenv("PGBACKREST_REPO1_CIPHER_PASS", "supersecret", true); strLstAddZ(argList, "archive-push"); strLstAddZ(argList, "repo-cipher-pass"); TEST_RESULT_VOID( configParse(strLstSize(argList), strLstPtr(argList), false), "help for archive-push command, repo1-s3-host option"); unsetenv("PGBACKREST_REPO1_CIPHER_PASS"); TEST_RESULT_STR_Z(helpRender(), optionHelp, " check text"); // ------------------------------------------------------------------------------------------------------------------------- optionHelp = strPtr(strNewFmt( "%s - 'backup' command - 'repo-hardlink' option help\n" "\n" "Hardlink files between backups in the repository.\n" "\n" "Enable hard-linking of files in differential and incremental backups to their\n" "full backups. This gives the appearance that each backup is a full backup at\n" "the file-system level. Be careful, though, because modifying files that are\n" "hard-linked can affect all the backups in the set.\n" "\n" "default: n\n" "\n" "deprecated name: hardlink\n", helpVersion)); argList = strLstNew(); strLstAddZ(argList, "/path/to/pgbackrest"); strLstAddZ(argList, "help"); strLstAddZ(argList, "backup"); strLstAddZ(argList, "repo-hardlink"); TEST_RESULT_VOID( configParse(strLstSize(argList), strLstPtr(argList), false), "help for backup command, repo-hardlink option"); TEST_RESULT_STR_Z(helpRender(), optionHelp, " check text"); // Check admonition // ------------------------------------------------------------------------------------------------------------------------- optionHelp = strPtr(strNewFmt( "%s - 'backup' command - 'repo-retention-archive' option help\n" "\n" "Number of backups worth of continuous WAL to retain.\n" "\n" "NOTE: WAL segments required to make a backup consistent are always retained\n" "until the backup is expired regardless of how this option is configured.\n" "\n" "If this value is not set, then the archive to expire will default to the\n" "repo-retention-full (or repo-retention-diff) value corresponding to the\n" "repo-retention-archive-type if set to full (or diff). This will ensure that WAL\n" "is only expired for backups that are already expired.\n" "\n" "This option must be set if repo-retention-archive-type is set to incr. If disk\n" "space is at a premium, then this setting, in conjunction with\n" "repo-retention-archive-type, can be used to aggressively expire WAL segments.\n" "However, doing so negates the ability to perform PITR from the backups with\n" "expired WAL and is therefore not recommended.\n" "\n" "deprecated name: retention-archive\n", helpVersion)); argList = strLstNew(); strLstAddZ(argList, "/path/to/pgbackrest"); strLstAddZ(argList, "help"); strLstAddZ(argList, "backup"); strLstAddZ(argList, "repo-retention-archive"); TEST_RESULT_VOID( configParse(strLstSize(argList), strLstPtr(argList), false), "help for backup command, repo-retention-archive option"); TEST_RESULT_STR_Z(helpRender(), optionHelp, " check admonition text"); } // ***************************************************************************************************************************** if (testBegin("cmdHelp()")) { StringList *argList = strLstNew(); strLstAddZ(argList, "/path/to/pgbackrest"); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), "parse help from empty command line"); // Redirect stdout to a file int stdoutSave = dup(STDOUT_FILENO); String *stdoutFile = strNewFmt("%s/stdout.help", testPath()); THROW_ON_SYS_ERROR(freopen(strPtr(stdoutFile), "w", stdout) == NULL, FileWriteError, "unable to reopen stdout"); // Not in a test wrapper to avoid writing to stdout cmdHelp(); // Restore normal stdout dup2(stdoutSave, STDOUT_FILENO); Storage *storage = storagePosixNew( strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, false, NULL); TEST_RESULT_STR_Z(strNewBuf(storageGetP(storageNewReadP(storage, stdoutFile))), generalHelp, " check text"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/command/infoTest.c000066400000000000000000001666501362531507100236350ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Info Command ***********************************************************************************************************************************/ #include "storage/posix/storage.h" #include "common/harnessConfig.h" #include "common/harnessInfo.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // The tests expect the timezone to be UTC setenv("TZ", "UTC", true); // Create the repo directories String *repoPath = strNewFmt("%s/repo", testPath()); String *archivePath = strNewFmt("%s/%s", strPtr(repoPath), "archive"); String *backupPath = strNewFmt("%s/%s", strPtr(repoPath), "backup"); String *archiveStanza1Path = strNewFmt("%s/stanza1", strPtr(archivePath)); String *backupStanza1Path = strNewFmt("%s/stanza1", strPtr(backupPath)); // ***************************************************************************************************************************** if (testBegin("infoRender()")) { StringList *argList = strLstNew(); strLstAdd(argList, strNewFmt("--repo-path=%s/", strPtr(repoPath))); StringList *argListText = strLstDup(argList); strLstAddZ(argList, "--output=json"); harnessCfgLoad(cfgCmdInfo, argList); // No stanzas have been created //-------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_STR_Z(infoRender(), "[]", "json - repo but no stanzas"); harnessCfgLoad(cfgCmdInfo, argListText); TEST_RESULT_STR_Z(infoRender(), "No stanzas exist in the repository.\n", "text - no stanzas"); storagePathCreateP(storageLocalWrite(), archivePath); storagePathCreateP(storageLocalWrite(), backupPath); // Empty stanza //-------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(storagePathCreateP(storageLocalWrite(), backupStanza1Path), "backup stanza1 directory"); TEST_RESULT_VOID(storagePathCreateP(storageLocalWrite(), archiveStanza1Path), "archive stanza1 directory"); TEST_RESULT_STR_Z( infoRender(), "stanza: stanza1\n" " status: error (missing stanza data)\n" " cipher: none\n", "text - missing stanza data"); harnessCfgLoad(cfgCmdInfo, argList); TEST_RESULT_STR_Z( infoRender(), "[" "{" "\"archive\":[]," "\"backup\":[]," "\"cipher\":\"none\"," "\"db\":[]," "\"name\":\"stanza1\"," "\"status\":{" "\"code\":3," "\"message\":\"missing stanza data\"" "}" "}" "]", "json - missing stanza data"); // backup.info file exists, but archive.info does not //-------------------------------------------------------------------------------------------------------------------------- String *content = strNew ( "[cipher]\n" "cipher-pass=\"12345\"\n" "\n" "[db]\n" "db-catalog-version=201409291\n" "db-control-version=942\n" "db-id=2\n" "db-system-id=6569239123849665679\n" "db-version=\"9.4\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201306121,\"db-control-version\":937,\"db-system-id\":6569239123849665666," "\"db-version\":\"9.3\"}\n" "2={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6569239123849665679," "\"db-version\":\"9.4\"}\n" ); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageLocalWrite(), strNewFmt("%s/backup.info", strPtr(backupStanza1Path))), harnessInfoChecksum(content)), "put backup info to file"); TEST_ERROR_FMT(infoRender(), FileMissingError, "unable to load info file '%s/archive.info' or '%s/archive.info.copy':\n" "FileMissingError: " STORAGE_ERROR_READ_MISSING "\n" "FileMissingError: " STORAGE_ERROR_READ_MISSING "\n" "HINT: archive.info cannot be opened but is required to push/get WAL segments.\n" "HINT: is archive_command configured correctly in postgresql.conf?\n" "HINT: has a stanza-create been performed?\n" "HINT: use --no-archive-check to disable archive checks during backup if you have an alternate archiving scheme.", strPtr(archiveStanza1Path), strPtr(archiveStanza1Path), strPtr(strNewFmt("%s/archive.info", strPtr(archiveStanza1Path))), strPtr(strNewFmt("%s/archive.info.copy", strPtr(archiveStanza1Path)))); // backup.info/archive.info files exist, mismatched db ids, no backup:current section so no valid backups // Only the current db information from the db:history will be processed. //-------------------------------------------------------------------------------------------------------------------------- content = strNew ( "[db]\n" "db-id=1\n" "db-system-id=6569239123849665679\n" "db-version=\"9.4\"\n" "\n" "[db:history]\n" "1={\"db-id\":6569239123849665679,\"db-version\":\"9.4\"}\n" "2={\"db-id\":6569239123849665666,\"db-version\":\"9.3\"}\n" "3={\"db-id\":6569239123849665679,\"db-version\":\"9.4\"}\n" ); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageLocalWrite(), strNewFmt("%s/archive.info", strPtr(archiveStanza1Path))), harnessInfoChecksum(content)), "put archive info to file"); // archive section will cross reference backup db-id 2 to archive db-id 3 but db section will only use the db-ids from // backup.info TEST_RESULT_STR_Z( infoRender(), "[" "{" "\"archive\":[" "{" "\"database\":{" "\"id\":2" "}," "\"id\":\"9.4-3\"," "\"max\":null," "\"min\":null" "}" "]," "\"backup\":[]," "\"cipher\":\"aes-256-cbc\"," "\"db\":[" "{" "\"id\":1," "\"system-id\":6569239123849665666," "\"version\":\"9.3\"" "}," "{" "\"id\":2," "\"system-id\":6569239123849665679," "\"version\":\"9.4\"" "}" "]," "\"name\":\"stanza1\"," "\"status\":{" "\"code\":2," "\"message\":\"no valid backups\"" "}" "}" "]", "json - single stanza, no valid backups"); harnessCfgLoad(cfgCmdInfo, argListText); TEST_RESULT_STR_Z( infoRender(), "stanza: stanza1\n" " status: error (no valid backups)\n" " cipher: aes-256-cbc\n" "\n" " db (current)\n" " wal archive min/max (9.4-3): none present\n", "text - single stanza, no valid backups"); // Add WAL segments //-------------------------------------------------------------------------------------------------------------------------- String *archiveDb3 = strNewFmt("%s/9.4-3/0000000100000000", strPtr(archiveStanza1Path)); TEST_RESULT_VOID(storagePathCreateP(storageLocalWrite(), archiveDb3), "create db3 archive WAL1 directory"); String *archiveDb3Wal = strNewFmt( "%s/000000010000000000000004-47dff2b7552a9d66e4bae1a762488a6885e7082c.gz", strPtr(archiveDb3)); TEST_RESULT_VOID(storagePutP(storageNewWriteP(storageLocalWrite(), archiveDb3Wal), bufNew(0)), "touch WAL3 file"); StringList *argList2 = strLstDup(argListText); strLstAddZ(argList2, "--stanza=stanza1"); harnessCfgLoad(cfgCmdInfo, argList2); TEST_RESULT_STR_Z( infoRender(), "stanza: stanza1\n" " status: error (no valid backups)\n" " cipher: aes-256-cbc\n" "\n" " db (current)\n" " wal archive min/max (9.4-3): 000000010000000000000004/000000010000000000000004\n", "text - single stanza, one wal segment"); TEST_RESULT_VOID(storageRemoveP(storageLocalWrite(), archiveDb3Wal, .errorOnMissing = true), "remove WAL file"); // Coverage for stanzaStatus branches //-------------------------------------------------------------------------------------------------------------------------- String *archiveDb1_1 = strNewFmt("%s/9.4-1/0000000100000000", strPtr(archiveStanza1Path)); TEST_RESULT_VOID(storagePathCreateP(storageLocalWrite(), archiveDb1_1), "create db1 archive WAL1 directory"); TEST_RESULT_INT(system( strPtr(strNewFmt("touch %s", strPtr(strNewFmt("%s/000000010000000000000002-ac61b8f1ec7b1e6c3eaee9345214595eb7daa9a1.gz", strPtr(archiveDb1_1)))))), 0, "touch WAL1 file"); TEST_RESULT_INT(system( strPtr(strNewFmt("touch %s", strPtr(strNewFmt("%s/000000010000000000000003-37dff2b7552a9d66e4bae1a762488a6885e7082c.gz", strPtr(archiveDb1_1)))))), 0, "touch WAL1 file"); String *archiveDb1_2 = strNewFmt("%s/9.4-1/0000000200000000", strPtr(archiveStanza1Path)); TEST_RESULT_VOID(storagePathCreateP(storageLocalWrite(), archiveDb1_2), "create db1 archive WAL2 directory"); TEST_RESULT_INT(system( strPtr(strNewFmt("touch %s", strPtr(strNewFmt("%s/000000020000000000000003-37dff2b7552a9d66e4bae1a762488a6885e7082c.gz", strPtr(archiveDb1_2)))))), 0, "touch WAL2 file"); String *archiveDb1_3 = strNewFmt("%s/9.4-1/0000000300000000", strPtr(archiveStanza1Path)); TEST_RESULT_VOID(storagePathCreateP(storageLocalWrite(), archiveDb1_3), "create db1 archive WAL3 directory"); harnessCfgLoad(cfgCmdInfo, argList); content = strNew ( "[db]\n" "db-catalog-version=201409291\n" "db-control-version=942\n" "db-id=3\n" "db-system-id=6569239123849665679\n" "db-version=\"9.4\"\n" "\n" "[backup:current]\n" "20181116-154756F={\"backrest-format\":5,\"backrest-version\":\"2.04\"," "\"backup-archive-start\":null,\"backup-archive-stop\":null," "\"backup-info-repo-size\":3159776,\"backup-info-repo-size-delta\":3159,\"backup-info-size\":26897030," "\"backup-info-size-delta\":26897030,\"backup-timestamp-start\":1542383276,\"backup-timestamp-stop\":1542383289," "\"backup-type\":\"full\",\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false," "\"option-backup-standby\":false,\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false," "\"option-online\":true}\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6569239123849665679," "\"db-version\":\"9.4\"}\n" "2={\"db-catalog-version\":201306121,\"db-control-version\":937,\"db-system-id\":6569239123849665666," "\"db-version\":\"9.3\"}\n" "3={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6569239123849665679," "\"db-version\":\"9.4\"}\n" ); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageLocalWrite(), strNewFmt("%s/backup.info", strPtr(backupStanza1Path))), harnessInfoChecksum(content)), "put backup info to file"); TEST_RESULT_STR_Z( infoRender(), "[" "{" "\"archive\":[" "{" "\"database\":{" "\"id\":1" "}," "\"id\":\"9.4-1\"," "\"max\":\"000000020000000000000003\"," "\"min\":\"000000010000000000000002\"" "}," "{" "\"database\":{" "\"id\":3" "}," "\"id\":\"9.4-3\"," "\"max\":null," "\"min\":null" "}" "]," "\"backup\":[" "{" "\"archive\":{" "\"start\":null," "\"stop\":null" "}," "\"backrest\":{" "\"format\":5," "\"version\":\"2.04\"" "}," "\"database\":{" "\"id\":1" "}," "\"info\":{" "\"delta\":26897030," "\"repository\":{" "\"delta\":3159," "\"size\":3159776" "}," "\"size\":26897030" "}," "\"label\":\"20181116-154756F\"," "\"prior\":null," "\"reference\":null," "\"timestamp\":{" "\"start\":1542383276," "\"stop\":1542383289" "}," "\"type\":\"full\"" "}" "]," "\"cipher\":\"none\"," "\"db\":[" "{" "\"id\":1," "\"system-id\":6569239123849665679," "\"version\":\"9.4\"" "}," "{" "\"id\":2," "\"system-id\":6569239123849665666," "\"version\":\"9.3\"" "}," "{" "\"id\":3," "\"system-id\":6569239123849665679," "\"version\":\"9.4\"" "}" "]," "\"name\":\"stanza1\"," "\"status\":{" "\"code\":0," "\"message\":\"ok\"" "}" "}" "]", "json - single stanza, valid backup, no priors, no archives in latest DB"); harnessCfgLoad(cfgCmdInfo, argListText); TEST_RESULT_STR_Z( infoRender(), "stanza: stanza1\n" " status: ok\n" " cipher: none\n" "\n" " db (prior)\n" " wal archive min/max (9.4-1): 000000010000000000000002/000000020000000000000003\n" "\n" " full backup: 20181116-154756F\n" " timestamp start/stop: 2018-11-16 15:47:56 / 2018-11-16 15:48:09\n" " wal start/stop: n/a\n" " database size: 25.7MB, backup size: 25.7MB\n" " repository size: 3MB, repository backup size: 3KB\n" "\n" " db (current)\n" " wal archive min/max (9.4-3): none present\n", "text - single stanza, valid backup, no priors, no archives in latest DB"); // backup.info/archive.info files exist, backups exist, archives exist //-------------------------------------------------------------------------------------------------------------------------- content = strNew ( "[db]\n" "db-id=2\n" "db-system-id=6626363367545678089\n" "db-version=\"9.5\"\n" "\n" "[db:history]\n" "1={\"db-id\":6625592122879095702,\"db-version\":\"9.4\"}\n" "2={\"db-id\":6626363367545678089,\"db-version\":\"9.5\"}\n" ); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageLocalWrite(), strNewFmt("%s/archive.info", strPtr(archiveStanza1Path))), harnessInfoChecksum(content)), "put archive info to file - stanza1"); content = strNew ( "[backup:current]\n" "20181119-152138F={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\"," "\"backup-archive-start\":\"000000010000000000000002\",\"backup-archive-stop\":\"000000010000000000000002\"," "\"backup-info-repo-size\":2369186,\"backup-info-repo-size-delta\":2369186," "\"backup-info-size\":20162900,\"backup-info-size-delta\":20162900," "\"backup-timestamp-start\":1542640898,\"backup-timestamp-stop\":1542640911,\"backup-type\":\"full\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152138F_20181119-152152D={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\",\"backup-archive-start\":\"000000010000000000000003\"," "\"backup-archive-stop\":\"000000010000000000000003\",\"backup-info-repo-size\":2369186," "\"backup-info-repo-size-delta\":346,\"backup-info-size\":20162900,\"backup-info-size-delta\":8428," "\"backup-prior\":\"20181119-152138F\",\"backup-reference\":[\"20181119-152138F\"]," "\"backup-timestamp-start\":1542640912,\"backup-timestamp-stop\":1542640915,\"backup-type\":\"diff\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20181119-152138F_20181119-152152I={" "\"backrest-format\":5,\"backrest-version\":\"2.08dev\",\"backup-archive-start\":\"000000010000000000000003\"," "\"backup-info-repo-size\":2369186," "\"backup-info-repo-size-delta\":346,\"backup-info-size\":20162900,\"backup-info-size-delta\":8428," "\"backup-prior\":\"20181119-152138F_20181119-152152D\"," "\"backup-reference\":[\"20181119-152138F\",\"20181119-152138F_20181119-152152D\"]," "\"backup-timestamp-start\":1542640912,\"backup-timestamp-stop\":1542640915,\"backup-type\":\"incr\"," "\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":true,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "\n" "[db]\n" "db-catalog-version=201510051\n" "db-control-version=942\n" "db-id=2\n" "db-system-id=6626363367545678089\n" "db-version=\"9.5\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6625592122879095702," "\"db-version\":\"9.4\"}\n" "2={\"db-catalog-version\":201510051,\"db-control-version\":942,\"db-system-id\":6626363367545678089," "\"db-version\":\"9.5\"}\n" ); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageLocalWrite(), strNewFmt("%s/backup.info", strPtr(backupStanza1Path))), harnessInfoChecksum(content)), "put backup info to file - stanza1"); // Manifest with all features // ------------------------------------------------------------------------------------------------------------------------- #define TEST_MANIFEST_HEADER \ "[backup]\n" \ "backup-archive-start=\"000000030000028500000089\"\n" \ "backup-archive-stop=\"000000030000028500000089\"\n" \ "backup-label=\"20190818-084502F_20190820-084502D\"\n" \ "backup-lsn-start=\"285/89000028\"\n" \ "backup-lsn-stop=\"285/89001F88\"\n" \ "backup-prior=\"20190818-084502F\"\n" \ "backup-timestamp-copy-start=1565282141\n" \ "backup-timestamp-start=1565282140\n" \ "backup-timestamp-stop=1565282142\n" \ "backup-type=\"full\"\n" \ "\n" \ "[backup:db]\n" \ "db-catalog-version=201409291\n" \ "db-control-version=942\n" \ "db-id=1\n" \ "db-system-id=1000000000000000094\n" \ "db-version=\"9.4\"\n" \ "\n" \ "[backup:option]\n" \ "option-archive-check=true\n" \ "option-archive-copy=true\n" \ "option-backup-standby=false\n" \ "option-buffer-size=16384\n" \ "option-checksum-page=true\n" \ "option-compress=false\n" \ "option-compress-level=3\n" \ "option-compress-level-network=3\n" \ "option-delta=false\n" \ "option-hardlink=false\n" \ "option-online=false\n" \ "option-process-max=32\n" #define TEST_MANIFEST_TARGET \ "\n" \ "[backup:target]\n" \ "pg_data={\"path\":\"/pg/base\",\"type\":\"path\"}\n" \ "pg_data/pg_hba.conf={\"file\":\"pg_hba.conf\",\"path\":\"../pg_config\",\"type\":\"link\"}\n" \ "pg_data/pg_stat={\"path\":\"../pg_stat\",\"type\":\"link\"}\n" \ "pg_tblspc/1={\"path\":\"/tblspc/ts1\",\"tablespace-id\":\"1\",\"tablespace-name\":\"ts1\",\"type\":\"link\"}\n" \ "pg_tblspc/12={\"path\":\"/tblspc/ts12\",\"tablespace-id\":\"12\",\"tablespace-name\":\"ts12\",\"type\":\"link\"}\n" #define TEST_MANIFEST_DB \ "\n" \ "[db]\n" \ "mail={\"db-id\":16456,\"db-last-system-id\":12168}\n" \ "postgres={\"db-id\":12173,\"db-last-system-id\":12168}\n" \ "template0={\"db-id\":12168,\"db-last-system-id\":12168}\n" \ "template1={\"db-id\":1,\"db-last-system-id\":12168}\n" \ #define TEST_MANIFEST_FILE \ "\n" \ "[target:file]\n" \ "pg_data/PG_VERSION={\"checksum\":\"184473f470864e067ee3a22e64b47b0a1c356f29\",\"master\":true" \ ",\"reference\":\"20190818-084502F_20190819-084506D\",\"size\":4,\"timestamp\":1565282114}\n" \ "pg_data/base/16384/17000={\"checksum\":\"e0101dd8ffb910c9c202ca35b5f828bcb9697bed\",\"checksum-page\":false" \ ",\"checksum-page-error\":[1],\"repo-size\":4096,\"size\":8192,\"timestamp\":1565282114}\n" \ "pg_data/base/16384/PG_VERSION={\"checksum\":\"184473f470864e067ee3a22e64b47b0a1c356f29\",\"group\":false,\"size\":4" \ ",\"timestamp\":1565282115}\n" \ "pg_data/base/32768/33000={\"checksum\":\"7a16d165e4775f7c92e8cdf60c0af57313f0bf90\",\"checksum-page\":true" \ ",\"reference\":\"20190818-084502F\",\"size\":1073741824,\"timestamp\":1565282116}\n" \ "pg_data/base/32768/33000.32767={\"checksum\":\"6e99b589e550e68e934fd235ccba59fe5b592a9e\",\"checksum-page\":true" \ ",\"reference\":\"20190818-084502F\",\"size\":32768,\"timestamp\":1565282114}\n" \ "pg_data/postgresql.conf={\"checksum\":\"6721d92c9fcdf4248acff1f9a1377127d9064807\",\"master\":true,\"size\":4457" \ ",\"timestamp\":1565282114}\n" \ "pg_data/special={\"master\":true,\"mode\":\"0640\",\"size\":0,\"timestamp\":1565282120,\"user\":false}\n" #define TEST_MANIFEST_FILE_DEFAULT \ "\n" \ "[target:file:default]\n" \ "group=\"group1\"\n" \ "master=false\n" \ "mode=\"0600\"\n" \ "user=\"user1\"\n" #define TEST_MANIFEST_LINK \ "\n" \ "[target:link]\n" \ "pg_data/pg_stat={\"destination\":\"../pg_stat\"}\n" \ "pg_data/postgresql.conf={\"destination\":\"../pg_config/postgresql.conf\",\"group\":false,\"user\":\"user1\"}\n" #define TEST_MANIFEST_LINK_DEFAULT \ "\n" \ "[target:link:default]\n" \ "group=\"group1\"\n" \ "user=false\n" #define TEST_MANIFEST_PATH \ "\n" \ "[target:path]\n" \ "pg_data={\"user\":\"user2\"}\n" \ "pg_data/base={\"group\":\"group2\"}\n" \ "pg_data/base/16384={\"mode\":\"0750\"}\n" \ "pg_data/base/32768={}\n" \ "pg_data/base/65536={\"user\":false}\n" #define TEST_MANIFEST_PATH_DEFAULT \ "\n" \ "[target:path:default]\n" \ "group=false\n" \ "mode=\"0700\"\n" \ "user=\"user1\"\n" const Buffer *contentLoad = harnessInfoChecksumZ ( TEST_MANIFEST_HEADER TEST_MANIFEST_TARGET TEST_MANIFEST_DB TEST_MANIFEST_FILE TEST_MANIFEST_FILE_DEFAULT TEST_MANIFEST_LINK TEST_MANIFEST_LINK_DEFAULT TEST_MANIFEST_PATH TEST_MANIFEST_PATH_DEFAULT ); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageLocalWrite(), strNewFmt("%s/20181119-152138F_20181119-152152I/" BACKUP_MANIFEST_FILE, strPtr(backupStanza1Path))), contentLoad), "write manifest - stanza1"); String *archiveStanza2Path = strNewFmt("%s/stanza2", strPtr(archivePath)); String *backupStanza2Path = strNewFmt("%s/stanza2", strPtr(backupPath)); TEST_RESULT_VOID(storagePathCreateP(storageLocalWrite(), backupStanza1Path), "backup stanza2 directory"); TEST_RESULT_VOID(storagePathCreateP(storageLocalWrite(), archiveStanza1Path), "archive stanza2 directory"); content = strNew ( "[db]\n" "db-id=1\n" "db-system-id=6625633699176220261\n" "db-version=\"9.4\"\n" "\n" "[db:history]\n" "1={\"db-id\":6625633699176220261,\"db-version\":\"9.4\"}\n" ); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageLocalWrite(), strNewFmt("%s/archive.info", strPtr(archiveStanza2Path))), harnessInfoChecksum(content)), "put archive info to file - stanza2"); content = strNew ( "[db]\n" "db-catalog-version=201409291\n" "db-control-version=942\n" "db-id=1\n" "db-system-id=6625633699176220261\n" "db-version=\"9.4\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6625633699176220261," "\"db-version\":\"9.4\"}\n" ); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageLocalWrite(), strNewFmt("%s/backup.info", strPtr(backupStanza2Path))), harnessInfoChecksum(content)), "put backup info to file - stanza2"); harnessCfgLoad(cfgCmdInfo, argList); TEST_RESULT_STR_Z( infoRender(), "[" "{" "\"archive\":[" "{" "\"database\":{" "\"id\":1" "}," "\"id\":\"9.4-1\"," "\"max\":\"000000020000000000000003\"," "\"min\":\"000000010000000000000002\"" "}," "{" "\"database\":{" "\"id\":2" "}," "\"id\":\"9.5-2\"," "\"max\":null," "\"min\":null" "}" "]," "\"backup\":[" "{" "\"archive\":{" "\"start\":\"000000010000000000000002\"," "\"stop\":\"000000010000000000000002\"" "}," "\"backrest\":{" "\"format\":5," "\"version\":\"2.08dev\"" "}," "\"database\":{" "\"id\":1" "}," "\"info\":{" "\"delta\":20162900," "\"repository\":{" "\"delta\":2369186," "\"size\":2369186" "}," "\"size\":20162900" "}," "\"label\":\"20181119-152138F\"," "\"prior\":null," "\"reference\":null," "\"timestamp\":{" "\"start\":1542640898," "\"stop\":1542640911" "}," "\"type\":\"full\"" "}," "{" "\"archive\":{" "\"start\":\"000000010000000000000003\"," "\"stop\":\"000000010000000000000003\"" "}," "\"backrest\":{" "\"format\":5," "\"version\":\"2.08dev\"" "}," "\"database\":{" "\"id\":1" "}," "\"info\":{" "\"delta\":8428," "\"repository\":{" "\"delta\":346," "\"size\":2369186" "}," "\"size\":20162900" "}," "\"label\":\"20181119-152138F_20181119-152152D\"," "\"prior\":\"20181119-152138F\"," "\"reference\":[" "\"20181119-152138F\"" "]," "\"timestamp\":{" "\"start\":1542640912," "\"stop\":1542640915" "}," "\"type\":\"diff\"" "}," "{" "\"archive\":{" "\"start\":\"000000010000000000000003\"," "\"stop\":null" "}," "\"backrest\":{" "\"format\":5," "\"version\":\"2.08dev\"" "}," "\"database\":{" "\"id\":1" "}," "\"info\":{" "\"delta\":8428," "\"repository\":{" "\"delta\":346," "\"size\":2369186" "}," "\"size\":20162900" "}," "\"label\":\"20181119-152138F_20181119-152152I\"," "\"prior\":\"20181119-152138F_20181119-152152D\"," "\"reference\":[" "\"20181119-152138F\"," "\"20181119-152138F_20181119-152152D\"" "]," "\"timestamp\":{" "\"start\":1542640912," "\"stop\":1542640915" "}," "\"type\":\"incr\"" "}" "]," "\"cipher\":\"none\"," "\"db\":[" "{" "\"id\":1," "\"system-id\":6625592122879095702," "\"version\":\"9.4\"" "}," "{" "\"id\":2," "\"system-id\":6626363367545678089," "\"version\":\"9.5\"" "}" "]," "\"name\":\"stanza1\"," "\"status\":{" "\"code\":0," "\"message\":\"ok\"" "}" "}," "{" "\"archive\":[" "{" "\"database\":{" "\"id\":1" "}," "\"id\":\"9.4-1\"," "\"max\":null," "\"min\":null" "}" "]," "\"backup\":[]," "\"cipher\":\"none\"," "\"db\":[" "{" "\"id\":1," "\"system-id\":6625633699176220261," "\"version\":\"9.4\"" "}" "]," "\"name\":\"stanza2\"," "\"status\":{" "\"code\":2," "\"message\":\"no valid backups\"" "}" "}" "]", "json - multiple stanzas, one with valid backups, archives in latest DB"); harnessCfgLoad(cfgCmdInfo, argListText); TEST_RESULT_STR_Z( infoRender(), "stanza: stanza1\n" " status: ok\n" " cipher: none\n" "\n" " db (prior)\n" " wal archive min/max (9.4-1): 000000010000000000000002/000000020000000000000003\n" "\n" " full backup: 20181119-152138F\n" " timestamp start/stop: 2018-11-19 15:21:38 / 2018-11-19 15:21:51\n" " wal start/stop: 000000010000000000000002 / 000000010000000000000002\n" " database size: 19.2MB, backup size: 19.2MB\n" " repository size: 2.3MB, repository backup size: 2.3MB\n" "\n" " diff backup: 20181119-152138F_20181119-152152D\n" " timestamp start/stop: 2018-11-19 15:21:52 / 2018-11-19 15:21:55\n" " wal start/stop: 000000010000000000000003 / 000000010000000000000003\n" " database size: 19.2MB, backup size: 8.2KB\n" " repository size: 2.3MB, repository backup size: 346B\n" " backup reference list: 20181119-152138F\n" "\n" " incr backup: 20181119-152138F_20181119-152152I\n" " timestamp start/stop: 2018-11-19 15:21:52 / 2018-11-19 15:21:55\n" " wal start/stop: n/a\n" " database size: 19.2MB, backup size: 8.2KB\n" " repository size: 2.3MB, repository backup size: 346B\n" " backup reference list: 20181119-152138F, 20181119-152138F_20181119-152152D\n" "\n" " db (current)\n" " wal archive min/max (9.5-2): none present\n" "\n" "stanza: stanza2\n" " status: error (no valid backups)\n" " cipher: none\n" "\n" " db (current)\n" " wal archive min/max (9.4-1): none present\n", "text - multiple stanzas, one with valid backups, archives in latest DB"); // Backup set requested //-------------------------------------------------------------------------------------------------------------------------- argList2 = strLstDup(argListText); strLstAddZ(argList2, "--stanza=stanza1"); strLstAddZ(argList2, "--set=20181119-152138F_20181119-152152I"); harnessCfgLoad(cfgCmdInfo, argList2); TEST_RESULT_STR_Z( infoRender(), "stanza: stanza1\n" " status: ok\n" " cipher: none\n" "\n" " db (prior)\n" " wal archive min/max (9.4-1): 000000010000000000000002/000000020000000000000003\n" "\n" " incr backup: 20181119-152138F_20181119-152152I\n" " timestamp start/stop: 2018-11-19 15:21:52 / 2018-11-19 15:21:55\n" " wal start/stop: n/a\n" " database size: 19.2MB, backup size: 8.2KB\n" " repository size: 2.3MB, repository backup size: 346B\n" " backup reference list: 20181119-152138F, 20181119-152138F_20181119-152152D\n" " database list: mail (16456), postgres (12173)\n" " symlinks:\n" " pg_hba.conf => ../pg_config/pg_hba.conf\n" " pg_stat => ../pg_stat\n" " tablespaces:\n" " ts1 (1) => /tblspc/ts1\n" " ts12 (12) => /tblspc/ts12\n", "text - backup set requested"); strLstAddZ(argList2, "--output=json"); harnessCfgLoad(cfgCmdInfo, argList2); TEST_ERROR(strPtr(infoRender()), ConfigError, "option 'set' is currently only valid for text output"); // Backup set requested but no links //-------------------------------------------------------------------------------------------------------------------------- argList2 = strLstDup(argListText); strLstAddZ(argList2, "--stanza=stanza1"); strLstAddZ(argList2, "--set=20181119-152138F_20181119-152152I"); harnessCfgLoad(cfgCmdInfo, argList2); #define TEST_MANIFEST_TARGET_NO_LINK \ "\n" \ "[backup:target]\n" \ "pg_data={\"path\":\"/pg/base\",\"type\":\"path\"}\n" \ contentLoad = harnessInfoChecksumZ ( TEST_MANIFEST_HEADER TEST_MANIFEST_TARGET_NO_LINK TEST_MANIFEST_DB TEST_MANIFEST_FILE TEST_MANIFEST_FILE_DEFAULT TEST_MANIFEST_LINK TEST_MANIFEST_LINK_DEFAULT TEST_MANIFEST_PATH TEST_MANIFEST_PATH_DEFAULT ); TEST_RESULT_VOID( storagePutP( storageNewWriteP( storageRepoWrite(), strNew(STORAGE_REPO_BACKUP "/20181119-152138F_20181119-152152I/" BACKUP_MANIFEST_FILE)), contentLoad), "write manifest"); TEST_RESULT_STR_Z( infoRender(), "stanza: stanza1\n" " status: ok\n" " cipher: none\n" "\n" " db (prior)\n" " wal archive min/max (9.4-1): 000000010000000000000002/000000020000000000000003\n" "\n" " incr backup: 20181119-152138F_20181119-152152I\n" " timestamp start/stop: 2018-11-19 15:21:52 / 2018-11-19 15:21:55\n" " wal start/stop: n/a\n" " database size: 19.2MB, backup size: 8.2KB\n" " repository size: 2.3MB, repository backup size: 346B\n" " backup reference list: 20181119-152138F, 20181119-152138F_20181119-152152D\n" " database list: mail (16456), postgres (12173)\n", "text - backup set requested, no links"); // Backup set requested but no databases //-------------------------------------------------------------------------------------------------------------------------- argList2 = strLstDup(argListText); strLstAddZ(argList2, "--stanza=stanza1"); strLstAddZ(argList2, "--set=20181119-152138F_20181119-152152I"); harnessCfgLoad(cfgCmdInfo, argList2); #define TEST_MANIFEST_NO_DB \ "\n" \ "[db]\n" \ "template0={\"db-id\":12168,\"db-last-system-id\":12168}\n" \ "template1={\"db-id\":1,\"db-last-system-id\":12168}\n" \ contentLoad = harnessInfoChecksumZ ( TEST_MANIFEST_HEADER TEST_MANIFEST_TARGET_NO_LINK TEST_MANIFEST_NO_DB TEST_MANIFEST_FILE TEST_MANIFEST_FILE_DEFAULT TEST_MANIFEST_LINK TEST_MANIFEST_LINK_DEFAULT TEST_MANIFEST_PATH TEST_MANIFEST_PATH_DEFAULT ); TEST_RESULT_VOID( storagePutP( storageNewWriteP( storageRepoWrite(), strNew(STORAGE_REPO_BACKUP "/20181119-152138F_20181119-152152I/" BACKUP_MANIFEST_FILE)), contentLoad), "write manifest"); TEST_RESULT_STR_Z( infoRender(), "stanza: stanza1\n" " status: ok\n" " cipher: none\n" "\n" " db (prior)\n" " wal archive min/max (9.4-1): 000000010000000000000002/000000020000000000000003\n" "\n" " incr backup: 20181119-152138F_20181119-152152I\n" " timestamp start/stop: 2018-11-19 15:21:52 / 2018-11-19 15:21:55\n" " wal start/stop: n/a\n" " database size: 19.2MB, backup size: 8.2KB\n" " repository size: 2.3MB, repository backup size: 346B\n" " backup reference list: 20181119-152138F, 20181119-152138F_20181119-152152D\n" " database list: none\n", "text - backup set requested, no db"); // Stanza not found //-------------------------------------------------------------------------------------------------------------------------- argList2 = strLstDup(argList); strLstAddZ(argList2, "--stanza=silly"); harnessCfgLoad(cfgCmdInfo, argList2); TEST_RESULT_STR_Z( infoRender(), "[" "{" "\"backup\":[]," "\"db\":[]," "\"name\":\"silly\"," "\"status\":{" "\"code\":1," "\"message\":\"missing stanza path\"" "}" "}" "]", "json - missing stanza path"); StringList *argListText2 = strLstDup(argListText); strLstAddZ(argListText2, "--stanza=silly"); harnessCfgLoad(cfgCmdInfo, argListText2); TEST_RESULT_STR_Z( infoRender(), "stanza: silly\n" " status: error (missing stanza path)\n", "text - missing stanza path"); // Stanza found //-------------------------------------------------------------------------------------------------------------------------- strLstAddZ(argList, "--stanza=stanza2"); harnessCfgLoad(cfgCmdInfo, argList); TEST_RESULT_STR_Z( infoRender(), "[" "{" "\"archive\":[" "{" "\"database\":{" "\"id\":1" "}," "\"id\":\"9.4-1\"," "\"max\":null," "\"min\":null" "}" "]," "\"backup\":[]," "\"cipher\":\"none\"," "\"db\":[" "{" "\"id\":1," "\"system-id\":6625633699176220261," "\"version\":\"9.4\"" "}" "]," "\"name\":\"stanza2\"," "\"status\":{" "\"code\":2," "\"message\":\"no valid backups\"" "}" "}" "]", "json - multiple stanzas - selected found"); strLstAddZ(argListText, "--stanza=stanza2"); harnessCfgLoad(cfgCmdInfo, argListText); TEST_RESULT_STR_Z( infoRender(), "stanza: stanza2\n" " status: error (no valid backups)\n" " cipher: none\n" "\n" " db (current)\n" " wal archive min/max (9.4-1): none present\n", "text - multiple stanzas - selected found"); // Crypto error //-------------------------------------------------------------------------------------------------------------------------- content = strNew ( "[global]\n" "repo-cipher-pass=123abc\n" ); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageLocalWrite(), strNewFmt("%s/pgbackrest.conf", testPath())), BUFSTR(content)), "put pgbackrest.conf file"); strLstAddZ(argListText, "--repo-cipher-type=aes-256-cbc"); strLstAdd(argListText, strNewFmt("--config=%s/pgbackrest.conf", testPath())); harnessCfgLoad(cfgCmdInfo, argListText); TEST_ERROR_FMT( infoRender(), CryptoError, "unable to load info file '%s/backup.info' or '%s/backup.info.copy':\n" "CryptoError: cipher header invalid\n" "HINT: is or was the repo encrypted?\n" "FileMissingError: " STORAGE_ERROR_READ_MISSING "\n" "HINT: backup.info cannot be opened and is required to perform a backup.\n" "HINT: has a stanza-create been performed?\n" "HINT: use option --stanza if encryption settings are different for the stanza than the global settings.", strPtr(backupStanza2Path), strPtr(backupStanza2Path), strPtr(strNewFmt("%s/backup.info.copy", strPtr(backupStanza2Path)))); } //****************************************************************************************************************************** if (testBegin("formatTextDb()")) { // These tests cover branches not covered in other tests KeyValue *stanzaInfo = kvNew(); VariantList *dbSection = varLstNew(); Variant *pgInfo = varNewKv(kvNew()); kvPut(varKv(pgInfo), DB_KEY_ID_VAR, varNewUInt(1)); kvPut(varKv(pgInfo), DB_KEY_SYSTEM_ID_VAR, varNewUInt64(6625633699176220261)); kvPut(varKv(pgInfo), DB_KEY_VERSION_VAR, VARSTR(pgVersionToStr(90500))); varLstAdd(dbSection, pgInfo); // Add the database history, backup and archive sections to the stanza info kvPut(stanzaInfo, STANZA_KEY_DB_VAR, varNewVarLst(dbSection)); VariantList *backupSection = varLstNew(); Variant *backupInfo = varNewKv(kvNew()); kvPut(varKv(backupInfo), BACKUP_KEY_LABEL_VAR, VARSTRDEF("20181119-152138F")); kvPut(varKv(backupInfo), BACKUP_KEY_TYPE_VAR, VARSTRDEF("full")); kvPutKv(varKv(backupInfo), KEY_ARCHIVE_VAR); KeyValue *infoInfo = kvPutKv(varKv(backupInfo), BACKUP_KEY_INFO_VAR); kvPut(infoInfo, KEY_SIZE_VAR, varNewUInt64(0)); kvPut(infoInfo, KEY_DELTA_VAR, varNewUInt64(0)); KeyValue *repoInfo = kvPutKv(infoInfo, INFO_KEY_REPOSITORY_VAR); kvAdd(repoInfo, KEY_SIZE_VAR, varNewUInt64(0)); kvAdd(repoInfo, KEY_DELTA_VAR, varNewUInt64(0)); KeyValue *databaseInfo = kvPutKv(varKv(backupInfo), KEY_DATABASE_VAR); kvAdd(databaseInfo, DB_KEY_ID_VAR, varNewUInt(1)); KeyValue *timeInfo = kvPutKv(varKv(backupInfo), BACKUP_KEY_TIMESTAMP_VAR); kvAdd(timeInfo, KEY_START_VAR, varNewUInt64(1542383276)); kvAdd(timeInfo, KEY_STOP_VAR, varNewUInt64(1542383289)); varLstAdd(backupSection, backupInfo); kvPut(stanzaInfo, STANZA_KEY_BACKUP_VAR, varNewVarLst(backupSection)); kvPut(stanzaInfo, KEY_ARCHIVE_VAR, varNewVarLst(varLstNew())); String *result = strNew(""); formatTextDb(stanzaInfo, result, NULL); TEST_RESULT_STR_Z( result, "\n" " db (current)\n" " full backup: 20181119-152138F\n" " timestamp start/stop: 2018-11-16 15:47:56 / 2018-11-16 15:48:09\n" " wal start/stop: n/a\n" " database size: 0B, backup size: 0B\n" " repository size: 0B, repository backup size: 0B\n", "formatTextDb only backup section (code coverage only)"); } //****************************************************************************************************************************** if (testBegin("cmdInfo()")) { StringList *argList = strLstNew(); strLstAdd(argList, strNewFmt("--repo-path=%s", strPtr(repoPath))); harnessCfgLoad(cfgCmdInfo, argList); storagePathCreateP(storageLocalWrite(), archivePath); storagePathCreateP(storageLocalWrite(), backupPath); // Redirect stdout to a file int stdoutSave = dup(STDOUT_FILENO); String *stdoutFile = strNewFmt("%s/stdout.info", testPath()); THROW_ON_SYS_ERROR(freopen(strPtr(stdoutFile), "w", stdout) == NULL, FileWriteError, "unable to reopen stdout"); // Not in a test wrapper to avoid writing to stdout cmdInfo(); // Restore normal stdout dup2(stdoutSave, STDOUT_FILENO); Storage *storage = storagePosixNew( strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, false, NULL); TEST_RESULT_STR_Z( strNewBuf(storageGetP(storageNewReadP(storage, stdoutFile))), "No stanzas exist in the repository.\n", " check text"); //-------------------------------------------------------------------------------------------------------------------------- strLstAddZ(argList, "--set=bogus"); TEST_ERROR_FMT( harnessCfgLoad(cfgCmdInfo, argList), OptionInvalidError, "option 'set' not valid without option 'stanza'"); //-------------------------------------------------------------------------------------------------------------------------- strLstAddZ(argList, "--stanza=stanza1"); harnessCfgLoad(cfgCmdInfo, argList); TEST_ERROR_FMT( cmdInfo(), FileMissingError, "manifest does not exist for backup 'bogus'\n" "HINT: is the backup listed when running the info command with --stanza option only?"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/command/localTest.c000066400000000000000000000050631362531507100237620ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Local Command ***********************************************************************************************************************************/ #include "common/io/handleRead.h" #include "common/io/handleWrite.h" #include "protocol/client.h" #include "protocol/server.h" #include "common/harnessConfig.h" #include "common/harnessFork.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("cmdLocal()")) { // Create pipes for testing. Read/write is from the perspective of the client. int pipeRead[2]; int pipeWrite[2]; THROW_ON_SYS_ERROR(pipe(pipeRead) == -1, KernelError, "unable to read test pipe"); THROW_ON_SYS_ERROR(pipe(pipeWrite) == -1, KernelError, "unable to write test pipe"); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, true) { StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--process=1"); strLstAddZ(argList, "--" CFGOPT_REMOTE_TYPE "=" PROTOCOL_REMOTE_TYPE_REPO); strLstAddZ(argList, "--host-id=1"); harnessCfgLoadRole(cfgCmdArchiveGet, cfgCmdRoleLocal, argList); cmdLocal(HARNESS_FORK_CHILD_READ(), HARNESS_FORK_CHILD_WRITE()); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { IoRead *read = ioHandleReadNew(strNew("server read"), HARNESS_FORK_PARENT_READ_PROCESS(0), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("server write"), HARNESS_FORK_PARENT_WRITE_PROCESS(0)); ioWriteOpen(write); ProtocolClient *client = protocolClientNew(strNew("test"), PROTOCOL_SERVICE_LOCAL_STR, read, write); protocolClientNoOp(client); protocolClientFree(client); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/command/remoteTest.c000066400000000000000000000223001362531507100241540ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Remote Command ***********************************************************************************************************************************/ #include "common/io/handleRead.h" #include "common/io/handleWrite.h" #include "protocol/client.h" #include "protocol/server.h" #include "storage/posix/storage.h" #include "common/harnessConfig.h" #include "common/harnessFork.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // Create default storage object for testing Storage *storageData = storagePosixNew( strNew(testDataPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); // ***************************************************************************************************************************** if (testBegin("cmdRemote()")) { // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("no lock is required because process is > 0 (not the main remote)"); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, true) { StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--process=1"); strLstAddZ(argList, "--" CFGOPT_REMOTE_TYPE "=" PROTOCOL_REMOTE_TYPE_REPO); harnessCfgLoadRole(cfgCmdInfo, cfgCmdRoleRemote, argList); cmdRemote(HARNESS_FORK_CHILD_READ(), HARNESS_FORK_CHILD_WRITE()); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { IoRead *read = ioHandleReadNew(strNew("server read"), HARNESS_FORK_PARENT_READ_PROCESS(0), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("server write"), HARNESS_FORK_PARENT_WRITE_PROCESS(0)); ioWriteOpen(write); ProtocolClient *client = protocolClientNew(strNew("test"), PROTOCOL_SERVICE_REMOTE_STR, read, write); protocolClientNoOp(client); protocolClientFree(client); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("no remote lock is required for this command"); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, true) { StringList *argList = strLstNew(); strLstAddZ(argList, testProjectExe()); strLstAddZ(argList, "--process=0"); strLstAddZ(argList, "--" CFGOPT_REMOTE_TYPE "=" PROTOCOL_REMOTE_TYPE_REPO); strLstAddZ(argList, "--lock-path=/bogus"); strLstAddZ(argList, "--" CFGOPT_STANZA "=test"); strLstAddZ(argList, CFGCMD_ARCHIVE_GET ":" CONFIG_COMMAND_ROLE_REMOTE); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); cmdRemote(HARNESS_FORK_CHILD_READ(), HARNESS_FORK_CHILD_WRITE()); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { IoRead *read = ioHandleReadNew(strNew("server read"), HARNESS_FORK_PARENT_READ_PROCESS(0), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("server write"), HARNESS_FORK_PARENT_WRITE_PROCESS(0)); ioWriteOpen(write); ProtocolClient *client = NULL; TEST_ASSIGN(client, protocolClientNew(strNew("test"), PROTOCOL_SERVICE_REMOTE_STR, read, write), "create client"); protocolClientNoOp(client); protocolClientFree(client); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("remote lock is required but lock path is invalid"); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, true) { StringList *argList = strLstNew(); strLstAddZ(argList, testProjectExe()); strLstAddZ(argList, "--stanza=test"); strLstAddZ(argList, "--process=0"); strLstAddZ(argList, "--" CFGOPT_REMOTE_TYPE "=" PROTOCOL_REMOTE_TYPE_REPO); strLstAddZ(argList, "--lock-path=/bogus"); strLstAddZ(argList, CFGCMD_ARCHIVE_PUSH ":" CONFIG_COMMAND_ROLE_REMOTE); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); cmdRemote(HARNESS_FORK_CHILD_READ(), HARNESS_FORK_CHILD_WRITE()); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { IoRead *read = ioHandleReadNew(strNew("server read"), HARNESS_FORK_PARENT_READ_PROCESS(0), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("server write"), HARNESS_FORK_PARENT_WRITE_PROCESS(0)); ioWriteOpen(write); TEST_ERROR( protocolClientNew(strNew("test"), PROTOCOL_SERVICE_REMOTE_STR, read, write), PathCreateError, "raised from test: unable to create path '/bogus': [13] Permission denied"); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("remote lock is required and succeeds"); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, true) { StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test"); strLstAddZ(argList, "--process=0"); strLstAddZ(argList, "--" CFGOPT_REMOTE_TYPE "=" PROTOCOL_REMOTE_TYPE_REPO); harnessCfgLoadRole(cfgCmdArchivePush, cfgCmdRoleRemote, argList); cmdRemote(HARNESS_FORK_CHILD_READ(), HARNESS_FORK_CHILD_WRITE()); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { IoRead *read = ioHandleReadNew(strNew("server read"), HARNESS_FORK_PARENT_READ_PROCESS(0), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("server write"), HARNESS_FORK_PARENT_WRITE_PROCESS(0)); ioWriteOpen(write); ProtocolClient *client = NULL; TEST_ASSIGN(client, protocolClientNew(strNew("test"), PROTOCOL_SERVICE_REMOTE_STR, read, write), "create client"); protocolClientNoOp(client); TEST_RESULT_BOOL( storageExistsP( storagePosixNew(strNew(testDataPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, false, NULL), STRDEF("lock/test-archive" LOCK_FILE_EXT)), true, "lock exists"); protocolClientFree(client); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("remote lock is required but stop file exists"); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, true) { StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test"); strLstAddZ(argList, "--process=0"); strLstAddZ(argList, "--" CFGOPT_REMOTE_TYPE "=" PROTOCOL_REMOTE_TYPE_REPO); harnessCfgLoadRole(cfgCmdArchivePush, cfgCmdRoleRemote, argList); cmdRemote(HARNESS_FORK_CHILD_READ(), HARNESS_FORK_CHILD_WRITE()); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { IoRead *read = ioHandleReadNew(strNew("server read"), HARNESS_FORK_PARENT_READ_PROCESS(0), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("server write"), HARNESS_FORK_PARENT_WRITE_PROCESS(0)); ioWriteOpen(write); storagePutP(storageNewWriteP(storageData, strNew("lock/all" STOP_FILE_EXT)), NULL); TEST_ERROR( protocolClientNew(strNew("test"), PROTOCOL_SERVICE_REMOTE_STR, read, write), StopError, "raised from test: stop file exists for all stanzas"); storageRemoveP(storageData, strNew("lock/all" STOP_FILE_EXT)); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/command/restoreTest.c000066400000000000000000003627751362531507100243730ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Restore Command ***********************************************************************************************************************************/ #include "common/compress/gzip/compress.h" #include "common/crypto/cipherBlock.h" #include "common/io/io.h" #include "common/io/bufferRead.h" #include "common/io/bufferWrite.h" #include "postgres/version.h" #include "storage/posix/storage.h" #include "storage/helper.h" #include "common/harnessConfig.h" #include "common/harnessInfo.h" #include "common/harnessStorage.h" /*********************************************************************************************************************************** Special string constants ***********************************************************************************************************************************/ #define UTF8_DB_NAME "这个用汉语怎么说" /*********************************************************************************************************************************** Test data for backup.info ***********************************************************************************************************************************/ #define TEST_RESTORE_BACKUP_INFO_DB \ "[db]\n" \ "db-catalog-version=201409291\n" \ "db-control-version=942\n" \ "db-id=1\n" \ "db-system-id=6569239123849665679\n" \ "db-version=\"9.4\"\n" \ "\n" \ "[db:history]\n" \ "1={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6569239123849665679," \ "\"db-version\":\"9.4\"}\n" #define TEST_RESTORE_BACKUP_INFO \ "[backup:current]\n" \ "20161219-212741F={\"backrest-format\":5,\"backrest-version\":\"2.04\"," \ "\"backup-archive-start\":\"00000007000000000000001C\",\"backup-archive-stop\":\"00000007000000000000001C\"," \ "\"backup-info-repo-size\":3159776,\"backup-info-repo-size-delta\":3159776,\"backup-info-size\":26897030," \ "\"backup-info-size-delta\":26897030,\"backup-timestamp-start\":1482182846,\"backup-timestamp-stop\":1482182861," \ "\"backup-type\":\"full\",\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false," \ "\"option-backup-standby\":false,\"option-checksum-page\":false,\"option-compress\":true,\"option-hardlink\":false," \ "\"option-online\":true}\n" \ "20161219-212741F_20161219-212803D={\"backrest-format\":5,\"backrest-version\":\"2.04\"," \ "\"backup-archive-start\":\"00000008000000000000001E\",\"backup-archive-stop\":\"00000008000000000000001E\"," \ "\"backup-info-repo-size\":3159811,\"backup-info-repo-size-delta\":15765,\"backup-info-size\":26897030," \ "\"backup-info-size-delta\":163866,\"backup-prior\":\"20161219-212741F\",\"backup-reference\":[\"20161219-212741F\"]," \ "\"backup-timestamp-start\":1482182877,\"backup-timestamp-stop\":1482182883,\"backup-type\":\"diff\",\"db-id\":1," \ "\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," \ "\"option-checksum-page\":false,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" \ "20161219-212741F_20161219-212918I={\"backrest-format\":5,\"backrest-version\":\"2.04\"," \ "\"backup-archive-start\":null,\"backup-archive-stop\":null," \ "\"backup-info-repo-size\":3159811,\"backup-info-repo-size-delta\":15765,\"backup-info-size\":26897030," \ "\"backup-info-size-delta\":163866,\"backup-prior\":\"20161219-212741F\",\"backup-reference\":[\"20161219-212741F\"," \ "\"20161219-212741F_20161219-212803D\"]," \ "\"backup-timestamp-start\":1482182884,\"backup-timestamp-stop\":1482182985,\"backup-type\":\"incr\",\"db-id\":1," \ "\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," \ "\"option-checksum-page\":false,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" /*********************************************************************************************************************************** Test restores to be sure they match the manifest ***********************************************************************************************************************************/ static void testRestoreCompare(const Storage *storage, const String *pgPath, const Manifest *manifest, const char *compare) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(STORAGE, storage); FUNCTION_HARNESS_PARAM(STRING, pgPath); FUNCTION_HARNESS_PARAM(MANIFEST, manifest); FUNCTION_HARNESS_PARAM(STRINGZ, compare); FUNCTION_HARNESS_END(); // Get the pg-path as a string HarnessStorageInfoListCallbackData callbackData = { .content = strNew(""), .modeOmit = true, .modePath = 0700, .modeFile = 0600, .userOmit = true, .groupOmit = true, }; TEST_RESULT_VOID( storageInfoListP(storage, pgPath, hrnStorageInfoListCallback, &callbackData, .recurse = true, .sortOrder = sortOrderAsc), "pg path info list for restore compare"); // Compare TEST_RESULT_STR_Z(callbackData.content, hrnReplaceKey(compare), " compare result manifest"); FUNCTION_HARNESS_RESULT_VOID(); } /*********************************************************************************************************************************** Build a simple manifest for testing ***********************************************************************************************************************************/ static Manifest * testManifestMinimal(const String *label, unsigned int pgVersion, const String *pgPath) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(STRING, label); FUNCTION_HARNESS_PARAM(UINT, pgVersion); FUNCTION_HARNESS_PARAM(STRING, pgPath); FUNCTION_HARNESS_END(); ASSERT(label != NULL); ASSERT(pgVersion != 0); ASSERT(pgPath != NULL); Manifest *result = NULL; MEM_CONTEXT_NEW_BEGIN("Manifest") { result = manifestNewInternal(); result->info = infoNew(NULL); result->data.backupLabel = strDup(label); result->data.pgVersion = pgVersion; if (strEndsWithZ(label, "I")) result->data.backupType = backupTypeIncr; else if (strEndsWithZ(label, "D")) result->data.backupType = backupTypeDiff; else result->data.backupType = backupTypeFull; ManifestTarget targetBase = {.name = MANIFEST_TARGET_PGDATA_STR, .path = pgPath}; manifestTargetAdd(result, &targetBase); ManifestPath pathBase = {.name = MANIFEST_TARGET_PGDATA_STR, .mode = 0700, .group = groupName(), .user = userName()}; manifestPathAdd(result, &pathBase); ManifestFile fileVersion = { .name = STRDEF("pg_data/" PG_FILE_PGVERSION), .mode = 0600, .group = groupName(), .user = userName()}; manifestFileAdd(result, &fileVersion); } MEM_CONTEXT_NEW_END(); FUNCTION_HARNESS_RESULT(MANIFEST, result); } /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // Create default storage object for testing Storage *storageTest = storagePosixNew( strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); // ***************************************************************************************************************************** if (testBegin("restoreFile()")) { const String *repoFileReferenceFull = strNew("20190509F"); const String *repoFile1 = strNew("pg_data/testfile"); // Start a protocol server to test the protocol directly Buffer *serverWrite = bufNew(8192); IoWrite *serverWriteIo = ioBufferWriteNew(serverWrite); ioWriteOpen(serverWriteIo); ProtocolServer *server = protocolServerNew( strNew("test"), strNew("test"), ioBufferReadNew(bufNew(0)), serverWriteIo); bufUsedSet(serverWrite, 0); // Load Parameters StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAdd(argList, strNewFmt("--pg1-path=%s/pg", testPath())); harnessCfgLoad(cfgCmdRestore, argList); // Create the pg path storagePathCreateP(storagePgWrite(), NULL, .mode = 0700); TEST_RESULT_BOOL( restoreFile( repoFile1, repoFileReferenceFull, false, strNew("sparse-zero"), strNew("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"), true, 0x10000000000UL, 1557432154, 0600, strNew(testUser()), strNew(testGroup()), 0, true, false, NULL), false, "zero sparse 1TB file"); TEST_RESULT_UINT(storageInfoP(storagePg(), strNew("sparse-zero")).size, 0x10000000000UL, " check size"); TEST_RESULT_BOOL( restoreFile( repoFile1, repoFileReferenceFull, false, strNew("normal-zero"), strNew("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"), false, 0, 1557432154, 0600, strNew(testUser()), strNew(testGroup()), 0, false, false, NULL), true, "zero-length file"); TEST_RESULT_UINT(storageInfoP(storagePg(), strNew("normal-zero")).size, 0, " check size"); // ------------------------------------------------------------------------------------------------------------------------- // Create a compressed encrypted repo file StorageWrite *ceRepoFile = storageNewWriteP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/%s.gz", strPtr(repoFileReferenceFull), strPtr(repoFile1))); IoFilterGroup *filterGroup = ioWriteFilterGroup(storageWriteIo(ceRepoFile)); ioFilterGroupAdd(filterGroup, gzipCompressNew(3, false)); ioFilterGroupAdd(filterGroup, cipherBlockNew(cipherModeEncrypt, cipherTypeAes256Cbc, BUFSTRDEF("badpass"), NULL)); storagePutP(ceRepoFile, BUFSTRDEF("acefile")); TEST_ERROR( restoreFile( repoFile1, repoFileReferenceFull, true, strNew("normal"), strNew("ffffffffffffffffffffffffffffffffffffffff"), false, 7, 1557432154, 0600, strNew(testUser()), strNew(testGroup()), 0, false, false, strNew("badpass")), ChecksumError, "error restoring 'normal': actual checksum 'd1cd8a7d11daa26814b93eb604e1d49ab4b43770' does not match expected checksum" " 'ffffffffffffffffffffffffffffffffffffffff'"); TEST_RESULT_BOOL( restoreFile( repoFile1, repoFileReferenceFull, true, strNew("normal"), strNew("d1cd8a7d11daa26814b93eb604e1d49ab4b43770"), false, 7, 1557432154, 0600, strNew(testUser()), strNew(testGroup()), 0, false, false, strNew("badpass")), true, "copy file"); StorageInfo info = storageInfoP(storagePg(), strNew("normal")); TEST_RESULT_BOOL(info.exists, true, " check exists"); TEST_RESULT_UINT(info.size, 7, " check size"); TEST_RESULT_UINT(info.mode, 0600, " check mode"); TEST_RESULT_UINT(info.timeModified, 1557432154, " check time"); TEST_RESULT_STR_Z(info.user, testUser(), " check user"); TEST_RESULT_STR_Z(info.group, testGroup(), " check group"); TEST_RESULT_STR_Z(strNewBuf(storageGetP(storageNewReadP(storagePg(), strNew("normal")))), "acefile", " check contents"); // ------------------------------------------------------------------------------------------------------------------------- // Create a repo file storagePutP( storageNewWriteP( storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/%s", strPtr(repoFileReferenceFull), strPtr(repoFile1))), BUFSTRDEF("atestfile")); TEST_RESULT_BOOL( restoreFile( repoFile1, repoFileReferenceFull, false, strNew("delta"), strNew("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"), false, 9, 1557432154, 0600, strNew(testUser()), strNew(testGroup()), 0, true, false, NULL), true, "sha1 delta missing"); TEST_RESULT_STR_Z( strNewBuf(storageGetP(storageNewReadP(storagePg(), strNew("delta")))), "atestfile", " check contents"); size_t oldBufferSize = ioBufferSize(); ioBufferSizeSet(4); TEST_RESULT_BOOL( restoreFile( repoFile1, repoFileReferenceFull, false, strNew("delta"), strNew("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"), false, 9, 1557432154, 0600, strNew(testUser()), strNew(testGroup()), 0, true, false, NULL), false, "sha1 delta existing"); ioBufferSizeSet(oldBufferSize); TEST_RESULT_BOOL( restoreFile( repoFile1, repoFileReferenceFull, false, strNew("delta"), strNew("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"), false, 9, 1557432154, 0600, strNew(testUser()), strNew(testGroup()), 1557432155, true, true, NULL), false, "sha1 delta force existing"); // Change the existing file so it no longer matches by size storagePutP(storageNewWriteP(storagePgWrite(), strNew("delta")), BUFSTRDEF("atestfile2")); TEST_RESULT_BOOL( restoreFile( repoFile1, repoFileReferenceFull, false, strNew("delta"), strNew("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"), false, 9, 1557432154, 0600, strNew(testUser()), strNew(testGroup()), 0, true, false, NULL), true, "sha1 delta existing, size differs"); TEST_RESULT_STR_Z( strNewBuf(storageGetP(storageNewReadP(storagePg(), strNew("delta")))), "atestfile", " check contents"); storagePutP(storageNewWriteP(storagePgWrite(), strNew("delta")), BUFSTRDEF("atestfile2")); TEST_RESULT_BOOL( restoreFile( repoFile1, repoFileReferenceFull, false, strNew("delta"), strNew("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"), false, 9, 1557432154, 0600, strNew(testUser()), strNew(testGroup()), 1557432155, true, true, NULL), true, "delta force existing, size differs"); TEST_RESULT_STR_Z( strNewBuf(storageGetP(storageNewReadP(storagePg(), strNew("delta")))), "atestfile", " check contents"); // Change the existing file so it no longer matches by content storagePutP(storageNewWriteP(storagePgWrite(), strNew("delta")), BUFSTRDEF("btestfile")); TEST_RESULT_BOOL( restoreFile( repoFile1, repoFileReferenceFull, false, strNew("delta"), strNew("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"), false, 9, 1557432154, 0600, strNew(testUser()), strNew(testGroup()), 0, true, false, NULL), true, "sha1 delta existing, content differs"); TEST_RESULT_STR_Z( strNewBuf(storageGetP(storageNewReadP(storagePg(), strNew("delta")))), "atestfile", " check contents"); storagePutP(storageNewWriteP(storagePgWrite(), strNew("delta")), BUFSTRDEF("btestfile")); TEST_RESULT_BOOL( restoreFile( repoFile1, repoFileReferenceFull, false, strNew("delta"), strNew("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"), false, 9, 1557432154, 0600, strNew(testUser()), strNew(testGroup()), 1557432155, true, true, NULL), true, "delta force existing, timestamp differs"); TEST_RESULT_BOOL( restoreFile( repoFile1, repoFileReferenceFull, false, strNew("delta"), strNew("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"), false, 9, 1557432154, 0600, strNew(testUser()), strNew(testGroup()), 1557432153, true, true, NULL), true, "delta force existing, timestamp after copy time"); // Change the existing file to zero-length storagePutP(storageNewWriteP(storagePgWrite(), strNew("delta")), BUFSTRDEF("")); TEST_RESULT_BOOL( restoreFile( repoFile1, repoFileReferenceFull, false, strNew("delta"), strNew("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"), false, 0, 1557432154, 0600, strNew(testUser()), strNew(testGroup()), 0, true, false, NULL), false, "sha1 delta existing, content differs"); // Check protocol function directly // ------------------------------------------------------------------------------------------------------------------------- VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewStr(repoFile1)); varLstAdd(paramList, varNewStr(repoFileReferenceFull)); varLstAdd(paramList, varNewBool(false)); varLstAdd(paramList, varNewStrZ("protocol")); varLstAdd(paramList, varNewStrZ("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67")); varLstAdd(paramList, varNewBool(false)); varLstAdd(paramList, varNewUInt64(9)); varLstAdd(paramList, varNewUInt64(1557432100)); varLstAdd(paramList, varNewStrZ("0677")); varLstAdd(paramList, varNewStrZ(testUser())); varLstAdd(paramList, varNewStrZ(testGroup())); varLstAdd(paramList, varNewUInt64(1557432200)); varLstAdd(paramList, varNewBool(false)); varLstAdd(paramList, varNewBool(false)); varLstAdd(paramList, NULL); TEST_RESULT_BOOL(restoreProtocol(PROTOCOL_COMMAND_RESTORE_FILE_STR, paramList, server), true, "protocol restore file"); TEST_RESULT_STR_Z(strNewBuf(serverWrite), "{\"out\":true}\n", " check result"); bufUsedSet(serverWrite, 0); info = storageInfoP(storagePg(), strNew("protocol")); TEST_RESULT_BOOL(info.exists, true, " check exists"); TEST_RESULT_UINT(info.size, 9, " check size"); TEST_RESULT_UINT(info.mode, 0677, " check mode"); TEST_RESULT_UINT(info.timeModified, 1557432100, " check time"); TEST_RESULT_STR_Z(info.user, testUser(), " check user"); TEST_RESULT_STR_Z(info.group, testGroup(), " check group"); TEST_RESULT_STR_Z( strNewBuf(storageGetP(storageNewReadP(storagePg(), strNew("protocol")))), "atestfile", " check contents"); paramList = varLstNew(); varLstAdd(paramList, varNewStr(repoFile1)); varLstAdd(paramList, varNewStr(repoFileReferenceFull)); varLstAdd(paramList, varNewBool(false)); varLstAdd(paramList, varNewStrZ("protocol")); varLstAdd(paramList, varNewStrZ("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67")); varLstAdd(paramList, varNewBool(false)); varLstAdd(paramList, varNewUInt64(9)); varLstAdd(paramList, varNewUInt64(1557432100)); varLstAdd(paramList, varNewStrZ("0677")); varLstAdd(paramList, varNewStrZ(testUser())); varLstAdd(paramList, varNewStrZ(testGroup())); varLstAdd(paramList, varNewUInt64(1557432200)); varLstAdd(paramList, varNewBool(true)); varLstAdd(paramList, varNewBool(false)); varLstAdd(paramList, NULL); TEST_RESULT_BOOL(restoreProtocol(PROTOCOL_COMMAND_RESTORE_FILE_STR, paramList, server), true, "protocol restore file"); TEST_RESULT_STR_Z(strNewBuf(serverWrite), "{\"out\":false}\n", " check result"); bufUsedSet(serverWrite, 0); // Check invalid protocol function // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(restoreProtocol(strNew(BOGUS_STR), paramList, server), false, "invalid function"); } // ***************************************************************************************************************************** if (testBegin("restorePathValidate()")) { const String *pgPath = strNewFmt("%s/pg", testPath()); const String *repoPath = strNewFmt("%s/repo", testPath()); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error on data directory missing"); StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); harnessCfgLoad(cfgCmdRestore, argList); TEST_ERROR_FMT(restorePathValidate(), PathMissingError, "$PGDATA directory '%s/pg' does not exist", testPath()); // Create PGDATA storagePathCreateP(storagePgWrite(), NULL); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error on postmaster.pid is present"); storagePutP(storageNewWriteP(storagePgWrite(), strNew("postmaster.pid")), NULL); TEST_ERROR_FMT( restorePathValidate(), PostmasterRunningError, "unable to restore while PostgreSQL is running\n" "HINT: presence of 'postmaster.pid' in '%s/pg' indicates PostgreSQL is running.\n" "HINT: remove 'postmaster.pid' only if PostgreSQL is not running.", testPath()); storageRemoveP(storagePgWrite(), strNew("postmaster.pid"), .errorOnMissing = true); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error on data directory does not look valid"); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--delta"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_VOID(restorePathValidate(), "restore --delta with invalid PGDATA"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptDelta), false, "--delta set to false"); TEST_RESULT_LOG( "P00 WARN: --delta or --force specified but unable to find 'PG_VERSION' or 'backup.manifest' in '{[path]}/pg' to" " confirm that this is a valid $PGDATA directory. --delta and --force have been disabled and if any files" " exist in the destination directories the restore will be aborted."); harnessCfgLoad(cfgCmdRestore, argList); storagePutP(storageNewWriteP(storagePgWrite(), strNew("backup.manifest")), NULL); TEST_RESULT_VOID(restorePathValidate(), "restore --delta with valid PGDATA"); storageRemoveP(storagePgWrite(), strNew("backup.manifest"), .errorOnMissing = true); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAdd(argList, strNewFmt("--pg1-path=%s/pg", testPath())); strLstAddZ(argList, "--force"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_VOID(restorePathValidate(), "restore --force with invalid PGDATA"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptForce), false, "--force set to false"); TEST_RESULT_LOG( "P00 WARN: --delta or --force specified but unable to find 'PG_VERSION' or 'backup.manifest' in '{[path]}/pg' to" " confirm that this is a valid $PGDATA directory. --delta and --force have been disabled and if any files" " exist in the destination directories the restore will be aborted."); harnessCfgLoad(cfgCmdRestore, argList); storagePutP(storageNewWriteP(storagePgWrite(), strNew(PG_FILE_PGVERSION)), NULL); TEST_RESULT_VOID(restorePathValidate(), "restore --force with valid PGDATA"); storageRemoveP(storagePgWrite(), strNew(PG_FILE_PGVERSION), .errorOnMissing = true); } // ***************************************************************************************************************************** if (testBegin("getEpoch()")) { TEST_TITLE("system time UTC"); setenv("TZ", "UTC", true); TEST_RESULT_UINT(getEpoch(strNew("2020-01-08 09:18:15-0700")), 1578500295, "epoch with timezone"); TEST_RESULT_UINT(getEpoch(strNew("2020-01-08 16:18:15.0000")), 1578500295, "same epoch no timezone"); TEST_RESULT_UINT(getEpoch(strNew("2020-01-08 16:18:15.0000+00")), 1578500295, "same epoch timezone 0"); TEST_ERROR_FMT(getEpoch(strNew("2020-13-08 16:18:15")), FormatError, "invalid date 2020-13-08"); TEST_ERROR_FMT(getEpoch(strNew("2020-01-08 16:68:15")), FormatError, "invalid time 16:68:15"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("system time America/New_York"); setenv("TZ", "America/New_York", true); time_t testTime = 1573754569; char timeBuffer[20]; strftime(timeBuffer, sizeof(timeBuffer), "%Y-%m-%d %H:%M:%S", localtime(&testTime)); TEST_RESULT_Z(timeBuffer, "2019-11-14 13:02:49", "check timezone set"); TEST_RESULT_UINT(getEpoch(strNew("2019-11-14 13:02:49-0500")), 1573754569, "offset same as local"); TEST_RESULT_UINT(getEpoch(strNew("2019-11-14 13:02:49")), 1573754569, "GMT-0500 (EST)"); TEST_RESULT_UINT(getEpoch(strNew("2019-09-14 20:02:49")), 1568505769, "GMT-0400 (EDT)"); TEST_RESULT_UINT(getEpoch(strNew("2018-04-27 04:29:00+04:30")), 1524787140, "GMT+0430"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("invalid target time format"); TEST_RESULT_UINT(getEpoch(strNew("Tue, 15 Nov 1994 12:45:26")), 0, "invalid date time format"); TEST_RESULT_LOG( "P00 WARN: automatic backup set selection cannot be performed with provided time 'Tue, 15 Nov 1994 12:45:26'," " latest backup set will be used\n" " HINT: time format must be YYYY-MM-DD HH:MM:SS with optional msec and optional timezone" " (+/- HH or HHMM or HH:MM) - if timezone is ommitted, local time is assumed (for UTC use +00)"); setenv("TZ", "UTC", true); } // ***************************************************************************************************************************** if (testBegin("restoreBackupSet()")) { const String *pgPath = strNewFmt("%s/pg", testPath()); const String *repoPath = strNewFmt("%s/repo", testPath()); StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); harnessCfgLoad(cfgCmdRestore, argList); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error when no backups are present"); InfoBackup *infoBackup = infoBackupNewLoad(ioBufferReadNew(harnessInfoChecksumZ(TEST_RESTORE_BACKUP_INFO_DB))); TEST_ERROR_FMT(restoreBackupSet(infoBackup), BackupSetInvalidError, "no backup sets to restore"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error on invalid backup set"); infoBackup = infoBackupNewLoad( ioBufferReadNew(harnessInfoChecksumZ(TEST_RESTORE_BACKUP_INFO "\n" TEST_RESTORE_BACKUP_INFO_DB))); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--set=BOGUS"); harnessCfgLoad(cfgCmdRestore, argList); TEST_ERROR(restoreBackupSet(infoBackup), BackupSetInvalidError, "backup set BOGUS is not valid"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("target time"); setenv("TZ", "UTC", true); infoBackup = infoBackupNewLoad( ioBufferReadNew(harnessInfoChecksumZ(TEST_RESTORE_BACKUP_INFO "\n" TEST_RESTORE_BACKUP_INFO_DB))); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--type=time"); strLstAddZ(argList, "--target=2016-12-19 16:28:04-0500"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_STR_Z(restoreBackupSet(infoBackup), "20161219-212741F_20161219-212803D", "backup set found"); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--type=time"); strLstAddZ(argList, "--target=2016-12-19 16:27:30-0500"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_STR_Z(restoreBackupSet(infoBackup), "20161219-212741F_20161219-212918I", "default to latest backup set"); TEST_RESULT_LOG( "P00 WARN: unable to find backup set with stop time less than '2016-12-19 16:27:30-0500', latest backup set will be" " used"); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--type=time"); strLstAddZ(argList, "--target=Tue, 15 Nov 1994 12:45:26"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_STR_Z(restoreBackupSet(infoBackup), "20161219-212741F_20161219-212918I", "time invalid format, default latest"); TEST_RESULT_LOG( "P00 WARN: automatic backup set selection cannot be performed with provided time 'Tue, 15 Nov 1994 12:45:26'," " latest backup set will be used\n" " HINT: time format must be YYYY-MM-DD HH:MM:SS with optional msec and optional timezone" " (+/- HH or HHMM or HH:MM) - if timezone is ommitted, local time is assumed (for UTC use +00)"); } // ***************************************************************************************************************************** if (testBegin("restoreManifestValidate()")) { // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error on mismatched label"); Manifest *manifest = testManifestMinimal(STRDEF("20161219-212741F"), PG_VERSION_94, STRDEF("/pg")); TEST_ERROR( restoreManifestValidate(manifest, STRDEF("20161219-212741F_20161219-212918I")), FormatError, "requested backup '20161219-212741F_20161219-212918I' and manifest label '20161219-212741F' do not match\n" "HINT: this indicates some sort of corruption (at the very least paths have been renamed)."); } // ***************************************************************************************************************************** if (testBegin("restoreManifestMap()")) { const String *pgPath = strNewFmt("%s/pg", testPath()); const String *repoPath = strNewFmt("%s/repo", testPath()); Manifest *manifest = testManifestMinimal(STRDEF("20161219-212741F"), PG_VERSION_94, pgPath); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("remap data directory"); StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_VOID(restoreManifestMap(manifest), "base directory is not remapped"); TEST_RESULT_STR(manifestTargetFind(manifest, MANIFEST_TARGET_PGDATA_STR)->path, pgPath, "base directory is not remapped"); // Now change pg1-path so the data directory gets remapped pgPath = strNewFmt("%s/pg2", testPath()); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_VOID(restoreManifestMap(manifest), "base directory is remapped"); TEST_RESULT_STR(manifestTargetFind(manifest, MANIFEST_TARGET_PGDATA_STR)->path, pgPath, "base directory is remapped"); TEST_RESULT_LOG("P00 INFO: remap data directory to '{[path]}/pg2'"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("remap tablespaces"); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--tablespace-map=bogus=/bogus"); harnessCfgLoad(cfgCmdRestore, argList); TEST_ERROR(restoreManifestMap(manifest), TablespaceMapError, "unable to remap invalid tablespace 'bogus'"); // Add some tablespaces manifestTargetAdd( manifest, &(ManifestTarget){ .name = STRDEF("pg_tblspc/1"), .path = STRDEF("/1"), .tablespaceId = 1, .tablespaceName = STRDEF("1"), .type = manifestTargetTypeLink}); manifestLinkAdd( manifest, &(ManifestLink){.name = STRDEF("pg_data/pg_tblspc/1"), .destination = STRDEF("/1")}); manifestTargetAdd( manifest, &(ManifestTarget){ .name = STRDEF("pg_tblspc/2"), .path = STRDEF("/2"), .tablespaceId = 2, .tablespaceName = STRDEF("ts2"), .type = manifestTargetTypeLink}); manifestLinkAdd( manifest, &(ManifestLink){.name = STRDEF("pg_data/pg_tblspc/2"), .destination = STRDEF("/2")}); // Error on different paths argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--tablespace-map=2=/2"); strLstAddZ(argList, "--tablespace-map=ts2=/ts2"); harnessCfgLoad(cfgCmdRestore, argList); TEST_ERROR( restoreManifestMap(manifest), TablespaceMapError, "tablespace remapped by name 'ts2' and id 2 with different paths"); // Remap one tablespace using the id and another with the name argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--tablespace-map=1=/1-2"); strLstAddZ(argList, "--tablespace-map=ts2=/2-2"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_VOID(restoreManifestMap(manifest), "remap tablespaces"); TEST_RESULT_STR_Z(manifestTargetFind(manifest, STRDEF("pg_tblspc/1"))->path, "/1-2", " check tablespace 1 target"); TEST_RESULT_STR_Z( manifestLinkFind(manifest, STRDEF("pg_data/pg_tblspc/1"))->destination, "/1-2", " check tablespace 1 link"); TEST_RESULT_STR_Z(manifestTargetFind(manifest, STRDEF("pg_tblspc/2"))->path, "/2-2", " check tablespace 1 target"); TEST_RESULT_STR_Z( manifestLinkFind(manifest, STRDEF("pg_data/pg_tblspc/2"))->destination, "/2-2", " check tablespace 1 link"); TEST_RESULT_LOG( "P00 INFO: map tablespace 'pg_tblspc/1' to '/1-2'\n" "P00 INFO: map tablespace 'pg_tblspc/2' to '/2-2'"); // Remap a tablespace using just the id and map the rest with tablespace-map-all argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--tablespace-map=2=/2-3"); strLstAddZ(argList, "--tablespace-map-all=/all"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_VOID(restoreManifestMap(manifest), "remap tablespaces"); TEST_RESULT_STR_Z(manifestTargetFind(manifest, STRDEF("pg_tblspc/1"))->path, "/all/1", " check tablespace 1 target"); TEST_RESULT_STR_Z( manifestLinkFind(manifest, STRDEF("pg_data/pg_tblspc/1"))->destination, "/all/1", " check tablespace 1 link"); TEST_RESULT_STR_Z(manifestTargetFind(manifest, STRDEF("pg_tblspc/2"))->path, "/2-3", " check tablespace 1 target"); TEST_RESULT_STR_Z( manifestLinkFind(manifest, STRDEF("pg_data/pg_tblspc/2"))->destination, "/2-3", " check tablespace 1 link"); TEST_RESULT_LOG( "P00 INFO: map tablespace 'pg_tblspc/1' to '/all/1'\n" "P00 INFO: map tablespace 'pg_tblspc/2' to '/2-3'"); // Remap all tablespaces with tablespace-map-all and update version to 9.2 to test warning manifest->data.pgVersion = PG_VERSION_92; argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--tablespace-map-all=/all2"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_VOID(restoreManifestMap(manifest), "remap tablespaces"); TEST_RESULT_STR_Z(manifestTargetFind(manifest, STRDEF("pg_tblspc/1"))->path, "/all2/1", " check tablespace 1 target"); TEST_RESULT_STR_Z( manifestLinkFind(manifest, STRDEF("pg_data/pg_tblspc/1"))->destination, "/all2/1", " check tablespace 1 link"); TEST_RESULT_STR_Z(manifestTargetFind(manifest, STRDEF("pg_tblspc/2"))->path, "/all2/ts2", " check tablespace 1 target"); TEST_RESULT_STR_Z( manifestLinkFind(manifest, STRDEF("pg_data/pg_tblspc/2"))->destination, "/all2/ts2", " check tablespace 1 link"); TEST_RESULT_LOG( "P00 INFO: map tablespace 'pg_tblspc/1' to '/all2/1'\n" "P00 INFO: map tablespace 'pg_tblspc/2' to '/all2/ts2'\n" "P00 WARN: update pg_tablespace.spclocation with new tablespace locations for PostgreSQL <= 9.2"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("remap links"); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--link-map=bogus=bogus"); harnessCfgLoad(cfgCmdRestore, argList); TEST_ERROR(restoreManifestMap(manifest), LinkMapError, "unable to remap invalid link 'bogus'"); // Add some links manifestTargetAdd( manifest, &(ManifestTarget){ .name = STRDEF("pg_data/pg_hba.conf"), .path = STRDEF("../conf"), .file = STRDEF("pg_hba.conf"), .type = manifestTargetTypeLink}); manifestLinkAdd( manifest, &(ManifestLink){.name = STRDEF("pg_data/pg_hba.conf"), .destination = STRDEF("../conf/pg_hba.conf")}); manifestTargetAdd( manifest, &(ManifestTarget){.name = STRDEF("pg_data/pg_wal"), .path = STRDEF("/wal"), .type = manifestTargetTypeLink}); manifestLinkAdd( manifest, &(ManifestLink){.name = STRDEF("pg_data/pg_wal"), .destination = STRDEF("/wal")}); // Error on invalid file link path argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--link-map=pg_hba.conf=bogus"); harnessCfgLoad(cfgCmdRestore, argList); TEST_ERROR( restoreManifestMap(manifest), LinkMapError, "'bogus' is not long enough to be the destination for file link 'pg_hba.conf'"); TEST_RESULT_LOG("P00 INFO: map link 'pg_hba.conf' to 'bogus'"); // Remap both links argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--link-map=pg_hba.conf=../conf2/pg_hba2.conf"); strLstAddZ(argList, "--link-map=pg_wal=/wal2"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_VOID(restoreManifestMap(manifest), "remap links"); TEST_RESULT_STR_Z(manifestTargetFind(manifest, STRDEF("pg_data/pg_hba.conf"))->path, "../conf2", " check link path"); TEST_RESULT_STR_Z(manifestTargetFind(manifest, STRDEF("pg_data/pg_hba.conf"))->file, "pg_hba2.conf", " check link file"); TEST_RESULT_STR_Z( manifestLinkFind(manifest, STRDEF("pg_data/pg_hba.conf"))->destination, "../conf2/pg_hba2.conf", " check link dest"); TEST_RESULT_STR_Z(manifestTargetFind(manifest, STRDEF("pg_data/pg_wal"))->path, "/wal2", " check link path"); TEST_RESULT_STR_Z( manifestLinkFind(manifest, STRDEF("pg_data/pg_wal"))->destination, "/wal2", " check link dest"); TEST_RESULT_LOG( "P00 INFO: map link 'pg_hba.conf' to '../conf2/pg_hba2.conf'\n" "P00 INFO: map link 'pg_wal' to '/wal2'"); // Leave all links as they are argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--link-all"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_VOID(restoreManifestMap(manifest), "leave links as they are"); TEST_RESULT_STR_Z(manifestTargetFind(manifest, STRDEF("pg_data/pg_hba.conf"))->path, "../conf2", " check link path"); TEST_RESULT_STR_Z(manifestTargetFind(manifest, STRDEF("pg_data/pg_hba.conf"))->file, "pg_hba2.conf", " check link file"); TEST_RESULT_STR_Z( manifestLinkFind(manifest, STRDEF("pg_data/pg_hba.conf"))->destination, "../conf2/pg_hba2.conf", " check link dest"); TEST_RESULT_STR_Z(manifestTargetFind(manifest, STRDEF("pg_data/pg_wal"))->path, "/wal2", " check link path"); TEST_RESULT_STR_Z( manifestLinkFind(manifest, STRDEF("pg_data/pg_wal"))->destination, "/wal2", " check link dest"); // Remove all links argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_VOID(restoreManifestMap(manifest), "remove all links"); TEST_ERROR( manifestTargetFind(manifest, STRDEF("pg_data/pg_hba.conf")), AssertError, "unable to find 'pg_data/pg_hba.conf' in manifest target list"); TEST_ERROR( manifestLinkFind(manifest, STRDEF("pg_data/pg_hba.conf")), AssertError, "unable to find 'pg_data/pg_hba.conf' in manifest link list"); TEST_ERROR( manifestTargetFind(manifest, STRDEF("pg_data/pg_wal")), AssertError, "unable to find 'pg_data/pg_wal' in manifest target list"); TEST_ERROR( manifestLinkFind(manifest, STRDEF("pg_data/pg_wal")), AssertError, "unable to find 'pg_data/pg_wal' in manifest link list"); TEST_RESULT_LOG( "P00 WARN: file link 'pg_hba.conf' will be restored as a file at the same location\n" "P00 WARN: contents of directory link 'pg_wal' will be restored in a directory at the same location"); } // ***************************************************************************************************************************** if (testBegin("restoreManifestOwner()")) { userInitInternal(); const String *pgPath = strNewFmt("%s/pg", testPath()); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("owner is not root and all ownership is good"); Manifest *manifest = testManifestMinimal(STRDEF("20161219-212741F_20161219-21275D"), PG_VERSION_96, pgPath); TEST_RESULT_VOID(restoreManifestOwner(manifest), "check ownership"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("owner is not root but has no user name"); manifest = testManifestMinimal(STRDEF("20161219-212741F_20161219-21275I"), PG_VERSION_96, pgPath); userLocalData.groupName = NULL; userLocalData.userName = NULL; TEST_RESULT_VOID(restoreManifestOwner(manifest), "check ownership"); TEST_RESULT_LOG( "P00 WARN: unknown user '{[user]}' in backup manifest mapped to current user\n" "P00 WARN: unknown group '{[user]}' in backup manifest mapped to current group"); userInitInternal(); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("owner is not root and some ownership is bad"); manifest = testManifestMinimal(STRDEF("20161219-212741F_20161219-21275D"), PG_VERSION_96, pgPath); ManifestPath path = {.name = STRDEF("pg_data/bogus_path"), .user = STRDEF("path-user-bogus")}; manifestPathAdd(manifest, &path); ManifestFile file = {.name = STRDEF("pg_data/bogus_file"), .mode = 0600, .group = STRDEF("file-group-bogus")}; manifestFileAdd(manifest, &file); ManifestLink link = {.name = STRDEF("pg_data/bogus_link"), .destination = STRDEF("/"), .group = STRDEF("link-group-bogus")}; manifestLinkAdd(manifest, &link); TEST_RESULT_VOID(restoreManifestOwner(manifest), "check ownership"); TEST_RESULT_LOG( "P00 WARN: unknown user in backup manifest mapped to current user\n" "P00 WARN: unknown user 'path-user-bogus' in backup manifest mapped to current user\n" "P00 WARN: unknown group in backup manifest mapped to current group\n" "P00 WARN: unknown group 'file-group-bogus' in backup manifest mapped to current group\n" "P00 WARN: unknown group 'link-group-bogus' in backup manifest mapped to current group"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("owner is root and ownership is good"); StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--repo1-path=/repo"); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); harnessCfgLoad(cfgCmdRestore, argList); manifest = testManifestMinimal(STRDEF("20161219-212741F_20161219-21275D"), PG_VERSION_96, pgPath); userLocalData.userRoot = true; storagePathCreateP(storagePgWrite(), NULL, .mode = 0700); TEST_RESULT_VOID(restoreManifestOwner(manifest), "check ownership"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("owner is root and user is bad"); manifestPathAdd(manifest, &path); TEST_RESULT_VOID(restoreManifestOwner(manifest), "check ownership"); TEST_RESULT_LOG("P00 WARN: unknown group in backup manifest mapped to '{[user]}'"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("owner is root and group is bad"); manifest = testManifestMinimal(STRDEF("20161219-212741F_20161219-21275D"), PG_VERSION_96, pgPath); userLocalData.userRoot = true; manifestFileAdd(manifest, &file); manifestLinkAdd(manifest, &link); TEST_RESULT_VOID(restoreManifestOwner(manifest), "check ownership"); TEST_RESULT_LOG("P00 WARN: unknown user in backup manifest mapped to '{[user]}'"); // ------------------------------------------------------------------------------------------------------------------------- if (testContainer()) { TEST_TITLE("owner is root and ownership of pg_data is bad"); manifestPathAdd(manifest, &path); manifestFileAdd(manifest, &file); TEST_SYSTEM_FMT("sudo chown 77777:77777 %s", strPtr(pgPath)); userLocalData.userName = STRDEF("root"); userLocalData.groupName = STRDEF("root"); TEST_RESULT_VOID(restoreManifestOwner(manifest), "check ownership"); TEST_RESULT_LOG( "P00 WARN: unknown user in backup manifest mapped to 'root'\n" "P00 WARN: unknown group in backup manifest mapped to 'root'"); } } // ***************************************************************************************************************************** if (testBegin("restoreClean*()")) { userInitInternal(); // Set log level to detail harnessLogLevelSet(logLevelDetail); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("restoreCleanOwnership() update to root (existing)"); // Expect an error here since we can't really set ownership to root TEST_ERROR_FMT( restoreCleanOwnership(STR(testPath()), STRDEF("root"), STRDEF("root"), userId(), groupId(), false), FileOwnerError, "unable to set ownership for '%s': [1] Operation not permitted", testPath()); TEST_RESULT_LOG("P00 DETAIL: update ownership for '{[path]}'"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("restoreCleanOwnership() update to bogus (new)"); // Will succeed because bogus will be remapped to the current user/group restoreCleanOwnership(STR(testPath()), STRDEF("bogus"), STRDEF("bogus"), 0, 0, true); // Test again with only group for coverage restoreCleanOwnership(STR(testPath()), STRDEF("bogus"), STRDEF("bogus"), userId(), 0, true); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("directory with bad permissions/mode"); const String *pgPath = strNewFmt("%s/pg", testPath()); const String *repoPath = strNewFmt("%s/repo", testPath()); Manifest *manifest = testManifestMinimal(STRDEF("20161219-212741F_20161219-21275D"), PG_VERSION_96, pgPath); StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); harnessCfgLoad(cfgCmdRestore, argList); storagePathCreateP(storagePgWrite(), NULL, .mode = 0600); userLocalData.userId = getuid() + 1; TEST_ERROR_FMT( restoreCleanBuild(manifest), PathOpenError, "unable to restore to path '%s/pg' not owned by current user", testPath()); TEST_RESULT_LOG("P00 DETAIL: check '{[path]}/pg' exists"); userLocalData.userRoot = true; TEST_ERROR_FMT( restoreCleanBuild(manifest), PathOpenError, "unable to restore to path '%s/pg' without rwx permissions", testPath()); TEST_RESULT_LOG("P00 DETAIL: check '{[path]}/pg' exists"); userInitInternal(); TEST_ERROR_FMT( restoreCleanBuild(manifest), PathOpenError, "unable to restore to path '%s/pg' without rwx permissions", testPath()); TEST_RESULT_LOG("P00 DETAIL: check '{[path]}/pg' exists"); storagePathRemoveP(storagePgWrite(), NULL); storagePathCreateP(storagePgWrite(), NULL, .mode = 0700); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("fail on restore with directory not empty"); storagePutP(storageNewWriteP(storagePgWrite(), PG_FILE_RECOVERYCONF_STR), NULL); TEST_ERROR_FMT( restoreCleanBuild(manifest), PathNotEmptyError, "unable to restore to path '%s/pg' because it contains files\n" "HINT: try using --delta if this is what you intended.", testPath()); TEST_RESULT_LOG("P00 DETAIL: check '{[path]}/pg' exists"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("succeed when all directories empty"); storageRemoveP(storagePgWrite(), PG_FILE_RECOVERYCONF_STR); manifestTargetAdd( manifest, &(ManifestTarget){ .name = STRDEF("pg_data/pg_hba.conf"), .path = STRDEF("../conf"), .file = STRDEF("pg_hba.conf"), .type = manifestTargetTypeLink}); manifestLinkAdd( manifest, &(ManifestLink){.name = STRDEF("pg_data/pg_hba.conf"), .destination = STRDEF("../conf/pg_hba.conf")}); storagePathCreateP(storageTest, STRDEF("conf"), .mode = 0700); TEST_RESULT_VOID(restoreCleanBuild(manifest), "restore"); TEST_RESULT_LOG( "P00 DETAIL: check '{[path]}/pg' exists\n" "P00 DETAIL: check '{[path]}/conf' exists\n" "P00 DETAIL: create symlink '{[path]}/pg/pg_hba.conf' to '../conf/pg_hba.conf'"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error when linked file already exists without delta"); storageRemoveP(storagePgWrite(), STRDEF("pg_hba.conf")); storagePutP(storageNewWriteP(storagePgWrite(), STRDEF("../conf/pg_hba.conf")), NULL); TEST_ERROR_FMT( restoreCleanBuild(manifest), FileExistsError, "unable to restore file '%s/conf/pg_hba.conf' because it already exists\n" "HINT: try using --delta if this is what you intended.", testPath()); TEST_RESULT_LOG( "P00 DETAIL: check '{[path]}/pg' exists\n" "P00 DETAIL: check '{[path]}/conf' exists"); storageRemoveP(storagePgWrite(), STRDEF("../conf/pg_hba.conf"), .errorOnMissing = true); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("succeed when all directories empty and ignore recovery.conf"); TEST_SYSTEM_FMT("rm -rf %s/*", strPtr(pgPath)); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--type=preserve"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_VOID(restoreCleanBuild(manifest), "restore"); TEST_RESULT_LOG( "P00 DETAIL: check '{[path]}/pg' exists\n" "P00 DETAIL: check '{[path]}/conf' exists\n" "P00 DETAIL: create symlink '{[path]}/pg/pg_hba.conf' to '../conf/pg_hba.conf'"); TEST_SYSTEM_FMT("rm -rf %s/*", strPtr(pgPath)); storagePutP(storageNewWriteP(storagePgWrite(), PG_FILE_RECOVERYCONF_STR), NULL); TEST_RESULT_VOID(restoreCleanBuild(manifest), "normal restore ignore recovery.conf"); TEST_RESULT_LOG( "P00 DETAIL: check '{[path]}/pg' exists\n" "P00 DETAIL: check '{[path]}/conf' exists\n" "P00 DETAIL: create symlink '{[path]}/pg/pg_hba.conf' to '../conf/pg_hba.conf'"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("succeed when all directories empty and PG12 and preserve but no recovery files"); TEST_SYSTEM_FMT("rm -rf %s/*", strPtr(pgPath)); manifest->data.pgVersion = PG_VERSION_12; TEST_RESULT_VOID(restoreCleanBuild(manifest), "restore"); TEST_RESULT_LOG( "P00 DETAIL: check '{[path]}/pg' exists\n" "P00 DETAIL: check '{[path]}/conf' exists\n" "P00 DETAIL: create symlink '{[path]}/pg/pg_hba.conf' to '../conf/pg_hba.conf'"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("succeed when all directories empty and ignore PG12 recovery files"); TEST_SYSTEM_FMT("rm -rf %s/*", strPtr(pgPath)); manifestFileAdd(manifest, &(ManifestFile){.name = STRDEF(MANIFEST_TARGET_PGDATA "/" PG_FILE_POSTGRESQLAUTOCONF)}); storagePutP(storageNewWriteP(storagePgWrite(), PG_FILE_POSTGRESQLAUTOCONF_STR), NULL); storagePutP(storageNewWriteP(storagePgWrite(), PG_FILE_RECOVERYSIGNAL_STR), NULL); storagePutP(storageNewWriteP(storagePgWrite(), PG_FILE_STANDBYSIGNAL_STR), NULL); TEST_RESULT_VOID(restoreCleanBuild(manifest), "restore"); TEST_RESULT_LOG( "P00 DETAIL: check '{[path]}/pg' exists\n" "P00 DETAIL: check '{[path]}/conf' exists\n" "P00 DETAIL: skip 'postgresql.auto.conf' -- recovery type is preserve\n" "P00 DETAIL: create symlink '{[path]}/pg/pg_hba.conf' to '../conf/pg_hba.conf'"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("succeed when all directories empty and PG12"); TEST_SYSTEM_FMT("rm -rf %s/*", strPtr(pgPath)); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_VOID(restoreCleanBuild(manifest), "restore"); TEST_RESULT_LOG( "P00 DETAIL: check '{[path]}/pg' exists\n" "P00 DETAIL: check '{[path]}/conf' exists\n" "P00 DETAIL: create symlink '{[path]}/pg/pg_hba.conf' to '../conf/pg_hba.conf'"); } // ***************************************************************************************************************************** if (testBegin("restoreSelectiveExpression()")) { // Set log level to detail harnessLogLevelSet(logLevelDetail); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("no valid databases"); StringList *argListClean = strLstNew(); strLstAddZ(argListClean, "--stanza=test1"); strLstAddZ(argListClean, "--repo1-path=/repo"); strLstAddZ(argListClean, "--pg1-path=/pg"); StringList *argList = strLstDup(argListClean); strLstAddZ(argList, "--db-include=" UTF8_DB_NAME); harnessCfgLoad(cfgCmdRestore, argList); Manifest *manifest = NULL; MEM_CONTEXT_NEW_BEGIN("Manifest") { manifest = manifestNewInternal(); manifest->data.pgVersion = PG_VERSION_84; manifestTargetAdd(manifest, &(ManifestTarget){.name = MANIFEST_TARGET_PGDATA_STR, .path = STRDEF("/pg")}); manifestFileAdd(manifest, &(ManifestFile){.name = STRDEF(MANIFEST_TARGET_PGDATA "/" PG_FILE_PGVERSION)}); } MEM_CONTEXT_NEW_END(); TEST_ERROR( restoreSelectiveExpression(manifest), FormatError, "no databases found for selective restore\n" "HINT: is this a valid cluster?"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("database id is missing on disk"); MEM_CONTEXT_BEGIN(manifest->memContext) { manifestDbAdd(manifest, &(ManifestDb){.name = STRDEF("postgres"), .id = 12173, .lastSystemId = 12168}); manifestDbAdd(manifest, &(ManifestDb){.name = STRDEF("template0"), .id = 12168, .lastSystemId = 12168}); manifestDbAdd(manifest, &(ManifestDb){.name = STRDEF("template1"), .id = 1, .lastSystemId = 12168}); manifestDbAdd(manifest, &(ManifestDb){.name = STRDEF(UTF8_DB_NAME), .id = 16384, .lastSystemId = 12168}); manifestFileAdd( manifest, &(ManifestFile){.name = STRDEF(MANIFEST_TARGET_PGDATA "/" PG_PATH_BASE "/1/" PG_FILE_PGVERSION)}); } MEM_CONTEXT_END(); TEST_ERROR(restoreSelectiveExpression(manifest), DbMissingError, "database to include '" UTF8_DB_NAME "' does not exist"); TEST_RESULT_LOG("P00 DETAIL: databases found for selective restore (1)"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("all databases selected"); MEM_CONTEXT_BEGIN(manifest->memContext) { manifestFileAdd( manifest, &(ManifestFile){.name = STRDEF(MANIFEST_TARGET_PGDATA "/" PG_PATH_BASE "/16384/" PG_FILE_PGVERSION)}); } MEM_CONTEXT_END(); TEST_RESULT_PTR(restoreSelectiveExpression(manifest), NULL, "all databases selected"); TEST_RESULT_LOG( "P00 DETAIL: databases found for selective restore (1, 16384)\n" "P00 INFO: nothing to filter - all user databases have been selected"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error on system database selected"); argList = strLstDup(argListClean); strLstAddZ(argList, "--db-include=1"); harnessCfgLoad(cfgCmdRestore, argList); TEST_ERROR( restoreSelectiveExpression(manifest), DbInvalidError, "system databases (template0, postgres, etc.) are included by default"); TEST_RESULT_LOG("P00 DETAIL: databases found for selective restore (1, 16384)"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error on missing database selected"); argList = strLstDup(argListClean); strLstAddZ(argList, "--db-include=7777777"); harnessCfgLoad(cfgCmdRestore, argList); TEST_ERROR(restoreSelectiveExpression(manifest), DbMissingError, "database to include '7777777' does not exist"); TEST_RESULT_LOG("P00 DETAIL: databases found for selective restore (1, 16384)"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("select database by id"); MEM_CONTEXT_BEGIN(manifest->memContext) { manifestDbAdd(manifest, &(ManifestDb){.name = STRDEF("test2"), .id = 32768, .lastSystemId = 12168}); manifestFileAdd( manifest, &(ManifestFile){.name = STRDEF(MANIFEST_TARGET_PGDATA "/" PG_PATH_BASE "/32768/" PG_FILE_PGVERSION)}); } MEM_CONTEXT_END(); argList = strLstDup(argListClean); strLstAddZ(argList, "--db-include=16384"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_STR_Z(restoreSelectiveExpression(manifest), "(^pg_data/base/32768/)", "check expression"); TEST_RESULT_LOG( "P00 DETAIL: databases found for selective restore (1, 16384, 32768)"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("one database selected without tablespace id"); MEM_CONTEXT_BEGIN(manifest->memContext) { manifestTargetAdd( manifest, &(ManifestTarget){ .name = STRDEF(MANIFEST_TARGET_PGTBLSPC "/16387"), .tablespaceId = 16387, .tablespaceName = STRDEF("ts1"), .path = STRDEF("/ts1")}); manifestFileAdd( manifest, &(ManifestFile){.name = STRDEF(MANIFEST_TARGET_PGDATA "/" PG_PATH_BASE "/32768/" PG_FILE_PGVERSION)}); } MEM_CONTEXT_END(); TEST_RESULT_STR_Z( restoreSelectiveExpression(manifest), "(^pg_data/base/32768/)|(^pg_tblspc/16387/32768/)", "check expression"); TEST_RESULT_LOG("P00 DETAIL: databases found for selective restore (1, 16384, 32768)"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("one database selected with tablespace id"); manifest->data.pgVersion = PG_VERSION_94; MEM_CONTEXT_BEGIN(manifest->memContext) { manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(MANIFEST_TARGET_PGTBLSPC "/16387/PG_9.4_201409291/65536/" PG_FILE_PGVERSION)}); } MEM_CONTEXT_END(); TEST_RESULT_STR_Z( restoreSelectiveExpression(manifest), "(^pg_data/base/32768/)|(^pg_tblspc/16387/PG_9.4_201409291/32768/)|(^pg_data/base/65536/)" "|(^pg_tblspc/16387/PG_9.4_201409291/65536/)", "check expression"); TEST_RESULT_LOG("P00 DETAIL: databases found for selective restore (1, 16384, 32768, 65536)"); } // ***************************************************************************************************************************** if (testBegin("restoreRecoveryOption() and restoreRecoveryConf()")) { StringList *argBaseList = strLstNew(); strLstAddZ(argBaseList, "--stanza=test1"); strLstAddZ(argBaseList, "--repo1-path=/repo"); strLstAddZ(argBaseList, "--pg1-path=/pg"); const String *restoreLabel = STRDEF("LABEL"); #define RECOVERY_SETTING_HEADER "# Recovery settings generated by pgBackRest restore on LABEL\n" // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("user-specified options"); StringList *argList = strLstDup(argBaseList); strLstAddZ(argList, "--recovery-option=a-setting=a"); strLstAddZ(argList, "--recovery-option=b_setting=b"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_STR_Z( restoreRecoveryConf(PG_VERSION_94, restoreLabel), hrnReplaceKey( RECOVERY_SETTING_HEADER "a_setting = 'a'\n" "b_setting = 'b'\n" "restore_command = '{[project-exe]} --lock-path={[path-data]}/lock --log-path={[path-data]} --pg1-path=/pg" " --repo1-path=/repo --stanza=test1 archive-get %f \"%p\"'\n"), "check recovery options"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("override restore_command"); strLstAddZ(argBaseList, "--recovery-option=restore-command=my_restore_command"); argList = strLstDup(argBaseList); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_STR_Z( restoreRecoveryConf(PG_VERSION_94, restoreLabel), RECOVERY_SETTING_HEADER "restore_command = 'my_restore_command'\n", "check recovery options"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("recovery target immediate"); argList = strLstDup(argBaseList); strLstAddZ(argList, "--type=immediate"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_STR_Z( restoreRecoveryConf(PG_VERSION_94, restoreLabel), RECOVERY_SETTING_HEADER "restore_command = 'my_restore_command'\n" "recovery_target = 'immediate'\n", "check recovery options"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("recovery target time with timeline"); argList = strLstDup(argBaseList); strLstAddZ(argList, "--type=time"); strLstAddZ(argList, "--target=TIME"); strLstAddZ(argList, "--target-timeline=3"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_STR_Z( restoreRecoveryConf(PG_VERSION_94, restoreLabel), RECOVERY_SETTING_HEADER "restore_command = 'my_restore_command'\n" "recovery_target_time = 'TIME'\n" "recovery_target_timeline = '3'\n", "check recovery options"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("recovery target inclusive"); argList = strLstDup(argBaseList); strLstAddZ(argList, "--type=time"); strLstAddZ(argList, "--target=TIME"); strLstAddZ(argList, "--target-exclusive"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_STR_Z( restoreRecoveryConf(PG_VERSION_94, restoreLabel), RECOVERY_SETTING_HEADER "restore_command = 'my_restore_command'\n" "recovery_target_time = 'TIME'\n" "recovery_target_inclusive = 'false'\n", "check recovery options"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("no recovery_target_inclusive for target=name"); argList = strLstDup(argBaseList); strLstAddZ(argList, "--type=name"); strLstAddZ(argList, "--target=NAME"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_STR_Z( restoreRecoveryConf(PG_VERSION_94, restoreLabel), RECOVERY_SETTING_HEADER "restore_command = 'my_restore_command'\n" "recovery_target_name = 'NAME'\n", "check recovery options"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("recovery target action = shutdown"); argList = strLstDup(argBaseList); strLstAddZ(argList, "--type=immediate"); strLstAddZ(argList, "--target-action=shutdown"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_STR_Z( restoreRecoveryConf(PG_VERSION_95, restoreLabel), RECOVERY_SETTING_HEADER "restore_command = 'my_restore_command'\n" "recovery_target = 'immediate'\n" "recovery_target_action = 'shutdown'\n", "check recovery options"); TEST_ERROR( restoreRecoveryConf(PG_VERSION_94, restoreLabel), OptionInvalidError, "target-action=shutdown is only available in PostgreSQL >= 9.5"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("recovery target action = pause"); argList = strLstDup(argBaseList); strLstAddZ(argList, "--type=immediate"); strLstAddZ(argList, "--target-action=promote"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_STR_Z( restoreRecoveryConf(PG_VERSION_94, restoreLabel), RECOVERY_SETTING_HEADER "restore_command = 'my_restore_command'\n" "recovery_target = 'immediate'\n" "pause_at_recovery_target = 'false'\n", "check recovery options"); TEST_ERROR( restoreRecoveryConf(PG_VERSION_90, restoreLabel), OptionInvalidError, "target-action option is only available in PostgreSQL >= 9.1"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("recovery type = standby"); argList = strLstDup(argBaseList); strLstAddZ(argList, "--type=standby"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_STR_Z( restoreRecoveryConf(PG_VERSION_94, restoreLabel), RECOVERY_SETTING_HEADER "restore_command = 'my_restore_command'\n" "standby_mode = 'on'\n", "check recovery options"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("recovery type = standby with timeline"); argList = strLstDup(argBaseList); strLstAddZ(argList, "--type=standby"); strLstAddZ(argList, "--target-timeline=current"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_STR_Z( restoreRecoveryConf(PG_VERSION_94, restoreLabel), RECOVERY_SETTING_HEADER "restore_command = 'my_restore_command'\n" "standby_mode = 'on'\n" "recovery_target_timeline = 'current'\n", "check recovery options"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("recovery type = standby with recovery GUCs"); argList = strLstDup(argBaseList); strLstAddZ(argList, "--type=standby"); harnessCfgLoad(cfgCmdRestore, argList); TEST_RESULT_STR_Z( restoreRecoveryConf(PG_VERSION_12, restoreLabel), RECOVERY_SETTING_HEADER "restore_command = 'my_restore_command'\n", "check recovery options"); } // ***************************************************************************************************************************** if (testBegin("restoreRecoveryWrite*()")) { const String *pgPath = strNewFmt("%s/pg", testPath()); storagePathCreateP(storageTest, pgPath, .mode = 0700); const String *restoreLabel = STRDEF("LABEL"); #define RECOVERY_SETTING_PREFIX "# Removed by pgBackRest restore on LABEL # " // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error when standby_mode setting is present"); StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--repo1-path=/repo"); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--type=default"); strLstAddZ(argList, "--recovery-option=standby-mode=on"); harnessCfgLoad(cfgCmdRestore, argList); TEST_ERROR( restoreRecoveryWriteAutoConf(PG_VERSION_12, restoreLabel), OptionInvalidError, "'standby_mode' setting is not valid for PostgreSQL >= 12\n" "HINT: use --type=standby instead of --recovery-option=standby_mode=on."); TEST_RESULT_LOG("P00 WARN: postgresql.auto.conf does not exist -- creating to contain recovery settings"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("PG12 restore missing postgresql.auto.conf"); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--repo1-path=/repo"); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--type=none"); harnessCfgLoad(cfgCmdRestore, argList); restoreRecoveryWriteAutoConf(PG_VERSION_12, restoreLabel); TEST_RESULT_STR_Z( strNewBuf(storageGetP(storageNewReadP(storagePg(), PG_FILE_POSTGRESQLAUTOCONF_STR))), "", "check postgresql.auto.conf"); TEST_RESULT_BOOL(storageExistsP(storagePg(), PG_FILE_RECOVERYSIGNAL_STR), true, "recovery.signal exists"); TEST_RESULT_BOOL(storageExistsP(storagePg(), PG_FILE_STANDBYSIGNAL_STR), false, "standby.signal missing"); TEST_RESULT_LOG( "P00 WARN: postgresql.auto.conf does not exist -- creating to contain recovery settings\n" "P00 INFO: write {[path]}/pg/postgresql.auto.conf"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("PG12 restore type none"); TEST_SYSTEM_FMT("rm -rf %s/*", strPtr(pgPath)); storagePutP( storageNewWriteP(storagePgWrite(), PG_FILE_POSTGRESQLAUTOCONF_STR), BUFSTRDEF( "# DO NOT MODIFY\n" "\t recovery_target_action='promote'\n\n")); restoreRecoveryWriteAutoConf(PG_VERSION_12, restoreLabel); TEST_RESULT_STR_Z( strNewBuf(storageGetP(storageNewReadP(storagePg(), PG_FILE_POSTGRESQLAUTOCONF_STR))), "# DO NOT MODIFY\n" RECOVERY_SETTING_PREFIX "\t recovery_target_action='promote'\n\n", "check postgresql.auto.conf"); TEST_RESULT_BOOL(storageExistsP(storagePg(), PG_FILE_RECOVERYSIGNAL_STR), true, "recovery.signal exists"); TEST_RESULT_BOOL(storageExistsP(storagePg(), PG_FILE_STANDBYSIGNAL_STR), false, "standby.signal missing"); TEST_RESULT_LOG("P00 INFO: write updated {[path]}/pg/postgresql.auto.conf"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("PG12 restore type standby and remove existing recovery settings"); TEST_SYSTEM_FMT("rm -rf %s/*", strPtr(pgPath)); storagePutP( storageNewWriteP(storagePgWrite(), PG_FILE_POSTGRESQLAUTOCONF_STR), BUFSTRDEF( "# DO NOT MODIFY\n" "recovery_target_name\t='name'\n" "recovery_target_inclusive = false\n")); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--repo1-path=/repo"); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--recovery-option=restore-command=my_restore_command"); strLstAddZ(argList, "--type=standby"); harnessCfgLoad(cfgCmdRestore, argList); restoreRecoveryWriteAutoConf(PG_VERSION_12, restoreLabel); TEST_RESULT_STR_Z( strNewBuf(storageGetP(storageNewReadP(storagePg(), PG_FILE_POSTGRESQLAUTOCONF_STR))), "# DO NOT MODIFY\n" RECOVERY_SETTING_PREFIX "recovery_target_name\t='name'\n" RECOVERY_SETTING_PREFIX "recovery_target_inclusive = false\n" "\n" RECOVERY_SETTING_HEADER "restore_command = 'my_restore_command'\n", "check postgresql.auto.conf"); TEST_RESULT_BOOL(storageExistsP(storagePg(), PG_FILE_RECOVERYSIGNAL_STR), true, "recovery.signal exists"); TEST_RESULT_BOOL(storageExistsP(storagePg(), PG_FILE_STANDBYSIGNAL_STR), true, "standby.signal missing"); TEST_RESULT_LOG("P00 INFO: write updated {[path]}/pg/postgresql.auto.conf"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("PG12 restore type preserve"); Manifest *manifest = testManifestMinimal(STRDEF("20161219-212741F"), PG_VERSION_12, STRDEF("/pg")); TEST_SYSTEM_FMT("rm -rf %s/*", strPtr(pgPath)); storagePutP(storageNewWriteP(storagePgWrite(), PG_FILE_POSTGRESQLAUTOCONF_STR), BUFSTRDEF("# DO NOT MODIFY\n")); storagePutP(storageNewWriteP(storagePgWrite(), PG_FILE_STANDBYSIGNAL_STR), NULL); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--repo1-path=/repo"); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--type=preserve"); harnessCfgLoad(cfgCmdRestore, argList); restoreRecoveryWrite(manifest); TEST_RESULT_STR_Z( strNewBuf(storageGetP(storageNewReadP(storagePg(), PG_FILE_POSTGRESQLAUTOCONF_STR))), "# DO NOT MODIFY\n", "check postgresql.auto.conf"); TEST_RESULT_BOOL(storageExistsP(storagePg(), PG_FILE_RECOVERYSIGNAL_STR), false, "recovery.signal missing"); TEST_RESULT_BOOL(storageExistsP(storagePg(), PG_FILE_STANDBYSIGNAL_STR), true, "standby.signal exists"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("PG12 restore type default"); TEST_SYSTEM_FMT("rm -rf %s/*", strPtr(pgPath)); storagePutP( storageNewWriteP(storagePgWrite(), PG_FILE_POSTGRESQLAUTOCONF_STR), BUFSTRDEF("# DO NOT MODIFY\n")); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--repo1-path=/repo"); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); harnessCfgLoad(cfgCmdRestore, argList); restoreRecoveryWrite(manifest); TEST_RESULT_BOOL( bufEq(storageGetP(storageNewReadP(storagePg(), PG_FILE_POSTGRESQLAUTOCONF_STR)), BUFSTRDEF("# DO NOT MODIFY\n")), false, "check postgresql.auto.conf has changed"); TEST_RESULT_BOOL(storageExistsP(storagePg(), PG_FILE_RECOVERYSIGNAL_STR), true, "recovery.signal exists"); TEST_RESULT_BOOL(storageExistsP(storagePg(), PG_FILE_STANDBYSIGNAL_STR), false, "standby.signal missing"); TEST_RESULT_LOG("P00 INFO: write updated {[path]}/pg/postgresql.auto.conf"); } // ***************************************************************************************************************************** if (testBegin("cmdRestore()")) { const String *pgPath = strNewFmt("%s/pg", testPath()); const String *repoPath = strNewFmt("%s/repo", testPath()); // Set log level to detail harnessLogLevelSet(logLevelDetail); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("verify next queue calculations"); TEST_RESULT_INT(restoreJobQueueNext(0, 0, 1), 0, "client idx 0, queue idx 0, 1 queue") TEST_RESULT_INT(restoreJobQueueNext(0, 0, 2), 1, "client idx 0, queue idx 0, 2 queues") TEST_RESULT_INT(restoreJobQueueNext(1, 1, 2), 0, "client idx 1, queue idx 1, 2 queues") TEST_RESULT_INT(restoreJobQueueNext(0, 1, 2), 0, "client idx 0, queue idx 1, 2 queues") TEST_RESULT_INT(restoreJobQueueNext(1, 0, 2), 1, "client idx 1, queue idx 0, 2 queues") // Locality error // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("incorrect locality"); StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--pg1-host=pg1"); harnessCfgLoad(cfgCmdRestore, argList); TEST_ERROR(cmdRestore(), HostInvalidError, "restore command must be run on the PostgreSQL host"); // Write backup info // ------------------------------------------------------------------------------------------------------------------------- storagePutP( storageNewWriteP(storageRepoWrite(), INFO_BACKUP_PATH_FILE_STR), harnessInfoChecksumZ(TEST_RESTORE_BACKUP_INFO "\n" TEST_RESTORE_BACKUP_INFO_DB)); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("full restore without delta"); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--set=20161219-212741F"); harnessCfgLoad(cfgCmdRestore, argList); #define TEST_LABEL "20161219-212741F" #define TEST_PGDATA MANIFEST_TARGET_PGDATA "/" #define TEST_REPO_PATH STORAGE_REPO_BACKUP "/" TEST_LABEL "/" TEST_PGDATA Manifest *manifest = NULL; MEM_CONTEXT_NEW_BEGIN("Manifest") { manifest = manifestNewInternal(); manifest->info = infoNew(NULL); manifest->data.backupLabel = strNew(TEST_LABEL); manifest->data.pgVersion = PG_VERSION_84; manifest->data.backupType = backupTypeFull; manifest->data.backupTimestampCopyStart = 1482182861; // So file timestamps should be less than this // Data directory manifestTargetAdd(manifest, &(ManifestTarget){.name = MANIFEST_TARGET_PGDATA_STR, .path = pgPath}); manifestPathAdd( manifest, &(ManifestPath){.name = MANIFEST_TARGET_PGDATA_STR, .mode = 0700, .group = groupName(), .user = userName()}); storagePathCreateP(storagePgWrite(), NULL); // Global directory manifestPathAdd( manifest, &(ManifestPath){ .name = STRDEF(TEST_PGDATA PG_PATH_GLOBAL), .mode = 0700, .group = groupName(), .user = userName()}); // PG_VERSION manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(TEST_PGDATA PG_FILE_PGVERSION), .size = 4, .timestamp = 1482182860, .mode = 0600, .group = groupName(), .user = userName(), .checksumSha1 = "797e375b924134687cbf9eacd37a4355f3d825e4"}); storagePutP( storageNewWriteP(storageRepoWrite(), STRDEF(TEST_REPO_PATH PG_FILE_PGVERSION)), BUFSTRDEF(PG_VERSION_84_STR "\n")); // pg_tblspc/1 manifestTargetAdd( manifest, &(ManifestTarget){ .type = manifestTargetTypeLink, .name = STRDEF(MANIFEST_TARGET_PGTBLSPC "/1"), .path = strNewFmt("%s/ts/1", testPath()), .tablespaceId = 1, .tablespaceName = STRDEF("ts1")}); manifestPathAdd( manifest, &(ManifestPath){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/" MANIFEST_TARGET_PGTBLSPC), .mode = 0700, .group = groupName(), .user = userName()}); manifestPathAdd( manifest, &(ManifestPath){ .name = STRDEF(MANIFEST_TARGET_PGTBLSPC), .mode = 0700, .group = groupName(), .user = userName()}); manifestPathAdd( manifest, &(ManifestPath){ .name = STRDEF(MANIFEST_TARGET_PGTBLSPC "/1"), .mode = 0700, .group = groupName(), .user = userName()}); manifestLinkAdd( manifest, &(ManifestLink){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/" MANIFEST_TARGET_PGTBLSPC "/1"), .destination = strNewFmt("%s/ts/1", testPath()), .group = groupName(), .user = userName()}); // pg_tblspc/1/16384 path manifestPathAdd( manifest, &(ManifestPath){ .name = STRDEF(MANIFEST_TARGET_PGTBLSPC "/1/16384"), .mode = 0700, .group = groupName(), .user = userName()}); // Always sort lstSort(manifest->targetList, sortOrderAsc); lstSort(manifest->fileList, sortOrderAsc); lstSort(manifest->linkList, sortOrderAsc); lstSort(manifest->pathList, sortOrderAsc); } MEM_CONTEXT_NEW_END(); manifestSave( manifest, storageWriteIo( storageNewWriteP(storageRepoWrite(), strNew(STORAGE_REPO_BACKUP "/" TEST_LABEL "/" BACKUP_MANIFEST_FILE)))); TEST_RESULT_VOID(cmdRestore(), "successful restore"); TEST_RESULT_LOG( "P00 INFO: restore backup set 20161219-212741F\n" "P00 DETAIL: check '{[path]}/pg' exists\n" "P00 DETAIL: check '{[path]}/ts/1' exists\n" "P00 DETAIL: update mode for '{[path]}/pg' to 0700\n" "P00 DETAIL: create path '{[path]}/pg/global'\n" "P00 DETAIL: create path '{[path]}/pg/pg_tblspc'\n" "P00 DETAIL: create symlink '{[path]}/pg/pg_tblspc/1' to '{[path]}/ts/1'\n" "P00 DETAIL: create path '{[path]}/pg/pg_tblspc/1/16384'\n" "P01 INFO: restore file {[path]}/pg/PG_VERSION (4B, 100%) checksum 797e375b924134687cbf9eacd37a4355f3d825e4\n" "P00 INFO: write {[path]}/pg/recovery.conf\n" "P00 DETAIL: sync path '{[path]}/pg'\n" "P00 DETAIL: sync path '{[path]}/pg/pg_tblspc'\n" "P00 DETAIL: sync path '{[path]}/pg/pg_tblspc/1'\n" "P00 DETAIL: sync path '{[path]}/pg/pg_tblspc/1/16384'\n" "P00 WARN: backup does not contain 'global/pg_control' -- cluster will not start\n" "P00 DETAIL: sync path '{[path]}/pg/global'"); // Remove recovery.conf before file comparison since it will have a new timestamp. Make sure it existed, though. storageRemoveP(storagePgWrite(), PG_FILE_RECOVERYCONF_STR, .errorOnMissing = true); testRestoreCompare( storagePg(), NULL, manifest, ". {path}\n" "PG_VERSION {file, s=4, t=1482182860}\n" "global {path}\n" "pg_tblspc {path}\n" "pg_tblspc/1 {link, d={[path]}/ts/1}\n"); testRestoreCompare( storagePg(), STRDEF("pg_tblspc/1"), manifest, ". {link, d={[path]}/ts/1}\n" "16384 {path}\n"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("full restore with force"); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--type=preserve"); strLstAddZ(argList, "--set=20161219-212741F"); strLstAddZ(argList, "--force"); harnessCfgLoad(cfgCmdRestore, argList); // Make sure existing backup.manifest file is ignored storagePutP(storageNewWriteP(storagePgWrite(), BACKUP_MANIFEST_FILE_STR), NULL); // Add a bogus file that will be removed storagePutP(storageNewWriteP(storagePgWrite(), STRDEF("bogus-file")), NULL); // Add a special file that will be removed TEST_SYSTEM_FMT("mkfifo %s/pipe", strPtr(pgPath)); // Change destination of tablespace link storageRemoveP(storagePgWrite(), STRDEF("pg_tblspc/1"), .errorOnMissing = true); THROW_ON_SYS_ERROR( symlink("/bogus", strPtr(strNewFmt("%s/pg_tblspc/1", strPtr(pgPath)))) == -1, FileOpenError, "unable to create symlink"); MEM_CONTEXT_BEGIN(manifest->memContext) { // tablespace_map (will be ignored during restore) manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(TEST_PGDATA PG_FILE_TABLESPACEMAP), .size = 0, .timestamp = 1482182860, .mode = 0600, .group = groupName(), .user = userName(), .checksumSha1 = HASH_TYPE_SHA1_ZERO}); storagePutP(storageNewWriteP(storageRepoWrite(), STRDEF(TEST_REPO_PATH PG_FILE_TABLESPACEMAP)), NULL); // pg_tblspc/1/16384/PG_VERSION manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(MANIFEST_TARGET_PGTBLSPC "/1/16384/" PG_FILE_PGVERSION), .size = 4, .timestamp = 1482182860, .mode = 0600, .group = groupName(), .user = userName(), .checksumSha1 = "797e375b924134687cbf9eacd37a4355f3d825e4"}); storagePutP( storageNewWriteP( storageRepoWrite(), STRDEF(STORAGE_REPO_BACKUP "/" TEST_LABEL "/" MANIFEST_TARGET_PGTBLSPC "/1/16384/" PG_FILE_PGVERSION)), BUFSTRDEF(PG_VERSION_84_STR "\n")); // Always sort lstSort(manifest->targetList, sortOrderAsc); lstSort(manifest->fileList, sortOrderAsc); lstSort(manifest->linkList, sortOrderAsc); lstSort(manifest->pathList, sortOrderAsc); } MEM_CONTEXT_END(); manifestSave( manifest, storageWriteIo( storageNewWriteP(storageRepoWrite(), strNew(STORAGE_REPO_BACKUP "/" TEST_LABEL "/" BACKUP_MANIFEST_FILE)))); #undef TEST_LABEL #undef TEST_PGDATA #undef TEST_REPO_PATH cmdRestore(); TEST_RESULT_LOG( "P00 INFO: restore backup set 20161219-212741F\n" "P00 DETAIL: check '{[path]}/pg' exists\n" "P00 DETAIL: check '{[path]}/ts/1' exists\n" "P00 INFO: remove invalid files/links/paths from '{[path]}/pg'\n" "P00 DETAIL: remove invalid file '{[path]}/pg/bogus-file'\n" "P00 DETAIL: remove link '{[path]}/pg/pg_tblspc/1' because destination changed\n" "P00 DETAIL: remove special file '{[path]}/pg/pipe'\n" "P00 INFO: remove invalid files/links/paths from '{[path]}/ts/1'\n" "P00 DETAIL: create symlink '{[path]}/pg/pg_tblspc/1' to '{[path]}/ts/1'\n" "P01 DETAIL: restore file {[path]}/pg/PG_VERSION - exists and matches size 4 and modification time 1482182860 (4B, 50%)" " checksum 797e375b924134687cbf9eacd37a4355f3d825e4\n" "P01 INFO: restore file {[path]}/pg/tablespace_map (0B, 50%)\n" "P01 INFO: restore file {[path]}/pg/pg_tblspc/1/16384/PG_VERSION (4B, 100%)" " checksum 797e375b924134687cbf9eacd37a4355f3d825e4\n" "P00 WARN: recovery type is preserve but recovery file does not exist at '{[path]}/pg/recovery.conf'\n" "P00 DETAIL: sync path '{[path]}/pg'\n" "P00 DETAIL: sync path '{[path]}/pg/pg_tblspc'\n" "P00 DETAIL: sync path '{[path]}/pg/pg_tblspc/1'\n" "P00 DETAIL: sync path '{[path]}/pg/pg_tblspc/1/16384'\n" "P00 WARN: backup does not contain 'global/pg_control' -- cluster will not start\n" "P00 DETAIL: sync path '{[path]}/pg/global'"); testRestoreCompare( storagePg(), NULL, manifest, ". {path}\n" "PG_VERSION {file, s=4, t=1482182860}\n" "global {path}\n" "pg_tblspc {path}\n" "pg_tblspc/1 {link, d={[path]}/ts/1}\n" "tablespace_map {file, s=0, t=1482182860}\n"); testRestoreCompare( storagePg(), STRDEF("pg_tblspc/1"), manifest, ". {link, d={[path]}/ts/1}\n" "16384 {path}\n" "16384/PG_VERSION {file, s=4, t=1482182860}\n"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("incremental delta selective restore"); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--delta"); strLstAddZ(argList, "--type=none"); strLstAddZ(argList, "--link-map=pg_wal=../wal"); strLstAddZ(argList, "--link-map=postgresql.conf=../config/postgresql.conf"); strLstAddZ(argList, "--link-map=pg_hba.conf=../config/pg_hba.conf"); harnessCfgLoad(cfgCmdRestore, argList); #define TEST_LABEL "20161219-212741F_20161219-212918I" #define TEST_PGDATA MANIFEST_TARGET_PGDATA "/" #define TEST_REPO_PATH STORAGE_REPO_BACKUP "/" TEST_LABEL "/" TEST_PGDATA MEM_CONTEXT_NEW_BEGIN("Manifest") { manifest = manifestNewInternal(); manifest->info = infoNew(NULL); manifest->data.backupLabel = strNew(TEST_LABEL); manifest->data.pgVersion = PG_VERSION_10; manifest->data.backupType = backupTypeFull; manifest->data.backupTimestampCopyStart = 1482182861; // So file timestamps should be less than this // Data directory manifestTargetAdd(manifest, &(ManifestTarget){.name = MANIFEST_TARGET_PGDATA_STR, .path = pgPath}); manifestPathAdd( manifest, &(ManifestPath){.name = MANIFEST_TARGET_PGDATA_STR, .mode = 0700, .group = groupName(), .user = userName()}); storagePathCreateP(storagePgWrite(), NULL); // global directory manifestPathAdd( manifest, &(ManifestPath){ .name = STRDEF(TEST_PGDATA PG_PATH_GLOBAL), .mode = 0700, .group = groupName(), .user = userName()}); // global/pg_control Buffer *fileBuffer = bufNew(8192); memset(bufPtr(fileBuffer), 255, bufSize(fileBuffer)); bufUsedSet(fileBuffer, bufSize(fileBuffer)); manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(TEST_PGDATA PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL), .size = 8192, .timestamp = 1482182860, .mode = 0600, .group = groupName(), .user = userName(), .checksumSha1 = "5e2b96c19c4f5c63a5afa2de504d29fe64a4c908"}); storagePutP( storageNewWriteP(storageRepoWrite(), STRDEF(TEST_REPO_PATH PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL)), fileBuffer); // global/999 manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(TEST_PGDATA PG_PATH_GLOBAL "/999"), .size = 0, .timestamp = 1482182860, .mode = 0600, .group = groupName(), .user = userName(), .checksumSha1 = HASH_TYPE_SHA1_ZERO, .reference = STRDEF(TEST_LABEL)}); storagePutP(storageNewWriteP(storageRepoWrite(), STRDEF(TEST_REPO_PATH PG_PATH_GLOBAL "/999")), NULL); // PG_VERSION manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(TEST_PGDATA PG_FILE_PGVERSION), .size = 4, .timestamp = 1482182860, .mode = 0600, .group = groupName(), .user = userName(), .checksumSha1 = "8dbabb96e032b8d9f1993c0e4b9141e71ade01a1"}); storagePutP( storageNewWriteP(storageRepoWrite(), STRDEF(TEST_REPO_PATH PG_FILE_PGVERSION)), BUFSTRDEF(PG_VERSION_94_STR "\n")); // base directory manifestPathAdd( manifest, &(ManifestPath){ .name = STRDEF(TEST_PGDATA PG_PATH_BASE), .mode = 0700, .group = groupName(), .user = userName()}); // base/1 directory manifestPathAdd( manifest, &(ManifestPath){ .name = STRDEF(TEST_PGDATA PG_PATH_BASE "/1"), .mode = 0700, .group = groupName(), .user = userName()}); // base/1/PG_VERSION manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(TEST_PGDATA "base/1/" PG_FILE_PGVERSION), .size = 4, .timestamp = 1482182860, .mode = 0600, .group = groupName(), .user = userName(), .checksumSha1 = "8dbabb96e032b8d9f1993c0e4b9141e71ade01a1"}); storagePutP( storageNewWriteP(storageRepoWrite(), STRDEF(TEST_REPO_PATH "base/1/" PG_FILE_PGVERSION)), BUFSTRDEF(PG_VERSION_94_STR "\n")); // base/1/2 fileBuffer = bufNew(8192); memset(bufPtr(fileBuffer), 1, bufSize(fileBuffer)); bufUsedSet(fileBuffer, bufSize(fileBuffer)); manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(TEST_PGDATA "base/1/2"), .size = 8192, .timestamp = 1482182860, .mode = 0600, .group = groupName(), .user = userName(), .checksumSha1 = "4d7b2a36c5387decf799352a3751883b7ceb96aa"}); storagePutP(storageNewWriteP(storageRepoWrite(), STRDEF(TEST_REPO_PATH "base/1/2")), fileBuffer); // base/16384 directory manifestPathAdd( manifest, &(ManifestPath){ .name = STRDEF(TEST_PGDATA PG_PATH_BASE "/16384"), .mode = 0700, .group = groupName(), .user = userName()}); // base/16384/PG_VERSION manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(TEST_PGDATA "base/16384/" PG_FILE_PGVERSION), .size = 4, .timestamp = 1482182860, .mode = 0600, .group = groupName(), .user = userName(), .checksumSha1 = "8dbabb96e032b8d9f1993c0e4b9141e71ade01a1"}); storagePutP( storageNewWriteP(storageRepoWrite(), STRDEF(TEST_REPO_PATH "base/16384/" PG_FILE_PGVERSION)), BUFSTRDEF(PG_VERSION_94_STR "\n")); // base/16384/16385 fileBuffer = bufNew(16384); memset(bufPtr(fileBuffer), 2, bufSize(fileBuffer)); bufUsedSet(fileBuffer, bufSize(fileBuffer)); manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(TEST_PGDATA "base/16384/16385"), .size = 16384, .timestamp = 1482182860, .mode = 0600, .group = groupName(), .user = userName(), .checksumSha1 = "d74e5f7ebe52a3ed468ba08c5b6aefaccd1ca88f"}); storagePutP(storageNewWriteP(storageRepoWrite(), STRDEF(TEST_REPO_PATH "base/16384/16385")), fileBuffer); // base/32768 directory manifestPathAdd( manifest, &(ManifestPath){ .name = STRDEF(TEST_PGDATA PG_PATH_BASE "/32768"), .mode = 0700, .group = groupName(), .user = userName()}); // base/32768/PG_VERSION manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(TEST_PGDATA "base/32768/" PG_FILE_PGVERSION), .size = 4, .timestamp = 1482182860, .mode = 0600, .group = groupName(), .user = userName(), .checksumSha1 = "8dbabb96e032b8d9f1993c0e4b9141e71ade01a1"}); storagePutP( storageNewWriteP(storageRepoWrite(), STRDEF(TEST_REPO_PATH "base/32768/" PG_FILE_PGVERSION)), BUFSTRDEF(PG_VERSION_94_STR "\n")); // base/32768/32769 fileBuffer = bufNew(32768); memset(bufPtr(fileBuffer), 2, bufSize(fileBuffer)); bufUsedSet(fileBuffer, bufSize(fileBuffer)); manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(TEST_PGDATA "base/32768/32769"), .size = 32768, .timestamp = 1482182860, .mode = 0600, .group = groupName(), .user = userName(), .checksumSha1 = "a40f0986acb1531ce0cc75a23dcf8aa406ae9081"}); storagePutP(storageNewWriteP(storageRepoWrite(), STRDEF(TEST_REPO_PATH "base/32768/32769")), fileBuffer); // File link to postgresql.conf const String *name = STRDEF(MANIFEST_TARGET_PGDATA "/postgresql.conf"); manifestTargetAdd( manifest, &(ManifestTarget){ .type = manifestTargetTypeLink, .name = name, .path = STRDEF("../config"), .file = STRDEF("postgresql.conf")}); manifestLinkAdd( manifest, &(ManifestLink){ .name = name, .destination = STRDEF("../config/postgresql.conf"), .group = groupName(), .user = userName()}); manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(TEST_PGDATA "postgresql.conf"), .size = 15, .timestamp = 1482182860, .mode = 0600, .group = groupName(), .user = userName(), .checksumSha1 = "98b8abb2e681e2a5a7d8ab082c0a79727887558d"}); storagePutP( storageNewWriteP(storageRepoWrite(), STRDEF(TEST_REPO_PATH "postgresql.conf")), BUFSTRDEF("POSTGRESQL.CONF")); // File link to pg_hba.conf name = STRDEF(MANIFEST_TARGET_PGDATA "/pg_hba.conf"); manifestTargetAdd( manifest, &(ManifestTarget){ .type = manifestTargetTypeLink, .name = name, .path = STRDEF("../config"), .file = STRDEF("pg_hba.conf")}); manifestLinkAdd( manifest, &(ManifestLink){ .name = name, .destination = STRDEF("../config/pg_hba.conf"), .group = groupName(), .user = userName()}); manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(TEST_PGDATA "pg_hba.conf"), .size = 11, .timestamp = 1482182860, .mode = 0600, .group = groupName(), .user = userName(), .checksumSha1 = "401215e092779574988a854d8c7caed7f91dba4b"}); storagePutP( storageNewWriteP(storageRepoWrite(), STRDEF(TEST_REPO_PATH "pg_hba.conf")), BUFSTRDEF("PG_HBA.CONF")); // tablespace_map (will be ignored during restore) manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(TEST_PGDATA PG_FILE_TABLESPACEMAP), .size = 0, .timestamp = 1482182860, .mode = 0600, .group = groupName(), .user = userName(), .checksumSha1 = HASH_TYPE_SHA1_ZERO}); storagePutP(storageNewWriteP(storageRepoWrite(), STRDEF(TEST_REPO_PATH PG_FILE_TABLESPACEMAP)), NULL); // Path link to pg_wal name = STRDEF(MANIFEST_TARGET_PGDATA "/pg_wal"); const String *destination = STRDEF("../wal"); manifestTargetAdd(manifest, &(ManifestTarget){.type = manifestTargetTypeLink, .name = name, .path = destination}); manifestPathAdd(manifest, &(ManifestPath){.name = name, .mode = 0700, .group = groupName(), .user = userName()}); manifestLinkAdd( manifest, &(ManifestLink){.name = name, .destination = destination, .group = groupName(), .user = userName()}); THROW_ON_SYS_ERROR( symlink("../wal", strPtr(strNewFmt("%s/pg_wal", strPtr(pgPath)))) == -1, FileOpenError, "unable to create symlink"); // pg_tblspc/1 manifestTargetAdd( manifest, &(ManifestTarget){ .type = manifestTargetTypeLink, .name = STRDEF(MANIFEST_TARGET_PGTBLSPC "/1"), .path = strNewFmt("%s/ts/1", testPath()), .tablespaceId = 1, .tablespaceName = STRDEF("ts1")}); manifestPathAdd( manifest, &(ManifestPath){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/" MANIFEST_TARGET_PGTBLSPC), .mode = 0700, .group = groupName(), .user = userName()}); manifestPathAdd( manifest, &(ManifestPath){ .name = STRDEF(MANIFEST_TARGET_PGTBLSPC), .mode = 0700, .group = groupName(), .user = userName()}); manifestPathAdd( manifest, &(ManifestPath){ .name = STRDEF(MANIFEST_TARGET_PGTBLSPC "/1"), .mode = 0700, .group = groupName(), .user = userName()}); manifestPathAdd( manifest, &(ManifestPath){ .name = STRDEF(MANIFEST_TARGET_PGTBLSPC "/1/PG_10_201707211"), .mode = 0700, .group = groupName(), .user = userName()}); manifestLinkAdd( manifest, &(ManifestLink){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/" MANIFEST_TARGET_PGTBLSPC "/1"), .destination = strNewFmt("%s/ts/1", testPath()), .group = groupName(), .user = userName()}); // Always sort lstSort(manifest->targetList, sortOrderAsc); lstSort(manifest->fileList, sortOrderAsc); lstSort(manifest->linkList, sortOrderAsc); lstSort(manifest->pathList, sortOrderAsc); } MEM_CONTEXT_NEW_END(); manifestSave( manifest, storageWriteIo( storageNewWriteP(storageRepoWrite(), strNew(STORAGE_REPO_BACKUP "/" TEST_LABEL "/" BACKUP_MANIFEST_FILE)))); // Add a few bogus paths/files/links to be removed in delta storagePathCreateP(storagePgWrite(), STRDEF("bogus1/bogus2")); storagePathCreateP(storagePgWrite(), STRDEF(PG_PATH_GLOBAL "/bogus3")); // Add a few bogus links to be deleted THROW_ON_SYS_ERROR( symlink("../wal", strPtr(strNewFmt("%s/pg_wal2", strPtr(pgPath)))) == -1, FileOpenError, "unable to create symlink"); TEST_RESULT_VOID(cmdRestore(), "successful restore"); TEST_RESULT_LOG( "P00 INFO: restore backup set 20161219-212741F_20161219-212918I\n" "P00 INFO: map link 'pg_hba.conf' to '../config/pg_hba.conf'\n" "P00 INFO: map link 'pg_wal' to '../wal'\n" "P00 INFO: map link 'postgresql.conf' to '../config/postgresql.conf'\n" "P00 DETAIL: check '{[path]}/pg' exists\n" "P00 DETAIL: check '{[path]}/config' exists\n" "P00 DETAIL: check '{[path]}/wal' exists\n" "P00 DETAIL: check '{[path]}/ts/1/PG_10_201707211' exists\n" "P00 DETAIL: skip 'tablespace_map' -- tablespace links will be created based on mappings\n" "P00 INFO: remove invalid files/links/paths from '{[path]}/pg'\n" "P00 DETAIL: remove invalid path '{[path]}/pg/bogus1'\n" "P00 DETAIL: remove invalid path '{[path]}/pg/global/bogus3'\n" "P00 DETAIL: remove invalid link '{[path]}/pg/pg_wal2'\n" "P00 DETAIL: remove invalid file '{[path]}/pg/tablespace_map'\n" "P00 DETAIL: create path '{[path]}/pg/base'\n" "P00 DETAIL: create path '{[path]}/pg/base/1'\n" "P00 DETAIL: create path '{[path]}/pg/base/16384'\n" "P00 DETAIL: create path '{[path]}/pg/base/32768'\n" "P00 DETAIL: create symlink '{[path]}/pg/pg_hba.conf' to '../config/pg_hba.conf'\n" "P00 DETAIL: create symlink '{[path]}/pg/postgresql.conf' to '../config/postgresql.conf'\n" "P01 INFO: restore file {[path]}/pg/base/32768/32769 (32KB, 49%) checksum a40f0986acb1531ce0cc75a23dcf8aa406ae9081\n" "P01 INFO: restore file {[path]}/pg/base/16384/16385 (16KB, 74%) checksum d74e5f7ebe52a3ed468ba08c5b6aefaccd1ca88f\n" "P01 INFO: restore file {[path]}/pg/global/pg_control.pgbackrest.tmp (8KB, 87%)" " checksum 5e2b96c19c4f5c63a5afa2de504d29fe64a4c908\n" "P01 INFO: restore file {[path]}/pg/base/1/2 (8KB, 99%) checksum 4d7b2a36c5387decf799352a3751883b7ceb96aa\n" "P01 INFO: restore file {[path]}/pg/postgresql.conf (15B, 99%) checksum 98b8abb2e681e2a5a7d8ab082c0a79727887558d\n" "P01 INFO: restore file {[path]}/pg/pg_hba.conf (11B, 99%) checksum 401215e092779574988a854d8c7caed7f91dba4b\n" "P01 INFO: restore file {[path]}/pg/base/32768/PG_VERSION (4B, 99%)" " checksum 8dbabb96e032b8d9f1993c0e4b9141e71ade01a1\n" "P01 INFO: restore file {[path]}/pg/base/16384/PG_VERSION (4B, 99%)" " checksum 8dbabb96e032b8d9f1993c0e4b9141e71ade01a1\n" "P01 INFO: restore file {[path]}/pg/base/1/PG_VERSION (4B, 99%) checksum 8dbabb96e032b8d9f1993c0e4b9141e71ade01a1\n" "P01 INFO: restore file {[path]}/pg/PG_VERSION (4B, 100%) checksum 8dbabb96e032b8d9f1993c0e4b9141e71ade01a1\n" "P01 INFO: restore file {[path]}/pg/global/999 (0B, 100%)\n" "P00 DETAIL: sync path '{[path]}/config'\n" "P00 DETAIL: sync path '{[path]}/pg'\n" "P00 DETAIL: sync path '{[path]}/pg/base'\n" "P00 DETAIL: sync path '{[path]}/pg/base/1'\n" "P00 DETAIL: sync path '{[path]}/pg/base/16384'\n" "P00 DETAIL: sync path '{[path]}/pg/base/32768'\n" "P00 DETAIL: sync path '{[path]}/pg/pg_tblspc'\n" "P00 DETAIL: sync path '{[path]}/pg/pg_wal'\n" "P00 DETAIL: sync path '{[path]}/pg/pg_tblspc/1'\n" "P00 DETAIL: sync path '{[path]}/pg/pg_tblspc/1/PG_10_201707211'\n" "P00 INFO: restore global/pg_control (performed last to ensure aborted restores cannot be started)\n" "P00 DETAIL: sync path '{[path]}/pg/global'"); testRestoreCompare( storagePg(), NULL, manifest, ". {path}\n" "PG_VERSION {file, s=4, t=1482182860}\n" "base {path}\n" "base/1 {path}\n" "base/1/2 {file, s=8192, t=1482182860}\n" "base/1/PG_VERSION {file, s=4, t=1482182860}\n" "base/16384 {path}\n" "base/16384/16385 {file, s=16384, t=1482182860}\n" "base/16384/PG_VERSION {file, s=4, t=1482182860}\n" "base/32768 {path}\n" "base/32768/32769 {file, s=32768, t=1482182860}\n" "base/32768/PG_VERSION {file, s=4, t=1482182860}\n" "global {path}\n" "global/999 {file, s=0, t=1482182860}\n" "global/pg_control {file, s=8192, t=1482182860}\n" "pg_hba.conf {link, d=../config/pg_hba.conf}\n" "pg_tblspc {path}\n" "pg_tblspc/1 {link, d={[path]}/ts/1}\n" "pg_wal {link, d=../wal}\n" "postgresql.conf {link, d=../config/postgresql.conf}\n"); testRestoreCompare( storagePg(), STRDEF("pg_tblspc/1"), manifest, ". {link, d={[path]}/ts/1}\n" "16384 {path}\n" "16384/PG_VERSION {file, s=4, t=1482182860}\n" "PG_10_201707211 {path}\n"); testRestoreCompare( storagePg(), STRDEF("../wal"), manifest, ". {path}\n"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("incremental delta selective restore"); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(repoPath))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pgPath))); strLstAddZ(argList, "--delta"); strLstAddZ(argList, "--type=preserve"); strLstAddZ(argList, "--link-map=pg_wal=../wal"); strLstAddZ(argList, "--link-map=postgresql.conf=../config/postgresql.conf"); strLstAddZ(argList, "--link-map=pg_hba.conf=../config/pg_hba.conf"); strLstAddZ(argList, "--db-include=16384"); harnessCfgLoad(cfgCmdRestore, argList); // Write recovery.conf so we don't get a preserve warning storagePutP(storageNewWriteP(storagePgWrite(), PG_FILE_RECOVERYCONF_STR), BUFSTRDEF("Some Settings")); TEST_RESULT_VOID(cmdRestore(), "successful restore"); TEST_RESULT_LOG( "P00 INFO: restore backup set 20161219-212741F_20161219-212918I\n" "P00 INFO: map link 'pg_hba.conf' to '../config/pg_hba.conf'\n" "P00 INFO: map link 'pg_wal' to '../wal'\n" "P00 INFO: map link 'postgresql.conf' to '../config/postgresql.conf'\n" "P00 DETAIL: databases found for selective restore (1, 16384, 32768)\n" "P00 DETAIL: check '{[path]}/pg' exists\n" "P00 DETAIL: check '{[path]}/config' exists\n" "P00 DETAIL: check '{[path]}/wal' exists\n" "P00 DETAIL: check '{[path]}/ts/1/PG_10_201707211' exists\n" "P00 DETAIL: skip 'tablespace_map' -- tablespace links will be created based on mappings\n" "P00 DETAIL: remove 'global/pg_control' so cluster will not start if restore does not complete\n" "P00 INFO: remove invalid files/links/paths from '{[path]}/pg'\n" "P00 INFO: remove invalid files/links/paths from '{[path]}/wal'\n" "P00 INFO: remove invalid files/links/paths from '{[path]}/ts/1/PG_10_201707211'\n" "P01 DETAIL: restore zeroed file {[path]}/pg/base/32768/32769 (32KB, 49%)\n" "P01 DETAIL: restore file {[path]}/pg/base/16384/16385 - exists and matches backup (16KB, 74%)" " checksum d74e5f7ebe52a3ed468ba08c5b6aefaccd1ca88f\n" "P01 INFO: restore file {[path]}/pg/global/pg_control.pgbackrest.tmp (8KB, 87%)" " checksum 5e2b96c19c4f5c63a5afa2de504d29fe64a4c908\n" "P01 DETAIL: restore file {[path]}/pg/base/1/2 - exists and matches backup (8KB, 99%)" " checksum 4d7b2a36c5387decf799352a3751883b7ceb96aa\n" "P01 DETAIL: restore file {[path]}/pg/postgresql.conf - exists and matches backup (15B, 99%)" " checksum 98b8abb2e681e2a5a7d8ab082c0a79727887558d\n" "P01 DETAIL: restore file {[path]}/pg/pg_hba.conf - exists and matches backup (11B, 99%)" " checksum 401215e092779574988a854d8c7caed7f91dba4b\n" "P01 DETAIL: restore file {[path]}/pg/base/32768/PG_VERSION - exists and matches backup (4B, 99%)" " checksum 8dbabb96e032b8d9f1993c0e4b9141e71ade01a1\n" "P01 DETAIL: restore file {[path]}/pg/base/16384/PG_VERSION - exists and matches backup (4B, 99%)" " checksum 8dbabb96e032b8d9f1993c0e4b9141e71ade01a1\n" "P01 DETAIL: restore file {[path]}/pg/base/1/PG_VERSION - exists and matches backup (4B, 99%)" " checksum 8dbabb96e032b8d9f1993c0e4b9141e71ade01a1\n" "P01 DETAIL: restore file {[path]}/pg/PG_VERSION - exists and matches backup (4B, 100%)" " checksum 8dbabb96e032b8d9f1993c0e4b9141e71ade01a1\n" "P01 DETAIL: restore file {[path]}/pg/global/999 - exists and is zero size (0B, 100%)\n" "P00 DETAIL: sync path '{[path]}/config'\n" "P00 DETAIL: sync path '{[path]}/pg'\n" "P00 DETAIL: sync path '{[path]}/pg/base'\n" "P00 DETAIL: sync path '{[path]}/pg/base/1'\n" "P00 DETAIL: sync path '{[path]}/pg/base/16384'\n" "P00 DETAIL: sync path '{[path]}/pg/base/32768'\n" "P00 DETAIL: sync path '{[path]}/pg/pg_tblspc'\n" "P00 DETAIL: sync path '{[path]}/pg/pg_wal'\n" "P00 DETAIL: sync path '{[path]}/pg/pg_tblspc/1'\n" "P00 DETAIL: sync path '{[path]}/pg/pg_tblspc/1/PG_10_201707211'\n" "P00 INFO: restore global/pg_control (performed last to ensure aborted restores cannot be started)\n" "P00 DETAIL: sync path '{[path]}/pg/global'"); // ------------------------------------------------------------------------------------------------------------------------- // Keep this test at the end since is corrupts the repo TEST_TITLE("remove a repo file so a restore job errors"); storageRemoveP(storageRepoWrite(), STRDEF(TEST_REPO_PATH PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL), .errorOnMissing = true); storageRemoveP(storagePgWrite(), STRDEF(PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL), .errorOnMissing = true); // Set log level to warn harnessLogLevelSet(logLevelWarn); TEST_ERROR_FMT( cmdRestore(), FileMissingError, "raised from local-1 protocol: unable to open missing file" " '%s/repo/backup/test1/20161219-212741F_20161219-212918I/pg_data/global/pg_control' for read", testPath()); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/command/stanzaTest.c000066400000000000000000001470421362531507100241740ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Stanza Commands ***********************************************************************************************************************************/ #include "storage/posix/storage.h" #include "common/harnessConfig.h" #include "common/harnessInfo.h" #include "common/harnessPq.h" #include "postgres/interface.h" #include "postgres/version.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); Storage *storageTest = storagePosixNew( strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); String *stanza = strNew("db"); String *fileName = strNew("test.info"); String *backupStanzaPath = strNewFmt("repo/backup/%s", strPtr(stanza)); String *backupInfoFileName = strNewFmt("%s/backup.info", strPtr(backupStanzaPath)); String *archiveStanzaPath = strNewFmt("repo/archive/%s", strPtr(stanza)); String *archiveInfoFileName = strNewFmt("%s/archive.info", strPtr(archiveStanzaPath)); StringList *argListBase = strLstNew(); strLstAddZ(argListBase, "--no-online"); strLstAdd(argListBase, strNewFmt("--stanza=%s", strPtr(stanza))); strLstAdd(argListBase, strNewFmt("--pg1-path=%s/%s", testPath(), strPtr(stanza))); strLstAdd(argListBase, strNewFmt("--repo1-path=%s/repo", testPath())); // ***************************************************************************************************************************** if (testBegin("cmdStanzaCreate(), checkStanzaInfo()")) { // Load Parameters StringList *argList = strLstDup(argListBase); strLstAddZ(argList, "--repo1-host=/repo/not/local"); harnessCfgLoad(cfgCmdStanzaCreate, argList); TEST_ERROR_FMT( cmdStanzaCreate(), HostInvalidError, "stanza-create command must be run on the repository host"); //-------------------------------------------------------------------------------------------------------------------------- argList = strLstDup(argListBase); harnessCfgLoad(cfgCmdStanzaCreate, argList); // Create the stop file TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageLocalWrite(), lockStopFileName(cfgOptionStr(cfgOptStanza))), BUFSTRDEF("")), "create stop file"); TEST_ERROR_FMT(cmdStanzaCreate(), StopError, "stop file exists for stanza %s", strPtr(stanza)); TEST_RESULT_VOID( storageRemoveP(storageLocalWrite(), lockStopFileName(cfgOptionStr(cfgOptStanza))), " remove the stop file"); //-------------------------------------------------------------------------------------------------------------------------- argList = strLstDup(argListBase); harnessCfgLoad(cfgCmdStanzaCreate, argList); // Create pg_control storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(stanza))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_96, .systemId = 6569239123849665679})); TEST_RESULT_VOID(cmdStanzaCreate(), "stanza create - no files exist"); String *contentArchive = strNew ( "[db]\n" "db-id=1\n" "db-system-id=6569239123849665679\n" "db-version=\"9.6\"\n" "\n" "[db:history]\n" "1={\"db-id\":6569239123849665679,\"db-version\":\"9.6\"}\n" ); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, fileName), harnessInfoChecksum(contentArchive)), "put archive info to test file"); TEST_RESULT_BOOL( (bufEq( storageGetP(storageNewReadP(storageTest, archiveInfoFileName)), storageGetP(storageNewReadP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(archiveInfoFileName))))) && bufEq( storageGetP(storageNewReadP(storageTest, archiveInfoFileName)), storageGetP(storageNewReadP(storageTest, fileName)))), true, " test and stanza archive info files are equal"); String *contentBackup = strNew ( "[db]\n" "db-catalog-version=201608131\n" "db-control-version=960\n" "db-id=1\n" "db-system-id=6569239123849665679\n" "db-version=\"9.6\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201608131,\"db-control-version\":960,\"db-system-id\":6569239123849665679," "\"db-version\":\"9.6\"}\n" ); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, fileName), harnessInfoChecksum(contentBackup)), "put backup info to test file"); TEST_RESULT_BOOL( (bufEq( storageGetP(storageNewReadP(storageTest, backupInfoFileName)), storageGetP(storageNewReadP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(backupInfoFileName))))) && bufEq( storageGetP(storageNewReadP(storageTest, backupInfoFileName)), storageGetP(storageNewReadP(storageTest, fileName)))), true, " test and stanza backup info files are equal"); //-------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(cmdStanzaCreate(), "stanza create - files already exist and both are valid"); harnessLogResult("P00 INFO: stanza 'db' already exists and is valid"); // Remove backup.info TEST_RESULT_VOID(storageRemoveP(storageTest, backupInfoFileName, .errorOnMissing = true), "backup.info removed"); TEST_RESULT_VOID(cmdStanzaCreate(), " stanza create - success with archive.info files and only backup.info.copy"); TEST_RESULT_BOOL( bufEq( storageGetP(storageNewReadP(storageTest, backupInfoFileName)), storageGetP(storageNewReadP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(backupInfoFileName))))), true, "backup.info recreated from backup.info.copy"); // Remove archive.info TEST_RESULT_VOID(storageRemoveP(storageTest, archiveInfoFileName, .errorOnMissing = true), "archive.info removed"); TEST_RESULT_VOID(cmdStanzaCreate(), " stanza create - success with backup.info files and only archive.info.copy"); TEST_RESULT_BOOL( bufEq( storageGetP(storageNewReadP(storageTest, archiveInfoFileName)), storageGetP(storageNewReadP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(archiveInfoFileName))))), true, "archive.info recreated from archive.info.copy"); // Remove info files TEST_RESULT_VOID(storageRemoveP(storageTest, archiveInfoFileName, .errorOnMissing = true), "archive.info removed"); TEST_RESULT_VOID(storageRemoveP(storageTest, backupInfoFileName, .errorOnMissing = true), "backup.info removed"); TEST_RESULT_VOID(cmdStanzaCreate(), "stanza create - success with copy files only"); TEST_RESULT_BOOL( (bufEq( storageGetP(storageNewReadP(storageTest, backupInfoFileName)), storageGetP(storageNewReadP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(backupInfoFileName))))) && bufEq( storageGetP(storageNewReadP(storageTest, archiveInfoFileName)), storageGetP(storageNewReadP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(archiveInfoFileName)))))), true, "info files recreated from copy files"); // Remove copy files TEST_RESULT_VOID( storageRemoveP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(archiveInfoFileName)), .errorOnMissing = true), "archive.info.copy removed"); TEST_RESULT_VOID( storageRemoveP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(backupInfoFileName)), .errorOnMissing = true), "backup.info.copy removed"); TEST_RESULT_VOID(cmdStanzaCreate(), "stanza create - success with info files only"); TEST_RESULT_BOOL( (bufEq( storageGetP(storageNewReadP(storageTest, backupInfoFileName)), storageGetP(storageNewReadP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(backupInfoFileName))))) && bufEq( storageGetP(storageNewReadP(storageTest, archiveInfoFileName)), storageGetP(storageNewReadP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(archiveInfoFileName)))))), true, "info files recreated from info files"); // Errors //-------------------------------------------------------------------------------------------------------------------------- // Archive files removed - backup.info and backup.info.copy exist TEST_RESULT_VOID( storageRemoveP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(archiveInfoFileName)), .errorOnMissing = true), "archive.info.copy removed"); TEST_RESULT_VOID(storageRemoveP(storageTest, archiveInfoFileName, .errorOnMissing = true), "archive.info removed"); TEST_ERROR_FMT( cmdStanzaCreate(), FileMissingError, "backup.info exists but archive.info is missing\n" "HINT: this may be a symptom of repository corruption!"); // Archive files removed - backup.info.copy exists TEST_RESULT_VOID( storageRemoveP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(backupInfoFileName)), .errorOnMissing = true), "backup.info.copy removed"); TEST_ERROR_FMT( cmdStanzaCreate(), FileMissingError, "backup.info exists but archive.info is missing\n" "HINT: this may be a symptom of repository corruption!"); // Archive files removed - backup.info exists TEST_RESULT_VOID( storageMoveP(storageTest, storageNewReadP(storageTest, backupInfoFileName), storageNewWriteP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(backupInfoFileName)))), "backup.info moved to backup.info.copy"); TEST_ERROR_FMT( cmdStanzaCreate(), FileMissingError, "backup.info exists but archive.info is missing\n" "HINT: this may be a symptom of repository corruption!"); // Backup files removed - archive.info file exists TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, archiveInfoFileName), harnessInfoChecksum(contentArchive)), "put archive info to file"); TEST_RESULT_VOID( storageRemoveP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(backupInfoFileName)), .errorOnMissing = true), "backup.info.copy removed"); TEST_ERROR_FMT( cmdStanzaCreate(), FileMissingError, "archive.info exists but backup.info is missing\n" "HINT: this may be a symptom of repository corruption!"); // Backup files removed - archive.info.copy file exists TEST_RESULT_VOID( storageMoveP(storageTest, storageNewReadP(storageTest, archiveInfoFileName), storageNewWriteP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(archiveInfoFileName)))), "archive.info moved to archive.info.copy"); TEST_ERROR_FMT( cmdStanzaCreate(), FileMissingError, "archive.info exists but backup.info is missing\n" "HINT: this may be a symptom of repository corruption!"); // Backup files removed - archive.info and archive.info.copy exist TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, archiveInfoFileName), harnessInfoChecksum(contentArchive)), "put archive info to file"); TEST_ERROR_FMT( cmdStanzaCreate(), FileMissingError, "archive.info exists but backup.info is missing\n" "HINT: this may be a symptom of repository corruption!"); // checkStanzaInfo() - already checked in checkTest so just a sanity check here //-------------------------------------------------------------------------------------------------------------------------- // Create a corrupted backup file - db id contentBackup = strNew ( "[db]\n" "db-catalog-version=201608131\n" "db-control-version=960\n" "db-id=2\n" "db-system-id=6569239123849665679\n" "db-version=\"9.6\"\n" "\n" "[db:history]\n" "2={\"db-catalog-version\":201608131,\"db-control-version\":960,\"db-system-id\":6569239123849665679," "\"db-version\":\"9.6\"}\n" ); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksum(contentBackup)), "put backup info to file - bad db-id"); TEST_ERROR_FMT( cmdStanzaCreate(), FileInvalidError, "backup info file and archive info file do not match\n" "archive: id = 1, version = 9.6, system-id = 6569239123849665679\n" "backup : id = 2, version = 9.6, system-id = 6569239123849665679\n" "HINT: this may be a symptom of repository corruption!"); //-------------------------------------------------------------------------------------------------------------------------- // Copy files may or may not exist - remove storageRemoveP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(archiveInfoFileName))); storageRemoveP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(backupInfoFileName))); // Create an archive.info file and backup.info files that match but do not match the current database version contentBackup = strNew ( "[db]\n" "db-catalog-version=201608131\n" "db-control-version=960\n" "db-id=1\n" "db-system-id=6569239123849665679\n" "db-version=\"9.5\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201608131,\"db-control-version\":960,\"db-system-id\":6569239123849665679," "\"db-version\":\"9.5\"}\n" ); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksum(contentBackup)), "put backup info to file"); contentArchive = strNew ( "[db]\n" "db-id=1\n" "db-system-id=6569239123849665679\n" "db-version=\"9.5\"\n" "\n" "[db:history]\n" "1={\"db-id\":6569239123849665679,\"db-version\":\"9.5\"}\n" ); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, archiveInfoFileName), harnessInfoChecksum(contentArchive)), "put archive info file"); TEST_ERROR_FMT( cmdStanzaCreate(), FileInvalidError, "backup and archive info files exist but do not match the database\n" "HINT: is this the correct stanza?\n" "HINT: did an error occur during stanza-upgrade?"); // Create archive.info and backup.info files that match but do not match the current database system-id contentArchive = strNew ( "[db]\n" "db-id=1\n" "db-system-id=6569239123849665999\n" "db-version=\"9.6\"\n" "\n" "[db:history]\n" "1={\"db-id\":6569239123849665999,\"db-version\":\"9.6\"}\n" ); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, archiveInfoFileName), harnessInfoChecksum(contentArchive)), "put archive info to file"); contentBackup = strNew ( "[db]\n" "db-catalog-version=201608131\n" "db-control-version=960\n" "db-id=1\n" "db-system-id=6569239123849665999\n" "db-version=\"9.6\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201608131,\"db-control-version\":960,\"db-system-id\":6569239123849665999," "\"db-version\":\"9.6\"}\n" ); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksum(contentBackup)), "put backup info to file"); TEST_ERROR_FMT( cmdStanzaCreate(), FileInvalidError, "backup and archive info files exist but do not match the database\n" "HINT: is this the correct stanza?\n" "HINT: did an error occur during stanza-upgrade?"); // Remove the info files and add sub directory to backup TEST_RESULT_VOID(storageRemoveP(storageTest, archiveInfoFileName, .errorOnMissing = true), "archive.info removed"); TEST_RESULT_VOID(storageRemoveP(storageTest, backupInfoFileName, .errorOnMissing = true), "backup.info removed"); TEST_RESULT_VOID( storagePathCreateP(storageTest, strNewFmt("%s/backup.history", strPtr(backupStanzaPath))), "create directory in backup"); TEST_ERROR_FMT(cmdStanzaCreate(), PathNotEmptyError, "backup directory not empty"); // File in archive, directory in backup TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/somefile", strPtr(archiveStanzaPath))), BUFSTRDEF("some content")), "create file in archive"); TEST_ERROR_FMT(cmdStanzaCreate(), PathNotEmptyError, "backup directory and/or archive directory not empty"); // File in archive, backup empty TEST_RESULT_VOID( storagePathRemoveP(storageTest, strNewFmt("%s/backup.history", strPtr(backupStanzaPath))), "remove backup subdir"); TEST_ERROR_FMT(cmdStanzaCreate(), PathNotEmptyError, "archive directory not empty"); // Repeat last test using --force (deprecated) //-------------------------------------------------------------------------------------------------------------------------- strLstAddZ(argList, "--force"); harnessCfgLoad(cfgCmdStanzaCreate, argList); TEST_ERROR_FMT(cmdStanzaCreate(), PathNotEmptyError, "archive directory not empty"); harnessLogResult("P00 WARN: option --force is no longer supported"); } // ***************************************************************************************************************************** if (testBegin("pgValidate(), online=y")) { String *pg1 = strNew("pg1"); String *pg1Path = strNewFmt("%s/%s", testPath(), strPtr(pg1)); // Load Parameters StringList *argList = strLstNew(); strLstAdd(argList, strNewFmt("--stanza=%s", strPtr(stanza))); strLstAdd(argList, strNewFmt("--pg1-path=%s", strPtr(pg1Path))); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); harnessCfgLoad(cfgCmdStanzaCreate, argList); // pgControl and database match //-------------------------------------------------------------------------------------------------------------------------- // Create pg_control storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(pg1))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_92, .systemId = 6569239123849665699})); harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_92(1, "dbname='postgres' port=5432", strPtr(pg1Path), false, NULL, NULL), HRNPQ_MACRO_DONE() }); TEST_RESULT_VOID(cmdStanzaCreate(), "stanza create - db online"); TEST_RESULT_BOOL( storageExistsP(storageTest, strNewFmt("repo/archive/%s/archive.info", strPtr(stanza))), true, " stanza created"); harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_92(1, "dbname='postgres' port=5432", strPtr(pg1Path), false, NULL, NULL), HRNPQ_MACRO_DONE() }); TEST_RESULT_VOID(cmdStanzaUpgrade(), "stanza upgrade - db online"); harnessLogResult("P00 INFO: stanza 'db' is already up to date"); // Version mismatch //-------------------------------------------------------------------------------------------------------------------------- // Create pg_control with different version storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(pg1))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_91, .systemId = 6569239123849665699})); harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_92(1, "dbname='postgres' port=5432", strPtr(pg1Path), false, NULL, NULL), HRNPQ_MACRO_DONE() }); TEST_ERROR_FMT( pgValidate(), DbMismatchError, "version '%s' and path '%s' queried from cluster do not match version '%s' and '%s'" " read from '%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL "'\n" "HINT: the pg1-path and pg1-port settings likely reference different clusters.", strPtr(pgVersionToStr(PG_VERSION_92)), strPtr(pg1Path), strPtr(pgVersionToStr(PG_VERSION_91)), strPtr(pg1Path), strPtr(pg1Path)); // Path mismatch //-------------------------------------------------------------------------------------------------------------------------- // Create pg_control storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(pg1))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_92, .systemId = 6569239123849665699})); harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_92(1, "dbname='postgres' port=5432", strPtr(strNewFmt("%s/pg2", testPath())), false, NULL, NULL), HRNPQ_MACRO_DONE() }); TEST_ERROR_FMT( pgValidate(), DbMismatchError, "version '%s' and path '%s' queried from cluster do not match version '%s' and '%s'" " read from '%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL "'\nHINT: the pg1-path and pg1-port settings likely reference different clusters.", strPtr(pgVersionToStr(PG_VERSION_92)), strPtr(strNewFmt("%s/pg2", testPath())), strPtr(pgVersionToStr(PG_VERSION_92)), strPtr(pg1Path), strPtr(pg1Path)); // Primary at pg2 //-------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNewFmt("--stanza=%s", strPtr(stanza))); strLstAdd(argList, strNewFmt("--pg1-path=%s", testPath())); strLstAdd(argList, strNewFmt("--pg2-path=%s", strPtr(pg1Path))); strLstAddZ(argList, "--pg2-port=5434"); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); harnessCfgLoad(cfgCmdStanzaCreate, argList); // Create pg_control for master storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(pg1))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_92, .systemId = 6569239123849665699})); // Create pg_control for standby storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, testPath())), pgControlTestToBuffer((PgControl){.version = PG_VERSION_94, .systemId = 6569239123849665700})); harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_92(1, "dbname='postgres' port=5432", testPath(), true, NULL, NULL), HRNPQ_MACRO_OPEN_92(2, "dbname='postgres' port=5434", strPtr(pg1Path), false, NULL, NULL), HRNPQ_MACRO_DONE() }); PgControl pgControl = {0}; TEST_ASSIGN(pgControl, pgValidate(), "validate master on pg2"); TEST_RESULT_UINT(pgControl.version, PG_VERSION_92, " version set"); TEST_RESULT_UINT(pgControl.systemId, 6569239123849665699, " systemId set"); } // ***************************************************************************************************************************** if (testBegin("cmdStanzaCreate() - encryption")) { StringList *argList = strLstDup(argListBase); strLstAddZ(argList, "--repo1-cipher-type=aes-256-cbc"); setenv("PGBACKREST_REPO1_CIPHER_PASS", "12345678", true); harnessCfgLoad(cfgCmdStanzaCreate, argList); // Create pg_control storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(stanza))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_96, .systemId = 6569239123849665679})); TEST_RESULT_VOID(cmdStanzaCreate(), "stanza create - encryption"); InfoArchive *infoArchive = NULL; TEST_ASSIGN( infoArchive, infoArchiveLoadFile(storageTest, archiveInfoFileName, cipherTypeAes256Cbc, strNew("12345678")), " load archive info"); TEST_RESULT_PTR_NE(infoArchiveCipherPass(infoArchive), NULL, " cipher sub set"); InfoBackup *infoBackup = NULL; TEST_ASSIGN( infoBackup, infoBackupLoadFile(storageTest, backupInfoFileName, cipherTypeAes256Cbc, strNew("12345678")), " load backup info"); TEST_RESULT_PTR_NE(infoBackupCipherPass(infoBackup), NULL, " cipher sub set"); TEST_RESULT_BOOL( strEq(infoArchiveCipherPass(infoArchive), infoBackupCipherPass(infoBackup)), false, " cipher sub different for archive and backup"); } // ***************************************************************************************************************************** if (testBegin("cmdStanzaUpgrade()")) { // Load Parameters StringList *argList = strLstDup(argListBase); strLstAddZ(argList, "--repo1-host=/repo/not/local"); harnessCfgLoad(cfgCmdStanzaUpgrade, argList); TEST_ERROR_FMT( cmdStanzaUpgrade(), HostInvalidError, "stanza-upgrade command must be run on the repository host"); //-------------------------------------------------------------------------------------------------------------------------- argList = strLstDup(argListBase); harnessCfgLoad(cfgCmdStanzaUpgrade, argList); // Create the stop file TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageLocalWrite(), lockStopFileName(cfgOptionStr(cfgOptStanza))), BUFSTRDEF("")), "create stop file"); TEST_ERROR_FMT(cmdStanzaUpgrade(), StopError, "stop file exists for stanza %s", strPtr(stanza)); TEST_RESULT_VOID( storageRemoveP(storageLocalWrite(), lockStopFileName(cfgOptionStr(cfgOptStanza))), " remove the stop file"); //-------------------------------------------------------------------------------------------------------------------------- // Load Parameters argList = strLstDup(argListBase); harnessCfgLoad(cfgCmdStanzaCreate, argList); // Create pg_control storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(stanza))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_96, .systemId = 6569239123849665679})); TEST_RESULT_VOID(cmdStanzaCreate(), "stanza create"); //-------------------------------------------------------------------------------------------------------------------------- argList = strLstDup(argListBase); harnessCfgLoad(cfgCmdStanzaUpgrade, argList); TEST_RESULT_VOID(cmdStanzaUpgrade(), "stanza upgrade - files already exist and both are valid"); harnessLogResult("P00 INFO: stanza 'db' is already up to date"); // Remove the copy files storageRemoveP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(archiveInfoFileName)), .errorOnMissing = true); storageRemoveP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(backupInfoFileName)), .errorOnMissing = true); // backup info up to date but archive info db-id mismatch //-------------------------------------------------------------------------------------------------------------------------- String *contentArchive = strNew ( "[db]\n" "db-id=2\n" "db-system-id=6569239123849665679\n" "db-version=\"9.6\"\n" "\n" "[db:history]\n" "2={\"db-id\":6569239123849665679,\"db-version\":\"9.6\"}\n" ); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, archiveInfoFileName), harnessInfoChecksum(contentArchive)), "put archive info to file"); TEST_ERROR_FMT( cmdStanzaUpgrade(), FileInvalidError, "backup info file and archive info file do not match\n" "archive: id = 2, version = 9.6, system-id = 6569239123849665679\n" "backup : id = 1, version = 9.6, system-id = 6569239123849665679\n" "HINT: this may be a symptom of repository corruption!"); // backup info up to date but archive info version is not //-------------------------------------------------------------------------------------------------------------------------- String *contentBackup = strNew ( "[db]\n" "db-catalog-version=201608131\n" "db-control-version=960\n" "db-id=2\n" "db-system-id=6569239123849665679\n" "db-version=\"9.6\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201608131,\"db-control-version\":960,\"db-system-id\":6569239123849665999," "\"db-version\":\"9.5\"}\n" "2={\"db-catalog-version\":201608131,\"db-control-version\":960,\"db-system-id\":6569239123849665679," "\"db-version\":\"9.6\"}\n" ); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksum(contentBackup)), "put backup info to file"); contentArchive = strNew ( "[db]\n" "db-id=1\n" "db-system-id=6569239123849665679\n" "db-version=\"9.5\"\n" "\n" "[db:history]\n" "1={\"db-id\":6569239123849665679,\"db-version\":\"9.5\"}\n" ); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, archiveInfoFileName), harnessInfoChecksum(contentArchive)), "put archive info to file"); TEST_RESULT_VOID(cmdStanzaUpgrade(), "stanza upgrade - archive.info file upgraded - version"); contentArchive = strNew ( "[db]\n" "db-id=2\n" "db-system-id=6569239123849665679\n" "db-version=\"9.6\"\n" "\n" "[db:history]\n" "1={\"db-id\":6569239123849665679,\"db-version\":\"9.5\"}\n" "2={\"db-id\":6569239123849665679,\"db-version\":\"9.6\"}\n" ); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, fileName), harnessInfoChecksum(contentArchive)), " put archive info to test file"); TEST_RESULT_BOOL( (bufEq( storageGetP(storageNewReadP(storageTest, archiveInfoFileName)), storageGetP(storageNewReadP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(archiveInfoFileName))))) && bufEq( storageGetP(storageNewReadP(storageTest, archiveInfoFileName)), storageGetP(storageNewReadP(storageTest, fileName)))), true, " test and stanza archive info files are equal"); // archive info up to date but backup info version is not //-------------------------------------------------------------------------------------------------------------------------- contentBackup = strNew ( "[db]\n" "db-catalog-version=201608131\n" "db-control-version=960\n" "db-id=1\n" "db-system-id=6569239123849665679\n" "db-version=\"9.5\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201608131,\"db-control-version\":942,\"db-system-id\":6569239123849665679," "\"db-version\":\"9.5\"}\n" ); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksum(contentBackup)), "put backup info to file"); TEST_RESULT_VOID(cmdStanzaUpgrade(), "stanza upgrade - backup.info file upgraded - version"); contentBackup = strNew ( "[db]\n" "db-catalog-version=201608131\n" "db-control-version=960\n" "db-id=2\n" "db-system-id=6569239123849665679\n" "db-version=\"9.6\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201510051,\"db-control-version\":942,\"db-system-id\":6569239123849665679," "\"db-version\":\"9.5\"}\n" "2={\"db-catalog-version\":201608131,\"db-control-version\":960,\"db-system-id\":6569239123849665679," "\"db-version\":\"9.6\"}\n" ); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, fileName), harnessInfoChecksum(contentBackup)), " put backup info to test file"); TEST_RESULT_BOOL( (bufEq( storageGetP(storageNewReadP(storageTest, backupInfoFileName)), storageGetP(storageNewReadP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(backupInfoFileName))))) && bufEq( storageGetP(storageNewReadP(storageTest, backupInfoFileName)), storageGetP(storageNewReadP(storageTest, fileName)))), true, " test and stanza backup info files are equal"); // backup info up to date but archive info system-id is not //-------------------------------------------------------------------------------------------------------------------------- contentBackup = strNew ( "[db]\n" "db-catalog-version=201608131\n" "db-control-version=960\n" "db-id=2\n" "db-system-id=6569239123849665679\n" "db-version=\"9.6\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201510051,\"db-control-version\":942,\"db-system-id\":6569239123849665999," "\"db-version\":\"9.5\"}\n" "2={\"db-catalog-version\":201608131,\"db-control-version\":960,\"db-system-id\":6569239123849665679," "\"db-version\":\"9.6\"}\n" ); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksum(contentBackup)), "put backup info to file"); contentArchive = strNew ( "[db]\n" "db-id=1\n" "db-system-id=6569239123849665999\n" "db-version=\"9.6\"\n" "\n" "[db:history]\n" "1={\"db-id\":6569239123849665999,\"db-version\":\"9.6\"}\n" ); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, archiveInfoFileName), harnessInfoChecksum(contentArchive)), "put archive info to file"); TEST_RESULT_VOID(cmdStanzaUpgrade(), "stanza upgrade - archive.info file upgraded - system-id"); contentArchive = strNew ( "[db]\n" "db-id=2\n" "db-system-id=6569239123849665679\n" "db-version=\"9.6\"\n" "\n" "[db:history]\n" "1={\"db-id\":6569239123849665999,\"db-version\":\"9.6\"}\n" "2={\"db-id\":6569239123849665679,\"db-version\":\"9.6\"}\n" ); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, fileName), harnessInfoChecksum(contentArchive)), " put archive info to test file"); TEST_RESULT_BOOL( (bufEq( storageGetP(storageNewReadP(storageTest, archiveInfoFileName)), storageGetP(storageNewReadP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(archiveInfoFileName))))) && bufEq( storageGetP(storageNewReadP(storageTest, archiveInfoFileName)), storageGetP(storageNewReadP(storageTest, fileName)))), true, " test and stanza archive info files are equal"); // archive info up to date but backup info system-id is not //-------------------------------------------------------------------------------------------------------------------------- contentBackup = strNew ( "[db]\n" "db-catalog-version=201608131\n" "db-control-version=960\n" "db-id=1\n" "db-system-id=6569239123849665999\n" "db-version=\"9.6\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201608131,\"db-control-version\":960,\"db-system-id\":6569239123849665999," "\"db-version\":\"9.6\"}\n" ); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksum(contentBackup)), "put backup info to file"); TEST_RESULT_VOID(cmdStanzaUpgrade(), "stanza upgrade - backup.info file upgraded - system-id"); contentBackup = strNew ( "[db]\n" "db-catalog-version=201608131\n" "db-control-version=960\n" "db-id=2\n" "db-system-id=6569239123849665679\n" "db-version=\"9.6\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201608131,\"db-control-version\":960,\"db-system-id\":6569239123849665999," "\"db-version\":\"9.6\"}\n" "2={\"db-catalog-version\":201608131,\"db-control-version\":960,\"db-system-id\":6569239123849665679," "\"db-version\":\"9.6\"}\n" ); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, fileName), harnessInfoChecksum(contentBackup)), " put backup info to test file"); TEST_RESULT_BOOL( (bufEq( storageGetP(storageNewReadP(storageTest, backupInfoFileName)), storageGetP(storageNewReadP(storageTest, strNewFmt("%s" INFO_COPY_EXT, strPtr(backupInfoFileName))))) && bufEq( storageGetP(storageNewReadP(storageTest, backupInfoFileName)), storageGetP(storageNewReadP(storageTest, fileName)))), true, " test and stanza backup info files are equal"); } // ***************************************************************************************************************************** if (testBegin("cmdStanzaDelete(), stanzaDelete(), manifestDelete()")) { // Load Parameters StringList *argListCmd = strLstNew(); strLstAdd(argListCmd, strNewFmt("--repo1-path=%s/repo", testPath())); StringList *argList = strLstDup(argListCmd); strLstAddZ(argList, "--repo1-host=/repo/not/local"); strLstAdd(argList, strNewFmt("--stanza=%s", strPtr(stanza))); strLstAdd(argList,strNewFmt("--pg1-path=%s/%s", testPath(), strPtr(stanza))); harnessCfgLoad(cfgCmdStanzaDelete, argList); TEST_ERROR_FMT( cmdStanzaDelete(), HostInvalidError, "stanza-delete command must be run on the repository host"); //-------------------------------------------------------------------------------------------------------------------------- String *stanzaOther = strNew("otherstanza"); // Load Parameters argList = strLstDup(argListCmd); strLstAdd(argList, strNewFmt("--stanza=%s", strPtr(stanzaOther))); strLstAdd(argList,strNewFmt("--pg1-path=%s/%s", testPath(), strPtr(stanzaOther))); strLstAddZ(argList, "--no-online"); harnessCfgLoad(cfgCmdStanzaCreate, argList); // Create pg_control for stanza-create storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(stanzaOther))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_96, .systemId = 6569239123849665679})); TEST_RESULT_VOID(cmdStanzaCreate(), "create a stanza that will not be deleted"); argList = strLstDup(argListCmd); strLstAdd(argList, strNewFmt("--stanza=%s", strPtr(stanza))); strLstAdd(argList,strNewFmt("--pg1-path=%s/%s", testPath(), strPtr(stanza))); harnessCfgLoad(cfgCmdStanzaDelete, argList); // stanza already deleted //-------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(cmdStanzaDelete(), "stanza delete - success on stanza does not exist"); TEST_RESULT_BOOL(stanzaDelete(storageRepoWrite(), NULL, NULL), true, " archiveList=NULL, backupList=NULL"); TEST_RESULT_BOOL(stanzaDelete(storageRepoWrite(), strLstNew(), NULL), true, " archiveList=0, backupList=NULL"); TEST_RESULT_BOOL(stanzaDelete(storageRepoWrite(), NULL, strLstNew()), true, " archiveList=NULL, backupList=0"); TEST_RESULT_BOOL(stanzaDelete(storageRepoWrite(), strLstNew(), strLstNew()), true, " archiveList=0, backupList=0"); // create and delete a stanza //-------------------------------------------------------------------------------------------------------------------------- argList = strLstDup(argListCmd); strLstAdd(argList, strNewFmt("--stanza=%s", strPtr(stanza))); strLstAdd(argList,strNewFmt("--pg1-path=%s/%s", testPath(), strPtr(stanza))); strLstAddZ(argList, "--no-online"); harnessCfgLoad(cfgCmdStanzaCreate, argList); // Create pg_control for stanza-create storagePutP( storageNewWriteP(storageTest, strNewFmt("%s/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, strPtr(stanza))), pgControlTestToBuffer((PgControl){.version = PG_VERSION_96, .systemId = 6569239123849665679})); TEST_RESULT_VOID(cmdStanzaCreate(), "create a stanza to be deleted"); TEST_RESULT_BOOL( storageExistsP(storageTest, strNewFmt("repo/archive/%s/archive.info", strPtr(stanza))), true, " stanza created"); argList = strLstDup(argListCmd); strLstAdd(argList, strNewFmt("--stanza=%s", strPtr(stanza))); strLstAdd(argList,strNewFmt("--pg1-path=%s/%s", testPath(), strPtr(stanza))); harnessCfgLoad(cfgCmdStanzaDelete, argList); TEST_ERROR_FMT( cmdStanzaDelete(), FileMissingError, "stop file does not exist for stanza 'db'\n" "HINT: has the pgbackrest stop command been run on this server for this stanza?"); // Create the stop file TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageLocalWrite(), lockStopFileName(cfgOptionStr(cfgOptStanza))), BUFSTRDEF("")), "create stop file"); TEST_RESULT_VOID(cmdStanzaDelete(), "stanza delete"); TEST_RESULT_BOOL( storagePathExistsP(storageTest, strNewFmt("repo/archive/%s", strPtr(stanza))), false, " stanza deleted"); TEST_RESULT_BOOL( storageExistsP(storageLocal(), lockStopFileName(cfgOptionStr(cfgOptStanza))), false, " stop file removed"); // Create stanza with directories only //-------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID( storagePathCreateP(storageTest, strNewFmt("repo/archive/%s/9.6-1/1234567812345678", strPtr(stanza))), "create archive sub directory"); TEST_RESULT_VOID( storagePathCreateP(storageTest, strNewFmt("repo/backup/%s/20190708-154306F", strPtr(stanza))), "create backup sub directory"); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageLocalWrite(), lockStopFileName(cfgOptionStr(cfgOptStanza))), BUFSTRDEF("")), "create stop file"); TEST_RESULT_VOID(cmdStanzaDelete(), " stanza delete - sub directories only"); TEST_RESULT_BOOL( storagePathExistsP(storageTest, strNewFmt("repo/archive/%s", strPtr(stanza))), false, " stanza archive deleted"); TEST_RESULT_BOOL( storagePathExistsP(storageTest, strNewFmt("repo/backup/%s", strPtr(stanza))), false, " stanza backup deleted"); // Create stanza archive only //-------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, strNewFmt("repo/archive/%s/archive.info", strPtr(stanza))), BUFSTRDEF("")), "create archive.info"); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageLocalWrite(), lockStopFileName(cfgOptionStr(cfgOptStanza))), BUFSTRDEF("")), "create stop file"); TEST_RESULT_VOID(cmdStanzaDelete(), " stanza delete - archive only"); TEST_RESULT_BOOL( storagePathExistsP(storageTest, strNewFmt("repo/archive/%s", strPtr(stanza))), false, " stanza deleted"); // Create stanza backup only TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, strNewFmt("repo/backup/%s/backup.info", strPtr(stanza))), BUFSTRDEF("")), "create backup.info"); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageLocalWrite(), lockStopFileName(cfgOptionStr(cfgOptStanza))), BUFSTRDEF("")), "create stop file"); TEST_RESULT_VOID(cmdStanzaDelete(), " stanza delete - backup only"); TEST_RESULT_BOOL( storagePathExistsP(storageTest, strNewFmt("repo/backup/%s", strPtr(stanza))), false, " stanza deleted"); // Create a backup file that matches the regex for a backup directory //-------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, strNewFmt("repo/backup/%s/20190708-154306F", strPtr(stanza))), BUFSTRDEF("")), "backup file that looks like a directory"); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageLocalWrite(), lockStopFileName(cfgOptionStr(cfgOptStanza))), BUFSTRDEF("")), "create stop file"); TEST_ERROR_FMT( cmdStanzaDelete(), FileRemoveError, "unable to remove '%s/repo/backup/%s/20190708-154306F/backup.manifest': [20] Not a directory", testPath(), strPtr(stanza)); TEST_RESULT_VOID( storageRemoveP(storageTest, strNewFmt("repo/backup/%s/20190708-154306F", strPtr(stanza))), "remove backup directory"); // Create backup manifest //-------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, strNewFmt("repo/backup/%s/20190708-154306F/backup.manifest", strPtr(stanza))), BUFSTRDEF("")), "create backup.manifest only"); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, strNewFmt("repo/backup/%s/20190708-154306F_20190716-191726I/backup.manifest.copy", strPtr(stanza))), BUFSTRDEF("")), "create backup.manifest.copy only"); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, strNewFmt("repo/backup/%s/20190708-154306F_20190716-191800D/backup.manifest", strPtr(stanza))), BUFSTRDEF("")), "create backup.manifest"); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, strNewFmt("repo/backup/%s/20190708-154306F_20190716-191800D/backup.manifest.copy", strPtr(stanza))), BUFSTRDEF("")), "create backup.manifest.copy"); TEST_RESULT_VOID(manifestDelete(storageRepoWrite()), "delete manifests"); TEST_RESULT_BOOL( (storageExistsP(storageTest, strNewFmt("repo/backup/%s/20190708-154306F/backup.manifest", strPtr(stanza))) && storageExistsP(storageTest, strNewFmt("repo/backup/%s/20190708-154306F_20190716-191726I/backup.manifest.copy", strPtr(stanza))) && storageExistsP(storageTest, strNewFmt("repo/backup/%s/20190708-154306F_20190716-191800D/backup.manifest", strPtr(stanza))) && storageExistsP(storageTest, strNewFmt("repo/backup/%s/20190708-154306F_20190716-191800D/backup.manifest.copy", strPtr(stanza)))), false, " all manifests deleted"); // Create only stanza paths //-------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(cmdStanzaDelete(), "stanza delete"); TEST_RESULT_VOID( storagePathCreateP(storageTest, strNewFmt("repo/archive/%s", strPtr(stanza))), "create empty stanza archive path"); TEST_RESULT_VOID( storagePathCreateP(storageTest, strNewFmt("repo/backup/%s", strPtr(stanza))), "create empty stanza backup path"); TEST_RESULT_VOID(cmdStanzaDelete(), " stanza delete - empty directories"); // Create postmaster.pid //-------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageTest, strNewFmt("repo/backup/%s/backup.info", strPtr(stanza))), BUFSTRDEF("")), "create backup.info"); TEST_RESULT_VOID( storagePutP( storageNewWriteP(storageLocalWrite(), lockStopFileName(cfgOptionStr(cfgOptStanza))), BUFSTRDEF("")), "create stop file"); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageTest, strNewFmt("%s/" PG_FILE_POSTMASTERPID, strPtr(stanza))), BUFSTRDEF("")), "create postmaster file"); TEST_ERROR_FMT( cmdStanzaDelete(), PostmasterRunningError, PG_FILE_POSTMASTERPID " exists - looks like the postmaster is running. " "To delete stanza 'db', shutdown the postmaster for stanza 'db' and try again, or use --force."); // Force deletion strLstAddZ(argList,"--force"); harnessCfgLoad(cfgCmdStanzaDelete, argList); TEST_RESULT_VOID(cmdStanzaDelete(), "stanza delete --force"); TEST_RESULT_BOOL( storagePathExistsP(storageTest, strNewFmt("repo/backup/%s", strPtr(stanza))), false, " stanza deleted"); // Ensure other stanza never deleted //-------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL( storageExistsP(storageTest, strNewFmt("repo/archive/%s/archive.info", strPtr(stanzaOther))), true, "otherstanza exists"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/command/storageTest.c000066400000000000000000000172301362531507100243330ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Storage Commands ***********************************************************************************************************************************/ #include "common/io/bufferWrite.h" #include "storage/posix/storage.h" #include "common/harnessConfig.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // Create default storage object for testing Storage *storageTest = storagePosixNew( strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); // ***************************************************************************************************************************** if (testBegin("cmdStorageList() and storageListRender()")) { StringList *argList = strLstNew(); strLstAdd(argList, strNewFmt("--repo-path=%s/repo", testPath())); strLstAddZ(argList, "--output=text"); strLstAddZ(argList, "--sort=none"); harnessCfgLoad(cfgCmdLs, argList); // Missing directory // ------------------------------------------------------------------------------------------------------------------------- Buffer *output = bufNew(0); cfgOptionSet(cfgOptOutput, cfgSourceParam, VARSTRDEF("text")); TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "missing directory (text)"); TEST_RESULT_STR_Z(strNewBuf(output), "", " check output"); output = bufNew(0); cfgOptionSet(cfgOptOutput, cfgSourceParam, VARSTRDEF("json")); TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "missing directory (json)"); TEST_RESULT_STR_Z(strNewBuf(output), "{}", " check output"); // Empty directory // ------------------------------------------------------------------------------------------------------------------------- storagePathCreateP(storageTest, strNew("repo"), .mode = 0700); output = bufNew(0); cfgOptionSet(cfgOptOutput, cfgSourceParam, VARSTRDEF("text")); TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "empty directory (text)"); TEST_RESULT_STR_Z(strNewBuf(output), "", " check output"); output = bufNew(0); cfgOptionSet(cfgOptOutput, cfgSourceParam, VARSTRDEF("json")); TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "empty directory (json)"); TEST_RESULT_STR_Z( strNewBuf(output), "{" "\".\":{\"type\":\"path\"}" "}", " check output"); // Add path and file // ------------------------------------------------------------------------------------------------------------------------- cfgOptionSet(cfgOptSort, cfgSourceParam, VARSTRDEF("asc")); storagePathCreateP(storageTest, strNew("repo/bbb")); storagePutP(storageNewWriteP(storageTest, strNew("repo/aaa"), .timeModified = 1578671569), BUFSTRDEF("TESTDATA")); storagePutP(storageNewWriteP(storageTest, strNew("repo/bbb/ccc")), BUFSTRDEF("TESTDATA2")); ASSERT(system(strPtr(strNewFmt("ln -s ../bbb %s/repo/link", testPath()))) == 0); ASSERT(system(strPtr(strNewFmt("mkfifo %s/repo/pipe", testPath()))) == 0); output = bufNew(0); cfgOptionSet(cfgOptOutput, cfgSourceParam, VARSTRDEF("text")); TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "path and file (text)"); TEST_RESULT_STR_Z(strNewBuf(output), "aaa\nbbb\nlink\npipe", " check output"); output = bufNew(0); cfgOptionSet(cfgOptOutput, cfgSourceParam, VARSTRDEF("json")); TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "path and file (text)"); TEST_RESULT_STR_Z( strNewBuf(output), "{" "\".\":{\"type\":\"path\"}," "\"aaa\":{\"type\":\"file\",\"size\":8,\"time\":1578671569}," "\"bbb\":{\"type\":\"path\"}," "\"link\":{\"type\":\"link\",\"destination\":\"../bbb\"}," "\"pipe\":{\"type\":\"special\"}" "}", " check output"); // Reverse sort // ------------------------------------------------------------------------------------------------------------------------- cfgOptionSet(cfgOptSort, cfgSourceParam, VARSTRDEF("desc")); output = bufNew(0); cfgOptionSet(cfgOptOutput, cfgSourceParam, VARSTRDEF("text")); TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "path and file (text)"); TEST_RESULT_STR_Z(strNewBuf(output), "pipe\nlink\nbbb\naaa", " check output"); // Recurse // ------------------------------------------------------------------------------------------------------------------------- cfgOptionValidSet(cfgOptRecurse, true); cfgOptionSet(cfgOptRecurse, cfgSourceParam, VARBOOL(true)); output = bufNew(0); cfgOptionSet(cfgOptOutput, cfgSourceParam, VARSTRDEF("text")); TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "filter"); TEST_RESULT_STR_Z(strNewBuf(output), "pipe\nlink\nbbb/ccc\nbbb\naaa", " check output"); // Filter // ------------------------------------------------------------------------------------------------------------------------- cfgOptionValidSet(cfgOptFilter, true); cfgOptionSet(cfgOptFilter, cfgSourceParam, VARSTRDEF("^aaa$")); output = bufNew(0); cfgOptionSet(cfgOptOutput, cfgSourceParam, VARSTRDEF("text")); TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "filter"); TEST_RESULT_STR_Z(strNewBuf(output), "aaa", " check output"); // Subdirectory // ------------------------------------------------------------------------------------------------------------------------- StringList *argListTmp = strLstDup(argList); strLstAddZ(argListTmp, "bbb"); harnessCfgLoad(cfgCmdLs, argListTmp); output = bufNew(0); cfgOptionSet(cfgOptOutput, cfgSourceParam, VARSTRDEF("text")); TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "subdirectory"); TEST_RESULT_STR_Z(strNewBuf(output), "ccc", " check output"); // ------------------------------------------------------------------------------------------------------------------------- // Redirect stdout to a file int stdoutSave = dup(STDOUT_FILENO); String *stdoutFile = strNewFmt("%s/stdout.txt", testPath()); THROW_ON_SYS_ERROR(freopen(strPtr(stdoutFile), "w", stdout) == NULL, FileWriteError, "unable to reopen stdout"); // Not in a test wrapper to avoid writing to stdout cmdStorageList(); // Restore normal stdout dup2(stdoutSave, STDOUT_FILENO); TEST_RESULT_STR_Z(strNewBuf(storageGetP(storageNewReadP(storageTest, stdoutFile))), "ccc\n", " check text"); // Too many paths // ------------------------------------------------------------------------------------------------------------------------- strLstAddZ(argListTmp, "ccc"); harnessCfgLoad(cfgCmdLs, argListTmp); output = bufNew(0); TEST_ERROR(storageListRender(ioBufferWriteNew(output)), ParamInvalidError, "only one path may be specified"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/000077500000000000000000000000001362531507100215325ustar00rootroot00000000000000pgbackrest-release-2.24/test/src/module/common/assertOffTest.c000066400000000000000000000017371362531507100245020ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Assert Macros and Routines when Disabled ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("ASSERT()")) { TEST_RESULT_VOID(ASSERT(true), "assert true ignored"); TEST_RESULT_VOID(ASSERT(false || false), "assert false ignored"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/assertOnTest.c000066400000000000000000000017351362531507100243420ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Assert Macros and Routines ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("ASSERT()")) { TEST_RESULT_VOID(ASSERT(true), "assert true"); TEST_ERROR(ASSERT(false || false), AssertError, "assertion 'false || false' failed"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/compressGzipTest.c000066400000000000000000000212601362531507100252240ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Gzip ***********************************************************************************************************************************/ #include "common/io/filter/group.h" #include "common/io/bufferRead.h" #include "common/io/bufferWrite.h" #include "common/io/io.h" /*********************************************************************************************************************************** Compress data ***********************************************************************************************************************************/ static Buffer * testCompress(IoFilter *compress, Buffer *decompressed, size_t inputSize, size_t outputSize) { Buffer *compressed = bufNew(1024 * 1024); size_t inputTotal = 0; ioBufferSizeSet(outputSize); IoWrite *write = ioBufferWriteNew(compressed); ioFilterGroupAdd(ioWriteFilterGroup(write), compress); ioWriteOpen(write); // Compress input data while (inputTotal < bufSize(decompressed)) { // Generate the input buffer based on input size. This breaks the data up into chunks as it would be in a real scenario. Buffer *input = bufNewC( bufPtr(decompressed) + inputTotal, inputSize > bufSize(decompressed) - inputTotal ? bufSize(decompressed) - inputTotal : inputSize); ioWrite(write, input); inputTotal += bufUsed(input); bufFree(input); } ioWriteClose(write); memContextFree(((GzipCompress *)ioFilterDriver(compress))->memContext); return compressed; } /*********************************************************************************************************************************** Decompress data ***********************************************************************************************************************************/ static Buffer * testDecompress(IoFilter *decompress, Buffer *compressed, size_t inputSize, size_t outputSize) { Buffer *decompressed = bufNew(1024 * 1024); Buffer *output = bufNew(outputSize); ioBufferSizeSet(inputSize); IoRead *read = ioBufferReadNew(compressed); ioFilterGroupAdd(ioReadFilterGroup(read), decompress); ioReadOpen(read); while (!ioReadEof(read)) { ioRead(read, output); bufCat(decompressed, output); bufUsedZero(output); } ioReadClose(read); bufFree(output); memContextFree(((GzipDecompress *)ioFilterDriver(decompress))->memContext); return decompressed; } /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("gzipError")) { TEST_RESULT_INT(gzipError(Z_OK), Z_OK, "check ok"); TEST_RESULT_INT(gzipError(Z_STREAM_END), Z_STREAM_END, "check stream end"); TEST_ERROR(gzipError(Z_NEED_DICT), AssertError, "zlib threw error: [2] need dictionary"); TEST_ERROR(gzipError(Z_ERRNO), AssertError, "zlib threw error: [-1] file error"); TEST_ERROR(gzipError(Z_STREAM_ERROR), FormatError, "zlib threw error: [-2] stream error"); TEST_ERROR(gzipError(Z_DATA_ERROR), FormatError, "zlib threw error: [-3] data error"); TEST_ERROR(gzipError(Z_MEM_ERROR), MemoryError, "zlib threw error: [-4] insufficient memory"); TEST_ERROR(gzipError(Z_BUF_ERROR), AssertError, "zlib threw error: [-5] no space in buffer"); TEST_ERROR(gzipError(Z_VERSION_ERROR), FormatError, "zlib threw error: [-6] incompatible version"); TEST_ERROR(gzipError(999), AssertError, "zlib threw error: [999] unknown error"); } // ***************************************************************************************************************************** if (testBegin("gzipWindowBits")) { TEST_RESULT_INT(gzipWindowBits(true), -15, "raw window bits"); TEST_RESULT_INT(gzipWindowBits(false), 31, "gzip window bits"); } // ***************************************************************************************************************************** if (testBegin("GzipCompress and GzipDecompress")) { const char *simpleData = "A simple string"; Buffer *compressed = NULL; Buffer *decompressed = bufNewC(simpleData, strlen(simpleData)); VariantList *compressParamList = varLstNew(); varLstAdd(compressParamList, varNewUInt(3)); varLstAdd(compressParamList, varNewBool(false)); VariantList *decompressParamList = varLstNew(); varLstAdd(decompressParamList, varNewBool(false)); TEST_ASSIGN( compressed, testCompress(gzipCompressNewVar(compressParamList), decompressed, 1024, 1024), "simple data - compress large in/large out buffer"); TEST_RESULT_BOOL( bufEq(compressed, testCompress(gzipCompressNew(3, false), decompressed, 1024, 1)), true, "simple data - compress large in/small out buffer"); TEST_RESULT_BOOL( bufEq(compressed, testCompress(gzipCompressNew(3, false), decompressed, 1, 1024)), true, "simple data - compress small in/large out buffer"); TEST_RESULT_BOOL( bufEq(compressed, testCompress(gzipCompressNew(3, false), decompressed, 1, 1)), true, "simple data - compress small in/small out buffer"); TEST_RESULT_BOOL( bufEq(decompressed, testDecompress(gzipDecompressNewVar(decompressParamList), compressed, 1024, 1024)), true, "simple data - decompress large in/large out buffer"); TEST_RESULT_BOOL( bufEq(decompressed, testDecompress(gzipDecompressNew(false), compressed, 1024, 1)), true, "simple data - decompress large in/small out buffer"); TEST_RESULT_BOOL( bufEq(decompressed, testDecompress(gzipDecompressNew(false), compressed, 1, 1024)), true, "simple data - decompress small in/large out buffer"); TEST_RESULT_BOOL( bufEq(decompressed, testDecompress(gzipDecompressNew(false), compressed, 1, 1)), true, "simple data - decompress small in/small out buffer"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error on no compression data"); TEST_ERROR(testDecompress(gzipDecompressNew(true), bufNew(0), 1, 1), FormatError, "unexpected eof in compressed data"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error on truncated compression data"); Buffer *truncated = bufNew(0); bufCatSub(truncated, compressed, 0, bufUsed(compressed) - 1); TEST_RESULT_UINT(bufUsed(truncated), bufUsed(compressed) - 1, "check truncated buffer size"); TEST_ERROR(testDecompress(gzipDecompressNew(false), truncated, 512, 512), FormatError, "unexpected eof in compressed data"); // Compress a large zero input buffer into small output buffer // ------------------------------------------------------------------------------------------------------------------------- decompressed = bufNew(1024 * 1024 - 1); memset(bufPtr(decompressed), 0, bufSize(decompressed)); bufUsedSet(decompressed, bufSize(decompressed)); TEST_ASSIGN( compressed, testCompress(gzipCompressNew(3, true), decompressed, bufSize(decompressed), 1024), "zero data - compress large in/small out buffer"); TEST_RESULT_BOOL( bufEq(decompressed, testDecompress(gzipDecompressNew(true), compressed, bufSize(compressed), 1024 * 256)), true, "zero data - decompress large in/small out buffer"); } // ***************************************************************************************************************************** if (testBegin("gzipDecompressToLog() and gzipCompressToLog()")) { GzipDecompress *decompress = (GzipDecompress *)ioFilterDriver(gzipDecompressNew(false)); TEST_RESULT_STR_Z(gzipDecompressToLog(decompress), "{inputSame: false, done: false, availIn: 0}", "format object"); decompress->inputSame = true; decompress->done = true; TEST_RESULT_STR_Z(gzipDecompressToLog(decompress), "{inputSame: true, done: true, availIn: 0}", "format object"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/cryptoTest.c000066400000000000000000000506121362531507100240620ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Block Cipher ***********************************************************************************************************************************/ #include "common/io/filter/filter.intern.h" #include "common/io/io.h" #include "common/type/json.h" /*********************************************************************************************************************************** Data for testing ***********************************************************************************************************************************/ #define TEST_CIPHER "aes-256-cbc" #define TEST_PASS "areallybadpassphrase" #define TEST_PLAINTEXT "plaintext" #define TEST_BUFFER_SIZE 256 /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); const Buffer *testPass = BUFSTRDEF(TEST_PASS); const Buffer *testPlainText = BUFSTRDEF(TEST_PLAINTEXT); // ***************************************************************************************************************************** if (testBegin("Common")) { TEST_RESULT_BOOL(cryptoIsInit(), false, "crypto is not initialized"); TEST_RESULT_VOID(cryptoInit(), "initialize crypto"); TEST_RESULT_BOOL(cryptoIsInit(), true, "crypto is initialized"); TEST_RESULT_VOID(cryptoInit(), "initialize crypto again"); // ------------------------------------------------------------------------------------------------------------------------- cryptoInit(); TEST_RESULT_VOID(cryptoError(false, "no error here"), "no error"); EVP_MD_CTX *context = EVP_MD_CTX_create(); TEST_ERROR( cryptoError(EVP_DigestInit_ex(context, NULL, NULL) != 1, "unable to initialize hash context"), CryptoError, "unable to initialize hash context: [101187723] no digest set"); EVP_MD_CTX_destroy(context); TEST_ERROR(cryptoError(true, "no error"), CryptoError, "no error: [0] no details available"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(cipherType(strNew(BOGUS_STR)), AssertError, "invalid cipher name 'BOGUS'"); TEST_RESULT_UINT(cipherType(strNew("none")), cipherTypeNone, "none type"); TEST_RESULT_UINT(cipherType(strNew("aes-256-cbc")), cipherTypeAes256Cbc, "aes-256-cbc type"); TEST_ERROR(cipherTypeName((CipherType)2), AssertError, "invalid cipher type 2"); TEST_RESULT_STR_Z(cipherTypeName(cipherTypeNone), "none", "none name"); TEST_RESULT_STR_Z(cipherTypeName(cipherTypeAes256Cbc), "aes-256-cbc", "aes-256-cbc name"); // Test if the buffer was overrun // ------------------------------------------------------------------------------------------------------------------------- unsigned char buffer[256] = {0}; cryptoRandomBytes(buffer, sizeof(buffer) - 1); TEST_RESULT_BOOL( buffer[sizeof(buffer) - 1] == 0, true, "check that buffer did not overrun (though random byte could be 0)"); // Count bytes that are not zero (there shouldn't be all zeroes) // ------------------------------------------------------------------------------------------------------------------------- int nonZeroTotal = 0; for (unsigned int charIdx = 0; charIdx < sizeof(buffer) - 1; charIdx++) if (buffer[charIdx] != 0) // {uncoverable_branch - ok if there are no zeros} nonZeroTotal++; TEST_RESULT_INT_NE(nonZeroTotal, 0, "check that there are non-zero values in the buffer"); } // ***************************************************************************************************************************** if (testBegin("CipherBlock")) { // Cipher and digest errors // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR( cipherBlockNew( cipherModeEncrypt, cipherTypeNone, BUFSTRZ(TEST_PASS), NULL), AssertError, "unable to load cipher 'none'"); TEST_ERROR( cipherBlockNew( cipherModeEncrypt, cipherTypeAes256Cbc, testPass, strNew(BOGUS_STR)), AssertError, "unable to load digest 'BOGUS'"); // Initialization of object // ------------------------------------------------------------------------------------------------------------------------- CipherBlock *cipherBlock = (CipherBlock *)ioFilterDriver( cipherBlockNew(cipherModeEncrypt, cipherTypeAes256Cbc, BUFSTRZ(TEST_PASS), NULL)); TEST_RESULT_Z(memContextName(cipherBlock->memContext), "CipherBlock", "mem context name is valid"); TEST_RESULT_INT(cipherBlock->mode, cipherModeEncrypt, "mode is valid"); TEST_RESULT_INT(cipherBlock->passSize, strlen(TEST_PASS), "passphrase size is valid"); TEST_RESULT_BOOL(memcmp(cipherBlock->pass, TEST_PASS, strlen(TEST_PASS)) == 0, true, "passphrase is valid"); TEST_RESULT_BOOL(cipherBlock->saltDone, false, "salt done is false"); TEST_RESULT_BOOL(cipherBlock->processDone, false, "process done is false"); TEST_RESULT_INT(cipherBlock->headerSize, 0, "header size is 0"); TEST_RESULT_PTR_NE(cipherBlock->cipher, NULL, "cipher is set"); TEST_RESULT_PTR_NE(cipherBlock->digest, NULL, "digest is set"); TEST_RESULT_PTR(cipherBlock->cipherContext, NULL, "cipher context is not set"); // Encrypt // ------------------------------------------------------------------------------------------------------------------------- Buffer *encryptBuffer = bufNew(TEST_BUFFER_SIZE); IoFilter *blockEncryptFilter = cipherBlockNew(cipherModeEncrypt, cipherTypeAes256Cbc, testPass, NULL); blockEncryptFilter = cipherBlockNewVar(ioFilterParamList(blockEncryptFilter)); CipherBlock *blockEncrypt = (CipherBlock *)ioFilterDriver(blockEncryptFilter); TEST_RESULT_INT( cipherBlockProcessSize(blockEncrypt, strlen(TEST_PLAINTEXT)), strlen(TEST_PLAINTEXT) + EVP_MAX_BLOCK_LENGTH + CIPHER_BLOCK_MAGIC_SIZE + PKCS5_SALT_LEN, "check process size"); bufLimitSet(encryptBuffer, CIPHER_BLOCK_MAGIC_SIZE); ioFilterProcessInOut(blockEncryptFilter, testPlainText, encryptBuffer); TEST_RESULT_INT(bufUsed(encryptBuffer), CIPHER_BLOCK_MAGIC_SIZE, "cipher size is magic size"); TEST_RESULT_BOOL(ioFilterInputSame(blockEncryptFilter), true, "filter needs same input"); bufLimitSet(encryptBuffer, CIPHER_BLOCK_MAGIC_SIZE + PKCS5_SALT_LEN); ioFilterProcessInOut(blockEncryptFilter, testPlainText, encryptBuffer); TEST_RESULT_BOOL(ioFilterInputSame(blockEncryptFilter), false, "filter does not need same input"); TEST_RESULT_BOOL(blockEncrypt->saltDone, true, "salt done is true"); TEST_RESULT_BOOL(blockEncrypt->processDone, true, "process done is true"); TEST_RESULT_INT(blockEncrypt->headerSize, 0, "header size is 0"); TEST_RESULT_INT(bufUsed(encryptBuffer), CIPHER_BLOCK_HEADER_SIZE, "cipher size is header len"); TEST_RESULT_INT( cipherBlockProcessSize(blockEncrypt, strlen(TEST_PLAINTEXT)), strlen(TEST_PLAINTEXT) + EVP_MAX_BLOCK_LENGTH, "check process size"); bufLimitSet( encryptBuffer, CIPHER_BLOCK_MAGIC_SIZE + PKCS5_SALT_LEN + (size_t)EVP_CIPHER_block_size(blockEncrypt->cipher) / 2); ioFilterProcessInOut(blockEncryptFilter, testPlainText, encryptBuffer); bufLimitSet( encryptBuffer, CIPHER_BLOCK_MAGIC_SIZE + PKCS5_SALT_LEN + (size_t)EVP_CIPHER_block_size(blockEncrypt->cipher)); ioFilterProcessInOut(blockEncryptFilter, testPlainText, encryptBuffer); bufLimitClear(encryptBuffer); TEST_RESULT_INT( bufUsed(encryptBuffer), CIPHER_BLOCK_HEADER_SIZE + (size_t)EVP_CIPHER_block_size(blockEncrypt->cipher), "cipher size increases by one block"); TEST_RESULT_BOOL(ioFilterDone(blockEncryptFilter), false, "filter is not done"); ioFilterProcessInOut(blockEncryptFilter, NULL, encryptBuffer); TEST_RESULT_INT( bufUsed(encryptBuffer), CIPHER_BLOCK_HEADER_SIZE + (size_t)(EVP_CIPHER_block_size(blockEncrypt->cipher) * 2), "cipher size increases by one block on flush"); TEST_RESULT_BOOL(ioFilterDone(blockEncryptFilter), true, "filter is done"); ioFilterFree(blockEncryptFilter); // Decrypt in one pass // ------------------------------------------------------------------------------------------------------------------------- Buffer *decryptBuffer = bufNew(TEST_BUFFER_SIZE); IoFilter *blockDecryptFilter = cipherBlockNew(cipherModeDecrypt, cipherTypeAes256Cbc, testPass, HASH_TYPE_SHA1_STR); blockDecryptFilter = cipherBlockNewVar(ioFilterParamList(blockDecryptFilter)); CipherBlock *blockDecrypt = (CipherBlock *)ioFilterDriver(blockDecryptFilter); TEST_RESULT_INT( cipherBlockProcessSize(blockDecrypt, bufUsed(encryptBuffer)), bufUsed(encryptBuffer) + EVP_MAX_BLOCK_LENGTH, "check process size"); ioFilterProcessInOut(blockDecryptFilter, encryptBuffer, decryptBuffer); TEST_RESULT_INT(bufUsed(decryptBuffer), EVP_CIPHER_block_size(blockDecrypt->cipher), "decrypt size is one block"); ioFilterProcessInOut(blockDecryptFilter, NULL, decryptBuffer); TEST_RESULT_INT(bufUsed(decryptBuffer), strlen(TEST_PLAINTEXT) * 2, "check final decrypt size"); TEST_RESULT_STR_Z(strNewBuf(decryptBuffer), TEST_PLAINTEXT TEST_PLAINTEXT, "check final decrypt buffer"); ioFilterFree(blockDecryptFilter); // Decrypt in small chunks to test buffering // ------------------------------------------------------------------------------------------------------------------------- blockDecryptFilter = cipherBlockNew(cipherModeDecrypt, cipherTypeAes256Cbc, testPass, NULL); blockDecrypt = (CipherBlock *)ioFilterDriver(blockDecryptFilter); bufUsedZero(decryptBuffer); ioFilterProcessInOut(blockDecryptFilter, bufNewC(bufPtr(encryptBuffer), CIPHER_BLOCK_MAGIC_SIZE), decryptBuffer); TEST_RESULT_INT(bufUsed(decryptBuffer), 0, "no decrypt since header read is not complete"); TEST_RESULT_BOOL(blockDecrypt->saltDone, false, "salt done is false"); TEST_RESULT_BOOL(blockDecrypt->processDone, false, "process done is false"); TEST_RESULT_INT(blockDecrypt->headerSize, CIPHER_BLOCK_MAGIC_SIZE, "check header size"); TEST_RESULT_BOOL( memcmp(blockDecrypt->header, CIPHER_BLOCK_MAGIC, CIPHER_BLOCK_MAGIC_SIZE) == 0, true, "check header magic"); ioFilterProcessInOut( blockDecryptFilter, bufNewC(bufPtr(encryptBuffer) + CIPHER_BLOCK_MAGIC_SIZE, PKCS5_SALT_LEN), decryptBuffer); TEST_RESULT_INT(bufUsed(decryptBuffer), 0, "no decrypt since no data processed yet"); TEST_RESULT_BOOL(blockDecrypt->saltDone, true, "salt done is true"); TEST_RESULT_BOOL(blockDecrypt->processDone, false, "process done is false"); TEST_RESULT_INT(blockDecrypt->headerSize, CIPHER_BLOCK_MAGIC_SIZE, "check header size (not increased)"); TEST_RESULT_BOOL( memcmp( blockDecrypt->header + CIPHER_BLOCK_MAGIC_SIZE, bufPtr(encryptBuffer) + CIPHER_BLOCK_MAGIC_SIZE, PKCS5_SALT_LEN) == 0, true, "check header salt"); ioFilterProcessInOut( blockDecryptFilter, bufNewC(bufPtr(encryptBuffer) + CIPHER_BLOCK_HEADER_SIZE, bufUsed(encryptBuffer) - CIPHER_BLOCK_HEADER_SIZE), decryptBuffer); TEST_RESULT_INT(bufUsed(decryptBuffer), EVP_CIPHER_block_size(blockDecrypt->cipher), "decrypt size is one block"); ioFilterProcessInOut(blockDecryptFilter, NULL, decryptBuffer); TEST_RESULT_INT(bufUsed(decryptBuffer), strlen(TEST_PLAINTEXT) * 2, "check final decrypt size"); TEST_RESULT_STR_Z(strNewBuf(decryptBuffer), TEST_PLAINTEXT TEST_PLAINTEXT, "check final decrypt buffer"); ioFilterFree(blockDecryptFilter); // Encrypt zero byte file and decrypt it // ------------------------------------------------------------------------------------------------------------------------- blockEncryptFilter = cipherBlockNew(cipherModeEncrypt, cipherTypeAes256Cbc, testPass, NULL); blockEncrypt = (CipherBlock *)ioFilterDriver(blockEncryptFilter); bufUsedZero(encryptBuffer); ioFilterProcessInOut(blockEncryptFilter, NULL, encryptBuffer); TEST_RESULT_INT(bufUsed(encryptBuffer), 32, "check remaining size"); ioFilterFree(blockEncryptFilter); blockDecryptFilter = cipherBlockNew(cipherModeDecrypt, cipherTypeAes256Cbc, testPass, NULL); blockDecrypt = (CipherBlock *)ioFilterDriver(blockDecryptFilter); bufUsedZero(decryptBuffer); ioFilterProcessInOut(blockDecryptFilter, encryptBuffer, decryptBuffer); TEST_RESULT_INT(bufUsed(decryptBuffer), 0, "0 bytes processed"); ioFilterProcessInOut(blockDecryptFilter, NULL, decryptBuffer); TEST_RESULT_INT(bufUsed(decryptBuffer), 0, "0 bytes on flush"); ioFilterFree(blockDecryptFilter); // Invalid cipher header // ------------------------------------------------------------------------------------------------------------------------- blockDecryptFilter = cipherBlockNew(cipherModeDecrypt, cipherTypeAes256Cbc, testPass, NULL); blockDecrypt = (CipherBlock *)ioFilterDriver(blockDecryptFilter); TEST_ERROR( ioFilterProcessInOut(blockDecryptFilter, BUFSTRDEF("1234567890123456"), decryptBuffer), CryptoError, "cipher header invalid"); ioFilterFree(blockDecryptFilter); // Invalid encrypted data cannot be flushed // ------------------------------------------------------------------------------------------------------------------------- blockDecryptFilter = cipherBlockNew(cipherModeDecrypt, cipherTypeAes256Cbc, testPass, NULL); blockDecrypt = (CipherBlock *)ioFilterDriver(blockDecryptFilter); bufUsedZero(decryptBuffer); ioFilterProcessInOut(blockDecryptFilter, BUFSTRDEF(CIPHER_BLOCK_MAGIC "12345678"), decryptBuffer); ioFilterProcessInOut(blockDecryptFilter, BUFSTRDEF("1234567890123456"), decryptBuffer); TEST_ERROR(ioFilterProcessInOut(blockDecryptFilter, NULL, decryptBuffer), CryptoError, "unable to flush"); ioFilterFree(blockDecryptFilter); // File with no header should not flush // ------------------------------------------------------------------------------------------------------------------------- blockDecryptFilter = cipherBlockNew(cipherModeDecrypt, cipherTypeAes256Cbc, testPass, NULL); blockDecrypt = (CipherBlock *)ioFilterDriver(blockDecryptFilter); bufUsedZero(decryptBuffer); TEST_ERROR(ioFilterProcessInOut(blockDecryptFilter, NULL, decryptBuffer), CryptoError, "cipher header missing"); ioFilterFree(blockDecryptFilter); // File with header only should error // ------------------------------------------------------------------------------------------------------------------------- blockDecryptFilter = cipherBlockNew(cipherModeDecrypt, cipherTypeAes256Cbc, testPass, NULL); blockDecrypt = (CipherBlock *)ioFilterDriver(blockDecryptFilter); bufUsedZero(decryptBuffer); ioFilterProcessInOut(blockDecryptFilter, BUFSTRDEF(CIPHER_BLOCK_MAGIC "12345678"), decryptBuffer); TEST_ERROR(ioFilterProcessInOut(blockDecryptFilter, NULL, decryptBuffer), CryptoError, "unable to flush"); ioFilterFree(blockDecryptFilter); // Helper function // ------------------------------------------------------------------------------------------------------------------------- IoFilterGroup *filterGroup = ioFilterGroupNew(); TEST_RESULT_PTR( cipherBlockFilterGroupAdd(filterGroup, cipherTypeNone, cipherModeEncrypt, NULL), filterGroup, " no filter add"); TEST_RESULT_UINT(ioFilterGroupSize(filterGroup), 0, " check no filter add"); TEST_RESULT_VOID( cipherBlockFilterGroupAdd(filterGroup, cipherTypeAes256Cbc, cipherModeEncrypt, STRDEF("X")), " filter add"); TEST_RESULT_UINT(ioFilterGroupSize(filterGroup), 1, " check filter add"); } // ***************************************************************************************************************************** if (testBegin("CryptoHash")) { IoFilter *hash = NULL; TEST_ERROR(cryptoHashNew(strNew(BOGUS_STR)), AssertError, "unable to load hash 'BOGUS'"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(hash, cryptoHashNew(strNew(HASH_TYPE_SHA1)), "create sha1 hash"); TEST_RESULT_VOID(ioFilterFree(hash), " free hash"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(hash, cryptoHashNewVar(varVarLst(jsonToVar(strNewFmt("[\"%s\"]", HASH_TYPE_SHA1)))), "create sha1 hash"); TEST_RESULT_STR_Z(bufHex(cryptoHash((CryptoHash *)ioFilterDriver(hash))), HASH_TYPE_SHA1_ZERO, " check empty hash"); TEST_RESULT_STR_Z( bufHex(cryptoHash((CryptoHash *)ioFilterDriver(hash))), HASH_TYPE_SHA1_ZERO, " check empty hash again"); TEST_RESULT_VOID(ioFilterFree(hash), " free hash"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(hash, cryptoHashNew(strNew(HASH_TYPE_SHA1)), "create sha1 hash"); TEST_RESULT_VOID(ioFilterProcessIn(hash, BUFSTRZ("1")), " add 1"); TEST_RESULT_VOID(ioFilterProcessIn(hash, BUFSTR(strNew("2"))), " add 2"); TEST_RESULT_VOID(ioFilterProcessIn(hash, BUFSTRDEF("3")), " add 3"); TEST_RESULT_VOID(ioFilterProcessIn(hash, BUFSTRDEF("4")), " add 4"); TEST_RESULT_VOID(ioFilterProcessIn(hash, BUFSTRDEF("5")), " add 5"); TEST_RESULT_STR_Z(varStr(ioFilterResult(hash)), "8cb2237d0679ca88db6464eac60da96345513964", " check small hash"); TEST_RESULT_VOID(ioFilterFree(hash), " free hash"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(hash, cryptoHashNew(strNew(HASH_TYPE_MD5)), "create md5 hash"); TEST_RESULT_STR_Z(varStr(ioFilterResult(hash)), HASH_TYPE_MD5_ZERO, " check empty hash"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(hash, cryptoHashNew(strNew(HASH_TYPE_SHA256)), "create sha256 hash"); TEST_RESULT_STR_Z(varStr(ioFilterResult(hash)), HASH_TYPE_SHA256_ZERO, " check empty hash"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_STR_Z( bufHex(cryptoHashOne(strNew(HASH_TYPE_SHA1), BUFSTRDEF("12345"))), "8cb2237d0679ca88db6464eac60da96345513964", " check small hash"); TEST_RESULT_STR_Z( bufHex(cryptoHashOne(strNew(HASH_TYPE_SHA1), BUFSTRDEF(""))), HASH_TYPE_SHA1_ZERO, " check empty hash"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_STR_Z( bufHex( cryptoHmacOne( strNew(HASH_TYPE_SHA256), BUFSTRDEF("AWS4wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"), BUFSTRDEF("20170412"))), "8b05c497afe9e1f42c8ada4cb88392e118649db1e5c98f0f0fb0a158bdd2dd76", " check hmac"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/debugOffTest.c000066400000000000000000000025151362531507100242620ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Debug Macros and Routines when Disabled ***********************************************************************************************************************************/ #include "common/macro.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("DEBUG")) { #ifdef DEBUG bool debug = true; #else bool debug = false; #endif TEST_RESULT_BOOL(debug, false, "DEBUG is not defined"); } // ***************************************************************************************************************************** if (testBegin("DEBUG_UNIT_EXTERN")) { const char *debugUnitExtern = STRINGIFY(DEBUG_UNIT_EXTERN); TEST_RESULT_Z(debugUnitExtern, "static", "DEBUG_UNIT_EXTERN is static"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/debugOnTest.c000066400000000000000000000160611362531507100241250ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Debug Macros and Routines ***********************************************************************************************************************************/ #include "common/log.h" #include "common/harnessLog.h" #include "common/macro.h" static void testFunction3(void) { FUNCTION_TEST_VOID(); FUNCTION_TEST_RETURN_VOID(); } static void testFunction2(void) { FUNCTION_LOG_VOID(logLevelTrace); testFunction3(); FUNCTION_LOG_RETURN_VOID(); } static int testFunction1( int paramInt, bool paramBool, bool *paramBoolP, bool **paramBoolPP, void *paramVoidP, double paramDouble, mode_t paramMode) { FUNCTION_LOG_BEGIN(logLevelDebug); FUNCTION_LOG_PARAM(INT, paramInt); FUNCTION_LOG_PARAM(BOOL, paramBool); FUNCTION_LOG_PARAM_P(BOOL, paramBoolP); FUNCTION_LOG_PARAM_PP(BOOL, paramBoolPP); FUNCTION_LOG_PARAM_P(VOID, paramVoidP); FUNCTION_LOG_PARAM(DOUBLE, paramDouble); FUNCTION_LOG_PARAM(MODE, paramMode); FUNCTION_LOG_END(); testFunction2(); FUNCTION_LOG_RETURN(INT, 1); } /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("objToLog(), ptrToLog, and strzToLog()")) { char buffer[STACK_TRACE_PARAM_MAX]; TEST_RESULT_INT(objToLog(NULL, "Object", buffer, 4), 4, "truncated null"); TEST_RESULT_Z(buffer, "nul", " check truncated null"); TEST_RESULT_INT(objToLog(NULL, "Object", buffer, sizeof(buffer)), 4, "full null"); TEST_RESULT_Z(buffer, "null", " check full null"); TEST_RESULT_INT(objToLog((void *)1, "Object", buffer, 4), 8, "truncated object"); TEST_RESULT_Z(buffer, "{Ob", " check truncated object"); TEST_RESULT_INT(objToLog((void *)1, "Object", buffer, sizeof(buffer)), 8, "full object"); TEST_RESULT_Z(buffer, "{Object}", " check full object"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_INT(ptrToLog(NULL, "char *", buffer, 4), 4, "truncated null"); TEST_RESULT_Z(buffer, "nul", " check truncated null"); TEST_RESULT_INT(ptrToLog(NULL, "char *", buffer, sizeof(buffer)), 4, "full null"); TEST_RESULT_Z(buffer, "null", " check full null"); TEST_RESULT_INT(ptrToLog((void *)1, "char *", buffer, 4), 8, "truncated pointer"); TEST_RESULT_Z(buffer, "(ch", " check truncated pointer"); TEST_RESULT_INT(ptrToLog((void *)1, "char *", buffer, sizeof(buffer)), 8, "full pointer"); TEST_RESULT_Z(buffer, "(char *)", " check full pointer"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_INT(strzToLog(NULL, buffer, 4), 4, "truncated null"); TEST_RESULT_Z(buffer, "nul", " check truncated null"); TEST_RESULT_INT(strzToLog(NULL, buffer, sizeof(buffer)), 4, "full null"); TEST_RESULT_Z(buffer, "null", " check full null"); TEST_RESULT_INT(strzToLog("test", buffer, 4), 6, "truncated string"); TEST_RESULT_Z(buffer, "\"te", " check truncated string"); TEST_RESULT_INT(strzToLog("test2", buffer, sizeof(buffer)), 7, "full string"); TEST_RESULT_Z(buffer, "\"test2\"", " check full string"); } // ***************************************************************************************************************************** if (testBegin("DEBUG")) { #ifdef DEBUG bool debug = true; #else bool debug = false; #endif TEST_RESULT_BOOL(debug, true, "DEBUG is defined"); } // ***************************************************************************************************************************** if (testBegin("DEBUG_UNIT_EXTERN")) { const char *debugUnitExtern = STRINGIFY(DEBUG_UNIT_EXTERN); TEST_RESULT_Z(debugUnitExtern, "", "DEBUG_UNIT_EXTERN is blank (extern)"); } // ***************************************************************************************************************************** if (testBegin("FUNCTION_DEBUG() and FUNCTION_LOG_RETURN()")) { harnessLogLevelSet(logLevelTrace); testFunction1(99, false, NULL, NULL, NULL, 1.17, 0755); harnessLogResult( "P00 DEBUG: test/module/common/debugOnTest::testFunction1: (paramInt: 99, paramBool: false, paramBoolP: null" ", paramBoolPP: null, paramVoidP: null, paramDouble: 1.17, paramMode: 0755)\n" "P00 TRACE: test/module/common/debugOnTest::testFunction2: (void)\n" "P00 TRACE: test/module/common/debugOnTest::testFunction2: => void\n" "P00 DEBUG: test/module/common/debugOnTest::testFunction1: => 1"); // ------------------------------------------------------------------------------------------------------------------------- bool testBool = true; bool *testBoolP = &testBool; bool **testBoolPP = &testBoolP; void *testVoidP = NULL; testFunction1(99, false, testBoolP, testBoolPP, testVoidP, 1.17, 0755); harnessLogResult( "P00 DEBUG: test/module/common/debugOnTest::testFunction1: (paramInt: 99, paramBool: false, paramBoolP: *true" ", paramBoolPP: **true, paramVoidP: null, paramDouble: 1.17, paramMode: 0755)\n" "P00 TRACE: test/module/common/debugOnTest::testFunction2: (void)\n" "P00 TRACE: test/module/common/debugOnTest::testFunction2: => void\n" "P00 DEBUG: test/module/common/debugOnTest::testFunction1: => 1"); testBoolP = NULL; testVoidP = (void *)1; testFunction1(99, false, testBoolP, testBoolPP, testVoidP, 1.17, 0755); harnessLogResult( "P00 DEBUG: test/module/common/debugOnTest::testFunction1: (paramInt: 99, paramBool: false, paramBoolP: null" ", paramBoolPP: *null, paramVoidP: *void, paramDouble: 1.17, paramMode: 0755)\n" "P00 TRACE: test/module/common/debugOnTest::testFunction2: (void)\n" "P00 TRACE: test/module/common/debugOnTest::testFunction2: => void\n" "P00 DEBUG: test/module/common/debugOnTest::testFunction1: => 1"); // ------------------------------------------------------------------------------------------------------------------------- harnessLogLevelReset(); testFunction1(55, true, NULL, NULL, NULL, 0.99, 0755); harnessLogResult(""); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/encodeTest.c000066400000000000000000000157441362531507100240060ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Binary to String Encode/Decode ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("base64")) { unsigned char *encode = (unsigned char *)"string_to_encode\r\n"; char destinationEncode[256]; encodeToStr(encodeBase64, encode, 1, destinationEncode); TEST_RESULT_Z(destinationEncode, "cw==", "1 character encode"); TEST_RESULT_INT(encodeToStrSize(encodeBase64, 1), strlen(destinationEncode), "check size"); encodeToStr(encodeBase64, encode, 2, destinationEncode); TEST_RESULT_Z(destinationEncode, "c3Q=", "2 character encode"); TEST_RESULT_INT(encodeToStrSize(encodeBase64, 2), strlen(destinationEncode), "check size"); encodeToStr(encodeBase64, encode, 3, destinationEncode); TEST_RESULT_Z(destinationEncode, "c3Ry", "3 character encode"); TEST_RESULT_INT(encodeToStrSize(encodeBase64, 3), strlen(destinationEncode), "check size"); encodeToStr(encodeBase64, encode, strlen((char *)encode) - 2, destinationEncode); TEST_RESULT_Z(destinationEncode, "c3RyaW5nX3RvX2VuY29kZQ==", "encode full string"); TEST_RESULT_INT(encodeToStrSize(encodeBase64, strlen((char *)encode) - 2), strlen(destinationEncode), "check size"); encodeToStr(encodeBase64, encode, strlen((char *)encode), destinationEncode); TEST_RESULT_Z(destinationEncode, "c3RyaW5nX3RvX2VuY29kZQ0K", "encode full string with \\r\\n"); TEST_RESULT_INT(encodeToStrSize(encodeBase64, strlen((char *)encode)), strlen(destinationEncode), "check size"); encodeToStr(encodeBase64, encode, strlen((char *)encode) + 1, destinationEncode); TEST_RESULT_Z(destinationEncode, "c3RyaW5nX3RvX2VuY29kZQ0KAA==", "encode full string with \\r\\n and null"); TEST_RESULT_INT(encodeToStrSize(encodeBase64, strlen((char *)encode) + 1), strlen(destinationEncode), "check size"); TEST_ERROR(encodeToStr(999, encode, strlen((char *)encode), destinationEncode), AssertError, "invalid encode type 999"); TEST_ERROR(encodeToStrSize(999, strlen((char *)encode)), AssertError, "invalid encode type 999"); // ------------------------------------------------------------------------------------------------------------------------- unsigned char destinationDecode[256]; memset(destinationDecode, 0xFF, sizeof(destinationDecode)); const char *decode = "c3RyaW5nX3RvX2VuY29kZQ0KAA=="; decodeToBin(encodeBase64, decode, destinationDecode); TEST_RESULT_Z(destinationDecode, encode, "full string with \\r\\n and null decode"); TEST_RESULT_INT(destinationDecode[strlen((char *)encode) + 1], 0xFF, "check for overrun"); TEST_RESULT_INT(decodeToBinSize(encodeBase64, decode), strlen((char *)encode) + 1, "check size"); memset(destinationDecode, 0xFF, sizeof(destinationDecode)); decode = "c3RyaW5nX3RvX2VuY29kZQ0K"; decodeToBin(encodeBase64, decode, destinationDecode); TEST_RESULT_INT(memcmp(destinationDecode, encode, strlen((char *)encode)), 0, "full string with \\r\\n decode"); TEST_RESULT_INT(destinationDecode[strlen((char *)encode)], 0xFF, "check for overrun"); TEST_RESULT_INT(decodeToBinSize(encodeBase64, decode), strlen((char *)encode), "check size"); memset(destinationDecode, 0xFF, sizeof(destinationDecode)); decode = "c3RyaW5nX3RvX2VuY29kZQ=="; decodeToBin(encodeBase64, decode, destinationDecode); TEST_RESULT_INT(memcmp(destinationDecode, encode, strlen((char *)encode) - 2), 0, "full string decode"); TEST_RESULT_INT(destinationDecode[strlen((char *)encode) - 2], 0xFF, "check for overrun"); TEST_RESULT_INT(decodeToBinSize(encodeBase64, decode), strlen((char *)encode) - 2, "check size"); memset(destinationDecode, 0xFF, sizeof(destinationDecode)); decode = "c3Ry"; decodeToBin(encodeBase64, decode, destinationDecode); TEST_RESULT_INT(memcmp(destinationDecode, encode, 3), 0, "3 character decode"); TEST_RESULT_INT(destinationDecode[3], 0xFF, "check for overrun"); TEST_RESULT_INT(decodeToBinSize(encodeBase64, decode), 3, "check size"); memset(destinationDecode, 0xFF, sizeof(destinationDecode)); decode = "c3Q="; decodeToBin(encodeBase64, decode, destinationDecode); TEST_RESULT_INT(memcmp(destinationDecode, encode, 2), 0, "2 character decode"); TEST_RESULT_INT(destinationDecode[2], 0xFF, "check for overrun"); TEST_RESULT_INT(decodeToBinSize(encodeBase64, decode), 2, "check size"); memset(destinationDecode, 0xFF, sizeof(destinationDecode)); decode = "cw=="; decodeToBin(encodeBase64, decode, destinationDecode); TEST_RESULT_INT(memcmp(destinationDecode, encode, 1), 0, "1 character decode"); TEST_RESULT_INT(destinationDecode[1], 0xFF, "check for overrun"); TEST_RESULT_INT(decodeToBinSize(encodeBase64, decode), 1, "check size"); TEST_ERROR(decodeToBin(9999, decode, destinationDecode), AssertError, "invalid encode type 9999"); TEST_ERROR(decodeToBinSize(9999, decode), AssertError, "invalid encode type 9999"); TEST_ERROR(decodeToBin(encodeBase64, "cc$=", destinationDecode), FormatError, "base64 invalid character found at position 2"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(decodeToBinValidate(encodeBase64, "c3"), FormatError, "base64 size 2 is not evenly divisible by 4"); TEST_ERROR( decodeToBinValidate(encodeBase64, "c==="), FormatError, "base64 '=' character may only appear in last two positions"); TEST_ERROR( decodeToBinValidate(encodeBase64, "cc=c"), FormatError, "base64 last character must be '=' if second to last is"); TEST_ERROR(decodeToBinValidate(9999, "cc=c"), AssertError, "invalid encode type 9999"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(decodeToBinValid(encodeBase64, "CCCCCCCCCCC"), false, "base64 string not valid"); TEST_RESULT_BOOL(decodeToBinValid(encodeBase64, "CCCCCCCCCCCC"), true, "base64 string valid"); TEST_ERROR(decodeToBinValid(9999, "CCCCCCCCCCCC"), AssertError, "invalid encode type 9999"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/errorTest.c000066400000000000000000000263501362531507100236750ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Error Handling ***********************************************************************************************************************************/ #include #include "common/harnessFork.h" /*********************************************************************************************************************************** Declare some error locally because real errors won't work for some tests -- they could also break as errors change ***********************************************************************************************************************************/ ERROR_DECLARE(TestParent1Error); ERROR_DECLARE(TestParent2Error); ERROR_DECLARE(TestChildError); ERROR_DEFINE(101, TestParent1Error, TestParent1Error); ERROR_DEFINE(102, TestParent2Error, TestParent1Error); ERROR_DEFINE(200, TestChildError, TestParent2Error); /*********************************************************************************************************************************** testTryRecurse - test to blow up try stack ***********************************************************************************************************************************/ volatile int testTryRecurseTotal = 0; bool testTryRecurseCatch = false; bool testTryRecurseFinally = false; void testTryRecurse(void) { TRY_BEGIN() { testTryRecurseTotal++; assert(errorContext.tryTotal == testTryRecurseTotal + 1); testTryRecurse(); } CATCH(MemoryError) { testTryRecurseCatch = true; // {uncoverable - catch should never be executed} } FINALLY() { testTryRecurseFinally = true; } TRY_END(); } // {uncoverable - function throws error, never returns} /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("check that try stack is initialized correctly")) { assert(errorContext.tryTotal == 0); } // ***************************************************************************************************************************** if (testBegin("errorTypeExtends")) { assert(errorTypeExtends(&TestParent1Error, &TestParent1Error)); assert(errorTypeExtends(&TestChildError, &TestParent1Error)); assert(errorTypeExtends(&TestChildError, &TestParent2Error)); assert(!errorTypeExtends(&TestChildError, &TestChildError)); } // ***************************************************************************************************************************** if (testBegin("TRY with no errors")) { volatile bool tryDone = false; bool catchDone = false; bool finallyDone = false; TRY_BEGIN() { assert(errorContext.tryTotal == 1); tryDone = true; } CATCH_ANY() { catchDone = true; // {uncoverable - catch should never be executed} } FINALLY() { assert(errorContext.tryList[1].state == errorStateFinal); finallyDone = true; } TRY_END(); assert(tryDone); assert(!catchDone); assert(finallyDone); assert(errorContext.tryTotal == 0); } // ***************************************************************************************************************************** if (testBegin("TRY with multiple catches")) { volatile bool tryDone = false; volatile bool catchDone = false; volatile bool finallyDone = false; assert(errorTryDepth() == 0); TRY_BEGIN() { assert(errorTryDepth() == 1); TRY_BEGIN() { assert(errorTryDepth() == 2); TRY_BEGIN() { assert(errorTryDepth() == 3); TRY_BEGIN() { assert(errorTryDepth() == 4); tryDone = true; char bigMessage[sizeof(messageBuffer) * 32]; memset(bigMessage, 'A', sizeof(bigMessage)); THROW(AssertError, bigMessage); } TRY_END(); } CATCH(AssertError) { // Finally below should run even though this error has been rethrown RETHROW(); } FINALLY() { finallyDone = true; } TRY_END(); } CATCH_ANY() { RETHROW(); } TRY_END(); } CATCH(MemoryError) { assert(false); // {uncoverable - catch should never be executed} } CATCH(RuntimeError) { assert(errorTryDepth() == 1); assert(errorContext.tryList[1].state == errorStateCatch); assert(strlen(errorMessage()) == sizeof(messageBuffer) - 1); catchDone = true; } TRY_END(); assert(errorTryDepth() == 0); assert(tryDone); assert(catchDone); assert(finallyDone); assert(errorContext.tryTotal == 0); } // ***************************************************************************************************************************** if (testBegin("too deep recursive TRY_ERROR()")) { volatile bool tryDone = false; bool catchDone = false; bool finallyDone = false; TRY_BEGIN() { tryDone = true; testTryRecurse(); } CATCH(AssertError) { assert(errorCode() == AssertError.code); assert(strcmp(errorFileName(), "test/module/common/errorTest.c") == 0); assert(strcmp(errorFunctionName(), "testTryRecurse") == 0); assert(errorFileLine() == 29); assert( strcmp(errorStackTrace(), "test/module/common/errorTest:testTryRecurse:29:(test build required for parameters)") == 0); assert(strcmp(errorMessage(), "too many nested try blocks") == 0); assert(strcmp(errorName(), AssertError.name) == 0); assert(errorType() == &AssertError); assert(errorTypeCode(errorType()) == AssertError.code); assert(strcmp(errorTypeName(errorType()), AssertError.name) == 0); catchDone = true; } FINALLY() { finallyDone = true; } TRY_END(); assert(tryDone); assert(catchDone); assert(finallyDone); assert(errorContext.tryTotal == 0); // This is only ERROR_TRY_MAX - 1 because one try was used up by the wrapper above the recursive function assert(testTryRecurseTotal == ERROR_TRY_MAX - 1); assert(!testTryRecurseCatch); assert(testTryRecurseFinally); } // ***************************************************************************************************************************** if (testBegin("THROW_CODE() and THROW_CODE_FMT()")) { TRY_BEGIN() { THROW_CODE(25, "message"); } CATCH_ANY() { assert(errorCode() == 25); assert(strcmp(errorMessage(), "message") == 0); } TRY_END(); // ------------------------------------------------------------------------------------------------------------------------- TRY_BEGIN() { THROW_CODE_FMT(122, "message %d", 1); } CATCH_ANY() { assert(errorCode() == 122); assert(strcmp(errorMessage(), "message 1") == 0); } TRY_END(); // ------------------------------------------------------------------------------------------------------------------------- TRY_BEGIN() { THROW_CODE(777, "message"); } CATCH_ANY() { assert(errorCode() == UnknownError.code); assert(strcmp(errorMessage(), "message") == 0); } TRY_END(); } // ***************************************************************************************************************************** if (testBegin("THROW_SYS_ERROR() and THROW_SYS_ERROR_FMT()")) { THROW_ON_SYS_ERROR_FMT(false, AssertError, "no error"); TRY_BEGIN() { errno = E2BIG; THROW_SYS_ERROR(AssertError, "message"); } CATCH_ANY() { printf("%s\n", errorMessage()); assert(errorCode() == AssertError.code); assert(strcmp(errorMessage(), "message: [7] Argument list too long") == 0); } TRY_END(); // ------------------------------------------------------------------------------------------------------------------------- TRY_BEGIN() { errno = 0; THROW_SYS_ERROR(AssertError, "message"); } CATCH_ANY() { printf("%s\n", errorMessage()); assert(errorCode() == AssertError.code); assert(strcmp(errorMessage(), "message") == 0); } TRY_END(); // ------------------------------------------------------------------------------------------------------------------------- TRY_BEGIN() { errno = EIO; THROW_SYS_ERROR_FMT(AssertError, "message %d", 1); } CATCH_ANY() { printf("%s\n", errorMessage()); assert(errorCode() == AssertError.code); assert(strcmp(errorMessage(), "message 1: [5] Input/output error") == 0); } TRY_END(); // ------------------------------------------------------------------------------------------------------------------------- TRY_BEGIN() { errno = 0; THROW_SYS_ERROR_FMT(AssertError, "message %d", 1); } CATCH_ANY() { printf("%s\n", errorMessage()); assert(errorCode() == AssertError.code); assert(strcmp(errorMessage(), "message 1") == 0); } TRY_END(); } // ***************************************************************************************************************************** if (testBegin("Uncaught error")) { // Test in a fork so the process does not actually exit HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(UnhandledError.code, false) { THROW(TestChildError, "does not get caught!"); } HARNESS_FORK_CHILD_END(); } HARNESS_FORK_END(); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/execTest.c000066400000000000000000000135101362531507100234620ustar00rootroot00000000000000/*********************************************************************************************************************************** Execute Process ***********************************************************************************************************************************/ #include "common/harnessFork.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("Exec")) { Exec *exec = NULL; TEST_ASSIGN(exec, execNew(strNew("catt"), NULL, strNew("cat"), 1000), "invalid exec"); TEST_RESULT_VOID(execOpen(exec), "open invalid exec"); TEST_RESULT_VOID(ioWriteStrLine(execIoWrite(exec), EMPTY_STR), "write invalid exec"); sleep(1); TEST_ERROR( ioWriteFlush(execIoWrite(exec)), ExecuteError, "cat terminated unexpectedly [102]: unable to execute 'catt': [2] No such file or directory"); TEST_RESULT_VOID(execFree(exec), "free exec"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(exec, execNew(strNew("cat"), NULL, strNew("cat"), 1000), "new cat exec"); TEST_RESULT_PTR(execMemContext(exec), exec->memContext, "get mem context"); TEST_RESULT_INT(execHandleRead(exec), exec->handleRead, "check read handle"); TEST_RESULT_VOID(execOpen(exec), "open cat exec"); String *message = strNew("ACKBYACK"); TEST_RESULT_VOID(ioWriteStrLine(execIoWrite(exec), message), "write cat exec"); ioWriteFlush(execIoWrite(exec)); TEST_RESULT_STR(ioReadLine(execIoRead(exec)), message, "read cat exec"); TEST_RESULT_VOID(execFree(exec), "free exec"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(exec, execNew(strNew("cat"), NULL, strNew("cat"), 1000), "new cat exec"); TEST_RESULT_VOID(execOpen(exec), "open cat exec"); close(exec->handleWrite); TEST_ERROR(strPtr(ioReadLine(execIoRead(exec))), UnknownError, "cat terminated unexpectedly [0]"); TEST_RESULT_VOID(execFree(exec), "free exec"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(exec, execNew(strNew("cat"), NULL, strNew("cat"), 1000), "new cat exec"); TEST_RESULT_VOID(execOpen(exec), "open cat exec"); kill(exec->processId, SIGKILL); TEST_ERROR(strPtr(ioReadLine(execIoRead(exec))), ExecuteError, "cat terminated unexpectedly on signal 9"); TEST_RESULT_VOID(execFree(exec), "free exec"); // ------------------------------------------------------------------------------------------------------------------------- StringList *option = strLstNew(); strLstAddZ(option, "-b"); TEST_ASSIGN(exec, execNew(strNew("cat"), option, strNew("cat"), 1000), "new cat exec"); TEST_RESULT_VOID(execOpen(exec), "open cat exec"); TEST_RESULT_VOID(ioWriteStrLine(execIoWrite(exec), message), "write cat exec"); ioWriteFlush(execIoWrite(exec)); TEST_RESULT_STR_Z(ioReadLine(execIoRead(exec)), " 1\tACKBYACK", "read cat exec"); TEST_RESULT_VOID(execFree(exec), "free exec"); // Run the same test as above but close all file descriptors first to ensure we don't accidentally close a required // descriptor while running dup2()/close() between the fork() and the exec(). // ------------------------------------------------------------------------------------------------------------------------- HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, false) { // This is not really fd max but for the purposes of testing is fine -- we won't have more than 64 fds open for (int fd = 0; fd < 64; fd++) close(fd); StringList *option = strLstNew(); strLstAddZ(option, "-b"); TEST_ASSIGN(exec, execNew(strNew("cat"), option , strNew("cat"), 1000), "new cat exec"); TEST_RESULT_VOID(execOpen(exec), "open cat exec"); TEST_RESULT_VOID(ioWriteStrLine(execIoWrite(exec), message), "write cat exec"); ioWriteFlush(execIoWrite(exec)); TEST_RESULT_STR_Z(ioReadLine(execIoRead(exec)), " 1\tACKBYACK", "read cat exec"); TEST_RESULT_VOID(execFree(exec), "free exec"); } HARNESS_FORK_CHILD_END(); } HARNESS_FORK_END(); // ------------------------------------------------------------------------------------------------------------------------- option = strLstNew(); strLstAddZ(option, "2"); TEST_ASSIGN(exec, execNew(strNew("sleep"), option, strNew("sleep"), 1000), "new sleep exec"); TEST_RESULT_VOID(execOpen(exec), "open cat exec"); TEST_ERROR(execFreeResource(exec), ExecuteError, "sleep did not exit when expected"); TEST_ERROR(ioReadLine(execIoRead(exec)), FileReadError, "unable to select from sleep read: [9] Bad file descriptor"); ioWriteStrLine(execIoWrite(exec), strNew("")); TEST_ERROR(ioWriteFlush(execIoWrite(exec)), FileWriteError, "unable to write to sleep write: [9] Bad file descriptor"); sleepMSec(500); TEST_RESULT_VOID(execFree(exec), "sleep exited as expected"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/exitTest.c000066400000000000000000000123461362531507100235150ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Exit Routines ***********************************************************************************************************************************/ #include "common/error.h" #include "common/log.h" #include "config/config.h" #include "common/harnessFork.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("exitSignalName()")) { TEST_RESULT_Z(exitSignalName(signalTypeHup), "HUP", "SIGHUP name"); TEST_RESULT_Z(exitSignalName(signalTypeInt), "INT", "SIGINT name"); TEST_RESULT_Z(exitSignalName(signalTypeTerm), "TERM", "SIGTERM name"); TEST_ERROR(exitSignalName(signalTypeNone), AssertError, "no name for signal none"); } // ***************************************************************************************************************************** if (testBegin("exitInit() and exitOnSignal()")) { cfgInit(); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(errorTypeCode(&TermError), false) { exitInit(); raise(SIGTERM); } HARNESS_FORK_CHILD_END(); // {uncoverable - signal is raised in block} } HARNESS_FORK_END(); } // ***************************************************************************************************************************** if (testBegin("exitSafe()")) { cfgInit(); cfgCommandSet(cfgCmdNone, cfgCmdRoleDefault); TEST_RESULT_INT(exitSafe(0, false, signalTypeNone), 0, "exit with no command") // ------------------------------------------------------------------------------------------------------------------------- cfgInit(); cfgCommandSet(cfgCmdArchivePush, cfgCmdRoleDefault); TEST_RESULT_INT(exitSafe(0, false, signalTypeNone), 0, "exit with no error") harnessLogResult("P00 INFO: archive-push command end: completed successfully"); TEST_RESULT_INT(exitSafe(1, false, signalTypeNone), 1, "exit with no error") harnessLogResult("P00 INFO: archive-push command end: completed successfully"); // ------------------------------------------------------------------------------------------------------------------------- TRY_BEGIN() { THROW(RuntimeError, "test error message"); } CATCH_ANY() { exitSafe(0, true, signalTypeNone); harnessLogResult( "P00 ERROR: [122]: test error message\n" "P00 INFO: archive-push command end: aborted with exception [122]"); } TRY_END(); // ------------------------------------------------------------------------------------------------------------------------- harnessLogLevelSet(logLevelDebug); TRY_BEGIN() { THROW(RuntimeError, "test debug error message"); } CATCH_ANY() { exitSafe(0, true, signalTypeNone); harnessLogResultRegExp( "P00 ERROR\\: \\[122\\]\\: test debug error message\n" " STACK TRACE\\:\n" " test\\/module\\/common\\/exitTest\\:testRun\\:.*\n" " test\\:main\\:.*\n"); } TRY_END(); harnessLogLevelReset(); // ------------------------------------------------------------------------------------------------------------------------- TRY_BEGIN() { THROW(AssertError, "test assert message"); } CATCH_ANY() { exitSafe(0, true, signalTypeNone); harnessLogResultRegExp( "P00 ASSERT\\: \\[025\\]\\: test assert message\n" " STACK TRACE\\:\n" " test/module/common/exitTest\\:testRun\\:.*\n" " test\\:main\\:.*\n"); } TRY_END(); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_INT( exitSafe(errorTypeCode(&TermError), false, signalTypeNone), errorTypeCode(&TermError), "exit on term with no signal"); harnessLogResult("P00 INFO: archive-push command end: terminated on signal from child process"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_INT( exitSafe(errorTypeCode(&TermError), false, signalTypeTerm), errorTypeCode(&TermError), "exit on term with SIGTERM"); harnessLogResult("P00 INFO: archive-push command end: terminated on signal [SIGTERM]"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/forkTest.c000066400000000000000000000032421362531507100235000ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Fork Handler ***********************************************************************************************************************************/ #include "common/harnessFork.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("forkSafe() and forkAndDetach()")) { int sessionId = getsid(0); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, false) { char buffer[1024]; forkDetach(); TEST_RESULT_BOOL(getsid(0) != sessionId, true, "new session id has been created"); TEST_RESULT_Z(getcwd(buffer, sizeof(buffer)), "/", "current working directory is '/'"); TEST_RESULT_INT(write(STDIN_FILENO, buffer, strlen(buffer)), -1, "write to stdin fails"); TEST_RESULT_INT(write(STDOUT_FILENO, buffer, strlen(buffer)), -1, "write to stdout fails"); TEST_RESULT_INT(write(STDERR_FILENO, buffer, strlen(buffer)), -1, "write to stderr fails"); } HARNESS_FORK_CHILD_END(); } HARNESS_FORK_END(); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/iniTest.c000066400000000000000000000224431362531507100233220ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Ini ***********************************************************************************************************************************/ #include "common/io/bufferRead.h" #include "common/type/buffer.h" #include "storage/posix/storage.h" /*********************************************************************************************************************************** Test callback to accumulate ini load results ***********************************************************************************************************************************/ static void testIniLoadCallback(void *data, const String *section, const String *key, const String *value) { strCatFmt((String *)data, "%s:%s:%s\n", strPtr(section), strPtr(key), strPtr(value)); } /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("iniLoad()")) { // Empty file // ------------------------------------------------------------------------------------------------------------------------- const Buffer *iniBuf = bufNew(0); String *result = strNew(""); TEST_RESULT_VOID(iniLoad(ioBufferReadNew(iniBuf), testIniLoadCallback, result), "load ini"); TEST_RESULT_STR_Z(result, "", " check ini"); // Invalid section // ------------------------------------------------------------------------------------------------------------------------- iniBuf = BUFSTRZ( " [section "); TEST_ERROR( iniLoad(ioBufferReadNew(iniBuf), testIniLoadCallback, result), FormatError, "ini section should end with ] at line 1: [section"); // Key outside of section // ------------------------------------------------------------------------------------------------------------------------- iniBuf = BUFSTRZ( "key=value\n"); TEST_ERROR( iniLoad(ioBufferReadNew(iniBuf), testIniLoadCallback, result), FormatError, "key/value found outside of section at line 1: key=value"); // Key outside of section // ------------------------------------------------------------------------------------------------------------------------- iniBuf = BUFSTRZ( "[section]\n" "key"); TEST_ERROR( iniLoad(ioBufferReadNew(iniBuf), testIniLoadCallback, result), FormatError, "missing '=' in key/value at line 2: key"); // Zero length key // ------------------------------------------------------------------------------------------------------------------------- iniBuf = BUFSTRZ( "[section]\n" "=value"); TEST_ERROR( iniLoad(ioBufferReadNew(iniBuf), testIniLoadCallback, result), FormatError, "key is zero-length at line 1: =value"); // One section // ------------------------------------------------------------------------------------------------------------------------- iniBuf = BUFSTRZ( "# comment\n" "[section1]\n" "key1=value1\n" "key2=value2"); result = strNew(""); TEST_RESULT_VOID(iniLoad(ioBufferReadNew(iniBuf), testIniLoadCallback, result), "load ini"); TEST_RESULT_STR_Z( result, "section1:key1:value1\n" "section1:key2:value2\n", " check ini"); // Two sections // ------------------------------------------------------------------------------------------------------------------------- iniBuf = BUFSTRZ( "# comment\n" "[section1]\n" "key1=value1\n" "key2=value2\n" "\n" "[section2]\n" "key1=\n" "\n" "key2=value2"); result = strNew(""); TEST_RESULT_VOID(iniLoad(ioBufferReadNew(iniBuf), testIniLoadCallback, result), "load ini"); TEST_RESULT_STR_Z( result, "section1:key1:value1\n" "section1:key2:value2\n" "section2:key1:\n" "section2:key2:value2\n", " check ini"); } // ***************************************************************************************************************************** if (testBegin("iniNew() and iniFree()")) { Ini *ini = NULL; TEST_ASSIGN(ini, iniNew(), "new ini"); TEST_RESULT_PTR_NE(ini->memContext, NULL, "mem context is set"); TEST_RESULT_PTR_NE(ini->store, NULL, "store is set"); TEST_RESULT_VOID(iniFree(ini), "free ini"); } // ***************************************************************************************************************************** if (testBegin("iniSet(), iniGet(), iniGetDefault(), iniSectionList(), and iniSectionKeyList()")) { Ini *ini = NULL; MEM_CONTEXT_TEMP_BEGIN() { TEST_ASSIGN(ini, iniNew(), "new ini"); TEST_RESULT_VOID(iniSet(ini, strNew("section1"), strNew("key1"), strNew("11")), "set section, key"); TEST_RESULT_VOID(iniSet(ini, strNew("section1"), strNew("key2"), strNew("1.234")), "set section, key"); TEST_RESULT_VOID(iniMove(ini, memContextPrior()), "move ini"); TEST_RESULT_VOID(iniMove(NULL, memContextPrior()), "move null ini"); } MEM_CONTEXT_TEMP_END(); TEST_RESULT_STR_Z(iniGet(ini, strNew("section1"), strNew("key1")), "11", "get section, key"); TEST_RESULT_STR_Z(iniGet(ini, strNew("section1"), strNew("key2")), "1.234", "get section, key"); TEST_ERROR(iniGet(ini, strNew("section2"), strNew("key2")), FormatError, "section 'section2', key 'key2' does not exist"); TEST_RESULT_STR_Z(iniGetDefault(ini, strNew("section1"), strNew("key1"), NULL), "11", "get section, key, int"); TEST_RESULT_PTR(iniGetDefault(ini, strNew("section2"), strNew("key2"), NULL), NULL, "get section, key, NULL"); TEST_RESULT_STR_Z(iniGetDefault(ini, strNew("section3"), strNew("key3"), strNew("true")), "true", "get section, key, bool"); TEST_RESULT_INT(strLstSize(iniSectionKeyList(ini, strNew("bogus"))), 0, "get keys for missing section"); TEST_RESULT_STR_Z(strLstJoin(iniSectionKeyList(ini, strNew("section1")), "|"), "key1|key2", "get keys for section"); TEST_RESULT_VOID(iniSet(ini, strNew("section2"), strNew("key2"), strNew("2")), "set section2, key"); TEST_RESULT_INT(strLstSize(iniSectionList(ini)), 2, "number of sections"); TEST_RESULT_STR_Z(strLstJoin(iniSectionList(ini), "|"), "section1|section2", "get sections"); TEST_RESULT_BOOL(iniSectionKeyIsList(ini, strNew("section1"), strNew("key1")), false, "single value is not list"); TEST_RESULT_VOID(iniSet(ini, strNew("section2"), strNew("key2"), strNew("7")), "set section2, key"); TEST_RESULT_BOOL(iniSectionKeyIsList(ini, strNew("section2"), strNew("key2")), true, "section2, key2 is a list"); TEST_RESULT_STR_Z(strLstJoin(iniGetList(ini, strNew("section2"), strNew("key2")), "|"), "2|7", "get list"); TEST_RESULT_PTR(iniGetList(ini, strNew("section2"), strNew("key-missing")), NULL, "get missing list"); TEST_RESULT_VOID(iniFree(ini), "free ini"); } // ***************************************************************************************************************************** if (testBegin("iniParse()")) { Ini *ini = NULL; String *content = NULL; // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(iniParse(iniNew(), NULL), "no content"); TEST_ERROR( iniParse(iniNew(), strNew("compress=y\n")), FormatError, "key/value found outside of section at line 1: compress=y"); TEST_ERROR(iniParse(iniNew(), strNew("[section\n")), FormatError, "ini section should end with ] at line 1: [section"); TEST_ERROR(iniParse(iniNew(), strNew("[section]\nkey")), FormatError, "missing '=' in key/value at line 2: key"); TEST_ERROR(iniParse(iniNew(), strNew("[section]\n =value")), FormatError, "key is zero-length at line 1: =value"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(ini, iniNew(), "new ini"); content = strNew ( "# Comment\n" "[global] \n" "compress=y \n" "\n" " [db]\n" "pg1-path = /path/to/pg" ); TEST_RESULT_VOID(iniParse(ini, content), "load ini"); TEST_RESULT_STR_Z(iniGet(ini, strNew("global"), strNew("compress")), "y", "get compress"); TEST_RESULT_STR_Z(iniGet(ini, strNew("db"), strNew("pg1-path")), "/path/to/pg", "get pg1-path"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/ioHttpTest.c000066400000000000000000000612121362531507100240070ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Http ***********************************************************************************************************************************/ #include #include "common/harnessTls.h" #include "common/time.h" /*********************************************************************************************************************************** Test server ***********************************************************************************************************************************/ static void testHttpServer(void) { if (fork() == 0) { harnessTlsServerInitDefault(); // Test no output from server harnessTlsServerAccept(); harnessTlsServerExpect( "GET / HTTP/1.1\r\n" "\r\n"); sleepMSec(600); harnessTlsServerClose(); // Test invalid http version harnessTlsServerAccept(); harnessTlsServerExpect( "GET / HTTP/1.1\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.0 200 OK\r\n"); harnessTlsServerClose(); // Test no space in status harnessTlsServerAccept(); harnessTlsServerExpect( "GET / HTTP/1.1\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.1 200OK\r\n"); harnessTlsServerClose(); // Test unexpected end of headers harnessTlsServerAccept(); harnessTlsServerExpect( "GET / HTTP/1.1\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.1 200 OK\r\n"); harnessTlsServerClose(); // Test missing colon in header harnessTlsServerAccept(); harnessTlsServerExpect( "GET / HTTP/1.1\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.1 200 OK\r\n" "header-value\r\n"); harnessTlsServerClose(); // Test invalid transfer encoding harnessTlsServerAccept(); harnessTlsServerExpect( "GET / HTTP/1.1\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.1 200 OK\r\n" "transfer-encoding:bogus\r\n"); harnessTlsServerClose(); // Test content length and transfer encoding both set harnessTlsServerAccept(); harnessTlsServerExpect( "GET / HTTP/1.1\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.1 200 OK\r\n" "transfer-encoding:chunked\r\n" "content-length:777\r\n" "\r\n"); harnessTlsServerClose(); // Test 5xx error with no retry harnessTlsServerAccept(); harnessTlsServerExpect( "GET / HTTP/1.1\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.1 503 Slow Down\r\n" "\r\n"); harnessTlsServerClose(); // Request with no content (with an internal error) harnessTlsServerAccept(); harnessTlsServerExpect( "GET /?name=%2Fpath%2FA%20Z.txt&type=test HTTP/1.1\r\n" "host:myhost.com\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.1 500 Internal Error\r\n" "Connection:close\r\n" "\r\n"); harnessTlsServerClose(); harnessTlsServerAccept(); harnessTlsServerExpect( "GET /?name=%2Fpath%2FA%20Z.txt&type=test HTTP/1.1\r\n" "host:myhost.com\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.1 200 OK\r\n" "key1:0\r\n" " key2 : value2\r\n" "Connection:ack\r\n" "\r\n"); // Head request with content-length but no content harnessTlsServerExpect( "HEAD / HTTP/1.1\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.1 200 OK\r\n" "content-length:380\r\n" "\r\n"); // Head request with transfer encoding but no content harnessTlsServerExpect( "HEAD / HTTP/1.1\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.1 200 OK\r\n" "Transfer-Encoding: chunked\r\n" "\r\n"); // Head request with connection close but no content harnessTlsServerExpect( "HEAD / HTTP/1.1\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.1 200 OK\r\n" "Connection:close\r\n" "\r\n"); harnessTlsServerClose(); harnessTlsServerAccept(); // Error with content (with a few slow down errors) harnessTlsServerExpect( "GET / HTTP/1.1\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.1 503 Slow Down\r\n" "content-length:3\r\n" "Connection:close\r\n" "\r\n" "123"); harnessTlsServerClose(); harnessTlsServerAccept(); harnessTlsServerExpect( "GET / HTTP/1.1\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.1 503 Slow Down\r\n" "Transfer-Encoding:chunked\r\n" "Connection:close\r\n" "\r\n" "0\r\n" "\r\n"); harnessTlsServerClose(); harnessTlsServerAccept(); harnessTlsServerExpect( "GET / HTTP/1.1\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.1 404 Not Found\r\n" "content-length:0\r\n" "\r\n"); // Error with content harnessTlsServerAccept(); harnessTlsServerExpect( "GET / HTTP/1.1\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.1 403 Auth Error\r\n" "content-length:7\r\n" "\r\n" "CONTENT"); // Request with content harnessTlsServerAccept(); harnessTlsServerExpect( "GET /path/file%201.txt HTTP/1.1\r\n" "content-length:30\r\n" "\r\n" "012345678901234567890123456789"); harnessTlsServerReply( "HTTP/1.1 200 OK\r\n" "Connection:close\r\n" "\r\n" "01234567890123456789012345678901"); harnessTlsServerClose(); // Request with eof before content complete with retry harnessTlsServerAccept(); harnessTlsServerExpect( "GET /path/file%201.txt HTTP/1.1\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.1 200 OK\r\n" "content-length:32\r\n" "\r\n" "0123456789012345678901234567890"); harnessTlsServerClose(); harnessTlsServerAccept(); harnessTlsServerExpect( "GET /path/file%201.txt HTTP/1.1\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.1 200 OK\r\n" "content-length:32\r\n" "\r\n" "01234567890123456789012345678901"); // Request with eof before content complete harnessTlsServerAccept(); harnessTlsServerExpect( "GET /path/file%201.txt HTTP/1.1\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.1 200 OK\r\n" "content-length:32\r\n" "\r\n" "0123456789012345678901234567890"); harnessTlsServerClose(); // Request with chunked content harnessTlsServerAccept(); harnessTlsServerExpect( "GET / HTTP/1.1\r\n" "\r\n"); harnessTlsServerReply( "HTTP/1.1 200 OK\r\n" "Transfer-Encoding:chunked\r\n" "\r\n" "20\r\n" "01234567890123456789012345678901\r\n" "10\r\n" "0123456789012345\r\n" "0\r\n" "\r\n"); harnessTlsServerClose(); exit(0); } } /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("httpUriEncode")) { TEST_RESULT_PTR(httpUriEncode(NULL, false), NULL, "null encodes to null"); TEST_RESULT_STR_Z(httpUriEncode(strNew("0-9_~/A Z.az"), false), "0-9_~%2FA%20Z.az", "non-path encoding"); TEST_RESULT_STR_Z(httpUriEncode(strNew("0-9_~/A Z.az"), true), "0-9_~/A%20Z.az", "path encoding"); } // ***************************************************************************************************************************** if (testBegin("httpLastModifiedToTime()")) { TEST_ERROR(httpLastModifiedToTime(STRDEF("Wed, 21 Bog 2015 07:28:00 GMT")), FormatError, "invalid month 'Bog'"); TEST_ERROR( httpLastModifiedToTime(STRDEF("Wed, 1 Oct 2015 07:28:00 GMT")), FormatError, "unable to convert base 10 string ' 1' to int"); TEST_RESULT_INT(httpLastModifiedToTime(STRDEF("Wed, 21 Oct 2015 07:28:00 GMT")), 1445412480, "convert gmt datetime"); } // ***************************************************************************************************************************** if (testBegin("HttpHeader")) { HttpHeader *header = NULL; MEM_CONTEXT_TEMP_BEGIN() { TEST_ASSIGN(header, httpHeaderNew(NULL), "new header"); TEST_RESULT_PTR(httpHeaderMove(header, memContextPrior()), header, "move to new context"); TEST_RESULT_PTR(httpHeaderMove(NULL, memContextPrior()), NULL, "move null to new context"); } MEM_CONTEXT_TEMP_END(); TEST_RESULT_PTR(httpHeaderAdd(header, strNew("key2"), strNew("value2")), header, "add header"); TEST_RESULT_PTR(httpHeaderPut(header, strNew("key2"), strNew("value2a")), header, "put header"); TEST_RESULT_PTR(httpHeaderAdd(header, strNew("key2"), strNew("value2b")), header, "add header"); TEST_RESULT_PTR(httpHeaderAdd(header, strNew("key1"), strNew("value1")), header, "add header"); TEST_RESULT_STR_Z(strLstJoin(httpHeaderList(header), ", "), "key1, key2", "header list"); TEST_RESULT_STR_Z(httpHeaderGet(header, strNew("key1")), "value1", "get value"); TEST_RESULT_STR_Z(httpHeaderGet(header, strNew("key2")), "value2a, value2b", "get value"); TEST_RESULT_PTR(httpHeaderGet(header, strNew(BOGUS_STR)), NULL, "get missing value"); TEST_RESULT_STR_Z(httpHeaderToLog(header), "{key1: 'value1', key2: 'value2a, value2b'}", "log output"); TEST_RESULT_VOID(httpHeaderFree(header), "free header"); // Redacted headers // ------------------------------------------------------------------------------------------------------------------------- StringList *redact = strLstNew(); strLstAddZ(redact, "secret"); TEST_ASSIGN(header, httpHeaderNew(redact), "new header with redaction"); httpHeaderAdd(header, strNew("secret"), strNew("secret-value")); httpHeaderAdd(header, strNew("public"), strNew("public-value")); TEST_RESULT_STR_Z(httpHeaderToLog(header), "{public: 'public-value', secret: }", "log output"); // Duplicate // ------------------------------------------------------------------------------------------------------------------------- redact = strLstNew(); strLstAddZ(redact, "public"); TEST_RESULT_STR_Z( httpHeaderToLog(httpHeaderDup(header, NULL)), "{public: 'public-value', secret: }", "dup and keep redactions"); TEST_RESULT_STR_Z( httpHeaderToLog(httpHeaderDup(header, redact)), "{public: , secret: 'secret-value'}", "dup and change redactions"); TEST_RESULT_PTR(httpHeaderDup(NULL, NULL), NULL, "dup null http header"); } // ***************************************************************************************************************************** if (testBegin("HttpQuery")) { HttpQuery *query = NULL; MEM_CONTEXT_TEMP_BEGIN() { TEST_ASSIGN(query, httpQueryNew(), "new query"); TEST_RESULT_PTR(httpQueryMove(query, memContextPrior()), query, "move to new context"); TEST_RESULT_PTR(httpQueryMove(NULL, memContextPrior()), NULL, "move null to new context"); } MEM_CONTEXT_TEMP_END(); TEST_RESULT_PTR(httpQueryRender(NULL), NULL, "null query renders null"); TEST_RESULT_PTR(httpQueryRender(query), NULL, "empty query renders null"); TEST_RESULT_PTR(httpQueryAdd(query, strNew("key2"), strNew("value2")), query, "add query"); TEST_ERROR(httpQueryAdd(query, strNew("key2"), strNew("value2")), AssertError, "key 'key2' already exists"); TEST_RESULT_PTR(httpQueryPut(query, strNew("key2"), strNew("value2a")), query, "put query"); TEST_RESULT_STR_Z(httpQueryRender(query), "key2=value2a", "render one query item"); TEST_RESULT_PTR(httpQueryAdd(query, strNew("key1"), strNew("value 1?")), query, "add query"); TEST_RESULT_STR_Z(strLstJoin(httpQueryList(query), ", "), "key1, key2", "query list"); TEST_RESULT_STR_Z(httpQueryRender(query), "key1=value%201%3F&key2=value2a", "render two query items"); TEST_RESULT_STR_Z(httpQueryGet(query, strNew("key1")), "value 1?", "get value"); TEST_RESULT_STR_Z(httpQueryGet(query, strNew("key2")), "value2a", "get value"); TEST_RESULT_PTR(httpQueryGet(query, strNew(BOGUS_STR)), NULL, "get missing value"); TEST_RESULT_STR_Z(httpQueryToLog(query), "{key1: 'value 1?', key2: 'value2a'}", "log output"); TEST_RESULT_VOID(httpQueryFree(query), "free query"); } // ***************************************************************************************************************************** if (testBegin("HttpClient")) { HttpClient *client = NULL; ioBufferSizeSet(35); // Reset statistics httpClientStatLocal = (HttpClientStat){0}; TEST_RESULT_PTR(httpClientStatStr(), NULL, "no stats yet"); TEST_ASSIGN( client, httpClientNew(strNew("localhost"), harnessTlsTestPort(), 500, testContainer(), NULL, NULL), "new client"); TEST_ERROR_FMT( httpClientRequest(client, strNew("GET"), strNew("/"), NULL, NULL, NULL, false), HostConnectError, "unable to connect to 'localhost:%u': [111] Connection refused", harnessTlsTestPort()); // Start http test server testHttpServer(); // Test no output from server TEST_ASSIGN( client, httpClientNew(harnessTlsTestHost(), harnessTlsTestPort(), 500, testContainer(), NULL, NULL), "new client"); client->timeout = 0; TEST_ERROR_FMT( httpClientRequest(client, strNew("GET"), strNew("/"), NULL, NULL, NULL, false), FileReadError, "timeout after 500ms waiting for read from '%s:%u'", strPtr(harnessTlsTestHost()), harnessTlsTestPort()); // Test invalid http version TEST_ERROR( httpClientRequest(client, strNew("GET"), strNew("/"), NULL, NULL, NULL, false), FormatError, "http version of response 'HTTP/1.0 200 OK' must be HTTP/1.1"); // Test no space in status TEST_ERROR( httpClientRequest(client, strNew("GET"), strNew("/"), NULL, NULL, NULL, false), FormatError, "response status '200OK' must have a space"); // Test unexpected end of headers TEST_ERROR( httpClientRequest(client, strNew("GET"), strNew("/"), NULL, NULL, NULL, false), FileReadError, "unexpected eof while reading line"); // Test missing colon in header TEST_ERROR( httpClientRequest(client, strNew("GET"), strNew("/"), NULL, NULL, NULL, false), FormatError, "header 'header-value' missing colon"); // Test invalid transfer encoding TEST_ERROR( httpClientRequest(client, strNew("GET"), strNew("/"), NULL, NULL, NULL, false), FormatError, "only 'chunked' is supported for 'transfer-encoding' header"); // Test content length and transfer encoding both set TEST_ERROR( httpClientRequest(client, strNew("GET"), strNew("/"), NULL, NULL, NULL, false), FormatError, "'transfer-encoding' and 'content-length' headers are both set"); // Test 5xx error with no retry TEST_ERROR(httpClientRequest(client, strNew("GET"), strNew("/"), NULL, NULL, NULL, false), ServiceError, "[503] Slow Down"); // Request with no content client->timeout = 2000; HttpHeader *headerRequest = httpHeaderNew(NULL); httpHeaderAdd(headerRequest, strNew("host"), strNew("myhost.com")); HttpQuery *query = httpQueryNew(); httpQueryAdd(query, strNew("name"), strNew("/path/A Z.txt")); httpQueryAdd(query, strNew("type"), strNew("test")); TEST_RESULT_VOID( httpClientRequest(client, strNew("GET"), strNew("/"), query, headerRequest, NULL, false), "request with no content"); TEST_RESULT_UINT(httpClientResponseCode(client), 200, " check response code"); TEST_RESULT_STR_Z(httpClientResponseMessage(client), "OK", " check response message"); TEST_RESULT_UINT(httpClientEof(client), true, " io is eof"); TEST_RESULT_STR_Z( httpHeaderToLog(httpClientResponseHeader(client)), "{connection: 'ack', key1: '0', key2: 'value2'}", " check response headers"); // Head request with content-length but no content TEST_RESULT_VOID( httpClientRequest(client, strNew("HEAD"), strNew("/"), NULL, httpHeaderNew(NULL), NULL, true), "head request with content-length"); TEST_RESULT_UINT(httpClientResponseCode(client), 200, " check response code"); TEST_RESULT_STR_Z(httpClientResponseMessage(client), "OK", " check response message"); TEST_RESULT_BOOL(httpClientEof(client), true, " io is eof"); TEST_RESULT_BOOL(httpClientBusy(client), false, " client is not busy"); TEST_RESULT_STR_Z( httpHeaderToLog(httpClientResponseHeader(client)), "{content-length: '380'}", " check response headers"); // Head request with transfer encoding but no content TEST_RESULT_VOID( httpClientRequest(client, strNew("HEAD"), strNew("/"), NULL, httpHeaderNew(NULL), NULL, true), "head request with transfer encoding"); TEST_RESULT_UINT(httpClientResponseCode(client), 200, " check response code"); TEST_RESULT_STR_Z(httpClientResponseMessage(client), "OK", " check response message"); TEST_RESULT_BOOL(httpClientEof(client), true, " io is eof"); TEST_RESULT_BOOL(httpClientBusy(client), false, " client is not busy"); TEST_RESULT_STR_Z( httpHeaderToLog(httpClientResponseHeader(client)), "{transfer-encoding: 'chunked'}", " check response headers"); // Head request with connection close but no content TEST_RESULT_VOID( httpClientRequest(client, strNew("HEAD"), strNew("/"), NULL, httpHeaderNew(NULL), NULL, true), "head request with connection close"); TEST_RESULT_UINT(httpClientResponseCode(client), 200, " check response code"); TEST_RESULT_STR_Z(httpClientResponseMessage(client), "OK", " check response message"); TEST_RESULT_BOOL(httpClientEof(client), true, " io is eof"); TEST_RESULT_BOOL(httpClientBusy(client), false, " client is not busy"); TEST_RESULT_STR_Z( httpHeaderToLog(httpClientResponseHeader(client)), "{connection: 'close'}", " check response headers"); // Error with content length 0 TEST_RESULT_VOID( httpClientRequest(client, strNew("GET"), strNew("/"), NULL, NULL, NULL, false), "error with content length 0"); TEST_RESULT_UINT(httpClientResponseCode(client), 404, " check response code"); TEST_RESULT_STR_Z(httpClientResponseMessage(client), "Not Found", " check response message"); TEST_RESULT_STR_Z( httpHeaderToLog(httpClientResponseHeader(client)), "{content-length: '0'}", " check response headers"); // Error with content Buffer *buffer = NULL; TEST_ASSIGN( buffer, httpClientRequest(client, strNew("GET"), strNew("/"), NULL, NULL, NULL, false), "error with content length"); TEST_RESULT_UINT(httpClientResponseCode(client), 403, " check response code"); TEST_RESULT_STR_Z(httpClientResponseMessage(client), "Auth Error", " check response message"); TEST_RESULT_STR_Z( httpHeaderToLog(httpClientResponseHeader(client)), "{content-length: '7'}", " check response headers"); TEST_RESULT_STR_Z(strNewBuf(buffer), "CONTENT", " check response"); // Request with content using content-length ioBufferSizeSet(30); TEST_ASSIGN( buffer, httpClientRequest( client, strNew("GET"), strNew("/path/file 1.txt"), NULL, httpHeaderAdd(httpHeaderNew(NULL), strNew("content-length"), strNew("30")), BUFSTRDEF("012345678901234567890123456789"), true), "request with content length"); TEST_RESULT_STR_Z( httpHeaderToLog(httpClientResponseHeader(client)), "{connection: 'close'}", " check response headers"); TEST_RESULT_STR_Z(strNewBuf(buffer), "01234567890123456789012345678901", " check response"); TEST_RESULT_UINT(httpClientRead(client, bufNew(1), true), 0, " call internal read to check eof"); // Request with eof before content complete with retry TEST_ASSIGN( buffer, httpClientRequest(client, strNew("GET"), strNew("/path/file 1.txt"), NULL, NULL, NULL, true), "request with content length retry"); TEST_RESULT_STR_Z(strNewBuf(buffer), "01234567890123456789012345678901", " check response"); TEST_RESULT_UINT(httpClientRead(client, bufNew(1), true), 0, " call internal read to check eof"); // Request with eof before content and error buffer = bufNew(32); TEST_RESULT_VOID( httpClientRequest(client, strNew("GET"), strNew("/path/file 1.txt"), NULL, NULL, NULL, false), "request with content length error"); TEST_RESULT_BOOL(httpClientBusy(client), true, " client is busy"); TEST_ERROR( ioRead(httpClientIoRead(client), buffer), FileReadError, "unexpected EOF reading HTTP content"); // Request with content using chunked encoding TEST_RESULT_VOID( httpClientRequest(client, strNew("GET"), strNew("/"), NULL, NULL, NULL, false), "request with chunked encoding"); TEST_RESULT_STR_Z( httpHeaderToLog(httpClientResponseHeader(client)), "{transfer-encoding: 'chunked'}", " check response headers"); buffer = bufNew(35); TEST_RESULT_VOID(ioRead(httpClientIoRead(client), buffer), " read response"); TEST_RESULT_STR_Z(strNewBuf(buffer), "01234567890123456789012345678901012", " check response"); TEST_RESULT_BOOL(httpClientStatStr() != NULL, true, "check statistics exist"); TEST_RESULT_VOID(httpClientFree(client), "free client"); } // ***************************************************************************************************************************** if (testBegin("HttpClientCache")) { HttpClientCache *cache = NULL; HttpClient *client1 = NULL; HttpClient *client2 = NULL; TEST_ASSIGN( cache, httpClientCacheNew(strNew("localhost"), harnessTlsTestPort(), 500, true, NULL, NULL), "new http client cache"); TEST_ASSIGN(client1, httpClientCacheGet(cache), "get http client"); TEST_RESULT_PTR(client1, *(HttpClient **)lstGet(cache->clientList, 0), " check http client"); TEST_RESULT_PTR(httpClientCacheGet(cache), *(HttpClient **)lstGet(cache->clientList, 0), " get same http client"); // Make client 1 look like it is busy client1->ioRead = (IoRead *)1; TEST_ASSIGN(client2, httpClientCacheGet(cache), "get http client"); TEST_RESULT_PTR(client2, *(HttpClient **)lstGet(cache->clientList, 1), " check http client"); TEST_RESULT_BOOL(client1 != client2, true, "clients are not the same"); // Set back to NULL so bad things don't happen during free client1->ioRead = NULL; TEST_RESULT_VOID(httpClientCacheFree(cache), "free http client cache"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/ioTest.c000066400000000000000000000646521362531507100231620ustar00rootroot00000000000000/*********************************************************************************************************************************** Test IO ***********************************************************************************************************************************/ #include #include "common/type/json.h" #include "common/harnessFork.h" /*********************************************************************************************************************************** Test functions for IoRead that are not covered by testing the IoBufferRead object ***********************************************************************************************************************************/ static bool testIoReadOpen(void *driver) { if (driver == (void *)998) return false; return true; } static size_t testIoRead(void *driver, Buffer *buffer, bool block) { ASSERT(driver == (void *)999); (void)block; bufCat(buffer, BUFSTRDEF("Z")); return 1; } static bool testIoReadCloseCalled = false; static void testIoReadClose(void *driver) { ASSERT(driver == (void *)999); testIoReadCloseCalled = true; } /*********************************************************************************************************************************** Test functions for IoWrite that are not covered by testing the IoBufferWrite object ***********************************************************************************************************************************/ static bool testIoWriteOpenCalled = false; static void testIoWriteOpen(void *driver) { ASSERT(driver == (void *)999); testIoWriteOpenCalled = true; } static void testIoWrite(void *driver, const Buffer *buffer) { ASSERT(driver == (void *)999); ASSERT(strEq(strNewBuf(buffer), strNew("ABC"))); } static bool testIoWriteCloseCalled = false; static void testIoWriteClose(void *driver) { ASSERT(driver == (void *)999); testIoWriteCloseCalled = true; } /*********************************************************************************************************************************** Test filter that counts total bytes ***********************************************************************************************************************************/ typedef struct IoTestFilterSize { MemContext *memContext; size_t size; } IoTestFilterSize; static void ioTestFilterSizeProcess(THIS_VOID, const Buffer *buffer) { THIS(IoTestFilterSize); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM_P(VOID, this); FUNCTION_LOG_PARAM(BUFFER, buffer); FUNCTION_LOG_PARAM(SIZE, this->size); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(buffer != NULL); this->size += bufUsed(buffer); FUNCTION_LOG_RETURN_VOID(); } static Variant * ioTestFilterSizeResult(THIS_VOID) { THIS(IoTestFilterSize); return varNewUInt64(this->size); } static IoFilter * ioTestFilterSizeNew(const char *type) { IoFilter *this = NULL; MEM_CONTEXT_NEW_BEGIN("IoTestFilterSize") { IoTestFilterSize *driver = memNew(sizeof(IoTestFilterSize)); *driver = (IoTestFilterSize) { .memContext = MEM_CONTEXT_NEW(), }; this = ioFilterNewP(strNew(type), driver, NULL, .in = ioTestFilterSizeProcess, .result = ioTestFilterSizeResult); } MEM_CONTEXT_NEW_END(); return this; } /*********************************************************************************************************************************** Test filter to multiply input to the output. It can also flush out a variable number of bytes at the end. ***********************************************************************************************************************************/ typedef struct IoTestFilterMultiply { MemContext *memContext; unsigned int flushTotal; bool writeZero; char flushChar; Buffer *multiplyBuffer; unsigned int multiplier; IoFilter *bufferFilter; } IoTestFilterMultiply; static void ioTestFilterMultiplyProcess(THIS_VOID, const Buffer *input, Buffer *output) { THIS(IoTestFilterMultiply); FUNCTION_LOG_BEGIN(logLevelTrace); FUNCTION_LOG_PARAM_P(VOID, this); FUNCTION_LOG_PARAM(BUFFER, input); FUNCTION_LOG_PARAM(BUFFER, output); FUNCTION_LOG_END(); ASSERT(this != NULL); ASSERT(output != NULL && bufRemains(output) > 0); if (input == NULL) { // Write nothing into the output buffer to make sure the filter processing will skip the remaining filters if (!this->writeZero) { this->writeZero = true; } else { char flushZ[] = {this->flushChar, 0}; bufCat(output, bufNewC(flushZ, 1)); this->flushTotal--; } } else { if (this->multiplyBuffer == NULL) { this->multiplyBuffer = bufNew(bufUsed(input) * this->multiplier); unsigned char *inputPtr = bufPtr(input); unsigned char *bufferPtr = bufPtr(this->multiplyBuffer); for (unsigned int charIdx = 0; charIdx < bufUsed(input); charIdx++) { for (unsigned int multiplierIdx = 0; multiplierIdx < this->multiplier; multiplierIdx++) bufferPtr[charIdx * this->multiplier + multiplierIdx] = inputPtr[charIdx]; } bufUsedSet(this->multiplyBuffer, bufSize(this->multiplyBuffer)); } ioFilterProcessInOut(this->bufferFilter, this->multiplyBuffer, output); if (!ioFilterInputSame(this->bufferFilter)) this->multiplyBuffer = NULL; } FUNCTION_LOG_RETURN_VOID(); } static bool ioTestFilterMultiplyDone(const THIS_VOID) { THIS(const IoTestFilterMultiply); return this->flushTotal == 0; } static bool ioTestFilterMultiplyInputSame(const THIS_VOID) { THIS(const IoTestFilterMultiply); return ioFilterInputSame(this->bufferFilter); } static IoFilter * ioTestFilterMultiplyNew(const char *type, unsigned int multiplier, unsigned int flushTotal, char flushChar) { IoFilter *this = NULL; MEM_CONTEXT_NEW_BEGIN("IoTestFilterMultiply") { IoTestFilterMultiply *driver = memNew(sizeof(IoTestFilterMultiply)); *driver = (IoTestFilterMultiply) { .memContext = MEM_CONTEXT_NEW(), .bufferFilter = ioBufferNew(), .multiplier = multiplier, .flushTotal = flushTotal, .flushChar = flushChar, }; VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewStrZ(type)); varLstAdd(paramList, varNewUInt(multiplier)); varLstAdd(paramList, varNewUInt(flushTotal)); this = ioFilterNewP( strNew(type), driver, paramList, .done = ioTestFilterMultiplyDone, .inOut = ioTestFilterMultiplyProcess, .inputSame = ioTestFilterMultiplyInputSame); } MEM_CONTEXT_NEW_END(); return this; } /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("ioBufferSize() and ioBufferSizeSet()")) { TEST_RESULT_SIZE(ioBufferSize(), 65536, "check initial buffer size"); TEST_RESULT_VOID(ioBufferSizeSet(16384), "set buffer size"); TEST_RESULT_SIZE(ioBufferSize(), 16384, "check buffer size"); } // ***************************************************************************************************************************** if (testBegin("IoRead, IoBufferRead, IoBuffer, IoSize, IoFilter, IoFilterGroup, and ioReadBuf()")) { IoRead *read = NULL; Buffer *buffer = bufNew(2); ioBufferSizeSet(2); TEST_ASSIGN( read, ioReadNewP((void *)998, .close = testIoReadClose, .open = testIoReadOpen, .read = testIoRead), "create io read object"); TEST_RESULT_BOOL(ioReadOpen(read), false, " open io object"); TEST_ASSIGN( read, ioReadNewP((void *)999, .close = testIoReadClose, .open = testIoReadOpen, .read = testIoRead), "create io read object"); TEST_RESULT_BOOL(ioReadOpen(read), true, " open io object"); TEST_RESULT_SIZE(ioRead(read, buffer), 2, " read 2 bytes"); TEST_RESULT_BOOL(ioReadEof(read), false, " no eof"); TEST_RESULT_VOID(ioReadClose(read), " close io object"); TEST_RESULT_BOOL(testIoReadCloseCalled, true, " check io object closed"); TEST_RESULT_VOID(ioReadFree(read), " free read object"); // Read a zero-length buffer to be sure it is not passed on to the filter group // ------------------------------------------------------------------------------------------------------------------------- IoRead *bufferRead = NULL; ioBufferSizeSet(2); buffer = bufNew(2); Buffer *bufferOriginal = bufNew(0); TEST_ASSIGN(bufferRead, ioBufferReadNew(bufferOriginal), "create empty buffer read object"); TEST_RESULT_BOOL(ioReadOpen(bufferRead), true, " open"); TEST_RESULT_BOOL(ioReadEof(bufferRead), false, " not eof"); TEST_RESULT_SIZE(ioRead(bufferRead, buffer), 0, " read 0 bytes"); TEST_RESULT_BOOL(ioReadEof(bufferRead), true, " now eof"); // ------------------------------------------------------------------------------------------------------------------------- ioBufferSizeSet(2); buffer = bufNew(2); bufferOriginal = bufNewC("123", 3); TEST_ASSIGN(bufferRead, ioBufferReadNew(bufferOriginal), "create buffer read object"); TEST_RESULT_VOID(ioFilterGroupClear(ioReadFilterGroup(bufferRead)), " clear does nothing when no filters"); TEST_RESULT_VOID(ioFilterGroupAdd(ioReadFilterGroup(bufferRead), ioSizeNew()), " add filter to be cleared"); TEST_RESULT_VOID(ioFilterGroupClear(ioReadFilterGroup(bufferRead)), " clear size filter"); IoFilter *sizeFilter = ioSizeNew(); TEST_RESULT_VOID( ioFilterGroupAdd(ioReadFilterGroup(bufferRead), ioTestFilterMultiplyNew("double", 2, 3, 'X')), " add filter to filter group"); TEST_RESULT_PTR( ioFilterGroupInsert(ioReadFilterGroup(bufferRead), 0, sizeFilter), bufferRead->filterGroup, " add filter to filter group"); TEST_RESULT_VOID(ioFilterGroupAdd(ioReadFilterGroup(bufferRead), ioSizeNew()), " add filter to filter group"); IoFilter *bufferFilter = ioBufferNew(); TEST_RESULT_VOID(ioFilterGroupAdd(ioReadFilterGroup(bufferRead), bufferFilter), " add filter to filter group"); TEST_RESULT_PTR(ioFilterMove(NULL, memContextTop()), NULL, " move NULL filter to top context"); TEST_RESULT_STR_Z( jsonFromVar(ioFilterGroupParamAll(ioReadFilterGroup(bufferRead))), "[{\"size\":null},{\"double\":[\"double\",2,3]},{\"size\":null},{\"buffer\":null}]", " check filter params"); TEST_RESULT_BOOL(ioReadOpen(bufferRead), true, " open"); TEST_RESULT_INT(ioReadHandle(bufferRead), -1, " handle invalid"); TEST_RESULT_BOOL(ioReadEof(bufferRead), false, " not eof"); TEST_RESULT_SIZE(ioRead(bufferRead, buffer), 2, " read 2 bytes"); TEST_RESULT_SIZE(ioRead(bufferRead, buffer), 0, " read 0 bytes (full buffer)"); TEST_RESULT_STR_Z(strNewBuf(buffer), "11", " check read"); TEST_RESULT_STR_Z(ioFilterType(sizeFilter), "size", "check filter type"); TEST_RESULT_BOOL(ioReadEof(bufferRead), false, " not eof"); TEST_RESULT_VOID(bufUsedZero(buffer), " zero buffer"); TEST_RESULT_SIZE(ioRead(bufferRead, buffer), 2, " read 2 bytes"); TEST_RESULT_STR_Z(strNewBuf(buffer), "22", " check read"); TEST_ASSIGN(buffer, bufNew(3), "change output buffer size to 3"); TEST_RESULT_SIZE(ioRead(bufferRead, buffer), 3, " read 3 bytes"); TEST_RESULT_STR_Z(strNewBuf(buffer), "33X", " check read"); TEST_RESULT_VOID(bufUsedZero(buffer), " zero buffer"); TEST_RESULT_SIZE(ioRead(bufferRead, buffer), 2, " read 2 bytes"); TEST_RESULT_STR_Z(strNewBuf(buffer), "XX", " check read"); TEST_RESULT_BOOL(ioReadEof(bufferRead), true, " eof"); TEST_RESULT_BOOL(ioBufferRead(ioReadDriver(bufferRead), buffer, true), 0, " eof from driver"); TEST_RESULT_SIZE(ioRead(bufferRead, buffer), 0, " read 0 bytes"); TEST_RESULT_VOID(ioReadClose(bufferRead), " close buffer read object"); TEST_RESULT_STR_Z( jsonFromVar(ioFilterGroupResultAll(ioReadFilterGroup(bufferRead))), "{\"buffer\":null,\"double\":null,\"size\":[3,9]}", " check filter result all"); TEST_RESULT_PTR(ioReadFilterGroup(bufferRead), ioReadFilterGroup(bufferRead), " check filter group"); TEST_RESULT_UINT( varUInt64(varLstGet(varVarLst(ioFilterGroupResult(ioReadFilterGroup(bufferRead), ioFilterType(sizeFilter))), 0)), 3, " check filter result"); TEST_RESULT_PTR( ioFilterGroupResult(ioReadFilterGroup(bufferRead), strNew("double")), NULL, " check filter result is NULL"); TEST_RESULT_UINT( varUInt64(varLstGet(varVarLst(ioFilterGroupResult(ioReadFilterGroup(bufferRead), ioFilterType(sizeFilter))), 1)), 9, " check filter result"); TEST_RESULT_PTR(ioFilterDriver(bufferFilter), bufferFilter->driver, " check filter driver"); TEST_RESULT_PTR(ioFilterInterface(bufferFilter), &bufferFilter->interface, " check filter interface"); TEST_RESULT_VOID(ioFilterFree(bufferFilter), " free buffer filter"); TEST_RESULT_VOID(ioFilterGroupFree(ioReadFilterGroup(bufferRead)), " free filter group object"); // Set filter group results // ------------------------------------------------------------------------------------------------------------------------- IoFilterGroup *filterGroup = ioFilterGroupNew(); filterGroup->opened = true; TEST_RESULT_VOID(ioFilterGroupResultAllSet(filterGroup, NULL), "null result"); TEST_RESULT_VOID(ioFilterGroupResultAllSet(filterGroup, jsonToVar(strNew("{\"test\":777}"))), "add result"); filterGroup->closed = true; TEST_RESULT_UINT(varUInt64(ioFilterGroupResult(filterGroup, strNew("test"))), 777, " check filter result"); // Read a zero-size buffer to ensure filters are still processed even when there is no input. Some filters (e.g. encryption // and compression) will produce output even if there is no input. // ------------------------------------------------------------------------------------------------------------------------- ioBufferSizeSet(1024); buffer = bufNew(1024); bufferOriginal = bufNew(0); TEST_ASSIGN(bufferRead, ioBufferReadNew(bufferOriginal), "create buffer read object"); TEST_RESULT_VOID( ioFilterGroupAdd(ioReadFilterGroup(bufferRead), ioTestFilterMultiplyNew("double", 2, 5, 'Y')), " add filter that produces output with no input"); TEST_RESULT_BOOL(ioReadOpen(bufferRead), true, " open read"); TEST_RESULT_UINT(ioRead(bufferRead, buffer), 5, " read 5 chars"); TEST_RESULT_STR_Z(strNewBuf(buffer), "YYYYY", " check buffer"); // Mixed line and buffer read // ------------------------------------------------------------------------------------------------------------------------- ioBufferSizeSet(5); read = ioBufferReadNew(BUFSTRDEF("AAA123\n1234\n\n12\nBDDDEFF")); ioReadOpen(read); buffer = bufNew(3); // Start with a buffer read TEST_RESULT_INT(ioRead(read, buffer), 3, "read buffer"); TEST_RESULT_STR_Z(strNewBuf(buffer), "AAA", " check buffer"); // Do line reads of various lengths TEST_RESULT_STR_Z(ioReadLine(read), "123", "read line"); TEST_RESULT_STR_Z(ioReadLine(read), "1234", "read line"); TEST_RESULT_STR_Z(ioReadLine(read), "", "read line"); TEST_RESULT_STR_Z(ioReadLine(read), "12", "read line"); // Read what was left in the line buffer TEST_RESULT_INT(ioRead(read, buffer), 0, "read buffer"); bufUsedSet(buffer, 2); TEST_RESULT_INT(ioRead(read, buffer), 1, "read buffer"); TEST_RESULT_STR_Z(strNewBuf(buffer), "AAB", " check buffer"); bufUsedSet(buffer, 0); // Now do a full buffer read from the input TEST_RESULT_INT(ioRead(read, buffer), 3, "read buffer"); TEST_RESULT_STR_Z(strNewBuf(buffer), "DDD", " check buffer"); // Read line doesn't work without a linefeed TEST_ERROR(ioReadLine(read), FileReadError, "unexpected eof while reading line"); // But those bytes can be picked up by a buffer read buffer = bufNew(2); TEST_RESULT_INT(ioRead(read, buffer), 2, "read buffer"); TEST_RESULT_STR_Z(strNewBuf(buffer), "EF", " check buffer"); buffer = bufNew(1); TEST_RESULT_INT(ioRead(read, buffer), 1, "read buffer"); TEST_RESULT_STR_Z(strNewBuf(buffer), "F", " check buffer"); // Nothing left to read TEST_ERROR(ioReadLine(read), FileReadError, "unexpected eof while reading line"); TEST_RESULT_INT(ioRead(read, buffer), 0, "read buffer"); // Error if buffer is full and there is no linefeed ioBufferSizeSet(10); read = ioBufferReadNew(BUFSTRDEF("0123456789")); ioReadOpen(read); TEST_ERROR(ioReadLine(read), FileReadError, "unable to find line in 10 byte buffer"); // Read line without eof read = ioBufferReadNew(BUFSTRDEF("1234")); ioReadOpen(read); TEST_RESULT_STR_Z(ioReadLineParam(read, true), "1234", "read line without eof"); // Read IO into a buffer // ------------------------------------------------------------------------------------------------------------------------- ioBufferSizeSet(8); bufferRead = ioBufferReadNew(BUFSTRDEF("a test string")); ioReadOpen(bufferRead); TEST_RESULT_STR_Z(strNewBuf(ioReadBuf(bufferRead)), "a test string", "read into buffer"); // Drain read IO // ------------------------------------------------------------------------------------------------------------------------- bufferRead = ioBufferReadNew(BUFSTRDEF("a better test string")); ioFilterGroupAdd(ioReadFilterGroup(bufferRead), ioSizeNew()); TEST_RESULT_BOOL(ioReadDrain(bufferRead), true, "drain read io"); TEST_RESULT_UINT(varUInt64(ioFilterGroupResult(ioReadFilterGroup(bufferRead), SIZE_FILTER_TYPE_STR)), 20, "check length"); // Cannot open file TEST_ASSIGN( read, ioReadNewP((void *)998, .close = testIoReadClose, .open = testIoReadOpen, .read = testIoRead), "create io read object"); TEST_RESULT_BOOL(ioReadDrain(read), false, "cannot open"); } // ***************************************************************************************************************************** if (testBegin("IoWrite, IoBufferWrite, IoBuffer, IoSize, IoFilter, and IoFilterGroup")) { IoWrite *write = NULL; ioBufferSizeSet(3); TEST_ASSIGN( write, ioWriteNewP((void *)999, .close = testIoWriteClose, .open = testIoWriteOpen, .write = testIoWrite), "create io write object"); TEST_RESULT_VOID(ioWriteOpen(write), " open io object"); TEST_RESULT_BOOL(testIoWriteOpenCalled, true, " check io object open"); TEST_RESULT_VOID(ioWriteStr(write, STRDEF("ABC")), " write 3 bytes"); TEST_RESULT_VOID(ioWriteClose(write), " close io object"); TEST_RESULT_BOOL(testIoWriteCloseCalled, true, " check io object closed"); TEST_RESULT_VOID(ioWriteFree(write), " free write object"); // ------------------------------------------------------------------------------------------------------------------------- ioBufferSizeSet(3); IoWrite *bufferWrite = NULL; Buffer *buffer = bufNew(0); TEST_ASSIGN(bufferWrite, ioBufferWriteNew(buffer), "create buffer write object"); IoFilterGroup *filterGroup = ioWriteFilterGroup(bufferWrite); IoFilter *sizeFilter = ioSizeNew(); TEST_RESULT_VOID(ioFilterGroupAdd(filterGroup, sizeFilter), " add filter to filter group"); TEST_RESULT_VOID( ioFilterGroupAdd(filterGroup, ioTestFilterMultiplyNew("double", 2, 3, 'X')), " add filter to filter group"); TEST_RESULT_VOID( ioFilterGroupAdd(filterGroup, ioTestFilterMultiplyNew("single", 1, 1, 'Y')), " add filter to filter group"); TEST_RESULT_VOID(ioFilterGroupAdd(filterGroup, ioTestFilterSizeNew("size2")), " add filter to filter group"); TEST_RESULT_VOID(ioWriteOpen(bufferWrite), " open buffer write object"); TEST_RESULT_INT(ioWriteHandle(bufferWrite), -1, " handle invalid"); TEST_RESULT_VOID(ioWriteLine(bufferWrite, BUFSTRDEF("AB")), " write line"); TEST_RESULT_VOID(ioWrite(bufferWrite, bufNew(0)), " write 0 bytes"); TEST_RESULT_VOID(ioWrite(bufferWrite, NULL), " write 0 bytes"); TEST_RESULT_STR_Z(strNewBuf(buffer), "AABB\n\n", " check write"); TEST_RESULT_VOID(ioWriteStr(bufferWrite, STRDEF("Z")), " write string"); TEST_RESULT_STR_Z(strNewBuf(buffer), "AABB\n\n", " no change because output buffer is not full"); TEST_RESULT_VOID(ioWriteStr(bufferWrite, STRDEF("12345")), " write bytes"); TEST_RESULT_STR_Z(strNewBuf(buffer), "AABB\n\nZZ1122334455", " check write"); TEST_RESULT_VOID(ioWriteClose(bufferWrite), " close buffer write object"); TEST_RESULT_STR_Z(strNewBuf(buffer), "AABB\n\nZZ1122334455XXXY", " check write after close"); TEST_RESULT_PTR(ioWriteFilterGroup(bufferWrite), filterGroup, " check filter group"); TEST_RESULT_UINT( varUInt64(ioFilterGroupResult(filterGroup, ioFilterType(sizeFilter))), 9, " check filter result"); TEST_RESULT_UINT(varUInt64(ioFilterGroupResult(filterGroup, strNew("size2"))), 22, " check filter result"); } // ***************************************************************************************************************************** if (testBegin("IoHandleRead, IoHandleWrite, and ioHandleWriteOneStr()")) { ioBufferSizeSet(16); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, true) { IoWrite *write = NULL; TEST_ASSIGN(write, ioHandleWriteNew(strNew("write test"), HARNESS_FORK_CHILD_WRITE()), "move write"); ioWriteOpen(write); TEST_RESULT_INT( ioWriteHandle(write), ((IoHandleWrite *)ioWriteDriver(write))->handle, "check write handle"); TEST_RESULT_PTR(ioWriteDriver(write), write->driver, "check write driver"); TEST_RESULT_PTR(ioWriteInterface(write), &write->interface, "check write interface"); // Write a line to be read TEST_RESULT_VOID(ioWriteStrLine(write, strNew("test string 1")), "write test string"); ioWriteFlush(write); ioWriteFlush(write); // Sleep so the other side will timeout const Buffer *buffer = BUFSTRDEF("12345678"); TEST_RESULT_VOID(ioWrite(write, buffer), "write buffer"); sleepMSec(1250); // Write a buffer in two parts and sleep in the middle so it will be read on the other side in two parts TEST_RESULT_VOID(ioWrite(write, buffer), "write buffer"); sleepMSec(500); TEST_RESULT_VOID(ioWrite(write, buffer), "write buffer"); ioWriteFlush(write); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { IoRead *read = ioHandleReadNew(strNew("read test"), HARNESS_FORK_PARENT_READ_PROCESS(0), 1000); ioReadOpen(read); TEST_RESULT_INT(ioReadHandle(read), ((IoHandleRead *)ioReadDriver(read))->handle, "check handle"); TEST_RESULT_PTR(ioReadInterface(read), &read->interface, "check interface"); TEST_RESULT_PTR(ioReadDriver(read), read->driver, "check driver"); // Read a string TEST_RESULT_STR_Z(ioReadLine(read), "test string 1", "read test string"); // Only part of the buffer is written before timeout Buffer *buffer = bufNew(16); TEST_ERROR(ioRead(read, buffer), FileReadError, "unable to read data from read test after 1000ms"); TEST_RESULT_UINT(bufSize(buffer), 16, "buffer is only partially read"); // Read a buffer that is transmitted in two parts with blocking on the read side buffer = bufNew(16); bufLimitSet(buffer, 12); TEST_RESULT_UINT(ioRead(read, buffer), 12, "read buffer"); bufLimitClear(buffer); TEST_RESULT_UINT(ioRead(read, buffer), 4, "read buffer"); TEST_RESULT_STR_Z(strNewBuf(buffer), "1234567812345678", "check buffer"); // Check EOF buffer = bufNew(16); TEST_RESULT_UINT(ioHandleRead(ioReadDriver(read), buffer, true), 0, "read buffer at eof"); TEST_RESULT_UINT(ioHandleRead(ioReadDriver(read), buffer, true), 0, "read buffer at eof again"); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR( ioHandleWriteOneStr(999999, strNew("test")), FileWriteError, "unable to write to handle: [9] Bad file descriptor"); // ------------------------------------------------------------------------------------------------------------------------- String *fileName = strNewFmt("%s/test.txt", testPath()); int fileHandle = open(strPtr(fileName), O_CREAT | O_TRUNC | O_WRONLY, 0700); TEST_RESULT_VOID(ioHandleWriteOneStr(fileHandle, strNew("test1\ntest2")), "write string to file"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/ioTlsTest.c000066400000000000000000000311001362531507100236230ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Tls Client ***********************************************************************************************************************************/ #include #include "common/time.h" #include "common/harnessTls.h" /*********************************************************************************************************************************** Test server with subject alternate names ***********************************************************************************************************************************/ static void testTlsServerAltName(void) { if (fork() == 0) { harnessTlsServerInit( harnessTlsTestPort(), strPtr(strNewFmt("%s/" TEST_CERTIFICATE_PREFIX "-alt-name.crt", testRepoPath())), strPtr(strNewFmt("%s/" TEST_CERTIFICATE_PREFIX ".key", testRepoPath()))); // Certificate error on invalid ca path harnessTlsServerAccept(); harnessTlsServerClose(); if (testContainer()) { // Success on valid ca file and match common name harnessTlsServerAccept(); harnessTlsServerClose(); // Success on valid ca file and match alt name harnessTlsServerAccept(); harnessTlsServerClose(); // Unable to find matching hostname in certificate harnessTlsServerAccept(); harnessTlsServerClose(); } // Certificate error harnessTlsServerAccept(); harnessTlsServerClose(); // Certificate ignored harnessTlsServerAccept(); harnessTlsServerClose(); exit(0); } } /*********************************************************************************************************************************** Test server ***********************************************************************************************************************************/ static void testTlsServer(void) { if (fork() == 0) { harnessTlsServerInitDefault(); // First protocol exchange harnessTlsServerAccept(); harnessTlsServerExpect("some protocol info"); harnessTlsServerReply("something:0\n"); sleepMSec(100); harnessTlsServerReply("some "); sleepMSec(100); harnessTlsServerReply("contentAND MORE"); // This will cause the client to disconnect sleepMSec(500); // Second protocol exchange harnessTlsServerExpect("more protocol info"); harnessTlsServerReply("0123456789AB"); harnessTlsServerClose(); // Need data in read buffer to test tlsWriteContinue() harnessTlsServerAccept(); harnessTlsServerReply("0123456789AB"); harnessTlsServerClose(); exit(0); } } /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // Additional coverage not provided by testing with actual certificates // ***************************************************************************************************************************** if (testBegin("asn1ToStr(), tlsClientHostVerify(), and tlsClientHostVerifyName()")) { TEST_ERROR(asn1ToStr(NULL), CryptoError, "TLS certificate name entry is missing"); TEST_ERROR( tlsClientHostVerifyName( strNew("host"), strNewN("ab\0cd", 5)), CryptoError, "TLS certificate name contains embedded null"); TEST_ERROR(tlsClientHostVerify(strNew("host"), NULL), CryptoError, "No certificate presented by the TLS server"); TEST_RESULT_BOOL(tlsClientHostVerifyName(strNew("host"), strNew("**")), false, "invalid pattern"); TEST_RESULT_BOOL(tlsClientHostVerifyName(strNew("host"), strNew("*.")), false, "invalid pattern"); TEST_RESULT_BOOL(tlsClientHostVerifyName(strNew("a.bogus.host.com"), strNew("*.host.com")), false, "invalid host"); } // Additional coverage not provided by other tests // ***************************************************************************************************************************** if (testBegin("tlsError()")) { TlsClient *client = NULL; TEST_ASSIGN(client, tlsClientNew(strNew("99.99.99.99.99"), harnessTlsTestPort(), 0, true, NULL, NULL), "new client"); TEST_RESULT_BOOL(tlsError(client, SSL_ERROR_WANT_READ), true, "continue after want read"); TEST_RESULT_BOOL(tlsError(client, SSL_ERROR_ZERO_RETURN), false, "check connection closed error"); TEST_ERROR(tlsError(client, SSL_ERROR_WANT_X509_LOOKUP), ServiceError, "tls error [4]"); } // ***************************************************************************************************************************** if (testBegin("TlsClient verification")) { TlsClient *client = NULL; // Connection errors // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(client, tlsClientNew(strNew("99.99.99.99.99"), harnessTlsTestPort(), 0, true, NULL, NULL), "new client"); TEST_ERROR( tlsClientOpen(client), HostConnectError, "unable to get address for '99.99.99.99.99': [-2] Name or service not known"); TEST_ASSIGN(client, tlsClientNew(strNew("localhost"), harnessTlsTestPort(), 100, true, NULL, NULL), "new client"); TEST_ERROR_FMT( tlsClientOpen(client), HostConnectError, "unable to connect to 'localhost:%u': [111] Connection refused", harnessTlsTestPort()); // Certificate location and validation errors // ------------------------------------------------------------------------------------------------------------------------- // Add test hosts if (testContainer()) { if (system( // {uncoverable_branch} "echo \"127.0.0.1 test.pgbackrest.org host.test2.pgbackrest.org test3.pgbackrest.org\" |" " sudo tee -a /etc/hosts > /dev/null") != 0) { THROW(AssertError, "unable to add test hosts to /etc/hosts"); // {uncovered+} } } // Start server to test various certificate errors testTlsServerAltName(); TEST_ERROR( tlsClientOpen( tlsClientNew(strNew("localhost"), harnessTlsTestPort(), 500, true, strNew("bogus.crt"), strNew("/bogus"))), CryptoError, "unable to set user-defined CA certificate location: [33558530] No such file or directory"); TEST_ERROR_FMT( tlsClientOpen(tlsClientNew(strNew("localhost"), harnessTlsTestPort(), 500, true, NULL, strNew("/bogus"))), CryptoError, "unable to verify certificate presented by 'localhost:%u': [20] unable to get local issuer certificate", harnessTlsTestPort()); if (testContainer()) { TEST_RESULT_VOID( tlsClientOpen( tlsClientNew(strNew("test.pgbackrest.org"), harnessTlsTestPort(), 500, true, strNewFmt("%s/" TEST_CERTIFICATE_PREFIX "-ca.crt", testRepoPath()), NULL)), "success on valid ca file and match common name"); TEST_RESULT_VOID( tlsClientOpen( tlsClientNew(strNew("host.test2.pgbackrest.org"), harnessTlsTestPort(), 500, true, strNewFmt("%s/" TEST_CERTIFICATE_PREFIX "-ca.crt", testRepoPath()), NULL)), "success on valid ca file and match alt name"); TEST_ERROR( tlsClientOpen( tlsClientNew(strNew("test3.pgbackrest.org"), harnessTlsTestPort(), 500, true, strNewFmt("%s/" TEST_CERTIFICATE_PREFIX "-ca.crt", testRepoPath()), NULL)), CryptoError, "unable to find hostname 'test3.pgbackrest.org' in certificate common name or subject alternative names"); } TEST_ERROR_FMT( tlsClientOpen( tlsClientNew( strNew("localhost"), harnessTlsTestPort(), 500, true, strNewFmt("%s/" TEST_CERTIFICATE_PREFIX ".crt", testRepoPath()), NULL)), CryptoError, "unable to verify certificate presented by 'localhost:%u': [20] unable to get local issuer certificate", harnessTlsTestPort()); TEST_RESULT_VOID( tlsClientOpen(tlsClientNew(strNew("localhost"), harnessTlsTestPort(), 500, false, NULL, NULL)), "success on no verify"); } // ***************************************************************************************************************************** if (testBegin("TlsClient general usage")) { TlsClient *client = NULL; // Reset statistics tlsClientStatLocal = (TlsClientStat){0}; TEST_RESULT_PTR(tlsClientStatStr(), NULL, "no stats yet"); testTlsServer(); ioBufferSizeSet(12); TEST_ASSIGN( client, tlsClientNew(harnessTlsTestHost(), harnessTlsTestPort(), 500, testContainer(), NULL, NULL), "new client"); TEST_RESULT_VOID(tlsClientOpen(client), "open client"); const Buffer *input = BUFSTRDEF("some protocol info"); TEST_RESULT_VOID(ioWrite(tlsClientIoWrite(client), input), "write input"); ioWriteFlush(tlsClientIoWrite(client)); TEST_RESULT_STR_Z(ioReadLine(tlsClientIoRead(client)), "something:0", "read line"); TEST_RESULT_BOOL(ioReadEof(tlsClientIoRead(client)), false, " check eof = false"); Buffer *output = bufNew(12); TEST_RESULT_INT(ioRead(tlsClientIoRead(client), output), 12, "read output"); TEST_RESULT_STR_Z(strNewBuf(output), "some content", " check output"); TEST_RESULT_BOOL(ioReadEof(tlsClientIoRead(client)), false, " check eof = false"); output = bufNew(8); TEST_RESULT_INT(ioRead(tlsClientIoRead(client), output), 8, "read output"); TEST_RESULT_STR_Z(strNewBuf(output), "AND MORE", " check output"); TEST_RESULT_BOOL(ioReadEof(tlsClientIoRead(client)), false, " check eof = false"); output = bufNew(12); TEST_ERROR_FMT( ioRead(tlsClientIoRead(client), output), FileReadError, "timeout after 500ms waiting for read from '%s:%u'", strPtr(harnessTlsTestHost()), harnessTlsTestPort()); // ------------------------------------------------------------------------------------------------------------------------- input = BUFSTRDEF("more protocol info"); TEST_RESULT_VOID(tlsClientOpen(client), "open client again (it is already open)"); TEST_RESULT_VOID(ioWrite(tlsClientIoWrite(client), input), "write input"); ioWriteFlush(tlsClientIoWrite(client)); output = bufNew(12); TEST_RESULT_INT(ioRead(tlsClientIoRead(client), output), 12, "read output"); TEST_RESULT_STR_Z(strNewBuf(output), "0123456789AB", " check output"); TEST_RESULT_BOOL(ioReadEof(tlsClientIoRead(client)), false, " check eof = false"); output = bufNew(12); TEST_RESULT_INT(ioRead(tlsClientIoRead(client), output), 0, "read no output after eof"); TEST_RESULT_BOOL(ioReadEof(tlsClientIoRead(client)), true, " check eof = true"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(tlsClientOpen(client), "open client again (was closed by server)"); TEST_RESULT_BOOL(tlsWriteContinue(client, -1, SSL_ERROR_WANT_READ, 1), true, "continue on WANT_READ"); TEST_RESULT_BOOL(tlsWriteContinue(client, 0, SSL_ERROR_NONE, 1), true, "continue on WANT_READ"); TEST_ERROR( tlsWriteContinue(client, 77, 0, 88), FileWriteError, "unable to write to tls, write size 77 does not match expected size 88"); TEST_ERROR(tlsWriteContinue(client, 0, SSL_ERROR_ZERO_RETURN, 1), FileWriteError, "unable to write to tls [6]"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(tlsClientStatStr() != NULL, true, "check statistics exist"); TEST_RESULT_VOID(tlsClientFree(client), "free client"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/lockTest.c000066400000000000000000000260521362531507100234730ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Lock Handler ***********************************************************************************************************************************/ #include "common/time.h" #include "storage/posix/storage.h" #include "common/harnessFork.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // Create default storage object for testing Storage *storageTest = storagePosixNew( strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); // ***************************************************************************************************************************** if (testBegin("lockAcquireFile() and lockReleaseFile()")) { String *archiveLock = strNewFmt("%s/main-archive" LOCK_FILE_EXT, testPath()); int lockHandleTest = -1; TEST_RESULT_INT(system(strPtr(strNewFmt("touch %s", strPtr(archiveLock)))), 0, "touch lock file"); TEST_ASSIGN(lockHandleTest, lockAcquireFile(archiveLock, 0, true), "get lock"); TEST_RESULT_BOOL(lockHandleTest != -1, true, "lock succeeds"); TEST_RESULT_BOOL(storageExistsP(storageTest, archiveLock), true, "lock file was created"); TEST_ERROR(lockAcquireFile(archiveLock, 0, true), LockAcquireError, strPtr( strNewFmt( "unable to acquire lock on file '%s': Resource temporarily unavailable\n" "HINT: is another pgBackRest process running?", strPtr(archiveLock)))); TEST_ERROR( lockAcquireFile(archiveLock, 0, true), LockAcquireError, strPtr(strNewFmt( "unable to acquire lock on file '%s': Resource temporarily unavailable\n" "HINT: is another pgBackRest process running?", strPtr(archiveLock)))); TEST_RESULT_BOOL(lockAcquireFile(archiveLock, 0, false) == -1, true, "lock is already held"); TEST_RESULT_VOID(lockReleaseFile(lockHandleTest, archiveLock), "release lock"); TEST_RESULT_VOID(lockReleaseFile(lockHandleTest, archiveLock), "release lock"); TEST_RESULT_BOOL(storageExistsP(storageTest, archiveLock), false, "lock file was removed"); TEST_RESULT_VOID(lockReleaseFile(lockHandleTest, archiveLock), "release lock again without error"); // ------------------------------------------------------------------------------------------------------------------------- String *subPathLock = strNewFmt("%s/sub1/sub2/db-backup" LOCK_FILE_EXT, testPath()); TEST_ASSIGN(lockHandleTest, lockAcquireFile(subPathLock, 0, true), "get lock in subpath"); TEST_RESULT_BOOL(storageExistsP(storageTest, subPathLock), true, "lock file was created"); TEST_RESULT_BOOL(lockHandleTest != -1, true, "lock succeeds"); TEST_RESULT_VOID(lockReleaseFile(lockHandleTest, subPathLock), "release lock"); TEST_RESULT_BOOL(storageExistsP(storageTest, subPathLock), false, "lock file was removed"); // ------------------------------------------------------------------------------------------------------------------------- String *dirLock = strNewFmt("%s/dir" LOCK_FILE_EXT, testPath()); TEST_RESULT_INT(system(strPtr(strNewFmt("mkdir -p 750 %s", strPtr(dirLock)))), 0, "create dirtest.lock dir"); TEST_ERROR( lockAcquireFile(dirLock, 0, true), LockAcquireError, strPtr(strNewFmt("unable to acquire lock on file '%s': Is a directory", strPtr(dirLock)))); // ------------------------------------------------------------------------------------------------------------------------- String *noPermLock = strNewFmt("%s/noperm/noperm", testPath()); TEST_RESULT_INT(system(strPtr(strNewFmt("mkdir -p 750 %s", strPtr(strPath(noPermLock))))), 0, "create noperm dir"); TEST_RESULT_INT(system(strPtr(strNewFmt("chmod 000 %s", strPtr(strPath(noPermLock))))), 0, "chmod noperm dir"); TEST_ERROR( lockAcquireFile(noPermLock, 100, true), LockAcquireError, strPtr( strNewFmt( "unable to acquire lock on file '%s': Permission denied\n" "HINT: does the user running pgBackRest have permissions on the '%s' file?", strPtr(noPermLock), strPtr(noPermLock)))); // ------------------------------------------------------------------------------------------------------------------------- String *backupLock = strNewFmt("%s/main-backup" LOCK_FILE_EXT, testPath()); HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, false) { TEST_RESULT_BOOL(lockAcquireFile(backupLock, 0, true), true, "lock on fork"); sleepMSec(500); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { sleepMSec(250); TEST_ERROR( lockAcquireFile(backupLock, 0, true), LockAcquireError, strPtr( strNewFmt( "unable to acquire lock on file '%s': Resource temporarily unavailable\n" "HINT: is another pgBackRest process running?", strPtr(backupLock)))); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); } // ***************************************************************************************************************************** if (testBegin("lockAcquire(), lockRelease(), and lockClear()")) { String *stanza = strNew("test"); String *lockPath = strNew(testPath()); String *archiveLockFile = strNewFmt("%s/%s-archive" LOCK_FILE_EXT, testPath(), strPtr(stanza)); String *backupLockFile = strNewFmt("%s/%s-backup" LOCK_FILE_EXT, testPath(), strPtr(stanza)); int lockHandleTest = -1; // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(lockRelease(true), AssertError, "no lock is held by this process"); TEST_RESULT_BOOL(lockRelease(false), false, "release when there is no lock"); TEST_ERROR(lockClear(true), AssertError, "no lock is held by this process"); TEST_RESULT_BOOL(lockClear(false), false, "release when there is no lock"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(lockHandleTest, lockAcquireFile(archiveLockFile, 0, true), "archive lock by file"); TEST_RESULT_BOOL(lockAcquire(lockPath, stanza, lockTypeArchive, 0, false), false, "archive already locked"); TEST_ERROR( lockAcquire(lockPath, stanza, lockTypeArchive, 0, true), LockAcquireError, strPtr(strNewFmt( "unable to acquire lock on file '%s': Resource temporarily unavailable\n" "HINT: is another pgBackRest process running?", strPtr(archiveLockFile)))); TEST_ERROR( lockAcquire(lockPath, stanza, lockTypeAll, 0, true), LockAcquireError, strPtr(strNewFmt( "unable to acquire lock on file '%s': Resource temporarily unavailable\n" "HINT: is another pgBackRest process running?", strPtr(archiveLockFile)))); TEST_RESULT_VOID(lockReleaseFile(lockHandleTest, archiveLockFile), "release lock"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(lockAcquire(lockPath, stanza, lockTypeArchive, 0, true), true, "archive lock"); TEST_RESULT_BOOL(storageExistsP(storageTest, archiveLockFile), true, "archive lock file was created"); TEST_ERROR(lockAcquire(lockPath, stanza, lockTypeArchive, 0, false), AssertError, "lock is already held by this process"); TEST_RESULT_VOID(lockRelease(true), "release archive lock"); // // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(lockHandleTest, lockAcquireFile(backupLockFile, 0, true), "backup lock by file"); TEST_ERROR( lockAcquire(lockPath, stanza, lockTypeBackup, 0, true), LockAcquireError, strPtr(strNewFmt( "unable to acquire lock on file '%s': Resource temporarily unavailable\n" "HINT: is another pgBackRest process running?", strPtr(backupLockFile)))); TEST_ERROR( lockAcquire(lockPath, stanza, lockTypeAll, 0, true), LockAcquireError, strPtr(strNewFmt( "unable to acquire lock on file '%s': Resource temporarily unavailable\n" "HINT: is another pgBackRest process running?", strPtr(backupLockFile)))); TEST_RESULT_VOID(lockReleaseFile(lockHandleTest, archiveLockFile), "release lock"); TEST_RESULT_VOID(lockReleaseFile(lockHandleTest, backupLockFile), "release lock"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(lockAcquire(lockPath, stanza, lockTypeAll, 0, true), true, "all lock"); TEST_RESULT_BOOL(storageExistsP(storageTest, archiveLockFile), true, "archive lock file was created"); TEST_RESULT_BOOL(storageExistsP(storageTest, backupLockFile), true, "backup lock file was created"); TEST_ERROR( lockAcquire(lockPath, stanza, lockTypeAll, 0, false), AssertError, "assertion 'failOnNoLock || lockType != lockTypeAll' failed"); TEST_RESULT_VOID(lockRelease(true), "release all lock"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(lockAcquire(lockPath, stanza, lockTypeBackup, 0, true), true, "backup lock"); lockHandleTest = lockHandle[lockTypeBackup]; String *lockFileTest = strDup(lockFile[lockTypeBackup]); TEST_RESULT_VOID(lockClear(true), "clear backup lock"); TEST_RESULT_BOOL(storageExistsP(storageTest, backupLockFile), true, "backup lock file still exists"); lockReleaseFile(lockHandleTest, lockFileTest); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(lockAcquire(lockPath, stanza, lockTypeAll, 0, true), true, "all lock"); TEST_RESULT_VOID(lockClear(true), "clear all lock"); TEST_RESULT_BOOL(storageExistsP(storageTest, archiveLockFile), true, "archive lock file still exists"); TEST_RESULT_BOOL(storageExistsP(storageTest, backupLockFile), true, "backup lock file still exists"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/logTest.c000066400000000000000000000323121362531507100233200ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Log Handler ***********************************************************************************************************************************/ #include #include #include /*********************************************************************************************************************************** Open a log file ***********************************************************************************************************************************/ static int testLogOpen(const char *logFile, int flags, int mode) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(STRINGZ, logFile); FUNCTION_HARNESS_PARAM(INT, flags); FUNCTION_HARNESS_PARAM(INT, mode); FUNCTION_HARNESS_ASSERT(logFile != NULL); FUNCTION_HARNESS_END(); int result = open(logFile, flags, mode); THROW_ON_SYS_ERROR_FMT(result == -1, FileOpenError, "unable to open log file '%s'", logFile); FUNCTION_HARNESS_RESULT(INT, result); } /*********************************************************************************************************************************** Load log result from file into a buffer ***********************************************************************************************************************************/ static void testLogLoad(const char *logFile, char *buffer, size_t bufferSize) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(STRINGZ, logFile); FUNCTION_HARNESS_PARAM_P(CHARDATA, buffer); FUNCTION_HARNESS_PARAM(SIZE, bufferSize); FUNCTION_HARNESS_ASSERT(logFile != NULL); FUNCTION_HARNESS_ASSERT(buffer != NULL); FUNCTION_HARNESS_END(); buffer[0] = 0; int handle = testLogOpen(logFile, O_RDONLY, 0); size_t totalBytes = 0; ssize_t actualBytes = 0; do { THROW_ON_SYS_ERROR_FMT( (actualBytes = read(handle, buffer, bufferSize - totalBytes)) == -1, FileOpenError, "unable to read log file '%s'", logFile); totalBytes += (size_t)actualBytes; } while (actualBytes != 0); THROW_ON_SYS_ERROR_FMT(close(handle) == -1, FileOpenError, "unable to close log file '%s'", logFile); // Remove final linefeed buffer[totalBytes - 1] = 0; FUNCTION_HARNESS_RESULT_VOID(); } /*********************************************************************************************************************************** Compare log to a static string ***********************************************************************************************************************************/ void testLogResult(const char *logFile, const char *expected) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(STRINGZ, logFile); FUNCTION_HARNESS_PARAM(STRINGZ, expected); FUNCTION_HARNESS_ASSERT(logFile != NULL); FUNCTION_HARNESS_ASSERT(expected != NULL); FUNCTION_HARNESS_END(); char actual[32768]; testLogLoad(logFile, actual, sizeof(actual)); if (strcmp(actual, expected) != 0) // {uncoverable_branch} THROW_FMT( // {+uncovered} AssertError, "\n\nexpected log:\n\n%s\n\nbut actual log was:\n\n%s\n\n", expected, actual); FUNCTION_HARNESS_RESULT_VOID(); } /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("logLevelEnum() and logLevelStr()")) { TEST_ERROR(logLevelEnum(BOGUS_STR), AssertError, "log level 'BOGUS' not found"); TEST_RESULT_INT(logLevelEnum("OFF"), logLevelOff, "log level 'OFF' found"); TEST_RESULT_INT(logLevelEnum("info"), logLevelInfo, "log level 'info' found"); TEST_RESULT_INT(logLevelEnum("TRACE"), logLevelTrace, "log level 'TRACE' found"); TEST_ERROR(logLevelStr(999), AssertError, "assertion 'logLevel <= LOG_LEVEL_MAX' failed"); TEST_RESULT_Z(logLevelStr(logLevelOff), "OFF", "log level 'OFF' found"); TEST_RESULT_Z(logLevelStr(logLevelInfo), "INFO", "log level 'INFO' found"); TEST_RESULT_Z(logLevelStr(logLevelTrace), "TRACE", "log level 'TRACE' found"); } // ***************************************************************************************************************************** if (testBegin("logInit()")) { TEST_RESULT_INT(logLevelStdOut, logLevelError, "console logging is error"); TEST_RESULT_INT(logLevelStdErr, logLevelError, "stderr logging is error"); TEST_RESULT_INT(logLevelFile, logLevelOff, "file logging is off"); TEST_RESULT_VOID(logInit(logLevelInfo, logLevelWarn, logLevelError, true, 99), "init logging"); TEST_RESULT_INT(logLevelStdOut, logLevelInfo, "console logging is info"); TEST_RESULT_INT(logLevelStdErr, logLevelWarn, "stderr logging is warn"); TEST_RESULT_INT(logLevelFile, logLevelError, "file logging is error"); TEST_RESULT_INT(logProcessSize, 2, "process field size is 2"); TEST_RESULT_VOID(logInit(logLevelInfo, logLevelWarn, logLevelError, true, 100), "init logging"); TEST_RESULT_INT(logProcessSize, 3, "process field size is 3"); } // ***************************************************************************************************************************** if (testBegin("logAny*()")) { logLevelStdOut = logLevelOff; logLevelStdErr = logLevelOff; logLevelFile = logLevelOff; logHandleFile = -1; TEST_RESULT_VOID(logAnySet(), "set log any"); TEST_RESULT_BOOL(logAny(logLevelError), false, "will not log"); logLevelStdErr = logLevelError; TEST_RESULT_VOID(logAnySet(), "set log any"); TEST_RESULT_BOOL(logAny(logLevelError), true, "will log"); logLevelFile = logLevelWarn; TEST_RESULT_VOID(logAnySet(), "set log any"); TEST_RESULT_BOOL(logAny(logLevelWarn), false, "will not log"); logHandleFile = 1; TEST_RESULT_VOID(logAnySet(), "set log any"); TEST_RESULT_BOOL(logAny(logLevelWarn), true, "will log"); logHandleFile = -1; } // ***************************************************************************************************************************** if (testBegin("logWrite()")) { // Just test the error here -- success is well tested elsewhere TEST_ERROR( logWrite(-999, "message", 7, "invalid handle"), FileWriteError, "unable to write invalid handle: [9] Bad file descriptor"); } // ***************************************************************************************************************************** if (testBegin("logInternal() and logInternalFmt()")) { TEST_RESULT_VOID(logInit(logLevelOff, logLevelOff, logLevelOff, false, 1), "init logging to off"); TEST_RESULT_VOID( logInternal(logLevelWarn, LOG_LEVEL_MIN, LOG_LEVEL_MAX, 0, "file", "function", 0, "format"), "message not logged anywhere"); TEST_RESULT_VOID(logInit(logLevelWarn, logLevelOff, logLevelOff, true, 1), "init logging to warn (timestamp on)"); TEST_RESULT_VOID(logFileSet(BOGUS_STR), "ignore bogus filename because file logging is off"); TEST_RESULT_VOID( logInternal(logLevelWarn, LOG_LEVEL_MIN, LOG_LEVEL_MAX, 0, "file", "function", 0, "TEST"), "log timestamp"); String *logTime = strNewN(logBuffer, 23); TEST_RESULT_BOOL( regExpMatchOne( strNew("^20[0-9]{2}\\-[0-1][0-9]\\-[0-3][0-9] [0-2][0-9]\\:[0-5][0-9]\\:[0-5][0-9]\\.[0-9]{3}$"), logTime), true, "check timestamp format: %s", strPtr(logTime)); // Redirect output to files char stdoutFile[1024]; snprintf(stdoutFile, sizeof(stdoutFile), "%s/stdout.log", testPath()); logHandleStdOut = testLogOpen(stdoutFile, O_WRONLY | O_CREAT | O_TRUNC, 0640); char stderrFile[1024]; snprintf(stderrFile, sizeof(stderrFile), "%s/stderr.log", testPath()); logHandleStdErr = testLogOpen(stderrFile, O_WRONLY | O_CREAT | O_TRUNC, 0640); TEST_RESULT_VOID(logInit(logLevelWarn, logLevelOff, logLevelOff, false, 1), "init logging to warn (timestamp off)"); logBuffer[0] = 0; TEST_RESULT_VOID( logInternalFmt(logLevelWarn, LOG_LEVEL_MIN, LOG_LEVEL_MAX, 0, "file", "function", 0, "format %d", 99), "log warn"); TEST_RESULT_Z(logBuffer, "P00 WARN: format 99\n", " check log"); // This won't be logged due to the range TEST_RESULT_VOID( logInternal(logLevelWarn, logLevelError, logLevelError, 0, "file", "function", 0, "NOT OUTPUT"), "out of range"); logBuffer[0] = 0; TEST_RESULT_VOID( logInternal(logLevelError, LOG_LEVEL_MIN, LOG_LEVEL_MAX, 0, "file", "function", 26, "message"), "log error"); TEST_RESULT_Z(logBuffer, "P00 ERROR: [026]: message\n", " check log"); logBuffer[0] = 0; TEST_RESULT_VOID( logInternal(logLevelError, LOG_LEVEL_MIN, LOG_LEVEL_MAX, 0, "file", "function", 26, "message1\nmessage2"), "log error with multiple lines"); TEST_RESULT_Z(logBuffer, "P00 ERROR: [026]: message1\nmessage2\n", " check log"); TEST_RESULT_VOID(logInit(logLevelDebug, logLevelDebug, logLevelDebug, false, 999), "init logging to debug"); // Log to file char fileFile[1024]; snprintf(fileFile, sizeof(stdoutFile), "%s/file.log", testPath()); logFileSet(fileFile); logBuffer[0] = 0; TEST_RESULT_VOID( logInternal( logLevelDebug, LOG_LEVEL_MIN, LOG_LEVEL_MAX, 999, "test.c", "test_func", 0, "message\nmessage2"), "log debug"); TEST_RESULT_Z(logBuffer, "P999 DEBUG: test::test_func: message\nmessage2\n", " check log"); // This won't be logged due to the range TEST_RESULT_VOID( logInternal(logLevelDebug, logLevelTrace, logLevelTrace, 0, "test.c", "test_func", 0, "NOT OUTPUT"), "out of range"); logBuffer[0] = 0; TEST_RESULT_VOID( logInternal(logLevelTrace, LOG_LEVEL_MIN, LOG_LEVEL_MAX, 0, "test.c", "test_func", 0, "message"), "log debug"); TEST_RESULT_Z(logBuffer, "P000 TRACE: test::test_func: message\n", " check log"); // Reopen the log file TEST_RESULT_VOID(logInit(logLevelDebug, logLevelDebug, logLevelDebug, false, 99), "reduce log size"); TEST_RESULT_BOOL(logFileSet(fileFile), true, "open valid file"); logBuffer[0] = 0; TEST_RESULT_VOID( logInternal(logLevelInfo, LOG_LEVEL_MIN, LOG_LEVEL_MAX, 1, "test.c", "test_func", 0, "info message"), "log info"); TEST_RESULT_Z(logBuffer, "P01 INFO: info message\n", " check log"); TEST_RESULT_VOID( logInternal(logLevelInfo, LOG_LEVEL_MIN, LOG_LEVEL_MAX, 99, "test.c", "test_func", 0, "info message 2"), "log info"); TEST_RESULT_Z(logBuffer, "P99 INFO: info message 2\n", " check log"); // Reopen invalid log file TEST_RESULT_BOOL(logFileSet("/" BOGUS_STR), false, "attempt to open bogus file"); TEST_RESULT_INT(logHandleFile, -1, "log file is closed"); // Close logging again TEST_RESULT_VOID(logInit(logLevelDebug, logLevelDebug, logLevelDebug, false, 99), "reduce log size"); TEST_RESULT_BOOL(logFileSet(fileFile), true, "open valid file"); TEST_RESULT_BOOL(logHandleFile != -1, true, "log file is open"); logClose(); TEST_RESULT_INT(logLevelStdOut, logLevelOff, "console logging is off"); TEST_RESULT_INT(logLevelStdErr, logLevelOff, "stderr logging is off"); TEST_RESULT_INT(logLevelFile, logLevelOff, "file logging is off"); TEST_RESULT_INT(logHandleFile, -1, "log file is closed"); // Check stdout testLogResult( stdoutFile, "P00 WARN: format 99\n" "P00 ERROR: [026]: message\n" "P00 ERROR: [026]: message1\n" " message2"); // Check stderr testLogResult( stderrFile, "DEBUG: test::test_func: message\n" " message2\n" "INFO: info message\n" "INFO: info message 2\n" "WARN: unable to open log file '/BOGUS': Permission denied\n" " NOTE: process will continue without log file."); // Check file testLogResult( fileFile, "-------------------PROCESS START-------------------\n" "P999 DEBUG: test::test_func: message\n" " message2\n" "\n" "-------------------PROCESS START-------------------\n" "P01 INFO: info message\n" "P99 INFO: info message 2"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/memContextTest.c000066400000000000000000000441761362531507100246750ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Memory Contexts ***********************************************************************************************************************************/ /*********************************************************************************************************************************** testFree - test callback function ***********************************************************************************************************************************/ MemContext *memContextCallbackArgument = NULL; bool testFreeThrow = false; void testFree(void *thisVoid) { MemContext *this = thisVoid; TEST_RESULT_INT(this->state, memContextStateFreeing, "state should be freeing before memContextFree() in callback"); memContextFree(this); TEST_RESULT_INT(this->state, memContextStateFreeing, "state should still be freeing after memContextFree() in callback"); TEST_ERROR(memContextCallbackSet(this, testFree, this), AssertError, "cannot assign callback to inactive context"); TEST_ERROR(memContextSwitch(this), AssertError, "cannot switch to inactive context"); TEST_ERROR(memContextName(this), AssertError, "cannot get name for inactive context"); memContextCallbackArgument = this; if (testFreeThrow) THROW(AssertError, "error in callback"); } /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("memAllocInternal(), memReAllocInternal(), and memFreeInternal()")) { // Test too large allocation -- only test this on 64-bit systems since 32-bit systems tend to work with any value that // valgrind will accept if (TEST_64BIT()) { TEST_ERROR(memAllocInternal((size_t)5629499534213120), MemoryError, "unable to allocate 5629499534213120 bytes"); TEST_ERROR(memFreeInternal(NULL), AssertError, "assertion 'buffer != NULL' failed"); // Check that bad realloc is caught void *buffer = memAllocInternal(sizeof(size_t)); TEST_ERROR( memReAllocInternal(buffer, (size_t)5629499534213120), MemoryError, "unable to reallocate 5629499534213120 bytes"); memFreeInternal(buffer); } // Memory allocation void *buffer = memAllocInternal(sizeof(size_t)); // Memory reallocation memset(buffer, 0xC7, sizeof(size_t)); unsigned char *buffer2 = memReAllocInternal(buffer, sizeof(size_t) * 2); int expectedTotal = 0; for (unsigned int charIdx = 0; charIdx < sizeof(size_t); charIdx++) expectedTotal += buffer2[charIdx] == 0xC7; TEST_RESULT_INT(expectedTotal, sizeof(size_t), "all old bytes are filled"); memFreeInternal(buffer2); } // ***************************************************************************************************************************** if (testBegin("memContextNew() and memContextFree()")) { // Make sure top context was created TEST_RESULT_Z(memContextName(memContextTop()), "TOP", "top context should exist"); TEST_RESULT_INT(memContextTop()->contextChildListSize, 0, "top context should init with zero children"); TEST_RESULT_PTR(memContextTop()->contextChildList, NULL, "top context child list empty"); // Current context should equal top context TEST_RESULT_PTR(memContextCurrent(), memContextTop(), "top context == current context"); // Context name length errors TEST_ERROR(memContextNew(""), AssertError, "assertion 'name[0] != '\\0'' failed"); MemContext *memContext = memContextNew("test1"); TEST_RESULT_Z(memContextName(memContext), "test1", "test1 context name"); TEST_RESULT_PTR(memContext->contextParent, memContextTop(), "test1 context parent is top"); TEST_RESULT_INT(memContextTop()->contextChildListSize, MEM_CONTEXT_INITIAL_SIZE, "initial top context child list size"); TEST_RESULT_PTR(memContextSwitch(memContext), memContextTop(), "switch returns top as old context"); TEST_RESULT_PTR(memContext, memContextCurrent(), "current context is now test1"); // Create enough mem contexts to use up the initially allocated block for (int contextIdx = 1; contextIdx < MEM_CONTEXT_INITIAL_SIZE; contextIdx++) { memContextSwitch(memContextTop()); memContextNew("test-filler"); TEST_RESULT_BOOL( memContextTop()->contextChildList[contextIdx]->state == memContextStateActive, true, "new context is active"); TEST_RESULT_Z(memContextName(memContextTop()->contextChildList[contextIdx]), "test-filler", "new context name"); } // This forces the child context array to grow memContextNew("test5"); TEST_RESULT_INT(memContextTop()->contextChildListSize, MEM_CONTEXT_INITIAL_SIZE * 2, "increased child context list size"); TEST_RESULT_UINT(memContextTop()->contextChildFreeIdx, MEM_CONTEXT_INITIAL_SIZE + 1, "check context free idx"); // Free a context memContextFree(memContextTop()->contextChildList[1]); TEST_RESULT_BOOL( memContextTop()->contextChildList[1]->state == memContextStateActive, false, "child context inactive after free"); TEST_RESULT_PTR(memContextCurrent(), memContextTop(), "current context is top"); TEST_RESULT_UINT(memContextTop()->contextChildFreeIdx, 1, "check context free idx"); // Create a new context and it should end up in the same spot memContextNew("test-reuse"); TEST_RESULT_BOOL( memContextTop()->contextChildList[1]->state == memContextStateActive, true, "new context in same index as freed context is active"); TEST_RESULT_Z(memContextName(memContextTop()->contextChildList[1]), "test-reuse", "new context name"); TEST_RESULT_UINT(memContextTop()->contextChildFreeIdx, 2, "check context free idx"); // Next context will be at the end memContextNew("test-at-end"); TEST_RESULT_UINT(memContextTop()->contextChildFreeIdx, MEM_CONTEXT_INITIAL_SIZE + 2, "check context free idx"); // Create a child context to test recursive free memContextSwitch(memContextTop()->contextChildList[MEM_CONTEXT_INITIAL_SIZE]); memContextNew("test-reuse"); TEST_RESULT_PTR_NE( memContextTop()->contextChildList[MEM_CONTEXT_INITIAL_SIZE]->contextChildList, NULL, "context child list is allocated"); TEST_RESULT_INT( memContextTop()->contextChildList[MEM_CONTEXT_INITIAL_SIZE]->contextChildListSize, MEM_CONTEXT_INITIAL_SIZE, "context child list initial size"); TEST_ERROR( memContextFree(memContextTop()->contextChildList[MEM_CONTEXT_INITIAL_SIZE]), AssertError, "cannot free current context 'test5'"); memContextSwitch(memContextTop()); memContextFree(memContextTop()->contextChildList[MEM_CONTEXT_INITIAL_SIZE]); TEST_ERROR( memContextFree(memContextTop()->contextChildList[MEM_CONTEXT_INITIAL_SIZE]), AssertError, "cannot free inactive context"); MemContext *noAllocation = memContextNew("empty"); noAllocation->allocListSize = 0; free(noAllocation->allocList); TEST_RESULT_VOID(memContextFree(noAllocation), "free context with no allocations"); } // ***************************************************************************************************************************** if (testBegin("memContextAlloc(), memNew*(), memGrow(), and memFree()")) { memContextSwitch(memContextTop()); memNewPtrArray(1); MemContext *memContext = memContextNew("test-alloc"); memContextSwitch(memContext); for (int allocIdx = 0; allocIdx <= MEM_CONTEXT_ALLOC_INITIAL_SIZE; allocIdx++) { memNew(sizeof(size_t)); TEST_RESULT_INT( memContextCurrent()->allocListSize, allocIdx == MEM_CONTEXT_ALLOC_INITIAL_SIZE ? MEM_CONTEXT_ALLOC_INITIAL_SIZE * 2 : MEM_CONTEXT_ALLOC_INITIAL_SIZE, "allocation list size"); } unsigned char *buffer = memNew(sizeof(size_t)); // Grow memory memset(buffer, 0xFE, sizeof(size_t)); buffer = memResize(buffer, sizeof(size_t) * 2); // Check that original portion of the buffer is preserved int expectedTotal = 0; for (unsigned int charIdx = 0; charIdx < sizeof(size_t); charIdx++) expectedTotal += buffer[charIdx] == 0xFE; TEST_RESULT_INT(expectedTotal, sizeof(size_t), "all bytes are 0xFE in original portion"); // Free memory TEST_RESULT_UINT(memContextCurrent()->allocFreeIdx, MEM_CONTEXT_ALLOC_INITIAL_SIZE + 2, "check alloc free idx"); TEST_RESULT_VOID(memFree(memContextCurrent()->allocList[0].buffer), "free allocation"); TEST_ERROR(memFree(memContextCurrent()->allocList[0].buffer), AssertError, "unable to find allocation"); TEST_RESULT_UINT(memContextCurrent()->allocFreeIdx, 0, "check alloc free idx"); TEST_RESULT_VOID(memFree(memContextCurrent()->allocList[1].buffer), "free allocation"); TEST_RESULT_UINT(memContextCurrent()->allocFreeIdx, 0, "check alloc free idx"); TEST_RESULT_VOID(memNew(3), "new allocation"); TEST_RESULT_UINT(memContextCurrent()->allocFreeIdx, 1, "check alloc free idx"); TEST_RESULT_VOID(memNew(3), "new allocation"); TEST_RESULT_UINT(memContextCurrent()->allocFreeIdx, 2, "check alloc free idx"); TEST_RESULT_VOID(memNew(3), "new allocation"); TEST_RESULT_UINT(memContextCurrent()->allocFreeIdx, MEM_CONTEXT_ALLOC_INITIAL_SIZE + 3, "check alloc free idx"); TEST_ERROR(memFree(NULL), AssertError, "assertion 'buffer != NULL' failed"); TEST_ERROR(memFree((void *)0x01), AssertError, "unable to find allocation"); memFree(buffer); memContextSwitch(memContextTop()); memContextFree(memContext); } // ***************************************************************************************************************************** if (testBegin("memContextCallbackSet()")) { TEST_ERROR( memContextCallbackSet(memContextTop(), testFree, NULL), AssertError, "top context may not have a callback"); MemContext *memContext = memContextNew("test-callback"); memContextCallbackSet(memContext, testFree, memContext); TEST_ERROR( memContextCallbackSet(memContext, testFree, memContext), AssertError, "callback is already set for context 'test-callback'"); // Clear and reset it memContextCallbackClear(memContext); memContextCallbackSet(memContext, testFree, memContext); memContextFree(memContext); TEST_RESULT_PTR(memContextCallbackArgument, memContext, "callback argument is context"); // Now test with an error // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(memContext, memContextNew("test-callback-error"), "new mem context"); testFreeThrow = true; TEST_RESULT_VOID(memContextCallbackSet(memContext, testFree, memContext), " set callback"); TEST_ERROR(memContextFree(memContext), AssertError, "error in callback"); TEST_RESULT_UINT(memContext->state, memContextStateFree, " check that mem context was completely freed"); } // ***************************************************************************************************************************** if (testBegin("MEM_CONTEXT_BEGIN() and MEM_CONTEXT_END()")) { memContextSwitch(memContextTop()); MemContext *memContext = memContextNew("test-block"); // Check normal block MEM_CONTEXT_BEGIN(memContext) { TEST_RESULT_Z(memContextName(memContextCurrent()), "test-block", "context is now test-block"); } MEM_CONTEXT_END(); TEST_RESULT_Z(memContextName(memContextCurrent()), "TOP", "context is now top"); // Check block that errors TEST_ERROR( MEM_CONTEXT_BEGIN(memContext) { TEST_RESULT_Z(memContextName(memContextCurrent()), "test-block", "context is now test-block"); THROW(AssertError, "error in test block"); } MEM_CONTEXT_END(), AssertError, "error in test block"); TEST_RESULT_Z(memContextName(memContextCurrent()), "TOP", "context is now top"); // Reset temp mem context after a single interaction // ------------------------------------------------------------------------------------------------------------------------- MEM_CONTEXT_TEMP_RESET_BEGIN() { TEST_RESULT_BOOL(MEM_CONTEXT_TEMP()->allocList[0].active, false, "nothing allocated"); memNew(99); TEST_RESULT_BOOL(MEM_CONTEXT_TEMP()->allocList[0].active, true, "1 allocation"); MEM_CONTEXT_TEMP_RESET(1); TEST_RESULT_BOOL(MEM_CONTEXT_TEMP()->allocList[0].active, false, "nothing allocated"); } MEM_CONTEXT_TEMP_END(); } // ***************************************************************************************************************************** if (testBegin("MEM_CONTEXT_NEW_BEGIN() and MEM_CONTEXT_NEW_END()")) { // ------------------------------------------------------------------------------------------------------------------------ // Successful context new block const char *memContextTestName = "test-new-block"; MemContext *memContext = NULL; MEM_CONTEXT_NEW_BEGIN(memContextTestName) { memContext = MEM_CONTEXT_NEW(); TEST_RESULT_PTR(memContext, memContextCurrent(), "new mem context is current"); TEST_RESULT_Z(memContextName(memContext), memContextTestName, "context is now '%s'", memContextTestName); } MEM_CONTEXT_NEW_END(); TEST_RESULT_PTR(memContextCurrent(), memContextTop(), "context is now 'TOP'"); TEST_RESULT_BOOL(memContext->state == memContextStateActive, true, "new mem context is still active"); memContextFree(memContext); // ------------------------------------------------------------------------------------------------------------------------ // Failed context new block memContextTestName = "test-new-failed-block"; bool bCatch = false; TRY_BEGIN() { MEM_CONTEXT_NEW_BEGIN(memContextTestName) { memContext = MEM_CONTEXT_NEW(); TEST_RESULT_Z(memContextName(memContext), memContextTestName, "context is now '%s'", memContextTestName); THROW(AssertError, "create failed"); } MEM_CONTEXT_NEW_END(); } CATCH(AssertError) { bCatch = true; } TRY_END(); TEST_RESULT_BOOL(bCatch, true, "new context error was caught"); TEST_RESULT_PTR(memContextCurrent(), memContextTop(), "context is now 'TOP'"); TEST_RESULT_UINT(memContext->state == memContextStateFree, true, "new mem context is not active"); } // ***************************************************************************************************************************** if (testBegin("memContextMove()")) { TEST_RESULT_VOID(memContextMove(NULL, memContextTop()), "move NULL context"); // ------------------------------------------------------------------------------------------------------------------------- MemContext *memContext = NULL; MemContext *memContext2 = NULL; void *mem = NULL; void *mem2 = NULL; MEM_CONTEXT_NEW_BEGIN("outer") { MEM_CONTEXT_TEMP_BEGIN() { memContextNew("not-to-be-moved"); MEM_CONTEXT_NEW_BEGIN("inner") { memContext = MEM_CONTEXT_NEW(); mem = memNew(sizeof(int)); } MEM_CONTEXT_NEW_END(); TEST_RESULT_PTR(memContext->allocList[0].buffer, mem, "check memory allocation"); TEST_RESULT_PTR(memContextCurrent()->contextChildList[1], memContext, "check memory context"); // Null out the mem context in the parent so the move will fail memContextCurrent()->contextChildList[1] = NULL; TEST_ERROR(memContextMove(memContext, memContextPrior()), AssertError, "unable to find mem context in old parent"); // Set it back so the move will succeed memContextCurrent()->contextChildList[1] = memContext; TEST_RESULT_VOID(memContextMove(memContext, memContextPrior()), "move context"); TEST_RESULT_VOID(memContextMove(memContext, memContextPrior()), "move context again"); // Move another context MEM_CONTEXT_NEW_BEGIN("inner2") { memContext2 = MEM_CONTEXT_NEW(); mem2 = memNew(sizeof(int)); } MEM_CONTEXT_NEW_END(); TEST_RESULT_VOID(memContextMove(memContext2, memContextPrior()), "move context"); } MEM_CONTEXT_TEMP_END(); TEST_RESULT_PTR(memContext->allocList[0].buffer, mem, "check memory allocation"); TEST_RESULT_PTR(memContextCurrent()->contextChildList[1], memContext, "check memory context"); TEST_RESULT_PTR(memContext2->allocList[0].buffer, mem2, "check memory allocation 2"); TEST_RESULT_PTR(memContextCurrent()->contextChildList[2], memContext2, "check memory context 2"); } MEM_CONTEXT_NEW_END(); } memContextFree(memContextTop()); FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/objectTest.c000066400000000000000000000103751362531507100240120ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Object Helper Macros ***********************************************************************************************************************************/ #include "common/debug.h" #include "common/log.h" #include "common/memContext.h" /*********************************************************************************************************************************** TestObject Type ***********************************************************************************************************************************/ #define TEST_OBJECT_TYPE TestObject #define TEST_OBJECT_PREFIX testObject typedef struct TestObject { MemContext *memContext; // Mem context } TestObject; /*********************************************************************************************************************************** Macros for function logging ***********************************************************************************************************************************/ #define FUNCTION_LOG_TEST_OBJECT_TYPE \ TestObject * #define FUNCTION_LOG_TEST_OBJECT_FORMAT(value, buffer, bufferSize) \ objToLog(value, STRINGIFY(TestObject), buffer, bufferSize) /*********************************************************************************************************************************** Free object ***********************************************************************************************************************************/ void testObjectFree(TestObject *this); OBJECT_DEFINE_MOVE(TEST_OBJECT); OBJECT_DEFINE_FREE(TEST_OBJECT); /*********************************************************************************************************************************** Free object resource ***********************************************************************************************************************************/ bool testObjectFreeResourceCalled = false; static void testObjectFreeResource(void *thisVoid); OBJECT_DEFINE_FREE_RESOURCE_BEGIN(TEST_OBJECT, LOG, logLevelTrace) { testObjectFreeResourceCalled = true; } OBJECT_DEFINE_FREE_RESOURCE_END(LOG); /*********************************************************************************************************************************** New object ***********************************************************************************************************************************/ TestObject * testObjectNew(void) { FUNCTION_LOG_VOID(logLevelTrace); TestObject *this = NULL; MEM_CONTEXT_NEW_BEGIN(STRINGIFY(TestObject)) { this = memNew(sizeof(TestObject)); *this = (TestObject) { .memContext = MEM_CONTEXT_NEW(), }; memContextCallbackSet(this->memContext, testObjectFreeResource, (void *)1); } MEM_CONTEXT_NEW_END(); FUNCTION_LOG_RETURN(TEST_OBJECT, this); } /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("OBJECT_DEFINE*()")) { TestObject *testObject = NULL; MEM_CONTEXT_TEMP_BEGIN() { TEST_ASSIGN(testObject, testObjectNew(), "new test object"); TEST_RESULT_VOID(testObjectMove(testObject, memContextPrior()), "move object to parent context"); TEST_RESULT_VOID(testObjectMove(NULL, memContextPrior()), "move null object"); } MEM_CONTEXT_TEMP_END(); TEST_RESULT_VOID(testObjectFree(testObject), " free object"); TEST_RESULT_BOOL(testObjectFreeResourceCalled, true, " check callback"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/regExpTest.c000066400000000000000000000116041362531507100237720ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Regular Expression Handler ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("regExpNew(), regExpMatch(), and regExpFree()")) { // Error message varies based on the libc version TRY_BEGIN() { TEST_ERROR(regExpNew(strNew("[[[")), FormatError, "Unmatched [ or [^"); } CATCH(AssertError) { TEST_ERROR(regExpNew(strNew("[[[")), FormatError, "Unmatched [, [^, [:, [., or [="); } TRY_END(); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("new regexp"); RegExp *regExp = NULL; TEST_ASSIGN(regExp, regExpNew(strNew("^abc")), "new regexp"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("regexp match"); const String *string = STRDEF("abcdef"); TEST_RESULT_BOOL(regExpMatch(regExp, string), true, "match regexp"); TEST_RESULT_PTR(regExpMatchPtr(regExp), strPtr(string), "check ptr"); TEST_RESULT_SIZE(regExpMatchSize(regExp), 3, "check size"); TEST_RESULT_STR_Z(regExpMatchStr(regExp), "abc", "check str"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("no regexp match"); TEST_RESULT_BOOL(regExpMatch(regExp, strNew("bcdef")), false, "no match regexp"); TEST_RESULT_PTR(regExpMatchPtr(regExp), NULL, "check ptr"); TEST_RESULT_SIZE(regExpMatchSize(regExp), 0, "check size"); TEST_RESULT_PTR(regExpMatchStr(regExp), NULL, "check str"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("free regexp"); TEST_RESULT_VOID(regExpFree(regExp), "free regexp"); } // ***************************************************************************************************************************** if (testBegin("regExpPrefix()")) { TEST_RESULT_PTR(regExpPrefix(NULL), NULL, "null expression has no prefix"); TEST_RESULT_PTR(regExpPrefix(strNew("")), NULL, "empty expression has no prefix"); TEST_RESULT_PTR(regExpPrefix(strNew("ABC")), NULL, "expression without begin anchor has no prefix"); TEST_RESULT_PTR(regExpPrefix(strNew("^.")), NULL, "expression with no regular character has no prefix"); TEST_RESULT_STR_Z(regExpPrefix(strNew("^ABC^")), "ABC", "prefix stops at special character"); TEST_RESULT_STR_Z(regExpPrefix(strNew("^ABC$")), "ABC", "prefix stops at special character"); TEST_RESULT_STR_Z(regExpPrefix(strNew("^ABC*")), "ABC", "prefix stops at special character"); TEST_RESULT_STR_Z(regExpPrefix(strNew("^ABC+")), "ABC", "prefix stops at special character"); TEST_RESULT_STR_Z(regExpPrefix(strNew("^ABC-")), "ABC", "prefix stops at special character"); TEST_RESULT_STR_Z(regExpPrefix(strNew("^ABC?")), "ABC", "prefix stops at special character"); TEST_RESULT_STR_Z(regExpPrefix(strNew("^ABC(")), "ABC", "prefix stops at special character"); TEST_RESULT_STR_Z(regExpPrefix(strNew("^ABC[")), "ABC", "prefix stops at special character"); TEST_RESULT_STR_Z(regExpPrefix(strNew("^ABC{")), "ABC", "prefix stops at special character"); TEST_RESULT_STR_Z(regExpPrefix(strNew("^ABC ")), "ABC", "prefix stops at special character"); TEST_RESULT_STR_Z(regExpPrefix(strNew("^ABC|")), "ABC", "prefix stops at special character"); TEST_RESULT_STR_Z(regExpPrefix(strNew("^ABC\\")), "ABC", "prefix stops at special character"); TEST_RESULT_STR_Z(regExpPrefix(strNew("^ABCDEF")), "ABCDEF", "prefix is entire expression"); } // ***************************************************************************************************************************** if (testBegin("regExpMatchOne()")) { TEST_RESULT_BOOL(regExpMatchOne(strNew("^abc"), strNew("abcdef")), true, "match regexp"); TEST_RESULT_BOOL(regExpMatchOne(strNew("^abc"), strNew("bcdef")), false, "no match regexp"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/stackTraceTest.c000066400000000000000000000214661362531507100246330ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Stack Trace Handler ***********************************************************************************************************************************/ #include /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("stackTraceFmt()")) { char buffer[8]; TEST_RESULT_INT(stackTraceFmt(buffer, 8, 0, "%s", "1234567"), 7, "fill buffer"); TEST_RESULT_Z(buffer, "1234567", " check buffer"); TEST_RESULT_INT(stackTraceFmt(buffer, 8, 7, "%s", "1234567"), 7, "try to fill buffer - at end"); TEST_RESULT_Z(buffer, "1234567", " check buffer is unmodified"); TEST_RESULT_INT(stackTraceFmt(buffer, 8, 8, "%s", "1234567"), 7, "try to fill buffer - past end"); TEST_RESULT_Z(buffer, "1234567", " check buffer is unmodified"); } // ***************************************************************************************************************************** if (testBegin("stackTraceInit() and stackTraceError()")) { #ifdef WITH_BACKTRACE stackTraceInit(BOGUS_STR); // This time does nothing stackTraceInit(BOGUS_STR); // This will call the error routine since we passed a bogus exe assert(stackTracePush("file1.c", "function1", logLevelDebug) == logLevelDebug); stackTracePop("file1.c", "function1"); backTraceState = NULL; #endif } // ***************************************************************************************************************************** if (testBegin("stackTraceTestStart(), stackTraceTestStop(), and stackTraceTest()")) { #ifndef NDEBUG assert(stackTraceTest()); stackTraceTestStop(); assert(!stackTraceTest()); stackTraceTestStart(); assert(stackTraceTest()); #endif } // ***************************************************************************************************************************** if (testBegin("stackTracePush(), stackTracePop(), and stackTraceClean()")) { char buffer[4096]; #ifdef WITH_BACKTRACE stackTraceInit(testExe()); #endif TEST_ERROR(stackTracePop("file1", "function1", false), AssertError, "assertion 'stackSize > 0' failed"); assert(stackTracePush("file1", "function1", logLevelDebug) == logLevelDebug); assert(stackSize == 1); TEST_ERROR( stackTracePop("file2", "function2", false), AssertError, "popping file2:function2 but expected file1:function1"); assert(stackTracePush("file1", "function1", logLevelDebug) == logLevelDebug); TEST_ERROR( stackTracePop("file1", "function2", false), AssertError, "popping file1:function2 but expected file1:function1"); TRY_BEGIN() { assert(stackTracePush("file1.c", "function1", logLevelDebug) == logLevelDebug); stackTraceParamLog(); assert(strcmp(stackTraceParam(), "void") == 0); stackTraceToZ(buffer, sizeof(buffer), "file1.c", "function2", 99); #ifdef WITH_BACKTRACE TEST_RESULT_Z( buffer, "file1:function2:99:(test build required for parameters)\n" " ... function(s) omitted ...\n" "file1:function1:0:(void)", " check stack trace"); #else TEST_RESULT_Z( buffer, "file1:function2:99:(test build required for parameters)\n" " ... function(s) omitted ...\n" "file1:function1:(void)", " check stack trace"); #endif assert(stackTracePush("file1.c", "function2", logLevelTrace) == logLevelTrace); stackTrace[stackSize - 2].fileLine = 7777; assert(strcmp(stackTraceParam(), "trace log level required for parameters") == 0); stackTrace[stackSize - 1].functionLogLevel = logLevelDebug; TRY_BEGIN() { // Function with one param assert(stackTracePush("file2.c", "function2", logLevelDebug) == logLevelDebug); stackTrace[stackSize - 2].fileLine = 7777; stackTraceParamAdd((size_t)snprintf(stackTraceParamBuffer("param1"), STACK_TRACE_PARAM_MAX, "value1")); stackTraceParamLog(); assert(strcmp(stackTraceParam(), "param1: value1") == 0); // Function with multiple params assert(stackTracePush("file3.c", "function3", logLevelTrace) == logLevelTrace); stackTrace[stackSize - 2].fileLine = 7777; stackTraceParamLog(); stackTraceParamAdd((size_t)snprintf(stackTraceParamBuffer("param1"), STACK_TRACE_PARAM_MAX, "value1")); stackTraceParamAdd((size_t)snprintf(stackTraceParamBuffer("param2"), STACK_TRACE_PARAM_MAX, "value2")); assert(strcmp(stackTraceParam(), "param1: value1, param2: value2") == 0); // Calculate exactly where the buffer will overflow (4 is for the separators) size_t bufferOverflow = sizeof(functionParamBuffer) - (STACK_TRACE_PARAM_MAX * 2) - strlen("param1") - 4 - (size_t)(stackTrace[stackSize - 1].param - functionParamBuffer); // Munge the previous previous param in the stack so that the next one will just barely fit stackTrace[stackSize - 1].paramSize = bufferOverflow - 1; assert(stackTracePush("file4.c", "function4", logLevelDebug) == logLevelTrace); stackTrace[stackSize - 2].fileLine = 7777; stackTraceParamLog(); assert(stackSize == 5); // This param will fit exactly stackTraceParamAdd((size_t)snprintf(stackTraceParamBuffer("param1"), STACK_TRACE_PARAM_MAX, "value1")); assert(strcmp(stackTraceParam(), "param1: value1") == 0); // But when we increment the param pointer by one there will be overflow stackTrace[stackSize - 1].param += 1; stackTrace[stackSize - 1].paramSize = 0; stackTraceParamAdd((size_t)snprintf(stackTraceParamBuffer("param1"), STACK_TRACE_PARAM_MAX, "value1")); assert(strcmp(stackTraceParam(), "buffer full - parameters not available") == 0); stackTraceToZ(buffer, sizeof(buffer), "file4.c", "function4", 99); #ifdef WITH_BACKTRACE TEST_RESULT_Z( buffer, "file4:function4:99:(buffer full - parameters not available)\n" "file3:function3:7777:(param1: value1, param2: value2)\n" "file2:function2:7777:(param1: value1)\n" "file1:function2:7777:(debug log level required for parameters)\n" "file1:function1:7777:(void)", "stack trace"); #else TEST_RESULT_Z( buffer, "file4:function4:99:(buffer full - parameters not available)\n" "file3:function3:(param1: value1, param2: value2)\n" "file2:function2:(param1: value1)\n" "file1:function2:(debug log level required for parameters)\n" "file1:function1:(void)", "stack trace"); #endif stackTracePop("file4.c", "function4", false); assert(stackSize == 4); // Check that stackTracePop() works with test tracing stackTracePush("file_test.c", "function_test", logLevelDebug); stackTracePop("file_test.c", "function_test", true); // Check that stackTracePop() does nothing when test tracing is disabled stackTraceTestStop(); stackTracePop("bogus.c", "bogus", true); stackTraceTestStart(); THROW(ConfigError, "test"); } CATCH(ConfigError) { // Ignore the error since we are just testing stack cleanup } TRY_END(); assert(stackSize == 2); THROW(ConfigError, "test"); } CATCH(ConfigError) { // Ignore the error since we are just testing stack cleanup } TRY_END(); assert(stackSize == 0); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/timeTest.c000066400000000000000000000136221362531507100235000ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Time Management ***********************************************************************************************************************************/ #include /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("timeMSec()")) { // Make sure the time returned is between 2017 and 2100 TEST_RESULT_BOOL(timeMSec() > (TimeMSec)1483228800000, true, "lower range check"); TEST_RESULT_BOOL(timeMSec() < (TimeMSec)4102444800000, true, "upper range check"); } // ***************************************************************************************************************************** if (testBegin("sleepMSec()")) { // Sleep and measure time slept TimeMSec begin = timeMSec(); sleepMSec(1400); TimeMSec end = timeMSec(); // Check bounds for time slept (within a range of .1 seconds) TEST_RESULT_BOOL(end - begin >= (TimeMSec)1400, true, "lower range check"); TEST_RESULT_BOOL(end - begin < (TimeMSec)1500, true, "upper range check"); } // ***************************************************************************************************************************** if (testBegin("yearIsLeap(), dayOfYear(), timePartsValid(), tzPartsValid(), tzOffsetSeconds(), and epochFromParts()")) { TEST_TITLE("is leap year"); TEST_RESULT_BOOL(yearIsLeap(1996), true, "1996 is leap year"); TEST_RESULT_BOOL(yearIsLeap(2000), true, "2000 is leap year"); TEST_RESULT_BOOL(yearIsLeap(2001), false, "2001 is not leap year"); TEST_RESULT_BOOL(yearIsLeap(2100), false, "2100 is not leap year"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("day of year"); TEST_RESULT_INT(dayOfYear(1995, 3, 1), 60, "1995-03-01 day of year"); TEST_RESULT_INT(dayOfYear(1996, 3, 1), 61, "1996-03-01 day of year"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("date parts valid"); TEST_ERROR(datePartsValid(1969, 1, 1), FormatError, "invalid date 1969-01-01"); TEST_ERROR(datePartsValid(1970, 0, 0), FormatError, "invalid date 1970-00-00"); TEST_ERROR(datePartsValid(1970, 13, 0), FormatError, "invalid date 1970-13-00"); TEST_ERROR(datePartsValid(1970, 12, 0), FormatError, "invalid date 1970-12-00"); TEST_ERROR(datePartsValid(1970, 2, 29), FormatError, "invalid date 1970-02-29"); TEST_RESULT_VOID(datePartsValid(1972, 2, 29), "valid date"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("time parts valid"); TEST_ERROR(timePartsValid(-1, 0, 0), FormatError, "invalid time -1:00:00"); TEST_ERROR(timePartsValid(24, 0, 0), FormatError, "invalid time 24:00:00"); TEST_ERROR(timePartsValid( 0, -1, 0), FormatError, "invalid time 00:-1:00"); TEST_ERROR(timePartsValid( 0, 60, 0), FormatError, "invalid time 00:60:00"); TEST_ERROR(timePartsValid( 0, 0, -1), FormatError, "invalid time 00:00:-1"); TEST_ERROR(timePartsValid( 0, 0, 60), FormatError, "invalid time 00:00:60"); TEST_RESULT_VOID(timePartsValid(23, 59, 59), "valid time"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("timezone parts valid"); TEST_ERROR(tzPartsValid(-13, 0), FormatError, "invalid timezone -1300"); TEST_ERROR(tzPartsValid(15, 0), FormatError, "invalid timezone 1500"); TEST_ERROR(tzPartsValid(0, 5), FormatError, "invalid timezone 0005"); TEST_ERROR(tzPartsValid(-12, 30), FormatError, "invalid timezone -1230"); TEST_ERROR(tzPartsValid(14, 45), FormatError, "invalid timezone 1445"); TEST_RESULT_VOID(tzPartsValid(-12, 0), "max negative timezone"); TEST_RESULT_VOID(tzPartsValid(14, 0), "max positive timezone"); TEST_RESULT_VOID(tzPartsValid(0, 15), "valid timezone minute 15"); TEST_RESULT_VOID(tzPartsValid(13, 45), "valid timezone minute 45"); TEST_RESULT_VOID(tzPartsValid(-3, 30), "valid timezone minute 30"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("timezone offset in seconds"); TEST_RESULT_INT(tzOffsetSeconds(-3, 30), -12600, "negative timezone offset"); TEST_RESULT_INT(tzOffsetSeconds(13, 45), 49500, "positive timezone offset"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("time from parts"); TEST_RESULT_INT(epochFromParts(1970, 1, 1, 0, 0, 0, 0), 0, "beginning of epoch"); TEST_RESULT_INT(epochFromParts(1996, 3, 3, 3, 3, 3, 0), 825822183, "march of leap year"); TEST_RESULT_INT(epochFromParts(2000, 4, 4, 4, 4, 4, 0), 954821044, "april of non-leap year"); TEST_RESULT_INT(epochFromParts(2038, 1, 19, 3, 14, 7, 0), INT_MAX, "end of 32-bit signed int epoch"); TEST_RESULT_INT(epochFromParts(2020, 1, 8, 9, 18, 15, tzOffsetSeconds(-7, 0)), 1578500295, "epoch with timezone"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/typeBufferTest.c000066400000000000000000000176631362531507100246660ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Buffers ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("bufNew(), bufNewC, bufNewUseC, bufMove(), bufSize(), bufPtr(), and bufFree()")) { Buffer *buffer = NULL; MEM_CONTEXT_TEMP_BEGIN() { TEST_ASSIGN(buffer, bufNew(256), "new buffer"); bufMove(buffer, memContextPrior()); } MEM_CONTEXT_TEMP_END(); TEST_RESULT_PTR(bufPtr(buffer), buffer->buffer, "buffer pointer"); TEST_RESULT_INT(bufSize(buffer), 256, "buffer size"); TEST_ASSIGN(buffer, bufNewC("TEST-STR", sizeof("TEST-STR") - 1), "new buffer from string"); TEST_RESULT_BOOL(memcmp(bufPtr(buffer), "TEST-STR", 8) == 0, true, "check buffer"); TEST_ASSIGN(buffer, bufNewUseC((void *)"FIXED-BUFFER", sizeof("FIXED-BUFFER")), "new fixed buffer from string"); TEST_RESULT_BOOL(memcmp(bufPtr(buffer), "FIXED-BUFFER", 12) == 0, true, "check buffer"); TEST_ERROR(bufResize(buffer, 999), AssertError, "fixed size buffer cannot be resized"); TEST_RESULT_VOID(bufFree(buffer), "free buffer"); TEST_RESULT_VOID(bufFree(bufNew(0)), "free empty buffer"); TEST_RESULT_VOID(bufMove(NULL, memContextTop()), "move null buffer"); // ------------------------------------------------------------------------------------------------------------------------- char cBuffer[] = "ABCD"; TEST_ASSIGN(buffer, bufNewC(cBuffer, sizeof(cBuffer)), "create from c buffer"); TEST_RESULT_BOOL(memcmp(bufPtr(buffer), cBuffer, sizeof(cBuffer)) == 0, true, "check buffer"); } // ***************************************************************************************************************************** if (testBegin("bufResize(), bufFull(), bufLimit*(), bufRemains*(), and bufUsed*()")) { Buffer *buffer = NULL; unsigned char *bufferPtr = NULL; TEST_ASSIGN(buffer, bufNew(0), "new zero buffer"); TEST_RESULT_INT(bufSize(buffer), 0, "check size"); TEST_RESULT_PTR(bufResize(buffer, 256), buffer, "resize buffer"); TEST_RESULT_INT(bufSize(buffer), 256, "check size"); TEST_RESULT_VOID(bufUsedSet(buffer, 256), "set used size"); TEST_RESULT_BOOL(bufFull(buffer), true, "check buffer full"); // Load data TEST_ASSIGN(bufferPtr, bufPtr(buffer), "buffer pointer"); for (unsigned int bufferIdx = 0; bufferIdx < bufSize(buffer); bufferIdx++) bufferPtr[bufferIdx] = (unsigned char)bufferIdx; // Increase buffer size TEST_ASSIGN(bufferPtr, bufPtr(bufResize(buffer, 512)), "increase buffer size"); TEST_ASSIGN(bufferPtr, bufPtr(bufResize(buffer, 512)), "set to same size"); TEST_RESULT_INT(bufSize(buffer), 512, "check size"); TEST_RESULT_INT(bufUsed(buffer), 256, "check used size"); TEST_RESULT_BOOL(bufFull(buffer), false, "check buffer not full"); TEST_RESULT_INT(bufRemains(buffer), 256, "check remaining buffer space"); TEST_RESULT_PTR(bufRemainsPtr(buffer), bufPtr(buffer) + 256, "check remaining buffer space pointer"); TEST_RESULT_VOID(bufUsedInc(buffer, 256), "set used size"); TEST_RESULT_BOOL(bufFull(buffer), true, "check buffer full"); // Test that no bytes have changed in the original data unsigned int sameTotal = 0; for (unsigned int bufferIdx = 0; bufferIdx < 256; bufferIdx++) sameTotal += bufferPtr[bufferIdx] == bufferIdx; TEST_RESULT_INT(sameTotal, 256, "original bytes match"); // Decrease buffer size TEST_ASSIGN(bufferPtr, bufPtr(bufResize(buffer, 128)), "decrease buffer size"); TEST_RESULT_INT(bufSize(buffer), 128, "check size"); // Test that no bytes have changed in the original data sameTotal = 0; for (unsigned int bufferIdx = 0; bufferIdx < bufSize(buffer); bufferIdx++) sameTotal += bufferPtr[bufferIdx] == bufferIdx; TEST_RESULT_INT(sameTotal, 128, "original bytes match"); // Use limits to change size reporting TEST_RESULT_VOID(bufLimitSet(buffer, 64), "set limit"); TEST_RESULT_INT(bufSize(buffer), 64, " check limited size"); TEST_RESULT_VOID(bufLimitClear(buffer), " clear limit"); TEST_RESULT_INT(bufSize(buffer), 128, " check unlimited size"); // Resize to zero buffer TEST_RESULT_VOID(bufUsedZero(buffer), "set used to 0"); TEST_RESULT_INT(bufUsed(buffer), 0, "check used is zero"); TEST_RESULT_VOID(bufLimitSet(buffer, 64), "set limit to make sure it gets reduced with the resize"); TEST_RESULT_VOID(bufResize(buffer, 32), "decrease size to 32"); TEST_RESULT_INT(bufSize(buffer), 32, "check size"); TEST_RESULT_VOID(bufLimitSet(buffer, 0), "set limit so that it won't need to be resized"); TEST_RESULT_VOID(bufResize(buffer, 0), "decrease size to zero"); TEST_RESULT_INT(bufSize(buffer), 0, "check size"); TEST_RESULT_VOID(bufResize(buffer, 0), "decrease size to zero again"); TEST_RESULT_INT(bufSize(buffer), 0, "check size"); } // ***************************************************************************************************************************** if (testBegin("bufDup() and bufEq()")) { TEST_RESULT_BOOL(bufEq(BUFSTRDEF("123"), bufDup(BUFSTRDEF("1234"))), false, "buffer sizes not equal"); TEST_RESULT_BOOL(bufEq(BUFSTR(STRDEF("321")), BUFSTRDEF("123")), false, "buffer sizes equal"); TEST_RESULT_BOOL(bufEq(bufDup(BUFSTRZ("123")), BUF("123", 3)), true, "buffers equal"); } // ***************************************************************************************************************************** if (testBegin("bufHex()")) { TEST_RESULT_STR_Z(bufHex(BUFSTRDEF("ABC-CBA")), "4142432d434241", "buffer to hex"); } // ***************************************************************************************************************************** if (testBegin("bufCat*()")) { TEST_RESULT_STR_Z(strNewBuf(bufCat(bufNewC("123", 3), NULL)), "123", "cat null buffer"); TEST_RESULT_STR_Z(strNewBuf(bufCat(bufNewC("123", 3), bufNew(0))), "123", "cat empty buffer"); TEST_RESULT_STR_Z(strNewBuf(bufCat(bufNewC("123", 3), BUFSTRDEF("ABC"))), "123ABC", "cat buffer"); TEST_RESULT_STR_Z(strNewBuf(bufCatSub(bufNewC("123", 3), NULL, 0, 0)), "123", "cat sub null buffer"); TEST_RESULT_STR_Z(strNewBuf(bufCatSub(bufNewC("123", 3), bufNew(0), 0, 0)), "123", "cat sub empty buffer"); TEST_RESULT_STR_Z(strNewBuf(bufCatSub(bufNewC("123", 3), BUFSTRDEF("ABC"), 1, 2)), "123BC", "cat sub buffer"); Buffer *buffer = NULL; TEST_ASSIGN(buffer, bufNew(2), "new buffer with space"); TEST_RESULT_STR_Z(strNewBuf(bufCat(buffer, BUFSTRDEF("AB"))), "AB", "cat buffer with space"); } // ***************************************************************************************************************************** if (testBegin("bufToLog()")) { Buffer *buffer = bufNew(100); TEST_RESULT_STR_Z(bufToLog(buffer), "{used: 0, size: 100, limit: }", "buf to log"); bufLimitSet(buffer, 50); TEST_RESULT_STR_Z(bufToLog(buffer), "{used: 0, size: 100, limit: 50}", "buf to log"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/typeConvertTest.c000066400000000000000000000233201362531507100250600ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Convert Base Data Types ***********************************************************************************************************************************/ #include "common/stackTrace.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("cvtBoolToZ()")) { char buffer[STACK_TRACE_PARAM_MAX]; TEST_ERROR(cvtBoolToZ(true, buffer, 4), AssertError, "buffer overflow"); TEST_RESULT_INT(cvtBoolToZ(true, buffer, STACK_TRACE_PARAM_MAX), 4, "convert true bool to string"); TEST_RESULT_Z(buffer, "true", " check buffer"); TEST_RESULT_INT(cvtBoolToZ(false, buffer, STACK_TRACE_PARAM_MAX), 5, "convert false bool to string"); TEST_RESULT_Z(buffer, "false", " check buffer"); } // ***************************************************************************************************************************** if (testBegin("cvtCharToZ()")) { char buffer[STACK_TRACE_PARAM_MAX]; TEST_ERROR(cvtCharToZ('A', buffer, 1), AssertError, "buffer overflow"); TEST_RESULT_INT(cvtCharToZ('C', buffer, STACK_TRACE_PARAM_MAX), 1, "convert char to string"); TEST_RESULT_Z(buffer, "C", " check buffer"); } // ***************************************************************************************************************************** if (testBegin("cvtDoubleToZ() and cvtZToDouble()")) { char buffer[STACK_TRACE_PARAM_MAX]; TEST_ERROR(cvtDoubleToZ(999.1234, buffer, 4), AssertError, "buffer overflow"); TEST_RESULT_INT(cvtDoubleToZ(999.1234, buffer, STACK_TRACE_PARAM_MAX), 8, "convert double to string"); TEST_RESULT_Z(buffer, "999.1234", " check buffer"); TEST_RESULT_INT(cvtDoubleToZ(999999999.123456, buffer, STACK_TRACE_PARAM_MAX), 16, "convert double to string"); TEST_RESULT_Z(buffer, "999999999.123456", " check buffer"); TEST_RESULT_INT(cvtDoubleToZ(999.0, buffer, STACK_TRACE_PARAM_MAX), 3, "convert double to string"); TEST_RESULT_Z(buffer, "999", " check buffer"); TEST_ERROR(cvtZToDouble("AAA"), FormatError, "unable to convert string 'AAA' to double"); TEST_RESULT_DOUBLE(cvtZToDouble("0"), 0, "convert string to double"); TEST_RESULT_DOUBLE(cvtZToDouble("123.123"), 123.123, "convert string to double"); TEST_RESULT_DOUBLE(cvtZToDouble("-999999999.123456"), -999999999.123456, "convert string to double"); } // ***************************************************************************************************************************** if (testBegin("cvtIntToZ() and cvtZToInt()")) { char buffer[STACK_TRACE_PARAM_MAX]; TEST_ERROR(cvtIntToZ(9999, buffer, 4), AssertError, "buffer overflow"); TEST_RESULT_INT(cvtIntToZ(1234567890, buffer, STACK_TRACE_PARAM_MAX), 10, "convert int to string"); TEST_RESULT_Z(buffer, "1234567890", " check buffer"); TEST_ERROR(cvtZToInt("FEF"), FormatError, "unable to convert base 10 string 'FEF' to int"); TEST_ERROR(cvtZToInt("9223372036854775807"), FormatError, "unable to convert base 10 string '9223372036854775807' to int"); TEST_ERROR( cvtZToInt("-9223372036854775807"), FormatError, "unable to convert base 10 string '-9223372036854775807' to int"); TEST_RESULT_INT(cvtZToIntBase("-FF", 16), -255, "convert string to int"); TEST_RESULT_DOUBLE(cvtZToInt("0"), 0, "convert string to int"); TEST_RESULT_DOUBLE(cvtZToInt("1234567890"), 1234567890, "convert string to int"); TEST_RESULT_DOUBLE(cvtZToInt("-1234567890"), -1234567890, "convert string to int"); } // ***************************************************************************************************************************** if (testBegin("cvtModeToZ()")) { char buffer[STACK_TRACE_PARAM_MAX]; TEST_ERROR(cvtModeToZ(0750, buffer, 4), AssertError, "buffer overflow"); TEST_RESULT_INT(cvtModeToZ(0777, buffer, STACK_TRACE_PARAM_MAX), 4, "convert mode to string"); TEST_RESULT_Z(buffer, "0777", " check buffer"); TEST_RESULT_UINT(cvtZToMode("0700"), 0700, "convert string to mode"); } // ***************************************************************************************************************************** if (testBegin("cvtSizeToZ() and cvtSSizeToZ()")) { char buffer[STACK_TRACE_PARAM_MAX]; TEST_ERROR(cvtSizeToZ(9999, buffer, 4), AssertError, "buffer overflow"); TEST_RESULT_UINT(cvtSizeToZ(4294967295, buffer, STACK_TRACE_PARAM_MAX), 10, "convert size to string"); TEST_RESULT_Z(buffer, "4294967295", " check buffer"); // ------------------------------------------------------------------------------------------------------------------------ TEST_ERROR(cvtSSizeToZ(-9999, buffer, 4), AssertError, "buffer overflow"); TEST_RESULT_INT(cvtSSizeToZ(-9999, buffer, STACK_TRACE_PARAM_MAX), 5, "convert ssize to string"); TEST_RESULT_Z(buffer, "-9999", " check buffer"); } // ***************************************************************************************************************************** if (testBegin("cvtTimeToZ()")) { char buffer[STACK_TRACE_PARAM_MAX]; TEST_ERROR(cvtTimeToZ(9999, buffer, 4), AssertError, "buffer overflow"); TEST_RESULT_UINT(cvtTimeToZ(1573222014, buffer, STACK_TRACE_PARAM_MAX), 10, "convert time to string"); TEST_RESULT_Z(buffer, "1573222014", " check buffer"); } // ***************************************************************************************************************************** if (testBegin("cvtUIntToZ() and cvtZToUInt()")) { char buffer[STACK_TRACE_PARAM_MAX]; TEST_ERROR(cvtUIntToZ(9999, buffer, 4), AssertError, "buffer overflow"); TEST_RESULT_INT(cvtUIntToZ(4294967295, buffer, STACK_TRACE_PARAM_MAX), 10, "convert unsigned int to string"); TEST_RESULT_Z(buffer, "4294967295", " check buffer"); TEST_ERROR(cvtZToUInt("-1"), FormatError, "unable to convert base 10 string '-1' to unsigned int"); TEST_ERROR(cvtZToUInt("5000000000"), FormatError, "unable to convert base 10 string '5000000000' to unsigned int"); TEST_RESULT_UINT(cvtZToUIntBase("FF", 16), 255, "convert string to unsigned int"); TEST_RESULT_UINT(cvtZToUInt("3333333333"), 3333333333U, "convert string to unsigned int"); } // ***************************************************************************************************************************** if (testBegin("cvtInt64ToZ() and cvtZToInt64()")) { char buffer[STACK_TRACE_PARAM_MAX]; TEST_ERROR(cvtInt64ToZ(9999, buffer, 4), AssertError, "buffer overflow"); TEST_RESULT_INT(cvtInt64ToZ(9223372036854775807, buffer, STACK_TRACE_PARAM_MAX), 19, "convert int64 to string"); TEST_RESULT_Z(buffer, "9223372036854775807", " check buffer"); TEST_ERROR(cvtZToInt64("123INV"), FormatError, "unable to convert base 10 string '123INV' to int64"); TEST_ERROR(cvtZToInt64("FEF"), FormatError, "unable to convert base 10 string 'FEF' to int64"); TEST_ERROR(cvtZToInt64(""), FormatError, "unable to convert base 10 string '' to int64"); TEST_ERROR(cvtZToInt64(" 1"), FormatError, "unable to convert base 10 string ' 1' to int64"); TEST_ERROR(cvtZToInt64("\t1"), FormatError, "unable to convert base 10 string '\t1' to int64"); TEST_ERROR(cvtZToInt64("1\t"), FormatError, "unable to convert base 10 string '1\t' to int64"); TEST_ERROR( cvtZToInt64("9223372036854775808"), FormatError, "unable to convert base 10 string '9223372036854775808' to int64"); TEST_RESULT_INT(cvtZToInt64Base("-FF", 16), -255, "convert string to int64"); TEST_RESULT_INT(cvtZToInt64("0"), 0, "convert string to int64"); TEST_RESULT_INT(cvtZToInt64("9223372036854775807"), 9223372036854775807, "convert string to int64"); TEST_RESULT_INT(cvtZToInt64("-9223372036854775807"), -9223372036854775807, "convert string to int64"); } // ***************************************************************************************************************************** if (testBegin("UInt64ToZ() and cvtZToUInt64()")) { char buffer[STACK_TRACE_PARAM_MAX]; TEST_ERROR(cvtUInt64ToZ(9999, buffer, 4), AssertError, "buffer overflow"); TEST_RESULT_INT(cvtUInt64ToZ(0xFFFFFFFFFFFFFFFF, buffer, STACK_TRACE_PARAM_MAX), 20, "convert uint64 to string"); TEST_RESULT_Z(buffer, "18446744073709551615", " check buffer"); TEST_ERROR(cvtZToUInt64("FEF"), FormatError, "unable to convert base 10 string 'FEF' to uint64"); TEST_ERROR(cvtZToUInt64(" 10"), FormatError, "unable to convert base 10 string ' 10' to uint64"); TEST_ERROR(cvtZToUInt64("10 "), FormatError, "unable to convert base 10 string '10 ' to uint64"); TEST_ERROR(cvtZToUInt64("-1"), FormatError, "unable to convert base 10 string '-1' to uint64"); TEST_RESULT_UINT(cvtZToUInt64Base("FF", 16), 255, "convert string to uint64"); TEST_RESULT_DOUBLE(cvtZToUInt64("18446744073709551615"), 18446744073709551615U, "convert string to uint64"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/typeJsonTest.c000066400000000000000000000437371362531507100243670ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Convert JSON to/from KeyValue ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("jsonToBool() and jsonToBoolInternal()")) { TEST_ERROR(jsonToBool(strNew("z")), JsonFormatError, "expected boolean at 'z'"); TEST_ERROR(jsonToBool(strNew("falsex")), JsonFormatError, "unexpected characters after boolean at 'x'"); TEST_RESULT_BOOL(jsonToBool(strNew("true")), true, "bool is true"); TEST_RESULT_BOOL(jsonToBool(strNew("false")), false, "bool is false"); } // ***************************************************************************************************************************** if (testBegin("jsonToInt(), jsonToInt64(), jsonToUInt(), jsonToUInt64() and jsonToIntInternal()")) { TEST_ERROR(jsonToUInt(strNew("-")), JsonFormatError, "found '-' with no integer at '-'"); TEST_ERROR(jsonToUInt(strNew(" 555555555 A")), JsonFormatError, "unexpected characters after number at 'A'"); TEST_RESULT_INT(jsonToInt(strNew("-555555555 ")), -555555555, "integer"); TEST_RESULT_INT(jsonToInt64(strNew("-555555555555 ")), -555555555555, "integer"); TEST_RESULT_UINT(jsonToUInt(strNew("\t555555555\n\r")), 555555555, "unsigned integer"); TEST_RESULT_UINT(jsonToUInt64(strNew(" 555555555555 ")), 555555555555, "unsigned integer"); } // ***************************************************************************************************************************** if (testBegin("jsonToStr() and jsonToStrInternal()")) { TEST_ERROR(jsonToStr(strNew("\"\\j\"")), JsonFormatError, "invalid escape character 'j'"); TEST_ERROR(jsonToStr(strNew("\"runonstring")), JsonFormatError, "expected '\"' but found null delimiter"); TEST_ERROR(jsonToStr(strNew("\"normal\"L")), JsonFormatError, "unexpected characters after string at 'L'"); TEST_ERROR(jsonToStr(strNew("nullz")), JsonFormatError, "unexpected characters after string at 'z'"); TEST_RESULT_PTR(jsonToStr(strNew("null")), NULL, "null string"); TEST_RESULT_STR_Z(jsonToStr(strNew(" \"test\"")), "test", "simple string"); TEST_RESULT_STR_Z(jsonToStr(strNew("\"te\\\"st\" ")), "te\"st", "string with quote"); TEST_RESULT_STR_Z(jsonToStr(strNew("\"\\\"\\\\\\/\\b\\n\\r\\t\\f\"")), "\"\\/\b\n\r\t\f", "string with escapes"); } // ***************************************************************************************************************************** if (testBegin("jsonToKv() and jsonToKvInternal()")) { TEST_ERROR(jsonToKv(strNew("[")), JsonFormatError, "expected '{' at '['"); TEST_ERROR(jsonToKv(strNew("{\"key1\"= 747}")), JsonFormatError, "expected ':' at '= 747}'"); TEST_ERROR(jsonToKv(strNew("{\"key1\" : 747'")), JsonFormatError, "expected '}' at '''"); TEST_ERROR(jsonToKv(strNew("{key1")), JsonFormatError, "expected '\"' at 'key1'"); TEST_ERROR(jsonToKv(strNew("{}BOGUS")), JsonFormatError, "unexpected characters after object at 'BOGUS'"); KeyValue *kv = NULL; TEST_ASSIGN(kv, jsonToKv(strNew("{\"key1\": 747, \"key2\":\"value2\",\"key3\"\t:\t[\t] }")), "object"); TEST_RESULT_UINT(varLstSize(kvKeyList(kv)), 3, "check key total"); TEST_RESULT_UINT(varUInt64(kvGet(kv, varNewStr(strNew("key1")))), 747, "check object uint"); TEST_RESULT_STR_Z(varStr(kvGet(kv, varNewStr(strNew("key2")))), "value2", "check object str"); TEST_RESULT_UINT(varLstSize(varVarLst(kvGet(kv, varNewStr(strNew("key3"))))), 0, "check empty array"); TEST_ASSIGN(kv, jsonToKv(strNew("\t{\n} ")), "empty object"); TEST_RESULT_UINT(varLstSize(kvKeyList(kv)), 0, "check key total"); } // ***************************************************************************************************************************** if (testBegin("jsonToVar()")) { TEST_ERROR(jsonToVar(strNew("")), JsonFormatError, "expected data"); TEST_ERROR(jsonToVar(strNew(" \t\r\n ")), JsonFormatError, "expected data"); TEST_ERROR(jsonToVar(strNew("z")), JsonFormatError, "invalid type at 'z'"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_STR_Z(varStr(jsonToVar(strNew(" \"test\""))), "test", "simple string"); TEST_RESULT_STR_Z(varStr(jsonToVar(strNew("\"te\\\"st\" "))), "te\"st", "string with quote"); TEST_RESULT_STR_Z(varStr(jsonToVar(strNew("\"\\\"\\\\\\/\\b\\n\\r\\t\\f\""))), "\"\\/\b\n\r\t\f", "string with escapes"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(jsonToVar(strNew("ton")), JsonFormatError, "expected boolean at 'ton'"); TEST_RESULT_BOOL(varBool(jsonToVar(strNew(" true"))), true, "boolean true"); TEST_RESULT_BOOL(varBool(jsonToVar(strNew("false "))), false, "boolean false"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(jsonToVar(strNew("not")), JsonFormatError, "expected null at 'not'"); TEST_RESULT_PTR(jsonToVar(strNew("null")), NULL, "null value"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(jsonToVar(strNew("[1, \"test\", false")), JsonFormatError, "expected ']' at ''"); VariantList *valueList = NULL; TEST_ASSIGN(valueList, varVarLst(jsonToVar(strNew("[1, \"test\", false]"))), "array"); TEST_RESULT_UINT(varLstSize(valueList), 3, "check array size"); TEST_RESULT_INT(varUInt64(varLstGet(valueList, 0)), 1, "check array int"); TEST_RESULT_STR_Z(varStr(varLstGet(valueList, 1)), "test", "check array str"); TEST_RESULT_BOOL(varBool(varLstGet(valueList, 2)), false, "check array bool"); TEST_ASSIGN(valueList, varVarLst(jsonToVar(strNew("[ ]"))), "empty array"); TEST_RESULT_UINT(varLstSize(valueList), 0, "check array size"); // ------------------------------------------------------------------------------------------------------------------------- KeyValue *kv = NULL; TEST_ASSIGN(kv, varKv(jsonToVar(strNew("\t{\n} "))), "empty object"); TEST_RESULT_UINT(varLstSize(kvKeyList(kv)), 0, "check key total"); } // ***************************************************************************************************************************** if (testBegin("jsonToVarLst() and jsonToArrayInternal()")) { TEST_ERROR(jsonToVarLst(strNew("{")), JsonFormatError, "expected '[' at '{'"); TEST_ERROR(jsonToVarLst(strNew("[")), JsonFormatError, "expected data"); TEST_ERROR(jsonToVarLst(strNew(" [] ZZZ")), JsonFormatError, "unexpected characters after array at 'ZZZ'"); TEST_RESULT_STR_Z(strLstJoin(strLstNewVarLst(jsonToVarLst(strNew("[\"e1\", \"e2\"]"))), "|"), "e1|e2", "json list"); } // ***************************************************************************************************************************** if (testBegin("jsonFromBool()")) { TEST_RESULT_STR_Z(jsonFromBool(true), "true", "json bool true"); TEST_RESULT_STR_Z(jsonFromBool(false), "false", "json bool true"); } // ***************************************************************************************************************************** if (testBegin("jsonFromInt(), jsonFromInt64(), jsonFromUInt() and jsonFromUInt64()")) { TEST_RESULT_STR_Z(jsonFromInt(-2147483648), "-2147483648", "json int"); TEST_RESULT_STR_Z(jsonFromInt64(-9223372036854775807L), "-9223372036854775807", "json int64"); TEST_RESULT_STR_Z(jsonFromUInt(4294967295), "4294967295", "json uint"); TEST_RESULT_STR_Z(jsonFromUInt64(18446744073709551615UL), "18446744073709551615", "json uint64"); } // ***************************************************************************************************************************** if (testBegin("jsonFromStr() and jsonFromStrInternal()")) { TEST_RESULT_STR_Z(jsonFromStr(NULL), "null", "null string"); TEST_RESULT_STR_Z(jsonFromStr(strNew("simple string")), "\"simple string\"", "simple string"); TEST_RESULT_STR_Z(jsonFromStr(strNew("\"\\/\b\n\r\t\f")), "\"\\\"\\\\/\\b\\n\\r\\t\\f\"", "string escapes"); } // ***************************************************************************************************************************** if (testBegin("jsonFromKv(), jsonFromKvInternal()")) { KeyValue *keyValue = kvNew(); String *json = NULL; TEST_ASSIGN(json, jsonFromKv(keyValue), "kvToJson - empty"); TEST_RESULT_STR_Z(json, "{}", " empty curly brackets"); kvPut(keyValue, varNewStrZ("backup"), varNewVarLst(varLstNew())); TEST_ASSIGN(json, jsonFromKv(keyValue), "kvToJson - kv with empty array"); TEST_RESULT_STR_Z(json, "{\"backup\":[]}", " kv with empty array brackets"); kvPutKv(keyValue, varNewStr(strNew("archive"))); kvPutKv(keyValue, varNewStr(strNew("empty"))); kvPut(keyValue, varNewStrZ("bool1"), varNewBool(true)); kvPut(keyValue, varNewStrZ("bool2"), varNewBool(false)); kvPut(keyValue, varNewStrZ("null-str"), varNewStr(NULL)); kvPut(keyValue, varNewStrZ("checknull"), (Variant *)NULL); VariantList *dbList = varLstNew(); Variant *dbInfo = varNewKv(kvNew()); kvPut(varKv(dbInfo), varNewStr(strNew("id")), varNewInt(1)); kvPut(varKv(dbInfo), varNewStr(strNew("version")), varNewStr(strNew("9.4"))); varLstAdd(dbList, dbInfo); varLstAdd(dbList, NULL); kvPut(keyValue, varNewStrZ("db"), varNewVarLst(dbList)); kvPut(keyValue, varNewStrZ("null-list"), varNewVarLst(NULL)); TEST_ASSIGN(json, jsonFromKv(keyValue), "kvToJson - kv with empty array, kv, varList with values"); TEST_RESULT_STR_Z( json, "{" "\"archive\":{}," "\"backup\":[]," "\"bool1\":true," "\"bool2\":false," "\"checknull\":null," "\"db\":[" "{" "\"id\":1," "\"version\":\"9.4\"" "}," "null" "]," "\"empty\":{}," "\"null-list\":null," "\"null-str\":null" "}", " kv with empty array, kv, varList with values"); TEST_ASSIGN( keyValue, varKv( jsonToVar( strNew( "{\"backup-info-size-delta\":1982702,\"backup-prior\":\"20161219-212741F_20161219-212803I\"," "\"backup-reference\":[\"20161219-212741F\",\"20161219-212741F_20161219-212803I\"]," "\"checksum-page-error\":[1,[4,6]],\"backup-timestamp-start\":1482182951}"))), "multiple values with array"); TEST_ASSIGN(json, jsonFromKv(keyValue), " kvToJson - sorted"); TEST_RESULT_STR_Z( json, "{\"backup-info-size-delta\":1982702,\"backup-prior\":\"20161219-212741F_20161219-212803I\"," "\"backup-reference\":[\"20161219-212741F\",\"20161219-212741F_20161219-212803I\"]," "\"backup-timestamp-start\":1482182951,\"checksum-page-error\":[1,[4,6]]}", " check string no pretty print"); } // ***************************************************************************************************************************** if (testBegin("jsonFromVar()")) { TEST_ERROR(jsonFromVar(varNewInt(1)), JsonFormatError, "variant type is invalid"); String *json = NULL; Variant *keyValue = NULL; TEST_ASSIGN(keyValue, varNewKv(kvNew()), "build new kv"); kvPut(varKv(keyValue), varNewStrZ("backup-info-size-delta"), varNewInt(1982702)); kvPut(varKv(keyValue), varNewStrZ("backup-prior"), varNewStrZ("20161219-212741F_20161219-212803I")); Variant *listVar = NULL; TEST_ASSIGN(listVar, varNewVarLst(varLstNew()), " new string array to kv"); varLstAdd(varVarLst(listVar), varNewStrZ("20161219-212741F")); varLstAdd(varVarLst(listVar), varNewStrZ("20161219-212741F_20161219-212803I")); varLstAdd(varVarLst(listVar), varNewStrZ(NULL)); kvPut(varKv(keyValue), varNewStrZ("backup-reference"), listVar); kvPut(varKv(keyValue), varNewStrZ("backup-timestamp-start"), varNewInt(1482182951)); Variant *listVar2 = NULL; TEST_ASSIGN(listVar2, varNewVarLst(varLstNew()), " new int array to kv"); varLstAdd(varVarLst(listVar2), varNewInt(1)); kvPut(varKv(keyValue), varNewStrZ("checksum-page-error"), listVar2); // Embed a keyValue section to test recursion Variant *sectionKey = varNewStr(strNew("section")); KeyValue *sectionKv = kvPutKv(varKv(keyValue), sectionKey); kvAdd(sectionKv, varNewStr(strNew("key1")), varNewStr(strNew("value1"))); kvAdd(sectionKv, varNewStr(strNew("key2")), (Variant *)NULL); kvAdd(sectionKv, varNewStr(strNew("key3")), varNewStr(strNew("value2"))); kvAdd(sectionKv, varNewStr(strNew("escape")), varNewStr(strNew("\"\\/\b\n\r\t\f"))); TEST_ASSIGN(json, jsonFromVar(keyValue), "KeyValue"); TEST_RESULT_STR_Z( json, "{\"backup-info-size-delta\":1982702,\"backup-prior\":\"20161219-212741F_20161219-212803I\"," "\"backup-reference\":[\"20161219-212741F\",\"20161219-212741F_20161219-212803I\",null]," "\"backup-timestamp-start\":1482182951,\"checksum-page-error\":[1]," "\"section\":{\"escape\":\"\\\"\\\\/\\b\\n\\r\\t\\f\",\"key1\":\"value1\",\"key2\":null,\"key3\":\"value2\"}}", " sorted json string result, no pretty print"); //-------------------------------------------------------------------------------------------------------------------------- Variant *varListOuter = NULL; TEST_ASSIGN(json, jsonFromVar(varNewVarLst(varLstNew())), "VariantList"); TEST_RESULT_STR_Z(json, "[]", " empty list no pretty print"); TEST_ASSIGN(varListOuter, varNewVarLst(varLstNew()), "new variant list with keyValues"); varLstAdd(varVarLst(varListOuter), varNewStrZ("ASTRING")); varLstAdd(varVarLst(varListOuter), varNewInt64(9223372036854775807LL)); varLstAdd(varVarLst(varListOuter), varNewInt(2147483647)); varLstAdd(varVarLst(varListOuter), varNewBool(true)); varLstAdd(varVarLst(varListOuter), varNewVarLst(varLstNew())); varLstAdd(varVarLst(varListOuter), NULL); varLstAdd(varVarLst(varListOuter), keyValue); TEST_ASSIGN(json, jsonFromVar(varListOuter), "VariantList"); TEST_RESULT_STR_Z( json, "[\"ASTRING\",9223372036854775807,2147483647,true,[],null,{\"backup-info-size-delta\":1982702," "\"backup-prior\":\"20161219-212741F_20161219-212803I\"," "\"backup-reference\":[\"20161219-212741F\",\"20161219-212741F_20161219-212803I\",null]," "\"backup-timestamp-start\":1482182951,\"checksum-page-error\":[1]," "\"section\":{\"escape\":\"\\\"\\\\/\\b\\n\\r\\t\\f\",\"key1\":\"value1\",\"key2\":null,\"key3\":\"value2\"}}]", " sorted json string result no pretty print"); Variant *keyValue2 = varDup(keyValue); varLstAdd(varVarLst(varListOuter), keyValue2); TEST_ASSIGN(json, jsonFromVar(varListOuter), "VariantList - multiple elements"); TEST_RESULT_STR_Z( json, "[\"ASTRING\",9223372036854775807,2147483647,true,[],null,{\"backup-info-size-delta\":1982702," "\"backup-prior\":\"20161219-212741F_20161219-212803I\"," "\"backup-reference\":[\"20161219-212741F\",\"20161219-212741F_20161219-212803I\",null]," "\"backup-timestamp-start\":1482182951,\"checksum-page-error\":[1]," "\"section\":{\"escape\":\"\\\"\\\\/\\b\\n\\r\\t\\f\",\"key1\":\"value1\",\"key2\":null,\"key3\":\"value2\"}}," "{\"backup-info-size-delta\":1982702,\"backup-prior\":\"20161219-212741F_20161219-212803I\"," "\"backup-reference\":[\"20161219-212741F\",\"20161219-212741F_20161219-212803I\",null]," "\"backup-timestamp-start\":1482182951,\"checksum-page-error\":[1]," "\"section\":{\"escape\":\"\\\"\\\\/\\b\\n\\r\\t\\f\",\"key1\":\"value1\",\"key2\":null,\"key3\":\"value2\"}}]", " sorted json string result no pretty print"); VariantList *varList = varLstNew(); varLstAdd(varList, varNewUInt(32)); varLstAdd(varList, varNewUInt64(10000000000)); TEST_RESULT_STR_Z(jsonFromVar(varNewVarLst(varList)), "[32,10000000000]", "list various types"); //-------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_STR_Z(jsonFromVar(NULL), "null", "null variant"); TEST_RESULT_STR_Z(jsonFromVar(varNewBool(true)), "true", "bool variant"); TEST_RESULT_STR_Z(jsonFromVar(varNewUInt(66)), "66", "uint variant"); TEST_RESULT_STR_Z(jsonFromVar(varNewUInt64(10000000001)), "10000000001", "uint64 variant"); TEST_RESULT_STR_Z(jsonFromVar(varNewStrZ("test \" string")), "\"test \\\" string\"", "string variant"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/typeKeyValueTest.c000066400000000000000000000155701362531507100251750ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Key Value Data Type ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ----------------------------------------------------------------------------------------------------------------------------- if (testBegin("kvNew() and kvFree()")) { KeyValue *store = NULL; TEST_ASSIGN(store, kvNew(), "new store"); TEST_RESULT_PTR_NE(store->memContext, NULL, "mem context set"); TEST_RESULT_PTR_NE(store->list, NULL, "list set"); TEST_RESULT_INT(lstSize(store->list), 0, "list empty"); TEST_RESULT_VOID(kvFree(store), "free kv"); } // ----------------------------------------------------------------------------------------------------------------------------- if (testBegin("kvPut(), kvAdd(), kvKeyExists(), kvKeyList(), kvGet(), kvGetDefault(), kvGetList(), and kvDup()")) { KeyValue *store = NULL; MEM_CONTEXT_TEMP_BEGIN() { TEST_ASSIGN(store, kvNew(), "new store"); TEST_RESULT_PTR(kvMove(NULL, memContextPrior()), NULL, "move null to old context"); TEST_RESULT_PTR(kvMove(store, memContextPrior()), store, "move kv to old context"); } MEM_CONTEXT_TEMP_END(); // Set various data types // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_PTR(kvPut(store, varNewStr(strNew("str-key")), varNewStr(strNew("str-value"))), store, "put string/string"); TEST_RESULT_PTR(kvPut(store, varNewInt(42), varNewInt(57)), store, "put int/int"); TEST_RESULT_PTR(kvPut(store, varNewStr(strNew("str-key-int")), varNewInt(99)), store, "put string/int"); TEST_RESULT_PTR(kvPut(store, varNewInt(78), NULL), store, "put int/null"); // Get the types and make sure they have the correct value // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_STR_Z(varStr(kvGet(store, varNewStr(strNew("str-key")))), "str-value", "get string/string"); TEST_RESULT_INT(varInt(kvGet(store, varNewInt(42))), 57, "get int/int"); TEST_RESULT_INT(varInt(varLstGet(kvGetList(store, varNewInt(42)), 0)), 57, "get int/int"); TEST_RESULT_INT(varInt(kvGet(store, varNewStr(strNew("str-key-int")))), 99, "get string/int"); TEST_RESULT_PTR(kvGet(store, varNewInt(78)), NULL, "get int/null"); TEST_RESULT_PTR(kvGetDefault(store, varNewInt(78), varNewInt(999)), NULL, "get int/null (default ignored)"); TEST_RESULT_PTR(kvGet(store, varNewInt(777)), NULL, "get missing key"); TEST_RESULT_INT(varInt(kvGetDefault(store, varNewInt(777), varNewInt(888))), 888, "get missing key with default"); // Check key exists // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(kvKeyExists(store, varNewStr(strNew("str-key"))), true, "key exists"); TEST_RESULT_BOOL(kvKeyExists(store, varNewStr(strNew(BOGUS_STR))), false, "key does not exist"); // Check that a null value can be changed to non-null // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_PTR(kvPut(store, varNewInt(78), varNewInt(66)), store, "update int/null to int/int"); TEST_RESULT_INT(varInt(kvGet(store, varNewInt(78))), 66, "get int/int"); // Check that a value can be changed // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_PTR(kvPut(store, varNewInt(78), varNewBool(false)), store, "update int/int to int/bool"); TEST_RESULT_INT(varBool(kvGet(store, varNewInt(78))), false, "get int/bool"); // Use add to create variant list // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_PTR(kvAdd(store, varNewInt(99), NULL), store, "add int/null"); TEST_RESULT_PTR(kvAdd(store, varNewInt(99), varNewInt(1)), store, "add int/int"); TEST_RESULT_PTR(kvAdd(store, varNewInt(99), varNewInt(2)), store, "add int/int"); TEST_RESULT_PTR(kvAdd(store, varNewInt(99), varNewInt(3)), store, "add int/int"); TEST_RESULT_INT(varInt(varLstGet(varVarLst(kvGet(store, varNewInt(99))), 0)), 1, "get int/int"); TEST_RESULT_INT(varInt(varLstGet(varVarLst(kvGet(store, varNewInt(99))), 1)), 2, "get int/int"); TEST_RESULT_INT(varInt(varLstGet(varVarLst(kvGet(store, varNewInt(99))), 2)), 3, "get int/int"); TEST_RESULT_INT(varInt(varLstGet(kvGetList(store, varNewInt(99)), 2)), 3, "get int/int"); TEST_RESULT_PTR(varLstGet(kvGetList(store, varNewInt(777)), 0), NULL, "get NULL list"); // Check item in key list // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_INT(varInt(varLstGet(kvKeyList(store), 1)), 42, "key list"); // Create a new kv and add it to this kv // ------------------------------------------------------------------------------------------------------------------------- KeyValue *storeSub = kvPutKv(store, varNewStr(strNew("kv-key"))); kvPut(storeSub, varNewStr(strNew("str-sub-key")), varNewStr(strNew("str-sub-value"))); TEST_RESULT_STR_Z( varStr(kvGet(varKv(kvGet(store, varNewStr(strNew("kv-key")))), varNewStr(strNew("str-sub-key")))), "str-sub-value", "get string/kv"); // Duplicate the kv // ------------------------------------------------------------------------------------------------------------------------- KeyValue *storeDup = kvDup(store); TEST_RESULT_INT(varBool(kvGet(store, varNewInt(78))), false, "get int/bool"); TEST_RESULT_INT(varInt(varLstGet(varVarLst(kvGet(store, varNewInt(99))), 2)), 3, "get int/int"); TEST_RESULT_STR_Z( varStr(kvGet(varKv(kvGet(storeDup, varNewStr(strNew("kv-key")))), varNewStr(strNew("str-sub-key")))), "str-sub-value", "get string/kv"); TEST_RESULT_VOID(kvFree(storeDup), "free dup store"); TEST_RESULT_VOID(kvFree(store), "free store"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/typeListTest.c000066400000000000000000000177351362531507100243700ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Lists ***********************************************************************************************************************************/ #include "common/time.h" /*********************************************************************************************************************************** Test sort comparator ***********************************************************************************************************************************/ static int testComparator(const void *item1, const void *item2) { int int1 = *(int *)item1; int int2 = *(int *)item2; if (int1 < int2) return -1; if (int1 > int2) return 1; return 0; } /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("lstNew*(), lstMemContext(), lstToLog(), and lstFree()")) { List *list = lstNew(sizeof(void *)); TEST_RESULT_INT(list->itemSize, sizeof(void *), "item size"); TEST_RESULT_INT(list->listSize, 0, "list size"); TEST_RESULT_INT(list->listSizeMax, 0, "list size max"); TEST_RESULT_PTR(lstMemContext(list), list->memContext, "list mem context"); TEST_RESULT_VOID(lstClear(list), "clear list"); void *ptr = NULL; TEST_RESULT_VOID(lstAdd(list, &ptr), "add item"); TEST_RESULT_STR_Z(lstToLog(list), "{size: 1}", "check log"); TEST_RESULT_VOID(lstClear(list), "clear list"); TEST_RESULT_STR_Z(lstToLog(list), "{size: 0}", "check log after clear"); TEST_RESULT_VOID(lstFree(list), "free list"); TEST_RESULT_VOID(lstFree(lstNew(1)), "free empty list"); TEST_RESULT_VOID(lstFree(NULL), "free null list"); TEST_ASSIGN(list, lstNewP(sizeof(String *), .comparator = lstComparatorStr), "new list with params"); String *string1 = strNew("string1"); TEST_RESULT_STR_Z(*(String **)lstAdd(list, &string1), "string1", " add string1"); String *string2 = strNew("string2"); TEST_RESULT_VOID(lstAdd(list, &string2), " add string2"); String *string3 = strNew("string3"); TEST_RESULT_PTR(lstFindDefault(list, &string3, (void *)1), (void *)1, " find string3 returns default"); TEST_RESULT_BOOL(lstExists(list, &string3), false, " string3 does not exist"); TEST_RESULT_STR_Z(*(String **)lstFind(list, &string2), "string2", " find string2"); TEST_RESULT_STR_Z(*(String **)lstFindDefault(list, &string2, NULL), "string2", " find string2 no default"); TEST_RESULT_BOOL(lstExists(list, &string2), true, " string2 exists"); TEST_RESULT_BOOL(lstRemove(list, &string2), true, " remove string2"); TEST_RESULT_BOOL(lstRemove(list, &string2), false, " unable to remove string2"); TEST_RESULT_PTR(lstFind(list, &string2), NULL, " unable to find string2"); } // ***************************************************************************************************************************** if (testBegin("lstAdd(), lstInsert(), lstMove(), and lstSize()")) { List *list = NULL; MEM_CONTEXT_TEMP_BEGIN() { list = lstNew(sizeof(int)); // Add ints to the list for (int listIdx = 1; listIdx <= LIST_INITIAL_SIZE; listIdx++) TEST_RESULT_VOID(lstAdd(list, &listIdx), "add item %d", listIdx); lstMove(list, memContextPrior()); } MEM_CONTEXT_TEMP_END(); // Insert an int at the beginning int insertIdx = 0; TEST_RESULT_INT(*((int *)lstInsert(list, 0, &insertIdx)), 0, "insert item %d", insertIdx); // Check the size TEST_RESULT_INT(lstSize(list), 9, "list size"); // Read them back and check values for (unsigned int listIdx = 0; listIdx < lstSize(list); listIdx++) { int *item = lstGet(list, listIdx); TEST_RESULT_INT(*item, listIdx, "check item %u", listIdx); } // Remove first item TEST_RESULT_VOID(lstRemoveIdx(list, 0), "remove first item"); // Read them back and check values for (unsigned int listIdx = 0; listIdx < lstSize(list); listIdx++) { int *item = lstGet(list, listIdx); TEST_RESULT_INT(*item, listIdx + 1, "check item %u", listIdx); } // Remove last item TEST_RESULT_VOID(lstRemoveIdx(list, lstSize(list) - 1), "remove last item"); // Read them back and check values for (unsigned int listIdx = 0; listIdx < lstSize(list); listIdx++) { int *item = lstGet(list, listIdx); TEST_RESULT_INT(*item, listIdx + 1, "check item %u", listIdx); } TEST_ERROR(lstGet(list, lstSize(list)), AssertError, "cannot get index 7 from list with 7 value(s)"); TEST_RESULT_VOID(lstMove(NULL, memContextTop()), "move null list"); } // ***************************************************************************************************************************** if (testBegin("lstSort")) { List *list = lstNew(sizeof(int)); lstComparatorSet(list, testComparator); int value; value = 3; lstAdd(list, &value); value = 5; lstAdd(list, &value); value = 3; lstAdd(list, &value); value = 2; lstAdd(list, &value); TEST_RESULT_PTR(lstSort(list, sortOrderNone), list, "list sort none"); TEST_RESULT_INT(*((int *)lstGet(list, 0)), 3, "sort value 0"); TEST_RESULT_INT(*((int *)lstGet(list, 1)), 5, "sort value 1"); TEST_RESULT_INT(*((int *)lstGet(list, 2)), 3, "sort value 2"); TEST_RESULT_INT(*((int *)lstGet(list, 3)), 2, "sort value 3"); TEST_RESULT_PTR(lstSort(list, sortOrderAsc), list, "list sort asc"); TEST_RESULT_INT(*((int *)lstGet(list, 0)), 2, "sort value 0"); TEST_RESULT_INT(*((int *)lstGet(list, 1)), 3, "sort value 1"); TEST_RESULT_INT(*((int *)lstGet(list, 2)), 3, "sort value 2"); TEST_RESULT_INT(*((int *)lstGet(list, 3)), 5, "sort value 3"); TEST_RESULT_PTR(lstSort(list, sortOrderDesc), list, "list sort desc"); TEST_RESULT_INT(*((int *)lstGet(list, 0)), 5, "sort value 0"); TEST_RESULT_INT(*((int *)lstGet(list, 1)), 3, "sort value 1"); TEST_RESULT_INT(*((int *)lstGet(list, 2)), 3, "sort value 2"); TEST_RESULT_INT(*((int *)lstGet(list, 3)), 2, "sort value 3"); } // ***************************************************************************************************************************** if (testBegin("lstFind()")) { // Generate a list of values int testMax = 100; List *list = lstNewP(sizeof(int), .comparator = testComparator); for (int listIdx = 0; listIdx < testMax; listIdx++) lstAdd(list, &listIdx); CHECK(lstSize(list) == (unsigned int)testMax); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("search ascending sort"); lstSort(list, sortOrderAsc); for (int listIdx = 0; listIdx < testMax; listIdx++) CHECK(*(int *)lstFind(list, &listIdx) == listIdx); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("search descending sort"); lstSort(list, sortOrderDesc); for (int listIdx = 0; listIdx < testMax; listIdx++) CHECK(*(int *)lstFind(list, &listIdx) == listIdx); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/typeMcvTest.c000066400000000000000000000063711362531507100241740ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Most Common Value ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("Mcv")) { // String MCV // ------------------------------------------------------------------------------------------------------------------------- MostCommonValue *mcv = NULL; TEST_ASSIGN(mcv, mcvNew(), "new mcv"); TEST_RESULT_PTR(mcvResult(mcv), NULL, "immediate result is null"); TEST_RESULT_VOID(mcvUpdate(mcv, varNewStrZ("string1")), "update string1"); TEST_RESULT_STR_Z(varStr(mcvResult(mcv)), "string1", "result is string1"); TEST_RESULT_VOID(mcvUpdate(mcv, varNewStrZ("string2")), "update string2"); TEST_RESULT_STR_Z(varStr(mcvResult(mcv)), "string1", "result is string1"); TEST_RESULT_VOID(mcvUpdate(mcv, varNewUInt(555)), "update 555"); TEST_RESULT_VOID(mcvUpdate(mcv, varNewStrZ("string2")), "update string2"); TEST_RESULT_STR_Z(varStr(mcvResult(mcv)), "string2", "result is string2"); TEST_RESULT_VOID(mcvFree(mcv), "free mcv"); // UInt MCV // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(mcv, mcvNew(), "new mcv"); TEST_RESULT_PTR(mcvResult(mcv), NULL, "immediate result is null"); TEST_RESULT_VOID(mcvUpdate(mcv, NULL), "update null"); TEST_RESULT_PTR(mcvResult(mcv), NULL, "result is null"); TEST_RESULT_VOID(mcvUpdate(mcv, varNewUInt(555)), "update 555"); TEST_RESULT_PTR(mcvResult(mcv), NULL, "result is null"); TEST_RESULT_VOID(mcvUpdate(mcv, varNewUInt(555)), "update 555"); TEST_RESULT_UINT(varUInt(mcvResult(mcv)), 555, "result is 555"); // Bool MCV // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(mcv, mcvNew(), "new mcv"); TEST_RESULT_VOID(mcvUpdate(mcv, varNewBool(true)), "update true"); TEST_RESULT_BOOL(varBool(mcvResult(mcv)), true, "result is true"); TEST_RESULT_VOID(mcvUpdate(mcv, varNewBool(false)), "update false"); TEST_RESULT_BOOL(varBool(mcvResult(mcv)), false, "result is false"); TEST_ASSIGN(mcv, mcvNew(), "new mcv"); TEST_RESULT_VOID(mcvUpdate(mcv, varNewBool(false)), "update false"); TEST_RESULT_BOOL(varBool(mcvResult(mcv)), false, "result is false"); TEST_RESULT_VOID(mcvUpdate(mcv, varNewBool(true)), "update true"); TEST_RESULT_BOOL(varBool(mcvResult(mcv)), false, "result is false"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/typeStringTest.c000066400000000000000000000633541362531507100247210ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Strings ***********************************************************************************************************************************/ #include "common/type/buffer.h" // Declare a static const string for testing STRING_STATIC(TEST_STRING, "a very interesting string!"); /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("strNew(), strNewBuf(), strNewN(), strEmpty(), strPtr(), strSize(), and strFree()")) { // We don't want this struct to grow since there are generally a lot of strings, so make sure it doesn't grow without us // knowing about it TEST_RESULT_UINT(sizeof(StringConst), TEST_64BIT() ? 16 : 12, "check StringConst struct size"); // Test the size macro TEST_RESULT_VOID(CHECK_SIZE(555), "valid size"); TEST_ERROR(CHECK_SIZE(STRING_SIZE_MAX + 1), AssertError, "string size must be <= 1073741824 bytes"); String *string = strNew("static string"); TEST_RESULT_STR_Z(string, "static string", "new with static string"); TEST_RESULT_INT(strSize(string), 13, "check size"); TEST_RESULT_BOOL(strEmpty(string), false, "is not empty"); TEST_RESULT_INT(strlen(strPtr(string)), 13, "check size with strlen()"); TEST_RESULT_CHAR(strPtr(string)[2], 'a', "check character"); TEST_RESULT_VOID(strFree(string), "free string"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_STR_Z(strNewN("testmorestring", 4), "test", "new string with size limit"); // ------------------------------------------------------------------------------------------------------------------------- Buffer *buffer = bufNew(8); memcpy(bufPtr(buffer), "12345678", 8); bufUsedSet(buffer, 8); TEST_RESULT_STR_Z(strNewBuf(buffer), "12345678", "new string from buffer"); // ------------------------------------------------------------------------------------------------------------------------- string = strNewFmt("formatted %s %04d", "string", 1); TEST_RESULT_STR_Z(string, "formatted string 0001", "new with formatted string"); TEST_RESULT_PTR(strPtr(NULL), NULL, "null string pointer"); TEST_RESULT_VOID(strFree(string), "free string"); TEST_RESULT_VOID(strFree(NULL), "free null string"); } // ***************************************************************************************************************************** if (testBegin("STRING_STATIC()")) { TEST_RESULT_STR_Z(TEST_STRING, "a very interesting string!", "check static string"); TEST_RESULT_STR_Z(strSubN(TEST_STRING, 0, 6), "a very", "read-only strSub() works"); } // ***************************************************************************************************************************** if (testBegin("strBase(), strPath(), and strPathAbsolute()")) { TEST_RESULT_STR_Z(strBase(STRDEF("")), "", "empty string"); TEST_RESULT_STR_Z(strBase(STRDEF("/")), "", "/ only"); TEST_RESULT_STR_Z(strBase(STRDEF("/file")), "file", "root file"); TEST_RESULT_STR_Z(strBase(STRDEF("/dir1/dir2/file")), "file", "subdirectory file"); TEST_RESULT_STR_Z(strPath(STRDEF("")), "", "empty string"); TEST_RESULT_STR_Z(strPath(STRDEF("/")), "/", "/ only"); TEST_RESULT_STR_Z(strPath(STRDEF("/file")), "/", "root path"); TEST_RESULT_STR_Z(strPath(STRDEF("/dir1/dir2/file")), "/dir1/dir2", "subdirectory file"); TEST_ERROR(strPathAbsolute(STRDEF("/.."), NULL), AssertError, "result path '/..' is not absolute"); TEST_ERROR(strPathAbsolute(STRDEF("//"), NULL), AssertError, "result path '//' is not absolute"); TEST_ERROR(strPathAbsolute(STRDEF(".."), STRDEF("path1")), AssertError, "base path 'path1' is not absolute"); TEST_ERROR( strPathAbsolute(STRDEF(".."), STRDEF("/")), AssertError, "relative path '..' goes back too far in base path '/'"); TEST_ERROR(strPathAbsolute(STRDEF("path1//"), STRDEF("/")), AssertError, "'path1//' is not a valid relative path"); TEST_RESULT_STR_Z(strPathAbsolute(STRDEF("/"), NULL), "/", "path is already absolute"); TEST_RESULT_STR_Z(strPathAbsolute(STRDEF(".."), STRDEF("/path1")), "/", "simple relative path"); TEST_RESULT_STR_Z(strPathAbsolute(STRDEF("../"), STRDEF("/path1")), "/", "simple relative path with trailing /"); TEST_RESULT_STR_Z( strPathAbsolute(STRDEF("../path2/.././path3"), STRDEF("/base1/base2")), "/base1/path3", "complex relative path"); } // ***************************************************************************************************************************** if (testBegin("strCat(), strCatChr(), and strCatFmt()")) { String *string = strNew("XXXX"); String *string2 = strNew("ZZZZ"); TEST_RESULT_STR_Z(strCat(string, "YYYY"), "XXXXYYYY", "cat string"); TEST_RESULT_SIZE(string->extra, 4, "check extra"); TEST_RESULT_STR_Z(strCatFmt(string, "%05d", 777), "XXXXYYYY00777", "cat formatted string"); TEST_RESULT_SIZE(string->extra, 6, "check extra"); TEST_RESULT_STR_Z(strCatChr(string, '!'), "XXXXYYYY00777!", "cat chr"); TEST_RESULT_SIZE(string->extra, 5, "check extra"); TEST_RESULT_STR_Z(string2, "ZZZZ", "check unaltered string"); } // ***************************************************************************************************************************** if (testBegin("strDup()")) { const String *string = STRDEF("duplicated string"); String *stringDup = strDup(string); TEST_RESULT_STR(stringDup, string, "duplicated strings match"); TEST_RESULT_PTR(strDup(NULL), NULL, "duplicate null string"); } // ***************************************************************************************************************************** if (testBegin("strBeginsWith() and strBeginsWithZ()")) { TEST_RESULT_BOOL(strBeginsWith(STRDEF(""), STRDEF("aaa")), false, "empty string"); TEST_RESULT_BOOL(strBeginsWith(STRDEF("astring"), STRDEF("")), true, "empty begins with"); TEST_RESULT_BOOL(strBeginsWithZ(STRDEF("astring"), "astr"), true, "partial begins with"); TEST_RESULT_BOOL(strBeginsWithZ(STRDEF("astring"), "astring"), true, "equal strings"); } // ***************************************************************************************************************************** if (testBegin("strEndsWith() and strEndsWithZ()")) { TEST_RESULT_BOOL(strEndsWith(STRDEF(""), STRDEF(".doc")), false, "empty string"); TEST_RESULT_BOOL(strEndsWith(STRDEF("astring"), STRDEF("")), true, "empty ends with"); TEST_RESULT_BOOL(strEndsWithZ(STRDEF("astring"), "ing"), true, "partial ends with"); TEST_RESULT_BOOL(strEndsWithZ(STRDEF("astring"), "astring"), true, "equal strings"); } // ***************************************************************************************************************************** if (testBegin("strEq(), strEqZ(), strCmp(), strCmpZ()")) { TEST_RESULT_BOOL(strEq(STRDEF("equalstring"), STRDEF("equalstring")), true, "strings equal"); TEST_RESULT_BOOL(strEq(STRDEF("astring"), STRDEF("anotherstring")), false, "strings not equal"); TEST_RESULT_BOOL(strEq(STRDEF("astring"), STRDEF("bstring")), false, "equal length strings not equal"); TEST_RESULT_BOOL(strEq(NULL, STRDEF("bstring")), false, "null is not equal to bstring"); TEST_RESULT_BOOL(strEq(STRDEF("astring"), NULL), false, "null is not equal to astring"); TEST_RESULT_BOOL(strEq(NULL, NULL), true, "null is equal to null"); TEST_RESULT_INT(strCmp(STRDEF("equalstring"), STRDEF("equalstring")), 0, "strings equal"); TEST_RESULT_BOOL(strCmp(STRDEF("a"), STRDEF("b")) < 0, true, "a < b"); TEST_RESULT_BOOL(strCmp(STRDEF("b"), STRDEF("a")) > 0, true, "b > a"); TEST_RESULT_INT(strCmp(NULL, NULL), 0, "null == null"); TEST_RESULT_BOOL(strCmp(NULL, STRDEF("x")) < 0, true, "null < not null"); TEST_RESULT_BOOL(strCmp(STRDEF("x"), NULL) > 0, true, "not null > null"); TEST_RESULT_BOOL(strEqZ(STRDEF("equalstring"), "equalstring"), true, "strings equal"); TEST_RESULT_BOOL(strEqZ(STRDEF("astring"), "anotherstring"), false, "strings not equal"); TEST_RESULT_BOOL(strEqZ(STRDEF("astring"), "bstring"), false, "equal length strings not equal"); TEST_RESULT_INT(strCmpZ(STRDEF("equalstring"), "equalstring"), 0, "strings equal"); TEST_RESULT_BOOL(strCmpZ(STRDEF("a"), "b") < 0, true, "a < b"); TEST_RESULT_BOOL(strCmpZ(STRDEF("b"), "a") > 0, true, "b > a"); TEST_RESULT_BOOL(strCmpZ(STRDEF("b"), NULL) > 0, true, "b > null"); } // ***************************************************************************************************************************** if (testBegin("strFirstUpper(), strFirstLower(), strUpper(), strLower()")) { TEST_RESULT_STR_Z(strFirstUpper(strNew("")), "", "empty first upper"); TEST_RESULT_STR_Z(strFirstUpper(strNew("aaa")), "Aaa", "first upper"); TEST_RESULT_STR_Z(strFirstUpper(strNew("Aaa")), "Aaa", "first already upper"); TEST_RESULT_STR_Z(strFirstLower(strNew("")), "", "empty first lower"); TEST_RESULT_STR_Z(strFirstLower(strNew("AAA")), "aAA", "first lower"); TEST_RESULT_STR_Z(strFirstLower(strNew("aAA")), "aAA", "first already lower"); TEST_RESULT_STR_Z(strLower(strNew("K123aBc")), "k123abc", "all lower"); TEST_RESULT_STR_Z(strLower(strNew("k123abc")), "k123abc", "already lower"); TEST_RESULT_STR_Z(strLower(strNew("C")), "c", "char lower"); TEST_RESULT_STR_Z(strLower(strNew("")), "", "empty lower"); TEST_RESULT_STR_Z(strUpper(strNew("K123aBc")), "K123ABC", "all upper"); TEST_RESULT_STR_Z(strUpper(strNew("K123ABC")), "K123ABC", "already upper"); TEST_RESULT_STR_Z(strUpper(strNew("c")), "C", "char upper"); TEST_RESULT_STR_Z(strUpper(strNew("")), "", "empty upper"); } // ***************************************************************************************************************************** if (testBegin("strQuote()")) { TEST_RESULT_STR_Z(strQuote(STRDEF("abcd"), STRDEF("'")), "'abcd'", "quote string"); } // ***************************************************************************************************************************** if (testBegin("strReplaceChr()")) { TEST_RESULT_STR_Z(strReplaceChr(strNew("ABCD"), 'B', 'R'), "ARCD", "replace chr"); } // ***************************************************************************************************************************** if (testBegin("strSub() and strSubN()")) { TEST_RESULT_STR_Z(strSub(STRDEF("ABCD"), 2), "CD", "sub string"); TEST_RESULT_STR_Z(strSub(STRDEF("AB"), 2), "", "zero sub string"); TEST_RESULT_STR_Z(strSubN(STRDEF("ABCD"), 1, 2), "BC", "sub string with length"); TEST_RESULT_STR_Z(strSubN(STRDEF("D"), 1, 0), "", "zero sub string with length"); } // ***************************************************************************************************************************** if (testBegin("strTrim()")) { TEST_RESULT_STR_Z(strTrim(strNew("")), "", "trim empty"); TEST_RESULT_STR_Z(strTrim(strNew("X")), "X", "no trim (one char)"); TEST_RESULT_STR_Z(strTrim(strNew("no-trim")), "no-trim", "no trim (string)"); TEST_RESULT_STR_Z(strTrim(strNew(" \t\r\n")), "", "all whitespace"); TEST_RESULT_STR_Z(strTrim(strNew(" \tbegin-only")), "begin-only", "trim begin"); TEST_RESULT_STR_Z(strTrim(strNew("end-only\t ")), "end-only", "trim end"); TEST_RESULT_STR_Z(strTrim(strNew("\n\rboth\r\n")), "both", "trim both"); TEST_RESULT_STR_Z(strTrim(strNew("begin \r\n\tend")), "begin \r\n\tend", "ignore whitespace in middle"); } // ***************************************************************************************************************************** if (testBegin("strChr() and strTrunc()")) { TEST_RESULT_INT(strChr(STRDEF("abcd"), 'c'), 2, "c found"); TEST_RESULT_INT(strChr(STRDEF("abcd"), 'C'), -1, "capital C not found"); TEST_RESULT_INT(strChr(STRDEF("abcd"), 'i'), -1, "i not found"); TEST_RESULT_INT(strChr(STRDEF(""), 'x'), -1, "empty string - x not found"); String *val = strNew("abcdef"); TEST_ERROR( strTrunc(val, (int)(strSize(val) + 1)), AssertError, "assertion 'idx >= 0 && (size_t)idx <= this->size' failed"); TEST_ERROR(strTrunc(val, -1), AssertError, "assertion 'idx >= 0 && (size_t)idx <= this->size' failed"); TEST_RESULT_STR_Z(strTrunc(val, strChr(val, 'd')), "abc", "simple string truncated"); strCat(val, "\r\n to end"); TEST_RESULT_STR_Z(strTrunc(val, strChr(val, 'n')), "abc\r\n to e", "complex string truncated"); TEST_RESULT_STR_Z(strTrunc(val, strChr(val, 'a')), "", "complete string truncated - empty string"); TEST_RESULT_INT(strSize(val), 0, "0 size"); TEST_RESULT_STR_Z(strTrunc(val, 0), "", "test coverage of empty string - no error thrown for index 0"); } // ***************************************************************************************************************************** if (testBegin("strToLog() and strObjToLog()")) { TEST_RESULT_STR_Z(strToLog(STRDEF("test")), "{\"test\"}", "format string"); TEST_RESULT_STR_Z(strToLog(NULL), "null", "format null string"); char buffer[256]; TEST_RESULT_UINT(strObjToLog(NULL, (StrObjToLogFormat)strToLog, buffer, sizeof(buffer)), 4, "format null string"); TEST_RESULT_Z(buffer, "null", "check null string"); TEST_RESULT_UINT(strObjToLog(STRDEF("teststr"), (StrObjToLogFormat)strToLog, buffer, sizeof(buffer)), 11, "format string"); TEST_RESULT_Z(buffer, "{\"teststr\"}", "check string"); } // ***************************************************************************************************************************** if (testBegin("strSizeFormat()")) { TEST_RESULT_STR_Z(strSizeFormat(0), "0B", "zero bytes"); TEST_RESULT_STR_Z(strSizeFormat(1023), "1023B", "1023 bytes"); TEST_RESULT_STR_Z(strSizeFormat(1024), "1KB", "1 KB"); TEST_RESULT_STR_Z(strSizeFormat(2200), "2.1KB", "2.1 KB"); TEST_RESULT_STR_Z(strSizeFormat(1048576), "1MB", "1 MB"); TEST_RESULT_STR_Z(strSizeFormat(20162900), "19.2MB", "19.2 MB"); TEST_RESULT_STR_Z(strSizeFormat(1073741824), "1GB", "1 GB"); TEST_RESULT_STR_Z(strSizeFormat(1073741824 + 107374183), "1.1GB", "1.1 GB"); TEST_RESULT_STR_Z(strSizeFormat(UINT64_MAX), "17179869183GB", "uint64 max"); } // ***************************************************************************************************************************** if (testBegin("strLstNew(), strLstAdd*(), strLstGet(), strLstMove(), strLstSize(), and strLstFree()")) { // Add strings to the list // ------------------------------------------------------------------------------------------------------------------------- StringList *list = NULL; MEM_CONTEXT_TEMP_BEGIN() { list = strLstNew(); for (int listIdx = 0; listIdx <= LIST_INITIAL_SIZE; listIdx++) { if (listIdx == 0) { TEST_RESULT_PTR(strLstAdd(list, NULL), NULL, "add null item"); } else { TEST_RESULT_STR( strLstAdd(list, strNewFmt("STR%02d", listIdx)), strNewFmt("STR%02d", listIdx), "add item %d", listIdx); } } strLstMove(list, memContextPrior()); } MEM_CONTEXT_TEMP_END(); TEST_RESULT_INT(strLstSize(list), 9, "list size"); // Read them back and check values // ------------------------------------------------------------------------------------------------------------------------- for (unsigned int listIdx = 0; listIdx < strLstSize(list); listIdx++) { if (listIdx == 0) { TEST_RESULT_PTR(strLstGet(list, listIdx), NULL, "check null item"); } else { TEST_RESULT_STR(strLstGet(list, listIdx), strNewFmt("STR%02u", listIdx), "check item %u", listIdx); } } TEST_RESULT_VOID(strLstFree(list), "free string list"); TEST_RESULT_VOID(strLstFree(NULL), "free null string list"); // Add if missing and remove // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(list, strLstNew(), "new list"); TEST_RESULT_VOID(strLstAddIfMissing(list, STRDEF("item1")), "add item 1"); TEST_RESULT_UINT(strLstSize(list), 1, "check size"); TEST_RESULT_BOOL(strLstExistsZ(list, "item1"), true, "check exists"); TEST_RESULT_BOOL(strLstExistsZ(list, NULL), false, "check null exists"); TEST_RESULT_VOID(strLstAddIfMissing(list, STRDEF("item1")), "add item 1 again"); TEST_RESULT_UINT(strLstSize(list), 1, "check size"); TEST_RESULT_BOOL(strLstRemove(list, STRDEF("item1")), true, "remove item 1"); TEST_RESULT_BOOL(strLstRemove(list, STRDEF("item1")), false, "remove item 1 fails"); TEST_RESULT_UINT(strLstSize(list), 0, " check size"); } // ***************************************************************************************************************************** if (testBegin("strLstNewSplit()")) { TEST_RESULT_STR_Z(strLstJoin(strLstNewSplit(STRDEF(""), STRDEF(", ")), ", "), "", "empty list"); TEST_RESULT_STR_Z(strLstJoin(strLstNewSplit(STRDEF("item1"), STRDEF(", ")), ", "), "item1", "one item"); TEST_RESULT_STR_Z(strLstJoin(strLstNewSplit(STRDEF("item1, item2"), STRDEF(", ")), ", "), "item1, item2", "two items"); } // ***************************************************************************************************************************** if (testBegin("strLstNewSplitSize()")) { TEST_RESULT_STR_Z(strLstJoin(strLstNewSplitSize(STRDEF(""), STRDEF(" "), 0), ", "), "", "empty list"); TEST_RESULT_STR_Z(strLstJoin(strLstNewSplitSizeZ(STRDEF("abc def"), " ", 3), "-"), "abc-def", "two items"); TEST_RESULT_STR_Z(strLstJoin(strLstNewSplitSizeZ(STRDEF("abc def"), " ", 4), "-"), "abc-def", "one items"); TEST_RESULT_STR_Z(strLstJoin(strLstNewSplitSizeZ(STRDEF("abc def ghi"), " ", 4), "-"), "abc-def-ghi", "three items"); TEST_RESULT_STR_Z(strLstJoin(strLstNewSplitSizeZ(STRDEF("abc def ghi"), " ", 8), "-"), "abc def-ghi", "three items"); TEST_RESULT_STR_Z(strLstJoin(strLstNewSplitSizeZ(STRDEF("abc def "), " ", 4), "-"), "abc-def ", "two items"); TEST_RESULT_STR_Z( strLstJoin(strLstNewSplitSize(STRDEF("this is a short sentence"), STRDEF(" "), 10), "\n"), "this is a\n" "short\n" "sentence", "empty list"); } // ***************************************************************************************************************************** if (testBegin("strLstNewVarLst()")) { VariantList *varList = varLstNew(); varLstAdd(varList, varNewStr(STRDEF("string1"))); varLstAdd(varList, varNewStr(STRDEF("string2"))); TEST_RESULT_STR_Z(strLstJoin(strLstNewVarLst(varList), ", "), "string1, string2", "string list from variant list"); TEST_RESULT_PTR(strLstNewVarLst(NULL), NULL, "null list from null var list"); varLstFree(varList); } // ***************************************************************************************************************************** if (testBegin("strLstPtr()")) { StringList *list = strLstNew(); // Add strings to the list // ------------------------------------------------------------------------------------------------------------------------- for (int listIdx = 0; listIdx <= 3; listIdx++) { if (listIdx == 0) strLstAdd(list, NULL); else strLstAdd(list, strNewFmt("STR%02d", listIdx)); } // Check pointer // ------------------------------------------------------------------------------------------------------------------------- const char **szList = strLstPtr(list); for (unsigned int listIdx = 0; listIdx < strLstSize(list); listIdx++) { if (listIdx == 0) { TEST_RESULT_PTR(szList[listIdx], NULL, "check null item"); } else { TEST_RESULT_Z_STR(szList[listIdx], strNewFmt("STR%02u", listIdx), "check item %u", listIdx); } } TEST_RESULT_PTR(szList[strLstSize(list)], NULL, "check null terminator"); strLstFree(list); } // ***************************************************************************************************************************** if (testBegin("strLstExists() and strLstExistsZ()")) { StringList *list = strLstNew(); strLstAddZ(list, "A"); strLstAddZ(list, "C"); TEST_RESULT_BOOL(strLstExists(list, STRDEF("B")), false, "string does not exist"); TEST_RESULT_BOOL(strLstExists(list, STRDEF("C")), true, "string exists"); TEST_RESULT_BOOL(strLstExistsZ(list, "B"), false, "string does not exist"); TEST_RESULT_BOOL(strLstExistsZ(list, "C"), true, "string exists"); } // ***************************************************************************************************************************** if (testBegin("strLstJoin()")) { StringList *list = strLstNew(); TEST_RESULT_STR_Z(strLstJoin(list, ", "), "", "empty list"); strLstAdd(list, STRDEF("item1")); strLstAddZ(list, "item2"); TEST_RESULT_STR_Z(strLstJoin(list, ", "), "item1, item2", "list"); strLstAdd(list, NULL); TEST_RESULT_STR_Z(strLstJoin(list, ", "), "item1, item2, [NULL]", "list with NULL at end"); TEST_RESULT_STR_Z(strLstJoin(strLstDup(list), ", "), "item1, item2, [NULL]", "dup'd list with NULL at end"); TEST_RESULT_PTR(strLstDup(NULL), NULL, "dup NULL list"); strLstFree(list); } // ***************************************************************************************************************************** if (testBegin("strLstMergeAnti()")) { StringList *list = strLstNew(); StringList *anti = strLstNew(); TEST_RESULT_STR_Z(strLstJoin(strLstMergeAnti(list, anti), ", "), "", "list and anti empty"); strLstAddZ(anti, "item2"); strLstAddZ(anti, "item3"); TEST_RESULT_STR_Z(strLstJoin(strLstMergeAnti(list, anti), ", "), "", "list empty"); strLstAddZ(list, "item1"); strLstAddZ(list, "item3"); strLstAddZ(list, "item4"); strLstAddZ(list, "item5"); TEST_RESULT_STR_Z(strLstJoin(strLstMergeAnti(list, anti), ", "), "item1, item4, item5", "list results"); TEST_RESULT_STR_Z(strLstJoin(strLstMergeAnti(list, strLstNew()), ", "), "item1, item3, item4, item5", "anti empty"); list = strLstNew(); strLstAddZ(list, "item2"); strLstAddZ(list, "item4"); strLstAddZ(list, "item6"); anti = strLstNew(); strLstAddZ(anti, "item1"); strLstAddZ(anti, "item4"); strLstAddZ(anti, "item7"); TEST_RESULT_STR_Z(strLstJoin(strLstMergeAnti(list, anti), ", "), "item2, item6", "list results"); list = strLstNew(); strLstAddZ(list, "item7"); anti = strLstNew(); strLstAddZ(anti, "item1"); strLstAddZ(anti, "item4"); strLstAddZ(anti, "item6"); TEST_RESULT_STR_Z(strLstJoin(strLstMergeAnti(list, anti), ", "), "item7", "list results"); } // ***************************************************************************************************************************** if (testBegin("strLstSort()")) { StringList *list = strLstNew(); strLstAddZ(list, "c"); strLstAddZ(list, "a"); strLstAddZ(list, "b"); TEST_RESULT_STR_Z(strLstJoin(strLstSort(list, sortOrderAsc), ", "), "a, b, c", "sort ascending"); TEST_RESULT_STR_Z(strLstJoin(strLstSort(list, sortOrderDesc), ", "), "c, b, a", "sort descending"); strLstComparatorSet(list, lstComparatorStr); TEST_RESULT_STR_Z(strLstJoin(strLstSort(list, sortOrderAsc), ", "), "a, b, c", "sort ascending"); } // ***************************************************************************************************************************** if (testBegin("strLstToLog()")) { StringList *list = strLstNew(); TEST_RESULT_STR_Z(strLstToLog(list), "{[]}", "format empty list"); strLstInsertZ(list, 0, "item3"); TEST_RESULT_STR_Z(strLstToLog(list), "{[\"item3\"]}", "format 1 item list"); strLstInsert(list, 0, STRDEF("item1")); strLstInsertZ(list, 1, "item2"); TEST_RESULT_STR_Z(strLstToLog(list), "{[\"item1\", \"item2\", \"item3\"]}", "format 3 item list"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/typeVariantTest.c000066400000000000000000000713051362531507100250520ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Variant Data Type ***********************************************************************************************************************************/ #include "common/stackTrace.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("bool")) { // Ensure type sizes are as expected TEST_RESULT_UINT(sizeof(VariantBoolConst), 8, "check VariantBoolConst size"); TEST_RESULT_UINT(sizeof(VariantBool), TEST_64BIT() ? 16 : 12, "check VariantBool size"); // ------------------------------------------------------------------------------------------------------------------------- Variant *boolean = varNewBool(false); TEST_RESULT_INT(varType(boolean), varTypeBool, "get bool type"); varFree(boolean); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(varBool(varNewStrZ("string")), AssertError, "assertion 'this->type == varTypeBool' failed"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(varBool(BOOL_TRUE_VAR), true, "true bool variant"); TEST_RESULT_BOOL(varBool(BOOL_FALSE_VAR), false, "false bool variant"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(varBoolForce(VARBOOL(false)), false, "force bool to bool"); TEST_RESULT_BOOL(varBoolForce(VARINT(1)), true, "force int to bool"); TEST_RESULT_BOOL(varBoolForce(VARUINT(0)), false, "force uint to bool"); TEST_RESULT_BOOL(varBoolForce(VARINT64(false)), false, "force int64 to bool"); TEST_RESULT_BOOL(varBoolForce(VARUINT64(12)), true, "force uint64 to bool"); TEST_ERROR(varBoolForce(varNewVarLst(varLstNew())), AssertError, "unable to force VariantList to bool"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(varFree(NULL), "ok to free null variant"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(varBool(varDup(BOOL_TRUE_VAR)), true, "dup bool"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(varEq(BOOL_TRUE_VAR, VARINT(1)), false, "bool, int not eq"); TEST_RESULT_BOOL(varEq(BOOL_TRUE_VAR, BOOL_TRUE_VAR), true, "bool, bool eq"); TEST_RESULT_BOOL(varEq(BOOL_FALSE_VAR, BOOL_TRUE_VAR), false, "bool, bool not eq"); } // ***************************************************************************************************************************** if (testBegin("double")) { // Ensure type sizes are as expected TEST_RESULT_UINT(sizeof(VariantDoubleConst), TEST_64BIT() ? 16 : 12, "check VariantDoubleConst size"); TEST_RESULT_UINT(sizeof(VariantDouble), TEST_64BIT() ? 24 : 16, "check VariantDouble size"); Variant *var = varNewDbl(44.44); TEST_RESULT_DOUBLE(varDbl(var), 44.44, "double variant"); varFree(var); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(varDbl(varNewStrZ("string")), AssertError, "assertion 'this->type == varTypeDouble' failed"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_DOUBLE(varDblForce(VARDBL(4.567)), 4.567, "force double to double"); TEST_RESULT_DOUBLE(varDblForce(varNewBool(false)), 0, "force bool to double"); TEST_RESULT_DOUBLE(varDblForce(VARINT(123)), 123, "force int to double"); TEST_RESULT_DOUBLE(varDblForce(VARINT64(999999999999)), 999999999999, "force int64 to double"); TEST_RESULT_DOUBLE(varDblForce(VARUINT64(9223372036854775807U)), 9223372036854775807U, "force uint64 to double"); TEST_RESULT_DOUBLE(varDblForce(VARUINT(992)), 992, "force uint to double"); TEST_RESULT_DOUBLE(varDblForce(VARSTRDEF("879.01")), 879.01, "force String to double"); TEST_RESULT_DOUBLE(varDblForce(VARSTRDEF("0")), 0, "force String to double"); TEST_RESULT_DOUBLE( varDblForce(VARUINT64(UINT64_MAX)), 18446744073709551616.0, "force max uint64 to double (it will be rounded)"); TEST_ERROR(varDblForce(VARSTRDEF("AAA")), FormatError, "unable to convert string 'AAA' to double"); TEST_ERROR(varDblForce(varNewVarLst(varLstNew())), AssertError, "unable to force VariantList to double"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_DOUBLE(varDbl(varDup(VARDBL(3.1415))), 3.1415, "dup double"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(varEq(VARDBL(1.234), VARDBL(1.234)), true, "double, double eq"); TEST_RESULT_BOOL(varEq(VARDBL(4.321), VARDBL(1.234)), false, "double, double not eq"); } // ***************************************************************************************************************************** if (testBegin("int")) { // Ensure type sizes are as expected TEST_RESULT_UINT(sizeof(VariantIntConst), 8, "check VariantIntConst size"); TEST_RESULT_UINT(sizeof(VariantInt), TEST_64BIT() ? 16 : 12, "check VariantInt size"); // ------------------------------------------------------------------------------------------------------------------------- Variant *integer = varNewInt(44); TEST_RESULT_INT(varInt(integer), 44, "int variant"); TEST_RESULT_INT(varIntForce(integer), 44, "force int to int"); varFree(integer); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_INT(varIntForce(varNewBool(true)), 1, "force bool to int"); TEST_ERROR(varIntForce(varNewVarLst(varLstNew())), AssertError, "unable to force VariantList to int"); TEST_RESULT_INT(varIntForce(VARINT64(999)), 999, "force int64 to int"); TEST_ERROR(varIntForce(VARINT64(2147483648)), FormatError, "unable to convert int64 2147483648 to int"); TEST_ERROR(varIntForce(VARINT64(-2147483649)), FormatError, "unable to convert int64 -2147483649 to int"); TEST_RESULT_INT(varIntForce(VARUINT(54321)), 54321, "force uint to int"); TEST_ERROR(varIntForce(VARUINT(2147483648)), FormatError, "unable to convert unsigned int 2147483648 to int"); TEST_RESULT_INT(varIntForce(VARUINT64(12345)), 12345, "force uint64 to int"); TEST_ERROR(varIntForce(VARUINT64(2147483648)), FormatError, "unable to convert uint64 2147483648 to int"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(varInt(varNewStrZ("string")), AssertError, "assertion 'this->type == varTypeInt' failed"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_INT(varInt(varDup(VARINT(88976))), 88976, "dup int"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(varEq(NULL, NULL), true, "null, null eq"); TEST_RESULT_BOOL(varEq(NULL, VARINT(123)), false, "null, int not eq"); TEST_RESULT_BOOL(varEq(VARINT(123), NULL), false, "int, null not eq"); TEST_RESULT_BOOL(varEq(VARINT(123), VARINT(123)), true, "int, int eq"); TEST_RESULT_BOOL(varEq(VARINT(444), VARINT(123)), false, "int, int not eq"); } // ***************************************************************************************************************************** if (testBegin("int64")) { // Ensure type sizes are as expected TEST_RESULT_UINT(sizeof(VariantInt64Const), TEST_64BIT() ? 16 : 12, "check VariantInt64Const size"); TEST_RESULT_UINT(sizeof(VariantInt64), TEST_64BIT() ? 24 : 16, "check VariantInt64 size"); // ------------------------------------------------------------------------------------------------------------------------- Variant *integer = varNewInt64(44); TEST_RESULT_INT(varInt64(integer), 44, "int64 variant"); TEST_RESULT_INT(varInt64Force(integer), 44, "force int64 to int64"); varFree(integer); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_INT(varInt64Force(varNewBool(true)), 1, "force bool to int64"); TEST_RESULT_INT(varInt64Force(VARINT(2147483647)), 2147483647, "force int to int64"); TEST_RESULT_INT(varInt64Force(VARUINT(4294967295)), 4294967295, "force uint to int64"); TEST_RESULT_INT(varInt64Force(varNewStrZ("9223372036854775807")), 9223372036854775807L, "force str to int64"); TEST_RESULT_INT(varInt64Force(VARUINT64(9223372036854775807U)), 9223372036854775807L, "force uint64 to int64"); TEST_ERROR( varInt64Force(varNewStrZ("9223372036854775808")), FormatError, "unable to convert base 10 string '9223372036854775808' to int64"); TEST_ERROR(varInt64Force(varNewVarLst(varLstNew())), AssertError, "unable to force VariantList to int64"); TEST_ERROR(varInt64Force(VARUINT64(9223372036854775808U)), FormatError, "unable to convert uint64 9223372036854775808 to int64"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(varInt64(varNewStrZ("string")), AssertError, "assertion 'this->type == varTypeInt64' failed"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_INT(varInt64(varDup(VARINT64(88976))), 88976, "dup int64"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(varEq(NULL, NULL), true, "null, null eq"); TEST_RESULT_BOOL(varEq(NULL, VARINT64(123)), false, "null, int64 not eq"); TEST_RESULT_BOOL(varEq(VARINT64(9223372036854775807L), VARINT64(9223372036854775807L)), true, "int64, int64 eq"); TEST_RESULT_BOOL(varEq(VARINT64(444), VARINT64(123)), false, "int64, int64 not eq"); } // ***************************************************************************************************************************** if (testBegin("unsigned int")) { // Ensure type sizes are as expected TEST_RESULT_UINT(sizeof(VariantUIntConst), 8, "check VariantUIntConst size"); TEST_RESULT_UINT(sizeof(VariantUInt), TEST_64BIT() ? 16 : 12, "check VariantUInt size"); // ------------------------------------------------------------------------------------------------------------------------- Variant *unsignedint = varNewUInt(787); TEST_RESULT_DOUBLE(varUInt(unsignedint), 787, "uint variant"); TEST_RESULT_DOUBLE(varUIntForce(unsignedint), 787, "force uint to uint"); varFree(unsignedint); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_DOUBLE(varUIntForce(varNewBool(true)), 1, "force bool to uint"); TEST_RESULT_DOUBLE(varUIntForce(VARINT(2147483647)), 2147483647, "force int to uint"); TEST_RESULT_DOUBLE(varUIntForce(VARINT64(2147483647)), 2147483647, "force int64 to uint"); TEST_RESULT_DOUBLE(varUIntForce(varNewStrZ("4294967295")), 4294967295, "force str to uint"); TEST_RESULT_DOUBLE(varUIntForce(VARUINT64(4294967295U)), 4294967295U, "force uint64 to uint"); TEST_ERROR( varUIntForce(varNewStrZ("4294967296")), FormatError, "unable to convert base 10 string '4294967296' to unsigned int"); // string value is out of bounds for uint TEST_ERROR(varUIntForce(varNewStrZ(" 16")), FormatError,"unable to convert base 10 string ' 16' to unsigned int"); TEST_ERROR(varUIntForce(varNewVarLst(varLstNew())), AssertError, "unable to force VariantList to unsigned int"); TEST_ERROR(varUIntForce(VARINT64(4294967296L)), FormatError, "unable to convert int64 4294967296 to unsigned int"); TEST_ERROR(varUIntForce(VARUINT64(4294967296U)), FormatError, "unable to convert uint64 4294967296 to unsigned int"); TEST_ERROR(varUIntForce(VARINT64(-1)), FormatError, "unable to convert int64 -1 to unsigned int"); TEST_ERROR(varUIntForce(VARINT(-1)), FormatError, "unable to convert int -1 to unsigned int"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(varUInt(varNewStrZ("string")), AssertError, "assertion 'this->type == varTypeUInt' failed"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_DOUBLE(varUInt(varDup(VARUINT(88976))), 88976, "dup uint"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(varEq(VARUINT(9999), VARUINT(9999)), true, "uint, uint eq"); TEST_RESULT_BOOL(varEq(VARUINT(444), VARUINT(123)), false, "uint, uint not eq"); } // ***************************************************************************************************************************** if (testBegin("uint64")) { // Ensure type sizes are as expected TEST_RESULT_UINT(sizeof(VariantUInt64Const), TEST_64BIT() ? 16 : 12, "check VariantUInt64Const size"); TEST_RESULT_UINT(sizeof(VariantUInt64), TEST_64BIT() ? 24 : 16, "check VariantUInt64 size"); // ------------------------------------------------------------------------------------------------------------------------- Variant *uint64 = varNewUInt64(44); TEST_RESULT_DOUBLE(varUInt64(uint64), 44, "uint64 variant"); TEST_RESULT_DOUBLE(varUInt64Force(uint64), 44, "force uint64 to uint64"); varFree(uint64); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_DOUBLE(varUInt64Force(varNewBool(true)), 1, "force bool to uint64"); TEST_RESULT_DOUBLE(varUInt64Force(VARINT(2147483647)), 2147483647, "force int to uint64"); TEST_RESULT_INT(varUInt64Force(VARUINT(4294967295)), 4294967295, "force uint to uint64"); TEST_RESULT_DOUBLE(varUInt64Force(VARINT64(2147483647)), 2147483647, "force int64 to uint64"); TEST_RESULT_DOUBLE(varUInt64Force(varNewStrZ("18446744073709551615")), 18446744073709551615U, "force str to uint64"); TEST_RESULT_DOUBLE(varUInt64Force(VARUINT64(18446744073709551615U)), 18446744073709551615U, "force uint64 to uint64"); TEST_ERROR( varUInt64Force(varNewStrZ("18446744073709551616")), FormatError, "unable to convert base 10 string '18446744073709551616' to uint64"); // string value is out of bounds for uint64 TEST_ERROR(varUInt64Force(varNewStrZ(" 16")), FormatError,"unable to convert base 10 string ' 16' to uint64"); TEST_ERROR(varUInt64Force(varNewVarLst(varLstNew())), AssertError, "unable to force VariantList to uint64"); TEST_ERROR(varUInt64Force(VARINT64(-1)), FormatError, "unable to convert int64 -1 to uint64"); TEST_ERROR(varUInt64Force(VARINT(-1)), FormatError, "unable to convert int -1 to uint64"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(varUInt64(varNewStrZ("string")), AssertError, "assertion 'this->type == varTypeUInt64' failed"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_DOUBLE(varUInt64(varDup(VARUINT64(88976))), 88976, "dup uint64"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(varEq(NULL, NULL), true, "null, null eq"); TEST_RESULT_BOOL(varEq(NULL, VARUINT64(123)), false, "null, uint64 not eq"); TEST_RESULT_BOOL(varEq(VARUINT64(9223372036854775807L), VARUINT64(9223372036854775807L)), true, "uint64, uint64 eq"); TEST_RESULT_BOOL(varEq(VARUINT64(444), VARUINT64(123)), false, "uint64, uint64 not eq"); } // ***************************************************************************************************************************** if (testBegin("keyValue")) { // Ensure type sizes are as expected TEST_RESULT_UINT(sizeof(VariantKeyValue), TEST_64BIT() ? 24 : 12, "check VariantKeyValue size"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(varKv(VARINT(66)), AssertError, "assertion 'this->type == varTypeKeyValue' failed"); // ------------------------------------------------------------------------------------------------------------------------- Variant *keyValue = NULL; TEST_ASSIGN(keyValue, varNewKv(NULL), "new null"); TEST_RESULT_PTR(varKv(keyValue), NULL, " kv is null"); TEST_ASSIGN(keyValue, varNewKv(kvNew()), "new"); TEST_RESULT_PTR(kvPut(varKv(keyValue), VARINT(44), VARINT(55)), varKv(keyValue), " put int/int"); TEST_RESULT_INT(varInt(kvGet(varKv(keyValue), VARINT(44))), 55, " get int/int"); TEST_RESULT_PTR(varKv(NULL), NULL, "get null kv"); // ------------------------------------------------------------------------------------------------------------------------- Variant *keyValueDup = NULL; TEST_ASSIGN(keyValueDup, varDup(keyValue), "duplicate"); TEST_RESULT_INT(varInt(kvGet(varKv(keyValueDup), VARINT(44))), 55, " get int/int"); varFree(keyValue); varFree(keyValueDup); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(varEq(varNewKv(kvNew()), varNewKv(kvNew())), AssertError, "unable to test equality for KeyValue"); } // ***************************************************************************************************************************** if (testBegin("String")) { // Ensure type sizes are as expected TEST_RESULT_UINT(sizeof(VariantStringConst), TEST_64BIT() ? 16 : 8, "check VariantStringConst size"); TEST_RESULT_UINT(sizeof(VariantString), TEST_64BIT() ? 24 : 12, "check VariantString size"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_PTR(strPtr(varStr(varNewStr(NULL))), NULL, "new null str"); // ------------------------------------------------------------------------------------------------------------------------- Variant *string = varNewStr(strNew("test-str")); TEST_RESULT_STR_Z(varStr(string), "test-str", "string pointer"); varFree(string); TEST_RESULT_PTR(varStr(NULL), NULL, "get null string variant"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(varStr(varNewBool(true)), AssertError, "assertion 'this->type == varTypeString' failed"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_INT(varIntForce(VARSTR(STRDEF("777"))), 777, "int from string"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_INT(varBoolForce(VARSTRDEF("y")), true, "bool from string"); TEST_RESULT_INT(varBoolForce(VARSTRZ("on")), true, "bool from string"); TEST_RESULT_INT(varBoolForce(varNewStrZ("n")), false, "bool from string"); TEST_RESULT_INT(varBoolForce(VARSTRDEF("off")), false, "bool from string"); TEST_RESULT_INT(varBoolForce(VARSTRDEF("OFF")), false, "bool from string"); TEST_ERROR(varBoolForce(VARSTRDEF(BOGUS_STR)), FormatError, "unable to convert str 'BOGUS' to bool"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_STR_Z(varStrForce(VARSTRDEF("teststring")), "teststring", "force string to string"); TEST_RESULT_STR_Z(varStrForce(VARINT(999)), "999", "force int to string"); TEST_RESULT_STR_Z(varStrForce(VARINT64(9223372036854775807L)), "9223372036854775807", "force int64 to string"); TEST_RESULT_STR_Z(varStrForce(VARDBL((double)999999999.123456)), "999999999.123456", "force double to string"); TEST_RESULT_STR_Z(varStrForce(varNewBool(true)), "true", "force bool to string"); TEST_RESULT_STR_Z(varStrForce(varNewBool(false)), "false", "force bool to string"); TEST_RESULT_STR_Z(varStrForce(VARUINT64(18446744073709551615U)), "18446744073709551615", "force uint64 to string"); TEST_ERROR(varStrForce(varNewKv(kvNew())), FormatError, "unable to force KeyValue to String"); // ------------------------------------------------------------------------------------------------------------------------- string = varNewStrZ("not-an-int"); TEST_ERROR(varIntForce(string), FormatError, "unable to convert base 10 string 'not-an-int' to int"); varFree(string); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_STR_Z(varStr(VARSTRDEF("test-z-str")), "test-z-str", "new zero-terminated string"); TEST_RESULT_PTR(strPtr(varStr(VARSTR(NULL))), NULL, "new null strz"); TEST_RESULT_PTR(strPtr(varStr(varNewStrZ(NULL))), NULL, "new null strz"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_STR_Z(varStr(varDup(VARSTRDEF("yabba-dabba-doo"))), "yabba-dabba-doo", "dup string"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_PTR(varDup(NULL), NULL, "dup NULL"); TEST_RESULT_BOOL(varEq(VARSTRDEF("expect-equal"), VARSTRDEF("expect-equal")), true, "string, string eq"); TEST_RESULT_BOOL(varEq(VARSTRDEF("Y"), VARSTRDEF("X")), false, "string, string not eq"); } // ***************************************************************************************************************************** if (testBegin("VariantList")) { // Ensure type sizes are as expected TEST_RESULT_UINT(sizeof(VariantVariantList), TEST_64BIT() ? 24 : 12, "check VariantVariantList size"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(varVarLst(VARINT(66)), AssertError, "assertion 'this->type == varTypeVariantList' failed"); // ------------------------------------------------------------------------------------------------------------------------- Variant *listVar = NULL; TEST_RESULT_PTR(varVarLst(varNewVarLst(NULL)), NULL, "new null"); TEST_ASSIGN(listVar, varNewVarLst(varLstNew()), "new empty"); TEST_RESULT_INT(varLstSize(varVarLst(listVar)), 0, " empty size"); TEST_RESULT_PTR(varVarLst(NULL), NULL, "get null var list"); TEST_RESULT_PTR(varLstAdd(varVarLst(listVar), varNewBool(true)), varVarLst(listVar), " add bool"); TEST_RESULT_PTR(varLstAdd(varVarLst(listVar), varNewInt(55)), varVarLst(listVar), " add int"); TEST_RESULT_INT(varLstSize(varVarLst(listVar)), 2, " size with items"); TEST_RESULT_BOOL(varBool(varLstGet(varVarLst(listVar), 0)), true, " get bool"); TEST_RESULT_INT(varInt(varLstGet(varVarLst(listVar), 1)), 55, " get int"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(listVar, varNewVarLst(varVarLst(listVar)), "new with items"); TEST_RESULT_INT(varLstSize(varVarLst(listVar)), 2, " size with items"); // ------------------------------------------------------------------------------------------------------------------------- Variant *listVarDup = NULL; TEST_ASSIGN(listVarDup, varDup(listVar), "duplicate"); TEST_RESULT_INT(varLstSize(varVarLst(listVarDup)), 2, " size with items"); varFree(listVar); varFree(listVarDup); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(varEq(varNewVarLst(varLstNew()), varNewVarLst(varLstNew())), AssertError, "unable to test equality for VariantList"); } // ***************************************************************************************************************************** if (testBegin("varToLog")) { TEST_RESULT_STR_Z(varToLog(varNewStrZ("testme")), "{\"testme\"}", "format String"); TEST_RESULT_STR_Z(varToLog(varNewBool(false)), "{false}", "format bool"); TEST_RESULT_STR_Z(varToLog(varNewKv(kvNew())), "{KeyValue}", "format KeyValue"); TEST_RESULT_STR_Z(varToLog(varNewVarLst(varLstNew())), "{VariantList}", "format VariantList"); TEST_RESULT_STR_Z(varToLog(NULL), "null", "format null"); } // ***************************************************************************************************************************** if (testBegin("varLstNew(), varLstAdd(), varLstSize(), varLstGet(), and varListFree()")) { VariantList *list = NULL; MEM_CONTEXT_TEMP_BEGIN() { TEST_ASSIGN(list, varLstNew(), "new list"); TEST_RESULT_PTR(varLstMove(NULL, memContextPrior()), NULL, "move null to old context"); TEST_RESULT_PTR(varLstMove(list, memContextPrior()), list, "move var list to old context"); } MEM_CONTEXT_TEMP_END(); TEST_RESULT_PTR(varLstAdd(list, varNewInt(27)), list, "add int"); TEST_RESULT_PTR(varLstAdd(list, varNewStr(strNew("test-str"))), list, "add string"); TEST_RESULT_INT(varLstSize(list), 2, "list size"); TEST_RESULT_INT(varInt(varLstGet(list, 0)), 27, "check int"); TEST_RESULT_STR_Z(varStr(varLstGet(list, 1)), "test-str", "check string"); TEST_RESULT_VOID(varLstFree(list), "free list"); TEST_RESULT_VOID(varLstFree(NULL), "free null list"); } // ***************************************************************************************************************************** if (testBegin("varLstDup()")) { VariantList *list = varLstNew(); varLstAdd(list, varNewStrZ("string1")); varLstAdd(list, varNewStrZ("string2")); TEST_RESULT_STR_Z(strLstJoin(strLstNewVarLst(varLstDup(list)), ", "), "string1, string2", "duplicate variant list"); TEST_RESULT_PTR(varLstDup(NULL), NULL, "duplicate null list"); } // ***************************************************************************************************************************** if (testBegin("varLstNewStrLst()")) { StringList *listStr = strLstNew(); strLstAdd(listStr, strNew("string1")); strLstAdd(listStr, strNew("string2")); TEST_RESULT_STR_Z( strLstJoin(strLstNewVarLst(varLstNewStrLst(listStr)), ", "), "string1, string2", "variant list from string list"); TEST_RESULT_PTR(varLstNewStrLst(NULL), NULL, "variant list from null string list"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/typeXmlTest.c000066400000000000000000000136051362531507100242050ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Xml Types ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("xml*()")) { TEST_ERROR(xmlDocumentNewBuf(bufNewC(BOGUS_STR, strlen(BOGUS_STR))), FormatError, "invalid xml"); XmlDocument *xmlDocument = NULL; TEST_ASSIGN( xmlDocument, xmlDocumentNewZ( "\n" "\n" " bucket\n" " \n" " 2\n" " 1000\n" " false\n" " \n" " test1.txt\n" " 2009-10-12T17:50:30.000Z\n" " "fba9dede5f27731c9771645a39863328"\n" " 1234\n" " STANDARD\n" " \n" " \n" " test2.txt\n" " 2009-10-14T17:50:30.000Z\n" " "fba9dede5f27731c9771645a39863327"\n" " 4321\n" " STANDARD-IA\n" " \n" ""), "valid xml"); XmlNode *rootNode = NULL; TEST_ASSIGN(rootNode, xmlDocumentRoot(xmlDocument), "get root node"); XmlNode *nodeMaxKeys = NULL; TEST_ASSIGN(nodeMaxKeys, xmlNodeChild(rootNode, strNew("MaxKeys"), true), "get max keys"); TEST_RESULT_STR_Z(xmlNodeContent(nodeMaxKeys), "1000", " check MaxKeys content"); TEST_RESULT_PTR(xmlNodeContent(NULL), NULL, " get null content for null node"); TEST_RESULT_VOID(xmlNodeFree(nodeMaxKeys), "free node"); TEST_RESULT_VOID(xmlNodeFree(NULL), "free null node"); TEST_RESULT_UINT(xmlNodeChildTotal(rootNode, strNew("Contents")), 2, "Contents child total"); TEST_RESULT_STR_Z( xmlNodeContent(xmlNodeChild(xmlNodeChildN(rootNode, strNew("Contents"), 0, true), strNew("Key"), true)), "test1.txt", "Contents index 0 Key"); TEST_RESULT_STR_Z( xmlNodeContent(xmlNodeChild(xmlNodeChildN(rootNode, strNew("Contents"), 1, true), strNew("Key"), true)), "test2.txt", "Contents index 1 Key"); XmlNodeList *list = NULL; TEST_ASSIGN(list, xmlNodeChildList(rootNode, strNew("Contents")), "create node list"); TEST_RESULT_UINT(xmlNodeLstSize(list), 2, " check size"); TEST_RESULT_STR_Z( xmlNodeContent(xmlNodeChild(xmlNodeLstGet(list, 0), strNew("Key"), true)), "test1.txt", " check Contents index 0 Key"); TEST_RESULT_STR_Z( xmlNodeContent(xmlNodeChild(xmlNodeLstGet(list, 1), strNew("Key"), true)), "test2.txt", " check Contents index 1 Key"); TEST_RESULT_VOID(xmlNodeLstFree(list), " free list"); TEST_ERROR( xmlNodeChildN(rootNode, strNew("Contents"), 2, true), FormatError, "unable to find child 'Contents':2 in node 'ListBucketResult'"); TEST_RESULT_PTR(xmlNodeChildN(rootNode, strNew("Contents"), 2, false), NULL, "get missing child without error"); TEST_RESULT_PTR(xmlNodeAttribute(rootNode, strNew(BOGUS_STR)), NULL, "attempt to get missing attribute"); TEST_RESULT_STR_Z(xmlNodeAttribute(xmlNodeChild(rootNode, strNew("Name"), true), strNew("id")), "test", "get attribute"); TEST_RESULT_VOID(xmlDocumentFree(xmlDocument), "free xmldoc"); // Create an empty document, add data to it, and output xml // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(xmlDocument, xmlDocumentNew(strNew("CompleteMultipartUpload")), "new xml with root node"); XmlNode *partNode = NULL; TEST_ASSIGN(partNode, xmlNodeAdd(xmlDocumentRoot(xmlDocument), strNew("Part")), "create part node 1"); TEST_RESULT_VOID(xmlNodeContentSet(xmlNodeAdd(partNode, strNew("PartNumber")), strNew("1")), "set part number 1"); TEST_RESULT_VOID(xmlNodeContentSet(xmlNodeAdd(partNode, strNew("ETag")), strNew("E1")), "set etag 1"); TEST_ASSIGN(partNode, xmlNodeAdd(xmlDocumentRoot(xmlDocument), strNew("Part")), "create part node 2"); TEST_RESULT_VOID(xmlNodeContentSet(xmlNodeAdd(partNode, strNew("PartNumber")), strNew("2")), "set part number 2"); TEST_RESULT_VOID(xmlNodeContentSet(xmlNodeAdd(partNode, strNew("ETag")), strNew("E2")), "set etag 2"); TEST_RESULT_STR_Z( strNewBuf(xmlDocumentBuf(xmlDocument)), "\n" "" "1E1" "2E2" "\n", "get xml"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/typecTest.c000066400000000000000000000016431362531507100236660ustar00rootroot00000000000000/*********************************************************************************************************************************** Test C Types ***********************************************************************************************************************************/ #include void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("test int size")) { // Ensure that int is at least 4 bytes assert(sizeof(int) >= 4); } // ***************************************************************************************************************************** if (testBegin("test boolean values")) { // Ensure false and true are defined assert(true); assert(!false); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/userTest.c000066400000000000000000000036621362531507100235230ustar00rootroot00000000000000/*********************************************************************************************************************************** Test System User/Group Management ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("all")) { TEST_RESULT_VOID(userInit(), "initialize info"); TEST_RESULT_VOID(userInit(), "initialize info again"); TEST_RESULT_UINT(userId(), getuid(), "check user id"); TEST_RESULT_UINT(userIdFromName(userName()), userId(), "get user id"); TEST_RESULT_UINT(userIdFromName(NULL), (uid_t)-1, "get null user id"); TEST_RESULT_UINT(userIdFromName(STRDEF("bogus")), (uid_t)-1, "get bogus user id"); TEST_RESULT_STR_Z(userName(), testUser(), "check user name"); TEST_RESULT_STR_Z(userNameFromId(77777), NULL, "invalid user name by id"); TEST_RESULT_BOOL(userRoot(), false, "check user is root"); TEST_RESULT_UINT(groupId(), getgid(), "check group id"); TEST_RESULT_UINT(groupIdFromName(groupName()), groupId(), "get group id"); TEST_RESULT_UINT(groupIdFromName(NULL), (gid_t)-1, "get null group id"); TEST_RESULT_UINT(groupIdFromName(STRDEF("bogus")), (uid_t)-1, "get bogus group id"); TEST_RESULT_STR_Z(groupName(), testGroup(), "check name name"); TEST_RESULT_STR_Z(groupNameFromId(77777), NULL, "invalid group name by id"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/common/waitTest.c000066400000000000000000000056351362531507100235130ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Wait Handler ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("waitNew(), waitMore, and waitFree()")) { Wait *wait = NULL; TEST_ERROR(waitNew(10), AssertError, "assertion 'waitTime >= 100 && waitTime <= 999999000' failed"); TEST_ERROR(waitNew(9999999000), AssertError, "assertion 'waitTime >= 100 && waitTime <= 999999000' failed"); // ------------------------------------------------------------------------------------------------------------------------- TimeMSec begin = timeMSec(); TEST_ASSIGN(wait, waitNew(200), "new wait = 0.2 sec"); TEST_RESULT_DOUBLE(wait->waitTime, 200, " check wait time"); TEST_RESULT_DOUBLE(wait->sleepTime, 20, " check sleep time"); TEST_RESULT_DOUBLE(wait->sleepPrevTime, 0, " check sleep prev time"); TEST_RESULT_BOOL(wait->beginTime > (TimeMSec)1483228800000, true, " check begin time"); while (waitMore(wait)); TimeMSec end = timeMSec(); // Check bounds for time slept (within a range of .1 seconds) TEST_RESULT_BOOL(end - begin >= wait->waitTime, true, " lower range check"); TEST_RESULT_BOOL(end - begin < wait->waitTime + 100, true, " upper range check"); TEST_RESULT_VOID(waitFree(wait), " free wait"); // ------------------------------------------------------------------------------------------------------------------------- begin = timeMSec(); TEST_ASSIGN(wait, waitNew(1100), "new wait = 1.1 sec"); TEST_RESULT_DOUBLE(wait->waitTime, 1100, " check wait time"); TEST_RESULT_DOUBLE(wait->sleepTime, 100, " check sleep time"); TEST_RESULT_DOUBLE(wait->sleepPrevTime, 0, " check sleep prev time"); TEST_RESULT_BOOL(wait->beginTime > (TimeMSec)1483228800000, true, " check begin time"); while (waitMore(wait)); end = timeMSec(); // Check bounds for time slept (within a range of .1 seconds) TEST_RESULT_BOOL(end - begin >= wait->waitTime, true, " lower range check"); TEST_RESULT_BOOL(end - begin < wait->waitTime + 1200, true, " upper range check"); TEST_RESULT_VOID(waitFree(wait), " free wait"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/config/000077500000000000000000000000001362531507100215075ustar00rootroot00000000000000pgbackrest-release-2.24/test/src/module/config/configTest.c000066400000000000000000000453601362531507100237700ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Configuration Commands and Options ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Test run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // Static tests against known values -- these may break as options change so will need to be kept up to date. The tests have // generally been selected to favor values that are not expected to change but adjustments are welcome as long as the type of // test is not drastically changed. // ***************************************************************************************************************************** if (testBegin("check known values")) { TEST_ERROR(cfgCommandId(BOGUS_STR, true), AssertError, "invalid command 'BOGUS'"); TEST_RESULT_INT(cfgCommandId(BOGUS_STR, false), cfgCmdNone, "command none id from bogus"); TEST_RESULT_INT(cfgCommandId("archive-push", true), cfgCmdArchivePush, "command id from name"); TEST_ERROR( cfgCommandDefIdFromId(CFG_COMMAND_TOTAL), AssertError, "assertion 'commandId < cfgCmdNone' failed"); TEST_RESULT_INT(cfgCommandDefIdFromId(cfgCmdBackup), cfgDefCmdBackup, "command id to def id"); TEST_RESULT_Z(cfgCommandName(cfgCmdBackup), "backup", "command name from id"); TEST_RESULT_INT(cfgOptionDefIdFromId(cfgOptPgHost + 6), cfgDefOptPgHost, "option id to def id"); TEST_RESULT_INT(cfgOptionId("target"), cfgOptTarget, "option id from name"); TEST_RESULT_INT(cfgOptionId(BOGUS_STR), -1, "option id from invalid option name"); TEST_ERROR( cfgOptionIdFromDefId(999999, 6), AssertError, "assertion 'optionId != CFG_OPTION_TOTAL' failed"); TEST_ERROR( cfgOptionIdFromDefId(0, 999999), AssertError, "assertion 'index < cfgDefOptionIndexTotal(optionDefId)' failed"); TEST_RESULT_INT(cfgOptionIdFromDefId(cfgDefOptPgHost, 6), cfgOptPgHost + 6, "option def id to id"); TEST_ERROR(cfgOptionIndex(CFG_OPTION_TOTAL), AssertError, "assertion 'optionId < CFG_OPTION_TOTAL' failed"); TEST_RESULT_INT(cfgOptionIndex(cfgOptPgHostCmd + 6), 6, "option index"); TEST_RESULT_INT(cfgOptionIndex(cfgOptCompressLevel), 0, "option index"); TEST_RESULT_INT(cfgOptionIndexTotal(cfgOptPgPath), 8, "option index total"); TEST_RESULT_INT(cfgOptionIndexTotal(cfgOptLogLevelConsole), 1, "option index total"); TEST_RESULT_Z(cfgOptionName(cfgOptBackupStandby), "backup-standby", "option id from name"); } // ***************************************************************************************************************************** if (testBegin("configuration")) { TEST_RESULT_VOID(cfgInit(), "config init"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_INT(cfgCommand(), cfgCmdNone, "command begins as none"); TEST_RESULT_VOID(cfgCommandSet(cfgCmdBackup, cfgCmdRoleDefault), "command set to backup"); TEST_RESULT_INT(cfgCommand(), cfgCmdBackup, "command is backup"); TEST_RESULT_STR_Z(cfgCommandRoleName(), "backup", "command:role is backup"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(cfgCommandSet(cfgCmdBackup, cfgCmdRoleLocal), "command set to backup:local"); TEST_RESULT_STR_Z(cfgCommandRoleName(), "backup:local", "command:role is backup:local"); TEST_RESULT_INT(cfgCommandInternal(cfgCmdBackup), false, "backup is external"); TEST_RESULT_INT(cfgLogLevelDefault(), logLevelInfo, "default log level is info"); TEST_RESULT_BOOL(cfgLogFile(), true, "log file is on"); TEST_RESULT_BOOL(cfgLockRequired(), false, "lock is not required"); TEST_RESULT_BOOL(cfgLockRemoteRequired(), true, "remote lock is required"); TEST_RESULT_INT(cfgLockType(), lockTypeBackup, "lock is type backup"); TEST_RESULT_BOOL(cfgParameterAllowed(), false, "parameters not allowed"); TEST_RESULT_VOID(cfgCommandSet(cfgCmdInfo, cfgCmdRoleDefault), "command set to info"); TEST_RESULT_INT(cfgLogLevelDefault(), logLevelDebug, "default log level is debug"); TEST_RESULT_BOOL(cfgLogFile(), false, "log file is off"); TEST_RESULT_BOOL(cfgLockRequired(), false, "lock is not required"); TEST_RESULT_BOOL(cfgLockRemoteRequired(), false, "remote lock is not required"); TEST_RESULT_INT(cfgLockType(), lockTypeNone, "lock is type none"); TEST_RESULT_VOID(cfgCommandSet(cfgCmdStanzaCreate, cfgCmdRoleDefault), "command set to stanza-create"); TEST_RESULT_BOOL(cfgLockRequired(), true, "lock is required"); TEST_RESULT_INT(cfgLockType(), lockTypeAll, "lock is type all"); TEST_RESULT_VOID(cfgCommandSet(cfgCmdArchiveGet, cfgCmdRoleAsync), "command set to archive-get:async"); TEST_RESULT_BOOL(cfgLockRequired(), true, "lock is required"); TEST_RESULT_BOOL(cfgLogFile(), true, "log file is on"); TEST_RESULT_VOID(cfgCommandSet(cfgCmdInfo, cfgCmdRoleDefault), "command set to info"); cfgOptionSet(cfgOptLogLevelFile, cfgSourceParam, VARSTRDEF("info")); cfgOptionValidSet(cfgOptLogLevelFile, true); TEST_RESULT_BOOL(cfgLogFile(), true, "log file is on"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("command roles"); TEST_ERROR(cfgCommandRoleEnum(strNew(BOGUS_STR)), CommandInvalidError, "invalid command role 'BOGUS'"); TEST_RESULT_UINT(cfgCommandRoleEnum(NULL), cfgCmdRoleDefault, "command default role enum"); TEST_RESULT_UINT(cfgCommandRoleEnum(strNew("async")), cfgCmdRoleAsync, "command async role enum"); TEST_RESULT_UINT(cfgCommandRoleEnum(strNew("local")), cfgCmdRoleLocal, "command local role enum"); TEST_RESULT_UINT(cfgCommandRoleEnum(strNew("remote")), cfgCmdRoleRemote, "command remote role enum"); TEST_RESULT_STR(cfgCommandRoleStr(cfgCmdRoleDefault), NULL, "command default role str"); TEST_RESULT_STR_Z(cfgCommandRoleStr(cfgCmdRoleAsync), "async", "command async role str"); TEST_RESULT_STR_Z(cfgCommandRoleStr(cfgCmdRoleLocal), "local", "command local role str"); TEST_RESULT_STR_Z(cfgCommandRoleStr(cfgCmdRoleRemote), "remote", "command remote role str"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(cfgCommandHelp(), false, "command help defaults to false"); TEST_RESULT_VOID(cfgCommandHelpSet(true), "set command help"); TEST_RESULT_BOOL(cfgCommandHelp(), true, "command help is set"); // ------------------------------------------------------------------------------------------------------------------------- StringList *param = strLstNew(); strLstAddZ(param, "param"); TEST_RESULT_INT(strLstSize(cfgCommandParam()), 0, "command param list defaults to empty"); TEST_RESULT_VOID(cfgCommandParamSet(param), "set command param list"); TEST_RESULT_INT(strLstSize(cfgCommandParam()), 1, "command param list is set"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_PTR(cfgExe(), NULL, "exe defaults to null"); TEST_RESULT_VOID(cfgExeSet(strNew("/path/to/exe")), "set exe"); TEST_RESULT_Z(strPtr(cfgExe()), "/path/to/exe", "exe is set"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(cfgOptionNegate(cfgOptConfig), false, "negate defaults to false"); TEST_RESULT_VOID(cfgOptionNegateSet(cfgOptConfig, true), "set negate"); TEST_RESULT_BOOL(cfgOptionNegate(cfgOptConfig), true, "negate is set"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(cfgOptionReset(cfgOptConfig), false, "reset defaults to false"); TEST_RESULT_VOID(cfgOptionResetSet(cfgOptConfig, true), "set reset"); TEST_RESULT_BOOL(cfgOptionReset(cfgOptConfig), true, "reset is set"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(cfgOptionValid(cfgOptConfig), false, "valid defaults to false"); TEST_RESULT_BOOL(cfgOptionTest(cfgOptConfig), false, "option not valid for the command"); TEST_RESULT_VOID(cfgOptionValidSet(cfgOptConfig, true), "set valid"); TEST_RESULT_BOOL(cfgOptionValid(cfgOptConfig), true, "valid is set"); TEST_RESULT_BOOL(cfgOptionTest(cfgOptConfig), false, "option valid but value is null"); TEST_RESULT_VOID(cfgOptionSet(cfgOptConfig, cfgSourceParam, varNewStrZ("cfg")), "set option config"); TEST_RESULT_BOOL(cfgOptionTest(cfgOptConfig), true, "option valid and value not null"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_PTR(cfgOption(cfgOptOnline), NULL, "online is null"); TEST_RESULT_VOID(cfgOptionSet(cfgOptOnline, cfgSourceParam, varNewBool(false)), "set online"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptOnline), false, "online is set"); TEST_RESULT_VOID(cfgOptionSet(cfgOptOnline, cfgSourceParam, varNewStrZ("1")), "set online"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptOnline), true, "online is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptOnline), cfgSourceParam, "online source is set"); TEST_ERROR( cfgOptionDbl(cfgOptOnline), AssertError, "assertion 'varType(configStatic.option[optionId].value) == varTypeDouble' failed"); TEST_ERROR( cfgOptionInt64(cfgOptOnline), AssertError, "assertion 'varType(configStatic.option[optionId].value) == varTypeInt64' failed"); TEST_RESULT_VOID(cfgOptionSet(cfgOptCompressLevel, cfgSourceParam, varNewInt64(1)), "set compress-level"); TEST_RESULT_INT(cfgOptionInt(cfgOptCompressLevel), 1, "compress-level is set"); TEST_RESULT_VOID(cfgOptionSet(cfgOptCompressLevel, cfgSourceDefault, varNewStrZ("3")), "set compress-level"); TEST_RESULT_INT(cfgOptionUInt(cfgOptCompressLevel), 3, "compress-level is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptCompressLevel), cfgSourceDefault, "compress source is set"); TEST_ERROR( cfgOptionBool(cfgOptCompressLevel), AssertError, "assertion 'varType(configStatic.option[optionId].value) == varTypeBool' failed"); TEST_RESULT_VOID( cfgOptionSet(cfgOptArchivePushQueueMax, cfgSourceParam, varNewInt64(999999999999)), "set archive-push-queue-max"); TEST_RESULT_INT(cfgOptionInt64(cfgOptArchivePushQueueMax), 999999999999, "archive-push-queue-max is set"); TEST_RESULT_INT(cfgOptionUInt64(cfgOptArchivePushQueueMax), 999999999999, "archive-push-queue-max is set"); TEST_RESULT_VOID(cfgOptionSet(cfgOptProtocolTimeout, cfgSourceParam, varNewDbl(1.1)), "set protocol-timeout"); TEST_RESULT_DOUBLE(cfgOptionDbl(cfgOptProtocolTimeout), 1.1, "protocol-timeout is set"); TEST_RESULT_VOID(cfgOptionSet(cfgOptProtocolTimeout, cfgSourceConfig, varNewStrZ("3.3")), "set protocol-timeout"); TEST_RESULT_DOUBLE(cfgOptionDbl(cfgOptProtocolTimeout), 3.3, "protocol-timeout is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptProtocolTimeout), cfgSourceConfig, "protocol-timeout source is set"); TEST_ERROR( cfgOptionKv(cfgOptProtocolTimeout), AssertError, "assertion 'varType(configStatic.option[optionId].value) == varTypeKeyValue' failed"); TEST_RESULT_VOID(cfgOptionSet(cfgOptProtocolTimeout, cfgSourceConfig, NULL), "set protocol-timeout to NULL"); TEST_RESULT_PTR(cfgOption(cfgOptProtocolTimeout), NULL, "protocol-timeout is not set"); TEST_ERROR( cfgOptionSet(cfgOptRecoveryOption, cfgSourceParam, varNewDbl(1.1)), AssertError, "option 'recovery-option' must be set with KeyValue variant"); TEST_RESULT_VOID(cfgOptionSet(cfgOptRecoveryOption, cfgSourceConfig, varNewKv(kvNew())), "set recovery-option"); TEST_RESULT_INT(varLstSize(kvKeyList(cfgOptionKv(cfgOptRecoveryOption))), 0, "recovery-option is set"); TEST_ERROR( cfgOptionLst(cfgOptRecoveryOption), AssertError, "assertion 'configStatic.option[optionId].value == NULL" " || varType(configStatic.option[optionId].value) == varTypeVariantList' failed"); TEST_RESULT_INT(varLstSize(cfgOptionLst(cfgOptDbInclude)), 0, "db-include defaults to empty"); TEST_ERROR( cfgOptionSet(cfgOptDbInclude, cfgSourceParam, varNewDbl(1.1)), AssertError, "option 'db-include' must be set with VariantList variant"); TEST_RESULT_VOID(cfgOptionSet(cfgOptDbInclude, cfgSourceConfig, varNewVarLst(varLstNew())), "set db-include"); TEST_RESULT_INT(varLstSize(cfgOptionLst(cfgOptDbInclude)), 0, "db-include is set"); TEST_ERROR( cfgOptionStr(cfgOptDbInclude), AssertError, "assertion 'configStatic.option[optionId].value == NULL" " || varType(configStatic.option[optionId].value) == varTypeString' failed"); TEST_RESULT_PTR(cfgOptionStr(cfgOptStanza), NULL, "stanza defaults to null"); TEST_ERROR( cfgOptionSet(cfgOptStanza, cfgSourceParam, varNewDbl(1.1)), AssertError, "option 'stanza' must be set with String variant"); TEST_RESULT_VOID(cfgOptionSet(cfgOptStanza, cfgSourceConfig, varNewStrZ("db")), "set stanza"); TEST_RESULT_STR_Z(cfgOptionStr(cfgOptStanza), "db", "stanza is set"); TEST_ERROR( cfgOptionInt(cfgOptStanza), AssertError, "assertion 'varType(configStatic.option[optionId].value) == varTypeInt64' failed"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(cfgInit(), "config init resets value"); TEST_RESULT_INT(cfgCommand(), cfgCmdNone, "command begins as none"); } // ***************************************************************************************************************************** if (testBegin("cfgOptionHostPort()")) { unsigned int port = 55555; cfgInit(); cfgCommandSet(cfgCmdBackup, cfgCmdRoleDefault); cfgOptionValidSet(cfgOptRepoS3Host, true); cfgOptionSet(cfgOptRepoS3Host, cfgSourceConfig, varNewStrZ("host.com")) ; TEST_RESULT_STR_Z(cfgOptionHostPort(cfgOptRepoS3Host, &port), "host.com", "check plain host"); TEST_RESULT_UINT(port, 55555, "check that port was not updated"); cfgOptionSet(cfgOptRepoS3Host, cfgSourceConfig, varNewStrZ("myhost.com:777")) ; TEST_RESULT_STR_Z(cfgOptionHostPort(cfgOptRepoS3Host, &port), "myhost.com", "check host with port"); TEST_RESULT_UINT(port, 777, "check that port was updated"); TEST_RESULT_STR_Z(cfgOptionHostPort(cfgOptRepoS3Endpoint, &port), NULL, "check null host"); TEST_RESULT_UINT(port, 777, "check that port was not updated"); cfgOptionSet(cfgOptRepoS3Host, cfgSourceConfig, varNewStrZ("myhost.com:777:888")) ; TEST_ERROR( cfgOptionHostPort(cfgOptRepoS3Host, &port), OptionInvalidError, "'myhost.com:777:888' is not valid for option 'repo1-s3-host'" "\nHINT: is more than one port specified?"); TEST_RESULT_UINT(port, 777, "check that port was not updated"); cfgOptionValidSet(cfgOptRepoS3Endpoint, true); cfgOptionSet(cfgOptRepoS3Endpoint, cfgSourceConfig, varNewStrZ("myendpoint.com:ZZZ")) ; TEST_ERROR( cfgOptionHostPort(cfgOptRepoS3Endpoint, &port), OptionInvalidError, "'myendpoint.com:ZZZ' is not valid for option 'repo1-s3-endpoint'" "\nHINT: port is not a positive integer."); TEST_RESULT_UINT(port, 777, "check that port was not updated"); } // ***************************************************************************************************************************** if (testBegin("cfgOptionDefault() and cfgOptionDefaultSet()")) { TEST_RESULT_VOID(cfgInit(), "config init"); TEST_RESULT_VOID(cfgCommandSet(cfgCmdBackup, cfgCmdRoleDefault), "backup command"); TEST_ERROR( strPtr(varStr(cfgOptionDefaultValue(cfgOptDbInclude))), AssertError, "default value not available for option type 4"); TEST_RESULT_STR_Z(varStr(cfgOptionDefault(cfgOptType)), "incr", "backup type default"); TEST_RESULT_BOOL(varBool(cfgOptionDefault(cfgOptCompress)), "true", "backup compress default"); TEST_RESULT_DOUBLE(varDbl(cfgOptionDefault(cfgOptProtocolTimeout)), 1830, "backup protocol-timeout default"); TEST_RESULT_INT(varIntForce(cfgOptionDefault(cfgOptCompressLevel)), 6, "backup compress-level default"); TEST_RESULT_PTR(cfgOptionDefault(cfgOptDbInclude), NULL, "backup db-include default is null"); TEST_RESULT_VOID(cfgOptionSet(cfgOptPgHost, cfgSourceParam, varNewStrZ("backup")), "backup host set"); TEST_RESULT_VOID(cfgOptionDefaultSet(cfgOptPgHost, varNewStrZ("backup-default")), "backup host default"); TEST_RESULT_VOID(cfgOptionDefaultSet(cfgOptPgHost, varNewStrZ("backup-default2")), "reset backup host default"); TEST_RESULT_STR_Z(varStr(cfgOption(cfgOptPgHost)), "backup", "backup host value"); TEST_RESULT_STR_Z(varStr(cfgOptionDefault(cfgOptPgHost)), "backup-default2", "backup host default"); TEST_RESULT_VOID(cfgOptionSet(cfgOptPgSocketPath, cfgSourceDefault, NULL), "backup pg-socket-path set"); TEST_RESULT_VOID(cfgOptionDefaultSet(cfgOptPgSocketPath, varNewStrZ("/to/socket")), "backup pg-socket-path default"); TEST_RESULT_VOID(cfgOptionDefaultSet(cfgOptPgSocketPath, varNewStrZ("/to/socket2")), "reset backup pg-socket-path default"); TEST_RESULT_STR_Z(varStr(cfgOption(cfgOptPgSocketPath)), "/to/socket2", "backup pg-socket-path value"); TEST_RESULT_STR_Z(varStr(cfgOptionDefault(cfgOptPgSocketPath)), "/to/socket2", "backup pg-socket-path value default"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/config/defineTest.c000066400000000000000000000245561362531507100237610ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Configuration Command and Option Definition ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Test run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // Static tests against known values -- these may break as options change so will need to be kept up to date. The tests have // generally been selected to favor values that are not expected to change but adjustments are welcome as long as the type of // test is not drastically changed. // ***************************************************************************************************************************** if (testBegin("check known values")) { TEST_RESULT_Z(cfgDefOptionName(cfgDefOptConfig), "config", "option name"); TEST_RESULT_INT(cfgDefOptionId("repo-host"), cfgDefOptRepoHost, "define id"); TEST_RESULT_INT(cfgDefOptionId(BOGUS_STR), -1, "invalid define id"); TEST_RESULT_BOOL(cfgDefOptionAllowList(cfgDefCmdBackup, cfgDefOptLogLevelConsole), true, "allow list valid"); TEST_RESULT_BOOL(cfgDefOptionAllowList(cfgDefCmdBackup, cfgDefOptPgHost), false, "allow list not valid"); TEST_RESULT_BOOL(cfgDefOptionAllowList(cfgDefCmdBackup, cfgDefOptType), true, "command allow list valid"); TEST_RESULT_INT(cfgDefOptionAllowListValueTotal(cfgDefCmdBackup, cfgDefOptChecksumPage), 0, "allow list total = 0"); TEST_RESULT_INT(cfgDefOptionAllowListValueTotal(cfgDefCmdBackup, cfgDefOptType), 3, "allow list total"); TEST_RESULT_Z(cfgDefOptionAllowListValue(cfgDefCmdBackup, cfgDefOptType, 0), "full", "allow list value 0"); TEST_RESULT_Z(cfgDefOptionAllowListValue(cfgDefCmdBackup, cfgDefOptType, 1), "diff", "allow list value 1"); TEST_RESULT_Z(cfgDefOptionAllowListValue(cfgDefCmdBackup, cfgDefOptType, 2), "incr", "allow list value 2"); TEST_ERROR( cfgDefOptionAllowListValue(cfgDefCmdBackup, cfgDefOptType, 3), AssertError, "assertion 'valueId < cfgDefOptionAllowListValueTotal(commandDefId, optionDefId)' failed"); TEST_RESULT_BOOL( cfgDefOptionAllowListValueValid(cfgDefCmdBackup, cfgDefOptType, "diff"), true, "allow list value valid"); TEST_RESULT_BOOL( cfgDefOptionAllowListValueValid(cfgDefCmdBackup, cfgDefOptType, BOGUS_STR), false, "allow list value not valid"); TEST_RESULT_BOOL(cfgDefOptionAllowRange(cfgDefCmdBackup, cfgDefOptCompressLevel), true, "range allowed"); TEST_RESULT_BOOL(cfgDefOptionAllowRange(cfgDefCmdBackup, cfgDefOptRepoHost), false, "range not allowed"); TEST_RESULT_DOUBLE(cfgDefOptionAllowRangeMin(cfgDefCmdBackup, cfgDefOptDbTimeout), 0.1, "range min"); TEST_RESULT_DOUBLE(cfgDefOptionAllowRangeMax(cfgDefCmdBackup, cfgDefOptCompressLevel), 9, "range max"); TEST_RESULT_DOUBLE(cfgDefOptionAllowRangeMin(cfgDefCmdArchivePush, cfgDefOptArchivePushQueueMax), 0, "range min"); TEST_RESULT_DOUBLE( cfgDefOptionAllowRangeMax(cfgDefCmdArchivePush, cfgDefOptArchivePushQueueMax), 4503599627370496, "range max"); TEST_ERROR( cfgDefOptionDefault(cfgDefCommandTotal(), cfgDefOptCompressLevel), AssertError, "assertion 'commandDefId < cfgDefCommandTotal()' failed"); TEST_ERROR(cfgDefOptionDefault( cfgDefCmdBackup, cfgDefOptionTotal()), AssertError, "assertion 'optionDefId < cfgDefOptionTotal()' failed"); TEST_RESULT_Z(cfgDefOptionDefault(cfgDefCmdBackup, cfgDefOptCompressLevel), "6", "option default exists"); TEST_RESULT_Z(cfgDefOptionDefault(cfgDefCmdRestore, cfgDefOptType), "default", "command default exists"); TEST_RESULT_Z(cfgDefOptionDefault(cfgDefCmdBackup, cfgDefOptRepoHost), NULL, "default does not exist"); TEST_RESULT_BOOL(cfgDefOptionDepend(cfgDefCmdRestore, cfgDefOptRepoS3Key), true, "has depend option"); TEST_RESULT_BOOL(cfgDefOptionDepend(cfgDefCmdRestore, cfgDefOptType), false, "does not have depend option"); TEST_RESULT_INT(cfgDefOptionDependOption(cfgDefCmdBackup, cfgDefOptPgHostUser), cfgDefOptPgHost, "depend option id"); TEST_RESULT_INT(cfgDefOptionDependOption(cfgDefCmdBackup, cfgDefOptRepoHostCmd), cfgDefOptRepoHost, "depend option id"); TEST_RESULT_INT(cfgDefOptionDependValueTotal(cfgDefCmdRestore, cfgDefOptTarget), 3, "depend option value total"); TEST_RESULT_Z(cfgDefOptionDependValue(cfgDefCmdRestore, cfgDefOptTarget, 0), "name", "depend option value 0"); TEST_RESULT_Z(cfgDefOptionDependValue(cfgDefCmdRestore, cfgDefOptTarget, 1), "time", "depend option value 1"); TEST_RESULT_Z(cfgDefOptionDependValue(cfgDefCmdRestore, cfgDefOptTarget, 2), "xid", "depend option value 2"); TEST_ERROR( cfgDefOptionDependValue(cfgDefCmdRestore, cfgDefOptTarget, 3), AssertError, "assertion 'valueId < cfgDefOptionDependValueTotal(commandDefId, optionDefId)' failed"); TEST_RESULT_BOOL( cfgDefOptionDependValueValid(cfgDefCmdRestore, cfgDefOptTarget, "time"), true, "depend option value valid"); TEST_RESULT_BOOL( cfgDefOptionDependValueValid(cfgDefCmdRestore, cfgDefOptTarget, BOGUS_STR), false, "depend option value not valid"); TEST_ERROR( cfgDefOptionIndexTotal(cfgDefOptionTotal()), AssertError, "assertion 'optionDefId < cfgDefOptionTotal()' failed"); TEST_RESULT_INT(cfgDefOptionIndexTotal(cfgDefOptPgPath), 8, "index total > 1"); TEST_RESULT_INT(cfgDefOptionIndexTotal(cfgDefOptRepoPath), 1, "index total == 1"); TEST_RESULT_BOOL(cfgDefOptionInternal(cfgDefCmdRestore, cfgDefOptSet), false, "option set is not internal"); TEST_RESULT_BOOL(cfgDefOptionInternal(cfgDefCmdRestore, cfgDefOptPgHost), true, "option pg-host is internal"); TEST_RESULT_BOOL(cfgDefOptionMulti(cfgDefOptRecoveryOption), true, "recovery-option is multi"); TEST_RESULT_BOOL(cfgDefOptionMulti(cfgDefOptDbInclude), true, "db-include is multi"); TEST_RESULT_BOOL(cfgDefOptionMulti(cfgDefOptStartFast), false, "start-fast is not multi"); TEST_RESULT_Z(cfgDefOptionPrefix(cfgDefOptPgHost), "pg", "option prefix"); TEST_RESULT_Z(cfgDefOptionPrefix(cfgDefOptType), NULL, "option has no prefix"); TEST_RESULT_BOOL(cfgDefOptionRequired(cfgDefCmdBackup, cfgDefOptConfig), true, "option required"); TEST_RESULT_BOOL(cfgDefOptionRequired(cfgDefCmdRestore, cfgDefOptRepoHost), false, "option not required"); TEST_RESULT_BOOL(cfgDefOptionRequired(cfgDefCmdInfo, cfgDefOptStanza), false, "command option not required"); TEST_RESULT_INT(cfgDefOptionSection(cfgDefOptRepoS3Key), cfgDefSectionGlobal, "global section"); TEST_RESULT_INT(cfgDefOptionSection(cfgDefOptPgPath), cfgDefSectionStanza, "stanza section"); TEST_RESULT_INT(cfgDefOptionSection(cfgDefOptType), cfgDefSectionCommandLine, "command line only"); TEST_RESULT_BOOL(cfgDefOptionSecure(cfgDefOptRepoS3Key), true, "option secure"); TEST_RESULT_BOOL(cfgDefOptionSecure(cfgDefOptRepoHost), false, "option not secure"); TEST_RESULT_INT(cfgDefOptionType(cfgDefOptType), cfgDefOptTypeString, "string type"); TEST_RESULT_INT(cfgDefOptionType(cfgDefOptCompress), cfgDefOptTypeBoolean, "boolean type"); TEST_ERROR( cfgDefOptionValid(cfgDefCmdInfo, cfgDefOptionTotal()), AssertError, "assertion 'optionDefId < cfgDefOptionTotal()' failed"); TEST_RESULT_BOOL(cfgDefOptionValid(cfgDefCmdBackup, cfgDefOptType), true, "option valid"); TEST_RESULT_BOOL(cfgDefOptionValid(cfgDefCmdInfo, cfgDefOptType), false, "option not valid"); } // ***************************************************************************************************************************** if (testBegin("cfgDefCommandHelp*() and cfgDefOptionHelp*()")) { TEST_RESULT_BOOL(cfgDefOptionHelpNameAlt(cfgDefOptRepoHost), true, "name alt exists"); TEST_RESULT_BOOL(cfgDefOptionHelpNameAlt(cfgDefOptSet), false, "name alt not exists"); TEST_RESULT_INT(cfgDefOptionHelpNameAltValueTotal(cfgDefOptRepoHost), 1, "name alt value total"); TEST_RESULT_Z(cfgDefOptionHelpNameAltValue(cfgDefOptRepoHost, 0), "backup-host", "name alt value 0"); TEST_ERROR( cfgDefOptionHelpNameAltValue(cfgDefOptRepoHost, 1), AssertError, "assertion 'valueId < cfgDefOptionHelpNameAltValueTotal(optionDefId)' failed"); TEST_RESULT_Z(cfgDefCommandHelpSummary(cfgDefCmdBackup), "Backup a database cluster.", "backup command help summary"); TEST_RESULT_Z( cfgDefCommandHelpDescription(cfgDefCmdBackup), "pgBackRest does not have a built-in scheduler so it's best to run it from cron or some other scheduling mechanism.", "backup command help description"); TEST_RESULT_Z(cfgDefOptionHelpSection(cfgDefOptCompress), "general", "compress option help section"); TEST_RESULT_Z( cfgDefOptionHelpSummary(cfgDefCmdBackup, cfgDefOptCompress), "Use gzip file compression.", "backup command, compress option help summary"); TEST_RESULT_Z( cfgDefOptionHelpDescription(cfgDefCmdBackup, cfgDefOptCompress), "Backup files are compatible with command-line gzip tools.", "backup command, compress option help description"); TEST_RESULT_Z( cfgDefOptionHelpSummary(cfgDefCmdBackup, cfgDefOptType), "Backup type.", "backup command, type option help summary"); TEST_RESULT_Z( cfgDefOptionHelpDescription(cfgDefCmdBackup, cfgDefOptType), "The following backup types are supported:\n" "\n" "* full - all database cluster files will be copied and there will be no dependencies on previous backups.\n" "* incr - incremental from the last successful backup.\n" "* diff - like an incremental backup but always based on the last full backup.", "backup command, type option help description"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/config/execTest.c000066400000000000000000000075671362531507100234560ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Exec Configuration ***********************************************************************************************************************************/ #include "common/harnessConfig.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("cfgExecParam()")) { StringList *argList = strLstNew(); strLstAddZ(argList, "pgbackrest"); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAdd(argList, strNewFmt("--pg1-path=%s/db path", testPath())); strLstAddZ(argList, "--log-subprocess"); strLstAddZ(argList, "--no-config"); strLstAddZ(argList, "--reset-neutral-umask"); strLstAddZ(argList, "--repo-cipher-type=aes-256-cbc"); strLstAddZ(argList, "--" CFGOPT_ARCHIVE_ASYNC); strLstAddZ(argList, "archive-get"); // Set repo1-cipher-pass to make sure it is not passed on the command line setenv("PGBACKREST_REPO1_CIPHER_PASS", "1234", true); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); unsetenv("PGBACKREST_REPO1_CIPHER_PASS"); TEST_RESULT_STR( strLstJoin(cfgExecParam(cfgCmdArchiveGet, cfgCmdRoleAsync, NULL, false, true), "|"), strNewFmt( "--archive-async|--no-config|--log-subprocess|--reset-neutral-umask|--pg1-path=\"%s/db path\"|--repo1-path=%s/repo" "|--stanza=test1|archive-get:async", testPath(), testPath()), "exec archive-get -> archive-get:async"); TEST_RESULT_STR( strLstJoin(cfgExecParam(cfgCmdBackup, cfgCmdRoleDefault, NULL, false, false), "|"), strNewFmt( "--no-config|--log-subprocess|--reset-neutral-umask|--pg1-path=%s/db path|--repo1-path=%s/repo" "|--stanza=test1|backup", testPath(), testPath()), "exec archive-get -> backup"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "pgbackrest"); strLstAddZ(argList, "--stanza=test1"); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); strLstAdd(argList, strNewFmt("--pg1-path=%s/db path", testPath())); strLstAddZ(argList, "--db-include=1"); strLstAddZ(argList, "--db-include=2"); strLstAddZ(argList, "--recovery-option=a=b"); strLstAddZ(argList, "--recovery-option=c=d"); strLstAddZ(argList, "restore"); setenv("PGBACKREST_REPO1_HOST", "bogus", true); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); unsetenv("PGBACKREST_REPO1_HOST"); KeyValue *optionReplace = kvNew(); kvPut(optionReplace, varNewStr(strNew("repo1-path")), varNewStr(strNew("/replace/path"))); kvPut(optionReplace, varNewStr(strNew("stanza")), NULL); TEST_RESULT_STR( strLstJoin(cfgExecParam(cfgCmdRestore, cfgCmdRoleDefault, optionReplace, true, false), "|"), strNewFmt( "--db-include=1|--db-include=2|--pg1-path=%s/db path|--recovery-option=a=b|--recovery-option=c=d" "|--repo1-path=/replace/path|restore", testPath()), "exec restore -> restore"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/config/loadTest.c000066400000000000000000000624471362531507100234470ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Configuration Load ***********************************************************************************************************************************/ #include "common/io/io.h" #include "common/log.h" #include "protocol/helper.h" #include "version.h" #include "common/harnessConfig.h" /*********************************************************************************************************************************** Expose log internal data for unit testing/debugging ***********************************************************************************************************************************/ extern LogLevel logLevelStdOut; extern LogLevel logLevelStdErr; extern LogLevel logLevelFile; extern bool logTimestamp; /*********************************************************************************************************************************** Test run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("cfgLoadLogSetting()")) { cfgInit(); TEST_RESULT_VOID(cfgLoadLogSetting(), "load log settings all defaults"); TEST_RESULT_INT(logLevelStdOut, logLevelOff, "console logging is off"); TEST_RESULT_INT(logLevelStdErr, logLevelOff, "stderr logging is off"); TEST_RESULT_INT(logLevelFile, logLevelOff, "file logging is off"); TEST_RESULT_BOOL(logTimestamp, true, "timestamp logging is on"); } // ***************************************************************************************************************************** if (testBegin("cfgLoadUpdateOption()")) { String *exe = strNew("/path/to/pgbackrest"); String *exeOther = strNew("/other/path/to/pgbackrest"); cfgInit(); cfgCommandSet(cfgCmdBackup, cfgCmdRoleDefault); cfgExeSet(exe); cfgOptionValidSet(cfgOptRepoHost, true); cfgOptionValidSet(cfgOptPgHost, true); TEST_RESULT_VOID(cfgLoadUpdateOption(), "hosts are not set so don't update commands"); cfgOptionSet(cfgOptRepoHost, cfgSourceParam, varNewStrZ("repo-host")); TEST_RESULT_VOID(cfgLoadUpdateOption(), "repo remote command is updated"); TEST_RESULT_STR(cfgOptionStr(cfgOptRepoHostCmd), exe, " check repo1-host-cmd"); cfgOptionSet(cfgOptRepoHostCmd, cfgSourceParam, varNewStr(exeOther)); TEST_RESULT_VOID(cfgLoadUpdateOption(), "repo remote command was already set"); TEST_RESULT_STR(cfgOptionStr(cfgOptRepoHostCmd), exeOther, " check repo1-host-cmd"); cfgOptionSet(cfgOptRepoHost, cfgSourceParam, NULL); // ------------------------------------------------------------------------------------------------------------------------- cfgOptionValidSet(cfgOptPgHostCmd, true); cfgOptionSet(cfgOptPgHost, cfgSourceParam, varNewStrZ("pg1-host")); cfgOptionValidSet(cfgOptPgHost + 1, true); cfgOptionSet(cfgOptPgHost + 1, cfgSourceParam, varNewStrZ("pg2-host")); cfgOptionValidSet(cfgOptPgHostCmd + 1, true); cfgOptionSet(cfgOptPgHostCmd + 1, cfgSourceParam, varNewStr(exeOther)); cfgOptionValidSet(cfgOptPgHost + cfgOptionIndexTotal(cfgOptPgHost) - 1, true); cfgOptionSet(cfgOptPgHost + cfgOptionIndexTotal(cfgOptPgHost) - 1, cfgSourceParam, varNewStrZ("pgX-host")); TEST_RESULT_VOID(cfgLoadUpdateOption(), "pg remote command is updated"); TEST_RESULT_STR(cfgOptionStr(cfgOptPgHostCmd), exe, " check pg1-host-cmd"); TEST_RESULT_STR(cfgOptionStr(cfgOptPgHostCmd + 1), exeOther, " check pg2-host-cmd is already set"); TEST_RESULT_STR(cfgOptionStr(cfgOptPgHostCmd + 2), NULL, " check pg3-host-cmd is not set"); TEST_RESULT_STR(cfgOptionStr(cfgOptPgHostCmd + cfgOptionIndexTotal(cfgOptPgHost) - 1), exe, " check pgX-host-cmd"); // ------------------------------------------------------------------------------------------------------------------------- cfgInit(); cfgOptionValidSet(cfgOptDbTimeout, true); cfgOptionSet(cfgOptDbTimeout, cfgSourceParam, varNewDbl(100)); TEST_RESULT_VOID(cfgLoadUpdateOption(), "pg timeout set but not protocol timeout"); cfgOptionValidSet(cfgOptProtocolTimeout, true); cfgOptionSet(cfgOptProtocolTimeout, cfgSourceDefault, varNewDbl(101)); TEST_RESULT_VOID(cfgLoadUpdateOption(), "protocol timeout > pg timeout"); cfgOptionSet(cfgOptDbTimeout, cfgSourceParam, varNewDbl(100000)); TEST_RESULT_VOID(cfgLoadUpdateOption(), "protocol timeout set automatically"); TEST_RESULT_DOUBLE(cfgOptionDbl(cfgOptProtocolTimeout), 100030, " check protocol timeout"); cfgOptionValidSet(cfgOptProtocolTimeout, true); cfgOptionSet(cfgOptProtocolTimeout, cfgSourceParam, varNewDbl(50.5)); TEST_ERROR( cfgLoadUpdateOption(), OptionInvalidValueError, "'50.5' is not valid for 'protocol-timeout' option\n" "HINT 'protocol-timeout' option (50.5) should be greater than 'db-timeout' option (100000)."); cfgOptionSet(cfgOptProtocolTimeout, cfgSourceParam, varNewDbl(45)); cfgOptionSet(cfgOptDbTimeout, cfgSourceDefault, varNewDbl(3600)); TEST_RESULT_VOID(cfgLoadUpdateOption(), "set default pg timeout to be less than protocol timeout"); TEST_RESULT_DOUBLE(cfgOptionDbl(cfgOptProtocolTimeout), 45, " check protocol timeout"); TEST_RESULT_DOUBLE(cfgOptionDbl(cfgOptDbTimeout), 15, " check db timeout"); cfgOptionSet(cfgOptProtocolTimeout, cfgSourceParam, varNewDbl(11)); cfgOptionSet(cfgOptDbTimeout, cfgSourceDefault, varNewDbl(3600)); TEST_RESULT_VOID(cfgLoadUpdateOption(), "set default pg timeout to be less than test protocol timeout"); TEST_RESULT_DOUBLE(cfgOptionDbl(cfgOptProtocolTimeout), 11, " check protocol timeout"); TEST_RESULT_DOUBLE(cfgOptionDbl(cfgOptDbTimeout), 5.5, " check db timeout"); // ------------------------------------------------------------------------------------------------------------------------- cfgInit(); cfgCommandSet(cfgCmdBackup, cfgCmdRoleDefault); cfgExeSet(exe); cfgOptionValidSet(cfgOptPgHost, true); TEST_RESULT_VOID(cfgLoadUpdateOption(), "only repo-host is valid"); cfgOptionValidSet(cfgOptRepoHost, true); cfgOptionSet(cfgOptRepoHost, cfgSourceParam, varNewStrZ("repo-host")); cfgOptionValidSet(cfgOptPgHost + 4, true); cfgOptionSet(cfgOptPgHost + 4, cfgSourceParam, varNewStrZ("pg5-host")); TEST_ERROR(cfgLoadUpdateOption(), ConfigError, "pg and repo hosts cannot both be configured as remote"); // ------------------------------------------------------------------------------------------------------------------------- StringList *argList = strLstNew(); strLstAdd(argList, strNew("backup")); strLstAdd(argList, strNew("process-max")); harnessLogLevelSet(logLevelWarn); TEST_RESULT_VOID(harnessCfgLoad(cfgCmdHelp, argList), "load help config -- no retention warning"); TEST_RESULT_BOOL(cfgCommandHelp(), true, " command is help"); argList = strLstNew(); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--no-log-timestamp")); harnessLogLevelSet(logLevelWarn); TEST_RESULT_VOID(harnessCfgLoad(cfgCmdExpire, argList), "load config for retention warning"); harnessLogResult( "P00 WARN: option repo1-retention-full is not set, the repository may run out of space\n" " HINT: to retain full backups indefinitely (without warning), set option" " 'repo1-retention-full' to the maximum."); TEST_RESULT_BOOL(cfgOptionTest(cfgOptRepoRetentionArchive), false, " repo1-retention-archive not set"); strLstAdd(argList, strNew("--repo1-retention-full=1")); TEST_RESULT_VOID(harnessCfgLoad(cfgCmdExpire, argList), "load config no retention warning"); TEST_RESULT_INT(cfgOptionInt(cfgOptRepoRetentionArchive), 1, " repo1-retention-archive set"); // Munge repo-type for coverage. This will go away when there are multiple repos. cfgOptionSet(cfgOptRepoType, cfgSourceParam, NULL); TEST_RESULT_VOID(cfgLoadUpdateOption(), "load config no repo-type"); argList = strLstNew(); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--no-log-timestamp")); strLstAdd(argList, strNew("--repo1-retention-archive-type=incr")); TEST_RESULT_VOID(harnessCfgLoad(cfgCmdExpire, argList), "load config for retention warning"); harnessLogResult( "P00 WARN: option repo1-retention-full is not set, the repository may run out of space\n" " HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full'" " to the maximum.\n" "P00 WARN: WAL segments will not be expired: option 'repo1-retention-archive-type=incr' but option" " 'repo1-retention-archive' is not set"); TEST_RESULT_BOOL(cfgOptionTest(cfgOptRepoRetentionArchive), false, " repo1-retention-archive not set"); argList = strLstNew(); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--no-log-timestamp")); strLstAdd(argList, strNew("--repo1-retention-archive-type=diff")); TEST_RESULT_VOID(harnessCfgLoad(cfgCmdExpire, argList), "load config for retention warning"); harnessLogResult( "P00 WARN: option repo1-retention-full is not set, the repository may run out of space\n" " HINT: to retain full backups indefinitely (without warning), set option" " 'repo1-retention-full' to the maximum.\n" "P00 WARN: WAL segments will not be expired: option 'repo1-retention-archive-type=diff' but neither option" " 'repo1-retention-archive' nor option 'repo1-retention-diff' is set"); TEST_RESULT_BOOL(cfgOptionTest(cfgOptRepoRetentionArchive), false, " repo1-retention-archive not set"); strLstAdd(argList, strNew("--repo1-retention-diff=2")); TEST_RESULT_VOID(harnessCfgLoad(cfgCmdExpire, argList), "load config for retention warning"); harnessLogResult( "P00 WARN: option repo1-retention-full is not set, the repository may run out of space\n" " HINT: to retain full backups indefinitely (without warning), set option" " 'repo1-retention-full' to the maximum."); TEST_RESULT_INT(cfgOptionInt(cfgOptRepoRetentionArchive), 2, " repo1-retention-archive set to retention-diff"); argList = strLstNew(); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--no-log-timestamp")); strLstAdd(argList, strNew("--repo1-retention-archive-type=diff")); strLstAdd(argList, strNew("--repo1-retention-archive=3")); strLstAdd(argList, strNew("--repo1-retention-full=1")); TEST_RESULT_VOID(harnessCfgLoad(cfgCmdExpire, argList), "load config for retention warning"); harnessLogResult( "P00 WARN: option 'repo1-retention-diff' is not set for 'repo1-retention-archive-type=diff'\n" " HINT: to retain differential backups indefinitely (without warning), set option 'repo1-retention-diff'" " to the maximum."); argList = strLstNew(); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--no-log-timestamp")); strLstAdd(argList, strNew("--repo1-retention-archive-type=diff")); strLstAdd(argList, strNew("--repo1-retention-archive=3")); strLstAdd(argList, strNew("--repo1-retention-diff=2")); strLstAdd(argList, strNew("--repo1-retention-full=1")); TEST_RESULT_VOID(harnessCfgLoad(cfgCmdExpire, argList), "load config with success"); // ------------------------------------------------------------------------------------------------------------------------- setenv("PGBACKREST_REPO1_S3_KEY", "mykey", true); setenv("PGBACKREST_REPO1_S3_KEY_SECRET", "mysecretkey", true); // Invalid bucket name with verification enabled fails argList = strLstNew(); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--repo1-type=s3")); strLstAdd(argList, strNew("--repo1-s3-bucket=bogus.bucket")); strLstAdd(argList, strNew("--repo1-s3-region=region")); strLstAdd(argList, strNew("--repo1-s3-endpoint=endpoint")); strLstAdd(argList, strNew("--repo1-path=/repo")); TEST_ERROR( harnessCfgLoad(cfgCmdArchiveGet, argList), OptionInvalidValueError, "'bogus.bucket' is not valid for option 'repo1-s3-bucket'" "\nHINT: RFC-2818 forbids dots in wildcard matches." "\nHINT: TLS/SSL verification cannot proceed with this bucket name." "\nHINT: remove dots from the bucket name."); // Invalid bucket name with verification disabled succeeds argList = strLstNew(); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--repo1-type=s3")); strLstAdd(argList, strNew("--repo1-s3-bucket=bogus.bucket")); strLstAdd(argList, strNew("--repo1-s3-region=region")); strLstAdd(argList, strNew("--repo1-s3-endpoint=endpoint")); strLstAdd(argList, strNew("--no-repo1-s3-verify-ssl")); strLstAdd(argList, strNew("--repo1-path=/repo")); TEST_RESULT_VOID(harnessCfgLoad(cfgCmdArchiveGet, argList), "invalid bucket with no verification"); TEST_RESULT_STR_Z(cfgOptionStr(cfgOptRepoS3Bucket), "bogus.bucket", " check bucket value"); // Valid bucket name argList = strLstNew(); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--repo1-type=s3")); strLstAdd(argList, strNew("--repo1-s3-bucket=cool-bucket")); strLstAdd(argList, strNew("--repo1-s3-region=region")); strLstAdd(argList, strNew("--repo1-s3-endpoint=endpoint")); strLstAdd(argList, strNew("--repo1-path=/repo")); TEST_RESULT_VOID(harnessCfgLoad(cfgCmdArchiveGet, argList), "valid bucket name"); TEST_RESULT_STR_Z(cfgOptionStr(cfgOptRepoS3Bucket), "cool-bucket", " check bucket value"); unsetenv("PGBACKREST_REPO1_S3_KEY"); unsetenv("PGBACKREST_REPO1_S3_KEY_SECRET"); } // ***************************************************************************************************************************** if (testBegin("cfgLoadLogFile()")) { StringList *argList = strLstNew(); strLstAdd(argList, strNew("pgbackrest")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--pg1-path=/path")); strLstAdd(argList, strNewFmt("--lock-path=%s/lock", testDataPath())); strLstAdd(argList, strNew("--log-path=/bogus")); strLstAdd(argList, strNew("--log-level-file=info")); strLstAdd(argList, strNew("backup")); TEST_RESULT_VOID(cfgLoad(strLstSize(argList), strLstPtr(argList)), "load config for backup"); lockRelease(true); // On the error case is tested here, success is tested in cfgLoad() TEST_RESULT_VOID(cfgLoadLogFile(), "attempt to open bogus log file"); TEST_RESULT_STR_Z(cfgOptionStr(cfgOptLogLevelFile), "off", "log-level-file should now be off"); } // ***************************************************************************************************************************** if (testBegin("cfgLoad()")) { // Command does not have umask // ------------------------------------------------------------------------------------------------------------------------- StringList *argList = strLstNew(); strLstAdd(argList, strNew("pgbackrest")); strLstAdd(argList, strNew("info")); TEST_RESULT_VOID(cfgLoad(strLstSize(argList), strLstPtr(argList)), "load config and don't set umask"); // Set a distinct umask value and test that the umask is reset by configLoad since default for neutral-umask=y // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew("pgbackrest")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--log-level-console=off")); strLstAdd(argList, strNew("--log-level-stderr=off")); strLstAdd(argList, strNew("--log-level-file=off")); strLstAdd(argList, strNew("archive-get")); umask(0111); TEST_RESULT_VOID(cfgLoad(strLstSize(argList), strLstPtr(argList)), "load config for neutral-umask"); TEST_RESULT_INT(umask(0111), 0000, " umask was reset"); // Set a distinct umask value and test that the umask is not reset by configLoad with option --no-neutral-umask // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew("pgbackrest")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--no-neutral-umask")); strLstAdd(argList, strNew("--log-level-console=off")); strLstAdd(argList, strNew("--log-level-stderr=off")); strLstAdd(argList, strNew("--log-level-file=off")); strLstAdd(argList, strNew("archive-get")); umask(0111); TEST_RESULT_VOID(cfgLoad(strLstSize(argList), strLstPtr(argList)), "load config for no-neutral-umask"); TEST_RESULT_INT(umask(0), 0111, " umask was not reset"); // No command // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew("pgbackrest")); TEST_RESULT_VOID(cfgLoad(strLstSize(argList), strLstPtr(argList)), "no command"); // Help command only // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew("pgbackrest")); strLstAdd(argList, strNew("help")); ioBufferSizeSet(333); TEST_RESULT_VOID(cfgLoad(strLstSize(argList), strLstPtr(argList)), "help command"); TEST_RESULT_SIZE(ioBufferSize(), 333, "buffer size not updated by help command"); // Help command for backup // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew("pgbackrest")); strLstAdd(argList, strNew("help")); strLstAdd(argList, strNew("backup")); strLstAdd(argList, strNew("--log-level-console=off")); strLstAdd(argList, strNew("--log-level-stderr=off")); strLstAdd(argList, strNew("--log-level-file=off")); strLstAdd(argList, strNew("--repo1-retention-full=2")); TEST_RESULT_VOID(cfgLoad(strLstSize(argList), strLstPtr(argList)), "help command for backup"); TEST_RESULT_SIZE(ioBufferSize(), 4 * 1024 * 1024, "buffer size set to option default"); // Command takes lock and opens log file // ------------------------------------------------------------------------------------------------------------------------- struct stat statLog; argList = strLstNew(); strLstAdd(argList, strNew("pgbackrest")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--pg1-path=/path")); strLstAdd(argList, strNew("--repo1-retention-full=1")); strLstAdd(argList, strNewFmt("--lock-path=%s/lock", testDataPath())); strLstAdd(argList, strNewFmt("--log-path=%s", testPath())); strLstAdd(argList, strNew("--log-level-console=off")); strLstAdd(argList, strNew("--log-level-stderr=off")); strLstAdd(argList, strNew("--log-level-file=warn")); strLstAdd(argList, strNew("backup")); TEST_RESULT_VOID(cfgLoad(strLstSize(argList), strLstPtr(argList)), "lock and open log file"); TEST_RESULT_INT(lstat(strPtr(strNewFmt("%s/db-backup.log", testPath())), &statLog), 0, " check log file exists"); lockRelease(true); // Local command opens log file with special filename // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew("pgbackrest")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNewFmt("--log-path=%s", testPath())); strLstAddZ(argList, "--" CFGOPT_PG1_PATH "=/path/to"); strLstAdd(argList, strNew("--process=1")); strLstAdd(argList, strNew("--host-id=1")); strLstAddZ(argList, "--" CFGOPT_REMOTE_TYPE "=" PROTOCOL_REMOTE_TYPE_REPO); strLstAdd(argList, strNew("--log-level-file=warn")); strLstAddZ(argList, CFGCMD_BACKUP ":" CONFIG_COMMAND_ROLE_LOCAL); TEST_RESULT_VOID(cfgLoad(strLstSize(argList), strLstPtr(argList)), "open log file"); TEST_RESULT_INT( lstat(strPtr(strNewFmt("%s/db-backup-local-001.log", testPath())), &statLog), 0, " check log file exists"); // Remote command opens log file with special filename // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew("pgbackrest")); strLstAdd(argList, strNewFmt("--log-path=%s", testPath())); strLstAddZ(argList, "--" CFGOPT_REMOTE_TYPE "=" PROTOCOL_REMOTE_TYPE_REPO); strLstAddZ(argList, "--" CFGOPT_LOG_LEVEL_FILE "=info"); strLstAddZ(argList, "--" CFGOPT_LOG_SUBPROCESS); strLstAdd(argList, strNew("--process=0")); strLstAddZ(argList, CFGCMD_INFO ":" CONFIG_COMMAND_ROLE_REMOTE); TEST_RESULT_VOID(cfgLoad(strLstSize(argList), strLstPtr(argList)), "open log file"); TEST_RESULT_INT( lstat(strPtr(strNewFmt("%s/all-info-remote-000.log", testPath())), &statLog), 0, " check log file exists"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("remote command without archive-async option"); argList = strLstNew(); strLstAdd(argList, strNew("pgbackrest")); strLstAdd(argList, strNewFmt("--log-path=%s", testPath())); strLstAddZ(argList, "--" CFGOPT_STANZA "=test"); strLstAddZ(argList, "--" CFGOPT_REMOTE_TYPE "=" PROTOCOL_REMOTE_TYPE_REPO); strLstAddZ(argList, "--" CFGOPT_LOG_LEVEL_FILE "=info"); strLstAddZ(argList, "--" CFGOPT_LOG_SUBPROCESS); strLstAdd(argList, strNew("--process=1")); strLstAddZ(argList, CFGCMD_ARCHIVE_GET ":" CONFIG_COMMAND_ROLE_REMOTE); TEST_RESULT_VOID(cfgLoad(strLstSize(argList), strLstPtr(argList)), "open log file"); TEST_RESULT_INT( lstat(strPtr(strNewFmt("%s/test-archive-get-remote-001.log", testPath())), &statLog), 0, " check log file exists"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("local command with archive-async option"); argList = strLstNew(); strLstAdd(argList, strNew("pgbackrest")); strLstAdd(argList, strNewFmt("--log-path=%s", testPath())); strLstAddZ(argList, "--" CFGOPT_STANZA "=test"); strLstAddZ(argList, "--" CFGOPT_REMOTE_TYPE "=" PROTOCOL_REMOTE_TYPE_REPO); strLstAddZ(argList, "--" CFGOPT_LOG_LEVEL_FILE "=info"); strLstAddZ(argList, "--" CFGOPT_LOG_SUBPROCESS); strLstAddZ(argList, "--" CFGOPT_ARCHIVE_ASYNC); strLstAdd(argList, strNew("--process=1")); strLstAddZ(argList, CFGCMD_ARCHIVE_PUSH ":" CONFIG_COMMAND_ROLE_LOCAL); TEST_RESULT_VOID(cfgLoad(strLstSize(argList), strLstPtr(argList)), "open log file"); TEST_RESULT_INT( lstat(strPtr(strNewFmt("%s/test-archive-push-async-local-001.log", testPath())), &statLog), 0, " check log file exists"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("archive-get command with async role"); argList = strLstNew(); strLstAddZ(argList, PROJECT_BIN); strLstAdd(argList, strNewFmt("--" CFGOPT_LOG_PATH "=%s", testPath())); strLstAdd(argList, strNewFmt("--lock-path=%s/lock", testDataPath())); strLstAddZ(argList, "--" CFGOPT_STANZA "=test"); strLstAddZ(argList, CFGCMD_ARCHIVE_GET ":" CONFIG_COMMAND_ROLE_ASYNC); TEST_RESULT_VOID(cfgLoad(strLstSize(argList), strLstPtr(argList)), "open log file"); TEST_RESULT_INT( lstat(strPtr(strNewFmt("%s/test-archive-get-async.log", testPath())), &statLog), 0, " check log file exists"); lockRelease(true); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/config/parseTest.c000066400000000000000000002424251362531507100236360ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Configuration Parse ***********************************************************************************************************************************/ #include "protocol/helper.h" #include "storage/storage.intern.h" #define TEST_BACKREST_EXE "pgbackrest" #define TEST_COMMAND_ARCHIVE_GET "archive-get" #define TEST_COMMAND_BACKUP "backup" #define TEST_COMMAND_HELP "help" #define TEST_COMMAND_RESTORE "restore" #define TEST_COMMAND_VERSION "version" /*********************************************************************************************************************************** Expose log internal data for unit testing/debugging ***********************************************************************************************************************************/ extern LogLevel logLevelStdOut; extern LogLevel logLevelStdErr; /*********************************************************************************************************************************** Option find test -- this is done a lot in the deprecated tests ***********************************************************************************************************************************/ static void testOptionFind(const char *option, unsigned int value) { // If not testing for a missing option, then add the option offset that is already added to each option in the list if (value != 0) value |= PARSE_OPTION_FLAG; TEST_RESULT_INT(optionList[optionFind(strNew(option))].val, value, "check %s", option); } /*********************************************************************************************************************************** Test run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // config and config-include-path options // ***************************************************************************************************************************** if (testBegin("cfgFileLoad()")) { StringList *argList = NULL; String *configFile = strNewFmt("%s/test.config", testPath()); String *configIncludePath = strNewFmt("%s/conf.d", testPath()); mkdir(strPtr(configIncludePath), 0750); // Check old config file constants // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_Z(PGBACKREST_CONFIG_ORIG_PATH_FILE, "/etc/pgbackrest.conf", "check old config path"); TEST_RESULT_STR_Z(PGBACKREST_CONFIG_ORIG_PATH_FILE_STR, "/etc/pgbackrest.conf", "check old config path str"); // Confirm same behavior with multiple config include files //-------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNewFmt("--config=%s", strPtr(configFile))); strLstAdd(argList, strNewFmt("--config-include-path=%s", strPtr(configIncludePath))); strLstAdd(argList, strNew("--no-online")); strLstAdd(argList, strNew("--reset-pg1-host")); strLstAdd(argList, strNew("--reset-backup-standby")); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); storagePut( storageNewWriteP(storageLocalWrite(), configFile), BUFSTRDEF( "[global]\n" "compress-level=3\n" "spool-path=/path/to/spool\n")); storagePut( storageNewWriteP(storageLocalWrite(), strNewFmt("%s/global-backup.conf", strPtr(configIncludePath))), BUFSTRDEF( "[global:backup]\n" "repo1-hardlink=y\n" "bogus=bogus\n" "no-compress=y\n" "reset-compress=y\n" "archive-copy=y\n" "online=y\n" "pg1-path=/not/path/to/db\n" "backup-standby=y\n" "buffer-size=65536\n")); storagePut( storageNewWriteP(storageLocalWrite(), strNewFmt("%s/db-backup.conf", strPtr(configIncludePath))), BUFSTRDEF( "[db:backup]\n" "compress=n\n" "recovery-option=a=b\n")); storagePut( storageNewWriteP(storageLocalWrite(), strNewFmt("%s/stanza.db.conf", strPtr(configIncludePath))), BUFSTRDEF( "[db]\n" "pg1-host=db\n" "pg1-path=/path/to/db\n" "recovery-option=c=d\n")); TEST_RESULT_VOID( configParse(strLstSize(argList), strLstPtr(argList), false), TEST_COMMAND_BACKUP " command with config-include"); harnessLogResult( strPtr( strNew( "P00 WARN: configuration file contains option 'recovery-option' invalid for section 'db:backup'\n" "P00 WARN: configuration file contains invalid option 'bogus'\n" "P00 WARN: configuration file contains negate option 'no-compress'\n" "P00 WARN: configuration file contains reset option 'reset-compress'\n" "P00 WARN: configuration file contains command-line only option 'online'\n" "P00 WARN: configuration file contains stanza-only option 'pg1-path' in global section 'global:backup'"))); TEST_RESULT_BOOL(cfgOptionTest(cfgOptPgHost), false, " pg1-host is not set (command line reset override)"); TEST_RESULT_STR_Z(cfgOptionStr(cfgOptPgPath), "/path/to/db", " pg1-path is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptPgPath), cfgSourceConfig, " pg1-path is source config"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptCompress), false, " compress not is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptCompress), cfgSourceConfig, " compress is source config"); TEST_RESULT_BOOL(cfgOptionTest(cfgOptArchiveCheck), false, " archive-check is not set"); TEST_RESULT_BOOL(cfgOptionTest(cfgOptArchiveCopy), false, " archive-copy is not set"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptRepoHardlink), true, " repo-hardlink is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptRepoHardlink), cfgSourceConfig, " repo-hardlink is source config"); TEST_RESULT_INT(cfgOptionInt(cfgOptCompressLevel), 3, " compress-level is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptCompressLevel), cfgSourceConfig, " compress-level is source config"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptBackupStandby), false, " backup-standby not is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptBackupStandby), cfgSourceDefault, " backup-standby is source default"); TEST_RESULT_BOOL(cfgOptionInt64(cfgOptBufferSize), 65536, " buffer-size is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptBufferSize), cfgSourceConfig, " backup-standby is source config"); // Rename conf files - ensure read of conf extension only is attempted //-------------------------------------------------------------------------------------------------------------------------- rename(strPtr(strNewFmt("%s/db-backup.conf", strPtr(configIncludePath))), strPtr(strNewFmt("%s/db-backup.conf.save", strPtr(configIncludePath)))); rename(strPtr(strNewFmt("%s/global-backup.conf", strPtr(configIncludePath))), strPtr(strNewFmt("%s/global-backup.confsave", strPtr(configIncludePath)))); // Set up defaults String *backupCmdDefConfigValue = strNew(cfgDefOptionDefault( cfgCommandDefIdFromId(cfgCommandId(TEST_COMMAND_BACKUP, true)), cfgOptionDefIdFromId(cfgOptConfig))); String *backupCmdDefConfigInclPathValue = strNew(cfgDefOptionDefault( cfgCommandDefIdFromId(cfgCommandId(TEST_COMMAND_BACKUP, true)), cfgOptionDefIdFromId(cfgOptConfigIncludePath))); String *oldConfigDefault = strNewFmt("%s%s", testPath(), PGBACKREST_CONFIG_ORIG_PATH_FILE); // Create the option structure and initialize with 0 ParseOption parseOptionList[CFG_OPTION_TOTAL] = {{.found = false}}; StringList *value = strLstNew(); strLstAdd(value, configFile); parseOptionList[cfgOptConfig].found = true; parseOptionList[cfgOptConfig].source = cfgSourceParam; parseOptionList[cfgOptConfig].valueList = value; value = strLstNew(); strLstAdd(value, configIncludePath); parseOptionList[cfgOptConfigIncludePath].found = true; parseOptionList[cfgOptConfigIncludePath].source = cfgSourceParam; parseOptionList[cfgOptConfigIncludePath].valueList = value; TEST_RESULT_VOID(cfgFileLoadPart(NULL, NULL), "check null part"); TEST_RESULT_STR_Z( cfgFileLoad(parseOptionList, backupCmdDefConfigValue, backupCmdDefConfigInclPathValue, oldConfigDefault), "[global]\n" "compress-level=3\n" "spool-path=/path/to/spool\n" "\n" "[db]\n" "pg1-host=db\n" "pg1-path=/path/to/db\n" "recovery-option=c=d\n", "config-include-path with .conf files and non-.conf files"); // Pass invalid values //-------------------------------------------------------------------------------------------------------------------------- // --config valid, --config-include-path invalid (does not exist) value = strLstNew(); strLstAddZ(value, BOGUS_STR); parseOptionList[cfgOptConfigIncludePath].valueList = value; TEST_ERROR( cfgFileLoad(parseOptionList, backupCmdDefConfigValue, backupCmdDefConfigInclPathValue, oldConfigDefault), PathMissingError, "unable to list files for missing path '/BOGUS'"); // --config-include-path valid, --config invalid (does not exist) value = strLstNew(); strLstAdd(value, configIncludePath); parseOptionList[cfgOptConfigIncludePath].valueList = value; value = strLstNew(); strLstAdd(value, strNewFmt("%s/%s", testPath(), BOGUS_STR)); parseOptionList[cfgOptConfig].valueList = value; TEST_ERROR_FMT( cfgFileLoad(parseOptionList, backupCmdDefConfigValue, backupCmdDefConfigInclPathValue, oldConfigDefault), FileMissingError, STORAGE_ERROR_READ_MISSING, strPtr(strNewFmt("%s/BOGUS", testPath()))); strLstFree(parseOptionList[cfgOptConfig].valueList); strLstFree(parseOptionList[cfgOptConfigIncludePath].valueList); // Neither config nor config-include-path passed as parameter (defaults but none exist) //-------------------------------------------------------------------------------------------------------------------------- parseOptionList[cfgOptConfig].found = false; parseOptionList[cfgOptConfig].source = cfgSourceDefault; parseOptionList[cfgOptConfigIncludePath].found = false; parseOptionList[cfgOptConfigIncludePath].source = cfgSourceDefault; TEST_RESULT_STR_Z( cfgFileLoad(parseOptionList, backupCmdDefConfigValue, backupCmdDefConfigInclPathValue, oldConfigDefault), NULL, "config default, config-include-path default but nothing to read"); // Config not passed as parameter - config does not exist. config-include-path passed as parameter - only include read //-------------------------------------------------------------------------------------------------------------------------- value = strLstNew(); strLstAdd(value, configIncludePath); parseOptionList[cfgOptConfig].found = false; parseOptionList[cfgOptConfig].source = cfgSourceDefault; parseOptionList[cfgOptConfigIncludePath].found = true; parseOptionList[cfgOptConfigIncludePath].source = cfgSourceParam; parseOptionList[cfgOptConfigIncludePath].valueList = value; TEST_RESULT_STR_Z( cfgFileLoad(parseOptionList, backupCmdDefConfigValue, backupCmdDefConfigInclPathValue, oldConfigDefault), "[db]\n" "pg1-host=db\n" "pg1-path=/path/to/db\n" "recovery-option=c=d\n", "config default and doesn't exist, config-include-path passed read"); // config and config-include-path are "default" with files existing. Config file exists in both current default and old // default location - old location ignored. //-------------------------------------------------------------------------------------------------------------------------- parseOptionList[cfgOptConfig].found = false; parseOptionList[cfgOptConfig].source = cfgSourceDefault; parseOptionList[cfgOptConfigIncludePath].found = false; parseOptionList[cfgOptConfigIncludePath].source = cfgSourceDefault; mkdir(strPtr(strPath(oldConfigDefault)), 0750); storagePut( storageNewWriteP(storageLocalWrite(), oldConfigDefault), BUFSTRDEF( "[global:backup]\n" "buffer-size=65536\n")); // Pass actual location of config files as "default" - not setting valueList above, so these are the only possible values // to choose. TEST_RESULT_STR_Z( cfgFileLoad(parseOptionList, configFile, configIncludePath, oldConfigDefault), "[global]\n" "compress-level=3\n" "spool-path=/path/to/spool\n" "\n" "[db]\n" "pg1-host=db\n" "pg1-path=/path/to/db\n" "recovery-option=c=d\n", "config and config-include-path default, files appended, original config not read"); // Config not passed as parameter - config does not exist in new default but does exist in old default. config-include-path // passed as parameter - both include and old default read //-------------------------------------------------------------------------------------------------------------------------- value = strLstNew(); strLstAdd(value, configIncludePath); parseOptionList[cfgOptConfig].found = false; parseOptionList[cfgOptConfig].source = cfgSourceDefault; parseOptionList[cfgOptConfigIncludePath].found = true; parseOptionList[cfgOptConfigIncludePath].source = cfgSourceParam; parseOptionList[cfgOptConfigIncludePath].valueList = value; TEST_RESULT_STR_Z( cfgFileLoad(parseOptionList, backupCmdDefConfigValue, backupCmdDefConfigInclPathValue, oldConfigDefault), "[global:backup]\n" "buffer-size=65536\n" "\n" "[db]\n" "pg1-host=db\n" "pg1-path=/path/to/db\n" "recovery-option=c=d\n", "config old default read, config-include-path passed read"); // --no-config and config-include-path passed as parameter (files read only from include path and not current or old config) //-------------------------------------------------------------------------------------------------------------------------- value = strLstNew(); strLstAdd(value, configIncludePath); parseOptionList[cfgOptConfig].found = true; parseOptionList[cfgOptConfig].source = cfgSourceParam; parseOptionList[cfgOptConfig].negate = true; parseOptionList[cfgOptConfigIncludePath].found = true; parseOptionList[cfgOptConfigIncludePath].source = cfgSourceParam; parseOptionList[cfgOptConfigIncludePath].valueList = value; TEST_RESULT_STR_Z( cfgFileLoad(parseOptionList, backupCmdDefConfigValue, backupCmdDefConfigInclPathValue, oldConfigDefault), "[db]\n" "pg1-host=db\n" "pg1-path=/path/to/db\n" "recovery-option=c=d\n", "--no-config, only config-include-path read"); // --no-config and config-include-path default exists with files - nothing to read //-------------------------------------------------------------------------------------------------------------------------- parseOptionList[cfgOptConfig].found = true; parseOptionList[cfgOptConfig].source = cfgSourceParam; parseOptionList[cfgOptConfig].negate = true; parseOptionList[cfgOptConfigIncludePath].found = false; parseOptionList[cfgOptConfigIncludePath].source = cfgSourceDefault; TEST_RESULT_STR_Z( cfgFileLoad(parseOptionList, backupCmdDefConfigValue, configIncludePath, oldConfigDefault), NULL, "--no-config, config-include-path default, nothing read"); // config passed and config-include-path default exists with files - only config read //-------------------------------------------------------------------------------------------------------------------------- value = strLstNew(); strLstAdd(value, configFile); parseOptionList[cfgOptConfig].found = true; parseOptionList[cfgOptConfig].source = cfgSourceParam; parseOptionList[cfgOptConfig].negate = false; parseOptionList[cfgOptConfig].valueList = value; parseOptionList[cfgOptConfigIncludePath].found = false; parseOptionList[cfgOptConfigIncludePath].source = cfgSourceDefault; TEST_RESULT_STR_Z( cfgFileLoad(parseOptionList, backupCmdDefConfigValue, configIncludePath, oldConfigDefault), "[global]\n" "compress-level=3\n" "spool-path=/path/to/spool\n", "config param specified, config-include-path default, only config read"); // config new default and config-include-path passed - both exists with files. config-include-path & new config default read //-------------------------------------------------------------------------------------------------------------------------- value = strLstNew(); strLstAdd(value, configIncludePath); parseOptionList[cfgOptConfig].found = false; parseOptionList[cfgOptConfig].source = cfgSourceDefault; parseOptionList[cfgOptConfigIncludePath].found = true; parseOptionList[cfgOptConfigIncludePath].source = cfgSourceParam; parseOptionList[cfgOptConfigIncludePath].valueList = value; TEST_RESULT_STR_Z( cfgFileLoad(parseOptionList, configFile, backupCmdDefConfigInclPathValue, oldConfigDefault), "[global]\n" "compress-level=3\n" "spool-path=/path/to/spool\n" "\n" "[db]\n" "pg1-host=db\n" "pg1-path=/path/to/db\n" "recovery-option=c=d\n", "config new default exists with files, config-include-path passed, default config and config-include-path read"); // config and config-include-path are "default". //-------------------------------------------------------------------------------------------------------------------------- parseOptionList[cfgOptConfig].found = false; parseOptionList[cfgOptConfig].source = cfgSourceDefault; parseOptionList[cfgOptConfigIncludePath].found = false; parseOptionList[cfgOptConfigIncludePath].source = cfgSourceDefault; // File exists in old default config location but not in current default. TEST_RESULT_STR_Z( cfgFileLoad(parseOptionList, backupCmdDefConfigValue, configIncludePath, oldConfigDefault), "[global:backup]\n" "buffer-size=65536\n" "\n" "[db]\n" "pg1-host=db\n" "pg1-path=/path/to/db\n" "recovery-option=c=d\n", "config-path override - config-include-path files and old config default read since no config in current path"); // Pass --config-path value = strLstNew(); strLstAddZ(value, testPath()); parseOptionList[cfgOptConfigPath].found = true; parseOptionList[cfgOptConfigPath].source = cfgSourceParam; parseOptionList[cfgOptConfigPath].valueList = value; // Override default paths for config and config-include-path - but no pgbackrest.conf file in override path only in old // default so ignored TEST_RESULT_STR_Z( cfgFileLoad(parseOptionList, backupCmdDefConfigValue, backupCmdDefConfigInclPathValue, oldConfigDefault), "[db]\n" "pg1-host=db\n" "pg1-path=/path/to/db\n" "recovery-option=c=d\n", "config-path override: config-include-path files read but config not read - does not exist"); // Pass --config value = strLstNew(); strLstAdd(value, configFile); parseOptionList[cfgOptConfig].found = true; parseOptionList[cfgOptConfig].source = cfgSourceParam; parseOptionList[cfgOptConfig].negate = false; parseOptionList[cfgOptConfig].valueList = value; // Passing --config and --config-path - default config-include-path overwritten and config is required and is loaded and // config-include-path files will attempt to be loaded but not required TEST_RESULT_STR_Z( cfgFileLoad(parseOptionList, backupCmdDefConfigValue, backupCmdDefConfigInclPathValue, oldConfigDefault), "[global]\n" "compress-level=3\n" "spool-path=/path/to/spool\n" "\n" "[db]\n" "pg1-host=db\n" "pg1-path=/path/to/db\n" "recovery-option=c=d\n", "config-path changed config-include-path default - files exist, config and config includes read"); value = strLstNew(); strLstAddZ(value, BOGUS_STR); parseOptionList[cfgOptConfigPath].valueList = value; // Passing --config and bogus --config-path - default config-include-path overwritten, config is required and is loaded and // config-include-path files will attempt to be loaded but doesn't exist - no error since not required TEST_RESULT_STR_Z( cfgFileLoad(parseOptionList, backupCmdDefConfigValue, backupCmdDefConfigInclPathValue, oldConfigDefault), "[global]\n" "compress-level=3\n" "spool-path=/path/to/spool\n", "config-path changed config-include-path default but directory does not exist - only config read"); // Copy the configFile to pgbackrest.conf (default is /etc/pgbackrest/pgbackrest.conf and new value is testPath so copy the // config file (that was not read in the previous test) to pgbackrest.conf so it will be read by the override TEST_RESULT_INT( system( strPtr(strNewFmt("cp %s %s", strPtr(configFile), strPtr(strNewFmt("%s/pgbackrest.conf", testPath()))))), 0, "copy configFile to pgbackrest.conf"); parseOptionList[cfgOptConfig].found = false; parseOptionList[cfgOptConfig].source = cfgSourceDefault; parseOptionList[cfgOptConfig].negate = false; parseOptionList[cfgOptConfigIncludePath].found = false; parseOptionList[cfgOptConfigIncludePath].source = cfgSourceDefault; value = strLstNew(); strLstAddZ(value, testPath()); parseOptionList[cfgOptConfigPath].valueList = value; // Override default paths for config and config-include-path with --config-path TEST_RESULT_STR_Z( cfgFileLoad(parseOptionList, backupCmdDefConfigValue, backupCmdDefConfigInclPathValue, oldConfigDefault), "[global]\n" "compress-level=3\n" "spool-path=/path/to/spool\n" "\n" "[db]\n" "pg1-host=db\n" "pg1-path=/path/to/db\n" "recovery-option=c=d\n", "config-path override: config-include-path and config file read"); // Clear config-path parseOptionList[cfgOptConfigPath].found = false; parseOptionList[cfgOptConfigPath].source = cfgSourceDefault; // config default and config-include-path passed - but no config files in the include path - only in the default path // rm command is split below because code counter is confused by what looks like a comment. //-------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_INT(system(strPtr(strNewFmt("rm -rf %s/" "*", strPtr(configIncludePath)))), 0, "remove all include files"); value = strLstNew(); strLstAdd(value, configIncludePath); parseOptionList[cfgOptConfig].found = false; parseOptionList[cfgOptConfig].source = cfgSourceDefault; parseOptionList[cfgOptConfigIncludePath].found = true; parseOptionList[cfgOptConfigIncludePath].source = cfgSourceParam; parseOptionList[cfgOptConfigIncludePath].valueList = value; TEST_RESULT_STR_Z( cfgFileLoad(parseOptionList, configFile, backupCmdDefConfigInclPathValue, oldConfigDefault), "[global]\n" "compress-level=3\n" "spool-path=/path/to/spool\n", "config default exists with files but config-include-path path passed is empty - only config read"); // config default and config-include-path passed - only empty file in the include path and nothing in either config defaults //-------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_INT(system(strPtr(strNewFmt("touch %s", strPtr(strNewFmt("%s/empty.conf", strPtr(configIncludePath)))))), 0, "add empty conf file to include directory"); value = strLstNew(); strLstAdd(value, configIncludePath); parseOptionList[cfgOptConfig].found = false; parseOptionList[cfgOptConfig].source = cfgSourceDefault; parseOptionList[cfgOptConfigIncludePath].found = true; parseOptionList[cfgOptConfigIncludePath].source = cfgSourceParam; parseOptionList[cfgOptConfigIncludePath].valueList = value; TEST_RESULT_STR_Z( cfgFileLoad(parseOptionList, backupCmdDefConfigValue, backupCmdDefConfigInclPathValue, backupCmdDefConfigValue), NULL, "config default does not exist, config-include-path passed but only empty conf file - nothing read"); } // ***************************************************************************************************************************** if (testBegin("convertToByte()")) { double valueDbl = 0; String *value = strNew("10.0"); TEST_ERROR(sizeQualifierToMultiplier('w'), AssertError, "'w' is not a valid size qualifier"); TEST_ERROR(convertToByte(&value, &valueDbl), FormatError, "value '10.0' is not valid"); strTrunc(value, strChr(value, '.')); strCat(value, "K2"); TEST_ERROR(convertToByte(&value, &valueDbl), FormatError, "value '10K2' is not valid"); strTrunc(value, strChr(value, '1')); strCat(value, "ab"); TEST_ERROR(convertToByte(&value, &valueDbl), FormatError, "value 'ab' is not valid"); strTrunc(value, strChr(value, 'a')); strCat(value, "10"); convertToByte(&value, &valueDbl); TEST_RESULT_DOUBLE(valueDbl, 10, "valueDbl no character identifier - straight to bytes"); TEST_RESULT_STR_Z(value, "10", "value no character identifier - straight to bytes"); strCat(value, "B"); convertToByte(&value, &valueDbl); TEST_RESULT_DOUBLE(valueDbl, 10, "valueDbl B to bytes"); TEST_RESULT_STR_Z(value, "10", "value B to bytes"); strCat(value, "Kb"); convertToByte(&value, &valueDbl); TEST_RESULT_DOUBLE(valueDbl, 10240, "valueDbl KB to bytes"); TEST_RESULT_STR_Z(value, "10240", "value KB to bytes"); strTrunc(value, strChr(value, '2')); strCat(value, "k"); convertToByte(&value, &valueDbl); TEST_RESULT_DOUBLE(valueDbl, 10240, "valueDbl k to bytes"); TEST_RESULT_STR_Z(value, "10240", "value k to bytes"); strCat(value, "pB"); convertToByte(&value, &valueDbl); TEST_RESULT_DOUBLE(valueDbl, 11529215046068469760U, "valueDbl Pb to bytes"); TEST_RESULT_STR_Z(value, "11529215046068469760", "value Pb to bytes"); strTrunc(value, strChr(value, '5')); strCat(value, "GB"); convertToByte(&value, &valueDbl); TEST_RESULT_DOUBLE(valueDbl, 11811160064U, "valueDbl GB to bytes"); TEST_RESULT_STR_Z(value, "11811160064", "value GB to bytes"); strTrunc(value, strChr(value, '8')); strCat(value, "g"); convertToByte(&value, &valueDbl); TEST_RESULT_DOUBLE(valueDbl, 11811160064U, "valueDbl g to bytes"); TEST_RESULT_STR_Z(value, "11811160064", "value g to bytes"); strTrunc(value, strChr(value, '8')); strCat(value, "T"); convertToByte(&value, &valueDbl); TEST_RESULT_DOUBLE(valueDbl, 12094627905536U, "valueDbl T to bytes"); TEST_RESULT_STR_Z(value, "12094627905536", "value T to bytes"); strTrunc(value, strChr(value, '0')); strCat(value, "tb"); convertToByte(&value, &valueDbl); TEST_RESULT_DOUBLE(valueDbl, 13194139533312U, "valueDbl tb to bytes"); TEST_RESULT_STR_Z(value, "13194139533312", "value tb to bytes"); strTrunc(value, strChr(value, '3')); strCat(value, "0m"); convertToByte(&value, &valueDbl); TEST_RESULT_DOUBLE(valueDbl, 10485760, "valueDbl m to bytes"); TEST_RESULT_STR_Z(value, "10485760", "value m to bytes"); strCat(value, "mb"); convertToByte(&value, &valueDbl); TEST_RESULT_DOUBLE(valueDbl, 10995116277760U, "valueDbl mb to bytes"); TEST_RESULT_STR_Z(value, "10995116277760", "value mb to bytes"); strTrunc(value, strChr(value, '0')); strCat(value, "99999999999999999999p"); convertToByte(&value, &valueDbl); TEST_RESULT_STR_Z(value, "225179981368524800000000000000000000", "value really large to bytes"); } // ***************************************************************************************************************************** if (testBegin("configParse()")) { StringList *argList = NULL; String *configFile = strNewFmt("%s/test.config", testPath()); TEST_RESULT_INT( sizeof(optionResolveOrder) / sizeof(ConfigOption), CFG_OPTION_TOTAL, "check that the option resolve list contains an entry for every option"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew(BOGUS_STR)); TEST_ERROR(configParse(strLstSize(argList), strLstPtr(argList), false), CommandInvalidError, "invalid command 'BOGUS'"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew(BOGUS_STR ":" BOGUS_STR)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), CommandInvalidError, "invalid command 'BOGUS:BOGUS'"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--" BOGUS_STR)); TEST_ERROR(configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "invalid option '--BOGUS'"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-host")); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "option '--pg1-host' requires argument"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("backup")); strLstAdd(argList, strNew("param1")); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), ParamInvalidError, "command does not allow parameters"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("help")); strLstAdd(argList, strNew("backup")); strLstAdd(argList, strNew("param1")); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), "ignore params when help command"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--no-online")); strLstAdd(argList, strNew("--no-online")); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "option 'online' is negated multiple times"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--reset-pg1-host")); strLstAdd(argList, strNew("--reset-pg1-host")); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "option 'pg1-host' is reset multiple times"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--no-config")); strLstAdd(argList, strNew("--config=/etc/config")); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "option 'config' cannot be set and negated"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--reset-log-path")); strLstAdd(argList, strNew("--log-path=/var/log")); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "option 'log-path' cannot be set and reset"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--no-compress")); strLstAdd(argList, strNew("--reset-compress")); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "option 'compress' cannot be negated and reset"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--reset-compress")); strLstAdd(argList, strNew("--no-compress")); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "option 'compress' cannot be negated and reset"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--compress")); strLstAdd(argList, strNew("--compress")); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "option 'compress' cannot be set multiple times"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--compress-level=3")); strLstAdd(argList, strNew("--compress-level=3")); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "option 'compress-level' cannot be set multiple times"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--online")); TEST_ERROR(configParse(strLstSize(argList), strLstPtr(argList), false), CommandRequiredError, "no command found"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--manifest-save-threshold=123Q")); TEST_ERROR(configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidValueError, "'123Q' is not valid for 'manifest-save-threshold' option"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--manifest-save-threshold=199999999999999999999p")); TEST_ERROR(configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidValueError, "'225179981368524800000000000000000000' is out of range for 'manifest-save-threshold' option"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--pg1-path=")); TEST_ERROR(configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidValueError, "'' must be >= 1 character for 'pg1-path' option"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--pg1-path=bogus")); TEST_ERROR(configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidValueError, "'bogus' must begin with / for 'pg1-path' option"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--pg1-path=/path1//path2")); TEST_ERROR(configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidValueError, "'/path1//path2' cannot contain // for 'pg1-path' option"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--pg1-path=/path1/path2//")); TEST_ERROR(configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidValueError, "'/path1/path2//' cannot contain // for 'pg1-path' option"); // Local and remove commands should not modify log levels during parsing // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew("pgbackrest")); strLstAdd(argList, strNew("--host-id=1")); strLstAddZ(argList, "--" CFGOPT_PG1_PATH "=/path/to"); strLstAdd(argList, strNew("--process=1")); strLstAdd(argList, strNew("--stanza=db")); strLstAddZ(argList, "--" CFGOPT_REMOTE_TYPE "=" PROTOCOL_REMOTE_TYPE_REPO); strLstAdd(argList, strNew("--log-level-stderr=info")); strLstAddZ(argList, CFGCMD_BACKUP ":" CONFIG_COMMAND_ROLE_LOCAL); logLevelStdOut = logLevelError; logLevelStdErr = logLevelError; TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), "load local config"); TEST_RESULT_INT(logLevelStdOut, logLevelError, "console logging is error"); TEST_RESULT_INT(logLevelStdErr, logLevelError, "stderr logging is error"); argList = strLstNew(); strLstAdd(argList, strNew("pgbackrest")); strLstAddZ(argList, "--" CFGOPT_PG1_PATH "=/path/to"); strLstAdd(argList, strNew("--process=1")); strLstAdd(argList, strNew("--stanza=db")); strLstAddZ(argList, "--" CFGOPT_REMOTE_TYPE "=" PROTOCOL_REMOTE_TYPE_REPO); strLstAdd(argList, strNew("--log-level-stderr=info")); strLstAddZ(argList, CFGCMD_BACKUP ":" CONFIG_COMMAND_ROLE_REMOTE); logLevelStdOut = logLevelError; logLevelStdErr = logLevelError; TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), "load remote config"); TEST_RESULT_INT(logLevelStdOut, logLevelError, "console logging is error"); TEST_RESULT_INT(logLevelStdErr, logLevelError, "stderr logging is error"); harnessLogLevelReset(); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionRequiredError, "backup command requires option: pg1-path\nHINT: does this stanza exist?"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionRequiredError, "backup command requires option: stanza"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-path=/path/to/db")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--repo1-type=s3")); strLstAdd(argList, strNew("--repo1-s3-key=xxx")); strLstAdd(argList, strNew("--repo1-s3-bucket=xxx")); strLstAdd(argList, strNew("--repo1-s3-endpoint=xxx")); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "option 'repo1-s3-key' is not allowed on the command-line\n" "HINT: this option could expose secrets in the process list.\n" "HINT: specify the option in a configuration file or an environment variable instead."); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-path=/path/to/db")); strLstAdd(argList, strNew("--no-config")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--repo1-s3-host=xxx")); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "option 'repo1-s3-host' not valid without option 'repo1-type' = 's3'"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-path=/path/to/db")); strLstAdd(argList, strNew("--repo1-host-user=xxx")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew(TEST_COMMAND_RESTORE)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "option 'repo1-host-user' not valid without option 'repo1-host'"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-path=/path/to/db")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--force")); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "option 'force' not valid without option 'no-online'"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-path=/path/to/db")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--spool-path=/path/to/spool")); strLstAdd(argList, strNew(TEST_COMMAND_ARCHIVE_GET)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "option 'spool-path' not valid without option 'archive-async'"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-path=/path/to/db")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--recovery-option=a=b")); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "option 'recovery-option' not valid for command 'backup'"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-path=/path/to/db")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--target-exclusive")); strLstAdd(argList, strNew(TEST_COMMAND_RESTORE)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "option 'target-exclusive' not valid without option 'type' in ('time', 'xid')"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-path=/path/to/db")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--type=bogus")); strLstAdd(argList, strNew(TEST_COMMAND_RESTORE)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidValueError, "'bogus' is not allowed for 'type' option"); // Lower and upper bounds for integer ranges // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-path=/path/to/db")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--process-max=0")); strLstAdd(argList, strNew(TEST_COMMAND_RESTORE)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidValueError, "'0' is out of range for 'process-max' option"); argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-path=/path/to/db")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--process-max=65536")); strLstAdd(argList, strNew(TEST_COMMAND_RESTORE)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidValueError, "'65536' is out of range for 'process-max' option"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-path=/path/to/db")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--process-max=bogus")); strLstAdd(argList, strNew(TEST_COMMAND_RESTORE)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidValueError, "'bogus' is not valid for 'process-max' option"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-path=/path/to/db")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--protocol-timeout=.01")); strLstAdd(argList, strNew(TEST_COMMAND_RESTORE)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidValueError, "'.01' is out of range for 'protocol-timeout' option"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-path=/path/to/db")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--protocol-timeout=bogus")); strLstAdd(argList, strNew(TEST_COMMAND_RESTORE)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidValueError, "'bogus' is not valid for 'protocol-timeout' option"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-path=/path/to/db")); strLstAdd(argList, strNew("--stanza=db")); setenv("PGBACKREST_PROTOCOL_TIMEOUT", "", true); strLstAdd(argList, strNew(TEST_COMMAND_RESTORE)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidValueError, "environment variable 'protocol-timeout' must have a value"); unsetenv("PGBACKREST_PROTOCOL_TIMEOUT"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-path=/path/to/db")); strLstAdd(argList, strNew("--stanza=db")); setenv("PGBACKREST_DELTA", "x", true); strLstAdd(argList, strNew(TEST_COMMAND_RESTORE)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidValueError, "environment boolean option 'delta' must be 'y' or 'n'"); unsetenv("PGBACKREST_DELTA"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNewFmt("--config=%s", strPtr(configFile))); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); storagePutP( storageNewWriteP(storageLocalWrite(), configFile), BUFSTRDEF( "[global]\n" "compress=bogus\n")); TEST_ERROR(configParse( strLstSize(argList), strLstPtr(argList), false), OptionInvalidValueError, "boolean option 'compress' must be 'y' or 'n'"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNewFmt("--config=%s", strPtr(configFile))); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); storagePutP( storageNewWriteP(storageLocalWrite(), configFile), BUFSTRDEF( "[global]\n" "compress=\n")); TEST_ERROR(configParse( strLstSize(argList), strLstPtr(argList), false), OptionInvalidValueError, "section 'global', key 'compress' must have a value"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNewFmt("--config=%s", strPtr(configFile))); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); storagePutP( storageNewWriteP(storageLocalWrite(), configFile), BUFSTRDEF( "[db]\n" "pg1-path=/path/to/db\n" "db-path=/also/path/to/db\n")); TEST_ERROR(configParse( strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, strPtr(strNew("configuration file contains duplicate options ('db-path', 'pg1-path') in section '[db]'"))); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNewFmt("--config=%s", strPtr(configFile))); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); storagePutP( storageNewWriteP(storageLocalWrite(), configFile), BUFSTRDEF( "[db]\n" "pg1-path=/path/to/db\n" "pg1-path=/also/path/to/db\n")); TEST_ERROR(configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "option 'pg1-path' cannot be set multiple times"); // Also test with a boolean option since this gets converted immediately and will blow up if it is multi storagePutP( storageNewWriteP(storageLocalWrite(), configFile), BUFSTRDEF( "[db]\n" "start-fast=y\n" "start-fast=n\n")); TEST_ERROR(configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "option 'start-fast' cannot be set multiple times"); // Test that log levels are set correctly when reset is enabled, then set them back to harness defaults // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); logLevelStdOut = logLevelOff; logLevelStdErr = logLevelOff; TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), true), "no command"); TEST_RESULT_BOOL(cfgCommandHelp(), true, " help is set"); TEST_RESULT_INT(cfgCommand(), cfgCmdNone, " command is none"); TEST_RESULT_INT(logLevelStdOut, logLevelWarn, "console logging is warn"); TEST_RESULT_INT(logLevelStdErr, logLevelWarn, "stderr logging is warn"); harnessLogLevelReset(); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("help")); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), "help command"); TEST_RESULT_BOOL(cfgCommandHelp(), true, " help is set"); TEST_RESULT_INT(cfgCommand(), cfgCmdHelp, " command is help"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("help")); strLstAdd(argList, strNew("version")); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), "help for version command"); TEST_RESULT_BOOL(cfgCommandHelp(), true, " help is set"); TEST_RESULT_INT(cfgCommand(), cfgCmdVersion, " command is version"); // Help should not fail on missing options // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("help")); strLstAdd(argList, strNew("backup")); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), "help for backup command"); TEST_RESULT_BOOL(cfgCommandHelp(), true, " help is set"); TEST_RESULT_INT(cfgCommand(), cfgCmdBackup, " command is backup"); TEST_RESULT_BOOL(cfgOptionValid(cfgOptPgPath), true, " pg1-path is valid"); TEST_RESULT_PTR(cfgOption(cfgOptPgPath), NULL, " pg1-path is not set"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew(TEST_COMMAND_ARCHIVE_GET)); strLstAdd(argList, strNew("000000010000000200000003")); strLstAdd(argList, strNew("/path/to/wal/RECOVERYWAL")); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), "command arguments"); TEST_RESULT_STR_Z( strLstJoin(cfgCommandParam(), "|"), "000000010000000200000003|/path/to/wal/RECOVERYWAL", " check command arguments"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--pg1-path=/path/to/db/")); strLstAdd(argList, strNew("--no-online")); strLstAdd(argList, strNew("--no-config")); strLstAdd(argList, strNew("--repo1-type=s3")); strLstAdd(argList, strNew("--repo1-s3-bucket=test")); strLstAdd(argList, strNew("--repo1-s3-endpoint=test")); strLstAdd(argList, strNew("--repo1-s3-region=test")); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); setenv("PGBACKREST_REPO1_S3_KEY", "xxx", true); setenv("PGBACKREST_REPO1_S3_KEY_SECRET", "xxx", true); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), TEST_COMMAND_BACKUP " command"); TEST_RESULT_INT(cfgCommand(), cfgCmdBackup, " command is " TEST_COMMAND_BACKUP); TEST_RESULT_STR_Z(cfgExe(), TEST_BACKREST_EXE, " exe is set"); TEST_RESULT_BOOL(cfgOptionTest(cfgOptConfig), false, " config is not set"); TEST_RESULT_INT(cfgOptionSource(cfgOptConfig), cfgSourceParam, " config is source param"); TEST_RESULT_BOOL(cfgOptionNegate(cfgOptConfig), true, " config is negated"); TEST_RESULT_INT(cfgOptionSource(cfgOptStanza), cfgSourceParam, " stanza is source param"); TEST_RESULT_STR_Z(cfgOptionStr(cfgOptStanza), "db", " stanza is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptStanza), cfgSourceParam, " stanza is source param"); TEST_RESULT_STR_Z(cfgOptionStr(cfgOptPgPath), "/path/to/db", " pg1-path is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptPgPath), cfgSourceParam, " pg1-path is source param"); TEST_RESULT_STR_Z(cfgOptionStr(cfgOptRepoS3KeySecret), "xxx", " repo1-s3-secret is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptRepoS3KeySecret), cfgSourceConfig, " repo1-s3-secret is source env"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptOnline), false, " online is not set"); TEST_RESULT_INT(cfgOptionSource(cfgOptOnline), cfgSourceParam, " online is source default"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptCompress), true, " compress is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptCompress), cfgSourceDefault, " compress is source default"); TEST_RESULT_INT(cfgOptionInt(cfgOptBufferSize), 4194304, " buffer-size is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptBufferSize), cfgSourceDefault, " buffer-size is source default"); unsetenv("PGBACKREST_REPO1_S3_KEY"); unsetenv("PGBACKREST_REPO1_S3_KEY_SECRET"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNewFmt("--config=%s", strPtr(configFile))); strLstAdd(argList, strNew("--no-online")); strLstAdd(argList, strNew("--reset-pg1-host")); strLstAdd(argList, strNew("--reset-backup-standby")); strLstAdd(argList, strNew(TEST_COMMAND_BACKUP)); setenv("PGBACKRESTXXX_NOTHING", "xxx", true); setenv("PGBACKREST_BOGUS", "xxx", true); setenv("PGBACKREST_NO_COMPRESS", "xxx", true); setenv("PGBACKREST_RESET_REPO1_HOST", "", true); setenv("PGBACKREST_TARGET", "xxx", true); setenv("PGBACKREST_ONLINE", "y", true); setenv("PGBACKREST_DELTA", "y", true); setenv("PGBACKREST_START_FAST", "n", true); setenv("PGBACKREST_PG1_SOCKET_PATH", "/path/to/socket", true); storagePutP( storageNewWriteP(storageLocalWrite(), configFile), BUFSTRDEF( "[global]\n" "compress-level=3\n" "spool-path=/path/to/spool\n" "lock-path=/\n" "\n" "[global:backup]\n" "repo1-hardlink=y\n" "bogus=bogus\n" "no-compress=y\n" "reset-compress=y\n" "archive-copy=y\n" "start-fast=y\n" "online=y\n" "pg1-path=/not/path/to/db\n" "backup-standby=y\n" "buffer-size=65536\n" "\n" "[db:backup]\n" "compress=n\n" "recovery-option=a=b\n" "\n" "[db]\n" "pg1-host=db\n" "pg1-path=/path/to/db\n" "recovery-option=c=d\n")); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), TEST_COMMAND_BACKUP " command"); harnessLogResult( strPtr( strNew( "P00 WARN: environment contains invalid option 'bogus'\n" "P00 WARN: environment contains invalid negate option 'no-compress'\n" "P00 WARN: environment contains invalid reset option 'reset-repo1-host'\n" "P00 WARN: configuration file contains option 'recovery-option' invalid for section 'db:backup'\n" "P00 WARN: configuration file contains invalid option 'bogus'\n" "P00 WARN: configuration file contains negate option 'no-compress'\n" "P00 WARN: configuration file contains reset option 'reset-compress'\n" "P00 WARN: configuration file contains command-line only option 'online'\n" "P00 WARN: configuration file contains stanza-only option 'pg1-path' in global section 'global:backup'"))); TEST_RESULT_BOOL(cfgOptionTest(cfgOptPgHost), false, " pg1-host is not set (command line reset override)"); TEST_RESULT_STR_Z(cfgOptionStr(cfgOptPgPath), "/path/to/db", " pg1-path is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptPgPath), cfgSourceConfig, " pg1-path is source config"); TEST_RESULT_STR_Z(cfgOptionStr(cfgOptLockPath), "/", " lock-path is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptLockPath), cfgSourceConfig, " lock-path is source config"); TEST_RESULT_STR_Z(cfgOptionStr(cfgOptPgSocketPath), "/path/to/socket", " pg1-socket-path is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptPgSocketPath), cfgSourceConfig, " pg1-socket-path is config param"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptOnline), false, " online not is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptOnline), cfgSourceParam, " online is source param"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptStartFast), false, " start-fast not is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptStartFast), cfgSourceConfig, " start-fast is config param"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptCompress), false, " compress not is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptCompress), cfgSourceConfig, " compress is source config"); TEST_RESULT_BOOL(cfgOptionTest(cfgOptArchiveCheck), false, " archive-check is not set"); TEST_RESULT_BOOL(cfgOptionTest(cfgOptArchiveCopy), false, " archive-copy is not set"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptRepoHardlink), true, " repo-hardlink is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptRepoHardlink), cfgSourceConfig, " repo-hardlink is source config"); TEST_RESULT_INT(cfgOptionInt(cfgOptCompressLevel), 3, " compress-level is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptCompressLevel), cfgSourceConfig, " compress-level is source config"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptBackupStandby), false, " backup-standby not is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptBackupStandby), cfgSourceDefault, " backup-standby is source default"); TEST_RESULT_BOOL(cfgOptionBool(cfgOptDelta), true, " delta is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptDelta), cfgSourceConfig, " delta is source config"); TEST_RESULT_BOOL(cfgOptionInt64(cfgOptBufferSize), 65536, " buffer-size is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptBufferSize), cfgSourceConfig, " backup-standby is source config"); unsetenv("PGBACKREST_BOGUS"); unsetenv("PGBACKREST_NO_COMPRESS"); unsetenv("PGBACKREST_RESET_REPO1_HOST"); unsetenv("PGBACKREST_TARGET"); unsetenv("PGBACKREST_ONLINE"); unsetenv("PGBACKREST_START_FAST"); unsetenv("PGBACKREST_PG1_SOCKET_PATH"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNewFmt("--config=%s", strPtr(configFile))); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew("--archive-push-queue-max=4503599627370496")); strLstAdd(argList, strNew("--buffer-size=2MB")); strLstAdd(argList, strNew("archive-push")); storagePutP( storageNewWriteP(storageLocalWrite(), configFile), BUFSTRDEF( "[global]\n" "spool-path=/path/to/spool\n")); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), "archive-push command"); TEST_RESULT_INT(cfgOptionInt64(cfgOptArchivePushQueueMax), 4503599627370496, "archive-push-queue-max is set"); TEST_RESULT_INT(cfgOptionSource(cfgOptArchivePushQueueMax), cfgSourceParam, " archive-push-queue-max is source config"); TEST_RESULT_INT(cfgOptionInt64(cfgOptBufferSize), 2097152, "buffer-size is set to bytes from MB"); TEST_RESULT_INT(cfgOptionSource(cfgOptBufferSize), cfgSourceParam, " buffer-size is source config"); TEST_RESULT_PTR(cfgOption(cfgOptSpoolPath), NULL, " spool-path is not set"); TEST_RESULT_INT(cfgOptionSource(cfgOptSpoolPath), cfgSourceDefault, " spool-path is source default"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-path=/path/to/db")); strLstAdd(argList, strNew("--recovery-option=a")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew(TEST_COMMAND_RESTORE)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "key/value 'a' not valid for 'recovery-option' option"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-path=/path/to/db")); strLstAdd(argList, strNew("--recovery-option=a")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew(TEST_COMMAND_RESTORE)); TEST_ERROR( configParse(strLstSize(argList), strLstPtr(argList), false), OptionInvalidError, "key/value 'a' not valid for 'recovery-option' option"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-path=/path/to/db")); strLstAdd(argList, strNew("--db-include=abc")); strLstAdd(argList, strNew("--db-include=def")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew(TEST_COMMAND_RESTORE)); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), TEST_COMMAND_RESTORE " command"); const VariantList *includeList = NULL; TEST_ASSIGN(includeList, cfgOptionLst(cfgOptDbInclude), "get db include options"); TEST_RESULT_STR_Z(varStr(varLstGet(includeList, 0)), "abc", "check db include option"); TEST_RESULT_STR_Z(varStr(varLstGet(includeList, 1)), "def", "check db include option"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew("--pg1-path=/path/to/db")); strLstAdd(argList, strNew("--recovery-option=a=b")); strLstAdd(argList, strNew("--recovery-option=c=de=fg hi")); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew(TEST_COMMAND_RESTORE)); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), TEST_COMMAND_RESTORE " command"); const KeyValue *recoveryKv = NULL; TEST_ASSIGN(recoveryKv, cfgOptionKv(cfgOptRecoveryOption), "get recovery options"); TEST_RESULT_STR_Z(varStr(kvGet(recoveryKv, varNewStr(strNew("a")))), "b", "check recovery option"); TEST_RESULT_STR_Z(varStr(kvGet(recoveryKv, varNewStr(strNew("c")))), "de=fg hi", "check recovery option"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNewFmt("--config=%s", strPtr(configFile))); strLstAdd(argList, strNew("--stanza=db")); strLstAdd(argList, strNew(TEST_COMMAND_RESTORE)); storagePutP( storageNewWriteP(storageLocalWrite(), configFile), BUFSTRDEF( "[global:restore]\n" "recovery-option=f=g\n" "recovery-option=hijk=l\n" "\n" "[db]\n" "pg1-path=/path/to/db\n")); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), TEST_COMMAND_RESTORE " command"); TEST_ASSIGN(recoveryKv, cfgOptionKv(cfgOptRecoveryOption), "get recovery options"); TEST_RESULT_STR_Z(varStr(kvGet(recoveryKv, varNewStr(strNew("f")))), "g", "check recovery option"); TEST_RESULT_STR_Z(varStr(kvGet(recoveryKv, varNewStr(strNew("hijk")))), "l", "check recovery option"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNew(TEST_COMMAND_RESTORE)); setenv("PGBACKREST_STANZA", "db", true); setenv("PGBACKREST_PG1_PATH", "/path/to/db", true); setenv("PGBACKREST_RECOVERY_OPTION", "f=g:hijk=l", true); setenv("PGBACKREST_DB_INCLUDE", "77", true); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), TEST_COMMAND_RESTORE " command"); TEST_ASSIGN(recoveryKv, cfgOptionKv(cfgOptRecoveryOption), "get recovery options"); TEST_RESULT_STR_Z(varStr(kvGet(recoveryKv, varNewStr(strNew("f")))), "g", "check recovery option"); TEST_RESULT_STR_Z(varStr(kvGet(recoveryKv, varNewStr(strNew("hijk")))), "l", "check recovery option"); TEST_RESULT_STR_Z(varStr(varLstGet(cfgOptionLst(cfgOptDbInclude), 0)), "77", "check db include option"); TEST_RESULT_UINT(varLstSize(cfgOptionLst(cfgOptDbInclude)), 1, "check db include option size"); unsetenv("PGBACKREST_STANZA"); unsetenv("PGBACKREST_PG1_PATH"); unsetenv("PGBACKREST_RECOVERY_OPTION"); unsetenv("PGBACKREST_DB_INCLUDE"); // Stanza options should not be loaded for commands that don't take a stanza // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNew(TEST_BACKREST_EXE)); strLstAdd(argList, strNewFmt("--config=%s", strPtr(configFile))); strLstAdd(argList, strNew("info")); storagePutP( storageNewWriteP(storageLocalWrite(), configFile), BUFSTRDEF( "[global]\n" "repo1-path=/path/to/repo\n" "\n" "[db]\n" "repo1-path=/not/the/path\n")); TEST_RESULT_VOID(configParse(strLstSize(argList), strLstPtr(argList), false), "info command"); TEST_RESULT_STR_Z(cfgOptionStr(cfgOptRepoPath), "/path/to/repo", "check repo1-path option"); } // ***************************************************************************************************************************** if (testBegin("deprecated option names")) { // Repository options // ------------------------------------------------------------------------------------------------------------------------- testOptionFind("hardlink", PARSE_DEPRECATE_FLAG | cfgOptRepoHardlink); testOptionFind("no-hardlink", PARSE_DEPRECATE_FLAG | PARSE_NEGATE_FLAG | cfgOptRepoHardlink); testOptionFind("archive-queue-max", PARSE_DEPRECATE_FLAG | cfgOptArchivePushQueueMax); testOptionFind("reset-archive-queue-max", PARSE_DEPRECATE_FLAG | PARSE_RESET_FLAG | cfgOptArchivePushQueueMax); testOptionFind("backup-cmd", PARSE_DEPRECATE_FLAG | cfgOptRepoHostCmd); testOptionFind("backup-config", PARSE_DEPRECATE_FLAG | cfgOptRepoHostConfig); testOptionFind("backup-host", PARSE_DEPRECATE_FLAG | cfgOptRepoHost); testOptionFind("backup-ssh-port", PARSE_DEPRECATE_FLAG | cfgOptRepoHostPort); testOptionFind("backup-user", PARSE_DEPRECATE_FLAG | cfgOptRepoHostUser); testOptionFind("repo-cipher-pass", PARSE_DEPRECATE_FLAG | cfgOptRepoCipherPass); testOptionFind("repo-cipher-type", PARSE_DEPRECATE_FLAG | cfgOptRepoCipherType); testOptionFind("repo-path", PARSE_DEPRECATE_FLAG | cfgOptRepoPath); testOptionFind("repo-type", PARSE_DEPRECATE_FLAG | cfgOptRepoType); testOptionFind("repo-s3-bucket", PARSE_DEPRECATE_FLAG | cfgOptRepoS3Bucket); testOptionFind("repo-s3-ca-file", PARSE_DEPRECATE_FLAG | cfgOptRepoS3CaFile); testOptionFind("repo-s3-ca-path", PARSE_DEPRECATE_FLAG | cfgOptRepoS3CaPath); testOptionFind("repo-s3-endpoint", PARSE_DEPRECATE_FLAG | cfgOptRepoS3Endpoint); testOptionFind("repo-s3-host", PARSE_DEPRECATE_FLAG | cfgOptRepoS3Host); testOptionFind("repo-s3-key", PARSE_DEPRECATE_FLAG | cfgOptRepoS3Key); testOptionFind("repo-s3-key-secret", PARSE_DEPRECATE_FLAG | cfgOptRepoS3KeySecret); testOptionFind("repo-s3-region", PARSE_DEPRECATE_FLAG | cfgOptRepoS3Region); testOptionFind("repo-s3-verify-ssl", PARSE_DEPRECATE_FLAG | cfgOptRepoS3VerifyTls); testOptionFind("repo1-s3-verify-ssl", PARSE_DEPRECATE_FLAG | cfgOptRepoS3VerifyTls); testOptionFind("no-repo-s3-verify-ssl", PARSE_DEPRECATE_FLAG | PARSE_NEGATE_FLAG | cfgOptRepoS3VerifyTls); // PostreSQL options // ------------------------------------------------------------------------------------------------------------------------- testOptionFind("db-cmd", PARSE_DEPRECATE_FLAG | cfgOptPgHostCmd); testOptionFind("db-config", PARSE_DEPRECATE_FLAG | cfgOptPgHostConfig); testOptionFind("db-host", PARSE_DEPRECATE_FLAG | cfgOptPgHost); testOptionFind("db-path", PARSE_DEPRECATE_FLAG | cfgOptPgPath); testOptionFind("db-port", PARSE_DEPRECATE_FLAG | cfgOptPgPort); testOptionFind("db-socket-path", PARSE_DEPRECATE_FLAG | cfgOptPgSocketPath); testOptionFind("db-ssh-port", PARSE_DEPRECATE_FLAG | cfgOptPgHostPort); testOptionFind("db-user", PARSE_DEPRECATE_FLAG | cfgOptPgHostUser); testOptionFind("no-db-user", 0); for (unsigned int optionIdx = 0; optionIdx < cfgDefOptionIndexTotal(cfgDefOptPgPath); optionIdx++) { testOptionFind(strPtr(strNewFmt("db%u-cmd", optionIdx + 1)), PARSE_DEPRECATE_FLAG | (cfgOptPgHostCmd + optionIdx)); testOptionFind( strPtr(strNewFmt("db%u-config", optionIdx + 1)), PARSE_DEPRECATE_FLAG | (cfgOptPgHostConfig + optionIdx)); testOptionFind(strPtr(strNewFmt("db%u-host", optionIdx + 1)), PARSE_DEPRECATE_FLAG | (cfgOptPgHost + optionIdx)); testOptionFind(strPtr(strNewFmt("db%u-path", optionIdx + 1)), PARSE_DEPRECATE_FLAG | (cfgOptPgPath + optionIdx)); testOptionFind(strPtr(strNewFmt("db%u-port", optionIdx + 1)), PARSE_DEPRECATE_FLAG | (cfgOptPgPort + optionIdx)); testOptionFind( strPtr(strNewFmt("db%u-socket-path", optionIdx + 1)), PARSE_DEPRECATE_FLAG | (cfgOptPgSocketPath + optionIdx)); testOptionFind( strPtr(strNewFmt("db%u-ssh-port", optionIdx + 1)), PARSE_DEPRECATE_FLAG | (cfgOptPgHostPort + optionIdx)); testOptionFind(strPtr(strNewFmt("db%u-user", optionIdx + 1)), PARSE_DEPRECATE_FLAG | (cfgOptPgHostUser + optionIdx)); } } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/config/protocolTest.c000066400000000000000000000056551362531507100243670ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Configuration Protocol ***********************************************************************************************************************************/ #include "common/io/handleRead.h" #include "common/io/handleWrite.h" #include "protocol/client.h" #include "protocol/server.h" #include "common/harnessConfig.h" #include "common/harnessFork.h" /*********************************************************************************************************************************** Test run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("configProtocol() and configProtocolOption()")) { HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, true) { IoRead *read = ioHandleReadNew(strNew("client read"), HARNESS_FORK_CHILD_READ(), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("client write"), HARNESS_FORK_CHILD_WRITE()); ioWriteOpen(write); StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--repo1-host=repo-host"); strLstAddZ(argList, "--repo1-host-user=repo-host-user"); harnessCfgLoad(cfgCmdArchiveGet, argList); ProtocolServer *server = protocolServerNew(strNew("test"), strNew("config"), read, write); protocolServerHandlerAdd(server, configProtocol); protocolServerProcess(server); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { IoRead *read = ioHandleReadNew(strNew("server read"), HARNESS_FORK_PARENT_READ_PROCESS(0), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("server write"), HARNESS_FORK_PARENT_WRITE_PROCESS(0)); ioWriteOpen(write); ProtocolClient *client = protocolClientNew(strNew("test"), strNew("config"), read, write); VariantList *list = varLstNew(); varLstAdd(list, varNewStr(strNew("repo1-host"))); varLstAdd(list, varNewStr(strNew("repo1-host-user"))); TEST_RESULT_STR_Z( strLstJoin(strLstNewVarLst(configProtocolOption(client, list)), "|"), "repo-host|repo-host-user", "get options"); protocolClientFree(client); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/db/000077500000000000000000000000001362531507100206275ustar00rootroot00000000000000pgbackrest-release-2.24/test/src/module/db/dbTest.c000066400000000000000000000765121362531507100222330ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Database ***********************************************************************************************************************************/ #include "common/harnessConfig.h" #include "common/harnessFork.h" #include "common/harnessLog.h" #include "common/harnessPq.h" #include "common/io/handleRead.h" #include "common/io/handleWrite.h" #include "common/type/json.h" /*********************************************************************************************************************************** Macro to check that replay is making progress -- this does not seem useful enough to be included in the pq harness header ***********************************************************************************************************************************/ #define HRNPQ_MACRO_REPLAY_TARGET_REACHED_PROGRESS( \ sessionParam, walNameParam, lsnNameParam, targetLsnParam, targetReachedParam, replayLsnParam, replayLastLsnParam, \ replayProgressParam, sleepParam) \ {.session = sessionParam, \ .function = HRNPQ_SENDQUERY, \ .param = \ "[\"select replayLsn::text,\\n" \ " (replayLsn > '" targetLsnParam "')::bool as targetReached,\\n" \ " (replayLsn > '" replayLastLsnParam "')::bool as replayProgress\\n" \ " from pg_catalog.pg_last_" walNameParam "_replay_" lsnNameParam "() as replayLsn\"]", \ .resultInt = 1, .sleep = sleepParam}, \ {.session = sessionParam, .function = HRNPQ_CONSUMEINPUT}, \ {.session = sessionParam, .function = HRNPQ_ISBUSY}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT}, \ {.session = sessionParam, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, \ {.session = sessionParam, .function = HRNPQ_NTUPLES, .resultInt = 1}, \ {.session = sessionParam, .function = HRNPQ_NFIELDS, .resultInt = 3}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_TEXT}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[1]", .resultInt = HRNPQ_TYPE_BOOL}, \ {.session = sessionParam, .function = HRNPQ_FTYPE, .param = "[2]", .resultInt = HRNPQ_TYPE_BOOL}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = replayLsnParam}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,1]", .resultZ = cvtBoolToConstZ(targetReachedParam)}, \ {.session = sessionParam, .function = HRNPQ_GETVALUE, .param = "[0,2]", .resultZ = cvtBoolToConstZ(replayProgressParam)}, \ {.session = sessionParam, .function = HRNPQ_CLEAR}, \ {.session = sessionParam, .function = HRNPQ_GETRESULT, .resultNull = true} #define HRNPQ_MACRO_REPLAY_TARGET_REACHED_PROGRESS_GE_10( \ sessionParam, targetLsnParam, targetReachedParam, replayLsnParam, replayLastLsnParam, replayProgressParam, sleepParam) \ HRNPQ_MACRO_REPLAY_TARGET_REACHED_PROGRESS( \ sessionParam, "wal", "lsn", targetLsnParam, targetReachedParam, replayLsnParam, replayLastLsnParam, replayProgressParam, \ sleepParam) /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // PQfinish() is strictly checked harnessPqScriptStrictSet(true); // ***************************************************************************************************************************** if (testBegin("Db and dbProtocol()")) { HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, true) { IoRead *read = ioHandleReadNew(strNew("client read"), HARNESS_FORK_CHILD_READ(), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("client write"), HARNESS_FORK_CHILD_WRITE()); ioWriteOpen(write); // Set options StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--pg1-path=/path/to/pg"); strLstAddZ(argList, "--" CFGOPT_REMOTE_TYPE "=" PROTOCOL_REMOTE_TYPE_PG); strLstAddZ(argList, "--process=0"); harnessCfgLoadRole(cfgCmdBackup, cfgCmdRoleRemote, argList); // Set script harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN(1, "dbname='postgres' port=5432"), HRNPQ_MACRO_SET_SEARCH_PATH(1), HRNPQ_MACRO_SET_CLIENT_ENCODING(1), HRNPQ_MACRO_VALIDATE_QUERY(1, PG_VERSION_84, "/pgdata", NULL, NULL), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_OPEN(1, "dbname='postgres' port=5432"), HRNPQ_MACRO_SET_SEARCH_PATH(1), HRNPQ_MACRO_SET_CLIENT_ENCODING(1), HRNPQ_MACRO_VALIDATE_QUERY(1, PG_VERSION_84, "/pgdata", NULL, NULL), HRNPQ_MACRO_WAL_SWITCH(1, "xlog", "000000030000000200000003"), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); // Create server ProtocolServer *server = NULL; TEST_ASSIGN(server, protocolServerNew(strNew("db test server"), strNew("test"), read, write), "create server"); TEST_RESULT_VOID(protocolServerHandlerAdd(server, dbProtocol), "add handler"); TEST_RESULT_VOID(protocolServerProcess(server), "run process loop"); TEST_RESULT_VOID(protocolServerFree(server), "free server"); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { IoRead *read = ioHandleReadNew(strNew("server read"), HARNESS_FORK_PARENT_READ_PROCESS(0), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("server write"), HARNESS_FORK_PARENT_WRITE_PROCESS(0)); ioWriteOpen(write); // Create client ProtocolClient *client = NULL; Db *db = NULL; TEST_ASSIGN(client, protocolClientNew(strNew("db test client"), strNew("test"), read, write), "create client"); // Open and free database TEST_ASSIGN(db, dbNew(NULL, client, strNew("test")), "create db"); TEST_RESULT_VOID(dbOpen(db), "open db"); TEST_RESULT_VOID(dbFree(db), "free db"); // Open the database, but don't free it so the server is forced to do it on shutdown TEST_ASSIGN(db, dbNew(NULL, client, strNew("test")), "create db"); TEST_RESULT_VOID(dbOpen(db), "open db"); TEST_RESULT_STR_Z(dbWalSwitch(db), "000000030000000200000003", " wal switch"); TEST_RESULT_VOID(memContextCallbackClear(db->memContext), "clear context so close is not called"); TEST_RESULT_VOID(protocolClientFree(client), "free client"); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); } // ***************************************************************************************************************************** if (testBegin("dbBackupStart(), dbBackupStop(), dbTime(), dbList(), dbTablespaceList(), and dbReplayWait()")) { StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--repo1-retention-full=1"); strLstAddZ(argList, "--pg1-path=/pg1"); harnessCfgLoad(cfgCmdBackup, argList); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("PostgreSQL 8.3 start backup with no start fast"); harnessPqScriptSet((HarnessPq []) { // Connect to primary HRNPQ_MACRO_OPEN_LE_91(1, "dbname='postgres' port=5432", PG_VERSION_83, "/pg1", NULL, NULL), // Get advisory lock HRNPQ_MACRO_ADVISORY_LOCK(1, true), // Start backup with no start fast HRNPQ_MACRO_START_BACKUP_83(1, "1/1", "000000010000000100000001"), // Close primary HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); DbGetResult db = {.primaryId = 0}; TEST_ASSIGN(db, dbGet(true, true, false), "get primary"); TEST_RESULT_STR_Z(dbBackupStart(db.primary, false, false).lsn, "1/1", "start backup"); TEST_RESULT_VOID(dbFree(db.primary), "free primary"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("PostgreSQL 9.5 start/stop backup"); harnessPqScriptSet((HarnessPq []) { // Connect to primary HRNPQ_MACRO_OPEN_GE_92(1, "dbname='postgres' port=5432", PG_VERSION_95, "/pg1", false, NULL, NULL), // Get start time HRNPQ_MACRO_TIME_QUERY(1, 1000), // Start backup errors on advisory lock HRNPQ_MACRO_ADVISORY_LOCK(1, false), // Start backup HRNPQ_MACRO_ADVISORY_LOCK(1, true), HRNPQ_MACRO_IS_IN_BACKUP(1, false), HRNPQ_MACRO_START_BACKUP_84_95(1, false, "2/3", "000000010000000200000003"), HRNPQ_MACRO_DATABASE_LIST_1(1, "test1"), HRNPQ_MACRO_TABLESPACE_LIST_0(1), // Stop backup HRNPQ_MACRO_STOP_BACKUP_LE_95(1, "2/4", "000000010000000200000004"), // Close primary HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); TEST_ASSIGN(db, dbGet(true, true, false), "get primary"); TEST_RESULT_UINT(dbTimeMSec(db.primary), 1000, "check time"); TEST_ERROR( dbBackupStart(db.primary, false, false), LockAcquireError, "unable to acquire pgBackRest advisory lock\n" "HINT: is another pgBackRest backup already running on this cluster?"); DbBackupStartResult backupStartResult = {.lsn = NULL}; TEST_ASSIGN(backupStartResult, dbBackupStart(db.primary, false, true), "start backup"); TEST_RESULT_STR_Z(backupStartResult.lsn, "2/3", "check lsn"); TEST_RESULT_STR_Z(backupStartResult.walSegmentName, "000000010000000200000003", "check wal segment name"); TEST_RESULT_STR_Z(jsonFromVar(varNewVarLst(dbList(db.primary))), "[[16384,\"test1\",13777]]", "check db list"); TEST_RESULT_STR_Z(jsonFromVar(varNewVarLst(dbTablespaceList(db.primary))), "[]", "check tablespace list"); DbBackupStopResult backupStopResult = {.lsn = NULL}; TEST_ASSIGN(backupStopResult, dbBackupStop(db.primary), "stop backup"); TEST_RESULT_STR_Z(backupStopResult.lsn, "2/4", "check lsn"); TEST_RESULT_STR_Z(backupStopResult.walSegmentName, "000000010000000200000004", "check wal segment name"); TEST_RESULT_STR_Z(backupStopResult.backupLabel, NULL, "check backup label is not set"); TEST_RESULT_STR_Z(backupStopResult.tablespaceMap, NULL, "check tablespace map is not set"); TEST_RESULT_VOID(dbFree(db.primary), "free primary"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("PostgreSQL 9.5 start/stop backup where backup is in progress"); harnessPqScriptSet((HarnessPq []) { // Connect to primary HRNPQ_MACRO_OPEN_GE_92(1, "dbname='postgres' port=5432", PG_VERSION_95, "/pg1", false, NULL, NULL), // Start backup when backup is in progress HRNPQ_MACRO_ADVISORY_LOCK(1, true), HRNPQ_MACRO_IS_IN_BACKUP(1, true), // Stop old backup HRNPQ_MACRO_STOP_BACKUP_LE_95(1, "1/1", "000000010000000100000001"), // Start backup HRNPQ_MACRO_START_BACKUP_84_95(1, true, "2/5", "000000010000000200000005"), // Stop backup HRNPQ_MACRO_STOP_BACKUP_LE_95(1, "2/6", "000000010000000200000006"), // Close primary HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); TEST_ASSIGN(db, dbGet(true, true, false), "get primary"); TEST_RESULT_STR_Z(dbBackupStart(db.primary, true, true).lsn, "2/5", "start backup"); TEST_RESULT_LOG( "P00 WARN: the cluster is already in backup mode but no pgBackRest backup process is running." " pg_stop_backup() will be called so a new backup can be started."); TEST_RESULT_STR_Z(dbBackupStop(db.primary).lsn, "2/6", "stop backup"); TEST_RESULT_VOID(dbFree(db.primary), "free primary"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("PostgreSQL 9.6 start/stop backup"); harnessPqScriptSet((HarnessPq []) { // Connect to primary HRNPQ_MACRO_OPEN_GE_92(1, "dbname='postgres' port=5432", PG_VERSION_96, "/pg1", false, NULL, NULL), // Start backup HRNPQ_MACRO_ADVISORY_LOCK(1, true), HRNPQ_MACRO_START_BACKUP_96(1, false, "3/3", "000000010000000300000003"), // Stop backup HRNPQ_MACRO_STOP_BACKUP_96(1, "3/4", "000000010000000300000004", false), // Close primary HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); TEST_ASSIGN(db, dbGet(true, true, false), "get primary"); TEST_ASSIGN(backupStartResult, dbBackupStart(db.primary, false, true), "start backup"); TEST_RESULT_STR_Z(backupStartResult.lsn, "3/3", "check lsn"); TEST_RESULT_STR_Z(backupStartResult.walSegmentName, "000000010000000300000003", "check wal segment name"); TEST_ASSIGN(backupStopResult, dbBackupStop(db.primary), "stop backup"); TEST_RESULT_STR_Z(backupStopResult.lsn, "3/4", "check lsn"); TEST_RESULT_STR_Z(backupStopResult.walSegmentName, "000000010000000300000004", "check wal segment name"); TEST_RESULT_STR_Z(backupStopResult.backupLabel, "BACKUP_LABEL_DATA", "check backup label"); TEST_RESULT_STR_Z(backupStopResult.tablespaceMap, NULL, "check tablespace map is not set"); TEST_RESULT_VOID(dbFree(db.primary), "free primary"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("PostgreSQL 9.5 start backup from standby"); argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--repo1-retention-full=1"); strLstAddZ(argList, "--pg1-path=/pg1"); strLstAddZ(argList, "--pg2-path=/pg2"); strLstAddZ(argList, "--pg2-port=5433"); harnessCfgLoad(cfgCmdBackup, argList); harnessPqScriptSet((HarnessPq []) { // Connect to primary HRNPQ_MACRO_OPEN_GE_92(1, "dbname='postgres' port=5432", PG_VERSION_95, "/pg1", false, NULL, NULL), // Connect to standby HRNPQ_MACRO_OPEN_GE_92(2, "dbname='postgres' port=5433", PG_VERSION_95, "/pg2", true, NULL, NULL), // Start backup HRNPQ_MACRO_ADVISORY_LOCK(1, true), HRNPQ_MACRO_START_BACKUP_84_95(1, false, "5/4", "000000050000000500000004"), // Wait for standby to sync HRNPQ_MACRO_REPLAY_WAIT_LE_95(2, "5/4"), // Close standby HRNPQ_MACRO_CLOSE(2), // Close primary HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); TEST_ASSIGN(db, dbGet(false, true, true), "get primary and standby"); TEST_RESULT_STR_Z(dbBackupStart(db.primary, false, false).lsn, "5/4", "start backup"); TEST_RESULT_VOID(dbReplayWait(db.standby, STRDEF("5/4"), 1000), "sync standby"); TEST_RESULT_VOID(dbFree(db.standby), "free standby"); TEST_RESULT_VOID(dbFree(db.primary), "free primary"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("PostgreSQL 10 start/stop backup from standby"); harnessPqScriptSet((HarnessPq []) { // Connect to primary HRNPQ_MACRO_OPEN_GE_92(1, "dbname='postgres' port=5432", PG_VERSION_10, "/pg1", false, NULL, NULL), // Connect to standby HRNPQ_MACRO_OPEN_GE_92(2, "dbname='postgres' port=5433", PG_VERSION_10, "/pg2", true, NULL, NULL), // Start backup HRNPQ_MACRO_ADVISORY_LOCK(1, true), HRNPQ_MACRO_START_BACKUP_GE_10(1, false, "5/5", "000000050000000500000005"), // Standby returns NULL lsn {.session = 2, .function = HRNPQ_SENDQUERY, .param = "[\"select replayLsn::text,\\n" " (replayLsn > '5/5')::bool as targetReached\\n" " from pg_catalog.pg_last_wal_replay_lsn() as replayLsn\"]", .resultInt = 1}, {.session = 2, .function = HRNPQ_CONSUMEINPUT}, {.session = 2, .function = HRNPQ_ISBUSY}, {.session = 2, .function = HRNPQ_GETRESULT}, {.session = 2, .function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, {.session = 2, .function = HRNPQ_NTUPLES, .resultInt = 1}, {.session = 2, .function = HRNPQ_NFIELDS, .resultInt = 2}, {.session = 2, .function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_TEXT}, {.session = 2, .function = HRNPQ_FTYPE, .param = "[1]", .resultInt = HRNPQ_TYPE_BOOL}, {.session = 2, .function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = ""}, {.session = 2, .function = HRNPQ_GETISNULL, .param = "[0,0]", .resultInt = 1}, {.session = 2, .function = HRNPQ_GETVALUE, .param = "[0,1]", .resultZ = "false"}, {.session = 2, .function = HRNPQ_CLEAR}, {.session = 2, .function = HRNPQ_GETRESULT, .resultNull = true}, // Timeout waiting for sync HRNPQ_MACRO_REPLAY_TARGET_REACHED_GE_10(2, "5/5", false, "5/3"), HRNPQ_MACRO_REPLAY_TARGET_REACHED_PROGRESS_GE_10(2, "5/5", false, "5/3", "5/3", false, 250), HRNPQ_MACRO_REPLAY_TARGET_REACHED_PROGRESS_GE_10(2, "5/5", false, "5/3", "5/3", false, 0), // Checkpoint target not reached HRNPQ_MACRO_REPLAY_TARGET_REACHED_GE_10(2, "5/5", true, "5/5"), HRNPQ_MACRO_CHECKPOINT(2), HRNPQ_MACRO_CHECKPOINT_TARGET_REACHED_GE_10(2, "5/5", false, "5/4"), // Wait for standby to sync HRNPQ_MACRO_REPLAY_TARGET_REACHED_GE_10(2, "5/5", false, "5/3"), HRNPQ_MACRO_REPLAY_TARGET_REACHED_PROGRESS_GE_10(2, "5/5", false, "5/3", "5/3", false, 0), HRNPQ_MACRO_REPLAY_TARGET_REACHED_PROGRESS_GE_10(2, "5/5", false, "5/4", "5/3", true, 0), HRNPQ_MACRO_REPLAY_TARGET_REACHED_PROGRESS_GE_10(2, "5/5", true, "5/5", "5/4", true, 0), HRNPQ_MACRO_CHECKPOINT(2), HRNPQ_MACRO_CHECKPOINT_TARGET_REACHED_GE_10(2, "5/5", true, "X/X"), // Close standby HRNPQ_MACRO_CLOSE(2), // Stop backup HRNPQ_MACRO_STOP_BACKUP_GE_10(1, "5/6", "000000050000000500000006", true), // Close primary HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); TEST_ASSIGN(db, dbGet(false, true, true), "get primary and standby"); TEST_RESULT_STR_Z(dbBackupStart(db.primary, false, false).lsn, "5/5", "start backup"); TEST_ERROR( dbReplayWait(db.standby, STRDEF("5/5"), 1000), ArchiveTimeoutError, "unable to query replay lsn on the standby using 'pg_catalog.pg_last_wal_replay_lsn()'\n" "HINT: Is this a standby?"); TEST_ERROR( dbReplayWait(db.standby, STRDEF("5/5"), 200), ArchiveTimeoutError, "timeout before standby replayed to 5/5 - only reached 5/3"); TEST_ERROR( dbReplayWait(db.standby, STRDEF("5/5"), 1000), ArchiveTimeoutError, "the checkpoint lsn 5/4 is less than the target lsn 5/5 even though the replay lsn is 5/5"); TEST_RESULT_VOID(dbReplayWait(db.standby, STRDEF("5/5"), 1000), "sync standby"); TEST_RESULT_VOID(dbFree(db.standby), "free standby"); TEST_RESULT_STR_Z(dbBackupStop(db.primary).tablespaceMap, "TABLESPACE_MAP_DATA", "stop backup"); TEST_RESULT_VOID(dbFree(db.primary), "free primary"); } // ***************************************************************************************************************************** if (testBegin("dbGet()")) { DbGetResult result = {0}; // Error connecting to primary // ------------------------------------------------------------------------------------------------------------------------- StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--repo1-retention-full=1"); strLstAddZ(argList, "--pg1-path=/path/to/pg"); strLstAddZ(argList, "--pg1-user=bob"); harnessCfgLoad(cfgCmdBackup, argList); harnessPqScriptSet((HarnessPq []) { {.function = HRNPQ_CONNECTDB, .param = "[\"dbname='postgres' port=5432 user='bob'\"]"}, {.function = HRNPQ_STATUS, .resultInt = CONNECTION_BAD}, {.function = HRNPQ_ERRORMESSAGE, .resultZ = "error"}, {.function = HRNPQ_FINISH}, {.function = NULL} }); TEST_ERROR(dbGet(true, true, false), DbConnectError, "unable to find primary cluster - cannot proceed"); harnessLogResult( "P00 WARN: unable to check pg-1: [DbConnectError] unable to connect to 'dbname='postgres' port=5432 user='bob'':" " error"); // Only cluster is a standby // ------------------------------------------------------------------------------------------------------------------------- harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN(1, "dbname='postgres' port=5432 user='bob'"), HRNPQ_MACRO_SET_SEARCH_PATH(1), HRNPQ_MACRO_SET_CLIENT_ENCODING(1), HRNPQ_MACRO_VALIDATE_QUERY(1, PG_VERSION_94, "/pgdata", NULL, NULL), HRNPQ_MACRO_SET_APPLICATION_NAME(1), HRNPQ_MACRO_IS_STANDBY_QUERY(1, true), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); TEST_ERROR(dbGet(true, true, false), DbConnectError, "unable to find primary cluster - cannot proceed"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("standby cluster required but not found"); harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN(1, "dbname='postgres' port=5432 user='bob'"), HRNPQ_MACRO_SET_SEARCH_PATH(1), HRNPQ_MACRO_SET_CLIENT_ENCODING(1), HRNPQ_MACRO_VALIDATE_QUERY(1, PG_VERSION_94, "/pgdata", NULL, NULL), HRNPQ_MACRO_SET_APPLICATION_NAME(1), HRNPQ_MACRO_IS_STANDBY_QUERY(1, false), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); TEST_ERROR(dbGet(false, false, true), DbConnectError, "unable to find standby cluster - cannot proceed"); // Primary cluster found // ------------------------------------------------------------------------------------------------------------------------- harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_LE_91(1, "dbname='postgres' port=5432 user='bob'", PG_VERSION_84, "/pgdata", NULL, NULL), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); TEST_ASSIGN(result, dbGet(true, true, false), "get primary only"); TEST_RESULT_INT(result.primaryId, 1, " check primary id"); TEST_RESULT_BOOL(result.primary != NULL, true, " check primary"); TEST_RESULT_INT(result.standbyId, 0, " check standby id"); TEST_RESULT_BOOL(result.standby == NULL, true, " check standby"); TEST_RESULT_INT(dbPgVersion(result.primary), PG_VERSION_84, " version set"); TEST_RESULT_STR_Z(dbPgDataPath(result.primary), "/pgdata", " path set"); TEST_RESULT_VOID(dbFree(result.primary), "free primary"); // More than one primary found // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--repo1-retention-full=1"); strLstAddZ(argList, "--pg1-path=/path/to/pg1"); strLstAddZ(argList, "--pg8-path=/path/to/pg2"); strLstAddZ(argList, "--pg8-port=5433"); harnessCfgLoad(cfgCmdBackup, argList); harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_LE_91(1, "dbname='postgres' port=5432", PG_VERSION_84, "/pgdata", NULL, NULL), HRNPQ_MACRO_OPEN_LE_91(8, "dbname='postgres' port=5433", PG_VERSION_84, "/pgdata", NULL, NULL), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_CLOSE(8), HRNPQ_MACRO_DONE() }); TEST_ERROR(dbGet(true, true, false), DbConnectError, "more than one primary cluster found"); // Two standbys found but no primary // ------------------------------------------------------------------------------------------------------------------------- harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_92(1, "dbname='postgres' port=5432", "/pgdata", true, NULL, NULL), HRNPQ_MACRO_OPEN_92(8, "dbname='postgres' port=5433", "/pgdata", true, NULL, NULL), HRNPQ_MACRO_CLOSE(8), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); TEST_ERROR(dbGet(false, true, false), DbConnectError, "unable to find primary cluster - cannot proceed"); // Two standbys and primary not required // ------------------------------------------------------------------------------------------------------------------------- harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_92(1, "dbname='postgres' port=5432", "/pgdata", true, NULL, NULL), HRNPQ_MACRO_OPEN_92(8, "dbname='postgres' port=5433", "/pgdata", true, NULL, NULL), HRNPQ_MACRO_CLOSE(8), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); TEST_ASSIGN(result, dbGet(false, false, false), "get standbys"); TEST_RESULT_INT(result.primaryId, 0, " check primary id"); TEST_RESULT_BOOL(result.primary == NULL, true, " check primary"); TEST_RESULT_INT(result.standbyId, 1, " check standby id"); TEST_RESULT_BOOL(result.standby != NULL, true, " check standby"); TEST_RESULT_VOID(dbFree(result.standby), "free standby"); // Primary and standby found // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--repo1-retention-full=1"); strLstAddZ(argList, "--pg1-path=/path/to/pg1"); strLstAddZ(argList, "--pg4-path=/path/to/pg4"); strLstAddZ(argList, "--pg4-port=5433"); strLstAddZ(argList, "--pg5-host=localhost"); strLstAdd(argList, strNewFmt("--pg5-host-user=%s", testUser())); strLstAddZ(argList, "--pg5-path=/path/to/pg5"); strLstAddZ(argList, "--pg8-path=/path/to/pg8"); strLstAddZ(argList, "--pg8-port=5434"); harnessCfgLoad(cfgCmdBackup, argList); harnessPqScriptSet((HarnessPq []) { HRNPQ_MACRO_OPEN_92(1, "dbname='postgres' port=5432", "/pgdata", true, NULL, NULL), // pg-4 error {.session = 4, .function = HRNPQ_CONNECTDB, .param = "[\"dbname='postgres' port=5433\"]"}, {.session = 4, .function = HRNPQ_STATUS, .resultInt = CONNECTION_BAD}, {.session = 4, .function = HRNPQ_ERRORMESSAGE, .resultZ = "error"}, {.session = 4, .function = HRNPQ_FINISH}, HRNPQ_MACRO_OPEN_92(8, "dbname='postgres' port=5434", "/pgdata", false, NULL, NULL), HRNPQ_MACRO_CREATE_RESTORE_POINT(8, "2/3"), HRNPQ_MACRO_WAL_SWITCH(8, "xlog", "000000010000000200000003"), HRNPQ_MACRO_CLOSE(8), HRNPQ_MACRO_CLOSE(1), HRNPQ_MACRO_DONE() }); TEST_ASSIGN(result, dbGet(false, true, false), "get primary and standy"); hrnLogReplaceAdd("No such file or directory.*$", NULL, "NO SUCH FILE OR DIRECTORY", false); TEST_RESULT_LOG( "P00 WARN: unable to check pg-4: [DbConnectError] unable to connect to 'dbname='postgres' port=5433': error\n" "P00 WARN: unable to check pg-5: [DbConnectError] raised from remote-0 protocol on 'localhost':" " unable to connect to 'dbname='postgres' port=5432': could not connect to server: [NO SUCH FILE OR DIRECTORY]"); TEST_RESULT_INT(result.primaryId, 8, " check primary id"); TEST_RESULT_BOOL(result.primary != NULL, true, " check primary"); TEST_RESULT_STR_Z(dbArchiveMode(result.primary), "on", " dbArchiveMode"); TEST_RESULT_STR_Z(dbArchiveCommand(result.primary), PROJECT_BIN, " dbArchiveCommand"); TEST_RESULT_STR_Z(dbWalSwitch(result.primary), "000000010000000200000003", " wal switch"); TEST_RESULT_INT(result.standbyId, 1, " check standby id"); TEST_RESULT_BOOL(result.standby != NULL, true, " check standby"); TEST_RESULT_VOID(dbFree(result.primary), "free primary"); TEST_RESULT_VOID(dbFree(result.standby), "free standby"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/info/000077500000000000000000000000001362531507100211755ustar00rootroot00000000000000pgbackrest-release-2.24/test/src/module/info/infoArchiveTest.c000066400000000000000000000201431362531507100244360ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Archive Info Handler ***********************************************************************************************************************************/ #include #include "common/io/bufferRead.h" #include "common/io/bufferWrite.h" #include "storage/posix/storage.h" #include "common/harnessInfo.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { // Create default storage object for testing Storage *storageTest = storagePosixNew( strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); // ***************************************************************************************************************************** if (testBegin("InfoArchive")) { // ------------------------------------------------------------------------------------------------------------------------- const Buffer *contentLoad = harnessInfoChecksumZ ( "[db]\n" "db-id=1\n" "db-system-id=6569239123849665679\n" "db-version=\"9.4\"\n" "\n" "[db:history]\n" "1={\"db-id\":6569239123849665679,\"db-version\":\"9.4\"}\n" ); InfoArchive *info = NULL; TEST_ASSIGN(info, infoArchiveNewLoad(ioBufferReadNew(contentLoad)), " load new archive info"); TEST_RESULT_STR_Z(infoArchiveId(info), "9.4-1", " archiveId set"); TEST_RESULT_PTR(infoArchivePg(info), info->infoPg, " infoPg set"); TEST_RESULT_PTR(infoArchiveCipherPass(info), NULL, " no cipher sub"); // Save info and verify Buffer *contentSave = bufNew(0); TEST_RESULT_VOID(infoArchiveSave(info, ioBufferWriteNew(contentSave)), "info archive save"); TEST_RESULT_STR(strNewBuf(contentSave), strNewBuf(contentLoad), " check save"); // Create the same content by creating a new object // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN( info, infoArchiveNew(PG_VERSION_94, 6569239123849665679, NULL), "infoArchiveNew() - no sub cipher"); TEST_RESULT_STR_Z(infoArchiveId(info), "9.4-1", " archiveId set"); TEST_RESULT_PTR(infoArchivePg(info), info->infoPg, " infoPg set"); TEST_RESULT_PTR(infoArchiveCipherPass(info), NULL, " no cipher sub"); TEST_RESULT_INT(infoPgDataTotal(info->infoPg), 1, " history set"); Buffer *contentCompare = bufNew(0); TEST_RESULT_VOID(infoArchiveSave(info, ioBufferWriteNew(contentCompare)), "info archive save"); TEST_RESULT_STR(strNewBuf(contentCompare), strNewBuf(contentSave), " check save"); // Remove both files and recreate from scratch with cipher // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN( info, infoArchiveNew( PG_VERSION_10, 6569239123849665999, strNew("zWa/6Xtp-IVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO")), "infoArchiveNew() - cipher sub"); contentSave = bufNew(0); TEST_RESULT_VOID(infoArchiveSave(info, ioBufferWriteNew(contentSave)), " save new with cipher"); TEST_ASSIGN(info, infoArchiveNewLoad(ioBufferReadNew(contentSave)), " load encrypted archive info"); TEST_RESULT_STR_Z(infoArchiveId(info), "10-1", " archiveId set"); TEST_RESULT_PTR(infoArchivePg(info), info->infoPg, " infoPg set"); TEST_RESULT_STR_Z(infoArchiveCipherPass(info), "zWa/6Xtp-IVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", " cipher sub set"); TEST_RESULT_INT(infoPgDataTotal(info->infoPg), 1, " history set"); // ------------------------------------------------------------------------------------------------------------------------- InfoPgData infoPgData = {0}; TEST_RESULT_VOID(infoArchivePgSet(info, PG_VERSION_94, 6569239123849665679), "add another infoPg"); TEST_RESULT_INT(infoPgDataTotal(info->infoPg), 2, " history incremented"); TEST_ASSIGN(infoPgData, infoPgDataCurrent(info->infoPg), " get current infoPgData"); TEST_RESULT_INT(infoPgData.version, PG_VERSION_94, " version set"); TEST_RESULT_INT(infoPgData.systemId, 6569239123849665679, " systemId set"); // Free // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(infoArchiveFree(info), "infoArchiveFree() - free archive info"); // infoArchiveIdHistoryMatch() // ------------------------------------------------------------------------------------------------------------------------- contentLoad = harnessInfoChecksumZ ( "[db]\n" "db-id=2\n" "db-system-id=6626363367545678089\n" "db-version=\"9.5\"\n" "\n" "[db:history]\n" "1={\"db-id\":6625592122879095702,\"db-version\":\"9.4\"}\n" "2={\"db-id\":6626363367545678089,\"db-version\":\"9.5\"}\n" ); TEST_ASSIGN(info, infoArchiveNewLoad(ioBufferReadNew(contentLoad)), "new archive info"); TEST_RESULT_STR_Z(infoArchiveIdHistoryMatch(info, 2, 90500, 6626363367545678089), "9.5-2", " full match found"); TEST_RESULT_STR_Z(infoArchiveIdHistoryMatch(info, 2, 90400, 6625592122879095702), "9.4-1", " partial match found"); TEST_ERROR(infoArchiveIdHistoryMatch(info, 2, 90400, 6625592122879095799), ArchiveMismatchError, "unable to retrieve the archive id for database version '9.4' and system-id '6625592122879095799'"); TEST_ERROR(infoArchiveIdHistoryMatch(info, 2, 90400, 6626363367545678089), ArchiveMismatchError, "unable to retrieve the archive id for database version '9.4' and system-id '6626363367545678089'"); } // ***************************************************************************************************************************** if (testBegin("infoArchiveLoadFile() and infoArchiveSaveFile()")) { TEST_ERROR_FMT( infoArchiveLoadFile(storageTest, STRDEF(INFO_ARCHIVE_FILE), cipherTypeNone, NULL), FileMissingError, "unable to load info file '%s/archive.info' or '%s/archive.info.copy':\n" "FileMissingError: unable to open missing file '%s/archive.info' for read\n" "FileMissingError: unable to open missing file '%s/archive.info.copy' for read\n" "HINT: archive.info cannot be opened but is required to push/get WAL segments.\n" "HINT: is archive_command configured correctly in postgresql.conf?\n" "HINT: has a stanza-create been performed?\n" "HINT: use --no-archive-check to disable archive checks during backup if you have an alternate archiving scheme.", testPath(), testPath(), testPath(), testPath()); InfoArchive *infoArchive = infoArchiveNew(PG_VERSION_10, 6569239123849665999, NULL); TEST_RESULT_VOID( infoArchiveSaveFile(infoArchive, storageTest, STRDEF(INFO_ARCHIVE_FILE), cipherTypeNone, NULL), "save archive info"); TEST_ASSIGN(infoArchive, infoArchiveLoadFile(storageTest, STRDEF(INFO_ARCHIVE_FILE), cipherTypeNone, NULL), "load main"); TEST_RESULT_UINT(infoPgDataCurrent(infoArchive->infoPg).systemId, 6569239123849665999, " check file loaded"); storageRemoveP(storageTest, STRDEF(INFO_ARCHIVE_FILE), .errorOnMissing = true); TEST_ASSIGN(infoArchive, infoArchiveLoadFile(storageTest, STRDEF(INFO_ARCHIVE_FILE), cipherTypeNone, NULL), "load copy"); TEST_RESULT_UINT(infoPgDataCurrent(infoArchive->infoPg).systemId, 6569239123849665999, " check file loaded"); } } pgbackrest-release-2.24/test/src/module/info/infoBackupTest.c000066400000000000000000001260041362531507100242650ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Backup Info Handler ***********************************************************************************************************************************/ #include "command/backup/common.h" #include "common/io/bufferRead.h" #include "common/io/bufferWrite.h" #include "storage/posix/storage.h" #include "common/harnessConfig.h" #include "common/harnessInfo.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { // Create default storage object for testing Storage *storageTest = storagePosixNew( strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); // ***************************************************************************************************************************** if (testBegin("InfoBackup")) { // File with section to ignore // ------------------------------------------------------------------------------------------------------------------------- const Buffer *contentLoad = harnessInfoChecksumZ ( "[db]\n" "db-catalog-version=201409291\n" "db-control-version=942\n" "db-id=1\n" "db-system-id=6569239123849665679\n" "db-version=\"9.4\"\n" "\n" "[ignore-section]\n" "key1=value1\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6569239123849665679," "\"db-version\":\"9.4\"}\n" ); // Load to make sure ignore-section is ignored InfoBackup *infoBackup; TEST_ASSIGN(infoBackup, infoBackupNewLoad(ioBufferReadNew(contentLoad)), " new backup info"); // Save to verify with new created info backup Buffer *contentSave = bufNew(0); TEST_RESULT_VOID(infoBackupSave(infoBackup, ioBufferWriteNew(contentSave)), "info backup save"); // Create new info backup Buffer *contentCompare = bufNew(0); TEST_ASSIGN( infoBackup, infoBackupNew(PG_VERSION_94, 6569239123849665679, NULL), "infoBackupNew() - no cipher sub"); TEST_RESULT_VOID(infoBackupSave(infoBackup, ioBufferWriteNew(contentCompare)), " save backup info from new"); TEST_RESULT_STR(strNewBuf(contentCompare), strNewBuf(contentSave), " check save"); TEST_ASSIGN(infoBackup, infoBackupNewLoad(ioBufferReadNew(contentCompare)), "load backup info"); TEST_RESULT_PTR(infoBackupPg(infoBackup), infoBackup->infoPg, " infoPg set"); TEST_RESULT_PTR(infoBackupCipherPass(infoBackup), NULL, " cipher sub not set"); TEST_RESULT_INT(infoBackupDataTotal(infoBackup), 0, " infoBackupDataTotal returns 0"); // Check cipher pass // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN( infoBackup, infoBackupNew( PG_VERSION_10, 6569239123849665999, strNew("zWa/6Xtp-IVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO")), "infoBackupNew() - cipher sub"); contentSave = bufNew(0); TEST_RESULT_VOID(infoBackupSave(infoBackup, ioBufferWriteNew(contentSave)), " save new with cipher sub"); infoBackup = NULL; TEST_ASSIGN(infoBackup, infoBackupNewLoad(ioBufferReadNew(contentSave)), " load backup info with cipher sub"); TEST_RESULT_PTR(infoBackupPg(infoBackup), infoBackup->infoPg, " infoPg set"); TEST_RESULT_STR_Z(infoBackupCipherPass(infoBackup), "zWa/6Xtp-IVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", " cipher sub set"); TEST_RESULT_INT(infoPgDataTotal(infoBackup->infoPg), 1, " history set"); // Add pg info // ------------------------------------------------------------------------------------------------------------------------- InfoPgData infoPgData = {0}; TEST_RESULT_VOID(infoBackupPgSet(infoBackup, PG_VERSION_94, 6569239123849665679), "add another infoPg"); TEST_RESULT_INT(infoPgDataTotal(infoBackup->infoPg), 2, " history incremented"); TEST_ASSIGN(infoPgData, infoPgDataCurrent(infoBackup->infoPg), " get current infoPgData"); TEST_RESULT_INT(infoPgData.version, PG_VERSION_94, " version set"); TEST_RESULT_INT(infoPgData.systemId, 6569239123849665679, " systemId set"); // Free //-------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(infoBackupFree(infoBackup), "infoBackupFree() - free backup info"); // backup:current section exists // ------------------------------------------------------------------------------------------------------------------------- contentLoad = harnessInfoChecksumZ( "[backup:current]\n" "20161219-212741F={\"backrest-format\":5,\"backrest-version\":\"2.04\"," "\"backup-archive-start\":\"00000007000000000000001C\",\"backup-archive-stop\":\"00000007000000000000001C\"," "\"backup-info-repo-size\":3159776,\"backup-info-repo-size-delta\":3159776,\"backup-info-size\":26897030," "\"backup-info-size-delta\":26897030,\"backup-timestamp-start\":1482182846,\"backup-timestamp-stop\":1482182861," "\"backup-type\":\"full\",\"db-id\":1,\"option-archive-check\":true,\"option-archive-copy\":false," "\"option-backup-standby\":false,\"option-checksum-page\":false,\"option-compress\":true,\"option-hardlink\":false," "\"option-online\":true}\n" "20161219-212741F_20161219-212803D={\"backrest-format\":5,\"backrest-version\":\"2.04\"," "\"backup-archive-start\":\"00000008000000000000001E\",\"backup-archive-stop\":\"00000008000000000000001E\"," "\"backup-info-repo-size\":3159811,\"backup-info-repo-size-delta\":15765,\"backup-info-size\":26897030," "\"backup-info-size-delta\":163866,\"backup-prior\":\"20161219-212741F\",\"backup-reference\":[\"20161219-212741F\"]," "\"backup-timestamp-start\":1482182877,\"backup-timestamp-stop\":1482182883,\"backup-type\":\"diff\",\"db-id\":1," "\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":false,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "20161219-212741F_20161219-212918I={\"backrest-format\":5,\"backrest-version\":\"2.04\"," "\"backup-archive-start\":null,\"backup-archive-stop\":null," "\"backup-info-repo-size\":3159811,\"backup-info-repo-size-delta\":15765,\"backup-info-size\":26897030," "\"backup-info-size-delta\":163866,\"backup-prior\":\"20161219-212741F\",\"backup-reference\":[\"20161219-212741F\"," "\"20161219-212741F_20161219-212803D\"]," "\"backup-timestamp-start\":1482182877,\"backup-timestamp-stop\":1482182883,\"backup-type\":\"incr\",\"db-id\":1," "\"option-archive-check\":true,\"option-archive-copy\":false,\"option-backup-standby\":false," "\"option-checksum-page\":false,\"option-compress\":true,\"option-hardlink\":false,\"option-online\":true}\n" "\n" "[db]\n" "db-catalog-version=201409291\n" "db-control-version=942\n" "db-id=1\n" "db-system-id=6569239123849665679\n" "db-version=\"9.4\"\n" "\n" "[db:history]\n" "1={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6569239123849665679," "\"db-version\":\"9.4\"}\n"); TEST_ASSIGN(infoBackup, infoBackupNewLoad(ioBufferReadNew(contentLoad)), " new backup info"); TEST_RESULT_INT(infoBackupDataTotal(infoBackup), 3, " backup list contains backups"); InfoBackupData backupData = infoBackupData(infoBackup, 0); TEST_RESULT_STR_Z(backupData.backupLabel, "20161219-212741F", "full backup label"); TEST_RESULT_STR_Z(backupData.backupType, "full", " backup type full"); TEST_RESULT_INT(backupData.backrestFormat, 5, " backrest format"); TEST_RESULT_STR_Z(backupData.backrestVersion, "2.04", " backrest version"); TEST_RESULT_STR_Z(backupData.backupArchiveStart, "00000007000000000000001C", " archive start"); TEST_RESULT_STR_Z(backupData.backupArchiveStop, "00000007000000000000001C", " archive stop"); TEST_RESULT_INT(backupData.backupInfoRepoSize, 3159776, " repo size"); TEST_RESULT_INT(backupData.backupInfoRepoSizeDelta, 3159776, " repo delta"); TEST_RESULT_INT(backupData.backupInfoSize, 26897030, " backup size"); TEST_RESULT_INT(backupData.backupInfoSizeDelta, 26897030, " backup delta"); TEST_RESULT_INT(backupData.backupPgId, 1, " pg id"); TEST_RESULT_PTR(backupData.backupPrior, NULL, " backup prior NULL"); TEST_RESULT_PTR(backupData.backupReference, NULL, " backup reference NULL"); TEST_RESULT_INT(backupData.backupTimestampStart, 1482182846, " timestamp start"); TEST_RESULT_INT(backupData.backupTimestampStop, 1482182861, " timestamp stop"); backupData = infoBackupData(infoBackup, 1); TEST_RESULT_STR_Z(backupData.backupLabel, "20161219-212741F_20161219-212803D", "diff backup label"); TEST_RESULT_STR_Z(backupData.backupType, "diff", " backup type diff"); TEST_RESULT_INT(backupData.backupInfoRepoSize, 3159811, " repo size"); TEST_RESULT_INT(backupData.backupInfoRepoSizeDelta, 15765, " repo delta"); TEST_RESULT_INT(backupData.backupInfoSize, 26897030, " backup size"); TEST_RESULT_INT(backupData.backupInfoSizeDelta, 163866, " backup delta"); TEST_RESULT_STR_Z(backupData.backupPrior, "20161219-212741F", " backup prior exists"); TEST_RESULT_BOOL( (strLstSize(backupData.backupReference) == 1 && strLstExistsZ(backupData.backupReference, "20161219-212741F")), true, " backup reference exists"); backupData = infoBackupData(infoBackup, 2); TEST_RESULT_STR_Z(backupData.backupLabel, "20161219-212741F_20161219-212918I", "incr backup label"); TEST_RESULT_PTR(backupData.backupArchiveStart, NULL, " archive start NULL"); TEST_RESULT_PTR(backupData.backupArchiveStop, NULL, " archive stop NULL"); TEST_RESULT_STR_Z(backupData.backupType, "incr", " backup type incr"); TEST_RESULT_STR_Z(backupData.backupPrior, "20161219-212741F", " backup prior exists"); TEST_RESULT_BOOL( (strLstSize(backupData.backupReference) == 2 && strLstExistsZ(backupData.backupReference, "20161219-212741F") && strLstExistsZ(backupData.backupReference, "20161219-212741F_20161219-212803D")), true, " backup reference exists"); TEST_RESULT_BOOL(backupData.optionArchiveCheck, true, " option archive check"); TEST_RESULT_BOOL(backupData.optionArchiveCopy, false, " option archive copy"); TEST_RESULT_BOOL(backupData.optionBackupStandby, false, " option backup standby"); TEST_RESULT_BOOL(backupData.optionChecksumPage, false, " option checksum page"); TEST_RESULT_BOOL(backupData.optionCompress, true, " option compress"); TEST_RESULT_BOOL(backupData.optionHardlink, false, " option hardlink"); TEST_RESULT_BOOL(backupData.optionOnline, true, " option online"); // Save info and verify contentSave = bufNew(0); TEST_RESULT_VOID(infoBackupSave(infoBackup, ioBufferWriteNew(contentSave)), "info backup save"); TEST_RESULT_STR(strNewBuf(contentSave), strNewBuf(contentLoad), " check save"); // infoBackupDataLabelList and infoBackupDataDelete // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_STR_Z( strLstJoin(strLstSort(infoBackupDataLabelList(infoBackup, NULL), sortOrderAsc), ", "), "20161219-212741F, 20161219-212741F_20161219-212803D, 20161219-212741F_20161219-212918I", "infoBackupDataLabelList without expression"); TEST_RESULT_STR_Z( strLstJoin( strLstSort( infoBackupDataLabelList( infoBackup, backupRegExpP(.full = true, .differential = true, .incremental = true)), sortOrderAsc), ", "), "20161219-212741F, 20161219-212741F_20161219-212803D, 20161219-212741F_20161219-212918I", "infoBackupDataLabelList with expression"); TEST_RESULT_STR_Z( strLstJoin(infoBackupDataLabelList(infoBackup, backupRegExpP(.full=true)), ", "), "20161219-212741F", " full=true"); TEST_RESULT_STR_Z( strLstJoin(infoBackupDataLabelList(infoBackup, backupRegExpP(.differential=true)), ", "), "20161219-212741F_20161219-212803D", "differential=true"); TEST_RESULT_STR_Z( strLstJoin(infoBackupDataLabelList(infoBackup, backupRegExpP(.incremental=true)), ", "), "20161219-212741F_20161219-212918I", "incremental=true"); TEST_RESULT_VOID(infoBackupDataDelete(infoBackup, strNew("20161219-212741F_20161219-212918I")), "delete a backup"); TEST_RESULT_STR_Z( strLstJoin(strLstSort(infoBackupDataLabelList(infoBackup, NULL), sortOrderAsc), ", "), "20161219-212741F, 20161219-212741F_20161219-212803D", " backup deleted"); TEST_RESULT_VOID(infoBackupDataDelete(infoBackup, strNew("20161219-212741F_20161219-212803D")), "delete all backups"); TEST_RESULT_VOID(infoBackupDataDelete(infoBackup, strNew("20161219-212741F")), " deleted"); TEST_RESULT_UINT(strLstSize(infoBackupDataLabelList(infoBackup, NULL)), 0, " no backups remain"); // infoBackupDataToLog // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_STR_Z( infoBackupDataToLog(&backupData), "{label: 20161219-212741F_20161219-212918I, pgId: 1}", "check log format"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("infoBackupDataAdd - full backup"); #define TEST_MANIFEST_BACKUPDB \ "\n" \ "[backup:db]\n" \ "db-catalog-version=201409291\n" \ "db-control-version=942\n" \ "db-id=1\n" \ "db-system-id=6569239123849665679\n" \ "db-version=\"9.4\"\n" #define TEST_MANIFEST_FILE_DEFAULT \ "\n" \ "[target:file:default]\n" \ "group=\"group1\"\n" \ "master=false\n" \ "mode=\"0600\"\n" \ "user=\"user1\"\n" #define TEST_MANIFEST_LINK_DEFAULT \ "\n" \ "[target:link:default]\n" \ "group=\"group1\"\n" \ "user=false\n" #define TEST_MANIFEST_PATH_DEFAULT \ "\n" \ "[target:path:default]\n" \ "group=false\n" \ "mode=\"0700\"\n" \ "user=\"user1\"\n" Manifest *manifest = NULL; const Buffer *manifestContent = harnessInfoChecksumZ ( "[backup]\n" "backup-label=\"20190818-084502F\"\n" "backup-timestamp-copy-start=1565282141\n" "backup-timestamp-start=1565282140\n" "backup-timestamp-stop=1565282142\n" "backup-type=\"full\"\n" TEST_MANIFEST_BACKUPDB "\n" "[backup:option]\n" "option-archive-check=true\n" "option-archive-copy=true\n" "option-compress=false\n" "option-hardlink=false\n" "option-online=false\n" "\n" "[backup:target]\n" "pg_data={\"path\":\"/pg/base\",\"type\":\"path\"}\n" "\n" "[cipher]\n" "cipher-pass=\"somepass\"\n" "\n" "[target:file]\n" "pg_data/PG_VERSION={\"checksum\":\"184473f470864e067ee3a22e64b47b0a1c356f29\",\"size\":4,\"timestamp\":1565282114}\n" "pg_data/postgresql.conf={\"checksum\":\"184473f470864e067ee3a22e64b47b0a1c356f29\",\"repo-size\":24,\"size\":7," "\"timestamp\":1565282214}\n" TEST_MANIFEST_FILE_DEFAULT "\n" "[target:path]\n" "pg_data={}\n" TEST_MANIFEST_PATH_DEFAULT ); TEST_ASSIGN(manifest, manifestNewLoad(ioBufferReadNew(manifestContent)), "load manifest"); TEST_RESULT_VOID(infoBackupDataAdd(infoBackup, manifest), "add a backup"); TEST_RESULT_UINT(infoBackupDataTotal(infoBackup), 1, "backup added to current"); TEST_ASSIGN(backupData, infoBackupData(infoBackup, 0), "get added backup"); TEST_RESULT_STR_Z(backupData.backupLabel, "20190818-084502F", "backup label set"); TEST_RESULT_UINT(backupData.backrestFormat, REPOSITORY_FORMAT, "backrest format"); TEST_RESULT_STR_Z(backupData.backrestVersion, PROJECT_VERSION, "backuprest version"); TEST_RESULT_INT(backupData.backupPgId, 1, "pg id"); TEST_RESULT_PTR(backupData.backupArchiveStart, NULL, "archive start NULL"); TEST_RESULT_PTR(backupData.backupArchiveStop, NULL, "archive stop NULL"); TEST_RESULT_STR_Z(backupData.backupType, "full", "backup type set"); TEST_RESULT_PTR(strPtr(backupData.backupPrior), NULL, "no backup prior"); TEST_RESULT_PTR(backupData.backupReference, NULL, "no backup reference"); TEST_RESULT_INT(backupData.backupTimestampStart, 1565282140, "timestamp start"); TEST_RESULT_INT(backupData.backupTimestampStop, 1565282142, "timestamp stop"); TEST_RESULT_BOOL(backupData.optionArchiveCheck, true, "option archive check"); TEST_RESULT_BOOL(backupData.optionArchiveCopy, true, "option archive copy"); TEST_RESULT_BOOL(backupData.optionBackupStandby, false, "no option backup standby"); TEST_RESULT_BOOL(backupData.optionChecksumPage, false, "no option checksum page"); TEST_RESULT_BOOL(backupData.optionCompress, false, "option compress"); TEST_RESULT_BOOL(backupData.optionHardlink, false, "option hardlink"); TEST_RESULT_BOOL(backupData.optionOnline, false, "option online"); TEST_RESULT_UINT(backupData.backupInfoSize, 11, "database size"); TEST_RESULT_UINT(backupData.backupInfoSizeDelta, 11, "backup size"); TEST_RESULT_UINT(backupData.backupInfoRepoSize, 28, "repo size"); TEST_RESULT_UINT(backupData.backupInfoRepoSizeDelta, 28, "repo backup size"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("infoBackupDataAdd - incr backup"); #define TEST_MANIFEST_DB \ "\n" \ "[db]\n" \ "mail={\"db-id\":16456,\"db-last-system-id\":12168}\n" \ "postgres={\"db-id\":12173,\"db-last-system-id\":12168}\n" \ "template0={\"db-id\":12168,\"db-last-system-id\":12168}\n" \ "template1={\"db-id\":1,\"db-last-system-id\":12168}\n" \ manifestContent = harnessInfoChecksumZ ( "[backup]\n" "backup-archive-start=\"000000030000028500000089\"\n" "backup-archive-stop=\"000000030000028500000090\"\n" "backup-label=\"20190818-084502F_20190820-084502I\"\n" "backup-lsn-start=\"285/89000028\"\n" "backup-lsn-stop=\"285/89001F88\"\n" "backup-prior=\"20190818-084502F\"\n" "backup-timestamp-copy-start=1565282141\n" "backup-timestamp-start=1565282140\n" "backup-timestamp-stop=1565282142\n" "backup-type=\"diff\"\n" TEST_MANIFEST_BACKUPDB "\n" "[backup:option]\n" "option-archive-check=true\n" "option-archive-copy=true\n" "option-backup-standby=true\n" "option-buffer-size=16384\n" "option-checksum-page=true\n" "option-compress=true\n" "option-compress-level=3\n" "option-compress-level-network=3\n" "option-delta=false\n" "option-hardlink=true\n" "option-online=true\n" "option-process-max=32\n" "\n" "[backup:target]\n" "pg_data={\"path\":\"/pg/base\",\"type\":\"path\"}\n" "pg_data/base/1={\"path\":\"../../base-1\",\"type\":\"link\"}\n" "pg_data/pg_hba.conf={\"file\":\"pg_hba.conf\",\"path\":\"../pg_config\",\"type\":\"link\"}\n" "pg_data/pg_stat={\"path\":\"../pg_stat\",\"type\":\"link\"}\n" "pg_data/postgresql.conf={\"file\":\"postgresql.conf\",\"path\":\"../pg_config\",\"type\":\"link\"}\n" "pg_tblspc/1={\"path\":\"/tblspc/ts1\",\"tablespace-id\":\"1\",\"tablespace-name\":\"ts1\",\"type\":\"link\"}\n" TEST_MANIFEST_DB "\n" "[target:file]\n" "pg_data/PG_VERSION={\"checksum\":\"184473f470864e067ee3a22e64b47b0a1c356f29\",\"master\":true" ",\"reference\":\"20190818-084502F_20190819-084506D\",\"size\":4,\"timestamp\":1565282114}\n" "pg_data/base/16384/17000={\"checksum\":\"e0101dd8ffb910c9c202ca35b5f828bcb9697bed\",\"checksum-page\":false" ",\"checksum-page-error\":[1],\"repo-size\":4096,\"size\":8192,\"timestamp\":1565282114}\n" "pg_data/base/16384/PG_VERSION={\"checksum\":\"184473f470864e067ee3a22e64b47b0a1c356f29\",\"group\":false,\"size\":4" ",\"timestamp\":1565282115}\n" "pg_data/base/32768/33000={\"checksum\":\"7a16d165e4775f7c92e8cdf60c0af57313f0bf90\",\"checksum-page\":true" ",\"reference\":\"20190818-084502F\",\"size\":1073741824,\"timestamp\":1565282116}\n" "pg_data/base/32768/33000.32767={\"checksum\":\"6e99b589e550e68e934fd235ccba59fe5b592a9e\",\"checksum-page\":true" ",\"reference\":\"20190818-084502F_20190819-084506I\",\"size\":32768,\"timestamp\":1565282114}\n" "pg_data/postgresql.conf={\"checksum\":\"6721d92c9fcdf4248acff1f9a1377127d9064807\",\"master\":true,\"size\":4457" ",\"timestamp\":1565282114}\n" "pg_data/special={\"master\":true,\"mode\":\"0640\",\"size\":0,\"timestamp\":1565282120,\"user\":false}\n" "pg_data/dupref={\"master\":true,\"mode\":\"0640\",\"reference\":\"20190818-084502F\",\"size\":0" ",\"timestamp\":1565282120,\"user\":false}\n" TEST_MANIFEST_FILE_DEFAULT "\n" "[target:link]\n" "pg_data/pg_stat={\"destination\":\"../pg_stat\"}\n" "pg_data/postgresql.conf={\"destination\":\"../pg_config/postgresql.conf\",\"group\":false,\"user\":\"user1\"}\n" TEST_MANIFEST_LINK_DEFAULT "\n" "[target:path]\n" "pg_data={\"user\":\"user2\"}\n" "pg_data/base={\"group\":\"group2\"}\n" "pg_data/base/16384={\"mode\":\"0750\"}\n" "pg_data/base/32768={}\n" "pg_data/base/65536={\"user\":false}\n" TEST_MANIFEST_PATH_DEFAULT ); TEST_ASSIGN(manifest, manifestNewLoad(ioBufferReadNew(manifestContent)), "load manifest"); TEST_RESULT_VOID(infoBackupDataAdd(infoBackup, manifest), "add a backup"); TEST_RESULT_UINT(infoBackupDataTotal(infoBackup), 2, "backup added to current"); TEST_ASSIGN(backupData, infoBackupData(infoBackup, 1), "get added backup"); TEST_RESULT_STR_Z(backupData.backupLabel, "20190818-084502F_20190820-084502I", "backup label set"); TEST_RESULT_UINT(backupData.backrestFormat, REPOSITORY_FORMAT, "backrest format"); TEST_RESULT_STR_Z(backupData.backrestVersion, PROJECT_VERSION, "backuprest version"); TEST_RESULT_STR_Z(backupData.backupArchiveStart, "000000030000028500000089", "archive start set"); TEST_RESULT_STR_Z(backupData.backupArchiveStop, "000000030000028500000090", "archive stop set"); TEST_RESULT_STR_Z(backupData.backupType, "diff", "backup type set"); TEST_RESULT_STR_Z(backupData.backupPrior, "20190818-084502F", "backup prior set"); TEST_RESULT_STR_Z( strLstJoin(backupData.backupReference, ", "), "20190818-084502F, 20190818-084502F_20190819-084506D, 20190818-084502F_20190819-084506I", "backup reference set and ordered"); TEST_RESULT_BOOL(backupData.optionArchiveCheck, true, "option archive check"); TEST_RESULT_BOOL(backupData.optionArchiveCopy, true, "option archive copy"); TEST_RESULT_BOOL(backupData.optionBackupStandby, true, "option backup standby"); TEST_RESULT_BOOL(backupData.optionChecksumPage, true, "no option checksum page"); TEST_RESULT_BOOL(backupData.optionCompress, true, "option compress"); TEST_RESULT_BOOL(backupData.optionHardlink, true, "option hardlink"); TEST_RESULT_BOOL(backupData.optionOnline, true, "option online"); TEST_RESULT_UINT(backupData.backupInfoSize, 1073787249, "database size"); TEST_RESULT_UINT(backupData.backupInfoSizeDelta, 12653, "backup size"); TEST_RESULT_UINT(backupData.backupInfoRepoSize, 1073783153, "repo size"); TEST_RESULT_UINT(backupData.backupInfoRepoSizeDelta, 8557, "repo backup size"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("infoBackupLoadFileReconstruct - skip/add backups"); // Load configuration to set repo-path and stanza StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=db"); strLstAdd(argList, strNewFmt("--repo-path=%s", testPath())); harnessCfgLoad(cfgCmdArchiveGet, argList); // Create manifest for upgrade db (id=2), save to disk manifestContent = harnessInfoChecksumZ ( "[backup]\n" "backup-archive-start=\"000000030000028500000066\"\n" "backup-archive-stop=\"000000030000028500000070\"\n" "backup-label=\"20190923-164324F\"\n" "backup-lsn-start=\"0/66000028\"\n" "backup-lsn-stop=\"0/700000F8\"\n" "backup-timestamp-copy-start=1569257007\n" "backup-timestamp-start=1569257004\n" "backup-timestamp-stop=1569257014\n" "backup-type=\"full\"\n" "\n" "[backup:db]\n" "db-catalog-version=201809051\n" "db-control-version=1100\n" "db-id=2\n" "db-system-id=6739907367085689196\n" "db-version=\"11\"\n" "\n" "[backup:option]\n" "option-archive-check=true\n" "option-archive-copy=false\n" "option-backup-standby=false\n" "option-buffer-size=4194304\n" "option-checksum-page=false\n" "option-compress=true\n" "option-compress-level=6\n" "option-compress-level-network=3\n" "option-delta=false\n" "option-hardlink=false\n" "option-online=true\n" "option-process-max=3\n" "\n" "[backup:target]\n" "pg_data={\"path\":\"/pg/base\",\"type\":\"path\"}\n" TEST_MANIFEST_DB "\n" "[target:file]\n" "pg_data/PG_VERSION={\"checksum\":\"184473f470864e067ee3a22e64b47b0a1c356f29\",\"master\":true" ",\"reference\":\"20190818-084502F_20190819-084506D\",\"size\":4,\"timestamp\":1569256970}\n" "pg_data/backup_label={\"checksum\":\"e0101dd8ffb910c9c202ca35b5f828bcb9697bed\",\"checksum-page\":false" ",\"checksum-page-error\":[1],\"size\":249,\"timestamp\":1569257013}\n" "pg_data/base/13050/PG_VERSION={\"checksum\":\"dd71038f3463f511ee7403dbcbc87195302d891c\",\"repo-size\":23,\"size\":3,\"timestamp\":1569256971}\n" TEST_MANIFEST_FILE_DEFAULT "\n" "[target:path]\n" "pg_data={}\n" "pg_data/base={}\n" "pg_data/base/13050={}\n" TEST_MANIFEST_PATH_DEFAULT ); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageRepoWrite(), strNew(STORAGE_REPO_BACKUP "/20190923-164324F/" BACKUP_MANIFEST_FILE)), manifestContent), "write main manifest for pgId=2 - valid backup to add"); manifestContent = harnessInfoChecksumZ ( "[backup]\n" "backup-label=\"20190818-084444F\"\n" "backup-timestamp-copy-start=1565282141\n" "backup-timestamp-start=1565282140\n" "backup-timestamp-stop=1565282142\n" "backup-type=\"full\"\n" TEST_MANIFEST_BACKUPDB "\n" "[backup:option]\n" "option-archive-check=true\n" "option-archive-copy=true\n" "option-compress=false\n" "option-hardlink=false\n" "option-online=false\n" "\n" "[backup:target]\n" "pg_data={\"path\":\"/pg/base\",\"type\":\"path\"}\n" "\n" "[cipher]\n" "cipher-pass=\"somepass\"\n" "\n" "[target:file]\n" "pg_data/PG_VERSION={\"checksum\":\"184473f470864e067ee3a22e64b47b0a1c356f29\",\"size\":4,\"timestamp\":1565282114}\n" "pg_data/postgresql.conf={\"checksum\":\"184473f470864e067ee3a22e64b47b0a1c356f29\",\"repo-size\":24,\"size\":7," "\"timestamp\":1565282214}\n" TEST_MANIFEST_FILE_DEFAULT "\n" "[target:path]\n" "pg_data={}\n" TEST_MANIFEST_PATH_DEFAULT ); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageRepoWrite(), strNew(STORAGE_REPO_BACKUP "/20190818-084444F/" BACKUP_MANIFEST_FILE INFO_COPY_EXT)), manifestContent), "write manifest copy for pgId=1"); manifestContent = harnessInfoChecksumZ ( "[backup]\n" "backup-label=\"20190818-084555F\"\n" "backup-timestamp-copy-start=1565282141\n" "backup-timestamp-start=1565282140\n" "backup-timestamp-stop=1565282142\n" "backup-type=\"full\"\n" "\n" "[backup:db]\n" "db-catalog-version=201809051\n" "db-control-version=1100\n" "db-id=1\n" "db-system-id=6739907367085689196\n" "db-version=\"11\"\n" "\n" "[backup:option]\n" "option-archive-check=true\n" "option-archive-copy=true\n" "option-compress=false\n" "option-hardlink=false\n" "option-online=false\n" "\n" "[backup:target]\n" "pg_data={\"path\":\"/pg/base\",\"type\":\"path\"}\n" "\n" "[cipher]\n" "cipher-pass=\"somepass\"\n" "\n" "[target:file]\n" "pg_data/PG_VERSION={\"checksum\":\"184473f470864e067ee3a22e64b47b0a1c356f29\",\"size\":4,\"timestamp\":1565282114}\n" TEST_MANIFEST_FILE_DEFAULT "\n" "[target:path]\n" "pg_data={}\n" TEST_MANIFEST_PATH_DEFAULT ); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageRepoWrite(), strNew(STORAGE_REPO_BACKUP "/20190818-084555F/" BACKUP_MANIFEST_FILE)), manifestContent), "write manifest - invalid backup pgId mismatch"); manifestContent = harnessInfoChecksumZ ( "[backup]\n" "backup-label=\"20190818-084666F\"\n" "backup-timestamp-copy-start=1565282141\n" "backup-timestamp-start=1565282140\n" "backup-timestamp-stop=1565282142\n" "backup-type=\"full\"\n" "\n" "[backup:db]\n" "db-catalog-version=201809051\n" "db-control-version=1100\n" "db-id=2\n" "db-system-id=6739907367085689666\n" "db-version=\"11\"\n" "\n" "[backup:option]\n" "option-archive-check=true\n" "option-archive-copy=true\n" "option-compress=false\n" "option-hardlink=false\n" "option-online=false\n" "\n" "[backup:target]\n" "pg_data={\"path\":\"/pg/base\",\"type\":\"path\"}\n" "\n" "[cipher]\n" "cipher-pass=\"somepass\"\n" "\n" "[target:file]\n" "pg_data/PG_VERSION={\"checksum\":\"184473f470864e067ee3a22e64b47b0a1c356f29\",\"size\":4,\"timestamp\":1565282114}\n" TEST_MANIFEST_FILE_DEFAULT "\n" "[target:path]\n" "pg_data={}\n" TEST_MANIFEST_PATH_DEFAULT ); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageRepoWrite(), strNew(STORAGE_REPO_BACKUP "/20190818-084666F/" BACKUP_MANIFEST_FILE)), manifestContent), "write manifest - invalid backup system-id mismatch"); manifestContent = harnessInfoChecksumZ ( "[backup]\n" "backup-label=\"20190818-084777F\"\n" "backup-timestamp-copy-start=1565282141\n" "backup-timestamp-start=1565282140\n" "backup-timestamp-stop=1565282142\n" "backup-type=\"full\"\n" "\n" "[backup:db]\n" "db-catalog-version=201809051\n" "db-control-version=1100\n" "db-id=2\n" "db-system-id=6739907367085689196\n" "db-version=\"10\"\n" "\n" "[backup:option]\n" "option-archive-check=true\n" "option-archive-copy=true\n" "option-compress=false\n" "option-hardlink=false\n" "option-online=false\n" "\n" "[backup:target]\n" "pg_data={\"path\":\"/pg/base\",\"type\":\"path\"}\n" "\n" "[cipher]\n" "cipher-pass=\"somepass\"\n" "\n" "[target:file]\n" "pg_data/PG_VERSION={\"checksum\":\"184473f470864e067ee3a22e64b47b0a1c356f29\",\"size\":4,\"timestamp\":1565282114}\n" TEST_MANIFEST_FILE_DEFAULT "\n" "[target:path]\n" "pg_data={}\n" TEST_MANIFEST_PATH_DEFAULT ); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageRepoWrite(), strNew(STORAGE_REPO_BACKUP "/20190818-084777F/" BACKUP_MANIFEST_FILE)), manifestContent), "write manifest - invalid backup version mismatch"); TEST_RESULT_VOID( storagePathCreateP(storageRepoWrite(), strNew(STORAGE_REPO_BACKUP "/20190818-084502F")), "create backup on disk that is in current but no manifest"); TEST_RESULT_STR_Z( strLstJoin( strLstSort( storageListP( storageRepo(), STORAGE_REPO_BACKUP_STR, .expression = backupRegExpP(.full = true, .differential = true, .incremental = true)), sortOrderAsc), ", "), "20190818-084444F, 20190818-084502F, 20190818-084555F, 20190818-084666F, 20190818-084777F, 20190923-164324F", "confirm backups on disk"); // With the infoBackup from above, upgrade the DB so there a 2 histories then save to disk TEST_ASSIGN(infoBackup, infoBackupPgSet(infoBackup, PG_VERSION_11, 6739907367085689196), "upgrade db"); TEST_RESULT_VOID( infoBackupSaveFile(infoBackup, storageRepoWrite(), INFO_BACKUP_PATH_FILE_STR, cipherTypeNone, NULL), "save backup info"); infoBackup = NULL; TEST_ASSIGN( infoBackup, infoBackupLoadFile(storageRepo(), INFO_BACKUP_PATH_FILE_STR, cipherTypeNone, NULL), "get saved backup info"); TEST_RESULT_INT(infoBackupDataTotal(infoBackup), 2, "backup list contains backups to be removed"); TEST_RESULT_INT(infoPgDataTotal(infoBackup->infoPg), 2, "multiple DB history"); TEST_ASSIGN( infoBackup, infoBackupLoadFileReconstruct(storageRepo(), INFO_BACKUP_PATH_FILE_STR, cipherTypeNone, NULL), "reconstruct"); TEST_RESULT_INT(infoBackupDataTotal(infoBackup), 1, "backup list contains 1 backup"); TEST_ASSIGN(backupData, infoBackupData(infoBackup, 0), "get the backup"); TEST_RESULT_STR_Z( backupData.backupLabel, "20190923-164324F", "backups not on disk removed, valid backup on disk added, manifest copy-only ignored"); harnessLogResult( "P00 WARN: invalid backup '20190818-084555F' cannot be added to current backups\n" "P00 WARN: invalid backup '20190818-084666F' cannot be added to current backups\n" "P00 WARN: invalid backup '20190818-084777F' cannot be added to current backups\n" "P00 WARN: backup '20190923-164324F' found in repository added to backup.info\n" "P00 WARN: backup '20190818-084502F' missing manifest removed from backup.info\n" "P00 WARN: backup '20190818-084502F_20190820-084502I' missing manifest removed from backup.info"); TEST_RESULT_VOID( storageCopyP( storageNewReadP(storageRepo(), strNew(STORAGE_REPO_BACKUP "/20190818-084444F/" BACKUP_MANIFEST_FILE INFO_COPY_EXT)), storageNewWriteP(storageRepoWrite(), strNew(STORAGE_REPO_BACKUP "/20190818-084444F/" BACKUP_MANIFEST_FILE))), "write manifest from copy-only for pgId=1"); TEST_RESULT_VOID( infoBackupSaveFile(infoBackup, storageRepoWrite(), INFO_BACKUP_PATH_FILE_STR, cipherTypeNone, NULL), "save updated backup info"); infoBackup = NULL; TEST_ASSIGN( infoBackup, infoBackupLoadFileReconstruct(storageRepo(), INFO_BACKUP_PATH_FILE_STR, cipherTypeNone, NULL), "reconstruct"); TEST_RESULT_STR_Z( strLstJoin(infoBackupDataLabelList(infoBackup, NULL), ", "), "20190818-084444F, 20190923-164324F", "previously ignored pgId=1 manifest copy-only now added before existing"); harnessLogResult( "P00 WARN: backup '20190818-084444F' found in repository added to backup.info\n" "P00 WARN: invalid backup '20190818-084555F' cannot be added to current backups\n" "P00 WARN: invalid backup '20190818-084666F' cannot be added to current backups\n" "P00 WARN: invalid backup '20190818-084777F' cannot be added to current backups"); } // ***************************************************************************************************************************** if (testBegin("infoBackupLoadFile() and infoBackupSaveFile()")) { TEST_ERROR_FMT( infoBackupLoadFile(storageTest, STRDEF(INFO_BACKUP_FILE), cipherTypeNone, NULL), FileMissingError, "unable to load info file '%s/backup.info' or '%s/backup.info.copy':\n" "FileMissingError: unable to open missing file '%s/backup.info' for read\n" "FileMissingError: unable to open missing file '%s/backup.info.copy' for read\n" "HINT: backup.info cannot be opened and is required to perform a backup.\n" "HINT: has a stanza-create been performed?", testPath(), testPath(), testPath(), testPath()); InfoBackup *infoBackup = infoBackupNew(PG_VERSION_10, 6569239123849665999, NULL); TEST_RESULT_VOID( infoBackupSaveFile(infoBackup, storageTest, STRDEF(INFO_BACKUP_FILE), cipherTypeNone, NULL), "save backup info"); TEST_ASSIGN(infoBackup, infoBackupLoadFile(storageTest, STRDEF(INFO_BACKUP_FILE), cipherTypeNone, NULL), "load main"); TEST_RESULT_UINT(infoPgDataCurrent(infoBackup->infoPg).systemId, 6569239123849665999, " check file loaded"); storageRemoveP(storageTest, STRDEF(INFO_BACKUP_FILE), .errorOnMissing = true); TEST_ASSIGN(infoBackup, infoBackupLoadFile(storageTest, STRDEF(INFO_BACKUP_FILE), cipherTypeNone, NULL), "load copy"); TEST_RESULT_UINT(infoPgDataCurrent(infoBackup->infoPg).systemId, 6569239123849665999, " check file loaded"); } } pgbackrest-release-2.24/test/src/module/info/infoPgTest.c000066400000000000000000000261261362531507100234320ustar00rootroot00000000000000/*********************************************************************************************************************************** Test PostgreSQL Info Handler ***********************************************************************************************************************************/ #include "common/io/bufferRead.h" #include "common/io/bufferWrite.h" #include "common/harnessInfo.h" /*********************************************************************************************************************************** Test save callback ***********************************************************************************************************************************/ static void testInfoBackupSaveCallback(void *data, const String *sectionNext, InfoSave *infoSaveData) { (void)data; if (infoSaveSection(infoSaveData, STRDEF("backup:current"), sectionNext)) infoSaveValue(infoSaveData, STRDEF("backup:current"), STRDEF("20161219-212741F"), STRDEF("{}")); if (infoSaveSection(infoSaveData, STRDEF("db:backup"), sectionNext)) infoSaveValue(infoSaveData, STRDEF("db:backup"), STRDEF("key"), STRDEF("value")); if (infoSaveSection(infoSaveData, STRDEF("later"), sectionNext)) infoSaveValue(infoSaveData, STRDEF("later"), STRDEF("key"), STRDEF("value")); } /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { // ***************************************************************************************************************************** if (testBegin("infoPgNew(), infoPgNewInternal(), infoPgSet()")) { InfoPg *infoPg = NULL; TEST_ASSIGN(infoPg, infoPgNew(infoPgBackup, NULL), "infoPgNew(cipherTypeNone, NULL)"); TEST_RESULT_INT(infoPgDataTotal(infoPg), 0, " 0 history"); TEST_RESULT_STR(infoCipherPass(infoPgInfo(infoPg)), NULL, " cipherPass NULL"); TEST_RESULT_INT(infoPgDataCurrentId(infoPg), 0, " 0 historyCurrent"); TEST_ASSIGN(infoPg, infoPgNew(infoPgArchive, strNew("123xyz")), "infoPgNew(cipherTypeAes256Cbc, 123xyz)"); TEST_RESULT_INT(infoPgDataTotal(infoPg), 0, " 0 history"); TEST_RESULT_STR_Z(infoCipherPass(infoPgInfo(infoPg)), "123xyz", " cipherPass set"); TEST_RESULT_INT(infoPgDataCurrentId(infoPg), 0, " 0 historyCurrent"); //-------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN( infoPg, infoPgSet(infoPgNew(infoPgArchive, NULL), infoPgArchive, PG_VERSION_94, 6569239123849665679), "infoPgSet - infoPgArchive"); TEST_RESULT_INT(infoPgDataTotal(infoPg), 1, " 1 history"); TEST_RESULT_INT(infoPgDataCurrentId(infoPg), 0, " 0 historyCurrent"); InfoPgData pgData = infoPgData(infoPg, infoPgDataCurrentId(infoPg)); TEST_RESULT_INT(pgData.id, 1, " id set"); TEST_RESULT_INT(pgData.systemId, 6569239123849665679, " system-id set"); TEST_RESULT_INT(pgData.version, PG_VERSION_94, " version set"); TEST_ASSIGN( infoPg, infoPgSet(infoPg, infoPgArchive, PG_VERSION_95, 6569239123849665999), "infoPgSet - infoPgArchive second db"); TEST_RESULT_INT(infoPgDataTotal(infoPg), 2, " 2 history"); TEST_RESULT_INT(infoPgDataCurrentId(infoPg), 0, " 0 historyCurrent"); pgData = infoPgData(infoPg, infoPgDataCurrentId(infoPg)); TEST_RESULT_INT(pgData.id, 2, " current id updated"); TEST_RESULT_INT(pgData.systemId, 6569239123849665999, " system-id updated"); TEST_RESULT_INT(pgData.version, PG_VERSION_95, " version updated"); TEST_RESULT_STR(infoCipherPass(infoPgInfo(infoPg)), NULL, " cipherPass not set"); //-------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN( infoPg, infoPgSet(infoPgNew(infoPgBackup, strNew("123xyz")), infoPgBackup, PG_VERSION_94, 6569239123849665679), "infoPgSet - infoPgBackup"); TEST_RESULT_INT(infoPgDataTotal(infoPg), 1, " 1 history"); TEST_RESULT_INT(infoPgDataCurrentId(infoPg), 0, " 0 historyCurrent"); pgData = infoPgData(infoPg, infoPgDataCurrentId(infoPg)); TEST_RESULT_INT(pgData.id, 1, " id set"); TEST_RESULT_INT(pgData.systemId, 6569239123849665679, " system-id set"); TEST_RESULT_INT(pgData.version, PG_VERSION_94, " version set"); TEST_RESULT_STR_Z(infoCipherPass(infoPgInfo(infoPg)), "123xyz", " cipherPass set"); } // ***************************************************************************************************************************** if (testBegin("infoPgNewLoad(), infoPgFree(), infoPgDataCurrent(), infoPgDataToLog(), infoPgAdd(), infoPgSave()")) { // Archive info //-------------------------------------------------------------------------------------------------------------------------- const Buffer *contentLoad = harnessInfoChecksumZ( "[backup:current]\n" "20161219-212741F={}\n" "\n" "[db]\n" "db-id=1\n" "db-system-id=6569239123849665679\n" "db-version=\"9.4\"\n" "\n" "[db:backup]\n" "key=value\n" "\n" "[db:history]\n" "1={\"db-id\":6569239123849665679,\"db-version\":\"9.4\"}\n" "\n" "[later]\n" "key=value\n"); String *callbackContent = strNew(""); InfoPg *infoPg = NULL; TEST_ASSIGN( infoPg, infoPgNewLoad(ioBufferReadNew(contentLoad), infoPgArchive, harnessInfoLoadNewCallback, callbackContent), "load file"); TEST_RESULT_STR_Z( callbackContent, "[backup:current] 20161219-212741F={}\n" "[db:backup] key=value\n" "[later] key=value\n", " check callback content"); TEST_RESULT_INT(lstSize(infoPg->history), 1, " history record added"); InfoPgData pgData = infoPgDataCurrent(infoPg); TEST_RESULT_INT(pgData.id, 1, " id set"); TEST_RESULT_INT(pgData.version, PG_VERSION_94, " version set"); TEST_RESULT_INT(pgData.systemId, 6569239123849665679, " system-id set"); TEST_RESULT_INT(infoPgDataTotal(infoPg), 1, " check pg data total"); TEST_RESULT_STR_Z(infoPgArchiveId(infoPg, 0), "9.4-1", " check pg archive id"); TEST_RESULT_PTR(infoPgCipherPass(infoPg), NULL, " no cipher passphrase"); Buffer *contentSave = bufNew(0); TEST_RESULT_VOID(infoPgSave(infoPg, ioBufferWriteNew(contentSave), testInfoBackupSaveCallback, (void *)1), "info save"); TEST_RESULT_STR(strNewBuf(contentSave), strNewBuf(contentLoad), " check save"); // Backup info //-------------------------------------------------------------------------------------------------------------------------- #define CONTENT_DB \ "[db]\n" \ "db-catalog-version=201510051\n" \ "db-control-version=942\n" \ "db-id=2\n" \ "db-system-id=6365925855999999999\n" \ "db-version=\"9.5\"\n" #define CONTENT_DB_HISTORY \ "\n" \ "[db:history]\n" \ "1={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6569239123849665679," \ "\"db-version\":\"9.4\"}\n" \ "2={\"db-catalog-version\":201510051,\"db-control-version\":942,\"db-system-id\":6365925855999999999," \ "\"db-version\":\"9.5\"}\n" contentLoad = harnessInfoChecksumZ( CONTENT_DB "\n" "[backup:current]\n" "20161219-212741F={}\n" CONTENT_DB_HISTORY); callbackContent = strNew(""); TEST_ASSIGN(infoPg, infoPgNewLoad(ioBufferReadNew(contentLoad), infoPgBackup, NULL, NULL), "load file"); TEST_RESULT_STR_Z(callbackContent, "", " check callback content"); TEST_RESULT_INT(infoPgDataTotal(infoPg), 2, " check pg data total"); pgData = infoPgDataCurrent(infoPg); TEST_RESULT_INT(pgData.id, 2, " id set"); TEST_RESULT_INT(pgData.version, PG_VERSION_95, " version set"); TEST_RESULT_INT(pgData.systemId, 6365925855999999999, " system-id set"); pgData = infoPgData(infoPg, 1); TEST_RESULT_INT(pgData.id, 1, " id set"); TEST_RESULT_INT(pgData.version, PG_VERSION_94, " version set"); TEST_RESULT_INT(pgData.systemId, 6569239123849665679, " system-id set"); contentSave = bufNew(0); TEST_RESULT_VOID(infoPgSave(infoPg, ioBufferWriteNew(contentSave), NULL, NULL), "info save"); TEST_RESULT_STR(strNewBuf(contentSave), strNewBuf(harnessInfoChecksumZ(CONTENT_DB CONTENT_DB_HISTORY)), " check save"); // infoPgAdd //-------------------------------------------------------------------------------------------------------------------------- pgData.id = 3; pgData.version = PG_VERSION_96; pgData.systemId = 6399999999999999999; TEST_RESULT_VOID(infoPgAdd(infoPg, &pgData), "infoPgAdd"); InfoPgData pgDataTest = infoPgDataCurrent(infoPg); TEST_RESULT_INT(pgDataTest.id, 3, " id set"); TEST_RESULT_INT(pgDataTest.version, PG_VERSION_96, " version set"); TEST_RESULT_INT(pgDataTest.systemId, 6399999999999999999, " system-id set"); // infoPgDataToLog //-------------------------------------------------------------------------------------------------------------------------- // test max values pgDataTest.id = (unsigned int)4294967295; pgDataTest.version = (unsigned int)4294967295; pgDataTest.systemId = 18446744073709551615U; TEST_RESULT_STR_Z( infoPgDataToLog(&pgDataTest), "{id: 4294967295, version: 4294967295, systemId: 18446744073709551615}", " check max format"); } } pgbackrest-release-2.24/test/src/module/info/infoTest.c000066400000000000000000000252601362531507100231410ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Info Handler ***********************************************************************************************************************************/ #include "common/crypto/cipherBlock.h" #include "common/io/bufferRead.h" #include "common/io/bufferWrite.h" #include "storage/posix/storage.h" #include "common/harnessInfo.h" /*********************************************************************************************************************************** Test load callback ***********************************************************************************************************************************/ typedef struct TestInfoLoad { unsigned int test; } TestInfoLoad; static bool testInfoLoadCallback(void *data, unsigned int try) { TestInfoLoad *testInfoLoad = (TestInfoLoad *)data; if (testInfoLoad->test == 1) { if (try == 0) THROW(ChecksumError, "checksum error"); else return false; } if (testInfoLoad->test == 2) { if (try < 2) THROW(FormatError, "format error"); else return false; } if (testInfoLoad->test == 3) { if (try == 0) THROW(FileMissingError, "file missing error"); else if (try == 1) THROW(ChecksumError, "checksum error\nHINT: have you checked the thing?"); else if (try == 2) THROW(FormatError, "format error"); else if (try == 3) THROW(FileMissingError, "file missing error"); else return false; } return true; } /*********************************************************************************************************************************** Test save callbacks ***********************************************************************************************************************************/ static void testInfoSaveCallback(void *data, const String *sectionNext, InfoSave *infoSaveData) { if (infoSaveSection(infoSaveData, STRDEF("c"), sectionNext)) infoSaveValue(infoSaveData, STRDEF("c"), strNew("key"), (String *)data); if (infoSaveSection(infoSaveData, STRDEF("d"), sectionNext)) infoSaveValue(infoSaveData, STRDEF("d"), strNew("key"), (String *)data); } /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { // ***************************************************************************************************************************** if (testBegin("infoNew() and infoNewInternal()")) { Info *info = NULL; TEST_ASSIGN(info, infoNew(strNew("123xyz")), "infoNew(cipher)"); TEST_RESULT_STR_Z(infoCipherPass(info), "123xyz", " cipherPass is set"); TEST_ASSIGN(info, infoNew(NULL), "infoNew(NULL)"); TEST_RESULT_PTR(infoCipherPass(info), NULL, " cipherPass is NULL"); } // ***************************************************************************************************************************** if (testBegin("infoNewLoad() and infoSave()")) { // Format error // -------------------------------------------------------------------------------------------------------------------------- const Buffer *contentLoad = BUFSTRDEF( "[backrest]\n" "backrest-format=4\n"); String *callbackContent = strNew(""); TEST_ERROR( infoNewLoad(ioBufferReadNew(contentLoad), harnessInfoLoadNewCallback, callbackContent), FormatError, "expected format 5 but found 4"); TEST_RESULT_STR_Z(callbackContent, "", " check callback content"); // Checksum not found // -------------------------------------------------------------------------------------------------------------------------- contentLoad = BUFSTRDEF( "[backrest]\n" "backrest-format=5\n"); TEST_ERROR( infoNewLoad(ioBufferReadNew(contentLoad), harnessInfoLoadNewCallback, callbackContent), ChecksumError, "invalid checksum, actual 'a3765a8c2c1e5d35274a0b0ce118f4031faff0bd' but no checksum found"); TEST_RESULT_STR_Z(callbackContent, "", " check callback content"); // Checksum invalid // -------------------------------------------------------------------------------------------------------------------------- contentLoad = BUFSTRDEF( "[backrest]\n" "backrest-checksum=\"BOGUS\"\n" "backrest-format=5\n" "backrest-version=\"2.17\"\n" "bogus=\"BOGUS\"\n"); TEST_ERROR( infoNewLoad(ioBufferReadNew(contentLoad), harnessInfoLoadNewCallback, callbackContent), ChecksumError, "invalid checksum, actual 'fe989a75dcf7a0261e57d210707c0db741462763' but expected 'BOGUS'"); TEST_RESULT_STR_Z(callbackContent, "", " check callback content"); // Crypto expected // -------------------------------------------------------------------------------------------------------------------------- contentLoad = BUFSTRDEF( "[backrest]\n" "backrest-checksum=\"BOGUS\"\n" "backrest-format=5\n" "backrest-version=\"2.17\"\n"); IoRead *read = ioBufferReadNew(contentLoad); ioFilterGroupAdd(ioReadFilterGroup(read), cipherBlockNew(cipherModeDecrypt, cipherTypeAes256Cbc, BUFSTRDEF("X"), NULL)); TEST_ERROR( infoNewLoad(read, harnessInfoLoadNewCallback, callbackContent), CryptoError, "cipher header invalid\n" "HINT: is or was the repo encrypted?"); TEST_RESULT_STR_Z(callbackContent, "", " check callback content"); // Base file with other content in cipher (this is to test that future additions don't break the code) // -------------------------------------------------------------------------------------------------------------------------- contentLoad = harnessInfoChecksumZ( "[cipher]\n" "cipher-other=1\n"); Info *info = NULL; callbackContent = strNew(""); TEST_ASSIGN( info, infoNewLoad(ioBufferReadNew(contentLoad), harnessInfoLoadNewCallback, callbackContent), "info with other cipher"); TEST_RESULT_STR_Z(callbackContent, "", " check callback content"); TEST_RESULT_PTR(infoCipherPass(info), NULL, " check cipher pass not set"); // Base file with content // -------------------------------------------------------------------------------------------------------------------------- contentLoad = harnessInfoChecksumZ( "[c]\n" "key=1\n" "\n" "[d]\n" "key=1\n"); callbackContent = strNew(""); TEST_ASSIGN( info, infoNewLoad(ioBufferReadNew(contentLoad), harnessInfoLoadNewCallback, callbackContent), "info with content"); TEST_RESULT_STR_Z(callbackContent, "[c] key=1\n[d] key=1\n", " check callback content"); TEST_RESULT_PTR(infoCipherPass(info), NULL, " check cipher pass not set"); Buffer *contentSave = bufNew(0); TEST_RESULT_VOID(infoSave(info, ioBufferWriteNew(contentSave), testInfoSaveCallback, strNew("1")), "info save"); TEST_RESULT_STR(strNewBuf(contentSave), strNewBuf(contentLoad), " check save"); // File with content and cipher // -------------------------------------------------------------------------------------------------------------------------- contentLoad = harnessInfoChecksumZ( "[c]\n" "key=1\n" "\n" "[cipher]\n" "cipher-pass=\"somepass\"\n" "\n" "[d]\n" "key=1\n"); callbackContent = strNew(""); TEST_ASSIGN( info, infoNewLoad(ioBufferReadNew(contentLoad), harnessInfoLoadNewCallback, callbackContent), "info with content and cipher"); TEST_RESULT_STR_Z(callbackContent, "[c] key=1\n[d] key=1\n", " check callback content"); TEST_RESULT_STR_Z(infoCipherPass(info), "somepass", " check cipher pass set"); TEST_RESULT_STR_Z(infoBackrestVersion(info), PROJECT_VERSION, " check backrest version"); contentSave = bufNew(0); TEST_RESULT_VOID(infoSave(info, ioBufferWriteNew(contentSave), testInfoSaveCallback, strNew("1")), "info save"); TEST_RESULT_STR(strNewBuf(contentSave), strNewBuf(contentLoad), " check save"); } // ***************************************************************************************************************************** if (testBegin("infoLoad()")) { // One error //-------------------------------------------------------------------------------------------------------------------------- TestInfoLoad testInfoLoad = {.test = 1}; TEST_ERROR( infoLoad(STRDEF("unable to load info file"), testInfoLoadCallback, &testInfoLoad), ChecksumError, "unable to load info file:\n" "ChecksumError: checksum error"); // Two errors (same error) //-------------------------------------------------------------------------------------------------------------------------- testInfoLoad = (TestInfoLoad){.test = 2}; TEST_ERROR( infoLoad(STRDEF("unable to load info file(s)"), testInfoLoadCallback, &testInfoLoad), FormatError, "unable to load info file(s):\n" "FormatError: format error\n" "FormatError: format error"); // Four errors (mixed) //-------------------------------------------------------------------------------------------------------------------------- testInfoLoad = (TestInfoLoad){.test = 3}; TEST_ERROR( infoLoad(STRDEF("unable to load info file(s)"), testInfoLoadCallback, &testInfoLoad), FileOpenError, "unable to load info file(s):\n" "FileMissingError: file missing error\n" "ChecksumError: checksum error\n" "HINT: have you checked the thing?\n" "FormatError: format error\n" "FileMissingError: file missing error"); // Success //-------------------------------------------------------------------------------------------------------------------------- testInfoLoad = (TestInfoLoad){0}; infoLoad(STRDEF("SHOULD BE NO ERROR"), testInfoLoadCallback, &testInfoLoad); } } pgbackrest-release-2.24/test/src/module/info/manifestTest.c000066400000000000000000003721731362531507100240240ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Backup Manifest Handler ***********************************************************************************************************************************/ #include #include "common/io/bufferRead.h" #include "common/io/bufferWrite.h" #include "info/infoBackup.h" #include "storage/posix/storage.h" #include "common/harnessInfo.h" /*********************************************************************************************************************************** Special string constants ***********************************************************************************************************************************/ #define SHRUG_EMOJI "¯\\_(ツ)_/¯" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { Storage *storageTest = storagePosixNew( strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); // ***************************************************************************************************************************** if (testBegin("struct sizes")) { // Make sure the size of structs doesn't change without us knowing about it // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_UINT(sizeof(ManifestLoadFound), TEST_64BIT() ? 1 : 1, "check size of ManifestLoadFound"); TEST_RESULT_UINT(sizeof(ManifestPath), TEST_64BIT() ? 32 : 16, "check size of ManifestPath"); TEST_RESULT_UINT(sizeof(ManifestFile), TEST_64BIT() ? 120 : 92, "check size of ManifestFile"); } // ***************************************************************************************************************************** if (testBegin("manifestNewBuild()")) { #define TEST_MANIFEST_HEADER \ "[backup]\n" \ "backup-label=null\n" \ "backup-timestamp-copy-start=0\n" \ "backup-timestamp-start=0\n" \ "backup-timestamp-stop=0\n" \ "backup-type=\"full\"\n" #define TEST_MANIFEST_DB_83 \ "\n" \ "[backup:db]\n" \ "db-catalog-version=200711281\n" \ "db-control-version=833\n" \ "db-id=0\n" \ "db-system-id=0\n" \ "db-version=\"8.3\"\n" #define TEST_MANIFEST_DB_84 \ "\n" \ "[backup:db]\n" \ "db-catalog-version=200904091\n" \ "db-control-version=843\n" \ "db-id=0\n" \ "db-system-id=0\n" \ "db-version=\"8.4\"\n" #define TEST_MANIFEST_DB_90 \ "\n" \ "[backup:db]\n" \ "db-catalog-version=201008051\n" \ "db-control-version=903\n" \ "db-id=0\n" \ "db-system-id=0\n" \ "db-version=\"9.0\"\n" #define TEST_MANIFEST_DB_91 \ "\n" \ "[backup:db]\n" \ "db-catalog-version=201105231\n" \ "db-control-version=903\n" \ "db-id=0\n" \ "db-system-id=0\n" \ "db-version=\"9.1\"\n" #define TEST_MANIFEST_DB_92 \ "\n" \ "[backup:db]\n" \ "db-catalog-version=201204301\n" \ "db-control-version=922\n" \ "db-id=0\n" \ "db-system-id=0\n" \ "db-version=\"9.2\"\n" #define TEST_MANIFEST_DB_94 \ "\n" \ "[backup:db]\n" \ "db-catalog-version=201409291\n" \ "db-control-version=942\n" \ "db-id=0\n" \ "db-system-id=0\n" \ "db-version=\"9.4\"\n" #define TEST_MANIFEST_DB_12 \ "\n" \ "[backup:db]\n" \ "db-catalog-version=201909212\n" \ "db-control-version=1201\n" \ "db-id=0\n" \ "db-system-id=0\n" \ "db-version=\"12\"\n" #define TEST_MANIFEST_OPTION_ALL \ "\n" \ "[backup:option]\n" \ "option-archive-check=false\n" \ "option-archive-copy=false\n" \ "option-checksum-page=false\n" \ "option-compress=false\n" \ "option-hardlink=false\n" \ "option-online=false\n" #define TEST_MANIFEST_OPTION_ARCHIVE \ "\n" \ "[backup:option]\n" \ "option-archive-check=false\n" \ "option-archive-copy=false\n" #define TEST_MANIFEST_OPTION_CHECKSUM_PAGE_FALSE \ "option-checksum-page=false\n" #define TEST_MANIFEST_OPTION_CHECKSUM_PAGE_TRUE \ "option-checksum-page=true\n" #define TEST_MANIFEST_OPTION_ONLINE_FALSE \ "option-compress=false\n" \ "option-hardlink=false\n" \ "option-online=false\n" #define TEST_MANIFEST_OPTION_ONLINE_TRUE \ "option-compress=false\n" \ "option-hardlink=false\n" \ "option-online=true\n" #define TEST_MANIFEST_FILE_DEFAULT_PRIMARY_FALSE \ "\n" \ "[target:file:default]\n" \ "group=\"{[group]}\"\n" \ "master=false\n" \ "mode=\"0400\"\n" \ "user=\"{[user]}\"\n" #define TEST_MANIFEST_FILE_DEFAULT_PRIMARY_TRUE \ "\n" \ "[target:file:default]\n" \ "group=\"{[group]}\"\n" \ "master=true\n" \ "mode=\"0400\"\n" \ "user=\"{[user]}\"\n" #define TEST_MANIFEST_LINK_DEFAULT \ "\n" \ "[target:link:default]\n" \ "group=\"{[group]}\"\n" \ "user=\"{[user]}\"\n" #define TEST_MANIFEST_PATH_DEFAULT \ "\n" \ "[target:path:default]\n" \ "group=\"{[group]}\"\n" \ "mode=\"0700\"\n" \ "user=\"{[user]}\"\n" storagePathCreateP(storageTest, strNew("pg"), .mode = 0700, .noParentCreate = true); Storage *storagePg = storagePosixNew( strNewFmt("%s/pg", testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, false, NULL); Storage *storagePgWrite = storagePosixNew( strNewFmt("%s/pg", testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("8.3 with custom exclusions and special file"); // Version storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_FILE_PGVERSION), .modeFile = 0400, .timeModified = 1565282100), BUFSTRDEF("8.3\n")); // Create special file String *specialFile = strNewFmt("%s/pg/testpipe", testPath()); TEST_RESULT_INT( system(strPtr(strNewFmt("mkfifo -m 666 %s", strPtr(specialFile)))), 0, "create pipe"); // Files that will always be ignored storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_FILE_BACKUPLABELOLD), .modeFile = 0400, .timeModified = 1565282101), NULL); storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_FILE_POSTMASTEROPTS), .modeFile = 0400, .timeModified = 1565282101), NULL); storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_FILE_POSTMASTERPID), .modeFile = 0400, .timeModified = 1565282101), NULL); storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_FILE_RECOVERYCONF), .modeFile = 0400, .timeModified = 1565282101), NULL); storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_FILE_RECOVERYDONE), .modeFile = 0400, .timeModified = 1565282101), NULL); // Directories that will always be ignored storagePathCreateP(storagePgWrite, strNew(PG_PREFIX_PGSQLTMP), .mode = 0700, .noParentCreate = true); storagePathCreateP(storagePgWrite, strNew(PG_PREFIX_PGSQLTMP "2"), .mode = 0700, .noParentCreate = true); // Directories under which files will be ignored (some depending on the version) storagePathCreateP(storagePgWrite, strNew(PG_PATH_PGDYNSHMEM), .mode = 0700, .noParentCreate = true); storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_PATH_PGDYNSHMEM "/" BOGUS_STR), .modeFile = 0400, .timeModified = 1565282101), NULL); storagePathCreateP(storagePgWrite, strNew(PG_PATH_PGNOTIFY), .mode = 0700, .noParentCreate = true); storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_PATH_PGNOTIFY "/" BOGUS_STR), .modeFile = 0400, .timeModified = 1565282102), NULL); storagePathCreateP(storagePgWrite, strNew(PG_PATH_PGREPLSLOT), .mode = 0700, .noParentCreate = true); storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_PATH_PGREPLSLOT "/" BOGUS_STR), .modeFile = 0400, .timeModified = 1565282103), NULL); storagePathCreateP(storagePgWrite, strNew(PG_PATH_PGSERIAL), .mode = 0700, .noParentCreate = true); storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_PATH_PGSERIAL "/" BOGUS_STR), .modeFile = 0400, .timeModified = 1565282104), NULL); storagePathCreateP(storagePgWrite, strNew(PG_PATH_PGSNAPSHOTS), .mode = 0700, .noParentCreate = true); storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_PATH_PGSNAPSHOTS "/" BOGUS_STR), .modeFile = 0400, .timeModified = 1565282105), BUFSTRDEF("test")); storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_PATH_PGSTATTMP "/" BOGUS_STR), .modeFile = 0640, .timeModified = 1565282106), NULL); storagePathCreateP(storagePgWrite, strNew(PG_PATH_PGSUBTRANS), .mode = 0700, .noParentCreate = true); storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_PATH_PGSUBTRANS "/" BOGUS_STR), .modeFile = 0400, .timeModified = 1565282107), NULL); // WAL directory not ignored when offline storagePathCreateP(storagePgWrite, strNew("pg_xlog"), .mode = 0700, .noParentCreate = true); storagePutP( storageNewWriteP(storagePgWrite, strNew("pg_xlog/" BOGUS_STR), .modeFile = 0400, .timeModified = 1565282108), NULL); storagePathCreateP(storagePgWrite, strNew("pg_xlog/archive_status"), .mode = 0700, .noParentCreate = true); storagePutP( storageNewWriteP(storagePgWrite, strNew("pg_xlog/archive_status/" BOGUS_STR), .modeFile = 0400, .timeModified = 1565282108), NULL); // global directory storagePathCreateP(storagePgWrite, STRDEF(PG_PATH_GLOBAL), .mode = 0700, .noParentCreate = true); storagePutP(storageNewWriteP(storagePgWrite, STRDEF(PG_PATH_GLOBAL "/" PG_FILE_PGINTERNALINIT)), NULL); storagePutP(storageNewWriteP(storagePgWrite, STRDEF(PG_PATH_GLOBAL "/" PG_FILE_PGINTERNALINIT ".1")), NULL); storagePutP( storageNewWriteP(storagePgWrite, STRDEF(PG_PATH_GLOBAL "/" PG_FILE_PGINTERNALINIT ".allow"), .modeFile = 0400, .timeModified = 1565282114), NULL); storagePutP( storageNewWriteP(storagePgWrite, STRDEF(PG_PATH_GLOBAL "/t1_1"), .modeFile = 0400, .timeModified = 1565282114), NULL); // base/1 directory storagePathCreateP(storagePgWrite, STRDEF(PG_PATH_BASE), .mode = 0700, .noParentCreate = true); storagePathCreateP(storagePgWrite, STRDEF(PG_PATH_BASE "/1"), .mode = 0700, .noParentCreate = true); StringList *exclusionList = strLstNew(); strLstAddZ(exclusionList, PG_PATH_GLOBAL "/" PG_FILE_PGINTERNALINIT); strLstAddZ(exclusionList, "bogus"); strLstAddZ(exclusionList, PG_PATH_BASE "/"); strLstAddZ(exclusionList, "bogus/"); Manifest *manifest = NULL; TEST_ASSIGN(manifest, manifestNewBuild(storagePg, PG_VERSION_83, false, false, exclusionList, NULL), "build manifest"); Buffer *contentSave = bufNew(0); TEST_RESULT_VOID(manifestSave(manifest, ioBufferWriteNew(contentSave)), "save manifest"); TEST_RESULT_STR( strNewBuf(contentSave), strNewBuf(harnessInfoChecksumZ(hrnReplaceKey( TEST_MANIFEST_HEADER TEST_MANIFEST_DB_83 TEST_MANIFEST_OPTION_ALL "\n" "[backup:target]\n" "pg_data={\"path\":\"{[path]}/pg\",\"type\":\"path\"}\n" "\n" "[target:file]\n" "pg_data/PG_VERSION={\"size\":4,\"timestamp\":1565282100}\n" "pg_data/global/pg_internal.init.allow={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/global/t1_1={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/pg_dynshmem/BOGUS={\"size\":0,\"timestamp\":1565282101}\n" "pg_data/pg_notify/BOGUS={\"size\":0,\"timestamp\":1565282102}\n" "pg_data/pg_replslot/BOGUS={\"size\":0,\"timestamp\":1565282103}\n" "pg_data/pg_serial/BOGUS={\"size\":0,\"timestamp\":1565282104}\n" "pg_data/pg_snapshots/BOGUS={\"size\":4,\"timestamp\":1565282105}\n" "pg_data/pg_stat_tmp/BOGUS={\"mode\":\"0640\",\"size\":0,\"timestamp\":1565282106}\n" "pg_data/pg_xlog/BOGUS={\"size\":0,\"timestamp\":1565282108}\n" "pg_data/pg_xlog/archive_status/BOGUS={\"size\":0,\"timestamp\":1565282108}\n" TEST_MANIFEST_FILE_DEFAULT_PRIMARY_TRUE "\n" "[target:path]\n" "pg_data={}\n" "pg_data/base={}\n" "pg_data/global={}\n" "pg_data/pg_dynshmem={}\n" "pg_data/pg_notify={}\n" "pg_data/pg_replslot={}\n" "pg_data/pg_serial={}\n" "pg_data/pg_snapshots={}\n" "pg_data/pg_stat_tmp={\"mode\":\"0750\"}\n" "pg_data/pg_subtrans={}\n" "pg_data/pg_xlog={}\n" "pg_data/pg_xlog/archive_status={}\n" TEST_MANIFEST_PATH_DEFAULT))), "check manifest"); TEST_RESULT_LOG( "P00 INFO: exclude contents of '{[path]}/pg/base' from backup using 'base/' exclusion\n" "P00 INFO: exclude '{[path]}/pg/global/pg_internal.init' from backup using 'global/pg_internal.init' exclusion\n" "P00 WARN: exclude special file '{[path]}/pg/testpipe' from backup"); storageRemoveP(storageTest, specialFile, .errorOnMissing = true); // Set up for manifestNewBuild tests // ------------------------------------------------------------------------------------------------------------------------- // Temp relations to ignore storagePutP(storageNewWriteP(storagePgWrite, STRDEF(PG_PATH_BASE "/1/t1_1"), .modeFile = 0400, .timeModified = 1565282113), NULL); storagePutP(storageNewWriteP(storagePgWrite, STRDEF(PG_PATH_BASE "/1/t1_1.1"), .modeFile = 0400, .timeModified = 1565282113), NULL); storagePutP(storageNewWriteP(storagePgWrite, STRDEF(PG_PATH_BASE "/1/t8888888_8888888_vm"), .modeFile = 0400, .timeModified = 1565282113), NULL); storagePutP(storageNewWriteP(storagePgWrite, STRDEF(PG_PATH_BASE "/1/t8888888_8888888_vm.999999"), .modeFile = 0400, .timeModified = 1565282113), NULL); // Unlogged relations (pgVersion > 9.1) storagePutP(storageNewWriteP(storagePgWrite, STRDEF(PG_PATH_BASE "/1/555"), .modeFile = 0400, .timeModified = 1565282114), NULL); // skip file because there is an _init storagePutP( storageNewWriteP(storagePgWrite, STRDEF(PG_PATH_BASE "/1/555_fsm"), .modeFile = 0400, .timeModified = 1565282114), NULL); // skip file because there is an _init storagePutP( storageNewWriteP(storagePgWrite, STRDEF(PG_PATH_BASE "/1/555_vm.1"), .modeFile = 0400, .timeModified = 1565282114), NULL); // skip file because there is an _init storagePutP( storageNewWriteP(storagePgWrite, STRDEF(PG_PATH_BASE "/1/555_init"), .modeFile = 0400, .timeModified = 1565282114), NULL); // do not skip _init storagePutP( storageNewWriteP(storagePgWrite, STRDEF(PG_PATH_BASE "/1/555_init.1"), .modeFile = 0400, .timeModified = 1565282114), NULL); // do not skip _init with segment storagePutP( storageNewWriteP(storagePgWrite, STRDEF(PG_PATH_BASE "/1/555_vm.1_vm"), .modeFile = 0400, .timeModified = 1565282114), NULL); // do not skip files that do not have valid endings as we are not sure what they are // Config directory and file links storagePathCreateP(storageTest, STRDEF("config"), .mode = 0700); THROW_ON_SYS_ERROR( symlink("../config/postgresql.conf", strPtr(strNewFmt("%s/pg/postgresql.conf", testPath()))) == -1, FileOpenError, "unable to create symlink"); storagePutP( storageNewWriteP(storageTest, strNew("config/postgresql.conf"), .modeFile = 0400, .timeModified = 1565282116), BUFSTRDEF("POSTGRESQLCONF")); THROW_ON_SYS_ERROR( symlink("../config/pg_hba.conf", strPtr(strNewFmt("%s/pg/pg_hba.conf", testPath()))) == -1, FileOpenError, "unable to create symlink"); storagePutP( storageNewWriteP(storageTest, strNew("config/pg_hba.conf"), .modeFile = 0400, .timeModified = 1565282117), BUFSTRDEF("PGHBACONF")); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("manifest with all features - 8.4, online"); // Version storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_FILE_PGVERSION), .modeFile = 0400, .timeModified = 1565282100), BUFSTRDEF("8.4\n")); // Tablespace 1 (old tablespace dir format) storagePathCreateP(storageTest, STRDEF("ts/1"), .mode = 0777); storagePathCreateP(storageTest, STRDEF("ts/1/1"), .mode = 0700); storagePathCreateP(storagePgWrite, MANIFEST_TARGET_PGTBLSPC_STR, .mode = 0700, .noParentCreate = true); THROW_ON_SYS_ERROR( symlink("../../ts/1", strPtr(strNewFmt("%s/pg/pg_tblspc/1", testPath()))) == -1, FileOpenError, "unable to create symlink"); storagePutP( storageNewWriteP( storagePgWrite, strNew("pg_tblspc/1/1/16384"), .modeFile = 0400, .timeModified = 1565282115), BUFSTRDEF("TESTDATA")); storagePutP( storageNewWriteP( storagePgWrite, strNew("pg_tblspc/1/1/t123_123_fsm"), .modeFile = 0400, .timeModified = 1565282115), BUFSTRDEF("TEMP_RELATION")); // Test manifest - mode stored for shared cluster tablespace dir, pg_xlog contents ignored because online TEST_ASSIGN(manifest, manifestNewBuild(storagePg, PG_VERSION_84, true, false, NULL, NULL), "build manifest"); contentSave = bufNew(0); TEST_RESULT_VOID(manifestSave(manifest, ioBufferWriteNew(contentSave)), "save manifest"); TEST_RESULT_STR( strNewBuf(contentSave), strNewBuf(harnessInfoChecksumZ(hrnReplaceKey( TEST_MANIFEST_HEADER TEST_MANIFEST_DB_84 TEST_MANIFEST_OPTION_ARCHIVE TEST_MANIFEST_OPTION_CHECKSUM_PAGE_FALSE TEST_MANIFEST_OPTION_ONLINE_TRUE "\n" "[backup:target]\n" "pg_data={\"path\":\"{[path]}/pg\",\"type\":\"path\"}\n" "pg_data/pg_hba.conf={\"file\":\"pg_hba.conf\",\"path\":\"../config\",\"type\":\"link\"}\n" "pg_data/postgresql.conf={\"file\":\"postgresql.conf\",\"path\":\"../config\",\"type\":\"link\"}\n" "pg_tblspc/1={\"path\":\"../../ts/1\",\"tablespace-id\":\"1\",\"tablespace-name\":\"ts1\",\"type\":\"link\"}\n" "\n" "[target:file]\n" "pg_data/PG_VERSION={\"master\":true,\"size\":4,\"timestamp\":1565282100}\n" "pg_data/base/1/555={\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_fsm={\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_init={\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_init.1={\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_vm.1={\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_vm.1_vm={\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/t1_1={\"size\":0,\"timestamp\":1565282113}\n" "pg_data/base/1/t1_1.1={\"size\":0,\"timestamp\":1565282113}\n" "pg_data/base/1/t8888888_8888888_vm={\"size\":0,\"timestamp\":1565282113}\n" "pg_data/base/1/t8888888_8888888_vm.999999={\"size\":0,\"timestamp\":1565282113}\n" "pg_data/global/pg_internal.init.allow={\"size\":0,\"timestamp\":1565282114}\n" "pg_data/global/t1_1={\"size\":0,\"timestamp\":1565282114}\n" "pg_data/pg_dynshmem/BOGUS={\"master\":true,\"size\":0,\"timestamp\":1565282101}\n" "pg_data/pg_hba.conf={\"master\":true,\"size\":9,\"timestamp\":1565282117}\n" "pg_data/pg_notify/BOGUS={\"master\":true,\"size\":0,\"timestamp\":1565282102}\n" "pg_data/pg_replslot/BOGUS={\"master\":true,\"size\":0,\"timestamp\":1565282103}\n" "pg_data/pg_serial/BOGUS={\"master\":true,\"size\":0,\"timestamp\":1565282104}\n" "pg_data/pg_snapshots/BOGUS={\"master\":true,\"size\":4,\"timestamp\":1565282105}\n" "pg_data/postgresql.conf={\"master\":true,\"size\":14,\"timestamp\":1565282116}\n" "pg_tblspc/1/1/16384={\"size\":8,\"timestamp\":1565282115}\n" "pg_tblspc/1/1/t123_123_fsm={\"size\":13,\"timestamp\":1565282115}\n" TEST_MANIFEST_FILE_DEFAULT_PRIMARY_FALSE "\n" "[target:link]\n" "pg_data/pg_hba.conf={\"destination\":\"../config/pg_hba.conf\"}\n" "pg_data/pg_tblspc/1={\"destination\":\"../../ts/1\"}\n" "pg_data/postgresql.conf={\"destination\":\"../config/postgresql.conf\"}\n" TEST_MANIFEST_LINK_DEFAULT "\n" "[target:path]\n" "pg_data={}\n" "pg_data/base={}\n" "pg_data/base/1={}\n" "pg_data/global={}\n" "pg_data/pg_dynshmem={}\n" "pg_data/pg_notify={}\n" "pg_data/pg_replslot={}\n" "pg_data/pg_serial={}\n" "pg_data/pg_snapshots={}\n" "pg_data/pg_stat_tmp={\"mode\":\"0750\"}\n" "pg_data/pg_subtrans={}\n" "pg_data/pg_tblspc={}\n" "pg_data/pg_xlog={}\n" "pg_data/pg_xlog/archive_status={}\n" "pg_tblspc={}\n" "pg_tblspc/1={\"mode\":\"0777\"}\n" "pg_tblspc/1/1={}\n" TEST_MANIFEST_PATH_DEFAULT))), "check manifest"); // Remove directory storagePathRemoveP(storageTest, STRDEF("ts/1/1"), .recurse = true); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("manifest with all features - 9.0"); // Version storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_FILE_PGVERSION), .modeFile = 0400, .timeModified = 1565282100), BUFSTRDEF("9.0\n")); // Make 'pg_xlog/archive_status' a link (if other links in the pg_xlog dir (should not be), they will be followed and added // when online but archive_status (and pg_xlog), whether a link of not, will will only be followed if offline) storagePathRemoveP(storagePgWrite, strNew("pg_xlog/archive_status"), .recurse = true); storagePathCreateP(storageTest, STRDEF("archivestatus"), .mode = 0777); THROW_ON_SYS_ERROR( symlink("../../archivestatus", strPtr(strNewFmt("%s/pg/pg_xlog/archive_status", testPath()))) == -1, FileOpenError, "unable to create symlink"); storagePutP( storageNewWriteP( storagePgWrite, strNew("pg_xlog/archive_status/" BOGUS_STR), .modeFile = 0400, .timeModified = 1565282120), BUFSTRDEF("TESTDATA")); // Tablespace 1 storagePathCreateP(storageTest, STRDEF("ts/1/PG_9.0_201008051/1"), .mode = 0700); storagePutP( storageNewWriteP( storagePgWrite, strNew("pg_tblspc/1/PG_9.0_201008051/1/16384"), .modeFile = 0400, .timeModified = 1565282115), BUFSTRDEF("TESTDATA")); storagePutP( storageNewWriteP( storagePgWrite, strNew("pg_tblspc/1/PG_9.0_201008051/1/t123_123_fsm"), .modeFile = 0400, .timeModified = 1565282115), BUFSTRDEF("IGNORE_TEMP_RELATION")); // Add tablespaceList with error (no name) VariantList *tablespaceList = varLstNew(); VariantList *tablespace = varLstNew(); varLstAdd(tablespace, varNewUInt(2)); // tablespaceId - does not exist so will bypass varLstAdd(tablespace, varNewStrZ("tblspc2")); // tablespaceName varLstAdd(tablespaceList, varNewVarLst(tablespace)); // Test tablespace error TEST_ERROR(manifestNewBuild(storagePg, PG_VERSION_90, false, false, NULL, tablespaceList), AssertError, "tablespace with oid 1 not found in tablespace map\n" "HINT: was a tablespace created or dropped during the backup?"); // Add a tablespace to tablespaceList that does exist tablespace = varLstNew(); varLstAdd(tablespace, varNewUInt(1)); // tablespaceId - exists so will show up in manifest with tablespaceName varLstAdd(tablespace, varNewStrZ("tblspc1")); // tablespaceName varLstAdd(tablespaceList, varNewVarLst(tablespace)); // Test manifest - temp tables and pg_notify files ignored TEST_ASSIGN(manifest, manifestNewBuild(storagePg, PG_VERSION_90, false, false, NULL, tablespaceList), "build manifest"); contentSave = bufNew(0); TEST_RESULT_VOID(manifestSave(manifest, ioBufferWriteNew(contentSave)), "save manifest"); TEST_RESULT_STR( strNewBuf(contentSave), strNewBuf(harnessInfoChecksumZ(hrnReplaceKey( TEST_MANIFEST_HEADER TEST_MANIFEST_DB_90 TEST_MANIFEST_OPTION_ALL "\n" "[backup:target]\n" "pg_data={\"path\":\"{[path]}/pg\",\"type\":\"path\"}\n" "pg_data/pg_hba.conf={\"file\":\"pg_hba.conf\",\"path\":\"../config\",\"type\":\"link\"}\n" "pg_data/pg_xlog/archive_status={\"path\":\"../../archivestatus\",\"type\":\"link\"}\n" "pg_data/postgresql.conf={\"file\":\"postgresql.conf\",\"path\":\"../config\",\"type\":\"link\"}\n" "pg_tblspc/1={\"path\":\"../../ts/1\",\"tablespace-id\":\"1\",\"tablespace-name\":\"tblspc1\",\"type\":\"link\"}\n" "\n" "[target:file]\n" "pg_data/PG_VERSION={\"size\":4,\"timestamp\":1565282100}\n" "pg_data/base/1/555={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_fsm={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_init={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_init.1={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_vm.1={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_vm.1_vm={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/global/pg_internal.init.allow={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/pg_dynshmem/BOGUS={\"size\":0,\"timestamp\":1565282101}\n" "pg_data/pg_hba.conf={\"size\":9,\"timestamp\":1565282117}\n" "pg_data/pg_replslot/BOGUS={\"size\":0,\"timestamp\":1565282103}\n" "pg_data/pg_serial/BOGUS={\"size\":0,\"timestamp\":1565282104}\n" "pg_data/pg_snapshots/BOGUS={\"size\":4,\"timestamp\":1565282105}\n" "pg_data/pg_xlog/BOGUS={\"size\":0,\"timestamp\":1565282108}\n" "pg_data/pg_xlog/archive_status/BOGUS={\"size\":8,\"timestamp\":1565282120}\n" "pg_data/postgresql.conf={\"size\":14,\"timestamp\":1565282116}\n" "pg_tblspc/1/PG_9.0_201008051/1/16384={\"master\":false,\"size\":8,\"timestamp\":1565282115}\n" TEST_MANIFEST_FILE_DEFAULT_PRIMARY_TRUE "\n" "[target:link]\n" "pg_data/pg_hba.conf={\"destination\":\"../config/pg_hba.conf\"}\n" "pg_data/pg_tblspc/1={\"destination\":\"../../ts/1\"}\n" "pg_data/pg_xlog/archive_status={\"destination\":\"../../archivestatus\"}\n" "pg_data/postgresql.conf={\"destination\":\"../config/postgresql.conf\"}\n" TEST_MANIFEST_LINK_DEFAULT "\n" "[target:path]\n" "pg_data={}\n" "pg_data/base={}\n" "pg_data/base/1={}\n" "pg_data/global={}\n" "pg_data/pg_dynshmem={}\n" "pg_data/pg_notify={}\n" "pg_data/pg_replslot={}\n" "pg_data/pg_serial={}\n" "pg_data/pg_snapshots={}\n" "pg_data/pg_stat_tmp={\"mode\":\"0750\"}\n" "pg_data/pg_subtrans={}\n" "pg_data/pg_tblspc={}\n" "pg_data/pg_xlog={}\n" "pg_data/pg_xlog/archive_status={\"mode\":\"0777\"}\n" "pg_tblspc={}\n" "pg_tblspc/1={}\n" "pg_tblspc/1/PG_9.0_201008051={}\n" "pg_tblspc/1/PG_9.0_201008051/1={}\n" TEST_MANIFEST_PATH_DEFAULT))), "check manifest"); // Remove symlinks and directories THROW_ON_SYS_ERROR( unlink(strPtr(strNewFmt("%s/pg/pg_tblspc/1", testPath()))) == -1, FileRemoveError, "unable to remove symlink"); storagePathRemoveP(storageTest, STRDEF("ts/1/PG_9.0_201008051"), .recurse = true); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("manifest with all features - 9.1, online"); // Version storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_FILE_PGVERSION), .modeFile = 0400, .timeModified = 1565282100), BUFSTRDEF("9.1\n")); // Create a path other than archive_status under pg_xlog for code coverage storagePathCreateP(storagePgWrite, strNew("pg_xlog/somepath"), .mode = 0700, .noParentCreate = true); // Add data to pg_wal to ensure it is not ignored (online or offline) until >= pgVersion 10 (file in pg_xlog log is ignored) storagePathCreateP(storagePgWrite, strNew("pg_wal"), .mode = 0700, .noParentCreate = true); storagePutP( storageNewWriteP( storagePgWrite, strNew("pg_wal/000000010000000000000001"), .modeFile = 0400, .timeModified = 1565282120), BUFSTRDEF("WALDATA")); // Test manifest - temp tables, unlogged tables, pg_serial and pg_xlog files ignored TEST_ASSIGN(manifest, manifestNewBuild(storagePg, PG_VERSION_91, true, false, NULL, NULL), "build manifest"); contentSave = bufNew(0); TEST_RESULT_VOID(manifestSave(manifest, ioBufferWriteNew(contentSave)), "save manifest"); TEST_RESULT_STR( strNewBuf(contentSave), strNewBuf(harnessInfoChecksumZ(hrnReplaceKey( TEST_MANIFEST_HEADER TEST_MANIFEST_DB_91 TEST_MANIFEST_OPTION_ARCHIVE TEST_MANIFEST_OPTION_CHECKSUM_PAGE_FALSE TEST_MANIFEST_OPTION_ONLINE_TRUE "\n" "[backup:target]\n" "pg_data={\"path\":\"{[path]}/pg\",\"type\":\"path\"}\n" "pg_data/pg_hba.conf={\"file\":\"pg_hba.conf\",\"path\":\"../config\",\"type\":\"link\"}\n" "pg_data/pg_xlog/archive_status={\"path\":\"../../archivestatus\",\"type\":\"link\"}\n" "pg_data/postgresql.conf={\"file\":\"postgresql.conf\",\"path\":\"../config\",\"type\":\"link\"}\n" "\n" "[target:file]\n" "pg_data/PG_VERSION={\"size\":4,\"timestamp\":1565282100}\n" "pg_data/base/1/555_init={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_init.1={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_vm.1_vm={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/global/pg_internal.init.allow={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/pg_dynshmem/BOGUS={\"size\":0,\"timestamp\":1565282101}\n" "pg_data/pg_hba.conf={\"size\":9,\"timestamp\":1565282117}\n" "pg_data/pg_replslot/BOGUS={\"size\":0,\"timestamp\":1565282103}\n" "pg_data/pg_snapshots/BOGUS={\"size\":4,\"timestamp\":1565282105}\n" "pg_data/pg_wal/000000010000000000000001={\"size\":7,\"timestamp\":1565282120}\n" "pg_data/postgresql.conf={\"size\":14,\"timestamp\":1565282116}\n" TEST_MANIFEST_FILE_DEFAULT_PRIMARY_TRUE "\n" "[target:link]\n" "pg_data/pg_hba.conf={\"destination\":\"../config/pg_hba.conf\"}\n" "pg_data/pg_xlog/archive_status={\"destination\":\"../../archivestatus\"}\n" "pg_data/postgresql.conf={\"destination\":\"../config/postgresql.conf\"}\n" TEST_MANIFEST_LINK_DEFAULT "\n" "[target:path]\n" "pg_data={}\n" "pg_data/base={}\n" "pg_data/base/1={}\n" "pg_data/global={}\n" "pg_data/pg_dynshmem={}\n" "pg_data/pg_notify={}\n" "pg_data/pg_replslot={}\n" "pg_data/pg_serial={}\n" "pg_data/pg_snapshots={}\n" "pg_data/pg_stat_tmp={\"mode\":\"0750\"}\n" "pg_data/pg_subtrans={}\n" "pg_data/pg_tblspc={}\n" "pg_data/pg_wal={}\n" "pg_data/pg_xlog={}\n" "pg_data/pg_xlog/archive_status={\"mode\":\"0777\"}\n" "pg_data/pg_xlog/somepath={}\n" TEST_MANIFEST_PATH_DEFAULT))), "check manifest"); // Remove pg_xlog and the directory that archive_status link pointed to storagePathRemoveP(storagePgWrite, STRDEF("pg_xlog"), .recurse = true); storagePathRemoveP(storageTest, STRDEF("archivestatus"), .recurse = true); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("manifest with all features - 9.2"); // Version storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_FILE_PGVERSION), .modeFile = 0400, .timeModified = 1565282100), BUFSTRDEF("9.2\n")); // create pg_xlog/wal as a link storagePathCreateP(storageTest, STRDEF("wal"), .mode = 0700); THROW_ON_SYS_ERROR( symlink(strPtr(strNewFmt("%s/wal", testPath())), strPtr(strNewFmt("%s/pg/pg_xlog", testPath()))) == -1, FileOpenError, "unable to create symlink"); // Files to conditionally ignore before 9.4 storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_FILE_POSTGRESQLAUTOCONFTMP), .modeFile = 0400, .timeModified = 1565282101), NULL); // Test manifest - pg_snapshots files ignored TEST_ASSIGN(manifest, manifestNewBuild(storagePg, PG_VERSION_92, false, false, NULL, NULL), "build manifest"); contentSave = bufNew(0); TEST_RESULT_VOID(manifestSave(manifest, ioBufferWriteNew(contentSave)), "save manifest"); TEST_RESULT_STR( strNewBuf(contentSave), strNewBuf(harnessInfoChecksumZ(hrnReplaceKey( TEST_MANIFEST_HEADER TEST_MANIFEST_DB_92 TEST_MANIFEST_OPTION_ALL "\n" "[backup:target]\n" "pg_data={\"path\":\"{[path]}/pg\",\"type\":\"path\"}\n" "pg_data/pg_hba.conf={\"file\":\"pg_hba.conf\",\"path\":\"../config\",\"type\":\"link\"}\n" "pg_data/pg_xlog={\"path\":\"{[path]}/wal\",\"type\":\"link\"}\n" "pg_data/postgresql.conf={\"file\":\"postgresql.conf\",\"path\":\"../config\",\"type\":\"link\"}\n" "\n" "[target:file]\n" "pg_data/PG_VERSION={\"size\":4,\"timestamp\":1565282100}\n" "pg_data/base/1/555_init={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_init.1={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_vm.1_vm={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/global/pg_internal.init.allow={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/pg_dynshmem/BOGUS={\"size\":0,\"timestamp\":1565282101}\n" "pg_data/pg_hba.conf={\"size\":9,\"timestamp\":1565282117}\n" "pg_data/pg_replslot/BOGUS={\"size\":0,\"timestamp\":1565282103}\n" "pg_data/pg_wal/000000010000000000000001={\"size\":7,\"timestamp\":1565282120}\n" "pg_data/postgresql.auto.conf.tmp={\"size\":0,\"timestamp\":1565282101}\n" "pg_data/postgresql.conf={\"size\":14,\"timestamp\":1565282116}\n" TEST_MANIFEST_FILE_DEFAULT_PRIMARY_TRUE "\n" "[target:link]\n" "pg_data/pg_hba.conf={\"destination\":\"../config/pg_hba.conf\"}\n" "pg_data/pg_xlog={\"destination\":\"{[path]}/wal\"}\n" "pg_data/postgresql.conf={\"destination\":\"../config/postgresql.conf\"}\n" TEST_MANIFEST_LINK_DEFAULT "\n" "[target:path]\n" "pg_data={}\n" "pg_data/base={}\n" "pg_data/base/1={}\n" "pg_data/global={}\n" "pg_data/pg_dynshmem={}\n" "pg_data/pg_notify={}\n" "pg_data/pg_replslot={}\n" "pg_data/pg_serial={}\n" "pg_data/pg_snapshots={}\n" "pg_data/pg_stat_tmp={\"mode\":\"0750\"}\n" "pg_data/pg_subtrans={}\n" "pg_data/pg_tblspc={}\n" "pg_data/pg_wal={}\n" "pg_data/pg_xlog={}\n" TEST_MANIFEST_PATH_DEFAULT))), "check manifest"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("manifest with all features - 9.4, checksum-page"); // Version storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_FILE_PGVERSION), .modeFile = 0400, .timeModified = 1565282100), BUFSTRDEF("9.4\n")); // Put a pgcontrol (always master:true) storagePutP( storageNewWriteP( storagePgWrite, STRDEF(PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL), .modeFile = 0400, .timeModified = 1565282101), NULL); // pg_clog pgVersion < 10 master:false (pg_xact pgVersion < 10 master:true), pg_multixact always master:false storagePathCreateP(storagePgWrite, STRDEF(PG_PATH_PGMULTIXACT), .mode = 0700, .noParentCreate = true); storagePutP( storageNewWriteP( storagePgWrite, STRDEF(PG_PATH_PGMULTIXACT "/" BOGUS_STR), .modeFile = 0400, .timeModified = 1565282101), NULL); storagePathCreateP(storagePgWrite, STRDEF("pg_clog"), .mode = 0700, .noParentCreate = true); storagePutP( storageNewWriteP( storagePgWrite, STRDEF("pg_clog/" BOGUS_STR), .modeFile = 0400, .timeModified = 1565282121), NULL); storagePathCreateP(storagePgWrite, STRDEF("pg_xact"), .mode = 0700, .noParentCreate = true); storagePutP( storageNewWriteP( storagePgWrite, STRDEF("pg_xact/" BOGUS_STR), .modeFile = 0400, .timeModified = 1565282122), NULL); // Files to capture in version < 12 but ignore >= 12 (code coverage) storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_FILE_RECOVERYSIGNAL), .modeFile = 0400, .timeModified = 1565282101), NULL); storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_FILE_STANDBYSIGNAL), .modeFile = 0400, .timeModified = 1565282101), NULL); // Files to capture in version < 9.6 but ignore >= 9.6 (code coverage) storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_FILE_BACKUPLABEL), .modeFile = 0400, .timeModified = 1565282101), NULL); // Tablespace 1 storagePathCreateP(storageTest, STRDEF("ts/1/PG_9.4_201409291/1"), .mode = 0700); THROW_ON_SYS_ERROR( symlink("../../ts/1", strPtr(strNewFmt("%s/pg/pg_tblspc/1", testPath()))) == -1, FileOpenError, "unable to create symlink"); storagePutP( storageNewWriteP( storagePgWrite, strNew("pg_tblspc/1/PG_9.4_201409291/1/16384"), .modeFile = 0400, .timeModified = 1565282115), BUFSTRDEF("TESTDATA")); storagePutP( storageNewWriteP( storagePgWrite, strNew("pg_tblspc/1/PG_9.4_201409291/1/t123_123_fsm"), .modeFile = 0400, .timeModified = 1565282115), BUFSTRDEF("IGNORE_TEMP_RELATION")); // Add checksum-page files to exclude from checksum-page validation in database relation directories storagePutP( storageNewWriteP( storagePgWrite, STRDEF(PG_PATH_BASE "/1/" PG_FILE_PGVERSION), .modeFile = 0400, .timeModified = 1565282120), NULL); storagePutP( storageNewWriteP( storagePgWrite, STRDEF(PG_PATH_BASE "/1/" PG_FILE_PGFILENODEMAP), .modeFile = 0400, .timeModified = 1565282120), NULL); storagePutP( storageNewWriteP( storagePgWrite, strNew("pg_tblspc/1/PG_9.4_201409291/1/" PG_FILE_PGVERSION), .modeFile = 0400, .timeModified = 1565282120), NULL); // Tablespace 2 storagePathCreateP(storageTest, STRDEF("ts/2/PG_9.4_201409291/1"), .mode = 0700); THROW_ON_SYS_ERROR( symlink("../../ts/2", strPtr(strNewFmt("%s/pg/pg_tblspc/2", testPath()))) == -1, FileOpenError, "unable to create symlink"); storagePutP( storageNewWriteP( storagePgWrite, strNew("pg_tblspc/2/PG_9.4_201409291/1/16385"), .modeFile = 0400, .timeModified = 1565282115), BUFSTRDEF("TESTDATA")); // Test manifest - pg_dynshmem, pg_replslot and postgresql.auto.conf.tmp files ignored TEST_ASSIGN(manifest, manifestNewBuild(storagePg, PG_VERSION_94, false, true, NULL, NULL), "build manifest"); contentSave = bufNew(0); TEST_RESULT_VOID(manifestSave(manifest, ioBufferWriteNew(contentSave)), "save manifest"); TEST_RESULT_STR( strNewBuf(contentSave), strNewBuf(harnessInfoChecksumZ(hrnReplaceKey( TEST_MANIFEST_HEADER TEST_MANIFEST_DB_94 TEST_MANIFEST_OPTION_ARCHIVE TEST_MANIFEST_OPTION_CHECKSUM_PAGE_TRUE TEST_MANIFEST_OPTION_ONLINE_FALSE "\n" "[backup:target]\n" "pg_data={\"path\":\"{[path]}/pg\",\"type\":\"path\"}\n" "pg_data/pg_hba.conf={\"file\":\"pg_hba.conf\",\"path\":\"../config\",\"type\":\"link\"}\n" "pg_data/pg_xlog={\"path\":\"{[path]}/wal\",\"type\":\"link\"}\n" "pg_data/postgresql.conf={\"file\":\"postgresql.conf\",\"path\":\"../config\",\"type\":\"link\"}\n" "pg_tblspc/1={\"path\":\"../../ts/1\",\"tablespace-id\":\"1\",\"tablespace-name\":\"ts1\",\"type\":\"link\"}\n" "pg_tblspc/2={\"path\":\"../../ts/2\",\"tablespace-id\":\"2\",\"tablespace-name\":\"ts2\",\"type\":\"link\"}\n" "\n" "[target:file]\n" "pg_data/PG_VERSION={\"master\":true,\"size\":4,\"timestamp\":1565282100}\n" "pg_data/backup_label={\"master\":true,\"size\":0,\"timestamp\":1565282101}\n" "pg_data/base/1/555_init={\"checksum-page\":true,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_init.1={\"checksum-page\":true,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_vm.1_vm={\"checksum-page\":true,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/PG_VERSION={\"size\":0,\"timestamp\":1565282120}\n" "pg_data/base/1/pg_filenode.map={\"size\":0,\"timestamp\":1565282120}\n" "pg_data/global/pg_control={\"master\":true,\"size\":0,\"timestamp\":1565282101}\n" "pg_data/global/pg_internal.init.allow={\"checksum-page\":true,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/pg_clog/BOGUS={\"size\":0,\"timestamp\":1565282121}\n" "pg_data/pg_hba.conf={\"master\":true,\"size\":9,\"timestamp\":1565282117}\n" "pg_data/pg_multixact/BOGUS={\"size\":0,\"timestamp\":1565282101}\n" "pg_data/pg_wal/000000010000000000000001={\"master\":true,\"size\":7,\"timestamp\":1565282120}\n" "pg_data/pg_xact/BOGUS={\"master\":true,\"size\":0,\"timestamp\":1565282122}\n" "pg_data/postgresql.conf={\"master\":true,\"size\":14,\"timestamp\":1565282116}\n" "pg_data/recovery.signal={\"master\":true,\"size\":0,\"timestamp\":1565282101}\n" "pg_data/standby.signal={\"master\":true,\"size\":0,\"timestamp\":1565282101}\n" "pg_tblspc/1/PG_9.4_201409291/1/16384={\"checksum-page\":true,\"size\":8,\"timestamp\":1565282115}\n" "pg_tblspc/1/PG_9.4_201409291/1/PG_VERSION={\"size\":0,\"timestamp\":1565282120}\n" "pg_tblspc/2/PG_9.4_201409291/1/16385={\"checksum-page\":true,\"size\":8,\"timestamp\":1565282115}\n" TEST_MANIFEST_FILE_DEFAULT_PRIMARY_FALSE "\n" "[target:link]\n" "pg_data/pg_hba.conf={\"destination\":\"../config/pg_hba.conf\"}\n" "pg_data/pg_tblspc/1={\"destination\":\"../../ts/1\"}\n" "pg_data/pg_tblspc/2={\"destination\":\"../../ts/2\"}\n" "pg_data/pg_xlog={\"destination\":\"{[path]}/wal\"}\n" "pg_data/postgresql.conf={\"destination\":\"../config/postgresql.conf\"}\n" TEST_MANIFEST_LINK_DEFAULT "\n" "[target:path]\n" "pg_data={}\n" "pg_data/base={}\n" "pg_data/base/1={}\n" "pg_data/global={}\n" "pg_data/pg_clog={}\n" "pg_data/pg_dynshmem={}\n" "pg_data/pg_multixact={}\n" "pg_data/pg_notify={}\n" "pg_data/pg_replslot={}\n" "pg_data/pg_serial={}\n" "pg_data/pg_snapshots={}\n" "pg_data/pg_stat_tmp={\"mode\":\"0750\"}\n" "pg_data/pg_subtrans={}\n" "pg_data/pg_tblspc={}\n" "pg_data/pg_wal={}\n" "pg_data/pg_xact={}\n" "pg_data/pg_xlog={}\n" "pg_tblspc={}\n" "pg_tblspc/1={}\n" "pg_tblspc/1/PG_9.4_201409291={}\n" "pg_tblspc/1/PG_9.4_201409291/1={}\n" "pg_tblspc/2={}\n" "pg_tblspc/2/PG_9.4_201409291={}\n" "pg_tblspc/2/PG_9.4_201409291/1={}\n" TEST_MANIFEST_PATH_DEFAULT))), "check manifest"); storageRemoveP(storageTest, STRDEF("pg/pg_tblspc/2"), .errorOnMissing = true); storagePathRemoveP(storageTest, STRDEF("ts/2"), .recurse = true); storageRemoveP(storagePgWrite, STRDEF(PG_PATH_GLOBAL "/" PG_FILE_PGINTERNALINIT ".allow"), .errorOnMissing = true); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("manifest with all features - 12, online"); // Version storagePutP( storageNewWriteP(storagePgWrite, strNew(PG_FILE_PGVERSION), .modeFile = 0400, .timeModified = 1565282100), BUFSTRDEF("12\n")); // Tablespace link errors when correct verion not found TEST_ERROR_FMT( manifestNewBuild(storagePg, PG_VERSION_12, false, false, NULL, NULL), FileOpenError, "unable to get info for missing path/file '%s/pg/pg_tblspc/1/PG_12_201909212': [2] No such file or directory", testPath()); // Remove the link inside pg/pg_tblspc THROW_ON_SYS_ERROR( unlink(strPtr(strNewFmt("%s/pg/pg_tblspc/1", testPath()))) == -1, FileRemoveError, "unable to remove symlink"); // Write a file into the directory pointed to by pg_xlog - contents will not be ignored online or offline storagePutP( storageNewWriteP(storageTest, strNew("wal/000000020000000000000002"), .modeFile = 0400, .timeModified = 1565282100), BUFSTRDEF("OLDWAL")); // create pg_xlog/wal as a link storagePathCreateP(storageTest, STRDEF("wal"), .mode = 0700); // Test manifest - 'pg_data/pg_tblspc' will appear in manifest but 'pg_tblspc' will not (no links). Recovery signal files // and backup_label ignored. Old recovery files and pg_xlog are now just another file/directory and will not be ignored. // pg_wal contents will be ignored online. pg_clog pgVersion > 10 master:true, pg_xact pgVersion > 10 master:false TEST_ASSIGN(manifest, manifestNewBuild(storagePg, PG_VERSION_12, true, false, NULL, NULL), "build manifest"); contentSave = bufNew(0); TEST_RESULT_VOID(manifestSave(manifest, ioBufferWriteNew(contentSave)), "save manifest"); TEST_RESULT_STR( strNewBuf(contentSave), strNewBuf(harnessInfoChecksumZ(hrnReplaceKey( TEST_MANIFEST_HEADER TEST_MANIFEST_DB_12 TEST_MANIFEST_OPTION_ARCHIVE TEST_MANIFEST_OPTION_CHECKSUM_PAGE_FALSE TEST_MANIFEST_OPTION_ONLINE_TRUE "\n" "[backup:target]\n" "pg_data={\"path\":\"{[path]}/pg\",\"type\":\"path\"}\n" "pg_data/pg_hba.conf={\"file\":\"pg_hba.conf\",\"path\":\"../config\",\"type\":\"link\"}\n" "pg_data/pg_xlog={\"path\":\"{[path]}/wal\",\"type\":\"link\"}\n" "pg_data/postgresql.conf={\"file\":\"postgresql.conf\",\"path\":\"../config\",\"type\":\"link\"}\n" "\n" "[target:file]\n" "pg_data/PG_VERSION={\"size\":3,\"timestamp\":1565282100}\n" "pg_data/base/1/555_init={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_init.1={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_vm.1_vm={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/PG_VERSION={\"master\":false,\"size\":0,\"timestamp\":1565282120}\n" "pg_data/base/1/pg_filenode.map={\"master\":false,\"size\":0,\"timestamp\":1565282120}\n" "pg_data/global/pg_control={\"size\":0,\"timestamp\":1565282101}\n" "pg_data/pg_clog/BOGUS={\"size\":0,\"timestamp\":1565282121}\n" "pg_data/pg_hba.conf={\"size\":9,\"timestamp\":1565282117}\n" "pg_data/pg_multixact/BOGUS={\"master\":false,\"size\":0,\"timestamp\":1565282101}\n" "pg_data/pg_xact/BOGUS={\"master\":false,\"size\":0,\"timestamp\":1565282122}\n" "pg_data/pg_xlog/000000020000000000000002={\"size\":6,\"timestamp\":1565282100}\n" "pg_data/postgresql.conf={\"size\":14,\"timestamp\":1565282116}\n" "pg_data/recovery.conf={\"size\":0,\"timestamp\":1565282101}\n" "pg_data/recovery.done={\"size\":0,\"timestamp\":1565282101}\n" TEST_MANIFEST_FILE_DEFAULT_PRIMARY_TRUE "\n" "[target:link]\n" "pg_data/pg_hba.conf={\"destination\":\"../config/pg_hba.conf\"}\n" "pg_data/pg_xlog={\"destination\":\"{[path]}/wal\"}\n" "pg_data/postgresql.conf={\"destination\":\"../config/postgresql.conf\"}\n" TEST_MANIFEST_LINK_DEFAULT "\n" "[target:path]\n" "pg_data={}\n" "pg_data/base={}\n" "pg_data/base/1={}\n" "pg_data/global={}\n" "pg_data/pg_clog={}\n" "pg_data/pg_dynshmem={}\n" "pg_data/pg_multixact={}\n" "pg_data/pg_notify={}\n" "pg_data/pg_replslot={}\n" "pg_data/pg_serial={}\n" "pg_data/pg_snapshots={}\n" "pg_data/pg_stat_tmp={\"mode\":\"0750\"}\n" "pg_data/pg_subtrans={}\n" "pg_data/pg_tblspc={}\n" "pg_data/pg_wal={}\n" "pg_data/pg_xact={}\n" "pg_data/pg_xlog={}\n" TEST_MANIFEST_PATH_DEFAULT))), "check manifest"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("rerun 12, offline"); // pg_wal not ignored TEST_ASSIGN(manifest, manifestNewBuild(storagePg, PG_VERSION_12, false, false, NULL, NULL), "build manifest"); contentSave = bufNew(0); TEST_RESULT_VOID(manifestSave(manifest, ioBufferWriteNew(contentSave)), "save manifest"); TEST_RESULT_STR( strNewBuf(contentSave), strNewBuf(harnessInfoChecksumZ(hrnReplaceKey( TEST_MANIFEST_HEADER TEST_MANIFEST_DB_12 TEST_MANIFEST_OPTION_ALL "\n" "[backup:target]\n" "pg_data={\"path\":\"{[path]}/pg\",\"type\":\"path\"}\n" "pg_data/pg_hba.conf={\"file\":\"pg_hba.conf\",\"path\":\"../config\",\"type\":\"link\"}\n" "pg_data/pg_xlog={\"path\":\"{[path]}/wal\",\"type\":\"link\"}\n" "pg_data/postgresql.conf={\"file\":\"postgresql.conf\",\"path\":\"../config\",\"type\":\"link\"}\n" "\n" "[target:file]\n" "pg_data/PG_VERSION={\"size\":3,\"timestamp\":1565282100}\n" "pg_data/base/1/555_init={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_init.1={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/555_vm.1_vm={\"master\":false,\"size\":0,\"timestamp\":1565282114}\n" "pg_data/base/1/PG_VERSION={\"master\":false,\"size\":0,\"timestamp\":1565282120}\n" "pg_data/base/1/pg_filenode.map={\"master\":false,\"size\":0,\"timestamp\":1565282120}\n" "pg_data/global/pg_control={\"size\":0,\"timestamp\":1565282101}\n" "pg_data/pg_clog/BOGUS={\"size\":0,\"timestamp\":1565282121}\n" "pg_data/pg_hba.conf={\"size\":9,\"timestamp\":1565282117}\n" "pg_data/pg_multixact/BOGUS={\"master\":false,\"size\":0,\"timestamp\":1565282101}\n" "pg_data/pg_wal/000000010000000000000001={\"size\":7,\"timestamp\":1565282120}\n" "pg_data/pg_xact/BOGUS={\"master\":false,\"size\":0,\"timestamp\":1565282122}\n" "pg_data/pg_xlog/000000020000000000000002={\"size\":6,\"timestamp\":1565282100}\n" "pg_data/postgresql.conf={\"size\":14,\"timestamp\":1565282116}\n" "pg_data/recovery.conf={\"size\":0,\"timestamp\":1565282101}\n" "pg_data/recovery.done={\"size\":0,\"timestamp\":1565282101}\n" TEST_MANIFEST_FILE_DEFAULT_PRIMARY_TRUE "\n" "[target:link]\n" "pg_data/pg_hba.conf={\"destination\":\"../config/pg_hba.conf\"}\n" "pg_data/pg_xlog={\"destination\":\"{[path]}/wal\"}\n" "pg_data/postgresql.conf={\"destination\":\"../config/postgresql.conf\"}\n" TEST_MANIFEST_LINK_DEFAULT "\n" "[target:path]\n" "pg_data={}\n" "pg_data/base={}\n" "pg_data/base/1={}\n" "pg_data/global={}\n" "pg_data/pg_clog={}\n" "pg_data/pg_dynshmem={}\n" "pg_data/pg_multixact={}\n" "pg_data/pg_notify={}\n" "pg_data/pg_replslot={}\n" "pg_data/pg_serial={}\n" "pg_data/pg_snapshots={}\n" "pg_data/pg_stat_tmp={\"mode\":\"0750\"}\n" "pg_data/pg_subtrans={}\n" "pg_data/pg_tblspc={}\n" "pg_data/pg_wal={}\n" "pg_data/pg_xact={}\n" "pg_data/pg_xlog={}\n" TEST_MANIFEST_PATH_DEFAULT))), "check manifest"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error on link to pg_data"); THROW_ON_SYS_ERROR( symlink(strPtr(strNewFmt("%s/pg/base", testPath())), strPtr(strNewFmt("%s/pg/link", testPath()))) == -1, FileOpenError, "unable to create symlink"); TEST_ERROR( manifestNewBuild(storagePg, PG_VERSION_94, false, false, NULL, NULL), LinkDestinationError, hrnReplaceKey("link 'link' destination '{[path]}/pg/base' is in PGDATA")); THROW_ON_SYS_ERROR( unlink(strPtr(strNewFmt("%s/pg/link", testPath()))) == -1, FileRemoveError, "unable to remove symlink"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error on path in pg_tblspc"); storagePathCreateP(storagePgWrite, strNew(MANIFEST_TARGET_PGTBLSPC "/somedir"), .mode = 0700, .noParentCreate = true); TEST_ERROR( manifestNewBuild(storagePg, PG_VERSION_94, false, false, NULL, NULL), LinkExpectedError, "'pg_data/pg_tblspc/somedir' is not a symlink - pg_tblspc should contain only symlinks"); storagePathRemoveP(storagePgWrite, strNew(MANIFEST_TARGET_PGTBLSPC "/somedir")); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error on file in pg_tblspc"); storagePutP(storageNewWriteP(storagePgWrite, strNew(MANIFEST_TARGET_PGTBLSPC "/somefile")), NULL); TEST_ERROR( manifestNewBuild(storagePg, PG_VERSION_94, false, false, NULL, NULL), LinkExpectedError, "'pg_data/pg_tblspc/somefile' is not a symlink - pg_tblspc should contain only symlinks"); storageRemoveP(storagePgWrite, strNew(MANIFEST_TARGET_PGTBLSPC "/somefile")); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error on link that points to nothing"); THROW_ON_SYS_ERROR( symlink("../bogus-link", strPtr(strNewFmt("%s/pg/link-to-link", testPath()))) == -1, FileOpenError, "unable to create symlink"); TEST_ERROR( manifestNewBuild(storagePg, PG_VERSION_94, false, true, NULL, NULL), FileOpenError, hrnReplaceKey("unable to get info for missing path/file '{[path]}/pg/link-to-link': [2] No such file or directory")); THROW_ON_SYS_ERROR( unlink(strPtr(strNewFmt("%s/pg/link-to-link", testPath()))) == -1, FileRemoveError, "unable to remove symlink"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("error on link to a link"); storagePathCreateP(storageTest, STRDEF("linktestdir"), .mode = 0777); THROW_ON_SYS_ERROR( symlink(strPtr(strNewFmt("%s/linktestdir", testPath())), strPtr(strNewFmt("%s/linktest", testPath()))) == -1, FileOpenError, "unable to create symlink"); THROW_ON_SYS_ERROR( symlink(strPtr(strNewFmt("%s/linktest", testPath())), strPtr(strNewFmt("%s/pg/linktolink", testPath()))) == -1, FileOpenError, "unable to create symlink"); TEST_ERROR_FMT( manifestNewBuild(storagePg, PG_VERSION_94, false, false, NULL, NULL), LinkDestinationError, "link '%s/pg/linktolink' cannot reference another link '%s/linktest'", testPath(), testPath()); #undef TEST_MANIFEST_HEADER #undef TEST_MANIFEST_DB_83 #undef TEST_MANIFEST_DB_84 #undef TEST_MANIFEST_DB_90 #undef TEST_MANIFEST_DB_91 #undef TEST_MANIFEST_DB_92 #undef TEST_MANIFEST_DB_94 #undef TEST_MANIFEST_DB_12 #undef TEST_MANIFEST_OPTION_ALL #undef TEST_MANIFEST_OPTION_ARCHIVE #undef TEST_MANIFEST_OPTION_CHECKSUM_PAGE_FALSE #undef TEST_MANIFEST_OPTION_CHECKSUM_PAGE_TRUE #undef TEST_MANIFEST_OPTION_ONLINE_FALSE #undef TEST_MANIFEST_OPTION_ONLINE_TRUE #undef TEST_MANIFEST_FILE_DEFAULT_PRIMARY_FALSE #undef TEST_MANIFEST_FILE_DEFAULT_PRIMARY_TRUE #undef TEST_MANIFEST_LINK_DEFAULT #undef TEST_MANIFEST_PATH_DEFAULT } // ***************************************************************************************************************************** if (testBegin("manifestBuildValidate()")) { // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("don't check for delta if already enabled and test online timestamp"); Manifest *manifest = manifestNewInternal(); manifest->data.backupOptionOnline = true; TEST_RESULT_VOID(manifestBuildValidate(manifest, true, 1482182860, false), "validate manifest"); TEST_RESULT_UINT(manifest->data.backupTimestampCopyStart, 1482182861, "check copy start"); TEST_RESULT_BOOL(varBool(manifest->data.backupOptionDelta), true, "check delta"); TEST_RESULT_BOOL(manifest->data.backupOptionCompress, false, "check compress"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("timestamp in past does not force delta"); manifest->data.backupOptionOnline = false; manifestFileAdd( manifest, &(ManifestFile){.name = STRDEF(MANIFEST_TARGET_PGDATA "/" PG_FILE_PGVERSION), .size = 4, .timestamp = 1482182860}); TEST_RESULT_VOID(manifestBuildValidate(manifest, false, 1482182860, false), "validate manifest"); TEST_RESULT_UINT(manifest->data.backupTimestampCopyStart, 1482182860, "check copy start"); TEST_RESULT_BOOL(varBool(manifest->data.backupOptionDelta), false, "check delta"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("timestamp in future forces delta"); TEST_RESULT_VOID(manifestBuildValidate(manifest, false, 1482182859, true), "validate manifest"); TEST_RESULT_UINT(manifest->data.backupTimestampCopyStart, 1482182859, "check copy start"); TEST_RESULT_BOOL(varBool(manifest->data.backupOptionDelta), true, "check delta"); TEST_RESULT_BOOL(manifest->data.backupOptionCompress, true, "check compress"); TEST_RESULT_LOG("P00 WARN: file 'PG_VERSION' has timestamp in the future, enabling delta checksum"); } // ***************************************************************************************************************************** if (testBegin("manifestBuildIncr()")) { #define TEST_MANIFEST_HEADER_PRE \ "[backup]\n" \ "backup-label=null\n" \ "backup-prior=\"20190101-010101F\"\n" \ "backup-timestamp-copy-start=0\n" \ "backup-timestamp-start=0\n" \ "backup-timestamp-stop=0\n" \ "backup-type=\"incr\"\n" \ "\n" \ "[backup:db]\n" \ "db-catalog-version=201608131\n" \ "db-control-version=960\n" \ "db-id=0\n" \ "db-system-id=0\n" \ "db-version=\"9.6\"\n" \ "\n" \ "[backup:option]\n" \ "option-archive-check=false\n" \ "option-archive-copy=false\n" \ "option-compress=false\n" #define TEST_MANIFEST_HEADER_POST \ "option-hardlink=false\n" \ "option-online=false\n" #define TEST_MANIFEST_FILE_DEFAULT \ "\n" \ "[target:file:default]\n" \ "group=\"test\"\n" \ "master=false\n" \ "mode=\"0600\"\n" \ "user=\"test\"\n" #define TEST_MANIFEST_PATH_DEFAULT \ "\n" \ "[target:path:default]\n" \ "group=\"test\"\n" \ "mode=\"0700\"\n" \ "user=\"test\"\n" // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("delta disabled and not enabled during validation"); Manifest *manifest = manifestNewInternal(); manifest->info = infoNew(NULL); manifest->data.pgVersion = PG_VERSION_96; manifest->data.backupOptionDelta = BOOL_FALSE_VAR; manifestTargetAdd(manifest, &(ManifestTarget){.name = MANIFEST_TARGET_PGDATA_STR, .path = STRDEF("/pg")}); manifestPathAdd( manifest, &(ManifestPath){.name = MANIFEST_TARGET_PGDATA_STR, .mode = 0700, .group = STRDEF("test"), .user = STRDEF("test")}); manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/BOGUS"), .size = 6, .sizeRepo = 6, .timestamp = 1482182860, .mode = 0600, .group = STRDEF("test"), .user = STRDEF("test")}); manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/FILE3"), .size = 0, .sizeRepo = 0, .timestamp = 1482182860, .mode = 0600, .group = STRDEF("test"), .user = STRDEF("test")}); manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/FILE4"), .size = 55, .sizeRepo = 55, .timestamp = 1482182861, .mode = 0600, .group = STRDEF("test"), .user = STRDEF("test")}); manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/" PG_FILE_PGVERSION), .size = 4, .sizeRepo = 4, .timestamp = 1482182860, .mode = 0600, .group = STRDEF("test"), .user = STRDEF("test")}); Manifest *manifestPrior = manifestNewInternal(); manifestPrior->data.backupLabel = strNew("20190101-010101F"); manifestFileAdd( manifestPrior, &(ManifestFile){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/FILE3"), .size = 0, .sizeRepo = 0, .timestamp = 1482182860, .checksumSha1 = "da39a3ee5e6b4b0d3255bfef95601890afd80709"}); manifestFileAdd( manifestPrior, &(ManifestFile){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/FILE4"), .size = 55, .sizeRepo = 55, .timestamp = 1482182860, .checksumSha1 = "ccccccccccaaaaaaaaaabbbbbbbbbbdddddddddd"}); manifestFileAdd( manifestPrior, &(ManifestFile){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/" PG_FILE_PGVERSION), .size = 4, .sizeRepo = 4, .timestamp = 1482182860, .checksumSha1 = "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd"}); TEST_RESULT_VOID(manifestBuildIncr(manifest, manifestPrior, backupTypeIncr, NULL), "incremental manifest"); Buffer *contentSave = bufNew(0); TEST_RESULT_VOID(manifestSave(manifest, ioBufferWriteNew(contentSave)), "save manifest"); TEST_RESULT_STR( strNewBuf(contentSave), strNewBuf(harnessInfoChecksumZ(hrnReplaceKey( TEST_MANIFEST_HEADER_PRE "option-delta=false\n" TEST_MANIFEST_HEADER_POST "\n" "[backup:target]\n" "pg_data={\"path\":\"/pg\",\"type\":\"path\"}\n" "\n" "[target:file]\n" "pg_data/BOGUS={\"size\":6,\"timestamp\":1482182860}\n" "pg_data/FILE3={\"reference\":\"20190101-010101F\",\"size\":0,\"timestamp\":1482182860}\n" "pg_data/FILE4={\"size\":55,\"timestamp\":1482182861}\n" "pg_data/PG_VERSION={\"checksum\":\"aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd\",\"reference\":\"20190101-010101F\"," "\"size\":4,\"timestamp\":1482182860}\n" TEST_MANIFEST_FILE_DEFAULT "\n" "[target:path]\n" "pg_data={}\n" TEST_MANIFEST_PATH_DEFAULT))), "check manifest"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("delta enabled before validation"); manifest->data.backupOptionDelta = BOOL_TRUE_VAR; lstClear(manifest->fileList); manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/FILE1"), .size = 4, .sizeRepo = 4, .timestamp = 1482182860, .mode = 0600, .group = STRDEF("test"), .user = STRDEF("test")}); manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/" PG_FILE_PGVERSION), .size = 4, .sizeRepo = 4, .timestamp = 1482182860, .mode = 0600, .group = STRDEF("test"), .user = STRDEF("test")}); manifestFileAdd( manifestPrior, &(ManifestFile){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/FILE1"), .size = 4, .sizeRepo = 4, .timestamp = 1482182860, .reference = STRDEF("20190101-010101F_20190202-010101D"), .checksumSha1 = "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd"}); TEST_RESULT_VOID(manifestBuildIncr(manifest, manifestPrior, backupTypeIncr, NULL), "incremental manifest"); contentSave = bufNew(0); TEST_RESULT_VOID(manifestSave(manifest, ioBufferWriteNew(contentSave)), "save manifest"); TEST_RESULT_STR( strNewBuf(contentSave), strNewBuf(harnessInfoChecksumZ(hrnReplaceKey( TEST_MANIFEST_HEADER_PRE "option-delta=true\n" TEST_MANIFEST_HEADER_POST "\n" "[backup:target]\n" "pg_data={\"path\":\"/pg\",\"type\":\"path\"}\n" "\n" "[target:file]\n" "pg_data/FILE1={\"checksum\":\"aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd\"," "\"reference\":\"20190101-010101F_20190202-010101D\",\"size\":4,\"timestamp\":1482182860}\n" "pg_data/PG_VERSION={\"checksum\":\"aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd\",\"reference\":\"20190101-010101F\"," "\"size\":4,\"timestamp\":1482182860}\n" TEST_MANIFEST_FILE_DEFAULT "\n" "[target:path]\n" "pg_data={}\n" TEST_MANIFEST_PATH_DEFAULT))), "check manifest"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("delta enabled by timestamp validation and copy checksum error"); // Clear manifest and add a single file manifest->data.backupOptionDelta = BOOL_FALSE_VAR; lstClear(manifest->fileList); manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/FILE1"), .size = 4, .sizeRepo = 4, .timestamp = 1482182859, .mode = 0600, .group = STRDEF("test"), .user = STRDEF("test")}); // Clear prior manifest and add a single file with later timestamp and checksum error lstClear(manifestPrior->fileList); VariantList *checksumPageErrorList = varLstNew(); varLstAdd(checksumPageErrorList, varNewUInt(77)); manifestFileAdd( manifestPrior, &(ManifestFile){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/FILE1"), .size = 4, .sizeRepo = 4, .timestamp = 1482182860, .reference = STRDEF("20190101-010101F_20190202-010101D"), .checksumSha1 = "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", .checksumPage = true, .checksumPageError = true, .checksumPageErrorList = checksumPageErrorList}); TEST_RESULT_VOID(manifestBuildIncr(manifest, manifestPrior, backupTypeIncr, NULL), "incremental manifest"); TEST_RESULT_LOG("P00 WARN: file 'FILE1' has timestamp earlier than prior backup, enabling delta checksum"); contentSave = bufNew(0); TEST_RESULT_VOID(manifestSave(manifest, ioBufferWriteNew(contentSave)), "save manifest"); TEST_RESULT_STR( strNewBuf(contentSave), strNewBuf(harnessInfoChecksumZ(hrnReplaceKey( TEST_MANIFEST_HEADER_PRE "option-delta=true\n" TEST_MANIFEST_HEADER_POST "\n" "[backup:target]\n" "pg_data={\"path\":\"/pg\",\"type\":\"path\"}\n" "\n" "[target:file]\n" "pg_data/FILE1={\"checksum\":\"aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd\",\"checksum-page\":false," "\"checksum-page-error\":[77],\"reference\":\"20190101-010101F_20190202-010101D\",\"size\":4," "\"timestamp\":1482182859}\n" TEST_MANIFEST_FILE_DEFAULT "\n" "[target:path]\n" "pg_data={}\n" TEST_MANIFEST_PATH_DEFAULT))), "check manifest"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("delta enabled by size validation"); manifest->data.backupOptionDelta = BOOL_FALSE_VAR; lstClear(manifest->fileList); manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/FILE1"), .size = 6, .sizeRepo = 6, .timestamp = 1482182861, .mode = 0600, .group = STRDEF("test"), .user = STRDEF("test")}); manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/FILE2"), .size = 6, .sizeRepo = 6, .timestamp = 1482182860, .mode = 0600, .group = STRDEF("test"), .user = STRDEF("test")}); manifestFileAdd( manifestPrior, &(ManifestFile){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/FILE2"), .size = 4, .sizeRepo = 4, .timestamp = 1482182860, .reference = STRDEF("20190101-010101F_20190202-010101D"), .checksumSha1 = "ddddddddddbbbbbbbbbbccccccccccaaaaaaaaaa"}); TEST_RESULT_VOID( manifestBuildIncr(manifest, manifestPrior, backupTypeIncr, STRDEF("000000040000000400000004")), "incremental manifest"); TEST_RESULT_LOG("P00 WARN: file 'FILE2' has same timestamp as prior but different size, enabling delta checksum"); contentSave = bufNew(0); TEST_RESULT_VOID(manifestSave(manifest, ioBufferWriteNew(contentSave)), "save manifest"); TEST_RESULT_STR( strNewBuf(contentSave), strNewBuf(harnessInfoChecksumZ(hrnReplaceKey( TEST_MANIFEST_HEADER_PRE "option-delta=true\n" TEST_MANIFEST_HEADER_POST "\n" "[backup:target]\n" "pg_data={\"path\":\"/pg\",\"type\":\"path\"}\n" "\n" "[target:file]\n" "pg_data/FILE1={\"size\":6,\"timestamp\":1482182861}\n" "pg_data/FILE2={\"size\":6,\"timestamp\":1482182860}\n" TEST_MANIFEST_FILE_DEFAULT "\n" "[target:path]\n" "pg_data={}\n" TEST_MANIFEST_PATH_DEFAULT))), "check manifest"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("delta enabled by timeline change"); manifestPrior->data.archiveStop = STRDEF("000000030000000300000003"); manifest->data.backupOptionDelta = BOOL_FALSE_VAR; TEST_RESULT_VOID( manifestBuildIncr(manifest, manifestPrior, backupTypeIncr, STRDEF("000000040000000400000004")), "incremental manifest"); TEST_RESULT_LOG("P00 WARN: a timeline switch has occurred since the 20190101-010101F backup, enabling delta checksum"); TEST_RESULT_BOOL(varBool(manifest->data.backupOptionDelta), true, "check delta is enabled"); manifest->data.backupOptionDelta = BOOL_FALSE_VAR; // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("delta enabled by online option change"); manifest->data.backupOptionOnline = BOOL_FALSE_VAR; lstClear(manifest->fileList); manifestFileAdd( manifest, &(ManifestFile){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/FILE1"), .size = 6, .sizeRepo = 6, .timestamp = 1482182861, .mode = 0600, .group = STRDEF("test"), .user = STRDEF("test")}); manifest->data.backupOptionOnline = BOOL_TRUE_VAR; manifestFileAdd( manifestPrior, &(ManifestFile){ .name = STRDEF(MANIFEST_TARGET_PGDATA "/FILE2"), .size = 4, .sizeRepo = 4, .timestamp = 1482182860, .checksumSha1 = "ddddddddddbbbbbbbbbbccccccccccaaaaaaaaaa"}); TEST_RESULT_VOID( manifestBuildIncr(manifest, manifestPrior, backupTypeIncr, STRDEF("000000030000000300000003")), "incremental manifest"); TEST_RESULT_LOG("P00 WARN: the online option has changed since the 20190101-010101F backup, enabling delta checksum"); contentSave = bufNew(0); TEST_RESULT_VOID(manifestSave(manifest, ioBufferWriteNew(contentSave)), "save manifest"); TEST_RESULT_STR( strNewBuf(contentSave), strNewBuf(harnessInfoChecksumZ(hrnReplaceKey( TEST_MANIFEST_HEADER_PRE "option-delta=true\n" "option-hardlink=false\n" "option-online=true\n" "\n" "[backup:target]\n" "pg_data={\"path\":\"/pg\",\"type\":\"path\"}\n" "\n" "[target:file]\n" "pg_data/FILE1={\"size\":6,\"timestamp\":1482182861}\n" TEST_MANIFEST_FILE_DEFAULT "\n" "[target:path]\n" "pg_data={}\n" TEST_MANIFEST_PATH_DEFAULT))), "check manifest"); #undef TEST_MANIFEST_HEADER_PRE #undef TEST_MANIFEST_HEADER_POST #undef TEST_MANIFEST_FILE_DEFAULT #undef TEST_MANIFEST_PATH_DEFAULT } // ***************************************************************************************************************************** if (testBegin("manifestNewLoad(), manifestSave(), and manifestBuildComplete()")) { Manifest *manifest = NULL; // Manifest with minimal features // ------------------------------------------------------------------------------------------------------------------------- const Buffer *contentLoad = harnessInfoChecksumZ ( "[backup]\n" "backup-label=\"20190808-163540F\"\n" "backup-timestamp-copy-start=1565282141\n" "backup-timestamp-start=1565282140\n" "backup-timestamp-stop=1565282142\n" "backup-type=\"full\"\n" "\n" "[backup:db]\n" "db-catalog-version=201409291\n" "db-control-version=942\n" "db-id=1\n" "db-system-id=1000000000000000094\n" "db-version=\"9.4\"\n" "\n" "[backup:option]\n" "option-archive-check=true\n" "option-archive-copy=true\n" "option-compress=false\n" "option-hardlink=false\n" "option-online=false\n" "\n" "[backup:target]\n" "pg_data={\"path\":\"/pg/base\",\"type\":\"path\"}\n" "\n" "[cipher]\n" "cipher-pass=\"somepass\"\n" "\n" "[target:file]\n" "pg_data/PG_VERSION={\"checksum\":\"184473f470864e067ee3a22e64b47b0a1c356f29\",\"size\":4,\"timestamp\":1565282114}\n" "\n" "[target:file:default]\n" "group=\"group1\"\n" "master=true\n" "mode=\"0600\"\n" "user=\"user1\"\n" "\n" "[target:path]\n" "pg_data={}\n" "\n" "[target:path:default]\n" "group=\"group1\"\n" "mode=\"0700\"\n" "user=\"user1\"\n" ); MEM_CONTEXT_TEMP_BEGIN() { TEST_ASSIGN(manifest, manifestNewLoad(ioBufferReadNew(contentLoad)), "load manifest"); TEST_RESULT_VOID(manifestMove(manifest, memContextPrior()), "move manifest"); } MEM_CONTEXT_TEMP_END(); TEST_ERROR( manifestTargetFind(manifest, STRDEF("bogus")), AssertError, "unable to find 'bogus' in manifest target list"); TEST_RESULT_STR_Z(manifestData(manifest)->backupLabel, "20190808-163540F", " check manifest data"); TEST_RESULT_STR_Z(manifestCipherSubPass(manifest), "somepass", " check cipher subpass"); TEST_RESULT_VOID( manifestTargetUpdate(manifest, MANIFEST_TARGET_PGDATA_STR, STRDEF("/pg/base"), NULL), " update target no change"); TEST_RESULT_VOID( manifestTargetUpdate(manifest, MANIFEST_TARGET_PGDATA_STR, STRDEF("/path2"), NULL), " update target"); TEST_RESULT_STR_Z( manifestTargetFind(manifest, MANIFEST_TARGET_PGDATA_STR)->path, "/path2", " check target path"); TEST_RESULT_VOID( manifestTargetUpdate(manifest, MANIFEST_TARGET_PGDATA_STR, STRDEF("/pg/base"), NULL), " fix target path"); Buffer *contentSave = bufNew(0); TEST_RESULT_VOID(manifestSave(manifest, ioBufferWriteNew(contentSave)), "save manifest"); TEST_RESULT_STR(strNewBuf(contentSave), strNewBuf(contentLoad), " check save"); // Manifest with all features // ------------------------------------------------------------------------------------------------------------------------- #define TEST_MANIFEST_HEADER \ "[backup]\n" \ "backup-archive-start=\"000000030000028500000089\"\n" \ "backup-archive-stop=\"000000030000028500000089\"\n" \ "backup-label=\"20190818-084502F_20190820-084502D\"\n" \ "backup-lsn-start=\"285/89000028\"\n" \ "backup-lsn-stop=\"285/89001F88\"\n" \ "backup-prior=\"20190818-084502F\"\n" \ "backup-timestamp-copy-start=1565282141\n" \ "backup-timestamp-start=1565282140\n" \ "backup-timestamp-stop=1565282142\n" \ "backup-type=\"full\"\n" \ "\n" \ "[backup:db]\n" \ "db-catalog-version=201409291\n" \ "db-control-version=942\n" \ "db-id=1\n" \ "db-system-id=1000000000000000094\n" \ "db-version=\"9.4\"\n" \ "\n" \ "[backup:option]\n" \ "option-archive-check=true\n" \ "option-archive-copy=true\n" \ "option-backup-standby=false\n" \ "option-buffer-size=16384\n" \ "option-checksum-page=false\n" \ "option-compress=true\n" \ "option-compress-level=3\n" \ "option-compress-level-network=6\n" \ "option-delta=false\n" \ "option-hardlink=true\n" \ "option-online=false\n" \ "option-process-max=32\n" #define TEST_MANIFEST_TARGET \ "\n" \ "[backup:target]\n" \ "pg_data={\"path\":\"/pg/base\",\"type\":\"path\"}\n" \ "pg_data/base/1={\"path\":\"../../base-1\",\"type\":\"link\"}\n" \ "pg_data/pg_hba.conf={\"file\":\"pg_hba.conf\",\"path\":\"../pg_config\",\"type\":\"link\"}\n" \ "pg_data/pg_stat={\"path\":\"../pg_stat\",\"type\":\"link\"}\n" \ "pg_data/postgresql.conf={\"file\":\"postgresql.conf\",\"path\":\"../pg_config\",\"type\":\"link\"}\n" \ "pg_tblspc/1={\"path\":\"/tblspc/ts1\",\"tablespace-id\":\"1\",\"tablespace-name\":\"ts1\",\"type\":\"link\"}\n" #define TEST_MANIFEST_DB \ "\n" \ "[db]\n" \ "mail={\"db-id\":16456,\"db-last-system-id\":12168}\n" \ "postgres={\"db-id\":12173,\"db-last-system-id\":12168}\n" \ "template0={\"db-id\":12168,\"db-last-system-id\":12168}\n" \ "template1={\"db-id\":1,\"db-last-system-id\":12168}\n" \ SHRUG_EMOJI "={\"db-id\":18000,\"db-last-system-id\":12168}\n" #define TEST_MANIFEST_FILE \ "\n" \ "[target:file]\n" \ "pg_data/PG_VERSION={\"checksum\":\"184473f470864e067ee3a22e64b47b0a1c356f29\",\"master\":true" \ ",\"reference\":\"20190818-084502F_20190819-084506D\",\"size\":4,\"timestamp\":1565282114}\n" \ "pg_data/base/16384/17000={\"checksum\":\"e0101dd8ffb910c9c202ca35b5f828bcb9697bed\",\"checksum-page\":false" \ ",\"checksum-page-error\":[1],\"repo-size\":4096,\"size\":8192,\"timestamp\":1565282114}\n" \ "pg_data/base/16384/PG_VERSION={\"checksum\":\"184473f470864e067ee3a22e64b47b0a1c356f29\",\"group\":false,\"size\":4" \ ",\"timestamp\":1565282115}\n" \ "pg_data/base/32768/33000={\"checksum\":\"7a16d165e4775f7c92e8cdf60c0af57313f0bf90\",\"checksum-page\":true" \ ",\"reference\":\"20190818-084502F\",\"size\":1073741824,\"timestamp\":1565282116}\n" \ "pg_data/base/32768/33000.32767={\"checksum\":\"6e99b589e550e68e934fd235ccba59fe5b592a9e\",\"checksum-page\":true" \ ",\"reference\":\"20190818-084502F\",\"size\":32768,\"timestamp\":1565282114}\n" \ "pg_data/postgresql.conf={\"master\":true,\"size\":4457,\"timestamp\":1565282114}\n" \ "pg_data/special-@#!$^&*()_+~`{}[]\\:;={\"master\":true,\"mode\":\"0640\",\"size\":0,\"timestamp\":1565282120" \ ",\"user\":false}\n" \ #define TEST_MANIFEST_FILE_DEFAULT \ "\n" \ "[target:file:default]\n" \ "group=\"group1\"\n" \ "master=false\n" \ "mode=\"0600\"\n" \ "user=\"user1\"\n" #define TEST_MANIFEST_LINK \ "\n" \ "[target:link]\n" \ "pg_data/pg_stat={\"destination\":\"../pg_stat\"}\n" \ "pg_data/postgresql.conf={\"destination\":\"../pg_config/postgresql.conf\",\"group\":false,\"user\":\"user1\"}\n" #define TEST_MANIFEST_LINK_DEFAULT \ "\n" \ "[target:link:default]\n" \ "group=\"group1\"\n" \ "user=false\n" #define TEST_MANIFEST_PATH \ "\n" \ "[target:path]\n" \ "pg_data={\"user\":\"user2\"}\n" \ "pg_data/base={\"group\":\"group2\"}\n" \ "pg_data/base/16384={\"mode\":\"0750\"}\n" \ "pg_data/base/32768={}\n" \ "pg_data/base/65536={\"user\":false}\n" #define TEST_MANIFEST_PATH_DEFAULT \ "\n" \ "[target:path:default]\n" \ "group=false\n" \ "mode=\"0700\"\n" \ "user=\"user1\"\n" TEST_ASSIGN( manifest, manifestNewLoad(ioBufferReadNew(harnessInfoChecksumZ( "[backup]\n" "backup-archive-start=\"000000040000028500000089\"\n" "backup-archive-stop=\"000000040000028500000089\"\n" "backup-label=\"20190818-084502F\"\n" "backup-lsn-start=\"300/89000028\"\n" "backup-lsn-stop=\"300/89001F88\"\n" "backup-prior=\"20190818-084502F\"\n" "backup-timestamp-copy-start=1565282141\n" "backup-timestamp-start=777\n" "backup-timestamp-stop=777\n" "backup-type=\"full\"\n" "\n" "[backup:db]\n" "db-catalog-version=201409291\n" "db-control-version=942\n" "db-id=2\n" "db-system-id=2000000000000000094\n" "db-version=\"9.4\"\n" "\n" "[backup:option]\n" "option-archive-check=false\n" "option-archive-copy=false\n" "option-backup-standby=true\n" "option-buffer-size=16384\n" "option-checksum-page=false\n" "option-compress=true\n" "option-compress-level=33\n" "option-compress-level-network=66\n" "option-delta=false\n" "option-hardlink=false\n" "option-online=false\n" "option-process-max=99\n" TEST_MANIFEST_TARGET "\n" "[db]\n" "mail={\"db-id\":16456,\"db-last-system-id\":12168}\n" "postgres={\"db-id\":12173,\"db-last-system-id\":12168}\n" TEST_MANIFEST_FILE TEST_MANIFEST_FILE_DEFAULT TEST_MANIFEST_LINK TEST_MANIFEST_LINK_DEFAULT TEST_MANIFEST_PATH TEST_MANIFEST_PATH_DEFAULT))), "load manifest"); TEST_RESULT_VOID(manifestBackupLabelSet(manifest, STRDEF("20190818-084502F_20190820-084502D")), "backup label set"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("manifest validation"); // Munge files to produce errors manifestFileUpdate(manifest, STRDEF("pg_data/postgresql.conf"), 4457, 0, NULL, NULL, false, false, NULL); manifestFileUpdate(manifest, STRDEF("pg_data/base/32768/33000.32767"), 0, 0, NULL, NULL, true, false, NULL); TEST_ERROR( manifestValidate(manifest, false), FormatError, "manifest validation failed:\n" "missing checksum for file 'pg_data/postgresql.conf'"); TEST_ERROR( manifestValidate(manifest, true), FormatError, "manifest validation failed:\n" "invalid checksum '6e99b589e550e68e934fd235ccba59fe5b592a9e' for zero size file 'pg_data/base/32768/33000.32767'\n" "missing checksum for file 'pg_data/postgresql.conf'\n" "repo size must be > 0 for file 'pg_data/postgresql.conf'"); // Undo changes made to files manifestFileUpdate(manifest, STRDEF("pg_data/base/32768/33000.32767"), 32768, 32768, NULL, NULL, true, false, NULL); manifestFileUpdate( manifest, STRDEF("pg_data/postgresql.conf"), 4457, 4457, "184473f470864e067ee3a22e64b47b0a1c356f29", NULL, false, false, NULL); TEST_RESULT_VOID(manifestValidate(manifest, true), "successful validate"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID( manifestBuildComplete(manifest, 0, NULL, NULL, 0, NULL, NULL, 0, 0, NULL, false, false, 0, 0, 0, false, 0, false), "manifest complete without db"); // Create db list VariantList *dbList = varLstNew(); VariantList *dbRow = varLstNew(); varLstAdd(dbRow, varNewUInt64(12168)); varLstAdd(dbRow, varNewStrZ("template0")); varLstAdd(dbRow, varNewUInt64(12168)); varLstAdd(dbList, varNewVarLst(dbRow)); dbRow = varLstNew(); varLstAdd(dbRow, varNewUInt64(1)); varLstAdd(dbRow, varNewStrZ("template1")); varLstAdd(dbRow, varNewUInt64(12168)); varLstAdd(dbList, varNewVarLst(dbRow)); dbRow = varLstNew(); varLstAdd(dbRow, varNewUInt64(18000)); varLstAdd(dbRow, varNewStrZ(SHRUG_EMOJI)); varLstAdd(dbRow, varNewUInt64(12168)); varLstAdd(dbList, varNewVarLst(dbRow)); TEST_RESULT_VOID( manifestBuildComplete( manifest, 1565282140, STRDEF("285/89000028"), STRDEF("000000030000028500000089"), 1565282142, STRDEF("285/89001F88"), STRDEF("000000030000028500000089"), 1, 1000000000000000094, dbList, true, true, 16384, 3, 6, true, 32, false), "manifest complete with db"); TEST_RESULT_STR_Z(manifestPathPg(STRDEF("pg_data")), NULL, "check pg_data path"); TEST_RESULT_STR_Z(manifestPathPg(STRDEF("pg_data/PG_VERSION")), "PG_VERSION", "check pg_data path/file"); TEST_RESULT_STR_Z(manifestPathPg(STRDEF("pg_tblspc/1")), "pg_tblspc/1", "check pg_tblspc path/file"); TEST_RESULT_STR_Z(manifestCipherSubPass(manifest), NULL, " check cipher subpass"); TEST_RESULT_VOID(manifestCipherSubPassSet(manifest, STRDEF("supersecret")), "cipher subpass set"); TEST_RESULT_STR_Z(manifestCipherSubPass(manifest), "supersecret", " check cipher subpass"); // Absolute target paths TEST_RESULT_STR_Z(manifestTargetPath(manifest, manifestTargetBase(manifest)), "/pg/base", "base target path"); TEST_RESULT_STR_Z( manifestTargetPath(manifest, manifestTargetFind(manifest, STRDEF("pg_data/pg_hba.conf"))), "/pg/pg_config", "relative file link target path"); TEST_RESULT_STR_Z( manifestTargetPath(manifest, manifestTargetFind(manifest, STRDEF("pg_data/pg_stat"))), "/pg/pg_stat", "relative path link target path"); TEST_RESULT_STR_Z( manifestTargetPath(manifest, manifestTargetFind(manifest, STRDEF("pg_data/base/1"))), "/pg/base-1", "relative path link target path"); // Link check TEST_RESULT_VOID(manifestLinkCheck(manifest), "successful link check"); manifestTargetAdd( manifest, &(ManifestTarget){ .name = STRDEF("pg_data/base/2"), .type = manifestTargetTypeLink, .path = STRDEF("../../base-1/base-2")}); TEST_ERROR( manifestLinkCheck(manifest), LinkDestinationError, "link 'base/2' (/pg/base-1/base-2) destination is a subdirectory of or the same directory as" " link 'base/1' (/pg/base-1)"); manifestTargetRemove(manifest, STRDEF("pg_data/base/2")); // ManifestFile getters const ManifestFile *file = NULL; TEST_ERROR( manifestFileFind(manifest, STRDEF("bogus")), AssertError, "unable to find 'bogus' in manifest file list"); TEST_ASSIGN(file, manifestFileFind(manifest, STRDEF("pg_data/PG_VERSION")), "manifestFileFind()"); TEST_RESULT_STR_Z(file->name, "pg_data/PG_VERSION", " find file"); TEST_RESULT_STR_Z( manifestFileFindDefault(manifest, STRDEF("bogus"), file)->name, "pg_data/PG_VERSION", "manifestFileFindDefault() - return default"); TEST_RESULT_STR_Z( manifestFileFind(manifest, STRDEF("pg_data/special-@#!$^&*()_+~`{}[]\\:;"))->name, "pg_data/special-@#!$^&*()_+~`{}[]\\:;", "find special file"); TEST_ASSIGN(file, manifestFileFindDefault(manifest, STRDEF("bogus"), NULL), "manifestFileFindDefault()"); TEST_RESULT_PTR(file, NULL, " return default NULL"); TEST_RESULT_VOID( manifestFileUpdate(manifest, STRDEF("pg_data/postgresql.conf"), 4457, 4457, "", NULL, false, false, NULL), "update file"); TEST_RESULT_VOID( manifestFileUpdate(manifest, STRDEF("pg_data/postgresql.conf"), 4457, 4457, NULL, varNewStr(NULL), false, false, NULL), "update file"); // ManifestDb getters const ManifestDb *db = NULL; TEST_ERROR( manifestDbFind(manifest, STRDEF("bogus")), AssertError, "unable to find 'bogus' in manifest db list"); TEST_ASSIGN(db, manifestDbFind(manifest, STRDEF("postgres")), "manifestDbFind()"); TEST_RESULT_STR_Z(db->name, "postgres", " check name"); TEST_RESULT_STR_Z( manifestDbFindDefault(manifest, STRDEF("bogus"), db)->name, "postgres", "manifestDbFindDefault() - return default"); TEST_RESULT_UINT( manifestDbFindDefault(manifest, STRDEF("template0"), db)->id, 12168, "manifestDbFindDefault() - return found"); TEST_ASSIGN(db, manifestDbFindDefault(manifest, STRDEF("bogus"), NULL), "manifestDbFindDefault()"); TEST_RESULT_PTR(db, NULL, " return default NULL"); // ManifestLink getters const ManifestLink *link = NULL; TEST_ERROR( manifestLinkFind(manifest, STRDEF("bogus")), AssertError, "unable to find 'bogus' in manifest link list"); TEST_ASSIGN(link, manifestLinkFind(manifest, STRDEF("pg_data/pg_stat")), "find link"); TEST_RESULT_VOID(manifestLinkUpdate(manifest, STRDEF("pg_data/pg_stat"), STRDEF("../pg_stat")), " no update"); TEST_RESULT_STR_Z(link->destination, "../pg_stat", " check link"); TEST_RESULT_VOID(manifestLinkUpdate(manifest, STRDEF("pg_data/pg_stat"), STRDEF("../pg_stat2")), " update"); TEST_RESULT_STR_Z(link->destination, "../pg_stat2", " check link"); TEST_RESULT_VOID(manifestLinkUpdate(manifest, STRDEF("pg_data/pg_stat"), STRDEF("../pg_stat")), " fix link destination"); TEST_RESULT_STR_Z( manifestLinkFindDefault(manifest, STRDEF("bogus"), link)->name, "pg_data/pg_stat", "manifestLinkFindDefault() - return default"); TEST_RESULT_STR_Z( manifestLinkFindDefault(manifest, STRDEF("pg_data/postgresql.conf"), link)->destination, "../pg_config/postgresql.conf", "manifestLinkFindDefault() - return found"); TEST_ASSIGN(link, manifestLinkFindDefault(manifest, STRDEF("bogus"), NULL), "manifestLinkFindDefault()"); TEST_RESULT_PTR(link, NULL, " return default NULL"); // ManifestPath getters const ManifestPath *path = NULL; TEST_ERROR( manifestPathFind(manifest, STRDEF("bogus")), AssertError, "unable to find 'bogus' in manifest path list"); TEST_ASSIGN(path, manifestPathFind(manifest, STRDEF("pg_data")), "manifestPathFind()"); TEST_RESULT_STR_Z(path->name, "pg_data", " check path"); TEST_RESULT_STR_Z( manifestPathFindDefault(manifest, STRDEF("bogus"), path)->name, "pg_data", "manifestPathFindDefault() - return default"); TEST_RESULT_STR_Z( manifestPathFindDefault(manifest, STRDEF("pg_data/base"), path)->group, "group2", "manifestPathFindDefault() - return found"); TEST_ASSIGN(path, manifestPathFindDefault(manifest, STRDEF("bogus"), NULL), "manifestPathFindDefault()"); TEST_RESULT_PTR(path, NULL, " return default NULL"); const ManifestTarget *target = NULL; TEST_ASSIGN(target, manifestTargetFind(manifest, STRDEF("pg_data/pg_hba.conf")), "find target"); TEST_RESULT_VOID( manifestTargetUpdate(manifest, target->name, target->path, STRDEF("pg_hba2.conf")), " update target file"); TEST_RESULT_STR_Z(target->file, "pg_hba2.conf", " check target file"); TEST_RESULT_VOID(manifestTargetUpdate(manifest, target->name, target->path, STRDEF("pg_hba.conf")), " fix target file"); contentSave = bufNew(0); TEST_RESULT_VOID(manifestSave(manifest, ioBufferWriteNew(contentSave)), "save manifest"); Buffer *contentCompare = harnessInfoChecksumZ ( TEST_MANIFEST_HEADER TEST_MANIFEST_TARGET "\n" "[cipher]\n" "cipher-pass=\"supersecret\"\n" TEST_MANIFEST_DB TEST_MANIFEST_FILE TEST_MANIFEST_FILE_DEFAULT TEST_MANIFEST_LINK TEST_MANIFEST_LINK_DEFAULT TEST_MANIFEST_PATH TEST_MANIFEST_PATH_DEFAULT ); TEST_RESULT_STR(strNewBuf(contentSave), strNewBuf(contentCompare), " check save"); TEST_RESULT_VOID(manifestFileRemove(manifest, STRDEF("pg_data/PG_VERSION")), "remove file"); TEST_ERROR( manifestFileRemove(manifest, STRDEF("pg_data/PG_VERSION")), AssertError, "unable to remove 'pg_data/PG_VERSION' from manifest file list"); TEST_RESULT_VOID(manifestLinkRemove(manifest, STRDEF("pg_data/pg_stat")), "remove link"); TEST_ERROR( manifestLinkRemove(manifest, STRDEF("pg_data/pg_stat")), AssertError, "unable to remove 'pg_data/pg_stat' from manifest link list"); TEST_RESULT_VOID(manifestTargetRemove(manifest, STRDEF("pg_data/pg_hba.conf")), "remove target"); TEST_ERROR( manifestTargetRemove(manifest, STRDEF("pg_data/pg_hba.conf")), AssertError, "unable to remove 'pg_data/pg_hba.conf' from manifest target list"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("load validation errors"); TEST_ERROR( manifestNewLoad(ioBufferReadNew(BUFSTRDEF("[target:file]\npg_data/bogus={}"))), FormatError, "missing timestamp for file 'pg_data/bogus'"); TEST_ERROR( manifestNewLoad(ioBufferReadNew(BUFSTRDEF("[target:file]\npg_data/bogus={\"timestamp\":0}"))), FormatError, "missing size for file 'pg_data/bogus'"); } // ***************************************************************************************************************************** if (testBegin("manifestLoadFile()")) { Manifest *manifest = NULL; TEST_ERROR_FMT( manifestLoadFile(storageTest, BACKUP_MANIFEST_FILE_STR, cipherTypeNone, NULL), FileMissingError, "unable to load backup manifest file '%s/backup.manifest' or '%s/backup.manifest.copy':\n" "FileMissingError: unable to open missing file '%s/backup.manifest' for read\n" "FileMissingError: unable to open missing file '%s/backup.manifest.copy' for read", testPath(), testPath(), testPath(), testPath()); // Also use this test to check that extra sections/keys are ignored using coverage. // ------------------------------------------------------------------------------------------------------------------------- const Buffer *content = harnessInfoChecksumZ ( "[backup]\n" "backup-label=\"20190808-163540F\"\n" "backup-timestamp-copy-start=1565282141\n" "backup-timestamp-start=1565282140\n" "backup-timestamp-stop=1565282142\n" "backup-type=\"full\"\n" "ignore-key=ignore-value\n" "\n" "[backup:db]\n" "db-catalog-version=201409291\n" "db-control-version=942\n" "db-id=1\n" "db-system-id=1000000000000000094\n" "db-version=\"9.4\"\n" "ignore-key=ignore-value\n" "\n" "[backup:option]\n" "ignore-key=ignore-value\n" "option-archive-check=true\n" "option-archive-copy=true\n" "option-compress=false\n" "option-hardlink=false\n" "option-online=false\n" "\n" "[backup:target]\n" "pg_data={\"path\":\"/pg/base\",\"type\":\"path\"}\n" "\n" "[ignore-section]\n" "ignore-key=ignore-value\n" "\n" "[target:file]\n" "pg_data/PG_VERSION={\"checksum\":\"184473f470864e067ee3a22e64b47b0a1c356f29\",\"size\":4,\"timestamp\":1565282114}\n" "\n" "[target:file:default]\n" "group=\"group1\"\n" "ignore-key=ignore-value\n" "master=true\n" "mode=\"0600\"\n" "user=\"user1\"\n" "\n" "[target:link:default]\n" "ignore-key=ignore-value\n" "\n" "[target:path]\n" "pg_data={}\n" "\n" "[target:path:default]\n" "group=\"group1\"\n" "ignore-key=ignore-value\n" "mode=\"0700\"\n" "user=\"user1\"\n" ); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageTest, strNew(BACKUP_MANIFEST_FILE INFO_COPY_EXT)), content), "write copy"); TEST_ASSIGN(manifest, manifestLoadFile(storageTest, STRDEF(BACKUP_MANIFEST_FILE), cipherTypeNone, NULL), "load copy"); TEST_RESULT_UINT(manifestData(manifest)->pgSystemId, 1000000000000000094, " check file loaded"); TEST_RESULT_STR_Z(manifestData(manifest)->backrestVersion, PROJECT_VERSION, " check backrest version"); storageRemoveP(storageTest, strNew(BACKUP_MANIFEST_FILE INFO_COPY_EXT), .errorOnMissing = true); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageTest, BACKUP_MANIFEST_FILE_STR), content), "write main"); TEST_ASSIGN(manifest, manifestLoadFile(storageTest, STRDEF(BACKUP_MANIFEST_FILE), cipherTypeNone, NULL), "load main"); TEST_RESULT_UINT(manifestData(manifest)->pgSystemId, 1000000000000000094, " check file loaded"); } } pgbackrest-release-2.24/test/src/module/performance/000077500000000000000000000000001362531507100225435ustar00rootroot00000000000000pgbackrest-release-2.24/test/src/module/performance/typeTest.c000066400000000000000000000251661362531507100245420ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Type Performance Test the performance of various types and data structures. Generally speaking, the starting values should be high enough to "blow up" in terms of execution time if there are performance problems without taking very long if everything is running smoothly. These starting values can then be scaled up for profiling and stress testing as needed. In general we hope to scale to 1000 without running out of memory on the test systems or taking an undue amount of time. It should be noted that in this context scaling to 1000 is nowhere near to turning it up to 11. ***********************************************************************************************************************************/ #include "common/ini.h" #include "common/io/bufferRead.h" #include "common/io/bufferWrite.h" #include "common/time.h" #include "common/type/list.h" #include "info/manifest.h" #include "common/harnessInfo.h" /*********************************************************************************************************************************** Test sort comparator ***********************************************************************************************************************************/ static int testComparator(const void *item1, const void *item2) { int int1 = *(int *)item1; int int2 = *(int *)item2; if (int1 < int2) return -1; if (int1 > int2) return 1; return 0; } /*********************************************************************************************************************************** Test callback to count ini load results ***********************************************************************************************************************************/ static void testIniLoadCountCallback(void *data, const String *section, const String *key, const String *value) { (*(unsigned int *)data)++; (void)section; (void)key; (void)value; } /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("lstFind()")) { CHECK(testScale() <= 10000); int testMax = 100000 * (int)testScale(); // Generate a large list of values (use int instead of string so there fewer allocations) List *list = lstNewP(sizeof(int), .comparator = testComparator); for (int listIdx = 0; listIdx < testMax; listIdx++) lstAdd(list, &listIdx); CHECK(lstSize(list) == (unsigned int)testMax); TEST_LOG_FMT("generated %d item list", testMax); // Search for all values with an ascending sort lstSort(list, sortOrderAsc); TimeMSec timeBegin = timeMSec(); for (int listIdx = 0; listIdx < testMax; listIdx++) CHECK(*(int *)lstFind(list, &listIdx) == listIdx); TEST_LOG_FMT("asc search completed in %ums", (unsigned int)(timeMSec() - timeBegin)); // Search for all values with an descending sort lstSort(list, sortOrderDesc); timeBegin = timeMSec(); for (int listIdx = 0; listIdx < testMax; listIdx++) CHECK(*(int *)lstFind(list, &listIdx) == listIdx); TEST_LOG_FMT("desc search completed in %ums", (unsigned int)(timeMSec() - timeBegin)); } // ***************************************************************************************************************************** if (testBegin("iniLoad()")) { CHECK(testScale() <= 10000); String *iniStr = strNew("[section1]\n"); unsigned int iniMax = 100000 * (unsigned int)testScale(); for (unsigned int keyIdx = 0; keyIdx < iniMax; keyIdx++) strCatFmt(iniStr, "key%u=value%u\n", keyIdx, keyIdx); TEST_LOG_FMT("ini size = %s, keys = %u", strPtr(strSizeFormat(strSize(iniStr))), iniMax); TimeMSec timeBegin = timeMSec(); unsigned int iniTotal = 0; TEST_RESULT_VOID(iniLoad(ioBufferReadNew(BUFSTR(iniStr)), testIniLoadCountCallback, &iniTotal), "parse ini"); TEST_LOG_FMT("parse completed in %ums", (unsigned int)(timeMSec() - timeBegin)); TEST_RESULT_INT(iniTotal, iniMax, " check ini total"); } // Load/save a larger manifest to test performance and memory usage. The default sizing is for a "typical" cluster but this can // be scaled to test larger cluster sizes. // ***************************************************************************************************************************** if (testBegin("manifestNewLoad()/manifestSave()")) { CHECK(testScale() <= 1000000); // Manifest with all features // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("generate manifest"); String *manifestStr = strNew ( "[backup]\n" "backup-label=\"20190818-084502F_20190820-084502D\"\n" "backup-prior=\"20190818-084502F\"\n" "backup-timestamp-copy-start=1566290707\n" "backup-timestamp-start=1566290702\n" "backup-timestamp-stop=1566290710\n" "backup-type=\"diff\"\n" "\n" "[backup:db]\n" "db-catalog-version=201809051\n" "db-control-version=1100\n" "db-id=2\n" "db-system-id=6689162560678426440\n" "db-version=\"11\"\n" "\n" "[backup:option]\n" "option-archive-check=true\n" "option-archive-copy=false\n" "option-backup-standby=false\n" "option-buffer-size=4194304\n" "option-checksum-page=true\n" "option-compress=true\n" "option-compress-level=9\n" "option-compress-level-network=3\n" "option-delta=false\n" "option-hardlink=false\n" "option-online=false\n" "option-process-max=2\n" "\n" "[backup:target]\n" "pg_data={\"path\":\"/pg/base\",\"type\":\"path\"}\n"); for (unsigned int linkIdx = 0; linkIdx < 1; linkIdx++) strCatFmt(manifestStr, "pg_data/pg_stat%u={\"path\":\"../pg_stat\",\"type\":\"link\"}\n", linkIdx); strCat( manifestStr, "\n" "[target:file]\n"); unsigned int fileTotal = 3000 * (unsigned int)testScale(); // Because of the way the filenames are formatted they will end up badly out of order. We'll be depending on the sort after // load the fix this. Normally the files won't need sorting, but a collation issue could well cause problems for us without // it. for (unsigned int fileIdx = 0; fileIdx < fileTotal; fileIdx++) { strCatFmt( manifestStr, "pg_data/base/16384/%u={\"checksum\":\"184473f470864e067ee3a22e64b47b0a1c356f29\",\"size\":16384" ",\"timestamp\":1565282114}\n", 16384 + fileIdx); } strCat( manifestStr, "\n" "[target:file:default]\n" "group=\"postgres\"\n" "master=false\n" "mode=\"0600\"\n" "user=\"postgres\"\n" "\n" "[target:link]\n" "pg_data/pg_stat={\"destination\":\"../pg_stat\"}\n" "\n" "[target:link:default]\n" "group=\"postgres\"\n" "user=\"postgres\"\n" "\n" "[target:path]\n" "pg_data={}\n" "pg_data/base={}\n" "pg_data/base/1={}\n" "pg_data/base/13124={}\n" "pg_data/base/13125={}\n" "pg_data/base/16391={}\n" "pg_data/global={}\n" "pg_data/pg_commit_ts={}\n" "pg_data/pg_dynshmem={}\n" "pg_data/pg_logical={}\n" "pg_data/pg_logical/mappings={}\n" "pg_data/pg_logical/snapshots={}\n" "pg_data/pg_multixact={}\n" "pg_data/pg_multixact/members={}\n" "pg_data/pg_multixact/offsets={}\n" "pg_data/pg_notify={}\n" "pg_data/pg_replslot={}\n" "pg_data/pg_serial={}\n" "pg_data/pg_snapshots={}\n" "pg_data/pg_stat={}\n" "pg_data/pg_stat_tmp={}\n" "pg_data/pg_subtrans={}\n" "pg_data/pg_tblspc={}\n" "pg_data/pg_twophase={}\n" "pg_data/pg_wal={}\n" "pg_data/pg_wal/archive_status={}\n" "pg_data/pg_xact={}\n" "\n" "[target:path:default]\n" "group=\"postgres\"\n" "mode=\"0700\"\n" "user=\"postgres\"\n" ); const Buffer *contentLoad = harnessInfoChecksum(manifestStr); TEST_LOG_FMT("%s manifest generated with %u files", strPtr(strSizeFormat(bufUsed(contentLoad))), fileTotal); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("load manifest"); TimeMSec timeBegin = timeMSec(); Manifest *manifest = manifestNewLoad(ioBufferReadNew(contentLoad)); TEST_LOG_FMT("completed in %ums", (unsigned int)(timeMSec() - timeBegin)); TEST_RESULT_UINT(manifestFileTotal(manifest), fileTotal, " check file total"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("save manifest"); Buffer *contentSave = bufNew(0); timeBegin = timeMSec(); manifestSave(manifest, ioBufferWriteNew(contentSave)); TEST_LOG_FMT("completed in %ums", (unsigned int)(timeMSec() - timeBegin)); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("find all files"); timeBegin = timeMSec(); for (unsigned int fileIdx = 0; fileIdx < manifestFileTotal(manifest); fileIdx++) { const ManifestFile *file = manifestFile(manifest, fileIdx); CHECK(file == manifestFileFind(manifest, file->name)); } TEST_LOG_FMT("completed in %ums", (unsigned int)(timeMSec() - timeBegin)); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/postgres/000077500000000000000000000000001362531507100221105ustar00rootroot00000000000000pgbackrest-release-2.24/test/src/module/postgres/clientTest.c000066400000000000000000000333661362531507100244050ustar00rootroot00000000000000/*********************************************************************************************************************************** Test PostgreSQL Client This test can be run two ways: 1) The default uses a libpq shim to simulate a PostgreSQL connection. This will work with all VM types. 2) Optionally use a real cluster for testing (only works with debian/pg11). The test Makefile must be manually updated with the -DHARNESS_PQ_REAL flag and -lpq must be added to the libs list. This method does not have 100% coverage but is very close. ***********************************************************************************************************************************/ #include "common/type/json.h" #include "common/harnessPq.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // PQfinish() is strictly checked harnessPqScriptStrictSet(true); // ***************************************************************************************************************************** if (testBegin("pgClient")) { // Create and start the test database // ------------------------------------------------------------------------------------------------------------------------- #ifdef HARNESS_PQ_REAL if (system("sudo pg_createcluster 11 test") != 0) THROW(AssertError, "unable to create cluster"); if (system("sudo pg_ctlcluster 11 test start") != 0) THROW(AssertError, "unable to start cluster"); if (system(strPtr(strNewFmt("sudo -u postgres psql -c 'create user %s superuser'", testUser()))) != 0) THROW(AssertError, "unable to create superuser"); #endif // Test connection error // ------------------------------------------------------------------------------------------------------------------------- #ifndef HARNESS_PQ_REAL harnessPqScriptSet((HarnessPq []) { {.function = HRNPQ_CONNECTDB, .param = "[\"dbname='postg \\\\'\\\\\\\\res' port=5433\"]"}, {.function = HRNPQ_STATUS, .resultInt = CONNECTION_BAD}, {.function = HRNPQ_ERRORMESSAGE, .resultZ = "could not connect to server: No such file or directory\n" "\tIs the server running locally and accepting\n" "\tconnections on Unix domain socket \"/var/run/postgresql/.s.PGSQL.5433\"?\n"}, {.function = HRNPQ_FINISH}, {.function = NULL} }); #endif PgClient *client = NULL; MEM_CONTEXT_TEMP_BEGIN() { TEST_ASSIGN(client, pgClientNew(NULL, 5433, strNew("postg '\\res"), NULL, 3000), "new client"); TEST_RESULT_VOID(pgClientMove(client, memContextPrior()), "move client"); TEST_RESULT_VOID(pgClientMove(NULL, memContextPrior()), "move null client"); } MEM_CONTEXT_TEMP_END(); TEST_ERROR( pgClientOpen(client), DbConnectError, "unable to connect to 'dbname='postg \\'\\\\res' port=5433': could not connect to server: No such file or directory\n" "\tIs the server running locally and accepting\n" "\tconnections on Unix domain socket \"/var/run/postgresql/.s.PGSQL.5433\"?"); TEST_RESULT_VOID(pgClientFree(client), "free client"); // Test send error // ------------------------------------------------------------------------------------------------------------------------- #ifndef HARNESS_PQ_REAL harnessPqScriptSet((HarnessPq []) { {.function = HRNPQ_CONNECTDB, .param = "[\"dbname='postgres' port=5432\"]"}, {.function = HRNPQ_STATUS, .resultInt = CONNECTION_OK}, {.function = HRNPQ_SENDQUERY, .param = "[\"select bogus from pg_class\"]", .resultInt = 0}, {.function = HRNPQ_ERRORMESSAGE, .resultZ = "another command is already in progress\n"}, {.function = HRNPQ_FINISH}, {.function = NULL} }); #endif TEST_ASSIGN(client, pgClientOpen(pgClientNew(NULL, 5432, strNew("postgres"), NULL, 3000)), "new client"); #ifdef HARNESS_PQ_REAL PQsendQuery(client->connection, "select bogus from pg_class"); #endif String *query = strNew("select bogus from pg_class"); TEST_ERROR( pgClientQuery(client, query), DbQueryError, "unable to send query 'select bogus from pg_class': another command is already in progress"); TEST_RESULT_VOID(pgClientFree(client), "free client"); // Connect // ------------------------------------------------------------------------------------------------------------------------- #ifndef HARNESS_PQ_REAL harnessPqScriptSet((HarnessPq []) { {.function = HRNPQ_CONNECTDB, .param = strPtr( strNewFmt("[\"dbname='postgres' port=5432 user='%s' host='/var/run/postgresql'\"]", testUser()))}, {.function = HRNPQ_STATUS, .resultInt = CONNECTION_OK}, {.function = NULL} }); #endif TEST_ASSIGN( client, pgClientOpen(pgClientNew(strNew("/var/run/postgresql"), 5432, strNew("postgres"), strNew(testUser()), 500)), "new client"); // Invalid query // ------------------------------------------------------------------------------------------------------------------------- #ifndef HARNESS_PQ_REAL harnessPqScriptSet((HarnessPq []) { {.function = HRNPQ_SENDQUERY, .param = "[\"select bogus from pg_class\"]", .resultInt = 1}, {.function = HRNPQ_CONSUMEINPUT}, {.function = HRNPQ_ISBUSY}, {.function = HRNPQ_GETRESULT}, {.function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_FATAL_ERROR}, {.function = HRNPQ_RESULTERRORMESSAGE, .resultZ = "ERROR: column \"bogus\" does not exist\n" "LINE 1: select bogus from pg_class\n" " ^ \n"}, {.function = HRNPQ_CLEAR}, {.function = HRNPQ_GETRESULT, .resultNull = true}, {.function = NULL} }); #endif query = strNew("select bogus from pg_class"); TEST_ERROR( pgClientQuery(client, query), DbQueryError, "unable to execute query 'select bogus from pg_class': ERROR: column \"bogus\" does not exist\n" "LINE 1: select bogus from pg_class\n" " ^"); // Timeout query // ------------------------------------------------------------------------------------------------------------------------- #ifndef HARNESS_PQ_REAL harnessPqScriptSet((HarnessPq []) { {.function = HRNPQ_SENDQUERY, .param = "[\"select pg_sleep(3000)\"]", .resultInt = 1}, {.function = HRNPQ_CONSUMEINPUT, .sleep = 600}, {.function = HRNPQ_ISBUSY, .resultInt = 1}, {.function = HRNPQ_CONSUMEINPUT}, {.function = HRNPQ_ISBUSY, .resultInt = 1}, {.function = HRNPQ_GETCANCEL}, {.function = HRNPQ_CANCEL, .resultInt = 1}, {.function = HRNPQ_FREECANCEL}, {.function = HRNPQ_GETRESULT}, {.function = HRNPQ_CLEAR}, {.function = HRNPQ_GETRESULT, .resultNull = true}, {.function = NULL} }); #endif query = strNew("select pg_sleep(3000)"); TEST_ERROR(pgClientQuery(client, query), DbQueryError, "query 'select pg_sleep(3000)' timed out after 500ms"); // Cancel error (can only be run with the scripted tests // ------------------------------------------------------------------------------------------------------------------------- #ifndef HARNESS_PQ_REAL harnessPqScriptSet((HarnessPq []) { {.function = HRNPQ_SENDQUERY, .param = "[\"select pg_sleep(3000)\"]", .resultInt = 1}, {.function = HRNPQ_CONSUMEINPUT, .sleep = 600}, {.function = HRNPQ_ISBUSY, .resultInt = 1}, {.function = HRNPQ_CONSUMEINPUT}, {.function = HRNPQ_ISBUSY, .resultInt = 1}, {.function = HRNPQ_GETCANCEL}, {.function = HRNPQ_CANCEL, .resultInt = 0, .resultZ = "test error"}, {.function = HRNPQ_FREECANCEL}, {.function = NULL} }); query = strNew("select pg_sleep(3000)"); TEST_ERROR(pgClientQuery(client, query), DbQueryError, "unable to cancel query 'select pg_sleep(3000)': test error"); #endif // Execute do block and raise notice // ------------------------------------------------------------------------------------------------------------------------- #ifndef HARNESS_PQ_REAL harnessPqScriptSet((HarnessPq []) { {.function = HRNPQ_SENDQUERY, .param = "[\"do $$ begin raise notice 'mememe'; end $$\"]", .resultInt = 1}, {.function = HRNPQ_CONSUMEINPUT}, {.function = HRNPQ_ISBUSY}, {.function = HRNPQ_GETRESULT}, {.function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_COMMAND_OK}, {.function = HRNPQ_CLEAR}, {.function = HRNPQ_GETRESULT, .resultNull = true}, {.function = NULL} }); #endif query = strNew("do $$ begin raise notice 'mememe'; end $$"); TEST_RESULT_PTR(pgClientQuery(client, query), NULL, "execute do block"); // Unsupported type // ------------------------------------------------------------------------------------------------------------------------- #ifndef HARNESS_PQ_REAL harnessPqScriptSet((HarnessPq []) { {.function = HRNPQ_SENDQUERY, .param = "[\"select clock_timestamp()\"]", .resultInt = 1}, {.function = HRNPQ_CONSUMEINPUT}, {.function = HRNPQ_ISBUSY}, {.function = HRNPQ_GETRESULT}, {.function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, {.function = HRNPQ_NTUPLES, .resultInt = 1}, {.function = HRNPQ_NFIELDS, .resultInt = 1}, {.function = HRNPQ_FTYPE, .param = "[0]", .resultInt = 1184}, {.function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = "2019-07-25 12:06:09.000282+00"}, {.function = HRNPQ_CLEAR}, {.function = HRNPQ_GETRESULT, .resultNull = true}, {.function = NULL} }); #endif query = strNew("select clock_timestamp()"); TEST_ERROR( pgClientQuery(client, query), FormatError, "unable to parse type 1184 in column 0 for query 'select clock_timestamp()'"); // Successful query // ------------------------------------------------------------------------------------------------------------------------- #ifndef HARNESS_PQ_REAL harnessPqScriptSet((HarnessPq []) { {.function = HRNPQ_SENDQUERY, .param = "[\"select oid, case when relname = 'pg_class' then null::text else '' end, relname, relname = 'pg_class'" " from pg_class where relname in ('pg_class', 'pg_proc')" " order by relname\"]", .resultInt = 1}, {.function = HRNPQ_CONSUMEINPUT}, {.function = HRNPQ_ISBUSY}, {.function = HRNPQ_GETRESULT}, {.function = HRNPQ_RESULTSTATUS, .resultInt = PGRES_TUPLES_OK}, {.function = HRNPQ_NTUPLES, .resultInt = 2}, {.function = HRNPQ_NFIELDS, .resultInt = 4}, {.function = HRNPQ_FTYPE, .param = "[0]", .resultInt = HRNPQ_TYPE_INT}, {.function = HRNPQ_FTYPE, .param = "[1]", .resultInt = HRNPQ_TYPE_TEXT}, {.function = HRNPQ_FTYPE, .param = "[2]", .resultInt = HRNPQ_TYPE_TEXT}, {.function = HRNPQ_FTYPE, .param = "[3]", .resultInt = HRNPQ_TYPE_BOOL}, {.function = HRNPQ_GETVALUE, .param = "[0,0]", .resultZ = "1259"}, {.function = HRNPQ_GETVALUE, .param = "[0,1]", .resultZ = ""}, {.function = HRNPQ_GETISNULL, .param = "[0,1]", .resultInt = 1}, {.function = HRNPQ_GETVALUE, .param = "[0,2]", .resultZ = "pg_class"}, {.function = HRNPQ_GETVALUE, .param = "[0,3]", .resultZ = "t"}, {.function = HRNPQ_GETVALUE, .param = "[1,0]", .resultZ = "1255"}, {.function = HRNPQ_GETVALUE, .param = "[1,1]", .resultZ = ""}, {.function = HRNPQ_GETISNULL, .param = "[1,1]", .resultInt = 0}, {.function = HRNPQ_GETVALUE, .param = "[1,2]", .resultZ = "pg_proc"}, {.function = HRNPQ_GETVALUE, .param = "[1,3]", .resultZ = "f"}, {.function = HRNPQ_CLEAR}, {.function = HRNPQ_GETRESULT, .resultNull = true}, {.function = NULL} }); #endif query = strNew( "select oid, case when relname = 'pg_class' then null::text else '' end, relname, relname = 'pg_class'" " from pg_class where relname in ('pg_class', 'pg_proc')" " order by relname"); TEST_RESULT_STR_Z( jsonFromVar(varNewVarLst(pgClientQuery(client, query))), "[[1259,null,\"pg_class\",true],[1255,\"\",\"pg_proc\",false]]", "simple query"); // Close connection // ------------------------------------------------------------------------------------------------------------------------- #ifndef HARNESS_PQ_REAL harnessPqScriptSet((HarnessPq []) { {.function = HRNPQ_FINISH}, {.function = HRNPQ_GETRESULT, .resultNull = true}, {.function = NULL} }); #endif TEST_RESULT_VOID(pgClientClose(client), "close client"); TEST_RESULT_VOID(pgClientClose(client), "close client again"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/postgres/interfaceTest.c000066400000000000000000000342631362531507100250640ustar00rootroot00000000000000/*********************************************************************************************************************************** Test PostgreSQL Interface ***********************************************************************************************************************************/ #include "storage/posix/storage.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); Storage *storageTest = storagePosixNew( strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); // ***************************************************************************************************************************** if (testBegin("pgVersionFromStr() and pgVersionToStr()")) { TEST_ERROR(pgVersionFromStr(strNew("9.3.4")), AssertError, "version 9.3.4 format is invalid"); TEST_ERROR(pgVersionFromStr(strNew("abc")), AssertError, "version abc format is invalid"); TEST_ERROR(pgVersionFromStr(NULL), AssertError, "assertion 'version != NULL' failed"); TEST_RESULT_INT(pgVersionFromStr(strNew("10")), PG_VERSION_10, "valid pg version 10"); TEST_RESULT_INT(pgVersionFromStr(strNew("9.6")), 90600, "valid pg version 9.6"); //-------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_STR_Z(pgVersionToStr(PG_VERSION_11), "11", "infoPgVersionToString 11"); TEST_RESULT_STR_Z(pgVersionToStr(PG_VERSION_96), "9.6", "infoPgVersionToString 9.6"); TEST_RESULT_STR_Z(pgVersionToStr(83456), "8.34", "infoPgVersionToString 83456"); } // ***************************************************************************************************************************** if (testBegin("pgControlVersion() and pgCatalogVersion()")) { TEST_ERROR(pgControlVersion(70300), AssertError, "invalid PostgreSQL version 70300"); TEST_RESULT_UINT(pgControlVersion(PG_VERSION_83), 833, "8.3 control version"); TEST_RESULT_UINT(pgControlVersion(PG_VERSION_11), 1100, "11 control version"); TEST_ERROR(pgCatalogVersion(70900), AssertError, "invalid PostgreSQL version 70900"); TEST_RESULT_UINT(pgCatalogVersion(PG_VERSION_83), 200711281, "8.3 catalog version"); TEST_RESULT_UINT(pgCatalogVersion(PG_VERSION_11), 201809051, "11 catalog version"); } // ***************************************************************************************************************************** if (testBegin("pgControlFromBuffer() and pgControlFromFile()")) { // Sanity test to ensure PG_VERSION_MAX has been updated //-------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_UINT(pgInterface[0].version, PG_VERSION_MAX, "check max version"); //-------------------------------------------------------------------------------------------------------------------------- String *controlFile = strNew(PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL); // Create a bogus control file Buffer *result = bufNew(PG_CONTROL_SIZE); memset(bufPtr(result), 0, bufSize(result)); bufUsedSet(result, bufSize(result)); *(PgControlCommon *)bufPtr(result) = (PgControlCommon) { .controlVersion = 501, .catalogVersion = 19780101, }; TEST_ERROR( pgControlFromBuffer(result), VersionNotSupportedError, "unexpected control version = 501 and catalog version = 19780101\nHINT: is this version of PostgreSQL supported?"); //-------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(pgControlTestToBuffer((PgControl){.version = 0}), AssertError, "invalid PostgreSQL version 0"); //-------------------------------------------------------------------------------------------------------------------------- storagePutP( storageNewWriteP(storageTest, controlFile), pgControlTestToBuffer((PgControl){.version = PG_VERSION_11, .systemId = 0xFACEFACE, .walSegmentSize = 1024 * 1024})); PgControl info = {0}; TEST_ASSIGN(info, pgControlFromFile(storageTest), "get control info v11"); TEST_RESULT_INT(info.systemId, 0xFACEFACE, " check system id"); TEST_RESULT_INT(info.version, PG_VERSION_11, " check version"); //-------------------------------------------------------------------------------------------------------------------------- storagePutP( storageNewWriteP(storageTest, controlFile), pgControlTestToBuffer((PgControl){.version = PG_VERSION_93, .walSegmentSize = 1024 * 1024})); TEST_ERROR( pgControlFromFile(storageTest), FormatError, "wal segment size is 1048576 but must be 16777216 for PostgreSQL <= 10"); //-------------------------------------------------------------------------------------------------------------------------- storagePutP( storageNewWriteP(storageTest, controlFile), pgControlTestToBuffer((PgControl){.version = PG_VERSION_95, .pageSize = 32 * 1024})); TEST_ERROR(pgControlFromFile(storageTest), FormatError, "page size is 32768 but must be 8192"); //-------------------------------------------------------------------------------------------------------------------------- storagePutP( storageNewWriteP(storageTest, controlFile), pgControlTestToBuffer((PgControl){.version = PG_VERSION_83, .systemId = 0xEFEFEFEFEF})); TEST_ASSIGN(info, pgControlFromFile(storageTest), "get control info v83"); TEST_RESULT_INT(info.systemId, 0xEFEFEFEFEF, " check system id"); TEST_RESULT_INT(info.version, PG_VERSION_83, " check version"); } // ***************************************************************************************************************************** if (testBegin("pgLsnFromStr(), pgLsnToStr(), pgLsnToWalSegment(), and pgLsnRangeToWalSegmentList()")) { TEST_RESULT_UINT(pgLsnFromStr(STRDEF("1/1")), 0x0000000100000001, "lsn to string"); TEST_RESULT_UINT(pgLsnFromStr(STRDEF("ffffffff/ffffffff")), 0xFFFFFFFFFFFFFFFF, "lsn to string"); TEST_RESULT_UINT(pgLsnFromStr(STRDEF("ffffffff/aaaaaaaa")), 0xFFFFFFFFAAAAAAAA, "lsn to string"); TEST_RESULT_STR_Z(pgLsnToStr(0xFFFFFFFFAAAAAAAA), "ffffffff/aaaaaaaa", "string to lsn"); TEST_RESULT_STR_Z(pgLsnToStr(0x0000000000000000), "0/0", "string to lsn"); TEST_RESULT_STR_Z(pgLsnToStr(0x0000000100000002), "1/2", "string to lsn"); TEST_RESULT_STR_Z(pgLsnToWalSegment(1, 0xFFFFFFFFAAAAAAAA, 0x1000000), "00000001FFFFFFFF000000AA", "lsn to wal segment"); TEST_RESULT_STR_Z(pgLsnToWalSegment(1, 0xFFFFFFFFAAAAAAAA, 0x40000000), "00000001FFFFFFFF00000002", "lsn to wal segment"); TEST_RESULT_STR_Z(pgLsnToWalSegment(1, 0xFFFFFFFF40000000, 0x40000000), "00000001FFFFFFFF00000001", "lsn to wal segment"); TEST_RESULT_STR_Z( strLstJoin( pgLsnRangeToWalSegmentList( PG_VERSION_92, 1, pgLsnFromStr(STRDEF("1/60")), pgLsnFromStr(STRDEF("1/60")), 16 * 1024 * 1024), ", "), "000000010000000100000000", "get single"); TEST_RESULT_STR_Z( strLstJoin( pgLsnRangeToWalSegmentList( PG_VERSION_92, 2, pgLsnFromStr(STRDEF("1/FD000000")), pgLsnFromStr(STRDEF("2/1000000")), 16 * 1024 * 1024), ", "), "0000000200000001000000FD, 0000000200000001000000FE, 000000020000000200000000, 000000020000000200000001", "get range <= 9.2"); TEST_RESULT_STR_Z( strLstJoin( pgLsnRangeToWalSegmentList( PG_VERSION_93, 2, pgLsnFromStr(STRDEF("1/FD000000")), pgLsnFromStr(STRDEF("2/60")), 16 * 1024 * 1024), ", "), "0000000200000001000000FD, 0000000200000001000000FE, 0000000200000001000000FF, 000000020000000200000000", "get range > 9.2"); TEST_RESULT_STR_Z( strLstJoin( pgLsnRangeToWalSegmentList( PG_VERSION_11, 2, pgLsnFromStr(STRDEF("A/800")), pgLsnFromStr(STRDEF("B/C0000000")), 1024 * 1024 * 1024), ", "), "000000020000000A00000000, 000000020000000A00000001, 000000020000000A00000002, 000000020000000A00000003" ", 000000020000000B00000000, 000000020000000B00000001, 000000020000000B00000002, 000000020000000B00000003", "get range >= 11/1GB"); TEST_RESULT_STR_Z( strLstJoin( pgLsnRangeToWalSegmentList( PG_VERSION_11, 3, pgLsnFromStr(STRDEF("7/FFEFFFFF")), pgLsnFromStr(STRDEF("8/001AAAAA")), 1024 * 1024), ", "), "000000030000000700000FFE, 000000030000000700000FFF, 000000030000000800000000, 000000030000000800000001", "get range >= 11/1MB"); } // ***************************************************************************************************************************** if (testBegin("pgLsnName(), pgTablespaceId(), pgWalName(), pgWalPath(), and pgXactPath()")) { TEST_RESULT_STR_Z(pgLsnName(PG_VERSION_96), "location", "check location name"); TEST_RESULT_STR_Z(pgLsnName(PG_VERSION_10), "lsn", "check lsn name"); TEST_RESULT_STR_Z(pgTablespaceId(PG_VERSION_84), NULL, "check 8.4 tablespace id"); TEST_RESULT_STR_Z(pgTablespaceId(PG_VERSION_90), "PG_9.0_201008051", "check 9.0 tablespace id"); TEST_RESULT_STR_Z(pgTablespaceId(PG_VERSION_94), "PG_9.4_201409291", "check 9.4 tablespace id"); TEST_RESULT_STR_Z(pgTablespaceId(PG_VERSION_11), "PG_11_201809051", "check 11 tablespace id"); TEST_RESULT_STR_Z(pgWalName(PG_VERSION_96), "xlog", "check xlog name"); TEST_RESULT_STR_Z(pgWalName(PG_VERSION_10), "wal", "check wal name"); TEST_RESULT_STR_Z(pgWalPath(PG_VERSION_96), "pg_xlog", "check xlog path"); TEST_RESULT_STR_Z(pgWalPath(PG_VERSION_10), "pg_wal", "check wal path"); TEST_RESULT_STR_Z(pgXactPath(PG_VERSION_96), "pg_clog", "check pg_clog name"); TEST_RESULT_STR_Z(pgXactPath(PG_VERSION_10), "pg_xact", "check pg_xact name"); } // ***************************************************************************************************************************** if (testBegin("pgWalFromBuffer() and pgWalFromFile()")) { String *walFile = strNewFmt("%s/0000000F0000000F0000000F", testPath()); // Create a bogus control file, initially not in long format) // -------------------------------------------------------------------------------------------------------------------------- Buffer *result = bufNew((size_t)16 * 1024 * 1024); memset(bufPtr(result), 0, bufSize(result)); bufUsedSet(result, bufSize(result)); *(PgWalCommon *)bufPtr(result) = (PgWalCommon){.magic = 777}; TEST_ERROR(pgWalFromBuffer(result), FormatError, "first page header in WAL file is expected to be in long format"); // Add the long flag so that the version will now error // -------------------------------------------------------------------------------------------------------------------------- ((PgWalCommon *)bufPtr(result))->flag = PG_WAL_LONG_HEADER; TEST_ERROR( pgWalFromBuffer(result), VersionNotSupportedError, "unexpected WAL magic 777\n" "HINT: is this version of PostgreSQL supported?"); //-------------------------------------------------------------------------------------------------------------------------- memset(bufPtr(result), 0, bufSize(result)); TEST_ERROR(pgWalTestToBuffer((PgWal){.version = 0}, result), AssertError, "invalid PostgreSQL version 0"); //-------------------------------------------------------------------------------------------------------------------------- memset(bufPtr(result), 0, bufSize(result)); pgWalTestToBuffer((PgWal){.version = PG_VERSION_11, .systemId = 0xECAFECAF}, result); storagePutP(storageNewWriteP(storageTest, walFile), result); PgWal info = {0}; TEST_ASSIGN(info, pgWalFromFile(walFile), "get wal info v11"); TEST_RESULT_INT(info.systemId, 0xECAFECAF, " check system id"); TEST_RESULT_INT(info.version, PG_VERSION_11, " check version"); //-------------------------------------------------------------------------------------------------------------------------- memset(bufPtr(result), 0, bufSize(result)); pgWalTestToBuffer((PgWal){.version = PG_VERSION_83, .systemId = 0xEAEAEAEA}, result); storagePutP(storageNewWriteP(storageTest, walFile), result); TEST_ASSIGN(info, pgWalFromFile(walFile), "get wal info v8.3"); TEST_RESULT_INT(info.systemId, 0xEAEAEAEA, " check system id"); TEST_RESULT_INT(info.version, PG_VERSION_83, " check version"); } // ***************************************************************************************************************************** if (testBegin("pgControlToLog()")) { PgControl pgControl = { .version = PG_VERSION_11, .systemId = 0xEFEFEFEFEF, .walSegmentSize= 16 * 1024 * 1024, .pageChecksum = true }; TEST_RESULT_STR_Z( pgControlToLog(&pgControl), "{version: 110000, systemId: 1030522662895, walSegmentSize: 16777216, pageChecksum: true}", "check log"); } // ***************************************************************************************************************************** if (testBegin("pgWalToLog()")) { PgWal pgWal = { .version = PG_VERSION_10, .systemId = 0xFEFEFEFEFE }; TEST_RESULT_STR_Z(pgWalToLog(&pgWal), "{version: 100000, systemId: 1095199817470}", "check log"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/postgres/pageChecksumTest.c000066400000000000000000000153171362531507100255220ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Page Checksums ***********************************************************************************************************************************/ /*********************************************************************************************************************************** Page data for testing -- use 8192 for page size since this is the most common value ***********************************************************************************************************************************/ #define TEST_PAGE_SIZE 8192 #define TEST_PAGE_TOTAL 16 // GCC doesn't like this elements of this array being used as both char * and struct * so wrap it in a function to disable the // optimizations that cause warnings unsigned char * testPage(unsigned int pageIdx) { static unsigned char testPageBuffer[TEST_PAGE_TOTAL][TEST_PAGE_SIZE]; return testPageBuffer[pageIdx]; } /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("pageChecksum()")) { // Checksum for 0x00 fill, page 0x00 memset(testPage(0), 0, TEST_PAGE_SIZE); TEST_RESULT_U16_HEX(pageChecksum(testPage(0), 0, TEST_PAGE_SIZE), 0xC6AA, "check for 0x00 filled page, block 0"); // Checksum for 0xFF fill, page 0x00 memset(testPage(0), 0xFF, TEST_PAGE_SIZE); TEST_RESULT_U16_HEX(pageChecksum(testPage(0), 0, TEST_PAGE_SIZE), 0x0E1C, "check for 0xFF filled page, block 0"); // Checksum for 0xFF fill, page 0xFF memset(testPage(0), 0xFF, TEST_PAGE_SIZE); TEST_RESULT_U16_HEX(pageChecksum(testPage(0), 999, TEST_PAGE_SIZE), 0x0EC3, "check for 0xFF filled page, block 999"); } // ***************************************************************************************************************************** if (testBegin("pageChecksumTest() and pageLsn()")) { // Zero the pages memset(testPage(0), 0, TEST_PAGE_TOTAL * TEST_PAGE_SIZE); for (unsigned int pageIdx = 0; pageIdx < TEST_PAGE_TOTAL; pageIdx++) *(PageHeader)testPage(pageIdx) = (PageHeaderData){.pd_upper = 0x0}; // Pages with pd_upper = 0 should always return true no matter the block no TEST_RESULT_BOOL(pageChecksumTest(testPage(0), 0, TEST_PAGE_SIZE, 0, 0), true, "pd_upper is 0, block 0"); TEST_RESULT_BOOL(pageChecksumTest(testPage(1), 999, TEST_PAGE_SIZE, 0, 0), true, "pd_upper is 0, block 999"); // Partial pages are always invalid *(PageHeader)testPage(0) = (PageHeaderData){.pd_upper = 0x00FF}; ((PageHeader)testPage(0))->pd_checksum = pageChecksum(testPage(0), 0, TEST_PAGE_SIZE); TEST_RESULT_BOOL(pageChecksumTest(testPage(0), 0, TEST_PAGE_SIZE, 1, 1), true, "valid page"); TEST_RESULT_BOOL(pageChecksumTest(testPage(0), 0, TEST_PAGE_SIZE / 2, 1, 1), false, "invalid partial page"); // Update pd_upper and check for failure no matter the block no *(PageHeader)testPage(0) = (PageHeaderData){.pd_upper = 0x00FF, .pd_checksum = 0}; TEST_RESULT_BOOL(pageChecksumTest(testPage(0), 0, TEST_PAGE_SIZE, 0xFFFF, 0xFFFF), false, "badchecksum, page 0"); TEST_RESULT_BOOL( pageChecksumTest(testPage(0), 9999, TEST_PAGE_SIZE, 0xFFFF, 0xFFFF), false, "badchecksum, page 9999"); // Update LSNs and check that page checksums past the ignore limits are successful ((PageHeader)testPage(0))->pd_lsn.walid = 0x8888; ((PageHeader)testPage(0))->pd_lsn.xrecoff = 0x8888; TEST_RESULT_UINT(pageLsn(testPage(0)), 0x0000888800008888, "check page lsn"); TEST_RESULT_BOOL( pageChecksumTest(testPage(0), 0, TEST_PAGE_SIZE, 0x8888, 0x8888), true, "bad checksum past ignore limit"); TEST_RESULT_BOOL( pageChecksumTest(testPage(0), 0, TEST_PAGE_SIZE, 0x8888, 0x8889), false, "bad checksum before ignore limit"); TEST_RESULT_BOOL( pageChecksumTest(testPage(0), 0, TEST_PAGE_SIZE, 0x8889, 0x8889), false, "bad checksum before ignore limit"); } // ***************************************************************************************************************************** if (testBegin("pageChecksumBufferTest()")) { // Check that assertion fails if page buffer and page size are not divisible TEST_ERROR( pageChecksumBufferTest(testPage(0), TEST_PAGE_TOTAL * TEST_PAGE_SIZE - 1, 0, TEST_PAGE_SIZE, 0, 0), AssertError, "assertion 'pageBufferSize % pageSize == 0' failed"); // Create pages that will pass the test (starting with block 0) for (unsigned int pageIdx = 0; pageIdx < TEST_PAGE_TOTAL; pageIdx++) { // Don't fill with zero because zeroes will succeed on the pd_upper check memset(testPage(pageIdx), 0x77, TEST_PAGE_SIZE); ((PageHeader)testPage(pageIdx))->pd_checksum = pageChecksum(testPage(pageIdx), pageIdx, TEST_PAGE_SIZE); } TEST_RESULT_BOOL( pageChecksumBufferTest(testPage(0), TEST_PAGE_TOTAL * TEST_PAGE_SIZE, 0, TEST_PAGE_SIZE, 0xFFFFFFFF, 0xFFFFFFFF), true, "valid page buffer starting at block 0"); // Create pages that will pass the test (beginning with block <> 0) unsigned int blockBegin = 999; for (unsigned int pageIdx = 0; pageIdx < TEST_PAGE_TOTAL; pageIdx++) { ((PageHeader)testPage(pageIdx))->pd_checksum = pageChecksum( testPage(pageIdx), pageIdx + blockBegin, TEST_PAGE_SIZE); } TEST_RESULT_BOOL( pageChecksumBufferTest( testPage(0), TEST_PAGE_TOTAL * TEST_PAGE_SIZE, blockBegin, TEST_PAGE_SIZE, 0xFFFFFFFF, 0xFFFFFFFF), true, "valid page buffer starting at block 999"); // Break the checksum for a page and make sure it is found unsigned int pageInvalid = 7; ASSERT(pageInvalid < TEST_PAGE_TOTAL); ((PageHeader)testPage(pageInvalid))->pd_checksum = 0xEEEE; TEST_RESULT_BOOL( pageChecksumBufferTest( testPage(0), TEST_PAGE_TOTAL * TEST_PAGE_SIZE, blockBegin, TEST_PAGE_SIZE, 0xFFFFFFFF, 0xFFFFFFFF), false, "invalid page buffer"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/protocol/000077500000000000000000000000001362531507100221035ustar00rootroot00000000000000pgbackrest-release-2.24/test/src/module/protocol/protocolTest.c000066400000000000000000001416561362531507100247650ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Protocol ***********************************************************************************************************************************/ #include "common/io/handleRead.h" #include "common/io/handleWrite.h" #include "common/io/bufferRead.h" #include "common/io/bufferWrite.h" #include "common/regExp.h" #include "storage/storage.h" #include "storage/posix/storage.h" #include "version.h" #include "common/harnessConfig.h" #include "common/harnessFork.h" /*********************************************************************************************************************************** Test protocol request handler ***********************************************************************************************************************************/ bool testServerProtocol(const String *command, const VariantList *paramList, ProtocolServer *server) { FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(STRING, command); FUNCTION_HARNESS_PARAM(VARIANT_LIST, paramList); FUNCTION_HARNESS_PARAM(PROTOCOL_SERVER, server); FUNCTION_HARNESS_END(); ASSERT(command != NULL); // Attempt to satisfy the request -- we may get requests that are meant for other handlers bool found = true; MEM_CONTEXT_TEMP_BEGIN() { if (strEq(command, strNew("assert"))) { THROW(AssertError, "test assert"); } else if (strEq(command, strNew("request-simple"))) { protocolServerResponse(server, varNewBool(true)); } else if (strEq(command, strNew("request-complex"))) { protocolServerResponse(server, varNewBool(false)); protocolServerWriteLine(server, strNew("LINEOFTEXT")); protocolServerWriteLine(server, NULL); ioWriteFlush(protocolServerIoWrite(server)); } else found = false; } MEM_CONTEXT_TEMP_END(); FUNCTION_HARNESS_RESULT(BOOL, found); } /*********************************************************************************************************************************** Test ParallelJobCallback ***********************************************************************************************************************************/ typedef struct TestParallelJobCallback { List *jobList; // List of jobs to process unsigned int jobIdx; // Current index in the list to be processed bool clientSeen[2]; // Make sure the client idx was seen } TestParallelJobCallback; static ProtocolParallelJob *testParallelJobCallback(void *data, unsigned int clientIdx) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM_P(VOID, data); FUNCTION_TEST_PARAM(UINT, clientIdx); FUNCTION_TEST_END(); TestParallelJobCallback *listData = data; // Mark the client idx as seen listData->clientSeen[clientIdx] = true; // Get a new job if there are any left if (listData->jobIdx < lstSize(listData->jobList)) { ProtocolParallelJob *job = *(ProtocolParallelJob **)lstGet(listData->jobList, listData->jobIdx); listData->jobIdx++; FUNCTION_TEST_RETURN(protocolParallelJobMove(job, memContextCurrent())); } FUNCTION_TEST_RETURN(NULL); } /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); Storage *storageTest = storagePosixNew( strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); // ***************************************************************************************************************************** if (testBegin("protocolStorageTypeEnum() and protocolStorageTypeEnum()")) { TEST_RESULT_UINT(protocolStorageTypeEnum(PROTOCOL_REMOTE_TYPE_PG_STR), protocolStorageTypePg, "pg enum"); TEST_RESULT_UINT(protocolStorageTypeEnum(PROTOCOL_REMOTE_TYPE_REPO_STR), protocolStorageTypeRepo, "repo enum"); TEST_ERROR(protocolStorageTypeEnum(STRDEF(BOGUS_STR)), AssertError, "invalid protocol storage type 'BOGUS'"); TEST_RESULT_STR(protocolStorageTypeStr(protocolStorageTypePg), PROTOCOL_REMOTE_TYPE_PG_STR, "pg str"); TEST_RESULT_STR(protocolStorageTypeStr(protocolStorageTypeRepo), PROTOCOL_REMOTE_TYPE_REPO_STR, "repo str"); TEST_ERROR(protocolStorageTypeStr((ProtocolStorageType)999), AssertError, "invalid protocol storage type 999"); } // ***************************************************************************************************************************** if (testBegin("repoIsLocal() and pgIsLocal()")) { StringList *argList = strLstNew(); strLstAddZ(argList, "pgbackrest"); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "archive-get"); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); TEST_RESULT_BOOL(repoIsLocal(), true, "repo is local"); TEST_RESULT_VOID(repoIsLocalVerify(), " local verified"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "pgbackrest"); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--repo1-host=remote-host"); strLstAddZ(argList, "archive-get"); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); TEST_RESULT_BOOL(repoIsLocal(), false, "repo is remote"); TEST_ERROR_FMT(repoIsLocalVerify(), HostInvalidError, "archive-get command must be run on the repository host"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("pg1 is local"); argList = strLstNew(); strLstAddZ(argList, "pgbackrest"); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--pg1-path=/path/to"); strLstAddZ(argList, "--repo1-retention-full=1"); strLstAddZ(argList, "backup"); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); TEST_RESULT_BOOL(pgIsLocal(1), true, "pg is local"); TEST_RESULT_VOID(pgIsLocalVerify(), "verify pg is local"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("pg1 is not local"); argList = strLstNew(); strLstAddZ(argList, "pgbackrest"); strLstAddZ(argList, "--" CFGOPT_STANZA "=test1"); strLstAddZ(argList, "--" CFGOPT_PG1_HOST "=test1"); strLstAddZ(argList, "--pg1-path=/path/to"); strLstAddZ(argList, "restore"); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); TEST_RESULT_BOOL(pgIsLocal(1), false, "pg is remote"); TEST_ERROR_FMT(pgIsLocalVerify(), HostInvalidError, "restore command must be run on the PostgreSQL host"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("pg7 is not local"); argList = strLstNew(); strLstAddZ(argList, "pgbackrest"); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--" CFGOPT_PG1_PATH "=/path/to/bogus"); strLstAddZ(argList, "--pg7-path=/path/to"); strLstAddZ(argList, "--pg7-host=test1"); strLstAddZ(argList, "--host-id=7"); strLstAddZ(argList, "--" CFGOPT_REMOTE_TYPE "=" PROTOCOL_REMOTE_TYPE_PG); strLstAddZ(argList, "--process=0"); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, CFGCMD_BACKUP ":" CONFIG_COMMAND_ROLE_LOCAL); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); TEST_RESULT_BOOL(pgIsLocal(7), false, "pg is remote"); } // ***************************************************************************************************************************** if (testBegin("protocolLocalParam()")) { StringList *argList = strLstNew(); strLstAddZ(argList, "pgbackrest"); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "archive-get"); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); TEST_RESULT_STR_Z( strLstJoin(protocolLocalParam(protocolStorageTypeRepo, 1, 0), "|"), "--host-id=1|--log-level-console=off|--log-level-file=off|--log-level-stderr=error|--process=0|--remote-type=repo" "|--stanza=test1|archive-get:local", "local repo protocol params"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "pgbackrest"); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--pg1-path=/pg"); strLstAddZ(argList, "--repo1-retention-full=1"); strLstAddZ(argList, "--log-subprocess"); strLstAddZ(argList, "backup"); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); TEST_RESULT_STR_Z( strLstJoin(protocolLocalParam(protocolStorageTypePg, 2, 1), "|"), "--host-id=2|--log-level-console=off|--log-level-file=info|--log-level-stderr=error|--log-subprocess|--pg1-path=/pg" "|--process=1|--remote-type=pg|--repo1-retention-full=1|--stanza=test1|backup:local", "local pg protocol params"); } // ***************************************************************************************************************************** if (testBegin("protocolRemoteParam()")) { storagePutP(storageNewWriteP(storageTest, strNew("pgbackrest.conf")), bufNew(0)); StringList *argList = strLstNew(); strLstAddZ(argList, "pgbackrest"); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--repo1-host=repo-host"); strLstAddZ(argList, "--repo1-host-user=repo-host-user"); // Local config settings should never be passed to the remote strLstAdd(argList, strNewFmt("--config=%s/pgbackrest.conf", testPath())); strLstAdd(argList, strNewFmt("--config-include-path=%s", testPath())); strLstAdd(argList, strNewFmt("--config-path=%s", testPath())); strLstAddZ(argList, "archive-get"); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); TEST_RESULT_STR_Z( strLstJoin(protocolRemoteParam(protocolStorageTypeRepo, 0, 0), "|"), "-o|LogLevel=error|-o|Compression=no|-o|PasswordAuthentication=no|repo-host-user@repo-host" "|pgbackrest --log-level-console=off --log-level-file=off --log-level-stderr=error --process=0 --remote-type=repo" " --stanza=test1 archive-get:remote", "remote protocol params"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "pgbackrest"); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--log-subprocess"); strLstAddZ(argList, "--repo1-host=repo-host"); strLstAddZ(argList, "--repo1-host-port=444"); strLstAddZ(argList, "--repo1-host-config=/path/pgbackrest.conf"); strLstAddZ(argList, "--repo1-host-config-include-path=/path/include"); strLstAddZ(argList, "--repo1-host-config-path=/path/config"); strLstAddZ(argList, "--repo1-host-user=repo-host-user"); strLstAddZ(argList, "archive-get"); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); TEST_RESULT_STR_Z( strLstJoin(protocolRemoteParam(protocolStorageTypeRepo, 1, 0), "|"), "-o|LogLevel=error|-o|Compression=no|-o|PasswordAuthentication=no|-p|444|repo-host-user@repo-host" "|pgbackrest --config=/path/pgbackrest.conf --config-include-path=/path/include --config-path=/path/config" " --log-level-console=off --log-level-file=info --log-level-stderr=error --log-subprocess --process=1" " --remote-type=repo --stanza=test1 archive-get:remote", "remote protocol params with replacements"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "pgbackrest"); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--process=3"); strLstAddZ(argList, "--host-id=1"); strLstAddZ(argList, "--" CFGOPT_REMOTE_TYPE "=" PROTOCOL_REMOTE_TYPE_REPO); strLstAddZ(argList, "--repo1-host=repo-host"); strLstAddZ(argList, CFGCMD_ARCHIVE_GET ":" CONFIG_COMMAND_ROLE_LOCAL); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); TEST_RESULT_STR_Z( strLstJoin(protocolRemoteParam(protocolStorageTypeRepo, 66, 0), "|"), "-o|LogLevel=error|-o|Compression=no|-o|PasswordAuthentication=no|pgbackrest@repo-host" "|pgbackrest --log-level-console=off --log-level-file=off --log-level-stderr=error --process=3 --remote-type=repo" " --stanza=test1 archive-get:remote", "remote protocol params for backup local"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "pgbackrest"); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--pg1-path=/path/to/1"); strLstAddZ(argList, "--pg1-host=pg1-host"); strLstAddZ(argList, "--repo1-retention-full=1"); strLstAddZ(argList, "backup"); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); TEST_RESULT_STR_Z( strLstJoin(protocolRemoteParam(protocolStorageTypePg, 1, 0), "|"), "-o|LogLevel=error|-o|Compression=no|-o|PasswordAuthentication=no|postgres@pg1-host" "|pgbackrest --log-level-console=off --log-level-file=off --log-level-stderr=error --pg1-path=/path/to/1" " --process=1 --remote-type=pg --stanza=test1 backup:remote", "remote protocol params for db backup"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "pgbackrest"); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--process=4"); strLstAddZ(argList, "--host-id=2"); strLstAddZ(argList, "--pg1-path=/path/to/1"); strLstAddZ(argList, "--pg1-socket-path=/socket3"); strLstAddZ(argList, "--pg1-port=1111"); strLstAddZ(argList, "--pg2-path=/path/to/2"); strLstAddZ(argList, "--pg2-host=pg2-host"); strLstAddZ(argList, "--" CFGOPT_REMOTE_TYPE "=" PROTOCOL_REMOTE_TYPE_PG); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, CFGCMD_BACKUP ":" CONFIG_COMMAND_ROLE_LOCAL); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); TEST_RESULT_STR_Z( strLstJoin(protocolRemoteParam(protocolStorageTypePg, 1, 1), "|"), "-o|LogLevel=error|-o|Compression=no|-o|PasswordAuthentication=no|postgres@pg2-host" "|pgbackrest --log-level-console=off --log-level-file=off --log-level-stderr=error --pg1-path=/path/to/2" " --process=4 --remote-type=pg --stanza=test1 backup:remote", "remote protocol params for db local"); // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "pgbackrest"); strLstAddZ(argList, "--stanza=test1"); strLstAddZ(argList, "--process=4"); strLstAddZ(argList, "--host-id=3"); strLstAddZ(argList, "--pg1-path=/path/to/1"); strLstAddZ(argList, "--pg3-path=/path/to/3"); strLstAddZ(argList, "--pg3-host=pg3-host"); strLstAddZ(argList, "--pg3-socket-path=/socket3"); strLstAddZ(argList, "--pg3-port=3333"); strLstAddZ(argList, "--" CFGOPT_REMOTE_TYPE "=" PROTOCOL_REMOTE_TYPE_PG); strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1"); strLstAddZ(argList, CFGCMD_BACKUP ":" CONFIG_COMMAND_ROLE_LOCAL); harnessCfgLoadRaw(strLstSize(argList), strLstPtr(argList)); TEST_RESULT_STR_Z( strLstJoin(protocolRemoteParam(protocolStorageTypePg, 1, 2), "|"), "-o|LogLevel=error|-o|Compression=no|-o|PasswordAuthentication=no|postgres@pg3-host" "|pgbackrest --log-level-console=off --log-level-file=off --log-level-stderr=error --pg1-path=/path/to/3" " --pg1-port=3333 --pg1-socket-path=/socket3 --process=4 --remote-type=pg --stanza=test1 backup:remote", "remote protocol params for db local"); } // ***************************************************************************************************************************** if (testBegin("ProtocolCommand")) { ProtocolCommand *command = NULL; MEM_CONTEXT_TEMP_BEGIN() { TEST_ASSIGN(command, protocolCommandNew(strNew("command1")), "create command"); TEST_RESULT_PTR(protocolCommandParamAdd(command, varNewStr(strNew("param1"))), command, "add param"); TEST_RESULT_PTR(protocolCommandParamAdd(command, varNewStr(strNew("param2"))), command, "add param"); TEST_RESULT_PTR(protocolCommandMove(command, memContextPrior()), command, "move protocol command"); TEST_RESULT_PTR(protocolCommandMove(NULL, memContextPrior()), NULL, "move null protocol command"); } MEM_CONTEXT_TEMP_END(); TEST_RESULT_STR_Z(protocolCommandToLog(command), "{command: command1}", "check log"); TEST_RESULT_STR_Z(protocolCommandJson(command), "{\"cmd\":\"command1\",\"param\":[\"param1\",\"param2\"]}", "check json"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(command, protocolCommandNew(strNew("command2")), "create command"); TEST_RESULT_STR_Z(protocolCommandToLog(command), "{command: command2}", "check log"); TEST_RESULT_STR_Z(protocolCommandJson(command), "{\"cmd\":\"command2\"}", "check json"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(protocolCommandFree(command), "free command"); } // ***************************************************************************************************************************** if (testBegin("ProtocolClient")) { HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, true) { IoRead *read = ioHandleReadNew(strNew("server read"), HARNESS_FORK_CHILD_READ(), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("server write"), HARNESS_FORK_CHILD_WRITE()); ioWriteOpen(write); // Various bogus greetings ioWriteStrLine(write, strNew("bogus greeting")); ioWriteFlush(write); ioWriteStrLine(write, strNew("{\"name\":999}")); ioWriteFlush(write); ioWriteStrLine(write, strNew("{\"name\":null}")); ioWriteFlush(write); ioWriteStrLine(write, strNew("{\"name\":\"bogus\"}")); ioWriteFlush(write); ioWriteStrLine(write, strNew("{\"name\":\"pgBackRest\",\"service\":\"bogus\"}")); ioWriteFlush(write); ioWriteStrLine(write, strNew("{\"name\":\"pgBackRest\",\"service\":\"test\",\"version\":\"bogus\"}")); ioWriteFlush(write); // Correct greeting with noop ioWriteStrLine(write, strNew("{\"name\":\"pgBackRest\",\"service\":\"test\",\"version\":\"" PROJECT_VERSION "\"}")); ioWriteFlush(write); TEST_RESULT_STR_Z(ioReadLine(read), "{\"cmd\":\"noop\"}", "noop"); ioWriteStrLine(write, strNew("{}")); ioWriteFlush(write); // Throw errors TEST_RESULT_STR_Z(ioReadLine(read), "{\"cmd\":\"noop\"}", "noop with error text"); ioWriteStrLine(write, strNew("{\"err\":25,\"out\":\"sample error message\",\"errStack\":\"stack data\"}")); ioWriteFlush(write); TEST_RESULT_STR_Z(ioReadLine(read), "{\"cmd\":\"noop\"}", "noop with no error text"); ioWriteStrLine(write, strNew("{\"err\":255}")); ioWriteFlush(write); // No output expected TEST_RESULT_STR_Z(ioReadLine(read), "{\"cmd\":\"noop\"}", "noop with parameters returned"); ioWriteStrLine(write, strNew("{\"out\":[\"bogus\"]}")); ioWriteFlush(write); // Send output TEST_RESULT_STR_Z(ioReadLine(read), "{\"cmd\":\"test\"}", "test command"); ioWriteStrLine(write, strNew(".OUTPUT")); ioWriteStrLine(write, strNew("{\"out\":[\"value1\",\"value2\"]}")); ioWriteFlush(write); // invalid line TEST_RESULT_STR_Z(ioReadLine(read), "{\"cmd\":\"invalid-line\"}", "invalid line command"); ioWrite(write, LF_BUF); ioWriteFlush(write); // error instead of output TEST_RESULT_STR_Z(ioReadLine(read), "{\"cmd\":\"error-instead-of-output\"}", "error instead of output command"); ioWriteStrLine(write, strNew("{\"err\":255}")); ioWriteFlush(write); // unexpected output TEST_RESULT_STR_Z(ioReadLine(read), "{\"cmd\":\"unexpected-output\"}", "unexpected output"); ioWriteStrLine(write, strNew("{}")); ioWriteFlush(write); // invalid prefix TEST_RESULT_STR_Z(ioReadLine(read), "{\"cmd\":\"invalid-prefix\"}", "invalid prefix"); ioWriteStrLine(write, strNew("~line")); ioWriteFlush(write); // Wait for exit TEST_RESULT_STR_Z(ioReadLine(read), "{\"cmd\":\"exit\"}", "exit command"); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { IoRead *read = ioHandleReadNew(strNew("client read"), HARNESS_FORK_PARENT_READ_PROCESS(0), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("client write"), HARNESS_FORK_PARENT_WRITE_PROCESS(0)); ioWriteOpen(write); // Various bogus greetings TEST_ERROR( protocolClientNew(strNew("test client"), strNew("test"), read, write), JsonFormatError, "expected '{' at 'bogus greeting'"); TEST_ERROR( protocolClientNew(strNew("test client"), strNew("test"), read, write), ProtocolError, "greeting key 'name' must be string type"); TEST_ERROR( protocolClientNew(strNew("test client"), strNew("test"), read, write), ProtocolError, "unable to find greeting key 'name'"); TEST_ERROR( protocolClientNew(strNew("test client"), strNew("test"), read, write), ProtocolError, "expected value 'pgBackRest' for greeting key 'name' but got 'bogus'"); TEST_ERROR( protocolClientNew(strNew("test client"), strNew("test"), read, write), ProtocolError, "expected value 'test' for greeting key 'service' but got 'bogus'"); TEST_ERROR( protocolClientNew(strNew("test client"), strNew("test"), read, write), ProtocolError, "expected value '" PROJECT_VERSION "' for greeting key 'version' but got 'bogus'"); // Correct greeting ProtocolClient *client = NULL; MEM_CONTEXT_TEMP_BEGIN() { TEST_ASSIGN( client, protocolClientMove( protocolClientNew(strNew("test client"), strNew("test"), read, write), memContextPrior()), "create client"); TEST_RESULT_VOID(protocolClientMove(NULL, memContextPrior()), "move null client"); } MEM_CONTEXT_TEMP_END(); TEST_RESULT_PTR(protocolClientIoRead(client), client->read, "get read io"); TEST_RESULT_PTR(protocolClientIoWrite(client), client->write, "get write io"); // Throw errors TEST_ERROR( protocolClientNoOp(client), AssertError, "raised from test client: sample error message\nstack data"); harnessLogLevelSet(logLevelDebug); TEST_ERROR( protocolClientNoOp(client), UnknownError, "raised from test client: no details available\nno stack trace available"); harnessLogLevelReset(); // No output expected TEST_ERROR(protocolClientNoOp(client), AssertError, "no output required by command"); // Get command output const VariantList *output = NULL; TEST_RESULT_VOID( protocolClientWriteCommand(client, protocolCommandNew(strNew("test"))), "execute command with output"); TEST_RESULT_STR_Z(protocolClientReadLine(client), "OUTPUT", "check output"); TEST_ASSIGN(output, varVarLst(protocolClientReadOutput(client, true)), "execute command with output"); TEST_RESULT_UINT(varLstSize(output), 2, "check output size"); TEST_RESULT_STR_Z(varStr(varLstGet(output, 0)), "value1", "check value1"); TEST_RESULT_STR_Z(varStr(varLstGet(output, 1)), "value2", "check value2"); // Invalid line TEST_RESULT_VOID( protocolClientWriteCommand(client, protocolCommandNew(strNew("invalid-line"))), "execute command that returns invalid line"); TEST_ERROR(protocolClientReadLine(client), FormatError, "unexpected empty line"); // Error instead of output TEST_RESULT_VOID( protocolClientWriteCommand(client, protocolCommandNew(strNew("error-instead-of-output"))), "execute command that returns error instead of output"); TEST_ERROR(protocolClientReadLine(client), UnknownError, "raised from test client: no details available"); // Unexpected output TEST_RESULT_VOID( protocolClientWriteCommand(client, protocolCommandNew(strNew("unexpected-output"))), "execute command that returns unexpected output"); TEST_ERROR(protocolClientReadLine(client), FormatError, "expected error but got output"); // Invalid prefix TEST_RESULT_VOID( protocolClientWriteCommand(client, protocolCommandNew(strNew("invalid-prefix"))), "execute command that returns an invalid prefix"); TEST_ERROR(protocolClientReadLine(client), FormatError, "invalid prefix in '~line'"); // Free client TEST_RESULT_VOID(protocolClientFree(client), "free client"); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); } // ***************************************************************************************************************************** if (testBegin("ProtocolServer")) { HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, true) { IoRead *read = ioHandleReadNew(strNew("client read"), HARNESS_FORK_CHILD_READ(), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("client write"), HARNESS_FORK_CHILD_WRITE()); ioWriteOpen(write); // Check greeting TEST_RESULT_STR_Z( ioReadLine(read), "{\"name\":\"pgBackRest\",\"service\":\"test\",\"version\":\"" PROJECT_VERSION "\"}", "check greeting"); // Noop TEST_RESULT_VOID(ioWriteStrLine(write, strNew("{\"cmd\":\"noop\"}")), "write noop"); TEST_RESULT_VOID(ioWriteFlush(write), "flush noop"); TEST_RESULT_STR_Z(ioReadLine(read), "{}", "noop result"); // Invalid command KeyValue *result = NULL; TEST_RESULT_VOID(ioWriteStrLine(write, strNew("{\"cmd\":\"bogus\"}")), "write bogus"); TEST_RESULT_VOID(ioWriteFlush(write), "flush bogus"); TEST_ASSIGN(result, varKv(jsonToVar(ioReadLine(read))), "parse error result"); TEST_RESULT_INT(varIntForce(kvGet(result, VARSTRDEF("err"))), 39, " check code"); TEST_RESULT_STR_Z(varStr(kvGet(result, VARSTRDEF("out"))), "invalid command 'bogus'", " check message"); TEST_RESULT_BOOL(kvGet(result, VARSTRDEF("errStack")) != NULL, true, " check stack exists"); // Simple request TEST_RESULT_VOID(ioWriteStrLine(write, strNew("{\"cmd\":\"request-simple\"}")), "write simple request"); TEST_RESULT_VOID(ioWriteFlush(write), "flush simple request"); TEST_RESULT_STR_Z(ioReadLine(read), "{\"out\":true}", "simple request result"); // Throw an assert error which will include a stack trace TEST_RESULT_VOID(ioWriteStrLine(write, strNew("{\"cmd\":\"assert\"}")), "write assert"); TEST_RESULT_VOID(ioWriteFlush(write), "flush assert error"); TEST_ASSIGN(result, varKv(jsonToVar(ioReadLine(read))), "parse error result"); TEST_RESULT_INT(varIntForce(kvGet(result, VARSTRDEF("err"))), 25, " check code"); TEST_RESULT_STR_Z(varStr(kvGet(result, VARSTRDEF("out"))), "test assert", " check message"); TEST_RESULT_BOOL(kvGet(result, VARSTRDEF("errStack")) != NULL, true, " check stack exists"); // Complex request -- after process loop has been restarted TEST_RESULT_VOID(ioWriteStrLine(write, strNew("{\"cmd\":\"request-complex\"}")), "write complex request"); TEST_RESULT_VOID(ioWriteFlush(write), "flush complex request"); TEST_RESULT_STR_Z(ioReadLine(read), "{\"out\":false}", "complex request result"); TEST_RESULT_STR_Z(ioReadLine(read), ".LINEOFTEXT", "complex request result"); TEST_RESULT_STR_Z(ioReadLine(read), ".", "complex request result"); // Exit TEST_RESULT_VOID(ioWriteStrLine(write, strNew("{\"cmd\":\"exit\"}")), "write exit"); TEST_RESULT_VOID(ioWriteFlush(write), "flush exit"); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { IoRead *read = ioHandleReadNew(strNew("server read"), HARNESS_FORK_PARENT_READ_PROCESS(0), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("server write"), HARNESS_FORK_PARENT_WRITE_PROCESS(0)); ioWriteOpen(write); // Send greeting ProtocolServer *server = NULL; MEM_CONTEXT_TEMP_BEGIN() { TEST_ASSIGN( server, protocolServerMove( protocolServerNew(strNew("test server"), strNew("test"), read, write), memContextPrior()), "create server"); TEST_RESULT_VOID(protocolServerMove(NULL, memContextPrior()), "move null server"); } MEM_CONTEXT_TEMP_END(); TEST_RESULT_PTR(protocolServerIoRead(server), server->read, "get read io"); TEST_RESULT_PTR(protocolServerIoWrite(server), server->write, "get write io"); TEST_RESULT_VOID(protocolServerHandlerAdd(server, testServerProtocol), "add handler"); TEST_RESULT_VOID(protocolServerProcess(server), "run process loop"); TEST_RESULT_VOID(protocolServerFree(server), "free server"); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); } // ***************************************************************************************************************************** if (testBegin("ProtocolParallel and ProtocolParallelJob")) { ProtocolParallelJob *job = NULL; MEM_CONTEXT_TEMP_BEGIN() { TEST_ASSIGN(job, protocolParallelJobNew(varNewStr(strNew("test")), protocolCommandNew(strNew("command"))), "new job"); TEST_RESULT_PTR(protocolParallelJobMove(job, memContextPrior()), job, "move job"); TEST_RESULT_PTR(protocolParallelJobMove(NULL, memContextPrior()), NULL, "move null job"); } MEM_CONTEXT_TEMP_END(); TEST_ERROR( protocolParallelJobStateSet(job, protocolParallelJobStateDone), AssertError, "invalid state transition from 'pending' to 'done'"); TEST_RESULT_VOID(protocolParallelJobStateSet(job, protocolParallelJobStateRunning), "transition to running"); TEST_ERROR( protocolParallelJobStateSet(job, protocolParallelJobStatePending), AssertError, "invalid state transition from 'running' to 'pending'"); // Free job TEST_RESULT_VOID(protocolParallelJobFree(job), "free job"); // ------------------------------------------------------------------------------------------------------------------------- HARNESS_FORK_BEGIN() { // Local 1 HARNESS_FORK_CHILD_BEGIN(0, true) { IoRead *read = ioHandleReadNew(strNew("server read"), HARNESS_FORK_CHILD_READ(), 10000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("server write"), HARNESS_FORK_CHILD_WRITE()); ioWriteOpen(write); // Greeting with noop ioWriteStrLine(write, strNew("{\"name\":\"pgBackRest\",\"service\":\"test\",\"version\":\"" PROJECT_VERSION "\"}")); ioWriteFlush(write); TEST_RESULT_STR_Z(ioReadLine(read), "{\"cmd\":\"noop\"}", "noop"); ioWriteStrLine(write, strNew("{}")); ioWriteFlush(write); TEST_RESULT_STR_Z(ioReadLine(read), "{\"cmd\":\"command1\",\"param\":[\"param1\",\"param2\"]}", "command1"); sleepMSec(4000); ioWriteStrLine(write, strNew("{\"out\":1}")); ioWriteFlush(write); // Wait for exit TEST_RESULT_STR_Z(ioReadLine(read), "{\"cmd\":\"exit\"}", "exit command"); } HARNESS_FORK_CHILD_END(); // Local 2 HARNESS_FORK_CHILD_BEGIN(0, true) { IoRead *read = ioHandleReadNew(strNew("server read"), HARNESS_FORK_CHILD_READ(), 10000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew(strNew("server write"), HARNESS_FORK_CHILD_WRITE()); ioWriteOpen(write); // Greeting with noop ioWriteStrLine(write, strNew("{\"name\":\"pgBackRest\",\"service\":\"test\",\"version\":\"" PROJECT_VERSION "\"}")); ioWriteFlush(write); TEST_RESULT_STR_Z(ioReadLine(read), "{\"cmd\":\"noop\"}", "noop"); ioWriteStrLine(write, strNew("{}")); ioWriteFlush(write); TEST_RESULT_STR_Z(ioReadLine(read), "{\"cmd\":\"command2\",\"param\":[\"param1\"]}", "command2"); sleepMSec(1000); ioWriteStrLine(write, strNew("{\"out\":2}")); ioWriteFlush(write); TEST_RESULT_STR_Z(ioReadLine(read), "{\"cmd\":\"command3\",\"param\":[\"param1\"]}", "command3"); ioWriteStrLine(write, strNew("{\"err\":39,\"out\":\"very serious error\"}")); ioWriteFlush(write); // Wait for exit TEST_RESULT_STR_Z(ioReadLine(read), "{\"cmd\":\"exit\"}", "exit command"); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { // ----------------------------------------------------------------------------------------------------------------- TestParallelJobCallback data = {.jobList = lstNew(sizeof(ProtocolParallelJob *))}; ProtocolParallel *parallel = NULL; TEST_ASSIGN(parallel, protocolParallelNew(2000, testParallelJobCallback, &data), "create parallel"); TEST_RESULT_STR_Z(protocolParallelToLog(parallel), "{state: pending, clientTotal: 0, jobTotal: 0}", "check log"); // Add client unsigned int clientTotal = 2; ProtocolClient *client[HARNESS_FORK_CHILD_MAX]; for (unsigned int clientIdx = 0; clientIdx < clientTotal; clientIdx++) { IoRead *read = ioHandleReadNew( strNewFmt("client %u read", clientIdx), HARNESS_FORK_PARENT_READ_PROCESS(clientIdx), 2000); ioReadOpen(read); IoWrite *write = ioHandleWriteNew( strNewFmt("client %u write", clientIdx), HARNESS_FORK_PARENT_WRITE_PROCESS(clientIdx)); ioWriteOpen(write); TEST_ASSIGN( client[clientIdx], protocolClientNew(strNewFmt("test client %u", clientIdx), strNew("test"), read, write), "create client %u", clientIdx); TEST_RESULT_VOID(protocolParallelClientAdd(parallel, client[clientIdx]), "add client %u", clientIdx); } // Attempt to add client without handle io String *protocolString = strNew( "{\"name\":\"pgBackRest\",\"service\":\"error\",\"version\":\"" PROJECT_VERSION "\"}\n" "{}\n"); IoRead *read = ioBufferReadNew(BUFSTR(protocolString)); ioReadOpen(read); IoWrite *write = ioBufferWriteNew(bufNew(1024)); ioWriteOpen(write); ProtocolClient *clientError = protocolClientNew(strNew("error"), strNew("error"), read, write); TEST_ERROR(protocolParallelClientAdd(parallel, clientError), AssertError, "client with read handle is required"); protocolClientFree(clientError); // Add jobs ProtocolCommand *command = protocolCommandNew(strNew("command1")); protocolCommandParamAdd(command, varNewStr(strNew("param1"))); protocolCommandParamAdd(command, varNewStr(strNew("param2"))); ProtocolParallelJob *job = protocolParallelJobNew(varNewStr(strNew("job1")), command); TEST_RESULT_VOID(lstAdd(data.jobList, &job), "add job"); command = protocolCommandNew(strNew("command2")); protocolCommandParamAdd(command, varNewStr(strNew("param1"))); job = protocolParallelJobNew(varNewStr(strNew("job2")), command); TEST_RESULT_VOID(lstAdd(data.jobList, &job), "add job"); command = protocolCommandNew(strNew("command3")); protocolCommandParamAdd(command, varNewStr(strNew("param1"))); job = protocolParallelJobNew(varNewStr(strNew("job3")), command); TEST_RESULT_VOID(lstAdd(data.jobList, &job), "add job"); // Process jobs TEST_RESULT_INT(protocolParallelProcess(parallel), 0, "process jobs"); TEST_RESULT_PTR(protocolParallelResult(parallel), NULL, "check no result"); // Process jobs TEST_RESULT_INT(protocolParallelProcess(parallel), 1, "process jobs"); TEST_ASSIGN(job, protocolParallelResult(parallel), "get result"); TEST_RESULT_STR_Z(varStr(protocolParallelJobKey(job)), "job2", "check key is job2"); TEST_RESULT_BOOL( protocolParallelJobProcessId(job) >= 1 && protocolParallelJobProcessId(job) <= 2, true, "check process id is valid"); TEST_RESULT_INT(varIntForce(protocolParallelJobResult(job)), 2, "check result is 2"); TEST_RESULT_PTR(protocolParallelResult(parallel), NULL, "check no more results"); // Process jobs TEST_RESULT_INT(protocolParallelProcess(parallel), 1, "process jobs"); TEST_ASSIGN(job, protocolParallelResult(parallel), "get result"); TEST_RESULT_STR_Z(varStr(protocolParallelJobKey(job)), "job3", "check key is job3"); TEST_RESULT_INT(protocolParallelJobErrorCode(job), 39, "check error code"); TEST_RESULT_STR_Z( protocolParallelJobErrorMessage(job), "raised from test client 1: very serious error", "check error message"); TEST_RESULT_PTR(protocolParallelJobResult(job), NULL, "check result is null"); TEST_RESULT_PTR(protocolParallelResult(parallel), NULL, "check no more results"); // Process jobs TEST_RESULT_INT(protocolParallelProcess(parallel), 0, "process jobs"); TEST_RESULT_PTR(protocolParallelResult(parallel), NULL, "check no result"); // Process jobs TEST_RESULT_INT(protocolParallelProcess(parallel), 1, "process jobs"); TEST_ASSIGN(job, protocolParallelResult(parallel), "get result"); TEST_RESULT_STR_Z(varStr(protocolParallelJobKey(job)), "job1", "check key is job1"); TEST_RESULT_INT(varIntForce(protocolParallelJobResult(job)), 1, "check result is 1"); TEST_RESULT_BOOL(protocolParallelDone(parallel), true, "check done"); // Free client for (unsigned int clientIdx = 0; clientIdx < clientTotal; clientIdx++) TEST_RESULT_VOID(protocolClientFree(client[clientIdx]), "free client %u", clientIdx); // Free parallel TEST_RESULT_VOID(protocolParallelFree(parallel), "free parallel"); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); } // ***************************************************************************************************************************** if (testBegin("protocolGet()")) { // Call remote free before any remotes exist // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(protocolRemoteFree(1), "free remote (non exist)"); // Call keep alive before any remotes exist // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(protocolKeepAlive(), "keep alive"); // Simple protocol start // ------------------------------------------------------------------------------------------------------------------------- StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=db"); strLstAddZ(argList, "--protocol-timeout=10"); strLstAddZ(argList, "--repo1-host=localhost"); strLstAdd(argList, strNewFmt("--repo1-host-user=%s", testUser())); strLstAdd(argList, strNewFmt("--repo1-path=%s", testPath())); harnessCfgLoad(cfgCmdInfo, argList); ProtocolClient *client = NULL; TEST_RESULT_VOID(protocolFree(), "free protocol objects before anything has been created"); TEST_ASSIGN(client, protocolRemoteGet(protocolStorageTypeRepo, 1), "get remote protocol"); TEST_RESULT_PTR(protocolRemoteGet(protocolStorageTypeRepo, 1), client, "get remote cached protocol"); TEST_RESULT_PTR(protocolHelper.clientRemote[0].client, client, "check position in cache"); TEST_RESULT_VOID(protocolKeepAlive(), "keep alive"); TEST_RESULT_VOID(protocolFree(), "free remote protocol objects"); TEST_RESULT_VOID(protocolFree(), "free remote protocol objects again"); // Start protocol with local encryption settings // ------------------------------------------------------------------------------------------------------------------------- storagePut( storageNewWriteP(storageTest, strNew("pgbackrest.conf")), BUFSTRDEF( "[global]\n" "repo1-cipher-type=aes-256-cbc\n" "repo1-cipher-pass=acbd\n")); argList = strLstNew(); strLstAddZ(argList, "--stanza=db"); strLstAddZ(argList, "--protocol-timeout=10"); strLstAdd(argList, strNewFmt("--config=%s/pgbackrest.conf", testPath())); strLstAddZ(argList, "--repo1-host=localhost"); strLstAdd(argList, strNewFmt("--repo1-host-user=%s", testUser())); strLstAdd(argList, strNewFmt("--repo1-path=%s", testPath())); strLstAddZ(argList, "--process=999"); strLstAddZ(argList, "--host-id=1"); strLstAddZ(argList, "--" CFGOPT_REMOTE_TYPE "=" PROTOCOL_REMOTE_TYPE_PG); harnessCfgLoadRole(cfgCmdArchiveGet, cfgCmdRoleLocal, argList); TEST_RESULT_STR_Z(cfgOptionStr(cfgOptRepoCipherPass), "acbd", "check cipher pass before"); TEST_ASSIGN(client, protocolRemoteGet(protocolStorageTypeRepo, 1), "get remote protocol"); TEST_RESULT_PTR(protocolHelper.clientRemote[0].client, client, "check position in cache"); TEST_RESULT_STR_Z(cfgOptionStr(cfgOptRepoCipherPass), "acbd", "check cipher pass after"); TEST_RESULT_VOID(protocolFree(), "free remote protocol objects"); // Start protocol with remote encryption settings // ------------------------------------------------------------------------------------------------------------------------- storagePut( storageNewWriteP(storageTest, strNew("pgbackrest.conf")), BUFSTRDEF( "[global]\n" "repo1-cipher-type=aes-256-cbc\n" "repo1-cipher-pass=dcba\n")); argList = strLstNew(); strLstAddZ(argList, "--stanza=db"); strLstAddZ(argList, "--protocol-timeout=10"); strLstAdd(argList, strNewFmt("--repo1-host-config=%s/pgbackrest.conf", testPath())); strLstAddZ(argList, "--repo1-host=localhost"); strLstAdd(argList, strNewFmt("--repo1-host-user=%s", testUser())); strLstAdd(argList, strNewFmt("--repo1-path=%s", testPath())); harnessCfgLoad(cfgCmdInfo, argList); TEST_RESULT_PTR(cfgOptionStr(cfgOptRepoCipherPass), NULL, "check cipher pass before"); TEST_ASSIGN(client, protocolRemoteGet(protocolStorageTypeRepo, 1), "get remote protocol"); TEST_RESULT_STR_Z(cfgOptionStr(cfgOptRepoCipherPass), "dcba", "check cipher pass after"); TEST_RESULT_VOID(protocolFree(), "free remote protocol objects"); // Start remote protocol // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "--stanza=db"); strLstAddZ(argList, "--protocol-timeout=10"); strLstAddZ(argList, "--repo1-retention-full=1"); strLstAddZ(argList, "--pg1-host=localhost"); strLstAdd(argList, strNewFmt("--pg1-host-user=%s", testUser())); strLstAdd(argList, strNewFmt("--pg1-path=%s", testPath())); harnessCfgLoad(cfgCmdBackup, argList); TEST_ASSIGN(client, protocolRemoteGet(protocolStorageTypePg, 1), "get remote protocol"); // Start local protocol // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "--stanza=db"); strLstAddZ(argList, "--protocol-timeout=10"); strLstAddZ(argList, "--process-max=2"); harnessCfgLoad(cfgCmdArchiveGet, argList); TEST_ASSIGN(client, protocolLocalGet(protocolStorageTypeRepo, 1, 1), "get local protocol"); TEST_RESULT_PTR(protocolLocalGet(protocolStorageTypeRepo, 1, 1), client, "get local cached protocol"); TEST_RESULT_PTR(protocolHelper.clientLocal[0].client, client, "check location in cache"); TEST_RESULT_VOID(protocolFree(), "free local and remote protocol objects"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/storage/000077500000000000000000000000001362531507100217065ustar00rootroot00000000000000pgbackrest-release-2.24/test/src/module/storage/cifsTest.c000066400000000000000000000045531362531507100236450ustar00rootroot00000000000000/*********************************************************************************************************************************** Test CIFS Storage ***********************************************************************************************************************************/ #include "common/harnessConfig.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // ***************************************************************************************************************************** if (testBegin("storageRepoGet() and StorageDriverCifs")) { // Load configuration StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=db"); strLstAddZ(argList, "--repo1-type=cifs"); strLstAdd(argList, strNewFmt("--repo1-path=%s", testPath())); harnessCfgLoad(cfgCmdArchiveGet, argList); const Storage *storage = NULL; TEST_ASSIGN(storage, storageRepoGet(strNew(STORAGE_TYPE_CIFS), true), "get cifs repo storage"); TEST_RESULT_STR_Z(storage->type, "cifs", "check storage type"); TEST_RESULT_BOOL(storageFeature(storage, storageFeaturePath), true, " check path feature"); TEST_RESULT_BOOL(storageFeature(storage, storageFeatureCompress), true, " check compress feature"); // Create a FileWrite object with path sync enabled and ensure that path sync is false in the write object // ------------------------------------------------------------------------------------------------------------------------- StorageWrite *file = NULL; TEST_ASSIGN(file, storageNewWriteP(storage, strNew("somefile"), .noSyncPath = false), "new file write"); TEST_RESULT_BOOL(storageWriteSyncPath(file), false, "path sync is disabled"); // Test the path sync function -- pass a bogus path to ensure that this is a noop // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(storagePathSyncP(storage, strNew(BOGUS_STR)), "path sync is a noop"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/storage/posixTest.c000066400000000000000000002125061362531507100240620ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Posix Storage ***********************************************************************************************************************************/ #include #include #include "common/io/io.h" #include "common/time.h" #include "storage/read.h" #include "storage/write.h" #include "common/harnessConfig.h" #include "common/harnessFork.h" #include "common/harnessStorage.h" /*********************************************************************************************************************************** Test function for path expression ***********************************************************************************************************************************/ String * storageTestPathExpression(const String *expression, const String *path) { String *result = NULL; if (strcmp(strPtr(expression), "") == 0) result = strNewFmt("test%s", path == NULL ? "" : strPtr(strNewFmt("/%s", strPtr(path)))); else if (strcmp(strPtr(expression), "") != 0) THROW_FMT(AssertError, "invalid expression '%s'", strPtr(expression)); return result; } /*********************************************************************************************************************************** Macro to create a path and file that cannot be accessed ***********************************************************************************************************************************/ #define TEST_CREATE_NOPERM() \ TEST_RESULT_INT( \ system( \ strPtr(strNewFmt("sudo mkdir -m 700 %s && sudo touch %s && sudo chmod 600 %s", strPtr(pathNoPerm), strPtr(fileNoPerm), \ strPtr(fileNoPerm)))), \ 0, "create no perm path/file"); /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // Create default storage object for testing Storage *storageTest = storagePosixNew( strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); Storage *storageTmp = storagePosixNew( strNew("/tmp"), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); ioBufferSizeSet(2); // Directory and file that cannot be accessed to test permissions errors String *fileNoPerm = strNewFmt("%s/noperm/noperm", testPath()); String *pathNoPerm = strPath(fileNoPerm); // Write file for testing if storage is read-only String *writeFile = strNewFmt("%s/writefile", testPath()); // ***************************************************************************************************************************** if (testBegin("storageNew() and storageFree()")) { Storage *storageTest = NULL; TEST_ASSIGN(storageTest, storagePosixNew(strNew("/"), 0640, 0750, false, NULL), "new storage (defaults)"); TEST_RESULT_STR_Z(storageTest->path, "/", " check path"); TEST_RESULT_INT(storageTest->modeFile, 0640, " check file mode"); TEST_RESULT_INT(storageTest->modePath, 0750, " check path mode"); TEST_RESULT_BOOL(storageTest->write, false, " check write"); TEST_RESULT_BOOL(storageTest->pathExpressionFunction == NULL, true, " check expression function is not set"); TEST_ASSIGN( storageTest, storagePosixNew(strNew("/path/to"), 0600, 0700, true, storageTestPathExpression), "new storage (non-default)"); TEST_RESULT_STR_Z(storageTest->path, "/path/to", " check path"); TEST_RESULT_INT(storageTest->modeFile, 0600, " check file mode"); TEST_RESULT_INT(storageTest->modePath, 0700, " check path mode"); TEST_RESULT_BOOL(storageTest->write, true, " check write"); TEST_RESULT_BOOL(storageTest->pathExpressionFunction != NULL, true, " check expression function is set"); TEST_RESULT_PTR(storageInterface(storageTest).exists, storageTest->interface.exists, " check interface"); TEST_RESULT_PTR(storageDriver(storageTest), storageTest->driver, " check driver"); TEST_RESULT_PTR(storageType(storageTest), storageTest->type, " check type"); TEST_RESULT_BOOL(storageFeature(storageTest, storageFeaturePath), true, " check path feature"); TEST_RESULT_BOOL(storageFeature(storageTest, storageFeatureCompress), true, " check compress feature"); TEST_RESULT_VOID(storageFree(storageTest), "free storage"); } // ***************************************************************************************************************************** if (testBegin("storageExists() and storagePathExists()")) { TEST_CREATE_NOPERM(); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(storageExistsP(storageTest, strNew("missing")), false, "file does not exist"); TEST_RESULT_BOOL(storageExistsP(storageTest, strNew("missing"), .timeout = 100), false, "file does not exist"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(storagePathExistsP(storageTest, strNew("missing")), false, "path does not exist"); TEST_RESULT_BOOL(storagePathExistsP(storageTest, NULL), true, "test path exists"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR_FMT( storageExistsP(storageTest, fileNoPerm), FileOpenError, "unable to stat '%s': [13] Permission denied", strPtr(fileNoPerm)); TEST_ERROR_FMT( storagePathExistsP(storageTest, fileNoPerm), PathOpenError, "unable to stat '%s': [13] Permission denied", strPtr(fileNoPerm)); // ------------------------------------------------------------------------------------------------------------------------- String *fileExists = strNewFmt("%s/exists", testPath()); TEST_RESULT_INT(system(strPtr(strNewFmt("touch %s", strPtr(fileExists)))), 0, "create exists file"); TEST_RESULT_BOOL(storageExistsP(storageTest, fileExists), true, "file exists"); TEST_RESULT_BOOL(storagePathExistsP(storageTest, fileExists), false, "not a path"); TEST_RESULT_INT(system(strPtr(strNewFmt("sudo rm %s", strPtr(fileExists)))), 0, "remove exists file"); // ------------------------------------------------------------------------------------------------------------------------- HARNESS_FORK_BEGIN() { HARNESS_FORK_CHILD_BEGIN(0, false) { sleepMSec(250); TEST_RESULT_INT(system(strPtr(strNewFmt("touch %s", strPtr(fileExists)))), 0, "create exists file"); } HARNESS_FORK_CHILD_END(); HARNESS_FORK_PARENT_BEGIN() { TEST_RESULT_BOOL(storageExistsP(storageTest, fileExists, .timeout = 1000), true, "file exists after wait"); } HARNESS_FORK_PARENT_END(); } HARNESS_FORK_END(); TEST_RESULT_INT(system(strPtr(strNewFmt("sudo rm %s", strPtr(fileExists)))), 0, "remove exists file"); } // ***************************************************************************************************************************** if (testBegin("storageInfo()")) { TEST_CREATE_NOPERM(); TEST_ERROR_FMT( storageInfoP(storageTest, fileNoPerm), FileOpenError, STORAGE_ERROR_INFO ": [13] Permission denied", strPtr(fileNoPerm)); // ------------------------------------------------------------------------------------------------------------------------- String *fileName = strNewFmt("%s/fileinfo", testPath()); TEST_ERROR_FMT( storageInfoP(storageTest, fileName), FileOpenError, STORAGE_ERROR_INFO_MISSING ": [2] No such file or directory", strPtr(fileName)); // ------------------------------------------------------------------------------------------------------------------------- StorageInfo info = {0}; TEST_ASSIGN(info, storageInfoP(storageTest, fileName, .ignoreMissing = true), "get file info (missing)"); TEST_RESULT_BOOL(info.exists, false, " check not exists"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("info outside of base path"); TEST_ERROR( storageInfoP(storageTest, STRDEF("/etc"), .ignoreMissing = true), AssertError, hrnReplaceKey("absolute path '/etc' is not in base path '{[path]}'")); TEST_RESULT_BOOL( storageInfoP(storageTest, STRDEF("/etc"), .ignoreMissing = true, .noPathEnforce = true).exists, true, "path not enforced"); // ------------------------------------------------------------------------------------------------------------------------- struct utimbuf utimeTest = {.actime = 1000000000, .modtime = 1555160000}; THROW_ON_SYS_ERROR_FMT(utime(testPath(), &utimeTest) != 0, FileWriteError, "unable to set time for '%s'", testPath()); TEST_ASSIGN(info, storageInfoP(storageTest, strNew(testPath())), "get path info"); TEST_RESULT_PTR(info.name, NULL, " name is not set"); TEST_RESULT_BOOL(info.exists, true, " check exists"); TEST_RESULT_INT(info.type, storageTypePath, " check type"); TEST_RESULT_INT(info.size, 0, " check size"); TEST_RESULT_INT(info.mode, 0770, " check mode"); TEST_RESULT_UINT(info.timeModified, 1555160000, " check mod time"); TEST_RESULT_PTR(info.linkDestination, NULL, " no link destination"); TEST_RESULT_UINT(info.userId, getuid(), " check user id"); TEST_RESULT_STR_Z(info.user, testUser(), " check user"); TEST_RESULT_UINT(info.groupId, getgid(), " check group id"); TEST_RESULT_STR_Z(info.group, testGroup(), " check group"); // ------------------------------------------------------------------------------------------------------------------------- const Buffer *buffer = BUFSTRDEF("TESTFILE"); TEST_RESULT_VOID(storagePutP(storageNewWriteP(storageTest, fileName), buffer), "put test file"); utimeTest.modtime = 1555155555; THROW_ON_SYS_ERROR_FMT(utime(strPtr(fileName), &utimeTest) != 0, FileWriteError, "unable to set time for '%s'", testPath()); TEST_RESULT_INT(system(strPtr(strNewFmt("sudo chown 99999:99999 %s", strPtr(fileName)))), 0, "set invalid user/group"); TEST_ASSIGN(info, storageInfoP(storageTest, fileName), "get file info"); TEST_RESULT_PTR(info.name, NULL, " name is not set"); TEST_RESULT_BOOL(info.exists, true, " check exists"); TEST_RESULT_INT(info.type, storageTypeFile, " check type"); TEST_RESULT_INT(info.size, 8, " check size"); TEST_RESULT_INT(info.mode, 0640, " check mode"); TEST_RESULT_UINT(info.timeModified, 1555155555, " check mod time"); TEST_RESULT_PTR(info.linkDestination, NULL, " no link destination"); TEST_RESULT_STR(info.user, NULL, " check user"); TEST_RESULT_STR(info.group, NULL, " check group"); storageRemoveP(storageTest, fileName, .errorOnMissing = true); // ------------------------------------------------------------------------------------------------------------------------- String *linkName = strNewFmt("%s/testlink", testPath()); TEST_RESULT_INT(system(strPtr(strNewFmt("ln -s /tmp %s", strPtr(linkName)))), 0, "create link"); TEST_ASSIGN(info, storageInfoP(storageTest, linkName), "get link info"); TEST_RESULT_PTR(info.name, NULL, " name is not set"); TEST_RESULT_BOOL(info.exists, true, " check exists"); TEST_RESULT_INT(info.type, storageTypeLink, " check type"); TEST_RESULT_INT(info.size, 0, " check size"); TEST_RESULT_INT(info.mode, 0777, " check mode"); TEST_RESULT_STR_Z(info.linkDestination, "/tmp", " check link destination"); TEST_RESULT_STR_Z(info.user, testUser(), " check user"); TEST_RESULT_STR_Z(info.group, testGroup(), " check group"); TEST_ASSIGN(info, storageInfoP(storageTest, linkName, .followLink = true), "get info from path pointed to by link"); TEST_RESULT_PTR(info.name, NULL, " name is not set"); TEST_RESULT_BOOL(info.exists, true, " check exists"); TEST_RESULT_INT(info.type, storageTypePath, " check type"); TEST_RESULT_INT(info.size, 0, " check size"); TEST_RESULT_INT(info.mode, 0777, " check mode"); TEST_RESULT_STR(info.linkDestination, NULL, " check link destination"); TEST_RESULT_STR_Z(info.user, "root", " check user"); TEST_RESULT_STR_Z(info.group, "root", " check group"); storageRemoveP(storageTest, linkName, .errorOnMissing = true); // ------------------------------------------------------------------------------------------------------------------------- String *pipeName = strNewFmt("%s/testpipe", testPath()); TEST_RESULT_INT(system(strPtr(strNewFmt("mkfifo -m 666 %s", strPtr(pipeName)))), 0, "create pipe"); TEST_ASSIGN(info, storageInfoP(storageTest, pipeName), "get info from pipe (special file)"); TEST_RESULT_PTR(info.name, NULL, " name is not set"); TEST_RESULT_BOOL(info.exists, true, " check exists"); TEST_RESULT_INT(info.type, storageTypeSpecial, " check type"); TEST_RESULT_INT(info.size, 0, " check size"); TEST_RESULT_INT(info.mode, 0666, " check mode"); TEST_RESULT_STR(info.linkDestination, NULL, " check link destination"); TEST_RESULT_STR_Z(info.user, testUser(), " check user"); TEST_RESULT_STR_Z(info.group, testGroup(), " check group"); storageRemoveP(storageTest, pipeName, .errorOnMissing = true); } // ***************************************************************************************************************************** if (testBegin("storageInfoList()")) { TEST_CREATE_NOPERM(); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR_FMT( storageInfoListP(storageTest, strNew(BOGUS_STR), (StorageInfoListCallback)1, NULL, .errorOnMissing = true), PathMissingError, STORAGE_ERROR_LIST_INFO_MISSING, strPtr(strNewFmt("%s/BOGUS", testPath()))); TEST_RESULT_BOOL( storageInfoListP(storageTest, strNew(BOGUS_STR), (StorageInfoListCallback)1, NULL), false, "ignore missing dir"); TEST_ERROR_FMT( storageInfoListP(storageTest, pathNoPerm, (StorageInfoListCallback)1, NULL), PathOpenError, STORAGE_ERROR_LIST_INFO ": [13] Permission denied", strPtr(pathNoPerm)); // Should still error even when ignore missing TEST_ERROR_FMT( storageInfoListP(storageTest, pathNoPerm, (StorageInfoListCallback)1, NULL), PathOpenError, STORAGE_ERROR_LIST_INFO ": [13] Permission denied", strPtr(pathNoPerm)); // ------------------------------------------------------------------------------------------------------------------------- HarnessStorageInfoListCallbackData callbackData = { .content = strNew(""), }; TEST_RESULT_VOID( storagePosixInfoListEntry( (StoragePosix *)storageDriver(storageTest), strNew("pg"), strNew("missing"), hrnStorageInfoListCallback, &callbackData), "missing path"); TEST_RESULT_STR_Z(callbackData.content, "", " check content"); // ------------------------------------------------------------------------------------------------------------------------- storagePathCreateP(storageTest, strNew("pg"), .mode = 0766); callbackData.content = strNew(""); TEST_RESULT_VOID( storageInfoListP(storageTest, strNew("pg"), hrnStorageInfoListCallback, &callbackData), "directory with one dot file sorted"); TEST_RESULT_STR_Z( callbackData.content, strPtr(strNewFmt(". {path, m=0766, u=%s, g=%s}\n", testUser(), testGroup())), " check content"); // ------------------------------------------------------------------------------------------------------------------------- storagePathCreateP(storageTest, strNew("pg/.include"), .mode = 0755); ASSERT(system(strPtr(strNewFmt("sudo chown 77777:77777 %s/pg/.include", testPath()))) == 0); storagePutP(storageNewWriteP(storageTest, strNew("pg/file"), .modeFile = 0660), BUFSTRDEF("TESTDATA")); ASSERT(system(strPtr(strNewFmt("ln -s ../file %s/pg/link", testPath()))) == 0); ASSERT(system(strPtr(strNewFmt("mkfifo -m 777 %s/pg/pipe", testPath()))) == 0); callbackData = (HarnessStorageInfoListCallbackData) { .content = strNew(""), .timestampOmit = true, .modeOmit = true, .modePath = 0766, .modeFile = 0600, .userOmit = true, .groupOmit = true, }; TEST_RESULT_VOID( storageInfoListP(storageTest, strNew("pg"), hrnStorageInfoListCallback, &callbackData, .sortOrder = sortOrderAsc), "directory with one dot file sorted"); TEST_RESULT_STR_Z( callbackData.content, ". {path}\n" ".include {path, m=0755, u=77777, g=77777}\n" "file {file, s=8, m=0660}\n" "link {link, d=../file}\n" "pipe {special}\n", " check content"); // ------------------------------------------------------------------------------------------------------------------------- ASSERT(system(strPtr(strNewFmt("sudo rmdir %s/pg/.include", testPath()))) == 0); storagePathCreateP(storageTest, strNew("pg/path"), .mode = 0700); storagePutP(storageNewWriteP(storageTest, strNew("pg/path/file"), .modeFile = 0600), BUFSTRDEF("TESTDATA")); callbackData.content = strNew(""); TEST_RESULT_VOID( storageInfoListP( storageTest, strNew("pg"), hrnStorageInfoListCallback, &callbackData, .sortOrder = sortOrderDesc, .recurse = true), "recurse descending"); TEST_RESULT_STR_Z( callbackData.content, "pipe {special}\n" "path/file {file, s=8}\n" "path {path, m=0700}\n" "link {link, d=../file}\n" "file {file, s=8, m=0660}\n" ". {path}\n", " check content"); // ------------------------------------------------------------------------------------------------------------------------- callbackData.content = strNew(""); TEST_RESULT_VOID( storageInfoListP( storageTest, strNew("pg"), hrnStorageInfoListCallback, &callbackData, .sortOrder = sortOrderAsc, .expression = STRDEF("^path")), "filter"); TEST_RESULT_STR_Z( callbackData.content, "path {path, m=0700}\n", " check content"); } // ***************************************************************************************************************************** if (testBegin("storageList()")) { TEST_CREATE_NOPERM(); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR_FMT( storageListP(storageTest, strNew(BOGUS_STR), .errorOnMissing = true), PathMissingError, STORAGE_ERROR_LIST_MISSING, strPtr(strNewFmt("%s/BOGUS", testPath()))); TEST_RESULT_PTR(storageListP(storageTest, strNew(BOGUS_STR), .nullOnMissing = true), NULL, "null for missing dir"); TEST_RESULT_UINT(strLstSize(storageListP(storageTest, strNew(BOGUS_STR))), 0, "empty list for missing dir"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR_FMT( storageListP(storageTest, pathNoPerm), PathOpenError, STORAGE_ERROR_LIST ": [13] Permission denied", strPtr(pathNoPerm)); // Should still error even when ignore missing TEST_ERROR_FMT( storageListP(storageTest, pathNoPerm), PathOpenError, STORAGE_ERROR_LIST ": [13] Permission denied", strPtr(pathNoPerm)); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageTest, strNew(".aaa.txt")), BUFSTRDEF("aaa")), "write aaa.text"); TEST_RESULT_STR_Z( strLstJoin(strLstSort(storageListP(storageTest, NULL), sortOrderAsc), ", "), ".aaa.txt, noperm", "dir list"); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageTest, strNew("bbb.txt")), BUFSTRDEF("bbb")), "write bbb.text"); TEST_RESULT_STR_Z(strLstJoin(storageListP(storageTest, NULL, .expression = strNew("^bbb")), ", "), "bbb.txt", "dir list"); } // ***************************************************************************************************************************** if (testBegin("storageCopy()")) { String *sourceFile = strNewFmt("%s/source.txt", testPath()); String *destinationFile = strNewFmt("%s/destination.txt", testPath()); StorageRead *source = storageNewReadP(storageTest, sourceFile); StorageWrite *destination = storageNewWriteP(storageTest, destinationFile); TEST_ERROR_FMT(storageCopyP(source, destination), FileMissingError, STORAGE_ERROR_READ_MISSING, strPtr(sourceFile)); // ------------------------------------------------------------------------------------------------------------------------- source = storageNewReadP(storageTest, sourceFile, .ignoreMissing = true); TEST_RESULT_BOOL(storageCopyP(source, destination), false, "copy and ignore missing file"); // ------------------------------------------------------------------------------------------------------------------------- const Buffer *expectedBuffer = BUFSTRDEF("TESTFILE\n"); TEST_RESULT_VOID(storagePutP(storageNewWriteP(storageTest, sourceFile), expectedBuffer), "write source file"); source = storageNewReadP(storageTest, sourceFile); TEST_RESULT_BOOL(storageCopyP(source, destination), true, "copy file"); TEST_RESULT_BOOL(bufEq(expectedBuffer, storageGetP(storageNewReadP(storageTest, destinationFile))), true, "check file"); storageRemoveP(storageTest, sourceFile, .errorOnMissing = true); storageRemoveP(storageTest, destinationFile, .errorOnMissing = true); } // ***************************************************************************************************************************** if (testBegin("storageMove()")) { TEST_CREATE_NOPERM(); String *sourceFile = strNewFmt("%s/source.txt", testPath()); String *destinationFile = strNewFmt("%s/sub/destination.txt", testPath()); StorageRead *source = storageNewReadP(storageTest, sourceFile); StorageWrite *destination = storageNewWriteP(storageTest, destinationFile); TEST_ERROR_FMT( storageMoveP(storageTest, source, destination), FileMissingError, "unable to move missing file '%s': [2] No such file or directory", strPtr(sourceFile)); // ------------------------------------------------------------------------------------------------------------------------- source = storageNewReadP(storageTest, fileNoPerm); TEST_ERROR_FMT( storageMoveP(storageTest, source, destination), FileMoveError, "unable to move '%s' to '%s': [13] Permission denied", strPtr(fileNoPerm), strPtr(destinationFile)); // ------------------------------------------------------------------------------------------------------------------------- const Buffer *buffer = BUFSTRDEF("TESTFILE"); storagePutP(storageNewWriteP(storageTest, sourceFile), buffer); source = storageNewReadP(storageTest, sourceFile); destination = storageNewWriteP(storageTest, destinationFile, .noCreatePath = true); TEST_ERROR_FMT( storageMoveP(storageTest, source, destination), PathMissingError, "unable to move '%s' to missing path '%s': [2] No such file or directory", strPtr(sourceFile), strPtr(strPath(destinationFile))); // ------------------------------------------------------------------------------------------------------------------------- destination = storageNewWriteP(storageTest, destinationFile); TEST_RESULT_VOID(storageMoveP(storageTest, source, destination), "move file to subpath"); TEST_RESULT_BOOL(storageExistsP(storageTest, sourceFile), false, "check source file not exists"); TEST_RESULT_BOOL(storageExistsP(storageTest, destinationFile), true, "check destination file exists"); TEST_RESULT_STR_Z( strNewBuf(storageGetP(storageNewReadP(storageTest, destinationFile))), "TESTFILE", "check destination contents"); // ------------------------------------------------------------------------------------------------------------------------- sourceFile = destinationFile; source = storageNewReadP(storageTest, sourceFile); destinationFile = strNewFmt("%s/sub/destination2.txt", testPath()); destination = storageNewWriteP(storageTest, destinationFile); TEST_RESULT_VOID(storageMoveP(storageTest, source, destination), "move file to same path"); // ------------------------------------------------------------------------------------------------------------------------- sourceFile = destinationFile; source = storageNewReadP(storageTest, sourceFile); destinationFile = strNewFmt("%s/source.txt", testPath()); destination = storageNewWriteP(storageTest, destinationFile, .noSyncPath = true); TEST_RESULT_VOID(storageMoveP(storageTest, source, destination), "move file to parent path (no sync)"); // Move across filesystems // ------------------------------------------------------------------------------------------------------------------------- sourceFile = destinationFile; source = storageNewReadP(storageTest, sourceFile); destinationFile = strNewFmt("/tmp/destination.txt"); destination = storageNewWriteP(storageTmp, destinationFile); TEST_RESULT_VOID(storageMoveP(storageTest, source, destination), "move file to another filesystem"); TEST_RESULT_BOOL(storageExistsP(storageTest, sourceFile), false, "check source file not exists"); TEST_RESULT_BOOL(storageExistsP(storageTmp, destinationFile), true, "check destination file exists"); // Move across filesystems without syncing the paths // ------------------------------------------------------------------------------------------------------------------------- sourceFile = destinationFile; source = storageNewReadP(storageTmp, sourceFile); destinationFile = strNewFmt("%s/source.txt", testPath()); destination = storageNewWriteP(storageTest, destinationFile, .noSyncPath = true); TEST_RESULT_VOID(storageMoveP(storageTest, source, destination), "move file to another filesystem without path sync"); TEST_RESULT_BOOL(storageExistsP(storageTmp, sourceFile), false, "check source file not exists"); TEST_RESULT_BOOL(storageExistsP(storageTest, destinationFile), true, "check destination file exists"); storageRemoveP(storageTest, destinationFile, .errorOnMissing = true); } // ***************************************************************************************************************************** if (testBegin("storagePath()")) { Storage *storageTest = NULL; TEST_ASSIGN(storageTest, storagePosixNew(strNew("/"), 0640, 0750, false, NULL), "new storage /"); TEST_RESULT_STR_Z(storagePathP(storageTest, NULL), "/", " root dir"); TEST_RESULT_STR_Z(storagePathP(storageTest, strNew("/")), "/", " same as root dir"); TEST_RESULT_STR_Z(storagePathP(storageTest, strNew("subdir")), "/subdir", " simple subdir"); TEST_ERROR( storagePathP(storageTest, strNew("")), AssertError, "expression '' not valid without callback function"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN( storageTest, storagePosixNew(strNew("/path/to"), 0640, 0750, false, storageTestPathExpression), "new storage /path/to with expression"); TEST_RESULT_STR_Z(storagePathP(storageTest, NULL), "/path/to", " root dir"); TEST_RESULT_STR_Z(storagePathP(storageTest, strNew("/path/to")), "/path/to", " absolute root dir"); TEST_RESULT_STR_Z(storagePathP(storageTest, strNew("is/a/subdir")), "/path/to/is/a/subdir", " subdir"); TEST_ERROR( storagePathP(storageTest, strNew("/bogus")), AssertError, "absolute path '/bogus' is not in base path '/path/to'"); TEST_ERROR( storagePathP(storageTest, strNew("/path/toot")), AssertError, "absolute path '/path/toot' is not in base path '/path/to'"); // Path enforcement disabled for a single call TEST_RESULT_STR_Z(storagePathP(storageTest, strNew("/bogus"), .noEnforce = true), "/bogus", "path enforce disabled"); TEST_ERROR(storagePathP(storageTest, strNew(" not found in path expression '" BOGUS_STR)), AssertError, "'/' should separate expression and path 'BOGUS'"); TEST_RESULT_STR_Z(storagePathP(storageTest, strNew("")), "/path/to/test", " expression"); TEST_ERROR(strPtr(storagePathP(storageTest, strNew("/"))), AssertError, "path '/' should not end in '/'"); TEST_RESULT_STR_Z( storagePathP(storageTest, strNew("/something")), "/path/to/test/something", " expression with path"); TEST_ERROR(storagePathP(storageTest, strNew("")), AssertError, "evaluated path '' cannot be null"); TEST_ERROR(storagePathP(storageTest, strNew("")), AssertError, "invalid expression ''"); } // ***************************************************************************************************************************** if (testBegin("storagePathCreate()")) { TEST_RESULT_VOID(storagePathCreateP(storageTest, strNew("sub1")), "create sub1"); TEST_RESULT_INT(storageInfoP(storageTest, strNew("sub1")).mode, 0750, "check sub1 dir mode"); TEST_RESULT_VOID(storagePathCreateP(storageTest, strNew("sub1")), "create sub1 again"); TEST_ERROR_FMT( storagePathCreateP(storageTest, strNew("sub1"), .errorOnExists = true), PathCreateError, "unable to create path '%s/sub1': [17] File exists", testPath()); TEST_RESULT_VOID(storagePathCreateP(storageTest, strNew("sub2"), .mode = 0777), "create sub2 with custom mode"); TEST_RESULT_INT(storageInfoP(storageTest, strNew("sub2")).mode, 0777, "check sub2 dir mode"); TEST_ERROR_FMT( storagePathCreateP(storageTest, strNew("sub3/sub4"), .noParentCreate = true), PathCreateError, "unable to create path '%s/sub3/sub4': [2] No such file or directory", testPath()); TEST_RESULT_VOID(storagePathCreateP(storageTest, strNew("sub3/sub4")), "create sub3/sub4"); TEST_RESULT_INT(system(strPtr(strNewFmt("rm -rf %s/sub*", testPath()))), 0, "remove sub paths"); } // ***************************************************************************************************************************** if (testBegin("storagePathRemove()")) { // ------------------------------------------------------------------------------------------------------------------------- String *pathRemove1 = strNewFmt("%s/remove1", testPath()); TEST_ERROR_FMT( storagePathRemoveP(storageTest, pathRemove1, .errorOnMissing = true), PathRemoveError, STORAGE_ERROR_PATH_REMOVE_MISSING, strPtr(pathRemove1)); TEST_RESULT_VOID(storagePathRemoveP(storageTest, pathRemove1, .recurse = true), "ignore missing path"); // ------------------------------------------------------------------------------------------------------------------------- String *pathRemove2 = strNewFmt("%s/remove2", strPtr(pathRemove1)); TEST_RESULT_INT(system(strPtr(strNewFmt("sudo mkdir -p -m 700 %s", strPtr(pathRemove2)))), 0, "create noperm paths"); TEST_ERROR_FMT( storagePathRemoveP(storageTest, pathRemove2), PathRemoveError, STORAGE_ERROR_PATH_REMOVE ": [13] Permission denied", strPtr(pathRemove2)); TEST_ERROR_FMT( storagePathRemoveP(storageTest, pathRemove2, .recurse = true), PathOpenError, STORAGE_ERROR_LIST ": [13] Permission denied", strPtr(pathRemove2)); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_INT(system(strPtr(strNewFmt("sudo chmod 777 %s", strPtr(pathRemove1)))), 0, "top path can be removed"); TEST_ERROR_FMT( storagePathRemoveP(storageTest, pathRemove2, .recurse = true), PathOpenError, STORAGE_ERROR_LIST ": [13] Permission denied", strPtr(pathRemove2)); // ------------------------------------------------------------------------------------------------------------------------- String *fileRemove = strNewFmt("%s/remove.txt", strPtr(pathRemove2)); TEST_RESULT_INT( system(strPtr(strNewFmt( "sudo chmod 755 %s && sudo touch %s && sudo chmod 777 %s", strPtr(pathRemove2), strPtr(fileRemove), strPtr(fileRemove)))), 0, "add no perm file"); TEST_ERROR_FMT( storagePathRemoveP(storageTest, pathRemove1, .recurse = true), PathRemoveError, STORAGE_ERROR_PATH_REMOVE_FILE ": [13] Permission denied", strPtr(fileRemove)); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_INT(system(strPtr(strNewFmt("sudo chmod 777 %s", strPtr(pathRemove2)))), 0, "bottom path can be removed"); TEST_RESULT_VOID( storagePathRemoveP(storageTest, pathRemove1, .recurse = true), "remove path"); TEST_RESULT_BOOL( storageExistsP(storageTest, pathRemove1), false, "path is removed"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_INT(system(strPtr(strNewFmt("mkdir -p %s", strPtr(pathRemove2)))), 0, "create subpaths"); TEST_RESULT_VOID( storagePathRemoveP(storageTest, pathRemove1, .recurse = true), "remove path"); TEST_RESULT_BOOL( storageExistsP(storageTest, pathRemove1), false, "path is removed"); } // ***************************************************************************************************************************** if (testBegin("storagePathSync()")) { TEST_CREATE_NOPERM(); TEST_ERROR_FMT( storagePathSyncP(storageTest, fileNoPerm), PathOpenError, STORAGE_ERROR_PATH_SYNC_OPEN ": [13] Permission denied", strPtr(fileNoPerm)); // ------------------------------------------------------------------------------------------------------------------------- String *pathName = strNewFmt("%s/testpath", testPath()); TEST_ERROR_FMT( storagePathSyncP(storageTest, pathName), PathMissingError, STORAGE_ERROR_PATH_SYNC_MISSING, strPtr(pathName)); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR_FMT( storagePathSyncP( storagePosixNew(strNew("/"), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL), strNew("/proc")), PathSyncError, STORAGE_ERROR_PATH_SYNC ": [22] Invalid argument", "/proc"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(storagePathCreateP(storageTest, pathName), "create path to sync"); TEST_RESULT_VOID(storagePathSyncP(storageTest, pathName), "sync path"); } // ***************************************************************************************************************************** if (testBegin("storageNewRead()")) { StorageRead *file = NULL; String *fileName = strNewFmt("%s/readtest.txt", testPath()); TEST_ASSIGN(file, storageNewReadP(storageTest, fileName), "new read file (defaults)"); TEST_ERROR_FMT(ioReadOpen(storageReadIo(file)), FileMissingError, STORAGE_ERROR_READ_MISSING, strPtr(fileName)); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_INT(system(strPtr(strNewFmt("touch %s", strPtr(fileName)))), 0, "create read file"); TEST_RESULT_BOOL(ioReadOpen(storageReadIo(file)), true, " open file"); TEST_RESULT_INT( ioReadHandle(storageReadIo(file)), ((StorageReadPosix *)file->driver)->handle, "check read handle"); TEST_RESULT_VOID(ioReadClose(storageReadIo(file)), " close file"); } // ***************************************************************************************************************************** if (testBegin("storageNewWrite()")) { String *fileName = strNewFmt("%s/sub1/testfile", testPath()); TEST_CREATE_NOPERM(); StorageWrite *file = NULL; TEST_ASSIGN(file, storageNewWriteP(storageTest, fileNoPerm, .noAtomic = true), "new write file (defaults)"); TEST_ERROR_FMT( ioWriteOpen(storageWriteIo(file)), FileOpenError, STORAGE_ERROR_WRITE_OPEN ": [13] Permission denied", strPtr(fileNoPerm)); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN( file, storageNewWriteP(storageTest, fileName, .user = strNew(testUser()), .group = strNew(testGroup()), .timeModified = 1), "new write file (defaults)"); TEST_RESULT_VOID(ioWriteOpen(storageWriteIo(file)), " open file"); TEST_RESULT_INT( ioWriteHandle(storageWriteIo(file)), ((StorageWritePosix *)file->driver)->handle, "check write handle"); TEST_RESULT_VOID(ioWriteClose(storageWriteIo(file)), " close file"); TEST_RESULT_INT(storageInfoP(storageTest, strPath(fileName)).mode, 0750, " check path mode"); TEST_RESULT_INT(storageInfoP(storageTest, fileName).mode, 0640, " check file mode"); TEST_RESULT_INT(storageInfoP(storageTest, fileName).timeModified, 1, " check file modified times"); // Test that a premature free (from error or otherwise) does not rename the file // ------------------------------------------------------------------------------------------------------------------------- fileName = strNewFmt("%s/sub1/testfile-abort", testPath()); String *fileNameTmp = strNewFmt("%s." STORAGE_FILE_TEMP_EXT, strPtr(fileName)); TEST_ASSIGN( file, storageNewWriteP(storageTest, fileName, .user = strNew(testUser())), "new write file (defaults)"); TEST_RESULT_VOID(ioWriteOpen(storageWriteIo(file)), " open file"); TEST_RESULT_VOID(ioWrite(storageWriteIo(file), BUFSTRDEF("TESTDATA")), "write data"); TEST_RESULT_VOID(ioWriteFlush(storageWriteIo(file)), "flush data"); TEST_RESULT_VOID(ioWriteFree(storageWriteIo(file)), " free file"); TEST_RESULT_BOOL(storageExistsP(storageTest, fileName), false, "destination file does not exist"); TEST_RESULT_BOOL(storageExistsP(storageTest, fileNameTmp), true, "destination tmp file exists"); TEST_RESULT_INT(storageInfoP(storageTest, fileNameTmp).size, 8, " check temp file size"); // ------------------------------------------------------------------------------------------------------------------------- fileName = strNewFmt("%s/sub2/testfile", testPath()); TEST_ASSIGN( file, storageNewWriteP(storageTest, fileName, .modePath = 0700, .modeFile = 0600, .group = strNew(testGroup())), "new write file (set mode)"); TEST_RESULT_VOID(ioWriteOpen(storageWriteIo(file)), " open file"); TEST_RESULT_VOID(ioWriteClose(storageWriteIo(file)), " close file"); TEST_RESULT_VOID(storageWritePosixClose(storageWriteDriver(file)), " close file again"); TEST_RESULT_INT(storageInfoP(storageTest, strPath(fileName)).mode, 0700, " check path mode"); TEST_RESULT_INT(storageInfoP(storageTest, fileName).mode, 0600, " check file mode"); } // ***************************************************************************************************************************** if (testBegin("storagePut() and storageGet()")) { Storage *storageTest = storagePosixNew(strNew("/"), 0640, 0750, true, NULL); TEST_ERROR_FMT( storageGetP(storageNewReadP(storageTest, strNew(testPath()))), FileReadError, "unable to read '%s': [21] Is a directory", testPath()); // ------------------------------------------------------------------------------------------------------------------------- String *emptyFile = strNewFmt("%s/test.empty", testPath()); TEST_RESULT_VOID(storagePutP(storageNewWriteP(storageTest, emptyFile), NULL), "put empty file"); TEST_RESULT_BOOL(storageExistsP(storageTest, emptyFile), true, "check empty file exists"); // ------------------------------------------------------------------------------------------------------------------------- const Buffer *buffer = BUFSTRDEF("TESTFILE\n"); TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageTest, strNewFmt("%s/test.txt", testPath())), buffer), "put test file"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_PTR( storageGetP(storageNewReadP(storageTest, strNewFmt("%s/%s", testPath(), BOGUS_STR), .ignoreMissing = true)), NULL, "get missing file"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(buffer, storageGetP(storageNewReadP(storageTest, strNewFmt("%s/test.empty", testPath()))), "get empty"); TEST_RESULT_INT(bufSize(buffer), 0, "size is 0"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(buffer, storageGetP(storageNewReadP(storageTest, strNewFmt("%s/test.txt", testPath()))), "get text"); TEST_RESULT_INT(bufSize(buffer), 9, "check size"); TEST_RESULT_BOOL(memcmp(bufPtr(buffer), "TESTFILE\n", bufSize(buffer)) == 0, true, "check content"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN( buffer, storageGetP(storageNewReadP(storageTest, strNewFmt("%s/test.txt", testPath())), .exactSize = 4), "get exact"); TEST_RESULT_INT(bufSize(buffer), 4, "check size"); TEST_RESULT_BOOL(memcmp(bufPtr(buffer), "TEST", bufSize(buffer)) == 0, true, "check content"); TEST_ERROR_FMT( storageGetP(storageNewReadP(storageTest, strNewFmt("%s/test.txt", testPath())), .exactSize = 64), FileReadError, "unable to read 64 byte(s) from '%s/test.txt'", testPath()); // ------------------------------------------------------------------------------------------------------------------------- ioBufferSizeSet(2); TEST_ASSIGN(buffer, storageGetP(storageNewReadP(storageTest, strNewFmt("%s/test.txt", testPath()))), "get text"); TEST_RESULT_INT(bufSize(buffer), 9, "check size"); TEST_RESULT_BOOL(memcmp(bufPtr(buffer), "TESTFILE\n", bufSize(buffer)) == 0, true, "check content"); } // ***************************************************************************************************************************** if (testBegin("storageRemove()")) { TEST_CREATE_NOPERM(); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(storageRemoveP(storageTest, strNew("missing")), "remove missing file"); TEST_ERROR_FMT( storageRemoveP(storageTest, strNew("missing"), .errorOnMissing = true), FileRemoveError, "unable to remove '%s/missing': [2] No such file or directory", testPath()); // ------------------------------------------------------------------------------------------------------------------------- String *fileExists = strNewFmt("%s/exists", testPath()); TEST_RESULT_INT(system(strPtr(strNewFmt("touch %s", strPtr(fileExists)))), 0, "create exists file"); TEST_RESULT_VOID(storageRemoveP(storageTest, fileExists), "remove exists file"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR_FMT( storageRemoveP(storageTest, fileNoPerm), FileRemoveError, "unable to remove '%s': [13] Permission denied", strPtr(fileNoPerm)); } // ***************************************************************************************************************************** if (testBegin("StorageRead")) { TEST_CREATE_NOPERM(); StorageRead *file = NULL; TEST_ASSIGN(file, storageNewReadP(storageTest, fileNoPerm, .ignoreMissing = true), "new read file"); TEST_RESULT_PTR(storageRead(file), file->driver, " check driver"); TEST_RESULT_BOOL(storageReadIgnoreMissing(file), true, " check ignore missing"); TEST_RESULT_STR(storageReadName(file), fileNoPerm, " check name"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(file, storageNewReadP(storageTest, fileNoPerm), "new no perm read file"); TEST_ERROR_FMT( ioReadOpen(storageReadIo(file)), FileOpenError, STORAGE_ERROR_READ_OPEN ": [13] Permission denied", strPtr(fileNoPerm)); // ------------------------------------------------------------------------------------------------------------------------- String *fileName = strNewFmt("%s/test.file", testPath()); TEST_ASSIGN(file, storageNewReadP(storageTest, fileName), "new missing read file"); TEST_ERROR_FMT(ioReadOpen(storageReadIo(file)), FileMissingError, STORAGE_ERROR_READ_MISSING, strPtr(fileName)); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(file, storageNewReadP(storageTest, fileName, .ignoreMissing = true), "new missing read file"); TEST_RESULT_BOOL(ioReadOpen(storageReadIo(file)), false, " missing file ignored"); // ------------------------------------------------------------------------------------------------------------------------- Buffer *outBuffer = bufNew(2); const Buffer *expectedBuffer = BUFSTRDEF("TESTFILE\n"); TEST_RESULT_VOID(storagePutP(storageNewWriteP(storageTest, fileName), expectedBuffer), "write test file"); TEST_ASSIGN(file, storageNewReadP(storageTest, fileName), "new read file"); TEST_RESULT_BOOL(ioReadOpen(storageReadIo(file)), true, " open file"); // Close the file handle so operations will fail close(((StorageReadPosix *)file->driver)->handle); TEST_ERROR_FMT( ioRead(storageReadIo(file), outBuffer), FileReadError, "unable to read '%s': [9] Bad file descriptor", strPtr(fileName)); // Set file handle to -1 so the close on free will not fail ((StorageReadPosix *)file->driver)->handle = -1; // ------------------------------------------------------------------------------------------------------------------------- Buffer *buffer = bufNew(0); MEM_CONTEXT_TEMP_BEGIN() { TEST_ASSIGN(file, storageReadMove(storageNewReadP(storageTest, fileName), memContextPrior()), "new read file"); } MEM_CONTEXT_TEMP_END(); TEST_RESULT_BOOL(ioReadOpen(storageReadIo(file)), true, " open file"); TEST_RESULT_STR(storageReadName(file), fileName, " check file name"); TEST_RESULT_STR_Z(storageReadType(file), "posix", " check file type"); TEST_RESULT_VOID(ioRead(storageReadIo(file), outBuffer), " load data"); bufCat(buffer, outBuffer); bufUsedZero(outBuffer); TEST_RESULT_VOID(ioRead(storageReadIo(file), outBuffer), " load data"); bufCat(buffer, outBuffer); bufUsedZero(outBuffer); TEST_RESULT_VOID(ioRead(storageReadIo(file), outBuffer), " load data"); bufCat(buffer, outBuffer); bufUsedZero(outBuffer); TEST_RESULT_VOID(ioRead(storageReadIo(file), outBuffer), " load data"); bufCat(buffer, outBuffer); bufUsedZero(outBuffer); TEST_RESULT_BOOL(bufEq(buffer, expectedBuffer), false, " check file contents (not all loaded yet)"); TEST_RESULT_VOID(ioRead(storageReadIo(file), outBuffer), " load data"); bufCat(buffer, outBuffer); bufUsedZero(outBuffer); TEST_RESULT_VOID(ioRead(storageReadIo(file), outBuffer), " no data to load"); TEST_RESULT_INT(bufUsed(outBuffer), 0, " buffer is empty"); TEST_RESULT_VOID( storageReadPosix(storageRead(file), outBuffer, true), " no data to load from driver either"); TEST_RESULT_INT(bufUsed(outBuffer), 0, " buffer is empty"); TEST_RESULT_BOOL(bufEq(buffer, expectedBuffer), true, " check file contents (all loaded)"); TEST_RESULT_BOOL(ioReadEof(storageReadIo(file)), true, " eof"); TEST_RESULT_BOOL(ioReadEof(storageReadIo(file)), true, " still eof"); TEST_RESULT_VOID(ioReadClose(storageReadIo(file)), " close file"); TEST_RESULT_VOID(storageReadFree(storageNewReadP(storageTest, fileName)), " free file"); TEST_RESULT_VOID(storageReadMove(NULL, memContextTop()), " move null file"); } // ***************************************************************************************************************************** if (testBegin("StorageWrite")) { TEST_CREATE_NOPERM(); StorageWrite *file = NULL; TEST_ASSIGN( file, storageNewWriteP( storageTest, fileNoPerm, .modeFile = 0444, .modePath = 0555, .noCreatePath = true, .noSyncFile = true, .noSyncPath = true, .noAtomic = true), "new write file"); TEST_RESULT_BOOL(storageWriteAtomic(file), false, " check atomic"); TEST_RESULT_BOOL(storageWriteCreatePath(file), false, " check create path"); TEST_RESULT_PTR(storageWriteDriver(file), file->driver, " check file driver"); TEST_RESULT_INT(storageWriteModeFile(file), 0444, " check mode file"); TEST_RESULT_INT(storageWriteModePath(file), 0555, " check mode path"); TEST_RESULT_STR(storageWriteName(file), fileNoPerm, " check name"); TEST_RESULT_BOOL(storageWriteSyncPath(file), false, " check sync path"); TEST_RESULT_BOOL(storageWriteSyncFile(file), false, " check sync file"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(file, storageNewWriteP(storageTest, fileNoPerm, .noAtomic = true), "new write file"); TEST_ERROR_FMT( ioWriteOpen(storageWriteIo(file)), FileOpenError, STORAGE_ERROR_WRITE_OPEN ": [13] Permission denied", strPtr(fileNoPerm)); // ------------------------------------------------------------------------------------------------------------------------- String *fileName = strNewFmt("%s/sub1/test.file", testPath()); TEST_ASSIGN(file, storageNewWriteP(storageTest, fileName, .noCreatePath = true, .noAtomic = true), "new write file"); TEST_ERROR_FMT(ioWriteOpen(storageWriteIo(file)), FileMissingError, STORAGE_ERROR_WRITE_MISSING, strPtr(fileName)); // ------------------------------------------------------------------------------------------------------------------------- String *fileTmp = strNewFmt("%s.pgbackrest.tmp", strPtr(fileName)); ioBufferSizeSet(10); const Buffer *buffer = BUFSTRDEF("TESTFILE\n"); TEST_ASSIGN(file, storageNewWriteP(storageTest, fileName), "new write file"); TEST_RESULT_STR(storageWriteName(file), fileName, " check file name"); TEST_RESULT_VOID(ioWriteOpen(storageWriteIo(file)), " open file"); // Close the file handle so operations will fail close(((StorageWritePosix *)file->driver)->handle); storageRemoveP(storageTest, fileTmp, .errorOnMissing = true); TEST_ERROR_FMT( storageWritePosix(storageWriteDriver(file), buffer), FileWriteError, "unable to write '%s.pgbackrest.tmp': [9] Bad file descriptor", strPtr(fileName)); TEST_ERROR_FMT( storageWritePosixClose(storageWriteDriver(file)), FileSyncError, STORAGE_ERROR_WRITE_SYNC ": [9] Bad file descriptor", strPtr(fileTmp)); // Disable file sync so close() can be reached ((StorageWritePosix *)file->driver)->interface.syncFile = false; TEST_ERROR_FMT( storageWritePosixClose(storageWriteDriver(file)), FileCloseError, STORAGE_ERROR_WRITE_CLOSE ": [9] Bad file descriptor", strPtr(fileTmp)); // Set file handle to -1 so the close on free with not fail ((StorageWritePosix *)file->driver)->handle = -1; // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(file, storageNewWriteP(storageTest, fileName), "new write file"); TEST_RESULT_STR(storageWriteName(file), fileName, " check file name"); TEST_RESULT_STR_Z(storageWriteType(file), "posix", " check file type"); TEST_RESULT_VOID(ioWriteOpen(storageWriteIo(file)), " open file"); // Rename the file back to original name from tmp -- this will cause the rename in close to fail TEST_RESULT_INT(rename(strPtr(fileTmp), strPtr(fileName)), 0, " rename tmp file"); TEST_ERROR_FMT( ioWriteClose(storageWriteIo(file)), FileMoveError, "unable to move '%s' to '%s': [2] No such file or directory", strPtr(fileTmp), strPtr(fileName)); // Set file handle to -1 so the close on free with not fail ((StorageWritePosix *)file->driver)->handle = -1; storageRemoveP(storageTest, fileName, .errorOnMissing = true); // ------------------------------------------------------------------------------------------------------------------------- MEM_CONTEXT_TEMP_BEGIN() { TEST_ASSIGN(file, storageWriteMove(storageNewWriteP(storageTest, fileName), memContextPrior()), "new write file"); } MEM_CONTEXT_TEMP_END(); TEST_RESULT_VOID(ioWriteOpen(storageWriteIo(file)), " open file"); TEST_RESULT_VOID(ioWrite(storageWriteIo(file), NULL), " write null buffer to file"); TEST_RESULT_VOID(ioWrite(storageWriteIo(file), bufNew(0)), " write zero buffer to file"); TEST_RESULT_VOID(ioWrite(storageWriteIo(file), buffer), " write to file"); TEST_RESULT_VOID(ioWriteClose(storageWriteIo(file)), " close file"); TEST_RESULT_VOID(storageWriteFree(storageNewWriteP(storageTest, fileName)), " free file"); TEST_RESULT_VOID(storageWriteMove(NULL, memContextTop()), " move null file"); Buffer *expectedBuffer = storageGetP(storageNewReadP(storageTest, fileName)); TEST_RESULT_BOOL(bufEq(buffer, expectedBuffer), true, " check file contents"); TEST_RESULT_INT(storageInfoP(storageTest, strPath(fileName)).mode, 0750, " check path mode"); TEST_RESULT_INT(storageInfoP(storageTest, fileName).mode, 0640, " check file mode"); storageRemoveP(storageTest, fileName, .errorOnMissing = true); // ------------------------------------------------------------------------------------------------------------------------- fileName = strNewFmt("%s/sub2/test.file", testPath()); TEST_ASSIGN( file, storageNewWriteP( storageTest, fileName, .modePath = 0700, .modeFile = 0600, .noSyncPath = true, .noSyncFile = true, .noAtomic = true), "new write file"); TEST_RESULT_VOID(ioWriteOpen(storageWriteIo(file)), " open file"); TEST_RESULT_VOID(ioWrite(storageWriteIo(file), buffer), " write to file"); TEST_RESULT_VOID(ioWriteClose(storageWriteIo(file)), " close file"); expectedBuffer = storageGetP(storageNewReadP(storageTest, fileName)); TEST_RESULT_BOOL(bufEq(buffer, expectedBuffer), true, " check file contents"); TEST_RESULT_INT(storageInfoP(storageTest, strPath(fileName)).mode, 0700, " check path mode"); TEST_RESULT_INT(storageInfoP(storageTest, fileName).mode, 0600, " check file mode"); storageRemoveP(storageTest, fileName, .errorOnMissing = true); } // ***************************************************************************************************************************** if (testBegin("storageLocal() and storageLocalWrite()")) { const Storage *storage = NULL; TEST_RESULT_PTR(storageHelper.storageLocal, NULL, "local storage not cached"); TEST_ASSIGN(storage, storageLocal(), "new storage"); TEST_RESULT_PTR(storageHelper.storageLocal, storage, "local storage cached"); TEST_RESULT_PTR(storageLocal(), storage, "get cached storage"); TEST_RESULT_STR_Z(storagePathP(storage, NULL), "/", "check base path"); TEST_ERROR(storageNewWriteP(storage, writeFile), AssertError, "assertion 'this->write' failed"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_PTR(storageHelper.storageLocalWrite, NULL, "local storage not cached"); TEST_ASSIGN(storage, storageLocalWrite(), "new storage"); TEST_RESULT_PTR(storageHelper.storageLocalWrite, storage, "local storage cached"); TEST_RESULT_PTR(storageLocalWrite(), storage, "get cached storage"); TEST_RESULT_STR_Z(storagePathP(storage, NULL), "/", "check base path"); TEST_RESULT_VOID(storageNewWriteP(storage, writeFile), "writes are allowed"); } // ***************************************************************************************************************************** if (testBegin("storageRepo*()")) { // Load configuration to set repo-path and stanza StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=db"); strLstAdd(argList, strNewFmt("--repo-path=%s", testPath())); harnessCfgLoad(cfgCmdArchiveGet, argList); TEST_ERROR(storageRepoGet(strNew(BOGUS_STR), false), AssertError, "invalid storage type 'BOGUS'"); // ------------------------------------------------------------------------------------------------------------------------- const Storage *storage = NULL; TEST_RESULT_PTR(storageHelper.storageRepo, NULL, "repo storage not cached"); TEST_ASSIGN(storage, storageRepo(), "new storage"); TEST_RESULT_PTR(storageHelper.storageRepo, storage, "repo storage cached"); TEST_RESULT_PTR(storageRepo(), storage, "get cached storage"); // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR(storagePathP(storage, strNew("/path")), AssertError, "invalid expression ''"); TEST_ERROR(storageNewWriteP(storage, writeFile), AssertError, "assertion 'this->write' failed"); TEST_RESULT_STR_Z(storagePathP(storage, NULL), testPath(), "check base path"); TEST_RESULT_STR( storagePathP(storage, STORAGE_REPO_ARCHIVE_STR), strNewFmt("%s/archive/db", testPath()), "check archive path"); TEST_RESULT_STR( storagePathP(storage, strNew(STORAGE_REPO_ARCHIVE "/simple")), strNewFmt("%s/archive/db/simple", testPath()), "check simple path"); TEST_RESULT_STR( storagePathP(storage, strNew(STORAGE_REPO_ARCHIVE "/9.4-1/700000007000000070000000")), strNewFmt("%s/archive/db/9.4-1/7000000070000000/700000007000000070000000", testPath()), "check segment path"); TEST_RESULT_STR( storagePathP(storage, strNew(STORAGE_REPO_ARCHIVE "/9.4-1/00000008.history")), strNewFmt("%s/archive/db/9.4-1/00000008.history", testPath()), "check history path"); TEST_RESULT_STR( storagePathP(storage, strNew(STORAGE_REPO_ARCHIVE "/9.4-1/000000010000014C0000001A.00000028.backup")), strNewFmt("%s/archive/db/9.4-1/000000010000014C/000000010000014C0000001A.00000028.backup", testPath()), "check archive backup path"); TEST_RESULT_STR( storagePathP(storage, STORAGE_REPO_BACKUP_STR), strNewFmt("%s/backup/db", testPath()), "check backup path"); // Change the stanza to NULL with the stanzaInit flag still true, make sure helper does not fail when stanza option not set // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAdd(argList, strNewFmt("--repo-path=%s", testPath())); harnessCfgLoad(cfgCmdInfo, argList); TEST_ASSIGN(storage, storageRepo(), "new repo storage no stanza"); TEST_RESULT_PTR(storageHelper.stanza, NULL, "stanza NULL"); TEST_RESULT_STR( storagePathP(storage, STORAGE_REPO_ARCHIVE_STR), strNewFmt("%s/archive", testPath()), "check archive path - NULL stanza"); TEST_RESULT_STR( storagePathP(storage, strNew(STORAGE_REPO_ARCHIVE "/simple")), strNewFmt("%s/archive/simple", testPath()), "check simple archive path - NULL stanza"); TEST_RESULT_STR( storagePathP(storage, STORAGE_REPO_BACKUP_STR), strNewFmt("%s/backup", testPath()), "check backup path - NULL stanza"); TEST_RESULT_STR( storagePathP(storage, strNew(STORAGE_REPO_BACKUP "/simple")), strNewFmt("%s/backup/simple", testPath()), "check simple backup path - NULL stanza"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_PTR(storageHelper.storageRepoWrite, NULL, "repo write storage not cached"); TEST_ASSIGN(storage, storageRepoWrite(), "new write storage"); TEST_RESULT_PTR(storageHelper.storageRepoWrite, storage, "repo write storage cached"); TEST_RESULT_PTR(storageRepoWrite(), storage, "get cached storage"); TEST_RESULT_BOOL(storage->write, true, "get write enabled"); } // ***************************************************************************************************************************** if (testBegin("storageSpool() and storageSpoolWrite()")) { const Storage *storage = NULL; // Load configuration to set spool-path and stanza StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=db"); strLstAddZ(argList, "--archive-async"); strLstAdd(argList, strNewFmt("--spool-path=%s", testPath())); strLstAdd(argList, strNewFmt("--pg1-path=%s/db", testPath())); strLstAdd(argList, strNewFmt("--pg2-path=%s/db2", testPath())); harnessCfgLoad(cfgCmdArchiveGet, argList); TEST_RESULT_PTR(storageHelper.storageSpool, NULL, "storage not cached"); TEST_ASSIGN(storage, storageSpool(), "new storage"); TEST_RESULT_PTR(storageHelper.storageSpool, storage, "storage cached"); TEST_RESULT_PTR(storageSpool(), storage, "get cached storage"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_STR_Z(storagePathP(storage, NULL), testPath(), "check base path"); TEST_RESULT_STR( storagePathP(storage, strNew(STORAGE_SPOOL_ARCHIVE_OUT)), strNewFmt("%s/archive/db/out", testPath()), "check spool out path"); TEST_RESULT_STR( storagePathP(storage, strNewFmt("%s/%s", STORAGE_SPOOL_ARCHIVE_OUT, "file.ext")), strNewFmt("%s/archive/db/out/file.ext", testPath()), "check spool out file"); TEST_RESULT_STR( storagePathP(storage, strNew(STORAGE_SPOOL_ARCHIVE_IN)), strNewFmt("%s/archive/db/in", testPath()), "check spool in path"); TEST_RESULT_STR( storagePathP(storage, strNewFmt("%s/%s", STORAGE_SPOOL_ARCHIVE_IN, "file.ext")), strNewFmt("%s/archive/db/in/file.ext", testPath()), "check spool in file"); TEST_ERROR(storagePathP(storage, strNew("<" BOGUS_STR ">")), AssertError, "invalid expression ''"); TEST_ERROR(storageNewWriteP(storage, writeFile), AssertError, "assertion 'this->write' failed"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_PTR(storageHelper.storageSpoolWrite, NULL, "storage not cached"); TEST_ASSIGN(storage, storageSpoolWrite(), "new storage"); TEST_RESULT_PTR(storageHelper.storageSpoolWrite, storage, "storage cached"); TEST_RESULT_PTR(storageSpoolWrite(), storage, "get cached storage"); TEST_RESULT_VOID(storageNewWriteP(storage, writeFile), "writes are allowed"); // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_PTR(storageHelper.storagePg, NULL, "pg storage not cached"); TEST_ASSIGN(storage, storagePg(), "new pg storage"); TEST_RESULT_PTR(storageHelper.storagePg[0], storage, "pg storage cached"); TEST_RESULT_PTR(storagePg(), storage, "get cached pg storage"); TEST_RESULT_STR(storage->path, strNewFmt("%s/db", testPath()), "check pg storage path"); TEST_RESULT_BOOL(storage->write, false, "check pg storage write"); TEST_RESULT_STR(storagePgId(2)->path, strNewFmt("%s/db2", testPath()), "check pg 2 storage path"); TEST_RESULT_PTR(storageHelper.storagePgWrite, NULL, "pg write storage not cached"); TEST_ASSIGN(storage, storagePgWrite(), "new pg write storage"); TEST_RESULT_PTR(storageHelper.storagePgWrite[0], storage, "pg write storage cached"); TEST_RESULT_PTR(storagePgWrite(), storage, "get cached pg write storage"); TEST_RESULT_STR(storagePgIdWrite(2)->path, strNewFmt("%s/db2", testPath()), "check pg 2 write storage path"); TEST_RESULT_STR(storage->path, strNewFmt("%s/db", testPath()), "check pg write storage path"); TEST_RESULT_BOOL(storage->write, true, "check pg write storage write"); // Pg storage from another host id // ------------------------------------------------------------------------------------------------------------------------- cfgOptionSet(cfgOptHostId, cfgSourceParam, VARUINT64(2)); cfgOptionValidSet(cfgOptHostId, true); TEST_RESULT_STR(storagePg()->path, strNewFmt("%s/db2", testPath()), "check pg-2 storage path"); // Change the stanza to NULL, stanzaInit flag to false and make sure helper fails because stanza is required // ------------------------------------------------------------------------------------------------------------------------- storageHelper.storageSpool = NULL; storageHelper.storageSpoolWrite = NULL; storageHelper.stanzaInit = false; storageHelper.stanza = NULL; argList = strLstNew(); strLstAdd(argList, strNewFmt("--repo-path=%s", testPath())); harnessCfgLoad(cfgCmdInfo, argList); TEST_ERROR(storageSpool(), AssertError, "stanza cannot be NULL for this storage object"); TEST_ERROR(storageSpoolWrite(), AssertError, "stanza cannot be NULL for this storage object"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/storage/remoteTest.c000066400000000000000000001305261362531507100242140ustar00rootroot00000000000000/*********************************************************************************************************************************** Test Remote Storage ***********************************************************************************************************************************/ #include #include "command/backup/pageChecksum.h" #include "common/crypto/cipherBlock.h" #include "common/io/bufferRead.h" #include "common/io/bufferWrite.h" #include "postgres/interface.h" #include "common/harnessConfig.h" #include "common/harnessStorage.h" #include "common/harnessTest.h" /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // Test storage Storage *storageTest = storagePosixNew( strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL); // Load configuration to set repo-path and stanza StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=db"); strLstAddZ(argList, "--protocol-timeout=10"); strLstAddZ(argList, "--buffer-size=16384"); strLstAddZ(argList, "--repo1-host=localhost"); strLstAdd(argList, strNewFmt("--repo1-host-user=%s", testUser())); strLstAdd(argList, strNewFmt("--repo1-path=%s/repo", testPath())); harnessCfgLoad(cfgCmdArchivePush, argList); // Set type since we'll be running local and remote tests here cfgOptionSet(cfgOptRemoteType, cfgSourceParam, VARSTRDEF("repo")); cfgOptionValidSet(cfgOptRemoteType, true); // Set pg settings so we can run both db and backup remotes cfgOptionSet(cfgOptPgHost, cfgSourceParam, VARSTRDEF("localhost")); cfgOptionValidSet(cfgOptPgHost, true); cfgOptionSet(cfgOptPgPath, cfgSourceParam, VARSTR(strNewFmt("%s/pg", testPath()))); cfgOptionValidSet(cfgOptPgPath, true); // Start a protocol server to test the remote protocol Buffer *serverRead = bufNew(8192); Buffer *serverWrite = bufNew(8192); IoRead *serverReadIo = ioBufferReadNew(serverRead); IoWrite *serverWriteIo = ioBufferWriteNew(serverWrite); ioReadOpen(serverReadIo); ioWriteOpen(serverWriteIo); ProtocolServer *server = protocolServerNew(strNew("test"), strNew("test"), serverReadIo, serverWriteIo); bufUsedSet(serverWrite, 0); // ***************************************************************************************************************************** if (testBegin("storageNew()")) { Storage *storageRemote = NULL; TEST_ASSIGN(storageRemote, storageRepoGet(strNew(STORAGE_TYPE_POSIX), false), "get remote repo storage"); TEST_RESULT_UINT(storageInterface(storageRemote).feature, storageInterface(storageTest).feature, " check features"); TEST_RESULT_BOOL(storageFeature(storageRemote, storageFeaturePath), true, " check path feature"); TEST_RESULT_BOOL(storageFeature(storageRemote, storageFeatureCompress), true, " check compress feature"); TEST_RESULT_STR(storagePathP(storageRemote, NULL), strNewFmt("%s/repo", testPath()), " check path"); // Check protocol function directly // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL( storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_FEATURE_STR, varLstNew(), server), true, "protocol feature"); TEST_RESULT_STR( strNewBuf(serverWrite), strNewFmt(".\"%s/repo\"\n.%" PRIu64 "\n{}\n", testPath(), storageInterface(storageTest).feature), "check result"); bufUsedSet(serverWrite, 0); // Check invalid protocol function // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(storageRemoteProtocol(strNew(BOGUS_STR), varLstNew(), server), false, "invalid function"); } // Do these tests against a pg remote for coverage // ***************************************************************************************************************************** if (testBegin("storageExists()")) { Storage *storageRemote = NULL; TEST_ASSIGN(storageRemote, storagePgGet(1, false), "get remote pg storage"); storagePathCreateP(storageTest, strNew("pg")); TEST_RESULT_BOOL(storageExistsP(storageRemote, strNew("test.txt")), false, "file does not exist"); storagePutP(storageNewWriteP(storageTest, strNew("repo/test.txt")), BUFSTRDEF("TEST")); TEST_RESULT_BOOL(storageExistsP(storageRemote, strNew("test.txt")), true, "file exists"); // Check protocol function directly // ------------------------------------------------------------------------------------------------------------------------- cfgOptionSet(cfgOptRemoteType, cfgSourceParam, VARSTRDEF("pg")); cfgOptionValidSet(cfgOptRemoteType, true); VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewStr(strNewFmt("%s/repo/test.txt", testPath()))); TEST_RESULT_BOOL( storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_EXISTS_STR, paramList, server), true, "protocol exists"); TEST_RESULT_STR_Z(strNewBuf(serverWrite), "{\"out\":true}\n", "check result"); bufUsedSet(serverWrite, 0); } // ***************************************************************************************************************************** if (testBegin("storageInfo()")) { Storage *storageRemote = NULL; TEST_ASSIGN(storageRemote, storageRepoGet(strNew(STORAGE_TYPE_POSIX), true), "get remote repo storage"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("storage types that are not tested elsewhere"); TEST_RESULT_UINT(storageRemoteInfoParseType('s'), storageTypeSpecial, "read special type"); TEST_ERROR(storageRemoteInfoParseType('z'), AssertError, "unknown storage type 'z'"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("missing file/path"); TEST_ERROR( storageInfoP(storageRemote, strNew(BOGUS_STR)), FileOpenError, hrnReplaceKey("unable to get info for missing path/file '{[path]}/repo/BOGUS'")); TEST_RESULT_BOOL(storageInfoP(storageRemote, strNew(BOGUS_STR), .ignoreMissing = true).exists, false, "missing file/path"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("path info"); storagePathCreateP(storageTest, strNew("repo")); struct utimbuf utimeTest = {.actime = 1000000000, .modtime = 1555160000}; THROW_ON_SYS_ERROR( utime(strPtr(storagePathP(storageTest, strNew("repo"))), &utimeTest) != 0, FileWriteError, "unable to set time"); StorageInfo info = {.exists = false}; TEST_ASSIGN(info, storageInfoP(storageRemote, NULL), "valid path"); TEST_RESULT_PTR(info.name, NULL, " name is not set"); TEST_RESULT_BOOL(info.exists, true, " check exists"); TEST_RESULT_INT(info.type, storageTypePath, " check type"); TEST_RESULT_INT(info.size, 0, " check size"); TEST_RESULT_INT(info.mode, 0750, " check mode"); TEST_RESULT_UINT(info.timeModified, 1555160000, " check mod time"); TEST_RESULT_PTR(info.linkDestination, NULL, " no link destination"); TEST_RESULT_UINT(info.userId, getuid(), " check user id"); TEST_RESULT_STR_Z(info.user, testUser(), " check user"); TEST_RESULT_UINT(info.groupId, getgid(), " check group id"); TEST_RESULT_STR_Z(info.group, testGroup(), " check group"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("file info"); storagePutP(storageNewWriteP(storageRemote, strNew("test"), .timeModified = 1555160001), BUFSTRDEF("TESTME")); TEST_ASSIGN(info, storageInfoP(storageRemote, strNew("test")), "valid file"); TEST_RESULT_PTR(info.name, NULL, " name is not set"); TEST_RESULT_BOOL(info.exists, true, " check exists"); TEST_RESULT_INT(info.type, storageTypeFile, " check type"); TEST_RESULT_INT(info.size, 6, " check size"); TEST_RESULT_INT(info.mode, 0640, " check mode"); TEST_RESULT_UINT(info.timeModified, 1555160001, " check mod time"); TEST_RESULT_PTR(info.linkDestination, NULL, " no link destination"); TEST_RESULT_UINT(info.userId, getuid(), " check user id"); TEST_RESULT_STR_Z(info.user, testUser(), " check user"); TEST_RESULT_UINT(info.groupId, getgid(), " check group id"); TEST_RESULT_STR_Z(info.group, testGroup(), " check group"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("special info"); TEST_SYSTEM_FMT("mkfifo -m 666 %s", strPtr(storagePathP(storageTest, strNew("repo/fifo")))); TEST_ASSIGN(info, storageInfoP(storageRemote, strNew("fifo")), "valid fifo"); TEST_RESULT_PTR(info.name, NULL, " name is not set"); TEST_RESULT_BOOL(info.exists, true, " check exists"); TEST_RESULT_INT(info.type, storageTypeSpecial, " check type"); TEST_RESULT_INT(info.size, 0, " check size"); TEST_RESULT_INT(info.mode, 0666, " check mode"); TEST_RESULT_PTR(info.linkDestination, NULL, " no link destination"); TEST_RESULT_UINT(info.userId, getuid(), " check user id"); TEST_RESULT_STR_Z(info.user, testUser(), " check user"); TEST_RESULT_UINT(info.groupId, getgid(), " check group id"); TEST_RESULT_STR_Z(info.group, testGroup(), " check group"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("link info"); TEST_SYSTEM_FMT("ln -s ../repo/test %s", strPtr(storagePathP(storageTest, strNew("repo/link")))); TEST_ASSIGN(info, storageInfoP(storageRemote, strNew("link")), "valid link"); TEST_RESULT_PTR(info.name, NULL, " name is not set"); TEST_RESULT_BOOL(info.exists, true, " check exists"); TEST_RESULT_INT(info.type, storageTypeLink, " check type"); TEST_RESULT_INT(info.size, 0, " check size"); TEST_RESULT_INT(info.mode, 0777, " check mode"); TEST_RESULT_STR_Z(info.linkDestination, "../repo/test", " check link destination"); TEST_RESULT_UINT(info.userId, getuid(), " check user id"); TEST_RESULT_STR_Z(info.user, testUser(), " check user"); TEST_RESULT_UINT(info.groupId, getgid(), " check group id"); TEST_RESULT_STR_Z(info.group, testGroup(), " check group"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("link info follow"); TEST_ASSIGN(info, storageInfoP(storageRemote, strNew("link"), .followLink = true), "valid link follow"); TEST_RESULT_PTR(info.name, NULL, " name is not set"); TEST_RESULT_BOOL(info.exists, true, " check exists"); TEST_RESULT_INT(info.type, storageTypeFile, " check type"); TEST_RESULT_INT(info.size, 6, " check size"); TEST_RESULT_INT(info.mode, 0640, " check mode"); TEST_RESULT_PTR(info.linkDestination, NULL, " no link destination"); TEST_RESULT_UINT(info.userId, getuid(), " check user id"); TEST_RESULT_STR_Z(info.user, testUser(), " check user"); TEST_RESULT_UINT(info.groupId, getgid(), " check group id"); TEST_RESULT_STR_Z(info.group, testGroup(), " check group"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("protocol storage types that are not tested elsewhere"); TEST_RESULT_VOID(storageRemoteInfoWriteType(server, storageTypePath), "write path type"); TEST_RESULT_VOID(storageRemoteInfoWriteType(server, storageTypeSpecial), "write special type"); ioWriteFlush(serverWriteIo); TEST_RESULT_STR_Z(strNewBuf(serverWrite), ".p\n.s\n", "check result"); bufUsedSet(serverWrite, 0); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("protocol output that is not tested elsewhere"); info = (StorageInfo){.type = storageTypeLink, .linkDestination = STRDEF("../")}; TEST_RESULT_VOID(storageRemoteInfoWrite(server, &info), "write link info"); ioWriteFlush(serverWriteIo); TEST_RESULT_STR_Z(strNewBuf(serverWrite), ".l\n.0\n.null\n.0\n.null\n.0\n.0\n.\"../\"\n", "check result"); bufUsedSet(serverWrite, 0); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("check protocol function directly with missing path/file"); VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewStrZ(BOGUS_STR)); varLstAdd(paramList, varNewBool(false)); TEST_RESULT_BOOL(storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_INFO_STR, paramList, server), true, "protocol list"); TEST_RESULT_STR_Z(strNewBuf(serverWrite), "{\"out\":false}\n", "check result"); bufUsedSet(serverWrite, 0); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("check protocol function directly with a file"); paramList = varLstNew(); varLstAdd(paramList, varNewStrZ(hrnReplaceKey("{[path]}/repo/test"))); varLstAdd(paramList, varNewBool(false)); TEST_RESULT_BOOL(storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_INFO_STR, paramList, server), true, "protocol list"); TEST_RESULT_STR_Z( strNewBuf(serverWrite), hrnReplaceKey( "{\"out\":true}\n" ".f\n.{[user-id]}\n.\"{[user]}\"\n.{[group-id]}\n.\"{[group]}\"\n.416\n.1555160001\n.6\n" "{}\n"), "check result"); bufUsedSet(serverWrite, 0); } // ***************************************************************************************************************************** if (testBegin("storageInfoList()")) { Storage *storageRemote = NULL; TEST_ASSIGN(storageRemote, storageRepoGet(strNew(STORAGE_TYPE_POSIX), true), "get remote repo storage"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("path not found"); HarnessStorageInfoListCallbackData callbackData = { .content = strNew(""), }; TEST_RESULT_BOOL( storageInfoListP( storageRemote, STRDEF(BOGUS_STR), hrnStorageInfoListCallback, &callbackData, .sortOrder = sortOrderAsc), false, "info list"); TEST_RESULT_STR_Z( callbackData.content, "", "check content"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("list path and file"); storagePathCreateP(storageRemote, NULL); storagePutP(storageNewWriteP(storageRemote, strNew("test"), .timeModified = 1555160001), BUFSTRDEF("TESTME")); // Path timestamp must be set after file is created since file creation updates it struct utimbuf utimeTest = {.actime = 1000000000, .modtime = 1555160000}; THROW_ON_SYS_ERROR(utime(strPtr(storagePathP(storageRemote, NULL)), &utimeTest) != 0, FileWriteError, "unable to set time"); TEST_RESULT_BOOL( storageInfoListP(storageRemote, NULL, hrnStorageInfoListCallback, &callbackData, .sortOrder = sortOrderAsc), true, "info list"); TEST_RESULT_STR_Z( callbackData.content, hrnReplaceKey( ". {path, m=0750, u={[user]}, g={[group]}}\n" "test {file, s=6, m=0640, t=1555160001, u={[user]}, g={[group]}}\n"), "check content"); // ------------------------------------------------------------------------------------------------------------------------- TEST_TITLE("check protocol function directly with a file"); VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewStrZ(hrnReplaceKey("{[path]}/repo"))); TEST_RESULT_BOOL(storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_INFO_LIST_STR, paramList, server), true, "call protocol"); TEST_RESULT_STR_Z( strNewBuf(serverWrite), hrnReplaceKey( ".\".\"\n.p\n.{[user-id]}\n.\"{[user]}\"\n.{[group-id]}\n.\"{[group]}\"\n.488\n.1555160000\n" ".\"test\"\n.f\n.{[user-id]}\n.\"{[user]}\"\n.{[group-id]}\n.\"{[group]}\"\n.416\n.1555160001\n.6\n" ".\n" "{\"out\":true}\n"), "check result"); bufUsedSet(serverWrite, 0); } // ***************************************************************************************************************************** if (testBegin("storageList()")) { Storage *storageRemote = NULL; TEST_ASSIGN(storageRemote, storageRepoGet(strNew(STORAGE_TYPE_POSIX), false), "get remote repo storage"); storagePathCreateP(storageTest, strNew("repo")); TEST_RESULT_PTR(storageListP(storageRemote, strNew(BOGUS_STR), .nullOnMissing = true), NULL, "null for missing dir"); TEST_RESULT_UINT(strLstSize(storageListP(storageRemote, NULL)), 0, "empty list for missing dir"); // ------------------------------------------------------------------------------------------------------------------------- storagePathCreateP(storageTest, strNew("repo/testy")); TEST_RESULT_STR_Z(strLstJoin(storageListP(storageRemote, NULL), ","), "testy" , "list path"); storagePathCreateP(storageTest, strNew("repo/testy2\"")); TEST_RESULT_STR_Z( strLstJoin(strLstSort(storageListP(storageRemote, strNewFmt("%s/repo", testPath())), sortOrderAsc), ","), "testy,testy2\"" , "list 2 paths"); // Check protocol function directly // ------------------------------------------------------------------------------------------------------------------------- VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewStr(strNewFmt("%s/repo", testPath()))); varLstAdd(paramList, varNewStr(strNew("^testy$"))); TEST_RESULT_BOOL(storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_LIST_STR, paramList, server), true, "protocol list"); TEST_RESULT_STR_Z(strNewBuf(serverWrite), "{\"out\":[\"testy\"]}\n", "check result"); bufUsedSet(serverWrite, 0); } // ***************************************************************************************************************************** if (testBegin("storageNewRead()")) { Storage *storageRemote = NULL; TEST_ASSIGN(storageRemote, storageRepoGet(strNew(STORAGE_TYPE_POSIX), false), "get remote repo storage"); storagePathCreateP(storageTest, strNew("repo")); Buffer *contentBuf = bufNew(32768); for (unsigned int contentIdx = 0; contentIdx < bufSize(contentBuf); contentIdx++) bufPtr(contentBuf)[contentIdx] = contentIdx % 2 ? 'A' : 'B'; bufUsedSet(contentBuf, bufSize(contentBuf)); TEST_ERROR_FMT( strPtr(strNewBuf(storageGetP(storageNewReadP(storageRemote, strNew("test.txt"))))), FileMissingError, "raised from remote-0 protocol on 'localhost': " STORAGE_ERROR_READ_MISSING, strPtr(strNewFmt("%s/repo/test.txt", testPath()))); storagePutP(storageNewWriteP(storageTest, strNew("repo/test.txt")), contentBuf); // Disable protocol compression in the storage object to test no compression ((StorageRemote *)storageRemote->driver)->compressLevel = 0; StorageRead *fileRead = NULL; ioBufferSizeSet(8193); TEST_ASSIGN(fileRead, storageNewReadP(storageRemote, strNew("test.txt")), "new file"); TEST_RESULT_BOOL(bufEq(storageGetP(fileRead), contentBuf), true, "get file"); TEST_RESULT_BOOL(storageReadIgnoreMissing(fileRead), false, "check ignore missing"); TEST_RESULT_STR_Z(storageReadName(fileRead), hrnReplaceKey("{[path]}/repo/test.txt"), "check name"); TEST_RESULT_SIZE( storageReadRemote(storageRead(fileRead), bufNew(32), false), 0, "nothing more to read"); TEST_ASSIGN(fileRead, storageNewReadP(storageRemote, strNew("test.txt")), "get file"); TEST_RESULT_BOOL(bufEq(storageGetP(fileRead), contentBuf), true, " check contents"); TEST_RESULT_UINT(((StorageReadRemote *)fileRead->driver)->protocolReadBytes, bufSize(contentBuf), " check read size"); // Enable protocol compression in the storage object ((StorageRemote *)storageRemote->driver)->compressLevel = 3; TEST_ASSIGN( fileRead, storageNewReadP(storageRemote, strNew("test.txt"), .compressible = true), "get file (protocol compress)"); TEST_RESULT_BOOL(bufEq(storageGetP(fileRead), contentBuf), true, " check contents"); // We don't know how much protocol compression there will be exactly, but make sure this is some TEST_RESULT_BOOL( ((StorageReadRemote *)fileRead->driver)->protocolReadBytes < bufSize(contentBuf), true, " check compressed read size"); TEST_ERROR( storageRemoteProtocolBlockSize(strNew("bogus")), ProtocolError, "'bogus' is not a valid block size message"); // Check protocol function directly (file missing) // ------------------------------------------------------------------------------------------------------------------------- VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewStr(strNew("missing.txt"))); varLstAdd(paramList, varNewBool(true)); varLstAdd(paramList, varNewVarLst(varLstNew())); TEST_RESULT_BOOL( storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_OPEN_READ_STR, paramList, server), true, "protocol open read (missing)"); TEST_RESULT_STR_Z(strNewBuf(serverWrite), "{\"out\":false}\n", "check result"); bufUsedSet(serverWrite, 0); // Check protocol function directly (file exists) // ------------------------------------------------------------------------------------------------------------------------- storagePutP(storageNewWriteP(storageTest, strNew("repo/test.txt")), BUFSTRDEF("TESTDATA")); ioBufferSizeSet(4); paramList = varLstNew(); varLstAdd(paramList, varNewStr(strNewFmt("%s/repo/test.txt", testPath()))); varLstAdd(paramList, varNewBool(false)); // Create filters to test filter logic IoFilterGroup *filterGroup = ioFilterGroupNew(); ioFilterGroupAdd(filterGroup, ioSizeNew()); ioFilterGroupAdd(filterGroup, cryptoHashNew(HASH_TYPE_SHA1_STR)); ioFilterGroupAdd(filterGroup, pageChecksumNew(0, PG_SEGMENT_PAGE_DEFAULT, PG_PAGE_SIZE_DEFAULT, 0)); ioFilterGroupAdd(filterGroup, cipherBlockNew(cipherModeEncrypt, cipherTypeAes256Cbc, BUFSTRZ("x"), NULL)); ioFilterGroupAdd(filterGroup, cipherBlockNew(cipherModeDecrypt, cipherTypeAes256Cbc, BUFSTRZ("x"), NULL)); ioFilterGroupAdd(filterGroup, gzipCompressNew(3, false)); ioFilterGroupAdd(filterGroup, gzipDecompressNew(false)); varLstAdd(paramList, ioFilterGroupParamAll(filterGroup)); TEST_RESULT_BOOL( storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_OPEN_READ_STR, paramList, server), true, "protocol open read"); TEST_RESULT_STR_Z( strNewBuf(serverWrite), "{\"out\":true}\n" "BRBLOCK4\n" "TESTBRBLOCK4\n" "DATABRBLOCK0\n" "{\"out\":{\"buffer\":null,\"cipherBlock\":null,\"gzipCompress\":null,\"gzipDecompress\":null" ",\"hash\":\"bbbcf2c59433f68f22376cd2439d6cd309378df6\",\"pageChecksum\":{\"align\":false,\"valid\":false}" ",\"size\":8}}\n", "check result"); bufUsedSet(serverWrite, 0); ioBufferSizeSet(8192); // Check protocol function directly (file exists but all data goes to sink) // ------------------------------------------------------------------------------------------------------------------------- paramList = varLstNew(); varLstAdd(paramList, varNewStr(strNewFmt("%s/repo/test.txt", testPath()))); varLstAdd(paramList, varNewBool(false)); // Create filters to test filter logic filterGroup = ioFilterGroupNew(); ioFilterGroupAdd(filterGroup, ioSizeNew()); ioFilterGroupAdd(filterGroup, cryptoHashNew(HASH_TYPE_SHA1_STR)); ioFilterGroupAdd(filterGroup, ioSinkNew()); varLstAdd(paramList, ioFilterGroupParamAll(filterGroup)); TEST_RESULT_BOOL( storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_OPEN_READ_STR, paramList, server), true, "protocol open read (sink)"); TEST_RESULT_STR_Z( strNewBuf(serverWrite), "{\"out\":true}\n" "BRBLOCK0\n" "{\"out\":{\"buffer\":null,\"hash\":\"bbbcf2c59433f68f22376cd2439d6cd309378df6\",\"sink\":null,\"size\":8}}\n", "check result"); bufUsedSet(serverWrite, 0); // Check for error on a bogus filter // ------------------------------------------------------------------------------------------------------------------------- paramList = varLstNew(); varLstAdd(paramList, varNewStr(strNewFmt("%s/repo/test.txt", testPath()))); varLstAdd(paramList, varNewBool(false)); varLstAdd(paramList, varNewVarLst(varLstAdd(varLstNew(), varNewKv(kvAdd(kvNew(), varNewStrZ("bogus"), NULL))))); TEST_ERROR( storageRemoteProtocol( PROTOCOL_COMMAND_STORAGE_OPEN_READ_STR, paramList, server), AssertError, "unable to add filter 'bogus'"); } // ***************************************************************************************************************************** if (testBegin("storageNewWrite()")) { storagePathCreateP(storageTest, strNew("repo")); Storage *storageRemote = NULL; TEST_ASSIGN(storageRemote, storageRepoGet(strNew(STORAGE_TYPE_POSIX), true), "get remote repo storage"); // Create buffer with plenty of data Buffer *contentBuf = bufNew(32768); for (unsigned int contentIdx = 0; contentIdx < bufSize(contentBuf); contentIdx++) bufPtr(contentBuf)[contentIdx] = contentIdx % 2 ? 'A' : 'B'; bufUsedSet(contentBuf, bufSize(contentBuf)); // Write the file // ------------------------------------------------------------------------------------------------------------------------- ioBufferSizeSet(9999); // Disable protocol compression in the storage object to test no compression ((StorageRemote *)storageRemote->driver)->compressLevel = 0; StorageWrite *write = NULL; TEST_ASSIGN(write, storageNewWriteP(storageRemote, strNew("test.txt")), "new write file"); TEST_RESULT_BOOL(storageWriteAtomic(write), true, "write is atomic"); TEST_RESULT_BOOL(storageWriteCreatePath(write), true, "path will be created"); TEST_RESULT_UINT(storageWriteModeFile(write), STORAGE_MODE_FILE_DEFAULT, "file mode is default"); TEST_RESULT_UINT(storageWriteModePath(write), STORAGE_MODE_PATH_DEFAULT, "path mode is default"); TEST_RESULT_STR_Z(storageWriteName(write), hrnReplaceKey("{[path]}/repo/test.txt"), "check file name"); TEST_RESULT_BOOL(storageWriteSyncFile(write), true, "file is synced"); TEST_RESULT_BOOL(storageWriteSyncPath(write), true, "path is synced"); TEST_RESULT_VOID(storagePutP(write, contentBuf), "write file"); TEST_RESULT_UINT(((StorageWriteRemote *)write->driver)->protocolWriteBytes, bufSize(contentBuf), " check write size"); TEST_RESULT_VOID(storageWriteRemoteClose((StorageWriteRemote *)storageWriteDriver(write)), "close file again"); TEST_RESULT_VOID(storageWriteFree(write), "free file"); // Make sure the file was written correctly TEST_RESULT_BOOL( bufEq(storageGetP(storageNewReadP(storageRemote, strNew("test.txt"))), contentBuf), true, "check file"); // Enable protocol compression in the storage object ((StorageRemote *)storageRemote->driver)->compressLevel = 3; // Write the file again, but this time free it before close and make sure the .tmp file is left // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(write, storageNewWriteP(storageRemote, strNew("test2.txt")), "new write file"); TEST_RESULT_VOID(ioWriteOpen(storageWriteIo(write)), "open file"); TEST_RESULT_VOID(ioWrite(storageWriteIo(write), contentBuf), "write bytes"); TEST_RESULT_VOID(storageWriteFree(write), "free file"); TEST_RESULT_UINT( storageInfoP(storageTest, strNew("repo/test2.txt.pgbackrest.tmp")).size, 16384, "file exists and is partial"); // Write the file again with protocol compression // ------------------------------------------------------------------------------------------------------------------------- TEST_ASSIGN(write, storageNewWriteP(storageRemote, strNew("test2.txt"), .compressible = true), "new write file (compress)"); TEST_RESULT_VOID(storagePutP(write, contentBuf), "write file"); TEST_RESULT_BOOL( ((StorageWriteRemote *)write->driver)->protocolWriteBytes < bufSize(contentBuf), true, " check compressed write size"); // Check protocol function directly (complete write) // ------------------------------------------------------------------------------------------------------------------------- ioBufferSizeSet(10); VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewStr(strNewFmt("%s/repo/test3.txt", testPath()))); varLstAdd(paramList, varNewUInt64(0640)); varLstAdd(paramList, varNewUInt64(0750)); varLstAdd(paramList, NULL); varLstAdd(paramList, NULL); varLstAdd(paramList, varNewInt(0)); varLstAdd(paramList, varNewBool(true)); varLstAdd(paramList, varNewBool(true)); varLstAdd(paramList, varNewBool(true)); varLstAdd(paramList, varNewBool(true)); varLstAdd(paramList, ioFilterGroupParamAll(ioFilterGroupAdd(ioFilterGroupNew(), ioSizeNew()))); // Generate input (includes the input for the test below -- need a way to reset this for better testing) bufCat( serverRead, BUFSTRDEF( "BRBLOCK3\n" "ABCBRBLOCK15\n" "123456789012345BRBLOCK0\n" "BRBLOCK3\n" "ABCBRBLOCK-1\n")); TEST_RESULT_BOOL( storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_OPEN_WRITE_STR, paramList, server), true, "protocol open write"); TEST_RESULT_STR_Z( strNewBuf(serverWrite), "{}\n" "{\"out\":{\"buffer\":null,\"size\":18}}\n", "check result"); TEST_RESULT_STR_Z( strNewBuf(storageGetP(storageNewReadP(storageTest, strNew("repo/test3.txt")))), "ABC123456789012345", "check file"); bufUsedSet(serverWrite, 0); // Check protocol function directly (free before write is closed) // ------------------------------------------------------------------------------------------------------------------------- ioBufferSizeSet(10); paramList = varLstNew(); varLstAdd(paramList, varNewStr(strNewFmt("%s/repo/test4.txt", testPath()))); varLstAdd(paramList, varNewUInt64(0640)); varLstAdd(paramList, varNewUInt64(0750)); varLstAdd(paramList, NULL); varLstAdd(paramList, NULL); varLstAdd(paramList, varNewInt(0)); varLstAdd(paramList, varNewBool(true)); varLstAdd(paramList, varNewBool(true)); varLstAdd(paramList, varNewBool(true)); varLstAdd(paramList, varNewBool(true)); varLstAdd(paramList, varNewVarLst(varLstNew())); TEST_RESULT_BOOL( storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_OPEN_WRITE_STR, paramList, server), true, "protocol open write"); TEST_RESULT_STR_Z( strNewBuf(serverWrite), "{}\n" "{}\n", "check result"); bufUsedSet(serverWrite, 0); ioBufferSizeSet(8192); TEST_RESULT_STR_Z( strNewBuf(storageGetP(storageNewReadP(storageTest, strNew("repo/test4.txt.pgbackrest.tmp")))), "", "check file"); } // ***************************************************************************************************************************** if (testBegin("storagePathExists()")) { Storage *storageRemote = NULL; TEST_ASSIGN(storageRemote, storageRepoGet(strNew(STORAGE_TYPE_POSIX), false), "get remote repo storage"); storagePathCreateP(storageTest, strNew("repo")); TEST_RESULT_BOOL(storagePathExistsP(storageRemote, strNew("missing")), false, "path does not exist"); TEST_RESULT_BOOL(storagePathExistsP(storageRemote, NULL), true, "path exists"); // Check protocol function directly // ------------------------------------------------------------------------------------------------------------------------- VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewStr(strNewFmt("%s/repo/test.txt", testPath()))); TEST_RESULT_BOOL( storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_PATH_EXISTS_STR, paramList, server), true, "protocol path exists"); TEST_RESULT_STR_Z(strNewBuf(serverWrite), "{\"out\":false}\n", "check result"); bufUsedSet(serverWrite, 0); } // ***************************************************************************************************************************** if (testBegin("storagePathCreate()")) { String *path = strNew("testpath"); storagePathCreateP(storageTest, strNew("repo")); Storage *storageRemote = NULL; TEST_ASSIGN(storageRemote, storageRepoGet(strNew(STORAGE_TYPE_POSIX), true), "get remote repo storage"); // Create a path via the remote. Check the repo via the local test storage to ensure the remote created it. TEST_RESULT_VOID(storagePathCreateP(storageRemote, path), "new path"); StorageInfo info = {0}; TEST_ASSIGN(info, storageInfoP(storageTest, strNewFmt("repo/%s", strPtr(path))), " get path info"); TEST_RESULT_BOOL(info.exists, true, " path exists"); TEST_RESULT_INT(info.mode, STORAGE_MODE_PATH_DEFAULT, " mode is default"); // Check protocol function directly // ------------------------------------------------------------------------------------------------------------------------- VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewStr(strNewFmt("%s/repo/%s", testPath(), strPtr(path)))); varLstAdd(paramList, varNewBool(true)); // errorOnExists varLstAdd(paramList, varNewBool(true)); // noParentCreate (true=error if it does not have a parent, false=create parent) varLstAdd(paramList, varNewUInt64(0)); // path mode TEST_ERROR_FMT( storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_PATH_CREATE_STR, paramList, server), PathCreateError, "raised from remote-0 protocol on 'localhost': unable to create path '%s/repo/testpath': [17] File exists", testPath()); // Error if parent path not exist path = strNew("parent/testpath"); paramList = varLstNew(); varLstAdd(paramList, varNewStr(strNewFmt("%s/repo/%s", testPath(), strPtr(path)))); varLstAdd(paramList, varNewBool(false)); // errorOnExists varLstAdd(paramList, varNewBool(true)); // noParentCreate (true=error if it does not have a parent, false=create parent) varLstAdd(paramList, varNewUInt64(0)); // path mode TEST_ERROR_FMT( storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_PATH_CREATE_STR, paramList, server), PathCreateError, "raised from remote-0 protocol on 'localhost': unable to create path '%s/repo/parent/testpath': " "[2] No such file or directory", testPath()); // Create parent and path with default mode paramList = varLstNew(); varLstAdd(paramList, varNewStr(strNewFmt("%s/repo/%s", testPath(), strPtr(path)))); varLstAdd(paramList, varNewBool(true)); // errorOnExists varLstAdd(paramList, varNewBool(false)); // noParentCreate (true=error if it does not have a parent, false=create parent) varLstAdd(paramList, varNewUInt64(0777)); // path mode TEST_RESULT_VOID( storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_PATH_CREATE_STR, paramList, server), "create parent and path"); TEST_ASSIGN(info, storageInfoP(storageTest, strNewFmt("repo/%s", strPtr(path))), " get path info"); TEST_RESULT_BOOL(info.exists, true, " path exists"); TEST_RESULT_INT(info.mode, 0777, " mode is set"); TEST_RESULT_STR_Z(strNewBuf(serverWrite), "{}\n", " check result"); bufUsedSet(serverWrite, 0); } // ***************************************************************************************************************************** if (testBegin("storagePathRemove()")) { String *path = strNew("testpath"); storagePathCreateP(storageTest, strNew("repo")); Storage *storageRemote = NULL; TEST_ASSIGN(storageRemote, storageRepoGet(strNew(STORAGE_TYPE_POSIX), true), "get remote repo storage"); TEST_RESULT_VOID(storagePathCreateP(storageRemote, path), "new path"); // Check the repo via the local test storage to ensure the remote wrote it, then remove via the remote and confirm removed TEST_RESULT_BOOL(storagePathExistsP(storageTest, strNewFmt("repo/%s", strPtr(path))), true, "path exists"); TEST_RESULT_VOID(storagePathRemoveP(storageRemote, path), "remote remove path"); TEST_RESULT_BOOL(storagePathExistsP(storageTest, strNewFmt("repo/%s", strPtr(path))), false, "path removed"); // Check protocol function directly // ------------------------------------------------------------------------------------------------------------------------- VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewStr(strNewFmt("%s/repo/%s", testPath(), strPtr(path)))); varLstAdd(paramList, varNewBool(true)); // recurse TEST_RESULT_BOOL( storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_PATH_REMOVE_STR, paramList, server), true, " protocol path remove missing"); TEST_RESULT_STR_Z(strNewBuf(serverWrite), "{\"out\":false}\n", " check result"); bufUsedSet(serverWrite, 0); // Write the path and file to the repo and test the protocol TEST_RESULT_VOID( storagePutP(storageNewWriteP(storageRemote, strNewFmt("%s/file.txt", strPtr(path))), BUFSTRDEF("TEST")), "new path and file"); TEST_RESULT_BOOL( storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_PATH_REMOVE_STR, paramList, server), true, " protocol path recurse remove"); TEST_RESULT_BOOL(storagePathExistsP(storageTest, strNewFmt("repo/%s", strPtr(path))), false, " recurse path removed"); TEST_RESULT_STR_Z(strNewBuf(serverWrite), "{\"out\":true}\n", " check result"); bufUsedSet(serverWrite, 0); } // ***************************************************************************************************************************** if (testBegin("storageRemove()")) { storagePathCreateP(storageTest, strNew("repo")); Storage *storageRemote = NULL; TEST_ASSIGN(storageRemote, storageRepoGet(strNew(STORAGE_TYPE_POSIX), true), "get remote repo storage"); String *file = strNew("file.txt"); // Write the file to the repo via the remote so owner is pgbackrest TEST_RESULT_VOID(storagePutP(storageNewWriteP(storageRemote, file), BUFSTRDEF("TEST")), "new file"); // Check the repo via the local test storage to ensure the remote wrote it, then remove via the remote and confirm removed TEST_RESULT_BOOL(storageExistsP(storageTest, strNewFmt("repo/%s", strPtr(file))), true, "file exists"); TEST_RESULT_VOID(storageRemoveP(storageRemote, file), "remote remove file"); TEST_RESULT_BOOL(storageExistsP(storageTest, strNewFmt("repo/%s", strPtr(file))), false, "file removed"); // Check protocol function directly // ------------------------------------------------------------------------------------------------------------------------- VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewStr(strNewFmt("%s/repo/%s", testPath(), strPtr(file)))); varLstAdd(paramList, varNewBool(true)); TEST_ERROR_FMT( storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_REMOVE_STR, paramList, server), FileRemoveError, "raised from remote-0 protocol on 'localhost': unable to remove '%s/repo/file.txt': " "[2] No such file or directory", testPath()); paramList = varLstNew(); varLstAdd(paramList, varNewStr(strNewFmt("%s/repo/%s", testPath(), strPtr(file)))); varLstAdd(paramList, varNewBool(false)); TEST_RESULT_BOOL( storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_REMOVE_STR, paramList, server), true, "protocol file remove - no error on missing"); TEST_RESULT_STR_Z(strNewBuf(serverWrite), "{}\n", " check result"); bufUsedSet(serverWrite, 0); // Write the file to the repo via the remote and test the protocol TEST_RESULT_VOID(storagePutP(storageNewWriteP(storageRemote, file), BUFSTRDEF("TEST")), "new file"); TEST_RESULT_BOOL( storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_REMOVE_STR, paramList, server), true, "protocol file remove"); TEST_RESULT_BOOL(storageExistsP(storageTest, strNewFmt("repo/%s", strPtr(file))), false, " confirm file removed"); TEST_RESULT_STR_Z(strNewBuf(serverWrite), "{}\n", " check result"); bufUsedSet(serverWrite, 0); } // ***************************************************************************************************************************** if (testBegin("storagePathSync()")) { storagePathCreateP(storageTest, strNew("repo")); Storage *storageRemote = NULL; TEST_ASSIGN(storageRemote, storageRepoGet(strNew(STORAGE_TYPE_POSIX), true), "get remote repo storage"); String *path = strNew("testpath"); TEST_RESULT_VOID(storagePathCreateP(storageRemote, path), "new path"); TEST_RESULT_VOID(storagePathSyncP(storageRemote, path), "sync path"); // Check protocol function directly // ------------------------------------------------------------------------------------------------------------------------- VariantList *paramList = varLstNew(); varLstAdd(paramList, varNewStr(strNewFmt("%s/repo/%s", testPath(), strPtr(path)))); TEST_RESULT_BOOL( storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_PATH_SYNC_STR, paramList, server), true, "protocol path sync"); TEST_RESULT_STR_Z(strNewBuf(serverWrite), "{}\n", " check result"); bufUsedSet(serverWrite, 0); paramList = varLstNew(); varLstAdd(paramList, varNewStr(strNewFmt("%s/repo/anewpath", testPath()))); TEST_ERROR_FMT( storageRemoteProtocol(PROTOCOL_COMMAND_STORAGE_PATH_SYNC_STR, paramList, server), PathMissingError, "raised from remote-0 protocol on 'localhost': " STORAGE_ERROR_PATH_SYNC_MISSING, strPtr(strNewFmt("%s/repo/anewpath", testPath()))); } protocolFree(); FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/module/storage/s3Test.c000066400000000000000000001453531362531507100232520ustar00rootroot00000000000000/*********************************************************************************************************************************** Test S3 Storage ***********************************************************************************************************************************/ #include #include "common/harnessConfig.h" #include "common/harnessTls.h" /*********************************************************************************************************************************** Test server ***********************************************************************************************************************************/ #define S3_TEST_HOST "s3.amazonaws.com" #define DATE_REPLACE "????????" #define DATETIME_REPLACE "????????T??????Z" #define SHA256_REPLACE \ "????????????????????????????????????????????????????????????????" static const char * testS3ServerRequest(const char *verb, const char *uri, const char *content, StorageS3UriStyle uriStyle) { String *request = strNewFmt( "%s %s HTTP/1.1\r\n" "authorization:AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/" DATE_REPLACE "/us-east-1/s3/aws4_request," "SignedHeaders=content-length;", verb, uri); if (content != NULL) strCat(request, "content-md5;"); strCatFmt( request, "host;x-amz-content-sha256;x-amz-date,Signature=" SHA256_REPLACE "\r\n" "content-length:%zu\r\n", content == NULL ? 0 : strlen(content)); if (content != NULL) { char md5Hash[HASH_TYPE_MD5_SIZE_HEX]; encodeToStr(encodeBase64, bufPtr(cryptoHashOne(HASH_TYPE_MD5_STR, BUFSTRZ(content))), HASH_TYPE_M5_SIZE, md5Hash); strCatFmt(request, "content-md5:%s\r\n", md5Hash); } if (uriStyle == storageS3UriStyleHost) strCatFmt(request, "host:bucket." S3_TEST_HOST "\r\n"); else strCatFmt(request, "host:" S3_TEST_HOST "\r\n"); strCatFmt( request, "x-amz-content-sha256:%s\r\n" "x-amz-date:" DATETIME_REPLACE "\r\n" "\r\n", content == NULL ? HASH_TYPE_SHA256_ZERO : strPtr(bufHex(cryptoHashOne(HASH_TYPE_SHA256_STR, BUFSTRZ(content))))); if (content != NULL) strCat(request, content); return strPtr(request); } static const char * testS3ServerResponse(unsigned int code, const char *message, const char *header, const char *content) { String *response = strNewFmt("HTTP/1.1 %u %s\r\n", code, message); if (header != NULL) strCatFmt(response, "%s\r\n", header); if (content != NULL) { strCatFmt( response, "content-length:%zu\r\n" "\r\n" "%s", strlen(content), content); } else strCat(response, "\r\n"); return strPtr(response); } static void testS3Server(void) { if (fork() == 0) { harnessTlsServerInitDefault(); harnessTlsServerAccept(); // storageS3NewRead() and StorageS3FileRead // ------------------------------------------------------------------------------------------------------------------------- // Ignore missing file harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_GET, "/fi%26le.txt", NULL, storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse(404, "Not Found", NULL, NULL)); // Error on missing file harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_GET, "/file.txt", NULL, storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse(404, "Not Found", NULL, NULL)); // Get file harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_GET, "/file.txt", NULL, storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse(200, "OK", NULL, "this is a sample file")); // Get zero-length file harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_GET, "/file0.txt", NULL, storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse(200, "OK", NULL, NULL)); // Throw non-404 error harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_GET, "/file.txt", NULL, storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse(303, "Some bad status", NULL, "CONTENT")); // storageS3NewWrite() and StorageWriteS3 // ------------------------------------------------------------------------------------------------------------------------- // File is written all at once harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_PUT, "/file.txt", "ABCD", storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse( 403, "Forbidden", NULL, "" "" "RequestTimeTooSkewed" "The difference between the request time and the current time is too large." "20190726T221748Z" "2019-07-26T22:33:27Z" "900000" "601AA1A7F7E37AE9" "KYMys77PoloZrGCkiQRyOIl0biqdHsk4T2EdTkhzkH1l8x00D4lvv/py5uUuHwQXG9qz6NRuldQ=" "")); harnessTlsServerAccept(); harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_PUT, "/file.txt", "ABCD", storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse(200, "OK", NULL, NULL)); // Zero-length file harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_PUT, "/file.txt", "", storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse(200, "OK", NULL, NULL)); // File is written in chunks with nothing left over on close harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_POST, "/file.txt?uploads=", NULL, storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse( 200, "OK", NULL, "" "" "bucket" "file.txt" "WxRt" "")); harnessTlsServerExpect( testS3ServerRequest(HTTP_VERB_PUT, "/file.txt?partNumber=1&uploadId=WxRt", "1234567890123456", storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse(200, "OK", "etag:WxRt1", NULL)); harnessTlsServerExpect( testS3ServerRequest(HTTP_VERB_PUT, "/file.txt?partNumber=2&uploadId=WxRt", "7890123456789012", storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse(200, "OK", "eTag:WxRt2", NULL)); harnessTlsServerExpect(testS3ServerRequest( HTTP_VERB_POST, "/file.txt?uploadId=WxRt", "\n" "" "1WxRt1" "2WxRt2" "\n", storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse(200, "OK", NULL, NULL)); // File is written in chunks with something left over on close harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_POST, "/file.txt?uploads=", NULL, storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse( 200, "OK", NULL, "" "" "bucket" "file.txt" "RR55" "")); harnessTlsServerExpect( testS3ServerRequest(HTTP_VERB_PUT, "/file.txt?partNumber=1&uploadId=RR55", "1234567890123456", storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse(200, "OK", "etag:RR551", NULL)); harnessTlsServerExpect( testS3ServerRequest(HTTP_VERB_PUT, "/file.txt?partNumber=2&uploadId=RR55", "7890", storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse(200, "OK", "eTag:RR552", NULL)); harnessTlsServerExpect(testS3ServerRequest( HTTP_VERB_POST, "/file.txt?uploadId=RR55", "\n" "" "1RR551" "2RR552" "\n", storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse(200, "OK", NULL, NULL)); // storageDriverExists() // ------------------------------------------------------------------------------------------------------------------------- // File missing harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_HEAD, "/BOGUS", NULL, storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse(404, "Not Found", NULL, NULL)); // File exists harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_HEAD, "/subdir/file1.txt", NULL, storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse(200, "OK", "content-length:999", NULL)); // Info() // ------------------------------------------------------------------------------------------------------------------------- // File missing harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_HEAD, "/BOGUS", NULL, storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse(404, "Not Found", NULL, NULL)); // File exists harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_HEAD, "/subdir/file1.txt", NULL, storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse( 200, "OK", "content-length:9999\r\n" "Last-Modified: Wed, 21 Oct 2015 07:28:00 GMT", NULL)); // InfoList() // ------------------------------------------------------------------------------------------------------------------------- harnessTlsServerExpect( testS3ServerRequest(HTTP_VERB_GET, "/?delimiter=%2F&list-type=2&prefix=path%2Fto%2F", NULL, storageS3UriStyleHost)); harnessTlsServerReply( testS3ServerResponse( 200, "OK", NULL, "" "" " " " path/to/test_file" " 2009-10-12T17:50:30.000Z" " 787" " " " " " path/to/test_path/" " " "")); // storageDriverList() // ------------------------------------------------------------------------------------------------------------------------- // Throw errors harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_GET, "/?delimiter=%2F&list-type=2", NULL, storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse( 344, "Another bad status", NULL, NULL)); harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_GET, "/?delimiter=%2F&list-type=2", NULL, storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse( 344, "Another bad status with xml", NULL, "" "" "SomeOtherCode" "")); harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_GET, "/?delimiter=%2F&list-type=2", NULL, storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse( 403, "Forbidden", NULL, "" "" "RequestTimeTooSkewed" "The difference between the request time and the current time is too large." "")); harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_GET, "/?delimiter=%2F&list-type=2", NULL, storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse( 403, "Forbidden", NULL, "" "" "RequestTimeTooSkewed" "The difference between the request time and the current time is too large." "")); harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_GET, "/?delimiter=%2F&list-type=2", NULL, storageS3UriStyleHost)); harnessTlsServerReply(testS3ServerResponse( 403, "Forbidden", NULL, "" "" "RequestTimeTooSkewed" "The difference between the request time and the current time is too large." "")); // list a file/path in root harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_GET, "/?delimiter=%2F&list-type=2", NULL, storageS3UriStyleHost)); harnessTlsServerReply( testS3ServerResponse( 200, "OK", NULL, "" "" " " " test1.txt" " " " " " path1/" " " "")); // list a file in root with expression harnessTlsServerExpect( testS3ServerRequest(HTTP_VERB_GET, "/?delimiter=%2F&list-type=2&prefix=test", NULL, storageS3UriStyleHost)); harnessTlsServerReply( testS3ServerResponse( 200, "OK", NULL, "" "" " " " test1.txt" " " "")); // list files with continuation harnessTlsServerExpect( testS3ServerRequest(HTTP_VERB_GET, "/?delimiter=%2F&list-type=2&prefix=path%2Fto%2F", NULL, storageS3UriStyleHost)); harnessTlsServerReply( testS3ServerResponse( 200, "OK", NULL, "" "" " 1ueGcxLPRx1Tr/XYExHnhbYLgveDs2J/wm36Hy4vbOwM=" " " " path/to/test1.txt" " " " " " path/to/test2.txt" " " " " " path/to/path1/" " " "")); harnessTlsServerExpect( testS3ServerRequest( HTTP_VERB_GET, "/?continuation-token=1ueGcxLPRx1Tr%2FXYExHnhbYLgveDs2J%2Fwm36Hy4vbOwM%3D&delimiter=%2F&list-type=2" "&prefix=path%2Fto%2F", NULL, storageS3UriStyleHost)); harnessTlsServerReply( testS3ServerResponse( 200, "OK", NULL, "" "" " " " path/to/test3.txt" " " " " " path/to/path2/" " " "")); // list files with expression harnessTlsServerExpect( testS3ServerRequest(HTTP_VERB_GET, "/?delimiter=%2F&list-type=2&prefix=path%2Fto%2Ftest", NULL, storageS3UriStyleHost)); harnessTlsServerReply( testS3ServerResponse( 200, "OK", NULL, "" "" " " " path/to/test1.txt" " " " " " path/to/test2.txt" " " " " " path/to/test3.txt" " " " " " path/to/test1.path/" " " " " " path/to/test2.path/" " " "")); // storageDriverPathRemove() // ------------------------------------------------------------------------------------------------------------------------- // Switch to path-style URIs harnessTlsServerClose(); harnessTlsServerAccept(); // delete files from root harnessTlsServerExpect( testS3ServerRequest(HTTP_VERB_GET, "/bucket/?list-type=2", NULL, storageS3UriStylePath)); harnessTlsServerReply( testS3ServerResponse( 200, "OK", NULL, "" "" " " " test1.txt" " " " " " path1/xxx.zzz" " " "")); harnessTlsServerExpect( testS3ServerRequest(HTTP_VERB_POST, "/bucket/?delete=", "\n" "true" "test1.txt" "path1/xxx.zzz" "\n", storageS3UriStylePath)); harnessTlsServerReply( testS3ServerResponse( 200, "OK", NULL, "")); // nothing to do in empty subpath harnessTlsServerExpect( testS3ServerRequest(HTTP_VERB_GET, "/bucket/?list-type=2&prefix=path%2F", NULL, storageS3UriStylePath)); harnessTlsServerReply( testS3ServerResponse( 200, "OK", NULL, "" "" "")); // delete with continuation harnessTlsServerExpect( testS3ServerRequest(HTTP_VERB_GET, "/bucket/?list-type=2&prefix=path%2Fto%2F", NULL, storageS3UriStylePath)); harnessTlsServerReply( testS3ServerResponse( 200, "OK", NULL, "" "" " continue" " " " path/to/test3/" " " " " " path/to/test1.txt" " " "")); harnessTlsServerExpect( testS3ServerRequest( HTTP_VERB_GET, "/bucket/?continuation-token=continue&list-type=2&prefix=path%2Fto%2F", NULL, storageS3UriStylePath)); harnessTlsServerReply( testS3ServerResponse( 200, "OK", NULL, "" "" " " " path/to/test3.txt" " " " " " path/to/test2.txt" " " "")); harnessTlsServerExpect( testS3ServerRequest(HTTP_VERB_POST, "/bucket/?delete=", "\n" "true" "path/to/test1.txt" "path/to/test3.txt" "\n", storageS3UriStylePath)); harnessTlsServerReply(testS3ServerResponse(200, "OK", NULL, NULL)); harnessTlsServerExpect( testS3ServerRequest(HTTP_VERB_POST, "/bucket/?delete=", "\n" "true" "path/to/test2.txt" "\n", storageS3UriStylePath)); harnessTlsServerReply(testS3ServerResponse(200, "OK", NULL, NULL)); // delete error harnessTlsServerExpect( testS3ServerRequest(HTTP_VERB_GET, "/bucket/?list-type=2&prefix=path%2F", NULL, storageS3UriStylePath)); harnessTlsServerReply( testS3ServerResponse( 200, "OK", NULL, "" "" " " " path/sample.txt" " " " " " path/sample2.txt" " " "")); harnessTlsServerExpect( testS3ServerRequest(HTTP_VERB_POST, "/bucket/?delete=", "\n" "true" "path/sample.txt" "path/sample2.txt" "\n", storageS3UriStylePath)); harnessTlsServerReply( testS3ServerResponse( 200, "OK", NULL, "" "" "sample2.txtAccessDeniedAccess Denied" "")); // storageDriverRemove() // ------------------------------------------------------------------------------------------------------------------------- // remove file harnessTlsServerExpect(testS3ServerRequest(HTTP_VERB_DELETE, "/bucket/path/to/test.txt", NULL, storageS3UriStylePath)); harnessTlsServerReply(testS3ServerResponse(204, "No Content", NULL, NULL)); harnessTlsServerClose(); exit(0); } } /*********************************************************************************************************************************** Callback and data for storageInfoList() tests ***********************************************************************************************************************************/ unsigned int testStorageInfoListSize = 0; StorageInfo testStorageInfoList[256]; void testStorageInfoListCallback(void *callbackData, const StorageInfo *info) { MEM_CONTEXT_BEGIN((MemContext *)callbackData) { testStorageInfoList[testStorageInfoListSize] = *info; testStorageInfoList[testStorageInfoListSize].name = strDup(info->name); testStorageInfoListSize++; } MEM_CONTEXT_END(); } /*********************************************************************************************************************************** Test Run ***********************************************************************************************************************************/ void testRun(void) { FUNCTION_HARNESS_VOID(); // Test strings const String *path = strNew("/"); const String *bucket = strNew("bucket"); const String *region = strNew("us-east-1"); const String *endPoint = strNew("s3.amazonaws.com"); const String *host = harnessTlsTestHost(); const unsigned int port = harnessTlsTestPort(); const String *accessKey = strNew("AKIAIOSFODNN7EXAMPLE"); const String *secretAccessKey = strNew("wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"); const String *securityToken = strNew( "AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQWLWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/q" "kPpKPi/kMcGdQrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xV" "qr7ZD0u0iPPkUL64lIZbqBAz+scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA=="); // ***************************************************************************************************************************** if (testBegin("storageS3New() and storageRepoGet()")) { // Only required options // ------------------------------------------------------------------------------------------------------------------------- StringList *argList = strLstNew(); strLstAddZ(argList, "--stanza=db"); strLstAddZ(argList, "--repo1-type=s3"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(path))); strLstAdd(argList, strNewFmt("--repo1-s3-bucket=%s", strPtr(bucket))); strLstAdd(argList, strNewFmt("--repo1-s3-region=%s", strPtr(region))); strLstAdd(argList, strNewFmt("--repo1-s3-endpoint=%s", strPtr(endPoint))); setenv("PGBACKREST_REPO1_S3_KEY", strPtr(accessKey), true); setenv("PGBACKREST_REPO1_S3_KEY_SECRET", strPtr(secretAccessKey), true); harnessCfgLoad(cfgCmdArchiveGet, argList); Storage *storage = NULL; TEST_ASSIGN(storage, storageRepoGet(strNew(STORAGE_TYPE_S3), false), "get S3 repo storage"); TEST_RESULT_STR(storage->path, path, " check path"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->bucket, bucket, " check bucket"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->region, region, " check region"); TEST_RESULT_STR( ((StorageS3 *)storage->driver)->bucketEndpoint, strNewFmt("%s.%s", strPtr(bucket), strPtr(endPoint)), " check host"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->accessKey, accessKey, " check access key"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->secretAccessKey, secretAccessKey, " check secret access key"); TEST_RESULT_PTR(((StorageS3 *)storage->driver)->securityToken, NULL, " check security token"); TEST_RESULT_BOOL(storageFeature(storage, storageFeaturePath), false, " check path feature"); TEST_RESULT_BOOL(storageFeature(storage, storageFeatureCompress), false, " check compress feature"); // Add default options // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "--stanza=db"); strLstAddZ(argList, "--repo1-type=s3"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(path))); strLstAdd(argList, strNewFmt("--repo1-s3-bucket=%s", strPtr(bucket))); strLstAdd(argList, strNewFmt("--repo1-s3-region=%s", strPtr(region))); strLstAdd(argList, strNewFmt("--repo1-s3-endpoint=%s", strPtr(endPoint))); strLstAdd(argList, strNewFmt("--repo1-s3-host=%s", strPtr(host))); strLstAddZ(argList, "--repo1-s3-ca-path=" TLS_CERT_FAKE_PATH); strLstAddZ(argList, "--repo1-s3-ca-file=" TLS_CERT_FAKE_PATH "/pgbackrest-test.crt"); setenv("PGBACKREST_REPO1_S3_KEY", strPtr(accessKey), true); setenv("PGBACKREST_REPO1_S3_KEY_SECRET", strPtr(secretAccessKey), true); setenv("PGBACKREST_REPO1_S3_TOKEN", strPtr(securityToken), true); harnessCfgLoad(cfgCmdArchiveGet, argList); TEST_ASSIGN(storage, storageRepoGet(strNew(STORAGE_TYPE_S3), false), "get S3 repo storage with options"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->bucket, bucket, " check bucket"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->region, region, " check region"); TEST_RESULT_STR( ((StorageS3 *)storage->driver)->bucketEndpoint, strNewFmt("%s.%s", strPtr(bucket), strPtr(endPoint)), " check host"); TEST_RESULT_UINT(((StorageS3 *)storage->driver)->port, 443, " check port"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->accessKey, accessKey, " check access key"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->secretAccessKey, secretAccessKey, " check secret access key"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->securityToken, securityToken, " check security token"); // Add a port to the endpoint // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "--stanza=db"); strLstAddZ(argList, "--repo1-type=s3"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(path))); strLstAdd(argList, strNewFmt("--repo1-s3-bucket=%s", strPtr(bucket))); strLstAdd(argList, strNewFmt("--repo1-s3-region=%s", strPtr(region))); strLstAdd(argList, strNewFmt("--repo1-s3-endpoint=%s:999", strPtr(endPoint))); strLstAddZ(argList, "--repo1-s3-ca-path=" TLS_CERT_FAKE_PATH); strLstAddZ(argList, "--repo1-s3-ca-file=" TLS_CERT_FAKE_PATH "/pgbackrest-test.crt"); setenv("PGBACKREST_REPO1_S3_KEY", strPtr(accessKey), true); setenv("PGBACKREST_REPO1_S3_KEY_SECRET", strPtr(secretAccessKey), true); setenv("PGBACKREST_REPO1_S3_TOKEN", strPtr(securityToken), true); harnessCfgLoad(cfgCmdArchiveGet, argList); TEST_ASSIGN(storage, storageRepoGet(strNew(STORAGE_TYPE_S3), false), "get S3 repo storage with options"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->bucket, bucket, " check bucket"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->region, region, " check region"); TEST_RESULT_STR( ((StorageS3 *)storage->driver)->bucketEndpoint, strNewFmt("%s.%s", strPtr(bucket), strPtr(endPoint)), " check host"); TEST_RESULT_UINT(((StorageS3 *)storage->driver)->port, 999, " check port"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->accessKey, accessKey, " check access key"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->secretAccessKey, secretAccessKey, " check secret access key"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->securityToken, securityToken, " check security token"); // Also add port to the host // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "--stanza=db"); strLstAddZ(argList, "--repo1-type=s3"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(path))); strLstAdd(argList, strNewFmt("--repo1-s3-bucket=%s", strPtr(bucket))); strLstAdd(argList, strNewFmt("--repo1-s3-region=%s", strPtr(region))); strLstAdd(argList, strNewFmt("--repo1-s3-endpoint=%s:999", strPtr(endPoint))); strLstAdd(argList, strNewFmt("--repo1-s3-host=%s:7777", strPtr(host))); strLstAddZ(argList, "--repo1-s3-ca-path=" TLS_CERT_FAKE_PATH); strLstAddZ(argList, "--repo1-s3-ca-file=" TLS_CERT_FAKE_PATH "/pgbackrest-test.crt"); setenv("PGBACKREST_REPO1_S3_KEY", strPtr(accessKey), true); setenv("PGBACKREST_REPO1_S3_KEY_SECRET", strPtr(secretAccessKey), true); setenv("PGBACKREST_REPO1_S3_TOKEN", strPtr(securityToken), true); harnessCfgLoad(cfgCmdArchiveGet, argList); TEST_ASSIGN(storage, storageRepoGet(strNew(STORAGE_TYPE_S3), false), "get S3 repo storage with options"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->bucket, bucket, " check bucket"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->region, region, " check region"); TEST_RESULT_STR( ((StorageS3 *)storage->driver)->bucketEndpoint, strNewFmt("%s.%s", strPtr(bucket), strPtr(endPoint)), " check host"); TEST_RESULT_UINT(((StorageS3 *)storage->driver)->port, 7777, " check port"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->accessKey, accessKey, " check access key"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->secretAccessKey, secretAccessKey, " check secret access key"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->securityToken, securityToken, " check security token"); // Use the port option to override both // ------------------------------------------------------------------------------------------------------------------------- argList = strLstNew(); strLstAddZ(argList, "--stanza=db"); strLstAddZ(argList, "--repo1-type=s3"); strLstAdd(argList, strNewFmt("--repo1-path=%s", strPtr(path))); strLstAdd(argList, strNewFmt("--repo1-s3-bucket=%s", strPtr(bucket))); strLstAdd(argList, strNewFmt("--repo1-s3-region=%s", strPtr(region))); strLstAdd(argList, strNewFmt("--repo1-s3-endpoint=%s:999", strPtr(endPoint))); strLstAdd(argList, strNewFmt("--repo1-s3-host=%s:7777", strPtr(host))); strLstAddZ(argList, "--repo1-s3-port=9001"); strLstAddZ(argList, "--repo1-s3-ca-path=" TLS_CERT_FAKE_PATH); strLstAddZ(argList, "--repo1-s3-ca-file=" TLS_CERT_FAKE_PATH "/pgbackrest-test.crt"); setenv("PGBACKREST_REPO1_S3_KEY", strPtr(accessKey), true); setenv("PGBACKREST_REPO1_S3_KEY_SECRET", strPtr(secretAccessKey), true); setenv("PGBACKREST_REPO1_S3_TOKEN", strPtr(securityToken), true); harnessCfgLoad(cfgCmdArchiveGet, argList); TEST_ASSIGN(storage, storageRepoGet(strNew(STORAGE_TYPE_S3), false), "get S3 repo storage with options"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->bucket, bucket, " check bucket"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->region, region, " check region"); TEST_RESULT_STR( ((StorageS3 *)storage->driver)->bucketEndpoint, strNewFmt("%s.%s", strPtr(bucket), strPtr(endPoint)), " check host"); TEST_RESULT_UINT(((StorageS3 *)storage->driver)->port, 9001, " check port"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->accessKey, accessKey, " check access key"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->secretAccessKey, secretAccessKey, " check secret access key"); TEST_RESULT_STR(((StorageS3 *)storage->driver)->securityToken, securityToken, " check security token"); } // ***************************************************************************************************************************** if (testBegin("storageS3DateTime() and storageS3Auth()")) { TEST_RESULT_STR_Z(storageS3DateTime(1491267845), "20170404T010405Z", "static date"); // ------------------------------------------------------------------------------------------------------------------------- StorageS3 *driver = (StorageS3 *)storageDriver( storageS3New( path, true, NULL, bucket, endPoint, storageS3UriStyleHost, region, accessKey, secretAccessKey, NULL, 16, 2, NULL, 0, 0, testContainer(), NULL, NULL)); HttpHeader *header = httpHeaderNew(NULL); HttpQuery *query = httpQueryNew(); httpQueryAdd(query, strNew("list-type"), strNew("2")); TEST_RESULT_VOID( storageS3Auth(driver, strNew("GET"), strNew("/"), query, strNew("20170606T121212Z"), header, HASH_TYPE_SHA256_ZERO_STR), "generate authorization"); TEST_RESULT_STR_Z( httpHeaderGet(header, strNew("authorization")), "AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20170606/us-east-1/s3/aws4_request," "SignedHeaders=host;x-amz-content-sha256;x-amz-date," "Signature=cb03bf1d575c1f8904dabf0e573990375340ab293ef7ad18d049fc1338fd89b3", " check authorization header"); // Test again to be sure cache signing key is used const Buffer *lastSigningKey = driver->signingKey; TEST_RESULT_VOID( storageS3Auth(driver, strNew("GET"), strNew("/"), query, strNew("20170606T121212Z"), header, HASH_TYPE_SHA256_ZERO_STR), "generate authorization"); TEST_RESULT_STR_Z( httpHeaderGet(header, strNew("authorization")), "AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20170606/us-east-1/s3/aws4_request," "SignedHeaders=host;x-amz-content-sha256;x-amz-date," "Signature=cb03bf1d575c1f8904dabf0e573990375340ab293ef7ad18d049fc1338fd89b3", " check authorization header"); TEST_RESULT_BOOL(driver->signingKey == lastSigningKey, true, " check signing key was reused"); // Change the date to generate a new signing key TEST_RESULT_VOID( storageS3Auth(driver, strNew("GET"), strNew("/"), query, strNew("20180814T080808Z"), header, HASH_TYPE_SHA256_ZERO_STR), " generate authorization"); TEST_RESULT_STR_Z( httpHeaderGet(header, strNew("authorization")), "AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20180814/us-east-1/s3/aws4_request," "SignedHeaders=host;x-amz-content-sha256;x-amz-date," "Signature=d0fa9c36426eb94cdbaf287a7872c7a3b6c913f523163d0d7debba0758e36f49", " check authorization header"); TEST_RESULT_BOOL(driver->signingKey != lastSigningKey, true, " check signing key was regenerated"); // Test with security token // ------------------------------------------------------------------------------------------------------------------------- driver = (StorageS3 *)storageDriver( storageS3New( path, true, NULL, bucket, endPoint, storageS3UriStyleHost, region, accessKey, secretAccessKey, securityToken, 16, 2, NULL, 0, 0, testContainer(), NULL, NULL)); TEST_RESULT_VOID( storageS3Auth(driver, strNew("GET"), strNew("/"), query, strNew("20170606T121212Z"), header, HASH_TYPE_SHA256_ZERO_STR), "generate authorization"); TEST_RESULT_STR_Z( httpHeaderGet(header, strNew("authorization")), "AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20170606/us-east-1/s3/aws4_request," "SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token," "Signature=c12565bf5d7e0ef623f76d66e09e5431aebef803f6a25a01c586525f17e474a3", " check authorization header"); } // ***************************************************************************************************************************** if (testBegin("storageS3*(), StorageReadS3, and StorageWriteS3")) { testS3Server(); Storage *s3 = storageS3New( path, true, NULL, bucket, endPoint, storageS3UriStyleHost, region, accessKey, secretAccessKey, NULL, 16, 2, host, port, 1000, testContainer(), NULL, NULL); // Coverage for noop functions // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(storagePathSyncP(s3, strNew("path")), "path sync is a noop"); // storageS3NewRead() and StorageS3FileRead // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_PTR( storageGetP(storageNewReadP(s3, strNew("fi&le.txt"), .ignoreMissing = true)), NULL, "ignore missing file"); TEST_ERROR( storageGetP(storageNewReadP(s3, strNew("file.txt"))), FileMissingError, "unable to open '/file.txt': No such file or directory"); TEST_RESULT_STR_Z(strNewBuf(storageGetP(storageNewReadP(s3, strNew("file.txt")))), "this is a sample file", "get file"); TEST_RESULT_STR_Z(strNewBuf(storageGetP(storageNewReadP(s3, strNew("file0.txt")))), "", "get zero-length file"); StorageRead *read = NULL; TEST_ASSIGN(read, storageNewReadP(s3, strNew("file.txt"), .ignoreMissing = true), "new read file"); TEST_RESULT_BOOL(storageReadIgnoreMissing(read), true, " check ignore missing"); TEST_RESULT_STR_Z(storageReadName(read), "/file.txt", " check name"); TEST_ERROR( ioReadOpen(storageReadIo(read)), ProtocolError, "S3 request failed with 303: Some bad status\n" "*** URI/Query ***:\n" "/file.txt\n" "*** Request Headers ***:\n" "authorization: \n" "content-length: 0\n" "host: bucket." S3_TEST_HOST "\n" "x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\n" "x-amz-date: \n" "*** Response Headers ***:\n" "content-length: 7\n" "*** Response Content ***:\n" "CONTENT") // storageS3NewWrite() and StorageWriteS3 // ------------------------------------------------------------------------------------------------------------------------- // File is written all at once StorageWrite *write = NULL; TEST_ASSIGN(write, storageNewWriteP(s3, strNew("file.txt")), "new write file"); TEST_RESULT_VOID(storagePutP(write, BUFSTRDEF("ABCD")), "put file all at once"); TEST_RESULT_BOOL(storageWriteAtomic(write), true, "write is atomic"); TEST_RESULT_BOOL(storageWriteCreatePath(write), true, "path will be created"); TEST_RESULT_UINT(storageWriteModeFile(write), 0, "file mode is 0"); TEST_RESULT_UINT(storageWriteModePath(write), 0, "path mode is 0"); TEST_RESULT_STR_Z(storageWriteName(write), "/file.txt", "check file name"); TEST_RESULT_BOOL(storageWriteSyncFile(write), true, "file is synced"); TEST_RESULT_BOOL(storageWriteSyncPath(write), true, "path is synced"); TEST_RESULT_VOID(storageWriteS3Close((StorageWriteS3 *)storageWriteDriver(write)), "close file again"); // Zero-length file TEST_ASSIGN(write, storageNewWriteP(s3, strNew("file.txt")), "new write file"); TEST_RESULT_VOID(storagePutP(write, NULL), "write zero-length file"); // File is written in chunks with nothing left over on close TEST_ASSIGN(write, storageNewWriteP(s3, strNew("file.txt")), "new write file"); TEST_RESULT_VOID( storagePutP(write, BUFSTRDEF("12345678901234567890123456789012")), "write file in chunks -- nothing left on close"); // File is written in chunks with something left over on close TEST_ASSIGN(write, storageNewWriteP(s3, strNew("file.txt")), "new write file"); TEST_RESULT_VOID( storagePutP(write, BUFSTRDEF("12345678901234567890")), "write file in chunks -- something left on close"); // storageDriverExists() // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(storageExistsP(s3, strNew("BOGUS")), false, "file does not exist"); TEST_RESULT_BOOL(storageExistsP(s3, strNew("subdir/file1.txt")), true, "file exists"); // Info() // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_BOOL(storageInfoP(s3, strNew("BOGUS"), .ignoreMissing = true).exists, false, "file does not exist"); StorageInfo info; TEST_ASSIGN(info, storageInfoP(s3, strNew("subdir/file1.txt")), "file exists"); TEST_RESULT_BOOL(info.exists, true, " check exists"); TEST_RESULT_UINT(info.type, storageTypeFile, " check type"); TEST_RESULT_UINT(info.size, 9999, " check exists"); TEST_RESULT_UINT(info.timeModified, 1445412480, " check time"); // InfoList() // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR( storageInfoListP(s3, strNew("/"), testStorageInfoListCallback, NULL, .errorOnMissing = true), AssertError, "assertion '!param.errorOnMissing || storageFeature(this, storageFeaturePath)' failed"); TEST_RESULT_VOID( storageInfoListP(s3, strNew("/path/to"), testStorageInfoListCallback, (void *)memContextCurrent()), "info list files"); TEST_RESULT_UINT(testStorageInfoListSize, 2, " file and path returned"); TEST_RESULT_STR_Z(testStorageInfoList[0].name, "test_path", " check name"); TEST_RESULT_UINT(testStorageInfoList[0].size, 0, " check size"); TEST_RESULT_UINT(testStorageInfoList[0].type, storageTypePath, " check type"); TEST_RESULT_STR_Z(testStorageInfoList[1].name, "test_file", " check name"); TEST_RESULT_UINT(testStorageInfoList[1].size, 787, " check size"); TEST_RESULT_UINT(testStorageInfoList[1].timeModified, 1255369830, " check time"); TEST_RESULT_UINT(testStorageInfoList[1].type, storageTypeFile, " check type"); // storageDriverList() // ------------------------------------------------------------------------------------------------------------------------- TEST_ERROR( storageListP(s3, strNew("/"), .errorOnMissing = true), AssertError, "assertion '!param.errorOnMissing || storageFeature(this, storageFeaturePath)' failed"); TEST_ERROR(storageListP(s3, strNew("/")), ProtocolError, "S3 request failed with 344: Another bad status\n" "*** URI/Query ***:\n" "/?delimiter=%2F&list-type=2\n" "*** Request Headers ***:\n" "authorization: \n" "content-length: 0\n" "host: bucket." S3_TEST_HOST "\n" "x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\n" "x-amz-date: "); TEST_ERROR(storageListP(s3, strNew("/")), ProtocolError, "S3 request failed with 344: Another bad status with xml\n" "*** URI/Query ***:\n" "/?delimiter=%2F&list-type=2\n" "*** Request Headers ***:\n" "authorization: \n" "content-length: 0\n" "host: bucket." S3_TEST_HOST "\n" "x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\n" "x-amz-date: \n" "*** Response Headers ***:\n" "content-length: 79\n" "*** Response Content ***:\n" "SomeOtherCode"); TEST_ERROR(storageListP(s3, strNew("/")), ProtocolError, "S3 request failed with 403: Forbidden\n" "*** URI/Query ***:\n" "/?delimiter=%2F&list-type=2\n" "*** Request Headers ***:\n" "authorization: \n" "content-length: 0\n" "host: bucket." S3_TEST_HOST "\n" "x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\n" "x-amz-date: \n" "*** Response Headers ***:\n" "content-length: 179\n" "*** Response Content ***:\n" "RequestTimeTooSkewed" "The difference between the request time and the current time is too large."); TEST_RESULT_STR_Z(strLstJoin(storageListP(s3, strNew("/")), ","), "path1,test1.txt", "list a file/path in root"); TEST_RESULT_STR_Z( strLstJoin(storageListP(s3, strNew("/"), .expression = strNew("^test.*$")), ","), "test1.txt", "list a file in root with expression"); TEST_RESULT_STR_Z( strLstJoin(storageListP(s3, strNew("/path/to")), ","), "path1,test1.txt,test2.txt,path2,test3.txt", "list files with continuation"); TEST_RESULT_STR_Z( strLstJoin(storageListP(s3, strNew("/path/to"), .expression = strNew("^test(1|3)")), ","), "test1.path,test1.txt,test3.txt", "list files with expression"); // storageDriverPathRemove() // ------------------------------------------------------------------------------------------------------------------------- // Switch to path-style URIs s3 = storageS3New( path, true, NULL, bucket, endPoint, storageS3UriStylePath, region, accessKey, secretAccessKey, NULL, 16, 2, host, port, 1000, testContainer(), NULL, NULL); TEST_ERROR( storagePathRemoveP(s3, strNew("/")), AssertError, "assertion 'param.recurse || storageFeature(this, storageFeaturePath)' failed"); TEST_RESULT_VOID(storagePathRemoveP(s3, strNew("/"), .recurse = true), "remove root path"); TEST_RESULT_VOID(storagePathRemoveP(s3, strNew("/path"), .recurse = true), "nothing to do in empty subpath"); TEST_RESULT_VOID(storagePathRemoveP(s3, strNew("/path/to"), .recurse = true), "delete with continuation"); TEST_ERROR( storagePathRemoveP(s3, strNew("/path"), .recurse = true), FileRemoveError, "unable to remove file 'sample2.txt': [AccessDenied] Access Denied"); // storageDriverRemove() // ------------------------------------------------------------------------------------------------------------------------- TEST_RESULT_VOID(storageRemoveP(s3, strNew("/path/to/test.txt")), "remove file"); } FUNCTION_HARNESS_RESULT_VOID(); } pgbackrest-release-2.24/test/src/test.c000066400000000000000000000113201362531507100200750ustar00rootroot00000000000000/*********************************************************************************************************************************** C Test Wrapper This wrapper runs the the C unit tests. ***********************************************************************************************************************************/ /*********************************************************************************************************************************** C files to be tested The files are included directly so the test can see and manipulate variables and functions in the module without the need to extern. If a .c file does not exist for a module then the header file will be included instead. They are included first so they won't see the includes which are required for the test code. ***********************************************************************************************************************************/ {[C_INCLUDE]} /*********************************************************************************************************************************** The test code is included directly so it can freely interact with the included C files ***********************************************************************************************************************************/ #include #include #include #include #include #ifndef NO_ERROR #include "common/debug.h" #include "common/error.h" #endif #include "common/harnessDebug.h" #include "common/harnessTest.intern.h" #ifndef NO_LOG #include "common/harnessLog.h" void harnessLogLevelDefaultSet(LogLevel logLevel); #endif #ifndef NO_MEM_CONTEXT #include "common/memContext.h" #endif {[C_TEST_INCLUDE]} /*********************************************************************************************************************************** Include assert.h here since it is not generally used by tests ***********************************************************************************************************************************/ #include /*********************************************************************************************************************************** main - run the tests ***********************************************************************************************************************************/ int main(int argListSize, const char *argList[]) { // Basic sanity test on input parameters if (argListSize == 0 || argList[0] == NULL) { fprintf(stderr, "at least one argument expected"); fflush(stderr); exit(25); } // Initialize stack trace for the harness FUNCTION_HARNESS_INIT(argList[0]); FUNCTION_HARNESS_BEGIN(); FUNCTION_HARNESS_PARAM(INT, argListSize); FUNCTION_HARNESS_PARAM(CHARPY, argList); FUNCTION_HARNESS_END(); int result = 0; // Set neutral umask for testing umask(0000); // Set timezone if specified {[C_TEST_TZ]} // Ignore SIGPIPE and check for EPIPE errors on write() instead signal(SIGPIPE, SIG_IGN); // Set globals hrnInit( argList[0], // Test exe "{[C_TEST_PROJECT_EXE]}", // Project exe {[C_TEST_CONTAINER]}, // Is this test running in a container? {[C_TEST_IDX]}, // The 0-based index of this test {[C_TEST_SCALE]}, // Scaling factor for performance tests "{[C_TEST_PATH]}", // Path where tests write data "{[C_TEST_DATA_PATH]}", // Path where the harness stores temp files (expect, diff, etc.) "{[C_TEST_REPO_PATH]}"); // Path with a copy of the repository // Set default test log level #ifndef NO_LOG harnessLogLevelDefaultSet({[C_LOG_LEVEL_TEST]}); #endif // Initialize tests // run, selected {[C_TEST_LIST]} #ifndef NO_ERROR TRY_BEGIN() { #endif // Run the tests testRun(); // End test run and make sure all tests completed hrnComplete(); printf("\nTESTS COMPLETED SUCCESSFULLY\n"); fflush(stdout); #ifndef NO_ERROR } CATCH_ANY() { fprintf( stderr, "\nTEST FAILED WITH %s:\n\n" "--------------------------------------------------------------------------------\n" "%s\n" "--------------------------------------------------------------------------------\n" "\nTHROWN AT:\n%s\n", errorName(), errorMessage(), errorStackTrace()); fflush(stderr); result = errorCode(); } #ifndef NO_MEM_CONTEXT FINALLY() { memContextFree(memContextTop()); } #endif TRY_END(); #endif FUNCTION_HARNESS_RESULT(INT, result); } pgbackrest-release-2.24/test/src/valgrind.suppress000066400000000000000000000023671362531507100224010ustar00rootroot00000000000000{ ignore_libcrypto_leaks Memcheck:Leak ... obj:*/libcrypto.so* } # This is an issue on CentOS 7 after calling getaddrinfo() even if freeaddrinfo() is called as well { ignore_free_error_after_getaddrinfo Memcheck:Free fun:free fun:__libc_freeres fun:_vgnU_freeres fun:__run_exit_handlers fun:exit ... } # This only seems to be an issue on Ubuntu 12.04 -- probably due to the old version of Valgrind { ignore_libcrypto_uninit_cond_jump Memcheck:Cond ... obj:*/libcrypto.so* } { ignore_libperl_leaks Memcheck:Leak ... obj:*/libperl.so* } { ignore_libperl_uninit_cond_jump Memcheck:Cond ... obj:*/libperl.so* } # This only seems to be an issue on Ubuntu 12.04 -- probably due to the old version of Valgrind { ignore_libz_uninit_cond_jump Memcheck:Cond fun:inflateReset2 ... obj:*/libz.so* } # This only seems to be an issue on Ubuntu 12.04 -- probably due to the old version of Valgrind { ignore_getgrgid_leak Memcheck:Leak fun:malloc ... fun:getgrgid ... } # This only seems to be an issue on Ubuntu 12.04 -- probably due to the old version of Valgrind { ignore_getpwuid_leak Memcheck:Leak fun:malloc ... fun:getpwuid ... } pgbackrest-release-2.24/test/test.pl000077500000000000000000002047061362531507100175160ustar00rootroot00000000000000#!/usr/bin/perl #################################################################################################################################### # test.pl - pgBackRest Unit Tests #################################################################################################################################### #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess longmess); use English '-no_match_vars'; # Convert die to confess to capture the stack trace $SIG{__DIE__} = sub { Carp::confess @_ }; use File::Basename qw(dirname); use Getopt::Long qw(GetOptions); use Cwd qw(abs_path cwd); use JSON::PP; use Pod::Usage qw(pod2usage); use POSIX qw(ceil strftime); use Time::HiRes qw(gettimeofday); use lib dirname($0) . '/lib'; use lib dirname(dirname($0)) . '/lib'; use lib dirname(dirname($0)) . '/build/lib'; use lib dirname(dirname($0)) . '/doc/lib'; use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRest::Common::String; use pgBackRest::Common::Wait; use pgBackRest::Version; use pgBackRestBuild::Build; use pgBackRestBuild::Build::Common; use pgBackRestBuild::Config::Build; use pgBackRestBuild::Config::BuildDefine; use pgBackRestBuild::Config::BuildParse; use pgBackRestBuild::Error::Build; use pgBackRestBuild::Error::Data; use pgBackRestTest::Common::BuildTest; use pgBackRestTest::Common::CodeCountTest; use pgBackRestTest::Common::ContainerTest; use pgBackRestTest::Common::CoverageTest; use pgBackRestTest::Common::DefineTest; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::HostGroupTest; use pgBackRestTest::Common::JobTest; use pgBackRestTest::Common::ListTest; use pgBackRestTest::Common::RunTest; use pgBackRestTest::Common::Storage; use pgBackRestTest::Common::StoragePosix; use pgBackRestTest::Common::VmTest; #################################################################################################################################### # Usage #################################################################################################################################### =head1 NAME test.pl - pgBackRest Unit Tests =head1 SYNOPSIS test.pl [options] Test Options: --module test module to execute --test execute the specified test in a module --run execute only the specified test run --dry-run show only the tests that would be executed but don't execute them --no-cleanup don't cleanup after the last test is complete - useful for debugging --pg-version version of postgres to test (all, defaults to minimal) --log-force force overwrite of current test log files --build-only compile the test library / packages and run tests only --build-max max processes to use for builds (default 4) --coverage-only only run coverage tests (as a subset of selected tests) --c-only only run C tests --container-only only run tests that must be run in a container --gen-only only run auto-generation --gen-libc generate libc code to embed in the binary --no-gen do not run code generation --code-count generate code counts --smart perform libc/package builds only when source timestamps have changed --no-package do not build packages --dev --smart --no-package --no-optimize --dev-test --no-package --expect --no-package --vm=co7 --db=9.6 --log-force --no-valgrind don't run valgrind on C unit tests (saves time) --no-coverage don't run coverage on C unit tests (saves time) --no-optimize don't do compile optimization for C (saves compile time) --backtrace enable backtrace when available (adds stack trace line numbers -- very slow) --profile generate profile info --no-debug don't generate a debug build --scale scale performance tests --tz test with the specified timezone --debug-test-trace test stack trace for low-level functions (slow, esp w/valgrind, may cause timeouts) Report Options: --coverage-summary generate a coverage summary report for the documentation Configuration Options: --psql-bin path to the psql executables (e.g. /usr/lib/postgresql/9.3/bin/) --test-path path where tests are executed (defaults to ./test) --log-level log level to use for test harness (and Perl tests) (defaults to INFO) --log-level-test log level to use for C tests (defaults to OFF) --log-level-test-file log level to use for file logging in integration tests (defaults to TRACE) --quiet, -q equivalent to --log-level=off VM Options: --vm docker container to build/test (u12, u14, co6, co7) --vm-build build Docker containers --vm-force force a rebuild of Docker containers --vm-out Show VM output (default false) --vm-max max VMs to run in parallel (default 1) General Options: --version display version and exit --help display usage and exit =cut #################################################################################################################################### # Command line parameters #################################################################################################################################### my $strLogLevel = lc(INFO); my $strLogLevelTest = lc(OFF); my $strLogLevelTestFile = lc(TRACE); my $bVmOut = false; my @stryModule; my @stryModuleTest; my @iyModuleTestRun; my $iVmMax = 1; my $iVmId = undef; my $bDryRun = false; my $bNoCleanup = false; my $strPgSqlBin; my $strTestPath; my $bVersion = false; my $bHelp = false; my $bQuiet = false; my $strPgVersion = 'minimal'; my $bLogForce = false; my $strVm; my $strVmHost = VM_HOST_DEFAULT; my $bVmBuild = false; my $bVmForce = false; my $bBuildOnly = false; my $iBuildMax = 4; my $bCoverageOnly = false; my $bCoverageSummary = false; my $bNoCoverage = false; my $bCOnly = false; my $bContainerOnly = false; my $bGenOnly = false; my $bGenLibC = false; my $bNoGen = false; my $bCodeCount = false; my $bSmart = false; my $bNoPackage = false; my $bDev = false; my $bDevTest = false; my $bBackTrace = false; my $bProfile = false; my $bExpect = false; my $bNoValgrind = false; my $bNoOptimize = false; my $bNoDebug = false; my $iScale = 1; my $bDebugTestTrace = false; my $iRetry = 0; my $strTimeZone = undef; my @cmdOptions = @ARGV; GetOptions ('q|quiet' => \$bQuiet, 'version' => \$bVersion, 'help' => \$bHelp, 'pgsql-bin=s' => \$strPgSqlBin, 'test-path=s' => \$strTestPath, 'log-level=s' => \$strLogLevel, 'log-level-test=s' => \$strLogLevelTest, 'log-level-test-file=s' => \$strLogLevelTestFile, 'vm=s' => \$strVm, 'vm-host=s' => \$strVmHost, 'vm-out' => \$bVmOut, 'vm-build' => \$bVmBuild, 'vm-force' => \$bVmForce, 'module=s@' => \@stryModule, 'test=s@' => \@stryModuleTest, 'run=s@' => \@iyModuleTestRun, 'vm-id=s' => \$iVmId, 'vm-max=s' => \$iVmMax, 'dry-run' => \$bDryRun, 'no-cleanup' => \$bNoCleanup, 'pg-version=s' => \$strPgVersion, 'log-force' => \$bLogForce, 'build-only' => \$bBuildOnly, 'build-max=s' => \$iBuildMax, 'no-package' => \$bNoPackage, 'coverage-only' => \$bCoverageOnly, 'coverage-summary' => \$bCoverageSummary, 'no-coverage' => \$bNoCoverage, 'c-only' => \$bCOnly, 'container-only' => \$bContainerOnly, 'gen-only' => \$bGenOnly, 'gen-libc' => \$bGenLibC, 'no-gen' => \$bNoGen, 'code-count' => \$bCodeCount, 'smart' => \$bSmart, 'dev' => \$bDev, 'dev-test' => \$bDevTest, 'backtrace' => \$bBackTrace, 'profile' => \$bProfile, 'expect' => \$bExpect, 'no-valgrind' => \$bNoValgrind, 'no-optimize' => \$bNoOptimize, 'no-debug', => \$bNoDebug, 'scale=s' => \$iScale, 'tz=s', => \$strTimeZone, 'debug-test-trace', => \$bDebugTestTrace, 'retry=s' => \$iRetry) or pod2usage(2); #################################################################################################################################### # Run in eval block to catch errors #################################################################################################################################### eval { # Record the start time my $lStartTime = time(); # Display version and exit if requested if ($bVersion || $bHelp) { syswrite(*STDOUT, PROJECT_NAME . ' ' . PROJECT_VERSION . " Test Engine\n"); if ($bHelp) { syswrite(*STDOUT, "\n"); pod2usage(); } exit 0; } if (@ARGV > 0) { syswrite(*STDOUT, "invalid parameter\n\n"); pod2usage(); } ################################################################################################################################ # Disable code generation on dry-run ################################################################################################################################ if ($bDryRun) { $bNoGen = true; } ################################################################################################################################ # Update options for --coverage-summary ################################################################################################################################ if ($bCoverageSummary) { $bCoverageOnly = true; $bCOnly = true; } ################################################################################################################################ # Update options for --dev and --dev-fast and --dev-test ################################################################################################################################ if ($bDev && $bDevTest) { confess "cannot combine --dev and --dev-test"; } if ($bDev) { $bSmart = true; $bNoPackage = true; $bNoOptimize = true; } if ($bDevTest) { $bNoPackage = true; } ################################################################################################################################ # Update options for --profile ################################################################################################################################ if ($bProfile) { $bNoValgrind = true; $bNoCoverage = true; } ################################################################################################################################ # Update options for --expect ################################################################################################################################ if ($bExpect) { $bNoPackage = true; $strVm = VM_EXPECT; $strPgVersion = '9.6'; $bLogForce = true; } ################################################################################################################################ # Setup ################################################################################################################################ # Set a neutral umask so tests work as expected umask(0); # Set console log level if ($bQuiet) { $strLogLevel = 'off'; } logLevelSet(uc($strLogLevel), uc($strLogLevel), OFF); &log(INFO, "test begin - log level ${strLogLevel}"); if (@stryModuleTest != 0 && @stryModule != 1) { confess "Only one --module can be provided when --test is specified"; } if (@iyModuleTestRun != 0 && @stryModuleTest != 1) { confess "Only one --test can be provided when --run is specified"; } # Set test path if not explicitly set if (!defined($strTestPath)) { $strTestPath = cwd() . '/test'; } my $oStorageTest = new pgBackRestTest::Common::Storage( $strTestPath, new pgBackRestTest::Common::StoragePosix({bFileSync => false, bPathSync => false})); if ($bCoverageOnly) { if (!defined($strVm)) { &log(INFO, "Set --vm=${strVmHost} for coverage testing"); $strVm = $strVmHost; } elsif ($strVm eq VM_ALL) { confess &log(ERROR, "select a single Debian-based VM for coverage testing"); } } # If VM is not defined then set it to all if (!defined($strVm)) { $strVm = VM_ALL; } # Else make sure vm is valid elsif ($strVm ne VM_ALL) { vmValid($strVm); } # Get the base backrest path my $strBackRestBase = dirname(dirname(abs_path($0))); my $oStorageBackRest = new pgBackRestTest::Common::Storage( $strBackRestBase, new pgBackRestTest::Common::StoragePosix({bFileSync => false, bPathSync => false})); ################################################################################################################################ # Build Docker containers ################################################################################################################################ if ($bVmBuild) { containerBuild($oStorageBackRest, $strVm, $bVmForce); exit 0; } ################################################################################################################################ # Load test definition ################################################################################################################################ testDefLoad(${$oStorageBackRest->get("test/define.yaml")}); ################################################################################################################################ # Start VM and run ################################################################################################################################ if (!defined($iVmId)) { # Make a copy of the repo to track which files have been changed. Eventually all builds will be done from this directory. #--------------------------------------------------------------------------------------------------------------------------- my $strRepoCachePath = "${strTestPath}/repo"; my $strRepoCacheManifest = 'repo.manifest'; # Create the repo path -- this should hopefully prevent obvious rsync errors below $oStorageTest->pathCreate("${strTestPath}/repo", {strMode => '0770', bIgnoreExists => true, bCreateParent => true}); # Check if there are any files existing already. If none, that means a full copy is happening and we shouldn't report # modified files my @stryExistingList = $oStorageTest->list($strRepoCachePath, {bIgnoreMissing => true}); # First check if there is an old manifest that has not been cleared. This indicates that an error happened before all new # files could be processed, which means they should be processed again. my @stryModifiedList; my $rstrModifiedList = $oStorageTest->get( $oStorageTest->openRead("${strRepoCachePath}/${strRepoCacheManifest}", {bIgnoreMissing => true})); if (defined($rstrModifiedList)) { @stryModifiedList = split("\n", trim($$rstrModifiedList)); } push( @stryModifiedList, split( "\n", trim( executeTest( "git -C ${strBackRestBase} ls-files -c --others --exclude-standard |" . " rsync -rtW --out-format=\"\%n\" --delete --ignore-missing-args --exclude=repo.manifest" . " ${strBackRestBase}/ --files-from=- ${strRepoCachePath}")))); if (@stryModifiedList > 0) { $oStorageTest->put("${strRepoCachePath}/${strRepoCacheManifest}", join("\n", @stryModifiedList)); if (@stryExistingList > 0) { &log(INFO, "modified since last run: " . join(', ', @stryModifiedList)); } } # Generate code counts #--------------------------------------------------------------------------------------------------------------------------- if ($bCodeCount) { &log(INFO, "classify code files"); codeCountScan($oStorageBackRest, $strBackRestBase); exit 0; } # Auto-generate files unless --no-gen specified #--------------------------------------------------------------------------------------------------------------------------- if (!$bNoGen) { my @stryBuiltAll; &log(INFO, "check code autogenerate"); # Auto-generate version for configure.ac script #----------------------------------------------------------------------------------------------------------------------- if (!$bSmart || grep(/^lib\/pgBackRest\/Version\.pm/, @stryModifiedList)) { my $strConfigureAcOld = ${$oStorageTest->get("${strBackRestBase}/src/configure.ac")}; my $strConfigureAcNew; foreach my $strLine (split("\n", $strConfigureAcOld)) { if ($strLine =~ /^AC_INIT\(/) { $strLine = 'AC_INIT([' . PROJECT_NAME . '], [' . PROJECT_VERSION . '])'; } $strConfigureAcNew .= "${strLine}\n"; } # Save into the src dir my @stryBuilt; my $strBuilt = 'src/configure.ac'; if (buildPutDiffers($oStorageBackRest, "${strBackRestBase}/${strBuilt}", $strConfigureAcNew)) { push(@stryBuilt, $strBuilt); push(@stryBuiltAll, @stryBuilt); push(@stryModifiedList, @stryBuilt); } &log(INFO, " autogenerated version in configure.ac script: " . (@stryBuilt ? join(', ', @stryBuilt) : 'no changes')); } # Auto-generate configure script #----------------------------------------------------------------------------------------------------------------------- if (!$bSmart || grep(/^src\/configure\.ac/, @stryModifiedList)) { my $strConfigure = executeTest("autoconf ${strBackRestBase}/src/configure.ac"); # Trim off any trailing LFs $strConfigure = trim($strConfigure) . "\n"; # Save into the src dir my @stryBuilt; my $strBuilt = 'src/configure'; if (buildPutDiffers($oStorageBackRest, "${strBackRestBase}/${strBuilt}", $strConfigure)) { push(@stryBuilt, $strBuilt); push(@stryBuiltAll, @stryBuilt); push(@stryModifiedList, @stryBuilt); } &log(INFO, " autogenerated configure script: " . (@stryBuilt ? join(', ', @stryBuilt) : 'no changes')); } # Auto-generate C files #----------------------------------------------------------------------------------------------------------------------- if (!$bSmart || grep(/^build\//, @stryModifiedList)) { errorDefineLoad(${$oStorageBackRest->get("build/error.yaml")}); my $rhBuild = { 'config' => { &BLD_DATA => buildConfig(), &BLD_PATH => 'config', }, 'configDefine' => { &BLD_DATA => buildConfigDefine(), &BLD_PATH => 'config', }, 'configParse' => { &BLD_DATA => buildConfigParse(), &BLD_PATH => 'config', }, 'error' => { &BLD_DATA => buildError(), &BLD_PATH => 'common', }, }; my @stryBuilt = buildAll("${strBackRestBase}/src", $rhBuild); &log(INFO, " autogenerated C code: " . (@stryBuilt ? join(', ', @stryBuilt) : 'no changes')); if (@stryBuilt) { push(@stryBuiltAll, @stryBuilt); push(@stryModifiedList, @stryBuilt); } } # Auto-generate Perl code #----------------------------------------------------------------------------------------------------------------------- use lib dirname(dirname($0)) . '/libc/build/lib'; use pgBackRestLibC::Build; if (!$bSmart || grep(/^(build|libc\/build)\//, @stryModifiedList)) { errorDefineLoad(${$oStorageBackRest->get("build/error.yaml")}); my @stryBuilt = buildXsAll("${strBackRestBase}/libc"); &log(INFO, " autogenerated Perl code: " . (@stryBuilt ? join(', ', @stryBuilt) : 'no changes')); if (@stryBuilt) { push(@stryBuiltAll, @stryBuilt); push(@stryModifiedList, @stryBuilt); } } # Auto-generate C Makefile #----------------------------------------------------------------------------------------------------------------------- if (!$bSmart || grep(/^(src|libc)\//, @stryModifiedList)) { my @stryBuilt; my $strBuilt = 'src/Makefile.in'; if (buildPutDiffers( $oStorageBackRest, $strBuilt, buildMakefile( $oStorageBackRest, ${$oStorageBackRest->get("src/Makefile.in")}, {rhOption => {'postgres/pageChecksum.o' => '@COPTIMIZE_PAGE_CHECKSUM@'}}))) { push(@stryBuilt, $strBuilt); push(@stryBuiltAll, @stryBuilt); push(@stryModifiedList, @stryBuilt); } &log(INFO, " autogenerated C Makefile: " . (@stryBuilt ? join(', ', @stryBuilt) : 'no changes')); } # Copy all the files that were auto-generate so they won't show as modified in the next run #----------------------------------------------------------------------------------------------------------------------- foreach my $strBuilt (@stryBuiltAll) { executeTest("cp -p ${strBackRestBase}/${strBuilt} ${strRepoCachePath}/${strBuilt}"); } if ($bGenOnly) { exit 0; } } # Check Perl version against release notes and update version in C code if needed #--------------------------------------------------------------------------------------------------------------------------- my $bVersionDev = true; my $strVersionBase; if (!$bDev) { # Make sure version number matches the latest release #----------------------------------------------------------------------------------------------------------------------- &log(INFO, "check version info"); # Load the doc modules dynamically since they are not supported on all systems require BackRestDoc::Common::Doc; BackRestDoc::Common::Doc->import(); require BackRestDoc::Custom::DocCustomRelease; BackRestDoc::Custom::DocCustomRelease->import(); my $strReleaseFile = dirname(dirname(abs_path($0))) . '/doc/xml/release.xml'; my $oRelease = (new BackRestDoc::Custom::DocCustomRelease(new BackRestDoc::Common::Doc($strReleaseFile)))->releaseLast(); my $strVersion = $oRelease->paramGet('version'); $bVersionDev = false; $strVersionBase = $strVersion; if ($strVersion =~ /dev$/) { $bVersionDev = true; $strVersionBase = substr($strVersion, 0, length($strVersion) - 3); if (PROJECT_VERSION !~ /dev$/ && $oRelease->nodeTest('release-core-list')) { confess "dev release ${strVersion} must match the program version when core changes have been made"; } } elsif ($strVersion ne PROJECT_VERSION) { confess 'unable to find version ' . PROJECT_VERSION . " as the most recent release in ${strReleaseFile}"; } # Update version for the C code based on the current Perl version #----------------------------------------------------------------------------------------------------------------------- my $strCVersionFile = "${strBackRestBase}/src/version.h"; my $strCVersionOld = ${$oStorageTest->get($strCVersionFile)}; my $strCVersionNew; foreach my $strLine (split("\n", $strCVersionOld)) { if ($strLine =~ /^#define PROJECT_VERSION/) { $strLine = '#define PROJECT_VERSION' . (' ' x 45) . '"' . PROJECT_VERSION . '"'; } $strCVersionNew .= "${strLine}\n"; } if ($strCVersionNew ne $strCVersionOld) { $oStorageTest->put($strCVersionFile, $strCVersionNew); } } # Clean up #--------------------------------------------------------------------------------------------------------------------------- my $iTestFail = 0; my $iTestRetry = 0; my $oyProcess = []; my $strCodePath = "${strBackRestBase}/test/.vagrant/code"; if (!$bDryRun || $bVmOut) { &log(INFO, "cleanup old data" . ($strVm ne VM_NONE ? " and containers" : '')); if ($strVm ne VM_NONE) { containerRemove('test-([0-9]+|build)'); } for (my $iVmIdx = 0; $iVmIdx < 8; $iVmIdx++) { push(@{$oyProcess}, undef); } executeTest("rm -rf ${strTestPath}/test-* ${strTestPath}/data-*" . ($bDev ? '' : " ${strTestPath}/gcov-*")); $oStorageTest->pathCreate($strTestPath, {strMode => '0770', bIgnoreExists => true, bCreateParent => true}); # Remove old coverage dirs -- do it this way so the dirs stay open in finder/explorer, etc. executeTest("rm -rf ${strBackRestBase}/test/coverage/c/*"); # Overwrite the C coverage report so it will load but not show old coverage $oStorageTest->pathCreate("${strBackRestBase}/test/coverage", {strMode => '0770', bIgnoreExists => true}); $oStorageBackRest->put( "${strBackRestBase}/test/coverage/c-coverage.html", "
    [ Generating New Report ]
    "); # Copy C code for coverage tests if (vmCoverageC($strVm) && !$bDryRun) { $oStorageTest->pathCreate("${strCodePath}/test", {strMode => '0770', bIgnoreExists => true, bCreateParent => true}); executeTest( "rsync -rt --delete --exclude=test ${strBackRestBase}/src/ ${strCodePath} && " . "rsync -rt --delete ${strBackRestBase}/test/src/module/ ${strCodePath}/test"); } } # Determine which tests to run #--------------------------------------------------------------------------------------------------------------------------- my $oyTestRun; my $bBinRequired = $bBuildOnly; my $bLibCHostRequired = $bBuildOnly; my $bLibCVmRequired = $bBuildOnly; # Only get the test list when they can run if (!$bBuildOnly) { # Get the test list $oyTestRun = testListGet( $strVm, \@stryModule, \@stryModuleTest, \@iyModuleTestRun, $strPgVersion, $bCoverageOnly, $bCOnly, $bContainerOnly); # Determine if the C binary and test library need to be built foreach my $hTest (@{$oyTestRun}) { # Bin build required for all Perl tests or if a C unit test calls Perl if (!$hTest->{&TEST_C} || $hTest->{&TEST_BIN_REQ}) { $bBinRequired = true; } # Host LibC required if a Perl test if (!$hTest->{&TEST_C}) { $bLibCHostRequired = true; } # VM LibC required if Perl and not an integration test if (!$hTest->{&TEST_C} && !$hTest->{&TEST_INTEGRATION}) { $bLibCVmRequired = true; } } } my $strBuildRequired; if ($bBinRequired || $bLibCHostRequired || $bLibCVmRequired) { if ($bBinRequired) { $strBuildRequired = "bin"; } if ($bLibCHostRequired) { $strBuildRequired .= ", libc host"; } if ($bLibCVmRequired) { $strBuildRequired .= ", libc vm"; } } else { $strBuildRequired = "none"; } &log(INFO, "builds required: ${strBuildRequired}"); # Build the binary, library and packages #--------------------------------------------------------------------------------------------------------------------------- if (!$bDryRun) { my $oVm = vmGet(); my $strVagrantPath = "${strBackRestBase}/test/.vagrant"; my $lTimestampLast; my @stryBinSrcPath = ('src', 'libc'); my $strBinPath = "${strVagrantPath}/bin"; my $rhBinBuild = {}; # Build the binary #----------------------------------------------------------------------------------------------------------------------- if ($bBinRequired) { # Find the lastest modified time for dirs that affect the bin build $lTimestampLast = buildLastModTime($oStorageBackRest, $strBackRestBase, \@stryBinSrcPath); # Loop through VMs to do the C bin builds my $bLogDetail = $strLogLevel eq 'detail'; my @stryBuildVm = $strVm eq VM_ALL ? VM_LIST : ($strVm); foreach my $strBuildVM (@stryBuildVm) { my $strBuildPath = "${strBinPath}/${strBuildVM}/src"; my $bRebuild = !$bSmart; $rhBinBuild->{$strBuildVM} = true; # Build configure/compile options and see if they have changed from the previous build my $strCFlags = "-Wfatal-errors -g -fPIC -D_FILE_OFFSET_BITS=64" . (vmWithBackTrace($strBuildVM) && $bBackTrace ? ' -DWITH_BACKTRACE' : '') . ($bDebugTestTrace ? ' -DDEBUG_TEST_TRACE' : ''); my $strLdFlags = vmWithBackTrace($strBuildVM) && $bBackTrace ? '-lbacktrace' : ''; my $strConfigOptions = (vmDebugIntegration($strBuildVM) ? ' --enable-test' : ''); my $strBuildFlags = "CFLAGS=${strCFlags}\nLDFLAGS=${strLdFlags}\nCONFIGURE=${strConfigOptions}"; my $strBuildFlagFile = "${strBinPath}/${strBuildVM}/build.flags"; my $bBuildOptionsDiffer = buildPutDiffers($oStorageBackRest, $strBuildFlagFile, $strBuildFlags); $bBuildOptionsDiffer |= grep(/^src\/configure|src\/Makefile.in|src\/build\.auto\.h$/, @stryModifiedList); # Rebuild if the modification time of the smart file does equal the last changes in source paths my $strBinSmart = "${strBuildPath}/pgbackrest"; if ($bBuildOptionsDiffer || ($bSmart && (!$oStorageBackRest->exists($strBinSmart) || $oStorageBackRest->info($strBinSmart)->mtime < $lTimestampLast))) { &log(INFO, " bin dependencies have changed for ${strBuildVM}, rebuilding..."); $bRebuild = true; } if ($bRebuild) { &log(INFO, " build bin for ${strBuildVM} (${strBuildPath})"); if ($strBuildVM ne VM_NONE) { executeTest( "docker run -itd -h test-build --name=test-build" . " -v ${strBackRestBase}:${strBackRestBase} " . containerRepo() . ":${strBuildVM}-build", {bSuppressStdErr => true}); } foreach my $strBinSrcPath (@stryBinSrcPath) { $oStorageBackRest->pathCreate( "${strBinPath}/${strBuildVM}/${strBinSrcPath}", {bIgnoreExists => true, bCreateParent => true}); } executeTest( "rsync -rt" . (!$bSmart || $bBuildOptionsDiffer ? " --delete-excluded" : '') . " --include=" . join('/*** --include=', @stryBinSrcPath) . '/*** --exclude=*' . " ${strBackRestBase}/ ${strBinPath}/${strBuildVM}"); buildPutDiffers($oStorageBackRest, $strBuildFlagFile, $strBuildFlags); if ($bBuildOptionsDiffer || !$oStorageBackRest->exists("${strBuildPath}/Makefile")) { executeTest( ($strBuildVM ne VM_NONE ? 'docker exec -i test-build ' : '') . "bash -c 'cd ${strBuildPath} && ./configure${strConfigOptions}'", {bShowOutputAsync => $bLogDetail}); } executeTest( ($strBuildVM ne VM_NONE ? 'docker exec -i test-build ' : '') . "make -j ${iBuildMax}" . ($bLogDetail ? '' : ' --silent') . " --directory ${strBuildPath} CFLAGS='${strCFlags}' LDFLAGS='${strLdFlags}'", {bShowOutputAsync => $bLogDetail}); if ($strBuildVM ne VM_NONE) { executeTest("docker rm -f test-build"); } } } } # Build the C Library #----------------------------------------------------------------------------------------------------------------------- if ($bLibCHostRequired || $bLibCVmRequired) { my $strLibCPath = "${strVagrantPath}/bin"; # Loop through VMs to do the C Library builds my $bLogDetail = $strLogLevel eq 'detail'; my @stryBuildVm = (); if ($strVm eq VM_ALL) { @stryBuildVm = $bLibCVmRequired ? VM_LIST : ($strVmHost); } else { @stryBuildVm = $bLibCVmRequired && $strVmHost ne $strVm ? ($strVmHost, $strVm) : ($strVmHost); } foreach my $strBuildVM (@stryBuildVm) { my $strBuildPath = "${strLibCPath}/${strBuildVM}/libc"; my $bContainerExists = $strBuildVM ne $strVmHost && $strBuildVM ne VM_NONE; my $strConfigOptions = (vmDebugIntegration($strBuildVM) ? ' --enable-test' : ''); my $strLibCSmart = "${strBuildPath}/blib/arch/auto/pgBackRest/LibC/LibC.so"; my $bRebuild = !$bSmart; # Rebuild if the modification time of the smart file does equal the last changes in source paths if ($bSmart) { if (!$oStorageBackRest->exists($strLibCSmart) || $oStorageBackRest->info($strLibCSmart)->mtime < $lTimestampLast) { &log(INFO, " libc dependencies have changed for ${strBuildVM}, rebuilding..."); $bRebuild = true; } } if ($bRebuild) { &log(INFO, " build test library for ${strBuildVM} (${strBuildPath})"); if (!$rhBinBuild->{$strBuildVM}) { foreach my $strBinSrcPath (@stryBinSrcPath) { $oStorageBackRest->pathCreate( "${strBinPath}/${strBuildVM}/${strBinSrcPath}", {bIgnoreExists => true, bCreateParent => true}); } executeTest( "rsync -rt" . (!$bSmart ? " --delete-excluded" : '') . " --include=" . join('/*** --include=', @stryBinSrcPath) . '/*** --exclude=*' . " ${strBackRestBase}/ ${strBinPath}/${strBuildVM}"); } # Can't reuse any object files in the libc dir because it does not have proper dependencies executeTest( "rsync -rt --exclude=Makefile --delete ${strBackRestBase}/libc/ ${strLibCPath}/${strBuildVM}/libc"); # It's very expensive to rebuild the Makefile so make sure it has actually changed my $bMakeRebuild = !$oStorageBackRest->exists("${strBuildPath}/Makefile") || ($oStorageBackRest->info("${strBackRestBase}/libc/Makefile.PL")->mtime > $oStorageBackRest->info("${strBuildPath}/Makefile.PL")->mtime); if ($bContainerExists) { executeTest( "docker run -itd -h test-build --name=test-build" . " -v ${strBackRestBase}:${strBackRestBase} " . containerRepo() . ":${strBuildVM}-build", {bSuppressStdErr => true}); } if ($bMakeRebuild) { &log(INFO, " rebuild test library Makefile for ${strBuildVM}"); executeTest( ($bContainerExists ? "docker exec -i test-build bash -c '" : '') . "cd ${strBuildPath} && perl ${strBuildPath}/Makefile.PL INSTALLMAN1DIR=none INSTALLMAN3DIR=none" . ($bContainerExists ? "'" : ''), {bSuppressStdErr => true, bShowOutputAsync => $bLogDetail}); } if (!$oStorageBackRest->exists("${strLibCPath}/${strBuildVM}/src/Makefile")) { executeTest( ($bContainerExists ? 'docker exec -i test-build ' : '') . "bash -c 'cd ${strLibCPath}/${strBuildVM}/src && ./configure${strConfigOptions}'", {bShowOutputAsync => $bLogDetail}); } executeTest( ($bContainerExists ? 'docker exec -i test-build ' : '') . "make -j ${iBuildMax} --silent --directory ${strBuildPath}", {bShowOutputAsync => $bLogDetail}); if ($bContainerExists) { executeTest("docker rm -f test-build"); } } } } # Build the package #----------------------------------------------------------------------------------------------------------------------- if (!$bNoPackage && $strVm ne VM_NONE) { my $strPackagePath = "${strVagrantPath}/package"; my $strPackageSmart = "${strPackagePath}/build.timestamp"; my @stryPackageSrcPath = ('lib'); # Find the lastest modified time for additional dirs that affect the package build foreach my $strPackageSrcPath (@stryPackageSrcPath) { my $hManifest = $oStorageBackRest->manifest($strPackageSrcPath); foreach my $strFile (sort(keys(%{$hManifest}))) { if ($hManifest->{$strFile}{type} eq 'f' && $hManifest->{$strFile}{modification_time} > $lTimestampLast) { $lTimestampLast = $hManifest->{$strFile}{modification_time}; } } } # Rebuild if the modification time of the smart file does not equal the last changes in source paths if ((!$bSmart || !$oStorageBackRest->exists($strPackageSmart) || $oStorageBackRest->info($strPackageSmart)->mtime < $lTimestampLast)) { if ($bSmart) { &log(INFO, 'package dependencies have changed, rebuilding...'); } executeTest("rm -rf ${strPackagePath}"); } # Loop through VMs to do the package builds my @stryBuildVm = $strVm eq VM_ALL ? VM_LIST : ($strVm); $oStorageBackRest->pathCreate($strPackagePath, {bIgnoreExists => true, bCreateParent => true}); foreach my $strBuildVM (@stryBuildVm) { my $strBuildPath = "${strPackagePath}/${strBuildVM}/src"; if (!$oStorageBackRest->pathExists($strBuildPath) && $oVm->{$strBuildVM}{&VM_OS_BASE} eq VM_OS_BASE_DEBIAN) { &log(INFO, "build package for ${strBuildVM} (${strBuildPath})"); if ($strVm ne VM_NONE) { executeTest( "docker run -itd -h test-build --name=test-build" . " -v ${strBackRestBase}:${strBackRestBase} " . containerRepo() . ":${strBuildVM}-build", {bSuppressStdErr => true}); } $oStorageBackRest->pathCreate($strBuildPath, {bIgnoreExists => true, bCreateParent => true}); executeTest("rsync -r --exclude .vagrant --exclude .git ${strBackRestBase}/ ${strBuildPath}/"); executeTest( ($strVm ne VM_NONE ? "docker exec -i test-build " : '') . "bash -c 'cp -r /root/package-src/debian ${strBuildPath} && sudo chown -R " . TEST_USER . " ${strBuildPath}'"); # Patch files in debian package builds # # Use these commands to create a new patch (may need to modify first line): # BRDIR=/backrest;BRVM=u18;BRPATCHFILE=${BRDIR?}/test/patch/debian-package.patch # DBDIR=${BRDIR?}/test/.vagrant/package/${BRVM}/src/debian # diff -Naur ${DBDIR?}.old ${DBDIR}.new > ${BRPATCHFILE?} my $strDebianPackagePatch = "${strBackRestBase}/test/patch/debian-package.patch"; if ($oStorageBackRest->exists($strDebianPackagePatch)) { executeTest("cp -r ${strBuildPath}/debian ${strBuildPath}/debian.old"); executeTest("patch -d ${strBuildPath}/debian < ${strDebianPackagePatch}"); executeTest("cp -r ${strBuildPath}/debian ${strBuildPath}/debian.new"); } # If dev build then disable static release date used for reproducibility if ($bVersionDev) { my $strRules = ${$oStorageBackRest->get("${strBuildPath}/debian/rules")}; $strRules =~ s/\-\-var\=release-date-static\=y/\-\-var\=release-date-static\=n/g; $strRules =~ s/\-\-out\=html \-\-cache\-only/\-\-out\=html \-\-no\-exe/g; $oStorageBackRest->put("${strBuildPath}/debian/rules", $strRules); } # Remove patches that should be applied to core code $oStorageBackRest->remove("${strBuildPath}/debian/patches", {bRecurse => true, bIgnoreExists => true}); # Update changelog to add experimental version $oStorageBackRest->put("${strBuildPath}/debian/changelog", "pgbackrest (${strVersionBase}-0." . ($bVersionDev ? 'D' : 'P') . strftime("%Y%m%d%H%M%S", gmtime) . ") experimental; urgency=medium\n" . "\n" . ' * Automated experimental ' . ($bVersionDev ? 'development' : 'production') . " build.\n" . "\n" . ' -- David Steele ' . strftime("%a, %e %b %Y %H:%M:%S %z", gmtime) . "\n\n" . ${$oStorageBackRest->get("${strBuildPath}/debian/changelog")}); executeTest( ($strVm ne VM_NONE ? "docker exec -i test-build " : '') . "bash -c 'cd ${strBuildPath} && debuild -i -us -uc -b'"); executeTest( ($strVm ne VM_NONE ? "docker exec -i test-build " : '') . "bash -c 'rm -f ${strPackagePath}/${strBuildVM}/*.build ${strPackagePath}/${strBuildVM}/*.changes" . " ${strPackagePath}/${strBuildVM}/pgbackrest-doc*'"); if ($strVm ne VM_NONE) { executeTest("docker rm -f test-build"); } } if (!$oStorageBackRest->pathExists($strBuildPath) && $oVm->{$strBuildVM}{&VM_OS_BASE} eq VM_OS_BASE_RHEL) { &log(INFO, "build package for ${strBuildVM} (${strBuildPath})"); # Create build container if ($strVm ne VM_NONE) { executeTest( "docker run -itd -h test-build --name=test-build" . " -v ${strBackRestBase}:${strBackRestBase} " . containerRepo() . ":${strBuildVM}-build", {bSuppressStdErr => true}); } # Create build directories $oStorageBackRest->pathCreate($strBuildPath, {bIgnoreExists => true, bCreateParent => true}); $oStorageBackRest->pathCreate("${strBuildPath}/SOURCES", {bIgnoreExists => true, bCreateParent => true}); $oStorageBackRest->pathCreate("${strBuildPath}/SPECS", {bIgnoreExists => true, bCreateParent => true}); $oStorageBackRest->pathCreate("${strBuildPath}/RPMS", {bIgnoreExists => true, bCreateParent => true}); $oStorageBackRest->pathCreate("${strBuildPath}/BUILD", {bIgnoreExists => true, bCreateParent => true}); # Install PostreSQL 11 development for package builds executeTest( ($strVm ne VM_NONE ? "docker exec -i test-build " : '') . "bash -c 'yum install -y postgresql11-devel 2>&1'"); # Copy source files executeTest( "tar --transform='s_^_pgbackrest-release-${strVersionBase}/_'" . " -czf ${strBuildPath}/SOURCES/${strVersionBase}.tar.gz -C ${strBackRestBase}" . " lib libc src LICENSE"); # Copy package files executeTest( ($strVm ne VM_NONE ? "docker exec -i test-build " : '') . "bash -c '" . "ln -s ${strBuildPath} /root/rpmbuild && " . "cp /root/package-src/pgbackrest.spec ${strBuildPath}/SPECS && " . "cp /root/package-src/*.patch ${strBuildPath}/SOURCES && " . "sudo chown -R " . TEST_USER . " ${strBuildPath}'"); # Patch files in RHEL package builds # # Use these commands to create a new patch (may need to modify first line): # BRDIR=/backrest;BRVM=co7;BRPATCHFILE=${BRDIR?}/test/patch/rhel-package.patch # PKDIR=${BRDIR?}/test/.vagrant/package/${BRVM}/src/SPECS # diff -Naur ${PKDIR?}.old ${PKDIR}.new > ${BRPATCHFILE?} my $strPackagePatch = "${strBackRestBase}/test/patch/rhel-package.patch"; if ($oStorageBackRest->exists($strPackagePatch)) { executeTest("cp -r ${strBuildPath}/SPECS ${strBuildPath}/SPECS.old"); executeTest("patch -d ${strBuildPath}/SPECS < ${strPackagePatch}"); executeTest("cp -r ${strBuildPath}/SPECS ${strBuildPath}/SPECS.new"); } # Update version number to match current version my $strSpec = ${$oStorageBackRest->get("${strBuildPath}/SPECS/pgbackrest.spec")}; $strSpec =~ s/^Version\:.*$/Version\:\t${strVersionBase}/gm; $oStorageBackRest->put("${strBuildPath}/SPECS/pgbackrest.spec", $strSpec); # Build package executeTest( ($strVm ne VM_NONE ? "docker exec -i test-build " : '') . "rpmbuild --define 'pgmajorversion %{nil}' -v -bb --clean root/rpmbuild/SPECS/pgbackrest.spec", {bSuppressStdErr => true}); # Remove build container if ($strVm ne VM_NONE) { executeTest("docker rm -f test-build"); } } } # Write files to indicate the last time a build was successful if (!$bNoPackage) { $oStorageBackRest->put($strPackageSmart); utime($lTimestampLast, $lTimestampLast, $strPackageSmart) or confess "unable to set time for ${strPackageSmart}" . (defined($!) ? ":$!" : ''); } } # Exit if only testing builds exit 0 if $bBuildOnly; } # Remove repo.manifest now that all processing that depends on modified files has been completed #--------------------------------------------------------------------------------------------------------------------------- $oStorageTest->remove("${strRepoCachePath}/${strRepoCacheManifest}"); # Perform static source code analysis #--------------------------------------------------------------------------------------------------------------------------- if (!$bDryRun) { logFileSet($oStorageTest, cwd() . "/test"); } # Run the tests #--------------------------------------------------------------------------------------------------------------------------- if (@{$oyTestRun} == 0) { confess &log(ERROR, 'no tests were selected'); } &log(INFO, @{$oyTestRun} . ' test' . (@{$oyTestRun} > 1 ? 's': '') . " selected\n"); # Don't allow --no-cleanup when more than one test will run. How would the prior results be preserved? if ($bNoCleanup && @{$oyTestRun} > 1) { confess &log(ERROR, '--no-cleanup is not valid when more than one test will run') } # Disable file logging for integration tests when there is more than one test since it will be overwritten if (@{$oyTestRun} > 1) { $strLogLevelTestFile = lc(OFF); } # Don't allow --no-cleanup when more than one test will run. How would the prior results be preserved? # Only use one vm for dry run so results are printed in order if ($bDryRun) { $iVmMax = 1; } my $iTestIdx = 0; my $iVmTotal; my $iTestMax = @{$oyTestRun}; my $bShowOutputAsync = $bVmOut && (@{$oyTestRun} == 1 || $iVmMax == 1) && ! $bDryRun ? true : false; do { do { $iVmTotal = 0; for (my $iVmIdx = 0; $iVmIdx < $iVmMax; $iVmIdx++) { if (defined($$oyProcess[$iVmIdx])) { my ($bDone, $bFail) = $$oyProcess[$iVmIdx]->end(); if ($bDone) { if ($bFail) { if ($oyProcess->[$iVmIdx]->run()) { $iTestRetry++; $iVmTotal++; } else { $iTestFail++; $$oyProcess[$iVmIdx] = undef; } } else { $$oyProcess[$iVmIdx] = undef; } } else { $iVmTotal++; } } } # Only wait when all VMs are running or all tests have been assigned. Otherwise, there is something to do. if ($iVmTotal == $iVmMax || $iTestIdx == @{$oyTestRun}) { waitHiRes(.05); } } while ($iVmTotal == $iVmMax); for (my $iVmIdx = 0; $iVmIdx < $iVmMax; $iVmIdx++) { if (!defined($$oyProcess[$iVmIdx]) && $iTestIdx < @{$oyTestRun}) { my $oJob = new pgBackRestTest::Common::JobTest( $oStorageTest, $strBackRestBase, $strTestPath, $$oyTestRun[$iTestIdx], $bDryRun, $strVmHost, $bVmOut, $iVmIdx, $iVmMax, $iTestIdx, $iTestMax, $strLogLevel, $strLogLevelTest, $strLogLevelTestFile, $bLogForce, $bShowOutputAsync, $bNoCleanup, $iRetry, !$bNoValgrind, !$bNoCoverage, $bCoverageSummary, !$bNoOptimize, $bBackTrace, $bProfile, $iScale, $strTimeZone, !$bNoDebug, $bDebugTestTrace, $iBuildMax / $iVmMax < 1 ? 1 : int($iBuildMax / $iVmMax)); $iTestIdx++; if ($oJob->run()) { $$oyProcess[$iVmIdx] = $oJob; } $iVmTotal++; } } } while ($iVmTotal > 0); # Write out coverage info and test coverage #--------------------------------------------------------------------------------------------------------------------------- my $iUncoveredCodeModuleTotal = 0; if (vmCoverageC($strVm) && !$bNoCoverage && !$bDryRun && $iTestFail == 0) { # Determine which modules were covered (only check coverage if all tests were successful) #----------------------------------------------------------------------------------------------------------------------- my $hModuleTest; # Everything that was run # Build a hash of all modules, tests, and runs that were executed foreach my $hTestRun (@{$oyTestRun}) { # Get coverage for the module my $strModule = $hTestRun->{&TEST_MODULE}; my $hModule = testDefModule($strModule); # Get coverage for the test my $strTest = $hTestRun->{&TEST_NAME}; my $hTest = testDefModuleTest($strModule, $strTest); # If no tests are listed it means all of them were run if (@{$hTestRun->{&TEST_RUN}} == 0) { $hModuleTest->{$strModule}{$strTest} = true; } } # Now compare against code modules that should have full coverage my $hCoverageList = testDefCoverageList(); my $hCoverageType = testDefCoverageType(); my $hCoverageActual; foreach my $strCodeModule (sort(keys(%{$hCoverageList}))) { if (@{$hCoverageList->{$strCodeModule}} > 0) { my $iCoverageTotal = 0; foreach my $hTest (@{$hCoverageList->{$strCodeModule}}) { if (!defined($hModuleTest->{$hTest->{strModule}}{$hTest->{strTest}})) { next; } $iCoverageTotal++; } if (@{$hCoverageList->{$strCodeModule}} == $iCoverageTotal) { $hCoverageActual->{testRunName($strCodeModule, false)} = $hCoverageType->{$strCodeModule}; } } } if (keys(%{$hCoverageActual}) == 0) { &log(INFO, 'no code modules had all tests run required for coverage'); } # Generate C coverage report #--------------------------------------------------------------------------------------------------------------------------- if (vmCoverageC($strVm)) { &log(INFO, 'writing C coverage report'); my $strLCovFile = "${strBackRestBase}/test/.vagrant/code/all.lcov"; if ($oStorageBackRest->exists($strLCovFile)) { executeTest( "genhtml ${strLCovFile} --config-file=${strBackRestBase}/test/.vagrant/code/lcov.conf" . " --prefix=${strBackRestBase}/test/.vagrant/code" . " --output-directory=${strBackRestBase}/test/coverage/c"); foreach my $strCodeModule (sort(keys(%{$hCoverageActual}))) { # If the first char of the module is upper case then it's a Perl module if (substr($strCodeModule, 0, 1) eq uc(substr($strCodeModule, 0, 1))) { next; } my $strCoverageFile = $strCodeModule; $strCoverageFile =~ s/^module/test/mg; $strCoverageFile = "${strBackRestBase}/test/.vagrant/code/${strCoverageFile}.lcov"; my $strCoverage = $oStorageBackRest->get( $oStorageBackRest->openRead($strCoverageFile, {bIgnoreMissing => true})); if (defined($strCoverage) && defined($$strCoverage)) { my $iTotalLines = (split(':', ($$strCoverage =~ m/^LF\:.*$/mg)[0]))[1] + 0; my $iCoveredLines = (split(':', ($$strCoverage =~ m/^LH\:.*$/mg)[0]))[1] + 0; my $iTotalBranches = 0; my $iCoveredBranches = 0; if ($$strCoverage =~ /^BRF\:/mg && $$strCoverage =~ /^BRH\:/mg) { # If this isn't here the statements below fail -- huh? my @match = $$strCoverage =~ m/^BRF\:.*$/mg; $iTotalBranches = (split(':', ($$strCoverage =~ m/^BRF\:.*$/mg)[0]))[1] + 0; $iCoveredBranches = (split(':', ($$strCoverage =~ m/^BRH\:.*$/mg)[0]))[1] + 0; } # Generate detail if there is missing coverage my $strDetail = undef; if ($iCoveredLines != $iTotalLines) { $strDetail .= "$iCoveredLines/$iTotalLines lines"; } if ($iTotalBranches != $iCoveredBranches) { $strDetail .= (defined($strDetail) ? ', ' : '') . "$iCoveredBranches/$iTotalBranches branches"; } if (defined($strDetail)) { &log(ERROR, "c module ${strCodeModule} is not fully covered ($strDetail)"); $iUncoveredCodeModuleTotal++; } } } $oStorageBackRest->remove("${strBackRestBase}/test/.vagrant/code/all.lcov", {bIgnoreMissing => true}); coverageGenerate( $oStorageBackRest, "${strBackRestBase}/test/.vagrant/code", "${strBackRestBase}/test/coverage/c-coverage.html"); if ($bCoverageSummary) { &log(INFO, 'writing C coverage summary report'); coverageDocSummaryGenerate( $oStorageBackRest, "${strBackRestBase}/test/.vagrant/code", "${strBackRestBase}/doc/xml/auto/metric-coverage-report.auto.xml"); } } else { executeTest("rm -rf ${strBackRestBase}/test/coverage/c"); } } } # Print test info and exit #--------------------------------------------------------------------------------------------------------------------------- &log(INFO, ($bDryRun ? 'DRY RUN COMPLETED' : 'TESTS COMPLETED') . ($iTestFail == 0 ? ' SUCCESSFULLY' . ($iUncoveredCodeModuleTotal == 0 ? '' : " WITH ${iUncoveredCodeModuleTotal} MODULE(S) MISSING COVERAGE") : " WITH ${iTestFail} FAILURE(S)") . ($iTestRetry == 0 ? '' : ", ${iTestRetry} RETRY(IES)") . ' (' . (time() - $lStartTime) . 's)'); exit 1 if ($iTestFail > 0 || ($iUncoveredCodeModuleTotal > 0 && !$bCoverageSummary)); exit 0; } ################################################################################################################################ # Runs tests ################################################################################################################################ push( @INC, "${strBackRestBase}/test/.vagrant/bin/" . ((testDefModuleTest($stryModule[0], $stryModuleTest[0]))->{&TESTDEF_CONTAINER} ? $strVm : $strVmHost) . "/libc/blib/arch"); buildLoadLibC(); my $iRun = 0; # Create host group for containers my $oHostGroup = hostGroupGet(); # Set timezone if (defined($strTimeZone)) { $ENV{TZ} = $strTimeZone; } # Run the test testRun($stryModule[0], $stryModuleTest[0])->process( $strVm, $iVmId, # Vm info $strBackRestBase, # Base backrest directory $strTestPath, # Path where the tests will run '/usr/bin/' . PROJECT_EXE, # Path to the backrest executable "${strBackRestBase}/bin/" . PROJECT_EXE, # Path to the backrest Perl helper $strPgVersion ne 'minimal' ? $strPgSqlBin: undef, # Pg bin path $strPgVersion ne 'minimal' ? $strPgVersion: undef, # Pg version $stryModule[0], $stryModuleTest[0], \@iyModuleTestRun, # Module info $bVmOut, $bDryRun, $bNoCleanup, $bLogForce, # Test options $strLogLevelTestFile, # Log options TEST_USER, TEST_GROUP); # User/group info if (!$bNoCleanup) { if ($oHostGroup->removeAll() > 0) { executeTest("rm -rf ${strTestPath}"); } } if (!$bDryRun && !$bVmOut) { &log(INFO, 'TESTS COMPLETED SUCCESSFULLY (DESPITE ANY ERROR MESSAGES YOU SAW)'); } # Exit with success exit 0; } #################################################################################################################################### # Check for errors #################################################################################################################################### or do { # If a backrest exception then return the code if (isException(\$EVAL_ERROR)) { if ($EVAL_ERROR->code() != ERROR_OPTION_INVALID_VALUE) { syswrite(*STDOUT, $EVAL_ERROR->message() . "\n" . $EVAL_ERROR->trace()); } exit $EVAL_ERROR->code(); } # Else output the unhandled error syswrite(*STDOUT, $EVAL_ERROR); exit ERROR_UNHANDLED; }; # It shouldn't be possible to get here &log(ASSERT, 'execution reached invalid location in ' . __FILE__ . ', line ' . __LINE__); exit ERROR_ASSERT; pgbackrest-release-2.24/test/travis.pl000077500000000000000000000211061362531507100200360ustar00rootroot00000000000000#!/usr/bin/perl #################################################################################################################################### # Travis CI Test Wrapper #################################################################################################################################### #################################################################################################################################### # Perl includes #################################################################################################################################### use strict; use warnings FATAL => qw(all); use Carp qw(confess longmess); use English '-no_match_vars'; # Convert die to confess to capture the stack trace $SIG{__DIE__} = sub { Carp::confess @_ }; use File::Basename qw(dirname); use Getopt::Long qw(GetOptions); use Cwd qw(abs_path); use Pod::Usage qw(pod2usage); use lib dirname($0) . '/lib'; use lib dirname(dirname($0)) . '/lib'; use pgBackRest::Common::Exception; use pgBackRest::Common::Log; use pgBackRestTest::Common::ContainerTest; use pgBackRestTest::Common::ExecuteTest; use pgBackRestTest::Common::VmTest; #################################################################################################################################### # Usage #################################################################################################################################### =head1 NAME travis.pl - Travis CI Test Wrapper =head1 SYNOPSIS test.pl [options] doc|test VM Options: --vm docker container to build/test --param parameters to pass to test.pl --sudo test requires sudo General Options: --help display usage and exit =cut #################################################################################################################################### # Command line parameters #################################################################################################################################### my $strVm; my @stryParam; my $bSudo; my $bHelp; GetOptions ('help' => \$bHelp, 'param=s@' => \@stryParam, 'sudo' => \$bSudo, 'vm=s' => \$strVm) or pod2usage(2); #################################################################################################################################### # Begin/end functions to track timing #################################################################################################################################### my $lProcessBegin; my $strProcessTitle; sub processBegin { $strProcessTitle = shift; &log(INFO, "Begin ${strProcessTitle}"); $lProcessBegin = time(); } sub processExec { my $strCommand = shift; my $rhParam = shift; &log(INFO, " Exec ${strCommand}"); executeTest($strCommand, $rhParam); } sub processEnd { &log(INFO, " End ${strProcessTitle} (" . (time() - $lProcessBegin) . 's)'); } #################################################################################################################################### # Run in eval block to catch errors #################################################################################################################################### eval { # Display version and exit if requested if ($bHelp) { syswrite(*STDOUT, "Travis CI Test Wrapper\n"); syswrite(*STDOUT, "\n"); pod2usage(); exit 0; } if (@ARGV != 1) { syswrite(*STDOUT, "test|doc required\n\n"); pod2usage(); } # VM must be defined if (!defined($strVm)) { confess &log(ERROR, '--vm is required'); } ################################################################################################################################ # Paths ################################################################################################################################ my $strBackRestBase = dirname(dirname(abs_path($0))); my $strReleaseExe = "${strBackRestBase}/doc/release.pl"; my $strTestExe = "${strBackRestBase}/test/test.pl"; logLevelSet(INFO, INFO, OFF); processBegin('install common packages'); processExec('sudo apt-get -qq update', {bSuppressStdErr => true, bSuppressError => true}); processExec( 'sudo apt-get install -y rsync zlib1g-dev libssl-dev libxml2-dev libpq-dev libxml-checker-perl libyaml-libyaml-perl' . ' pkg-config', {bSuppressStdErr => true}); processEnd(); processBegin('mount tmpfs'); processExec('mkdir -p -m 770 test'); processExec('sudo mount -t tmpfs -o size=2048m tmpfs test'); processExec('df -h test', {bShowOutputAsync => true}); processEnd(); ################################################################################################################################ # Build documentation ################################################################################################################################ if ($ARGV[0] eq 'doc') { if ($strVm eq VM_CO7) { processBegin('LaTeX install'); processExec( 'sudo apt-get install -y --no-install-recommends texlive-latex-base texlive-latex-extra texlive-fonts-recommended', {bSuppressStdErr => true}); processExec('sudo apt-get install -y texlive-font-utils latex-xcolor', {bSuppressStdErr => true}); } processBegin('remove sudo'); processExec('sudo rm /etc/sudoers.d/travis'); processEnd(); processBegin('release documentation'); processExec("${strReleaseExe} --build --no-gen --vm=${strVm}", {bShowOutputAsync => true, bOutLogOnError => false}); processEnd(); } ################################################################################################################################ # Run test ################################################################################################################################ elsif ($ARGV[0] eq 'test') { # Build list of packages that need to be installed my $strPackage = "libperl-dev"; if (vmCoverageC($strVm)) { $strPackage .= " lcov"; } if ($strVm eq VM_NONE) { $strPackage .= " valgrind"; } else { $strPackage .= " libdbd-pg-perl"; } processBegin('/tmp/pgbackrest owned by root so tests cannot use it'); processExec('sudo mkdir -p /tmp/pgbackrest && sudo chown root:root /tmp/pgbackrest && sudo chmod 700 /tmp/pgbackrest'); processEnd(); processBegin('install test packages'); processExec("sudo apt-get install -y ${strPackage}", {bSuppressStdErr => true}); processEnd(); if (!$bSudo) { processBegin('remove sudo'); processExec('sudo rm /etc/sudoers.d/travis'); processEnd(); } # Build the container if ($strVm ne VM_NONE) { processBegin("${strVm} build"); processExec("${strTestExe} --vm-build --vm=${strVm}", {bShowOutputAsync => true, bOutLogOnError => false}); processEnd(); } processBegin(($strVm eq VM_NONE ? "no container" : $strVm) . ' test'); processExec( "${strTestExe} --no-gen --vm-host=none --vm-max=2 --vm=${strVm}" . (@stryParam != 0 ? " --" . join(" --", @stryParam) : ''), {bShowOutputAsync => true, bOutLogOnError => false}); processEnd(); } ################################################################################################################################ # Catch error ################################################################################################################################ else { confess &log(ERROR, 'invalid command ' . $ARGV[0]); } &log(INFO, "CI Complete"); # Exit with success exit 0; } #################################################################################################################################### # Check for errors #################################################################################################################################### or do { # If a backrest exception then return the code exit $EVAL_ERROR->code() if (isException(\$EVAL_ERROR)); # Else output the unhandled error print $EVAL_ERROR; exit ERROR_UNHANDLED; }; # It shouldn't be possible to get here &log(ASSERT, 'execution reached invalid location in ' . __FILE__ . ', line ' . __LINE__); exit ERROR_ASSERT;